ZGlmZiAtLWdpdCBhLy5jdnNpZ25vcmUgYi8uY3ZzaWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyZjI0NGYKLS0tIC9kZXYvbnVsbAorKysgYi8uY3ZzaWdub3JlCkBAIC0wLDAgKzEsNSBAQAorLmNsYXNzcGF0aAorLnByb2plY3QKKyoucHJvcGVydGllcworYnVpbGQKK2JpbgpkaWZmIC0tZ2l0IGEvQ0hBTkdFTE9HLnR4dCBiL0NIQU5HRUxPRy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc4MDYyMgotLS0gL2Rldi9udWxsCisrKyBiL0NIQU5HRUxPRy50eHQKQEAgLTAsMCArMSwzNjMgQEAKK0NoYW5nZWxvZyBmb3IgIkFwYWNoZSB4bWwtc2VjdXJpdHkiIDxodHRwOi8vc2FudHVhcmlvLmFwYWNoZS5vcmcvPgorTmV3IGluIHYxLjQuNC1TTkFQU0hPVAorICAgIEZpeGVkIEJ1ZyA0OTQ4MzogS2V5UmVzb2x2ZXIucmVnaXN0ZXJBdFN0YXJ0KCkgbGVhZHMgdG8gQ2xhc3NDYXN0RXhjZXB0aW9uLiBUaGFua3MgdG8gQ2xlbWVudCBQZWxsZXJpbi4KKyAgICBGaXhlZCBCdWcgNDk0NTg6IFN0b3JhZ2VSZXNvbHZlciBhbHdheXMgZXhoYXVzdGVkIGFmdGVyIGZpcnN0IHVzZS4gVGhhbmtzIHRvIENsZW1lbnQgUGVsbGVyaW4uCisgICAgRml4ZWQgQnVnIDQ5NDU2OiBTdG9yYWdlUmVzb2x2ZXIubmV4dCgpIGdpdmVzIENsYXNzQ2FzdEV4Y2VwdGlvbi4gVGhhbmtzIHRvIENsZW1lbnQgUGVsbGVyaW4uCisgICAgRml4ZWQgQnVnIDQ5NDUwOiBLZXlTdG9yZVJlc29sdmVyIGFsd2F5cyBleGhhdXN0ZWQgYWZ0ZXIgZmlyc3QgdXNlLiBUaGFua3MgdG8gQ2xlbWVudCBQZWxsZXJpbi4KKyAgICBGaXhlZCBCdWcgNDk0NDc6IEtleVN0b3JlUmVzb2x2ZXIgaXRlcmF0b3IgcmV0dXJucyBudWxsIGZvciBzeW1tZXRyaWMga2V5cy4gVGhhbmtzIHRvIENsZW1lbnQgUGVsbGVyaW4uCisgICAgRml4ZWQgQnVnIDQ4MzY4OiBEaWdlc3QgVmFsdWUgb2YgUmVmZXJlbmNlcyBpbnNpZGUgTWFuaWZlc3QgLSBjYWxjdWxhdGlvbiBvcmRlciBwcm9ibGVtCisgICAgRml4ZWQgQnVnIDQ3Nzc5OiBDb25jdXJyZW50TW9kaWZpY2F0aW9uRXhjZXB0aW9uIGluIFhNTFV0aWxzLiAgCisgICAgRml4ZWQgQnVnIDQ3NzYxOiB4bWxuczp4bWwgbmFtZXNwYWNlIGltcHJvcGVybHkgZW1pdHRlZCBkdXJpbmcgZXhjbCBjMTRuLiBUaGFua3MgdG8gU2NvdHQgQ2FudG9yLgorICAgIEZpeGVkIEJ1ZyAzNjUyNjogT3V0IG9mIG1lbW9yeSBlcnJvciB3aGVuIHNpZ25pbmcgb3IgdmVyaWZ5aW5nIGJpZyBmaWxlcy4gVGhhbmtzIHRvIEFnbmVzIEp1aGFzei4KKyAgICBGaXhlZCBCdWcgNDc3ODQ6IENsYXNzTm90Rm91bmRFeGNlcHRpb24gd2hlbiBpbml0IHRoZSB4bWwgc2VjdXJpdHkgaW4gT1NHaSBwbGF0ZWZvcm0KKyAgICBGaXhlZCBCdWcgNDc3NjI6IGNvbnRleHRDaGlsZCBwYXJhbWV0ZXIgb2YgVHJhbnNmb3JtLmdldEluc3RhbmNlIG1heSBiZSBudWxsIAorTmV3IGluIHYxLjQuMworICAgIEZpeGVkIEJ1ZyA0NzUyNjogWE1MIHNpZ25hdHVyZSBITUFDIHRydW5jYXRpb24gYXV0aGVudGljYXRpb24gYnlwYXNzCisgICAgRml4ZWQgQnVnIDQ3NTI1OiBGaXggY2hlY2tzdHlsZSBwcm9ibGVtcyB3aXRoIHNvdXJjZSBhbmQgdGVzdHMuCisgICAgRml4ZWQgQnVnIDQyMjM5OiBFQ0RTQSBzaWduYXR1cmUgdmFsdWUgaW50ZXJvcGFiaWxpdHkgcGF0Y2guCisgICAgRml4ZWQgQnVnIDQ1NzQ0OiBYUGF0aCB0cmFuc2Zvcm0gYW5kIHhtbC1zdHlsZXNoZWV0LgorICAgIEZpeGVkIEJ1ZyA0Mjk4NjogVGhlIDwvI2RvY3VtZW50PiBub2RlIGluc2VydGVkIGF0IHRoZSBlbmQgb2YgU09BUEVudmVsb3BlLgorICAgIEZpeGVkIEJ1ZyA0NzAyOTogVW5uZWNlc3NhcnkgbmFtZXNwYWNlIGRlY2xhcmF0aW9ucyBvbiBFbmNyeXB0ZWREYXRhIGNoaWxkcmVuLgorICAgIEZpeGVkIEJ1ZyA0NDMzNTogQ2FuJ3QgdmFsaWRhdGUgYWZ0ZXIgaW52YWxpZCB2YWxpZGF0aW9uLgorICAgIEZpeGVkIEJ1ZyA0NzI2MDogSW1wcm92ZSBKYXZhIHVuaXQgdGVzdGluZy4KKyAgICBGaXhlZCBCdWcgNDcyNjU6IFNvbWUgd2Vic2l0ZSB1cGRhdGVzLgorICAgIEZpeGVkIEJ1ZyA0NTM4ODogV2UgbmVlZCBhIFBPTSBmaWxlIGFkZGVkIHRvIHRoZSBNYXZlbiByZXBvc2l0b3J5LgorICAgIEZpeGVkIEJ1ZyA0NzQ4MzogUmVtb3ZlIEpESyAxLjUgQVBJIGRlcGVuZGVuY2llcworICAgIEZpeGVkIGJ1ZyA0NzA1NzogRG93bmdyYWRlIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gbG9nZ2luZyBmcm9tICJpbmZvIi4gVGhhbmtzIHRvIENvbG0gTyBoRWlnZWFydGFpZ2guCisgICAgRml4ZWQgYnVnIDQyMDYxOiBNZXRob2QgdG8gZGlzYWJsZSBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQgKHJlb3BlbmVkKTogY2hhbmdlZCBCYXNlNjQgY29kZSB0byBpZ25vcmUgbGluZSBicmVha3MsIGlmIGVuYWJsZWQuIFRoYW5rcyB0byBDb2xtIE8gaEVpZ2VhcnRhaWdoLgorICAgIEZpeGVkIGJ1ZyA0NzA5NzogUmV1c2luZyBYTUxTaWduYXR1cmUgZm9yIHNpZ25pbmcgYW5kIHZlcmlmeWluZyBmYWlscyBvbiBzYW1lIHRocmVhZC4gVGhhbmtzIHRvIEJydW5vIEhhcmJ1bG90LgorICAgIEZpeGVkIGJ1ZyA0NjczMjogRmFpbGVkIHRvIGFkZCBtb3JlIHRoYW4gb25lIGNoaWxkIGVsZW1lbnQgdG8gRW5jcnlwdGlvbk1ldGhvZC4KKyAgICBGaXhlZCBidWcgNDYxMDE6IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLklkUmVzb2x2ZXIgaXMgbm90IHRocmVhZCBzYWZlCisgICAgRml4ZWQgYnVnIDQ1OTYxOiB2ZXJpZnkgd2l0aCBvd24gY2Fub25pY2FsaXphdGlvbiBtZXRob2QuIFRoYW5rcyB0byBBbnRvbiBLb3N5YWtvdi4KKyAgICBGaXhlZCBidWcgNDU0NzU6IFhNTFNpZ25hdHVyZTo6Z2V0S2V5SW5mbyBtZXRob2QgbW9kaWZpZXMgZG9jdW1lbnQKKyAgICBGaXhlZCBidWcgNDU4MTE6IEZpeCBYTUxTZWMgMS40LjIgcHJvYmxlbXMgcmVwb3J0ZWQgYnkgZmluZGJ1Z3MKKyAgICBGaXhlZCBidWcgNDU3MDY6IFRyYW5zZm9ybS5yZWdpc3RlciBjbGFzcyBsb2FkaW5nIGFuZCByZWN1cnNpdmUgaW5zdGFudGlhdGlvbiBwcm9ibGVtcworICAgIEZpeGVkIGJ1ZyA0NTY2NDogU29tZSBjYWxscyBzaG91bGQgYmUgd3JhcHBlZCBpbiBBY2Nlc3NDb250cm9sbGVyLmRvUHJpdmlsZWdlZAorICAgIEZpeGVkIGJ1ZyA0NTYzNDogUmVzdG9yZSBYTUxVdGlscy5jcmVhdGVEU2N0eCBtZXRob2QuCisgICAgRml4ZWQgYnVnIDQ1MDk1OiBsb2c0ai5wcm9wZXJ0aWVzIGluIHhtbHNlYyBzb3VyY2VzIGFuZCBidWlsZHMgaGFzIHNpZGUKK2VmZmVjdHMgaW4gcHJvZHVjdGlvbiBlbnZpcm9ubWVudC4gVGhhbmtzIHRvIEpvYWNoaW0gUm91c3NlYXUuCisKK05ldyBpbiB2MS40LjJyYzEKKyAgICBGaXhlZCBidWcgNDQ5OTk6IERPTUV4Y2VwdGlvbiBpcyB0aHJvd24gYXQgWE1MU2lnbmF0dXJlIGNyZWF0aW9uLiBUaGFua3MgdG8gR2llZHJpdXMgTm9yZWlraXMuCisgICAgRml4ZWQgYnVnIDQ0ODYzOiBJbXByb3ZlZCBsb2dnaW5nIGluIHNpZ25hdHVyZSBoYW5kbGluZy4gVGhhbmtzIHRvIFdhbGx5IERlbm5pcy4KKyAgICBGaXhlZCBidWcgNDQ5NTY6IENvbmN1cnJlbnQgY3JlYXRpb24gb2YgYSBYTUxTaWduYXR1cmUgaW5zdGFuY2UgcHJvZHVjZXMgYW4gQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLiBUaGFua3MgdG8gR2llZHJpdXMgTm9yZWlraXMKKyAgICBGaXhlZCBidWcgNDQ5OTE6IENvbmN1cnJlbnQgaW52b2NhdGlvbiBvZiBLZXlJbmZvLmdldFg1MDlDZXJ0aWZpY2F0ZSgpIG9jY2FzaW9uYWxseSBmYWlscy4gVGhhbmtzIHRvIEdpZWRyaXVzIE5vcmVpa2lzCisgICAgCitOZXcgaW4gdjEuNC4yYmV0YTIKKyAgICBGaXhlZCBidWcgNDQ4MTA6IEFkZCBzdXBwb3J0IGZvciBtb3JlIFhNTERTaWcgYWxnb3JpdGhtcyBsaXN0ZWQgaW4gUkZDIDQwNTEKKyAgICBGaXhlZCBidWcgNDQ2MTc6IFJlZ3Jlc3Npb24gd2hlbiBwcm9jZXNzaW5nIFhQYXRoIHRyYW5zZm9ybSAoYWRkaXRpb25hbCBmaXgpCitOZXcgaW4gdjEuNC4yYmV0YTEKKyAgICBGaXhlZCBidWcgNDQ2Mjk6IFN3aXRjaCBvcmRlciBvZiBYTUwgU2lnbmF0dXJlIHZhbGlkYXRpb24gc3RlcHMKKyAgICBGaXhlZCBidWcgNDQ2MTc6IFJlZ3Jlc3Npb24gd2hlbiBwcm9jZXNzaW5nIFhQYXRoIHRyYW5zZm9ybQorICAgIEZpeGVkIGJ1ZyA0NDU4NjogWE1MWDUwOUlzc3VlclNlcmlhbC5nZXRJc3N1ZXJOYW1lIGluY29ycmVjdGx5IGVzY2FwZXMgJyMnIGluIGhleCB2YWx1ZXMKKyAgICBGaXhlZCByZmUgNDI2NTM6IEFkZCBzdXBwb3J0IGZvciBDMTROIDEuMSB0byBKYXZhIGltcGxlbWVudGF0aW9uLiBUaGFua3MKKwl0byBTZWFuIE11bGxhbi4KKyAgICBGaXhlZCBidWcgNDQyMDU6IFhNTFg1MDlDZXJ0aWZpY2F0ZS5nZXRYNTA5Q2VydGlmaWNhdGUoKSByZXN1bHRzIGluIGNlcnRpZmljYXRlIHBhcnNpbmcgZXJyb3IuIFRoYW5rcyB0byBWaXNoYWwgTWFoYWphbi4KKyAgICBGaXhlZCBCdWcgNDQxNzc6IHdoZW4gdXNpbmcgeHNsdCB0cmFuc2Zvcm1hdGlvbiB0aGVyZSBpcyBwcm9ibGVtIHdpdGggeGFsYW4gbmV3bGluZS4gVGhhbmtzIHRvIE1hdGVqIFNwaWxsZXIuCisgICAgU21hbGwgcmVmYWN0b3IgZm9yIEVsZW1lbnRQcm94eSB0byBnZXQgcmlkIG9mIHRoZSBzdGF0ZSwgaXQgd2FzIGFuIG9sZCAKKyAgICAgICAgdmVzdGlnZSB0aGF0IHdoZXJlIHRha2luZyBzcGFjZSBhbmQgb2JmdXNjYXRpbmcgdGhlIGNvZGUuCisgICAgRml4ZWQgYnVnIDQwODk3OiBTdHJpbmcgY29tcGFyaXNvbnMgdXNpbmcgJz09JyBjYXVzZXMgdmFsaWRhdGlvbiBlcnJvcnMgCisgICAgICAgIHdpdGggc29tZSBwYXJzZXJzLiBUaGFua3MgVmlzaGFsIE1haGFqYW4KKyAgICBGaXhlZCBidWcgNDMwNTY6IExpYnJhcnkgZG9lcyBub3QgYWxsb3cgc3BlY2lmeSBwcm92aWRlciBmb3IgcHJpdmF0ZSBrZXkgCisJb3BlcmF0aW9ucy4gVGhhbmtzIHRvIEFsb24gQmFyLUxldi4KKyAgICBGaXhlZCBidWcgNDQxMDI6IFhNTENpcGhlciBsb2FkRW5jcnlwdGVkS2V5IGVycm9yLiBUaGFua3MgdG8gQnV0bGVyLgorICAgIEZpeGVkIGJ1ZyA0MzIzOTogIk5vIGluc3RhbGxlZCBwcm92aWRlciBzdXBwb3J0cyB0aGlzIGtleSIgd2hlbiBjaGVja2luZyBhIAorCVJTQSBzaWduYXR1cmUgYWdhaW5zdCBhIERTQSBrZXkgYmVmb3JlIFJTQSBrZXkuIFRoYW5rcyB0byBNYXR0aGlhcworCUdlcm1hbm4uCisgICAgRml4ZWQgYnVnIDQyNTk3OiBVbm5lY2Vzc2FyeSBuYW1lc3BhY2UgZGVjbGFyYXRpb25zIG9uIFNpZ25hdHVyZSBjaGlsZHJlbgorCVRoYW5rcyB0byBCcmVudCBQdXRuYW0uCisgICAgRml4ZWQgYnVnIDQyMDYxOiBNZXRob2QgdG8gZGlzYWJsZSBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQuIFRoYW5rcyB0bworCU1pY2hhZWwgTWNJbnRvc2guCisgICAgRml4ZWQgYnVnIDQyODY1OiBQcm9ibGVtIHdpdGggZW1wdHkgQmFzZVVSSSBpbiBSZXNvbHZlckxvY2FsRmlsZXN5c3RlbS4KKwlUaGFua3MgdG8gRnJhbmsgQ29ybmVsaXMuCisgICAgRml4ZWQgYnVnIDQzMjMwOiBJbmNsdXNpdmUgQzE0biBkb2Vzbid0IGFsd2F5cyBoYW5kbGUgeG1sOnNwYWNlICYgeG1sOmxhbmcgCisJYXR0cmlidXRlcyBjb3JyZWN0bHkKKyAgICBGaXhlZCBidWcgMzg2Njg6IEFkZCBYTUxDaXBoZXIuZW5jcnlwdERhdGEgbWV0aG9kIHRoYXQgdGFrZXMgc2VyaWFsaXplZCAKKwlkYXRhIGFzIHBhcmFtZXRlci4gVGhhbmtzIHRvIFZsYWRpbWlyIElvbmVzY3UuCisgICAgRml4ZWQgYnVnIDQyODg2OiBFcnJvciB3aGVuIHJlbW92aW5nIGVuY3J5cHRlZCBjb250ZW50IGluIDEuNC4xLiBUaGFua3MgdG8KKwlKdWxpZW4gVGF1cGluIGFuZCBEYW5pZWxlIEdhZ2xpYXJkaS4KKyAgICBGaXhlZCBidWcgNDI4MjA6IENsYXNzTG9hZGVyIGlzc3VlIGNhdXNpbmcgTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIGxvYWRpbmcgCisJUHJvdmlkZXIgSW1wbGVtZW50YXRpb24uIFRoYW5rcyB0byBKYW1lcyBXYXNoaW5ndG9uLgorTmV3IGluIDEuNC4xCisgICAgRml4ZWQgYnVnIDQyMjM5OiBFQ0RTQSBzaWduYXR1cmUgdmFsdWUgaW50ZXJvcGVyYWJpbGl0eSBwYXRjaC4gVGhhbmtzIHRvIFdvbGZnYW5nIEdsYXMgZm9yIGZpeC4KKworTmV3IGluIHYxLjQuMWJldGExCisgICAgRml4ZWQgYnVnIDQxODkyOiBYTUwgU2VjdXJpdHkgMS40LjAgZG9lcyBub3QgYnVpbGQgd2l0aCBJQk0ncyBKREsKKyAgICBGaXhlZCBidWcgNDE5Mjc6IENhbm5vdCBjYW5vbmljYWxpemUgd2l0aCBYU0xUIHRyYW5zZm9ybS4gVGhhbmtzIHRvCitMaWp1biBMaWFvIGZvciBmaXguCisgICAgRml4ZWQgYnVnIDQxODA1OiBSZXNvbHV0aW9uIG9mIFNBTUwgMS54IElEIGF0dHJpYnV0ZXMsIGluY29ycmVjdCBuYW1lc3BhY2UuIFRoYW5rcyB0bworCUJyZW50IFB1dG1hbiBmb3IgZml4LgorICAgIEZpeGVkIGJ1ZyA0MTQ3NDogdHdvIHRleHQgbm9kZXMgd2l0aCB0aGUgdmFsdWUgJ1xuJyBpbiBzdWNjZXNzaW9uIHdpdGhpbgorICAgICAgICA8ZHM6U2lnbmVkSW5mbz4gYW5kIDxkczpYNTA5SXNzdWVyU2VyaWFsPi4gVGhhbmtzIHRvIExpanVuIExpYW8gZm9yIGZpeC4KKyAgICBGaXhlZCBidWcgNDE1MTA6IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC5LZXlWYWx1ZS5nZXRQdWJsaWNLZXkoKSAKKyAgICAgICAgcmV0dXJucyBudWxsIGZvciBEU0Ega2V5LiBUaGFua3MgdG8gU3RlcGFuIEhyYmFjZWsgZm9yIGZpeC4KKyAgICBGaXhlZCBidWcgNDE1Njk6IENhbm5vdCBzcGVjaWZ5IGR5bmFtaWNhbGx5IGEgc3BlY2lmaWMgSkNFIFByb3ZpZGVyIHdpdGggCisgICAgICAgIHRoZSBEU0EgU2lnbmF0dXJlLiBUaGFua3MgdG8gSnVsaWVuIFBhc3F1aWVyIGZvciBmaXguCisgICAgRml4ZWQgYnVnIDQxNTczOiBYTUxDaXBoZXIgU3RhY2tPdmVyZmxvd0Vycm9yLiBUaGFua3MgdG8gTWFyZWsgSmFibG9uc2tpIAorICAgICAgICBmb3IgZml4LgorICAgIEZpeGVkIGJ1ZyA0MTQ2MjogWG1sIGNhbm9uaXphdGlvbiAtIFVURi04IGVuY29kaW5nIGlzc3VlIGluIFhtbCBzZWN1cml0eSAxLjQuMCBUaGFua3MgdG8gS2Fyb2wgUmV3ZXJhLiAgICAKKyAgICBGaXhlZCBidWcgNDE1MjA6IENhbm5vdCBnZW5lcmF0ZSBzaWduYXR1cmVzIHdpdGggdGhlIHNhbWUga2V5IGJ1dCBkaWZmZXJlbnQgYWxnb3JpdGhtcyBpbiBzdWNlc3Npb24uIFRoYW5rcyB0byBMaWp1biBMaWFvCitOZXcgaW4gMS40CisJRml4ZWQgYnVnIDQwODk2CisJCitOZXcgaW4gMS40UkM0CisJRml4ZWQgYnVnIDQwODgwCisJCitOZXcgaW4gMS40UkMzCisJRml4ZWQgYnVnIDQwNzk2CisJCitOZXcgaW4gMS40UkMyYQorICAgIEZpeGVkIGJ1ZyA0MDc4MworCitOZXcgaW4gMS40UkMyCisJRml4ZWQgYnVnIDQwNTEyLiBNYWRlIFRyYW5zZm9ybVNQSSBiYWNrd2FyZCBjb21wYXRpYmxlLiBOb3cgaXQgaXMgcG9zc2libGUgCisJCXRvIHVzZSBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZSA+MS4zIHZlcnNpb25zIHBheWluZyB0aGUgcGVyZm9ybWFuY2UgaGl0CisJCW9mIHRoZSBvbGQgaW1wbGVtZW50YXRpb24uCisgICAgRml4IGEgc21hbGwgJiB1bm5lZWRlZCBqYXZhIDEuNCBkZXBlbmRlY3kuCisgICAgS2V5UmVzb2x2ZXIgJiBSZXNvdXJjZVJlc29sdmVyIGNhbiB3b3JrIGxpa2UgPDEuMyBtb2RlIHdoZW4gdXNlZCB3aXRoIG9sZCBpbXBsZW1lbnRhdGlvbnMuCisKK05ldyBpbiAxLjRSQzEJCisJRml4ZWQgYnVnIDQwMjkwLgorCUZpeGVkIGJ1ZyA0MDI5OC4KKwlGaXhlZCBidWcgNDAzNjAuIENoYW5nZWQgYSBsaXR0bGUgIHRoZSB3YXkgdGhlIElkUmVzb2x2ZXIgd29ya3Mgd2hlbiAKKwkgICAgRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQgZmFpbHMuCisJRml4ZWQgYnVnIDQwNDA0LgorCitOZXcgaW4gdjEuNGJldGEyCisgICAgT3B0aW1pemF0aW9uIGluIGMxNG4gaW4gbm9kZS1zZXRzLgorCU9wdGltaXphdGlvbiBmb3IgdGhlIHhtbDoqIGluaGVyaXRhbmNlIGluIGluY2x1c2l2ZSAgYzE0bi4KKwlBZGRlZCBFQ0RTQSBzaWduYXR1cmUgdGhhbmtzIE1hcmt1cyBMaW5kbmVyIAorCU9wdGltaXphdGlvbiBpbiBSZXRyaWV2ZWxNZXRob2QgaGFuZGxpbmcuIERvbid0IHJlcGFyc2UgdGhlIGJ5dGVzIGludG8gYSBET00gdHJlZSBpZiBub3QgbmVlZGVkIHRoYW5rcyBEYXZpZCBHYXJjaWEuCisJRml4ZWQgYnVnIDQwMjE1OiBCYXNlNjQgaXMgbm90IHdvcmtpbmcgaW4gRUJDRElDIHBsYXRmb3JtLiBUaGFua3MgdG8KKwkgICAgIGFjYXN0cm8uZGl0QGFlYXQuZXMgZm9yIGZpeC4KKwlCaWcgb3B0aW1pemF0aW9ucyBpbiBYUGF0aDIgdHJhbnNmb3JtYXRpb24uCisJRml4ZWQgYnVnIDQwMjQ1IGluIFhQQVRIMiB0cmFuc2Zvcm1hdGlvbihvbmx5IGluIGRldmVsb3BtZW50IHZlcnNpb24pCisJRml4ZWQgYnVnIG5vIHJlc29sdmVyIGZvciBYNTA5RGF0YSB3aXRoIGp1c3QgYSBYNTA5Q2VydGlmaWNhdGUuCQorCU9wdGltaXphdGlvbiBpbiBCYXNlNjQgdG8gZG8gc2ltcGxlIHRyYW5zZm9ybWF0aW9uIGZyb20gU3RyaW5nIHRvICBieXRlW10KKworTmV3IGluIHYxLjRiZXRhMQorICAgIEZpeGVkIGJ1ZyA0MDAzMi4gRml4ZWQgQlVHIDQwMDMxIEZpeGVkIGJ1ZyB3aGVuIHRoZSBwcmVmaXggZGlnaXRhbCBzaWduYXR1cmUgdXJpIGlzIG5vdCBudWxsLgorCUNoYW5nZXMgaW4gdGhlIE5vZGVGaWx0ZXIgQVBJIGluIG9yZGVyIHRvIGxldCB0aGUgdHJhbnNmb3JtYXRpb25zCisgICAgICAgICBkbyBzb21lIG9wdGltaXphdGlvbnMgdGFrZSBpbnRvIGFjY291bnQgdGhlIGMxNG4gb3JkZXIuCisJT3B0aW1pemF0aW9uIGluIHNpZ25hdHVyZSB0cmFuc2Zvcm1hdGlvbiBpbiBub2RlLXNldHMoeHBhdGgsIHhwYXRoMiksIDIwLTQwJSBzcGVlZC11cC4JICAgIAorCQorTmV3IGluIHYxLjRiZXRhMAorCUZpeGVkIGJ1ZyAzODY2ODogQWRkIFhNTENpcGhlci5lbmNyeXB0RGF0YSBtZXRob2QgdGhhdCB0YWtlcyAKKwkJCSBzZXJpYWxpemVkIGRhdGEgYXMgcGFyYW1ldGVyIChtdWxsYW4pCisJRml4ZWQgYnVnIDM5MjczOiBKU1IgMTA1IERPTUNyeXB0b0NvbnRleHQuc2V0SWRBdHRyaWJ1dGVOUyBub3Qgd29ya2luZyAKKwkJCSB3aGVuIHZhbGlkYXRpbmcgc2lnbmF0dXJlcyAobXVsbGFuKQorCUZpeGVkIGJ1ZyAzODQwNTogRWxlbWVudFByb3h5Lmxlbmd0aCgpIGlzIG5vdCB3b3JraW5nIChKYXZhKSAobXVsbGFuKQorCUZpeGVkIGJ1ZyAzNzcwODogRGlmZmVyZW50IGJlaGF2aW91ciB3aXRoIE5vZGVTZXQgYW5kIFJvb3ROb2RlIHdpdGggCisJCQkgSW5jbHVzaXZlTmFtZXNwYWNlcyAobXVsbGFuKQorCUZpeGVkIGJ1ZyAzNzQ1NjogU2lnbmluZyB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIGN1c3RvbSByZXNvdXJjZSAKKwkJCSByZXNvbHZlciBpcyByZWdpc3RlcmVkIChtdWxsYW4pCisgICAgICAgIEZpeGVkIGJ1ZyAzODY1NQorCUZpeGVkIGJ1ZyAzODQ0NC4KKwlGaXhlZCBidWcgMzg2MDUuCisJRml4ZWQgYnVnIDM5MjAwKEFQSSBDSEFOR0UpCisJCVJlZmFjdG9yZWQgdGhlIHdheSBrZXlyZXNvbHZlciB3b3JrcyBpbnN0ZWFkIG9mIGNhbGxpbmcgY2FuUmVzb2x2ZS9yZXNvbHZlWCBvbmx5IHJlc29sdmVYIGlzIHVzZWQgIAorCQlhbmQgaWYgaXQgcmV0dXJucyBudWxsIGl0IG1lYW5zIGl0IGNhbm5vdCByZXNvbHZlLgorCU1pbm9yIE9wdGltaXphdGlvbnMuIAorCQlMYXp5IGZpZWxkcyBpbml0aWFsaXphdGlvbiwgaW5pdGlhbGl6ZSB3aXRoIG51bGwgYW5kIGNyZWF0ZSB0aGUgb2JqZWN0IG9ubHkgd2hlbiBuZWVkZWQKKwkJUmVnaXN0ZXJlZCBDbGFzcyByZW9yZGVyLCBpbiBzZXZlcmFsIHBhcnRzIHRoZSBsaWJyYXJ5IGNvbnRhaW5zIGEgbGlzdCBvZiB3b3JrZXJzCisJCQl0aGF0IGFyZSBhc2tlZCBpZiBpdCBjYW4gc29sdmUgYSBwcm9ibGVtLiBOb3cgdGhlIG9uZSB0aGF0IHNhaWQgeWVzIGlzIG1vdmUgdG8gdGhlIGZyb250CisJCQl3aXNoaW5nIHRoYXQgdGhlIG5leHQgdGltZSBpdCBhbHNvIGhpdHMuCisJQVBJIENoYW5nZTogTWFrZSBUcmFuc2Zvcm0gJiBUcmFuc2Zvcm1TcGkgcmV1c2FibGUgYmV0d2VlbiB0aHJlYWRzLgkKKwkJcmVtb3ZlIHNldFRyYW5zZm9ybShUcmFuc2Zvcm0gdCkgbWV0aG9kIGluIFRyYW5zZm9ybVNwaSBhbmQgcGFzcyAKKwkJdGhlIFRyYW5zZm9ybSBvYmplY3QgaW4gZW5naW5lUGVyZm9ybVRyYW5zZm9yIG1ldGhvZHMuCisJRml4ZWQgYnVnIDM5Njg1OiBidWdzIHJlcG9ydGVkIGJ5IGZpbmRidWdzIChtdWxsYW4pCisJQWRkZWQgc3VwcG9ydCBmb3IgU0hBMjU2ICYgU0hBNTEyIERpZ2VzdE1ldGhvZHMgdG8gSlNSIDEwNS4gKG11bGxhbikKKwlGaXggSlNSIDEwNSB1bm1hcnNoYWxpbmcgYnVnOiBub3cgcmVjb2duaXplcyBQR1BEYXRhLiAobXVsbGFuKQorCU9wdGltaXphdGlvbiB0byBub3QgY3JlYXRlIGluc3RhbmNlcyBvZiBTaWduYXR1cmUgb3IgTWVzc2FnZURpZ2VzdCBvYmplY3RzLCBidXQgbWFudGFpbiBvbmUgZm9yIHRocmVhZC4gCisJCUFsc28gZG9uJ3QgY2hhbmdlIHRoZSBrZXkgaWYgaXQgd2FzIGFscmVhZHkgdXNlZC4gKHJhdWwpCisJCQorTmV3IGluIHYxLjMKKwlJbml0LURvbid0IGZhaWwgaWYgYSB0cmFuc2Zvcm1hdGlvbiBkb24ndCBoYXZlIGFsbCBvZiBpdHMgZGVwZW5kZWNpZXMuCisJCVJlbW92ZSBYUGF0aCBpbml0aWFsaXphdGlvbiBmcm9tIEluaXQgYW5kIGRvIG9ubHkgd2hlbiB4cGF0aCBpcyBuZWVkZWQuCisgICAgUmVzb2x2LVJlbW92ZWQgdGhlIHVzZSBvZiB4cGF0aCBleHByZXNzaW9ucyB0byBzZWFyY2ggdGhlIGVsZW1lbnRzIHRvIHNpZ24vdmVyaWZ5LCBub3cgdXNlIG9ubHkgcGxhaW4gRE9NIHNlYXJjaGluZy4KKwlSZXNvbHZlcnMtUmVtb3ZlIHdhbnRzT2N0ZWN0U3RyZWFtIHdhbnRzTm9kZVNldCBhbmQgaGlzIHJldHVybnMgcGFpciB0aGV5IGFyZSBub3QgdXNlZCwgcmlnaHQgbm93IGFuZCBzb21lIGFyZSBpbmNvcnJlY3QuCQorCVJlbW92ZSB0aGUgVXNlIG9mIHhhbGFuIG9yIHhlcmNlcyBjbGFzcyBVUkkKKwlSZW1vdmVkIHRoZSBleHBhbmRTeXN0ZW1JZAorCUNoYW5nZWQgZnJvbSBWZWN0b3I8U3RyaW5nPiB0byBMaXN0PENsYXNzPiwgc28gd2UgZG9uJ3QgbmVlZCB0byB1c2UgY2xhc3NGb3JOYW1lIGV2ZXJ5dGltZSBhbmQgdXNlZCBpdCBqdXN0IHRoZSBmaXJzdCB0aW1lLgorCVJlbW92ZWQgUFJORyxIZXhEdW1wLFZlcnNpb24sIFg1MDlDZXJ0aWZpY2F0ZVZhbGlkYXRvcgorCUFkZGVkIGFuIHVuc3luYyBidWZmZXIgb3V0cHV0c3RyZWFtLgorCUNoYW5nZWQgU3ltYm9sIHRhYmxlIHRvIGEgbW9yZSBlZmZpY2llbnQgYW5kIHNpbXBsZSBzdHJ1Y3R1cmUKKwlGaXhlZCBidWcgMzQ3NDMgLCBTdWJtaXR0ZWQgYnk6IExlZSBDb29tYmVyIDxsZWUuYXQubHNoaWZ0Lm5ldD4KKwlNaW5vciBzcGVlZHVwcyBpbiBiNjQsIEhhbHZlZCB0aGUgdGFibGUgbG9va3Vwcy4KKwlSZWR1Y2UgT2JqZWN0IGNyZWF0aW9uIGR1cmluZyBjMTRuLCBmcm9tIG9uZSB0byBsZXZlbCB0byBvbmUgcGVyIGMxNG4uCisJQ2hhbmdlIGFsbCBWZWN0b3IgdG8gTGlzdChBcnJheUxpc3QpLCB3ZSBkb24ndCBuZWVkIHN5bmNocm9uaXphdGlvbiBzYWZldHkuCisJKlJlZmFjdG9yIHRoZSB3YXkgd2UgaGFuZGxlIGMxNG4gb2Ygbm9kZXNldHM6CisJICAgIEJlZm9yZSB0aGlzIHBhdGNoIGV2ZXJ5IHRyYW5zZm9ybWF0aW9uIGNyZWF0ZXMgYSBzZXQgd2l0aCB0aGUgbm9kZXMgdGhhdCBzaG91bGQKKwkgICAgYmUgb3V0cHV0ZWQuIEV2ZXJ5IHNldCBpcyBvYnRhaW5pbmcgdmlzaXRpbmcgdGhlIHdob2xlIGRvbSB0cmVlIGV2ZXJ5IHRpbWUsCisJICAgIGFuZCB0aGVuIGRvIGl0IG90aGVyIHRpbWUgYXQgYzE0biB0aW1lLiBTbyBpdCBkb2VzIDxudW1iZXIgb2YgdHJhbnNmb3JtYXRpb25zPisxCisJICAgIHZpc2l0aW5ncywgdmVyeSBzbG93IGFuZCBtZW1vcnkgY29zdGx5LgorCSAgICBOb3cgZXZlcnkgdHJhbnNmb3JtYXRpb24ganVzdCByZXR1cm4gYSBOb2RlRmlsdGVyIHRoYXQgdGVsbHMgaWYgdGhlIG5vZGUgaXMgaW5jbHVkZWQgb3Igbm90LgorCSAgICBTbyBvbmx5IG9uZSB2aXNpdGluZyBpcyBkb25lLgorCVVuaWZpZWQgaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNi94bWxkc2lnLWZpbHRlcjIgYW5kIGh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDQveG1sZHNpZy1maWx0ZXIyIHRyYW5zZm9ybWF0aW9uIGltcGxlbWVudGF0aW9ucy4KKwlSZW1vdmVkIGh0dHA6Ly93d3cubnVlLmV0LWluZi51bmktc2llZ2VuLmRlL35nZXVlci1wb2xsbWFubi8jeHBhdGhGaWx0ZXIgdHJhbnNmb3JtYXRpb24KKwlDYW5vbmljYWxpemF0aW9uIHRyZWUgdHJhdmVzaW5nIGlzIG5vdCByZWN1cnNpdmUuIGl0IGdpdmVzIGJldHRlciBtZW1vcnkgaGFuZGxpbmcgYW5kIHBlcmZvcm1hbmNlLgorCUZpeGVkIGJ1ZyAzMzkzNiwgU3VibWl0ZWQgYnk6IFJheW1vbmQgV29uZyA8cndvbmcuYXQuYXJpYmEuY29tPgorCUZpeGVkIGJ1ZyAzNTkxOSwgU3VibWl0ZWQgYnk6IEx1ZGEgPGx1ZGFiLmF0LmxhbmwuZ292PgorCW91dCBvZiB0aGUgYm94IGoyc2UgMS41IHJlYWR5KG5vIGFkZGluZyB4YWxhbiBpbiB0aGUgY2xhc3NwYXRoIG9yIGVuZG9yc2VkIGlmIG5vCisJICAgeHBhdGggdHJhbnNmb3JtYXRpb24gaXMgbmVlZGVkKQorCQorCitOZXcgaW4gdjEuMi4xCisgKiBGaXggdGhlIG1lbW9yeSBsZWFrIHdoZW4gdXNpbmcgeHBhdGggb3IgdXNpbmcgUmVzb3VyY2VSZXNvbHZlciBhbmQgbm90IGhpdHRpbmcgCisgIAkgIGdldEVsZW1lbnRCeUlkVXNpbmdET00oKSBbaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0zMjgzNl0KKyAqIEZpeCB0aGUgYnVnIHdpdGggdXNpbmcgWFBhdGgyRmlsdGVyIGFuZCBpbmNsdXNpdmUgYzE0bgorICogRml4IHRoZSBidWcgYXJyb3VzZSBpbiByZXVzaW5nIENhbm9uaWNhbGl6ZXJzCisgKiBGaXggYmFzZTY0dHJhbnNmb3JtYXRpb24gYnVnIFtodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTMzMzkzIF0KKyAqIEZpeCB0aGUgWE1Mc2lnbmF0dXJlSW5wdXQgcmVzZXQoKSBidWcuCisgKiBDbGVhbiB1bnVzZWQgamFyICh4bWxQYXJzZXJBUEkuamFyLGV0YykgYW5kIGNoZWNrIGFuZCBzdG9yZWQgbmV3IHZlcnNpb25zLgorICogZ2VuZXJhdGVkIHRoZSBkaXN0IGphciB3aXRoIHZlcnNpb24gKGkuZS4geG1sc2VjLTEuMi4xLmphciBpbnN0ZWFkIG9mIHBsYWluIHhtbHNlYy5qYXIpCisgKiBDbGVhbiB1bnVzZWQgYnVpbGQqLnhtbCBmaWxlcy4KKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgTmV3IGluIHYxLjAuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LiBNYXkgMjAwMgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK0lNUE9SVEFOVDoKKworIC0gVGhlIGRpZmZlcmVudCBjbGFzc2VzIGRvIG5vdCBjYWxsIEluaXQuaW5pdCgpIGFueSBsb25nZXIuIFRoaXMgbXVzdCBiZSBkb25lIAorICAgYnkgWU9VIGluIHlvdXIgYXBwbGljYXRpb24uIElmIHlvdSBtaXNzIHRoYXQsIHlvdSdsbCBnZXQgbWFueSAKKyAgIEFsZ29yaXRobU5vdFJlZ2lzdGVyZWQgZXhjZXB0aW9ucy4uLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTdW1tYXJ5OgorIAorIC0gVGhlIHNvZnR3YXJlIGlzIGZhc3Rlci4gRXNwZWNpYWxseSBjYW5vbmljYWxpemF0aW9uIGlzIGJldHdlZW4gCisgICBmYWN0b3IgNS0tODAgZmFzdGVyIHRoYW4gdGhlIG9sZCBvbmUuCisgCisgLSBTb21lIGRlcHJlY2F0ZWQgbWV0aG9kcyBpbiB0aGUgQ2Fub25pY2FsaXplciBhcmUgZGVsZXRlZC4KKyAKKyAtIFdlIHN1cHBvcnQgRXhjbHVzaXZlIENhbm9uaWNhbGl6YXRpb24KKyAKKyAtIFdlIHN1cHBvcnQgdGhlIFhQYXRoIEZpbHRlciB2ZXJzaW9uIDIuMCBEcmFmdC4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT3B0aW1pemF0aW9ucyBhbmQgc3BlZWQtdXAKKworIC0gY2Fub25pY2FsaXphdGlvbgorICAgLSBpbmNsdXNpdmUgYzE0biBpcyBub3cgZmFzdGVyIChmYWN0b3IgYmV0d2VlbiA1IGFuZCA4MCkKKyAtIHRyYW5zZm9ybXMKKyAgIC0gZW52ZWxvcGVkLXNpZ25hdHVyZSBpcyBub3cgZmFzdGVyIChubyBYUGF0aCBvcHMgYW55IG1vcmUpCisgICAtIGJhc2U2NCBpcyBub3cgZmFzdGVyIChubyBYUGF0aCBvcHMgYW55IG1vcmUpCisgICAtIGMxNG4gaXMgbm93IGZhc3RlciAoZHVlIHRvIGZhc3RlciBjMTRuIGFsZ28pCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NpZ25hdHVyZSBwYWNrYWdlOgorCisgLSBUaGUgWE1MU2lnbmF0dXJlSW5wdXQgd2hpY2ggaXMgdXNlZCBmb3IgcGFzc2luZyBub2RlIHNldHMgYW5kIG9jdGV0IAorICAgc3RyZWFtcyBpbnRvIHRyYW5zZm9ybXMgYW5kIHdoaWNoIGlzIGFsc28gdGhlIHJlc3VsdCBvZiB0cmFuc2Zvcm1zCisgICB1c2VzIGEgamF2YS51dGlsLlNldCBub3cgaW5zdGVhZCBvZiBhIE5vZGVMaXN0IGZvciB0aGUgaW50ZXJuYWwKKyAgIHJlcHJlc2VudGF0aW9uIG9mIHhwYXRoIG5vZGUgc2V0cy4gVGhpcyBhbGxvd3MgZWFzaWVyIHF1ZXJpZXMgaW4gdGhlCisgICBmb3JtOiBJcyBub2RlIE4gcGFydCBvZiB0aGUgbm9kZSBzZXQuIAorICAgCisgICBUaGUgaW1wbGljYXRpb24gaXMgdGhhdCB5b3UgY2FuIGFsc28gcGFzcyBhIFNldCB3aGljaCBjb250YWlucyB0aGUgbm9kZXMKKyAgIHRvIGJlIGNhbm9uaWNhbGl6ZWQgdG8gdGhlIENhbm9uaWNhbGl6ZXJzIHVzaW5nCisgICBwdWJsaWMgYnl0ZVtdIGNhbm9uaWNhbGl6ZVhQYXRoTm9kZVNldChTZXQgeHBhdGhOb2RlU2V0KQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDYW5vbmljYWxpemVyOgorCisgLSBBIGJ1ZyAod2VsbCwgbXkgdW5kZXJzdGFuZGluZyBvZiBjMTRuKSBpcyBjb3JyZWN0ZWQgcmVnYXJkaW5nIHRoZQorICAgY2Fub25pY2FsaXphdGlvbiBvZiBub2RlIHNldHMuIFRoYXQgYnVnIHJlbGF0ZWQgdG8gdGhlIHhtbDoqIAorICAgYXR0cmlidXRlcy4gU2VlIHhtbGRzaWcgbWFpbGluZyBsaXN0IGFyY2hpdmUgQCB3My5vcmcgZm9yIGRldGFpbHMuCisKKyAtIHJlbW92ZWQgYXJlIHRoZSBtZXRob2RzCisKKyAgIC0gcHVibGljIGJ5dGVbXSBjYW5vbmljYWxpemUoTm9kZSBub2RlKQorICAgLSBwdWJsaWMgYnl0ZVtdIGNhbm9uaWNhbGl6ZURvY3VtZW50KERvY3VtZW50IGRvYykKKyAgIC0gcHVibGljIGJ5dGVbXSBjYW5vbmljYWxpemVTaW5nbGVOb2RlKE5vZGUgcm9vdE5vZGUpCisKKyAgICAgcmVwbGFjZWQgYnkgcHVibGljIGJ5dGVbXSBjYW5vbmljYWxpemVTdWJ0cmVlKE5vZGUgbm9kZSkKKworICAgLSBwdWJsaWMgYnl0ZVtdIGNhbm9uaWNhbGl6ZShOb2RlTGlzdCB4cGF0aE5vZGVTZXQpCisKKyAgICAgcmVwbGFjZWQgYnkgcHVibGljIGJ5dGVbXSBjYW5vbmljYWxpemVYUGF0aE5vZGVTZXQoTm9kZUxpc3QgeHBhdGhOb2RlU2V0KQorICAgCisgICAtIHB1YmxpYyB2b2lkIHNldFhQYXRoKE9iamVjdCB4cGF0aCkKKyAgIC0gcHVibGljIE9iamVjdCBnZXRYUGF0aCgpCisgICAtIHB1YmxpYyBTdHJpbmcgZ2V0WFBhdGhTdHJpbmcoKQorICAgLSBwdWJsaWMgdm9pZCBzZXRYUGF0aE5vZGVTZXQoTm9kZUxpc3Qgbm9kZUxpc3QpCisgICAKKyAgICAgVGhlc2UgYXJlIG5vIGxvbmdlciBpbiB1c2UuIElmIHlvdSB3YW50IHRvIGMxNG5pemUgYW4geHBhdGggCisgICAgIG5vZGUgc2V0LCBzZWxlY3QgaXQgdXNpbmcgQ2FjaGVkWFBhdGhBUEkgYW5kIHRoZW4gYXBwbHkgCisgICAgIGNhbm9uaWNhbGl6ZVhQYXRoTm9kZVNldCB0byB0aGUgbm9kZSBzZXQuIAorICAgCisgICAtIHB1YmxpYyB2b2lkIHNldFJlbW92ZU5TQXR0cnMoYm9vbGVhbiByZW1vdmUpCisgICAtIHB1YmxpYyBib29sZWFuIGdldFJlbW92ZU5TQXR0cnMoKSAKKyAgIAorICAgICBUaGUgYzE0bml6ZXJzIGRvIG5vdCBhZGQgYW55IGF0dHJpYnV0ZXMgKG5hbWVzcGFjZXMgb3IgeG1sOiopCisgICAgIHRvIHRoZSBkb2N1bWVudCwgc28gdGhlc2UgbWV0aG9kIG1ha2Ugbm8gc2Vuc2UuCisgICAgIAorIC0gVGhlIENhbm9uaWNhbGl6ZXIgbm93IHN1cHBvcnRzICJFeGNsdXNpdmUgWE1MIENhbm9uaWNhbGl6YXRpb24gCisgICBWZXJzaW9uIDEuMCIgPGh0dHA6Ly93d3cudzMub3JnL1NpZ25hdHVyZS9EcmFmdHMveG1sLWV4Yy1jMTRuPiwgUmV2IDEuNTguCisgICAKKyAgIEZvciB0aGF0IHJlYXNvbiwgdGhlIGMxNG4gbWV0aG9kcyBhbGxvdyBhbiBhZGRpdGlvbmFsIFN0cmluZyBwYXJhbWV0ZXIgCisgICBmb3IgcGFzc2luZyB0aGUgaW5jbHVzaXZlIG5hbWVzcGFjZXMuCisgICAKKyAgIHB1YmxpYyBieXRlW10gY2Fub25pY2FsaXplU3VidHJlZShOb2RlIG5vZGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBpbmNsdXNpdmVOYW1lc3BhY2VzKQorICAgcHVibGljIGJ5dGVbXSBjYW5vbmljYWxpemVYUGF0aE5vZGVTZXQoTm9kZUxpc3QgeHBhdGhOb2RlU2V0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBpbmNsdXNpdmVOYW1lc3BhY2VzKQorICAgCisgICBTdWNoIGEgc3RyaW5nIGxvb2tzIGUuZy4gbGlrZSB0aGlzIAorICAgCisgICAgIFN0cmluZyBpbmNsdXNpdmVOYW1lc3BhY2VzID0gImRzIHhlbmMgZXggI2RlZmF1bHQiOworICAgICAKKyAgIEZvciBtb3JlIG9uIGV4Y2x1c2l2ZSBjMTRuLCBzZWUgdGhlIHNwZWMuIElmIHlvdSBwYXNzIHRoaXMgcGFyYW1ldGVyIHRvIHRoZQorICAgcmVndWxhciAoaW5jbHVzaXZlKSBjMTRuaXplciwgeW91J2xsIGdldCBhIAorICAgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbigiYzE0bi5DYW5vbmljYWxpemVyLlVuc3VwcG9ydGVkT3BlcmF0aW9uIikKKyAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVHJhbnNmb3JtczoKKyAgIAorIC0gVGhlIGV4Y2x1c2l2ZSBjMTRuIGlzIGFsc28gc3VwcG9ydGVkIGJ5IHRoZSB0cmFuc2Zvcm0gZnJhbWV3b3JrLiAKKyAgIFRoZSBwYXJhbWV0ZXIgZm9yIHRoZSBpbmNsdXNpdmUgbmFtZXNwYWNlcyBpcyB0aGUgY2xhc3MKKyAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMucGFyYW1zLkluY2x1c2l2ZU5hbWVzcGFjZXMKKyAgIAorICAgSWYgeW91IHdhbnQgdG8gbWFrZSBhIFRyYW5zZm9ybSBsaWtlIHRoaXMsIGRvIHRoYXQ6CisgICAKKyAgIERvY3VtZW50IGRvYyA9IC4uLjsKKyAgIFRyYW5zZm9ybXMgdHJhbnNmb3JtcyA9IG5ldyBUcmFuc2Zvcm1zKGRvYyk7CisgICBJbmNsdXNpdmVOYW1lc3BhY2VzIGluY05TID0gbmV3IEluY2x1c2l2ZU5hbWVzcGFjZXMoZG9jLCAibnMyIik7CisgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9DMTROX0VYQ0xfT01JVF9DT01NRU5UUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY05TLmdldEVsZW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAtIFRoZSBYUGF0aENvbnRhaW5lciBmb3IgdGhlIFhQYXRoIHRyYW5zZm9ybSBpcyBub3cgbW92ZWQgZnJvbSB0aGUKKyAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uaGVscGVyIHBhY2thZ2UgdG8gCisgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLnBhcmFtcy5YUGF0aENvbnRhaW5lcgorCisgLSBUaGUgZW52ZWxvcGVkLXNpZ25hdHVyZSB0cmFuc2Zvcm0gaXMgZmFzdGVyIG5vdy4gV2UgZG9uJ3QgZG8gY29zdGx5CisgICBYUGF0aCBvcGVyYXRpb25zIGJ1dCAnc2ltcGxlJyBET00gb3BzLgorCisgLSBCYXNlNjQgaXMgZmFzdGVyIChubyBYUGF0aCBvcHMpLgorCisgLSBUaGUgVHJhbnNmb3JtWFBhdGgyRmlsdGVyIGlzIG5vdyBzdXBwb3J0ZWQgYnkgdGhlIHBhY2thZ2UuIEl0IGNhbiBiZSB1c2VkIGJ5CisgICB1c2luZyB0aGUgaWRlbnRpZmllciBUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIgaW4gY29uanVjdGlvbiB3aXRoIHRoZSAKKyAgIFhQYXRoMkZpbHRlckNvbnRhaW5lciBmb3IgcGFzc2luZyBwYXJhbWV0ZXJzLiBUbyBrbm93IHdoYXQgeGZpbHRlcjIgaXMsIHNlZQorICAgaHR0cDovL3d3dy53My5vcmcvU2lnbmF0dXJlL0RyYWZ0cy94bWxkc2lnLXhmaWx0ZXIyLyA6CisKKyAgIERvY3VtZW50IGRvYyA9IC4uLjsKKyAgIFRyYW5zZm9ybXMgdHJhbnNmb3JtcyA9IG5ldyBUcmFuc2Zvcm1zKGRvYyk7CisgICBYUGF0aDJGaWx0ZXJDb250YWluZXIgeDJjID0gCisgICAgICAgICAvLyBpbnRlcnNlY3QKKyAgICAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lci5uZXdJbnN0YW5jZUludGVyc2VjdChkb2MsICIvL2EiKTsKKyAgICAgICAgIC8vIHN1YnRyYWN0CisgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIubmV3SW5zdGFuY2VTdWJ0cmFjdChkb2MsICIvL2EiKTsKKyAgICAgICAgIC8vIHVuaW9uCisgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIubmV3SW5zdGFuY2VVbmlvbihkb2MsICIvL2EiKTsKKyAgIAorICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgeDJjLmdldEVsZW1lbnQoKSk7CisgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIApkaWZmIC0tZ2l0IGEvSU5TVEFMTCBiL0lOU1RBTEwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTZmNzRmNgotLS0gL2Rldi9udWxsCisrKyBiL0lOU1RBTEwKQEAgLTAsMCArMSw4OCBAQAorWE1MIFNlY3VyaXR5IHYxLjQuMyBSZWxlYXNlZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFdlIGFyZSBwcm91ZCB0byBhbm5vdW5jZSB0aGUgMS40LjMgZmluYWwKKyAgcmVsZWFzZSBvZiB0aGUgWE1MIFNlY3VyaXR5IHBhY2thZ2UuCisKK0Fib3V0IFhNTCBTZWN1cml0eQorLS0tLS0tLS0tLS0tLS0tLS0tCisgIFRoZSBYTUwgU2VjdXJpdHkgcHJvamVjdCBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZgorICBzZWN1cml0eSByZWxhdGVkIFhNTCBzdGFuZGFyZHMuIEN1cnJlbnRseSwgaXQgaW5jbHVkZXMKKyAgaW1wbGVtZW50YXRpb25zIG9mIFczQyByZWNvbW1lbmRhdGlvbnMgIkNhbm9uaWNhbCBYTUwiLAorICAiQ2Fub25pY2FsIFhNTCAxLjEiLCAiWE1MIFNpZ25hdHVyZSBTeW50YXggYW5kIFByb2Nlc3NpbmciLAorICBhbmQgIlhNTCBFbmNyeXB0aW9uIFN5bnRheCBhbmQgUHJvY2Vzc2luZyIuCisKKyAgQmFzaWNhbGx5LCB0aGlzIG1lYW5zIHRoYXQgeW91IGNhbiB1c2UgdGhpcyBzb2Z0d2FyZQorICBmb3IgY3JlYXRpbmcgYW5kIHZlcmlmeWluZyBkaWdpdGFsIHNpZ25hdHVyZXMgd2hpY2gKKyAgYXJlIGV4cHJlc3NlZCBpbiBYTUwgYW5kIHNpZ24gYm90aCBYTUwgYW5kL29yIGFyYml0cmFyeQorICBjb250ZW50cy4gWW91IGNhbiB1c2UgdGhlIHN0YW5kYXJkIEpTUiAxMDUgKEphdmEgWE1MCisgIERpZ2l0YWwgU2lnbmF0dXJlKSBBUEkgb3IgdGhlIG5vbi1zdGFuZGFyZCBBcGFjaGUgWE1MU2VjIEFQSS4KKworICBZb3UgY2FuIGFsc28gdXNlIHRoZSBsaWJyYXJ5IHRvIGVuY3J5cHQgYW5kIGRlY3J5cHQKKyAgcG9ydGlvbnMgb2YgWE1MIGRvY3VtZW50cy4gT25seSB0aGUgbm9uLXN0YW5kYXJkIEFwYWNoZQorICBYTUxTZWMgQVBJIGlzIHN1cHBvcnRlZCwgYXMgdGhlIEpTUiAxMDYgKEphdmEgWE1MIERpZ2l0YWwgRW5jcnlwdGlvbikgCisgIEFQSSBpcyBzdGlsbCBpbiBkZXZlbG9wbWVudC4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIFhNTCBTZWN1cml0eSBwcm9qZWN0LCBwbGVhc2UgZ28gdG8KK2h0dHA6Ly9zYW50dWFyaW8uYXBhY2hlLm9yZy8KKworRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgWE1MIFNpZ25hdHVyZSwgZ28gdG8KK2h0dHA6Ly93d3cudzMub3JnL1NpZ25hdHVyZS8KKworRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgWE1MIEVuY3J5cHRpb24sIGdvIHRvCitodHRwOi8vd3d3LnczLm9yZy9FbmNyeXB0aW9uLworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRG93bmxvYWRzIGZvciBYTUwgU2VjdXJpdHkgdjEuNC4zIGFyZSBhdmFpbGFibGUgYXQKK2h0dHA6Ly9zYW50dWFyaW8uYXBhY2hlLm9yZy9kaXN0L2phdmEtbGlicmFyeS8KKworVGhlIHNvdXJjZSBkaXN0aWJ1dGlvbiBpcyBhdmFpbGFibGUgYXQKK2h0dHA6Ly9zYW50dWFyaW8uYXBhY2hlLm9yZy9kaXN0L2phdmEtbGlicmFyeS94bWwtc2VjdXJpdHktc3JjLTFfNF8zLnppcAoraHR0cDovL3NhbnR1YXJpby5hcGFjaGUub3JnL2Rpc3QvamF2YS1saWJyYXJ5L3htbC1zZWN1cml0eS1zcmMtMV80XzMuemlwLmFzYworCitUaGUgYmluYXJ5IGRpc3RpYnV0aW9uIGlzIGF2YWlsYWJsZSBhdAoraHR0cDovL3NhbnR1YXJpby5hcGFjaGUub3JnL2Rpc3QvamF2YS1saWJyYXJ5L3htbC1zZWN1cml0eS1iaW4tMV80XzMuemlwCitodHRwOi8vc2FudHVhcmlvLmFwYWNoZS5vcmcvZGlzdC9qYXZhLWxpYnJhcnkveG1sLXNlY3VyaXR5LWJpbi0xXzRfMy56aXAuYXNjCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgc291cmNlIGRpc3RpYnV0aW9uIGluY2x1ZGVzCisgLSBKQVZBIHNvdXJjZSBjb2RlIGZvciB0aGUgbGlicmFyeSBpdHNlbGYKKyAtIEpBVkEgdW5pdCB0ZXN0IGNvZGUgZm9yIHRoZSBsaWJyYXJ5CisgLSBKQVZBIHNhbXBsZSBjb2RlIGZvciB0aGUgbGlicmFyeQorIC0gdGVzdCB2ZWN0b3JzIGZvciB0aGUgdW5pdCB0ZXN0cworCitUaGUgc291cmNlIGRpc3RpYnV0aW9uIGRvZXMgX25vdF8gaW5jbHVkZQorIC0gSmF2YURvY3MKKyAtIHRoZSByZXF1aXJlZCAoYmluYXJ5IEpBUikgbGlicmFyaWVzLgorICAgSXQgcmVxdWlyZXMKKyAgIC0gSkRLIDEuNC4yIG9yIGFib3ZlCisgICAtIEFOVCAoMS42IG9yIGFib3ZlKSBhcyBidWlsZC9tYWtlIHRvb2wgKGh0dHA6Ly9hbnQuYXBhY2hlLm9yZykKKyAgIC0gQXBhY2hlIGNvbW1vbnMgbG9nZ2luZyAodjEuMC40IG9yIGFib3ZlIHJlY29tbWVuZGVkKToKKyAgICAgaHR0cDovL2NvbW1vbnMuYXBhY2hlLm9yZworICAgLSBBcGFjaGUgWGVyY2VzICh2Mi43LjEgb3IgYWJvdmUgcmVjZW9tbWVuZGVkKTogaHR0cDovL3hlcmNlcy5hcGFjaGUub3JnCisgICAtIEFwYWNoZSBYYWxhbiAodjIuNyBvciBhYm92ZSByZWNvbW1lbmRlZCk6IGh0dHA6Ly94YWxhbi5hcGFjaGUub3JnCisgICAtIEpVbml0IDMuNyBvciBhYm92ZQorCitDb3B5IHRoZSByZXF1aXJlZCBqYXJzIGludG8gdGhlICJsaWJzIiBkaXJlY3RvcnkuCitJZiBuZWNlc3NhcnksIG1vZGlmeSB0aGUgYW50IHByb3BlcnRpZXMgaW4gYnVpbGQueG1sIHRvIHRoZSBsb2NhdGlvbnMgb2YgCit0aGUgamFyIGZpbGVzLgorU2V0IEpBVkFfSE9NRSB0byB0aGUgSkRLIHJvb3QgZGlyZWN0b3J5LgorVG8gYnVpbGQgdGhlIGJpbmFyaWVzIGFuZCBydW4gYWxsIG9mIHRoZSB0ZXN0cywgcnVuICJhbnQgdGVzdCIuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgYmluYXJ5IGRpc3RpYnV0aW9uIGluY2x1ZGVzCisgLSBKQVZBIHNhbXBsZSBjb2RlIGZvciB0aGUgbGlicmFyeQorIC0gSkFWQSBjb2RlIGZvciB0aGUgdW5pdCB0ZXN0cworIC0gdGVzdCB2ZWN0b3JzIGZvciB0aGUgdW5pdCB0ZXN0cworIC0gR2VuZXJhdGVkIEphdmFEb2NzCisgLSBUaGUgY29tcGxldGUgbGlicmFyeSBjb21waWxlZAorIC0gQWxsIHJlcXVpcmVkIGxpYmFyaWVzIAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUXVlc3Rpb25zIGFuZCBjb21tZW50cyBhYm91dCB0aGUgc29mdHdhcmU6CittYWlsdG86c2VjdXJpdHktZGV2QHhtbC5hcGFjaGUub3JnCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvS0VZUyBiL0tFWVMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjhkMTU3NgotLS0gL2Rldi9udWxsCisrKyBiL0tFWVMKQEAgLTAsMCArMSwxNzQgQEAKKy0tLS0tQkVHSU4gUEdQIFBVQkxJQyBLRVkgQkxPQ0stLS0tLQorCittUUdpQkR4RVBDZ1JCQURlTXJWSTVHd1lLc3MrV2JoTFlFSGFEb3lWSHNLODV6d0drNXV2NGNNS2s0cXNtcnh1CitUMTVqLzlTWUhtbHA5ak5SN1pkektTb25WVjhNRStxcFduQ3J3di92S2c0V3VIRUxTOGxrOUZFNWpYdG45TURICitjRFpsbGNjbnJSTUZMSmREWEp1WXVZWFJ0QnZ0M1pFVUxVVnNSd0pBbUZkWmpyQXhzRXRGVGRTdkpRQ2cveDJYCitId0trVHV0Z1ZiUURyVjdNVUFNeFAyMEQvUmo1MThFSVI3eko4K2V2MmxXVjk5Um9aTy9sNDRndXdrbHdDM0grCit3cVVoQUo4OThFN0NRc0hNT2ExUHNjaVlpemwrWUFRQzBBUTNLOWo2NHNqN2hIRDRaTm5nV1ZPRU9PN3MzNmhsCitQVHV6TDJXT3g3Nk80OW9DVnRmeGlNMER0S1FvbFZNcU4xT2ZpSEhNRlJJajFTRnNydVZCZEVrd1lLR3ZmVldrCisvTFBpQS85TGIwZkpsY1FEZHBHRXRpam51TXUyeFRKTUFiL1hjcTZzU3Vaa2wvWWtpajY0bGs5QmRzZmNGUkJyCiswWGg3S3pxdEFETFo4WFBUSkk2WFpqK3l0YldYWGRpMkhhaHM0SEsveTd2dmVFcktpdmlZU3hGaFJsZ3BZNmxWCit1aXVJUEVOeS8rd2ZaeDNGcGRrMllEWGVKSUJONzBGV0FibWxEc3ZqM1pzblcxRVF3TFFzUTJoeWFYTjBhV0Z1CitJRWRsZFdWeUxWQnZiR3h0WVc1dUlEeG5aWFZsY25CQVlYQmhZMmhsTG05eVp6NkpBRmdFRUJFQ0FCZ0ZBanhFCitQQ2tJQ3dNSkNBY0NBUW9DR1FFRkd3TUFBQUFBQ2drUXJjMDNXQzhFaE0wT3pRQ2cyUHpzcSswOWdJc0s2cVRWCitxdWR1SkNITU55a0FuMHUrUnEyZnRKUVBYT3djVUd2RjR5eGNzRjU0aVFFY0JCQUJBZ0FHQlFJOFJEeEhBQW9KCitFRS95bHdJRTUvYVZ0QU1JQUxjdkkvQjhGaGpuUzdSUEpVMXE5b0NYZGI1amdEVnZYZ0ZKRXVEZ2hTQVR4T2puCitIcmp0cnNqMXg5UWRBWTIzbEJEeTRHS2dpd3daREF5MmhjbXIyREwyMEFxZEE2RkF5OEgxLzdDZ2w4TVVOSTJtCitRMkJqTG5qdUlsSDlSWlhoa0poVXY0RTdOcDBJYVJRTXRDelcvb3F1MkxHUkhxaXE0UjFaaUloc0hHZmVBZnJkCisyc2tKUFRzKzlTSGc0ZG5kZnZ1ZU9TMG1MYmVPenR3TjVrMU4ydUhhZkZrY0ZDRHg0dktqY243K3Fudy9ZYVlHCitnMnRzSUdrd0tyOGRoK1l4ZjJYaGVqN3ZSR2duTmYxUU1rdkxGWGlIRXR4MG84M0dsb1IyYkk4QUZZcDViYTlECit2ZU1YTms1U1VVZDVPOUFPcU1lMWY3NExNQUlGdEdDL0s2YU9DSUdKQUVZRUVCRUNBQVlGQWp4RVBGa0FDZ2tRCis5a0NKUS93R3lpM29yQUNnaUpJUm5yUVJOOEFOczZ4aUtud05kUExxNk1zQW9OM3d5ZlFWNUwxTVY3emxPNm5lCitGeGRVQkRCenVRSU5CRHhFUENrUUNBRDJRbGUzQ0g4SUYzS2l1dGFwUXZNRjZQbFRFVGxQdHZGdXVVczRJTm9CCitwMWFqRk9tUFFGWHowQWZHeTBPcGxLMzNUR1NHU2ZnTWc3MWw2UmZVb2ROUStQVlpYOXgyVWs4OVBZM2J6cG5oCitWNUpaemYyNHJuUlB4ZngydklQRlJ6Qmh6bnpKWnY4VitidjlrVjdIQWFyVFc1Nk5vS1Z5T3RRYThMOUdBRmdyCis1ZlNJL1ZoT1Nkdk5JTFNkNUpFSE5tc3piRGdOUlIwUGZJaXpISHhiTFk3Mjg4a2p3RVB3cFZzWWpZNjdWWXk0CitYVGpUTlAxOEYxZERveDBZYk40eklTeTFLdjg4NGJFcFFCZ1JqWHlFcHdweTFvYkVBeG5JQnlsNnlwVU0yWmFmCitxOUFLVUpzQ1J0TUlQV2FrWFVHZm5IeTlpVXNpR1NhNnE2SmV3MVhwTWdzN0FBSUNCLzlMTDhVejYxSlhWT3haCitDNGhZZ3lQMFNWMEdnWW9VaUttVmJVMSsvMWRraUZ2TVY3YmVESkVET0tiVlV1cmRwRUtMVHdPN3M5WVVBbXA2Cis2V3Z3dHFHa0NVN2FIRXNYTVJTd1NHb0VYcFFESFhIVHdValR0UnZvQnBkL0xRNHQrbnkxK0IrcCtQTHQvY0dKCitScXZHSEsvbjlybFRiNWp4empDeFJiaFhxZXptbkpTd0dHNWZRRDJtUnRDUTl3M3dnYXhOL2JWdnhHbkJnSk8rCitUWW81UG9tTkxhLzI0dWpUNGRQeEtmMlNGb2t1TEptZ05SelJrYUV0U1Y5N3Q3bENZTTA1Y3JPZGNXYkkyclByCitjMkZ1elRpZzlnTDRxQjlRSlJucFlJL1ZmYm5zVkFJK1FuNjZPK2RQejdUMldOd2o2Q2lob2RTZFN4TzNvbzdaCitySnNOamVPTGlRQk1CQmdSQWdBTUJRSThSRHdwQlJzTUFBQUFBQW9KRUszTk4xZ3ZCSVROUnF3QW5STG5iK25nCitCc2hvNk00aFdxa3dtZHhSTncxeEFKOUpvcjM3NEVZZmJrWWtIeGVqZm9RVWtKVG1lZz09Cis9ZlBpSAorLS0tLS1FTkQgUEdQIFBVQkxJQyBLRVkgQkxPQ0stLS0tLQorCisKK3B1YiAgMTAyNEQvQjk5MEQ0MDEgMjAwMy0wMi0xNSBCZXJpbiBMYXV0ZW5iYWNoIDxibGF1dGVuYkBhcGFjaGUub3JnPgorICAgICBLZXkgZmluZ2VycHJpbnQgPSAwM0E3IDY5MEIgRTc1QyBGOUJGIDE1RkYgIEEzNjIgNzA0MiAyRTNEIEI5OTAgRDQwMQorc2lnIDMgICAgICAgQjk5MEQ0MDEgMjAwMy0wMi0xNSAgIEJlcmluIExhdXRlbmJhY2ggPGJsYXV0ZW5iQGFwYWNoZS5vcmc+CitzaWcgICAgICAgICA2MDlDRDJDMCAyMDAzLTAyLTE1ICAgQmVyaW4gTGF1dGVuYmFjaCA8YmVyaW5Ab3plbWFpbC5jb20uYXU+CitzdWIgIDIwNDhnLzA0Mjg0RkREIDIwMDMtMDItMTUKK3NpZyAgICAgICAgIEI5OTBENDAxIDIwMDMtMDItMTUgICBCZXJpbiBMYXV0ZW5iYWNoIDxibGF1dGVuYkBhcGFjaGUub3JnPgorCisKKy0tLS0tQkVHSU4gUEdQIFBVQkxJQyBLRVkgQkxPQ0stLS0tLQorVmVyc2lvbjogR251UEcgdjEuMi4xIChHTlUvTGludXgpCisKK21RR2lCRDVPQ0JRUkJBQ3QwQ0dwS01uamF1UTVGWHdzaE1SUkErdDcwNmxmMTZBTnNYQnBkQURrUVRKWGJ5ME8KK1ZqL2M5eHp5RUdpK0gzT0RCbDZCSXFNa0daS1h3VkZmSnVzOGN0Qmt2QnMxdkNPYnpWSDZ4eEN6Vnp3Rm8rcmMKKzVtZEpiZjNFVjY1cm9BRkxHMWpiTGd3YWRFZ1p1bWo3dE5ZdVg4ZnBBWmtWcVIwRnlFNHE4TnI4UHdDZ3pjNEoKKzZaYTZ5K29uNVJ3NjFjTjZ2eW92SlpzRUFLb1N1cEJVZnM5NDVCQm5LK1F3ZmdwV1JLZXliRjRiTzI3cnRBVkgKK2ZGcUVqT2xCSU0wdFRiY0E0cTVUKzFyRktPSU9xc1lWYjUwbVZCeWJvNm40elJYT3ZabW9lNWZBSGx5TjZHREEKK3puMG96ZkNkM2Urc2tCMUZCa3hvL3g2bWlXcXYya3M1SUYxVk9ZWlJrbkdmdWRCaFVvVVpZMGRpbnRvaHhWdUEKK2VMNzFBLzR0c3g1VGRQc1p0VXA3cmZtT29qOVM3RjhBczhySjdpamZ0aWNkZzZaNTBJSktodUNzUzNWZ3dtbnoKK1ppNFFTbEdmYnZDcWwzOEtkd2hzeXgyampSM0FLMEdUZXE0aWsxanYrSG1zVy8vT25BOENERWxqVm55VktaeisKK2hWeDdzYWtuaUFYQWdnT1hTUnM4V0UyYVlaY3dUS2JVcUplUmQxckE3REVKL2cyR0ViUW1RbVZ5YVc0Z1RHRjEKK2RHVnVZbUZqYUNBOFlteGhkWFJsYm1KQVlYQmhZMmhsTG05eVp6NklWd1FURVFJQUZ3VUNQazRJRkFVTEJ3b0QKK0JBTVZBd0lERmdJQkFoZUFBQW9KRUhCQ0xqMjVrTlFCeXA4QW5BclQ2OFYyYVY4dGk1ZXBIOXdjL0ZyVktiaVMKK0FLRE16dGpRWGxrVllqc09oaDZESVlhYk4zSThtNGhHQkJBUkFnQUdCUUkrVGdrYkFBb0pFQmY5cStoZ25OTEEKK1E1QUFuMkx5eXlxL1V5M1Q4emNsc2xHUVVieSsxVmFRQUtDUEwyOHZERnAyVHJYMDdURGtYTUpxSnpJMFRMa0MKK0RRUStUZ2cyRUFnQW0zMlZBNzRqb3p5L2t6MzlwaDByYkxucEp6WXhuQjlrc1ZteEVNZ3RqN3g4K3F0aDdDSUgKK0Rqb3B4U1lDZjFqNFJGM3NIUXRseUFaYWZidWxWM21VN3hBMHZEcTRmVnNOTFJWNTFORmpVTEh4U2t0L3JBNkMKK0tialJxMnFZSWVDdGFxaXZXVXd4aktvMDZXbURxNmRDYXZEZHFmOUo4b3BWdjdRVXZYaVQvdlY2eUJ6eWdrcjAKK1QxQzlHbnk0amlJcnlVU2kxZVd4YktMSExoMXpqL3pDZ09qeURic3lLSEY1d2VmRjBQek5yYWsrSXpUd1A2Z2oKK0ZTTGwrREZqRVpzSU5EUjFsS2lBUXVjbTJ4ZnFMTHR0QUVFWGhXMjVEMy9CdUQ5MmVWWHg5YnB6Nmt3NFpCOUEKK1lrKzR0YnJyMmx5NCs5UERMQ1pqV0dEU0RBR1dobEdZendBREJRZjlIYkw5d09leCtMS0RsU0NXMVpja1J2T0sKK2pHd3Z2aHI4WVVEaW5LN0IzcFlzM3BMT1ZYeGQxNGtIcnloRThpRVduQ3J6Z0xNZ0p4UzMvcnl6dk9Pdkw1UnIKK0Y5Qjk0ZG9OdnhlVXprNUNuNHBwTWxtaEI3NEpwNlFiWGo3clZhNUxwbnBoZHJuTnhNTVJpV0NFanJKTUMxT2cKK2Rva1JXSTloQWh5QVlFcVFLR3QvVnk4bytGVnMxeU00RHhLOFgwTDZ6Nk9ucnBWcWZOQkRSczJSMWxUczBHL3UKK0xTMzBkc0JUWG41SVpBWWxsYjJWVTNvY0w0MGU0NWVtbUxUeFZTdlNSREJrY1VMWW80WnlkTlI5aE1WeTZUZlUKK1EwY1paNnRwaUwrZXhsWWI2TWVPUWI1bGJEekNuV1E1cE9XN1JDak9ldnlmNnBGVjdIVWdTV0FjSnBObC9vaEcKK0JCZ1JBZ0FHQlFJK1RnZzJBQW9KRUhCQ0xqMjVrTlFCZUEwQW9KMjV3N3lqZHVDM0JlZFc0aXpkVUNLY0RaTGUKK0FKc0VHVHF3ZjBNWVRkZWJiTVhvWmxWU3RxaVJCUT09Cis9ZTFGMworLS0tLS1FTkQgUEdQIFBVQkxJQyBLRVkgQkxPQ0stLS0tLQorLS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCitWZXJzaW9uOiBHbnVQRyB2MS4yLjYgKEdOVS9MaW51eCkKKworbVFHaUJFRzFpbE1SQkFDVVg5cFduT2ZoSVdLK2FBWlB5ZHdxQUJRUm1oQmltMExxcm1icUVjVy82QWFpdjA1SAorOCsyWTg4RU56aFNVcG9vYngvbWxrZmkrSC9zZGk4NkoyemQyNmtQZXZ5a29YbVBrUStEY2oxc2lmN0syMVJJWAorYjJRRm9QRDlsa2k2ZmZrOEgzOFh4L1VhQXo5eGV5S1pFQkJNSUNVZC9wRmNKRHdwd01hOUFzR0N4d0NnNWZCRAorOFdlTnVFcW1WOTE4ZTBVTkNDZmJ2aXNEL1I3aU4yUHJoQ3AzRVJxR2ptUk0rVGpnbWZTOENuWGluT1lMTnA1SAorbHhnamRxeTQ5N1ZMRVlvWmdGR3NHNVRZeUs5UW1XWWlRNEhkbHdrU0JRZVpjSXVocytELzE2SEZYZ1hSVFFoUQorS04zaE5Pam41dkE2bTZrRXBrS2lzNzJLdmRuMWxjV2RXSk5CVGlYZEs0TzcyMzJrMU4rOHBnbEY2NDJNM2ZOQgorV3pWU0EvOXNVNUFiblU5Y1Ezd09pdEdoSU9OTlB0NzZLanROdlMzQVl1UiszWm8wS0lhRGQxUnh2ZnpvYjJ4cgordDF1blpSVzJqZDZGWVZ6MnF0Q0hYRzA3YmJrbVJidHRCRHcwSUpJUHc5bGt2ZHlGNzFXVFpIKzZVNjMzVHhMTQorM1pUKzNUZmNPaThmU1FpV25KekFTWjJZeS9aZm5HOVl4bU1odHVpRGtBR2JjUjExVXJRa1VtRjFiQ0JDWlc1cAorZEc4Z1IyRnlZMmxoSUR4eVlYVnNRR0Z3WVdOb1pTNXZjbWMraUY0RUV4RUNBQjRGQWtHMWlsTUNHd01HQ3drSQorQndNQ0F4VUNBd01XQWdFQ0hnRUNGNEFBQ2drUXRJbXdRSHJNNit4R2x3Q2ZWbE5pNGR6NmJiUFV5RnFJWkI1RgorN3NLd2U3WUFvSjV5WjkyTHJHNzFRQnA1M1BadS9kNkY0ekd3dVFJTkJFRzFpbXdRQ0FDTWh4bm9oNTYzeG1WYQoreEI0bDBaczFad1hRNjFhTkpUNjdwKzh2dkd5ek1RMFQySFlIdDU5Wnl1V21WOFUwa0RRZTRBOEFWbTdIbkFOWgorMUx5Q2lOTS8zeExtTm9aemVrOWRPcXpCckpxdFVqTFhKU0U4MXdaSnpUc2NEZFc5SzZob1NJd25VWXh6dDBpZQorb3VwK1JtL0JXU2xTdlN4MzVYOWFGcGNGTTFJcnU2Nm52b2xOZk5nakdONG1wcDJyL1czeU9zVzZEY2FwV21wMAordDg5MXRHSFU0RTE5RHRqRm1NQzU1ZU85VnAzZ3hPcElQMk14SUNWQjhHQmt3TXQ0ZWN1b0krK3puSmNCWHBvKworYnZGNzVPYUhlUDlxVkx5N1VWMXdhbFpmTzNmTE8zR2VnSTlvTWlJNHV2YzlDWWlKcEJhM21CRE5ZcjlBeGw0egorOWFqSno5ZTNBQU1GQi85NVJLM0lvaDR1M2NFRTVqWTd5THdTREF1cUQ2R2pHSHl3cWttVDZrNVdPUUhxeTdISQorU2prNUF5ZTNkeU55bDVQT1RNUG1TWm40dTZsSWxXU2oxemJpcG1WRjZVdmxYOWVpNllLVEpvOHBEY2pTWmRiNgorMXZkZUpkMWw5dGFvS1hIUEUxdS94dk5zWmdINitRamxHYjFseHMwbS8xcWZOeXpacUtQWk5IWGlxdlZITU5INgordlRTQ3FXK09PMWFQblNFT2NTcTZOWDZYOVVuNm4vcDNXTHU1ZUQrMmVPYllMMG9DVE1mN0lkd2x6by9rWER0cAorc0NrdHdUUjRwU1BiWGVNU2FLenRwV2ZYRXo4Q0xRMllJZXI2NitiNlNicDFuK0gva1BwKzhhVFpZczhmR1plMAorbVJ2NG1ieElyMDQxWXBWNHZMcWJ0UE52d01QTlljbStESFpCaUVrRUdCRUNBQWtGQWtHMWltd0NHd3dBQ2drUQordEltd1FIck02K3dYZkFDZ3BkcjlCaFY3TTJqNXV5cGU4UjgzOWRsR3V5TUFuUkVCbk5UdEtxc3M3K1M4N255VQorS2xES2FKYkkKKz16UTRKCistLS0tLUVORCBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCisKK3B1YiAgIDEwMjREL0E3NEEzMkZDIDIwMDgtMDYtMTgKKyAgICAgIEtleSBmaW5nZXJwcmludCA9IDU4NTYgRjdEOCA5QkQzIDE2MTEgOUFBMyAgMjk1RSBDQjQ0IEM0Q0MgQTc0QSAzMkZDCit1aWQgICAgICAgICAgICAgICAgICBTZWFuIE11bGxhbiA8bXVsbGFuQGFwYWNoZS5vcmc+CitzdWIgICAyMDQ4Zy84QjVFQzFGMiAyMDA4LTA2LTE4CisKKy0tLS0tQkVHSU4gUEdQIFBVQkxJQyBLRVkgQkxPQ0stLS0tLQorVmVyc2lvbjogR251UEcgdjIuMC45IChTdW5PUykKKworbVFHaUJFaFpjZVlSQkFERmJ6T3crVmhIQ2RWYmtDSmM3cGt0VXN5WVM3bXdIQWI2S1dxOWNKak5RdzIyNnJjMQorRHNma0RoSmIzT052TEJjci9BcFppcGVwS1hhZzNSOW5uaEUvSnVYYklsQjhieTBia3FqUW4xZDU2aEJLS2JmSgorWEczckRKQVBlamNLTUFuVCs5aDcrYk1taUdSK0tmdStlSTNHTk5BODlKdHltd3MxbWlPbEZYRU55d0NnMkQyZAorcEU4MVNHdUxycUlpRmtIWk5rdytGdUVELzMybmJST0FjMHdGMGhqeE03eHR1eHg4czljMEkraVpiZmFlV1pFSQorNGJrR1BDWE9tZEozeTFuUHZkSDZ0a1pUT0d2MGNzSlV0cVc2NG5QRWV5SHcxZUdwV0NZWGZqUkRlV04wUUs4SAorSzdFMzhhWkhGRUNoYVNsN2VDOHY2azdQZStNS29NSnBQYTkvYjA2cTl4cjRqSVp5VXhEVk9icG1pcVVnWGV6QworbkdtakJBQ0FXOFVSZk5Va0dmTnR2RUx1NWd5ZzUxblJMejNxMjlNQ1UvaDNLSGFaZEgzWjVDTTRnKzZjN1pkdQorTG9JbDJWU1JhMVAxekc3YVJTdVE1NWlwdVZBemtlM0lxNlYzWHlZN2o3amZJSzRrdnZZRW4rNzlvQWUyRXRPTAorSi95YUd2TEtOMVBWS1J0YW9TNE8yMmljbi80VWMzUWtvTmVZS0pTUEluc0p2MkE1aUxRZlUyVmhiaUJOZFd4cworWVc0Z1BHMTFiR3hoYmtCaGNHRmphR1V1YjNKblBvaGdCQk1SQWdBZ0JRSklXWEhtQWhzREJnc0pDQWNEQWdRVgorQWdnREJCWUNBd0VDSGdFQ0Y0QUFDZ2tReTBURXpLZEtNdnhkMmdDZ2tWTWo1MytuT0ZnR3RBQTd2bUsxQ1o4bAorMTJzQW9NaW5wR0kwdXJ0M0d4dlI2OHVhTlZJY3R3ZlV1UUlOQkVoWmNlWVFDQURYTWdGMmwydTRqT3ZYeGwxagorcXRSV2tnL2Y0VVJnWGdLTy9xZEFkVE9NTHA0V0VDdnFqWDg1SmEvTytXRXJrd1YyOWJGSlZNMHNaampNeUV3TwordjVORlBZYWZOM0RsemtiRHVyUmZ1VXJhelAyUENPWHVob3ZHTlZmc29uMlpMaTIrTWUxRkhIV3hhMHN5TVM2ZworQmlDdGlQY1M1OGovaExPYTdFTEt5b2dGRVdmd2VPbDd1bXJCamxQSkFDVlNOeHMvT2tXQ2xsTHpEMGJNTFVXTgoraktvcm1pS3JGa3RPNlM5V0g4bmNJbnA5MlU2TUMxRnYrb3ZpajNXZlh4M2d1ZTFXVGxaQUw0T1RlZUpMRnV0Qworb3AyTURZR1o0WHFadjFQaWFWZzFqSHI2VmRsTWwveEJ2TE1jMVRsdUp4QUxvNGpMNkppYlYvNnFJdExQQlQ2Vgorb2pNYkFBTUdCLzluZkxydkxlc2hBMjFUYkZMdUN5Y2k2MUJkUCt2dytLZWtveGVwWWRFMVA1bjVpbHU1VGRidAordkJzcWE4UnQxNE8vaW9KU2pDSmpmSXJ5UUNzbnZRU2kyYS83UVFIZitRV3NRaVVNd21yd3d0aDJyTzErSzJzZQorMEsraTZ1VFd4a2dsRElJM09yNlVGcHFxR1pCYjExSUsvVVIzbVJqYkdBdGR4Tyt4dUo5UUFsNHZ2YjhpZGNVRAorbWVESWNjNHFlaEVHL1VJRXFZU3g1SzBFZEtjc0g1aVBHWVNRRmRIREdVVFpRamoyZjkrdk1HSmdrQ1U3VnRlaQordCthVU1jT2p0b0VIUFFnZzROR0xzc2NXYkp2bjIyK09jL1BzMkx5VGp3dXZFWUZ1Ry9vNHB3Rk5jMnA5WW1WVgorNGIvU1pvWlNyckkrRnJraFJtWGx2YTRGSlNGbE01VE9pRWtFR0JFQ0FBa0ZBa2haY2VZQ0d3d0FDZ2tReTBURQorektkS012eElMQUNlSmZ1Ym5EU05LUDlvWHJRNEFoenFJQWYrUXNBQW5pZmtOdms5ek5uM3BRUTZoVW1hdDdpaAoreXZYWQorPTFzeisKKy0tLS0tRU5EIFBHUCBQVUJMSUMgS0VZIEJMT0NLLS0tLS0KKworLS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCitWZXJzaW9uOiBHbnVQRyB2MS40LjcgKE1pbmdXMzIpCisKK21RR2lCRWx1SUtJUkJBRG5kcFloc2h1djlKdXFTNkIyZjVvZ093cHNFaHFkd21UUWtyV3FvQ2lwWGFQb1IycFkKK2JkVHFld2lXdlpNVUg1VUFTY3R2a3ZvVmcxYkVHS2F6S2RVdEhXR0cwcUlJa1EySk9pZ2oxbGNsTnFTR1BRU1AKK3g2cGVrRFBZY2ozbXFyNnpMdldlY2xyaHVXUGZ0NlZ4UUhMOGwvZjFEd2ZzTWY1dFYyVWdmdUNTL3dDZ3RaVUMKK3RseWNuOWw2eXdSUExpM0pmTTNDRHlVRUFNYnk4am5LUk5TeUk0eDZPZW5ZTWk3WXNKNjJVNGdYRkYwWklsNGUKK2x2SVc1czZOVlNsNU0rcmVCTGgwZml0LzBvQ3Y0b0JxTzMrS3k2STl5SGErRlkxNUlON0ljYmpFWk1Kb2NXdm0KK3BMckMyYlk1ZG9iTDFhRGpiNmlXaHc5bmUyVWNwQWhSVlZsL0F1MlJRWWJHS29NUXc2UU4rSC9acXZPUTk4Sm8KK1BjWWhBLzlMR2cyN3FsVnNGWXpNc2NCVW13SjJINkViYXpLcjB2VmdGd0hCRVdpSDdwUjFxeDF1aXR5Rk9WTUIKK3V0SmYxMGJTR2FBaUtLelBmdlN4NU1MWjkvZUZ2bVFycUZRK3o4QkEzS2xaV2RZbFg0aHBPVlZSOGJGYTh1bjYKK2NraHR0ZkE1dEpNSWt4K0JLMUR2eFdMQ3o0eW1TSkhuVW1pTHJUVHB4cWxxbEpNTTNMUXBRMjlzYlNCUElHaEYKK2FXZGxZWEowWVdsbmFDQThZMjlvWldsblpXRkFZWEJoWTJobExtOXlaejZJWUFRVEVRSUFJQVVDU1c0Z29nSWIKK0F3WUxDUWdIQXdJRUZRSUlBd1FXQWdNQkFoNEJBaGVBQUFvSkVNK1o5OHQ5dGR3dTZnY0FvSko5YmgvVWJ3TnkKK3duZFZGd0VCVXYwUzFoaEJBS0NYRUdOV0VISldKVVcrS0NvZzRiSWRGcWtXYmJrQkRRUkpiaUNpQVFnQXE5UjQKKzh6c2ZpWC9GalEwOUVrdzNqRFlCclpoNmhYd21NV0RFRlBvajVvcElMWmp5dlhEbnFYRkRLdnM0VUpiRFJzTXcKK2sybUNnemJJbWVoSzNLMVVYZUZaS0dtTnoyT3p1RjZWTm1GaGZWU1JXaTkxZjBSajRlVTZ6N3Q5UDRLL1RYaGUKKzVWWWJBc0tXbVh6UUx6WFNjT3YyK1lMbFgzYmtqcUsvUjFad1E3bFEwVklUOTBFNWttOUVYWFM4WWo2L05GeEUKK1pQU2QxeVphSmROdkEvaWxZVk16U0RZOGFLL2dMZEQ3RzlTdDF4anhtNVJmdnUrZVFDeXlQRko3TlZqd1pSVHAKK3lPMHYrL1VZZkRFeklHNjFodVVTSUpoUHBaSUlzY1hLU1JDTmNGNS9sbUVHajZIZ1dFL0ZCMlRtbCtOdXp2cG4KK1lhR3ZINEZlaHNzVGRaNTcvUUFSQVFBQmlRRm9CQmdSQWdBSkJRSkpiaUNpQWhzdUFTa0pFTStaOTh0OXRkd3UKK3dGMGdCQmtCQWdBR0JRSkpiaUNpQUFvSkVBRldHS3d0a05GY3JTWUgrd1J4STkrREppN1czejNWc0pxWXl5emkKK0NGcGNxYVhiNXF1M0FnSjVhUG9PUWV6QmJuNzdURnN4TWJtVG5HQjlnN3g4aDhHNGRpM2ZlMWloU2Z1UUVFZ1MKK1FMMDhsb3cwdnNlYmxldGN0WkwvSmh0OWpjZE9yelRSV3FYQXJyajV2RmpSVHFSUm1ZY2NBdlpmcXZWVC9sN3QKK2dMd245WEt4eU4xVlFIVFd3U3hheEtacjRRbENHOXAzWWhzdjJzdUJvWTdrSVVHRTFoSmlVd0JiM3hvZ2NNeU8KK1J1eHkzSUJGQU16ZlFGb3hFcEVBV09INENnU2h3QmtoVzlST2RwVHo0K1BTUkpQVUhrRldORzVtL3ZtaG1qajcKKzRNVW1QRzBvY0ZMNEUwV3BpRTNzaUM0THV5UWhNVlNSVzJaQnUvRE5iV09Bd0RNc1pnd3Ywcmg2TjgzcTR5UjcKK0ZnQ2ZTRHNnRW01UUc0UXNXWmQ2V0tLZFNHZUVaNFVBbmpUMVNqTVZSRFBCNSs2Yk43dzNEUEdLeWMxLworPWZWd3AKKy0tLS0tRU5EIFBHUCBQVUJMSUMgS0VZIEJMT0NLLS0tLQpkaWZmIC0tZ2l0IGEvTElDRU5TRSBiL0xJQ0VOU0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY0NTY5NQotLS0gL2Rldi9udWxsCisrKyBiL0xJQ0VOU0UKQEAgLTAsMCArMSwyMDIgQEAKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBhY2hlIExpY2Vuc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMi4wLCBKYW51YXJ5IDIwMDQKKyAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy8KKworICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIFVTRSwgUkVQUk9EVUNUSU9OLCBBTkQgRElTVFJJQlVUSU9OCisKKyAgIDEuIERlZmluaXRpb25zLgorCisgICAgICAiTGljZW5zZSIgc2hhbGwgbWVhbiB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLAorICAgICAgYW5kIGRpc3RyaWJ1dGlvbiBhcyBkZWZpbmVkIGJ5IFNlY3Rpb25zIDEgdGhyb3VnaCA5IG9mIHRoaXMgZG9jdW1lbnQuCisKKyAgICAgICJMaWNlbnNvciIgc2hhbGwgbWVhbiB0aGUgY29weXJpZ2h0IG93bmVyIG9yIGVudGl0eSBhdXRob3JpemVkIGJ5CisgICAgICB0aGUgY29weXJpZ2h0IG93bmVyIHRoYXQgaXMgZ3JhbnRpbmcgdGhlIExpY2Vuc2UuCisKKyAgICAgICJMZWdhbCBFbnRpdHkiIHNoYWxsIG1lYW4gdGhlIHVuaW9uIG9mIHRoZSBhY3RpbmcgZW50aXR5IGFuZCBhbGwKKyAgICAgIG90aGVyIGVudGl0aWVzIHRoYXQgY29udHJvbCwgYXJlIGNvbnRyb2xsZWQgYnksIG9yIGFyZSB1bmRlciBjb21tb24KKyAgICAgIGNvbnRyb2wgd2l0aCB0aGF0IGVudGl0eS4gRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIGRlZmluaXRpb24sCisgICAgICAiY29udHJvbCIgbWVhbnMgKGkpIHRoZSBwb3dlciwgZGlyZWN0IG9yIGluZGlyZWN0LCB0byBjYXVzZSB0aGUKKyAgICAgIGRpcmVjdGlvbiBvciBtYW5hZ2VtZW50IG9mIHN1Y2ggZW50aXR5LCB3aGV0aGVyIGJ5IGNvbnRyYWN0IG9yCisgICAgICBvdGhlcndpc2UsIG9yIChpaSkgb3duZXJzaGlwIG9mIGZpZnR5IHBlcmNlbnQgKDUwJSkgb3IgbW9yZSBvZiB0aGUKKyAgICAgIG91dHN0YW5kaW5nIHNoYXJlcywgb3IgKGlpaSkgYmVuZWZpY2lhbCBvd25lcnNoaXAgb2Ygc3VjaCBlbnRpdHkuCisKKyAgICAgICJZb3UiIChvciAiWW91ciIpIHNoYWxsIG1lYW4gYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkKKyAgICAgIGV4ZXJjaXNpbmcgcGVybWlzc2lvbnMgZ3JhbnRlZCBieSB0aGlzIExpY2Vuc2UuCisKKyAgICAgICJTb3VyY2UiIGZvcm0gc2hhbGwgbWVhbiB0aGUgcHJlZmVycmVkIGZvcm0gZm9yIG1ha2luZyBtb2RpZmljYXRpb25zLAorICAgICAgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBzb2Z0d2FyZSBzb3VyY2UgY29kZSwgZG9jdW1lbnRhdGlvbgorICAgICAgc291cmNlLCBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4KKworICAgICAgIk9iamVjdCIgZm9ybSBzaGFsbCBtZWFuIGFueSBmb3JtIHJlc3VsdGluZyBmcm9tIG1lY2hhbmljYWwKKyAgICAgIHRyYW5zZm9ybWF0aW9uIG9yIHRyYW5zbGF0aW9uIG9mIGEgU291cmNlIGZvcm0sIGluY2x1ZGluZyBidXQKKyAgICAgIG5vdCBsaW1pdGVkIHRvIGNvbXBpbGVkIG9iamVjdCBjb2RlLCBnZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiwKKyAgICAgIGFuZCBjb252ZXJzaW9ucyB0byBvdGhlciBtZWRpYSB0eXBlcy4KKworICAgICAgIldvcmsiIHNoYWxsIG1lYW4gdGhlIHdvcmsgb2YgYXV0aG9yc2hpcCwgd2hldGhlciBpbiBTb3VyY2Ugb3IKKyAgICAgIE9iamVjdCBmb3JtLCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgTGljZW5zZSwgYXMgaW5kaWNhdGVkIGJ5IGEKKyAgICAgIGNvcHlyaWdodCBub3RpY2UgdGhhdCBpcyBpbmNsdWRlZCBpbiBvciBhdHRhY2hlZCB0byB0aGUgd29yaworICAgICAgKGFuIGV4YW1wbGUgaXMgcHJvdmlkZWQgaW4gdGhlIEFwcGVuZGl4IGJlbG93KS4KKworICAgICAgIkRlcml2YXRpdmUgV29ya3MiIHNoYWxsIG1lYW4gYW55IHdvcmssIHdoZXRoZXIgaW4gU291cmNlIG9yIE9iamVjdAorICAgICAgZm9ybSwgdGhhdCBpcyBiYXNlZCBvbiAob3IgZGVyaXZlZCBmcm9tKSB0aGUgV29yayBhbmQgZm9yIHdoaWNoIHRoZQorICAgICAgZWRpdG9yaWFsIHJldmlzaW9ucywgYW5ub3RhdGlvbnMsIGVsYWJvcmF0aW9ucywgb3Igb3RoZXIgbW9kaWZpY2F0aW9ucworICAgICAgcmVwcmVzZW50LCBhcyBhIHdob2xlLCBhbiBvcmlnaW5hbCB3b3JrIG9mIGF1dGhvcnNoaXAuIEZvciB0aGUgcHVycG9zZXMKKyAgICAgIG9mIHRoaXMgTGljZW5zZSwgRGVyaXZhdGl2ZSBXb3JrcyBzaGFsbCBub3QgaW5jbHVkZSB3b3JrcyB0aGF0IHJlbWFpbgorICAgICAgc2VwYXJhYmxlIGZyb20sIG9yIG1lcmVseSBsaW5rIChvciBiaW5kIGJ5IG5hbWUpIHRvIHRoZSBpbnRlcmZhY2VzIG9mLAorICAgICAgdGhlIFdvcmsgYW5kIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZi4KKworICAgICAgIkNvbnRyaWJ1dGlvbiIgc2hhbGwgbWVhbiBhbnkgd29yayBvZiBhdXRob3JzaGlwLCBpbmNsdWRpbmcKKyAgICAgIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoZSBXb3JrIGFuZCBhbnkgbW9kaWZpY2F0aW9ucyBvciBhZGRpdGlvbnMKKyAgICAgIHRvIHRoYXQgV29yayBvciBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YsIHRoYXQgaXMgaW50ZW50aW9uYWxseQorICAgICAgc3VibWl0dGVkIHRvIExpY2Vuc29yIGZvciBpbmNsdXNpb24gaW4gdGhlIFdvcmsgYnkgdGhlIGNvcHlyaWdodCBvd25lcgorICAgICAgb3IgYnkgYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkgYXV0aG9yaXplZCB0byBzdWJtaXQgb24gYmVoYWxmIG9mCisgICAgICB0aGUgY29weXJpZ2h0IG93bmVyLiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwgInN1Ym1pdHRlZCIKKyAgICAgIG1lYW5zIGFueSBmb3JtIG9mIGVsZWN0cm9uaWMsIHZlcmJhbCwgb3Igd3JpdHRlbiBjb21tdW5pY2F0aW9uIHNlbnQKKyAgICAgIHRvIHRoZSBMaWNlbnNvciBvciBpdHMgcmVwcmVzZW50YXRpdmVzLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvCisgICAgICBjb21tdW5pY2F0aW9uIG9uIGVsZWN0cm9uaWMgbWFpbGluZyBsaXN0cywgc291cmNlIGNvZGUgY29udHJvbCBzeXN0ZW1zLAorICAgICAgYW5kIGlzc3VlIHRyYWNraW5nIHN5c3RlbXMgdGhhdCBhcmUgbWFuYWdlZCBieSwgb3Igb24gYmVoYWxmIG9mLCB0aGUKKyAgICAgIExpY2Vuc29yIGZvciB0aGUgcHVycG9zZSBvZiBkaXNjdXNzaW5nIGFuZCBpbXByb3ZpbmcgdGhlIFdvcmssIGJ1dAorICAgICAgZXhjbHVkaW5nIGNvbW11bmljYXRpb24gdGhhdCBpcyBjb25zcGljdW91c2x5IG1hcmtlZCBvciBvdGhlcndpc2UKKyAgICAgIGRlc2lnbmF0ZWQgaW4gd3JpdGluZyBieSB0aGUgY29weXJpZ2h0IG93bmVyIGFzICJOb3QgYSBDb250cmlidXRpb24uIgorCisgICAgICAiQ29udHJpYnV0b3IiIHNoYWxsIG1lYW4gTGljZW5zb3IgYW5kIGFueSBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQorICAgICAgb24gYmVoYWxmIG9mIHdob20gYSBDb250cmlidXRpb24gaGFzIGJlZW4gcmVjZWl2ZWQgYnkgTGljZW5zb3IgYW5kCisgICAgICBzdWJzZXF1ZW50bHkgaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yay4KKworICAgMi4gR3JhbnQgb2YgQ29weXJpZ2h0IExpY2Vuc2UuIFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCisgICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZQorICAgICAgY29weXJpZ2h0IGxpY2Vuc2UgdG8gcmVwcm9kdWNlLCBwcmVwYXJlIERlcml2YXRpdmUgV29ya3Mgb2YsCisgICAgICBwdWJsaWNseSBkaXNwbGF5LCBwdWJsaWNseSBwZXJmb3JtLCBzdWJsaWNlbnNlLCBhbmQgZGlzdHJpYnV0ZSB0aGUKKyAgICAgIFdvcmsgYW5kIHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBpbiBTb3VyY2Ugb3IgT2JqZWN0IGZvcm0uCisKKyAgIDMuIEdyYW50IG9mIFBhdGVudCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgorICAgICAgdGhpcyBMaWNlbnNlLCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMgdG8gWW91IGEgcGVycGV0dWFsLAorICAgICAgd29ybGR3aWRlLCBub24tZXhjbHVzaXZlLCBuby1jaGFyZ2UsIHJveWFsdHktZnJlZSwgaXJyZXZvY2FibGUKKyAgICAgIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50IGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLAorICAgICAgdXNlLCBvZmZlciB0byBzZWxsLCBzZWxsLCBpbXBvcnQsIGFuZCBvdGhlcndpc2UgdHJhbnNmZXIgdGhlIFdvcmssCisgICAgICB3aGVyZSBzdWNoIGxpY2Vuc2UgYXBwbGllcyBvbmx5IHRvIHRob3NlIHBhdGVudCBjbGFpbXMgbGljZW5zYWJsZQorICAgICAgYnkgc3VjaCBDb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlaXIKKyAgICAgIENvbnRyaWJ1dGlvbihzKSBhbG9uZSBvciBieSBjb21iaW5hdGlvbiBvZiB0aGVpciBDb250cmlidXRpb24ocykKKyAgICAgIHdpdGggdGhlIFdvcmsgdG8gd2hpY2ggc3VjaCBDb250cmlidXRpb24ocykgd2FzIHN1Ym1pdHRlZC4gSWYgWW91CisgICAgICBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYQorICAgICAgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkgYWxsZWdpbmcgdGhhdCB0aGUgV29yaworICAgICAgb3IgYSBDb250cmlidXRpb24gaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yayBjb25zdGl0dXRlcyBkaXJlY3QKKyAgICAgIG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMKKyAgICAgIGdyYW50ZWQgdG8gWW91IHVuZGVyIHRoaXMgTGljZW5zZSBmb3IgdGhhdCBXb3JrIHNoYWxsIHRlcm1pbmF0ZQorICAgICAgYXMgb2YgdGhlIGRhdGUgc3VjaCBsaXRpZ2F0aW9uIGlzIGZpbGVkLgorCisgICA0LiBSZWRpc3RyaWJ1dGlvbi4gWW91IG1heSByZXByb2R1Y2UgYW5kIGRpc3RyaWJ1dGUgY29waWVzIG9mIHRoZQorICAgICAgV29yayBvciBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YgaW4gYW55IG1lZGl1bSwgd2l0aCBvciB3aXRob3V0CisgICAgICBtb2RpZmljYXRpb25zLCBhbmQgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLCBwcm92aWRlZCB0aGF0IFlvdQorICAgICAgbWVldCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKyAgICAgIChhKSBZb3UgbXVzdCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBXb3JrIG9yCisgICAgICAgICAgRGVyaXZhdGl2ZSBXb3JrcyBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlOyBhbmQKKworICAgICAgKGIpIFlvdSBtdXN0IGNhdXNlIGFueSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcworICAgICAgICAgIHN0YXRpbmcgdGhhdCBZb3UgY2hhbmdlZCB0aGUgZmlsZXM7IGFuZAorCisgICAgICAoYykgWW91IG11c3QgcmV0YWluLCBpbiB0aGUgU291cmNlIGZvcm0gb2YgYW55IERlcml2YXRpdmUgV29ya3MKKyAgICAgICAgICB0aGF0IFlvdSBkaXN0cmlidXRlLCBhbGwgY29weXJpZ2h0LCBwYXRlbnQsIHRyYWRlbWFyaywgYW5kCisgICAgICAgICAgYXR0cmlidXRpb24gbm90aWNlcyBmcm9tIHRoZSBTb3VyY2UgZm9ybSBvZiB0aGUgV29yaywKKyAgICAgICAgICBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdCBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mCisgICAgICAgICAgdGhlIERlcml2YXRpdmUgV29ya3M7IGFuZAorCisgICAgICAoZCkgSWYgdGhlIFdvcmsgaW5jbHVkZXMgYSAiTk9USUNFIiB0ZXh0IGZpbGUgYXMgcGFydCBvZiBpdHMKKyAgICAgICAgICBkaXN0cmlidXRpb24sIHRoZW4gYW55IERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSBtdXN0CisgICAgICAgICAgaW5jbHVkZSBhIHJlYWRhYmxlIGNvcHkgb2YgdGhlIGF0dHJpYnV0aW9uIG5vdGljZXMgY29udGFpbmVkCisgICAgICAgICAgd2l0aGluIHN1Y2ggTk9USUNFIGZpbGUsIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90CisgICAgICAgICAgcGVydGFpbiB0byBhbnkgcGFydCBvZiB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaW4gYXQgbGVhc3Qgb25lCisgICAgICAgICAgb2YgdGhlIGZvbGxvd2luZyBwbGFjZXM6IHdpdGhpbiBhIE5PVElDRSB0ZXh0IGZpbGUgZGlzdHJpYnV0ZWQKKyAgICAgICAgICBhcyBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyB3aXRoaW4gdGhlIFNvdXJjZSBmb3JtIG9yCisgICAgICAgICAgZG9jdW1lbnRhdGlvbiwgaWYgcHJvdmlkZWQgYWxvbmcgd2l0aCB0aGUgRGVyaXZhdGl2ZSBXb3Jrczsgb3IsCisgICAgICAgICAgd2l0aGluIGEgZGlzcGxheSBnZW5lcmF0ZWQgYnkgdGhlIERlcml2YXRpdmUgV29ya3MsIGlmIGFuZAorICAgICAgICAgIHdoZXJldmVyIHN1Y2ggdGhpcmQtcGFydHkgbm90aWNlcyBub3JtYWxseSBhcHBlYXIuIFRoZSBjb250ZW50cworICAgICAgICAgIG9mIHRoZSBOT1RJQ0UgZmlsZSBhcmUgZm9yIGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seSBhbmQKKyAgICAgICAgICBkbyBub3QgbW9kaWZ5IHRoZSBMaWNlbnNlLiBZb3UgbWF5IGFkZCBZb3VyIG93biBhdHRyaWJ1dGlvbgorICAgICAgICAgIG5vdGljZXMgd2l0aGluIERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxvbmdzaWRlCisgICAgICAgICAgb3IgYXMgYW4gYWRkZW5kdW0gdG8gdGhlIE5PVElDRSB0ZXh0IGZyb20gdGhlIFdvcmssIHByb3ZpZGVkCisgICAgICAgICAgdGhhdCBzdWNoIGFkZGl0aW9uYWwgYXR0cmlidXRpb24gbm90aWNlcyBjYW5ub3QgYmUgY29uc3RydWVkCisgICAgICAgICAgYXMgbW9kaWZ5aW5nIHRoZSBMaWNlbnNlLgorCisgICAgICBZb3UgbWF5IGFkZCBZb3VyIG93biBjb3B5cmlnaHQgc3RhdGVtZW50IHRvIFlvdXIgbW9kaWZpY2F0aW9ucyBhbmQKKyAgICAgIG1heSBwcm92aWRlIGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50IGxpY2Vuc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMKKyAgICAgIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwgb3IgZGlzdHJpYnV0aW9uIG9mIFlvdXIgbW9kaWZpY2F0aW9ucywgb3IKKyAgICAgIGZvciBhbnkgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGFzIGEgd2hvbGUsIHByb3ZpZGVkIFlvdXIgdXNlLAorICAgICAgcmVwcm9kdWN0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoZSBXb3JrIG90aGVyd2lzZSBjb21wbGllcyB3aXRoCisgICAgICB0aGUgY29uZGl0aW9ucyBzdGF0ZWQgaW4gdGhpcyBMaWNlbnNlLgorCisgICA1LiBTdWJtaXNzaW9uIG9mIENvbnRyaWJ1dGlvbnMuIFVubGVzcyBZb3UgZXhwbGljaXRseSBzdGF0ZSBvdGhlcndpc2UsCisgICAgICBhbnkgQ29udHJpYnV0aW9uIGludGVudGlvbmFsbHkgc3VibWl0dGVkIGZvciBpbmNsdXNpb24gaW4gdGhlIFdvcmsKKyAgICAgIGJ5IFlvdSB0byB0aGUgTGljZW5zb3Igc2hhbGwgYmUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAgICB0aGlzIExpY2Vuc2UsIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgdGVybXMgb3IgY29uZGl0aW9ucy4KKyAgICAgIE5vdHdpdGhzdGFuZGluZyB0aGUgYWJvdmUsIG5vdGhpbmcgaGVyZWluIHNoYWxsIHN1cGVyc2VkZSBvciBtb2RpZnkKKyAgICAgIHRoZSB0ZXJtcyBvZiBhbnkgc2VwYXJhdGUgbGljZW5zZSBhZ3JlZW1lbnQgeW91IG1heSBoYXZlIGV4ZWN1dGVkCisgICAgICB3aXRoIExpY2Vuc29yIHJlZ2FyZGluZyBzdWNoIENvbnRyaWJ1dGlvbnMuCisKKyAgIDYuIFRyYWRlbWFya3MuIFRoaXMgTGljZW5zZSBkb2VzIG5vdCBncmFudCBwZXJtaXNzaW9uIHRvIHVzZSB0aGUgdHJhZGUKKyAgICAgIG5hbWVzLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzLCBvciBwcm9kdWN0IG5hbWVzIG9mIHRoZSBMaWNlbnNvciwKKyAgICAgIGV4Y2VwdCBhcyByZXF1aXJlZCBmb3IgcmVhc29uYWJsZSBhbmQgY3VzdG9tYXJ5IHVzZSBpbiBkZXNjcmliaW5nIHRoZQorICAgICAgb3JpZ2luIG9mIHRoZSBXb3JrIGFuZCByZXByb2R1Y2luZyB0aGUgY29udGVudCBvZiB0aGUgTk9USUNFIGZpbGUuCisKKyAgIDcuIERpc2NsYWltZXIgb2YgV2FycmFudHkuIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvcgorICAgICAgYWdyZWVkIHRvIGluIHdyaXRpbmcsIExpY2Vuc29yIHByb3ZpZGVzIHRoZSBXb3JrIChhbmQgZWFjaAorICAgICAgQ29udHJpYnV0b3IgcHJvdmlkZXMgaXRzIENvbnRyaWJ1dGlvbnMpIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKKyAgICAgIGltcGxpZWQsIGluY2x1ZGluZywgd2l0aG91dCBsaW1pdGF0aW9uLCBhbnkgd2FycmFudGllcyBvciBjb25kaXRpb25zCisgICAgICBvZiBUSVRMRSwgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZLCBvciBGSVRORVNTIEZPUiBBCisgICAgICBQQVJUSUNVTEFSIFBVUlBPU0UuIFlvdSBhcmUgc29sZWx5IHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUKKyAgICAgIGFwcHJvcHJpYXRlbmVzcyBvZiB1c2luZyBvciByZWRpc3RyaWJ1dGluZyB0aGUgV29yayBhbmQgYXNzdW1lIGFueQorICAgICAgcmlza3MgYXNzb2NpYXRlZCB3aXRoIFlvdXIgZXhlcmNpc2Ugb2YgcGVybWlzc2lvbnMgdW5kZXIgdGhpcyBMaWNlbnNlLgorCisgICA4LiBMaW1pdGF0aW9uIG9mIExpYWJpbGl0eS4gSW4gbm8gZXZlbnQgYW5kIHVuZGVyIG5vIGxlZ2FsIHRoZW9yeSwKKyAgICAgIHdoZXRoZXIgaW4gdG9ydCAoaW5jbHVkaW5nIG5lZ2xpZ2VuY2UpLCBjb250cmFjdCwgb3Igb3RoZXJ3aXNlLAorICAgICAgdW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IChzdWNoIGFzIGRlbGliZXJhdGUgYW5kIGdyb3NzbHkKKyAgICAgIG5lZ2xpZ2VudCBhY3RzKSBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc2hhbGwgYW55IENvbnRyaWJ1dG9yIGJlCisgICAgICBsaWFibGUgdG8gWW91IGZvciBkYW1hZ2VzLCBpbmNsdWRpbmcgYW55IGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNpYWwsCisgICAgICBpbmNpZGVudGFsLCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb2YgYW55IGNoYXJhY3RlciBhcmlzaW5nIGFzIGEKKyAgICAgIHJlc3VsdCBvZiB0aGlzIExpY2Vuc2Ugb3Igb3V0IG9mIHRoZSB1c2Ugb3IgaW5hYmlsaXR5IHRvIHVzZSB0aGUKKyAgICAgIFdvcmsgKGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gZGFtYWdlcyBmb3IgbG9zcyBvZiBnb29kd2lsbCwKKyAgICAgIHdvcmsgc3RvcHBhZ2UsIGNvbXB1dGVyIGZhaWx1cmUgb3IgbWFsZnVuY3Rpb24sIG9yIGFueSBhbmQgYWxsCisgICAgICBvdGhlciBjb21tZXJjaWFsIGRhbWFnZXMgb3IgbG9zc2VzKSwgZXZlbiBpZiBzdWNoIENvbnRyaWJ1dG9yCisgICAgICBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiBzdWNoIGRhbWFnZXMuCisKKyAgIDkuIEFjY2VwdGluZyBXYXJyYW50eSBvciBBZGRpdGlvbmFsIExpYWJpbGl0eS4gV2hpbGUgcmVkaXN0cmlidXRpbmcKKyAgICAgIHRoZSBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgWW91IG1heSBjaG9vc2UgdG8gb2ZmZXIsCisgICAgICBhbmQgY2hhcmdlIGEgZmVlIGZvciwgYWNjZXB0YW5jZSBvZiBzdXBwb3J0LCB3YXJyYW50eSwgaW5kZW1uaXR5LAorICAgICAgb3Igb3RoZXIgbGlhYmlsaXR5IG9ibGlnYXRpb25zIGFuZC9vciByaWdodHMgY29uc2lzdGVudCB3aXRoIHRoaXMKKyAgICAgIExpY2Vuc2UuIEhvd2V2ZXIsIGluIGFjY2VwdGluZyBzdWNoIG9ibGlnYXRpb25zLCBZb3UgbWF5IGFjdCBvbmx5CisgICAgICBvbiBZb3VyIG93biBiZWhhbGYgYW5kIG9uIFlvdXIgc29sZSByZXNwb25zaWJpbGl0eSwgbm90IG9uIGJlaGFsZgorICAgICAgb2YgYW55IG90aGVyIENvbnRyaWJ1dG9yLCBhbmQgb25seSBpZiBZb3UgYWdyZWUgdG8gaW5kZW1uaWZ5LAorICAgICAgZGVmZW5kLCBhbmQgaG9sZCBlYWNoIENvbnRyaWJ1dG9yIGhhcm1sZXNzIGZvciBhbnkgbGlhYmlsaXR5CisgICAgICBpbmN1cnJlZCBieSwgb3IgY2xhaW1zIGFzc2VydGVkIGFnYWluc3QsIHN1Y2ggQ29udHJpYnV0b3IgYnkgcmVhc29uCisgICAgICBvZiB5b3VyIGFjY2VwdGluZyBhbnkgc3VjaCB3YXJyYW50eSBvciBhZGRpdGlvbmFsIGxpYWJpbGl0eS4KKworICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCisKKyAgIEFQUEVORElYOiBIb3cgdG8gYXBwbHkgdGhlIEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yay4KKworICAgICAgVG8gYXBwbHkgdGhlIEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yaywgYXR0YWNoIHRoZSBmb2xsb3dpbmcKKyAgICAgIGJvaWxlcnBsYXRlIG5vdGljZSwgd2l0aCB0aGUgZmllbGRzIGVuY2xvc2VkIGJ5IGJyYWNrZXRzICJbXSIKKyAgICAgIHJlcGxhY2VkIHdpdGggeW91ciBvd24gaWRlbnRpZnlpbmcgaW5mb3JtYXRpb24uIChEb24ndCBpbmNsdWRlCisgICAgICB0aGUgYnJhY2tldHMhKSAgVGhlIHRleHQgc2hvdWxkIGJlIGVuY2xvc2VkIGluIHRoZSBhcHByb3ByaWF0ZQorICAgICAgY29tbWVudCBzeW50YXggZm9yIHRoZSBmaWxlIGZvcm1hdC4gV2UgYWxzbyByZWNvbW1lbmQgdGhhdCBhCisgICAgICBmaWxlIG9yIGNsYXNzIG5hbWUgYW5kIGRlc2NyaXB0aW9uIG9mIHB1cnBvc2UgYmUgaW5jbHVkZWQgb24gdGhlCisgICAgICBzYW1lICJwcmludGVkIHBhZ2UiIGFzIHRoZSBjb3B5cmlnaHQgbm90aWNlIGZvciBlYXNpZXIKKyAgICAgIGlkZW50aWZpY2F0aW9uIHdpdGhpbiB0aGlyZC1wYXJ0eSBhcmNoaXZlcy4KKworICAgQ29weXJpZ2h0IFt5eXl5XSBbbmFtZSBvZiBjb3B5cmlnaHQgb3duZXJdCisKKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCmRpZmYgLS1naXQgYS9OT1RJQ0UgYi9OT1RJQ0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJlYmRlNQotLS0gL2Rldi9udWxsCisrKyBiL05PVElDRQpAQCAtMCwwICsxLDkgQEAKK1RoaXMgcHJvZHVjdCBjb250YWlucyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkKK1RoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoaHR0cDovL3d3dy5hcGFjaGUub3JnLykuCisKK0l0IHdhcyBvcmlnaW5hbGx5IGJhc2VkIG9uIHNvZnR3YXJlIGNvcHlyaWdodCAoYykgMjAwMSwgSW5zdGl0dXRlIGZvcgorRGF0YSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCA8aHR0cDovL3d3dy5udWUuZXQtaW5mLnVuaS1zaWVnZW4uZGUvPi4KKworVGhlIGRldmVsb3BtZW50IG9mIHRoaXMgc29mdHdhcmUgd2FzIHBhcnRseSBmdW5kZWQgYnkgdGhlIEV1cm9wZWFuIAorQ29tbWlzc2lvbiBpbiB0aGUgPFdlYlNpZz4gcHJvamVjdCBpbiB0aGUgSVNJUyBQcm9ncmFtbWUuIAorCmRpZmYgLS1naXQgYS9SZWFkbWUuaHRtbCBiL1JlYWRtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0ZDQyYWIKLS0tIC9kZXYvbnVsbAorKysgYi9SZWFkbWUuaHRtbApAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiIKKyAgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAvc3RyaWN0LmR0ZCI+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iUmVmcmVzaCIgY29udGVudD0iMDsgVVJMPWRvYy9pbmRleC5odG1sIj4KKzx0aXRsZT48L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+CitUaGlzIGRvY3VtZW50IHdpbGwgcmVkaXJlY3QgeW91IHRvIHRoZSByZWFsIGRvY3VtZW50YXRpb24gd2hpY2ggc3RhcnRzIGF0IAorZG9jL2luZGV4Lmh0bWwuCis8cD4KK0lmIHlvdXIgYnJvd3NlciBkb2Vzbid0IHN1cHBvcnQgcmVkaXJlY3RzLCBvciB5b3UgYXJlIGxvb2tpbmcgYXQgdGhpcyBmaWxlIAorZnJvbSB0aGUgZG93bmxvYWQgcGFja2FnZSwgeW91IHdpbGwgbmVlZCB0byBnbyB0byBkb2MvaW5kZXguaHRtbCBtYW51YWxseS4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1JlbGVhc2VQcm9jZXNzLnR4dCBiL1JlbGVhc2VQcm9jZXNzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjQ5YzVhCi0tLSAvZGV2L251bGwKKysrIGIvUmVsZWFzZVByb2Nlc3MudHh0CkBAIC0wLDAgKzEsMTg4IEBACisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZSBJbnN0cnVjdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQkJCQkJCVYwLjFEcmFmdAorCisKK1RoaXMgZG9jdW1lbnQgcHJvdmlkZXMgYW4gb3V0bGluZSBvZiBob3cgdG8gcGVyZm9ybSBhIHJlbGVhc2UgZm9yIHRoZSBDIG9yIEphdmEKK1hNTC1TZWN1cml0eSBsaWJyYXJpZXMuICAoSG9zdGVkIGF0IGh0dHA6Ly94bWwuYXBhY2hlLm9yZy94bWwtc2VjdXJpdHkuKQorCitEb2N1bWVudCBBdXRob3JzIDogCisgICBCZXJpbiBMYXV0ZW5iYWNoCisKK05PVEU6IEJhc2VkIG9uIFJlbGVhc2VJbnN0cnVjdGlvbnMudHh0IGZyb20gdGhlIEFudCBDVlMKKworQW5ub3VuY2UgUmVsZWFzZSBQbGFuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUHJvcG9zZSBhIHJlbGVhc2UgcGxhbiBmb3Igdm90ZS4gIFRoaXMgc2hvdWxkIHNldCBvdXQgdGhlIHRpbWV0YWJsZSBmb3IKK3RoZSByZWxlYXNlIHVuZGVyIGlkZWFsIGNpcmN1bXN0YW5jZXMuICBUaGUgbGV2ZWwgb2YgYnVncyByZXBvcnRlZCAKK2NhbiBkZWxheSB0aGluZ3MuIEdlbmVyYWxseSwgZ2l2ZSBhIGZldyB3ZWVrcyB0byAiY2xvc2UiIHRoZSBzb3VyY2UgdHJlZSAKK3RvIGZ1cnRoZXIgY2hhbmdlcyBzbyBwZW9wbGUgY2FuIGZpbmFsaXNlIGNvbnRyaWJ1dGlvbnMsIGV0Yy4gQXQgdGhpcyB0aW1lLAordGhlIGZpcnN0IGJldGEgd2lsbCBiZSBjdXQgYW5kIHRoZXJlIHdpbGwgYmUgdGhlbiBhIHBlcmlvZCBvZiBiZXRhIHRlc3RpbmcsCit1c3VhbGx5IDEgbW9udGggYnV0IHRoaXMgc2hvdWxkIGJlIGZsZXhpYmxlLgorCitOb3RlIHRoYXQgYW55IG1lbnRpb24gb2YgYSBkZWFkbGluZSBjYXVzZXMgYSBmbG9vZCBvZiBidWcgZml4ZXMsIG5ldyB0YXNrcywKK2V0Yy4gIFRoaXMgbmVlZHMgdG8gYmUgbWFuYWdlZCBhcyBiZXN0IGl0IGNhbi4gU29tZSBmaXhlcyB3aWxsIGJlIGFwcGxpZWQsIAorb3RoZXJzIGhlbGQgb3Zlci4gTWFrZSB0aGlzIGNsZWFyIGluIHRoZSByZWxlYXNlIHBsYW4uIFRoZSBjb21taXR0ZXJzIGFuZCAKK3BhcnRpY3VsYXJseSB0aGUgcmVsZWFzZSBtYW5hZ2VyIHdpbGwgbmVlZCB0byBtYWtlIGp1ZGdlbWVudCBjYWxscyBoZXJlLiAKK0FueXRoaW5nIHRvbyAiYmlnIiBpcyBsaWtlbHkgdG8gYmUgaGVsZCBvdmVyLgorCitDcmVhdGUgQnJhbmNoZXMgaW4gQ1ZTCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCitPbmNlIHRoZSBmcmVlemUgZGF0ZSBhcnJpdmVzLCBjcmVhdGUgYSBicmFuY2ggZm9yIHRoZSByZWxlYXNlIGJ1aWxkcy4gWW91IAord2lsbCBuZWVkIHRvIGJlIGNvbWZvcnRhYmxlIGluIGhhbmRsaW5nIENWUyBicmFuY2hlcyB3aXRoIG11dGxpcGxlIAorbWVyZ2UtYmFja3MgdG8gdGhlIG1haW4gYnJhbmNoIGFuZCBldmVuIHNlbGVjdGVkIG1lcmdlcyBmcm9tIHRoZSB0aGUgbWFpbiAKK2JyYW5jaCB0byB0aGUgcmVsZWFzZSBicmFuY2guICAKKyAgICAKK0ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHBlcmZvcm1pbmcgYnJhbmNoaW5nIGFuZCBtZXJnaW5nLCBwbGVhc2UgdmlzaXQKK2h0dHA6Ly93d3cuZHVyYWsub3JnL2N2c3dlYnNpdGVzL2RvYy9jdnNfNTQucGhwI1NFQzU0CisKK0xhYmVsIHN1Y2ggYnJhbmNoZXMgWE1MU0VDQ18xMV9CUkFOQ0ggKGZvciBDIGxpYnJhcnkgYnJhbmNoZXMpIG9yCitYTUxTRUNKXzExX0JSQU5DSCAoZm9yIEphdmEgbGlicmFyeSBicmFuY2hlcykuCisgICAgCitPbmNlIHRoZSBicmFuY2ggaXMgc2V0dXAsIHRoZSB2ZXJzaW9uIG51bWJlcnMgaW4gQ1ZTIGFyZSBjaGFuZ2VkLiBPbiB0aGUgCiticmFuY2gsIHRoZSBidWlsZC54bWwgKEphdmEpIG9yIGNvbmZpZ3VyZS5hYyAoQysrKSB2ZXJzaW9uIGJlY29tZXMgMS4xQmV0YTEKK3doaWxlIHRoZSBtYWluIGJyYW5jaCBpcyB1cGRhdGVkIHRvIDEuMmFscGhhLiAKKyAgICAKK0J1aWxkIHRoZSBBcmNoaXZlcworLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Vuc3VyZSB5b3VyIEdQRy9QR1Aga2V5IGlzIGluIHRoZSBrZXlzLnR4dCBmaWxlIGluIHRoZSBDVlMuCisKK0V4cG9ydCB0aGUgeG1sLXNlY3VyaXR5IG1vZHVsZSB0byBhIGNsZWFuIGRpcmVjdG9yeSA6CisKKwkgICBjdnMgZXhwb3J0IHhtbC1zZWN1cml0eQorCitMYWJlbCB0aGUgYnJhbmNoIFhNTFNFQ0NfMTFfQjEgb3IgWE1MU0VDSl8xMV9CMQorCisqKiBUT0RPIC0gQ3JlYXRlIG1ha2UgcHJvY2VzcyB0byBidWlsZCBkaXN0cmlidXRpb25zIGFuZCBhZGQgY29tbWFuZHMgaGVyZSAqKgorCisqKiBKYXZhIGd1eXMgLSB3aGF0IGFyZSB0aGUgaW5zdHJ1Y3Rpb25zIHRvIGJ1aWxkIHRoZSBhcmNoaXZlcz8gKioKKworU2lnbiB0aGUgYXJjaGl2ZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1NpZ24gdGhlIGRpc3RyaWJ1dGlvbiBmaWxlcyB1c2luZyB0aGUgZm9sbG93aW5nIHNpbXBsZSBzY3JpcHQKKyMhL2Jpbi9zaAorZm9yIGkgaW4gZGlzdHJpYnV0aW9uLyoKK2RvCisgICAgIGVjaG8gIlNpZ25pbmcgIiAkaQorICAgICBncGcgLWEgLWIgLS1mb3JjZS12My1zaWdzICRpCitkb25lCisKK1RyeSB0byBkbyB0aGlzIG9uIExpbnV4IHNpbmNlIHRoZSBncGcgc2lnbmF0dXJlcyBnZW5lcmF0ZWQgb24gV2luZG93cyBtYXkgCitjYXVzZSBzb21lIFBHUCB1c2VycyBwcm9ibGVtcyB2ZXJpZnlpbmcgc2lnbmF0dXJlcyBldmVuIHRob3VnaCB0aGV5IHNlZW0gCitPSy4KKyAgICAKK0Fsc28gbWFrZSBzdXJlIHlvdSBoYXZlIHNlbnQgdGhlIGtleSB0aGF0IHlvdSB1c2UgdG8gYSBwdWJsaWMgCitrZXlzZXJ2ZXIuCisKK1RyYW5zZmVyIHRvIEFwYWNoZSBXZWIgU2l0ZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBiZXRhIGRpc3RyaWJ1dGlvbiBpcyBub3cgcmVhZHkgdG8gZ28uIEJ1bmRsZSBpdCB1cCBpbnRvIGEgdGFyLmd6IGZpbGUgCithbmQgc2NwIHRvIHlvdXIgYXBhY2hlIGFjY291bnQuCisKKyoqIERvIHdlIGhhdmUgYSBzdGFuZGFyZCBzZXQgb2YgV0hBVFNORVcvUkVBRE1FIGZpbGVzPyBUaGUgd291bGQgYmUgdXBkYXRlZAoraGVyZSAqKgorCitPbmNlIHRoaXMgaXMgdXBsb2FkZWQsIHVucGFjayB0aGluZ3MsIGNyZWF0ZSB0aGUgcmVsZWFzZSBkaXJlY3RvcnksIAorc29tZXRoaW5nIGxpa2UgdjEuMUJldGExLCBwdXNoIHRoZSByZWxlYXNlIGFuZCBSRUFETUUgZmlsZXMgaW50byB0aGlzIAorZGlyZWN0b3J5LgorCitUaGUgZmlsZXMgc2hvdWxkIGdvIHRvIC93d3cveG1sLmFwYWNoZS5vcmcvYnVpbGRzL3htbC1zZWN1cml0eS9yZWxlYXNlCitvbiBkYWVkYWx1cy4KKworKiogSXMgdGhlIGFib3ZlIGNvcnJlY3Q/ICoqCisKK0FkZHJlc3MgdGhlIGF2YWlsYWJsZSByZWxlYXNlIHRhZ3MgaW4gQnVnWmlsbGEuIENyZWF0ZSBhIG5ldyB0YWcgMS4xQmV0YTEgCithbmQgYSAxLjJhbHBoYS4gQXNzaWduIGFsbCBleGlzdGluZyAxLjFhbHBoYSBidWdzIHRvIG9uZSBvZiB0aGVzZSByZWxlYXNlIAorbGFiZWxzLgorCitUZXN0IHRoZSBkaXN0cmlidGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT25jZSB0aGF0IGlzIGRvbmUsIGRvIGEgdGVzdCBkb3dubG9hZCB0byBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyBPSy4gQSAKK2NvbW1vbiBwcm9ibGVtIG1heSBiZToKKworICAgICogdGhlIGZpbGUncyBtaW1lIHR5cGUgaXMgbm90IHJlY29nbml6ZWQgYW5kIGlzIGludGVycHJldGVkIGFzIAorICAgICAgdGV4dC9wbGFpbi4gIEZpeCBpdCBieSB1c2luZyBzb21lIC5odGFjY2VzcyBtYWdpYyAoQWRkRW5jb2Rpbmcgc3R1ZmYpCisgICAgKiBZb3VyIGd6LmFzYyBmaWxlcyBhcmUgbm90IGJlaW5nIGRpc3BsYXllZCBwcm9wZXJseSAoUmVtb3ZlRW5jb2luZyBzdHVmZikKKworKiogV2hhdCB0ZXN0cyBzaG91bGQgYmUgZG9uZSB0byB2YWxpZGF0ZSBhcmNoaXZlcz8gKioKKyAgICAKK0lmIGl0IGxvb2tzIE9LLCBhbm5vdW5jZSBpdCBvbiBzZWN1cml0eS1kZXYuIEFmdGVyIGEgZmV3IGRheXMgcGFzcyBhbmQgCit0aGVyZSBhcmUgbm8gbWFqb3IgcHJvYmxlbXMsIGEgd2lkZXIgYW5ub3VuY2VtZW50IGlzIG1hZGUgKG1haW4geG1sIAord2Vic2l0ZSwgZ2VuZXJhbEB4bWwuYXBhY2hlLm9yZywgZXRjKS4KKyAgICAKKyoqIEFueSBvdGhlciBmaWxlcy9saXN0cyB0byB1cGRhdGU/ICoqCisKK0Fubm91bmNlIGJldGEgcmVsZWFzZXMgYXQgZnJlc2htZWF0Lm5ldCAoRG8gd2UgaGF2ZSBhbiBlbnRyeT8pCisKK0FzIHByb2JsZW1zIGluIHRoZSBiZXRhIGFyZSBkaXNjb3ZlcmVkLCB0aGVyZSBtYXkgYmUgYSBuZWVkIGZvcgorb25lIG9yIG1vcmUgc3Vic2VxdWVudCBiZXRhcy4gVGhlIHJlbGVhc2UgbWFuYWdlciBtYWtlcyB0aGlzCitjYWxsLiBFYWNoIHRpbWUsIHRoZSB2ZXJzaW9ucyBhcmUgdXBkYXRlZCBhbmQgdGhlIGFib3ZlIHByb2Nlc3MgaXMKK3JlcGVhdGVkLiBUcnkgbm90IHRvIGhhdmUgdG9vIG1hbnkgYmV0YXMuCisKK1RyeSB0byBhZHZlcnRpc2UgdGhlIG5lZWQgZm9yIHRlc3Rpbmcgb2YgdGhlIGJldGFzIGFzIG11Y2ggYXMgcG9zc2libGUuCitUaGlzIHNob3VsZCBlbGltaW5hdGUgdGhlIG5lZWQgdG8gcmVsZWFzZSBtaW5vciBwYXRjaCB2ZXJzaW9ucy4KKyAgICAKK1RvIG1vbml0b3IgdGhlIG51bWJlciBvZiBkb3dubG9hZHMsIGxvb2sgYXQgdGhlIGFjY2Vzc19sb2cKK2ZpbGUgdW5kZXIgL3Vzci9sb2NhbC9hcGFjaGUyL2xvZ3MKKworV2hlbiB0aGUgZmluYWwgYmV0YSBpcyBjb25zaWRlcmVkIE9LLCBwcm9wb3NlIGEgdm90ZSBvbiBhbnQtZGV2IHRvIAorb2ZmaWNpYWxseSBhZG9wdCB0aGUgbGF0ZXN0IGJldGEgYXMgdGhlIFhNTC1TZWN1cml0eS1DL0ogMS4xIHJlbGVhc2UuIElmIGl0IGlzIAorcGFzc2VkLCAgKGl0IHVzdWFsbHkgZG9lcywpIHRoaXMgd291bGQgYmUgbGFiZWxsZWQgWE1MU0VDQ18xMSBvciBYTUxTRUNKXzExCithbmQgYnVpbHQgaW4gYSBzaW1pbGFyIGZhc2hpb24gdG8gdGhlIGFib3ZlIHByb2Nlc3MuCisKK0JVVAorCitUaGlzIHRpbWUgdGhlIGRpcmVjdG9yeSB5b3UgdXBsb2FkIHRoZSBmaWxlcyB0byBpcyBkaWZmZXJlbnQgYW5kCit5b3UnbGwgaGF2ZSB0byBkbyBzb21lIGhvdXNlLWtlZXBpbmcgZm9yIHRoZSBvbGQgcmVsZWFzZToKKworKiogTk9URSBJIGFtIGd1ZXNzaW5nIGF0IGFsbCBkaXJlY3RvcmllcyBoZXJlICoqCisKKyAgICAqIGNyZWF0ZSBhIGRpcmVjdG9yeSBmb3IgdGhlIG9sZCByZWxlYXNlIGluIAorICAgICAgL3d3dy94bWwuYXBhY2hlLm9yZy9idWlsZHMveG1sLXNlY3VyaXR5L3JlbGVhc2Ugb24gZGFlZGFsdXMuCisKKyAgICAqIE1vdmUgdGhlIHJlbGVhc2Ugbm90ZXMsIC56aXAgZmlsZXMgYW5kIGNvcnJlc3BvbmRpbmcgc2lnbmF0dXJlcworICAgICAgYW5kIG1kNSBoYXNoZXMgb2YgdGhlIG9sZCByZWxlYXNlIGZyb20gCisgICAgICAvd3d3L3d3dy5hcGFjaGUub3JnL2Rpc3QveG1sLXNlY3VyaXR5CisgICAgICB0byBhIG1hdGNoaW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgaW4KKyAgICAgIC93d3cveG1sLmFwYWNoZS5vcmcvYnVpbGRzL3htbC1zZWN1cml0eS9yZWxlYXNlLgorCisgICAgKiByZW1vdmUgdGhlIHJlbWFpbmluZyBmaWxlcyBleGNlcHQgZm9yIHRoZSBLRVlTIGZpbGUgZnJvbQorICAgICAgL3d3dy93d3cuYXBhY2hlLm9yZy9kaXN0L3htbC1zZWN1cml0eS4KKworICAgICogdXBsb2FkIHRoZSBuZXcgcmVsZWFzZSBmaWxlcyB0byAKKyAgICAgIC93d3cvd3d3LmFwYWNoZS5vcmcvZGlzdC94bWwtc2VjdXJpdHkvW3NvdXJjZXxiaW5hcnldLgorCisgICAgKiBDcmVhdGUgcHJvcGVyIC1jdXJyZW50IHN5bWxpbmtzIGluIC93d3cvd3d3LmFwYWNoZS5vcmcvZGlzdC94bWwtc2VjdXJpdHkvCisKK0NoYW5nZSB0aGUgbGlua3MgaW4gL3hkb2NzL2JpbmRvd25sb2FkLnhtbCBhbmQgL3hkb2NzL3NyY2Rvd25sb2FkLnhtbCwKK3JlZ2VuZXJhdGUgdGhlIEhUTUwgZmlsZXMsIGNvbW1pdCBhbmQgdXBkYXRlIHRoZSBzaXRlLgorCitBcyB0aGUgbWlycm9ycyBtYXkgbmVlZCBzb21lIGRheXMgdG8gcGljayB1cCB0aGUgbmV3IHJlbGVhc2UsIHlvdQorbWF5IHdhbnQgdG8gYWRkIGEgbm90ZSB0byB0aGF0IGVmZmVjdCB0byB0aGUgcGFnZXMgYW5kIHJlbW92ZSBpdCBhIGZldworZGF5cyBsYXRlci4KKworTm93IGFuZCBwZXJoYXBzIGR1cmluZyBwcmV2aW91cyBiZXRhcyBhbnkgY2hhbmdlcyBvbiB0aGUgYnJhbmNoIG11c3QgCitiZSBtZXJnZWQgYmFjayBpbnRvIHRoZSB0cmVlLgorCitBdCB0aGlzIHBvaW50IGluIHRpbWUsIHRoZSByZWxlYXNlIGlzIGRvbmUgYW5kIGFubm91bmNlbWVudHMgYXJlIG1hZGUuIAorCisqKlRPRE86IElkZW50aWZ5IHRoZSBtYWlsaW5nIGxpc3RzIHdoZXJlIGFubm91bmNlbWVudHMgYXJlIHRvIGJlIG1hZGUuCitBbHNvIGlkZW50aWZ5IHRoZSB3ZWJwYWdlcyB0byB3aGljaCB0aGUgYW5ub3VuY2VtZW50cyBtdXN0IGdvLiAqKgorCitBcGFjaGUgbWFpbGluZyBsaXN0cyB0aGF0IHNob3VsZCBnZXQgdGhlIGFubm91bmNlbWVudHM6Cithbm5vdW5jZUBqYWthcnRhLmFwYWNoZS5vcmcsIGFubm91bmNlQHhtbC5hcGFjaGUub3JnLAorYW5ub3VuY2VAYXBhY2hlLm9yZyBhbmQgc2VjdXJpdHktZGV2CisKK0Fubm91bmNlIHJlbGVhc2UgYXQgZnJlc2htZWF0Lm5ldAorKiogRG8gd2UgaGF2ZSBhbiBlbnRyeT8gKioKKworWW91IGNhbiBub3cgcmVhY3F1YWludCB5b3Vyc2VsZiB3aXRoIHlvdXIgZmFtaWx5IGFuZCBmcmllbmRzLgorCmRpZmYgLS1naXQgYS9UT0RPIGIvVE9ETwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2IxNGZlCi0tLSAvZGV2L251bGwKKysrIGIvVE9ETwpAQCAtMCwwICsxLDQyIEBACitJZiB3ZSBzaWduIGEgTWFuaWZlc3QsIHdlIGhhdmUgdG8gZW5zdXJlIHRoYXQgdGhlIFJlZmVyZW5jZXMgaW5zaWRlIHRoZSBNYW5pZmVzdCBoYXZlIGNvcnJlY3QgZGlnZXN0IHZhbHVlcyAodGhhdCB3ZSBkbyBub3QgYmxpbmRseSBzaWduIGNvbnRlbnRzIHdoaWNoIGFuIGF0dGFja2VyIHdhbnRzIHVzIHRvIHNpZ24pLiBBZGRpdGlvbmFsbHksIHRoZSBzaWduZWQgY29udGVudHMgb2Ygc3VjaCBhIChuZXN0ZWQpIE1hbmlmZXN0IGhhdmUgdG8gYmUgbWFkZSBhdmFpbGFibGUgdG8gdGhlIHVzZXIuIEN1cnJlbnRseSwgb25seSB0aGUgMXN0IGxldmVsIGNvbnRlbnRzICh3aGF0IGlzIHJlZmVyZW5jZWQgYnkgU2lnbmVkSW5mbykgYXJlIGF2YWlsYWJsZSB1c2luZyBYTUxTaWduYXR1cmUuZ2V0U2lnbmVkSW5mbygpLmdldFNpZ25lZENvbnRlbnQoaW50IGkpLiBTYW1lIGNvbW1lbnRzIGFwcGx5IHRvIHNpZ2luaW5nIGEgZHM6UmVmZXJlbmNlIGZyb20gYW5vdGhlciBNYW5pZmVzdCBvciBTaWduZWRJbmZvLiAKKworUXVlc3Rpb246IFdoYXQgaXMgYW4gYXBwcm9wcmlhdGUgcHJvY2Vzc2luZyBtb2RlbCBpZiB0aGUgdXNlciBzaWducyBhIGRzOk1hbmlmZXN0IG9yIGEgZHM6UmVmZXJlbmNlID8gCitQb3NzaWJsZSBjaG9pY2VzIGluY2x1ZGU6CistIG9ubHkgcHJvY2VzcyB0aGUgU2lnbmVkSW5mby4gTWFrZSBpbmZvcm1hdGlvbiBhYm91dCBzaWduZWQgTWFuaWZlc3RzLCBSZWZlcmVuY2VzIG9yIFNpZ25hdHVyZXMgYXZhaWxhYmxlIHRvIHRoZSB1c2VyLiBOb3cgaXQncyB1cCB0byB0aGUgdXNlciB0byBkZWNpZGUgd2hldGhlciBoZSBmb2xsb3dzIHRoaXMgaGludCBvciBub3QuCistIHVzaW5nIHRoZSBYTUxTaWduYXR1cmUuc2V0Rm9sbG93TmVzdGVkTWFuaWZlc3RzKHRydWUpIG1ldGhvZCwgaXQgY2FuIGJlIGRlZmluZWQgdGhhdCBhbGwgTWlhbmlmZXN0cyBoYXZlIHRvIGJlIHZhbGlkLCBhbHNvIE1hbmlmZXN0cyB3aGljaCBhcmUgcmVmZXJlbmNlZCBmcm9tIE1hbmlmZXN0cy4gCistIHRoZSB1c2VyIGNvdWxkIGRlZmluZSBhIGxlbmd0aCBob3cgbWFueSBNYW5pZmVzdHMgaGF2ZSB0byBiZSBmb2xsb3dlZC4gQnV0IHRoaXMgbWFrZXMgbm90IG11Y2ggc2Vuc2UsIGNhdXNlIGl0IG1ha2VzIFNpZ25hdHVyZSBzb21ldGhpbmcgJ2FuYWxvZycsIGFsbG93aW5nIHRvIHNjYWxlIHdoZXRoZXIgdmFsaWRhdGlvbiBmYWlscyBvciBub3QuCisKK1RPRE8gZm9yIDEuMi4xOgorIFtYXSBGaXggdGhlIG1lbW9yeSBsZWFrIHdoZW4gdXNpbmcgeHBhdGggb3IgdXNpbmcgUmVzb3VyY2VSZXNvbHZlciBhbmQgbm90IGhpdHRpbmcgCisgIAkgIGdldEVsZW1lbnRCeUlkVXNpbmdET00oKSBbaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0zMjgzNl0KKyBbWF0gRml4IHRoZSBidWcgd2l0aCB1c2luZyBYUGF0aDJGaWx0ZXIgYW5kIGluY2x1c2l2ZSBjMTRuCisgW1hdIEZpeCB0aGUgYnVnIGFycm91c2UgaW4gcmV1c2luZyBDYW5vbmljYWxpemVycworIFtYXSBGaXggYmFzZTY0dHJhbnNmb3JtYXRpb24gYnVnIFtodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTMzMzkzIF0KKyBbWF0gRml4IHRoZSBYTUxzaWduYXR1cmVJbnB1dCByZXNldCgpIGJ1Zy4KKyBbWF0gQ2xlYW4gdW51c2VkIGphciAoeG1sUGFyc2VyQVBJLmphcixldGMpIGFuZCBjaGVjayBhbmQgc3RvcmVkIG5ldyB2ZXJzaW9ucy4KKyBbWF0gZ2VuZXJhdGVkIHRoZSBkaXN0IGphciB3aXRoIHZlcnNpb24gKGkuZS4geG1sc2VjLTEuMi4xLmphciBpbnN0ZWFkIG9mIHBsYWluIHhtbHNlYy5qYXIpCisgW1hdIENsZWFuIHVudXNlZCBidWlsZCoueG1sIGZpbGVzLgorVE9ETyBmb3IgMS4zOgorUkFVTDoKKworW1hdIFJlbW92ZSBYUGF0aCBpbiBJZFJlc29sdmVyLgorW1hdIERlZmVycmVkIFhQYXRoIHRpbGwgbmVlZGVkLgorW1hdIENsZWFuIHVubmVlZCBYUGF0aAorWyBdIEludGVncmF0ZSB0aGUgU0FYIHBhdGNoIGFuZCBhZGQgU2lnbmluZworWyBdIE1vcmUgZXhhbXBsZXMuCitbWF0gQ2hhbmdlIFN5bWJvbCB0YWJsZSB0byBhIG1vcmUgZWZmaWNpZW50IGFuZCBzaW1wbGUgc3RydWN0dXJlCitbIF0gY29uc3RyYWMgbmFtZSBiaW5kaW5ncyBvbiB0aGUgZmx5IGxpa2UgWE1MU2VyaWFsaWNlciBkb2VzLgorWyBdIE9wdGltaXplIG91cHV0c3RyZWFtIHdpdGggbmF0aXZlIGpjZSwgbmlvICYgdGhyZWFkcy4KK1tYXSBNaWdyYXRlIHRvIEpTUjEwNSBBUEkKK1tYXSBPcHRpbWl6ZSBjZXJ0aWZhY2F0ZSAmIHB1YmxpYyBrZXkgZ2V0dGluZy4gZm9yIGxvb3BzIGxvb2sgd3JvbmcsIAorCWJldHRlciByZWdpc3RyaW5nLi4KK1tYXSBPcHRpbWl6ZSB4cGF0aDIgdG8gb25seSBsb29rIGZvciB0aGUgbm9kZSBub3QgZm9yIHRoZSBub2RlIGFuZCBhbGwgdGhlIHBhcmVudHMuCitbIF0gVGhlcmUgYXJlIHNldmVyYWwgcGxhY2VzIGluIHRoZSBsaWJyYXJ5IHdoZXJlIGEgRG9tIGlzIGNyZWF0ZWQgZnJvbSBhIGJ5dGUgYXJyYXkKK3NlZSBpZiB0aGlzIGlzIHJlYWxseSBuZWVkZWQgYW5kIHVuaWZpZWQgdGhpcyBjcmVhdGlvbiBpbiBvbmUgY2xhc3MuCitbIF0gR2V0IHJpZCBvZiBJbml0LmluaXQoKQorWyBdIEdldCByaWQgb2YgYWxsIGlmIChNT0RFX1NJR04pIGNyZWF0ZSBhIGNsYXNzIGZvciBzaWduaW5nIGFuZCBhbm90aGVyIGZvciB2ZXJpZnlpbmcuCitbIF0gV29yayBvbiBleGFtcGxlcyB0aGVyZSBhcmUgb3V0IG9mIHN5bmMgd2l0aCB0aGUgY29kZS5Vbml0ZXN0IHRoZSBleGFtcGxlcz8KK1sgXSBDbGVhbiBidWlsZC54bWwsIHdoeSBpcyBzdGlsbCBuZWVkZWQgdGhlIGpjZT8KK1sgXSBDaGFuZ2UgdG8gZm9ycmVzdCAwLjcgaW5zdGVhZCBvZiAwLjYKK1sgXSBSZW1vdmUgYWxsIHJlZmVyZW5jZXMgdG8gQ1ZTIGluIGRvY3VtZW50YXRpb24KK1sgXSBBZGQgcGVyZm9ybWFuY2Ugc2VjdGlvbiB0byBkb2N1bWVudGF0aW9uLgpkaWZmIC0tZ2l0IGEvYnVpbGQueG1sIGIvYnVpbGQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmMzNkNjkKLS0tIC9kZXYvbnVsbAorKysgYi9idWlsZC54bWwKQEAgLTAsMCArMSw4OTggQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPHByb2plY3QgbmFtZT0iQXBhY2hlIFhNTCBTZWN1cml0eSIgZGVmYXVsdD0iaGVscCIgYmFzZWRpcj0iLiI+CisgICAgPCEtLSBQIFIgTyBQIEUgUiBUIFkgICAgRiBJIEwgRSBTIC0tPgorICAgIDxwcm9wZXJ0eSBmaWxlPSJidWlsZC5wcm9wZXJ0aWVzIiAvPgorICAgIDxwcm9wZXJ0eSBmaWxlPSJwcm92aWRlci5wcm9wZXJ0aWVzIiAvPgorICAgIDxwcm9wZXJ0eSBmaWxlPSJwcm94eS5wcm9wZXJ0aWVzIiAvPgorCisKKworCisgICAgPCEtLSBHIEwgTyBCIEEgTCAgICBQIFIgTyBQIEUgUiBUIEkgRSBTIC0tPgorCTwhLS0gUHJvZHVjdCBuYW1lIGFuZCB2ZXJzaW9uIHByb3BlcnRpZXMgLS0+CisgICAgPHByb3BlcnR5IG5hbWU9InByb2R1Y3QuTmFtZSIgdmFsdWU9IkFwYWNoZS1YTUwtU2VjdXJpdHktSiIvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJwcm9kdWN0Lm5hbWUiIHZhbHVlPSJ4bWwtc2VjdXJpdHkiLz4KKyAgICA8cHJvcGVydHkgbmFtZT0icHJvZHVjdC5zaG9ydG5hbWUiIHZhbHVlPSJ4bWxzZWMiLz4KKworICAgIDxwcm9wZXJ0eSBuYW1lPSJwcm9kdWN0LnZlcnNpb24ubWFqb3IiIHZhbHVlPSIxIi8+CisgICAgPHByb3BlcnR5IG5hbWU9InByb2R1Y3QudmVyc2lvbi5taW5vciIgdmFsdWU9IjQiLz4KKyAgICA8cHJvcGVydHkgbmFtZT0icHJvZHVjdC52ZXJzaW9uLmxldmVsIiB2YWx1ZT0iNCIvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSdwcm9kdWN0LnZlcnNpb24ucXVhbGlmaWVyJyB2YWx1ZT0nLVNOQVBTSE9UJy8+CisgICAgPHByb3BlcnR5IG5hbWU9InByb2R1Y3QudmVyc2lvbiIgCisJICB2YWx1ZT0iJHtwcm9kdWN0LnZlcnNpb24ubWFqb3J9LiR7cHJvZHVjdC52ZXJzaW9uLm1pbm9yfS4ke3Byb2R1Y3QudmVyc2lvbi5sZXZlbH0ke3Byb2R1Y3QudmVyc2lvbi5xdWFsaWZpZXJ9Ii8+CisgICAgPHByb3BlcnR5IG5hbWU9InByb2R1Y3RfdmVyc2lvbiIgCisJICB2YWx1ZT0iJHtwcm9kdWN0LnZlcnNpb24ubWFqb3J9XyR7cHJvZHVjdC52ZXJzaW9uLm1pbm9yfV8ke3Byb2R1Y3QudmVyc2lvbi5sZXZlbH0ke3Byb2R1Y3QudmVyc2lvbi5xdWFsaWZpZXJ9Ii8+CisgICAgPHByb3BlcnR5IG5hbWU9InllYXIiIHZhbHVlPSIyMDAwLTIwMDkiLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iY29weXJpZ2h0IiAKKwkJCSAgdmFsdWU9IkNvcHlyaWdodCDCqSAke3llYXJ9IEFwYWNoZSBYTUwgUHJvamVjdC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4iLz4KKworCisgICAgPCEtLSBkaXJlY3RvcnkgcHJvcGVydGllcyAtLT4KKyAgICA8cHJvcGVydHkgbmFtZT0iZGlyLnNyYyIgICAgICAgICAgICB2YWx1ZT0iJHtiYXNlZGlyfS9zcmMiIC8+CisgICAgPHByb3BlcnR5IG5hbWU9ImRpci5zcmMudGVzdCIgICAgICAgdmFsdWU9IiR7YmFzZWRpcn0vc3JjX3VuaXRUZXN0cyIgLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iZGlyLnNyYy5zYW1wbGVzIiAgICB2YWx1ZT0iJHtiYXNlZGlyfS9zcmNfc2FtcGxlcyIgLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iZGlyLmxpYnMiICAgICAgICAgICB2YWx1ZT0iJHtiYXNlZGlyfS9saWJzIiAvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJkaXIuZGF0YSIgICAgICAgICAgIHZhbHVlPSIke2Jhc2VkaXJ9L2RhdGEiIC8+CisgICAgPHByb3BlcnR5IG5hbWU9ImRpci5kb2NzIiAgICAgICAgICAgdmFsdWU9IiR7YmFzZWRpcn0vZG9jL3NpdGUiIC8+CisgICAgPHByb3BlcnR5IG5hbWU9ImRpci5idWlsZCIgICAgICAgICAgdmFsdWU9IiR7YmFzZWRpcn0vYnVpbGQiIC8+CisgICAgPHByb3BlcnR5IG5hbWU9ImRpci5idWlsZC5iaW4iICAgICAgdmFsdWU9IiR7ZGlyLmJ1aWxkfS9jbGFzc2VzIiAvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJkaXIuYnVpbGQubGlicyIgICAgIHZhbHVlPSIke2Rpci5idWlsZH0vbGlicyIgLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iZGlyLmJ1aWxkLmxpYnMyIiAgICB2YWx1ZT0iJHtkaXIuYnVpbGR9L2xpYnMvZW5kb3JzZWQiIC8+CisgICAgPHByb3BlcnR5IG5hbWU9ImRpci5idWlsZC50ZXN0IiAgICAgdmFsdWU9IiR7ZGlyLmJ1aWxkfS90ZXN0IiAvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJkaXIuYnVpbGQuc2FtcGxlcyIgIHZhbHVlPSIke2Rpci5idWlsZH0vc2FtcGxlcyIgLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iZGlyLmJ1aWxkLmRvY3MiICAgICB2YWx1ZT0iJHtkaXIuYnVpbGR9L2RvY3MiIC8+CisgICAgPHByb3BlcnR5IG5hbWU9ImRpci5idWlsZC5kb2NzLnhtbCIgdmFsdWU9IiR7ZGlyLmJ1aWxkLmRvY3N9L3htbCIgLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iZGlyLmJ1aWxkLmRvY3MuaHRtbCIgdmFsdWU9IiR7ZGlyLmJ1aWxkLmRvY3N9L2h0bWwiIC8+CisgICAgPHByb3BlcnR5IG5hbWU9ImRpci5idWlsZC5zcmMiICAgICAgdmFsdWU9IiR7ZGlyLmJ1aWxkfS9zcmMiIC8+CisgICAgPHByb3BlcnR5IG5hbWU9ImRpci5idWlsZC5kaXN0IiAgICAgdmFsdWU9IiR7ZGlyLmJ1aWxkfS9kaXN0IiAvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJkaXIuYnVpbGQuc3JjZGlzdCIgIHZhbHVlPSIke2Rpci5idWlsZC5kaXN0fS9zcmMvJHtwcm9kdWN0Lm5hbWV9LSR7cHJvZHVjdF92ZXJzaW9ufSIvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJkaXIuYnVpbGQuYmluZGlzdCIgIHZhbHVlPSIke2Rpci5idWlsZC5kaXN0fS9iaW4vJHtwcm9kdWN0Lm5hbWV9LSR7cHJvZHVjdF92ZXJzaW9ufSIvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJkaXIuYnVpbGQuanVuaXQueG1sIiAgdmFsdWU9IiR7ZGlyLmJ1aWxkLmRvY3MueG1sfS9qdW5pdCIgLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iZGlyLmJ1aWxkLmp1bml0Lmh0bWwiIHZhbHVlPSIke2Rpci5idWlsZC5kb2NzLmh0bWx9L2p1bml0IiAvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJkaXIuYnVpbGQuamF2YWRvYyIgIHZhbHVlPSIke2Rpci5idWlsZC5kb2NzLmh0bWx9L2phdmFkb2MiIC8+CisgICAgPHByb3BlcnR5IG5hbWU9ImRpci5idWlsZC5jb3ZlcmFnZSIgdmFsdWU9IiR7ZGlyLmJ1aWxkLmRvY3MuaHRtbH0vY292ZXJhZ2UiIC8+CisgICAgPHByb3BlcnR5IG5hbWU9ImRpci5tYW5pZmVzdCIgICAgICAgdmFsdWU9IiR7ZGlyLmJ1aWxkLmJpbn0vTUVUQS1JTkYiLz4KKworICAgIDwhLS0gbGlicmFyeSBwcm9wZXJ0aWVzIC0tPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJsaWIubG9nZ2luZyIgICAgICAgIHZhbHVlPSIke2Rpci5saWJzfS9jb21tb25zLWxvZ2dpbmcuamFyIiAvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJsaWIubG9nZ2luZy5hcGkiICAgIHZhbHVlPSIke2Rpci5saWJzfS9jb21tb25zLWxvZ2dpbmctYXBpLmphciIgLz4KKyAgICA8cHJvcGVydHkgbmFtZT0ibGliLmxvZzRqIiAgICAgICAgICB2YWx1ZT0iJHtkaXIubGlic30vbG9nNGotMS4yLjguamFyIiAvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJsaWIueGFsYW4uMSIgICAgICAgIHZhbHVlPSIke2Rpci5saWJzfS94YWxhbi5qYXIiIC8+CisgICAgPHByb3BlcnR5IG5hbWU9ImxpYi54YWxhbi4yIiAgICAgICAgdmFsdWU9IiR7ZGlyLmxpYnN9L3NlcmlhbGl6ZXIuamFyIiAvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJsaWIueGFsYW4uMyIgICAgICAgIHZhbHVlPSIke2Rpci5saWJzfS94bWwtYXBpcy5qYXIiIC8+CisgICAgPHByb3BlcnR5IG5hbWU9ImxpYi54ZXJjZXMuMSIgICAgICAgdmFsdWU9IiR7ZGlyLmxpYnN9L3hlcmNlc0ltcGwuamFyIiAvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJsaWIuamNlIiAgICAgICAgICAgIHZhbHVlPSIke2Rpci5saWJzfS8ke2pjZS5wcm92aWRlci5wcmVmaXh9LSR7amNlLnByb3ZpZGVyLmphcn0iIC8+CisgICAgPHByb3BlcnR5IG5hbWU9ImxpYi5qdW5pdCIJCXZhbHVlPSIke2Rpci5saWJzfS9qdW5pdC0zLjguMS5qYXIiIC8+CisgICAgPHByb3BlcnR5IG5hbWU9ImxpYi5jbG92ZXIiCQl2YWx1ZT0iJHtkaXIubGlic30vY2xvdmVyLmphciIgLz4KKworICAgIDwhLS0gWE1MIFNlY3VyaXR5IGxpYnJhcmllcyAoZm9yIGJpbiBkaXN0cmlidXRpb24pIC0tPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJsaWIueG1sc2VjIiAgICAgICAgIHZhbHVlPSIke2Rpci5saWJzfS94bWxzZWMtJHtwcm9kdWN0LnZlcnNpb259LmphciIgLz4KKyAgICA8cHJvcGVydHkgbmFtZT0ibGliLnhtbHNlYy5zYW1wbGVzIiB2YWx1ZT0iJHtkaXIubGlic30veG1sc2VjU2FtcGxlcy0ke3Byb2R1Y3QudmVyc2lvbn0uamFyIi8+CisgICAgPHByb3BlcnR5IG5hbWU9ImxpYi54bWxzZWMudGVzdHMiICAgdmFsdWU9IiR7ZGlyLmxpYnN9L3htbHNlY1Rlc3RzLSR7cHJvZHVjdC52ZXJzaW9ufS5qYXIiIC8+CisKKyAgICA8IS0tIEpBUiBwcm9wZXJ0aWVzIC0tPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJqYXIubGlicmFyeSIgICAgICAgIHZhbHVlPSIke2Rpci5idWlsZH0veG1sc2VjLSR7cHJvZHVjdC52ZXJzaW9ufS5qYXIiIC8+CisgICAgPHByb3BlcnR5IG5hbWU9Imphci5zYW1wbGVzIiAgICAgICAgdmFsdWU9IiR7ZGlyLmJ1aWxkfS94bWxzZWNTYW1wbGVzLSR7cHJvZHVjdC52ZXJzaW9ufS5qYXIiIC8+CisgICAgPHByb3BlcnR5IG5hbWU9Imphci50ZXN0cyIgICAgICAgICAgdmFsdWU9IiR7ZGlyLmJ1aWxkfS94bWxzZWNUZXN0cy0ke3Byb2R1Y3QudmVyc2lvbn0uamFyIiAvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJqYXIubWFuaWZlc3QiICAgICAgIHZhbHVlPSIke2Rpci5tYW5pZmVzdH0vTUFOSUZFU1QuTUYiLz4KKyAgICAKKworICAgIDwhLS0gYnVpbGQgdmFyaWFibGUgcHJvcGVydGllcyAtLT4KKworCisgICAgPCEtLSBUIEEgUyBLIEQgRSBGIFMgLS0+CisgICAgPHRhc2tkZWYgcmVzb3VyY2U9ImNsb3ZlcnRhc2tzIi8+CisJCisJCisKKyAgICA8IS0tIEMgTyBOIEQgSSBUIEkgTyBOIEEgTCAgICBQIFIgTyBQIEUgUiBUIEkgRSBTIC0tPgorICAgIDx0YXJnZXQgbmFtZT0iZG8uYnVpbGQuc3JjIiA+CisgICAgICAgIDwhLS0gZ2xvYmFsIHByb3BlcnRpZXMgYXBwbGllcyBoZXJlIC0tPgorICAgIDwvdGFyZ2V0ID4KKworCisKKworICAgIDwhLS0gUCBBIFQgSCBTIC0tPgorICAgIDxwYXRoIGlkPSJpZC5jbGFzc3BhdGgueGFsYW4iID4KKyAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke2xpYi54YWxhbi4xfSIgLz4KKyAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke2xpYi54YWxhbi4yfSIgLz4KKyAgICA8L3BhdGggPgorICAgIDxwYXRoIGlkPSJpZC5jbGFzc3BhdGgueGVyY2VzIiA+CisgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtsaWIueGVyY2VzLjF9IiAvPgorICAgIDwvcGF0aCA+CisgICAgPHBhdGggaWQ9ImlkLmNsYXNzcGF0aC5sb2dnaW5nIiA+CisgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtsaWIubG9nZ2luZ30iIC8+CisgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtsaWIubG9nZ2luZy5hcGl9IiAvPgorICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7bGliLmxvZzRqfSIgLz4KKyAgICA8L3BhdGggPgorICAgIDxwYXRoIGlkPSJpZC5jbGFzc3BhdGguY29tbW9uIiA+CisgICAgICAgIDxwYXRoIHJlZmlkPSJpZC5jbGFzc3BhdGgueGFsYW4iIC8+CisgICAgICAgIDxwYXRoIHJlZmlkPSJpZC5jbGFzc3BhdGgueGVyY2VzIiAvPgorICAgICAgICA8cGF0aCByZWZpZD0iaWQuY2xhc3NwYXRoLmxvZ2dpbmciIC8+CisgICAgPC9wYXRoID4KKyAgICA8cGF0aCBpZD0iaWQuY2xhc3NwYXRoLmNyeXB0IiA+CisgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtsaWIuamNlfSIgLz4KKyAgICA8L3BhdGggPgorICAgIDxwYXRoIGlkPSJpZC5jbGFzc3BhdGguY292ZXJhZ2UiID4KKyAgICAJPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke2xpYi5jbG92ZXJ9IiAvPgorICAgIDwvcGF0aCA+CisgICAgPHBhdGggaWQ9ImlkLmNsYXNzcGF0aC5zaWciID4KKyAgICA8L3BhdGggPgorICAgIDxwYXRoIGlkPSJpZC5jbGFzc3BhdGgiID4KKyAgICAgICAgPHBhdGggcmVmaWQ9ImlkLmNsYXNzcGF0aC5jb21tb24iIC8+CisgICAgICAgIDxwYXRoIHJlZmlkPSJpZC5jbGFzc3BhdGguY3J5cHQiIC8+CisgICAgICAgIDxwYXRoIHJlZmlkPSJpZC5jbGFzc3BhdGguc2lnIiAvPgorICAgICAgICA8IS0tcGF0aCByZWZpZD0iaWQuY2xhc3NwYXRoLmNvdmVyYWdlIiAvLS0+CisgICAgPC9wYXRoID4KKyAgICA8cGF0aCBpZD0iaWQuY2xhc3NwYXRoLnRlc3QiID4KKyAgICAgICAgPHBhdGggcmVmaWQ9ImlkLmNsYXNzcGF0aCIgLz4KKwk8cGF0aGVsZW1lbnQgcGF0aD0iJHtsaWIuanVuaXR9Ii8+CisgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtkaXIuYnVpbGQuYmlufSIgLz4KKyAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke2Rpci5idWlsZC50ZXN0fSIgLz4KKyAgICAgICAgPHBhdGggcmVmaWQ9ImlkLmNsYXNzcGF0aC5jb3ZlcmFnZSIgLz4KKyAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke2xpYi54bWxzZWN9IiAvPgorICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7bGliLnhtbHNlYy5zYW1wbGVzfSIgLz4KKyAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke2xpYi54bWxzZWMudGVzdHN9IiAvPgorICAgIDwvcGF0aD4KKyAgICA8cGF0aCBpZD0iaWQuY2xhc3NwYXRoLnNhbXBsZXMiID4KKyAgICAgICAgPHBhdGggcmVmaWQ9ImlkLmNsYXNzcGF0aCIgLz4KKyAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke2Rpci5idWlsZC5iaW59IiAvPgorICAgIAk8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7ZGlyLmJ1aWxkLnRlc3R9IiAvPiAgICAJCisgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtkaXIuYnVpbGQuc2FtcGxlc30iIC8+CisgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtsaWIueG1sc2VjfSIgLz4KKyAgICAgICAgPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke2xpYi54bWxzZWMuc2FtcGxlc30iIC8+CisgICAgICAgIDxwYXRoZWxlbWVudCBsb2NhdGlvbj0iJHtsaWIueG1sc2VjLnRlc3RzfSIgLz4KKyAgICA8L3BhdGg+CisKKworICAgIDwhLS0gUCBBIFQgVCBFIFIgTiBTIEUgVCBTIC0tPgorICAgIDxwYXR0ZXJuc2V0IGlkPSJpZC5wYXR0ZXJuc2V0LmRpc3RGaWxlcyI+CisJPGluY2x1ZGUgbmFtZT0iYnVpbGQueG1sIi8+CisJPGluY2x1ZGUgbmFtZT0iSU5TVEFMTCIvPgorCTxpbmNsdWRlIG5hbWU9IktFWVMiLz4KKwk8aW5jbHVkZSBuYW1lPSJMSUNFTlNFIi8+CisJPGluY2x1ZGUgbmFtZT0iTk9USUNFIi8+CisJPGluY2x1ZGUgbmFtZT0iUmVhZG1lLmh0bWwiLz4KKwk8aW5jbHVkZSBuYW1lPSJUT0RPIi8+CisJPGluY2x1ZGUgbmFtZT0icHJvdmlkZXIucHJvcGVydGllcyIvPgorCTxpbmNsdWRlIG5hbWU9InByb3h5LnByb3BlcnRpZXMiLz4KKyAgICA8L3BhdHRlcm5zZXQ+CisKKyAgICA8cGF0dGVybnNldCBpZD0iaWQucGF0dGVybnNldC5kYXRhRmlsZXMiPgorCTxpbmNsdWRlIG5hbWU9ImRhdGEvKioiLz4KKwk8ZXhjbHVkZSBuYW1lPSJkYXRhL2RlL3VuaS1zaWVnZW4vKioiLz4KKwk8ZXhjbHVkZSBuYW1lPSJkYXRhL2NvbS9pYm0veHNzNGotMjAwMzAxMjcvKiovKiIvPgorICAgIDwvcGF0dGVybnNldD4KKworICAgIDxwYXR0ZXJuc2V0IGlkPSJpZC5wYXR0ZXJuc2V0LnNyY0ZpbGVzIj4KKwk8aW5jbHVkZSBuYW1lPSJzcmMvKiovKiIvPgorICAgIDwvcGF0dGVybnNldD4KKwkKKyAgICA8cGF0dGVybnNldCBpZD0iaWQucGF0dGVybnNldC5zcmNTYW1wbGVzRmlsZXMiPgorCTxpbmNsdWRlIG5hbWU9InNyY19zYW1wbGVzLyoqLyoiLz4KKyAgICA8L3BhdHRlcm5zZXQ+CisJCisgICAgPHBhdHRlcm5zZXQgaWQ9ImlkLnBhdHRlcm5zZXQuc3JjVW5pdFRlc3RzRmlsZXMiPgorCTxpbmNsdWRlIG5hbWU9InNyY191bml0VGVzdHMvKiovKiIvPgorICAgIDwvcGF0dGVybnNldD4KKworICAgIDwhLS0gVCBBIFIgRyBFIFQgUyAtLT4KKworICAgIDwhLS0gV2VsY29tZSBzY3JlZW4gLS0+CisKKyAgICA8dGFyZ2V0IG5hbWU9ImluaXQiPgorCTxlY2hvIG1lc3NhZ2U9IiIvPgorCTxlY2hvIG1lc3NhZ2U9Ii0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iLz4KKwk8ZWNobyBtZXNzYWdlPSItLS0tLS0tLS0gJHtwcm9kdWN0Lk5hbWV9IHYke3Byb2R1Y3QudmVyc2lvbn0gWyR7eWVhcn1dIC0tLS0tLS0tLS0tIi8+CisJPGVjaG8gbWVzc2FnZT0iLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIvPgorCTxlY2hvIG1lc3NhZ2U9IkJ1aWxkaW5nIHdpdGggJHthbnQudmVyc2lvbn0iLz4KKwk8ZWNobyBtZXNzYWdlPSJKYXZhICR7amF2YS52ZXJzaW9ufSBsb2NhdGVkIGF0ICR7amF2YS5ob21lfSAiLz4KKwk8ZWNobyBtZXNzYWdlPSItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIi8+CisJPGVjaG8gbWVzc2FnZT0iIi8+CisgICAgPC90YXJnZXQ+CisKKyAgICA8IS0tIGVudmlyb25tZW50IHRhcmdldHMgLS0+CisgICAgPCEtLSBzZXQgdXAgLS0+CisgICAgPHRhcmdldCBuYW1lPSJlbnYubWsuZGlycyIgZGVwZW5kcz0iaW5pdCIgdW5sZXNzPSJoYXMuZGlycyIgPgorICAgICAgICA8bWtkaXIgZGlyPSIke2Rpci5idWlsZH0iIC8+CisgICAgICAgIDxta2RpciBkaXI9IiR7ZGlyLmJ1aWxkLmJpbn0iIC8+CisgICAgICAgIDxta2RpciBkaXI9IiR7ZGlyLmJ1aWxkLmRvY3N9IiAvPgorICAgICAgICA8bWtkaXIgZGlyPSIke2Rpci5idWlsZC50ZXN0fSIgLz4KKyAgICAgICAgPG1rZGlyIGRpcj0iJHtkaXIuYnVpbGQubGlic30iIC8+CisgICAgICAgIDxta2RpciBkaXI9IiR7ZGlyLmJ1aWxkLmxpYnMyfSIgLz4KKyAgICAgICAgPG1rZGlyIGRpcj0iJHtkaXIuYnVpbGQuZGlzdH0iIC8+CisgICAgICAgIDxta2RpciBkaXI9IiR7ZGlyLmJ1aWxkLnNhbXBsZXN9IiAvPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0iaGFzLmRpcnMiIHZhbHVlPSJ0cnVlIiAvPgorICAgIDwvdGFyZ2V0ID4KKworICAgIDwhLS0gdGVhciBkb3duIC0tPgorICAgIDx0YXJnZXQgZGVwZW5kcz0iaW5pdCIgbmFtZT0iZW52LnJtLmRpcnMiID4KKyAgICAgICAgPGRlbGV0ZSBkaXI9IiR7ZGlyLmJ1aWxkfSIgLz4KKyAgICA8L3RhcmdldCA+CisgICAgCisgICAgPHRhcmdldCBkZXBlbmRzPSJpbml0IiBuYW1lPSJlbnYucm0uZmlsZXMiID4KKwk8ZGVsZXRlIGZpbGU9InNpZ25hdHVyZS54bWwiLz4KKwk8ZGVsZXRlIGZpbGU9ImF4aXNTaWduYXR1cmUueG1sIi8+CisJPGRlbGV0ZSBmaWxlPSJlbmNyeXB0ZWRJbmZvLnhtbCIvPgorCTxkZWxldGUgZmlsZT0iZGVjcnlwdGVkSW5mby54bWwiLz4KKwk8ZGVsZXRlIGZpbGU9ImtlayIvPgorCTxkZWxldGU+CisJCTxmaWxlc2V0IGRpcj0iLiIgaW5jbHVkZXM9Im1lcmxpbjE2Ki5odG1sLG1lcmxpbnMqLnhtbCIgLz4KKwk8L2RlbGV0ZT4KKyAgICA8L3RhcmdldCA+CisKKyAgICA8dGFyZ2V0IGRlcGVuZHM9ImluaXQiIG5hbWU9IndpdGguY2xvdmVyIiA+CisgICAgCTxjbG92ZXItc2V0dXAgaW5pdHN0cmluZz0iY2xvdmVyLWRiL2NvdmVyYWdlLmRiIiA+CisgICAgCQk8ZmlsZXNldCBkaXI9IiR7ZGlyLnNyY30iID4KKwkgIAkJPGluY2x1ZGUgbmFtZT0iKiovKi5qYXZhIiAvPgorCSAgCQk8ZXhjbHVkZSBuYW1lPSIqKi8qRXhjZXB0aW9uLmphdmEiIC8+CisJCTwvZmlsZXNldCA+CisgICAgIAk8L2Nsb3Zlci1zZXR1cCA+CisgICAgPC90YXJnZXQgPgorCisgICAgPCEtLSBjaGVjayB0YXJnZXRzIC0tPgorCisgICAgPHRhcmdldCBuYW1lPSJkby5jaGVjay5mb3JyZXN0Ij4KKwk8cHJvcGVydHkgZW52aXJvbm1lbnQ9ImVudiIvPgorCTxjb25kaXRpb24gcHJvcGVydHk9Imhhcy5mb3JyZXN0Ij4KKwkJPG9yPgorCQkJPGF2YWlsYWJsZSBmaWxlcGF0aD0iJHtlbnYuUEFUSH0iIGZpbGU9ImZvcnJlc3QiIC8+CisJCQk8YXZhaWxhYmxlIGZpbGVwYXRoPSIke2Vudi5QQVRIfSIgZmlsZT0iZm9ycmVzdC5iYXQiIC8+CisJCTwvb3I+CisJPC9jb25kaXRpb24+CisgICAgPC90YXJnZXQ+CisKKyAgICA8dGFyZ2V0IG5hbWU9ImRvLmNoZWNrLmJpbmRpc3QiPgorCTxjb25kaXRpb24gcHJvcGVydHk9ImlzLmJpbi5kaXN0Ij4KKwkgICAgPGFuZD4KKwkJPGF2YWlsYWJsZSBmaWxlPSIke2xpYi54bWxzZWN9IiAvPgorCQk8YXZhaWxhYmxlIGZpbGU9IiR7bGliLnhtbHNlYy5zYW1wbGVzfSIgLz4KKwkJPGF2YWlsYWJsZSBmaWxlPSIke2xpYi54bWxzZWMudGVzdHN9IiAvPgorCQk8bm90PgorCQkgICAgPGF2YWlsYWJsZSB0eXBlPSJkaXIiIGZpbGU9InNyYyIgLz4KKwkJPC9ub3Q+CisJICAgIDwvYW5kPgorCTwvY29uZGl0aW9uPgorICAgIDwvdGFyZ2V0PgorCisKKyAgICA8IS0tIEIgVSBJIEwgRCAgVCBBIFIgRyBFIFQgUyAtLT4KKyAgICA8IS0tIEZvcnJlc3QgbmV3IC0tPgorICAgIDxwcm9wZXJ0eSBlbnZpcm9ubWVudD0iZW52Ii8+CisgICAgPHByb3BlcnR5IG5hbWU9ImZvcnJlc3QuaG9tZSIgdmFsdWU9IiR7ZW52LkZPUlJFU1RfSE9NRX0iLz4KKyAgICA8cHJvcGVydHkgbmFtZT0icHJvamVjdC5ob21lIiB2YWx1ZT0iJHtkaXIuZG9jc30iLz4JCisgICAgPCEtLSAnc2l0ZScgaXMgYSB0YXJnZXQgaW1wb3J0ZWQgZnJvbSBmb3JyZXN0LmJ1aWxkLnhtbCAtLT4KKyAgICA8aW1wb3J0IGZpbGU9IiR7ZW52LkZPUlJFU1RfSE9NRX0vZm9ycmVzdC5idWlsZC54bWwiIG9wdGlvbmFsPSJ0cnVlIi8+CisgICAgPHRhcmdldCBuYW1lPSJyYXVsLWZvcnJlc3QiICBpZj0iZW52LkZPUlJFU1RfSE9NRSI+CisJPGFudGNhbGwgdGFyZ2V0PSJzaXRlIj48L2FudGNhbGw+CisJPGVjaG8+c29tZXRoaW5nIGhlcmU8L2VjaG8+CisgICAgPC90YXJnZXQ+CisgICAgPCEtLSBzb3VyY2UgLS0+CisgICAgPHRhcmdldCBuYW1lPSJidWlsZC5zcmMiCisgICAgICAgICAgICBkZXBlbmRzPSJkby5idWlsZC5zcmMsZW52Lm1rLmRpcnMsZG8uY2hlY2suYmluZGlzdCIKKwkJCXVubGVzcz0iaXMuYmluLmRpc3QiPgorICAgICAgICA8amF2YWMgdGFyZ2V0PSIxLjQiIHNvdXJjZT0iMS40IiBzcmNkaXI9IiR7ZGlyLnNyY30iCisgICAgICAgICAgICAgICBkZXN0ZGlyPSIke2Rpci5idWlsZC5iaW59IgorICAgICAgICAgICAgICAgZGVidWc9IiR7YnVpbGQuY29tcGlsZS5kZWJ1Z30iPgorICAgICAgICAgICAgPGNvbXBpbGVyYXJnIHZhbHVlPSItWERpZ25vcmUuc3ltYm9sLmZpbGUiIC8+CisgICAgICAgICAgICA8Y2xhc3NwYXRoIHJlZmlkPSJpZC5jbGFzc3BhdGgiIC8+CisgICAgICAgICAgICA8aW5jbHVkZSBuYW1lPSIqKi9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS8qKi8qLmphdmEiIC8+CisgICAgICAgICAgICA8aW5jbHVkZSBuYW1lPSIqKi9qYXZheC94bWwvY3J5cHRvLyoqLyouamF2YSIgLz4KKyAgICAgICAgICAgIDxpbmNsdWRlIG5hbWU9IioqL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvKiovKi5qYXZhIiAvPgorICAgICAgICA8L2phdmFjID4KKworICAgICAgICA8Y29weSB0b2Rpcj0iJHtkaXIuYnVpbGQuYmlufSIgPgorICAgICAgICAgICAgPGZpbGVzZXQgZGlyPSIke2Rpci5zcmN9IgorICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXM9IioqL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Jlc291cmNlLyosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiovb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvcmVzb3VyY2Uvc2NoZW1hLyoiLz4KKyAgICAgICAgPC9jb3B5ID4KKyAgICA8L3RhcmdldCA+CisgICAgCisgICAgPCEtLSB0ZXN0cyAtLT4KKyAgICA8dGFyZ2V0IG5hbWU9ImJ1aWxkLnRlc3QiCisgICAgCQlkZXBlbmRzPSJidWlsZC5zcmMiCisJCXVubGVzcz0iaXMuYmluLmRpc3QiPgorICAgIAk8amF2YWMgc3JjZGlyPSIke2Rpci5zcmMudGVzdH0iCisgICAgICAgICAgICAgICBkZXN0ZGlyPSIke2Rpci5idWlsZC50ZXN0fSIKKyAgICAgICAgICAgICAgIGRlYnVnPSIke2J1aWxkLmNvbXBpbGUuZGVidWd9Ij4KKyAgICAgICAgCTxjbGFzc3BhdGggcmVmaWQ9ImlkLmNsYXNzcGF0aC50ZXN0IiAvPgorICAgICAgICAJPGluY2x1ZGUgbmFtZT0iKiovb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvKiovKi5qYXZhIiAvPgorICAgICAgICAJPGluY2x1ZGUgbmFtZT0iKiovamF2YXgveG1sL2NyeXB0by8qKi8qLmphdmEiIC8+CisgICAgICAgIDwvamF2YWM+CisgICAgICAgIDxjb3B5IHRvZGlyPSIke2Rpci5idWlsZC50ZXN0fSI+CisJICAgICAgCTxmaWxlc2V0IGRpcj0iJHtkaXIuc3JjLnRlc3R9IiBpbmNsdWRlcz0iKiovKi5wcm9wZXJ0aWVzIi8+CisgICAgICAJCTxmaWxlc2V0IGRpcj0iJHtkaXIuc3JjLnRlc3R9IiBpbmNsdWRlcz0iKiovKi54bWwiLz4KKyAgICAgIAkJPGZpbGVzZXQgZGlyPSIke2Rpci5zcmMudGVzdH0iIGluY2x1ZGVzPSIqKi8qLnppcCIvPgorICAgIAk8L2NvcHk+CisgICAgPC90YXJnZXQ+CisKKyAgICA8IS0tIHNhbXBsZXMgLS0+CisgICAgPHRhcmdldCBuYW1lPSJidWlsZC5zYW1wbGVzIgorCQlkZXBlbmRzPSJidWlsZC5zcmMiCisJCXVubGVzcz0iaXMuYmluLmRpc3QiPgorCTxqYXZhYyBzcmNkaXI9IiR7ZGlyLnNyYy5zYW1wbGVzfSIKKwkJZGVzdGRpcj0iJHtkaXIuYnVpbGQuc2FtcGxlc30iCisJCWRlYnVnPSIke2J1aWxkLmNvbXBpbGUuZGVidWd9Ij4KKwkJPGNsYXNzcGF0aCByZWZpZD0iaWQuY2xhc3NwYXRoLnNhbXBsZXMiLz4KKwk8L2phdmFjPgorICAgIDwvdGFyZ2V0PgorCisKKworCTwhLS0gVCBFIFMgVCAgVCBBIFIgRyBFIFQgUyAtLT4gIAorCTwhLS0gYmlnIHRlc3QgLS0+CisJPHRhcmdldCBuYW1lPSJ0ZXN0IiBkZXBlbmRzPSJidWlsZC50ZXN0IgorCQlkZXNjcmlwdGlvbj0iU3RhcnRzIGFsbCBKdW5pdCB0ZXN0cyI+CisJICAgIDxkZWxldGUgZGlyPSIke2Rpci5idWlsZC5qdW5pdC54bWx9Ii8+CisJICAgIDxkZWxldGUgZGlyPSIke2Rpci5idWlsZC5qdW5pdC5odG1sfSIvPgorCSAgICA8bWtkaXIgZGlyPSIke2Rpci5idWlsZC5qdW5pdC54bWx9Ii8+CisJICAgIDxta2RpciBkaXI9IiR7ZGlyLmJ1aWxkLmp1bml0Lmh0bWx9Ii8+CisJICAgIDwhLS0gVGhlIHVuaXQgdGVzdHMgaW5jbHVkZSBzby1jYWxsZWQgaW50ZXJvcGVyYWJpbGl0eSB0ZXN0cyBhZ2FpbnN0CisJICAgICAgICAgY3J5cHRvZ3JhcGhpYyB2YWx1ZXMgZ2VuZXJhdGVkIHVzaW5nIHNvZnR3YXJlIGZyb20gb3RoZXIgdmVuZG9ycy4KKwkgICAgICAgICBUaGlzIHBhY2thZ2UgaW5jbHVkZXMgbWFueSBvZiB0aGVzZSB2ZWN0b3JzLCBidXQgbm90IHRoZSBvbmVzIGZyb20KKwkgICAgICAgICB0aGUgSUJNIGFscGhhV29ya3MgWE1MIFNlY3VyaXR5IFN1aXRlLiBUaGV5IGFyZSBub3QgaW5jbHVkZWQgYmVjYXVzZQorCSAgICAgICAgIElCTSBldmVuIGhhcyB0aGVzZSBzaWduYXR1cmVzIHVuZGVyIGNvcHlyaWdodC4KKwkgICAgICAgICBJZiB5b3Ugd2FudCB0byB0ZXN0IGFnYWluc3QgSUJNLCBkb3dubG9hZCB4c3M0aiBmcm9tCisJCisJICAgICAgICAgaHR0cDovL3d3dy5hbHBoYXdvcmtzLmlibS5jb20vdGVjaC94bWxzZWN1cml0eXN1aXRlCisJCisJICAgICAgICAgYW5kIHB1dCB0aGUgZmlsZXMgaW50byB0aGUKKwkKKwkgICAgICAgICBkYXRhL2NvbS9pYm0veHNzNGotMjAwMzAxMjcvCisJCisJICAgICAgICAgZGlyZWN0b3J5LiBJZiB0aGUgZmlsZSBlbnZlbG9wZWQtcnNhLnNpZyBpcyBmb3VuZCBpbiB0aGF0IGRpcmVjdG9yeSwKKwkgICAgICAgICBJQk0gaXMgJ21hZ2ljYWxseScgaW5jbHVkZWQgaW4gdGhlIHRlc3QgOy0pKQorCSAgICAtLT4KKwkgICAgPGF2YWlsYWJsZSBmaWxlPSJkYXRhL2NvbS9pYm0veHNzNGotMjAwMzAxMjcvZW52ZWxvcGVkLXJzYS5zaWciIHByb3BlcnR5PSJpYm0uYXZhaWxhYmxlIi8+CisgICAgICAgICAgICA8Y29weSBmaWxlPSIke2xpYi54YWxhbi4xfSIgdG9kaXI9IiR7ZGlyLmJ1aWxkLmxpYnMyfSIvPgorICAgICAgICAgICAgPGNvcHkgZmlsZT0iJHtsaWIueGFsYW4uMn0iIHRvZGlyPSIke2Rpci5idWlsZC5saWJzMn0iLz4KKyAgICAgICAgICAgIDxjb3B5IGZpbGU9IiR7bGliLnhhbGFuLjN9IiB0b2Rpcj0iJHtkaXIuYnVpbGQubGliczJ9Ii8+CisgICAgICAgICAgICA8Y29weSBmaWxlPSIke2xpYi54ZXJjZXMuMX0iIHRvZGlyPSIke2Rpci5idWlsZC5saWJzMn0iLz4KKwkgICAgPGp1bml0IGZpbHRlcnRyYWNlPSJ0cnVlIiBmb3JrPSJ0cnVlIiBwcmludHN1bW1hcnk9Im9uIiAKKwkJICAgZmFpbHVyZXByb3BlcnR5PSJidWlsZC50ZXN0LmZhaWxlZCI+CisJICAgICAgICA8anZtYXJnIHZhbHVlPSItRGphdmEuY29tcGlsZXI9Tk9ORSIvPgorCSAgICAgICAgPHN5c3Byb3BlcnR5IGtleT0iYmFzZWRpciIgdmFsdWU9IiR7YmFzZWRpcn0iLz4KKyAgICAgICAgICAgICAgICA8c3lzcHJvcGVydHkga2V5PSJqYXZhLmVuZG9yc2VkLmRpcnMiIHZhbHVlPSIke2Rpci5idWlsZC5saWJzMn0iLz4KKyAgICAgICAgICAgICAgICA8c3lzcHJvcGVydHkga2V5PSJwcm94eUhvc3QiIHZhbHVlPSIke3Byb3h5Lmhvc3R9Ii8+CisgICAgICAgICAgICAgICAgPHN5c3Byb3BlcnR5IGtleT0icHJveHlQb3J0IiB2YWx1ZT0iJHtwcm94eS5wb3J0fSIvPgorICAgICAgICAgICAgICAgIDxzeXNwcm9wZXJ0eSBrZXk9ImphdmEudXRpbC5sb2dnaW5nLmNvbmZpZy5maWxlIiAKKwkJCSAgICAgdmFsdWU9IiR7YmFzZWRpcn0vbG9nZ2luZy5wcm9wZXJ0aWVzIi8+CisJICAgICAgICA8Y2xhc3NwYXRoIHJlZmlkPSJpZC5jbGFzc3BhdGgudGVzdCIvPgorCSAgICAgICAgPGZvcm1hdHRlciB0eXBlPSJ4bWwiLz4KKwkgICAgICAgIDwhLS0gQWxzbyBwdXQgb3V0cHV0IHRvIHNjcmVlbiAtLT4KKwkgICAgICAgIDxmb3JtYXR0ZXIgdHlwZT0icGxhaW4iIHVzZWZpbGU9ImZhbHNlIi8+CisJICAgICAgICA8YmF0Y2h0ZXN0IGZvcms9InllcyIgdG9kaXI9IiR7ZGlyLmJ1aWxkLmp1bml0LnhtbH0iPgorCSAgICAgICAgICAgIDxmaWxlc2V0IGRpcj0iJHtkaXIuc3JjLnRlc3R9Ij4KKwkgICAgICAgICAgICAgICAgPGluY2x1ZGUgbmFtZT0ib3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9BbGxUZXN0cy5qYXZhIi8+CisJICAgICAgICAgICAgIDwvZmlsZXNldD4KKwkgICAgICAgIDwvYmF0Y2h0ZXN0PgorCSAgICAgICAgPHRlc3QgaWY9ImlibS5hdmFpbGFibGUiIG5hbWU9Im9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QuaW50ZXJvcC5JQk1UZXN0IiB0b2Rpcj0iJHtkaXIuYnVpbGQuanVuaXQueG1sfSIvPgorCSAgICA8L2p1bml0PgorCSAgICA8anVuaXRyZXBvcnQgdG9kaXI9IiR7ZGlyLmJ1aWxkLmp1bml0LnhtbH0iPgorCSAgICAgICAgPGZpbGVzZXQgZGlyPSIke2Rpci5idWlsZC5qdW5pdC54bWx9Ij4KKwkgICAgICAgICAgICA8aW5jbHVkZSBuYW1lPSJURVNULSoueG1sIi8+CisJICAgICAgICA8L2ZpbGVzZXQ+CisJICAgICAgICA8cmVwb3J0IGZvcm1hdD0iZnJhbWVzIiB0b2Rpcj0iJHtkaXIuYnVpbGQuanVuaXQuaHRtbH0iLz4KKwkgICAgPC9qdW5pdHJlcG9ydD4KKwkgICAgPGZhaWwgaWY9ImJ1aWxkLnRlc3QuZmFpbGVkIiBtZXNzYWdlPSJVbml0IFRlc3RzIEZhaWxlZCIvPgorCTwvdGFyZ2V0PgorCisgICAgPCEtLSBUZXN0IEpTUiAxMDUvWE1MIERTaWcgQVBJIC0tPgorICAgIDx0YXJnZXQgbmFtZT0idGVzdF9qc3IxMDUiIGRlcGVuZHM9ImJ1aWxkLmphciIKKwkgICAgZGVzY3JpcHRpb249IlJ1bnMgSlNSIDEwNSBpbnRlcm9wIGFuZCB1bml0IHRlc3RzIj4KKyAgICAgICAgPGRlbGV0ZSBkaXI9IiR7ZGlyLmJ1aWxkLmp1bml0LnhtbH0iLz4KKyAgICAgICAgPGRlbGV0ZSBkaXI9IiR7ZGlyLmJ1aWxkLmp1bml0Lmh0bWx9Ii8+CisgICAgICAgIDxta2RpciBkaXI9IiR7ZGlyLmJ1aWxkLmp1bml0LnhtbH0iLz4KKyAgICAgICAgPG1rZGlyIGRpcj0iJHtkaXIuYnVpbGQuanVuaXQuaHRtbH0iLz4KKyAgICAgICAgPGNvcHkgZmlsZT0iJHtsaWIueGFsYW4uMX0iIHRvZGlyPSIke2Rpci5idWlsZC5saWJzMn0iLz4KKyAgICAgICAgPGNvcHkgZmlsZT0iJHtsaWIueGFsYW4uMn0iIHRvZGlyPSIke2Rpci5idWlsZC5saWJzMn0iLz4KKyAgICAgICAgPGNvcHkgZmlsZT0iJHtsaWIueGFsYW4uM30iIHRvZGlyPSIke2Rpci5idWlsZC5saWJzMn0iLz4KKyAgICAgICAgPGNvcHkgZmlsZT0iJHtsaWIueGVyY2VzLjF9IiB0b2Rpcj0iJHtkaXIuYnVpbGQubGliczJ9Ii8+CisgICAgICAgIDxjb3B5IGZpbGU9IiR7amFyLmxpYnJhcnl9IiB0b2Rpcj0iJHtkaXIuYnVpbGQubGliczJ9Ii8+CisgICAgICAgIDxqdW5pdCBmaWx0ZXJ0cmFjZT0idHJ1ZSIgZm9yaz0idHJ1ZSIgcHJpbnRzdW1tYXJ5PSJvbiIgCisJICAgICAgIGZhaWx1cmVwcm9wZXJ0eT0iYnVpbGQudGVzdC5mYWlsZWQiPgorICAgICAgICAgICAgPHN5c3Byb3BlcnR5IGtleT0iYmFzZWRpciIgdmFsdWU9IiR7YmFzZWRpcn0iLz4KKyAgICAgICAgICAgIDxzeXNwcm9wZXJ0eSBrZXk9InByb3h5SG9zdCIgdmFsdWU9IiR7cHJveHkuaG9zdH0iLz4KKwkgICAgPHN5c3Byb3BlcnR5IGtleT0icHJveHlQb3J0IiB2YWx1ZT0iJHtwcm94eS5wb3J0fSIvPgorCSAgICA8c3lzcHJvcGVydHkga2V5PSJqYXZhLnV0aWwubG9nZ2luZy5jb25maWcuZmlsZSIgdmFsdWU9IiR7YmFzZWRpcn0vbG9nZ2luZy5wcm9wZXJ0aWVzIi8+CisgICAgICAgICAgICA8c3lzcHJvcGVydHkga2V5PSJqYXZhLmVuZG9yc2VkLmRpcnMiIHZhbHVlPSIke2Rpci5idWlsZC5saWJzMn0iLz4KKyAgICAgICAgICAgIDxjbGFzc3BhdGggcmVmaWQ9ImlkLmNsYXNzcGF0aC50ZXN0Ii8+CisJICAgIDxmb3JtYXR0ZXIgdHlwZT0ieG1sIi8+CisJICAgIDwhLS0gQWxzbyBwdXQgb3V0cHV0IHRvIHNjcmVlbiAtLT4KKwkgICAgPGZvcm1hdHRlciB0eXBlPSJwbGFpbiIgdXNlZmlsZT0iZmFsc2UiLz4KKwkgICAgPGJhdGNodGVzdCBmb3JrPSJ5ZXMiIHRvZGlyPSIke2Rpci5idWlsZC5qdW5pdC54bWx9Ij4KKwkgICAgICAgIDxmaWxlc2V0IGRpcj0iJHtkaXIuc3JjLnRlc3R9Ij4KKwkgICAgICAgICAgICA8aW5jbHVkZSBuYW1lPSJqYXZheC94bWwvY3J5cHRvLyoqLypUZXN0LmphdmEiLz4KKzwhLS0KKwkgICAgICAgICAgICA8aW5jbHVkZSBuYW1lPSJqYXZheC94bWwvY3J5cHRvLyoqL0ludGVyb3BYTUxEU2lnMTFUZXN0LmphdmEiLz4KKwkgICAgICAgICAgICA8aW5jbHVkZSBuYW1lPSJqYXZheC94bWwvY3J5cHRvLyoqL0NyZWF0ZUludGVyb3BYTUxEU2lnMTFUZXN0LmphdmEiLz4KKy0tPgorICAgICAgICAgICAgICAgIDxleGNsdWRlIG5hbWU9ImphdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0ludGVyb3BDMTRuVGVzdC5qYXZhIi8+CisgICAgICAgICAgICA8L2ZpbGVzZXQ+CisgICAgICAgICAgICA8L2JhdGNodGVzdD4KKyAgICAgICAgPC9qdW5pdD4KKyAgICAgICAgPGp1bml0cmVwb3J0IHRvZGlyPSIke2Rpci5idWlsZC5qdW5pdC54bWx9Ij4KKyAgICAgICAgICAgIDxmaWxlc2V0IGRpcj0iJHtkaXIuYnVpbGQuanVuaXQueG1sfSI+CisJICAgICAgICA8aW5jbHVkZSBuYW1lPSJURVNULSoueG1sIi8+CisgICAgICAgICAgICA8L2ZpbGVzZXQ+CisJICAgIDxyZXBvcnQgZm9ybWF0PSJmcmFtZXMiIHRvZGlyPSIke2Rpci5idWlsZC5qdW5pdC5odG1sfSIvPgorICAgICAgICA8L2p1bml0cmVwb3J0PgorICAgICAgICA8ZmFpbCBpZj0iYnVpbGQudGVzdC5mYWlsZWQiIG1lc3NhZ2U9IlVuaXQgVGVzdHMgRmFpbGVkIi8+CisgICAgPC90YXJnZXQ+CisgICAgCisgICAgPCEtLSBSdW4gYWxsIHRoZSB0ZXN0cyAtLT4KKyAgICA8dGFyZ2V0IG5hbWU9ImFsbC10ZXN0cyIgZGVwZW5kcz0idGVzdCx0ZXN0X2pzcjEwNSIKKwkgICAgZGVzY3JpcHRpb249IlJ1bnMgYWxsIHRoZSB0ZXN0IHRhcmdldHMiPgorICAgIDwvdGFyZ2V0PgorCQorICAgIDwhLS0gWE1MIEVuY3J5cHRpb24gU2FtcGxlcyAtLT4KKyAgICA8dGFyZ2V0IG5hbWU9ImVuY3J5cHQiCisJICAgIGRlcGVuZHM9ImJ1aWxkLnNhbXBsZXMiCisJICAgIGRlc2NyaXB0aW9uPSJlbmNyeXB0cyB4bWwgZGF0YSI+CisJPGRlbGV0ZSBmaWxlPSJlbmNyeXB0ZWRJbmZvLnhtbCIvPgorCTxkZWxldGUgZmlsZT0ia2VrIi8+CisJPGphdmEgY2xhc3NuYW1lPSJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLmVuY3J5cHRpb24uRW5jcnlwdGVyIiAKKwkJICBmYWlsb25lcnJvcj0idHJ1ZSIgCisJCSAgZm9yaz0ieWVzIiAKKwkJICB0YXNrbmFtZT0iRW5jcnlwdGVyIj4KKwkJPGNsYXNzcGF0aCByZWZpZD0iaWQuY2xhc3NwYXRoLnNhbXBsZXMiLz4KKwk8L2phdmE+CisgICAgPC90YXJnZXQ+CisKKyAgICA8dGFyZ2V0IG5hbWU9ImRlY3J5cHQiCisJICAgIGRlcGVuZHM9ImJ1aWxkLnNhbXBsZXMiIAorCSAgICBkZXNjcmlwdGlvbj0iZGVjcnlwdHMgeG1sIGRhdGEiPgorCTxkZWxldGUgZmlsZT0iZGVjcnlwdGVkSW5mby54bWwiLz4KKwk8amF2YSBjbGFzc25hbWU9Im9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMuZW5jcnlwdGlvbi5EZWNyeXB0ZXIiIAorCQkgIGZhaWxvbmVycm9yPSJ0cnVlIiAKKwkJICBmb3JrPSJ5ZXMiIAorCQkgIHRhc2tuYW1lPSJEZWNyeXB0ZXIiPgorCQk8Y2xhc3NwYXRoIHJlZmlkPSJpZC5jbGFzc3BhdGguc2FtcGxlcyIvPgorCTwvamF2YT4KKyAgICA8L3RhcmdldD4KKworICAgIDx0YXJnZXQgbmFtZT0iZW5jcnlwdEFuZERlY3J5cHQiCisJICAgIGRlcGVuZHM9ImVuY3J5cHQsIGRlY3J5cHQiIAorCSAgICBkZXNjcmlwdGlvbj0iZW5jcnlwdHMgYW5kIGRlY3J5cHRzIGFuIGVsZW1lbnQncyBjb250ZW50cyIgLz4KKworICAgIDwhLS0gU2lnbmF0dXJlIFNhbXBsZXMgLS0+CisKKyAgICA8dGFyZ2V0IG5hbWU9InNpZ24iCisJICAgIGRlcGVuZHM9ImJ1aWxkLnNhbXBsZXMiIAorCSAgICBkZXNjcmlwdGlvbj0iY3JlYXRlcyBhIHNpZ25hdHVyZSIgPgorCTxkZWxldGUgZmlsZT0ic2lnbmF0dXJlLnhtbCIvPgorCTxqYXZhIGNsYXNzbmFtZT0ib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2FtcGxlcy5zaWduYXR1cmUuQ3JlYXRlU2lnbmF0dXJlIiAKKwkJICBmYWlsb25lcnJvcj0idHJ1ZSIgCisJCSAgZm9yaz0ieWVzIiAKKwkJICB0YXNrbmFtZT0iQ3JlYXRlU2lnbmF0dXJlIj4KKwkJPGNsYXNzcGF0aCByZWZpZD0iaWQuY2xhc3NwYXRoLnNhbXBsZXMiLz4KKwk8L2phdmE+CisgICAgPC90YXJnZXQ+CisKKyAgICA8dGFyZ2V0IG5hbWU9InZlcmlmeSIgCisJICAgIGRlcGVuZHM9ImJ1aWxkLnNhbXBsZXMiIAorCSAgICBkZXNjcmlwdGlvbj0idmVyaWZpZXMgYSBzaWduYXR1cmUiPgorCTxqYXZhIGNsYXNzbmFtZT0ib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2FtcGxlcy5zaWduYXR1cmUuVmVyaWZ5U2lnbmF0dXJlIiAKKwkJICBmYWlsb25lcnJvcj0idHJ1ZSIgCisJCSAgZm9yaz0ieWVzIiAKKwkJICB0YXNrbmFtZT0iVmVyaWZ5U2lnbmF0dXJlIj4KKwkJPGNsYXNzcGF0aCByZWZpZD0iaWQuY2xhc3NwYXRoLnNhbXBsZXMiLz4KKwk8L2phdmE+CisgICAgPC90YXJnZXQ+CisJCisgICAgPHRhcmdldCBuYW1lPSJzaWduQW5kVmVyaWZ5IgorCSAgICBkZXBlbmRzPSJzaWduLCB2ZXJpZnkiIAorCSAgICBkZXNjcmlwdGlvbj0iY3JlYXRlcyBhbmQgdmVyaWZpZXMgYSBzaWduYXR1cmUiIC8+CisKKyAgICA8IS0tIEF4aXMgU2lnbmF0dXJlIFNhbXBsZXMgLS0+CisKKyAgICA8dGFyZ2V0IG5hbWU9ImF4aXMtc2lnbiIKKwkgICAgZGVwZW5kcz0iYnVpbGQuc2FtcGxlcyIgCisJICAgIGRlc2NyaXB0aW9uPSJheGlzIHNpZ24gc2FtcGxlIj4KKwk8ZWNobyBtZXNzYWdlPSJSdW5uaW5nIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMuQXhpc1NpZ25lciIvPgorCTxqYXZhIGNsYXNzbmFtZT0ib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2FtcGxlcy5BeGlzU2lnbmVyIiAKKwkJICBmYWlsb25lcnJvcj0idHJ1ZSIgZm9yaz0ieWVzIiB0YXNrbmFtZT0iU2lnbkF4aXMiPgorCQk8Y2xhc3NwYXRoIHJlZmlkPSJpZC5jbGFzc3BhdGguc2FtcGxlcyIvPgorCTwvamF2YT4KKyAgICA8L3RhcmdldD4KKworICAgIDx0YXJnZXQgbmFtZT0iYXhpcy12ZXJpZnkiCisJICAgIGRlcGVuZHM9ImJ1aWxkLnNhbXBsZXMiIAorCSAgICBkZXNjcmlwdGlvbj0iYXhpcyB2ZXJpZnkgc2FtcGxlIj4KKwk8ZWNobyBtZXNzYWdlPSJSdW5uaW5nIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMuQXhpc1ZlcmlmaWVyIi8+CisJPGphdmEgY2xhc3NuYW1lPSJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLkF4aXNWZXJpZmllciIgCisJCSAgZmFpbG9uZXJyb3I9InRydWUiIAorCQkgIGZvcms9InllcyIgCisJCSAgdGFza25hbWU9IlZlcmlmeUF4aXMiPgorCQk8Y2xhc3NwYXRoIHJlZmlkPSJpZC5jbGFzc3BhdGguc2FtcGxlcyIvPgorCTwvamF2YT4KKyAgICA8L3RhcmdldD4KKworICAgIDx0YXJnZXQgZGVwZW5kcz0iYXhpcy1zaWduLCBheGlzLXZlcmlmeSIgbmFtZT0iQXhpc1NpZ25BbmRWZXJpZnkiLz4KKworICAgIDwhLS0gTWVnYSBTYW1wbGVzIC0tPgorICAgIDx0YXJnZXQgbmFtZT0ibWVnYS1zYW1wbGUiIAorCSAgICBkZXBlbmRzPSJidWlsZC5zYW1wbGVzIj4KKwk8ZWNobyBtZXNzYWdlPSJOb3cgSSZhcG9zO2xsIHRyeSB0byB2ZXJpZnkgbWVybGlucyBleGFtcGxlIGZpZnRlZW4tSE1BQyIvPgorCTxqYXZhIGNsYXNzbmFtZT0ib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2FtcGxlcy5zaWduYXR1cmUuVmVyaWZ5TWVybGluc0V4YW1wbGVzRmlmdGVlbiIgCisJCSAgZm9yaz0ieWVzIj4KKwkJPGNsYXNzcGF0aCByZWZpZD0iaWQuY2xhc3NwYXRoLnNhbXBsZXMiLz4KKwk8L2phdmE+CisKKwk8ZWNobyBtZXNzYWdlPSIiLz4KKwk8ZWNobyBtZXNzYWdlPSJOb3cgSSZhcG9zO2xsIHRyeSB0byB2ZXJpZnkgbWVybGlucyBleGFtcGxlIHNpeHRlZW4iLz4KKwk8amF2YSBjbGFzc25hbWU9Im9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMuc2lnbmF0dXJlLlZlcmlmeU1lcmxpbnNFeGFtcGxlc1NpeHRlZW4iIAorCQkgIGZvcms9InllcyI+CisgICAgICAgICAgICAgICAgPHN5c3Byb3BlcnR5IGtleT0iamF2YS5lbmRvcnNlZC5kaXJzIiB2YWx1ZT0iJHtkaXIuYnVpbGQubGliczJ9Ii8+CisJCTxjbGFzc3BhdGggcmVmaWQ9ImlkLmNsYXNzcGF0aC5zYW1wbGVzIi8+CisJPC9qYXZhPgorCisJPGVjaG8gbWVzc2FnZT0iIi8+CisJPGVjaG8gbWVzc2FnZT0iTm93IEkmYXBvcztsbCB0cnkgdG8gdmVyaWZ5IG1lcmxpbnMgZXhhbXBsZSB0d2VudHkgdGhyZWUiLz4KKwk8amF2YSBjbGFzc25hbWU9Im9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMuc2lnbmF0dXJlLlZlcmlmeU1lcmxpbnNFeGFtcGxlc1R3ZW50eVRocmVlIiAKKwkJICBmb3JrPSJ5ZXMiPgorICAgICAgICAgICAgICAgIDxzeXNwcm9wZXJ0eSBrZXk9ImphdmEuZW5kb3JzZWQuZGlycyIgdmFsdWU9IiR7ZGlyLmJ1aWxkLmxpYnMyfSIvPgorCQk8Y2xhc3NwYXRoIHJlZmlkPSJpZC5jbGFzc3BhdGguc2FtcGxlcyIvPgorCTwvamF2YT4KKworCTxlY2hvIG1lc3NhZ2U9IiIvPgorCTxlY2hvIG1lc3NhZ2U9Ik5vdyBJJmFwb3M7bGwgY3JlYXRlIGEgc2lnbmF0dXJlIGluIHNpZ25hdHVyZS54bWwgYW5kIHZlcmlmeSBpdCIvPgorCTxqYXZhIGNsYXNzbmFtZT0ib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2FtcGxlcy5zaWduYXR1cmUuQ3JlYXRlU2lnbmF0dXJlIiAKKwkJICBmb3JrPSJ5ZXMiPgorCQk8Y2xhc3NwYXRoIHJlZmlkPSJpZC5jbGFzc3BhdGguc2FtcGxlcyIvPgorCTwvamF2YT4KKwk8amF2YSBjbGFzc25hbWU9Im9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMuc2lnbmF0dXJlLlZlcmlmeVNpZ25hdHVyZSIgCisJCSAgZm9yaz0ieWVzIj4KKwkJPGNsYXNzcGF0aCByZWZpZD0iaWQuY2xhc3NwYXRoLnNhbXBsZXMiLz4KKwk8L2phdmE+CisJCQorCTxlY2hvIG1lc3NhZ2U9IiIvPgorCTxlY2hvIG1lc3NhZ2U9Ik5vdyBJJmFwb3M7bGwgY3JlYXRlIGEgc2lnbmF0dXJlIGxpa2UgbWVybGluLTE2IGJ1dCB3aXRob3V0IFhTTFQiLz4KKwk8amF2YSBjbGFzc25hbWU9Im9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMuc2lnbmF0dXJlLkNyZWF0ZU1lcmxpbnNFeGFtcGxlU2l4dGVlbiIgCisJCSAgZm9yaz0ieWVzIj4KKwkJPGNsYXNzcGF0aCByZWZpZD0iaWQuY2xhc3NwYXRoLnNhbXBsZXMiLz4KKwk8L2phdmE+CisKKwk8ZWNobyBtZXNzYWdlPSIiLz4KKwk8ZWNobyBtZXNzYWdlPSJQbGVhc2UgbG9vayBpbnRvIGxvZy50eHQsIG1lcmxpbnNTaXh0ZWVuUmVjcmVhdGVkLnhtbCBhbmQgc2lnbmF0dXJlLnhtbCIvPgorCisKKwk8ZWNobyBtZXNzYWdlPSIiLz4KKwk8ZWNobyBtZXNzYWdlPSJOb3cgSSZhcG9zO2xsIGNyZWF0ZSBhIHNpZ25hdHVyZSBsaWtlIG1lcmxpbi0yMyBidXQgd2l0aG91dCBYU0xUIi8+CisJPGphdmEgY2xhc3NuYW1lPSJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLnNpZ25hdHVyZS5DcmVhdGVNZXJsaW5zRXhhbXBsZVR3ZW50eVRocmVlIiAKKwkJICBmb3JrPSJ5ZXMiPgorCQk8Y2xhc3NwYXRoIHJlZmlkPSJpZC5jbGFzc3BhdGguc2FtcGxlcyIvPgorCTwvamF2YT4KKworCTxlY2hvIG1lc3NhZ2U9IiIvPgorCTxlY2hvIG1lc3NhZ2U9IlBsZWFzZSBsb29rIGludG8gbG9nLnR4dCwgbWVybGluc1R3ZW50eVRocmVlUmVjcmVhdGVkLnhtbCBhbmQgc2lnbmF0dXJlLnhtbCIvPgorICAgIDwvdGFyZ2V0PgorCisgICAgPHRhcmdldCBuYW1lPSJjcmVhdGVFbnZlbG9wZSIgCisJICAgIGRlcGVuZHM9ImJ1aWxkLnNhbXBsZXMiPgorCTxqYXZhIGNsYXNzbmFtZT0ib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2FtcGxlcy5zaWduYXR1cmUuQ3JlYXRlRW52ZWxvcGluZ1NpZ25hdHVyZSIgCisJCSAgZm9yaz0ieWVzIj4KKwkJPGNsYXNzcGF0aCByZWZpZD0iaWQuY2xhc3NwYXRoLnNhbXBsZXMiLz4KKwk8L2phdmE+CisgICAgPC90YXJnZXQ+CisKKyAgICA8IS0tIEpTUiAxMDUgU2FtcGxlcyAtLT4KKyAgICA8dGFyZ2V0IG5hbWU9ImpzcjEwNS1zYW1wbGVzIiAKKwkgICAgZGVwZW5kcz0iYnVpbGQuc2FtcGxlcyI+CisgICAgICAgIDxlY2hvIG1lc3NhZ2U9IkdlbmVyYXRpbmcgYSBkZXRhY2hlZCBzaWduYXR1cmUiLz4KKyAgICAgICAgPGphdmEgY2xhc3NuYW1lPSJqYXZheC54bWwuY3J5cHRvLmRzaWcuc2FtcGxlcy5HZW5EZXRhY2hlZCIKKwkgICAgZm9yaz0ieWVzIj4KKwkgICAgPGNsYXNzcGF0aCByZWZpZD0iaWQuY2xhc3NwYXRoLnNhbXBsZXMiLz4KKwkgICAgPHN5c3Byb3BlcnR5IGtleT0icHJveHlIb3N0IiB2YWx1ZT0iJHtwcm94eS5ob3N0fSIvPgorCSAgICA8c3lzcHJvcGVydHkga2V5PSJwcm94eVBvcnQiIHZhbHVlPSIke3Byb3h5LnBvcnR9Ii8+CisJPC9qYXZhPgorCTxlY2hvIG1lc3NhZ2U9IkdlbmVyYXRpbmcgYW4gZW52ZWxvcGVkIHNpZ25hdHVyZSIvPgorCTxqYXZhIGNsYXNzbmFtZT0iamF2YXgueG1sLmNyeXB0by5kc2lnLnNhbXBsZXMuR2VuRW52ZWxvcGVkIgorCSAgICBmb3JrPSJ5ZXMiPgorCSAgICA8YXJnIHZhbHVlPSIke2Rpci5zcmMuc2FtcGxlc30vamF2YXgveG1sL2NyeXB0by9kc2lnL3NhbXBsZXMvZW52ZWxvcGUueG1sIi8+CisJICAgIDxjbGFzc3BhdGggcmVmaWQ9ImlkLmNsYXNzcGF0aC5zYW1wbGVzIi8+CisJPC9qYXZhPgorCTxlY2hvIG1lc3NhZ2U9IkdlbmVyYXRpbmcgYW4gZW52ZWxvcGluZyBzaWduYXR1cmUiLz4KKwk8amF2YSBjbGFzc25hbWU9ImphdmF4LnhtbC5jcnlwdG8uZHNpZy5zYW1wbGVzLkdlbkVudmVsb3BpbmciCisJICAgIGZvcms9InllcyI+CisJICAgIDxjbGFzc3BhdGggcmVmaWQ9ImlkLmNsYXNzcGF0aC5zYW1wbGVzIi8+CisJPC9qYXZhPgorCTxlY2hvIG1lc3NhZ2U9IlZhbGlkYXRpbmcgYSBzaWduYXR1cmUiLz4KKwk8amF2YSBjbGFzc25hbWU9ImphdmF4LnhtbC5jcnlwdG8uZHNpZy5zYW1wbGVzLlZhbGlkYXRlIgorCSAgICBmb3JrPSJ5ZXMiPgorCSAgICA8YXJnIHZhbHVlPSIke2Rpci5zcmMuc2FtcGxlc30vamF2YXgveG1sL2NyeXB0by9kc2lnL3NhbXBsZXMvZW52ZWxvcGVkU2lnbmF0dXJlLnhtbCIvPgorCSAgICA8Y2xhc3NwYXRoIHJlZmlkPSJpZC5jbGFzc3BhdGguc2FtcGxlcyIvPgorCTwvamF2YT4KKyAgICA8L3RhcmdldD4KKwkKKyAgICA8IS0tIEQgSSBTIFQgUiBJIEIgVSBUIEkgTyBOICBUIEEgUiBHIEUgVCBTIC0tPgorICAgIDwhLS0gZGlzdHJpYnV0aW9uIHRhcmdldHMgLS0+CisKKyAgICA8dGFyZ2V0IG5hbWU9ImJ1aWxkLmRpc3QiICAgICAgIAorCSAgICBkZXBlbmRzPSJidWlsZC5zcmNkaXN0LGJ1aWxkLmJpbmRpc3QiIC8+CisKKyAgICA8dGFyZ2V0IG5hbWU9ImJ1aWxkLnNyY2Rpc3QiIAorCSAgICBkZXBlbmRzPSJjbGVhbiIKKwlkZXNjcmlwdGlvbj0iQ3JlYXRlcyB0aGUgc291cmNlIGRpc3RyaWJ1dGlvbiIgPgorCQkKKwk8bWtkaXIgZGlyPSIke2Rpci5idWlsZC5zcmNkaXN0fSIvPgorCisJPGNvcHkgdG9kaXI9IiR7ZGlyLmJ1aWxkLnNyY2Rpc3R9Ij4KKwkgICAgPGZpbGVzZXQgZGlyPSIuIj4KKwkJPHBhdHRlcm5zZXQgcmVmaWQ9ImlkLnBhdHRlcm5zZXQuZGlzdEZpbGVzIi8+CisJCTxwYXR0ZXJuc2V0IHJlZmlkPSJpZC5wYXR0ZXJuc2V0LnNyY0ZpbGVzIi8+CisJCTxwYXR0ZXJuc2V0IHJlZmlkPSJpZC5wYXR0ZXJuc2V0LnNyY1VuaXRUZXN0c0ZpbGVzIi8+CisJCTxwYXR0ZXJuc2V0IHJlZmlkPSJpZC5wYXR0ZXJuc2V0LnNyY1NhbXBsZXNGaWxlcyIvPgorCQk8cGF0dGVybnNldCByZWZpZD0iaWQucGF0dGVybnNldC5kYXRhRmlsZXMiLz4KKwkJCQkKKwkJPGluY2x1ZGUgbmFtZT0iYW50LyoqLyoiLz4KKwkgICAgPC9maWxlc2V0PgorCTwvY29weT4KKworCTxta2RpciBkZXNjcmlwdGlvbj0iY3JlYXRlIGFuIGVtcHR5IGxpYnMgZGlyIgorCSAgICAgICBkaXI9IiR7ZGlyLmJ1aWxkLnNyY2Rpc3R9L2xpYnMiLz4KKwkJCisJPHppcCBiYXNlZGlyPSIke2Rpci5idWlsZC5kaXN0fS9zcmMiIAorCSAgICAgemlwZmlsZT0iJHtkaXIuYnVpbGR9LyR7cHJvZHVjdC5uYW1lfS1zcmMtJHtwcm9kdWN0X3ZlcnNpb259LnppcCIvPgorICAgIDwvdGFyZ2V0PgorCisgICAgPHRhcmdldCBuYW1lPSJidWlsZC5iaW5kaXN0IgorCSAgICBkZXBlbmRzPSJjbGVhbixidWlsZC5zcmMsYnVpbGQuamFyLGJ1aWxkLmRvY3MsYnVpbGQueGRvY3MiIAorCSAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlcyB0aGUgYmluYXJ5IGRpc3RyaWJ1dGlvbiI+CisKKwk8bWtkaXIgZGlyPSIke2Rpci5idWlsZC5iaW5kaXN0fSIvPgorCisJPGNvcHkgdG9kaXI9IiR7ZGlyLmJ1aWxkLmJpbmRpc3R9Ij4KKwkgICAgPGZpbGVzZXQgZGlyPSIuIj4KKwkJPHBhdHRlcm5zZXQgcmVmaWQ9ImlkLnBhdHRlcm5zZXQuZGlzdEZpbGVzIi8+CisJCTxwYXR0ZXJuc2V0IHJlZmlkPSJpZC5wYXR0ZXJuc2V0LmRhdGFGaWxlcyIvPgorCQk8cGF0dGVybnNldCByZWZpZD0iaWQucGF0dGVybnNldC5zcmNVbml0VGVzdHNGaWxlcyIvPgorCQk8cGF0dGVybnNldCByZWZpZD0iaWQucGF0dGVybnNldC5zcmNTYW1wbGVzRmlsZXMiLz4KKwkJCQkKKwkJPGluY2x1ZGUgbmFtZT0iYW50LyoqLyoiLz4KKwkgICAgPC9maWxlc2V0PgorCTwvY29weT4KKworCTxta2RpciBkaXI9IiR7ZGlyLmJ1aWxkLmJpbmRpc3R9L2xpYnMiLz4KKworCTxjb3B5IGZpbGU9IiR7bGliLnhlcmNlcy4xfSIgCisJICAgICAgdG9kaXI9IiR7ZGlyLmJ1aWxkLmJpbmRpc3R9L2xpYnMiLz4KKwk8Y29weSBmaWxlPSIke2xpYi54YWxhbi4xfSIgCisJICAgICAgdG9kaXI9IiR7ZGlyLmJ1aWxkLmJpbmRpc3R9L2xpYnMiLz4KKwk8Y29weSBmaWxlPSIke2xpYi54YWxhbi4yfSIgCisJICAgICAgdG9kaXI9IiR7ZGlyLmJ1aWxkLmJpbmRpc3R9L2xpYnMiLz4KKwk8Y29weSBmaWxlPSIke2xpYi54YWxhbi4zfSIgCisJICAgICAgdG9kaXI9IiR7ZGlyLmJ1aWxkLmJpbmRpc3R9L2xpYnMiLz4KKwk8Y29weSBmaWxlPSIke2xpYi5sb2dnaW5nfSIgCisJICAgICAgdG9kaXI9IiR7ZGlyLmJ1aWxkLmJpbmRpc3R9L2xpYnMiLz4KKwk8Y29weSBmaWxlPSIke2xpYi5sb2dnaW5nLmFwaX0iIAorCSAgICAgIHRvZGlyPSIke2Rpci5idWlsZC5iaW5kaXN0fS9saWJzIi8+CisJCisJPGNvcHkgZGVzY3JpcHRpb249ImNvcHkgeG1sc2VjIEpBUiIgCisJICAgICAgZmlsZT0iJHtqYXIubGlicmFyeX0iIAorCSAgICAgIHRvZGlyPSIke2Rpci5idWlsZC5iaW5kaXN0fS9saWJzIi8+CisJPGNvcHkgZGVzY3JpcHRpb249ImNvcHkgeG1sc2VjIHNhbXBsZSBKQVIiIAorCSAgICAgIGZpbGU9IiR7amFyLnNhbXBsZXN9IiAKKwkgICAgICB0b2Rpcj0iJHtkaXIuYnVpbGQuYmluZGlzdH0vbGlicyIvPgorCTxjb3B5IGRlc2NyaXB0aW9uPSJjb3B5IHhtbHNlYyB0ZXN0IEpBUiIgCisJICAgICAgZmlsZT0iJHtqYXIudGVzdHN9IiAKKwkgICAgICB0b2Rpcj0iJHtkaXIuYnVpbGQuYmluZGlzdH0vbGlicyIvPgorCisJPG1rZGlyIGRpcj0iJHtkaXIuYnVpbGQuYmluZGlzdH0vZG9jIi8+CisJPGNvcHkgdG9kaXI9IiR7ZGlyLmJ1aWxkLmJpbmRpc3R9L2RvYyI+CisJICAgIDxmaWxlc2V0IGRpcj0iJHtkaXIuZG9jc30vYnVpbGQvc2l0ZSIvPgorCTwvY29weT4KKwk8bWtkaXIgZGlyPSIke2Rpci5idWlsZC5iaW5kaXN0fS9kb2MvSmF2YS9hcGkiIC8+CisJPGNvcHkgdG9kaXI9IiR7ZGlyLmJ1aWxkLmJpbmRpc3R9L2RvYy9KYXZhL2FwaSI+CisJICAgIDxmaWxlc2V0IGRpcj0iJHtkaXIuYnVpbGQuZG9jcy5odG1sfS9qYXZhZG9jIi8+CisJPC9jb3B5PgorCisJPHppcCBiYXNlZGlyPSIke2Rpci5idWlsZC5kaXN0fS9iaW4iIAorCSAgICAgemlwZmlsZT0iJHtkaXIuYnVpbGR9LyR7cHJvZHVjdC5uYW1lfS1iaW4tJHtwcm9kdWN0X3ZlcnNpb259LnppcCIvPgorICAgIDwvdGFyZ2V0PgorCisJCisgICAgPCEtLSBNIEkgUyBDIEUgTCBBIE4gRSBPIFUgUyAgVCBBIFIgRyBFIFQgUyAtLT4KKworICAgIDwhLS0gZG9jdW1lbnRhdGlvbiAtLT4KKyAgICA8dGFyZ2V0IG5hbWU9ImJ1aWxkLmRvY3MiPgorCTxta2RpciBkaXI9IiR7ZGlyLmJ1aWxkLmphdmFkb2N9Ii8+CisJPGphdmFkb2MgY2xhc3NwYXRocmVmPSJpZC5jbGFzc3BhdGgiCisJCSBkZXN0ZGlyPSIke2Rpci5idWlsZC5qYXZhZG9jfSI+CisJICAgIDxwYWNrYWdlc2V0IGRpcj0iJHtkaXIuc3JjfSI+CisgICAgICAJCTxpbmNsdWRlIG5hbWU9Im9yZy9hcGFjaGUveG1sL3NlY3VyaXR5LyoqIi8+CisgICAgICAJCTxpbmNsdWRlIG5hbWU9ImphdmF4L3htbC9jcnlwdG8vKioiLz4KKyAgICAgICAgICAgIDwvcGFja2FnZXNldD4KKyAgICAgICAgICAgIDxncm91cCB0aXRsZT0iSlNSIDEwNSBQYWNrYWdlcyIgcGFja2FnZXM9ImphdmF4LnhtbC5jcnlwdG8qIi8+CisgICAgICAgICAgICA8Z3JvdXAgdGl0bGU9IlhNTFNlYyBQYWNrYWdlcyIgcGFja2FnZXM9Im9yZy5hcGFjaGUueG1sLnNlY3VyaXR5KiIvPgorICAgIAk8L2phdmFkb2M+CisgICAgPC90YXJnZXQ+CisKKyAgICA8dGFyZ2V0IG5hbWU9ImJ1aWxkLnhkb2NzIgorICAgICAgICAgICAgZGVwZW5kcz0iZG8uY2hlY2suZm9ycmVzdCIKKwkgICAgaWY9Imhhcy5mb3JyZXN0Ij4KKwk8IS0tIENhbGwgRm9ycmVzdCBleHRlcm5hbGx5IC0tPgorCTxleGVjIGV4ZWN1dGFibGU9ImZvcnJlc3QiCisJICAgICAgb3M9IkxpbnV4IFN1bk9TIgorCSAgICAgIGRpcj0iJHtkaXIuZG9jc30iIC8+CisJPGV4ZWMgZXhlY3V0YWJsZT0iZm9ycmVzdC5iYXQiCisJICAgICAgb3M9IldpbmRvd3MiCisJICAgICAgZGlyPSIke2Rpci5kb2NzfSIgLz4KKyAgICA8L3RhcmdldD4KKyAgICAKKyAgICA8dGFyZ2V0IG5hbWU9ImNsb3Zlci5yZXBvcnQuaHRtbCIgZGVwZW5kcz0id2l0aC5jbG92ZXIiPgorCTxjbG92ZXItcmVwb3J0PgorICAgICAgCQk8Y3VycmVudCBvdXRmaWxlPSIke2Rpci5idWlsZC5jb3ZlcmFnZX0iCisgICAgICAJCQkJIHRpdGxlPSJBcGFjaGUgWE1MLVNlY3VyaXR5IGNvdmVyYWdlIj4KKyAgICAgIAkJCTxmaWxlc2V0IGRpcj0iJHtkaXIuc3JjfSI+CisJCSAgCQk8aW5jbHVkZSBuYW1lPSIqKi8qLmphdmEiLz4KKwkJICAJCTxleGNsdWRlIG5hbWU9IioqLypFeGNlcHRpb24uamF2YSIgLz4KKwkJCTwvZmlsZXNldD4KKyAgICAgICAgIAkJPGZvcm1hdCB0eXBlPSJodG1sIi8+IAorICAgICAgCQk8L2N1cnJlbnQ+CSAKKyAgIAk8L2Nsb3Zlci1yZXBvcnQ+CisgICAgPC90YXJnZXQ+CisKKyAgICA8IS0tIGphcnMgLS0+CisgICAgPHRhcmdldCBuYW1lPSJtYW5pZmVzdCI+CisJPHRzdGFtcC8+CisJPG1rZGlyIGRpcj0iJHtkaXIubWFuaWZlc3R9Ii8+CisJPGNvcHkgZmlsZT0iJHtiYXNlZGlyfS9MSUNFTlNFIiB0b2ZpbGU9IiR7ZGlyLm1hbmlmZXN0fS9MSUNFTlNFLnR4dCIvPgorCTxjb3B5IGZpbGU9IiR7YmFzZWRpcn0vTk9USUNFIiB0b2ZpbGU9IiR7ZGlyLm1hbmlmZXN0fS9OT1RJQ0UudHh0Ii8+CisJPG1hbmlmZXN0IGZpbGU9IiR7amFyLm1hbmlmZXN0fSIgbW9kZT0icmVwbGFjZSI+CisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9IkJ1aWx0LUJ5IiB2YWx1ZT0iJHt1c2VyLm5hbWV9Ii8+CisgICAgICAgICAgICA8c2VjdGlvbiBuYW1lPSIke3Byb2R1Y3Quc2hvcnRuYW1lfSI+CisJCTxhdHRyaWJ1dGUgbmFtZT0iSW1wbGVtZW50YXRpb24tVGl0bGUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT0iJHtwcm9kdWN0Lk5hbWV9Ii8+CisJCTxhdHRyaWJ1dGUgbmFtZT0iSW1wbGVtZW50YXRpb24tVmVyc2lvbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSIke3Byb2R1Y3QudmVyc2lvbn0gJHtUT0RBWX0iLz4KKwkJPGF0dHJpYnV0ZSBuYW1lPSJJbXBsZW1lbnRhdGlvbi1WZW5kb3IiCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT0iQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24iLz4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPC9tYW5pZmVzdD4KKyAgICA8L3RhcmdldD4KKworICAgIDx0YXJnZXQgbmFtZT0iYnVpbGQuamFyIgorCSAgICBkZXBlbmRzPSJtYW5pZmVzdCxidWlsZC5zcmMsYnVpbGQudGVzdCxidWlsZC5zYW1wbGVzIj4KKworCTwhLS0gTWFpbiBMaWJyYXJ5IC0tPgorCTxqYXIgYmFzZWRpcj0iJHtkaXIuYnVpbGQuYmlufSIKKwkgICAgIGV4Y2x1ZGVzPSJvcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZW1wLyoqIgorCSAgICAgaW5jbHVkZXM9Im9yZy9hcGFjaGUvKiosIG9yZy9qY3AvKiosIGphdmF4L3htbC9jcnlwdG8vKioiCisJICAgICBkZXN0ZmlsZT0iJHtqYXIubGlicmFyeX0iIAorCSAgICAgbWFuaWZlc3Q9IiR7amFyLm1hbmlmZXN0fSI+CisJICA8bWV0YWluZiBmaWxlPSIke2Rpci5tYW5pZmVzdH0vKi50eHQiLz4KKwk8L2phcj4KKworCTwhLS0gU2FtcGxlcyAtLT4KKwk8amFyIGJhc2VkaXI9IiR7ZGlyLmJ1aWxkLnNhbXBsZXN9IiAKKwkgICAgIGV4Y2x1ZGVzPSJvcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZW1wLyoqIiAKKwkgICAgIGluY2x1ZGVzPSJvcmcvYXBhY2hlLyoqLCBqYXZheC94bWwvY3J5cHRvLyoqIgorCSAgICAgZGVzdGZpbGU9IiR7amFyLnNhbXBsZXN9IiAKKwkgICAgIG1hbmlmZXN0PSIke2phci5tYW5pZmVzdH0iPgorCSAgPG1ldGFpbmYgZmlsZT0iJHtkaXIubWFuaWZlc3R9LyoudHh0Ii8+CisJPC9qYXI+CisJCQorCTwhLS0gVGVzdHMgLS0+CisJPGphciBiYXNlZGlyPSIke2Rpci5idWlsZC50ZXN0fSIgCisJICAgICBleGNsdWRlcz0ib3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVtcC8qKiIgCisJICAgICBpbmNsdWRlcz0ib3JnL2FwYWNoZS8qKiwgamF2YXgveG1sL2NyeXB0by8qKiIKKwkgICAgIGRlc3RmaWxlPSIke2phci50ZXN0c30iIAorCSAgICAgbWFuaWZlc3Q9IiR7amFyLm1hbmlmZXN0fSI+CisJICA8bWV0YWluZiBmaWxlPSIke2Rpci5tYW5pZmVzdH0vKi50eHQiLz4KKwk8L2phcj4KKyAgICA8L3RhcmdldD4KKworICAgIDx0YXJnZXQgbmFtZT0iYnVpbGQuc3JjLmphciIKKwkgICAgZGVwZW5kcz0ibWFuaWZlc3QsYnVpbGQuc3JjIj4KKworCTxqYXIgYmFzZWRpcj0iJHtkaXIuYnVpbGQuYmlufSIgCisJICAgICBleGNsdWRlcz0ib3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVtcC8qKiIKKwkgICAgIGluY2x1ZGVzPSIqKi9MSUNFTlNFLCAqKi9OT1RJQ0UsIG9yZy9hcGFjaGUvKiosIG9yZy9qY3AvKiosIGphdmF4L3htbC9jcnlwdG8vKiosICoudHh0IiAKKwkgICAgIGphcmZpbGU9IiR7amFyLmxpYnJhcnl9IiAKKwkgICAgIG1hbmlmZXN0PSIke2phci5tYW5pZmVzdH0iLz4KKyAgICA8L3RhcmdldD4KKworICAgIDwhLS0gYXJjaGl2ZSB0YXJnZXRzIC0tPgorICAgIDx0YXJnZXQgbmFtZT0iYnVpbGQuYXJjaCIKKyAgICAgICAgICAgIGRlcGVuZHM9ImVudi5tay5kaXJzIiA+CisgICAgPC90YXJnZXQgPgorCisgICAgPCEtLSBhbGlhc2VzIC0tPgorICAgIDx0YXJnZXQgbmFtZT0iYnVpbGQuYWxsIiAgICAgICAgZGVwZW5kcz0iZW52Lm1rLmRpcnMsYnVpbGQuc3JjLGJ1aWxkLmRvY3MsYnVpbGQudGVzdCxidWlsZC5zYW1wbGVzLGJ1aWxkLmphcixidWlsZC5hcmNoIiAvPgorCisgICAgPHRhcmdldCBuYW1lPSJjb21waWxlIiAgICAgICAgICBkZXBlbmRzPSJidWlsZC5zcmMiIC8+CisgICAgPHRhcmdldCBuYW1lPSJkb2NzIiAgICAgICAgICAgICBkZXBlbmRzPSJidWlsZC5kb2NzIiAvPgorICAgIDx0YXJnZXQgbmFtZT0ieGRvY3MiICAgICAgICAgICAgZGVwZW5kcz0iYnVpbGQueGRvY3MiIC8+CisgICAgPHRhcmdldCBuYW1lPSJqYXZhZG9jIiAgICAgICAgICBkZXBlbmRzPSJidWlsZC5kb2NzIiAvPgorICAgIDx0YXJnZXQgbmFtZT0iamFyIiAgICAgICAgICAgICAgZGVwZW5kcz0iYnVpbGQuamFyIiAvPgorICAgIDx0YXJnZXQgbmFtZT0iZGlzdCIgICAgICAgICAgICAgZGVwZW5kcz0iYnVpbGQuZGlzdCIgLz4KKyAgICA8dGFyZ2V0IG5hbWU9ImNsZWFuIiAgICAgICAgICAgIGRlcGVuZHM9ImVudi5ybS5kaXJzLGVudi5ybS5maWxlcyIvPgorICAgIDx0YXJnZXQgbmFtZT0iZ3VtcCIJCSAgICBkZXBlbmRzPSJjbGVhbiwgZG9jcywgamFyLCB0ZXN0Ii8+CisgICAgPHRhcmdldCBuYW1lPSJjbG92ZXIiCSAgICBkZXBlbmRzPSJjbGVhbiwgd2l0aC5jbG92ZXIsIHRlc3QsIGNsb3Zlci5yZXBvcnQuaHRtbCIgLz4KKworICAgIDwhLS0gbWFpbnRlbmFuY2UgdGFyZ2V0cyAtLT4KKworICAgIDwhLS0gaGVscCB0YXJnZXRzIC0tPgorICAgIDx0YXJnZXQgZGVwZW5kcz0iaW5pdCIgbmFtZT0iaGVscCIgPgorICAgICAgICA8ZWNobyBtZXNzYWdlPSJzeW5vcHNpczogYW50IFt0YXJnZXRdIiAvPgorICAgICAgICA8ZWNobyBtZXNzYWdlPSJ0YXJnZXRzOiIgLz4KKyAgICAgICAgPGVjaG8gbWVzc2FnZT0iY29tcGlsZSAgLSBidWlsZHMgeG1sLXNlY3VyaXR5IHNvdXJjZSIgLz4KKyAgICAgICAgPGVjaG8gbWVzc2FnZT0iZG9jcyAgICAgLSBjcmVhdGVzIGphdmEgZG9jdW1lbnRhdGlvbiIgLz4KKyAgICAgICAgPGVjaG8gbWVzc2FnZT0ieGRvY3MgICAgLSBjcmVhdGVzIHdlYnNpdGUiIC8+CisgICAgICAgIDxlY2hvIG1lc3NhZ2U9ImphciAgICAgIC0gY3JlYXRlcyBhIGphciBmaWxlLCBjb250YWluaW5nIHRoZSBidWlsdCBzb3VyY2UiIC8+CisgICAgICAgIDxlY2hvIG1lc3NhZ2U9ImRpc3QgICAgIC0gY3JlYXRlcyBhIGRpc3RyaWJ1dGlvbiIgLz4KKyAgICAgICAgPGVjaG8gbWVzc2FnZT0iICAgICAgICAgICAoc2VlIGFudCBoZWxwLmRpc3QgZm9yIG1vcmUgaW5mb3JtYXRpb24pIiAvPgorICAgICAgICA8ZWNobyBtZXNzYWdlPSJjbGVhbiAgICAtIHJlc2V0cyB0aGUgYnVpbGQgZW52aXJvbm1lbnQiIC8+CisgICAgICAgIDxlY2hvIG1lc3NhZ2U9InRlc3QgICAgIC0gcGVyZm9ybXMgYSBzZXJpZXMgb2YgdGVzdHMiIC8+CisgICAgICAgIDxlY2hvIG1lc3NhZ2U9IiAgICAgICAgICAgKHNlZSBhbnQgaGVscC50ZXN0IGZvciBtb3JlIGluZm9ybWF0aW9uKSIgLz4KKyAgICAgICAgPGVjaG8gbWVzc2FnZT0iaGVscCAgICAgLSBkaXNwbGF5cyB0aGlzIGhlbHAgbWVzc2FnZSAoZGVmYXVsdCkiIC8+CisgICAgICAgIDxlY2hvIG1lc3NhZ2U9ImNvbmZpZyAgIC0gb3B0aW9uYWwgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiIgLz4KKyAgICAgICAgPGVjaG8gbWVzc2FnZT0iICAgICAgICAgICAoc2VlIGFudCBoZWxwLmNvbmZpZyBmb3IgbW9yZSBpbmZvcm1hdGlvbikiIC8+CisgICAgICAgIDxlY2hvIG1lc3NhZ2U9IiIvPgorICAgICAgICA8ZWNobyBtZXNzYWdlPSJTZWUgYWxzbyBoZWxwLnNhbXBsZXMgZm9yIGhlbHAgb24gYnVpbGRpbmcgc2FtcGxlcyIvPgorICAgIDwvdGFyZ2V0ID4KKyAgICA8dGFyZ2V0IGRlcGVuZHM9ImluaXQiIG5hbWU9ImhlbHAuZGlzdCIgPgorICAgICAgICA8ZWNobyBtZXNzYWdlPSJkaXN0OiIgLz4KKyAgICAgICAgPGVjaG8gbWVzc2FnZT0idGhpcyB0YXJnZXQgd2lsbDoiIC8+CisgICAgICAgIDxlY2hvIG1lc3NhZ2U9IjEuICBidWlsZCB0aGUgc291cmNlIGZpbGVzLCIgLz4KKyAgICAgICAgPGVjaG8gbWVzc2FnZT0iMi4gIGNyZWF0ZSB0aGUgYXBwcm9wcmlhdGUgamF2YSBkb2N1bWVudGF0aW9uLCIgLz4KKyAgICAgICAgPGVjaG8gbWVzc2FnZT0iMy4gIGNyZWF0ZSBkaXN0cmlidXRpb24gamFycywiIC8+CisgICAgICAgIDxlY2hvIG1lc3NhZ2U9IjQuICBjb3B5IHRoZSBsaWNlbnNlLCBjb3BpZXMgc291cmNlIGFuZCIgLz4KKyAgICAgICAgPGVjaG8gbWVzc2FnZT0iNS4gIGNyZWF0ZXMgZGlzdHJpYnV0aW9uIGFyY2hpdmVzIiAvPgorICAgIDwvdGFyZ2V0ID4KKworICAgIDx0YXJnZXQgZGVwZW5kcz0iaW5pdCIgbmFtZT0iaGVscC50ZXN0IiA+CisgICAgICAgIDxlY2hvIG1lc3NhZ2U9InRlc3QJCQktIHJ1bnMgYWxsIHVuaXQgYW5kIGludGVyb3AgdGVzdHMiIC8+CisgICAgICAgIDxlY2hvIG1lc3NhZ2U9InRlc3RfZXhjX2MxNG4gLSBydW5zIHRoZSBleGNsdXNpdmUgYzE0biB0ZXN0cyIgLz4KKyAgICAgICAgPGVjaG8gbWVzc2FnZT0idGVzdF94ZW5jCS0gZG9lcyBhbGwgZW5jcnlwdGlvbiByZWxhdGVkIHRlc3RzIiAvPgorICAgICAgICA8ZWNobyBtZXNzYWdlPSJjbG92ZXIJCS0gZ2VuZXJhdGVzIGNsb3ZlciBjb3ZlcmFnZSByZXBvcnRzIiAvPgorICAgIDwvdGFyZ2V0ID4KKworICAgIDx0YXJnZXQgZGVwZW5kcz0iaW5pdCIgbmFtZT0iaGVscC5zYW1wbGVzIiA+CisJPGVjaG8gbWVzc2FnZT0iIi8+CisJPGVjaG8gbWVzc2FnZT0iLS0tLS0tLS0tLS0tLSBTaWduYXR1cmUgU2FtcGxlcyAtLS0tLS0tLS0tLS0tLS0tIi8+CisJPGVjaG8gbWVzc2FnZT0iIi8+CisJPGVjaG8gbWVzc2FnZT0iZ2VuZXJhdGUta2V5cyAgICAgIC0gZ2VuZXJhdGVzIG5ldyBrZXlzIHRvIGJlIHVzZWQgYnkgb3RoZXIiLz4KKwk8ZWNobyBtZXNzYWdlPSIgICAgICAgICAgICAgICAgICAgICBleGFtcGxlcyIvPgorCTxlY2hvIG1lc3NhZ2U9InNpZ24gICAgICAgICAgICAgICAtIHJ1bnMgQ3JlYXRlU2lnbmF0dXJlIHNhbXBsZSIvPgorCTxlY2hvIG1lc3NhZ2U9InZlcmlmeSAgICAgICAgICAgICAtIHJ1bnMgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBzYW1wbGUiLz4KKwk8ZWNobyBtZXNzYWdlPSJzaWduQW5kVmVyaWZ5ICAgICAgLSBydW5zIHNpZ24gYW5kIHRoZW4gdmVyaWZ5Ii8+CisJPGVjaG8gbWVzc2FnZT0iYXhpcy1zaWduICAgICAgICAgIC0gcnVucyBheGlzIHNpZ25pbmcgc2FtcGxlIi8+CisJPGVjaG8gbWVzc2FnZT0iYXhpcy12ZXJpZnkgICAgICAgIC0gcnVucyBheGlzIHZlcmlmaWNhdGlvbiBzYW1wbGUiLz4KKwk8ZWNobyBtZXNzYWdlPSJBeGlzU2lnbkFuZFZlcmlmeSAgLSBydW5zIGF4aXMgc2lnbiBhbmQgdmVyaWZ5Ii8+CisJPGVjaG8gbWVzc2FnZT0iY3JlYXRlRW52ZWxvcGUgICAgIC0gcnVucyBlbnZlbG9waW5nIHNpZ25hdHVyZSBzYW1wbGUiLz4KKwk8ZWNobyBtZXNzYWdlPSJtZWdhLXNhbXBsZSAgICAgICAgLSBydW5zIGFsbCBiaWcgc2lnbmF0dXJlIHNhbXBsZXMiLz4KKwk8ZWNobyBtZXNzYWdlPSIiLz4KKwk8ZWNobyBtZXNzYWdlPSItLS0tLS0tLS0tLS0tIEVuY3J5cHRpb24gU2FtcGxlcyAtLS0tLS0tLS0tLS0tLS0tIi8+CisJPGVjaG8gbWVzc2FnZT0iIi8+CisJPGVjaG8gbWVzc2FnZT0iZW5jcnlwdCAgICAgICAgICAgIC0gcnVuIGVuY3J5cHRpb24gc2FtcGxlIiAvPgorCTxlY2hvIG1lc3NhZ2U9ImRlY3J5cHQgICAgICAgICAgICAtIHJ1biBkZWNyeXB0aW9uIHNhbXBsZSIgLz4KKwk8ZWNobyBtZXNzYWdlPSJlbmNyeXB0QW5kRGVjcnlwdCAgLSBydW4gZW5jcnlwdGlvbiBzYW1wbGUiIC8+CisgICAgPC90YXJnZXQ+CisJCQorICAgIDx0YXJnZXQgZGVwZW5kcz0iaW5pdCIgbmFtZT0iaGVscC5jb25maWciID4KKyAgICAgICAgPGVjaG8gbWVzc2FnZT0iMS4gIHRvIGNvbmZpZ3VyZSB0aGUgcHJvdmlkZXIgc2V0aW5ncywiIC8+CisgICAgICAgIDxlY2hvIG1lc3NhZ2U9IiAgICBzZWUgdGhlIGNvbnRlbnRzIG9mIHByb3ZpZGVyLnByb3BlcnRpZXMiIC8+CisgICAgICAgIDxlY2hvIG1lc3NhZ2U9IjIuICB0byBjb25maWd1cmUgdGhlIHByb3h5IHNldGluZ3MsIiAvPgorICAgICAgICA8ZWNobyBtZXNzYWdlPSIgICAgc2VlIHRoZSBjb250ZW50cyBvZiBwcm94eS5wcm9wZXJ0aWVzIiAvPgorICAgIDwvdGFyZ2V0ID4KKzwvcHJvamVjdD4KKzwhLS0gS2VlcCB0aGlzIGNvbW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZQorTG9jYWwgdmFyaWFibGVzOgorbW9kZTogeG1sCitzZ21sLW9taXR0YWc6bmlsCitzZ21sLXNob3J0dGFnOm5pbAorc2dtbC1uYW1lY2FzZS1nZW5lcmFsOm5pbAorc2dtbC1nZW5lcmFsLWluc2VydC1jYXNlOmxvd2VyCitzZ21sLW1pbmltaXplLWF0dHJpYnV0ZXM6bmlsCitzZ21sLWFsd2F5cy1xdW90ZS1hdHRyaWJ1dGVzOnQKK3NnbWwtaW5kZW50LXN0ZXA6NAorc2dtbC1pbmRlbnQtZGF0YTp0CitzZ21sLXBhcmVudC1kb2N1bWVudDpuaWwKK3NnbWwtZXhwb3NlZC10YWdzOm5pbAorc2dtbC1sb2NhbC1jYXRhbG9nczooIi91c3IvbGliL3NnbWwvY2F0YWxvZyIgIi91c3Ivc2hhcmUveGVtYWNzMjEveGVtYWNzLXBhY2thZ2VzL2V0Yy9wc2dtbC1kdGRzL0NBVEFMT0ciKQorc2dtbC1sb2NhbC1lY2F0LWZpbGVzOigiRUNBVCIgIn4vc2dtbC9FQ0FUIiAiL3Vzci9saWIvc2dtbC9FQ0FUIiAiL3Vzci9sb2NhbC9saWIvc2dtbC9FQ0FUIikKK0VuZDoKKy0tPgpkaWZmIC0tZ2l0IGEvYy8ucHJvamVjdCBiL2MvLnByb2plY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VlNWVkYgotLS0gL2Rldi9udWxsCisrKyBiL2MvLnByb2plY3QKQEAgLTAsMCArMSwxMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8cHJvamVjdERlc2NyaXB0aW9uPg0KKwk8bmFtZT54bWwtc2VjdXJpdHktYzwvbmFtZT4NCisJPGNvbW1lbnQ+PC9jb21tZW50Pg0KKwk8cHJvamVjdHM+DQorCTwvcHJvamVjdHM+DQorCTxidWlsZFNwZWM+DQorCTwvYnVpbGRTcGVjPg0KKwk8bmF0dXJlcz4NCisJPC9uYXR1cmVzPg0KKzwvcHJvamVjdERlc2NyaXB0aW9uPg0KZGlmZiAtLWdpdCBhL2MvQ0hBTkdFTE9HLnR4dCBiL2MvQ0hBTkdFTE9HLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjVmODhkCi0tLSAvZGV2L251bGwKKysrIGIvYy9DSEFOR0VMT0cudHh0CkBAIC0wLDAgKzEsMTQxIEBACitDaGFuZ2VzIHNpbmNlIDEuNS4xCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqIEZpeCBmb3IgYnVnIzQ4Njc2LCBSZXRyaWV2YWxNZXRob2QgaGFuZGxlciAoU0MpCisqIEZpeCBmb3IgYnVnIzQ1ODY3LCBzdXBwb3J0IGZvciA+MSBDUkwgcGVyIEtleUluZm8gKFNDKQorKiBGaXggZm9yIGJ1ZyM0OTE0OCwgYnVmZmVyIGluaXRpYWxpemF0aW9uIGlzc3VlIChTQykKKyogRml4IGZvciBidWcjNDkyNTUsIHZlY3RvciBpbmRleCBidWcgKFNDKQorKiBGaXggZm9yIGJ1ZyM0OTI1Nywgc3R5bGVzaGVldCBhcHBlbmQgYnVnIChTQykKKyogRml4IGZvciBidWcjNDkyNjAsIGhlYWRlciBndWFyZCBpbiBYUGF0aCB0cmFuc2Zvcm0gaGVhZGVyIChTQykKKyogRml4IGZvciBidWcjNDkyNjQsIHN0cmluZyByZWxlYXNlIGNyYXNoIChTQykKKyogRml4IGZvciBidWcjNDQ5ODMsIGltcHJvcGVyIGMxNG4gb2YgWFNMVCAoU0MpCisqIEZpeCBmb3IgYnVnIzQ5Mjg5LCBzZXR0ZXJzIGZvciBSZWZlcmVuY2UgVHlwZS9JZCAoU0MpCisqIEZpeCBmb3IgYnVnIzQ5MzcxLCBza2lwIGNvbW1lbnRzIGluIFg1MDlDZXJ0aWZpY2F0ZSBlbGVtZW50cyAoU0MpCisqIEZpeCBmb3IgYnVnIzQ5NDU5LCBtb3JlIGhlYWRlciBndWFyZHMgKFNDKQorKiBFeHBvc2UgYWxnb3JpdGhtIFVSSSBvbiBTaWduYXR1cmUgYW5kIFJlZmVyZW5jZSBvYmplY3RzIChTQykKKyogV2hpdGUvYmxhY2tsaXN0aW5nIG9mIG90aGVyd2lzZSByZWdpc3RlcmVkIGFsZ29yaXRobXMgKFNDKQorKiBBZGQgc2VsZWN0ZWQgWE1MIFNpZ25hdHVyZSAxLjEgS2V5SW5mbyBleHRlbnNpb25zIChTQykKKyogQWRkIGVsbGlwdGljIGN1cnZlIHNpZ25hdHVyZXMgdmlhIEVDRFNBIChTQykKKyogU3VwcG9ydCBkZWJ1Z2dpbmcgb2YgUmVmZXJlbmNlL1NpZ25lZEluZm8gZGF0YSAoU0MpCisKK0NoYW5nZXMgYmV0d2VlbiAxLjUgYW5kIDEuNS4xCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqIEZpeCBmb3IgYnVnIzQ3MzUzIGluIGMxNG4gb2YgZGVmYXVsdCBuYW1lc3BhY2VzIChTQykKKyogRml4IFNwYXJjIGNvbXBpbGF0aW9uIGJ1ZyAoU0MpCisqIEZpeCBmb3IgQ1ZFLTIwMDktMDIxNyAoU0MpCisKK0NoYW5nZXMgYmV0d2VlbiB2ZXJzaW9uIDEuNCBhbmQgMS41Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqIE1ha2UgU0hBLTEgdGhlIGltcGxpY2l0IGRlZmF1bHQgRGlnZXN0TWV0aG9kIGZvciBSU0EtT0FFUAorICBrZXkgdHJhbnNwb3J0LCBhbGxvd2luZyBmb3IgaW50ZXJvcCB1bnRpbCBicm9rZW4gaW1wbHMgYXJlIGZpeGVkIChTQykgCisqIEZpeCBtZW1vcnkgbGVhayBpbiBPcGVuU1NMIFJTQS9EU0Ega2V5IGNsb25pbmcgKFNDKQorKiBFeHBvc2UgS2V5SW5mbyBleHRlbnNpb25zIHZpYSBET00gKFNDKQorKiBGaXggYzE0biB0byBvbWl0IHN0YW5kYXJkIHhtbG5zOnhtbCBkZWNsYXJhdGlvbnMgKFNDKQorKiBBZGQgcGFydGlhbCBzdXBwb3J0IGZvciBJbmNsdXNpdmUgQzE0TiAxLjEgd2l0aCByZWdhcmQgdG8geG1sOmlkIGJ1dCBub3QgeG1sOmJhc2UgKFNDKQorKiBGaW5pc2ggcG9ydCB0byBYZXJjZXMgMy4wIChTQykKKyogNjQtYml0IEFQSSBjaGFuZ2VzIChTQykKKyogQWRkIFZDOSBidWlsZCBmaWxlcyAoU0MpCisKK0NoYW5nZXMgYmV0d2VlbiB2ZXJzaW9uIDEuMy4xIGFuZCAxLjQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyogRml4IGV4Y2x1c2l2ZSBjMTRuIG5hbWVzcGFjZSBidWcgKHJldi4gNTI2OTM5KSAoQkwpCisqIEFkZCBjb25zdCBzcGVjaWZpZXJzIGFuZCBtZXRob2RzIHRvIHZhcmlvdXMgY2xhc3NlcyAoU0MpCisqIEFkZCBiZXR0ZXIgZXh0cmFjdGlvbiBvZiBvcGVuc3NsIGJ1aWxkIHNldHRpbmdzIHVzaW5nIHBrZy1jb25maWcgKFNDKQorKiBGaXggWFNFQ25ldyBtYWNybyB0byBzdG9wIGNhdGNoaW5nIGFyYml0cmFyeSBlcnJvcnMgYW5kIHJlcG9ydAorICBjcnlwdG8gZXhjZXB0aW9ucyBpbnN0ZWFkIG9mIHR1cm5pbmcgdGhlbSBpbnRvIGFsbG9jYXRpb24gZXJyb3JzIChTQykKKyogQWRkIHZhcmlvdXMgbWlzc2luZyBmaWxlcyB0byBkaXN0IHRhcmdldCAoU0MpCisKK0NoYW5nZXMgYmV0d2VlbiB2ZXJzaW9uIDEuMyBhbmQgMS4zLjEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKiBSZWZhY3RvciBOSVggYnVpbGQgdG8gdXNlIGF1dG9tYWtlIGFuZCBsaWJ0b29sCisqIEluaXRpYWwgc3VwcG9ydCBmb3IgQVBJIGNoYW5nZXMgaW4gWGVyY2VzIDMuMAorKiBGaXggYnVnIGluIGF1dGNvbmYgdGhhdCB3b3VsZCBzdG9wIHByb3BlciBkZXRlY3Rpb24gb2YgWGVyY2VzCisgIGFiaWxpdHkgdG8gc2V0IElkIGF0dHJpYnV0ZXMKKyogRml4IGJ1ZyA0MDA4NSAtIGluY29ycmVjdCBPSURzIG9uIG5vbiBTSEExIGJhc2VkIFJTQSBzaWduYXR1cmVzLgorKiBVcGRhdGUgc3VwcG9ydCBmb3Igbm9uIFNIQTEgYmFzZWQgUlNBIHNpZ25hdHVyZXMKKyogUmVtb3ZlIHJlZHVuZGFudCBjb2RlIGZyb20gU2lnbmVkSW5mbyB0aGF0IHdhcyBwcmV2ZW50aW5nIHRoZSAKKyAgbGlicmFyeSBmcm9tIGxvYWRpbmcgc2lnbmF0dXJlcyBpdCBkaWQgbm90IGhhdmUgYW4gYWxnb3JpdGhtIGhhcmQKKyAgd2lyZWQgZm9yCisqIEZpeCBidWcgaW4gZW52ZWxvcGUgdHJhbnNmb3JtIHdoZW4gaW5wdXQgbm9kZXNldCBpcyBhIGRvY3VtZW50CisgIGZyYWdtZW50IHJhdGhlciB0aGFuIHRoZSBlbnRpcmUgZG9jdW1lbnQgYW5kIHRoZSBjYW5vbmljYWxpc2F0aW9uCisgIHVzZXMgYSBuYW1lc3BhY2UgdGhhdCB3YXMgbm90IGRlZmluZWQgZGlyZWN0bHkgaW4gdGhlIGZyYWdtZW50CisqIEZpeCBidWcgaW4gRFNJR1hQYXRoRmlsdGVyRXhwciB3aGVyZSBtX2xvYWRlZCB3YXMgbm90IGluaXRpYWxpc2VkCisgIHBvdGVudGlhbGx5IGNhdXNpbmcgYW4gZXhjZXB0aW9uIHdoZW4gYW4gWFBhdGggZXhwcmVzc2lvbiB3YXMgbG9hZGVkCisgIHJlcG9ydGVkIGJ5IFJhbGYgIlNhYm8iIFNhYm9yb3dza2kuCisKK0NoYW5nZXMgYmV0d2VlbiB2ZXJzaW9uIDEuMi4xIGFuZCAxLjMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKiBQZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMgaW4gY2Fub25pY2FsaXNhdGlvbgorKiBJbXBsZW1lbnRlZCBhbGdvcml0aG0gaGFuZGxlcnMgZm9yIHRoZSBkaWdpdGFsIHNpZ25hdHVyZSBjbGFzc2VzLCAKKyAgdG8gcHJvdmlkZSBhbGdvcml0aG0gZXh0ZW5zaWJpbGl0eQorKiBVcGRhdGUgc2lnbmF0dXJlIGNsYXNzZXMgdG8gcGFzcyBpbiByZXF1ZXN0ZWQgYWxnb3JpdGhtcyBhcyBVUklzIAorICByYXRoZXIgdGhhbiBlbnVtcy4gIEVudW0gYmFzZWQgbWV0aG9kcyBhcmUgbm93ICBkZXByZWNhdGVkLgorKiBGaXggbWVtb3J5IGxlYWtzIGluIE9wZW5TU0wgd3JhcHBpbmcgY29kZQorKiBQcm92aWRlIGFiaWxpdHkgZm9yIGNhbGxpbmcgYXBwbGljYXRpb24gdG8gZGVmaW5lIHdoZXRoZXIgCisgIHJlZmVyZW5jZXMgYXJlIGludGVybG9ja2luZy4KKyogUHJvdmlkZSBzb21lIHN0YWJpbGl0eSBpZiB0aGUgQXBhY2hlIGtleXN0b3JlIGlzIGNvcnJ1cHRlZCB1bmRlciBXaW5kb3dzLgorKiBJbml0aWFsIGltcG9ydCBvZiBiZXRhIE5TUyBjcnlwdG8gc3VwcG9ydAorKiBDb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBYS01TIG1lc3NhZ2Ugc2V0CisqIE1ldGhvZHMgdG8gYWxsb3cgbG9hZGluZyBvZiBlbmNyeXB0ZWQgZGF0YSB3aXRob3V0IGRvaW5nIGRlY3J5cHQgCisgIGFuZCB0byBwcm9jZXNzIGEgZGVjcnlwdC9lbmNyeXB0IG9wZXJhdGlvbiB3aXRob3V0IHJlcGxhY2luZyB0aGUgCisgIG9yaWdpbmFsIG5vZGVzCisqIFByb3ZpZGUgIE1TIFZDKysgMjAwNSBwcm9qZWN0IGZpbGVzCisqIEZpeCBidWcgd2hlbiBlbmNyeXB0aW5nIHNtYWxsIGlucHV0IGRvY3MKKyogSW1wbGVtZW50IGNoZWNrcyBmb3IgYnJva2VuIE9wZW5TU0wgc3VwcG9ydCB1bmRlciBTb2xhcmlzIDEwCisqIEFkZCAtLXdpdGgteGFsYW4sIC0td2l0aC1vcGVuc3NsLCAtLXdpdGgteGVyY2VzIGFuZCAKKyAgLS1lbmFibGUtd2FybmVycm9yIGZsYWdzIGluIGNvbmZpZ3VyZQorKiBDb25maWd1cmUgbm93IGRldGVjdHMgaWYgWGFsYW4gaXMgaW5zdGFsbGVkIHJhdGhlciB0aGFuIGhhdmluZworICBYQUxBTkNST09UIGJlaW5nIGEgcG9pbnRlciB0byB0aGUgY29tcGlsZSBkaXJlY3RvcnkKKy0gUmVvcmRlciBoYXNoaW5nIGluIERTSUdSZWZlcmVuY2UuY3BwIGFzIHBlciBzdWdnZXN0aW9uIGJ5IFBldGVyIEd1YmlzCistIFVwZGF0ZSBtaWNyb3NvZnQgcHJvamVjdCBmaWxlcyB0byByZWZsZWN0IG5ldyB2ZXJzaW9uIGFzIHBlciBTY290dCBDYW50b3IKKy0gUmVwbGFjZSBzZXRBdHRyaWJ1dGUgd2l0aCBzZXRBdHRyaWJ1dGVOUyBjYWxscworLSBBZGQgbWV0aG9kcyB0byBPcGVuU1NMIGNsYXNzZXMgdG8gZXh0cmFjdCBPcGVuU1NMIG9iamVjdHMKKy0gRml4IGhhbmRsaW5nIG9mIGxpYmNyeXB0byBvbiBTb2xhcmlzIHBsYXRmb3JtCistIEZpeCBidWcgaW4gQ2Fub25jaWNhbGlzYXRpb24gY291cnRlc3kgb2YgU2NvdHQgQ2FudG9yCisKK0NoYW5nZXMgYmV0d2VlbiB2ZXJzaW9uIDEuMiBhbmQgMS4yLjEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKiBGaXhlZCBsaWJyYXJ5IHZlcnNpb25zIGluIFdpbmRvd3MgYnVpbGRzICh3ZXJlIGJlaW5nIGdlbmVyYXRlZCBhcyAxLjEpCisqIEFkZGVkICJObyBYYWxhbiIgYnVpbGRzIGZvciB4a2xpZW50IHVuZGVyIFdpbmRvd3MgVkM2LjAKKyogQWRkZWQgIk5vIFhhbGFuIiBidWlsZHMgZm9yIGFsbCBwcm9qZWN0cyBpbiBWQyA3LjAKKworCitDaGFuZ2VzIGJldHdlZW4gdmVyc2lvbiAxLjEgYW5kIDEuMgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKiBTdGFydGVkIGEgY2hhbmdlbG9nIDo+CisqIFJlbW92ZSBNRkMgZGVwZW5kZW5jeSBhbmQgY2xlYW4gdXAgbWVtb3J5IGRlYnVnZ2luZworKiBSZW1vdmUgZHluYW1pY19jYXN0cyBhbmQgUlRUSSByZXF1aXJlbWVudAorKiBJbXBsZW1lbnRlZCBYS01TIE1lc3NhZ2UgZ2VuZXJhdGlvbiBhbmQgcHJvY2Vzc2luZworKiBJbXBsZW1lbnRlZCBjb21tYW5kIGxpbmUgWEtNUyB0b29sIGZvciBnZW5lcmF0aW5nIGFuZCBkdW1waW5nIFhLTVMgbWVzc2FnZXMKKyogU3VwcG9ydCBmb3IgREVTVERJUiBhcyBwcm92aWRlZCBieSB2aWxsZS5za3l0dGFAaWtpLmZpIGluIEJ1Z3ppbGxhIDI4NTIwCisqIFVwZGF0ZSB0byBBcGFjaGUgbGljZW5jZSAyLjAuCisqIEFkZCBzdXBwb3J0IGZvciBTSEEyMjQvMjU2LzM4NC81MTIgKHJlcXVpcmVzIE9wZW5TU0wgMC45LjggQmV0YSkKKyogUGF0Y2ggZm9yIE1hYyBPUyBYIGNvbXBpbGUgLSBwcm92aWRlZCBieSBTY290dCBDYW50b3IgLSBjYW50b3IuMkBvc3UuZWR1IC0gU2VlIEJ1Z3ppbGxhICMzNDkyMAorKiBVcGRhdGVzIHRvIGNvbXBpbGUgYWdhaW5zdCBYYWxhbiAxLjkKKyogQmFja3BvcnQgdG8gY29tcGlsZSB3aXRoIFhlcmNlcyAyLjEKKyogRml4IGJ1ZyB3aXRoIE5VTEwgcG9pbnRlciB3aGVuIHZhbGlkYXRpbmcgb3Igc2lnbmluZyBlbXB0eSByZWZlcmVuY2UgbGlzdHMgLSBmaXggYXMgc3VnZ2VzdGVkIGJ5IEplc3NlIFBlbHRvbiA8anNwQFBLQy5jb20+IG9uIDIzIE1hcmNoIDIwMDUgb24gc2VjdXJpdHktZGV2QHhtbAorKiBQcm92aWRlZCBzdXBwb3J0IGZvciBub21pbmF0aW5nIG5hbWVzcGFjZSBiYXNlZCBJZCBhdHRyaWJ1dGVzCisqIENoYW5nZSB0byBhbGxvdyBhcHBzIHRvIGNhbGN1bGF0ZSBhbmQgb2J0YWluIHNpZ25lZCBpbmZvIGhhc2ggLSBmcm9tIEVja2VoYXJkLkhlcm1hbm5Ac29mdHdhcmVhZy5jb20gLSBzZWUgZW1haWwgb2YgMiBNYXJjaCAyMDA1IG9uIHNlY3VyaXR5LWRldkB4bWwKKyogUGF0Y2ggZm9yIGxvbmcgUlNBIGtleXMgcHJvdmlkZWQgYnkgTWljaGFlbCBCcmF1bm9lZGVyIC0gbWljaGFlbEBtaWIucHJpdi5hdCB0byBzZWN1cml0eS1kZXZAeG1sIG9uIDE2IE5vdiAyMDA1CisqIE1lbW9yeSBsZWFrIGluIE9wZW5TU0xDcnlwdG9CYXNlNjQgcmVwb3J0ZWQgYnkgSmVzc2UgUGVsdG9uIGZpeGVkLgorKiBNb3ZlIHRvIGludGVybmFsIEJhc2U2NCBkZWNvZGVyIGluIGEgbnVtYmVyIG9mIG1ldGhvZHMgdG8gaGFuZGxlIG5vbi13cmFwcGluZyBkYXRhCisqIFJlc2l6ZSBidWZmZXIgaW4gT3BlblNTTENyeXB0b0tleVJTQSBmb3IgbGFyZ2VyIFJTQSBrZXlzIC0gYXMgc3VibWl0dGVkIGJ5IFZhZGltIElzbWFpbG92IDx3b3JuZG93bkBnbWFpbC5jb20+IDMgRGVjZW1iZXIgMjAwNQorKiBSZW1vdmUgcmVkdW5kYW50IG1fa2V5VHlwZSBjbGFzcyB2YXJpYWJsZSBmcm9tIE9wZW5TU0xDcnlwdG9LZXlSU0EgYXMgcmVwb3J0ZWQgYnkgSmVzc2UgUGVsdG9uIChqc3BAcGtjLmNvbSkgb24gc2VjdXJpdHktZGV2QHhtbAorKiBEb24ndCB0aHJvdyBhbiBleGNlcHRpb24gd2hlbiBhbiBSU0EgZGVjcnlwdCBmYWlscyBkdXJpbmcgc2lnIHZhbGlkYXRpb24gLSB0aGlzIGlzIGEgZmFpbGVkIHZhbGlkYXRlLCBub3QgYW4gZXJyb3IKKyogU2h1dGRvd24gT3BlblNTTCBwcm9wZXJseSAtIGFzIHN1Z2dlc3RlZCBieSBKZXNzZSBQZWx0b24gPGpzcEBQS0MuY29tPiBpbiBlLW1haWwgdG8gc2VjdXJpdHktZGV2QHhtbCBvbiA5IE1hcmNoIDIwMDUKKyogQ2hhbmdlZCBzY29wZSBvZiBXaW5DYXBpQ3J5cHRvS2V5OjppbXBvcnRLZXkoKSBmcm9tIHByaXZhdGUgdG8gcHVibGljLiBJdCByZXR1cm5zIGtleSBub3csIGluc3RlYWQgb2Ygdm9pZC4KKyogRml4IHByb2JsZW0gaW4gV2luZG93cyBDQVBJIHdoZXJlIFhTRUMgZG9lc24ndCB3b3JrIGlmIHVzZXIgZG9lc24ndCBoYXZlIGFkbWluIHJpZ2h0cy4KKyogQnVnIGZpeCBpbiBXaW5kb3dzIENBUEkgY29kZSBmb3Igc29tZSBXMksgbWFjaGluZXMgLSByZXBvcnRlZCBieSBBbmRyemVqIE1hdGVqa28gNC81LzIwMDQKKyogRml4IGJ1aWxkIG9uIG5vbiBXSU5DQVBJIHN5c3RlbXMsIGFzIHJlcG9ydGVkIGJ5IE1pbGFuIFRvbWljIG9uIDIyLzQvMjAwNAorKiBOZXcgY29uc3RydWN0b3IgYWRkZWQgdG8gV2luQ2FwaVg1MDkKKyogRml4ZWQgQnVnIGluIGVuY29kZSgpIFhTQ3J5cHRDcnlwdG9CYXNlNjQuCisqIEZpeCBidWcgaW4gWFBhdGhGaWx0ZXIgdHJhbnNmb3JtIHdoZW4gY2hlY2tpbmcgaWYgYW4gYXR0cmlidXRlIGlzIGluIHRoZSBpbnB1dCBub2RlIHNldC4KKyogRml4IGJ1ZyBpbiBpbiBVVEYgdHJhbnNjb2RlciBmb3IgY291bnRpbmcgb2YgdHJhbnNjb2RlZCBjaGFyYWN0ZXJzIChjb3VudCBjaGFyYWN0ZXJzIG5vdCBieXRlcykgcmVwb3J0ZWQgYnkgTWlsYW4gVG9taWMKKyogTW92ZSBmdW5jdGlvbiBkZWZpbml0aW9ucyBpbiB0aGUgV2luZG93cyBCaW5JbnB1dCBzdHJlYW0gY2xhc3MgdG8gc3RhdGljIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIFhlcmNlcy4gIEFzIHN1Z2dlc3RlZCBieSBKZXNzZSBQZWx0b24gPGpzcEBQS0MuY29tPiBvbiAyIEZlYiAyMDA1IGluIHNlY3VyaXR5LWRldkB4bWwKKyogQWRkZWQgY29tcGxldGUgS2V5SW5mbyBoYW5kbGluZyBmb3IgWEVOQ0VuY3J5cHRlZFR5cGUKKyogRml4IHRvIHN0b3AgcmUtdXNlIG9mIGRlcml2ZWQga2V5IGVuY3J5cHRpbmcga2V5IHdoZW4gZGVjcnlwdGluZyBtdWx0aXBsZSBlbGVtZW50cyBpbiBhIGRvY3VtZW50CisqIEZpeCB0byBpZ25vcmUgZW5jcnlwdGlvbiBleGNlcHRpb25zIGR1cmluZyBhIHByaXZhdGUga2V5IGRlY3J5cHQKKyogQWRkIGNvZGUgdG8gZGV0ZWN0IEFTTi4xIGVuY29kZWQgRFNBIHNpZ25hdHVyZXMgYW5kIHZhbGlkYXRlIGFjY29yZGluZ2x5CmRpZmYgLS1naXQgYS9jL0lOU1RBTEwgYi9jL0lOU1RBTEwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNlNWYyNQotLS0gL2Rldi9udWxsCisrKyBiL2MvSU5TVEFMTApAQCAtMCwwICsxLDIzNiBAQAorSW5zdGFsbGF0aW9uIEluc3RydWN0aW9ucworKioqKioqKioqKioqKioqKioqKioqKioqKgorCitDb3B5cmlnaHQgKEMpIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDQsIDIwMDUgRnJlZQorU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCitUaGlzIGZpbGUgaXMgZnJlZSBkb2N1bWVudGF0aW9uOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCit1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuCisKK0Jhc2ljIEluc3RhbGxhdGlvbgorPT09PT09PT09PT09PT09PT09CisKK1RoZXNlIGFyZSBnZW5lcmljIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMuCisKKyAgIFRoZSBgY29uZmlndXJlJyBzaGVsbCBzY3JpcHQgYXR0ZW1wdHMgdG8gZ3Vlc3MgY29ycmVjdCB2YWx1ZXMgZm9yCit2YXJpb3VzIHN5c3RlbS1kZXBlbmRlbnQgdmFyaWFibGVzIHVzZWQgZHVyaW5nIGNvbXBpbGF0aW9uLiAgSXQgdXNlcwordGhvc2UgdmFsdWVzIHRvIGNyZWF0ZSBhIGBNYWtlZmlsZScgaW4gZWFjaCBkaXJlY3Rvcnkgb2YgdGhlIHBhY2thZ2UuCitJdCBtYXkgYWxzbyBjcmVhdGUgb25lIG9yIG1vcmUgYC5oJyBmaWxlcyBjb250YWluaW5nIHN5c3RlbS1kZXBlbmRlbnQKK2RlZmluaXRpb25zLiAgRmluYWxseSwgaXQgY3JlYXRlcyBhIHNoZWxsIHNjcmlwdCBgY29uZmlnLnN0YXR1cycgdGhhdAoreW91IGNhbiBydW4gaW4gdGhlIGZ1dHVyZSB0byByZWNyZWF0ZSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLCBhbmQgYQorZmlsZSBgY29uZmlnLmxvZycgY29udGFpbmluZyBjb21waWxlciBvdXRwdXQgKHVzZWZ1bCBtYWlubHkgZm9yCitkZWJ1Z2dpbmcgYGNvbmZpZ3VyZScpLgorCisgICBJdCBjYW4gYWxzbyB1c2UgYW4gb3B0aW9uYWwgZmlsZSAodHlwaWNhbGx5IGNhbGxlZCBgY29uZmlnLmNhY2hlJworYW5kIGVuYWJsZWQgd2l0aCBgLS1jYWNoZS1maWxlPWNvbmZpZy5jYWNoZScgb3Igc2ltcGx5IGAtQycpIHRoYXQgc2F2ZXMKK3RoZSByZXN1bHRzIG9mIGl0cyB0ZXN0cyB0byBzcGVlZCB1cCByZWNvbmZpZ3VyaW5nLiAgKENhY2hpbmcgaXMKK2Rpc2FibGVkIGJ5IGRlZmF1bHQgdG8gcHJldmVudCBwcm9ibGVtcyB3aXRoIGFjY2lkZW50YWwgdXNlIG9mIHN0YWxlCitjYWNoZSBmaWxlcy4pCisKKyAgIElmIHlvdSBuZWVkIHRvIGRvIHVudXN1YWwgdGhpbmdzIHRvIGNvbXBpbGUgdGhlIHBhY2thZ2UsIHBsZWFzZSB0cnkKK3RvIGZpZ3VyZSBvdXQgaG93IGBjb25maWd1cmUnIGNvdWxkIGNoZWNrIHdoZXRoZXIgdG8gZG8gdGhlbSwgYW5kIG1haWwKK2RpZmZzIG9yIGluc3RydWN0aW9ucyB0byB0aGUgYWRkcmVzcyBnaXZlbiBpbiB0aGUgYFJFQURNRScgc28gdGhleSBjYW4KK2JlIGNvbnNpZGVyZWQgZm9yIHRoZSBuZXh0IHJlbGVhc2UuICBJZiB5b3UgYXJlIHVzaW5nIHRoZSBjYWNoZSwgYW5kIGF0Citzb21lIHBvaW50IGBjb25maWcuY2FjaGUnIGNvbnRhaW5zIHJlc3VsdHMgeW91IGRvbid0IHdhbnQgdG8ga2VlcCwgeW91CittYXkgcmVtb3ZlIG9yIGVkaXQgaXQuCisKKyAgIFRoZSBmaWxlIGBjb25maWd1cmUuYWMnIChvciBgY29uZmlndXJlLmluJykgaXMgdXNlZCB0byBjcmVhdGUKK2Bjb25maWd1cmUnIGJ5IGEgcHJvZ3JhbSBjYWxsZWQgYGF1dG9jb25mJy4gIFlvdSBvbmx5IG5lZWQKK2Bjb25maWd1cmUuYWMnIGlmIHlvdSB3YW50IHRvIGNoYW5nZSBpdCBvciByZWdlbmVyYXRlIGBjb25maWd1cmUnIHVzaW5nCithIG5ld2VyIHZlcnNpb24gb2YgYGF1dG9jb25mJy4KKworVGhlIHNpbXBsZXN0IHdheSB0byBjb21waWxlIHRoaXMgcGFja2FnZSBpczoKKworICAxLiBgY2QnIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgcGFja2FnZSdzIHNvdXJjZSBjb2RlIGFuZCB0eXBlCisgICAgIGAuL2NvbmZpZ3VyZScgdG8gY29uZmlndXJlIHRoZSBwYWNrYWdlIGZvciB5b3VyIHN5c3RlbS4gIElmIHlvdSdyZQorICAgICB1c2luZyBgY3NoJyBvbiBhbiBvbGQgdmVyc2lvbiBvZiBTeXN0ZW0gViwgeW91IG1pZ2h0IG5lZWQgdG8gdHlwZQorICAgICBgc2ggLi9jb25maWd1cmUnIGluc3RlYWQgdG8gcHJldmVudCBgY3NoJyBmcm9tIHRyeWluZyB0byBleGVjdXRlCisgICAgIGBjb25maWd1cmUnIGl0c2VsZi4KKworICAgICBSdW5uaW5nIGBjb25maWd1cmUnIHRha2VzIGF3aGlsZS4gIFdoaWxlIHJ1bm5pbmcsIGl0IHByaW50cyBzb21lCisgICAgIG1lc3NhZ2VzIHRlbGxpbmcgd2hpY2ggZmVhdHVyZXMgaXQgaXMgY2hlY2tpbmcgZm9yLgorCisgIDIuIFR5cGUgYG1ha2UnIHRvIGNvbXBpbGUgdGhlIHBhY2thZ2UuCisKKyAgMy4gT3B0aW9uYWxseSwgdHlwZSBgbWFrZSBjaGVjaycgdG8gcnVuIGFueSBzZWxmLXRlc3RzIHRoYXQgY29tZSB3aXRoCisgICAgIHRoZSBwYWNrYWdlLgorCisgIDQuIFR5cGUgYG1ha2UgaW5zdGFsbCcgdG8gaW5zdGFsbCB0aGUgcHJvZ3JhbXMgYW5kIGFueSBkYXRhIGZpbGVzIGFuZAorICAgICBkb2N1bWVudGF0aW9uLgorCisgIDUuIFlvdSBjYW4gcmVtb3ZlIHRoZSBwcm9ncmFtIGJpbmFyaWVzIGFuZCBvYmplY3QgZmlsZXMgZnJvbSB0aGUKKyAgICAgc291cmNlIGNvZGUgZGlyZWN0b3J5IGJ5IHR5cGluZyBgbWFrZSBjbGVhbicuICBUbyBhbHNvIHJlbW92ZSB0aGUKKyAgICAgZmlsZXMgdGhhdCBgY29uZmlndXJlJyBjcmVhdGVkIChzbyB5b3UgY2FuIGNvbXBpbGUgdGhlIHBhY2thZ2UgZm9yCisgICAgIGEgZGlmZmVyZW50IGtpbmQgb2YgY29tcHV0ZXIpLCB0eXBlIGBtYWtlIGRpc3RjbGVhbicuICBUaGVyZSBpcworICAgICBhbHNvIGEgYG1ha2UgbWFpbnRhaW5lci1jbGVhbicgdGFyZ2V0LCBidXQgdGhhdCBpcyBpbnRlbmRlZCBtYWlubHkKKyAgICAgZm9yIHRoZSBwYWNrYWdlJ3MgZGV2ZWxvcGVycy4gIElmIHlvdSB1c2UgaXQsIHlvdSBtYXkgaGF2ZSB0byBnZXQKKyAgICAgYWxsIHNvcnRzIG9mIG90aGVyIHByb2dyYW1zIGluIG9yZGVyIHRvIHJlZ2VuZXJhdGUgZmlsZXMgdGhhdCBjYW1lCisgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworQ29tcGlsZXJzIGFuZCBPcHRpb25zCis9PT09PT09PT09PT09PT09PT09PT0KKworU29tZSBzeXN0ZW1zIHJlcXVpcmUgdW51c3VhbCBvcHRpb25zIGZvciBjb21waWxhdGlvbiBvciBsaW5raW5nIHRoYXQgdGhlCitgY29uZmlndXJlJyBzY3JpcHQgZG9lcyBub3Qga25vdyBhYm91dC4gIFJ1biBgLi9jb25maWd1cmUgLS1oZWxwJyBmb3IKK2RldGFpbHMgb24gc29tZSBvZiB0aGUgcGVydGluZW50IGVudmlyb25tZW50IHZhcmlhYmxlcy4KKworICAgWW91IGNhbiBnaXZlIGBjb25maWd1cmUnIGluaXRpYWwgdmFsdWVzIGZvciBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMKK2J5IHNldHRpbmcgdmFyaWFibGVzIGluIHRoZSBjb21tYW5kIGxpbmUgb3IgaW4gdGhlIGVudmlyb25tZW50LiAgSGVyZQoraXMgYW4gZXhhbXBsZToKKworICAgICAuL2NvbmZpZ3VyZSBDQz1jODkgQ0ZMQUdTPS1PMiBMSUJTPS1scG9zaXgKKworICAgKk5vdGUgRGVmaW5pbmcgVmFyaWFibGVzOjosIGZvciBtb3JlIGRldGFpbHMuCisKK0NvbXBpbGluZyBGb3IgTXVsdGlwbGUgQXJjaGl0ZWN0dXJlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1lvdSBjYW4gY29tcGlsZSB0aGUgcGFja2FnZSBmb3IgbW9yZSB0aGFuIG9uZSBraW5kIG9mIGNvbXB1dGVyIGF0IHRoZQorc2FtZSB0aW1lLCBieSBwbGFjaW5nIHRoZSBvYmplY3QgZmlsZXMgZm9yIGVhY2ggYXJjaGl0ZWN0dXJlIGluIHRoZWlyCitvd24gZGlyZWN0b3J5LiAgVG8gZG8gdGhpcywgeW91IG11c3QgdXNlIGEgdmVyc2lvbiBvZiBgbWFrZScgdGhhdAorc3VwcG9ydHMgdGhlIGBWUEFUSCcgdmFyaWFibGUsIHN1Y2ggYXMgR05VIGBtYWtlJy4gIGBjZCcgdG8gdGhlCitkaXJlY3Rvcnkgd2hlcmUgeW91IHdhbnQgdGhlIG9iamVjdCBmaWxlcyBhbmQgZXhlY3V0YWJsZXMgdG8gZ28gYW5kIHJ1bgordGhlIGBjb25maWd1cmUnIHNjcmlwdC4gIGBjb25maWd1cmUnIGF1dG9tYXRpY2FsbHkgY2hlY2tzIGZvciB0aGUKK3NvdXJjZSBjb2RlIGluIHRoZSBkaXJlY3RvcnkgdGhhdCBgY29uZmlndXJlJyBpcyBpbiBhbmQgaW4gYC4uJy4KKworICAgSWYgeW91IGhhdmUgdG8gdXNlIGEgYG1ha2UnIHRoYXQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYFZQQVRIJwordmFyaWFibGUsIHlvdSBoYXZlIHRvIGNvbXBpbGUgdGhlIHBhY2thZ2UgZm9yIG9uZSBhcmNoaXRlY3R1cmUgYXQgYQordGltZSBpbiB0aGUgc291cmNlIGNvZGUgZGlyZWN0b3J5LiAgQWZ0ZXIgeW91IGhhdmUgaW5zdGFsbGVkIHRoZQorcGFja2FnZSBmb3Igb25lIGFyY2hpdGVjdHVyZSwgdXNlIGBtYWtlIGRpc3RjbGVhbicgYmVmb3JlIHJlY29uZmlndXJpbmcKK2ZvciBhbm90aGVyIGFyY2hpdGVjdHVyZS4KKworSW5zdGFsbGF0aW9uIE5hbWVzCis9PT09PT09PT09PT09PT09PT0KKworQnkgZGVmYXVsdCwgYG1ha2UgaW5zdGFsbCcgaW5zdGFsbHMgdGhlIHBhY2thZ2UncyBjb21tYW5kcyB1bmRlcgorYC91c3IvbG9jYWwvYmluJywgaW5jbHVkZSBmaWxlcyB1bmRlciBgL3Vzci9sb2NhbC9pbmNsdWRlJywgZXRjLiAgWW91CitjYW4gc3BlY2lmeSBhbiBpbnN0YWxsYXRpb24gcHJlZml4IG90aGVyIHRoYW4gYC91c3IvbG9jYWwnIGJ5IGdpdmluZworYGNvbmZpZ3VyZScgdGhlIG9wdGlvbiBgLS1wcmVmaXg9UFJFRklYJy4KKworICAgWW91IGNhbiBzcGVjaWZ5IHNlcGFyYXRlIGluc3RhbGxhdGlvbiBwcmVmaXhlcyBmb3IKK2FyY2hpdGVjdHVyZS1zcGVjaWZpYyBmaWxlcyBhbmQgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGZpbGVzLiAgSWYgeW91CitwYXNzIHRoZSBvcHRpb24gYC0tZXhlYy1wcmVmaXg9UFJFRklYJyB0byBgY29uZmlndXJlJywgdGhlIHBhY2thZ2UgdXNlcworUFJFRklYIGFzIHRoZSBwcmVmaXggZm9yIGluc3RhbGxpbmcgcHJvZ3JhbXMgYW5kIGxpYnJhcmllcy4KK0RvY3VtZW50YXRpb24gYW5kIG90aGVyIGRhdGEgZmlsZXMgc3RpbGwgdXNlIHRoZSByZWd1bGFyIHByZWZpeC4KKworICAgSW4gYWRkaXRpb24sIGlmIHlvdSB1c2UgYW4gdW51c3VhbCBkaXJlY3RvcnkgbGF5b3V0IHlvdSBjYW4gZ2l2ZQorb3B0aW9ucyBsaWtlIGAtLWJpbmRpcj1ESVInIHRvIHNwZWNpZnkgZGlmZmVyZW50IHZhbHVlcyBmb3IgcGFydGljdWxhcgora2luZHMgb2YgZmlsZXMuICBSdW4gYGNvbmZpZ3VyZSAtLWhlbHAnIGZvciBhIGxpc3Qgb2YgdGhlIGRpcmVjdG9yaWVzCit5b3UgY2FuIHNldCBhbmQgd2hhdCBraW5kcyBvZiBmaWxlcyBnbyBpbiB0aGVtLgorCisgICBJZiB0aGUgcGFja2FnZSBzdXBwb3J0cyBpdCwgeW91IGNhbiBjYXVzZSBwcm9ncmFtcyB0byBiZSBpbnN0YWxsZWQKK3dpdGggYW4gZXh0cmEgcHJlZml4IG9yIHN1ZmZpeCBvbiB0aGVpciBuYW1lcyBieSBnaXZpbmcgYGNvbmZpZ3VyZScgdGhlCitvcHRpb24gYC0tcHJvZ3JhbS1wcmVmaXg9UFJFRklYJyBvciBgLS1wcm9ncmFtLXN1ZmZpeD1TVUZGSVgnLgorCitPcHRpb25hbCBGZWF0dXJlcworPT09PT09PT09PT09PT09PT0KKworU29tZSBwYWNrYWdlcyBwYXkgYXR0ZW50aW9uIHRvIGAtLWVuYWJsZS1GRUFUVVJFJyBvcHRpb25zIHRvCitgY29uZmlndXJlJywgd2hlcmUgRkVBVFVSRSBpbmRpY2F0ZXMgYW4gb3B0aW9uYWwgcGFydCBvZiB0aGUgcGFja2FnZS4KK1RoZXkgbWF5IGFsc28gcGF5IGF0dGVudGlvbiB0byBgLS13aXRoLVBBQ0tBR0UnIG9wdGlvbnMsIHdoZXJlIFBBQ0tBR0UKK2lzIHNvbWV0aGluZyBsaWtlIGBnbnUtYXMnIG9yIGB4JyAoZm9yIHRoZSBYIFdpbmRvdyBTeXN0ZW0pLiAgVGhlCitgUkVBRE1FJyBzaG91bGQgbWVudGlvbiBhbnkgYC0tZW5hYmxlLScgYW5kIGAtLXdpdGgtJyBvcHRpb25zIHRoYXQgdGhlCitwYWNrYWdlIHJlY29nbml6ZXMuCisKKyAgIEZvciBwYWNrYWdlcyB0aGF0IHVzZSB0aGUgWCBXaW5kb3cgU3lzdGVtLCBgY29uZmlndXJlJyBjYW4gdXN1YWxseQorZmluZCB0aGUgWCBpbmNsdWRlIGFuZCBsaWJyYXJ5IGZpbGVzIGF1dG9tYXRpY2FsbHksIGJ1dCBpZiBpdCBkb2Vzbid0LAoreW91IGNhbiB1c2UgdGhlIGBjb25maWd1cmUnIG9wdGlvbnMgYC0teC1pbmNsdWRlcz1ESVInIGFuZAorYC0teC1saWJyYXJpZXM9RElSJyB0byBzcGVjaWZ5IHRoZWlyIGxvY2F0aW9ucy4KKworU3BlY2lmeWluZyB0aGUgU3lzdGVtIFR5cGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZXJlIG1heSBiZSBzb21lIGZlYXR1cmVzIGBjb25maWd1cmUnIGNhbm5vdCBmaWd1cmUgb3V0IGF1dG9tYXRpY2FsbHksCitidXQgbmVlZHMgdG8gZGV0ZXJtaW5lIGJ5IHRoZSB0eXBlIG9mIG1hY2hpbmUgdGhlIHBhY2thZ2Ugd2lsbCBydW4gb24uCitVc3VhbGx5LCBhc3N1bWluZyB0aGUgcGFja2FnZSBpcyBidWlsdCB0byBiZSBydW4gb24gdGhlIF9zYW1lXworYXJjaGl0ZWN0dXJlcywgYGNvbmZpZ3VyZScgY2FuIGZpZ3VyZSB0aGF0IG91dCwgYnV0IGlmIGl0IHByaW50cyBhCittZXNzYWdlIHNheWluZyBpdCBjYW5ub3QgZ3Vlc3MgdGhlIG1hY2hpbmUgdHlwZSwgZ2l2ZSBpdCB0aGUKK2AtLWJ1aWxkPVRZUEUnIG9wdGlvbi4gIFRZUEUgY2FuIGVpdGhlciBiZSBhIHNob3J0IG5hbWUgZm9yIHRoZSBzeXN0ZW0KK3R5cGUsIHN1Y2ggYXMgYHN1bjQnLCBvciBhIGNhbm9uaWNhbCBuYW1lIHdoaWNoIGhhcyB0aGUgZm9ybToKKworICAgICBDUFUtQ09NUEFOWS1TWVNURU0KKword2hlcmUgU1lTVEVNIGNhbiBoYXZlIG9uZSBvZiB0aGVzZSBmb3JtczoKKworICAgICBPUyBLRVJORUwtT1MKKworICAgU2VlIHRoZSBmaWxlIGBjb25maWcuc3ViJyBmb3IgdGhlIHBvc3NpYmxlIHZhbHVlcyBvZiBlYWNoIGZpZWxkLiAgSWYKK2Bjb25maWcuc3ViJyBpc24ndCBpbmNsdWRlZCBpbiB0aGlzIHBhY2thZ2UsIHRoZW4gdGhpcyBwYWNrYWdlIGRvZXNuJ3QKK25lZWQgdG8ga25vdyB0aGUgbWFjaGluZSB0eXBlLgorCisgICBJZiB5b3UgYXJlIF9idWlsZGluZ18gY29tcGlsZXIgdG9vbHMgZm9yIGNyb3NzLWNvbXBpbGluZywgeW91IHNob3VsZAordXNlIHRoZSBvcHRpb24gYC0tdGFyZ2V0PVRZUEUnIHRvIHNlbGVjdCB0aGUgdHlwZSBvZiBzeXN0ZW0gdGhleSB3aWxsCitwcm9kdWNlIGNvZGUgZm9yLgorCisgICBJZiB5b3Ugd2FudCB0byBfdXNlXyBhIGNyb3NzIGNvbXBpbGVyLCB0aGF0IGdlbmVyYXRlcyBjb2RlIGZvciBhCitwbGF0Zm9ybSBkaWZmZXJlbnQgZnJvbSB0aGUgYnVpbGQgcGxhdGZvcm0sIHlvdSBzaG91bGQgc3BlY2lmeSB0aGUKKyJob3N0IiBwbGF0Zm9ybSAoaS5lLiwgdGhhdCBvbiB3aGljaCB0aGUgZ2VuZXJhdGVkIHByb2dyYW1zIHdpbGwKK2V2ZW50dWFsbHkgYmUgcnVuKSB3aXRoIGAtLWhvc3Q9VFlQRScuCisKK1NoYXJpbmcgRGVmYXVsdHMKKz09PT09PT09PT09PT09PT0KKworSWYgeW91IHdhbnQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvciBgY29uZmlndXJlJyBzY3JpcHRzIHRvIHNoYXJlLCB5b3UKK2NhbiBjcmVhdGUgYSBzaXRlIHNoZWxsIHNjcmlwdCBjYWxsZWQgYGNvbmZpZy5zaXRlJyB0aGF0IGdpdmVzIGRlZmF1bHQKK3ZhbHVlcyBmb3IgdmFyaWFibGVzIGxpa2UgYENDJywgYGNhY2hlX2ZpbGUnLCBhbmQgYHByZWZpeCcuCitgY29uZmlndXJlJyBsb29rcyBmb3IgYFBSRUZJWC9zaGFyZS9jb25maWcuc2l0ZScgaWYgaXQgZXhpc3RzLCB0aGVuCitgUFJFRklYL2V0Yy9jb25maWcuc2l0ZScgaWYgaXQgZXhpc3RzLiAgT3IsIHlvdSBjYW4gc2V0IHRoZQorYENPTkZJR19TSVRFJyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB0aGUgbG9jYXRpb24gb2YgdGhlIHNpdGUgc2NyaXB0LgorQSB3YXJuaW5nOiBub3QgYWxsIGBjb25maWd1cmUnIHNjcmlwdHMgbG9vayBmb3IgYSBzaXRlIHNjcmlwdC4KKworRGVmaW5pbmcgVmFyaWFibGVzCis9PT09PT09PT09PT09PT09PT0KKworVmFyaWFibGVzIG5vdCBkZWZpbmVkIGluIGEgc2l0ZSBzaGVsbCBzY3JpcHQgY2FuIGJlIHNldCBpbiB0aGUKK2Vudmlyb25tZW50IHBhc3NlZCB0byBgY29uZmlndXJlJy4gIEhvd2V2ZXIsIHNvbWUgcGFja2FnZXMgbWF5IHJ1bgorY29uZmlndXJlIGFnYWluIGR1cmluZyB0aGUgYnVpbGQsIGFuZCB0aGUgY3VzdG9taXplZCB2YWx1ZXMgb2YgdGhlc2UKK3ZhcmlhYmxlcyBtYXkgYmUgbG9zdC4gIEluIG9yZGVyIHRvIGF2b2lkIHRoaXMgcHJvYmxlbSwgeW91IHNob3VsZCBzZXQKK3RoZW0gaW4gdGhlIGBjb25maWd1cmUnIGNvbW1hbmQgbGluZSwgdXNpbmcgYFZBUj12YWx1ZScuICBGb3IgZXhhbXBsZToKKworICAgICAuL2NvbmZpZ3VyZSBDQz0vdXNyL2xvY2FsMi9iaW4vZ2NjCisKK2NhdXNlcyB0aGUgc3BlY2lmaWVkIGBnY2MnIHRvIGJlIHVzZWQgYXMgdGhlIEMgY29tcGlsZXIgKHVubGVzcyBpdCBpcworb3ZlcnJpZGRlbiBpbiB0aGUgc2l0ZSBzaGVsbCBzY3JpcHQpLiAgSGVyZSBpcyBhIGFub3RoZXIgZXhhbXBsZToKKworICAgICAvYmluL2Jhc2ggLi9jb25maWd1cmUgQ09ORklHX1NIRUxMPS9iaW4vYmFzaAorCitIZXJlIHRoZSBgQ09ORklHX1NIRUxMPS9iaW4vYmFzaCcgb3BlcmFuZCBjYXVzZXMgc3Vic2VxdWVudAorY29uZmlndXJhdGlvbi1yZWxhdGVkIHNjcmlwdHMgdG8gYmUgZXhlY3V0ZWQgYnkgYC9iaW4vYmFzaCcuCisKK2Bjb25maWd1cmUnIEludm9jYXRpb24KKz09PT09PT09PT09PT09PT09PT09PT0KKworYGNvbmZpZ3VyZScgcmVjb2duaXplcyB0aGUgZm9sbG93aW5nIG9wdGlvbnMgdG8gY29udHJvbCBob3cgaXQgb3BlcmF0ZXMuCisKK2AtLWhlbHAnCitgLWgnCisgICAgIFByaW50IGEgc3VtbWFyeSBvZiB0aGUgb3B0aW9ucyB0byBgY29uZmlndXJlJywgYW5kIGV4aXQuCisKK2AtLXZlcnNpb24nCitgLVYnCisgICAgIFByaW50IHRoZSB2ZXJzaW9uIG9mIEF1dG9jb25mIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGBjb25maWd1cmUnCisgICAgIHNjcmlwdCwgYW5kIGV4aXQuCisKK2AtLWNhY2hlLWZpbGU9RklMRScKKyAgICAgRW5hYmxlIHRoZSBjYWNoZTogdXNlIGFuZCBzYXZlIHRoZSByZXN1bHRzIG9mIHRoZSB0ZXN0cyBpbiBGSUxFLAorICAgICB0cmFkaXRpb25hbGx5IGBjb25maWcuY2FjaGUnLiAgRklMRSBkZWZhdWx0cyB0byBgL2Rldi9udWxsJyB0bworICAgICBkaXNhYmxlIGNhY2hpbmcuCisKK2AtLWNvbmZpZy1jYWNoZScKK2AtQycKKyAgICAgQWxpYXMgZm9yIGAtLWNhY2hlLWZpbGU9Y29uZmlnLmNhY2hlJy4KKworYC0tcXVpZXQnCitgLS1zaWxlbnQnCitgLXEnCisgICAgIERvIG5vdCBwcmludCBtZXNzYWdlcyBzYXlpbmcgd2hpY2ggY2hlY2tzIGFyZSBiZWluZyBtYWRlLiAgVG8KKyAgICAgc3VwcHJlc3MgYWxsIG5vcm1hbCBvdXRwdXQsIHJlZGlyZWN0IGl0IHRvIGAvZGV2L251bGwnIChhbnkgZXJyb3IKKyAgICAgbWVzc2FnZXMgd2lsbCBzdGlsbCBiZSBzaG93bikuCisKK2AtLXNyY2Rpcj1ESVInCisgICAgIExvb2sgZm9yIHRoZSBwYWNrYWdlJ3Mgc291cmNlIGNvZGUgaW4gZGlyZWN0b3J5IERJUi4gIFVzdWFsbHkKKyAgICAgYGNvbmZpZ3VyZScgY2FuIGRldGVybWluZSB0aGF0IGRpcmVjdG9yeSBhdXRvbWF0aWNhbGx5LgorCitgY29uZmlndXJlJyBhbHNvIGFjY2VwdHMgc29tZSBvdGhlciwgbm90IHdpZGVseSB1c2VmdWwsIG9wdGlvbnMuICBSdW4KK2Bjb25maWd1cmUgLS1oZWxwJyBmb3IgbW9yZSBkZXRhaWxzLgorCmRpZmYgLS1naXQgYS9jL01ha2VmaWxlLmFtIGIvYy9NYWtlZmlsZS5hbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmJlZGQzCi0tLSAvZGV2L251bGwKKysrIGIvYy9NYWtlZmlsZS5hbQpAQCAtMCwwICsxLDI4IEBACisjCisjIENvcHlyaWdodCAyMDA2IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyMKKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisjCisKK0FVVE9NQUtFX09QVElPTlMgPSBmb3JlaWduCisKK1NVQkRJUlMgPSBpbmNsdWRlIGxpYiBiaW4KK0FDTE9DQUxfQU1GTEFHUyA9IC1JIG00CisKK0VYVFJBX0RJU1QgPSBtNC9hY3hfcHRocmVhZC5tNCBQcm9qZWN0cyB4bWwtc2VjdXJpdHktYy5zcGVjIFwKKyAgICBzcmMvZnJhbWV3b3JrL3Jlc291cmNlLmggXAorICAgIHNyYy9mcmFtZXdvcmsvdmVyc2lvbi5yYyBcCisgICAgc3JjL3Rvb2xzL3RocmVhZFRlc3QvdGhyZWFkdGVzdC5jcHAKKworZGlzdC1ob29rOgorCXJtIC1yZiBgZmluZCAkKGRpc3RkaXIpL1Byb2plY3RzIC1uYW1lIC5zdm5gCmRpZmYgLS1naXQgYS9jL1Byb2plY3RzL1ZDMTAuMC9TYW1wbGVzL1NhbXBsZXMuc2xuIGIvYy9Qcm9qZWN0cy9WQzEwLjAvU2FtcGxlcy9TYW1wbGVzLnNsbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmE4MjhjCi0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzEwLjAvU2FtcGxlcy9TYW1wbGVzLnNsbgpAQCAtMCwwICsxLDkxIEBACitNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMS4wMA0KKyMgVmlzdWFsIFN0dWRpbyAyMDEwDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzaW1wbGVEZWNyeXB0IiwgInNpbXBsZURlY3J5cHRcc2ltcGxlRGVjcnlwdC52Y3hwcm9qIiwgIntCREM3ODUzNS1EQzU1LTRGRDUtOTdFNC1EQUU1M0U0MkE2MDd9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNpbXBsZUVuY3J5cHQiLCAic2ltcGxlRW5jcnlwdFxzaW1wbGVFbmNyeXB0LnZjeHByb2oiLCAie0FGRkVCOTM2LUFDQjUtNDJEMy05NTg4LUY1ODQyNzg5NjBCOX0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAic2ltcGxlSE1BQyIsICJzaW1wbGVITUFDXHNpbXBsZUhNQUMudmN4cHJvaiIsICJ7RjBDQzgwODAtMDg5RS00NzNFLTg1NjUtMUM5NTExNzdBMzhCfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzaW1wbGVWYWxpZGF0ZSIsICJzaW1wbGVWYWxpZGF0ZVxzaW1wbGVWYWxpZGF0ZS52Y3hwcm9qIiwgInswRDEwNzUyRC0yRUE4LTQ0NDYtOTA4Ni1EMEY4NDg3RTkxNEJ9Ig0KK0VuZFByb2plY3QNCitHbG9iYWwNCisJR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24NCisJCURlYnVnIE5vIFhhbGFufFdpbjMyID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCURlYnVnIE5vIFhhbGFufHg2NCA9IERlYnVnIE5vIFhhbGFufHg2NA0KKwkJRGVidWd8V2luMzIgPSBEZWJ1Z3xXaW4zMg0KKwkJRGVidWd8eDY0ID0gRGVidWd8eDY0DQorCQlSZWxlYXNlIE5vIFhhbGFufFdpbjMyID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJUmVsZWFzZSBObyBYYWxhbnx4NjQgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJUmVsZWFzZXxXaW4zMiA9IFJlbGVhc2V8V2luMzINCisJCVJlbGVhc2V8eDY0ID0gUmVsZWFzZXx4NjQNCisJRW5kR2xvYmFsU2VjdGlvbg0KKwlHbG9iYWxTZWN0aW9uKFByb2plY3RDb25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHBvc3RTb2x1dGlvbg0KKwkJe0JEQzc4NTM1LURDNTUtNEZENS05N0U0LURBRTUzRTQyQTYwN30uRGVidWcgTm8gWGFsYW58V2luMzIuQWN0aXZlQ2ZnID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXtCREM3ODUzNS1EQzU1LTRGRDUtOTdFNC1EQUU1M0U0MkE2MDd9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMg0KKwkJe0JEQzc4NTM1LURDNTUtNEZENS05N0U0LURBRTUzRTQyQTYwN30uRGVidWcgTm8gWGFsYW58eDY0LkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufHg2NA0KKwkJe0JEQzc4NTM1LURDNTUtNEZENS05N0U0LURBRTUzRTQyQTYwN30uRGVidWcgTm8gWGFsYW58eDY0LkJ1aWxkLjAgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCXtCREM3ODUzNS1EQzU1LTRGRDUtOTdFNC1EQUU1M0U0MkE2MDd9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7QkRDNzg1MzUtREM1NS00RkQ1LTk3RTQtREFFNTNFNDJBNjA3fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtCREM3ODUzNS1EQzU1LTRGRDUtOTdFNC1EQUU1M0U0MkE2MDd9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtCREM3ODUzNS1EQzU1LTRGRDUtOTdFNC1EQUU1M0U0MkE2MDd9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7QkRDNzg1MzUtREM1NS00RkQ1LTk3RTQtREFFNTNFNDJBNjA3fS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2UgTm8gWGFsYW58V2luMzINCisJCXtCREM3ODUzNS1EQzU1LTRGRDUtOTdFNC1EQUU1M0U0MkE2MDd9LlJlbGVhc2UgTm8gWGFsYW58V2luMzIuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58V2luMzINCisJCXtCREM3ODUzNS1EQzU1LTRGRDUtOTdFNC1EQUU1M0U0MkE2MDd9LlJlbGVhc2UgTm8gWGFsYW58eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2UgTm8gWGFsYW58eDY0DQorCQl7QkRDNzg1MzUtREM1NS00RkQ1LTk3RTQtREFFNTNFNDJBNjA3fS5SZWxlYXNlIE5vIFhhbGFufHg2NC5CdWlsZC4wID0gUmVsZWFzZSBObyBYYWxhbnx4NjQNCisJCXtCREM3ODUzNS1EQzU1LTRGRDUtOTdFNC1EQUU1M0U0MkE2MDd9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0JEQzc4NTM1LURDNTUtNEZENS05N0U0LURBRTUzRTQyQTYwN30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0JEQzc4NTM1LURDNTUtNEZENS05N0U0LURBRTUzRTQyQTYwN30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtCREM3ODUzNS1EQzU1LTRGRDUtOTdFNC1EQUU1M0U0MkE2MDd9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0FGRkVCOTM2LUFDQjUtNDJEMy05NTg4LUY1ODQyNzg5NjBCOX0uRGVidWcgTm8gWGFsYW58V2luMzIuQWN0aXZlQ2ZnID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXtBRkZFQjkzNi1BQ0I1LTQyRDMtOTU4OC1GNTg0Mjc4OTYwQjl9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMg0KKwkJe0FGRkVCOTM2LUFDQjUtNDJEMy05NTg4LUY1ODQyNzg5NjBCOX0uRGVidWcgTm8gWGFsYW58eDY0LkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufHg2NA0KKwkJe0FGRkVCOTM2LUFDQjUtNDJEMy05NTg4LUY1ODQyNzg5NjBCOX0uRGVidWcgTm8gWGFsYW58eDY0LkJ1aWxkLjAgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCXtBRkZFQjkzNi1BQ0I1LTQyRDMtOTU4OC1GNTg0Mjc4OTYwQjl9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7QUZGRUI5MzYtQUNCNS00MkQzLTk1ODgtRjU4NDI3ODk2MEI5fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtBRkZFQjkzNi1BQ0I1LTQyRDMtOTU4OC1GNTg0Mjc4OTYwQjl9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtBRkZFQjkzNi1BQ0I1LTQyRDMtOTU4OC1GNTg0Mjc4OTYwQjl9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7QUZGRUI5MzYtQUNCNS00MkQzLTk1ODgtRjU4NDI3ODk2MEI5fS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2UgTm8gWGFsYW58V2luMzINCisJCXtBRkZFQjkzNi1BQ0I1LTQyRDMtOTU4OC1GNTg0Mjc4OTYwQjl9LlJlbGVhc2UgTm8gWGFsYW58V2luMzIuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58V2luMzINCisJCXtBRkZFQjkzNi1BQ0I1LTQyRDMtOTU4OC1GNTg0Mjc4OTYwQjl9LlJlbGVhc2UgTm8gWGFsYW58eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2UgTm8gWGFsYW58eDY0DQorCQl7QUZGRUI5MzYtQUNCNS00MkQzLTk1ODgtRjU4NDI3ODk2MEI5fS5SZWxlYXNlIE5vIFhhbGFufHg2NC5CdWlsZC4wID0gUmVsZWFzZSBObyBYYWxhbnx4NjQNCisJCXtBRkZFQjkzNi1BQ0I1LTQyRDMtOTU4OC1GNTg0Mjc4OTYwQjl9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0FGRkVCOTM2LUFDQjUtNDJEMy05NTg4LUY1ODQyNzg5NjBCOX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0FGRkVCOTM2LUFDQjUtNDJEMy05NTg4LUY1ODQyNzg5NjBCOX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtBRkZFQjkzNi1BQ0I1LTQyRDMtOTU4OC1GNTg0Mjc4OTYwQjl9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0YwQ0M4MDgwLTA4OUUtNDczRS04NTY1LTFDOTUxMTc3QTM4Qn0uRGVidWcgTm8gWGFsYW58V2luMzIuQWN0aXZlQ2ZnID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXtGMENDODA4MC0wODlFLTQ3M0UtODU2NS0xQzk1MTE3N0EzOEJ9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMg0KKwkJe0YwQ0M4MDgwLTA4OUUtNDczRS04NTY1LTFDOTUxMTc3QTM4Qn0uRGVidWcgTm8gWGFsYW58eDY0LkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufHg2NA0KKwkJe0YwQ0M4MDgwLTA4OUUtNDczRS04NTY1LTFDOTUxMTc3QTM4Qn0uRGVidWcgTm8gWGFsYW58eDY0LkJ1aWxkLjAgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCXtGMENDODA4MC0wODlFLTQ3M0UtODU2NS0xQzk1MTE3N0EzOEJ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7RjBDQzgwODAtMDg5RS00NzNFLTg1NjUtMUM5NTExNzdBMzhCfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtGMENDODA4MC0wODlFLTQ3M0UtODU2NS0xQzk1MTE3N0EzOEJ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtGMENDODA4MC0wODlFLTQ3M0UtODU2NS0xQzk1MTE3N0EzOEJ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7RjBDQzgwODAtMDg5RS00NzNFLTg1NjUtMUM5NTExNzdBMzhCfS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2UgTm8gWGFsYW58V2luMzINCisJCXtGMENDODA4MC0wODlFLTQ3M0UtODU2NS0xQzk1MTE3N0EzOEJ9LlJlbGVhc2UgTm8gWGFsYW58V2luMzIuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58V2luMzINCisJCXtGMENDODA4MC0wODlFLTQ3M0UtODU2NS0xQzk1MTE3N0EzOEJ9LlJlbGVhc2UgTm8gWGFsYW58eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2UgTm8gWGFsYW58eDY0DQorCQl7RjBDQzgwODAtMDg5RS00NzNFLTg1NjUtMUM5NTExNzdBMzhCfS5SZWxlYXNlIE5vIFhhbGFufHg2NC5CdWlsZC4wID0gUmVsZWFzZSBObyBYYWxhbnx4NjQNCisJCXtGMENDODA4MC0wODlFLTQ3M0UtODU2NS0xQzk1MTE3N0EzOEJ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0YwQ0M4MDgwLTA4OUUtNDczRS04NTY1LTFDOTUxMTc3QTM4Qn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0YwQ0M4MDgwLTA4OUUtNDczRS04NTY1LTFDOTUxMTc3QTM4Qn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtGMENDODA4MC0wODlFLTQ3M0UtODU2NS0xQzk1MTE3N0EzOEJ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezBEMTA3NTJELTJFQTgtNDQ0Ni05MDg2LUQwRjg0ODdFOTE0Qn0uRGVidWcgTm8gWGFsYW58V2luMzIuQWN0aXZlQ2ZnID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXswRDEwNzUyRC0yRUE4LTQ0NDYtOTA4Ni1EMEY4NDg3RTkxNEJ9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMg0KKwkJezBEMTA3NTJELTJFQTgtNDQ0Ni05MDg2LUQwRjg0ODdFOTE0Qn0uRGVidWcgTm8gWGFsYW58eDY0LkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufHg2NA0KKwkJezBEMTA3NTJELTJFQTgtNDQ0Ni05MDg2LUQwRjg0ODdFOTE0Qn0uRGVidWcgTm8gWGFsYW58eDY0LkJ1aWxkLjAgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCXswRDEwNzUyRC0yRUE4LTQ0NDYtOTA4Ni1EMEY4NDg3RTkxNEJ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7MEQxMDc1MkQtMkVBOC00NDQ2LTkwODYtRDBGODQ4N0U5MTRCfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXswRDEwNzUyRC0yRUE4LTQ0NDYtOTA4Ni1EMEY4NDg3RTkxNEJ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXswRDEwNzUyRC0yRUE4LTQ0NDYtOTA4Ni1EMEY4NDg3RTkxNEJ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7MEQxMDc1MkQtMkVBOC00NDQ2LTkwODYtRDBGODQ4N0U5MTRCfS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2UgTm8gWGFsYW58V2luMzINCisJCXswRDEwNzUyRC0yRUE4LTQ0NDYtOTA4Ni1EMEY4NDg3RTkxNEJ9LlJlbGVhc2UgTm8gWGFsYW58V2luMzIuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58V2luMzINCisJCXswRDEwNzUyRC0yRUE4LTQ0NDYtOTA4Ni1EMEY4NDg3RTkxNEJ9LlJlbGVhc2UgTm8gWGFsYW58eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2UgTm8gWGFsYW58eDY0DQorCQl7MEQxMDc1MkQtMkVBOC00NDQ2LTkwODYtRDBGODQ4N0U5MTRCfS5SZWxlYXNlIE5vIFhhbGFufHg2NC5CdWlsZC4wID0gUmVsZWFzZSBObyBYYWxhbnx4NjQNCisJCXswRDEwNzUyRC0yRUE4LTQ0NDYtOTA4Ni1EMEY4NDg3RTkxNEJ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezBEMTA3NTJELTJFQTgtNDQ0Ni05MDg2LUQwRjg0ODdFOTE0Qn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezBEMTA3NTJELTJFQTgtNDQ0Ni05MDg2LUQwRjg0ODdFOTE0Qn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXswRDEwNzUyRC0yRUE4LTQ0NDYtOTA4Ni1EMEY4NDg3RTkxNEJ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwlFbmRHbG9iYWxTZWN0aW9uDQorCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uDQorCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UNCisJRW5kR2xvYmFsU2VjdGlvbg0KK0VuZEdsb2JhbA0KZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkMxMC4wL1NhbXBsZXMvc2ltcGxlRGVjcnlwdC9zaW1wbGVEZWNyeXB0LnZjeHByb2ogYi9jL1Byb2plY3RzL1ZDMTAuMC9TYW1wbGVzL3NpbXBsZURlY3J5cHQvc2ltcGxlRGVjcnlwdC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwMjRjNjcKLS0tIC9kZXYvbnVsbAorKysgYi9jL1Byb2plY3RzL1ZDMTAuMC9TYW1wbGVzL3NpbXBsZURlY3J5cHQvc2ltcGxlRGVjcnlwdC52Y3hwcm9qCkBAIC0wLDAgKzEsMzU3IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnIE5vIFhhbGFufFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZyBObyBYYWxhbjwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWcgTm8gWGFsYW58eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZyBObyBYYWxhbjwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2UgTm8gWGFsYW58V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2UgTm8gWGFsYW48L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2UgTm8gWGFsYW58eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlIE5vIFhhbGFuPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4NCisgICAgPFByb2plY3RHdWlkPntCREM3ODUzNS1EQzU1LTRGRDUtOTdFNC1EQUU1M0U0MkE2MDd9PC9Qcm9qZWN0R3VpZD4NCisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwPg0KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Li5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybSlcVkMxMFwkKENvbmZpZ3VyYXRpb24pXG9ialw8L0ludERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVxvYmpcPC9JbnREaXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcb2JqXDwvSW50RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcb2JqXDwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyI+Li5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybSlcVkMxMFwkKENvbmZpZ3VyYXRpb24pXG9ialw8L0ludERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVxvYmpcPC9JbnREaXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcb2JqXDwvSW50RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcb2JqXDwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4NCisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4NCisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmxpYmVheTMyLmxpYjtYYWxhbi1DXzFELmxpYjt4ZXJjZXMtY18zRC5saWI7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL3hzZWNfMUQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmxpYmVheTMyLmxpYjtYYWxhbi1DXzFELmxpYjt4ZXJjZXMtY18zRC5saWI7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL3hzZWNfMUQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4NCisgICAgICA8T21pdEZyYW1lUG9pbnRlcnM+dHJ1ZTwvT21pdEZyYW1lUG9pbnRlcnM+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4NCisgICAgICA8UnVudGltZVR5cGVJbmZvPnRydWU8L1J1bnRpbWVUeXBlSW5mbz4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmxpYmVheTMyLmxpYjtYYWxhbi1DXzEubGliO3hlcmNlcy1jXzMubGliOy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS94c2VjXzEubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPg0KKyAgICAgIDxPbWl0RnJhbWVQb2ludGVycz50cnVlPC9PbWl0RnJhbWVQb2ludGVycz4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPg0KKyAgICAgIDxSdW50aW1lVHlwZUluZm8+dHJ1ZTwvUnVudGltZVR5cGVJbmZvPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+bGliZWF5MzIubGliO1hhbGFuLUNfMS5saWI7eGVyY2VzLWNfMy5saWI7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL3hzZWNfMS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4NCisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPnRydWU8L0Jyb3dzZUluZm9ybWF0aW9uPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+bGliZWF5MzIubGliO3hlcmNlcy1jXzNELmxpYjsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikveHNlY18xRC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPnRydWU8L0Jyb3dzZUluZm9ybWF0aW9uPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+bGliZWF5MzIubGliO3hlcmNlcy1jXzNELmxpYjsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikveHNlY18xRC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPg0KKyAgICAgIDxPbWl0RnJhbWVQb2ludGVycz50cnVlPC9PbWl0RnJhbWVQb2ludGVycz4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPg0KKyAgICAgIDxSdW50aW1lVHlwZUluZm8+dHJ1ZTwvUnVudGltZVR5cGVJbmZvPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+bGliZWF5MzIubGliO3hlcmNlcy1jXzMubGliOy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS94c2VjXzEubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPg0KKyAgICAgIDxPbWl0RnJhbWVQb2ludGVycz50cnVlPC9PbWl0RnJhbWVQb2ludGVycz4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPg0KKyAgICAgIDxSdW50aW1lVHlwZUluZm8+dHJ1ZTwvUnVudGltZVR5cGVJbmZvPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+bGliZWF5MzIubGliO3hlcmNlcy1jXzMubGliOy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS94c2VjXzEubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcc2FtcGxlc1xJT1N0cmVhbU91dHB1dHRlci5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHNhbXBsZXNcc2ltcGxlRGVjcnlwdC5jcHAiIC8+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHNhbXBsZXNcSU9TdHJlYW1PdXRwdXR0ZXIuaHBwIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPg0KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkMxMC4wL1NhbXBsZXMvc2ltcGxlRW5jcnlwdC9zaW1wbGVFbmNyeXB0LnZjeHByb2ogYi9jL1Byb2plY3RzL1ZDMTAuMC9TYW1wbGVzL3NpbXBsZUVuY3J5cHQvc2ltcGxlRW5jcnlwdC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMjFhNTkKLS0tIC9kZXYvbnVsbAorKysgYi9jL1Byb2plY3RzL1ZDMTAuMC9TYW1wbGVzL3NpbXBsZUVuY3J5cHQvc2ltcGxlRW5jcnlwdC52Y3hwcm9qCkBAIC0wLDAgKzEsMzY1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnIE5vIFhhbGFufFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZyBObyBYYWxhbjwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWcgTm8gWGFsYW58eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZyBObyBYYWxhbjwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2UgTm8gWGFsYW58V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2UgTm8gWGFsYW48L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2UgTm8gWGFsYW58eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlIE5vIFhhbGFuPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4NCisgICAgPFByb2plY3RHdWlkPntBRkZFQjkzNi1BQ0I1LTQyRDMtOTU4OC1GNTg0Mjc4OTYwQjl9PC9Qcm9qZWN0R3VpZD4NCisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwPg0KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Li5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybSlcVkMxMFwkKENvbmZpZ3VyYXRpb24pXG9ialw8L0ludERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVxvYmpcPC9JbnREaXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcb2JqXDwvSW50RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcb2JqXDwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyI+Li5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybSlcVkMxMFwkKENvbmZpZ3VyYXRpb24pXG9ialw8L0ludERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVxvYmpcPC9JbnREaXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcb2JqXDwvSW50RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcb2JqXDwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4NCisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4NCisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmxpYmVheTMyLmxpYjtYYWxhbi1DXzFELmxpYjt4ZXJjZXMtY18zRC5saWI7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL3hzZWNfMUQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPFJhbmRvbWl6ZWRCYXNlQWRkcmVzcz5mYWxzZTwvUmFuZG9taXplZEJhc2VBZGRyZXNzPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8QnJvd3NlSW5mb3JtYXRpb24+dHJ1ZTwvQnJvd3NlSW5mb3JtYXRpb24+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5saWJlYXkzMi5saWI7WGFsYW4tQ18xRC5saWI7eGVyY2VzLWNfM0QubGliOy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS94c2VjXzFELmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxSYW5kb21pemVkQmFzZUFkZHJlc3M+ZmFsc2U8L1JhbmRvbWl6ZWRCYXNlQWRkcmVzcz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPg0KKyAgICAgIDxPbWl0RnJhbWVQb2ludGVycz50cnVlPC9PbWl0RnJhbWVQb2ludGVycz4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPg0KKyAgICAgIDxSdW50aW1lVHlwZUluZm8+ZmFsc2U8L1J1bnRpbWVUeXBlSW5mbz4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmxpYmVheTMyLmxpYjtYYWxhbi1DXzEubGliO3hlcmNlcy1jXzMubGliOy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS94c2VjXzEubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8UmFuZG9taXplZEJhc2VBZGRyZXNzPmZhbHNlPC9SYW5kb21pemVkQmFzZUFkZHJlc3M+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4NCisgICAgICA8T21pdEZyYW1lUG9pbnRlcnM+dHJ1ZTwvT21pdEZyYW1lUG9pbnRlcnM+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4NCisgICAgICA8UnVudGltZVR5cGVJbmZvPmZhbHNlPC9SdW50aW1lVHlwZUluZm8+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5saWJlYXkzMi5saWI7WGFsYW4tQ18xLmxpYjt4ZXJjZXMtY18zLmxpYjsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikveHNlY18xLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPg0KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+DQorICAgICAgPFJhbmRvbWl6ZWRCYXNlQWRkcmVzcz5mYWxzZTwvUmFuZG9taXplZEJhc2VBZGRyZXNzPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPnRydWU8L0Jyb3dzZUluZm9ybWF0aW9uPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+bGliZWF5MzIubGliO3hlcmNlcy1jXzNELmxpYjsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikveHNlY18xRC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8UmFuZG9taXplZEJhc2VBZGRyZXNzPmZhbHNlPC9SYW5kb21pemVkQmFzZUFkZHJlc3M+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmxpYmVheTMyLmxpYjt4ZXJjZXMtY18zRC5saWI7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL3hzZWNfMUQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPFJhbmRvbWl6ZWRCYXNlQWRkcmVzcz5mYWxzZTwvUmFuZG9taXplZEJhc2VBZGRyZXNzPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+DQorICAgICAgPE9taXRGcmFtZVBvaW50ZXJzPnRydWU8L09taXRGcmFtZVBvaW50ZXJzPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+DQorICAgICAgPFJ1bnRpbWVUeXBlSW5mbz5mYWxzZTwvUnVudGltZVR5cGVJbmZvPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+bGliZWF5MzIubGliO3hlcmNlcy1jXzMubGliOy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS94c2VjXzEubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8UmFuZG9taXplZEJhc2VBZGRyZXNzPmZhbHNlPC9SYW5kb21pemVkQmFzZUFkZHJlc3M+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4NCisgICAgICA8T21pdEZyYW1lUG9pbnRlcnM+dHJ1ZTwvT21pdEZyYW1lUG9pbnRlcnM+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4NCisgICAgICA8UnVudGltZVR5cGVJbmZvPmZhbHNlPC9SdW50aW1lVHlwZUluZm8+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5saWJlYXkzMi5saWI7eGVyY2VzLWNfMy5saWI7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL3hzZWNfMS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4NCisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPg0KKyAgICAgIDxSYW5kb21pemVkQmFzZUFkZHJlc3M+ZmFsc2U8L1JhbmRvbWl6ZWRCYXNlQWRkcmVzcz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcc2FtcGxlc1xJT1N0cmVhbU91dHB1dHRlci5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHNhbXBsZXNcc2ltcGxlRW5jcnlwdC5jcHAiIC8+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHNhbXBsZXNcSU9TdHJlYW1PdXRwdXR0ZXIuaHBwIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPg0KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkMxMC4wL1NhbXBsZXMvc2ltcGxlSE1BQy9zaW1wbGVITUFDLnZjeHByb2ogYi9jL1Byb2plY3RzL1ZDMTAuMC9TYW1wbGVzL3NpbXBsZUhNQUMvc2ltcGxlSE1BQy52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzYzViMmMKLS0tIC9kZXYvbnVsbAorKysgYi9jL1Byb2plY3RzL1ZDMTAuMC9TYW1wbGVzL3NpbXBsZUhNQUMvc2ltcGxlSE1BQy52Y3hwcm9qCkBAIC0wLDAgKzEsMzY1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnIE5vIFhhbGFufFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZyBObyBYYWxhbjwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWcgTm8gWGFsYW58eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZyBObyBYYWxhbjwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2UgTm8gWGFsYW58V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2UgTm8gWGFsYW48L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2UgTm8gWGFsYW58eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlIE5vIFhhbGFuPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4NCisgICAgPFByb2plY3RHdWlkPntGMENDODA4MC0wODlFLTQ3M0UtODU2NS0xQzk1MTE3N0EzOEJ9PC9Qcm9qZWN0R3VpZD4NCisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwPg0KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Li5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybSlcVkMxMFwkKENvbmZpZ3VyYXRpb24pXG9ialw8L0ludERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVxvYmpcPC9JbnREaXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcb2JqXDwvSW50RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcb2JqXDwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyI+Li5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybSlcVkMxMFwkKENvbmZpZ3VyYXRpb24pXG9ialw8L0ludERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVxvYmpcPC9JbnREaXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcb2JqXDwvSW50RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcb2JqXDwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4NCisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4NCisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmxpYmVheTMyLmxpYjtYYWxhbi1DXzFELmxpYjt4ZXJjZXMtY18zRC5saWI7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL3hzZWNfMUQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPFJhbmRvbWl6ZWRCYXNlQWRkcmVzcz5mYWxzZTwvUmFuZG9taXplZEJhc2VBZGRyZXNzPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8QnJvd3NlSW5mb3JtYXRpb24+dHJ1ZTwvQnJvd3NlSW5mb3JtYXRpb24+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5saWJlYXkzMi5saWI7WGFsYW4tQ18xRC5saWI7eGVyY2VzLWNfM0QubGliOy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS94c2VjXzFELmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxSYW5kb21pemVkQmFzZUFkZHJlc3M+ZmFsc2U8L1JhbmRvbWl6ZWRCYXNlQWRkcmVzcz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPg0KKyAgICAgIDxPbWl0RnJhbWVQb2ludGVycz50cnVlPC9PbWl0RnJhbWVQb2ludGVycz4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPg0KKyAgICAgIDxSdW50aW1lVHlwZUluZm8+ZmFsc2U8L1J1bnRpbWVUeXBlSW5mbz4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmxpYmVheTMyLmxpYjtYYWxhbi1DXzEubGliO3hlcmNlcy1jXzMubGliOy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS94c2VjXzEubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8UmFuZG9taXplZEJhc2VBZGRyZXNzPmZhbHNlPC9SYW5kb21pemVkQmFzZUFkZHJlc3M+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4NCisgICAgICA8T21pdEZyYW1lUG9pbnRlcnM+dHJ1ZTwvT21pdEZyYW1lUG9pbnRlcnM+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4NCisgICAgICA8UnVudGltZVR5cGVJbmZvPmZhbHNlPC9SdW50aW1lVHlwZUluZm8+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5saWJlYXkzMi5saWI7WGFsYW4tQ18xLmxpYjt4ZXJjZXMtY18zLmxpYjsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikveHNlY18xLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPg0KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+DQorICAgICAgPFJhbmRvbWl6ZWRCYXNlQWRkcmVzcz5mYWxzZTwvUmFuZG9taXplZEJhc2VBZGRyZXNzPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPnRydWU8L0Jyb3dzZUluZm9ybWF0aW9uPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+bGliZWF5MzIubGliO3hlcmNlcy1jXzNELmxpYjsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikveHNlY18xRC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8UmFuZG9taXplZEJhc2VBZGRyZXNzPmZhbHNlPC9SYW5kb21pemVkQmFzZUFkZHJlc3M+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmxpYmVheTMyLmxpYjt4ZXJjZXMtY18zRC5saWI7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL3hzZWNfMUQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPFJhbmRvbWl6ZWRCYXNlQWRkcmVzcz5mYWxzZTwvUmFuZG9taXplZEJhc2VBZGRyZXNzPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+DQorICAgICAgPE9taXRGcmFtZVBvaW50ZXJzPnRydWU8L09taXRGcmFtZVBvaW50ZXJzPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+DQorICAgICAgPFJ1bnRpbWVUeXBlSW5mbz5mYWxzZTwvUnVudGltZVR5cGVJbmZvPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+bGliZWF5MzIubGliO3hlcmNlcy1jXzMubGliOy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS94c2VjXzEubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8UmFuZG9taXplZEJhc2VBZGRyZXNzPmZhbHNlPC9SYW5kb21pemVkQmFzZUFkZHJlc3M+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4NCisgICAgICA8T21pdEZyYW1lUG9pbnRlcnM+dHJ1ZTwvT21pdEZyYW1lUG9pbnRlcnM+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4NCisgICAgICA8UnVudGltZVR5cGVJbmZvPmZhbHNlPC9SdW50aW1lVHlwZUluZm8+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5saWJlYXkzMi5saWI7eGVyY2VzLWNfMy5saWI7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL3hzZWNfMS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4NCisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPg0KKyAgICAgIDxSYW5kb21pemVkQmFzZUFkZHJlc3M+ZmFsc2U8L1JhbmRvbWl6ZWRCYXNlQWRkcmVzcz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcc2FtcGxlc1xJT1N0cmVhbU91dHB1dHRlci5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHNhbXBsZXNcc2ltcGxlSE1BQy5jcHAiIC8+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHNhbXBsZXNcSU9TdHJlYW1PdXRwdXR0ZXIuaHBwIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPg0KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkMxMC4wL1NhbXBsZXMvc2ltcGxlVmFsaWRhdGUvc2ltcGxlVmFsaWRhdGUudmN4cHJvaiBiL2MvUHJvamVjdHMvVkMxMC4wL1NhbXBsZXMvc2ltcGxlVmFsaWRhdGUvc2ltcGxlVmFsaWRhdGUudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWMyNDIyCi0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzEwLjAvU2FtcGxlcy9zaW1wbGVWYWxpZGF0ZS9zaW1wbGVWYWxpZGF0ZS52Y3hwcm9qCkBAIC0wLDAgKzEsMzY2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnIE5vIFhhbGFufFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZyBObyBYYWxhbjwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWcgTm8gWGFsYW58eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZyBObyBYYWxhbjwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2UgTm8gWGFsYW58V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2UgTm8gWGFsYW48L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2UgTm8gWGFsYW58eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlIE5vIFhhbGFuPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4NCisgICAgPFByb2plY3RHdWlkPnswRDEwNzUyRC0yRUE4LTQ0NDYtOTA4Ni1EMEY4NDg3RTkxNEJ9PC9Qcm9qZWN0R3VpZD4NCisgICAgPFJvb3ROYW1lc3BhY2U+c2ltcGxlVmFsaWRhdGU8L1Jvb3ROYW1lc3BhY2U+DQorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPg0KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+DQorICA8UHJvcGVydHlHcm91cD4NCisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVxvYmpcPC9JbnREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcb2JqXDwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Li5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybSlcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Li5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybSlcVkMxMFwkKENvbmZpZ3VyYXRpb24pXG9ialw8L0ludERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Li5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybSlcVkMxMFwkKENvbmZpZ3VyYXRpb24pXG9ialw8L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciPi4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm0pXFZDMTBcJChDb25maWd1cmF0aW9uKVxvYmpcPC9JbnREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcb2JqXDwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyI+Li5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybSlcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIj4uLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtKVxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyI+Li5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybSlcVkMxMFwkKENvbmZpZ3VyYXRpb24pXG9ialw8L0ludERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyI+Li5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybSlcVkMxMFwkKENvbmZpZ3VyYXRpb24pXG9ialw8L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4NCisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4NCisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4NCisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4NCisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8QnJvd3NlSW5mb3JtYXRpb24+dHJ1ZTwvQnJvd3NlSW5mb3JtYXRpb24+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5saWJlYXkzMi5saWI7WGFsYW4tQ18xRC5saWI7eGVyY2VzLWNfM0QubGliOy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS94c2VjXzFELmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxSYW5kb21pemVkQmFzZUFkZHJlc3M+ZmFsc2U8L1JhbmRvbWl6ZWRCYXNlQWRkcmVzcz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPnRydWU8L0Jyb3dzZUluZm9ybWF0aW9uPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+bGliZWF5MzIubGliO1hhbGFuLUNfMUQubGliO3hlcmNlcy1jXzNELmxpYjsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikveHNlY18xRC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8UmFuZG9taXplZEJhc2VBZGRyZXNzPmZhbHNlPC9SYW5kb21pemVkQmFzZUFkZHJlc3M+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4NCisgICAgICA8T21pdEZyYW1lUG9pbnRlcnM+dHJ1ZTwvT21pdEZyYW1lUG9pbnRlcnM+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4NCisgICAgICA8UnVudGltZVR5cGVJbmZvPmZhbHNlPC9SdW50aW1lVHlwZUluZm8+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5saWJlYXkzMi5saWI7WGFsYW4tQ18xLmxpYjt4ZXJjZXMtY18zLmxpYjsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikveHNlY18xLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPg0KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+DQorICAgICAgPFJhbmRvbWl6ZWRCYXNlQWRkcmVzcz5mYWxzZTwvUmFuZG9taXplZEJhc2VBZGRyZXNzPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+DQorICAgICAgPE9taXRGcmFtZVBvaW50ZXJzPnRydWU8L09taXRGcmFtZVBvaW50ZXJzPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+DQorICAgICAgPFJ1bnRpbWVUeXBlSW5mbz5mYWxzZTwvUnVudGltZVR5cGVJbmZvPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+bGliZWF5MzIubGliO1hhbGFuLUNfMS5saWI7eGVyY2VzLWNfMy5saWI7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL3hzZWNfMS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4NCisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPg0KKyAgICAgIDxSYW5kb21pemVkQmFzZUFkZHJlc3M+ZmFsc2U8L1JhbmRvbWl6ZWRCYXNlQWRkcmVzcz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmxpYmVheTMyLmxpYjt4ZXJjZXMtY18zRC5saWI7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL3hzZWNfMUQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPFJhbmRvbWl6ZWRCYXNlQWRkcmVzcz5mYWxzZTwvUmFuZG9taXplZEJhc2VBZGRyZXNzPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8QnJvd3NlSW5mb3JtYXRpb24+dHJ1ZTwvQnJvd3NlSW5mb3JtYXRpb24+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5saWJlYXkzMi5saWI7eGVyY2VzLWNfM0QubGliOy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS94c2VjXzFELmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxSYW5kb21pemVkQmFzZUFkZHJlc3M+ZmFsc2U8L1JhbmRvbWl6ZWRCYXNlQWRkcmVzcz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPg0KKyAgICAgIDxPbWl0RnJhbWVQb2ludGVycz50cnVlPC9PbWl0RnJhbWVQb2ludGVycz4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPg0KKyAgICAgIDxSdW50aW1lVHlwZUluZm8+ZmFsc2U8L1J1bnRpbWVUeXBlSW5mbz4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmxpYmVheTMyLmxpYjt4ZXJjZXMtY18zLmxpYjsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikveHNlY18xLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPg0KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+DQorICAgICAgPFJhbmRvbWl6ZWRCYXNlQWRkcmVzcz5mYWxzZTwvUmFuZG9taXplZEJhc2VBZGRyZXNzPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+DQorICAgICAgPE9taXRGcmFtZVBvaW50ZXJzPnRydWU8L09taXRGcmFtZVBvaW50ZXJzPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+DQorICAgICAgPFJ1bnRpbWVUeXBlSW5mbz5mYWxzZTwvUnVudGltZVR5cGVJbmZvPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+bGliZWF5MzIubGliO3hlcmNlcy1jXzMubGliOy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS94c2VjXzEubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8UmFuZG9taXplZEJhc2VBZGRyZXNzPmZhbHNlPC9SYW5kb21pemVkQmFzZUFkZHJlc3M+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHNhbXBsZXNcSU9TdHJlYW1PdXRwdXR0ZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xzYW1wbGVzXHNpbXBsZVZhbGlkYXRlLmNwcCIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcc2FtcGxlc1xJT1N0cmVhbU91dHB1dHRlci5ocHAiIC8+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPg0KKyAgPC9JbXBvcnRHcm91cD4NCis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzEwLjAveHNlYy9jMTRuL2MxNG4udmN4cHJvaiBiL2MvUHJvamVjdHMvVkMxMC4wL3hzZWMvYzE0bi9jMTRuLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTlmMWJkMAotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkMxMC4wL3hzZWMvYzE0bi9jMTRuLnZjeHByb2oKQEAgLTAsMCArMSwzNjAgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+DQorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+DQorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWcgTm8gWGFsYW58V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnIE5vIFhhbGFuPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1ZyBObyBYYWxhbnx4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnIE5vIFhhbGFuPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZSBObyBYYWxhbnxXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZSBObyBYYWxhbjwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZSBObyBYYWxhbnx4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2UgTm8gWGFsYW48L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPg0KKyAgICA8UHJvamVjdEd1aWQ+e0FERkI0QTFBLTlDQjQtNEJFRS05REU4LTY1ODQ3MDg2MjRDNH08L1Byb2plY3RHdWlkPg0KKyAgICA8Um9vdE5hbWVzcGFjZT5jMTRuPC9Sb290TmFtZXNwYWNlPg0KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwPg0KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS9vYmovPC9JbnREaXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS9vYmovPC9JbnREaXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4NCisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4NCisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4NCisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4NCisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzNELmxpYjtYYWxhbi1DXzFELmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoT3V0RGlyKWMxNG4ucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+DQorICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPnRydWU8L0Jyb3dzZUluZm9ybWF0aW9uPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+eGVyY2VzLWNfM0QubGliO1hhbGFuLUNfMUQubGliO2NyeXB0MzIubGliO2xpYmVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoT3V0RGlyKWMxNG4ucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzMubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+DQorICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li4vLi4vLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+eGVyY2VzLWNfMy5saWI7Y3J5cHQzMi5saWI7bGliZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPnRydWU8L0Jyb3dzZUluZm9ybWF0aW9uPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzNELmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoT3V0RGlyKWMxNG4ucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyI+DQorICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzNELmxpYjtjcnlwdDMyLmxpYjtsaWJlYXkzMkQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChPdXREaXIpYzE0bi5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li4vLi4vLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzMubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyI+DQorICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li4vLi4vLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzMubGliO2NyeXB0MzIubGliO2xpYmVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPg0KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdG9vbHNcYzE0blxjMTRuLmNwcCIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5ceHNlY19saWJceHNlY19saWIudmN4cHJvaiI+DQorICAgICAgPFByb2plY3Q+e2Q1YjVhMDA3LWU4NzMtNGQxMi1iNGFmLTYwODExYWZkOWVmMX08L1Byb2plY3Q+DQorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4NCisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPg0KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkMxMC4wL3hzZWMvY2hlY2tzaWcvY2hlY2tzaWcudmN4cHJvaiBiL2MvUHJvamVjdHMvVkMxMC4wL3hzZWMvY2hlY2tzaWcvY2hlY2tzaWcudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmJlMDU5Ci0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzEwLjAveHNlYy9jaGVja3NpZy9jaGVja3NpZy52Y3hwcm9qCkBAIC0wLDAgKzEsMzY2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnIE5vIFhhbGFufFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZyBObyBYYWxhbjwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWcgTm8gWGFsYW58eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZyBObyBYYWxhbjwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2UgTm8gWGFsYW58V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2UgTm8gWGFsYW48L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2UgTm8gWGFsYW58eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlIE5vIFhhbGFuPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4NCisgICAgPFByb2plY3RHdWlkPntCMzJCOTU5Ni1FMjUwLTQxRDUtOEFBOC1BNjIzMjI2QzkwMTh9PC9Qcm9qZWN0R3VpZD4NCisgICAgPFJvb3ROYW1lc3BhY2U+Y2hlY2tzaWc8L1Jvb3ROYW1lc3BhY2U+DQorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPg0KKyAgPFByb3BlcnR5R3JvdXA+DQorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4NCisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4NCisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPnRydWU8L0Jyb3dzZUluZm9ybWF0aW9uPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+eGVyY2VzLWNfM0QubGliO1hhbGFuLUNfMUQubGliO2NyeXB0MzIubGliO2xpYmVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoT3V0RGlyKWNoZWNrc2lnLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPg0KKyAgICA8TWlkbD4NCisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4NCisgICAgPC9NaWRsPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzNELmxpYjtYYWxhbi1DXzFELmxpYjtjcnlwdDMyLmxpYjtsaWJlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpciljaGVja3NpZy5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li4vLi4vLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+eGVyY2VzLWNfMy5saWI7Y3J5cHQzMi5saWI7bGliZWF5MzIubGliO1hhbGFuLUNfMS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4NCisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4NCisgICAgPE1pZGw+DQorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+DQorICAgIDwvTWlkbD4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zLmxpYjtjcnlwdDMyLmxpYjtsaWJlYXkzMi5saWI7WGFsYW4tQ18xLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPg0KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4NCisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8QnJvd3NlSW5mb3JtYXRpb24+dHJ1ZTwvQnJvd3NlSW5mb3JtYXRpb24+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zRC5saWI7Y3J5cHQzMi5saWI7bGliZWF5MzJELmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoT3V0RGlyKWNoZWNrc2lnLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPg0KKyAgICA8TWlkbD4NCisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4NCisgICAgPC9NaWRsPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4NCisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8QnJvd3NlSW5mb3JtYXRpb24+dHJ1ZTwvQnJvd3NlSW5mb3JtYXRpb24+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zRC5saWI7Y3J5cHQzMi5saWI7bGliZWF5MzJELmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoT3V0RGlyKWNoZWNrc2lnLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtXSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+eGVyY2VzLWNfMy5saWI7Y3J5cHQzMi5saWI7bGliZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyI+DQorICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li4vLi4vLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzMubGliO2NyeXB0MzIubGliO2xpYmVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPg0KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdG9vbHNcY2hlY2tzaWdcQW5vbnltb3VzUmVzb2x2ZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x0b29sc1xjaGVja3NpZ1xjaGVja3NpZy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHRvb2xzXGNoZWNrc2lnXEludGVyb3BSZXNvbHZlci5jcHAiIC8+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHRvb2xzXGNoZWNrc2lnXEFub255bW91c1Jlc29sdmVyLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdG9vbHNcY2hlY2tzaWdcSW50ZXJvcFJlc29sdmVyLmhwcCIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5ceHNlY19saWJceHNlY19saWIudmN4cHJvaiI+DQorICAgICAgPFByb2plY3Q+e2Q1YjVhMDA3LWU4NzMtNGQxMi1iNGFmLTYwODExYWZkOWVmMX08L1Byb2plY3Q+DQorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4NCisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPg0KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkMxMC4wL3hzZWMvY2lwaGVyL2NpcGhlci52Y3hwcm9qIGIvYy9Qcm9qZWN0cy9WQzEwLjAveHNlYy9jaXBoZXIvY2lwaGVyLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM0NjU3ZQotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkMxMC4wL3hzZWMvY2lwaGVyL2NpcGhlci52Y3hwcm9qCkBAIC0wLDAgKzEsMzY0IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnIE5vIFhhbGFufFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZyBObyBYYWxhbjwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWcgTm8gWGFsYW58eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZyBObyBYYWxhbjwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2UgTm8gWGFsYW58V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2UgTm8gWGFsYW48L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2UgTm8gWGFsYW58eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlIE5vIFhhbGFuPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4NCisgICAgPFByb2plY3RHdWlkPnswQzQ1NUE5NS05OTFCLTQwMTktODg3Mi1BQTFGRTYxMzlGNjl9PC9Qcm9qZWN0R3VpZD4NCisgICAgPFJvb3ROYW1lc3BhY2U+Y2lwaGVyPC9Sb290TmFtZXNwYWNlPg0KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwPg0KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS9vYmovPC9JbnREaXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS9vYmovPC9JbnREaXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4NCisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4NCisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4NCisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4NCisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzNELmxpYjtYYWxhbi1DXzFELmxpYjtjcnlwdDMyLmxpYjtsaWJlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpciljaXBoZXIucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+DQorICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPnRydWU8L0Jyb3dzZUluZm9ybWF0aW9uPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+eGVyY2VzLWNfM0QubGliO1hhbGFuLUNfMUQubGliO2NyeXB0MzIubGliO2xpYmVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoT3V0RGlyKWNpcGhlci5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li4vLi4vLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+eGVyY2VzLWNfMy5saWI7Y3J5cHQzMi5saWI7bGliZWF5MzIubGliO1hhbGFuLUNfMS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4NCisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4NCisgICAgPE1pZGw+DQorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+DQorICAgIDwvTWlkbD4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zLmxpYjtjcnlwdDMyLmxpYjtsaWJlYXkzMi5saWI7WGFsYW4tQ18xLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPg0KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4NCisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8QnJvd3NlSW5mb3JtYXRpb24+dHJ1ZTwvQnJvd3NlSW5mb3JtYXRpb24+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zRC5saWI7Y3J5cHQzMi5saWI7bGliZWF5MzJELmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoT3V0RGlyKWNpcGhlci5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIj4NCisgICAgPE1pZGw+DQorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+DQorICAgIDwvTWlkbD4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li4vLi4vLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPnRydWU8L0Jyb3dzZUluZm9ybWF0aW9uPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+eGVyY2VzLWNfM0QubGliO2NyeXB0MzIubGliO2xpYmVheTMyRC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpciljaXBoZXIucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO1dJTjMyO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zLmxpYjtjcnlwdDMyLmxpYjtsaWJlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4NCisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIj4NCisgICAgPE1pZGw+DQorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+DQorICAgIDwvTWlkbD4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtXSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+eGVyY2VzLWNfMy5saWI7Y3J5cHQzMi5saWI7bGliZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x0b29sc1xjaXBoZXJcY2lwaGVyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdG9vbHNcY2lwaGVyXFhlbmNJbnRlcm9wUmVzb2x2ZXIuY3BwIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x0b29sc1xjaXBoZXJcWGVuY0ludGVyb3BSZXNvbHZlci5ocHAiIC8+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Ii4uXHhzZWNfbGliXHhzZWNfbGliLnZjeHByb2oiPg0KKyAgICAgIDxQcm9qZWN0PntkNWI1YTAwNy1lODczLTRkMTItYjRhZi02MDgxMWFmZDllZjF9PC9Qcm9qZWN0Pg0KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+DQorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+DQorICA8L0ltcG9ydEdyb3VwPg0KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jL1Byb2plY3RzL1ZDMTAuMC94c2VjL3NpZ2luZi9zaWdpbmYudmN4cHJvaiBiL2MvUHJvamVjdHMvVkMxMC4wL3hzZWMvc2lnaW5mL3NpZ2luZi52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExZjhiOTIKLS0tIC9kZXYvbnVsbAorKysgYi9jL1Byb2plY3RzL1ZDMTAuMC94c2VjL3NpZ2luZi9zaWdpbmYudmN4cHJvagpAQCAtMCwwICsxLDMwMiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1ZyBObyBYYWxhbnxXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWcgTm8gWGFsYW48L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnIE5vIFhhbGFufHg2NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWcgTm8gWGFsYW48L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlIE5vIFhhbGFufFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlIE5vIFhhbGFuPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlIE5vIFhhbGFufHg2NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZSBObyBYYWxhbjwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+DQorICAgIDxQcm9qZWN0R3VpZD57RjE2QkZGRTUtRjJEMC00QkZDLTgxNjUtRTAzMDc4MUFGMURBfTwvUHJvamVjdEd1aWQ+DQorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4NCisgICAgPFJvb3ROYW1lc3BhY2U+c2lnaW5mPC9Sb290TmFtZXNwYWNlPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+dHJ1ZTwvVXNlRGVidWdMaWJyYXJpZXM+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPFVzZURlYnVnTGlicmFyaWVzPnRydWU8L1VzZURlYnVnTGlicmFyaWVzPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPg0KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4NCisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPg0KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+DQorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4NCisgICAgPExpbmtJbmNyZW1lbnRhbD50cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS9vYmovPC9JbnREaXI+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyI+DQorICAgIDxMaW5rSW5jcmVtZW50YWw+dHJ1ZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4NCisgICAgPExpbmtJbmNyZW1lbnRhbD50cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS9vYmovPC9JbnREaXI+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPg0KKyAgICA8TGlua0luY3JlbWVudGFsPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KKyAgICA8TGlua0luY3JlbWVudGFsPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS9vYmovPC9JbnREaXI+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIj4NCisgICAgPExpbmtJbmNyZW1lbnRhbD5mYWxzZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPg0KKyAgICA8TGlua0luY3JlbWVudGFsPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS9vYmovPC9JbnREaXI+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyI+DQorICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+eGVyY2VzLWNfM0QubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+eGVyY2VzLWNfM0QubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li4vLi4vLi4vLi4vaW5jbHVkZTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzNELmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zRC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPg0KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPg0KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzMubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4NCisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPg0KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPg0KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzMubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+DQorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li4vLi4vLi4vLi4vaW5jbHVkZTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+eGVyY2VzLWNfMy5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdG9vbHNcc2lnaW5mXHNpZ2luZi5jcHAiIC8+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Ii4uXHhzZWNfbGliXHhzZWNfbGliLnZjeHByb2oiPg0KKyAgICAgIDxQcm9qZWN0PntkNWI1YTAwNy1lODczLTRkMTItYjRhZi02MDgxMWFmZDllZjF9PC9Qcm9qZWN0Pg0KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPg0KKyAgPC9JbXBvcnRHcm91cD4NCis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzEwLjAveHNlYy90ZW1wbGF0ZXNpZ24vdGVtcGxhdGVzaWduLnZjeHByb2ogYi9jL1Byb2plY3RzL1ZDMTAuMC94c2VjL3RlbXBsYXRlc2lnbi90ZW1wbGF0ZXNpZ24udmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzVmOTViCi0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzEwLjAveHNlYy90ZW1wbGF0ZXNpZ24vdGVtcGxhdGVzaWduLnZjeHByb2oKQEAgLTAsMCArMSwzNjggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+DQorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+DQorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWcgTm8gWGFsYW58V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnIE5vIFhhbGFuPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1ZyBObyBYYWxhbnx4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnIE5vIFhhbGFuPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZSBObyBYYWxhbnxXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZSBObyBYYWxhbjwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZSBObyBYYWxhbnx4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2UgTm8gWGFsYW48L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPg0KKyAgICA8UHJvamVjdEd1aWQ+ezEwQ0UwRTg2LURGOTQtNDI0NC05RDgxLUMxRDVDRERBNkFEOH08L1Byb2plY3RHdWlkPg0KKyAgICA8Um9vdE5hbWVzcGFjZT50ZW1wbGF0ZXNpZ248L1Jvb3ROYW1lc3BhY2U+DQorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPg0KKyAgPFByb3BlcnR5R3JvdXA+DQorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4NCisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4NCisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPnRydWU8L0Jyb3dzZUluZm9ybWF0aW9uPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+eGVyY2VzLWNfM0QubGliO1hhbGFuLUNfMUQubGliO2NyeXB0MzIubGliO2xpYmVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoT3V0RGlyKXRlbXBsYXRlc2lnbi5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPFJhbmRvbWl6ZWRCYXNlQWRkcmVzcz5mYWxzZTwvUmFuZG9taXplZEJhc2VBZGRyZXNzPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+DQorICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPnRydWU8L0Jyb3dzZUluZm9ybWF0aW9uPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+eGVyY2VzLWNfM0QubGliO1hhbGFuLUNfMUQubGliO2NyeXB0MzIubGliO2xpYmVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoT3V0RGlyKXRlbXBsYXRlc2lnbi5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPFJhbmRvbWl6ZWRCYXNlQWRkcmVzcz5mYWxzZTwvUmFuZG9taXplZEJhc2VBZGRyZXNzPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzMubGliO2NyeXB0MzIubGliO2xpYmVheTMyLmxpYjtYYWxhbi1DXzEubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8UmFuZG9taXplZEJhc2VBZGRyZXNzPmZhbHNlPC9SYW5kb21pemVkQmFzZUFkZHJlc3M+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPg0KKyAgICA8TWlkbD4NCisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4NCisgICAgPC9NaWRsPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzMubGliO2NyeXB0MzIubGliO2xpYmVheTMyLmxpYjtYYWxhbi1DXzEubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8UmFuZG9taXplZEJhc2VBZGRyZXNzPmZhbHNlPC9SYW5kb21pemVkQmFzZUFkZHJlc3M+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4NCisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8QnJvd3NlSW5mb3JtYXRpb24+dHJ1ZTwvQnJvd3NlSW5mb3JtYXRpb24+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zRC5saWI7Y3J5cHQzMi5saWI7bGliZWF5MzJELmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoT3V0RGlyKXRlbXBsYXRlc2lnbi5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPFJhbmRvbWl6ZWRCYXNlQWRkcmVzcz5mYWxzZTwvUmFuZG9taXplZEJhc2VBZGRyZXNzPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyI+DQorICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzNELmxpYjtjcnlwdDMyLmxpYjtsaWJlYXkzMkQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChPdXREaXIpdGVtcGxhdGVzaWduLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8UmFuZG9taXplZEJhc2VBZGRyZXNzPmZhbHNlPC9SYW5kb21pemVkQmFzZUFkZHJlc3M+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li4vLi4vLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzMubGliO2NyeXB0MzIubGliO2xpYmVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPg0KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+DQorICAgICAgPFJhbmRvbWl6ZWRCYXNlQWRkcmVzcz5mYWxzZTwvUmFuZG9taXplZEJhc2VBZGRyZXNzPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIj4NCisgICAgPE1pZGw+DQorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+DQorICAgIDwvTWlkbD4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtXSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+eGVyY2VzLWNfMy5saWI7Y3J5cHQzMi5saWI7bGliZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8UmFuZG9taXplZEJhc2VBZGRyZXNzPmZhbHNlPC9SYW5kb21pemVkQmFzZUFkZHJlc3M+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdG9vbHNcdGVtcGxhdGVzaWduXHRlbXBsYXRlc2lnbi5jcHAiIC8+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Ii4uXHhzZWNfbGliXHhzZWNfbGliLnZjeHByb2oiPg0KKyAgICAgIDxQcm9qZWN0PntkNWI1YTAwNy1lODczLTRkMTItYjRhZi02MDgxMWFmZDllZjF9PC9Qcm9qZWN0Pg0KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+DQorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+DQorICA8L0ltcG9ydEdyb3VwPg0KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jL1Byb2plY3RzL1ZDMTAuMC94c2VjL3RocmVhZFRlc3QvdGhyZWFkVGVzdC52Y3hwcm9qIGIvYy9Qcm9qZWN0cy9WQzEwLjAveHNlYy90aHJlYWRUZXN0L3RocmVhZFRlc3QudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzZjYWZhCi0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzEwLjAveHNlYy90aHJlYWRUZXN0L3RocmVhZFRlc3QudmN4cHJvagpAQCAtMCwwICsxLDMxMCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1ZyBObyBYYWxhbnxXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWcgTm8gWGFsYW48L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnIE5vIFhhbGFufHg2NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWcgTm8gWGFsYW48L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlIE5vIFhhbGFufFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlIE5vIFhhbGFuPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlIE5vIFhhbGFufHg2NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZSBObyBYYWxhbjwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+DQorICAgIDxQcm9qZWN0R3VpZD57MUIyMDYyREUtNTI4My00NTRBLTg2NTUtNDg5NTg1ODQzODYzfTwvUHJvamVjdEd1aWQ+DQorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4NCisgICAgPFJvb3ROYW1lc3BhY2U+dGhyZWFkVGVzdDwvUm9vdE5hbWVzcGFjZT4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+dHJ1ZTwvVXNlRGVidWdMaWJyYXJpZXM+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+dHJ1ZTwvVXNlRGVidWdMaWJyYXJpZXM+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPFVzZURlYnVnTGlicmFyaWVzPnRydWU8L1VzZURlYnVnTGlicmFyaWVzPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4NCisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+DQorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4NCisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPg0KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPg0KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+DQorICAgIDxMaW5rSW5jcmVtZW50YWw+dHJ1ZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciPg0KKyAgICA8TGlua0luY3JlbWVudGFsPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+DQorICAgIDxMaW5rSW5jcmVtZW50YWw+dHJ1ZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIj4NCisgICAgPExpbmtJbmNyZW1lbnRhbD50cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS9vYmovPC9JbnREaXI+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4NCisgICAgPExpbmtJbmNyZW1lbnRhbD5mYWxzZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyI+DQorICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4NCisgICAgPExpbmtJbmNyZW1lbnRhbD5mYWxzZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciPg0KKyAgICA8TGlua0luY3JlbWVudGFsPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS9vYmovPC9JbnREaXI+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPnRydWU8L0Jyb3dzZUluZm9ybWF0aW9uPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zRC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+eGVyY2VzLWNfM0QubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPnRydWU8L0Jyb3dzZUluZm9ybWF0aW9uPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zRC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8QnJvd3NlSW5mb3JtYXRpb24+dHJ1ZTwvQnJvd3NlSW5mb3JtYXRpb24+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li4vLi4vLi4vLi4vaW5jbHVkZTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzNELmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+DQorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li4vLi4vLi4vLi4vaW5jbHVkZTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+eGVyY2VzLWNfMy5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPg0KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPg0KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzMubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+DQorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li4vLi4vLi4vLi4vaW5jbHVkZTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+eGVyY2VzLWNfMy5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4NCisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x0b29sc1x0aHJlYWRUZXN0XHRocmVhZHRlc3QuY3BwIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIuLlx4c2VjX2xpYlx4c2VjX2xpYi52Y3hwcm9qIj4NCisgICAgICA8UHJvamVjdD57ZDViNWEwMDctZTg3My00ZDEyLWI0YWYtNjA4MTFhZmQ5ZWYxfTwvUHJvamVjdD4NCisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPg0KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkMxMC4wL3hzZWMvdHhmbW91dC90eGZtb3V0LnZjeHByb2ogYi9jL1Byb2plY3RzL1ZDMTAuMC94c2VjL3R4Zm1vdXQvdHhmbW91dC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjN2E1M2YKLS0tIC9kZXYvbnVsbAorKysgYi9jL1Byb2plY3RzL1ZDMTAuMC94c2VjL3R4Zm1vdXQvdHhmbW91dC52Y3hwcm9qCkBAIC0wLDAgKzEsMzEwIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnIE5vIFhhbGFufFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZyBObyBYYWxhbjwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWcgTm8gWGFsYW58eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZyBObyBYYWxhbjwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2UgTm8gWGFsYW58V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2UgTm8gWGFsYW48L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2UgTm8gWGFsYW58eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlIE5vIFhhbGFuPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4NCisgICAgPFByb2plY3RHdWlkPntDODRENkNDRi1FOUU1LTQ4NDYtOUU1MS00RDg0NDEyNjYzRkF9PC9Qcm9qZWN0R3VpZD4NCisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPg0KKyAgICA8Um9vdE5hbWVzcGFjZT50eGZtb3V0PC9Sb290TmFtZXNwYWNlPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+dHJ1ZTwvVXNlRGVidWdMaWJyYXJpZXM+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPFVzZURlYnVnTGlicmFyaWVzPnRydWU8L1VzZURlYnVnTGlicmFyaWVzPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPg0KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4NCisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPg0KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+DQorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4NCisgICAgPExpbmtJbmNyZW1lbnRhbD50cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS9vYmovPC9JbnREaXI+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyI+DQorICAgIDxMaW5rSW5jcmVtZW50YWw+dHJ1ZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4NCisgICAgPExpbmtJbmNyZW1lbnRhbD50cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS9vYmovPC9JbnREaXI+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPg0KKyAgICA8TGlua0luY3JlbWVudGFsPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KKyAgICA8TGlua0luY3JlbWVudGFsPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS9vYmovPC9JbnREaXI+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIj4NCisgICAgPExpbmtJbmNyZW1lbnRhbD5mYWxzZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPg0KKyAgICA8TGlua0luY3JlbWVudGFsPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS9vYmovPC9JbnREaXI+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyI+DQorICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NSVF9TRUNVUkVfTk9fV0FSTklOR1M7V0lOMzI7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8QnJvd3NlSW5mb3JtYXRpb24+dHJ1ZTwvQnJvd3NlSW5mb3JtYXRpb24+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li4vLi4vLi4vLi4vaW5jbHVkZTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzNELmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DUlRfU0VDVVJFX05PX1dBUk5JTkdTO1dJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPnRydWU8L0Jyb3dzZUluZm9ybWF0aW9uPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zRC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NSVF9TRUNVUkVfTk9fV0FSTklOR1M7V0lOMzI7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8QnJvd3NlSW5mb3JtYXRpb24+dHJ1ZTwvQnJvd3NlSW5mb3JtYXRpb24+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li4vLi4vLi4vLi4vaW5jbHVkZTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzNELmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUztXSU4zMjtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+eGVyY2VzLWNfM0QubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4NCisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NSVF9TRUNVUkVfTk9fV0FSTklOR1M7V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+DQorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DUlRfU0VDVVJFX05PX1dBUk5JTkdTO1dJTjMyO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li4vLi4vLi4vLi4vaW5jbHVkZTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+eGVyY2VzLWNfMy5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4NCisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NSVF9TRUNVUkVfTk9fV0FSTklOR1M7V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPg0KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUztXSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPg0KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzMubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHRvb2xzXHR4Zm1vdXRcdHhmbW91dC5jcHAiIC8+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Ii4uXHhzZWNfbGliXHhzZWNfbGliLnZjeHByb2oiPg0KKyAgICAgIDxQcm9qZWN0PntkNWI1YTAwNy1lODczLTRkMTItYjRhZi02MDgxMWFmZDllZjF9PC9Qcm9qZWN0Pg0KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPg0KKyAgPC9JbXBvcnRHcm91cD4NCis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzEwLjAveHNlYy94a2xpZW50L3hrbGllbnQudmN4cHJvaiBiL2MvUHJvamVjdHMvVkMxMC4wL3hzZWMveGtsaWVudC94a2xpZW50LnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUwNmMyOQotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkMxMC4wL3hzZWMveGtsaWVudC94a2xpZW50LnZjeHByb2oKQEAgLTAsMCArMSwzMTAgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+DQorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+DQorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWcgTm8gWGFsYW58V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnIE5vIFhhbGFuPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1ZyBObyBYYWxhbnx4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnIE5vIFhhbGFuPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZSBObyBYYWxhbnxXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZSBObyBYYWxhbjwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZSBObyBYYWxhbnx4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2UgTm8gWGFsYW48L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPg0KKyAgICA8UHJvamVjdEd1aWQ+ezJCRjREQUE4LUEwNTctNDA5OC1BRUE5LUI1ODc4ODJBMDhCRH08L1Byb2plY3RHdWlkPg0KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+DQorICAgIDxSb290TmFtZXNwYWNlPnhrbGllbnQ8L1Jvb3ROYW1lc3BhY2U+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPFVzZURlYnVnTGlicmFyaWVzPnRydWU8L1VzZURlYnVnTGlicmFyaWVzPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPFVzZURlYnVnTGlicmFyaWVzPnRydWU8L1VzZURlYnVnTGlicmFyaWVzPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+dHJ1ZTwvVXNlRGVidWdMaWJyYXJpZXM+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+DQorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPg0KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+DQorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4NCisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPg0KKyAgICA8TGlua0luY3JlbWVudGFsPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIj4NCisgICAgPExpbmtJbmNyZW1lbnRhbD50cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS9vYmovPC9JbnREaXI+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPg0KKyAgICA8TGlua0luY3JlbWVudGFsPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyI+DQorICAgIDxMaW5rSW5jcmVtZW50YWw+dHJ1ZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciPg0KKyAgICA8TGlua0luY3JlbWVudGFsPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS9vYmovPC9JbnREaXI+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+DQorICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIj4NCisgICAgPExpbmtJbmNyZW1lbnRhbD5mYWxzZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+eGVyY2VzLWNfM0QubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8QnJvd3NlSW5mb3JtYXRpb24+dHJ1ZTwvQnJvd3NlSW5mb3JtYXRpb24+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li4vLi4vLi4vLi4vaW5jbHVkZTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzNELmxpYjtsaWJlYXkzMkQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPnRydWU8L0Jyb3dzZUluZm9ybWF0aW9uPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zRC5saWI7bGliZWF5MzJELmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+eGVyY2VzLWNfM0QubGliO2xpYmVheTMyRC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPg0KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPg0KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzMubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4NCisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zLmxpYjtsaWJlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4NCisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zLmxpYjtsaWJlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4NCisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zLmxpYjtsaWJlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdG9vbHNceGtsaWVudFx4a2xpZW50LmNwcCIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5ceHNlY19saWJceHNlY19saWIudmN4cHJvaiI+DQorICAgICAgPFByb2plY3Q+e2Q1YjVhMDA3LWU4NzMtNGQxMi1iNGFmLTYwODExYWZkOWVmMX08L1Byb2plY3Q+DQorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+DQorICA8L0ltcG9ydEdyb3VwPg0KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jL1Byb2plY3RzL1ZDMTAuMC94c2VjL3hzZWMuc2xuIGIvYy9Qcm9qZWN0cy9WQzEwLjAveHNlYy94c2VjLnNsbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmQ5OTNhCi0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzEwLjAveHNlYy94c2VjLnNsbgpAQCAtMCwwICsxLDIxNCBAQAorTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTEuMDANCisjIFZpc3VhbCBTdHVkaW8gMjAxMA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAieHNlY19saWIiLCAieHNlY19saWJceHNlY19saWIudmN4cHJvaiIsICJ7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjMTRuIiwgImMxNG5cYzE0bi52Y3hwcm9qIiwgIntBREZCNEExQS05Q0I0LTRCRUUtOURFOC02NTg0NzA4NjI0QzR9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImNoZWNrc2lnIiwgImNoZWNrc2lnXGNoZWNrc2lnLnZjeHByb2oiLCAie0IzMkI5NTk2LUUyNTAtNDFENS04QUE4LUE2MjMyMjZDOTAxOH0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY2lwaGVyIiwgImNpcGhlclxjaXBoZXIudmN4cHJvaiIsICJ7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ0ZW1wbGF0ZXNpZ24iLCAidGVtcGxhdGVzaWduXHRlbXBsYXRlc2lnbi52Y3hwcm9qIiwgInsxMENFMEU4Ni1ERjk0LTQyNDQtOUQ4MS1DMUQ1Q0REQTZBRDh9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNpZ2luZiIsICJzaWdpbmZcc2lnaW5mLnZjeHByb2oiLCAie0YxNkJGRkU1LUYyRDAtNEJGQy04MTY1LUUwMzA3ODFBRjFEQX0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9ID0ge0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ0aHJlYWRUZXN0IiwgInRocmVhZFRlc3RcdGhyZWFkVGVzdC52Y3hwcm9qIiwgInsxQjIwNjJERS01MjgzLTQ1NEEtODY1NS00ODk1ODU4NDM4NjN9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfSA9IHtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidHhmbW91dCIsICJ0eGZtb3V0XHR4Zm1vdXQudmN4cHJvaiIsICJ7Qzg0RDZDQ0YtRTlFNS00ODQ2LTlFNTEtNEQ4NDQxMjY2M0ZBfSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0gPSB7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInhrbGllbnQiLCAieGtsaWVudFx4a2xpZW50LnZjeHByb2oiLCAiezJCRjREQUE4LUEwNTctNDA5OC1BRUE5LUI1ODc4ODJBMDhCRH0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9ID0ge0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ4dGVzdCIsICJ4dGVzdFx4dGVzdC52Y3hwcm9qIiwgIns1QzFFNTkwQS1GOTExLTQyOTUtODc0Ny0wQzA5NjgyREEwMDl9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfSA9IHtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK0dsb2JhbA0KKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbg0KKwkJRGVidWcgTm8gWGFsYW58V2luMzIgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMg0KKwkJRGVidWcgTm8gWGFsYW58eDY0ID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyDQorCQlEZWJ1Z3x4NjQgPSBEZWJ1Z3x4NjQNCisJCVJlbGVhc2UgTm8gWGFsYW58V2luMzIgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQlSZWxlYXNlIE5vIFhhbGFufHg2NCA9IFJlbGVhc2UgTm8gWGFsYW58eDY0DQorCQlSZWxlYXNlfFdpbjMyID0gUmVsZWFzZXxXaW4zMg0KKwkJUmVsZWFzZXx4NjQgPSBSZWxlYXNlfHg2NA0KKwlFbmRHbG9iYWxTZWN0aW9uDQorCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0aW9uDQorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMg0KKwkJe0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0uRGVidWcgTm8gWGFsYW58V2luMzIuQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfS5EZWJ1ZyBObyBYYWxhbnx4NjQuQWN0aXZlQ2ZnID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfS5EZWJ1ZyBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufHg2NA0KKwkJe0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9LlJlbGVhc2UgTm8gWGFsYW58V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJe0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJe0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnx4NjQNCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9LlJlbGVhc2UgTm8gWGFsYW58eDY0LkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJe0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7QURGQjRBMUEtOUNCNC00QkVFLTlERTgtNjU4NDcwODYyNEM0fS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMg0KKwkJe0FERkI0QTFBLTlDQjQtNEJFRS05REU4LTY1ODQ3MDg2MjRDNH0uRGVidWcgTm8gWGFsYW58V2luMzIuQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7QURGQjRBMUEtOUNCNC00QkVFLTlERTgtNjU4NDcwODYyNEM0fS5EZWJ1ZyBObyBYYWxhbnx4NjQuQWN0aXZlQ2ZnID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7QURGQjRBMUEtOUNCNC00QkVFLTlERTgtNjU4NDcwODYyNEM0fS5EZWJ1ZyBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufHg2NA0KKwkJe0FERkI0QTFBLTlDQjQtNEJFRS05REU4LTY1ODQ3MDg2MjRDNH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtBREZCNEExQS05Q0I0LTRCRUUtOURFOC02NTg0NzA4NjI0QzR9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0FERkI0QTFBLTlDQjQtNEJFRS05REU4LTY1ODQ3MDg2MjRDNH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0FERkI0QTFBLTlDQjQtNEJFRS05REU4LTY1ODQ3MDg2MjRDNH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtBREZCNEExQS05Q0I0LTRCRUUtOURFOC02NTg0NzA4NjI0QzR9LlJlbGVhc2UgTm8gWGFsYW58V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJe0FERkI0QTFBLTlDQjQtNEJFRS05REU4LTY1ODQ3MDg2MjRDNH0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJe0FERkI0QTFBLTlDQjQtNEJFRS05REU4LTY1ODQ3MDg2MjRDNH0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnx4NjQNCisJCXtBREZCNEExQS05Q0I0LTRCRUUtOURFOC02NTg0NzA4NjI0QzR9LlJlbGVhc2UgTm8gWGFsYW58eDY0LkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJe0FERkI0QTFBLTlDQjQtNEJFRS05REU4LTY1ODQ3MDg2MjRDNH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QURGQjRBMUEtOUNCNC00QkVFLTlERTgtNjU4NDcwODYyNEM0fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QURGQjRBMUEtOUNCNC00QkVFLTlERTgtNjU4NDcwODYyNEM0fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0FERkI0QTFBLTlDQjQtNEJFRS05REU4LTY1ODQ3MDg2MjRDNH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMg0KKwkJe0IzMkI5NTk2LUUyNTAtNDFENS04QUE4LUE2MjMyMjZDOTAxOH0uRGVidWcgTm8gWGFsYW58V2luMzIuQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fS5EZWJ1ZyBObyBYYWxhbnx4NjQuQWN0aXZlQ2ZnID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fS5EZWJ1ZyBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufHg2NA0KKwkJe0IzMkI5NTk2LUUyNTAtNDFENS04QUE4LUE2MjMyMjZDOTAxOH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtCMzJCOTU5Ni1FMjUwLTQxRDUtOEFBOC1BNjIzMjI2QzkwMTh9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0IzMkI5NTk2LUUyNTAtNDFENS04QUE4LUE2MjMyMjZDOTAxOH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0IzMkI5NTk2LUUyNTAtNDFENS04QUE4LUE2MjMyMjZDOTAxOH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtCMzJCOTU5Ni1FMjUwLTQxRDUtOEFBOC1BNjIzMjI2QzkwMTh9LlJlbGVhc2UgTm8gWGFsYW58V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJe0IzMkI5NTk2LUUyNTAtNDFENS04QUE4LUE2MjMyMjZDOTAxOH0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJe0IzMkI5NTk2LUUyNTAtNDFENS04QUE4LUE2MjMyMjZDOTAxOH0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnx4NjQNCisJCXtCMzJCOTU5Ni1FMjUwLTQxRDUtOEFBOC1BNjIzMjI2QzkwMTh9LlJlbGVhc2UgTm8gWGFsYW58eDY0LkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJe0IzMkI5NTk2LUUyNTAtNDFENS04QUE4LUE2MjMyMjZDOTAxOH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0IzMkI5NTk2LUUyNTAtNDFENS04QUE4LUE2MjMyMjZDOTAxOH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMg0KKwkJezBDNDU1QTk1LTk5MUItNDAxOS04ODcyLUFBMUZFNjEzOUY2OX0uRGVidWcgTm8gWGFsYW58V2luMzIuQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fS5EZWJ1ZyBObyBYYWxhbnx4NjQuQWN0aXZlQ2ZnID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fS5EZWJ1ZyBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufHg2NA0KKwkJezBDNDU1QTk1LTk5MUItNDAxOS04ODcyLUFBMUZFNjEzOUY2OX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXswQzQ1NUE5NS05OTFCLTQwMTktODg3Mi1BQTFGRTYxMzlGNjl9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezBDNDU1QTk1LTk5MUItNDAxOS04ODcyLUFBMUZFNjEzOUY2OX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezBDNDU1QTk1LTk5MUItNDAxOS04ODcyLUFBMUZFNjEzOUY2OX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXswQzQ1NUE5NS05OTFCLTQwMTktODg3Mi1BQTFGRTYxMzlGNjl9LlJlbGVhc2UgTm8gWGFsYW58V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJezBDNDU1QTk1LTk5MUItNDAxOS04ODcyLUFBMUZFNjEzOUY2OX0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJezBDNDU1QTk1LTk5MUItNDAxOS04ODcyLUFBMUZFNjEzOUY2OX0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnx4NjQNCisJCXswQzQ1NUE5NS05OTFCLTQwMTktODg3Mi1BQTFGRTYxMzlGNjl9LlJlbGVhc2UgTm8gWGFsYW58eDY0LkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJezBDNDU1QTk1LTk5MUItNDAxOS04ODcyLUFBMUZFNjEzOUY2OX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezBDNDU1QTk1LTk5MUItNDAxOS04ODcyLUFBMUZFNjEzOUY2OX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7MTBDRTBFODYtREY5NC00MjQ0LTlEODEtQzFENUNEREE2QUQ4fS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMg0KKwkJezEwQ0UwRTg2LURGOTQtNDI0NC05RDgxLUMxRDVDRERBNkFEOH0uRGVidWcgTm8gWGFsYW58V2luMzIuQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7MTBDRTBFODYtREY5NC00MjQ0LTlEODEtQzFENUNEREE2QUQ4fS5EZWJ1ZyBObyBYYWxhbnx4NjQuQWN0aXZlQ2ZnID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7MTBDRTBFODYtREY5NC00MjQ0LTlEODEtQzFENUNEREE2QUQ4fS5EZWJ1ZyBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufHg2NA0KKwkJezEwQ0UwRTg2LURGOTQtNDI0NC05RDgxLUMxRDVDRERBNkFEOH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXsxMENFMEU4Ni1ERjk0LTQyNDQtOUQ4MS1DMUQ1Q0REQTZBRDh9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezEwQ0UwRTg2LURGOTQtNDI0NC05RDgxLUMxRDVDRERBNkFEOH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezEwQ0UwRTg2LURGOTQtNDI0NC05RDgxLUMxRDVDRERBNkFEOH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXsxMENFMEU4Ni1ERjk0LTQyNDQtOUQ4MS1DMUQ1Q0REQTZBRDh9LlJlbGVhc2UgTm8gWGFsYW58V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJezEwQ0UwRTg2LURGOTQtNDI0NC05RDgxLUMxRDVDRERBNkFEOH0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJezEwQ0UwRTg2LURGOTQtNDI0NC05RDgxLUMxRDVDRERBNkFEOH0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnx4NjQNCisJCXsxMENFMEU4Ni1ERjk0LTQyNDQtOUQ4MS1DMUQ1Q0REQTZBRDh9LlJlbGVhc2UgTm8gWGFsYW58eDY0LkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJezEwQ0UwRTg2LURGOTQtNDI0NC05RDgxLUMxRDVDRERBNkFEOH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MTBDRTBFODYtREY5NC00MjQ0LTlEODEtQzFENUNEREE2QUQ4fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MTBDRTBFODYtREY5NC00MjQ0LTlEODEtQzFENUNEREE2QUQ4fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezEwQ0UwRTg2LURGOTQtNDI0NC05RDgxLUMxRDVDRERBNkFEOH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7RjE2QkZGRTUtRjJEMC00QkZDLTgxNjUtRTAzMDc4MUFGMURBfS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMg0KKwkJe0YxNkJGRkU1LUYyRDAtNEJGQy04MTY1LUUwMzA3ODFBRjFEQX0uRGVidWcgTm8gWGFsYW58V2luMzIuQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7RjE2QkZGRTUtRjJEMC00QkZDLTgxNjUtRTAzMDc4MUFGMURBfS5EZWJ1ZyBObyBYYWxhbnx4NjQuQWN0aXZlQ2ZnID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7RjE2QkZGRTUtRjJEMC00QkZDLTgxNjUtRTAzMDc4MUFGMURBfS5EZWJ1ZyBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufHg2NA0KKwkJe0YxNkJGRkU1LUYyRDAtNEJGQy04MTY1LUUwMzA3ODFBRjFEQX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtGMTZCRkZFNS1GMkQwLTRCRkMtODE2NS1FMDMwNzgxQUYxREF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0YxNkJGRkU1LUYyRDAtNEJGQy04MTY1LUUwMzA3ODFBRjFEQX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0YxNkJGRkU1LUYyRDAtNEJGQy04MTY1LUUwMzA3ODFBRjFEQX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtGMTZCRkZFNS1GMkQwLTRCRkMtODE2NS1FMDMwNzgxQUYxREF9LlJlbGVhc2UgTm8gWGFsYW58V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJe0YxNkJGRkU1LUYyRDAtNEJGQy04MTY1LUUwMzA3ODFBRjFEQX0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJe0YxNkJGRkU1LUYyRDAtNEJGQy04MTY1LUUwMzA3ODFBRjFEQX0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnx4NjQNCisJCXtGMTZCRkZFNS1GMkQwLTRCRkMtODE2NS1FMDMwNzgxQUYxREF9LlJlbGVhc2UgTm8gWGFsYW58eDY0LkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJe0YxNkJGRkU1LUYyRDAtNEJGQy04MTY1LUUwMzA3ODFBRjFEQX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RjE2QkZGRTUtRjJEMC00QkZDLTgxNjUtRTAzMDc4MUFGMURBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7RjE2QkZGRTUtRjJEMC00QkZDLTgxNjUtRTAzMDc4MUFGMURBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0YxNkJGRkU1LUYyRDAtNEJGQy04MTY1LUUwMzA3ODFBRjFEQX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7MUIyMDYyREUtNTI4My00NTRBLTg2NTUtNDg5NTg1ODQzODYzfS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMg0KKwkJezFCMjA2MkRFLTUyODMtNDU0QS04NjU1LTQ4OTU4NTg0Mzg2M30uRGVidWcgTm8gWGFsYW58V2luMzIuQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7MUIyMDYyREUtNTI4My00NTRBLTg2NTUtNDg5NTg1ODQzODYzfS5EZWJ1ZyBObyBYYWxhbnx4NjQuQWN0aXZlQ2ZnID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7MUIyMDYyREUtNTI4My00NTRBLTg2NTUtNDg5NTg1ODQzODYzfS5EZWJ1ZyBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufHg2NA0KKwkJezFCMjA2MkRFLTUyODMtNDU0QS04NjU1LTQ4OTU4NTg0Mzg2M30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXsxQjIwNjJERS01MjgzLTQ1NEEtODY1NS00ODk1ODU4NDM4NjN9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezFCMjA2MkRFLTUyODMtNDU0QS04NjU1LTQ4OTU4NTg0Mzg2M30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezFCMjA2MkRFLTUyODMtNDU0QS04NjU1LTQ4OTU4NTg0Mzg2M30uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXsxQjIwNjJERS01MjgzLTQ1NEEtODY1NS00ODk1ODU4NDM4NjN9LlJlbGVhc2UgTm8gWGFsYW58V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJezFCMjA2MkRFLTUyODMtNDU0QS04NjU1LTQ4OTU4NTg0Mzg2M30uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJezFCMjA2MkRFLTUyODMtNDU0QS04NjU1LTQ4OTU4NTg0Mzg2M30uUmVsZWFzZSBObyBYYWxhbnx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnx4NjQNCisJCXsxQjIwNjJERS01MjgzLTQ1NEEtODY1NS00ODk1ODU4NDM4NjN9LlJlbGVhc2UgTm8gWGFsYW58eDY0LkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJezFCMjA2MkRFLTUyODMtNDU0QS04NjU1LTQ4OTU4NTg0Mzg2M30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MUIyMDYyREUtNTI4My00NTRBLTg2NTUtNDg5NTg1ODQzODYzfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MUIyMDYyREUtNTI4My00NTRBLTg2NTUtNDg5NTg1ODQzODYzfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezFCMjA2MkRFLTUyODMtNDU0QS04NjU1LTQ4OTU4NTg0Mzg2M30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7Qzg0RDZDQ0YtRTlFNS00ODQ2LTlFNTEtNEQ4NDQxMjY2M0ZBfS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMg0KKwkJe0M4NEQ2Q0NGLUU5RTUtNDg0Ni05RTUxLTREODQ0MTI2NjNGQX0uRGVidWcgTm8gWGFsYW58V2luMzIuQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7Qzg0RDZDQ0YtRTlFNS00ODQ2LTlFNTEtNEQ4NDQxMjY2M0ZBfS5EZWJ1ZyBObyBYYWxhbnx4NjQuQWN0aXZlQ2ZnID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7Qzg0RDZDQ0YtRTlFNS00ODQ2LTlFNTEtNEQ4NDQxMjY2M0ZBfS5EZWJ1ZyBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufHg2NA0KKwkJe0M4NEQ2Q0NGLUU5RTUtNDg0Ni05RTUxLTREODQ0MTI2NjNGQX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtDODRENkNDRi1FOUU1LTQ4NDYtOUU1MS00RDg0NDEyNjYzRkF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0M4NEQ2Q0NGLUU5RTUtNDg0Ni05RTUxLTREODQ0MTI2NjNGQX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0M4NEQ2Q0NGLUU5RTUtNDg0Ni05RTUxLTREODQ0MTI2NjNGQX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtDODRENkNDRi1FOUU1LTQ4NDYtOUU1MS00RDg0NDEyNjYzRkF9LlJlbGVhc2UgTm8gWGFsYW58V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJe0M4NEQ2Q0NGLUU5RTUtNDg0Ni05RTUxLTREODQ0MTI2NjNGQX0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJe0M4NEQ2Q0NGLUU5RTUtNDg0Ni05RTUxLTREODQ0MTI2NjNGQX0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnx4NjQNCisJCXtDODRENkNDRi1FOUU1LTQ4NDYtOUU1MS00RDg0NDEyNjYzRkF9LlJlbGVhc2UgTm8gWGFsYW58eDY0LkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJe0M4NEQ2Q0NGLUU5RTUtNDg0Ni05RTUxLTREODQ0MTI2NjNGQX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7Qzg0RDZDQ0YtRTlFNS00ODQ2LTlFNTEtNEQ4NDQxMjY2M0ZBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7Qzg0RDZDQ0YtRTlFNS00ODQ2LTlFNTEtNEQ4NDQxMjY2M0ZBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0M4NEQ2Q0NGLUU5RTUtNDg0Ni05RTUxLTREODQ0MTI2NjNGQX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7MkJGNERBQTgtQTA1Ny00MDk4LUFFQTktQjU4Nzg4MkEwOEJEfS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMg0KKwkJezJCRjREQUE4LUEwNTctNDA5OC1BRUE5LUI1ODc4ODJBMDhCRH0uRGVidWcgTm8gWGFsYW58V2luMzIuQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7MkJGNERBQTgtQTA1Ny00MDk4LUFFQTktQjU4Nzg4MkEwOEJEfS5EZWJ1ZyBObyBYYWxhbnx4NjQuQWN0aXZlQ2ZnID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7MkJGNERBQTgtQTA1Ny00MDk4LUFFQTktQjU4Nzg4MkEwOEJEfS5EZWJ1ZyBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufHg2NA0KKwkJezJCRjREQUE4LUEwNTctNDA5OC1BRUE5LUI1ODc4ODJBMDhCRH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXsyQkY0REFBOC1BMDU3LTQwOTgtQUVBOS1CNTg3ODgyQTA4QkR9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezJCRjREQUE4LUEwNTctNDA5OC1BRUE5LUI1ODc4ODJBMDhCRH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezJCRjREQUE4LUEwNTctNDA5OC1BRUE5LUI1ODc4ODJBMDhCRH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXsyQkY0REFBOC1BMDU3LTQwOTgtQUVBOS1CNTg3ODgyQTA4QkR9LlJlbGVhc2UgTm8gWGFsYW58V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJezJCRjREQUE4LUEwNTctNDA5OC1BRUE5LUI1ODc4ODJBMDhCRH0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJezJCRjREQUE4LUEwNTctNDA5OC1BRUE5LUI1ODc4ODJBMDhCRH0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnx4NjQNCisJCXsyQkY0REFBOC1BMDU3LTQwOTgtQUVBOS1CNTg3ODgyQTA4QkR9LlJlbGVhc2UgTm8gWGFsYW58eDY0LkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJezJCRjREQUE4LUEwNTctNDA5OC1BRUE5LUI1ODc4ODJBMDhCRH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MkJGNERBQTgtQTA1Ny00MDk4LUFFQTktQjU4Nzg4MkEwOEJEfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MkJGNERBQTgtQTA1Ny00MDk4LUFFQTktQjU4Nzg4MkEwOEJEfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezJCRjREQUE4LUEwNTctNDA5OC1BRUE5LUI1ODc4ODJBMDhCRH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7NUMxRTU5MEEtRjkxMS00Mjk1LTg3NDctMEMwOTY4MkRBMDA5fS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMg0KKwkJezVDMUU1OTBBLUY5MTEtNDI5NS04NzQ3LTBDMDk2ODJEQTAwOX0uRGVidWcgTm8gWGFsYW58V2luMzIuQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7NUMxRTU5MEEtRjkxMS00Mjk1LTg3NDctMEMwOTY4MkRBMDA5fS5EZWJ1ZyBObyBYYWxhbnx4NjQuQWN0aXZlQ2ZnID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7NUMxRTU5MEEtRjkxMS00Mjk1LTg3NDctMEMwOTY4MkRBMDA5fS5EZWJ1ZyBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufHg2NA0KKwkJezVDMUU1OTBBLUY5MTEtNDI5NS04NzQ3LTBDMDk2ODJEQTAwOX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXs1QzFFNTkwQS1GOTExLTQyOTUtODc0Ny0wQzA5NjgyREEwMDl9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezVDMUU1OTBBLUY5MTEtNDI5NS04NzQ3LTBDMDk2ODJEQTAwOX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezVDMUU1OTBBLUY5MTEtNDI5NS04NzQ3LTBDMDk2ODJEQTAwOX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXs1QzFFNTkwQS1GOTExLTQyOTUtODc0Ny0wQzA5NjgyREEwMDl9LlJlbGVhc2UgTm8gWGFsYW58V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJezVDMUU1OTBBLUY5MTEtNDI5NS04NzQ3LTBDMDk2ODJEQTAwOX0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJezVDMUU1OTBBLUY5MTEtNDI5NS04NzQ3LTBDMDk2ODJEQTAwOX0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnx4NjQNCisJCXs1QzFFNTkwQS1GOTExLTQyOTUtODc0Ny0wQzA5NjgyREEwMDl9LlJlbGVhc2UgTm8gWGFsYW58eDY0LkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJezVDMUU1OTBBLUY5MTEtNDI5NS04NzQ3LTBDMDk2ODJEQTAwOX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7NUMxRTU5MEEtRjkxMS00Mjk1LTg3NDctMEMwOTY4MkRBMDA5fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7NUMxRTU5MEEtRjkxMS00Mjk1LTg3NDctMEMwOTY4MkRBMDA5fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezVDMUU1OTBBLUY5MTEtNDI5NS04NzQ3LTBDMDk2ODJEQTAwOX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCUVuZEdsb2JhbFNlY3Rpb24NCisJR2xvYmFsU2VjdGlvbihTb2x1dGlvblByb3BlcnRpZXMpID0gcHJlU29sdXRpb24NCisJCUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQ0KKwlFbmRHbG9iYWxTZWN0aW9uDQorRW5kR2xvYmFsDQpkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzEwLjAveHNlYy94c2VjX2xpYi94c2VjX2xpYi52Y3hwcm9qIGIvYy9Qcm9qZWN0cy9WQzEwLjAveHNlYy94c2VjX2xpYi94c2VjX2xpYi52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViNGJjOTkKLS0tIC9kZXYvbnVsbAorKysgYi9jL1Byb2plY3RzL1ZDMTAuMC94c2VjL3hzZWNfbGliL3hzZWNfbGliLnZjeHByb2oKQEAgLTAsMCArMSw4MTEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+DQorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+DQorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWcgTm8gWGFsYW58V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnIE5vIFhhbGFuPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1ZyBObyBYYWxhbnx4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnIE5vIFhhbGFuPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZSBObyBYYWxhbnxXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZSBObyBYYWxhbjwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZSBObyBYYWxhbnx4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2UgTm8gWGFsYW48L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPg0KKyAgICA8UHJvamVjdEd1aWQ+e0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX08L1Byb2plY3RHdWlkPg0KKyAgICA8Um9vdE5hbWVzcGFjZT54c2VjX2xpYjwvUm9vdE5hbWVzcGFjZT4NCisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPg0KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+DQorICA8UHJvcGVydHlHcm91cD4NCisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS9vYmovPC9JbnREaXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS9vYmovPC9JbnREaXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS9vYmovPC9JbnREaXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS9vYmovPC9JbnREaXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS9vYmovPC9JbnREaXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS9vYmovPC9JbnREaXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4NCisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4NCisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58V2luMzInIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIiAvPg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4NCisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0Pg0KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+DQorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4NCisgICAgPFByZUJ1aWxkRXZlbnQ+DQorICAgICAgPE1lc3NhZ2U+Q3JlYXRlIEhlYWRlciBmaWxlczwvTWVzc2FnZT4NCisgICAgICA8Q29tbWFuZD5ta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlDQorbWtkaXIgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjDQorZGVsIC9xIC9zIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlY1wqLioNCit4Y29weSAvSSAvcyAvZiAuLlwuLlwuLlwuLlxzcmNcKi5ocHAgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjDQorPC9Db21tYW5kPg0KKyAgICA8L1ByZUJ1aWxkRXZlbnQ+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfV0lORE9XUztfVVNSRExMO1hTRUNfTElCX0VYUE9SVFM7UFJPSl9DQU5PTjtQUk9KX0RTSUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4NCisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXJGaWxlPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXJGaWxlPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzNELmxpYjtYYWxhbi1DXzFELmxpYjtjcnlwdDMyLmxpYjtsaWJlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcil4c2VjXzFfNkQuZGxsPC9PdXRwdXRGaWxlPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoT3V0RGlyKXhzZWNfbGliLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4NCisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4NCisgICAgICA8UmFuZG9taXplZEJhc2VBZGRyZXNzPmZhbHNlPC9SYW5kb21pemVkQmFzZUFkZHJlc3M+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPEltcG9ydExpYnJhcnk+JChPdXREaXIpeHNlY18xRC5saWI8L0ltcG9ydExpYnJhcnk+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4NCisgICAgPFByZUJ1aWxkRXZlbnQ+DQorICAgICAgPE1lc3NhZ2U+Q3JlYXRlIEhlYWRlciBmaWxlczwvTWVzc2FnZT4NCisgICAgICA8Q29tbWFuZD5ta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlDQorbWtkaXIgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjDQorZGVsIC9xIC9zIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlY1wqLioNCit4Y29weSAvSSAvcyAvZiAuLlwuLlwuLlwuLlxzcmNcKi5ocHAgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjDQorPC9Db21tYW5kPg0KKyAgICA8L1ByZUJ1aWxkRXZlbnQ+DQorICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19XSU5ET1dTO19VU1JETEw7WFNFQ19MSUJfRVhQT1JUUztQUk9KX0NBTk9OO1BST0pfRFNJRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlckZpbGU+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlckZpbGU+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPnRydWU8L0Jyb3dzZUluZm9ybWF0aW9uPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+eGVyY2VzLWNfM0QubGliO1hhbGFuLUNfMUQubGliO2NyeXB0MzIubGliO2xpYmVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXhzZWNfMV82RC5kbGw8L091dHB1dEZpbGU+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChPdXREaXIpeHNlY19saWIucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPg0KKyAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPg0KKyAgICAgIDxSYW5kb21pemVkQmFzZUFkZHJlc3M+ZmFsc2U8L1JhbmRvbWl6ZWRCYXNlQWRkcmVzcz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8SW1wb3J0TGlicmFyeT4kKE91dERpcil4c2VjXzFELmxpYjwvSW1wb3J0TGlicmFyeT4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4NCisgICAgPFByZUJ1aWxkRXZlbnQ+DQorICAgICAgPE1lc3NhZ2U+Q3JlYXRlIEhlYWRlciBmaWxlczwvTWVzc2FnZT4NCisgICAgICA8Q29tbWFuZD5ta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlDQorbWtkaXIgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjDQorZGVsIC9xIC9zIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlY1wqLioNCit4Y29weSAvSSAvcyAvZiAuLlwuLlwuLlwuLlxzcmNcKi5ocHAgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjDQorPC9Db21tYW5kPg0KKyAgICA8L1ByZUJ1aWxkRXZlbnQ+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li4vLi4vLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7V0lOMzI7TkRFQlVHO19XSU5ET1dTO19VU1JETEw7WFNFQ19MSUJfRVhQT1JUUztQUk9KX0NBTk9OO1BST0pfRFNJRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyRmlsZT4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyRmlsZT4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzMubGliO2NyeXB0MzIubGliO2xpYmVheTMyLmxpYjtYYWxhbi1DXzEubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpeHNlY18xXzYuZGxsPC9PdXRwdXRGaWxlPg0KKyAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPg0KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPg0KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+DQorICAgICAgPFJhbmRvbWl6ZWRCYXNlQWRkcmVzcz5mYWxzZTwvUmFuZG9taXplZEJhc2VBZGRyZXNzPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoT3V0RGlyKXhzZWNfMS5saWI8L0ltcG9ydExpYnJhcnk+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPg0KKyAgICA8UHJlQnVpbGRFdmVudD4NCisgICAgICA8TWVzc2FnZT5DcmVhdGUgSGVhZGVyIGZpbGVzPC9NZXNzYWdlPg0KKyAgICAgIDxDb21tYW5kPm1rZGlyIC4uXC4uXC4uXC4uXGluY2x1ZGUNCitta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWMNCitkZWwgL3EgL3MgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjXCouKg0KK3hjb3B5IC9JIC9zIC9mIC4uXC4uXC4uXC4uXHNyY1wqLmhwcCAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWMNCis8L0NvbW1hbmQ+DQorICAgIDwvUHJlQnVpbGRFdmVudD4NCisgICAgPE1pZGw+DQorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+DQorICAgIDwvTWlkbD4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfV0lORE9XUztfVVNSRExMO1hTRUNfTElCX0VYUE9SVFM7UFJPSl9DQU5PTjtQUk9KX0RTSUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlckZpbGU+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlckZpbGU+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zLmxpYjtjcnlwdDMyLmxpYjtsaWJlYXkzMi5saWI7WGFsYW4tQ18xLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXhzZWNfMV82LmRsbDwvT3V0cHV0RmlsZT4NCisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4NCisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4NCisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPg0KKyAgICAgIDxSYW5kb21pemVkQmFzZUFkZHJlc3M+ZmFsc2U8L1JhbmRvbWl6ZWRCYXNlQWRkcmVzcz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8SW1wb3J0TGlicmFyeT4kKE91dERpcil4c2VjXzEubGliPC9JbXBvcnRMaWJyYXJ5Pg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIj4NCisgICAgPFByZUJ1aWxkRXZlbnQ+DQorICAgICAgPE1lc3NhZ2U+Q3JlYXRlIEhlYWRlciBmaWxlczwvTWVzc2FnZT4NCisgICAgICA8Q29tbWFuZD5ta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlDQorbWtkaXIgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjDQorZGVsIC9xIC9zIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlY1wqLioNCit4Y29weSAvSSAvcyAvZiAuLlwuLlwuLlwuLlxzcmNcKi5ocHAgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjDQorPC9Db21tYW5kPg0KKyAgICA8L1ByZUJ1aWxkRXZlbnQ+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfV0lORE9XUztfVVNSRExMO1hTRUNfTElCX0VYUE9SVFM7UFJPSl9DQU5PTjtQUk9KX0RTSUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4NCisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXJGaWxlPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXJGaWxlPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzNELmxpYjtjcnlwdDMyLmxpYjtsaWJlYXkzMkQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpeHNlY18xXzZELmRsbDwvT3V0cHV0RmlsZT4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4NCisgICAgICA8UmFuZG9taXplZEJhc2VBZGRyZXNzPmZhbHNlPC9SYW5kb21pemVkQmFzZUFkZHJlc3M+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPEltcG9ydExpYnJhcnk+JChPdXREaXIpeHNlY18xRC5saWI8L0ltcG9ydExpYnJhcnk+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIj4NCisgICAgPFByZUJ1aWxkRXZlbnQ+DQorICAgICAgPE1lc3NhZ2U+Q3JlYXRlIEhlYWRlciBmaWxlczwvTWVzc2FnZT4NCisgICAgICA8Q29tbWFuZD5ta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlDQorbWtkaXIgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjDQorZGVsIC9xIC9zIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlY1wqLioNCit4Y29weSAvSSAvcyAvZiAuLlwuLlwuLlwuLlxzcmNcKi5ocHAgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjDQorPC9Db21tYW5kPg0KKyAgICA8L1ByZUJ1aWxkRXZlbnQ+DQorICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfV0lORE9XUztfVVNSRExMO1hTRUNfTElCX0VYUE9SVFM7UFJPSl9DQU5PTjtQUk9KX0RTSUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4NCisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXJGaWxlPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXJGaWxlPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzNELmxpYjtjcnlwdDMyLmxpYjtsaWJlYXkzMkQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpeHNlY18xXzZELmRsbDwvT3V0cHV0RmlsZT4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4NCisgICAgICA8UmFuZG9taXplZEJhc2VBZGRyZXNzPmZhbHNlPC9SYW5kb21pemVkQmFzZUFkZHJlc3M+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPEltcG9ydExpYnJhcnk+JChPdXREaXIpeHNlY18xRC5saWI8L0ltcG9ydExpYnJhcnk+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyI+DQorICAgIDxQcmVCdWlsZEV2ZW50Pg0KKyAgICAgIDxNZXNzYWdlPkNyZWF0ZSBIZWFkZXIgZmlsZXM8L01lc3NhZ2U+DQorICAgICAgPENvbW1hbmQ+bWtkaXIgLi5cLi5cLi5cLi5caW5jbHVkZQ0KK21rZGlyIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlYw0KK2RlbCAvcSAvcyAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWNcKi4qDQoreGNvcHkgL0kgL3MgL2YgLi5cLi5cLi5cLi5cc3JjXCouaHBwIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlYw0KKzwvQ29tbWFuZD4NCisgICAgPC9QcmVCdWlsZEV2ZW50Pg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO1dJTjMyO05ERUJVRztfV0lORE9XUztfVVNSRExMO1hTRUNfTElCX0VYUE9SVFM7UFJPSl9DQU5PTjtQUk9KX0RTSUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlckZpbGU+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlckZpbGU+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zLmxpYjtjcnlwdDMyLmxpYjtsaWJlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcil4c2VjXzFfNi5kbGw8L091dHB1dEZpbGU+DQorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8UmFuZG9taXplZEJhc2VBZGRyZXNzPmZhbHNlPC9SYW5kb21pemVkQmFzZUFkZHJlc3M+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPEltcG9ydExpYnJhcnk+JChPdXREaXIpeHNlY18xLmxpYjwvSW1wb3J0TGlicmFyeT4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyI+DQorICAgIDxQcmVCdWlsZEV2ZW50Pg0KKyAgICAgIDxNZXNzYWdlPkNyZWF0ZSBIZWFkZXIgZmlsZXM8L01lc3NhZ2U+DQorICAgICAgPENvbW1hbmQ+bWtkaXIgLi5cLi5cLi5cLi5caW5jbHVkZQ0KK21rZGlyIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlYw0KK2RlbCAvcSAvcyAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWNcKi4qDQoreGNvcHkgL0kgL3MgL2YgLi5cLi5cLi5cLi5cc3JjXCouaHBwIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlYw0KKzwvQ29tbWFuZD4NCisgICAgPC9QcmVCdWlsZEV2ZW50Pg0KKyAgICA8TWlkbD4NCisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4NCisgICAgPC9NaWRsPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO1dJTjMyO05ERUJVRztfV0lORE9XUztfVVNSRExMO1hTRUNfTElCX0VYUE9SVFM7UFJPSl9DQU5PTjtQUk9KX0RTSUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlckZpbGU+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlckZpbGU+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zLmxpYjtjcnlwdDMyLmxpYjtsaWJlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcil4c2VjXzFfNi5kbGw8L091dHB1dEZpbGU+DQorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8UmFuZG9taXplZEJhc2VBZGRyZXNzPmZhbHNlPC9SYW5kb21pemVkQmFzZUFkZHJlc3M+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPEltcG9ydExpYnJhcnk+JChPdXREaXIpeHNlY18xLmxpYjwvSW1wb3J0TGlicmFyeT4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xjYW5vblxYU0VDQzE0bjIwMDEwMzE1LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcY2Fub25cWFNFQ0Nhbm9uLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcY2Fub25cWFNFQ1hNTE5TU3RhY2suY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdBbGdvcml0aG1IYW5kbGVyRGVmYXVsdC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0NvbnN0YW50cy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9ERVJFbmNvZGVkLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHS2V5SW5mb0V4dC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9MaXN0LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHS2V5SW5mb01nbXREYXRhLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHS2V5SW5mb05hbWUuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvUEdQRGF0YS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9TUEtJRGF0YS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9WYWx1ZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9YNTA5LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHT2JqZWN0LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHUmVmZXJlbmNlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHUmVmZXJlbmNlTGlzdC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1NpZ25hdHVyZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1NpZ25lZEluZm8uY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm0uY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1CYXNlNjQuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1DMTRuLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHVHJhbnNmb3JtRW52ZWxvcGUuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1MaXN0LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHVHJhbnNmb3JtWFBhdGguY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1YUGF0aEZpbHRlci5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1RyYW5zZm9ybVhTTC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1hQYXRoRmlsdGVyRXhwci5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1hQYXRoSGVyZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9LZXlFQy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDQ3J5cHRvQmFzZTY0LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9FeGNlcHRpb24uY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b1Byb3ZpZGVyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9VdGlscy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDQ3J5cHRvWDUwOS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDS2V5SW5mb1Jlc29sdmVyRGVmYXVsdC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9CYXNlNjQuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvSGFzaC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9IYXNoSE1BQy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9LZXlEU0EuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvS2V5SE1BQy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9LZXlSU0EuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvUHJvdmlkZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b1g1MDkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvSGFzaC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xXaW5DQVBJXFdpbkNBUElDcnlwdG9IYXNoSE1BQy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xXaW5DQVBJXFdpbkNBUElDcnlwdG9LZXlEU0EuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvS2V5SE1BQy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xXaW5DQVBJXFdpbkNBUElDcnlwdG9LZXlSU0EuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvUHJvdmlkZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvU3ltbWV0cmljS2V5LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFdpbkNBUElcV2luQ0FQSUNyeXB0b1g1MDkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNDcnlwdFxYU0NyeXB0Q3J5cHRvQmFzZTY0LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE5TU1xOU1NDcnlwdG9IYXNoLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE5TU1xOU1NDcnlwdG9IYXNoSE1BQy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xOU1NcTlNTQ3J5cHRvS2V5RFNBLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE5TU1xOU1NDcnlwdG9LZXlITUFDLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE5TU1xOU1NDcnlwdG9LZXlSU0EuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcTlNTXE5TU0NyeXB0b1Byb3ZpZGVyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE5TU1xOU1NDcnlwdG9TeW1tZXRyaWNLZXkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcTlNTXE5TU0NyeXB0b1g1MDkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1xYU0VDQmluVFhGTUlucHV0U3RyZWFtLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ0RPTVV0aWxzLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ05hbWVTcGFjZUV4cGFuZGVyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ1BsYXRmb3JtVXRpbHMuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1xYU0VDU2FmZUJ1ZmZlci5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNTYWZlQnVmZmVyRm9ybWF0dGVyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ1NPQVBSZXF1ZXN0b3JTaW1wbGUuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1xYU0VDVFhGTUlucHV0U291cmNlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ1hQYXRoTm9kZUxpc3QuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1x3aW51dGlsc1xYU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcd2ludXRpbHNcWFNFQ1NPQVBSZXF1ZXN0b3JTaW1wbGVXaW4zMi5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXHdpbnV0aWxzXFhTRUNVUklSZXNvbHZlckdlbmVyaWNXaW4zMi5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGZyYW1ld29ya1xYU0VDQWxnb3JpdGhtTWFwcGVyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNFbnYuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ0Vycm9yLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNFeGNlcHRpb24uY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ1Byb3ZpZGVyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNVUklSZXNvbHZlclhlcmNlcy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNQmFzZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNQmFzZTY0LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1DMTRuLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1DaGFpbi5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNQ2lwaGVyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1Db25jYXRDaGFpbnMuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTURvY09iamVjdC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNRW52ZWxvcGUuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTU1ENS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNT3V0cHV0RmlsZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNUGFyc2VyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1TQi5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNU0hBMS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNVVJMLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1YUGF0aC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNWFBhdGhGaWx0ZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTVhTTC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcaW1wbFxYRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0NpcGhlckRhdGFJbXBsLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNDaXBoZXJJbXBsLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNDaXBoZXJSZWZlcmVuY2VJbXBsLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNDaXBoZXJWYWx1ZUltcGwuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0VuY3J5cHRlZERhdGFJbXBsLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNFbmNyeXB0ZWRLZXlJbXBsLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNFbmNyeXB0ZWRUeXBlSW1wbC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcaW1wbFxYRU5DRW5jcnlwdGlvbk1ldGhvZEltcGwuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNDb25zdGFudHMuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU0F1dGhlbnRpY2F0aW9uSW1wbC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TQ29tcG91bmRSZXF1ZXN0SW1wbC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TQ29tcG91bmRSZXN1bHRJbXBsLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TS2V5QmluZGluZ0ltcGwuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU0xvY2F0ZVJlcXVlc3RJbXBsLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNMb2NhdGVSZXN1bHRJbXBsLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TTWVzc2FnZUZhY3RvcnlJbXBsLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNQZW5kaW5nUmVxdWVzdEltcGwuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1Byb3RvdHlwZUtleUJpbmRpbmdJbXBsLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNRdWVyeUtleUJpbmRpbmdJbXBsLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZWNvdmVyS2V5QmluZGluZ0ltcGwuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlY292ZXJSZXF1ZXN0SW1wbC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVjb3ZlclJlc3VsdEltcGwuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlZ2lzdGVyUmVxdWVzdEltcGwuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlZ2lzdGVyUmVzdWx0SW1wbC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVpc3N1ZUtleUJpbmRpbmdJbXBsLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZWlzc3VlUmVxdWVzdEltcGwuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlaXNzdWVSZXN1bHRJbXBsLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVzcG9uZFdpdGhJbXBsLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXNwb25zZU1lY2hhbmlzbUltcGwuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1Jlc3VsdEltcGwuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1Jlc3VsdFR5cGVJbXBsLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXZva2VLZXlCaW5kaW5nSW1wbC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmV2b2tlUmVxdWVzdEltcGwuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1Jldm9rZVJlc3VsdEltcGwuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JTQUtleVBhaXJJbXBsLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNTdGF0dXNJbXBsLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNTdGF0dXNSZXF1ZXN0SW1wbC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TU3RhdHVzUmVzdWx0SW1wbC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TVW52ZXJpZmllZEtleUJpbmRpbmdJbXBsLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNVc2VLZXlXaXRoSW1wbC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TVmFsaWRhdGVSZXF1ZXN0SW1wbC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TVmFsaWRhdGVSZXN1bHRJbXBsLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNWYWxpZGl0eUludGVydmFsSW1wbC5jcHAiIC8+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGNhbm9uXFhTRUNDMTRuMjAwMTAzMTUuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xjYW5vblxYU0VDQ2Fub24uaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xjYW5vblxYU0VDWE1MTlNTdGFjay5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0LmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHQ29uc3RhbnRzLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHS2V5SW5mby5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9ERVJFbmNvZGVkLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHS2V5SW5mb0V4dC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9MaXN0LmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHS2V5SW5mb01nbXREYXRhLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHS2V5SW5mb05hbWUuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvUEdQRGF0YS5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9TUEtJRGF0YS5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9WYWx1ZS5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9YNTA5LmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHT2JqZWN0LmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHUmVmZXJlbmNlLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHUmVmZXJlbmNlTGlzdC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1NpZ25hdHVyZS5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1NpZ25lZEluZm8uaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm0uaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1CYXNlNjQuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1DMTRuLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHVHJhbnNmb3JtRW52ZWxvcGUuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1MaXN0LmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHVHJhbnNmb3JtWFBhdGguaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1YUGF0aEZpbHRlci5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1RyYW5zZm9ybVhTTC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1hQYXRoRmlsdGVyRXhwci5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1hQYXRoSGVyZS5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9LZXlFQy5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDQ3J5cHRvS2V5RUMuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtccmVzb3VyY2UuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9CYXNlNjQuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b0V4Y2VwdGlvbi5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDQ3J5cHRvSGFzaC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDQ3J5cHRvS2V5LmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9LZXlEU0EuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b0tleUhNQUMuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b0tleVJTQS5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDQ3J5cHRvUHJvdmlkZXIuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b1N5bW1ldHJpY0tleS5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDQ3J5cHRvVXRpbHMuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b1g1MDkuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0tleUluZm9SZXNvbHZlci5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDS2V5SW5mb1Jlc29sdmVyRGVmYXVsdC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9CYXNlNjQuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvSGFzaC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9IYXNoSE1BQy5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9LZXlEU0EuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvS2V5SE1BQy5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9LZXlSU0EuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvUHJvdmlkZXIuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5LmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b1g1MDkuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvSGFzaC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xXaW5DQVBJXFdpbkNBUElDcnlwdG9IYXNoSE1BQy5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xXaW5DQVBJXFdpbkNBUElDcnlwdG9LZXlEU0EuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvS2V5SE1BQy5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xXaW5DQVBJXFdpbkNBUElDcnlwdG9LZXlSU0EuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvUHJvdmlkZXIuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvU3ltbWV0cmljS2V5LmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFdpbkNBUElcV2luQ0FQSUNyeXB0b1g1MDkuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNDcnlwdFxYU0NyeXB0Q3J5cHRvQmFzZTY0LmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE5TU1xOU1NDcnlwdG9IYXNoLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE5TU1xOU1NDcnlwdG9IYXNoSE1BQy5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGVuY1xOU1NcTlNTQ3J5cHRvS2V5RFNBLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE5TU1xOU1NDcnlwdG9LZXlITUFDLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE5TU1xOU1NDcnlwdG9LZXlSU0EuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcTlNTXE5TU0NyeXB0b1Byb3ZpZGVyLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE5TU1xOU1NDcnlwdG9TeW1tZXRyaWNLZXkuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcTlNTXE5TU0NyeXB0b1g1MDkuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1xYU0VDQXV0b1B0ci5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNCaW5UWEZNSW5wdXRTdHJlYW0uaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1xYU0VDRE9NVXRpbHMuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1xYU0VDTmFtZVNwYWNlRXhwYW5kZXIuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1xYU0VDUGxhdGZvcm1VdGlscy5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNTYWZlQnVmZmVyLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ1NhZmVCdWZmZXJGb3JtYXR0ZXIuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1xYU0VDU09BUFJlcXVlc3Rvci5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNTT0FQUmVxdWVzdG9yU2ltcGxlLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ1RYRk1JbnB1dFNvdXJjZS5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNYUGF0aE5vZGVMaXN0LmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcd2ludXRpbHNcWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbS5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXHdpbnV0aWxzXFhTRUNVUklSZXNvbHZlckdlbmVyaWNXaW4zMi5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGZyYW1ld29ya1xYU0VDQWxnb3JpdGhtSGFuZGxlci5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGZyYW1ld29ya1xYU0VDQWxnb3JpdGhtTWFwcGVyLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNEZWZzLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNFbnYuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ0Vycm9yLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNFeGNlcHRpb24uaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ1Byb3ZpZGVyLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNVUklSZXNvbHZlci5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXGZyYW1ld29ya1xYU0VDVVJJUmVzb2x2ZXJYZXJjZXMuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ1czMkNvbmZpZy5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNQmFzZS5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNQmFzZTY0LmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1DMTRuLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1DaGFpbi5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNQ2lwaGVyLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1Db25jYXRDaGFpbnMuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTURvY09iamVjdC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNRW52ZWxvcGUuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTU1ENS5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNT3V0cHV0RmlsZS5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNUGFyc2VyLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1TQi5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNU0hBMS5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNVVJMLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1YUGF0aC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNWFBhdGhGaWx0ZXIuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTVhTTC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcWEVOQ0NpcGhlci5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcWEVOQ0NpcGhlckRhdGEuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXFhFTkNDaXBoZXJSZWZlcmVuY2UuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXFhFTkNDaXBoZXJWYWx1ZS5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcWEVOQ0VuY3J5cHRlZERhdGEuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXFhFTkNFbmNyeXB0ZWRLZXkuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXFhFTkNFbmNyeXB0ZWRUeXBlLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xYRU5DRW5jcnlwdGlvbk1ldGhvZC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcaW1wbFxYRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0NpcGhlckRhdGFJbXBsLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNDaXBoZXJJbXBsLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNDaXBoZXJSZWZlcmVuY2VJbXBsLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNDaXBoZXJWYWx1ZUltcGwuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0VuY3J5cHRlZERhdGFJbXBsLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNFbmNyeXB0ZWRLZXlJbXBsLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNFbmNyeXB0ZWRUeXBlSW1wbC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcaW1wbFxYRU5DRW5jcnlwdGlvbk1ldGhvZEltcGwuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNBdXRoZW50aWNhdGlvbi5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU0NvbXBvdW5kUmVxdWVzdC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU0NvbXBvdW5kUmVzdWx0LmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TQ29uc3RhbnRzLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TS2V5QmluZGluZy5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGUuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNMb2NhdGVSZXF1ZXN0LmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TTG9jYXRlUmVzdWx0LmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TTWVzc2FnZUFic3RyYWN0VHlwZS5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU01lc3NhZ2VGYWN0b3J5LmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbi5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1BlbmRpbmdSZXF1ZXN0LmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUHJvdG90eXBlS2V5QmluZGluZy5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1F1ZXJ5S2V5QmluZGluZy5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1JlY292ZXJLZXlCaW5kaW5nLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUmVjb3ZlclJlcXVlc3QuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZWNvdmVyUmVzdWx0LmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUmVnaXN0ZXJSZXF1ZXN0LmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUmVnaXN0ZXJSZXN1bHQuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZWlzc3VlS2V5QmluZGluZy5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1JlaXNzdWVSZXF1ZXN0LmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUmVpc3N1ZVJlc3VsdC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGUuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZXNwb25kV2l0aC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1Jlc3BvbnNlTWVjaGFuaXNtLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUmVzdWx0LmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUmVzdWx0VHlwZS5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1Jldm9rZUtleUJpbmRpbmcuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZXZva2VSZXF1ZXN0LmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUmV2b2tlUmVzdWx0LmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUlNBS2V5UGFpci5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1N0YXR1cy5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1N0YXR1c1JlcXVlc3QuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNTdGF0dXNSZXN1bHQuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNVbnZlcmlmaWVkS2V5QmluZGluZy5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1VzZUtleVdpdGguaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNWYWxpZGF0ZVJlcXVlc3QuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNWYWxpZGF0ZVJlc3VsdC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1ZhbGlkaXR5SW50ZXJ2YWwuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU0F1dGhlbnRpY2F0aW9uSW1wbC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TQ29tcG91bmRSZXF1ZXN0SW1wbC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TQ29tcG91bmRSZXN1bHRJbXBsLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TS2V5QmluZGluZ0ltcGwuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU0xvY2F0ZVJlcXVlc3RJbXBsLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNMb2NhdGVSZXN1bHRJbXBsLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TTWVzc2FnZUZhY3RvcnlJbXBsLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uSW1wbC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUGVuZGluZ1JlcXVlc3RJbXBsLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNQcm90b3R5cGVLZXlCaW5kaW5nSW1wbC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUXVlcnlLZXlCaW5kaW5nSW1wbC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVjb3ZlcktleUJpbmRpbmdJbXBsLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZWNvdmVyUmVxdWVzdEltcGwuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlY292ZXJSZXN1bHRJbXBsLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZWdpc3RlclJlcXVlc3RJbXBsLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZWdpc3RlclJlc3VsdEltcGwuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlaXNzdWVLZXlCaW5kaW5nSW1wbC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVpc3N1ZVJlcXVlc3RJbXBsLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZWlzc3VlUmVzdWx0SW1wbC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVxdWVzdEFic3RyYWN0VHlwZUltcGwuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1Jlc3BvbmRXaXRoSW1wbC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVzcG9uc2VNZWNoYW5pc21JbXBsLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXN1bHRJbXBsLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXN1bHRUeXBlSW1wbC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmV2b2tlS2V5QmluZGluZ0ltcGwuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1Jldm9rZVJlcXVlc3RJbXBsLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXZva2VSZXN1bHRJbXBsLmhwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSU0FLZXlQYWlySW1wbC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TU3RhdHVzSW1wbC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TU3RhdHVzUmVxdWVzdEltcGwuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1N0YXR1c1Jlc3VsdEltcGwuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nSW1wbC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TVXNlS2V5V2l0aEltcGwuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1ZhbGlkYXRlUmVxdWVzdEltcGwuaHBwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1ZhbGlkYXRlUmVzdWx0SW1wbC5ocHAiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TVmFsaWRpdHlJbnRlcnZhbEltcGwuaHBwIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcdmVyc2lvbi5yYyIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+DQorICA8L0ltcG9ydEdyb3VwPg0KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jL1Byb2plY3RzL1ZDMTAuMC94c2VjL3h0ZXN0L3h0ZXN0LnZjeHByb2ogYi9jL1Byb2plY3RzL1ZDMTAuMC94c2VjL3h0ZXN0L3h0ZXN0LnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYxZWE5MAotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkMxMC4wL3hzZWMveHRlc3QveHRlc3QudmN4cHJvagpAQCAtMCwwICsxLDMxMCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1ZyBObyBYYWxhbnxXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWcgTm8gWGFsYW48L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnIE5vIFhhbGFufHg2NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWcgTm8gWGFsYW48L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlIE5vIFhhbGFufFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlIE5vIFhhbGFuPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlIE5vIFhhbGFufHg2NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZSBObyBYYWxhbjwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+DQorICAgIDxQcm9qZWN0R3VpZD57NUMxRTU5MEEtRjkxMS00Mjk1LTg3NDctMEMwOTY4MkRBMDA5fTwvUHJvamVjdEd1aWQ+DQorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4NCisgICAgPFJvb3ROYW1lc3BhY2U+eHRlc3Q8L1Jvb3ROYW1lc3BhY2U+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPFVzZURlYnVnTGlicmFyaWVzPnRydWU8L1VzZURlYnVnTGlicmFyaWVzPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPFVzZURlYnVnTGlicmFyaWVzPnRydWU8L1VzZURlYnVnTGlicmFyaWVzPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+dHJ1ZTwvVXNlRGVidWdMaWJyYXJpZXM+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+DQorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPg0KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+DQorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4NCisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1ZyBObyBYYWxhbnx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2UgTm8gWGFsYW58eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPg0KKyAgICA8TGlua0luY3JlbWVudGFsPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIj4NCisgICAgPExpbmtJbmNyZW1lbnRhbD50cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS9vYmovPC9JbnREaXI+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPg0KKyAgICA8TGlua0luY3JlbWVudGFsPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58eDY0JyI+DQorICAgIDxMaW5rSW5jcmVtZW50YWw+dHJ1ZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciPg0KKyAgICA8TGlua0luY3JlbWVudGFsPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pLzwvT3V0RGlyPg0KKyAgICA8SW50RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS9vYmovPC9JbnREaXI+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+DQorICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91dERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvPC9PdXREaXI+DQorICAgIDxJbnREaXI+Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybSkvVkMxMC8kKENvbmZpZ3VyYXRpb24pL29iai88L0ludERpcj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnx4NjQnIj4NCisgICAgPExpbmtJbmNyZW1lbnRhbD5mYWxzZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyPi4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm0pL1ZDMTAvJChDb25maWd1cmF0aW9uKS88L091dERpcj4NCisgICAgPEludERpcj4uLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtKS9WQzEwLyQoQ29uZmlndXJhdGlvbikvb2JqLzwvSW50RGlyPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+eGVyY2VzLWNfM0QubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWcgTm8gWGFsYW58V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8QnJvd3NlSW5mb3JtYXRpb24+dHJ1ZTwvQnJvd3NlSW5mb3JtYXRpb24+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li4vLi4vLi4vLi4vaW5jbHVkZTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzNELmxpYjtsaWJlYXkzMkQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPnRydWU8L0Jyb3dzZUluZm9ybWF0aW9uPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zRC5saWI7bGliZWF5MzJELmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICA8L0xpbms+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnIE5vIFhhbGFufHg2NCciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+eGVyY2VzLWNfM0QubGliO2xpYmVheTMyRC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPg0KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uLy4uLy4uLy4uL2luY2x1ZGU8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPg0KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnhlcmNlcy1jXzMubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgIDwvTGluaz4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZSBObyBYYWxhbnxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4NCisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zLmxpYjtsaWJlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4NCisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zLmxpYjtsaWJlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlIE5vIFhhbGFufHg2NCciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4NCisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLi8uLi8uLi8uLi9pbmNsdWRlPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz54ZXJjZXMtY18zLmxpYjtsaWJlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgPC9MaW5rPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlwuLlxzcmNcdG9vbHNceHRlc3RceHRlc3QuY3BwIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIuLlx4c2VjX2xpYlx4c2VjX2xpYi52Y3hwcm9qIj4NCisgICAgICA8UHJvamVjdD57ZDViNWEwMDctZTg3My00ZDEyLWI0YWYtNjA4MTFhZmQ5ZWYxfTwvUHJvamVjdD4NCisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPg0KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkM2LjAvU2FtcGxlcy9TYW1wbGVzLmRzdyBiL2MvUHJvamVjdHMvVkM2LjAvU2FtcGxlcy9TYW1wbGVzLmRzdwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGI5NDFkCi0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzYuMC9TYW1wbGVzL1NhbXBsZXMuZHN3CkBAIC0wLDAgKzEsNjUgQEAKK01pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFdvcmtzcGFjZSBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwCisjIFdBUk5JTkc6IERPIE5PVCBFRElUIE9SIERFTEVURSBUSElTIFdPUktTUEFDRSBGSUxFIQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK1Byb2plY3Q6ICJzaW1wbGVEZWNyeXB0Ij0iLlxzaW1wbGVEZWNyeXB0XHNpbXBsZURlY3J5cHQuZHNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+CisKK1BhY2thZ2U9PDU+Cit7e3sKK319fQorCitQYWNrYWdlPTw0Pgore3t7Cit9fX0KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitQcm9qZWN0OiAic2ltcGxlRW5jcnlwdCI9Ii5cc2ltcGxlRW5jcnlwdFxzaW1wbGVFbmNyeXB0LmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0PgorCitQYWNrYWdlPTw1Pgore3t7Cit9fX0KKworUGFja2FnZT08ND4KK3t7eworfX19CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworUHJvamVjdDogInNpbXBsZUhNQUMiPSIuXHNpbXBsZUhNQUNcc2ltcGxlSE1BQy5kc3AiIC0gUGFja2FnZSBPd25lcj08ND4KKworUGFja2FnZT08NT4KK3t7eworfX19CisKK1BhY2thZ2U9PDQ+Cit7e3sKK319fQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK1Byb2plY3Q6ICJzaW1wbGVWYWxpZGF0ZSI9Ii5cc2ltcGxlVmFsaWRhdGVcc2ltcGxlVmFsaWRhdGUuZHNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+CisKK1BhY2thZ2U9PDU+Cit7e3sKK319fQorCitQYWNrYWdlPTw0Pgore3t7Cit9fX0KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitHbG9iYWw6CisKK1BhY2thZ2U9PDU+Cit7e3sKK319fQorCitQYWNrYWdlPTwzPgore3t7Cit9fX0KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCmRpZmYgLS1naXQgYS9jL1Byb2plY3RzL1ZDNi4wL1NhbXBsZXMvc2ltcGxlRGVjcnlwdC9zaW1wbGVEZWNyeXB0LmRzcCBiL2MvUHJvamVjdHMvVkM2LjAvU2FtcGxlcy9zaW1wbGVEZWNyeXB0L3NpbXBsZURlY3J5cHQuZHNwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllMGE1YjcKLS0tIC9kZXYvbnVsbAorKysgYi9jL1Byb2plY3RzL1ZDNi4wL1NhbXBsZXMvc2ltcGxlRGVjcnlwdC9zaW1wbGVEZWNyeXB0LmRzcApAQCAtMCwwICsxLDE2NCBAQAorIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJzaW1wbGVEZWNyeXB0IiAtIFBhY2thZ2UgT3duZXI9PDQ+CisjIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwCisjICoqIERPIE5PVCBFRElUICoqCisKKyMgVEFSR1RZUEUgIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iIDB4MDEwMworCitDRkc9c2ltcGxlRGVjcnlwdCAtIFdpbjMyIERlYnVnIE5vIFhhbGFuCishTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsCishTUVTU0FHRSB1c2UgdGhlIEV4cG9ydCBNYWtlZmlsZSBjb21tYW5kIGFuZCBydW4KKyFNRVNTQUdFIAorIU1FU1NBR0UgTk1BS0UgL2YgInNpbXBsZURlY3J5cHQubWFrIi4KKyFNRVNTQUdFIAorIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UKKyFNRVNTQUdFIGJ5IGRlZmluaW5nIHRoZSBtYWNybyBDRkcgb24gdGhlIGNvbW1hbmQgbGluZS4gRm9yIGV4YW1wbGU6CishTUVTU0FHRSAKKyFNRVNTQUdFIE5NQUtFIC9mICJzaW1wbGVEZWNyeXB0Lm1hayIgQ0ZHPSJzaW1wbGVEZWNyeXB0IC0gV2luMzIgRGVidWcgTm8gWGFsYW4iCishTUVTU0FHRSAKKyFNRVNTQUdFIFBvc3NpYmxlIGNob2ljZXMgZm9yIGNvbmZpZ3VyYXRpb24gYXJlOgorIU1FU1NBR0UgCishTUVTU0FHRSAic2ltcGxlRGVjcnlwdCAtIFdpbjMyIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAic2ltcGxlRGVjcnlwdCAtIFdpbjMyIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgInNpbXBsZURlY3J5cHQgLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbiIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJzaW1wbGVEZWNyeXB0IC0gV2luMzIgUmVsZWFzZSBObyBYYWxhbiIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFIAorCisjIEJlZ2luIFByb2plY3QKKyMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwCisjIFBST1AgU2NjX1Byb2pOYW1lICIiCisjIFBST1AgU2NjX0xvY2FsUGF0aCAiIgorQ1BQPWNsLmV4ZQorUlNDPXJjLmV4ZQorCishSUYgICIkKENGRykiID09ICJzaW1wbGVEZWNyeXB0IC0gV2luMzIgUmVsZWFzZSIKKworIyBQUk9QIEJBU0UgVXNlX01GQyAwCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDAKKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UiCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlIgorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgorIyBQUk9QIFVzZV9NRkMgMAorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAorIyBQUk9QIE91dHB1dF9EaXIgIi4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjNlxSZWxlYXNlIgorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjNlxSZWxlYXNlXG9iaiIKKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgVGFyZ2V0X0RpciAiIgorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dYIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9HUiAvR1ggL08yIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jCisjIEFERCBCQVNFIFJTQyAvbCAweGMwOSAvZCAiTkRFQlVHIgorIyBBREQgUlNDIC9sIDB4YzA5IC9kICJOREVCVUciCitCU0MzMj1ic2NtYWtlLmV4ZQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCisjIEFERCBCU0MzMiAvbm9sb2dvCitMSU5LMzI9bGluay5leGUKKyMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYKKyMgQUREIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiB4ZXJjZXMtY18yLmxpYiBYYWxhbi1DXzEubGliIC4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL3ZjNi9SZWxlYXNlL3hzZWNfMS5saWIgbGliZWF5MzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYKKworIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInNpbXBsZURlY3J5cHQgLSBXaW4zMiBEZWJ1ZyIKKworIyBQUk9QIEJBU0UgVXNlX01GQyAwCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIkRlYnVnIgorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCisjIFBST1AgVXNlX01GQyAyCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxCisjIFBST1AgT3V0cHV0X0RpciAiLi5cLi5cLi5cLi5cQnVpbGRcV2luMzJcdmM2XERlYnVnIgorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjNlxEZWJ1Z1xvYmoiCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIFRhcmdldF9EaXIgIiIKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HbSAvR1ggL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9HWiAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9HUiAvR1ggL1pJIC9PZCAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0QgIl9BRlhETEwiIC9ZWCAvRkQgL0daIC9jCisjIEFERCBCQVNFIFJTQyAvbCAweGMwOSAvZCAiX0RFQlVHIgorIyBBREQgUlNDIC9sIDB4YzA5IC9kICJfREVCVUciIC9kICJfQUZYRExMIgorQlNDMzI9YnNjbWFrZS5leGUKKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbworIyBBREQgQlNDMzIgL25vbG9nbworTElOSzMyPWxpbmsuZXhlCisjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0CisjIEFERCBMSU5LMzIgbGliZWF5MzIubGliIHhlcmNlcy1jXzJELmxpYiBYYWxhbi1DXzFELmxpYiAuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi92YzYvRGVidWcveHNlY18xRC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorCishRUxTRUlGICAiJChDRkcpIiA9PSAic2ltcGxlRGVjcnlwdCAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIgorCisjIFBST1AgQkFTRSBVc2VfTUZDIDIKKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiRGVidWcgTm8gWGFsYW4iCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyBObyBYYWxhbiIKKyMgUFJPUCBCQVNFIElnbm9yZV9FeHBvcnRfTGliIDAKKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKKyMgUFJPUCBVc2VfTUZDIDIKKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDEKKyMgUFJPUCBPdXRwdXRfRGlyICIuLlwuLlwuLlwuLlxCdWlsZFxXaW4zMlx2YzZcRGVidWciCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cQnVpbGRcV2luMzJcdmM2XERlYnVnXG9iaiIKKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgVGFyZ2V0X0RpciAiIgorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL0dSIC9HWCAvWkkgL09kIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRCAiX0FGWERMTCIgL1lYIC9GRCAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1IgL0dYIC9aSSAvT2QgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9EICJfQUZYRExMIiAvWVggL0ZEIC9HWiAvYworIyBBREQgQkFTRSBSU0MgL2wgMHhjMDkgL2QgIl9ERUJVRyIgL2QgIl9BRlhETEwiCisjIEFERCBSU0MgL2wgMHhjMDkgL2QgIl9ERUJVRyIgL2QgIl9BRlhETEwiCitCU0MzMj1ic2NtYWtlLmV4ZQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCisjIEFERCBCU0MzMiAvbm9sb2dvCitMSU5LMzI9bGluay5leGUKKyMgQUREIEJBU0UgTElOSzMyIGxpYmVheTMyLmxpYiB4ZXJjZXMtY18yRC5saWIgWGFsYW4tQ18xRC5saWIgLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvdmM2L0RlYnVnL3hzZWNfMUQubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQKKyMgQUREIExJTkszMiBsaWJlYXkzMi5saWIgeGVyY2VzLWNfMkQubGliIC4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL3ZjNi9EZWJ1Zy94c2VjXzFELmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0CisKKyFFTFNFSUYgICIkKENGRykiID09ICJzaW1wbGVEZWNyeXB0IC0gV2luMzIgUmVsZWFzZSBObyBYYWxhbiIKKworIyBQUk9QIEJBU0UgVXNlX01GQyAwCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDAKKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UgTm8gWGFsYW4iCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlIE5vIFhhbGFuIgorIyBQUk9QIEJBU0UgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgorIyBQUk9QIFVzZV9NRkMgMAorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAorIyBQUk9QIE91dHB1dF9EaXIgIi4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjNlxSZWxlYXNlIgorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjNlxSZWxlYXNlXG9iaiIKKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgVGFyZ2V0X0RpciAiIgorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9HUiAvR1ggL08yIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9HUiAvR1ggL08yIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jCisjIEFERCBCQVNFIFJTQyAvbCAweGMwOSAvZCAiTkRFQlVHIgorIyBBREQgUlNDIC9sIDB4YzA5IC9kICJOREVCVUciCitCU0MzMj1ic2NtYWtlLmV4ZQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCisjIEFERCBCU0MzMiAvbm9sb2dvCitMSU5LMzI9bGluay5leGUKKyMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIHhlcmNlcy1jXzIubGliIFhhbGFuLUNfMS5saWIgLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvdmM2L1JlbGVhc2UveHNlY18xLmxpYiBsaWJlYXkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4NgorIyBBREQgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIHhlcmNlcy1jXzIubGliIC4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL3ZjNi9SZWxlYXNlL3hzZWNfMS5saWIgbGliZWF5MzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYKKworIUVORElGIAorCisjIEJlZ2luIFRhcmdldAorCisjIE5hbWUgInNpbXBsZURlY3J5cHQgLSBXaW4zMiBSZWxlYXNlIgorIyBOYW1lICJzaW1wbGVEZWNyeXB0IC0gV2luMzIgRGVidWciCisjIE5hbWUgInNpbXBsZURlY3J5cHQgLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbiIKKyMgTmFtZSAic2ltcGxlRGVjcnlwdCAtIFdpbjMyIFJlbGVhc2UgTm8gWGFsYW4iCisjIEJlZ2luIEdyb3VwICJTb3VyY2UgRmlsZXMiCisKKyMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiY3BwO2M7Y3h4O3JjO2RlZjtyO29kbDtpZGw7aHBqO2JhdCIKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xzYW1wbGVzXElPU3RyZWFtT3V0cHV0dGVyLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xzYW1wbGVzXHNpbXBsZURlY3J5cHQuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBFbmQgR3JvdXAKKyMgQmVnaW4gR3JvdXAgIkhlYWRlciBGaWxlcyIKKworIyBQUk9QIERlZmF1bHRfRmlsdGVyICJoO2hwcDtoeHg7aG07aW5sIgorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHNhbXBsZXNcSU9TdHJlYW1PdXRwdXR0ZXIuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBFbmQgR3JvdXAKKyMgQmVnaW4gR3JvdXAgIlJlc291cmNlIEZpbGVzIgorCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgImljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSIKKyMgRW5kIEdyb3VwCisjIEVuZCBUYXJnZXQKKyMgRW5kIFByb2plY3QKZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkM2LjAvU2FtcGxlcy9zaW1wbGVFbmNyeXB0L3NpbXBsZUVuY3J5cHQuZHNwIGIvYy9Qcm9qZWN0cy9WQzYuMC9TYW1wbGVzL3NpbXBsZUVuY3J5cHQvc2ltcGxlRW5jcnlwdC5kc3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjE5YTdiNgotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkM2LjAvU2FtcGxlcy9zaW1wbGVFbmNyeXB0L3NpbXBsZUVuY3J5cHQuZHNwCkBAIC0wLDAgKzEsMTY0IEBACisjIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFByb2plY3QgRmlsZSAtIE5hbWU9InNpbXBsZUVuY3J5cHQiIC0gUGFja2FnZSBPd25lcj08ND4KKyMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gR2VuZXJhdGVkIEJ1aWxkIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDAKKyMgKiogRE8gTk9UIEVESVQgKioKKworIyBUQVJHVFlQRSAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIgMHgwMTAzCisKK0NGRz1zaW1wbGVFbmNyeXB0IC0gV2luMzIgRGVidWcgTm8gWGFsYW4KKyFNRVNTQUdFIFRoaXMgaXMgbm90IGEgdmFsaWQgbWFrZWZpbGUuIFRvIGJ1aWxkIHRoaXMgcHJvamVjdCB1c2luZyBOTUFLRSwKKyFNRVNTQUdFIHVzZSB0aGUgRXhwb3J0IE1ha2VmaWxlIGNvbW1hbmQgYW5kIHJ1bgorIU1FU1NBR0UgCishTUVTU0FHRSBOTUFLRSAvZiAic2ltcGxlRW5jcnlwdC5tYWsiLgorIU1FU1NBR0UgCishTUVTU0FHRSBZb3UgY2FuIHNwZWNpZnkgYSBjb25maWd1cmF0aW9uIHdoZW4gcnVubmluZyBOTUFLRQorIU1FU1NBR0UgYnkgZGVmaW5pbmcgdGhlIG1hY3JvIENGRyBvbiB0aGUgY29tbWFuZCBsaW5lLiBGb3IgZXhhbXBsZToKKyFNRVNTQUdFIAorIU1FU1NBR0UgTk1BS0UgL2YgInNpbXBsZUVuY3J5cHQubWFrIiBDRkc9InNpbXBsZUVuY3J5cHQgLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbiIKKyFNRVNTQUdFIAorIU1FU1NBR0UgUG9zc2libGUgY2hvaWNlcyBmb3IgY29uZmlndXJhdGlvbiBhcmU6CishTUVTU0FHRSAKKyFNRVNTQUdFICJzaW1wbGVFbmNyeXB0IC0gV2luMzIgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJzaW1wbGVFbmNyeXB0IC0gV2luMzIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAic2ltcGxlRW5jcnlwdCAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgInNpbXBsZUVuY3J5cHQgLSBXaW4zMiBSZWxlYXNlIE5vIFhhbGFuIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgCisKKyMgQmVnaW4gUHJvamVjdAorIyBQUk9QIEFsbG93UGVyQ29uZmlnRGVwZW5kZW5jaWVzIDAKKyMgUFJPUCBTY2NfUHJvak5hbWUgIiIKKyMgUFJPUCBTY2NfTG9jYWxQYXRoICIiCitDUFA9Y2wuZXhlCitSU0M9cmMuZXhlCisKKyFJRiAgIiQoQ0ZHKSIgPT0gInNpbXBsZUVuY3J5cHQgLSBXaW4zMiBSZWxlYXNlIgorCisjIFBST1AgQkFTRSBVc2VfTUZDIDAKKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiUmVsZWFzZSIKKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCisjIFBST1AgVXNlX01GQyAwCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwCisjIFBST1AgT3V0cHV0X0RpciAiLi5cLi5cLi5cLi5cQnVpbGRcV2luMzJcdmM2XFJlbGVhc2UiCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cQnVpbGRcV2luMzJcdmM2XFJlbGVhc2Vcb2JqIgorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKKyMgUFJPUCBUYXJnZXRfRGlyICIiCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvR1ggL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL0dSIC9HWCAvTzIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL2MKKyMgQUREIEJBU0UgUlNDIC9sIDB4YzA5IC9kICJOREVCVUciCisjIEFERCBSU0MgL2wgMHhjMDkgL2QgIk5ERUJVRyIKK0JTQzMyPWJzY21ha2UuZXhlCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KKyMgQUREIEJTQzMyIC9ub2xvZ28KK0xJTkszMj1saW5rLmV4ZQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4NgorIyBBREQgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIHhlcmNlcy1jXzIubGliIFhhbGFuLUNfMS5saWIgLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvdmM2L1JlbGVhc2UveHNlY18xLmxpYiBsaWJlYXkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4NgorCishRUxTRUlGICAiJChDRkcpIiA9PSAic2ltcGxlRW5jcnlwdCAtIFdpbjMyIERlYnVnIgorCisjIFBST1AgQkFTRSBVc2VfTUZDIDAKKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiRGVidWciCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyIKKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKKyMgUFJPUCBVc2VfTUZDIDIKKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDEKKyMgUFJPUCBPdXRwdXRfRGlyICIuLlwuLlwuLlwuLlxCdWlsZFxXaW4zMlx2YzZcRGVidWciCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cQnVpbGRcV2luMzJcdmM2XERlYnVnXG9iaiIKKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgVGFyZ2V0X0RpciAiIgorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dtIC9HWCAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL0daIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL0dSIC9HWCAvWkkgL09kIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRCAiX0FGWERMTCIgL1lYIC9GRCAvR1ogL2MKKyMgQUREIEJBU0UgUlNDIC9sIDB4YzA5IC9kICJfREVCVUciCisjIEFERCBSU0MgL2wgMHhjMDkgL2QgIl9ERUJVRyIgL2QgIl9BRlhETEwiCitCU0MzMj1ic2NtYWtlLmV4ZQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCisjIEFERCBCU0MzMiAvbm9sb2dvCitMSU5LMzI9bGluay5leGUKKyMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQKKyMgQUREIExJTkszMiBsaWJlYXkzMi5saWIgeGVyY2VzLWNfMkQubGliIFhhbGFuLUNfMUQubGliIC4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL3ZjNi9EZWJ1Zy94c2VjXzFELmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0CisKKyFFTFNFSUYgICIkKENGRykiID09ICJzaW1wbGVFbmNyeXB0IC0gV2luMzIgRGVidWcgTm8gWGFsYW4iCisKKyMgUFJPUCBCQVNFIFVzZV9NRkMgMgorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJEZWJ1ZyBObyBYYWxhbiIKKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnIE5vIFhhbGFuIgorIyBQUk9QIEJBU0UgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgorIyBQUk9QIFVzZV9NRkMgMgorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIE91dHB1dF9EaXIgIi4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjNlxEZWJ1ZyIKKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxCdWlsZFxXaW4zMlx2YzZcRGVidWdcb2JqIgorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKKyMgUFJPUCBUYXJnZXRfRGlyICIiCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1pJIC9PZCAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0QgIl9BRlhETEwiIC9ZWCAvRkQgL0daIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL0dSIC9HWCAvWkkgL09kIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRCAiX0FGWERMTCIgL1lYIC9GRCAvR1ogL2MKKyMgQUREIEJBU0UgUlNDIC9sIDB4YzA5IC9kICJfREVCVUciIC9kICJfQUZYRExMIgorIyBBREQgUlNDIC9sIDB4YzA5IC9kICJfREVCVUciIC9kICJfQUZYRExMIgorQlNDMzI9YnNjbWFrZS5leGUKKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbworIyBBREQgQlNDMzIgL25vbG9nbworTElOSzMyPWxpbmsuZXhlCisjIEFERCBCQVNFIExJTkszMiB4ZXJjZXMtY18yRC5saWIgWGFsYW4tQ18xRC5saWIgLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvdmM2L0RlYnVnL3hzZWNfMUQubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQKKyMgQUREIExJTkszMiBsaWJlYXkzMi5saWIgeGVyY2VzLWNfMkQubGliIC4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL3ZjNi9EZWJ1Zy94c2VjXzFELmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0CisKKyFFTFNFSUYgICIkKENGRykiID09ICJzaW1wbGVFbmNyeXB0IC0gV2luMzIgUmVsZWFzZSBObyBYYWxhbiIKKworIyBQUk9QIEJBU0UgVXNlX01GQyAwCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDAKKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UgTm8gWGFsYW4iCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlIE5vIFhhbGFuIgorIyBQUk9QIEJBU0UgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgorIyBQUk9QIFVzZV9NRkMgMAorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAorIyBQUk9QIE91dHB1dF9EaXIgIi4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjNlxSZWxlYXNlIgorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjNlxSZWxlYXNlXG9iaiIKKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgVGFyZ2V0X0RpciAiIgorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9HWCAvTzIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL0dSIC9HWCAvTzIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL2MKKyMgQUREIEJBU0UgUlNDIC9sIDB4YzA5IC9kICJOREVCVUciCisjIEFERCBSU0MgL2wgMHhjMDkgL2QgIk5ERUJVRyIKK0JTQzMyPWJzY21ha2UuZXhlCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KKyMgQUREIEJTQzMyIC9ub2xvZ28KK0xJTkszMj1saW5rLmV4ZQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgeGVyY2VzLWNfMi5saWIgWGFsYW4tQ18xLmxpYiAuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi92YzYvUmVsZWFzZS94c2VjXzEubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYKKyMgQUREIExJTkszMiBsaWJlYXkzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgeGVyY2VzLWNfMi5saWIgLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvdmM2L1JlbGVhc2UveHNlY18xLmxpYiBsaWJlYXkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4NgorCishRU5ESUYgCisKKyMgQmVnaW4gVGFyZ2V0CisKKyMgTmFtZSAic2ltcGxlRW5jcnlwdCAtIFdpbjMyIFJlbGVhc2UiCisjIE5hbWUgInNpbXBsZUVuY3J5cHQgLSBXaW4zMiBEZWJ1ZyIKKyMgTmFtZSAic2ltcGxlRW5jcnlwdCAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIgorIyBOYW1lICJzaW1wbGVFbmNyeXB0IC0gV2luMzIgUmVsZWFzZSBObyBYYWxhbiIKKyMgQmVnaW4gR3JvdXAgIlNvdXJjZSBGaWxlcyIKKworIyBQUk9QIERlZmF1bHRfRmlsdGVyICJjcHA7YztjeHg7cmM7ZGVmO3I7b2RsO2lkbDtocGo7YmF0IgorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHNhbXBsZXNcSU9TdHJlYW1PdXRwdXR0ZXIuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHNhbXBsZXNcc2ltcGxlRW5jcnlwdC5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEVuZCBHcm91cAorIyBCZWdpbiBHcm91cCAiSGVhZGVyIEZpbGVzIgorCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgImg7aHBwO2h4eDtobTtpbmwiCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcc2FtcGxlc1xJT1N0cmVhbU91dHB1dHRlci5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEVuZCBHcm91cAorIyBCZWdpbiBHcm91cCAiUmVzb3VyY2UgRmlsZXMiCisKKyMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIgorIyBFbmQgR3JvdXAKKyMgRW5kIFRhcmdldAorIyBFbmQgUHJvamVjdApkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzYuMC9TYW1wbGVzL3NpbXBsZUhNQUMvc2ltcGxlSE1BQy5kc3AgYi9jL1Byb2plY3RzL1ZDNi4wL1NhbXBsZXMvc2ltcGxlSE1BQy9zaW1wbGVITUFDLmRzcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOGRmOTFkCi0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzYuMC9TYW1wbGVzL3NpbXBsZUhNQUMvc2ltcGxlSE1BQy5kc3AKQEAgLTAsMCArMSwxNjQgQEAKKyMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gUHJvamVjdCBGaWxlIC0gTmFtZT0ic2ltcGxlSE1BQyIgLSBQYWNrYWdlIE93bmVyPTw0PgorIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMAorIyAqKiBETyBOT1QgRURJVCAqKgorCisjIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIiAweDAxMDMKKworQ0ZHPXNpbXBsZUhNQUMgLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbgorIU1FU1NBR0UgVGhpcyBpcyBub3QgYSB2YWxpZCBtYWtlZmlsZS4gVG8gYnVpbGQgdGhpcyBwcm9qZWN0IHVzaW5nIE5NQUtFLAorIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuCishTUVTU0FHRSAKKyFNRVNTQUdFIE5NQUtFIC9mICJzaW1wbGVITUFDLm1hayIuCishTUVTU0FHRSAKKyFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFCishTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOgorIU1FU1NBR0UgCishTUVTU0FHRSBOTUFLRSAvZiAic2ltcGxlSE1BQy5tYWsiIENGRz0ic2ltcGxlSE1BQyAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIgorIU1FU1NBR0UgCishTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToKKyFNRVNTQUdFIAorIU1FU1NBR0UgInNpbXBsZUhNQUMgLSBXaW4zMiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgInNpbXBsZUhNQUMgLSBXaW4zMiBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJzaW1wbGVITUFDIC0gV2luMzIgRGVidWcgTm8gWGFsYW4iIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAic2ltcGxlSE1BQyAtIFdpbjMyIFJlbGVhc2UgTm8gWGFsYW4iIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAKKworIyBCZWdpbiBQcm9qZWN0CisjIFBST1AgQWxsb3dQZXJDb25maWdEZXBlbmRlbmNpZXMgMAorIyBQUk9QIFNjY19Qcm9qTmFtZSAiIgorIyBQUk9QIFNjY19Mb2NhbFBhdGggIiIKK0NQUD1jbC5leGUKK1JTQz1yYy5leGUKKworIUlGICAiJChDRkcpIiA9PSAic2ltcGxlSE1BQyAtIFdpbjMyIFJlbGVhc2UiCisKKyMgUFJPUCBCQVNFIFVzZV9NRkMgMAorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJSZWxlYXNlIgorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSIKKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKKyMgUFJPUCBVc2VfTUZDIDAKKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDAKKyMgUFJPUCBPdXRwdXRfRGlyICIuLlwuLlwuLlwuLlxCdWlsZFxXaW4zMlx2YzZcUmVsZWFzZSIKKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxCdWlsZFxXaW4zMlx2YzZcUmVsZWFzZVxvYmoiCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIFRhcmdldF9EaXIgIiIKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvR1ggL08yIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jCisjIEFERCBCQVNFIFJTQyAvbCAweGMwOSAvZCAiTkRFQlVHIgorIyBBREQgUlNDIC9sIDB4YzA5IC9kICJOREVCVUciCitCU0MzMj1ic2NtYWtlLmV4ZQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCisjIEFERCBCU0MzMiAvbm9sb2dvCitMSU5LMzI9bGluay5leGUKKyMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYKKyMgQUREIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiB4ZXJjZXMtY18yLmxpYiBYYWxhbi1DXzEubGliIC4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL3ZjNi9SZWxlYXNlL3hzZWNfMS5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4NgorCishRUxTRUlGICAiJChDRkcpIiA9PSAic2ltcGxlSE1BQyAtIFdpbjMyIERlYnVnIgorCisjIFBST1AgQkFTRSBVc2VfTUZDIDAKKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiRGVidWciCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyIKKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKKyMgUFJPUCBVc2VfTUZDIDIKKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDEKKyMgUFJPUCBPdXRwdXRfRGlyICIuLlwuLlwuLlwuLlxCdWlsZFxXaW4zMlx2YzZcRGVidWciCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cQnVpbGRcV2luMzJcdmM2XERlYnVnXG9iaiIKKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgVGFyZ2V0X0RpciAiIgorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dtIC9HWCAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL0daIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL0dYIC9aSSAvT2QgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9EICJfQUZYRExMIiAvWVggL0ZEIC9HWiAvYworIyBBREQgQkFTRSBSU0MgL2wgMHhjMDkgL2QgIl9ERUJVRyIKKyMgQUREIFJTQyAvbCAweGMwOSAvZCAiX0RFQlVHIiAvZCAiX0FGWERMTCIKK0JTQzMyPWJzY21ha2UuZXhlCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KKyMgQUREIEJTQzMyIC9ub2xvZ28KK0xJTkszMj1saW5rLmV4ZQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorIyBBREQgTElOSzMyIHhlcmNlcy1jXzJELmxpYiBYYWxhbi1DXzFELmxpYiAuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi92YzYvRGVidWcveHNlY18xRC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorCishRUxTRUlGICAiJChDRkcpIiA9PSAic2ltcGxlSE1BQyAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIgorCisjIFBST1AgQkFTRSBVc2VfTUZDIDAKKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAic2ltcGxlSE1BQ19fX1dpbjMyX0RlYnVnX05vX1hhbGFuIgorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAic2ltcGxlSE1BQ19fX1dpbjMyX0RlYnVnX05vX1hhbGFuIgorIyBQUk9QIEJBU0UgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgorIyBQUk9QIFVzZV9NRkMgMgorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIE91dHB1dF9EaXIgIi4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjNlxEZWJ1ZyIKKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxCdWlsZFxXaW4zMlx2YzZcRGVidWdcb2JqIgorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKKyMgUFJPUCBUYXJnZXRfRGlyICIiCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1pJIC9PZCAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9HWiAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9HUiAvR1ggL1pJIC9PZCAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0QgIl9BRlhETEwiIC9ZWCAvRkQgL0daIC9jCisjIEFERCBCQVNFIFJTQyAvbCAweGMwOSAvZCAiX0RFQlVHIgorIyBBREQgUlNDIC9sIDB4YzA5IC9kICJfREVCVUciIC9kICJfQUZYRExMIgorQlNDMzI9YnNjbWFrZS5leGUKKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbworIyBBREQgQlNDMzIgL25vbG9nbworTElOSzMyPWxpbmsuZXhlCisjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiB4ZXJjZXMtY18yRC5saWIgWGFsYW4tQ18xRC5saWIgLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvdmM2L0RlYnVnL3hzZWNfbGliXzAxZC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorIyBBREQgTElOSzMyIHhlcmNlcy1jXzJELmxpYiAuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi92YzYvRGVidWcveHNlY18xRC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorCishRUxTRUlGICAiJChDRkcpIiA9PSAic2ltcGxlSE1BQyAtIFdpbjMyIFJlbGVhc2UgTm8gWGFsYW4iCisKKyMgUFJPUCBCQVNFIFVzZV9NRkMgMAorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJzaW1wbGVITUFDX19fV2luMzJfUmVsZWFzZV9Ob19YYWxhbiIKKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgInNpbXBsZUhNQUNfX19XaW4zMl9SZWxlYXNlX05vX1hhbGFuIgorIyBQUk9QIEJBU0UgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgorIyBQUk9QIFVzZV9NRkMgMAorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAorIyBQUk9QIE91dHB1dF9EaXIgIi4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjNlxSZWxlYXNlIgorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjNlxSZWxlYXNlXG9iaiIKKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgVGFyZ2V0X0RpciAiIgorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dYIC9PMiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9HUiAvR1ggL08yIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jCisjIEFERCBCQVNFIFJTQyAvbCAweGMwOSAvZCAiTkRFQlVHIgorIyBBREQgUlNDIC9sIDB4YzA5IC9kICJOREVCVUciCitCU0MzMj1ic2NtYWtlLmV4ZQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCisjIEFERCBCU0MzMiAvbm9sb2dvCitMSU5LMzI9bGluay5leGUKKyMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIHhlcmNlcy1jXzIubGliIFhhbGFuLUNfMS5saWIgLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvdmM2L1JlbGVhc2UveHNlY19saWJfMDEubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYKKyMgQUREIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiB4ZXJjZXMtY18yLmxpYiAuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi92YzYvUmVsZWFzZS94c2VjXzEubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYKKworIUVORElGIAorCisjIEJlZ2luIFRhcmdldAorCisjIE5hbWUgInNpbXBsZUhNQUMgLSBXaW4zMiBSZWxlYXNlIgorIyBOYW1lICJzaW1wbGVITUFDIC0gV2luMzIgRGVidWciCisjIE5hbWUgInNpbXBsZUhNQUMgLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbiIKKyMgTmFtZSAic2ltcGxlSE1BQyAtIFdpbjMyIFJlbGVhc2UgTm8gWGFsYW4iCisjIEJlZ2luIEdyb3VwICJTb3VyY2UgRmlsZXMiCisKKyMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiY3BwO2M7Y3h4O3JjO2RlZjtyO29kbDtpZGw7aHBqO2JhdCIKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xzYW1wbGVzXElPU3RyZWFtT3V0cHV0dGVyLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xzYW1wbGVzXHNpbXBsZUhNQUMuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBFbmQgR3JvdXAKKyMgQmVnaW4gR3JvdXAgIkhlYWRlciBGaWxlcyIKKworIyBQUk9QIERlZmF1bHRfRmlsdGVyICJoO2hwcDtoeHg7aG07aW5sIgorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHNhbXBsZXNcSU9TdHJlYW1PdXRwdXR0ZXIuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBFbmQgR3JvdXAKKyMgQmVnaW4gR3JvdXAgIlJlc291cmNlIEZpbGVzIgorCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgImljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSIKKyMgRW5kIEdyb3VwCisjIEVuZCBUYXJnZXQKKyMgRW5kIFByb2plY3QKZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkM2LjAvU2FtcGxlcy9zaW1wbGVWYWxpZGF0ZS9zaW1wbGVWYWxpZGF0ZS5kc3AgYi9jL1Byb2plY3RzL1ZDNi4wL1NhbXBsZXMvc2ltcGxlVmFsaWRhdGUvc2ltcGxlVmFsaWRhdGUuZHNwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3ZWE1ODQKLS0tIC9kZXYvbnVsbAorKysgYi9jL1Byb2plY3RzL1ZDNi4wL1NhbXBsZXMvc2ltcGxlVmFsaWRhdGUvc2ltcGxlVmFsaWRhdGUuZHNwCkBAIC0wLDAgKzEsMTYzIEBACisjIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFByb2plY3QgRmlsZSAtIE5hbWU9InNpbXBsZVZhbGlkYXRlIiAtIFBhY2thZ2UgT3duZXI9PDQ+CisjIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwCisjICoqIERPIE5PVCBFRElUICoqCisKKyMgVEFSR1RZUEUgIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iIDB4MDEwMworCitDRkc9c2ltcGxlVmFsaWRhdGUgLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbgorIU1FU1NBR0UgVGhpcyBpcyBub3QgYSB2YWxpZCBtYWtlZmlsZS4gVG8gYnVpbGQgdGhpcyBwcm9qZWN0IHVzaW5nIE5NQUtFLAorIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuCishTUVTU0FHRSAKKyFNRVNTQUdFIE5NQUtFIC9mICJzaW1wbGVWYWxpZGF0ZS5tYWsiLgorIU1FU1NBR0UgCishTUVTU0FHRSBZb3UgY2FuIHNwZWNpZnkgYSBjb25maWd1cmF0aW9uIHdoZW4gcnVubmluZyBOTUFLRQorIU1FU1NBR0UgYnkgZGVmaW5pbmcgdGhlIG1hY3JvIENGRyBvbiB0aGUgY29tbWFuZCBsaW5lLiBGb3IgZXhhbXBsZToKKyFNRVNTQUdFIAorIU1FU1NBR0UgTk1BS0UgL2YgInNpbXBsZVZhbGlkYXRlLm1hayIgQ0ZHPSJzaW1wbGVWYWxpZGF0ZSAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIgorIU1FU1NBR0UgCishTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToKKyFNRVNTQUdFIAorIU1FU1NBR0UgInNpbXBsZVZhbGlkYXRlIC0gV2luMzIgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJzaW1wbGVWYWxpZGF0ZSAtIFdpbjMyIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgInNpbXBsZVZhbGlkYXRlIC0gV2luMzIgRGVidWcgTm8gWGFsYW4iIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAic2ltcGxlVmFsaWRhdGUgLSBXaW4zMiBSZWxlYXNlIE5vIFhhbGFuIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgCisKKyMgQmVnaW4gUHJvamVjdAorIyBQUk9QIEFsbG93UGVyQ29uZmlnRGVwZW5kZW5jaWVzIDAKKyMgUFJPUCBTY2NfUHJvak5hbWUgIiIKKyMgUFJPUCBTY2NfTG9jYWxQYXRoICIiCitDUFA9Y2wuZXhlCitSU0M9cmMuZXhlCisKKyFJRiAgIiQoQ0ZHKSIgPT0gInNpbXBsZVZhbGlkYXRlIC0gV2luMzIgUmVsZWFzZSIKKworIyBQUk9QIEJBU0UgVXNlX01GQyAwCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDAKKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UiCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlIgorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgorIyBQUk9QIFVzZV9NRkMgMAorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAorIyBQUk9QIE91dHB1dF9EaXIgIi4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjNlxSZWxlYXNlIgorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjNlxSZWxlYXNlXG9iaiIKKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgVGFyZ2V0X0RpciAiIgorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dYIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9HWCAvTzIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL2MKKyMgQUREIEJBU0UgUlNDIC9sIDB4YzA5IC9kICJOREVCVUciCisjIEFERCBSU0MgL2wgMHhjMDkgL2QgIk5ERUJVRyIKK0JTQzMyPWJzY21ha2UuZXhlCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KKyMgQUREIEJTQzMyIC9ub2xvZ28KK0xJTkszMj1saW5rLmV4ZQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4NgorIyBBREQgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIHhlcmNlcy1jXzIubGliIFhhbGFuLUNfMS5saWIgLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvdmM2L1JlbGVhc2UveHNlY18xLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2CisKKyFFTFNFSUYgICIkKENGRykiID09ICJzaW1wbGVWYWxpZGF0ZSAtIFdpbjMyIERlYnVnIgorCisjIFBST1AgQkFTRSBVc2VfTUZDIDAKKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiRGVidWciCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyIKKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKKyMgUFJPUCBVc2VfTUZDIDIKKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDEKKyMgUFJPUCBPdXRwdXRfRGlyICIuLlwuLlwuLlwuLlxCdWlsZFxXaW4zMlx2YzZcRGVidWciCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cQnVpbGRcV2luMzJcdmM2XERlYnVnXG9iaiIKKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgVGFyZ2V0X0RpciAiIgorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dtIC9HWCAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL0daIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL0dYIC9aSSAvT2QgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9EICJfQUZYRExMIiAvWVggL0ZEIC9HWiAvYworIyBBREQgQkFTRSBSU0MgL2wgMHhjMDkgL2QgIl9ERUJVRyIKKyMgQUREIFJTQyAvbCAweGMwOSAvZCAiX0RFQlVHIiAvZCAiX0FGWERMTCIKK0JTQzMyPWJzY21ha2UuZXhlCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KKyMgQUREIEJTQzMyIC9ub2xvZ28KK0xJTkszMj1saW5rLmV4ZQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorIyBBREQgTElOSzMyIHhlcmNlcy1jXzJELmxpYiBYYWxhbi1DXzFELmxpYiAuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi92YzYvRGVidWcveHNlY18xRC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorCishRUxTRUlGICAiJChDRkcpIiA9PSAic2ltcGxlVmFsaWRhdGUgLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbiIKKworIyBQUk9QIEJBU0UgVXNlX01GQyAwCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgInNpbXBsZVZhbGlkYXRlX19fV2luMzJfRGVidWdfTm9fWGFsYW4iCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJzaW1wbGVWYWxpZGF0ZV9fX1dpbjMyX0RlYnVnX05vX1hhbGFuIgorIyBQUk9QIEJBU0UgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgorIyBQUk9QIFVzZV9NRkMgMgorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIE91dHB1dF9EaXIgIi4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjNlxEZWJ1ZyIKKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxCdWlsZFxXaW4zMlx2YzZcRGVidWdcb2JqIgorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKKyMgUFJPUCBUYXJnZXRfRGlyICIiCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1pJIC9PZCAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9HWiAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9HUiAvR1ggL1pJIC9PZCAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0QgIl9BRlhETEwiIC9ZWCAvRkQgL0daIC9jCisjIEFERCBCQVNFIFJTQyAvbCAweGMwOSAvZCAiX0RFQlVHIgorIyBBREQgUlNDIC9sIDB4YzA5IC9kICJfREVCVUciIC9kICJfQUZYRExMIgorQlNDMzI9YnNjbWFrZS5leGUKKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbworIyBBREQgQlNDMzIgL25vbG9nbworTElOSzMyPWxpbmsuZXhlCisjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiB4ZXJjZXMtY18yRC5saWIgWGFsYW4tQ18xRC5saWIgLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvdmM2L0RlYnVnL3hzZWNfbGliXzAxZC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorIyBBREQgTElOSzMyIHhlcmNlcy1jXzJELmxpYiAuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi92YzYvRGVidWcveHNlY18xRC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorCishRUxTRUlGICAiJChDRkcpIiA9PSAic2ltcGxlVmFsaWRhdGUgLSBXaW4zMiBSZWxlYXNlIE5vIFhhbGFuIgorCisjIFBST1AgQkFTRSBVc2VfTUZDIDAKKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAic2ltcGxlVmFsaWRhdGVfX19XaW4zMl9SZWxlYXNlX05vX1hhbGFuIgorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAic2ltcGxlVmFsaWRhdGVfX19XaW4zMl9SZWxlYXNlX05vX1hhbGFuIgorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgorIyBQUk9QIFVzZV9NRkMgMAorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAorIyBQUk9QIE91dHB1dF9EaXIgIi4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjNlxSZWxlYXNlIgorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjNlxSZWxlYXNlXG9iaiIKKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgVGFyZ2V0X0RpciAiIgorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dYIC9PMiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9HUiAvR1ggL08yIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jCisjIEFERCBCQVNFIFJTQyAvbCAweGMwOSAvZCAiTkRFQlVHIgorIyBBREQgUlNDIC9sIDB4YzA5IC9kICJOREVCVUciCitCU0MzMj1ic2NtYWtlLmV4ZQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCisjIEFERCBCU0MzMiAvbm9sb2dvCitMSU5LMzI9bGluay5leGUKKyMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIHhlcmNlcy1jXzIubGliIFhhbGFuLUNfMS5saWIgLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvdmM2L1JlbGVhc2UveHNlY19saWJfMDEubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYKKyMgQUREIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiB4ZXJjZXMtY18yLmxpYiAuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi92YzYvUmVsZWFzZS94c2VjXzEubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYKKworIUVORElGIAorCisjIEJlZ2luIFRhcmdldAorCisjIE5hbWUgInNpbXBsZVZhbGlkYXRlIC0gV2luMzIgUmVsZWFzZSIKKyMgTmFtZSAic2ltcGxlVmFsaWRhdGUgLSBXaW4zMiBEZWJ1ZyIKKyMgTmFtZSAic2ltcGxlVmFsaWRhdGUgLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbiIKKyMgTmFtZSAic2ltcGxlVmFsaWRhdGUgLSBXaW4zMiBSZWxlYXNlIE5vIFhhbGFuIgorIyBCZWdpbiBHcm91cCAiU291cmNlIEZpbGVzIgorCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgImNwcDtjO2N4eDtyYztkZWY7cjtvZGw7aWRsO2hwajtiYXQiCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcc2FtcGxlc1xJT1N0cmVhbU91dHB1dHRlci5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcc2FtcGxlc1xzaW1wbGVWYWxpZGF0ZS5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEVuZCBHcm91cAorIyBCZWdpbiBHcm91cCAiSGVhZGVyIEZpbGVzIgorCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgImg7aHBwO2h4eDtobTtpbmwiCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcc2FtcGxlc1xJT1N0cmVhbU91dHB1dHRlci5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEVuZCBHcm91cAorIyBCZWdpbiBHcm91cCAiUmVzb3VyY2UgRmlsZXMiCisKKyMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIgorIyBFbmQgR3JvdXAKKyMgRW5kIFRhcmdldAorIyBFbmQgUHJvamVjdApkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzYuMC94c2VjL2MxNG4vYzE0bi5kc3AgYi9jL1Byb2plY3RzL1ZDNi4wL3hzZWMvYzE0bi9jMTRuLmRzcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjI3ZmQzCi0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzYuMC94c2VjL2MxNG4vYzE0bi5kc3AKQEAgLTAsMCArMSwxNjUgQEAKKyMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gUHJvamVjdCBGaWxlIC0gTmFtZT0iYzE0biIgLSBQYWNrYWdlIE93bmVyPTw0PgorIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMAorIyAqKiBETyBOT1QgRURJVCAqKgorCisjIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIiAweDAxMDMKKworQ0ZHPWMxNG4gLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbgorIU1FU1NBR0UgVGhpcyBpcyBub3QgYSB2YWxpZCBtYWtlZmlsZS4gVG8gYnVpbGQgdGhpcyBwcm9qZWN0IHVzaW5nIE5NQUtFLAorIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuCishTUVTU0FHRSAKKyFNRVNTQUdFIE5NQUtFIC9mICJjMTRuLm1hayIuCishTUVTU0FHRSAKKyFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFCishTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOgorIU1FU1NBR0UgCishTUVTU0FHRSBOTUFLRSAvZiAiYzE0bi5tYWsiIENGRz0iYzE0biAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIgorIU1FU1NBR0UgCishTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToKKyFNRVNTQUdFIAorIU1FU1NBR0UgImMxNG4gLSBXaW4zMiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgImMxNG4gLSBXaW4zMiBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJjMTRuIC0gV2luMzIgRGVidWcgTm8gWGFsYW4iIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAiYzE0biAtIFdpbjMyIFJlbGVhc2UgTm8gWGFsYW4iIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAKKworIyBCZWdpbiBQcm9qZWN0CisjIFBST1AgQWxsb3dQZXJDb25maWdEZXBlbmRlbmNpZXMgMAorIyBQUk9QIFNjY19Qcm9qTmFtZSAiIgorIyBQUk9QIFNjY19Mb2NhbFBhdGggIiIKK0NQUD1jbC5leGUKK1JTQz1yYy5leGUKKworIUlGICAiJChDRkcpIiA9PSAiYzE0biAtIFdpbjMyIFJlbGVhc2UiCisKKyMgUFJPUCBCQVNFIFVzZV9NRkMgMAorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJSZWxlYXNlIgorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSIKKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKKyMgUFJPUCBVc2VfTUZDIDAKKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDAKKyMgUFJPUCBPdXRwdXRfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvUmVsZWFzZSIKKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvUmVsZWFzZS9vYmoiCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIFRhcmdldF9EaXIgIiIKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvR1ggL08yIC9JICIuLi8uLi8uLi8uLi9pbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jCisjIFNVQlRSQUNUIENQUCAvRnIKKyMgQUREIEJBU0UgUlNDIC9sIDB4YzA5IC9kICJOREVCVUciCisjIEFERCBSU0MgL2wgMHhjMDkgL2QgIk5ERUJVRyIKK0JTQzMyPWJzY21ha2UuZXhlCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KKyMgQUREIEJTQzMyIC9ub2xvZ28KK0xJTkszMj1saW5rLmV4ZQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4NgorIyBBREQgTElOSzMyIHhlcmNlcy1jXzIubGliIFhhbGFuLUNfMS5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0CisjIFNVQlRSQUNUIExJTkszMiAvZGVidWcKKworIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImMxNG4gLSBXaW4zMiBEZWJ1ZyIKKworIyBQUk9QIEJBU0UgVXNlX01GQyAwCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIkRlYnVnIgorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCisjIFBST1AgVXNlX01GQyAwCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxCisjIFBST1AgT3V0cHV0X0RpciAiLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L0RlYnVnIgorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9EZWJ1Zy9vYmoiCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIFRhcmdldF9EaXIgIiIKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HbSAvR1ggL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9HWiAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9HWCAvWkkgL09kIC9JICIlTElCV1dXJVxTUkMiIC9JICIuLi8uLi8uLi8uLi9pbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRlIgL1lYIC9GRCAvR1ogL2MKKyMgU1VCVFJBQ1QgQ1BQIC9YCisjIEFERCBCQVNFIFJTQyAvbCAweGMwOSAvZCAiX0RFQlVHIgorIyBBREQgUlNDIC9sIDB4YzA5IC9kICJfREVCVUciCitCU0MzMj1ic2NtYWtlLmV4ZQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCisjIEFERCBCU0MzMiAvbm9sb2dvCitMSU5LMzI9bGluay5leGUKKyMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQKKyMgQUREIExJTkszMiB4ZXJjZXMtY18yRC5saWIgWGFsYW4tQ18xRC5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorCishRUxTRUlGICAiJChDRkcpIiA9PSAiYzE0biAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIgorCisjIFBST1AgQkFTRSBVc2VfTUZDIDAKKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiYzE0bl9fX1dpbjMyX0RlYnVnX05vX1hhbGFuIgorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiYzE0bl9fX1dpbjMyX0RlYnVnX05vX1hhbGFuIgorIyBQUk9QIEJBU0UgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgorIyBQUk9QIFVzZV9NRkMgMAorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIE91dHB1dF9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9EZWJ1ZyIKKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvRGVidWcvb2JqIgorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKKyMgUFJPUCBUYXJnZXRfRGlyICIiCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzMgL0dtIC9HWCAvWkkgL09kIC9JICIlTElCV1dXJVxTUkMiIC9JICIuLi8uLi8uLi8uLi9zcmMiIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9GUiAvWVggL0ZEIC9HWiAvYworIyBTVUJUUkFDVCBCQVNFIENQUCAvWAorIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9HWCAvWkkgL09kIC9JICIlTElCV1dXJVxTUkMiIC9JICIuLi8uLi8uLi8uLi9pbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRlIgL1lYIC9GRCAvR1ogL2MKKyMgU1VCVFJBQ1QgQ1BQIC9YCisjIEFERCBCQVNFIFJTQyAvbCAweGMwOSAvZCAiX0RFQlVHIgorIyBBREQgUlNDIC9sIDB4YzA5IC9kICJfREVCVUciCitCU0MzMj1ic2NtYWtlLmV4ZQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCisjIEFERCBCU0MzMiAvbm9sb2dvCitMSU5LMzI9bGluay5leGUKKyMgQUREIEJBU0UgTElOSzMyIC4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9EZWJ1Zy94c2VjX2xpYl8wMUQubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIHhlcmNlcy1jXzJELmxpYiBYYWxhbi1DXzFELmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0CisjIEFERCBMSU5LMzIgeGVyY2VzLWNfMkQubGliIGNyeXB0MzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQKKworIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImMxNG4gLSBXaW4zMiBSZWxlYXNlIE5vIFhhbGFuIgorCisjIFBST1AgQkFTRSBVc2VfTUZDIDAKKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiYzE0bl9fX1dpbjMyX1JlbGVhc2VfTm9fWGFsYW4iCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJjMTRuX19fV2luMzJfUmVsZWFzZV9Ob19YYWxhbiIKKyMgUFJPUCBCQVNFIElnbm9yZV9FeHBvcnRfTGliIDAKKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKKyMgUFJPUCBVc2VfTUZDIDAKKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDAKKyMgUFJPUCBPdXRwdXRfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvUmVsZWFzZSIKKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvUmVsZWFzZS9vYmoiCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIFRhcmdldF9EaXIgIiIKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvR1ggL08yIC9JICIuLi8uLi8uLi8uLi9zcmMiIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL2MKKyMgU1VCVFJBQ1QgQkFTRSBDUFAgL0ZyCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9HWCAvTzIgL0kgIi4uLy4uLy4uLy4uL2luY2x1ZGUiIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL2MKKyMgU1VCVFJBQ1QgQ1BQIC9GcgorIyBBREQgQkFTRSBSU0MgL2wgMHhjMDkgL2QgIk5ERUJVRyIKKyMgQUREIFJTQyAvbCAweGMwOSAvZCAiTkRFQlVHIgorQlNDMzI9YnNjbWFrZS5leGUKKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbworIyBBREQgQlNDMzIgL25vbG9nbworTElOSzMyPWxpbmsuZXhlCisjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiB4ZXJjZXMtY18yLmxpYiBYYWxhbi1DXzEubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorIyBTVUJUUkFDVCBCQVNFIExJTkszMiAvZGVidWcKKyMgQUREIExJTkszMiB4ZXJjZXMtY18yLmxpYiBjcnlwdDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2CisjIFNVQlRSQUNUIExJTkszMiAvZGVidWcKKworIUVORElGIAorCisjIEJlZ2luIFRhcmdldAorCisjIE5hbWUgImMxNG4gLSBXaW4zMiBSZWxlYXNlIgorIyBOYW1lICJjMTRuIC0gV2luMzIgRGVidWciCisjIE5hbWUgImMxNG4gLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbiIKKyMgTmFtZSAiYzE0biAtIFdpbjMyIFJlbGVhc2UgTm8gWGFsYW4iCisjIEJlZ2luIEdyb3VwICJTb3VyY2UgRmlsZXMiCisKKyMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiY3BwO2M7Y3h4O3JjO2RlZjtyO29kbDtpZGw7aHBqO2JhdCIKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x0b29sc1xjMTRuXGMxNG4uY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBFbmQgR3JvdXAKKyMgQmVnaW4gR3JvdXAgIkhlYWRlciBGaWxlcyIKKworIyBQUk9QIERlZmF1bHRfRmlsdGVyICJoO2hwcDtoeHg7aG07aW5sIgorIyBFbmQgR3JvdXAKKyMgQmVnaW4gR3JvdXAgIlJlc291cmNlIEZpbGVzIgorCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgImljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSIKKyMgRW5kIEdyb3VwCisjIEVuZCBUYXJnZXQKKyMgRW5kIFByb2plY3QKZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkM2LjAveHNlYy9jaGVja3NpZy9jaGVja3NpZy5kc3AgYi9jL1Byb2plY3RzL1ZDNi4wL3hzZWMvY2hlY2tzaWcvY2hlY2tzaWcuZHNwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzYjE1MzkKLS0tIC9kZXYvbnVsbAorKysgYi9jL1Byb2plY3RzL1ZDNi4wL3hzZWMvY2hlY2tzaWcvY2hlY2tzaWcuZHNwCkBAIC0wLDAgKzEsMjEyIEBACisjIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFByb2plY3QgRmlsZSAtIE5hbWU9ImNoZWNrc2lnIiAtIFBhY2thZ2UgT3duZXI9PDQ+CisjIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwCisjICoqIERPIE5PVCBFRElUICoqCisKKyMgVEFSR1RZUEUgIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iIDB4MDEwMworCitDRkc9Y2hlY2tzaWcgLSBXaW4zMiBSZWxlYXNlIE5vIFhhbGFuCishTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsCishTUVTU0FHRSB1c2UgdGhlIEV4cG9ydCBNYWtlZmlsZSBjb21tYW5kIGFuZCBydW4KKyFNRVNTQUdFIAorIU1FU1NBR0UgTk1BS0UgL2YgImNoZWNrc2lnLm1hayIuCishTUVTU0FHRSAKKyFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFCishTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOgorIU1FU1NBR0UgCishTUVTU0FHRSBOTUFLRSAvZiAiY2hlY2tzaWcubWFrIiBDRkc9ImNoZWNrc2lnIC0gV2luMzIgUmVsZWFzZSBObyBYYWxhbiIKKyFNRVNTQUdFIAorIU1FU1NBR0UgUG9zc2libGUgY2hvaWNlcyBmb3IgY29uZmlndXJhdGlvbiBhcmU6CishTUVTU0FHRSAKKyFNRVNTQUdFICJjaGVja3NpZyAtIFdpbjMyIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAiY2hlY2tzaWcgLSBXaW4zMiBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJjaGVja3NpZyAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgImNoZWNrc2lnIC0gV2luMzIgUmVsZWFzZSBObyBYYWxhbiIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFIAorCisjIEJlZ2luIFByb2plY3QKKyMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwCisjIFBST1AgU2NjX1Byb2pOYW1lICIiCisjIFBST1AgU2NjX0xvY2FsUGF0aCAiIgorQ1BQPWNsLmV4ZQorUlNDPXJjLmV4ZQorCishSUYgICIkKENGRykiID09ICJjaGVja3NpZyAtIFdpbjMyIFJlbGVhc2UiCisKKyMgUFJPUCBCQVNFIFVzZV9NRkMgMAorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJSZWxlYXNlIgorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSIKKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKKyMgUFJPUCBVc2VfTUZDIDAKKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDAKKyMgUFJPUCBPdXRwdXRfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvUmVsZWFzZSIKKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvUmVsZWFzZS9vYmoiCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIFRhcmdldF9EaXIgIiIKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvR1ggL08yIC9JICIuLi8uLi8uLi8uLi9pbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jCisjIEFERCBCQVNFIFJTQyAvbCAweGMwOSAvZCAiTkRFQlVHIgorIyBBREQgUlNDIC9sIDB4YzA5IC9kICJOREVCVUciCitCU0MzMj1ic2NtYWtlLmV4ZQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCisjIEFERCBCU0MzMiAvbm9sb2dvCitMSU5LMzI9bGluay5leGUKKyMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYKKyMgQUREIExJTkszMiB4ZXJjZXMtY18yLmxpYiBYYWxhbi1DXzEubGliIGxpYmVheTMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2CisKKyFFTFNFSUYgICIkKENGRykiID09ICJjaGVja3NpZyAtIFdpbjMyIERlYnVnIgorCisjIFBST1AgQkFTRSBVc2VfTUZDIDAKKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiRGVidWciCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyIKKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKKyMgUFJPUCBVc2VfTUZDIDAKKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDEKKyMgUFJPUCBPdXRwdXRfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvRGVidWciCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L0RlYnVnL29iaiIKKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgVGFyZ2V0X0RpciAiIgorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dtIC9HWCAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL0daIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL0dYIC9aSSAvT2QgL0kgIi4uLy4uLy4uLy4uL2luY2x1ZGUiIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL0daIC9jCisjIEFERCBCQVNFIFJTQyAvbCAweGMwOSAvZCAiX0RFQlVHIgorIyBBREQgUlNDIC9sIDB4YzA5IC9kICJfREVCVUciCitCU0MzMj1ic2NtYWtlLmV4ZQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCisjIEFERCBCU0MzMiAvbm9sb2dvCitMSU5LMzI9bGluay5leGUKKyMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQKKyMgQUREIExJTkszMiB4ZXJjZXMtY18yRC5saWIgWGFsYW4tQ18xRC5saWIgbGliZWF5MzIubGliIGNyeXB0MzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYXAgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorCishRUxTRUlGICAiJChDRkcpIiA9PSAiY2hlY2tzaWcgLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbiIKKworIyBQUk9QIEJBU0UgVXNlX01GQyAwCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgImNoZWNrc2lnX19fV2luMzJfRGVidWdfTm9fWGFsYW4iCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJjaGVja3NpZ19fX1dpbjMyX0RlYnVnX05vX1hhbGFuIgorIyBQUk9QIEJBU0UgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgorIyBQUk9QIFVzZV9NRkMgMAorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIE91dHB1dF9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9EZWJ1ZyIKKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvRGVidWcvb2JqIgorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKKyMgUFJPUCBUYXJnZXRfRGlyICIiCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzMgL0dtIC9HWCAvWkkgL09kIC9JICIlTElCV1dXJVxMaWJyYXJ5XEV4dGVybmFsIiAvSSAiJUxJQldXVyVcTGlicmFyeVxTcmMiIC9JICIuLi8uLi8uLi8uLi9zcmMiIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL0daIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL0dYIC9aSSAvT2QgL0kgIi4uLy4uLy4uLy4uL2luY2x1ZGUiIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZYyAvRkQgL0daIC9jCisjIEFERCBCQVNFIFJTQyAvbCAweGMwOSAvZCAiX0RFQlVHIgorIyBBREQgUlNDIC9sIDB4YzA5IC9kICJfREVCVUciCitCU0MzMj1ic2NtYWtlLmV4ZQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCisjIEFERCBCU0MzMiAvbm9sb2dvCitMSU5LMzI9bGluay5leGUKKyMgQUREIEJBU0UgTElOSzMyIC4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9EZWJ1Zy94c2VjX2xpYl8wMUQubGliIGxpYmVheTMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiB4ZXJjZXMtY18yRC5saWIgWGFsYW4tQ18xRC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorIyBBREQgTElOSzMyIGxpYmVheTMyLmxpYiB4ZXJjZXMtY18yRC5saWIgY3J5cHQzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorCishRUxTRUlGICAiJChDRkcpIiA9PSAiY2hlY2tzaWcgLSBXaW4zMiBSZWxlYXNlIE5vIFhhbGFuIgorCisjIFBST1AgQkFTRSBVc2VfTUZDIDAKKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiY2hlY2tzaWdfX19XaW4zMl9SZWxlYXNlX05vX1hhbGFuIgorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiY2hlY2tzaWdfX19XaW4zMl9SZWxlYXNlX05vX1hhbGFuIgorIyBQUk9QIEJBU0UgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgorIyBQUk9QIFVzZV9NRkMgMAorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIE91dHB1dF9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9SZWxlYXNlIgorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9SZWxlYXNlL29iaiIKKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgVGFyZ2V0X0RpciAiIgorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9HbSAvR1ggL1pJIC9PZCAvSSAiJUxJQldXVyVcTGlicmFyeVxFeHRlcm5hbCIgL0kgIiVMSUJXV1clXExpYnJhcnlcU3JjIiAvSSAiLi4vLi4vLi4vLi4vc3JjIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9HWiAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvR1ggL09kIC9PYjEgL0kgIiVMSUJXV1clXExpYnJhcnlcRXh0ZXJuYWwiIC9JICIlTElCV1dXJVxMaWJyYXJ5XFNyYyIgL0kgIi4uLy4uLy4uLy4uL2luY2x1ZGUiIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL0daIC9jCisjIEFERCBCQVNFIFJTQyAvbCAweGMwOSAvZCAiX0RFQlVHIgorIyBBREQgUlNDIC9sIDB4YzA5IC9kICJOREVCVUciCitCU0MzMj1ic2NtYWtlLmV4ZQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCisjIEFERCBCU0MzMiAvbm9sb2dvCitMSU5LMzI9bGluay5leGUKKyMgQUREIEJBU0UgTElOSzMyIC4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9EZWJ1Zy94c2VjX2xpYl8wMUQubGliIGxpYmVheTMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiB4ZXJjZXMtY18yRC5saWIgWGFsYW4tQ18xRC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorIyBBREQgTElOSzMyIGxpYmVheTMyLmxpYiB4ZXJjZXMtY18yLmxpYiBjcnlwdDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL21hY2hpbmU6STM4NgorIyBTVUJUUkFDVCBMSU5LMzIgL2RlYnVnCisKKyFFTkRJRiAKKworIyBCZWdpbiBUYXJnZXQKKworIyBOYW1lICJjaGVja3NpZyAtIFdpbjMyIFJlbGVhc2UiCisjIE5hbWUgImNoZWNrc2lnIC0gV2luMzIgRGVidWciCisjIE5hbWUgImNoZWNrc2lnIC0gV2luMzIgRGVidWcgTm8gWGFsYW4iCisjIE5hbWUgImNoZWNrc2lnIC0gV2luMzIgUmVsZWFzZSBObyBYYWxhbiIKKyMgQmVnaW4gR3JvdXAgIlNvdXJjZSBGaWxlcyIKKworIyBQUk9QIERlZmF1bHRfRmlsdGVyICJjcHA7YztjeHg7cmM7ZGVmO3I7b2RsO2lkbDtocGo7YmF0IgorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHRvb2xzXGNoZWNrc2lnXEFub255bW91c1Jlc29sdmVyLmNwcAorCishSUYgICIkKENGRykiID09ICJjaGVja3NpZyAtIFdpbjMyIFJlbGVhc2UiCisKKyFFTFNFSUYgICIkKENGRykiID09ICJjaGVja3NpZyAtIFdpbjMyIERlYnVnIgorCishRUxTRUlGICAiJChDRkcpIiA9PSAiY2hlY2tzaWcgLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbiIKKworIyBBREQgQ1BQIC9ZWAorCishRUxTRUlGICAiJChDRkcpIiA9PSAiY2hlY2tzaWcgLSBXaW4zMiBSZWxlYXNlIE5vIFhhbGFuIgorCishRU5ESUYgCisKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcdG9vbHNcY2hlY2tzaWdcY2hlY2tzaWcuY3BwCisKKyFJRiAgIiQoQ0ZHKSIgPT0gImNoZWNrc2lnIC0gV2luMzIgUmVsZWFzZSIKKworIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImNoZWNrc2lnIC0gV2luMzIgRGVidWciCisKKyFFTFNFSUYgICIkKENGRykiID09ICJjaGVja3NpZyAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIgorCisjIEFERCBDUFAgL1lYCisKKyFFTFNFSUYgICIkKENGRykiID09ICJjaGVja3NpZyAtIFdpbjMyIFJlbGVhc2UgTm8gWGFsYW4iCisKKyFFTkRJRiAKKworIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x0b29sc1xjaGVja3NpZ1xJbnRlcm9wUmVzb2x2ZXIuY3BwCisKKyFJRiAgIiQoQ0ZHKSIgPT0gImNoZWNrc2lnIC0gV2luMzIgUmVsZWFzZSIKKworIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImNoZWNrc2lnIC0gV2luMzIgRGVidWciCisKKyFFTFNFSUYgICIkKENGRykiID09ICJjaGVja3NpZyAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIgorCisjIEFERCBDUFAgL1lYCisKKyFFTFNFSUYgICIkKENGRykiID09ICJjaGVja3NpZyAtIFdpbjMyIFJlbGVhc2UgTm8gWGFsYW4iCisKKyFFTkRJRiAKKworIyBFbmQgU291cmNlIEZpbGUKKyMgRW5kIEdyb3VwCisjIEJlZ2luIEdyb3VwICJIZWFkZXIgRmlsZXMiCisKKyMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaDtocHA7aHh4O2htO2lubCIKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x0b29sc1xjaGVja3NpZ1xBbm9ueW1vdXNSZXNvbHZlci5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcdG9vbHNcY2hlY2tzaWdcSW50ZXJvcFJlc29sdmVyLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgRW5kIEdyb3VwCisjIEJlZ2luIEdyb3VwICJSZXNvdXJjZSBGaWxlcyIKKworIyBQUk9QIERlZmF1bHRfRmlsdGVyICJpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiCisjIEVuZCBHcm91cAorIyBFbmQgVGFyZ2V0CisjIEVuZCBQcm9qZWN0CmRpZmYgLS1naXQgYS9jL1Byb2plY3RzL1ZDNi4wL3hzZWMvY2lwaGVyL2NpcGhlci5kc3AgYi9jL1Byb2plY3RzL1ZDNi4wL3hzZWMvY2lwaGVyL2NpcGhlci5kc3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUzZWIzYwotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkM2LjAveHNlYy9jaXBoZXIvY2lwaGVyLmRzcApAQCAtMCwwICsxLDE2NCBAQAorIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJjaXBoZXIiIC0gUGFja2FnZSBPd25lcj08ND4KKyMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gR2VuZXJhdGVkIEJ1aWxkIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDAKKyMgKiogRE8gTk9UIEVESVQgKioKKworIyBUQVJHVFlQRSAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIgMHgwMTAzCisKK0NGRz1jaXBoZXIgLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbgorIU1FU1NBR0UgVGhpcyBpcyBub3QgYSB2YWxpZCBtYWtlZmlsZS4gVG8gYnVpbGQgdGhpcyBwcm9qZWN0IHVzaW5nIE5NQUtFLAorIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuCishTUVTU0FHRSAKKyFNRVNTQUdFIE5NQUtFIC9mICJjaXBoZXIubWFrIi4KKyFNRVNTQUdFIAorIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UKKyFNRVNTQUdFIGJ5IGRlZmluaW5nIHRoZSBtYWNybyBDRkcgb24gdGhlIGNvbW1hbmQgbGluZS4gRm9yIGV4YW1wbGU6CishTUVTU0FHRSAKKyFNRVNTQUdFIE5NQUtFIC9mICJjaXBoZXIubWFrIiBDRkc9ImNpcGhlciAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIgorIU1FU1NBR0UgCishTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToKKyFNRVNTQUdFIAorIU1FU1NBR0UgImNpcGhlciAtIFdpbjMyIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAiY2lwaGVyIC0gV2luMzIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAiY2lwaGVyIC0gV2luMzIgRGVidWcgTm8gWGFsYW4iIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAiY2lwaGVyIC0gV2luMzIgUmVsZWFzZSBObyBYYWxhbiIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFIAorCisjIEJlZ2luIFByb2plY3QKKyMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwCisjIFBST1AgU2NjX1Byb2pOYW1lICIiCisjIFBST1AgU2NjX0xvY2FsUGF0aCAiIgorQ1BQPWNsLmV4ZQorUlNDPXJjLmV4ZQorCishSUYgICIkKENGRykiID09ICJjaXBoZXIgLSBXaW4zMiBSZWxlYXNlIgorCisjIFBST1AgQkFTRSBVc2VfTUZDIDAKKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiUmVsZWFzZSIKKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCisjIFBST1AgVXNlX01GQyAwCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwCisjIFBST1AgT3V0cHV0X0RpciAiLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L1JlbGVhc2UiCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L1JlbGVhc2Uvb2JqIgorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKKyMgUFJPUCBUYXJnZXRfRGlyICIiCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvR1ggL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL0dYIC9PMiAvSSAiLi4vLi4vLi4vLi4vaW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvYworIyBBREQgQkFTRSBSU0MgL2wgMHhjMDkgL2QgIk5ERUJVRyIKKyMgQUREIFJTQyAvbCAweGMwOSAvZCAiTkRFQlVHIgorQlNDMzI9YnNjbWFrZS5leGUKKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbworIyBBREQgQlNDMzIgL25vbG9nbworTElOSzMyPWxpbmsuZXhlCisjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2CisjIEFERCBMSU5LMzIgeGVyY2VzLWNfMi5saWIgWGFsYW4tQ18xLmxpYiBsaWJlYXkzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4NgorCishRUxTRUlGICAiJChDRkcpIiA9PSAiY2lwaGVyIC0gV2luMzIgRGVidWciCisKKyMgUFJPUCBCQVNFIFVzZV9NRkMgMAorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJEZWJ1ZyIKKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnIgorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgorIyBQUk9QIFVzZV9NRkMgMAorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIE91dHB1dF9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9EZWJ1ZyIKKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvRGVidWcvb2JqIgorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKKyMgUFJPUCBUYXJnZXRfRGlyICIiCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvR20gL0dYIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1pJIC9PZCAvSSAiLi4vLi4vLi4vLi4vaW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0ZSIC9ZWCAvRkQgL0daIC9jCisjIEFERCBCQVNFIFJTQyAvbCAweGMwOSAvZCAiX0RFQlVHIgorIyBBREQgUlNDIC9sIDB4YzA5IC9kICJfREVCVUciCitCU0MzMj1ic2NtYWtlLmV4ZQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCisjIEFERCBCU0MzMiAvbm9sb2dvCitMSU5LMzI9bGluay5leGUKKyMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQKKyMgQUREIExJTkszMiB4ZXJjZXMtY18yRC5saWIgWGFsYW4tQ18xRC5saWIgbGliZWF5MzIubGliIGNyeXB0MzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQKKworIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImNpcGhlciAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIgorCisjIFBST1AgQkFTRSBVc2VfTUZDIDIKKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiY2lwaGVyX19fV2luMzJfRGVidWdfTm9fWGFsYW4iCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJjaXBoZXJfX19XaW4zMl9EZWJ1Z19Ob19YYWxhbiIKKyMgUFJPUCBCQVNFIElnbm9yZV9FeHBvcnRfTGliIDAKKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKKyMgUFJPUCBVc2VfTUZDIDAKKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDEKKyMgUFJPUCBPdXRwdXRfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvRGVidWciCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L0RlYnVnL29iaiIKKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgVGFyZ2V0X0RpciAiIgorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL0dSIC9HWCAvWkkgL09kIC9JICIuLi8uLi8uLi8uLi9pbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRCAiX0FGWERMTCIgL0ZSIC9ZWCAvRkQgL0daIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL0dYIC9aSSAvT2QgL0kgIi4uLy4uLy4uLy4uL2luY2x1ZGUiIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9GUiAvWVggL0ZEIC9HWiAvYworIyBBREQgQkFTRSBSU0MgL2wgMHhjMDkgL2QgIl9ERUJVRyIgL2QgIl9BRlhETEwiCisjIEFERCBSU0MgL2wgMHhjMDkgL2QgIl9ERUJVRyIKK0JTQzMyPWJzY21ha2UuZXhlCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KKyMgQUREIEJTQzMyIC9ub2xvZ28KK0xJTkszMj1saW5rLmV4ZQorIyBBREQgQkFTRSBMSU5LMzIgeGVyY2VzLWNfMkQubGliIFhhbGFuLUNfMUQubGliIGxpYmVheTMyLmxpYiBjcnlwdDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0CisjIEFERCBMSU5LMzIgeGVyY2VzLWNfMkQubGliIGxpYmVheTMyLmxpYiBjcnlwdDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0CisKKyFFTFNFSUYgICIkKENGRykiID09ICJjaXBoZXIgLSBXaW4zMiBSZWxlYXNlIE5vIFhhbGFuIgorCisjIFBST1AgQkFTRSBVc2VfTUZDIDAKKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiY2lwaGVyX19fV2luMzJfUmVsZWFzZV9Ob19YYWxhbiIKKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgImNpcGhlcl9fX1dpbjMyX1JlbGVhc2VfTm9fWGFsYW4iCisjIFBST1AgQkFTRSBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCisjIFBST1AgVXNlX01GQyAwCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwCisjIFBST1AgT3V0cHV0X0RpciAiLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L1JlbGVhc2UiCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L1JlbGVhc2Uvb2JqIgorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKKyMgUFJPUCBUYXJnZXRfRGlyICIiCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzMgL0dSIC9HWCAvTzIgL0kgIi4uLy4uLy4uLy4uL2luY2x1ZGUiIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL0dYIC9PMiAvSSAiLi4vLi4vLi4vLi4vaW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvYworIyBBREQgQkFTRSBSU0MgL2wgMHhjMDkgL2QgIk5ERUJVRyIKKyMgQUREIFJTQyAvbCAweGMwOSAvZCAiTkRFQlVHIgorQlNDMzI9YnNjbWFrZS5leGUKKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbworIyBBREQgQlNDMzIgL25vbG9nbworTElOSzMyPWxpbmsuZXhlCisjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiB4ZXJjZXMtY18yLmxpYiBYYWxhbi1DXzEubGliIGxpYmVheTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2CisjIEFERCBMSU5LMzIgeGVyY2VzLWNfMi5saWIgbGliZWF5MzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYKKworIUVORElGIAorCisjIEJlZ2luIFRhcmdldAorCisjIE5hbWUgImNpcGhlciAtIFdpbjMyIFJlbGVhc2UiCisjIE5hbWUgImNpcGhlciAtIFdpbjMyIERlYnVnIgorIyBOYW1lICJjaXBoZXIgLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbiIKKyMgTmFtZSAiY2lwaGVyIC0gV2luMzIgUmVsZWFzZSBObyBYYWxhbiIKKyMgQmVnaW4gR3JvdXAgIlNvdXJjZSBGaWxlcyIKKworIyBQUk9QIERlZmF1bHRfRmlsdGVyICJjcHA7YztjeHg7cmM7ZGVmO3I7b2RsO2lkbDtocGo7YmF0IgorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHRvb2xzXGNpcGhlclxjaXBoZXIuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHRvb2xzXGNpcGhlclxYZW5jSW50ZXJvcFJlc29sdmVyLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgRW5kIEdyb3VwCisjIEJlZ2luIEdyb3VwICJIZWFkZXIgRmlsZXMiCisKKyMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaDtocHA7aHh4O2htO2lubCIKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x0b29sc1xjaXBoZXJcWGVuY0ludGVyb3BSZXNvbHZlci5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEVuZCBHcm91cAorIyBCZWdpbiBHcm91cCAiUmVzb3VyY2UgRmlsZXMiCisKKyMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIgorIyBFbmQgR3JvdXAKKyMgRW5kIFRhcmdldAorIyBFbmQgUHJvamVjdApkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzYuMC94c2VjL3NpZ2luZi9zaWdpbmYuZHNwIGIvYy9Qcm9qZWN0cy9WQzYuMC94c2VjL3NpZ2luZi9zaWdpbmYuZHNwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3NjgxMmMKLS0tIC9kZXYvbnVsbAorKysgYi9jL1Byb2plY3RzL1ZDNi4wL3hzZWMvc2lnaW5mL3NpZ2luZi5kc3AKQEAgLTAsMCArMSwxNTYgQEAKKyMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gUHJvamVjdCBGaWxlIC0gTmFtZT0ic2lnaW5mIiAtIFBhY2thZ2UgT3duZXI9PDQ+CisjIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwCisjICoqIERPIE5PVCBFRElUICoqCisKKyMgVEFSR1RZUEUgIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iIDB4MDEwMworCitDRkc9c2lnaW5mIC0gV2luMzIgRGVidWcgTm8gWGFsYW4KKyFNRVNTQUdFIFRoaXMgaXMgbm90IGEgdmFsaWQgbWFrZWZpbGUuIFRvIGJ1aWxkIHRoaXMgcHJvamVjdCB1c2luZyBOTUFLRSwKKyFNRVNTQUdFIHVzZSB0aGUgRXhwb3J0IE1ha2VmaWxlIGNvbW1hbmQgYW5kIHJ1bgorIU1FU1NBR0UgCishTUVTU0FHRSBOTUFLRSAvZiAic2lnaW5mLm1hayIuCishTUVTU0FHRSAKKyFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFCishTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOgorIU1FU1NBR0UgCishTUVTU0FHRSBOTUFLRSAvZiAic2lnaW5mLm1hayIgQ0ZHPSJzaWdpbmYgLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbiIKKyFNRVNTQUdFIAorIU1FU1NBR0UgUG9zc2libGUgY2hvaWNlcyBmb3IgY29uZmlndXJhdGlvbiBhcmU6CishTUVTU0FHRSAKKyFNRVNTQUdFICJzaWdpbmYgLSBXaW4zMiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgInNpZ2luZiAtIFdpbjMyIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgInNpZ2luZiAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgInNpZ2luZiAtIFdpbjMyIFJlbGVhc2UgTm8gWGFsYW4iIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAKKworIyBCZWdpbiBQcm9qZWN0CisjIFBST1AgQWxsb3dQZXJDb25maWdEZXBlbmRlbmNpZXMgMAorIyBQUk9QIFNjY19Qcm9qTmFtZSAiIgorIyBQUk9QIFNjY19Mb2NhbFBhdGggIiIKK0NQUD1jbC5leGUKK1JTQz1yYy5leGUKKworIUlGICAiJChDRkcpIiA9PSAic2lnaW5mIC0gV2luMzIgUmVsZWFzZSIKKworIyBQUk9QIEJBU0UgVXNlX01GQyAwCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDAKKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UiCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlIgorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgorIyBQUk9QIFVzZV9NRkMgMAorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAorIyBQUk9QIE91dHB1dF9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9SZWxlYXNlIgorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9SZWxlYXNlL29iaiIKKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgVGFyZ2V0X0RpciAiIgorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dYIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9HWCAvTzIgL0kgIi4uLy4uLy4uLy4uL2luY2x1ZGUiIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL2MKKyMgQUREIEJBU0UgUlNDIC9sIDB4YzA5IC9kICJOREVCVUciCisjIEFERCBSU0MgL2wgMHhjMDkgL2QgIk5ERUJVRyIKK0JTQzMyPWJzY21ha2UuZXhlCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KKyMgQUREIEJTQzMyIC9ub2xvZ28KK0xJTkszMj1saW5rLmV4ZQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4NgorIyBBREQgTElOSzMyIHhlcmNlcy1jXzIubGliIFhhbGFuLUNfMS5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4NgorCishRUxTRUlGICAiJChDRkcpIiA9PSAic2lnaW5mIC0gV2luMzIgRGVidWciCisKKyMgUFJPUCBCQVNFIFVzZV9NRkMgMAorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJEZWJ1ZyIKKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnIgorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgorIyBQUk9QIFVzZV9NRkMgMAorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIE91dHB1dF9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9EZWJ1ZyIKKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvRGVidWcvb2JqIgorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKKyMgUFJPUCBUYXJnZXRfRGlyICIiCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvR20gL0dYIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1pJIC9PZCAvSSAiLi4vLi4vLi4vLi4vaW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvR1ogL2MKKyMgQUREIEJBU0UgUlNDIC9sIDB4YzA5IC9kICJfREVCVUciCisjIEFERCBSU0MgL2wgMHhjMDkgL2QgIl9ERUJVRyIKK0JTQzMyPWJzY21ha2UuZXhlCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KKyMgQUREIEJTQzMyIC9ub2xvZ28KK0xJTkszMj1saW5rLmV4ZQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorIyBBREQgTElOSzMyIGxpYmVheTMyLmxpYiB4ZXJjZXMtY18yRC5saWIgWGFsYW4tQ18xRC5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorCishRUxTRUlGICAiJChDRkcpIiA9PSAic2lnaW5mIC0gV2luMzIgRGVidWcgTm8gWGFsYW4iCisKKyMgUFJPUCBCQVNFIFVzZV9NRkMgMgorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJEZWJ1ZyBObyBYYWxhbiIKKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnIE5vIFhhbGFuIgorIyBQUk9QIEJBU0UgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgorIyBQUk9QIFVzZV9NRkMgMAorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIE91dHB1dF9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9EZWJ1ZyIKKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvRGVidWcvb2JqIgorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKKyMgUFJPUCBUYXJnZXRfRGlyICIiCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRCAiX0FGWERMTCIgL1lYIC9GRCAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1pJIC9PZCAvSSAiLi4vLi4vLi4vLi4vaW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvR1ogL2MKKyMgQUREIEJBU0UgUlNDIC9sIDB4YzA5IC9kICJfREVCVUciIC9kICJfQUZYRExMIgorIyBBREQgUlNDIC9sIDB4YzA5IC9kICJfREVCVUciCitCU0MzMj1ic2NtYWtlLmV4ZQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCisjIEFERCBCU0MzMiAvbm9sb2dvCitMSU5LMzI9bGluay5leGUKKyMgQUREIEJBU0UgTElOSzMyIC4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9EZWJ1Zy94c2VjX2xpYl8wMUQubGliIGxpYmVheTMyLmxpYiB4ZXJjZXMtY18yRC5saWIgWGFsYW4tQ18xRC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorIyBBREQgTElOSzMyIGxpYmVheTMyLmxpYiB4ZXJjZXMtY18yRC5saWIgY3J5cHQzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorCishRUxTRUlGICAiJChDRkcpIiA9PSAic2lnaW5mIC0gV2luMzIgUmVsZWFzZSBObyBYYWxhbiIKKworIyBQUk9QIEJBU0UgVXNlX01GQyAwCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDAKKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UgTm8gWGFsYW4iCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlIE5vIFhhbGFuIgorIyBQUk9QIEJBU0UgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgorIyBQUk9QIFVzZV9NRkMgMAorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAorIyBQUk9QIE91dHB1dF9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9SZWxlYXNlIgorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9SZWxlYXNlL29iaiIKKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgVGFyZ2V0X0RpciAiIgorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dYIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9HWCAvTzIgL0kgIi4uLy4uLy4uLy4uL2luY2x1ZGUiIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL2MKKyMgQUREIEJBU0UgUlNDIC9sIDB4YzA5IC9kICJOREVCVUciCisjIEFERCBSU0MgL2wgMHhjMDkgL2QgIk5ERUJVRyIKK0JTQzMyPWJzY21ha2UuZXhlCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KKyMgQUREIEJTQzMyIC9ub2xvZ28KK0xJTkszMj1saW5rLmV4ZQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgeGVyY2VzLWNfMi5saWIgWGFsYW4tQ18xLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2CisjIEFERCBMSU5LMzIgeGVyY2VzLWNfMi5saWIgY3J5cHQzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4NgorCishRU5ESUYgCisKKyMgQmVnaW4gVGFyZ2V0CisKKyMgTmFtZSAic2lnaW5mIC0gV2luMzIgUmVsZWFzZSIKKyMgTmFtZSAic2lnaW5mIC0gV2luMzIgRGVidWciCisjIE5hbWUgInNpZ2luZiAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIgorIyBOYW1lICJzaWdpbmYgLSBXaW4zMiBSZWxlYXNlIE5vIFhhbGFuIgorIyBCZWdpbiBHcm91cCAiU291cmNlIEZpbGVzIgorCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgImNwcDtjO2N4eDtyYztkZWY7cjtvZGw7aWRsO2hwajtiYXQiCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcdG9vbHNcc2lnaW5mXHNpZ2luZi5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEVuZCBHcm91cAorIyBCZWdpbiBHcm91cCAiSGVhZGVyIEZpbGVzIgorCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgImg7aHBwO2h4eDtobTtpbmwiCisjIEVuZCBHcm91cAorIyBCZWdpbiBHcm91cCAiUmVzb3VyY2UgRmlsZXMiCisKKyMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIgorIyBFbmQgR3JvdXAKKyMgRW5kIFRhcmdldAorIyBFbmQgUHJvamVjdApkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzYuMC94c2VjL3RlbXBsYXRlc2lnbi90ZW1wbGF0ZXNpZ24uZHNwIGIvYy9Qcm9qZWN0cy9WQzYuMC94c2VjL3RlbXBsYXRlc2lnbi90ZW1wbGF0ZXNpZ24uZHNwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxZDE5OWYKLS0tIC9kZXYvbnVsbAorKysgYi9jL1Byb2plY3RzL1ZDNi4wL3hzZWMvdGVtcGxhdGVzaWduL3RlbXBsYXRlc2lnbi5kc3AKQEAgLTAsMCArMSwxNTUgQEAKKyMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gUHJvamVjdCBGaWxlIC0gTmFtZT0idGVtcGxhdGVzaWduIiAtIFBhY2thZ2UgT3duZXI9PDQ+CisjIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwCisjICoqIERPIE5PVCBFRElUICoqCisKKyMgVEFSR1RZUEUgIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iIDB4MDEwMworCitDRkc9dGVtcGxhdGVzaWduIC0gV2luMzIgRGVidWcgTm8gWGFsYW4KKyFNRVNTQUdFIFRoaXMgaXMgbm90IGEgdmFsaWQgbWFrZWZpbGUuIFRvIGJ1aWxkIHRoaXMgcHJvamVjdCB1c2luZyBOTUFLRSwKKyFNRVNTQUdFIHVzZSB0aGUgRXhwb3J0IE1ha2VmaWxlIGNvbW1hbmQgYW5kIHJ1bgorIU1FU1NBR0UgCishTUVTU0FHRSBOTUFLRSAvZiAidGVtcGxhdGVzaWduLm1hayIuCishTUVTU0FHRSAKKyFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFCishTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOgorIU1FU1NBR0UgCishTUVTU0FHRSBOTUFLRSAvZiAidGVtcGxhdGVzaWduLm1hayIgQ0ZHPSJ0ZW1wbGF0ZXNpZ24gLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbiIKKyFNRVNTQUdFIAorIU1FU1NBR0UgUG9zc2libGUgY2hvaWNlcyBmb3IgY29uZmlndXJhdGlvbiBhcmU6CishTUVTU0FHRSAKKyFNRVNTQUdFICJ0ZW1wbGF0ZXNpZ24gLSBXaW4zMiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgInRlbXBsYXRlc2lnbiAtIFdpbjMyIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgInRlbXBsYXRlc2lnbiAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgInRlbXBsYXRlc2lnbiAtIFdpbjMyIFJlbGVhc2UgTm8gWGFsYW4iIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAKKworIyBCZWdpbiBQcm9qZWN0CisjIFBST1AgQWxsb3dQZXJDb25maWdEZXBlbmRlbmNpZXMgMAorIyBQUk9QIFNjY19Qcm9qTmFtZSAiIgorIyBQUk9QIFNjY19Mb2NhbFBhdGggIiIKK0NQUD1jbC5leGUKK1JTQz1yYy5leGUKKworIUlGICAiJChDRkcpIiA9PSAidGVtcGxhdGVzaWduIC0gV2luMzIgUmVsZWFzZSIKKworIyBQUk9QIEJBU0UgVXNlX01GQyAwCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDAKKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UiCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlIgorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgorIyBQUk9QIFVzZV9NRkMgMAorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAorIyBQUk9QIE91dHB1dF9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9SZWxlYXNlIgorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9SZWxlYXNlL29iaiIKKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgVGFyZ2V0X0RpciAiIgorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dYIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9HWCAvTzIgL0kgIi4uLy4uLy4uLy4uL2luY2x1ZGUiIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL2MKKyMgQUREIEJBU0UgUlNDIC9sIDB4YzA5IC9kICJOREVCVUciCisjIEFERCBSU0MgL2wgMHhjMDkgL2QgIk5ERUJVRyIKK0JTQzMyPWJzY21ha2UuZXhlCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KKyMgQUREIEJTQzMyIC9ub2xvZ28KK0xJTkszMj1saW5rLmV4ZQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4NgorIyBBREQgTElOSzMyIHhlcmNlcy1jXzIubGliIFhhbGFuLUNfMS5saWIgbGliZWF5MzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYKKworIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInRlbXBsYXRlc2lnbiAtIFdpbjMyIERlYnVnIgorCisjIFBST1AgQkFTRSBVc2VfTUZDIDAKKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiRGVidWciCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyIKKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKKyMgUFJPUCBVc2VfTUZDIDAKKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDEKKyMgUFJPUCBPdXRwdXRfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvRGVidWciCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L0RlYnVnL29iaiIKKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgVGFyZ2V0X0RpciAiIgorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dtIC9HWCAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL0daIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL0dYIC9aSSAvT2QgL0kgIi4uLy4uLy4uLy4uL2luY2x1ZGUiIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL0daIC9jCisjIEFERCBCQVNFIFJTQyAvbCAweGMwOSAvZCAiX0RFQlVHIgorIyBBREQgUlNDIC9sIDB4YzA5IC9kICJfREVCVUciCitCU0MzMj1ic2NtYWtlLmV4ZQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCisjIEFERCBCU0MzMiAvbm9sb2dvCitMSU5LMzI9bGluay5leGUKKyMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQKKyMgQUREIExJTkszMiBsaWJlYXkzMi5saWIgeGVyY2VzLWNfMkQubGliIFhhbGFuLUNfMUQubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQKKworIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInRlbXBsYXRlc2lnbiAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIgorCisjIFBST1AgQkFTRSBVc2VfTUZDIDAKKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAidGVtcGxhdGVzaWduX19fV2luMzJfRGVidWdfTm9fWGFsYW4iCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJ0ZW1wbGF0ZXNpZ25fX19XaW4zMl9EZWJ1Z19Ob19YYWxhbiIKKyMgUFJPUCBCQVNFIElnbm9yZV9FeHBvcnRfTGliIDAKKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKKyMgUFJPUCBVc2VfTUZDIDAKKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDEKKyMgUFJPUCBPdXRwdXRfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvRGVidWciCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L0RlYnVnL29iaiIKKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgVGFyZ2V0X0RpciAiIgorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9HbSAvR1ggL1pJIC9PZCAvSSAiLi4vLi4vLi4vLi4vc3JjIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9HWiAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9HWCAvWkkgL09kIC9JICIuLi8uLi8uLi8uLi9pbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9HWiAvYworIyBBREQgQkFTRSBSU0MgL2wgMHhjMDkgL2QgIl9ERUJVRyIKKyMgQUREIFJTQyAvbCAweGMwOSAvZCAiX0RFQlVHIgorQlNDMzI9YnNjbWFrZS5leGUKKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbworIyBBREQgQlNDMzIgL25vbG9nbworTElOSzMyPWxpbmsuZXhlCisjIEFERCBCQVNFIExJTkszMiAuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvRGVidWcveHNlY19saWJfMDFELmxpYiBsaWJlYXkzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgeGVyY2VzLWNfMkQubGliIFhhbGFuLUNfMUQubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQKKyMgQUREIExJTkszMiBsaWJlYXkzMi5saWIgeGVyY2VzLWNfMkQubGliIGNyeXB0MzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQKKworIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInRlbXBsYXRlc2lnbiAtIFdpbjMyIFJlbGVhc2UgTm8gWGFsYW4iCisKKyMgUFJPUCBCQVNFIFVzZV9NRkMgMAorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJ0ZW1wbGF0ZXNpZ25fX19XaW4zMl9SZWxlYXNlX05vX1hhbGFuIgorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAidGVtcGxhdGVzaWduX19fV2luMzJfUmVsZWFzZV9Ob19YYWxhbiIKKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKKyMgUFJPUCBVc2VfTUZDIDAKKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDAKKyMgUFJPUCBPdXRwdXRfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvUmVsZWFzZSIKKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvUmVsZWFzZS9vYmoiCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIFRhcmdldF9EaXIgIiIKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvR1ggL08yIC9JICIuLi8uLi8uLi8uLi9zcmMiIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL0dYIC9PMiAvSSAiLi4vLi4vLi4vLi4vaW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvYworIyBBREQgQkFTRSBSU0MgL2wgMHhjMDkgL2QgIk5ERUJVRyIKKyMgQUREIFJTQyAvbCAweGMwOSAvZCAiTkRFQlVHIgorQlNDMzI9YnNjbWFrZS5leGUKKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbworIyBBREQgQlNDMzIgL25vbG9nbworTElOSzMyPWxpbmsuZXhlCisjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiB4ZXJjZXMtY18yLmxpYiBYYWxhbi1DXzEubGliIGxpYmVheTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2CisjIEFERCBMSU5LMzIgeGVyY2VzLWNfMi5saWIgbGliZWF5MzIubGliIGNyeXB0MzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYKKworIUVORElGIAorCisjIEJlZ2luIFRhcmdldAorCisjIE5hbWUgInRlbXBsYXRlc2lnbiAtIFdpbjMyIFJlbGVhc2UiCisjIE5hbWUgInRlbXBsYXRlc2lnbiAtIFdpbjMyIERlYnVnIgorIyBOYW1lICJ0ZW1wbGF0ZXNpZ24gLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbiIKKyMgTmFtZSAidGVtcGxhdGVzaWduIC0gV2luMzIgUmVsZWFzZSBObyBYYWxhbiIKKyMgQmVnaW4gR3JvdXAgIlNvdXJjZSBGaWxlcyIKKworIyBQUk9QIERlZmF1bHRfRmlsdGVyICJjcHA7YztjeHg7cmM7ZGVmO3I7b2RsO2lkbDtocGo7YmF0IgorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHRvb2xzXHRlbXBsYXRlc2lnblx0ZW1wbGF0ZXNpZ24uY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBFbmQgR3JvdXAKKyMgQmVnaW4gR3JvdXAgIkhlYWRlciBGaWxlcyIKKworIyBQUk9QIERlZmF1bHRfRmlsdGVyICJoO2hwcDtoeHg7aG07aW5sIgorIyBFbmQgR3JvdXAKKyMgQmVnaW4gR3JvdXAgIlJlc291cmNlIEZpbGVzIgorCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgImljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSIKKyMgRW5kIEdyb3VwCisjIEVuZCBUYXJnZXQKKyMgRW5kIFByb2plY3QKZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkM2LjAveHNlYy90aHJlYWRUZXN0L3RocmVhZFRlc3QuZHNwIGIvYy9Qcm9qZWN0cy9WQzYuMC94c2VjL3RocmVhZFRlc3QvdGhyZWFkVGVzdC5kc3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRhMjBiNwotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkM2LjAveHNlYy90aHJlYWRUZXN0L3RocmVhZFRlc3QuZHNwCkBAIC0wLDAgKzEsMTU0IEBACisjIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFByb2plY3QgRmlsZSAtIE5hbWU9InRocmVhZFRlc3QiIC0gUGFja2FnZSBPd25lcj08ND4KKyMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gR2VuZXJhdGVkIEJ1aWxkIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDAKKyMgKiogRE8gTk9UIEVESVQgKioKKworIyBUQVJHVFlQRSAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIgMHgwMTAzCisKK0NGRz10aHJlYWRUZXN0IC0gV2luMzIgRGVidWcgTm8gWGFsYW4KKyFNRVNTQUdFIFRoaXMgaXMgbm90IGEgdmFsaWQgbWFrZWZpbGUuIFRvIGJ1aWxkIHRoaXMgcHJvamVjdCB1c2luZyBOTUFLRSwKKyFNRVNTQUdFIHVzZSB0aGUgRXhwb3J0IE1ha2VmaWxlIGNvbW1hbmQgYW5kIHJ1bgorIU1FU1NBR0UgCishTUVTU0FHRSBOTUFLRSAvZiAidGhyZWFkVGVzdC5tYWsiLgorIU1FU1NBR0UgCishTUVTU0FHRSBZb3UgY2FuIHNwZWNpZnkgYSBjb25maWd1cmF0aW9uIHdoZW4gcnVubmluZyBOTUFLRQorIU1FU1NBR0UgYnkgZGVmaW5pbmcgdGhlIG1hY3JvIENGRyBvbiB0aGUgY29tbWFuZCBsaW5lLiBGb3IgZXhhbXBsZToKKyFNRVNTQUdFIAorIU1FU1NBR0UgTk1BS0UgL2YgInRocmVhZFRlc3QubWFrIiBDRkc9InRocmVhZFRlc3QgLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbiIKKyFNRVNTQUdFIAorIU1FU1NBR0UgUG9zc2libGUgY2hvaWNlcyBmb3IgY29uZmlndXJhdGlvbiBhcmU6CishTUVTU0FHRSAKKyFNRVNTQUdFICJ0aHJlYWRUZXN0IC0gV2luMzIgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJ0aHJlYWRUZXN0IC0gV2luMzIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAidGhyZWFkVGVzdCAtIFdpbjMyIFJlbGVhc2UgTm8gWGFsYW4iIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAidGhyZWFkVGVzdCAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgCisKKyMgQmVnaW4gUHJvamVjdAorIyBQUk9QIEFsbG93UGVyQ29uZmlnRGVwZW5kZW5jaWVzIDAKKyMgUFJPUCBTY2NfUHJvak5hbWUgIiIKKyMgUFJPUCBTY2NfTG9jYWxQYXRoICIiCitDUFA9Y2wuZXhlCitSU0M9cmMuZXhlCisKKyFJRiAgIiQoQ0ZHKSIgPT0gInRocmVhZFRlc3QgLSBXaW4zMiBSZWxlYXNlIgorCisjIFBST1AgQkFTRSBVc2VfTUZDIDAKKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiUmVsZWFzZSIKKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCisjIFBST1AgVXNlX01GQyAwCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwCisjIFBST1AgT3V0cHV0X0RpciAiLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L1JlbGVhc2UiCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L1JlbGVhc2Uvb2JqIgorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKKyMgUFJPUCBUYXJnZXRfRGlyICIiCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvR1ggL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL0dYIC9PMiAvSSAiLi4vLi4vLi4vLi4vaW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvYworIyBBREQgQkFTRSBSU0MgL2wgMHhjMDkgL2QgIk5ERUJVRyIKKyMgQUREIFJTQyAvbCAweGMwOSAvZCAiTkRFQlVHIgorQlNDMzI9YnNjbWFrZS5leGUKKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbworIyBBREQgQlNDMzIgL25vbG9nbworTElOSzMyPWxpbmsuZXhlCisjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2CisjIEFERCBMSU5LMzIgeGVyY2VzLWNfMi5saWIgWGFsYW4tQ18xLmxpYiBsaWJlYXkzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4NgorCishRUxTRUlGICAiJChDRkcpIiA9PSAidGhyZWFkVGVzdCAtIFdpbjMyIERlYnVnIgorCisjIFBST1AgQkFTRSBVc2VfTUZDIDAKKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiRGVidWciCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyIKKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKKyMgUFJPUCBVc2VfTUZDIDAKKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDEKKyMgUFJPUCBPdXRwdXRfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvRGVidWciCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L0RlYnVnL29iaiIKKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgVGFyZ2V0X0RpciAiIgorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dtIC9HWCAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL0daIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL0dYIC9aSSAvT2QgL0kgIi4uLy4uLy4uLy4uL2luY2x1ZGUiIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL0daIC9jCisjIEFERCBCQVNFIFJTQyAvbCAweGMwOSAvZCAiX0RFQlVHIgorIyBBREQgUlNDIC9sIDB4YzA5IC9kICJfREVCVUciCitCU0MzMj1ic2NtYWtlLmV4ZQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCisjIEFERCBCU0MzMiAvbm9sb2dvCitMSU5LMzI9bGluay5leGUKKyMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQKKyMgQUREIExJTkszMiBsaWJlYXkzMi5saWIgeGVyY2VzLWNfMkQubGliIFhhbGFuLUNfMUQubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQKKworIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInRocmVhZFRlc3QgLSBXaW4zMiBSZWxlYXNlIE5vIFhhbGFuIgorCisjIFBST1AgQkFTRSBVc2VfTUZDIDAKKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAidGhyZWFkVGVzdF9fX1dpbjMyX1JlbGVhc2VfTm9fWGFsYW4iCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJ0aHJlYWRUZXN0X19fV2luMzJfUmVsZWFzZV9Ob19YYWxhbiIKKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKKyMgUFJPUCBVc2VfTUZDIDAKKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDAKKyMgUFJPUCBPdXRwdXRfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvUmVsZWFzZSIKKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvUmVsZWFzZS9vYmoiCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIFRhcmdldF9EaXIgIiIKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0kgIi4uLy4uLy4uLy4uL2luY2x1ZGUiIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL0dYIC9PMiAvSSAiLi4vLi4vLi4vLi4vaW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvYworIyBBREQgQkFTRSBSU0MgL2wgMHhjMDkgL2QgIk5ERUJVRyIKKyMgQUREIFJTQyAvbCAweGMwOSAvZCAiTkRFQlVHIgorQlNDMzI9YnNjbWFrZS5leGUKKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbworIyBBREQgQlNDMzIgL25vbG9nbworTElOSzMyPWxpbmsuZXhlCisjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiB4ZXJjZXMtY18yLmxpYiBYYWxhbi1DXzEubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYKKyMgQUREIExJTkszMiB4ZXJjZXMtY18yLmxpYiBsaWJlYXkzMi5saWIgY3J5cHQzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4NgorCishRUxTRUlGICAiJChDRkcpIiA9PSAidGhyZWFkVGVzdCAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIgorCisjIFBST1AgQkFTRSBVc2VfTUZDIDIKKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAidGhyZWFkVGVzdF9fX1dpbjMyX0RlYnVnX05vX1hhbGFuIgorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAidGhyZWFkVGVzdF9fX1dpbjMyX0RlYnVnX05vX1hhbGFuIgorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgorIyBQUk9QIFVzZV9NRkMgMAorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIE91dHB1dF9EaXIgInRocmVhZFRlc3RfX19XaW4zMl9EZWJ1Z19Ob19YYWxhbiIKKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJ0aHJlYWRUZXN0X19fV2luMzJfRGVidWdfTm9fWGFsYW4iCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIFRhcmdldF9EaXIgIiIKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9HWCAvWkkgL09kIC9JICIuLi8uLi8uLi8uLi9pbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRCAiX0FGWERMTCIgL1lYIC9GRCAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1pJIC9PZCAvSSAiLi4vLi4vLi4vLi4vaW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvR1ogL2MKKyMgQUREIEJBU0UgUlNDIC9sIDB4YzA5IC9kICJfREVCVUciIC9kICJfQUZYRExMIgorIyBBREQgUlNDIC9sIDB4YzA5IC9kICJfREVCVUciCitCU0MzMj1ic2NtYWtlLmV4ZQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCisjIEFERCBCU0MzMiAvbm9sb2dvCitMSU5LMzI9bGluay5leGUKKyMgQUREIEJBU0UgTElOSzMyIC4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9EZWJ1Zy94c2VjX2xpYl8wMUQubGliIGxpYmVheTMyLmxpYiB4ZXJjZXMtY18yRC5saWIgWGFsYW4tQ18xRC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorIyBBREQgTElOSzMyIGxpYmVheTMyLmxpYiB4ZXJjZXMtY18yRC5saWIgY3J5cHQzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorCishRU5ESUYgCisKKyMgQmVnaW4gVGFyZ2V0CisKKyMgTmFtZSAidGhyZWFkVGVzdCAtIFdpbjMyIFJlbGVhc2UiCisjIE5hbWUgInRocmVhZFRlc3QgLSBXaW4zMiBEZWJ1ZyIKKyMgTmFtZSAidGhyZWFkVGVzdCAtIFdpbjMyIFJlbGVhc2UgTm8gWGFsYW4iCisjIE5hbWUgInRocmVhZFRlc3QgLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbiIKKyMgQmVnaW4gR3JvdXAgIlNvdXJjZSBGaWxlcyIKKworIyBQUk9QIERlZmF1bHRfRmlsdGVyICJjcHA7YztjeHg7cmM7ZGVmO3I7b2RsO2lkbDtocGo7YmF0IgorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHRvb2xzXHRocmVhZFRlc3RcdGhyZWFkdGVzdC5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEVuZCBHcm91cAorIyBCZWdpbiBHcm91cCAiSGVhZGVyIEZpbGVzIgorCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgImg7aHBwO2h4eDtobTtpbmwiCisjIEVuZCBHcm91cAorIyBCZWdpbiBHcm91cCAiUmVzb3VyY2UgRmlsZXMiCisKKyMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIgorIyBFbmQgR3JvdXAKKyMgRW5kIFRhcmdldAorIyBFbmQgUHJvamVjdApkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzYuMC94c2VjL3R4Zm1vdXQvdHhmbW91dC5kc3AgYi9jL1Byb2plY3RzL1ZDNi4wL3hzZWMvdHhmbW91dC90eGZtb3V0LmRzcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTI4NTIzCi0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzYuMC94c2VjL3R4Zm1vdXQvdHhmbW91dC5kc3AKQEAgLTAsMCArMSwxNTYgQEAKKyMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gUHJvamVjdCBGaWxlIC0gTmFtZT0idHhmbW91dCIgLSBQYWNrYWdlIE93bmVyPTw0PgorIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMAorIyAqKiBETyBOT1QgRURJVCAqKgorCisjIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIiAweDAxMDMKKworQ0ZHPXR4Zm1vdXQgLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbgorIU1FU1NBR0UgVGhpcyBpcyBub3QgYSB2YWxpZCBtYWtlZmlsZS4gVG8gYnVpbGQgdGhpcyBwcm9qZWN0IHVzaW5nIE5NQUtFLAorIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuCishTUVTU0FHRSAKKyFNRVNTQUdFIE5NQUtFIC9mICJ0eGZtb3V0Lm1hayIuCishTUVTU0FHRSAKKyFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFCishTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOgorIU1FU1NBR0UgCishTUVTU0FHRSBOTUFLRSAvZiAidHhmbW91dC5tYWsiIENGRz0idHhmbW91dCAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIgorIU1FU1NBR0UgCishTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToKKyFNRVNTQUdFIAorIU1FU1NBR0UgInR4Zm1vdXQgLSBXaW4zMiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgInR4Zm1vdXQgLSBXaW4zMiBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJ0eGZtb3V0IC0gV2luMzIgUmVsZWFzZSBObyBYYWxhbiIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJ0eGZtb3V0IC0gV2luMzIgRGVidWcgTm8gWGFsYW4iIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAKKworIyBCZWdpbiBQcm9qZWN0CisjIFBST1AgQWxsb3dQZXJDb25maWdEZXBlbmRlbmNpZXMgMAorIyBQUk9QIFNjY19Qcm9qTmFtZSAiIgorIyBQUk9QIFNjY19Mb2NhbFBhdGggIiIKK0NQUD1jbC5leGUKK1JTQz1yYy5leGUKKworIUlGICAiJChDRkcpIiA9PSAidHhmbW91dCAtIFdpbjMyIFJlbGVhc2UiCisKKyMgUFJPUCBCQVNFIFVzZV9NRkMgMAorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJSZWxlYXNlIgorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSIKKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKKyMgUFJPUCBVc2VfTUZDIDAKKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDAKKyMgUFJPUCBPdXRwdXRfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvUmVsZWFzZSIKKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvUmVsZWFzZS9vYmoiCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIFRhcmdldF9EaXIgIiIKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvR1ggL08yIC9JICIuLi8uLi8uLi8uLi9pbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jCisjIEFERCBCQVNFIFJTQyAvbCAweGMwOSAvZCAiTkRFQlVHIgorIyBBREQgUlNDIC9sIDB4YzA5IC9kICJOREVCVUciCitCU0MzMj1ic2NtYWtlLmV4ZQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCisjIEFERCBCU0MzMiAvbm9sb2dvCitMSU5LMzI9bGluay5leGUKKyMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYKKyMgQUREIExJTkszMiB4ZXJjZXMtY18yLmxpYiBYYWxhbi1DXzEubGliIGxpYmVheTMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2CisKKyFFTFNFSUYgICIkKENGRykiID09ICJ0eGZtb3V0IC0gV2luMzIgRGVidWciCisKKyMgUFJPUCBCQVNFIFVzZV9NRkMgMAorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJEZWJ1ZyIKKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnIgorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgorIyBQUk9QIFVzZV9NRkMgMAorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIE91dHB1dF9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9EZWJ1ZyIKKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvRGVidWcvb2JqIgorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKKyMgUFJPUCBUYXJnZXRfRGlyICIiCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvR20gL0dYIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1pJIC9PZCAvSSAiLi4vLi4vLi4vLi4vaW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvR1ogL2MKKyMgQUREIEJBU0UgUlNDIC9sIDB4YzA5IC9kICJfREVCVUciCisjIEFERCBSU0MgL2wgMHhjMDkgL2QgIl9ERUJVRyIKK0JTQzMyPWJzY21ha2UuZXhlCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KKyMgQUREIEJTQzMyIC9ub2xvZ28KK0xJTkszMj1saW5rLmV4ZQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorIyBBREQgTElOSzMyIHhlcmNlcy1jXzJELmxpYiBYYWxhbi1DXzFELmxpYiBsaWJlYXkzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorCishRUxTRUlGICAiJChDRkcpIiA9PSAidHhmbW91dCAtIFdpbjMyIFJlbGVhc2UgTm8gWGFsYW4iCisKKyMgUFJPUCBCQVNFIFVzZV9NRkMgMAorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJ0eGZtb3V0X19fV2luMzJfUmVsZWFzZV9Ob19YYWxhbiIKKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgInR4Zm1vdXRfX19XaW4zMl9SZWxlYXNlX05vX1hhbGFuIgorIyBQUk9QIEJBU0UgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgorIyBQUk9QIFVzZV9NRkMgMAorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAorIyBQUk9QIE91dHB1dF9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9SZWxlYXNlIgorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9SZWxlYXNlL29iaiIKKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgVGFyZ2V0X0RpciAiIgorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dYIC9PMiAvSSAiLi4vLi4vLi4vLi4vc3JjIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9HWCAvTzIgL0kgIi4uLy4uLy4uLy4uL2luY2x1ZGUiIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL2MKKyMgQUREIEJBU0UgUlNDIC9sIDB4YzA5IC9kICJOREVCVUciCisjIEFERCBSU0MgL2wgMHhjMDkgL2QgIk5ERUJVRyIKK0JTQzMyPWJzY21ha2UuZXhlCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KKyMgQUREIEJTQzMyIC9ub2xvZ28KK0xJTkszMj1saW5rLmV4ZQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgeGVyY2VzLWNfMi5saWIgWGFsYW4tQ18xLmxpYiBsaWJlYXkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4NgorIyBBREQgTElOSzMyIHhlcmNlcy1jXzIubGliIGxpYmVheTMyLmxpYiBjcnlwdDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2CisKKyFFTFNFSUYgICIkKENGRykiID09ICJ0eGZtb3V0IC0gV2luMzIgRGVidWcgTm8gWGFsYW4iCisKKyMgUFJPUCBCQVNFIFVzZV9NRkMgMAorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJ0eGZtb3V0X19fV2luMzJfRGVidWdfTm9fWGFsYW4iCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJ0eGZtb3V0X19fV2luMzJfRGVidWdfTm9fWGFsYW4iCisjIFBST1AgQkFTRSBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCisjIFBST1AgVXNlX01GQyAwCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxCisjIFBST1AgT3V0cHV0X0RpciAiLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L0RlYnVnIgorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9EZWJ1Zy9vYmoiCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIFRhcmdldF9EaXIgIiIKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HbSAvR1ggL1pJIC9PZCAvSSAiLi4vLi4vLi4vLi4vc3JjIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9HWiAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9HWCAvWkkgL09kIC9JICIuLi8uLi8uLi8uLi9pbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9HWiAvYworIyBBREQgQkFTRSBSU0MgL2wgMHhjMDkgL2QgIl9ERUJVRyIKKyMgQUREIFJTQyAvbCAweGMwOSAvZCAiX0RFQlVHIgorQlNDMzI9YnNjbWFrZS5leGUKKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbworIyBBREQgQlNDMzIgL25vbG9nbworTElOSzMyPWxpbmsuZXhlCisjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiB4ZXJjZXMtY18yRC5saWIgWGFsYW4tQ18xRC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorIyBBREQgTElOSzMyIHhlcmNlcy1jXzJELmxpYiBsaWJlYXkzMi5saWIgY3J5cHQzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorCishRU5ESUYgCisKKyMgQmVnaW4gVGFyZ2V0CisKKyMgTmFtZSAidHhmbW91dCAtIFdpbjMyIFJlbGVhc2UiCisjIE5hbWUgInR4Zm1vdXQgLSBXaW4zMiBEZWJ1ZyIKKyMgTmFtZSAidHhmbW91dCAtIFdpbjMyIFJlbGVhc2UgTm8gWGFsYW4iCisjIE5hbWUgInR4Zm1vdXQgLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbiIKKyMgQmVnaW4gR3JvdXAgIlNvdXJjZSBGaWxlcyIKKworIyBQUk9QIERlZmF1bHRfRmlsdGVyICJjcHA7YztjeHg7cmM7ZGVmO3I7b2RsO2lkbDtocGo7YmF0IgorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHRvb2xzXHR4Zm1vdXRcdHhmbW91dC5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEVuZCBHcm91cAorIyBCZWdpbiBHcm91cCAiSGVhZGVyIEZpbGVzIgorCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgImg7aHBwO2h4eDtobTtpbmwiCisjIEVuZCBHcm91cAorIyBCZWdpbiBHcm91cCAiUmVzb3VyY2UgRmlsZXMiCisKKyMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIgorIyBFbmQgR3JvdXAKKyMgRW5kIFRhcmdldAorIyBFbmQgUHJvamVjdApkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzYuMC94c2VjL3hrbGllbnQveGtsaWVudC5kc3AgYi9jL1Byb2plY3RzL1ZDNi4wL3hzZWMveGtsaWVudC94a2xpZW50LmRzcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmFlM2QxCi0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzYuMC94c2VjL3hrbGllbnQveGtsaWVudC5kc3AKQEAgLTAsMCArMSwxNTYgQEAKKyMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gUHJvamVjdCBGaWxlIC0gTmFtZT0ieGtsaWVudCIgLSBQYWNrYWdlIE93bmVyPTw0PgorIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMAorIyAqKiBETyBOT1QgRURJVCAqKgorCisjIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIiAweDAxMDMKKworQ0ZHPXhrbGllbnQgLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbgorIU1FU1NBR0UgVGhpcyBpcyBub3QgYSB2YWxpZCBtYWtlZmlsZS4gVG8gYnVpbGQgdGhpcyBwcm9qZWN0IHVzaW5nIE5NQUtFLAorIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuCishTUVTU0FHRSAKKyFNRVNTQUdFIE5NQUtFIC9mICJ4a2xpZW50Lm1hayIuCishTUVTU0FHRSAKKyFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFCishTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOgorIU1FU1NBR0UgCishTUVTU0FHRSBOTUFLRSAvZiAieGtsaWVudC5tYWsiIENGRz0ieGtsaWVudCAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIgorIU1FU1NBR0UgCishTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToKKyFNRVNTQUdFIAorIU1FU1NBR0UgInhrbGllbnQgLSBXaW4zMiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgInhrbGllbnQgLSBXaW4zMiBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJ4a2xpZW50IC0gV2luMzIgRGVidWcgTm8gWGFsYW4iIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAieGtsaWVudCAtIFdpbjMyIFJlbGVhc2UgTm8gWGFsYW4iIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAKKworIyBCZWdpbiBQcm9qZWN0CisjIFBST1AgQWxsb3dQZXJDb25maWdEZXBlbmRlbmNpZXMgMAorIyBQUk9QIFNjY19Qcm9qTmFtZSAiIgorIyBQUk9QIFNjY19Mb2NhbFBhdGggIiIKK0NQUD1jbC5leGUKK1JTQz1yYy5leGUKKworIUlGICAiJChDRkcpIiA9PSAieGtsaWVudCAtIFdpbjMyIFJlbGVhc2UiCisKKyMgUFJPUCBCQVNFIFVzZV9NRkMgMAorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJSZWxlYXNlIgorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSIKKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKKyMgUFJPUCBVc2VfTUZDIDAKKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDAKKyMgUFJPUCBPdXRwdXRfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvUmVsZWFzZSIKKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvUmVsZWFzZS9vYmoiCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIFRhcmdldF9EaXIgIiIKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvR1ggL08yIC9JICIuLi8uLi8uLi8uLi9pbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jCisjIEFERCBCQVNFIFJTQyAvbCAweGMwOSAvZCAiTkRFQlVHIgorIyBBREQgUlNDIC9sIDB4YzA5IC9kICJOREVCVUciCitCU0MzMj1ic2NtYWtlLmV4ZQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCisjIEFERCBCU0MzMiAvbm9sb2dvCitMSU5LMzI9bGluay5leGUKKyMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYKKyMgQUREIExJTkszMiB4ZXJjZXMtY18yLmxpYiBYYWxhbi1DXzEubGliIGxpYmVheTMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2CisKKyFFTFNFSUYgICIkKENGRykiID09ICJ4a2xpZW50IC0gV2luMzIgRGVidWciCisKKyMgUFJPUCBCQVNFIFVzZV9NRkMgMAorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJEZWJ1ZyIKKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnIgorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgorIyBQUk9QIFVzZV9NRkMgMAorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIE91dHB1dF9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9EZWJ1ZyIKKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvRGVidWcvb2JqIgorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKKyMgUFJPUCBUYXJnZXRfRGlyICIiCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvR20gL0dYIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1pJIC9PZCAvSSAiLi4vLi4vLi4vLi4vaW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvR1ogL2MKKyMgQUREIEJBU0UgUlNDIC9sIDB4YzA5IC9kICJfREVCVUciCisjIEFERCBSU0MgL2wgMHhjMDkgL2QgIl9ERUJVRyIKK0JTQzMyPWJzY21ha2UuZXhlCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KKyMgQUREIEJTQzMyIC9ub2xvZ28KK0xJTkszMj1saW5rLmV4ZQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorIyBBREQgTElOSzMyIHhlcmNlcy1jXzJELmxpYiBYYWxhbi1DXzFELmxpYiBsaWJlYXkzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorCishRUxTRUlGICAiJChDRkcpIiA9PSAieGtsaWVudCAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIgorCisjIFBST1AgQkFTRSBVc2VfTUZDIDAKKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAieGtsaWVudF9fX1dpbjMyX0RlYnVnX05vX1hhbGFuIgorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAieGtsaWVudF9fX1dpbjMyX0RlYnVnX05vX1hhbGFuIgorIyBQUk9QIEJBU0UgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgorIyBQUk9QIFVzZV9NRkMgMAorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQorIyBQUk9QIE91dHB1dF9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9EZWJ1ZyIKKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvRGVidWcvb2JqIgorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKKyMgUFJPUCBUYXJnZXRfRGlyICIiCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1pJIC9PZCAvSSAiLi4vLi4vLi4vLi4vaW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1pJIC9PZCAvSSAiLi4vLi4vLi4vLi4vaW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvR1ogL2MKKyMgQUREIEJBU0UgUlNDIC9sIDB4YzA5IC9kICJfREVCVUciCisjIEFERCBSU0MgL2wgMHhjMDkgL2QgIl9ERUJVRyIKK0JTQzMyPWJzY21ha2UuZXhlCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KKyMgQUREIEJTQzMyIC9ub2xvZ28KK0xJTkszMj1saW5rLmV4ZQorIyBBREQgQkFTRSBMSU5LMzIgeGVyY2VzLWNfMkQubGliIFhhbGFuLUNfMUQubGliIGxpYmVheTMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0CisjIEFERCBMSU5LMzIgeGVyY2VzLWNfMkQubGliIGxpYmVheTMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0CisKKyFFTFNFSUYgICIkKENGRykiID09ICJ4a2xpZW50IC0gV2luMzIgUmVsZWFzZSBObyBYYWxhbiIKKworIyBQUk9QIEJBU0UgVXNlX01GQyAwCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDAKKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgInhrbGllbnRfX19XaW4zMl9SZWxlYXNlX05vX1hhbGFuIgorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAieGtsaWVudF9fX1dpbjMyX1JlbGVhc2VfTm9fWGFsYW4iCisjIFBST1AgQkFTRSBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCisjIFBST1AgVXNlX01GQyAwCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwCisjIFBST1AgT3V0cHV0X0RpciAiLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L1JlbGVhc2UiCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L1JlbGVhc2Uvb2JqIgorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKKyMgUFJPUCBUYXJnZXRfRGlyICIiCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzMgL0dYIC9PMiAvSSAiLi4vLi4vLi4vLi4vaW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvR1ggL08yIC9JICIuLi8uLi8uLi8uLi9pbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jCisjIEFERCBCQVNFIFJTQyAvbCAweGMwOSAvZCAiTkRFQlVHIgorIyBBREQgUlNDIC9sIDB4YzA5IC9kICJOREVCVUciCitCU0MzMj1ic2NtYWtlLmV4ZQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCisjIEFERCBCU0MzMiAvbm9sb2dvCitMSU5LMzI9bGluay5leGUKKyMgQUREIEJBU0UgTElOSzMyIHhlcmNlcy1jXzIubGliIFhhbGFuLUNfMS5saWIgbGliZWF5MzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYKKyMgQUREIExJTkszMiB4ZXJjZXMtY18yLmxpYiBsaWJlYXkzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4NgorCishRU5ESUYgCisKKyMgQmVnaW4gVGFyZ2V0CisKKyMgTmFtZSAieGtsaWVudCAtIFdpbjMyIFJlbGVhc2UiCisjIE5hbWUgInhrbGllbnQgLSBXaW4zMiBEZWJ1ZyIKKyMgTmFtZSAieGtsaWVudCAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIgorIyBOYW1lICJ4a2xpZW50IC0gV2luMzIgUmVsZWFzZSBObyBYYWxhbiIKKyMgQmVnaW4gR3JvdXAgIlNvdXJjZSBGaWxlcyIKKworIyBQUk9QIERlZmF1bHRfRmlsdGVyICJjcHA7YztjeHg7cmM7ZGVmO3I7b2RsO2lkbDtocGo7YmF0IgorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHRvb2xzXHhrbGllbnRceGtsaWVudC5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEVuZCBHcm91cAorIyBCZWdpbiBHcm91cCAiSGVhZGVyIEZpbGVzIgorCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgImg7aHBwO2h4eDtobTtpbmwiCisjIEVuZCBHcm91cAorIyBCZWdpbiBHcm91cCAiUmVzb3VyY2UgRmlsZXMiCisKKyMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIgorIyBFbmQgR3JvdXAKKyMgRW5kIFRhcmdldAorIyBFbmQgUHJvamVjdApkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzYuMC94c2VjL3hzZWMuZHN3IGIvYy9Qcm9qZWN0cy9WQzYuMC94c2VjL3hzZWMuZHN3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExYzg2OGEKLS0tIC9kZXYvbnVsbAorKysgYi9jL1Byb2plY3RzL1ZDNi4wL3hzZWMveHNlYy5kc3cKQEAgLTAsMCArMSwxNjQgQEAKK01pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFdvcmtzcGFjZSBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwCisjIFdBUk5JTkc6IERPIE5PVCBFRElUIE9SIERFTEVURSBUSElTIFdPUktTUEFDRSBGSUxFIQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK1Byb2plY3Q6ICJjMTRuIj0iLlxjMTRuXGMxNG4uZHNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+CisKK1BhY2thZ2U9PDU+Cit7e3sKK319fQorCitQYWNrYWdlPTw0Pgore3t7CisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5CisgICAgUHJvamVjdF9EZXBfTmFtZSB4c2VjX2xpYgorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kKK319fQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK1Byb2plY3Q6ICJjaGVja3NpZyI9Ii5cY2hlY2tzaWdcY2hlY2tzaWcuZHNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+CisKK1BhY2thZ2U9PDU+Cit7e3sKK319fQorCitQYWNrYWdlPTw0Pgore3t7CisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5CisgICAgUHJvamVjdF9EZXBfTmFtZSB4c2VjX2xpYgorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kKK319fQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK1Byb2plY3Q6ICJjaXBoZXIiPSIuXGNpcGhlclxjaXBoZXIuZHNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+CisKK1BhY2thZ2U9PDU+Cit7e3sKK319fQorCitQYWNrYWdlPTw0Pgore3t7CisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5CisgICAgUHJvamVjdF9EZXBfTmFtZSB4c2VjX2xpYgorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kKK319fQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK1Byb2plY3Q6ICJzaWdpbmYiPSIuXHNpZ2luZlxzaWdpbmYuZHNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+CisKK1BhY2thZ2U9PDU+Cit7e3sKK319fQorCitQYWNrYWdlPTw0Pgore3t7CisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5CisgICAgUHJvamVjdF9EZXBfTmFtZSB4c2VjX2xpYgorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kKK319fQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK1Byb2plY3Q6ICJ0ZW1wbGF0ZXNpZ24iPSIuXHRlbXBsYXRlc2lnblx0ZW1wbGF0ZXNpZ24uZHNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+CisKK1BhY2thZ2U9PDU+Cit7e3sKK319fQorCitQYWNrYWdlPTw0Pgore3t7CisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5CisgICAgUHJvamVjdF9EZXBfTmFtZSB4c2VjX2xpYgorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kKK319fQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK1Byb2plY3Q6ICJ0aHJlYWRUZXN0Ij0iLlx0aHJlYWRUZXN0XHRocmVhZFRlc3QuZHNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+CisKK1BhY2thZ2U9PDU+Cit7e3sKK319fQorCitQYWNrYWdlPTw0Pgore3t7CisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5CisgICAgUHJvamVjdF9EZXBfTmFtZSB4c2VjX2xpYgorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kKK319fQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK1Byb2plY3Q6ICJ0eGZtb3V0Ij0iLlx0eGZtb3V0XHR4Zm1vdXQuZHNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+CisKK1BhY2thZ2U9PDU+Cit7e3sKK319fQorCitQYWNrYWdlPTw0Pgore3t7CisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5CisgICAgUHJvamVjdF9EZXBfTmFtZSB4c2VjX2xpYgorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kKK319fQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK1Byb2plY3Q6ICJ4a2xpZW50Ij0iLlx4a2xpZW50XHhrbGllbnQuZHNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+CisKK1BhY2thZ2U9PDU+Cit7e3sKK319fQorCitQYWNrYWdlPTw0Pgore3t7CisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5CisgICAgUHJvamVjdF9EZXBfTmFtZSB4c2VjX2xpYgorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kKK319fQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK1Byb2plY3Q6ICJ4c2VjX2xpYiI9Ii5ceHNlY19saWJceHNlY19saWIuZHNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+CisKK1BhY2thZ2U9PDU+Cit7e3sKK319fQorCitQYWNrYWdlPTw0Pgore3t7Cit9fX0KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitQcm9qZWN0OiAieHRlc3QiPSIuXHh0ZXN0XHh0ZXN0LmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0PgorCitQYWNrYWdlPTw1Pgore3t7Cit9fX0KKworUGFja2FnZT08ND4KK3t7eworICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQorICAgIFByb2plY3RfRGVwX05hbWUgeHNlY19saWIKKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5Cit9fX0KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitHbG9iYWw6CisKK1BhY2thZ2U9PDU+Cit7e3sKK319fQorCitQYWNrYWdlPTwzPgore3t7Cit9fX0KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCmRpZmYgLS1naXQgYS9jL1Byb2plY3RzL1ZDNi4wL3hzZWMveHNlY19saWIveHNlY19saWIuZHNwIGIvYy9Qcm9qZWN0cy9WQzYuMC94c2VjL3hzZWNfbGliL3hzZWNfbGliLmRzcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2Y5OGI0Ci0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzYuMC94c2VjL3hzZWNfbGliL3hzZWNfbGliLmRzcApAQCAtMCwwICsxLDE2NDggQEAKKyMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gUHJvamVjdCBGaWxlIC0gTmFtZT0ieHNlY19saWIiIC0gUGFja2FnZSBPd25lcj08ND4KKyMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gR2VuZXJhdGVkIEJ1aWxkIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDAKKyMgKiogRE8gTk9UIEVESVQgKioKKworIyBUQVJHVFlQRSAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiIDB4MDEwMgorCitDRkc9eHNlY19saWIgLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbgorIU1FU1NBR0UgVGhpcyBpcyBub3QgYSB2YWxpZCBtYWtlZmlsZS4gVG8gYnVpbGQgdGhpcyBwcm9qZWN0IHVzaW5nIE5NQUtFLAorIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuCishTUVTU0FHRSAKKyFNRVNTQUdFIE5NQUtFIC9mICJ4c2VjX2xpYi5tYWsiLgorIU1FU1NBR0UgCishTUVTU0FHRSBZb3UgY2FuIHNwZWNpZnkgYSBjb25maWd1cmF0aW9uIHdoZW4gcnVubmluZyBOTUFLRQorIU1FU1NBR0UgYnkgZGVmaW5pbmcgdGhlIG1hY3JvIENGRyBvbiB0aGUgY29tbWFuZCBsaW5lLiBGb3IgZXhhbXBsZToKKyFNRVNTQUdFIAorIU1FU1NBR0UgTk1BS0UgL2YgInhzZWNfbGliLm1hayIgQ0ZHPSJ4c2VjX2xpYiAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIgorIU1FU1NBR0UgCishTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToKKyFNRVNTQUdFIAorIU1FU1NBR0UgInhzZWNfbGliIC0gV2luMzIgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIpCishTUVTU0FHRSAieHNlY19saWIgLSBXaW4zMiBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIpCishTUVTU0FHRSAieHNlY19saWIgLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbiIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIpCishTUVTU0FHRSAieHNlY19saWIgLSBXaW4zMiBSZWxlYXNlIE5vIFhhbGFuIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IikKKyFNRVNTQUdFIAorCisjIEJlZ2luIFByb2plY3QKKyMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwCisjIFBST1AgU2NjX1Byb2pOYW1lICIiCisjIFBST1AgU2NjX0xvY2FsUGF0aCAiIgorQ1BQPWNsLmV4ZQorTVRMPW1pZGwuZXhlCitSU0M9cmMuZXhlCisKKyFJRiAgIiQoQ0ZHKSIgPT0gInhzZWNfbGliIC0gV2luMzIgUmVsZWFzZSIKKworIyBQUk9QIEJBU0UgVXNlX01GQyAwCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDAKKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UiCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlIgorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgorIyBQUk9QIFVzZV9NRkMgMAorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAorIyBQUk9QIE91dHB1dF9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9SZWxlYXNlIgorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9SZWxlYXNlL29iaiIKKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgVGFyZ2V0X0RpciAiIgorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTVQgL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJYU0VDX0xJQl9FWFBPUlRTIiAvWVggL0ZEIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9HWCAvTzIgL0kgIi4uLy4uLy4uLy4uL2luY2x1ZGUiIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiWFNFQ19MSUJfRVhQT1JUUyIgL0QgIlBST0pfQ0FOT04iIC9EICJQUk9KX0RTSUciIC9ZWCAvRkQgL2MKKyMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC93aW4zMgorIyBBREQgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC93aW4zMgorIyBBREQgQkFTRSBSU0MgL2wgMHhjMDkgL2QgIk5ERUJVRyIKKyMgQUREIFJTQyAvbCAweGMwOSAvZCAiTkRFQlVHIgorQlNDMzI9YnNjbWFrZS5leGUKKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbworIyBBREQgQlNDMzIgL25vbG9nbworTElOSzMyPWxpbmsuZXhlCisjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9kbGwgL21hY2hpbmU6STM4NgorIyBBREQgTElOSzMyIHhlcmNlcy1jXzIubGliIFhhbGFuLUNfMS5saWIgbGliZWF5MzIubGliIGNyeXB0MzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL2RsbCAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9SZWxlYXNlL3hzZWNfMV82LmRsbCIgL2ltcGxpYjoiLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L1JlbGVhc2UveHNlY18xLmxpYiIKKyMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZQorCishRUxTRUlGICAiJChDRkcpIiA9PSAieHNlY19saWIgLSBXaW4zMiBEZWJ1ZyIKKworIyBQUk9QIEJBU0UgVXNlX01GQyAwCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIkRlYnVnIgorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCisjIFBST1AgVXNlX01GQyAwCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxCisjIFBST1AgT3V0cHV0X0RpciAiLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L0RlYnVnIgorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9EZWJ1Zy9vYmoiCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIFRhcmdldF9EaXIgIiIKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01UZCAvVzMgL0dtIC9HWCAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiWFNFQ19MSUJfRVhQT1JUUyIgL1lYIC9GRCAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1pJIC9PZCAvSSAiLi4vLi4vLi4vLi4vaW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJYU0VDX0xJQl9FWFBPUlRTIiAvRCAiUFJPSl9DQU5PTiIgL0QgIlBST0pfRFNJRyIgL0ZSIC9ZWCAvRkQgL0daIC9jCisjIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzIKKyMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzIKKyMgQUREIEJBU0UgUlNDIC9sIDB4YzA5IC9kICJfREVCVUciCisjIEFERCBSU0MgL2wgMHhjMDkgL2QgIl9ERUJVRyIKK0JTQzMyPWJzY21ha2UuZXhlCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KKyMgQUREIEJTQzMyIC9ub2xvZ28KK0xJTkszMj1saW5rLmV4ZQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQKKyMgQUREIExJTkszMiB4ZXJjZXMtY18yRC5saWIgWGFsYW4tQ18xRC5saWIgbGliZWF5MzIubGliIGNyeXB0MzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3ZlcnNpb246MC4yIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L0RlYnVnL3hzZWNfMV82RC5kbGwiIC9pbXBsaWI6Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9EZWJ1Zy94c2VjXzFELmxpYiIgL3BkYnR5cGU6c2VwdAorIyBTVUJUUkFDVCBMSU5LMzIgL3BkYjpub25lIC9ub2RlZmF1bHRsaWIKKworIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInhzZWNfbGliIC0gV2luMzIgRGVidWcgTm8gWGFsYW4iCisKKyMgUFJPUCBCQVNFIFVzZV9NRkMgMAorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJ4c2VjX2xpYl9fX1dpbjMyX0RlYnVnX05vX1hhbGFuIgorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAieHNlY19saWJfX19XaW4zMl9EZWJ1Z19Ob19YYWxhbiIKKyMgUFJPUCBCQVNFIElnbm9yZV9FeHBvcnRfTGliIDAKKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKKyMgUFJPUCBVc2VfTUZDIDAKKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDEKKyMgUFJPUCBPdXRwdXRfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvRGVidWciCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L0RlYnVnL29iaiIKKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgVGFyZ2V0X0RpciAiIgorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9HbSAvR1ggL1pJIC9PZCAvSSAiJUxJQldXVyVcTGlicmFyeVxFeHRlcm5hbCIgL0kgIiVMSUJXV1clXExpYnJhcnlcU3JjIiAvSSAiLi4vLi4vLi4vLi4vc3JjIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfV0lORE9XUyIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIlhTRUNfTElCX0VYUE9SVFMiIC9EICJQUk9KX0NBTk9OIiAvRCAiUFJPSl9EU0lHIiAvRlIgL1lYIC9GRCAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1pJIC9PZCAvSSAiJUxJQldXVyVcTGlicmFyeVxFeHRlcm5hbCIgL0kgIiVMSUJXV1clXExpYnJhcnlcU3JjIiAvSSAiLi4vLi4vLi4vLi4vaW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJYU0VDX0xJQl9FWFBPUlRTIiAvRCAiUFJPSl9DQU5PTiIgL0QgIlBST0pfRFNJRyIgL0ZSIC9ZWCAvRkQgL0daIC9jCisjIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzIKKyMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzIKKyMgQUREIEJBU0UgUlNDIC9sIDB4YzA5IC9kICJfREVCVUciCisjIEFERCBSU0MgL2wgMHhjMDkgL2QgIl9ERUJVRyIKK0JTQzMyPWJzY21ha2UuZXhlCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KKyMgQUREIEJTQzMyIC9ub2xvZ28KK0xJTkszMj1saW5rLmV4ZQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgeGVyY2VzLWNfMkQubGliIFhhbGFuLUNfMUQubGliIGxpYmVheTMyLmxpYiAvbm9sb2dvIC92ZXJzaW9uOjAuMiAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9EZWJ1Zy94c2VjX2xpYl8wMUQuZGxsIiAvcGRidHlwZTpzZXB0CisjIEFERCBMSU5LMzIgeGVyY2VzLWNfMkQubGliIGxpYmVheTMyLmxpYiBjcnlwdDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC92ZXJzaW9uOjAuMiAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9EZWJ1Zy94c2VjXzFfNkQuZGxsIiAvaW1wbGliOiIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvRGVidWcveHNlY18xRC5saWIiIC9wZGJ0eXBlOnNlcHQKKyMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZQorCishRUxTRUlGICAiJChDRkcpIiA9PSAieHNlY19saWIgLSBXaW4zMiBSZWxlYXNlIE5vIFhhbGFuIgorCisjIFBST1AgQkFTRSBVc2VfTUZDIDAKKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAieHNlY19saWJfX19XaW4zMl9SZWxlYXNlX05vX1hhbGFuIgorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAieHNlY19saWJfX19XaW4zMl9SZWxlYXNlX05vX1hhbGFuIgorIyBQUk9QIEJBU0UgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIgorIyBQUk9QIFVzZV9NRkMgMAorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMAorIyBQUk9QIE91dHB1dF9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9SZWxlYXNlIgorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9SZWxlYXNlL29iaiIKKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgVGFyZ2V0X0RpciAiIgorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9HWCAvTzIgL0kgIi4uLy4uLy4uLy4uL3NyYyIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJYU0VDX0xJQl9FWFBPUlRTIiAvRCAiUFJPSl9DQU5PTiIgL0QgIlBST0pfRFNJRyIgL1lYIC9GRCAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvR1ggL08yIC9JICIuLi8uLi8uLi8uLi9pbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfV0lORE9XUyIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIlhTRUNfTElCX0VYUE9SVFMiIC9EICJQUk9KX0NBTk9OIiAvRCAiUFJPSl9EU0lHIiAvWVggL0ZEIC9jCisjIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzIKKyMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzIKKyMgQUREIEJBU0UgUlNDIC9sIDB4YzA5IC9kICJOREVCVUciCisjIEFERCBSU0MgL2wgMHhjMDkgL2QgIk5ERUJVRyIKK0JTQzMyPWJzY21ha2UuZXhlCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KKyMgQUREIEJTQzMyIC9ub2xvZ28KK0xJTkszMj1saW5rLmV4ZQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgeGVyY2VzLWNfMi5saWIgWGFsYW4tQ18xLmxpYiBsaWJlYXkzMi5saWIgL25vbG9nbyAvZGxsIC9tYWNoaW5lOkkzODYgL291dDoiLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L1JlbGVhc2UveHNlY19saWJfMDEuZGxsIgorIyBBREQgTElOSzMyIHhlcmNlcy1jXzIubGliIGxpYmVheTMyLmxpYiBjcnlwdDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9kbGwgL21hY2hpbmU6STM4NiAvb3V0OiIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvUmVsZWFzZS94c2VjXzFfNi5kbGwiIC9pbXBsaWI6Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9SZWxlYXNlL3hzZWNfMS5saWIiCisjIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUKKworIUVORElGIAorCisjIEJlZ2luIFRhcmdldAorCisjIE5hbWUgInhzZWNfbGliIC0gV2luMzIgUmVsZWFzZSIKKyMgTmFtZSAieHNlY19saWIgLSBXaW4zMiBEZWJ1ZyIKKyMgTmFtZSAieHNlY19saWIgLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbiIKKyMgTmFtZSAieHNlY19saWIgLSBXaW4zMiBSZWxlYXNlIE5vIFhhbGFuIgorIyBCZWdpbiBHcm91cCAiY2Fub24iCisKKyMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiIgorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGNhbm9uXFhTRUNDMTRuMjAwMTAzMTUuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGNhbm9uXFhTRUNDMTRuMjAwMTAzMTUuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGNhbm9uXFhTRUNDYW5vbi5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcY2Fub25cWFNFQ0Nhbm9uLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xjYW5vblxYU0VDWE1MTlNTdGFjay5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcY2Fub25cWFNFQ1hNTE5TU3RhY2suaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBFbmQgR3JvdXAKKyMgQmVnaW4gR3JvdXAgImRzaWciCisKKyMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiIgorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0LmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdBbGdvcml0aG1IYW5kbGVyRGVmYXVsdC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHQ29uc3RhbnRzLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdDb25zdGFudHMuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm8uaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9MaXN0LmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvTGlzdC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHS2V5SW5mb01nbXREYXRhLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvTWdtdERhdGEuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9OYW1lLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvTmFtZS5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHS2V5SW5mb1BHUERhdGEuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9QR1BEYXRhLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvU1BLSURhdGEuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9TUEtJRGF0YS5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHS2V5SW5mb1ZhbHVlLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvVmFsdWUuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9YNTA5LmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvWDUwOS5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHS2V5SW5mb0V4dC5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHS2V5SW5mb0V4dC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHT2JqZWN0LmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdPYmplY3QuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1JlZmVyZW5jZS5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHUmVmZXJlbmNlLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdSZWZlcmVuY2VMaXN0LmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdSZWZlcmVuY2VMaXN0LmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdTaWduYXR1cmUuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1NpZ25hdHVyZS5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHU2lnbmVkSW5mby5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHU2lnbmVkSW5mby5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHVHJhbnNmb3JtLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm0uaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1RyYW5zZm9ybUJhc2U2NC5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHVHJhbnNmb3JtQmFzZTY0LmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1DMTRuLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1DMTRuLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1FbnZlbG9wZS5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHVHJhbnNmb3JtRW52ZWxvcGUuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1RyYW5zZm9ybUxpc3QuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1RyYW5zZm9ybUxpc3QuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1RyYW5zZm9ybVhQYXRoLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1YUGF0aC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHVHJhbnNmb3JtWFBhdGhGaWx0ZXIuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1YU0wuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1RyYW5zZm9ybVhTTC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHWFBhdGhGaWx0ZXJFeHByLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdYUGF0aEZpbHRlckV4cHIuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1hQYXRoSGVyZS5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHWFBhdGhIZXJlLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgRW5kIEdyb3VwCisjIEJlZ2luIEdyb3VwICJlbmMiCisKKyMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiIgorIyBCZWdpbiBHcm91cCAiT3BlblNTTCIKKworIyBQUk9QIERlZmF1bHRfRmlsdGVyICIiCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZW5jXG9wZW5zc2xcT3BlblNTTENyeXB0b0Jhc2U2NC5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZW5jXG9wZW5zc2xcT3BlblNTTENyeXB0b0Jhc2U2NC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZW5jXG9wZW5zc2xcT3BlblNTTENyeXB0b0hhc2guY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGVuY1xvcGVuc3NsXE9wZW5TU0xDcnlwdG9IYXNoLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvSGFzaEhNQUMuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9IYXNoSE1BQy5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b0tleURTQS5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b0tleURTQS5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b0tleUhNQUMuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9LZXlITUFDLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvS2V5UlNBLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvS2V5UlNBLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xlbmNcb3BlbnNzbFxPcGVuU1NMQ3J5cHRvUHJvdmlkZXIuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGVuY1xvcGVuc3NsXE9wZW5TU0xDcnlwdG9Qcm92aWRlci5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b1N5bW1ldHJpY0tleS5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b1N5bW1ldHJpY0tleS5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b1g1MDkuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9YNTA5LmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgRW5kIEdyb3VwCisjIEJlZ2luIEdyb3VwICJYU0NyeXB0IgorCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgIiIKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xlbmNcWFNDcnlwdFxYU0NyeXB0Q3J5cHRvQmFzZTY0LmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xlbmNcWFNDcnlwdFxYU0NyeXB0Q3J5cHRvQmFzZTY0LmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgRW5kIEdyb3VwCisjIEJlZ2luIEdyb3VwICJXaW5DQVBJIgorCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgIiIKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvSGFzaC5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZW5jXFdpbkNBUElcV2luQ0FQSUNyeXB0b0hhc2guaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGVuY1xXaW5DQVBJXFdpbkNBUElDcnlwdG9IYXNoSE1BQy5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZW5jXFdpbkNBUElcV2luQ0FQSUNyeXB0b0hhc2hITUFDLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvS2V5RFNBLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvS2V5RFNBLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvS2V5SE1BQy5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZW5jXFdpbkNBUElcV2luQ0FQSUNyeXB0b0tleUhNQUMuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGVuY1xXaW5DQVBJXFdpbkNBUElDcnlwdG9LZXlSU0EuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGVuY1xXaW5DQVBJXFdpbkNBUElDcnlwdG9LZXlSU0EuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGVuY1xXaW5DQVBJXFdpbkNBUElDcnlwdG9Qcm92aWRlci5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZW5jXFdpbkNBUElcV2luQ0FQSUNyeXB0b1Byb3ZpZGVyLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvU3ltbWV0cmljS2V5LmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvU3ltbWV0cmljS2V5LmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvWDUwOS5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZW5jXFdpbkNBUElcV2luQ0FQSUNyeXB0b1g1MDkuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBFbmQgR3JvdXAKKyMgQmVnaW4gR3JvdXAgIk5TUyIKKworIyBQUk9QIERlZmF1bHRfRmlsdGVyICIiCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZW5jXE5TU1xOU1NDcnlwdG9IYXNoLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xlbmNcTlNTXE5TU0NyeXB0b0hhc2guaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGVuY1xOU1NcTlNTQ3J5cHRvSGFzaEhNQUMuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGVuY1xOU1NcTlNTQ3J5cHRvSGFzaEhNQUMuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGVuY1xOU1NcTlNTQ3J5cHRvS2V5RFNBLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xlbmNcTlNTXE5TU0NyeXB0b0tleURTQS5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZW5jXE5TU1xOU1NDcnlwdG9LZXlITUFDLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xlbmNcTlNTXE5TU0NyeXB0b0tleUhNQUMuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGVuY1xOU1NcTlNTQ3J5cHRvS2V5UlNBLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xlbmNcTlNTXE5TU0NyeXB0b0tleVJTQS5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZW5jXE5TU1xOU1NDcnlwdG9Qcm92aWRlci5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZW5jXE5TU1xOU1NDcnlwdG9Qcm92aWRlci5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZW5jXE5TU1xOU1NDcnlwdG9TeW1tZXRyaWNLZXkuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGVuY1xOU1NcTlNTQ3J5cHRvU3ltbWV0cmljS2V5LmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xlbmNcTlNTXE5TU0NyeXB0b1g1MDkuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGVuY1xOU1NcTlNTQ3J5cHRvWDUwOS5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEVuZCBHcm91cAorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDQ3J5cHRvQmFzZTY0LmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b0Jhc2U2NC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9FeGNlcHRpb24uY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDQ3J5cHRvRXhjZXB0aW9uLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b0hhc2guaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDQ3J5cHRvS2V5LmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b0tleURTQS5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9LZXlITUFDLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b0tleVJTQS5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9Qcm92aWRlci5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9TeW1tZXRyaWNLZXkuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDQ3J5cHRvVXRpbHMuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDQ3J5cHRvVXRpbHMuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDQ3J5cHRvWDUwOS5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9YNTA5LmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0tleUluZm9SZXNvbHZlci5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNLZXlJbmZvUmVzb2x2ZXJEZWZhdWx0LmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0tleUluZm9SZXNvbHZlckRlZmF1bHQuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBFbmQgR3JvdXAKKyMgQmVnaW4gR3JvdXAgInV0aWxzIgorCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgIiIKKyMgQmVnaW4gR3JvdXAgIndpbnV0aWxzIgorCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgIiIKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x1dGlsc1x3aW51dGlsc1xYU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x1dGlsc1x3aW51dGlsc1xYU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x1dGlsc1x3aW51dGlsc1xYU0VDU09BUFJlcXVlc3RvclNpbXBsZVdpbjMyLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x1dGlsc1x3aW51dGlsc1xYU0VDVVJJUmVzb2x2ZXJHZW5lcmljV2luMzIuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHV0aWxzXHdpbnV0aWxzXFhTRUNVUklSZXNvbHZlckdlbmVyaWNXaW4zMi5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEVuZCBHcm91cAorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNCaW5UWEZNSW5wdXRTdHJlYW0uY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNCaW5UWEZNSW5wdXRTdHJlYW0uaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNET01VdGlscy5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ0RPTVV0aWxzLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x1dGlsc1xYU0VDTmFtZVNwYWNlRXhwYW5kZXIuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNOYW1lU3BhY2VFeHBhbmRlci5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ1BsYXRmb3JtVXRpbHMuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNQbGF0Zm9ybVV0aWxzLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x1dGlsc1xYU0VDU2FmZUJ1ZmZlci5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ1NhZmVCdWZmZXIuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNTYWZlQnVmZmVyRm9ybWF0dGVyLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x1dGlsc1xYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlci5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ1NPQVBSZXF1ZXN0b3IuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNTT0FQUmVxdWVzdG9yU2ltcGxlLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x1dGlsc1xYU0VDU09BUFJlcXVlc3RvclNpbXBsZS5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ1RYRk1JbnB1dFNvdXJjZS5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ1RYRk1JbnB1dFNvdXJjZS5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ1hQYXRoTm9kZUxpc3QuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNYUGF0aE5vZGVMaXN0LmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgRW5kIEdyb3VwCisjIEJlZ2luIEdyb3VwICJmcmFtZXdvcmsiCisKKyMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiIgorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGZyYW1ld29ya1xYU0VDQWxnb3JpdGhtSGFuZGxlci5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNBbGdvcml0aG1NYXBwZXIuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGZyYW1ld29ya1xYU0VDQWxnb3JpdGhtTWFwcGVyLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ0RlZnMuaHBwCisKKyFJRiAgIiQoQ0ZHKSIgPT0gInhzZWNfbGliIC0gV2luMzIgUmVsZWFzZSIKKworIyBCZWdpbiBDdXN0b20gQnVpbGQgLSBDb3B5aW5nIGluY2x1ZGUgZmlsZXMgZnJvbSBzcmMgZGlyZWN0b3J5CitJbnB1dFBhdGg9Li5cLi5cLi5cLi5cc3JjXGZyYW1ld29ya1xYU0VDRGVmcy5ocHAKKworIi4uXC4uXC4uXC4uXGluY2x1ZGVceHNlY1xmcmFtZXdvcmtcZHVtbXkuaHBwIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIiAiJChPVVRESVIpIgorCW1rZGlyIC4uXC4uXC4uXC4uXGluY2x1ZGUgCisJbWtkaXIgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjIAorCWRlbCAvcSAvcyAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWNcKi4qIAorCXhjb3B5IC9JIC9zIC9mICAuLlwuLlwuLlwuLlxzcmNcKi5ocHAgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjIAorCQorIyBFbmQgQ3VzdG9tIEJ1aWxkCisKKyFFTFNFSUYgICIkKENGRykiID09ICJ4c2VjX2xpYiAtIFdpbjMyIERlYnVnIgorCisjIEJlZ2luIEN1c3RvbSBCdWlsZCAtIENvcHlpbmcgaW5jbHVkZSBmaWxlcyBmcm9tIHNyYyBkaXJlY3RvcnkKK0lucHV0UGF0aD0uLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNEZWZzLmhwcAorCisiLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjXGZyYW1ld29ya1xkdW1teS5ocHAiIDogJChTT1VSQ0UpICIkKElOVERJUikiICIkKE9VVERJUikiCisJbWtkaXIgLi5cLi5cLi5cLi5caW5jbHVkZSAKKwlta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWMgCisJZGVsIC9xIC9zIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlY1wqLiogCisJeGNvcHkgL0kgL3MgL2YgIC4uXC4uXC4uXC4uXHNyY1wqLmhwcCAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWMgCisJCisjIEVuZCBDdXN0b20gQnVpbGQKKworIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInhzZWNfbGliIC0gV2luMzIgRGVidWcgTm8gWGFsYW4iCisKKyMgQmVnaW4gQ3VzdG9tIEJ1aWxkIC0gQ29weWluZyBpbmNsdWRlIGZpbGVzIGZyb20gc3JjIGRpcmVjdG9yeQorSW5wdXRQYXRoPS4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ0RlZnMuaHBwCisKKyIuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWNcZnJhbWV3b3JrXGR1bW15LmhwcCIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIgIiQoT1VURElSKSIKKwlta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlIAorCW1rZGlyIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlYyAKKwlkZWwgL3EgL3MgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjXCouKiAKKwl4Y29weSAvSSAvcyAvZiAgLi5cLi5cLi5cLi5cc3JjXCouaHBwIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlYyAKKwkKKyMgRW5kIEN1c3RvbSBCdWlsZAorCishRUxTRUlGICAiJChDRkcpIiA9PSAieHNlY19saWIgLSBXaW4zMiBSZWxlYXNlIE5vIFhhbGFuIgorCisjIEJlZ2luIEN1c3RvbSBCdWlsZCAtIENvcHlpbmcgaW5jbHVkZSBmaWxlcyBmcm9tIHNyYyBkaXJlY3RvcnkKK0lucHV0UGF0aD0uLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNEZWZzLmhwcAorCisiLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjXGZyYW1ld29ya1xkdW1teS5ocHAiIDogJChTT1VSQ0UpICIkKElOVERJUikiICIkKE9VVERJUikiCisJbWtkaXIgLi5cLi5cLi5cLi5caW5jbHVkZSAKKwlta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWMgCisJZGVsIC9xIC9zIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlY1wqLiogCisJeGNvcHkgL0kgL3MgL2YgIC4uXC4uXC4uXC4uXHNyY1wqLmhwcCAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWMgCisJCisjIEVuZCBDdXN0b20gQnVpbGQKKworIUVORElGIAorCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGZyYW1ld29ya1xYU0VDRW52LmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ0Vudi5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNFcnJvci5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNFcnJvci5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNFeGNlcHRpb24uY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXGZyYW1ld29ya1xYU0VDRXhjZXB0aW9uLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ1Byb3ZpZGVyLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ1Byb3ZpZGVyLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ1VSSVJlc29sdmVyLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ1VSSVJlc29sdmVyWGVyY2VzLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ1VSSVJlc29sdmVyWGVyY2VzLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ1czMkNvbmZpZy5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEVuZCBHcm91cAorIyBCZWdpbiBHcm91cCAidHJhbnNmb3JtZXJzIgorCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgIiIKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTUJhc2UuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNQmFzZS5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1CYXNlNjQuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNQmFzZTY0LmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTUMxNG4uY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNQzE0bi5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1DaGFpbi5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1DaGFpbi5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1DaXBoZXIuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNQ2lwaGVyLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTUNvbmNhdENoYWlucy5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1Db25jYXRDaGFpbnMuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNRG9jT2JqZWN0LmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTURvY09iamVjdC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1FbnZlbG9wZS5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1FbnZlbG9wZS5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1NRDUuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNTUQ1LmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTU91dHB1dEZpbGUuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNT3V0cHV0RmlsZS5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1QYXJzZXIuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNUGFyc2VyLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTVNCLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTVNCLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTVNIQTEuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNU0hBMS5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1VUkwuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNVVJMLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTVhQYXRoLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTVhQYXRoLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTVhQYXRoRmlsdGVyLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTVhQYXRoRmlsdGVyLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTVhTTC5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1YU0wuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBFbmQgR3JvdXAKKyMgQmVnaW4gR3JvdXAgInJlc291cmNlcyIKKworIyBQUk9QIERlZmF1bHRfRmlsdGVyICIiCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXHZlcnNpb24ucmMKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEVuZCBHcm91cAorIyBCZWdpbiBHcm91cCAieGVuYyIKKworIyBQUk9QIERlZmF1bHRfRmlsdGVyICIiCisjIEJlZ2luIEdyb3VwICJpbXBsIgorCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgIiIKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0LmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0LmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0NpcGhlckRhdGFJbXBsLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0NpcGhlckRhdGFJbXBsLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0NpcGhlckltcGwuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhlbmNcaW1wbFxYRU5DQ2lwaGVySW1wbC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNDaXBoZXJSZWZlcmVuY2VJbXBsLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0NpcGhlclJlZmVyZW5jZUltcGwuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhlbmNcaW1wbFxYRU5DQ2lwaGVyVmFsdWVJbXBsLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0NpcGhlclZhbHVlSW1wbC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNFbmNyeXB0ZWREYXRhSW1wbC5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNFbmNyeXB0ZWREYXRhSW1wbC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNFbmNyeXB0ZWRLZXlJbXBsLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0VuY3J5cHRlZEtleUltcGwuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhlbmNcaW1wbFxYRU5DRW5jcnlwdGVkVHlwZUltcGwuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhlbmNcaW1wbFxYRU5DRW5jcnlwdGVkVHlwZUltcGwuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhlbmNcaW1wbFxYRU5DRW5jcnlwdGlvbk1ldGhvZEltcGwuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhlbmNcaW1wbFxYRU5DRW5jcnlwdGlvbk1ldGhvZEltcGwuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBFbmQgR3JvdXAKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4ZW5jXFhFTkNDaXBoZXIuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhlbmNcWEVOQ0NpcGhlckRhdGEuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhlbmNcWEVOQ0NpcGhlclJlZmVyZW5jZS5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGVuY1xYRU5DQ2lwaGVyVmFsdWUuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhlbmNcWEVOQ0VuY3J5cHRlZERhdGEuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhlbmNcWEVOQ0VuY3J5cHRlZEtleS5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGVuY1xYRU5DRW5jcnlwdGVkVHlwZS5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGVuY1xYRU5DRW5jcnlwdGlvbk1ldGhvZC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEVuZCBHcm91cAorIyBCZWdpbiBHcm91cCAieGttcyIKKworIyBQUk9QIERlZmF1bHRfRmlsdGVyICIiCisjIEJlZ2luIEdyb3VwICJpbXBsIE5vLiAxIgorCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgIiIKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU0F1dGhlbnRpY2F0aW9uSW1wbC5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNBdXRoZW50aWNhdGlvbkltcGwuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TQ29tcG91bmRSZXF1ZXN0SW1wbC5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNDb21wb3VuZFJlcXVlc3RJbXBsLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU0NvbXBvdW5kUmVzdWx0SW1wbC5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNDb21wb3VuZFJlc3VsdEltcGwuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGwuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGwuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TS2V5QmluZGluZ0ltcGwuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TS2V5QmluZGluZ0ltcGwuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TTG9jYXRlUmVxdWVzdEltcGwuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TTG9jYXRlUmVxdWVzdEltcGwuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TTG9jYXRlUmVzdWx0SW1wbC5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNMb2NhdGVSZXN1bHRJbXBsLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU01lc3NhZ2VGYWN0b3J5SW1wbC5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNNZXNzYWdlRmFjdG9yeUltcGwuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbi5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uSW1wbC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNQZW5kaW5nUmVxdWVzdEltcGwuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUGVuZGluZ1JlcXVlc3RJbXBsLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1Byb3RvdHlwZUtleUJpbmRpbmdJbXBsLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1Byb3RvdHlwZUtleUJpbmRpbmdJbXBsLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1F1ZXJ5S2V5QmluZGluZ0ltcGwuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUXVlcnlLZXlCaW5kaW5nSW1wbC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZWNvdmVyS2V5QmluZGluZ0ltcGwuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVjb3ZlcktleUJpbmRpbmdJbXBsLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlY292ZXJSZXF1ZXN0SW1wbC5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZWNvdmVyUmVxdWVzdEltcGwuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVjb3ZlclJlc3VsdEltcGwuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVjb3ZlclJlc3VsdEltcGwuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVnaXN0ZXJSZXF1ZXN0SW1wbC5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZWdpc3RlclJlcXVlc3RJbXBsLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlZ2lzdGVyUmVzdWx0SW1wbC5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZWdpc3RlclJlc3VsdEltcGwuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVpc3N1ZUtleUJpbmRpbmdJbXBsLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlaXNzdWVLZXlCaW5kaW5nSW1wbC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZWlzc3VlUmVxdWVzdEltcGwuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVpc3N1ZVJlcXVlc3RJbXBsLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlaXNzdWVSZXN1bHRJbXBsLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlaXNzdWVSZXN1bHRJbXBsLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1Jlc3BvbmRXaXRoSW1wbC5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXNwb25kV2l0aEltcGwuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVzcG9uc2VNZWNoYW5pc21JbXBsLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1Jlc3BvbnNlTWVjaGFuaXNtSW1wbC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXN1bHRJbXBsLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1Jlc3VsdEltcGwuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVzdWx0VHlwZUltcGwuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVzdWx0VHlwZUltcGwuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmV2b2tlS2V5QmluZGluZ0ltcGwuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmV2b2tlS2V5QmluZGluZ0ltcGwuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmV2b2tlUmVxdWVzdEltcGwuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmV2b2tlUmVxdWVzdEltcGwuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmV2b2tlUmVzdWx0SW1wbC5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXZva2VSZXN1bHRJbXBsLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JTQUtleVBhaXJJbXBsLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JTQUtleVBhaXJJbXBsLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1N0YXR1c0ltcGwuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TU3RhdHVzSW1wbC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNTdGF0dXNSZXF1ZXN0SW1wbC5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNTdGF0dXNSZXF1ZXN0SW1wbC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNTdGF0dXNSZXN1bHRJbXBsLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1N0YXR1c1Jlc3VsdEltcGwuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TVW52ZXJpZmllZEtleUJpbmRpbmdJbXBsLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nSW1wbC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNVc2VLZXlXaXRoSW1wbC5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNVc2VLZXlXaXRoSW1wbC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNWYWxpZGF0ZVJlcXVlc3RJbXBsLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1ZhbGlkYXRlUmVxdWVzdEltcGwuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TVmFsaWRhdGVSZXN1bHRJbXBsLmNwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1ZhbGlkYXRlUmVzdWx0SW1wbC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNWYWxpZGl0eUludGVydmFsSW1wbC5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNWYWxpZGl0eUludGVydmFsSW1wbC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEVuZCBHcm91cAorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU0F1dGhlbnRpY2F0aW9uLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNDb21wb3VuZFJlcXVlc3QuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU0NvbXBvdW5kUmVzdWx0LmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNDb25zdGFudHMuY3BwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU0NvbnN0YW50cy5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xYS01TS2V5QmluZGluZy5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZS5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xYS01TTG9jYXRlUmVxdWVzdC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xYS01TTG9jYXRlUmVzdWx0LmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNNZXNzYWdlRmFjdG9yeS5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xYS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbi5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUGVuZGluZ1JlcXVlc3QuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1Byb3RvdHlwZUtleUJpbmRpbmcuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1F1ZXJ5S2V5QmluZGluZy5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUmVjb3ZlcktleUJpbmRpbmcuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1JlY292ZXJSZXF1ZXN0LmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZWNvdmVyUmVzdWx0LmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZWdpc3RlclJlcXVlc3QuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1JlZ2lzdGVyUmVzdWx0LmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZWlzc3VlS2V5QmluZGluZy5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUmVpc3N1ZVJlcXVlc3QuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1JlaXNzdWVSZXN1bHQuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGUuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1Jlc3BvbmRXaXRoLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZXNwb25zZU1lY2hhbmlzbS5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUmVzdWx0LmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZXN1bHRUeXBlLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZXZva2VLZXlCaW5kaW5nLmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZXZva2VSZXF1ZXN0LmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZXZva2VSZXN1bHQuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1JTQUtleVBhaXIuaHBwCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCitTT1VSQ0U9Li5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1N0YXR1cy5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xYS01TU3RhdHVzUmVxdWVzdC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xYS01TU3RhdHVzUmVzdWx0LmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNVbnZlcmlmaWVkS2V5QmluZGluZy5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xYS01TVXNlS2V5V2l0aC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xYS01TVmFsaWRhdGVSZXF1ZXN0LmhwcAorIyBFbmQgU291cmNlIEZpbGUKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNWYWxpZGF0ZVJlc3VsdC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEJlZ2luIFNvdXJjZSBGaWxlCisKK1NPVVJDRT0uLlwuLlwuLlwuLlxzcmNceGttc1xYS01TVmFsaWRpdHlJbnRlcnZhbC5ocHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEVuZCBHcm91cAorIyBFbmQgVGFyZ2V0CisjIEVuZCBQcm9qZWN0CmRpZmYgLS1naXQgYS9jL1Byb2plY3RzL1ZDNi4wL3hzZWMveHRlc3QveHRlc3QuZHNwIGIvYy9Qcm9qZWN0cy9WQzYuMC94c2VjL3h0ZXN0L3h0ZXN0LmRzcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTI3ZWY2Ci0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzYuMC94c2VjL3h0ZXN0L3h0ZXN0LmRzcApAQCAtMCwwICsxLDE2MiBAQAorIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJ4dGVzdCIgLSBQYWNrYWdlIE93bmVyPTw0PgorIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMAorIyAqKiBETyBOT1QgRURJVCAqKgorCisjIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIiAweDAxMDMKKworQ0ZHPXh0ZXN0IC0gV2luMzIgRGVidWcgTm8gWGFsYW4KKyFNRVNTQUdFIFRoaXMgaXMgbm90IGEgdmFsaWQgbWFrZWZpbGUuIFRvIGJ1aWxkIHRoaXMgcHJvamVjdCB1c2luZyBOTUFLRSwKKyFNRVNTQUdFIHVzZSB0aGUgRXhwb3J0IE1ha2VmaWxlIGNvbW1hbmQgYW5kIHJ1bgorIU1FU1NBR0UgCishTUVTU0FHRSBOTUFLRSAvZiAieHRlc3QubWFrIi4KKyFNRVNTQUdFIAorIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UKKyFNRVNTQUdFIGJ5IGRlZmluaW5nIHRoZSBtYWNybyBDRkcgb24gdGhlIGNvbW1hbmQgbGluZS4gRm9yIGV4YW1wbGU6CishTUVTU0FHRSAKKyFNRVNTQUdFIE5NQUtFIC9mICJ4dGVzdC5tYWsiIENGRz0ieHRlc3QgLSBXaW4zMiBEZWJ1ZyBObyBYYWxhbiIKKyFNRVNTQUdFIAorIU1FU1NBR0UgUG9zc2libGUgY2hvaWNlcyBmb3IgY29uZmlndXJhdGlvbiBhcmU6CishTUVTU0FHRSAKKyFNRVNTQUdFICJ4dGVzdCAtIFdpbjMyIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAieHRlc3QgLSBXaW4zMiBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJ4dGVzdCAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgInh0ZXN0IC0gV2luMzIgUmVsZWFzZSBObyBYYWxhbiIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFIAorCisjIEJlZ2luIFByb2plY3QKKyMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwCisjIFBST1AgU2NjX1Byb2pOYW1lICIiCisjIFBST1AgU2NjX0xvY2FsUGF0aCAiIgorQ1BQPWNsLmV4ZQorUlNDPXJjLmV4ZQorCishSUYgICIkKENGRykiID09ICJ4dGVzdCAtIFdpbjMyIFJlbGVhc2UiCisKKyMgUFJPUCBCQVNFIFVzZV9NRkMgMAorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJSZWxlYXNlIgorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSIKKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKKyMgUFJPUCBVc2VfTUZDIDAKKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDAKKyMgUFJPUCBPdXRwdXRfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvUmVsZWFzZSIKKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvUmVsZWFzZS9vYmoiCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIFRhcmdldF9EaXIgIiIKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvR1ggL08yIC9JICIuLi8uLi8uLi8uLi9pbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jCisjIFNVQlRSQUNUIENQUCAvRnIKKyMgQUREIEJBU0UgUlNDIC9sIDB4YzA5IC9kICJOREVCVUciCisjIEFERCBSU0MgL2wgMHhjMDkgL2QgIk5ERUJVRyIKK0JTQzMyPWJzY21ha2UuZXhlCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KKyMgQUREIEJTQzMyIC9ub2xvZ28KK0xJTkszMj1saW5rLmV4ZQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4NgorIyBBREQgTElOSzMyIHhlcmNlcy1jXzIubGliIFhhbGFuLUNfMS5saWIgbGliZWF5MzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYKKyMgU1VCVFJBQ1QgTElOSzMyIC9kZWJ1ZworCishRUxTRUlGICAiJChDRkcpIiA9PSAieHRlc3QgLSBXaW4zMiBEZWJ1ZyIKKworIyBQUk9QIEJBU0UgVXNlX01GQyAwCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIkRlYnVnIgorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCisjIFBST1AgVXNlX01GQyAwCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxCisjIFBST1AgT3V0cHV0X0RpciAiLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L0RlYnVnIgorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNi9EZWJ1Zy9vYmoiCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAorIyBQUk9QIFRhcmdldF9EaXIgIiIKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HbSAvR1ggL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9HWiAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9HWCAvWkkgL09kIC9JICIlTElCV1dXJVxMaWJyYXJ5XEV4dGVybmFsIiAvSSAiJUxJQldXVyVcTGlicmFyeVxTcmMiIC9JICIuLi8uLi8uLi8uLi9pbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRCAiV1dXX1dJTl9BU1lOQyIgL0ZSIC9ZWCAvRkQgL0daIC9jCisjIEFERCBCQVNFIFJTQyAvbCAweGMwOSAvZCAiX0RFQlVHIgorIyBBREQgUlNDIC9sIDB4YzA5IC9kICJfREVCVUciCitCU0MzMj1ic2NtYWtlLmV4ZQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvCisjIEFERCBCU0MzMiAvbm9sb2dvCitMSU5LMzI9bGluay5leGUKKyMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQKKyMgQUREIExJTkszMiBsaWJlYXkzMi5saWIgeGVyY2VzLWNfMkQubGliIFhhbGFuLUNfMUQubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIG5zczMubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQKKworIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInh0ZXN0IC0gV2luMzIgRGVidWcgTm8gWGFsYW4iCisKKyMgUFJPUCBCQVNFIFVzZV9NRkMgMAorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJ4dGVzdF9fX1dpbjMyX0RlYnVnX05vX1hhbGFuIgorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAieHRlc3RfX19XaW4zMl9EZWJ1Z19Ob19YYWxhbiIKKyMgUFJPUCBCQVNFIElnbm9yZV9FeHBvcnRfTGliIDAKKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiIKKyMgUFJPUCBVc2VfTUZDIDAKKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDEKKyMgUFJPUCBPdXRwdXRfRGlyICIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzYvRGVidWciCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L0RlYnVnL29iaiIKKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgVGFyZ2V0X0RpciAiIgorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9HbSAvR1ggL1pJIC9PZCAvSSAiJUxJQldXVyVcTGlicmFyeVxFeHRlcm5hbCIgL0kgIiVMSUJXV1clXExpYnJhcnlcU3JjIiAvSSAiLi4vLi4vLi4vLi4vc3JjIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRCAiV1dXX1dJTl9BU1lOQyIgL0ZSIC9ZWCAvRkQgL0daIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL0dYIC9aSSAvT2QgL0kgIiVMSUJXV1clXExpYnJhcnlcRXh0ZXJuYWwiIC9JICIlTElCV1dXJVxMaWJyYXJ5XFNyYyIgL0kgIi4uLy4uLy4uLy4uL2luY2x1ZGUiIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9EICJXV1dfV0lOX0FTWU5DIiAvRlIgL1lYIC9GRCAvR1ogL2MKKyMgQUREIEJBU0UgUlNDIC9sIDB4YzA5IC9kICJfREVCVUciCisjIEFERCBSU0MgL2wgMHhjMDkgL2QgIl9ERUJVRyIKK0JTQzMyPWJzY21ha2UuZXhlCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KKyMgQUREIEJTQzMyIC9ub2xvZ28KK0xJTkszMj1saW5rLmV4ZQorIyBBREQgQkFTRSBMSU5LMzIgLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L0RlYnVnL3hzZWNfbGliXzAxRC5saWIgbGliZWF5MzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIHhlcmNlcy1jXzJELmxpYiBYYWxhbi1DXzFELmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0CisjIEFERCBMSU5LMzIgbGliZWF5MzIubGliIHhlcmNlcy1jXzJELmxpYiBjcnlwdDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0CisKKyFFTFNFSUYgICIkKENGRykiID09ICJ4dGVzdCAtIFdpbjMyIFJlbGVhc2UgTm8gWGFsYW4iCisKKyMgUFJPUCBCQVNFIFVzZV9NRkMgMAorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJ4dGVzdF9fX1dpbjMyX1JlbGVhc2VfTm9fWGFsYW4iCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJ4dGVzdF9fX1dpbjMyX1JlbGVhc2VfTm9fWGFsYW4iCisjIFBST1AgQkFTRSBJZ25vcmVfRXhwb3J0X0xpYiAwCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiCisjIFBST1AgVXNlX01GQyAwCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwCisjIFBST1AgT3V0cHV0X0RpciAiLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L1JlbGVhc2UiCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L1JlbGVhc2Uvb2JqIgorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKKyMgUFJPUCBUYXJnZXRfRGlyICIiCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzMgL0dYIC9PMiAvSSAiLi4vLi4vLi4vLi4vc3JjIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jCisjIFNVQlRSQUNUIEJBU0UgQ1BQIC9GcgorIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvR1ggL08yIC9JICIuLi8uLi8uLi8uLi9pbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jCisjIFNVQlRSQUNUIENQUCAvRnIKKyMgQUREIEJBU0UgUlNDIC9sIDB4YzA5IC9kICJOREVCVUciCisjIEFERCBSU0MgL2wgMHhjMDkgL2QgIk5ERUJVRyIKK0JTQzMyPWJzY21ha2UuZXhlCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KKyMgQUREIEJTQzMyIC9ub2xvZ28KK0xJTkszMj1saW5rLmV4ZQorIyBBREQgQkFTRSBMSU5LMzIgLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM2L1JlbGVhc2UveHNlY19saWJfMDEubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIHhlcmNlcy1jXzIubGliIFhhbGFuLUNfMS5saWIgbGliZWF5MzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYKKyMgU1VCVFJBQ1QgQkFTRSBMSU5LMzIgL2RlYnVnCisjIEFERCBMSU5LMzIgeGVyY2VzLWNfMi5saWIgbGliZWF5MzIubGliIGNyeXB0MzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYKKyMgU1VCVFJBQ1QgTElOSzMyIC9kZWJ1ZworCishRU5ESUYgCisKKyMgQmVnaW4gVGFyZ2V0CisKKyMgTmFtZSAieHRlc3QgLSBXaW4zMiBSZWxlYXNlIgorIyBOYW1lICJ4dGVzdCAtIFdpbjMyIERlYnVnIgorIyBOYW1lICJ4dGVzdCAtIFdpbjMyIERlYnVnIE5vIFhhbGFuIgorIyBOYW1lICJ4dGVzdCAtIFdpbjMyIFJlbGVhc2UgTm8gWGFsYW4iCisjIEJlZ2luIEdyb3VwICJTb3VyY2UgRmlsZXMiCisKKyMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiY3BwO2M7Y3h4O3JjO2RlZjtyO29kbDtpZGw7aHBqO2JhdCIKKyMgQmVnaW4gU291cmNlIEZpbGUKKworU09VUkNFPS4uXC4uXC4uXC4uXHNyY1x0b29sc1x4dGVzdFx4dGVzdC5jcHAKKyMgRW5kIFNvdXJjZSBGaWxlCisjIEVuZCBHcm91cAorIyBCZWdpbiBHcm91cCAiSGVhZGVyIEZpbGVzIgorCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgImg7aHBwO2h4eDtobTtpbmwiCisjIEVuZCBHcm91cAorIyBCZWdpbiBHcm91cCAiUmVzb3VyY2UgRmlsZXMiCisKKyMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIgorIyBFbmQgR3JvdXAKKyMgRW5kIFRhcmdldAorIyBFbmQgUHJvamVjdApkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzcuMC9TYW1wbGVzL1NhbXBsZXMuc2xuIGIvYy9Qcm9qZWN0cy9WQzcuMC9TYW1wbGVzL1NhbXBsZXMuc2xuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhMDhiZmYKLS0tIC9kZXYvbnVsbAorKysgYi9jL1Byb2plY3RzL1ZDNy4wL1NhbXBsZXMvU2FtcGxlcy5zbG4KQEAgLTAsMCArMSw1NyBAQAorTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gNy4wMAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzaW1wbGVEZWNyeXB0IiwgInNpbXBsZURlY3J5cHRcc2ltcGxlRGVjcnlwdC52Y3Byb2oiLCAie0JEQzc4NTM1LURDNTUtNEZENS05N0U0LURBRTUzRTQyQTYwN30iCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNpbXBsZUVuY3J5cHQiLCAic2ltcGxlRW5jcnlwdFxzaW1wbGVFbmNyeXB0LnZjcHJvaiIsICJ7QUZGRUI5MzYtQUNCNS00MkQzLTk1ODgtRjU4NDI3ODk2MEI5fSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAic2ltcGxlSE1BQyIsICJzaW1wbGVITUFDXHNpbXBsZUhNQUMudmNwcm9qIiwgIntGMENDODA4MC0wODlFLTQ3M0UtODU2NS0xQzk1MTE3N0EzOEJ9IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzaW1wbGVWYWxpZGF0ZSIsICJzaW1wbGVWYWxpZGF0ZVxzaW1wbGVWYWxpZGF0ZS52Y3Byb2oiLCAiezBEMTA3NTJELTJFQTgtNDQ0Ni05MDg2LUQwRjg0ODdFOTE0Qn0iCitFbmRQcm9qZWN0CitHbG9iYWwKKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvbikgPSBwcmVTb2x1dGlvbgorCQlDb25maWdOYW1lLjAgPSBEZWJ1ZworCQlDb25maWdOYW1lLjEgPSBEZWJ1ZyBObyBYYWxhbgorCQlDb25maWdOYW1lLjIgPSBSZWxlYXNlCisJCUNvbmZpZ05hbWUuMyA9IFJlbGVhc2UgTm8gWGFsYW4KKwlFbmRHbG9iYWxTZWN0aW9uCisJR2xvYmFsU2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RTb2x1dGlvbgorCUVuZEdsb2JhbFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9uKFByb2plY3RDb25maWd1cmF0aW9uKSA9IHBvc3RTb2x1dGlvbgorCQl7QkRDNzg1MzUtREM1NS00RkQ1LTk3RTQtREFFNTNFNDJBNjA3fS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7QkRDNzg1MzUtREM1NS00RkQ1LTk3RTQtREFFNTNFNDJBNjA3fS5EZWJ1Zy5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJe0JEQzc4NTM1LURDNTUtNEZENS05N0U0LURBRTUzRTQyQTYwN30uRGVidWcgTm8gWGFsYW4uQWN0aXZlQ2ZnID0gRGVidWcgTm8gWGFsYW58V2luMzIKKwkJe0JEQzc4NTM1LURDNTUtNEZENS05N0U0LURBRTUzRTQyQTYwN30uRGVidWcgTm8gWGFsYW4uQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufFdpbjMyCisJCXtCREM3ODUzNS1EQzU1LTRGRDUtOTdFNC1EQUU1M0U0MkE2MDd9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7QkRDNzg1MzUtREM1NS00RkQ1LTk3RTQtREFFNTNFNDJBNjA3fS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtCREM3ODUzNS1EQzU1LTRGRDUtOTdFNC1EQUU1M0U0MkE2MDd9LlJlbGVhc2UgTm8gWGFsYW4uQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMgorCQl7QkRDNzg1MzUtREM1NS00RkQ1LTk3RTQtREFFNTNFNDJBNjA3fS5SZWxlYXNlIE5vIFhhbGFuLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyCisJCXtBRkZFQjkzNi1BQ0I1LTQyRDMtOTU4OC1GNTg0Mjc4OTYwQjl9LkRlYnVnLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtBRkZFQjkzNi1BQ0I1LTQyRDMtOTU4OC1GNTg0Mjc4OTYwQjl9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7QUZGRUI5MzYtQUNCNS00MkQzLTk1ODgtRjU4NDI3ODk2MEI5fS5EZWJ1ZyBObyBYYWxhbi5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMgorCQl7QUZGRUI5MzYtQUNCNS00MkQzLTk1ODgtRjU4NDI3ODk2MEI5fS5EZWJ1ZyBObyBYYWxhbi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzIKKwkJe0FGRkVCOTM2LUFDQjUtNDJEMy05NTg4LUY1ODQyNzg5NjBCOX0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtBRkZFQjkzNi1BQ0I1LTQyRDMtOTU4OC1GNTg0Mjc4OTYwQjl9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0FGRkVCOTM2LUFDQjUtNDJEMy05NTg4LUY1ODQyNzg5NjBCOX0uUmVsZWFzZSBObyBYYWxhbi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyCisJCXtBRkZFQjkzNi1BQ0I1LTQyRDMtOTU4OC1GNTg0Mjc4OTYwQjl9LlJlbGVhc2UgTm8gWGFsYW4uQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58V2luMzIKKwkJe0YwQ0M4MDgwLTA4OUUtNDczRS04NTY1LTFDOTUxMTc3QTM4Qn0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJe0YwQ0M4MDgwLTA4OUUtNDczRS04NTY1LTFDOTUxMTc3QTM4Qn0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXtGMENDODA4MC0wODlFLTQ3M0UtODU2NS0xQzk1MTE3N0EzOEJ9LkRlYnVnIE5vIFhhbGFuLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyCisJCXtGMENDODA4MC0wODlFLTQ3M0UtODU2NS0xQzk1MTE3N0EzOEJ9LkRlYnVnIE5vIFhhbGFuLkJ1aWxkLjAgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMgorCQl7RjBDQzgwODAtMDg5RS00NzNFLTg1NjUtMUM5NTExNzdBMzhCfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0YwQ0M4MDgwLTA4OUUtNDczRS04NTY1LTFDOTUxMTc3QTM4Qn0uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7RjBDQzgwODAtMDg5RS00NzNFLTg1NjUtMUM5NTExNzdBMzhCfS5SZWxlYXNlIE5vIFhhbGFuLkFjdGl2ZUNmZyA9IFJlbGVhc2UgTm8gWGFsYW58V2luMzIKKwkJe0YwQ0M4MDgwLTA4OUUtNDczRS04NTY1LTFDOTUxMTc3QTM4Qn0uUmVsZWFzZSBObyBYYWxhbi5CdWlsZC4wID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMgorCQl7MEQxMDc1MkQtMkVBOC00NDQ2LTkwODYtRDBGODQ4N0U5MTRCfS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7MEQxMDc1MkQtMkVBOC00NDQ2LTkwODYtRDBGODQ4N0U5MTRCfS5EZWJ1Zy5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezBEMTA3NTJELTJFQTgtNDQ0Ni05MDg2LUQwRjg0ODdFOTE0Qn0uRGVidWcgTm8gWGFsYW4uQWN0aXZlQ2ZnID0gRGVidWcgTm8gWGFsYW58V2luMzIKKwkJezBEMTA3NTJELTJFQTgtNDQ0Ni05MDg2LUQwRjg0ODdFOTE0Qn0uRGVidWcgTm8gWGFsYW4uQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufFdpbjMyCisJCXswRDEwNzUyRC0yRUE4LTQ0NDYtOTA4Ni1EMEY4NDg3RTkxNEJ9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7MEQxMDc1MkQtMkVBOC00NDQ2LTkwODYtRDBGODQ4N0U5MTRCfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXswRDEwNzUyRC0yRUE4LTQ0NDYtOTA4Ni1EMEY4NDg3RTkxNEJ9LlJlbGVhc2UgTm8gWGFsYW4uQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMgorCQl7MEQxMDc1MkQtMkVBOC00NDQ2LTkwODYtRDBGODQ4N0U5MTRCfS5SZWxlYXNlIE5vIFhhbGFuLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyCisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oRXh0ZW5zaWJpbGl0eUdsb2JhbHMpID0gcG9zdFNvbHV0aW9uCisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oRXh0ZW5zaWJpbGl0eUFkZElucykgPSBwb3N0U29sdXRpb24KKwlFbmRHbG9iYWxTZWN0aW9uCitFbmRHbG9iYWwKZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkM3LjAvU2FtcGxlcy9zaW1wbGVEZWNyeXB0L3NpbXBsZURlY3J5cHQudmNwcm9qIGIvYy9Qcm9qZWN0cy9WQzcuMC9TYW1wbGVzL3NpbXBsZURlY3J5cHQvc2ltcGxlRGVjcnlwdC52Y3Byb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM2ODcwZQotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkM3LjAvU2FtcGxlcy9zaW1wbGVEZWNyeXB0L3NpbXBsZURlY3J5cHQudmNwcm9qCkBAIC0wLDAgKzEsMjI3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nID0gIldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI3LjAwIgorCU5hbWU9InNpbXBsZURlY3J5cHQiCisJUHJvamVjdEdVSUQ9IntCREM3ODUzNS1EQzU1LTRGRDUtOTdFNC1EQUU1M0U0MkE2MDd9IgorCUtleXdvcmQ9IldpbjMyUHJvaiI+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIvPgorCTwvUGxhdGZvcm1zPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFxXaW4zMlx2YzdcRGVidWciCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjN1xEZWJ1Z1xvYmoiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCVVzZU9mTUZDPSIyIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5caW5jbHVkZSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19DT05TT0xFIgorCQkJCU1pbmltYWxSZWJ1aWxkPSJUUlVFIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKKwkJCQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlSdW50aW1lVHlwZUluZm89IkZBTFNFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ibGliZWF5MzIubGliIFhhbGFuLUNfMUQubGliIHhlcmNlcy1jXzNELmxpYiAuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi92YzcvRGVidWcveHNlY18xRC5saWIiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3NpbXBsZURlY3J5cHQuZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL3NpbXBsZURlY3J5cHQucGRiIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFxXaW4zMlx2YzdcUmVsZWFzZSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcV2luMzJcdmM3XFJlbGVhc2Vcb2JqIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlPbWl0RnJhbWVQb2ludGVycz0iVFJVRSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxpbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiCisJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKKwkJCQlSdW50aW1lVHlwZUluZm89IlRSVUUiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJsaWJlYXkzMi5saWIgWGFsYW4tQ18xLmxpYiB4ZXJjZXMtY18zLmxpYiAuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi92YzcvUmVsZWFzZS94c2VjXzEubGliIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9zaW1wbGVEZWNyeXB0LmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1ZyBObyBYYWxhbnxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcV2luMzJcdmM3XERlYnVnIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFxXaW4zMlx2YzdcRGVidWdcb2JqIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlVc2VPZk1GQz0iMiIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGluY2x1ZGUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfQ09OU09MRSIKKwkJCQlNaW5pbWFsUmVidWlsZD0iVFJVRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCisJCQkJUnVudGltZUxpYnJhcnk9IjMiCisJCQkJUnVudGltZVR5cGVJbmZvPSJGQUxTRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImxpYmVheTMyLmxpYiB4ZXJjZXMtY18zRC5saWIgLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvdmM3L0RlYnVnL3hzZWNfMUQubGliIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9zaW1wbGVEZWNyeXB0LmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS9zaW1wbGVEZWNyeXB0LnBkYiIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZSBObyBYYWxhbnxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcV2luMzJcdmM3XFJlbGVhc2UiCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjN1xSZWxlYXNlXG9iaiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9IlRSVUUiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5caW5jbHVkZSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJUnVudGltZVR5cGVJbmZvPSJUUlVFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ibGliZWF5MzIubGliIHhlcmNlcy1jXzMubGliIC4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL3ZjNy9SZWxlYXNlL3hzZWNfMS5saWIiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3NpbXBsZURlY3J5cHQuZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiIKKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc20iPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xzYW1wbGVzXElPU3RyZWFtT3V0cHV0dGVyLmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHNhbXBsZXNcc2ltcGxlRGVjcnlwdC5jcHAiPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIgorCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sO2luYyI+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHNhbXBsZXNcSU9TdHJlYW1PdXRwdXR0ZXIuaHBwIj4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlJlc291cmNlIEZpbGVzIgorCQkJRmlsdGVyPSJyYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkM3LjAvU2FtcGxlcy9zaW1wbGVFbmNyeXB0L3NpbXBsZUVuY3J5cHQudmNwcm9qIGIvYy9Qcm9qZWN0cy9WQzcuMC9TYW1wbGVzL3NpbXBsZUVuY3J5cHQvc2ltcGxlRW5jcnlwdC52Y3Byb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI3MWY4OAotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkM3LjAvU2FtcGxlcy9zaW1wbGVFbmNyeXB0L3NpbXBsZUVuY3J5cHQudmNwcm9qCkBAIC0wLDAgKzEsMjI3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nID0gIldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI3LjAwIgorCU5hbWU9InNpbXBsZUVuY3J5cHQiCisJUHJvamVjdEdVSUQ9IntBRkZFQjkzNi1BQ0I1LTQyRDMtOTU4OC1GNTg0Mjc4OTYwQjl9IgorCUtleXdvcmQ9IldpbjMyUHJvaiI+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIvPgorCTwvUGxhdGZvcm1zPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFxXaW4zMlx2YzdcRGVidWciCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjN1xEZWJ1Z1xvYmoiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCVVzZU9mTUZDPSIyIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5caW5jbHVkZSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19DT05TT0xFIgorCQkJCU1pbmltYWxSZWJ1aWxkPSJUUlVFIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKKwkJCQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlSdW50aW1lVHlwZUluZm89IkZBTFNFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ibGliZWF5MzIubGliIFhhbGFuLUNfMUQubGliIHhlcmNlcy1jXzNELmxpYiAuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi92YzcvRGVidWcveHNlY18xRC5saWIiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3NpbXBsZUVuY3J5cHQuZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL3NpbXBsZUVuY3J5cHQucGRiIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFxXaW4zMlx2YzdcUmVsZWFzZSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcV2luMzJcdmM3XFJlbGVhc2Vcb2JqIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlPbWl0RnJhbWVQb2ludGVycz0iVFJVRSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxpbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiCisJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKKwkJCQlSdW50aW1lVHlwZUluZm89IkZBTFNFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ibGliZWF5MzIubGliIFhhbGFuLUNfMS5saWIgeGVyY2VzLWNfMy5saWIgLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvdmM3L1JlbGVhc2UveHNlY18xLmxpYiIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvc2ltcGxlRW5jcnlwdC5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIgorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWcgTm8gWGFsYW58V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjN1xEZWJ1ZyIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcV2luMzJcdmM3XERlYnVnXG9iaiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJVXNlT2ZNRkM9IjIiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxpbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfREVCVUc7X0NPTlNPTEUiCisJCQkJTWluaW1hbFJlYnVpbGQ9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iRkFMU0UiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJsaWJlYXkzMi5saWIgeGVyY2VzLWNfM0QubGliIC4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL3ZjNy9EZWJ1Zy94c2VjXzFELmxpYiIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvc2ltcGxlRW5jcnlwdC5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIyIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvc2ltcGxlRW5jcnlwdC5wZGIiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjN1xSZWxlYXNlIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFxXaW4zMlx2YzdcUmVsZWFzZVxvYmoiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJUUlVFIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGluY2x1ZGUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iRkFMU0UiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJsaWJlYXkzMi5saWIgeGVyY2VzLWNfMy5saWIgLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvdmM3L1JlbGVhc2UveHNlY18xLmxpYiIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvc2ltcGxlRW5jcnlwdC5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIgorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQlGaWx0ZXI9ImNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbSI+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHNhbXBsZXNcSU9TdHJlYW1PdXRwdXR0ZXIuY3BwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcc2FtcGxlc1xzaW1wbGVFbmNyeXB0LmNwcCI+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiCisJCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jIj4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcc2FtcGxlc1xJT1N0cmVhbU91dHB1dHRlci5ocHAiPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiCisJCQlGaWx0ZXI9InJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSI+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzcuMC9TYW1wbGVzL3NpbXBsZUhNQUMvc2ltcGxlSE1BQy52Y3Byb2ogYi9jL1Byb2plY3RzL1ZDNy4wL1NhbXBsZXMvc2ltcGxlSE1BQy9zaW1wbGVITUFDLnZjcHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWIzNzZiCi0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzcuMC9TYW1wbGVzL3NpbXBsZUhNQUMvc2ltcGxlSE1BQy52Y3Byb2oKQEAgLTAsMCArMSwyMjcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2RpbmcgPSAiV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjcuMDAiCisJTmFtZT0ic2ltcGxlSE1BQyIKKwlQcm9qZWN0R1VJRD0ie0YwQ0M4MDgwLTA4OUUtNDczRS04NTY1LTFDOTUxMTc3QTM4Qn0iCisJS2V5d29yZD0iV2luMzJQcm9qIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+CisJPC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjN1xEZWJ1ZyIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcV2luMzJcdmM3XERlYnVnXG9iaiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJVXNlT2ZNRkM9IjIiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxpbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfREVCVUc7X0NPTlNPTEUiCisJCQkJTWluaW1hbFJlYnVpbGQ9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iRkFMU0UiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJsaWJlYXkzMi5saWIgWGFsYW4tQ18xRC5saWIgeGVyY2VzLWNfM0QubGliIC4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL3ZjNy9EZWJ1Zy94c2VjXzFELmxpYiIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvc2ltcGxlSE1BQy5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIyIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvc2ltcGxlSE1BQy5wZGIiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjN1xSZWxlYXNlIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFxXaW4zMlx2YzdcUmVsZWFzZVxvYmoiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJUUlVFIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGluY2x1ZGUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iRkFMU0UiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJsaWJlYXkzMi5saWIgWGFsYW4tQ18xLmxpYiB4ZXJjZXMtY18zLmxpYiAuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi92YzcvUmVsZWFzZS94c2VjXzEubGliIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9zaW1wbGVITUFDLmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1ZyBObyBYYWxhbnxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcV2luMzJcdmM3XERlYnVnIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFxXaW4zMlx2YzdcRGVidWdcb2JqIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlVc2VPZk1GQz0iMiIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGluY2x1ZGUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfQ09OU09MRSIKKwkJCQlNaW5pbWFsUmVidWlsZD0iVFJVRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCisJCQkJUnVudGltZUxpYnJhcnk9IjMiCisJCQkJUnVudGltZVR5cGVJbmZvPSJGQUxTRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImxpYmVheTMyLmxpYiB4ZXJjZXMtY18zRC5saWIgLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvdmM3L0RlYnVnL3hzZWNfMUQubGliIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9zaW1wbGVITUFDLmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS9zaW1wbGVITUFDLnBkYiIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZSBObyBYYWxhbnxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcV2luMzJcdmM3XFJlbGVhc2UiCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjN1xSZWxlYXNlXG9iaiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9IlRSVUUiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5caW5jbHVkZSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJUnVudGltZVR5cGVJbmZvPSJGQUxTRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImxpYmVheTMyLmxpYiB4ZXJjZXMtY18zLmxpYiAuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi92YzcvUmVsZWFzZS94c2VjXzEubGliIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9zaW1wbGVITUFDLmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtIj4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcc2FtcGxlc1xJT1N0cmVhbU91dHB1dHRlci5jcHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xzYW1wbGVzXHNpbXBsZUhNQUMuY3BwIj4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IkhlYWRlciBGaWxlcyIKKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmMiPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xzYW1wbGVzXElPU3RyZWFtT3V0cHV0dGVyLmhwcCI+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyIKKwkJCUZpbHRlcj0icmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIj4KKwkJPC9GaWx0ZXI+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9jL1Byb2plY3RzL1ZDNy4wL1NhbXBsZXMvc2ltcGxlVmFsaWRhdGUvc2ltcGxlVmFsaWRhdGUudmNwcm9qIGIvYy9Qcm9qZWN0cy9WQzcuMC9TYW1wbGVzL3NpbXBsZVZhbGlkYXRlL3NpbXBsZVZhbGlkYXRlLnZjcHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMWNhMTM1Ci0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzcuMC9TYW1wbGVzL3NpbXBsZVZhbGlkYXRlL3NpbXBsZVZhbGlkYXRlLnZjcHJvagpAQCAtMCwwICsxLDIyNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZyA9ICJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iNy4wMCIKKwlOYW1lPSJzaW1wbGVWYWxpZGF0ZSIKKwlQcm9qZWN0R1VJRD0iezBEMTA3NTJELTJFQTgtNDQ0Ni05MDg2LUQwRjg0ODdFOTE0Qn0iCisJS2V5d29yZD0iV2luMzJQcm9qIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+CisJPC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjN1xEZWJ1ZyIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcV2luMzJcdmM3XERlYnVnXG9iaiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJVXNlT2ZNRkM9IjIiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxpbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfREVCVUc7X0NPTlNPTEUiCisJCQkJTWluaW1hbFJlYnVpbGQ9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iRkFMU0UiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJsaWJlYXkzMi5saWIgWGFsYW4tQ18xRC5saWIgeGVyY2VzLWNfM0QubGliIC4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL3ZjNy9EZWJ1Zy94c2VjXzFELmxpYiIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvc2ltcGxlVmFsaWRhdGUuZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL3NpbXBsZVZhbGlkYXRlLnBkYiIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcV2luMzJcdmM3XFJlbGVhc2UiCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXFdpbjMyXHZjN1xSZWxlYXNlXG9iaiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9IlRSVUUiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5caW5jbHVkZSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJUnVudGltZVR5cGVJbmZvPSJGQUxTRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImxpYmVheTMyLmxpYiBYYWxhbi1DXzEubGliIHhlcmNlcy1jXzMubGliIC4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL3ZjNy9SZWxlYXNlL3hzZWNfMS5saWIiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3NpbXBsZVZhbGlkYXRlLmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1ZyBObyBYYWxhbnxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcV2luMzJcdmM3XERlYnVnIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFxXaW4zMlx2YzdcRGVidWdcb2JqIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlVc2VPZk1GQz0iMiIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGluY2x1ZGUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfQ09OU09MRSIKKwkJCQlNaW5pbWFsUmVidWlsZD0iVFJVRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCisJCQkJUnVudGltZUxpYnJhcnk9IjMiCisJCQkJUnVudGltZVR5cGVJbmZvPSJGQUxTRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImxpYmVheTMyLmxpYiB4ZXJjZXMtY18zRC5saWIgLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvdmM3L0RlYnVnL3hzZWNfMUQubGliIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9zaW1wbGVWYWxpZGF0ZS5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIyIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvc2ltcGxlVmFsaWRhdGUucGRiIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlIE5vIFhhbGFufFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFxXaW4zMlx2YzdcUmVsZWFzZSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcV2luMzJcdmM3XFJlbGVhc2Vcb2JqIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlPbWl0RnJhbWVQb2ludGVycz0iVFJVRSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxpbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiCisJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKKwkJCQlSdW50aW1lVHlwZUluZm89IkZBTFNFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ibGliZWF5MzIubGliIHhlcmNlcy1jXzMubGliIC4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL3ZjNy9SZWxlYXNlL3hzZWNfMS5saWIiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3NpbXBsZVZhbGlkYXRlLmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtIj4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcc2FtcGxlc1xJT1N0cmVhbU91dHB1dHRlci5jcHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xzYW1wbGVzXHNpbXBsZVZhbGlkYXRlLmNwcCI+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiCisJCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jIj4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcc2FtcGxlc1xJT1N0cmVhbU91dHB1dHRlci5ocHAiPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiCisJCQlGaWx0ZXI9InJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSI+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzcuMC94c2VjL2MxNG4vYzE0bi52Y3Byb2ogYi9jL1Byb2plY3RzL1ZDNy4wL3hzZWMvYzE0bi9jMTRuLnZjcHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTdkMDY4Ci0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzcuMC94c2VjL2MxNG4vYzE0bi52Y3Byb2oKQEAgLTAsMCArMSwyMjEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2RpbmcgPSAiV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjcuMDAiCisJTmFtZT0iYzE0biIKKwlQcm9qZWN0R1VJRD0ie0FERkI0QTFBLTlDQjQtNEJFRS05REU4LTY1ODQ3MDg2MjRDNH0iCisJS2V5d29yZD0iV2luMzJQcm9qIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+CisJPC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9EZWJ1ZyIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L0RlYnVnL29iaiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiCisJCQkJTWluaW1hbFJlYnVpbGQ9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iRkFMU0UiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgWGFsYW4tQ18xRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliICIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvYzE0bi5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIyIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvYzE0bi5wZGIiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9SZWxlYXNlIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvUmVsZWFzZS9vYmoiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJUUlVFIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iRkFMU0UiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIgIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9jMTRuLmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1ZyBObyBYYWxhbnxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L0RlYnVnIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvRGVidWcvb2JqIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSIKKwkJCQlNaW5pbWFsUmVidWlsZD0iVFJVRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCisJCQkJUnVudGltZUxpYnJhcnk9IjMiCisJCQkJUnVudGltZVR5cGVJbmZvPSJGQUxTRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIgIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9jMTRuLmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS9jMTRuLnBkYiIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZSBObyBYYWxhbnxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L1JlbGVhc2UiCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9SZWxlYXNlL29iaiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9IlRSVUUiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJUnVudGltZVR5cGVJbmZvPSJGQUxTRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiAiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2MxNG4uZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiIKKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc20iPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0b29sc1xjMTRuXGMxNG4uY3BwIj4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IkhlYWRlciBGaWxlcyIKKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmMiPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiCisJCQlGaWx0ZXI9InJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSI+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzcuMC94c2VjL2NoZWNrc2lnL2NoZWNrc2lnLnZjcHJvaiBiL2MvUHJvamVjdHMvVkM3LjAveHNlYy9jaGVja3NpZy9jaGVja3NpZy52Y3Byb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDg0ODA3YQotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkM3LjAveHNlYy9jaGVja3NpZy9jaGVja3NpZy52Y3Byb2oKQEAgLTAsMCArMSwyMzMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2RpbmcgPSAiV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjcuMDAiCisJTmFtZT0iY2hlY2tzaWciCisJUHJvamVjdEdVSUQ9IntCMzJCOTU5Ni1FMjUwLTQxRDUtOEFBOC1BNjIzMjI2QzkwMTh9IgorCUtleXdvcmQ9IldpbjMyUHJvaiI+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIvPgorCTwvUGxhdGZvcm1zPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvRGVidWciCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9EZWJ1Zy9vYmoiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIgorCQkJCU1pbmltYWxSZWJ1aWxkPSJUUlVFIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKKwkJCQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlSdW50aW1lVHlwZUluZm89IkZBTFNFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIFhhbGFuLUNfMUQubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiAiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2NoZWNrc2lnLmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS9jaGVja3NpZy5wZGIiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9SZWxlYXNlIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvUmVsZWFzZS9vYmoiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJUUlVFIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iRkFMU0UiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIgWGFsYW4tQ18xLmxpYiIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvY2hlY2tzaWcuZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiIKKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnIE5vIFhhbGFufFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvRGVidWciCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9EZWJ1Zy9vYmoiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIgorCQkJCU1pbmltYWxSZWJ1aWxkPSJUUlVFIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKKwkJCQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlSdW50aW1lVHlwZUluZm89IkZBTFNFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiAiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2NoZWNrc2lnLmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS9jaGVja3NpZy5wZGIiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9SZWxlYXNlIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvUmVsZWFzZS9vYmoiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJUUlVFIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iRkFMU0UiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2NoZWNrc2lnLmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtIj4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdG9vbHNcY2hlY2tzaWdcQW5vbnltb3VzUmVzb2x2ZXIuY3BwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdG9vbHNcY2hlY2tzaWdcSW50ZXJvcFJlc29sdmVyLmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRvb2xzXGNoZWNrc2lnXGNoZWNrc2lnLmNwcCI+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiCisJCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jIj4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdG9vbHNcY2hlY2tzaWdcQW5vbnltb3VzUmVzb2x2ZXIuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdG9vbHNcY2hlY2tzaWdcSW50ZXJvcFJlc29sdmVyLmhwcCI+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyIKKwkJCUZpbHRlcj0icmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIj4KKwkJPC9GaWx0ZXI+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9jL1Byb2plY3RzL1ZDNy4wL3hzZWMvY2lwaGVyL2NpcGhlci52Y3Byb2ogYi9jL1Byb2plY3RzL1ZDNy4wL3hzZWMvY2lwaGVyL2NpcGhlci52Y3Byb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA4MTMwMAotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkM3LjAveHNlYy9jaXBoZXIvY2lwaGVyLnZjcHJvagpAQCAtMCwwICsxLDIyNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZyA9ICJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iNy4wMCIKKwlOYW1lPSJjaXBoZXIiCisJUHJvamVjdEdVSUQ9InswQzQ1NUE5NS05OTFCLTQwMTktODg3Mi1BQTFGRTYxMzlGNjl9IgorCUtleXdvcmQ9IldpbjMyUHJvaiI+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIvPgorCTwvUGxhdGZvcm1zPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvRGVidWciCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9EZWJ1Zy9vYmoiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIgorCQkJCU1pbmltYWxSZWJ1aWxkPSJUUlVFIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKKwkJCQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlSdW50aW1lVHlwZUluZm89IkZBTFNFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIFhhbGFuLUNfMUQubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiAiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2NpcGhlci5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIyIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvY2lwaGVyLnBkYiIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L1JlbGVhc2UiCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9SZWxlYXNlL29iaiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9IlRSVUUiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJUnVudGltZVR5cGVJbmZvPSJGQUxTRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiAgWGFsYW4tQ18xLmxpYiIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvY2lwaGVyLmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1ZyBObyBYYWxhbnxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L0RlYnVnIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvRGVidWcvb2JqIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSIKKwkJCQlNaW5pbWFsUmVidWlsZD0iVFJVRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCisJCQkJUnVudGltZUxpYnJhcnk9IjMiCisJCQkJUnVudGltZVR5cGVJbmZvPSJGQUxTRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIgIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9jaXBoZXIuZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL2NpcGhlci5wZGIiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9SZWxlYXNlIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvUmVsZWFzZS9vYmoiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJUUlVFIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iRkFMU0UiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2NpcGhlci5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIgorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQlGaWx0ZXI9ImNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbSI+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRvb2xzXGNpcGhlclxYZW5jSW50ZXJvcFJlc29sdmVyLmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRvb2xzXGNpcGhlclxjaXBoZXIuY3BwIj4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IkhlYWRlciBGaWxlcyIKKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmMiPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0b29sc1xjaXBoZXJcWGVuY0ludGVyb3BSZXNvbHZlci5ocHAiPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiCisJCQlGaWx0ZXI9InJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSI+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzcuMC94c2VjL3NpZ2luZi9zaWdpbmYudmNwcm9qIGIvYy9Qcm9qZWN0cy9WQzcuMC94c2VjL3NpZ2luZi9zaWdpbmYudmNwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1Y2JmYjAKLS0tIC9kZXYvbnVsbAorKysgYi9jL1Byb2plY3RzL1ZDNy4wL3hzZWMvc2lnaW5mL3NpZ2luZi52Y3Byb2oKQEAgLTAsMCArMSwyMjEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2RpbmcgPSAiV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjcuMDAiCisJTmFtZT0ic2lnaW5mIgorCVByb2plY3RHVUlEPSJ7MjBFNDM3RkEtRjE4NC00RDYwLTlCM0ItNDM1OEVGRkE4QjQyfSIKKwlLZXl3b3JkPSJXaW4zMlByb2oiPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiLz4KKwk8L1BsYXRmb3Jtcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L0RlYnVnIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvRGVidWcvb2JqIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSIKKwkJCQlNaW5pbWFsUmVidWlsZD0iVFJVRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCisJCQkJUnVudGltZUxpYnJhcnk9IjMiCisJCQkJUnVudGltZVR5cGVJbmZvPSJGQUxTRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBYYWxhbi1DXzFELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIgIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9zaWdpbmYuZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL3NpZ2luZi5wZGIiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9SZWxlYXNlIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvUmVsZWFzZS9vYmoiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJUUlVFIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iRkFMU0UiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIgIFhhbGFuLUNfMS5saWIiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3NpZ2luZi5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIgorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWcgTm8gWGFsYW58V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9EZWJ1ZyIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L0RlYnVnL29iaiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiCisJCQkJTWluaW1hbFJlYnVpbGQ9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iRkFMU0UiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliICIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvc2lnaW5mLmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS9zaWdpbmYucGRiIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlIE5vIFhhbGFufFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvUmVsZWFzZSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L1JlbGVhc2Uvb2JqIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlPbWl0RnJhbWVQb2ludGVycz0iVFJVRSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiCisJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKKwkJCQlSdW50aW1lVHlwZUluZm89IkZBTFNFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfMy5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9zaWdpbmYuZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiIKKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc20iPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0b29sc1xzaWdpbmZcc2lnaW5mLmNwcCI+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiCisJCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jIj4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlJlc291cmNlIEZpbGVzIgorCQkJRmlsdGVyPSJyYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkM3LjAveHNlYy90ZW1wbGF0ZXNpZ24vdGVtcGxhdGVzaWduLnZjcHJvaiBiL2MvUHJvamVjdHMvVkM3LjAveHNlYy90ZW1wbGF0ZXNpZ24vdGVtcGxhdGVzaWduLnZjcHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2U2MmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzcuMC94c2VjL3RlbXBsYXRlc2lnbi90ZW1wbGF0ZXNpZ24udmNwcm9qCkBAIC0wLDAgKzEsMjIxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nID0gIldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI3LjAwIgorCU5hbWU9InRlbXBsYXRlc2lnbiIKKwlQcm9qZWN0R1VJRD0iezEwQ0UwRTg2LURGOTQtNDI0NC05RDgxLUMxRDVDRERBNkFEOH0iCisJS2V5d29yZD0iV2luMzJQcm9qIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+CisJPC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9EZWJ1ZyIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L0RlYnVnL29iaiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiCisJCQkJTWluaW1hbFJlYnVpbGQ9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iRkFMU0UiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgWGFsYW4tQ18xRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliICIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvdGVtcGxhdGVzaWduLmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS90ZW1wbGF0ZXNpZ24ucGRiIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvUmVsZWFzZSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L1JlbGVhc2Uvb2JqIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlPbWl0RnJhbWVQb2ludGVycz0iVFJVRSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiCisJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKKwkJCQlSdW50aW1lVHlwZUluZm89IkZBTFNFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfMy5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliICBYYWxhbi1DXzEubGliIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS90ZW1wbGF0ZXNpZ24uZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiIKKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnIE5vIFhhbGFufFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvRGVidWciCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9EZWJ1Zy9vYmoiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIgorCQkJCU1pbmltYWxSZWJ1aWxkPSJUUlVFIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKKwkJCQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlSdW50aW1lVHlwZUluZm89IkZBTFNFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiAiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3RlbXBsYXRlc2lnbi5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIyIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvdGVtcGxhdGVzaWduLnBkYiIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZSBObyBYYWxhbnxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L1JlbGVhc2UiCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9SZWxlYXNlL29iaiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9IlRSVUUiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJUnVudGltZVR5cGVJbmZvPSJGQUxTRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvdGVtcGxhdGVzaWduLmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtIj4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdG9vbHNcdGVtcGxhdGVzaWduXHRlbXBsYXRlc2lnbi5jcHAiPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIgorCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sO2luYyI+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyIKKwkJCUZpbHRlcj0icmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIj4KKwkJPC9GaWx0ZXI+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9jL1Byb2plY3RzL1ZDNy4wL3hzZWMvdGhyZWFkVGVzdC90aHJlYWRUZXN0LnZjcHJvaiBiL2MvUHJvamVjdHMvVkM3LjAveHNlYy90aHJlYWRUZXN0L3RocmVhZFRlc3QudmNwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1Y2Y1ODIKLS0tIC9kZXYvbnVsbAorKysgYi9jL1Byb2plY3RzL1ZDNy4wL3hzZWMvdGhyZWFkVGVzdC90aHJlYWRUZXN0LnZjcHJvagpAQCAtMCwwICsxLDIyMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZyA9ICJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iNy4wMCIKKwlOYW1lPSJ0aHJlYWRUZXN0IgorCVByb2plY3RHVUlEPSJ7NUVFOUEwQzctNzJDOC00OEYzLUE2REItNkU1QkYwNzE1REMzfSIKKwlLZXl3b3JkPSJXaW4zMlByb2oiPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiLz4KKwk8L1BsYXRmb3Jtcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L0RlYnVnIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvRGVidWcvb2JqIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSIKKwkJCQlNaW5pbWFsUmVidWlsZD0iVFJVRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCisJCQkJUnVudGltZUxpYnJhcnk9IjMiCisJCQkJUnVudGltZVR5cGVJbmZvPSJGQUxTRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBYYWxhbi1DXzFELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIgIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS90aHJlYWRUZXN0LmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS90aHJlYWRUZXN0LnBkYiIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L1JlbGVhc2UiCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9SZWxlYXNlL29iaiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9IlRSVUUiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJUnVudGltZVR5cGVJbmZvPSJGQUxTRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiAgWGFsYW4tQ18xLmxpYiIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvdGhyZWFkVGVzdC5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIgorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWcgTm8gWGFsYW58V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9EZWJ1ZyIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L0RlYnVnL29iaiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiCisJCQkJTWluaW1hbFJlYnVpbGQ9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iRkFMU0UiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliICIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvdGhyZWFkVGVzdC5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIyIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvdGhyZWFkVGVzdC5wZGIiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9SZWxlYXNlIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvUmVsZWFzZS9vYmoiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJUUlVFIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iRkFMU0UiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3RocmVhZFRlc3QuZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiIKKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc20iPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0b29sc1x0aHJlYWRUZXN0XHRocmVhZHRlc3QuY3BwIj4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IkhlYWRlciBGaWxlcyIKKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmMiPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiCisJCQlGaWx0ZXI9InJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSI+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzcuMC94c2VjL3R4Zm1vdXQvdHhmbW91dC52Y3Byb2ogYi9jL1Byb2plY3RzL1ZDNy4wL3hzZWMvdHhmbW91dC90eGZtb3V0LnZjcHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTk3MjhlCi0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzcuMC94c2VjL3R4Zm1vdXQvdHhmbW91dC52Y3Byb2oKQEAgLTAsMCArMSwyMjEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2RpbmcgPSAiV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjcuMDAiCisJTmFtZT0idHhmbW91dCIKKwlQcm9qZWN0R1VJRD0ie0UxQTk1NTA3LUIzRTQtNDA3NS04QzMxLUEyNEM5NDYwQkY2OH0iCisJS2V5d29yZD0iV2luMzJQcm9qIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+CisJPC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9EZWJ1ZyIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L0RlYnVnL29iaiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiCisJCQkJTWluaW1hbFJlYnVpbGQ9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iRkFMU0UiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgWGFsYW4tQ18xRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliICIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvdHhmbW91dC5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIyIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvdHhmbW91dC5wZGIiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9SZWxlYXNlIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvUmVsZWFzZS9vYmoiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJUUlVFIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iRkFMU0UiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIgIFhhbGFuLUNfMS5saWIiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3R4Zm1vdXQuZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiIKKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnIE5vIFhhbGFufFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvRGVidWciCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9EZWJ1Zy9vYmoiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIgorCQkJCU1pbmltYWxSZWJ1aWxkPSJUUlVFIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKKwkJCQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlSdW50aW1lVHlwZUluZm89IkZBTFNFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiAiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3R4Zm1vdXQuZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL3R4Zm1vdXQucGRiIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlIE5vIFhhbGFufFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvUmVsZWFzZSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L1JlbGVhc2Uvb2JqIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlPbWl0RnJhbWVQb2ludGVycz0iVFJVRSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiCisJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKKwkJCQlSdW50aW1lVHlwZUluZm89IkZBTFNFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfMy5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS90eGZtb3V0LmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtIj4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdG9vbHNcdHhmbW91dFx0eGZtb3V0LmNwcCI+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiCisJCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jIj4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlJlc291cmNlIEZpbGVzIgorCQkJRmlsdGVyPSJyYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkM3LjAveHNlYy94a2xpZW50L3hrbGllbnQudmNwcm9qIGIvYy9Qcm9qZWN0cy9WQzcuMC94c2VjL3hrbGllbnQveGtsaWVudC52Y3Byb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDMzYzQxOQotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkM3LjAveHNlYy94a2xpZW50L3hrbGllbnQudmNwcm9qCkBAIC0wLDAgKzEsMjE1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nID0gIldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI3LjAwIgorCU5hbWU9InhrbGllbnQiCisJUHJvamVjdEdVSUQ9Ins0ODM0NjY5NS0xNDk2LTQ4ODEtODcwOS1FNUMwMjM5MjkzMEF9IgorCUtleXdvcmQ9IldpbjMyUHJvaiI+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIvPgorCTwvUGxhdGZvcm1zPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvRGVidWciCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9EZWJ1Zy9vYmoiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSIKKwkJCQlNaW5pbWFsUmVidWlsZD0iVFJVRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCisJCQkJUnVudGltZUxpYnJhcnk9IjMiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgWGFsYW4tQ18xRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliICIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikveGtsaWVudC5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIyIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikveGtsaWVudC5wZGIiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9SZWxlYXNlIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvUmVsZWFzZS9vYmoiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJUUlVFIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfMy5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliICBYYWxhbi1DXzEubGliIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS94a2xpZW50LmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1ZyBObyBYYWxhbnxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L0RlYnVnIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvRGVidWcvb2JqIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiCisJCQkJTWluaW1hbFJlYnVpbGQ9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiAiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3hrbGllbnQuZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL3hrbGllbnQucGRiIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlIE5vIFhhbGFufFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvUmVsZWFzZSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L1JlbGVhc2Uvb2JqIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlPbWl0RnJhbWVQb2ludGVycz0iVFJVRSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiCisJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikveGtsaWVudC5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIgorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQlGaWx0ZXI9ImNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbSI+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRvb2xzXHhrbGllbnRceGtsaWVudC5jcHAiPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIgorCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sO2luYyI+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyIKKwkJCUZpbHRlcj0icmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIj4KKwkJPC9GaWx0ZXI+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9jL1Byb2plY3RzL1ZDNy4wL3hzZWMveHNlYy5zbG4gYi9jL1Byb2plY3RzL1ZDNy4wL3hzZWMveHNlYy5zbG4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE2NGQ3NQotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkM3LjAveHNlYy94c2VjLnNsbgpAQCAtMCwwICsxLDEyNiBAQAorTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gNy4wMAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ4c2VjX2xpYiIsICJ4c2VjX2xpYlx4c2VjX2xpYi52Y3Byb2oiLCAie0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0iCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInh0ZXN0IiwgInh0ZXN0XHh0ZXN0LnZjcHJvaiIsICJ7MTI3QjNFNjEtMDk2Qy00MzhBLUJGMzMtNUE5RjA1QzcwMzVBfSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiYzE0biIsICJjMTRuXGMxNG4udmNwcm9qIiwgIntBREZCNEExQS05Q0I0LTRCRUUtOURFOC02NTg0NzA4NjI0QzR9IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjaGVja3NpZyIsICJjaGVja3NpZ1xjaGVja3NpZy52Y3Byb2oiLCAie0IzMkI5NTk2LUUyNTAtNDFENS04QUE4LUE2MjMyMjZDOTAxOH0iCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImNpcGhlciIsICJjaXBoZXJcY2lwaGVyLnZjcHJvaiIsICJ7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAic2lnaW5mIiwgInNpZ2luZlxzaWdpbmYudmNwcm9qIiwgInsyMEU0MzdGQS1GMTg0LTRENjAtOUIzQi00MzU4RUZGQThCNDJ9IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ0ZW1wbGF0ZXNpZ24iLCAidGVtcGxhdGVzaWduXHRlbXBsYXRlc2lnbi52Y3Byb2oiLCAiezEwQ0UwRTg2LURGOTQtNDI0NC05RDgxLUMxRDVDRERBNkFEOH0iCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInRocmVhZFRlc3QiLCAidGhyZWFkVGVzdFx0aHJlYWRUZXN0LnZjcHJvaiIsICJ7NUVFOUEwQzctNzJDOC00OEYzLUE2REItNkU1QkYwNzE1REMzfSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidHhmbW91dCIsICJ0eGZtb3V0XHR4Zm1vdXQudmNwcm9qIiwgIntFMUE5NTUwNy1CM0U0LTQwNzUtOEMzMS1BMjRDOTQ2MEJGNjh9IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ4a2xpZW50IiwgInhrbGllbnRceGtsaWVudC52Y3Byb2oiLCAiezQ4MzQ2Njk1LTE0OTYtNDg4MS04NzA5LUU1QzAyMzkyOTMwQX0iCitFbmRQcm9qZWN0CitHbG9iYWwKKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvbikgPSBwcmVTb2x1dGlvbgorCQlDb25maWdOYW1lLjAgPSBEZWJ1ZworCQlDb25maWdOYW1lLjEgPSBEZWJ1ZyBObyBYYWxhbgorCQlDb25maWdOYW1lLjIgPSBSZWxlYXNlCisJCUNvbmZpZ05hbWUuMyA9IFJlbGVhc2UgTm8gWGFsYW4KKwlFbmRHbG9iYWxTZWN0aW9uCisJR2xvYmFsU2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RTb2x1dGlvbgorCQl7MTI3QjNFNjEtMDk2Qy00MzhBLUJGMzMtNUE5RjA1QzcwMzVBfS4wID0ge0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0KKwkJe0FERkI0QTFBLTlDQjQtNEJFRS05REU4LTY1ODQ3MDg2MjRDNH0uMCA9IHtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9CisJCXtCMzJCOTU5Ni1FMjUwLTQxRDUtOEFBOC1BNjIzMjI2QzkwMTh9LjAgPSB7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfQorCQl7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fS4wID0ge0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0KKwkJezIwRTQzN0ZBLUYxODQtNEQ2MC05QjNCLTQzNThFRkZBOEI0Mn0uMCA9IHtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9CisJCXsxMENFMEU4Ni1ERjk0LTQyNDQtOUQ4MS1DMUQ1Q0REQTZBRDh9LjAgPSB7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfQorCQl7NUVFOUEwQzctNzJDOC00OEYzLUE2REItNkU1QkYwNzE1REMzfS4wID0ge0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0KKwkJe0UxQTk1NTA3LUIzRTQtNDA3NS04QzMxLUEyNEM5NDYwQkY2OH0uMCA9IHtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9CisJCXs0ODM0NjY5NS0xNDk2LTQ4ODEtODcwOS1FNUMwMjM5MjkzMEF9LjAgPSB7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfQorCUVuZEdsb2JhbFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9uKFByb2plY3RDb25maWd1cmF0aW9uKSA9IHBvc3RTb2x1dGlvbgorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfS5EZWJ1Zy5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJe0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0uRGVidWcgTm8gWGFsYW4uQWN0aXZlQ2ZnID0gRGVidWcgTm8gWGFsYW58V2luMzIKKwkJe0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0uRGVidWcgTm8gWGFsYW4uQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufFdpbjMyCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9LlJlbGVhc2UgTm8gWGFsYW4uQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMgorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfS5SZWxlYXNlIE5vIFhhbGFuLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyCisJCXsxMjdCM0U2MS0wOTZDLTQzOEEtQkYzMy01QTlGMDVDNzAzNUF9LkRlYnVnLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXsxMjdCM0U2MS0wOTZDLTQzOEEtQkYzMy01QTlGMDVDNzAzNUF9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7MTI3QjNFNjEtMDk2Qy00MzhBLUJGMzMtNUE5RjA1QzcwMzVBfS5EZWJ1ZyBObyBYYWxhbi5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMgorCQl7MTI3QjNFNjEtMDk2Qy00MzhBLUJGMzMtNUE5RjA1QzcwMzVBfS5EZWJ1ZyBObyBYYWxhbi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzIKKwkJezEyN0IzRTYxLTA5NkMtNDM4QS1CRjMzLTVBOUYwNUM3MDM1QX0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXsxMjdCM0U2MS0wOTZDLTQzOEEtQkYzMy01QTlGMDVDNzAzNUF9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezEyN0IzRTYxLTA5NkMtNDM4QS1CRjMzLTVBOUYwNUM3MDM1QX0uUmVsZWFzZSBObyBYYWxhbi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyCisJCXsxMjdCM0U2MS0wOTZDLTQzOEEtQkYzMy01QTlGMDVDNzAzNUF9LlJlbGVhc2UgTm8gWGFsYW4uQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58V2luMzIKKwkJe0FERkI0QTFBLTlDQjQtNEJFRS05REU4LTY1ODQ3MDg2MjRDNH0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJe0FERkI0QTFBLTlDQjQtNEJFRS05REU4LTY1ODQ3MDg2MjRDNH0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXtBREZCNEExQS05Q0I0LTRCRUUtOURFOC02NTg0NzA4NjI0QzR9LkRlYnVnIE5vIFhhbGFuLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyCisJCXtBREZCNEExQS05Q0I0LTRCRUUtOURFOC02NTg0NzA4NjI0QzR9LkRlYnVnIE5vIFhhbGFuLkJ1aWxkLjAgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMgorCQl7QURGQjRBMUEtOUNCNC00QkVFLTlERTgtNjU4NDcwODYyNEM0fS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0FERkI0QTFBLTlDQjQtNEJFRS05REU4LTY1ODQ3MDg2MjRDNH0uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7QURGQjRBMUEtOUNCNC00QkVFLTlERTgtNjU4NDcwODYyNEM0fS5SZWxlYXNlIE5vIFhhbGFuLkFjdGl2ZUNmZyA9IFJlbGVhc2UgTm8gWGFsYW58V2luMzIKKwkJe0FERkI0QTFBLTlDQjQtNEJFRS05REU4LTY1ODQ3MDg2MjRDNH0uUmVsZWFzZSBObyBYYWxhbi5CdWlsZC4wID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMgorCQl7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fS5EZWJ1Zy5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJe0IzMkI5NTk2LUUyNTAtNDFENS04QUE4LUE2MjMyMjZDOTAxOH0uRGVidWcgTm8gWGFsYW4uQWN0aXZlQ2ZnID0gRGVidWcgTm8gWGFsYW58V2luMzIKKwkJe0IzMkI5NTk2LUUyNTAtNDFENS04QUE4LUE2MjMyMjZDOTAxOH0uRGVidWcgTm8gWGFsYW4uQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufFdpbjMyCisJCXtCMzJCOTU5Ni1FMjUwLTQxRDUtOEFBOC1BNjIzMjI2QzkwMTh9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtCMzJCOTU5Ni1FMjUwLTQxRDUtOEFBOC1BNjIzMjI2QzkwMTh9LlJlbGVhc2UgTm8gWGFsYW4uQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMgorCQl7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fS5SZWxlYXNlIE5vIFhhbGFuLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyCisJCXswQzQ1NUE5NS05OTFCLTQwMTktODg3Mi1BQTFGRTYxMzlGNjl9LkRlYnVnLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXswQzQ1NUE5NS05OTFCLTQwMTktODg3Mi1BQTFGRTYxMzlGNjl9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fS5EZWJ1ZyBObyBYYWxhbi5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMgorCQl7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fS5EZWJ1ZyBObyBYYWxhbi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzIKKwkJezBDNDU1QTk1LTk5MUItNDAxOS04ODcyLUFBMUZFNjEzOUY2OX0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXswQzQ1NUE5NS05OTFCLTQwMTktODg3Mi1BQTFGRTYxMzlGNjl9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezBDNDU1QTk1LTk5MUItNDAxOS04ODcyLUFBMUZFNjEzOUY2OX0uUmVsZWFzZSBObyBYYWxhbi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyCisJCXswQzQ1NUE5NS05OTFCLTQwMTktODg3Mi1BQTFGRTYxMzlGNjl9LlJlbGVhc2UgTm8gWGFsYW4uQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58V2luMzIKKwkJezIwRTQzN0ZBLUYxODQtNEQ2MC05QjNCLTQzNThFRkZBOEI0Mn0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezIwRTQzN0ZBLUYxODQtNEQ2MC05QjNCLTQzNThFRkZBOEI0Mn0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXsyMEU0MzdGQS1GMTg0LTRENjAtOUIzQi00MzU4RUZGQThCNDJ9LkRlYnVnIE5vIFhhbGFuLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyCisJCXsyMEU0MzdGQS1GMTg0LTRENjAtOUIzQi00MzU4RUZGQThCNDJ9LkRlYnVnIE5vIFhhbGFuLkJ1aWxkLjAgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMgorCQl7MjBFNDM3RkEtRjE4NC00RDYwLTlCM0ItNDM1OEVGRkE4QjQyfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezIwRTQzN0ZBLUYxODQtNEQ2MC05QjNCLTQzNThFRkZBOEI0Mn0uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7MjBFNDM3RkEtRjE4NC00RDYwLTlCM0ItNDM1OEVGRkE4QjQyfS5SZWxlYXNlIE5vIFhhbGFuLkFjdGl2ZUNmZyA9IFJlbGVhc2UgTm8gWGFsYW58V2luMzIKKwkJezIwRTQzN0ZBLUYxODQtNEQ2MC05QjNCLTQzNThFRkZBOEI0Mn0uUmVsZWFzZSBObyBYYWxhbi5CdWlsZC4wID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMgorCQl7MTBDRTBFODYtREY5NC00MjQ0LTlEODEtQzFENUNEREE2QUQ4fS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7MTBDRTBFODYtREY5NC00MjQ0LTlEODEtQzFENUNEREE2QUQ4fS5EZWJ1Zy5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezEwQ0UwRTg2LURGOTQtNDI0NC05RDgxLUMxRDVDRERBNkFEOH0uRGVidWcgTm8gWGFsYW4uQWN0aXZlQ2ZnID0gRGVidWcgTm8gWGFsYW58V2luMzIKKwkJezEwQ0UwRTg2LURGOTQtNDI0NC05RDgxLUMxRDVDRERBNkFEOH0uRGVidWcgTm8gWGFsYW4uQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufFdpbjMyCisJCXsxMENFMEU4Ni1ERjk0LTQyNDQtOUQ4MS1DMUQ1Q0REQTZBRDh9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7MTBDRTBFODYtREY5NC00MjQ0LTlEODEtQzFENUNEREE2QUQ4fS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXsxMENFMEU4Ni1ERjk0LTQyNDQtOUQ4MS1DMUQ1Q0REQTZBRDh9LlJlbGVhc2UgTm8gWGFsYW4uQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMgorCQl7MTBDRTBFODYtREY5NC00MjQ0LTlEODEtQzFENUNEREE2QUQ4fS5SZWxlYXNlIE5vIFhhbGFuLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyCisJCXs1RUU5QTBDNy03MkM4LTQ4RjMtQTZEQi02RTVCRjA3MTVEQzN9LkRlYnVnLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXs1RUU5QTBDNy03MkM4LTQ4RjMtQTZEQi02RTVCRjA3MTVEQzN9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7NUVFOUEwQzctNzJDOC00OEYzLUE2REItNkU1QkYwNzE1REMzfS5EZWJ1ZyBObyBYYWxhbi5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMgorCQl7NUVFOUEwQzctNzJDOC00OEYzLUE2REItNkU1QkYwNzE1REMzfS5EZWJ1ZyBObyBYYWxhbi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzIKKwkJezVFRTlBMEM3LTcyQzgtNDhGMy1BNkRCLTZFNUJGMDcxNURDM30uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXs1RUU5QTBDNy03MkM4LTQ4RjMtQTZEQi02RTVCRjA3MTVEQzN9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezVFRTlBMEM3LTcyQzgtNDhGMy1BNkRCLTZFNUJGMDcxNURDM30uUmVsZWFzZSBObyBYYWxhbi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyCisJCXs1RUU5QTBDNy03MkM4LTQ4RjMtQTZEQi02RTVCRjA3MTVEQzN9LlJlbGVhc2UgTm8gWGFsYW4uQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58V2luMzIKKwkJe0UxQTk1NTA3LUIzRTQtNDA3NS04QzMxLUEyNEM5NDYwQkY2OH0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJe0UxQTk1NTA3LUIzRTQtNDA3NS04QzMxLUEyNEM5NDYwQkY2OH0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXtFMUE5NTUwNy1CM0U0LTQwNzUtOEMzMS1BMjRDOTQ2MEJGNjh9LkRlYnVnIE5vIFhhbGFuLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyCisJCXtFMUE5NTUwNy1CM0U0LTQwNzUtOEMzMS1BMjRDOTQ2MEJGNjh9LkRlYnVnIE5vIFhhbGFuLkJ1aWxkLjAgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMgorCQl7RTFBOTU1MDctQjNFNC00MDc1LThDMzEtQTI0Qzk0NjBCRjY4fS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0UxQTk1NTA3LUIzRTQtNDA3NS04QzMxLUEyNEM5NDYwQkY2OH0uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7RTFBOTU1MDctQjNFNC00MDc1LThDMzEtQTI0Qzk0NjBCRjY4fS5SZWxlYXNlIE5vIFhhbGFuLkFjdGl2ZUNmZyA9IFJlbGVhc2UgTm8gWGFsYW58V2luMzIKKwkJe0UxQTk1NTA3LUIzRTQtNDA3NS04QzMxLUEyNEM5NDYwQkY2OH0uUmVsZWFzZSBObyBYYWxhbi5CdWlsZC4wID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMgorCQl7NDgzNDY2OTUtMTQ5Ni00ODgxLTg3MDktRTVDMDIzOTI5MzBBfS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7NDgzNDY2OTUtMTQ5Ni00ODgxLTg3MDktRTVDMDIzOTI5MzBBfS5EZWJ1Zy5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezQ4MzQ2Njk1LTE0OTYtNDg4MS04NzA5LUU1QzAyMzkyOTMwQX0uRGVidWcgTm8gWGFsYW4uQWN0aXZlQ2ZnID0gRGVidWcgTm8gWGFsYW58V2luMzIKKwkJezQ4MzQ2Njk1LTE0OTYtNDg4MS04NzA5LUU1QzAyMzkyOTMwQX0uRGVidWcgTm8gWGFsYW4uQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufFdpbjMyCisJCXs0ODM0NjY5NS0xNDk2LTQ4ODEtODcwOS1FNUMwMjM5MjkzMEF9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7NDgzNDY2OTUtMTQ5Ni00ODgxLTg3MDktRTVDMDIzOTI5MzBBfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXs0ODM0NjY5NS0xNDk2LTQ4ODEtODcwOS1FNUMwMjM5MjkzMEF9LlJlbGVhc2UgTm8gWGFsYW4uQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMgorCQl7NDgzNDY2OTUtMTQ5Ni00ODgxLTg3MDktRTVDMDIzOTI5MzBBfS5SZWxlYXNlIE5vIFhhbGFuLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyCisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oRXh0ZW5zaWJpbGl0eUdsb2JhbHMpID0gcG9zdFNvbHV0aW9uCisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oRXh0ZW5zaWJpbGl0eUFkZElucykgPSBwb3N0U29sdXRpb24KKwlFbmRHbG9iYWxTZWN0aW9uCitFbmRHbG9iYWwKZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkM3LjAveHNlYy94c2VjX2xpYi94c2VjX2xpYi52Y3Byb2ogYi9jL1Byb2plY3RzL1ZDNy4wL3hzZWMveHNlY19saWIveHNlY19saWIudmNwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2MmNlZmMKLS0tIC9kZXYvbnVsbAorKysgYi9jL1Byb2plY3RzL1ZDNy4wL3hzZWMveHNlY19saWIveHNlY19saWIudmNwcm9qCkBAIC0wLDAgKzEsMTI4NSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZyA9ICJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iNy4wMCIKKwlOYW1lPSJ4c2VjX2xpYiIKKwlQcm9qZWN0R1VJRD0ie0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0iCisJS2V5d29yZD0iV2luMzJQcm9qIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+CisJPC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9EZWJ1ZyIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L0RlYnVnL29iaiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtYU0VDX0xJQl9FWFBPUlRTO1BST0pfQ0FOT047UFJPSl9EU0lHIgorCQkJCU1pbmltYWxSZWJ1aWxkPSJUUlVFIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKKwkJCQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlSdW50aW1lVHlwZUluZm89IkZBTFNFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVByZWNvbXBpbGVkSGVhZGVyVGhyb3VnaD0iIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIFhhbGFuLUNfMUQubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiAiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3hzZWNfMV82RC5kbGwiCisJCQkJTGlua0luY3JlbWVudGFsPSIyIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikveHNlY19saWIucGRiIgorCQkJCVN1YlN5c3RlbT0iMiIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcikveHNlY18xRC5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkJRGVzY3JpcHRpb249IkNyZWF0ZSBIZWFkZXIgZmlsZXMiCisJCQkJQ29tbWFuZExpbmU9Im1rZGlyIC4uXC4uXC4uXC4uXGluY2x1ZGUKK21rZGlyIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlYworZGVsIC9xIC9zIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlY1wqLioKK3hjb3B5IC9JIC9zIC9mIC4uXC4uXC4uXC4uXHNyY1wqLmhwcCAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWMKKyIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvUmVsZWFzZSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L1JlbGVhc2Uvb2JqIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlPbWl0RnJhbWVQb2ludGVycz0iVFJVRSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtYU0VDX0xJQl9FWFBPUlRTO1BST0pfQ0FOT047UFJPSl9EU0lHIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJUnVudGltZVR5cGVJbmZvPSJGQUxTRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKKwkJCQlQcmVjb21waWxlZEhlYWRlclRocm91Z2g9IiIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiAgWGFsYW4tQ18xLmxpYiIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikveHNlY18xXzYuZGxsIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJU3ViU3lzdGVtPSIyIgorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiIKKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIgorCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKS94c2VjXzEubGliIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJCURlc2NyaXB0aW9uPSJDcmVhdGUgSGVhZGVyIGZpbGVzIgorCQkJCUNvbW1hbmRMaW5lPSJta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlCitta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWMKK2RlbCAvcSAvcyAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWNcKi4qCit4Y29weSAvSSAvcyAvZiAuLlwuLlwuLlwuLlxzcmNcKi5ocHAgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjCisiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWcgTm8gWGFsYW58V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9EZWJ1ZyIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L0RlYnVnL29iaiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtYU0VDX0xJQl9FWFBPUlRTO1BST0pfQ0FOT047UFJPSl9EU0lHIgorCQkJCU1pbmltYWxSZWJ1aWxkPSJUUlVFIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKKwkJCQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlSdW50aW1lVHlwZUluZm89IkZBTFNFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVByZWNvbXBpbGVkSGVhZGVyVGhyb3VnaD0iIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiAiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3hzZWNfMV82RC5kbGwiCisJCQkJTGlua0luY3JlbWVudGFsPSIyIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikveHNlY19saWIucGRiIgorCQkJCVN1YlN5c3RlbT0iMiIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcikveHNlY18xRC5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkJRGVzY3JpcHRpb249IkNyZWF0ZSBIZWFkZXIgZmlsZXMiCisJCQkJQ29tbWFuZExpbmU9Im1rZGlyIC4uXC4uXC4uXC4uXGluY2x1ZGUKK21rZGlyIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlYworZGVsIC9xIC9zIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlY1wqLioKK3hjb3B5IC9JIC9zIC9mIC4uXC4uXC4uXC4uXHNyY1wqLmhwcCAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWMKKyIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlIE5vIFhhbGFufFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvUmVsZWFzZSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L1JlbGVhc2Uvb2JqIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlPbWl0RnJhbWVQb2ludGVycz0iVFJVRSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtYU0VDX0xJQl9FWFBPUlRTO1BST0pfQ0FOT047UFJPSl9EU0lHIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJUnVudGltZVR5cGVJbmZvPSJGQUxTRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKKwkJCQlQcmVjb21waWxlZEhlYWRlclRocm91Z2g9IiIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikveHNlY18xXzYuZGxsIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJU3ViU3lzdGVtPSIyIgorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiIKKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIgorCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKS94c2VjXzEubGliIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJCURlc2NyaXB0aW9uPSJDcmVhdGUgSGVhZGVyIGZpbGVzIgorCQkJCUNvbW1hbmRMaW5lPSJta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlCitta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWMKK2RlbCAvcSAvcyAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWNcKi4qCit4Y29weSAvSSAvcyAvZiAuLlwuLlwuLlwuLlxzcmNcKi5ocHAgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjCisiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJjYW5vbiIKKwkJCUZpbHRlcj0iIj4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcY2Fub25cWFNFQ0MxNG4yMDAxMDMxNS5jcHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xjYW5vblxYU0VDQzE0bjIwMDEwMzE1LmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGNhbm9uXFhTRUNDYW5vbi5jcHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xjYW5vblxYU0VDQ2Fub24uaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcY2Fub25cWFNFQ1hNTE5TU3RhY2suY3BwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcY2Fub25cWFNFQ1hNTE5TU3RhY2suaHBwIj4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9ImRzaWciCisJCQlGaWx0ZXI9IiI+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0LmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0LmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0NvbnN0YW50cy5jcHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdDb25zdGFudHMuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHS2V5SW5mby5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvTGlzdC5jcHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvTGlzdC5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvTWdtdERhdGEuY3BwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHS2V5SW5mb01nbXREYXRhLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9OYW1lLmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9OYW1lLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9QR1BEYXRhLmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9QR1BEYXRhLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9TUEtJRGF0YS5jcHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvU1BLSURhdGEuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHS2V5SW5mb1ZhbHVlLmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9WYWx1ZS5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvWDUwOS5jcHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvWDUwOS5ocHAiPgorCQkJPC9GaWxlPgorICAgICAgICAgICAgPEZpbGUKKyAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvRXh0LmNwcCI+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZQorICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9FeHQuaHBwIj4KKyAgICAgICAgICAgIDwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHT2JqZWN0LmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR09iamVjdC5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdSZWZlcmVuY2UuY3BwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHUmVmZXJlbmNlLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1JlZmVyZW5jZUxpc3QuY3BwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHUmVmZXJlbmNlTGlzdC5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdTaWduYXR1cmUuY3BwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHU2lnbmF0dXJlLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1NpZ25lZEluZm8uY3BwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHU2lnbmVkSW5mby5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm0uY3BwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHVHJhbnNmb3JtLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1RyYW5zZm9ybUJhc2U2NC5jcHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1CYXNlNjQuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHVHJhbnNmb3JtQzE0bi5jcHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1DMTRuLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1RyYW5zZm9ybUVudmVsb3BlLmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1RyYW5zZm9ybUVudmVsb3BlLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1RyYW5zZm9ybUxpc3QuY3BwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHVHJhbnNmb3JtTGlzdC5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1YUGF0aC5jcHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1YUGF0aC5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1YUGF0aEZpbHRlci5jcHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1YUGF0aEZpbHRlci5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1YU0wuY3BwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHVHJhbnNmb3JtWFNMLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1hQYXRoRmlsdGVyRXhwci5jcHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdYUGF0aEZpbHRlckV4cHIuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHWFBhdGhIZXJlLmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1hQYXRoSGVyZS5ocHAiPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiCisJCQlGaWx0ZXI9InJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSI+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGZyYW1ld29ya1xyZXNvdXJjZS5oIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXHZlcnNpb24ucmMiPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iZW5jIgorCQkJRmlsdGVyPSIiPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b0Jhc2U2NC5jcHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b0Jhc2U2NC5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b0V4Y2VwdGlvbi5jcHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b0V4Y2VwdGlvbi5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b0hhc2guaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9LZXkuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9LZXlEU0EuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9LZXlITUFDLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDQ3J5cHRvS2V5UlNBLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDQ3J5cHRvUHJvdmlkZXIuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9TeW1tZXRyaWNLZXkuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9VdGlscy5jcHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b1V0aWxzLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDQ3J5cHRvWDUwOS5jcHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b1g1MDkuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNLZXlJbmZvUmVzb2x2ZXIuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNLZXlJbmZvUmVzb2x2ZXJEZWZhdWx0LmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDS2V5SW5mb1Jlc29sdmVyRGVmYXVsdC5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbHRlcgorCQkJCU5hbWU9Ik9wZW5TU0wiCisJCQkJRmlsdGVyPSIiPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9CYXNlNjQuY3BwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b0Jhc2U2NC5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvSGFzaC5jcHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvSGFzaC5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvSGFzaEhNQUMuY3BwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b0hhc2hITUFDLmhwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9LZXlEU0EuY3BwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b0tleURTQS5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvS2V5SE1BQy5jcHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvS2V5SE1BQy5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvS2V5UlNBLmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9LZXlSU0EuaHBwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b1Byb3ZpZGVyLmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9Qcm92aWRlci5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5LmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9TeW1tZXRyaWNLZXkuaHBwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b1g1MDkuY3BwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b1g1MDkuaHBwIj4KKwkJCQk8L0ZpbGU+CisJCQk8L0ZpbHRlcj4KKwkJCTxGaWx0ZXIKKwkJCQlOYW1lPSJXaW5DQVBJIgorCQkJCUZpbHRlcj0iIj4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvSGFzaC5jcHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvSGFzaC5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvSGFzaEhNQUMuY3BwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFdpbkNBUElcV2luQ0FQSUNyeXB0b0hhc2hITUFDLmhwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xXaW5DQVBJXFdpbkNBUElDcnlwdG9LZXlEU0EuY3BwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFdpbkNBUElcV2luQ0FQSUNyeXB0b0tleURTQS5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvS2V5SE1BQy5jcHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvS2V5SE1BQy5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvS2V5UlNBLmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xXaW5DQVBJXFdpbkNBUElDcnlwdG9LZXlSU0EuaHBwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFdpbkNBUElcV2luQ0FQSUNyeXB0b1Byb3ZpZGVyLmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xXaW5DQVBJXFdpbkNBUElDcnlwdG9Qcm92aWRlci5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvU3ltbWV0cmljS2V5LmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xXaW5DQVBJXFdpbkNBUElDcnlwdG9TeW1tZXRyaWNLZXkuaHBwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFdpbkNBUElcV2luQ0FQSUNyeXB0b1g1MDkuY3BwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFdpbkNBUElcV2luQ0FQSUNyeXB0b1g1MDkuaHBwIj4KKwkJCQk8L0ZpbGU+CisJCQk8L0ZpbHRlcj4KKwkJCTxGaWx0ZXIKKwkJCQlOYW1lPSJYU0NyeXB0IgorCQkJCUZpbHRlcj0iIj4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNDcnlwdFxYU0NyeXB0Q3J5cHRvQmFzZTY0LmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0NyeXB0XFhTQ3J5cHRDcnlwdG9CYXNlNjQuaHBwIj4KKwkJCQk8L0ZpbGU+CisJCQk8L0ZpbHRlcj4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9InV0aWxzIgorCQkJRmlsdGVyPSIiPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1xYU0VDQmluVFhGTUlucHV0U3RyZWFtLmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNCaW5UWEZNSW5wdXRTdHJlYW0uaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ0RPTVV0aWxzLmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNET01VdGlscy5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1xYU0VDTmFtZVNwYWNlRXhwYW5kZXIuY3BwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ05hbWVTcGFjZUV4cGFuZGVyLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNQbGF0Zm9ybVV0aWxzLmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNQbGF0Zm9ybVV0aWxzLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNTT0FQUmVxdWVzdG9yLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNTT0FQUmVxdWVzdG9yU2ltcGxlLmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNTT0FQUmVxdWVzdG9yU2ltcGxlLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNTYWZlQnVmZmVyLmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNTYWZlQnVmZmVyLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNTYWZlQnVmZmVyRm9ybWF0dGVyLmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNTYWZlQnVmZmVyRm9ybWF0dGVyLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNUWEZNSW5wdXRTb3VyY2UuY3BwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ1RYRk1JbnB1dFNvdXJjZS5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1xYU0VDWFBhdGhOb2RlTGlzdC5jcHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1xYU0VDWFBhdGhOb2RlTGlzdC5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbHRlcgorCQkJCU5hbWU9IndpbnV0aWxzIgorCQkJCUZpbHRlcj0iIj4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1x3aW51dGlsc1xYU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtLmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXHdpbnV0aWxzXFhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0uaHBwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcd2ludXRpbHNcWFNFQ1NPQVBSZXF1ZXN0b3JTaW1wbGVXaW4zMi5jcHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1x3aW51dGlsc1xYU0VDVVJJUmVzb2x2ZXJHZW5lcmljV2luMzIuY3BwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcd2ludXRpbHNcWFNFQ1VSSVJlc29sdmVyR2VuZXJpY1dpbjMyLmhwcCI+CisJCQkJPC9GaWxlPgorCQkJPC9GaWx0ZXI+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJmcmFtZXdvcmsiCisJCQlGaWx0ZXI9IiI+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGZyYW1ld29ya1xYU0VDQWxnb3JpdGhtSGFuZGxlci5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ0FsZ29yaXRobU1hcHBlci5jcHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ0FsZ29yaXRobU1hcHBlci5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ0RlZnMuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNFbnYuY3BwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNFbnYuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNFcnJvci5jcHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ0Vycm9yLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGZyYW1ld29ya1xYU0VDRXhjZXB0aW9uLmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGZyYW1ld29ya1xYU0VDRXhjZXB0aW9uLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGZyYW1ld29ya1xYU0VDUHJvdmlkZXIuY3BwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNQcm92aWRlci5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ1VSSVJlc29sdmVyLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGZyYW1ld29ya1xYU0VDVVJJUmVzb2x2ZXJYZXJjZXMuY3BwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNVUklSZXNvbHZlclhlcmNlcy5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ1czMkNvbmZpZy5ocHAiPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0idHJhbnNmb3JtZXJzIgorCQkJRmlsdGVyPSIiPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTUJhc2UuY3BwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1CYXNlLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNQmFzZTY0LmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNQmFzZTY0LmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNQzE0bi5jcHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTUMxNG4uaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1DaGFpbi5jcHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTUNoYWluLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNQ2lwaGVyLmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNQ2lwaGVyLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNQ29uY2F0Q2hhaW5zLmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNQ29uY2F0Q2hhaW5zLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNRG9jT2JqZWN0LmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNRG9jT2JqZWN0LmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNRW52ZWxvcGUuY3BwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1FbnZlbG9wZS5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTU1ENS5jcHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTU1ENS5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTU91dHB1dEZpbGUuY3BwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1PdXRwdXRGaWxlLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNUGFyc2VyLmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNUGFyc2VyLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNU0IuY3BwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1TQi5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTVNIQTEuY3BwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1TSEExLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNVVJMLmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNVVJMLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNWFBhdGguY3BwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1YUGF0aC5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTVhQYXRoRmlsdGVyLmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNWFBhdGhGaWx0ZXIuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1YU0wuY3BwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1YU0wuaHBwIj4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9InhlbmMiCisJCQlGaWx0ZXI9IiI+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcWEVOQ0NpcGhlci5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXFhFTkNDaXBoZXJEYXRhLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcWEVOQ0NpcGhlclJlZmVyZW5jZS5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXFhFTkNDaXBoZXJWYWx1ZS5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXFhFTkNFbmNyeXB0ZWREYXRhLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcWEVOQ0VuY3J5cHRlZEtleS5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXFhFTkNFbmNyeXB0ZWRUeXBlLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcWEVOQ0VuY3J5cHRpb25NZXRob2QuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWx0ZXIKKwkJCQlOYW1lPSJpbXBsIgorCQkJCUZpbHRlcj0iIj4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0LmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcaW1wbFxYRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQuaHBwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNDaXBoZXJEYXRhSW1wbC5jcHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0NpcGhlckRhdGFJbXBsLmhwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcaW1wbFxYRU5DQ2lwaGVySW1wbC5jcHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0NpcGhlckltcGwuaHBwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNDaXBoZXJSZWZlcmVuY2VJbXBsLmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcaW1wbFxYRU5DQ2lwaGVyUmVmZXJlbmNlSW1wbC5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0NpcGhlclZhbHVlSW1wbC5jcHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0NpcGhlclZhbHVlSW1wbC5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0VuY3J5cHRlZERhdGFJbXBsLmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcaW1wbFxYRU5DRW5jcnlwdGVkRGF0YUltcGwuaHBwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNFbmNyeXB0ZWRLZXlJbXBsLmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcaW1wbFxYRU5DRW5jcnlwdGVkS2V5SW1wbC5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0VuY3J5cHRlZFR5cGVJbXBsLmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcaW1wbFxYRU5DRW5jcnlwdGVkVHlwZUltcGwuaHBwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNFbmNyeXB0aW9uTWV0aG9kSW1wbC5jcHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0VuY3J5cHRpb25NZXRob2RJbXBsLmhwcCI+CisJCQkJPC9GaWxlPgorCQkJPC9GaWx0ZXI+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJ4a21zIgorCQkJRmlsdGVyPSIiPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNBdXRoZW50aWNhdGlvbi5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNDb21wb3VuZFJlcXVlc3QuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TQ29tcG91bmRSZXN1bHQuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TQ29uc3RhbnRzLmNwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU0NvbnN0YW50cy5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNLZXlCaW5kaW5nLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGUuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TTG9jYXRlUmVxdWVzdC5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNMb2NhdGVSZXN1bHQuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TTWVzc2FnZUFic3RyYWN0VHlwZS5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNNZXNzYWdlRmFjdG9yeS5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1BlbmRpbmdSZXF1ZXN0LmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1Byb3RvdHlwZUtleUJpbmRpbmcuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUXVlcnlLZXlCaW5kaW5nLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1JTQUtleVBhaXIuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUmVjb3ZlcktleUJpbmRpbmcuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUmVjb3ZlclJlcXVlc3QuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUmVjb3ZlclJlc3VsdC5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZWdpc3RlclJlcXVlc3QuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUmVnaXN0ZXJSZXN1bHQuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUmVpc3N1ZUtleUJpbmRpbmcuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUmVpc3N1ZVJlcXVlc3QuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUmVpc3N1ZVJlc3VsdC5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1Jlc3BvbmRXaXRoLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1Jlc3BvbnNlTWVjaGFuaXNtLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1Jlc3VsdC5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZXN1bHRUeXBlLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1Jldm9rZUtleUJpbmRpbmcuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUmV2b2tlUmVxdWVzdC5ocHAiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZXZva2VSZXN1bHQuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TU3RhdHVzLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1N0YXR1c1JlcXVlc3QuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TU3RhdHVzUmVzdWx0LmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nLmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1VzZUtleVdpdGguaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TVmFsaWRhdGVSZXF1ZXN0LmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1ZhbGlkYXRlUmVzdWx0LmhwcCI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1ZhbGlkaXR5SW50ZXJ2YWwuaHBwIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWx0ZXIKKwkJCQlOYW1lPSJpbXBsIgorCQkJCUZpbHRlcj0iIj4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU0F1dGhlbnRpY2F0aW9uSW1wbC5jcHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU0F1dGhlbnRpY2F0aW9uSW1wbC5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU0NvbXBvdW5kUmVxdWVzdEltcGwuY3BwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNDb21wb3VuZFJlcXVlc3RJbXBsLmhwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TQ29tcG91bmRSZXN1bHRJbXBsLmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TQ29tcG91bmRSZXN1bHRJbXBsLmhwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGwuY3BwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbC5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU0tleUJpbmRpbmdJbXBsLmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TS2V5QmluZGluZ0ltcGwuaHBwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNMb2NhdGVSZXF1ZXN0SW1wbC5jcHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU0xvY2F0ZVJlcXVlc3RJbXBsLmhwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TTG9jYXRlUmVzdWx0SW1wbC5jcHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU0xvY2F0ZVJlc3VsdEltcGwuaHBwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbC5jcHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsLmhwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TTWVzc2FnZUZhY3RvcnlJbXBsLmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TTWVzc2FnZUZhY3RvcnlJbXBsLmhwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbi5jcHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU05vdEJvdW5kQXV0aGVudGljYXRpb25JbXBsLmhwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUGVuZGluZ1JlcXVlc3RJbXBsLmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUGVuZGluZ1JlcXVlc3RJbXBsLmhwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUHJvdG90eXBlS2V5QmluZGluZ0ltcGwuY3BwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNQcm90b3R5cGVLZXlCaW5kaW5nSW1wbC5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1F1ZXJ5S2V5QmluZGluZ0ltcGwuY3BwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNRdWVyeUtleUJpbmRpbmdJbXBsLmhwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUlNBS2V5UGFpckltcGwuY3BwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSU0FLZXlQYWlySW1wbC5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlY292ZXJLZXlCaW5kaW5nSW1wbC5jcHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlY292ZXJLZXlCaW5kaW5nSW1wbC5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlY292ZXJSZXF1ZXN0SW1wbC5jcHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlY292ZXJSZXF1ZXN0SW1wbC5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlY292ZXJSZXN1bHRJbXBsLmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVjb3ZlclJlc3VsdEltcGwuaHBwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZWdpc3RlclJlcXVlc3RJbXBsLmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVnaXN0ZXJSZXF1ZXN0SW1wbC5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlZ2lzdGVyUmVzdWx0SW1wbC5jcHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlZ2lzdGVyUmVzdWx0SW1wbC5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlaXNzdWVLZXlCaW5kaW5nSW1wbC5jcHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlaXNzdWVLZXlCaW5kaW5nSW1wbC5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlaXNzdWVSZXF1ZXN0SW1wbC5jcHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlaXNzdWVSZXF1ZXN0SW1wbC5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlaXNzdWVSZXN1bHRJbXBsLmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVpc3N1ZVJlc3VsdEltcGwuaHBwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbC5jcHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsLmhwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVzcG9uZFdpdGhJbXBsLmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVzcG9uZFdpdGhJbXBsLmhwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVzcG9uc2VNZWNoYW5pc21JbXBsLmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVzcG9uc2VNZWNoYW5pc21JbXBsLmhwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVzdWx0SW1wbC5jcHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1Jlc3VsdEltcGwuaHBwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXN1bHRUeXBlSW1wbC5jcHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1Jlc3VsdFR5cGVJbXBsLmhwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmV2b2tlS2V5QmluZGluZ0ltcGwuY3BwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXZva2VLZXlCaW5kaW5nSW1wbC5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1Jldm9rZVJlcXVlc3RJbXBsLmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmV2b2tlUmVxdWVzdEltcGwuaHBwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXZva2VSZXN1bHRJbXBsLmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmV2b2tlUmVzdWx0SW1wbC5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1N0YXR1c0ltcGwuY3BwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNTdGF0dXNJbXBsLmhwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TU3RhdHVzUmVxdWVzdEltcGwuY3BwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNTdGF0dXNSZXF1ZXN0SW1wbC5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1N0YXR1c1Jlc3VsdEltcGwuY3BwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNTdGF0dXNSZXN1bHRJbXBsLmhwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TVW52ZXJpZmllZEtleUJpbmRpbmdJbXBsLmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TVW52ZXJpZmllZEtleUJpbmRpbmdJbXBsLmhwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TVXNlS2V5V2l0aEltcGwuY3BwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNVc2VLZXlXaXRoSW1wbC5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1ZhbGlkYXRlUmVxdWVzdEltcGwuY3BwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNWYWxpZGF0ZVJlcXVlc3RJbXBsLmhwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TVmFsaWRhdGVSZXN1bHRJbXBsLmNwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TVmFsaWRhdGVSZXN1bHRJbXBsLmhwcCI+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TVmFsaWRpdHlJbnRlcnZhbEltcGwuY3BwIj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNWYWxpZGl0eUludGVydmFsSW1wbC5ocHAiPgorCQkJCTwvRmlsZT4KKwkJCTwvRmlsdGVyPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkM3LjAveHNlYy94dGVzdC94dGVzdC52Y3Byb2ogYi9jL1Byb2plY3RzL1ZDNy4wL3hzZWMveHRlc3QveHRlc3QudmNwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlZGRlYjUKLS0tIC9kZXYvbnVsbAorKysgYi9jL1Byb2plY3RzL1ZDNy4wL3hzZWMveHRlc3QveHRlc3QudmNwcm9qCkBAIC0wLDAgKzEsMjMzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nID0gIldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI3LjAwIgorCU5hbWU9Inh0ZXN0IgorCVByb2plY3RHVUlEPSJ7MTI3QjNFNjEtMDk2Qy00MzhBLUJGMzMtNUE5RjA1QzcwMzVBfSIKKwlLZXl3b3JkPSJXaW4zMlByb2oiPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiLz4KKwk8L1BsYXRmb3Jtcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L0RlYnVnIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvRGVidWcvb2JqIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSIKKwkJCQlNaW5pbWFsUmVidWlsZD0iVFJVRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCisJCQkJUnVudGltZUxpYnJhcnk9IjMiCisJCQkJUnVudGltZVR5cGVJbmZvPSJGQUxTRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBYYWxhbi1DXzFELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIgIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS94dGVzdC5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIyIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikveHRlc3QucGRiIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC9XaW4zMi9WQzcvUmVsZWFzZSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L1JlbGVhc2Uvb2JqIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlPbWl0RnJhbWVQb2ludGVycz0iVFJVRSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiCisJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKKwkJCQlSdW50aW1lVHlwZUluZm89IkZBTFNFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfMy5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliICBYYWxhbi1DXzEubGliIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS94dGVzdC5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIgorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWcgTm8gWGFsYW58V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9EZWJ1ZyIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L0RlYnVnL29iaiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiCisJCQkJTWluaW1hbFJlYnVpbGQ9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iRkFMU0UiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliICIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikveHRlc3QuZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL3h0ZXN0LnBkYiIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZSBObyBYYWxhbnxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvV2luMzIvVkM3L1JlbGVhc2UiCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkL1dpbjMyL1ZDNy9SZWxlYXNlL29iaiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9IlRSVUUiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJUnVudGltZVR5cGVJbmZvPSJGQUxTRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikveHRlc3QuZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiIKKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc20iPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0b29sc1x4dGVzdFx4dGVzdC5jcHAiPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiI+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSIvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnIE5vIFhhbGFufFdpbjMyIj4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIi8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IkhlYWRlciBGaWxlcyIKKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmMiPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiCisJCQlGaWx0ZXI9InJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSI+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzguMC9TYW1wbGVzL1NhbXBsZXMuc2xuIGIvYy9Qcm9qZWN0cy9WQzguMC9TYW1wbGVzL1NhbXBsZXMuc2xuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzOGRhMjcKLS0tIC9kZXYvbnVsbAorKysgYi9jL1Byb2plY3RzL1ZDOC4wL1NhbXBsZXMvU2FtcGxlcy5zbG4KQEAgLTAsMCArMSw1NSBAQAorTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gOS4wMA0KKyMgVmlzdWFsIEMrKyBFeHByZXNzIDIwMDUNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNpbXBsZURlY3J5cHQiLCAic2ltcGxlRGVjcnlwdFxzaW1wbGVEZWNyeXB0LnZjcHJvaiIsICJ7QkRDNzg1MzUtREM1NS00RkQ1LTk3RTQtREFFNTNFNDJBNjA3fSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzaW1wbGVFbmNyeXB0IiwgInNpbXBsZUVuY3J5cHRcc2ltcGxlRW5jcnlwdC52Y3Byb2oiLCAie0FGRkVCOTM2LUFDQjUtNDJEMy05NTg4LUY1ODQyNzg5NjBCOX0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAic2ltcGxlSE1BQyIsICJzaW1wbGVITUFDXHNpbXBsZUhNQUMudmNwcm9qIiwgIntGMENDODA4MC0wODlFLTQ3M0UtODU2NS0xQzk1MTE3N0EzOEJ9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNpbXBsZVZhbGlkYXRlIiwgInNpbXBsZVZhbGlkYXRlXHNpbXBsZVZhbGlkYXRlLnZjcHJvaiIsICJ7MEQxMDc1MkQtMkVBOC00NDQ2LTkwODYtRDBGODQ4N0U5MTRCfSINCitFbmRQcm9qZWN0DQorR2xvYmFsDQorCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uDQorCQlEZWJ1ZyBObyBYYWxhbnxXaW4zMiA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyDQorCQlSZWxlYXNlIE5vIFhhbGFufFdpbjMyID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJUmVsZWFzZXxXaW4zMiA9IFJlbGVhc2V8V2luMzINCisJRW5kR2xvYmFsU2VjdGlvbg0KKwlHbG9iYWxTZWN0aW9uKFByb2plY3RDb25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHBvc3RTb2x1dGlvbg0KKwkJe0JEQzc4NTM1LURDNTUtNEZENS05N0U0LURBRTUzRTQyQTYwN30uRGVidWcgTm8gWGFsYW58V2luMzIuQWN0aXZlQ2ZnID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXtCREM3ODUzNS1EQzU1LTRGRDUtOTdFNC1EQUU1M0U0MkE2MDd9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMg0KKwkJe0JEQzc4NTM1LURDNTUtNEZENS05N0U0LURBRTUzRTQyQTYwN30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtCREM3ODUzNS1EQzU1LTRGRDUtOTdFNC1EQUU1M0U0MkE2MDd9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0JEQzc4NTM1LURDNTUtNEZENS05N0U0LURBRTUzRTQyQTYwN30uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7QkRDNzg1MzUtREM1NS00RkQ1LTk3RTQtREFFNTNFNDJBNjA3fS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7QkRDNzg1MzUtREM1NS00RkQ1LTk3RTQtREFFNTNFNDJBNjA3fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtCREM3ODUzNS1EQzU1LTRGRDUtOTdFNC1EQUU1M0U0MkE2MDd9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtBRkZFQjkzNi1BQ0I1LTQyRDMtOTU4OC1GNTg0Mjc4OTYwQjl9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7QUZGRUI5MzYtQUNCNS00MkQzLTk1ODgtRjU4NDI3ODk2MEI5fS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXtBRkZFQjkzNi1BQ0I1LTQyRDMtOTU4OC1GNTg0Mjc4OTYwQjl9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7QUZGRUI5MzYtQUNCNS00MkQzLTk1ODgtRjU4NDI3ODk2MEI5fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtBRkZFQjkzNi1BQ0I1LTQyRDMtOTU4OC1GNTg0Mjc4OTYwQjl9LlJlbGVhc2UgTm8gWGFsYW58V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJe0FGRkVCOTM2LUFDQjUtNDJEMy05NTg4LUY1ODQyNzg5NjBCOX0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJe0FGRkVCOTM2LUFDQjUtNDJEMy05NTg4LUY1ODQyNzg5NjBCOX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QUZGRUI5MzYtQUNCNS00MkQzLTk1ODgtRjU4NDI3ODk2MEI5fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7RjBDQzgwODAtMDg5RS00NzNFLTg1NjUtMUM5NTExNzdBMzhCfS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMg0KKwkJe0YwQ0M4MDgwLTA4OUUtNDczRS04NTY1LTFDOTUxMTc3QTM4Qn0uRGVidWcgTm8gWGFsYW58V2luMzIuQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7RjBDQzgwODAtMDg5RS00NzNFLTg1NjUtMUM5NTExNzdBMzhCfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0YwQ0M4MDgwLTA4OUUtNDczRS04NTY1LTFDOTUxMTc3QTM4Qn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7RjBDQzgwODAtMDg5RS00NzNFLTg1NjUtMUM5NTExNzdBMzhCfS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2UgTm8gWGFsYW58V2luMzINCisJCXtGMENDODA4MC0wODlFLTQ3M0UtODU2NS0xQzk1MTE3N0EzOEJ9LlJlbGVhc2UgTm8gWGFsYW58V2luMzIuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58V2luMzINCisJCXtGMENDODA4MC0wODlFLTQ3M0UtODU2NS0xQzk1MTE3N0EzOEJ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0YwQ0M4MDgwLTA4OUUtNDczRS04NTY1LTFDOTUxMTc3QTM4Qn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezBEMTA3NTJELTJFQTgtNDQ0Ni05MDg2LUQwRjg0ODdFOTE0Qn0uRGVidWcgTm8gWGFsYW58V2luMzIuQWN0aXZlQ2ZnID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXswRDEwNzUyRC0yRUE4LTQ0NDYtOTA4Ni1EMEY4NDg3RTkxNEJ9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMg0KKwkJezBEMTA3NTJELTJFQTgtNDQ0Ni05MDg2LUQwRjg0ODdFOTE0Qn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXswRDEwNzUyRC0yRUE4LTQ0NDYtOTA4Ni1EMEY4NDg3RTkxNEJ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezBEMTA3NTJELTJFQTgtNDQ0Ni05MDg2LUQwRjg0ODdFOTE0Qn0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7MEQxMDc1MkQtMkVBOC00NDQ2LTkwODYtRDBGODQ4N0U5MTRCfS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7MEQxMDc1MkQtMkVBOC00NDQ2LTkwODYtRDBGODQ4N0U5MTRCfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXswRDEwNzUyRC0yRUE4LTQ0NDYtOTA4Ni1EMEY4NDg3RTkxNEJ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJRW5kR2xvYmFsU2VjdGlvbg0KKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbg0KKwkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFDQorCUVuZEdsb2JhbFNlY3Rpb24NCitFbmRHbG9iYWwNCmRpZmYgLS1naXQgYS9jL1Byb2plY3RzL1ZDOC4wL1NhbXBsZXMvc2ltcGxlRGVjcnlwdC9zaW1wbGVEZWNyeXB0LnZjcHJvaiBiL2MvUHJvamVjdHMvVkM4LjAvU2FtcGxlcy9zaW1wbGVEZWNyeXB0L3NpbXBsZURlY3J5cHQudmNwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiNGFmNjQKLS0tIC9kZXYvbnVsbAorKysgYi9jL1Byb2plY3RzL1ZDOC4wL1NhbXBsZXMvc2ltcGxlRGVjcnlwdC9zaW1wbGVEZWNyeXB0LnZjcHJvagpAQCAtMCwwICsxLDM3NyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQorPFZpc3VhbFN0dWRpb1Byb2plY3QNCisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQorCVZlcnNpb249IjguMDAiDQorCU5hbWU9InNpbXBsZURlY3J5cHQiDQorCVByb2plY3RHVUlEPSJ7QkRDNzg1MzUtREM1NS00RkQ1LTk3RTQtREFFNTNFNDJBNjA3fSINCisJS2V5d29yZD0iV2luMzJQcm9qIg0KKwk+DQorCTxQbGF0Zm9ybXM+DQorCQk8UGxhdGZvcm0NCisJCQlOYW1lPSJXaW4zMiINCisJCS8+DQorCTwvUGxhdGZvcm1zPg0KKwk8VG9vbEZpbGVzPg0KKwk8L1Rvb2xGaWxlcz4NCisJPENvbmZpZ3VyYXRpb25zPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm1OYW1lKVx2YzhcJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtTmFtZSlcdmM4XCQoQ29uZmlndXJhdGlvbk5hbWUpXG9iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjIiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5caW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ibGliZWF5MzIubGliIFhhbGFuLUNfMUQubGliIHhlcmNlcy1jXzNELmxpYiAmcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvdmM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL3hzZWNfMUQubGliJnF1b3Q7Ig0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybU5hbWUpXHZjOFwkKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm1OYW1lKVx2YzhcJChDb25maWd1cmF0aW9uTmFtZSlcb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGluY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJ0cnVlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImxpYmVheTMyLmxpYiBYYWxhbi1DXzEubGliIHhlcmNlcy1jXzMubGliICZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS92YzgvJChDb25maWd1cmF0aW9uTmFtZSkveHNlY18xLmxpYiZxdW90OyINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1ZyBObyBYYWxhbnxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm1OYW1lKVx2YzhcJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtTmFtZSlcdmM4XCQoQ29uZmlndXJhdGlvbk5hbWUpXG9iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjIiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5caW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ibGliZWF5MzIubGliIHhlcmNlcy1jXzNELmxpYiAmcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvdmM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL3hzZWNfMUQubGliJnF1b3Q7Ig0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlIE5vIFhhbGFufFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybU5hbWUpXHZjOFwkKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm1OYW1lKVx2YzhcJChDb25maWd1cmF0aW9uTmFtZSlcb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGluY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJ0cnVlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImxpYmVheTMyLmxpYiB4ZXJjZXMtY18zLmxpYiAmcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvdmM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL3hzZWNfMS5saWImcXVvdDsiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJPC9Db25maWd1cmF0aW9ucz4NCisJPFJlZmVyZW5jZXM+DQorCTwvUmVmZXJlbmNlcz4NCisJPEZpbGVzPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCisJCQlGaWx0ZXI9ImNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbSINCisJCQk+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcc2FtcGxlc1xJT1N0cmVhbU91dHB1dHRlci5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcc2FtcGxlc1xzaW1wbGVEZWNyeXB0LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9IkhlYWRlciBGaWxlcyINCisJCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xzYW1wbGVzXElPU3RyZWFtT3V0cHV0dGVyLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9IlJlc291cmNlIEZpbGVzIg0KKwkJCUZpbHRlcj0icmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIg0KKwkJCT4NCisJCTwvRmlsdGVyPg0KKwk8L0ZpbGVzPg0KKwk8R2xvYmFscz4NCisJPC9HbG9iYWxzPg0KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9jL1Byb2plY3RzL1ZDOC4wL1NhbXBsZXMvc2ltcGxlRW5jcnlwdC9zaW1wbGVFbmNyeXB0LnZjcHJvaiBiL2MvUHJvamVjdHMvVkM4LjAvU2FtcGxlcy9zaW1wbGVFbmNyeXB0L3NpbXBsZUVuY3J5cHQudmNwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzMzdlNzkKLS0tIC9kZXYvbnVsbAorKysgYi9jL1Byb2plY3RzL1ZDOC4wL1NhbXBsZXMvc2ltcGxlRW5jcnlwdC9zaW1wbGVFbmNyeXB0LnZjcHJvagpAQCAtMCwwICsxLDM3NyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQorPFZpc3VhbFN0dWRpb1Byb2plY3QNCisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQorCVZlcnNpb249IjguMDAiDQorCU5hbWU9InNpbXBsZUVuY3J5cHQiDQorCVByb2plY3RHVUlEPSJ7QUZGRUI5MzYtQUNCNS00MkQzLTk1ODgtRjU4NDI3ODk2MEI5fSINCisJS2V5d29yZD0iV2luMzJQcm9qIg0KKwk+DQorCTxQbGF0Zm9ybXM+DQorCQk8UGxhdGZvcm0NCisJCQlOYW1lPSJXaW4zMiINCisJCS8+DQorCTwvUGxhdGZvcm1zPg0KKwk8VG9vbEZpbGVzPg0KKwk8L1Rvb2xGaWxlcz4NCisJPENvbmZpZ3VyYXRpb25zPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm1OYW1lKVx2YzhcJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtTmFtZSlcdmM4XCQoQ29uZmlndXJhdGlvbk5hbWUpXG9iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjIiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5caW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ibGliZWF5MzIubGliIFhhbGFuLUNfMUQubGliIHhlcmNlcy1jXzNELmxpYiAmcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvdmM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL3hzZWNfMUQubGliJnF1b3Q7Ig0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybU5hbWUpXHZjOFwkKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm1OYW1lKVx2YzhcJChDb25maWd1cmF0aW9uTmFtZSlcb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGluY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJsaWJlYXkzMi5saWIgWGFsYW4tQ18xLmxpYiB4ZXJjZXMtY18zLmxpYiAmcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvdmM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL3hzZWNfMS5saWImcXVvdDsiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWcgTm8gWGFsYW58V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtTmFtZSlcdmM4XCQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybU5hbWUpXHZjOFwkKENvbmZpZ3VyYXRpb25OYW1lKVxvYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIyIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGluY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImxpYmVheTMyLmxpYiB4ZXJjZXMtY18zRC5saWIgJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL3ZjOC8kKENvbmZpZ3VyYXRpb25OYW1lKS94c2VjXzFELmxpYiZxdW90OyINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZSBObyBYYWxhbnxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm1OYW1lKVx2YzhcJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtTmFtZSlcdmM4XCQoQ29uZmlndXJhdGlvbk5hbWUpXG9iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxpbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIg0KKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMiINCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ibGliZWF5MzIubGliIHhlcmNlcy1jXzMubGliICZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS92YzgvJChDb25maWd1cmF0aW9uTmFtZSkveHNlY18xLmxpYiZxdW90OyINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwk8L0NvbmZpZ3VyYXRpb25zPg0KKwk8UmVmZXJlbmNlcz4NCisJPC9SZWZlcmVuY2VzPg0KKwk8RmlsZXM+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xzYW1wbGVzXElPU3RyZWFtT3V0cHV0dGVyLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xzYW1wbGVzXHNpbXBsZUVuY3J5cHQuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmMiDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHNhbXBsZXNcSU9TdHJlYW1PdXRwdXR0ZXIuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiDQorCQkJRmlsdGVyPSJyYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiDQorCQkJPg0KKwkJPC9GaWx0ZXI+DQorCTwvRmlsZXM+DQorCTxHbG9iYWxzPg0KKwk8L0dsb2JhbHM+DQorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkM4LjAvU2FtcGxlcy9zaW1wbGVITUFDL3NpbXBsZUhNQUMudmNwcm9qIGIvYy9Qcm9qZWN0cy9WQzguMC9TYW1wbGVzL3NpbXBsZUhNQUMvc2ltcGxlSE1BQy52Y3Byb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTYxZWJjNwotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkM4LjAvU2FtcGxlcy9zaW1wbGVITUFDL3NpbXBsZUhNQUMudmNwcm9qCkBAIC0wLDAgKzEsMzc3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCis8VmlzdWFsU3R1ZGlvUHJvamVjdA0KKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCisJVmVyc2lvbj0iOC4wMCINCisJTmFtZT0ic2ltcGxlSE1BQyINCisJUHJvamVjdEdVSUQ9IntGMENDODA4MC0wODlFLTQ3M0UtODU2NS0xQzk1MTE3N0EzOEJ9Ig0KKwlLZXl3b3JkPSJXaW4zMlByb2oiDQorCT4NCisJPFBsYXRmb3Jtcz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9IldpbjMyIg0KKwkJLz4NCisJPC9QbGF0Zm9ybXM+DQorCTxUb29sRmlsZXM+DQorCTwvVG9vbEZpbGVzPg0KKwk8Q29uZmlndXJhdGlvbnM+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybU5hbWUpXHZjOFwkKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm1OYW1lKVx2YzhcJChDb25maWd1cmF0aW9uTmFtZSlcb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMiINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxpbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJsaWJlYXkzMi5saWIgWGFsYW4tQ18xRC5saWIgeGVyY2VzLWNfM0QubGliICZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS92YzgvJChDb25maWd1cmF0aW9uTmFtZSkveHNlY18xRC5saWImcXVvdDsiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtTmFtZSlcdmM4XCQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybU5hbWUpXHZjOFwkKENvbmZpZ3VyYXRpb25OYW1lKVxvYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5caW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImxpYmVheTMyLmxpYiBYYWxhbi1DXzEubGliIHhlcmNlcy1jXzMubGliICZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS92YzgvJChDb25maWd1cmF0aW9uTmFtZSkveHNlY18xLmxpYiZxdW90OyINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1ZyBObyBYYWxhbnxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm1OYW1lKVx2YzhcJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtTmFtZSlcdmM4XCQoQ29uZmlndXJhdGlvbk5hbWUpXG9iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjIiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5caW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ibGliZWF5MzIubGliIHhlcmNlcy1jXzNELmxpYiAmcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvdmM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL3hzZWNfMUQubGliJnF1b3Q7Ig0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlIE5vIFhhbGFufFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybU5hbWUpXHZjOFwkKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm1OYW1lKVx2YzhcJChDb25maWd1cmF0aW9uTmFtZSlcb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGluY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJsaWJlYXkzMi5saWIgeGVyY2VzLWNfMy5saWIgJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL3ZjOC8kKENvbmZpZ3VyYXRpb25OYW1lKS94c2VjXzEubGliJnF1b3Q7Ig0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCTwvQ29uZmlndXJhdGlvbnM+DQorCTxSZWZlcmVuY2VzPg0KKwk8L1JlZmVyZW5jZXM+DQorCTxGaWxlcz4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQorCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc20iDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHNhbXBsZXNcSU9TdHJlYW1PdXRwdXR0ZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHNhbXBsZXNcc2ltcGxlSE1BQy5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQk8L0ZpbHRlcj4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQorCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sO2luYyINCisJCQk+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcc2FtcGxlc1xJT1N0cmVhbU91dHB1dHRlci5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQk8L0ZpbHRlcj4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCisJCQlGaWx0ZXI9InJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSINCisJCQk+DQorCQk8L0ZpbHRlcj4NCisJPC9GaWxlcz4NCisJPEdsb2JhbHM+DQorCTwvR2xvYmFscz4NCis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzguMC9TYW1wbGVzL3NpbXBsZVZhbGlkYXRlL3NpbXBsZVZhbGlkYXRlLnZjcHJvaiBiL2MvUHJvamVjdHMvVkM4LjAvU2FtcGxlcy9zaW1wbGVWYWxpZGF0ZS9zaW1wbGVWYWxpZGF0ZS52Y3Byb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhlYTZmNwotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkM4LjAvU2FtcGxlcy9zaW1wbGVWYWxpZGF0ZS9zaW1wbGVWYWxpZGF0ZS52Y3Byb2oKQEAgLTAsMCArMSwzNzggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0DQorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KKwlWZXJzaW9uPSI4LjAwIg0KKwlOYW1lPSJzaW1wbGVWYWxpZGF0ZSINCisJUHJvamVjdEdVSUQ9InswRDEwNzUyRC0yRUE4LTQ0NDYtOTA4Ni1EMEY4NDg3RTkxNEJ9Ig0KKwlSb290TmFtZXNwYWNlPSJzaW1wbGVWYWxpZGF0ZSINCisJS2V5d29yZD0iV2luMzJQcm9qIg0KKwk+DQorCTxQbGF0Zm9ybXM+DQorCQk8UGxhdGZvcm0NCisJCQlOYW1lPSJXaW4zMiINCisJCS8+DQorCTwvUGxhdGZvcm1zPg0KKwk8VG9vbEZpbGVzPg0KKwk8L1Rvb2xGaWxlcz4NCisJPENvbmZpZ3VyYXRpb25zPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm1OYW1lKVx2YzhcJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtTmFtZSlcdmM4XCQoQ29uZmlndXJhdGlvbk5hbWUpXG9iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjIiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5caW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ibGliZWF5MzIubGliIFhhbGFuLUNfMUQubGliIHhlcmNlcy1jXzNELmxpYiAmcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvdmM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL3hzZWNfMUQubGliJnF1b3Q7Ig0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybU5hbWUpXHZjOFwkKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm1OYW1lKVx2YzhcJChDb25maWd1cmF0aW9uTmFtZSlcb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGluY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJsaWJlYXkzMi5saWIgWGFsYW4tQ18xLmxpYiB4ZXJjZXMtY18zLmxpYiAmcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvdmM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL3hzZWNfMS5saWImcXVvdDsiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWcgTm8gWGFsYW58V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtTmFtZSlcdmM4XCQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybU5hbWUpXHZjOFwkKENvbmZpZ3VyYXRpb25OYW1lKVxvYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIyIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGluY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImxpYmVheTMyLmxpYiB4ZXJjZXMtY18zRC5saWIgJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL3ZjOC8kKENvbmZpZ3VyYXRpb25OYW1lKS94c2VjXzFELmxpYiZxdW90OyINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZSBObyBYYWxhbnxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm1OYW1lKVx2YzhcJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtTmFtZSlcdmM4XCQoQ29uZmlndXJhdGlvbk5hbWUpXG9iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxpbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIg0KKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMiINCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ibGliZWF5MzIubGliIHhlcmNlcy1jXzMubGliICZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS92YzgvJChDb25maWd1cmF0aW9uTmFtZSkveHNlY18xLmxpYiZxdW90OyINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwk8L0NvbmZpZ3VyYXRpb25zPg0KKwk8UmVmZXJlbmNlcz4NCisJPC9SZWZlcmVuY2VzPg0KKwk8RmlsZXM+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xzYW1wbGVzXElPU3RyZWFtT3V0cHV0dGVyLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xzYW1wbGVzXHNpbXBsZVZhbGlkYXRlLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9IkhlYWRlciBGaWxlcyINCisJCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xzYW1wbGVzXElPU3RyZWFtT3V0cHV0dGVyLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9IlJlc291cmNlIEZpbGVzIg0KKwkJCUZpbHRlcj0icmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIg0KKwkJCT4NCisJCTwvRmlsdGVyPg0KKwk8L0ZpbGVzPg0KKwk8R2xvYmFscz4NCisJPC9HbG9iYWxzPg0KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9jL1Byb2plY3RzL1ZDOC4wL3hzZWMvYzE0bi9jMTRuLnZjcHJvaiBiL2MvUHJvamVjdHMvVkM4LjAveHNlYy9jMTRuL2MxNG4udmNwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0OTg3OTEKLS0tIC9kZXYvbnVsbAorKysgYi9jL1Byb2plY3RzL1ZDOC4wL3hzZWMvYzE0bi9jMTRuLnZjcHJvagpAQCAtMCwwICsxLDcxNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQorPFZpc3VhbFN0dWRpb1Byb2plY3QNCisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQorCVZlcnNpb249IjguMDAiDQorCU5hbWU9ImMxNG4iDQorCVByb2plY3RHVUlEPSJ7QURGQjRBMUEtOUNCNC00QkVFLTlERTgtNjU4NDcwODYyNEM0fSINCisJUm9vdE5hbWVzcGFjZT0iYzE0biINCisJS2V5d29yZD0iV2luMzJQcm9qIg0KKwk+DQorCTxQbGF0Zm9ybXM+DQorCQk8UGxhdGZvcm0NCisJCQlOYW1lPSJXaW4zMiINCisJCS8+DQorCQk8UGxhdGZvcm0NCisJCQlOYW1lPSJ4NjQiDQorCQkvPg0KKwk8L1BsYXRmb3Jtcz4NCisJPFRvb2xGaWxlcz4NCisJPC9Ub29sRmlsZXM+DQorCTxDb25maWd1cmF0aW9ucz4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBYYWxhbi1DXzFELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9jMTRuLmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS9jMTRuLnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgWGFsYW4tQ18xRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvYzE0bi5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvYzE0bi5wZGIiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2MxNG4uZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIg0KKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMiINCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfMy5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvYzE0bi5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnIE5vIFhhbGFufFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIGNyeXB0MzIubGliIGxpYmVheTMyRC5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9jMTRuLmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS9jMTRuLnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1ZyBObyBYYWxhbnx4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIGNyeXB0MzIubGliIGxpYmVheTMyRC5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9jMTRuLmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS9jMTRuLnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZSBObyBYYWxhbnxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO1dJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2MxNG4uZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58eDY0Ig0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO1dJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2MxNG4uZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwk8L0NvbmZpZ3VyYXRpb25zPg0KKwk8UmVmZXJlbmNlcz4NCisJPC9SZWZlcmVuY2VzPg0KKwk8RmlsZXM+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0b29sc1xjMTRuXGMxNG4uY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmMiDQorCQkJPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiDQorCQkJRmlsdGVyPSJyYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiDQorCQkJPg0KKwkJPC9GaWx0ZXI+DQorCTwvRmlsZXM+DQorCTxHbG9iYWxzPg0KKwk8L0dsb2JhbHM+DQorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkM4LjAveHNlYy9jaGVja3NpZy9jaGVja3NpZy52Y3Byb2ogYi9jL1Byb2plY3RzL1ZDOC4wL3hzZWMvY2hlY2tzaWcvY2hlY2tzaWcudmNwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjNTI3OWQKLS0tIC9kZXYvbnVsbAorKysgYi9jL1Byb2plY3RzL1ZDOC4wL3hzZWMvY2hlY2tzaWcvY2hlY2tzaWcudmNwcm9qCkBAIC0wLDAgKzEsNzMxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCis8VmlzdWFsU3R1ZGlvUHJvamVjdA0KKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCisJVmVyc2lvbj0iOC4wMCINCisJTmFtZT0iY2hlY2tzaWciDQorCVByb2plY3RHVUlEPSJ7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fSINCisJUm9vdE5hbWVzcGFjZT0iY2hlY2tzaWciDQorCUtleXdvcmQ9IldpbjMyUHJvaiINCisJPg0KKwk8UGxhdGZvcm1zPg0KKwkJPFBsYXRmb3JtDQorCQkJTmFtZT0iV2luMzIiDQorCQkvPg0KKwkJPFBsYXRmb3JtDQorCQkJTmFtZT0ieDY0Ig0KKwkJLz4NCisJPC9QbGF0Zm9ybXM+DQorCTxUb29sRmlsZXM+DQorCTwvVG9vbEZpbGVzPg0KKwk8Q29uZmlndXJhdGlvbnM+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgWGFsYW4tQ18xRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvY2hlY2tzaWcuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL2NoZWNrc2lnLnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgWGFsYW4tQ18xRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvY2hlY2tzaWcuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL2NoZWNrc2lnLnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIg0KKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMiINCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfMy5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIFhhbGFuLUNfMS5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9jaGVja3NpZy5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIgWGFsYW4tQ18xLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2NoZWNrc2lnLmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWcgTm8gWGFsYW58V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzJELmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2NoZWNrc2lnLmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS9jaGVja3NpZy5wZGIiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWcgTm8gWGFsYW58eDY0Ig0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMkQubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvY2hlY2tzaWcuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL2NoZWNrc2lnLnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZSBObyBYYWxhbnxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO1dJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2NoZWNrc2lnLmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlIE5vIFhhbGFufHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9jaGVja3NpZy5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCTwvQ29uZmlndXJhdGlvbnM+DQorCTxSZWZlcmVuY2VzPg0KKwk8L1JlZmVyZW5jZXM+DQorCTxGaWxlcz4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQorCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc20iDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRvb2xzXGNoZWNrc2lnXEFub255bW91c1Jlc29sdmVyLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0b29sc1xjaGVja3NpZ1xjaGVja3NpZy5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdG9vbHNcY2hlY2tzaWdcSW50ZXJvcFJlc29sdmVyLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9IkhlYWRlciBGaWxlcyINCisJCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0b29sc1xjaGVja3NpZ1xBbm9ueW1vdXNSZXNvbHZlci5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdG9vbHNcY2hlY2tzaWdcSW50ZXJvcFJlc29sdmVyLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9IlJlc291cmNlIEZpbGVzIg0KKwkJCUZpbHRlcj0icmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIg0KKwkJCT4NCisJCTwvRmlsdGVyPg0KKwk8L0ZpbGVzPg0KKwk8R2xvYmFscz4NCisJPC9HbG9iYWxzPg0KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9jL1Byb2plY3RzL1ZDOC4wL3hzZWMvY2lwaGVyL2NpcGhlci52Y3Byb2ogYi9jL1Byb2plY3RzL1ZDOC4wL3hzZWMvY2lwaGVyL2NpcGhlci52Y3Byb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFmNmVkZgotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkM4LjAveHNlYy9jaXBoZXIvY2lwaGVyLnZjcHJvagpAQCAtMCwwICsxLDcyMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQorPFZpc3VhbFN0dWRpb1Byb2plY3QNCisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQorCVZlcnNpb249IjguMDAiDQorCU5hbWU9ImNpcGhlciINCisJUHJvamVjdEdVSUQ9InswQzQ1NUE5NS05OTFCLTQwMTktODg3Mi1BQTFGRTYxMzlGNjl9Ig0KKwlSb290TmFtZXNwYWNlPSJjaXBoZXIiDQorCUtleXdvcmQ9IldpbjMyUHJvaiINCisJPg0KKwk8UGxhdGZvcm1zPg0KKwkJPFBsYXRmb3JtDQorCQkJTmFtZT0iV2luMzIiDQorCQkvPg0KKwkJPFBsYXRmb3JtDQorCQkJTmFtZT0ieDY0Ig0KKwkJLz4NCisJPC9QbGF0Zm9ybXM+DQorCTxUb29sRmlsZXM+DQorCTwvVG9vbEZpbGVzPg0KKwk8Q29uZmlndXJhdGlvbnM+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgWGFsYW4tQ18xRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvY2lwaGVyLmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS9jaXBoZXIucGRiIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBYYWxhbi1DXzFELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9jaXBoZXIuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL2NpcGhlci5wZGIiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiBYYWxhbi1DXzEubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvY2lwaGVyLmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiBYYWxhbi1DXzEubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvY2lwaGVyLmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWcgTm8gWGFsYW58V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzJELmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2NpcGhlci5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvY2lwaGVyLnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1ZyBObyBYYWxhbnx4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIGNyeXB0MzIubGliIGxpYmVheTMyRC5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9jaXBoZXIuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL2NpcGhlci5wZGIiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9jaXBoZXIuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58eDY0Ig0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO1dJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2NpcGhlci5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCTwvQ29uZmlndXJhdGlvbnM+DQorCTxSZWZlcmVuY2VzPg0KKwk8L1JlZmVyZW5jZXM+DQorCTxGaWxlcz4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQorCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc20iDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRvb2xzXGNpcGhlclxjaXBoZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRvb2xzXGNpcGhlclxYZW5jSW50ZXJvcFJlc29sdmVyLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9IkhlYWRlciBGaWxlcyINCisJCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0b29sc1xjaXBoZXJcWGVuY0ludGVyb3BSZXNvbHZlci5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQk8L0ZpbHRlcj4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCisJCQlGaWx0ZXI9InJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSINCisJCQk+DQorCQk8L0ZpbHRlcj4NCisJPC9GaWxlcz4NCisJPEdsb2JhbHM+DQorCTwvR2xvYmFscz4NCis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzguMC94c2VjL3NpZ2luZi9zaWdpbmYudmNwcm9qIGIvYy9Qcm9qZWN0cy9WQzguMC94c2VjL3NpZ2luZi9zaWdpbmYudmNwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljZmUyZGQKLS0tIC9kZXYvbnVsbAorKysgYi9jL1Byb2plY3RzL1ZDOC4wL3hzZWMvc2lnaW5mL3NpZ2luZi52Y3Byb2oKQEAgLTAsMCArMSw3MTUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0DQorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KKwlWZXJzaW9uPSI4LjAwIg0KKwlOYW1lPSJzaWdpbmYiDQorCVByb2plY3RHVUlEPSJ7MjBFNDM3RkEtRjE4NC00RDYwLTlCM0ItNDM1OEVGRkE4QjQyfSINCisJUm9vdE5hbWVzcGFjZT0ic2lnaW5mIg0KKwlLZXl3b3JkPSJXaW4zMlByb2oiDQorCT4NCisJPFBsYXRmb3Jtcz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9IldpbjMyIg0KKwkJLz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9Ing2NCINCisJCS8+DQorCTwvUGxhdGZvcm1zPg0KKwk8VG9vbEZpbGVzPg0KKwk8L1Rvb2xGaWxlcz4NCisJPENvbmZpZ3VyYXRpb25zPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIFhhbGFuLUNfMUQubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3NpZ2luZi5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvc2lnaW5mLnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpJnF1b3Q7Ig0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmomcXVvdDsiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgWGFsYW4tQ18xRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvc2lnaW5mLmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS9zaWdpbmYucGRiIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIgWGFsYW4tQ18xLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3NpZ2luZi5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpJnF1b3Q7Ig0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmomcXVvdDsiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIgWGFsYW4tQ18xLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3NpZ2luZi5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnIE5vIFhhbGFufFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIGNyeXB0MzIubGliIGxpYmVheTMyRC5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9zaWdpbmYuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL3NpZ2luZi5wZGIiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWcgTm8gWGFsYW58eDY0Ig0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMkQubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvc2lnaW5mLmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS9zaWdpbmYucGRiIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlIE5vIFhhbGFufFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7V0lOMzI7TkRFQlVHO19DT05TT0xFIg0KKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMiINCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfMy5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvc2lnaW5mLmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlIE5vIFhhbGFufHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9zaWdpbmYuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwk8L0NvbmZpZ3VyYXRpb25zPg0KKwk8UmVmZXJlbmNlcz4NCisJPC9SZWZlcmVuY2VzPg0KKwk8RmlsZXM+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0b29sc1xzaWdpbmZcc2lnaW5mLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9IkhlYWRlciBGaWxlcyINCisJCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jIg0KKwkJCT4NCisJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9IlJlc291cmNlIEZpbGVzIg0KKwkJCUZpbHRlcj0icmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIg0KKwkJCT4NCisJCTwvRmlsdGVyPg0KKwk8L0ZpbGVzPg0KKwk8R2xvYmFscz4NCisJPC9HbG9iYWxzPg0KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9jL1Byb2plY3RzL1ZDOC4wL3hzZWMvdGVtcGxhdGVzaWduL3RlbXBsYXRlc2lnbi52Y3Byb2ogYi9jL1Byb2plY3RzL1ZDOC4wL3hzZWMvdGVtcGxhdGVzaWduL3RlbXBsYXRlc2lnbi52Y3Byb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjk3OWI2NwotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkM4LjAveHNlYy90ZW1wbGF0ZXNpZ24vdGVtcGxhdGVzaWduLnZjcHJvagpAQCAtMCwwICsxLDcxNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQorPFZpc3VhbFN0dWRpb1Byb2plY3QNCisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQorCVZlcnNpb249IjguMDAiDQorCU5hbWU9InRlbXBsYXRlc2lnbiINCisJUHJvamVjdEdVSUQ9InsxMENFMEU4Ni1ERjk0LTQyNDQtOUQ4MS1DMUQ1Q0REQTZBRDh9Ig0KKwlSb290TmFtZXNwYWNlPSJ0ZW1wbGF0ZXNpZ24iDQorCUtleXdvcmQ9IldpbjMyUHJvaiINCisJPg0KKwk8UGxhdGZvcm1zPg0KKwkJPFBsYXRmb3JtDQorCQkJTmFtZT0iV2luMzIiDQorCQkvPg0KKwkJPFBsYXRmb3JtDQorCQkJTmFtZT0ieDY0Ig0KKwkJLz4NCisJPC9QbGF0Zm9ybXM+DQorCTxUb29sRmlsZXM+DQorCTwvVG9vbEZpbGVzPg0KKwk8Q29uZmlndXJhdGlvbnM+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgWGFsYW4tQ18xRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvdGVtcGxhdGVzaWduLmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS90ZW1wbGF0ZXNpZ24ucGRiIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBYYWxhbi1DXzFELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS90ZW1wbGF0ZXNpZ24uZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL3RlbXBsYXRlc2lnbi5wZGIiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiBYYWxhbi1DXzEubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvdGVtcGxhdGVzaWduLmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiBYYWxhbi1DXzEubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvdGVtcGxhdGVzaWduLmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWcgTm8gWGFsYW58V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzJELmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3RlbXBsYXRlc2lnbi5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvdGVtcGxhdGVzaWduLnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1ZyBObyBYYWxhbnx4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIGNyeXB0MzIubGliIGxpYmVheTMyRC5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS90ZW1wbGF0ZXNpZ24uZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL3RlbXBsYXRlc2lnbi5wZGIiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS90ZW1wbGF0ZXNpZ24uZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58eDY0Ig0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO1dJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3RlbXBsYXRlc2lnbi5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCTwvQ29uZmlndXJhdGlvbnM+DQorCTxSZWZlcmVuY2VzPg0KKwk8L1JlZmVyZW5jZXM+DQorCTxGaWxlcz4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQorCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc20iDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRvb2xzXHRlbXBsYXRlc2lnblx0ZW1wbGF0ZXNpZ24uY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmMiDQorCQkJPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiDQorCQkJRmlsdGVyPSJyYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiDQorCQkJPg0KKwkJPC9GaWx0ZXI+DQorCTwvRmlsZXM+DQorCTxHbG9iYWxzPg0KKwk8L0dsb2JhbHM+DQorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkM4LjAveHNlYy90aHJlYWRUZXN0L3RocmVhZFRlc3QudmNwcm9qIGIvYy9Qcm9qZWN0cy9WQzguMC94c2VjL3RocmVhZFRlc3QvdGhyZWFkVGVzdC52Y3Byb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MzMGY1YgotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkM4LjAveHNlYy90aHJlYWRUZXN0L3RocmVhZFRlc3QudmNwcm9qCkBAIC0wLDAgKzEsNzE1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCis8VmlzdWFsU3R1ZGlvUHJvamVjdA0KKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCisJVmVyc2lvbj0iOC4wMCINCisJTmFtZT0idGhyZWFkVGVzdCINCisJUHJvamVjdEdVSUQ9Ins1RUU5QTBDNy03MkM4LTQ4RjMtQTZEQi02RTVCRjA3MTVEQzN9Ig0KKwlSb290TmFtZXNwYWNlPSJ0aHJlYWRUZXN0Ig0KKwlLZXl3b3JkPSJXaW4zMlByb2oiDQorCT4NCisJPFBsYXRmb3Jtcz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9IldpbjMyIg0KKwkJLz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9Ing2NCINCisJCS8+DQorCTwvUGxhdGZvcm1zPg0KKwk8VG9vbEZpbGVzPg0KKwk8L1Rvb2xGaWxlcz4NCisJPENvbmZpZ3VyYXRpb25zPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIFhhbGFuLUNfMUQubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3RocmVhZFRlc3QuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL3RocmVhZFRlc3QucGRiIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBYYWxhbi1DXzFELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS90aHJlYWRUZXN0LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS90aHJlYWRUZXN0LnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIg0KKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMiINCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfMy5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIFhhbGFuLUNfMS5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS90aHJlYWRUZXN0LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiBYYWxhbi1DXzEubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvdGhyZWFkVGVzdC5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnIE5vIFhhbGFufFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIGNyeXB0MzIubGliIGxpYmVheTMyRC5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS90aHJlYWRUZXN0LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS90aHJlYWRUZXN0LnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1ZyBObyBYYWxhbnx4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpJnF1b3Q7Ig0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmomcXVvdDsiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIGNyeXB0MzIubGliIGxpYmVheTMyRC5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS90aHJlYWRUZXN0LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS90aHJlYWRUZXN0LnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZSBObyBYYWxhbnxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO1dJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3RocmVhZFRlc3QuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58eDY0Ig0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO1dJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3RocmVhZFRlc3QuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwk8L0NvbmZpZ3VyYXRpb25zPg0KKwk8UmVmZXJlbmNlcz4NCisJPC9SZWZlcmVuY2VzPg0KKwk8RmlsZXM+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0b29sc1x0aHJlYWRUZXN0XHRocmVhZHRlc3QuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmMiDQorCQkJPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiDQorCQkJRmlsdGVyPSJyYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiDQorCQkJPg0KKwkJPC9GaWx0ZXI+DQorCTwvRmlsZXM+DQorCTxHbG9iYWxzPg0KKwk8L0dsb2JhbHM+DQorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkM4LjAveHNlYy90eGZtb3V0L3R4Zm1vdXQudmNwcm9qIGIvYy9Qcm9qZWN0cy9WQzguMC94c2VjL3R4Zm1vdXQvdHhmbW91dC52Y3Byb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI1OWQ1MAotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkM4LjAveHNlYy90eGZtb3V0L3R4Zm1vdXQudmNwcm9qCkBAIC0wLDAgKzEsNzE1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCis8VmlzdWFsU3R1ZGlvUHJvamVjdA0KKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCisJVmVyc2lvbj0iOC4wMCINCisJTmFtZT0idHhmbW91dCINCisJUHJvamVjdEdVSUQ9IntFMUE5NTUwNy1CM0U0LTQwNzUtOEMzMS1BMjRDOTQ2MEJGNjh9Ig0KKwlSb290TmFtZXNwYWNlPSJ0eGZtb3V0Ig0KKwlLZXl3b3JkPSJXaW4zMlByb2oiDQorCT4NCisJPFBsYXRmb3Jtcz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9IldpbjMyIg0KKwkJLz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9Ing2NCINCisJCS8+DQorCTwvUGxhdGZvcm1zPg0KKwk8VG9vbEZpbGVzPg0KKwk8L1Rvb2xGaWxlcz4NCisJPENvbmZpZ3VyYXRpb25zPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIFhhbGFuLUNfMUQubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3R4Zm1vdXQuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL3R4Zm1vdXQucGRiIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBYYWxhbi1DXzFELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS90eGZtb3V0LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS90eGZtb3V0LnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIg0KKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMiINCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfMy5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIFhhbGFuLUNfMS5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS90eGZtb3V0LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiBYYWxhbi1DXzEubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvdHhmbW91dC5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnIE5vIFhhbGFufFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIGNyeXB0MzIubGliIGxpYmVheTMyRC5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS90eGZtb3V0LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS90eGZtb3V0LnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1ZyBObyBYYWxhbnx4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpJnF1b3Q7Ig0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmomcXVvdDsiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIGNyeXB0MzIubGliIGxpYmVheTMyRC5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS90eGZtb3V0LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS90eGZtb3V0LnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZSBObyBYYWxhbnxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO1dJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3R4Zm1vdXQuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58eDY0Ig0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO1dJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3R4Zm1vdXQuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwk8L0NvbmZpZ3VyYXRpb25zPg0KKwk8UmVmZXJlbmNlcz4NCisJPC9SZWZlcmVuY2VzPg0KKwk8RmlsZXM+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0b29sc1x0eGZtb3V0XHR4Zm1vdXQuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmMiDQorCQkJPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiDQorCQkJRmlsdGVyPSJyYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiDQorCQkJPg0KKwkJPC9GaWx0ZXI+DQorCTwvRmlsZXM+DQorCTxHbG9iYWxzPg0KKwk8L0dsb2JhbHM+DQorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkM4LjAveHNlYy94a2xpZW50L3hrbGllbnQudmNwcm9qIGIvYy9Qcm9qZWN0cy9WQzguMC94c2VjL3hrbGllbnQveGtsaWVudC52Y3Byb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYwMTQ3YwotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkM4LjAveHNlYy94a2xpZW50L3hrbGllbnQudmNwcm9qCkBAIC0wLDAgKzEsNzAzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCis8VmlzdWFsU3R1ZGlvUHJvamVjdA0KKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCisJVmVyc2lvbj0iOC4wMCINCisJTmFtZT0ieGtsaWVudCINCisJUHJvamVjdEdVSUQ9Ins0ODM0NjY5NS0xNDk2LTQ4ODEtODcwOS1FNUMwMjM5MjkzMEF9Ig0KKwlSb290TmFtZXNwYWNlPSJ4a2xpZW50Ig0KKwlLZXl3b3JkPSJXaW4zMlByb2oiDQorCT4NCisJPFBsYXRmb3Jtcz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9IldpbjMyIg0KKwkJLz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9Ing2NCINCisJCS8+DQorCTwvUGxhdGZvcm1zPg0KKwk8VG9vbEZpbGVzPg0KKwk8L1Rvb2xGaWxlcz4NCisJPENvbmZpZ3VyYXRpb25zPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIFhhbGFuLUNfMUQubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3hrbGllbnQuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL3hrbGllbnQucGRiIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBYYWxhbi1DXzFELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS94a2xpZW50LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS94a2xpZW50LnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIg0KKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMiINCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfMy5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIFhhbGFuLUNfMS5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS94a2xpZW50LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiBYYWxhbi1DXzEubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikveGtsaWVudC5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnIE5vIFhhbGFufFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIGNyeXB0MzIubGliIGxpYmVheTMyRC5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS94a2xpZW50LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS94a2xpZW50LnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1ZyBObyBYYWxhbnx4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpJnF1b3Q7Ig0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmomcXVvdDsiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIGNyeXB0MzIubGliIGxpYmVheTMyRC5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS94a2xpZW50LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS94a2xpZW50LnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZSBObyBYYWxhbnxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO1dJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3hrbGllbnQuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58eDY0Ig0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO1dJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3hrbGllbnQuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwk8L0NvbmZpZ3VyYXRpb25zPg0KKwk8UmVmZXJlbmNlcz4NCisJPC9SZWZlcmVuY2VzPg0KKwk8RmlsZXM+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0b29sc1x4a2xpZW50XHhrbGllbnQuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmMiDQorCQkJPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiDQorCQkJRmlsdGVyPSJyYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiDQorCQkJPg0KKwkJPC9GaWx0ZXI+DQorCTwvRmlsZXM+DQorCTxHbG9iYWxzPg0KKwk8L0dsb2JhbHM+DQorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkM4LjAveHNlYy94c2VjLnNsbiBiL2MvUHJvamVjdHMvVkM4LjAveHNlYy94c2VjLnNsbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWY4M2JhCi0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzguMC94c2VjL3hzZWMuc2xuCkBAIC0wLDAgKzEsMjI2IEBACitNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiA5LjAwDQorIyBWaXN1YWwgU3R1ZGlvIDIwMDUNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInhzZWNfbGliIiwgInhzZWNfbGliXHhzZWNfbGliLnZjcHJvaiIsICJ7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ4dGVzdCIsICJ4dGVzdFx4dGVzdC52Y3Byb2oiLCAiezEyN0IzRTYxLTA5NkMtNDM4QS1CRjMzLTVBOUYwNUM3MDM1QX0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9ID0ge0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjMTRuIiwgImMxNG5cYzE0bi52Y3Byb2oiLCAie0FERkI0QTFBLTlDQjQtNEJFRS05REU4LTY1ODQ3MDg2MjRDNH0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9ID0ge0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjaGVja3NpZyIsICJjaGVja3NpZ1xjaGVja3NpZy52Y3Byb2oiLCAie0IzMkI5NTk2LUUyNTAtNDFENS04QUE4LUE2MjMyMjZDOTAxOH0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9ID0ge0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjaXBoZXIiLCAiY2lwaGVyXGNpcGhlci52Y3Byb2oiLCAiezBDNDU1QTk1LTk5MUItNDAxOS04ODcyLUFBMUZFNjEzOUY2OX0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9ID0ge0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzaWdpbmYiLCAic2lnaW5mXHNpZ2luZi52Y3Byb2oiLCAiezIwRTQzN0ZBLUYxODQtNEQ2MC05QjNCLTQzNThFRkZBOEI0Mn0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9ID0ge0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ0ZW1wbGF0ZXNpZ24iLCAidGVtcGxhdGVzaWduXHRlbXBsYXRlc2lnbi52Y3Byb2oiLCAiezEwQ0UwRTg2LURGOTQtNDI0NC05RDgxLUMxRDVDRERBNkFEOH0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9ID0ge0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ0aHJlYWRUZXN0IiwgInRocmVhZFRlc3RcdGhyZWFkVGVzdC52Y3Byb2oiLCAiezVFRTlBMEM3LTcyQzgtNDhGMy1BNkRCLTZFNUJGMDcxNURDM30iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9ID0ge0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ0eGZtb3V0IiwgInR4Zm1vdXRcdHhmbW91dC52Y3Byb2oiLCAie0UxQTk1NTA3LUIzRTQtNDA3NS04QzMxLUEyNEM5NDYwQkY2OH0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9ID0ge0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ4a2xpZW50IiwgInhrbGllbnRceGtsaWVudC52Y3Byb2oiLCAiezQ4MzQ2Njk1LTE0OTYtNDg4MS04NzA5LUU1QzAyMzkyOTMwQX0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9ID0ge0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorR2xvYmFsDQorCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uDQorCQlEZWJ1ZyBObyBYYWxhbnxXaW4zMiA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQlEZWJ1ZyBObyBYYWxhbnx4NjQgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCURlYnVnfFdpbjMyID0gRGVidWd8V2luMzINCisJCURlYnVnfHg2NCA9IERlYnVnfHg2NA0KKwkJUmVsZWFzZSBObyBYYWxhbnxXaW4zMiA9IFJlbGVhc2UgTm8gWGFsYW58V2luMzINCisJCVJlbGVhc2UgTm8gWGFsYW58eDY0ID0gUmVsZWFzZSBObyBYYWxhbnx4NjQNCisJCVJlbGVhc2V8V2luMzIgPSBSZWxlYXNlfFdpbjMyDQorCQlSZWxlYXNlfHg2NCA9IFJlbGVhc2V8eDY0DQorCUVuZEdsb2JhbFNlY3Rpb24NCisJR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24NCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9LkRlYnVnIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9LkRlYnVnIE5vIFhhbGFufHg2NC5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfS5SZWxlYXNlIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJe0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58eDY0DQorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXsxMjdCM0U2MS0wOTZDLTQzOEEtQkYzMy01QTlGMDVDNzAzNUF9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7MTI3QjNFNjEtMDk2Qy00MzhBLUJGMzMtNUE5RjA1QzcwMzVBfS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXsxMjdCM0U2MS0wOTZDLTQzOEEtQkYzMy01QTlGMDVDNzAzNUF9LkRlYnVnIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCXsxMjdCM0U2MS0wOTZDLTQzOEEtQkYzMy01QTlGMDVDNzAzNUF9LkRlYnVnIE5vIFhhbGFufHg2NC5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7MTI3QjNFNjEtMDk2Qy00MzhBLUJGMzMtNUE5RjA1QzcwMzVBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezEyN0IzRTYxLTA5NkMtNDM4QS1CRjMzLTVBOUYwNUM3MDM1QX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7MTI3QjNFNjEtMDk2Qy00MzhBLUJGMzMtNUE5RjA1QzcwMzVBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7MTI3QjNFNjEtMDk2Qy00MzhBLUJGMzMtNUE5RjA1QzcwMzVBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezEyN0IzRTYxLTA5NkMtNDM4QS1CRjMzLTVBOUYwNUM3MDM1QX0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7MTI3QjNFNjEtMDk2Qy00MzhBLUJGMzMtNUE5RjA1QzcwMzVBfS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7MTI3QjNFNjEtMDk2Qy00MzhBLUJGMzMtNUE5RjA1QzcwMzVBfS5SZWxlYXNlIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJezEyN0IzRTYxLTA5NkMtNDM4QS1CRjMzLTVBOUYwNUM3MDM1QX0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58eDY0DQorCQl7MTI3QjNFNjEtMDk2Qy00MzhBLUJGMzMtNUE5RjA1QzcwMzVBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxMjdCM0U2MS0wOTZDLTQzOEEtQkYzMy01QTlGMDVDNzAzNUF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsxMjdCM0U2MS0wOTZDLTQzOEEtQkYzMy01QTlGMDVDNzAzNUF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MTI3QjNFNjEtMDk2Qy00MzhBLUJGMzMtNUE5RjA1QzcwMzVBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtBREZCNEExQS05Q0I0LTRCRUUtOURFOC02NTg0NzA4NjI0QzR9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7QURGQjRBMUEtOUNCNC00QkVFLTlERTgtNjU4NDcwODYyNEM0fS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXtBREZCNEExQS05Q0I0LTRCRUUtOURFOC02NTg0NzA4NjI0QzR9LkRlYnVnIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCXtBREZCNEExQS05Q0I0LTRCRUUtOURFOC02NTg0NzA4NjI0QzR9LkRlYnVnIE5vIFhhbGFufHg2NC5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7QURGQjRBMUEtOUNCNC00QkVFLTlERTgtNjU4NDcwODYyNEM0fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0FERkI0QTFBLTlDQjQtNEJFRS05REU4LTY1ODQ3MDg2MjRDNH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7QURGQjRBMUEtOUNCNC00QkVFLTlERTgtNjU4NDcwODYyNEM0fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7QURGQjRBMUEtOUNCNC00QkVFLTlERTgtNjU4NDcwODYyNEM0fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0FERkI0QTFBLTlDQjQtNEJFRS05REU4LTY1ODQ3MDg2MjRDNH0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7QURGQjRBMUEtOUNCNC00QkVFLTlERTgtNjU4NDcwODYyNEM0fS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7QURGQjRBMUEtOUNCNC00QkVFLTlERTgtNjU4NDcwODYyNEM0fS5SZWxlYXNlIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJe0FERkI0QTFBLTlDQjQtNEJFRS05REU4LTY1ODQ3MDg2MjRDNH0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58eDY0DQorCQl7QURGQjRBMUEtOUNCNC00QkVFLTlERTgtNjU4NDcwODYyNEM0fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtBREZCNEExQS05Q0I0LTRCRUUtOURFOC02NTg0NzA4NjI0QzR9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtBREZCNEExQS05Q0I0LTRCRUUtOURFOC02NTg0NzA4NjI0QzR9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QURGQjRBMUEtOUNCNC00QkVFLTlERTgtNjU4NDcwODYyNEM0fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtCMzJCOTU5Ni1FMjUwLTQxRDUtOEFBOC1BNjIzMjI2QzkwMTh9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXtCMzJCOTU5Ni1FMjUwLTQxRDUtOEFBOC1BNjIzMjI2QzkwMTh9LkRlYnVnIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCXtCMzJCOTU5Ni1FMjUwLTQxRDUtOEFBOC1BNjIzMjI2QzkwMTh9LkRlYnVnIE5vIFhhbGFufHg2NC5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0IzMkI5NTk2LUUyNTAtNDFENS04QUE4LUE2MjMyMjZDOTAxOH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0IzMkI5NTk2LUUyNTAtNDFENS04QUE4LUE2MjMyMjZDOTAxOH0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fS5SZWxlYXNlIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJe0IzMkI5NTk2LUUyNTAtNDFENS04QUE4LUE2MjMyMjZDOTAxOH0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58eDY0DQorCQl7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtCMzJCOTU5Ni1FMjUwLTQxRDUtOEFBOC1BNjIzMjI2QzkwMTh9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtCMzJCOTU5Ni1FMjUwLTQxRDUtOEFBOC1BNjIzMjI2QzkwMTh9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXswQzQ1NUE5NS05OTFCLTQwMTktODg3Mi1BQTFGRTYxMzlGNjl9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXswQzQ1NUE5NS05OTFCLTQwMTktODg3Mi1BQTFGRTYxMzlGNjl9LkRlYnVnIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCXswQzQ1NUE5NS05OTFCLTQwMTktODg3Mi1BQTFGRTYxMzlGNjl9LkRlYnVnIE5vIFhhbGFufHg2NC5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezBDNDU1QTk1LTk5MUItNDAxOS04ODcyLUFBMUZFNjEzOUY2OX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezBDNDU1QTk1LTk5MUItNDAxOS04ODcyLUFBMUZFNjEzOUY2OX0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fS5SZWxlYXNlIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJezBDNDU1QTk1LTk5MUItNDAxOS04ODcyLUFBMUZFNjEzOUY2OX0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58eDY0DQorCQl7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXswQzQ1NUE5NS05OTFCLTQwMTktODg3Mi1BQTFGRTYxMzlGNjl9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXswQzQ1NUE5NS05OTFCLTQwMTktODg3Mi1BQTFGRTYxMzlGNjl9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXsyMEU0MzdGQS1GMTg0LTRENjAtOUIzQi00MzU4RUZGQThCNDJ9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7MjBFNDM3RkEtRjE4NC00RDYwLTlCM0ItNDM1OEVGRkE4QjQyfS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXsyMEU0MzdGQS1GMTg0LTRENjAtOUIzQi00MzU4RUZGQThCNDJ9LkRlYnVnIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCXsyMEU0MzdGQS1GMTg0LTRENjAtOUIzQi00MzU4RUZGQThCNDJ9LkRlYnVnIE5vIFhhbGFufHg2NC5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7MjBFNDM3RkEtRjE4NC00RDYwLTlCM0ItNDM1OEVGRkE4QjQyfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezIwRTQzN0ZBLUYxODQtNEQ2MC05QjNCLTQzNThFRkZBOEI0Mn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7MjBFNDM3RkEtRjE4NC00RDYwLTlCM0ItNDM1OEVGRkE4QjQyfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7MjBFNDM3RkEtRjE4NC00RDYwLTlCM0ItNDM1OEVGRkE4QjQyfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezIwRTQzN0ZBLUYxODQtNEQ2MC05QjNCLTQzNThFRkZBOEI0Mn0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7MjBFNDM3RkEtRjE4NC00RDYwLTlCM0ItNDM1OEVGRkE4QjQyfS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7MjBFNDM3RkEtRjE4NC00RDYwLTlCM0ItNDM1OEVGRkE4QjQyfS5SZWxlYXNlIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJezIwRTQzN0ZBLUYxODQtNEQ2MC05QjNCLTQzNThFRkZBOEI0Mn0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58eDY0DQorCQl7MjBFNDM3RkEtRjE4NC00RDYwLTlCM0ItNDM1OEVGRkE4QjQyfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsyMEU0MzdGQS1GMTg0LTRENjAtOUIzQi00MzU4RUZGQThCNDJ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsyMEU0MzdGQS1GMTg0LTRENjAtOUIzQi00MzU4RUZGQThCNDJ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MjBFNDM3RkEtRjE4NC00RDYwLTlCM0ItNDM1OEVGRkE4QjQyfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXsxMENFMEU4Ni1ERjk0LTQyNDQtOUQ4MS1DMUQ1Q0REQTZBRDh9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7MTBDRTBFODYtREY5NC00MjQ0LTlEODEtQzFENUNEREE2QUQ4fS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXsxMENFMEU4Ni1ERjk0LTQyNDQtOUQ4MS1DMUQ1Q0REQTZBRDh9LkRlYnVnIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCXsxMENFMEU4Ni1ERjk0LTQyNDQtOUQ4MS1DMUQ1Q0REQTZBRDh9LkRlYnVnIE5vIFhhbGFufHg2NC5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7MTBDRTBFODYtREY5NC00MjQ0LTlEODEtQzFENUNEREE2QUQ4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezEwQ0UwRTg2LURGOTQtNDI0NC05RDgxLUMxRDVDRERBNkFEOH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7MTBDRTBFODYtREY5NC00MjQ0LTlEODEtQzFENUNEREE2QUQ4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7MTBDRTBFODYtREY5NC00MjQ0LTlEODEtQzFENUNEREE2QUQ4fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezEwQ0UwRTg2LURGOTQtNDI0NC05RDgxLUMxRDVDRERBNkFEOH0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7MTBDRTBFODYtREY5NC00MjQ0LTlEODEtQzFENUNEREE2QUQ4fS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7MTBDRTBFODYtREY5NC00MjQ0LTlEODEtQzFENUNEREE2QUQ4fS5SZWxlYXNlIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJezEwQ0UwRTg2LURGOTQtNDI0NC05RDgxLUMxRDVDRERBNkFEOH0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58eDY0DQorCQl7MTBDRTBFODYtREY5NC00MjQ0LTlEODEtQzFENUNEREE2QUQ4fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxMENFMEU4Ni1ERjk0LTQyNDQtOUQ4MS1DMUQ1Q0REQTZBRDh9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsxMENFMEU4Ni1ERjk0LTQyNDQtOUQ4MS1DMUQ1Q0REQTZBRDh9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MTBDRTBFODYtREY5NC00MjQ0LTlEODEtQzFENUNEREE2QUQ4fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs1RUU5QTBDNy03MkM4LTQ4RjMtQTZEQi02RTVCRjA3MTVEQzN9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7NUVFOUEwQzctNzJDOC00OEYzLUE2REItNkU1QkYwNzE1REMzfS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXs1RUU5QTBDNy03MkM4LTQ4RjMtQTZEQi02RTVCRjA3MTVEQzN9LkRlYnVnIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCXs1RUU5QTBDNy03MkM4LTQ4RjMtQTZEQi02RTVCRjA3MTVEQzN9LkRlYnVnIE5vIFhhbGFufHg2NC5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7NUVFOUEwQzctNzJDOC00OEYzLUE2REItNkU1QkYwNzE1REMzfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezVFRTlBMEM3LTcyQzgtNDhGMy1BNkRCLTZFNUJGMDcxNURDM30uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7NUVFOUEwQzctNzJDOC00OEYzLUE2REItNkU1QkYwNzE1REMzfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7NUVFOUEwQzctNzJDOC00OEYzLUE2REItNkU1QkYwNzE1REMzfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezVFRTlBMEM3LTcyQzgtNDhGMy1BNkRCLTZFNUJGMDcxNURDM30uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7NUVFOUEwQzctNzJDOC00OEYzLUE2REItNkU1QkYwNzE1REMzfS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7NUVFOUEwQzctNzJDOC00OEYzLUE2REItNkU1QkYwNzE1REMzfS5SZWxlYXNlIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJezVFRTlBMEM3LTcyQzgtNDhGMy1BNkRCLTZFNUJGMDcxNURDM30uUmVsZWFzZSBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58eDY0DQorCQl7NUVFOUEwQzctNzJDOC00OEYzLUE2REItNkU1QkYwNzE1REMzfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs1RUU5QTBDNy03MkM4LTQ4RjMtQTZEQi02RTVCRjA3MTVEQzN9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs1RUU5QTBDNy03MkM4LTQ4RjMtQTZEQi02RTVCRjA3MTVEQzN9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7NUVFOUEwQzctNzJDOC00OEYzLUE2REItNkU1QkYwNzE1REMzfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtFMUE5NTUwNy1CM0U0LTQwNzUtOEMzMS1BMjRDOTQ2MEJGNjh9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7RTFBOTU1MDctQjNFNC00MDc1LThDMzEtQTI0Qzk0NjBCRjY4fS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXtFMUE5NTUwNy1CM0U0LTQwNzUtOEMzMS1BMjRDOTQ2MEJGNjh9LkRlYnVnIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCXtFMUE5NTUwNy1CM0U0LTQwNzUtOEMzMS1BMjRDOTQ2MEJGNjh9LkRlYnVnIE5vIFhhbGFufHg2NC5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7RTFBOTU1MDctQjNFNC00MDc1LThDMzEtQTI0Qzk0NjBCRjY4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0UxQTk1NTA3LUIzRTQtNDA3NS04QzMxLUEyNEM5NDYwQkY2OH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7RTFBOTU1MDctQjNFNC00MDc1LThDMzEtQTI0Qzk0NjBCRjY4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7RTFBOTU1MDctQjNFNC00MDc1LThDMzEtQTI0Qzk0NjBCRjY4fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0UxQTk1NTA3LUIzRTQtNDA3NS04QzMxLUEyNEM5NDYwQkY2OH0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7RTFBOTU1MDctQjNFNC00MDc1LThDMzEtQTI0Qzk0NjBCRjY4fS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7RTFBOTU1MDctQjNFNC00MDc1LThDMzEtQTI0Qzk0NjBCRjY4fS5SZWxlYXNlIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJe0UxQTk1NTA3LUIzRTQtNDA3NS04QzMxLUEyNEM5NDYwQkY2OH0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58eDY0DQorCQl7RTFBOTU1MDctQjNFNC00MDc1LThDMzEtQTI0Qzk0NjBCRjY4fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtFMUE5NTUwNy1CM0U0LTQwNzUtOEMzMS1BMjRDOTQ2MEJGNjh9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtFMUE5NTUwNy1CM0U0LTQwNzUtOEMzMS1BMjRDOTQ2MEJGNjh9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7RTFBOTU1MDctQjNFNC00MDc1LThDMzEtQTI0Qzk0NjBCRjY4fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs0ODM0NjY5NS0xNDk2LTQ4ODEtODcwOS1FNUMwMjM5MjkzMEF9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7NDgzNDY2OTUtMTQ5Ni00ODgxLTg3MDktRTVDMDIzOTI5MzBBfS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXs0ODM0NjY5NS0xNDk2LTQ4ODEtODcwOS1FNUMwMjM5MjkzMEF9LkRlYnVnIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCXs0ODM0NjY5NS0xNDk2LTQ4ODEtODcwOS1FNUMwMjM5MjkzMEF9LkRlYnVnIE5vIFhhbGFufHg2NC5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7NDgzNDY2OTUtMTQ5Ni00ODgxLTg3MDktRTVDMDIzOTI5MzBBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezQ4MzQ2Njk1LTE0OTYtNDg4MS04NzA5LUU1QzAyMzkyOTMwQX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7NDgzNDY2OTUtMTQ5Ni00ODgxLTg3MDktRTVDMDIzOTI5MzBBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7NDgzNDY2OTUtMTQ5Ni00ODgxLTg3MDktRTVDMDIzOTI5MzBBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezQ4MzQ2Njk1LTE0OTYtNDg4MS04NzA5LUU1QzAyMzkyOTMwQX0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7NDgzNDY2OTUtMTQ5Ni00ODgxLTg3MDktRTVDMDIzOTI5MzBBfS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7NDgzNDY2OTUtMTQ5Ni00ODgxLTg3MDktRTVDMDIzOTI5MzBBfS5SZWxlYXNlIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJezQ4MzQ2Njk1LTE0OTYtNDg4MS04NzA5LUU1QzAyMzkyOTMwQX0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58eDY0DQorCQl7NDgzNDY2OTUtMTQ5Ni00ODgxLTg3MDktRTVDMDIzOTI5MzBBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs0ODM0NjY5NS0xNDk2LTQ4ODEtODcwOS1FNUMwMjM5MjkzMEF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs0ODM0NjY5NS0xNDk2LTQ4ODEtODcwOS1FNUMwMjM5MjkzMEF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7NDgzNDY2OTUtMTQ5Ni00ODgxLTg3MDktRTVDMDIzOTI5MzBBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJRW5kR2xvYmFsU2VjdGlvbg0KKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbg0KKwkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFDQorCUVuZEdsb2JhbFNlY3Rpb24NCitFbmRHbG9iYWwNCmRpZmYgLS1naXQgYS9jL1Byb2plY3RzL1ZDOC4wL3hzZWMveHNlY19saWIveHNlY19saWIudmNwcm9qIGIvYy9Qcm9qZWN0cy9WQzguMC94c2VjL3hzZWNfbGliL3hzZWNfbGliLnZjcHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDIxM2FlCi0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzguMC94c2VjL3hzZWNfbGliL3hzZWNfbGliLnZjcHJvagpAQCAtMCwwICsxLDIxNzMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0DQorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KKwlWZXJzaW9uPSI4LjAwIg0KKwlOYW1lPSJ4c2VjX2xpYiINCisJUHJvamVjdEdVSUQ9IntENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9Ig0KKwlSb290TmFtZXNwYWNlPSJ4c2VjX2xpYiINCisJS2V5d29yZD0iV2luMzJQcm9qIg0KKwk+DQorCTxQbGF0Zm9ybXM+DQorCQk8UGxhdGZvcm0NCisJCQlOYW1lPSJXaW4zMiINCisJCS8+DQorCQk8UGxhdGZvcm0NCisJCQlOYW1lPSJ4NjQiDQorCQkvPg0KKwk8L1BsYXRmb3Jtcz4NCisJPFRvb2xGaWxlcz4NCisJPC9Ub29sRmlsZXM+DQorCTxDb25maWd1cmF0aW9ucz4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkJRGVzY3JpcHRpb249IkNyZWF0ZSBIZWFkZXIgZmlsZXMiDQorCQkJCUNvbW1hbmRMaW5lPSJta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlJiN4MEQ7JiN4MEE7bWtkaXIgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjJiN4MEQ7JiN4MEE7ZGVsIC9xIC9zIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlY1wqLiomI3gwRDsmI3gwQTt4Y29weSAvSSAvcyAvZiAuLlwuLlwuLlwuLlxzcmNcKi5ocHAgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjJiN4MEQ7JiN4MEE7Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfV0lORE9XUztfVVNSRExMO1hTRUNfTElCX0VYUE9SVFM7UFJPSl9DQU5PTjtQUk9KX0RTSUciDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJUaHJvdWdoPSIiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgWGFsYW4tQ18xRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikveHNlY18xXzZELmRsbCINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS94c2VjX2xpYi5wZGIiDQorCQkJCVN1YlN5c3RlbT0iMiINCisJCQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXIpL3hzZWNfMUQubGliIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkJRGVzY3JpcHRpb249IkNyZWF0ZSBIZWFkZXIgZmlsZXMiDQorCQkJCUNvbW1hbmRMaW5lPSJta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlJiN4MEQ7JiN4MEE7bWtkaXIgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjJiN4MEQ7JiN4MEE7ZGVsIC9xIC9zIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlY1wqLiomI3gwRDsmI3gwQTt4Y29weSAvSSAvcyAvZiAuLlwuLlwuLlwuLlxzcmNcKi5ocHAgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjJiN4MEQ7JiN4MEE7Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtYU0VDX0xJQl9FWFBPUlRTO1BST0pfQ0FOT047UFJPSl9EU0lHIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyVGhyb3VnaD0iIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIFhhbGFuLUNfMUQubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3hzZWNfMV82RC5kbGwiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikveHNlY19saWIucGRiIg0KKwkJCQlTdWJTeXN0ZW09IjIiDQorCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKS94c2VjXzFELmxpYiINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkJRGVzY3JpcHRpb249IkNyZWF0ZSBIZWFkZXIgZmlsZXMiDQorCQkJCUNvbW1hbmRMaW5lPSJta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlJiN4MEQ7JiN4MEE7bWtkaXIgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjJiN4MEQ7JiN4MEE7ZGVsIC9xIC9zIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlY1wqLiomI3gwRDsmI3gwQTt4Y29weSAvSSAvcyAvZiAuLlwuLlwuLlwuLlxzcmNcKi5ocHAgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjJiN4MEQ7JiN4MEE7Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19XSU5ET1dTO19VU1JETEw7WFNFQ19MSUJfRVhQT1JUUztQUk9KX0NBTk9OO1BST0pfRFNJRyINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJUaHJvdWdoPSIiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIgWGFsYW4tQ18xLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3hzZWNfMV82LmRsbCINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMiINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcikveHNlY18xLmxpYiINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkJRGVzY3JpcHRpb249IkNyZWF0ZSBIZWFkZXIgZmlsZXMiDQorCQkJCUNvbW1hbmRMaW5lPSJta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlJiN4MEQ7JiN4MEE7bWtkaXIgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjJiN4MEQ7JiN4MEE7ZGVsIC9xIC9zIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlY1wqLiomI3gwRDsmI3gwQTt4Y29weSAvSSAvcyAvZiAuLlwuLlwuLlwuLlxzcmNcKi5ocHAgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjJiN4MEQ7JiN4MEE7Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfV0lORE9XUztfVVNSRExMO1hTRUNfTElCX0VYUE9SVFM7UFJPSl9DQU5PTjtQUk9KX0RTSUciDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyVGhyb3VnaD0iIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfMy5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIFhhbGFuLUNfMS5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS94c2VjXzFfNi5kbGwiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjIiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXIpL3hzZWNfMS5saWIiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1ZyBObyBYYWxhbnxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCQlEZXNjcmlwdGlvbj0iQ3JlYXRlIEhlYWRlciBmaWxlcyINCisJCQkJQ29tbWFuZExpbmU9Im1rZGlyIC4uXC4uXC4uXC4uXGluY2x1ZGUmI3gwRDsmI3gwQTtta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWMmI3gwRDsmI3gwQTtkZWwgL3EgL3MgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjXCouKiYjeDBEOyYjeDBBO3hjb3B5IC9JIC9zIC9mIC4uXC4uXC4uXC4uXHNyY1wqLmhwcCAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWMmI3gwRDsmI3gwQTsiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfV0lORE9XUztfVVNSRExMO1hTRUNfTElCX0VYUE9SVFM7UFJPSl9DQU5PTjtQUk9KX0RTSUciDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJUaHJvdWdoPSIiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzJELmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3hzZWNfMV82RC5kbGwiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikveHNlY19saWIucGRiIg0KKwkJCQlTdWJTeXN0ZW09IjIiDQorCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKS94c2VjXzFELmxpYiINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWcgTm8gWGFsYW58eDY0Ig0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJCURlc2NyaXB0aW9uPSJDcmVhdGUgSGVhZGVyIGZpbGVzIg0KKwkJCQlDb21tYW5kTGluZT0ibWtkaXIgLi5cLi5cLi5cLi5caW5jbHVkZSYjeDBEOyYjeDBBO21rZGlyIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlYyYjeDBEOyYjeDBBO2RlbCAvcSAvcyAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWNcKi4qJiN4MEQ7JiN4MEE7eGNvcHkgL0kgL3MgL2YgLi5cLi5cLi5cLi5cc3JjXCouaHBwIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlYyYjeDBEOyYjeDBBOyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfV0lORE9XUztfVVNSRExMO1hTRUNfTElCX0VYUE9SVFM7UFJPSl9DQU5PTjtQUk9KX0RTSUciDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJUaHJvdWdoPSIiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzJELmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3hzZWNfMV82RC5kbGwiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikveHNlY19saWIucGRiIg0KKwkJCQlTdWJTeXN0ZW09IjIiDQorCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKS94c2VjXzFELmxpYiINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkJRGVzY3JpcHRpb249IkNyZWF0ZSBIZWFkZXIgZmlsZXMiDQorCQkJCUNvbW1hbmRMaW5lPSJta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlJiN4MEQ7JiN4MEE7bWtkaXIgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjJiN4MEQ7JiN4MEE7ZGVsIC9xIC9zIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlY1wqLiomI3gwRDsmI3gwQTt4Y29weSAvSSAvcyAvZiAuLlwuLlwuLlwuLlxzcmNcKi5ocHAgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjJiN4MEQ7JiN4MEE7Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO1dJTjMyO05ERUJVRztfV0lORE9XUztfVVNSRExMO1hTRUNfTElCX0VYUE9SVFM7UFJPSl9DQU5PTjtQUk9KX0RTSUciDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyVGhyb3VnaD0iIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfMy5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikveHNlY18xXzYuZGxsIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIyIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKS94c2VjXzEubGliIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlIE5vIFhhbGFufHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCQlEZXNjcmlwdGlvbj0iQ3JlYXRlIEhlYWRlciBmaWxlcyINCisJCQkJQ29tbWFuZExpbmU9Im1rZGlyIC4uXC4uXC4uXC4uXGluY2x1ZGUmI3gwRDsmI3gwQTtta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWMmI3gwRDsmI3gwQTtkZWwgL3EgL3MgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjXCouKiYjeDBEOyYjeDBBO3hjb3B5IC9JIC9zIC9mIC4uXC4uXC4uXC4uXHNyY1wqLmhwcCAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWMmI3gwRDsmI3gwQTsiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO1dJTjMyO05ERUJVRztfV0lORE9XUztfVVNSRExMO1hTRUNfTElCX0VYUE9SVFM7UFJPSl9DQU5PTjtQUk9KX0RTSUciDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyVGhyb3VnaD0iIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfMy5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikveHNlY18xXzYuZGxsIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIyIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKS94c2VjXzEubGliIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJPC9Db25maWd1cmF0aW9ucz4NCisJPFJlZmVyZW5jZXM+DQorCTwvUmVmZXJlbmNlcz4NCisJPEZpbGVzPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9ImNhbm9uIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xjYW5vblxYU0VDQzE0bjIwMDEwMzE1LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xjYW5vblxYU0VDQzE0bjIwMDEwMzE1LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xjYW5vblxYU0VDQ2Fub24uY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGNhbm9uXFhTRUNDYW5vbi5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcY2Fub25cWFNFQ1hNTE5TU3RhY2suY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGNhbm9uXFhTRUNYTUxOU1N0YWNrLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9ImRzaWciDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdBbGdvcml0aG1IYW5kbGVyRGVmYXVsdC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHQ29uc3RhbnRzLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdDb25zdGFudHMuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm8uaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9MaXN0LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvTGlzdC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHS2V5SW5mb01nbXREYXRhLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvTWdtdERhdGEuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9OYW1lLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvTmFtZS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHS2V5SW5mb1BHUERhdGEuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9QR1BEYXRhLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvU1BLSURhdGEuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9TUEtJRGF0YS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHS2V5SW5mb1ZhbHVlLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvVmFsdWUuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9YNTA5LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvWDUwOS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorICAgICAgICAgICAgPEZpbGUNCisgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHS2V5SW5mb0V4dC5jcHAiDQorICAgICAgICAgICAgICAgID4NCisgICAgICAgICAgICA8L0ZpbGU+DQorICAgICAgICAgICAgPEZpbGUNCisgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHS2V5SW5mb0V4dC5ocHAiDQorICAgICAgICAgICAgICAgID4NCisgICAgICAgICAgICA8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHT2JqZWN0LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdPYmplY3QuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1JlZmVyZW5jZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHUmVmZXJlbmNlLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdSZWZlcmVuY2VMaXN0LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdSZWZlcmVuY2VMaXN0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdTaWduYXR1cmUuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1NpZ25hdHVyZS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHU2lnbmVkSW5mby5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHU2lnbmVkSW5mby5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHVHJhbnNmb3JtLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm0uaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1RyYW5zZm9ybUJhc2U2NC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHVHJhbnNmb3JtQmFzZTY0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1DMTRuLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1DMTRuLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1FbnZlbG9wZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHVHJhbnNmb3JtRW52ZWxvcGUuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1RyYW5zZm9ybUxpc3QuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1RyYW5zZm9ybUxpc3QuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1RyYW5zZm9ybVhQYXRoLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1YUGF0aC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHVHJhbnNmb3JtWFBhdGhGaWx0ZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1YU0wuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1RyYW5zZm9ybVhTTC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHWFBhdGhGaWx0ZXJFeHByLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdYUGF0aEZpbHRlckV4cHIuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1hQYXRoSGVyZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHWFBhdGhIZXJlLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9IlJlc291cmNlIEZpbGVzIg0KKwkJCUZpbHRlcj0icmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtccmVzb3VyY2UuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcdmVyc2lvbi5yYyINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9ImVuYyINCisJCQk+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9CYXNlNjQuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDQ3J5cHRvQmFzZTY0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b0V4Y2VwdGlvbi5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9FeGNlcHRpb24uaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDQ3J5cHRvSGFzaC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9LZXkuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDQ3J5cHRvS2V5RFNBLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b0tleUhNQUMuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDQ3J5cHRvS2V5UlNBLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b1Byb3ZpZGVyLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b1N5bW1ldHJpY0tleS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9VdGlscy5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9VdGlscy5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9YNTA5LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b1g1MDkuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDS2V5SW5mb1Jlc29sdmVyLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0tleUluZm9SZXNvbHZlckRlZmF1bHQuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDS2V5SW5mb1Jlc29sdmVyRGVmYXVsdC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbHRlcg0KKwkJCQlOYW1lPSJPcGVuU1NMIg0KKwkJCQk+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvQmFzZTY0LmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b0Jhc2U2NC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9IYXNoLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b0hhc2guaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvSGFzaEhNQUMuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvSGFzaEhNQUMuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvS2V5RFNBLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b0tleURTQS5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9LZXlITUFDLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b0tleUhNQUMuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvS2V5UlNBLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b0tleVJTQS5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9Qcm92aWRlci5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9Qcm92aWRlci5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9TeW1tZXRyaWNLZXkuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5LmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b1g1MDkuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvWDUwOS5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQk8L0ZpbHRlcj4NCisJCQk8RmlsdGVyDQorCQkJCU5hbWU9IldpbkNBUEkiDQorCQkJCT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xXaW5DQVBJXFdpbkNBUElDcnlwdG9IYXNoLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFdpbkNBUElcV2luQ0FQSUNyeXB0b0hhc2guaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvSGFzaEhNQUMuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvSGFzaEhNQUMuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvS2V5RFNBLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFdpbkNBUElcV2luQ0FQSUNyeXB0b0tleURTQS5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xXaW5DQVBJXFdpbkNBUElDcnlwdG9LZXlITUFDLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFdpbkNBUElcV2luQ0FQSUNyeXB0b0tleUhNQUMuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvS2V5UlNBLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFdpbkNBUElcV2luQ0FQSUNyeXB0b0tleVJTQS5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xXaW5DQVBJXFdpbkNBUElDcnlwdG9Qcm92aWRlci5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xXaW5DQVBJXFdpbkNBUElDcnlwdG9Qcm92aWRlci5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xXaW5DQVBJXFdpbkNBUElDcnlwdG9TeW1tZXRyaWNLZXkuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvU3ltbWV0cmljS2V5LmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFdpbkNBUElcV2luQ0FQSUNyeXB0b1g1MDkuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvWDUwOS5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQk8L0ZpbHRlcj4NCisJCQk8RmlsdGVyDQorCQkJCU5hbWU9IlhTQ3J5cHQiDQorCQkJCT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0NyeXB0XFhTQ3J5cHRDcnlwdG9CYXNlNjQuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNDcnlwdFxYU0NyeXB0Q3J5cHRvQmFzZTY0LmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCTwvRmlsdGVyPg0KKwkJCTxGaWx0ZXINCisJCQkJTmFtZT0iTlNTIg0KKwkJCQk+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcTlNTXE5TU0NyeXB0b0hhc2guY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcTlNTXE5TU0NyeXB0b0hhc2guaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcTlNTXE5TU0NyeXB0b0hhc2hITUFDLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE5TU1xOU1NDcnlwdG9IYXNoSE1BQy5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xOU1NcTlNTQ3J5cHRvS2V5RFNBLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE5TU1xOU1NDcnlwdG9LZXlEU0EuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcTlNTXE5TU0NyeXB0b0tleUhNQUMuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcTlNTXE5TU0NyeXB0b0tleUhNQUMuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcTlNTXE5TU0NyeXB0b0tleVJTQS5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xOU1NcTlNTQ3J5cHRvS2V5UlNBLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE5TU1xOU1NDcnlwdG9Qcm92aWRlci5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xOU1NcTlNTQ3J5cHRvUHJvdmlkZXIuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcTlNTXE5TU0NyeXB0b1N5bW1ldHJpY0tleS5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xOU1NcTlNTQ3J5cHRvU3ltbWV0cmljS2V5LmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE5TU1xOU1NDcnlwdG9YNTA5LmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE5TU1xOU1NDcnlwdG9YNTA5LmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCTwvRmlsdGVyPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0idXRpbHMiDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNCaW5UWEZNSW5wdXRTdHJlYW0uY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNCaW5UWEZNSW5wdXRTdHJlYW0uaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNET01VdGlscy5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ0RPTVV0aWxzLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1xYU0VDTmFtZVNwYWNlRXhwYW5kZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNOYW1lU3BhY2VFeHBhbmRlci5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ1BsYXRmb3JtVXRpbHMuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNQbGF0Zm9ybVV0aWxzLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1xYU0VDU2FmZUJ1ZmZlci5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ1NhZmVCdWZmZXIuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNTYWZlQnVmZmVyRm9ybWF0dGVyLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1xYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlci5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ1NPQVBSZXF1ZXN0b3IuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNTT0FQUmVxdWVzdG9yU2ltcGxlLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1xYU0VDU09BUFJlcXVlc3RvclNpbXBsZS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ1RYRk1JbnB1dFNvdXJjZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ1RYRk1JbnB1dFNvdXJjZS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ1hQYXRoTm9kZUxpc3QuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNYUGF0aE5vZGVMaXN0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsdGVyDQorCQkJCU5hbWU9IndpbnV0aWxzIg0KKwkJCQk+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1x3aW51dGlsc1xYU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcd2ludXRpbHNcWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbS5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXHdpbnV0aWxzXFhTRUNTT0FQUmVxdWVzdG9yU2ltcGxlV2luMzIuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1x3aW51dGlsc1xYU0VDVVJJUmVzb2x2ZXJHZW5lcmljV2luMzIuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1x3aW51dGlsc1xYU0VDVVJJUmVzb2x2ZXJHZW5lcmljV2luMzIuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJPC9GaWx0ZXI+DQorCQk8L0ZpbHRlcj4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJmcmFtZXdvcmsiDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGZyYW1ld29ya1xYU0VDQWxnb3JpdGhtSGFuZGxlci5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNBbGdvcml0aG1NYXBwZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGZyYW1ld29ya1xYU0VDQWxnb3JpdGhtTWFwcGVyLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ0RlZnMuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGZyYW1ld29ya1xYU0VDRW52LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ0Vudi5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNFcnJvci5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNFcnJvci5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNFeGNlcHRpb24uY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGZyYW1ld29ya1xYU0VDRXhjZXB0aW9uLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ1Byb3ZpZGVyLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ1Byb3ZpZGVyLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ1VSSVJlc29sdmVyLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ1VSSVJlc29sdmVyWGVyY2VzLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ1VSSVJlc29sdmVyWGVyY2VzLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ1czMkNvbmZpZy5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQk8L0ZpbHRlcj4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJ0cmFuc2Zvcm1lcnMiDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNQmFzZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1CYXNlLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTUJhc2U2NC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1CYXNlNjQuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNQzE0bi5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1DMTRuLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTUNoYWluLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTUNoYWluLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTUNpcGhlci5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1DaXBoZXIuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNQ29uY2F0Q2hhaW5zLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTUNvbmNhdENoYWlucy5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1Eb2NPYmplY3QuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNRG9jT2JqZWN0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTUVudmVsb3BlLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTUVudmVsb3BlLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTU1ENS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1NRDUuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNT3V0cHV0RmlsZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1PdXRwdXRGaWxlLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTVBhcnNlci5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1QYXJzZXIuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNU0IuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNU0IuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNU0hBMS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1TSEExLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTVVSTC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1VUkwuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNWFBhdGguY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNWFBhdGguaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNWFBhdGhGaWx0ZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNWFBhdGhGaWx0ZXIuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNWFNMLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTVhTTC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQk8L0ZpbHRlcj4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJ4ZW5jIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXFhFTkNDaXBoZXIuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcWEVOQ0NpcGhlckRhdGEuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcWEVOQ0NpcGhlclJlZmVyZW5jZS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xYRU5DQ2lwaGVyVmFsdWUuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcWEVOQ0VuY3J5cHRlZERhdGEuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcWEVOQ0VuY3J5cHRlZEtleS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xYRU5DRW5jcnlwdGVkVHlwZS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xYRU5DRW5jcnlwdGlvbk1ldGhvZC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbHRlcg0KKwkJCQlOYW1lPSJpbXBsIg0KKwkJCQk+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0LmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNBbGdvcml0aG1IYW5kbGVyRGVmYXVsdC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcaW1wbFxYRU5DQ2lwaGVyRGF0YUltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0NpcGhlckRhdGFJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNDaXBoZXJJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNDaXBoZXJJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNDaXBoZXJSZWZlcmVuY2VJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNDaXBoZXJSZWZlcmVuY2VJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNDaXBoZXJWYWx1ZUltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0NpcGhlclZhbHVlSW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcaW1wbFxYRU5DRW5jcnlwdGVkRGF0YUltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0VuY3J5cHRlZERhdGFJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNFbmNyeXB0ZWRLZXlJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNFbmNyeXB0ZWRLZXlJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNFbmNyeXB0ZWRUeXBlSW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcaW1wbFxYRU5DRW5jcnlwdGVkVHlwZUltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0VuY3J5cHRpb25NZXRob2RJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNFbmNyeXB0aW9uTWV0aG9kSW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQk8L0ZpbHRlcj4NCisJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9InhrbXMiDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU0F1dGhlbnRpY2F0aW9uLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNDb21wb3VuZFJlcXVlc3QuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU0NvbXBvdW5kUmVzdWx0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNDb25zdGFudHMuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU0NvbnN0YW50cy5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TS2V5QmluZGluZy5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TTG9jYXRlUmVxdWVzdC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TTG9jYXRlUmVzdWx0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNNZXNzYWdlRmFjdG9yeS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbi5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUGVuZGluZ1JlcXVlc3QuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1Byb3RvdHlwZUtleUJpbmRpbmcuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1F1ZXJ5S2V5QmluZGluZy5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUmVjb3ZlcktleUJpbmRpbmcuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1JlY292ZXJSZXF1ZXN0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZWNvdmVyUmVzdWx0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZWdpc3RlclJlcXVlc3QuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1JlZ2lzdGVyUmVzdWx0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZWlzc3VlS2V5QmluZGluZy5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUmVpc3N1ZVJlcXVlc3QuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1JlaXNzdWVSZXN1bHQuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGUuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1Jlc3BvbmRXaXRoLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZXNwb25zZU1lY2hhbmlzbS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUmVzdWx0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZXN1bHRUeXBlLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZXZva2VLZXlCaW5kaW5nLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZXZva2VSZXF1ZXN0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZXZva2VSZXN1bHQuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1JTQUtleVBhaXIuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1N0YXR1cy5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TU3RhdHVzUmVxdWVzdC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TU3RhdHVzUmVzdWx0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNVbnZlcmlmaWVkS2V5QmluZGluZy5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TVXNlS2V5V2l0aC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TVmFsaWRhdGVSZXF1ZXN0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNWYWxpZGF0ZVJlc3VsdC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TVmFsaWRpdHlJbnRlcnZhbC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbHRlcg0KKwkJCQlOYW1lPSJpbXBsIg0KKwkJCQk+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU0F1dGhlbnRpY2F0aW9uSW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TQXV0aGVudGljYXRpb25JbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNDb21wb3VuZFJlcXVlc3RJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNDb21wb3VuZFJlcXVlc3RJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNDb21wb3VuZFJlc3VsdEltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU0NvbXBvdW5kUmVzdWx0SW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNLZXlCaW5kaW5nSW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TS2V5QmluZGluZ0ltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU0xvY2F0ZVJlcXVlc3RJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNMb2NhdGVSZXF1ZXN0SW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TTG9jYXRlUmVzdWx0SW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TTG9jYXRlUmVzdWx0SW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNNZXNzYWdlRmFjdG9yeUltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU01lc3NhZ2VGYWN0b3J5SW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbi5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbkltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1BlbmRpbmdSZXF1ZXN0SW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUGVuZGluZ1JlcXVlc3RJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNQcm90b3R5cGVLZXlCaW5kaW5nSW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUHJvdG90eXBlS2V5QmluZGluZ0ltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1F1ZXJ5S2V5QmluZGluZ0ltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1F1ZXJ5S2V5QmluZGluZ0ltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlY292ZXJLZXlCaW5kaW5nSW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVjb3ZlcktleUJpbmRpbmdJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZWNvdmVyUmVxdWVzdEltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlY292ZXJSZXF1ZXN0SW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVjb3ZlclJlc3VsdEltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlY292ZXJSZXN1bHRJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZWdpc3RlclJlcXVlc3RJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZWdpc3RlclJlcXVlc3RJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZWdpc3RlclJlc3VsdEltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlZ2lzdGVyUmVzdWx0SW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVpc3N1ZUtleUJpbmRpbmdJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZWlzc3VlS2V5QmluZGluZ0ltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlaXNzdWVSZXF1ZXN0SW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVpc3N1ZVJlcXVlc3RJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZWlzc3VlUmVzdWx0SW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVpc3N1ZVJlc3VsdEltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVzcG9uZFdpdGhJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXNwb25kV2l0aEltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1Jlc3BvbnNlTWVjaGFuaXNtSW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVzcG9uc2VNZWNoYW5pc21JbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXN1bHRJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXN1bHRJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXN1bHRUeXBlSW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVzdWx0VHlwZUltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1Jldm9rZUtleUJpbmRpbmdJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXZva2VLZXlCaW5kaW5nSW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmV2b2tlUmVxdWVzdEltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1Jldm9rZVJlcXVlc3RJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXZva2VSZXN1bHRJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXZva2VSZXN1bHRJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSU0FLZXlQYWlySW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUlNBS2V5UGFpckltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1N0YXR1c0ltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1N0YXR1c0ltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1N0YXR1c1JlcXVlc3RJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNTdGF0dXNSZXF1ZXN0SW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TU3RhdHVzUmVzdWx0SW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TU3RhdHVzUmVzdWx0SW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TVW52ZXJpZmllZEtleUJpbmRpbmdJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNVbnZlcmlmaWVkS2V5QmluZGluZ0ltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1VzZUtleVdpdGhJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNVc2VLZXlXaXRoSW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TVmFsaWRhdGVSZXF1ZXN0SW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TVmFsaWRhdGVSZXF1ZXN0SW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TVmFsaWRhdGVSZXN1bHRJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNWYWxpZGF0ZVJlc3VsdEltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1ZhbGlkaXR5SW50ZXJ2YWxJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNWYWxpZGl0eUludGVydmFsSW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQk8L0ZpbHRlcj4NCisJCTwvRmlsdGVyPg0KKwk8L0ZpbGVzPg0KKwk8R2xvYmFscz4NCisJPC9HbG9iYWxzPg0KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9jL1Byb2plY3RzL1ZDOC4wL3hzZWMveHRlc3QveHRlc3QudmNwcm9qIGIvYy9Qcm9qZWN0cy9WQzguMC94c2VjL3h0ZXN0L3h0ZXN0LnZjcHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzBmZWY0Ci0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzguMC94c2VjL3h0ZXN0L3h0ZXN0LnZjcHJvagpAQCAtMCwwICsxLDc0NyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQorPFZpc3VhbFN0dWRpb1Byb2plY3QNCisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQorCVZlcnNpb249IjguMDAiDQorCU5hbWU9Inh0ZXN0Ig0KKwlQcm9qZWN0R1VJRD0iezEyN0IzRTYxLTA5NkMtNDM4QS1CRjMzLTVBOUYwNUM3MDM1QX0iDQorCVJvb3ROYW1lc3BhY2U9Inh0ZXN0Ig0KKwlLZXl3b3JkPSJXaW4zMlByb2oiDQorCT4NCisJPFBsYXRmb3Jtcz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9IldpbjMyIg0KKwkJLz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9Ing2NCINCisJCS8+DQorCTwvUGxhdGZvcm1zPg0KKwk8VG9vbEZpbGVzPg0KKwk8L1Rvb2xGaWxlcz4NCisJPENvbmZpZ3VyYXRpb25zPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIFhhbGFuLUNfMUQubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3h0ZXN0LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS94dGVzdC5wZGIiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIFhhbGFuLUNfMUQubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3h0ZXN0LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS94dGVzdC5wZGIiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpJnF1b3Q7Ig0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmomcXVvdDsiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiBYYWxhbi1DXzEubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikveHRlc3QuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIg0KKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMiINCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfMy5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIFhhbGFuLUNfMS5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS94dGVzdC5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnIE5vIFhhbGFufFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIGNyeXB0MzIubGliIGxpYmVheTMyRC5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS94dGVzdC5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikveHRlc3QucGRiIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnIE5vIFhhbGFufHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzgvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzJELmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3h0ZXN0LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS94dGVzdC5wZGIiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpJnF1b3Q7Ig0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmomcXVvdDsiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS94dGVzdC5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZSBObyBYYWxhbnx4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM4LyQoQ29uZmlndXJhdGlvbk5hbWUpJnF1b3Q7Ig0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOC8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmomcXVvdDsiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7V0lOMzI7TkRFQlVHO19DT05TT0xFIg0KKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMiINCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfMy5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikveHRlc3QuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwk8L0NvbmZpZ3VyYXRpb25zPg0KKwk8UmVmZXJlbmNlcz4NCisJPC9SZWZlcmVuY2VzPg0KKwk8RmlsZXM+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0b29sc1x4dGVzdFx4dGVzdC5jcHAiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWcgTm8gWGFsYW58V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWcgTm8gWGFsYW58eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9IkhlYWRlciBGaWxlcyINCisJCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jIg0KKwkJCT4NCisJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9IlJlc291cmNlIEZpbGVzIg0KKwkJCUZpbHRlcj0icmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIg0KKwkJCT4NCisJCTwvRmlsdGVyPg0KKwk8L0ZpbGVzPg0KKwk8R2xvYmFscz4NCisJPC9HbG9iYWxzPg0KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9jL1Byb2plY3RzL1ZDOS4wL1NhbXBsZXMvU2FtcGxlcy5zbG4gYi9jL1Byb2plY3RzL1ZDOS4wL1NhbXBsZXMvU2FtcGxlcy5zbG4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI2N2QyZgotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkM5LjAvU2FtcGxlcy9TYW1wbGVzLnNsbgpAQCAtMCwwICsxLDU1IEBACitNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMC4wMA0KKyMgVmlzdWFsIFN0dWRpbyAyMDA4DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzaW1wbGVEZWNyeXB0IiwgInNpbXBsZURlY3J5cHRcc2ltcGxlRGVjcnlwdC52Y3Byb2oiLCAie0JEQzc4NTM1LURDNTUtNEZENS05N0U0LURBRTUzRTQyQTYwN30iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAic2ltcGxlRW5jcnlwdCIsICJzaW1wbGVFbmNyeXB0XHNpbXBsZUVuY3J5cHQudmNwcm9qIiwgIntBRkZFQjkzNi1BQ0I1LTQyRDMtOTU4OC1GNTg0Mjc4OTYwQjl9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNpbXBsZUhNQUMiLCAic2ltcGxlSE1BQ1xzaW1wbGVITUFDLnZjcHJvaiIsICJ7RjBDQzgwODAtMDg5RS00NzNFLTg1NjUtMUM5NTExNzdBMzhCfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzaW1wbGVWYWxpZGF0ZSIsICJzaW1wbGVWYWxpZGF0ZVxzaW1wbGVWYWxpZGF0ZS52Y3Byb2oiLCAiezBEMTA3NTJELTJFQTgtNDQ0Ni05MDg2LUQwRjg0ODdFOTE0Qn0iDQorRW5kUHJvamVjdA0KK0dsb2JhbA0KKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbg0KKwkJRGVidWcgTm8gWGFsYW58V2luMzIgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMg0KKwkJRGVidWd8V2luMzIgPSBEZWJ1Z3xXaW4zMg0KKwkJUmVsZWFzZSBObyBYYWxhbnxXaW4zMiA9IFJlbGVhc2UgTm8gWGFsYW58V2luMzINCisJCVJlbGVhc2V8V2luMzIgPSBSZWxlYXNlfFdpbjMyDQorCUVuZEdsb2JhbFNlY3Rpb24NCisJR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24NCisJCXtCREM3ODUzNS1EQzU1LTRGRDUtOTdFNC1EQUU1M0U0MkE2MDd9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7QkRDNzg1MzUtREM1NS00RkQ1LTk3RTQtREFFNTNFNDJBNjA3fS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXtCREM3ODUzNS1EQzU1LTRGRDUtOTdFNC1EQUU1M0U0MkE2MDd9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7QkRDNzg1MzUtREM1NS00RkQ1LTk3RTQtREFFNTNFNDJBNjA3fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtCREM3ODUzNS1EQzU1LTRGRDUtOTdFNC1EQUU1M0U0MkE2MDd9LlJlbGVhc2UgTm8gWGFsYW58V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJe0JEQzc4NTM1LURDNTUtNEZENS05N0U0LURBRTUzRTQyQTYwN30uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJe0JEQzc4NTM1LURDNTUtNEZENS05N0U0LURBRTUzRTQyQTYwN30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QkRDNzg1MzUtREM1NS00RkQ1LTk3RTQtREFFNTNFNDJBNjA3fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QUZGRUI5MzYtQUNCNS00MkQzLTk1ODgtRjU4NDI3ODk2MEI5fS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMg0KKwkJe0FGRkVCOTM2LUFDQjUtNDJEMy05NTg4LUY1ODQyNzg5NjBCOX0uRGVidWcgTm8gWGFsYW58V2luMzIuQnVpbGQuMCA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7QUZGRUI5MzYtQUNCNS00MkQzLTk1ODgtRjU4NDI3ODk2MEI5fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0FGRkVCOTM2LUFDQjUtNDJEMy05NTg4LUY1ODQyNzg5NjBCOX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7QUZGRUI5MzYtQUNCNS00MkQzLTk1ODgtRjU4NDI3ODk2MEI5fS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2UgTm8gWGFsYW58V2luMzINCisJCXtBRkZFQjkzNi1BQ0I1LTQyRDMtOTU4OC1GNTg0Mjc4OTYwQjl9LlJlbGVhc2UgTm8gWGFsYW58V2luMzIuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58V2luMzINCisJCXtBRkZFQjkzNi1BQ0I1LTQyRDMtOTU4OC1GNTg0Mjc4OTYwQjl9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0FGRkVCOTM2LUFDQjUtNDJEMy05NTg4LUY1ODQyNzg5NjBCOX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0YwQ0M4MDgwLTA4OUUtNDczRS04NTY1LTFDOTUxMTc3QTM4Qn0uRGVidWcgTm8gWGFsYW58V2luMzIuQWN0aXZlQ2ZnID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXtGMENDODA4MC0wODlFLTQ3M0UtODU2NS0xQzk1MTE3N0EzOEJ9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBEZWJ1ZyBObyBYYWxhbnxXaW4zMg0KKwkJe0YwQ0M4MDgwLTA4OUUtNDczRS04NTY1LTFDOTUxMTc3QTM4Qn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtGMENDODA4MC0wODlFLTQ3M0UtODU2NS0xQzk1MTE3N0EzOEJ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0YwQ0M4MDgwLTA4OUUtNDczRS04NTY1LTFDOTUxMTc3QTM4Qn0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7RjBDQzgwODAtMDg5RS00NzNFLTg1NjUtMUM5NTExNzdBMzhCfS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7RjBDQzgwODAtMDg5RS00NzNFLTg1NjUtMUM5NTExNzdBMzhCfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtGMENDODA4MC0wODlFLTQ3M0UtODU2NS0xQzk1MTE3N0EzOEJ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXswRDEwNzUyRC0yRUE4LTQ0NDYtOTA4Ni1EMEY4NDg3RTkxNEJ9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7MEQxMDc1MkQtMkVBOC00NDQ2LTkwODYtRDBGODQ4N0U5MTRCfS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXswRDEwNzUyRC0yRUE4LTQ0NDYtOTA4Ni1EMEY4NDg3RTkxNEJ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7MEQxMDc1MkQtMkVBOC00NDQ2LTkwODYtRDBGODQ4N0U5MTRCfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXswRDEwNzUyRC0yRUE4LTQ0NDYtOTA4Ni1EMEY4NDg3RTkxNEJ9LlJlbGVhc2UgTm8gWGFsYW58V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJezBEMTA3NTJELTJFQTgtNDQ0Ni05MDg2LUQwRjg0ODdFOTE0Qn0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZSBObyBYYWxhbnxXaW4zMg0KKwkJezBEMTA3NTJELTJFQTgtNDQ0Ni05MDg2LUQwRjg0ODdFOTE0Qn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MEQxMDc1MkQtMkVBOC00NDQ2LTkwODYtRDBGODQ4N0U5MTRCfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCUVuZEdsb2JhbFNlY3Rpb24NCisJR2xvYmFsU2VjdGlvbihTb2x1dGlvblByb3BlcnRpZXMpID0gcHJlU29sdXRpb24NCisJCUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQ0KKwlFbmRHbG9iYWxTZWN0aW9uDQorRW5kR2xvYmFsDQpkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzkuMC9TYW1wbGVzL3NpbXBsZURlY3J5cHQvc2ltcGxlRGVjcnlwdC52Y3Byb2ogYi9jL1Byb2plY3RzL1ZDOS4wL1NhbXBsZXMvc2ltcGxlRGVjcnlwdC9zaW1wbGVEZWNyeXB0LnZjcHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jY2RmY2M4Ci0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzkuMC9TYW1wbGVzL3NpbXBsZURlY3J5cHQvc2ltcGxlRGVjcnlwdC52Y3Byb2oKQEAgLTAsMCArMSwzNzQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0DQorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KKwlWZXJzaW9uPSI5LjAwIg0KKwlOYW1lPSJzaW1wbGVEZWNyeXB0Ig0KKwlQcm9qZWN0R1VJRD0ie0JEQzc4NTM1LURDNTUtNEZENS05N0U0LURBRTUzRTQyQTYwN30iDQorCUtleXdvcmQ9IldpbjMyUHJvaiINCisJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTMxMDcyIg0KKwk+DQorCTxQbGF0Zm9ybXM+DQorCQk8UGxhdGZvcm0NCisJCQlOYW1lPSJXaW4zMiINCisJCS8+DQorCTwvUGxhdGZvcm1zPg0KKwk8VG9vbEZpbGVzPg0KKwk8L1Rvb2xGaWxlcz4NCisJPENvbmZpZ3VyYXRpb25zPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm1OYW1lKVxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtTmFtZSlcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpXG9iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjIiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5caW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ibGliZWF5MzIubGliIFhhbGFuLUNfMUQubGliIHhlcmNlcy1jXzNELmxpYiAmcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL3hzZWNfMUQubGliJnF1b3Q7Ig0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtTmFtZSlcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybU5hbWUpXFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKVxvYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5caW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89InRydWUiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ibGliZWF5MzIubGliIFhhbGFuLUNfMS5saWIgeGVyY2VzLWNfMy5saWIgJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS94c2VjXzEubGliJnF1b3Q7Ig0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWcgTm8gWGFsYW58V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtTmFtZSlcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybU5hbWUpXFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKVxvYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIyIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGluY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImxpYmVheTMyLmxpYiB4ZXJjZXMtY18zRC5saWIgJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS94c2VjXzFELmxpYiZxdW90OyINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlIE5vIFhhbGFufFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybU5hbWUpXFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm1OYW1lKVxWQzlcJChDb25maWd1cmF0aW9uTmFtZSlcb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGluY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJ0cnVlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImxpYmVheTMyLmxpYiB4ZXJjZXMtY18zLmxpYiAmcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL3hzZWNfMS5saWImcXVvdDsiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwk8L0NvbmZpZ3VyYXRpb25zPg0KKwk8UmVmZXJlbmNlcz4NCisJPC9SZWZlcmVuY2VzPg0KKwk8RmlsZXM+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xzYW1wbGVzXElPU3RyZWFtT3V0cHV0dGVyLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xzYW1wbGVzXHNpbXBsZURlY3J5cHQuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmMiDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHNhbXBsZXNcSU9TdHJlYW1PdXRwdXR0ZXIuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiDQorCQkJRmlsdGVyPSJyYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiDQorCQkJPg0KKwkJPC9GaWx0ZXI+DQorCTwvRmlsZXM+DQorCTxHbG9iYWxzPg0KKwk8L0dsb2JhbHM+DQorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkM5LjAvU2FtcGxlcy9zaW1wbGVFbmNyeXB0L3NpbXBsZUVuY3J5cHQudmNwcm9qIGIvYy9Qcm9qZWN0cy9WQzkuMC9TYW1wbGVzL3NpbXBsZUVuY3J5cHQvc2ltcGxlRW5jcnlwdC52Y3Byb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWUzZWMwNgotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkM5LjAvU2FtcGxlcy9zaW1wbGVFbmNyeXB0L3NpbXBsZUVuY3J5cHQudmNwcm9qCkBAIC0wLDAgKzEsMzc0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCis8VmlzdWFsU3R1ZGlvUHJvamVjdA0KKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCisJVmVyc2lvbj0iOS4wMCINCisJTmFtZT0ic2ltcGxlRW5jcnlwdCINCisJUHJvamVjdEdVSUQ9IntBRkZFQjkzNi1BQ0I1LTQyRDMtOTU4OC1GNTg0Mjc4OTYwQjl9Ig0KKwlLZXl3b3JkPSJXaW4zMlByb2oiDQorCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiINCisJPg0KKwk8UGxhdGZvcm1zPg0KKwkJPFBsYXRmb3JtDQorCQkJTmFtZT0iV2luMzIiDQorCQkvPg0KKwk8L1BsYXRmb3Jtcz4NCisJPFRvb2xGaWxlcz4NCisJPC9Ub29sRmlsZXM+DQorCTxDb25maWd1cmF0aW9ucz4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtTmFtZSlcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybU5hbWUpXFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKVxvYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIyIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGluY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImxpYmVheTMyLmxpYiBYYWxhbi1DXzFELmxpYiB4ZXJjZXMtY18zRC5saWIgJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS94c2VjXzFELmxpYiZxdW90OyINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybU5hbWUpXFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm1OYW1lKVxWQzlcJChDb25maWd1cmF0aW9uTmFtZSlcb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGluY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJsaWJlYXkzMi5saWIgWGFsYW4tQ18xLmxpYiB4ZXJjZXMtY18zLmxpYiAmcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL3hzZWNfMS5saWImcXVvdDsiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1ZyBObyBYYWxhbnxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm1OYW1lKVxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtTmFtZSlcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpXG9iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjIiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5caW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ibGliZWF5MzIubGliIHhlcmNlcy1jXzNELmxpYiAmcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL3hzZWNfMUQubGliJnF1b3Q7Ig0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtTmFtZSlcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybU5hbWUpXFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKVxvYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5caW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImxpYmVheTMyLmxpYiB4ZXJjZXMtY18zLmxpYiAmcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL3hzZWNfMS5saWImcXVvdDsiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwk8L0NvbmZpZ3VyYXRpb25zPg0KKwk8UmVmZXJlbmNlcz4NCisJPC9SZWZlcmVuY2VzPg0KKwk8RmlsZXM+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xzYW1wbGVzXElPU3RyZWFtT3V0cHV0dGVyLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xzYW1wbGVzXHNpbXBsZUVuY3J5cHQuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmMiDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHNhbXBsZXNcSU9TdHJlYW1PdXRwdXR0ZXIuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiDQorCQkJRmlsdGVyPSJyYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiDQorCQkJPg0KKwkJPC9GaWx0ZXI+DQorCTwvRmlsZXM+DQorCTxHbG9iYWxzPg0KKwk8L0dsb2JhbHM+DQorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkM5LjAvU2FtcGxlcy9zaW1wbGVITUFDL3NpbXBsZUhNQUMudmNwcm9qIGIvYy9Qcm9qZWN0cy9WQzkuMC9TYW1wbGVzL3NpbXBsZUhNQUMvc2ltcGxlSE1BQy52Y3Byb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA4MWNkZgotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkM5LjAvU2FtcGxlcy9zaW1wbGVITUFDL3NpbXBsZUhNQUMudmNwcm9qCkBAIC0wLDAgKzEsMzc0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCis8VmlzdWFsU3R1ZGlvUHJvamVjdA0KKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCisJVmVyc2lvbj0iOS4wMCINCisJTmFtZT0ic2ltcGxlSE1BQyINCisJUHJvamVjdEdVSUQ9IntGMENDODA4MC0wODlFLTQ3M0UtODU2NS0xQzk1MTE3N0EzOEJ9Ig0KKwlLZXl3b3JkPSJXaW4zMlByb2oiDQorCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiINCisJPg0KKwk8UGxhdGZvcm1zPg0KKwkJPFBsYXRmb3JtDQorCQkJTmFtZT0iV2luMzIiDQorCQkvPg0KKwk8L1BsYXRmb3Jtcz4NCisJPFRvb2xGaWxlcz4NCisJPC9Ub29sRmlsZXM+DQorCTxDb25maWd1cmF0aW9ucz4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtTmFtZSlcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybU5hbWUpXFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKVxvYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIyIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGluY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImxpYmVheTMyLmxpYiBYYWxhbi1DXzFELmxpYiB4ZXJjZXMtY18zRC5saWIgJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS94c2VjXzFELmxpYiZxdW90OyINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybU5hbWUpXFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm1OYW1lKVxWQzlcJChDb25maWd1cmF0aW9uTmFtZSlcb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGluY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJsaWJlYXkzMi5saWIgWGFsYW4tQ18xLmxpYiB4ZXJjZXMtY18zLmxpYiAmcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL3hzZWNfMS5saWImcXVvdDsiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1ZyBObyBYYWxhbnxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm1OYW1lKVxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtTmFtZSlcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpXG9iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjIiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5caW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ibGliZWF5MzIubGliIHhlcmNlcy1jXzNELmxpYiAmcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL3hzZWNfMUQubGliJnF1b3Q7Ig0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtTmFtZSlcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybU5hbWUpXFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKVxvYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5caW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImxpYmVheTMyLmxpYiB4ZXJjZXMtY18zLmxpYiAmcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL3hzZWNfMS5saWImcXVvdDsiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwk8L0NvbmZpZ3VyYXRpb25zPg0KKwk8UmVmZXJlbmNlcz4NCisJPC9SZWZlcmVuY2VzPg0KKwk8RmlsZXM+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xzYW1wbGVzXElPU3RyZWFtT3V0cHV0dGVyLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xzYW1wbGVzXHNpbXBsZUhNQUMuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmMiDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHNhbXBsZXNcSU9TdHJlYW1PdXRwdXR0ZXIuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiDQorCQkJRmlsdGVyPSJyYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiDQorCQkJPg0KKwkJPC9GaWx0ZXI+DQorCTwvRmlsZXM+DQorCTxHbG9iYWxzPg0KKwk8L0dsb2JhbHM+DQorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkM5LjAvU2FtcGxlcy9zaW1wbGVWYWxpZGF0ZS9zaW1wbGVWYWxpZGF0ZS52Y3Byb2ogYi9jL1Byb2plY3RzL1ZDOS4wL1NhbXBsZXMvc2ltcGxlVmFsaWRhdGUvc2ltcGxlVmFsaWRhdGUudmNwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmOWQ4MzYKLS0tIC9kZXYvbnVsbAorKysgYi9jL1Byb2plY3RzL1ZDOS4wL1NhbXBsZXMvc2ltcGxlVmFsaWRhdGUvc2ltcGxlVmFsaWRhdGUudmNwcm9qCkBAIC0wLDAgKzEsMzc1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCis8VmlzdWFsU3R1ZGlvUHJvamVjdA0KKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCisJVmVyc2lvbj0iOS4wMCINCisJTmFtZT0ic2ltcGxlVmFsaWRhdGUiDQorCVByb2plY3RHVUlEPSJ7MEQxMDc1MkQtMkVBOC00NDQ2LTkwODYtRDBGODQ4N0U5MTRCfSINCisJUm9vdE5hbWVzcGFjZT0ic2ltcGxlVmFsaWRhdGUiDQorCUtleXdvcmQ9IldpbjMyUHJvaiINCisJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTMxMDcyIg0KKwk+DQorCTxQbGF0Zm9ybXM+DQorCQk8UGxhdGZvcm0NCisJCQlOYW1lPSJXaW4zMiINCisJCS8+DQorCTwvUGxhdGZvcm1zPg0KKwk8VG9vbEZpbGVzPg0KKwk8L1Rvb2xGaWxlcz4NCisJPENvbmZpZ3VyYXRpb25zPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm1OYW1lKVxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtTmFtZSlcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpXG9iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjIiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5caW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ibGliZWF5MzIubGliIFhhbGFuLUNfMUQubGliIHhlcmNlcy1jXzNELmxpYiAmcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL3hzZWNfMUQubGliJnF1b3Q7Ig0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtTmFtZSlcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybU5hbWUpXFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKVxvYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5caW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImxpYmVheTMyLmxpYiBYYWxhbi1DXzEubGliIHhlcmNlcy1jXzMubGliICZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkveHNlY18xLmxpYiZxdW90OyINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnIE5vIFhhbGFufFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi5cLi5cLi5cLi5cQnVpbGRcJChQbGF0Zm9ybU5hbWUpXFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm1OYW1lKVxWQzlcJChDb25maWd1cmF0aW9uTmFtZSlcb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMiINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxpbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJsaWJlYXkzMi5saWIgeGVyY2VzLWNfM0QubGliICZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkveHNlY18xRC5saWImcXVvdDsiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZSBObyBYYWxhbnxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uXC4uXC4uXC4uXEJ1aWxkXCQoUGxhdGZvcm1OYW1lKVxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLlwuLlwuLlwuLlxCdWlsZFwkKFBsYXRmb3JtTmFtZSlcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpXG9iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxpbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIg0KKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMiINCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ibGliZWF5MzIubGliIHhlcmNlcy1jXzMubGliICZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkveHNlY18xLmxpYiZxdW90OyINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCTwvQ29uZmlndXJhdGlvbnM+DQorCTxSZWZlcmVuY2VzPg0KKwk8L1JlZmVyZW5jZXM+DQorCTxGaWxlcz4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQorCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc20iDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHNhbXBsZXNcSU9TdHJlYW1PdXRwdXR0ZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHNhbXBsZXNcc2ltcGxlVmFsaWRhdGUuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmMiDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHNhbXBsZXNcSU9TdHJlYW1PdXRwdXR0ZXIuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiDQorCQkJRmlsdGVyPSJyYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiDQorCQkJPg0KKwkJPC9GaWx0ZXI+DQorCTwvRmlsZXM+DQorCTxHbG9iYWxzPg0KKwk8L0dsb2JhbHM+DQorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkM5LjAveHNlYy9jMTRuL2MxNG4udmNwcm9qIGIvYy9Qcm9qZWN0cy9WQzkuMC94c2VjL2MxNG4vYzE0bi52Y3Byb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGEzOWZkZgotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkM5LjAveHNlYy9jMTRuL2MxNG4udmNwcm9qCkBAIC0wLDAgKzEsNzA4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCis8VmlzdWFsU3R1ZGlvUHJvamVjdA0KKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCisJVmVyc2lvbj0iOS4wMCINCisJTmFtZT0iYzE0biINCisJUHJvamVjdEdVSUQ9IntBREZCNEExQS05Q0I0LTRCRUUtOURFOC02NTg0NzA4NjI0QzR9Ig0KKwlSb290TmFtZXNwYWNlPSJjMTRuIg0KKwlLZXl3b3JkPSJXaW4zMlByb2oiDQorCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiINCisJPg0KKwk8UGxhdGZvcm1zPg0KKwkJPFBsYXRmb3JtDQorCQkJTmFtZT0iV2luMzIiDQorCQkvPg0KKwkJPFBsYXRmb3JtDQorCQkJTmFtZT0ieDY0Ig0KKwkJLz4NCisJPC9QbGF0Zm9ybXM+DQorCTxUb29sRmlsZXM+DQorCTwvVG9vbEZpbGVzPg0KKwk8Q29uZmlndXJhdGlvbnM+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgWGFsYW4tQ18xRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvYzE0bi5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvYzE0bi5wZGIiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgWGFsYW4tQ18xRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvYzE0bi5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvYzE0bi5wZGIiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIg0KKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMiINCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfMy5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvYzE0bi5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2MxNG4uZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnIE5vIFhhbGFufFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIGNyeXB0MzIubGliIGxpYmVheTMyRC5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9jMTRuLmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS9jMTRuLnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnIE5vIFhhbGFufHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzJELmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2MxNG4uZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL2MxNG4ucGRiIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9jMTRuLmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58eDY0Ig0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO1dJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2MxNG4uZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCTwvQ29uZmlndXJhdGlvbnM+DQorCTxSZWZlcmVuY2VzPg0KKwk8L1JlZmVyZW5jZXM+DQorCTxGaWxlcz4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQorCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc20iDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRvb2xzXGMxNG5cYzE0bi5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQk8L0ZpbHRlcj4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQorCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sO2luYyINCisJCQk+DQorCQk8L0ZpbHRlcj4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCisJCQlGaWx0ZXI9InJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSINCisJCQk+DQorCQk8L0ZpbHRlcj4NCisJPC9GaWxlcz4NCisJPEdsb2JhbHM+DQorCTwvR2xvYmFscz4NCis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzkuMC94c2VjL2NoZWNrc2lnL2NoZWNrc2lnLnZjcHJvaiBiL2MvUHJvamVjdHMvVkM5LjAveHNlYy9jaGVja3NpZy9jaGVja3NpZy52Y3Byb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjJlNWIxMgotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkM5LjAveHNlYy9jaGVja3NpZy9jaGVja3NpZy52Y3Byb2oKQEAgLTAsMCArMSw3MjQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0DQorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KKwlWZXJzaW9uPSI5LjAwIg0KKwlOYW1lPSJjaGVja3NpZyINCisJUHJvamVjdEdVSUQ9IntCMzJCOTU5Ni1FMjUwLTQxRDUtOEFBOC1BNjIzMjI2QzkwMTh9Ig0KKwlSb290TmFtZXNwYWNlPSJjaGVja3NpZyINCisJS2V5d29yZD0iV2luMzJQcm9qIg0KKwlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQorCT4NCisJPFBsYXRmb3Jtcz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9IldpbjMyIg0KKwkJLz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9Ing2NCINCisJCS8+DQorCTwvUGxhdGZvcm1zPg0KKwk8VG9vbEZpbGVzPg0KKwk8L1Rvb2xGaWxlcz4NCisJPENvbmZpZ3VyYXRpb25zPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIFhhbGFuLUNfMUQubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2NoZWNrc2lnLmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS9jaGVja3NpZy5wZGIiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgWGFsYW4tQ18xRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvY2hlY2tzaWcuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL2NoZWNrc2lnLnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIgWGFsYW4tQ18xLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2NoZWNrc2lnLmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIg0KKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMiINCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfMy5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIFhhbGFuLUNfMS5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9jaGVja3NpZy5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWcgTm8gWGFsYW58V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzJELmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2NoZWNrc2lnLmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS9jaGVja3NpZy5wZGIiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1ZyBObyBYYWxhbnx4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIGNyeXB0MzIubGliIGxpYmVheTMyRC5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9jaGVja3NpZy5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvY2hlY2tzaWcucGRiIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9jaGVja3NpZy5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlIE5vIFhhbGFufHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9jaGVja3NpZy5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJPC9Db25maWd1cmF0aW9ucz4NCisJPFJlZmVyZW5jZXM+DQorCTwvUmVmZXJlbmNlcz4NCisJPEZpbGVzPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCisJCQlGaWx0ZXI9ImNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbSINCisJCQk+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdG9vbHNcY2hlY2tzaWdcQW5vbnltb3VzUmVzb2x2ZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRvb2xzXGNoZWNrc2lnXGNoZWNrc2lnLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0b29sc1xjaGVja3NpZ1xJbnRlcm9wUmVzb2x2ZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmMiDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRvb2xzXGNoZWNrc2lnXEFub255bW91c1Jlc29sdmVyLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0b29sc1xjaGVja3NpZ1xJbnRlcm9wUmVzb2x2ZXIuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiDQorCQkJRmlsdGVyPSJyYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiDQorCQkJPg0KKwkJPC9GaWx0ZXI+DQorCTwvRmlsZXM+DQorCTxHbG9iYWxzPg0KKwk8L0dsb2JhbHM+DQorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkM5LjAveHNlYy9jaXBoZXIvY2lwaGVyLnZjcHJvaiBiL2MvUHJvamVjdHMvVkM5LjAveHNlYy9jaXBoZXIvY2lwaGVyLnZjcHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjJlNDhmCi0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzkuMC94c2VjL2NpcGhlci9jaXBoZXIudmNwcm9qCkBAIC0wLDAgKzEsNzE2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCis8VmlzdWFsU3R1ZGlvUHJvamVjdA0KKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCisJVmVyc2lvbj0iOS4wMCINCisJTmFtZT0iY2lwaGVyIg0KKwlQcm9qZWN0R1VJRD0iezBDNDU1QTk1LTk5MUItNDAxOS04ODcyLUFBMUZFNjEzOUY2OX0iDQorCVJvb3ROYW1lc3BhY2U9ImNpcGhlciINCisJS2V5d29yZD0iV2luMzJQcm9qIg0KKwlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQorCT4NCisJPFBsYXRmb3Jtcz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9IldpbjMyIg0KKwkJLz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9Ing2NCINCisJCS8+DQorCTwvUGxhdGZvcm1zPg0KKwk8VG9vbEZpbGVzPg0KKwk8L1Rvb2xGaWxlcz4NCisJPENvbmZpZ3VyYXRpb25zPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIFhhbGFuLUNfMUQubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2NpcGhlci5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvY2lwaGVyLnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBYYWxhbi1DXzFELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9jaXBoZXIuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL2NpcGhlci5wZGIiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIg0KKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMiINCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfMy5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIFhhbGFuLUNfMS5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9jaXBoZXIuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIgWGFsYW4tQ18xLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2NpcGhlci5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWcgTm8gWGFsYW58V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzJELmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2NpcGhlci5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvY2lwaGVyLnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnIE5vIFhhbGFufHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzJELmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2NpcGhlci5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvY2lwaGVyLnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlIE5vIFhhbGFufFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7V0lOMzI7TkRFQlVHO19DT05TT0xFIg0KKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMiINCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfMy5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvY2lwaGVyLmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58eDY0Ig0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO1dJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2NpcGhlci5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJPC9Db25maWd1cmF0aW9ucz4NCisJPFJlZmVyZW5jZXM+DQorCTwvUmVmZXJlbmNlcz4NCisJPEZpbGVzPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCisJCQlGaWx0ZXI9ImNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbSINCisJCQk+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdG9vbHNcY2lwaGVyXGNpcGhlci5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdG9vbHNcY2lwaGVyXFhlbmNJbnRlcm9wUmVzb2x2ZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmMiDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRvb2xzXGNpcGhlclxYZW5jSW50ZXJvcFJlc29sdmVyLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9IlJlc291cmNlIEZpbGVzIg0KKwkJCUZpbHRlcj0icmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIg0KKwkJCT4NCisJCTwvRmlsdGVyPg0KKwk8L0ZpbGVzPg0KKwk8R2xvYmFscz4NCisJPC9HbG9iYWxzPg0KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9jL1Byb2plY3RzL1ZDOS4wL3hzZWMvc2lnaW5mL3NpZ2luZi52Y3Byb2ogYi9jL1Byb2plY3RzL1ZDOS4wL3hzZWMvc2lnaW5mL3NpZ2luZi52Y3Byb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM2OTQzNQotLS0gL2Rldi9udWxsCisrKyBiL2MvUHJvamVjdHMvVkM5LjAveHNlYy9zaWdpbmYvc2lnaW5mLnZjcHJvagpAQCAtMCwwICsxLDcwOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQorPFZpc3VhbFN0dWRpb1Byb2plY3QNCisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQorCVZlcnNpb249IjkuMDAiDQorCU5hbWU9InNpZ2luZiINCisJUHJvamVjdEdVSUQ9InsyMEU0MzdGQS1GMTg0LTRENjAtOUIzQi00MzU4RUZGQThCNDJ9Ig0KKwlSb290TmFtZXNwYWNlPSJzaWdpbmYiDQorCUtleXdvcmQ9IldpbjMyUHJvaiINCisJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTMxMDcyIg0KKwk+DQorCTxQbGF0Zm9ybXM+DQorCQk8UGxhdGZvcm0NCisJCQlOYW1lPSJXaW4zMiINCisJCS8+DQorCQk8UGxhdGZvcm0NCisJCQlOYW1lPSJ4NjQiDQorCQkvPg0KKwk8L1BsYXRmb3Jtcz4NCisJPFRvb2xGaWxlcz4NCisJPC9Ub29sRmlsZXM+DQorCTxDb25maWd1cmF0aW9ucz4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpJnF1b3Q7Ig0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmomcXVvdDsiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBYYWxhbi1DXzFELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9zaWdpbmYuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL3NpZ2luZi5wZGIiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpJnF1b3Q7Ig0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmomcXVvdDsiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgWGFsYW4tQ18xRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvc2lnaW5mLmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS9zaWdpbmYucGRiIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpJnF1b3Q7Ig0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmomcXVvdDsiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiBYYWxhbi1DXzEubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvc2lnaW5mLmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIg0KKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMiINCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfMy5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIFhhbGFuLUNfMS5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9zaWdpbmYuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnIE5vIFhhbGFufFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIGNyeXB0MzIubGliIGxpYmVheTMyRC5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9zaWdpbmYuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL3NpZ2luZi5wZGIiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1ZyBObyBYYWxhbnx4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpJnF1b3Q7Ig0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmomcXVvdDsiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIGNyeXB0MzIubGliIGxpYmVheTMyRC5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9zaWdpbmYuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL3NpZ2luZi5wZGIiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZSBObyBYYWxhbnxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO1dJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3NpZ2luZi5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlIE5vIFhhbGFufHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9zaWdpbmYuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCTwvQ29uZmlndXJhdGlvbnM+DQorCTxSZWZlcmVuY2VzPg0KKwk8L1JlZmVyZW5jZXM+DQorCTxGaWxlcz4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQorCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc20iDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRvb2xzXHNpZ2luZlxzaWdpbmYuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmMiDQorCQkJPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiDQorCQkJRmlsdGVyPSJyYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiDQorCQkJPg0KKwkJPC9GaWx0ZXI+DQorCTwvRmlsZXM+DQorCTxHbG9iYWxzPg0KKwk8L0dsb2JhbHM+DQorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL2MvUHJvamVjdHMvVkM5LjAveHNlYy90ZW1wbGF0ZXNpZ24vdGVtcGxhdGVzaWduLnZjcHJvaiBiL2MvUHJvamVjdHMvVkM5LjAveHNlYy90ZW1wbGF0ZXNpZ24vdGVtcGxhdGVzaWduLnZjcHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODI0OTJhCi0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzkuMC94c2VjL3RlbXBsYXRlc2lnbi90ZW1wbGF0ZXNpZ24udmNwcm9qCkBAIC0wLDAgKzEsNzA4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCis8VmlzdWFsU3R1ZGlvUHJvamVjdA0KKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCisJVmVyc2lvbj0iOS4wMCINCisJTmFtZT0idGVtcGxhdGVzaWduIg0KKwlQcm9qZWN0R1VJRD0iezEwQ0UwRTg2LURGOTQtNDI0NC05RDgxLUMxRDVDRERBNkFEOH0iDQorCVJvb3ROYW1lc3BhY2U9InRlbXBsYXRlc2lnbiINCisJS2V5d29yZD0iV2luMzJQcm9qIg0KKwlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQorCT4NCisJPFBsYXRmb3Jtcz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9IldpbjMyIg0KKwkJLz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9Ing2NCINCisJCS8+DQorCTwvUGxhdGZvcm1zPg0KKwk8VG9vbEZpbGVzPg0KKwk8L1Rvb2xGaWxlcz4NCisJPENvbmZpZ3VyYXRpb25zPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIFhhbGFuLUNfMUQubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3RlbXBsYXRlc2lnbi5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvdGVtcGxhdGVzaWduLnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBYYWxhbi1DXzFELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS90ZW1wbGF0ZXNpZ24uZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL3RlbXBsYXRlc2lnbi5wZGIiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIg0KKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMiINCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfMy5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIFhhbGFuLUNfMS5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS90ZW1wbGF0ZXNpZ24uZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIgWGFsYW4tQ18xLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3RlbXBsYXRlc2lnbi5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWcgTm8gWGFsYW58V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzJELmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3RlbXBsYXRlc2lnbi5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvdGVtcGxhdGVzaWduLnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnIE5vIFhhbGFufHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzJELmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3RlbXBsYXRlc2lnbi5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvdGVtcGxhdGVzaWduLnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlIE5vIFhhbGFufFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7V0lOMzI7TkRFQlVHO19DT05TT0xFIg0KKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMiINCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfMy5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvdGVtcGxhdGVzaWduLmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58eDY0Ig0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO1dJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3RlbXBsYXRlc2lnbi5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJPC9Db25maWd1cmF0aW9ucz4NCisJPFJlZmVyZW5jZXM+DQorCTwvUmVmZXJlbmNlcz4NCisJPEZpbGVzPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCisJCQlGaWx0ZXI9ImNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbSINCisJCQk+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdG9vbHNcdGVtcGxhdGVzaWduXHRlbXBsYXRlc2lnbi5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQk8L0ZpbHRlcj4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQorCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sO2luYyINCisJCQk+DQorCQk8L0ZpbHRlcj4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCisJCQlGaWx0ZXI9InJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSINCisJCQk+DQorCQk8L0ZpbHRlcj4NCisJPC9GaWxlcz4NCisJPEdsb2JhbHM+DQorCTwvR2xvYmFscz4NCis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzkuMC94c2VjL3RocmVhZFRlc3QvdGhyZWFkVGVzdC52Y3Byb2ogYi9jL1Byb2plY3RzL1ZDOS4wL3hzZWMvdGhyZWFkVGVzdC90aHJlYWRUZXN0LnZjcHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTMyMjcyCi0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzkuMC94c2VjL3RocmVhZFRlc3QvdGhyZWFkVGVzdC52Y3Byb2oKQEAgLTAsMCArMSw3MDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0DQorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KKwlWZXJzaW9uPSI5LjAwIg0KKwlOYW1lPSJ0aHJlYWRUZXN0Ig0KKwlQcm9qZWN0R1VJRD0iezVFRTlBMEM3LTcyQzgtNDhGMy1BNkRCLTZFNUJGMDcxNURDM30iDQorCVJvb3ROYW1lc3BhY2U9InRocmVhZFRlc3QiDQorCUtleXdvcmQ9IldpbjMyUHJvaiINCisJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTMxMDcyIg0KKwk+DQorCTxQbGF0Zm9ybXM+DQorCQk8UGxhdGZvcm0NCisJCQlOYW1lPSJXaW4zMiINCisJCS8+DQorCQk8UGxhdGZvcm0NCisJCQlOYW1lPSJ4NjQiDQorCQkvPg0KKwk8L1BsYXRmb3Jtcz4NCisJPFRvb2xGaWxlcz4NCisJPC9Ub29sRmlsZXM+DQorCTxDb25maWd1cmF0aW9ucz4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpJnF1b3Q7Ig0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmomcXVvdDsiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBYYWxhbi1DXzFELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS90aHJlYWRUZXN0LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS90aHJlYWRUZXN0LnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBYYWxhbi1DXzFELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS90aHJlYWRUZXN0LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS90aHJlYWRUZXN0LnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIgWGFsYW4tQ18xLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3RocmVhZFRlc3QuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpJnF1b3Q7Ig0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmomcXVvdDsiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIgWGFsYW4tQ18xLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3RocmVhZFRlc3QuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnIE5vIFhhbGFufFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIGNyeXB0MzIubGliIGxpYmVheTMyRC5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS90aHJlYWRUZXN0LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS90aHJlYWRUZXN0LnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnIE5vIFhhbGFufHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzJELmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3RocmVhZFRlc3QuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL3RocmVhZFRlc3QucGRiIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpJnF1b3Q7Ig0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmomcXVvdDsiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS90aHJlYWRUZXN0LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58eDY0Ig0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO1dJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3RocmVhZFRlc3QuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCTwvQ29uZmlndXJhdGlvbnM+DQorCTxSZWZlcmVuY2VzPg0KKwk8L1JlZmVyZW5jZXM+DQorCTxGaWxlcz4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQorCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc20iDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRvb2xzXHRocmVhZFRlc3RcdGhyZWFkdGVzdC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQk8L0ZpbHRlcj4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQorCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sO2luYyINCisJCQk+DQorCQk8L0ZpbHRlcj4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCisJCQlGaWx0ZXI9InJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSINCisJCQk+DQorCQk8L0ZpbHRlcj4NCisJPC9GaWxlcz4NCisJPEdsb2JhbHM+DQorCTwvR2xvYmFscz4NCis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzkuMC94c2VjL3R4Zm1vdXQvdHhmbW91dC52Y3Byb2ogYi9jL1Byb2plY3RzL1ZDOS4wL3hzZWMvdHhmbW91dC90eGZtb3V0LnZjcHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWIyZDBmCi0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzkuMC94c2VjL3R4Zm1vdXQvdHhmbW91dC52Y3Byb2oKQEAgLTAsMCArMSw3MDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0DQorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KKwlWZXJzaW9uPSI5LjAwIg0KKwlOYW1lPSJ0eGZtb3V0Ig0KKwlQcm9qZWN0R1VJRD0ie0UxQTk1NTA3LUIzRTQtNDA3NS04QzMxLUEyNEM5NDYwQkY2OH0iDQorCVJvb3ROYW1lc3BhY2U9InR4Zm1vdXQiDQorCUtleXdvcmQ9IldpbjMyUHJvaiINCisJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTMxMDcyIg0KKwk+DQorCTxQbGF0Zm9ybXM+DQorCQk8UGxhdGZvcm0NCisJCQlOYW1lPSJXaW4zMiINCisJCS8+DQorCQk8UGxhdGZvcm0NCisJCQlOYW1lPSJ4NjQiDQorCQkvPg0KKwk8L1BsYXRmb3Jtcz4NCisJPFRvb2xGaWxlcz4NCisJPC9Ub29sRmlsZXM+DQorCTxDb25maWd1cmF0aW9ucz4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpJnF1b3Q7Ig0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmomcXVvdDsiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBYYWxhbi1DXzFELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS90eGZtb3V0LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS90eGZtb3V0LnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBYYWxhbi1DXzFELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS90eGZtb3V0LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS90eGZtb3V0LnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIgWGFsYW4tQ18xLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3R4Zm1vdXQuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpJnF1b3Q7Ig0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmomcXVvdDsiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIgWGFsYW4tQ18xLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3R4Zm1vdXQuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnIE5vIFhhbGFufFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIGNyeXB0MzIubGliIGxpYmVheTMyRC5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS90eGZtb3V0LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS90eGZtb3V0LnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnIE5vIFhhbGFufHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzJELmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3R4Zm1vdXQuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL3R4Zm1vdXQucGRiIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpJnF1b3Q7Ig0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmomcXVvdDsiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS90eGZtb3V0LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58eDY0Ig0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO1dJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3R4Zm1vdXQuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCTwvQ29uZmlndXJhdGlvbnM+DQorCTxSZWZlcmVuY2VzPg0KKwk8L1JlZmVyZW5jZXM+DQorCTxGaWxlcz4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQorCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc20iDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRvb2xzXHR4Zm1vdXRcdHhmbW91dC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQk8L0ZpbHRlcj4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQorCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sO2luYyINCisJCQk+DQorCQk8L0ZpbHRlcj4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCisJCQlGaWx0ZXI9InJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSINCisJCQk+DQorCQk8L0ZpbHRlcj4NCisJPC9GaWxlcz4NCisJPEdsb2JhbHM+DQorCTwvR2xvYmFscz4NCis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzkuMC94c2VjL3hrbGllbnQveGtsaWVudC52Y3Byb2ogYi9jL1Byb2plY3RzL1ZDOS4wL3hzZWMveGtsaWVudC94a2xpZW50LnZjcHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTQwZTllCi0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzkuMC94c2VjL3hrbGllbnQveGtsaWVudC52Y3Byb2oKQEAgLTAsMCArMSw2OTYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0DQorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KKwlWZXJzaW9uPSI5LjAwIg0KKwlOYW1lPSJ4a2xpZW50Ig0KKwlQcm9qZWN0R1VJRD0iezQ4MzQ2Njk1LTE0OTYtNDg4MS04NzA5LUU1QzAyMzkyOTMwQX0iDQorCVJvb3ROYW1lc3BhY2U9InhrbGllbnQiDQorCUtleXdvcmQ9IldpbjMyUHJvaiINCisJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTMxMDcyIg0KKwk+DQorCTxQbGF0Zm9ybXM+DQorCQk8UGxhdGZvcm0NCisJCQlOYW1lPSJXaW4zMiINCisJCS8+DQorCQk8UGxhdGZvcm0NCisJCQlOYW1lPSJ4NjQiDQorCQkvPg0KKwk8L1BsYXRmb3Jtcz4NCisJPFRvb2xGaWxlcz4NCisJPC9Ub29sRmlsZXM+DQorCTxDb25maWd1cmF0aW9ucz4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpJnF1b3Q7Ig0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmomcXVvdDsiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBYYWxhbi1DXzFELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS94a2xpZW50LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS94a2xpZW50LnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBYYWxhbi1DXzFELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS94a2xpZW50LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS94a2xpZW50LnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIgWGFsYW4tQ18xLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3hrbGllbnQuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpJnF1b3Q7Ig0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmomcXVvdDsiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIgWGFsYW4tQ18xLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3hrbGllbnQuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnIE5vIFhhbGFufFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfQ09OU09MRSINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIGNyeXB0MzIubGliIGxpYmVheTMyRC5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS94a2xpZW50LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS94a2xpZW50LnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnIE5vIFhhbGFufHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzJELmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3hrbGllbnQuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL3hrbGllbnQucGRiIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpJnF1b3Q7Ig0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmomcXVvdDsiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS94a2xpZW50LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58eDY0Ig0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO1dJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3hrbGllbnQuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCTwvQ29uZmlndXJhdGlvbnM+DQorCTxSZWZlcmVuY2VzPg0KKwk8L1JlZmVyZW5jZXM+DQorCTxGaWxlcz4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQorCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc20iDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRvb2xzXHhrbGllbnRceGtsaWVudC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQk8L0ZpbHRlcj4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQorCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sO2luYyINCisJCQk+DQorCQk8L0ZpbHRlcj4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCisJCQlGaWx0ZXI9InJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSINCisJCQk+DQorCQk8L0ZpbHRlcj4NCisJPC9GaWxlcz4NCisJPEdsb2JhbHM+DQorCTwvR2xvYmFscz4NCis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvYy9Qcm9qZWN0cy9WQzkuMC94c2VjL3hzZWMuc2xuIGIvYy9Qcm9qZWN0cy9WQzkuMC94c2VjL3hzZWMuc2xuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlODkxOGYKLS0tIC9kZXYvbnVsbAorKysgYi9jL1Byb2plY3RzL1ZDOS4wL3hzZWMveHNlYy5zbG4KQEAgLTAsMCArMSwyMjYgQEAKK01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDEwLjAwDQorIyBWaXN1YWwgU3R1ZGlvIDIwMDgNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInhzZWNfbGliIiwgInhzZWNfbGliXHhzZWNfbGliLnZjcHJvaiIsICJ7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ4dGVzdCIsICJ4dGVzdFx4dGVzdC52Y3Byb2oiLCAiezEyN0IzRTYxLTA5NkMtNDM4QS1CRjMzLTVBOUYwNUM3MDM1QX0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9ID0ge0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjMTRuIiwgImMxNG5cYzE0bi52Y3Byb2oiLCAie0FERkI0QTFBLTlDQjQtNEJFRS05REU4LTY1ODQ3MDg2MjRDNH0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9ID0ge0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjaGVja3NpZyIsICJjaGVja3NpZ1xjaGVja3NpZy52Y3Byb2oiLCAie0IzMkI5NTk2LUUyNTAtNDFENS04QUE4LUE2MjMyMjZDOTAxOH0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9ID0ge0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjaXBoZXIiLCAiY2lwaGVyXGNpcGhlci52Y3Byb2oiLCAiezBDNDU1QTk1LTk5MUItNDAxOS04ODcyLUFBMUZFNjEzOUY2OX0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9ID0ge0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzaWdpbmYiLCAic2lnaW5mXHNpZ2luZi52Y3Byb2oiLCAiezIwRTQzN0ZBLUYxODQtNEQ2MC05QjNCLTQzNThFRkZBOEI0Mn0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9ID0ge0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ0ZW1wbGF0ZXNpZ24iLCAidGVtcGxhdGVzaWduXHRlbXBsYXRlc2lnbi52Y3Byb2oiLCAiezEwQ0UwRTg2LURGOTQtNDI0NC05RDgxLUMxRDVDRERBNkFEOH0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9ID0ge0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ0aHJlYWRUZXN0IiwgInRocmVhZFRlc3RcdGhyZWFkVGVzdC52Y3Byb2oiLCAiezVFRTlBMEM3LTcyQzgtNDhGMy1BNkRCLTZFNUJGMDcxNURDM30iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9ID0ge0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ0eGZtb3V0IiwgInR4Zm1vdXRcdHhmbW91dC52Y3Byb2oiLCAie0UxQTk1NTA3LUIzRTQtNDA3NS04QzMxLUEyNEM5NDYwQkY2OH0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9ID0ge0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ4a2xpZW50IiwgInhrbGllbnRceGtsaWVudC52Y3Byb2oiLCAiezQ4MzQ2Njk1LTE0OTYtNDg4MS04NzA5LUU1QzAyMzkyOTMwQX0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9ID0ge0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorR2xvYmFsDQorCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uDQorCQlEZWJ1ZyBObyBYYWxhbnxXaW4zMiA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQlEZWJ1ZyBObyBYYWxhbnx4NjQgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCURlYnVnfFdpbjMyID0gRGVidWd8V2luMzINCisJCURlYnVnfHg2NCA9IERlYnVnfHg2NA0KKwkJUmVsZWFzZSBObyBYYWxhbnxXaW4zMiA9IFJlbGVhc2UgTm8gWGFsYW58V2luMzINCisJCVJlbGVhc2UgTm8gWGFsYW58eDY0ID0gUmVsZWFzZSBObyBYYWxhbnx4NjQNCisJCVJlbGVhc2V8V2luMzIgPSBSZWxlYXNlfFdpbjMyDQorCQlSZWxlYXNlfHg2NCA9IFJlbGVhc2V8eDY0DQorCUVuZEdsb2JhbFNlY3Rpb24NCisJR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24NCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9LkRlYnVnIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9LkRlYnVnIE5vIFhhbGFufHg2NC5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfS5SZWxlYXNlIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJe0Q1QjVBMDA3LUU4NzMtNEQxMi1CNEFGLTYwODExQUZEOUVGMX0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58eDY0DQorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7RDVCNUEwMDctRTg3My00RDEyLUI0QUYtNjA4MTFBRkQ5RUYxfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXsxMjdCM0U2MS0wOTZDLTQzOEEtQkYzMy01QTlGMDVDNzAzNUF9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7MTI3QjNFNjEtMDk2Qy00MzhBLUJGMzMtNUE5RjA1QzcwMzVBfS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXsxMjdCM0U2MS0wOTZDLTQzOEEtQkYzMy01QTlGMDVDNzAzNUF9LkRlYnVnIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCXsxMjdCM0U2MS0wOTZDLTQzOEEtQkYzMy01QTlGMDVDNzAzNUF9LkRlYnVnIE5vIFhhbGFufHg2NC5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7MTI3QjNFNjEtMDk2Qy00MzhBLUJGMzMtNUE5RjA1QzcwMzVBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezEyN0IzRTYxLTA5NkMtNDM4QS1CRjMzLTVBOUYwNUM3MDM1QX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7MTI3QjNFNjEtMDk2Qy00MzhBLUJGMzMtNUE5RjA1QzcwMzVBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7MTI3QjNFNjEtMDk2Qy00MzhBLUJGMzMtNUE5RjA1QzcwMzVBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezEyN0IzRTYxLTA5NkMtNDM4QS1CRjMzLTVBOUYwNUM3MDM1QX0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7MTI3QjNFNjEtMDk2Qy00MzhBLUJGMzMtNUE5RjA1QzcwMzVBfS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7MTI3QjNFNjEtMDk2Qy00MzhBLUJGMzMtNUE5RjA1QzcwMzVBfS5SZWxlYXNlIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJezEyN0IzRTYxLTA5NkMtNDM4QS1CRjMzLTVBOUYwNUM3MDM1QX0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58eDY0DQorCQl7MTI3QjNFNjEtMDk2Qy00MzhBLUJGMzMtNUE5RjA1QzcwMzVBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxMjdCM0U2MS0wOTZDLTQzOEEtQkYzMy01QTlGMDVDNzAzNUF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsxMjdCM0U2MS0wOTZDLTQzOEEtQkYzMy01QTlGMDVDNzAzNUF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MTI3QjNFNjEtMDk2Qy00MzhBLUJGMzMtNUE5RjA1QzcwMzVBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtBREZCNEExQS05Q0I0LTRCRUUtOURFOC02NTg0NzA4NjI0QzR9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7QURGQjRBMUEtOUNCNC00QkVFLTlERTgtNjU4NDcwODYyNEM0fS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXtBREZCNEExQS05Q0I0LTRCRUUtOURFOC02NTg0NzA4NjI0QzR9LkRlYnVnIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCXtBREZCNEExQS05Q0I0LTRCRUUtOURFOC02NTg0NzA4NjI0QzR9LkRlYnVnIE5vIFhhbGFufHg2NC5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7QURGQjRBMUEtOUNCNC00QkVFLTlERTgtNjU4NDcwODYyNEM0fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0FERkI0QTFBLTlDQjQtNEJFRS05REU4LTY1ODQ3MDg2MjRDNH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7QURGQjRBMUEtOUNCNC00QkVFLTlERTgtNjU4NDcwODYyNEM0fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7QURGQjRBMUEtOUNCNC00QkVFLTlERTgtNjU4NDcwODYyNEM0fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0FERkI0QTFBLTlDQjQtNEJFRS05REU4LTY1ODQ3MDg2MjRDNH0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7QURGQjRBMUEtOUNCNC00QkVFLTlERTgtNjU4NDcwODYyNEM0fS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7QURGQjRBMUEtOUNCNC00QkVFLTlERTgtNjU4NDcwODYyNEM0fS5SZWxlYXNlIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJe0FERkI0QTFBLTlDQjQtNEJFRS05REU4LTY1ODQ3MDg2MjRDNH0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58eDY0DQorCQl7QURGQjRBMUEtOUNCNC00QkVFLTlERTgtNjU4NDcwODYyNEM0fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtBREZCNEExQS05Q0I0LTRCRUUtOURFOC02NTg0NzA4NjI0QzR9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtBREZCNEExQS05Q0I0LTRCRUUtOURFOC02NTg0NzA4NjI0QzR9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QURGQjRBMUEtOUNCNC00QkVFLTlERTgtNjU4NDcwODYyNEM0fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtCMzJCOTU5Ni1FMjUwLTQxRDUtOEFBOC1BNjIzMjI2QzkwMTh9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXtCMzJCOTU5Ni1FMjUwLTQxRDUtOEFBOC1BNjIzMjI2QzkwMTh9LkRlYnVnIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCXtCMzJCOTU5Ni1FMjUwLTQxRDUtOEFBOC1BNjIzMjI2QzkwMTh9LkRlYnVnIE5vIFhhbGFufHg2NC5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0IzMkI5NTk2LUUyNTAtNDFENS04QUE4LUE2MjMyMjZDOTAxOH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0IzMkI5NTk2LUUyNTAtNDFENS04QUE4LUE2MjMyMjZDOTAxOH0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fS5SZWxlYXNlIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJe0IzMkI5NTk2LUUyNTAtNDFENS04QUE4LUE2MjMyMjZDOTAxOH0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58eDY0DQorCQl7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtCMzJCOTU5Ni1FMjUwLTQxRDUtOEFBOC1BNjIzMjI2QzkwMTh9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtCMzJCOTU5Ni1FMjUwLTQxRDUtOEFBOC1BNjIzMjI2QzkwMTh9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QjMyQjk1OTYtRTI1MC00MUQ1LThBQTgtQTYyMzIyNkM5MDE4fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXswQzQ1NUE5NS05OTFCLTQwMTktODg3Mi1BQTFGRTYxMzlGNjl9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXswQzQ1NUE5NS05OTFCLTQwMTktODg3Mi1BQTFGRTYxMzlGNjl9LkRlYnVnIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCXswQzQ1NUE5NS05OTFCLTQwMTktODg3Mi1BQTFGRTYxMzlGNjl9LkRlYnVnIE5vIFhhbGFufHg2NC5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezBDNDU1QTk1LTk5MUItNDAxOS04ODcyLUFBMUZFNjEzOUY2OX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezBDNDU1QTk1LTk5MUItNDAxOS04ODcyLUFBMUZFNjEzOUY2OX0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fS5SZWxlYXNlIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJezBDNDU1QTk1LTk5MUItNDAxOS04ODcyLUFBMUZFNjEzOUY2OX0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58eDY0DQorCQl7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXswQzQ1NUE5NS05OTFCLTQwMTktODg3Mi1BQTFGRTYxMzlGNjl9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXswQzQ1NUE5NS05OTFCLTQwMTktODg3Mi1BQTFGRTYxMzlGNjl9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MEM0NTVBOTUtOTkxQi00MDE5LTg4NzItQUExRkU2MTM5RjY5fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXsyMEU0MzdGQS1GMTg0LTRENjAtOUIzQi00MzU4RUZGQThCNDJ9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7MjBFNDM3RkEtRjE4NC00RDYwLTlCM0ItNDM1OEVGRkE4QjQyfS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXsyMEU0MzdGQS1GMTg0LTRENjAtOUIzQi00MzU4RUZGQThCNDJ9LkRlYnVnIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCXsyMEU0MzdGQS1GMTg0LTRENjAtOUIzQi00MzU4RUZGQThCNDJ9LkRlYnVnIE5vIFhhbGFufHg2NC5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7MjBFNDM3RkEtRjE4NC00RDYwLTlCM0ItNDM1OEVGRkE4QjQyfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezIwRTQzN0ZBLUYxODQtNEQ2MC05QjNCLTQzNThFRkZBOEI0Mn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7MjBFNDM3RkEtRjE4NC00RDYwLTlCM0ItNDM1OEVGRkE4QjQyfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7MjBFNDM3RkEtRjE4NC00RDYwLTlCM0ItNDM1OEVGRkE4QjQyfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezIwRTQzN0ZBLUYxODQtNEQ2MC05QjNCLTQzNThFRkZBOEI0Mn0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7MjBFNDM3RkEtRjE4NC00RDYwLTlCM0ItNDM1OEVGRkE4QjQyfS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7MjBFNDM3RkEtRjE4NC00RDYwLTlCM0ItNDM1OEVGRkE4QjQyfS5SZWxlYXNlIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJezIwRTQzN0ZBLUYxODQtNEQ2MC05QjNCLTQzNThFRkZBOEI0Mn0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58eDY0DQorCQl7MjBFNDM3RkEtRjE4NC00RDYwLTlCM0ItNDM1OEVGRkE4QjQyfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsyMEU0MzdGQS1GMTg0LTRENjAtOUIzQi00MzU4RUZGQThCNDJ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsyMEU0MzdGQS1GMTg0LTRENjAtOUIzQi00MzU4RUZGQThCNDJ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MjBFNDM3RkEtRjE4NC00RDYwLTlCM0ItNDM1OEVGRkE4QjQyfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXsxMENFMEU4Ni1ERjk0LTQyNDQtOUQ4MS1DMUQ1Q0REQTZBRDh9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7MTBDRTBFODYtREY5NC00MjQ0LTlEODEtQzFENUNEREE2QUQ4fS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXsxMENFMEU4Ni1ERjk0LTQyNDQtOUQ4MS1DMUQ1Q0REQTZBRDh9LkRlYnVnIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCXsxMENFMEU4Ni1ERjk0LTQyNDQtOUQ4MS1DMUQ1Q0REQTZBRDh9LkRlYnVnIE5vIFhhbGFufHg2NC5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7MTBDRTBFODYtREY5NC00MjQ0LTlEODEtQzFENUNEREE2QUQ4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezEwQ0UwRTg2LURGOTQtNDI0NC05RDgxLUMxRDVDRERBNkFEOH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7MTBDRTBFODYtREY5NC00MjQ0LTlEODEtQzFENUNEREE2QUQ4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7MTBDRTBFODYtREY5NC00MjQ0LTlEODEtQzFENUNEREE2QUQ4fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezEwQ0UwRTg2LURGOTQtNDI0NC05RDgxLUMxRDVDRERBNkFEOH0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7MTBDRTBFODYtREY5NC00MjQ0LTlEODEtQzFENUNEREE2QUQ4fS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7MTBDRTBFODYtREY5NC00MjQ0LTlEODEtQzFENUNEREE2QUQ4fS5SZWxlYXNlIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJezEwQ0UwRTg2LURGOTQtNDI0NC05RDgxLUMxRDVDRERBNkFEOH0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58eDY0DQorCQl7MTBDRTBFODYtREY5NC00MjQ0LTlEODEtQzFENUNEREE2QUQ4fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxMENFMEU4Ni1ERjk0LTQyNDQtOUQ4MS1DMUQ1Q0REQTZBRDh9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsxMENFMEU4Ni1ERjk0LTQyNDQtOUQ4MS1DMUQ1Q0REQTZBRDh9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MTBDRTBFODYtREY5NC00MjQ0LTlEODEtQzFENUNEREE2QUQ4fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs1RUU5QTBDNy03MkM4LTQ4RjMtQTZEQi02RTVCRjA3MTVEQzN9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7NUVFOUEwQzctNzJDOC00OEYzLUE2REItNkU1QkYwNzE1REMzfS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXs1RUU5QTBDNy03MkM4LTQ4RjMtQTZEQi02RTVCRjA3MTVEQzN9LkRlYnVnIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCXs1RUU5QTBDNy03MkM4LTQ4RjMtQTZEQi02RTVCRjA3MTVEQzN9LkRlYnVnIE5vIFhhbGFufHg2NC5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7NUVFOUEwQzctNzJDOC00OEYzLUE2REItNkU1QkYwNzE1REMzfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezVFRTlBMEM3LTcyQzgtNDhGMy1BNkRCLTZFNUJGMDcxNURDM30uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7NUVFOUEwQzctNzJDOC00OEYzLUE2REItNkU1QkYwNzE1REMzfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7NUVFOUEwQzctNzJDOC00OEYzLUE2REItNkU1QkYwNzE1REMzfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezVFRTlBMEM3LTcyQzgtNDhGMy1BNkRCLTZFNUJGMDcxNURDM30uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7NUVFOUEwQzctNzJDOC00OEYzLUE2REItNkU1QkYwNzE1REMzfS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7NUVFOUEwQzctNzJDOC00OEYzLUE2REItNkU1QkYwNzE1REMzfS5SZWxlYXNlIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJezVFRTlBMEM3LTcyQzgtNDhGMy1BNkRCLTZFNUJGMDcxNURDM30uUmVsZWFzZSBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58eDY0DQorCQl7NUVFOUEwQzctNzJDOC00OEYzLUE2REItNkU1QkYwNzE1REMzfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs1RUU5QTBDNy03MkM4LTQ4RjMtQTZEQi02RTVCRjA3MTVEQzN9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs1RUU5QTBDNy03MkM4LTQ4RjMtQTZEQi02RTVCRjA3MTVEQzN9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7NUVFOUEwQzctNzJDOC00OEYzLUE2REItNkU1QkYwNzE1REMzfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtFMUE5NTUwNy1CM0U0LTQwNzUtOEMzMS1BMjRDOTQ2MEJGNjh9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7RTFBOTU1MDctQjNFNC00MDc1LThDMzEtQTI0Qzk0NjBCRjY4fS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXtFMUE5NTUwNy1CM0U0LTQwNzUtOEMzMS1BMjRDOTQ2MEJGNjh9LkRlYnVnIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCXtFMUE5NTUwNy1CM0U0LTQwNzUtOEMzMS1BMjRDOTQ2MEJGNjh9LkRlYnVnIE5vIFhhbGFufHg2NC5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7RTFBOTU1MDctQjNFNC00MDc1LThDMzEtQTI0Qzk0NjBCRjY4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0UxQTk1NTA3LUIzRTQtNDA3NS04QzMxLUEyNEM5NDYwQkY2OH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7RTFBOTU1MDctQjNFNC00MDc1LThDMzEtQTI0Qzk0NjBCRjY4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7RTFBOTU1MDctQjNFNC00MDc1LThDMzEtQTI0Qzk0NjBCRjY4fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0UxQTk1NTA3LUIzRTQtNDA3NS04QzMxLUEyNEM5NDYwQkY2OH0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7RTFBOTU1MDctQjNFNC00MDc1LThDMzEtQTI0Qzk0NjBCRjY4fS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7RTFBOTU1MDctQjNFNC00MDc1LThDMzEtQTI0Qzk0NjBCRjY4fS5SZWxlYXNlIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJe0UxQTk1NTA3LUIzRTQtNDA3NS04QzMxLUEyNEM5NDYwQkY2OH0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58eDY0DQorCQl7RTFBOTU1MDctQjNFNC00MDc1LThDMzEtQTI0Qzk0NjBCRjY4fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtFMUE5NTUwNy1CM0U0LTQwNzUtOEMzMS1BMjRDOTQ2MEJGNjh9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtFMUE5NTUwNy1CM0U0LTQwNzUtOEMzMS1BMjRDOTQ2MEJGNjh9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7RTFBOTU1MDctQjNFNC00MDc1LThDMzEtQTI0Qzk0NjBCRjY4fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs0ODM0NjY5NS0xNDk2LTQ4ODEtODcwOS1FNUMwMjM5MjkzMEF9LkRlYnVnIE5vIFhhbGFufFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnIE5vIFhhbGFufFdpbjMyDQorCQl7NDgzNDY2OTUtMTQ5Ni00ODgxLTg3MDktRTVDMDIzOTI5MzBBfS5EZWJ1ZyBObyBYYWxhbnxXaW4zMi5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58V2luMzINCisJCXs0ODM0NjY5NS0xNDk2LTQ4ODEtODcwOS1FNUMwMjM5MjkzMEF9LkRlYnVnIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBEZWJ1ZyBObyBYYWxhbnx4NjQNCisJCXs0ODM0NjY5NS0xNDk2LTQ4ODEtODcwOS1FNUMwMjM5MjkzMEF9LkRlYnVnIE5vIFhhbGFufHg2NC5CdWlsZC4wID0gRGVidWcgTm8gWGFsYW58eDY0DQorCQl7NDgzNDY2OTUtMTQ5Ni00ODgxLTg3MDktRTVDMDIzOTI5MzBBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezQ4MzQ2Njk1LTE0OTYtNDg4MS04NzA5LUU1QzAyMzkyOTMwQX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7NDgzNDY2OTUtMTQ5Ni00ODgxLTg3MDktRTVDMDIzOTI5MzBBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7NDgzNDY2OTUtMTQ5Ni00ODgxLTg3MDktRTVDMDIzOTI5MzBBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezQ4MzQ2Njk1LTE0OTYtNDg4MS04NzA5LUU1QzAyMzkyOTMwQX0uUmVsZWFzZSBObyBYYWxhbnxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7NDgzNDY2OTUtMTQ5Ni00ODgxLTg3MDktRTVDMDIzOTI5MzBBfS5SZWxlYXNlIE5vIFhhbGFufFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlIE5vIFhhbGFufFdpbjMyDQorCQl7NDgzNDY2OTUtMTQ5Ni00ODgxLTg3MDktRTVDMDIzOTI5MzBBfS5SZWxlYXNlIE5vIFhhbGFufHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlIE5vIFhhbGFufHg2NA0KKwkJezQ4MzQ2Njk1LTE0OTYtNDg4MS04NzA5LUU1QzAyMzkyOTMwQX0uUmVsZWFzZSBObyBYYWxhbnx4NjQuQnVpbGQuMCA9IFJlbGVhc2UgTm8gWGFsYW58eDY0DQorCQl7NDgzNDY2OTUtMTQ5Ni00ODgxLTg3MDktRTVDMDIzOTI5MzBBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs0ODM0NjY5NS0xNDk2LTQ4ODEtODcwOS1FNUMwMjM5MjkzMEF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs0ODM0NjY5NS0xNDk2LTQ4ODEtODcwOS1FNUMwMjM5MjkzMEF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7NDgzNDY2OTUtMTQ5Ni00ODgxLTg3MDktRTVDMDIzOTI5MzBBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJRW5kR2xvYmFsU2VjdGlvbg0KKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbg0KKwkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFDQorCUVuZEdsb2JhbFNlY3Rpb24NCitFbmRHbG9iYWwNCmRpZmYgLS1naXQgYS9jL1Byb2plY3RzL1ZDOS4wL3hzZWMveHNlY19saWIveHNlY19saWIudmNwcm9qIGIvYy9Qcm9qZWN0cy9WQzkuMC94c2VjL3hzZWNfbGliL3hzZWNfbGliLnZjcHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGQ5YjA5Ci0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzkuMC94c2VjL3hzZWNfbGliL3hzZWNfbGliLnZjcHJvagpAQCAtMCwwICsxLDIxNjQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0DQorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KKwlWZXJzaW9uPSI5LjAwIg0KKwlOYW1lPSJ4c2VjX2xpYiINCisJUHJvamVjdEdVSUQ9IntENUI1QTAwNy1FODczLTREMTItQjRBRi02MDgxMUFGRDlFRjF9Ig0KKwlSb290TmFtZXNwYWNlPSJ4c2VjX2xpYiINCisJS2V5d29yZD0iV2luMzJQcm9qIg0KKwlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQorCT4NCisJPFBsYXRmb3Jtcz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9IldpbjMyIg0KKwkJLz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9Ing2NCINCisJCS8+DQorCTwvUGxhdGZvcm1zPg0KKwk8VG9vbEZpbGVzPg0KKwk8L1Rvb2xGaWxlcz4NCisJPENvbmZpZ3VyYXRpb25zPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCQlEZXNjcmlwdGlvbj0iQ3JlYXRlIEhlYWRlciBmaWxlcyINCisJCQkJQ29tbWFuZExpbmU9Im1rZGlyIC4uXC4uXC4uXC4uXGluY2x1ZGUmI3gwRDsmI3gwQTtta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWMmI3gwRDsmI3gwQTtkZWwgL3EgL3MgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjXCouKiYjeDBEOyYjeDBBO3hjb3B5IC9JIC9zIC9mIC4uXC4uXC4uXC4uXHNyY1wqLmhwcCAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWMmI3gwRDsmI3gwQTsiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19XSU5ET1dTO19VU1JETEw7WFNFQ19MSUJfRVhQT1JUUztQUk9KX0NBTk9OO1BST0pfRFNJRyINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlQcmVjb21waWxlZEhlYWRlclRocm91Z2g9IiINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBYYWxhbi1DXzFELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS94c2VjXzFfNkQuZGxsIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL3hzZWNfbGliLnBkYiINCisJCQkJU3ViU3lzdGVtPSIyIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcikveHNlY18xRC5saWIiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJCURlc2NyaXB0aW9uPSJDcmVhdGUgSGVhZGVyIGZpbGVzIg0KKwkJCQlDb21tYW5kTGluZT0ibWtkaXIgLi5cLi5cLi5cLi5caW5jbHVkZSYjeDBEOyYjeDBBO21rZGlyIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlYyYjeDBEOyYjeDBBO2RlbCAvcSAvcyAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWNcKi4qJiN4MEQ7JiN4MEE7eGNvcHkgL0kgL3MgL2YgLi5cLi5cLi5cLi5cc3JjXCouaHBwIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlYyYjeDBEOyYjeDBBOyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19XSU5ET1dTO19VU1JETEw7WFNFQ19MSUJfRVhQT1JUUztQUk9KX0NBTk9OO1BST0pfRFNJRyINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlQcmVjb21waWxlZEhlYWRlclRocm91Z2g9IiINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBYYWxhbi1DXzFELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS94c2VjXzFfNkQuZGxsIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL3hzZWNfbGliLnBkYiINCisJCQkJU3ViU3lzdGVtPSIyIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcikveHNlY18xRC5saWIiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkJRGVzY3JpcHRpb249IkNyZWF0ZSBIZWFkZXIgZmlsZXMiDQorCQkJCUNvbW1hbmRMaW5lPSJta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlJiN4MEQ7JiN4MEE7bWtkaXIgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjJiN4MEQ7JiN4MEE7ZGVsIC9xIC9zIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlY1wqLiomI3gwRDsmI3gwQTt4Y29weSAvSSAvcyAvZiAuLlwuLlwuLlwuLlxzcmNcKi5ocHAgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjJiN4MEQ7JiN4MEE7Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19XSU5ET1dTO19VU1JETEw7WFNFQ19MSUJfRVhQT1JUUztQUk9KX0NBTk9OO1BST0pfRFNJRyINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJUaHJvdWdoPSIiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIgWGFsYW4tQ18xLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3hzZWNfMV82LmRsbCINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMiINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcikveHNlY18xLmxpYiINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCQlEZXNjcmlwdGlvbj0iQ3JlYXRlIEhlYWRlciBmaWxlcyINCisJCQkJQ29tbWFuZExpbmU9Im1rZGlyIC4uXC4uXC4uXC4uXGluY2x1ZGUmI3gwRDsmI3gwQTtta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWMmI3gwRDsmI3gwQTtkZWwgL3EgL3MgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjXCouKiYjeDBEOyYjeDBBO3hjb3B5IC9JIC9zIC9mIC4uXC4uXC4uXC4uXHNyY1wqLmhwcCAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWMmI3gwRDsmI3gwQTsiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19XSU5ET1dTO19VU1JETEw7WFNFQ19MSUJfRVhQT1JUUztQUk9KX0NBTk9OO1BST0pfRFNJRyINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJUaHJvdWdoPSIiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIgWGFsYW4tQ18xLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3hzZWNfMV82LmRsbCINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMiINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcikveHNlY18xLmxpYiINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWcgTm8gWGFsYW58V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkJRGVzY3JpcHRpb249IkNyZWF0ZSBIZWFkZXIgZmlsZXMiDQorCQkJCUNvbW1hbmRMaW5lPSJta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlJiN4MEQ7JiN4MEE7bWtkaXIgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjJiN4MEQ7JiN4MEE7ZGVsIC9xIC9zIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlY1wqLiomI3gwRDsmI3gwQTt4Y29weSAvSSAvcyAvZiAuLlwuLlwuLlwuLlxzcmNcKi5ocHAgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjJiN4MEQ7JiN4MEE7Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtYU0VDX0xJQl9FWFBPUlRTO1BST0pfQ0FOT047UFJPSl9EU0lHIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyVGhyb3VnaD0iIg0KKwkJCQlXYXJuaW5nTGV2ZWw9IjMiDQorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ieGVyY2VzLWNfM0QubGliIGNyeXB0MzIubGliIGxpYmVheTMyRC5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS94c2VjXzFfNkQuZGxsIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIyIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcikveHNlY18xRC5saWIiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWcgTm8gWGFsYW58eDY0Ig0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJCURlc2NyaXB0aW9uPSJDcmVhdGUgSGVhZGVyIGZpbGVzIg0KKwkJCQlDb21tYW5kTGluZT0ibWtkaXIgLi5cLi5cLi5cLi5caW5jbHVkZSYjeDBEOyYjeDBBO21rZGlyIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlYyYjeDBEOyYjeDBBO2RlbCAvcSAvcyAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWNcKi4qJiN4MEQ7JiN4MEE7eGNvcHkgL0kgL3MgL2YgLi5cLi5cLi5cLi5cc3JjXCouaHBwIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlYyYjeDBEOyYjeDBBOyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19YU0VDX0RPX01FTURFQlVHO1dJTjMyO19ERUJVRztfV0lORE9XUztfVVNSRExMO1hTRUNfTElCX0VYUE9SVFM7UFJPSl9DQU5PTjtQUk9KX0RTSUciDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJUaHJvdWdoPSIiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzJELmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3hzZWNfMV82RC5kbGwiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjIiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKS94c2VjXzFELmxpYiINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZSBObyBYYWxhbnxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCQlEZXNjcmlwdGlvbj0iQ3JlYXRlIEhlYWRlciBmaWxlcyINCisJCQkJQ29tbWFuZExpbmU9Im1rZGlyIC4uXC4uXC4uXC4uXGluY2x1ZGUmI3gwRDsmI3gwQTtta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWMmI3gwRDsmI3gwQTtkZWwgL3EgL3MgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjXCouKiYjeDBEOyYjeDBBO3hjb3B5IC9JIC9zIC9mIC4uXC4uXC4uXC4uXHNyY1wqLmhwcCAuLlwuLlwuLlwuLlxpbmNsdWRlXHhzZWMmI3gwRDsmI3gwQTsiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7V0lOMzI7TkRFQlVHO19XSU5ET1dTO19VU1JETEw7WFNFQ19MSUJfRVhQT1JUUztQUk9KX0NBTk9OO1BST0pfRFNJRyINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJUaHJvdWdoPSIiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS94c2VjXzFfNi5kbGwiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjIiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXIpL3hzZWNfMS5saWIiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZSBObyBYYWxhbnx4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLi4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmoiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkJRGVzY3JpcHRpb249IkNyZWF0ZSBIZWFkZXIgZmlsZXMiDQorCQkJCUNvbW1hbmRMaW5lPSJta2RpciAuLlwuLlwuLlwuLlxpbmNsdWRlJiN4MEQ7JiN4MEE7bWtkaXIgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjJiN4MEQ7JiN4MEE7ZGVsIC9xIC9zIC4uXC4uXC4uXC4uXGluY2x1ZGVceHNlY1wqLiomI3gwRDsmI3gwQTt4Y29weSAvSSAvcyAvZiAuLlwuLlwuLlwuLlxzcmNcKi5ocHAgLi5cLi5cLi5cLi5caW5jbHVkZVx4c2VjJiN4MEQ7JiN4MEE7Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtXSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtYU0VDX0xJQl9FWFBPUlRTO1BST0pfQ0FOT047UFJPSl9EU0lHIg0KKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMiINCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVUeXBlSW5mbz0iZmFsc2UiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlQcmVjb21waWxlZEhlYWRlclRocm91Z2g9IiINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3hzZWNfMV82LmRsbCINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMiINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcikveHNlY18xLmxpYiINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJPC9Db25maWd1cmF0aW9ucz4NCisJPFJlZmVyZW5jZXM+DQorCTwvUmVmZXJlbmNlcz4NCisJPEZpbGVzPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9ImNhbm9uIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xjYW5vblxYU0VDQzE0bjIwMDEwMzE1LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xjYW5vblxYU0VDQzE0bjIwMDEwMzE1LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xjYW5vblxYU0VDQ2Fub24uY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGNhbm9uXFhTRUNDYW5vbi5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcY2Fub25cWFNFQ1hNTE5TU3RhY2suY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGNhbm9uXFhTRUNYTUxOU1N0YWNrLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9ImRzaWciDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdBbGdvcml0aG1IYW5kbGVyRGVmYXVsdC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHQ29uc3RhbnRzLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdDb25zdGFudHMuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm8uaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9FeHQuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9FeHQuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9MaXN0LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvTGlzdC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHS2V5SW5mb01nbXREYXRhLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvTWdtdERhdGEuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9OYW1lLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvTmFtZS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHS2V5SW5mb1BHUERhdGEuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9QR1BEYXRhLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvU1BLSURhdGEuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9TUEtJRGF0YS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHS2V5SW5mb1ZhbHVlLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvVmFsdWUuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR0tleUluZm9YNTA5LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdLZXlJbmZvWDUwOS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHT2JqZWN0LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdPYmplY3QuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1JlZmVyZW5jZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHUmVmZXJlbmNlLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdSZWZlcmVuY2VMaXN0LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdSZWZlcmVuY2VMaXN0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdTaWduYXR1cmUuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1NpZ25hdHVyZS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHU2lnbmVkSW5mby5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHU2lnbmVkSW5mby5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHVHJhbnNmb3JtLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm0uaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1RyYW5zZm9ybUJhc2U2NC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHVHJhbnNmb3JtQmFzZTY0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1DMTRuLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1DMTRuLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1FbnZlbG9wZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHVHJhbnNmb3JtRW52ZWxvcGUuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1RyYW5zZm9ybUxpc3QuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1RyYW5zZm9ybUxpc3QuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1RyYW5zZm9ybVhQYXRoLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1YUGF0aC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHVHJhbnNmb3JtWFBhdGhGaWx0ZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdUcmFuc2Zvcm1YU0wuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1RyYW5zZm9ybVhTTC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHWFBhdGhGaWx0ZXJFeHByLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xkc2lnXERTSUdYUGF0aEZpbHRlckV4cHIuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGRzaWdcRFNJR1hQYXRoSGVyZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZHNpZ1xEU0lHWFBhdGhIZXJlLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9IlJlc291cmNlIEZpbGVzIg0KKwkJCUZpbHRlcj0icmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtccmVzb3VyY2UuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcdmVyc2lvbi5yYyINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9ImVuYyINCisJCQk+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9CYXNlNjQuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDQ3J5cHRvQmFzZTY0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b0V4Y2VwdGlvbi5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9FeGNlcHRpb24uaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDQ3J5cHRvSGFzaC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9LZXkuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDQ3J5cHRvS2V5RFNBLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b0tleUhNQUMuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDQ3J5cHRvS2V5UlNBLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b1Byb3ZpZGVyLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b1N5bW1ldHJpY0tleS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9VdGlscy5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9VdGlscy5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFhTRUNDcnlwdG9YNTA5LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0NyeXB0b1g1MDkuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDS2V5SW5mb1Jlc29sdmVyLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNFQ0tleUluZm9SZXNvbHZlckRlZmF1bHQuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0VDS2V5SW5mb1Jlc29sdmVyRGVmYXVsdC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbHRlcg0KKwkJCQlOYW1lPSJPcGVuU1NMIg0KKwkJCQk+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvQmFzZTY0LmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b0Jhc2U2NC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9IYXNoLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b0hhc2guaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvSGFzaEhNQUMuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvSGFzaEhNQUMuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvS2V5RFNBLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b0tleURTQS5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9LZXlITUFDLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b0tleUhNQUMuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvS2V5UlNBLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b0tleVJTQS5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9Qcm92aWRlci5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9Qcm92aWRlci5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xPcGVuU1NMXE9wZW5TU0xDcnlwdG9TeW1tZXRyaWNLZXkuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5LmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE9wZW5TU0xcT3BlblNTTENyeXB0b1g1MDkuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcT3BlblNTTFxPcGVuU1NMQ3J5cHRvWDUwOS5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQk8L0ZpbHRlcj4NCisJCQk8RmlsdGVyDQorCQkJCU5hbWU9IldpbkNBUEkiDQorCQkJCT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xXaW5DQVBJXFdpbkNBUElDcnlwdG9IYXNoLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFdpbkNBUElcV2luQ0FQSUNyeXB0b0hhc2guaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvSGFzaEhNQUMuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvSGFzaEhNQUMuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvS2V5RFNBLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFdpbkNBUElcV2luQ0FQSUNyeXB0b0tleURTQS5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xXaW5DQVBJXFdpbkNBUElDcnlwdG9LZXlITUFDLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFdpbkNBUElcV2luQ0FQSUNyeXB0b0tleUhNQUMuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvS2V5UlNBLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFdpbkNBUElcV2luQ0FQSUNyeXB0b0tleVJTQS5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xXaW5DQVBJXFdpbkNBUElDcnlwdG9Qcm92aWRlci5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xXaW5DQVBJXFdpbkNBUElDcnlwdG9Qcm92aWRlci5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xXaW5DQVBJXFdpbkNBUElDcnlwdG9TeW1tZXRyaWNLZXkuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvU3ltbWV0cmljS2V5LmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXFdpbkNBUElcV2luQ0FQSUNyeXB0b1g1MDkuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcV2luQ0FQSVxXaW5DQVBJQ3J5cHRvWDUwOS5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQk8L0ZpbHRlcj4NCisJCQk8RmlsdGVyDQorCQkJCU5hbWU9IlhTQ3J5cHQiDQorCQkJCT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xYU0NyeXB0XFhTQ3J5cHRDcnlwdG9CYXNlNjQuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcWFNDcnlwdFxYU0NyeXB0Q3J5cHRvQmFzZTY0LmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCTwvRmlsdGVyPg0KKwkJCTxGaWx0ZXINCisJCQkJTmFtZT0iTlNTIg0KKwkJCQk+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcTlNTXE5TU0NyeXB0b0hhc2guY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcTlNTXE5TU0NyeXB0b0hhc2guaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcTlNTXE5TU0NyeXB0b0hhc2hITUFDLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE5TU1xOU1NDcnlwdG9IYXNoSE1BQy5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xOU1NcTlNTQ3J5cHRvS2V5RFNBLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE5TU1xOU1NDcnlwdG9LZXlEU0EuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcTlNTXE5TU0NyeXB0b0tleUhNQUMuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcTlNTXE5TU0NyeXB0b0tleUhNQUMuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcTlNTXE5TU0NyeXB0b0tleVJTQS5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xOU1NcTlNTQ3J5cHRvS2V5UlNBLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE5TU1xOU1NDcnlwdG9Qcm92aWRlci5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xOU1NcTlNTQ3J5cHRvUHJvdmlkZXIuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xlbmNcTlNTXE5TU0NyeXB0b1N5bW1ldHJpY0tleS5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGVuY1xOU1NcTlNTQ3J5cHRvU3ltbWV0cmljS2V5LmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE5TU1xOU1NDcnlwdG9YNTA5LmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZW5jXE5TU1xOU1NDcnlwdG9YNTA5LmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCTwvRmlsdGVyPg0KKwkJPC9GaWx0ZXI+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0idXRpbHMiDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNCaW5UWEZNSW5wdXRTdHJlYW0uY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNCaW5UWEZNSW5wdXRTdHJlYW0uaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNET01VdGlscy5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ0RPTVV0aWxzLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1xYU0VDTmFtZVNwYWNlRXhwYW5kZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNOYW1lU3BhY2VFeHBhbmRlci5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ1BsYXRmb3JtVXRpbHMuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNQbGF0Zm9ybVV0aWxzLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1xYU0VDU2FmZUJ1ZmZlci5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ1NhZmVCdWZmZXIuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNTYWZlQnVmZmVyRm9ybWF0dGVyLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1xYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlci5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ1NPQVBSZXF1ZXN0b3IuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNTT0FQUmVxdWVzdG9yU2ltcGxlLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1xYU0VDU09BUFJlcXVlc3RvclNpbXBsZS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ1RYRk1JbnB1dFNvdXJjZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ1RYRk1JbnB1dFNvdXJjZS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcWFNFQ1hQYXRoTm9kZUxpc3QuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXFhTRUNYUGF0aE5vZGVMaXN0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsdGVyDQorCQkJCU5hbWU9IndpbnV0aWxzIg0KKwkJCQk+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1x3aW51dGlsc1xYU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdXRpbHNcd2ludXRpbHNcWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbS5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHV0aWxzXHdpbnV0aWxzXFhTRUNTT0FQUmVxdWVzdG9yU2ltcGxlV2luMzIuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1x3aW51dGlsc1xYU0VDVVJJUmVzb2x2ZXJHZW5lcmljV2luMzIuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x1dGlsc1x3aW51dGlsc1xYU0VDVVJJUmVzb2x2ZXJHZW5lcmljV2luMzIuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJPC9GaWx0ZXI+DQorCQk8L0ZpbHRlcj4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJmcmFtZXdvcmsiDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGZyYW1ld29ya1xYU0VDQWxnb3JpdGhtSGFuZGxlci5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNBbGdvcml0aG1NYXBwZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGZyYW1ld29ya1xYU0VDQWxnb3JpdGhtTWFwcGVyLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ0RlZnMuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGZyYW1ld29ya1xYU0VDRW52LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ0Vudi5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNFcnJvci5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNFcnJvci5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcZnJhbWV3b3JrXFhTRUNFeGNlcHRpb24uY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXGZyYW1ld29ya1xYU0VDRXhjZXB0aW9uLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ1Byb3ZpZGVyLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ1Byb3ZpZGVyLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ1VSSVJlc29sdmVyLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ1VSSVJlc29sdmVyWGVyY2VzLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ1VSSVJlc29sdmVyWGVyY2VzLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1xmcmFtZXdvcmtcWFNFQ1czMkNvbmZpZy5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQk8L0ZpbHRlcj4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJ0cmFuc2Zvcm1lcnMiDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNQmFzZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1CYXNlLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTUJhc2U2NC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1CYXNlNjQuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNQzE0bi5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1DMTRuLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTUNoYWluLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTUNoYWluLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTUNpcGhlci5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1DaXBoZXIuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNQ29uY2F0Q2hhaW5zLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTUNvbmNhdENoYWlucy5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1Eb2NPYmplY3QuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNRG9jT2JqZWN0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTUVudmVsb3BlLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTUVudmVsb3BlLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTU1ENS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1NRDUuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNT3V0cHV0RmlsZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1PdXRwdXRGaWxlLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTVBhcnNlci5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1QYXJzZXIuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNU0IuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNU0IuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNU0hBMS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1TSEExLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTVVSTC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNcdHJhbnNmb3JtZXJzXFRYRk1VUkwuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNWFBhdGguY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNWFBhdGguaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNWFBhdGhGaWx0ZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNWFBhdGhGaWx0ZXIuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHRyYW5zZm9ybWVyc1xUWEZNWFNMLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0cmFuc2Zvcm1lcnNcVFhGTVhTTC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQk8L0ZpbHRlcj4NCisJCTxGaWx0ZXINCisJCQlOYW1lPSJ4ZW5jIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXFhFTkNDaXBoZXIuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcWEVOQ0NpcGhlckRhdGEuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcWEVOQ0NpcGhlclJlZmVyZW5jZS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xYRU5DQ2lwaGVyVmFsdWUuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcWEVOQ0VuY3J5cHRlZERhdGEuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcWEVOQ0VuY3J5cHRlZEtleS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xYRU5DRW5jcnlwdGVkVHlwZS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xYRU5DRW5jcnlwdGlvbk1ldGhvZC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbHRlcg0KKwkJCQlOYW1lPSJpbXBsIg0KKwkJCQk+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0LmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNBbGdvcml0aG1IYW5kbGVyRGVmYXVsdC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcaW1wbFxYRU5DQ2lwaGVyRGF0YUltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0NpcGhlckRhdGFJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNDaXBoZXJJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNDaXBoZXJJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNDaXBoZXJSZWZlcmVuY2VJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNDaXBoZXJSZWZlcmVuY2VJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNDaXBoZXJWYWx1ZUltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0NpcGhlclZhbHVlSW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcaW1wbFxYRU5DRW5jcnlwdGVkRGF0YUltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0VuY3J5cHRlZERhdGFJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNFbmNyeXB0ZWRLZXlJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNFbmNyeXB0ZWRLZXlJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNFbmNyeXB0ZWRUeXBlSW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhlbmNcaW1wbFxYRU5DRW5jcnlwdGVkVHlwZUltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4ZW5jXGltcGxcWEVOQ0VuY3J5cHRpb25NZXRob2RJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGVuY1xpbXBsXFhFTkNFbmNyeXB0aW9uTWV0aG9kSW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQk8L0ZpbHRlcj4NCisJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9InhrbXMiDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU0F1dGhlbnRpY2F0aW9uLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNDb21wb3VuZFJlcXVlc3QuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU0NvbXBvdW5kUmVzdWx0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNDb25zdGFudHMuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU0NvbnN0YW50cy5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TS2V5QmluZGluZy5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TTG9jYXRlUmVxdWVzdC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TTG9jYXRlUmVzdWx0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNNZXNzYWdlRmFjdG9yeS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbi5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUGVuZGluZ1JlcXVlc3QuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1Byb3RvdHlwZUtleUJpbmRpbmcuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1F1ZXJ5S2V5QmluZGluZy5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUmVjb3ZlcktleUJpbmRpbmcuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1JlY292ZXJSZXF1ZXN0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZWNvdmVyUmVzdWx0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZWdpc3RlclJlcXVlc3QuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1JlZ2lzdGVyUmVzdWx0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZWlzc3VlS2V5QmluZGluZy5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUmVpc3N1ZVJlcXVlc3QuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1JlaXNzdWVSZXN1bHQuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGUuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1Jlc3BvbmRXaXRoLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZXNwb25zZU1lY2hhbmlzbS5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TUmVzdWx0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZXN1bHRUeXBlLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZXZva2VLZXlCaW5kaW5nLmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZXZva2VSZXF1ZXN0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNSZXZva2VSZXN1bHQuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1JTQUtleVBhaXIuaHBwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcWEtNU1N0YXR1cy5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TU3RhdHVzUmVxdWVzdC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TU3RhdHVzUmVzdWx0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNVbnZlcmlmaWVkS2V5QmluZGluZy5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TVXNlS2V5V2l0aC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TVmFsaWRhdGVSZXF1ZXN0LmhwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXFhLTVNWYWxpZGF0ZVJlc3VsdC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xYS01TVmFsaWRpdHlJbnRlcnZhbC5ocHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbHRlcg0KKwkJCQlOYW1lPSJpbXBsIg0KKwkJCQk+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU0F1dGhlbnRpY2F0aW9uSW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TQXV0aGVudGljYXRpb25JbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNDb21wb3VuZFJlcXVlc3RJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNDb21wb3VuZFJlcXVlc3RJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNDb21wb3VuZFJlc3VsdEltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU0NvbXBvdW5kUmVzdWx0SW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNLZXlCaW5kaW5nSW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TS2V5QmluZGluZ0ltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU0xvY2F0ZVJlcXVlc3RJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNMb2NhdGVSZXF1ZXN0SW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TTG9jYXRlUmVzdWx0SW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TTG9jYXRlUmVzdWx0SW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNNZXNzYWdlRmFjdG9yeUltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU01lc3NhZ2VGYWN0b3J5SW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbi5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbkltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1BlbmRpbmdSZXF1ZXN0SW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUGVuZGluZ1JlcXVlc3RJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNQcm90b3R5cGVLZXlCaW5kaW5nSW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUHJvdG90eXBlS2V5QmluZGluZ0ltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1F1ZXJ5S2V5QmluZGluZ0ltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1F1ZXJ5S2V5QmluZGluZ0ltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlY292ZXJLZXlCaW5kaW5nSW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVjb3ZlcktleUJpbmRpbmdJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZWNvdmVyUmVxdWVzdEltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlY292ZXJSZXF1ZXN0SW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVjb3ZlclJlc3VsdEltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlY292ZXJSZXN1bHRJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZWdpc3RlclJlcXVlc3RJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZWdpc3RlclJlcXVlc3RJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZWdpc3RlclJlc3VsdEltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlZ2lzdGVyUmVzdWx0SW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVpc3N1ZUtleUJpbmRpbmdJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZWlzc3VlS2V5QmluZGluZ0ltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlaXNzdWVSZXF1ZXN0SW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVpc3N1ZVJlcXVlc3RJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZWlzc3VlUmVzdWx0SW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVpc3N1ZVJlc3VsdEltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVzcG9uZFdpdGhJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXNwb25kV2l0aEltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1Jlc3BvbnNlTWVjaGFuaXNtSW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVzcG9uc2VNZWNoYW5pc21JbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXN1bHRJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXN1bHRJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXN1bHRUeXBlSW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmVzdWx0VHlwZUltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1Jldm9rZUtleUJpbmRpbmdJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXZva2VLZXlCaW5kaW5nSW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUmV2b2tlUmVxdWVzdEltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1Jldm9rZVJlcXVlc3RJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXZva2VSZXN1bHRJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSZXZva2VSZXN1bHRJbXBsLmhwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNSU0FLZXlQYWlySW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TUlNBS2V5UGFpckltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1N0YXR1c0ltcGwuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1N0YXR1c0ltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1N0YXR1c1JlcXVlc3RJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNTdGF0dXNSZXF1ZXN0SW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TU3RhdHVzUmVzdWx0SW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TU3RhdHVzUmVzdWx0SW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TVW52ZXJpZmllZEtleUJpbmRpbmdJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNVbnZlcmlmaWVkS2V5QmluZGluZ0ltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1VzZUtleVdpdGhJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNVc2VLZXlXaXRoSW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TVmFsaWRhdGVSZXF1ZXN0SW1wbC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TVmFsaWRhdGVSZXF1ZXN0SW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cLi5cc3JjXHhrbXNcaW1wbFxYS01TVmFsaWRhdGVSZXN1bHRJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNWYWxpZGF0ZVJlc3VsdEltcGwuaHBwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x4a21zXGltcGxcWEtNU1ZhbGlkaXR5SW50ZXJ2YWxJbXBsLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlwuLlxzcmNceGttc1xpbXBsXFhLTVNWYWxpZGl0eUludGVydmFsSW1wbC5ocHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQk8L0ZpbHRlcj4NCisJCTwvRmlsdGVyPg0KKwk8L0ZpbGVzPg0KKwk8R2xvYmFscz4NCisJPC9HbG9iYWxzPg0KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9jL1Byb2plY3RzL1ZDOS4wL3hzZWMveHRlc3QveHRlc3QudmNwcm9qIGIvYy9Qcm9qZWN0cy9WQzkuMC94c2VjL3h0ZXN0L3h0ZXN0LnZjcHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODM0OGI0Ci0tLSAvZGV2L251bGwKKysrIGIvYy9Qcm9qZWN0cy9WQzkuMC94c2VjL3h0ZXN0L3h0ZXN0LnZjcHJvagpAQCAtMCwwICsxLDc0MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQorPFZpc3VhbFN0dWRpb1Byb2plY3QNCisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQorCVZlcnNpb249IjkuMDAiDQorCU5hbWU9Inh0ZXN0Ig0KKwlQcm9qZWN0R1VJRD0iezEyN0IzRTYxLTA5NkMtNDM4QS1CRjMzLTVBOUYwNUM3MDM1QX0iDQorCVJvb3ROYW1lc3BhY2U9Inh0ZXN0Ig0KKwlLZXl3b3JkPSJXaW4zMlByb2oiDQorCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiINCisJPg0KKwk8UGxhdGZvcm1zPg0KKwkJPFBsYXRmb3JtDQorCQkJTmFtZT0iV2luMzIiDQorCQkvPg0KKwkJPFBsYXRmb3JtDQorCQkJTmFtZT0ieDY0Ig0KKwkJLz4NCisJPC9QbGF0Zm9ybXM+DQorCTxUb29sRmlsZXM+DQorCTwvVG9vbEZpbGVzPg0KKwk8Q29uZmlndXJhdGlvbnM+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgWGFsYW4tQ18xRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzIubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikveHRlc3QuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL3h0ZXN0LnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBYYWxhbi1DXzFELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS94dGVzdC5leGUiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikveHRlc3QucGRiIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpJnF1b3Q7Ig0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmomcXVvdDsiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiBYYWxhbi1DXzEubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikveHRlc3QuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpJnF1b3Q7Ig0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKS9vYmomcXVvdDsiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIyIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zLmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMi5saWIgWGFsYW4tQ18xLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3h0ZXN0LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1ZyBObyBYYWxhbnxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfWFNFQ19ET19NRU1ERUJVRztXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzNELmxpYiBjcnlwdDMyLmxpYiBsaWJlYXkzMkQubGliIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikveHRlc3QuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL3h0ZXN0LnBkYiINCisJCQkJU3ViU3lzdGVtPSIxIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnIE5vIFhhbGFufHg2NCINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X1hTRUNfRE9fTUVNREVCVUc7V0lOMzI7X0RFQlVHO19DT05TT0xFIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJCQkJUnVudGltZVR5cGVJbmZvPSJmYWxzZSINCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ4ZXJjZXMtY18zRC5saWIgY3J5cHQzMi5saWIgbGliZWF5MzJELmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3h0ZXN0LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS94dGVzdC5wZGIiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZSBObyBYYWxhbnxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkmcXVvdDsiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSImcXVvdDsuLi8uLi8uLi8uLi9CdWlsZC8kKFBsYXRmb3JtTmFtZSkvVkM5LyQoQ29uZmlndXJhdGlvbk5hbWUpL29iaiZxdW90OyINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO1dJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3h0ZXN0LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2UgTm8gWGFsYW58eDY0Ig0KKwkJCU91dHB1dERpcmVjdG9yeT0iJnF1b3Q7Li4vLi4vLi4vLi4vQnVpbGQvJChQbGF0Zm9ybU5hbWUpL1ZDOS8kKENvbmZpZ3VyYXRpb25OYW1lKSZxdW90OyINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiZxdW90Oy4uLy4uLy4uLy4uL0J1aWxkLyQoUGxhdGZvcm1OYW1lKS9WQzkvJChDb25maWd1cmF0aW9uTmFtZSkvb2JqJnF1b3Q7Ig0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlDaGFyYWN0ZXJTZXQ9IjIiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMiINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO1dJTjMyO05ERUJVRztfQ09OU09MRSINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJUnVudGltZUxpYnJhcnk9IjIiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlSdW50aW1lVHlwZUluZm89ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9InhlcmNlcy1jXzMubGliIGNyeXB0MzIubGliIGxpYmVheTMyLmxpYiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3h0ZXN0LmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwk8L0NvbmZpZ3VyYXRpb25zPg0KKwk8UmVmZXJlbmNlcz4NCisJPC9SZWZlcmVuY2VzPg0KKwk8RmlsZXM+DQorCQk8RmlsdGVyDQorCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KKwkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXC4uXHNyY1x0b29sc1x4dGVzdFx4dGVzdC5jcHAiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi8uLi9pbmNsdWRlIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWcgTm8gWGFsYW58V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vLi4vLi4vaW5jbHVkZSINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWcgTm8gWGFsYW58eDY0Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uLy4uLy4uL2luY2x1ZGUiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9IkhlYWRlciBGaWxlcyINCisJCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jIg0KKwkJCT4NCisJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9IlJlc291cmNlIEZpbGVzIg0KKwkJCUZpbHRlcj0icmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIg0KKwkJCT4NCisJCTwvRmlsdGVyPg0KKwk8L0ZpbGVzPg0KKwk8R2xvYmFscz4NCisJPC9HbG9iYWxzPg0KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9jL2FjbG9jYWwubTQgYi9jL2FjbG9jYWwubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzI5YmQ2MgotLS0gL2Rldi9udWxsCisrKyBiL2MvYWNsb2NhbC5tNApAQCAtMCwwICsxLDY3OTYgQEAKKyMgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgYWNsb2NhbCAxLjkuNSAtKi0gQXV0b2NvbmYgLSotCisKKyMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LAorIyAyMDA1ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFksIHRvIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdzsgd2l0aG91dAorIyBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBCisjIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKworIyBsaWJ0b29sLm00IC0gQ29uZmlndXJlIGxpYnRvb2wgZm9yIHRoZSBob3N0IHN5c3RlbS4gLSotQXV0b2NvbmYtKi0KKworIyBzZXJpYWwgNDcgQUNfUFJPR19MSUJUT09MCisjIERlYmlhbiAkUmV2OiAyMTQgJAorCisKKyMgQUNfUFJPVklERV9JRkVMU0UoTUFDUk8tTkFNRSwgSUYtUFJPVklERUQsIElGLU5PVC1QUk9WSURFRCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgSWYgdGhpcyBtYWNybyBpcyBub3QgZGVmaW5lZCBieSBBdXRvY29uZiwgZGVmaW5lIGl0IGhlcmUuCittNF9pZmRlZihbQUNfUFJPVklERV9JRkVMU0VdLAorICAgICAgICAgW10sCisgICAgICAgICBbbTRfZGVmaW5lKFtBQ19QUk9WSURFX0lGRUxTRV0sCisJICAgICAgICAgW200X2lmZGVmKFtBQ19QUk9WSURFXyQxXSwKKwkJICAgICAgICAgICBbJDJdLCBbJDNdKV0pXSkKKworCisjIEFDX1BST0dfTElCVE9PTAorIyAtLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtBQ19QUk9HX0xJQlRPT0xdLAorW0FDX1JFUVVJUkUoW19BQ19QUk9HX0xJQlRPT0xdKWRubAorZG5sIElmIEFDX1BST0dfQ1hYIGhhcyBhbHJlYWR5IGJlZW4gZXhwYW5kZWQsIHJ1biBBQ19MSUJUT09MX0NYWAorZG5sIGltbWVkaWF0ZWx5LCBvdGhlcndpc2UsIGhvb2sgaXQgaW4gYXQgdGhlIGVuZCBvZiBBQ19QUk9HX0NYWC4KKyAgQUNfUFJPVklERV9JRkVMU0UoW0FDX1BST0dfQ1hYXSwKKyAgICBbQUNfTElCVE9PTF9DWFhdLAorICAgIFtkZWZpbmUoW0FDX1BST0dfQ1hYXSwgZGVmbihbQUNfUFJPR19DWFhdKVtBQ19MSUJUT09MX0NYWAorICBdKV0pCitkbmwgQW5kIGEgc2ltaWxhciBzZXR1cCBmb3IgRm9ydHJhbiA3NyBzdXBwb3J0CisgIEFDX1BST1ZJREVfSUZFTFNFKFtBQ19QUk9HX0Y3N10sCisgICAgW0FDX0xJQlRPT0xfRjc3XSwKKyAgICBbZGVmaW5lKFtBQ19QUk9HX0Y3N10sIGRlZm4oW0FDX1BST0dfRjc3XSlbQUNfTElCVE9PTF9GNzcKK10pXSkKKworZG5sIFF1b3RlIEFdW01fUFJPR19HQ0ogc28gdGhhdCBhY2xvY2FsIGRvZXNuJ3QgYnJpbmcgaXQgaW4gbmVlZGxlc3NseS4KK2RubCBJZiBlaXRoZXIgQUNfUFJPR19HQ0ogb3IgQV1bTV9QUk9HX0dDSiBoYXZlIGFscmVhZHkgYmVlbiBleHBhbmRlZCwgcnVuCitkbmwgQUNfTElCVE9PTF9HQ0ogaW1tZWRpYXRlbHksIG90aGVyd2lzZSwgaG9vayBpdCBpbiBhdCB0aGUgZW5kIG9mIGJvdGguCisgIEFDX1BST1ZJREVfSUZFTFNFKFtBQ19QUk9HX0dDSl0sCisgICAgW0FDX0xJQlRPT0xfR0NKXSwKKyAgICBbQUNfUFJPVklERV9JRkVMU0UoW0FdW01fUFJPR19HQ0pdLAorICAgICAgW0FDX0xJQlRPT0xfR0NKXSwKKyAgICAgIFtBQ19QUk9WSURFX0lGRUxTRShbTFRfQUNfUFJPR19HQ0pdLAorCVtBQ19MSUJUT09MX0dDSl0sCisgICAgICBbaWZkZWYoW0FDX1BST0dfR0NKXSwKKwkgICAgIFtkZWZpbmUoW0FDX1BST0dfR0NKXSwgZGVmbihbQUNfUFJPR19HQ0pdKVtBQ19MSUJUT09MX0dDSl0pXSkKKyAgICAgICBpZmRlZihbQV1bTV9QUk9HX0dDSl0sCisJICAgICBbZGVmaW5lKFtBXVtNX1BST0dfR0NKXSwgZGVmbihbQV1bTV9QUk9HX0dDSl0pW0FDX0xJQlRPT0xfR0NKXSldKQorICAgICAgIGlmZGVmKFtMVF9BQ19QUk9HX0dDSl0sCisJICAgICBbZGVmaW5lKFtMVF9BQ19QUk9HX0dDSl0sCisJCWRlZm4oW0xUX0FDX1BST0dfR0NKXSlbQUNfTElCVE9PTF9HQ0pdKV0pXSldKQorXSldKSMgQUNfUFJPR19MSUJUT09MCisKKworIyBfQUNfUFJPR19MSUJUT09MCisjIC0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtfQUNfUFJPR19MSUJUT09MXSwKK1tBQ19SRVFVSVJFKFtBQ19MSUJUT09MX1NFVFVQXSlkbmwKK0FDX0JFRk9SRShbJDBdLFtBQ19MSUJUT09MX0NYWF0pZG5sCitBQ19CRUZPUkUoWyQwXSxbQUNfTElCVE9PTF9GNzddKWRubAorQUNfQkVGT1JFKFskMF0sW0FDX0xJQlRPT0xfR0NKXSlkbmwKKworIyBUaGlzIGNhbiBiZSB1c2VkIHRvIHJlYnVpbGQgbGlidG9vbCB3aGVuIG5lZWRlZAorTElCVE9PTF9ERVBTPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCisKKyMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCitMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKK0FDX1NVQlNUKExJQlRPT0wpZG5sCisKKyMgUHJldmVudCBtdWx0aXBsZSBleHBhbnNpb24KK2RlZmluZShbQUNfUFJPR19MSUJUT09MXSwgW10pCitdKSMgX0FDX1BST0dfTElCVE9PTAorCisKKyMgQUNfTElCVE9PTF9TRVRVUAorIyAtLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbQUNfTElCVE9PTF9TRVRVUF0sCitbQUNfUFJFUkVRKDIuNTApZG5sCitBQ19SRVFVSVJFKFtBQ19FTkFCTEVfU0hBUkVEXSlkbmwKK0FDX1JFUVVJUkUoW0FDX0VOQUJMRV9TVEFUSUNdKWRubAorQUNfUkVRVUlSRShbQUNfRU5BQkxFX0ZBU1RfSU5TVEFMTF0pZG5sCitBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCitBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfQlVJTERdKWRubAorQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pZG5sCitBQ19SRVFVSVJFKFtBQ19QUk9HX0xEXSlkbmwKK0FDX1JFUVVJUkUoW0FDX1BST0dfTERfUkVMT0FEX0ZMQUddKWRubAorQUNfUkVRVUlSRShbQUNfUFJPR19OTV0pZG5sCisKK0FDX1JFUVVJUkUoW0FDX1BST0dfTE5fU10pZG5sCitBQ19SRVFVSVJFKFtBQ19ERVBMSUJTX0NIRUNLX01FVEhPRF0pZG5sCisjIEF1dG9jb25mIDIuMTMncyBBQ19PQkpFWFQgYW5kIEFDX0VYRUVYVCBtYWNyb3Mgb25seSB3b3JrcyBmb3IgQyBjb21waWxlcnMhCitBQ19SRVFVSVJFKFtBQ19PQkpFWFRdKWRubAorQUNfUkVRVUlSRShbQUNfRVhFRVhUXSlkbmwKK2RubAorCitBQ19MSUJUT09MX1NZU19NQVhfQ01EX0xFTgorQUNfTElCVE9PTF9TWVNfR0xPQkFMX1NZTUJPTF9QSVBFCitBQ19MSUJUT09MX09CSkRJUgorCitBQ19SRVFVSVJFKFtfTFRfQUNfU1lTX0NPTVBJTEVSXSlkbmwKK19MVF9BQ19QUk9HX0VDSE9fQkFDS1NMQVNICisKK2Nhc2UgJGhvc3Rfb3MgaW4KK2FpeDMqKQorICAjIEFJWCBzb21ldGltZXMgaGFzIHByb2JsZW1zIHdpdGggdGhlIEdDQyBjb2xsZWN0MiBwcm9ncmFtLiAgRm9yIHNvbWUKKyAgIyByZWFzb24sIGlmIHdlIHNldCB0aGUgQ09MTEVDVF9OQU1FUyBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdGhlIHByb2JsZW1zCisgICMgdmFuaXNoIGluIGEgcHVmZiBvZiBzbW9rZS4KKyAgaWYgdGVzdCAiWCR7Q09MTEVDVF9OQU1FUytzZXR9IiAhPSBYc2V0OyB0aGVuCisgICAgQ09MTEVDVF9OQU1FUz0KKyAgICBleHBvcnQgQ09MTEVDVF9OQU1FUworICBmaQorICA7OworZXNhYworCisjIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBoZWxwcyB1cyBkbyByb2J1c3QgcXVvdGluZy4gIEl0IGJhY2tzbGFzaGlmaWVzCisjIG1ldGFjaGFyYWN0ZXJzIHRoYXQgYXJlIHN0aWxsIGFjdGl2ZSB3aXRoaW4gZG91YmxlLXF1b3RlZCBzdHJpbmdzLgorWHNlZD0nc2VkIC1lIHMvXlgvLycKK1tzZWRfcXVvdGVfc3Vic3Q9J3MvXChbXFwiXFxgJFxcXFxdXCkvXFxcMS9nJ10KKworIyBTYW1lIGFzIGFib3ZlLCBidXQgZG8gbm90IHF1b3RlIHZhcmlhYmxlIHJlZmVyZW5jZXMuCitbZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woW1xcIlxcYFxcXFxdXCkvXFxcMS9nJ10KKworIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGRlbGF5IGV4cGFuc2lvbiBvZiBhbiBlc2NhcGVkIHNoZWxsIHZhcmlhYmxlIGluIGEKKyMgZG91YmxlX3F1b3RlX3N1YnN0J2VkIHN0cmluZy4KK2RlbGF5X3ZhcmlhYmxlX3N1YnN0PSdzL1xcXFxcXFxcXFxcJC9cXFxcXFwkL2cnCisKKyMgU2VkIHN1YnN0aXR1dGlvbiB0byBhdm9pZCBhY2NpZGVudGFsIGdsb2JiaW5nIGluIGV2YWxlZCBleHByZXNzaW9ucworbm9fZ2xvYl9zdWJzdD0ncy9cKi9cXFwqL2cnCisKKyMgQ29uc3RhbnRzOgorcm09InJtIC1mIgorCisjIEdsb2JhbCB2YXJpYWJsZXM6CitkZWZhdWx0X29maWxlPWxpYnRvb2wKK2Nhbl9idWlsZF9zaGFyZWQ9eWVzCisKKyMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNJFZDLAorIyB3aGljaCBuZWVkcyAnLmxpYicpLgorbGliZXh0PWEKK2x0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorb2ZpbGU9IiRkZWZhdWx0X29maWxlIgord2l0aF9nbnVfbGQ9IiRsdF9jdl9wcm9nX2dudV9sZCIKKworQUNfQ0hFQ0tfVE9PTChBUiwgYXIsIGZhbHNlKQorQUNfQ0hFQ0tfVE9PTChSQU5MSUIsIHJhbmxpYiwgOikKK0FDX0NIRUNLX1RPT0woU1RSSVAsIHN0cmlwLCA6KQorCitvbGRfQ0M9IiRDQyIKK29sZF9DRkxBR1M9IiRDRkxBR1MiCisKKyMgU2V0IHNhbmUgZGVmYXVsdHMgZm9yIHZhcmlvdXMgdmFyaWFibGVzCit0ZXN0IC16ICIkQVIiICYmIEFSPWFyCit0ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQordGVzdCAteiAiJEFTIiAmJiBBUz1hcwordGVzdCAteiAiJENDIiAmJiBDQz1jYwordGVzdCAteiAiJExUQ0MiICYmIExUQ0M9JENDCit0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCit0ZXN0IC16ICIkTEQiICYmIExEPWxkCit0ZXN0IC16ICIkTE5fUyIgJiYgTE5fUz0ibG4gLXMiCit0ZXN0IC16ICIkTUFHSUNfQ01EIiAmJiBNQUdJQ19DTUQ9ZmlsZQordGVzdCAteiAiJE5NIiAmJiBOTT1ubQordGVzdCAteiAiJFNFRCIgJiYgU0VEPXNlZAordGVzdCAteiAiJE9CSkRVTVAiICYmIE9CSkRVTVA9b2JqZHVtcAordGVzdCAteiAiJFJBTkxJQiIgJiYgUkFOTElCPToKK3Rlc3QgLXogIiRTVFJJUCIgJiYgU1RSSVA9OgordGVzdCAteiAiJGFjX29iamV4dCIgJiYgYWNfb2JqZXh0PW8KKworIyBEZXRlcm1pbmUgY29tbWFuZHMgdG8gY3JlYXRlIG9sZC1zdHlsZSBzdGF0aWMgYXJjaGl2ZXMuCitvbGRfYXJjaGl2ZV9jbWRzPSckQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKK29sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKK29sZF9wb3N0dW5pbnN0YWxsX2NtZHM9CisKK2lmIHRlc3QgLW4gIiRSQU5MSUIiOyB0aGVuCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgb3BlbmJzZCopCisgICAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9IlwkUkFOTElCIC10IFwkb2xkbGlifiRvbGRfcG9zdGluc3RhbGxfY21kcyIKKyAgICA7OworICAqKQorICAgIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSJcJFJBTkxJQiBcJG9sZGxpYn4kb2xkX3Bvc3RpbnN0YWxsX2NtZHMiCisgICAgOzsKKyAgZXNhYworICBvbGRfYXJjaGl2ZV9jbWRzPSIkb2xkX2FyY2hpdmVfY21kc35cJFJBTkxJQiBcJG9sZGxpYiIKK2ZpCisKKyMgT25seSBwZXJmb3JtIHRoZSBjaGVjayBmb3IgZmlsZSwgaWYgdGhlIGNoZWNrIG1ldGhvZCByZXF1aXJlcyBpdAorY2FzZSAkZGVwbGlic19jaGVja19tZXRob2QgaW4KK2ZpbGVfbWFnaWMqKQorICBpZiB0ZXN0ICIkZmlsZV9tYWdpY19jbWQiID0gJyRNQUdJQ19DTUQnOyB0aGVuCisgICAgQUNfUEFUSF9NQUdJQworICBmaQorICA7OworZXNhYworCitBQ19QUk9WSURFX0lGRUxTRShbQUNfTElCVE9PTF9ETE9QRU5dLCBlbmFibGVfZGxvcGVuPXllcywgZW5hYmxlX2Rsb3Blbj1ubykKK0FDX1BST1ZJREVfSUZFTFNFKFtBQ19MSUJUT09MX1dJTjMyX0RMTF0sCitlbmFibGVfd2luMzJfZGxsPXllcywgZW5hYmxlX3dpbjMyX2RsbD1ubykKKworQUNfQVJHX0VOQUJMRShbbGlidG9vbC1sb2NrXSwKKyAgICBbQUNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1saWJ0b29sLWxvY2tdLAorCVthdm9pZCBsb2NraW5nIChtaWdodCBicmVhayBwYXJhbGxlbCBidWlsZHMpXSldKQordGVzdCAieCRlbmFibGVfbGlidG9vbF9sb2NrIiAhPSB4bm8gJiYgZW5hYmxlX2xpYnRvb2xfbG9jaz15ZXMKKworQUNfQVJHX1dJVEgoW3BpY10sCisgICAgW0FDX0hFTFBfU1RSSU5HKFstLXdpdGgtcGljXSwKKwlbdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgQDw6QGRlZmF1bHQ9dXNlIGJvdGhAOj5AXSldLAorICAgIFtwaWNfbW9kZT0iJHdpdGh2YWwiXSwKKyAgICBbcGljX21vZGU9ZGVmYXVsdF0pCit0ZXN0IC16ICIkcGljX21vZGUiICYmIHBpY19tb2RlPWRlZmF1bHQKKworIyBVc2UgQyBmb3IgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBpbiB0aGUgbGlidG9vbCBzY3JpcHQKK3RhZ25hbWU9CitBQ19MSUJUT09MX0xBTkdfQ19DT05GSUcKK19MVF9BQ19UQUdDT05GSUcKK10pIyBBQ19MSUJUT09MX1NFVFVQCisKKworIyBfTFRfQUNfU1lTX0NPTVBJTEVSCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtfTFRfQUNfU1lTX0NPTVBJTEVSXSwKK1tBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSlkbmwKKworIyBJZiBubyBDIGNvbXBpbGVyIHdhcyBzcGVjaWZpZWQsIHVzZSBDQy4KK0xUQ0M9JHtMVENDLSIkQ0MifQorCisjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorY29tcGlsZXI9JENDCitdKSMgX0xUX0FDX1NZU19DT01QSUxFUgorCisKKyMgX0xUX0FDX1NZU19MSUJQQVRIX0FJWAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIExpbmtzIGEgbWluaW1hbCBwcm9ncmFtIGFuZCBjaGVja3MgdGhlIGV4ZWN1dGFibGUKKyMgZm9yIHRoZSBzeXN0ZW0gZGVmYXVsdCBoYXJkY29kZWQgbGlicmFyeSBwYXRoLiBJbiBtb3N0IGNhc2VzLAorIyB0aGlzIGlzIC91c3IvbGliOi9saWIsIGJ1dCB3aGVuIHRoZSBNUEkgY29tcGlsZXJzIGFyZSB1c2VkCisjIHRoZSBsb2NhdGlvbiBvZiB0aGUgY29tbXVuaWNhdGlvbiBhbmQgTVBJIGxpYnMgYXJlIGluY2x1ZGVkIHRvby4KKyMgSWYgd2UgZG9uJ3QgZmluZCBhbnl0aGluZywgdXNlIHRoZSBkZWZhdWx0IGxpYnJhcnkgcGF0aCBhY2NvcmRpbmcKKyMgdG8gdGhlIGFpeCBsZCBtYW51YWwuCitBQ19ERUZVTihbX0xUX0FDX1NZU19MSUJQQVRIX0FJWF0sCitbQUNfTElOS19JRkVMU0UoQUNfTEFOR19QUk9HUkFNLFsKK2FpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgJy9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsgL14wLyB7IHMvXjAgICpcKC4qXCkkL1wxLzsgcDsgfQorfSdgCisjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCitpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgJy9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsgL14wLyB7IHMvXjAgICpcKC4qXCkkL1wxLzsgcDsgfQorfSdgOyBmaV0sW10pCitpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK10pIyBfTFRfQUNfU1lTX0xJQlBBVEhfQUlYCisKKworIyBfTFRfQUNfU0hFTExfSU5JVChBUkcpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtfTFRfQUNfU0hFTExfSU5JVF0sCitbaWZkZWYoW0FDX0RJVkVSU0lPTl9OT1RJQ0VdLAorCSAgICAgW0FDX0RJVkVSVF9QVVNIKEFDX0RJVkVSU0lPTl9OT1RJQ0UpXSwKKwkgW0FDX0RJVkVSVF9QVVNIKE5PVElDRSldKQorJDEKK0FDX0RJVkVSVF9QT1AKK10pIyBfTFRfQUNfU0hFTExfSU5JVAorCisKKyMgX0xUX0FDX1BST0dfRUNIT19CQUNLU0xBU0gKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQWRkIHNvbWUgY29kZSB0byB0aGUgc3RhcnQgb2YgdGhlIGdlbmVyYXRlZCBjb25maWd1cmUgc2NyaXB0IHdoaWNoCisjIHdpbGwgZmluZCBhbiBlY2hvIGNvbW1hbmQgd2hpY2ggZG9lc24ndCBpbnRlcnByZXQgYmFja3NsYXNoZXMuCitBQ19ERUZVTihbX0xUX0FDX1BST0dfRUNIT19CQUNLU0xBU0hdLAorW19MVF9BQ19TSEVMTF9JTklUKFsKKyMgQ2hlY2sgdGhhdCB3ZSBhcmUgcnVubmluZyB1bmRlciB0aGUgY29ycmVjdCBzaGVsbC4KK1NIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9CisKK2Nhc2UgWCRFQ0hPIGluCitYKi0tZmFsbGJhY2stZWNobykKKyAgIyBSZW1vdmUgb25lIGxldmVsIG9mIHF1b3RhdGlvbiAod2hpY2ggd2FzIHJlcXVpcmVkIGZvciBNYWtlKS4KKyAgRUNITz1gZWNobyAiJEVDSE8iIHwgc2VkICdzLFxcXFxcWyRdXFxbJF0wLCdbJF0wJywnYAorICA7OworZXNhYworCitlY2hvPSR7RUNITy1lY2hvfQoraWYgdGVzdCAiWFskXTEiID0gWC0tbm8tcmVleGVjOyB0aGVuCisgICMgRGlzY2FyZCB0aGUgLS1uby1yZWV4ZWMgZmxhZywgYW5kIGNvbnRpbnVlLgorICBzaGlmdAorZWxpZiB0ZXN0ICJYWyRdMSIgPSBYLS1mYWxsYmFjay1lY2hvOyB0aGVuCisgICMgQXZvaWQgaW5saW5lIGRvY3VtZW50IGhlcmUsIGl0IG1heSBiZSBsZWZ0IG92ZXIKKyAgOgorZWxpZiB0ZXN0ICJYYCgkZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgOyB0aGVuCisgICMgWWlwcGVlLCAkZWNobyB3b3JrcyEKKyAgOgorZWxzZQorICAjIFJlc3RhcnQgdW5kZXIgdGhlIGNvcnJlY3Qgc2hlbGwuCisgIGV4ZWMgJFNIRUxMICJbJF0wIiAtLW5vLXJlZXhlYyAkezErIlskXUAifQorZmkKKworaWYgdGVzdCAiWFskXTEiID0gWC0tZmFsbGJhY2stZWNobzsgdGhlbgorICAjIHVzZWQgYXMgZmFsbGJhY2sgZWNobworICBzaGlmdAorICBjYXQgPDxFT0YKK1skXSoKK0VPRgorICBleGl0IDAKK2ZpCisKKyMgVGhlIEhQLVVYIGtzaCBhbmQgUE9TSVggc2hlbGwgcHJpbnQgdGhlIHRhcmdldCBkaXJlY3RvcnkgdG8gc3Rkb3V0CisjIGlmIENEUEFUSCBpcyBzZXQuCitpZiB0ZXN0ICJYJHtDRFBBVEgrc2V0fSIgPSBYc2V0OyB0aGVuIENEUEFUSD06OyBleHBvcnQgQ0RQQVRIOyBmaQorCitpZiB0ZXN0IC16ICIkRUNITyI7IHRoZW4KK2lmIHRlc3QgIlgke2VjaG9fdGVzdF9zdHJpbmcrc2V0fSIgIT0gWHNldDsgdGhlbgorIyBmaW5kIGEgc3RyaW5nIGFzIGxhcmdlIGFzIHBvc3NpYmxlLCBhcyBsb25nIGFzIHRoZSBzaGVsbCBjYW4gY29wZSB3aXRoIGl0CisgIGZvciBjbWQgaW4gJ3NlZCA1MHEgIlskXTAiJyAnc2VkIDIwcSAiWyRdMCInICdzZWQgMTBxICJbJF0wIicgJ3NlZCAycSAiWyRdMCInICdlY2hvIHRlc3QnOyBkbworICAgICMgZXhwZWN0ZWQgc2l6ZXM6IGxlc3MgdGhhbiAyS2IsIDFLYiwgNTEyIGJ5dGVzLCAxNiBieXRlcywgLi4uCisgICAgaWYgKGVjaG9fdGVzdF9zdHJpbmc9ImBldmFsICRjbWRgIikgMj4vZGV2L251bGwgJiYKKyAgICAgICBlY2hvX3Rlc3Rfc3RyaW5nPSJgZXZhbCAkY21kYCIgJiYKKyAgICAgICAodGVzdCAiWCRlY2hvX3Rlc3Rfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciKSAyPi9kZXYvbnVsbAorICAgIHRoZW4KKyAgICAgIGJyZWFrCisgICAgZmkKKyAgZG9uZQorZmkKKworaWYgdGVzdCAiWGAoJGVjaG8gJ1x0JykgMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCisgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJGVjaG8gIiRlY2hvX3Rlc3Rfc3RyaW5nIikgMj4vZGV2L251bGxgICYmCisgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KKyAgOgorZWxzZQorICAjIFRoZSBTb2xhcmlzLCBBSVgsIGFuZCBEaWdpdGFsIFVuaXggZGVmYXVsdCBlY2hvIHByb2dyYW1zIHVucXVvdGUKKyAgIyBiYWNrc2xhc2hlcy4gIFRoaXMgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBxdW90ZSBiYWNrc2xhc2hlcyB1c2luZworICAjICAgZWNobyAiJHNvbWV0aGluZyIgfCBzZWQgJ3MvXFwvXFxcXC9nJworICAjCisgICMgU28sIGZpcnN0IHdlIGxvb2sgZm9yIGEgd29ya2luZyBlY2hvIGluIHRoZSB1c2VyJ3MgUEFUSC4KKworICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0kUEFUSF9TRVBBUkFUT1IKKyAgZm9yIGRpciBpbiAkUEFUSCAvdXNyL3VjYjsgZG8KKyAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICBpZiAodGVzdCAtZiAkZGlyL2VjaG8gfHwgdGVzdCAtZiAkZGlyL2VjaG8kYWNfZXhlZXh0KSAmJgorICAgICAgIHRlc3QgIlhgKCRkaXIvZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKKyAgICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJGRpci9lY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgorICAgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgorICAgICAgZWNobz0iJGRpci9lY2hvIgorICAgICAgYnJlYWsKKyAgICBmaQorICBkb25lCisgIElGUz0iJGx0X3NhdmVfaWZzIgorCisgIGlmIHRlc3QgIlgkZWNobyIgPSBYZWNobzsgdGhlbgorICAgICMgV2UgZGlkbid0IGZpbmQgYSBiZXR0ZXIgZWNobywgc28gbG9vayBmb3IgYWx0ZXJuYXRpdmVzLgorICAgIGlmIHRlc3QgIlhgKHByaW50IC1yICdcdCcpIDI+L2Rldi9udWxsYCIgPSAnWFx0JyAmJgorICAgICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YChwcmludCAtciAiJGVjaG9fdGVzdF9zdHJpbmciKSAyPi9kZXYvbnVsbGAgJiYKKyAgICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KKyAgICAgICMgVGhpcyBzaGVsbCBoYXMgYSBidWlsdGluIHByaW50IC1yIHRoYXQgZG9lcyB0aGUgdHJpY2suCisgICAgICBlY2hvPSdwcmludCAtcicKKyAgICBlbGlmICh0ZXN0IC1mIC9iaW4va3NoIHx8IHRlc3QgLWYgL2Jpbi9rc2gkYWNfZXhlZXh0KSAmJgorCSB0ZXN0ICJYJENPTkZJR19TSEVMTCIgIT0gWC9iaW4va3NoOyB0aGVuCisgICAgICAjIElmIHdlIGhhdmUga3NoLCB0cnkgcnVubmluZyBjb25maWd1cmUgYWdhaW4gd2l0aCBpdC4KKyAgICAgIE9SSUdJTkFMX0NPTkZJR19TSEVMTD0ke0NPTkZJR19TSEVMTC0vYmluL3NofQorICAgICAgZXhwb3J0IE9SSUdJTkFMX0NPTkZJR19TSEVMTAorICAgICAgQ09ORklHX1NIRUxMPS9iaW4va3NoCisgICAgICBleHBvcnQgQ09ORklHX1NIRUxMCisgICAgICBleGVjICRDT05GSUdfU0hFTEwgIlskXTAiIC0tbm8tcmVleGVjICR7MSsiWyRdQCJ9CisgICAgZWxzZQorICAgICAgIyBUcnkgdXNpbmcgcHJpbnRmLgorICAgICAgZWNobz0ncHJpbnRmICVzXG4nCisgICAgICBpZiB0ZXN0ICJYYCgkZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKKwkgZWNob190ZXN0aW5nX3N0cmluZz1gKCRlY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgorCSB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KKwkjIENvb2wsIHByaW50ZiB3b3JrcworCToKKyAgICAgIGVsaWYgZWNob190ZXN0aW5nX3N0cmluZz1gKCRPUklHSU5BTF9DT05GSUdfU0hFTEwgIlskXTAiIC0tZmFsbGJhY2stZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAgJiYKKwkgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gJ1hcdCcgJiYKKwkgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJE9SSUdJTkFMX0NPTkZJR19TSEVMTCAiWyRdMCIgLS1mYWxsYmFjay1lY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgorCSAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgorCUNPTkZJR19TSEVMTD0kT1JJR0lOQUxfQ09ORklHX1NIRUxMCisJZXhwb3J0IENPTkZJR19TSEVMTAorCVNIRUxMPSIkQ09ORklHX1NIRUxMIgorCWV4cG9ydCBTSEVMTAorCWVjaG89IiRDT05GSUdfU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8iCisgICAgICBlbGlmIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkQ09ORklHX1NIRUxMICJbJF0wIiAtLWZhbGxiYWNrLWVjaG8gJ1x0JykgMj4vZGV2L251bGxgICYmCisJICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICdYXHQnICYmCisJICAgZWNob190ZXN0aW5nX3N0cmluZz1gKCRDT05GSUdfU0hFTEwgIlskXTAiIC0tZmFsbGJhY2stZWNobyAiJGVjaG9fdGVzdF9zdHJpbmciKSAyPi9kZXYvbnVsbGAgJiYKKwkgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KKwllY2hvPSIkQ09ORklHX1NIRUxMIFskXTAgLS1mYWxsYmFjay1lY2hvIgorICAgICAgZWxzZQorCSMgbWF5YmUgd2l0aCBhIHNtYWxsZXIgc3RyaW5nLi4uCisJcHJldj06CisKKwlmb3IgY21kIGluICdlY2hvIHRlc3QnICdzZWQgMnEgIlskXTAiJyAnc2VkIDEwcSAiWyRdMCInICdzZWQgMjBxICJbJF0wIicgJ3NlZCA1MHEgIlskXTAiJzsgZG8KKwkgIGlmICh0ZXN0ICJYJGVjaG9fdGVzdF9zdHJpbmciID0gIlhgZXZhbCAkY21kYCIpIDI+L2Rldi9udWxsCisJICB0aGVuCisJICAgIGJyZWFrCisJICBmaQorCSAgcHJldj0iJGNtZCIKKwlkb25lCisKKwlpZiB0ZXN0ICIkcHJldiIgIT0gJ3NlZCA1MHEgIlskXTAiJzsgdGhlbgorCSAgZWNob190ZXN0X3N0cmluZz1gZXZhbCAkcHJldmAKKwkgIGV4cG9ydCBlY2hvX3Rlc3Rfc3RyaW5nCisJICBleGVjICR7T1JJR0lOQUxfQ09ORklHX1NIRUxMLSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9fSAiWyRdMCIgJHsxKyJbJF1AIn0KKwllbHNlCisJICAjIE9vcHMuICBXZSBsb3N0IGNvbXBsZXRlbHksIHNvIGp1c3Qgc3RpY2sgd2l0aCBlY2hvLgorCSAgZWNobz1lY2hvCisJZmkKKyAgICAgIGZpCisgICAgZmkKKyAgZmkKK2ZpCitmaQorCisjIENvcHkgZWNobyBhbmQgcXVvdGUgdGhlIGNvcHkgc3VpdGFibHkgZm9yIHBhc3NpbmcgdG8gbGlidG9vbCBmcm9tCisjIHRoZSBNYWtlZmlsZSwgaW5zdGVhZCBvZiBxdW90aW5nIHRoZSBvcmlnaW5hbCwgd2hpY2ggaXMgdXNlZCBsYXRlci4KK0VDSE89JGVjaG8KK2lmIHRlc3QgIlgkRUNITyIgPSAiWCRDT05GSUdfU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8iOyB0aGVuCisgICBFQ0hPPSIkQ09ORklHX1NIRUxMIFxcXCRcWyRdMCAtLWZhbGxiYWNrLWVjaG8iCitmaQorCitBQ19TVUJTVChFQ0hPKQorXSldKSMgX0xUX0FDX1BST0dfRUNIT19CQUNLU0xBU0gKKworCisjIF9MVF9BQ19MT0NLCisjIC0tLS0tLS0tLS0tCitBQ19ERUZVTihbX0xUX0FDX0xPQ0tdLAorW0FDX0FSR19FTkFCTEUoW2xpYnRvb2wtbG9ja10sCisgICAgW0FDX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtbGlidG9vbC1sb2NrXSwKKwlbYXZvaWQgbG9ja2luZyAobWlnaHQgYnJlYWsgcGFyYWxsZWwgYnVpbGRzKV0pXSkKK3Rlc3QgIngkZW5hYmxlX2xpYnRvb2xfbG9jayIgIT0geG5vICYmIGVuYWJsZV9saWJ0b29sX2xvY2s9eWVzCisKKyMgU29tZSBmbGFncyBuZWVkIHRvIGJlIHByb3BhZ2F0ZWQgdG8gdGhlIGNvbXBpbGVyIG9yIGxpbmtlciBmb3IgZ29vZAorIyBsaWJ0b29sIHN1cHBvcnQuCitjYXNlICRob3N0IGluCitpYTY0LSotaHB1eCopCisgICMgRmluZCBvdXQgd2hpY2ggQUJJIHdlIGFyZSB1c2luZy4KKyAgZWNobyAnaW50IGk7JyA+IGNvbmZ0ZXN0LiRhY19leHQKKyAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KKyAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0LiRhY19vYmpleHRgIGluCisgICAgKkVMRi0zMiopCisgICAgICBIUFVYX0lBNjRfTU9ERT0iMzIiCisgICAgICA7OworICAgICpFTEYtNjQqKQorICAgICAgSFBVWF9JQTY0X01PREU9IjY0IgorICAgICAgOzsKKyAgICBlc2FjCisgIGZpCisgIHJtIC1yZiBjb25mdGVzdCoKKyAgOzsKKyotKi1pcml4NiopCisgICMgRmluZCBvdXQgd2hpY2ggQUJJIHdlIGFyZSB1c2luZy4KKyAgZWNobyAnWyNdbGluZSBfX29saW5lX18gImNvbmZpZ3VyZSInID4gY29uZnRlc3QuJGFjX2V4dAorICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgorICAgaWYgdGVzdCAiJGx0X2N2X3Byb2dfZ251X2xkIiA9IHllczsgdGhlbgorICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3QuJGFjX29iamV4dGAgaW4KKyAgICAqMzItYml0KikKKyAgICAgIExEPSIke0xELWxkfSAtbWVsZjMyYnNtaXAiCisgICAgICA7OworICAgICpOMzIqKQorICAgICAgTEQ9IiR7TEQtbGR9IC1tZWxmMzJibWlwbjMyIgorICAgICAgOzsKKyAgICAqNjQtYml0KikKKyAgICAgIExEPSIke0xELWxkfSAtbWVsZjY0Ym1pcCIKKyAgICAgIDs7CisgICAgZXNhYworICAgZWxzZQorICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3QuJGFjX29iamV4dGAgaW4KKyAgICAqMzItYml0KikKKyAgICAgIExEPSIke0xELWxkfSAtMzIiCisgICAgICA7OworICAgICpOMzIqKQorICAgICAgTEQ9IiR7TEQtbGR9IC1uMzIiCisgICAgICA7OworICAgICo2NC1iaXQqKQorICAgICAgTEQ9IiR7TEQtbGR9IC02NCIKKyAgICAgIDs7CisgICAgZXNhYworICAgZmkKKyAgZmkKKyAgcm0gLXJmIGNvbmZ0ZXN0KgorICA7OworCit4ODZfNjQtKmxpbnV4KnxwcGMqLSpsaW51eCp8cG93ZXJwYyotKmxpbnV4KnxzMzkwKi0qbGludXgqfHNwYXJjKi0qbGludXgqKQorICAjIEZpbmQgb3V0IHdoaWNoIEFCSSB3ZSBhcmUgdXNpbmcuCisgIGVjaG8gJ2ludCBpOycgPiBjb25mdGVzdC4kYWNfZXh0CisgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCisgICAgY2FzZSAiYC91c3IvYmluL2ZpbGUgY29uZnRlc3Qub2AiIGluCisgICAgKjMyLWJpdCopCisgICAgICBjYXNlICRob3N0IGluCisgICAgICAgIHg4Nl82NC0qbGludXgqKQorICAgICAgICAgIExEPSIke0xELWxkfSAtbSBlbGZfaTM4NiIKKyAgICAgICAgICA7OworICAgICAgICBwcGM2NC0qbGludXgqfHBvd2VycGM2NC0qbGludXgqKQorICAgICAgICAgIExEPSIke0xELWxkfSAtbSBlbGYzMnBwY2xpbnV4IgorICAgICAgICAgIDs7CisgICAgICAgIHMzOTB4LSpsaW51eCopCisgICAgICAgICAgTEQ9IiR7TEQtbGR9IC1tIGVsZl9zMzkwIgorICAgICAgICAgIDs7CisgICAgICAgIHNwYXJjNjQtKmxpbnV4KikKKyAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmMzJfc3BhcmMiCisgICAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisgICAgKjY0LWJpdCopCisgICAgICBjYXNlICRob3N0IGluCisgICAgICAgIHg4Nl82NC0qbGludXgqKQorICAgICAgICAgIExEPSIke0xELWxkfSAtbSBlbGZfeDg2XzY0IgorICAgICAgICAgIDs7CisgICAgICAgIHBwYyotKmxpbnV4Knxwb3dlcnBjKi0qbGludXgqKQorICAgICAgICAgIExEPSIke0xELWxkfSAtbSBlbGY2NHBwYyIKKyAgICAgICAgICA7OworICAgICAgICBzMzkwKi0qbGludXgqKQorICAgICAgICAgIExEPSIke0xELWxkfSAtbSBlbGY2NF9zMzkwIgorICAgICAgICAgIDs7CisgICAgICAgIHNwYXJjKi0qbGludXgqKQorICAgICAgICAgIExEPSIke0xELWxkfSAtbSBlbGY2NF9zcGFyYyIKKyAgICAgICAgICA7OworICAgICAgZXNhYworICAgICAgOzsKKyAgICBlc2FjCisgIGZpCisgIHJtIC1yZiBjb25mdGVzdCoKKyAgOzsKKworKi0qLXNjbzMuMnY1KikKKyAgIyBPbiBTQ08gT3BlblNlcnZlciA1LCB3ZSBuZWVkIC1iZWxmIHRvIGdldCBmdWxsLWZlYXR1cmVkIGJpbmFyaWVzLgorICBTQVZFX0NGTEFHUz0iJENGTEFHUyIKKyAgQ0ZMQUdTPSIkQ0ZMQUdTIC1iZWxmIgorICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgQyBjb21waWxlciBuZWVkcyAtYmVsZl0sIGx0X2N2X2NjX25lZWRzX2JlbGYsCisgICAgW0FDX0xBTkdfUFVTSChDKQorICAgICBBQ19UUllfTElOSyhbXSxbXSxbbHRfY3ZfY2NfbmVlZHNfYmVsZj15ZXNdLFtsdF9jdl9jY19uZWVkc19iZWxmPW5vXSkKKyAgICAgQUNfTEFOR19QT1BdKQorICBpZiB0ZXN0IHgiJGx0X2N2X2NjX25lZWRzX2JlbGYiICE9IHgieWVzIjsgdGhlbgorICAgICMgdGhpcyBpcyBwcm9iYWJseSBnY2MgMi44LjAsIGVnY3MgMS4wIG9yIG5ld2VyOyBubyBuZWVkIGZvciAtYmVsZgorICAgIENGTEFHUz0iJFNBVkVfQ0ZMQUdTIgorICBmaQorICA7OworQUNfUFJPVklERV9JRkVMU0UoW0FDX0xJQlRPT0xfV0lOMzJfRExMXSwKK1sqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiopCisgIEFDX0NIRUNLX1RPT0woRExMVE9PTCwgZGxsdG9vbCwgZmFsc2UpCisgIEFDX0NIRUNLX1RPT0woQVMsIGFzLCBmYWxzZSkKKyAgQUNfQ0hFQ0tfVE9PTChPQkpEVU1QLCBvYmpkdW1wLCBmYWxzZSkKKyAgOzsKKyAgXSkKK2VzYWMKKworbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCisKK10pIyBfTFRfQUNfTE9DSworCisKKyMgQUNfTElCVE9PTF9DT01QSUxFUl9PUFRJT04oTUVTU0FHRSwgVkFSSUFCTEUtTkFNRSwgRkxBR1MsCisjCQlbT1VUUFVULUZJTEVdLCBbQUNUSU9OLVNVQ0NFU1NdLCBbQUNUSU9OLUZBSUxVUkVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENoZWNrIHdoZXRoZXIgdGhlIGdpdmVuIGNvbXBpbGVyIG9wdGlvbiB3b3JrcworQUNfREVGVU4oW0FDX0xJQlRPT0xfQ09NUElMRVJfT1BUSU9OXSwKK1tBQ19SRVFVSVJFKFtMVF9BQ19QUk9HX1NFRF0pCitBQ19DQUNIRV9DSEVDSyhbJDFdLCBbJDJdLAorICBbJDI9bm8KKyAgaWZlbHNlKFskNF0sICwgW2FjX291dGZpbGU9Y29uZnRlc3QuJGFjX29iamV4dF0sIFthY19vdXRmaWxlPSQ0XSkKKyAgIHByaW50ZiAiJGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZSIgPiBjb25mdGVzdC4kYWNfZXh0CisgICBsdF9jb21waWxlcl9mbGFnPSIkMyIKKyAgICMgSW5zZXJ0IHRoZSBvcHRpb24gZWl0aGVyICgxKSBhZnRlciB0aGUgbGFzdCAqRkxBR1MgdmFyaWFibGUsIG9yCisgICAjICgyKSBiZWZvcmUgYSB3b3JkIGNvbnRhaW5pbmcgImNvbmZ0ZXN0LiIsIG9yICgzKSBhdCB0aGUgZW5kLgorICAgIyBOb3RlIHRoYXQgJGFjX2NvbXBpbGUgaXRzZWxmIGRvZXMgbm90IGNvbnRhaW4gYmFja3NsYXNoZXMgYW5kIGJlZ2lucworICAgIyB3aXRoIGEgZG9sbGFyIHNpZ24gKG5vdCBhIGh5cGhlbiksIHNvIHRoZSBlY2hvIHNob3VsZCB3b3JrIGNvcnJlY3RseS4KKyAgICMgVGhlIG9wdGlvbiBpcyByZWZlcmVuY2VkIHZpYSBhIHZhcmlhYmxlIHRvIGF2b2lkIGNvbmZ1c2luZyBzZWQuCisgICBsdF9jb21waWxlPWBlY2hvICIkYWNfY29tcGlsZSIgfCAkU0VEIFwKKyAgIC1lICdzOi4qRkxBR1N9PyA6JiRsdF9jb21waWxlcl9mbGFnIDo7IHQnIFwKKyAgIC1lICdzOiBbW14gXV0qY29uZnRlc3RcLjogJGx0X2NvbXBpbGVyX2ZsYWcmOjsgdCcgXAorICAgLWUgJ3M6JDogJGx0X2NvbXBpbGVyX2ZsYWc6J2AKKyAgIChldmFsIGVjaG8gIlwiXCRhc19tZTpfX29saW5lX186ICRsdF9jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCisgICAoZXZhbCAiJGx0X2NvbXBpbGUiIDI+Y29uZnRlc3QuZXJyKQorICAgYWNfc3RhdHVzPSQ/CisgICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgIGVjaG8gIiRhc19tZTpfX29saW5lX186IFwkPyA9ICRhY19zdGF0dXMiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgIGlmIChleGl0ICRhY19zdGF0dXMpICYmIHRlc3QgLXMgIiRhY19vdXRmaWxlIjsgdGhlbgorICAgICAjIFRoZSBjb21waWxlciBjYW4gb25seSB3YXJuIGFuZCBpZ25vcmUgdGhlIG9wdGlvbiBpZiBub3QgcmVjb2duaXplZAorICAgICAjIFNvIHNheSBubyBpZiB0aGVyZSBhcmUgd2FybmluZ3MKKyAgICAgaWYgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgorICAgICAgICQyPXllcworICAgICBmaQorICAgZmkKKyAgICRybSBjb25mdGVzdCoKK10pCisKK2lmIHRlc3QgeCJbJF0kMiIgPSB4eWVzOyB0aGVuCisgICAgaWZlbHNlKFskNV0sICwgOiwgWyQ1XSkKK2Vsc2UKKyAgICBpZmVsc2UoWyQ2XSwgLCA6LCBbJDZdKQorZmkKK10pIyBBQ19MSUJUT09MX0NPTVBJTEVSX09QVElPTgorCisKKyMgQUNfTElCVE9PTF9MSU5LRVJfT1BUSU9OKE1FU1NBR0UsIFZBUklBQkxFLU5BTUUsIEZMQUdTLAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgW0FDVElPTi1TVUNDRVNTXSwgW0FDVElPTi1GQUlMVVJFXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENoZWNrIHdoZXRoZXIgdGhlIGdpdmVuIGNvbXBpbGVyIG9wdGlvbiB3b3JrcworQUNfREVGVU4oW0FDX0xJQlRPT0xfTElOS0VSX09QVElPTl0sCitbQUNfQ0FDSEVfQ0hFQ0soWyQxXSwgWyQyXSwKKyAgWyQyPW5vCisgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorICAgTERGTEFHUz0iJExERkxBR1MgJDMiCisgICBwcmludGYgIiRsdF9zaW1wbGVfbGlua190ZXN0X2NvZGUiID4gY29uZnRlc3QuJGFjX2V4dAorICAgaWYgKGV2YWwgJGFjX2xpbmsgMj5jb25mdGVzdC5lcnIpICYmIHRlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0OyB0aGVuCisgICAgICMgVGhlIGNvbXBpbGVyIGNhbiBvbmx5IHdhcm4gYW5kIGlnbm9yZSB0aGUgb3B0aW9uIGlmIG5vdCByZWNvZ25pemVkCisgICAgICMgU28gc2F5IG5vIGlmIHRoZXJlIGFyZSB3YXJuaW5ncworICAgICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgorICAgICAgICMgQXBwZW5kIGFueSBlcnJvcnMgdG8gdGhlIGNvbmZpZy5sb2cuCisgICAgICAgY2F0IGNvbmZ0ZXN0LmVyciAxPiZBU19NRVNTQUdFX0xPR19GRAorICAgICBlbHNlCisgICAgICAgJDI9eWVzCisgICAgIGZpCisgICBmaQorICAgJHJtIGNvbmZ0ZXN0KgorICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKK10pCisKK2lmIHRlc3QgeCJbJF0kMiIgPSB4eWVzOyB0aGVuCisgICAgaWZlbHNlKFskNF0sICwgOiwgWyQ0XSkKK2Vsc2UKKyAgICBpZmVsc2UoWyQ1XSwgLCA6LCBbJDVdKQorZmkKK10pIyBBQ19MSUJUT09MX0xJTktFUl9PUFRJT04KKworCisjIEFDX0xJQlRPT0xfU1lTX01BWF9DTURfTEVOCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbQUNfTElCVE9PTF9TWVNfTUFYX0NNRF9MRU5dLAorWyMgZmluZCB0aGUgbWF4aW11bSBsZW5ndGggb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50cworQUNfTVNHX0NIRUNLSU5HKFt0aGUgbWF4aW11bSBsZW5ndGggb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50c10pCitBQ19DQUNIRV9WQUwoW2x0X2N2X3N5c19tYXhfY21kX2xlbl0sIFtkbmwKKyAgaT0wCisgIHRlc3RzdHJpbmc9IkFCQ0QiCisKKyAgY2FzZSAkYnVpbGRfb3MgaW4KKyAgbXNkb3NkamdwcCopCisgICAgIyBPbiBESkdQUCwgdGhpcyB0ZXN0IGNhbiBibG93IHVwIHByZXR0eSBiYWRseSBkdWUgdG8gcHJvYmxlbXMgaW4gbGliYworICAgICMgKGFueSBzaW5nbGUgYXJndW1lbnQgZXhjZWVkaW5nIDIwMDAgYnl0ZXMgY2F1c2VzIGEgYnVmZmVyIG92ZXJydW4KKyAgICAjIGR1cmluZyBnbG9iIGV4cGFuc2lvbikuICBFdmVuIGlmIGl0IHdlcmUgZml4ZWQsIHRoZSByZXN1bHQgb2YgdGhpcworICAgICMgY2hlY2sgd291bGQgYmUgbGFyZ2VyIHRoYW4gaXQgc2hvdWxkIGJlLgorICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj0xMjI4ODsgICAgIyAxMksgaXMgYWJvdXQgcmlnaHQKKyAgICA7OworCisgIGdudSopCisgICAgIyBVbmRlciBHTlUgSHVyZCwgdGhpcyB0ZXN0IGlzIG5vdCByZXF1aXJlZCBiZWNhdXNlIHRoZXJlIGlzCisgICAgIyBubyBsaW1pdCB0byB0aGUgbGVuZ3RoIG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCisgICAgIyBMaWJ0b29sIHdpbGwgaW50ZXJwcmV0IC0xIGFzIG5vIGxpbWl0IHdoYXRzb2V2ZXIKKyAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49LTE7CisgICAgOzsKKworICBjeWd3aW4qIHwgbWluZ3cqKQorICAgICMgT24gV2luOXgvTUUsIHRoaXMgdGVzdCBibG93cyB1cCAtLSBpdCBzdWNjZWVkcywgYnV0IHRha2VzCisgICAgIyBhYm91dCA1IG1pbnV0ZXMgYXMgdGhlIHRlc3RzdHJpbmcgZ3Jvd3MgZXhwb25lbnRpYWxseS4KKyAgICAjIFdvcnNlLCBzaW5jZSA5eC9NRSBhcmUgbm90IHByZS1lbXB0aXZlbHkgbXVsdGl0YXNraW5nLAorICAgICMgeW91IGVuZCB1cCB3aXRoIGEgImZyb3plbiIgY29tcHV0ZXIsIGV2ZW4gdGhvdWdoIHdpdGggcGF0aWVuY2UKKyAgICAjIHRoZSB0ZXN0IGV2ZW50dWFsbHkgc3VjY2VlZHMgKHdpdGggYSBtYXggbGluZSBsZW5ndGggb2YgMjU2aykuCisgICAgIyBJbnN0ZWFkLCBsZXQncyBqdXN0IHB1bnQ6IHVzZSB0aGUgbWluaW11bSBsaW5lbGVuZ3RoIHJlcG9ydGVkIGJ5CisgICAgIyBhbGwgb2YgdGhlIHN1cHBvcnRlZCBwbGF0Zm9ybXM6IDgxOTIgKG9uIE5ULzJLL1hQKS4KKyAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49ODE5MjsKKyAgICA7OworCisgIGFtaWdhb3MqKQorICAgICMgT24gQW1pZ2FPUyB3aXRoIHBka3NoLCB0aGlzIHRlc3QgdGFrZXMgaG91cnMsIGxpdGVyYWxseS4KKyAgICAjIFNvIHdlIGp1c3QgcHVudCBhbmQgdXNlIGEgbWluaW11bSBsaW5lIGxlbmd0aCBvZiA4MTkyLgorICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj04MTkyOworICAgIDs7CisKKyAqKQorICAgICMgSWYgdGVzdCBpcyBub3QgYSBzaGVsbCBidWlsdC1pbiwgd2UnbGwgcHJvYmFibHkgZW5kIHVwIGNvbXB1dGluZyBhCisgICAgIyBtYXhpbXVtIGxlbmd0aCB0aGF0IGlzIG9ubHkgaGFsZiBvZiB0aGUgYWN0dWFsIG1heGltdW0gbGVuZ3RoLCBidXQKKyAgICAjIHdlIGNhbid0IHRlbGwuCisgICAgd2hpbGUgKHRlc3QgIlgiYCRDT05GSUdfU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8gIlgkdGVzdHN0cmluZyIgMj4vZGV2L251bGxgIFwKKwkgICAgICAgPSAiWFgkdGVzdHN0cmluZyIpID4vZGV2L251bGwgMj4mMSAmJgorCSAgICBuZXdfcmVzdWx0PWBleHByICJYJHRlc3RzdHJpbmciIDogIi4qIiAyPiYxYCAmJgorCSAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49JG5ld19yZXN1bHQgJiYKKwkgICAgdGVzdCAkaSAhPSAxNyAjIDEvMiBNQiBzaG91bGQgYmUgZW5vdWdoCisgICAgZG8KKyAgICAgIGk9YGV4cHIgJGkgKyAxYAorICAgICAgdGVzdHN0cmluZz0kdGVzdHN0cmluZyR0ZXN0c3RyaW5nCisgICAgZG9uZQorICAgIHRlc3RzdHJpbmc9CisgICAgIyBBZGQgYSBzaWduaWZpY2FudCBzYWZldHkgZmFjdG9yIGJlY2F1c2UgQysrIGNvbXBpbGVycyBjYW4gdGFjayBvbiBtYXNzaXZlCisgICAgIyBhbW91bnRzIG9mIGFkZGl0aW9uYWwgYXJndW1lbnRzIGJlZm9yZSBwYXNzaW5nIHRoZW0gdG8gdGhlIGxpbmtlci4KKyAgICAjIEl0IGFwcGVhcnMgYXMgdGhvdWdoIDEvMiBpcyBhIHVzYWJsZSB2YWx1ZS4KKyAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49YGV4cHIgJGx0X2N2X3N5c19tYXhfY21kX2xlbiBcLyAyYAorICAgIDs7CisgIGVzYWMKK10pCitpZiB0ZXN0IC1uICRsdF9jdl9zeXNfbWF4X2NtZF9sZW4gOyB0aGVuCisgIEFDX01TR19SRVNVTFQoJGx0X2N2X3N5c19tYXhfY21kX2xlbikKK2Vsc2UKKyAgQUNfTVNHX1JFU1VMVChub25lKQorZmkKK10pIyBBQ19MSUJUT09MX1NZU19NQVhfQ01EX0xFTgorCisKKyMgX0xUX0FDX0NIRUNLX0RMRkNOCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbX0xUX0FDX0NIRUNLX0RMRkNOXSwKK1tBQ19DSEVDS19IRUFERVJTKGRsZmNuLmgpZG5sCitdKSMgX0xUX0FDX0NIRUNLX0RMRkNOCisKKworIyBfTFRfQUNfVFJZX0RMT1BFTl9TRUxGIChBQ1RJT04tSUYtVFJVRSwgQUNUSU9OLUlGLVRSVUUtVy1VU0NPUkUsCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgQUNUSU9OLUlGLUZBTFNFLCBBQ1RJT04tSUYtQ1JPU1MtQ09NUElMSU5HKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtfTFRfQUNfVFJZX0RMT1BFTl9TRUxGXSwKK1tBQ19SRVFVSVJFKFtfTFRfQUNfQ0hFQ0tfRExGQ05dKWRubAoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBbJDRdCitlbHNlCisgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgorWyNsaW5lIF9fb2xpbmVfXyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpZiBIQVZFX0RMRkNOX0gKKyNpbmNsdWRlIDxkbGZjbi5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaWZkZWYgUlRMRF9HTE9CQUwKKyMgIGRlZmluZSBMVF9ETEdMT0JBTAkJUlRMRF9HTE9CQUwKKyNlbHNlCisjICBpZmRlZiBETF9HTE9CQUwKKyMgICAgZGVmaW5lIExUX0RMR0xPQkFMCQlETF9HTE9CQUwKKyMgIGVsc2UKKyMgICAgZGVmaW5lIExUX0RMR0xPQkFMCQkwCisjICBlbmRpZgorI2VuZGlmCisKKy8qIFdlIG1heSBoYXZlIHRvIGRlZmluZSBMVF9ETExBWllfT1JfTk9XIGluIHRoZSBjb21tYW5kIGxpbmUgaWYgd2UKKyAgIGZpbmQgb3V0IGl0IGRvZXMgbm90IHdvcmsgaW4gc29tZSBwbGF0Zm9ybS4gKi8KKyNpZm5kZWYgTFRfRExMQVpZX09SX05PVworIyAgaWZkZWYgUlRMRF9MQVpZCisjICAgIGRlZmluZSBMVF9ETExBWllfT1JfTk9XCQlSVExEX0xBWlkKKyMgIGVsc2UKKyMgICAgaWZkZWYgRExfTEFaWQorIyAgICAgIGRlZmluZSBMVF9ETExBWllfT1JfTk9XCQlETF9MQVpZCisjICAgIGVsc2UKKyMgICAgICBpZmRlZiBSVExEX05PVworIyAgICAgICAgZGVmaW5lIExUX0RMTEFaWV9PUl9OT1cJUlRMRF9OT1cKKyMgICAgICBlbHNlCisjICAgICAgICBpZmRlZiBETF9OT1cKKyMgICAgICAgICAgZGVmaW5lIExUX0RMTEFaWV9PUl9OT1cJRExfTk9XCisjICAgICAgICBlbHNlCisjICAgICAgICAgIGRlZmluZSBMVF9ETExBWllfT1JfTk9XCTAKKyMgICAgICAgIGVuZGlmCisjICAgICAgZW5kaWYKKyMgICAgZW5kaWYKKyMgIGVuZGlmCisjZW5kaWYKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHZvaWQgZXhpdCAoaW50KTsKKyNlbmRpZgorCit2b2lkIGZub3JkKCkgeyBpbnQgaT00Mjt9CitpbnQgbWFpbiAoKQoreworICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKKyAgaW50IHN0YXR1cyA9ICRsdF9kbHVua25vd247CisKKyAgaWYgKHNlbGYpCisgICAgeworICAgICAgaWYgKGRsc3ltIChzZWxmLCJmbm9yZCIpKSAgICAgICBzdGF0dXMgPSAkbHRfZGxub191c2NvcmU7CisgICAgICBlbHNlIGlmIChkbHN5bSggc2VsZiwiX2Zub3JkIikpIHN0YXR1cyA9ICRsdF9kbG5lZWRfdXNjb3JlOworICAgICAgLyogZGxjbG9zZSAoc2VsZik7ICovCisgICAgfQorCisgICAgZXhpdCAoc3RhdHVzKTsKK31dCitFT0YKKyAgaWYgQUNfVFJZX0VWQUwoYWNfbGluaykgJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAyPi9kZXYvbnVsbDsgdGhlbgorICAgICguL2NvbmZ0ZXN0OyBleGl0OyApIDI+L2Rldi9udWxsCisgICAgbHRfc3RhdHVzPSQ/CisgICAgY2FzZSB4JGx0X3N0YXR1cyBpbgorICAgICAgeCRsdF9kbG5vX3VzY29yZSkgJDEgOzsKKyAgICAgIHgkbHRfZGxuZWVkX3VzY29yZSkgJDIgOzsKKyAgICAgIHgkbHRfdW5rbm93bnx4KikgJDMgOzsKKyAgICBlc2FjCisgIGVsc2UgOgorICAgICMgY29tcGlsYXRpb24gZmFpbGVkCisgICAgJDMKKyAgZmkKK2ZpCitybSAtZnIgY29uZnRlc3QqCitdKSMgX0xUX0FDX1RSWV9ETE9QRU5fU0VMRgorCisKKyMgQUNfTElCVE9PTF9ETE9QRU5fU0VMRgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbQUNfTElCVE9PTF9ETE9QRU5fU0VMRl0sCitbQUNfUkVRVUlSRShbX0xUX0FDX0NIRUNLX0RMRkNOXSlkbmwKK2lmIHRlc3QgIngkZW5hYmxlX2Rsb3BlbiIgIT0geHllczsgdGhlbgorICBlbmFibGVfZGxvcGVuPXVua25vd24KKyAgZW5hYmxlX2Rsb3Blbl9zZWxmPXVua25vd24KKyAgZW5hYmxlX2Rsb3Blbl9zZWxmX3N0YXRpYz11bmtub3duCitlbHNlCisgIGx0X2N2X2Rsb3Blbj1ubworICBsdF9jdl9kbG9wZW5fbGlicz0KKworICBjYXNlICRob3N0X29zIGluCisgIGJlb3MqKQorICAgIGx0X2N2X2Rsb3Blbj0ibG9hZF9hZGRfb24iCisgICAgbHRfY3ZfZGxvcGVuX2xpYnM9CisgICAgbHRfY3ZfZGxvcGVuX3NlbGY9eWVzCisgICAgOzsKKworICBtaW5ndyogfCBwdzMyKikKKyAgICBsdF9jdl9kbG9wZW49IkxvYWRMaWJyYXJ5IgorICAgIGx0X2N2X2Rsb3Blbl9saWJzPQorICAgOzsKKworICBjeWd3aW4qKQorICAgIGx0X2N2X2Rsb3Blbj0iZGxvcGVuIgorICAgIGx0X2N2X2Rsb3Blbl9saWJzPQorICAgOzsKKworICBkYXJ3aW4qKQorICAjIGlmIGxpYmRsIGlzIGluc3RhbGxlZCB3ZSBuZWVkIHRvIGxpbmsgYWdhaW5zdCBpdAorICAgIEFDX0NIRUNLX0xJQihbZGxdLCBbZGxvcGVuXSwKKwkJW2x0X2N2X2Rsb3Blbj0iZGxvcGVuIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbCJdLFsKKyAgICBsdF9jdl9kbG9wZW49ImR5bGQiCisgICAgbHRfY3ZfZGxvcGVuX2xpYnM9CisgICAgbHRfY3ZfZGxvcGVuX3NlbGY9eWVzCisgICAgXSkKKyAgIDs7CisKKyAgKikKKyAgICBBQ19DSEVDS19GVU5DKFtzaGxfbG9hZF0sCisJICBbbHRfY3ZfZGxvcGVuPSJzaGxfbG9hZCJdLAorICAgICAgW0FDX0NIRUNLX0xJQihbZGxkXSwgW3NobF9sb2FkXSwKKwkgICAgW2x0X2N2X2Rsb3Blbj0ic2hsX2xvYWQiIGx0X2N2X2Rsb3Blbl9saWJzPSItZGxkIl0sCisJW0FDX0NIRUNLX0ZVTkMoW2Rsb3Blbl0sCisJICAgICAgW2x0X2N2X2Rsb3Blbj0iZGxvcGVuIl0sCisJICBbQUNfQ0hFQ0tfTElCKFtkbF0sIFtkbG9wZW5dLAorCQlbbHRfY3ZfZGxvcGVuPSJkbG9wZW4iIGx0X2N2X2Rsb3Blbl9saWJzPSItbGRsIl0sCisJICAgIFtBQ19DSEVDS19MSUIoW3N2bGRdLCBbZGxvcGVuXSwKKwkJICBbbHRfY3ZfZGxvcGVuPSJkbG9wZW4iIGx0X2N2X2Rsb3Blbl9saWJzPSItbHN2bGQiXSwKKwkgICAgICBbQUNfQ0hFQ0tfTElCKFtkbGRdLCBbZGxkX2xpbmtdLAorCQkgICAgW2x0X2N2X2Rsb3Blbj0iZGxkX2xpbmsiIGx0X2N2X2Rsb3Blbl9saWJzPSItZGxkIl0pCisJICAgICAgXSkKKwkgICAgXSkKKwkgIF0pCisJXSkKKyAgICAgIF0pCisgICAgOzsKKyAgZXNhYworCisgIGlmIHRlc3QgIngkbHRfY3ZfZGxvcGVuIiAhPSB4bm87IHRoZW4KKyAgICBlbmFibGVfZGxvcGVuPXllcworICBlbHNlCisgICAgZW5hYmxlX2Rsb3Blbj1ubworICBmaQorCisgIGNhc2UgJGx0X2N2X2Rsb3BlbiBpbgorICBkbG9wZW4pCisgICAgc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorICAgIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2RsZmNuX2giID0geHllcyAmJiBDUFBGTEFHUz0iJENQUEZMQUdTIC1ESEFWRV9ETEZDTl9IIgorCisgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKyAgICBldmFsIExERkxBR1M9XCJcJExERkxBR1MgJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY1wiCisKKyAgICBzYXZlX0xJQlM9IiRMSUJTIgorICAgIExJQlM9IiRsdF9jdl9kbG9wZW5fbGlicyAkTElCUyIKKworICAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIGEgcHJvZ3JhbSBjYW4gZGxvcGVuIGl0c2VsZl0sCisJICBsdF9jdl9kbG9wZW5fc2VsZiwgW2RubAorCSAgX0xUX0FDX1RSWV9ETE9QRU5fU0VMRigKKwkgICAgbHRfY3ZfZGxvcGVuX3NlbGY9eWVzLCBsdF9jdl9kbG9wZW5fc2VsZj15ZXMsCisJICAgIGx0X2N2X2Rsb3Blbl9zZWxmPW5vLCBsdF9jdl9kbG9wZW5fc2VsZj1jcm9zcykKKyAgICBdKQorCisgICAgaWYgdGVzdCAieCRsdF9jdl9kbG9wZW5fc2VsZiIgPSB4eWVzOyB0aGVuCisgICAgICBMREZMQUdTPSIkTERGTEFHUyAkbGlua19zdGF0aWNfZmxhZyIKKyAgICAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIGEgc3RhdGljYWxseSBsaW5rZWQgcHJvZ3JhbSBjYW4gZGxvcGVuIGl0c2VsZl0sCisgICAgCSAgbHRfY3ZfZGxvcGVuX3NlbGZfc3RhdGljLCBbZG5sCisJICBfTFRfQUNfVFJZX0RMT1BFTl9TRUxGKAorCSAgICBsdF9jdl9kbG9wZW5fc2VsZl9zdGF0aWM9eWVzLCBsdF9jdl9kbG9wZW5fc2VsZl9zdGF0aWM9eWVzLAorCSAgICBsdF9jdl9kbG9wZW5fc2VsZl9zdGF0aWM9bm8sICBsdF9jdl9kbG9wZW5fc2VsZl9zdGF0aWM9Y3Jvc3MpCisgICAgICBdKQorICAgIGZpCisKKyAgICBDUFBGTEFHUz0iJHNhdmVfQ1BQRkxBR1MiCisgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKyAgICBMSUJTPSIkc2F2ZV9MSUJTIgorICAgIDs7CisgIGVzYWMKKworICBjYXNlICRsdF9jdl9kbG9wZW5fc2VsZiBpbgorICB5ZXN8bm8pIGVuYWJsZV9kbG9wZW5fc2VsZj0kbHRfY3ZfZGxvcGVuX3NlbGYgOzsKKyAgKikgZW5hYmxlX2Rsb3Blbl9zZWxmPXVua25vd24gOzsKKyAgZXNhYworCisgIGNhc2UgJGx0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYyBpbgorICB5ZXN8bm8pIGVuYWJsZV9kbG9wZW5fc2VsZl9zdGF0aWM9JGx0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYyA7OworICAqKSBlbmFibGVfZGxvcGVuX3NlbGZfc3RhdGljPXVua25vd24gOzsKKyAgZXNhYworZmkKK10pIyBBQ19MSUJUT09MX0RMT1BFTl9TRUxGCisKKworIyBBQ19MSUJUT09MX1BST0dfQ0NfQ19PKFtUQUdOQU1FXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENoZWNrIHRvIHNlZSBpZiBvcHRpb25zIC1jIGFuZCAtbyBhcmUgc2ltdWx0YW5lb3VzbHkgc3VwcG9ydGVkIGJ5IGNvbXBpbGVyCitBQ19ERUZVTihbQUNfTElCVE9PTF9QUk9HX0NDX0NfT10sCitbQUNfUkVRVUlSRShbX0xUX0FDX1NZU19DT01QSUxFUl0pZG5sCitBQ19DQUNIRV9DSEVDSyhbaWYgJGNvbXBpbGVyIHN1cHBvcnRzIC1jIC1vIGZpbGUuJGFjX29iamV4dF0sCisgIFtfTFRfQUNfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfY19vLCAkMSldLAorICBbX0xUX0FDX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbywgJDEpPW5vCisgICAkcm0gLXIgY29uZnRlc3QgMj4vZGV2L251bGwKKyAgIG1rZGlyIGNvbmZ0ZXN0CisgICBjZCBjb25mdGVzdAorICAgbWtkaXIgb3V0CisgICBwcmludGYgIiRsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUiID4gY29uZnRlc3QuJGFjX2V4dAorCisgICBsdF9jb21waWxlcl9mbGFnPSItbyBvdXQvY29uZnRlc3QyLiRhY19vYmpleHQiCisgICAjIEluc2VydCB0aGUgb3B0aW9uIGVpdGhlciAoMSkgYWZ0ZXIgdGhlIGxhc3QgKkZMQUdTIHZhcmlhYmxlLCBvcgorICAgIyAoMikgYmVmb3JlIGEgd29yZCBjb250YWluaW5nICJjb25mdGVzdC4iLCBvciAoMykgYXQgdGhlIGVuZC4KKyAgICMgTm90ZSB0aGF0ICRhY19jb21waWxlIGl0c2VsZiBkb2VzIG5vdCBjb250YWluIGJhY2tzbGFzaGVzIGFuZCBiZWdpbnMKKyAgICMgd2l0aCBhIGRvbGxhciBzaWduIChub3QgYSBoeXBoZW4pLCBzbyB0aGUgZWNobyBzaG91bGQgd29yayBjb3JyZWN0bHkuCisgICBsdF9jb21waWxlPWBlY2hvICIkYWNfY29tcGlsZSIgfCAkU0VEIFwKKyAgIC1lICdzOi4qRkxBR1N9PyA6JiRsdF9jb21waWxlcl9mbGFnIDo7IHQnIFwKKyAgIC1lICdzOiBbW14gXV0qY29uZnRlc3RcLjogJGx0X2NvbXBpbGVyX2ZsYWcmOjsgdCcgXAorICAgLWUgJ3M6JDogJGx0X2NvbXBpbGVyX2ZsYWc6J2AKKyAgIChldmFsIGVjaG8gIlwiXCRhc19tZTpfX29saW5lX186ICRsdF9jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCisgICAoZXZhbCAiJGx0X2NvbXBpbGUiIDI+b3V0L2NvbmZ0ZXN0LmVycikKKyAgIGFjX3N0YXR1cz0kPworICAgY2F0IG91dC9jb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgZWNobyAiJGFzX21lOl9fb2xpbmVfXzogXCQ/ID0gJGFjX3N0YXR1cyIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgaWYgKGV4aXQgJGFjX3N0YXR1cykgJiYgdGVzdCAtcyBvdXQvY29uZnRlc3QyLiRhY19vYmpleHQKKyAgIHRoZW4KKyAgICAgIyBUaGUgY29tcGlsZXIgY2FuIG9ubHkgd2FybiBhbmQgaWdub3JlIHRoZSBvcHRpb24gaWYgbm90IHJlY29nbml6ZWQKKyAgICAgIyBTbyBzYXkgbm8gaWYgdGhlcmUgYXJlIHdhcm5pbmdzCisgICAgIGlmIHRlc3QgISAtcyBvdXQvY29uZnRlc3QuZXJyOyB0aGVuCisgICAgICAgX0xUX0FDX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbywgJDEpPXllcworICAgICBmaQorICAgZmkKKyAgIGNobW9kIHUrdyAuCisgICAkcm0gY29uZnRlc3QqCisgICAjIFNHSSBDKysgY29tcGlsZXIgd2lsbCBjcmVhdGUgZGlyZWN0b3J5IG91dC9paV9maWxlcy8gZm9yCisgICAjIHRlbXBsYXRlIGluc3RhbnRpYXRpb24KKyAgIHRlc3QgLWQgb3V0L2lpX2ZpbGVzICYmICRybSBvdXQvaWlfZmlsZXMvKiAmJiBybWRpciBvdXQvaWlfZmlsZXMKKyAgICRybSBvdXQvKiAmJiBybWRpciBvdXQKKyAgIGNkIC4uCisgICBybWRpciBjb25mdGVzdAorICAgJHJtIGNvbmZ0ZXN0KgorXSkKK10pIyBBQ19MSUJUT09MX1BST0dfQ0NfQ19PCisKKworIyBBQ19MSUJUT09MX1NZU19IQVJEX0xJTktfTE9DS1MoW1RBR05BTUVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDaGVjayB0byBzZWUgaWYgd2UgY2FuIGRvIGhhcmQgbGlua3MgdG8gbG9jayBzb21lIGZpbGVzIGlmIG5lZWRlZAorQUNfREVGVU4oW0FDX0xJQlRPT0xfU1lTX0hBUkRfTElOS19MT0NLU10sCitbQUNfUkVRVUlSRShbX0xUX0FDX0xPQ0tdKWRubAorCitoYXJkX2xpbmtzPSJub3R0ZXN0ZWQiCitpZiB0ZXN0ICIkX0xUX0FDX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbywgJDEpIiA9IG5vICYmIHRlc3QgIiRuZWVkX2xvY2tzIiAhPSBubzsgdGhlbgorICAjIGRvIG5vdCBvdmVyd3JpdGUgdGhlIHZhbHVlIG9mIG5lZWRfbG9ja3MgcHJvdmlkZWQgYnkgdGhlIHVzZXIKKyAgQUNfTVNHX0NIRUNLSU5HKFtpZiB3ZSBjYW4gbG9jayB3aXRoIGhhcmQgbGlua3NdKQorICBoYXJkX2xpbmtzPXllcworICAkcm0gY29uZnRlc3QqCisgIGxuIGNvbmZ0ZXN0LmEgY29uZnRlc3QuYiAyPi9kZXYvbnVsbCAmJiBoYXJkX2xpbmtzPW5vCisgIHRvdWNoIGNvbmZ0ZXN0LmEKKyAgbG4gY29uZnRlc3QuYSBjb25mdGVzdC5iIDI+JjUgfHwgaGFyZF9saW5rcz1ubworICBsbiBjb25mdGVzdC5hIGNvbmZ0ZXN0LmIgMj4vZGV2L251bGwgJiYgaGFyZF9saW5rcz1ubworICBBQ19NU0dfUkVTVUxUKFskaGFyZF9saW5rc10pCisgIGlmIHRlc3QgIiRoYXJkX2xpbmtzIiA9IG5vOyB0aGVuCisgICAgQUNfTVNHX1dBUk4oW2AkQ0MnIGRvZXMgbm90IHN1cHBvcnQgYC1jIC1vJywgc28gYG1ha2UgLWonIG1heSBiZSB1bnNhZmVdKQorICAgIG5lZWRfbG9ja3M9d2FybgorICBmaQorZWxzZQorICBuZWVkX2xvY2tzPW5vCitmaQorXSkjIEFDX0xJQlRPT0xfU1lTX0hBUkRfTElOS19MT0NLUworCisKKyMgQUNfTElCVE9PTF9PQkpESVIKKyMgLS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtBQ19MSUJUT09MX09CSkRJUl0sCitbQUNfQ0FDSEVfQ0hFQ0soW2ZvciBvYmpkaXJdLCBbbHRfY3Zfb2JqZGlyXSwKK1tybSAtZiAubGlicyAyPi9kZXYvbnVsbAorbWtkaXIgLmxpYnMgMj4vZGV2L251bGwKK2lmIHRlc3QgLWQgLmxpYnM7IHRoZW4KKyAgbHRfY3Zfb2JqZGlyPS5saWJzCitlbHNlCisgICMgTVMtRE9TIGRvZXMgbm90IGFsbG93IGZpbGVuYW1lcyB0aGF0IGJlZ2luIHdpdGggYSBkb3QuCisgIGx0X2N2X29iamRpcj1fbGlicworZmkKK3JtZGlyIC5saWJzIDI+L2Rldi9udWxsXSkKK29iamRpcj0kbHRfY3Zfb2JqZGlyCitdKSMgQUNfTElCVE9PTF9PQkpESVIKKworCisjIEFDX0xJQlRPT0xfUFJPR19MRF9IQVJEQ09ERV9MSUJQQVRIKFtUQUdOQU1FXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDaGVjayBoYXJkY29kaW5nIGF0dHJpYnV0ZXMuCitBQ19ERUZVTihbQUNfTElCVE9PTF9QUk9HX0xEX0hBUkRDT0RFX0xJQlBBVEhdLAorW0FDX01TR19DSEVDS0lORyhbaG93IHRvIGhhcmRjb2RlIGxpYnJhcnkgcGF0aHMgaW50byBwcm9ncmFtc10pCitfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2FjdGlvbiwgJDEpPQoraWYgdGVzdCAtbiAiJF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIiB8fCBcCisgICB0ZXN0IC1uICIkX0xUX0FDX1RBR1ZBUihydW5wYXRoX3ZhciAkMSkiIHx8IFwKKyAgIHRlc3QgIlgkX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKSI9Ilh5ZXMiIDsgdGhlbgorCisgICMgV2UgY2FuIGhhcmRjb2RlIG5vbi1leGlzdGFudCBkaXJlY3Rvcmllcy4KKyAgaWYgdGVzdCAiJF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSkiICE9IG5vICYmCisgICAgICMgSWYgdGhlIG9ubHkgbWVjaGFuaXNtIHRvIGF2b2lkIGhhcmRjb2RpbmcgaXMgc2hsaWJwYXRoX3Zhciwgd2UKKyAgICAgIyBoYXZlIHRvIHJlbGluaywgb3RoZXJ3aXNlIHdlIG1pZ2h0IGxpbmsgd2l0aCBhbiBpbnN0YWxsZWQgbGlicmFyeQorICAgICAjIHdoZW4gd2Ugc2hvdWxkIGJlIGxpbmtpbmcgd2l0aCBhIHlldC10by1iZS1pbnN0YWxsZWQgb25lCisgICAgICMjIHRlc3QgIiRfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKSIgIT0gbm8gJiYKKyAgICAgdGVzdCAiJF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpIiAhPSBubzsgdGhlbgorICAgICMgTGlua2luZyBhbHdheXMgaGFyZGNvZGVzIHRoZSB0ZW1wb3JhcnkgbGlicmFyeSBkaXJlY3RvcnkuCisgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9hY3Rpb24sICQxKT1yZWxpbmsKKyAgZWxzZQorICAgICMgV2UgY2FuIGxpbmsgd2l0aG91dCBoYXJkY29kaW5nLCBhbmQgd2UgY2FuIGhhcmRjb2RlIG5vbmV4aXN0aW5nIGRpcnMuCisgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9hY3Rpb24sICQxKT1pbW1lZGlhdGUKKyAgZmkKK2Vsc2UKKyAgIyBXZSBjYW5ub3QgaGFyZGNvZGUgYW55dGhpbmcsIG9yIGVsc2Ugd2UgY2FuIG9ubHkgaGFyZGNvZGUgZXhpc3RpbmcKKyAgIyBkaXJlY3Rvcmllcy4KKyAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9hY3Rpb24sICQxKT11bnN1cHBvcnRlZAorZmkKK0FDX01TR19SRVNVTFQoWyRfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2FjdGlvbiwgJDEpXSkKKworaWYgdGVzdCAiJF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfYWN0aW9uLCAkMSkiID0gcmVsaW5rOyB0aGVuCisgICMgRmFzdCBpbnN0YWxsYXRpb24gaXMgbm90IHN1cHBvcnRlZAorICBlbmFibGVfZmFzdF9pbnN0YWxsPW5vCitlbGlmIHRlc3QgIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiID0geWVzIHx8CisgICAgIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IG5vOyB0aGVuCisgICMgRmFzdCBpbnN0YWxsYXRpb24gaXMgbm90IG5lY2Vzc2FyeQorICBlbmFibGVfZmFzdF9pbnN0YWxsPW5lZWRsZXNzCitmaQorXSkjIEFDX0xJQlRPT0xfUFJPR19MRF9IQVJEQ09ERV9MSUJQQVRICisKKworIyBBQ19MSUJUT09MX1NZU19MSUJfU1RSSVAKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbQUNfTElCVE9PTF9TWVNfTElCX1NUUklQXSwKK1tzdHJpcGxpYj0KK29sZF9zdHJpcGxpYj0KK0FDX01TR19DSEVDS0lORyhbd2hldGhlciBzdHJpcHBpbmcgbGlicmFyaWVzIGlzIHBvc3NpYmxlXSkKK2lmIHRlc3QgLW4gIiRTVFJJUCIgJiYgJFNUUklQIC1WIDI+JjEgfCBncmVwICJHTlUgc3RyaXAiID4vZGV2L251bGw7IHRoZW4KKyAgdGVzdCAteiAiJG9sZF9zdHJpcGxpYiIgJiYgb2xkX3N0cmlwbGliPSIkU1RSSVAgLS1zdHJpcC1kZWJ1ZyIKKyAgdGVzdCAteiAiJHN0cmlwbGliIiAmJiBzdHJpcGxpYj0iJFNUUklQIC0tc3RyaXAtdW5uZWVkZWQiCisgIEFDX01TR19SRVNVTFQoW3llc10pCitlbHNlCisjIEZJWE1FIC0gaW5zZXJ0IHNvbWUgcmVhbCB0ZXN0cywgaG9zdF9vcyBpc24ndCByZWFsbHkgZ29vZCBlbm91Z2gKKyAgY2FzZSAkaG9zdF9vcyBpbgorICAgZGFyd2luKikKKyAgICAgICBpZiB0ZXN0IC1uICIkU1RSSVAiIDsgdGhlbgorICAgICAgICAgc3RyaXBsaWI9IiRTVFJJUCAteCIKKyAgICAgICAgIEFDX01TR19SRVNVTFQoW3llc10pCisgICAgICAgZWxzZQorICBBQ19NU0dfUkVTVUxUKFtub10pCitmaQorICAgICAgIDs7CisgICAqKQorICBBQ19NU0dfUkVTVUxUKFtub10pCisgICAgOzsKKyAgZXNhYworZmkKK10pIyBBQ19MSUJUT09MX1NZU19MSUJfU1RSSVAKKworCisjIEFDX0xJQlRPT0xfU1lTX0RZTkFNSUNfTElOS0VSCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFBPUlRNRSBGaWxsIGluIHlvdXIgbGQuc28gY2hhcmFjdGVyaXN0aWNzCitBQ19ERUZVTihbQUNfTElCVE9PTF9TWVNfRFlOQU1JQ19MSU5LRVJdLAorW0FDX01TR19DSEVDS0lORyhbZHluYW1pYyBsaW5rZXIgY2hhcmFjdGVyaXN0aWNzXSkKK2xpYnJhcnlfbmFtZXNfc3BlYz0KK2xpYm5hbWVfc3BlYz0nbGliJG5hbWUnCitzb25hbWVfc3BlYz0KK3NocmV4dF9jbWRzPSIuc28iCitwb3N0aW5zdGFsbF9jbWRzPQorcG9zdHVuaW5zdGFsbF9jbWRzPQorZmluaXNoX2NtZHM9CitmaW5pc2hfZXZhbD0KK3NobGlicGF0aF92YXI9CitzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9dW5rbm93bgordmVyc2lvbl90eXBlPW5vbmUKK2R5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBsZC5zbyIKK3N5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIvbGliIC91c3IvbGliIgoraWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkQ0MgLXByaW50LXNlYXJjaC1kaXJzIHwgZ3JlcCAiXmxpYnJhcmllczoiIHwgJFNFRCAtZSAicy9ebGlicmFyaWVzOi8vIiAtZSAicyw9LywvLGciYAorICBpZiBlY2hvICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IGdyZXAgJzsnID4vZGV2L251bGwgOyB0aGVuCisgICAgIyBpZiB0aGUgcGF0aCBjb250YWlucyAiOyIgdGhlbiB3ZSBhc3N1bWUgaXQgdG8gYmUgdGhlIHNlcGFyYXRvcgorICAgICMgb3RoZXJ3aXNlIGRlZmF1bHQgdG8gdGhlIHN0YW5kYXJkIHBhdGggc2VwYXJhdG9yIChpLmUuICI6IikgLSBpdCBpcworICAgICMgYXNzdW1lZCB0aGF0IG5vIHBhcnQgb2YgYSBub3JtYWwgcGF0aG5hbWUgY29udGFpbnMgIjsiIGJ1dCB0aGF0IHNob3VsZAorICAgICMgb2theSBpbiB0aGUgcmVhbCB3b3JsZCB3aGVyZSAiOyIgaW4gZGlycGF0aHMgaXMgaXRzZWxmIHByb2JsZW1hdGljLgorICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gZWNobyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKKyAgZWxzZQorICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gZWNobyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKyAgZmkKK2Vsc2UKKyAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvbGliIC91c3IvbGliIC91c3IvbG9jYWwvbGliIgorZmkKK25lZWRfbGliX3ByZWZpeD11bmtub3duCitoYXJkY29kZV9pbnRvX2xpYnM9bm8KKworIyB3aGVuIHlvdSBzZXQgbmVlZF92ZXJzaW9uIHRvIG5vLCBtYWtlIHN1cmUgaXQgZG9lcyBub3QgY2F1c2UgLXNldF92ZXJzaW9uCisjIGZsYWdzIHRvIGJlIGxlZnQgd2l0aG91dCBhcmd1bWVudHMKK25lZWRfdmVyc2lvbj11bmtub3duCisKK2Nhc2UgJGhvc3Rfb3MgaW4KK2FpeDMqKQorICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICRsaWJuYW1lLmEnCisgIHNobGlicGF0aF92YXI9TElCUEFUSAorCisgICMgQUlYIDMgaGFzIG5vIHZlcnNpb25pbmcgc3VwcG9ydCwgc28gd2UgYXBwZW5kIGEgbWFqb3IgdmVyc2lvbiB0byB0aGUgbmFtZS4KKyAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgOzsKKworYWl4NCogfCBhaXg1KikKKyAgdmVyc2lvbl90eXBlPWxpbnV4CisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICAgICMgQUlYIDUgc3VwcG9ydHMgSUE2NAorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJGxpYm5hbWUke3NoYXJlZF9leHR9JworICAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIGVsc2UKKyAgICAjIFdpdGggR0NDIHVwIHRvIDIuOTUueCwgY29sbGVjdDIgd291bGQgY3JlYXRlIGFuIGltcG9ydCBmaWxlCisgICAgIyBmb3IgZGVwZW5kZW5jZSBsaWJyYXJpZXMuICBUaGUgaW1wb3J0IGZpbGUgd291bGQgc3RhcnQgd2l0aAorICAgICMgdGhlIGxpbmUgYCMhIC4nLiAgVGhpcyB3b3VsZCBjYXVzZSB0aGUgZ2VuZXJhdGVkIGxpYnJhcnkgdG8KKyAgICAjIGRlcGVuZCBvbiBgLicsIGFsd2F5cyBhbiBpbnZhbGlkIGxpYnJhcnkuICBUaGlzIHdhcyBmaXhlZCBpbgorICAgICMgZGV2ZWxvcG1lbnQgc25hcHNob3RzIG9mIEdDQyBwcmlvciB0byAzLjAuCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgYWl4NCB8IGFpeDQuW1swMV1dIHwgYWl4NC5bWzAxXV0uKikKKyAgICAgIGlmIHsgZWNobyAnI2lmIF9fR05VQ19fID4gMiB8fCAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA+PSA5NyknCisJICAgZWNobyAnIHllcyAnCisJICAgZWNobyAnI2VuZGlmJzsgfSB8ICR7Q0N9IC1FIC0gfCBncmVwIHllcyA+IC9kZXYvbnVsbDsgdGhlbgorCToKKyAgICAgIGVsc2UKKwljYW5fYnVpbGRfc2hhcmVkPW5vCisgICAgICBmaQorICAgICAgOzsKKyAgICBlc2FjCisgICAgIyBBSVggKG9uIFBvd2VyKikgaGFzIG5vIHZlcnNpb25pbmcgc3VwcG9ydCwgc28gY3VycmVudGx5IHdlIGNhbiBub3QgaGFyZGNvZGUgY29ycmVjdAorICAgICMgc29uYW1lIGludG8gZXhlY3V0YWJsZS4gUHJvYmFibHkgd2UgY2FuIGFkZCB2ZXJzaW9uaW5nIHN1cHBvcnQgdG8KKyAgICAjIGNvbGxlY3QyLCBzbyBhZGRpdGlvbmFsIGxpbmtzIGNhbiBiZSB1c2VmdWwgaW4gZnV0dXJlLgorICAgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgorICAgICAgIyBJZiB1c2luZyBydW4gdGltZSBsaW5raW5nIChvbiBBSVggNC4yIG9yIGxhdGVyKSB1c2UgbGliPG5hbWU+LnNvCisgICAgICAjIGluc3RlYWQgb2YgbGliPG5hbWU+LmEgdG8gbGV0IHBlb3BsZSBrbm93IHRoYXQgdGhlc2UgYXJlIG5vdAorICAgICAgIyB0eXBpY2FsIEFJWCBzaGFyZWQgbGlicmFyaWVzLgorICAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgICAgZWxzZQorICAgICAgIyBXZSBwcmVzZXJ2ZSAuYSBhcyBleHRlbnNpb24gZm9yIHNoYXJlZCBsaWJyYXJpZXMgdGhyb3VnaCBBSVg0LjIKKyAgICAgICMgYW5kIGxhdGVyIHdoZW4gd2UgYXJlIG5vdCBkb2luZyBydW4gdGltZSBsaW5raW5nLgorICAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfS5hICRsaWJuYW1lLmEnCisgICAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgIGZpCisgICAgc2hsaWJwYXRoX3Zhcj1MSUJQQVRICisgIGZpCisgIDs7CisKK2FtaWdhb3MqKQorICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLml4bGlicmFyeSAkbGlibmFtZS5hJworICAjIENyZWF0ZSAke2xpYm5hbWV9X2l4bGlicmFyeS5hIGVudHJpZXMgaW4gL3N5cy9saWJzLgorICBmaW5pc2hfZXZhbD0nZm9yIGxpYiBpbiBgbHMgJGxpYmRpci8qLml4bGlicmFyeSAyPi9kZXYvbnVsbGA7IGRvIGxpYm5hbWU9YCRlY2hvICJYJGxpYiIgfCAkWHNlZCAtZSAnXCcncyVeLiovXChbW14vXV0qXClcLml4bGlicmFyeSQlXDElJ1wnJ2A7IHRlc3QgJHJtIC9zeXMvbGlicy8ke2xpYm5hbWV9X2l4bGlicmFyeS5hOyAkc2hvdyAiY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSI7IGNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEgfHwgZXhpdCAxOyBkb25lJworICA7OworCitiZW9zKikKKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKKyAgZHluYW1pY19saW5rZXI9IiRob3N0X29zIGxkLnNvIgorICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICA7OworCitic2RpNCopCisgIHZlcnNpb25fdHlwZT1saW51eAorICBuZWVkX3ZlcnNpb249bm8KKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3NiaW4iIGxkY29uZmlnICRsaWJkaXInCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3NobGliIC91c3IvbGliIC91c3IvWDExL2xpYiAvdXNyL2NvbnRyaWIvbGliIC9saWIgL3Vzci9sb2NhbC9saWIiCisgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIvc2hsaWIgL3Vzci9saWIgL3Vzci9sb2NhbC9saWIiCisgICMgdGhlIGRlZmF1bHQgbGQuc28uY29uZiBhbHNvIGNvbnRhaW5zIC91c3IvY29udHJpYi9saWIgYW5kCisgICMgL3Vzci9YMTFSNi9saWIgKC91c3IvWDExIGlzIGEgbGluayB0byAvdXNyL1gxMVI2KSwgYnV0IGxldCB1cyBhbGxvdworICAjIGxpYnRvb2wgdG8gaGFyZC1jb2RlIHRoZXNlIGludG8gcHJvZ3JhbXMKKyAgOzsKKworY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqKQorICB2ZXJzaW9uX3R5cGU9d2luZG93cworICBzaHJleHRfY21kcz0iLmRsbCIKKyAgbmVlZF92ZXJzaW9uPW5vCisgIG5lZWRfbGliX3ByZWZpeD1ubworCisgIGNhc2UgJEdDQywkaG9zdF9vcyBpbgorICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTtlY2hvIFwkZGxuYW1lJ1wnJ2B+CisgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKyAgICAgICAkcm0gXCRkbHBhdGgnCisgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgIGN5Z3dpbiopCisgICAgICAjIEN5Z3dpbiBETExzIHVzZSAnY3lnJyBwcmVmaXggcmF0aGVyIHRoYW4gJ2xpYicKKyAgICAgIHNvbmFtZV9zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvY3lnLydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYiAvbGliL3czMmFwaSAvbGliIC91c3IvbG9jYWwvbGliIgorICAgICAgOzsKKyAgICBtaW5ndyopCisgICAgICAjIE1pbkdXIERMTHMgdXNlIHRyYWRpdGlvbmFsICdsaWInIHByZWZpeAorICAgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRDQyAtcHJpbnQtc2VhcmNoLWRpcnMgfCBncmVwICJebGlicmFyaWVzOiIgfCAkU0VEIC1lICJzL15saWJyYXJpZXM6Ly8iIC1lICJzLD0vLC8sZyJgCisgICAgICBpZiBlY2hvICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IFtncmVwICc7W2MtekMtWl06LycgPi9kZXYvbnVsbF07IHRoZW4KKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSCBwcmludGVkIGJ5CisgICAgICAgICMgbWluZ3cgZ2NjLCBidXQgd2UgYXJlIHJ1bm5pbmcgb24gQ3lnd2luLiBHY2MgcHJpbnRzIGl0cyBzZWFyY2gKKyAgICAgICAgIyBwYXRoIHdpdGggOyBzZXBhcmF0b3JzLCBhbmQgd2l0aCBkcml2ZSBsZXR0ZXJzLiBXZSBjYW4gaGFuZGxlIHRoZQorICAgICAgICAjIGRyaXZlIGxldHRlcnMgKGN5Z3dpbiBmaWxldXRpbHMgdW5kZXJzdGFuZHMgdGhlbSksIHNvIGxlYXZlIHRoZW0sCisgICAgICAgICMgZXNwZWNpYWxseSBhcyB3ZSBtaWdodCBwYXNzIGZpbGVzIGZvdW5kIHRoZXJlIHRvIGEgbWluZ3cgb2JqZHVtcCwKKyAgICAgICAgIyB3aGljaCB3b3VsZG4ndCB1bmRlcnN0YW5kIGEgY3lnd2luaWZpZWQgcGF0aC4gQWhoLgorICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGVjaG8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisgICAgICBlbHNlCisgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gZWNobyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKyAgICAgIGZpCisgICAgICA7OworICAgIHB3MzIqKQorICAgICAgIyBwdzMyIERMTHMgdXNlICdwdycgcHJlZml4IHJhdGhlciB0aGFuICdsaWInCisgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICA7OworICAgIGVzYWMKKyAgICA7OworCisgICopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKyAgICA7OworICBlc2FjCisgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgorICBzaGxpYnBhdGhfdmFyPVBBVEgKKyAgOzsKKworZGFyd2luKiB8IHJoYXBzb2R5KikKKyAgZHluYW1pY19saW5rZXI9IiRob3N0X29zIGR5bGQiCisgIHZlcnNpb25fdHlwZT1kYXJ3aW4KKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHt2ZXJzdWZmaXh9JHNoYXJlZF9leHQgJHtsaWJuYW1lfSR7cmVsZWFzZX0ke21ham9yfSRzaGFyZWRfZXh0ICR7bGlibmFtZX0kc2hhcmVkX2V4dCcKKyAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHttYWpvcn0kc2hhcmVkX2V4dCcKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICBzaGxpYnBhdGhfdmFyPURZTERfTElCUkFSWV9QQVRICisgIHNocmV4dF9jbWRzPSckKHRlc3QgLiRtb2R1bGUgPSAueWVzICYmIGVjaG8gLnNvIHx8IGVjaG8gLmR5bGliKScKKyAgIyBBcHBsZSdzIGdjYyBwcmludHMgJ2djYyAtcHJpbnQtc2VhcmNoLWRpcnMnIGRvZXNuJ3Qgb3BlcmF0ZSB0aGUgc2FtZS4KKyAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRDQyAtcHJpbnQtc2VhcmNoLWRpcnMgfCB0ciAiXG4iICIkUEFUSF9TRVBBUkFUT1IiIHwgc2VkIC1lICdzL2xpYnJhcmllczovQGxpYnJhcmllczovJyB8IHRyICJAIiAiXG4iIHwgZ3JlcCAiXmxpYnJhcmllczoiIHwgc2VkIC1lICJzL15saWJyYXJpZXM6Ly8iIC1lICJzLD0vLC8sZyIgLWUgInMsJFBBVEhfU0VQQVJBVE9SLCAsZyIgLWUgInMsLiosJiAvbGliIC91c3IvbGliIC91c3IvbG9jYWwvbGliLGciYAorICBlbHNlCisgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPScvbGliIC91c3IvbGliIC91c3IvbG9jYWwvbGliJworICBmaQorICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL3Vzci9sb2NhbC9saWIgL2xpYiAvdXNyL2xpYicKKyAgOzsKKworZGd1eCopCisgIHZlcnNpb25fdHlwZT1saW51eAorICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgbmVlZF92ZXJzaW9uPW5vCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgOzsKKworZnJlZWJzZDEqKQorICBkeW5hbWljX2xpbmtlcj1ubworICA7OworCitrZnJlZWJzZCotZ251KQorICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworICBkeW5hbWljX2xpbmtlcj0nR05VIGxkLnNvJworICA7OworCitmcmVlYnNkKikKKyAgb2JqZm9ybWF0PWB0ZXN0IC14IC91c3IvYmluL29iamZvcm1hdCAmJiAvdXNyL2Jpbi9vYmpmb3JtYXQgfHwgZWNobyBhb3V0YAorICB2ZXJzaW9uX3R5cGU9ZnJlZWJzZC0kb2JqZm9ybWF0CisgIGNhc2UgJHZlcnNpb25fdHlwZSBpbgorICAgIGZyZWVic2QtZWxmKikKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUke3NoYXJlZF9leHR9JworICAgICAgbmVlZF92ZXJzaW9uPW5vCisgICAgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgICAgIDs7CisgICAgZnJlZWJzZC0qKQorICAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICRsaWJuYW1lJHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXgnCisgICAgICBuZWVkX3ZlcnNpb249eWVzCisgICAgICA7OworICBlc2FjCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgZnJlZWJzZDIqKQorICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgICA7OworICBmcmVlYnNkMy5bMDFdKiB8IGZyZWVic2RlbGYzLlswMV0qKQorICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICAgOzsKKyAgKikgIyBmcm9tIDMuMiBvbgorICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworICAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgICA7OworICBlc2FjCisgIDs7CisKK2dudSopCisgIHZlcnNpb25fdHlwZT1saW51eAorICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgbmVlZF92ZXJzaW9uPW5vCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0ke21ham9yfSAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKKyAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworICA7OworCitocHV4OSogfCBocHV4MTAqIHwgaHB1eDExKikKKyAgIyBHaXZlIGEgc29uYW1lIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1ham9yIHZlcnNpb24gc28gdGhhdCBkbGQuc2wgcmVmdXNlcyB0bworICAjIGxpbmsgYWdhaW5zdCBvdGhlciB2ZXJzaW9ucy4KKyAgdmVyc2lvbl90eXBlPXN1bm9zCisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgY2FzZSAiJGhvc3RfY3B1IiBpbgorICBpYTY0KikKKyAgICBzaHJleHRfY21kcz0nLnNvJworICAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgZGxkLnNvIgorICAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcyAjIFVubGVzcyArbm9lbnZ2YXIgaXMgc3BlY2lmaWVkLgorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICAgaWYgdGVzdCAiWCRIUFVYX0lBNjRfTU9ERSIgPSBYMzI7IHRoZW4KKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIvaHB1eDMyIC91c3IvbG9jYWwvbGliL2hwdXgzMiAvdXNyL2xvY2FsL2xpYiIKKyAgICBlbHNlCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliL2hwdXg2NCAvdXNyL2xvY2FsL2xpYi9ocHV4NjQiCisgICAgZmkKKyAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0kc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjCisgICAgOzsKKyAgIGhwcGEqNjQqKQorICAgICBzaHJleHRfY21kcz0nLnNsJworICAgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICAgIGR5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBkbGQuc2wiCisgICAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRIICMgSG93IHNob3VsZCB3ZSBoYW5kbGUgU0hMSUJfUEFUSAorICAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzICMgVW5sZXNzICtub2VudnZhciBpcyBzcGVjaWZpZWQuCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliL3BhMjBfNjQgL3Vzci9jY3MvbGliL3BhMjBfNjQiCisgICAgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMKKyAgICAgOzsKKyAgICopCisgICAgc2hyZXh0X2NtZHM9Jy5zbCcKKyAgICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgZGxkLnNsIgorICAgIHNobGlicGF0aF92YXI9U0hMSUJfUEFUSAorICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubyAjICtzIGlzIHJlcXVpcmVkIHRvIGVuYWJsZSBTSExJQl9QQVRICisgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgICA7OworICBlc2FjCisgICMgSFAtVVggcnVucyAqcmVhbGx5KiBzbG93bHkgdW5sZXNzIHNoYXJlZCBsaWJyYXJpZXMgYXJlIG1vZGUgNTU1LgorICBwb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA1NTUgJGxpYicKKyAgOzsKKworaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgY2FzZSAkaG9zdF9vcyBpbgorICAgIG5vbnN0b3B1eCopIHZlcnNpb25fdHlwZT1ub25zdG9wdXggOzsKKyAgICAqKQorCWlmIHRlc3QgIiRsdF9jdl9wcm9nX2dudV9sZCIgPSB5ZXM7IHRoZW4KKwkJdmVyc2lvbl90eXBlPWxpbnV4CisJZWxzZQorCQl2ZXJzaW9uX3R5cGU9aXJpeAorCWZpIDs7CisgIGVzYWMKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgaXJpeDUqIHwgbm9uc3RvcHV4KikKKyAgICBsaWJzdWZmPSBzaGxpYnN1ZmY9CisgICAgOzsKKyAgKikKKyAgICBjYXNlICRMRCBpbiAjIGxpYnRvb2wubTQgd2lsbCBhZGQgb25lIG9mIHRoZXNlIHN3aXRjaGVzIHRvIExECisgICAgKi0zMnwqIi0zMiAifCotbWVsZjMyYnNtaXB8KiItbWVsZjMyYnNtaXAgIikKKyAgICAgIGxpYnN1ZmY9IHNobGlic3VmZj0gbGlibWFnaWM9MzItYml0OzsKKyAgICAqLW4zMnwqIi1uMzIgInwqLW1lbGYzMmJtaXBuMzJ8KiItbWVsZjMyYm1pcG4zMiAiKQorICAgICAgbGlic3VmZj0zMiBzaGxpYnN1ZmY9TjMyIGxpYm1hZ2ljPU4zMjs7CisgICAgKi02NHwqIi02NCAifCotbWVsZjY0Ym1pcHwqIi1tZWxmNjRibWlwICIpCisgICAgICBsaWJzdWZmPTY0IHNobGlic3VmZj02NCBsaWJtYWdpYz02NC1iaXQ7OworICAgICopIGxpYnN1ZmY9IHNobGlic3VmZj0gbGlibWFnaWM9bmV2ZXItbWF0Y2g7OworICAgIGVzYWMKKyAgICA7OworICBlc2FjCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWSR7c2hsaWJzdWZmfV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliJHtsaWJzdWZmfSAvbGliJHtsaWJzdWZmfSAvdXNyL2xvY2FsL2xpYiR7bGlic3VmZn0iCisgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYiR7bGlic3VmZn0gL2xpYiR7bGlic3VmZn0iCisgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgOzsKKworIyBObyBzaGFyZWQgbGliIHN1cHBvcnQgZm9yIExpbnV4IG9sZGxkLCBhb3V0LCBvciBjb2ZmLgorbGludXgqb2xkbGQqIHwgbGludXgqYW91dCogfCBsaW51eCpjb2ZmKikKKyAgZHluYW1pY19saW5rZXI9bm8KKyAgOzsKKworIyBUaGlzIG11c3QgYmUgTGludXggRUxGLgorbGludXgqKQorICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgLW4gJGxpYmRpcicKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisgICMgVGhpcyBpbXBsaWVzIG5vIGZhc3RfaW5zdGFsbCwgd2hpY2ggaXMgdW5hY2NlcHRhYmxlLgorICAjIFNvbWUgcmV3b3JrIHdpbGwgYmUgbmVlZGVkIHRvIGFsbG93IGZvciBmYXN0X2luc3RhbGwKKyAgIyBiZWZvcmUgdGhpcyBjYW4gYmUgZW5hYmxlZC4KKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworCisgICMgQXBwZW5kIGxkLnNvLmNvbmYgY29udGVudHMgdG8gdGhlIHNlYXJjaCBwYXRoCisgIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCisgICAgbHRfbGRfZXh0cmE9YCRTRUQgLWUgJ3MvWzosXHRdLyAvZztzLz1bXj1dKiQvLztzLz1bXj0gXSogLyAvZycgL2V0Yy9sZC5zby5jb25mIHwgdHIgJ1xuJyAnICdgCisgICAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii9saWIgL3Vzci9saWIgJGx0X2xkX2V4dHJhIgorICBmaQorCisgICMgV2UgdXNlZCB0byB0ZXN0IGZvciAvbGliL2xkLnNvLjEgYW5kIGRpc2FibGUgc2hhcmVkIGxpYnJhcmllcyBvbgorICAjIHBvd2VycGMsIGJlY2F1c2UgTWtMaW51eCBvbmx5IHN1cHBvcnRlZCBzaGFyZWQgbGlicmFyaWVzIHdpdGggdGhlCisgICMgR05VIGR5bmFtaWMgbGlua2VyLiAgU2luY2UgdGhpcyB3YXMgYnJva2VuIHdpdGggY3Jvc3MgY29tcGlsZXJzLAorICAjIG1vc3QgcG93ZXJwYy1saW51eCBib3hlcyBzdXBwb3J0IGR5bmFtaWMgbGlua2luZyB0aGVzZSBkYXlzIGFuZAorICAjIHBlb3BsZSBjYW4gYWx3YXlzIC0tZGlzYWJsZS1zaGFyZWQsIHRoZSB0ZXN0IHdhcyByZW1vdmVkLCBhbmQgd2UKKyAgIyBhc3N1bWUgdGhlIEdOVS9MaW51eCBkeW5hbWljIGxpbmtlciBpcyBpbiB1c2UuCisgIGR5bmFtaWNfbGlua2VyPSdHTlUvTGludXggbGQuc28nCisgIDs7CisKK25ldGJzZGVsZiotZ251KQorICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworICBkeW5hbWljX2xpbmtlcj0nTmV0QlNEIGxkLmVsZl9zbycKKyAgOzsKKwora25ldGJzZCotZ251KQorICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworICBkeW5hbWljX2xpbmtlcj0nR05VIGxkLnNvJworICA7OworCituZXRic2QqKQorICB2ZXJzaW9uX3R5cGU9c3Vub3MKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8IGdyZXAgX19FTEZfXyA+L2Rldi9udWxsOyB0aGVuCisgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCcKKyAgICBmaW5pc2hfY21kcz0nUEFUSD0iXCRQQVRIOi9zYmluIiBsZGNvbmZpZyAtbSAkbGliZGlyJworICAgIGR5bmFtaWNfbGlua2VyPSdOZXRCU0QgKGEub3V0KSBsZC5zbycKKyAgZWxzZQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0nCisgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgICBkeW5hbWljX2xpbmtlcj0nTmV0QlNEIGxkLmVsZl9zbycKKyAgZmkKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgIDs7CisKK25ld3NvczYpCisgIHZlcnNpb25fdHlwZT1saW51eAorICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICA7OworCitudG8tcW54KikKKyAgdmVyc2lvbl90eXBlPWxpbnV4CisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgOzsKKworb3BlbmJzZCopCisgIHZlcnNpb25fdHlwZT1zdW5vcworICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgbmVlZF92ZXJzaW9uPXllcworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4JworICBmaW5pc2hfY21kcz0nUEFUSD0iXCRQQVRIOi9zYmluIiBsZGNvbmZpZyAtbSAkbGliZGlyJworICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBpZiB0ZXN0IC16ICJgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCBncmVwIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KKyAgICBjYXNlICRob3N0X29zIGluCisgICAgICBvcGVuYnNkMi5bWzg5XV0gfCBvcGVuYnNkMi5bWzg5XV0uKikKKwlzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KKwk7OworICAgICAgKikKKwlzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisJOzsKKyAgICAgIGVzYWMKKyAgZWxzZQorICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgZmkKKyAgOzsKKworb3MyKikKKyAgbGlibmFtZV9zcGVjPSckbmFtZScKKyAgc2hyZXh0X2NtZHM9Ii5kbGwiCisgIG5lZWRfbGliX3ByZWZpeD1ubworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fSAkbGlibmFtZS5hJworICBkeW5hbWljX2xpbmtlcj0nT1MvMiBsZC5leGUnCisgIHNobGlicGF0aF92YXI9TElCUEFUSAorICA7OworCitvc2YzKiB8IG9zZjQqIHwgb3NmNSopCisgIHZlcnNpb25fdHlwZT1vc2YKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvdXNyL3NobGliIC91c3IvY2NzL2xpYiAvdXNyL2xpYi9jbXBscnMvY2MgL3Vzci9saWIgL3Vzci9sb2NhbC9saWIgL3Zhci9zaGxpYiIKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiCisgIDs7CisKK3NjbzMuMnY1KikKKyAgdmVyc2lvbl90eXBlPW9zZgorICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgOzsKKworc29sYXJpcyopCisgIHZlcnNpb25fdHlwZT1saW51eAorICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgbmVlZF92ZXJzaW9uPW5vCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgIyBsZGQgY29tcGxhaW5zIHVubGVzcyBsaWJyYXJpZXMgYXJlIGV4ZWN1dGFibGUKKyAgcG9zdGluc3RhbGxfY21kcz0nY2htb2QgK3ggJGxpYicKKyAgOzsKKworc3Vub3M0KikKKyAgdmVyc2lvbl90eXBlPXN1bm9zCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXgnCisgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3Vzci9ldGMiIGxkY29uZmlnICRsaWJkaXInCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorICAgIG5lZWRfbGliX3ByZWZpeD1ubworICBmaQorICBuZWVkX3ZlcnNpb249eWVzCisgIDs7CisKK3N5c3Y0IHwgc3lzdjQuMnV3MiogfCBzeXN2NC4zKiB8IHN5c3Y1KikKKyAgdmVyc2lvbl90eXBlPWxpbnV4CisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBjYXNlICRob3N0X3ZlbmRvciBpbgorICAgIHNuaSkKKyAgICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworICAgICAgbmVlZF9saWJfcHJlZml4PW5vCisgICAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWM9JyR7d2x9LUJsYXJnZWR5bnN5bScKKyAgICAgIHJ1bnBhdGhfdmFyPUxEX1JVTl9QQVRICisgICAgICA7OworICAgIHNpZW1lbnMpCisgICAgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgICAgIDs7CisgICAgbW90b3JvbGEpCisgICAgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgICAgIG5lZWRfdmVyc2lvbj1ubworICAgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Jy9saWIgL3Vzci9saWIgL3Vzci9jY3MvbGliJworICAgICAgOzsKKyAgZXNhYworICA7OworCitzeXN2NCpNUCopCisgIGlmIHRlc3QgLWQgL3Vzci9uZWMgO3RoZW4KKyAgICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kdmVyc3VmZml4ICRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSR7c2hhcmVkX2V4dH0uJG1ham9yJworICAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIGZpCisgIDs7CisKK3V0czQqKQorICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIDs7CisKKyopCisgIGR5bmFtaWNfbGlua2VyPW5vCisgIDs7Citlc2FjCitBQ19NU0dfUkVTVUxUKFskZHluYW1pY19saW5rZXJdKQordGVzdCAiJGR5bmFtaWNfbGlua2VyIiA9IG5vICYmIGNhbl9idWlsZF9zaGFyZWQ9bm8KK10pIyBBQ19MSUJUT09MX1NZU19EWU5BTUlDX0xJTktFUgorCisKKyMgX0xUX0FDX1RBR0NPTkZJRworIyAtLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbX0xUX0FDX1RBR0NPTkZJR10sCitbQUNfQVJHX1dJVEgoW3RhZ3NdLAorICAgIFtBQ19IRUxQX1NUUklORyhbLS13aXRoLXRhZ3NAPDpAPVRBR1NAOj5AXSwKKyAgICAgICAgW2luY2x1ZGUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9ucyBAPDpAYXV0b21hdGljQDo+QF0pXSwKKyAgICBbdGFnbmFtZXM9IiR3aXRodmFsIl0pCisKK2lmIHRlc3QgLWYgIiRsdG1haW4iICYmIHRlc3QgLW4gIiR0YWduYW1lcyI7IHRoZW4KKyAgaWYgdGVzdCAhIC1mICIke29maWxlfSI7IHRoZW4KKyAgICBBQ19NU0dfV0FSTihbb3V0cHV0IGZpbGUgYCRvZmlsZScgZG9lcyBub3QgZXhpc3RdKQorICBmaQorCisgIGlmIHRlc3QgLXogIiRMVENDIjsgdGhlbgorICAgIGV2YWwgImAkU0hFTEwgJHtvZmlsZX0gLS1jb25maWcgfCBncmVwICdeTFRDQz0nYCIKKyAgICBpZiB0ZXN0IC16ICIkTFRDQyI7IHRoZW4KKyAgICAgIEFDX01TR19XQVJOKFtvdXRwdXQgZmlsZSBgJG9maWxlJyBkb2VzIG5vdCBsb29rIGxpa2UgYSBsaWJ0b29sIHNjcmlwdF0pCisgICAgZWxzZQorICAgICAgQUNfTVNHX1dBUk4oW3VzaW5nIGBMVENDPSRMVENDJywgZXh0cmFjdGVkIGZyb20gYCRvZmlsZSddKQorICAgIGZpCisgIGZpCisKKyAgIyBFeHRyYWN0IGxpc3Qgb2YgYXZhaWxhYmxlIHRhZ2dlZCBjb25maWd1cmF0aW9ucyBpbiAkb2ZpbGUuCisgICMgTm90ZSB0aGF0IHRoaXMgYXNzdW1lcyB0aGUgZW50aXJlIGxpc3QgaXMgb24gb25lIGxpbmUuCisgIGF2YWlsYWJsZV90YWdzPWBncmVwICJeYXZhaWxhYmxlX3RhZ3M9IiAiJHtvZmlsZX0iIHwgJFNFRCAtZSAncy9hdmFpbGFibGVfdGFncz1cKC4qJFwpL1wxLycgLWUgJ3MvXCIvL2cnYAorCisgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU30kUEFUSF9TRVBBUkFUT1IsIgorICBmb3IgdGFnbmFtZSBpbiAkdGFnbmFtZXM7IGRvCisgICAgSUZTPSIkbHRfc2F2ZV9pZnMiCisgICAgIyBDaGVjayB3aGV0aGVyIHRhZ25hbWUgY29udGFpbnMgb25seSB2YWxpZCBjaGFyYWN0ZXJzCisgICAgY2FzZSBgJGVjaG8gIlgkdGFnbmFtZSIgfCAkWHNlZCAtZSAnczpbWy1fQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejEyMzQ1Njc4OTAsL11dOjpnJ2AgaW4KKyAgICAiIikgOzsKKyAgICAqKSAgQUNfTVNHX0VSUk9SKFtpbnZhbGlkIHRhZyBuYW1lOiAkdGFnbmFtZV0pCisJOzsKKyAgICBlc2FjCisKKyAgICBpZiBncmVwICJeIyAjIyMgQkVHSU4gTElCVE9PTCBUQUcgQ09ORklHOiAkdGFnbmFtZSQiIDwgIiR7b2ZpbGV9IiA+IC9kZXYvbnVsbAorICAgIHRoZW4KKyAgICAgIEFDX01TR19FUlJPUihbdGFnIG5hbWUgXCIkdGFnbmFtZVwiIGFscmVhZHkgZXhpc3RzXSkKKyAgICBmaQorCisgICAgIyBVcGRhdGUgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIHRhZ3MuCisgICAgaWYgdGVzdCAtbiAiJHRhZ25hbWUiOyB0aGVuCisgICAgICBlY2hvIGFwcGVuZGluZyBjb25maWd1cmF0aW9uIHRhZyBcIiR0YWduYW1lXCIgdG8gJG9maWxlCisKKyAgICAgIGNhc2UgJHRhZ25hbWUgaW4KKyAgICAgIENYWCkKKwlpZiB0ZXN0IC1uICIkQ1hYIiAmJiB0ZXN0ICJYJENYWCIgIT0gIlhubyI7IHRoZW4KKwkgIEFDX0xJQlRPT0xfTEFOR19DWFhfQ09ORklHCisJZWxzZQorCSAgdGFnbmFtZT0iIgorCWZpCisJOzsKKworICAgICAgRjc3KQorCWlmIHRlc3QgLW4gIiRGNzciICYmIHRlc3QgIlgkRjc3IiAhPSAiWG5vIjsgdGhlbgorCSAgQUNfTElCVE9PTF9MQU5HX0Y3N19DT05GSUcKKwllbHNlCisJICB0YWduYW1lPSIiCisJZmkKKwk7OworCisgICAgICBHQ0opCisJaWYgdGVzdCAtbiAiJEdDSiIgJiYgdGVzdCAiWCRHQ0oiICE9ICJYbm8iOyB0aGVuCisJICBBQ19MSUJUT09MX0xBTkdfR0NKX0NPTkZJRworCWVsc2UKKwkgIHRhZ25hbWU9IiIKKwlmaQorCTs7CisKKyAgICAgIFJDKQorCUFDX0xJQlRPT0xfTEFOR19SQ19DT05GSUcKKwk7OworCisgICAgICAqKQorCUFDX01TR19FUlJPUihbVW5zdXBwb3J0ZWQgdGFnIG5hbWU6ICR0YWduYW1lXSkKKwk7OworICAgICAgZXNhYworCisgICAgICAjIEFwcGVuZCB0aGUgbmV3IHRhZyBuYW1lIHRvIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSB0YWdzLgorICAgICAgaWYgdGVzdCAtbiAiJHRhZ25hbWUiIDsgdGhlbgorICAgICAgYXZhaWxhYmxlX3RhZ3M9IiRhdmFpbGFibGVfdGFncyAkdGFnbmFtZSIKKyAgICBmaQorICAgIGZpCisgIGRvbmUKKyAgSUZTPSIkbHRfc2F2ZV9pZnMiCisKKyAgIyBOb3cgc3Vic3RpdHV0ZSB0aGUgdXBkYXRlZCBsaXN0IG9mIGF2YWlsYWJsZSB0YWdzLgorICBpZiBldmFsICJzZWQgLWUgJ3MvXmF2YWlsYWJsZV90YWdzPS4qXCQvYXZhaWxhYmxlX3RhZ3M9XCIkYXZhaWxhYmxlX3RhZ3NcIi8nIFwiJG9maWxlXCIgPiBcIiR7b2ZpbGV9VFwiIjsgdGhlbgorICAgIG12ICIke29maWxlfVQiICIkb2ZpbGUiCisgICAgY2htb2QgK3ggIiRvZmlsZSIKKyAgZWxzZQorICAgIHJtIC1mICIke29maWxlfVQiCisgICAgQUNfTVNHX0VSUk9SKFt1bmFibGUgdG8gdXBkYXRlIGxpc3Qgb2YgYXZhaWxhYmxlIHRhZ2dlZCBjb25maWd1cmF0aW9ucy5dKQorICBmaQorZmkKK10pIyBfTFRfQUNfVEFHQ09ORklHCisKKworIyBBQ19MSUJUT09MX0RMT1BFTgorIyAtLS0tLS0tLS0tLS0tLS0tLQorIyBlbmFibGUgY2hlY2tzIGZvciBkbG9wZW4gc3VwcG9ydAorQUNfREVGVU4oW0FDX0xJQlRPT0xfRExPUEVOXSwKKyBbQUNfQkVGT1JFKFskMF0sW0FDX0xJQlRPT0xfU0VUVVBdKQorXSkjIEFDX0xJQlRPT0xfRExPUEVOCisKKworIyBBQ19MSUJUT09MX1dJTjMyX0RMTAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBkZWNsYXJlIHBhY2thZ2Ugc3VwcG9ydCBmb3IgYnVpbGRpbmcgd2luMzIgZGxsJ3MKK0FDX0RFRlVOKFtBQ19MSUJUT09MX1dJTjMyX0RMTF0sCitbQUNfQkVGT1JFKFskMF0sIFtBQ19MSUJUT09MX1NFVFVQXSkKK10pIyBBQ19MSUJUT09MX1dJTjMyX0RMTAorCisKKyMgQUNfRU5BQkxFX1NIQVJFRChbREVGQVVMVF0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBpbXBsZW1lbnQgdGhlIC0tZW5hYmxlLXNoYXJlZCBmbGFnCisjIERFRkFVTFQgaXMgZWl0aGVyIGB5ZXMnIG9yIGBubycuICBJZiBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byBgeWVzJy4KK0FDX0RFRlVOKFtBQ19FTkFCTEVfU0hBUkVEXSwKK1tkZWZpbmUoW0FDX0VOQUJMRV9TSEFSRURfREVGQVVMVF0sIGlmZWxzZSgkMSwgbm8sIG5vLCB5ZXMpKWRubAorQUNfQVJHX0VOQUJMRShbc2hhcmVkXSwKKyAgICBbQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXNoYXJlZEA8OkA9UEtHU0A6PkBdLAorCVtidWlsZCBzaGFyZWQgbGlicmFyaWVzIEA8OkBkZWZhdWx0PV1BQ19FTkFCTEVfU0hBUkVEX0RFRkFVTFRbQDo+QF0pXSwKKyAgICBbcD0ke1BBQ0tBR0UtZGVmYXVsdH0KKyAgICBjYXNlICRlbmFibGV2YWwgaW4KKyAgICB5ZXMpIGVuYWJsZV9zaGFyZWQ9eWVzIDs7CisgICAgbm8pIGVuYWJsZV9zaGFyZWQ9bm8gOzsKKyAgICAqKQorICAgICAgZW5hYmxlX3NoYXJlZD1ubworICAgICAgIyBMb29rIGF0IHRoZSBhcmd1bWVudCB3ZSBnb3QuICBXZSB1c2UgYWxsIHRoZSBjb21tb24gbGlzdCBzZXBhcmF0b3JzLgorICAgICAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfSRQQVRIX1NFUEFSQVRPUiwiCisgICAgICBmb3IgcGtnIGluICRlbmFibGV2YWw7IGRvCisJSUZTPSIkbHRfc2F2ZV9pZnMiCisJaWYgdGVzdCAiWCRwa2ciID0gIlgkcCI7IHRoZW4KKwkgIGVuYWJsZV9zaGFyZWQ9eWVzCisJZmkKKyAgICAgIGRvbmUKKyAgICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICAgICAgOzsKKyAgICBlc2FjXSwKKyAgICBbZW5hYmxlX3NoYXJlZD1dQUNfRU5BQkxFX1NIQVJFRF9ERUZBVUxUKQorXSkjIEFDX0VOQUJMRV9TSEFSRUQKKworCisjIEFDX0RJU0FCTEVfU0hBUkVECisjIC0tLS0tLS0tLS0tLS0tLS0tCisjLSBzZXQgdGhlIGRlZmF1bHQgc2hhcmVkIGZsYWcgdG8gLS1kaXNhYmxlLXNoYXJlZAorQUNfREVGVU4oW0FDX0RJU0FCTEVfU0hBUkVEXSwKK1tBQ19CRUZPUkUoWyQwXSxbQUNfTElCVE9PTF9TRVRVUF0pZG5sCitBQ19FTkFCTEVfU0hBUkVEKG5vKQorXSkjIEFDX0RJU0FCTEVfU0hBUkVECisKKworIyBBQ19FTkFCTEVfU1RBVElDKFtERUZBVUxUXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGltcGxlbWVudCB0aGUgLS1lbmFibGUtc3RhdGljIGZsYWcKKyMgREVGQVVMVCBpcyBlaXRoZXIgYHllcycgb3IgYG5vJy4gIElmIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGB5ZXMnLgorQUNfREVGVU4oW0FDX0VOQUJMRV9TVEFUSUNdLAorW2RlZmluZShbQUNfRU5BQkxFX1NUQVRJQ19ERUZBVUxUXSwgaWZlbHNlKCQxLCBubywgbm8sIHllcykpZG5sCitBQ19BUkdfRU5BQkxFKFtzdGF0aWNdLAorICAgIFtBQ19IRUxQX1NUUklORyhbLS1lbmFibGUtc3RhdGljQDw6QD1QS0dTQDo+QF0sCisJW2J1aWxkIHN0YXRpYyBsaWJyYXJpZXMgQDw6QGRlZmF1bHQ9XUFDX0VOQUJMRV9TVEFUSUNfREVGQVVMVFtAOj5AXSldLAorICAgIFtwPSR7UEFDS0FHRS1kZWZhdWx0fQorICAgIGNhc2UgJGVuYWJsZXZhbCBpbgorICAgIHllcykgZW5hYmxlX3N0YXRpYz15ZXMgOzsKKyAgICBubykgZW5hYmxlX3N0YXRpYz1ubyA7OworICAgICopCisgICAgIGVuYWJsZV9zdGF0aWM9bm8KKyAgICAgICMgTG9vayBhdCB0aGUgYXJndW1lbnQgd2UgZ290LiAgV2UgdXNlIGFsbCB0aGUgY29tbW9uIGxpc3Qgc2VwYXJhdG9ycy4KKyAgICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU30kUEFUSF9TRVBBUkFUT1IsIgorICAgICAgZm9yIHBrZyBpbiAkZW5hYmxldmFsOyBkbworCUlGUz0iJGx0X3NhdmVfaWZzIgorCWlmIHRlc3QgIlgkcGtnIiA9ICJYJHAiOyB0aGVuCisJICBlbmFibGVfc3RhdGljPXllcworCWZpCisgICAgICBkb25lCisgICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICAgIDs7CisgICAgZXNhY10sCisgICAgW2VuYWJsZV9zdGF0aWM9XUFDX0VOQUJMRV9TVEFUSUNfREVGQVVMVCkKK10pIyBBQ19FTkFCTEVfU1RBVElDCisKKworIyBBQ19ESVNBQkxFX1NUQVRJQworIyAtLS0tLS0tLS0tLS0tLS0tLQorIyBzZXQgdGhlIGRlZmF1bHQgc3RhdGljIGZsYWcgdG8gLS1kaXNhYmxlLXN0YXRpYworQUNfREVGVU4oW0FDX0RJU0FCTEVfU1RBVElDXSwKK1tBQ19CRUZPUkUoWyQwXSxbQUNfTElCVE9PTF9TRVRVUF0pZG5sCitBQ19FTkFCTEVfU1RBVElDKG5vKQorXSkjIEFDX0RJU0FCTEVfU1RBVElDCisKKworIyBBQ19FTkFCTEVfRkFTVF9JTlNUQUxMKFtERUZBVUxUXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGltcGxlbWVudCB0aGUgLS1lbmFibGUtZmFzdC1pbnN0YWxsIGZsYWcKKyMgREVGQVVMVCBpcyBlaXRoZXIgYHllcycgb3IgYG5vJy4gIElmIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGB5ZXMnLgorQUNfREVGVU4oW0FDX0VOQUJMRV9GQVNUX0lOU1RBTExdLAorW2RlZmluZShbQUNfRU5BQkxFX0ZBU1RfSU5TVEFMTF9ERUZBVUxUXSwgaWZlbHNlKCQxLCBubywgbm8sIHllcykpZG5sCitBQ19BUkdfRU5BQkxFKFtmYXN0LWluc3RhbGxdLAorICAgIFtBQ19IRUxQX1NUUklORyhbLS1lbmFibGUtZmFzdC1pbnN0YWxsQDw6QD1QS0dTQDo+QF0sCisgICAgW29wdGltaXplIGZvciBmYXN0IGluc3RhbGxhdGlvbiBAPDpAZGVmYXVsdD1dQUNfRU5BQkxFX0ZBU1RfSU5TVEFMTF9ERUZBVUxUW0A6PkBdKV0sCisgICAgW3A9JHtQQUNLQUdFLWRlZmF1bHR9CisgICAgY2FzZSAkZW5hYmxldmFsIGluCisgICAgeWVzKSBlbmFibGVfZmFzdF9pbnN0YWxsPXllcyA7OworICAgIG5vKSBlbmFibGVfZmFzdF9pbnN0YWxsPW5vIDs7CisgICAgKikKKyAgICAgIGVuYWJsZV9mYXN0X2luc3RhbGw9bm8KKyAgICAgICMgTG9vayBhdCB0aGUgYXJndW1lbnQgd2UgZ290LiAgV2UgdXNlIGFsbCB0aGUgY29tbW9uIGxpc3Qgc2VwYXJhdG9ycy4KKyAgICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU30kUEFUSF9TRVBBUkFUT1IsIgorICAgICAgZm9yIHBrZyBpbiAkZW5hYmxldmFsOyBkbworCUlGUz0iJGx0X3NhdmVfaWZzIgorCWlmIHRlc3QgIlgkcGtnIiA9ICJYJHAiOyB0aGVuCisJICBlbmFibGVfZmFzdF9pbnN0YWxsPXllcworCWZpCisgICAgICBkb25lCisgICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICAgIDs7CisgICAgZXNhY10sCisgICAgW2VuYWJsZV9mYXN0X2luc3RhbGw9XUFDX0VOQUJMRV9GQVNUX0lOU1RBTExfREVGQVVMVCkKK10pIyBBQ19FTkFCTEVfRkFTVF9JTlNUQUxMCisKKworIyBBQ19ESVNBQkxFX0ZBU1RfSU5TVEFMTAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBzZXQgdGhlIGRlZmF1bHQgdG8gLS1kaXNhYmxlLWZhc3QtaW5zdGFsbAorQUNfREVGVU4oW0FDX0RJU0FCTEVfRkFTVF9JTlNUQUxMXSwKK1tBQ19CRUZPUkUoWyQwXSxbQUNfTElCVE9PTF9TRVRVUF0pZG5sCitBQ19FTkFCTEVfRkFTVF9JTlNUQUxMKG5vKQorXSkjIEFDX0RJU0FCTEVfRkFTVF9JTlNUQUxMCisKKworIyBBQ19MSUJUT09MX1BJQ01PREUoW01PREVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBpbXBsZW1lbnQgdGhlIC0td2l0aC1waWMgZmxhZworIyBNT0RFIGlzIGVpdGhlciBgeWVzJyBvciBgbm8nLiAgSWYgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gYGJvdGgnLgorQUNfREVGVU4oW0FDX0xJQlRPT0xfUElDTU9ERV0sCitbQUNfQkVGT1JFKFskMF0sW0FDX0xJQlRPT0xfU0VUVVBdKWRubAorcGljX21vZGU9aWZlbHNlKCQjLDEsJDEsZGVmYXVsdCkKK10pIyBBQ19MSUJUT09MX1BJQ01PREUKKworCisjIEFDX1BST0dfRUdSRVAKKyMgLS0tLS0tLS0tLS0tLQorIyBUaGlzIGlzIHByZWRlZmluZWQgc3RhcnRpbmcgd2l0aCBBdXRvY29uZiAyLjU0LCBzbyB0aGlzIGNvbmRpdGlvbmFsCisjIGRlZmluaXRpb24gY2FuIGJlIHJlbW92ZWQgb25jZSB3ZSByZXF1aXJlIEF1dG9jb25mIDIuNTQgb3IgbGF0ZXIuCittNF9pZm5kZWYoW0FDX1BST0dfRUdSRVBdLCBbQUNfREVGVU4oW0FDX1BST0dfRUdSRVBdLAorW0FDX0NBQ0hFX0NIRUNLKFtmb3IgZWdyZXBdLCBbYWNfY3ZfcHJvZ19lZ3JlcF0sCisgICBbaWYgZWNobyBhIHwgKGdyZXAgLUUgJyhhfGIpJykgPi9kZXYvbnVsbCAyPiYxCisgICAgdGhlbiBhY19jdl9wcm9nX2VncmVwPSdncmVwIC1FJworICAgIGVsc2UgYWNfY3ZfcHJvZ19lZ3JlcD0nZWdyZXAnCisgICAgZmldKQorIEVHUkVQPSRhY19jdl9wcm9nX2VncmVwCisgQUNfU1VCU1QoW0VHUkVQXSkKK10pXSkKKworCisjIEFDX1BBVEhfVE9PTF9QUkVGSVgKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBmaW5kIGEgZmlsZSBwcm9ncmFtIHdoaWNoIGNhbiByZWNvZ25pc2Ugc2hhcmVkIGxpYnJhcnkKK0FDX0RFRlVOKFtBQ19QQVRIX1RPT0xfUFJFRklYXSwKK1tBQ19SRVFVSVJFKFtBQ19QUk9HX0VHUkVQXSlkbmwKK0FDX01TR19DSEVDS0lORyhbZm9yICQxXSkKK0FDX0NBQ0hFX1ZBTChsdF9jdl9wYXRoX01BR0lDX0NNRCwKK1tjYXNlICRNQUdJQ19DTUQgaW4KK1tbXFwvKl0gfCAgPzpbXFwvXSpdKQorICBsdF9jdl9wYXRoX01BR0lDX0NNRD0iJE1BR0lDX0NNRCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisqKQorICBsdF9zYXZlX01BR0lDX0NNRD0iJE1BR0lDX0NNRCIKKyAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitkbmwgJGFjX2R1bW15IGZvcmNlcyBzcGxpdHRpbmcgb24gY29uc3RhbnQgdXNlci1zdXBwbGllZCBwYXRocy4KK2RubCBQT1NJWC4yIHdvcmQgc3BsaXR0aW5nIGlzIGRvbmUgb25seSBvbiB0aGUgb3V0cHV0IG9mIHdvcmQgZXhwYW5zaW9ucywKK2RubCBub3QgZXZlcnkgd29yZC4gIFRoaXMgY2xvc2VzIGEgbG9uZ3N0YW5kaW5nIHNoIHNlY3VyaXR5IGhvbGUuCisgIGFjX2R1bW15PSJpZmVsc2UoWyQyXSwgLCAkUEFUSCwgWyQyXSkiCisgIGZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbworICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICAgaWYgdGVzdCAtZiAkYWNfZGlyLyQxOyB0aGVuCisgICAgICBsdF9jdl9wYXRoX01BR0lDX0NNRD0iJGFjX2Rpci8kMSIKKyAgICAgIGlmIHRlc3QgLW4gIiRmaWxlX21hZ2ljX3Rlc3RfZmlsZSI7IHRoZW4KKwljYXNlICRkZXBsaWJzX2NoZWNrX21ldGhvZCBpbgorCSJmaWxlX21hZ2ljICIqKQorCSAgZmlsZV9tYWdpY19yZWdleD0iYGV4cHIgXCIkZGVwbGlic19jaGVja19tZXRob2RcIiA6IFwiZmlsZV9tYWdpYyBcKC4qXClcImAiCisJICBNQUdJQ19DTUQ9IiRsdF9jdl9wYXRoX01BR0lDX0NNRCIKKwkgIGlmIGV2YWwgJGZpbGVfbWFnaWNfY21kIFwkZmlsZV9tYWdpY190ZXN0X2ZpbGUgMj4gL2Rldi9udWxsIHwKKwkgICAgJEVHUkVQICIkZmlsZV9tYWdpY19yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KKwkgICAgOgorCSAgZWxzZQorCSAgICBjYXQgPDxFT0YgMT4mMgorCisqKiogV2FybmluZzogdGhlIGNvbW1hbmQgbGlidG9vbCB1c2VzIHRvIGRldGVjdCBzaGFyZWQgbGlicmFyaWVzLAorKioqICRmaWxlX21hZ2ljX2NtZCwgcHJvZHVjZXMgb3V0cHV0IHRoYXQgbGlidG9vbCBjYW5ub3QgcmVjb2duaXplLgorKioqIFRoZSByZXN1bHQgaXMgdGhhdCBsaWJ0b29sIG1heSBmYWlsIHRvIHJlY29nbml6ZSBzaGFyZWQgbGlicmFyaWVzCisqKiogYXMgc3VjaC4gIFRoaXMgd2lsbCBhZmZlY3QgdGhlIGNyZWF0aW9uIG9mIGxpYnRvb2wgbGlicmFyaWVzIHRoYXQKKyoqKiBkZXBlbmQgb24gc2hhcmVkIGxpYnJhcmllcywgYnV0IHByb2dyYW1zIGxpbmtlZCB3aXRoIHN1Y2ggbGlidG9vbAorKioqIGxpYnJhcmllcyB3aWxsIHdvcmsgcmVnYXJkbGVzcyBvZiB0aGlzIHByb2JsZW0uICBOZXZlcnRoZWxlc3MsIHlvdQorKioqIG1heSB3YW50IHRvIHJlcG9ydCB0aGUgcHJvYmxlbSB0byB5b3VyIHN5c3RlbSBtYW5hZ2VyIGFuZC9vciB0bworKioqIGJ1Zy1saWJ0b29sQGdudS5vcmcKKworRU9GCisJICBmaSA7OworCWVzYWMKKyAgICAgIGZpCisgICAgICBicmVhaworICAgIGZpCisgIGRvbmUKKyAgSUZTPSIkbHRfc2F2ZV9pZnMiCisgIE1BR0lDX0NNRD0iJGx0X3NhdmVfTUFHSUNfQ01EIgorICA7OworZXNhY10pCitNQUdJQ19DTUQ9IiRsdF9jdl9wYXRoX01BR0lDX0NNRCIKK2lmIHRlc3QgLW4gIiRNQUdJQ19DTUQiOyB0aGVuCisgIEFDX01TR19SRVNVTFQoJE1BR0lDX0NNRCkKK2Vsc2UKKyAgQUNfTVNHX1JFU1VMVChubykKK2ZpCitdKSMgQUNfUEFUSF9UT09MX1BSRUZJWAorCisKKyMgQUNfUEFUSF9NQUdJQworIyAtLS0tLS0tLS0tLS0tCisjIGZpbmQgYSBmaWxlIHByb2dyYW0gd2hpY2ggY2FuIHJlY29nbmlzZSBhIHNoYXJlZCBsaWJyYXJ5CitBQ19ERUZVTihbQUNfUEFUSF9NQUdJQ10sCitbQUNfUEFUSF9UT09MX1BSRUZJWCgke2FjX3Rvb2xfcHJlZml4fWZpbGUsIC91c3IvYmluJFBBVEhfU0VQQVJBVE9SJFBBVEgpCitpZiB0ZXN0IC16ICIkbHRfY3ZfcGF0aF9NQUdJQ19DTUQiOyB0aGVuCisgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgICBBQ19QQVRIX1RPT0xfUFJFRklYKGZpbGUsIC91c3IvYmluJFBBVEhfU0VQQVJBVE9SJFBBVEgpCisgIGVsc2UKKyAgICBNQUdJQ19DTUQ9OgorICBmaQorZmkKK10pIyBBQ19QQVRIX01BR0lDCisKKworIyBBQ19QUk9HX0xECisjIC0tLS0tLS0tLS0KKyMgZmluZCB0aGUgcGF0aG5hbWUgdG8gdGhlIEdOVSBvciBub24tR05VIGxpbmtlcgorQUNfREVGVU4oW0FDX1BST0dfTERdLAorW0FDX0FSR19XSVRIKFtnbnUtbGRdLAorICAgIFtBQ19IRUxQX1NUUklORyhbLS13aXRoLWdudS1sZF0sCisJW2Fzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBAPDpAZGVmYXVsdD1ub0A6PkBdKV0sCisgICAgW3Rlc3QgIiR3aXRodmFsIiA9IG5vIHx8IHdpdGhfZ251X2xkPXllc10sCisgICAgW3dpdGhfZ251X2xkPW5vXSkKK0FDX1JFUVVJUkUoW0xUX0FDX1BST0dfU0VEXSlkbmwKK0FDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKWRubAorQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAorQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0JVSUxEXSlkbmwKK2FjX3Byb2c9bGQKK2lmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICMgQ2hlY2sgaWYgZ2NjIC1wcmludC1wcm9nLW5hbWU9bGQgZ2l2ZXMgYSBwYXRoLgorICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBsZCB1c2VkIGJ5ICRDQ10pCisgIGNhc2UgJGhvc3QgaW4KKyAgKi0qLW1pbmd3KikKKyAgICAjIGdjYyBsZWF2ZXMgYSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gd2hpY2ggdXBzZXRzIG1pbmd3CisgICAgYWNfcHJvZz1gKCRDQyAtcHJpbnQtcHJvZy1uYW1lPWxkKSAyPiY1IHwgdHIgLWQgJ1wwMTUnYCA7OworICAqKQorICAgIGFjX3Byb2c9YCgkQ0MgLXByaW50LXByb2ctbmFtZT1sZCkgMj4mNWAgOzsKKyAgZXNhYworICBjYXNlICRhY19wcm9nIGluCisgICAgIyBBY2NlcHQgYWJzb2x1dGUgcGF0aHMuCisgICAgW1tcXC9dXSogfCA/OltbXFwvXV0qKQorICAgICAgcmVfZGlyZWx0PScvW1teL11dW1teL11dKi9cLlwuLycKKyAgICAgICMgQ2Fub25pY2FsaXplIHRoZSBwYXRobmFtZSBvZiBsZAorICAgICAgYWNfcHJvZz1gZWNobyAkYWNfcHJvZ3wgJFNFRCAncyVcXFxcJS8lZydgCisgICAgICB3aGlsZSBlY2hvICRhY19wcm9nIHwgZ3JlcCAiJHJlX2RpcmVsdCIgPiAvZGV2L251bGwgMj4mMTsgZG8KKwlhY19wcm9nPWBlY2hvICRhY19wcm9nfCAkU0VEICJzJSRyZV9kaXJlbHQlLyUiYAorICAgICAgZG9uZQorICAgICAgdGVzdCAteiAiJExEIiAmJiBMRD0iJGFjX3Byb2ciCisgICAgICA7OworICAiIikKKyAgICAjIElmIGl0IGZhaWxzLCB0aGVuIHByZXRlbmQgd2UgYXJlbid0IHVzaW5nIEdDQy4KKyAgICBhY19wcm9nPWxkCisgICAgOzsKKyAgKikKKyAgICAjIElmIGl0IGlzIHJlbGF0aXZlLCB0aGVuIHNlYXJjaCBmb3IgdGhlIGZpcnN0IGxkIGluIFBBVEguCisgICAgd2l0aF9nbnVfbGQ9dW5rbm93bgorICAgIDs7CisgIGVzYWMKK2VsaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBHTlUgbGRdKQorZWxzZQorICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBub24tR05VIGxkXSkKK2ZpCitBQ19DQUNIRV9WQUwobHRfY3ZfcGF0aF9MRCwKK1tpZiB0ZXN0IC16ICIkTEQiOyB0aGVuCisgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgorICBmb3IgYWNfZGlyIGluICRQQVRIOyBkbworICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICAgaWYgdGVzdCAtZiAiJGFjX2Rpci8kYWNfcHJvZyIgfHwgdGVzdCAtZiAiJGFjX2Rpci8kYWNfcHJvZyRhY19leGVleHQiOyB0aGVuCisgICAgICBsdF9jdl9wYXRoX0xEPSIkYWNfZGlyLyRhY19wcm9nIgorICAgICAgIyBDaGVjayB0byBzZWUgaWYgdGhlIHByb2dyYW0gaXMgR05VIGxkLiAgSSdkIHJhdGhlciB1c2UgLS12ZXJzaW9uLAorICAgICAgIyBidXQgYXBwYXJlbnRseSBzb21lIEdOVSBsZCdzIG9ubHkgYWNjZXB0IC12LgorICAgICAgIyBCcmVhayBvbmx5IGlmIGl0IHdhcyB0aGUgR05VL25vbi1HTlUgbGQgdGhhdCB3ZSBwcmVmZXIuCisgICAgICBjYXNlIGAiJGx0X2N2X3BhdGhfTEQiIC12IDI+JjEgPC9kZXYvbnVsbGAgaW4KKyAgICAgICpHTlUqIHwgKid3aXRoIEJGRCcqKQorCXRlc3QgIiR3aXRoX2dudV9sZCIgIT0gbm8gJiYgYnJlYWsKKwk7OworICAgICAgKikKKwl0ZXN0ICIkd2l0aF9nbnVfbGQiICE9IHllcyAmJiBicmVhaworCTs7CisgICAgICBlc2FjCisgICAgZmkKKyAgZG9uZQorICBJRlM9IiRsdF9zYXZlX2lmcyIKK2Vsc2UKKyAgbHRfY3ZfcGF0aF9MRD0iJExEIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KK2ZpXSkKK0xEPSIkbHRfY3ZfcGF0aF9MRCIKK2lmIHRlc3QgLW4gIiRMRCI7IHRoZW4KKyAgQUNfTVNHX1JFU1VMVCgkTEQpCitlbHNlCisgIEFDX01TR19SRVNVTFQobm8pCitmaQordGVzdCAteiAiJExEIiAmJiBBQ19NU0dfRVJST1IoW25vIGFjY2VwdGFibGUgbGQgZm91bmQgaW4gXCRQQVRIXSkKK0FDX1BST0dfTERfR05VCitdKSMgQUNfUFJPR19MRAorCisKKyMgQUNfUFJPR19MRF9HTlUKKyMgLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtBQ19QUk9HX0xEX0dOVV0sCitbQUNfUkVRVUlSRShbQUNfUFJPR19FR1JFUF0pZG5sCitBQ19DQUNIRV9DSEVDSyhbaWYgdGhlIGxpbmtlciAoJExEKSBpcyBHTlUgbGRdLCBsdF9jdl9wcm9nX2dudV9sZCwKK1sjIEknZCByYXRoZXIgdXNlIC0tdmVyc2lvbiBoZXJlLCBidXQgYXBwYXJlbnRseSBzb21lIEdOVSBsZCdzIG9ubHkgYWNjZXB0IC12LgorY2FzZSBgJExEIC12IDI+JjEgPC9kZXYvbnVsbGAgaW4KKypHTlUqIHwgKid3aXRoIEJGRCcqKQorICBsdF9jdl9wcm9nX2dudV9sZD15ZXMKKyAgOzsKKyopCisgIGx0X2N2X3Byb2dfZ251X2xkPW5vCisgIDs7Citlc2FjXSkKK3dpdGhfZ251X2xkPSRsdF9jdl9wcm9nX2dudV9sZAorXSkjIEFDX1BST0dfTERfR05VCisKKworIyBBQ19QUk9HX0xEX1JFTE9BRF9GTEFHCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgZmluZCByZWxvYWQgZmxhZyBmb3IgbGlua2VyCisjICAgLS0gUE9SVE1FIFNvbWUgbGlua2VycyBtYXkgbmVlZCBhIGRpZmZlcmVudCByZWxvYWQgZmxhZy4KK0FDX0RFRlVOKFtBQ19QUk9HX0xEX1JFTE9BRF9GTEFHXSwKK1tBQ19DQUNIRV9DSEVDSyhbZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlc10sCisgIGx0X2N2X2xkX3JlbG9hZF9mbGFnLAorICBbbHRfY3ZfbGRfcmVsb2FkX2ZsYWc9Jy1yJ10pCityZWxvYWRfZmxhZz0kbHRfY3ZfbGRfcmVsb2FkX2ZsYWcKK2Nhc2UgJHJlbG9hZF9mbGFnIGluCisiIiB8ICIgIiopIDs7CisqKSByZWxvYWRfZmxhZz0iICRyZWxvYWRfZmxhZyIgOzsKK2VzYWMKK3JlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKK10pIyBBQ19QUk9HX0xEX1JFTE9BRF9GTEFHCisKKworIyBBQ19ERVBMSUJTX0NIRUNLX01FVEhPRAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBob3cgdG8gY2hlY2sgZm9yIGxpYnJhcnkgZGVwZW5kZW5jaWVzCisjICAtLSBQT1JUTUUgZmlsbCBpbiB3aXRoIHRoZSBkeW5hbWljIGxpYnJhcnkgY2hhcmFjdGVyaXN0aWNzCitBQ19ERUZVTihbQUNfREVQTElCU19DSEVDS19NRVRIT0RdLAorW0FDX0NBQ0hFX0NIRUNLKFtob3cgdG8gcmVjb2duaXNlIGRlcGVuZGVudCBsaWJyYXJpZXNdLAorbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QsCitbbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRNQUdJQ19DTUQnCitsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0KK2x0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSd1bmtub3duJworIyBOZWVkIHRvIHNldCB0aGUgcHJlY2VkaW5nIHZhcmlhYmxlIG9uIGFsbCBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0CisjIGludGVybGlicmFyeSBkZXBlbmRlbmNpZXMuCisjICdub25lJyAtLSBkZXBlbmRlbmNpZXMgbm90IHN1cHBvcnRlZC4KKyMgYHVua25vd24nIC0tIHNhbWUgYXMgbm9uZSwgYnV0IGRvY3VtZW50cyB0aGF0IHdlIHJlYWxseSBkb24ndCBrbm93LgorIyAncGFzc19hbGwnIC0tIGFsbCBkZXBlbmRlbmNpZXMgcGFzc2VkIHdpdGggbm8gY2hlY2tzLgorIyAndGVzdF9jb21waWxlJyAtLSBjaGVjayBieSBtYWtpbmcgdGVzdCBwcm9ncmFtLgorIyAnZmlsZV9tYWdpYyBbW3JlZ2V4XV0nIC0tIGNoZWNrIGJ5IGxvb2tpbmcgZm9yIGZpbGVzIGluIGxpYnJhcnkgcGF0aAorIyB3aGljaCByZXNwb25kcyB0byB0aGUgJGZpbGVfbWFnaWNfY21kIHdpdGggYSBnaXZlbiBleHRlbmRlZCByZWdleC4KKyMgSWYgeW91IGhhdmUgYGZpbGUnIG9yIGVxdWl2YWxlbnQgb24geW91ciBzeXN0ZW0gYW5kIHlvdSdyZSBub3Qgc3VyZQorIyB3aGV0aGVyIGBwYXNzX2FsbCcgd2lsbCAqYWx3YXlzKiB3b3JrLCB5b3UgcHJvYmFibHkgd2FudCB0aGlzIG9uZS4KKworY2FzZSAkaG9zdF9vcyBpbgorYWl4NCogfCBhaXg1KikKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgOzsKKworYmVvcyopCisgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCisgIDs7CisKK2JzZGk0KikKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgRUxGIFtbMC05XV1bWzAtOV1dKi1iaXQgW1tNTF1dU0IgKHNoYXJlZCBvYmplY3R8ZHluYW1pYyBsaWIpJworICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nL3Vzci9iaW4vZmlsZSAtTCcKKyAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L3NobGliL2xpYmMuc28KKyAgOzsKKworY3lnd2luKikKKyAgIyBmdW5jX3dpbjMyX2xpYmlkIGlzIGEgc2hlbGwgZnVuY3Rpb24gZGVmaW5lZCBpbiBsdG1haW4uc2gKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKKyAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCisgIDs7CisKK21pbmd3KiB8IHB3MzIqKQorICAjIEJhc2UgTVNZUy9NaW5HVyBkbyBub3QgcHJvdmlkZSB0aGUgJ2ZpbGUnIGNvbW1hbmQgbmVlZGVkIGJ5CisgICMgZnVuY193aW4zMl9saWJpZCBzaGVsbCBmdW5jdGlvbiwgc28gdXNlIGEgd2Vha2VyIHRlc3QgYmFzZWQgb24gJ29iamR1bXAnLgorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKKyAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJworICA7OworCitkYXJ3aW4qIHwgcmhhcHNvZHkqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OworCitmcmVlYnNkKiB8IGtmcmVlYnNkKi1nbnUpCisgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgZ3JlcCBfX0VMRl9fID4gL2Rldi9udWxsOyB0aGVuCisgICAgY2FzZSAkaG9zdF9jcHUgaW4KKyAgICBpKjg2ICkKKyAgICAgICMgTm90IHN1cmUgd2hldGhlciB0aGUgcHJlc2VuY2Ugb2YgT3BlbkJTRCBoZXJlIHdhcyBhIG1pc3Rha2UuCisgICAgICAjIExldCdzIGFjY2VwdCBib3RoIG9mIHRoZW0gdW50aWwgdGhpcyBpcyBjbGVhcmVkIHVwLgorICAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKEZyZWVCU0R8T3BlbkJTRCkvaVtbMy05XV04NiAoY29tcGFjdCApP2RlbWFuZCBwYWdlZCBzaGFyZWQgbGlicmFyeScKKyAgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPS91c3IvYmluL2ZpbGUKKyAgICAgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPWBlY2hvIC91c3IvbGliL2xpYmMuc28uKmAKKyAgICAgIDs7CisgICAgZXNhYworICBlbHNlCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgZmkKKyAgOzsKKworZ251KikKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgOzsKKworaHB1eDEwLjIwKiB8IGhwdXgxMSopCisgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPS91c3IvYmluL2ZpbGUKKyAgY2FzZSAiJGhvc3RfY3B1IiBpbgorICBpYTY0KikKKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1tbMC05XV1bWzAtOV1dW1swLTldXXxFTEYtW1swLTldXVtbMC05XV0pIHNoYXJlZCBvYmplY3QgZmlsZSAtIElBNjQnCisgICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L3Vzci9saWIvaHB1eDMyL2xpYmMuc28KKyAgICA7OworICBocHBhKjY0KikKKyAgICBbbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKHNbMC05XVswLTldWzAtOV18RUxGLVswLTldWzAtOV0pIHNoYXJlZCBvYmplY3QgZmlsZSAtIFBBLVJJU0MgWzAtOV0uWzAtOV0nXQorICAgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS91c3IvbGliL3BhMjBfNjQvbGliYy5zbAorICAgIDs7CisgICopCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKHNbWzAtOV1dW1swLTldXVtbMC05XV18UEEtUklTQ1tbMC05XV0uW1swLTldXSkgc2hhcmVkIGxpYnJhcnknCisgICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L3Vzci9saWIvbGliYy5zbAorICAgIDs7CisgIGVzYWMKKyAgOzsKKworaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgY2FzZSAkTEQgaW4KKyAgKi0zMnwqIi0zMiAiKSBsaWJtYWdpYz0zMi1iaXQ7OworICAqLW4zMnwqIi1uMzIgIikgbGlibWFnaWM9TjMyOzsKKyAgKi02NHwqIi02NCAiKSBsaWJtYWdpYz02NC1iaXQ7OworICAqKSBsaWJtYWdpYz1uZXZlci1tYXRjaDs7CisgIGVzYWMKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgOzsKKworIyBUaGlzIG11c3QgYmUgTGludXggRUxGLgorbGludXgqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OworCituZXRic2QqIHwgbmV0YnNkZWxmKi1nbnUgfCBrbmV0YnNkKi1nbnUpCisgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgZ3JlcCBfX0VMRl9fID4gL2Rldi9udWxsOyB0aGVuCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J21hdGNoX3BhdHRlcm4gL2xpYltbXi9dXSsoXC5zb1wuW1swLTldXStcLltbMC05XV0rfF9waWNcLmEpJCcKKyAgZWxzZQorICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbW14vXV0rKFwuc298X3BpY1wuYSkkJworICBmaQorICA7OworCituZXdvczYqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBFTEYgW1swLTldXVtbMC05XV0qLWJpdCBbW01MXV1TQiAoZXhlY3V0YWJsZXxkeW5hbWljIGxpYiknCisgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPS91c3IvYmluL2ZpbGUKKyAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L3Vzci9saWIvbGlibmxzLnNvCisgIDs7CisKK250by1xbngqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCisgIDs7CisKK29wZW5ic2QqKQorICBsdF9jdl9maWxlX21hZ2ljX2NtZD0vdXNyL2Jpbi9maWxlCisgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPWBlY2hvIC91c3IvbGliL2xpYmMuc28uKmAKKyAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgZ3JlcCBfX0VMRl9fYCIgfHwgdGVzdCAiJGhvc3Rfb3MtJGhvc3RfY3B1IiA9ICJvcGVuYnNkMi44LXBvd2VycGMiOyB0aGVuCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgRUxGIFtbMC05XV1bWzAtOV1dKi1iaXQgW1tMTV1dU0Igc2hhcmVkIG9iamVjdCcKKyAgZWxzZQorICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIE9wZW5CU0QuKiBzaGFyZWQgbGlicmFyeScKKyAgZmkKKyAgOzsKKworb3NmMyogfCBvc2Y0KiB8IG9zZjUqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OworCitzY28zLjJ2NSopCisgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCisgIDs7CisKK3NvbGFyaXMqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OworCitzeXN2NCB8IHN5c3Y0LjJ1dzIqIHwgc3lzdjQuMyogfCBzeXN2NSopCisgIGNhc2UgJGhvc3RfdmVuZG9yIGluCisgIG1vdG9yb2xhKQorICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIEVMRiBbWzAtOV1dW1swLTldXSotYml0IFtbTUxdXVNCIChzaGFyZWQgb2JqZWN0fGR5bmFtaWMgbGliKSBNW1swLTldXVtbMC05XV0qIFZlcnNpb24gW1swLTldXScKKyAgICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT1gZWNobyAvdXNyL2xpYi9saWJjLnNvKmAKKyAgICA7OworICBuY3IpCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgICA7OworICBzZXF1ZW50KQorICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPScvYmluL2ZpbGUnCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgRUxGIFtbMC05XV1bWzAtOV1dKi1iaXQgW1tMTV1dU0IgKHNoYXJlZCBvYmplY3R8ZHluYW1pYyBsaWIgKScKKyAgICA7OworICBzbmkpCisgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9Jy9iaW4vZmlsZScKKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0iZmlsZV9tYWdpYyBFTEYgW1swLTldXVtbMC05XV0qLWJpdCBbW0xNXV1TQiBkeW5hbWljIGxpYiIKKyAgICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0vbGliL2xpYmMuc28KKyAgICA7OworICBzaWVtZW5zKQorICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCisgICAgOzsKKyAgZXNhYworICA7OworCitzeXN2NU9wZW5VTklYOCogfCBzeXN2NVVuaXhXYXJlNyogfCBzeXN2NXV3W1s3OF1dKiB8IHVuaXh3YXJlNyogfCBzeXN2NCp1dzIqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OworZXNhYworXSkKK2ZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAorZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCit0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KK10pIyBBQ19ERVBMSUJTX0NIRUNLX01FVEhPRAorCisKKyMgQUNfUFJPR19OTQorIyAtLS0tLS0tLS0tCisjIGZpbmQgdGhlIHBhdGhuYW1lIHRvIGEgQlNELWNvbXBhdGlibGUgbmFtZSBsaXN0ZXIKK0FDX0RFRlVOKFtBQ19QUk9HX05NXSwKK1tBQ19DQUNIRV9DSEVDSyhbZm9yIEJTRC1jb21wYXRpYmxlIG5tXSwgbHRfY3ZfcGF0aF9OTSwKK1tpZiB0ZXN0IC1uICIkTk0iOyB0aGVuCisgICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorICBsdF9jdl9wYXRoX05NPSIkTk0iCitlbHNlCisgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgorICBmb3IgYWNfZGlyIGluICRQQVRIIC91c3IvY2NzL2JpbiAvdXNyL3VjYiAvYmluOyBkbworICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICAgdG1wX25tPSIkYWNfZGlyLyR7YWNfdG9vbF9wcmVmaXh9bm0iCisgICAgaWYgdGVzdCAtZiAiJHRtcF9ubSIgfHwgdGVzdCAtZiAiJHRtcF9ubSRhY19leGVleHQiIDsgdGhlbgorICAgICAgIyBDaGVjayB0byBzZWUgaWYgdGhlIG5tIGFjY2VwdHMgYSBCU0QtY29tcGF0IGZsYWcuCisgICAgICAjIEFkZGluZyB0aGUgYHNlZCAxcScgcHJldmVudHMgZmFsc2UgcG9zaXRpdmVzIG9uIEhQLVVYLCB3aGljaCBzYXlzOgorICAgICAgIyAgIG5tOiB1bmtub3duIG9wdGlvbiAiQiIgaWdub3JlZAorICAgICAgIyBUcnU2NCdzIG5tIGNvbXBsYWlucyB0aGF0IC9kZXYvbnVsbCBpcyBhbiBpbnZhbGlkIG9iamVjdCBmaWxlCisgICAgICBjYXNlIGAiJHRtcF9ubSIgLUIgL2Rldi9udWxsIDI+JjEgfCBzZWQgJzFxJ2AgaW4KKyAgICAgICovZGV2L251bGwqIHwgKidJbnZhbGlkIGZpbGUgb3Igb2JqZWN0IHR5cGUnKikKKwlsdF9jdl9wYXRoX05NPSIkdG1wX25tIC1CIgorCWJyZWFrCisgICAgICAgIDs7CisgICAgICAqKQorCWNhc2UgYCIkdG1wX25tIiAtcCAvZGV2L251bGwgMj4mMSB8IHNlZCAnMXEnYCBpbgorCSovZGV2L251bGwqKQorCSAgbHRfY3ZfcGF0aF9OTT0iJHRtcF9ubSAtcCIKKwkgIGJyZWFrCisJICA7OworCSopCisJICBsdF9jdl9wYXRoX05NPSR7bHRfY3ZfcGF0aF9OTT0iJHRtcF9ubSJ9ICMga2VlcCB0aGUgZmlyc3QgbWF0Y2gsIGJ1dAorCSAgY29udGludWUgIyBzbyB0aGF0IHdlIGNhbiB0cnkgdG8gZmluZCBvbmUgdGhhdCBzdXBwb3J0cyBCU0QgZmxhZ3MKKwkgIDs7CisJZXNhYworICAgICAgZXNhYworICAgIGZpCisgIGRvbmUKKyAgSUZTPSIkbHRfc2F2ZV9pZnMiCisgIHRlc3QgLXogIiRsdF9jdl9wYXRoX05NIiAmJiBsdF9jdl9wYXRoX05NPW5tCitmaV0pCitOTT0iJGx0X2N2X3BhdGhfTk0iCitdKSMgQUNfUFJPR19OTQorCisKKyMgQUNfQ0hFQ0tfTElCTQorIyAtLS0tLS0tLS0tLS0tCisjIGNoZWNrIGZvciBtYXRoIGxpYnJhcnkKK0FDX0RFRlVOKFtBQ19DSEVDS19MSUJNXSwKK1tBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCitMSUJNPQorY2FzZSAkaG9zdCBpbgorKi0qLWJlb3MqIHwgKi0qLWN5Z3dpbiogfCAqLSotcHczMiogfCAqLSotZGFyd2luKikKKyAgIyBUaGVzZSBzeXN0ZW0gZG9uJ3QgaGF2ZSBsaWJtLCBvciBkb24ndCBuZWVkIGl0CisgIDs7CisqLW5jci1zeXN2NC4zKikKKyAgQUNfQ0hFQ0tfTElCKG13LCBfbXd2YWxpZGNoZWNrbCwgTElCTT0iLWxtdyIpCisgIEFDX0NIRUNLX0xJQihtLCBjb3MsIExJQk09IiRMSUJNIC1sbSIpCisgIDs7CisqKQorICBBQ19DSEVDS19MSUIobSwgY29zLCBMSUJNPSItbG0iKQorICA7OworZXNhYworXSkjIEFDX0NIRUNLX0xJQk0KKworCisjIEFDX0xJQkxURExfQ09OVkVOSUVOQ0UoW0RJUkVDVE9SWV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIHNldHMgTElCTFRETCB0byB0aGUgbGluayBmbGFncyBmb3IgdGhlIGxpYmx0ZGwgY29udmVuaWVuY2UgbGlicmFyeSBhbmQKKyMgTFRETElOQ0wgdG8gdGhlIGluY2x1ZGUgZmxhZ3MgZm9yIHRoZSBsaWJsdGRsIGhlYWRlciBhbmQgYWRkcworIyAtLWVuYWJsZS1sdGRsLWNvbnZlbmllbmNlIHRvIHRoZSBjb25maWd1cmUgYXJndW1lbnRzLiAgTm90ZSB0aGF0IExJQkxUREwKKyMgYW5kIExURExJTkNMIGFyZSBub3QgQUNfU1VCU1RlZCwgbm9yIGlzIEFDX0NPTkZJR19TVUJESVJTIGNhbGxlZC4gIElmCisjIERJUkVDVE9SWSBpcyBub3QgcHJvdmlkZWQsIGl0IGlzIGFzc3VtZWQgdG8gYmUgYGxpYmx0ZGwnLiAgTElCTFRETCB3aWxsCisjIGJlIHByZWZpeGVkIHdpdGggJyR7dG9wX2J1aWxkZGlyfS8nIGFuZCBMVERMSU5DTCB3aWxsIGJlIHByZWZpeGVkIHdpdGgKKyMgJyR7dG9wX3NyY2Rpcn0vJyAobm90ZSB0aGUgc2luZ2xlIHF1b3RlcyEpLiAgSWYgeW91ciBwYWNrYWdlIGlzIG5vdAorIyBmbGF0IGFuZCB5b3UncmUgbm90IHVzaW5nIGF1dG9tYWtlLCBkZWZpbmUgdG9wX2J1aWxkZGlyIGFuZAorIyB0b3Bfc3JjZGlyIGFwcHJvcHJpYXRlbHkgaW4gdGhlIE1ha2VmaWxlcy4KK0FDX0RFRlVOKFtBQ19MSUJMVERMX0NPTlZFTklFTkNFXSwKK1tBQ19CRUZPUkUoWyQwXSxbQUNfTElCVE9PTF9TRVRVUF0pZG5sCisgIGNhc2UgJGVuYWJsZV9sdGRsX2NvbnZlbmllbmNlIGluCisgIG5vKSBBQ19NU0dfRVJST1IoW3RoaXMgcGFja2FnZSBuZWVkcyBhIGNvbnZlbmllbmNlIGxpYmx0ZGxdKSA7OworICAiIikgZW5hYmxlX2x0ZGxfY29udmVuaWVuY2U9eWVzCisgICAgICBhY19jb25maWd1cmVfYXJncz0iJGFjX2NvbmZpZ3VyZV9hcmdzIC0tZW5hYmxlLWx0ZGwtY29udmVuaWVuY2UiIDs7CisgIGVzYWMKKyAgTElCTFRETD0nJHt0b3BfYnVpbGRkaXJ9LydpZmVsc2UoJCMsMSxbJDFdLFsnbGlibHRkbCddKS9saWJsdGRsYy5sYQorICBMVERMSU5DTD0nLUkke3RvcF9zcmNkaXJ9LydpZmVsc2UoJCMsMSxbJDFdLFsnbGlibHRkbCddKQorICAjIEZvciBiYWNrd2FyZHMgbm9uLWdldHRleHQgY29uc2lzdGVudCBjb21wYXRpYmlsaXR5Li4uCisgIElOQ0xUREw9IiRMVERMSU5DTCIKK10pIyBBQ19MSUJMVERMX0NPTlZFTklFTkNFCisKKworIyBBQ19MSUJMVERMX0lOU1RBTExBQkxFKFtESVJFQ1RPUlldKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBzZXRzIExJQkxUREwgdG8gdGhlIGxpbmsgZmxhZ3MgZm9yIHRoZSBsaWJsdGRsIGluc3RhbGxhYmxlIGxpYnJhcnkgYW5kCisjIExURExJTkNMIHRvIHRoZSBpbmNsdWRlIGZsYWdzIGZvciB0aGUgbGlibHRkbCBoZWFkZXIgYW5kIGFkZHMKKyMgLS1lbmFibGUtbHRkbC1pbnN0YWxsIHRvIHRoZSBjb25maWd1cmUgYXJndW1lbnRzLiAgTm90ZSB0aGF0IExJQkxUREwKKyMgYW5kIExURExJTkNMIGFyZSBub3QgQUNfU1VCU1RlZCwgbm9yIGlzIEFDX0NPTkZJR19TVUJESVJTIGNhbGxlZC4gIElmCisjIERJUkVDVE9SWSBpcyBub3QgcHJvdmlkZWQgYW5kIGFuIGluc3RhbGxlZCBsaWJsdGRsIGlzIG5vdCBmb3VuZCwgaXQgaXMKKyMgYXNzdW1lZCB0byBiZSBgbGlibHRkbCcuICBMSUJMVERMIHdpbGwgYmUgcHJlZml4ZWQgd2l0aCAnJHt0b3BfYnVpbGRkaXJ9LycKKyMgYW5kIExURExJTkNMIHdpbGwgYmUgcHJlZml4ZWQgd2l0aCAnJHt0b3Bfc3JjZGlyfS8nIChub3RlIHRoZSBzaW5nbGUKKyMgcXVvdGVzISkuICBJZiB5b3VyIHBhY2thZ2UgaXMgbm90IGZsYXQgYW5kIHlvdSdyZSBub3QgdXNpbmcgYXV0b21ha2UsCisjIGRlZmluZSB0b3BfYnVpbGRkaXIgYW5kIHRvcF9zcmNkaXIgYXBwcm9wcmlhdGVseSBpbiB0aGUgTWFrZWZpbGVzLgorIyBJbiB0aGUgZnV0dXJlLCB0aGlzIG1hY3JvIG1heSBoYXZlIHRvIGJlIGNhbGxlZCBhZnRlciBBQ19QUk9HX0xJQlRPT0wuCitBQ19ERUZVTihbQUNfTElCTFRETF9JTlNUQUxMQUJMRV0sCitbQUNfQkVGT1JFKFskMF0sW0FDX0xJQlRPT0xfU0VUVVBdKWRubAorICBBQ19DSEVDS19MSUIobHRkbCwgbHRfZGxpbml0LAorICBbdGVzdCB4IiRlbmFibGVfbHRkbF9pbnN0YWxsIiAhPSB4eWVzICYmIGVuYWJsZV9sdGRsX2luc3RhbGw9bm9dLAorICBbaWYgdGVzdCB4IiRlbmFibGVfbHRkbF9pbnN0YWxsIiA9IHhubzsgdGhlbgorICAgICBBQ19NU0dfV0FSTihbbGlibHRkbCBub3QgaW5zdGFsbGVkLCBidXQgaW5zdGFsbGF0aW9uIGRpc2FibGVkXSkKKyAgIGVsc2UKKyAgICAgZW5hYmxlX2x0ZGxfaW5zdGFsbD15ZXMKKyAgIGZpCisgIF0pCisgIGlmIHRlc3QgeCIkZW5hYmxlX2x0ZGxfaW5zdGFsbCIgPSB4InllcyI7IHRoZW4KKyAgICBhY19jb25maWd1cmVfYXJncz0iJGFjX2NvbmZpZ3VyZV9hcmdzIC0tZW5hYmxlLWx0ZGwtaW5zdGFsbCIKKyAgICBMSUJMVERMPScke3RvcF9idWlsZGRpcn0vJ2lmZWxzZSgkIywxLFskMV0sWydsaWJsdGRsJ10pL2xpYmx0ZGwubGEKKyAgICBMVERMSU5DTD0nLUkke3RvcF9zcmNkaXJ9LydpZmVsc2UoJCMsMSxbJDFdLFsnbGlibHRkbCddKQorICBlbHNlCisgICAgYWNfY29uZmlndXJlX2FyZ3M9IiRhY19jb25maWd1cmVfYXJncyAtLWVuYWJsZS1sdGRsLWluc3RhbGw9bm8iCisgICAgTElCTFRETD0iLWxsdGRsIgorICAgIExURExJTkNMPQorICBmaQorICAjIEZvciBiYWNrd2FyZHMgbm9uLWdldHRleHQgY29uc2lzdGVudCBjb21wYXRpYmlsaXR5Li4uCisgIElOQ0xUREw9IiRMVERMSU5DTCIKK10pIyBBQ19MSUJMVERMX0lOU1RBTExBQkxFCisKKworIyBBQ19MSUJUT09MX0NYWAorIyAtLS0tLS0tLS0tLS0tLQorIyBlbmFibGUgc3VwcG9ydCBmb3IgQysrIGxpYnJhcmllcworQUNfREVGVU4oW0FDX0xJQlRPT0xfQ1hYXSwKK1tBQ19SRVFVSVJFKFtfTFRfQUNfTEFOR19DWFhdKQorXSkjIEFDX0xJQlRPT0xfQ1hYCisKKworIyBfTFRfQUNfTEFOR19DWFgKKyMgLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbX0xUX0FDX0xBTkdfQ1hYXSwKK1tBQ19SRVFVSVJFKFtBQ19QUk9HX0NYWF0pCitBQ19SRVFVSVJFKFtBQ19QUk9HX0NYWENQUF0pCitfTFRfQUNfU0hFTExfSU5JVChbdGFnbmFtZXM9JHt0YWduYW1lcyske3RhZ25hbWVzfSx9Q1hYXSkKK10pIyBfTFRfQUNfTEFOR19DWFgKKworCisjIEFDX0xJQlRPT0xfRjc3CisjIC0tLS0tLS0tLS0tLS0tCisjIGVuYWJsZSBzdXBwb3J0IGZvciBGb3J0cmFuIDc3IGxpYnJhcmllcworQUNfREVGVU4oW0FDX0xJQlRPT0xfRjc3XSwKK1tBQ19SRVFVSVJFKFtfTFRfQUNfTEFOR19GNzddKQorXSkjIEFDX0xJQlRPT0xfRjc3CisKKworIyBfTFRfQUNfTEFOR19GNzcKKyMgLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbX0xUX0FDX0xBTkdfRjc3XSwKK1tBQ19SRVFVSVJFKFtBQ19QUk9HX0Y3N10pCitfTFRfQUNfU0hFTExfSU5JVChbdGFnbmFtZXM9JHt0YWduYW1lcyske3RhZ25hbWVzfSx9Rjc3XSkKK10pIyBfTFRfQUNfTEFOR19GNzcKKworCisjIEFDX0xJQlRPT0xfR0NKCisjIC0tLS0tLS0tLS0tLS0tCisjIGVuYWJsZSBzdXBwb3J0IGZvciBHQ0ogbGlicmFyaWVzCitBQ19ERUZVTihbQUNfTElCVE9PTF9HQ0pdLAorW0FDX1JFUVVJUkUoW19MVF9BQ19MQU5HX0dDSl0pCitdKSMgQUNfTElCVE9PTF9HQ0oKKworCisjIF9MVF9BQ19MQU5HX0dDSgorIyAtLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtfTFRfQUNfTEFOR19HQ0pdLAorW0FDX1BST1ZJREVfSUZFTFNFKFtBQ19QUk9HX0dDSl0sW10sCisgIFtBQ19QUk9WSURFX0lGRUxTRShbQV1bTV9QUk9HX0dDSl0sW10sCisgICAgW0FDX1BST1ZJREVfSUZFTFNFKFtMVF9BQ19QUk9HX0dDSl0sW10sCisgICAgICBbaWZkZWYoW0FDX1BST0dfR0NKXSxbQUNfUkVRVUlSRShbQUNfUFJPR19HQ0pdKV0sCisJIFtpZmRlZihbQV1bTV9QUk9HX0dDSl0sW0FDX1JFUVVJUkUoW0FdW01fUFJPR19HQ0pdKV0sCisJICAgW0FDX1JFUVVJUkUoW0FdW0NfUFJPR19HQ0pfT1JfQV1bTV9QUk9HX0dDSl0pXSldKV0pXSldKQorX0xUX0FDX1NIRUxMX0lOSVQoW3RhZ25hbWVzPSR7dGFnbmFtZXMrJHt0YWduYW1lc30sfUdDSl0pCitdKSMgX0xUX0FDX0xBTkdfR0NKCisKKworIyBBQ19MSUJUT09MX1JDCisjIC0tLS0tLS0tLS0tLS0tCisjIGVuYWJsZSBzdXBwb3J0IGZvciBXaW5kb3dzIHJlc291cmNlIGZpbGVzCitBQ19ERUZVTihbQUNfTElCVE9PTF9SQ10sCitbQUNfUkVRVUlSRShbTFRfQUNfUFJPR19SQ10pCitfTFRfQUNfU0hFTExfSU5JVChbdGFnbmFtZXM9JHt0YWduYW1lcyske3RhZ25hbWVzfSx9UkNdKQorXSkjIEFDX0xJQlRPT0xfUkMKKworCisjIEFDX0xJQlRPT0xfTEFOR19DX0NPTkZJRworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFycyBmb3IgdGhlIEMgY29tcGlsZXIgYXJlCisjIHN1aXRhYmx5IGRlZmluZWQuICBUaG9zZSB2YXJpYWJsZXMgYXJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5CisjIEFDX0xJQlRPT0xfQ09ORklHIHRvIHdyaXRlIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KK0FDX0RFRlVOKFtBQ19MSUJUT09MX0xBTkdfQ19DT05GSUddLCBbX0xUX0FDX0xBTkdfQ19DT05GSUddKQorQUNfREVGVU4oW19MVF9BQ19MQU5HX0NfQ09ORklHXSwKK1tsdF9zYXZlX0NDPSIkQ0MiCitBQ19MQU5HX1BVU0goQykKKworIyBTb3VyY2UgZmlsZSBleHRlbnNpb24gZm9yIEMgdGVzdCBzb3VyY2VzLgorYWNfZXh0PWMKKworIyBPYmplY3QgZmlsZSBleHRlbnNpb24gZm9yIGNvbXBpbGVkIEMgdGVzdCBzb3VyY2VzLgorb2JqZXh0PW8KK19MVF9BQ19UQUdWQVIob2JqZXh0LCAkMSk9JG9iamV4dAorCisjIENvZGUgdG8gYmUgdXNlZCBpbiBzaW1wbGUgY29tcGlsZSB0ZXN0cworbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlPSJpbnQgc29tZV92YXJpYWJsZSA9IDA7XG4iCisKKyMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBsaW5rIHRlc3RzCitsdF9zaW1wbGVfbGlua190ZXN0X2NvZGU9J2ludCBtYWluKCl7cmV0dXJuKDApO31cbicKKworX0xUX0FDX1NZU19DT01QSUxFUgorCisjCisjIENoZWNrIGZvciBhbnkgc3BlY2lhbCBzaGFyZWQgbGlicmFyeSBjb21waWxhdGlvbiBmbGFncy4KKyMKK19MVF9BQ19UQUdWQVIobHRfcHJvZ19jY19zaGxpYiwgJDEpPQoraWYgdGVzdCAiJEdDQyIgPSBubzsgdGhlbgorICBjYXNlICRob3N0X29zIGluCisgIHNjbzMuMnY1KikKKyAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY2Nfc2hsaWIsICQxKT0nLWJlbGYnCisgICAgOzsKKyAgZXNhYworZmkKK2lmIHRlc3QgLW4gIiRfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY2Nfc2hsaWIsICQxKSI7IHRoZW4KKyAgQUNfTVNHX1dBUk4oW2AkQ0MnIHJlcXVpcmVzIGAkX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NjX3NobGliLCAkMSknIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXNdKQorICBpZiBlY2hvICIkb2xkX0NDICRvbGRfQ0ZMQUdTICIgfCBncmVwICJbWyAJXV0kX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NjX3NobGliLCAkMSlbWyAJXV0iID4vZGV2L251bGw7IHRoZW4gOgorICBlbHNlCisgICAgQUNfTVNHX1dBUk4oW2FkZCBgJF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jY19zaGxpYiwgJDEpJyB0byB0aGUgQ0Mgb3IgQ0ZMQUdTIGVudiB2YXJpYWJsZSBhbmQgcmVjb25maWd1cmVdKQorICAgIF9MVF9BQ19UQUdWQVIobHRfY3ZfcHJvZ19jY19jYW5fYnVpbGRfc2hhcmVkLCAkMSk9bm8KKyAgZmkKK2ZpCisKKworIworIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorIworQUNfTElCVE9PTF9MSU5LRVJfT1BUSU9OKFtpZiAkY29tcGlsZXIgc3RhdGljIGZsYWcgJF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKSB3b3Jrc10sCisgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWNfd29ya3MsICQxKSwKKyAgJF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKSwKKyAgW10sCisgIFtfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9XSkKKworCitBQ19MSUJUT09MX1BST0dfQ09NUElMRVJfTk9fUlRUSSgkMSkKK0FDX0xJQlRPT0xfUFJPR19DT01QSUxFUl9QSUMoJDEpCitBQ19MSUJUT09MX1BST0dfQ0NfQ19PKCQxKQorQUNfTElCVE9PTF9TWVNfSEFSRF9MSU5LX0xPQ0tTKCQxKQorQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUygkMSkKK0FDX0xJQlRPT0xfU1lTX0RZTkFNSUNfTElOS0VSKCQxKQorQUNfTElCVE9PTF9QUk9HX0xEX0hBUkRDT0RFX0xJQlBBVEgoJDEpCitBQ19MSUJUT09MX1NZU19MSUJfU1RSSVAKK0FDX0xJQlRPT0xfRExPUEVOX1NFTEYoJDEpCisKKyMgUmVwb3J0IHdoaWNoIGxpYnJhcmllIHR5cGVzIHdpbCBhY3R1YWxseSBiZSBidWlsdAorQUNfTVNHX0NIRUNLSU5HKFtpZiBsaWJ0b29sIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZXNdKQorQUNfTVNHX1JFU1VMVChbJGNhbl9idWlsZF9zaGFyZWRdKQorCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllc10pCit0ZXN0ICIkY2FuX2J1aWxkX3NoYXJlZCIgPSAibm8iICYmIGVuYWJsZV9zaGFyZWQ9bm8KKworIyBPbiBBSVgsIHNoYXJlZCBsaWJyYXJpZXMgYW5kIHN0YXRpYyBsaWJyYXJpZXMgdXNlIHRoZSBzYW1lIG5hbWVzcGFjZSwgYW5kCisjIGFyZSBhbGwgYnVpbHQgZnJvbSBQSUMuCitjYXNlICIkaG9zdF9vcyIgaW4KK2FpeDMqKQorICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgJiYgZW5hYmxlX3N0YXRpYz1ubworICBpZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbgorICAgIGFyY2hpdmVfY21kcz0iJGFyY2hpdmVfY21kc35cJFJBTkxJQiBcJGxpYiIKKyAgICBwb3N0aW5zdGFsbF9jbWRzPSckUkFOTElCICRsaWInCisgIGZpCisgIDs7CisKK2FpeDQqIHwgYWl4NSopCisgIGlmIHRlc3QgIiRob3N0X2NwdSIgIT0gaWE2NCAmJiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSBubyA7IHRoZW4KKyAgICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgJiYgZW5hYmxlX3N0YXRpYz1ubworICBmaQorICA7OworICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubworICAgIGNhc2UgIiRob3N0X29zIiBpbgorICAgIHJoYXBzb2R5KiB8IGRhcndpbjEuW1swMTJdXSkKKyAgICAgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nLXVuZGVmaW5lZCBzdXBwcmVzcycKKyAgICAgIDs7CisgICAgKikgIyBEYXJ3aW4gMS4zIG9uCisgICAgICBpZiB0ZXN0IC16ICR7TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUfSA7IHRoZW4KKyAgICAgIAlfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1mbGF0X25hbWVzcGFjZSAtdW5kZWZpbmVkIHN1cHByZXNzJworICAgICAgZWxzZQorICAgICAgICBjYXNlICR7TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUfSBpbgorICAgICAgICAgIDEwLltbMDEyXV0pCisgICAgICAgICAgICBfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1mbGF0X25hbWVzcGFjZSAtdW5kZWZpbmVkIHN1cHByZXNzJworICAgICAgICAgICAgOzsKKyAgICAgICAgICAxMC4qKQorICAgICAgICAgICAgX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSctdW5kZWZpbmVkIGR5bmFtaWNfbG9va3VwJworICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgZmkKKyAgICAgIDs7CisgICAgZXNhYworICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSdlY2hvJworICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtZHluYW1pY2xpYiAkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lICRycGF0aC8kc29uYW1lICR2ZXJzdHJpbmcnCisgICAgX0xUX0FDX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpPSckQ0MgJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vICRsaWIgLWJ1bmRsZSAkbGlib2JqcyAkZGVwbGlicyRjb21waWxlcl9mbGFncycKKyAgICAjIERvbid0IGZpeCB0aGlzIGJ5IHVzaW5nIHRoZSBsZCAtZXhwb3J0ZWRfc3ltYm9sc19saXN0IGZsYWcsIGl0IGRvZXNuJ3QgZXhpc3QgaW4gb2xkZXIgZGFyd2luIGxkJ3MKKyAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nc2VkIC1lICJzLCMuKiwsIiAtZSAicyxeWyAgICBdKiwsIiAtZSAicyxeXCguLipcKSxfJiwiIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bX4kQ0MgLWR5bmFtaWNsaWIgJGFsbG93X3VuZGVmaW5lZF9mbGFnICAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgJHJwYXRoLyRzb25hbWUgJHZlcnN0cmluZ35ubWVkaXQgLXMgJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bSAke2xpYn0nCisgICAgX0xUX0FDX1RBR1ZBUihtb2R1bGVfZXhwc3ltX2NtZHMsICQxKT0nc2VkIC1lICJzLCMuKiwsIiAtZSAicyxeWyAgICBdKiwsIiAtZSAicyxeXCguLipcKSxfJiwiIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bX4kQ0MgJGFsbG93X3VuZGVmaW5lZF9mbGFnICAtbyAkbGliIC1idW5kbGUgJGxpYm9ianMgJGRlcGxpYnMkY29tcGlsZXJfZmxhZ3N+bm1lZGl0IC1zICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0tc3ltYm9scy5leHBzeW0gJHtsaWJ9JworICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KKyAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2F1dG9tYXRpYywgJDEpPXllcworICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPXVuc3VwcG9ydGVkCisgICAgX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSctYWxsX2xvYWQgJGNvbnZlbmllbmNlJworICAgIF9MVF9BQ19UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcworICBlbHNlCisgICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICBmaQorICAgIDs7Citlc2FjCitBQ19NU0dfUkVTVUxUKFskZW5hYmxlX3NoYXJlZF0pCisKK0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBidWlsZCBzdGF0aWMgbGlicmFyaWVzXSkKKyMgTWFrZSBzdXJlIGVpdGhlciBlbmFibGVfc2hhcmVkIG9yIGVuYWJsZV9zdGF0aWMgaXMgeWVzLgordGVzdCAiJGVuYWJsZV9zaGFyZWQiID0geWVzIHx8IGVuYWJsZV9zdGF0aWM9eWVzCitBQ19NU0dfUkVTVUxUKFskZW5hYmxlX3N0YXRpY10pCisKK0FDX0xJQlRPT0xfQ09ORklHKCQxKQorCitBQ19MQU5HX1BPUAorQ0M9IiRsdF9zYXZlX0NDIgorXSkjIEFDX0xJQlRPT0xfTEFOR19DX0NPTkZJRworCisKKyMgQUNfTElCVE9PTF9MQU5HX0NYWF9DT05GSUcKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFycyBmb3IgdGhlIEMgY29tcGlsZXIgYXJlCisjIHN1aXRhYmx5IGRlZmluZWQuICBUaG9zZSB2YXJpYWJsZXMgYXJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5CisjIEFDX0xJQlRPT0xfQ09ORklHIHRvIHdyaXRlIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KK0FDX0RFRlVOKFtBQ19MSUJUT09MX0xBTkdfQ1hYX0NPTkZJR10sIFtfTFRfQUNfTEFOR19DWFhfQ09ORklHKENYWCldKQorQUNfREVGVU4oW19MVF9BQ19MQU5HX0NYWF9DT05GSUddLAorW0FDX0xBTkdfUFVTSChDKyspCitBQ19SRVFVSVJFKFtBQ19QUk9HX0NYWF0pCitBQ19SRVFVSVJFKFtBQ19QUk9HX0NYWENQUF0pCisKK19MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubworX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQorX0xUX0FDX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubworX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9CitfTFRfQUNfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPQorX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubworX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9CitfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0KK19MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPQorX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9bm8KK19MVF9BQ19UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSk9bm8KK19MVF9BQ19UQUdWQVIobW9kdWxlX2NtZHMsICQxKT0KK19MVF9BQ19UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9CitfTFRfQUNfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT11bmtub3duCitfTFRfQUNfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcworX0xUX0FDX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPQorX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQorX0xUX0FDX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9bm8KKworIyBEZXBlbmRlbmNpZXMgdG8gcGxhY2UgYmVmb3JlIGFuZCBhZnRlciB0aGUgb2JqZWN0IGJlaW5nIGxpbmtlZDoKK19MVF9BQ19UQUdWQVIocHJlZGVwX29iamVjdHMsICQxKT0KK19MVF9BQ19UQUdWQVIocG9zdGRlcF9vYmplY3RzLCAkMSk9CitfTFRfQUNfVEFHVkFSKHByZWRlcHMsICQxKT0KK19MVF9BQ19UQUdWQVIocG9zdGRlcHMsICQxKT0KK19MVF9BQ19UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoLCAkMSk9CisKKyMgU291cmNlIGZpbGUgZXh0ZW5zaW9uIGZvciBDKysgdGVzdCBzb3VyY2VzLgorYWNfZXh0PWNjCisKKyMgT2JqZWN0IGZpbGUgZXh0ZW5zaW9uIGZvciBjb21waWxlZCBDKysgdGVzdCBzb3VyY2VzLgorb2JqZXh0PW8KK19MVF9BQ19UQUdWQVIob2JqZXh0LCAkMSk9JG9iamV4dAorCisjIENvZGUgdG8gYmUgdXNlZCBpbiBzaW1wbGUgY29tcGlsZSB0ZXN0cworbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlPSJpbnQgc29tZV92YXJpYWJsZSA9IDA7XG4iCisKKyMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBsaW5rIHRlc3RzCitsdF9zaW1wbGVfbGlua190ZXN0X2NvZGU9J2ludCBtYWluKGludCwgY2hhciAqW10pIHsgcmV0dXJuKDApOyB9XG4nCisKKyMgbHRtYWluIG9ubHkgdXNlcyAkQ0MgZm9yIHRhZ2dlZCBjb25maWd1cmF0aW9ucyBzbyBtYWtlIHN1cmUgJENDIGlzIHNldC4KK19MVF9BQ19TWVNfQ09NUElMRVIKKworIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KK2x0X3NhdmVfQ0M9JENDCitsdF9zYXZlX0xEPSRMRAorbHRfc2F2ZV9HQ0M9JEdDQworR0NDPSRHWFgKK2x0X3NhdmVfd2l0aF9nbnVfbGQ9JHdpdGhfZ251X2xkCitsdF9zYXZlX3BhdGhfTEQ9JGx0X2N2X3BhdGhfTEQKK2lmIHRlc3QgLW4gIiR7bHRfY3ZfcHJvZ19nbnVfbGRjeHgrc2V0fSI7IHRoZW4KKyAgbHRfY3ZfcHJvZ19nbnVfbGQ9JGx0X2N2X3Byb2dfZ251X2xkY3h4CitlbHNlCisgIHVuc2V0IGx0X2N2X3Byb2dfZ251X2xkCitmaQoraWYgdGVzdCAtbiAiJHtsdF9jdl9wYXRoX0xEQ1hYK3NldH0iOyB0aGVuCisgIGx0X2N2X3BhdGhfTEQ9JGx0X2N2X3BhdGhfTERDWFgKK2Vsc2UKKyAgdW5zZXQgbHRfY3ZfcGF0aF9MRAorZmkKK3Rlc3QgLXogIiR7TERDWFgrc2V0fSIgfHwgTEQ9JExEQ1hYCitDQz0ke0NYWC0iYysrIn0KK2NvbXBpbGVyPSRDQworX0xUX0FDX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQworY2NfYmFzZW5hbWU9YCRlY2hvIFgiJGNvbXBpbGVyIiB8ICRYc2VkIC1lICdzJV4uKi8lJSdgCisKKyMgV2UgZG9uJ3Qgd2FudCAtZm5vLWV4Y2VwdGlvbiB3ZW4gY29tcGlsaW5nIEMrKyBjb2RlLCBzbyBzZXQgdGhlCisjIG5vX2J1aWx0aW5fZmxhZyBzZXBhcmF0ZWx5CitpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSk9JyAtZm5vLWJ1aWx0aW4nCitlbHNlCisgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0KK2ZpCisKK2lmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCisgICMgU2V0IHVwIGRlZmF1bHQgR05VIEMrKyBjb25maWd1cmF0aW9uCisKKyAgQUNfUFJPR19MRAorCisgICMgQ2hlY2sgaWYgR05VIEMrKyB1c2VzIEdOVSBsZCBhcyB0aGUgdW5kZXJseWluZyBsaW5rZXIsIHNpbmNlIHRoZQorICAjIGFyY2hpdmluZyBjb21tYW5kcyBiZWxvdyBhc3N1bWUgdGhhdCBHTlUgbGQgaXMgYmVpbmcgdXNlZC4KKyAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKyAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCisgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgX0xUX0FDX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1keW5hbWljJworCisgICAgIyBJZiBhcmNoaXZlX2NtZHMgcnVucyBMRCwgbm90IENDLCB3bGFyYyBzaG91bGQgYmUgZW1wdHkKKyAgICAjIFhYWCBJIHRoaW5rIHdsYXJjIGNhbiBiZSBlbGltaW5hdGVkIGluIGx0Y2YtY3h4LCBidXQgSSBuZWVkIHRvCisgICAgIyAgICAgaW52ZXN0aWdhdGUgaXQgYSBsaXR0bGUgYml0IG1vcmUuIChNTSkKKyAgICB3bGFyYz0nJHt3bH0nCisKKyAgICAjIGFuY2llbnQgR05VIGxkIGRpZG4ndCBzdXBwb3J0IC0td2hvbGUtYXJjaGl2ZSBldC4gYWwuCisgICAgaWYgZXZhbCAiYCRDQyAtcHJpbnQtcHJvZy1uYW1lPWxkYCAtLWhlbHAgMj4mMSIgfCBcCisJZ3JlcCAnbm8td2hvbGUtYXJjaGl2ZScgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgIF9MVF9BQ19UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0iJHdsYXJjIictLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJyIkd2xhcmMiJy0tbm8td2hvbGUtYXJjaGl2ZScKKyAgICBlbHNlCisgICAgICBfTFRfQUNfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9CisgICAgZmkKKyAgZWxzZQorICAgIHdpdGhfZ251X2xkPW5vCisgICAgd2xhcmM9CisKKyAgICAjIEEgZ2VuZXJpYyBhbmQgdmVyeSBzaW1wbGUgZGVmYXVsdCBzaGFyZWQgbGlicmFyeSBjcmVhdGlvbgorICAgICMgY29tbWFuZCBmb3IgR05VIEMrKyBmb3IgdGhlIGNhc2Ugd2hlcmUgaXQgdXNlcyB0aGUgbmF0aXZlCisgICAgIyBsaW5rZXIsIGluc3RlYWQgb2YgR05VIGxkLiAgSWYgcG9zc2libGUsIHRoaXMgc2V0dGluZyBzaG91bGQKKyAgICAjIG92ZXJyaWRkZW4gdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIG5hdGl2ZSBsaW5rZXIgZmVhdHVyZXMgb24KKyAgICAjIHRoZSBwbGF0Zm9ybSBpdCBpcyBiZWluZyB1c2VkIG9uLgorICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJGxpYicKKyAgZmkKKworICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCisgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgorICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KKyAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgZ3JlcCAiXC1MIicKKworZWxzZQorICBHWFg9bm8KKyAgd2l0aF9nbnVfbGQ9bm8KKyAgd2xhcmM9CitmaQorCisjIFBPUlRNRTogZmlsbCBpbiBhIGRlc2NyaXB0aW9uIG9mIHlvdXIgc3lzdGVtJ3MgQysrIGxpbmsgY2hhcmFjdGVyaXN0aWNzCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllc10pCitfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPXllcworY2FzZSAkaG9zdF9vcyBpbgorICBhaXgzKikKKyAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKyAgICBfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgICAgOzsKKyAgYWl4NCogfCBhaXg1KikKKyAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICAgICAgIyBPbiBJQTY0LCB0aGUgbGlua2VyIGRvZXMgcnVuIHRpbWUgbGlua2luZyBieSBkZWZhdWx0LCBzbyB3ZSBkb24ndAorICAgICAgIyBoYXZlIHRvIGRvIGFueXRoaW5nIHNwZWNpYWwuCisgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCisgICAgICBleHBfc3ltX2ZsYWc9Jy1CZXhwb3J0JworICAgICAgbm9fZW50cnlfZmxhZz0iIgorICAgIGVsc2UKKyAgICAgIGFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KKworICAgICAgIyBUZXN0IGlmIHdlIGFyZSB0cnlpbmcgdG8gdXNlIHJ1biB0aW1lIGxpbmtpbmcgb3Igbm9ybWFsCisgICAgICAjIEFJWCBzdHlsZSBsaW5raW5nLiBJZiAtYnJ0bCBpcyBzb21ld2hlcmUgaW4gTERGTEFHUywgd2UKKyAgICAgICMgbmVlZCB0byBkbyBydW50aW1lIGxpbmtpbmcuCisgICAgICBjYXNlICRob3N0X29zIGluIGFpeDQuW1syM11dfGFpeDQuW1syM11dLip8YWl4NSopCisJZm9yIGxkX2ZsYWcgaW4gJExERkxBR1M7IGRvCisJICBjYXNlICRsZF9mbGFnIGluCisJICAqLWJydGwqKQorCSAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPXllcworCSAgICBicmVhaworCSAgICA7OworCSAgZXNhYworCWRvbmUKKyAgICAgIGVzYWMKKworICAgICAgZXhwX3N5bV9mbGFnPSctYmV4cG9ydCcKKyAgICAgIG5vX2VudHJ5X2ZsYWc9Jy1ibm9lbnRyeScKKyAgICBmaQorCisgICAgIyBXaGVuIGxhcmdlIGV4ZWN1dGFibGVzIG9yIHNoYXJlZCBvYmplY3RzIGFyZSBidWlsdCwgQUlYIGxkIGNhbgorICAgICMgaGF2ZSBwcm9ibGVtcyBjcmVhdGluZyB0aGUgdGFibGUgb2YgY29udGVudHMuICBJZiBsaW5raW5nIGEgbGlicmFyeQorICAgICMgb3IgcHJvZ3JhbSByZXN1bHRzIGluICJlcnJvciBUT0Mgb3ZlcmZsb3ciIGFkZCAtbW1pbmltYWwtdG9jIHRvCisgICAgIyBDWFhGTEFHUy9DRkxBR1MgZm9yIGcrKy9nY2MuICBJbiB0aGUgY2FzZXMgd2hlcmUgdGhhdCBpcyBub3QKKyAgICAjIGVub3VnaCB0byBmaXggdGhlIHByb2JsZW0sIGFkZCAtV2wsLWJiaWd0b2MgdG8gTERGTEFHUy4KKworICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JycKKyAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcworICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPSc6JworICAgIF9MVF9BQ19UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcworCisgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KKyAgICAgIGNhc2UgJGhvc3Rfb3MgaW4gYWl4NC5bMDEyXXxhaXg0LlswMTJdLiopCisgICAgICAjIFdlIG9ubHkgd2FudCB0byBkbyB0aGlzIG9uIEFJWCA0LjIgYW5kIGxvd2VyLCB0aGUgY2hlY2sKKyAgICAgICMgYmVsb3cgZm9yIGJyb2tlbiBjb2xsZWN0MiBkb2Vzbid0IHdvcmsgdW5kZXIgNC4zKworCWNvbGxlY3QybmFtZT1gJHtDQ30gLXByaW50LXByb2ctbmFtZT1jb2xsZWN0MmAKKwlpZiB0ZXN0IC1mICIkY29sbGVjdDJuYW1lIiAmJiBcCisJICAgc3RyaW5ncyAiJGNvbGxlY3QybmFtZSIgfCBncmVwIHJlc29sdmVfbGliX25hbWUgPi9kZXYvbnVsbAorCXRoZW4KKwkgICMgV2UgaGF2ZSByZXdvcmtlZCBjb2xsZWN0MgorCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKwllbHNlCisJICAjIFdlIGhhdmUgb2xkIGNvbGxlY3QyCisJICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXVuc3VwcG9ydGVkCisJICAjIEl0IGZhaWxzIHRvIGZpbmQgdW5pbnN0YWxsZWQgbGlicmFyaWVzIHdoZW4gdGhlIHVuaW5zdGFsbGVkCisJICAjIHBhdGggaXMgbm90IGxpc3RlZCBpbiB0aGUgbGlicGF0aC4gIFNldHRpbmcgaGFyZGNvZGVfbWludXNfTAorCSAgIyB0byB1bnN1cHBvcnRlZCBmb3JjZXMgcmVsaW5raW5nCisJICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKKwkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisJICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0KKwlmaQorICAgICAgZXNhYworICAgICAgc2hhcmVkX2ZsYWc9Jy1zaGFyZWQnCisgICAgZWxzZQorICAgICAgIyBub3QgdXNpbmcgZ2NjCisgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorCSMgVmlzdWFsQWdlIEMrKywgVmVyc2lvbiA1LjUgZm9yIEFJWCA1TCBmb3IgSUEtNjQsIEJldGEgMyBSZWxlYXNlCisJIyBjaG9rZXMgb24gLVdsLC1HLiBUaGUgZm9sbG93aW5nIGxpbmUgaXMgY29ycmVjdDoKKwlzaGFyZWRfZmxhZz0nLUcnCisgICAgICBlbHNlCisJaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCisJICBzaGFyZWRfZmxhZz0nJHt3bH0tRycKKwllbHNlCisJICBzaGFyZWRfZmxhZz0nJHt3bH0tYk06U1JFJworCWZpCisgICAgICBmaQorICAgIGZpCisKKyAgICAjIEl0IHNlZW1zIHRoYXQgLWJleHBhbGwgZG9lcyBub3QgZXhwb3J0IHN5bWJvbHMgYmVnaW5uaW5nIHdpdGgKKyAgICAjIHVuZGVyc2NvcmUgKF8pLCBzbyBpdCBpcyBiZXR0ZXIgdG8gZ2VuZXJhdGUgYSBsaXN0IG9mIHN5bWJvbHMgdG8gZXhwb3J0LgorICAgIF9MVF9BQ19UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9eWVzCisgICAgaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCisgICAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW50aW1lIGxvYWRpbmcgZmxhZ3MgKC1icnRsKSwKKyAgICAgICMgLWJlcm9rIHdpbGwgbGluayB3aXRob3V0IGVycm9yLCBidXQgbWF5IHByb2R1Y2UgYSBicm9rZW4gbGlicmFyeS4KKyAgICAgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nLWJlcm9rJworICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuIGVtcHR5IGV4ZWN1dGFibGUuCisgICAgICBfTFRfQUNfU1lTX0xJQlBBVEhfQUlYCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKworICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9IlwkQ0MiJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZWNobyAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JG5vX2VudHJ5X2ZsYWcgXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKKyAgICAgZWxzZQorICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKwlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tUiAkbGliZGlyOi91c3IvbGliOi9saWInCisJX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSIteiBub2RlZnMiCisJX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9IlwkQ0MgJHNoYXJlZF9mbGFnIicgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAnIlwke3dsfSRub19lbnRyeV9mbGFnIFwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyIKKyAgICAgIGVsc2UKKwkjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4gZW1wdHkgZXhlY3V0YWJsZS4KKwlfTFRfQUNfU1lTX0xJQlBBVEhfQUlYCisJX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisJIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKKwkjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCisJX0xUX0FDX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tYmVybm90b2snCisJX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tYmVyb2snCisJIyAtYmV4cGFsbCBkb2VzIG5vdCBleHBvcnQgc3ltYm9scyBiZWdpbm5pbmcgd2l0aCB1bmRlcnNjb3JlIChfKQorCV9MVF9BQ19UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9eWVzCisJIyBFeHBvcnRlZCBzeW1ib2xzIGNhbiBiZSBwdWxsZWQgaW50byBzaGFyZWQgb2JqZWN0cyBmcm9tIGFyY2hpdmVzCisJX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScgJworCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKKwkjIFRoaXMgaXMgc2ltaWxhciB0byBob3cgQUlYIHRyYWRpdGlvbmFsbHkgYnVpbGRzIGl0J3Mgc2hhcmVkIGxpYnJhcmllcy4KKwlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1iRTokZXhwb3J0X3N5bWJvbHMgJHt3bH0tYm5vZW50cnkke2FsbG93X3VuZGVmaW5lZF9mbGFnfX4kQVIgJEFSX0ZMQUdTICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lJHJlbGVhc2UuYSAkb3V0cHV0X29iamRpci8kc29uYW1lJworICAgICAgZmkKKyAgICBmaQorICAgIDs7CisgIGNob3J1cyopCisgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgICopCisJIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisJX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCTs7CisgICAgZXNhYworICAgIDs7CisKKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqKQorICAgICMgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCisgICAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKyAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJworICAgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorICAgIF9MVF9BQ19UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KKyAgICBfTFRfQUNfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKworICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1pbWFnZS1iYXNlPTB4MTAwMDAwMDAgJHt3bH0tLW91dC1pbXBsaWIsJGxpYicKKyAgICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKKyAgICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCisgICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKwljcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisgICAgICBlbHNlCisJZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisJY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKyAgICAgIGZpfgorICAgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1pbWFnZS1iYXNlPTB4MTAwMDAwMDAgJHt3bH0tLW91dC1pbXBsaWIsJGxpYicKKyAgICBlbHNlCisgICAgICBfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgICAgZmkKKyAgOzsKKworICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubworICAgIGNhc2UgIiRob3N0X29zIiBpbgorICAgIHJoYXBzb2R5KiB8IGRhcndpbjEuW1swMTJdXSkKKyAgICAgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nLXVuZGVmaW5lZCBzdXBwcmVzcycKKyAgICAgIDs7CisgICAgKikgIyBEYXJ3aW4gMS4zIG9uCisgICAgICBpZiB0ZXN0IC16ICR7TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUfSA7IHRoZW4KKyAgICAgIAlfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1mbGF0X25hbWVzcGFjZSAtdW5kZWZpbmVkIHN1cHByZXNzJworICAgICAgZWxzZQorICAgICAgICBjYXNlICR7TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUfSBpbgorICAgICAgICAgIDEwLltbMDEyXV0pCisgICAgICAgICAgICBfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1mbGF0X25hbWVzcGFjZSAtdW5kZWZpbmVkIHN1cHByZXNzJworICAgICAgICAgICAgOzsKKyAgICAgICAgICAxMC4qKQorICAgICAgICAgICAgX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSctdW5kZWZpbmVkIGR5bmFtaWNfbG9va3VwJworICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgZmkKKyAgICAgIDs7CisgICAgZXNhYworICAgIGx0X2ludF9hcHBsZV9jY19zaW5nbGVfbW9kPW5vCisgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J2VjaG8nCisgICAgaWYgJENDIC1kdW1wc3BlY3MgMj4mMSB8IGdyZXAgJ3NpbmdsZV9tb2R1bGUnID4vZGV2L251bGwgOyB0aGVuCisgICAgICBsdF9pbnRfYXBwbGVfY2Nfc2luZ2xlX21vZD15ZXMKKyAgICBmaQorICAgIGlmIHRlc3QgIlgkbHRfaW50X2FwcGxlX2NjX3NpbmdsZV9tb2QiID0gWHllcyA7IHRoZW4KKyAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtZHluYW1pY2xpYiAtc2luZ2xlX21vZHVsZSAkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSAkcnBhdGgvJHNvbmFtZSAkdmVyc3RyaW5nJworICAgIGVsc2UKKyAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtciAke3dsfS1iaW5kX2F0X2xvYWQgLWtlZXBfcHJpdmF0ZV9leHRlcm5zIC1ub3N0ZGxpYiAtbyAke2xpYn0tbWFzdGVyLm8gJGxpYm9ianN+JENDIC1keW5hbWljbGliICRhbGxvd191bmRlZmluZWRfZmxhZyAtbyAkbGliICR7bGlifS1tYXN0ZXIubyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSAkcnBhdGgvJHNvbmFtZSAkdmVyc3RyaW5nJworICAgIGZpCisgICAgX0xUX0FDX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpPSckQ0MgJHt3bH0tYmluZF9hdF9sb2FkICRhbGxvd191bmRlZmluZWRfZmxhZyAtbyAkbGliIC1idW5kbGUgJGxpYm9ianMgJGRlcGxpYnMkY29tcGlsZXJfZmxhZ3MnCisKKyAgICAjIERvbid0IGZpeCB0aGlzIGJ5IHVzaW5nIHRoZSBsZCAtZXhwb3J0ZWRfc3ltYm9sc19saXN0IGZsYWcsIGl0IGRvZXNuJ3QgZXhpc3QgaW4gb2xkZXIgZGFyd2luIGxkJ3MKKyAgICBpZiB0ZXN0ICJYJGx0X2ludF9hcHBsZV9jY19zaW5nbGVfbW9kIiA9IFh5ZXMgOyB0aGVuCisgICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nc2VkIC1lICJzLCMuKiwsIiAtZSAicyxeWyAgICBdKiwsIiAtZSAicyxeXCguLipcKSxfJiwiIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bX4kQ0MgLWR5bmFtaWNsaWIgLXNpbmdsZV9tb2R1bGUgJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgJHJwYXRoLyRzb25hbWUgJHZlcnN0cmluZ35ubWVkaXQgLXMgJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bSAke2xpYn0nCisgICAgZWxzZQorICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J3NlZCAtZSAicywjLiosLCIgLWUgInMsXlsgICAgXSosLCIgLWUgInMsXlwoLi4qXCksXyYsIiA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+JENDIC1yICR7d2x9LWJpbmRfYXRfbG9hZCAta2VlcF9wcml2YXRlX2V4dGVybnMgLW5vc3RkbGliIC1vICR7bGlifS1tYXN0ZXIubyAkbGlib2Jqc34kQ0MgLWR5bmFtaWNsaWIgJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vICRsaWIgJHtsaWJ9LW1hc3Rlci5vICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lICRycGF0aC8kc29uYW1lICR2ZXJzdHJpbmd+bm1lZGl0IC1zICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0tc3ltYm9scy5leHBzeW0gJHtsaWJ9JworICAgIGZpCisgICAgX0xUX0FDX1RBR1ZBUihtb2R1bGVfZXhwc3ltX2NtZHMsICQxKT0nc2VkIC1lICJzLCMuKiwsIiAtZSAicyxeWyAgICBdKiwsIiAtZSAicyxeXCguLipcKSxfJiwiIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bX4kQ0MgJGFsbG93X3VuZGVmaW5lZF9mbGFnICAtbyAkbGliIC1idW5kbGUgJGxpYm9ianMgJGRlcGxpYnMkY29tcGlsZXJfZmxhZ3N+bm1lZGl0IC1zICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0tc3ltYm9scy5leHBzeW0gJHtsaWJ9JworICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KKyAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2F1dG9tYXRpYywgJDEpPXllcworICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPXVuc3VwcG9ydGVkCisgICAgX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSctYWxsX2xvYWQgJGNvbnZlbmllbmNlJworICAgIF9MVF9BQ19UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcworICBlbHNlCisgICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICBmaQorICAgIDs7CisKKyAgZGd1eCopCisgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgIGVjKyspCisJIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisJX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCTs7CisgICAgICBnaGN4KQorCSMgR3JlZW4gSGlsbHMgQysrIENvbXBpbGVyCisJIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisJX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCTs7CisgICAgICAqKQorCSMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorCV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwk7OworICAgIGVzYWMKKyAgICA7OworICBmcmVlYnNkWzEyXSopCisgICAgIyBDKysgc2hhcmVkIGxpYnJhcmllcyByZXBvcnRlZCB0byBiZSBmYWlybHkgYnJva2VuIGJlZm9yZSBzd2l0Y2ggdG8gRUxGCisgICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgIDs7CisgIGZyZWVic2QtZWxmKikKKyAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KKyAgICA7OworICBmcmVlYnNkKiB8IGtmcmVlYnNkKi1nbnUpCisgICAgIyBGcmVlQlNEIDMgYW5kIGxhdGVyIHVzZSBHTlUgQysrIGFuZCBHTlUgbGQgd2l0aCBzdGFuZGFyZCBFTEYKKyAgICAjIGNvbnZlbnRpb25zCisgICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT15ZXMKKyAgICA7OworICBnbnUqKQorICAgIDs7CisgIGhwdXg5KikKKyAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0rYiAke3dsfSRsaWJkaXInCisgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgorICAgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCisgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKyAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMgIyBOb3QgaW4gdGhlIHNlYXJjaCBQQVRILAorCQkJCSMgYnV0IGFzIHRoZSBkZWZhdWx0CisJCQkJIyBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeS4KKworICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgQ0MpCisgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKyAgICAgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgIDs7CisgICAgYUNDKQorICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJHJtICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1iICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCisgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KKyAgICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgorICAgICAgIworICAgICAgIyBUaGVyZSBkb2Vzbid0IGFwcGVhciB0byBiZSBhIHdheSB0byBwcmV2ZW50IHRoaXMgY29tcGlsZXIgZnJvbQorICAgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KKyAgICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKKyAgICAgICMgZGVwZW5kZW5jaWVzLgorICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8IGdyZXAgIlstXUwiYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGVjaG8gJGxpc3QnCisgICAgICA7OworICAgICopCisgICAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorICAgICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckcm0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgIGVsc2UKKyAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisgICAgICAgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgIGZpCisgICAgICA7OworICAgIGVzYWMKKyAgICA7OworICBocHV4MTAqfGhwdXgxMSopCisgICAgaWYgdGVzdCAkd2l0aF9nbnVfbGQgPSBubzsgdGhlbgorICAgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgorICAgICAgaHBwYSo2NCopCisJX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9K2IgJHt3bH0kbGliZGlyJworCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPScrYiAkbGliZGlyJworCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKKyAgICAgICAgOzsKKyAgICAgIGlhNjQqKQorCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisgICAgICAgIDs7CisgICAgICAqKQorCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfStiICR7d2x9JGxpYmRpcicKKwlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisJX0xUX0FDX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKKyAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICBmaQorICAgIGNhc2UgIiRob3N0X2NwdSIgaW4KKyAgICBocHBhKjY0KikKKyAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KKyAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgICA7OworICAgIGlhNjQqKQorICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubworICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKyAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcyAjIE5vdCBpbiB0aGUgc2VhcmNoIFBBVEgsCisJCQkJCSAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0CisJCQkJCSAgICAgICMgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCisgICAgICA7OworICAgICopCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcworICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzICMgTm90IGluIHRoZSBzZWFyY2ggUEFUSCwKKwkJCQkJICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQKKwkJCQkJICAgICAgIyBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeS4KKyAgICAgIDs7CisgICAgZXNhYworCisgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgIENDKQorCSMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorCV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwk7OworICAgICAgYUNDKQorCWNhc2UgIiRob3N0X2NwdSIgaW4KKwlocHBhKjY0KnxpYTY0KikKKwkgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtYiAraCAkc29uYW1lIC1vICRsaWIgJGxpbmtlcl9mbGFncyAkbGlib2JqcyAkZGVwbGlicycKKwkgIDs7CisJKikKKwkgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgOzsKKwllc2FjCisJIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cworCSMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgorCSMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgorCSMKKwkjIFRoZXJlIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGEgd2F5IHRvIHByZXZlbnQgdGhpcyBjb21waWxlciBmcm9tCisJIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KKwkjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CisJIyBkZXBlbmRlbmNpZXMuCisJb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8IGdyZXAgIlwtTCJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZWNobyAkbGlzdCcKKwk7OworICAgICAgKikKKwlpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorCSAgaWYgdGVzdCAkd2l0aF9nbnVfbGQgPSBubzsgdGhlbgorCSAgICBjYXNlICIkaG9zdF9jcHUiIGluCisJICAgIGlhNjQqfGhwcGEqNjQqKQorCSAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtYiAraCAkc29uYW1lIC1vICRsaWIgJGxpbmtlcl9mbGFncyAkbGlib2JqcyAkZGVwbGlicycKKwkgICAgICA7OworCSAgICAqKQorCSAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgIDs7CisJICAgIGVzYWMKKwkgIGZpCisJZWxzZQorCSAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisJICBfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJZmkKKwk7OworICAgIGVzYWMKKyAgICA7OworICBpcml4NSogfCBpcml4NiopCisgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgIENDKQorCSMgU0dJIEMrKworCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1hbGwgLW11bHRpZ290ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGVjaG8gLXNldF92ZXJzaW9uICR2ZXJzdHJpbmdgIC11cGRhdGVfcmVnaXN0cnkgJHtvYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCisJIyBBcmNoaXZlcyBjb250YWluaW5nIEMrKyBvYmplY3QgZmlsZXMgbXVzdCBiZSBjcmVhdGVkIHVzaW5nCisJIyAiQ0MgLWFyIiwgd2hlcmUgIkNDIiBpcyB0aGUgSVJJWCBDKysgY29tcGlsZXIuICBUaGlzIGlzCisJIyBuZWNlc3NhcnkgdG8gbWFrZSBzdXJlIGluc3RhbnRpYXRlZCB0ZW1wbGF0ZXMgYXJlIGluY2x1ZGVkCisJIyBpbiB0aGUgYXJjaGl2ZS4KKwlfTFRfQUNfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nJENDIC1hciAtV1IsLXUgLW8gJG9sZGxpYiAkb2xkb2JqcycKKwk7OworICAgICAgKikKKwlpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorCSAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisJICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZWNobyAke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmdgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgIGVsc2UKKwkgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBlY2hvICR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZ2AgLW8gJGxpYicKKwkgIGZpCisJZmkKKwlfTFRfQUNfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKKwk7OworICAgIGVzYWMKKyAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKKyAgICA7OworICBsaW51eCopCisgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgIEtDQykKKwkjIEt1Y2sgYW5kIEFzc29jaWF0ZXMsIEluYy4gKEtBSSkgQysrIENvbXBpbGVyCisKKwkjIEtDQyB3aWxsIG9ubHkgY3JlYXRlIGEgc2hhcmVkIGxpYnJhcnkgaWYgdGhlIG91dHB1dCBmaWxlCisJIyBlbmRzIHdpdGggIi5zbyIgKG9yICIuc2wiIGZvciBIUC1VWCksIHNvIHJlbmFtZSB0aGUgbGlicmFyeQorCSMgdG8gaXRzIHByb3BlciBuYW1lICh3aXRoIHZlcnNpb24pIGFmdGVyIGxpbmtpbmcuCisJX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0ndGVtcGV4dD1gZWNobyAkc2hhcmVkX2V4dCB8ICRTRUQgLWUgJ1wnJ3MvXChbW14oKTAtOUEtWmEtent9XV1cKS9cXFxcXDEvZydcJydgOyB0ZW1wbGliPWBlY2hvICRsaWIgfCAkU0VEIC1lICJzL1wke3RlbXBleHR9XC4uKi8uc28vImA7ICRDQyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLS1zb25hbWUgJHNvbmFtZSAtbyBcJHRlbXBsaWI7IG12IFwkdGVtcGxpYiAkbGliJworCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSd0ZW1wZXh0PWBlY2hvICRzaGFyZWRfZXh0IHwgJFNFRCAtZSAnXCcncy9cKFtbXigpMC05QS1aYS16e31dXVwpL1xcXFxcMS9nJ1wnJ2A7IHRlbXBsaWI9YGVjaG8gJGxpYiB8ICRTRUQgLWUgInMvXCR7dGVtcGV4dH1cLi4qLy5zby8iYDsgJENDICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtLXNvbmFtZSAkc29uYW1lIC1vIFwkdGVtcGxpYiAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlLCRleHBvcnRfc3ltYm9sczsgbXYgXCR0ZW1wbGliICRsaWInCisJIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cworCSMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgorCSMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgorCSMKKwkjIFRoZXJlIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGEgd2F5IHRvIHByZXZlbnQgdGhpcyBjb21waWxlciBmcm9tCisJIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KKwkjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CisJIyBkZXBlbmRlbmNpZXMuCisJb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IC1vIGxpYmNvbmZ0ZXN0JHNoYXJlZF9leHQgMj4mMSB8IGdyZXAgImxkImA7IHJtIC1mIGxpYmNvbmZ0ZXN0JHNoYXJlZF9leHQ7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBlY2hvICRsaXN0JworCisJX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1ycGF0aCwkbGliZGlyJworCV9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKKworCSMgQXJjaGl2ZXMgY29udGFpbmluZyBDKysgb2JqZWN0IGZpbGVzIG11c3QgYmUgY3JlYXRlZCB1c2luZworCSMgIkNDIC1Cc3RhdGljIiwgd2hlcmUgIkNDIiBpcyB0aGUgS0FJIEMrKyBjb21waWxlci4KKwlfTFRfQUNfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nJENDIC1Cc3RhdGljIC1vICRvbGRsaWIgJG9sZG9ianMnCisJOzsKKyAgICAgIGljcGMpCisJIyBJbnRlbCBDKysKKwl3aXRoX2dudV9sZD15ZXMKKwlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KKwlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCisJX0xUX0FDX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1keW5hbWljJworCV9MVF9BQ19UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJOzsKKyAgICAgIGN4eCkKKwkjIENvbXBhcSBDKysKKwlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICAtbyAkbGliICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzJworCisJcnVucGF0aF92YXI9TERfUlVOX1BBVEgKKwlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLXJwYXRoICRsaWJkaXInCisJX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgorCisJIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cworCSMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgorCSMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgorCSMKKwkjIFRoZXJlIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGEgd2F5IHRvIHByZXZlbnQgdGhpcyBjb21waWxlciBmcm9tCisJIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KKwkjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CisJIyBkZXBlbmRlbmNpZXMuCisJb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8IGdyZXAgImxkImA7IHRlbXBsaXN0PWBlY2hvICR0ZW1wbGlzdCB8ICRTRUQgInMvXCheLipsZC4qXClcKCAuKmxkIC4qJFwpL1wxLyJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZWNobyAkbGlzdCcKKwk7OworICAgIGVzYWMKKyAgICA7OworICBseW54b3MqKQorICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorICAgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICA7OworICBtODhrKikKKyAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKyAgICBfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgICAgOzsKKyAgbXZzKikKKyAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgICAgY3h4KQorCSMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorCV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwk7OworICAgICAgKikKKwkjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKwlfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJOzsKKyAgICBlc2FjCisgICAgOzsKKyAgbmV0YnNkKiB8IG5ldGJzZGVsZiotZ251IHwga25ldGJzZCotZ251KQorICAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgZ3JlcCBfX0VMRl9fID4vZGV2L251bGw7IHRoZW4KKyAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkbGlua2VyX2ZsYWdzJworICAgICAgd2xhcmM9CisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJworICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKyAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgZmkKKyAgICAjIFdvcmthcm91bmQgc29tZSBicm9rZW4gcHJlLTEuNSB0b29sY2hhaW5zCisgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgZ3JlcCBjb25mdGVzdC4kb2JqZXh0IHwgJFNFRCAtZSAiczotbGdjYyAtbGMgLWxnY2M6OiInCisgICAgOzsKKyAgb3NmMyopCisgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgIEtDQykKKwkjIEt1Y2sgYW5kIEFzc29jaWF0ZXMsIEluYy4gKEtBSSkgQysrIENvbXBpbGVyCisKKwkjIEtDQyB3aWxsIG9ubHkgY3JlYXRlIGEgc2hhcmVkIGxpYnJhcnkgaWYgdGhlIG91dHB1dCBmaWxlCisJIyBlbmRzIHdpdGggIi5zbyIgKG9yICIuc2wiIGZvciBIUC1VWCksIHNvIHJlbmFtZSB0aGUgbGlicmFyeQorCSMgdG8gaXRzIHByb3BlciBuYW1lICh3aXRoIHZlcnNpb24pIGFmdGVyIGxpbmtpbmcuCisJX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0ndGVtcGV4dD1gZWNobyAkc2hhcmVkX2V4dCB8ICRTRUQgLWUgJ1wnJ3MvXChbW14oKTAtOUEtWmEtent9XV1cKS9cXFxcXDEvZydcJydgOyB0ZW1wbGliPWBlY2hvICRsaWIgfCAkU0VEIC1lICJzL1wke3RlbXBleHR9XC4uKi8uc28vImA7ICRDQyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLS1zb25hbWUgJHNvbmFtZSAtbyBcJHRlbXBsaWI7IG12IFwkdGVtcGxpYiAkbGliJworCisJX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCisJX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgorCisJIyBBcmNoaXZlcyBjb250YWluaW5nIEMrKyBvYmplY3QgZmlsZXMgbXVzdCBiZSBjcmVhdGVkIHVzaW5nCisJIyAiQ0MgLUJzdGF0aWMiLCB3aGVyZSAiQ0MiIGlzIHRoZSBLQUkgQysrIGNvbXBpbGVyLgorCV9MVF9BQ19UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSckQ0MgLUJzdGF0aWMgLW8gJG9sZGxpYiAkb2xkb2JqcycKKworCTs7CisgICAgICBSQ0MpCisJIyBSYXRpb25hbCBDKysgMi40LjEKKwkjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKwlfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJOzsKKyAgICAgIGN4eCkKKwlfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJworCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBlY2hvICR7d2x9LXNldF92ZXJzaW9uICR2ZXJzdHJpbmdgIC11cGRhdGVfcmVnaXN0cnkgJHtvYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCisJX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKwlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisKKwkjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCisJIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCisJIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCisJIworCSMgVGhlcmUgZG9lc24ndCBhcHBlYXIgdG8gYmUgYSB3YXkgdG8gcHJldmVudCB0aGlzIGNvbXBpbGVyIGZyb20KKwkjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQorCSMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKKwkjIGRlcGVuZGVuY2llcy4KKwlvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgZ3JlcCAibGQiIHwgZ3JlcCAtdiAibGQ6ImA7IHRlbXBsaXN0PWBlY2hvICR0ZW1wbGlzdCB8ICRTRUQgInMvXCheLipsZC4qXClcKCAuKmxkLiokXCkvXDEvImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBlY2hvICRsaXN0JworCTs7CisgICAgICAqKQorCWlmIHRlc3QgIiRHWFgiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorCSAgX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKwkgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZWNobyAke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmdgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKworCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKwkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKKworCSAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cworCSAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCisJICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KKwkgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8IGdyZXAgIlwtTCInCisKKwllbHNlCisJICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKwkgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwlmaQorCTs7CisgICAgZXNhYworICAgIDs7CisgIG9zZjQqIHwgb3NmNSopCisgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgIEtDQykKKwkjIEt1Y2sgYW5kIEFzc29jaWF0ZXMsIEluYy4gKEtBSSkgQysrIENvbXBpbGVyCisKKwkjIEtDQyB3aWxsIG9ubHkgY3JlYXRlIGEgc2hhcmVkIGxpYnJhcnkgaWYgdGhlIG91dHB1dCBmaWxlCisJIyBlbmRzIHdpdGggIi5zbyIgKG9yICIuc2wiIGZvciBIUC1VWCksIHNvIHJlbmFtZSB0aGUgbGlicmFyeQorCSMgdG8gaXRzIHByb3BlciBuYW1lICh3aXRoIHZlcnNpb24pIGFmdGVyIGxpbmtpbmcuCisJX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0ndGVtcGV4dD1gZWNobyAkc2hhcmVkX2V4dCB8ICRTRUQgLWUgJ1wnJ3MvXChbW14oKTAtOUEtWmEtent9XV1cKS9cXFxcXDEvZydcJydgOyB0ZW1wbGliPWBlY2hvICRsaWIgfCAkU0VEIC1lICJzL1wke3RlbXBleHR9XC4uKi8uc28vImA7ICRDQyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLS1zb25hbWUgJHNvbmFtZSAtbyBcJHRlbXBsaWI7IG12IFwkdGVtcGxpYiAkbGliJworCisJX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCisJX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgorCisJIyBBcmNoaXZlcyBjb250YWluaW5nIEMrKyBvYmplY3QgZmlsZXMgbXVzdCBiZSBjcmVhdGVkIHVzaW5nCisJIyB0aGUgS0FJIEMrKyBjb21waWxlci4KKwlfTFRfQUNfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRvbGRsaWIgJG9sZG9ianMnCisJOzsKKyAgICAgIFJDQykKKwkjIFJhdGlvbmFsIEMrKyAyLjQuMQorCSMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorCV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwk7OworICAgICAgY3h4KQorCV9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKKwlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGVjaG8gLXNldF92ZXJzaW9uICR2ZXJzdHJpbmdgIC11cGRhdGVfcmVnaXN0cnkgJHtvYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdmb3IgaSBpbiBgY2F0ICRleHBvcnRfc3ltYm9sc2A7IGRvIHByaW50ZiAiJXMgJXNcXG4iIC1leHBvcnRlZF9zeW1ib2wgIlwkaSIgPj4gJGxpYi5leHA7IGRvbmV+CisJICBlY2hvICItaGlkZGVuIj4+ICRsaWIuZXhwfgorCSAgJENDIC1zaGFyZWQkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSAtV2wsLWlucHV0IC1XbCwkbGliLmV4cCAgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGVjaG8gLXNldF92ZXJzaW9uCSR2ZXJzdHJpbmdgIC11cGRhdGVfcmVnaXN0cnkgJG9iamRpci9zb19sb2NhdGlvbnMgLW8gJGxpYn4KKwkgICRybSAkbGliLmV4cCcKKworCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctcnBhdGggJGxpYmRpcicKKwlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisKKwkjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCisJIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCisJIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCisJIworCSMgVGhlcmUgZG9lc24ndCBhcHBlYXIgdG8gYmUgYSB3YXkgdG8gcHJldmVudCB0aGlzIGNvbXBpbGVyIGZyb20KKwkjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQorCSMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKKwkjIGRlcGVuZGVuY2llcy4KKwlvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgZ3JlcCAibGQiIHwgZ3JlcCAtdiAibGQ6ImA7IHRlbXBsaXN0PWBlY2hvICR0ZW1wbGlzdCB8ICRTRUQgInMvXCheLipsZC4qXClcKCAuKmxkLiokXCkvXDEvImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBlY2hvICRsaXN0JworCTs7CisgICAgICAqKQorCWlmIHRlc3QgIiRHWFgiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorCSAgX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKwkgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGVjaG8gJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisKKwkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisJICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisKKwkgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKKwkgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgorCSAgIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCisJICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCBncmVwICJcLUwiJworCisJZWxzZQorCSAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisJICBfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJZmkKKwk7OworICAgIGVzYWMKKyAgICA7OworICBwc29zKikKKyAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKyAgICBfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgICAgOzsKKyAgc2NvKikKKyAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KKyAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgICAgQ0MpCisJIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisJX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCTs7CisgICAgICAqKQorCSMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorCV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwk7OworICAgIGVzYWMKKyAgICA7OworICBzdW5vczQqKQorICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICBDQykKKwkjIFN1biBDKysgNC54CisJIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisJX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCTs7CisgICAgICBsY2MpCisJIyBMdWNpZAorCSMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorCV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwk7OworICAgICAgKikKKwkjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKwlfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJOzsKKyAgICBlc2FjCisgICAgOzsKKyAgc29sYXJpcyopCisgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgIENDKQorCSMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKKwlfTFRfQUNfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtemRlZnMnCisJX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HJHthbGxvd191bmRlZmluZWRfZmxhZ30gLW5vbGliIC1oJHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKwlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJGVjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+JGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CisJJENDIC1HJHthbGxvd191bmRlZmluZWRfZmxhZ30gLW5vbGliICR7d2x9LU0gJHt3bH0kbGliLmV4cCAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JHJtICRsaWIuZXhwJworCisJX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1SJGxpYmRpcicKKwlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworCWNhc2UgJGhvc3Rfb3MgaW4KKwkgIHNvbGFyaXMyLlswLTVdIHwgc29sYXJpczIuWzAtNV0uKikgOzsKKwkgICopCisJICAgICMgVGhlIEMrKyBjb21waWxlciBpcyB1c2VkIGFzIGxpbmtlciBzbyB3ZSBtdXN0IHVzZSAkd2wKKwkgICAgIyBmbGFnIHRvIHBhc3MgdGhlIGNvbW1hbmRzIHRvIHRoZSB1bmRlcmx5aW5nIHN5c3RlbQorCSAgICAjIGxpbmtlci4KKwkgICAgIyBTdXBwb3J0ZWQgc2luY2UgU29sYXJpcyAyLjYgKG1heWJlIDIuNS4xPykKKwkgICAgX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS16ICR7d2x9YWxsZXh0cmFjdCRjb252ZW5pZW5jZSAke3dsfS16ICR7d2x9ZGVmYXVsdGV4dHJhY3QnCisJICAgIDs7CisJZXNhYworCV9MVF9BQ19UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcworCisJIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cworCSMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgorCSMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgorCSMKKwkjIFRoZXJlIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGEgd2F5IHRvIHByZXZlbnQgdGhpcyBjb21waWxlciBmcm9tCisJIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KKwkjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CisJIyBkZXBlbmRlbmNpZXMuCisJb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgLUcgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCBncmVwICJcLVtbTFJdXSJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZWNobyAkbGlzdCcKKworCSMgQXJjaGl2ZXMgY29udGFpbmluZyBDKysgb2JqZWN0IGZpbGVzIG11c3QgYmUgY3JlYXRlZCB1c2luZworCSMgIkNDIC14YXIiLCB3aGVyZSAiQ0MiIGlzIHRoZSBTdW4gQysrIGNvbXBpbGVyLiAgVGhpcyBpcworCSMgbmVjZXNzYXJ5IHRvIG1ha2Ugc3VyZSBpbnN0YW50aWF0ZWQgdGVtcGxhdGVzIGFyZSBpbmNsdWRlZAorCSMgaW4gdGhlIGFyY2hpdmUuCisJX0xUX0FDX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAteGFyIC1vICRvbGRsaWIgJG9sZG9ianMnCisJOzsKKyAgICAgIGdjeCkKKwkjIEdyZWVuIEhpbGxzIEMrKyBDb21waWxlcgorCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKKworCSMgVGhlIEMrKyBjb21waWxlciBtdXN0IGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBhcmNoaXZlLgorCV9MVF9BQ19UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSckQ0MgJExERkxBR1MgLWFyY2hpdmUgLW8gJG9sZGxpYiAkb2xkb2JqcycKKwk7OworICAgICAgKikKKwkjIEdOVSBDKysgY29tcGlsZXIgd2l0aCBTb2xhcmlzIGxpbmtlcgorCWlmIHRlc3QgIiRHWFgiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorCSAgX0xUX0FDX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0teiAke3dsfWRlZnMnCisJICBpZiAkQ0MgLS12ZXJzaW9uIHwgZ3JlcCAtdiAnXjJcLjcnID4gL2Rldi9udWxsOyB0aGVuCisJICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCisJICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH4kZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKwkJJENDIC1zaGFyZWQgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JHJtICRsaWIuZXhwJworCisJICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKKwkgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCisJICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgorCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0iJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCBncmVwIFwiXC1MXCIiCisJICBlbHNlCisJICAgICMgZysrIDIuNyBhcHBlYXJzIHRvIHJlcXVpcmUgYC1HJyBOT1QgYC1zaGFyZWQnIG9uIHRoaXMKKwkgICAgIyBwbGF0Zm9ybS4KKwkgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCisJICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH4kZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKwkJJENDIC1HIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRybSAkbGliLmV4cCcKKworCSAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCisJICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgorCSAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9IiRDQyAtRyAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8IGdyZXAgXCJcLUxcIiIKKwkgIGZpCisKKwkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1SICR3bCRsaWJkaXInCisJZmkKKwk7OworICAgIGVzYWMKKyAgICA7OworICBzeXN2NU9wZW5VTklYOCogfCBzeXN2NVVuaXhXYXJlNyogfCBzeXN2NXV3W1s3OF1dKiB8IHVuaXh3YXJlNyopCisgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCisgICAgOzsKKyAgdGFuZGVtKikKKyAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgICAgTkNDKQorCSMgTm9uU3RvcC1VWCBOQ0MgMy4yMAorCSMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorCV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwk7OworICAgICAgKikKKwkjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKwlfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJOzsKKyAgICBlc2FjCisgICAgOzsKKyAgdnh3b3JrcyopCisgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisgICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgIDs7CisgICopCisgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisgICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgIDs7Citlc2FjCitBQ19NU0dfUkVTVUxUKFskX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKV0pCit0ZXN0ICIkX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKSIgPSBubyAmJiBjYW5fYnVpbGRfc2hhcmVkPW5vCisKK19MVF9BQ19UQUdWQVIoR0NDLCAkMSk9IiRHWFgiCitfTFRfQUNfVEFHVkFSKExELCAkMSk9IiRMRCIKKworQUNfTElCVE9PTF9QT1NUREVQX1BSRURFUCgkMSkKK0FDX0xJQlRPT0xfUFJPR19DT01QSUxFUl9QSUMoJDEpCitBQ19MSUJUT09MX1BST0dfQ0NfQ19PKCQxKQorQUNfTElCVE9PTF9TWVNfSEFSRF9MSU5LX0xPQ0tTKCQxKQorQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUygkMSkKK0FDX0xJQlRPT0xfU1lTX0RZTkFNSUNfTElOS0VSKCQxKQorQUNfTElCVE9PTF9QUk9HX0xEX0hBUkRDT0RFX0xJQlBBVEgoJDEpCitBQ19MSUJUT09MX1NZU19MSUJfU1RSSVAKK0FDX0xJQlRPT0xfRExPUEVOX1NFTEYoJDEpCisKK0FDX0xJQlRPT0xfQ09ORklHKCQxKQorCitBQ19MQU5HX1BPUAorQ0M9JGx0X3NhdmVfQ0MKK0xEQ1hYPSRMRAorTEQ9JGx0X3NhdmVfTEQKK0dDQz0kbHRfc2F2ZV9HQ0MKK3dpdGhfZ251X2xkY3h4PSR3aXRoX2dudV9sZAord2l0aF9nbnVfbGQ9JGx0X3NhdmVfd2l0aF9nbnVfbGQKK2x0X2N2X3BhdGhfTERDWFg9JGx0X2N2X3BhdGhfTEQKK2x0X2N2X3BhdGhfTEQ9JGx0X3NhdmVfcGF0aF9MRAorbHRfY3ZfcHJvZ19nbnVfbGRjeHg9JGx0X2N2X3Byb2dfZ251X2xkCitsdF9jdl9wcm9nX2dudV9sZD0kbHRfc2F2ZV93aXRoX2dudV9sZAorXSkjIEFDX0xJQlRPT0xfTEFOR19DWFhfQ09ORklHCisKKyMgQUNfTElCVE9PTF9QT1NUREVQX1BSRURFUChbVEFHTkFNRV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBGaWd1cmUgb3V0ICJoaWRkZW4iIGxpYnJhcnkgZGVwZW5kZW5jaWVzIGZyb20gdmVyYm9zZQorIyBjb21waWxlciBvdXRwdXQgd2hlbiBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCisjIFBhcnNlIHRoZSBjb21waWxlciBvdXRwdXQgYW5kIGV4dHJhY3QgdGhlIG5lY2Vzc2FyeQorIyBvYmplY3RzLCBsaWJyYXJpZXMgYW5kIGxpYnJhcnkgZmxhZ3MuCitBQ19ERUZVTihbQUNfTElCVE9PTF9QT1NUREVQX1BSRURFUF0sWworZG5sIHdlIGNhbid0IHVzZSB0aGUgbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIGhlcmUsCitkbmwgYmVjYXVzZSBpdCBjb250YWlucyBjb2RlIGludGVuZGVkIGZvciBhbiBleGVjdXRhYmxlLAorZG5sIG5vdCBhIGxpYnJhcnkuICBJdCdzIHBvc3NpYmxlIHdlIHNob3VsZCBsZXQgZWFjaAorZG5sIHRhZyBkZWZpbmUgYSBuZXcgbHRfPz8/P19saW5rX3Rlc3RfY29kZSB2YXJpYWJsZSwKK2RubCBidXQgaXQncyBvbmx5IHVzZWQgaGVyZS4uLgoraWZlbHNlKFskMV0sW10sW2NhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKK2ludCBhOwordm9pZCBmb28gKHZvaWQpIHsgYSA9IDA7IH0KK0VPRgorXSxbJDFdLFtDWFhdLFtjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCitjbGFzcyBGb28KK3sKK3B1YmxpYzoKKyAgRm9vICh2b2lkKSB7IGEgPSAwOyB9Citwcml2YXRlOgorICBpbnQgYTsKK307CitFT0YKK10sWyQxXSxbRjc3XSxbY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgorICAgICAgc3Vicm91dGluZSBmb28KKyAgICAgIGltcGxpY2l0IG5vbmUKKyAgICAgIGludGVnZXIqNCBhCisgICAgICBhPTAKKyAgICAgIHJldHVybgorICAgICAgZW5kCitFT0YKK10sWyQxXSxbR0NKXSxbY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgorcHVibGljIGNsYXNzIGZvbyB7CisgIHByaXZhdGUgaW50IGE7CisgIHB1YmxpYyB2b2lkIGJhciAodm9pZCkgeworICAgIGEgPSAwOworICB9Cit9OworRU9GCitdKQorZG5sIFBhcnNlIHRoZSBjb21waWxlciBvdXRwdXQgYW5kIGV4dHJhY3QgdGhlIG5lY2Vzc2FyeQorZG5sIG9iamVjdHMsIGxpYnJhcmllcyBhbmQgbGlicmFyeSBmbGFncy4KK2lmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCisgICMgUGFyc2UgdGhlIGNvbXBpbGVyIG91dHB1dCBhbmQgZXh0cmFjdCB0aGUgbmVjZXNzYXJ5CisgICMgb2JqZWN0cywgbGlicmFyaWVzIGFuZCBsaWJyYXJ5IGZsYWdzLgorCisgICMgU2VudGluZWwgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoZXRoZXIgb3Igbm90IHdlIGFyZSBiZWZvcmUKKyAgIyB0aGUgY29uZnRlc3Qgb2JqZWN0IGZpbGUuCisgIHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmU9bm8KKworICAjIFRoZSBgKicgaW4gdGhlIGNhc2UgbWF0Y2hlcyBmb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IHVzZSBgY2FzZScgaW4KKyAgIyAkb3V0cHV0X3ZlcmJvc2VfY21kIGNhbiB0cmlnZ2VyIGdsb2IgZXhwYW5zaW9uIGR1cmluZyB0aGUgbG9vcAorICAjIGV2YWwgd2l0aG91dCB0aGlzIHN1YnN0aXR1dGlvbi4KKyAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9ImAkZWNobyBcIlgkb3V0cHV0X3ZlcmJvc2VfbGlua19jbWRcIiB8ICRYc2VkIC1lIFwiJG5vX2dsb2Jfc3Vic3RcImAiCisKKyAgZm9yIHAgaW4gYGV2YWwgJG91dHB1dF92ZXJib3NlX2xpbmtfY21kYDsgZG8KKyAgICBjYXNlICRwIGluCisKKyAgICAtTCogfCAtUiogfCAtbCopCisgICAgICAgIyBTb21lIGNvbXBpbGVycyBwbGFjZSBzcGFjZSBiZXR3ZWVuICIte0wsUn0iIGFuZCB0aGUgcGF0aC4KKyAgICAgICAjIFJlbW92ZSB0aGUgc3BhY2UuCisgICAgICAgaWYgdGVzdCAkcCA9ICItTCIgXAorCSAgfHwgdGVzdCAkcCA9ICItUiI7IHRoZW4KKwkgcHJldj0kcAorCSBjb250aW51ZQorICAgICAgIGVsc2UKKwkgcHJldj0KKyAgICAgICBmaQorCisgICAgICAgaWYgdGVzdCAiJHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmUiID0gbm87IHRoZW4KKwkgY2FzZSAkcCBpbgorCSAtTCogfCAtUiopCisJICAgIyBJbnRlcm5hbCBjb21waWxlciBsaWJyYXJ5IHBhdGhzIHNob3VsZCBjb21lIGFmdGVyIHRob3NlCisJICAgIyBwcm92aWRlZCB0aGUgdXNlci4gIFRoZSBwb3N0ZGVwcyBhbHJlYWR5IGNvbWUgYWZ0ZXIgdGhlCisJICAgIyB1c2VyIHN1cHBsaWVkIGxpYnMgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBwcm9jZXNzIHRoZW0uCisJICAgaWYgdGVzdCAteiAiJF9MVF9BQ19UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoLCAkMSkiOyB0aGVuCisJICAgICBfTFRfQUNfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aCwgJDEpPSIke3ByZXZ9JHtwfSIKKwkgICBlbHNlCisJICAgICBfTFRfQUNfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aCwgJDEpPSIke19MVF9BQ19UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoLCAkMSl9ICR7cHJldn0ke3B9IgorCSAgIGZpCisJICAgOzsKKwkgIyBUaGUgIi1sIiBjYXNlIHdvdWxkIG5ldmVyIGNvbWUgYmVmb3JlIHRoZSBvYmplY3QgYmVpbmcKKwkgIyBsaW5rZWQsIHNvIGRvbid0IGJvdGhlciBoYW5kbGluZyB0aGlzIGNhc2UuCisJIGVzYWMKKyAgICAgICBlbHNlCisJIGlmIHRlc3QgLXogIiRfTFRfQUNfVEFHVkFSKHBvc3RkZXBzLCAkMSkiOyB0aGVuCisJICAgX0xUX0FDX1RBR1ZBUihwb3N0ZGVwcywgJDEpPSIke3ByZXZ9JHtwfSIKKwkgZWxzZQorCSAgIF9MVF9BQ19UQUdWQVIocG9zdGRlcHMsICQxKT0iJHtfTFRfQUNfVEFHVkFSKHBvc3RkZXBzLCAkMSl9ICR7cHJldn0ke3B9IgorCSBmaQorICAgICAgIGZpCisgICAgICAgOzsKKworICAgICouJG9iamV4dCkKKyAgICAgICAjIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSB0ZXN0IG9iamVjdCBmaWxlIG9ubHkgc2hvd3MgdXAKKyAgICAgICAjIG9uY2UgaW4gdGhlIGNvbXBpbGVyIG91dHB1dC4KKyAgICAgICBpZiB0ZXN0ICIkcCIgPSAiY29uZnRlc3QuJG9iamV4dCI7IHRoZW4KKwkgcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZT15ZXMKKwkgY29udGludWUKKyAgICAgICBmaQorCisgICAgICAgaWYgdGVzdCAiJHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmUiID0gbm87IHRoZW4KKwkgaWYgdGVzdCAteiAiJF9MVF9BQ19UQUdWQVIocHJlZGVwX29iamVjdHMsICQxKSI7IHRoZW4KKwkgICBfTFRfQUNfVEFHVkFSKHByZWRlcF9vYmplY3RzLCAkMSk9IiRwIgorCSBlbHNlCisJICAgX0xUX0FDX1RBR1ZBUihwcmVkZXBfb2JqZWN0cywgJDEpPSIkX0xUX0FDX1RBR1ZBUihwcmVkZXBfb2JqZWN0cywgJDEpICRwIgorCSBmaQorICAgICAgIGVsc2UKKwkgaWYgdGVzdCAteiAiJF9MVF9BQ19UQUdWQVIocG9zdGRlcF9vYmplY3RzLCAkMSkiOyB0aGVuCisJICAgX0xUX0FDX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKT0iJHAiCisJIGVsc2UKKwkgICBfTFRfQUNfVEFHVkFSKHBvc3RkZXBfb2JqZWN0cywgJDEpPSIkX0xUX0FDX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKSAkcCIKKwkgZmkKKyAgICAgICBmaQorICAgICAgIDs7CisKKyAgICAqKSA7OyAjIElnbm9yZSB0aGUgcmVzdC4KKworICAgIGVzYWMKKyAgZG9uZQorCisgICMgQ2xlYW4gdXAuCisgIHJtIC1mIGEub3V0IGEuZXhlCitlbHNlCisgIGVjaG8gImxpYnRvb2wubTQ6IGVycm9yOiBwcm9ibGVtIGNvbXBpbGluZyAkMSB0ZXN0IHByb2dyYW0iCitmaQorCiskcm0gLWYgY29uZmVzdC4kb2JqZXh0CisKK2Nhc2UgIiAkX0xUX0FDX1RBR1ZBUihwb3N0ZGVwcywgJDEpICIgaW4KKyoiIC1sYyAiKikgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vIDs7Citlc2FjCitdKSMgQUNfTElCVE9PTF9QT1NUREVQX1BSRURFUAorCisjIEFDX0xJQlRPT0xfTEFOR19GNzdfQ09ORklHCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJzIGZvciB0aGUgQyBjb21waWxlciBhcmUKKyMgc3VpdGFibHkgZGVmaW5lZC4gIFRob3NlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkKKyMgQUNfTElCVE9PTF9DT05GSUcgdG8gd3JpdGUgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgorQUNfREVGVU4oW0FDX0xJQlRPT0xfTEFOR19GNzdfQ09ORklHXSwgW19MVF9BQ19MQU5HX0Y3N19DT05GSUcoRjc3KV0pCitBQ19ERUZVTihbX0xUX0FDX0xBTkdfRjc3X0NPTkZJR10sCitbQUNfUkVRVUlSRShbQUNfUFJPR19GNzddKQorQUNfTEFOR19QVVNIKEZvcnRyYW4gNzcpCisKK19MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubworX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQorX0xUX0FDX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubworX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9CitfTFRfQUNfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPQorX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubworX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9CitfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0KK19MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPQorX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9bm8KK19MVF9BQ19UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSk9bm8KK19MVF9BQ19UQUdWQVIobW9kdWxlX2NtZHMsICQxKT0KK19MVF9BQ19UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9CitfTFRfQUNfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT11bmtub3duCitfTFRfQUNfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcworX0xUX0FDX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPQorX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQorX0xUX0FDX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9bm8KKworIyBTb3VyY2UgZmlsZSBleHRlbnNpb24gZm9yIGY3NyB0ZXN0IHNvdXJjZXMuCithY19leHQ9ZgorCisjIE9iamVjdCBmaWxlIGV4dGVuc2lvbiBmb3IgY29tcGlsZWQgZjc3IHRlc3Qgc291cmNlcy4KK29iamV4dD1vCitfTFRfQUNfVEFHVkFSKG9iamV4dCwgJDEpPSRvYmpleHQKKworIyBDb2RlIHRvIGJlIHVzZWQgaW4gc2ltcGxlIGNvbXBpbGUgdGVzdHMKK2x0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZT0iICAgICAgc3Vicm91dGluZSB0XG4gICAgICByZXR1cm5cbiAgICAgIGVuZFxuIgorCisjIENvZGUgdG8gYmUgdXNlZCBpbiBzaW1wbGUgbGluayB0ZXN0cworbHRfc2ltcGxlX2xpbmtfdGVzdF9jb2RlPSIgICAgICBwcm9ncmFtIHRcbiAgICAgIGVuZFxuIgorCisjIGx0bWFpbiBvbmx5IHVzZXMgJENDIGZvciB0YWdnZWQgY29uZmlndXJhdGlvbnMgc28gbWFrZSBzdXJlICRDQyBpcyBzZXQuCitfTFRfQUNfU1lTX0NPTVBJTEVSCisKKyMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCitsdF9zYXZlX0NDPSIkQ0MiCitDQz0ke0Y3Ny0iZjc3In0KK2NvbXBpbGVyPSRDQworX0xUX0FDX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQworY2NfYmFzZW5hbWU9YCRlY2hvIFgiJGNvbXBpbGVyIiB8ICRYc2VkIC1lICdzJV4uKi8lJSdgCisKK0FDX01TR19DSEVDS0lORyhbaWYgbGlidG9vbCBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzXSkKK0FDX01TR19SRVNVTFQoWyRjYW5fYnVpbGRfc2hhcmVkXSkKKworQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXNdKQordGVzdCAiJGNhbl9idWlsZF9zaGFyZWQiID0gIm5vIiAmJiBlbmFibGVfc2hhcmVkPW5vCisKKyMgT24gQUlYLCBzaGFyZWQgbGlicmFyaWVzIGFuZCBzdGF0aWMgbGlicmFyaWVzIHVzZSB0aGUgc2FtZSBuYW1lc3BhY2UsIGFuZAorIyBhcmUgYWxsIGJ1aWx0IGZyb20gUElDLgorY2FzZSAiJGhvc3Rfb3MiIGluCithaXgzKikKKyAgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0geWVzICYmIGVuYWJsZV9zdGF0aWM9bm8KKyAgaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4KKyAgICBhcmNoaXZlX2NtZHM9IiRhcmNoaXZlX2NtZHN+XCRSQU5MSUIgXCRsaWIiCisgICAgcG9zdGluc3RhbGxfY21kcz0nJFJBTkxJQiAkbGliJworICBmaQorICA7OworYWl4NCogfCBhaXg1KikKKyAgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0geWVzICYmIGVuYWJsZV9zdGF0aWM9bm8KKyAgOzsKK2VzYWMKK0FDX01TR19SRVNVTFQoWyRlbmFibGVfc2hhcmVkXSkKKworQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGJ1aWxkIHN0YXRpYyBsaWJyYXJpZXNdKQorIyBNYWtlIHN1cmUgZWl0aGVyIGVuYWJsZV9zaGFyZWQgb3IgZW5hYmxlX3N0YXRpYyBpcyB5ZXMuCit0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgfHwgZW5hYmxlX3N0YXRpYz15ZXMKK0FDX01TR19SRVNVTFQoWyRlbmFibGVfc3RhdGljXSkKKwordGVzdCAiJF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSkiID0gbm8gJiYgY2FuX2J1aWxkX3NoYXJlZD1ubworCitfTFRfQUNfVEFHVkFSKEdDQywgJDEpPSIkRzc3IgorX0xUX0FDX1RBR1ZBUihMRCwgJDEpPSIkTEQiCisKK0FDX0xJQlRPT0xfUFJPR19DT01QSUxFUl9QSUMoJDEpCitBQ19MSUJUT09MX1BST0dfQ0NfQ19PKCQxKQorQUNfTElCVE9PTF9TWVNfSEFSRF9MSU5LX0xPQ0tTKCQxKQorQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUygkMSkKK0FDX0xJQlRPT0xfU1lTX0RZTkFNSUNfTElOS0VSKCQxKQorQUNfTElCVE9PTF9QUk9HX0xEX0hBUkRDT0RFX0xJQlBBVEgoJDEpCitBQ19MSUJUT09MX1NZU19MSUJfU1RSSVAKKworCitBQ19MSUJUT09MX0NPTkZJRygkMSkKKworQUNfTEFOR19QT1AKK0NDPSIkbHRfc2F2ZV9DQyIKK10pIyBBQ19MSUJUT09MX0xBTkdfRjc3X0NPTkZJRworCisKKyMgQUNfTElCVE9PTF9MQU5HX0dDSl9DT05GSUcKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFycyBmb3IgdGhlIEMgY29tcGlsZXIgYXJlCisjIHN1aXRhYmx5IGRlZmluZWQuICBUaG9zZSB2YXJpYWJsZXMgYXJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5CisjIEFDX0xJQlRPT0xfQ09ORklHIHRvIHdyaXRlIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KK0FDX0RFRlVOKFtBQ19MSUJUT09MX0xBTkdfR0NKX0NPTkZJR10sIFtfTFRfQUNfTEFOR19HQ0pfQ09ORklHKEdDSildKQorQUNfREVGVU4oW19MVF9BQ19MQU5HX0dDSl9DT05GSUddLAorW0FDX0xBTkdfU0FWRQorCisjIFNvdXJjZSBmaWxlIGV4dGVuc2lvbiBmb3IgSmF2YSB0ZXN0IHNvdXJjZXMuCithY19leHQ9amF2YQorCisjIE9iamVjdCBmaWxlIGV4dGVuc2lvbiBmb3IgY29tcGlsZWQgSmF2YSB0ZXN0IHNvdXJjZXMuCitvYmpleHQ9bworX0xUX0FDX1RBR1ZBUihvYmpleHQsICQxKT0kb2JqZXh0CisKKyMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBjb21waWxlIHRlc3RzCitsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGU9ImNsYXNzIGZvbyB7fVxuIgorCisjIENvZGUgdG8gYmUgdXNlZCBpbiBzaW1wbGUgbGluayB0ZXN0cworbHRfc2ltcGxlX2xpbmtfdGVzdF9jb2RlPSdwdWJsaWMgY2xhc3MgY29uZnRlc3QgeyBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmd2KSB7fTsgfVxuJworCisjIGx0bWFpbiBvbmx5IHVzZXMgJENDIGZvciB0YWdnZWQgY29uZmlndXJhdGlvbnMgc28gbWFrZSBzdXJlICRDQyBpcyBzZXQuCitfTFRfQUNfU1lTX0NPTVBJTEVSCisKKyMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCitsdF9zYXZlX0NDPSIkQ0MiCitDQz0ke0dDSi0iZ2NqIn0KK2NvbXBpbGVyPSRDQworX0xUX0FDX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQworCisjIEdDSiBkaWQgbm90IGV4aXN0IGF0IHRoZSB0aW1lIEdDQyBkaWRuJ3QgaW1wbGljaXRseSBsaW5rIGxpYmMgaW4uCitfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KKworQUNfTElCVE9PTF9QUk9HX0NPTVBJTEVSX05PX1JUVEkoJDEpCitBQ19MSUJUT09MX1BST0dfQ09NUElMRVJfUElDKCQxKQorQUNfTElCVE9PTF9QUk9HX0NDX0NfTygkMSkKK0FDX0xJQlRPT0xfU1lTX0hBUkRfTElOS19MT0NLUygkMSkKK0FDX0xJQlRPT0xfUFJPR19MRF9TSExJQlMoJDEpCitBQ19MSUJUT09MX1NZU19EWU5BTUlDX0xJTktFUigkMSkKK0FDX0xJQlRPT0xfUFJPR19MRF9IQVJEQ09ERV9MSUJQQVRIKCQxKQorQUNfTElCVE9PTF9TWVNfTElCX1NUUklQCitBQ19MSUJUT09MX0RMT1BFTl9TRUxGKCQxKQorCitBQ19MSUJUT09MX0NPTkZJRygkMSkKKworQUNfTEFOR19SRVNUT1JFCitDQz0iJGx0X3NhdmVfQ0MiCitdKSMgQUNfTElCVE9PTF9MQU5HX0dDSl9DT05GSUcKKworCisjIEFDX0xJQlRPT0xfTEFOR19SQ19DT05GSUcKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFycyBmb3IgdGhlIFdpbmRvd3MgcmVzb3VyY2UgY29tcGlsZXIgYXJlCisjIHN1aXRhYmx5IGRlZmluZWQuICBUaG9zZSB2YXJpYWJsZXMgYXJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5CisjIEFDX0xJQlRPT0xfQ09ORklHIHRvIHdyaXRlIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KK0FDX0RFRlVOKFtBQ19MSUJUT09MX0xBTkdfUkNfQ09ORklHXSwgW19MVF9BQ19MQU5HX1JDX0NPTkZJRyhSQyldKQorQUNfREVGVU4oW19MVF9BQ19MQU5HX1JDX0NPTkZJR10sCitbQUNfTEFOR19TQVZFCisKKyMgU291cmNlIGZpbGUgZXh0ZW5zaW9uIGZvciBSQyB0ZXN0IHNvdXJjZXMuCithY19leHQ9cmMKKworIyBPYmplY3QgZmlsZSBleHRlbnNpb24gZm9yIGNvbXBpbGVkIFJDIHRlc3Qgc291cmNlcy4KK29iamV4dD1vCitfTFRfQUNfVEFHVkFSKG9iamV4dCwgJDEpPSRvYmpleHQKKworIyBDb2RlIHRvIGJlIHVzZWQgaW4gc2ltcGxlIGNvbXBpbGUgdGVzdHMKK2x0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZT0nc2FtcGxlIE1FTlUgeyBNRU5VSVRFTSAiJlNvdXAiLCAxMDAsIENIRUNLRUQgfVxuJworCisjIENvZGUgdG8gYmUgdXNlZCBpbiBzaW1wbGUgbGluayB0ZXN0cworbHRfc2ltcGxlX2xpbmtfdGVzdF9jb2RlPSIkbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIgorCisjIGx0bWFpbiBvbmx5IHVzZXMgJENDIGZvciB0YWdnZWQgY29uZmlndXJhdGlvbnMgc28gbWFrZSBzdXJlICRDQyBpcyBzZXQuCitfTFRfQUNfU1lTX0NPTVBJTEVSCisKKyMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCitsdF9zYXZlX0NDPSIkQ0MiCitDQz0ke1JDLSJ3aW5kcmVzIn0KK2NvbXBpbGVyPSRDQworX0xUX0FDX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQworX0xUX0FDX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbywgJDEpPXllcworCitBQ19MSUJUT09MX0NPTkZJRygkMSkKKworQUNfTEFOR19SRVNUT1JFCitDQz0iJGx0X3NhdmVfQ0MiCitdKSMgQUNfTElCVE9PTF9MQU5HX1JDX0NPTkZJRworCisKKyMgQUNfTElCVE9PTF9DT05GSUcoW1RBR05BTUVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIElmIFRBR05BTUUgaXMgbm90IHBhc3NlZCwgdGhlbiBjcmVhdGUgYW4gaW5pdGlhbCBsaWJ0b29sIHNjcmlwdAorIyB3aXRoIGEgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZyb20gdGhlIHVudGFnZ2VkIGNvbmZpZyB2YXJzLiAgT3RoZXJ3aXNlCisjIGFkZCBjb2RlIHRvIGNvbmZpZy5zdGF0dXMgZm9yIGFwcGVuZGluZyB0aGUgY29uZmlndXJhdGlvbiBuYW1lZCBieQorIyBUQUdOQU1FIGZyb20gdGhlIG1hdGNoaW5nIHRhZ2dlZCBjb25maWcgdmFycy4KK0FDX0RFRlVOKFtBQ19MSUJUT09MX0NPTkZJR10sCitbIyBUaGUgZWxzZSBjbGF1c2Ugc2hvdWxkIG9ubHkgZmlyZSB3aGVuIGJvb3RzdHJhcHBpbmcgdGhlCisjIGxpYnRvb2wgZGlzdHJpYnV0aW9uLCBvdGhlcndpc2UgeW91IGZvcmdvdCB0byBzaGlwIGx0bWFpbi5zaAorIyB3aXRoIHlvdXIgcGFja2FnZSwgYW5kIHlvdSB3aWxsIGdldCBjb21wbGFpbnRzIHRoYXQgdGhlcmUgYXJlCisjIG5vIHJ1bGVzIHRvIGdlbmVyYXRlIGx0bWFpbi5zaC4KK2lmIHRlc3QgLWYgIiRsdG1haW4iOyB0aGVuCisgICMgU2VlIGlmIHdlIGFyZSBydW5uaW5nIG9uIHpzaCwgYW5kIHNldCB0aGUgb3B0aW9ucyB3aGljaCBhbGxvdyBvdXIgY29tbWFuZHMgdGhyb3VnaAorICAjIHdpdGhvdXQgcmVtb3ZhbCBvZiBcIGVzY2FwZXMuCisgIGlmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgOyB0aGVuCisgICAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKKyAgZmkKKyAgIyBOb3cgcXVvdGUgYWxsIHRoZSB0aGluZ3MgdGhhdCBtYXkgY29udGFpbiBtZXRhY2hhcmFjdGVycyB3aGlsZSBiZWluZworICAjIGNhcmVmdWwgbm90IHRvIG92ZXJxdW90ZSB0aGUgQUNfU1VCU1RlZCB2YWx1ZXMuICBXZSB0YWtlIGNvcGllcyBvZiB0aGUKKyAgIyB2YXJpYWJsZXMgYW5kIHF1b3RlIHRoZSBjb3BpZXMgZm9yIGdlbmVyYXRpb24gb2YgdGhlIGxpYnRvb2wgc2NyaXB0LgorICBmb3IgdmFyIGluIGVjaG8gb2xkX0NDIG9sZF9DRkxBR1MgQVIgQVJfRkxBR1MgRUdSRVAgUkFOTElCIExOX1MgTFRDQyBOTSBcCisgICAgU0VEIFNIRUxMIFNUUklQIFwKKyAgICBsaWJuYW1lX3NwZWMgbGlicmFyeV9uYW1lc19zcGVjIHNvbmFtZV9zcGVjIGV4dHJhY3RfZXhwc3ltc19jbWRzIFwKKyAgICBvbGRfc3RyaXBsaWIgc3RyaXBsaWIgZmlsZV9tYWdpY19jbWQgZmluaXNoX2NtZHMgZmluaXNoX2V2YWwgXAorICAgIGRlcGxpYnNfY2hlY2tfbWV0aG9kIHJlbG9hZF9mbGFnIHJlbG9hZF9jbWRzIG5lZWRfbG9ja3MgXAorICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAorICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKKyAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMgXAorICAgIG9sZF9wb3N0aW5zdGFsbF9jbWRzIG9sZF9wb3N0dW5pbnN0YWxsX2NtZHMgXAorICAgIF9MVF9BQ19UQUdWQVIoY29tcGlsZXIsICQxKSBcCisgICAgX0xUX0FDX1RBR1ZBUihDQywgJDEpIFwKKyAgICBfTFRfQUNfVEFHVkFSKExELCAkMSkgXAorICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpIFwKKyAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSkgXAorICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKSBcCisgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpIFwKKyAgICBfTFRfQUNfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpIFwKKyAgICBfTFRfQUNfVEFHVkFSKHRocmVhZF9zYWZlX2ZsYWdfc3BlYywgJDEpIFwKKyAgICBfTFRfQUNfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSkgXAorICAgIF9MVF9BQ19UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpIFwKKyAgICBfTFRfQUNfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKSBcCisgICAgX0xUX0FDX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSkgXAorICAgIF9MVF9BQ19UQUdWQVIocHJlZGVwX29iamVjdHMsICQxKSBcCisgICAgX0xUX0FDX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKSBcCisgICAgX0xUX0FDX1RBR1ZBUihwcmVkZXBzLCAkMSkgXAorICAgIF9MVF9BQ19UQUdWQVIocG9zdGRlcHMsICQxKSBcCisgICAgX0xUX0FDX1RBR1ZBUihjb21waWxlcl9saWJfc2VhcmNoX3BhdGgsICQxKSBcCisgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKSBcCisgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSkgXAorICAgIF9MVF9BQ19UQUdWQVIocG9zdGluc3RhbGxfY21kcywgJDEpIFwKKyAgICBfTFRfQUNfVEFHVkFSKHBvc3R1bmluc3RhbGxfY21kcywgJDEpIFwKKyAgICBfTFRfQUNfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzLCAkMSkgXAorICAgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKSBcCisgICAgX0xUX0FDX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpIFwKKyAgICBfTFRfQUNfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKSBcCisgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkgXAorICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpIFwKKyAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKSBcCisgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKSBcCisgICAgX0xUX0FDX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpIFwKKyAgICBfTFRfQUNfVEFHVkFSKG1vZHVsZV9leHBzeW1fY21kcywgJDEpIFwKKyAgICBfTFRfQUNfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfY19vLCAkMSkgXAorICAgIF9MVF9BQ19UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSkgXAorICAgIF9MVF9BQ19UQUdWQVIoaW5jbHVkZV9leHBzeW1zLCAkMSk7IGRvCisKKyAgICBjYXNlICR2YXIgaW4KKyAgICBfTFRfQUNfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKSB8IFwKKyAgICBfTFRfQUNfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKSB8IFwKKyAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpIHwgXAorICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpIHwgXAorICAgIF9MVF9BQ19UQUdWQVIobW9kdWxlX2NtZHMsICQxKSB8IFwKKyAgICBfTFRfQUNfVEFHVkFSKG1vZHVsZV9leHBzeW1fY21kcywgJDEpIHwgXAorICAgIF9MVF9BQ19UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHMsICQxKSB8IFwKKyAgICBfTFRfQUNfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKSB8IFwKKyAgICBleHRyYWN0X2V4cHN5bXNfY21kcyB8IHJlbG9hZF9jbWRzIHwgZmluaXNoX2NtZHMgfCBcCisgICAgcG9zdGluc3RhbGxfY21kcyB8IHBvc3R1bmluc3RhbGxfY21kcyB8IFwKKyAgICBvbGRfcG9zdGluc3RhbGxfY21kcyB8IG9sZF9wb3N0dW5pbnN0YWxsX2NtZHMgfCBcCisgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIHwgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMpCisgICAgICAjIERvdWJsZS1xdW90ZSBkb3VibGUtZXZhbGVkIHN0cmluZ3MuCisgICAgICBldmFsICJsdF8kdmFyPVxcXCJcYFwkZWNobyBcIlhcJCR2YXJcIiB8IFwkWHNlZCAtZSBcIlwkZG91YmxlX3F1b3RlX3N1YnN0XCIgLWUgXCJcJHNlZF9xdW90ZV9zdWJzdFwiIC1lIFwiXCRkZWxheV92YXJpYWJsZV9zdWJzdFwiXGBcXFwiIgorICAgICAgOzsKKyAgICAqKQorICAgICAgZXZhbCAibHRfJHZhcj1cXFwiXGBcJGVjaG8gXCJYXCQkdmFyXCIgfCBcJFhzZWQgLWUgXCJcJHNlZF9xdW90ZV9zdWJzdFwiXGBcXFwiIgorICAgICAgOzsKKyAgICBlc2FjCisgIGRvbmUKKworICBjYXNlICRsdF9lY2hvIGluCisgIConXFskXTAgLS1mYWxsYmFjay1lY2hvIicpCisgICAgbHRfZWNobz1gJGVjaG8gIlgkbHRfZWNobyIgfCAkWHNlZCAtZSAncy9cXFxcXFxcWyRdMCAtLWZhbGxiYWNrLWVjaG8iWyRdL1skXTAgLS1mYWxsYmFjay1lY2hvIi8nYAorICAgIDs7CisgIGVzYWMKKworaWZlbHNlKFskMV0sIFtdLAorICBbY2ZnZmlsZT0iJHtvZmlsZX1UIgorICB0cmFwICIkcm0gXCIkY2ZnZmlsZVwiOyBleGl0IDEiIDEgMiAxNQorICAkcm0gLWYgIiRjZmdmaWxlIgorICBBQ19NU0dfTk9USUNFKFtjcmVhdGluZyAkb2ZpbGVdKV0sCisgIFtjZmdmaWxlPSIkb2ZpbGUiXSkKKworICBjYXQgPDxfX0VPRl9fID4+ICIkY2ZnZmlsZSIKK2lmZWxzZShbJDFdLCBbXSwKK1sjISAkU0hFTEwKKworIyBgJGVjaG8gIiRjZmdmaWxlIiB8IHNlZCAncyVeLiovJSUnYCAtIFByb3ZpZGUgZ2VuZXJhbGl6ZWQgbGlicmFyeS1idWlsZGluZyBzdXBwb3J0IHNlcnZpY2VzLgorIyBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSAkUFJPR1JBTSAoR05VICRQQUNLQUdFICRWRVJTSU9OJFRJTUVTVEFNUCkKKyMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgorIworIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEKKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sOgorIyBPcmlnaW5hbGx5IGJ5IEdvcmRvbiBNYXR6aWdrZWl0IDxnb3JkQGdudS5haS5taXQuZWR1PiwgMTk5NgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorIworIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91CisjIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQorIyBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHlvdSBtYXkgaW5jbHVkZSBpdCB1bmRlcgorIyB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCisKKyMgQSBzZWQgcHJvZ3JhbSB0aGF0IGRvZXMgbm90IHRydW5jYXRlIG91dHB1dC4KK1NFRD0kbHRfU0VECisKKyMgU2VkIHRoYXQgaGVscHMgdXMgYXZvaWQgYWNjaWRlbnRhbGx5IHRyaWdnZXJpbmcgZWNobygxKSBvcHRpb25zIGxpa2UgLW4uCitYc2VkPSIkU0VEIC1lIHMvXlgvLyIKKworIyBUaGUgSFAtVVgga3NoIGFuZCBQT1NJWCBzaGVsbCBwcmludCB0aGUgdGFyZ2V0IGRpcmVjdG9yeSB0byBzdGRvdXQKKyMgaWYgQ0RQQVRIIGlzIHNldC4KK2lmIHRlc3QgIlhcJHtDRFBBVEgrc2V0fSIgPSBYc2V0OyB0aGVuIENEUEFUSD06OyBleHBvcnQgQ0RQQVRIOyBmaQorCisjIFRoZSBuYW1lcyBvZiB0aGUgdGFnZ2VkIGNvbmZpZ3VyYXRpb25zIHN1cHBvcnRlZCBieSB0aGlzIHNjcmlwdC4KK2F2YWlsYWJsZV90YWdzPQorCisjICMjIyBCRUdJTiBMSUJUT09MIENPTkZJR10sCitbIyAjIyMgQkVHSU4gTElCVE9PTCBUQUcgQ09ORklHOiAkdGFnbmFtZV0pCisKKyMgTGlidG9vbCB3YXMgY29uZmlndXJlZCBvbiBob3N0IGAoaG9zdG5hbWUgfHwgdW5hbWUgLW4pIDI+L2Rldi9udWxsIHwgc2VkIDFxYDoKKworIyBTaGVsbCB0byB1c2Ugd2hlbiBpbnZva2luZyBzaGVsbCBzY3JpcHRzLgorU0hFTEw9JGx0X1NIRUxMCisKKyMgV2hldGhlciBvciBub3QgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllcy4KK2J1aWxkX2xpYnRvb2xfbGlicz0kZW5hYmxlX3NoYXJlZAorCisjIFdoZXRoZXIgb3Igbm90IHRvIGJ1aWxkIHN0YXRpYyBsaWJyYXJpZXMuCitidWlsZF9vbGRfbGlicz0kZW5hYmxlX3N0YXRpYworCisjIFdoZXRoZXIgb3Igbm90IHRvIGFkZCAtbGMgZm9yIGJ1aWxkaW5nIHNoYXJlZCBsaWJyYXJpZXMuCitidWlsZF9saWJ0b29sX25lZWRfbGM9JF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKQorCisjIFdoZXRoZXIgb3Igbm90IHRvIGRpc2FsbG93IHNoYXJlZCBsaWJzIHdoZW4gcnVudGltZSBsaWJzIGFyZSBzdGF0aWMKK2FsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcz0kX0xUX0FDX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSkKKworIyBXaGV0aGVyIG9yIG5vdCB0byBvcHRpbWl6ZSBmb3IgZmFzdCBpbnN0YWxsYXRpb24uCitmYXN0X2luc3RhbGw9JGVuYWJsZV9mYXN0X2luc3RhbGwKKworIyBUaGUgaG9zdCBzeXN0ZW0uCitob3N0X2FsaWFzPSRob3N0X2FsaWFzCitob3N0PSRob3N0CisKKyMgQW4gZWNobyBwcm9ncmFtIHRoYXQgZG9lcyBub3QgaW50ZXJwcmV0IGJhY2tzbGFzaGVzLgorZWNobz0kbHRfZWNobworCisjIFRoZSBhcmNoaXZlci4KK0FSPSRsdF9BUgorQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCisKKyMgQSBDIGNvbXBpbGVyLgorTFRDQz0kbHRfTFRDQworCisjIEEgbGFuZ3VhZ2Utc3BlY2lmaWMgY29tcGlsZXIuCitDQz0kbHRfW11fTFRfQUNfVEFHVkFSKGNvbXBpbGVyLCAkMSkKKworIyBJcyB0aGUgY29tcGlsZXIgdGhlIEdOVSBDIGNvbXBpbGVyPword2l0aF9nY2M9JF9MVF9BQ19UQUdWQVIoR0NDLCAkMSkKKworIyBBbiBFUkUgbWF0Y2hlci4KK0VHUkVQPSRsdF9FR1JFUAorCisjIFRoZSBsaW5rZXIgdXNlZCB0byBidWlsZCBsaWJyYXJpZXMuCitMRD0kbHRfW11fTFRfQUNfVEFHVkFSKExELCAkMSkKKworIyBXaGV0aGVyIHdlIG5lZWQgaGFyZCBvciBzb2Z0IGxpbmtzLgorTE5fUz0kbHRfTE5fUworCisjIEEgQlNELWNvbXBhdGlibGUgbm0gcHJvZ3JhbS4KK05NPSRsdF9OTQorCisjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtCitTVFJJUD0kbHRfU1RSSVAKKworIyBVc2VkIHRvIGV4YW1pbmUgbGlicmFyaWVzIHdoZW4gZmlsZV9tYWdpY19jbWQgYmVnaW5zICJmaWxlIgorTUFHSUNfQ01EPSRNQUdJQ19DTUQKKworIyBVc2VkIG9uIGN5Z3dpbjogRExMIGNyZWF0aW9uIHByb2dyYW0uCitETExUT09MPSIkRExMVE9PTCIKKworIyBVc2VkIG9uIGN5Z3dpbjogb2JqZWN0IGR1bXBlci4KK09CSkRVTVA9IiRPQkpEVU1QIgorCisjIFVzZWQgb24gY3lnd2luOiBhc3NlbWJsZXIuCitBUz0iJEFTIgorCisjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KK29iamRpcj0kb2JqZGlyCisKKyMgSG93IHRvIGNyZWF0ZSByZWxvYWRhYmxlIG9iamVjdCBmaWxlcy4KK3JlbG9hZF9mbGFnPSRsdF9yZWxvYWRfZmxhZworcmVsb2FkX2NtZHM9JGx0X3JlbG9hZF9jbWRzCisKKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KK3dsPSRsdF9bXV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpCisKKyMgT2JqZWN0IGZpbGUgc3VmZml4IChub3JtYWxseSAibyIpLgorb2JqZXh0PSIkYWNfb2JqZXh0IgorCisjIE9sZCBhcmNoaXZlIHN1ZmZpeCAobm9ybWFsbHkgImEiKS4KK2xpYmV4dD0iJGxpYmV4dCIKKworIyBTaGFyZWQgbGlicmFyeSBzdWZmaXggKG5vcm1hbGx5ICIuc28iKS4KK3NocmV4dF9jbWRzPSckc2hyZXh0X2NtZHMnCisKKyMgRXhlY3V0YWJsZSBmaWxlIHN1ZmZpeCAobm9ybWFsbHkgIiIpLgorZXhlZXh0PSIkZXhlZXh0IgorCisjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KK3BpY19mbGFnPSRsdF9bXV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKQorcGljX21vZGU9JHBpY19tb2RlCisKKyMgV2hhdCBpcyB0aGUgbWF4aW11bSBsZW5ndGggb2YgYSBjb21tYW5kPworbWF4X2NtZF9sZW49JGx0X2N2X3N5c19tYXhfY21kX2xlbgorCisjIERvZXMgY29tcGlsZXIgc2ltdWx0YW5lb3VzbHkgc3VwcG9ydCAtYyBhbmQgLW8gb3B0aW9ucz8KK2NvbXBpbGVyX2Nfbz0kbHRfW11fTFRfQUNfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfY19vLCAkMSkKKworIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbiA/CituZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCisKKyMgRG8gd2UgbmVlZCB0aGUgbGliIHByZWZpeCBmb3IgbW9kdWxlcz8KK25lZWRfbGliX3ByZWZpeD0kbmVlZF9saWJfcHJlZml4CisKKyMgRG8gd2UgbmVlZCBhIHZlcnNpb24gZm9yIGxpYnJhcmllcz8KK25lZWRfdmVyc2lvbj0kbmVlZF92ZXJzaW9uCisKKyMgV2hldGhlciBkbG9wZW4gaXMgc3VwcG9ydGVkLgorZGxvcGVuX3N1cHBvcnQ9JGVuYWJsZV9kbG9wZW4KKworIyBXaGV0aGVyIGRsb3BlbiBvZiBwcm9ncmFtcyBpcyBzdXBwb3J0ZWQuCitkbG9wZW5fc2VsZj0kZW5hYmxlX2Rsb3Blbl9zZWxmCisKKyMgV2hldGhlciBkbG9wZW4gb2Ygc3RhdGljYWxseSBsaW5rZWQgcHJvZ3JhbXMgaXMgc3VwcG9ydGVkLgorZGxvcGVuX3NlbGZfc3RhdGljPSRlbmFibGVfZGxvcGVuX3NlbGZfc3RhdGljCisKKyMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KK2xpbmtfc3RhdGljX2ZsYWc9JGx0X1tdX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpCisKKyMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KK25vX2J1aWx0aW5fZmxhZz0kbHRfW11fTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSkKKworIyBDb21waWxlciBmbGFnIHRvIGFsbG93IHJlZmxleGl2ZSBkbG9wZW5zLgorZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjPSRsdF9bXV9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSkKKworIyBDb21waWxlciBmbGFnIHRvIGdlbmVyYXRlIHNoYXJlZCBvYmplY3RzIGRpcmVjdGx5IGZyb20gYXJjaGl2ZXMuCit3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0kbHRfW11fTFRfQUNfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSkKKworIyBDb21waWxlciBmbGFnIHRvIGdlbmVyYXRlIHRocmVhZC1zYWZlIG9iamVjdHMuCit0aHJlYWRfc2FmZV9mbGFnX3NwZWM9JGx0X1tdX0xUX0FDX1RBR1ZBUih0aHJlYWRfc2FmZV9mbGFnX3NwZWMsICQxKQorCisjIExpYnJhcnkgdmVyc2lvbmluZyB0eXBlLgordmVyc2lvbl90eXBlPSR2ZXJzaW9uX3R5cGUKKworIyBGb3JtYXQgb2YgbGlicmFyeSBuYW1lIHByZWZpeC4KK2xpYm5hbWVfc3BlYz0kbHRfbGlibmFtZV9zcGVjCisKKyMgTGlzdCBvZiBhcmNoaXZlIG5hbWVzLiAgRmlyc3QgbmFtZSBpcyB0aGUgcmVhbCBvbmUsIHRoZSByZXN0IGFyZSBsaW5rcy4KKyMgVGhlIGxhc3QgbmFtZSBpcyB0aGUgb25lIHRoYXQgdGhlIGxpbmtlciBmaW5kcyB3aXRoIC1sTkFNRS4KK2xpYnJhcnlfbmFtZXNfc3BlYz0kbHRfbGlicmFyeV9uYW1lc19zcGVjCisKKyMgVGhlIGNvZGVkIG5hbWUgb2YgdGhlIGxpYnJhcnksIGlmIGRpZmZlcmVudCBmcm9tIHRoZSByZWFsIG5hbWUuCitzb25hbWVfc3BlYz0kbHRfc29uYW1lX3NwZWMKKworIyBDb21tYW5kcyB1c2VkIHRvIGJ1aWxkIGFuZCBpbnN0YWxsIGFuIG9sZC1zdHlsZSBhcmNoaXZlLgorUkFOTElCPSRsdF9SQU5MSUIKK29sZF9hcmNoaXZlX2NtZHM9JGx0X1tdX0xUX0FDX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSkKK29sZF9wb3N0aW5zdGFsbF9jbWRzPSRsdF9vbGRfcG9zdGluc3RhbGxfY21kcworb2xkX3Bvc3R1bmluc3RhbGxfY21kcz0kbHRfb2xkX3Bvc3R1bmluc3RhbGxfY21kcworCisjIENyZWF0ZSBhbiBvbGQtc3R5bGUgYXJjaGl2ZSBmcm9tIGEgc2hhcmVkIGFyY2hpdmUuCitvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSRsdF9bXV9MVF9BQ19UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpCisKKyMgQ3JlYXRlIGEgdGVtcG9yYXJ5IG9sZC1zdHlsZSBhcmNoaXZlIHRvIGxpbmsgaW5zdGVhZCBvZiBhIHNoYXJlZCBhcmNoaXZlLgorb2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHM9JGx0X1tdX0xUX0FDX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcywgJDEpCisKKyMgQ29tbWFuZHMgdXNlZCB0byBidWlsZCBhbmQgaW5zdGFsbCBhIHNoYXJlZCBhcmNoaXZlLgorYXJjaGl2ZV9jbWRzPSRsdF9bXV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSkKK2FyY2hpdmVfZXhwc3ltX2NtZHM9JGx0X1tdX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSkKK3Bvc3RpbnN0YWxsX2NtZHM9JGx0X3Bvc3RpbnN0YWxsX2NtZHMKK3Bvc3R1bmluc3RhbGxfY21kcz0kbHRfcG9zdHVuaW5zdGFsbF9jbWRzCisKKyMgQ29tbWFuZHMgdXNlZCB0byBidWlsZCBhIGxvYWRhYmxlIG1vZHVsZSAoYXNzdW1lZCBzYW1lIGFzIGFib3ZlIGlmIGVtcHR5KQorbW9kdWxlX2NtZHM9JGx0X1tdX0xUX0FDX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpCittb2R1bGVfZXhwc3ltX2NtZHM9JGx0X1tdX0xUX0FDX1RBR1ZBUihtb2R1bGVfZXhwc3ltX2NtZHMsICQxKQorCisjIENvbW1hbmRzIHRvIHN0cmlwIGxpYnJhcmllcy4KK29sZF9zdHJpcGxpYj0kbHRfb2xkX3N0cmlwbGliCitzdHJpcGxpYj0kbHRfc3RyaXBsaWIKKworIyBEZXBlbmRlbmNpZXMgdG8gcGxhY2UgYmVmb3JlIHRoZSBvYmplY3RzIGJlaW5nIGxpbmtlZCB0byBjcmVhdGUgYQorIyBzaGFyZWQgbGlicmFyeS4KK3ByZWRlcF9vYmplY3RzPSRsdF9bXV9MVF9BQ19UQUdWQVIocHJlZGVwX29iamVjdHMsICQxKQorCisjIERlcGVuZGVuY2llcyB0byBwbGFjZSBhZnRlciB0aGUgb2JqZWN0cyBiZWluZyBsaW5rZWQgdG8gY3JlYXRlIGEKKyMgc2hhcmVkIGxpYnJhcnkuCitwb3N0ZGVwX29iamVjdHM9JGx0X1tdX0xUX0FDX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKQorCisjIERlcGVuZGVuY2llcyB0byBwbGFjZSBiZWZvcmUgdGhlIG9iamVjdHMgYmVpbmcgbGlua2VkIHRvIGNyZWF0ZSBhCisjIHNoYXJlZCBsaWJyYXJ5LgorcHJlZGVwcz0kbHRfW11fTFRfQUNfVEFHVkFSKHByZWRlcHMsICQxKQorCisjIERlcGVuZGVuY2llcyB0byBwbGFjZSBhZnRlciB0aGUgb2JqZWN0cyBiZWluZyBsaW5rZWQgdG8gY3JlYXRlIGEKKyMgc2hhcmVkIGxpYnJhcnkuCitwb3N0ZGVwcz0kbHRfW11fTFRfQUNfVEFHVkFSKHBvc3RkZXBzLCAkMSkKKworIyBUaGUgbGlicmFyeSBzZWFyY2ggcGF0aCB1c2VkIGludGVybmFsbHkgYnkgdGhlIGNvbXBpbGVyIHdoZW4gbGlua2luZworIyBhIHNoYXJlZCBsaWJyYXJ5LgorY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoPSRsdF9bXV9MVF9BQ19UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoLCAkMSkKKworIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KK2RlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAorCisjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gZmlsZV9tYWdpYy4KK2ZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAorCisjIEZsYWcgdGhhdCBhbGxvd3Mgc2hhcmVkIGxpYnJhcmllcyB3aXRoIHVuZGVmaW5lZCBzeW1ib2xzIHRvIGJlIGJ1aWx0LgorYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JGx0X1tdX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpCisKKyMgRmxhZyB0aGF0IGZvcmNlcyBubyB1bmRlZmluZWQgc3ltYm9scy4KK25vX3VuZGVmaW5lZF9mbGFnPSRsdF9bXV9MVF9BQ19UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKQorCisjIENvbW1hbmRzIHVzZWQgdG8gZmluaXNoIGEgbGlidG9vbCBsaWJyYXJ5IGluc3RhbGxhdGlvbiBpbiBhIGRpcmVjdG9yeS4KK2ZpbmlzaF9jbWRzPSRsdF9maW5pc2hfY21kcworCisjIFNhbWUgYXMgYWJvdmUsIGJ1dCBhIHNpbmdsZSBzY3JpcHQgZnJhZ21lbnQgdG8gYmUgZXZhbGVkIGJ1dCBub3Qgc2hvd24uCitmaW5pc2hfZXZhbD0kbHRfZmluaXNoX2V2YWwKKworIyBUYWtlIHRoZSBvdXRwdXQgb2Ygbm0gYW5kIHByb2R1Y2UgYSBsaXN0aW5nIG9mIHJhdyBzeW1ib2xzIGFuZCBDIG5hbWVzLgorZ2xvYmFsX3N5bWJvbF9waXBlPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlCisKKyMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBwcm9wZXIgQyBkZWNsYXJhdGlvbgorZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wKKworIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIKK2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCisKKyMgVGhpcyBpcyB0aGUgc2hhcmVkIGxpYnJhcnkgcnVudGltZSBwYXRoIHZhcmlhYmxlLgorcnVucGF0aF92YXI9JHJ1bnBhdGhfdmFyCisKKyMgVGhpcyBpcyB0aGUgc2hhcmVkIGxpYnJhcnkgcGF0aCB2YXJpYWJsZS4KK3NobGlicGF0aF92YXI9JHNobGlicGF0aF92YXIKKworIyBJcyBzaGxpYnBhdGggc2VhcmNoZWQgYmVmb3JlIHRoZSBoYXJkLWNvZGVkIGxpYnJhcnkgc2VhcmNoIHBhdGg/CitzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9JHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aAorCisjIEhvdyB0byBoYXJkY29kZSBhIHNoYXJlZCBsaWJyYXJ5IHBhdGggaW50byBhbiBleGVjdXRhYmxlLgoraGFyZGNvZGVfYWN0aW9uPSRfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2FjdGlvbiwgJDEpCisKKyMgV2hldGhlciB3ZSBzaG91bGQgaGFyZGNvZGUgbGlicmFyeSBwYXRocyBpbnRvIGxpYnJhcmllcy4KK2hhcmRjb2RlX2ludG9fbGlicz0kaGFyZGNvZGVfaW50b19saWJzCisKKyMgRmxhZyB0byBoYXJkY29kZSBcJGxpYmRpciBpbnRvIGEgYmluYXJ5IGR1cmluZyBsaW5raW5nLgorIyBUaGlzIG11c3Qgd29yayBldmVuIGlmIFwkbGliZGlyIGRvZXMgbm90IGV4aXN0LgoraGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0kbHRfW11fTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKQorCisjIElmIGxkIGlzIHVzZWQgd2hlbiBsaW5raW5nLCBmbGFnIHRvIGhhcmRjb2RlIFwkbGliZGlyIGludG8KKyMgYSBiaW5hcnkgZHVyaW5nIGxpbmtpbmcuIFRoaXMgbXVzdCB3b3JrIGV2ZW4gaWYgXCRsaWJkaXIgZG9lcworIyBub3QgZXhpc3QuCitoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSRsdF9bXV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpCisKKyMgV2hldGhlciB3ZSBuZWVkIGEgc2luZ2xlIC1ycGF0aCBmbGFnIHdpdGggYSBzZXBhcmF0ZWQgYXJndW1lbnQuCitoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPSRsdF9bXV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpCisKKyMgU2V0IHRvIHllcyBpZiB1c2luZyBESVIvbGliTkFNRSR7c2hhcmVkX2V4dH0gZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzIERJUiBpbnRvIHRoZQorIyByZXN1bHRpbmcgYmluYXJ5LgoraGFyZGNvZGVfZGlyZWN0PSRfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpCisKKyMgU2V0IHRvIHllcyBpZiB1c2luZyB0aGUgLUxESVIgZmxhZyBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMgRElSIGludG8gdGhlCisjIHJlc3VsdGluZyBiaW5hcnkuCitoYXJkY29kZV9taW51c19MPSRfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKQorCisjIFNldCB0byB5ZXMgaWYgdXNpbmcgU0hMSUJQQVRIX1ZBUj1ESVIgZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzIERJUiBpbnRvCisjIHRoZSByZXN1bHRpbmcgYmluYXJ5LgoraGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0kX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSkKKworIyBTZXQgdG8geWVzIGlmIGJ1aWxkaW5nIGEgc2hhcmVkIGxpYnJhcnkgYXV0b21hdGljYWxseSBoYXJkY29kZXMgRElSIGludG8gdGhlIGxpYnJhcnkKKyMgYW5kIGFsbCBzdWJzZXF1ZW50IGxpYnJhcmllcyBhbmQgZXhlY3V0YWJsZXMgbGlua2VkIGFnYWluc3QgaXQuCitoYXJkY29kZV9hdXRvbWF0aWM9JF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSkKKworIyBWYXJpYWJsZXMgd2hvc2UgdmFsdWVzIHNob3VsZCBiZSBzYXZlZCBpbiBsaWJ0b29sIHdyYXBwZXIgc2NyaXB0cyBhbmQKKyMgcmVzdG9yZWQgYXQgcmVsaW5rIHRpbWUuCit2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0iJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIgorCisjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KK2xpbmtfYWxsX2RlcGxpYnM9JF9MVF9BQ19UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpCisKKyMgQ29tcGlsZS10aW1lIHN5c3RlbSBzZWFyY2ggcGF0aCBmb3IgbGlicmFyaWVzCitzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9JGx0X3N5c19saWJfc2VhcmNoX3BhdGhfc3BlYworCisjIFJ1bi10aW1lIHN5c3RlbSBzZWFyY2ggcGF0aCBmb3IgbGlicmFyaWVzCitzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0kbHRfc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMKKworIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgorZml4X3NyY2ZpbGVfcGF0aD0iJF9MVF9BQ19UQUdWQVIoZml4X3NyY2ZpbGVfcGF0aCwgJDEpIgorCisjIFNldCB0byB5ZXMgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCithbHdheXNfZXhwb3J0X3N5bWJvbHM9JF9MVF9BQ19UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSkKKworIyBUaGUgY29tbWFuZHMgdG8gbGlzdCBleHBvcnRlZCBzeW1ib2xzLgorZXhwb3J0X3N5bWJvbHNfY21kcz0kbHRfW11fTFRfQUNfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKQorCisjIFRoZSBjb21tYW5kcyB0byBleHRyYWN0IHRoZSBleHBvcnRlZCBzeW1ib2wgbGlzdCBmcm9tIGEgc2hhcmVkIGFyY2hpdmUuCitleHRyYWN0X2V4cHN5bXNfY21kcz0kbHRfZXh0cmFjdF9leHBzeW1zX2NtZHMKKworIyBTeW1ib2xzIHRoYXQgc2hvdWxkIG5vdCBiZSBsaXN0ZWQgaW4gdGhlIHByZWxvYWRlZCBzeW1ib2xzLgorZXhjbHVkZV9leHBzeW1zPSRsdF9bXV9MVF9BQ19UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSkKKworIyBTeW1ib2xzIHRoYXQgbXVzdCBhbHdheXMgYmUgZXhwb3J0ZWQuCitpbmNsdWRlX2V4cHN5bXM9JGx0X1tdX0xUX0FDX1RBR1ZBUihpbmNsdWRlX2V4cHN5bXMsICQxKQorCitpZmVsc2UoWyQxXSxbXSwKK1sjICMjIyBFTkQgTElCVE9PTCBDT05GSUddLAorWyMgIyMjIEVORCBMSUJUT09MIFRBRyBDT05GSUc6ICR0YWduYW1lXSkKKworX19FT0ZfXworCitpZmVsc2UoWyQxXSxbXSwgWworICBjYXNlICRob3N0X29zIGluCisgIGFpeDMqKQorICAgIGNhdCA8PFxFT0YgPj4gIiRjZmdmaWxlIgorCisjIEFJWCBzb21ldGltZXMgaGFzIHByb2JsZW1zIHdpdGggdGhlIEdDQyBjb2xsZWN0MiBwcm9ncmFtLiAgRm9yIHNvbWUKKyMgcmVhc29uLCBpZiB3ZSBzZXQgdGhlIENPTExFQ1RfTkFNRVMgZW52aXJvbm1lbnQgdmFyaWFibGUsIHRoZSBwcm9ibGVtcworIyB2YW5pc2ggaW4gYSBwdWZmIG9mIHNtb2tlLgoraWYgdGVzdCAiWCR7Q09MTEVDVF9OQU1FUytzZXR9IiAhPSBYc2V0OyB0aGVuCisgIENPTExFQ1RfTkFNRVM9CisgIGV4cG9ydCBDT0xMRUNUX05BTUVTCitmaQorRU9GCisgICAgOzsKKyAgZXNhYworCisgICMgV2UgdXNlIHNlZCBpbnN0ZWFkIG9mIGNhdCBiZWNhdXNlIGJhc2ggb24gREpHUFAgZ2V0cyBjb25mdXNlZCBpZgorICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCisgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCisgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/CisgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisKKyAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fCBcCisgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKKyAgY2htb2QgK3ggIiRvZmlsZSIKK10pCitlbHNlCisgICMgSWYgdGhlcmUgaXMgbm8gTWFrZWZpbGUgeWV0LCB3ZSByZWx5IG9uIGEgbWFrZSBydWxlIHRvIGV4ZWN1dGUKKyAgIyBgY29uZmlnLnN0YXR1cyAtLXJlY2hlY2snIHRvIHJlcnVuIHRoZXNlIHRlc3RzIGFuZCBjcmVhdGUgdGhlCisgICMgbGlidG9vbCBzY3JpcHQgdGhlbi4KKyAgbHRtYWluX2luPWBlY2hvICRsdG1haW4gfCBzZWQgLWUgJ3MvXC5zaCQvLmluLydgCisgIGlmIHRlc3QgLWYgIiRsdG1haW5faW4iOyB0aGVuCisgICAgdGVzdCAtZiBNYWtlZmlsZSAmJiBtYWtlICIkbHRtYWluIgorICBmaQorZmkKK10pIyBBQ19MSUJUT09MX0NPTkZJRworCisKKyMgQUNfTElCVE9PTF9QUk9HX0NPTVBJTEVSX05PX1JUVEkoW1RBR05BTUVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbQUNfTElCVE9PTF9QUk9HX0NPTVBJTEVSX05PX1JUVEldLAorW0FDX1JFUVVJUkUoW19MVF9BQ19TWVNfQ09NUElMRVJdKWRubAorCitfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSk9CisKK2lmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0nIC1mbm8tYnVpbHRpbicKKworICBBQ19MSUJUT09MX0NPTVBJTEVSX09QVElPTihbaWYgJGNvbXBpbGVyIHN1cHBvcnRzIC1mbm8tcnR0aSAtZm5vLWV4Y2VwdGlvbnNdLAorICAgIGx0X2N2X3Byb2dfY29tcGlsZXJfcnR0aV9leGNlcHRpb25zLAorICAgIFstZm5vLXJ0dGkgLWZuby1leGNlcHRpb25zXSwgW10sCisgICAgW19MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0iJF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKSAtZm5vLXJ0dGkgLWZuby1leGNlcHRpb25zIl0pCitmaQorXSkjIEFDX0xJQlRPT0xfUFJPR19DT01QSUxFUl9OT19SVFRJCisKKworIyBBQ19MSUJUT09MX1NZU19HTE9CQUxfU1lNQk9MX1BJUEUKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbQUNfTElCVE9PTF9TWVNfR0xPQkFMX1NZTUJPTF9QSVBFXSwKK1tBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pCitBQ19SRVFVSVJFKFtBQ19QUk9HX05NXSkKK0FDX1JFUVVJUkUoW0FDX09CSkVYVF0pCisjIENoZWNrIGZvciBjb21tYW5kIHRvIGdyYWIgdGhlIHJhdyBzeW1ib2wgbmFtZSBmb2xsb3dlZCBieSBDIHN5bWJvbCBmcm9tIG5tLgorQUNfTVNHX0NIRUNLSU5HKFtjb21tYW5kIHRvIHBhcnNlICROTSBvdXRwdXQgZnJvbSAkY29tcGlsZXIgb2JqZWN0XSkKK0FDX0NBQ0hFX1ZBTChbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZV0sCitbCisjIFRoZXNlIGFyZSBzYW5lIGRlZmF1bHRzIHRoYXQgd29yayBvbiBhdCBsZWFzdCBhIGZldyBvbGQgc3lzdGVtcy4KKyMgW1RoZXkgY29tZSBmcm9tIFVsdHJpeC4gIFdoYXQgY291bGQgYmUgb2xkZXIgdGhhbiBVbHRyaXg/ISEgOyldCisKKyMgQ2hhcmFjdGVyIGNsYXNzIGRlc2NyaWJpbmcgTk0gZ2xvYmFsIHN5bWJvbCBjb2Rlcy4KK3N5bWNvZGU9J1tbQkNERUdSU1RdXScKKworIyBSZWdleHAgdG8gbWF0Y2ggc3ltYm9scyB0aGF0IGNhbiBiZSBhY2Nlc3NlZCBkaXJlY3RseSBmcm9tIEMuCitzeW1wYXQ9J1woW1tfQS1aYS16XV1bW19BLVphLXowLTldXSpcKScKKworIyBUcmFuc2Zvcm0gdGhlIGFib3ZlIGludG8gYSByYXcgc3ltYm9sIGFuZCBhIEMgc3ltYm9sLgorc3lteGZybT0nXDEgXDJcMyBcMycKKworIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gYSBwcm9wZXIgQyBkZWNsYXJhdGlvbgorbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eLiAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDE7L3AnIgorCisjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXCkgJC8gIHtcXFwiXDFcXFwiLCAobHRfcHRyKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcIlwyXCIsIChsdF9wdHIpIFwmXDJ9LC9wJyIKKworIyBEZWZpbmUgc3lzdGVtLXNwZWNpZmljIHZhcmlhYmxlcy4KK2Nhc2UgJGhvc3Rfb3MgaW4KK2FpeCopCisgIHN5bWNvZGU9J1tbQkNEVF1dJworICA7OworY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqKQorICBzeW1jb2RlPSdbW0FCQ0RHSVNUV11dJworICA7OworaHB1eCopICMgSXRzIGxpbmtlciBkaXN0aW5ndWlzaGVzIGRhdGEgZnJvbSBjb2RlIHN5bWJvbHMKKyAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKyAgICBzeW1jb2RlPSdbW0FCQ0RFR1JTVF1dJworICBmaQorICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpICQvICB7XFxcIlwxXFxcIiwgKGx0X3B0cikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wiXDJcIiwgKGx0X3B0cikgXCZcMn0sL3AnIgorICA7OworaXJpeCogfCBub25zdG9wdXgqKQorICBzeW1jb2RlPSdbW0JDREVHUlNUXV0nCisgIDs7Citvc2YqKQorICBzeW1jb2RlPSdbW0JDREVHUVJTVF1dJworICA7Oworc29sYXJpcyogfCBzeXN2NSopCisgIHN5bWNvZGU9J1tbQkRSVF1dJworICA7Oworc3lzdjQpCisgIHN5bWNvZGU9J1tbREZOU1RVXV0nCisgIDs7Citlc2FjCisKKyMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgorb3B0X2NyPQorY2FzZSAkYnVpbGRfb3MgaW4KK21pbmd3KikKKyAgb3B0X2NyPWBlY2hvICd4XHswLDFcfScgfCB0ciB4ICdcMDE1J2AgIyBvcHRpb24gY3IgaW4gcmVnZXhwCisgIDs7Citlc2FjCisKKyMgSWYgd2UncmUgdXNpbmcgR05VIG5tLCB0aGVuIHVzZSBpdHMgc3RhbmRhcmQgc3ltYm9sIGNvZGVzLgorY2FzZSBgJE5NIC1WIDI+JjFgIGluCisqR05VKiB8ICond2l0aCBCRkQnKikKKyAgc3ltY29kZT0nW1tBQkNER0lSU1RXXV0nIDs7Citlc2FjCisKKyMgVHJ5IHdpdGhvdXQgYSBwcmVmaXggdW5kZXJjb3JlLCB0aGVuIHdpdGggaXQuCitmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCisKKyAgIyBXcml0ZSB0aGUgcmF3IGFuZCBDIGlkZW50aWZpZXJzLgorICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qW1sgCV1dXCgkc3ltY29kZSRzeW1jb2RlKlwpW1sgCV1dW1sgCV1dKlwoJGFjX3N5bXByZnhcKSRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKKworICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KKyAgcGlwZV93b3Jrcz1ubworCisgIHJtIC1mIGNvbmZ0ZXN0KgorICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCitjaGFyIG5tX3Rlc3RfdmFyOwordm9pZCBubV90ZXN0X2Z1bmMoKXt9CisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgoraW50IG1haW4oKXtubV90ZXN0X3Zhcj0nYSc7bm1fdGVzdF9mdW5jKCk7cmV0dXJuKDApO30KK0VPRgorCisgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCisgICAgIyBOb3cgdHJ5IHRvIGdyYWIgdGhlIHN5bWJvbHMuCisgICAgbmxpc3Q9Y29uZnRlc3Qubm0KKyAgICBpZiBBQ19UUllfRVZBTChOTSBjb25mdGVzdC4kYWNfb2JqZXh0IFx8ICRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFw+ICRubGlzdCkgJiYgdGVzdCAtcyAiJG5saXN0IjsgdGhlbgorICAgICAgIyBUcnkgc29ydGluZyBhbmQgdW5pcXVpZnlpbmcgdGhlIG91dHB1dC4KKyAgICAgIGlmIHNvcnQgIiRubGlzdCIgfCB1bmlxID4gIiRubGlzdCJUOyB0aGVuCisJbXYgLWYgIiRubGlzdCJUICIkbmxpc3QiCisgICAgICBlbHNlCisJcm0gLWYgIiRubGlzdCJUCisgICAgICBmaQorCisgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHdlIHNuYWdnZWQgYWxsIHRoZSBzeW1ib2xzIHdlIG5lZWQuCisgICAgICBpZiBncmVwICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisJaWYgZ3JlcCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKwkgIGNhdCA8PEVPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworRU9GCisJICAjIE5vdyBnZW5lcmF0ZSB0aGUgc3ltYm9sIGZpbGUuCisJICBldmFsICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiJyA8ICIkbmxpc3QiIHwgZ3JlcCAtdiBtYWluID4+IGNvbmZ0ZXN0LiRhY19leHQnCisKKwkgIGNhdCA8PEVPRiA+PiBjb25mdGVzdC4kYWNfZXh0CisjaWYgZGVmaW5lZCAoX19TVERDX18pICYmIF9fU1REQ19fCisjIGRlZmluZSBsdF9wdHJfdCB2b2lkICoKKyNlbHNlCisjIGRlZmluZSBsdF9wdHJfdCBjaGFyICoKKyMgZGVmaW5lIGNvbnN0CisjZW5kaWYKKworLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICovCitjb25zdCBzdHJ1Y3QgeworICBjb25zdCBjaGFyICpuYW1lOworICBsdF9wdHJfdCBhZGRyZXNzOworfQorbHRfcHJlbG9hZGVkX3N5bWJvbHNbW11dID0KK3sKK0VPRgorCSAgJFNFRCAicy9eJHN5bWNvZGUkc3ltY29kZSogXCguKlwpIFwoLipcKSQvICB7XCJcMlwiLCAobHRfcHRyX3QpIFwmXDJ9LC8iIDwgIiRubGlzdCIgfCBncmVwIC12IG1haW4gPj4gY29uZnRlc3QuJGFjX2V4dAorCSAgY2F0IDw8XEVPRiA+PiBjb25mdGVzdC4kYWNfZXh0CisgIHswLCAobHRfcHRyX3QpIDB9Cit9OworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorRU9GCisJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgorCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CisJICBsdF9zYXZlX0xJQlM9IiRMSUJTIgorCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorCSAgQ0ZMQUdTPSIkQ0ZMQUdTJF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKSIKKwkgIGlmIEFDX1RSWV9FVkFMKGFjX2xpbmspICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KKwkgICAgcGlwZV93b3Jrcz15ZXMKKwkgIGZpCisJICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgorCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisJZWxzZQorCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiZBU19NRVNTQUdFX0xPR19GRAorCWZpCisgICAgICBlbHNlCisJZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF92YXIgaW4gJG5saXN0IiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICBmaQorICAgIGVsc2UKKyAgICAgIGVjaG8gImNhbm5vdCBydW4gJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICBmaQorICBlbHNlCisgICAgZWNobyAiJHByb2duYW1lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisgIGZpCisgIHJtIC1mIGNvbmZ0ZXN0KiBjb25mdHN0KgorCisgICMgRG8gbm90IHVzZSB0aGUgZ2xvYmFsX3N5bWJvbF9waXBlIHVubGVzcyBpdCB3b3Jrcy4KKyAgaWYgdGVzdCAiJHBpcGVfd29ya3MiID0geWVzOyB0aGVuCisgICAgYnJlYWsKKyAgZWxzZQorICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9CisgIGZpCitkb25lCitdKQoraWYgdGVzdCAteiAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiOyB0aGVuCisgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPQorZmkKK2lmIHRlc3QgLXogIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIjsgdGhlbgorICBBQ19NU0dfUkVTVUxUKGZhaWxlZCkKK2Vsc2UKKyAgQUNfTVNHX1JFU1VMVChvaykKK2ZpCitdKSAjIEFDX0xJQlRPT0xfU1lTX0dMT0JBTF9TWU1CT0xfUElQRQorCisKKyMgQUNfTElCVE9PTF9QUk9HX0NPTVBJTEVSX1BJQyhbVEFHTkFNRV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0FDX0xJQlRPT0xfUFJPR19DT01QSUxFUl9QSUNdLAorW19MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPQorX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPQorX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPQorCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDXSkKKyBpZmVsc2UoWyQxXSxbQ1hYXSxbCisgICMgQysrIHNwZWNpZmljIGNhc2VzIGZvciBwaWMsIHN0YXRpYywgd2wsIGV0Yy4KKyAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KKyAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKyAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1zdGF0aWMnCisKKyAgICBjYXNlICRob3N0X29zIGluCisgICAgYWl4KikKKyAgICAgICMgQWxsIEFJWCBjb2RlIGlzIFBJQy4KKyAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisJIyBBSVggNSBub3cgc3VwcG9ydHMgSUE2NCBwcm9jZXNzb3IKKwlfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgZmkKKyAgICAgIDs7CisgICAgYW1pZ2FvcyopCisgICAgICAjIEZJWE1FOiB3ZSBuZWVkIGF0IGxlYXN0IDY4MDIwIGNvZGUgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllcywgYnV0CisgICAgICAjIGFkZGluZyB0aGUgYC1tNjgwMjAnIGZsYWcgdG8gR0NDIHByZXZlbnRzIGJ1aWxkaW5nIGFueXRoaW5nIGJldHRlciwKKyAgICAgICMgbGlrZSBgLW02ODA0MCcuCisgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1tNjgwMjAgLXJlc2lkZW50MzIgLW1hbHdheXMtcmVzdG9yZS1hNCcKKyAgICAgIDs7CisgICAgYmVvcyogfCBjeWd3aW4qIHwgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KiB8IG9zZjMqIHwgb3NmNCogfCBvc2Y1KikKKyAgICAgICMgUElDIGlzIHRoZSBkZWZhdWx0IGZvciB0aGVzZSBPU2VzLgorICAgICAgOzsKKyAgICBtaW5ndyogfCBvczIqIHwgcHczMiopCisgICAgICAjIFRoaXMgaGFjayBpcyBzbyB0aGF0IHRoZSBzb3VyY2UgZmlsZSBjYW4gdGVsbCB3aGV0aGVyIGl0IGlzIGJlaW5nCisgICAgICAjIGJ1aWx0IGZvciBpbmNsdXNpb24gaW4gYSBkbGwgKGFuZCBzaG91bGQgZXhwb3J0IHN5bWJvbHMgZm9yIGV4YW1wbGUpLgorICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctRERMTF9FWFBPUlQnCisgICAgICA7OworICAgIGRhcndpbiogfCByaGFwc29keSopCisgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBvbiB0aGlzIHBsYXRmb3JtCisgICAgICAjIENvbW1vbiBzeW1ib2xzIG5vdCBhbGxvd2VkIGluIE1IX0RZTElCIGZpbGVzCisgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mbm8tY29tbW9uJworICAgICAgOzsKKyAgICAqZGpncHAqKQorICAgICAgIyBESkdQUCBkb2VzIG5vdCBzdXBwb3J0IHNoYXJlZCBsaWJyYXJpZXMgYXQgYWxsCisgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9CisgICAgICA7OworICAgIHN5c3Y0Kk1QKikKKyAgICAgIGlmIHRlc3QgLWQgL3Vzci9uZWM7IHRoZW4KKwlfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9LUtjb25mb3JtX3BpYworICAgICAgZmkKKyAgICAgIDs7CisgICAgaHB1eCopCisgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgSUE2NCBIUC1VWCBhbmQgNjQtYml0IEhQLVVYLCBidXQKKyAgICAgICMgbm90IGZvciBQQSBIUC1VWC4KKyAgICAgIGNhc2UgIiRob3N0X2NwdSIgaW4KKyAgICAgIGhwcGEqNjQqfGlhNjQqKQorCTs7CisgICAgICAqKQorCV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZQSUMnCisJOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisgICAgKikKKyAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZQSUMnCisgICAgICA7OworICAgIGVzYWMKKyAgZWxzZQorICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgIGFpeDQqIHwgYWl4NSopCisJIyBBbGwgQUlYIGNvZGUgaXMgUElDLgorCWlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisJICAjIEFJWCA1IG5vdyBzdXBwb3J0cyBJQTY0IHByb2Nlc3NvcgorCSAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKwllbHNlCisJICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ibnNvIC1iSTovbGliL3N5c2NhbGxzLmV4cCcKKwlmaQorCTs7CisgICAgICBjaG9ydXMqKQorCWNhc2UgJGNjX2Jhc2VuYW1lIGluCisJY3hjaDY4KQorCSAgIyBHcmVlbiBIaWxscyBDKysgQ29tcGlsZXIKKwkgICMgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSItLW5vX2F1dG9faW5zdGFudGlhdGlvbiAtdSBfX21haW4gLXUgX19wcmVtYWluIC11IF9hYm9ydCAtciAkQ09PTF9ESVIvbGliL2xpYk9yYi5hICRNVk1FX0RJUi9saWIvQ0MvbGliQy5hICRNVk1FX0RJUi9saWIvY2xhc3NpeC9saWJjeC5zLmEiCisJICA7OworCWVzYWMKKwk7OworICAgICAgZGd1eCopCisJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKwkgIGVjKyspCisJICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisJICAgIDs7CisJICBnaGN4KQorCSAgICAjIEdyZWVuIEhpbGxzIEMrKyBDb21waWxlcgorCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1waWMnCisJICAgIDs7CisJICAqKQorCSAgICA7OworCWVzYWMKKwk7OworICAgICAgZnJlZWJzZCogfCBrZnJlZWJzZCotZ251KQorCSMgRnJlZUJTRCB1c2VzIEdOVSBDKysKKwk7OworICAgICAgaHB1eDkqIHwgaHB1eDEwKiB8IGhwdXgxMSopCisJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKwkgIENDKQorCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKwkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSIke2FjX2N2X3Byb2dfY2Nfd2x9LWEgJHthY19jdl9wcm9nX2NjX3dsfWFyY2hpdmUiCisJICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgIT0gaWE2NDsgdGhlbgorCSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nK1onCisJICAgIGZpCisJICAgIDs7CisJICBhQ0MpCisJICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9IiR7YWNfY3ZfcHJvZ19jY193bH0tYSAke2FjX2N2X3Byb2dfY2Nfd2x9YXJjaGl2ZSIKKwkgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgorCSAgICBocHBhKjY0KnxpYTY0KikKKwkgICAgICAjICtaIHRoZSBkZWZhdWx0CisJICAgICAgOzsKKwkgICAgKikKKwkgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9JytaJworCSAgICAgIDs7CisJICAgIGVzYWMKKwkgICAgOzsKKwkgICopCisJICAgIDs7CisJZXNhYworCTs7CisgICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorCWNhc2UgJGNjX2Jhc2VuYW1lIGluCisJICBDQykKKwkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisJICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLW5vbl9zaGFyZWQnCisJICAgICMgQ0MgcGljIGZsYWcgLUtQSUMgaXMgdGhlIGRlZmF1bHQuCisJICAgIDs7CisJICAqKQorCSAgICA7OworCWVzYWMKKwk7OworICAgICAgbGludXgqKQorCWNhc2UgJGNjX2Jhc2VuYW1lIGluCisJICBLQ0MpCisJICAgICMgS0FJIEMrKyBDb21waWxlcgorCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLS1iYWNrZW5kIC1XbCwnCisJICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZQSUMnCisJICAgIDs7CisJICBpY3BjKQorCSAgICAjIEludGVsIEMrKworCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKwkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKKwkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctc3RhdGljJworCSAgICA7OworCSAgY3h4KQorCSAgICAjIENvbXBhcSBDKysKKwkgICAgIyBNYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGlzIGVtcHR5LiAgSXQgYXBwZWFycyB0aGF0IGFsbCBBbHBoYQorCSAgICAjIExpbnV4IGFuZCBDb21wYXEgVHJ1NjQgVW5peCBvYmplY3RzIGFyZSBQSUMuCisJICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KKwkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctbm9uX3NoYXJlZCcKKwkgICAgOzsKKwkgICopCisJICAgIDs7CisJZXNhYworCTs7CisgICAgICBseW54b3MqKQorCTs7CisgICAgICBtODhrKikKKwk7OworICAgICAgbXZzKikKKwljYXNlICRjY19iYXNlbmFtZSBpbgorCSAgY3h4KQorCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1XIGMsZXhwb3J0YWxsJworCSAgICA7OworCSAgKikKKwkgICAgOzsKKwllc2FjCisJOzsKKyAgICAgIG5ldGJzZCogfCBuZXRic2RlbGYqLWdudSB8IGtuZXRic2QqLWdudSkKKwk7OworICAgICAgb3NmMyogfCBvc2Y0KiB8IG9zZjUqKQorCWNhc2UgJGNjX2Jhc2VuYW1lIGluCisJICBLQ0MpCisJICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctLWJhY2tlbmQgLVdsLCcKKwkgICAgOzsKKwkgIFJDQykKKwkgICAgIyBSYXRpb25hbCBDKysgMi40LjEKKwkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctcGljJworCSAgICA7OworCSAgY3h4KQorCSAgICAjIERpZ2l0YWwvQ29tcGFxIEMrKworCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKwkgICAgIyBNYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGlzIGVtcHR5LiAgSXQgYXBwZWFycyB0aGF0IGFsbCBBbHBoYQorCSAgICAjIExpbnV4IGFuZCBDb21wYXEgVHJ1NjQgVW5peCBvYmplY3RzIGFyZSBQSUMuCisJICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KKwkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctbm9uX3NoYXJlZCcKKwkgICAgOzsKKwkgICopCisJICAgIDs7CisJZXNhYworCTs7CisgICAgICBwc29zKikKKwk7OworICAgICAgc2NvKikKKwljYXNlICRjY19iYXNlbmFtZSBpbgorCSAgQ0MpCisJICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZQSUMnCisJICAgIDs7CisJICAqKQorCSAgICA7OworCWVzYWMKKwk7OworICAgICAgc29sYXJpcyopCisJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKwkgIENDKQorCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCisJICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisJICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisJICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctUW9wdGlvbiBsZCAnCisJICAgIDs7CisJICBnY3gpCisJICAgICMgR3JlZW4gSGlsbHMgQysrIENvbXBpbGVyCisJICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLVBJQycKKwkgICAgOzsKKwkgICopCisJICAgIDs7CisJZXNhYworCTs7CisgICAgICBzdW5vczQqKQorCWNhc2UgJGNjX2Jhc2VuYW1lIGluCisJICBDQykKKwkgICAgIyBTdW4gQysrIDQueAorCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1waWMnCisJICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisJICAgIDs7CisJICBsY2MpCisJICAgICMgTHVjaWQKKwkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctcGljJworCSAgICA7OworCSAgKikKKwkgICAgOzsKKwllc2FjCisJOzsKKyAgICAgIHRhbmRlbSopCisJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKwkgIE5DQykKKwkgICAgIyBOb25TdG9wLVVYIE5DQyAzLjIwCisJICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisJICAgIDs7CisJICAqKQorCSAgICA7OworCWVzYWMKKwk7OworICAgICAgdW5peHdhcmUqKQorCTs7CisgICAgICB2eHdvcmtzKikKKwk7OworICAgICAgKikKKwlfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfY2FuX2J1aWxkX3NoYXJlZCwgJDEpPW5vCisJOzsKKyAgICBlc2FjCisgIGZpCitdLAorWworICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXN0YXRpYycKKworICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgIGFpeCopCisgICAgICAjIEFsbCBBSVggY29kZSBpcyBQSUMuCisgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorCSMgQUlYIDUgbm93IHN1cHBvcnRzIElBNjQgcHJvY2Vzc29yCisJX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKyAgICAgIGZpCisgICAgICA7OworCisgICAgYW1pZ2FvcyopCisgICAgICAjIEZJWE1FOiB3ZSBuZWVkIGF0IGxlYXN0IDY4MDIwIGNvZGUgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllcywgYnV0CisgICAgICAjIGFkZGluZyB0aGUgYC1tNjgwMjAnIGZsYWcgdG8gR0NDIHByZXZlbnRzIGJ1aWxkaW5nIGFueXRoaW5nIGJldHRlciwKKyAgICAgICMgbGlrZSBgLW02ODA0MCcuCisgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1tNjgwMjAgLXJlc2lkZW50MzIgLW1hbHdheXMtcmVzdG9yZS1hNCcKKyAgICAgIDs7CisKKyAgICBiZW9zKiB8IGN5Z3dpbiogfCBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqIHwgb3NmMyogfCBvc2Y0KiB8IG9zZjUqKQorICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgZm9yIHRoZXNlIE9TZXMuCisgICAgICA7OworCisgICAgbWluZ3cqIHwgcHczMiogfCBvczIqKQorICAgICAgIyBUaGlzIGhhY2sgaXMgc28gdGhhdCB0aGUgc291cmNlIGZpbGUgY2FuIHRlbGwgd2hldGhlciBpdCBpcyBiZWluZworICAgICAgIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KKyAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLURETExfRVhQT1JUJworICAgICAgOzsKKworICAgIGRhcndpbiogfCByaGFwc29keSopCisgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBvbiB0aGlzIHBsYXRmb3JtCisgICAgICAjIENvbW1vbiBzeW1ib2xzIG5vdCBhbGxvd2VkIGluIE1IX0RZTElCIGZpbGVzCisgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mbm8tY29tbW9uJworICAgICAgOzsKKworICAgIG1zZG9zZGpncHAqKQorICAgICAgIyBKdXN0IGJlY2F1c2Ugd2UgdXNlIEdDQyBkb2Vzbid0IG1lYW4gd2Ugc3VkZGVubHkgZ2V0IHNoYXJlZCBsaWJyYXJpZXMKKyAgICAgICMgb24gc3lzdGVtcyB0aGF0IGRvbid0IHN1cHBvcnQgdGhlbS4KKyAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9jYW5fYnVpbGRfc2hhcmVkLCAkMSk9bm8KKyAgICAgIGVuYWJsZV9zaGFyZWQ9bm8KKyAgICAgIDs7CisKKyAgICBzeXN2NCpNUCopCisgICAgICBpZiB0ZXN0IC1kIC91c3IvbmVjOyB0aGVuCisJX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPS1LY29uZm9ybV9waWMKKyAgICAgIGZpCisgICAgICA7OworCisgICAgaHB1eCopCisgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgSUE2NCBIUC1VWCBhbmQgNjQtYml0IEhQLVVYLCBidXQKKyAgICAgICMgbm90IGZvciBQQSBIUC1VWC4KKyAgICAgIGNhc2UgIiRob3N0X2NwdSIgaW4KKyAgICAgIGhwcGEqNjQqfGlhNjQqKQorCSMgK1ogdGhlIGRlZmF1bHQKKwk7OworICAgICAgKikKKwlfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDJworCTs7CisgICAgICBlc2FjCisgICAgICA7OworCisgICAgKikKKyAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZQSUMnCisgICAgICA7OworICAgIGVzYWMKKyAgZWxzZQorICAgICMgUE9SVE1FIENoZWNrIGZvciBmbGFnIHRvIHBhc3MgbGlua2VyIGZsYWdzIHRocm91Z2ggdGhlIHN5c3RlbSBjb21waWxlci4KKyAgICBjYXNlICRob3N0X29zIGluCisgICAgYWl4KikKKyAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKwkjIEFJWCA1IG5vdyBzdXBwb3J0cyBJQTY0IHByb2Nlc3NvcgorCV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisgICAgICBlbHNlCisJX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctYm5zbyAtYkk6L2xpYi9zeXNjYWxscy5leHAnCisgICAgICBmaQorICAgICAgOzsKKworICAgIG1pbmd3KiB8IHB3MzIqIHwgb3MyKikKKyAgICAgICMgVGhpcyBoYWNrIGlzIHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQgaXMgYmVpbmcKKyAgICAgICMgYnVpbHQgZm9yIGluY2x1c2lvbiBpbiBhIGRsbCAoYW5kIHNob3VsZCBleHBvcnQgc3ltYm9scyBmb3IgZXhhbXBsZSkuCisgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1ERExMX0VYUE9SVCcKKyAgICAgIDs7CisKKyAgICBocHV4OSogfCBocHV4MTAqIHwgaHB1eDExKikKKyAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgZm9yIElBNjQgSFAtVVggYW5kIDY0LWJpdCBIUC1VWCwgYnV0CisgICAgICAjIG5vdCBmb3IgUEEgSFAtVVguCisgICAgICBjYXNlICIkaG9zdF9jcHUiIGluCisgICAgICBocHBhKjY0KnxpYTY0KikKKwkjICtaIHRoZSBkZWZhdWx0CisJOzsKKyAgICAgICopCisJX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPScrWicKKwk7OworICAgICAgZXNhYworICAgICAgIyBJcyB0aGVyZSBhIGJldHRlciBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyB0aGF0IHdvcmtzIHdpdGggdGhlIGJ1bmRsZWQgQ0M/CisgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9JyR7d2x9LWEgJHt3bH1hcmNoaXZlJworICAgICAgOzsKKworICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKyAgICAgICMgUElDICh3aXRoIC1LUElDKSBpcyB0aGUgZGVmYXVsdC4KKyAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLW5vbl9zaGFyZWQnCisgICAgICA7OworCisgICAgbmV3c29zNikKKyAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgOzsKKworICAgIGxpbnV4KikKKyAgICAgIGNhc2UgJENDIGluCisgICAgICBpY2MqIHwgZWNjKikKKwlfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKwlfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJworCV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXN0YXRpYycKKyAgICAgICAgOzsKKyAgICAgIGNjYyopCisgICAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworICAgICAgICAjIEFsbCBBbHBoYSBjb2RlIGlzIFBJQy4KKyAgICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctbm9uX3NoYXJlZCcKKyAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisKKyAgICBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCisgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKyAgICAgICMgQWxsIE9TRi8xIGNvZGUgaXMgUElDLgorICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctbm9uX3NoYXJlZCcKKyAgICAgIDs7CisKKyAgICBzY28zLjJ2NSopCisgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LcGljJworICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctZG4nCisgICAgICA7OworCisgICAgc29sYXJpcyopCisgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKyAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgOzsKKworICAgIHN1bm9zNCopCisgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVFvcHRpb24gbGQgJworICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctUElDJworICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKyAgICAgIDs7CisKKyAgICBzeXN2NCB8IHN5c3Y0LjJ1dzIqIHwgc3lzdjQuMyogfCBzeXN2NSopCisgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKyAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgOzsKKworICAgIHN5c3Y0Kk1QKikKKyAgICAgIGlmIHRlc3QgLWQgL3Vzci9uZWMgO3RoZW4KKwlfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LY29uZm9ybV9waWMnCisJX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKyAgICAgIGZpCisgICAgICA7OworCisgICAgdXRzNCopCisgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1waWMnCisgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgOzsKKworICAgICopCisgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfY2FuX2J1aWxkX3NoYXJlZCwgJDEpPW5vCisgICAgICA7OworICAgIGVzYWMKKyAgZmkKK10pCitBQ19NU0dfUkVTVUxUKFskX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpXSkKKworIworIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorIworaWYgdGVzdCAtbiAiJF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKSI7IHRoZW4KKyAgQUNfTElCVE9PTF9DT01QSUxFUl9PUFRJT04oW2lmICRjb21waWxlciBQSUMgZmxhZyAkX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpIHdvcmtzXSwKKyAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljX3dvcmtzLCAkMSksCisgICAgWyRfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSlpZmVsc2UoWyQxXSxbXSxbIC1EUElDXSxbaWZlbHNlKFskMV0sW0NYWF0sWyAtRFBJQ10sW10pXSldLCBbXSwKKyAgICBbY2FzZSAkX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpIGluCisgICAgICIiIHwgIiAiKikgOzsKKyAgICAgKikgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSIgJF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKSIgOzsKKyAgICAgZXNhY10sCisgICAgW19MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KKyAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX2Nhbl9idWlsZF9zaGFyZWQsICQxKT1ub10pCitmaQorY2FzZSAiJGhvc3Rfb3MiIGluCisgICMgRm9yIHBsYXRmb3JtcyB3aGljaCBkbyBub3Qgc3VwcG9ydCBQSUMsIC1EUElDIGlzIG1lYW5pbmdsZXNzOgorICAqZGpncHAqKQorICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KKyAgICA7OworICAqKQorICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0iJF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKWlmZWxzZShbJDFdLFtdLFsgLURQSUNdLFtpZmVsc2UoWyQxXSxbQ1hYXSxbIC1EUElDXSxbXSldKSIKKyAgICA7OworZXNhYworXSkKKworCisjIEFDX0xJQlRPT0xfUFJPR19MRF9TSExJQlMoW1RBR05BTUVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2VlIGlmIHRoZSBsaW5rZXIgc3VwcG9ydHMgYnVpbGRpbmcgc2hhcmVkIGxpYnJhcmllcy4KK0FDX0RFRlVOKFtBQ19MSUJUT09MX1BST0dfTERfU0hMSUJTXSwKK1tBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllc10pCitpZmVsc2UoWyQxXSxbQ1hYXSxbCisgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgYWl4NCogfCBhaXg1KikKKyAgICAjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KKyAgICAjIC1DIG1lYW5zIGRlbWFuZ2xlIHRvIEFJWCBubSwgYnV0IG1lYW5zIGRvbid0IGRlbWFuZ2xlIHdpdGggR05VIG5tCisgICAgaWYgJE5NIC1WIDI+JjEgfCBncmVwICdHTlUnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICBfTFRfQUNfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFxbJF0yID09ICJUIikgfHwgKFxbJF0yID09ICJEIikgfHwgKFxbJF0yID09ICJCIikpICYmIChbc3Vic3RyXShcWyRdMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXFskXTMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCisgICAgZWxzZQorICAgICAgX0xUX0FDX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQkNwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXFskXTIgPT0gIlQiKSB8fCAoXFskXTIgPT0gIkQiKSB8fCAoXFskXTIgPT0gIkIiKSkgJiYgKFtzdWJzdHJdKFxbJF0zLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcWyRdMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKKyAgICBmaQorICAgIDs7CisgIHB3MzIqKQorICAgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSIkbHRkbGxfY21kcyIKKyAgOzsKKyAgY3lnd2luKiB8IG1pbmd3KikKKyAgICBfTFRfQUNfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1NdXSAvcy8uKiBcKFtbXiBdXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltbQUlUV11dIC9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworICA7OworICBsaW51eCopCisgICAgX0xUX0FDX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9bm8KKyAgOzsKKyAgKikKKyAgICBfTFRfQUNfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworICA7OworICBlc2FjCitdLFsKKyAgcnVucGF0aF92YXI9CisgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KKyAgX0xUX0FDX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9bm8KKyAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0KKyAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9CisgIF9MVF9BQ19UQUdWQVIob2xkX2FyY2hpdmVfRnJvbV9uZXdfY21kcywgJDEpPQorICBfTFRfQUNfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzLCAkMSk9CisgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9CisgIF9MVF9BQ19UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0KKyAgX0xUX0FDX1RBR1ZBUih0aHJlYWRfc2FmZV9mbGFnX3NwZWMsICQxKT0KKyAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9CisgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPQorICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0KKyAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubworICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT1ubworICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT11bnN1cHBvcnRlZAorICBfTFRfQUNfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT11bmtub3duCisgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSk9bm8KKyAgX0xUX0FDX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpPQorICBfTFRfQUNfVEFHVkFSKG1vZHVsZV9leHBzeW1fY21kcywgJDEpPQorICBfTFRfQUNfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCisgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisgICMgaW5jbHVkZV9leHBzeW1zIHNob3VsZCBiZSBhIGxpc3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIHN5bWJvbHMgdG8gYmUgKmFsd2F5cyoKKyAgIyBpbmNsdWRlZCBpbiB0aGUgc3ltYm9sIGxpc3QKKyAgX0xUX0FDX1RBR1ZBUihpbmNsdWRlX2V4cHN5bXMsICQxKT0KKyAgIyBleGNsdWRlX2V4cHN5bXMgY2FuIGJlIGFuIGV4dGVuZGVkIHJlZ2V4cCBvZiBzeW1ib2xzIHRvIGV4Y2x1ZGUKKyAgIyBpdCB3aWxsIGJlIHdyYXBwZWQgYnkgYCAoJyBhbmQgYCkkJywgc28gb25lIG11c3Qgbm90IG1hdGNoIGJlZ2lubmluZyBvcgorICAjIGVuZCBvZiBsaW5lLiAgRXhhbXBsZTogYGF8YmN8LipkLionIHdpbGwgZXhjbHVkZSB0aGUgc3ltYm9scyBgYScgYW5kIGBiYycsCisgICMgYXMgd2VsbCBhcyBhbnkgc3ltYm9sIHRoYXQgY29udGFpbnMgYGQnLgorICBfTFRfQUNfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPSJfR0xPQkFMX09GRlNFVF9UQUJMRV8iCisgICMgQWx0aG91Z2ggX0dMT0JBTF9PRkZTRVRfVEFCTEVfIGlzIGEgdmFsaWQgc3ltYm9sIEMgbmFtZSwgbW9zdCBhLm91dAorICAjIHBsYXRmb3JtcyAoYWIpdXNlIGl0IGluIFBJQyBjb2RlLCBidXQgdGhlaXIgbGlua2VycyBnZXQgY29uZnVzZWQgaWYKKyAgIyB0aGUgc3ltYm9sIGlzIGV4cGxpY2l0bHkgcmVmZXJlbmNlZC4gIFNpbmNlIHBvcnRhYmxlIGNvZGUgY2Fubm90CisgICMgcmVseSBvbiB0aGlzIHN5bWJvbCBuYW1lLCBpdCdzIHByb2JhYmx5IGZpbmUgdG8gbmV2ZXIgaW5jbHVkZSBpdCBpbgorICAjIHByZWxvYWRlZCBzeW1ib2wgdGFibGVzLgorICBleHRyYWN0X2V4cHN5bXNfY21kcz0KKworICBjYXNlICRob3N0X29zIGluCisgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKikKKyAgICAjIEZJWE1FOiB0aGUgTVNWQysrIHBvcnQgaGFzbid0IGJlZW4gdGVzdGVkIGluIGEgbG9vb29uZyB0aW1lCisgICAgIyBXaGVuIG5vdCB1c2luZyBnY2MsIHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB3ZSBhcmUgdXNpbmcKKyAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorICAgICAgd2l0aF9nbnVfbGQ9bm8KKyAgICBmaQorICAgIDs7CisgIG9wZW5ic2QqKQorICAgIHdpdGhfZ251X2xkPW5vCisgICAgOzsKKyAgZXNhYworCisgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9eWVzCisgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KKyAgICAjIElmIGFyY2hpdmVfY21kcyBydW5zIExELCBub3QgQ0MsIHdsYXJjIHNob3VsZCBiZSBlbXB0eQorICAgIHdsYXJjPScke3dsfScKKworICAgICMgU2VlIGlmIEdOVSBsZCBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzLgorICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICBhaXgzKiB8IGFpeDQqIHwgYWl4NSopCisgICAgICAjIE9uIEFJWC9QUEMsIHRoZSBHTlUgbGlua2VyIGlzIHZlcnkgYnJva2VuCisgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiICE9IGlhNjQ7IHRoZW4KKwlfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJY2F0IDw8RU9GIDE+JjIKKworKioqIFdhcm5pbmc6IHRoZSBHTlUgbGlua2VyLCBhdCBsZWFzdCB1cCB0byByZWxlYXNlIDIuOS4xLCBpcyByZXBvcnRlZAorKioqIHRvIGJlIHVuYWJsZSB0byByZWxpYWJseSBjcmVhdGUgc2hhcmVkIGxpYnJhcmllcyBvbiBBSVguCisqKiogVGhlcmVmb3JlLCBsaWJ0b29sIGlzIGRpc2FibGluZyBzaGFyZWQgbGlicmFyaWVzIHN1cHBvcnQuICBJZiB5b3UKKyoqKiByZWFsbHkgY2FyZSBmb3Igc2hhcmVkIGxpYnJhcmllcywgeW91IG1heSB3YW50IHRvIG1vZGlmeSB5b3VyIFBBVEgKKyoqKiBzbyB0aGF0IGEgbm9uLUdOVSBsaW5rZXIgaXMgZm91bmQsIGFuZCB0aGVuIHJlc3RhcnQuCisKK0VPRgorICAgICAgZmkKKyAgICAgIDs7CisKKyAgICBhbWlnYW9zKikKKyAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRybSAkb3V0cHV0X29iamRpci9hMml4bGlicmFyeS5kYXRhfiRlY2hvICIjZGVmaW5lIE5BTUUgJGxpYm5hbWUiID4gJG91dHB1dF9vYmpkaXIvYTJpeGxpYnJhcnkuZGF0YX4kZWNobyAiI2RlZmluZSBMSUJSQVJZX0lEIDEiID4+ICRvdXRwdXRfb2JqZGlyL2EyaXhsaWJyYXJ5LmRhdGF+JGVjaG8gIiNkZWZpbmUgVkVSU0lPTiAkbWFqb3IiID4+ICRvdXRwdXRfb2JqZGlyL2EyaXhsaWJyYXJ5LmRhdGF+JGVjaG8gIiNkZWZpbmUgUkVWSVNJT04gJHJldmlzaW9uIiA+PiAkb3V0cHV0X29iamRpci9hMml4bGlicmFyeS5kYXRhfiRBUiAkQVJfRkxBR1MgJGxpYiAkbGlib2Jqc34kUkFOTElCICRsaWJ+KGNkICRvdXRwdXRfb2JqZGlyICYmIGEyaXhsaWJyYXJ5IC0zMiknCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJworICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCisKKyAgICAgICMgU2FtdWVsIEEuIEZhbHZvIElJIDxrYzV0amFAZG9scGhpbi5vcGVucHJvamVjdHMubmV0PiByZXBvcnRzCisgICAgICAjIHRoYXQgdGhlIHNlbWFudGljcyBvZiBkeW5hbWljIGxpYnJhcmllcyBvbiBBbWlnYU9TLCBhdCBsZWFzdCB1cAorICAgICAgIyB0byB2ZXJzaW9uIDQsIGlzIHRvIHNoYXJlIGRhdGEgYW1vbmcgbXVsdGlwbGUgcHJvZ3JhbXMgbGlua2VkCisgICAgICAjIHdpdGggdGhlIHNhbWUgZHluYW1pYyBsaWJyYXJ5LiAgU2luY2UgdGhpcyBkb2Vzbid0IG1hdGNoIHRoZQorICAgICAgIyBiZWhhdmlvciBvZiBzaGFyZWQgbGlicmFyaWVzIG9uIG90aGVyIHBsYXRmb3Jtcywgd2UgY2FuJ3QgdXNlCisgICAgICAjIHRoZW0uCisgICAgICBfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgICAgICA7OworCisgICAgYmVvcyopCisgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKwlfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKwkjIEpvc2VwaCBCZWNrZW5iYWNoIDxqcmIzQGJlc3QuY29tPiBzYXlzIHNvbWUgcmVsZWFzZXMgb2YgZ2NjCisJIyBzdXBwb3J0IC0tdW5kZWZpbmVkLiAgVGhpcyBkZXNlcnZlcyBzb21lIGludmVzdGlnYXRpb24uICBGSVhNRQorCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbm9zdGFydCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKyAgICAgIGVsc2UKKwlfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgICAgICBmaQorICAgICAgOzsKKworICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKikKKyAgICAgICMgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCisgICAgICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKKyAgICAgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorICAgICAgX0xUX0FDX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubworICAgICAgX0xUX0FDX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCisgICAgICBfTFRfQUNfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1NdXSAvcy8uKiBcKFtbXiBdXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltbQUlUV11dIC9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworCisgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWltYWdlLWJhc2U9MHgxMDAwMDAwMCAke3dsfS0tb3V0LWltcGxpYiwkbGliJworCSMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKKwkjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgorCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorCSAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworCWVsc2UKKwkgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworCSAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKwlmaX4KKwkkQ0MgLXNoYXJlZCAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0taW1hZ2UtYmFzZT0weDEwMDAwMDAwICAke3dsfS0tb3V0LWltcGxpYiwkbGliJworICAgICAgZWxzZQorCWxkX3NobGlicz1ubworICAgICAgZmkKKyAgICAgIDs7CisKKyAgICBuZXRic2QqIHwgbmV0YnNkZWxmKi1nbnUgfCBrbmV0YnNkKi1nbnUpCisgICAgICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8IGdyZXAgX19FTEZfXyA+L2Rldi9udWxsOyB0aGVuCisJX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKKwl3bGFyYz0KKyAgICAgIGVsc2UKKwlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICBmaQorICAgICAgOzsKKworICAgIHNvbGFyaXMqIHwgc3lzdjUqKQorICAgICAgaWYgJExEIC12IDI+JjEgfCBncmVwICdCRkQgMlwuOCcgPiAvZGV2L251bGw7IHRoZW4KKwlfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJY2F0IDw8RU9GIDE+JjIKKworKioqIFdhcm5pbmc6IFRoZSByZWxlYXNlcyAyLjguKiBvZiB0aGUgR05VIGxpbmtlciBjYW5ub3QgcmVsaWFibHkKKyoqKiBjcmVhdGUgc2hhcmVkIGxpYnJhcmllcyBvbiBTb2xhcmlzIHN5c3RlbXMuICBUaGVyZWZvcmUsIGxpYnRvb2wKKyoqKiBpcyBkaXNhYmxpbmcgc2hhcmVkIGxpYnJhcmllcyBzdXBwb3J0LiAgV2UgdXJnZSB5b3UgdG8gdXBncmFkZSBHTlUKKyoqKiBiaW51dGlscyB0byByZWxlYXNlIDIuOS4xIG9yIG5ld2VyLiAgQW5vdGhlciBvcHRpb24gaXMgdG8gbW9kaWZ5CisqKiogeW91ciBQQVRIIG9yIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gc28gdGhhdCB0aGUgbmF0aXZlIGxpbmtlciBpcworKioqIHVzZWQsIGFuZCB0aGVuIHJlc3RhcnQuCisKK0VPRgorICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKwlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICBlbHNlCisJX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgICAgZmkKKyAgICAgIDs7CisKKyAgICBzdW5vczQqKQorICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1hc3NlcnQgcHVyZS10ZXh0IC1Cc2hhcmVhYmxlIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgIHdsYXJjPQorICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKyAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgICA7OworCisgIGxpbnV4KikKKyAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgdG1wX2FyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0iJHRtcF9hcmNoaXZlX2NtZHMiCisgICAgICBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9bm8KKyAgICAgIGNhc2UgYCRMRCAtdiAyPi9kZXYvbnVsbGAgaW4KKyAgICAgICAgKlwgWzAxXS4qIHwgKlwgMi5bWzAtOV1dLiogfCAqXCAyLjEwLiopIDs7ICMgY2F0Y2ggdmVyc2lvbnMgPCAyLjExCisgICAgICAgICpcIDIuMTEuOTMuMC4yXCAqKSBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9eWVzIDs7ICMgUkg3LjMgLi4uCisgICAgICAgICpcIDIuMTEuOTIuMC4xMlwgKikgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPXllcyA7OyAjIE1hbmRyYWtlIDguMiAuLi4KKyAgICAgICAgKlwgMi4xMS4qKSA7OyAjIG90aGVyIDIuMTEgdmVyc2lvbnMKKyAgICAgICAgKikgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPXllcyA7OworICAgICAgZXNhYworICAgICAgaWYgdGVzdCAkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nID0geWVzOyB0aGVuCisgICAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KK2NhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyRlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAgICAgICAgJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXZlcnNpb24tc2NyaXB0ICR7d2x9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgICAgICBlbHNlCisgICAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSIkdG1wX2FyY2hpdmVfY21kcyIKKyAgICAgIGZpCisgICAgICBfTFRfQUNfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT1ubworICAgIGVsc2UKKyAgICAgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICBmaQorICAgIDs7CisKKyAgICAqKQorICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCisJX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgZWxzZQorCV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgIGZpCisgICAgICA7OworICAgIGVzYWMKKworICAgIGlmIHRlc3QgIiRfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpIiA9IHllczsgdGhlbgorICAgICAgcnVucGF0aF92YXI9TERfUlVOX1BBVEgKKyAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgX0xUX0FDX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1keW5hbWljJworICAgICAgIyBhbmNpZW50IEdOVSBsZCBkaWRuJ3Qgc3VwcG9ydCAtLXdob2xlLWFyY2hpdmUgZXQuIGFsLgorICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnbm8td2hvbGUtYXJjaGl2ZScgPiAvZGV2L251bGw7IHRoZW4KKyAJX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSIkd2xhcmMiJy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAnIiR3bGFyYyInLS1uby13aG9sZS1hcmNoaXZlJworICAgICAgZWxzZQorICAJX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQorICAgICAgZmkKKyAgICBmaQorICBlbHNlCisgICAgIyBQT1JUTUUgZmlsbCBpbiBhIGRlc2NyaXB0aW9uIG9mIHlvdXIgc3lzdGVtJ3MgbGlua2VyIChub3QgR05VIGxkKQorICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICBhaXgzKikKKyAgICAgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorICAgICAgX0xUX0FDX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT15ZXMKKyAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckTEQgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1iRTokZXhwb3J0X3N5bWJvbHMgLVQ1MTIgLUg1MTIgLWJNOlNSRX4kQVIgJEFSX0ZMQUdTICRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZScKKyAgICAgICMgTm90ZTogdGhpcyBsaW5rZXIgaGFyZGNvZGVzIHRoZSBkaXJlY3RvcmllcyBpbiBMSUJQQVRIIGlmIHRoZXJlCisgICAgICAjIGFyZSBubyBkaXJlY3RvcmllcyBzcGVjaWZpZWQgYnkgLUwuCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgLXogIiRsaW5rX3N0YXRpY19mbGFnIjsgdGhlbgorCSMgTmVpdGhlciBkaXJlY3QgaGFyZGNvZGluZyBub3Igc3RhdGljIGxpbmtpbmcgaXMgc3VwcG9ydGVkIHdpdGggYQorCSMgYnJva2VuIGNvbGxlY3QyLgorCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9dW5zdXBwb3J0ZWQKKyAgICAgIGZpCisgICAgICA7OworCisgICAgYWl4NCogfCBhaXg1KikKKyAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisJIyBPbiBJQTY0LCB0aGUgbGlua2VyIGRvZXMgcnVuIHRpbWUgbGlua2luZyBieSBkZWZhdWx0LCBzbyB3ZSBkb24ndAorCSMgaGF2ZSB0byBkbyBhbnl0aGluZyBzcGVjaWFsLgorCWFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KKwlleHBfc3ltX2ZsYWc9Jy1CZXhwb3J0JworCW5vX2VudHJ5X2ZsYWc9IiIKKyAgICAgIGVsc2UKKwkjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KKwkjIC1DIG1lYW5zIGRlbWFuZ2xlIHRvIEFJWCBubSwgYnV0IG1lYW5zIGRvbid0IGRlbWFuZ2xlIHdpdGggR05VIG5tCisJaWYgJE5NIC1WIDI+JjEgfCBncmVwICdHTlUnID4gL2Rldi9udWxsOyB0aGVuCisJICBfTFRfQUNfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFxbJF0yID09ICJUIikgfHwgKFxbJF0yID09ICJEIikgfHwgKFxbJF0yID09ICJCIikpICYmIChbc3Vic3RyXShcWyRdMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXFskXTMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCisJZWxzZQorCSAgX0xUX0FDX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQkNwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXFskXTIgPT0gIlQiKSB8fCAoXFskXTIgPT0gIkQiKSB8fCAoXFskXTIgPT0gIkIiKSkgJiYgKFtzdWJzdHJdKFxbJF0zLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcWyRdMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKKwlmaQorCWFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KKworCSMgVGVzdCBpZiB3ZSBhcmUgdHJ5aW5nIHRvIHVzZSBydW4gdGltZSBsaW5raW5nIG9yIG5vcm1hbAorCSMgQUlYIHN0eWxlIGxpbmtpbmcuIElmIC1icnRsIGlzIHNvbWV3aGVyZSBpbiBMREZMQUdTLCB3ZQorCSMgbmVlZCB0byBkbyBydW50aW1lIGxpbmtpbmcuCisJY2FzZSAkaG9zdF9vcyBpbiBhaXg0LltbMjNdXXxhaXg0LltbMjNdXS4qfGFpeDUqKQorCSAgZm9yIGxkX2ZsYWcgaW4gJExERkxBR1M7IGRvCisgIAkgIGlmICh0ZXN0ICRsZF9mbGFnID0gIi1icnRsIiB8fCB0ZXN0ICRsZF9mbGFnID0gIi1XbCwtYnJ0bCIpOyB0aGVuCisgIAkgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz15ZXMKKyAgCSAgICBicmVhaworICAJICBmaQorCSAgZG9uZQorCWVzYWMKKworCWV4cF9zeW1fZmxhZz0nLWJleHBvcnQnCisJbm9fZW50cnlfZmxhZz0nLWJub2VudHJ5JworICAgICAgZmkKKworICAgICAgIyBXaGVuIGxhcmdlIGV4ZWN1dGFibGVzIG9yIHNoYXJlZCBvYmplY3RzIGFyZSBidWlsdCwgQUlYIGxkIGNhbgorICAgICAgIyBoYXZlIHByb2JsZW1zIGNyZWF0aW5nIHRoZSB0YWJsZSBvZiBjb250ZW50cy4gIElmIGxpbmtpbmcgYSBsaWJyYXJ5CisgICAgICAjIG9yIHByb2dyYW0gcmVzdWx0cyBpbiAiZXJyb3IgVE9DIG92ZXJmbG93IiBhZGQgLW1taW5pbWFsLXRvYyB0bworICAgICAgIyBDWFhGTEFHUy9DRkxBR1MgZm9yIGcrKy9nY2MuICBJbiB0aGUgY2FzZXMgd2hlcmUgdGhhdCBpcyBub3QKKyAgICAgICMgZW5vdWdoIHRvIGZpeCB0aGUgcHJvYmxlbSwgYWRkIC1XbCwtYmJpZ3RvYyB0byBMREZMQUdTLgorCisgICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPScnCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcworICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9JzonCisgICAgICBfTFRfQUNfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKKworICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKwljYXNlICRob3N0X29zIGluIGFpeDQuWzAxMl18YWl4NC5bMDEyXS4qKQorCSMgV2Ugb25seSB3YW50IHRvIGRvIHRoaXMgb24gQUlYIDQuMiBhbmQgbG93ZXIsIHRoZSBjaGVjaworCSMgYmVsb3cgZm9yIGJyb2tlbiBjb2xsZWN0MiBkb2Vzbid0IHdvcmsgdW5kZXIgNC4zKworCSAgY29sbGVjdDJuYW1lPWAke0NDfSAtcHJpbnQtcHJvZy1uYW1lPWNvbGxlY3QyYAorCSAgaWYgdGVzdCAtZiAiJGNvbGxlY3QybmFtZSIgJiYgXAorICAJICAgc3RyaW5ncyAiJGNvbGxlY3QybmFtZSIgfCBncmVwIHJlc29sdmVfbGliX25hbWUgPi9kZXYvbnVsbAorCSAgdGhlbgorICAJICAjIFdlIGhhdmUgcmV3b3JrZWQgY29sbGVjdDIKKyAgCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKwkgIGVsc2UKKyAgCSAgIyBXZSBoYXZlIG9sZCBjb2xsZWN0MgorICAJICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXVuc3VwcG9ydGVkCisgIAkgICMgSXQgZmFpbHMgdG8gZmluZCB1bmluc3RhbGxlZCBsaWJyYXJpZXMgd2hlbiB0aGUgdW5pbnN0YWxsZWQKKyAgCSAgIyBwYXRoIGlzIG5vdCBsaXN0ZWQgaW4gdGhlIGxpYnBhdGguICBTZXR0aW5nIGhhcmRjb2RlX21pbnVzX0wKKyAgCSAgIyB0byB1bnN1cHBvcnRlZCBmb3JjZXMgcmVsaW5raW5nCisgIAkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcworICAJICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJworICAJICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0KKwkgIGZpCisJZXNhYworCXNoYXJlZF9mbGFnPSctc2hhcmVkJworICAgICAgZWxzZQorCSMgbm90IHVzaW5nIGdjYworCWlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisgIAkjIFZpc3VhbEFnZSBDKyssIFZlcnNpb24gNS41IGZvciBBSVggNUwgZm9yIElBLTY0LCBCZXRhIDMgUmVsZWFzZQorICAJIyBjaG9rZXMgb24gLVdsLC1HLiBUaGUgZm9sbG93aW5nIGxpbmUgaXMgY29ycmVjdDoKKwkgIHNoYXJlZF9mbGFnPSctRycKKwllbHNlCisgIAlpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KKwkgICAgc2hhcmVkX2ZsYWc9JyR7d2x9LUcnCisJICBlbHNlCisJICAgIHNoYXJlZF9mbGFnPScke3dsfS1iTTpTUkUnCisgIAlmaQorCWZpCisgICAgICBmaQorCisgICAgICAjIEl0IHNlZW1zIHRoYXQgLWJleHBhbGwgZG9lcyBub3QgZXhwb3J0IHN5bWJvbHMgYmVnaW5uaW5nIHdpdGgKKyAgICAgICMgdW5kZXJzY29yZSAoXyksIHNvIGl0IGlzIGJldHRlciB0byBnZW5lcmF0ZSBhIGxpc3Qgb2Ygc3ltYm9scyB0byBleHBvcnQuCisgICAgICBfTFRfQUNfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcworICAgICAgaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCisJIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVudGltZSBsb2FkaW5nIGZsYWdzICgtYnJ0bCksCisJIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgorCV9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nLWJlcm9rJworICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbiBlbXB0eSBleGVjdXRhYmxlLgorICAgICAgIF9MVF9BQ19TWVNfTElCUEFUSF9BSVgKKyAgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKwlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iXCRDQyInIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBlY2hvICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyBcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorICAgICAgIGVsc2UKKwlpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LVIgJGxpYmRpcjovdXNyL2xpYjovbGliJworCSAgX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSIteiBub2RlZnMiCisJICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICciXCR7d2x9JG5vX2VudHJ5X2ZsYWcgXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzIgorCWVsc2UKKwkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuIGVtcHR5IGV4ZWN1dGFibGUuCisJIF9MVF9BQ19TWVNfTElCUEFUSF9BSVgKKwkgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorCSAgIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgorCSAgX0xUX0FDX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tYmVybm90b2snCisJICBfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1iZXJvaycKKwkgICMgLWJleHBhbGwgZG9lcyBub3QgZXhwb3J0IHN5bWJvbHMgYmVnaW5uaW5nIHdpdGggdW5kZXJzY29yZSAoXykKKwkgIF9MVF9BQ19UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9eWVzCisJICAjIEV4cG9ydGVkIHN5bWJvbHMgY2FuIGJlIHB1bGxlZCBpbnRvIHNoYXJlZCBvYmplY3RzIGZyb20gYXJjaGl2ZXMKKwkgIF9MVF9BQ19UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nICcKKwkgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKKwkgICMgVGhpcyBpcyBzaW1pbGFyIHRvIGhvdyBBSVggdHJhZGl0aW9uYWxseSBidWlsZHMgaXQncyBzaGFyZWQgbGlicmFyaWVzLgorCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9IlwkQ0MgJHNoYXJlZF9mbGFnIicgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tYkU6JGV4cG9ydF9zeW1ib2xzICR7d2x9LWJub2VudHJ5JHthbGxvd191bmRlZmluZWRfZmxhZ31+JEFSICRBUl9GTEFHUyAkb3V0cHV0X29iamRpci8kbGlibmFtZSRyZWxlYXNlLmEgJG91dHB1dF9vYmpkaXIvJHNvbmFtZScKKwlmaQorICAgICAgZmkKKyAgICAgIDs7CisKKyAgICBhbWlnYW9zKikKKyAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRybSAkb3V0cHV0X29iamRpci9hMml4bGlicmFyeS5kYXRhfiRlY2hvICIjZGVmaW5lIE5BTUUgJGxpYm5hbWUiID4gJG91dHB1dF9vYmpkaXIvYTJpeGxpYnJhcnkuZGF0YX4kZWNobyAiI2RlZmluZSBMSUJSQVJZX0lEIDEiID4+ICRvdXRwdXRfb2JqZGlyL2EyaXhsaWJyYXJ5LmRhdGF+JGVjaG8gIiNkZWZpbmUgVkVSU0lPTiAkbWFqb3IiID4+ICRvdXRwdXRfb2JqZGlyL2EyaXhsaWJyYXJ5LmRhdGF+JGVjaG8gIiNkZWZpbmUgUkVWSVNJT04gJHJldmlzaW9uIiA+PiAkb3V0cHV0X29iamRpci9hMml4bGlicmFyeS5kYXRhfiRBUiAkQVJfRkxBR1MgJGxpYiAkbGlib2Jqc34kUkFOTElCICRsaWJ+KGNkICRvdXRwdXRfb2JqZGlyICYmIGEyaXhsaWJyYXJ5IC0zMiknCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJworICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCisgICAgICAjIHNlZSBjb21tZW50IGFib3V0IGRpZmZlcmVudCBzZW1hbnRpY3Mgb24gdGhlIEdOVSBsZCBzZWN0aW9uCisgICAgICBfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgICAgICA7OworCisgICAgYnNkaTQqKQorICAgICAgX0xUX0FDX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0tcmR5bmFtaWMKKyAgICAgIDs7CisKKyAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiopCisgICAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZworICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKyAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nICcKKyAgICAgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKyAgICAgIGxpYmV4dD1saWIKKyAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCisgICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisgICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGVjaG8gIiRkZXBsaWJzIiB8ICRTRUQgLWUgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKyAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisgICAgICBfTFRfQUNfVEFHVkFSKG9sZF9hcmNoaXZlX0Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKKyAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisgICAgICBfTFRfQUNfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nbGliIC9PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCisgICAgICBfTFRfQUNfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKyAgICAgIDs7CisKKyAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorICAgIGlmIHRlc3QgIiRHWFgiID0geWVzIDsgdGhlbgorICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCisgICAgICBjYXNlICIkaG9zdF9vcyIgaW4KKyAgICAgIHJoYXBzb2R5KiB8IGRhcndpbjEuW1swMTJdXSkKKwlfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy11bmRlZmluZWQgc3VwcHJlc3MnCisJOzsKKyAgICAgICopICMgRGFyd2luIDEuMyBvbgorICAgICAgaWYgdGVzdCAteiAke01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVH0gOyB0aGVuCisgICAgICAJX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSctZmxhdF9uYW1lc3BhY2UgLXVuZGVmaW5lZCBzdXBwcmVzcycKKyAgICAgIGVsc2UKKyAgICAgICAgY2FzZSAke01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVH0gaW4KKyAgICAgICAgICAxMC5bWzAxMl1dKQorICAgICAgICAgICAgX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSctZmxhdF9uYW1lc3BhY2UgLXVuZGVmaW5lZCBzdXBwcmVzcycKKyAgICAgICAgICAgIDs7CisgICAgICAgICAgMTAuKikKKyAgICAgICAgICAgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nLXVuZGVmaW5lZCBkeW5hbWljX2xvb2t1cCcKKyAgICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgIGZpCisJOzsKKyAgICAgIGVzYWMKKyAgICAJbHRfaW50X2FwcGxlX2NjX3NpbmdsZV9tb2Q9bm8KKyAgICAJb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J2VjaG8nCisgICAgCWlmICRDQyAtZHVtcHNwZWNzIDI+JjEgfCBncmVwICdzaW5nbGVfbW9kdWxlJyA+L2Rldi9udWxsIDsgdGhlbgorICAgIAkgIGx0X2ludF9hcHBsZV9jY19zaW5nbGVfbW9kPXllcworICAgIAlmaQorICAgIAlpZiB0ZXN0ICJYJGx0X2ludF9hcHBsZV9jY19zaW5nbGVfbW9kIiA9IFh5ZXMgOyB0aGVuCisgICAgCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1keW5hbWljbGliIC1zaW5nbGVfbW9kdWxlICRhbGxvd191bmRlZmluZWRfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lICRycGF0aC8kc29uYW1lICR2ZXJzdHJpbmcnCisgICAgCWVsc2UKKyAgICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1yICR7d2x9LWJpbmRfYXRfbG9hZCAta2VlcF9wcml2YXRlX2V4dGVybnMgLW5vc3RkbGliIC1vICR7bGlifS1tYXN0ZXIubyAkbGlib2Jqc34kQ0MgLWR5bmFtaWNsaWIgJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vICRsaWIgJHtsaWJ9LW1hc3Rlci5vICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lICRycGF0aC8kc29uYW1lICR2ZXJzdHJpbmcnCisgICAgICBmaQorICAgICAgX0xUX0FDX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpPSckQ0MgJHt3bH0tYmluZF9hdF9sb2FkICRhbGxvd191bmRlZmluZWRfZmxhZyAtbyAkbGliIC1idW5kbGUgJGxpYm9ianMgJGRlcGxpYnMkY29tcGlsZXJfZmxhZ3MnCisgICAgICAjIERvbid0IGZpeCB0aGlzIGJ5IHVzaW5nIHRoZSBsZCAtZXhwb3J0ZWRfc3ltYm9sc19saXN0IGZsYWcsIGl0IGRvZXNuJ3QgZXhpc3QgaW4gb2xkZXIgZGFyd2luIGxkJ3MKKyAgICAgICAgaWYgdGVzdCAiWCRsdF9pbnRfYXBwbGVfY2Nfc2luZ2xlX21vZCIgPSBYeWVzIDsgdGhlbgorICAgICAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdzZWQgLWUgInMsIy4qLCwiIC1lICJzLF5bICAgIF0qLCwiIC1lICJzLF5cKC4uKlwpLF8mLCIgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8ke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltfiRDQyAtZHluYW1pY2xpYiAtc2luZ2xlX21vZHVsZSAkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSAkcnBhdGgvJHNvbmFtZSAkdmVyc3RyaW5nfm5tZWRpdCAtcyAkb3V0cHV0X29iamRpci8ke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltICR7bGlifScKKyAgICAgICAgZWxzZQorICAgICAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdzZWQgLWUgInMsIy4qLCwiIC1lICJzLF5bICAgIF0qLCwiIC1lICJzLF5cKC4uKlwpLF8mLCIgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8ke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltfiRDQyAtciAke3dsfS1iaW5kX2F0X2xvYWQgLWtlZXBfcHJpdmF0ZV9leHRlcm5zIC1ub3N0ZGxpYiAtbyAke2xpYn0tbWFzdGVyLm8gJGxpYm9ianN+JENDIC1keW5hbWljbGliICRhbGxvd191bmRlZmluZWRfZmxhZyAtbyAkbGliICR7bGlifS1tYXN0ZXIubyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSAkcnBhdGgvJHNvbmFtZSAkdmVyc3RyaW5nfm5tZWRpdCAtcyAkb3V0cHV0X29iamRpci8ke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltICR7bGlifScKKyAgICAgICAgZmkKKyAgICAgICAgICBfTFRfQUNfVEFHVkFSKG1vZHVsZV9leHBzeW1fY21kcywgJDEpPSdzZWQgLWUgInMsIy4qLCwiIC1lICJzLF5bICAgIF0qLCwiIC1lICJzLF5cKC4uKlwpLF8mLCIgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8ke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltfiRDQyAkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgIC1vICRsaWIgLWJ1bmRsZSAkbGlib2JqcyAkZGVwbGlicyRjb21waWxlcl9mbGFnc35ubWVkaXQgLXMgJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bSAke2xpYn0nCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2F1dG9tYXRpYywgJDEpPXllcworICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9dW5zdXBwb3J0ZWQKKyAgICAgIF9MVF9BQ19UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nLWFsbF9sb2FkICRjb252ZW5pZW5jZScKKyAgICAgIF9MVF9BQ19UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcworICAgIGVsc2UKKyAgICAgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICBmaQorICAgICAgOzsKKworICAgIGRndXgqKQorICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1HIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKKyAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgICA7OworCisgICAgZnJlZWJzZDEqKQorICAgICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgICAgOzsKKworICAgICMgRnJlZUJTRCAyLjIuWzAxMl0gYWxsb3dzIHVzIHRvIGluY2x1ZGUgYysrcnQwLm8gdG8gZ2V0IEMrKyBjb25zdHJ1Y3RvcgorICAgICMgc3VwcG9ydC4gIEZ1dHVyZSB2ZXJzaW9ucyBkbyB0aGlzIGF1dG9tYXRpY2FsbHksIGJ1dCBhbiBleHBsaWNpdCBjKytydDAubworICAgICMgZG9lcyBub3QgYnJlYWsgYW55dGhpbmcsIGFuZCBoZWxwcyBzaWduaWZpY2FudGx5IChhdCB0aGUgY29zdCBvZiBhIGxpdHRsZQorICAgICMgZXh0cmEgc3BhY2UpLgorICAgIGZyZWVic2QyLjIqKQorICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAvdXNyL2xpYi9jKytydDAubycKKyAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcworICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKyAgICAgIDs7CisKKyAgICAjIFVuZm9ydHVuYXRlbHksIG9sZGVyIHZlcnNpb25zIG9mIEZyZWVCU0QgMiBkbyBub3QgaGF2ZSB0aGlzIGZlYXR1cmUuCisgICAgZnJlZWJzZDIqKQorICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKKyAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgICA7OworCisgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgorICAgIGZyZWVic2QqIHwga2ZyZWVic2QqLWdudSkKKyAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1SJGxpYmRpcicKKyAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworICAgICAgOzsKKworICAgIGhwdXg5KikKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisJX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJHJtICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgIGVsc2UKKwlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckcm0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgIGZpCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0rYiAke3dsfSRsaWJkaXInCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcworCisgICAgICAjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAorICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKKyAgICAgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCisgICAgICA7OworCisgICAgaHB1eDEwKiB8IGhwdXgxMSopCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAtYSAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisJY2FzZSAiJGhvc3RfY3B1IiBpbgorCWhwcGEqNjQqfGlhNjQqKQorCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICA7OworCSopCisJICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgOzsKKwllc2FjCisgICAgICBlbHNlCisJY2FzZSAiJGhvc3RfY3B1IiBpbgorCWhwcGEqNjQqfGlhNjQqKQorCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1iICtoICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworCSAgOzsKKwkqKQorCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKwkgIDs7CisJZXNhYworICAgICAgZmkKKyAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorCWNhc2UgIiRob3N0X2NwdSIgaW4KKwlocHBhKjY0KikKKwkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfStiICR7d2x9JGxpYmRpcicKKwkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPScrYiAkbGliZGlyJworCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgorCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubworCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKwkgIDs7CisJaWE2NCopCisJICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJworCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubworCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKworCSAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKKwkgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgorCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCisJICA7OworCSopCisJICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0rYiAke3dsfSRsaWJkaXInCisJICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisJICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcworCSAgX0xUX0FDX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKKworCSAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKKwkgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgorCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCisJICA7OworCWVzYWMKKyAgICAgIGZpCisgICAgICA7OworCisgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisJX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGVjaG8gJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworICAgICAgZWxzZQorCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBlY2hvIC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkLCAkMSk9Jy1ycGF0aCAkbGliZGlyJworICAgICAgZmkKKyAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisgICAgICBfTFRfQUNfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKKyAgICAgIDs7CisKKyAgICBuZXRic2QqIHwgbmV0YnNkZWxmKi1nbnUgfCBrbmV0YnNkKi1nbnUpCisgICAgICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8IGdyZXAgX19FTEZfXyA+L2Rldi9udWxsOyB0aGVuCisJX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycgICMgYS5vdXQKKyAgICAgIGVsc2UKKwlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnICAgICAgIyBFTEYKKyAgICAgIGZpCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJworICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKyAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgICA7OworCisgICAgbmV3c29zNikKKyAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtRyAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgorICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKyAgICAgIDs7CisKKyAgICBvcGVuYnNkKikKKyAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworICAgICAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgZ3JlcCBfX0VMRl9fYCIgfHwgdGVzdCAiJGhvc3Rfb3MtJGhvc3RfY3B1IiA9ICJvcGVuYnNkMi44LXBvd2VycGMiOyB0aGVuCisJX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCwkbGliZGlyJworCV9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCisgICAgICBlbHNlCisgICAgICAgY2FzZSAkaG9zdF9vcyBpbgorCSBvcGVuYnNkW1swMV1dLiogfCBvcGVuYnNkMi5bWzAtN11dIHwgb3BlbmJzZDIuW1swLTddXS4qKQorCSAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisJICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1SJGxpYmRpcicKKwkgICA7OworCSAqKQorCSAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGgsJGxpYmRpcicKKwkgICA7OworICAgICAgIGVzYWMKKyAgICAgIGZpCisgICAgICA7OworCisgICAgb3MyKikKKyAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKKyAgICAgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJGVjaG8gIkxJQlJBUlkgJGxpYm5hbWUgSU5JVElOU1RBTkNFIiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kZWNobyAiREVTQ1JJUFRJT04gXCIkbGlibmFtZVwiIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JGVjaG8gREFUQSA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JGVjaG8gIiBTSU5HTEUgTk9OU0hBUkVEIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JGVjaG8gRVhQT1JUUyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZW14ZXhwICRsaWJvYmpzID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJworICAgICAgX0xUX0FDX1RBR1ZBUihvbGRfYXJjaGl2ZV9Gcm9tX25ld19jbWRzLCAkMSk9J2VteGltcCAtbyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5hICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKKyAgICAgIDs7CisKKyAgICBvc2YzKikKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisJX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKwlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBlY2hvICR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZ2AgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAgICAgIGVsc2UKKwlfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCisJX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZWNobyAtc2V0X3ZlcnNpb24gJHZlcnN0cmluZ2AgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworICAgICAgZmkKKyAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisgICAgICA7OworCisgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorCV9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCisJX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBlY2hvICR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZ2AgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgZWxzZQorCV9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKKwlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBlY2hvIC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2ZvciBpIGluIGBjYXQgJGV4cG9ydF9zeW1ib2xzYDsgZG8gcHJpbnRmICIlcyAlc1xcbiIgLWV4cG9ydGVkX3N5bWJvbCAiXCRpIiA+PiAkbGliLmV4cDsgZG9uZTsgZWNobyAiLWhpZGRlbiI+PiAkbGliLmV4cH4KKwkkTEQgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1pbnB1dCAkbGliLmV4cCAkbGlua2VyX2ZsYWdzICRsaWJvYmpzICRkZXBsaWJzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZWNobyAtc2V0X3ZlcnNpb24gJHZlcnN0cmluZ2AgLXVwZGF0ZV9yZWdpc3RyeSAke29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWJ+JHJtICRsaWIuZXhwJworCisJIyBCb3RoIGMgYW5kIGN4eCBjb21waWxlciBzdXBwb3J0IC1ycGF0aCBkaXJlY3RseQorCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctcnBhdGggJGxpYmRpcicKKyAgICAgIGZpCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisgICAgICA7OworCisgICAgc2NvMy4ydjUqKQorICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1HIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKyAgICAgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUJleHBvcnQnCisgICAgICBydW5wYXRoX3Zhcj1MRF9SVU5fUEFUSAorICAgICAgaGFyZGNvZGVfcnVucGF0aF92YXI9eWVzCisgICAgICA7OworCisgICAgc29sYXJpcyopCisgICAgICBfTFRfQUNfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAteiB0ZXh0JworICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKwlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJGVjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+JGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CisJICAkQ0MgLXNoYXJlZCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JHJtICRsaWIuZXhwJworICAgICAgZWxzZQorCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH4kZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKyAgCSRMRCAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1NICRsaWIuZXhwIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfiRybSAkbGliLmV4cCcKKyAgICAgIGZpCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJworICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKyAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgIHNvbGFyaXMyLltbMC01XV0gfCBzb2xhcmlzMi5bWzAtNV1dLiopIDs7CisgICAgICAqKSAjIFN1cHBvcnRlZCBzaW5jZSBTb2xhcmlzIDIuNiAobWF5YmUgMi41LjE/KQorCV9MVF9BQ19UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nLXogYWxsZXh0cmFjdCRjb252ZW5pZW5jZSAteiBkZWZhdWx0ZXh0cmFjdCcgOzsKKyAgICAgIGVzYWMKKyAgICAgIF9MVF9BQ19UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcworICAgICAgOzsKKworICAgIHN1bm9zNCopCisgICAgICBpZiB0ZXN0ICJ4JGhvc3RfdmVuZG9yIiA9IHhzZXF1ZW50OyB0aGVuCisJIyBVc2UgJENDIHRvIGxpbmsgdW5kZXIgc2VxdWVudCwgYmVjYXVzZSBpdCB0aHJvd3MgaW4gc29tZSBleHRyYSAubworCSMgZmlsZXMgdGhhdCBtYWtlIC5pbml0IGFuZCAuZmluaSBzZWN0aW9ucyB3b3JrLgorCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICBlbHNlCisJX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1hc3NlcnQgcHVyZS10ZXh0IC1Cc3RhdGljIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgIGZpCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJworICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKyAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcworICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKyAgICAgIDs7CisKKyAgICBzeXN2NCkKKyAgICAgIGNhc2UgJGhvc3RfdmVuZG9yIGluCisJc25pKQorCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1HIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMgIyBpcyB0aGlzIHJlYWxseSB0cnVlPz8/CisJOzsKKwlzaWVtZW5zKQorCSAgIyMgTEQgaXMgbGQgaXQgbWFrZXMgYSBQTEFNTElCCisJICAjIyBDQyBqdXN0IG1ha2VzIGEgR3Jvc3NNb2R1bGUuCisJICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworCSAgX0xUX0FDX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpPSckQ0MgLXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKKwkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KKyAgICAgICAgOzsKKwltb3Rvcm9sYSkKKwkgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtRyAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKwkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8gI01vdG9yb2xhIG1hbnVhbCBzYXlzIHllcywgYnV0IG15IHRlc3RzIHNheSB0aGV5IGxpZQorCTs7CisgICAgICBlc2FjCisgICAgICBydW5wYXRoX3Zhcj0nTERfUlVOX1BBVEgnCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworICAgICAgOzsKKworICAgIHN5c3Y0LjMqKQorICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1HIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKyAgICAgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9Jy1CZXhwb3J0JworICAgICAgOzsKKworICAgIHN5c3Y0Kk1QKikKKyAgICAgIGlmIHRlc3QgLWQgL3Vzci9uZWM7IHRoZW4KKwlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUcgLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisJX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKwlydW5wYXRoX3Zhcj1MRF9SVU5fUEFUSAorCWhhcmRjb2RlX3J1bnBhdGhfdmFyPXllcworCV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9eWVzCisgICAgICBmaQorICAgICAgOzsKKworICAgIHN5c3Y0LjJ1dzIqKQorICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1HIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT1ubworICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKyAgICAgIGhhcmRjb2RlX3J1bnBhdGhfdmFyPXllcworICAgICAgcnVucGF0aF92YXI9TERfUlVOX1BBVEgKKyAgICAgIDs7CisKKyAgIHN5c3Y1T3BlblVOSVg4KiB8IHN5c3Y1VW5peFdhcmU3KiB8ICBzeXN2NXV3W1s3OF1dKiB8IHVuaXh3YXJlNyopCisgICAgICBfTFRfQUNfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyR7d2x9LXogJHt3bH10ZXh0JworICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKwlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgIGVsc2UKKwlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICBmaQorICAgICAgcnVucGF0aF92YXI9J0xEX1JVTl9QQVRIJworICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKyAgICAgIDs7CisKKyAgICBzeXN2NSopCisgICAgICBfTFRfQUNfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAteiB0ZXh0JworICAgICAgIyAkQ0MgLXNoYXJlZCB3aXRob3V0IEdOVSBsZCB3aWxsIG5vdCBjcmVhdGUgYSBsaWJyYXJ5IGZyb20gQysrCisgICAgICAjIG9iamVjdCBmaWxlcyBhbmQgYSBzdGF0aWMgbGlic3RkYysrLCBiZXR0ZXIgYXZvaWQgaXQgYnkgbm93CisgICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH4kZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKyAgCQkkTEQgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtTSAkbGliLmV4cCAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc34kcm0gJGxpYi5leHAnCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KKyAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgICBydW5wYXRoX3Zhcj0nTERfUlVOX1BBVEgnCisgICAgICA7OworCisgICAgdXRzNCopCisgICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUcgLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJworICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKyAgICAgIDs7CisKKyAgICAqKQorICAgICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgICAgOzsKKyAgICBlc2FjCisgIGZpCitdKQorQUNfTVNHX1JFU1VMVChbJF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSldKQordGVzdCAiJF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSkiID0gbm8gJiYgY2FuX2J1aWxkX3NoYXJlZD1ubworCit2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0iUEFUSCAkc2hsaWJwYXRoX3ZhciAkcnVucGF0aF92YXIiCitpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0iJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIEdDQ19FWEVDX1BSRUZJWCBDT01QSUxFUl9QQVRIIExJQlJBUllfUEFUSCIKK2ZpCisKKyMKKyMgRG8gd2UgbmVlZCB0byBleHBsaWNpdGx5IGxpbmsgbGliYz8KKyMKK2Nhc2UgIngkX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpIiBpbgoreHx4eWVzKQorICAjIEFzc3VtZSAtbGMgc2hvdWxkIGJlIGFkZGVkCisgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKKworICBpZiB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgJiYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICBjYXNlICRfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpIGluCisgICAgKid+JyopCisgICAgICAjIEZJWE1FOiB3ZSBtYXkgaGF2ZSB0byBkZWFsIHdpdGggbXVsdGktY29tbWFuZCBzZXF1ZW5jZXMuCisgICAgICA7OworICAgICckQ0MgJyopCisgICAgICAjIFRlc3Qgd2hldGhlciB0aGUgY29tcGlsZXIgaW1wbGljaXRseSBsaW5rcyB3aXRoIC1sYyBzaW5jZSBvbiBzb21lCisgICAgICAjIHN5c3RlbXMsIC1sZ2NjIGhhcyB0byBjb21lIGJlZm9yZSAtbGMuIElmIGdjYyBhbHJlYWR5IHBhc3NlcyAtbGMKKyAgICAgICMgdG8gbGQsIGRvbid0IGFkZCAtbGMgYmVmb3JlIC1sZ2NjLgorICAgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIC1sYyBzaG91bGQgYmUgZXhwbGljaXRseSBsaW5rZWQgaW5dKQorICAgICAgJHJtIGNvbmZ0ZXN0KgorICAgICAgcHJpbnRmICIkbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIiA+IGNvbmZ0ZXN0LiRhY19leHQKKworICAgICAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSkgMj5jb25mdGVzdC5lcnI7IHRoZW4KKyAgICAgICAgc29uYW1lPWNvbmZ0ZXN0CisgICAgICAgIGxpYj1jb25mdGVzdAorICAgICAgICBsaWJvYmpzPWNvbmZ0ZXN0LiRhY19vYmpleHQKKyAgICAgICAgZGVwbGlicz0KKyAgICAgICAgd2w9JF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpCisgICAgICAgIGNvbXBpbGVyX2ZsYWdzPS12CisgICAgICAgIGxpbmtlcl9mbGFncz0tdgorICAgICAgICB2ZXJzdHJpbmc9CisgICAgICAgIG91dHB1dF9vYmpkaXI9LgorICAgICAgICBsaWJuYW1lPWNvbmZ0ZXN0CisgICAgICAgIGx0X3NhdmVfYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKQorICAgICAgICBfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9CisgICAgICAgIGlmIEFDX1RSWV9FVkFMKF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSkgMlw+XCYxIFx8IGdyZXAgXCIgLWxjIFwiIFw+L2Rldi9udWxsIDJcPlwmMSkKKyAgICAgICAgdGhlbgorCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCisgICAgICAgIGVsc2UKKwkgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKKyAgICAgICAgZmkKKyAgICAgICAgX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSRsdF9zYXZlX2FsbG93X3VuZGVmaW5lZF9mbGFnCisgICAgICBlbHNlCisgICAgICAgIGNhdCBjb25mdGVzdC5lcnIgMT4mNQorICAgICAgZmkKKyAgICAgICRybSBjb25mdGVzdCoKKyAgICAgIEFDX01TR19SRVNVTFQoWyRfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSldKQorICAgICAgOzsKKyAgICBlc2FjCisgIGZpCisgIDs7Citlc2FjCitdKSMgQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUworCisKKyMgX0xUX0FDX0ZJTEVfTFRETExfQworIyAtLS0tLS0tLS0tLS0tLS0tLS0tCisjIEJlIGNhcmVmdWwgdGhhdCB0aGUgc3RhcnQgbWFya2VyIGFsd2F5cyBmb2xsb3dzIGEgbmV3bGluZS4KK0FDX0RFRlVOKFtfTFRfQUNfRklMRV9MVERMTF9DXSwgWworIyAvKiBsdGRsbC5jIHN0YXJ0cyBoZXJlICovCisjICNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgorIyAjaW5jbHVkZSA8d2luZG93cy5oPgorIyAjdW5kZWYgV0lOMzJfTEVBTl9BTkRfTUVBTgorIyAjaW5jbHVkZSA8c3RkaW8uaD4KKyMKKyMgI2lmbmRlZiBfX0NZR1dJTl9fCisjICMgIGlmZGVmIF9fQ1lHV0lOMzJfXworIyAjICAgIGRlZmluZSBfX0NZR1dJTl9fIF9fQ1lHV0lOMzJfXworIyAjICBlbmRpZgorIyAjZW5kaWYKKyMKKyMgI2lmZGVmIF9fY3BsdXNwbHVzCisjIGV4dGVybiAiQyIgeworIyAjZW5kaWYKKyMgQk9PTCBBUElFTlRSWSBEbGxNYWluIChISU5TVEFOQ0UgaEluc3QsIERXT1JEIHJlYXNvbiwgTFBWT0lEIHJlc2VydmVkKTsKKyMgI2lmZGVmIF9fY3BsdXNwbHVzCisjIH0KKyMgI2VuZGlmCisjCisjICNpZmRlZiBfX0NZR1dJTl9fCisjICNpbmNsdWRlIDxjeWd3aW4vY3lnd2luX2RsbC5oPgorIyBERUNMQVJFX0NZR1dJTl9ETEwoIERsbE1haW4gKTsKKyMgI2VuZGlmCisjIEhJTlNUQU5DRSBfX2hEbGxJbnN0YW5jZV9iYXNlOworIworIyBCT09MIEFQSUVOVFJZCisjIERsbE1haW4gKEhJTlNUQU5DRSBoSW5zdCwgRFdPUkQgcmVhc29uLCBMUFZPSUQgcmVzZXJ2ZWQpCisjIHsKKyMgICBfX2hEbGxJbnN0YW5jZV9iYXNlID0gaEluc3Q7CisjICAgcmV0dXJuIFRSVUU7CisjIH0KKyMgLyogbHRkbGwuYyBlbmRzIGhlcmUgKi8KK10pIyBfTFRfQUNfRklMRV9MVERMTF9DCisKKworIyBfTFRfQUNfVEFHVkFSKFZBUk5BTUUsIFtUQUdOQU1FXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbX0xUX0FDX1RBR1ZBUl0sIFtpZmVsc2UoWyQyXSwgW10sIFskMV0sIFskMV8kMl0pXSkKKworCisjIG9sZCBuYW1lcworQUNfREVGVU4oW0FNX1BST0dfTElCVE9PTF0sICAgW0FDX1BST0dfTElCVE9PTF0pCitBQ19ERUZVTihbQU1fRU5BQkxFX1NIQVJFRF0sICBbQUNfRU5BQkxFX1NIQVJFRCgkQCldKQorQUNfREVGVU4oW0FNX0VOQUJMRV9TVEFUSUNdLCAgW0FDX0VOQUJMRV9TVEFUSUMoJEApXSkKK0FDX0RFRlVOKFtBTV9ESVNBQkxFX1NIQVJFRF0sIFtBQ19ESVNBQkxFX1NIQVJFRCgkQCldKQorQUNfREVGVU4oW0FNX0RJU0FCTEVfU1RBVElDXSwgW0FDX0RJU0FCTEVfU1RBVElDKCRAKV0pCitBQ19ERUZVTihbQU1fUFJPR19MRF0sICAgICAgICBbQUNfUFJPR19MRF0pCitBQ19ERUZVTihbQU1fUFJPR19OTV0sICAgICAgICBbQUNfUFJPR19OTV0pCisKKyMgVGhpcyBpcyBqdXN0IHRvIHNpbGVuY2UgYWNsb2NhbCBhYm91dCB0aGUgbWFjcm8gbm90IGJlaW5nIHVzZWQKK2lmZWxzZShbQUNfRElTQUJMRV9GQVNUX0lOU1RBTExdKQorCitBQ19ERUZVTihbTFRfQUNfUFJPR19HQ0pdLAorW0FDX0NIRUNLX1RPT0woR0NKLCBnY2osIG5vKQorICB0ZXN0ICJ4JHtHQ0pGTEFHUytzZXR9IiA9IHhzZXQgfHwgR0NKRkxBR1M9Ii1nIC1PMiIKKyAgQUNfU1VCU1QoR0NKRkxBR1MpCitdKQorCitBQ19ERUZVTihbTFRfQUNfUFJPR19SQ10sCitbQUNfQ0hFQ0tfVE9PTChSQywgd2luZHJlcywgbm8pCitdKQorCisjIE5PVEU6IFRoaXMgbWFjcm8gaGFzIGJlZW4gc3VibWl0dGVkIGZvciBpbmNsdXNpb24gaW50byAgICMKKyMgIEdOVSBBdXRvY29uZiBhcyBBQ19QUk9HX1NFRC4gIFdoZW4gaXQgaXMgYXZhaWxhYmxlIGluICAgIworIyAgYSByZWxlYXNlZCB2ZXJzaW9uIG9mIEF1dG9jb25mIHdlIHNob3VsZCByZW1vdmUgdGhpcyAgICAjCisjICBtYWNybyBhbmQgdXNlIGl0IGluc3RlYWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgTFRfQUNfUFJPR19TRUQKKyMgLS0tLS0tLS0tLS0tLS0KKyMgQ2hlY2sgZm9yIGEgZnVsbHktZnVuY3Rpb25hbCBzZWQgcHJvZ3JhbSwgdGhhdCB0cnVuY2F0ZXMKKyMgYXMgZmV3IGNoYXJhY3RlcnMgYXMgcG9zc2libGUuICBQcmVmZXIgR05VIHNlZCBpZiBmb3VuZC4KK0FDX0RFRlVOKFtMVF9BQ19QUk9HX1NFRF0sCitbQUNfTVNHX0NIRUNLSU5HKFtmb3IgYSBzZWQgdGhhdCBkb2VzIG5vdCB0cnVuY2F0ZSBvdXRwdXRdKQorQUNfQ0FDSEVfVkFMKGx0X2N2X3BhdGhfU0VELAorWyMgTG9vcCB0aHJvdWdoIHRoZSB1c2VyJ3MgcGF0aCBhbmQgdGVzdCBmb3Igc2VkIGFuZCBnc2VkLgorIyBUaGVuIHVzZSB0aGF0IGxpc3Qgb2Ygc2VkJ3MgYXMgb25lcyB0byB0ZXN0IGZvciB0cnVuY2F0aW9uLgorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICBmb3IgbHRfYWNfcHJvZyBpbiBzZWQgZ3NlZDsgZG8KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgICAgIGlmICRhc19leGVjdXRhYmxlX3AgIiRhc19kaXIvJGx0X2FjX3Byb2ckYWNfZXhlY19leHQiOyB0aGVuCisgICAgICAgIGx0X2FjX3NlZF9saXN0PSIkbHRfYWNfc2VkX2xpc3QgJGFzX2Rpci8kbHRfYWNfcHJvZyRhY19leGVjX2V4dCIKKyAgICAgIGZpCisgICAgZG9uZQorICBkb25lCitkb25lCitsdF9hY19tYXg9MAorbHRfYWNfY291bnQ9MAorIyBBZGQgL3Vzci94cGc0L2Jpbi9zZWQgYXMgaXQgaXMgdHlwaWNhbGx5IGZvdW5kIG9uIFNvbGFyaXMKKyMgYWxvbmcgd2l0aCAvYmluL3NlZCB0aGF0IHRydW5jYXRlcyBvdXRwdXQuCitmb3IgbHRfYWNfc2VkIGluICRsdF9hY19zZWRfbGlzdCAvdXNyL3hwZzQvYmluL3NlZDsgZG8KKyAgdGVzdCAhIC1mICRsdF9hY19zZWQgJiYgYnJlYWsKKyAgY2F0IC9kZXYvbnVsbCA+IGNvbmZ0ZXN0LmluCisgIGx0X2FjX2NvdW50PTAKKyAgZWNobyAkRUNIT19OICIwMTIzNDU2Nzg5JEVDSE9fQyIgPmNvbmZ0ZXN0LmluCisgICMgQ2hlY2sgZm9yIEdOVSBzZWQgYW5kIHNlbGVjdCBpdCBpZiBpdCBpcyBmb3VuZC4KKyAgaWYgIiRsdF9hY19zZWQiIC0tdmVyc2lvbiAyPiYxIDwgL2Rldi9udWxsIHwgZ3JlcCAnR05VJyA+IC9kZXYvbnVsbDsgdGhlbgorICAgIGx0X2N2X3BhdGhfU0VEPSRsdF9hY19zZWQKKyAgICBicmVhaworICBmaQorICB3aGlsZSB0cnVlOyBkbworICAgIGNhdCBjb25mdGVzdC5pbiBjb25mdGVzdC5pbiA+Y29uZnRlc3QudG1wCisgICAgbXYgY29uZnRlc3QudG1wIGNvbmZ0ZXN0LmluCisgICAgY3AgY29uZnRlc3QuaW4gY29uZnRlc3QubmwKKyAgICBlY2hvID4+Y29uZnRlc3QubmwKKyAgICAkbHRfYWNfc2VkIC1lICdzL2EkLy8nIDwgY29uZnRlc3QubmwgPmNvbmZ0ZXN0Lm91dCB8fCBicmVhaworICAgIGNtcCAtcyBjb25mdGVzdC5vdXQgY29uZnRlc3QubmwgfHwgYnJlYWsKKyAgICAjIDEwMDAwIGNoYXJzIGFzIGlucHV0IHNlZW1zIG1vcmUgdGhhbiBlbm91Z2gKKyAgICB0ZXN0ICRsdF9hY19jb3VudCAtZ3QgMTAgJiYgYnJlYWsKKyAgICBsdF9hY19jb3VudD1gZXhwciAkbHRfYWNfY291bnQgKyAxYAorICAgIGlmIHRlc3QgJGx0X2FjX2NvdW50IC1ndCAkbHRfYWNfbWF4OyB0aGVuCisgICAgICBsdF9hY19tYXg9JGx0X2FjX2NvdW50CisgICAgICBsdF9jdl9wYXRoX1NFRD0kbHRfYWNfc2VkCisgICAgZmkKKyAgZG9uZQorZG9uZQorU0VEPSRsdF9jdl9wYXRoX1NFRAorXSkKK0FDX01TR19SRVNVTFQoWyRTRURdKQorXSkKKworIyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDMsIDIwMDUgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgQU1fQVVUT01BS0VfVkVSU0lPTihWRVJTSU9OKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEF1dG9tYWtlIFguWSB0cmFjZXMgdGhpcyBtYWNybyB0byBlbnN1cmUgYWNsb2NhbC5tNCBoYXMgYmVlbgorIyBnZW5lcmF0ZWQgZnJvbSB0aGUgbTQgZmlsZXMgYWNjb21wYW55aW5nIEF1dG9tYWtlIFguWS4KK0FDX0RFRlVOKFtBTV9BVVRPTUFLRV9WRVJTSU9OXSwgW2FtX19hcGlfdmVyc2lvbj0iMS45Il0pCisKKyMgQU1fU0VUX0NVUlJFTlRfQVVUT01BS0VfVkVSU0lPTgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENhbGwgQU1fQVVUT01BS0VfVkVSU0lPTiBzbyBpdCBjYW4gYmUgdHJhY2VkLgorIyBUaGlzIGZ1bmN0aW9uIGlzIEFDX1JFUVVJUkVkIGJ5IEFDX0lOSVRfQVVUT01BS0UuCitBQ19ERUZVTihbQU1fU0VUX0NVUlJFTlRfQVVUT01BS0VfVkVSU0lPTl0sCisJIFtBTV9BVVRPTUFLRV9WRVJTSU9OKFsxLjkuNV0pXSkKKworIyBBTV9BVVhfRElSX0VYUEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQorCisjIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMywgMjAwNSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBGb3IgcHJvamVjdHMgdXNpbmcgQUNfQ09ORklHX0FVWF9ESVIoW2Zvb10pLCBBdXRvY29uZiBzZXRzCisjICRhY19hdXhfZGlyIHRvIGAkc3JjZGlyL2ZvbycuICBJbiBvdGhlciBwcm9qZWN0cywgaXQgaXMgc2V0IHRvCisjIGAkc3JjZGlyJywgYCRzcmNkaXIvLi4nLCBvciBgJHNyY2Rpci8uLi8uLicuCisjCisjIE9mIGNvdXJzZSwgQXV0b21ha2UgbXVzdCBob25vciB0aGlzIHZhcmlhYmxlIHdoZW5ldmVyIGl0IGNhbGxzIGEKKyMgdG9vbCBmcm9tIHRoZSBhdXhpbGlhcnkgZGlyZWN0b3J5LiAgVGhlIHByb2JsZW0gaXMgdGhhdCAkc3JjZGlyIChhbmQKKyMgdGhlcmVmb3JlICRhY19hdXhfZGlyIGFzIHdlbGwpIGNhbiBiZSBlaXRoZXIgYWJzb2x1dGUgb3IgcmVsYXRpdmUsCisjIGRlcGVuZGluZyBvbiBob3cgY29uZmlndXJlIGlzIHJ1bi4gIFRoaXMgaXMgcHJldHR5IGFubm95aW5nLCBzaW5jZQorIyBpdCBtYWtlcyAkYWNfYXV4X2RpciBxdWl0ZSB1bnVzYWJsZSBpbiBzdWJkaXJlY3RvcmllczogaW4gdGhlIHRvcAorIyBzb3VyY2UgZGlyZWN0b3J5LCBhbnkgZm9ybSB3aWxsIHdvcmsgZmluZSwgYnV0IGluIHN1YmRpcmVjdG9yaWVzIGEKKyMgcmVsYXRpdmUgcGF0aCBuZWVkcyB0byBiZSBhZGp1c3RlZCBmaXJzdC4KKyMKKyMgJGFjX2F1eF9kaXIvbWlzc2luZworIyAgICBmYWlscyB3aGVuIGNhbGxlZCBmcm9tIGEgc3ViZGlyZWN0b3J5IGlmICRhY19hdXhfZGlyIGlzIHJlbGF0aXZlCisjICR0b3Bfc3JjZGlyLyRhY19hdXhfZGlyL21pc3NpbmcKKyMgICAgZmFpbHMgaWYgJGFjX2F1eF9kaXIgaXMgYWJzb2x1dGUsCisjICAgIGZhaWxzIHdoZW4gY2FsbGVkIGZyb20gYSBzdWJkaXJlY3RvcnkgaW4gYSBWUEFUSCBidWlsZCB3aXRoCisjICAgICAgICAgIGEgcmVsYXRpdmUgJGFjX2F1eF9kaXIKKyMKKyMgVGhlIHJlYXNvbiBvZiB0aGUgbGF0dGVyIGZhaWx1cmUgaXMgdGhhdCAkdG9wX3NyY2RpciBhbmQgJGFjX2F1eF9kaXIKKyMgYXJlIGJvdGggcHJlZml4ZWQgYnkgJHNyY2Rpci4gIEluIGFuIGluLXNvdXJjZSBidWlsZCB0aGlzIGlzIHVzdWFsbHkKKyMgaGFybWxlc3MgYmVjYXVzZSAkc3JjZGlyIGlzIGAuJywgYnV0IHRoaW5ncyB3aWxsIGJyb2tlIHdoZW4geW91CisjIHN0YXJ0IGEgVlBBVEggYnVpbGQgb3IgdXNlIGFuIGFic29sdXRlICRzcmNkaXIuCisjCisjIFNvIHdlIGNvdWxkIHVzZSBzb21ldGhpbmcgc2ltaWxhciB0byAkdG9wX3NyY2Rpci8kYWNfYXV4X2Rpci9taXNzaW5nLAorIyBpZmYgd2Ugc3RyaXAgdGhlIGxlYWRpbmcgJHNyY2RpciBmcm9tICRhY19hdXhfZGlyLiAgVGhhdCB3b3VsZCBiZToKKyMgICBhbV9hdXhfZGlyPSdcJCh0b3Bfc3JjZGlyKS8nYGV4cHIgIiRhY19hdXhfZGlyIiA6ICIkc3JjZGlyLy8qXCguKlwpImAKKyMgYW5kIHRoZW4gd2Ugd291bGQgZGVmaW5lICRNSVNTSU5HIGFzCisjICAgTUlTU0lORz0iXCR7U0hFTEx9ICRhbV9hdXhfZGlyL21pc3NpbmciCisjIFRoaXMgd2lsbCB3b3JrIGFzIGxvbmcgYXMgTUlTU0lORyBpcyBub3QgY2FsbGVkIGZyb20gY29uZmlndXJlLCBiZWNhdXNlCisjIHVuZm9ydHVuYXRlbHkgJCh0b3Bfc3JjZGlyKSBoYXMgbm8gbWVhbmluZyBpbiBjb25maWd1cmUuCisjIEhvd2V2ZXIgdGhlcmUgYXJlIG90aGVyIHZhcmlhYmxlcywgbGlrZSBDQywgd2hpY2ggYXJlIG9mdGVuIHVzZWQgaW4KKyMgY29uZmlndXJlLCBhbmQgY291bGQgdGhlcmVmb3JlIG5vdCB1c2UgdGhpcyAiZml4ZWQiICRhY19hdXhfZGlyLgorIworIyBBbm90aGVyIHNvbHV0aW9uLCB1c2VkIGhlcmUsIGlzIHRvIGFsd2F5cyBleHBhbmQgJGFjX2F1eF9kaXIgdG8gYW4KKyMgYWJzb2x1dGUgUEFUSC4gIFRoZSBkcmF3YmFjayBpcyB0aGF0IHVzaW5nIGFic29sdXRlIHBhdGhzIHByZXZlbnQgYQorIyBjb25maWd1cmVkIHRyZWUgdG8gYmUgbW92ZWQgd2l0aG91dCByZWNvbmZpZ3VyYXRpb24uCisKK0FDX0RFRlVOKFtBTV9BVVhfRElSX0VYUEFORF0sCitbZG5sIFJlbHkgb24gYXV0b2NvbmYgdG8gc2V0IHVwIENEUEFUSCBwcm9wZXJseS4KK0FDX1BSRVJFUShbMi41MF0pZG5sCisjIGV4cGFuZCAkYWNfYXV4X2RpciB0byBhbiBhYnNvbHV0ZSBwYXRoCithbV9hdXhfZGlyPWBjZCAkYWNfYXV4X2RpciAmJiBwd2RgCitdKQorCisjIEFNX0NPTkRJVElPTkFMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCisKKyMgQ29weXJpZ2h0IChDKSAxOTk3LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1CisjIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgc2VyaWFsIDcKKworIyBBTV9DT05ESVRJT05BTChOQU1FLCBTSEVMTC1DT05ESVRJT04pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRGVmaW5lIGEgY29uZGl0aW9uYWwuCitBQ19ERUZVTihbQU1fQ09ORElUSU9OQUxdLAorW0FDX1BSRVJFUSgyLjUyKWRubAorIGlmZWxzZShbJDFdLCBbVFJVRV0sICBbQUNfRkFUQUwoWyQwOiBpbnZhbGlkIGNvbmRpdGlvbjogJDFdKV0sCisJWyQxXSwgW0ZBTFNFXSwgW0FDX0ZBVEFMKFskMDogaW52YWxpZCBjb25kaXRpb246ICQxXSldKWRubAorQUNfU1VCU1QoWyQxX1RSVUVdKQorQUNfU1VCU1QoWyQxX0ZBTFNFXSkKK2lmICQyOyB0aGVuCisgICQxX1RSVUU9CisgICQxX0ZBTFNFPScjJworZWxzZQorICAkMV9UUlVFPScjJworICAkMV9GQUxTRT0KK2ZpCitBQ19DT05GSUdfQ09NTUFORFNfUFJFKAorW2lmIHRlc3QgLXogIiR7JDFfVFJVRX0iICYmIHRlc3QgLXogIiR7JDFfRkFMU0V9IjsgdGhlbgorICBBQ19NU0dfRVJST1IoW1tjb25kaXRpb25hbCAiJDEiIHdhcyBuZXZlciBkZWZpbmVkLgorVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuXV0pCitmaV0pXSkKKworCisjIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNQorIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIHNlcmlhbCA4CisKKyMgVGhlcmUgYXJlIGEgZmV3IGRpcnR5IGhhY2tzIGJlbG93IHRvIGF2b2lkIGxldHRpbmcgYEFDX1BST0dfQ0MnIGJlCisjIHdyaXR0ZW4gaW4gY2xlYXIsIGluIHdoaWNoIGNhc2UgYXV0b21ha2UsIHdoZW4gcmVhZGluZyBhY2xvY2FsLm00LAorIyB3aWxsIHRoaW5rIGl0IHNlZXMgYSAqdXNlKiwgYW5kIHRoZXJlZm9yZSB3aWxsIHRyaWdnZXIgYWxsIGl0J3MKKyMgQyBzdXBwb3J0IG1hY2hpbmVyeS4gIEFsc28gbm90ZSB0aGF0IGl0IG1lYW5zIHRoYXQgYXV0b3NjYW4sIHNlZWluZworIyBDQyBldGMuIGluIHRoZSBNYWtlZmlsZSwgd2lsbCBhc2sgZm9yIGFuIEFDX1BST0dfQ0MgdXNlLi4uCisKKworIyBfQU1fREVQRU5ERU5DSUVTKE5BTUUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2VlIGhvdyB0aGUgY29tcGlsZXIgaW1wbGVtZW50cyBkZXBlbmRlbmN5IGNoZWNraW5nLgorIyBOQU1FIGlzICJDQyIsICJDWFgiLCAiR0NKIiwgb3IgIk9CSkMiLgorIyBXZSB0cnkgYSBmZXcgdGVjaG5pcXVlcyBhbmQgdXNlIHRoYXQgdG8gc2V0IGEgc2luZ2xlIGNhY2hlIHZhcmlhYmxlLgorIworIyBXZSBkb24ndCBBQ19SRVFVSVJFIHRoZSBjb3JyZXNwb25kaW5nIEFDX1BST0dfQ0Mgc2luY2UgdGhlIGxhdHRlciB3YXMKKyMgbW9kaWZpZWQgdG8gaW52b2tlIF9BTV9ERVBFTkRFTkNJRVMoQ0MpOyB3ZSB3b3VsZCBoYXZlIGEgY2lyY3VsYXIKKyMgZGVwZW5kZW5jeSwgYW5kIGdpdmVuIHRoYXQgdGhlIHVzZXIgaXMgbm90IGV4cGVjdGVkIHRvIHJ1biB0aGlzIG1hY3JvLAorIyBqdXN0IHJlbHkgb24gQUNfUFJPR19DQy4KK0FDX0RFRlVOKFtfQU1fREVQRU5ERU5DSUVTXSwKK1tBQ19SRVFVSVJFKFtBTV9TRVRfREVQRElSXSlkbmwKK0FDX1JFUVVJUkUoW0FNX09VVFBVVF9ERVBFTkRFTkNZX0NPTU1BTkRTXSlkbmwKK0FDX1JFUVVJUkUoW0FNX01BS0VfSU5DTFVERV0pZG5sCitBQ19SRVFVSVJFKFtBTV9ERVBfVFJBQ0tdKWRubAorCitpZmVsc2UoWyQxXSwgQ0MsICAgW2RlcGNjPSIkQ0MiICAgYW1fY29tcGlsZXJfbGlzdD1dLAorICAgICAgIFskMV0sIENYWCwgIFtkZXBjYz0iJENYWCIgIGFtX2NvbXBpbGVyX2xpc3Q9XSwKKyAgICAgICBbJDFdLCBPQkpDLCBbZGVwY2M9IiRPQkpDIiBhbV9jb21waWxlcl9saXN0PSdnY2MzIGdjYyddLAorICAgICAgIFskMV0sIEdDSiwgIFtkZXBjYz0iJEdDSiIgIGFtX2NvbXBpbGVyX2xpc3Q9J2djYzMgZ2NjJ10sCisgICAgICAgICAgICAgICAgICAgW2RlcGNjPSIkJDEiICAgYW1fY29tcGlsZXJfbGlzdD1dKQorCitBQ19DQUNIRV9DSEVDSyhbZGVwZW5kZW5jeSBzdHlsZSBvZiAkZGVwY2NdLAorICAgICAgICAgICAgICAgW2FtX2N2XyQxX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlXSwKK1tpZiB0ZXN0IC16ICIkQU1ERVBfVFJVRSIgJiYgdGVzdCAtZiAiJGFtX2RlcGNvbXAiOyB0aGVuCisgICMgV2UgbWFrZSBhIHN1YmRpciBhbmQgZG8gdGhlIHRlc3RzIHRoZXJlLiAgT3RoZXJ3aXNlIHdlIGNhbiBlbmQgdXAKKyAgIyBtYWtpbmcgYm9ndXMgZmlsZXMgdGhhdCB3ZSBkb24ndCBrbm93IGFib3V0IGFuZCBuZXZlciByZW1vdmUuICBGb3IKKyAgIyBpbnN0YW5jZSBpdCB3YXMgcmVwb3J0ZWQgdGhhdCBvbiBIUC1VWCB0aGUgZ2NjIHRlc3Qgd2lsbCBlbmQgdXAKKyAgIyBtYWtpbmcgYSBkdW1teSBmaWxlIG5hbWVkIGBEJyAtLSBiZWNhdXNlIGAtTUQnIG1lYW5zIGBwdXQgdGhlIG91dHB1dAorICAjIGluIEQnLgorICBta2RpciBjb25mdGVzdC5kaXIKKyAgIyBDb3B5IGRlcGNvbXAgdG8gc3ViZGlyIGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIHdvbid0IGZpbmQgaXQgaWYgd2UncmUKKyAgIyB1c2luZyBhIHJlbGF0aXZlIGRpcmVjdG9yeS4KKyAgY3AgIiRhbV9kZXBjb21wIiBjb25mdGVzdC5kaXIKKyAgY2QgY29uZnRlc3QuZGlyCisgICMgV2Ugd2lsbCBidWlsZCBvYmplY3RzIGFuZCBkZXBlbmRlbmNpZXMgaW4gYSBzdWJkaXJlY3RvcnkgYmVjYXVzZQorICAjIGl0IGhlbHBzIHRvIGRldGVjdCBpbmFwcGxpY2FibGUgZGVwZW5kZW5jeSBtb2Rlcy4gIEZvciBpbnN0YW5jZQorICAjIGJvdGggVHJ1NjQncyBjYyBhbmQgSUNDIHN1cHBvcnQgLU1EIHRvIG91dHB1dCBkZXBlbmRlbmNpZXMgYXMgYQorICAjIHNpZGUgZWZmZWN0IG9mIGNvbXBpbGF0aW9uLCBidXQgSUNDIHdpbGwgcHV0IHRoZSBkZXBlbmRlbmNpZXMgaW4KKyAgIyB0aGUgY3VycmVudCBkaXJlY3Rvcnkgd2hpbGUgVHJ1NjQgd2lsbCBwdXQgdGhlbSBpbiB0aGUgb2JqZWN0CisgICMgZGlyZWN0b3J5LgorICBta2RpciBzdWIKKworICBhbV9jdl8kMV9kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZT1ub25lCisgIGlmIHRlc3QgIiRhbV9jb21waWxlcl9saXN0IiA9ICIiOyB0aGVuCisgICAgIGFtX2NvbXBpbGVyX2xpc3Q9YHNlZCAtbiBbJ3MvXiMqXChbYS16QS1aMC05XSpcKSkkL1wxL3AnXSA8IC4vZGVwY29tcGAKKyAgZmkKKyAgZm9yIGRlcG1vZGUgaW4gJGFtX2NvbXBpbGVyX2xpc3Q7IGRvCisgICAgIyBTZXR1cCBhIHNvdXJjZSB3aXRoIG1hbnkgZGVwZW5kZW5jaWVzLCBiZWNhdXNlIHNvbWUgY29tcGlsZXJzCisgICAgIyBsaWtlIHRvIHdyYXAgbGFyZ2UgZGVwZW5kZW5jeSBsaXN0cyBvbiBjb2x1bW4gODAgKHdpdGggXCksIGFuZAorICAgICMgd2Ugc2hvdWxkIG5vdCBjaG9vc2UgYSBkZXBjb21wIG1vZGUgd2hpY2ggaXMgY29uZnVzZWQgYnkgdGhpcy4KKyAgICAjCisgICAgIyBXZSBuZWVkIHRvIHJlY3JlYXRlIHRoZXNlIGZpbGVzIGZvciBlYWNoIHRlc3QsIGFzIHRoZSBjb21waWxlciBtYXkKKyAgICAjIG92ZXJ3cml0ZSBzb21lIG9mIHRoZW0gd2hlbiB0ZXN0aW5nIHdpdGggb2JzY3VyZSBjb21tYW5kIGxpbmVzLgorICAgICMgVGhpcyBoYXBwZW5zIGF0IGxlYXN0IHdpdGggdGhlIEFJWCBDIGNvbXBpbGVyLgorICAgIDogPiBzdWIvY29uZnRlc3QuYworICAgIGZvciBpIGluIDEgMiAzIDQgNSA2OyBkbworICAgICAgZWNobyAnI2luY2x1ZGUgImNvbmZ0c3QnJGknLmgiJyA+PiBzdWIvY29uZnRlc3QuYworICAgICAgIyBVc2luZyBgOiA+IHN1Yi9jb25mdHN0JGkuaCcgY3JlYXRlcyBvbmx5IHN1Yi9jb25mdHN0MS5oIHdpdGgKKyAgICAgICMgU29sYXJpcyA4J3Mgey91c3IsfS9iaW4vc2guCisgICAgICB0b3VjaCBzdWIvY29uZnRzdCRpLmgKKyAgICBkb25lCisgICAgZWNobyAiJHthbV9faW5jbHVkZX0gJHthbV9fcXVvdGV9c3ViL2NvbmZ0ZXN0LlBvJHthbV9fcXVvdGV9IiA+IGNvbmZtZgorCisgICAgY2FzZSAkZGVwbW9kZSBpbgorICAgIG5vc2lkZWVmZmVjdCkKKyAgICAgICMgYWZ0ZXIgdGhpcyB0YWcsIG1lY2hhbmlzbXMgYXJlIG5vdCBieSBzaWRlLWVmZmVjdCwgc28gdGhleSdsbAorICAgICAgIyBvbmx5IGJlIHVzZWQgd2hlbiBleHBsaWNpdGx5IHJlcXVlc3RlZAorICAgICAgaWYgdGVzdCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZyIgPSB4eWVzOyB0aGVuCisJY29udGludWUKKyAgICAgIGVsc2UKKwlicmVhaworICAgICAgZmkKKyAgICAgIDs7CisgICAgbm9uZSkgYnJlYWsgOzsKKyAgICBlc2FjCisgICAgIyBXZSBjaGVjayB3aXRoIGAtYycgYW5kIGAtbycgZm9yIHRoZSBzYWtlIG9mIHRoZSAiZGFzaG1zdGRvdXQiCisgICAgIyBtb2RlLiAgSXQgdHVybnMgb3V0IHRoYXQgdGhlIFN1blBybyBDKysgY29tcGlsZXIgZG9lcyBub3QgcHJvcGVybHkKKyAgICAjIGhhbmRsZSBgLU0gLW8nLCBhbmQgd2UgbmVlZCB0byBkZXRlY3QgdGhpcy4KKyAgICBpZiBkZXBtb2RlPSRkZXBtb2RlIFwKKyAgICAgICBzb3VyY2U9c3ViL2NvbmZ0ZXN0LmMgb2JqZWN0PXN1Yi9jb25mdGVzdC4ke09CSkVYVC1vfSBcCisgICAgICAgZGVwZmlsZT1zdWIvY29uZnRlc3QuUG8gdG1wZGVwZmlsZT1zdWIvY29uZnRlc3QuVFBvIFwKKyAgICAgICAkU0hFTEwgLi9kZXBjb21wICRkZXBjYyAtYyAtbyBzdWIvY29uZnRlc3QuJHtPQkpFWFQtb30gc3ViL2NvbmZ0ZXN0LmMgXAorICAgICAgICAgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0LmVyciAmJgorICAgICAgIGdyZXAgc3ViL2NvbmZ0c3Q2Lmggc3ViL2NvbmZ0ZXN0LlBvID4gL2Rldi9udWxsIDI+JjEgJiYKKyAgICAgICBncmVwIHN1Yi9jb25mdGVzdC4ke09CSkVYVC1vfSBzdWIvY29uZnRlc3QuUG8gPiAvZGV2L251bGwgMj4mMSAmJgorICAgICAgICR7TUFLRS1tYWtlfSAtcyAtZiBjb25mbWYgPiAvZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgIyBpY2MgZG9lc24ndCBjaG9rZSBvbiB1bmtub3duIG9wdGlvbnMsIGl0IHdpbGwganVzdCBpc3N1ZSB3YXJuaW5ncworICAgICAgIyBvciByZW1hcmtzIChldmVuIHdpdGggLVdlcnJvcikuICBTbyB3ZSBncmVwIHN0ZGVyciBmb3IgYW55IG1lc3NhZ2UKKyAgICAgICMgdGhhdCBzYXlzIGFuIG9wdGlvbiB3YXMgaWdub3JlZCBvciBub3Qgc3VwcG9ydGVkLgorICAgICAgIyBXaGVuIGdpdmVuIC1NUCwgaWNjIDcuMCBhbmQgNy4xIGNvbXBsYWluIHRodXNseToKKyAgICAgICMgICBpY2M6IENvbW1hbmQgbGluZSB3YXJuaW5nOiBpZ25vcmluZyBvcHRpb24gJy1NJzsgbm8gYXJndW1lbnQgcmVxdWlyZWQKKyAgICAgICMgVGhlIGRpYWdub3NpcyBjaGFuZ2VkIGluIGljYyA4LjA6CisgICAgICAjICAgaWNjOiBDb21tYW5kIGxpbmUgcmVtYXJrOiBvcHRpb24gJy1NUCcgbm90IHN1cHBvcnRlZAorICAgICAgaWYgKGdyZXAgJ2lnbm9yaW5nIG9wdGlvbicgY29uZnRlc3QuZXJyIHx8CisgICAgICAgICAgZ3JlcCAnbm90IHN1cHBvcnRlZCcgY29uZnRlc3QuZXJyKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOjsgZWxzZQorICAgICAgICBhbV9jdl8kMV9kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZT0kZGVwbW9kZQorICAgICAgICBicmVhaworICAgICAgZmkKKyAgICBmaQorICBkb25lCisKKyAgY2QgLi4KKyAgcm0gLXJmIGNvbmZ0ZXN0LmRpcgorZWxzZQorICBhbV9jdl8kMV9kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZT1ub25lCitmaQorXSkKK0FDX1NVQlNUKFskMURFUE1PREVdLCBbZGVwbW9kZT0kYW1fY3ZfJDFfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGVdKQorQU1fQ09ORElUSU9OQUwoW2FtX19mYXN0ZGVwJDFdLCBbCisgIHRlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciICE9IHhubyBcCisgICYmIHRlc3QgIiRhbV9jdl8kMV9kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZSIgPSBnY2MzXSkKK10pCisKKworIyBBTV9TRVRfREVQRElSCisjIC0tLS0tLS0tLS0tLS0KKyMgQ2hvb3NlIGEgZGlyZWN0b3J5IG5hbWUgZm9yIGRlcGVuZGVuY3kgZmlsZXMuCisjIFRoaXMgbWFjcm8gaXMgQUNfUkVRVUlSRWQgaW4gX0FNX0RFUEVOREVOQ0lFUworQUNfREVGVU4oW0FNX1NFVF9ERVBESVJdLAorW0FDX1JFUVVJUkUoW0FNX1NFVF9MRUFESU5HX0RPVF0pZG5sCitBQ19TVUJTVChbREVQRElSXSwgWyIke2FtX19sZWFkaW5nX2RvdH1kZXBzIl0pZG5sCitdKQorCisKKyMgQU1fREVQX1RSQUNLCisjIC0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0FNX0RFUF9UUkFDS10sCitbQUNfQVJHX0VOQUJMRShkZXBlbmRlbmN5LXRyYWNraW5nLAorWyAgLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgIHNwZWVkcyB1cCBvbmUtdGltZSBidWlsZAorICAtLWVuYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nICAgZG8gbm90IHJlamVjdCBzbG93IGRlcGVuZGVuY3kgZXh0cmFjdG9yc10pCitpZiB0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiAhPSB4bm87IHRoZW4KKyAgYW1fZGVwY29tcD0iJGFjX2F1eF9kaXIvZGVwY29tcCIKKyAgQU1ERVBCQUNLU0xBU0g9J1wnCitmaQorQU1fQ09ORElUSU9OQUwoW0FNREVQXSwgW3Rlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciICE9IHhub10pCitBQ19TVUJTVChbQU1ERVBCQUNLU0xBU0hdKQorXSkKKworIyBHZW5lcmF0ZSBjb2RlIHRvIHNldCB1cCBkZXBlbmRlbmN5IHRyYWNraW5nLiAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQorCisjIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNQorIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjc2VyaWFsIDMKKworIyBfQU1fT1VUUFVUX0RFUEVOREVOQ1lfQ09NTUFORFMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbX0FNX09VVFBVVF9ERVBFTkRFTkNZX0NPTU1BTkRTXSwKK1tmb3IgbWYgaW4gJENPTkZJR19GSUxFUzsgZG8KKyAgIyBTdHJpcCBNRiBzbyB3ZSBlbmQgdXAgd2l0aCB0aGUgbmFtZSBvZiB0aGUgZmlsZS4KKyAgbWY9YGVjaG8gIiRtZiIgfCBzZWQgLWUgJ3MvOi4qJC8vJ2AKKyAgIyBDaGVjayB3aGV0aGVyIHRoaXMgaXMgYW4gQXV0b21ha2UgZ2VuZXJhdGVkIE1ha2VmaWxlIG9yIG5vdC4KKyAgIyBXZSB1c2VkIHRvIG1hdGNoIG9ubHkgdGhlIGZpbGVzIG5hbWVkIGBNYWtlZmlsZS5pbicsIGJ1dAorICAjIHNvbWUgcGVvcGxlIHJlbmFtZSB0aGVtOyBzbyBpbnN0ZWFkIHdlIGxvb2sgYXQgdGhlIGZpbGUgY29udGVudC4KKyAgIyBHcmVwJ2luZyB0aGUgZmlyc3QgbGluZSBpcyBub3QgZW5vdWdoOiBzb21lIHBlb3BsZSBwb3N0LXByb2Nlc3MKKyAgIyBlYWNoIE1ha2VmaWxlLmluIGFuZCBhZGQgYSBuZXcgbGluZSBvbiB0b3Agb2YgZWFjaCBmaWxlIHRvIHNheSBzby4KKyAgIyBTbyBsZXQncyBncmVwIHdob2xlIGZpbGUuCisgIGlmIGdyZXAgJ14jLipnZW5lcmF0ZWQgYnkgYXV0b21ha2UnICRtZiA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAgZGlycGFydD1gQVNfRElSTkFNRSgiJG1mIilgCisgIGVsc2UKKyAgICBjb250aW51ZQorICBmaQorICAjIEV4dHJhY3QgdGhlIGRlZmluaXRpb24gb2YgREVQRElSLCBhbV9faW5jbHVkZSwgYW5kIGFtX19xdW90ZQorICAjIGZyb20gdGhlIE1ha2VmaWxlIHdpdGhvdXQgcnVubmluZyBgbWFrZScuCisgIERFUERJUj1gc2VkIC1uICdzL15ERVBESVIgPSAvL3AnIDwgIiRtZiJgCisgIHRlc3QgLXogIiRERVBESVIiICYmIGNvbnRpbnVlCisgIGFtX19pbmNsdWRlPWBzZWQgLW4gJ3MvXmFtX19pbmNsdWRlID0gLy9wJyA8ICIkbWYiYAorICB0ZXN0IC16ICJhbV9faW5jbHVkZSIgJiYgY29udGludWUKKyAgYW1fX3F1b3RlPWBzZWQgLW4gJ3MvXmFtX19xdW90ZSA9IC8vcCcgPCAiJG1mImAKKyAgIyBXaGVuIHVzaW5nIGFuc2kya25yLCBVIG1heSBiZSBlbXB0eSBvciBhbiB1bmRlcnNjb3JlOyBleHBhbmQgaXQKKyAgVT1gc2VkIC1uICdzL15VID0gLy9wJyA8ICIkbWYiYAorICAjIEZpbmQgYWxsIGRlcGVuZGVuY3kgb3V0cHV0IGZpbGVzLCB0aGV5IGFyZSBpbmNsdWRlZCBmaWxlcyB3aXRoCisgICMgJChERVBESVIpIGluIHRoZWlyIG5hbWVzLiAgV2UgaW52b2tlIHNlZCB0d2ljZSBiZWNhdXNlIGl0IGlzIHRoZQorICAjIHNpbXBsZXN0IGFwcHJvYWNoIHRvIGNoYW5naW5nICQoREVQRElSKSB0byBpdHMgYWN0dWFsIHZhbHVlIGluIHRoZQorICAjIGV4cGFuc2lvbi4KKyAgZm9yIGZpbGUgaW4gYHNlZCAtbiAiCisgICAgcy9eJGFtX19pbmNsdWRlICRhbV9fcXVvdGVcKC4qKERFUERJUikuKlwpJGFtX19xdW90ZSInJC9cMS9wJyA8IiRtZiIgfCBcCisgICAgICAgc2VkIC1lICdzL1wkKERFUERJUikvJyIkREVQRElSIicvZycgLWUgJ3MvXCRVLyciJFUiJy9nJ2A7IGRvCisgICAgIyBNYWtlIHN1cmUgdGhlIGRpcmVjdG9yeSBleGlzdHMuCisgICAgdGVzdCAtZiAiJGRpcnBhcnQvJGZpbGUiICYmIGNvbnRpbnVlCisgICAgZmRpcj1gQVNfRElSTkFNRShbIiRmaWxlIl0pYAorICAgIEFTX01LRElSX1AoWyRkaXJwYXJ0LyRmZGlyXSkKKyAgICAjIGVjaG8gImNyZWF0aW5nICRkaXJwYXJ0LyRmaWxlIgorICAgIGVjaG8gJyMgZHVtbXknID4gIiRkaXJwYXJ0LyRmaWxlIgorICBkb25lCitkb25lCitdKSMgX0FNX09VVFBVVF9ERVBFTkRFTkNZX0NPTU1BTkRTCisKKworIyBBTV9PVVRQVVRfREVQRU5ERU5DWV9DT01NQU5EUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUaGlzIG1hY3JvIHNob3VsZCBvbmx5IGJlIGludm9rZWQgb25jZSAtLSB1c2UgdmlhIEFDX1JFUVVJUkUuCisjCisjIFRoaXMgY29kZSBpcyBvbmx5IHJlcXVpcmVkIHdoZW4gYXV0b21hdGljIGRlcGVuZGVuY3kgdHJhY2tpbmcKKyMgaXMgZW5hYmxlZC4gIEZJWE1FLiAgVGhpcyBjcmVhdGVzIGVhY2ggYC5QJyBmaWxlIHRoYXQgd2Ugd2lsbAorIyBuZWVkIGluIG9yZGVyIHRvIGJvb3RzdHJhcCB0aGUgZGVwZW5kZW5jeSBoYW5kbGluZyBjb2RlLgorQUNfREVGVU4oW0FNX09VVFBVVF9ERVBFTkRFTkNZX0NPTU1BTkRTXSwKK1tBQ19DT05GSUdfQ09NTUFORFMoW2RlcGZpbGVzXSwKKyAgICAgW3Rlc3QgeCIkQU1ERVBfVFJVRSIgIT0geCIiIHx8IF9BTV9PVVRQVVRfREVQRU5ERU5DWV9DT01NQU5EU10sCisgICAgIFtBTURFUF9UUlVFPSIkQU1ERVBfVFJVRSIgYWNfYXV4X2Rpcj0iJGFjX2F1eF9kaXIiXSkKK10pCisKKyMgRG8gYWxsIHRoZSB3b3JrIGZvciBBdXRvbWFrZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KKworIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUKKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBzZXJpYWwgMTIKKworIyBUaGlzIG1hY3JvIGFjdHVhbGx5IGRvZXMgdG9vIG11Y2guICBTb21lIGNoZWNrcyBhcmUgb25seSBuZWVkZWQgaWYKKyMgeW91ciBwYWNrYWdlIGRvZXMgY2VydGFpbiB0aGluZ3MuICBCdXQgdGhpcyBpc24ndCByZWFsbHkgYSBiaWcgZGVhbC4KKworIyBBTV9JTklUX0FVVE9NQUtFKFBBQ0tBR0UsIFZFUlNJT04sIFtOTy1ERUZJTkVdKQorIyBBTV9JTklUX0FVVE9NQUtFKFtPUFRJT05TXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGhlIGNhbGwgd2l0aCBQQUNLQUdFIGFuZCBWRVJTSU9OIGFyZ3VtZW50cyBpcyB0aGUgb2xkIHN0eWxlCisjIGNhbGwgKHByZSBhdXRvY29uZi0yLjUwKSwgd2hpY2ggaXMgYmVpbmcgcGhhc2VkIG91dC4gIFBBQ0tBR0UKKyMgYW5kIFZFUlNJT04gc2hvdWxkIG5vdyBiZSBwYXNzZWQgdG8gQUNfSU5JVCBhbmQgcmVtb3ZlZCBmcm9tCisjIHRoZSBjYWxsIHRvIEFNX0lOSVRfQVVUT01BS0UuCisjIFdlIHN1cHBvcnQgYm90aCBjYWxsIHN0eWxlcyBmb3IgdGhlIHRyYW5zaXRpb24uICBBZnRlcgorIyB0aGUgbmV4dCBBdXRvbWFrZSByZWxlYXNlLCBBdXRvY29uZiBjYW4gbWFrZSB0aGUgQUNfSU5JVAorIyBhcmd1bWVudHMgbWFuZGF0b3J5LCBhbmQgdGhlbiB3ZSBjYW4gZGVwZW5kIG9uIGEgbmV3IEF1dG9jb25mCisjIHJlbGVhc2UgYW5kIGRyb3AgdGhlIG9sZCBjYWxsIHN1cHBvcnQuCitBQ19ERUZVTihbQU1fSU5JVF9BVVRPTUFLRV0sCitbQUNfUFJFUkVRKFsyLjU4XSlkbmwKK2RubCBBdXRvY29uZiB3YW50cyB0byBkaXNhbGxvdyBBTV8gbmFtZXMuICBXZSBleHBsaWNpdGx5IGFsbG93CitkbmwgdGhlIG9uZXMgd2UgY2FyZSBhYm91dC4KK200X3BhdHRlcm5fYWxsb3coW15BTV9bQS1aXStGTEFHUyRdKWRubAorQUNfUkVRVUlSRShbQU1fU0VUX0NVUlJFTlRfQVVUT01BS0VfVkVSU0lPTl0pZG5sCitBQ19SRVFVSVJFKFtBQ19QUk9HX0lOU1RBTExdKWRubAorIyB0ZXN0IHRvIHNlZSBpZiBzcmNkaXIgYWxyZWFkeSBjb25maWd1cmVkCitpZiB0ZXN0ICJgY2QgJHNyY2RpciAmJiBwd2RgIiAhPSAiYHB3ZGAiICYmCisgICB0ZXN0IC1mICRzcmNkaXIvY29uZmlnLnN0YXR1czsgdGhlbgorICBBQ19NU0dfRVJST1IoW3NvdXJjZSBkaXJlY3RvcnkgYWxyZWFkeSBjb25maWd1cmVkOyBydW4gIm1ha2UgZGlzdGNsZWFuIiB0aGVyZSBmaXJzdF0pCitmaQorCisjIHRlc3Qgd2hldGhlciB3ZSBoYXZlIGN5Z3BhdGgKK2lmIHRlc3QgLXogIiRDWUdQQVRIX1ciOyB0aGVuCisgIGlmIChjeWdwYXRoIC0tdmVyc2lvbikgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbDsgdGhlbgorICAgIENZR1BBVEhfVz0nY3lncGF0aCAtdycKKyAgZWxzZQorICAgIENZR1BBVEhfVz1lY2hvCisgIGZpCitmaQorQUNfU1VCU1QoW0NZR1BBVEhfV10pCisKKyMgRGVmaW5lIHRoZSBpZGVudGl0eSBvZiB0aGUgcGFja2FnZS4KK2RubCBEaXN0aW5ndWlzaCBiZXR3ZWVuIG9sZC1zdHlsZSBhbmQgbmV3LXN0eWxlIGNhbGxzLgorbTRfaWZ2YWwoWyQyXSwKK1ttNF9pZnZhbChbJDNdLCBbX0FNX1NFVF9PUFRJT04oW25vLWRlZmluZV0pXSlkbmwKKyBBQ19TVUJTVChbUEFDS0FHRV0sIFskMV0pZG5sCisgQUNfU1VCU1QoW1ZFUlNJT05dLCBbJDJdKV0sCitbX0FNX1NFVF9PUFRJT05TKFskMV0pZG5sCisgQUNfU1VCU1QoW1BBQ0tBR0VdLCBbJ0FDX1BBQ0tBR0VfVEFSTkFNRSddKWRubAorIEFDX1NVQlNUKFtWRVJTSU9OXSwgWydBQ19QQUNLQUdFX1ZFUlNJT04nXSldKWRubAorCitfQU1fSUZfT1BUSU9OKFtuby1kZWZpbmVdLCwKK1tBQ19ERUZJTkVfVU5RVU9URUQoUEFDS0FHRSwgIiRQQUNLQUdFIiwgW05hbWUgb2YgcGFja2FnZV0pCisgQUNfREVGSU5FX1VOUVVPVEVEKFZFUlNJT04sICIkVkVSU0lPTiIsIFtWZXJzaW9uIG51bWJlciBvZiBwYWNrYWdlXSldKWRubAorCisjIFNvbWUgdG9vbHMgQXV0b21ha2UgbmVlZHMuCitBQ19SRVFVSVJFKFtBTV9TQU5JVFlfQ0hFQ0tdKWRubAorQUNfUkVRVUlSRShbQUNfQVJHX1BST0dSQU1dKWRubAorQU1fTUlTU0lOR19QUk9HKEFDTE9DQUwsIGFjbG9jYWwtJHthbV9fYXBpX3ZlcnNpb259KQorQU1fTUlTU0lOR19QUk9HKEFVVE9DT05GLCBhdXRvY29uZikKK0FNX01JU1NJTkdfUFJPRyhBVVRPTUFLRSwgYXV0b21ha2UtJHthbV9fYXBpX3ZlcnNpb259KQorQU1fTUlTU0lOR19QUk9HKEFVVE9IRUFERVIsIGF1dG9oZWFkZXIpCitBTV9NSVNTSU5HX1BST0coTUFLRUlORk8sIG1ha2VpbmZvKQorQU1fUFJPR19JTlNUQUxMX1NICitBTV9QUk9HX0lOU1RBTExfU1RSSVAKK0FDX1JFUVVJUkUoW0FNX1BST0dfTUtESVJfUF0pZG5sCisjIFdlIG5lZWQgYXdrIGZvciB0aGUgImNoZWNrIiB0YXJnZXQuICBUaGUgc3lzdGVtICJhd2siIGlzIGJhZCBvbgorIyBzb21lIHBsYXRmb3Jtcy4KK0FDX1JFUVVJUkUoW0FDX1BST0dfQVdLXSlkbmwKK0FDX1JFUVVJUkUoW0FDX1BST0dfTUFLRV9TRVRdKWRubAorQUNfUkVRVUlSRShbQU1fU0VUX0xFQURJTkdfRE9UXSlkbmwKK19BTV9JRl9PUFRJT04oW3Rhci11c3Rhcl0sIFtfQU1fUFJPR19UQVIoW3VzdGFyXSldLAorICAgICAgICAgICAgICBbX0FNX0lGX09QVElPTihbdGFyLXBheF0sIFtfQU1fUFJPR19UQVIoW3BheF0pXSwKKwkgICAgICAJCSAgICAgW19BTV9QUk9HX1RBUihbdjddKV0pXSkKK19BTV9JRl9PUFRJT04oW25vLWRlcGVuZGVuY2llc10sLAorW0FDX1BST1ZJREVfSUZFTFNFKFtBQ19QUk9HX0NDXSwKKyAgICAgICAgICAgICAgICAgIFtfQU1fREVQRU5ERU5DSUVTKENDKV0sCisgICAgICAgICAgICAgICAgICBbZGVmaW5lKFtBQ19QUk9HX0NDXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmbihbQUNfUFJPR19DQ10pW19BTV9ERVBFTkRFTkNJRVMoQ0MpXSldKWRubAorQUNfUFJPVklERV9JRkVMU0UoW0FDX1BST0dfQ1hYXSwKKyAgICAgICAgICAgICAgICAgIFtfQU1fREVQRU5ERU5DSUVTKENYWCldLAorICAgICAgICAgICAgICAgICAgW2RlZmluZShbQUNfUFJPR19DWFhdLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZuKFtBQ19QUk9HX0NYWF0pW19BTV9ERVBFTkRFTkNJRVMoQ1hYKV0pXSlkbmwKK10pCitdKQorCisKKyMgV2hlbiBjb25maWcuc3RhdHVzIGdlbmVyYXRlcyBhIGhlYWRlciwgd2UgbXVzdCB1cGRhdGUgdGhlIHN0YW1wLWggZmlsZS4KKyMgVGhpcyBmaWxlIHJlc2lkZXMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSBjb25maWcgaGVhZGVyCisjIHRoYXQgaXMgZ2VuZXJhdGVkLiAgVGhlIHN0YW1wIGZpbGVzIGFyZSBudW1iZXJlZCB0byBoYXZlIGRpZmZlcmVudCBuYW1lcy4KKworIyBBdXRvY29uZiBjYWxscyBfQUNfQU1fQ09ORklHX0hFQURFUl9IT09LICh3aGVuIGRlZmluZWQpIGluIHRoZQorIyBsb29wIHdoZXJlIGNvbmZpZy5zdGF0dXMgY3JlYXRlcyB0aGUgaGVhZGVycywgc28gd2UgY2FuIGdlbmVyYXRlCisjIG91ciBzdGFtcCBmaWxlcyB0aGVyZS4KK0FDX0RFRlVOKFtfQUNfQU1fQ09ORklHX0hFQURFUl9IT09LXSwKK1sjIENvbXB1dGUgJDEncyBpbmRleCBpbiAkY29uZmlnX2hlYWRlcnMuCitfYW1fc3RhbXBfY291bnQ9MQorZm9yIF9hbV9oZWFkZXIgaW4gJGNvbmZpZ19oZWFkZXJzIDo7IGRvCisgIGNhc2UgJF9hbV9oZWFkZXIgaW4KKyAgICAkMSB8ICQxOiogKQorICAgICAgYnJlYWsgOzsKKyAgICAqICkKKyAgICAgIF9hbV9zdGFtcF9jb3VudD1gZXhwciAkX2FtX3N0YW1wX2NvdW50ICsgMWAgOzsKKyAgZXNhYworZG9uZQorZWNobyAidGltZXN0YW1wIGZvciAkMSIgPmBBU19ESVJOQU1FKFskMV0pYC9zdGFtcC1oW10kX2FtX3N0YW1wX2NvdW50XSkKKworIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMsIDIwMDUgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgQU1fUFJPR19JTlNUQUxMX1NICisjIC0tLS0tLS0tLS0tLS0tLS0tLQorIyBEZWZpbmUgJGluc3RhbGxfc2guCitBQ19ERUZVTihbQU1fUFJPR19JTlNUQUxMX1NIXSwKK1tBQ19SRVFVSVJFKFtBTV9BVVhfRElSX0VYUEFORF0pZG5sCitpbnN0YWxsX3NoPSR7aW5zdGFsbF9zaC0iJGFtX2F1eF9kaXIvaW5zdGFsbC1zaCJ9CitBQ19TVUJTVChpbnN0YWxsX3NoKV0pCisKKyMgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIHNlcmlhbCAyCisKKyMgQ2hlY2sgd2hldGhlciB0aGUgdW5kZXJseWluZyBmaWxlLXN5c3RlbSBzdXBwb3J0cyBmaWxlbmFtZXMKKyMgd2l0aCBhIGxlYWRpbmcgZG90LiAgRm9yIGluc3RhbmNlIE1TLURPUyBkb2Vzbid0LgorQUNfREVGVU4oW0FNX1NFVF9MRUFESU5HX0RPVF0sCitbcm0gLXJmIC50c3QgMj4vZGV2L251bGwKK21rZGlyIC50c3QgMj4vZGV2L251bGwKK2lmIHRlc3QgLWQgLnRzdDsgdGhlbgorICBhbV9fbGVhZGluZ19kb3Q9LgorZWxzZQorICBhbV9fbGVhZGluZ19kb3Q9XworZmkKK3JtZGlyIC50c3QgMj4vZGV2L251bGwKK0FDX1NVQlNUKFthbV9fbGVhZGluZ19kb3RdKV0pCisKKyMgQWRkIC0tZW5hYmxlLW1haW50YWluZXItbW9kZSBvcHRpb24gdG8gY29uZmlndXJlLiAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KKyMgRnJvbSBKaW0gTWV5ZXJpbmcKKworIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTgsIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUKKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBzZXJpYWwgNAorCitBQ19ERUZVTihbQU1fTUFJTlRBSU5FUl9NT0RFXSwKK1tBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gZW5hYmxlIG1haW50YWluZXItc3BlY2lmaWMgcG9ydGlvbnMgb2YgTWFrZWZpbGVzXSkKKyAgZG5sIG1haW50YWluZXItbW9kZSBpcyBkaXNhYmxlZCBieSBkZWZhdWx0CisgIEFDX0FSR19FTkFCTEUobWFpbnRhaW5lci1tb2RlLAorWyAgLS1lbmFibGUtbWFpbnRhaW5lci1tb2RlICBlbmFibGUgbWFrZSBydWxlcyBhbmQgZGVwZW5kZW5jaWVzIG5vdCB1c2VmdWwKKwkJCSAgKGFuZCBzb21ldGltZXMgY29uZnVzaW5nKSB0byB0aGUgY2FzdWFsIGluc3RhbGxlcl0sCisgICAgICBVU0VfTUFJTlRBSU5FUl9NT0RFPSRlbmFibGV2YWwsCisgICAgICBVU0VfTUFJTlRBSU5FUl9NT0RFPW5vKQorICBBQ19NU0dfUkVTVUxUKFskVVNFX01BSU5UQUlORVJfTU9ERV0pCisgIEFNX0NPTkRJVElPTkFMKE1BSU5UQUlORVJfTU9ERSwgW3Rlc3QgJFVTRV9NQUlOVEFJTkVSX01PREUgPSB5ZXNdKQorICBNQUlOVD0kTUFJTlRBSU5FUl9NT0RFX1RSVUUKKyAgQUNfU1VCU1QoTUFJTlQpZG5sCitdCispCisKK0FVX0RFRlVOKFtqbV9NQUlOVEFJTkVSX01PREVdLCBbQU1fTUFJTlRBSU5FUl9NT0RFXSkKKworIyBDaGVjayB0byBzZWUgaG93ICdtYWtlJyB0cmVhdHMgaW5jbHVkZXMuCSAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KKworIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDUgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgc2VyaWFsIDMKKworIyBBTV9NQUtFX0lOQ0xVREUoKQorIyAtLS0tLS0tLS0tLS0tLS0tLQorIyBDaGVjayB0byBzZWUgaG93IG1ha2UgdHJlYXRzIGluY2x1ZGVzLgorQUNfREVGVU4oW0FNX01BS0VfSU5DTFVERV0sCitbYW1fbWFrZT0ke01BS0UtbWFrZX0KK2NhdCA+IGNvbmZpbmMgPDwgJ0VORCcKK2FtX19kb2l0OgorCUBlY2hvIGRvbmUKKy5QSE9OWTogYW1fX2RvaXQKK0VORAorIyBJZiB3ZSBkb24ndCBmaW5kIGFuIGluY2x1ZGUgZGlyZWN0aXZlLCBqdXN0IGNvbW1lbnQgb3V0IHRoZSBjb2RlLgorQUNfTVNHX0NIRUNLSU5HKFtmb3Igc3R5bGUgb2YgaW5jbHVkZSB1c2VkIGJ5ICRhbV9tYWtlXSkKK2FtX19pbmNsdWRlPSIjIgorYW1fX3F1b3RlPQorX2FtX3Jlc3VsdD1ub25lCisjIEZpcnN0IHRyeSBHTlUgbWFrZSBzdHlsZSBpbmNsdWRlLgorZWNobyAiaW5jbHVkZSBjb25maW5jIiA+IGNvbmZtZgorIyBXZSBncmVwIG91dCBgRW50ZXJpbmcgZGlyZWN0b3J5JyBhbmQgYExlYXZpbmcgZGlyZWN0b3J5JworIyBtZXNzYWdlcyB3aGljaCBjYW4gb2NjdXIgaWYgYHcnIGVuZHMgdXAgaW4gTUFLRUZMQUdTLgorIyBJbiBwYXJ0aWN1bGFyIHdlIGRvbid0IGxvb2sgYXQgYF5tYWtlOicgYmVjYXVzZSBHTlUgbWFrZSBtaWdodAorIyBiZSBpbnZva2VkIHVuZGVyIHNvbWUgb3RoZXIgbmFtZSAodXN1YWxseSAiZ21ha2UiKSwgaW4gd2hpY2gKKyMgY2FzZSBpdCBwcmludHMgaXRzIG5ldyBuYW1lIGluc3RlYWQgb2YgYG1ha2UnLgoraWYgdGVzdCAiYCRhbV9tYWtlIC1zIC1mIGNvbmZtZiAyPiAvZGV2L251bGwgfCBncmVwIC12ICdpbmcgZGlyZWN0b3J5J2AiID0gImRvbmUiOyB0aGVuCisgICBhbV9faW5jbHVkZT1pbmNsdWRlCisgICBhbV9fcXVvdGU9CisgICBfYW1fcmVzdWx0PUdOVQorZmkKKyMgTm93IHRyeSBCU0QgbWFrZSBzdHlsZSBpbmNsdWRlLgoraWYgdGVzdCAiJGFtX19pbmNsdWRlIiA9ICIjIjsgdGhlbgorICAgZWNobyAnLmluY2x1ZGUgImNvbmZpbmMiJyA+IGNvbmZtZgorICAgaWYgdGVzdCAiYCRhbV9tYWtlIC1zIC1mIGNvbmZtZiAyPiAvZGV2L251bGxgIiA9ICJkb25lIjsgdGhlbgorICAgICAgYW1fX2luY2x1ZGU9LmluY2x1ZGUKKyAgICAgIGFtX19xdW90ZT0iXCIiCisgICAgICBfYW1fcmVzdWx0PUJTRAorICAgZmkKK2ZpCitBQ19TVUJTVChbYW1fX2luY2x1ZGVdKQorQUNfU1VCU1QoW2FtX19xdW90ZV0pCitBQ19NU0dfUkVTVUxUKFskX2FtX3Jlc3VsdF0pCitybSAtZiBjb25maW5jIGNvbmZtZgorXSkKKworIyBGYWtlIHRoZSBleGlzdGVuY2Ugb2YgcHJvZ3JhbXMgdGhhdCBHTlUgbWFpbnRhaW5lcnMgdXNlLiAgLSotIEF1dG9jb25mIC0qLQorCisjIENvcHlyaWdodCAoQykgMTk5NywgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNQorIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIHNlcmlhbCA0CisKKyMgQU1fTUlTU0lOR19QUk9HKE5BTUUsIFBST0dSQU0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0FNX01JU1NJTkdfUFJPR10sCitbQUNfUkVRVUlSRShbQU1fTUlTU0lOR19IQVNfUlVOXSkKKyQxPSR7JDEtIiR7YW1fbWlzc2luZ19ydW59JDIifQorQUNfU1VCU1QoJDEpXSkKKworCisjIEFNX01JU1NJTkdfSEFTX1JVTgorIyAtLS0tLS0tLS0tLS0tLS0tLS0KKyMgRGVmaW5lIE1JU1NJTkcgaWYgbm90IGRlZmluZWQgc28gZmFyIGFuZCB0ZXN0IGlmIGl0IHN1cHBvcnRzIC0tcnVuLgorIyBJZiBpdCBkb2VzLCBzZXQgYW1fbWlzc2luZ19ydW4gdG8gdXNlIGl0LCBvdGhlcndpc2UsIHRvIG5vdGhpbmcuCitBQ19ERUZVTihbQU1fTUlTU0lOR19IQVNfUlVOXSwKK1tBQ19SRVFVSVJFKFtBTV9BVVhfRElSX0VYUEFORF0pZG5sCit0ZXN0IHgiJHtNSVNTSU5HK3NldH0iID0geHNldCB8fCBNSVNTSU5HPSJcJHtTSEVMTH0gJGFtX2F1eF9kaXIvbWlzc2luZyIKKyMgVXNlIGV2YWwgdG8gZXhwYW5kICRTSEVMTAoraWYgZXZhbCAiJE1JU1NJTkcgLS1ydW4gdHJ1ZSI7IHRoZW4KKyAgYW1fbWlzc2luZ19ydW49IiRNSVNTSU5HIC0tcnVuICIKK2Vsc2UKKyAgYW1fbWlzc2luZ19ydW49CisgIEFDX01TR19XQVJOKFtgbWlzc2luZycgc2NyaXB0IGlzIHRvbyBvbGQgb3IgbWlzc2luZ10pCitmaQorXSkKKworIyBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgQU1fUFJPR19NS0RJUl9QCisjIC0tLS0tLS0tLS0tLS0tLQorIyBDaGVjayB3aGV0aGVyIGBta2RpciAtcCcgaXMgc3VwcG9ydGVkLCBmYWxsYmFjayB0byBta2luc3RhbGxkaXJzIG90aGVyd2lzZS4KKyMKKyMgQXV0b21ha2UgMS44IHVzZWQgYG1rZGlyIC1tIDA3NTUgLXAgLS0nIHRvIGVuc3VyZSB0aGF0IGRpcmVjdG9yaWVzCisjIGNyZWF0ZWQgYnkgYG1ha2UgaW5zdGFsbCcgYXJlIGFsd2F5cyB3b3JsZCByZWFkYWJsZSwgZXZlbiBpZiB0aGUKKyMgaW5zdGFsbGVyIGhhcHBlbnMgdG8gaGF2ZSBhbiBvdmVybHkgcmVzdHJpY3RpdmUgdW1hc2sgKGUuZy4gMDc3KS4KKyMgVGhpcyB3YXMgYSBtaXN0YWtlLiAgVGhlcmUgYXJlIGF0IGxlYXN0IHR3byByZWFzb25zIHdoeSB3ZSBtdXN0IG5vdAorIyB1c2UgYC1tIDA3NTUnOgorIyAgIC0gaXQgY2F1c2VzIHNwZWNpYWwgYml0cyBsaWtlIFNHSUQgdG8gYmUgaWdub3JlZCwKKyMgICAtIGl0IG1heSBiZSB0b28gcmVzdHJpY3RpdmUgKHNvbWUgc2V0dXBzIGV4cGVjdCA3NzUgZGlyZWN0b3JpZXMpLgorIworIyBEbyBub3QgdXNlIC1tIDA3NTUgYW5kIGxldCBwZW9wbGUgY2hvb3NlIHdoYXRldmVyIHRoZXkgZXhwZWN0IGJ5CisjIHNldHRpbmcgdW1hc2suCisjCisjIFdlIGNhbm5vdCBhY2NlcHQgYW55IGltcGxlbWVudGF0aW9uIG9mIGBta2RpcicgdGhhdCByZWNvZ25pemVzIGAtcCcuCisjIFNvbWUgaW1wbGVtZW50YXRpb25zIChzdWNoIGFzIFNvbGFyaXMgOCdzKSBhcmUgbm90IHRocmVhZC1zYWZlOiBpZiBhCisjIHBhcmFsbGVsIG1ha2UgdHJpZXMgdG8gcnVuIGBta2RpciAtcCBhL2InIGFuZCBgbWtkaXIgLXAgYS9jJworIyBjb25jdXJyZW50bHksIGJvdGggdmVyc2lvbiBjYW4gZGV0ZWN0IHRoYXQgYS8gaXMgbWlzc2luZywgYnV0IG9ubHkKKyMgb25lIGNhbiBjcmVhdGUgaXQgYW5kIHRoZSBvdGhlciB3aWxsIGVycm9yIG91dC4gIENvbnNlcXVlbnRseSB3ZQorIyByZXN0cmljdCBvdXJzZWx2ZXMgdG8gR05VIG1ha2UgKHVzaW5nIHRoZSAtLXZlcnNpb24gb3B0aW9uIGVuc3VyZXMKKyMgdGhpcy4pCitBQ19ERUZVTihbQU1fUFJPR19NS0RJUl9QXSwKK1tpZiBta2RpciAtcCAtLXZlcnNpb24gLiA+L2Rldi9udWxsIDI+JjEgJiYgdGVzdCAhIC1kIC4vLS12ZXJzaW9uOyB0aGVuCisgICMgV2UgdXNlZCB0byBrZWVwaW5nIHRoZSBgLicgYXMgZmlyc3QgYXJndW1lbnQsIGluIG9yZGVyIHRvCisgICMgYWxsb3cgJChta2Rpcl9wKSB0byBiZSB1c2VkIHdpdGhvdXQgYXJndW1lbnQuICBBcyBpbgorICAjICAgJChta2Rpcl9wKSAkKHNvbWVkaXIpCisgICMgd2hlcmUgJChzb21lZGlyKSBpcyBjb25kaXRpb25hbGx5IGRlZmluZWQuICBIb3dldmVyIHRoaXMgaXMgd3JvbmcKKyAgIyBmb3IgdHdvIHJlYXNvbnM6CisgICMgIDEuIGlmIHRoZSBwYWNrYWdlIGlzIGluc3RhbGxlZCBieSBhIHVzZXIgd2hvIGNhbm5vdCB3cml0ZSBgLicKKyAgIyAgICAgbWFrZSBpbnN0YWxsIHdpbGwgZmFpbCwKKyAgIyAgMi4gdGhlIGFib3ZlIGNvbW1lbnQgc2hvdWxkIG1vc3QgY2VydGFpbmx5IHJlYWQKKyAgIyAgICAgJChta2Rpcl9wKSAkKERFU1RESVIpJChzb21lZGlyKQorICAjICAgICBzbyBpdCBkb2VzIG5vdCB3b3JrIHdoZW4gJChzb21lZGlyKSBpcyB1bmRlZmluZWQgYW5kCisgICMgICAgICQoREVTVERJUikgaXMgbm90LgorICAjICBUbyBzdXBwb3J0IHRoZSBsYXR0ZXIgY2FzZSwgd2UgaGF2ZSB0byB3cml0ZQorICAjICAgICB0ZXN0IC16ICIkKHNvbWVkaXIpIiB8fCAkKG1rZGlyX3ApICQoREVTVERJUikkKHNvbWVkaXIpLAorICAjICBzbyB0aGUgYC4nIHRyaWNrIGlzIHBvaW50bGVzcy4KKyAgbWtkaXJfcD0nbWtkaXIgLXAgLS0nCitlbHNlCisgICMgT24gTmV4dFN0ZXAgYW5kIE9wZW5TdGVwLCB0aGUgYG1rZGlyJyBjb21tYW5kIGRvZXMgbm90CisgICMgcmVjb2duaXplIGFueSBvcHRpb24uICBJdCB3aWxsIGludGVycHJldCBhbGwgb3B0aW9ucyBhcworICAjIGRpcmVjdG9yaWVzIHRvIGNyZWF0ZSwgYW5kIHRoZW4gYWJvcnQgYmVjYXVzZSBgLicgYWxyZWFkeQorICAjIGV4aXN0cy4KKyAgZm9yIGQgaW4gLi8tcCAuLy0tdmVyc2lvbjsKKyAgZG8KKyAgICB0ZXN0IC1kICRkICYmIHJtZGlyICRkCisgIGRvbmUKKyAgIyAkKG1raW5zdGFsbGRpcnMpIGlzIGRlZmluZWQgYnkgQXV0b21ha2UgaWYgbWtpbnN0YWxsZGlycyBleGlzdHMuCisgIGlmIHRlc3QgLWYgIiRhY19hdXhfZGlyL21raW5zdGFsbGRpcnMiOyB0aGVuCisgICAgbWtkaXJfcD0nJChta2luc3RhbGxkaXJzKScKKyAgZWxzZQorICAgIG1rZGlyX3A9JyQoaW5zdGFsbF9zaCkgLWQnCisgIGZpCitmaQorQUNfU1VCU1QoW21rZGlyX3BdKV0pCisKKyMgSGVscGVyIGZ1bmN0aW9ucyBmb3Igb3B0aW9uIGhhbmRsaW5nLiAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KKworIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDUgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgc2VyaWFsIDMKKworIyBfQU1fTUFOR0xFX09QVElPTihOQU1FKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW19BTV9NQU5HTEVfT1BUSU9OXSwKK1tbX0FNX09QVElPTl9dbTRfYnBhdHN1YnN0KCQxLCBbW15hLXpBLVowLTlfXV0sIFtfXSldKQorCisjIF9BTV9TRVRfT1BUSU9OKE5BTUUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBTZXQgb3B0aW9uIE5BTUUuICBQcmVzZW50bHkgdGhhdCBvbmx5IG1lYW5zIGRlZmluaW5nIGEgZmxhZyBmb3IgdGhpcyBvcHRpb24uCitBQ19ERUZVTihbX0FNX1NFVF9PUFRJT05dLAorW200X2RlZmluZShfQU1fTUFOR0xFX09QVElPTihbJDFdKSwgMSldKQorCisjIF9BTV9TRVRfT1BUSU9OUyhPUFRJT05TKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIE9QVElPTlMgaXMgYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBBdXRvbWFrZSBvcHRpb25zLgorQUNfREVGVU4oW19BTV9TRVRfT1BUSU9OU10sCitbQUNfRk9SRUFDSChbX0FNX09wdGlvbl0sIFskMV0sIFtfQU1fU0VUX09QVElPTihfQU1fT3B0aW9uKV0pXSkKKworIyBfQU1fSUZfT1BUSU9OKE9QVElPTiwgSUYtU0VULCBbSUYtTk9ULVNFVF0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRXhlY3V0ZSBJRi1TRVQgaWYgT1BUSU9OIGlzIHNldCwgSUYtTk9ULVNFVCBvdGhlcndpc2UuCitBQ19ERUZVTihbX0FNX0lGX09QVElPTl0sCitbbTRfaWZzZXQoX0FNX01BTkdMRV9PUFRJT04oWyQxXSksIFskMl0sIFskM10pXSkKKworIyBDaGVjayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgYnVpbGQgZW52aXJvbm1lbnQgaXMgc2FuZS4gICAgLSotIEF1dG9jb25mIC0qLQorCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMjAwMCwgMjAwMSwgMjAwMywgMjAwNQorIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIHNlcmlhbCA0CisKKyMgQU1fU0FOSVRZX0NIRUNLCisjIC0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0FNX1NBTklUWV9DSEVDS10sCitbQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGJ1aWxkIGVudmlyb25tZW50IGlzIHNhbmVdKQorIyBKdXN0IGluIGNhc2UKK3NsZWVwIDEKK2VjaG8gdGltZXN0YW1wID4gY29uZnRlc3QuZmlsZQorIyBEbyBgc2V0JyBpbiBhIHN1YnNoZWxsIHNvIHdlIGRvbid0IGNsb2JiZXIgdGhlIGN1cnJlbnQgc2hlbGwncworIyBhcmd1bWVudHMuICBNdXN0IHRyeSAtTCBmaXJzdCBpbiBjYXNlIGNvbmZpZ3VyZSBpcyBhY3R1YWxseSBhCisjIHN5bWxpbms7IHNvbWUgc3lzdGVtcyBwbGF5IHdlaXJkIGdhbWVzIHdpdGggdGhlIG1vZCB0aW1lIG9mIHN5bWxpbmtzCisjIChlZyBGcmVlQlNEIHJldHVybnMgdGhlIG1vZCB0aW1lIG9mIHRoZSBzeW1saW5rJ3MgY29udGFpbmluZworIyBkaXJlY3RvcnkpLgoraWYgKAorICAgc2V0IFggYGxzIC1MdCAkc3JjZGlyL2NvbmZpZ3VyZSBjb25mdGVzdC5maWxlIDI+IC9kZXYvbnVsbGAKKyAgIGlmIHRlc3QgIiRbKl0iID0gIlgiOyB0aGVuCisgICAgICAjIC1MIGRpZG4ndCB3b3JrLgorICAgICAgc2V0IFggYGxzIC10ICRzcmNkaXIvY29uZmlndXJlIGNvbmZ0ZXN0LmZpbGVgCisgICBmaQorICAgcm0gLWYgY29uZnRlc3QuZmlsZQorICAgaWYgdGVzdCAiJFsqXSIgIT0gIlggJHNyY2Rpci9jb25maWd1cmUgY29uZnRlc3QuZmlsZSIgXAorICAgICAgJiYgdGVzdCAiJFsqXSIgIT0gIlggY29uZnRlc3QuZmlsZSAkc3JjZGlyL2NvbmZpZ3VyZSI7IHRoZW4KKworICAgICAgIyBJZiBuZWl0aGVyIG1hdGNoZWQsIHRoZW4gd2UgaGF2ZSBhIGJyb2tlbiBscy4gIFRoaXMgY2FuIGhhcHBlbgorICAgICAgIyBpZiwgZm9yIGluc3RhbmNlLCBDT05GSUdfU0hFTEwgaXMgYmFzaCBhbmQgaXQgaW5oZXJpdHMgYQorICAgICAgIyBicm9rZW4gbHMgYWxpYXMgZnJvbSB0aGUgZW52aXJvbm1lbnQuICBUaGlzIGhhcyBhY3R1YWxseQorICAgICAgIyBoYXBwZW5lZC4gIFN1Y2ggYSBzeXN0ZW0gY291bGQgbm90IGJlIGNvbnNpZGVyZWQgInNhbmUiLgorICAgICAgQUNfTVNHX0VSUk9SKFtscyAtdCBhcHBlYXJzIHRvIGZhaWwuICBNYWtlIHN1cmUgdGhlcmUgaXMgbm90IGEgYnJva2VuCithbGlhcyBpbiB5b3VyIGVudmlyb25tZW50XSkKKyAgIGZpCisKKyAgIHRlc3QgIiRbMl0iID0gY29uZnRlc3QuZmlsZQorICAgKQordGhlbgorICAgIyBPay4KKyAgIDoKK2Vsc2UKKyAgIEFDX01TR19FUlJPUihbbmV3bHkgY3JlYXRlZCBmaWxlIGlzIG9sZGVyIHRoYW4gZGlzdHJpYnV0ZWQgZmlsZXMhCitDaGVjayB5b3VyIHN5c3RlbSBjbG9ja10pCitmaQorQUNfTVNHX1JFU1VMVCh5ZXMpXSkKKworIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMsIDIwMDUgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgQU1fUFJPR19JTlNUQUxMX1NUUklQCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBPbmUgaXNzdWUgd2l0aCB2ZW5kb3IgYGluc3RhbGwnIChldmVuIEdOVSkgaXMgdGhhdCB5b3UgY2FuJ3QKKyMgc3BlY2lmeSB0aGUgcHJvZ3JhbSB1c2VkIHRvIHN0cmlwIGJpbmFyaWVzLiAgVGhpcyBpcyBlc3BlY2lhbGx5CisjIGFubm95aW5nIGluIGNyb3NzLWNvbXBpbGluZyBlbnZpcm9ubWVudHMsIHdoZXJlIHRoZSBidWlsZCdzIHN0cmlwCisjIGlzIHVubGlrZWx5IHRvIGhhbmRsZSB0aGUgaG9zdCdzIGJpbmFyaWVzLgorIyBGb3J0dW5hdGVseSBpbnN0YWxsLXNoIHdpbGwgaG9ub3IgYSBTVFJJUFBST0cgdmFyaWFibGUsIHNvIHdlCisjIGFsd2F5cyB1c2UgaW5zdGFsbC1zaCBpbiBgbWFrZSBpbnN0YWxsLXN0cmlwJywgYW5kIGluaXRpYWxpemUKKyMgU1RSSVBQUk9HIHdpdGggdGhlIHZhbHVlIG9mIHRoZSBTVFJJUCB2YXJpYWJsZSAoc2V0IGJ5IHRoZSB1c2VyKS4KK0FDX0RFRlVOKFtBTV9QUk9HX0lOU1RBTExfU1RSSVBdLAorW0FDX1JFUVVJUkUoW0FNX1BST0dfSU5TVEFMTF9TSF0pZG5sCisjIEluc3RhbGxlZCBiaW5hcmllcyBhcmUgdXN1YWxseSBzdHJpcHBlZCB1c2luZyBgc3RyaXAnIHdoZW4gdGhlIHVzZXIKKyMgcnVuIGBtYWtlIGluc3RhbGwtc3RyaXAnLiAgSG93ZXZlciBgc3RyaXAnIG1pZ2h0IG5vdCBiZSB0aGUgcmlnaHQKKyMgdG9vbCB0byB1c2UgaW4gY3Jvc3MtY29tcGlsYXRpb24gZW52aXJvbm1lbnRzLCB0aGVyZWZvcmUgQXV0b21ha2UKKyMgd2lsbCBob25vciB0aGUgYFNUUklQJyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBvdmVycnVsZSB0aGlzIHByb2dyYW0uCitkbmwgRG9uJ3QgdGVzdCBmb3IgJGNyb3NzX2NvbXBpbGluZyA9IHllcywgYmVjYXVzZSBpdCBtaWdodCBiZSBgbWF5YmUnLgoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgIT0gbm87IHRoZW4KKyAgQUNfQ0hFQ0tfVE9PTChbU1RSSVBdLCBbc3RyaXBdLCA6KQorZmkKK0lOU1RBTExfU1RSSVBfUFJPR1JBTT0iXCR7U0hFTEx9IFwkKGluc3RhbGxfc2gpIC1jIC1zIgorQUNfU1VCU1QoW0lOU1RBTExfU1RSSVBfUFJPR1JBTV0pXSkKKworIyBDaGVjayBob3cgdG8gY3JlYXRlIGEgdGFyYmFsbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQorCisjIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBzZXJpYWwgMgorCisjIF9BTV9QUk9HX1RBUihGT1JNQVQpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENoZWNrIGhvdyB0byBjcmVhdGUgYSB0YXJiYWxsIGluIGZvcm1hdCBGT1JNQVQuCisjIEZPUk1BVCBzaG91bGQgYmUgb25lIG9mIGB2NycsIGB1c3RhcicsIG9yIGBwYXgnLgorIworIyBTdWJzdGl0dXRlIGEgdmFyaWFibGUgJChhbV9fdGFyKSB0aGF0IGlzIGEgY29tbWFuZAorIyB3cml0aW5nIHRvIHN0ZG91dCBhIEZPUk1BVC10YXJiYWxsIGNvbnRhaW5pbmcgdGhlIGRpcmVjdG9yeQorIyAkdGFyZGlyLgorIyAgICAgdGFyZGlyPWRpcmVjdG9yeSAmJiAkKGFtX190YXIpID4gcmVzdWx0LnRhcgorIworIyBTdWJzdGl0dXRlIGEgdmFyaWFibGUgJChhbV9fdW50YXIpIHRoYXQgZXh0cmFjdCBzdWNoCisjIGEgdGFyYmFsbCByZWFkIGZyb20gc3RkaW4uCisjICAgICAkKGFtX191bnRhcikgPCByZXN1bHQudGFyCitBQ19ERUZVTihbX0FNX1BST0dfVEFSXSwKK1sjIEFsd2F5cyBkZWZpbmUgQU1UQVIgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCitBTV9NSVNTSU5HX1BST0coW0FNVEFSXSwgW3Rhcl0pCittNF9pZihbJDFdLCBbdjddLAorICAgICBbYW1fX3Rhcj0nJHtBTVRBUn0gY2hvZiAtICIkJHRhcmRpciInOyBhbV9fdW50YXI9JyR7QU1UQVJ9IHhmIC0nXSwKKyAgICAgW200X2Nhc2UoWyQxXSwgW3VzdGFyXSwsIFtwYXhdLCwKKyAgICAgICAgICAgICAgW200X2ZhdGFsKFtVbmtub3duIHRhciBmb3JtYXRdKV0pCitBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBjcmVhdGUgYSAkMSB0YXIgYXJjaGl2ZV0pCisjIExvb3Agb3ZlciBhbGwga25vd24gbWV0aG9kcyB0byBjcmVhdGUgYSB0YXIgYXJjaGl2ZSB1bnRpbCBvbmUgd29ya3MuCitfYW1fdG9vbHM9J2dudXRhciBtNF9pZihbJDFdLCBbdXN0YXJdLCBbcGxhaW50YXJdKSBwYXggY3BpbyBub25lJworX2FtX3Rvb2xzPSR7YW1fY3ZfcHJvZ190YXJfJDEtJF9hbV90b29sc30KKyMgRG8gbm90IGZvbGQgdGhlIGFib3ZlIHR3byBsaW5lIGludG8gb25lLCBiZWNhdXNlIFRydTY0IHNoIGFuZAorIyBTb2xhcmlzIHNoIHdpbGwgbm90IGdyb2sgc3BhY2VzIGluIHRoZSByaHMgb2YgYC0nLgorZm9yIF9hbV90b29sIGluICRfYW1fdG9vbHMKK2RvCisgIGNhc2UgJF9hbV90b29sIGluCisgIGdudXRhcikKKyAgICBmb3IgX2FtX3RhciBpbiB0YXIgZ251dGFyIGd0YXI7CisgICAgZG8KKyAgICAgIEFNX1JVTl9MT0coWyRfYW1fdGFyIC0tdmVyc2lvbl0pICYmIGJyZWFrCisgICAgZG9uZQorICAgIGFtX190YXI9IiRfYW1fdGFyIC0tZm9ybWF0PW00X2lmKFskMV0sIFtwYXhdLCBbcG9zaXhdLCBbJDFdKSAtY2hmIC0gIiciJCR0YXJkaXIiJworICAgIGFtX190YXJfPSIkX2FtX3RhciAtLWZvcm1hdD1tNF9pZihbJDFdLCBbcGF4XSwgW3Bvc2l4XSwgWyQxXSkgLWNoZiAtICInIiR0YXJkaXIiJworICAgIGFtX191bnRhcj0iJF9hbV90YXIgLXhmIC0iCisgICAgOzsKKyAgcGxhaW50YXIpCisgICAgIyBNdXN0IHNraXAgR05VIHRhcjogaWYgaXQgZG9lcyBub3Qgc3VwcG9ydCAtLWZvcm1hdD0gaXQgZG9lc24ndCBjcmVhdGUKKyAgICAjIHVzdGFyIHRhcmJhbGwgZWl0aGVyLgorICAgICh0YXIgLS12ZXJzaW9uKSA+L2Rldi9udWxsIDI+JjEgJiYgY29udGludWUKKyAgICBhbV9fdGFyPSd0YXIgY2hmIC0gIiQkdGFyZGlyIicKKyAgICBhbV9fdGFyXz0ndGFyIGNoZiAtICIkdGFyZGlyIicKKyAgICBhbV9fdW50YXI9J3RhciB4ZiAtJworICAgIDs7CisgIHBheCkKKyAgICBhbV9fdGFyPSdwYXggLUwgLXggJDEgLXcgIiQkdGFyZGlyIicKKyAgICBhbV9fdGFyXz0ncGF4IC1MIC14ICQxIC13ICIkdGFyZGlyIicKKyAgICBhbV9fdW50YXI9J3BheCAtcicKKyAgICA7OworICBjcGlvKQorICAgIGFtX190YXI9J2ZpbmQgIiQkdGFyZGlyIiAtcHJpbnQgfCBjcGlvIC1vIC1IICQxIC1MJworICAgIGFtX190YXJfPSdmaW5kICIkdGFyZGlyIiAtcHJpbnQgfCBjcGlvIC1vIC1IICQxIC1MJworICAgIGFtX191bnRhcj0nY3BpbyAtaSAtSCAkMSAtZCcKKyAgICA7OworICBub25lKQorICAgIGFtX190YXI9ZmFsc2UKKyAgICBhbV9fdGFyXz1mYWxzZQorICAgIGFtX191bnRhcj1mYWxzZQorICAgIDs7CisgIGVzYWMKKworICAjIElmIHRoZSB2YWx1ZSB3YXMgY2FjaGVkLCBzdG9wIG5vdy4gIFdlIGp1c3Qgd2FudGVkIHRvIGhhdmUgYW1fX3RhcgorICAjIGFuZCBhbV9fdW50YXIgc2V0LgorICB0ZXN0IC1uICIke2FtX2N2X3Byb2dfdGFyXyQxfSIgJiYgYnJlYWsKKworICAjIHRhci91bnRhciBhIGR1bW15IGRpcmVjdG9yeSwgYW5kIHN0b3AgaWYgdGhlIGNvbW1hbmQgd29ya3MKKyAgcm0gLXJmIGNvbmZ0ZXN0LmRpcgorICBta2RpciBjb25mdGVzdC5kaXIKKyAgZWNobyBHcmVwTWUgPiBjb25mdGVzdC5kaXIvZmlsZQorICBBTV9SVU5fTE9HKFt0YXJkaXI9Y29uZnRlc3QuZGlyICYmIGV2YWwgJGFtX190YXJfID5jb25mdGVzdC50YXJdKQorICBybSAtcmYgY29uZnRlc3QuZGlyCisgIGlmIHRlc3QgLXMgY29uZnRlc3QudGFyOyB0aGVuCisgICAgQU1fUlVOX0xPRyhbJGFtX191bnRhciA8Y29uZnRlc3QudGFyXSkKKyAgICBncmVwIEdyZXBNZSBjb25mdGVzdC5kaXIvZmlsZSA+L2Rldi9udWxsIDI+JjEgJiYgYnJlYWsKKyAgZmkKK2RvbmUKK3JtIC1yZiBjb25mdGVzdC5kaXIKKworQUNfQ0FDSEVfVkFMKFthbV9jdl9wcm9nX3Rhcl8kMV0sIFthbV9jdl9wcm9nX3Rhcl8kMT0kX2FtX3Rvb2xdKQorQUNfTVNHX1JFU1VMVChbJGFtX2N2X3Byb2dfdGFyXyQxXSldKQorQUNfU1VCU1QoW2FtX190YXJdKQorQUNfU1VCU1QoW2FtX191bnRhcl0pCitdKSAjIF9BTV9QUk9HX1RBUgorCittNF9pbmNsdWRlKFttNC9hY3hfcHRocmVhZC5tNF0pCmRpZmYgLS1naXQgYS9jL2Jpbi9NYWtlZmlsZS5hbSBiL2MvYmluL01ha2VmaWxlLmFtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkM2RjYmIKLS0tIC9kZXYvbnVsbAorKysgYi9jL2Jpbi9NYWtlZmlsZS5hbQpAQCAtMCwwICsxLDExMCBAQAorIworIyBDb3B5cmlnaHQgMjAwNiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisjCisjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorIworIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIworIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisjIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIworCisjIFRoaXMgbWFrZWZpbGUgYnVpbGRzIHRoZSBzYW1wbGVzIGFuZCB0b29scworCitub2luc3RfUFJPR1JBTVMgPSAke3NhbXBsZXN9CitiaW5fUFJPR1JBTVMgPSAke3Rvb2xzfQorCitMREFERCA9IC4uL2xpYi9saWJ4bWwtc2VjdXJpdHktYy5sYQorCitBTV9DUFBGTEFHUyA9IC1JJHt0b3Bfc3JjZGlyfS9pbmNsdWRlCisKKyMKKyMgVGhlIGZvbGxvd2luZyBhcmUgc2FtcGxlIHByb2dyYW1zLiAgVGhleSBhcmUgTk9UIGluc3RhbGxlZAorIworCitzYW1wbGVzID0KKworIyBITUFDIHNpZ24KKworc2FtcGxlcyArPSBzaW1wbGVITUFDCitzaW1wbGVITUFDX1NPVVJDRVMgPSBcCisgIC4uL3NyYy9zYW1wbGVzL3NpbXBsZUhNQUMuY3BwIFwKKyAgLi4vc3JjL3NhbXBsZXMvSU9TdHJlYW1PdXRwdXR0ZXIuY3BwIFwKKyAgLi4vc3JjL3NhbXBsZXMvSU9TdHJlYW1PdXRwdXR0ZXIuaHBwCisKKyMgSE1BQyB2YWxpZGF0ZQorCitzYW1wbGVzICs9IHNpbXBsZVZhbGlkYXRlCitzaW1wbGVWYWxpZGF0ZV9TT1VSQ0VTID0gXAorICAuLi9zcmMvc2FtcGxlcy9zaW1wbGVWYWxpZGF0ZS5jcHAgXAorICAuLi9zcmMvc2FtcGxlcy9JT1N0cmVhbU91dHB1dHRlci5jcHAgXAorICAuLi9zcmMvc2FtcGxlcy9JT1N0cmVhbU91dHB1dHRlci5ocHAKKworIyBFbmNyeXB0CisKK3NhbXBsZXMgKz0gc2ltcGxlRW5jcnlwdAorc2ltcGxlRW5jcnlwdF9TT1VSQ0VTID0gXAorICAuLi9zcmMvc2FtcGxlcy9zaW1wbGVFbmNyeXB0LmNwcCBcCisgIC4uL3NyYy9zYW1wbGVzL0lPU3RyZWFtT3V0cHV0dGVyLmNwcCBcCisgIC4uL3NyYy9zYW1wbGVzL0lPU3RyZWFtT3V0cHV0dGVyLmhwcAorCisjIERlY3J5cHQKKworc2FtcGxlcyArPSBzaW1wbGVEZWNyeXB0CitzaW1wbGVEZWNyeXB0X1NPVVJDRVMgPSBcCisgIC4uL3NyYy9zYW1wbGVzL3NpbXBsZURlY3J5cHQuY3BwIFwKKyAgLi4vc3JjL3NhbXBsZXMvSU9TdHJlYW1PdXRwdXR0ZXIuY3BwIFwKKyAgLi4vc3JjL3NhbXBsZXMvSU9TdHJlYW1PdXRwdXR0ZXIuaHBwCisKKyMKKyMgRmluYWxseSB3ZSBjb21waWxlIHRoZSB0b29scyB0aGF0IGNhbiBiZSB1c2VkIHRvIG1hbmlwdWxhdGUKKyMgWE1MIFNlY3VyaXR5IGlucHV0cyBhbmQgb3V0cHV0cworIworCit0b29scyA9CisKKyMgeHRlc3QKKwordG9vbHMgKz0geHRlc3QKK3h0ZXN0X1NPVVJDRVMgPSBcCisgIC4uL3NyYy90b29scy94dGVzdC94dGVzdC5jcHAKKwordG9vbHMgKz0gYzE0bgorYzE0bl9TT1VSQ0VTID0gXAorICAuLi9zcmMvdG9vbHMvYzE0bi9jMTRuLmNwcAorCit0b29scyArPSBjaGVja3NpZworY2hlY2tzaWdfU09VUkNFUyA9IFwKKyAgLi4vc3JjL3Rvb2xzL2NoZWNrc2lnL2NoZWNrc2lnLmNwcCBcCisgIC4uL3NyYy90b29scy9jaGVja3NpZy9Bbm9ueW1vdXNSZXNvbHZlci5ocHAgXAorICAuLi9zcmMvdG9vbHMvY2hlY2tzaWcvQW5vbnltb3VzUmVzb2x2ZXIuY3BwIFwKKyAgLi4vc3JjL3Rvb2xzL2NoZWNrc2lnL0ludGVyb3BSZXNvbHZlci5ocHAgXAorICAuLi9zcmMvdG9vbHMvY2hlY2tzaWcvSW50ZXJvcFJlc29sdmVyLmNwcAorCit0b29scyArPSB0ZW1wbGF0ZXNpZ24KK3RlbXBsYXRlc2lnbl9TT1VSQ0VTID0gXAorICAuLi9zcmMvdG9vbHMvdGVtcGxhdGVzaWduL3RlbXBsYXRlc2lnbi5jcHAKKwordG9vbHMgKz0gdHhmbW91dAordHhmbW91dF9TT1VSQ0VTID0gXAorICAuLi9zcmMvdG9vbHMvdHhmbW91dC90eGZtb3V0LmNwcAorCit0b29scyArPSBzaWdpbmYKK3NpZ2luZl9TT1VSQ0VTID0gXAorICAuLi9zcmMvdG9vbHMvc2lnaW5mL3NpZ2luZi5jcHAKKwordG9vbHMgKz0gY2lwaGVyCitjaXBoZXJfU09VUkNFUyA9IFwKKyAgLi4vc3JjL3Rvb2xzL2NpcGhlci9jaXBoZXIuY3BwIFwKKyAgLi4vc3JjL3Rvb2xzL2NpcGhlci9YZW5jSW50ZXJvcFJlc29sdmVyLmhwcCBcCisgIC4uL3NyYy90b29scy9jaXBoZXIvWGVuY0ludGVyb3BSZXNvbHZlci5jcHAKKwordG9vbHMgKz0geGtsaWVudAoreGtsaWVudF9TT1VSQ0VTID0gXAorICAuLi9zcmMvdG9vbHMveGtsaWVudC94a2xpZW50LmNwcAorCmRpZmYgLS1naXQgYS9jL2NvbmZpZy9jb25maWcuZ3Vlc3MgYi9jL2NvbmZpZy9jb25maWcuZ3Vlc3MKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDViZWUxMwotLS0gL2Rldi9udWxsCisrKyBiL2MvY29uZmlnL2NvbmZpZy5ndWVzcwpAQCAtMCwwICsxLDE0NjUgQEAKKyMhIC9iaW4vc2gKKyMgQXR0ZW1wdCB0byBndWVzcyBhIGNhbm9uaWNhbCBzeXN0ZW0gbmFtZS4KKyMgICBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksCisjICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKwordGltZXN0YW1wPScyMDA1LTA0LTIyJworCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyMgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisjCisjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKKyMgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCisjIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgeW91IG1heSBpbmNsdWRlIGl0IHVuZGVyCisjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KKworIyBPcmlnaW5hbGx5IHdyaXR0ZW4gYnkgUGVyIEJvdGhuZXIgPHBlckBib3RobmVyLmNvbT4uCisjIFBsZWFzZSBzZW5kIHBhdGNoZXMgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+LiAgU3VibWl0IGEgY29udGV4dAorIyBkaWZmIGFuZCBhIHByb3Blcmx5IGZvcm1hdHRlZCBDaGFuZ2VMb2cgZW50cnkuCisjCisjIFRoaXMgc2NyaXB0IGF0dGVtcHRzIHRvIGd1ZXNzIGEgY2Fub25pY2FsIHN5c3RlbSBuYW1lIHNpbWlsYXIgdG8KKyMgY29uZmlnLnN1Yi4gIElmIGl0IHN1Y2NlZWRzLCBpdCBwcmludHMgdGhlIHN5c3RlbSBuYW1lIG9uIHN0ZG91dCwgYW5kCisjIGV4aXRzIHdpdGggMC4gIE90aGVyd2lzZSwgaXQgZXhpdHMgd2l0aCAxLgorIworIyBUaGUgcGxhbiBpcyB0aGF0IHRoaXMgY2FuIGJlIGNhbGxlZCBieSBjb25maWd1cmUgc2NyaXB0cyBpZiB5b3UKKyMgZG9uJ3Qgc3BlY2lmeSBhbiBleHBsaWNpdCBidWlsZCBzeXN0ZW0gdHlwZS4KKworbWU9YGVjaG8gIiQwIiB8IHNlZCAtZSAncywuKi8sLCdgCisKK3VzYWdlPSJcCitVc2FnZTogJDAgW09QVElPTl0KKworT3V0cHV0IHRoZSBjb25maWd1cmF0aW9uIG5hbWUgb2YgdGhlIHN5c3RlbSBcYCRtZScgaXMgcnVuIG9uLgorCitPcGVyYXRpb24gbW9kZXM6CisgIC1oLCAtLWhlbHAgICAgICAgICBwcmludCB0aGlzIGhlbHAsIHRoZW4gZXhpdAorICAtdCwgLS10aW1lLXN0YW1wICAgcHJpbnQgZGF0ZSBvZiBsYXN0IG1vZGlmaWNhdGlvbiwgdGhlbiBleGl0CisgIC12LCAtLXZlcnNpb24gICAgICBwcmludCB2ZXJzaW9uIG51bWJlciwgdGhlbiBleGl0CisKK1JlcG9ydCBidWdzIGFuZCBwYXRjaGVzIHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPi4iCisKK3ZlcnNpb249IlwKK0dOVSBjb25maWcuZ3Vlc3MgKCR0aW1lc3RhbXApCisKK09yaWdpbmFsbHkgd3JpdHRlbiBieSBQZXIgQm90aG5lci4KK0NvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNQorRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK1RoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCit3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4iCisKK2hlbHA9IgorVHJ5IFxgJG1lIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgorCisjIFBhcnNlIGNvbW1hbmQgbGluZQord2hpbGUgdGVzdCAkIyAtZ3QgMCA7IGRvCisgIGNhc2UgJDEgaW4KKyAgICAtLXRpbWUtc3RhbXAgfCAtLXRpbWUqIHwgLXQgKQorICAgICAgIGVjaG8gIiR0aW1lc3RhbXAiIDsgZXhpdCAwIDs7CisgICAgLS12ZXJzaW9uIHwgLXYgKQorICAgICAgIGVjaG8gIiR2ZXJzaW9uIiA7IGV4aXQgMCA7OworICAgIC0taGVscCB8IC0taCogfCAtaCApCisgICAgICAgZWNobyAiJHVzYWdlIjsgZXhpdCAwIDs7CisgICAgLS0gKSAgICAgIyBTdG9wIG9wdGlvbiBwcm9jZXNzaW5nCisgICAgICAgc2hpZnQ7IGJyZWFrIDs7CisgICAgLSApCSMgVXNlIHN0ZGluIGFzIGlucHV0LgorICAgICAgIGJyZWFrIDs7CisgICAgLSogKQorICAgICAgIGVjaG8gIiRtZTogaW52YWxpZCBvcHRpb24gJDEkaGVscCIgPiYyCisgICAgICAgZXhpdCAxIDs7CisgICAgKiApCisgICAgICAgYnJlYWsgOzsKKyAgZXNhYworZG9uZQorCitpZiB0ZXN0ICQjICE9IDA7IHRoZW4KKyAgZWNobyAiJG1lOiB0b28gbWFueSBhcmd1bWVudHMkaGVscCIgPiYyCisgIGV4aXQgMQorZmkKKwordHJhcCAnZXhpdCAxJyAxIDIgMTUKKworIyBDQ19GT1JfQlVJTEQgLS0gY29tcGlsZXIgdXNlZCBieSB0aGlzIHNjcmlwdC4gTm90ZSB0aGF0IHRoZSB1c2Ugb2YgYQorIyBjb21waWxlciB0byBhaWQgaW4gc3lzdGVtIGRldGVjdGlvbiBpcyBkaXNjb3VyYWdlZCBhcyBpdCByZXF1aXJlcworIyB0ZW1wb3JhcnkgZmlsZXMgdG8gYmUgY3JlYXRlZCBhbmQsIGFzIHlvdSBjYW4gc2VlIGJlbG93LCBpdCBpcyBhCisjIGhlYWRhY2hlIHRvIGRlYWwgd2l0aCBpbiBhIHBvcnRhYmxlIGZhc2hpb24uCisKKyMgSGlzdG9yaWNhbGx5LCBgQ0NfRk9SX0JVSUxEJyB1c2VkIHRvIGJlIG5hbWVkIGBIT1NUX0NDJy4gV2Ugc3RpbGwKKyMgdXNlIGBIT1NUX0NDJyBpZiBkZWZpbmVkLCBidXQgaXQgaXMgZGVwcmVjYXRlZC4KKworIyBQb3J0YWJsZSB0bXAgZGlyZWN0b3J5IGNyZWF0aW9uIGluc3BpcmVkIGJ5IHRoZSBBdXRvY29uZiB0ZWFtLgorCitzZXRfY2NfZm9yX2J1aWxkPScKK3RyYXAgImV4aXRjb2RlPVwkPzsgKHJtIC1mIFwkdG1wZmlsZXMgMj4vZGV2L251bGw7IHJtZGlyIFwkdG1wIDI+L2Rldi9udWxsKSAmJiBleGl0IFwkZXhpdGNvZGUiIDAgOwordHJhcCAicm0gLWYgXCR0bXBmaWxlcyAyPi9kZXYvbnVsbDsgcm1kaXIgXCR0bXAgMj4vZGV2L251bGw7IGV4aXQgMSIgMSAyIDEzIDE1IDsKKzogJHtUTVBESVI9L3RtcH0gOworIHsgdG1wPWAodW1hc2sgMDc3ICYmIG1rdGVtcCAtZCAtcSAiJFRNUERJUi9jZ1hYWFhYWCIpIDI+L2Rldi9udWxsYCAmJiB0ZXN0IC1uICIkdG1wIiAmJiB0ZXN0IC1kICIkdG1wIiA7IH0gfHwKKyB7IHRlc3QgLW4gIiRSQU5ET00iICYmIHRtcD0kVE1QRElSL2NnJCQtJFJBTkRPTSAmJiAodW1hc2sgMDc3ICYmIG1rZGlyICR0bXApIDsgfSB8fAorIHsgdG1wPSRUTVBESVIvY2ctJCQgJiYgKHVtYXNrIDA3NyAmJiBta2RpciAkdG1wKSAmJiBlY2hvICJXYXJuaW5nOiBjcmVhdGluZyBpbnNlY3VyZSB0ZW1wIGRpcmVjdG9yeSIgPiYyIDsgfSB8fAorIHsgZWNobyAiJG1lOiBjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBpbiAkVE1QRElSIiA+JjIgOyBleGl0IDEgOyB9IDsKK2R1bW15PSR0bXAvZHVtbXkgOwordG1wZmlsZXM9IiRkdW1teS5jICRkdW1teS5vICRkdW1teS5yZWwgJGR1bW15IiA7CitjYXNlICRDQ19GT1JfQlVJTEQsJEhPU1RfQ0MsJENDIGluCisgLCwpICAgIGVjaG8gImludCB4OyIgPiAkZHVtbXkuYyA7CisJZm9yIGMgaW4gY2MgZ2NjIGM4OSBjOTkgOyBkbworCSAgaWYgKCRjIC1jIC1vICRkdW1teS5vICRkdW1teS5jKSA+L2Rldi9udWxsIDI+JjEgOyB0aGVuCisJICAgICBDQ19GT1JfQlVJTEQ9IiRjIjsgYnJlYWsgOworCSAgZmkgOworCWRvbmUgOworCWlmIHRlc3QgeCIkQ0NfRk9SX0JVSUxEIiA9IHggOyB0aGVuCisJICBDQ19GT1JfQlVJTEQ9bm9fY29tcGlsZXJfZm91bmQgOworCWZpCisJOzsKKyAsLCopICAgQ0NfRk9SX0JVSUxEPSRDQyA7OworICwqLCopICBDQ19GT1JfQlVJTEQ9JEhPU1RfQ0MgOzsKK2VzYWMgOycKKworIyBUaGlzIGlzIG5lZWRlZCB0byBmaW5kIHVuYW1lIG9uIGEgUHlyYW1pZCBPU3ggd2hlbiBydW4gaW4gdGhlIEJTRCB1bml2ZXJzZS4KKyMgKGdoYXppQG5vYy5ydXRnZXJzLmVkdSAxOTk0LTA4LTI0KQoraWYgKHRlc3QgLWYgLy5hdHRiaW4vdW5hbWUpID4vZGV2L251bGwgMj4mMSA7IHRoZW4KKwlQQVRIPSRQQVRIOi8uYXR0YmluIDsgZXhwb3J0IFBBVEgKK2ZpCisKK1VOQU1FX01BQ0hJTkU9YCh1bmFtZSAtbSkgMj4vZGV2L251bGxgIHx8IFVOQU1FX01BQ0hJTkU9dW5rbm93bgorVU5BTUVfUkVMRUFTRT1gKHVuYW1lIC1yKSAyPi9kZXYvbnVsbGAgfHwgVU5BTUVfUkVMRUFTRT11bmtub3duCitVTkFNRV9TWVNURU09YCh1bmFtZSAtcykgMj4vZGV2L251bGxgICB8fCBVTkFNRV9TWVNURU09dW5rbm93bgorVU5BTUVfVkVSU0lPTj1gKHVuYW1lIC12KSAyPi9kZXYvbnVsbGAgfHwgVU5BTUVfVkVSU0lPTj11bmtub3duCisKKyMgTm90ZTogb3JkZXIgaXMgc2lnbmlmaWNhbnQgLSB0aGUgY2FzZSBicmFuY2hlcyBhcmUgbm90IGV4Y2x1c2l2ZS4KKworY2FzZSAiJHtVTkFNRV9NQUNISU5FfToke1VOQU1FX1NZU1RFTX06JHtVTkFNRV9SRUxFQVNFfToke1VOQU1FX1ZFUlNJT059IiBpbgorICAgICo6TmV0QlNEOio6KikKKwkjIE5ldEJTRCAobmJzZCkgdGFyZ2V0cyBzaG91bGQgKHdoZXJlIGFwcGxpY2FibGUpIG1hdGNoIG9uZSBvcgorCSMgbW9yZSBvZiB0aGUgdHVwcGxlczogKi0qLW5ldGJzZGVsZiosICotKi1uZXRic2Rhb3V0KiwKKwkjICotKi1uZXRic2RlY29mZiogYW5kICotKi1uZXRic2QqLiAgRm9yIHRhcmdldHMgdGhhdCByZWNlbnRseQorCSMgc3dpdGNoZWQgdG8gRUxGLCAqLSotbmV0YnNkKiB3b3VsZCBzZWxlY3QgdGhlIG9sZAorCSMgb2JqZWN0IGZpbGUgZm9ybWF0LiAgVGhpcyBwcm92aWRlcyBib3RoIGZvcndhcmQKKwkjIGNvbXBhdGliaWxpdHkgYW5kIGEgY29uc2lzdGVudCBtZWNoYW5pc20gZm9yIHNlbGVjdGluZyB0aGUKKwkjIG9iamVjdCBmaWxlIGZvcm1hdC4KKwkjCisJIyBOb3RlOiBOZXRCU0QgZG9lc24ndCBwYXJ0aWN1bGFybHkgY2FyZSBhYm91dCB0aGUgdmVuZG9yCisJIyBwb3J0aW9uIG9mIHRoZSBuYW1lLiAgV2UgYWx3YXlzIHNldCBpdCB0byAidW5rbm93biIuCisJc3lzY3RsPSJzeXNjdGwgLW4gaHcubWFjaGluZV9hcmNoIgorCVVOQU1FX01BQ0hJTkVfQVJDSD1gKC9zYmluLyRzeXNjdGwgMj4vZGV2L251bGwgfHwgXAorCSAgICAvdXNyL3NiaW4vJHN5c2N0bCAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd24pYAorCWNhc2UgIiR7VU5BTUVfTUFDSElORV9BUkNIfSIgaW4KKwkgICAgYXJtZWIpIG1hY2hpbmU9YXJtZWItdW5rbm93biA7OworCSAgICBhcm0qKSBtYWNoaW5lPWFybS11bmtub3duIDs7CisJICAgIHNoM2VsKSBtYWNoaW5lPXNobC11bmtub3duIDs7CisJICAgIHNoM2ViKSBtYWNoaW5lPXNoLXVua25vd24gOzsKKwkgICAgKikgbWFjaGluZT0ke1VOQU1FX01BQ0hJTkVfQVJDSH0tdW5rbm93biA7OworCWVzYWMKKwkjIFRoZSBPcGVyYXRpbmcgU3lzdGVtIGluY2x1ZGluZyBvYmplY3QgZm9ybWF0LCBpZiBpdCBoYXMgc3dpdGNoZWQKKwkjIHRvIEVMRiByZWNlbnRseSwgb3Igd2lsbCBpbiB0aGUgZnV0dXJlLgorCWNhc2UgIiR7VU5BTUVfTUFDSElORV9BUkNIfSIgaW4KKwkgICAgYXJtKnxpMzg2fG02OGt8bnMzMmt8c2gzKnxzcGFyY3x2YXgpCisJCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwkJaWYgZWNobyBfX0VMRl9fIHwgJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsIFwKKwkJCXwgZ3JlcCBfX0VMRl9fID4vZGV2L251bGwKKwkJdGhlbgorCQkgICAgIyBPbmNlIGFsbCB1dGlsaXRpZXMgY2FuIGJlIEVDT0ZGIChuZXRic2RlY29mZikgb3IgYS5vdXQgKG5ldGJzZGFvdXQpLgorCQkgICAgIyBSZXR1cm4gbmV0YnNkIGZvciBlaXRoZXIuICBGSVg/CisJCSAgICBvcz1uZXRic2QKKwkJZWxzZQorCQkgICAgb3M9bmV0YnNkZWxmCisJCWZpCisJCTs7CisJICAgICopCisJICAgICAgICBvcz1uZXRic2QKKwkJOzsKKwllc2FjCisJIyBUaGUgT1MgcmVsZWFzZQorCSMgRGViaWFuIEdOVS9OZXRCU0QgbWFjaGluZXMgaGF2ZSBhIGRpZmZlcmVudCB1c2VybGFuZCwgYW5kCisJIyB0aHVzLCBuZWVkIGEgZGlzdGluY3QgdHJpcGxldC4gSG93ZXZlciwgdGhleSBkbyBub3QgbmVlZAorCSMga2VybmVsIHZlcnNpb24gaW5mb3JtYXRpb24sIHNvIGl0IGNhbiBiZSByZXBsYWNlZCB3aXRoIGEKKwkjIHN1aXRhYmxlIHRhZywgaW4gdGhlIHN0eWxlIG9mIGxpbnV4LWdudS4KKwljYXNlICIke1VOQU1FX1ZFUlNJT059IiBpbgorCSAgICBEZWJpYW4qKQorCQlyZWxlYXNlPSctZ251JworCQk7OworCSAgICAqKQorCQlyZWxlYXNlPWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stX10uKi9cLi8nYAorCQk7OworCWVzYWMKKwkjIFNpbmNlIENQVV9UWVBFLU1BTlVGQUNUVVJFUi1LRVJORUwtT1BFUkFUSU5HX1NZU1RFTToKKwkjIGNvbnRhaW5zIHJlZHVuZGFudCBpbmZvcm1hdGlvbiwgdGhlIHNob3J0ZXIgZm9ybToKKwkjIENQVV9UWVBFLU1BTlVGQUNUVVJFUi1PUEVSQVRJTkdfU1lTVEVNIGlzIHVzZWQuCisJZWNobyAiJHttYWNoaW5lfS0ke29zfSR7cmVsZWFzZX0iCisJZXhpdCAwIDs7CisgICAgYW1kNjQ6T3BlbkJTRDoqOiopCisJZWNobyB4ODZfNjQtdW5rbm93bi1vcGVuYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgMCA7OworICAgIGFtaWdhOk9wZW5CU0Q6KjoqKQorCWVjaG8gbTY4ay11bmtub3duLW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9CisJZXhpdCAwIDs7CisgICAgY2F0czpPcGVuQlNEOio6KikKKwllY2hvIGFybS11bmtub3duLW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9CisJZXhpdCAwIDs7CisgICAgaHAzMDA6T3BlbkJTRDoqOiopCisJZWNobyBtNjhrLXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDAgOzsKKyAgICBsdW5hODhrOk9wZW5CU0Q6KjoqKQorICAgIAllY2hvIG04OGstdW5rbm93bi1vcGVuYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgMCA7OworICAgIG1hYzY4azpPcGVuQlNEOio6KikKKwllY2hvIG02OGstdW5rbm93bi1vcGVuYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgMCA7OworICAgIG1hY3BwYzpPcGVuQlNEOio6KikKKwllY2hvIHBvd2VycGMtdW5rbm93bi1vcGVuYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgMCA7OworICAgIG12bWU2OGs6T3BlbkJTRDoqOiopCisJZWNobyBtNjhrLXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDAgOzsKKyAgICBtdm1lODhrOk9wZW5CU0Q6KjoqKQorCWVjaG8gbTg4ay11bmtub3duLW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9CisJZXhpdCAwIDs7CisgICAgbXZtZXBwYzpPcGVuQlNEOio6KikKKwllY2hvIHBvd2VycGMtdW5rbm93bi1vcGVuYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgMCA7OworICAgIHNnaTpPcGVuQlNEOio6KikKKwllY2hvIG1pcHM2NC11bmtub3duLW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9CisJZXhpdCAwIDs7CisgICAgc3VuMzpPcGVuQlNEOio6KikKKwllY2hvIG02OGstdW5rbm93bi1vcGVuYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgMCA7OworICAgICo6T3BlbkJTRDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDAgOzsKKyAgICAqOmVra29CU0Q6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWVra29ic2Qke1VOQU1FX1JFTEVBU0V9CisJZXhpdCAwIDs7CisgICAgbWFjcHBjOk1pckJTRDoqOiopCisJZWNobyBwb3dlcnBwYy11bmtub3duLW1pcmJzZCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDAgOzsKKyAgICAqOk1pckJTRDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbWlyYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgMCA7OworICAgIGFscGhhOk9TRjE6KjoqKQorCWNhc2UgJFVOQU1FX1JFTEVBU0UgaW4KKwkqNC4wKQorCQlVTkFNRV9SRUxFQVNFPWAvdXNyL3NiaW4vc2l6ZXIgLXYgfCBhd2sgJ3twcmludCAkM30nYAorCQk7OworCSo1LiopCisJICAgICAgICBVTkFNRV9SRUxFQVNFPWAvdXNyL3NiaW4vc2l6ZXIgLXYgfCBhd2sgJ3twcmludCAkNH0nYAorCQk7OworCWVzYWMKKwkjIEFjY29yZGluZyB0byBDb21wYXEsIC91c3Ivc2Jpbi9wc3JpbmZvIGhhcyBiZWVuIGF2YWlsYWJsZSBvbgorCSMgT1NGLzEgYW5kIFRydTY0IHN5c3RlbXMgcHJvZHVjZWQgc2luY2UgMTk5NS4gIEkgaG9wZSB0aGF0CisJIyBjb3ZlcnMgbW9zdCBzeXN0ZW1zIHJ1bm5pbmcgdG9kYXkuICBUaGlzIGNvZGUgcGlwZXMgdGhlIENQVQorCSMgdHlwZXMgdGhyb3VnaCBoZWFkIC1uIDEsIHNvIHdlIG9ubHkgZGV0ZWN0IHRoZSB0eXBlIG9mIENQVSAwLgorCUFMUEhBX0NQVV9UWVBFPWAvdXNyL3NiaW4vcHNyaW5mbyAtdiB8IHNlZCAtbiAtZSAncy9eICBUaGUgYWxwaGEgXCguKlwpIHByb2Nlc3Nvci4qJC9cMS9wJyB8IGhlYWQgLW4gMWAKKwljYXNlICIkQUxQSEFfQ1BVX1RZUEUiIGluCisJICAgICJFVjQgKDIxMDY0KSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhIiA7OworCSAgICAiRVY0LjUgKDIxMDY0KSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhIiA7OworCSAgICAiTENBNCAoMjEwNjYvMjEwNjgpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGEiIDs7CisJICAgICJFVjUgKDIxMTY0KSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY1IiA7OworCSAgICAiRVY1LjYgKDIxMTY0QSkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NTYiIDs7CisJICAgICJFVjUuNiAoMjExNjRQQykiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYXBjYTU2IiA7OworCSAgICAiRVY1LjcgKDIxMTY0UEMpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFwY2E1NyIgOzsKKwkgICAgIkVWNiAoMjEyNjQpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjYiIDs7CisJICAgICJFVjYuNyAoMjEyNjRBKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY2NyIgOzsKKwkgICAgIkVWNi44Q0IgKDIxMjY0QykiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NjgiIDs7CisJICAgICJFVjYuOEFMICgyMTI2NEIpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjY4IiA7OworCSAgICAiRVY2LjhDWCAoMjEyNjREKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY2OCIgOzsKKwkgICAgIkVWNi45QSAoMjEyNjQvRVY2OUEpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjY5IiA7OworCSAgICAiRVY3ICgyMTM2NCkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NyIgOzsKKwkgICAgIkVWNy45ICgyMTM2NEEpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjc5IiA7OworCWVzYWMKKwkjIEEgUG4ubiB2ZXJzaW9uIGlzIGEgcGF0Y2hlZCB2ZXJzaW9uLgorCSMgQSBWbi5uIHZlcnNpb24gaXMgYSByZWxlYXNlZCB2ZXJzaW9uLgorCSMgQSBUbi5uIHZlcnNpb24gaXMgYSByZWxlYXNlZCBmaWVsZCB0ZXN0IHZlcnNpb24uCisJIyBBIFhuLm4gdmVyc2lvbiBpcyBhbiB1bnJlbGVhc2VkIGV4cGVyaW1lbnRhbCBiYXNlbGV2ZWwuCisJIyAxLjIgdXNlcyAiMS4yIiBmb3IgdW5hbWUgLXIuCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWRlYy1vc2ZgZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL15bUFZUWF0vLycgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eidgCisJZXhpdCAwIDs7CisgICAgQWxwaGFcICo6V2luZG93c19OVCo6KikKKwkjIEhvdyBkbyB3ZSBrbm93IGl0J3MgSW50ZXJpeCByYXRoZXIgdGhhbiB0aGUgZ2VuZXJpYyBQT1NJWCBzdWJzeXN0ZW0/CisJIyBTaG91bGQgd2UgY2hhbmdlIFVOQU1FX01BQ0hJTkUgYmFzZWQgb24gdGhlIG91dHB1dCBvZiB1bmFtZSBpbnN0ZWFkCisJIyBvZiB0aGUgc3BlY2lmaWMgQWxwaGEgbW9kZWw/CisJZWNobyBhbHBoYS1wYy1pbnRlcml4CisJZXhpdCAwIDs7CisgICAgMjEwNjQ6V2luZG93c19OVDo1MDozKQorCWVjaG8gYWxwaGEtZGVjLXdpbm50My41CisJZXhpdCAwIDs7CisgICAgQW1pZ2EqOlVOSVhfU3lzdGVtX1Y6NC4wOiopCisJZWNobyBtNjhrLXVua25vd24tc3lzdjQKKwlleGl0IDA7OworICAgICo6W0FhXW1pZ2FbT29dW1NzXToqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tYW1pZ2FvcworCWV4aXQgMCA7OworICAgICo6W01tXW9ycGhbT29dW1NzXToqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbW9ycGhvcworCWV4aXQgMCA7OworICAgICo6T1MvMzkwOio6KikKKwllY2hvIGkzNzAtaWJtLW9wZW5lZGl0aW9uCisJZXhpdCAwIDs7CisgICAgKjp6L1ZNOio6KikKKwllY2hvIHMzOTAtaWJtLXp2bW9lCisJZXhpdCAwIDs7CisgICAgKjpPUzQwMDoqOiopCisgICAgICAgIGVjaG8gcG93ZXJwYy1pYm0tb3M0MDAKKwlleGl0IDAgOzsKKyAgICBhcm06UklTQyo6MS5bMDEyXSo6Knxhcm06cmlzY2l4OjEuWzAxMl0qOiopCisJZWNobyBhcm0tYWNvcm4tcmlzY2l4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgMDs7CisgICAgU1IyPzAxOkhJLVVYL01QUDoqOiogfCBTUjgwMDA6SEktVVgvTVBQOio6KikKKwllY2hvIGhwcGExLjEtaGl0YWNoaS1oaXV4bXBwCisJZXhpdCAwOzsKKyAgICBQeXJhbWlkKjpPU3gqOio6KiB8IE1JUyo6T1N4KjoqOiogfCBNSVMqOlNNUF9EQy1PU3gqOio6KikKKwkjIGFrZWVAd3BkaXMwMy53cGFmYi5hZi5taWwgKEVhcmxlIEYuIEFrZSkgY29udHJpYnV0ZWQgTUlTIGFuZCBOSUxFLgorCWlmIHRlc3QgImAoL2Jpbi91bml2ZXJzZSkgMj4vZGV2L251bGxgIiA9IGF0dCA7IHRoZW4KKwkJZWNobyBweXJhbWlkLXB5cmFtaWQtc3lzdjMKKwllbHNlCisJCWVjaG8gcHlyYW1pZC1weXJhbWlkLWJzZAorCWZpCisJZXhpdCAwIDs7CisgICAgTklMRSo6KjoqOmRjb3N4KQorCWVjaG8gcHlyYW1pZC1weXJhbWlkLXN2cjQKKwlleGl0IDAgOzsKKyAgICBEUlM/NjAwMDp1bml4OjQuMDo2KikKKwllY2hvIHNwYXJjLWljbC1ueDYKKwlleGl0IDAgOzsKKyAgICBEUlM/NjAwMDpVTklYX1NWOjQuMio6NyogfCBEUlM/NjAwMDppc2lzOjQuMio6NyopCisJY2FzZSBgL3Vzci9iaW4vdW5hbWUgLXBgIGluCisJICAgIHNwYXJjKSBlY2hvIHNwYXJjLWljbC1ueDcgJiYgZXhpdCAwIDs7CisJZXNhYyA7OworICAgIHN1bjRIOlN1bk9TOjUuKjoqKQorCWVjaG8gc3BhcmMtaGFsLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCisJZXhpdCAwIDs7CisgICAgc3VuNCo6U3VuT1M6NS4qOiogfCB0YWRwb2xlKjpTdW5PUzo1Lio6KikKKwllY2hvIHNwYXJjLXN1bi1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgMCA7OworICAgIGk4NnBjOlN1bk9TOjUuKjoqKQorCWVjaG8gaTM4Ni1wYy1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgMCA7OworICAgIHN1bjQqOlN1bk9TOjYqOiopCisJIyBBY2NvcmRpbmcgdG8gY29uZmlnLnN1YiwgdGhpcyBpcyB0aGUgcHJvcGVyIHdheSB0byBjYW5vbmljYWxpemUKKwkjIFN1bk9TNi4gIEhhcmQgdG8gZ3Vlc3MgZXhhY3RseSB3aGF0IFN1bk9TNiB3aWxsIGJlIGxpa2UsIGJ1dAorCSMgaXQncyBsaWtlbHkgdG8gYmUgbW9yZSBsaWtlIFNvbGFyaXMgdGhhbiBTdW5PUzQuCisJZWNobyBzcGFyYy1zdW4tc29sYXJpczNgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKwlleGl0IDAgOzsKKyAgICBzdW40KjpTdW5PUzoqOiopCisJY2FzZSAiYC91c3IvYmluL2FyY2ggLWtgIiBpbgorCSAgICBTZXJpZXMqfFM0KikKKwkJVU5BTUVfUkVMRUFTRT1gdW5hbWUgLXZgCisJCTs7CisJZXNhYworCSMgSmFwYW5lc2UgTGFuZ3VhZ2UgdmVyc2lvbnMgaGF2ZSBhIHZlcnNpb24gbnVtYmVyIGxpa2UgYDQuMS4zLUpMJy4KKwllY2hvIHNwYXJjLXN1bi1zdW5vc2BlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzLy0vXy8nYAorCWV4aXQgMCA7OworICAgIHN1bjMqOlN1bk9TOio6KikKKwllY2hvIG02OGstc3VuLXN1bm9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgMCA7OworICAgIHN1bio6Kjo0LjJCU0Q6KikKKwlVTkFNRV9SRUxFQVNFPWAoc2VkIDFxIC9ldGMvbW90ZCB8IGF3ayAne3ByaW50IHN1YnN0cigkNSwxLDMpfScpIDI+L2Rldi9udWxsYAorCXRlc3QgIngke1VOQU1FX1JFTEVBU0V9IiA9ICJ4IiAmJiBVTkFNRV9SRUxFQVNFPTMKKwljYXNlICJgL2Jpbi9hcmNoYCIgaW4KKwkgICAgc3VuMykKKwkJZWNobyBtNjhrLXN1bi1zdW5vcyR7VU5BTUVfUkVMRUFTRX0KKwkJOzsKKwkgICAgc3VuNCkKKwkJZWNobyBzcGFyYy1zdW4tc3Vub3Mke1VOQU1FX1JFTEVBU0V9CisJCTs7CisJZXNhYworCWV4aXQgMCA7OworICAgIGF1c2hwOlN1bk9TOio6KikKKwllY2hvIHNwYXJjLWF1c3BleC1zdW5vcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDAgOzsKKyAgICAjIFRoZSBzaXR1YXRpb24gZm9yIE1pTlQgaXMgYSBsaXR0bGUgY29uZnVzaW5nLiAgVGhlIG1hY2hpbmUgbmFtZQorICAgICMgY2FuIGJlIHZpcnR1YWxseSBldmVyeXRoaW5nIChldmVyeXRoaW5nIHdoaWNoIGlzIG5vdAorICAgICMgImF0YXJpc3QiIG9yICJhdGFyaXN0ZSIgYXQgbGVhc3Qgc2hvdWxkIGhhdmUgYSBwcm9jZXNzb3IKKyAgICAjID4gbTY4MDAwKS4gIFRoZSBzeXN0ZW0gbmFtZSByYW5nZXMgZnJvbSAiTWlOVCIgb3ZlciAiRnJlZU1pTlQiCisgICAgIyB0byB0aGUgbG93ZXJjYXNlIHZlcnNpb24gIm1pbnQiIChvciAiZnJlZW1pbnQiKS4gIEZpbmFsbHkKKyAgICAjIHRoZSBzeXN0ZW0gbmFtZSAiVE9TIiBkZW5vdGVzIGEgc3lzdGVtIHdoaWNoIGlzIGFjdHVhbGx5IG5vdAorICAgICMgTWlOVC4gIEJ1dCBNaU5UIGlzIGRvd253YXJkIGNvbXBhdGlibGUgdG8gVE9TLCBzbyB0aGlzIHNob3VsZAorICAgICMgYmUgbm8gcHJvYmxlbS4KKyAgICBhdGFyaXN0W2VdOipNaU5UOio6KiB8IGF0YXJpc3RbZV06Km1pbnQ6KjoqIHwgYXRhcmlzdFtlXToqVE9TOio6KikKKyAgICAgICAgZWNobyBtNjhrLWF0YXJpLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZXhpdCAwIDs7CisgICAgYXRhcmkqOipNaU5UOio6KiB8IGF0YXJpKjoqbWludDoqOiogfCBhdGFyaXN0W2VdOipUT1M6KjoqKQorCWVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQorICAgICAgICBleGl0IDAgOzsKKyAgICAqZmFsY29uKjoqTWlOVDoqOiogfCAqZmFsY29uKjoqbWludDoqOiogfCAqZmFsY29uKjoqVE9TOio6KikKKyAgICAgICAgZWNobyBtNjhrLWF0YXJpLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZXhpdCAwIDs7CisgICAgbWlsYW4qOipNaU5UOio6KiB8IG1pbGFuKjoqbWludDoqOiogfCAqbWlsYW4qOipUT1M6KjoqKQorICAgICAgICBlY2hvIG02OGstbWlsYW4tbWludCR7VU5BTUVfUkVMRUFTRX0KKyAgICAgICAgZXhpdCAwIDs7CisgICAgaGFkZXMqOipNaU5UOio6KiB8IGhhZGVzKjoqbWludDoqOiogfCAqaGFkZXMqOipUT1M6KjoqKQorICAgICAgICBlY2hvIG02OGstaGFkZXMtbWludCR7VU5BTUVfUkVMRUFTRX0KKyAgICAgICAgZXhpdCAwIDs7CisgICAgKjoqTWlOVDoqOiogfCAqOiptaW50Oio6KiB8ICo6KlRPUzoqOiopCisgICAgICAgIGVjaG8gbTY4ay11bmtub3duLW1pbnQke1VOQU1FX1JFTEVBU0V9CisgICAgICAgIGV4aXQgMCA7OworICAgIG02OGs6bWFjaHRlbjoqOiopCisJZWNobyBtNjhrLWFwcGxlLW1hY2h0ZW4ke1VOQU1FX1JFTEVBU0V9CisJZXhpdCAwIDs7CisgICAgcG93ZXJwYzptYWNodGVuOio6KikKKwllY2hvIHBvd2VycGMtYXBwbGUtbWFjaHRlbiR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDAgOzsKKyAgICBSSVNDKjpNYWNoOio6KikKKwllY2hvIG1pcHMtZGVjLW1hY2hfYnNkNC4zCisJZXhpdCAwIDs7CisgICAgUklTQyo6VUxUUklYOio6KikKKwllY2hvIG1pcHMtZGVjLXVsdHJpeCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDAgOzsKKyAgICBWQVgqOlVMVFJJWCo6KjoqKQorCWVjaG8gdmF4LWRlYy11bHRyaXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCAwIDs7CisgICAgMjAyMDpDTElYOio6KiB8IDI0MzA6Q0xJWDoqOiopCisJZWNobyBjbGlwcGVyLWludGVyZ3JhcGgtY2xpeCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDAgOzsKKyAgICBtaXBzOio6KjpVTUlQUyB8IG1pcHM6KjoqOlJJU0NvcykKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJc2VkICdzL14JLy8nIDw8IEVPRiA+JGR1bW15LmMKKyNpZmRlZiBfX2NwbHVzcGx1cworI2luY2x1ZGUgPHN0ZGlvLmg+ICAvKiBmb3IgcHJpbnRmKCkgcHJvdG90eXBlICovCisJaW50IG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyNlbHNlCisJaW50IG1haW4gKGFyZ2MsIGFyZ3YpIGludCBhcmdjOyBjaGFyICphcmd2W107IHsKKyNlbmRpZgorCSNpZiBkZWZpbmVkIChob3N0X21pcHMpICYmIGRlZmluZWQgKE1JUFNFQikKKwkjaWYgZGVmaW5lZCAoU1lTVFlQRV9TWVNWKQorCSAgcHJpbnRmICgibWlwcy1taXBzLXJpc2NvcyVzc3lzdlxuIiwgYXJndlsxXSk7IGV4aXQgKDApOworCSNlbmRpZgorCSNpZiBkZWZpbmVkIChTWVNUWVBFX1NWUjQpCisJICBwcmludGYgKCJtaXBzLW1pcHMtcmlzY29zJXNzdnI0XG4iLCBhcmd2WzFdKTsgZXhpdCAoMCk7CisJI2VuZGlmCisJI2lmIGRlZmluZWQgKFNZU1RZUEVfQlNENDMpIHx8IGRlZmluZWQoU1lTVFlQRV9CU0QpCisJICBwcmludGYgKCJtaXBzLW1pcHMtcmlzY29zJXNic2RcbiIsIGFyZ3ZbMV0pOyBleGl0ICgwKTsKKwkjZW5kaWYKKwkjZW5kaWYKKwkgIGV4aXQgKC0xKTsKKwl9CitFT0YKKwkkQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyBcCisJICAmJiAkZHVtbXkgYGVjaG8gIiR7VU5BTUVfUkVMRUFTRX0iIHwgc2VkIC1uICdzL1woWzAtOV0qXCkuKi9cMS9wJ2AgXAorCSAgJiYgZXhpdCAwCisJZWNobyBtaXBzLW1pcHMtcmlzY29zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgMCA7OworICAgIE1vdG9yb2xhOlBvd2VyTUFYX09TOio6KikKKwllY2hvIHBvd2VycGMtbW90b3JvbGEtcG93ZXJtYXgKKwlleGl0IDAgOzsKKyAgICBNb3Rvcm9sYToqOjQuMzpQTDgtKikKKwllY2hvIHBvd2VycGMtaGFycmlzLXBvd2VybWF4CisJZXhpdCAwIDs7CisgICAgTmlnaHRfSGF3azoqOio6UG93ZXJNQVhfT1MgfCBTeW5lcmd5OlBvd2VyTUFYX09TOio6KikKKwllY2hvIHBvd2VycGMtaGFycmlzLXBvd2VybWF4CisJZXhpdCAwIDs7CisgICAgTmlnaHRfSGF3azpQb3dlcl9VTklYOio6KikKKwllY2hvIHBvd2VycGMtaGFycmlzLXBvd2VydW5peAorCWV4aXQgMCA7OworICAgIG04OGs6Q1gvVVg6Nyo6KikKKwllY2hvIG04OGstaGFycmlzLWN4dXg3CisJZXhpdCAwIDs7CisgICAgbTg4azoqOjQqOlI0KikKKwllY2hvIG04OGstbW90b3JvbGEtc3lzdjQKKwlleGl0IDAgOzsKKyAgICBtODhrOio6Myo6UjMqKQorCWVjaG8gbTg4ay1tb3Rvcm9sYS1zeXN2MworCWV4aXQgMCA7OworICAgIEFWaWlPTjpkZ3V4Oio6KikKKyAgICAgICAgIyBERy9VWCByZXR1cm5zIEFWaWlPTiBmb3IgYWxsIGFyY2hpdGVjdHVyZXMKKyAgICAgICAgVU5BTUVfUFJPQ0VTU09SPWAvdXNyL2Jpbi91bmFtZSAtcGAKKwlpZiBbICRVTkFNRV9QUk9DRVNTT1IgPSBtYzg4MTAwIF0gfHwgWyAkVU5BTUVfUFJPQ0VTU09SID0gbWM4ODExMCBdCisJdGhlbgorCSAgICBpZiBbICR7VEFSR0VUX0JJTkFSWV9JTlRFUkZBQ0V9eCA9IG04OGtkZ3V4ZWxmeCBdIHx8IFwKKwkgICAgICAgWyAke1RBUkdFVF9CSU5BUllfSU5URVJGQUNFfXggPSB4IF0KKwkgICAgdGhlbgorCQllY2hvIG04OGstZGctZGd1eCR7VU5BTUVfUkVMRUFTRX0KKwkgICAgZWxzZQorCQllY2hvIG04OGstZGctZGd1eGJjcyR7VU5BTUVfUkVMRUFTRX0KKwkgICAgZmkKKwllbHNlCisJICAgIGVjaG8gaTU4Ni1kZy1kZ3V4JHtVTkFNRV9SRUxFQVNFfQorCWZpCisgCWV4aXQgMCA7OworICAgIE04OCo6RG9scGhpbk9TOio6KikJIyBEb2xwaGluT1MgKFNWUjMpCisJZWNobyBtODhrLWRvbHBoaW4tc3lzdjMKKwlleGl0IDAgOzsKKyAgICBNODgqOio6UjMqOiopCisJIyBEZWx0YSA4OGsgc3lzdGVtIHJ1bm5pbmcgU1ZSMworCWVjaG8gbTg4ay1tb3Rvcm9sYS1zeXN2MworCWV4aXQgMCA7OworICAgIFhEODgqOio6KjoqKSAjIFRla3Ryb25peCBYRDg4IHN5c3RlbSBydW5uaW5nIFVUZWtWIChTVlIzKQorCWVjaG8gbTg4ay10ZWt0cm9uaXgtc3lzdjMKKwlleGl0IDAgOzsKKyAgICBUZWs0M1swLTldWzAtOV06VVRlazoqOiopICMgVGVrdHJvbml4IDQzMDAgc3lzdGVtIHJ1bm5pbmcgVVRlayAoQlNEKQorCWVjaG8gbTY4ay10ZWt0cm9uaXgtYnNkCisJZXhpdCAwIDs7CisgICAgKjpJUklYKjoqOiopCisJZWNobyBtaXBzLXNnaS1pcml4YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvLS9fL2cnYAorCWV4aXQgMCA7OworICAgID8/Pz8/Pz8/OkFJWD86WzEyXS4xOjIpICAgIyBBSVggMi4yLjEgb3IgQUlYIDIuMS4xIGlzIFJUL1BDIEFJWC4KKwllY2hvIHJvbXAtaWJtLWFpeCAgICAgICMgdW5hbWUgLW0gZ2l2ZXMgYW4gOCBoZXgtY29kZSBDUFUgaWQKKwlleGl0IDAgOzsgICAgICAgICAgICAgICMgTm90ZSB0aGF0OiBlY2hvICInYHVuYW1lIC1zYCciIGdpdmVzICdBSVggJworICAgIGkqODY6QUlYOio6KikKKwllY2hvIGkzODYtaWJtLWFpeAorCWV4aXQgMCA7OworICAgIGlhNjQ6QUlYOio6KikKKwlpZiBbIC14IC91c3IvYmluL29zbGV2ZWwgXSA7IHRoZW4KKwkJSUJNX1JFVj1gL3Vzci9iaW4vb3NsZXZlbGAKKwllbHNlCisJCUlCTV9SRVY9JHtVTkFNRV9WRVJTSU9OfS4ke1VOQU1FX1JFTEVBU0V9CisJZmkKKwllY2hvICR7VU5BTUVfTUFDSElORX0taWJtLWFpeCR7SUJNX1JFVn0KKwlleGl0IDAgOzsKKyAgICAqOkFJWDoyOjMpCisJaWYgZ3JlcCBib3MzMjUgL3Vzci9pbmNsdWRlL3N0ZGlvLmggPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisJCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwkJc2VkICdzL14JCS8vJyA8PCBFT0YgPiRkdW1teS5jCisJCSNpbmNsdWRlIDxzeXMvc3lzdGVtY2ZnLmg+CisKKwkJbWFpbigpCisJCQl7CisJCQlpZiAoIV9fcG93ZXJfcGMoKSkKKwkJCQlleGl0KDEpOworCQkJcHV0cygicG93ZXJwYy1pYm0tYWl4My4yLjUiKTsKKwkJCWV4aXQoMCk7CisJCQl9CitFT0YKKwkJJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgJiYgJGR1bW15ICYmIGV4aXQgMAorCQllY2hvIHJzNjAwMC1pYm0tYWl4My4yLjUKKwllbGlmIGdyZXAgYm9zMzI0IC91c3IvaW5jbHVkZS9zdGRpby5oID4vZGV2L251bGwgMj4mMTsgdGhlbgorCQllY2hvIHJzNjAwMC1pYm0tYWl4My4yLjQKKwllbHNlCisJCWVjaG8gcnM2MDAwLWlibS1haXgzLjIKKwlmaQorCWV4aXQgMCA7OworICAgICo6QUlYOio6WzQ1XSkKKwlJQk1fQ1BVX0lEPWAvdXNyL3NiaW4vbHNkZXYgLUMgLWMgcHJvY2Vzc29yIC1TIGF2YWlsYWJsZSB8IHNlZCAxcSB8IGF3ayAneyBwcmludCAkMSB9J2AKKwlpZiAvdXNyL3NiaW4vbHNhdHRyIC1FbCAke0lCTV9DUFVfSUR9IHwgZ3JlcCAnIFBPV0VSJyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKwkJSUJNX0FSQ0g9cnM2MDAwCisJZWxzZQorCQlJQk1fQVJDSD1wb3dlcnBjCisJZmkKKwlpZiBbIC14IC91c3IvYmluL29zbGV2ZWwgXSA7IHRoZW4KKwkJSUJNX1JFVj1gL3Vzci9iaW4vb3NsZXZlbGAKKwllbHNlCisJCUlCTV9SRVY9JHtVTkFNRV9WRVJTSU9OfS4ke1VOQU1FX1JFTEVBU0V9CisJZmkKKwllY2hvICR7SUJNX0FSQ0h9LWlibS1haXgke0lCTV9SRVZ9CisJZXhpdCAwIDs7CisgICAgKjpBSVg6KjoqKQorCWVjaG8gcnM2MDAwLWlibS1haXgKKwlleGl0IDAgOzsKKyAgICBpYm1ydDo0LjRCU0Q6Knxyb21wLWlibTpCU0Q6KikKKwllY2hvIHJvbXAtaWJtLWJzZDQuNAorCWV4aXQgMCA7OworICAgIGlibXJ0OipCU0Q6Knxyb21wLWlibTpCU0Q6KikgICAgICAgICAgICAjIGNvdmVycyBSVC9QQyBCU0QgYW5kCisJZWNobyByb21wLWlibS1ic2Qke1VOQU1FX1JFTEVBU0V9ICAgIyA0LjMgd2l0aCB1bmFtZSBhZGRlZCB0bworCWV4aXQgMCA7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVwb3J0OiByb21wLWlibSBCU0QgNC4zCisgICAgKjpCT1NYOio6KikKKwllY2hvIHJzNjAwMC1idWxsLWJvc3gKKwlleGl0IDAgOzsKKyAgICBEUFgvMj8wMDpCLk8uUy46KjoqKQorCWVjaG8gbTY4ay1idWxsLXN5c3YzCisJZXhpdCAwIDs7CisgICAgOTAwMC9bMzRdPz86NC4zYnNkOjEuKjoqKQorCWVjaG8gbTY4ay1ocC1ic2QKKwlleGl0IDAgOzsKKyAgICBocDMwMDo0LjRCU0Q6KjoqIHwgOTAwMC9bMzRdPz86NC4zYnNkOjIuKjoqKQorCWVjaG8gbTY4ay1ocC1ic2Q0LjQKKwlleGl0IDAgOzsKKyAgICA5MDAwL1szNDY3OF0/PzpIUC1VWDoqOiopCisJSFBVWF9SRVY9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSouWzBCXSovLydgCisJY2FzZSAiJHtVTkFNRV9NQUNISU5FfSIgaW4KKwkgICAgOTAwMC8zMT8gKSAgICAgICAgICAgIEhQX0FSQ0g9bTY4MDAwIDs7CisJICAgIDkwMDAvWzM0XT8/ICkgICAgICAgICBIUF9BUkNIPW02OGsgOzsKKwkgICAgOTAwMC9bNjc4XVswLTldWzAtOV0pCisJCWlmIFsgLXggL3Vzci9iaW4vZ2V0Y29uZiBdOyB0aGVuCisJCSAgICBzY19jcHVfdmVyc2lvbj1gL3Vzci9iaW4vZ2V0Y29uZiBTQ19DUFVfVkVSU0lPTiAyPi9kZXYvbnVsbGAKKyAgICAgICAgICAgICAgICAgICAgc2Nfa2VybmVsX2JpdHM9YC91c3IvYmluL2dldGNvbmYgU0NfS0VSTkVMX0JJVFMgMj4vZGV2L251bGxgCisgICAgICAgICAgICAgICAgICAgIGNhc2UgIiR7c2NfY3B1X3ZlcnNpb259IiBpbgorICAgICAgICAgICAgICAgICAgICAgIDUyMykgSFBfQVJDSD0iaHBwYTEuMCIgOzsgIyBDUFVfUEFfUklTQzFfMAorICAgICAgICAgICAgICAgICAgICAgIDUyOCkgSFBfQVJDSD0iaHBwYTEuMSIgOzsgIyBDUFVfUEFfUklTQzFfMQorICAgICAgICAgICAgICAgICAgICAgIDUzMikgICAgICAgICAgICAgICAgICAgICAgIyBDUFVfUEFfUklTQzJfMAorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiJHtzY19rZXJuZWxfYml0c30iIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgIDMyKSBIUF9BUkNIPSJocHBhMi4wbiIgOzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgNjQpIEhQX0FSQ0g9ImhwcGEyLjB3IiA7OworCQkJICAnJykgSFBfQVJDSD0iaHBwYTIuMCIgOzsgICAjIEhQLVVYIDEwLjIwCisgICAgICAgICAgICAgICAgICAgICAgICBlc2FjIDs7CisgICAgICAgICAgICAgICAgICAgIGVzYWMKKwkJZmkKKwkJaWYgWyAiJHtIUF9BUkNIfSIgPSAiIiBdOyB0aGVuCisJCSAgICBldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJCSAgICBzZWQgJ3MvXiAgICAgICAgICAgICAgLy8nIDw8IEVPRiA+JGR1bW15LmMKKworICAgICAgICAgICAgICAjZGVmaW5lIF9IUFVYX1NPVVJDRQorICAgICAgICAgICAgICAjaW5jbHVkZSA8c3RkbGliLmg+CisgICAgICAgICAgICAgICNpbmNsdWRlIDx1bmlzdGQuaD4KKworICAgICAgICAgICAgICBpbnQgbWFpbiAoKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICNpZiBkZWZpbmVkKF9TQ19LRVJORUxfQklUUykKKyAgICAgICAgICAgICAgICAgIGxvbmcgYml0cyA9IHN5c2NvbmYoX1NDX0tFUk5FTF9CSVRTKTsKKyAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgICBsb25nIGNwdSAgPSBzeXNjb25mIChfU0NfQ1BVX1ZFUlNJT04pOworCisgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNwdSkKKyAgICAgICAgICAgICAgCXsKKyAgICAgICAgICAgICAgCWNhc2UgQ1BVX1BBX1JJU0MxXzA6IHB1dHMgKCJocHBhMS4wIik7IGJyZWFrOworICAgICAgICAgICAgICAJY2FzZSBDUFVfUEFfUklTQzFfMTogcHV0cyAoImhwcGExLjEiKTsgYnJlYWs7CisgICAgICAgICAgICAgIAljYXNlIENQVV9QQV9SSVNDMl8wOgorICAgICAgICAgICAgICAjaWYgZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpCisgICAgICAgICAgICAgIAkgICAgc3dpdGNoIChiaXRzKQorICAgICAgICAgICAgICAJCXsKKyAgICAgICAgICAgICAgCQljYXNlIDY0OiBwdXRzICgiaHBwYTIuMHciKTsgYnJlYWs7CisgICAgICAgICAgICAgIAkJY2FzZSAzMjogcHV0cyAoImhwcGEyLjBuIik7IGJyZWFrOworICAgICAgICAgICAgICAJCWRlZmF1bHQ6IHB1dHMgKCJocHBhMi4wIik7IGJyZWFrOworICAgICAgICAgICAgICAJCX0gYnJlYWs7CisgICAgICAgICAgICAgICNlbHNlICAvKiAhZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpICovCisgICAgICAgICAgICAgIAkgICAgcHV0cyAoImhwcGEyLjAiKTsgYnJlYWs7CisgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAJZGVmYXVsdDogcHV0cyAoImhwcGExLjAiKTsgYnJlYWs7CisgICAgICAgICAgICAgIAl9CisgICAgICAgICAgICAgICAgICBleGl0ICgwKTsKKyAgICAgICAgICAgICAgfQorRU9GCisJCSAgICAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAyPi9kZXYvbnVsbCkgJiYgSFBfQVJDSD1gJGR1bW15YAorCQkgICAgdGVzdCAteiAiJEhQX0FSQ0giICYmIEhQX0FSQ0g9aHBwYQorCQlmaSA7OworCWVzYWMKKwlpZiBbICR7SFBfQVJDSH0gPSAiaHBwYTIuMHciIF0KKwl0aGVuCisJICAgICMgYXZvaWQgZG91YmxlIGV2YWx1YXRpb24gb2YgJHNldF9jY19mb3JfYnVpbGQKKwkgICAgdGVzdCAtbiAiJENDX0ZPUl9CVUlMRCIgfHwgZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCSAgICBpZiBlY2hvIF9fTFA2NF9fIHwgKENDT1BUUz0gJENDX0ZPUl9CVUlMRCAtRSAtKSB8IGdyZXAgX19MUDY0X18gPi9kZXYvbnVsbAorCSAgICB0aGVuCisJCUhQX0FSQ0g9ImhwcGEyLjB3IgorCSAgICBlbHNlCisJCUhQX0FSQ0g9ImhwcGE2NCIKKwkgICAgZmkKKwlmaQorCWVjaG8gJHtIUF9BUkNIfS1ocC1ocHV4JHtIUFVYX1JFVn0KKwlleGl0IDAgOzsKKyAgICBpYTY0OkhQLVVYOio6KikKKwlIUFVYX1JFVj1gZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi5bMEJdKi8vJ2AKKwllY2hvIGlhNjQtaHAtaHB1eCR7SFBVWF9SRVZ9CisJZXhpdCAwIDs7CisgICAgMzA1MCo6SEktVVg6KjoqKQorCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwlzZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXkuYworCSNpbmNsdWRlIDx1bmlzdGQuaD4KKwlpbnQKKwltYWluICgpCisJeworCSAgbG9uZyBjcHUgPSBzeXNjb25mIChfU0NfQ1BVX1ZFUlNJT04pOworCSAgLyogVGhlIG9yZGVyIG1hdHRlcnMsIGJlY2F1c2UgQ1BVX0lTX0hQX01DNjhLIGVycm9uZW91c2x5IHJldHVybnMKKwkgICAgIHRydWUgZm9yIENQVV9QQV9SSVNDMV8wLiAgQ1BVX0lTX1BBX1JJU0MgcmV0dXJucyBjb3JyZWN0CisJICAgICByZXN1bHRzLCBob3dldmVyLiAgKi8KKwkgIGlmIChDUFVfSVNfUEFfUklTQyAoY3B1KSkKKwkgICAgeworCSAgICAgIHN3aXRjaCAoY3B1KQorCQl7CisJCSAgY2FzZSBDUFVfUEFfUklTQzFfMDogcHV0cyAoImhwcGExLjAtaGl0YWNoaS1oaXV4d2UyIik7IGJyZWFrOworCQkgIGNhc2UgQ1BVX1BBX1JJU0MxXzE6IHB1dHMgKCJocHBhMS4xLWhpdGFjaGktaGl1eHdlMiIpOyBicmVhazsKKwkJICBjYXNlIENQVV9QQV9SSVNDMl8wOiBwdXRzICgiaHBwYTIuMC1oaXRhY2hpLWhpdXh3ZTIiKTsgYnJlYWs7CisJCSAgZGVmYXVsdDogcHV0cyAoImhwcGEtaGl0YWNoaS1oaXV4d2UyIik7IGJyZWFrOworCQl9CisJICAgIH0KKwkgIGVsc2UgaWYgKENQVV9JU19IUF9NQzY4SyAoY3B1KSkKKwkgICAgcHV0cyAoIm02OGstaGl0YWNoaS1oaXV4d2UyIik7CisJICBlbHNlIHB1dHMgKCJ1bmtub3duLWhpdGFjaGktaGl1eHdlMiIpOworCSAgZXhpdCAoMCk7CisJfQorRU9GCisJJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgJiYgJGR1bW15ICYmIGV4aXQgMAorCWVjaG8gdW5rbm93bi1oaXRhY2hpLWhpdXh3ZTIKKwlleGl0IDAgOzsKKyAgICA5MDAwLzc/Pzo0LjNic2Q6KjoqIHwgOTAwMC84P1s3OV06NC4zYnNkOio6KiApCisJZWNobyBocHBhMS4xLWhwLWJzZAorCWV4aXQgMCA7OworICAgIDkwMDAvOD8/OjQuM2JzZDoqOiopCisJZWNobyBocHBhMS4wLWhwLWJzZAorCWV4aXQgMCA7OworICAgICo5Pz8qOk1QRS9pWDoqOiogfCAqMzAwMCo6TVBFL2lYOio6KikKKwllY2hvIGhwcGExLjAtaHAtbXBlaXgKKwlleGl0IDAgOzsKKyAgICBocDc/PzpPU0YxOio6KiB8IGhwOD9bNzldOk9TRjE6KjoqICkKKwllY2hvIGhwcGExLjEtaHAtb3NmCisJZXhpdCAwIDs7CisgICAgaHA4Pz86T1NGMToqOiopCisJZWNobyBocHBhMS4wLWhwLW9zZgorCWV4aXQgMCA7OworICAgIGkqODY6T1NGMToqOiopCisJaWYgWyAteCAvdXNyL3NiaW4vc3lzdmVyc2lvbiBdIDsgdGhlbgorCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1vc2YxbWsKKwllbHNlCisJICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLW9zZjEKKwlmaQorCWV4aXQgMCA7OworICAgIHBhcmlzYyo6TGl0ZXMqOio6KikKKwllY2hvIGhwcGExLjEtaHAtbGl0ZXMKKwlleGl0IDAgOzsKKyAgICBDMSo6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkMxKjoqKQorCWVjaG8gYzEtY29udmV4LWJzZAorICAgICAgICBleGl0IDAgOzsKKyAgICBDMio6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkMyKjoqKQorCWlmIGdldHN5c2luZm8gLWYgc2NhbGFyX2FjYworCXRoZW4gZWNobyBjMzItY29udmV4LWJzZAorCWVsc2UgZWNobyBjMi1jb252ZXgtYnNkCisJZmkKKyAgICAgICAgZXhpdCAwIDs7CisgICAgQzM0KjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzM0KjoqKQorCWVjaG8gYzM0LWNvbnZleC1ic2QKKyAgICAgICAgZXhpdCAwIDs7CisgICAgQzM4KjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzM4KjoqKQorCWVjaG8gYzM4LWNvbnZleC1ic2QKKyAgICAgICAgZXhpdCAwIDs7CisgICAgQzQqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDNCo6KikKKwllY2hvIGM0LWNvbnZleC1ic2QKKyAgICAgICAgZXhpdCAwIDs7CisgICAgQ1JBWSpZLU1QOio6KjoqKQorCWVjaG8geW1wLWNyYXktdW5pY29zJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCAwIDs7CisgICAgQ1JBWSpbQS1aXTkwOio6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1jcmF5LXVuaWNvcyR7VU5BTUVfUkVMRUFTRX0gXAorCXwgc2VkIC1lICdzL0NSQVkuKlwoW0EtWl05MFwpL1wxLycgXAorCSAgICAgIC1lIHkvQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVovYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXovIFwKKwkgICAgICAtZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCAwIDs7CisgICAgQ1JBWSpUUzoqOio6KikKKwllY2hvIHQ5MC1jcmF5LXVuaWNvcyR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXC5bXi5dKiQvLlgvJworCWV4aXQgMCA7OworICAgIENSQVkqVDNFOio6KjoqKQorCWVjaG8gYWxwaGFldjUtY3JheS11bmljb3NtayR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXC5bXi5dKiQvLlgvJworCWV4aXQgMCA7OworICAgIENSQVkqU1YxOio6KjoqKQorCWVjaG8gc3YxLWNyYXktdW5pY29zJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCAwIDs7CisgICAgKjpVTklDT1MvbXA6KjoqKQorCWVjaG8gY3JheW52LWNyYXktdW5pY29zbXAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKKwlleGl0IDAgOzsKKyAgICBGMzBbMDFdOlVOSVhfU3lzdGVtX1Y6KjoqIHwgRjcwMDpVTklYX1N5c3RlbV9WOio6KikKKwlGVUpJVFNVX1BST0M9YHVuYW1lIC1tIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonYAorICAgICAgICBGVUpJVFNVX1NZUz1gdW5hbWUgLXAgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvXC8vLydgCisgICAgICAgIEZVSklUU1VfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvIC9fLydgCisgICAgICAgIGVjaG8gIiR7RlVKSVRTVV9QUk9DfS1mdWppdHN1LSR7RlVKSVRTVV9TWVN9JHtGVUpJVFNVX1JFTH0iCisgICAgICAgIGV4aXQgMCA7OworICAgIDUwMDA6VU5JWF9TeXN0ZW1fVjo0Lio6KikKKyAgICAgICAgRlVKSVRTVV9TWVM9YHVuYW1lIC1wIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzL1wvLy8nYAorICAgICAgICBGVUpJVFNVX1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzLyAvXy8nYAorICAgICAgICBlY2hvICJzcGFyYy1mdWppdHN1LSR7RlVKSVRTVV9TWVN9JHtGVUpJVFNVX1JFTH0iCisJZXhpdCAwIDs7CisgICAgaSo4NjpCU0QvMzg2Oio6KiB8IGkqODY6QlNEL09TOio6KiB8ICo6QXNjZW5kXCBFbWJlZGRlZC9PUzoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWJzZGkke1VOQU1FX1JFTEVBU0V9CisJZXhpdCAwIDs7CisgICAgc3BhcmMqOkJTRC9PUzoqOiopCisJZWNobyBzcGFyYy11bmtub3duLWJzZGkke1VOQU1FX1JFTEVBU0V9CisJZXhpdCAwIDs7CisgICAgKjpCU0QvT1M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWJzZGkke1VOQU1FX1JFTEVBU0V9CisJZXhpdCAwIDs7CisgICAgKjpGcmVlQlNEOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1mcmVlYnNkYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvWy0oXS4qLy8nYAorCWV4aXQgMCA7OworICAgIGkqOkNZR1dJTio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtY3lnd2luCisJZXhpdCAwIDs7CisgICAgaSo6TUlOR1cqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW1pbmd3MzIKKwlleGl0IDAgOzsKKyAgICBpKjpQVyo6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtcHczMgorCWV4aXQgMCA7OworICAgIHg4NjpJbnRlcml4KjpbMzRdKikKKwllY2hvIGk1ODYtcGMtaW50ZXJpeCR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1wuLiovLycKKwlleGl0IDAgOzsKKyAgICBbMzQ1XTg2OldpbmRvd3NfOTU6KiB8IFszNDVdODY6V2luZG93c185ODoqIHwgWzM0NV04NjpXaW5kb3dzX05UOiopCisJZWNobyBpJHtVTkFNRV9NQUNISU5FfS1wYy1ta3MKKwlleGl0IDAgOzsKKyAgICBpKjpXaW5kb3dzX05UKjoqIHwgUGVudGl1bSo6V2luZG93c19OVCo6KikKKwkjIEhvdyBkbyB3ZSBrbm93IGl0J3MgSW50ZXJpeCByYXRoZXIgdGhhbiB0aGUgZ2VuZXJpYyBQT1NJWCBzdWJzeXN0ZW0/CisJIyBJdCBhbHNvIGNvbmZsaWN0cyB3aXRoIHByZS0yLjAgdmVyc2lvbnMgb2YgQVQmVCBVV0lOLiBTaG91bGQgd2UKKwkjIFVOQU1FX01BQ0hJTkUgYmFzZWQgb24gdGhlIG91dHB1dCBvZiB1bmFtZSBpbnN0ZWFkIG9mIGkzODY/CisJZWNobyBpNTg2LXBjLWludGVyaXgKKwlleGl0IDAgOzsKKyAgICBpKjpVV0lOKjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy11d2luCisJZXhpdCAwIDs7CisgICAgYW1kNjQ6Q1lHV0lOKjoqOiopCisJZWNobyB4ODZfNjQtdW5rbm93bi1jeWd3aW4KKwlleGl0IDAgOzsKKyAgICBwKjpDWUdXSU4qOiopCisJZWNobyBwb3dlcnBjbGUtdW5rbm93bi1jeWd3aW4KKwlleGl0IDAgOzsKKyAgICBwcmVwKjpTdW5PUzo1Lio6KikKKwllY2hvIHBvd2VycGNsZS11bmtub3duLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCisJZXhpdCAwIDs7CisgICAgKjpHTlU6KjoqKQorCSMgdGhlIEdOVSBzeXN0ZW0KKwllY2hvIGBlY2hvICR7VU5BTUVfTUFDSElORX18c2VkIC1lICdzLFstL10uKiQsLCdgLXVua25vd24tZ251YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MsLy4qJCwsJ2AKKwlleGl0IDAgOzsKKyAgICAqOkdOVS8qOio6KikKKwkjIG90aGVyIHN5c3RlbXMgd2l0aCBHTlUgbGliYyBhbmQgdXNlcmxhbmQKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1gZWNobyAke1VOQU1FX1NZU1RFTX0gfCBzZWQgJ3MsXlteL10qLywsJyB8IHRyICdbQS1aXScgJ1thLXpdJ2BgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgLWdudQorCWV4aXQgMCA7OworICAgIGkqODY6TWluaXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1taW5peAorCWV4aXQgMCA7OworICAgIGFybSo6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgMCA7OworICAgIGNyaXM6TGludXg6KjoqKQorCWVjaG8gY3Jpcy1heGlzLWxpbnV4LWdudQorCWV4aXQgMCA7OworICAgIGNyaXN2MzI6TGludXg6KjoqKQorCWVjaG8gY3Jpc3YzMi1heGlzLWxpbnV4LWdudQorCWV4aXQgMCA7OworICAgIGZydjpMaW51eDoqOiopCisgICAgCWVjaG8gZnJ2LXVua25vd24tbGludXgtZ251CisJZXhpdCAwIDs7CisgICAgaWE2NDpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCAwIDs7CisgICAgbTMycio6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgMCA7OworICAgIG02OCo6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgMCA7OworICAgIG1pcHM6TGludXg6KjoqKQorCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwlzZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXkuYworCSN1bmRlZiBDUFUKKwkjdW5kZWYgbWlwcworCSN1bmRlZiBtaXBzZWwKKwkjaWYgZGVmaW5lZChfX01JUFNFTF9fKSB8fCBkZWZpbmVkKF9fTUlQU0VMKSB8fCBkZWZpbmVkKF9NSVBTRUwpIHx8IGRlZmluZWQoTUlQU0VMKQorCUNQVT1taXBzZWwKKwkjZWxzZQorCSNpZiBkZWZpbmVkKF9fTUlQU0VCX18pIHx8IGRlZmluZWQoX19NSVBTRUIpIHx8IGRlZmluZWQoX01JUFNFQikgfHwgZGVmaW5lZChNSVBTRUIpCisJQ1BVPW1pcHMKKwkjZWxzZQorCUNQVT0KKwkjZW5kaWYKKwkjZW5kaWYKK0VPRgorCWV2YWwgYCRDQ19GT1JfQlVJTEQgLUUgJGR1bW15LmMgMj4vZGV2L251bGwgfCBncmVwIF5DUFU9YAorCXRlc3QgeCIke0NQVX0iICE9IHggJiYgZWNobyAiJHtDUFV9LXVua25vd24tbGludXgtZ251IiAmJiBleGl0IDAKKwk7OworICAgIG1pcHM2NDpMaW51eDoqOiopCisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCisJI3VuZGVmIENQVQorCSN1bmRlZiBtaXBzNjQKKwkjdW5kZWYgbWlwczY0ZWwKKwkjaWYgZGVmaW5lZChfX01JUFNFTF9fKSB8fCBkZWZpbmVkKF9fTUlQU0VMKSB8fCBkZWZpbmVkKF9NSVBTRUwpIHx8IGRlZmluZWQoTUlQU0VMKQorCUNQVT1taXBzNjRlbAorCSNlbHNlCisJI2lmIGRlZmluZWQoX19NSVBTRUJfXykgfHwgZGVmaW5lZChfX01JUFNFQikgfHwgZGVmaW5lZChfTUlQU0VCKSB8fCBkZWZpbmVkKE1JUFNFQikKKwlDUFU9bWlwczY0CisJI2Vsc2UKKwlDUFU9CisJI2VuZGlmCisJI2VuZGlmCitFT0YKKwlldmFsIGAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgZ3JlcCBeQ1BVPWAKKwl0ZXN0IHgiJHtDUFV9IiAhPSB4ICYmIGVjaG8gIiR7Q1BVfS11bmtub3duLWxpbnV4LWdudSIgJiYgZXhpdCAwCisJOzsKKyAgICBwcGM6TGludXg6KjoqKQorCWVjaG8gcG93ZXJwYy11bmtub3duLWxpbnV4LWdudQorCWV4aXQgMCA7OworICAgIHBwYzY0OkxpbnV4Oio6KikKKwllY2hvIHBvd2VycGM2NC11bmtub3duLWxpbnV4LWdudQorCWV4aXQgMCA7OworICAgIGFscGhhOkxpbnV4Oio6KikKKwljYXNlIGBzZWQgLW4gJy9eY3B1IG1vZGVsL3MvXi4qOiBcKC4qXCkvXDEvcCcgPCAvcHJvYy9jcHVpbmZvYCBpbgorCSAgRVY1KSAgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjUgOzsKKwkgIEVWNTYpICBVTkFNRV9NQUNISU5FPWFscGhhZXY1NiA7OworCSAgUENBNTYpIFVOQU1FX01BQ0hJTkU9YWxwaGFwY2E1NiA7OworCSAgUENBNTcpIFVOQU1FX01BQ0hJTkU9YWxwaGFwY2E1NiA7OworCSAgRVY2KSAgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjYgOzsKKwkgIEVWNjcpICBVTkFNRV9NQUNISU5FPWFscGhhZXY2NyA7OworCSAgRVY2OCopIFVOQU1FX01BQ0hJTkU9YWxwaGFldjY4IDs7CisgICAgICAgIGVzYWMKKwlvYmpkdW1wIC0tcHJpdmF0ZS1oZWFkZXJzIC9iaW4vc2ggfCBncmVwIGxkLnNvLjEgPi9kZXYvbnVsbAorCWlmIHRlc3QgIiQ/IiA9IDAgOyB0aGVuIExJQkM9ImxpYmMxIiA7IGVsc2UgTElCQz0iIiA7IGZpCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251JHtMSUJDfQorCWV4aXQgMCA7OworICAgIHBhcmlzYzpMaW51eDoqOiogfCBocHBhOkxpbnV4Oio6KikKKwkjIExvb2sgZm9yIENQVSBsZXZlbAorCWNhc2UgYGdyZXAgJ15jcHVbXmEtel0qOicgL3Byb2MvY3B1aW5mbyAyPi9kZXYvbnVsbCB8IGN1dCAtZCcgJyAtZjJgIGluCisJICBQQTcqKSBlY2hvIGhwcGExLjEtdW5rbm93bi1saW51eC1nbnUgOzsKKwkgIFBBOCopIGVjaG8gaHBwYTIuMC11bmtub3duLWxpbnV4LWdudSA7OworCSAgKikgICAgZWNobyBocHBhLXVua25vd24tbGludXgtZ251IDs7CisJZXNhYworCWV4aXQgMCA7OworICAgIHBhcmlzYzY0OkxpbnV4Oio6KiB8IGhwcGE2NDpMaW51eDoqOiopCisJZWNobyBocHBhNjQtdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDAgOzsKKyAgICBzMzkwOkxpbnV4Oio6KiB8IHMzOTB4OkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0taWJtLWxpbnV4CisJZXhpdCAwIDs7CisgICAgc2g2NCo6TGludXg6KjoqKQorICAgIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDAgOzsKKyAgICBzaCo6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgMCA7OworICAgIHNwYXJjOkxpbnV4Oio6KiB8IHNwYXJjNjQ6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgMCA7OworICAgIHg4Nl82NDpMaW51eDoqOiopCisJZWNobyB4ODZfNjQtdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDAgOzsKKyAgICBpKjg2OkxpbnV4Oio6KikKKwkjIFRoZSBCRkQgbGlua2VyIGtub3dzIHdoYXQgdGhlIGRlZmF1bHQgb2JqZWN0IGZpbGUgZm9ybWF0IGlzLCBzbworCSMgZmlyc3Qgc2VlIGlmIGl0IHdpbGwgdGVsbCB1cy4gY2QgdG8gdGhlIHJvb3QgZGlyZWN0b3J5IHRvIHByZXZlbnQKKwkjIHByb2JsZW1zIHdpdGggb3RoZXIgcHJvZ3JhbXMgb3IgZGlyZWN0b3JpZXMgY2FsbGVkIGBsZCcgaW4gdGhlIHBhdGguCisJIyBTZXQgTENfQUxMPUMgdG8gZW5zdXJlIGxkIG91dHB1dHMgbWVzc2FnZXMgaW4gRW5nbGlzaC4KKwlsZF9zdXBwb3J0ZWRfdGFyZ2V0cz1gY2QgLzsgTENfQUxMPUMgbGQgLS1oZWxwIDI+JjEgXAorCQkJIHwgc2VkIC1uZSAnL3N1cHBvcnRlZCB0YXJnZXRzOi8hZAorCQkJCSAgICBzL1sgCV1bIAldKi8gL2cKKwkJCQkgICAgcy8uKnN1cHBvcnRlZCB0YXJnZXRzOiAqLy8KKwkJCQkgICAgcy8gLiovLworCQkJCSAgICBwJ2AKKyAgICAgICAgY2FzZSAiJGxkX3N1cHBvcnRlZF90YXJnZXRzIiBpbgorCSAgZWxmMzItaTM4NikKKwkJVEVOVEFUSVZFPSIke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LWdudSIKKwkJOzsKKwkgIGEub3V0LWkzODYtbGludXgpCisJCWVjaG8gIiR7VU5BTUVfTUFDSElORX0tcGMtbGludXgtZ251YW91dCIKKwkJZXhpdCAwIDs7CisJICBjb2ZmLWkzODYpCisJCWVjaG8gIiR7VU5BTUVfTUFDSElORX0tcGMtbGludXgtZ251Y29mZiIKKwkJZXhpdCAwIDs7CisJICAiIikKKwkJIyBFaXRoZXIgYSBwcmUtQkZEIGEub3V0IGxpbmtlciAobGludXgtZ251b2xkbGQpIG9yCisJCSMgb25lIHRoYXQgZG9lcyBub3QgZ2l2ZSB1cyB1c2VmdWwgLS1oZWxwLgorCQllY2hvICIke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LWdudW9sZGxkIgorCQlleGl0IDAgOzsKKwllc2FjCisJIyBEZXRlcm1pbmUgd2hldGhlciB0aGUgZGVmYXVsdCBjb21waWxlciBpcyBhLm91dCBvciBlbGYKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJc2VkICdzL14JLy8nIDw8IEVPRiA+JGR1bW15LmMKKwkjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KKwkjaWZkZWYgX19FTEZfXworCSMgaWZkZWYgX19HTElCQ19fCisJIyAgaWYgX19HTElCQ19fID49IDIKKwlMSUJDPWdudQorCSMgIGVsc2UKKwlMSUJDPWdudWxpYmMxCisJIyAgZW5kaWYKKwkjIGVsc2UKKwlMSUJDPWdudWxpYmMxCisJIyBlbmRpZgorCSNlbHNlCisJI2lmZGVmIF9fSU5URUxfQ09NUElMRVIKKwlMSUJDPWdudQorCSNlbHNlCisJTElCQz1nbnVhb3V0CisJI2VuZGlmCisJI2VuZGlmCisJI2lmZGVmIF9fZGlldGxpYmNfXworCUxJQkM9ZGlldGxpYmMKKwkjZW5kaWYKK0VPRgorCWV2YWwgYCRDQ19GT1JfQlVJTEQgLUUgJGR1bW15LmMgMj4vZGV2L251bGwgfCBncmVwIF5MSUJDPWAKKwl0ZXN0IHgiJHtMSUJDfSIgIT0geCAmJiBlY2hvICIke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LSR7TElCQ30iICYmIGV4aXQgMAorCXRlc3QgeCIke1RFTlRBVElWRX0iICE9IHggJiYgZWNobyAiJHtURU5UQVRJVkV9IiAmJiBleGl0IDAKKwk7OworICAgIGkqODY6RFlOSVgvcHR4OjQqOiopCisJIyBwdHggNC4wIGRvZXMgdW5hbWUgLXMgY29ycmVjdGx5LCB3aXRoIERZTklYL3B0eCBpbiB0aGVyZS4KKwkjIGVhcmxpZXIgdmVyc2lvbnMgYXJlIG1lc3NlZCB1cCBhbmQgcHV0IHRoZSBub2RlbmFtZSBpbiBib3RoCisJIyBzeXNuYW1lIGFuZCBub2RlbmFtZS4KKwllY2hvIGkzODYtc2VxdWVudC1zeXN2NAorCWV4aXQgMCA7OworICAgIGkqODY6VU5JWF9TVjo0LjJNUDoyLiopCisgICAgICAgICMgVW5peHdhcmUgaXMgYW4gb2Zmc2hvb3Qgb2YgU1ZSNCwgYnV0IGl0IGhhcyBpdHMgb3duIHZlcnNpb24KKyAgICAgICAgIyBudW1iZXIgc2VyaWVzIHN0YXJ0aW5nIHdpdGggMi4uLgorICAgICAgICAjIEkgYW0gbm90IHBvc2l0aXZlIHRoYXQgb3RoZXIgU1ZSNCBzeXN0ZW1zIHdvbid0IG1hdGNoIHRoaXMsCisJIyBJIGp1c3QgaGF2ZSB0byBob3BlLiAgLS0gcm1zLgorICAgICAgICAjIFVzZSBzeXN2NC4ydXcuLi4gc28gdGhhdCBzeXN2NCogbWF0Y2hlcyBpdC4KKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc3lzdjQuMnV3JHtVTkFNRV9WRVJTSU9OfQorCWV4aXQgMCA7OworICAgIGkqODY6T1MvMjoqOiopCisJIyBJZiB3ZSB3ZXJlIGFibGUgdG8gZmluZCBgdW5hbWUnLCB0aGVuIEVNWCBVbml4IGNvbXBhdGliaWxpdHkKKwkjIGlzIHByb2JhYmx5IGluc3RhbGxlZC4KKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtb3MyLWVteAorCWV4aXQgMCA7OworICAgIGkqODY6WFRTLTMwMDoqOlNUT1ApCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tc3RvcAorCWV4aXQgMCA7OworICAgIGkqODY6YXRoZW9zOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1hdGhlb3MKKwlleGl0IDAgOzsKKwlpKjg2OnN5bGxhYmxlOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc3lsbGFibGUKKwlleGl0IDAgOzsKKyAgICBpKjg2Okx5bnhPUzoyLio6KiB8IGkqODY6THlueE9TOjMuWzAxXSo6KiB8IGkqODY6THlueE9TOjQuMCo6KikKKwllY2hvIGkzODYtdW5rbm93bi1seW54b3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCAwIDs7CisgICAgaSo4NjoqRE9TOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtbXNkb3NkamdwcAorCWV4aXQgMCA7OworICAgIGkqODY6Kjo0Lio6KiB8IGkqODY6U1lTVEVNX1Y6NC4qOiopCisJVU5BTUVfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgJ3MvXC9NUCQvLydgCisJaWYgZ3JlcCBOb3ZlbGwgL3Vzci9pbmNsdWRlL2xpbmsuaCA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bml2ZWwtc3lzdiR7VU5BTUVfUkVMfQorCWVsc2UKKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXN5c3Yke1VOQU1FX1JFTH0KKwlmaQorCWV4aXQgMCA7OworICAgIGkqODY6Kjo1Ols3OF0qKQorCWNhc2UgYC9iaW4vdW5hbWUgLVggfCBncmVwICJeTWFjaGluZSJgIGluCisJICAgICo0ODYqKQkgICAgIFVOQU1FX01BQ0hJTkU9aTQ4NiA7OworCSAgICAqUGVudGl1bSkJICAgICBVTkFNRV9NQUNISU5FPWk1ODYgOzsKKwkgICAgKlBlbnQqfCpDZWxlcm9uKSBVTkFNRV9NQUNISU5FPWk2ODYgOzsKKwllc2FjCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tc3lzdiR7VU5BTUVfUkVMRUFTRX0ke1VOQU1FX1NZU1RFTX0ke1VOQU1FX1ZFUlNJT059CisJZXhpdCAwIDs7CisgICAgaSo4NjoqOjMuMjoqKQorCWlmIHRlc3QgLWYgL3Vzci9vcHRpb25zL2NiLm5hbWU7IHRoZW4KKwkJVU5BTUVfUkVMPWBzZWQgLW4gJ3MvLipWZXJzaW9uIC8vcCcgPC91c3Ivb3B0aW9ucy9jYi5uYW1lYAorCQllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtaXNjJFVOQU1FX1JFTAorCWVsaWYgL2Jpbi91bmFtZSAtWCAyPi9kZXYvbnVsbCA+L2Rldi9udWxsIDsgdGhlbgorCQlVTkFNRV9SRUw9YCgvYmluL3VuYW1lIC1YfGdyZXAgUmVsZWFzZXxzZWQgLWUgJ3MvLio9IC8vJylgCisJCSgvYmluL3VuYW1lIC1YfGdyZXAgaTgwNDg2ID4vZGV2L251bGwpICYmIFVOQU1FX01BQ0hJTkU9aTQ4NgorCQkoL2Jpbi91bmFtZSAtWHxncmVwICdeTWFjaGluZS4qUGVudGl1bScgPi9kZXYvbnVsbCkgXAorCQkJJiYgVU5BTUVfTUFDSElORT1pNTg2CisJCSgvYmluL3VuYW1lIC1YfGdyZXAgJ15NYWNoaW5lLipQZW50ICpJSScgPi9kZXYvbnVsbCkgXAorCQkJJiYgVU5BTUVfTUFDSElORT1pNjg2CisJCSgvYmluL3VuYW1lIC1YfGdyZXAgJ15NYWNoaW5lLipQZW50aXVtIFBybycgPi9kZXYvbnVsbCkgXAorCQkJJiYgVU5BTUVfTUFDSElORT1pNjg2CisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1zY28kVU5BTUVfUkVMCisJZWxzZQorCQllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc3lzdjMyCisJZmkKKwlleGl0IDAgOzsKKyAgICBwYzoqOio6KikKKwkjIExlZnQgaGVyZSBmb3IgY29tcGF0aWJpbGl0eToKKyAgICAgICAgIyB1bmFtZSAtbSBwcmludHMgZm9yIERKR1BQIGFsd2F5cyAncGMnLCBidXQgaXQgcHJpbnRzIG5vdGhpbmcgYWJvdXQKKyAgICAgICAgIyB0aGUgcHJvY2Vzc29yLCBzbyB3ZSBwbGF5IHNhZmUgYnkgYXNzdW1pbmcgaTM4Ni4KKwllY2hvIGkzODYtcGMtbXNkb3NkamdwcAorICAgICAgICBleGl0IDAgOzsKKyAgICBJbnRlbDpNYWNoOjMqOiopCisJZWNobyBpMzg2LXBjLW1hY2gzCisJZXhpdCAwIDs7CisgICAgcGFyYWdvbjoqOio6KikKKwllY2hvIGk4NjAtaW50ZWwtb3NmMQorCWV4aXQgMCA7OworICAgIGk4NjA6Kjo0Lio6KikgIyBpODYwLVNWUjQKKwlpZiBncmVwIFN0YXJkZW50IC91c3IvaW5jbHVkZS9zeXMvdWFkbWluLmggPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgorCSAgZWNobyBpODYwLXN0YXJkZW50LXN5c3Yke1VOQU1FX1JFTEVBU0V9ICMgU3RhcmRlbnQgVmlzdHJhIGk4NjAtU1ZSNAorCWVsc2UgIyBBZGQgb3RoZXIgaTg2MC1TVlI0IHZlbmRvcnMgYmVsb3cgYXMgdGhleSBhcmUgZGlzY292ZXJlZC4KKwkgIGVjaG8gaTg2MC11bmtub3duLXN5c3Yke1VOQU1FX1JFTEVBU0V9ICAjIFVua25vd24gaTg2MC1TVlI0CisJZmkKKwlleGl0IDAgOzsKKyAgICBtaW5pKjpDVElYOlNZUyo1OiopCisJIyAibWluaWZyYW1lIgorCWVjaG8gbTY4MDEwLWNvbnZlcmdlbnQtc3lzdgorCWV4aXQgMCA7OworICAgIG1jNjhrOlVOSVg6U1lTVEVNNTozLjUxbSkKKwllY2hvIG02OGstY29udmVyZ2VudC1zeXN2CisJZXhpdCAwIDs7CisgICAgTTY4MD8wOkQtTklYOjUuMzoqKQorCWVjaG8gbTY4ay1kaWFiLWRuaXgKKwlleGl0IDAgOzsKKyAgICBNNjgqOio6UjNWWzU2NzhdKjoqKQorCXRlc3QgLXIgL3N5c1Y2OCAmJiBlY2hvICdtNjhrLW1vdG9yb2xhLXN5c3YnICYmIGV4aXQgMCA7OworICAgIDNbMzQ1XT8/Oio6NC4wOjMuMCB8IDNbMzRdPz9BOio6NC4wOjMuMCB8IDNbMzRdPz8sKjoqOjQuMDozLjAgfCAzWzM0XT8/Lyo6Kjo0LjA6My4wIHwgNDQwMDoqOjQuMDozLjAgfCA0ODUwOio6NC4wOjMuMCB8IFNLQTQwOio6NC4wOjMuMCB8IFNEUzI6Kjo0LjA6My4wIHwgU0hHMjoqOjQuMDozLjAgfCBTNzUwMSo6Kjo0LjA6My4wKQorCU9TX1JFTD0nJworCXRlc3QgLXIgL2V0Yy8ucmVsaWQgXAorCSYmIE9TX1JFTD0uYHNlZCAtbiAncy9bXiBdKiBbXiBdKiBcKFswLTldWzAtOV1cKS4qL1wxL3AnIDwgL2V0Yy8ucmVsaWRgCisJL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IGdyZXAgODYgPi9kZXYvbnVsbCBcCisJICAmJiBlY2hvIGk0ODYtbmNyLXN5c3Y0LjMke09TX1JFTH0gJiYgZXhpdCAwCisJL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IC9iaW4vZ3JlcCBlbnRpdW0gPi9kZXYvbnVsbCBcCisJICAmJiBlY2hvIGk1ODYtbmNyLXN5c3Y0LjMke09TX1JFTH0gJiYgZXhpdCAwIDs7CisgICAgM1szNF0/PzoqOjQuMDoqIHwgM1szNF0/PywqOio6NC4wOiopCisgICAgICAgIC9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCBncmVwIDg2ID4vZGV2L251bGwgXAorICAgICAgICAgICYmIGVjaG8gaTQ4Ni1uY3Itc3lzdjQgJiYgZXhpdCAwIDs7CisgICAgbTY4KjpMeW54T1M6Mi4qOiogfCBtNjgqOkx5bnhPUzozLjAqOiopCisJZWNobyBtNjhrLXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgMCA7OworICAgIG1jNjgwMzA6VU5JWF9TeXN0ZW1fVjo0Lio6KikKKwllY2hvIG02OGstYXRhcmktc3lzdjQKKwlleGl0IDAgOzsKKyAgICBUU1VOQU1JOkx5bnhPUzoyLio6KikKKwllY2hvIHNwYXJjLXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgMCA7OworICAgIHJzNjAwMDpMeW54T1M6Mi4qOiopCisJZWNobyByczYwMDAtdW5rbm93bi1seW54b3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCAwIDs7CisgICAgUG93ZXJQQzpMeW54T1M6Mi4qOiogfCBQb3dlclBDOkx5bnhPUzozLlswMV0qOiogfCBQb3dlclBDOkx5bnhPUzo0LjAqOiopCisJZWNobyBwb3dlcnBjLXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgMCA7OworICAgIFNNW0JFXVM6VU5JWF9TVjoqOiopCisJZWNobyBtaXBzLWRkZS1zeXN2JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgMCA7OworICAgIFJNKjpSZWxpYW50VU5JWC0qOio6KikKKwllY2hvIG1pcHMtc25pLXN5c3Y0CisJZXhpdCAwIDs7CisgICAgUk0qOlNJTklYLSo6KjoqKQorCWVjaG8gbWlwcy1zbmktc3lzdjQKKwlleGl0IDAgOzsKKyAgICAqOlNJTklYLSo6KjoqKQorCWlmIHVuYW1lIC1wIDI+L2Rldi9udWxsID4vZGV2L251bGwgOyB0aGVuCisJCVVOQU1FX01BQ0hJTkU9YCh1bmFtZSAtcCkgMj4vZGV2L251bGxgCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1zbmktc3lzdjQKKwllbHNlCisJCWVjaG8gbnMzMmstc25pLXN5c3YKKwlmaQorCWV4aXQgMCA7OworICAgIFBFTlRJVU06Kjo0LjAqOiopICMgVW5pc3lzIGBDbGVhclBhdGggSE1QIElYIDQwMDAnIFNWUjQvTVAgZWZmb3J0CisgICAgICAgICAgICAgICAgICAgICAgIyBzYXlzIDxSaWNoYXJkLk0uQmFydGVsQGNjTWFpbC5DZW5zdXMuR09WPgorICAgICAgICBlY2hvIGk1ODYtdW5pc3lzLXN5c3Y0CisgICAgICAgIGV4aXQgMCA7OworICAgICo6VU5JWF9TeXN0ZW1fVjo0KjpGVFgqKQorCSMgRnJvbSBHZXJhbGQgSGV3ZXMgPGhld2VzQG9wZW5tYXJrZXQuY29tPi4KKwkjIEhvdyBhYm91dCBkaWZmZXJlbnRpYXRpbmcgYmV0d2VlbiBzdHJhdHVzIGFyY2hpdGVjdHVyZXM/IC1kam0KKwllY2hvIGhwcGExLjEtc3RyYXR1cy1zeXN2NAorCWV4aXQgMCA7OworICAgICo6KjoqOkZUWCopCisJIyBGcm9tIHNlYW5mQHN3ZGMuc3RyYXR1cy5jb20uCisJZWNobyBpODYwLXN0cmF0dXMtc3lzdjQKKwlleGl0IDAgOzsKKyAgICBpKjg2OlZPUzoqOiopCisJIyBGcm9tIFBhdWwuR3JlZW5Ac3RyYXR1cy5jb20uCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXN0cmF0dXMtdm9zCisJZXhpdCAwIDs7CisgICAgKjpWT1M6KjoqKQorCSMgRnJvbSBQYXVsLkdyZWVuQHN0cmF0dXMuY29tLgorCWVjaG8gaHBwYTEuMS1zdHJhdHVzLXZvcworCWV4aXQgMCA7OworICAgIG1jNjgqOkEvVVg6KjoqKQorCWVjaG8gbTY4ay1hcHBsZS1hdXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCAwIDs7CisgICAgbmV3cyo6TkVXUy1PUzo2KjoqKQorCWVjaG8gbWlwcy1zb255LW5ld3NvczYKKwlleGl0IDAgOzsKKyAgICBSWzM0XTAwMDoqU3lzdGVtX1YqOio6KiB8IFI0MDAwOlVOSVhfU1lTVjoqOiogfCBSKjAwMDpVTklYX1NWOio6KikKKwlpZiBbIC1kIC91c3IvbmVjIF07IHRoZW4KKwkgICAgICAgIGVjaG8gbWlwcy1uZWMtc3lzdiR7VU5BTUVfUkVMRUFTRX0KKwllbHNlCisJICAgICAgICBlY2hvIG1pcHMtdW5rbm93bi1zeXN2JHtVTkFNRV9SRUxFQVNFfQorCWZpCisgICAgICAgIGV4aXQgMCA7OworICAgIEJlQm94OkJlT1M6KjoqKQkjIEJlT1MgcnVubmluZyBvbiBoYXJkd2FyZSBtYWRlIGJ5IEJlLCBQUEMgb25seS4KKwllY2hvIHBvd2VycGMtYmUtYmVvcworCWV4aXQgMCA7OworICAgIEJlTWFjOkJlT1M6KjoqKQkjIEJlT1MgcnVubmluZyBvbiBNYWMgb3IgTWFjIGNsb25lLCBQUEMgb25seS4KKwllY2hvIHBvd2VycGMtYXBwbGUtYmVvcworCWV4aXQgMCA7OworICAgIEJlUEM6QmVPUzoqOiopCSMgQmVPUyBydW5uaW5nIG9uIEludGVsIFBDIGNvbXBhdGlibGUuCisJZWNobyBpNTg2LXBjLWJlb3MKKwlleGl0IDAgOzsKKyAgICBTWC00OlNVUEVSLVVYOio6KikKKwllY2hvIHN4NC1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDAgOzsKKyAgICBTWC01OlNVUEVSLVVYOio6KikKKwllY2hvIHN4NS1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDAgOzsKKyAgICBTWC02OlNVUEVSLVVYOio6KikKKwllY2hvIHN4Ni1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDAgOzsKKyAgICBQb3dlcio6UmhhcHNvZHk6KjoqKQorCWVjaG8gcG93ZXJwYy1hcHBsZS1yaGFwc29keSR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDAgOzsKKyAgICAqOlJoYXBzb2R5Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tYXBwbGUtcmhhcHNvZHkke1VOQU1FX1JFTEVBU0V9CisJZXhpdCAwIDs7CisgICAgKjpEYXJ3aW46KjoqKQorCVVOQU1FX1BST0NFU1NPUj1gdW5hbWUgLXBgIHx8IFVOQU1FX1BST0NFU1NPUj11bmtub3duCisJY2FzZSAkVU5BTUVfUFJPQ0VTU09SIGluCisJICAgICo4NikgVU5BTUVfUFJPQ0VTU09SPWk2ODYgOzsKKwkgICAgdW5rbm93bikgVU5BTUVfUFJPQ0VTU09SPXBvd2VycGMgOzsKKwllc2FjCisJZWNobyAke1VOQU1FX1BST0NFU1NPUn0tYXBwbGUtZGFyd2luJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgMCA7OworICAgICo6cHJvY250byo6KjoqIHwgKjpRTlg6WzAxMjM0NTY3ODldKjoqKQorCVVOQU1FX1BST0NFU1NPUj1gdW5hbWUgLXBgCisJaWYgdGVzdCAiJFVOQU1FX1BST0NFU1NPUiIgPSAieDg2IjsgdGhlbgorCQlVTkFNRV9QUk9DRVNTT1I9aTM4NgorCQlVTkFNRV9NQUNISU5FPXBjCisJZmkKKwllY2hvICR7VU5BTUVfUFJPQ0VTU09SfS0ke1VOQU1FX01BQ0hJTkV9LW50by1xbngke1VOQU1FX1JFTEVBU0V9CisJZXhpdCAwIDs7CisgICAgKjpRTlg6Kjo0KikKKwllY2hvIGkzODYtcGMtcW54CisJZXhpdCAwIDs7CisgICAgTlNFLT86Tk9OU1RPUF9LRVJORUw6KjoqKQorCWVjaG8gbnNlLXRhbmRlbS1uc2ske1VOQU1FX1JFTEVBU0V9CisJZXhpdCAwIDs7CisgICAgTlNSLT86Tk9OU1RPUF9LRVJORUw6KjoqKQorCWVjaG8gbnNyLXRhbmRlbS1uc2ske1VOQU1FX1JFTEVBU0V9CisJZXhpdCAwIDs7CisgICAgKjpOb25TdG9wLVVYOio6KikKKwllY2hvIG1pcHMtY29tcGFxLW5vbnN0b3B1eAorCWV4aXQgMCA7OworICAgIEJTMjAwMDpQT1NJWCo6KjoqKQorCWVjaG8gYnMyMDAwLXNpZW1lbnMtc3lzdgorCWV4aXQgMCA7OworICAgIERTLyo6VU5JWF9TeXN0ZW1fVjoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LSR7VU5BTUVfU1lTVEVNfS0ke1VOQU1FX1JFTEVBU0V9CisJZXhpdCAwIDs7CisgICAgKjpQbGFuOToqOiopCisJIyAidW5hbWUgLW0iIGlzIG5vdCBjb25zaXN0ZW50LCBzbyB1c2UgJGNwdXR5cGUgaW5zdGVhZC4gMzg2CisJIyBpcyBjb252ZXJ0ZWQgdG8gaTM4NiBmb3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlciB4ODYKKwkjIG9wZXJhdGluZyBzeXN0ZW1zLgorCWlmIHRlc3QgIiRjcHV0eXBlIiA9ICIzODYiOyB0aGVuCisJICAgIFVOQU1FX01BQ0hJTkU9aTM4NgorCWVsc2UKKwkgICAgVU5BTUVfTUFDSElORT0iJGNwdXR5cGUiCisJZmkKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1wbGFuOQorCWV4aXQgMCA7OworICAgICo6VE9QUy0xMDoqOiopCisJZWNobyBwZHAxMC11bmtub3duLXRvcHMxMAorCWV4aXQgMCA7OworICAgICo6VEVORVg6KjoqKQorCWVjaG8gcGRwMTAtdW5rbm93bi10ZW5leAorCWV4aXQgMCA7OworICAgIEtTMTA6VE9QUy0yMDoqOiogfCBLTDEwOlRPUFMtMjA6KjoqIHwgVFlQRTQ6VE9QUy0yMDoqOiopCisJZWNobyBwZHAxMC1kZWMtdG9wczIwCisJZXhpdCAwIDs7CisgICAgWEtMLTE6VE9QUy0yMDoqOiogfCBUWVBFNTpUT1BTLTIwOio6KikKKwllY2hvIHBkcDEwLXhrbC10b3BzMjAKKwlleGl0IDAgOzsKKyAgICAqOlRPUFMtMjA6KjoqKQorCWVjaG8gcGRwMTAtdW5rbm93bi10b3BzMjAKKwlleGl0IDAgOzsKKyAgICAqOklUUzoqOiopCisJZWNobyBwZHAxMC11bmtub3duLWl0cworCWV4aXQgMCA7OworICAgIFNFSToqOio6U0VJVVgpCisgICAgICAgIGVjaG8gbWlwcy1zZWktc2VpdXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCAwIDs7CisgICAgKjpEcmFnb25GbHk6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWRyYWdvbmZseWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stKF0uKi8vJ2AKKwlleGl0IDAgOzsKKyAgICAqOipWTVM6KjoqKQorICAgIAlVTkFNRV9NQUNISU5FPWAodW5hbWUgLXApIDI+L2Rldi9udWxsYAorCWNhc2UgIiR7VU5BTUVfTUFDSElORX0iIGluCisJICAgIEEqKSBlY2hvIGFscGhhLWRlYy12bXMgJiYgZXhpdCAwIDs7CisJICAgIEkqKSBlY2hvIGlhNjQtZGVjLXZtcyAmJiBleGl0IDAgOzsKKwkgICAgViopIGVjaG8gdmF4LWRlYy12bXMgJiYgZXhpdCAwIDs7CisJZXNhYyA7OworICAgICo6WEVOSVg6KjpTeXNWKQorCWVjaG8gaTM4Ni1wYy14ZW5peAorCWV4aXQgMCA7OworZXNhYworCisjZWNobyAnKE5vIHVuYW1lIGNvbW1hbmQgb3IgdW5hbWUgb3V0cHV0IG5vdCByZWNvZ25pemVkLiknIDE+JjIKKyNlY2hvICIke1VOQU1FX01BQ0hJTkV9OiR7VU5BTUVfU1lTVEVNfToke1VOQU1FX1JFTEVBU0V9OiR7VU5BTUVfVkVSU0lPTn0iIDE+JjIKKworZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorY2F0ID4kZHVtbXkuYyA8PEVPRgorI2lmZGVmIF9TRVFVRU5UXworIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyMgaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KKyNlbmRpZgorbWFpbiAoKQoreworI2lmIGRlZmluZWQgKHNvbnkpCisjaWYgZGVmaW5lZCAoTUlQU0VCKQorICAvKiBCRkQgd2FudHMgImJzZCIgaW5zdGVhZCBvZiAibmV3c29zIi4gIFBlcmhhcHMgQkZEIHNob3VsZCBiZSBjaGFuZ2VkLAorICAgICBJIGRvbid0IGtub3cuLi4uICAqLworICBwcmludGYgKCJtaXBzLXNvbnktYnNkXG4iKTsgZXhpdCAoMCk7CisjZWxzZQorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorICBwcmludGYgKCJtNjhrLXNvbnktbmV3c29zJXNcbiIsCisjaWZkZWYgTkVXU09TNAorICAgICAgICAgICI0IgorI2Vsc2UKKwkgICIiCisjZW5kaWYKKyAgICAgICAgICk7IGV4aXQgKDApOworI2VuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQgKF9fYXJtKSAmJiBkZWZpbmVkIChfX2Fjb3JuKSAmJiBkZWZpbmVkIChfX3VuaXgpCisgIHByaW50ZiAoImFybS1hY29ybi1yaXNjaXgiKTsgZXhpdCAoMCk7CisjZW5kaWYKKworI2lmIGRlZmluZWQgKGhwMzAwKSAmJiAhZGVmaW5lZCAoaHB1eCkKKyAgcHJpbnRmICgibTY4ay1ocC1ic2RcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoTmVYVCkKKyNpZiAhZGVmaW5lZCAoX19BUkNISVRFQ1RVUkVfXykKKyNkZWZpbmUgX19BUkNISVRFQ1RVUkVfXyAibTY4ayIKKyNlbmRpZgorICBpbnQgdmVyc2lvbjsKKyAgdmVyc2lvbj1gKGhvc3RpbmZvIHwgc2VkIC1uICdzLy4qTmVYVCBNYWNoIFwoWzAtOV0qXCkuKi9cMS9wJykgMj4vZGV2L251bGxgOworICBpZiAodmVyc2lvbiA8IDQpCisgICAgcHJpbnRmICgiJXMtbmV4dC1uZXh0c3RlcCVkXG4iLCBfX0FSQ0hJVEVDVFVSRV9fLCB2ZXJzaW9uKTsKKyAgZWxzZQorICAgIHByaW50ZiAoIiVzLW5leHQtb3BlbnN0ZXAlZFxuIiwgX19BUkNISVRFQ1RVUkVfXywgdmVyc2lvbik7CisgIGV4aXQgKDApOworI2VuZGlmCisKKyNpZiBkZWZpbmVkIChNVUxUSU1BWCkgfHwgZGVmaW5lZCAobjE2KQorI2lmIGRlZmluZWQgKFVNQVhWKQorICBwcmludGYgKCJuczMyay1lbmNvcmUtc3lzdlxuIik7IGV4aXQgKDApOworI2Vsc2UKKyNpZiBkZWZpbmVkIChDTVUpCisgIHByaW50ZiAoIm5zMzJrLWVuY29yZS1tYWNoXG4iKTsgZXhpdCAoMCk7CisjZWxzZQorICBwcmludGYgKCJuczMyay1lbmNvcmUtYnNkXG4iKTsgZXhpdCAoMCk7CisjZW5kaWYKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkIChfXzM4NkJTRF9fKQorICBwcmludGYgKCJpMzg2LXBjLWJzZFxuIik7IGV4aXQgKDApOworI2VuZGlmCisKKyNpZiBkZWZpbmVkIChzZXF1ZW50KQorI2lmIGRlZmluZWQgKGkzODYpCisgIHByaW50ZiAoImkzODYtc2VxdWVudC1keW5peFxuIik7IGV4aXQgKDApOworI2VuZGlmCisjaWYgZGVmaW5lZCAobnMzMjAwMCkKKyAgcHJpbnRmICgibnMzMmstc2VxdWVudC1keW5peFxuIik7IGV4aXQgKDApOworI2VuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQgKF9TRVFVRU5UXykKKyAgICBzdHJ1Y3QgdXRzbmFtZSB1bjsKKworICAgIHVuYW1lKCZ1bik7CisKKyAgICBpZiAoc3RybmNtcCh1bi52ZXJzaW9uLCAiVjIiLCAyKSA9PSAwKSB7CisJcHJpbnRmICgiaTM4Ni1zZXF1ZW50LXB0eDJcbiIpOyBleGl0ICgwKTsKKyAgICB9CisgICAgaWYgKHN0cm5jbXAodW4udmVyc2lvbiwgIlYxIiwgMikgPT0gMCkgeyAvKiBYWFggaXMgVjEgY29ycmVjdD8gKi8KKwlwcmludGYgKCJpMzg2LXNlcXVlbnQtcHR4MVxuIik7IGV4aXQgKDApOworICAgIH0KKyAgICBwcmludGYgKCJpMzg2LXNlcXVlbnQtcHR4XG4iKTsgZXhpdCAoMCk7CisKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAodmF4KQorIyBpZiAhZGVmaW5lZCAodWx0cml4KQorIyAgaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjICBpZiBkZWZpbmVkIChCU0QpCisjICAgaWYgQlNEID09IDQzCisgICAgICBwcmludGYgKCJ2YXgtZGVjLWJzZDQuM1xuIik7IGV4aXQgKDApOworIyAgIGVsc2UKKyMgICAgaWYgQlNEID09IDE5OTAwNgorICAgICAgcHJpbnRmICgidmF4LWRlYy1ic2Q0LjNyZW5vXG4iKTsgZXhpdCAoMCk7CisjICAgIGVsc2UKKyAgICAgIHByaW50ZiAoInZheC1kZWMtYnNkXG4iKTsgZXhpdCAoMCk7CisjICAgIGVuZGlmCisjICAgZW5kaWYKKyMgIGVsc2UKKyAgICBwcmludGYgKCJ2YXgtZGVjLWJzZFxuIik7IGV4aXQgKDApOworIyAgZW5kaWYKKyMgZWxzZQorICAgIHByaW50ZiAoInZheC1kZWMtdWx0cml4XG4iKTsgZXhpdCAoMCk7CisjIGVuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQgKGFsbGlhbnQpICYmIGRlZmluZWQgKGk4NjApCisgIHByaW50ZiAoImk4NjAtYWxsaWFudC1ic2RcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorCisgIGV4aXQgKDEpOworfQorRU9GCisKKyRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jIDI+L2Rldi9udWxsICYmICRkdW1teSAmJiBleGl0IDAKKworIyBBcG9sbG9zIHB1dCB0aGUgc3lzdGVtIHR5cGUgaW4gdGhlIGVudmlyb25tZW50LgorCit0ZXN0IC1kIC91c3IvYXBvbGxvICYmIHsgZWNobyAke0lTUH0tYXBvbGxvLSR7U1lTVFlQRX07IGV4aXQgMDsgfQorCisjIENvbnZleCB2ZXJzaW9ucyB0aGF0IHByZWRhdGUgdW5hbWUgY2FuIHVzZSBnZXRzeXNpbmZvKDEpCisKK2lmIFsgLXggL3Vzci9jb252ZXgvZ2V0c3lzaW5mbyBdCit0aGVuCisgICAgY2FzZSBgZ2V0c3lzaW5mbyAtZiBjcHVfdHlwZWAgaW4KKyAgICBjMSopCisJZWNobyBjMS1jb252ZXgtYnNkCisJZXhpdCAwIDs7CisgICAgYzIqKQorCWlmIGdldHN5c2luZm8gLWYgc2NhbGFyX2FjYworCXRoZW4gZWNobyBjMzItY29udmV4LWJzZAorCWVsc2UgZWNobyBjMi1jb252ZXgtYnNkCisJZmkKKwlleGl0IDAgOzsKKyAgICBjMzQqKQorCWVjaG8gYzM0LWNvbnZleC1ic2QKKwlleGl0IDAgOzsKKyAgICBjMzgqKQorCWVjaG8gYzM4LWNvbnZleC1ic2QKKwlleGl0IDAgOzsKKyAgICBjNCopCisJZWNobyBjNC1jb252ZXgtYnNkCisJZXhpdCAwIDs7CisgICAgZXNhYworZmkKKworY2F0ID4mMiA8PEVPRgorJDA6IHVuYWJsZSB0byBndWVzcyBzeXN0ZW0gdHlwZQorCitUaGlzIHNjcmlwdCwgbGFzdCBtb2RpZmllZCAkdGltZXN0YW1wLCBoYXMgZmFpbGVkIHRvIHJlY29nbml6ZQordGhlIG9wZXJhdGluZyBzeXN0ZW0geW91IGFyZSB1c2luZy4gSXQgaXMgYWR2aXNlZCB0aGF0IHlvdQorZG93bmxvYWQgdGhlIG1vc3QgdXAgdG8gZGF0ZSB2ZXJzaW9uIG9mIHRoZSBjb25maWcgc2NyaXB0cyBmcm9tCisKKyAgaHR0cDovL3NhdmFubmFoLmdudS5vcmcvY2dpLWJpbi92aWV3Y3ZzLypjaGVja291dCovY29uZmlnL2NvbmZpZy9jb25maWcuZ3Vlc3MKK2FuZAorICBodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9jZ2ktYmluL3ZpZXdjdnMvKmNoZWNrb3V0Ki9jb25maWcvY29uZmlnL2NvbmZpZy5zdWIKKworSWYgdGhlIHZlcnNpb24geW91IHJ1biAoJDApIGlzIGFscmVhZHkgdXAgdG8gZGF0ZSwgcGxlYXNlCitzZW5kIHRoZSBmb2xsb3dpbmcgZGF0YSBhbmQgYW55IGluZm9ybWF0aW9uIHlvdSB0aGluayBtaWdodCBiZQorcGVydGluZW50IHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPiBpbiBvcmRlciB0byBwcm92aWRlIHRoZSBuZWVkZWQKK2luZm9ybWF0aW9uIHRvIGhhbmRsZSB5b3VyIHN5c3RlbS4KKworY29uZmlnLmd1ZXNzIHRpbWVzdGFtcCA9ICR0aW1lc3RhbXAKKwordW5hbWUgLW0gPSBgKHVuYW1lIC1tKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCit1bmFtZSAtciA9IGAodW5hbWUgLXIpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKK3VuYW1lIC1zID0gYCh1bmFtZSAtcykgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAordW5hbWUgLXYgPSBgKHVuYW1lIC12KSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCisKKy91c3IvYmluL3VuYW1lIC1wID0gYCgvdXNyL2Jpbi91bmFtZSAtcCkgMj4vZGV2L251bGxgCisvYmluL3VuYW1lIC1YICAgICA9IGAoL2Jpbi91bmFtZSAtWCkgMj4vZGV2L251bGxgCisKK2hvc3RpbmZvICAgICAgICAgICAgICAgPSBgKGhvc3RpbmZvKSAyPi9kZXYvbnVsbGAKKy9iaW4vdW5pdmVyc2UgICAgICAgICAgPSBgKC9iaW4vdW5pdmVyc2UpIDI+L2Rldi9udWxsYAorL3Vzci9iaW4vYXJjaCAtayAgICAgICA9IGAoL3Vzci9iaW4vYXJjaCAtaykgMj4vZGV2L251bGxgCisvYmluL2FyY2ggICAgICAgICAgICAgID0gYCgvYmluL2FyY2gpIDI+L2Rldi9udWxsYAorL3Vzci9iaW4vb3NsZXZlbCAgICAgICA9IGAoL3Vzci9iaW4vb3NsZXZlbCkgMj4vZGV2L251bGxgCisvdXNyL2NvbnZleC9nZXRzeXNpbmZvID0gYCgvdXNyL2NvbnZleC9nZXRzeXNpbmZvKSAyPi9kZXYvbnVsbGAKKworVU5BTUVfTUFDSElORSA9ICR7VU5BTUVfTUFDSElORX0KK1VOQU1FX1JFTEVBU0UgPSAke1VOQU1FX1JFTEVBU0V9CitVTkFNRV9TWVNURU0gID0gJHtVTkFNRV9TWVNURU19CitVTkFNRV9WRVJTSU9OID0gJHtVTkFNRV9WRVJTSU9OfQorRU9GCisKK2V4aXQgMQorCisjIExvY2FsIHZhcmlhYmxlczoKKyMgZXZhbDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0YW1wKQorIyB0aW1lLXN0YW1wLXN0YXJ0OiAidGltZXN0YW1wPSciCisjIHRpbWUtc3RhbXAtZm9ybWF0OiAiJTp5LSUwMm0tJTAyZCIKKyMgdGltZS1zdGFtcC1lbmQ6ICInIgorIyBFbmQ6CmRpZmYgLS1naXQgYS9jL2NvbmZpZy9jb25maWcuc3ViIGIvYy9jb25maWcvY29uZmlnLnN1YgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44N2ExZWU0Ci0tLSAvZGV2L251bGwKKysrIGIvYy9jb25maWcvY29uZmlnLnN1YgpAQCAtMCwwICsxLDE1NjkgQEAKKyMhIC9iaW4vc2gKKyMgQ29uZmlndXJhdGlvbiB2YWxpZGF0aW9uIHN1YnJvdXRpbmUgc2NyaXB0LgorIyAgIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwKKyMgICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCit0aW1lc3RhbXA9JzIwMDUtMDQtMjInCisKKyMgVGhpcyBmaWxlIGlzIChpbiBwcmluY2lwbGUpIGNvbW1vbiB0byBBTEwgR05VIHNvZnR3YXJlLgorIyBUaGUgcHJlc2VuY2Ugb2YgYSBtYWNoaW5lIGluIHRoaXMgZmlsZSBzdWdnZXN0cyB0aGF0IFNPTUUgR05VIHNvZnR3YXJlCisjIGNhbiBoYW5kbGUgdGhhdCBtYWNoaW5lLiAgSXQgZG9lcyBub3QgaW1wbHkgQUxMIEdOVSBzb2Z0d2FyZSBjYW4uCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyMgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisKKyMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQorIyBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKKyMgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUgaXQgdW5kZXIKKyMgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIHRoYXQgeW91IHVzZSBmb3IgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgorCisjIFBsZWFzZSBzZW5kIHBhdGNoZXMgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+LiAgU3VibWl0IGEgY29udGV4dAorIyBkaWZmIGFuZCBhIHByb3Blcmx5IGZvcm1hdHRlZCBDaGFuZ2VMb2cgZW50cnkuCisjCisjIENvbmZpZ3VyYXRpb24gc3Vicm91dGluZSB0byB2YWxpZGF0ZSBhbmQgY2Fub25pY2FsaXplIGEgY29uZmlndXJhdGlvbiB0eXBlLgorIyBTdXBwbHkgdGhlIHNwZWNpZmllZCBjb25maWd1cmF0aW9uIHR5cGUgYXMgYW4gYXJndW1lbnQuCisjIElmIGl0IGlzIGludmFsaWQsIHdlIHByaW50IGFuIGVycm9yIG1lc3NhZ2Ugb24gc3RkZXJyIGFuZCBleGl0IHdpdGggY29kZSAxLgorIyBPdGhlcndpc2UsIHdlIHByaW50IHRoZSBjYW5vbmljYWwgY29uZmlnIHR5cGUgb24gc3Rkb3V0IGFuZCBzdWNjZWVkLgorCisjIFRoaXMgZmlsZSBpcyBzdXBwb3NlZCB0byBiZSB0aGUgc2FtZSBmb3IgYWxsIEdOVSBwYWNrYWdlcworIyBhbmQgcmVjb2duaXplIGFsbCB0aGUgQ1BVIHR5cGVzLCBzeXN0ZW0gdHlwZXMgYW5kIGFsaWFzZXMKKyMgdGhhdCBhcmUgbWVhbmluZ2Z1bCB3aXRoICphbnkqIEdOVSBzb2Z0d2FyZS4KKyMgRWFjaCBwYWNrYWdlIGlzIHJlc3BvbnNpYmxlIGZvciByZXBvcnRpbmcgd2hpY2ggdmFsaWQgY29uZmlndXJhdGlvbnMKKyMgaXQgZG9lcyBub3Qgc3VwcG9ydC4gIFRoZSB1c2VyIHNob3VsZCBiZSBhYmxlIHRvIGRpc3Rpbmd1aXNoCisjIGEgZmFpbHVyZSB0byBzdXBwb3J0IGEgdmFsaWQgY29uZmlndXJhdGlvbiBmcm9tIGEgbWVhbmluZ2xlc3MKKyMgY29uZmlndXJhdGlvbi4KKworIyBUaGUgZ29hbCBvZiB0aGlzIGZpbGUgaXMgdG8gbWFwIGFsbCB0aGUgdmFyaW91cyB2YXJpYXRpb25zIG9mIGEgZ2l2ZW4KKyMgbWFjaGluZSBzcGVjaWZpY2F0aW9uIGludG8gYSBzaW5nbGUgc3BlY2lmaWNhdGlvbiBpbiB0aGUgZm9ybToKKyMJQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLU9QRVJBVElOR19TWVNURU0KKyMgb3IgaW4gc29tZSBjYXNlcywgdGhlIG5ld2VyIGZvdXItcGFydCBmb3JtOgorIwlDUFVfVFlQRS1NQU5VRkFDVFVSRVItS0VSTkVMLU9QRVJBVElOR19TWVNURU0KKyMgSXQgaXMgd3JvbmcgdG8gZWNobyBhbnkgb3RoZXIgdHlwZSBvZiBzcGVjaWZpY2F0aW9uLgorCittZT1gZWNobyAiJDAiIHwgc2VkIC1lICdzLC4qLywsJ2AKKwordXNhZ2U9IlwKK1VzYWdlOiAkMCBbT1BUSU9OXSBDUFUtTUZSLU9QU1lTCisgICAgICAgJDAgW09QVElPTl0gQUxJQVMKKworQ2Fub25pY2FsaXplIGEgY29uZmlndXJhdGlvbiBuYW1lLgorCitPcGVyYXRpb24gbW9kZXM6CisgIC1oLCAtLWhlbHAgICAgICAgICBwcmludCB0aGlzIGhlbHAsIHRoZW4gZXhpdAorICAtdCwgLS10aW1lLXN0YW1wICAgcHJpbnQgZGF0ZSBvZiBsYXN0IG1vZGlmaWNhdGlvbiwgdGhlbiBleGl0CisgIC12LCAtLXZlcnNpb24gICAgICBwcmludCB2ZXJzaW9uIG51bWJlciwgdGhlbiBleGl0CisKK1JlcG9ydCBidWdzIGFuZCBwYXRjaGVzIHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPi4iCisKK3ZlcnNpb249IlwKK0dOVSBjb25maWcuc3ViICgkdGltZXN0YW1wKQorCitDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUKK0ZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCitUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTword2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIgorCitoZWxwPSIKK1RyeSBcYCRtZSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKworIyBQYXJzZSBjb21tYW5kIGxpbmUKK3doaWxlIHRlc3QgJCMgLWd0IDAgOyBkbworICBjYXNlICQxIGluCisgICAgLS10aW1lLXN0YW1wIHwgLS10aW1lKiB8IC10ICkKKyAgICAgICBlY2hvICIkdGltZXN0YW1wIiA7IGV4aXQgMCA7OworICAgIC0tdmVyc2lvbiB8IC12ICkKKyAgICAgICBlY2hvICIkdmVyc2lvbiIgOyBleGl0IDAgOzsKKyAgICAtLWhlbHAgfCAtLWgqIHwgLWggKQorICAgICAgIGVjaG8gIiR1c2FnZSI7IGV4aXQgMCA7OworICAgIC0tICkgICAgICMgU3RvcCBvcHRpb24gcHJvY2Vzc2luZworICAgICAgIHNoaWZ0OyBicmVhayA7OworICAgIC0gKQkjIFVzZSBzdGRpbiBhcyBpbnB1dC4KKyAgICAgICBicmVhayA7OworICAgIC0qICkKKyAgICAgICBlY2hvICIkbWU6IGludmFsaWQgb3B0aW9uICQxJGhlbHAiCisgICAgICAgZXhpdCAxIDs7CisKKyAgICAqbG9jYWwqKQorICAgICAgICMgRmlyc3QgcGFzcyB0aHJvdWdoIGFueSBsb2NhbCBtYWNoaW5lIHR5cGVzLgorICAgICAgIGVjaG8gJDEKKyAgICAgICBleGl0IDA7OworCisgICAgKiApCisgICAgICAgYnJlYWsgOzsKKyAgZXNhYworZG9uZQorCitjYXNlICQjIGluCisgMCkgZWNobyAiJG1lOiBtaXNzaW5nIGFyZ3VtZW50JGhlbHAiID4mMgorICAgIGV4aXQgMTs7CisgMSkgOzsKKyAqKSBlY2hvICIkbWU6IHRvbyBtYW55IGFyZ3VtZW50cyRoZWxwIiA+JjIKKyAgICBleGl0IDE7OworZXNhYworCisjIFNlcGFyYXRlIHdoYXQgdGhlIHVzZXIgZ2F2ZSBpbnRvIENQVS1DT01QQU5ZIGFuZCBPUyBvciBLRVJORUwtT1MgKGlmIGFueSkuCisjIEhlcmUgd2UgbXVzdCByZWNvZ25pemUgYWxsIHRoZSB2YWxpZCBLRVJORUwtT1MgY29tYmluYXRpb25zLgorbWF5YmVfb3M9YGVjaG8gJDEgfCBzZWQgJ3MvXlwoLipcKS1cKFteLV0qLVteLV0qXCkkL1wyLydgCitjYXNlICRtYXliZV9vcyBpbgorICBudG8tcW54KiB8IGxpbnV4LWdudSogfCBsaW51eC1kaWV0bGliYyB8IGxpbnV4LXVjbGliYyogfCB1Y2xpbnV4LXVjbGliYyogfCB1Y2xpbnV4LWdudSogfCBcCisgIGtmcmVlYnNkKi1nbnUqIHwga25ldGJzZCotZ251KiB8IG5ldGJzZCotZ251KiB8IHN0b3JtLWNoYW9zKiB8IG9zMi1lbXgqIHwgcnRtay1ub3ZhKikKKyAgICBvcz0tJG1heWJlX29zCisgICAgYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAncy9eXCguKlwpLVwoW14tXSotW14tXSpcKSQvXDEvJ2AKKyAgICA7OworICAqKQorICAgIGJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgJ3MvLVteLV0qJC8vJ2AKKyAgICBpZiBbICRiYXNpY19tYWNoaW5lICE9ICQxIF0KKyAgICB0aGVuIG9zPWBlY2hvICQxIHwgc2VkICdzLy4qLS8tLydgCisgICAgZWxzZSBvcz07IGZpCisgICAgOzsKK2VzYWMKKworIyMjIExldCdzIHJlY29nbml6ZSBjb21tb24gbWFjaGluZXMgYXMgbm90IGJlaW5nIG9wZXJhdGluZyBzeXN0ZW1zIHNvCisjIyMgdGhhdCB0aGluZ3MgbGlrZSBjb25maWcuc3ViIGRlY3N0YXRpb24tMzEwMCB3b3JrLiAgV2UgYWxzbworIyMjIHJlY29nbml6ZSBzb21lIG1hbnVmYWN0dXJlcnMgYXMgbm90IGJlaW5nIG9wZXJhdGluZyBzeXN0ZW1zLCBzbyB3ZQorIyMjIGNhbiBwcm92aWRlIGRlZmF1bHQgb3BlcmF0aW5nIHN5c3RlbXMgYmVsb3cuCitjYXNlICRvcyBpbgorCS1zdW4qb3MqKQorCQkjIFByZXZlbnQgZm9sbG93aW5nIGNsYXVzZSBmcm9tIGhhbmRsaW5nIHRoaXMgaW52YWxpZCBpbnB1dC4KKwkJOzsKKwktZGVjKiB8IC1taXBzKiB8IC1zZXF1ZW50KiB8IC1lbmNvcmUqIHwgLXBjNTMyKiB8IC1zZ2kqIHwgLXNvbnkqIHwgXAorCS1hdHQqIHwgLTczMDAqIHwgLTMzMDAqIHwgLWRlbHRhKiB8IC1tb3Rvcm9sYSogfCAtc3VuWzIzNF0qIHwgXAorCS11bmljb20qIHwgLWlibSogfCAtbmV4dCB8IC1ocCB8IC1pc2kqIHwgLWFwb2xsbyB8IC1hbHRvcyogfCBcCisJLWNvbnZlcmdlbnQqIHwgLW5jciogfCAtbmV3cyB8IC0zMiogfCAtMzYwMCogfCAtMzEwMCogfCAtaGl0YWNoaSogfFwKKwktY1sxMjNdKiB8IC1jb252ZXgqIHwgLXN1biB8IC1jcmRzIHwgLW9tcm9uKiB8IC1kZyB8IC11bHRyYSB8IC10dGkqIHwgXAorCS1oYXJyaXMgfCAtZG9scGhpbiB8IC1oaWdobGV2ZWwgfCAtZ291bGQgfCAtY2JtIHwgLW5zIHwgLW1hc3Njb21wIHwgXAorCS1hcHBsZSB8IC1heGlzIHwgLWtudXRoIHwgLWNyYXkpCisJCW9zPQorCQliYXNpY19tYWNoaW5lPSQxCisJCTs7CisJLXNpbSB8IC1jaXNjbyB8IC1va2kgfCAtd2VjIHwgLXdpbmJvbmQpCisJCW9zPQorCQliYXNpY19tYWNoaW5lPSQxCisJCTs7CisJLXNjb3V0KQorCQk7OworCS13cnMpCisJCW9zPS12eHdvcmtzCisJCWJhc2ljX21hY2hpbmU9JDEKKwkJOzsKKwktY2hvcnVzb3MqKQorCQlvcz0tY2hvcnVzb3MKKwkJYmFzaWNfbWFjaGluZT0kMQorCQk7OworIAktY2hvcnVzcmRiKQorIAkJb3M9LWNob3J1c3JkYgorCQliYXNpY19tYWNoaW5lPSQxCisgCQk7OworCS1oaXV4KikKKwkJb3M9LWhpdXh3ZTIKKwkJOzsKKwktc2NvNSkKKwkJb3M9LXNjbzMuMnY1CisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktc2NvNCkKKwkJb3M9LXNjbzMuMnY0CisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktc2NvMy4yLls0LTldKikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzL3NjbzMuMi4vc2NvMy4ydi8nYAorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLXNjbzMuMnZbNC05XSopCisJCSMgRG9uJ3QgZm9yZ2V0IHZlcnNpb24gaWYgaXQgaXMgMy4ydjQgb3IgbmV3ZXIuCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktc2NvKikKKwkJb3M9LXNjbzMuMnYyCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktdWRrKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1pc2MpCisJCW9zPS1pc2MyLjIKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1jbGl4KikKKwkJYmFzaWNfbWFjaGluZT1jbGlwcGVyLWludGVyZ3JhcGgKKwkJOzsKKwktaXNjKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1seW54KikKKwkJb3M9LWx5bnhvcworCQk7OworCS1wdHgqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXNlcXVlbnQvJ2AKKwkJOzsKKwktd2luZG93c250KikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzL3dpbmRvd3NudC93aW5udC8nYAorCQk7OworCS1wc29zKikKKwkJb3M9LXBzb3MKKwkJOzsKKwktbWludCB8IC1taW50WzAtOV0qKQorCQliYXNpY19tYWNoaW5lPW02OGstYXRhcmkKKwkJb3M9LW1pbnQKKwkJOzsKK2VzYWMKKworIyBEZWNvZGUgYWxpYXNlcyBmb3IgY2VydGFpbiBDUFUtQ09NUEFOWSBjb21iaW5hdGlvbnMuCitjYXNlICRiYXNpY19tYWNoaW5lIGluCisJIyBSZWNvZ25pemUgdGhlIGJhc2ljIENQVSB0eXBlcyB3aXRob3V0IGNvbXBhbnkgbmFtZS4KKwkjIFNvbWUgYXJlIG9taXR0ZWQgaGVyZSBiZWNhdXNlIHRoZXkgaGF2ZSBzcGVjaWFsIG1lYW5pbmdzIGJlbG93LgorCTE3NTBhIHwgNTgwIFwKKwl8IGEyOWsgXAorCXwgYWxwaGEgfCBhbHBoYWV2WzQtOF0gfCBhbHBoYWV2NTYgfCBhbHBoYWV2Nls3OF0gfCBhbHBoYXBjYTVbNjddIFwKKwl8IGFscGhhNjQgfCBhbHBoYTY0ZXZbNC04XSB8IGFscGhhNjRldjU2IHwgYWxwaGE2NGV2Nls3OF0gfCBhbHBoYTY0cGNhNVs2N10gXAorCXwgYW0zM18yLjAgXAorCXwgYXJjIHwgYXJtIHwgYXJtW2JsXWUgfCBhcm1lW2xiXSB8IGFybXZbMjM0NV0gfCBhcm12WzM0NV1bbGJdIHwgYXZyIFwKKwl8IGJmaW4gXAorCXwgYzR4IHwgY2xpcHBlciBcCisJfCBkMTB2IHwgZDMwdiB8IGRseCB8IGRzcDE2eHggXAorCXwgZnIzMCB8IGZydiBcCisJfCBoODMwMCB8IGg4NTAwIHwgaHBwYSB8IGhwcGExLlswMV0gfCBocHBhMi4wIHwgaHBwYTIuMFtud10gfCBocHBhNjQgXAorCXwgaTM3MCB8IGk4NjAgfCBpOTYwIHwgaWE2NCBcCisJfCBpcDJrIHwgaXEyMDAwIFwKKwl8IG0zMnIgfCBtMzJybGUgfCBtNjgwMDAgfCBtNjhrIHwgbTg4ayB8IG1heHEgfCBtY29yZSBcCisJfCBtaXBzIHwgbWlwc2JlIHwgbWlwc2ViIHwgbWlwc2VsIHwgbWlwc2xlIFwKKwl8IG1pcHMxNiBcCisJfCBtaXBzNjQgfCBtaXBzNjRlbCBcCisJfCBtaXBzNjR2ciB8IG1pcHM2NHZyZWwgXAorCXwgbWlwczY0b3Jpb24gfCBtaXBzNjRvcmlvbmVsIFwKKwl8IG1pcHM2NHZyNDEwMCB8IG1pcHM2NHZyNDEwMGVsIFwKKwl8IG1pcHM2NHZyNDMwMCB8IG1pcHM2NHZyNDMwMGVsIFwKKwl8IG1pcHM2NHZyNTAwMCB8IG1pcHM2NHZyNTAwMGVsIFwKKwl8IG1pcHNpc2EzMiB8IG1pcHNpc2EzMmVsIFwKKwl8IG1pcHNpc2EzMnIyIHwgbWlwc2lzYTMycjJlbCBcCisJfCBtaXBzaXNhNjQgfCBtaXBzaXNhNjRlbCBcCisJfCBtaXBzaXNhNjRyMiB8IG1pcHNpc2E2NHIyZWwgXAorCXwgbWlwc2lzYTY0c2IxIHwgbWlwc2lzYTY0c2IxZWwgXAorCXwgbWlwc2lzYTY0c3I3MWsgfCBtaXBzaXNhNjRzcjcxa2VsIFwKKwl8IG1pcHN0eDM5IHwgbWlwc3R4MzllbCBcCisJfCBtbjEwMjAwIHwgbW4xMDMwMCBcCisJfCBtc3A0MzAgXAorCXwgbnMxNmsgfCBuczMyayBcCisJfCBvcGVucmlzYyB8IG9yMzIgXAorCXwgcGRwMTAgfCBwZHAxMSB8IHBqIHwgcGpsIFwKKwl8IHBvd2VycGMgfCBwb3dlcnBjNjQgfCBwb3dlcnBjNjRsZSB8IHBvd2VycGNsZSB8IHBwY2JlIFwKKwl8IHB5cmFtaWQgXAorCXwgc2ggfCBzaFsxMjM0XSB8IHNoWzIzXWUgfCBzaFszNF1lYiB8IHNoYmUgfCBzaGxlIHwgc2hbMTIzNF1sZSB8IHNoM2VsZSBcCisJfCBzaDY0IHwgc2g2NGxlIFwKKwl8IHNwYXJjIHwgc3BhcmM2NCB8IHNwYXJjNjRiIHwgc3BhcmM4NnggfCBzcGFyY2xldCB8IHNwYXJjbGl0ZSBcCisJfCBzcGFyY3Y4IHwgc3BhcmN2OSB8IHNwYXJjdjliIFwKKwl8IHN0cm9uZ2FybSBcCisJfCB0YWhvZSB8IHRodW1iIHwgdGljNHggfCB0aWM4MCB8IHRyb24gXAorCXwgdjg1MCB8IHY4NTBlIFwKKwl8IHdlMzJrIFwKKwl8IHg4NiB8IHhzY2FsZSB8IHhzY2FsZWVbYmxdIHwgeHN0b3JteTE2IHwgeHRlbnNhIFwKKwl8IHo4aykKKwkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCisJCTs7CisJbTY4MTEgfCBtNjhoYzExIHwgbTY4MTIgfCBtNjhoYzEyKQorCQkjIE1vdG9yb2xhIDY4SEMxMS8xMi4KKwkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCisJCW9zPS1ub25lCisJCTs7CisJbTg4MTEwIHwgbTY4MFsxMjM0Nl0wIHwgbTY4Mz8yIHwgbTY4MzYwIHwgbTUyMDAgfCB2NzAgfCB3NjUgfCB6OGspCisJCTs7CisKKwkjIFdlIHVzZSBgcGMnIHJhdGhlciB0aGFuIGB1bmtub3duJworCSMgYmVjYXVzZSAoMSkgdGhhdCdzIHdoYXQgdGhleSBub3JtYWxseSBhcmUsIGFuZAorCSMgKDIpIHRoZSB3b3JkICJ1bmtub3duIiB0ZW5kcyB0byBjb25mdXNlIGJlZ2lubmluZyB1c2Vycy4KKwlpKjg2IHwgeDg2XzY0KQorCSAgYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS1wYworCSAgOzsKKwkjIE9iamVjdCBpZiBtb3JlIHRoYW4gb25lIGNvbXBhbnkgbmFtZSB3b3JkLgorCSotKi0qKQorCQllY2hvIEludmFsaWQgY29uZmlndXJhdGlvbiBcYCQxXCc6IG1hY2hpbmUgXGAkYmFzaWNfbWFjaGluZVwnIG5vdCByZWNvZ25pemVkIDE+JjIKKwkJZXhpdCAxCisJCTs7CisJIyBSZWNvZ25pemUgdGhlIGJhc2ljIENQVSB0eXBlcyB3aXRoIGNvbXBhbnkgbmFtZS4KKwk1ODAtKiBcCisJfCBhMjlrLSogXAorCXwgYWxwaGEtKiB8IGFscGhhZXZbNC04XS0qIHwgYWxwaGFldjU2LSogfCBhbHBoYWV2Nls3OF0tKiBcCisJfCBhbHBoYTY0LSogfCBhbHBoYTY0ZXZbNC04XS0qIHwgYWxwaGE2NGV2NTYtKiB8IGFscGhhNjRldjZbNzhdLSogXAorCXwgYWxwaGFwY2E1WzY3XS0qIHwgYWxwaGE2NHBjYTVbNjddLSogfCBhcmMtKiBcCisJfCBhcm0tKiAgfCBhcm1iZS0qIHwgYXJtbGUtKiB8IGFybWViLSogfCBhcm12Ki0qIFwKKwl8IGF2ci0qIFwKKwl8IGJmaW4tKiB8IGJzMjAwMC0qIFwKKwl8IGNbMTIzXSogfCBjMzAtKiB8IFtjanRdOTAtKiB8IGM0eC0qIHwgYzU0eC0qIHwgYzU1eC0qIHwgYzZ4LSogXAorCXwgY2xpcHBlci0qIHwgY3JheW52LSogfCBjeWRyYS0qIFwKKwl8IGQxMHYtKiB8IGQzMHYtKiB8IGRseC0qIFwKKwl8IGVseHNpLSogXAorCXwgZjMwWzAxXS0qIHwgZjcwMC0qIHwgZnIzMC0qIHwgZnJ2LSogfCBmeDgwLSogXAorCXwgaDgzMDAtKiB8IGg4NTAwLSogXAorCXwgaHBwYS0qIHwgaHBwYTEuWzAxXS0qIHwgaHBwYTIuMC0qIHwgaHBwYTIuMFtud10tKiB8IGhwcGE2NC0qIFwKKwl8IGkqODYtKiB8IGk4NjAtKiB8IGk5NjAtKiB8IGlhNjQtKiBcCisJfCBpcDJrLSogfCBpcTIwMDAtKiBcCisJfCBtMzJyLSogfCBtMzJybGUtKiBcCisJfCBtNjgwMDAtKiB8IG02ODBbMDEyMzQ2XTAtKiB8IG02ODM2MC0qIHwgbTY4Mz8yLSogfCBtNjhrLSogXAorCXwgbTg4MTEwLSogfCBtODhrLSogfCBtYXhxLSogfCBtY29yZS0qIFwKKwl8IG1pcHMtKiB8IG1pcHNiZS0qIHwgbWlwc2ViLSogfCBtaXBzZWwtKiB8IG1pcHNsZS0qIFwKKwl8IG1pcHMxNi0qIFwKKwl8IG1pcHM2NC0qIHwgbWlwczY0ZWwtKiBcCisJfCBtaXBzNjR2ci0qIHwgbWlwczY0dnJlbC0qIFwKKwl8IG1pcHM2NG9yaW9uLSogfCBtaXBzNjRvcmlvbmVsLSogXAorCXwgbWlwczY0dnI0MTAwLSogfCBtaXBzNjR2cjQxMDBlbC0qIFwKKwl8IG1pcHM2NHZyNDMwMC0qIHwgbWlwczY0dnI0MzAwZWwtKiBcCisJfCBtaXBzNjR2cjUwMDAtKiB8IG1pcHM2NHZyNTAwMGVsLSogXAorCXwgbWlwc2lzYTMyLSogfCBtaXBzaXNhMzJlbC0qIFwKKwl8IG1pcHNpc2EzMnIyLSogfCBtaXBzaXNhMzJyMmVsLSogXAorCXwgbWlwc2lzYTY0LSogfCBtaXBzaXNhNjRlbC0qIFwKKwl8IG1pcHNpc2E2NHIyLSogfCBtaXBzaXNhNjRyMmVsLSogXAorCXwgbWlwc2lzYTY0c2IxLSogfCBtaXBzaXNhNjRzYjFlbC0qIFwKKwl8IG1pcHNpc2E2NHNyNzFrLSogfCBtaXBzaXNhNjRzcjcxa2VsLSogXAorCXwgbWlwc3R4MzktKiB8IG1pcHN0eDM5ZWwtKiBcCisJfCBtbWl4LSogXAorCXwgbXNwNDMwLSogXAorCXwgbm9uZS0qIHwgbnAxLSogfCBuczE2ay0qIHwgbnMzMmstKiBcCisJfCBvcmlvbi0qIFwKKwl8IHBkcDEwLSogfCBwZHAxMS0qIHwgcGotKiB8IHBqbC0qIHwgcG4tKiB8IHBvd2VyLSogXAorCXwgcG93ZXJwYy0qIHwgcG93ZXJwYzY0LSogfCBwb3dlcnBjNjRsZS0qIHwgcG93ZXJwY2xlLSogfCBwcGNiZS0qIFwKKwl8IHB5cmFtaWQtKiBcCisJfCByb21wLSogfCByczYwMDAtKiBcCisJfCBzaC0qIHwgc2hbMTIzNF0tKiB8IHNoWzIzXWUtKiB8IHNoWzM0XWViLSogfCBzaGJlLSogXAorCXwgc2hsZS0qIHwgc2hbMTIzNF1sZS0qIHwgc2gzZWxlLSogfCBzaDY0LSogfCBzaDY0bGUtKiBcCisJfCBzcGFyYy0qIHwgc3BhcmM2NC0qIHwgc3BhcmM2NGItKiB8IHNwYXJjODZ4LSogfCBzcGFyY2xldC0qIFwKKwl8IHNwYXJjbGl0ZS0qIFwKKwl8IHNwYXJjdjgtKiB8IHNwYXJjdjktKiB8IHNwYXJjdjliLSogfCBzdHJvbmdhcm0tKiB8IHN2MS0qIHwgc3g/LSogXAorCXwgdGFob2UtKiB8IHRodW1iLSogXAorCXwgdGljMzAtKiB8IHRpYzR4LSogfCB0aWM1NHgtKiB8IHRpYzU1eC0qIHwgdGljNngtKiB8IHRpYzgwLSogXAorCXwgdHJvbi0qIFwKKwl8IHY4NTAtKiB8IHY4NTBlLSogfCB2YXgtKiBcCisJfCB3ZTMyay0qIFwKKwl8IHg4Ni0qIHwgeDg2XzY0LSogfCB4cHMxMDAtKiB8IHhzY2FsZS0qIHwgeHNjYWxlZVtibF0tKiBcCisJfCB4c3Rvcm15MTYtKiB8IHh0ZW5zYS0qIFwKKwl8IHltcC0qIFwKKwl8IHo4ay0qKQorCQk7OworCSMgUmVjb2duaXplIHRoZSB2YXJpb3VzIG1hY2hpbmUgbmFtZXMgYW5kIGFsaWFzZXMgd2hpY2ggc3RhbmQKKwkjIGZvciBhIENQVSB0eXBlIGFuZCBhIGNvbXBhbnkgYW5kIHNvbWV0aW1lcyBldmVuIGFuIE9TLgorCTM4NmJzZCkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXVua25vd24KKwkJb3M9LWJzZAorCQk7OworCTNiMSB8IDczMDAgfCA3MzAwLWF0dCB8IGF0dC03MzAwIHwgcGM3MzAwIHwgc2FmYXJpIHwgdW5peHBjKQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1hdHQKKwkJOzsKKwkzYiopCisJCWJhc2ljX21hY2hpbmU9d2UzMmstYXR0CisJCTs7CisJYTI5a2hpZikKKwkJYmFzaWNfbWFjaGluZT1hMjlrLWFtZAorCQlvcz0tdWRpCisJCTs7CisgICAgCWFiYWN1cykKKwkJYmFzaWNfbWFjaGluZT1hYmFjdXMtdW5rbm93bgorCQk7OworCWFkb2JlNjhrKQorCQliYXNpY19tYWNoaW5lPW02ODAxMC1hZG9iZQorCQlvcz0tc2NvdXQKKwkJOzsKKwlhbGxpYW50IHwgZng4MCkKKwkJYmFzaWNfbWFjaGluZT1meDgwLWFsbGlhbnQKKwkJOzsKKwlhbHRvcyB8IGFsdG9zMzA2OCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWFsdG9zCisJCTs7CisJYW0yOWspCisJCWJhc2ljX21hY2hpbmU9YTI5ay1ub25lCisJCW9zPS1ic2QKKwkJOzsKKwlhbWQ2NCkKKwkJYmFzaWNfbWFjaGluZT14ODZfNjQtcGMKKwkJOzsKKwlhbWQ2NC0qKQorCQliYXNpY19tYWNoaW5lPXg4Nl82NC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCWFtZGFobCkKKwkJYmFzaWNfbWFjaGluZT01ODAtYW1kYWhsCisJCW9zPS1zeXN2CisJCTs7CisJYW1pZ2EgfCBhbWlnYS0qKQorCQliYXNpY19tYWNoaW5lPW02OGstdW5rbm93bgorCQk7OworCWFtaWdhb3MgfCBhbWlnYWRvcykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXVua25vd24KKwkJb3M9LWFtaWdhb3MKKwkJOzsKKwlhbWlnYXVuaXggfCBhbWl4KQorCQliYXNpY19tYWNoaW5lPW02OGstdW5rbm93bgorCQlvcz0tc3lzdjQKKwkJOzsKKwlhcG9sbG82OCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWFwb2xsbworCQlvcz0tc3lzdgorCQk7OworCWFwb2xsbzY4YnNkKQorCQliYXNpY19tYWNoaW5lPW02OGstYXBvbGxvCisJCW9zPS1ic2QKKwkJOzsKKwlhdXgpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hcHBsZQorCQlvcz0tYXV4CisJCTs7CisJYmFsYW5jZSkKKwkJYmFzaWNfbWFjaGluZT1uczMyay1zZXF1ZW50CisJCW9zPS1keW5peAorCQk7OworCWM5MCkKKwkJYmFzaWNfbWFjaGluZT1jOTAtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJY29udmV4LWMxKQorCQliYXNpY19tYWNoaW5lPWMxLWNvbnZleAorCQlvcz0tYnNkCisJCTs7CisJY29udmV4LWMyKQorCQliYXNpY19tYWNoaW5lPWMyLWNvbnZleAorCQlvcz0tYnNkCisJCTs7CisJY29udmV4LWMzMikKKwkJYmFzaWNfbWFjaGluZT1jMzItY29udmV4CisJCW9zPS1ic2QKKwkJOzsKKwljb252ZXgtYzM0KQorCQliYXNpY19tYWNoaW5lPWMzNC1jb252ZXgKKwkJb3M9LWJzZAorCQk7OworCWNvbnZleC1jMzgpCisJCWJhc2ljX21hY2hpbmU9YzM4LWNvbnZleAorCQlvcz0tYnNkCisJCTs7CisJY3JheSB8IGo5MCkKKwkJYmFzaWNfbWFjaGluZT1qOTAtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJY3JheW52KQorCQliYXNpY19tYWNoaW5lPWNyYXludi1jcmF5CisJCW9zPS11bmljb3NtcAorCQk7OworCWNyMTZjKQorCQliYXNpY19tYWNoaW5lPWNyMTZjLXVua25vd24KKwkJb3M9LWVsZgorCQk7OworCWNyZHMgfCB1bm9zKQorCQliYXNpY19tYWNoaW5lPW02OGstY3JkcworCQk7OworCWNyaXN2MzIgfCBjcmlzdjMyLSogfCBldHJheGZzKikKKwkJYmFzaWNfbWFjaGluZT1jcmlzdjMyLWF4aXMKKwkJOzsKKwljcmlzIHwgY3Jpcy0qIHwgZXRyYXgqKQorCQliYXNpY19tYWNoaW5lPWNyaXMtYXhpcworCQk7OworCWNyeCkKKwkJYmFzaWNfbWFjaGluZT1jcngtdW5rbm93bgorCQlvcz0tZWxmCisJCTs7CisJZGEzMCB8IGRhMzAtKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWRhMzAKKwkJOzsKKwlkZWNzdGF0aW9uIHwgZGVjc3RhdGlvbi0zMTAwIHwgcG1heCB8IHBtYXgtKiB8IHBtaW4gfCBkZWMzMTAwIHwgZGVjc3RhdG4pCisJCWJhc2ljX21hY2hpbmU9bWlwcy1kZWMKKwkJOzsKKwlkZWNzeXN0ZW0xMCogfCBkZWMxMCopCisJCWJhc2ljX21hY2hpbmU9cGRwMTAtZGVjCisJCW9zPS10b3BzMTAKKwkJOzsKKwlkZWNzeXN0ZW0yMCogfCBkZWMyMCopCisJCWJhc2ljX21hY2hpbmU9cGRwMTAtZGVjCisJCW9zPS10b3BzMjAKKwkJOzsKKwlkZWx0YSB8IDMzMDAgfCBtb3Rvcm9sYS0zMzAwIHwgbW90b3JvbGEtZGVsdGEgXAorCSAgICAgIHwgMzMwMC1tb3Rvcm9sYSB8IGRlbHRhLW1vdG9yb2xhKQorCQliYXNpY19tYWNoaW5lPW02OGstbW90b3JvbGEKKwkJOzsKKwlkZWx0YTg4KQorCQliYXNpY19tYWNoaW5lPW04OGstbW90b3JvbGEKKwkJb3M9LXN5c3YzCisJCTs7CisJZGpncHApCisJCWJhc2ljX21hY2hpbmU9aTU4Ni1wYworCQlvcz0tbXNkb3NkamdwcAorCQk7OworCWRweDIwIHwgZHB4MjAtKikKKwkJYmFzaWNfbWFjaGluZT1yczYwMDAtYnVsbAorCQlvcz0tYm9zeAorCQk7OworCWRweDIqIHwgZHB4MiotYnVsbCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWJ1bGwKKwkJb3M9LXN5c3YzCisJCTs7CisJZWJtb24yOWspCisJCWJhc2ljX21hY2hpbmU9YTI5ay1hbWQKKwkJb3M9LWVibW9uCisJCTs7CisJZWx4c2kpCisJCWJhc2ljX21hY2hpbmU9ZWx4c2ktZWx4c2kKKwkJb3M9LWJzZAorCQk7OworCWVuY29yZSB8IHVtYXggfCBtbWF4KQorCQliYXNpY19tYWNoaW5lPW5zMzJrLWVuY29yZQorCQk7OworCWVzMTgwMCB8IE9TRTY4ayB8IG9zZTY4ayB8IG9zZSB8IE9TRSkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWVyaWNzc29uCisJCW9zPS1vc2UKKwkJOzsKKwlmeDI4MDApCisJCWJhc2ljX21hY2hpbmU9aTg2MC1hbGxpYW50CisJCTs7CisJZ2VuaXgpCisJCWJhc2ljX21hY2hpbmU9bnMzMmstbnMKKwkJOzsKKwlnbWljcm8pCisJCWJhc2ljX21hY2hpbmU9dHJvbi1nbWljcm8KKwkJb3M9LXN5c3YKKwkJOzsKKwlnbzMyKQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LWdvMzIKKwkJOzsKKwloMzA1MHIqIHwgaGl1eCopCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1oaXRhY2hpCisJCW9zPS1oaXV4d2UyCisJCTs7CisJaDgzMDBobXMpCisJCWJhc2ljX21hY2hpbmU9aDgzMDAtaGl0YWNoaQorCQlvcz0taG1zCisJCTs7CisJaDgzMDB4cmF5KQorCQliYXNpY19tYWNoaW5lPWg4MzAwLWhpdGFjaGkKKwkJb3M9LXhyYXkKKwkJOzsKKwloODUwMGhtcykKKwkJYmFzaWNfbWFjaGluZT1oODUwMC1oaXRhY2hpCisJCW9zPS1obXMKKwkJOzsKKwloYXJyaXMpCisJCWJhc2ljX21hY2hpbmU9bTg4ay1oYXJyaXMKKwkJb3M9LXN5c3YzCisJCTs7CisJaHAzMDAtKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWhwCisJCTs7CisJaHAzMDBic2QpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1ocAorCQlvcz0tYnNkCisJCTs7CisJaHAzMDBocHV4KQorCQliYXNpY19tYWNoaW5lPW02OGstaHAKKwkJb3M9LWhwdXgKKwkJOzsKKwlocDNrOVswLTldWzAtOV0gfCBocDlbMC05XVswLTldKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjAtaHAKKwkJOzsKKwlocDlrMlswLTldWzAtOV0gfCBocDlrMzFbMC05XSkKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtaHAKKwkJOzsKKwlocDlrM1syLTldWzAtOV0pCisJCWJhc2ljX21hY2hpbmU9bTY4ay1ocAorCQk7OworCWhwOWs2WzAtOV1bMC05XSB8IGhwNlswLTldWzAtOV0pCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMC1ocAorCQk7OworCWhwOWs3WzAtNzldWzAtOV0gfCBocDdbMC03OV1bMC05XSkKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCTs7CisJaHA5azc4WzAtOV0gfCBocDc4WzAtOV0pCisJCSMgRklYTUU6IHJlYWxseSBocHBhMi4wLWhwCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1ocAorCQk7OworCWhwOWs4WzY3XTEgfCBocDhbNjddMSB8IGhwOWs4MFsyNF0gfCBocDgwWzI0XSB8IGhwOWs4Wzc4XTkgfCBocDhbNzhdOSB8IGhwOWs4OTMgfCBocDg5MykKKwkJIyBGSVhNRTogcmVhbGx5IGhwcGEyLjAtaHAKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCTs7CisJaHA5azhbMC05XVsxMzY3OV0gfCBocDhbMC05XVsxMzY3OV0pCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1ocAorCQk7OworCWhwOWs4WzAtOV1bMC05XSB8IGhwOFswLTldWzAtOV0pCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMC1ocAorCQk7OworCWhwcGEtbmV4dCkKKwkJb3M9LW5leHRzdGVwMworCQk7OworCWhwcGFvc2YpCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1ocAorCQlvcz0tb3NmCisJCTs7CisJaHBwcm8pCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1ocAorCQlvcz0tcHJvZWxmCisJCTs7CisJaTM3MC1pYm0qIHwgaWJtKikKKwkJYmFzaWNfbWFjaGluZT1pMzcwLWlibQorCQk7OworIyBJJ20gbm90IHN1cmUgd2hhdCAiU3lzdjMyIiBtZWFucy4gIFNob3VsZCB0aGlzIGJlIHN5c3YzLjI/CisJaSo4NnYzMikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni4qLzg2LXBjLydgCisJCW9zPS1zeXN2MzIKKwkJOzsKKwlpKjg2djQqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LiovODYtcGMvJ2AKKwkJb3M9LXN5c3Y0CisJCTs7CisJaSo4NnYpCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYuKi84Ni1wYy8nYAorCQlvcz0tc3lzdgorCQk7OworCWkqODZzb2wyKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LiovODYtcGMvJ2AKKwkJb3M9LXNvbGFyaXMyCisJCTs7CisJaTM4Nm1hY2gpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1tYWNoCisJCW9zPS1tYWNoCisJCTs7CisJaTM4Ni12c3RhIHwgdnN0YSkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXVua25vd24KKwkJb3M9LXZzdGEKKwkJOzsKKwlpcmlzIHwgaXJpczRkKQorCQliYXNpY19tYWNoaW5lPW1pcHMtc2dpCisJCWNhc2UgJG9zIGluCisJCSAgICAtaXJpeCopCisJCQk7OworCQkgICAgKikKKwkJCW9zPS1pcml4NAorCQkJOzsKKwkJZXNhYworCQk7OworCWlzaTY4IHwgaXNpKQorCQliYXNpY19tYWNoaW5lPW02OGstaXNpCisJCW9zPS1zeXN2CisJCTs7CisJbTg4ay1vbXJvbiopCisJCWJhc2ljX21hY2hpbmU9bTg4ay1vbXJvbgorCQk7OworCW1hZ251bSB8IG0zMjMwKQorCQliYXNpY19tYWNoaW5lPW1pcHMtbWlwcworCQlvcz0tc3lzdgorCQk7OworCW1lcmxpbikKKwkJYmFzaWNfbWFjaGluZT1uczMyay11dGVrCisJCW9zPS1zeXN2CisJCTs7CisJbWluZ3czMikKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCW9zPS1taW5ndzMyCisJCTs7CisJbWluaWZyYW1lKQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1jb252ZXJnZW50CisJCTs7CisJKm1pbnQgfCAtbWludFswLTldKiB8ICpNaU5UIHwgKk1pTlRbMC05XSopCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hdGFyaQorCQlvcz0tbWludAorCQk7OworCW1pcHMzKi0qKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkIC1lICdzL21pcHMzL21pcHM2NC8nYAorCQk7OworCW1pcHMzKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAtZSAncy9taXBzMy9taXBzNjQvJ2AtdW5rbm93bgorCQk7OworCW1vbml0b3IpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1yb202OGsKKwkJb3M9LWNvZmYKKwkJOzsKKwltb3JwaG9zKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGMtdW5rbm93bgorCQlvcz0tbW9ycGhvcworCQk7OworCW1zZG9zKQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LW1zZG9zCisJCTs7CisJbXZzKQorCQliYXNpY19tYWNoaW5lPWkzNzAtaWJtCisJCW9zPS1tdnMKKwkJOzsKKwluY3IzMDAwKQorCQliYXNpY19tYWNoaW5lPWk0ODYtbmNyCisJCW9zPS1zeXN2NAorCQk7OworCW5ldGJzZDM4NikKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXVua25vd24KKwkJb3M9LW5ldGJzZAorCQk7OworCW5ldHdpbmRlcikKKwkJYmFzaWNfbWFjaGluZT1hcm12NGwtcmViZWwKKwkJb3M9LWxpbnV4CisJCTs7CisJbmV3cyB8IG5ld3M3MDAgfCBuZXdzODAwIHwgbmV3czkwMCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXNvbnkKKwkJb3M9LW5ld3NvcworCQk7OworCW5ld3MxMDAwKQorCQliYXNpY19tYWNoaW5lPW02ODAzMC1zb255CisJCW9zPS1uZXdzb3MKKwkJOzsKKwluZXdzLTM2MDAgfCByaXNjLW5ld3MpCisJCWJhc2ljX21hY2hpbmU9bWlwcy1zb255CisJCW9zPS1uZXdzb3MKKwkJOzsKKwluZWN2NzApCisJCWJhc2ljX21hY2hpbmU9djcwLW5lYworCQlvcz0tc3lzdgorCQk7OworCW5leHQgfCBtKi1uZXh0ICkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLW5leHQKKwkJY2FzZSAkb3MgaW4KKwkJICAgIC1uZXh0c3RlcCogKQorCQkJOzsKKwkJICAgIC1uczIqKQorCQkgICAgICBvcz0tbmV4dHN0ZXAyCisJCQk7OworCQkgICAgKikKKwkJICAgICAgb3M9LW5leHRzdGVwMworCQkJOzsKKwkJZXNhYworCQk7OworCW5oMzAwMCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWhhcnJpcworCQlvcz0tY3h1eAorCQk7OworCW5oWzQ1XTAwMCkKKwkJYmFzaWNfbWFjaGluZT1tODhrLWhhcnJpcworCQlvcz0tY3h1eAorCQk7OworCW5pbmR5OTYwKQorCQliYXNpY19tYWNoaW5lPWk5NjAtaW50ZWwKKwkJb3M9LW5pbmR5CisJCTs7CisJbW9uOTYwKQorCQliYXNpY19tYWNoaW5lPWk5NjAtaW50ZWwKKwkJb3M9LW1vbjk2MAorCQk7OworCW5vbnN0b3B1eCkKKwkJYmFzaWNfbWFjaGluZT1taXBzLWNvbXBhcQorCQlvcz0tbm9uc3RvcHV4CisJCTs7CisJbnAxKQorCQliYXNpY19tYWNoaW5lPW5wMS1nb3VsZAorCQk7OworCW5zci10YW5kZW0pCisJCWJhc2ljX21hY2hpbmU9bnNyLXRhbmRlbQorCQk7OworCW9wNTBuLSogfCBvcDYwYy0qKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtb2tpCisJCW9zPS1wcm9lbGYKKwkJOzsKKwlvcjMyIHwgb3IzMi0qKQorCQliYXNpY19tYWNoaW5lPW9yMzItdW5rbm93bgorCQlvcz0tY29mZgorCQk7OworCW9zNDAwKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGMtaWJtCisJCW9zPS1vczQwMAorCQk7OworCU9TRTY4MDAwIHwgb3NlNjgwMDApCisJCWJhc2ljX21hY2hpbmU9bTY4MDAwLWVyaWNzc29uCisJCW9zPS1vc2UKKwkJOzsKKwlvczY4aykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLW5vbmUKKwkJb3M9LW9zNjhrCisJCTs7CisJcGEtaGl0YWNoaSkKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhpdGFjaGkKKwkJb3M9LWhpdXh3ZTIKKwkJOzsKKwlwYXJhZ29uKQorCQliYXNpY19tYWNoaW5lPWk4NjAtaW50ZWwKKwkJb3M9LW9zZgorCQk7OworCXBiZCkKKwkJYmFzaWNfbWFjaGluZT1zcGFyYy10dGkKKwkJOzsKKwlwYmIpCisJCWJhc2ljX21hY2hpbmU9bTY4ay10dGkKKwkJOzsKKwlwYzUzMiB8IHBjNTMyLSopCisJCWJhc2ljX21hY2hpbmU9bnMzMmstcGM1MzIKKwkJOzsKKwlwZW50aXVtIHwgcDUgfCBrNSB8IGs2IHwgbmV4Z2VuIHwgdmlhYzMpCisJCWJhc2ljX21hY2hpbmU9aTU4Ni1wYworCQk7OworCXBlbnRpdW1wcm8gfCBwNiB8IDZ4ODYgfCBhdGhsb24gfCBhdGhsb25fKikKKwkJYmFzaWNfbWFjaGluZT1pNjg2LXBjCisJCTs7CisJcGVudGl1bWlpIHwgcGVudGl1bTIgfCBwZW50aXVtaWlpIHwgcGVudGl1bTMpCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1wYworCQk7OworCXBlbnRpdW00KQorCQliYXNpY19tYWNoaW5lPWk3ODYtcGMKKwkJOzsKKwlwZW50aXVtLSogfCBwNS0qIHwgazUtKiB8IGs2LSogfCBuZXhnZW4tKiB8IHZpYWMzLSopCisJCWJhc2ljX21hY2hpbmU9aTU4Ni1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBlbnRpdW1wcm8tKiB8IHA2LSogfCA2eDg2LSogfCBhdGhsb24tKikKKwkJYmFzaWNfbWFjaGluZT1pNjg2LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcGVudGl1bWlpLSogfCBwZW50aXVtMi0qIHwgcGVudGl1bWlpaS0qIHwgcGVudGl1bTMtKikKKwkJYmFzaWNfbWFjaGluZT1pNjg2LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcGVudGl1bTQtKikKKwkJYmFzaWNfbWFjaGluZT1pNzg2LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcG4pCisJCWJhc2ljX21hY2hpbmU9cG4tZ291bGQKKwkJOzsKKwlwb3dlcikJYmFzaWNfbWFjaGluZT1wb3dlci1pYm0KKwkJOzsKKwlwcGMpCWJhc2ljX21hY2hpbmU9cG93ZXJwYy11bmtub3duCisJCTs7CisJcHBjLSopCWJhc2ljX21hY2hpbmU9cG93ZXJwYy1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBwY2xlIHwgcG93ZXJwY2xpdHRsZSB8IHBwYy1sZSB8IHBvd2VycGMtbGl0dGxlKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGNsZS11bmtub3duCisJCTs7CisJcHBjbGUtKiB8IHBvd2VycGNsaXR0bGUtKikKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjbGUtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwcGM2NCkJYmFzaWNfbWFjaGluZT1wb3dlcnBjNjQtdW5rbm93bgorCQk7OworCXBwYzY0LSopIGJhc2ljX21hY2hpbmU9cG93ZXJwYzY0LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcHBjNjRsZSB8IHBvd2VycGM2NGxpdHRsZSB8IHBwYzY0LWxlIHwgcG93ZXJwYzY0LWxpdHRsZSkKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjNjRsZS11bmtub3duCisJCTs7CisJcHBjNjRsZS0qIHwgcG93ZXJwYzY0bGl0dGxlLSopCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwYzY0bGUtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwczIpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1pYm0KKwkJOzsKKwlwdzMyKQorCQliYXNpY19tYWNoaW5lPWk1ODYtdW5rbm93bgorCQlvcz0tcHczMgorCQk7OworCXJvbTY4aykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXJvbTY4aworCQlvcz0tY29mZgorCQk7OworCXJtWzQ2XTAwKQorCQliYXNpY19tYWNoaW5lPW1pcHMtc2llbWVucworCQk7OworCXJ0cGMgfCBydHBjLSopCisJCWJhc2ljX21hY2hpbmU9cm9tcC1pYm0KKwkJOzsKKwlzMzkwIHwgczM5MC0qKQorCQliYXNpY19tYWNoaW5lPXMzOTAtaWJtCisJCTs7CisJczM5MHggfCBzMzkweC0qKQorCQliYXNpY19tYWNoaW5lPXMzOTB4LWlibQorCQk7OworCXNhMjkyMDApCisJCWJhc2ljX21hY2hpbmU9YTI5ay1hbWQKKwkJb3M9LXVkaQorCQk7OworCXNiMSkKKwkJYmFzaWNfbWFjaGluZT1taXBzaXNhNjRzYjEtdW5rbm93bgorCQk7OworCXNiMWVsKQorCQliYXNpY19tYWNoaW5lPW1pcHNpc2E2NHNiMWVsLXVua25vd24KKwkJOzsKKwlzZWkpCisJCWJhc2ljX21hY2hpbmU9bWlwcy1zZWkKKwkJb3M9LXNlaXV4CisJCTs7CisJc2VxdWVudCkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXNlcXVlbnQKKwkJOzsKKwlzaCkKKwkJYmFzaWNfbWFjaGluZT1zaC1oaXRhY2hpCisJCW9zPS1obXMKKwkJOzsKKwlzaDY0KQorCQliYXNpY19tYWNoaW5lPXNoNjQtdW5rbm93bgorCQk7OworCXNwYXJjbGl0ZS13cnMgfCBzaW1zby13cnMpCisJCWJhc2ljX21hY2hpbmU9c3BhcmNsaXRlLXdycworCQlvcz0tdnh3b3JrcworCQk7OworCXNwczcpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1idWxsCisJCW9zPS1zeXN2MgorCQk7OworCXNwdXIpCisJCWJhc2ljX21hY2hpbmU9c3B1ci11bmtub3duCisJCTs7CisJc3QyMDAwKQorCQliYXNpY19tYWNoaW5lPW02OGstdGFuZGVtCisJCTs7CisJc3RyYXR1cykKKwkJYmFzaWNfbWFjaGluZT1pODYwLXN0cmF0dXMKKwkJb3M9LXN5c3Y0CisJCTs7CisJc3VuMikKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtc3VuCisJCTs7CisJc3VuMm9zMykKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtc3VuCisJCW9zPS1zdW5vczMKKwkJOzsKKwlzdW4yb3M0KQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1zdW4KKwkJb3M9LXN1bm9zNAorCQk7OworCXN1bjNvczMpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1zdW4KKwkJb3M9LXN1bm9zMworCQk7OworCXN1bjNvczQpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1zdW4KKwkJb3M9LXN1bm9zNAorCQk7OworCXN1bjRvczMpCisJCWJhc2ljX21hY2hpbmU9c3BhcmMtc3VuCisJCW9zPS1zdW5vczMKKwkJOzsKKwlzdW40b3M0KQorCQliYXNpY19tYWNoaW5lPXNwYXJjLXN1bgorCQlvcz0tc3Vub3M0CisJCTs7CisJc3VuNHNvbDIpCisJCWJhc2ljX21hY2hpbmU9c3BhcmMtc3VuCisJCW9zPS1zb2xhcmlzMgorCQk7OworCXN1bjMgfCBzdW4zLSopCisJCWJhc2ljX21hY2hpbmU9bTY4ay1zdW4KKwkJOzsKKwlzdW40KQorCQliYXNpY19tYWNoaW5lPXNwYXJjLXN1bgorCQk7OworCXN1bjM4NiB8IHN1bjM4NmkgfCByb2FkcnVubmVyKQorCQliYXNpY19tYWNoaW5lPWkzODYtc3VuCisJCTs7CisJc3YxKQorCQliYXNpY19tYWNoaW5lPXN2MS1jcmF5CisJCW9zPS11bmljb3MKKwkJOzsKKwlzeW1tZXRyeSkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXNlcXVlbnQKKwkJb3M9LWR5bml4CisJCTs7CisJdDNlKQorCQliYXNpY19tYWNoaW5lPWFscGhhZXY1LWNyYXkKKwkJb3M9LXVuaWNvcworCQk7OworCXQ5MCkKKwkJYmFzaWNfbWFjaGluZT10OTAtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJdGljNTR4IHwgYzU0eCopCisJCWJhc2ljX21hY2hpbmU9dGljNTR4LXVua25vd24KKwkJb3M9LWNvZmYKKwkJOzsKKwl0aWM1NXggfCBjNTV4KikKKwkJYmFzaWNfbWFjaGluZT10aWM1NXgtdW5rbm93bgorCQlvcz0tY29mZgorCQk7OworCXRpYzZ4IHwgYzZ4KikKKwkJYmFzaWNfbWFjaGluZT10aWM2eC11bmtub3duCisJCW9zPS1jb2ZmCisJCTs7CisJdHgzOSkKKwkJYmFzaWNfbWFjaGluZT1taXBzdHgzOS11bmtub3duCisJCTs7CisJdHgzOWVsKQorCQliYXNpY19tYWNoaW5lPW1pcHN0eDM5ZWwtdW5rbm93bgorCQk7OworCXRvYWQxKQorCQliYXNpY19tYWNoaW5lPXBkcDEwLXhrbAorCQlvcz0tdG9wczIwCisJCTs7CisJdG93ZXIgfCB0b3dlci0zMikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLW5jcgorCQk7OworCXRwZikKKwkJYmFzaWNfbWFjaGluZT1zMzkweC1pYm0KKwkJb3M9LXRwZgorCQk7OworCXVkaTI5aykKKwkJYmFzaWNfbWFjaGluZT1hMjlrLWFtZAorCQlvcz0tdWRpCisJCTs7CisJdWx0cmEzKQorCQliYXNpY19tYWNoaW5lPWEyOWstbnl1CisJCW9zPS1zeW0xCisJCTs7CisJdjgxMCB8IG5lY3Y4MTApCisJCWJhc2ljX21hY2hpbmU9djgxMC1uZWMKKwkJb3M9LW5vbmUKKwkJOzsKKwl2YXh2KQorCQliYXNpY19tYWNoaW5lPXZheC1kZWMKKwkJb3M9LXN5c3YKKwkJOzsKKwl2bXMpCisJCWJhc2ljX21hY2hpbmU9dmF4LWRlYworCQlvcz0tdm1zCisJCTs7CisJdnBwKnx2eHx2eC0qKQorCQliYXNpY19tYWNoaW5lPWYzMDEtZnVqaXRzdQorCQk7OworCXZ4d29ya3M5NjApCisJCWJhc2ljX21hY2hpbmU9aTk2MC13cnMKKwkJb3M9LXZ4d29ya3MKKwkJOzsKKwl2eHdvcmtzNjgpCisJCWJhc2ljX21hY2hpbmU9bTY4ay13cnMKKwkJb3M9LXZ4d29ya3MKKwkJOzsKKwl2eHdvcmtzMjlrKQorCQliYXNpY19tYWNoaW5lPWEyOWstd3JzCisJCW9zPS12eHdvcmtzCisJCTs7CisJdzY1KikKKwkJYmFzaWNfbWFjaGluZT13NjUtd2RjCisJCW9zPS1ub25lCisJCTs7CisJdzg5ay0qKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtd2luYm9uZAorCQlvcz0tcHJvZWxmCisJCTs7CisJeGJveCkKKwkJYmFzaWNfbWFjaGluZT1pNjg2LXBjCisJCW9zPS1taW5ndzMyCisJCTs7CisJeHBzIHwgeHBzMTAwKQorCQliYXNpY19tYWNoaW5lPXhwczEwMC1ob25leXdlbGwKKwkJOzsKKwl5bXApCisJCWJhc2ljX21hY2hpbmU9eW1wLWNyYXkKKwkJb3M9LXVuaWNvcworCQk7OworCXo4ay0qLWNvZmYpCisJCWJhc2ljX21hY2hpbmU9ejhrLXVua25vd24KKwkJb3M9LXNpbQorCQk7OworCW5vbmUpCisJCWJhc2ljX21hY2hpbmU9bm9uZS1ub25lCisJCW9zPS1ub25lCisJCTs7CisKKyMgSGVyZSB3ZSBoYW5kbGUgdGhlIGRlZmF1bHQgbWFudWZhY3R1cmVyIG9mIGNlcnRhaW4gQ1BVIHR5cGVzLiAgSXQgaXMgaW4KKyMgc29tZSBjYXNlcyB0aGUgb25seSBtYW51ZmFjdHVyZXIsIGluIG90aGVycywgaXQgaXMgdGhlIG1vc3QgcG9wdWxhci4KKwl3ODlrKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtd2luYm9uZAorCQk7OworCW9wNTBuKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtb2tpCisJCTs7CisJb3A2MGMpCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1va2kKKwkJOzsKKwlyb21wKQorCQliYXNpY19tYWNoaW5lPXJvbXAtaWJtCisJCTs7CisJbW1peCkKKwkJYmFzaWNfbWFjaGluZT1tbWl4LWtudXRoCisJCTs7CisJcnM2MDAwKQorCQliYXNpY19tYWNoaW5lPXJzNjAwMC1pYm0KKwkJOzsKKwl2YXgpCisJCWJhc2ljX21hY2hpbmU9dmF4LWRlYworCQk7OworCXBkcDEwKQorCQkjIHRoZXJlIGFyZSBtYW55IGNsb25lcywgc28gREVDIGlzIG5vdCBhIHNhZmUgYmV0CisJCWJhc2ljX21hY2hpbmU9cGRwMTAtdW5rbm93bgorCQk7OworCXBkcDExKQorCQliYXNpY19tYWNoaW5lPXBkcDExLWRlYworCQk7OworCXdlMzJrKQorCQliYXNpY19tYWNoaW5lPXdlMzJrLWF0dAorCQk7OworCXNoMyB8IHNoNCB8IHNoWzM0XWViIHwgc2hbMTIzNF1sZSB8IHNoWzIzXWVsZSkKKwkJYmFzaWNfbWFjaGluZT1zaC11bmtub3duCisJCTs7CisJc2g2NCkKKwkJYmFzaWNfbWFjaGluZT1zaDY0LXVua25vd24KKwkJOzsKKwlzcGFyYyB8IHNwYXJjdjggfCBzcGFyY3Y5IHwgc3BhcmN2OWIpCisJCWJhc2ljX21hY2hpbmU9c3BhcmMtc3VuCisJCTs7CisJY3lkcmEpCisJCWJhc2ljX21hY2hpbmU9Y3lkcmEtY3lkcm9tZQorCQk7OworCW9yaW9uKQorCQliYXNpY19tYWNoaW5lPW9yaW9uLWhpZ2hsZXZlbAorCQk7OworCW9yaW9uMTA1KQorCQliYXNpY19tYWNoaW5lPWNsaXBwZXItaGlnaGxldmVsCisJCTs7CisJbWFjIHwgbXB3IHwgbWFjLW1wdykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWFwcGxlCisJCTs7CisJcG1hYyB8IHBtYWMtbXB3KQorCQliYXNpY19tYWNoaW5lPXBvd2VycGMtYXBwbGUKKwkJOzsKKwkqLXVua25vd24pCisJCSMgTWFrZSBzdXJlIHRvIG1hdGNoIGFuIGFscmVhZHktY2Fub25pY2FsaXplZCBtYWNoaW5lIG5hbWUuCisJCTs7CisJKikKKwkJZWNobyBJbnZhbGlkIGNvbmZpZ3VyYXRpb24gXGAkMVwnOiBtYWNoaW5lIFxgJGJhc2ljX21hY2hpbmVcJyBub3QgcmVjb2duaXplZCAxPiYyCisJCWV4aXQgMQorCQk7OworZXNhYworCisjIEhlcmUgd2UgY2Fub25pY2FsaXplIGNlcnRhaW4gYWxpYXNlcyBmb3IgbWFudWZhY3R1cmVycy4KK2Nhc2UgJGJhc2ljX21hY2hpbmUgaW4KKwkqLWRpZ2l0YWwqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL2RpZ2l0YWwuKi9kZWMvJ2AKKwkJOzsKKwkqLWNvbW1vZG9yZSopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvY29tbW9kb3JlLiovY2JtLydgCisJCTs7CisJKikKKwkJOzsKK2VzYWMKKworIyBEZWNvZGUgbWFudWZhY3R1cmVyLXNwZWNpZmljIGFsaWFzZXMgZm9yIGNlcnRhaW4gb3BlcmF0aW5nIHN5c3RlbXMuCisKK2lmIFsgeCIkb3MiICE9IHgiIiBdCit0aGVuCitjYXNlICRvcyBpbgorICAgICAgICAjIEZpcnN0IG1hdGNoIHNvbWUgc3lzdGVtIHR5cGUgYWxpYXNlcworICAgICAgICAjIHRoYXQgbWlnaHQgZ2V0IGNvbmZ1c2VkIHdpdGggdmFsaWQgc3lzdGVtIHR5cGVzLgorCSMgLXNvbGFyaXMqIGlzIGEgYmFzaWMgc3lzdGVtIHR5cGUsIHdpdGggdGhpcyBvbmUgZXhjZXB0aW9uLgorCS1zb2xhcmlzMSB8IC1zb2xhcmlzMS4qKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8c29sYXJpczF8c3Vub3M0fCdgCisJCTs7CisJLXNvbGFyaXMpCisJCW9zPS1zb2xhcmlzMgorCQk7OworCS1zdnI0KikKKwkJb3M9LXN5c3Y0CisJCTs7CisJLXVuaXh3YXJlKikKKwkJb3M9LXN5c3Y0LjJ1dworCQk7OworCS1nbnUvbGludXgqKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8Z251L2xpbnV4fGxpbnV4LWdudXwnYAorCQk7OworCSMgRmlyc3QgYWNjZXB0IHRoZSBiYXNpYyBzeXN0ZW0gdHlwZXMuCisJIyBUaGUgcG9ydGFibGUgc3lzdGVtcyBjb21lcyBmaXJzdC4KKwkjIEVhY2ggYWx0ZXJuYXRpdmUgTVVTVCBFTkQgSU4gQSAqLCB0byBtYXRjaCBhIHZlcnNpb24gbnVtYmVyLgorCSMgLXN5c3YqIGlzIG5vdCBoZXJlIGJlY2F1c2UgaXQgY29tZXMgbGF0ZXIsIGFmdGVyIHN5c3ZyNC4KKwktZ251KiB8IC1ic2QqIHwgLW1hY2gqIHwgLW1pbml4KiB8IC1nZW5peCogfCAtdWx0cml4KiB8IC1pcml4KiBcCisJICAgICAgfCAtKnZtcyogfCAtc2NvKiB8IC1lc2l4KiB8IC1pc2MqIHwgLWFpeCogfCAtc3Vub3MgfCAtc3Vub3NbMzRdKlwKKwkgICAgICB8IC1ocHV4KiB8IC11bm9zKiB8IC1vc2YqIHwgLWx1bmEqIHwgLWRndXgqIHwgLXNvbGFyaXMqIHwgLXN5bSogXAorCSAgICAgIHwgLWFtaWdhb3MqIHwgLWFtaWdhZG9zKiB8IC1tc2RvcyogfCAtbmV3c29zKiB8IC11bmljb3MqIHwgLWFvZiogXAorCSAgICAgIHwgLWFvcyogXAorCSAgICAgIHwgLW5pbmR5KiB8IC12eHNpbSogfCAtdnh3b3JrcyogfCAtZWJtb24qIHwgLWhtcyogfCAtbXZzKiBcCisJICAgICAgfCAtY2xpeCogfCAtcmlzY29zKiB8IC11bmlwbHVzKiB8IC1pcmlzKiB8IC1ydHUqIHwgLXhlbml4KiBcCisJICAgICAgfCAtaGl1eCogfCAtMzg2YnNkKiB8IC1rbmV0YnNkKiB8IC1taXJic2QqIHwgLW5ldGJzZCogfCAtb3BlbmJzZCogXAorCSAgICAgIHwgLWVra29ic2QqIHwgLWtmcmVlYnNkKiB8IC1mcmVlYnNkKiB8IC1yaXNjaXgqIHwgLWx5bnhvcyogXAorCSAgICAgIHwgLWJvc3gqIHwgLW5leHRzdGVwKiB8IC1jeHV4KiB8IC1hb3V0KiB8IC1lbGYqIHwgLW9hYmkqIFwKKwkgICAgICB8IC1wdHgqIHwgLWNvZmYqIHwgLWVjb2ZmKiB8IC13aW5udCogfCAtZG9tYWluKiB8IC12c3RhKiBcCisJICAgICAgfCAtdWRpKiB8IC1lYWJpKiB8IC1saXRlcyogfCAtaWVlZSogfCAtZ28zMiogfCAtYXV4KiBcCisJICAgICAgfCAtY2hvcnVzb3MqIHwgLWNob3J1c3JkYiogXAorCSAgICAgIHwgLWN5Z3dpbiogfCAtcGUqIHwgLXBzb3MqIHwgLW1vc3MqIHwgLXByb2VsZiogfCAtcnRlbXMqIFwKKwkgICAgICB8IC1taW5ndzMyKiB8IC1saW51eC1nbnUqIHwgLWxpbnV4LXVjbGliYyogfCAtdXhwdiogfCAtYmVvcyogfCAtbXBlaXgqIHwgLXVkayogXAorCSAgICAgIHwgLWludGVyaXgqIHwgLXV3aW4qIHwgLW1rcyogfCAtcmhhcHNvZHkqIHwgLWRhcndpbiogfCAtb3BlbmVkKiBcCisJICAgICAgfCAtb3BlbnN0ZXAqIHwgLW9za2l0KiB8IC1jb25peCogfCAtcHczMiogfCAtbm9uc3RvcHV4KiBcCisJICAgICAgfCAtc3Rvcm0tY2hhb3MqIHwgLXRvcHMxMCogfCAtdGVuZXgqIHwgLXRvcHMyMCogfCAtaXRzKiBcCisJICAgICAgfCAtb3MyKiB8IC12b3MqIHwgLXBhbG1vcyogfCAtdWNsaW51eCogfCAtbnVjbGV1cyogXAorCSAgICAgIHwgLW1vcnBob3MqIHwgLXN1cGVydXgqIHwgLXJ0bWsqIHwgLXJ0bWstbm92YSogfCAtd2luZGlzcyogXAorCSAgICAgIHwgLXBvd2VybWF4KiB8IC1kbml4KiB8IC1ueDYgfCAtbng3IHwgLXNlaSogfCAtZHJhZ29uZmx5KikKKwkjIFJlbWVtYmVyLCBlYWNoIGFsdGVybmF0aXZlIE1VU1QgRU5EIElOICosIHRvIG1hdGNoIGEgdmVyc2lvbiBudW1iZXIuCisJCTs7CisJLXFueCopCisJCWNhc2UgJGJhc2ljX21hY2hpbmUgaW4KKwkJICAgIHg4Ni0qIHwgaSo4Ni0qKQorCQkJOzsKKwkJICAgICopCisJCQlvcz0tbnRvJG9zCisJCQk7OworCQllc2FjCisJCTs7CisJLW50by1xbngqKQorCQk7OworCS1udG8qKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8bnRvfG50by1xbnh8J2AKKwkJOzsKKwktc2ltIHwgLWVzMTgwMCogfCAtaG1zKiB8IC14cmF5IHwgLW9zNjhrKiB8IC1ub25lKiB8IC12ODhyKiBcCisJICAgICAgfCAtd2luZG93cyogfCAtb3N4IHwgLWFidWcgfCAtbmV0d2FyZSogfCAtb3M5KiB8IC1iZW9zKiBcCisJICAgICAgfCAtbWFjb3MqIHwgLW1wdyogfCAtbWFnaWMqIHwgLW1taXh3YXJlKiB8IC1tb245NjAqIHwgLWxuZXdzKikKKwkJOzsKKwktbWFjKikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfG1hY3xtYWNvc3wnYAorCQk7OworCS1saW51eC1kaWV0bGliYykKKwkJb3M9LWxpbnV4LWRpZXRsaWJjCisJCTs7CisJLWxpbnV4KikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfGxpbnV4fGxpbnV4LWdudXwnYAorCQk7OworCS1zdW5vczUqKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8c3Vub3M1fHNvbGFyaXMyfCdgCisJCTs7CisJLXN1bm9zNiopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xzdW5vczZ8c29sYXJpczN8J2AKKwkJOzsKKwktb3BlbmVkKikKKwkJb3M9LW9wZW5lZGl0aW9uCisJCTs7CisgICAgICAgIC1vczQwMCopCisJCW9zPS1vczQwMAorCQk7OworCS13aW5jZSopCisJCW9zPS13aW5jZQorCQk7OworCS1vc2Zyb3NlKikKKwkJb3M9LW9zZnJvc2UKKwkJOzsKKwktb3NmKikKKwkJb3M9LW9zZgorCQk7OworCS11dGVrKikKKwkJb3M9LWJzZAorCQk7OworCS1keW5peCopCisJCW9zPS1ic2QKKwkJOzsKKwktYWNpcyopCisJCW9zPS1hb3MKKwkJOzsKKwktYXRoZW9zKikKKwkJb3M9LWF0aGVvcworCQk7OworCS1zeWxsYWJsZSopCisJCW9zPS1zeWxsYWJsZQorCQk7OworCS0zODZic2QpCisJCW9zPS1ic2QKKwkJOzsKKwktY3RpeCogfCAtdXRzKikKKwkJb3M9LXN5c3YKKwkJOzsKKwktbm92YSopCisJCW9zPS1ydG1rLW5vdmEKKwkJOzsKKwktbnMyICkKKwkJb3M9LW5leHRzdGVwMgorCQk7OworCS1uc2sqKQorCQlvcz0tbnNrCisJCTs7CisJIyBQcmVzZXJ2ZSB0aGUgdmVyc2lvbiBudW1iZXIgb2Ygc2luaXg1LgorCS1zaW5peDUuKikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfHNpbml4fHN5c3Z8J2AKKwkJOzsKKwktc2luaXgqKQorCQlvcz0tc3lzdjQKKwkJOzsKKyAgICAgICAgLXRwZiopCisJCW9zPS10cGYKKwkJOzsKKwktdHJpdG9uKikKKwkJb3M9LXN5c3YzCisJCTs7CisJLW9zcyopCisJCW9zPS1zeXN2MworCQk7OworCS1zdnI0KQorCQlvcz0tc3lzdjQKKwkJOzsKKwktc3ZyMykKKwkJb3M9LXN5c3YzCisJCTs7CisJLXN5c3ZyNCkKKwkJb3M9LXN5c3Y0CisJCTs7CisJIyBUaGlzIG11c3QgY29tZSBhZnRlciAtc3lzdnI0LgorCS1zeXN2KikKKwkJOzsKKwktb3NlKikKKwkJb3M9LW9zZQorCQk7OworCS1lczE4MDAqKQorCQlvcz0tb3NlCisJCTs7CisJLXhlbml4KQorCQlvcz0teGVuaXgKKwkJOzsKKwktKm1pbnQgfCAtbWludFswLTldKiB8IC0qTWlOVCB8IC1NaU5UWzAtOV0qKQorCQlvcz0tbWludAorCQk7OworCS1hcm9zKikKKwkJb3M9LWFyb3MKKwkJOzsKKwkta2FvcyopCisJCW9zPS1rYW9zCisJCTs7CisJLXp2bW9lKQorCQlvcz0tenZtb2UKKwkJOzsKKwktbm9uZSkKKwkJOzsKKwkqKQorCQkjIEdldCByaWQgb2YgdGhlIGAtJyBhdCB0aGUgYmVnaW5uaW5nIG9mICRvcy4KKwkJb3M9YGVjaG8gJG9zIHwgc2VkICdzL1teLV0qLS8vJ2AKKwkJZWNobyBJbnZhbGlkIGNvbmZpZ3VyYXRpb24gXGAkMVwnOiBzeXN0ZW0gXGAkb3NcJyBub3QgcmVjb2duaXplZCAxPiYyCisJCWV4aXQgMQorCQk7OworZXNhYworZWxzZQorCisjIEhlcmUgd2UgaGFuZGxlIHRoZSBkZWZhdWx0IG9wZXJhdGluZyBzeXN0ZW1zIHRoYXQgY29tZSB3aXRoIHZhcmlvdXMgbWFjaGluZXMuCisjIFRoZSB2YWx1ZSBzaG91bGQgYmUgd2hhdCB0aGUgdmVuZG9yIGN1cnJlbnRseSBzaGlwcyBvdXQgdGhlIGRvb3Igd2l0aCB0aGVpcgorIyBtYWNoaW5lIG9yIHB1dCBhbm90aGVyIHdheSwgdGhlIG1vc3QgcG9wdWxhciBvcyBwcm92aWRlZCB3aXRoIHRoZSBtYWNoaW5lLgorCisjIE5vdGUgdGhhdCBpZiB5b3UncmUgZ29pbmcgdG8gdHJ5IHRvIG1hdGNoICItTUFOVUZBQ1RVUkVSIiBoZXJlIChzYXksCisjICItc3VuIiksIHRoZW4geW91IGhhdmUgdG8gdGVsbCB0aGUgY2FzZSBzdGF0ZW1lbnQgdXAgdG93YXJkcyB0aGUgdG9wCisjIHRoYXQgTUFOVUZBQ1RVUkVSIGlzbid0IGFuIG9wZXJhdGluZyBzeXN0ZW0uICBPdGhlcndpc2UsIGNvZGUgYWJvdmUKKyMgd2lsbCBzaWduYWwgYW4gZXJyb3Igc2F5aW5nIHRoYXQgTUFOVUZBQ1RVUkVSIGlzbid0IGFuIG9wZXJhdGluZworIyBzeXN0ZW0sIGFuZCB3ZSdsbCBuZXZlciBnZXQgdG8gdGhpcyBwb2ludC4KKworY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorCSotYWNvcm4pCisJCW9zPS1yaXNjaXgxLjIKKwkJOzsKKwlhcm0qLXJlYmVsKQorCQlvcz0tbGludXgKKwkJOzsKKwlhcm0qLXNlbWkpCisJCW9zPS1hb3V0CisJCTs7CisgICAgYzR4LSogfCB0aWM0eC0qKQorICAgICAgICBvcz0tY29mZgorICAgICAgICA7OworCSMgVGhpcyBtdXN0IGNvbWUgYmVmb3JlIHRoZSAqLWRlYyBlbnRyeS4KKwlwZHAxMC0qKQorCQlvcz0tdG9wczIwCisJCTs7CisJcGRwMTEtKikKKwkJb3M9LW5vbmUKKwkJOzsKKwkqLWRlYyB8IHZheC0qKQorCQlvcz0tdWx0cml4NC4yCisJCTs7CisJbTY4Ki1hcG9sbG8pCisJCW9zPS1kb21haW4KKwkJOzsKKwlpMzg2LXN1bikKKwkJb3M9LXN1bm9zNC4wLjIKKwkJOzsKKwltNjgwMDAtc3VuKQorCQlvcz0tc3Vub3MzCisJCSMgVGhpcyBhbHNvIGV4aXN0cyBpbiB0aGUgY29uZmlndXJlIHByb2dyYW0sIGJ1dCB3YXMgbm90IHRoZQorCQkjIGRlZmF1bHQuCisJCSMgb3M9LXN1bm9zNAorCQk7OworCW02OCotY2lzY28pCisJCW9zPS1hb3V0CisJCTs7CisJbWlwcyotY2lzY28pCisJCW9zPS1lbGYKKwkJOzsKKwltaXBzKi0qKQorCQlvcz0tZWxmCisJCTs7CisJb3IzMi0qKQorCQlvcz0tY29mZgorCQk7OworCSotdHRpKQkjIG11c3QgYmUgYmVmb3JlIHNwYXJjIGVudHJ5IG9yIHdlIGdldCB0aGUgd3Jvbmcgb3MuCisJCW9zPS1zeXN2MworCQk7OworCXNwYXJjLSogfCAqLXN1bikKKwkJb3M9LXN1bm9zNC4xLjEKKwkJOzsKKwkqLWJlKQorCQlvcz0tYmVvcworCQk7OworCSotaWJtKQorCQlvcz0tYWl4CisJCTs7CisgICAgCSota251dGgpCisJCW9zPS1tbWl4d2FyZQorCQk7OworCSotd2VjKQorCQlvcz0tcHJvZWxmCisJCTs7CisJKi13aW5ib25kKQorCQlvcz0tcHJvZWxmCisJCTs7CisJKi1va2kpCisJCW9zPS1wcm9lbGYKKwkJOzsKKwkqLWhwKQorCQlvcz0taHB1eAorCQk7OworCSotaGl0YWNoaSkKKwkJb3M9LWhpdXgKKwkJOzsKKwlpODYwLSogfCAqLWF0dCB8ICotbmNyIHwgKi1hbHRvcyB8ICotbW90b3JvbGEgfCAqLWNvbnZlcmdlbnQpCisJCW9zPS1zeXN2CisJCTs7CisJKi1jYm0pCisJCW9zPS1hbWlnYW9zCisJCTs7CisJKi1kZykKKwkJb3M9LWRndXgKKwkJOzsKKwkqLWRvbHBoaW4pCisJCW9zPS1zeXN2MworCQk7OworCW02OGstY2N1cikKKwkJb3M9LXJ0dQorCQk7OworCW04OGstb21yb24qKQorCQlvcz0tbHVuYQorCQk7OworCSotbmV4dCApCisJCW9zPS1uZXh0c3RlcAorCQk7OworCSotc2VxdWVudCkKKwkJb3M9LXB0eAorCQk7OworCSotY3JkcykKKwkJb3M9LXVub3MKKwkJOzsKKwkqLW5zKQorCQlvcz0tZ2VuaXgKKwkJOzsKKwlpMzcwLSopCisJCW9zPS1tdnMKKwkJOzsKKwkqLW5leHQpCisJCW9zPS1uZXh0c3RlcDMKKwkJOzsKKwkqLWdvdWxkKQorCQlvcz0tc3lzdgorCQk7OworCSotaGlnaGxldmVsKQorCQlvcz0tYnNkCisJCTs7CisJKi1lbmNvcmUpCisJCW9zPS1ic2QKKwkJOzsKKwkqLXNnaSkKKwkJb3M9LWlyaXgKKwkJOzsKKwkqLXNpZW1lbnMpCisJCW9zPS1zeXN2NAorCQk7OworCSotbWFzc2NvbXApCisJCW9zPS1ydHUKKwkJOzsKKwlmMzBbMDFdLWZ1aml0c3UgfCBmNzAwLWZ1aml0c3UpCisJCW9zPS11eHB2CisJCTs7CisJKi1yb202OGspCisJCW9zPS1jb2ZmCisJCTs7CisJKi0qYnVnKQorCQlvcz0tY29mZgorCQk7OworCSotYXBwbGUpCisJCW9zPS1tYWNvcworCQk7OworCSotYXRhcmkqKQorCQlvcz0tbWludAorCQk7OworCSopCisJCW9zPS1ub25lCisJCTs7Citlc2FjCitmaQorCisjIEhlcmUgd2UgaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHdlIGtub3cgdGhlIG9zLCBhbmQgdGhlIENQVSB0eXBlLCBidXQgbm90IHRoZQorIyBtYW51ZmFjdHVyZXIuICBXZSBwaWNrIHRoZSBsb2dpY2FsIG1hbnVmYWN0dXJlci4KK3ZlbmRvcj11bmtub3duCitjYXNlICRiYXNpY19tYWNoaW5lIGluCisJKi11bmtub3duKQorCQljYXNlICRvcyBpbgorCQkJLXJpc2NpeCopCisJCQkJdmVuZG9yPWFjb3JuCisJCQkJOzsKKwkJCS1zdW5vcyopCisJCQkJdmVuZG9yPXN1bgorCQkJCTs7CisJCQktYWl4KikKKwkJCQl2ZW5kb3I9aWJtCisJCQkJOzsKKwkJCS1iZW9zKikKKwkJCQl2ZW5kb3I9YmUKKwkJCQk7OworCQkJLWhwdXgqKQorCQkJCXZlbmRvcj1ocAorCQkJCTs7CisJCQktbXBlaXgqKQorCQkJCXZlbmRvcj1ocAorCQkJCTs7CisJCQktaGl1eCopCisJCQkJdmVuZG9yPWhpdGFjaGkKKwkJCQk7OworCQkJLXVub3MqKQorCQkJCXZlbmRvcj1jcmRzCisJCQkJOzsKKwkJCS1kZ3V4KikKKwkJCQl2ZW5kb3I9ZGcKKwkJCQk7OworCQkJLWx1bmEqKQorCQkJCXZlbmRvcj1vbXJvbgorCQkJCTs7CisJCQktZ2VuaXgqKQorCQkJCXZlbmRvcj1ucworCQkJCTs7CisJCQktbXZzKiB8IC1vcGVuZWQqKQorCQkJCXZlbmRvcj1pYm0KKwkJCQk7OworCQkJLW9zNDAwKikKKwkJCQl2ZW5kb3I9aWJtCisJCQkJOzsKKwkJCS1wdHgqKQorCQkJCXZlbmRvcj1zZXF1ZW50CisJCQkJOzsKKwkJCS10cGYqKQorCQkJCXZlbmRvcj1pYm0KKwkJCQk7OworCQkJLXZ4c2ltKiB8IC12eHdvcmtzKiB8IC13aW5kaXNzKikKKwkJCQl2ZW5kb3I9d3JzCisJCQkJOzsKKwkJCS1hdXgqKQorCQkJCXZlbmRvcj1hcHBsZQorCQkJCTs7CisJCQktaG1zKikKKwkJCQl2ZW5kb3I9aGl0YWNoaQorCQkJCTs7CisJCQktbXB3KiB8IC1tYWNvcyopCisJCQkJdmVuZG9yPWFwcGxlCisJCQkJOzsKKwkJCS0qbWludCB8IC1taW50WzAtOV0qIHwgLSpNaU5UIHwgLU1pTlRbMC05XSopCisJCQkJdmVuZG9yPWF0YXJpCisJCQkJOzsKKwkJCS12b3MqKQorCQkJCXZlbmRvcj1zdHJhdHVzCisJCQkJOzsKKwkJZXNhYworCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICJzL3Vua25vd24vJHZlbmRvci8iYAorCQk7OworZXNhYworCitlY2hvICRiYXNpY19tYWNoaW5lJG9zCitleGl0IDAKKworIyBMb2NhbCB2YXJpYWJsZXM6CisjIGV2YWw6IChhZGQtaG9vayAnd3JpdGUtZmlsZS1ob29rcyAndGltZS1zdGFtcCkKKyMgdGltZS1zdGFtcC1zdGFydDogInRpbWVzdGFtcD0nIgorIyB0aW1lLXN0YW1wLWZvcm1hdDogIiU6eS0lMDJtLSUwMmQiCisjIHRpbWUtc3RhbXAtZW5kOiAiJyIKKyMgRW5kOgpkaWZmIC0tZ2l0IGEvYy9jb25maWcvZGVwY29tcCBiL2MvY29uZmlnL2RlcGNvbXAKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMDQ3MDFkYQotLS0gL2Rldi9udWxsCisrKyBiL2MvY29uZmlnL2RlcGNvbXAKQEAgLTAsMCArMSw1MzAgQEAKKyMhIC9iaW4vc2gKKyMgZGVwY29tcCAtIGNvbXBpbGUgYSBwcm9ncmFtIGdlbmVyYXRpbmcgZGVwZW5kZW5jaWVzIGFzIHNpZGUtZWZmZWN0cworCitzY3JpcHR2ZXJzaW9uPTIwMDUtMDctMDkuMTEKKworIyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAsIDIwMDMsIDIwMDQsIDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorIyBhbnkgbGF0ZXIgdmVyc2lvbi4KKworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEKKyMgMDIxMTAtMTMwMSwgVVNBLgorCisjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKKyMgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCisjIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgeW91IG1heSBpbmNsdWRlIGl0IHVuZGVyCisjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KKworIyBPcmlnaW5hbGx5IHdyaXR0ZW4gYnkgQWxleGFuZHJlIE9saXZhIDxvbGl2YUBkY2MudW5pY2FtcC5icj4uCisKK2Nhc2UgJDEgaW4KKyAgJycpCisgICAgIGVjaG8gIiQwOiBObyBjb21tYW5kLiAgVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iIDE+JjIKKyAgICAgZXhpdCAxOworICAgICA7OworICAtaCB8IC0taCopCisgICAgY2F0IDw8XEVPRgorVXNhZ2U6IGRlcGNvbXAgWy0taGVscF0gWy0tdmVyc2lvbl0gUFJPR1JBTSBbQVJHU10KKworUnVuIFBST0dSQU1TIEFSR1MgdG8gY29tcGlsZSBhIGZpbGUsIGdlbmVyYXRpbmcgZGVwZW5kZW5jaWVzCithcyBzaWRlLWVmZmVjdHMuCisKK0Vudmlyb25tZW50IHZhcmlhYmxlczoKKyAgZGVwbW9kZSAgICAgRGVwZW5kZW5jeSB0cmFja2luZyBtb2RlLgorICBzb3VyY2UgICAgICBTb3VyY2UgZmlsZSByZWFkIGJ5IGBQUk9HUkFNUyBBUkdTJy4KKyAgb2JqZWN0ICAgICAgT2JqZWN0IGZpbGUgb3V0cHV0IGJ5IGBQUk9HUkFNUyBBUkdTJy4KKyAgREVQRElSICAgICAgZGlyZWN0b3J5IHdoZXJlIHRvIHN0b3JlIGRlcGVuZGVuY2llcy4KKyAgZGVwZmlsZSAgICAgRGVwZW5kZW5jeSBmaWxlIHRvIG91dHB1dC4KKyAgdG1wZGVwZmlsZSAgVGVtcG9yYXJ5IGZpbGUgdG8gdXNlIHdoZW4gb3V0cHV0aW5nIGRlcGVuZGVuY2llcy4KKyAgbGlidG9vbCAgICAgV2hldGhlciBsaWJ0b29sIGlzIHVzZWQgKHllcy9ubykuCisKK1JlcG9ydCBidWdzIHRvIDxidWctYXV0b21ha2VAZ251Lm9yZz4uCitFT0YKKyAgICBleGl0ICQ/CisgICAgOzsKKyAgLXYgfCAtLXYqKQorICAgIGVjaG8gImRlcGNvbXAgJHNjcmlwdHZlcnNpb24iCisgICAgZXhpdCAkPworICAgIDs7Citlc2FjCisKK2lmIHRlc3QgLXogIiRkZXBtb2RlIiB8fCB0ZXN0IC16ICIkc291cmNlIiB8fCB0ZXN0IC16ICIkb2JqZWN0IjsgdGhlbgorICBlY2hvICJkZXBjb21wOiBWYXJpYWJsZXMgc291cmNlLCBvYmplY3QgYW5kIGRlcG1vZGUgbXVzdCBiZSBzZXQiIDE+JjIKKyAgZXhpdCAxCitmaQorCisjIERlcGVuZGVuY2llcyBmb3Igc3ViL2Jhci5vIG9yIHN1Yi9iYXIub2JqIGdvIGludG8gc3ViLy5kZXBzL2Jhci5Qby4KK2RlcGZpbGU9JHtkZXBmaWxlLWBlY2hvICIkb2JqZWN0IiB8CisgIHNlZCAnc3xbXlxcL10qJHwnJHtERVBESVItLmRlcHN9Jy8mfDtzfFwuXChbXi5dKlwpJHwuUFwxfDtzfFBvYmokfFBvfCdgfQordG1wZGVwZmlsZT0ke3RtcGRlcGZpbGUtYGVjaG8gIiRkZXBmaWxlIiB8IHNlZCAncy9cLlwoW14uXSpcKSQvLlRcMS8nYH0KKworcm0gLWYgIiR0bXBkZXBmaWxlIgorCisjIFNvbWUgbW9kZXMgd29yayBqdXN0IGxpa2Ugb3RoZXIgbW9kZXMsIGJ1dCB1c2UgZGlmZmVyZW50IGZsYWdzLiAgV2UKKyMgcGFyYW1ldGVyaXplIGhlcmUsIGJ1dCBzdGlsbCBsaXN0IHRoZSBtb2RlcyBpbiB0aGUgYmlnIGNhc2UgYmVsb3csCisjIHRvIG1ha2UgZGVwZW5kLm00IGVhc2llciB0byB3cml0ZS4gIE5vdGUgdGhhdCB3ZSAqY2Fubm90KiB1c2UgYSBjYXNlCisjIGhlcmUsIGJlY2F1c2UgdGhpcyBmaWxlIGNhbiBvbmx5IGNvbnRhaW4gb25lIGNhc2Ugc3RhdGVtZW50LgoraWYgdGVzdCAiJGRlcG1vZGUiID0gaHA7IHRoZW4KKyAgIyBIUCBjb21waWxlciB1c2VzIC1NIGFuZCBubyBleHRyYSBhcmcuCisgIGdjY2ZsYWc9LU0KKyAgZGVwbW9kZT1nY2MKK2ZpCisKK2lmIHRlc3QgIiRkZXBtb2RlIiA9IGRhc2hYbXN0ZG91dDsgdGhlbgorICAgIyBUaGlzIGlzIGp1c3QgbGlrZSBkYXNobXN0ZG91dCB3aXRoIGEgZGlmZmVyZW50IGFyZ3VtZW50LgorICAgZGFzaG1mbGFnPS14TQorICAgZGVwbW9kZT1kYXNobXN0ZG91dAorZmkKKworY2FzZSAiJGRlcG1vZGUiIGluCitnY2MzKQorIyMgZ2NjIDMgaW1wbGVtZW50cyBkZXBlbmRlbmN5IHRyYWNraW5nIHRoYXQgZG9lcyBleGFjdGx5IHdoYXQKKyMjIHdlIHdhbnQuICBZYXkhICBOb3RlOiBmb3Igc29tZSByZWFzb24gbGlidG9vbCAxLjQgZG9lc24ndCBsaWtlCisjIyBpdCBpZiAtTUQgLU1QIGNvbWVzIGFmdGVyIHRoZSAtTUYgc3R1ZmYuICBIbW0uCisgICIkQCIgLU1UICIkb2JqZWN0IiAtTUQgLU1QIC1NRiAiJHRtcGRlcGZpbGUiCisgIHN0YXQ9JD8KKyAgaWYgdGVzdCAkc3RhdCAtZXEgMDsgdGhlbiA6CisgIGVsc2UKKyAgICBybSAtZiAiJHRtcGRlcGZpbGUiCisgICAgZXhpdCAkc3RhdAorICBmaQorICBtdiAiJHRtcGRlcGZpbGUiICIkZGVwZmlsZSIKKyAgOzsKKworZ2NjKQorIyMgVGhlcmUgYXJlIHZhcmlvdXMgd2F5cyB0byBnZXQgZGVwZW5kZW5jeSBvdXRwdXQgZnJvbSBnY2MuICBIZXJlJ3MKKyMjIHdoeSB3ZSBwaWNrIHRoaXMgcmF0aGVyIG9ic2N1cmUgbWV0aG9kOgorIyMgLSBEb24ndCB3YW50IHRvIHVzZSAtTUQgYmVjYXVzZSB3ZSdkIGxpa2UgdGhlIGRlcGVuZGVuY2llcyB0byBlbmQKKyMjICAgdXAgaW4gYSBzdWJkaXIuICBIYXZpbmcgdG8gcmVuYW1lIGJ5IGhhbmQgaXMgdWdseS4KKyMjICAgKFdlIG1pZ2h0IGVuZCB1cCBkb2luZyB0aGlzIGFueXdheSB0byBzdXBwb3J0IG90aGVyIGNvbXBpbGVycy4pCisjIyAtIFRoZSBERVBFTkRFTkNJRVNfT1VUUFVUIGVudmlyb25tZW50IHZhcmlhYmxlIG1ha2VzIGdjYyBhY3QgbGlrZQorIyMgICAtTU0sIG5vdCAtTSAoZGVzcGl0ZSB3aGF0IHRoZSBkb2NzIHNheSkuCisjIyAtIFVzaW5nIC1NIGRpcmVjdGx5IG1lYW5zIHJ1bm5pbmcgdGhlIGNvbXBpbGVyIHR3aWNlIChldmVuIHdvcnNlCisjIyAgIHRoYW4gcmVuYW1pbmcpLgorICBpZiB0ZXN0IC16ICIkZ2NjZmxhZyI7IHRoZW4KKyAgICBnY2NmbGFnPS1NRCwKKyAgZmkKKyAgIiRAIiAtV3AsIiRnY2NmbGFnJHRtcGRlcGZpbGUiCisgIHN0YXQ9JD8KKyAgaWYgdGVzdCAkc3RhdCAtZXEgMDsgdGhlbiA6CisgIGVsc2UKKyAgICBybSAtZiAiJHRtcGRlcGZpbGUiCisgICAgZXhpdCAkc3RhdAorICBmaQorICBybSAtZiAiJGRlcGZpbGUiCisgIGVjaG8gIiRvYmplY3QgOiBcXCIgPiAiJGRlcGZpbGUiCisgIGFscGhhPUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoKKyMjIFRoZSBzZWNvbmQgLWUgZXhwcmVzc2lvbiBoYW5kbGVzIERPUy1zdHlsZSBmaWxlIG5hbWVzIHdpdGggZHJpdmUgbGV0dGVycy4KKyAgc2VkIC1lICdzL15bXjpdKjogLyAvJyBcCisgICAgICAtZSAncy9eWyckYWxwaGEnXTpcL1teOl0qOiAvIC8nIDwgIiR0bXBkZXBmaWxlIiA+PiAiJGRlcGZpbGUiCisjIyBUaGlzIG5leHQgcGllY2Ugb2YgbWFnaWMgYXZvaWRzIHRoZSBgZGVsZXRlZCBoZWFkZXIgZmlsZScgcHJvYmxlbS4KKyMjIFRoZSBwcm9ibGVtIGlzIHRoYXQgd2hlbiBhIGhlYWRlciBmaWxlIHdoaWNoIGFwcGVhcnMgaW4gYSAuUCBmaWxlCisjIyBpcyBkZWxldGVkLCB0aGUgZGVwZW5kZW5jeSBjYXVzZXMgbWFrZSB0byBkaWUgKGJlY2F1c2UgdGhlcmUgaXMKKyMjIHR5cGljYWxseSBubyB3YXkgdG8gcmVidWlsZCB0aGUgaGVhZGVyKS4gIFdlIGF2b2lkIHRoaXMgYnkgYWRkaW5nCisjIyBkdW1teSBkZXBlbmRlbmNpZXMgZm9yIGVhY2ggaGVhZGVyIGZpbGUuICBUb28gYmFkIGdjYyBkb2Vzbid0IGRvCisjIyB0aGlzIGZvciB1cyBkaXJlY3RseS4KKyAgdHIgJyAnICcKKycgPCAiJHRtcGRlcGZpbGUiIHwKKyMjIFNvbWUgdmVyc2lvbnMgb2YgZ2NjIHB1dCBhIHNwYWNlIGJlZm9yZSB0aGUgYDonLiAgT24gdGhlIHRoZW9yeQorIyMgdGhhdCB0aGUgc3BhY2UgbWVhbnMgc29tZXRoaW5nLCB3ZSBhZGQgYSBzcGFjZSB0byB0aGUgb3V0cHV0IGFzCisjIyB3ZWxsLgorIyMgU29tZSB2ZXJzaW9ucyBvZiB0aGUgSFBVWCAxMC4yMCBzZWQgY2FuJ3QgcHJvY2VzcyB0aGlzIGludm9jYXRpb24KKyMjIGNvcnJlY3RseS4gIEJyZWFraW5nIGl0IGludG8gdHdvIHNlZCBpbnZvY2F0aW9ucyBpcyBhIHdvcmthcm91bmQuCisgICAgc2VkIC1lICdzL15cXCQvLycgLWUgJy9eJC9kJyAtZSAnLzokL2QnIHwgc2VkIC1lICdzLyQvIDovJyA+PiAiJGRlcGZpbGUiCisgIHJtIC1mICIkdG1wZGVwZmlsZSIKKyAgOzsKKworaHApCisgICMgVGhpcyBjYXNlIGV4aXN0cyBvbmx5IHRvIGxldCBkZXBlbmQubTQgZG8gaXRzIHdvcmsuICBJdCB3b3JrcyBieQorICAjIGxvb2tpbmcgYXQgdGhlIHRleHQgb2YgdGhpcyBzY3JpcHQuICBUaGlzIGNhc2Ugd2lsbCBuZXZlciBiZSBydW4sCisgICMgc2luY2UgaXQgaXMgY2hlY2tlZCBmb3IgYWJvdmUuCisgIGV4aXQgMQorICA7OworCitzZ2kpCisgIGlmIHRlc3QgIiRsaWJ0b29sIiA9IHllczsgdGhlbgorICAgICIkQCIgIi1XcCwtTUR1cGRhdGUsJHRtcGRlcGZpbGUiCisgIGVsc2UKKyAgICAiJEAiIC1NRHVwZGF0ZSAiJHRtcGRlcGZpbGUiCisgIGZpCisgIHN0YXQ9JD8KKyAgaWYgdGVzdCAkc3RhdCAtZXEgMDsgdGhlbiA6CisgIGVsc2UKKyAgICBybSAtZiAiJHRtcGRlcGZpbGUiCisgICAgZXhpdCAkc3RhdAorICBmaQorICBybSAtZiAiJGRlcGZpbGUiCisKKyAgaWYgdGVzdCAtZiAiJHRtcGRlcGZpbGUiOyB0aGVuICAjIHllcywgdGhlIHNvdXJjZWZpbGUgZGVwZW5kIG9uIG90aGVyIGZpbGVzCisgICAgZWNobyAiJG9iamVjdCA6IFxcIiA+ICIkZGVwZmlsZSIKKworICAgICMgQ2xpcCBvZmYgdGhlIGluaXRpYWwgZWxlbWVudCAodGhlIGRlcGVuZGVudCkuICBEb24ndCB0cnkgdG8gYmUKKyAgICAjIGNsZXZlciBhbmQgcmVwbGFjZSB0aGlzIHdpdGggc2VkIGNvZGUsIGFzIElSSVggc2VkIHdvbid0IGhhbmRsZQorICAgICMgbGluZXMgd2l0aCBtb3JlIHRoYW4gYSBmaXhlZCBudW1iZXIgb2YgY2hhcmFjdGVycyAoNDA5NiBpbgorICAgICMgSVJJWCA2LjIgc2VkLCA4MTkyIGluIElSSVggNi41KS4gIFdlIGFsc28gcmVtb3ZlIGNvbW1lbnQgbGluZXM7CisgICAgIyB0aGUgSVJJWCBjYyBhZGRzIGNvbW1lbnRzIGxpa2UgYCM6ZmVjJyB0byB0aGUgZW5kIG9mIHRoZQorICAgICMgZGVwZW5kZW5jeSBsaW5lLgorICAgIHRyICcgJyAnCisnIDwgIiR0bXBkZXBmaWxlIiBcCisgICAgfCBzZWQgLWUgJ3MvXi4qXC5vOi8vJyAtZSAncy8jLiokLy8nIC1lICcvXiQvIGQnIHwgXAorICAgIHRyICcKKycgJyAnID4+ICRkZXBmaWxlCisgICAgZWNobyA+PiAkZGVwZmlsZQorCisgICAgIyBUaGUgc2Vjb25kIHBhc3MgZ2VuZXJhdGVzIGEgZHVtbXkgZW50cnkgZm9yIGVhY2ggaGVhZGVyIGZpbGUuCisgICAgdHIgJyAnICcKKycgPCAiJHRtcGRlcGZpbGUiIFwKKyAgIHwgc2VkIC1lICdzL14uKlwubzovLycgLWUgJ3MvIy4qJC8vJyAtZSAnL14kLyBkJyAtZSAncy8kLzovJyBcCisgICA+PiAkZGVwZmlsZQorICBlbHNlCisgICAgIyBUaGUgc291cmNlZmlsZSBkb2VzIG5vdCBjb250YWluIGFueSBkZXBlbmRlbmNpZXMsIHNvIGp1c3QKKyAgICAjIHN0b3JlIGEgZHVtbXkgY29tbWVudCBsaW5lLCB0byBhdm9pZCBlcnJvcnMgd2l0aCB0aGUgTWFrZWZpbGUKKyAgICAjICJpbmNsdWRlIGJhc2VuYW1lLlBsbyIgc2NoZW1lLgorICAgIGVjaG8gIiNkdW1teSIgPiAiJGRlcGZpbGUiCisgIGZpCisgIHJtIC1mICIkdG1wZGVwZmlsZSIKKyAgOzsKKworYWl4KQorICAjIFRoZSBDIGZvciBBSVggQ29tcGlsZXIgdXNlcyAtTSBhbmQgb3V0cHV0cyB0aGUgZGVwZW5kZW5jaWVzCisgICMgaW4gYSAudSBmaWxlLiAgSW4gb2xkZXIgdmVyc2lvbnMsIHRoaXMgZmlsZSBhbHdheXMgbGl2ZXMgaW4gdGhlCisgICMgY3VycmVudCBkaXJlY3RvcnkuICBBbHNvLCB0aGUgQUlYIGNvbXBpbGVyIHB1dHMgYCRvYmplY3Q6JyBhdCB0aGUKKyAgIyBzdGFydCBvZiBlYWNoIGxpbmU7ICRvYmplY3QgZG9lc24ndCBoYXZlIGRpcmVjdG9yeSBpbmZvcm1hdGlvbi4KKyAgIyBWZXJzaW9uIDYgdXNlcyB0aGUgZGlyZWN0b3J5IGluIGJvdGggY2FzZXMuCisgIHN0cmlwcGVkPWBlY2hvICIkb2JqZWN0IiB8IHNlZCAncy9cKC4qXClcLi4qJC9cMS8nYAorICB0bXBkZXBmaWxlPSIkc3RyaXBwZWQudSIKKyAgaWYgdGVzdCAiJGxpYnRvb2wiID0geWVzOyB0aGVuCisgICAgIiRAIiAtV2MsLU0KKyAgZWxzZQorICAgICIkQCIgLU0KKyAgZmkKKyAgc3RhdD0kPworCisgIGlmIHRlc3QgLWYgIiR0bXBkZXBmaWxlIjsgdGhlbiA6CisgIGVsc2UKKyAgICBzdHJpcHBlZD1gZWNobyAiJHN0cmlwcGVkIiB8IHNlZCAncyxeLiovLCwnYAorICAgIHRtcGRlcGZpbGU9IiRzdHJpcHBlZC51IgorICBmaQorCisgIGlmIHRlc3QgJHN0YXQgLWVxIDA7IHRoZW4gOgorICBlbHNlCisgICAgcm0gLWYgIiR0bXBkZXBmaWxlIgorICAgIGV4aXQgJHN0YXQKKyAgZmkKKworICBpZiB0ZXN0IC1mICIkdG1wZGVwZmlsZSI7IHRoZW4KKyAgICBvdXRuYW1lPSIkc3RyaXBwZWQubyIKKyAgICAjIEVhY2ggbGluZSBpcyBvZiB0aGUgZm9ybSBgZm9vLm86IGRlcGVuZGVudC5oJy4KKyAgICAjIERvIHR3byBwYXNzZXMsIG9uZSB0byBqdXN0IGNoYW5nZSB0aGVzZSB0bworICAgICMgYCRvYmplY3Q6IGRlcGVuZGVudC5oJyBhbmQgb25lIHRvIHNpbXBseSBgZGVwZW5kZW50Lmg6Jy4KKyAgICBzZWQgLWUgInMsXiRvdXRuYW1lOiwkb2JqZWN0IDosIiA8ICIkdG1wZGVwZmlsZSIgPiAiJGRlcGZpbGUiCisgICAgc2VkIC1lICJzLF4kb3V0bmFtZTogXCguKlwpJCxcMTosIiA8ICIkdG1wZGVwZmlsZSIgPj4gIiRkZXBmaWxlIgorICBlbHNlCisgICAgIyBUaGUgc291cmNlZmlsZSBkb2VzIG5vdCBjb250YWluIGFueSBkZXBlbmRlbmNpZXMsIHNvIGp1c3QKKyAgICAjIHN0b3JlIGEgZHVtbXkgY29tbWVudCBsaW5lLCB0byBhdm9pZCBlcnJvcnMgd2l0aCB0aGUgTWFrZWZpbGUKKyAgICAjICJpbmNsdWRlIGJhc2VuYW1lLlBsbyIgc2NoZW1lLgorICAgIGVjaG8gIiNkdW1teSIgPiAiJGRlcGZpbGUiCisgIGZpCisgIHJtIC1mICIkdG1wZGVwZmlsZSIKKyAgOzsKKworaWNjKQorICAjIEludGVsJ3MgQyBjb21waWxlciB1bmRlcnN0YW5kcyBgLU1EIC1NRiBmaWxlJy4gIEhvd2V2ZXIgb24KKyAgIyAgICBpY2MgLU1EIC1NRiBmb28uZCAtYyAtbyBzdWIvZm9vLm8gc3ViL2Zvby5jCisgICMgSUNDIDcuMCB3aWxsIGZpbGwgZm9vLmQgd2l0aCBzb21ldGhpbmcgbGlrZQorICAjICAgIGZvby5vOiBzdWIvZm9vLmMKKyAgIyAgICBmb28ubzogc3ViL2Zvby5oCisgICMgd2hpY2ggaXMgd3JvbmcuICBXZSB3YW50OgorICAjICAgIHN1Yi9mb28ubzogc3ViL2Zvby5jCisgICMgICAgc3ViL2Zvby5vOiBzdWIvZm9vLmgKKyAgIyAgICBzdWIvZm9vLmM6CisgICMgICAgc3ViL2Zvby5oOgorICAjIElDQyA3LjEgd2lsbCBvdXRwdXQKKyAgIyAgICBmb28ubzogc3ViL2Zvby5jIHN1Yi9mb28uaAorICAjIGFuZCB3aWxsIHdyYXAgbG9uZyBsaW5lcyB1c2luZyBcIDoKKyAgIyAgICBmb28ubzogc3ViL2Zvby5jIC4uLiBcCisgICMgICAgIHN1Yi9mb28uaCAuLi4gXAorICAjICAgICAuLi4KKworICAiJEAiIC1NRCAtTUYgIiR0bXBkZXBmaWxlIgorICBzdGF0PSQ/CisgIGlmIHRlc3QgJHN0YXQgLWVxIDA7IHRoZW4gOgorICBlbHNlCisgICAgcm0gLWYgIiR0bXBkZXBmaWxlIgorICAgIGV4aXQgJHN0YXQKKyAgZmkKKyAgcm0gLWYgIiRkZXBmaWxlIgorICAjIEVhY2ggbGluZSBpcyBvZiB0aGUgZm9ybSBgZm9vLm86IGRlcGVuZGVudC5oJywKKyAgIyBvciBgZm9vLm86IGRlcDEuaCBkZXAyLmggXCcsIG9yIGAgZGVwMy5oIGRlcDQuaCBcJy4KKyAgIyBEbyB0d28gcGFzc2VzLCBvbmUgdG8ganVzdCBjaGFuZ2UgdGhlc2UgdG8KKyAgIyBgJG9iamVjdDogZGVwZW5kZW50LmgnIGFuZCBvbmUgdG8gc2ltcGx5IGBkZXBlbmRlbnQuaDonLgorICBzZWQgInMsXlteOl0qOiwkb2JqZWN0IDosIiA8ICIkdG1wZGVwZmlsZSIgPiAiJGRlcGZpbGUiCisgICMgU29tZSB2ZXJzaW9ucyBvZiB0aGUgSFBVWCAxMC4yMCBzZWQgY2FuJ3QgcHJvY2VzcyB0aGlzIGludm9jYXRpb24KKyAgIyBjb3JyZWN0bHkuICBCcmVha2luZyBpdCBpbnRvIHR3byBzZWQgaW52b2NhdGlvbnMgaXMgYSB3b3JrYXJvdW5kLgorICBzZWQgJ3MsXlteOl0qOiBcKC4qXCkkLFwxLDtzL15cXCQvLzsvXiQvZDsvOiQvZCcgPCAiJHRtcGRlcGZpbGUiIHwKKyAgICBzZWQgLWUgJ3MvJC8gOi8nID4+ICIkZGVwZmlsZSIKKyAgcm0gLWYgIiR0bXBkZXBmaWxlIgorICA7OworCit0cnU2NCkKKyAgICMgVGhlIFRydTY0IGNvbXBpbGVyIHVzZXMgLU1EIHRvIGdlbmVyYXRlIGRlcGVuZGVuY2llcyBhcyBhIHNpZGUKKyAgICMgZWZmZWN0LiAgYGNjIC1NRCAtbyBmb28ubyAuLi4nIHB1dHMgdGhlIGRlcGVuZGVuY2llcyBpbnRvIGBmb28uby5kJy4KKyAgICMgQXQgbGVhc3Qgb24gQWxwaGEvUmVkaGF0IDYuMSwgQ29tcGFxIENDQyBWNi4yLTUwNCBzZWVtcyB0byBwdXQKKyAgICMgZGVwZW5kZW5jaWVzIGluIGBmb28uZCcgaW5zdGVhZCwgc28gd2UgY2hlY2sgZm9yIHRoYXQgdG9vLgorICAgIyBTdWJkaXJlY3RvcmllcyBhcmUgcmVzcGVjdGVkLgorICAgZGlyPWBlY2hvICIkb2JqZWN0IiB8IHNlZCAtZSAnc3wvW14vXSokfC98J2AKKyAgIHRlc3QgIngkZGlyIiA9ICJ4JG9iamVjdCIgJiYgZGlyPQorICAgYmFzZT1gZWNobyAiJG9iamVjdCIgfCBzZWQgLWUgJ3N8Xi4qL3x8JyAtZSAncy9cLm8kLy8nIC1lICdzL1wubG8kLy8nYAorCisgICBpZiB0ZXN0ICIkbGlidG9vbCIgPSB5ZXM7IHRoZW4KKyAgICAgICMgV2l0aCBUcnU2NCBjYywgc2hhcmVkIG9iamVjdHMgY2FuIGFsc28gYmUgdXNlZCB0byBtYWtlIGEKKyAgICAgICMgc3RhdGljIGxpYnJhcnkuICBUaGlzIG1lY2FuaXNtIGlzIHVzZWQgaW4gbGlidG9vbCAxLjQgc2VyaWVzIHRvCisgICAgICAjIGhhbmRsZSBib3RoIHNoYXJlZCBhbmQgc3RhdGljIGxpYnJhcmllcyBpbiBhIHNpbmdsZSBjb21waWxhdGlvbi4KKyAgICAgICMgV2l0aCBsaWJ0b29sIDEuNCwgZGVwZW5kZW5jaWVzIHdlcmUgb3V0cHV0IGluICRkaXIubGlicy8kYmFzZS5sby5kLgorICAgICAgIworICAgICAgIyBXaXRoIGxpYnRvb2wgMS41IHRoaXMgZXhjZXB0aW9uIHdhcyByZW1vdmVkLCBhbmQgbGlidG9vbCBub3cKKyAgICAgICMgZ2VuZXJhdGVzIDIgc2VwYXJhdGUgb2JqZWN0cyBmb3IgdGhlIDIgbGlicmFyaWVzLiAgVGhlc2UgdHdvCisgICAgICAjIGNvbXBpbGF0aW9ucyBvdXRwdXQgZGVwZW5kZW5jaWVzIGluIGluICRkaXIubGlicy8kYmFzZS5vLmQgYW5kCisgICAgICAjIGluICRkaXIkYmFzZS5vLmQuICBXZSBoYXZlIHRvIGNoZWNrIGZvciBib3RoIGZpbGVzLCBiZWNhdXNlCisgICAgICAjIG9uZSBvZiB0aGUgdHdvIGNvbXBpbGF0aW9ucyBjYW4gYmUgZGlzYWJsZWQuICBXZSBzaG91bGQgcHJlZmVyCisgICAgICAjICRkaXIkYmFzZS5vLmQgb3ZlciAkZGlyLmxpYnMvJGJhc2Uuby5kIGJlY2F1c2UgdGhlIGxhdHRlciBpcworICAgICAgIyBhdXRvbWF0aWNhbGx5IGNsZWFuZWQgd2hlbiAubGlicy8gaXMgZGVsZXRlZCwgd2hpbGUgaWdub3JpbmcKKyAgICAgICMgdGhlIGZvcm1lciB3b3VsZCBjYXVzZSBhIGRpc3RjbGVhbmNoZWNrIHBhbmljLgorICAgICAgdG1wZGVwZmlsZTE9JGRpci5saWJzLyRiYXNlLmxvLmQgICAjIGxpYnRvb2wgMS40CisgICAgICB0bXBkZXBmaWxlMj0kZGlyJGJhc2Uuby5kICAgICAgICAgICMgbGlidG9vbCAxLjUKKyAgICAgIHRtcGRlcGZpbGUzPSRkaXIubGlicy8kYmFzZS5vLmQgICAgIyBsaWJ0b29sIDEuNQorICAgICAgdG1wZGVwZmlsZTQ9JGRpci5saWJzLyRiYXNlLmQgICAgICAjIENvbXBhcSBDQ0MgVjYuMi01MDQKKyAgICAgICIkQCIgLVdjLC1NRAorICAgZWxzZQorICAgICAgdG1wZGVwZmlsZTE9JGRpciRiYXNlLm8uZAorICAgICAgdG1wZGVwZmlsZTI9JGRpciRiYXNlLmQKKyAgICAgIHRtcGRlcGZpbGUzPSRkaXIkYmFzZS5kCisgICAgICB0bXBkZXBmaWxlND0kZGlyJGJhc2UuZAorICAgICAgIiRAIiAtTUQKKyAgIGZpCisKKyAgIHN0YXQ9JD8KKyAgIGlmIHRlc3QgJHN0YXQgLWVxIDA7IHRoZW4gOgorICAgZWxzZQorICAgICAgcm0gLWYgIiR0bXBkZXBmaWxlMSIgIiR0bXBkZXBmaWxlMiIgIiR0bXBkZXBmaWxlMyIgIiR0bXBkZXBmaWxlNCIKKyAgICAgIGV4aXQgJHN0YXQKKyAgIGZpCisKKyAgIGZvciB0bXBkZXBmaWxlIGluICIkdG1wZGVwZmlsZTEiICIkdG1wZGVwZmlsZTIiICIkdG1wZGVwZmlsZTMiICIkdG1wZGVwZmlsZTQiCisgICBkbworICAgICB0ZXN0IC1mICIkdG1wZGVwZmlsZSIgJiYgYnJlYWsKKyAgIGRvbmUKKyAgIGlmIHRlc3QgLWYgIiR0bXBkZXBmaWxlIjsgdGhlbgorICAgICAgc2VkIC1lICJzLF4uKlwuW2Etel0qOiwkb2JqZWN0OiwiIDwgIiR0bXBkZXBmaWxlIiA+ICIkZGVwZmlsZSIKKyAgICAgICMgVGhhdCdzIGEgdGFiIGFuZCBhIHNwYWNlIGluIHRoZSBbXS4KKyAgICAgIHNlZCAtZSAncyxeLipcLlthLXpdKjpbCSBdKiwsJyAtZSAncywkLDosJyA8ICIkdG1wZGVwZmlsZSIgPj4gIiRkZXBmaWxlIgorICAgZWxzZQorICAgICAgZWNobyAiI2R1bW15IiA+ICIkZGVwZmlsZSIKKyAgIGZpCisgICBybSAtZiAiJHRtcGRlcGZpbGUiCisgICA7OworCisjbm9zaWRlZWZmZWN0KQorICAjIFRoaXMgY29tbWVudCBhYm92ZSBpcyB1c2VkIGJ5IGF1dG9tYWtlIHRvIHRlbGwgc2lkZS1lZmZlY3QKKyAgIyBkZXBlbmRlbmN5IHRyYWNraW5nIG1lY2hhbmlzbXMgZnJvbSBzbG93ZXIgb25lcy4KKworZGFzaG1zdGRvdXQpCisgICMgSW1wb3J0YW50IG5vdGU6IGluIG9yZGVyIHRvIHN1cHBvcnQgdGhpcyBtb2RlLCBhIGNvbXBpbGVyICptdXN0KgorICAjIGFsd2F5cyB3cml0ZSB0aGUgcHJlcHJvY2Vzc2VkIGZpbGUgdG8gc3Rkb3V0LCByZWdhcmRsZXNzIG9mIC1vLgorICAiJEAiIHx8IGV4aXQgJD8KKworICAjIFJlbW92ZSB0aGUgY2FsbCB0byBMaWJ0b29sLgorICBpZiB0ZXN0ICIkbGlidG9vbCIgPSB5ZXM7IHRoZW4KKyAgICB3aGlsZSB0ZXN0ICQxICE9ICctLW1vZGU9Y29tcGlsZSc7IGRvCisgICAgICBzaGlmdAorICAgIGRvbmUKKyAgICBzaGlmdAorICBmaQorCisgICMgUmVtb3ZlIGAtbyAkb2JqZWN0Jy4KKyAgSUZTPSIgIgorICBmb3IgYXJnCisgIGRvCisgICAgY2FzZSAkYXJnIGluCisgICAgLW8pCisgICAgICBzaGlmdAorICAgICAgOzsKKyAgICAkb2JqZWN0KQorICAgICAgc2hpZnQKKyAgICAgIDs7CisgICAgKikKKyAgICAgIHNldCBmbm9yZCAiJEAiICIkYXJnIgorICAgICAgc2hpZnQgIyBmbm9yZAorICAgICAgc2hpZnQgIyAkYXJnCisgICAgICA7OworICAgIGVzYWMKKyAgZG9uZQorCisgIHRlc3QgLXogIiRkYXNobWZsYWciICYmIGRhc2htZmxhZz0tTQorICAjIFJlcXVpcmUgYXQgbGVhc3QgdHdvIGNoYXJhY3RlcnMgYmVmb3JlIHNlYXJjaGluZyBmb3IgYDonCisgICMgaW4gdGhlIHRhcmdldCBuYW1lLiAgVGhpcyBpcyB0byBjb3BlIHdpdGggRE9TLXN0eWxlIGZpbGVuYW1lczoKKyAgIyBhIGRlcGVuZGVuY3kgc3VjaCBhcyBgYzovZm9vL2JhcicgY291bGQgYmUgc2VlbiBhcyB0YXJnZXQgYGMnIG90aGVyd2lzZS4KKyAgIiRAIiAkZGFzaG1mbGFnIHwKKyAgICBzZWQgJ3M6XlsgIF0qW146IF1bXjpdW146XSpcOlsgICAgXSo6JyIkb2JqZWN0IidcOiA6JyA+ICIkdG1wZGVwZmlsZSIKKyAgcm0gLWYgIiRkZXBmaWxlIgorICBjYXQgPCAiJHRtcGRlcGZpbGUiID4gIiRkZXBmaWxlIgorICB0ciAnICcgJworJyA8ICIkdG1wZGVwZmlsZSIgfCBcCisjIyBTb21lIHZlcnNpb25zIG9mIHRoZSBIUFVYIDEwLjIwIHNlZCBjYW4ndCBwcm9jZXNzIHRoaXMgaW52b2NhdGlvbgorIyMgY29ycmVjdGx5LiAgQnJlYWtpbmcgaXQgaW50byB0d28gc2VkIGludm9jYXRpb25zIGlzIGEgd29ya2Fyb3VuZC4KKyAgICBzZWQgLWUgJ3MvXlxcJC8vJyAtZSAnL14kL2QnIC1lICcvOiQvZCcgfCBzZWQgLWUgJ3MvJC8gOi8nID4+ICIkZGVwZmlsZSIKKyAgcm0gLWYgIiR0bXBkZXBmaWxlIgorICA7OworCitkYXNoWG1zdGRvdXQpCisgICMgVGhpcyBjYXNlIG9ubHkgZXhpc3RzIHRvIHNhdGlzZnkgZGVwZW5kLm00LiAgSXQgaXMgbmV2ZXIgYWN0dWFsbHkKKyAgIyBydW4sIGFzIHRoaXMgbW9kZSBpcyBzcGVjaWFsbHkgcmVjb2duaXplZCBpbiB0aGUgcHJlYW1ibGUuCisgIGV4aXQgMQorICA7OworCittYWtlZGVwZW5kKQorICAiJEAiIHx8IGV4aXQgJD8KKyAgIyBSZW1vdmUgYW55IExpYnRvb2wgY2FsbAorICBpZiB0ZXN0ICIkbGlidG9vbCIgPSB5ZXM7IHRoZW4KKyAgICB3aGlsZSB0ZXN0ICQxICE9ICctLW1vZGU9Y29tcGlsZSc7IGRvCisgICAgICBzaGlmdAorICAgIGRvbmUKKyAgICBzaGlmdAorICBmaQorICAjIFggbWFrZWRlcGVuZAorICBzaGlmdAorICBjbGVhcmVkPW5vCisgIGZvciBhcmcgaW4gIiRAIjsgZG8KKyAgICBjYXNlICRjbGVhcmVkIGluCisgICAgbm8pCisgICAgICBzZXQgIiI7IHNoaWZ0CisgICAgICBjbGVhcmVkPXllcyA7OworICAgIGVzYWMKKyAgICBjYXNlICIkYXJnIiBpbgorICAgIC1EKnwtSSopCisgICAgICBzZXQgZm5vcmQgIiRAIiAiJGFyZyI7IHNoaWZ0IDs7CisgICAgIyBTdHJpcCBhbnkgb3B0aW9uIHRoYXQgbWFrZWRlcGVuZCBtYXkgbm90IHVuZGVyc3RhbmQuICBSZW1vdmUKKyAgICAjIHRoZSBvYmplY3QgdG9vLCBvdGhlcndpc2UgbWFrZWRlcGVuZCB3aWxsIHBhcnNlIGl0IGFzIGEgc291cmNlIGZpbGUuCisgICAgLSp8JG9iamVjdCkKKyAgICAgIDs7CisgICAgKikKKyAgICAgIHNldCBmbm9yZCAiJEAiICIkYXJnIjsgc2hpZnQgOzsKKyAgICBlc2FjCisgIGRvbmUKKyAgb2JqX3N1ZmZpeD0iYGVjaG8gJG9iamVjdCB8IHNlZCAncy9eLipcLi8uLydgIgorICB0b3VjaCAiJHRtcGRlcGZpbGUiCisgICR7TUFLRURFUEVORC1tYWtlZGVwZW5kfSAtbyIkb2JqX3N1ZmZpeCIgLWYiJHRtcGRlcGZpbGUiICIkQCIKKyAgcm0gLWYgIiRkZXBmaWxlIgorICBjYXQgPCAiJHRtcGRlcGZpbGUiID4gIiRkZXBmaWxlIgorICBzZWQgJzEsMmQnICIkdG1wZGVwZmlsZSIgfCB0ciAnICcgJworJyB8IFwKKyMjIFNvbWUgdmVyc2lvbnMgb2YgdGhlIEhQVVggMTAuMjAgc2VkIGNhbid0IHByb2Nlc3MgdGhpcyBpbnZvY2F0aW9uCisjIyBjb3JyZWN0bHkuICBCcmVha2luZyBpdCBpbnRvIHR3byBzZWQgaW52b2NhdGlvbnMgaXMgYSB3b3JrYXJvdW5kLgorICAgIHNlZCAtZSAncy9eXFwkLy8nIC1lICcvXiQvZCcgLWUgJy86JC9kJyB8IHNlZCAtZSAncy8kLyA6LycgPj4gIiRkZXBmaWxlIgorICBybSAtZiAiJHRtcGRlcGZpbGUiICIkdG1wZGVwZmlsZSIuYmFrCisgIDs7CisKK2NwcCkKKyAgIyBJbXBvcnRhbnQgbm90ZTogaW4gb3JkZXIgdG8gc3VwcG9ydCB0aGlzIG1vZGUsIGEgY29tcGlsZXIgKm11c3QqCisgICMgYWx3YXlzIHdyaXRlIHRoZSBwcmVwcm9jZXNzZWQgZmlsZSB0byBzdGRvdXQuCisgICIkQCIgfHwgZXhpdCAkPworCisgICMgUmVtb3ZlIHRoZSBjYWxsIHRvIExpYnRvb2wuCisgIGlmIHRlc3QgIiRsaWJ0b29sIiA9IHllczsgdGhlbgorICAgIHdoaWxlIHRlc3QgJDEgIT0gJy0tbW9kZT1jb21waWxlJzsgZG8KKyAgICAgIHNoaWZ0CisgICAgZG9uZQorICAgIHNoaWZ0CisgIGZpCisKKyAgIyBSZW1vdmUgYC1vICRvYmplY3QnLgorICBJRlM9IiAiCisgIGZvciBhcmcKKyAgZG8KKyAgICBjYXNlICRhcmcgaW4KKyAgICAtbykKKyAgICAgIHNoaWZ0CisgICAgICA7OworICAgICRvYmplY3QpCisgICAgICBzaGlmdAorICAgICAgOzsKKyAgICAqKQorICAgICAgc2V0IGZub3JkICIkQCIgIiRhcmciCisgICAgICBzaGlmdCAjIGZub3JkCisgICAgICBzaGlmdCAjICRhcmcKKyAgICAgIDs7CisgICAgZXNhYworICBkb25lCisKKyAgIiRAIiAtRSB8CisgICAgc2VkIC1uIC1lICcvXiMgWzAtOV1bMC05XSogIlwoW14iXSpcKSIuKi8gczo6IFwxIFxcOnAnIFwKKyAgICAgICAtZSAnL14jbGluZSBbMC05XVswLTldKiAiXChbXiJdKlwpIi4qLyBzOjogXDEgXFw6cCcgfAorICAgIHNlZCAnJCBzOiBcXCQ6OicgPiAiJHRtcGRlcGZpbGUiCisgIHJtIC1mICIkZGVwZmlsZSIKKyAgZWNobyAiJG9iamVjdCA6IFxcIiA+ICIkZGVwZmlsZSIKKyAgY2F0IDwgIiR0bXBkZXBmaWxlIiA+PiAiJGRlcGZpbGUiCisgIHNlZCA8ICIkdG1wZGVwZmlsZSIgJy9eJC9kO3MvXiAvLztzLyBcXCQvLztzLyQvIDovJyA+PiAiJGRlcGZpbGUiCisgIHJtIC1mICIkdG1wZGVwZmlsZSIKKyAgOzsKKworbXN2aXN1YWxjcHApCisgICMgSW1wb3J0YW50IG5vdGU6IGluIG9yZGVyIHRvIHN1cHBvcnQgdGhpcyBtb2RlLCBhIGNvbXBpbGVyICptdXN0KgorICAjIGFsd2F5cyB3cml0ZSB0aGUgcHJlcHJvY2Vzc2VkIGZpbGUgdG8gc3Rkb3V0LCByZWdhcmRsZXNzIG9mIC1vLAorICAjIGJlY2F1c2Ugd2UgbXVzdCB1c2UgLW8gd2hlbiBydW5uaW5nIGxpYnRvb2wuCisgICIkQCIgfHwgZXhpdCAkPworICBJRlM9IiAiCisgIGZvciBhcmcKKyAgZG8KKyAgICBjYXNlICIkYXJnIiBpbgorICAgICItR20ifCIvR20ifCItR2kifCIvR2kifCItWkkifCIvWkkiKQorCXNldCBmbm9yZCAiJEAiCisJc2hpZnQKKwlzaGlmdAorCTs7CisgICAgKikKKwlzZXQgZm5vcmQgIiRAIiAiJGFyZyIKKwlzaGlmdAorCXNoaWZ0CisJOzsKKyAgICBlc2FjCisgIGRvbmUKKyAgIiRAIiAtRSB8CisgIHNlZCAtbiAnL14jbGluZSBbMC05XVswLTldKiAiXChbXiJdKlwpIi8gczo6ZWNobyAiYGN5Z3BhdGggLXUgXFwiXDFcXCJgIjpwJyB8IHNvcnQgfCB1bmlxID4gIiR0bXBkZXBmaWxlIgorICBybSAtZiAiJGRlcGZpbGUiCisgIGVjaG8gIiRvYmplY3QgOiBcXCIgPiAiJGRlcGZpbGUiCisgIC4gIiR0bXBkZXBmaWxlIiB8IHNlZCAncyUgJVxcICVnJyB8IHNlZCAtbiAnL15cKC4qXCkkLyBzOjoJXDEgXFw6cCcgPj4gIiRkZXBmaWxlIgorICBlY2hvICIJIiA+PiAiJGRlcGZpbGUiCisgIC4gIiR0bXBkZXBmaWxlIiB8IHNlZCAncyUgJVxcICVnJyB8IHNlZCAtbiAnL15cKC4qXCkkLyBzOjpcMVw6OnAnID4+ICIkZGVwZmlsZSIKKyAgcm0gLWYgIiR0bXBkZXBmaWxlIgorICA7OworCitub25lKQorICBleGVjICIkQCIKKyAgOzsKKworKikKKyAgZWNobyAiVW5rbm93biBkZXBtb2RlICRkZXBtb2RlIiAxPiYyCisgIGV4aXQgMQorICA7OworZXNhYworCitleGl0IDAKKworIyBMb2NhbCBWYXJpYWJsZXM6CisjIG1vZGU6IHNoZWxsLXNjcmlwdAorIyBzaC1pbmRlbnRhdGlvbjogMgorIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCisjIHRpbWUtc3RhbXAtc3RhcnQ6ICJzY3JpcHR2ZXJzaW9uPSIKKyMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkLiUwMkgiCisjIHRpbWUtc3RhbXAtZW5kOiAiJCIKKyMgRW5kOgpkaWZmIC0tZ2l0IGEvYy9jb25maWcvaW5zdGFsbC1zaCBiL2MvY29uZmlnL2luc3RhbGwtc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNGQ0YTk1MQotLS0gL2Rldi9udWxsCisrKyBiL2MvY29uZmlnL2luc3RhbGwtc2gKQEAgLTAsMCArMSwzMjMgQEAKKyMhL2Jpbi9zaAorIyBpbnN0YWxsIC0gaW5zdGFsbCBhIHByb2dyYW0sIHNjcmlwdCwgb3IgZGF0YWZpbGUKKworc2NyaXB0dmVyc2lvbj0yMDA1LTA1LTE0LjIyCisKKyMgVGhpcyBvcmlnaW5hdGVzIGZyb20gWDExUjUgKG1pdC91dGlsL3NjcmlwdHMvaW5zdGFsbC5zaCksIHdoaWNoIHdhcworIyBsYXRlciByZWxlYXNlZCBpbiBYMTFSNiAoeGMvY29uZmlnL3V0aWwvaW5zdGFsbC5zaCkgd2l0aCB0aGUKKyMgZm9sbG93aW5nIGNvcHlyaWdodCBhbmQgbGljZW5zZS4KKyMKKyMgQ29weXJpZ2h0IChDKSAxOTk0IFggQ29uc29ydGl1bQorIworIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisjIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworIyBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorIyByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyMgc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyMKKyMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyMgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisjCisjIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisjIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorIyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisjIFggQ09OU09SVElVTSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDLQorIyBUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorIworIyBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZSBvZiB0aGUgWCBDb25zb3J0aXVtIHNoYWxsIG5vdAorIyBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbC0KKyMgaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiBhdXRob3JpemF0aW9uIGZyb20gdGhlIFggQ29uc29yLQorIyB0aXVtLgorIworIworIyBGU0YgY2hhbmdlcyB0byB0aGlzIGZpbGUgYXJlIGluIHRoZSBwdWJsaWMgZG9tYWluLgorIworIyBDYWxsaW5nIHRoaXMgc2NyaXB0IGluc3RhbGwtc2ggaXMgcHJlZmVycmVkIG92ZXIgaW5zdGFsbC5zaCwgdG8gcHJldmVudAorIyBgbWFrZScgaW1wbGljaXQgcnVsZXMgZnJvbSBjcmVhdGluZyBhIGZpbGUgY2FsbGVkIGluc3RhbGwgZnJvbSBpdAorIyB3aGVuIHRoZXJlIGlzIG5vIE1ha2VmaWxlLgorIworIyBUaGlzIHNjcmlwdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIEJTRCBpbnN0YWxsIHNjcmlwdCwgYnV0IHdhcyB3cml0dGVuCisjIGZyb20gc2NyYXRjaC4gIEl0IGNhbiBvbmx5IGluc3RhbGwgb25lIGZpbGUgYXQgYSB0aW1lLCBhIHJlc3RyaWN0aW9uCisjIHNoYXJlZCB3aXRoIG1hbnkgT1MncyBpbnN0YWxsIHByb2dyYW1zLgorCisjIHNldCBET0lUUFJPRyB0byBlY2hvIHRvIHRlc3QgdGhpcyBzY3JpcHQKKworIyBEb24ndCB1c2UgOi0gc2luY2UgNC4zQlNEIGFuZCBlYXJsaWVyIHNoZWxscyBkb24ndCBsaWtlIGl0LgorZG9pdD0iJHtET0lUUFJPRy19IgorCisjIHB1dCBpbiBhYnNvbHV0ZSBwYXRocyBpZiB5b3UgZG9uJ3QgaGF2ZSB0aGVtIGluIHlvdXIgcGF0aDsgb3IgdXNlIGVudi4gdmFycy4KKworbXZwcm9nPSIke01WUFJPRy1tdn0iCitjcHByb2c9IiR7Q1BQUk9HLWNwfSIKK2NobW9kcHJvZz0iJHtDSE1PRFBST0ctY2htb2R9IgorY2hvd25wcm9nPSIke0NIT1dOUFJPRy1jaG93bn0iCitjaGdycHByb2c9IiR7Q0hHUlBQUk9HLWNoZ3JwfSIKK3N0cmlwcHJvZz0iJHtTVFJJUFBST0ctc3RyaXB9Igorcm1wcm9nPSIke1JNUFJPRy1ybX0iCitta2RpcnByb2c9IiR7TUtESVJQUk9HLW1rZGlyfSIKKworY2htb2RjbWQ9IiRjaG1vZHByb2cgMDc1NSIKK2Nob3duY21kPQorY2hncnBjbWQ9CitzdHJpcGNtZD0KK3JtY21kPSIkcm1wcm9nIC1mIgorbXZjbWQ9IiRtdnByb2ciCitzcmM9Citkc3Q9CitkaXJfYXJnPQorZHN0YXJnPQorbm9fdGFyZ2V0X2RpcmVjdG9yeT0KKwordXNhZ2U9IlVzYWdlOiAkMCBbT1BUSU9OXS4uLiBbLVRdIFNSQ0ZJTEUgRFNURklMRQorICAgb3I6ICQwIFtPUFRJT05dLi4uIFNSQ0ZJTEVTLi4uIERJUkVDVE9SWQorICAgb3I6ICQwIFtPUFRJT05dLi4uIC10IERJUkVDVE9SWSBTUkNGSUxFUy4uLgorICAgb3I6ICQwIFtPUFRJT05dLi4uIC1kIERJUkVDVE9SSUVTLi4uCisKK0luIHRoZSAxc3QgZm9ybSwgY29weSBTUkNGSUxFIHRvIERTVEZJTEUuCitJbiB0aGUgMm5kIGFuZCAzcmQsIGNvcHkgYWxsIFNSQ0ZJTEVTIHRvIERJUkVDVE9SWS4KK0luIHRoZSA0dGgsIGNyZWF0ZSBESVJFQ1RPUklFUy4KKworT3B0aW9uczoKKy1jICAgICAgICAgKGlnbm9yZWQpCistZCAgICAgICAgIGNyZWF0ZSBkaXJlY3RvcmllcyBpbnN0ZWFkIG9mIGluc3RhbGxpbmcgZmlsZXMuCistZyBHUk9VUCAgICRjaGdycHByb2cgaW5zdGFsbGVkIGZpbGVzIHRvIEdST1VQLgorLW0gTU9ERSAgICAkY2htb2Rwcm9nIGluc3RhbGxlZCBmaWxlcyB0byBNT0RFLgorLW8gVVNFUiAgICAkY2hvd25wcm9nIGluc3RhbGxlZCBmaWxlcyB0byBVU0VSLgorLXMgICAgICAgICAkc3RyaXBwcm9nIGluc3RhbGxlZCBmaWxlcy4KKy10IERJUkVDVE9SWSAgaW5zdGFsbCBpbnRvIERJUkVDVE9SWS4KKy1UICAgICAgICAgcmVwb3J0IGFuIGVycm9yIGlmIERTVEZJTEUgaXMgYSBkaXJlY3RvcnkuCistLWhlbHAgICAgIGRpc3BsYXkgdGhpcyBoZWxwIGFuZCBleGl0LgorLS12ZXJzaW9uICBkaXNwbGF5IHZlcnNpb24gaW5mbyBhbmQgZXhpdC4KKworRW52aXJvbm1lbnQgdmFyaWFibGVzIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGNvbW1hbmRzOgorICBDSEdSUFBST0cgQ0hNT0RQUk9HIENIT1dOUFJPRyBDUFBST0cgTUtESVJQUk9HIE1WUFJPRyBSTVBST0cgU1RSSVBQUk9HCisiCisKK3doaWxlIHRlc3QgLW4gIiQxIjsgZG8KKyAgY2FzZSAkMSBpbgorICAgIC1jKSBzaGlmdAorICAgICAgICBjb250aW51ZTs7CisKKyAgICAtZCkgZGlyX2FyZz10cnVlCisgICAgICAgIHNoaWZ0CisgICAgICAgIGNvbnRpbnVlOzsKKworICAgIC1nKSBjaGdycGNtZD0iJGNoZ3JwcHJvZyAkMiIKKyAgICAgICAgc2hpZnQKKyAgICAgICAgc2hpZnQKKyAgICAgICAgY29udGludWU7OworCisgICAgLS1oZWxwKSBlY2hvICIkdXNhZ2UiOyBleGl0ICQ/OzsKKworICAgIC1tKSBjaG1vZGNtZD0iJGNobW9kcHJvZyAkMiIKKyAgICAgICAgc2hpZnQKKyAgICAgICAgc2hpZnQKKyAgICAgICAgY29udGludWU7OworCisgICAgLW8pIGNob3duY21kPSIkY2hvd25wcm9nICQyIgorICAgICAgICBzaGlmdAorICAgICAgICBzaGlmdAorICAgICAgICBjb250aW51ZTs7CisKKyAgICAtcykgc3RyaXBjbWQ9JHN0cmlwcHJvZworICAgICAgICBzaGlmdAorICAgICAgICBjb250aW51ZTs7CisKKyAgICAtdCkgZHN0YXJnPSQyCisJc2hpZnQKKwlzaGlmdAorCWNvbnRpbnVlOzsKKworICAgIC1UKSBub190YXJnZXRfZGlyZWN0b3J5PXRydWUKKwlzaGlmdAorCWNvbnRpbnVlOzsKKworICAgIC0tdmVyc2lvbikgZWNobyAiJDAgJHNjcmlwdHZlcnNpb24iOyBleGl0ICQ/OzsKKworICAgICopICAjIFdoZW4gLWQgaXMgdXNlZCwgYWxsIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIGRpcmVjdG9yaWVzIHRvIGNyZWF0ZS4KKwkjIFdoZW4gLXQgaXMgdXNlZCwgdGhlIGRlc3RpbmF0aW9uIGlzIGFscmVhZHkgc3BlY2lmaWVkLgorCXRlc3QgLW4gIiRkaXJfYXJnJGRzdGFyZyIgJiYgYnJlYWsKKyAgICAgICAgIyBPdGhlcndpc2UsIHRoZSBsYXN0IGFyZ3VtZW50IGlzIHRoZSBkZXN0aW5hdGlvbi4gIFJlbW92ZSBpdCBmcm9tICRALgorCWZvciBhcmcKKwlkbworICAgICAgICAgIGlmIHRlc3QgLW4gIiRkc3RhcmciOyB0aGVuCisJICAgICMgJEAgaXMgbm90IGVtcHR5OiBpdCBjb250YWlucyBhdCBsZWFzdCAkYXJnLgorCSAgICBzZXQgZm5vcmQgIiRAIiAiJGRzdGFyZyIKKwkgICAgc2hpZnQgIyBmbm9yZAorCSAgZmkKKwkgIHNoaWZ0ICMgYXJnCisJICBkc3Rhcmc9JGFyZworCWRvbmUKKwlicmVhazs7CisgIGVzYWMKK2RvbmUKKworaWYgdGVzdCAteiAiJDEiOyB0aGVuCisgIGlmIHRlc3QgLXogIiRkaXJfYXJnIjsgdGhlbgorICAgIGVjaG8gIiQwOiBubyBpbnB1dCBmaWxlIHNwZWNpZmllZC4iID4mMgorICAgIGV4aXQgMQorICBmaQorICAjIEl0J3MgT0sgdG8gY2FsbCBgaW5zdGFsbC1zaCAtZCcgd2l0aG91dCBhcmd1bWVudC4KKyAgIyBUaGlzIGNhbiBoYXBwZW4gd2hlbiBjcmVhdGluZyBjb25kaXRpb25hbCBkaXJlY3Rvcmllcy4KKyAgZXhpdCAwCitmaQorCitmb3Igc3JjCitkbworICAjIFByb3RlY3QgbmFtZXMgc3RhcnRpbmcgd2l0aCBgLScuCisgIGNhc2UgJHNyYyBpbgorICAgIC0qKSBzcmM9Li8kc3JjIDs7CisgIGVzYWMKKworICBpZiB0ZXN0IC1uICIkZGlyX2FyZyI7IHRoZW4KKyAgICBkc3Q9JHNyYworICAgIHNyYz0KKworICAgIGlmIHRlc3QgLWQgIiRkc3QiOyB0aGVuCisgICAgICBta2RpcmNtZD06CisgICAgICBjaG1vZGNtZD0KKyAgICBlbHNlCisgICAgICBta2RpcmNtZD0kbWtkaXJwcm9nCisgICAgZmkKKyAgZWxzZQorICAgICMgV2FpdGluZyBmb3IgdGhpcyB0byBiZSBkZXRlY3RlZCBieSB0aGUgIiRjcHByb2cgJHNyYyAkZHN0dG1wIiBjb21tYW5kCisgICAgIyBtaWdodCBjYXVzZSBkaXJlY3RvcmllcyB0byBiZSBjcmVhdGVkLCB3aGljaCB3b3VsZCBiZSBlc3BlY2lhbGx5IGJhZAorICAgICMgaWYgJHNyYyAoYW5kIHRodXMgJGRzdHRtcCkgY29udGFpbnMgJyonLgorICAgIGlmIHRlc3QgISAtZiAiJHNyYyIgJiYgdGVzdCAhIC1kICIkc3JjIjsgdGhlbgorICAgICAgZWNobyAiJDA6ICRzcmMgZG9lcyBub3QgZXhpc3QuIiA+JjIKKyAgICAgIGV4aXQgMQorICAgIGZpCisKKyAgICBpZiB0ZXN0IC16ICIkZHN0YXJnIjsgdGhlbgorICAgICAgZWNobyAiJDA6IG5vIGRlc3RpbmF0aW9uIHNwZWNpZmllZC4iID4mMgorICAgICAgZXhpdCAxCisgICAgZmkKKworICAgIGRzdD0kZHN0YXJnCisgICAgIyBQcm90ZWN0IG5hbWVzIHN0YXJ0aW5nIHdpdGggYC0nLgorICAgIGNhc2UgJGRzdCBpbgorICAgICAgLSopIGRzdD0uLyRkc3QgOzsKKyAgICBlc2FjCisKKyAgICAjIElmIGRlc3RpbmF0aW9uIGlzIGEgZGlyZWN0b3J5LCBhcHBlbmQgdGhlIGlucHV0IGZpbGVuYW1lOyB3b24ndCB3b3JrCisgICAgIyBpZiBkb3VibGUgc2xhc2hlcyBhcmVuJ3QgaWdub3JlZC4KKyAgICBpZiB0ZXN0IC1kICIkZHN0IjsgdGhlbgorICAgICAgaWYgdGVzdCAtbiAiJG5vX3RhcmdldF9kaXJlY3RvcnkiOyB0aGVuCisJZWNobyAiJDA6ICRkc3Rhcmc6IElzIGEgZGlyZWN0b3J5IiA+JjIKKwlleGl0IDEKKyAgICAgIGZpCisgICAgICBkc3Q9JGRzdC9gYmFzZW5hbWUgIiRzcmMiYAorICAgIGZpCisgIGZpCisKKyAgIyBUaGlzIHNlZCBjb21tYW5kIGVtdWxhdGVzIHRoZSBkaXJuYW1lIGNvbW1hbmQuCisgIGRzdGRpcj1gZWNobyAiJGRzdCIgfCBzZWQgLWUgJ3MsLyokLCw7cyxbXi9dKiQsLDtzLC8qJCwsO3MsXiQsLiwnYAorCisgICMgTWFrZSBzdXJlIHRoYXQgdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSBleGlzdHMuCisKKyAgIyBTa2lwIGxvdHMgb2Ygc3RhdCBjYWxscyBpbiB0aGUgdXN1YWwgY2FzZS4KKyAgaWYgdGVzdCAhIC1kICIkZHN0ZGlyIjsgdGhlbgorICAgIGRlZmF1bHRJRlM9JworCSAnCisgICAgSUZTPSIke0lGUy0kZGVmYXVsdElGU30iCisKKyAgICBvSUZTPSRJRlMKKyAgICAjIFNvbWUgc2gncyBjYW4ndCBoYW5kbGUgSUZTPS8gZm9yIHNvbWUgcmVhc29uLgorICAgIElGUz0nJScKKyAgICBzZXQgeCBgZWNobyAiJGRzdGRpciIgfCBzZWQgLWUgJ3NAL0AlQGcnIC1lICdzQF4lQC9AJ2AKKyAgICBzaGlmdAorICAgIElGUz0kb0lGUworCisgICAgcGF0aGNvbXA9CisKKyAgICB3aGlsZSB0ZXN0ICQjIC1uZSAwIDsgZG8KKyAgICAgIHBhdGhjb21wPSRwYXRoY29tcCQxCisgICAgICBzaGlmdAorICAgICAgaWYgdGVzdCAhIC1kICIkcGF0aGNvbXAiOyB0aGVuCisgICAgICAgICRta2RpcnByb2cgIiRwYXRoY29tcCIKKwkjIG1rZGlyIGNhbiBmYWlsIHdpdGggYSBgRmlsZSBleGlzdCcgZXJyb3IgaW4gY2FzZSBzZXZlcmFsCisJIyBpbnN0YWxsLXNoIGFyZSBjcmVhdGluZyB0aGUgZGlyZWN0b3J5IGNvbmN1cnJlbnRseS4gIFRoaXMKKwkjIGlzIE9LLgorCXRlc3QgLWQgIiRwYXRoY29tcCIgfHwgZXhpdAorICAgICAgZmkKKyAgICAgIHBhdGhjb21wPSRwYXRoY29tcC8KKyAgICBkb25lCisgIGZpCisKKyAgaWYgdGVzdCAtbiAiJGRpcl9hcmciOyB0aGVuCisgICAgJGRvaXQgJG1rZGlyY21kICIkZHN0IiBcCisgICAgICAmJiB7IHRlc3QgLXogIiRjaG93bmNtZCIgfHwgJGRvaXQgJGNob3duY21kICIkZHN0IjsgfSBcCisgICAgICAmJiB7IHRlc3QgLXogIiRjaGdycGNtZCIgfHwgJGRvaXQgJGNoZ3JwY21kICIkZHN0IjsgfSBcCisgICAgICAmJiB7IHRlc3QgLXogIiRzdHJpcGNtZCIgfHwgJGRvaXQgJHN0cmlwY21kICIkZHN0IjsgfSBcCisgICAgICAmJiB7IHRlc3QgLXogIiRjaG1vZGNtZCIgfHwgJGRvaXQgJGNobW9kY21kICIkZHN0IjsgfQorCisgIGVsc2UKKyAgICBkc3RmaWxlPWBiYXNlbmFtZSAiJGRzdCJgCisKKyAgICAjIE1ha2UgYSBjb3VwbGUgb2YgdGVtcCBmaWxlIG5hbWVzIGluIHRoZSBwcm9wZXIgZGlyZWN0b3J5LgorICAgIGRzdHRtcD0kZHN0ZGlyL19pbnN0LiQkXworICAgIHJtdG1wPSRkc3RkaXIvX3JtLiQkXworCisgICAgIyBUcmFwIHRvIGNsZWFuIHVwIHRob3NlIHRlbXAgZmlsZXMgYXQgZXhpdC4KKyAgICB0cmFwICdyZXQ9JD87IHJtIC1mICIkZHN0dG1wIiAiJHJtdG1wIiAmJiBleGl0ICRyZXQnIDAKKyAgICB0cmFwICcoZXhpdCAkPyk7IGV4aXQnIDEgMiAxMyAxNQorCisgICAgIyBDb3B5IHRoZSBmaWxlIG5hbWUgdG8gdGhlIHRlbXAgbmFtZS4KKyAgICAkZG9pdCAkY3Bwcm9nICIkc3JjIiAiJGRzdHRtcCIgJiYKKworICAgICMgYW5kIHNldCBhbnkgb3B0aW9uczsgZG8gY2htb2QgbGFzdCB0byBwcmVzZXJ2ZSBzZXR1aWQgYml0cy4KKyAgICAjCisgICAgIyBJZiBhbnkgb2YgdGhlc2UgZmFpbCwgd2UgYWJvcnQgdGhlIHdob2xlIHRoaW5nLiAgSWYgd2Ugd2FudCB0bworICAgICMgaWdub3JlIGVycm9ycyBmcm9tIGFueSBvZiB0aGVzZSwganVzdCBtYWtlIHN1cmUgbm90IHRvIGlnbm9yZQorICAgICMgZXJyb3JzIGZyb20gdGhlIGFib3ZlICIkZG9pdCAkY3Bwcm9nICRzcmMgJGRzdHRtcCIgY29tbWFuZC4KKyAgICAjCisgICAgeyB0ZXN0IC16ICIkY2hvd25jbWQiIHx8ICRkb2l0ICRjaG93bmNtZCAiJGRzdHRtcCI7IH0gXAorICAgICAgJiYgeyB0ZXN0IC16ICIkY2hncnBjbWQiIHx8ICRkb2l0ICRjaGdycGNtZCAiJGRzdHRtcCI7IH0gXAorICAgICAgJiYgeyB0ZXN0IC16ICIkc3RyaXBjbWQiIHx8ICRkb2l0ICRzdHJpcGNtZCAiJGRzdHRtcCI7IH0gXAorICAgICAgJiYgeyB0ZXN0IC16ICIkY2htb2RjbWQiIHx8ICRkb2l0ICRjaG1vZGNtZCAiJGRzdHRtcCI7IH0gJiYKKworICAgICMgTm93IHJlbmFtZSB0aGUgZmlsZSB0byB0aGUgcmVhbCBkZXN0aW5hdGlvbi4KKyAgICB7ICRkb2l0ICRtdmNtZCAtZiAiJGRzdHRtcCIgIiRkc3RkaXIvJGRzdGZpbGUiIDI+L2Rldi9udWxsIFwKKyAgICAgIHx8IHsKKwkgICAjIFRoZSByZW5hbWUgZmFpbGVkLCBwZXJoYXBzIGJlY2F1c2UgbXYgY2FuJ3QgcmVuYW1lIHNvbWV0aGluZyBlbHNlCisJICAgIyB0byBpdHNlbGYsIG9yIHBlcmhhcHMgYmVjYXVzZSBtdiBpcyBzbyBhbmNpZW50IHRoYXQgaXQgZG9lcyBub3QKKwkgICAjIHN1cHBvcnQgLWYuCisKKwkgICAjIE5vdyByZW1vdmUgb3IgbW92ZSBhc2lkZSBhbnkgb2xkIGZpbGUgYXQgZGVzdGluYXRpb24gbG9jYXRpb24uCisJICAgIyBXZSB0cnkgdGhpcyB0d28gd2F5cyBzaW5jZSBybSBjYW4ndCB1bmxpbmsgaXRzZWxmIG9uIHNvbWUKKwkgICAjIHN5c3RlbXMgYW5kIHRoZSBkZXN0aW5hdGlvbiBmaWxlIG1pZ2h0IGJlIGJ1c3kgZm9yIG90aGVyCisJICAgIyByZWFzb25zLiAgSW4gdGhpcyBjYXNlLCB0aGUgZmluYWwgY2xlYW51cCBtaWdodCBmYWlsIGJ1dCB0aGUgbmV3CisJICAgIyBmaWxlIHNob3VsZCBzdGlsbCBpbnN0YWxsIHN1Y2Nlc3NmdWxseS4KKwkgICB7CisJICAgICBpZiB0ZXN0IC1mICIkZHN0ZGlyLyRkc3RmaWxlIjsgdGhlbgorCSAgICAgICAkZG9pdCAkcm1jbWQgLWYgIiRkc3RkaXIvJGRzdGZpbGUiIDI+L2Rldi9udWxsIFwKKwkgICAgICAgfHwgJGRvaXQgJG12Y21kIC1mICIkZHN0ZGlyLyRkc3RmaWxlIiAiJHJtdG1wIiAyPi9kZXYvbnVsbCBcCisJICAgICAgIHx8IHsKKwkJIGVjaG8gIiQwOiBjYW5ub3QgdW5saW5rIG9yIHJlbmFtZSAkZHN0ZGlyLyRkc3RmaWxlIiA+JjIKKwkJIChleGl0IDEpOyBleGl0IDEKKwkgICAgICAgfQorCSAgICAgZWxzZQorCSAgICAgICA6CisJICAgICBmaQorCSAgIH0gJiYKKworCSAgICMgTm93IHJlbmFtZSB0aGUgZmlsZSB0byB0aGUgcmVhbCBkZXN0aW5hdGlvbi4KKwkgICAkZG9pdCAkbXZjbWQgIiRkc3R0bXAiICIkZHN0ZGlyLyRkc3RmaWxlIgorCSB9CisgICAgfQorICBmaSB8fCB7IChleGl0IDEpOyBleGl0IDE7IH0KK2RvbmUKKworIyBUaGUgZmluYWwgbGl0dGxlIHRyaWNrIHRvICJjb3JyZWN0bHkiIHBhc3MgdGhlIGV4aXQgc3RhdHVzIHRvIHRoZSBleGl0IHRyYXAuCit7CisgIChleGl0IDApOyBleGl0IDAKK30KKworIyBMb2NhbCB2YXJpYWJsZXM6CisjIGV2YWw6IChhZGQtaG9vayAnd3JpdGUtZmlsZS1ob29rcyAndGltZS1zdGFtcCkKKyMgdGltZS1zdGFtcC1zdGFydDogInNjcmlwdHZlcnNpb249IgorIyB0aW1lLXN0YW1wLWZvcm1hdDogIiU6eS0lMDJtLSUwMmQuJTAySCIKKyMgdGltZS1zdGFtcC1lbmQ6ICIkIgorIyBFbmQ6CmRpZmYgLS1naXQgYS9jL2NvbmZpZy9sdG1haW4uc2ggYi9jL2NvbmZpZy9sdG1haW4uc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMWEyMjRhYwotLS0gL2Rldi9udWxsCisrKyBiL2MvY29uZmlnL2x0bWFpbi5zaApAQCAtMCwwICsxLDY0MjYgQEAKKyMgbHRtYWluLnNoIC0gUHJvdmlkZSBnZW5lcmFsaXplZCBsaWJyYXJ5LWJ1aWxkaW5nIHN1cHBvcnQgc2VydmljZXMuCisjIE5PVEU6IENoYW5naW5nIHRoaXMgZmlsZSB3aWxsIG5vdCBhZmZlY3QgYW55dGhpbmcgdW50aWwgeW91IHJlcnVuIGNvbmZpZ3VyZS4KKyMKKyMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0CisjIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBPcmlnaW5hbGx5IGJ5IEdvcmRvbiBNYXR6aWdrZWl0IDxnb3JkQGdudS5haS5taXQuZWR1PiwgMTk5NgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorIworIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91CisjIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQorIyBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHlvdSBtYXkgaW5jbHVkZSBpdCB1bmRlcgorIyB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCisKK2Jhc2VuYW1lPSJzLF4uKi8sLGciCisKKyMgV29yayBhcm91bmQgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBpc3N1ZSBvbiBJUklYIDYuNS4gT24gSVJJWCA2LjQrLCBzaAorIyBpcyBrc2ggYnV0IHdoZW4gdGhlIHNoZWxsIGlzIGludm9rZWQgYXMgInNoIiBhbmQgdGhlIGN1cnJlbnQgdmFsdWUgb2YKKyMgdGhlIF9YUEcgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IGVxdWFsIHRvIDEgKG9uZSksIHRoZSBzcGVjaWFsCisjIHBvc2l0aW9uYWwgcGFyYW1ldGVyICQwLCB3aXRoaW4gYSBmdW5jdGlvbiBjYWxsLCBpcyB0aGUgbmFtZSBvZiB0aGUKKyMgZnVuY3Rpb24uCitwcm9ncGF0aD0iJDAiCisKKyMgVGhlIG5hbWUgb2YgdGhpcyBwcm9ncmFtOgorcHJvZ25hbWU9YGVjaG8gIiRwcm9ncGF0aCIgfCAkU0VEICRiYXNlbmFtZWAKK21vZGVuYW1lPSIkcHJvZ25hbWUiCisKKyMgR2xvYmFsIHZhcmlhYmxlczoKK0VYSVRfU1VDQ0VTUz0wCitFWElUX0ZBSUxVUkU9MQorCitQUk9HUkFNPWx0bWFpbi5zaAorUEFDS0FHRT1saWJ0b29sCitWRVJTSU9OPTEuNS42CitUSU1FU1RBTVA9IiAoMS4xMjIwLjIuOTUgMjAwNC8wNC8xMSAwNTo1MDo0MikgRGViaWFuJFJldjogMjI0ICQiCisKKworIyBDaGVjayB0aGF0IHdlIGhhdmUgYSB3b3JraW5nICRlY2hvLgoraWYgdGVzdCAiWCQxIiA9IFgtLW5vLXJlZXhlYzsgdGhlbgorICAjIERpc2NhcmQgdGhlIC0tbm8tcmVleGVjIGZsYWcsIGFuZCBjb250aW51ZS4KKyAgc2hpZnQKK2VsaWYgdGVzdCAiWCQxIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KKyAgIyBBdm9pZCBpbmxpbmUgZG9jdW1lbnQgaGVyZSwgaXQgbWF5IGJlIGxlZnQgb3ZlcgorICA6CitlbGlmIHRlc3QgIlhgKCRlY2hvICdcdCcpIDI+L2Rldi9udWxsYCIgPSAnWFx0JzsgdGhlbgorICAjIFlpcHBlZSwgJGVjaG8gd29ya3MhCisgIDoKK2Vsc2UKKyAgIyBSZXN0YXJ0IHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLCBhbmQgdGhlbiBtYXliZSAkZWNobyB3aWxsIHdvcmsuCisgIGV4ZWMgJFNIRUxMICIkcHJvZ3BhdGgiIC0tbm8tcmVleGVjICR7MSsiJEAifQorZmkKKworaWYgdGVzdCAiWCQxIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KKyAgIyB1c2VkIGFzIGZhbGxiYWNrIGVjaG8KKyAgc2hpZnQKKyAgY2F0IDw8RU9GCiskKgorRU9GCisgIGV4aXQgJEVYSVRfU1VDQ0VTUworZmkKKworZGVmYXVsdF9tb2RlPQoraGVscD0iVHJ5IFxgJHByb2duYW1lIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgorbWFnaWM9IiUlJU1BR0lDIHZhcmlhYmxlJSUlIgorbWtkaXI9Im1rZGlyIgorbXY9Im12IC1mIgorcm09InJtIC1mIgorCisjIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBoZWxwcyB1cyBkbyByb2J1c3QgcXVvdGluZy4gIEl0IGJhY2tzbGFzaGlmaWVzCisjIG1ldGFjaGFyYWN0ZXJzIHRoYXQgYXJlIHN0aWxsIGFjdGl2ZSB3aXRoaW4gZG91YmxlLXF1b3RlZCBzdHJpbmdzLgorWHNlZD0iJHtTRUR9IicgLWUgMXMvXlgvLycKK3NlZF9xdW90ZV9zdWJzdD0ncy9cKFtcXGBcXCIkXFxcXF1cKS9cXFwxL2cnCisjIHRlc3QgRUJDRElDIG9yIEFTQ0lJCitjYXNlIGBlY2hvIEF8dHIgQSAnXDMwMSdgIGluCisgQSkgIyBFQkNESUMgYmFzZWQgc3lzdGVtCisgIFNQMk5MPSJ0ciAnXDEwMCcgJ1xuJyIKKyAgTkwyU1A9InRyICdcclxuJyAnXDEwMFwxMDAnIgorICA7OworICopICMgQXNzdW1lIEFTQ0lJIGJhc2VkIHN5c3RlbQorICBTUDJOTD0idHIgJ1wwNDAnICdcMDEyJyIKKyAgTkwyU1A9InRyICdcMDE1XDAxMicgJ1wwNDBcMDQwJyIKKyAgOzsKK2VzYWMKKworIyBOTFMgbnVpc2FuY2VzLgorIyBPbmx5IHNldCBMQU5HIGFuZCBMQ19BTEwgdG8gQyBpZiBhbHJlYWR5IHNldC4KKyMgVGhlc2UgbXVzdCBub3QgYmUgc2V0IHVuY29uZGl0aW9uYWxseSBiZWNhdXNlIG5vdCBhbGwgc3lzdGVtcyB1bmRlcnN0YW5kCisjIGUuZy4gTEFORz1DIChub3RhYmx5IFNDTykuCisjIFdlIHNhdmUgdGhlIG9sZCB2YWx1ZXMgdG8gcmVzdG9yZSBkdXJpbmcgZXhlY3V0ZSBtb2RlLgoraWYgdGVzdCAiJHtMQ19BTEwrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgc2F2ZV9MQ19BTEw9IiRMQ19BTEwiOyBMQ19BTEw9QzsgZXhwb3J0IExDX0FMTAorZmkKK2lmIHRlc3QgIiR7TEFORytzZXR9IiA9IHNldDsgdGhlbgorICBzYXZlX0xBTkc9IiRMQU5HIjsgTEFORz1DOyBleHBvcnQgTEFORworZmkKKworIyBNYWtlIHN1cmUgSUZTIGhhcyBhIHNlbnNpYmxlIGRlZmF1bHQKKzogJHtJRlM9IiAJCisifQorCitpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiAhPSB5ZXM7IHRoZW4KKyAgJGVjaG8gIiRtb2RlbmFtZTogbm90IGNvbmZpZ3VyZWQgdG8gYnVpbGQgYW55IGtpbmQgb2YgbGlicmFyeSIgMT4mMgorICAkZWNobyAiRmF0YWwgY29uZmlndXJhdGlvbiBlcnJvci4gIFNlZSB0aGUgJFBBQ0tBR0UgZG9jcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iIDE+JjIKKyAgZXhpdCAkRVhJVF9GQUlMVVJFCitmaQorCisjIEdsb2JhbCB2YXJpYWJsZXMuCittb2RlPSRkZWZhdWx0X21vZGUKK25vbm9wdD0KK3ByZXY9CitwcmV2b3B0PQorcnVuPQorc2hvdz0iJGVjaG8iCitzaG93X2hlbHA9CitleGVjdXRlX2RsZmlsZXM9CitsbzJvPSJzL1xcLmxvXCQvLiR7b2JqZXh0fS8iCitvMmxvPSJzL1xcLiR7b2JqZXh0fVwkLy5sby8iCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgU2hlbGwgZnVuY3Rpb24gZGVmaW5pdGlvbnM6CisjIFRoaXMgc2VlbXMgdG8gYmUgdGhlIGJlc3QgcGxhY2UgZm9yIHRoZW0KKworIyBmdW5jX3dpbjMyX2xpYmlkIGFyZworIyByZXR1cm4gdGhlIGxpYnJhcnkgdHlwZSBvZiBmaWxlICdhcmcnCisjCisjIE5lZWQgYSBsb3Qgb2YgZ29vIHRvIGhhbmRsZSAqYm90aCogRExMcyBhbmQgaW1wb3J0IGxpYnMKKyMgSGFzIHRvIGJlIGEgc2hlbGwgZnVuY3Rpb24gaW4gb3JkZXIgdG8gJ2VhdCcgdGhlIGFyZ3VtZW50CisjIHRoYXQgaXMgc3VwcGxpZWQgd2hlbiAkZmlsZV9tYWdpY19jb21tYW5kIGlzIGNhbGxlZC4KK2Z1bmNfd2luMzJfbGliaWQgKCkgeworICB3aW4zMl9saWJpZF90eXBlPSJ1bmtub3duIgorICB3aW4zMl9maWxlcmVzPWBmaWxlIC1MICQxIDI+L2Rldi9udWxsYAorICBjYXNlICR3aW4zMl9maWxlcmVzIGluCisgICphclwgYXJjaGl2ZVwgaW1wb3J0XCBsaWJyYXJ5KikgIyBkZWZpbml0ZWx5IGltcG9ydAorICAgIHdpbjMyX2xpYmlkX3R5cGU9Ing4NiBhcmNoaXZlIGltcG9ydCIKKyAgICA7OworICAqYXJcIGFyY2hpdmUqKSAjIGNvdWxkIGJlIGFuIGltcG9ydCwgb3Igc3RhdGljCisgICAgaWYgZXZhbCAkT0JKRFVNUCAtZiAkMSB8ICRTRUQgLWUgJzEwcScgMj4vZGV2L251bGwgfCBcCisgICAgICAkRUdSRVAgLWUgJ2ZpbGUgZm9ybWF0IHBlLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycgPi9kZXYvbnVsbCA7IHRoZW4KKyAgICAgIHdpbjMyX25tcmVzPWBldmFsICROTSAtZiBwb3NpeCAtQSAkMSB8IFwKKwlzZWQgLW4gLWUgJzEsMTAwey8gSSAve3g7L2ltcG9ydC8he3MvXi9pbXBvcnQvO2g7cDt9O3g7fTt9J2AKKyAgICAgIGlmIHRlc3QgIlgkd2luMzJfbm1yZXMiID0gIlhpbXBvcnQiIDsgdGhlbgorICAgICAgICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgYXJjaGl2ZSBpbXBvcnQiCisgICAgICBlbHNlCisgICAgICAgIHdpbjMyX2xpYmlkX3R5cGU9Ing4NiBhcmNoaXZlIHN0YXRpYyIKKyAgICAgIGZpCisgICAgZmkKKyAgICA7OworICAqRExMKikKKyAgICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgRExMIgorICAgIDs7CisgICpleGVjdXRhYmxlKikgIyBidXQgc2hlbGwgc2NyaXB0cyBhcmUgImV4ZWN1dGFibGUiIHRvby4uLgorICAgIGNhc2UgJHdpbjMyX2ZpbGVyZXMgaW4KKyAgICAqTVNcIFdpbmRvd3NcIFBFXCBJbnRlbCopCisgICAgICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgRExMIgorICAgICAgOzsKKyAgICBlc2FjCisgICAgOzsKKyAgZXNhYworICAkZWNobyAkd2luMzJfbGliaWRfdHlwZQorfQorCisKKyMgZnVuY19pbmZlcl90YWcgYXJnCisjIEluZmVyIHRhZ2dlZCBjb25maWd1cmF0aW9uIHRvIHVzZSBpZiBhbnkgYXJlIGF2YWlsYWJsZSBhbmQKKyMgaWYgb25lIHdhc24ndCBjaG9zZW4gdmlhIHRoZSAiLS10YWciIGNvbW1hbmQgbGluZSBvcHRpb24uCisjIE9ubHkgYXR0ZW1wdCB0aGlzIGlmIHRoZSBjb21waWxlciBpbiB0aGUgYmFzZSBjb21waWxlCisjIGNvbW1hbmQgZG9lc24ndCBtYXRjaCB0aGUgZGVmYXVsdCBjb21waWxlci4KKyMgYXJnIGlzIHVzdWFsbHkgb2YgdGhlIGZvcm0gJ2djYyAuLi4nCitmdW5jX2luZmVyX3RhZyAoKSB7CisgICAgaWYgdGVzdCAtbiAiJGF2YWlsYWJsZV90YWdzIiAmJiB0ZXN0IC16ICIkdGFnbmFtZSI7IHRoZW4KKyAgICAgIENDX3F1b3RlZD0KKyAgICAgIGZvciBhcmcgaW4gJENDOyBkbworCWNhc2UgJGFyZyBpbgorCSAgKltcW1x+XCNcXlwmXCpcKFwpXHtcfVx8XDtcPFw+XD9cJ1wgXAldKnwqXSp8IiIpCisJICBhcmc9IlwiJGFyZ1wiIgorCSAgOzsKKwllc2FjCisJQ0NfcXVvdGVkPSIkQ0NfcXVvdGVkICRhcmciCisgICAgICBkb25lCisgICAgICBjYXNlICRAIGluCisgICAgICAjIEJsYW5rcyBpbiB0aGUgY29tbWFuZCBtYXkgaGF2ZSBiZWVuIHN0cmlwcGVkIGJ5IHRoZSBjYWxsaW5nIHNoZWxsLAorICAgICAgIyBidXQgbm90IGZyb20gdGhlIENDIGVudmlyb25tZW50IHZhcmlhYmxlIHdoZW4gY29uZmlndXJlIHdhcyBydW4uCisgICAgICAiICRDQyAiKiB8ICIkQ0MgIiogfCAiIGAkZWNobyAkQ0NgICIqIHwgImAkZWNobyAkQ0NgICIqIHwgIiAkQ0NfcXVvdGVkIiogfCAiJENDX3F1b3RlZCAiKiB8ICIgYCRlY2hvICRDQ19xdW90ZWRgICIqIHwgImAkZWNobyAkQ0NfcXVvdGVkYCAiKikgOzsKKyAgICAgICMgQmxhbmtzIGF0IHRoZSBzdGFydCBvZiAkYmFzZV9jb21waWxlIHdpbGwgY2F1c2UgdGhpcyB0byBmYWlsCisgICAgICAjIGlmIHdlIGRvbid0IGNoZWNrIGZvciB0aGVtIGFzIHdlbGwuCisgICAgICAqKQorCWZvciB6IGluICRhdmFpbGFibGVfdGFnczsgZG8KKwkgIGlmIGdyZXAgIl4jICMjIyBCRUdJTiBMSUJUT09MIFRBRyBDT05GSUc6ICR6JCIgPCAiJHByb2dwYXRoIiA+IC9kZXYvbnVsbDsgdGhlbgorCSAgICAjIEV2YWx1YXRlIHRoZSBjb25maWd1cmF0aW9uLgorCSAgICBldmFsICJgJHtTRUR9IC1uIC1lICcvXiMgIyMjIEJFR0lOIExJQlRPT0wgVEFHIENPTkZJRzogJyR6JyQvLC9eIyAjIyMgRU5EIExJQlRPT0wgVEFHIENPTkZJRzogJyR6JyQvcCcgPCAkcHJvZ3BhdGhgIgorCSAgICBDQ19xdW90ZWQ9CisJICAgIGZvciBhcmcgaW4gJENDOyBkbworCSAgICAjIERvdWJsZS1xdW90ZSBhcmdzIGNvbnRhaW5pbmcgb3RoZXIgc2hlbGwgbWV0YWNoYXJhY3RlcnMuCisJICAgIGNhc2UgJGFyZyBpbgorCSAgICAgICpbXFtcflwjXF5cJlwqXChcKVx7XH1cfFw7XDxcPlw/XCdcIFwJXSp8Kl0qfCIiKQorCSAgICAgIGFyZz0iXCIkYXJnXCIiCisJICAgICAgOzsKKwkgICAgZXNhYworCSAgICBDQ19xdW90ZWQ9IiRDQ19xdW90ZWQgJGFyZyIKKwkgIGRvbmUKKwkgICAgY2FzZSAiJEAgIiBpbgorCSAgICAgICIgJENDICIqIHwgIiRDQyAiKiB8ICIgYCRlY2hvICRDQ2AgIiogfCAiYCRlY2hvICRDQ2AgIiogfCAiICRDQ19xdW90ZWQiKiB8ICIkQ0NfcXVvdGVkICIqIHwgIiBgJGVjaG8gJENDX3F1b3RlZGAgIiogfCAiYCRlY2hvICRDQ19xdW90ZWRgICIqKQorCSAgICAgICMgVGhlIGNvbXBpbGVyIGluIHRoZSBiYXNlIGNvbXBpbGUgY29tbWFuZCBtYXRjaGVzCisJICAgICAgIyB0aGUgb25lIGluIHRoZSB0YWdnZWQgY29uZmlndXJhdGlvbi4KKwkgICAgICAjIEFzc3VtZSB0aGlzIGlzIHRoZSB0YWdnZWQgY29uZmlndXJhdGlvbiB3ZSB3YW50LgorCSAgICAgIHRhZ25hbWU9JHoKKwkgICAgICBicmVhaworCSAgICAgIDs7CisJICAgIGVzYWMKKwkgIGZpCisJZG9uZQorCSMgSWYgJHRhZ25hbWUgc3RpbGwgaXNuJ3Qgc2V0LCB0aGVuIG5vIHRhZ2dlZCBjb25maWd1cmF0aW9uCisJIyB3YXMgZm91bmQgYW5kIGxldCB0aGUgdXNlciBrbm93IHRoYXQgdGhlICItLXRhZyIgY29tbWFuZAorCSMgbGluZSBvcHRpb24gbXVzdCBiZSB1c2VkLgorCWlmIHRlc3QgLXogIiR0YWduYW1lIjsgdGhlbgorCSAgJGVjaG8gIiRtb2RlbmFtZTogdW5hYmxlIHRvIGluZmVyIHRhZ2dlZCBjb25maWd1cmF0aW9uIgorCSAgJGVjaG8gIiRtb2RlbmFtZTogc3BlY2lmeSBhIHRhZyB3aXRoIFxgLS10YWcnIiAxPiYyCisJICBleGl0ICRFWElUX0ZBSUxVUkUKKyMgICAgICAgIGVsc2UKKyMgICAgICAgICAgJGVjaG8gIiRtb2RlbmFtZTogdXNpbmcgJHRhZ25hbWUgdGFnZ2VkIGNvbmZpZ3VyYXRpb24iCisJZmkKKwk7OworICAgICAgZXNhYworICAgIGZpCit9CisjIEVuZCBvZiBTaGVsbCBmdW5jdGlvbiBkZWZpbml0aW9ucworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIERhcndpbiBzdWNrcworZXZhbCBzdGRfc2hyZXh0PVwiJHNocmV4dF9jbWRzXCIKKworIyBQYXJzZSBvdXIgY29tbWFuZCBsaW5lIG9wdGlvbnMgb25jZSwgdGhvcm91Z2hseS4KK3doaWxlIHRlc3QgIiQjIiAtZ3QgMAorZG8KKyAgYXJnPSIkMSIKKyAgc2hpZnQKKworICBjYXNlICRhcmcgaW4KKyAgLSo9Kikgb3B0YXJnPWAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgJ3MvWy1fYS16QS1aMC05XSo9Ly8nYCA7OworICAqKSBvcHRhcmc9IDs7CisgIGVzYWMKKworICAjIElmIHRoZSBwcmV2aW91cyBvcHRpb24gbmVlZHMgYW4gYXJndW1lbnQsIGFzc2lnbiBpdC4KKyAgaWYgdGVzdCAtbiAiJHByZXYiOyB0aGVuCisgICAgY2FzZSAkcHJldiBpbgorICAgIGV4ZWN1dGVfZGxmaWxlcykKKyAgICAgIGV4ZWN1dGVfZGxmaWxlcz0iJGV4ZWN1dGVfZGxmaWxlcyAkYXJnIgorICAgICAgOzsKKyAgICB0YWcpCisgICAgICB0YWduYW1lPSIkYXJnIgorICAgICAgcHJlc2VydmVfYXJncz0iJHtwcmVzZXJ2ZV9hcmdzfT0kYXJnIgorCisgICAgICAjIENoZWNrIHdoZXRoZXIgdGFnbmFtZSBjb250YWlucyBvbmx5IHZhbGlkIGNoYXJhY3RlcnMKKyAgICAgIGNhc2UgJHRhZ25hbWUgaW4KKyAgICAgICpbIS1fQS1aYS16MC05LC9dKikKKwkkZWNobyAiJHByb2duYW1lOiBpbnZhbGlkIHRhZyBuYW1lOiAkdGFnbmFtZSIgMT4mMgorCWV4aXQgJEVYSVRfRkFJTFVSRQorCTs7CisgICAgICBlc2FjCisKKyAgICAgIGNhc2UgJHRhZ25hbWUgaW4KKyAgICAgIENDKQorCSMgRG9uJ3QgdGVzdCBmb3IgdGhlICJkZWZhdWx0IiBDIHRhZywgYXMgd2Uga25vdywgaXQncyB0aGVyZSwgYnV0CisJIyBub3Qgc3BlY2lhbGx5IG1hcmtlZC4KKwk7OworICAgICAgKikKKwlpZiBncmVwICJeIyAjIyMgQkVHSU4gTElCVE9PTCBUQUcgQ09ORklHOiAkdGFnbmFtZSQiIDwgIiRwcm9ncGF0aCIgPiAvZGV2L251bGw7IHRoZW4KKwkgIHRhZ2xpc3Q9IiR0YWdsaXN0ICR0YWduYW1lIgorCSAgIyBFdmFsdWF0ZSB0aGUgY29uZmlndXJhdGlvbi4KKwkgIGV2YWwgImAke1NFRH0gLW4gLWUgJy9eIyAjIyMgQkVHSU4gTElCVE9PTCBUQUcgQ09ORklHOiAnJHRhZ25hbWUnJC8sL14jICMjIyBFTkQgTElCVE9PTCBUQUcgQ09ORklHOiAnJHRhZ25hbWUnJC9wJyA8ICRwcm9ncGF0aGAiCisJZWxzZQorCSAgJGVjaG8gIiRwcm9nbmFtZTogaWdub3JpbmcgdW5rbm93biB0YWcgJHRhZ25hbWUiIDE+JjIKKwlmaQorCTs7CisgICAgICBlc2FjCisgICAgICA7OworICAgICopCisgICAgICBldmFsICIkcHJldj1cJGFyZyIKKyAgICAgIDs7CisgICAgZXNhYworCisgICAgcHJldj0KKyAgICBwcmV2b3B0PQorICAgIGNvbnRpbnVlCisgIGZpCisKKyAgIyBIYXZlIHdlIHNlZW4gYSBub24tb3B0aW9uYWwgYXJndW1lbnQgeWV0PworICBjYXNlICRhcmcgaW4KKyAgLS1oZWxwKQorICAgIHNob3dfaGVscD15ZXMKKyAgICA7OworCisgIC0tdmVyc2lvbikKKyAgICAkZWNobyAiJFBST0dSQU0gKEdOVSAkUEFDS0FHRSkgJFZFUlNJT04kVElNRVNUQU1QIgorICAgICRlY2hvCisgICAgJGVjaG8gIkNvcHlyaWdodCAoQykgMjAwMyAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuIgorICAgICRlY2hvICJUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTyIKKyAgICAkZWNobyAid2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIgorICAgIGV4aXQgJEVYSVRfU1VDQ0VTUworICAgIDs7CisKKyAgLS1jb25maWcpCisgICAgJHtTRUR9IC1lICcxLC9eIyAjIyMgQkVHSU4gTElCVE9PTCBDT05GSUcvZCcgLWUgJy9eIyAjIyMgRU5EIExJQlRPT0wgQ09ORklHLywkZCcgJHByb2dwYXRoCisgICAgIyBOb3cgcHJpbnQgdGhlIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgdGFncy4KKyAgICBmb3IgdGFnbmFtZSBpbiAkdGFnbGlzdDsgZG8KKyAgICAgICR7U0VEfSAtbiAtZSAiL14jICMjIyBCRUdJTiBMSUJUT09MIFRBRyBDT05GSUc6ICR0YWduYW1lJC8sL14jICMjIyBFTkQgTElCVE9PTCBUQUcgQ09ORklHOiAkdGFnbmFtZSQvcCIgPCAiJHByb2dwYXRoIgorICAgIGRvbmUKKyAgICBleGl0ICRFWElUX1NVQ0NFU1MKKyAgICA7OworCisgIC0tZGVidWcpCisgICAgJGVjaG8gIiRwcm9nbmFtZTogZW5hYmxpbmcgc2hlbGwgdHJhY2UgbW9kZSIKKyAgICBzZXQgLXgKKyAgICBwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkYXJnIgorICAgIDs7CisKKyAgLS1kcnktcnVuIHwgLW4pCisgICAgcnVuPToKKyAgICA7OworCisgIC0tZmVhdHVyZXMpCisgICAgJGVjaG8gImhvc3Q6ICRob3N0IgorICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzOyB0aGVuCisgICAgICAkZWNobyAiZW5hYmxlIHNoYXJlZCBsaWJyYXJpZXMiCisgICAgZWxzZQorICAgICAgJGVjaG8gImRpc2FibGUgc2hhcmVkIGxpYnJhcmllcyIKKyAgICBmaQorICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KKyAgICAgICRlY2hvICJlbmFibGUgc3RhdGljIGxpYnJhcmllcyIKKyAgICBlbHNlCisgICAgICAkZWNobyAiZGlzYWJsZSBzdGF0aWMgbGlicmFyaWVzIgorICAgIGZpCisgICAgZXhpdCAkRVhJVF9TVUNDRVNTCisgICAgOzsKKworICAtLWZpbmlzaCkgbW9kZT0iZmluaXNoIiA7OworCisgIC0tbW9kZSkgcHJldm9wdD0iLS1tb2RlIiBwcmV2PW1vZGUgOzsKKyAgLS1tb2RlPSopIG1vZGU9IiRvcHRhcmciIDs7CisKKyAgLS1wcmVzZXJ2ZS1kdXAtZGVwcykgZHVwbGljYXRlX2RlcHM9InllcyIgOzsKKworICAtLXF1aWV0IHwgLS1zaWxlbnQpCisgICAgc2hvdz06CisgICAgcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJGFyZyIKKyAgICA7OworCisgIC0tdGFnKSBwcmV2b3B0PSItLXRhZyIgcHJldj10YWcgOzsKKyAgLS10YWc9KikKKyAgICBzZXQgdGFnICIkb3B0YXJnIiAkezErIiRAIn0KKyAgICBzaGlmdAorICAgIHByZXY9dGFnCisgICAgcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgLS10YWciCisgICAgOzsKKworICAtZGxvcGVuKQorICAgIHByZXZvcHQ9Ii1kbG9wZW4iCisgICAgcHJldj1leGVjdXRlX2RsZmlsZXMKKyAgICA7OworCisgIC0qKQorICAgICRlY2hvICIkbW9kZW5hbWU6IHVucmVjb2duaXplZCBvcHRpb24gXGAkYXJnJyIgMT4mMgorICAgICRlY2hvICIkaGVscCIgMT4mMgorICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorICAgIDs7CisKKyAgKikKKyAgICBub25vcHQ9IiRhcmciCisgICAgYnJlYWsKKyAgICA7OworICBlc2FjCitkb25lCisKK2lmIHRlc3QgLW4gIiRwcmV2b3B0IjsgdGhlbgorICAkZWNobyAiJG1vZGVuYW1lOiBvcHRpb24gXGAkcHJldm9wdCcgcmVxdWlyZXMgYW4gYXJndW1lbnQiIDE+JjIKKyAgJGVjaG8gIiRoZWxwIiAxPiYyCisgIGV4aXQgJEVYSVRfRkFJTFVSRQorZmkKKworIyBJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCBpbiBhbnkgb2YgdGhlIGFjdGlvbnMsIHRoZSBjb21tYW5kIGluIGl0CisjIHdpbGwgYmUgZXhlY2VkIGF0IHRoZSBlbmQuICBUaGlzIHByZXZlbnRzIGhlcmUtZG9jdW1lbnRzIGZyb20gYmVpbmcKKyMgbGVmdCBvdmVyIGJ5IHNoZWxscy4KK2V4ZWNfY21kPQorCitpZiB0ZXN0IC16ICIkc2hvd19oZWxwIjsgdGhlbgorCisgICMgSW5mZXIgdGhlIG9wZXJhdGlvbiBtb2RlLgorICBpZiB0ZXN0IC16ICIkbW9kZSI7IHRoZW4KKyAgICAkZWNobyAiKioqIFdhcm5pbmc6IGluZmVycmluZyB0aGUgbW9kZSBvZiBvcGVyYXRpb24gaXMgZGVwcmVjYXRlZC4iIDE+JjIKKyAgICAkZWNobyAiKioqIEZ1dHVyZSB2ZXJzaW9ucyBvZiBMaWJ0b29sIHdpbGwgcmVxdWlyZSAtbW9kZT1NT0RFIGJlIHNwZWNpZmllZC4iIDE+JjIKKyAgICBjYXNlICRub25vcHQgaW4KKyAgICAqY2MgfCBjYyogfCAqKysgfCBnY2MqIHwgKi1nY2MqIHwgZysrKiB8IHhsYyopCisgICAgICBtb2RlPWxpbmsKKyAgICAgIGZvciBhcmcKKyAgICAgIGRvCisJY2FzZSAkYXJnIGluCisJLWMpCisJICAgbW9kZT1jb21waWxlCisJICAgYnJlYWsKKwkgICA7OworCWVzYWMKKyAgICAgIGRvbmUKKyAgICAgIDs7CisgICAgKmRiIHwgKmRieCB8ICpzdHJhY2UgfCAqdHJ1c3MpCisgICAgICBtb2RlPWV4ZWN1dGUKKyAgICAgIDs7CisgICAgKmluc3RhbGwqfGNwfG12KQorICAgICAgbW9kZT1pbnN0YWxsCisgICAgICA7OworICAgICpybSkKKyAgICAgIG1vZGU9dW5pbnN0YWxsCisgICAgICA7OworICAgICopCisgICAgICAjIElmIHdlIGhhdmUgbm8gbW9kZSwgYnV0IGRsZmlsZXMgd2VyZSBzcGVjaWZpZWQsIHRoZW4gZG8gZXhlY3V0ZSBtb2RlLgorICAgICAgdGVzdCAtbiAiJGV4ZWN1dGVfZGxmaWxlcyIgJiYgbW9kZT1leGVjdXRlCisKKyAgICAgICMgSnVzdCB1c2UgdGhlIGRlZmF1bHQgb3BlcmF0aW9uIG1vZGUuCisgICAgICBpZiB0ZXN0IC16ICIkbW9kZSI7IHRoZW4KKwlpZiB0ZXN0IC1uICIkbm9ub3B0IjsgdGhlbgorCSAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogY2Fubm90IGluZmVyIG9wZXJhdGlvbiBtb2RlIGZyb20gXGAkbm9ub3B0JyIgMT4mMgorCWVsc2UKKwkgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IGNhbm5vdCBpbmZlciBvcGVyYXRpb24gbW9kZSB3aXRob3V0IE1PREUtQVJHUyIgMT4mMgorCWZpCisgICAgICBmaQorICAgICAgOzsKKyAgICBlc2FjCisgIGZpCisKKyAgIyBPbmx5IGV4ZWN1dGUgbW9kZSBpcyBhbGxvd2VkIHRvIGhhdmUgLWRsb3BlbiBmbGFncy4KKyAgaWYgdGVzdCAtbiAiJGV4ZWN1dGVfZGxmaWxlcyIgJiYgdGVzdCAiJG1vZGUiICE9IGV4ZWN1dGU7IHRoZW4KKyAgICAkZWNobyAiJG1vZGVuYW1lOiB1bnJlY29nbml6ZWQgb3B0aW9uIFxgLWRsb3BlbiciIDE+JjIKKyAgICAkZWNobyAiJGhlbHAiIDE+JjIKKyAgICBleGl0ICRFWElUX0ZBSUxVUkUKKyAgZmkKKworICAjIENoYW5nZSB0aGUgaGVscCBtZXNzYWdlIHRvIGEgbW9kZS1zcGVjaWZpYyBvbmUuCisgIGdlbmVyaWNfaGVscD0iJGhlbHAiCisgIGhlbHA9IlRyeSBcYCRtb2RlbmFtZSAtLWhlbHAgLS1tb2RlPSRtb2RlJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCisKKyAgIyBUaGVzZSBtb2RlcyBhcmUgaW4gb3JkZXIgb2YgZXhlY3V0aW9uIGZyZXF1ZW5jeSBzbyB0aGF0IHRoZXkgcnVuIHF1aWNrbHkuCisgIGNhc2UgJG1vZGUgaW4KKyAgIyBsaWJ0b29sIGNvbXBpbGUgbW9kZQorICBjb21waWxlKQorICAgIG1vZGVuYW1lPSIkbW9kZW5hbWU6IGNvbXBpbGUiCisgICAgIyBHZXQgdGhlIGNvbXBpbGF0aW9uIGNvbW1hbmQgYW5kIHRoZSBzb3VyY2UgZmlsZS4KKyAgICBiYXNlX2NvbXBpbGU9CisgICAgc3JjZmlsZT0iJG5vbm9wdCIgICMgIGFsd2F5cyBrZWVwIGEgbm9uLWVtcHR5IHZhbHVlIGluICJzcmNmaWxlIgorICAgIHN1cHByZXNzX29wdD15ZXMKKyAgICBzdXBwcmVzc19vdXRwdXQ9CisgICAgYXJnX21vZGU9bm9ybWFsCisgICAgbGlib2JqPQorICAgIGxhdGVyPQorCisgICAgZm9yIGFyZworICAgIGRvCisgICAgICBjYXNlICIkYXJnX21vZGUiIGluCisgICAgICBhcmcgICkKKwkjIGRvIG5vdCAiY29udGludWUiLiAgSW5zdGVhZCwgYWRkIHRoaXMgdG8gYmFzZV9jb21waWxlCisJbGFzdGFyZz0iJGFyZyIKKwlhcmdfbW9kZT1ub3JtYWwKKwk7OworCisgICAgICB0YXJnZXQgKQorCWxpYm9iaj0iJGFyZyIKKwlhcmdfbW9kZT1ub3JtYWwKKwljb250aW51ZQorCTs7CisKKyAgICAgIG5vcm1hbCApCisJIyBBY2NlcHQgYW55IGNvbW1hbmQtbGluZSBvcHRpb25zLgorCWNhc2UgJGFyZyBpbgorCS1vKQorCSAgaWYgdGVzdCAtbiAiJGxpYm9iaiIgOyB0aGVuCisJICAgICRlY2hvICIkbW9kZW5hbWU6IHlvdSBjYW5ub3Qgc3BlY2lmeSBcYC1vJyBtb3JlIHRoYW4gb25jZSIgMT4mMgorCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgIGZpCisJICBhcmdfbW9kZT10YXJnZXQKKwkgIGNvbnRpbnVlCisJICA7OworCisJLXN0YXRpYyB8IC1wcmVmZXItcGljIHwgLXByZWZlci1ub24tcGljKQorCSAgbGF0ZXI9IiRsYXRlciAkYXJnIgorCSAgY29udGludWUKKwkgIDs7CisKKwktbm8tc3VwcHJlc3MpCisJICBzdXBwcmVzc19vcHQ9bm8KKwkgIGNvbnRpbnVlCisJICA7OworCisJLVhjb21waWxlcikKKwkgIGFyZ19tb2RlPWFyZyAgIyAgdGhlIG5leHQgb25lIGdvZXMgaW50byB0aGUgImJhc2VfY29tcGlsZSIgYXJnIGxpc3QKKwkgIGNvbnRpbnVlICAgICAgIyAgVGhlIGN1cnJlbnQgInNyY2ZpbGUiIHdpbGwgZWl0aGVyIGJlIHJldGFpbmVkIG9yCisJICA7OyAgICAgICAgICAgICMgIHJlcGxhY2VkIGxhdGVyLiAgSSB3b3VsZCBndWVzcyB0aGF0IHdvdWxkIGJlIGEgYnVnLgorCisJLVdjLCopCisJICBhcmdzPWAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgInMvXi1XYywvLyJgCisJICBsYXN0YXJnPQorCSAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JywnCisgCSAgZm9yIGFyZyBpbiAkYXJnczsgZG8KKwkgICAgSUZTPSIkc2F2ZV9pZnMiCisKKwkgICAgIyBEb3VibGUtcXVvdGUgYXJncyBjb250YWluaW5nIG90aGVyIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLgorCSAgICAjIE1hbnkgQm91cm5lIHNoZWxscyBjYW5ub3QgaGFuZGxlIGNsb3NlIGJyYWNrZXRzIGNvcnJlY3RseQorCSAgICAjIGluIHNjYW4gc2V0cywgc28gd2Ugc3BlY2lmeSBpdCBzZXBhcmF0ZWx5LgorCSAgICBjYXNlICRhcmcgaW4KKwkgICAgICAqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKKwkgICAgICBhcmc9IlwiJGFyZ1wiIgorCSAgICAgIDs7CisJICAgIGVzYWMKKwkgICAgbGFzdGFyZz0iJGxhc3RhcmcgJGFyZyIKKwkgIGRvbmUKKwkgIElGUz0iJHNhdmVfaWZzIgorCSAgbGFzdGFyZz1gJGVjaG8gIlgkbGFzdGFyZyIgfCAkWHNlZCAtZSAicy9eIC8vImAKKworCSAgIyBBZGQgdGhlIGFyZ3VtZW50cyB0byBiYXNlX2NvbXBpbGUuCisJICBiYXNlX2NvbXBpbGU9IiRiYXNlX2NvbXBpbGUgJGxhc3RhcmciCisJICBjb250aW51ZQorCSAgOzsKKworCSogKQorCSAgIyBBY2NlcHQgdGhlIGN1cnJlbnQgYXJndW1lbnQgYXMgdGhlIHNvdXJjZSBmaWxlLgorCSAgIyBUaGUgcHJldmlvdXMgInNyY2ZpbGUiIGJlY29tZXMgdGhlIGN1cnJlbnQgYXJndW1lbnQuCisJICAjCisJICBsYXN0YXJnPSIkc3JjZmlsZSIKKwkgIHNyY2ZpbGU9IiRhcmciCisJICA7OworCWVzYWMgICMgIGNhc2UgJGFyZworCTs7CisgICAgICBlc2FjICAgICMgIGNhc2UgJGFyZ19tb2RlCisKKyAgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSB0aGUgcHJldmlvdXMgYXJndW1lbnQuCisgICAgICBsYXN0YXJnPWAkZWNobyAiWCRsYXN0YXJnIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKworICAgICAgY2FzZSAkbGFzdGFyZyBpbgorICAgICAgIyBEb3VibGUtcXVvdGUgYXJncyBjb250YWluaW5nIG90aGVyIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLgorICAgICAgIyBNYW55IEJvdXJuZSBzaGVsbHMgY2Fubm90IGhhbmRsZSBjbG9zZSBicmFja2V0cyBjb3JyZWN0bHkKKyAgICAgICMgaW4gc2NhbiBzZXRzLCBzbyB3ZSBzcGVjaWZ5IGl0IHNlcGFyYXRlbHkuCisgICAgICAqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKKwlsYXN0YXJnPSJcIiRsYXN0YXJnXCIiCisJOzsKKyAgICAgIGVzYWMKKworICAgICAgYmFzZV9jb21waWxlPSIkYmFzZV9jb21waWxlICRsYXN0YXJnIgorICAgIGRvbmUgIyBmb3IgYXJnCisKKyAgICBjYXNlICRhcmdfbW9kZSBpbgorICAgIGFyZykKKyAgICAgICRlY2hvICIkbW9kZW5hbWU6IHlvdSBtdXN0IHNwZWNpZnkgYW4gYXJndW1lbnQgZm9yIC1YY29tcGlsZSIKKyAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorICAgICAgOzsKKyAgICB0YXJnZXQpCisgICAgICAkZWNobyAiJG1vZGVuYW1lOiB5b3UgbXVzdCBzcGVjaWZ5IGEgdGFyZ2V0IHdpdGggXGAtbyciIDE+JjIKKyAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorICAgICAgOzsKKyAgICAqKQorICAgICAgIyBHZXQgdGhlIG5hbWUgb2YgdGhlIGxpYnJhcnkgb2JqZWN0LgorICAgICAgWyAteiAiJGxpYm9iaiIgXSAmJiBsaWJvYmo9YCRlY2hvICJYJHNyY2ZpbGUiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKKyAgICAgIDs7CisgICAgZXNhYworCisgICAgIyBSZWNvZ25pemUgc2V2ZXJhbCBkaWZmZXJlbnQgZmlsZSBzdWZmaXhlcy4KKyAgICAjIElmIHRoZSB1c2VyIHNwZWNpZmllcyAtbyBmaWxlLm8sIGl0IGlzIHJlcGxhY2VkIHdpdGggZmlsZS5sbworICAgIHhmb3JtPSdbY0NGU2lmbXNvXScKKyAgICBjYXNlICRsaWJvYmogaW4KKyAgICAqLmFkYSkgeGZvcm09YWRhIDs7CisgICAgKi5hZGIpIHhmb3JtPWFkYiA7OworICAgICouYWRzKSB4Zm9ybT1hZHMgOzsKKyAgICAqLmFzbSkgeGZvcm09YXNtIDs7CisgICAgKi5jKyspIHhmb3JtPWMrKyA7OworICAgICouY2MpIHhmb3JtPWNjIDs7CisgICAgKi5paSkgeGZvcm09aWkgOzsKKyAgICAqLmNsYXNzKSB4Zm9ybT1jbGFzcyA7OworICAgICouY3BwKSB4Zm9ybT1jcHAgOzsKKyAgICAqLmN4eCkgeGZvcm09Y3h4IDs7CisgICAgKi5mOTApIHhmb3JtPWY5MCA7OworICAgICouZm9yKSB4Zm9ybT1mb3IgOzsKKyAgICAqLmphdmEpIHhmb3JtPWphdmEgOzsKKyAgICBlc2FjCisKKyAgICBsaWJvYmo9YCRlY2hvICJYJGxpYm9iaiIgfCAkWHNlZCAtZSAicy9cLiR4Zm9ybSQvLmxvLyJgCisKKyAgICBjYXNlICRsaWJvYmogaW4KKyAgICAqLmxvKSBvYmo9YCRlY2hvICJYJGxpYm9iaiIgfCAkWHNlZCAtZSAiJGxvMm8iYCA7OworICAgICopCisgICAgICAkZWNobyAiJG1vZGVuYW1lOiBjYW5ub3QgZGV0ZXJtaW5lIG5hbWUgb2YgbGlicmFyeSBvYmplY3QgZnJvbSBcYCRsaWJvYmonIiAxPiYyCisgICAgICBleGl0ICRFWElUX0ZBSUxVUkUKKyAgICAgIDs7CisgICAgZXNhYworCisgICAgZnVuY19pbmZlcl90YWcgJGJhc2VfY29tcGlsZQorCisgICAgZm9yIGFyZyBpbiAkbGF0ZXI7IGRvCisgICAgICBjYXNlICRhcmcgaW4KKyAgICAgIC1zdGF0aWMpCisJYnVpbGRfb2xkX2xpYnM9eWVzCisJY29udGludWUKKwk7OworCisgICAgICAtcHJlZmVyLXBpYykKKwlwaWNfbW9kZT15ZXMKKwljb250aW51ZQorCTs7CisKKyAgICAgIC1wcmVmZXItbm9uLXBpYykKKwlwaWNfbW9kZT1ubworCWNvbnRpbnVlCisJOzsKKyAgICAgIGVzYWMKKyAgICBkb25lCisKKyAgICBvYmpuYW1lPWAkZWNobyAiWCRvYmoiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKKyAgICB4ZGlyPWAkZWNobyAiWCRvYmoiIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AKKyAgICBpZiB0ZXN0ICJYJHhkaXIiID0gIlgkb2JqIjsgdGhlbgorICAgICAgeGRpcj0KKyAgICBlbHNlCisgICAgICB4ZGlyPSR4ZGlyLworICAgIGZpCisgICAgbG9iaj0ke3hkaXJ9JG9iamRpci8kb2JqbmFtZQorCisgICAgaWYgdGVzdCAteiAiJGJhc2VfY29tcGlsZSI7IHRoZW4KKyAgICAgICRlY2hvICIkbW9kZW5hbWU6IHlvdSBtdXN0IHNwZWNpZnkgYSBjb21waWxhdGlvbiBjb21tYW5kIiAxPiYyCisgICAgICAkZWNobyAiJGhlbHAiIDE+JjIKKyAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorICAgIGZpCisKKyAgICAjIERlbGV0ZSBhbnkgbGVmdG92ZXIgbGlicmFyeSBvYmplY3RzLgorICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KKyAgICAgIHJlbW92ZWxpc3Q9IiRvYmogJGxvYmogJGxpYm9iaiAke2xpYm9ian1UIgorICAgIGVsc2UKKyAgICAgIHJlbW92ZWxpc3Q9IiRsb2JqICRsaWJvYmogJHtsaWJvYmp9VCIKKyAgICBmaQorCisgICAgJHJ1biAkcm0gJHJlbW92ZWxpc3QKKyAgICB0cmFwICIkcnVuICRybSAkcmVtb3ZlbGlzdDsgZXhpdCAkRVhJVF9GQUlMVVJFIiAxIDIgMTUKKworICAgICMgT24gQ3lnd2luIHRoZXJlJ3Mgbm8gInJlYWwiIFBJQyBmbGFnIHNvIHdlIG11c3QgYnVpbGQgYm90aCBvYmplY3QgdHlwZXMKKyAgICBjYXNlICRob3N0X29zIGluCisgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgb3MyKikKKyAgICAgIHBpY19tb2RlPWRlZmF1bHQKKyAgICAgIDs7CisgICAgZXNhYworICAgIGlmIHRlc3QgIiRwaWNfbW9kZSIgPSBubyAmJiB0ZXN0ICIkZGVwbGlic19jaGVja19tZXRob2QiICE9IHBhc3NfYWxsOyB0aGVuCisgICAgICAjIG5vbi1QSUMgY29kZSBpbiBzaGFyZWQgbGlicmFyaWVzIGlzIG5vdCBzdXBwb3J0ZWQKKyAgICAgIHBpY19tb2RlPWRlZmF1bHQKKyAgICBmaQorCisgICAgIyBDYWxjdWxhdGUgdGhlIGZpbGVuYW1lIG9mIHRoZSBvdXRwdXQgb2JqZWN0IGlmIGNvbXBpbGVyIGRvZXMKKyAgICAjIG5vdCBzdXBwb3J0IC1vIHdpdGggLWMKKyAgICBpZiB0ZXN0ICIkY29tcGlsZXJfY19vIiA9IG5vOyB0aGVuCisgICAgICBvdXRwdXRfb2JqPWAkZWNobyAiWCRzcmNmaWxlIiB8ICRYc2VkIC1lICdzJV4uKi8lJScgLWUgJ3MlXC5bXi5dKiQlJSdgLiR7b2JqZXh0fQorICAgICAgbG9ja2ZpbGU9IiRvdXRwdXRfb2JqLmxvY2siCisgICAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkb3V0cHV0X29iaiAkbG9ja2ZpbGUiCisgICAgICB0cmFwICIkcnVuICRybSAkcmVtb3ZlbGlzdDsgZXhpdCAkRVhJVF9GQUlMVVJFIiAxIDIgMTUKKyAgICBlbHNlCisgICAgICBvdXRwdXRfb2JqPQorICAgICAgbmVlZF9sb2Nrcz1ubworICAgICAgbG9ja2ZpbGU9CisgICAgZmkKKworICAgICMgTG9jayB0aGlzIGNyaXRpY2FsIHNlY3Rpb24gaWYgaXQgaXMgbmVlZGVkCisgICAgIyBXZSB1c2UgdGhpcyBzY3JpcHQgZmlsZSB0byBtYWtlIHRoZSBsaW5rLCBpdCBhdm9pZHMgY3JlYXRpbmcgYSBuZXcgZmlsZQorICAgIGlmIHRlc3QgIiRuZWVkX2xvY2tzIiA9IHllczsgdGhlbgorICAgICAgdW50aWwgJHJ1biBsbiAiJHByb2dwYXRoIiAiJGxvY2tmaWxlIiAyPi9kZXYvbnVsbDsgZG8KKwkkc2hvdyAiV2FpdGluZyBmb3IgJGxvY2tmaWxlIHRvIGJlIHJlbW92ZWQiCisJc2xlZXAgMgorICAgICAgZG9uZQorICAgIGVsaWYgdGVzdCAiJG5lZWRfbG9ja3MiID0gd2FybjsgdGhlbgorICAgICAgaWYgdGVzdCAtZiAiJGxvY2tmaWxlIjsgdGhlbgorCSRlY2hvICJcCisqKiogRVJST1IsICRsb2NrZmlsZSBleGlzdHMgYW5kIGNvbnRhaW5zOgorYGNhdCAkbG9ja2ZpbGUgMj4vZGV2L251bGxgCisKK1RoaXMgaW5kaWNhdGVzIHRoYXQgYW5vdGhlciBwcm9jZXNzIGlzIHRyeWluZyB0byB1c2UgdGhlIHNhbWUKK3RlbXBvcmFyeSBvYmplY3QgZmlsZSwgYW5kIGxpYnRvb2wgY291bGQgbm90IHdvcmsgYXJvdW5kIGl0IGJlY2F1c2UKK3lvdXIgY29tcGlsZXIgZG9lcyBub3Qgc3VwcG9ydCBcYC1jJyBhbmQgXGAtbycgdG9nZXRoZXIuICBJZiB5b3UKK3JlcGVhdCB0aGlzIGNvbXBpbGF0aW9uLCBpdCBtYXkgc3VjY2VlZCwgYnkgY2hhbmNlLCBidXQgeW91IGhhZCBiZXR0ZXIKK2F2b2lkIHBhcmFsbGVsIGJ1aWxkcyAobWFrZSAtaikgaW4gdGhpcyBwbGF0Zm9ybSwgb3IgZ2V0IGEgYmV0dGVyCitjb21waWxlci4iCisKKwkkcnVuICRybSAkcmVtb3ZlbGlzdAorCWV4aXQgJEVYSVRfRkFJTFVSRQorICAgICAgZmkKKyAgICAgICRlY2hvICRzcmNmaWxlID4gIiRsb2NrZmlsZSIKKyAgICBmaQorCisgICAgaWYgdGVzdCAtbiAiJGZpeF9zcmNmaWxlX3BhdGgiOyB0aGVuCisgICAgICBldmFsIHNyY2ZpbGU9XCIkZml4X3NyY2ZpbGVfcGF0aFwiCisgICAgZmkKKworICAgICRydW4gJHJtICIkbGlib2JqIiAiJHtsaWJvYmp9VCIKKworICAgICMgQ3JlYXRlIGEgbGlidG9vbCBvYmplY3QgZmlsZSAoYW5hbG9nb3VzIHRvIGEgIi5sYSIgZmlsZSksCisgICAgIyBidXQgZG9uJ3QgY3JlYXRlIGl0IGlmIHdlJ3JlIGRvaW5nIGEgZHJ5IHJ1bi4KKyAgICB0ZXN0IC16ICIkcnVuIiAmJiBjYXQgPiAke2xpYm9ian1UIDw8RU9GCisjICRsaWJvYmogLSBhIGxpYnRvb2wgb2JqZWN0IGZpbGUKKyMgR2VuZXJhdGVkIGJ5ICRQUk9HUkFNIC0gR05VICRQQUNLQUdFICRWRVJTSU9OJFRJTUVTVEFNUAorIworIyBQbGVhc2UgRE8gTk9UIGRlbGV0ZSB0aGlzIGZpbGUhCisjIEl0IGlzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyB0aGUgbGlicmFyeS4KKworIyBOYW1lIG9mIHRoZSBQSUMgb2JqZWN0LgorRU9GCisKKyAgICAjIE9ubHkgYnVpbGQgYSBQSUMgb2JqZWN0IGlmIHdlIGFyZSBidWlsZGluZyBsaWJ0b29sIGxpYnJhcmllcy4KKyAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllczsgdGhlbgorICAgICAgIyBXaXRob3V0IHRoaXMgYXNzaWdubWVudCwgYmFzZV9jb21waWxlIGdldHMgZW1wdGllZC4KKyAgICAgIGZic2RfaGlkZW91c19zaF9idWc9JGJhc2VfY29tcGlsZQorCisgICAgICBpZiB0ZXN0ICIkcGljX21vZGUiICE9IG5vOyB0aGVuCisJY29tbWFuZD0iJGJhc2VfY29tcGlsZSAkc3JjZmlsZSAkcGljX2ZsYWciCisgICAgICBlbHNlCisJIyBEb24ndCBidWlsZCBQSUMgY29kZQorCWNvbW1hbmQ9IiRiYXNlX2NvbXBpbGUgJHNyY2ZpbGUiCisgICAgICBmaQorCisgICAgICBpZiB0ZXN0ICEgLWQgIiR7eGRpcn0kb2JqZGlyIjsgdGhlbgorCSRzaG93ICIkbWtkaXIgJHt4ZGlyfSRvYmpkaXIiCisJJHJ1biAkbWtkaXIgJHt4ZGlyfSRvYmpkaXIKKwlzdGF0dXM9JD8KKwlpZiB0ZXN0ICIkc3RhdHVzIiAtbmUgMCAmJiB0ZXN0ICEgLWQgIiR7eGRpcn0kb2JqZGlyIjsgdGhlbgorCSAgZXhpdCAkc3RhdHVzCisJZmkKKyAgICAgIGZpCisKKyAgICAgIGlmIHRlc3QgLXogIiRvdXRwdXRfb2JqIjsgdGhlbgorCSMgUGxhY2UgUElDIG9iamVjdHMgaW4gJG9iamRpcgorCWNvbW1hbmQ9IiRjb21tYW5kIC1vICRsb2JqIgorICAgICAgZmkKKworICAgICAgJHJ1biAkcm0gIiRsb2JqIiAiJG91dHB1dF9vYmoiCisKKyAgICAgICRzaG93ICIkY29tbWFuZCIKKyAgICAgIGlmICRydW4gZXZhbCAiJGNvbW1hbmQiOyB0aGVuIDoKKyAgICAgIGVsc2UKKwl0ZXN0IC1uICIkb3V0cHV0X29iaiIgJiYgJHJ1biAkcm0gJHJlbW92ZWxpc3QKKwlleGl0ICRFWElUX0ZBSUxVUkUKKyAgICAgIGZpCisKKyAgICAgIGlmIHRlc3QgIiRuZWVkX2xvY2tzIiA9IHdhcm4gJiYKKwkgdGVzdCAiWGBjYXQgJGxvY2tmaWxlIDI+L2Rldi9udWxsYCIgIT0gIlgkc3JjZmlsZSI7IHRoZW4KKwkkZWNobyAiXAorKioqIEVSUk9SLCAkbG9ja2ZpbGUgY29udGFpbnM6CitgY2F0ICRsb2NrZmlsZSAyPi9kZXYvbnVsbGAKKworYnV0IGl0IHNob3VsZCBjb250YWluOgorJHNyY2ZpbGUKKworVGhpcyBpbmRpY2F0ZXMgdGhhdCBhbm90aGVyIHByb2Nlc3MgaXMgdHJ5aW5nIHRvIHVzZSB0aGUgc2FtZQordGVtcG9yYXJ5IG9iamVjdCBmaWxlLCBhbmQgbGlidG9vbCBjb3VsZCBub3Qgd29yayBhcm91bmQgaXQgYmVjYXVzZQoreW91ciBjb21waWxlciBkb2VzIG5vdCBzdXBwb3J0IFxgLWMnIGFuZCBcYC1vJyB0b2dldGhlci4gIElmIHlvdQorcmVwZWF0IHRoaXMgY29tcGlsYXRpb24sIGl0IG1heSBzdWNjZWVkLCBieSBjaGFuY2UsIGJ1dCB5b3UgaGFkIGJldHRlcgorYXZvaWQgcGFyYWxsZWwgYnVpbGRzIChtYWtlIC1qKSBpbiB0aGlzIHBsYXRmb3JtLCBvciBnZXQgYSBiZXR0ZXIKK2NvbXBpbGVyLiIKKworCSRydW4gJHJtICRyZW1vdmVsaXN0CisJZXhpdCAkRVhJVF9GQUlMVVJFCisgICAgICBmaQorCisgICAgICAjIEp1c3QgbW92ZSB0aGUgb2JqZWN0IGlmIG5lZWRlZCwgdGhlbiBnbyBvbiB0byBjb21waWxlIHRoZSBuZXh0IG9uZQorICAgICAgaWYgdGVzdCAtbiAiJG91dHB1dF9vYmoiICYmIHRlc3QgIlgkb3V0cHV0X29iaiIgIT0gIlgkbG9iaiI7IHRoZW4KKwkkc2hvdyAiJG12ICRvdXRwdXRfb2JqICRsb2JqIgorCWlmICRydW4gJG12ICRvdXRwdXRfb2JqICRsb2JqOyB0aGVuIDoKKwllbHNlCisJICBlcnJvcj0kPworCSAgJHJ1biAkcm0gJHJlbW92ZWxpc3QKKwkgIGV4aXQgJGVycm9yCisJZmkKKyAgICAgIGZpCisKKyAgICAgICMgQXBwZW5kIHRoZSBuYW1lIG9mIHRoZSBQSUMgb2JqZWN0IHRvIHRoZSBsaWJ0b29sIG9iamVjdCBmaWxlLgorICAgICAgdGVzdCAteiAiJHJ1biIgJiYgY2F0ID4+ICR7bGlib2JqfVQgPDxFT0YKK3BpY19vYmplY3Q9JyRvYmpkaXIvJG9iam5hbWUnCisKK0VPRgorCisgICAgICAjIEFsbG93IGVycm9yIG1lc3NhZ2VzIG9ubHkgZnJvbSB0aGUgZmlyc3QgY29tcGlsYXRpb24uCisgICAgICBpZiB0ZXN0ICIkc3VwcHJlc3Nfb3B0IiA9IHllczsgdGhlbgorICAgICAgICBzdXBwcmVzc19vdXRwdXQ9JyA+L2Rldi9udWxsIDI+JjEnCisgICAgICBmaQorICAgIGVsc2UKKyAgICAgICMgTm8gUElDIG9iamVjdCBzbyBpbmRpY2F0ZSBpdCBkb2Vzbid0IGV4aXN0IGluIHRoZSBsaWJ0b29sCisgICAgICAjIG9iamVjdCBmaWxlLgorICAgICAgdGVzdCAteiAiJHJ1biIgJiYgY2F0ID4+ICR7bGlib2JqfVQgPDxFT0YKK3BpY19vYmplY3Q9bm9uZQorCitFT0YKKyAgICBmaQorCisgICAgIyBPbmx5IGJ1aWxkIGEgcG9zaXRpb24tZGVwZW5kZW50IG9iamVjdCBpZiB3ZSBidWlsZCBvbGQgbGlicmFyaWVzLgorICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KKyAgICAgIGlmIHRlc3QgIiRwaWNfbW9kZSIgIT0geWVzOyB0aGVuCisJIyBEb24ndCBidWlsZCBQSUMgY29kZQorCWNvbW1hbmQ9IiRiYXNlX2NvbXBpbGUgJHNyY2ZpbGUiCisgICAgICBlbHNlCisJY29tbWFuZD0iJGJhc2VfY29tcGlsZSAkc3JjZmlsZSAkcGljX2ZsYWciCisgICAgICBmaQorICAgICAgaWYgdGVzdCAiJGNvbXBpbGVyX2NfbyIgPSB5ZXM7IHRoZW4KKwljb21tYW5kPSIkY29tbWFuZCAtbyAkb2JqIgorICAgICAgZmkKKworICAgICAgIyBTdXBwcmVzcyBjb21waWxlciBvdXRwdXQgaWYgd2UgYWxyZWFkeSBkaWQgYSBQSUMgY29tcGlsYXRpb24uCisgICAgICBjb21tYW5kPSIkY29tbWFuZCRzdXBwcmVzc19vdXRwdXQiCisgICAgICAkcnVuICRybSAiJG9iaiIgIiRvdXRwdXRfb2JqIgorICAgICAgJHNob3cgIiRjb21tYW5kIgorICAgICAgaWYgJHJ1biBldmFsICIkY29tbWFuZCI7IHRoZW4gOgorICAgICAgZWxzZQorCSRydW4gJHJtICRyZW1vdmVsaXN0CisJZXhpdCAkRVhJVF9GQUlMVVJFCisgICAgICBmaQorCisgICAgICBpZiB0ZXN0ICIkbmVlZF9sb2NrcyIgPSB3YXJuICYmCisJIHRlc3QgIlhgY2F0ICRsb2NrZmlsZSAyPi9kZXYvbnVsbGAiICE9ICJYJHNyY2ZpbGUiOyB0aGVuCisJJGVjaG8gIlwKKyoqKiBFUlJPUiwgJGxvY2tmaWxlIGNvbnRhaW5zOgorYGNhdCAkbG9ja2ZpbGUgMj4vZGV2L251bGxgCisKK2J1dCBpdCBzaG91bGQgY29udGFpbjoKKyRzcmNmaWxlCisKK1RoaXMgaW5kaWNhdGVzIHRoYXQgYW5vdGhlciBwcm9jZXNzIGlzIHRyeWluZyB0byB1c2UgdGhlIHNhbWUKK3RlbXBvcmFyeSBvYmplY3QgZmlsZSwgYW5kIGxpYnRvb2wgY291bGQgbm90IHdvcmsgYXJvdW5kIGl0IGJlY2F1c2UKK3lvdXIgY29tcGlsZXIgZG9lcyBub3Qgc3VwcG9ydCBcYC1jJyBhbmQgXGAtbycgdG9nZXRoZXIuICBJZiB5b3UKK3JlcGVhdCB0aGlzIGNvbXBpbGF0aW9uLCBpdCBtYXkgc3VjY2VlZCwgYnkgY2hhbmNlLCBidXQgeW91IGhhZCBiZXR0ZXIKK2F2b2lkIHBhcmFsbGVsIGJ1aWxkcyAobWFrZSAtaikgaW4gdGhpcyBwbGF0Zm9ybSwgb3IgZ2V0IGEgYmV0dGVyCitjb21waWxlci4iCisKKwkkcnVuICRybSAkcmVtb3ZlbGlzdAorCWV4aXQgJEVYSVRfRkFJTFVSRQorICAgICAgZmkKKworICAgICAgIyBKdXN0IG1vdmUgdGhlIG9iamVjdCBpZiBuZWVkZWQKKyAgICAgIGlmIHRlc3QgLW4gIiRvdXRwdXRfb2JqIiAmJiB0ZXN0ICJYJG91dHB1dF9vYmoiICE9ICJYJG9iaiI7IHRoZW4KKwkkc2hvdyAiJG12ICRvdXRwdXRfb2JqICRvYmoiCisJaWYgJHJ1biAkbXYgJG91dHB1dF9vYmogJG9iajsgdGhlbiA6CisJZWxzZQorCSAgZXJyb3I9JD8KKwkgICRydW4gJHJtICRyZW1vdmVsaXN0CisJICBleGl0ICRlcnJvcgorCWZpCisgICAgICBmaQorCisgICAgICAjIEFwcGVuZCB0aGUgbmFtZSBvZiB0aGUgbm9uLVBJQyBvYmplY3QgdGhlIGxpYnRvb2wgb2JqZWN0IGZpbGUuCisgICAgICAjIE9ubHkgYXBwZW5kIGlmIHRoZSBsaWJ0b29sIG9iamVjdCBmaWxlIGV4aXN0cy4KKyAgICAgIHRlc3QgLXogIiRydW4iICYmIGNhdCA+PiAke2xpYm9ian1UIDw8RU9GCisjIE5hbWUgb2YgdGhlIG5vbi1QSUMgb2JqZWN0Lgorbm9uX3BpY19vYmplY3Q9JyRvYmpuYW1lJworCitFT0YKKyAgICBlbHNlCisgICAgICAjIEFwcGVuZCB0aGUgbmFtZSBvZiB0aGUgbm9uLVBJQyBvYmplY3QgdGhlIGxpYnRvb2wgb2JqZWN0IGZpbGUuCisgICAgICAjIE9ubHkgYXBwZW5kIGlmIHRoZSBsaWJ0b29sIG9iamVjdCBmaWxlIGV4aXN0cy4KKyAgICAgIHRlc3QgLXogIiRydW4iICYmIGNhdCA+PiAke2xpYm9ian1UIDw8RU9GCisjIE5hbWUgb2YgdGhlIG5vbi1QSUMgb2JqZWN0Lgorbm9uX3BpY19vYmplY3Q9bm9uZQorCitFT0YKKyAgICBmaQorCisgICAgJHJ1biAkbXYgIiR7bGlib2JqfVQiICIke2xpYm9ian0iCisKKyAgICAjIFVubG9jayB0aGUgY3JpdGljYWwgc2VjdGlvbiBpZiBpdCB3YXMgbG9ja2VkCisgICAgaWYgdGVzdCAiJG5lZWRfbG9ja3MiICE9IG5vOyB0aGVuCisgICAgICAkcnVuICRybSAiJGxvY2tmaWxlIgorICAgIGZpCisKKyAgICBleGl0ICRFWElUX1NVQ0NFU1MKKyAgICA7OworCisgICMgbGlidG9vbCBsaW5rIG1vZGUKKyAgbGluayB8IHJlbGluaykKKyAgICBtb2RlbmFtZT0iJG1vZGVuYW1lOiBsaW5rIgorICAgIGNhc2UgJGhvc3QgaW4KKyAgICAqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotb3MyKikKKyAgICAgICMgSXQgaXMgaW1wb3NzaWJsZSB0byBsaW5rIGEgZGxsIHdpdGhvdXQgdGhpcyBzZXR0aW5nLCBhbmQKKyAgICAgICMgd2Ugc2hvdWxkbid0IGZvcmNlIHRoZSBtYWtlZmlsZSBtYWludGFpbmVyIHRvIGZpZ3VyZSBvdXQKKyAgICAgICMgd2hpY2ggc3lzdGVtIHdlIGFyZSBjb21waWxpbmcgZm9yIGluIG9yZGVyIHRvIHBhc3MgYW4gZXh0cmEKKyAgICAgICMgZmxhZyBmb3IgZXZlcnkgbGlidG9vbCBpbnZvY2F0aW9uLgorICAgICAgIyBhbGxvd191bmRlZmluZWQ9bm8KKworICAgICAgIyBGSVhNRTogVW5mb3J0dW5hdGVseSwgdGhlcmUgYXJlIHByb2JsZW1zIHdpdGggdGhlIGFib3ZlIHdoZW4gdHJ5aW5nCisgICAgICAjIHRvIG1ha2UgYSBkbGwgd2hpY2ggaGFzIHVuZGVmaW5lZCBzeW1ib2xzLCBpbiB3aGljaCBjYXNlIG5vdAorICAgICAgIyBldmVuIGEgc3RhdGljIGxpYnJhcnkgaXMgYnVpbHQuICBGb3Igbm93LCB3ZSBuZWVkIHRvIHNwZWNpZnkKKyAgICAgICMgLW5vLXVuZGVmaW5lZCBvbiB0aGUgbGlidG9vbCBsaW5rIGxpbmUgd2hlbiB3ZSBjYW4gYmUgY2VydGFpbgorICAgICAgIyB0aGF0IGFsbCBzeW1ib2xzIGFyZSBzYXRpc2ZpZWQsIG90aGVyd2lzZSB3ZSBnZXQgYSBzdGF0aWMgbGlicmFyeS4KKyAgICAgIGFsbG93X3VuZGVmaW5lZD15ZXMKKyAgICAgIDs7CisgICAgKikKKyAgICAgIGFsbG93X3VuZGVmaW5lZD15ZXMKKyAgICAgIDs7CisgICAgZXNhYworICAgIGxpYnRvb2xfYXJncz0iJG5vbm9wdCIKKyAgICBiYXNlX2NvbXBpbGU9IiRub25vcHQgJEAiCisgICAgY29tcGlsZV9jb21tYW5kPSIkbm9ub3B0IgorICAgIGZpbmFsaXplX2NvbW1hbmQ9IiRub25vcHQiCisKKyAgICBjb21waWxlX3JwYXRoPQorICAgIGZpbmFsaXplX3JwYXRoPQorICAgIGNvbXBpbGVfc2hsaWJwYXRoPQorICAgIGZpbmFsaXplX3NobGlicGF0aD0KKyAgICBjb252ZW5pZW5jZT0KKyAgICBvbGRfY29udmVuaWVuY2U9CisgICAgZGVwbGlicz0KKyAgICBvbGRfZGVwbGlicz0KKyAgICBjb21waWxlcl9mbGFncz0KKyAgICBsaW5rZXJfZmxhZ3M9CisgICAgZGxsc2VhcmNocGF0aD0KKyAgICBsaWJfc2VhcmNoX3BhdGg9YHB3ZGAKKyAgICBpbnN0X3ByZWZpeF9kaXI9CisKKyAgICBhdm9pZF92ZXJzaW9uPW5vCisgICAgZGxmaWxlcz0KKyAgICBkbHByZWZpbGVzPQorICAgIGRsc2VsZj1ubworICAgIGV4cG9ydF9keW5hbWljPW5vCisgICAgZXhwb3J0X3N5bWJvbHM9CisgICAgZXhwb3J0X3N5bWJvbHNfcmVnZXg9CisgICAgZ2VuZXJhdGVkPQorICAgIGxpYm9ianM9CisgICAgbHRsaWJzPQorICAgIG1vZHVsZT1ubworICAgIG5vX2luc3RhbGw9bm8KKyAgICBvYmpzPQorICAgIG5vbl9waWNfb2JqZWN0cz0KKyAgICBwcmVjaW91c19maWxlc19yZWdleD0KKyAgICBwcmVmZXJfc3RhdGljX2xpYnM9bm8KKyAgICBwcmVsb2FkPW5vCisgICAgcHJldj0KKyAgICBwcmV2YXJnPQorICAgIHJlbGVhc2U9CisgICAgcnBhdGg9CisgICAgeHJwYXRoPQorICAgIHBlcm1fcnBhdGg9CisgICAgdGVtcF9ycGF0aD0KKyAgICB0aHJlYWRfc2FmZT1ubworICAgIHZpbmZvPQorICAgIHZpbmZvX251bWJlcj1ubworCisgICAgZnVuY19pbmZlcl90YWcgJGJhc2VfY29tcGlsZQorCisgICAgIyBXZSBuZWVkIHRvIGtub3cgLXN0YXRpYywgdG8gZ2V0IHRoZSByaWdodCBvdXRwdXQgZmlsZW5hbWVzLgorICAgIGZvciBhcmcKKyAgICBkbworICAgICAgY2FzZSAkYXJnIGluCisgICAgICAtYWxsLXN0YXRpYyB8IC1zdGF0aWMpCisJaWYgdGVzdCAiWCRhcmciID0gIlgtYWxsLXN0YXRpYyI7IHRoZW4KKwkgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzICYmIHRlc3QgLXogIiRsaW5rX3N0YXRpY19mbGFnIjsgdGhlbgorCSAgICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBjb21wbGV0ZSBzdGF0aWMgbGlua2luZyBpcyBpbXBvc3NpYmxlIGluIHRoaXMgY29uZmlndXJhdGlvbiIgMT4mMgorCSAgZmkKKwkgIGlmIHRlc3QgLW4gIiRsaW5rX3N0YXRpY19mbGFnIjsgdGhlbgorCSAgICBkbG9wZW5fc2VsZj0kZGxvcGVuX3NlbGZfc3RhdGljCisJICBmaQorCWVsc2UKKwkgIGlmIHRlc3QgLXogIiRwaWNfZmxhZyIgJiYgdGVzdCAtbiAiJGxpbmtfc3RhdGljX2ZsYWciOyB0aGVuCisJICAgIGRsb3Blbl9zZWxmPSRkbG9wZW5fc2VsZl9zdGF0aWMKKwkgIGZpCisJZmkKKwlidWlsZF9saWJ0b29sX2xpYnM9bm8KKwlidWlsZF9vbGRfbGlicz15ZXMKKwlwcmVmZXJfc3RhdGljX2xpYnM9eWVzCisJYnJlYWsKKwk7OworICAgICAgZXNhYworICAgIGRvbmUKKworICAgICMgU2VlIGlmIG91ciBzaGFyZWQgYXJjaGl2ZXMgZGVwZW5kIG9uIHN0YXRpYyBhcmNoaXZlcy4KKyAgICB0ZXN0IC1uICIkb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcyIgJiYgYnVpbGRfb2xkX2xpYnM9eWVzCisKKyAgICAjIEdvIHRocm91Z2ggdGhlIGFyZ3VtZW50cywgdHJhbnNmb3JtaW5nIHRoZW0gb24gdGhlIHdheS4KKyAgICB3aGlsZSB0ZXN0ICIkIyIgLWd0IDA7IGRvCisgICAgICBhcmc9IiQxIgorICAgICAgc2hpZnQKKyAgICAgIGNhc2UgJGFyZyBpbgorICAgICAgKltcW1x+XCNcXlwmXCpcKFwpXHtcfVx8XDtcPFw+XD9cJ1wgXAldKnwqXSp8IiIpCisJcWFyZz1cImAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYFwiICMjIyB0ZXN0c3VpdGU6IHNraXAgbmVzdGVkIHF1b3RpbmcgdGVzdAorCTs7CisgICAgICAqKSBxYXJnPSRhcmcgOzsKKyAgICAgIGVzYWMKKyAgICAgIGxpYnRvb2xfYXJncz0iJGxpYnRvb2xfYXJncyAkcWFyZyIKKworICAgICAgIyBJZiB0aGUgcHJldmlvdXMgb3B0aW9uIG5lZWRzIGFuIGFyZ3VtZW50LCBhc3NpZ24gaXQuCisgICAgICBpZiB0ZXN0IC1uICIkcHJldiI7IHRoZW4KKwljYXNlICRwcmV2IGluCisJb3V0cHV0KQorCSAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIEBPVVRQVVRAIgorCSAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgQE9VVFBVVEAiCisJICA7OworCWVzYWMKKworCWNhc2UgJHByZXYgaW4KKwlkbGZpbGVzfGRscHJlZmlsZXMpCisJICBpZiB0ZXN0ICIkcHJlbG9hZCIgPSBubzsgdGhlbgorCSAgICAjIEFkZCB0aGUgc3ltYm9sIG9iamVjdCBpbnRvIHRoZSBsaW5raW5nIGNvbW1hbmRzLgorCSAgICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgQFNZTUZJTEVAIgorCSAgICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCBAU1lNRklMRUAiCisJICAgIHByZWxvYWQ9eWVzCisJICBmaQorCSAgY2FzZSAkYXJnIGluCisJICAqLmxhIHwgKi5sbykgOzsgICMgV2UgaGFuZGxlIHRoZXNlIGNhc2VzIGJlbG93LgorCSAgZm9yY2UpCisJICAgIGlmIHRlc3QgIiRkbHNlbGYiID0gbm87IHRoZW4KKwkgICAgICBkbHNlbGY9bmVlZGxlc3MKKwkgICAgICBleHBvcnRfZHluYW1pYz15ZXMKKwkgICAgZmkKKwkgICAgcHJldj0KKwkgICAgY29udGludWUKKwkgICAgOzsKKwkgIHNlbGYpCisJICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRscHJlZmlsZXM7IHRoZW4KKwkgICAgICBkbHNlbGY9eWVzCisJICAgIGVsaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlcyAmJiB0ZXN0ICIkZGxvcGVuX3NlbGYiICE9IHllczsgdGhlbgorCSAgICAgIGRsc2VsZj15ZXMKKwkgICAgZWxzZQorCSAgICAgIGRsc2VsZj1uZWVkbGVzcworCSAgICAgIGV4cG9ydF9keW5hbWljPXllcworCSAgICBmaQorCSAgICBwcmV2PQorCSAgICBjb250aW51ZQorCSAgICA7OworCSAgKikKKwkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgorCSAgICAgIGRsZmlsZXM9IiRkbGZpbGVzICRhcmciCisJICAgIGVsc2UKKwkgICAgICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkYXJnIgorCSAgICBmaQorCSAgICBwcmV2PQorCSAgICBjb250aW51ZQorCSAgICA7OworCSAgZXNhYworCSAgOzsKKwlleHBzeW1zKQorCSAgZXhwb3J0X3N5bWJvbHM9IiRhcmciCisJICBpZiB0ZXN0ICEgLWYgIiRhcmciOyB0aGVuCisJICAgICRlY2hvICIkbW9kZW5hbWU6IHN5bWJvbCBmaWxlIFxgJGFyZycgZG9lcyBub3QgZXhpc3QiCisJICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgZmkKKwkgIHByZXY9CisJICBjb250aW51ZQorCSAgOzsKKwlleHBzeW1zX3JlZ2V4KQorCSAgZXhwb3J0X3N5bWJvbHNfcmVnZXg9IiRhcmciCisJICBwcmV2PQorCSAgY29udGludWUKKwkgIDs7CisJaW5zdF9wcmVmaXgpCisJICBpbnN0X3ByZWZpeF9kaXI9IiRhcmciCisJICBwcmV2PQorCSAgY29udGludWUKKwkgIDs7CisJcHJlY2lvdXNfcmVnZXgpCisJICBwcmVjaW91c19maWxlc19yZWdleD0iJGFyZyIKKwkgIHByZXY9CisJICBjb250aW51ZQorCSAgOzsKKwlyZWxlYXNlKQorCSAgcmVsZWFzZT0iLSRhcmciCisJICBwcmV2PQorCSAgY29udGludWUKKwkgIDs7CisJb2JqZWN0bGlzdCkKKwkgIGlmIHRlc3QgLWYgIiRhcmciOyB0aGVuCisJICAgIHNhdmVfYXJnPSRhcmcKKwkgICAgbW9yZWFyZ3M9CisJICAgIGZvciBmaWwgaW4gYGNhdCAkc2F2ZV9hcmdgCisJICAgIGRvCisjCSAgICAgIG1vcmVhcmdzPSIkbW9yZWFyZ3MgJGZpbCIKKwkgICAgICBhcmc9JGZpbAorCSAgICAgICMgQSBsaWJ0b29sLWNvbnRyb2xsZWQgb2JqZWN0LgorCisJICAgICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgb2JqZWN0LgorCSAgICAgIGlmICgke1NFRH0gLWUgJzJxJyAkYXJnIHwgZ3JlcCAiXiMgR2VuZXJhdGVkIGJ5IC4qJFBBQ0tBR0UiKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKwkJcGljX29iamVjdD0KKwkJbm9uX3BpY19vYmplY3Q9CisKKwkJIyBSZWFkIHRoZSAubG8gZmlsZQorCQkjIElmIHRoZXJlIGlzIG5vIGRpcmVjdG9yeSBjb21wb25lbnQsIHRoZW4gYWRkIG9uZS4KKwkJY2FzZSAkYXJnIGluCisJCSovKiB8ICpcXCopIC4gJGFyZyA7OworCQkqKSAuIC4vJGFyZyA7OworCQllc2FjCisKKwkJaWYgdGVzdCAteiAiJHBpY19vYmplY3QiIHx8IFwKKwkJICAgdGVzdCAteiAiJG5vbl9waWNfb2JqZWN0IiB8fAorCQkgICB0ZXN0ICIkcGljX29iamVjdCIgPSBub25lICYmIFwKKwkJICAgdGVzdCAiJG5vbl9waWNfb2JqZWN0IiA9IG5vbmU7IHRoZW4KKwkJICAkZWNobyAiJG1vZGVuYW1lOiBjYW5ub3QgZmluZCBuYW1lIG9mIG9iamVjdCBmb3IgXGAkYXJnJyIgMT4mMgorCQkgIGV4aXQgJEVYSVRfRkFJTFVSRQorCQlmaQorCisJCSMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCisJCXhkaXI9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAncyUvW14vXSokJSUnYAorCQlpZiB0ZXN0ICJYJHhkaXIiID0gIlgkYXJnIjsgdGhlbgorCQkgIHhkaXI9CisJCWVsc2UKKwkJICB4ZGlyPSIkeGRpci8iCisJCWZpCisKKwkJaWYgdGVzdCAiJHBpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KKwkJICAjIFByZXBlbmQgdGhlIHN1YmRpcmVjdG9yeSB0aGUgb2JqZWN0IGlzIGZvdW5kIGluLgorCQkgIHBpY19vYmplY3Q9IiR4ZGlyJHBpY19vYmplY3QiCisKKwkJICBpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCisJCSAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllcyAmJiB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiID0geWVzOyB0aGVuCisJCSAgICAgIGRsZmlsZXM9IiRkbGZpbGVzICRwaWNfb2JqZWN0IgorCQkgICAgICBwcmV2PQorCQkgICAgICBjb250aW51ZQorCQkgICAgZWxzZQorCQkgICAgICAjIElmIGxpYnRvb2wgb2JqZWN0cyBhcmUgdW5zdXBwb3J0ZWQsIHRoZW4gd2UgbmVlZCB0byBwcmVsb2FkLgorCQkgICAgICBwcmV2PWRscHJlZmlsZXMKKwkJICAgIGZpCisJCSAgZmkKKworCQkgICMgQ0hFQ0sgTUU6ICBJIHRoaW5rIEkgYnVzdGVkIHRoaXMuICAtT3NzYW1hCisJCSAgaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgorCQkgICAgIyBQcmVsb2FkIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgorCQkgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJHBpY19vYmplY3QiCisJCSAgICBwcmV2PQorCQkgIGZpCisKKwkJICAjIEEgUElDIG9iamVjdC4KKwkJICBsaWJvYmpzPSIkbGlib2JqcyAkcGljX29iamVjdCIKKwkJICBhcmc9IiRwaWNfb2JqZWN0IgorCQlmaQorCisJCSMgTm9uLVBJQyBvYmplY3QuCisJCWlmIHRlc3QgIiRub25fcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgorCQkgICMgUHJlcGVuZCB0aGUgc3ViZGlyZWN0b3J5IHRoZSBvYmplY3QgaXMgZm91bmQgaW4uCisJCSAgbm9uX3BpY19vYmplY3Q9IiR4ZGlyJG5vbl9waWNfb2JqZWN0IgorCisJCSAgIyBBIHN0YW5kYXJkIG5vbi1QSUMgb2JqZWN0CisJCSAgbm9uX3BpY19vYmplY3RzPSIkbm9uX3BpY19vYmplY3RzICRub25fcGljX29iamVjdCIKKwkJICBpZiB0ZXN0IC16ICIkcGljX29iamVjdCIgfHwgdGVzdCAiJHBpY19vYmplY3QiID0gbm9uZSA7IHRoZW4KKwkJICAgIGFyZz0iJG5vbl9waWNfb2JqZWN0IgorCQkgIGZpCisJCWZpCisJICAgICAgZWxzZQorCQkjIE9ubHkgYW4gZXJyb3IgaWYgbm90IGRvaW5nIGEgZHJ5LXJ1bi4KKwkJaWYgdGVzdCAteiAiJHJ1biI7IHRoZW4KKwkJICAkZWNobyAiJG1vZGVuYW1lOiBcYCRhcmcnIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgb2JqZWN0IiAxPiYyCisJCSAgZXhpdCAkRVhJVF9GQUlMVVJFCisJCWVsc2UKKwkJICAjIERyeS1ydW4gY2FzZS4KKworCQkgICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCisJCSAgeGRpcj1gJGVjaG8gIlgkYXJnIiB8ICRYc2VkIC1lICdzJS9bXi9dKiQlJSdgCisJCSAgaWYgdGVzdCAiWCR4ZGlyIiA9ICJYJGFyZyI7IHRoZW4KKwkJICAgIHhkaXI9CisJCSAgZWxzZQorCQkgICAgeGRpcj0iJHhkaXIvIgorCQkgIGZpCisKKwkJICBwaWNfb2JqZWN0PWAkZWNobyAiWCR7eGRpcn0ke29iamRpcn0vJHthcmd9IiB8ICRYc2VkIC1lICIkbG8ybyJgCisJCSAgbm9uX3BpY19vYmplY3Q9YCRlY2hvICJYJHt4ZGlyfSR7YXJnfSIgfCAkWHNlZCAtZSAiJGxvMm8iYAorCQkgIGxpYm9ianM9IiRsaWJvYmpzICRwaWNfb2JqZWN0IgorCQkgIG5vbl9waWNfb2JqZWN0cz0iJG5vbl9waWNfb2JqZWN0cyAkbm9uX3BpY19vYmplY3QiCisJCWZpCisJICAgICAgZmkKKwkgICAgZG9uZQorCSAgZWxzZQorCSAgICAkZWNobyAiJG1vZGVuYW1lOiBsaW5rIGlucHV0IGZpbGUgXGAkc2F2ZV9hcmcnIGRvZXMgbm90IGV4aXN0IgorCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgIGZpCisJICBhcmc9JHNhdmVfYXJnCisJICBwcmV2PQorCSAgY29udGludWUKKwkgIDs7CisJcnBhdGggfCB4cnBhdGgpCisJICAjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KKwkgIGNhc2UgJGFyZyBpbgorCSAgW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSA7OworCSAgKikKKwkgICAgJGVjaG8gIiRtb2RlbmFtZTogb25seSBhYnNvbHV0ZSBydW4tcGF0aHMgYXJlIGFsbG93ZWQiIDE+JjIKKwkgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICAgIDs7CisJICBlc2FjCisJICBpZiB0ZXN0ICIkcHJldiIgPSBycGF0aDsgdGhlbgorCSAgICBjYXNlICIkcnBhdGggIiBpbgorCSAgICAqIiAkYXJnICIqKSA7OworCSAgICAqKSBycGF0aD0iJHJwYXRoICRhcmciIDs7CisJICAgIGVzYWMKKwkgIGVsc2UKKwkgICAgY2FzZSAiJHhycGF0aCAiIGluCisJICAgICoiICRhcmcgIiopIDs7CisJICAgICopIHhycGF0aD0iJHhycGF0aCAkYXJnIiA7OworCSAgICBlc2FjCisJICBmaQorCSAgcHJldj0KKwkgIGNvbnRpbnVlCisJICA7OworCXhjb21waWxlcikKKwkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHFhcmciCisJICBwcmV2PQorCSAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICRxYXJnIgorCSAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJHFhcmciCisJICBjb250aW51ZQorCSAgOzsKKwl4bGlua2VyKQorCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRxYXJnIgorCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkd2wkcWFyZyIKKwkgIHByZXY9CisJICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJHdsJHFhcmciCisJICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkd2wkcWFyZyIKKwkgIGNvbnRpbnVlCisJICA7OworCXhjY2xpbmtlcikKKwkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkcWFyZyIKKwkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHFhcmciCisJICBwcmV2PQorCSAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICRxYXJnIgorCSAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJHFhcmciCisJICBjb250aW51ZQorCSAgOzsKKwlzaHJleHQpCisgIAkgIHNocmV4dF9jbWRzPSIkYXJnIgorCSAgcHJldj0KKwkgIGNvbnRpbnVlCisJICA7OworCSopCisJICBldmFsICIkcHJldj1cIlwkYXJnXCIiCisJICBwcmV2PQorCSAgY29udGludWUKKwkgIDs7CisJZXNhYworICAgICAgZmkgIyB0ZXN0IC1uICIkcHJldiIKKworICAgICAgcHJldmFyZz0iJGFyZyIKKworICAgICAgY2FzZSAkYXJnIGluCisgICAgICAtYWxsLXN0YXRpYykKKwlpZiB0ZXN0IC1uICIkbGlua19zdGF0aWNfZmxhZyI7IHRoZW4KKwkgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAkbGlua19zdGF0aWNfZmxhZyIKKwkgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICRsaW5rX3N0YXRpY19mbGFnIgorCWZpCisJY29udGludWUKKwk7OworCisgICAgICAtYWxsb3ctdW5kZWZpbmVkKQorCSMgRklYTUU6IHJlbW92ZSB0aGlzIGZsYWcgc29tZXRpbWUgaW4gdGhlIGZ1dHVyZS4KKwkkZWNobyAiJG1vZGVuYW1lOiBcYC1hbGxvdy11bmRlZmluZWQnIGlzIGRlcHJlY2F0ZWQgYmVjYXVzZSBpdCBpcyB0aGUgZGVmYXVsdCIgMT4mMgorCWNvbnRpbnVlCisJOzsKKworICAgICAgLWF2b2lkLXZlcnNpb24pCisJYXZvaWRfdmVyc2lvbj15ZXMKKwljb250aW51ZQorCTs7CisKKyAgICAgIC1kbG9wZW4pCisJcHJldj1kbGZpbGVzCisJY29udGludWUKKwk7OworCisgICAgICAtZGxwcmVvcGVuKQorCXByZXY9ZGxwcmVmaWxlcworCWNvbnRpbnVlCisJOzsKKworICAgICAgLWV4cG9ydC1keW5hbWljKQorCWV4cG9ydF9keW5hbWljPXllcworCWNvbnRpbnVlCisJOzsKKworICAgICAgLWV4cG9ydC1zeW1ib2xzIHwgLWV4cG9ydC1zeW1ib2xzLXJlZ2V4KQorCWlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgfHwgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IjsgdGhlbgorCSAgJGVjaG8gIiRtb2RlbmFtZTogbW9yZSB0aGFuIG9uZSAtZXhwb3J0ZWQtc3ltYm9scyBhcmd1bWVudCBpcyBub3QgYWxsb3dlZCIKKwkgIGV4aXQgJEVYSVRfRkFJTFVSRQorCWZpCisJaWYgdGVzdCAiWCRhcmciID0gIlgtZXhwb3J0LXN5bWJvbHMiOyB0aGVuCisJICBwcmV2PWV4cHN5bXMKKwllbHNlCisJICBwcmV2PWV4cHN5bXNfcmVnZXgKKwlmaQorCWNvbnRpbnVlCisJOzsKKworICAgICAgLWluc3QtcHJlZml4LWRpcikKKwlwcmV2PWluc3RfcHJlZml4CisJY29udGludWUKKwk7OworCisgICAgICAjIFRoZSBuYXRpdmUgSVJJWCBsaW5rZXIgdW5kZXJzdGFuZHMgLUxBTkc6KiwgLUxJU1Q6KiBhbmQgLUxOTzoqCisgICAgICAjIHNvLCBpZiB3ZSBzZWUgdGhlc2UgZmxhZ3MgYmUgY2FyZWZ1bCBub3QgdG8gdHJlYXQgdGhlbSBsaWtlIC1MCisgICAgICAtTFtBLVpdW0EtWl0qOiopCisJY2FzZSAkd2l0aF9nY2MvJGhvc3QgaW4KKwluby8qLSotaXJpeCogfCAvKi0qLWlyaXgqKQorCSAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICRhcmciCisJICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkYXJnIgorCSAgOzsKKwllc2FjCisJY29udGludWUKKwk7OworCisgICAgICAtTCopCisJZGlyPWAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgJ3MvXi1MLy8nYAorCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgorCWNhc2UgJGRpciBpbgorCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKKwkqKQorCSAgYWJzZGlyPWBjZCAiJGRpciIgJiYgcHdkYAorCSAgaWYgdGVzdCAteiAiJGFic2RpciI7IHRoZW4KKwkgICAgJGVjaG8gIiRtb2RlbmFtZTogY2Fubm90IGRldGVybWluZSBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZSBvZiBcYCRkaXInIiAxPiYyCisJICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgZmkKKwkgIGRpcj0iJGFic2RpciIKKwkgIDs7CisJZXNhYworCWNhc2UgIiRkZXBsaWJzICIgaW4KKwkqIiAtTCRkaXIgIiopIDs7CisJKikKKwkgIGRlcGxpYnM9IiRkZXBsaWJzIC1MJGRpciIKKwkgIGxpYl9zZWFyY2hfcGF0aD0iJGxpYl9zZWFyY2hfcGF0aCAkZGlyIgorCSAgOzsKKwllc2FjCisJY2FzZSAkaG9zdCBpbgorCSotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1vczIqKQorCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCisJICAqIjokZGlyOiIqKSA7OworCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JGRpciI7OworCSAgZXNhYworCSAgOzsKKwllc2FjCisJY29udGludWUKKwk7OworCisgICAgICAtbCopCisJaWYgdGVzdCAiWCRhcmciID0gIlgtbGMiIHx8IHRlc3QgIlgkYXJnIiA9ICJYLWxtIjsgdGhlbgorCSAgY2FzZSAkaG9zdCBpbgorCSAgKi0qLWN5Z3dpbiogfCAqLSotcHczMiogfCAqLSotYmVvcyopCisJICAgICMgVGhlc2Ugc3lzdGVtcyBkb24ndCBhY3R1YWxseSBoYXZlIGEgQyBvciBtYXRoIGxpYnJhcnkgKGFzIHN1Y2gpCisJICAgIGNvbnRpbnVlCisJICAgIDs7CisJICAqLSotbWluZ3cqIHwgKi0qLW9zMiopCisJICAgICMgVGhlc2Ugc3lzdGVtcyBkb24ndCBhY3R1YWxseSBoYXZlIGEgQyBsaWJyYXJ5IChhcyBzdWNoKQorCSAgICB0ZXN0ICJYJGFyZyIgPSAiWC1sYyIgJiYgY29udGludWUKKwkgICAgOzsKKwkgICotKi1vcGVuYnNkKiB8ICotKi1mcmVlYnNkKikKKwkgICAgIyBEbyBub3QgaW5jbHVkZSBsaWJjIGR1ZSB0byB1cyBoYXZpbmcgbGliYy9saWJjX3IuCisJICAgIHRlc3QgIlgkYXJnIiA9ICJYLWxjIiAmJiBjb250aW51ZQorCSAgICA7OworCSAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQorCSAgICAjIFJoYXBzb2R5IEMgYW5kIG1hdGggbGlicmFyaWVzIGFyZSBpbiB0aGUgU3lzdGVtIGZyYW1ld29yaworCSAgICBkZXBsaWJzPSIkZGVwbGlicyAtZnJhbWV3b3JrIFN5c3RlbSIKKwkgICAgY29udGludWUKKwkgIGVzYWMKKwllbGlmIHRlc3QgIlgkYXJnIiA9ICJYLWxjX3IiOyB0aGVuCisJIGNhc2UgJGhvc3QgaW4KKwkgKi0qLW9wZW5ic2QqIHwgKi0qLWZyZWVic2QqKQorCSAgICMgRG8gbm90IGluY2x1ZGUgbGliY19yIGRpcmVjdGx5LCB1c2UgLXB0aHJlYWQgZmxhZy4KKwkgICBjb250aW51ZQorCSAgIDs7CisJIGVzYWMKKwlmaQorCWRlcGxpYnM9IiRkZXBsaWJzICRhcmciCisJY29udGludWUKKwk7OworCisgICAgIC1tdHwtbXRocmVhZHN8LWt0aHJlYWR8LUt0aHJlYWR8LXB0aHJlYWR8LXB0aHJlYWRzfC0tdGhyZWFkLXNhZmUpCisJZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKKwljb250aW51ZQorCTs7CisKKyAgICAgIC1tb2R1bGUpCisJbW9kdWxlPXllcworCWNvbnRpbnVlCisJOzsKKworICAgICAgIyBnY2MgLW0qIGFyZ3VtZW50cyBzaG91bGQgYmUgcGFzc2VkIHRvIHRoZSBsaW5rZXIgdmlhICRjb21waWxlcl9mbGFncworICAgICAgIyBpbiBvcmRlciB0byBwYXNzIGFyY2hpdGVjdHVyZSBpbmZvcm1hdGlvbiB0byB0aGUgbGlua2VyCisgICAgICAjIChlLmcuIDMyIHZzIDY0LWJpdCkuICBUaGlzIG1heSBhbHNvIGJlIGFjY29tcGxpc2hlZCB2aWEgLVdsLC1tZm9vCisgICAgICAjIGJ1dCB0aGlzIGlzIG5vdCByZWxpYWJsZSB3aXRoIGdjYyBiZWNhdXNlIGdjYyBtYXkgdXNlIC1tZm9vIHRvCisgICAgICAjIHNlbGVjdCBhIGRpZmZlcmVudCBsaW5rZXIsIGRpZmZlcmVudCBsaWJyYXJpZXMsIGV0Yywgd2hpbGUKKyAgICAgICMgLVdsLC1tZm9vIHNpbXBseSBwYXNzZXMgLW1mb28gdG8gdGhlIGxpbmtlci4KKyAgICAgIC1tKikKKwkjIFVua25vd24gYXJndW1lbnRzIGluIGJvdGggZmluYWxpemVfY29tbWFuZCBhbmQgY29tcGlsZV9jb21tYW5kIG5lZWQKKwkjIHRvIGJlIGFlc3RoZXRpY2FsbHkgcXVvdGVkIGJlY2F1c2UgdGhleSBhcmUgZXZhbGVkIGxhdGVyLgorCWFyZz1gJGVjaG8gIlgkYXJnIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKwljYXNlICRhcmcgaW4KKwkqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKKwkgIGFyZz0iXCIkYXJnXCIiCisJICA7OworCWVzYWMKKyAgICAgICAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICRhcmciCisgICAgICAgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICRhcmciCisgICAgICAgIGlmIHRlc3QgIiR3aXRoX2djYyIgPSAieWVzIiA7IHRoZW4KKyAgICAgICAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCisgICAgICAgIGZpCisgICAgICAgIGNvbnRpbnVlCisgICAgICAgIDs7CisKKyAgICAgIC1zaHJleHQpCisJcHJldj1zaHJleHQKKwljb250aW51ZQorCTs7CisKKyAgICAgIC1uby1mYXN0LWluc3RhbGwpCisJZmFzdF9pbnN0YWxsPW5vCisJY29udGludWUKKwk7OworCisgICAgICAtbm8taW5zdGFsbCkKKwljYXNlICRob3N0IGluCisJKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiopCisJICAjIFRoZSBQQVRIIGhhY2tlcnkgaW4gd3JhcHBlciBzY3JpcHRzIGlzIHJlcXVpcmVkIG9uIFdpbmRvd3MKKwkgICMgaW4gb3JkZXIgZm9yIHRoZSBsb2FkZXIgdG8gZmluZCBhbnkgZGxscyBpdCBuZWVkcy4KKwkgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLW5vLWluc3RhbGwnIGlzIGlnbm9yZWQgZm9yICRob3N0IiAxPiYyCisJICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBhc3N1bWluZyBcYC1uby1mYXN0LWluc3RhbGwnIGluc3RlYWQiIDE+JjIKKwkgIGZhc3RfaW5zdGFsbD1ubworCSAgOzsKKwkqKSBub19pbnN0YWxsPXllcyA7OworCWVzYWMKKwljb250aW51ZQorCTs7CisKKyAgICAgIC1uby11bmRlZmluZWQpCisJYWxsb3dfdW5kZWZpbmVkPW5vCisJY29udGludWUKKwk7OworCisgICAgICAtb2JqZWN0bGlzdCkKKwlwcmV2PW9iamVjdGxpc3QKKwljb250aW51ZQorCTs7CisKKyAgICAgIC1vKSBwcmV2PW91dHB1dCA7OworCisgICAgICAtcHJlY2lvdXMtZmlsZXMtcmVnZXgpCisJcHJldj1wcmVjaW91c19yZWdleAorCWNvbnRpbnVlCisJOzsKKworICAgICAgLXJlbGVhc2UpCisJcHJldj1yZWxlYXNlCisJY29udGludWUKKwk7OworCisgICAgICAtcnBhdGgpCisJcHJldj1ycGF0aAorCWNvbnRpbnVlCisJOzsKKworICAgICAgLVIpCisJcHJldj14cnBhdGgKKwljb250aW51ZQorCTs7CisKKyAgICAgIC1SKikKKwlkaXI9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAncy9eLVIvLydgCisJIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCisJY2FzZSAkZGlyIGluCisJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSA7OworCSopCisJICAkZWNobyAiJG1vZGVuYW1lOiBvbmx5IGFic29sdXRlIHJ1bi1wYXRocyBhcmUgYWxsb3dlZCIgMT4mMgorCSAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICA7OworCWVzYWMKKwljYXNlICIkeHJwYXRoICIgaW4KKwkqIiAkZGlyICIqKSA7OworCSopIHhycGF0aD0iJHhycGF0aCAkZGlyIiA7OworCWVzYWMKKwljb250aW51ZQorCTs7CisKKyAgICAgIC1zdGF0aWMpCisJIyBUaGUgZWZmZWN0cyBvZiAtc3RhdGljIGFyZSBkZWZpbmVkIGluIGEgcHJldmlvdXMgbG9vcC4KKwkjIFdlIHVzZWQgdG8gZG8gdGhlIHNhbWUgYXMgLWFsbC1zdGF0aWMgb24gcGxhdGZvcm1zIHRoYXQKKwkjIGRpZG4ndCBoYXZlIGEgUElDIGZsYWcsIGJ1dCB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZSBlZmZlY3RzCisJIyB3b3VsZCBiZSBlcXVpdmFsZW50IHdhcyB3cm9uZy4gIEl0IHdvdWxkIGJyZWFrIG9uIGF0IGxlYXN0CisJIyBEaWdpdGFsIFVuaXggYW5kIEFJWC4KKwljb250aW51ZQorCTs7CisKKyAgICAgIC10aHJlYWQtc2FmZSkKKwl0aHJlYWRfc2FmZT15ZXMKKwljb250aW51ZQorCTs7CisKKyAgICAgIC12ZXJzaW9uLWluZm8pCisJcHJldj12aW5mbworCWNvbnRpbnVlCisJOzsKKyAgICAgIC12ZXJzaW9uLW51bWJlcikKKwlwcmV2PXZpbmZvCisJdmluZm9fbnVtYmVyPXllcworCWNvbnRpbnVlCisJOzsKKworICAgICAgLVdjLCopCisJYXJncz1gJGVjaG8gIlgkYXJnIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0IiAtZSAncy9eLVdjLC8vJ2AKKwlhcmc9CisJc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JywnCisJZm9yIGZsYWcgaW4gJGFyZ3M7IGRvCisJICBJRlM9IiRzYXZlX2lmcyIKKwkgIGNhc2UgJGZsYWcgaW4KKwkgICAgKltcW1x+XCNcXlwmXCpcKFwpXHtcfVx8XDtcPFw+XD9cJ1wgXAldKnwqXSp8IiIpCisJICAgIGZsYWc9IlwiJGZsYWdcIiIKKwkgICAgOzsKKwkgIGVzYWMKKwkgIGFyZz0iJGFyZyAkd2wkZmxhZyIKKwkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGZsYWciCisJZG9uZQorCUlGUz0iJHNhdmVfaWZzIgorCWFyZz1gJGVjaG8gIlgkYXJnIiB8ICRYc2VkIC1lICJzL14gLy8iYAorCTs7CisKKyAgICAgIC1XbCwqKQorCWFyZ3M9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCIgLWUgJ3MvXi1XbCwvLydgCisJYXJnPQorCXNhdmVfaWZzPSIkSUZTIjsgSUZTPScsJworCWZvciBmbGFnIGluICRhcmdzOyBkbworCSAgSUZTPSIkc2F2ZV9pZnMiCisJICBjYXNlICRmbGFnIGluCisJICAgICpbXFtcflwjXF5cJlwqXChcKVx7XH1cfFw7XDxcPlw/XCdcIFwJXSp8Kl0qfCIiKQorCSAgICBmbGFnPSJcIiRmbGFnXCIiCisJICAgIDs7CisJICBlc2FjCisJICBhcmc9IiRhcmcgJHdsJGZsYWciCisJICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR3bCRmbGFnIgorCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRmbGFnIgorCWRvbmUKKwlJRlM9IiRzYXZlX2lmcyIKKwlhcmc9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAicy9eIC8vImAKKwk7OworCisgICAgICAtWGNvbXBpbGVyKQorCXByZXY9eGNvbXBpbGVyCisJY29udGludWUKKwk7OworCisgICAgICAtWGxpbmtlcikKKwlwcmV2PXhsaW5rZXIKKwljb250aW51ZQorCTs7CisKKyAgICAgIC1YQ0NsaW5rZXIpCisJcHJldj14Y2NsaW5rZXIKKwljb250aW51ZQorCTs7CisKKyAgICAgICMgU29tZSBvdGhlciBjb21waWxlciBmbGFnLgorICAgICAgLSogfCArKikKKwkjIFVua25vd24gYXJndW1lbnRzIGluIGJvdGggZmluYWxpemVfY29tbWFuZCBhbmQgY29tcGlsZV9jb21tYW5kIG5lZWQKKwkjIHRvIGJlIGFlc3RoZXRpY2FsbHkgcXVvdGVkIGJlY2F1c2UgdGhleSBhcmUgZXZhbGVkIGxhdGVyLgorCWFyZz1gJGVjaG8gIlgkYXJnIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKwljYXNlICRhcmcgaW4KKwkqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKKwkgIGFyZz0iXCIkYXJnXCIiCisJICA7OworCWVzYWMKKwk7OworCisgICAgICAqLiRvYmpleHQpCisJIyBBIHN0YW5kYXJkIG9iamVjdC4KKwlvYmpzPSIkb2JqcyAkYXJnIgorCTs7CisKKyAgICAgICoubG8pCisJIyBBIGxpYnRvb2wtY29udHJvbGxlZCBvYmplY3QuCisKKwkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBvYmplY3QuCisJaWYgKCR7U0VEfSAtZSAnMnEnICRhcmcgfCBncmVwICJeIyBHZW5lcmF0ZWQgYnkgLiokUEFDS0FHRSIpID4vZGV2L251bGwgMj4mMTsgdGhlbgorCSAgcGljX29iamVjdD0KKwkgIG5vbl9waWNfb2JqZWN0PQorCisJICAjIFJlYWQgdGhlIC5sbyBmaWxlCisJICAjIElmIHRoZXJlIGlzIG5vIGRpcmVjdG9yeSBjb21wb25lbnQsIHRoZW4gYWRkIG9uZS4KKwkgIGNhc2UgJGFyZyBpbgorCSAgKi8qIHwgKlxcKikgLiAkYXJnIDs7CisJICAqKSAuIC4vJGFyZyA7OworCSAgZXNhYworCisJICBpZiB0ZXN0IC16ICIkcGljX29iamVjdCIgfHwgXAorCSAgICAgdGVzdCAteiAiJG5vbl9waWNfb2JqZWN0IiB8fAorCSAgICAgdGVzdCAiJHBpY19vYmplY3QiID0gbm9uZSAmJiBcCisJICAgICB0ZXN0ICIkbm9uX3BpY19vYmplY3QiID0gbm9uZTsgdGhlbgorCSAgICAkZWNobyAiJG1vZGVuYW1lOiBjYW5ub3QgZmluZCBuYW1lIG9mIG9iamVjdCBmb3IgXGAkYXJnJyIgMT4mMgorCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgIGZpCisKKwkgICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCisJICB4ZGlyPWAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AKKwkgIGlmIHRlc3QgIlgkeGRpciIgPSAiWCRhcmciOyB0aGVuCisJICAgIHhkaXI9CisgCSAgZWxzZQorCSAgICB4ZGlyPSIkeGRpci8iCisJICBmaQorCisJICBpZiB0ZXN0ICIkcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgorCSAgICAjIFByZXBlbmQgdGhlIHN1YmRpcmVjdG9yeSB0aGUgb2JqZWN0IGlzIGZvdW5kIGluLgorCSAgICBwaWNfb2JqZWN0PSIkeGRpciRwaWNfb2JqZWN0IgorCisJICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KKwkgICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllcyAmJiB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiID0geWVzOyB0aGVuCisJCWRsZmlsZXM9IiRkbGZpbGVzICRwaWNfb2JqZWN0IgorCQlwcmV2PQorCQljb250aW51ZQorCSAgICAgIGVsc2UKKwkJIyBJZiBsaWJ0b29sIG9iamVjdHMgYXJlIHVuc3VwcG9ydGVkLCB0aGVuIHdlIG5lZWQgdG8gcHJlbG9hZC4KKwkJcHJldj1kbHByZWZpbGVzCisJICAgICAgZmkKKwkgICAgZmkKKworCSAgICAjIENIRUNLIE1FOiAgSSB0aGluayBJIGJ1c3RlZCB0aGlzLiAgLU9zc2FtYQorCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCisJICAgICAgIyBQcmVsb2FkIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgorCSAgICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRwaWNfb2JqZWN0IgorCSAgICAgIHByZXY9CisJICAgIGZpCisKKwkgICAgIyBBIFBJQyBvYmplY3QuCisJICAgIGxpYm9ianM9IiRsaWJvYmpzICRwaWNfb2JqZWN0IgorCSAgICBhcmc9IiRwaWNfb2JqZWN0IgorCSAgZmkKKworCSAgIyBOb24tUElDIG9iamVjdC4KKwkgIGlmIHRlc3QgIiRub25fcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgorCSAgICAjIFByZXBlbmQgdGhlIHN1YmRpcmVjdG9yeSB0aGUgb2JqZWN0IGlzIGZvdW5kIGluLgorCSAgICBub25fcGljX29iamVjdD0iJHhkaXIkbm9uX3BpY19vYmplY3QiCisKKwkgICAgIyBBIHN0YW5kYXJkIG5vbi1QSUMgb2JqZWN0CisJICAgIG5vbl9waWNfb2JqZWN0cz0iJG5vbl9waWNfb2JqZWN0cyAkbm9uX3BpY19vYmplY3QiCisJICAgIGlmIHRlc3QgLXogIiRwaWNfb2JqZWN0IiB8fCB0ZXN0ICIkcGljX29iamVjdCIgPSBub25lIDsgdGhlbgorCSAgICAgIGFyZz0iJG5vbl9waWNfb2JqZWN0IgorCSAgICBmaQorCSAgZmkKKwllbHNlCisJICAjIE9ubHkgYW4gZXJyb3IgaWYgbm90IGRvaW5nIGEgZHJ5LXJ1bi4KKwkgIGlmIHRlc3QgLXogIiRydW4iOyB0aGVuCisJICAgICRlY2hvICIkbW9kZW5hbWU6IFxgJGFyZycgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBvYmplY3QiIDE+JjIKKwkgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICBlbHNlCisJICAgICMgRHJ5LXJ1biBjYXNlLgorCisJICAgICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCisJICAgIHhkaXI9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAncyUvW14vXSokJSUnYAorCSAgICBpZiB0ZXN0ICJYJHhkaXIiID0gIlgkYXJnIjsgdGhlbgorCSAgICAgIHhkaXI9CisJICAgIGVsc2UKKwkgICAgICB4ZGlyPSIkeGRpci8iCisJICAgIGZpCisKKwkgICAgcGljX29iamVjdD1gJGVjaG8gIlgke3hkaXJ9JHtvYmpkaXJ9LyR7YXJnfSIgfCAkWHNlZCAtZSAiJGxvMm8iYAorCSAgICBub25fcGljX29iamVjdD1gJGVjaG8gIlgke3hkaXJ9JHthcmd9IiB8ICRYc2VkIC1lICIkbG8ybyJgCisJICAgIGxpYm9ianM9IiRsaWJvYmpzICRwaWNfb2JqZWN0IgorCSAgICBub25fcGljX29iamVjdHM9IiRub25fcGljX29iamVjdHMgJG5vbl9waWNfb2JqZWN0IgorCSAgZmkKKwlmaQorCTs7CisKKyAgICAgICouJGxpYmV4dCkKKwkjIEFuIGFyY2hpdmUuCisJZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKKwlvbGRfZGVwbGlicz0iJG9sZF9kZXBsaWJzICRhcmciCisJY29udGludWUKKwk7OworCisgICAgICAqLmxhKQorCSMgQSBsaWJ0b29sLWNvbnRyb2xsZWQgbGlicmFyeS4KKworCWlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KKwkgICMgVGhpcyBsaWJyYXJ5IHdhcyBzcGVjaWZpZWQgd2l0aCAtZGxvcGVuLgorCSAgZGxmaWxlcz0iJGRsZmlsZXMgJGFyZyIKKwkgIHByZXY9CisJZWxpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCisJICAjIFRoZSBsaWJyYXJ5IHdhcyBzcGVjaWZpZWQgd2l0aCAtZGxwcmVvcGVuLgorCSAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGFyZyIKKwkgIHByZXY9CisJZWxzZQorCSAgZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKKwlmaQorCWNvbnRpbnVlCisJOzsKKworICAgICAgIyBTb21lIG90aGVyIGNvbXBpbGVyIGFyZ3VtZW50LgorICAgICAgKikKKwkjIFVua25vd24gYXJndW1lbnRzIGluIGJvdGggZmluYWxpemVfY29tbWFuZCBhbmQgY29tcGlsZV9jb21tYW5kIG5lZWQKKwkjIHRvIGJlIGFlc3RoZXRpY2FsbHkgcXVvdGVkIGJlY2F1c2UgdGhleSBhcmUgZXZhbGVkIGxhdGVyLgorCWFyZz1gJGVjaG8gIlgkYXJnIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKwljYXNlICRhcmcgaW4KKwkqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKKwkgIGFyZz0iXCIkYXJnXCIiCisJICA7OworCWVzYWMKKwk7OworICAgICAgZXNhYyAjIGFyZworCisgICAgICAjIE5vdyBhY3R1YWxseSBzdWJzdGl0dXRlIHRoZSBhcmd1bWVudCBpbnRvIHRoZSBjb21tYW5kcy4KKyAgICAgIGlmIHRlc3QgLW4gIiRhcmciOyB0aGVuCisJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICRhcmciCisJZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJGFyZyIKKyAgICAgIGZpCisgICAgZG9uZSAjIGFyZ3VtZW50IHBhcnNpbmcgbG9vcAorCisgICAgaWYgdGVzdCAtbiAiJHByZXYiOyB0aGVuCisgICAgICAkZWNobyAiJG1vZGVuYW1lOiB0aGUgXGAkcHJldmFyZycgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IiAxPiYyCisgICAgICAkZWNobyAiJGhlbHAiIDE+JjIKKyAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorICAgIGZpCisKKyAgICBpZiB0ZXN0ICIkZXhwb3J0X2R5bmFtaWMiID0geWVzICYmIHRlc3QgLW4gIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWMiOyB0aGVuCisgICAgICBldmFsIGFyZz1cIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWNcIgorICAgICAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICRhcmciCisgICAgICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkYXJnIgorICAgIGZpCisKKyAgICBvbGRsaWJzPQorICAgICMgY2FsY3VsYXRlIHRoZSBuYW1lIG9mIHRoZSBmaWxlLCB3aXRob3V0IGl0cyBkaXJlY3RvcnkKKyAgICBvdXRwdXRuYW1lPWAkZWNobyAiWCRvdXRwdXQiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKKyAgICBsaWJvYmpzX3NhdmU9IiRsaWJvYmpzIgorCisgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCisgICAgICAjIGdldCB0aGUgZGlyZWN0b3JpZXMgbGlzdGVkIGluICRzaGxpYnBhdGhfdmFyCisgICAgICBldmFsIHNobGliX3NlYXJjaF9wYXRoPVxgXCRlY2hvIFwiWFwkeyRzaGxpYnBhdGhfdmFyfVwiIFx8IFwkWHNlZCAtZSBcJ3MvOi8gL2dcJ1xgCisgICAgZWxzZQorICAgICAgc2hsaWJfc2VhcmNoX3BhdGg9CisgICAgZmkKKyAgICBldmFsIHN5c19saWJfc2VhcmNoX3BhdGg9XCIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjXCIKKyAgICBldmFsIHN5c19saWJfZGxzZWFyY2hfcGF0aD1cIiRzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlY1wiCisKKyAgICBvdXRwdXRfb2JqZGlyPWAkZWNobyAiWCRvdXRwdXQiIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AKKyAgICBpZiB0ZXN0ICJYJG91dHB1dF9vYmpkaXIiID0gIlgkb3V0cHV0IjsgdGhlbgorICAgICAgb3V0cHV0X29iamRpcj0iJG9iamRpciIKKyAgICBlbHNlCisgICAgICBvdXRwdXRfb2JqZGlyPSIkb3V0cHV0X29iamRpci8kb2JqZGlyIgorICAgIGZpCisgICAgIyBDcmVhdGUgdGhlIG9iamVjdCBkaXJlY3RvcnkuCisgICAgaWYgdGVzdCAhIC1kICIkb3V0cHV0X29iamRpciI7IHRoZW4KKyAgICAgICRzaG93ICIkbWtkaXIgJG91dHB1dF9vYmpkaXIiCisgICAgICAkcnVuICRta2RpciAkb3V0cHV0X29iamRpcgorICAgICAgc3RhdHVzPSQ/CisgICAgICBpZiB0ZXN0ICIkc3RhdHVzIiAtbmUgMCAmJiB0ZXN0ICEgLWQgIiRvdXRwdXRfb2JqZGlyIjsgdGhlbgorCWV4aXQgJHN0YXR1cworICAgICAgZmkKKyAgICBmaQorCisgICAgIyBEZXRlcm1pbmUgdGhlIHR5cGUgb2Ygb3V0cHV0CisgICAgY2FzZSAkb3V0cHV0IGluCisgICAgIiIpCisgICAgICAkZWNobyAiJG1vZGVuYW1lOiB5b3UgbXVzdCBzcGVjaWZ5IGFuIG91dHB1dCBmaWxlIiAxPiYyCisgICAgICAkZWNobyAiJGhlbHAiIDE+JjIKKyAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorICAgICAgOzsKKyAgICAqLiRsaWJleHQpIGxpbmttb2RlPW9sZGxpYiA7OworICAgICoubG8gfCAqLiRvYmpleHQpIGxpbmttb2RlPW9iaiA7OworICAgICoubGEpIGxpbmttb2RlPWxpYiA7OworICAgICopIGxpbmttb2RlPXByb2cgOzsgIyBBbnl0aGluZyBlbHNlIHNob3VsZCBiZSBhIHByb2dyYW0uCisgICAgZXNhYworCisgICAgY2FzZSAkaG9zdCBpbgorICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpwdzMyKikKKyAgICAgICMgZG9uJ3QgZWxpbWluYXRlIGR1cGxpY2F0aW9ucyBpbiAkcG9zdGRlcHMgYW5kICRwcmVkZXBzCisgICAgICBkdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9eWVzCisgICAgICA7OworICAgICopCisgICAgICBkdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9JGR1cGxpY2F0ZV9kZXBzCisgICAgICA7OworICAgIGVzYWMKKyAgICBzcGVjaWFsZGVwbGlicz0KKworICAgIGxpYnM9CisgICAgIyBGaW5kIGFsbCBpbnRlcmRlcGVuZGVudCBkZXBsaWJzIGJ5IHNlYXJjaGluZyBmb3IgbGlicmFyaWVzCisgICAgIyB0aGF0IGFyZSBsaW5rZWQgbW9yZSB0aGFuIG9uY2UgKGUuZy4gLWxhIC1sYiAtbGEpCisgICAgZm9yIGRlcGxpYiBpbiAkZGVwbGliczsgZG8KKyAgICAgIGlmIHRlc3QgIlgkZHVwbGljYXRlX2RlcHMiID0gIlh5ZXMiIDsgdGhlbgorCWNhc2UgIiRsaWJzICIgaW4KKwkqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CisJZXNhYworICAgICAgZmkKKyAgICAgIGxpYnM9IiRsaWJzICRkZXBsaWIiCisgICAgZG9uZQorCisgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYjsgdGhlbgorICAgICAgbGlicz0iJHByZWRlcHMgJGxpYnMgJGNvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aCAkcG9zdGRlcHMiCisKKyAgICAgICMgQ29tcHV0ZSBsaWJyYXJpZXMgdGhhdCBhcmUgbGlzdGVkIG1vcmUgdGhhbiBvbmNlIGluICRwcmVkZXBzCisgICAgICAjICRwb3N0ZGVwcyBhbmQgbWFyayB0aGVtIGFzIHNwZWNpYWwgKGkuZS4sIHdob3NlIGR1cGxpY2F0ZXMgYXJlCisgICAgICAjIG5vdCB0byBiZSBlbGltaW5hdGVkKS4KKyAgICAgIHByZV9wb3N0X2RlcHM9CisgICAgICBpZiB0ZXN0ICJYJGR1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcyIgPSAiWHllcyIgOyB0aGVuCisJZm9yIHByZV9wb3N0X2RlcCBpbiAkcHJlZGVwcyAkcG9zdGRlcHM7IGRvCisJICBjYXNlICIkcHJlX3Bvc3RfZGVwcyAiIGluCisJICAqIiAkcHJlX3Bvc3RfZGVwICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRwcmVfcG9zdF9kZXBzIiA7OworCSAgZXNhYworCSAgcHJlX3Bvc3RfZGVwcz0iJHByZV9wb3N0X2RlcHMgJHByZV9wb3N0X2RlcCIKKwlkb25lCisgICAgICBmaQorICAgICAgcHJlX3Bvc3RfZGVwcz0KKyAgICBmaQorCisgICAgZGVwbGlicz0KKyAgICBuZXdkZXBlbmRlbmN5X2xpYnM9CisgICAgbmV3bGliX3NlYXJjaF9wYXRoPQorICAgIG5lZWRfcmVsaW5rPW5vICMgd2hldGhlciB3ZSdyZSBsaW5raW5nIGFueSB1bmluc3RhbGxlZCBsaWJ0b29sIGxpYnJhcmllcworICAgIG5vdGluc3RfZGVwbGlicz0gIyBub3QtaW5zdGFsbGVkIGxpYnRvb2wgbGlicmFyaWVzCisgICAgbm90aW5zdF9wYXRoPSAjIHBhdGhzIHRoYXQgY29udGFpbiBub3QtaW5zdGFsbGVkIGxpYnRvb2wgbGlicmFyaWVzCisgICAgY2FzZSAkbGlua21vZGUgaW4KKyAgICBsaWIpCisJcGFzc2VzPSJjb252IGxpbmsiCisJZm9yIGZpbGUgaW4gJGRsZmlsZXMgJGRscHJlZmlsZXM7IGRvCisJICBjYXNlICRmaWxlIGluCisJICAqLmxhKSA7OworCSAgKikKKwkgICAgJGVjaG8gIiRtb2RlbmFtZTogbGlicmFyaWVzIGNhbiBcYC1kbG9wZW4nIG9ubHkgbGlidG9vbCBsaWJyYXJpZXM6ICRmaWxlIiAxPiYyCisJICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgICA7OworCSAgZXNhYworCWRvbmUKKwk7OworICAgIHByb2cpCisJY29tcGlsZV9kZXBsaWJzPQorCWZpbmFsaXplX2RlcGxpYnM9CisJYWxsZGVwbGlicz1ubworCW5ld2RsZmlsZXM9CisJbmV3ZGxwcmVmaWxlcz0KKwlwYXNzZXM9ImNvbnYgc2NhbiBkbG9wZW4gZGxwcmVvcGVuIGxpbmsiCisJOzsKKyAgICAqKSAgcGFzc2VzPSJjb252IgorCTs7CisgICAgZXNhYworICAgIGZvciBwYXNzIGluICRwYXNzZXM7IGRvCisgICAgICBpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gImxpYixsaW5rIiB8fAorCSB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gInByb2csc2NhbiI7IHRoZW4KKwlsaWJzPSIkZGVwbGlicyIKKwlkZXBsaWJzPQorICAgICAgZmkKKyAgICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCisJY2FzZSAkcGFzcyBpbgorCWRsb3BlbikgbGlicz0iJGRsZmlsZXMiIDs7CisJZGxwcmVvcGVuKSBsaWJzPSIkZGxwcmVmaWxlcyIgOzsKKwlsaW5rKQorCSAgbGlicz0iJGRlcGxpYnMgJURFUExJQlMlIgorCSAgdGVzdCAiWCRsaW5rX2FsbF9kZXBsaWJzIiAhPSBYbm8gJiYgbGlicz0iJGxpYnMgJGRlcGVuZGVuY3lfbGlicyIKKwkgIDs7CisJZXNhYworICAgICAgZmkKKyAgICAgIGlmIHRlc3QgIiRwYXNzIiA9IGRsb3BlbjsgdGhlbgorCSMgQ29sbGVjdCBkbHByZW9wZW5lZCBsaWJyYXJpZXMKKwlzYXZlX2RlcGxpYnM9IiRkZXBsaWJzIgorCWRlcGxpYnM9CisgICAgICBmaQorICAgICAgZm9yIGRlcGxpYiBpbiAkbGliczsgZG8KKwlsaWI9CisJZm91bmQ9bm8KKwljYXNlICRkZXBsaWIgaW4KKwktbXR8LW10aHJlYWRzfC1rdGhyZWFkfC1LdGhyZWFkfC1wdGhyZWFkfC1wdGhyZWFkc3wtLXRocmVhZC1zYWZlKQorCSAgaWYgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJwcm9nLGxpbmsiOyB0aGVuCisJICAgIGNvbXBpbGVfZGVwbGlicz0iJGRlcGxpYiAkY29tcGlsZV9kZXBsaWJzIgorCSAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgorCSAgZWxzZQorCSAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgorCSAgZmkKKwkgIGNvbnRpbnVlCisJICA7OworCS1sKikKKwkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgIT0gbGliICYmIHRlc3QgIiRsaW5rbW9kZSIgIT0gcHJvZzsgdGhlbgorCSAgICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC1sJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcy9vYmplY3RzIiAxPiYyCisJICAgIGNvbnRpbnVlCisJICBmaQorCSAgbmFtZT1gJGVjaG8gIlgkZGVwbGliIiB8ICRYc2VkIC1lICdzL14tbC8vJ2AKKwkgIGZvciBzZWFyY2hkaXIgaW4gJG5ld2xpYl9zZWFyY2hfcGF0aCAkbGliX3NlYXJjaF9wYXRoICRzeXNfbGliX3NlYXJjaF9wYXRoICRzaGxpYl9zZWFyY2hfcGF0aDsgZG8KKwkgICAgZm9yIHNlYXJjaF9leHQgaW4gLmxhICRzdGRfc2hyZXh0IC5zbyAuYTsgZG8KKwkgICAgICAjIFNlYXJjaCB0aGUgbGlidG9vbCBsaWJyYXJ5CisJICAgICAgbGliPSIkc2VhcmNoZGlyL2xpYiR7bmFtZX0ke3NlYXJjaF9leHR9IgorCSAgICAgIGlmIHRlc3QgLWYgIiRsaWIiOyB0aGVuCisJCWlmIHRlc3QgIiRzZWFyY2hfZXh0IiA9ICIubGEiOyB0aGVuCisJCSAgZm91bmQ9eWVzCisJCWVsc2UKKwkJICBmb3VuZD1ubworCQlmaQorCQlicmVhayAyCisJICAgICAgZmkKKwkgICAgZG9uZQorCSAgZG9uZQorCSAgaWYgdGVzdCAiJGZvdW5kIiAhPSB5ZXM7IHRoZW4KKwkgICAgIyBkZXBsaWIgZG9lc24ndCBzZWVtIHRvIGJlIGEgbGlidG9vbCBsaWJyYXJ5CisJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxsaW5rIjsgdGhlbgorCSAgICAgIGNvbXBpbGVfZGVwbGlicz0iJGRlcGxpYiAkY29tcGlsZV9kZXBsaWJzIgorCSAgICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCisJICAgIGVsc2UKKwkgICAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgorCSAgICAgIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWIgJiYgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCisJICAgIGZpCisJICAgIGNvbnRpbnVlCisJICBlbHNlICMgZGVwbGliIGlzIGEgbGlidG9vbCBsaWJyYXJ5CisJICAgICMgSWYgJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyAmJiAkZGVwbGliIGlzIGEgc3RkbGliLAorCSAgICAjIFdlIG5lZWQgdG8gZG8gc29tZSBzcGVjaWFsIHRoaW5ncyBoZXJlLCBhbmQgbm90IGxhdGVyLgorCSAgICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCisJICAgICAgY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCisJICAgICAgKiIgJGRlcGxpYiAiKikKKwkJaWYgKCR7U0VEfSAtZSAnMnEnICRsaWIgfAorICAgICAgICAgICAgICAgICAgICBncmVwICJeIyBHZW5lcmF0ZWQgYnkgLiokUEFDS0FHRSIpID4vZGV2L251bGwgMj4mMTsgdGhlbgorCQkgIGxpYnJhcnlfbmFtZXM9CisJCSAgb2xkX2xpYnJhcnk9CisJCSAgY2FzZSAkbGliIGluCisJCSAgKi8qIHwgKlxcKikgLiAkbGliIDs7CisJCSAgKikgLiAuLyRsaWIgOzsKKwkJICBlc2FjCisJCSAgZm9yIGwgaW4gJG9sZF9saWJyYXJ5ICRsaWJyYXJ5X25hbWVzOyBkbworCQkgICAgbGw9IiRsIgorCQkgIGRvbmUKKwkJICBpZiB0ZXN0ICJYJGxsIiA9ICJYJG9sZF9saWJyYXJ5IiA7IHRoZW4gIyBvbmx5IHN0YXRpYyB2ZXJzaW9uIGF2YWlsYWJsZQorCQkgICAgZm91bmQ9bm8KKwkJICAgIGxhZGlyPWAkZWNobyAiWCRsaWIiIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AKKwkJICAgIHRlc3QgIlgkbGFkaXIiID0gIlgkbGliIiAmJiBsYWRpcj0iLiIKKwkJICAgIGxpYj0kbGFkaXIvJG9sZF9saWJyYXJ5CisJCSAgICBpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gInByb2csbGluayI7IHRoZW4KKwkJICAgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCisJCSAgICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCisJCSAgICBlbHNlCisJCSAgICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCisJCSAgICAgIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWIgJiYgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCisJCSAgICBmaQorCQkgICAgY29udGludWUKKwkJICBmaQorCQlmaQorCSAgICAgICAgOzsKKwkgICAgICAqKSA7OworCSAgICAgIGVzYWMKKwkgICAgZmkKKwkgIGZpCisJICA7OyAjIC1sCisJLUwqKQorCSAgY2FzZSAkbGlua21vZGUgaW4KKwkgIGxpYikKKwkgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKKwkgICAgdGVzdCAiJHBhc3MiID0gY29udiAmJiBjb250aW51ZQorCSAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKKwkgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICJgJGVjaG8gIlgkZGVwbGliIiB8ICRYc2VkIC1lICdzL14tTC8vJ2AKKwkgICAgOzsKKwkgIHByb2cpCisJICAgIGlmIHRlc3QgIiRwYXNzIiA9IGNvbnY7IHRoZW4KKwkgICAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgorCSAgICAgIGNvbnRpbnVlCisJICAgIGZpCisJICAgIGlmIHRlc3QgIiRwYXNzIiA9IHNjYW47IHRoZW4KKwkgICAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgorCSAgICBlbHNlCisJICAgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCisJICAgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKKwkgICAgZmkKKwkgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICJgJGVjaG8gIlgkZGVwbGliIiB8ICRYc2VkIC1lICdzL14tTC8vJ2AKKwkgICAgOzsKKwkgICopCisJICAgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLUwnIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzL29iamVjdHMiIDE+JjIKKwkgICAgOzsKKwkgIGVzYWMgIyBsaW5rbW9kZQorCSAgY29udGludWUKKwkgIDs7ICMgLUwKKwktUiopCisJICBpZiB0ZXN0ICIkcGFzcyIgPSBsaW5rOyB0aGVuCisJICAgIGRpcj1gJGVjaG8gIlgkZGVwbGliIiB8ICRYc2VkIC1lICdzL14tUi8vJ2AKKwkgICAgIyBNYWtlIHN1cmUgdGhlIHhycGF0aCBjb250YWlucyBvbmx5IHVuaXF1ZSBkaXJlY3Rvcmllcy4KKwkgICAgY2FzZSAiJHhycGF0aCAiIGluCisJICAgICoiICRkaXIgIiopIDs7CisJICAgICopIHhycGF0aD0iJHhycGF0aCAkZGlyIiA7OworCSAgICBlc2FjCisJICBmaQorCSAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKKwkgIGNvbnRpbnVlCisJICA7OworCSoubGEpIGxpYj0iJGRlcGxpYiIgOzsKKwkqLiRsaWJleHQpCisJICBpZiB0ZXN0ICIkcGFzcyIgPSBjb252OyB0aGVuCisJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCisJICAgIGNvbnRpbnVlCisJICBmaQorCSAgY2FzZSAkbGlua21vZGUgaW4KKwkgIGxpYikKKwkgICAgaWYgdGVzdCAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAhPSBwYXNzX2FsbDsgdGhlbgorCSAgICAgICRlY2hvCisJICAgICAgJGVjaG8gIioqKiBXYXJuaW5nOiBUcnlpbmcgdG8gbGluayB3aXRoIHN0YXRpYyBsaWIgYXJjaGl2ZSAkZGVwbGliLiIKKwkgICAgICAkZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkgICAgICAkZWNobyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKKwkgICAgICAkZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgorCSAgICAgICRlY2hvICIqKiogYmVjYXVzZSB0aGUgZmlsZSBleHRlbnNpb25zIC4kbGliZXh0IG9mIHRoaXMgYXJndW1lbnQgbWFrZXMgbWUgYmVsaWV2ZSIKKwkgICAgICAkZWNobyAiKioqIHRoYXQgaXQgaXMganVzdCBhIHN0YXRpYyBhcmNoaXZlIHRoYXQgSSBzaG91bGQgbm90IHVzZWQgaGVyZS4iCisJICAgIGVsc2UKKwkgICAgICAkZWNobworCSAgICAgICRlY2hvICIqKiogV2FybmluZzogTGlua2luZyB0aGUgc2hhcmVkIGxpYnJhcnkgJG91dHB1dCBhZ2FpbnN0IHRoZSIKKwkgICAgICAkZWNobyAiKioqIHN0YXRpYyBsaWJyYXJ5ICRkZXBsaWIgaXMgbm90IHBvcnRhYmxlISIKKwkgICAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgorCSAgICBmaQorCSAgICBjb250aW51ZQorCSAgICA7OworCSAgcHJvZykKKwkgICAgaWYgdGVzdCAiJHBhc3MiICE9IGxpbms7IHRoZW4KKwkgICAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgorCSAgICBlbHNlCisJICAgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCisJICAgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKKwkgICAgZmkKKwkgICAgY29udGludWUKKwkgICAgOzsKKwkgIGVzYWMgIyBsaW5rbW9kZQorCSAgOzsgIyAqLiRsaWJleHQKKwkqLmxvIHwgKi4kb2JqZXh0KQorCSAgaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgorCSAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgorCSAgZWxpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgorCSAgICBpZiB0ZXN0ICIkcGFzcyIgPSBkbHByZW9wZW4gfHwgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiAhPSB5ZXMgfHwgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSBubzsgdGhlbgorCSAgICAgICMgSWYgdGhlcmUgaXMgbm8gZGxvcGVuIHN1cHBvcnQgb3Igd2UncmUgbGlua2luZyBzdGF0aWNhbGx5LAorCSAgICAgICMgd2UgbmVlZCB0byBwcmVsb2FkLgorCSAgICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkZXBsaWIiCisJICAgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCisJICAgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKKwkgICAgZWxzZQorCSAgICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRkZXBsaWIiCisJICAgIGZpCisJICBmaQorCSAgY29udGludWUKKwkgIDs7CisJJURFUExJQlMlKQorCSAgYWxsZGVwbGlicz15ZXMKKwkgIGNvbnRpbnVlCisJICA7OworCWVzYWMgIyBjYXNlICRkZXBsaWIKKwlpZiB0ZXN0ICIkZm91bmQiID0geWVzIHx8IHRlc3QgLWYgIiRsaWIiOyB0aGVuIDoKKwllbHNlCisJICAkZWNobyAiJG1vZGVuYW1lOiBjYW5ub3QgZmluZCB0aGUgbGlicmFyeSBcYCRsaWInIiAxPiYyCisJICBleGl0ICRFWElUX0ZBSUxVUkUKKwlmaQorCisJIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgYXJjaGl2ZS4KKwlpZiAoJHtTRUR9IC1lICcycScgJGxpYiB8IGdyZXAgIl4jIEdlbmVyYXRlZCBieSAuKiRQQUNLQUdFIikgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKwllbHNlCisJICAkZWNobyAiJG1vZGVuYW1lOiBcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIgMT4mMgorCSAgZXhpdCAkRVhJVF9GQUlMVVJFCisJZmkKKworCWxhZGlyPWAkZWNobyAiWCRsaWIiIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AKKwl0ZXN0ICJYJGxhZGlyIiA9ICJYJGxpYiIgJiYgbGFkaXI9Ii4iCisKKwlkbG5hbWU9CisJZGxvcGVuPQorCWRscHJlb3Blbj0KKwlsaWJkaXI9CisJbGlicmFyeV9uYW1lcz0KKwlvbGRfbGlicmFyeT0KKwkjIElmIHRoZSBsaWJyYXJ5IHdhcyBpbnN0YWxsZWQgd2l0aCBhbiBvbGQgcmVsZWFzZSBvZiBsaWJ0b29sLAorCSMgaXQgd2lsbCBub3QgcmVkZWZpbmUgdmFyaWFibGVzIGluc3RhbGxlZCwgb3Igc2hvdWxkbm90bGluaworCWluc3RhbGxlZD15ZXMKKwlzaG91bGRub3RsaW5rPW5vCisKKwkjIFJlYWQgdGhlIC5sYSBmaWxlCisJY2FzZSAkbGliIGluCisJKi8qIHwgKlxcKikgLiAkbGliIDs7CisJKikgLiAuLyRsaWIgOzsKKwllc2FjCisKKwlpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gImxpYixsaW5rIiB8fAorCSAgIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxzY2FuIiB8fAorCSAgIHsgdGVzdCAiJGxpbmttb2RlIiAhPSBwcm9nICYmIHRlc3QgIiRsaW5rbW9kZSIgIT0gbGliOyB9OyB0aGVuCisJICB0ZXN0IC1uICIkZGxvcGVuIiAmJiBkbGZpbGVzPSIkZGxmaWxlcyAkZGxvcGVuIgorCSAgdGVzdCAtbiAiJGRscHJlb3BlbiIgJiYgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGRscHJlb3BlbiIKKwlmaQorCisJaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgorCSAgIyBPbmx5IGNoZWNrIGZvciBjb252ZW5pZW5jZSBsaWJyYXJpZXMKKwkgIGRlcGxpYnM9IiRsaWIgJGRlcGxpYnMiCisJICBpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgorCSAgICBpZiB0ZXN0IC16ICIkb2xkX2xpYnJhcnkiOyB0aGVuCisJICAgICAgJGVjaG8gIiRtb2RlbmFtZTogY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yIFxgJGxpYiciIDE+JjIKKwkgICAgICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgICAgZmkKKwkgICAgIyBJdCBpcyBhIGxpYnRvb2wgY29udmVuaWVuY2UgbGlicmFyeSwgc28gYWRkIGluIGl0cyBvYmplY3RzLgorCSAgICBjb252ZW5pZW5jZT0iJGNvbnZlbmllbmNlICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKKwkgICAgb2xkX2NvbnZlbmllbmNlPSIkb2xkX2NvbnZlbmllbmNlICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKKwkgICAgdG1wX2xpYnM9CisJICAgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KKwkgICAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgorICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGR1cGxpY2F0ZV9kZXBzIiA9ICJYeWVzIiA7IHRoZW4KKwkgICAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCisJICAgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CisJICAgICAgICBlc2FjCisgICAgICAgICAgICAgIGZpCisJICAgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgorCSAgICBkb25lCisJICBlbGlmIHRlc3QgIiRsaW5rbW9kZSIgIT0gcHJvZyAmJiB0ZXN0ICIkbGlua21vZGUiICE9IGxpYjsgdGhlbgorCSAgICAkZWNobyAiJG1vZGVuYW1lOiBcYCRsaWInIGlzIG5vdCBhIGNvbnZlbmllbmNlIGxpYnJhcnkiIDE+JjIKKwkgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICBmaQorCSAgY29udGludWUKKwlmaSAjICRwYXNzID0gY29udgorCisKKwkjIEdldCB0aGUgbmFtZSBvZiB0aGUgbGlicmFyeSB3ZSBsaW5rIGFnYWluc3QuCisJbGlua2xpYj0KKwlmb3IgbCBpbiAkb2xkX2xpYnJhcnkgJGxpYnJhcnlfbmFtZXM7IGRvCisJICBsaW5rbGliPSIkbCIKKwlkb25lCisJaWYgdGVzdCAteiAiJGxpbmtsaWIiOyB0aGVuCisJICAkZWNobyAiJG1vZGVuYW1lOiBjYW5ub3QgZmluZCBuYW1lIG9mIGxpbmsgbGlicmFyeSBmb3IgXGAkbGliJyIgMT4mMgorCSAgZXhpdCAkRVhJVF9GQUlMVVJFCisJZmkKKworCSMgVGhpcyBsaWJyYXJ5IHdhcyBzcGVjaWZpZWQgd2l0aCAtZGxvcGVuLgorCWlmIHRlc3QgIiRwYXNzIiA9IGRsb3BlbjsgdGhlbgorCSAgaWYgdGVzdCAteiAiJGxpYmRpciI7IHRoZW4KKwkgICAgJGVjaG8gIiRtb2RlbmFtZTogY2Fubm90IC1kbG9wZW4gYSBjb252ZW5pZW5jZSBsaWJyYXJ5OiBcYCRsaWInIiAxPiYyCisJICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgZmkKKwkgIGlmIHRlc3QgLXogIiRkbG5hbWUiIHx8CisJICAgICB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiICE9IHllcyB8fAorCSAgICAgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSBubzsgdGhlbgorCSAgICAjIElmIHRoZXJlIGlzIG5vIGRsbmFtZSwgbm8gZGxvcGVuIHN1cHBvcnQgb3Igd2UncmUgbGlua2luZworCSAgICAjIHN0YXRpY2FsbHksIHdlIG5lZWQgdG8gcHJlbG9hZC4gIFdlIGFsc28gbmVlZCB0byBwcmVsb2FkIGFueQorCSAgICAjIGRlcGVuZGVudCBsaWJyYXJpZXMgc28gbGlibHRkbCdzIGRlcGxpYiBwcmVsb2FkZXIgZG9lc24ndAorCSAgICAjIGJvbWIgb3V0IGluIHRoZSBsb2FkIGRlcGxpYnMgcGhhc2UuCisJICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRsaWIgJGRlcGVuZGVuY3lfbGlicyIKKwkgIGVsc2UKKwkgICAgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGxpYiIKKwkgIGZpCisJICBjb250aW51ZQorCWZpICMgJHBhc3MgPSBkbG9wZW4KKworCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgorCWNhc2UgJGxhZGlyIGluCisJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnNfbGFkaXI9IiRsYWRpciIgOzsKKwkqKQorCSAgYWJzX2xhZGlyPWBjZCAiJGxhZGlyIiAmJiBwd2RgCisJICBpZiB0ZXN0IC16ICIkYWJzX2xhZGlyIjsgdGhlbgorCSAgICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBjYW5ub3QgZGV0ZXJtaW5lIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIG9mIFxgJGxhZGlyJyIgMT4mMgorCSAgICAkZWNobyAiJG1vZGVuYW1lOiBwYXNzaW5nIGl0IGxpdGVyYWxseSB0byB0aGUgbGlua2VyLCBhbHRob3VnaCBpdCBtaWdodCBmYWlsIiAxPiYyCisJICAgIGFic19sYWRpcj0iJGxhZGlyIgorCSAgZmkKKwkgIDs7CisJZXNhYworCWxhbmFtZT1gJGVjaG8gIlgkbGliIiB8ICRYc2VkIC1lICdzJV4uKi8lJSdgCisKKwkjIEZpbmQgdGhlIHJlbGV2YW50IG9iamVjdCBkaXJlY3RvcnkgYW5kIGxpYnJhcnkgbmFtZS4KKwlpZiB0ZXN0ICJYJGluc3RhbGxlZCIgPSBYeWVzOyB0aGVuCisJICBpZiB0ZXN0ICEgLWYgIiRsaWJkaXIvJGxpbmtsaWIiICYmIHRlc3QgLWYgIiRhYnNfbGFkaXIvJGxpbmtsaWIiOyB0aGVuCisJICAgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IGxpYnJhcnkgXGAkbGliJyB3YXMgbW92ZWQuIiAxPiYyCisJICAgIGRpcj0iJGxhZGlyIgorCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCisJICAgIGxpYmRpcj0iJGFic19sYWRpciIKKwkgIGVsc2UKKwkgICAgZGlyPSIkbGliZGlyIgorCSAgICBhYnNkaXI9IiRsaWJkaXIiCisJICBmaQorCWVsc2UKKwkgIGRpcj0iJGxhZGlyLyRvYmpkaXIiCisJICBhYnNkaXI9IiRhYnNfbGFkaXIvJG9iamRpciIKKwkgICMgUmVtb3ZlIHRoaXMgc2VhcmNoIHBhdGggbGF0ZXIKKwkgIG5vdGluc3RfcGF0aD0iJG5vdGluc3RfcGF0aCAkYWJzX2xhZGlyIgorCWZpICMgJGluc3RhbGxlZCA9IHllcworCW5hbWU9YCRlY2hvICJYJGxhbmFtZSIgfCAkWHNlZCAtZSAncy9cLmxhJC8vJyAtZSAncy9ebGliLy8nYAorCisJIyBUaGlzIGxpYnJhcnkgd2FzIHNwZWNpZmllZCB3aXRoIC1kbHByZW9wZW4uCisJaWYgdGVzdCAiJHBhc3MiID0gZGxwcmVvcGVuOyB0aGVuCisJICBpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgorCSAgICAkZWNobyAiJG1vZGVuYW1lOiBjYW5ub3QgLWRscHJlb3BlbiBhIGNvbnZlbmllbmNlIGxpYnJhcnk6IFxgJGxpYiciIDE+JjIKKwkgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICBmaQorCSAgIyBQcmVmZXIgdXNpbmcgYSBzdGF0aWMgbGlicmFyeSAoc28gdGhhdCBubyBzaWxseSBfRFlOQU1JQyBzeW1ib2xzCisJICAjIGFyZSByZXF1aXJlZCB0byBsaW5rKS4KKwkgIGlmIHRlc3QgLW4gIiRvbGRfbGlicmFyeSI7IHRoZW4KKwkgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRpci8kb2xkX2xpYnJhcnkiCisJICAjIE90aGVyd2lzZSwgdXNlIHRoZSBkbG5hbWUsIHNvIHRoYXQgbHRfZGxvcGVuIGZpbmRzIGl0LgorCSAgZWxpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgorCSAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGlyLyRkbG5hbWUiCisJICBlbHNlCisJICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJGxpbmtsaWIiCisJICBmaQorCWZpICMgJHBhc3MgPSBkbHByZW9wZW4KKworCWlmIHRlc3QgLXogIiRsaWJkaXIiOyB0aGVuCisJICAjIExpbmsgdGhlIGNvbnZlbmllbmNlIGxpYnJhcnkKKwkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWI7IHRoZW4KKwkgICAgZGVwbGlicz0iJGRpci8kb2xkX2xpYnJhcnkgJGRlcGxpYnMiCisJICBlbGlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxsaW5rIjsgdGhlbgorCSAgICBjb21waWxlX2RlcGxpYnM9IiRkaXIvJG9sZF9saWJyYXJ5ICRjb21waWxlX2RlcGxpYnMiCisJICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkaXIvJG9sZF9saWJyYXJ5ICRmaW5hbGl6ZV9kZXBsaWJzIgorCSAgZWxzZQorCSAgICBkZXBsaWJzPSIkbGliICRkZXBsaWJzIiAjIHVzZWQgZm9yIHByb2csc2NhbiBwYXNzCisJICBmaQorCSAgY29udGludWUKKwlmaQorCisKKwlpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyAmJiB0ZXN0ICIkcGFzcyIgIT0gbGluazsgdGhlbgorCSAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRsYWRpciIKKwkgIGRlcGxpYnM9IiRsaWIgJGRlcGxpYnMiCisKKwkgIGxpbmthbGxkZXBsaWJzPW5vCisJICBpZiB0ZXN0ICIkbGlua19hbGxfZGVwbGlicyIgIT0gbm8gfHwgdGVzdCAteiAiJGxpYnJhcnlfbmFtZXMiIHx8CisJICAgICB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IG5vOyB0aGVuCisJICAgIGxpbmthbGxkZXBsaWJzPXllcworCSAgZmkKKworCSAgdG1wX2xpYnM9CisJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCisJICAgIGNhc2UgJGRlcGxpYiBpbgorCSAgICAtTCopIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAiYCRlY2hvICJYJGRlcGxpYiIgfCAkWHNlZCAtZSAncy9eLUwvLydgOzsgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0CisJICAgIGVzYWMKKwkgICAgIyBOZWVkIHRvIGxpbmsgYWdhaW5zdCBhbGwgZGVwZW5kZW5jeV9saWJzPworCSAgICBpZiB0ZXN0ICIkbGlua2FsbGRlcGxpYnMiID0geWVzOyB0aGVuCisJICAgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKKwkgICAgZWxzZQorCSAgICAgICMgTmVlZCB0byBoYXJkY29kZSBzaGFyZWQgbGlicmFyeSBwYXRocworCSAgICAgICMgb3IvYW5kIGxpbmsgYWdhaW5zdCBzdGF0aWMgbGlicmFyaWVzCisJICAgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCisJICAgIGZpCisJICAgIGlmIHRlc3QgIlgkZHVwbGljYXRlX2RlcHMiID0gIlh5ZXMiIDsgdGhlbgorCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCisJICAgICAgKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OworCSAgICAgIGVzYWMKKwkgICAgZmkKKwkgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgorCSAgZG9uZSAjIGZvciBkZXBsaWIKKwkgIGNvbnRpbnVlCisJZmkgIyAkbGlua21vZGUgPSBwcm9nLi4uCisKKwlpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gInByb2csbGluayI7IHRoZW4KKwkgIGlmIHRlc3QgLW4gIiRsaWJyYXJ5X25hbWVzIiAmJgorCSAgICAgeyB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzIiA9IG5vIHx8IHRlc3QgLXogIiRvbGRfbGlicmFyeSI7IH07IHRoZW4KKwkgICAgIyBXZSBuZWVkIHRvIGhhcmRjb2RlIHRoZSBsaWJyYXJ5IHBhdGgKKwkgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCisJICAgICAgIyBNYWtlIHN1cmUgdGhlIHJwYXRoIGNvbnRhaW5zIG9ubHkgdW5pcXVlIGRpcmVjdG9yaWVzLgorCSAgICAgIGNhc2UgIiR0ZW1wX3JwYXRoICIgaW4KKwkgICAgICAqIiAkZGlyICIqKSA7OworCSAgICAgICoiICRhYnNkaXIgIiopIDs7CisJICAgICAgKikgdGVtcF9ycGF0aD0iJHRlbXBfcnBhdGggJGRpciIgOzsKKwkgICAgICBlc2FjCisJICAgIGZpCisKKwkgICAgIyBIYXJkY29kZSB0aGUgbGlicmFyeSBwYXRoLgorCSAgICAjIFNraXAgZGlyZWN0b3JpZXMgdGhhdCBhcmUgaW4gdGhlIHN5c3RlbSBkZWZhdWx0IHJ1bi10aW1lCisJICAgICMgc2VhcmNoIHBhdGguCisJICAgIGNhc2UgIiAkc3lzX2xpYl9kbHNlYXJjaF9wYXRoICIgaW4KKwkgICAgKiIgJGFic2RpciAiKikgOzsKKwkgICAgKikKKwkgICAgICBjYXNlICIkY29tcGlsZV9ycGF0aCAiIGluCisJICAgICAgKiIgJGFic2RpciAiKikgOzsKKwkgICAgICAqKSBjb21waWxlX3JwYXRoPSIkY29tcGlsZV9ycGF0aCAkYWJzZGlyIgorCSAgICAgIGVzYWMKKwkgICAgICA7OworCSAgICBlc2FjCisJICAgIGNhc2UgIiAkc3lzX2xpYl9kbHNlYXJjaF9wYXRoICIgaW4KKwkgICAgKiIgJGxpYmRpciAiKikgOzsKKwkgICAgKikKKwkgICAgICBjYXNlICIkZmluYWxpemVfcnBhdGggIiBpbgorCSAgICAgICoiICRsaWJkaXIgIiopIDs7CisJICAgICAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIgorCSAgICAgIGVzYWMKKwkgICAgICA7OworCSAgICBlc2FjCisJICBmaSAjICRsaW5rbW9kZSwkcGFzcyA9IHByb2csbGluay4uLgorCisJICBpZiB0ZXN0ICIkYWxsZGVwbGlicyIgPSB5ZXMgJiYKKwkgICAgIHsgdGVzdCAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiA9IHBhc3NfYWxsIHx8CisJICAgICAgIHsgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXMgJiYKKwkJIHRlc3QgLW4gIiRsaWJyYXJ5X25hbWVzIjsgfTsgfTsgdGhlbgorCSAgICAjIFdlIG9ubHkgbmVlZCB0byBzZWFyY2ggZm9yIHN0YXRpYyBsaWJyYXJpZXMKKwkgICAgY29udGludWUKKwkgIGZpCisJZmkKKworCWxpbmtfc3RhdGljPW5vICMgV2hldGhlciB0aGUgZGVwbGliIHdpbGwgYmUgbGlua2VkIHN0YXRpY2FsbHkKKwlpZiB0ZXN0IC1uICIkbGlicmFyeV9uYW1lcyIgJiYKKwkgICB7IHRlc3QgIiRwcmVmZXJfc3RhdGljX2xpYnMiID0gbm8gfHwgdGVzdCAteiAiJG9sZF9saWJyYXJ5IjsgfTsgdGhlbgorCSAgaWYgdGVzdCAiJGluc3RhbGxlZCIgPSBubzsgdGhlbgorCSAgICBub3RpbnN0X2RlcGxpYnM9IiRub3RpbnN0X2RlcGxpYnMgJGxpYiIKKwkgICAgbmVlZF9yZWxpbms9eWVzCisJICBmaQorCSAgIyBUaGlzIGlzIGEgc2hhcmVkIGxpYnJhcnkKKworCSAgIyBXYXJuIGFib3V0IHBvcnRhYmlsaXR5LCBjYW4ndCBsaW5rIGFnYWluc3QgLW1vZHVsZSdzIG9uCisJICAjIHNvbWUgc3lzdGVtcyAoZGFyd2luKQorCSAgaWYgdGVzdCAiJHNob3VsZG5vdGxpbmsiID0geWVzICYmIHRlc3QgIiRwYXNzIiA9IGxpbmsgOyB0aGVuCisJICAgICRlY2hvCisJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCisJICAgICAgJGVjaG8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBleGVjdXRhYmxlICRvdXRwdXQgYWdhaW5zdCB0aGUgbG9hZGFibGUgbW9kdWxlIgorCSAgICBlbHNlCisJICAgICAgJGVjaG8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBzaGFyZWQgbGlicmFyeSAkb3V0cHV0IGFnYWluc3QgdGhlIGxvYWRhYmxlIG1vZHVsZSIKKwkgICAgZmkKKwkgICAgJGVjaG8gIioqKiAkbGlua2xpYiBpcyBub3QgcG9ydGFibGUhIgorCSAgZmkKKwkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWIgJiYKKwkgICAgIHRlc3QgIiRoYXJkY29kZV9pbnRvX2xpYnMiID0geWVzOyB0aGVuCisJICAgICMgSGFyZGNvZGUgdGhlIGxpYnJhcnkgcGF0aC4KKwkgICAgIyBTa2lwIGRpcmVjdG9yaWVzIHRoYXQgYXJlIGluIHRoZSBzeXN0ZW0gZGVmYXVsdCBydW4tdGltZQorCSAgICAjIHNlYXJjaCBwYXRoLgorCSAgICBjYXNlICIgJHN5c19saWJfZGxzZWFyY2hfcGF0aCAiIGluCisJICAgICoiICRhYnNkaXIgIiopIDs7CisJICAgICopCisJICAgICAgY2FzZSAiJGNvbXBpbGVfcnBhdGggIiBpbgorCSAgICAgICoiICRhYnNkaXIgIiopIDs7CisJICAgICAgKikgY29tcGlsZV9ycGF0aD0iJGNvbXBpbGVfcnBhdGggJGFic2RpciIKKwkgICAgICBlc2FjCisJICAgICAgOzsKKwkgICAgZXNhYworCSAgICBjYXNlICIgJHN5c19saWJfZGxzZWFyY2hfcGF0aCAiIGluCisJICAgICoiICRsaWJkaXIgIiopIDs7CisJICAgICopCisJICAgICAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KKwkgICAgICAqIiAkbGliZGlyICIqKSA7OworCSAgICAgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIKKwkgICAgICBlc2FjCisJICAgICAgOzsKKwkgICAgZXNhYworCSAgZmkKKworCSAgaWYgdGVzdCAtbiAiJG9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzIjsgdGhlbgorCSAgICAjIGZpZ3VyZSBvdXQgdGhlIHNvbmFtZQorCSAgICBzZXQgZHVtbXkgJGxpYnJhcnlfbmFtZXMKKwkgICAgcmVhbG5hbWU9IiQyIgorCSAgICBzaGlmdDsgc2hpZnQKKwkgICAgbGlibmFtZT1gZXZhbCBcXCRlY2hvIFwiJGxpYm5hbWVfc3BlY1wiYAorCSAgICAjIHVzZSBkbG5hbWUgaWYgd2UgZ290IGl0LiBpdCdzIHBlcmZlY3RseSBnb29kLCBubz8KKwkgICAgaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KKwkgICAgICBzb25hbWU9IiRkbG5hbWUiCisJICAgIGVsaWYgdGVzdCAtbiAiJHNvbmFtZV9zcGVjIjsgdGhlbgorCSAgICAgICMgYmxlaCB3aW5kb3dzCisJICAgICAgY2FzZSAkaG9zdCBpbgorCSAgICAgICpjeWd3aW4qIHwgbWluZ3cqKQorCQltYWpvcj1gZXhwciAkY3VycmVudCAtICRhZ2VgCisJCXZlcnN1ZmZpeD0iLSRtYWpvciIKKwkJOzsKKwkgICAgICBlc2FjCisJICAgICAgZXZhbCBzb25hbWU9XCIkc29uYW1lX3NwZWNcIgorCSAgICBlbHNlCisJICAgICAgc29uYW1lPSIkcmVhbG5hbWUiCisJICAgIGZpCisKKwkgICAgIyBNYWtlIGEgbmV3IG5hbWUgZm9yIHRoZSBleHRyYWN0X2V4cHN5bXNfY21kcyB0byB1c2UKKwkgICAgc29yb290PSIkc29uYW1lIgorCSAgICBzb25hbWU9YCRlY2hvICRzb3Jvb3QgfCAke1NFRH0gLWUgJ3MvXi4qXC8vLydgCisJICAgIG5ld2xpYj0ibGliaW1wLWAkZWNobyAkc29uYW1lIHwgJHtTRUR9ICdzL15saWIvLztzL1wuZGxsJC8vJ2AuYSIKKworCSAgICAjIElmIHRoZSBsaWJyYXJ5IGhhcyBubyBleHBvcnQgbGlzdCwgdGhlbiBjcmVhdGUgb25lIG5vdworCSAgICBpZiB0ZXN0IC1mICIkb3V0cHV0X29iamRpci8kc29uYW1lLWRlZiI7IHRoZW4gOgorCSAgICBlbHNlCisJICAgICAgJHNob3cgImV4dHJhY3RpbmcgZXhwb3J0ZWQgc3ltYm9sIGxpc3QgZnJvbSBcYCRzb25hbWUnIgorCSAgICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JworCSAgICAgIGNtZHM9JGV4dHJhY3RfZXhwc3ltc19jbWRzCisJICAgICAgZm9yIGNtZCBpbiAkY21kczsgZG8KKwkJSUZTPSIkc2F2ZV9pZnMiCisJCWV2YWwgY21kPVwiJGNtZFwiCisJCSRzaG93ICIkY21kIgorCQkkcnVuIGV2YWwgIiRjbWQiIHx8IGV4aXQgJD8KKwkgICAgICBkb25lCisJICAgICAgSUZTPSIkc2F2ZV9pZnMiCisJICAgIGZpCisKKwkgICAgIyBDcmVhdGUgJG5ld2xpYgorCSAgICBpZiB0ZXN0IC1mICIkb3V0cHV0X29iamRpci8kbmV3bGliIjsgdGhlbiA6OyBlbHNlCisJICAgICAgJHNob3cgImdlbmVyYXRpbmcgaW1wb3J0IGxpYnJhcnkgZm9yIFxgJHNvbmFtZSciCisJICAgICAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCisJICAgICAgY21kcz0kb2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHMKKwkgICAgICBmb3IgY21kIGluICRjbWRzOyBkbworCQlJRlM9IiRzYXZlX2lmcyIKKwkJZXZhbCBjbWQ9XCIkY21kXCIKKwkJJHNob3cgIiRjbWQiCisJCSRydW4gZXZhbCAiJGNtZCIgfHwgZXhpdCAkPworCSAgICAgIGRvbmUKKwkgICAgICBJRlM9IiRzYXZlX2lmcyIKKwkgICAgZmkKKwkgICAgIyBtYWtlIHN1cmUgdGhlIGxpYnJhcnkgdmFyaWFibGVzIGFyZSBwb2ludGluZyB0byB0aGUgbmV3IGxpYnJhcnkKKwkgICAgZGlyPSRvdXRwdXRfb2JqZGlyCisJICAgIGxpbmtsaWI9JG5ld2xpYgorCSAgZmkgIyB0ZXN0IC1uICIkb2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHMiCisKKwkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRtb2RlIiAhPSByZWxpbms7IHRoZW4KKwkgICAgYWRkX3NobGlicGF0aD0KKwkgICAgYWRkX2Rpcj0KKwkgICAgYWRkPQorCSAgICBsaWJfbGlua2VkPXllcworCSAgICBjYXNlICRoYXJkY29kZV9hY3Rpb24gaW4KKwkgICAgaW1tZWRpYXRlIHwgdW5zdXBwb3J0ZWQpCisJICAgICAgaWYgdGVzdCAiJGhhcmRjb2RlX2RpcmVjdCIgPSBubzsgdGhlbgorCQlhZGQ9IiRkaXIvJGxpbmtsaWIiCisJCWNhc2UgJGhvc3QgaW4KKwkJICAqLSotc2NvMy4ydjUqICkgYWRkX2Rpcj0iLUwkZGlyIiA7OworCQkgICotKi1kYXJ3aW4qICkKKwkJICAgICMgaWYgdGhlIGxpYiBpcyBhIG1vZHVsZSB0aGVuIHdlIGNhbiBub3QgbGluayBhZ2FpbnN0CisJCSAgICAjIGl0LCBzb21lb25lIGlzIGlnbm9yaW5nIHRoZSBuZXcgd2FybmluZ3MgSSBhZGRlZAorCQkgICAgaWYgL3Vzci9iaW4vZmlsZSAtTCAkYWRkIDI+IC9kZXYvbnVsbCB8ICRFR1JFUCAiYnVuZGxlIiA+L2Rldi9udWxsIDsgdGhlbgorCQkgICAgICAkZWNobyAiKiogV2FybmluZywgbGliICRsaW5rbGliIGlzIGEgbW9kdWxlLCBub3QgYSBzaGFyZWQgbGlicmFyeSIKKwkJICAgICAgaWYgdGVzdCAteiAiJG9sZF9saWJyYXJ5IiA7IHRoZW4KKwkJICAgICAgICAkZWNobworCQkgICAgICAgICRlY2hvICIqKiBBbmQgdGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlIGEgc3RhdGljIGFyY2hpdmUgYXZhaWxhYmxlIgorCQkgICAgICAgICRlY2hvICIqKiBUaGUgbGluayB3aWxsIHByb2JhYmx5IGZhaWwsIHNvcnJ5IgorCQkgICAgICBlbHNlCisJCSAgICAgICAgYWRkPSIkZGlyLyRvbGRfbGlicmFyeSIKKwkJICAgICAgZmkKKwkJICAgIGZpCisJCWVzYWMKKwkgICAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9taW51c19MIiA9IG5vOyB0aGVuCisJCWNhc2UgJGhvc3QgaW4KKwkJKi0qLXN1bm9zKikgYWRkX3NobGlicGF0aD0iJGRpciIgOzsKKwkJZXNhYworCQlhZGRfZGlyPSItTCRkaXIiCisJCWFkZD0iLWwkbmFtZSIKKwkgICAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiA9IG5vOyB0aGVuCisJCWFkZF9zaGxpYnBhdGg9IiRkaXIiCisJCWFkZD0iLWwkbmFtZSIKKwkgICAgICBlbHNlCisJCWxpYl9saW5rZWQ9bm8KKwkgICAgICBmaQorCSAgICAgIDs7CisJICAgIHJlbGluaykKKwkgICAgICBpZiB0ZXN0ICIkaGFyZGNvZGVfZGlyZWN0IiA9IHllczsgdGhlbgorCQlhZGQ9IiRkaXIvJGxpbmtsaWIiCisJICAgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfbWludXNfTCIgPSB5ZXM7IHRoZW4KKwkJYWRkX2Rpcj0iLUwkZGlyIgorCQkjIFRyeSBsb29raW5nIGZpcnN0IGluIHRoZSBsb2NhdGlvbiB3ZSdyZSBiZWluZyBpbnN0YWxsZWQgdG8uCisJCWlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCisJCSAgY2FzZSAiJGxpYmRpciIgaW4KKwkJICAgIFtcXC9dKikKKwkJICAgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKKwkJICAgICAgOzsKKwkJICBlc2FjCisJCWZpCisJCWFkZD0iLWwkbmFtZSIKKwkgICAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiA9IHllczsgdGhlbgorCQlhZGRfc2hsaWJwYXRoPSIkZGlyIgorCQlhZGQ9Ii1sJG5hbWUiCisJICAgICAgZWxzZQorCQlsaWJfbGlua2VkPW5vCisJICAgICAgZmkKKwkgICAgICA7OworCSAgICAqKSBsaWJfbGlua2VkPW5vIDs7CisJICAgIGVzYWMKKworCSAgICBpZiB0ZXN0ICIkbGliX2xpbmtlZCIgIT0geWVzOyB0aGVuCisJICAgICAgJGVjaG8gIiRtb2RlbmFtZTogY29uZmlndXJhdGlvbiBlcnJvcjogdW5zdXBwb3J0ZWQgaGFyZGNvZGUgcHJvcGVydGllcyIKKwkgICAgICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgICAgZmkKKworCSAgICBpZiB0ZXN0IC1uICIkYWRkX3NobGlicGF0aCI7IHRoZW4KKwkgICAgICBjYXNlIDokY29tcGlsZV9zaGxpYnBhdGg6IGluCisJICAgICAgKiI6JGFkZF9zaGxpYnBhdGg6IiopIDs7CisJICAgICAgKikgY29tcGlsZV9zaGxpYnBhdGg9IiRjb21waWxlX3NobGlicGF0aCRhZGRfc2hsaWJwYXRoOiIgOzsKKwkgICAgICBlc2FjCisJICAgIGZpCisJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCisJICAgICAgdGVzdCAtbiAiJGFkZF9kaXIiICYmIGNvbXBpbGVfZGVwbGlicz0iJGFkZF9kaXIgJGNvbXBpbGVfZGVwbGlicyIKKwkgICAgICB0ZXN0IC1uICIkYWRkIiAmJiBjb21waWxlX2RlcGxpYnM9IiRhZGQgJGNvbXBpbGVfZGVwbGlicyIKKwkgICAgZWxzZQorCSAgICAgIHRlc3QgLW4gIiRhZGRfZGlyIiAmJiBkZXBsaWJzPSIkYWRkX2RpciAkZGVwbGlicyIKKwkgICAgICB0ZXN0IC1uICIkYWRkIiAmJiBkZXBsaWJzPSIkYWRkICRkZXBsaWJzIgorCSAgICAgIGlmIHRlc3QgIiRoYXJkY29kZV9kaXJlY3QiICE9IHllcyAmJiBcCisJCSB0ZXN0ICIkaGFyZGNvZGVfbWludXNfTCIgIT0geWVzICYmIFwKKwkJIHRlc3QgIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiA9IHllczsgdGhlbgorCQljYXNlIDokZmluYWxpemVfc2hsaWJwYXRoOiBpbgorCQkqIjokbGliZGlyOiIqKSA7OworCQkqKSBmaW5hbGl6ZV9zaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgkbGliZGlyOiIgOzsKKwkJZXNhYworCSAgICAgIGZpCisJICAgIGZpCisJICBmaQorCisJICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KKwkgICAgYWRkX3NobGlicGF0aD0KKwkgICAgYWRkX2Rpcj0KKwkgICAgYWRkPQorCSAgICAjIEZpbmFsaXplIGNvbW1hbmQgZm9yIGJvdGggaXMgc2ltcGxlOiBqdXN0IGhhcmRjb2RlIGl0LgorCSAgICBpZiB0ZXN0ICIkaGFyZGNvZGVfZGlyZWN0IiA9IHllczsgdGhlbgorCSAgICAgIGFkZD0iJGxpYmRpci8kbGlua2xpYiIKKwkgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfbWludXNfTCIgPSB5ZXM7IHRoZW4KKwkgICAgICBhZGRfZGlyPSItTCRsaWJkaXIiCisJICAgICAgYWRkPSItbCRuYW1lIgorCSAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiA9IHllczsgdGhlbgorCSAgICAgIGNhc2UgOiRmaW5hbGl6ZV9zaGxpYnBhdGg6IGluCisJICAgICAgKiI6JGxpYmRpcjoiKikgOzsKKwkgICAgICAqKSBmaW5hbGl6ZV9zaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgkbGliZGlyOiIgOzsKKwkgICAgICBlc2FjCisJICAgICAgYWRkPSItbCRuYW1lIgorCSAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9hdXRvbWF0aWMiID0geWVzOyB0aGVuCisJICAgICAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciIgJiYKKwkJIHRlc3QgLWYgIiRpbnN0X3ByZWZpeF9kaXIkbGliZGlyLyRsaW5rbGliIiA7IHRoZW4KKwkgICAgICAgIGFkZD0iJGluc3RfcHJlZml4X2RpciRsaWJkaXIvJGxpbmtsaWIiCisJICAgICAgZWxzZQorCSAgICAgICAgYWRkPSIkbGliZGlyLyRsaW5rbGliIgorCSAgICAgIGZpCisJICAgIGVsc2UKKwkgICAgICAjIFdlIGNhbm5vdCBzZWVtIHRvIGhhcmRjb2RlIGl0LCBndWVzcyB3ZSdsbCBmYWtlIGl0LgorCSAgICAgIGFkZF9kaXI9Ii1MJGxpYmRpciIKKwkgICAgICAjIFRyeSBsb29raW5nIGZpcnN0IGluIHRoZSBsb2NhdGlvbiB3ZSdyZSBiZWluZyBpbnN0YWxsZWQgdG8uCisJICAgICAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KKwkJY2FzZSAiJGxpYmRpciIgaW4KKwkJICBbXFwvXSopCisJCSAgICBhZGRfZGlyPSIkYWRkX2RpciAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgorCQkgICAgOzsKKwkJZXNhYworCSAgICAgIGZpCisJICAgICAgYWRkPSItbCRuYW1lIgorCSAgICBmaQorCisJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCisJICAgICAgdGVzdCAtbiAiJGFkZF9kaXIiICYmIGZpbmFsaXplX2RlcGxpYnM9IiRhZGRfZGlyICRmaW5hbGl6ZV9kZXBsaWJzIgorCSAgICAgIHRlc3QgLW4gIiRhZGQiICYmIGZpbmFsaXplX2RlcGxpYnM9IiRhZGQgJGZpbmFsaXplX2RlcGxpYnMiCisJICAgIGVsc2UKKwkgICAgICB0ZXN0IC1uICIkYWRkX2RpciIgJiYgZGVwbGlicz0iJGFkZF9kaXIgJGRlcGxpYnMiCisJICAgICAgdGVzdCAtbiAiJGFkZCIgJiYgZGVwbGlicz0iJGFkZCAkZGVwbGlicyIKKwkgICAgZmkKKwkgIGZpCisJZWxpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgorCSAgIyBIZXJlIHdlIGFzc3VtZSB0aGF0IG9uZSBvZiBoYXJkY29kZV9kaXJlY3Qgb3IgaGFyZGNvZGVfbWludXNfTAorCSAgIyBpcyBub3QgdW5zdXBwb3J0ZWQuICBUaGlzIGlzIHZhbGlkIG9uIGFsbCBrbm93biBzdGF0aWMgYW5kCisJICAjIHNoYXJlZCBwbGF0Zm9ybXMuCisJICBpZiB0ZXN0ICIkaGFyZGNvZGVfZGlyZWN0IiAhPSB1bnN1cHBvcnRlZDsgdGhlbgorCSAgICB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIGxpbmtsaWI9IiRvbGRfbGlicmFyeSIKKwkgICAgY29tcGlsZV9kZXBsaWJzPSIkZGlyLyRsaW5rbGliICRjb21waWxlX2RlcGxpYnMiCisJICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkaXIvJGxpbmtsaWIgJGZpbmFsaXplX2RlcGxpYnMiCisJICBlbHNlCisJICAgIGNvbXBpbGVfZGVwbGlicz0iLWwkbmFtZSAtTCRkaXIgJGNvbXBpbGVfZGVwbGlicyIKKwkgICAgZmluYWxpemVfZGVwbGlicz0iLWwkbmFtZSAtTCRkaXIgJGZpbmFsaXplX2RlcGxpYnMiCisJICBmaQorCWVsaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXM7IHRoZW4KKwkgICMgTm90IGEgc2hhcmVkIGxpYnJhcnkKKwkgIGlmIHRlc3QgIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgIT0gcGFzc19hbGw7IHRoZW4KKwkgICAgIyBXZSdyZSB0cnlpbmcgbGluayBhIHNoYXJlZCBsaWJyYXJ5IGFnYWluc3QgYSBzdGF0aWMgb25lCisJICAgICMgYnV0IHRoZSBzeXN0ZW0gZG9lc24ndCBzdXBwb3J0IGl0LgorCisJICAgICMgSnVzdCBwcmludCBhIHdhcm5pbmcgYW5kIGFkZCB0aGUgbGlicmFyeSB0byBkZXBlbmRlbmN5X2xpYnMgc28KKwkgICAgIyB0aGF0IHRoZSBwcm9ncmFtIGNhbiBiZSBsaW5rZWQgYWdhaW5zdCB0aGUgc3RhdGljIGxpYnJhcnkuCisJICAgICRlY2hvCisJICAgICRlY2hvICIqKiogV2FybmluZzogVGhpcyBzeXN0ZW0gY2FuIG5vdCBsaW5rIHRvIHN0YXRpYyBsaWIgYXJjaGl2ZSAkbGliLiIKKwkgICAgJGVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJICAgICRlY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgorCSAgICAkZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlLiIKKwkgICAgaWYgdGVzdCAiJG1vZHVsZSIgPSB5ZXM7IHRoZW4KKwkgICAgICAkZWNobyAiKioqIEJ1dCBhcyB5b3UgdHJ5IHRvIGJ1aWxkIGEgbW9kdWxlIGxpYnJhcnksIGxpYnRvb2wgd2lsbCBzdGlsbCBjcmVhdGUgIgorCSAgICAgICRlY2hvICIqKiogYSBzdGF0aWMgbW9kdWxlLCB0aGF0IHNob3VsZCB3b3JrIGFzIGxvbmcgYXMgdGhlIGRsb3BlbmluZyBhcHBsaWNhdGlvbiIKKwkgICAgICAkZWNobyAiKioqIGlzIGxpbmtlZCB3aXRoIHRoZSAtZGxvcGVuIGZsYWcgdG8gcmVzb2x2ZSBzeW1ib2xzIGF0IHJ1bnRpbWUuIgorCSAgICAgIGlmIHRlc3QgLXogIiRnbG9iYWxfc3ltYm9sX3BpcGUiOyB0aGVuCisJCSRlY2hvCisJCSRlY2hvICIqKiogSG93ZXZlciwgdGhpcyB3b3VsZCBvbmx5IHdvcmsgaWYgbGlidG9vbCB3YXMgYWJsZSB0byBleHRyYWN0IHN5bWJvbCIKKwkJJGVjaG8gIioqKiBsaXN0cyBmcm9tIGEgcHJvZ3JhbSwgdXNpbmcgXGBubScgb3IgZXF1aXZhbGVudCwgYnV0IGxpYnRvb2wgY291bGQiCisJCSRlY2hvICIqKiogbm90IGZpbmQgc3VjaCBhIHByb2dyYW0uICBTbywgdGhpcyBtb2R1bGUgaXMgcHJvYmFibHkgdXNlbGVzcy4iCisJCSRlY2hvICIqKiogXGBubScgZnJvbSBHTlUgYmludXRpbHMgYW5kIGEgZnVsbCByZWJ1aWxkIG1heSBoZWxwLiIKKwkgICAgICBmaQorCSAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSBubzsgdGhlbgorCQlidWlsZF9saWJ0b29sX2xpYnM9bW9kdWxlCisJCWJ1aWxkX29sZF9saWJzPXllcworCSAgICAgIGVsc2UKKwkJYnVpbGRfbGlidG9vbF9saWJzPW5vCisJICAgICAgZmkKKwkgICAgZmkKKwkgIGVsc2UKKwkgICAgY29udmVuaWVuY2U9IiRjb252ZW5pZW5jZSAkZGlyLyRvbGRfbGlicmFyeSIKKwkgICAgb2xkX2NvbnZlbmllbmNlPSIkb2xkX2NvbnZlbmllbmNlICRkaXIvJG9sZF9saWJyYXJ5IgorCSAgICBkZXBsaWJzPSIkZGlyLyRvbGRfbGlicmFyeSAkZGVwbGlicyIKKwkgICAgbGlua19zdGF0aWM9eWVzCisJICBmaQorCWZpICMgbGluayBzaGFyZWQvc3RhdGljIGxpYnJhcnk/CisKKwlpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliOyB0aGVuCisJICBpZiB0ZXN0IC1uICIkZGVwZW5kZW5jeV9saWJzIiAmJgorCSAgICAgeyB0ZXN0ICIkaGFyZGNvZGVfaW50b19saWJzIiAhPSB5ZXMgfHwKKwkgICAgICAgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllcyB8fAorCSAgICAgICB0ZXN0ICIkbGlua19zdGF0aWMiID0geWVzOyB9OyB0aGVuCisJICAgICMgRXh0cmFjdCAtUiBmcm9tIGRlcGVuZGVuY3lfbGlicworCSAgICB0ZW1wX2RlcGxpYnM9CisJICAgIGZvciBsaWJkaXIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KKwkgICAgICBjYXNlICRsaWJkaXIgaW4KKwkgICAgICAtUiopIHRlbXBfeHJwYXRoPWAkZWNobyAiWCRsaWJkaXIiIHwgJFhzZWQgLWUgJ3MvXi1SLy8nYAorCQkgICBjYXNlICIgJHhycGF0aCAiIGluCisJCSAgICoiICR0ZW1wX3hycGF0aCAiKikgOzsKKwkJICAgKikgeHJwYXRoPSIkeHJwYXRoICR0ZW1wX3hycGF0aCI7OworCQkgICBlc2FjOzsKKwkgICAgICAqKSB0ZW1wX2RlcGxpYnM9IiR0ZW1wX2RlcGxpYnMgJGxpYmRpciI7OworCSAgICAgIGVzYWMKKwkgICAgZG9uZQorCSAgICBkZXBlbmRlbmN5X2xpYnM9IiR0ZW1wX2RlcGxpYnMiCisJICBmaQorCisJICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGFic2RpciIKKwkgICMgTGluayBhZ2FpbnN0IHRoaXMgbGlicmFyeQorCSAgdGVzdCAiJGxpbmtfc3RhdGljIiA9IG5vICYmIG5ld2RlcGVuZGVuY3lfbGlicz0iJGFic19sYWRpci8kbGFuYW1lICRuZXdkZXBlbmRlbmN5X2xpYnMiCisJICAjIC4uLiBhbmQgaXRzIGRlcGVuZGVuY3lfbGlicworCSAgdG1wX2xpYnM9CisJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCisJICAgIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgorCSAgICBpZiB0ZXN0ICJYJGR1cGxpY2F0ZV9kZXBzIiA9ICJYeWVzIiA7IHRoZW4KKwkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgorCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKwkgICAgICBlc2FjCisJICAgIGZpCisJICAgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIKKwkgIGRvbmUKKworCSAgaWYgdGVzdCAiJGxpbmtfYWxsX2RlcGxpYnMiICE9IG5vOyB0aGVuCisJICAgICMgQWRkIHRoZSBzZWFyY2ggcGF0aHMgb2YgYWxsIGRlcGVuZGVuY3kgbGlicmFyaWVzCisJICAgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KKwkgICAgICBjYXNlICRkZXBsaWIgaW4KKwkgICAgICAtTCopIHBhdGg9IiRkZXBsaWIiIDs7CisJICAgICAgKi5sYSkKKwkJZGlyPWAkZWNobyAiWCRkZXBsaWIiIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AKKwkJdGVzdCAiWCRkaXIiID0gIlgkZGVwbGliIiAmJiBkaXI9Ii4iCisJCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgorCQljYXNlICRkaXIgaW4KKwkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnNkaXI9IiRkaXIiIDs7CisJCSopCisJCSAgYWJzZGlyPWBjZCAiJGRpciIgJiYgcHdkYAorCQkgIGlmIHRlc3QgLXogIiRhYnNkaXIiOyB0aGVuCisJCSAgICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBjYW5ub3QgZGV0ZXJtaW5lIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIG9mIFxgJGRpciciIDE+JjIKKwkJICAgIGFic2Rpcj0iJGRpciIKKwkJICBmaQorCQkgIDs7CisJCWVzYWMKKwkJaWYgZ3JlcCAiXmluc3RhbGxlZD1ubyIgJGRlcGxpYiA+IC9kZXYvbnVsbDsgdGhlbgorCQkgIHBhdGg9IiRhYnNkaXIvJG9iamRpciIKKwkJZWxzZQorCQkgIGV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCisJCSAgaWYgdGVzdCAteiAiJGxpYmRpciI7IHRoZW4KKwkJICAgICRlY2hvICIkbW9kZW5hbWU6IFxgJGRlcGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIiAxPiYyCisJCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKKwkJICBmaQorCQkgIGlmIHRlc3QgIiRhYnNkaXIiICE9ICIkbGliZGlyIjsgdGhlbgorCQkgICAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAkZGVwbGliJyBzZWVtcyB0byBiZSBtb3ZlZCIgMT4mMgorCQkgIGZpCisJCSAgcGF0aD0iJGFic2RpciIKKwkJZmkKKwkJZGVwZGVwbD0KKwkJY2FzZSAkaG9zdCBpbgorCQkqLSotZGFyd2luKikKKwkJICAjIHdlIGRvIG5vdCB3YW50IHRvIGxpbmsgYWdhaW5zdCBzdGF0aWMgbGlicywKKwkJICAjIGJ1dCBuZWVkIHRvIGxpbmsgYWdhaW5zdCBzaGFyZWQKKwkJICBldmFsIGRlcGxpYnJhcnlfbmFtZXM9YCR7U0VEfSAtbiAtZSAncy9ebGlicmFyeV9uYW1lcz1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCisJCSAgaWYgdGVzdCAtbiAiJGRlcGxpYnJhcnlfbmFtZXMiIDsgdGhlbgorCQkgICAgZm9yIHRtcCBpbiAkZGVwbGlicmFyeV9uYW1lcyA7IGRvCisJCSAgICAgIGRlcGRlcGw9JHRtcAorCQkgICAgZG9uZQorCQkgICAgaWYgdGVzdCAtZiAiJHBhdGgvJGRlcGRlcGwiIDsgdGhlbgorCQkgICAgICBkZXBkZXBsPSIkcGF0aC8kZGVwZGVwbCIKKwkJICAgIGZpCisJCSAgICAjIGRvIG5vdCBhZGQgcGF0aHMgd2hpY2ggYXJlIGFscmVhZHkgdGhlcmUKKwkJICAgIGNhc2UgIiAkbmV3bGliX3NlYXJjaF9wYXRoICIgaW4KKwkJICAgICoiICRwYXRoICIqKSA7OworCQkgICAgKikgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRwYXRoIjs7CisJCSAgICBlc2FjCisJCSAgZmkKKwkJICBwYXRoPSIiCisJCSAgOzsKKwkJKikKKwkJICBwYXRoPSItTCRwYXRoIgorCQkgIDs7CisJCWVzYWMKKwkJOzsKKwkgICAgICAtbCopCisJCWNhc2UgJGhvc3QgaW4KKwkJKi0qLWRhcndpbiopCisJCSAgIyBBZ2Fpbiwgd2Ugb25seSB3YW50IHRvIGxpbmsgYWdhaW5zdCBzaGFyZWQgbGlicmFyaWVzCisJCSAgZXZhbCB0bXBfbGlicz1gJGVjaG8gIlgkZGVwbGliIiB8ICRYc2VkIC1lICJzLF5cLWwsLCJgCisJCSAgZm9yIHRtcCBpbiAkbmV3bGliX3NlYXJjaF9wYXRoIDsgZG8KKwkJICAgIGlmIHRlc3QgLWYgIiR0bXAvbGliJHRtcF9saWJzLmR5bGliIiA7IHRoZW4KKwkJICAgICAgZXZhbCBkZXBkZXBsPSIkdG1wL2xpYiR0bXBfbGlicy5keWxpYiIKKwkJICAgICAgYnJlYWsKKwkJICAgIGZpCisJCSAgZG9uZQorCQkgIHBhdGg9IiIKKwkJICA7OworCQkqKSBjb250aW51ZSA7OworCQllc2FjCisJCTs7CisJICAgICAgKikgY29udGludWUgOzsKKwkgICAgICBlc2FjCisJICAgICAgY2FzZSAiICRkZXBsaWJzICIgaW4KKwkgICAgICAqIiAkZGVwZGVwbCAiKikgOzsKKwkgICAgICAqKSBkZXBsaWJzPSIkZGVwZGVwbCAkZGVwbGlicyIgOzsKKwkgICAgICBlc2FjCisJICAgICAgY2FzZSAiICRkZXBsaWJzICIgaW4KKwkgICAgICAqIiAkcGF0aCAiKikgOzsKKwkgICAgICAqKSBkZXBsaWJzPSIkZGVwbGlicyAkcGF0aCIgOzsKKwkgICAgICBlc2FjCisJICAgIGRvbmUKKwkgIGZpICMgbGlua19hbGxfZGVwbGlicyAhPSBubworCWZpICMgbGlua21vZGUgPSBsaWIKKyAgICAgIGRvbmUgIyBmb3IgZGVwbGliIGluICRsaWJzCisgICAgICBkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMiCisgICAgICBpZiB0ZXN0ICIkcGFzcyIgPSBkbHByZW9wZW47IHRoZW4KKwkjIExpbmsgdGhlIGRscHJlb3BlbmVkIGxpYnJhcmllcyBiZWZvcmUgb3RoZXIgbGlicmFyaWVzCisJZm9yIGRlcGxpYiBpbiAkc2F2ZV9kZXBsaWJzOyBkbworCSAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKKwlkb25lCisgICAgICBmaQorICAgICAgaWYgdGVzdCAiJHBhc3MiICE9IGRsb3BlbjsgdGhlbgorCWlmIHRlc3QgIiRwYXNzIiAhPSBjb252OyB0aGVuCisJICAjIE1ha2Ugc3VyZSBsaWJfc2VhcmNoX3BhdGggY29udGFpbnMgb25seSB1bmlxdWUgZGlyZWN0b3JpZXMuCisJICBsaWJfc2VhcmNoX3BhdGg9CisJICBmb3IgZGlyIGluICRuZXdsaWJfc2VhcmNoX3BhdGg7IGRvCisJICAgIGNhc2UgIiRsaWJfc2VhcmNoX3BhdGggIiBpbgorCSAgICAqIiAkZGlyICIqKSA7OworCSAgICAqKSBsaWJfc2VhcmNoX3BhdGg9IiRsaWJfc2VhcmNoX3BhdGggJGRpciIgOzsKKwkgICAgZXNhYworCSAgZG9uZQorCSAgbmV3bGliX3NlYXJjaF9wYXRoPQorCWZpCisKKwlpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiICE9ICJwcm9nLGxpbmsiOyB0aGVuCisJICB2YXJzPSJkZXBsaWJzIgorCWVsc2UKKwkgIHZhcnM9ImNvbXBpbGVfZGVwbGlicyBmaW5hbGl6ZV9kZXBsaWJzIgorCWZpCisJZm9yIHZhciBpbiAkdmFycyBkZXBlbmRlbmN5X2xpYnM7IGRvCisJICAjIEFkZCBsaWJyYXJpZXMgdG8gJHZhciBpbiByZXZlcnNlIG9yZGVyCisJICBldmFsIHRtcF9saWJzPVwiXCQkdmFyXCIKKwkgIG5ld19saWJzPQorCSAgZm9yIGRlcGxpYiBpbiAkdG1wX2xpYnM7IGRvCisJICAgICMgRklYTUU6IFBlZGFudGljYWxseSwgdGhpcyBpcyB0aGUgcmlnaHQgdGhpbmcgdG8gZG8sIHNvCisJICAgICMgICAgICAgIHRoYXQgc29tZSBuYXN0eSBkZXBlbmRlbmN5IGxvb3AgaXNuJ3QgYWNjaWRlbnRhbGx5CisJICAgICMgICAgICAgIGJyb2tlbjoKKwkgICAgI25ld19saWJzPSIkZGVwbGliICRuZXdfbGlicyIKKwkgICAgIyBQcmFnbWF0aWNhbGx5LCB0aGlzIHNlZW1zIHRvIGNhdXNlIHZlcnkgZmV3IHByb2JsZW1zIGluCisJICAgICMgcHJhY3RpY2U6CisJICAgIGNhc2UgJGRlcGxpYiBpbgorCSAgICAtTCopIG5ld19saWJzPSIkZGVwbGliICRuZXdfbGlicyIgOzsKKwkgICAgLVIqKSA7OworCSAgICAqKQorCSAgICAgICMgQW5kIGhlcmUgaXMgdGhlIHJlYXNvbjogd2hlbiBhIGxpYnJhcnkgYXBwZWFycyBtb3JlCisJICAgICAgIyB0aGFuIG9uY2UgYXMgYW4gZXhwbGljaXQgZGVwZW5kZW5jZSBvZiBhIGxpYnJhcnksIG9yCisJICAgICAgIyBpcyBpbXBsaWNpdGx5IGxpbmtlZCBpbiBtb3JlIHRoYW4gb25jZSBieSB0aGUKKwkgICAgICAjIGNvbXBpbGVyLCBpdCBpcyBjb25zaWRlcmVkIHNwZWNpYWwsIGFuZCBtdWx0aXBsZQorCSAgICAgICMgb2NjdXJyZW5jZXMgdGhlcmVvZiBhcmUgbm90IHJlbW92ZWQuICBDb21wYXJlIHRoaXMKKwkgICAgICAjIHdpdGggaGF2aW5nIHRoZSBzYW1lIGxpYnJhcnkgYmVpbmcgbGlzdGVkIGFzIGEKKwkgICAgICAjIGRlcGVuZGVuY3kgb2YgbXVsdGlwbGUgb3RoZXIgbGlicmFyaWVzOiBpbiB0aGlzIGNhc2UsCisJICAgICAgIyB3ZSBrbm93IChwZWRhbnRpY2FsbHksIHdlIGFzc3VtZSkgdGhlIGxpYnJhcnkgZG9lcyBub3QKKwkgICAgICAjIG5lZWQgdG8gYmUgbGlzdGVkIG1vcmUgdGhhbiBvbmNlLCBzbyB3ZSBrZWVwIG9ubHkgdGhlCisJICAgICAgIyBsYXN0IGNvcHkuICBUaGlzIGlzIG5vdCBhbHdheXMgcmlnaHQsIGJ1dCBpdCBpcyByYXJlCisJICAgICAgIyBlbm91Z2ggdGhhdCB3ZSByZXF1aXJlIHVzZXJzIHRoYXQgcmVhbGx5IG1lYW4gdG8gcGxheQorCSAgICAgICMgc3VjaCB1bnBvcnRhYmxlIGxpbmtpbmcgdHJpY2tzIHRvIGxpbmsgdGhlIGxpYnJhcnkKKwkgICAgICAjIHVzaW5nIC1XbCwtbG5hbWUsIHNvIHRoYXQgbGlidG9vbCBkb2VzIG5vdCBjb25zaWRlciBpdAorCSAgICAgICMgZm9yIGR1cGxpY2F0ZSByZW1vdmFsLgorCSAgICAgIGNhc2UgIiAkc3BlY2lhbGRlcGxpYnMgIiBpbgorCSAgICAgICoiICRkZXBsaWIgIiopIG5ld19saWJzPSIkZGVwbGliICRuZXdfbGlicyIgOzsKKwkgICAgICAqKQorCQljYXNlICIgJG5ld19saWJzICIgaW4KKwkJKiIgJGRlcGxpYiAiKikgOzsKKwkJKikgbmV3X2xpYnM9IiRkZXBsaWIgJG5ld19saWJzIiA7OworCQllc2FjCisJCTs7CisJICAgICAgZXNhYworCSAgICAgIDs7CisJICAgIGVzYWMKKwkgIGRvbmUKKwkgIHRtcF9saWJzPQorCSAgZm9yIGRlcGxpYiBpbiAkbmV3X2xpYnM7IGRvCisJICAgIGNhc2UgJGRlcGxpYiBpbgorCSAgICAtTCopCisJICAgICAgY2FzZSAiICR0bXBfbGlicyAiIGluCisJICAgICAgKiIgJGRlcGxpYiAiKikgOzsKKwkgICAgICAqKSB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiIDs7CisJICAgICAgZXNhYworCSAgICAgIDs7CisJICAgICopIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIgOzsKKwkgICAgZXNhYworCSAgZG9uZQorCSAgZXZhbCAkdmFyPVwiJHRtcF9saWJzXCIKKwlkb25lICMgZm9yIHZhcgorICAgICAgZmkKKyAgICAgICMgTGFzdCBzdGVwOiByZW1vdmUgcnVudGltZSBsaWJzIGZyb20gZGVwZW5kZW5jeV9saWJzCisgICAgICAjICh0aGV5IHN0YXkgaW4gZGVwbGlicykKKyAgICAgIHRtcF9saWJzPQorICAgICAgZm9yIGkgaW4gJGRlcGVuZGVuY3lfbGlicyA7IGRvCisJY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAkY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoICIgaW4KKwkqIiAkaSAiKikKKwkgIGk9IiIKKwkgIDs7CisJZXNhYworCWlmIHRlc3QgLW4gIiRpIiA7IHRoZW4KKwkgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGkiCisJZmkKKyAgICAgIGRvbmUKKyAgICAgIGRlcGVuZGVuY3lfbGlicz0kdG1wX2xpYnMKKyAgICBkb25lICMgZm9yIHBhc3MKKyAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgorICAgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCisgICAgICBkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyIKKyAgICBmaQorCisgICAgY2FzZSAkbGlua21vZGUgaW4KKyAgICBvbGRsaWIpCisgICAgICBpZiB0ZXN0IC1uICIkZGVwbGlicyI7IHRoZW4KKwkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC1sJyBhbmQgXGAtTCcgYXJlIGlnbm9yZWQgZm9yIGFyY2hpdmVzIiAxPiYyCisgICAgICBmaQorCisgICAgICBpZiB0ZXN0IC1uICIkZGxmaWxlcyRkbHByZWZpbGVzIiB8fCB0ZXN0ICIkZGxzZWxmIiAhPSBubzsgdGhlbgorCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLWRsb3BlbicgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiIDE+JjIKKyAgICAgIGZpCisKKyAgICAgIGlmIHRlc3QgLW4gIiRycGF0aCI7IHRoZW4KKwkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC1ycGF0aCcgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiIDE+JjIKKyAgICAgIGZpCisKKyAgICAgIGlmIHRlc3QgLW4gIiR4cnBhdGgiOyB0aGVuCisJJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtUicgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiIDE+JjIKKyAgICAgIGZpCisKKyAgICAgIGlmIHRlc3QgLW4gIiR2aW5mbyI7IHRoZW4KKwkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC12ZXJzaW9uLWluZm8vLXZlcnNpb24tbnVtYmVyJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcyIgMT4mMgorICAgICAgZmkKKworICAgICAgaWYgdGVzdCAtbiAiJHJlbGVhc2UiOyB0aGVuCisJJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtcmVsZWFzZScgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiIDE+JjIKKyAgICAgIGZpCisKKyAgICAgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgfHwgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IjsgdGhlbgorCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLWV4cG9ydC1zeW1ib2xzJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcyIgMT4mMgorICAgICAgZmkKKworICAgICAgIyBOb3cgc2V0IHRoZSB2YXJpYWJsZXMgZm9yIGJ1aWxkaW5nIG9sZCBsaWJyYXJpZXMuCisgICAgICBidWlsZF9saWJ0b29sX2xpYnM9bm8KKyAgICAgIG9sZGxpYnM9IiRvdXRwdXQiCisgICAgICBvYmpzPSIkb2JqcyRvbGRfZGVwbGlicyIKKyAgICAgIDs7CisKKyAgICBsaWIpCisgICAgICAjIE1ha2Ugc3VyZSB3ZSBvbmx5IGdlbmVyYXRlIGxpYnJhcmllcyBvZiB0aGUgZm9ybSBgbGliTkFNRS5sYScuCisgICAgICBjYXNlICRvdXRwdXRuYW1lIGluCisgICAgICBsaWIqKQorCW5hbWU9YCRlY2hvICJYJG91dHB1dG5hbWUiIHwgJFhzZWQgLWUgJ3MvXC5sYSQvLycgLWUgJ3MvXmxpYi8vJ2AKKwlldmFsIHNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIgorCWV2YWwgbGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIgorCTs7CisgICAgICAqKQorCWlmIHRlc3QgIiRtb2R1bGUiID0gbm87IHRoZW4KKwkgICRlY2hvICIkbW9kZW5hbWU6IGxpYnRvb2wgbGlicmFyeSBcYCRvdXRwdXQnIG11c3QgYmVnaW4gd2l0aCBcYGxpYiciIDE+JjIKKwkgICRlY2hvICIkaGVscCIgMT4mMgorCSAgZXhpdCAkRVhJVF9GQUlMVVJFCisJZmkKKwlpZiB0ZXN0ICIkbmVlZF9saWJfcHJlZml4IiAhPSBubzsgdGhlbgorCSAgIyBBZGQgdGhlICJsaWIiIHByZWZpeCBmb3IgbW9kdWxlcyBpZiByZXF1aXJlZAorCSAgbmFtZT1gJGVjaG8gIlgkb3V0cHV0bmFtZSIgfCAkWHNlZCAtZSAncy9cLmxhJC8vJ2AKKwkgIGV2YWwgc2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiCisJICBldmFsIGxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIKKwllbHNlCisJICBsaWJuYW1lPWAkZWNobyAiWCRvdXRwdXRuYW1lIiB8ICRYc2VkIC1lICdzL1wubGEkLy8nYAorCWZpCisJOzsKKyAgICAgIGVzYWMKKworICAgICAgaWYgdGVzdCAtbiAiJG9ianMiOyB0aGVuCisJaWYgdGVzdCAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAhPSBwYXNzX2FsbDsgdGhlbgorCSAgJGVjaG8gIiRtb2RlbmFtZTogY2Fubm90IGJ1aWxkIGxpYnRvb2wgbGlicmFyeSBcYCRvdXRwdXQnIGZyb20gbm9uLWxpYnRvb2wgb2JqZWN0cyBvbiB0aGlzIGhvc3Q6JG9ianMiIDI+JjEKKwkgIGV4aXQgJEVYSVRfRkFJTFVSRQorCWVsc2UKKwkgICRlY2hvCisJICAkZWNobyAiKioqIFdhcm5pbmc6IExpbmtpbmcgdGhlIHNoYXJlZCBsaWJyYXJ5ICRvdXRwdXQgYWdhaW5zdCB0aGUgbm9uLWxpYnRvb2wiCisJICAkZWNobyAiKioqIG9iamVjdHMgJG9ianMgaXMgbm90IHBvcnRhYmxlISIKKwkgIGxpYm9ianM9IiRsaWJvYmpzICRvYmpzIgorCWZpCisgICAgICBmaQorCisgICAgICBpZiB0ZXN0ICIkZGxzZWxmIiAhPSBubzsgdGhlbgorCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLWRsb3BlbiBzZWxmJyBpcyBpZ25vcmVkIGZvciBsaWJ0b29sIGxpYnJhcmllcyIgMT4mMgorICAgICAgZmkKKworICAgICAgc2V0IGR1bW15ICRycGF0aAorICAgICAgaWYgdGVzdCAiJCMiIC1ndCAyOyB0aGVuCisJJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogaWdub3JpbmcgbXVsdGlwbGUgXGAtcnBhdGgncyBmb3IgYSBsaWJ0b29sIGxpYnJhcnkiIDE+JjIKKyAgICAgIGZpCisgICAgICBpbnN0YWxsX2xpYmRpcj0iJDIiCisKKyAgICAgIG9sZGxpYnM9CisgICAgICBpZiB0ZXN0IC16ICIkcnBhdGgiOyB0aGVuCisJaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXM7IHRoZW4KKwkgICMgQnVpbGRpbmcgYSBsaWJ0b29sIGNvbnZlbmllbmNlIGxpYnJhcnkuCisJICAjIFNvbWUgY29tcGlsZXJzIGhhdmUgcHJvYmxlbXMgd2l0aCBhIGAuYWwnIGV4dGVuc2lvbiBzbworCSAgIyBjb252ZW5pZW5jZSBsaWJyYXJpZXMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgZXh0ZW5zaW9uIGFuCisJICAjIGFyY2hpdmUgbm9ybWFsbHkgd291bGQuCisJICBvbGRsaWJzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0ICRvbGRsaWJzIgorCSAgYnVpbGRfbGlidG9vbF9saWJzPWNvbnZlbmllbmNlCisJICBidWlsZF9vbGRfbGlicz15ZXMKKwlmaQorCisJaWYgdGVzdCAtbiAiJHZpbmZvIjsgdGhlbgorCSAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtdmVyc2lvbi1pbmZvLy12ZXJzaW9uLW51bWJlcicgaXMgaWdub3JlZCBmb3IgY29udmVuaWVuY2UgbGlicmFyaWVzIiAxPiYyCisJZmkKKworCWlmIHRlc3QgLW4gIiRyZWxlYXNlIjsgdGhlbgorCSAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtcmVsZWFzZScgaXMgaWdub3JlZCBmb3IgY29udmVuaWVuY2UgbGlicmFyaWVzIiAxPiYyCisJZmkKKyAgICAgIGVsc2UKKworCSMgUGFyc2UgdGhlIHZlcnNpb24gaW5mb3JtYXRpb24gYXJndW1lbnQuCisJc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JzonCisJc2V0IGR1bW15ICR2aW5mbyAwIDAgMAorCUlGUz0iJHNhdmVfaWZzIgorCisJaWYgdGVzdCAtbiAiJDgiOyB0aGVuCisJICAkZWNobyAiJG1vZGVuYW1lOiB0b28gbWFueSBwYXJhbWV0ZXJzIHRvIFxgLXZlcnNpb24taW5mbyciIDE+JjIKKwkgICRlY2hvICIkaGVscCIgMT4mMgorCSAgZXhpdCAkRVhJVF9GQUlMVVJFCisJZmkKKworCSMgY29udmVydCBhYnNvbHV0ZSB2ZXJzaW9uIG51bWJlcnMgdG8gbGlidG9vbCBhZ2VzCisJIyB0aGlzIHJldGFpbnMgY29tcGF0aWJpbGl0eSB3aXRoIC5sYSBmaWxlcyBhbmQgYXR0ZW1wdHMKKwkjIHRvIG1ha2UgdGhlIGNvZGUgYmVsb3cgYSBiaXQgbW9yZSBjb21wcmVoZW5zaWJsZQorCisJY2FzZSAkdmluZm9fbnVtYmVyIGluCisJeWVzKQorCSAgbnVtYmVyX21ham9yPSIkMiIKKwkgIG51bWJlcl9taW5vcj0iJDMiCisJICBudW1iZXJfcmV2aXNpb249IiQ0IgorCSAgIworCSAgIyBUaGVyZSBhcmUgcmVhbGx5IG9ubHkgdHdvIGtpbmRzIC0tIHRob3NlIHRoYXQKKwkgICMgdXNlIHRoZSBjdXJyZW50IHJldmlzaW9uIGFzIHRoZSBtYWpvciB2ZXJzaW9uCisJICAjIGFuZCB0aG9zZSB0aGF0IHN1YnRyYWN0IGFnZSBhbmQgdXNlIGFnZSBhcworCSAgIyBhIG1pbm9yIHZlcnNpb24uICBCdXQsIHRoZW4gdGhlcmUgaXMgaXJpeAorCSAgIyB3aGljaCBoYXMgYW4gZXh0cmEgMSBhZGRlZCBqdXN0IGZvciBmdW4KKwkgICMKKwkgIGNhc2UgJHZlcnNpb25fdHlwZSBpbgorCSAgZGFyd2lufGxpbnV4fG9zZnx3aW5kb3dzKQorCSAgICBjdXJyZW50PWBleHByICRudW1iZXJfbWFqb3IgKyAkbnVtYmVyX21pbm9yYAorCSAgICBhZ2U9IiRudW1iZXJfbWlub3IiCisJICAgIHJldmlzaW9uPSIkbnVtYmVyX3JldmlzaW9uIgorCSAgICA7OworCSAgZnJlZWJzZC1hb3V0fGZyZWVic2QtZWxmfHN1bm9zKQorCSAgICBjdXJyZW50PSIkbnVtYmVyX21ham9yIgorCSAgICByZXZpc2lvbj0iJG51bWJlcl9taW5vciIKKwkgICAgYWdlPSIwIgorCSAgICA7OworCSAgaXJpeHxub25zdG9wdXgpCisJICAgIGN1cnJlbnQ9YGV4cHIgJG51bWJlcl9tYWpvciArICRudW1iZXJfbWlub3IgLSAxYAorCSAgICBhZ2U9IiRudW1iZXJfbWlub3IiCisJICAgIHJldmlzaW9uPSIkbnVtYmVyX21pbm9yIgorCSAgICA7OworCSAgKikKKwkgICAgJGVjaG8gIiRtb2RlbmFtZTogdW5rbm93biBsaWJyYXJ5IHZlcnNpb24gdHlwZSBcYCR2ZXJzaW9uX3R5cGUnIiAxPiYyCisJICAgICRlY2hvICJGYXRhbCBjb25maWd1cmF0aW9uIGVycm9yLiAgU2VlIHRoZSAkUEFDS0FHRSBkb2NzIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgMT4mMgorCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgICAgOzsKKwkgIGVzYWMKKwkgIDs7CisJbm8pCisJICBjdXJyZW50PSIkMiIKKwkgIHJldmlzaW9uPSIkMyIKKwkgIGFnZT0iJDQiCisJICA7OworCWVzYWMKKworCSMgQ2hlY2sgdGhhdCBlYWNoIG9mIHRoZSB0aGluZ3MgYXJlIHZhbGlkIG51bWJlcnMuCisJY2FzZSAkY3VycmVudCBpbgorCTB8WzEtOV18WzEtOV1bMC05XXxbMS05XVswLTldWzAtOV18WzEtOV1bMC05XVswLTldWzAtOV18WzEtOV1bMC05XVswLTldWzAtOV1bMC05XSkgOzsKKwkqKQorCSAgJGVjaG8gIiRtb2RlbmFtZTogQ1VSUkVOVCBcYCRjdXJyZW50JyBpcyBub3QgYSBub25uZWdhdGl2ZSBpbnRlZ2VyIiAxPiYyCisJICAkZWNobyAiJG1vZGVuYW1lOiBcYCR2aW5mbycgaXMgbm90IHZhbGlkIHZlcnNpb24gaW5mb3JtYXRpb24iIDE+JjIKKwkgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgOzsKKwllc2FjCisKKwljYXNlICRyZXZpc2lvbiBpbgorCTB8WzEtOV18WzEtOV1bMC05XXxbMS05XVswLTldWzAtOV18WzEtOV1bMC05XVswLTldWzAtOV18WzEtOV1bMC05XVswLTldWzAtOV1bMC05XSkgOzsKKwkqKQorCSAgJGVjaG8gIiRtb2RlbmFtZTogUkVWSVNJT04gXGAkcmV2aXNpb24nIGlzIG5vdCBhIG5vbm5lZ2F0aXZlIGludGVnZXIiIDE+JjIKKwkgICRlY2hvICIkbW9kZW5hbWU6IFxgJHZpbmZvJyBpcyBub3QgdmFsaWQgdmVyc2lvbiBpbmZvcm1hdGlvbiIgMT4mMgorCSAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICA7OworCWVzYWMKKworCWNhc2UgJGFnZSBpbgorCTB8WzEtOV18WzEtOV1bMC05XXxbMS05XVswLTldWzAtOV18WzEtOV1bMC05XVswLTldWzAtOV18WzEtOV1bMC05XVswLTldWzAtOV1bMC05XSkgOzsKKwkqKQorCSAgJGVjaG8gIiRtb2RlbmFtZTogQUdFIFxgJGFnZScgaXMgbm90IGEgbm9ubmVnYXRpdmUgaW50ZWdlciIgMT4mMgorCSAgJGVjaG8gIiRtb2RlbmFtZTogXGAkdmluZm8nIGlzIG5vdCB2YWxpZCB2ZXJzaW9uIGluZm9ybWF0aW9uIiAxPiYyCisJICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgIDs7CisJZXNhYworCisJaWYgdGVzdCAiJGFnZSIgLWd0ICIkY3VycmVudCI7IHRoZW4KKwkgICRlY2hvICIkbW9kZW5hbWU6IEFHRSBcYCRhZ2UnIGlzIGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBpbnRlcmZhY2UgbnVtYmVyIFxgJGN1cnJlbnQnIiAxPiYyCisJICAkZWNobyAiJG1vZGVuYW1lOiBcYCR2aW5mbycgaXMgbm90IHZhbGlkIHZlcnNpb24gaW5mb3JtYXRpb24iIDE+JjIKKwkgIGV4aXQgJEVYSVRfRkFJTFVSRQorCWZpCisKKwkjIENhbGN1bGF0ZSB0aGUgdmVyc2lvbiB2YXJpYWJsZXMuCisJbWFqb3I9CisJdmVyc3VmZml4PQorCXZlcnN0cmluZz0KKwljYXNlICR2ZXJzaW9uX3R5cGUgaW4KKwlub25lKSA7OworCisJZGFyd2luKQorCSAgIyBMaWtlIExpbnV4LCBidXQgd2l0aCB0aGUgY3VycmVudCB2ZXJzaW9uIGF2YWlsYWJsZSBpbgorCSAgIyB2ZXJzdHJpbmcgZm9yIGNvZGluZyBpdCBpbnRvIHRoZSBsaWJyYXJ5IGhlYWRlcgorCSAgbWFqb3I9LmBleHByICRjdXJyZW50IC0gJGFnZWAKKwkgIHZlcnN1ZmZpeD0iJG1ham9yLiRhZ2UuJHJldmlzaW9uIgorCSAgIyBEYXJ3aW4gbGQgZG9lc24ndCBsaWtlIDAgZm9yIHRoZXNlIG9wdGlvbnMuLi4KKwkgIG1pbm9yX2N1cnJlbnQ9YGV4cHIgJGN1cnJlbnQgKyAxYAorCSAgdmVyc3RyaW5nPSItY29tcGF0aWJpbGl0eV92ZXJzaW9uICRtaW5vcl9jdXJyZW50IC1jdXJyZW50X3ZlcnNpb24gJG1pbm9yX2N1cnJlbnQuJHJldmlzaW9uIgorCSAgOzsKKworCWZyZWVic2QtYW91dCkKKwkgIG1ham9yPSIuJGN1cnJlbnQiCisJICB2ZXJzdWZmaXg9Ii4kY3VycmVudC4kcmV2aXNpb24iOworCSAgOzsKKworCWZyZWVic2QtZWxmKQorCSAgbWFqb3I9Ii4kY3VycmVudCIKKwkgIHZlcnN1ZmZpeD0iLiRjdXJyZW50IjsKKwkgIDs7CisKKwlpcml4IHwgbm9uc3RvcHV4KQorCSAgbWFqb3I9YGV4cHIgJGN1cnJlbnQgLSAkYWdlICsgMWAKKworCSAgY2FzZSAkdmVyc2lvbl90eXBlIGluCisJICAgIG5vbnN0b3B1eCkgdmVyc3RyaW5nX3ByZWZpeD1ub25zdG9wdXggOzsKKwkgICAgKikgICAgICAgICB2ZXJzdHJpbmdfcHJlZml4PXNnaSA7OworCSAgZXNhYworCSAgdmVyc3RyaW5nPSIkdmVyc3RyaW5nX3ByZWZpeCRtYWpvci4kcmV2aXNpb24iCisKKwkgICMgQWRkIGluIGFsbCB0aGUgaW50ZXJmYWNlcyB0aGF0IHdlIGFyZSBjb21wYXRpYmxlIHdpdGguCisJICBsb29wPSRyZXZpc2lvbgorCSAgd2hpbGUgdGVzdCAiJGxvb3AiIC1uZSAwOyBkbworCSAgICBpZmFjZT1gZXhwciAkcmV2aXNpb24gLSAkbG9vcGAKKwkgICAgbG9vcD1gZXhwciAkbG9vcCAtIDFgCisJICAgIHZlcnN0cmluZz0iJHZlcnN0cmluZ19wcmVmaXgkbWFqb3IuJGlmYWNlOiR2ZXJzdHJpbmciCisJICBkb25lCisKKwkgICMgQmVmb3JlIHRoaXMgcG9pbnQsICRtYWpvciBtdXN0IG5vdCBjb250YWluIGAuJy4KKwkgIG1ham9yPS4kbWFqb3IKKwkgIHZlcnN1ZmZpeD0iJG1ham9yLiRyZXZpc2lvbiIKKwkgIDs7CisKKwlsaW51eCkKKwkgIG1ham9yPS5gZXhwciAkY3VycmVudCAtICRhZ2VgCisJICB2ZXJzdWZmaXg9IiRtYWpvci4kYWdlLiRyZXZpc2lvbiIKKwkgIDs7CisKKwlvc2YpCisJICBtYWpvcj0uYGV4cHIgJGN1cnJlbnQgLSAkYWdlYAorCSAgdmVyc3VmZml4PSIuJGN1cnJlbnQuJGFnZS4kcmV2aXNpb24iCisJICB2ZXJzdHJpbmc9IiRjdXJyZW50LiRhZ2UuJHJldmlzaW9uIgorCisJICAjIEFkZCBpbiBhbGwgdGhlIGludGVyZmFjZXMgdGhhdCB3ZSBhcmUgY29tcGF0aWJsZSB3aXRoLgorCSAgbG9vcD0kYWdlCisJICB3aGlsZSB0ZXN0ICIkbG9vcCIgLW5lIDA7IGRvCisJICAgIGlmYWNlPWBleHByICRjdXJyZW50IC0gJGxvb3BgCisJICAgIGxvb3A9YGV4cHIgJGxvb3AgLSAxYAorCSAgICB2ZXJzdHJpbmc9IiR2ZXJzdHJpbmc6JHtpZmFjZX0uMCIKKwkgIGRvbmUKKworCSAgIyBNYWtlIGV4ZWN1dGFibGVzIGRlcGVuZCBvbiBvdXIgY3VycmVudCB2ZXJzaW9uLgorCSAgdmVyc3RyaW5nPSIkdmVyc3RyaW5nOiR7Y3VycmVudH0uMCIKKwkgIDs7CisKKwlzdW5vcykKKwkgIG1ham9yPSIuJGN1cnJlbnQiCisJICB2ZXJzdWZmaXg9Ii4kY3VycmVudC4kcmV2aXNpb24iCisJICA7OworCisJd2luZG93cykKKwkgICMgVXNlICctJyByYXRoZXIgdGhhbiAnLicsIHNpbmNlIHdlIG9ubHkgd2FudCBvbmUKKwkgICMgZXh0ZW5zaW9uIG9uIERPUyA4LjMgZmlsZXN5c3RlbXMuCisJICBtYWpvcj1gZXhwciAkY3VycmVudCAtICRhZ2VgCisJICB2ZXJzdWZmaXg9Ii0kbWFqb3IiCisJICA7OworCisJKikKKwkgICRlY2hvICIkbW9kZW5hbWU6IHVua25vd24gbGlicmFyeSB2ZXJzaW9uIHR5cGUgXGAkdmVyc2lvbl90eXBlJyIgMT4mMgorCSAgJGVjaG8gIkZhdGFsIGNvbmZpZ3VyYXRpb24gZXJyb3IuICBTZWUgdGhlICRQQUNLQUdFIGRvY3MgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiAxPiYyCisJICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgIDs7CisJZXNhYworCisJIyBDbGVhciB0aGUgdmVyc2lvbiBpbmZvIGlmIHdlIGRlZmF1bHRlZCwgYW5kIHRoZXkgc3BlY2lmaWVkIGEgcmVsZWFzZS4KKwlpZiB0ZXN0IC16ICIkdmluZm8iICYmIHRlc3QgLW4gIiRyZWxlYXNlIjsgdGhlbgorCSAgbWFqb3I9CisJICBjYXNlICR2ZXJzaW9uX3R5cGUgaW4KKwkgIGRhcndpbikKKwkgICAgIyB3ZSBjYW4ndCBjaGVjayBmb3IgIjAuMCIgaW4gYXJjaGl2ZV9jbWRzIGR1ZSB0byBxdW90aW5nCisJICAgICMgcHJvYmxlbXMsIHNvIHdlIHJlc2V0IGl0IGNvbXBsZXRlbHkKKwkgICAgdmVyc3RyaW5nPQorCSAgICA7OworCSAgKikKKwkgICAgdmVyc3RyaW5nPSIwLjAiCisJICAgIDs7CisJICBlc2FjCisJICBpZiB0ZXN0ICIkbmVlZF92ZXJzaW9uIiA9IG5vOyB0aGVuCisJICAgIHZlcnN1ZmZpeD0KKwkgIGVsc2UKKwkgICAgdmVyc3VmZml4PSIuMC4wIgorCSAgZmkKKwlmaQorCisJIyBSZW1vdmUgdmVyc2lvbiBpbmZvIGZyb20gbmFtZSBpZiB2ZXJzaW9uaW5nIHNob3VsZCBiZSBhdm9pZGVkCisJaWYgdGVzdCAiJGF2b2lkX3ZlcnNpb24iID0geWVzICYmIHRlc3QgIiRuZWVkX3ZlcnNpb24iID0gbm87IHRoZW4KKwkgIG1ham9yPQorCSAgdmVyc3VmZml4PQorCSAgdmVyc3RyaW5nPSIiCisJZmkKKworCSMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBhcmNoaXZlIHdpbGwgaGF2ZSB1bmRlZmluZWQgc3ltYm9scy4KKwlpZiB0ZXN0ICIkYWxsb3dfdW5kZWZpbmVkIiA9IHllczsgdGhlbgorCSAgaWYgdGVzdCAiJGFsbG93X3VuZGVmaW5lZF9mbGFnIiA9IHVuc3VwcG9ydGVkOyB0aGVuCisJICAgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IHVuZGVmaW5lZCBzeW1ib2xzIG5vdCBhbGxvd2VkIGluICRob3N0IHNoYXJlZCBsaWJyYXJpZXMiIDE+JjIKKwkgICAgYnVpbGRfbGlidG9vbF9saWJzPW5vCisJICAgIGJ1aWxkX29sZF9saWJzPXllcworCSAgZmkKKwllbHNlCisJICAjIERvbid0IGFsbG93IHVuZGVmaW5lZCBzeW1ib2xzLgorCSAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9IiRub191bmRlZmluZWRfZmxhZyIKKwlmaQorICAgICAgZmkKKworICAgICAgaWYgdGVzdCAiJG1vZGUiICE9IHJlbGluazsgdGhlbgorCSMgUmVtb3ZlIG91ciBvdXRwdXRzLCBidXQgZG9uJ3QgcmVtb3ZlIG9iamVjdCBmaWxlcyBzaW5jZSB0aGV5CisJIyBtYXkgaGF2ZSBiZWVuIGNyZWF0ZWQgd2hlbiBjb21waWxpbmcgUElDIG9iamVjdHMuCisJcmVtb3ZlbGlzdD0KKwl0ZW1wcmVtb3ZlbGlzdD1gJGVjaG8gIiRvdXRwdXRfb2JqZGlyLyoiYAorCWZvciBwIGluICR0ZW1wcmVtb3ZlbGlzdDsgZG8KKwkgIGNhc2UgJHAgaW4KKwkgICAgKi4kb2JqZXh0KQorCSAgICAgICA7OworCSAgICAkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSB8ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiogfCAkb3V0cHV0X29iamRpci8ke2xpYm5hbWV9JHtyZWxlYXNlfS4qKQorCSAgICAgICBpZiB0ZXN0ICJYJHByZWNpb3VzX2ZpbGVzX3JlZ2V4IiAhPSAiWCI7IHRoZW4KKwkgICAgICAgICBpZiBlY2hvICRwIHwgJEVHUkVQIC1lICIkcHJlY2lvdXNfZmlsZXNfcmVnZXgiID4vZGV2L251bGwgMj4mMQorCSAgICAgICAgIHRoZW4KKwkJICAgY29udGludWUKKwkJIGZpCisJICAgICAgIGZpCisJICAgICAgIHJlbW92ZWxpc3Q9IiRyZW1vdmVsaXN0ICRwIgorCSAgICAgICA7OworCSAgICAqKSA7OworCSAgZXNhYworCWRvbmUKKwlpZiB0ZXN0IC1uICIkcmVtb3ZlbGlzdCI7IHRoZW4KKwkgICRzaG93ICIke3JtfXIgJHJlbW92ZWxpc3QiCisJICAkcnVuICR7cm19ciAkcmVtb3ZlbGlzdAorCWZpCisgICAgICBmaQorCisgICAgICAjIE5vdyBzZXQgdGhlIHZhcmlhYmxlcyBmb3IgYnVpbGRpbmcgb2xkIGxpYnJhcmllcy4KKyAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0gY29udmVuaWVuY2UgOyB0aGVuCisJb2xkbGlicz0iJG9sZGxpYnMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKKworCSMgVHJhbnNmb3JtIC5sbyBmaWxlcyB0byAubyBmaWxlcy4KKwlvbGRvYmpzPSIkb2JqcyAiYCRlY2hvICJYJGxpYm9ianMiIHwgJFNQMk5MIHwgJFhzZWQgLWUgJy9cLicke2xpYmV4dH0nJC9kJyAtZSAiJGxvMm8iIHwgJE5MMlNQYAorICAgICAgZmkKKworICAgICAgIyBFbGltaW5hdGUgYWxsIHRlbXBvcmFyeSBkaXJlY3Rvcmllcy4KKyAgICAgIGZvciBwYXRoIGluICRub3RpbnN0X3BhdGg7IGRvCisJbGliX3NlYXJjaF9wYXRoPWAkZWNobyAiJGxpYl9zZWFyY2hfcGF0aCAiIHwgJHtTRUR9IC1lICdzJSAkcGF0aCAlICVnJ2AKKwlkZXBsaWJzPWAkZWNobyAiJGRlcGxpYnMgIiB8ICR7U0VEfSAtZSAncyUgLUwkcGF0aCAlICVnJ2AKKwlkZXBlbmRlbmN5X2xpYnM9YCRlY2hvICIkZGVwZW5kZW5jeV9saWJzICIgfCAke1NFRH0gLWUgJ3MlIC1MJHBhdGggJSAlZydgCisgICAgICBkb25lCisKKyAgICAgIGlmIHRlc3QgLW4gIiR4cnBhdGgiOyB0aGVuCisJIyBJZiB0aGUgdXNlciBzcGVjaWZpZWQgYW55IHJwYXRoIGZsYWdzLCB0aGVuIGFkZCB0aGVtLgorCXRlbXBfeHJwYXRoPQorCWZvciBsaWJkaXIgaW4gJHhycGF0aDsgZG8KKwkgIHRlbXBfeHJwYXRoPSIkdGVtcF94cnBhdGggLVIkbGliZGlyIgorCSAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KKwkgICoiICRsaWJkaXIgIiopIDs7CisJICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiIDs7CisJICBlc2FjCisJZG9uZQorCWlmIHRlc3QgIiRoYXJkY29kZV9pbnRvX2xpYnMiICE9IHllcyB8fCB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCisJICBkZXBlbmRlbmN5X2xpYnM9IiR0ZW1wX3hycGF0aCAkZGVwZW5kZW5jeV9saWJzIgorCWZpCisgICAgICBmaQorCisgICAgICAjIE1ha2Ugc3VyZSBkbGZpbGVzIGNvbnRhaW5zIG9ubHkgdW5pcXVlIGZpbGVzIHRoYXQgd29uJ3QgYmUgZGxwcmVvcGVuZWQKKyAgICAgIG9sZF9kbGZpbGVzPSIkZGxmaWxlcyIKKyAgICAgIGRsZmlsZXM9CisgICAgICBmb3IgbGliIGluICRvbGRfZGxmaWxlczsgZG8KKwljYXNlICIgJGRscHJlZmlsZXMgJGRsZmlsZXMgIiBpbgorCSoiICRsaWIgIiopIDs7CisJKikgZGxmaWxlcz0iJGRsZmlsZXMgJGxpYiIgOzsKKwllc2FjCisgICAgICBkb25lCisKKyAgICAgICMgTWFrZSBzdXJlIGRscHJlZmlsZXMgY29udGFpbnMgb25seSB1bmlxdWUgZmlsZXMKKyAgICAgIG9sZF9kbHByZWZpbGVzPSIkZGxwcmVmaWxlcyIKKyAgICAgIGRscHJlZmlsZXM9CisgICAgICBmb3IgbGliIGluICRvbGRfZGxwcmVmaWxlczsgZG8KKwljYXNlICIkZGxwcmVmaWxlcyAiIGluCisJKiIgJGxpYiAiKikgOzsKKwkqKSBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkbGliIiA7OworCWVzYWMKKyAgICAgIGRvbmUKKworICAgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXM7IHRoZW4KKwlpZiB0ZXN0IC1uICIkcnBhdGgiOyB0aGVuCisJICBjYXNlICRob3N0IGluCisJICAqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotb3MyKiB8ICotKi1iZW9zKikKKwkgICAgIyB0aGVzZSBzeXN0ZW1zIGRvbid0IGFjdHVhbGx5IGhhdmUgYSBjIGxpYnJhcnkgKGFzIHN1Y2gpIQorCSAgICA7OworCSAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQorCSAgICAjIFJoYXBzb2R5IEMgbGlicmFyeSBpcyBpbiB0aGUgU3lzdGVtIGZyYW1ld29yaworCSAgICBkZXBsaWJzPSIkZGVwbGlicyAtZnJhbWV3b3JrIFN5c3RlbSIKKwkgICAgOzsKKwkgICotKi1uZXRic2QqKQorCSAgICAjIERvbid0IGxpbmsgd2l0aCBsaWJjIHVudGlsIHRoZSBhLm91dCBsZC5zbyBpcyBmaXhlZC4KKwkgICAgOzsKKwkgICotKi1vcGVuYnNkKiB8ICotKi1mcmVlYnNkKikKKwkgICAgIyBEbyBub3QgaW5jbHVkZSBsaWJjIGR1ZSB0byB1cyBoYXZpbmcgbGliYy9saWJjX3IuCisJICAgIHRlc3QgIlgkYXJnIiA9ICJYLWxjIiAmJiBjb250aW51ZQorCSAgICA7OworIAkgICopCisJICAgICMgQWRkIGxpYmMgdG8gZGVwbGlicyBvbiBhbGwgb3RoZXIgc3lzdGVtcyBpZiBuZWNlc3NhcnkuCisJICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX25lZWRfbGMiID0gInllcyI7IHRoZW4KKwkgICAgICBkZXBsaWJzPSIkZGVwbGlicyAtbGMiCisJICAgIGZpCisJICAgIDs7CisJICBlc2FjCisJZmkKKworCSMgVHJhbnNmb3JtIGRlcGxpYnMgaW50byBvbmx5IGRlcGxpYnMgdGhhdCBjYW4gYmUgbGlua2VkIGluIHNoYXJlZC4KKwluYW1lX3NhdmU9JG5hbWUKKwlsaWJuYW1lX3NhdmU9JGxpYm5hbWUKKwlyZWxlYXNlX3NhdmU9JHJlbGVhc2UKKwl2ZXJzdWZmaXhfc2F2ZT0kdmVyc3VmZml4CisJbWFqb3Jfc2F2ZT0kbWFqb3IKKwkjIEknbSBub3Qgc3VyZSBpZiBJJ20gdHJlYXRpbmcgdGhlIHJlbGVhc2UgY29ycmVjdGx5LiAgSSB0aGluaworCSMgcmVsZWFzZSBzaG91bGQgc2hvdyB1cCBpbiB0aGUgLWwgKGllIC1sZ21wNSkgc28gd2UgZG9uJ3Qgd2FudCB0bworCSMgYWRkIGl0IGluIHR3aWNlLiAgSXMgdGhhdCBjb3JyZWN0PworCXJlbGVhc2U9IiIKKwl2ZXJzdWZmaXg9IiIKKwltYWpvcj0iIgorCW5ld2RlcGxpYnM9CisJZHJvcHBlZGRlcHM9bm8KKwljYXNlICRkZXBsaWJzX2NoZWNrX21ldGhvZCBpbgorCXBhc3NfYWxsKQorCSAgIyBEb24ndCBjaGVjayBmb3Igc2hhcmVkL3N0YXRpYy4gIEV2ZXJ5dGhpbmcgd29ya3MuCisJICAjIFRoaXMgbWlnaHQgYmUgYSBsaXR0bGUgbmFpdmUuICBXZSBtaWdodCB3YW50IHRvIGNoZWNrCisJICAjIHdoZXRoZXIgdGhlIGxpYnJhcnkgZXhpc3RzIG9yIG5vdC4gIEJ1dCB0aGlzIGlzIG9uCisJICAjIG9zZjMgJiBvc2Y0IGFuZCBJJ20gbm90IHJlYWxseSBzdXJlLi4uIEp1c3QKKwkgICMgaW1wbGVtZW50aW5nIHdoYXQgd2FzIGFscmVhZHkgdGhlIGJlaGF2aW9yLgorCSAgbmV3ZGVwbGlicz0kZGVwbGlicworCSAgOzsKKwl0ZXN0X2NvbXBpbGUpCisJICAjIFRoaXMgY29kZSBzdHJlc3NlcyB0aGUgImxpYnJhcmllcyBhcmUgcHJvZ3JhbXMiIHBhcmFkaWdtIHRvIGl0cworCSAgIyBsaW1pdHMuIE1heWJlIGV2ZW4gYnJlYWtzIGl0LiAgV2UgY29tcGlsZSBhIHByb2dyYW0sIGxpbmtpbmcgaXQKKwkgICMgYWdhaW5zdCB0aGUgZGVwbGlicyBhcyBhIHByb3h5IGZvciB0aGUgbGlicmFyeS4gIFRoZW4gd2UgY2FuIGNoZWNrCisJICAjIHdoZXRoZXIgdGhleSBsaW5rZWQgaW4gc3RhdGljYWxseSBvciBkeW5hbWljYWxseSB3aXRoIGxkZC4KKwkgICRybSBjb25mdGVzdC5jCisJICBjYXQgPiBjb25mdGVzdC5jIDw8RU9GCisJICBpbnQgbWFpbigpIHsgcmV0dXJuIDA7IH0KK0VPRgorCSAgJHJtIGNvbmZ0ZXN0CisJICAkTFRDQyAtbyBjb25mdGVzdCBjb25mdGVzdC5jICRkZXBsaWJzCisJICBpZiB0ZXN0ICIkPyIgLWVxIDAgOyB0aGVuCisJICAgIGxkZF9vdXRwdXQ9YGxkZCBjb25mdGVzdGAKKwkgICAgZm9yIGkgaW4gJGRlcGxpYnM7IGRvCisJICAgICAgbmFtZT0iYGV4cHIgJGkgOiAnLWxcKC4qXCknYCIKKwkgICAgICAjIElmICRuYW1lIGlzIGVtcHR5IHdlIGFyZSBvcGVyYXRpbmcgb24gYSAtTCBhcmd1bWVudC4KKyAgICAgICAgICAgICAgaWYgdGVzdCAiJG5hbWUiICE9ICIiICYmIHRlc3QgIiRuYW1lIiAtbmUgIjAiOyB0aGVuCisJCWlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KKwkJICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KKwkJICAqIiAkaSAiKikKKwkJICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorCQkgICAgaT0iIgorCQkgICAgOzsKKwkJICBlc2FjCisJICAgICAgICBmaQorCQlpZiB0ZXN0IC1uICIkaSIgOyB0aGVuCisJCSAgbGlibmFtZT1gZXZhbCBcXCRlY2hvIFwiJGxpYm5hbWVfc3BlY1wiYAorCQkgIGRlcGxpYl9tYXRjaGVzPWBldmFsIFxcJGVjaG8gXCIkbGlicmFyeV9uYW1lc19zcGVjXCJgCisJCSAgc2V0IGR1bW15ICRkZXBsaWJfbWF0Y2hlcworCQkgIGRlcGxpYl9tYXRjaD0kMgorCQkgIGlmIHRlc3QgYGV4cHIgIiRsZGRfb3V0cHV0IiA6ICIuKiRkZXBsaWJfbWF0Y2giYCAtbmUgMCA7IHRoZW4KKwkJICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorCQkgIGVsc2UKKwkJICAgIGRyb3BwZWRkZXBzPXllcworCQkgICAgJGVjaG8KKwkJICAgICRlY2hvICIqKiogV2FybmluZzogZHluYW1pYyBsaW5rZXIgZG9lcyBub3QgYWNjZXB0IG5lZWRlZCBsaWJyYXJ5ICRpLiIKKwkJICAgICRlY2hvICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgorCQkgICAgJGVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCSAgICAkZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCBJIGJlbGlldmUgeW91IGRvIG5vdCBoYXZlIgorCQkgICAgJGVjaG8gIioqKiBiZWNhdXNlIGEgdGVzdF9jb21waWxlIGRpZCByZXZlYWwgdGhhdCB0aGUgbGlua2VyIGRpZCBub3QgdXNlIGl0IGZvciIKKwkJICAgICRlY2hvICIqKiogaXRzIGR5bmFtaWMgZGVwZW5kZW5jeSBsaXN0IHRoYXQgcHJvZ3JhbXMgZ2V0IHJlc29sdmVkIHdpdGggYXQgcnVudGltZS4iCisJCSAgZmkKKwkJZmkKKwkgICAgICBlbHNlCisJCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorCSAgICAgIGZpCisJICAgIGRvbmUKKwkgIGVsc2UKKwkgICAgIyBFcnJvciBvY2N1cnJlZCBpbiB0aGUgZmlyc3QgY29tcGlsZS4gIExldCdzIHRyeSB0byBzYWx2YWdlCisJICAgICMgdGhlIHNpdHVhdGlvbjogQ29tcGlsZSBhIHNlcGFyYXRlIHByb2dyYW0gZm9yIGVhY2ggbGlicmFyeS4KKwkgICAgZm9yIGkgaW4gJGRlcGxpYnM7IGRvCisJICAgICAgbmFtZT0iYGV4cHIgJGkgOiAnLWxcKC4qXCknYCIKKwkgICAgICAjIElmICRuYW1lIGlzIGVtcHR5IHdlIGFyZSBvcGVyYXRpbmcgb24gYSAtTCBhcmd1bWVudC4KKyAgICAgICAgICAgICAgaWYgdGVzdCAiJG5hbWUiICE9ICIiICYmIHRlc3QgIiRuYW1lIiAhPSAiMCI7IHRoZW4KKwkJJHJtIGNvbmZ0ZXN0CisJCSRMVENDIC1vIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMgJGkKKwkJIyBEaWQgaXQgd29yaz8KKwkJaWYgdGVzdCAiJD8iIC1lcSAwIDsgdGhlbgorCQkgIGxkZF9vdXRwdXQ9YGxkZCBjb25mdGVzdGAKKwkJICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCisJCSAgICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KKwkJICAgICoiICRpICIqKQorCQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKwkJICAgICAgaT0iIgorCQkgICAgICA7OworCQkgICAgZXNhYworCQkgIGZpCisJCSAgaWYgdGVzdCAtbiAiJGkiIDsgdGhlbgorCQkgICAgbGlibmFtZT1gZXZhbCBcXCRlY2hvIFwiJGxpYm5hbWVfc3BlY1wiYAorCQkgICAgZGVwbGliX21hdGNoZXM9YGV2YWwgXFwkZWNobyBcIiRsaWJyYXJ5X25hbWVzX3NwZWNcImAKKwkJICAgIHNldCBkdW1teSAkZGVwbGliX21hdGNoZXMKKwkJICAgIGRlcGxpYl9tYXRjaD0kMgorCQkgICAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwIDsgdGhlbgorCQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKwkJICAgIGVsc2UKKwkJICAgICAgZHJvcHBlZGRlcHM9eWVzCisJCSAgICAgICRlY2hvCisJCSAgICAgICRlY2hvICIqKiogV2FybmluZzogZHluYW1pYyBsaW5rZXIgZG9lcyBub3QgYWNjZXB0IG5lZWRlZCBsaWJyYXJ5ICRpLiIKKwkJICAgICAgJGVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJCSAgICAgICRlY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgorCQkgICAgICAkZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgorCQkgICAgICAkZWNobyAiKioqIGJlY2F1c2UgYSB0ZXN0X2NvbXBpbGUgZGlkIHJldmVhbCB0aGF0IHRoZSBsaW5rZXIgZGlkIG5vdCB1c2UgdGhpcyBvbmUiCisJCSAgICAgICRlY2hvICIqKiogYXMgYSBkeW5hbWljIGRlcGVuZGVuY3kgdGhhdCBwcm9ncmFtcyBjYW4gZ2V0IHJlc29sdmVkIHdpdGggYXQgcnVudGltZS4iCisJCSAgICBmaQorCQkgIGZpCisJCWVsc2UKKwkJICBkcm9wcGVkZGVwcz15ZXMKKwkJICAkZWNobworCQkgICRlY2hvICIqKiogV2FybmluZyEgIExpYnJhcnkgJGkgaXMgbmVlZGVkIGJ5IHRoaXMgbGlicmFyeSBidXQgSSB3YXMgbm90IGFibGUgdG8iCisJCSAgJGVjaG8gIioqKiAgbWFrZSBpdCBsaW5rIGluISAgWW91IHdpbGwgcHJvYmFibHkgbmVlZCB0byBpbnN0YWxsIGl0IG9yIHNvbWUiCisJCSAgJGVjaG8gIioqKiBsaWJyYXJ5IHRoYXQgaXQgZGVwZW5kcyBvbiBiZWZvcmUgdGhpcyBsaWJyYXJ5IHdpbGwgYmUgZnVsbHkiCisJCSAgJGVjaG8gIioqKiBmdW5jdGlvbmFsLiAgSW5zdGFsbGluZyBpdCBiZWZvcmUgY29udGludWluZyB3b3VsZCBiZSBldmVuIGJldHRlci4iCisJCWZpCisJICAgICAgZWxzZQorCQluZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKwkgICAgICBmaQorCSAgICBkb25lCisJICBmaQorCSAgOzsKKwlmaWxlX21hZ2ljKikKKwkgIHNldCBkdW1teSAkZGVwbGlic19jaGVja19tZXRob2QKKwkgIGZpbGVfbWFnaWNfcmVnZXg9YGV4cHIgIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgOiAiJDIgXCguKlwpImAKKwkgIGZvciBhX2RlcGxpYiBpbiAkZGVwbGliczsgZG8KKwkgICAgbmFtZT0iYGV4cHIgJGFfZGVwbGliIDogJy1sXCguKlwpJ2AiCisJICAgICMgSWYgJG5hbWUgaXMgZW1wdHkgd2UgYXJlIG9wZXJhdGluZyBvbiBhIC1MIGFyZ3VtZW50LgorICAgICAgICAgICAgaWYgdGVzdCAiJG5hbWUiICE9ICIiICYmIHRlc3QgICIkbmFtZSIgIT0gIjAiOyB0aGVuCisJICAgICAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgorCQljYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KKwkJKiIgJGFfZGVwbGliICIqKQorCQkgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkJICBhX2RlcGxpYj0iIgorCQkgIDs7CisJCWVzYWMKKwkgICAgICBmaQorCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCisJCWxpYm5hbWU9YGV2YWwgXFwkZWNobyBcIiRsaWJuYW1lX3NwZWNcImAKKwkJZm9yIGkgaW4gJGxpYl9zZWFyY2hfcGF0aCAkc3lzX2xpYl9zZWFyY2hfcGF0aCAkc2hsaWJfc2VhcmNoX3BhdGg7IGRvCisJCSAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lWy4tXSogMj4vZGV2L251bGxgCisJCSAgZm9yIHBvdGVudF9saWIgaW4gJHBvdGVudGlhbF9saWJzOyBkbworCQkgICAgICAjIEZvbGxvdyBzb2Z0IGxpbmtzLgorCQkgICAgICBpZiBscyAtbExkICIkcG90ZW50X2xpYiIgMj4vZGV2L251bGwgXAorCQkJIHwgZ3JlcCAiIC0+ICIgPi9kZXYvbnVsbDsgdGhlbgorCQkJY29udGludWUKKwkJICAgICAgZmkKKwkJICAgICAgIyBUaGUgc3RhdGVtZW50IGFib3ZlIHRyaWVzIHRvIGF2b2lkIGVudGVyaW5nIGFuCisJCSAgICAgICMgZW5kbGVzcyBsb29wIGJlbG93LCBpbiBjYXNlIG9mIGN5Y2xpYyBsaW5rcy4KKwkJICAgICAgIyBXZSBtaWdodCBzdGlsbCBlbnRlciBhbiBlbmRsZXNzIGxvb3AsIHNpbmNlIGEgbGluaworCQkgICAgICAjIGxvb3AgY2FuIGJlIGNsb3NlZCB3aGlsZSB3ZSBmb2xsb3cgbGlua3MsCisJCSAgICAgICMgYnV0IHNvIHdoYXQ/CisJCSAgICAgIHBvdGxpYj0iJHBvdGVudF9saWIiCisJCSAgICAgIHdoaWxlIHRlc3QgLWggIiRwb3RsaWIiIDI+L2Rldi9udWxsOyBkbworCQkJcG90bGlibGluaz1gbHMgLWxkICRwb3RsaWIgfCAke1NFRH0gJ3MvLiogLT4gLy8nYAorCQkJY2FzZSAkcG90bGlibGluayBpbgorCQkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBwb3RsaWI9IiRwb3RsaWJsaW5rIjs7CisJCQkqKSBwb3RsaWI9YCRlY2hvICJYJHBvdGxpYiIgfCAkWHNlZCAtZSAncyxbXi9dKiQsLCdgIiRwb3RsaWJsaW5rIjs7CisJCQllc2FjCisJCSAgICAgIGRvbmUKKwkJICAgICAgaWYgZXZhbCAkZmlsZV9tYWdpY19jbWQgXCJcJHBvdGxpYlwiIDI+L2Rldi9udWxsIFwKKwkJCSB8ICR7U0VEfSAxMHEgXAorCQkJIHwgJEVHUkVQICIkZmlsZV9tYWdpY19yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KKwkJCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkJCWFfZGVwbGliPSIiCisJCQlicmVhayAyCisJCSAgICAgIGZpCisJCSAgZG9uZQorCQlkb25lCisJICAgICAgZmkKKwkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiIDsgdGhlbgorCQlkcm9wcGVkZGVwcz15ZXMKKwkJJGVjaG8KKwkJJGVjaG8gIioqKiBXYXJuaW5nOiBsaW5rZXIgcGF0aCBkb2VzIG5vdCBoYXZlIHJlYWwgZmlsZSBmb3IgbGlicmFyeSAkYV9kZXBsaWIuIgorCQkkZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkJJGVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCSRlY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCisJCSRlY2hvICIqKiogYmVjYXVzZSBJIGRpZCBjaGVjayB0aGUgbGlua2VyIHBhdGggbG9va2luZyBmb3IgYSBmaWxlIHN0YXJ0aW5nIgorCQlpZiB0ZXN0IC16ICIkcG90bGliIiA7IHRoZW4KKwkJICAkZWNobyAiKioqIHdpdGggJGxpYm5hbWUgYnV0IG5vIGNhbmRpZGF0ZXMgd2VyZSBmb3VuZC4gKC4uLmZvciBmaWxlIG1hZ2ljIHRlc3QpIgorCQllbHNlCisJCSAgJGVjaG8gIioqKiB3aXRoICRsaWJuYW1lIGFuZCBub25lIG9mIHRoZSBjYW5kaWRhdGVzIHBhc3NlZCBhIGZpbGUgZm9ybWF0IHRlc3QiCisJCSAgJGVjaG8gIioqKiB1c2luZyBhIGZpbGUgbWFnaWMuIExhc3QgZmlsZSBjaGVja2VkOiAkcG90bGliIgorCQlmaQorCSAgICAgIGZpCisJICAgIGVsc2UKKwkgICAgICAjIEFkZCBhIC1MIGFyZ3VtZW50LgorCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkgICAgZmkKKwkgIGRvbmUgIyBHb25lIHRocm91Z2ggYWxsIGRlcGxpYnMuCisJICA7OworCW1hdGNoX3BhdHRlcm4qKQorCSAgc2V0IGR1bW15ICRkZXBsaWJzX2NoZWNrX21ldGhvZAorCSAgbWF0Y2hfcGF0dGVybl9yZWdleD1gZXhwciAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiA6ICIkMiBcKC4qXCkiYAorCSAgZm9yIGFfZGVwbGliIGluICRkZXBsaWJzOyBkbworCSAgICBuYW1lPSJgZXhwciAkYV9kZXBsaWIgOiAnLWxcKC4qXCknYCIKKwkgICAgIyBJZiAkbmFtZSBpcyBlbXB0eSB3ZSBhcmUgb3BlcmF0aW5nIG9uIGEgLUwgYXJndW1lbnQuCisJICAgIGlmIHRlc3QgLW4gIiRuYW1lIiAmJiB0ZXN0ICIkbmFtZSIgIT0gIjAiOyB0aGVuCisJICAgICAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgorCQljYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KKwkJKiIgJGFfZGVwbGliICIqKQorCQkgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkJICBhX2RlcGxpYj0iIgorCQkgIDs7CisJCWVzYWMKKwkgICAgICBmaQorCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCisJCWxpYm5hbWU9YGV2YWwgXFwkZWNobyBcIiRsaWJuYW1lX3NwZWNcImAKKwkJZm9yIGkgaW4gJGxpYl9zZWFyY2hfcGF0aCAkc3lzX2xpYl9zZWFyY2hfcGF0aCAkc2hsaWJfc2VhcmNoX3BhdGg7IGRvCisJCSAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lWy4tXSogMj4vZGV2L251bGxgCisJCSAgZm9yIHBvdGVudF9saWIgaW4gJHBvdGVudGlhbF9saWJzOyBkbworCQkgICAgcG90bGliPSIkcG90ZW50X2xpYiIgIyBzZWUgc3ltbGluay1jaGVjayBhYm92ZSBpbiBmaWxlX21hZ2ljIHRlc3QKKwkJICAgIGlmIGV2YWwgJGVjaG8gXCIkcG90ZW50X2xpYlwiIDI+L2Rldi9udWxsIFwKKwkJICAgICAgICB8ICR7U0VEfSAxMHEgXAorCQkgICAgICAgIHwgJEVHUkVQICIkbWF0Y2hfcGF0dGVybl9yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KKwkJICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgorCQkgICAgICBhX2RlcGxpYj0iIgorCQkgICAgICBicmVhayAyCisJCSAgICBmaQorCQkgIGRvbmUKKwkJZG9uZQorCSAgICAgIGZpCisJICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIiA7IHRoZW4KKwkJZHJvcHBlZGRlcHM9eWVzCisJCSRlY2hvCisJCSRlY2hvICIqKiogV2FybmluZzogbGlua2VyIHBhdGggZG9lcyBub3QgaGF2ZSByZWFsIGZpbGUgZm9yIGxpYnJhcnkgJGFfZGVwbGliLiIKKwkJJGVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJCSRlY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgorCQkkZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgorCQkkZWNobyAiKioqIGJlY2F1c2UgSSBkaWQgY2hlY2sgdGhlIGxpbmtlciBwYXRoIGxvb2tpbmcgZm9yIGEgZmlsZSBzdGFydGluZyIKKwkJaWYgdGVzdCAteiAiJHBvdGxpYiIgOyB0aGVuCisJCSAgJGVjaG8gIioqKiB3aXRoICRsaWJuYW1lIGJ1dCBubyBjYW5kaWRhdGVzIHdlcmUgZm91bmQuICguLi5mb3IgcmVnZXggcGF0dGVybiB0ZXN0KSIKKwkJZWxzZQorCQkgICRlY2hvICIqKiogd2l0aCAkbGlibmFtZSBhbmQgbm9uZSBvZiB0aGUgY2FuZGlkYXRlcyBwYXNzZWQgYSBmaWxlIGZvcm1hdCB0ZXN0IgorCQkgICRlY2hvICIqKiogdXNpbmcgYSByZWdleCBwYXR0ZXJuLiBMYXN0IGZpbGUgY2hlY2tlZDogJHBvdGxpYiIKKwkJZmkKKwkgICAgICBmaQorCSAgICBlbHNlCisJICAgICAgIyBBZGQgYSAtTCBhcmd1bWVudC4KKwkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisJICAgIGZpCisJICBkb25lICMgR29uZSB0aHJvdWdoIGFsbCBkZXBsaWJzLgorCSAgOzsKKwlub25lIHwgdW5rbm93biB8ICopCisJICBuZXdkZXBsaWJzPSIiCisJICB0bXBfZGVwbGlicz1gJGVjaG8gIlggJGRlcGxpYnMiIHwgJFhzZWQgLWUgJ3MvIC1sYyQvLycgXAorCSAgICAtZSAncy8gLVtMUl1bXiBdKi8vZydgCisJICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCisJICAgIGZvciBpIGluICRwcmVkZXBzICRwb3N0ZGVwcyA7IGRvCisJICAgICAgIyBjYW4ndCB1c2UgWHNlZCBiZWxvdywgYmVjYXVzZSAkaSBtaWdodCBjb250YWluICcvJworCSAgICAgIHRtcF9kZXBsaWJzPWAkZWNobyAiWCAkdG1wX2RlcGxpYnMiIHwgJHtTRUR9IC1lICIxcyxeWCwsIiAtZSAicywkaSwsImAKKwkgICAgZG9uZQorCSAgZmkKKwkgIGlmICRlY2hvICJYICR0bXBfZGVwbGlicyIgfCAkWHNlZCAtZSAncy9bIAldLy9nJyBcCisJICAgIHwgZ3JlcCAuID4vZGV2L251bGw7IHRoZW4KKwkgICAgJGVjaG8KKwkgICAgaWYgdGVzdCAiWCRkZXBsaWJzX2NoZWNrX21ldGhvZCIgPSAiWG5vbmUiOyB0aGVuCisJICAgICAgJGVjaG8gIioqKiBXYXJuaW5nOiBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBhcmUgbm90IHN1cHBvcnRlZCBpbiB0aGlzIHBsYXRmb3JtLiIKKwkgICAgZWxzZQorCSAgICAgICRlY2hvICIqKiogV2FybmluZzogaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBrbm93biB0byBiZSBzdXBwb3J0ZWQuIgorCSAgICBmaQorCSAgICAkZWNobyAiKioqIEFsbCBkZWNsYXJlZCBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBhcmUgYmVpbmcgZHJvcHBlZC4iCisJICAgIGRyb3BwZWRkZXBzPXllcworCSAgZmkKKwkgIDs7CisJZXNhYworCXZlcnN1ZmZpeD0kdmVyc3VmZml4X3NhdmUKKwltYWpvcj0kbWFqb3Jfc2F2ZQorCXJlbGVhc2U9JHJlbGVhc2Vfc2F2ZQorCWxpYm5hbWU9JGxpYm5hbWVfc2F2ZQorCW5hbWU9JG5hbWVfc2F2ZQorCisJY2FzZSAkaG9zdCBpbgorCSotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKKwkgICMgT24gUmhhcHNvZHkgcmVwbGFjZSB0aGUgQyBsaWJyYXJ5IGlzIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCisJICBuZXdkZXBsaWJzPWAkZWNobyAiWCAkbmV3ZGVwbGlicyIgfCAkWHNlZCAtZSAncy8gLWxjIC8gLWZyYW1ld29yayBTeXN0ZW0gLydgCisJICA7OworCWVzYWMKKworCWlmIHRlc3QgIiRkcm9wcGVkZGVwcyIgPSB5ZXM7IHRoZW4KKwkgIGlmIHRlc3QgIiRtb2R1bGUiID0geWVzOyB0aGVuCisJICAgICRlY2hvCisJICAgICRlY2hvICIqKiogV2FybmluZzogbGlidG9vbCBjb3VsZCBub3Qgc2F0aXNmeSBhbGwgZGVjbGFyZWQgaW50ZXItbGlicmFyeSIKKwkgICAgJGVjaG8gIioqKiBkZXBlbmRlbmNpZXMgb2YgbW9kdWxlICRsaWJuYW1lLiAgVGhlcmVmb3JlLCBsaWJ0b29sIHdpbGwgY3JlYXRlIgorCSAgICAkZWNobyAiKioqIGEgc3RhdGljIG1vZHVsZSwgdGhhdCBzaG91bGQgd29yayBhcyBsb25nIGFzIHRoZSBkbG9wZW5pbmciCisJICAgICRlY2hvICIqKiogYXBwbGljYXRpb24gaXMgbGlua2VkIHdpdGggdGhlIC1kbG9wZW4gZmxhZy4iCisJICAgIGlmIHRlc3QgLXogIiRnbG9iYWxfc3ltYm9sX3BpcGUiOyB0aGVuCisJICAgICAgJGVjaG8KKwkgICAgICAkZWNobyAiKioqIEhvd2V2ZXIsIHRoaXMgd291bGQgb25seSB3b3JrIGlmIGxpYnRvb2wgd2FzIGFibGUgdG8gZXh0cmFjdCBzeW1ib2wiCisJICAgICAgJGVjaG8gIioqKiBsaXN0cyBmcm9tIGEgcHJvZ3JhbSwgdXNpbmcgXGBubScgb3IgZXF1aXZhbGVudCwgYnV0IGxpYnRvb2wgY291bGQiCisJICAgICAgJGVjaG8gIioqKiBub3QgZmluZCBzdWNoIGEgcHJvZ3JhbS4gIFNvLCB0aGlzIG1vZHVsZSBpcyBwcm9iYWJseSB1c2VsZXNzLiIKKwkgICAgICAkZWNobyAiKioqIFxgbm0nIGZyb20gR05VIGJpbnV0aWxzIGFuZCBhIGZ1bGwgcmVidWlsZCBtYXkgaGVscC4iCisJICAgIGZpCisJICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSBubzsgdGhlbgorCSAgICAgIG9sZGxpYnM9IiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCisJICAgICAgYnVpbGRfbGlidG9vbF9saWJzPW1vZHVsZQorCSAgICAgIGJ1aWxkX29sZF9saWJzPXllcworCSAgICBlbHNlCisJICAgICAgYnVpbGRfbGlidG9vbF9saWJzPW5vCisJICAgIGZpCisJICBlbHNlCisJICAgICRlY2hvICIqKiogVGhlIGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIHRoYXQgaGF2ZSBiZWVuIGRyb3BwZWQgaGVyZSB3aWxsIGJlIgorCSAgICAkZWNobyAiKioqIGF1dG9tYXRpY2FsbHkgYWRkZWQgd2hlbmV2ZXIgYSBwcm9ncmFtIGlzIGxpbmtlZCB3aXRoIHRoaXMgbGlicmFyeSIKKwkgICAgJGVjaG8gIioqKiBvciBpcyBkZWNsYXJlZCB0byAtZGxvcGVuIGl0LiIKKworCSAgICBpZiB0ZXN0ICIkYWxsb3dfdW5kZWZpbmVkIiA9IG5vOyB0aGVuCisJICAgICAgJGVjaG8KKwkgICAgICAkZWNobyAiKioqIFNpbmNlIHRoaXMgbGlicmFyeSBtdXN0IG5vdCBjb250YWluIHVuZGVmaW5lZCBzeW1ib2xzLCIKKwkgICAgICAkZWNobyAiKioqIGJlY2F1c2UgZWl0aGVyIHRoZSBwbGF0Zm9ybSBkb2VzIG5vdCBzdXBwb3J0IHRoZW0gb3IiCisJICAgICAgJGVjaG8gIioqKiBpdCB3YXMgZXhwbGljaXRseSByZXF1ZXN0ZWQgd2l0aCAtbm8tdW5kZWZpbmVkLCIKKwkgICAgICAkZWNobyAiKioqIGxpYnRvb2wgd2lsbCBvbmx5IGNyZWF0ZSBhIHN0YXRpYyB2ZXJzaW9uIG9mIGl0LiIKKwkgICAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0gbm87IHRoZW4KKwkJb2xkbGlicz0iJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKKwkJYnVpbGRfbGlidG9vbF9saWJzPW1vZHVsZQorCQlidWlsZF9vbGRfbGlicz15ZXMKKwkgICAgICBlbHNlCisJCWJ1aWxkX2xpYnRvb2xfbGlicz1ubworCSAgICAgIGZpCisJICAgIGZpCisJICBmaQorCWZpCisJIyBEb25lIGNoZWNraW5nIGRlcGxpYnMhCisJZGVwbGlicz0kbmV3ZGVwbGlicworICAgICAgZmkKKworICAgICAgIyBBbGwgdGhlIGxpYnJhcnktc3BlY2lmaWMgdmFyaWFibGVzIChpbnN0YWxsX2xpYmRpciBpcyBzZXQgYWJvdmUpLgorICAgICAgbGlicmFyeV9uYW1lcz0KKyAgICAgIG9sZF9saWJyYXJ5PQorICAgICAgZGxuYW1lPQorCisgICAgICAjIFRlc3QgYWdhaW4sIHdlIG1heSBoYXZlIGRlY2lkZWQgbm90IHRvIGJ1aWxkIGl0IGFueSBtb3JlCisgICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllczsgdGhlbgorCWlmIHRlc3QgIiRoYXJkY29kZV9pbnRvX2xpYnMiID0geWVzOyB0aGVuCisJICAjIEhhcmRjb2RlIHRoZSBsaWJyYXJ5IHBhdGhzCisJICBoYXJkY29kZV9saWJkaXJzPQorCSAgZGVwX3JwYXRoPQorCSAgcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCIKKwkgIHRlc3QgIiRtb2RlIiAhPSByZWxpbmsgJiYgcnBhdGg9IiRjb21waWxlX3JwYXRoJHJwYXRoIgorCSAgZm9yIGxpYmRpciBpbiAkcnBhdGg7IGRvCisJICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgorCSAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgorCQlpZiB0ZXN0IC16ICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KKwkJICBoYXJkY29kZV9saWJkaXJzPSIkbGliZGlyIgorCQllbHNlCisJCSAgIyBKdXN0IGFjY3VtdWxhdGUgdGhlIHVuaXF1ZSBsaWJkaXJzLgorCQkgIGNhc2UgJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIGluCisJCSAgKiIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIqKQorCQkgICAgOzsKKwkJICAqKQorCQkgICAgaGFyZGNvZGVfbGliZGlycz0iJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCisJCSAgICA7OworCQkgIGVzYWMKKwkJZmkKKwkgICAgICBlbHNlCisJCWV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKwkJZGVwX3JwYXRoPSIkZGVwX3JwYXRoICRmbGFnIgorCSAgICAgIGZpCisJICAgIGVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgorCSAgICAgIGNhc2UgIiRwZXJtX3JwYXRoICIgaW4KKwkgICAgICAqIiAkbGliZGlyICIqKSA7OworCSAgICAgICopIHBlcm1fcnBhdGg9IiRwZXJtX3JwYXRoICRsaWJkaXIiIDs7CisJICAgICAgZXNhYworCSAgICBmaQorCSAgZG9uZQorCSAgIyBTdWJzdGl0dXRlIHRoZSBoYXJkY29kZWQgbGliZGlycyBpbnRvIHRoZSBycGF0aC4KKwkgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiAmJgorCSAgICAgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCisJICAgIGxpYmRpcj0iJGhhcmRjb2RlX2xpYmRpcnMiCisJICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIjsgdGhlbgorCSAgICAgIGV2YWwgZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGRcIgorCSAgICBlbHNlCisJICAgICAgZXZhbCBkZXBfcnBhdGg9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisJICAgIGZpCisJICBmaQorCSAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkcGVybV9ycGF0aCI7IHRoZW4KKwkgICAgIyBXZSBzaG91bGQgc2V0IHRoZSBydW5wYXRoX3Zhci4KKwkgICAgcnBhdGg9CisJICAgIGZvciBkaXIgaW4gJHBlcm1fcnBhdGg7IGRvCisJICAgICAgcnBhdGg9IiRycGF0aCRkaXI6IgorCSAgICBkb25lCisJICAgIGV2YWwgIiRydW5wYXRoX3Zhcj0nJHJwYXRoXCQkcnVucGF0aF92YXInOyBleHBvcnQgJHJ1bnBhdGhfdmFyIgorCSAgZmkKKwkgIHRlc3QgLW4gIiRkZXBfcnBhdGgiICYmIGRlcGxpYnM9IiRkZXBfcnBhdGggJGRlcGxpYnMiCisJZmkKKworCXNobGlicGF0aD0iJGZpbmFsaXplX3NobGlicGF0aCIKKwl0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rICYmIHNobGlicGF0aD0iJGNvbXBpbGVfc2hsaWJwYXRoJHNobGlicGF0aCIKKwlpZiB0ZXN0IC1uICIkc2hsaWJwYXRoIjsgdGhlbgorCSAgZXZhbCAiJHNobGlicGF0aF92YXI9JyRzaGxpYnBhdGhcJCRzaGxpYnBhdGhfdmFyJzsgZXhwb3J0ICRzaGxpYnBhdGhfdmFyIgorCWZpCisKKwkjIEdldCB0aGUgcmVhbCBhbmQgbGluayBuYW1lcyBvZiB0aGUgbGlicmFyeS4KKwlldmFsIHNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIgorCWV2YWwgbGlicmFyeV9uYW1lcz1cIiRsaWJyYXJ5X25hbWVzX3NwZWNcIgorCXNldCBkdW1teSAkbGlicmFyeV9uYW1lcworCXJlYWxuYW1lPSIkMiIKKwlzaGlmdDsgc2hpZnQKKworCWlmIHRlc3QgLW4gIiRzb25hbWVfc3BlYyI7IHRoZW4KKwkgIGV2YWwgc29uYW1lPVwiJHNvbmFtZV9zcGVjXCIKKwllbHNlCisJICBzb25hbWU9IiRyZWFsbmFtZSIKKwlmaQorCWlmIHRlc3QgLXogIiRkbG5hbWUiOyB0aGVuCisJICBkbG5hbWU9JHNvbmFtZQorCWZpCisKKwlsaWI9IiRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZSIKKwlmb3IgbGluaworCWRvCisJICBsaW5rbmFtZXM9IiRsaW5rbmFtZXMgJGxpbmsiCisJZG9uZQorCisJIyBVc2Ugc3RhbmRhcmQgb2JqZWN0cyBpZiB0aGV5IGFyZSBwaWMKKwl0ZXN0IC16ICIkcGljX2ZsYWciICYmIGxpYm9ianM9YCRlY2hvICJYJGxpYm9ianMiIHwgJFNQMk5MIHwgJFhzZWQgLWUgIiRsbzJvIiB8ICROTDJTUGAKKworCSMgUHJlcGFyZSB0aGUgbGlzdCBvZiBleHBvcnRlZCBzeW1ib2xzCisJaWYgdGVzdCAteiAiJGV4cG9ydF9zeW1ib2xzIjsgdGhlbgorCSAgaWYgdGVzdCAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgPSB5ZXMgfHwgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IjsgdGhlbgorCSAgICAkc2hvdyAiZ2VuZXJhdGluZyBzeW1ib2wgbGlzdCBmb3IgXGAkbGlibmFtZS5sYSciCisJICAgIGV4cG9ydF9zeW1ib2xzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS5leHAiCisJICAgICRydW4gJHJtICRleHBvcnRfc3ltYm9scworCSAgICBjbWRzPSRleHBvcnRfc3ltYm9sc19jbWRzCisJICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JworCSAgICBmb3IgY21kIGluICRjbWRzOyBkbworCSAgICAgIElGUz0iJHNhdmVfaWZzIgorCSAgICAgIGV2YWwgY21kPVwiJGNtZFwiCisJICAgICAgaWYgbGVuPWBleHByICJYJGNtZCIgOiAiLioiYCAmJgorCSAgICAgICB0ZXN0ICIkbGVuIiAtbGUgIiRtYXhfY21kX2xlbiIgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IHRoZW4KKwkgICAgICAgICRzaG93ICIkY21kIgorCSAgICAgICAgJHJ1biBldmFsICIkY21kIiB8fCBleGl0ICQ/CisJICAgICAgICBza2lwcGVkX2V4cG9ydD1mYWxzZQorCSAgICAgIGVsc2UKKwkgICAgICAgICMgVGhlIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZyB0byBleGVjdXRlIGluIG9uZSBzdGVwLgorCSAgICAgICAgJHNob3cgInVzaW5nIHJlbG9hZGFibGUgb2JqZWN0IGZpbGUgZm9yIGV4cG9ydCBsaXN0Li4uIgorCSAgICAgICAgc2tpcHBlZF9leHBvcnQ9OgorCSAgICAgIGZpCisJICAgIGRvbmUKKwkgICAgSUZTPSIkc2F2ZV9pZnMiCisJICAgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9sc19yZWdleCI7IHRoZW4KKwkgICAgICAkc2hvdyAiJEVHUkVQIC1lIFwiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4XCIgXCIkZXhwb3J0X3N5bWJvbHNcIiA+IFwiJHtleHBvcnRfc3ltYm9sc31UXCIiCisJICAgICAgJHJ1biBldmFsICckRUdSRVAgLWUgIiRleHBvcnRfc3ltYm9sc19yZWdleCIgIiRleHBvcnRfc3ltYm9scyIgPiAiJHtleHBvcnRfc3ltYm9sc31UIicKKwkgICAgICAkc2hvdyAiJG12IFwiJHtleHBvcnRfc3ltYm9sc31UXCIgXCIkZXhwb3J0X3N5bWJvbHNcIiIKKwkgICAgICAkcnVuIGV2YWwgJyRtdiAiJHtleHBvcnRfc3ltYm9sc31UIiAiJGV4cG9ydF9zeW1ib2xzIicKKwkgICAgZmkKKwkgIGZpCisJZmkKKworCWlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KKwkgICRydW4gZXZhbCAnJGVjaG8gIlgkaW5jbHVkZV9leHBzeW1zIiB8ICRTUDJOTCA+PiAiJGV4cG9ydF9zeW1ib2xzIicKKwlmaQorCisJdG1wX2RlcGxpYnM9CisJZm9yIHRlc3RfZGVwbGliIGluICRkZXBsaWJzOyBkbworCQljYXNlICIgJGNvbnZlbmllbmNlICIgaW4KKwkJKiIgJHRlc3RfZGVwbGliICIqKSA7OworCQkqKQorCQkJdG1wX2RlcGxpYnM9IiR0bXBfZGVwbGlicyAkdGVzdF9kZXBsaWIiCisJCQk7OworCQllc2FjCisJZG9uZQorCWRlcGxpYnM9IiR0bXBfZGVwbGlicyIKKworCWlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSI7IHRoZW4KKwkgIGlmIHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KKwkgICAgc2F2ZV9saWJvYmpzPSRsaWJvYmpzCisJICAgIGV2YWwgbGlib2Jqcz1cIlwkbGlib2JqcyAkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIgorCSAgZWxzZQorCSAgICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgorCSAgICAkc2hvdyAiJHtybX1yICRnZW50b3AiCisJICAgICRydW4gJHtybX1yICIkZ2VudG9wIgorCSAgICAkc2hvdyAiJG1rZGlyICRnZW50b3AiCisJICAgICRydW4gJG1rZGlyICIkZ2VudG9wIgorCSAgICBzdGF0dXM9JD8KKwkgICAgaWYgdGVzdCAiJHN0YXR1cyIgLW5lIDAgJiYgdGVzdCAhIC1kICIkZ2VudG9wIjsgdGhlbgorCSAgICAgIGV4aXQgJHN0YXR1cworCSAgICBmaQorCSAgICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKworCSAgICBmb3IgeGxpYiBpbiAkY29udmVuaWVuY2U7IGRvCisJICAgICAgIyBFeHRyYWN0IHRoZSBvYmplY3RzLgorCSAgICAgIGNhc2UgJHhsaWIgaW4KKwkgICAgICBbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIHhhYnM9IiR4bGliIiA7OworCSAgICAgICopIHhhYnM9YHB3ZGAiLyR4bGliIiA7OworCSAgICAgIGVzYWMKKwkgICAgICB4bGliPWAkZWNobyAiWCR4bGliIiB8ICRYc2VkIC1lICdzJV4uKi8lJSdgCisJICAgICAgeGRpcj0iJGdlbnRvcC8keGxpYiIKKworCSAgICAgICRzaG93ICIke3JtfXIgJHhkaXIiCisJICAgICAgJHJ1biAke3JtfXIgIiR4ZGlyIgorCSAgICAgICRzaG93ICIkbWtkaXIgJHhkaXIiCisJICAgICAgJHJ1biAkbWtkaXIgIiR4ZGlyIgorCSAgICAgIHN0YXR1cz0kPworCSAgICAgIGlmIHRlc3QgIiRzdGF0dXMiIC1uZSAwICYmIHRlc3QgISAtZCAiJHhkaXIiOyB0aGVuCisJCWV4aXQgJHN0YXR1cworCSAgICAgIGZpCisJICAgICAgIyBXZSB3aWxsIGV4dHJhY3Qgc2VwYXJhdGVseSBqdXN0IHRoZSBjb25mbGljdGluZyBuYW1lcyBhbmQgd2Ugd2lsbCBubworCSAgICAgICMgbG9uZ2VyIHRvdWNoIGFueSB1bmlxdWUgbmFtZXMuIEl0IGlzIGZhc3RlciB0byBsZWF2ZSB0aGVzZSBleHRyYWN0CisJICAgICAgIyBhdXRvbWF0aWNhbGx5IGJ5ICRBUiBpbiBvbmUgcnVuLgorCSAgICAgICRzaG93ICIoY2QgJHhkaXIgJiYgJEFSIHggJHhhYnMpIgorCSAgICAgICRydW4gZXZhbCAiKGNkIFwkeGRpciAmJiAkQVIgeCBcJHhhYnMpIiB8fCBleGl0ICQ/CisJICAgICAgaWYgKCRBUiB0ICIkeGFicyIgfCBzb3J0IHwgc29ydCAtdWMgPi9kZXYvbnVsbCAyPiYxKTsgdGhlbgorCQk6CisJICAgICAgZWxzZQorCQkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBvYmplY3QgbmFtZSBjb25mbGljdHM7IHJlbmFtaW5nIG9iamVjdCBmaWxlcyIgMT4mMgorCQkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiB0byBlbnN1cmUgdGhhdCB0aGV5IHdpbGwgbm90IG92ZXJ3cml0ZSIgMT4mMgorCQkkQVIgdCAiJHhhYnMiIHwgc29ydCB8IHVuaXEgLWNkIHwgd2hpbGUgcmVhZCAtciBjb3VudCBuYW1lCisJCWRvCisJCSAgaT0xCisJCSAgd2hpbGUgdGVzdCAiJGkiIC1sZSAiJGNvdW50IgorCQkgIGRvCisJCSAgICMgUHV0IG91ciAkaSBiZWZvcmUgYW55IGZpcnN0IGRvdCAoZXh0ZW5zaW9uKQorCQkgICAjIE5ldmVyIG92ZXJ3cml0ZSBhbnkgZmlsZQorCQkgICBuYW1lX3RvPSIkbmFtZSIKKwkJICAgd2hpbGUgdGVzdCAiWCRuYW1lX3RvIiA9ICJYJG5hbWUiIHx8IHRlc3QgLWYgIiR4ZGlyLyRuYW1lX3RvIgorCQkgICBkbworCQkgICAgIG5hbWVfdG89YCRlY2hvICJYJG5hbWVfdG8iIHwgJFhzZWQgLWUgInMvXChbXi5dKlwpL1wxLSRpLyJgCisJCSAgIGRvbmUKKwkJICAgJHNob3cgIihjZCAkeGRpciAmJiAkQVIgeE4gJGkgJHhhYnMgJyRuYW1lJyAmJiAkbXYgJyRuYW1lJyAnJG5hbWVfdG8nKSIKKwkJICAgJHJ1biBldmFsICIoY2QgXCR4ZGlyICYmICRBUiB4TiAkaSBcJHhhYnMgJyRuYW1lJyAmJiAkbXYgJyRuYW1lJyAnJG5hbWVfdG8nKSIgfHwgZXhpdCAkPworCQkgICBpPWBleHByICRpICsgMWAKKwkJICBkb25lCisJCWRvbmUKKwkgICAgICBmaQorCisJICAgICAgbGlib2Jqcz0iJGxpYm9ianMgImBmaW5kICR4ZGlyIC1uYW1lIFwqLiRvYmpleHQgLXByaW50IC1vIC1uYW1lIFwqLmxvIC1wcmludCB8ICROTDJTUGAKKwkgICAgZG9uZQorCSAgZmkKKwlmaQorCisJaWYgdGVzdCAiJHRocmVhZF9zYWZlIiA9IHllcyAmJiB0ZXN0IC1uICIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjIjsgdGhlbgorCSAgZXZhbCBmbGFnPVwiJHRocmVhZF9zYWZlX2ZsYWdfc3BlY1wiCisJICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJGZsYWciCisJZmkKKworCSMgTWFrZSBhIGJhY2t1cCBvZiB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSB3aGVuIHJlbGlua2luZworCWlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorCSAgJHJ1biBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJHJtICR7cmVhbG5hbWV9VSAmJiAkbXYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VSknIHx8IGV4aXQgJD8KKwlmaQorCisJIyBEbyBlYWNoIG9mIHRoZSBhcmNoaXZlIGNvbW1hbmRzLgorCWlmIHRlc3QgIiRtb2R1bGUiID0geWVzICYmIHRlc3QgLW4gIiRtb2R1bGVfY21kcyIgOyB0aGVuCisJICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRtb2R1bGVfZXhwc3ltX2NtZHMiOyB0aGVuCisJICAgIGV2YWwgdGVzdF9jbWRzPVwiJG1vZHVsZV9leHBzeW1fY21kc1wiCisJICAgIGNtZHM9JG1vZHVsZV9leHBzeW1fY21kcworCSAgZWxzZQorCSAgICBldmFsIHRlc3RfY21kcz1cIiRtb2R1bGVfY21kc1wiCisJICAgIGNtZHM9JG1vZHVsZV9jbWRzCisJICBmaQorCWVsc2UKKwlpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRhcmNoaXZlX2V4cHN5bV9jbWRzIjsgdGhlbgorCSAgZXZhbCB0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9leHBzeW1fY21kc1wiCisJICBjbWRzPSRhcmNoaXZlX2V4cHN5bV9jbWRzCisJZWxzZQorCSAgZXZhbCB0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9jbWRzXCIKKwkgIGNtZHM9JGFyY2hpdmVfY21kcworCSAgZmkKKwlmaQorCisJaWYgdGVzdCAiWCRza2lwcGVkX2V4cG9ydCIgIT0gIlg6IiAmJiBsZW49YGV4cHIgIlgkdGVzdF9jbWRzIiA6ICIuKiJgICYmCisJICAgdGVzdCAiJGxlbiIgLWxlICIkbWF4X2NtZF9sZW4iIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB0aGVuCisJICA6CisJZWxzZQorCSAgIyBUaGUgY29tbWFuZCBsaW5lIGlzIHRvbyBsb25nIHRvIGxpbmsgaW4gb25lIHN0ZXAsIGxpbmsgcGllY2V3aXNlLgorCSAgJGVjaG8gImNyZWF0aW5nIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzLi4uIgorCisJICAjIFNhdmUgdGhlIHZhbHVlIG9mICRvdXRwdXQgYW5kICRsaWJvYmpzIGJlY2F1c2Ugd2Ugd2FudCB0bworCSAgIyB1c2UgdGhlbSBsYXRlci4gIElmIHdlIGhhdmUgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsIHdlCisJICAjIHdhbnQgdG8gdXNlIHNhdmVfbGlib2JqcyBhcyBpdCB3YXMgYmVmb3JlCisJICAjIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIHdhcyBleHBhbmRlZCwgYmVjYXVzZSB3ZSBjYW4ndAorCSAgIyBhc3N1bWUgdGhlIGxpbmtlciB1bmRlcnN0YW5kcyB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYy4KKwkgICMgVGhpcyBtYXkgaGF2ZSB0byBiZSByZXZpc2l0ZWQsIGluIGNhc2UgdG9vIG1hbnkKKwkgICMgY29udmVuaWVuY2UgbGlicmFyaWVzIGdldCBsaW5rZWQgaW4gYW5kIGVuZCB1cCBleGNlZWRpbmcKKwkgICMgdGhlIHNwZWMuCisJICBpZiB0ZXN0IC16ICIkY29udmVuaWVuY2UiIHx8IHRlc3QgLXogIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KKwkgICAgc2F2ZV9saWJvYmpzPSRsaWJvYmpzCisJICBmaQorCSAgc2F2ZV9vdXRwdXQ9JG91dHB1dAorCisJICAjIENsZWFyIHRoZSByZWxvYWRhYmxlIG9iamVjdCBjcmVhdGlvbiBjb21tYW5kIHF1ZXVlIGFuZAorCSAgIyBpbml0aWFsaXplIGsgdG8gb25lLgorCSAgdGVzdF9jbWRzPQorCSAgY29uY2F0X2NtZHM9CisJICBvYmpsaXN0PQorCSAgZGVsZmlsZXM9CisJICBsYXN0X3JvYmo9CisJICBrPTEKKwkgIG91dHB1dD0kb3V0cHV0X29iamRpci8kc2F2ZV9vdXRwdXQtJHtrfS4kb2JqZXh0CisJICAjIExvb3Agb3ZlciB0aGUgbGlzdCBvZiBvYmplY3RzIHRvIGJlIGxpbmtlZC4KKwkgIGZvciBvYmogaW4gJHNhdmVfbGlib2JqcworCSAgZG8KKwkgICAgZXZhbCB0ZXN0X2NtZHM9XCIkcmVsb2FkX2NtZHMgJG9iamxpc3QgJGxhc3Rfcm9ialwiCisJICAgIGlmIHRlc3QgIlgkb2JqbGlzdCIgPSBYIHx8CisJICAgICAgIHsgbGVuPWBleHByICJYJHRlc3RfY21kcyIgOiAiLioiYCAmJgorCQkgdGVzdCAiJGxlbiIgLWxlICIkbWF4X2NtZF9sZW4iOyB9OyB0aGVuCisJICAgICAgb2JqbGlzdD0iJG9iamxpc3QgJG9iaiIKKwkgICAgZWxzZQorCSAgICAgICMgVGhlIGNvbW1hbmQgJHRlc3RfY21kcyBpcyBhbG1vc3QgdG9vIGxvbmcsIGFkZCBhCisJICAgICAgIyBjb21tYW5kIHRvIHRoZSBxdWV1ZS4KKwkgICAgICBpZiB0ZXN0ICIkayIgLWVxIDEgOyB0aGVuCisJCSMgVGhlIGZpcnN0IGZpbGUgZG9lc24ndCBoYXZlIGEgcHJldmlvdXMgY29tbWFuZCB0byBhZGQuCisJCWV2YWwgY29uY2F0X2NtZHM9XCIkcmVsb2FkX2NtZHMgJG9iamxpc3QgJGxhc3Rfcm9ialwiCisJICAgICAgZWxzZQorCQkjIEFsbCBzdWJzZXF1ZW50IHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzIHdpbGwgbGluayBpbgorCQkjIHRoZSBsYXN0IG9uZSBjcmVhdGVkLgorCQlldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc34kcmVsb2FkX2NtZHMgJG9iamxpc3QgJGxhc3Rfcm9ialwiCisJICAgICAgZmkKKwkgICAgICBsYXN0X3JvYmo9JG91dHB1dF9vYmpkaXIvJHNhdmVfb3V0cHV0LSR7a30uJG9iamV4dAorCSAgICAgIGs9YGV4cHIgJGsgKyAxYAorCSAgICAgIG91dHB1dD0kb3V0cHV0X29iamRpci8kc2F2ZV9vdXRwdXQtJHtrfS4kb2JqZXh0CisJICAgICAgb2JqbGlzdD0kb2JqCisJICAgICAgbGVuPTEKKwkgICAgZmkKKwkgIGRvbmUKKwkgICMgSGFuZGxlIHRoZSByZW1haW5pbmcgb2JqZWN0cyBieSBjcmVhdGluZyBvbmUgbGFzdAorCSAgIyByZWxvYWRhYmxlIG9iamVjdCBmaWxlLiAgQWxsIHN1YnNlcXVlbnQgcmVsb2FkYWJsZSBvYmplY3QKKwkgICMgZmlsZXMgd2lsbCBsaW5rIGluIHRoZSBsYXN0IG9uZSBjcmVhdGVkLgorCSAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+CisJICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JHJlbG9hZF9jbWRzICRvYmpsaXN0ICRsYXN0X3JvYmpcIgorCisJICBpZiAke3NraXBwZWRfZXhwb3J0LWZhbHNlfTsgdGhlbgorCSAgICAkc2hvdyAiZ2VuZXJhdGluZyBzeW1ib2wgbGlzdCBmb3IgXGAkbGlibmFtZS5sYSciCisJICAgIGV4cG9ydF9zeW1ib2xzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS5leHAiCisJICAgICRydW4gJHJtICRleHBvcnRfc3ltYm9scworCSAgICBsaWJvYmpzPSRvdXRwdXQKKwkgICAgIyBBcHBlbmQgdGhlIGNvbW1hbmQgdG8gY3JlYXRlIHRoZSBleHBvcnQgZmlsZS4KKwkgICAgZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+JGV4cG9ydF9zeW1ib2xzX2NtZHNcIgorICAgICAgICAgIGZpCisKKwkgICMgU2V0IHVwIGEgY29tbWFuZCB0byByZW1vdmUgdGhlIHJlbG9hZGFsZSBvYmplY3QgZmlsZXMKKwkgICMgYWZ0ZXIgdGhleSBhcmUgdXNlZC4KKwkgIGk9MAorCSAgd2hpbGUgdGVzdCAiJGkiIC1sdCAiJGsiCisJICBkbworCSAgICBpPWBleHByICRpICsgMWAKKwkgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkb3V0cHV0X29iamRpci8kc2F2ZV9vdXRwdXQtJHtpfS4kb2JqZXh0IgorCSAgZG9uZQorCisJICAkZWNobyAiY3JlYXRpbmcgYSB0ZW1wb3JhcnkgcmVsb2FkYWJsZSBvYmplY3QgZmlsZTogJG91dHB1dCIKKworCSAgIyBMb29wIHRocm91Z2ggdGhlIGNvbW1hbmRzIGdlbmVyYXRlZCBhYm92ZSBhbmQgZXhlY3V0ZSB0aGVtLgorCSAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCisJICBmb3IgY21kIGluICRjb25jYXRfY21kczsgZG8KKwkgICAgSUZTPSIkc2F2ZV9pZnMiCisJICAgICRzaG93ICIkY21kIgorCSAgICAkcnVuIGV2YWwgIiRjbWQiIHx8IGV4aXQgJD8KKwkgIGRvbmUKKwkgIElGUz0iJHNhdmVfaWZzIgorCisJICBsaWJvYmpzPSRvdXRwdXQKKwkgICMgUmVzdG9yZSB0aGUgdmFsdWUgb2Ygb3V0cHV0LgorCSAgb3V0cHV0PSRzYXZlX291dHB1dAorCisJICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiICYmIHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KKwkgICAgZXZhbCBsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCisJICBmaQorCSAgIyBFeHBhbmQgdGhlIGxpYnJhcnkgbGlua2luZyBjb21tYW5kcyBhZ2FpbiB0byByZXNldCB0aGUKKwkgICMgdmFsdWUgb2YgJGxpYm9ianMgZm9yIHBpZWNld2lzZSBsaW5raW5nLgorCisJICAjIERvIGVhY2ggb2YgdGhlIGFyY2hpdmUgY29tbWFuZHMuCisJICBpZiB0ZXN0ICIkbW9kdWxlIiA9IHllcyAmJiB0ZXN0IC1uICIkbW9kdWxlX2NtZHMiIDsgdGhlbgorCSAgICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRtb2R1bGVfZXhwc3ltX2NtZHMiOyB0aGVuCisJICAgICAgY21kcz0kbW9kdWxlX2V4cHN5bV9jbWRzCisJICAgIGVsc2UKKwkgICAgICBjbWRzPSRtb2R1bGVfY21kcworCSAgICBmaQorCSAgZWxzZQorCSAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkYXJjaGl2ZV9leHBzeW1fY21kcyI7IHRoZW4KKwkgICAgY21kcz0kYXJjaGl2ZV9leHBzeW1fY21kcworCSAgZWxzZQorCSAgICBjbWRzPSRhcmNoaXZlX2NtZHMKKwkgICAgZmkKKwkgIGZpCisKKwkgICMgQXBwZW5kIHRoZSBjb21tYW5kIHRvIHJlbW92ZSB0aGUgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMKKwkgICMgdG8gdGhlIGp1c3QtcmVzZXQgJGNtZHMuCisJICBldmFsIGNtZHM9XCJcJGNtZHN+XCRybSAkZGVsZmlsZXNcIgorCWZpCisJc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCisJZm9yIGNtZCBpbiAkY21kczsgZG8KKwkgIElGUz0iJHNhdmVfaWZzIgorCSAgZXZhbCBjbWQ9XCIkY21kXCIKKwkgICRzaG93ICIkY21kIgorCSAgJHJ1biBldmFsICIkY21kIiB8fCBleGl0ICQ/CisJZG9uZQorCUlGUz0iJHNhdmVfaWZzIgorCisJIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0CisJaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCisJICAkcnVuIGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkcm0gJHtyZWFsbmFtZX1UICYmICRtdiAkcmVhbG5hbWUgJHtyZWFsbmFtZX1UICYmICRtdiAiJHJlYWxuYW1lIlUgJHJlYWxuYW1lKScgfHwgZXhpdCAkPworCSAgZXhpdCAkRVhJVF9TVUNDRVNTCisJZmkKKworCSMgQ3JlYXRlIGxpbmtzIHRvIHRoZSByZWFsIGxpYnJhcnkuCisJZm9yIGxpbmtuYW1lIGluICRsaW5rbmFtZXM7IGRvCisJICBpZiB0ZXN0ICIkcmVhbG5hbWUiICE9ICIkbGlua25hbWUiOyB0aGVuCisJICAgICRzaG93ICIoY2QgJG91dHB1dF9vYmpkaXIgJiYgJHJtICRsaW5rbmFtZSAmJiAkTE5fUyAkcmVhbG5hbWUgJGxpbmtuYW1lKSIKKwkgICAgJHJ1biBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJHJtICRsaW5rbmFtZSAmJiAkTE5fUyAkcmVhbG5hbWUgJGxpbmtuYW1lKScgfHwgZXhpdCAkPworCSAgZmkKKwlkb25lCisKKwkjIElmIC1tb2R1bGUgb3IgLWV4cG9ydC1keW5hbWljIHdhcyBzcGVjaWZpZWQsIHNldCB0aGUgZGxuYW1lLgorCWlmIHRlc3QgIiRtb2R1bGUiID0geWVzIHx8IHRlc3QgIiRleHBvcnRfZHluYW1pYyIgPSB5ZXM7IHRoZW4KKwkgICMgT24gYWxsIGtub3duIG9wZXJhdGluZyBzeXN0ZW1zLCB0aGVzZSBhcmUgaWRlbnRpY2FsLgorCSAgZGxuYW1lPSIkc29uYW1lIgorCWZpCisgICAgICBmaQorICAgICAgOzsKKworICAgIG9iaikKKyAgICAgIGlmIHRlc3QgLW4gIiRkZXBsaWJzIjsgdGhlbgorCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLWwnIGFuZCBcYC1MJyBhcmUgaWdub3JlZCBmb3Igb2JqZWN0cyIgMT4mMgorICAgICAgZmkKKworICAgICAgaWYgdGVzdCAtbiAiJGRsZmlsZXMkZGxwcmVmaWxlcyIgfHwgdGVzdCAiJGRsc2VsZiIgIT0gbm87IHRoZW4KKwkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC1kbG9wZW4nIGlzIGlnbm9yZWQgZm9yIG9iamVjdHMiIDE+JjIKKyAgICAgIGZpCisKKyAgICAgIGlmIHRlc3QgLW4gIiRycGF0aCI7IHRoZW4KKwkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC1ycGF0aCcgaXMgaWdub3JlZCBmb3Igb2JqZWN0cyIgMT4mMgorICAgICAgZmkKKworICAgICAgaWYgdGVzdCAtbiAiJHhycGF0aCI7IHRoZW4KKwkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC1SJyBpcyBpZ25vcmVkIGZvciBvYmplY3RzIiAxPiYyCisgICAgICBmaQorCisgICAgICBpZiB0ZXN0IC1uICIkdmluZm8iOyB0aGVuCisJJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtdmVyc2lvbi1pbmZvJyBpcyBpZ25vcmVkIGZvciBvYmplY3RzIiAxPiYyCisgICAgICBmaQorCisgICAgICBpZiB0ZXN0IC1uICIkcmVsZWFzZSI7IHRoZW4KKwkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC1yZWxlYXNlJyBpcyBpZ25vcmVkIGZvciBvYmplY3RzIiAxPiYyCisgICAgICBmaQorCisgICAgICBjYXNlICRvdXRwdXQgaW4KKyAgICAgICoubG8pCisJaWYgdGVzdCAtbiAiJG9ianMkb2xkX2RlcGxpYnMiOyB0aGVuCisJICAkZWNobyAiJG1vZGVuYW1lOiBjYW5ub3QgYnVpbGQgbGlicmFyeSBvYmplY3QgXGAkb3V0cHV0JyBmcm9tIG5vbi1saWJ0b29sIG9iamVjdHMiIDE+JjIKKwkgIGV4aXQgJEVYSVRfRkFJTFVSRQorCWZpCisJbGlib2JqPSIkb3V0cHV0IgorCW9iaj1gJGVjaG8gIlgkb3V0cHV0IiB8ICRYc2VkIC1lICIkbG8ybyJgCisJOzsKKyAgICAgICopCisJbGlib2JqPQorCW9iaj0iJG91dHB1dCIKKwk7OworICAgICAgZXNhYworCisgICAgICAjIERlbGV0ZSB0aGUgb2xkIG9iamVjdHMuCisgICAgICAkcnVuICRybSAkb2JqICRsaWJvYmoKKworICAgICAgIyBPYmplY3RzIGZyb20gY29udmVuaWVuY2UgbGlicmFyaWVzLiAgVGhpcyBhc3N1bWVzCisgICAgICAjIHNpbmdsZS12ZXJzaW9uIGNvbnZlbmllbmNlIGxpYnJhcmllcy4gIFdoZW5ldmVyIHdlIGNyZWF0ZQorICAgICAgIyBkaWZmZXJlbnQgb25lcyBmb3IgUElDL25vbi1QSUMsIHRoaXMgd2UnbGwgaGF2ZSB0byBkdXBsaWNhdGUKKyAgICAgICMgdGhlIGV4dHJhY3Rpb24uCisgICAgICByZWxvYWRfY29udl9vYmpzPQorICAgICAgZ2VudG9wPQorICAgICAgIyByZWxvYWRfY21kcyBydW5zICRMRCBkaXJlY3RseSwgc28gbGV0IHVzIGdldCByaWQgb2YKKyAgICAgICMgLVdsIGZyb20gd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMKKyAgICAgIHdsPQorCisgICAgICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiOyB0aGVuCisJaWYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgorCSAgZXZhbCByZWxvYWRfY29udl9vYmpzPVwiXCRyZWxvYWRfb2JqcyAkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIgorCWVsc2UKKwkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvYmp9eCIKKwkgICRzaG93ICIke3JtfXIgJGdlbnRvcCIKKwkgICRydW4gJHtybX1yICIkZ2VudG9wIgorCSAgJHNob3cgIiRta2RpciAkZ2VudG9wIgorCSAgJHJ1biAkbWtkaXIgIiRnZW50b3AiCisJICBzdGF0dXM9JD8KKwkgIGlmIHRlc3QgIiRzdGF0dXMiIC1uZSAwICYmIHRlc3QgISAtZCAiJGdlbnRvcCI7IHRoZW4KKwkgICAgZXhpdCAkc3RhdHVzCisJICBmaQorCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisKKwkgIGZvciB4bGliIGluICRjb252ZW5pZW5jZTsgZG8KKwkgICAgIyBFeHRyYWN0IHRoZSBvYmplY3RzLgorCSAgICBjYXNlICR4bGliIGluCisJICAgIFtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgeGFicz0iJHhsaWIiIDs7CisJICAgICopIHhhYnM9YHB3ZGAiLyR4bGliIiA7OworCSAgICBlc2FjCisJICAgIHhsaWI9YCRlY2hvICJYJHhsaWIiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKKwkgICAgeGRpcj0iJGdlbnRvcC8keGxpYiIKKworCSAgICAkc2hvdyAiJHtybX1yICR4ZGlyIgorCSAgICAkcnVuICR7cm19ciAiJHhkaXIiCisJICAgICRzaG93ICIkbWtkaXIgJHhkaXIiCisJICAgICRydW4gJG1rZGlyICIkeGRpciIKKwkgICAgc3RhdHVzPSQ/CisJICAgIGlmIHRlc3QgIiRzdGF0dXMiIC1uZSAwICYmIHRlc3QgISAtZCAiJHhkaXIiOyB0aGVuCisJICAgICAgZXhpdCAkc3RhdHVzCisJICAgIGZpCisJICAgICMgV2Ugd2lsbCBleHRyYWN0IHNlcGFyYXRlbHkganVzdCB0aGUgY29uZmxpY3RpbmcgbmFtZXMgYW5kIHdlIHdpbGwgbm8KKwkgICAgIyBsb25nZXIgdG91Y2ggYW55IHVuaXF1ZSBuYW1lcy4gSXQgaXMgZmFzdGVyIHRvIGxlYXZlIHRoZXNlIGV4dHJhY3QKKwkgICAgIyBhdXRvbWF0aWNhbGx5IGJ5ICRBUiBpbiBvbmUgcnVuLgorCSAgICAkc2hvdyAiKGNkICR4ZGlyICYmICRBUiB4ICR4YWJzKSIKKwkgICAgJHJ1biBldmFsICIoY2QgXCR4ZGlyICYmICRBUiB4IFwkeGFicykiIHx8IGV4aXQgJD8KKwkgICAgaWYgKCRBUiB0ICIkeGFicyIgfCBzb3J0IHwgc29ydCAtdWMgPi9kZXYvbnVsbCAyPiYxKTsgdGhlbgorCSAgICAgIDoKKwkgICAgZWxzZQorCSAgICAgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IG9iamVjdCBuYW1lIGNvbmZsaWN0czsgcmVuYW1pbmcgb2JqZWN0IGZpbGVzIiAxPiYyCisJICAgICAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogdG8gZW5zdXJlIHRoYXQgdGhleSB3aWxsIG5vdCBvdmVyd3JpdGUiIDE+JjIKKwkgICAgICAkQVIgdCAiJHhhYnMiIHwgc29ydCB8IHVuaXEgLWNkIHwgd2hpbGUgcmVhZCAtciBjb3VudCBuYW1lCisJICAgICAgZG8KKwkJaT0xCisJCXdoaWxlIHRlc3QgIiRpIiAtbGUgIiRjb3VudCIKKwkJZG8KKwkJICMgUHV0IG91ciAkaSBiZWZvcmUgYW55IGZpcnN0IGRvdCAoZXh0ZW5zaW9uKQorCQkgIyBOZXZlciBvdmVyd3JpdGUgYW55IGZpbGUKKwkJIG5hbWVfdG89IiRuYW1lIgorCQkgd2hpbGUgdGVzdCAiWCRuYW1lX3RvIiA9ICJYJG5hbWUiIHx8IHRlc3QgLWYgIiR4ZGlyLyRuYW1lX3RvIgorCQkgZG8KKwkJICAgbmFtZV90bz1gJGVjaG8gIlgkbmFtZV90byIgfCAkWHNlZCAtZSAicy9cKFteLl0qXCkvXDEtJGkvImAKKwkJIGRvbmUKKwkJICRzaG93ICIoY2QgJHhkaXIgJiYgJEFSIHhOICRpICR4YWJzICckbmFtZScgJiYgJG12ICckbmFtZScgJyRuYW1lX3RvJykiCisJCSAkcnVuIGV2YWwgIihjZCBcJHhkaXIgJiYgJEFSIHhOICRpIFwkeGFicyAnJG5hbWUnICYmICRtdiAnJG5hbWUnICckbmFtZV90bycpIiB8fCBleGl0ICQ/CisJCSBpPWBleHByICRpICsgMWAKKwkJZG9uZQorCSAgICAgIGRvbmUKKwkgICAgZmkKKworCSAgICByZWxvYWRfY29udl9vYmpzPSIkcmVsb2FkX29ianMgImBmaW5kICR4ZGlyIC1uYW1lIFwqLiRvYmpleHQgLXByaW50IC1vIC1uYW1lIFwqLmxvIC1wcmludCB8ICROTDJTUGAKKwkgIGRvbmUKKwlmaQorICAgICAgZmkKKworICAgICAgIyBDcmVhdGUgdGhlIG9sZC1zdHlsZSBvYmplY3QuCisgICAgICByZWxvYWRfb2Jqcz0iJG9ianMkb2xkX2RlcGxpYnMgImAkZWNobyAiWCRsaWJvYmpzIiB8ICRTUDJOTCB8ICRYc2VkIC1lICcvXC4nJHtsaWJleHR9JCcvZCcgLWUgJy9cLmxpYiQvZCcgLWUgIiRsbzJvIiB8ICROTDJTUGAiICRyZWxvYWRfY29udl9vYmpzIiAjIyMgdGVzdHN1aXRlOiBza2lwIG5lc3RlZCBxdW90aW5nIHRlc3QKKworICAgICAgb3V0cHV0PSIkb2JqIgorICAgICAgY21kcz0kcmVsb2FkX2NtZHMKKyAgICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JworICAgICAgZm9yIGNtZCBpbiAkY21kczsgZG8KKwlJRlM9IiRzYXZlX2lmcyIKKwlldmFsIGNtZD1cIiRjbWRcIgorCSRzaG93ICIkY21kIgorCSRydW4gZXZhbCAiJGNtZCIgfHwgZXhpdCAkPworICAgICAgZG9uZQorICAgICAgSUZTPSIkc2F2ZV9pZnMiCisKKyAgICAgICMgRXhpdCBpZiB3ZSBhcmVuJ3QgZG9pbmcgYSBsaWJyYXJ5IG9iamVjdCBmaWxlLgorICAgICAgaWYgdGVzdCAteiAiJGxpYm9iaiI7IHRoZW4KKwlpZiB0ZXN0IC1uICIkZ2VudG9wIjsgdGhlbgorCSAgJHNob3cgIiR7cm19ciAkZ2VudG9wIgorCSAgJHJ1biAke3JtfXIgJGdlbnRvcAorCWZpCisKKwlleGl0ICRFWElUX1NVQ0NFU1MKKyAgICAgIGZpCisKKyAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllczsgdGhlbgorCWlmIHRlc3QgLW4gIiRnZW50b3AiOyB0aGVuCisJICAkc2hvdyAiJHtybX1yICRnZW50b3AiCisJICAkcnVuICR7cm19ciAkZ2VudG9wCisJZmkKKworCSMgQ3JlYXRlIGFuIGludmFsaWQgbGlidG9vbCBvYmplY3QgaWYgbm8gUElDLCBzbyB0aGF0IHdlIGRvbid0CisJIyBhY2NpZGVudGFsbHkgbGluayBpdCBpbnRvIGEgcHJvZ3JhbS4KKwkjICRzaG93ICJlY2hvIHRpbWVzdGFtcCA+ICRsaWJvYmoiCisJIyAkcnVuIGV2YWwgImVjaG8gdGltZXN0YW1wID4gJGxpYm9iaiIgfHwgZXhpdCAkPworCWV4aXQgJEVYSVRfU1VDQ0VTUworICAgICAgZmkKKworICAgICAgaWYgdGVzdCAtbiAiJHBpY19mbGFnIiB8fCB0ZXN0ICIkcGljX21vZGUiICE9IGRlZmF1bHQ7IHRoZW4KKwkjIE9ubHkgZG8gY29tbWFuZHMgaWYgd2UgcmVhbGx5IGhhdmUgZGlmZmVyZW50IFBJQyBvYmplY3RzLgorCXJlbG9hZF9vYmpzPSIkbGlib2JqcyAkcmVsb2FkX2NvbnZfb2JqcyIKKwlvdXRwdXQ9IiRsaWJvYmoiCisJY21kcz0kcmVsb2FkX2NtZHMKKwlzYXZlX2lmcz0iJElGUyI7IElGUz0nficKKwlmb3IgY21kIGluICRjbWRzOyBkbworCSAgSUZTPSIkc2F2ZV9pZnMiCisJICBldmFsIGNtZD1cIiRjbWRcIgorCSAgJHNob3cgIiRjbWQiCisJICAkcnVuIGV2YWwgIiRjbWQiIHx8IGV4aXQgJD8KKwlkb25lCisJSUZTPSIkc2F2ZV9pZnMiCisgICAgICBmaQorCisgICAgICBpZiB0ZXN0IC1uICIkZ2VudG9wIjsgdGhlbgorCSRzaG93ICIke3JtfXIgJGdlbnRvcCIKKwkkcnVuICR7cm19ciAkZ2VudG9wCisgICAgICBmaQorCisgICAgICBleGl0ICRFWElUX1NVQ0NFU1MKKyAgICAgIDs7CisKKyAgICBwcm9nKQorICAgICAgY2FzZSAkaG9zdCBpbgorCSpjeWd3aW4qKSBvdXRwdXQ9YCRlY2hvICRvdXRwdXQgfCAke1NFRH0gLWUgJ3MsLmV4ZSQsLDtzLCQsLmV4ZSwnYCA7OworICAgICAgZXNhYworICAgICAgaWYgdGVzdCAtbiAiJHZpbmZvIjsgdGhlbgorCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLXZlcnNpb24taW5mbycgaXMgaWdub3JlZCBmb3IgcHJvZ3JhbXMiIDE+JjIKKyAgICAgIGZpCisKKyAgICAgIGlmIHRlc3QgLW4gIiRyZWxlYXNlIjsgdGhlbgorCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLXJlbGVhc2UnIGlzIGlnbm9yZWQgZm9yIHByb2dyYW1zIiAxPiYyCisgICAgICBmaQorCisgICAgICBpZiB0ZXN0ICIkcHJlbG9hZCIgPSB5ZXM7IHRoZW4KKwlpZiB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiID0gdW5rbm93biAmJiB0ZXN0ICIkZGxvcGVuX3NlbGYiID0gdW5rbm93biAmJgorCSAgIHRlc3QgIiRkbG9wZW5fc2VsZl9zdGF0aWMiID0gdW5rbm93bjsgdGhlbgorCSAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGBBQ19MSUJUT09MX0RMT1BFTicgbm90IHVzZWQuIEFzc3VtaW5nIG5vIGRsb3BlbiBzdXBwb3J0LiIKKwlmaQorICAgICAgZmkKKworICAgICAgY2FzZSAkaG9zdCBpbgorICAgICAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQorCSMgT24gUmhhcHNvZHkgcmVwbGFjZSB0aGUgQyBsaWJyYXJ5IGlzIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCisJY29tcGlsZV9kZXBsaWJzPWAkZWNobyAiWCAkY29tcGlsZV9kZXBsaWJzIiB8ICRYc2VkIC1lICdzLyAtbGMgLyAtZnJhbWV3b3JrIFN5c3RlbSAvJ2AKKwlmaW5hbGl6ZV9kZXBsaWJzPWAkZWNobyAiWCAkZmluYWxpemVfZGVwbGlicyIgfCAkWHNlZCAtZSAncy8gLWxjIC8gLWZyYW1ld29yayBTeXN0ZW0gLydgCisJOzsKKyAgICAgIGVzYWMKKworICAgICAgY2FzZSAkaG9zdCBpbgorICAgICAgKmRhcndpbiopCisgICAgICAgICMgRG9uJ3QgYWxsb3cgbGF6eSBsaW5raW5nLCBpdCBicmVha3MgQysrIGdsb2JhbCBjb25zdHJ1Y3RvcnMKKyAgICAgICAgaWYgdGVzdCAiJHRhZ25hbWUiID0gQ1hYIDsgdGhlbgorICAgICAgICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJHt3bH0tYmluZF9hdF9sb2FkIgorICAgICAgICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAke3dsfS1iaW5kX2F0X2xvYWQiCisgICAgICAgIGZpCisgICAgICAgIDs7CisgICAgICBlc2FjCisKKyAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAkY29tcGlsZV9kZXBsaWJzIgorICAgICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJGZpbmFsaXplX2RlcGxpYnMiCisKKyAgICAgIGlmIHRlc3QgLW4gIiRycGF0aCR4cnBhdGgiOyB0aGVuCisJIyBJZiB0aGUgdXNlciBzcGVjaWZpZWQgYW55IHJwYXRoIGZsYWdzLCB0aGVuIGFkZCB0aGVtLgorCWZvciBsaWJkaXIgaW4gJHJwYXRoICR4cnBhdGg7IGRvCisJICAjIFRoaXMgaXMgdGhlIG1hZ2ljIHRvIHVzZSAtcnBhdGguCisJICBjYXNlICIkZmluYWxpemVfcnBhdGggIiBpbgorCSAgKiIgJGxpYmRpciAiKikgOzsKKwkgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIgOzsKKwkgIGVzYWMKKwlkb25lCisgICAgICBmaQorCisgICAgICAjIE5vdyBoYXJkY29kZSB0aGUgbGlicmFyeSBwYXRocworICAgICAgcnBhdGg9CisgICAgICBoYXJkY29kZV9saWJkaXJzPQorICAgICAgZm9yIGxpYmRpciBpbiAkY29tcGlsZV9ycGF0aCAkZmluYWxpemVfcnBhdGg7IGRvCisJaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCisJICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KKwkgICAgaWYgdGVzdCAteiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCisJICAgICAgaGFyZGNvZGVfbGliZGlycz0iJGxpYmRpciIKKwkgICAgZWxzZQorCSAgICAgICMgSnVzdCBhY2N1bXVsYXRlIHRoZSB1bmlxdWUgbGliZGlycy4KKwkgICAgICBjYXNlICRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBpbgorCSAgICAgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKKwkJOzsKKwkgICAgICAqKQorCQloYXJkY29kZV9saWJkaXJzPSIkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKKwkJOzsKKwkgICAgICBlc2FjCisJICAgIGZpCisJICBlbHNlCisJICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKwkgICAgcnBhdGg9IiRycGF0aCAkZmxhZyIKKwkgIGZpCisJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCisJICBjYXNlICIkcGVybV9ycGF0aCAiIGluCisJICAqIiAkbGliZGlyICIqKSA7OworCSAgKikgcGVybV9ycGF0aD0iJHBlcm1fcnBhdGggJGxpYmRpciIgOzsKKwkgIGVzYWMKKwlmaQorCWNhc2UgJGhvc3QgaW4KKwkqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotb3MyKikKKwkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgorCSAgKiI6JGxpYmRpcjoiKikgOzsKKwkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiRsaWJkaXIiOzsKKwkgIGVzYWMKKwkgIDs7CisJZXNhYworICAgICAgZG9uZQorICAgICAgIyBTdWJzdGl0dXRlIHRoZSBoYXJkY29kZWQgbGliZGlycyBpbnRvIHRoZSBycGF0aC4KKyAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiAmJgorCSB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KKwlsaWJkaXI9IiRoYXJkY29kZV9saWJkaXJzIgorCWV2YWwgcnBhdGg9XCIgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorICAgICAgZmkKKyAgICAgIGNvbXBpbGVfcnBhdGg9IiRycGF0aCIKKworICAgICAgcnBhdGg9CisgICAgICBoYXJkY29kZV9saWJkaXJzPQorICAgICAgZm9yIGxpYmRpciBpbiAkZmluYWxpemVfcnBhdGg7IGRvCisJaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCisJICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KKwkgICAgaWYgdGVzdCAteiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCisJICAgICAgaGFyZGNvZGVfbGliZGlycz0iJGxpYmRpciIKKwkgICAgZWxzZQorCSAgICAgICMgSnVzdCBhY2N1bXVsYXRlIHRoZSB1bmlxdWUgbGliZGlycy4KKwkgICAgICBjYXNlICRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBpbgorCSAgICAgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKKwkJOzsKKwkgICAgICAqKQorCQloYXJkY29kZV9saWJkaXJzPSIkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKKwkJOzsKKwkgICAgICBlc2FjCisJICAgIGZpCisJICBlbHNlCisJICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKwkgICAgcnBhdGg9IiRycGF0aCAkZmxhZyIKKwkgIGZpCisJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCisJICBjYXNlICIkZmluYWxpemVfcGVybV9ycGF0aCAiIGluCisJICAqIiAkbGliZGlyICIqKSA7OworCSAgKikgZmluYWxpemVfcGVybV9ycGF0aD0iJGZpbmFsaXplX3Blcm1fcnBhdGggJGxpYmRpciIgOzsKKwkgIGVzYWMKKwlmaQorICAgICAgZG9uZQorICAgICAgIyBTdWJzdGl0dXRlIHRoZSBoYXJkY29kZWQgbGliZGlycyBpbnRvIHRoZSBycGF0aC4KKyAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiAmJgorCSB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KKwlsaWJkaXI9IiRoYXJkY29kZV9saWJkaXJzIgorCWV2YWwgcnBhdGg9XCIgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorICAgICAgZmkKKyAgICAgIGZpbmFsaXplX3JwYXRoPSIkcnBhdGgiCisKKyAgICAgIGlmIHRlc3QgLW4gIiRsaWJvYmpzIiAmJiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCisJIyBUcmFuc2Zvcm0gYWxsIHRoZSBsaWJyYXJ5IG9iamVjdHMgaW50byBzdGFuZGFyZCBvYmplY3RzLgorCWNvbXBpbGVfY29tbWFuZD1gJGVjaG8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICIkbG8ybyIgfCAkTkwyU1BgCisJZmluYWxpemVfY29tbWFuZD1gJGVjaG8gIlgkZmluYWxpemVfY29tbWFuZCIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAorICAgICAgZmkKKworICAgICAgZGxzeW1zPQorICAgICAgaWYgdGVzdCAtbiAiJGRsZmlsZXMkZGxwcmVmaWxlcyIgfHwgdGVzdCAiJGRsc2VsZiIgIT0gbm87IHRoZW4KKwlpZiB0ZXN0IC1uICIkTk0iICYmIHRlc3QgLW4gIiRnbG9iYWxfc3ltYm9sX3BpcGUiOyB0aGVuCisJICBkbHN5bXM9IiR7b3V0cHV0bmFtZX1TLmMiCisJZWxzZQorCSAgJGVjaG8gIiRtb2RlbmFtZTogbm90IGNvbmZpZ3VyZWQgdG8gZXh0cmFjdCBnbG9iYWwgc3ltYm9scyBmcm9tIGRscHJlb3BlbmVkIGZpbGVzIiAxPiYyCisJZmkKKyAgICAgIGZpCisKKyAgICAgIGlmIHRlc3QgLW4gIiRkbHN5bXMiOyB0aGVuCisJY2FzZSAkZGxzeW1zIGluCisJIiIpIDs7CisJKi5jKQorCSAgIyBEaXNjb3ZlciB0aGUgbmxpc3Qgb2YgZWFjaCBvZiB0aGUgZGxmaWxlcy4KKwkgIG5saXN0PSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Lm5tIgorCisJICAkc2hvdyAiJHJtICRubGlzdCAke25saXN0fVMgJHtubGlzdH1UIgorCSAgJHJ1biAkcm0gIiRubGlzdCIgIiR7bmxpc3R9UyIgIiR7bmxpc3R9VCIKKworCSAgIyBQYXJzZSB0aGUgbmFtZSBsaXN0IGludG8gYSBzb3VyY2UgZmlsZS4KKwkgICRzaG93ICJjcmVhdGluZyAkb3V0cHV0X29iamRpci8kZGxzeW1zIgorCisJICB0ZXN0IC16ICIkcnVuIiAmJiAkZWNobyA+ICIkb3V0cHV0X29iamRpci8kZGxzeW1zIiAiXAorLyogJGRsc3ltcyAtIHN5bWJvbCByZXNvbHV0aW9uIHRhYmxlIGZvciBcYCRvdXRwdXRuYW1lJyBkbHN5bSBlbXVsYXRpb24uICovCisvKiBHZW5lcmF0ZWQgYnkgJFBST0dSQU0gLSBHTlUgJFBBQ0tBR0UgJFZFUlNJT04kVElNRVNUQU1QICovCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuIFwiQ1wiIHsKKyNlbmRpZgorCisvKiBQcmV2ZW50IHRoZSBvbmx5IGtpbmQgb2YgZGVjbGFyYXRpb24gY29uZmxpY3RzIHdlIGNhbiBtYWtlLiAqLworI2RlZmluZSBsdF9wcmVsb2FkZWRfc3ltYm9scyBzb21lX290aGVyX3N5bWJvbAorCisvKiBFeHRlcm5hbCBzeW1ib2wgZGVjbGFyYXRpb25zIGZvciB0aGUgY29tcGlsZXIuICovXAorIgorCisJICBpZiB0ZXN0ICIkZGxzZWxmIiA9IHllczsgdGhlbgorCSAgICAkc2hvdyAiZ2VuZXJhdGluZyBzeW1ib2wgbGlzdCBmb3IgXGAkb3V0cHV0JyIKKworCSAgICB0ZXN0IC16ICIkcnVuIiAmJiAkZWNobyAnOiBAUFJPR1JBTUAgJyA+ICIkbmxpc3QiCisKKwkgICAgIyBBZGQgb3VyIG93biBwcm9ncmFtIG9iamVjdHMgdG8gdGhlIHN5bWJvbCBsaXN0LgorCSAgICBwcm9nZmlsZXM9YCRlY2hvICJYJG9ianMkb2xkX2RlcGxpYnMiIHwgJFNQMk5MIHwgJFhzZWQgLWUgIiRsbzJvIiB8ICROTDJTUGAKKwkgICAgZm9yIGFyZyBpbiAkcHJvZ2ZpbGVzOyBkbworCSAgICAgICRzaG93ICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRhcmcnIgorCSAgICAgICRydW4gZXZhbCAiJE5NICRhcmcgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgorCSAgICBkb25lCisKKwkgICAgaWYgdGVzdCAtbiAiJGV4Y2x1ZGVfZXhwc3ltcyI7IHRoZW4KKwkgICAgICAkcnVuIGV2YWwgJyRFR1JFUCAtdiAiICgkZXhjbHVkZV9leHBzeW1zKSQiICIkbmxpc3QiID4gIiRubGlzdCJUJworCSAgICAgICRydW4gZXZhbCAnJG12ICIkbmxpc3QiVCAiJG5saXN0IicKKwkgICAgZmkKKworCSAgICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiOyB0aGVuCisJICAgICAgJHJ1biBldmFsICckRUdSRVAgLWUgIiRleHBvcnRfc3ltYm9sc19yZWdleCIgIiRubGlzdCIgPiAiJG5saXN0IlQnCisJICAgICAgJHJ1biBldmFsICckbXYgIiRubGlzdCJUICIkbmxpc3QiJworCSAgICBmaQorCisJICAgICMgUHJlcGFyZSB0aGUgbGlzdCBvZiBleHBvcnRlZCBzeW1ib2xzCisJICAgIGlmIHRlc3QgLXogIiRleHBvcnRfc3ltYm9scyI7IHRoZW4KKwkgICAgICBleHBvcnRfc3ltYm9scz0iJG91dHB1dF9vYmpkaXIvJG91dHB1dC5leHAiCisJICAgICAgJHJ1biAkcm0gJGV4cG9ydF9zeW1ib2xzCisJICAgICAgJHJ1biBldmFsICIke1NFRH0gLW4gLWUgJy9eOiBAUFJPR1JBTUAkL2QnIC1lICdzL14uKiBcKC4qXCkkL1wxL3AnICInPCAiJG5saXN0IiA+ICIkZXhwb3J0X3N5bWJvbHMiJworCSAgICBlbHNlCisJICAgICAgJHJ1biBldmFsICIke1NFRH0gLWUgJ3MvXChbXVsuKl4kXVwpL1xcXDEvZycgLWUgJ3MvXi8gLycgLWUgJ3MvJC8kLyciJyA8ICIkZXhwb3J0X3N5bWJvbHMiID4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXQuZXhwIicKKwkgICAgICAkcnVuIGV2YWwgJ2dyZXAgLWYgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXQuZXhwIiA8ICIkbmxpc3QiID4gIiRubGlzdCJUJworCSAgICAgICRydW4gZXZhbCAnbXYgIiRubGlzdCJUICIkbmxpc3QiJworCSAgICBmaQorCSAgZmkKKworCSAgZm9yIGFyZyBpbiAkZGxwcmVmaWxlczsgZG8KKwkgICAgJHNob3cgImV4dHJhY3RpbmcgZ2xvYmFsIEMgc3ltYm9scyBmcm9tIFxgJGFyZyciCisJICAgIG5hbWU9YCRlY2hvICIkYXJnIiB8ICR7U0VEfSAtZSAncyVeLiovJSUnYAorCSAgICAkcnVuIGV2YWwgJyRlY2hvICI6ICRuYW1lICIgPj4gIiRubGlzdCInCisJICAgICRydW4gZXZhbCAiJE5NICRhcmcgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgorCSAgZG9uZQorCisJICBpZiB0ZXN0IC16ICIkcnVuIjsgdGhlbgorCSAgICAjIE1ha2Ugc3VyZSB3ZSBoYXZlIGF0IGxlYXN0IGFuIGVtcHR5IGZpbGUuCisJICAgIHRlc3QgLWYgIiRubGlzdCIgfHwgOiA+ICIkbmxpc3QiCisKKwkgICAgaWYgdGVzdCAtbiAiJGV4Y2x1ZGVfZXhwc3ltcyI7IHRoZW4KKwkgICAgICAkRUdSRVAgLXYgIiAoJGV4Y2x1ZGVfZXhwc3ltcykkIiAiJG5saXN0IiA+ICIkbmxpc3QiVAorCSAgICAgICRtdiAiJG5saXN0IlQgIiRubGlzdCIKKwkgICAgZmkKKworCSAgICAjIFRyeSBzb3J0aW5nIGFuZCB1bmlxdWlmeWluZyB0aGUgb3V0cHV0LgorCSAgICBpZiBncmVwIC12ICJeOiAiIDwgIiRubGlzdCIgfAorCQlpZiBzb3J0IC1rIDMgPC9kZXYvbnVsbCA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKwkJICBzb3J0IC1rIDMKKwkJZWxzZQorCQkgIHNvcnQgKzIKKwkJZmkgfAorCQl1bmlxID4gIiRubGlzdCJTOyB0aGVuCisJICAgICAgOgorCSAgICBlbHNlCisJICAgICAgZ3JlcCAtdiAiXjogIiA8ICIkbmxpc3QiID4gIiRubGlzdCJTCisJICAgIGZpCisKKwkgICAgaWYgdGVzdCAtZiAiJG5saXN0IlM7IHRoZW4KKwkgICAgICBldmFsICIkZ2xvYmFsX3N5bWJvbF90b19jZGVjbCInIDwgIiRubGlzdCJTID4+ICIkb3V0cHV0X29iamRpci8kZGxzeW1zIicKKwkgICAgZWxzZQorCSAgICAgICRlY2hvICcvKiBOT05FICovJyA+PiAiJG91dHB1dF9vYmpkaXIvJGRsc3ltcyIKKwkgICAgZmkKKworCSAgICAkZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJGRsc3ltcyIgIlwKKworI3VuZGVmIGx0X3ByZWxvYWRlZF9zeW1ib2xzCisKKyNpZiBkZWZpbmVkIChfX1NURENfXykgJiYgX19TVERDX18KKyMgZGVmaW5lIGx0X3B0ciB2b2lkICoKKyNlbHNlCisjIGRlZmluZSBsdF9wdHIgY2hhciAqCisjIGRlZmluZSBjb25zdAorI2VuZGlmCisKKy8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAqLworY29uc3Qgc3RydWN0IHsKKyAgY29uc3QgY2hhciAqbmFtZTsKKyAgbHRfcHRyIGFkZHJlc3M7Cit9CitsdF9wcmVsb2FkZWRfc3ltYm9sc1tdID0KK3tcCisiCisKKwkgICAgZXZhbCAiJGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIDwgIiRubGlzdCIgPj4gIiRvdXRwdXRfb2JqZGlyLyRkbHN5bXMiCisKKwkgICAgJGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRkbHN5bXMiICJcCisgIHswLCAobHRfcHRyKSAwfQorfTsKKworLyogVGhpcyB3b3JrcyBhcm91bmQgYSBwcm9ibGVtIGluIEZyZWVCU0QgbGlua2VyICovCisjaWZkZWYgRlJFRUJTRF9XT1JLQVJPVU5ECitzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworICByZXR1cm4gbHRfcHJlbG9hZGVkX3N5bWJvbHM7Cit9CisjZW5kaWYKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWZcCisiCisJICBmaQorCisJICBwaWNfZmxhZ19mb3Jfc3ltdGFibGU9CisJICBjYXNlICRob3N0IGluCisJICAjIGNvbXBpbGluZyB0aGUgc3ltYm9sIHRhYmxlIGZpbGUgd2l0aCBwaWNfZmxhZyB3b3JrcyBhcm91bmQKKwkgICMgYSBGcmVlQlNEIGJ1ZyB0aGF0IGNhdXNlcyBwcm9ncmFtcyB0byBjcmFzaCB3aGVuIC1sbSBpcworCSAgIyBsaW5rZWQgYmVmb3JlIGFueSBvdGhlciBQSUMgb2JqZWN0LiAgQnV0IHdlIG11c3Qgbm90IHVzZQorCSAgIyBwaWNfZmxhZyB3aGVuIGxpbmtpbmcgd2l0aCAtc3RhdGljLiAgVGhlIHByb2JsZW0gZXhpc3RzIGluCisJICAjIEZyZWVCU0QgMi4yLjYgYW5kIGlzIGZpeGVkIGluIEZyZWVCU0QgMy4xLgorCSAgKi0qLWZyZWVic2QyKnwqLSotZnJlZWJzZDMuMCp8Ki0qLWZyZWVic2RlbGYzLjAqKQorCSAgICBjYXNlICIkY29tcGlsZV9jb21tYW5kICIgaW4KKwkgICAgKiIgLXN0YXRpYyAiKikgOzsKKwkgICAgKikgcGljX2ZsYWdfZm9yX3N5bXRhYmxlPSIgJHBpY19mbGFnIC1ERlJFRUJTRF9XT1JLQVJPVU5EIjs7CisJICAgIGVzYWM7OworCSAgKi0qLWhwdXgqKQorCSAgICBjYXNlICIkY29tcGlsZV9jb21tYW5kICIgaW4KKwkgICAgKiIgLXN0YXRpYyAiKikgOzsKKwkgICAgKikgcGljX2ZsYWdfZm9yX3N5bXRhYmxlPSIgJHBpY19mbGFnIjs7CisJICAgIGVzYWMKKwkgIGVzYWMKKworCSAgIyBOb3cgY29tcGlsZSB0aGUgZHluYW1pYyBzeW1ib2wgZmlsZS4KKwkgICRzaG93ICIoY2QgJG91dHB1dF9vYmpkaXIgJiYgJExUQ0MgLWMkbm9fYnVpbHRpbl9mbGFnJHBpY19mbGFnX2Zvcl9zeW10YWJsZSBcIiRkbHN5bXNcIikiCisJICAkcnVuIGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkTFRDQyAtYyRub19idWlsdGluX2ZsYWckcGljX2ZsYWdfZm9yX3N5bXRhYmxlICIkZGxzeW1zIiknIHx8IGV4aXQgJD8KKworCSAgIyBDbGVhbiB1cCB0aGUgZ2VuZXJhdGVkIGZpbGVzLgorCSAgJHNob3cgIiRybSAkb3V0cHV0X29iamRpci8kZGxzeW1zICRubGlzdCAke25saXN0fVMgJHtubGlzdH1UIgorCSAgJHJ1biAkcm0gIiRvdXRwdXRfb2JqZGlyLyRkbHN5bXMiICIkbmxpc3QiICIke25saXN0fVMiICIke25saXN0fVQiCisKKwkgICMgVHJhbnNmb3JtIHRoZSBzeW1ib2wgZmlsZSBpbnRvIHRoZSBjb3JyZWN0IG5hbWUuCisJICBjb21waWxlX2NvbW1hbmQ9YCRlY2hvICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9JSJgCisJICBmaW5hbGl6ZV9jb21tYW5kPWAkZWNobyAiWCRmaW5hbGl6ZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0lImAKKwkgIDs7CisJKikKKwkgICRlY2hvICIkbW9kZW5hbWU6IHVua25vd24gc3VmZml4IGZvciBcYCRkbHN5bXMnIiAxPiYyCisJICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgIDs7CisJZXNhYworICAgICAgZWxzZQorCSMgV2Uga2VlcCBnb2luZyBqdXN0IGluIGNhc2UgdGhlIHVzZXIgZGlkbid0IHJlZmVyIHRvCisJIyBsdF9wcmVsb2FkZWRfc3ltYm9scy4gIFRoZSBsaW5rZXIgd2lsbCBmYWlsIGlmIGdsb2JhbF9zeW1ib2xfcGlwZQorCSMgcmVhbGx5IHdhcyByZXF1aXJlZC4KKworCSMgTnVsbGlmeSB0aGUgc3ltYm9sIGZpbGUuCisJY29tcGlsZV9jb21tYW5kPWAkZWNobyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlIEBTWU1GSUxFQCUlImAKKwlmaW5hbGl6ZV9jb21tYW5kPWAkZWNobyAiWCRmaW5hbGl6ZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJSBAU1lNRklMRUAlJSJgCisgICAgICBmaQorCisgICAgICBpZiB0ZXN0ICIkbmVlZF9yZWxpbmsiID0gbm8gfHwgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzOyB0aGVuCisJIyBSZXBsYWNlIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpY2F0aW9uLgorCWNvbXBpbGVfY29tbWFuZD1gJGVjaG8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnYAorCWxpbmtfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCRjb21waWxlX3JwYXRoIgorCisJIyBXZSBoYXZlIG5vIHVuaW5zdGFsbGVkIGxpYnJhcnkgZGVwZW5kZW5jaWVzLCBzbyBmaW5hbGl6ZSByaWdodCBub3cuCisJJHNob3cgIiRsaW5rX2NvbW1hbmQiCisJJHJ1biBldmFsICIkbGlua19jb21tYW5kIgorCXN0YXR1cz0kPworCisJIyBEZWxldGUgdGhlIGdlbmVyYXRlZCBmaWxlcy4KKwlpZiB0ZXN0IC1uICIkZGxzeW1zIjsgdGhlbgorCSAgJHNob3cgIiRybSAkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0iCisJICAkcnVuICRybSAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9IgorCWZpCisKKwlleGl0ICRzdGF0dXMKKyAgICAgIGZpCisKKyAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgorCSMgV2Ugc2hvdWxkIHNldCB0aGUgc2hsaWJwYXRoX3ZhcgorCXJwYXRoPQorCWZvciBkaXIgaW4gJHRlbXBfcnBhdGg7IGRvCisJICBjYXNlICRkaXIgaW4KKwkgIFtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikKKwkgICAgIyBBYnNvbHV0ZSBwYXRoLgorCSAgICBycGF0aD0iJHJwYXRoJGRpcjoiCisJICAgIDs7CisJICAqKQorCSAgICAjIFJlbGF0aXZlIHBhdGg6IGFkZCBhIHRoaXNkaXIgZW50cnkuCisJICAgIHJwYXRoPSIkcnBhdGhcJHRoaXNkaXIvJGRpcjoiCisJICAgIDs7CisJICBlc2FjCisJZG9uZQorCXRlbXBfcnBhdGg9IiRycGF0aCIKKyAgICAgIGZpCisKKyAgICAgIGlmIHRlc3QgLW4gIiRjb21waWxlX3NobGlicGF0aCRmaW5hbGl6ZV9zaGxpYnBhdGgiOyB0aGVuCisJY29tcGlsZV9jb21tYW5kPSIkc2hsaWJwYXRoX3Zhcj1cIiRjb21waWxlX3NobGlicGF0aCRmaW5hbGl6ZV9zaGxpYnBhdGhcJCRzaGxpYnBhdGhfdmFyXCIgJGNvbXBpbGVfY29tbWFuZCIKKyAgICAgIGZpCisgICAgICBpZiB0ZXN0IC1uICIkZmluYWxpemVfc2hsaWJwYXRoIjsgdGhlbgorCWZpbmFsaXplX2NvbW1hbmQ9IiRzaGxpYnBhdGhfdmFyPVwiJGZpbmFsaXplX3NobGlicGF0aFwkJHNobGlicGF0aF92YXJcIiAkZmluYWxpemVfY29tbWFuZCIKKyAgICAgIGZpCisKKyAgICAgIGNvbXBpbGVfdmFyPQorICAgICAgZmluYWxpemVfdmFyPQorICAgICAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgorCWlmIHRlc3QgLW4gIiRwZXJtX3JwYXRoIjsgdGhlbgorCSAgIyBXZSBzaG91bGQgc2V0IHRoZSBydW5wYXRoX3Zhci4KKwkgIHJwYXRoPQorCSAgZm9yIGRpciBpbiAkcGVybV9ycGF0aDsgZG8KKwkgICAgcnBhdGg9IiRycGF0aCRkaXI6IgorCSAgZG9uZQorCSAgY29tcGlsZV92YXI9IiRydW5wYXRoX3Zhcj1cIiRycGF0aFwkJHJ1bnBhdGhfdmFyXCIgIgorCWZpCisJaWYgdGVzdCAtbiAiJGZpbmFsaXplX3Blcm1fcnBhdGgiOyB0aGVuCisJICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgorCSAgcnBhdGg9CisJICBmb3IgZGlyIGluICRmaW5hbGl6ZV9wZXJtX3JwYXRoOyBkbworCSAgICBycGF0aD0iJHJwYXRoJGRpcjoiCisJICBkb25lCisJICBmaW5hbGl6ZV92YXI9IiRydW5wYXRoX3Zhcj1cIiRycGF0aFwkJHJ1bnBhdGhfdmFyXCIgIgorCWZpCisgICAgICBmaQorCisgICAgICBpZiB0ZXN0ICIkbm9faW5zdGFsbCIgPSB5ZXM7IHRoZW4KKwkjIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgd3JhcHBlciBzY3JpcHQuCisJbGlua19jb21tYW5kPSIkY29tcGlsZV92YXIkY29tcGlsZV9jb21tYW5kJGNvbXBpbGVfcnBhdGgiCisJIyBSZXBsYWNlIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpY2F0aW9uLgorCWxpbmtfY29tbWFuZD1gJGVjaG8gIlgkbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnYAorCSMgRGVsZXRlIHRoZSBvbGQgb3V0cHV0IGZpbGUuCisJJHJ1biAkcm0gJG91dHB1dAorCSMgTGluayB0aGUgZXhlY3V0YWJsZSBhbmQgZXhpdAorCSRzaG93ICIkbGlua19jb21tYW5kIgorCSRydW4gZXZhbCAiJGxpbmtfY29tbWFuZCIgfHwgZXhpdCAkPworCWV4aXQgJEVYSVRfU1VDQ0VTUworICAgICAgZmkKKworICAgICAgaWYgdGVzdCAiJGhhcmRjb2RlX2FjdGlvbiIgPSByZWxpbms7IHRoZW4KKwkjIEZhc3QgaW5zdGFsbGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQKKwlsaW5rX2NvbW1hbmQ9IiRjb21waWxlX3ZhciRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9ycGF0aCIKKwlyZWxpbmtfY29tbWFuZD0iJGZpbmFsaXplX3ZhciRmaW5hbGl6ZV9jb21tYW5kJGZpbmFsaXplX3JwYXRoIgorCisJJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogdGhpcyBwbGF0Zm9ybSBkb2VzIG5vdCBsaWtlIHVuaW5zdGFsbGVkIHNoYXJlZCBsaWJyYXJpZXMiIDE+JjIKKwkkZWNobyAiJG1vZGVuYW1lOiBcYCRvdXRwdXQnIHdpbGwgYmUgcmVsaW5rZWQgZHVyaW5nIGluc3RhbGxhdGlvbiIgMT4mMgorICAgICAgZWxzZQorCWlmIHRlc3QgIiRmYXN0X2luc3RhbGwiICE9IG5vOyB0aGVuCisJICBsaW5rX2NvbW1hbmQ9IiRmaW5hbGl6ZV92YXIkY29tcGlsZV9jb21tYW5kJGZpbmFsaXplX3JwYXRoIgorCSAgaWYgdGVzdCAiJGZhc3RfaW5zdGFsbCIgPSB5ZXM7IHRoZW4KKwkgICAgcmVsaW5rX2NvbW1hbmQ9YCRlY2hvICJYJGNvbXBpbGVfdmFyJGNvbXBpbGVfY29tbWFuZCRjb21waWxlX3JwYXRoIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJVwkcHJvZ2Rpci9cJGZpbGUlZydgCisJICBlbHNlCisJICAgICMgZmFzdF9pbnN0YWxsIGlzIHNldCB0byBuZWVkbGVzcworCSAgICByZWxpbmtfY29tbWFuZD0KKwkgIGZpCisJZWxzZQorCSAgbGlua19jb21tYW5kPSIkY29tcGlsZV92YXIkY29tcGlsZV9jb21tYW5kJGNvbXBpbGVfcnBhdGgiCisJICByZWxpbmtfY29tbWFuZD0iJGZpbmFsaXplX3ZhciRmaW5hbGl6ZV9jb21tYW5kJGZpbmFsaXplX3JwYXRoIgorCWZpCisgICAgICBmaQorCisgICAgICAjIFJlcGxhY2UgdGhlIG91dHB1dCBmaWxlIHNwZWNpZmljYXRpb24uCisgICAgICBsaW5rX2NvbW1hbmQ9YCRlY2hvICJYJGxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIiclZydgCisKKyAgICAgICMgRGVsZXRlIHRoZSBvbGQgb3V0cHV0IGZpbGVzLgorICAgICAgJHJ1biAkcm0gJG91dHB1dCAkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSAkb3V0cHV0X29iamRpci9sdC0kb3V0cHV0bmFtZQorCisgICAgICAkc2hvdyAiJGxpbmtfY29tbWFuZCIKKyAgICAgICRydW4gZXZhbCAiJGxpbmtfY29tbWFuZCIgfHwgZXhpdCAkPworCisgICAgICAjIE5vdyBjcmVhdGUgdGhlIHdyYXBwZXIgc2NyaXB0LgorICAgICAgJHNob3cgImNyZWF0aW5nICRvdXRwdXQiCisKKyAgICAgICMgUXVvdGUgdGhlIHJlbGluayBjb21tYW5kIGZvciBzaGlwcGluZy4KKyAgICAgIGlmIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4KKwkjIFByZXNlcnZlIGFueSB2YXJpYWJsZXMgdGhhdCBtYXkgYWZmZWN0IGNvbXBpbGVyIGJlaGF2aW9yCisJZm9yIHZhciBpbiAkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms7IGRvCisJICBpZiBldmFsIHRlc3QgLXogXCJcJHskdmFyK3NldH1cIjsgdGhlbgorCSAgICByZWxpbmtfY29tbWFuZD0ieyB0ZXN0IC16IFwiXCR7JHZhcitzZXR9XCIgfHwgdW5zZXQgJHZhciB8fCB7ICR2YXI9OyBleHBvcnQgJHZhcjsgfTsgfTsgJHJlbGlua19jb21tYW5kIgorCSAgZWxpZiBldmFsIHZhcl92YWx1ZT1cJCR2YXI7IHRlc3QgLXogIiR2YXJfdmFsdWUiOyB0aGVuCisJICAgIHJlbGlua19jb21tYW5kPSIkdmFyPTsgZXhwb3J0ICR2YXI7ICRyZWxpbmtfY29tbWFuZCIKKwkgIGVsc2UKKwkgICAgdmFyX3ZhbHVlPWAkZWNobyAiWCR2YXJfdmFsdWUiIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorCSAgICByZWxpbmtfY29tbWFuZD0iJHZhcj1cIiR2YXJfdmFsdWVcIjsgZXhwb3J0ICR2YXI7ICRyZWxpbmtfY29tbWFuZCIKKwkgIGZpCisJZG9uZQorCXJlbGlua19jb21tYW5kPSIoY2QgYHB3ZGA7ICRyZWxpbmtfY29tbWFuZCkiCisJcmVsaW5rX2NvbW1hbmQ9YCRlY2hvICJYJHJlbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKyAgICAgIGZpCisKKyAgICAgICMgUXVvdGUgJGVjaG8gZm9yIHNoaXBwaW5nLgorICAgICAgaWYgdGVzdCAiWCRlY2hvIiA9ICJYJFNIRUxMICRwcm9ncGF0aCAtLWZhbGxiYWNrLWVjaG8iOyB0aGVuCisJY2FzZSAkcHJvZ3BhdGggaW4KKwlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIHFlY2hvPSIkU0hFTEwgJHByb2dwYXRoIC0tZmFsbGJhY2stZWNobyI7OworCSopIHFlY2hvPSIkU0hFTEwgYHB3ZGAvJHByb2dwYXRoIC0tZmFsbGJhY2stZWNobyI7OworCWVzYWMKKwlxZWNobz1gJGVjaG8gIlgkcWVjaG8iIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorICAgICAgZWxzZQorCXFlY2hvPWAkZWNobyAiWCRlY2hvIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKyAgICAgIGZpCisKKyAgICAgICMgT25seSBhY3R1YWxseSBkbyB0aGluZ3MgaWYgb3VyIHJ1biBjb21tYW5kIGlzIG5vbi1udWxsLgorICAgICAgaWYgdGVzdCAteiAiJHJ1biI7IHRoZW4KKwkjIHdpbjMyIHdpbGwgdGhpbmsgdGhlIHNjcmlwdCBpcyBhIGJpbmFyeSBpZiBpdCBoYXMKKwkjIGEgLmV4ZSBzdWZmaXgsIHNvIHdlIHN0cmlwIGl0IG9mZiBoZXJlLgorCWNhc2UgJG91dHB1dCBpbgorCSAgKi5leGUpIG91dHB1dD1gJGVjaG8gJG91dHB1dHwke1NFRH0gJ3MsLmV4ZSQsLCdgIDs7CisJZXNhYworCSMgdGVzdCBmb3IgY3lnd2luIGJlY2F1c2UgbXYgZmFpbHMgdy9vIC5leGUgZXh0ZW5zaW9ucworCWNhc2UgJGhvc3QgaW4KKwkgICpjeWd3aW4qKQorCSAgICBleGVleHQ9LmV4ZQorCSAgICBvdXRwdXRuYW1lPWAkZWNobyAkb3V0cHV0bmFtZXwke1NFRH0gJ3MsLmV4ZSQsLCdgIDs7CisJICAqKSBleGVleHQ9IDs7CisJZXNhYworCWNhc2UgJGhvc3QgaW4KKwkgICpjeWd3aW4qIHwgKm1pbmd3KiApCisJICAgIGN3cmFwcGVyc291cmNlPWAkZWNobyAke29iamRpcn0vbHQtJHtvdXRwdXR9LmNgCisJICAgIGN3cmFwcGVyPWAkZWNobyAke291dHB1dH0uZXhlYAorCSAgICAkcm0gJGN3cmFwcGVyc291cmNlICRjd3JhcHBlcgorCSAgICB0cmFwICIkcm0gJGN3cmFwcGVyc291cmNlICRjd3JhcHBlcjsgZXhpdCAkRVhJVF9GQUlMVVJFIiAxIDIgMTUKKworCSAgICBjYXQgPiAkY3dyYXBwZXJzb3VyY2UgPDxFT0YKKworLyogJGN3cmFwcGVyc291cmNlIC0gdGVtcG9yYXJ5IHdyYXBwZXIgZXhlY3V0YWJsZSBmb3IgJG9iamRpci8kb3V0cHV0bmFtZQorICAgR2VuZXJhdGVkIGJ5ICRQUk9HUkFNIC0gR05VICRQQUNLQUdFICRWRVJTSU9OJFRJTUVTVEFNUAorCisgICBUaGUgJG91dHB1dCBwcm9ncmFtIGNhbm5vdCBiZSBkaXJlY3RseSBleGVjdXRlZCB1bnRpbCBhbGwgdGhlIGxpYnRvb2wKKyAgIGxpYnJhcmllcyB0aGF0IGl0IGRlcGVuZHMgb24gYXJlIGluc3RhbGxlZC4KKworICAgVGhpcyB3cmFwcGVyIGV4ZWN1dGFibGUgc2hvdWxkIG5ldmVyIGJlIG1vdmVkIG91dCBvZiB0aGUgYnVpbGQgZGlyZWN0b3J5LgorICAgSWYgaXQgaXMsIGl0IHdpbGwgbm90IG9wZXJhdGUgY29ycmVjdGx5LgorCisgICBDdXJyZW50bHksIGl0IHNpbXBseSBleGVjcyB0aGUgd3JhcHBlciAqc2NyaXB0KiAiL2Jpbi9zaCAkb3V0cHV0IiwKKyAgIGJ1dCBjb3VsZCBldmVudHVhbGx5IGFic29yYiBhbGwgb2YgdGhlIHNjcmlwdHMgZnVuY3Rpb25hbGl0eSBhbmQKKyAgIGV4ZWMgJG9iamRpci8kb3V0cHV0bmFtZSBkaXJlY3RseS4KKyovCitFT0YKKwkgICAgY2F0ID4+ICRjd3JhcHBlcnNvdXJjZTw8IkVPRiIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPG1hbGxvYy5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorCisjaWYgZGVmaW5lZChQQVRIX01BWCkKKyMgZGVmaW5lIExUX1BBVEhNQVggUEFUSF9NQVgKKyNlbGlmIGRlZmluZWQoTUFYUEFUSExFTikKKyMgZGVmaW5lIExUX1BBVEhNQVggTUFYUEFUSExFTgorI2Vsc2UKKyMgZGVmaW5lIExUX1BBVEhNQVggMTAyNAorI2VuZGlmCisKKyNpZm5kZWYgRElSX1NFUEFSQVRPUgorI2RlZmluZSBESVJfU0VQQVJBVE9SICcvJworI2VuZGlmCisKKyNpZiBkZWZpbmVkIChfV0lOMzIpIHx8IGRlZmluZWQgKF9fTVNET1NfXykgfHwgZGVmaW5lZCAoX19ESkdQUF9fKSB8fCBcCisgIGRlZmluZWQgKF9fT1MyX18pCisjZGVmaW5lIEhBVkVfRE9TX0JBU0VEX0ZJTEVfU1lTVEVNCisjaWZuZGVmIERJUl9TRVBBUkFUT1JfMgorI2RlZmluZSBESVJfU0VQQVJBVE9SXzIgJ1xcJworI2VuZGlmCisjZW5kaWYKKworI2lmbmRlZiBESVJfU0VQQVJBVE9SXzIKKyMgZGVmaW5lIElTX0RJUl9TRVBBUkFUT1IoY2gpICgoY2gpID09IERJUl9TRVBBUkFUT1IpCisjZWxzZSAvKiBESVJfU0VQQVJBVE9SXzIgKi8KKyMgZGVmaW5lIElTX0RJUl9TRVBBUkFUT1IoY2gpIFwKKyAgICAgICAgKCgoY2gpID09IERJUl9TRVBBUkFUT1IpIHx8ICgoY2gpID09IERJUl9TRVBBUkFUT1JfMikpCisjZW5kaWYgLyogRElSX1NFUEFSQVRPUl8yICovCisKKyNkZWZpbmUgWE1BTExPQyh0eXBlLCBudW0pICAgICAgKCh0eXBlICopIHhtYWxsb2MgKChudW0pICogc2l6ZW9mKHR5cGUpKSkKKyNkZWZpbmUgWEZSRUUoc3RhbGUpIGRvIHsgXAorICBpZiAoc3RhbGUpIHsgZnJlZSAoKHZvaWQgKikgc3RhbGUpOyBzdGFsZSA9IDA7IH0gXAorfSB3aGlsZSAoMCkKKworY29uc3QgY2hhciAqcHJvZ3JhbV9uYW1lID0gTlVMTDsKKwordm9pZCAqIHhtYWxsb2MgKHNpemVfdCBudW0pOworY2hhciAqIHhzdHJkdXAgKGNvbnN0IGNoYXIgKnN0cmluZyk7CitjaGFyICogYmFzZW5hbWUgKGNvbnN0IGNoYXIgKm5hbWUpOworY2hhciAqIGZucXVhbGlmeShjb25zdCBjaGFyICpwYXRoKTsKK2NoYXIgKiBzdHJlbmR6YXAoY2hhciAqc3RyLCBjb25zdCBjaGFyICpwYXQpOwordm9pZCBsdF9mYXRhbCAoY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKTsKKworaW50CittYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICBjaGFyICoqbmV3YXJnejsKKyAgaW50IGk7CisKKyAgcHJvZ3JhbV9uYW1lID0gKGNoYXIgKikgeHN0cmR1cCAoKGNoYXIgKikgYmFzZW5hbWUgKGFyZ3ZbMF0pKTsKKyAgbmV3YXJneiA9IFhNQUxMT0MoY2hhciAqLCBhcmdjKzIpOworRU9GCisKKwkgICAgY2F0ID4+ICRjd3JhcHBlcnNvdXJjZSA8PEVPRgorICBuZXdhcmd6WzBdID0gIiRTSEVMTCI7CitFT0YKKworCSAgICBjYXQgPj4gJGN3cmFwcGVyc291cmNlIDw8IkVPRiIKKyAgbmV3YXJnelsxXSA9IGZucXVhbGlmeShhcmd2WzBdKTsKKyAgLyogd2Uga25vdyB0aGUgc2NyaXB0IGhhcyB0aGUgc2FtZSBuYW1lLCB3aXRob3V0IHRoZSAuZXhlICovCisgIC8qIHNvIG1ha2Ugc3VyZSBuZXdhcmd6WzFdIGRvZXNuJ3QgZW5kIGluIC5leGUgKi8KKyAgc3RyZW5kemFwKG5ld2FyZ3pbMV0sIi5leGUiKTsKKyAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKKyAgICBuZXdhcmd6W2krMV0gPSB4c3RyZHVwKGFyZ3ZbaV0pOworICBuZXdhcmd6W2FyZ2MrMV0gPSBOVUxMOworRU9GCisKKwkgICAgY2F0ID4+ICRjd3JhcHBlcnNvdXJjZSA8PEVPRgorICBleGVjdigiJFNIRUxMIixuZXdhcmd6KTsKK0VPRgorCisJICAgIGNhdCA+PiAkY3dyYXBwZXJzb3VyY2UgPDwiRU9GIgorfQorCit2b2lkICoKK3htYWxsb2MgKHNpemVfdCBudW0pCit7CisgIHZvaWQgKiBwID0gKHZvaWQgKikgbWFsbG9jIChudW0pOworICBpZiAoIXApCisgICAgbHRfZmF0YWwgKCJNZW1vcnkgZXhoYXVzdGVkIik7CisKKyAgcmV0dXJuIHA7Cit9CisKK2NoYXIgKgoreHN0cmR1cCAoY29uc3QgY2hhciAqc3RyaW5nKQoreworICByZXR1cm4gc3RyaW5nID8gc3RyY3B5ICgoY2hhciAqKSB4bWFsbG9jIChzdHJsZW4gKHN0cmluZykgKyAxKSwgc3RyaW5nKSA6IE5VTEwKKzsKK30KKworY2hhciAqCitiYXNlbmFtZSAoY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgY29uc3QgY2hhciAqYmFzZTsKKworI2lmIGRlZmluZWQgKEhBVkVfRE9TX0JBU0VEX0ZJTEVfU1lTVEVNKQorICAvKiBTa2lwIG92ZXIgdGhlIGRpc2sgbmFtZSBpbiBNU0RPUyBwYXRobmFtZXMuICovCisgIGlmIChpc2FscGhhIChuYW1lWzBdKSAmJiBuYW1lWzFdID09ICc6JykKKyAgICBuYW1lICs9IDI7CisjZW5kaWYKKworICBmb3IgKGJhc2UgPSBuYW1lOyAqbmFtZTsgbmFtZSsrKQorICAgIGlmIChJU19ESVJfU0VQQVJBVE9SICgqbmFtZSkpCisgICAgICBiYXNlID0gbmFtZSArIDE7CisgIHJldHVybiAoY2hhciAqKSBiYXNlOworfQorCitjaGFyICoKK2ZucXVhbGlmeShjb25zdCBjaGFyICpwYXRoKQoreworICBzaXplX3Qgc2l6ZTsKKyAgY2hhciAqcDsKKyAgY2hhciB0bXBbTFRfUEFUSE1BWCArIDFdOworCisgIGFzc2VydChwYXRoICE9IE5VTEwpOworCisgIC8qIElzIGl0IHF1YWxpZmllZCBhbHJlYWR5PyAqLworI2lmIGRlZmluZWQgKEhBVkVfRE9TX0JBU0VEX0ZJTEVfU1lTVEVNKQorICBpZiAoaXNhbHBoYSAocGF0aFswXSkgJiYgcGF0aFsxXSA9PSAnOicpCisgICAgcmV0dXJuIHhzdHJkdXAgKHBhdGgpOworI2VuZGlmCisgIGlmIChJU19ESVJfU0VQQVJBVE9SIChwYXRoWzBdKSkKKyAgICByZXR1cm4geHN0cmR1cCAocGF0aCk7CisKKyAgLyogcHJlcGVuZCB0aGUgY3VycmVudCBkaXJlY3RvcnkgKi8KKyAgLyogZG9lc24ndCBoYW5kbGUgJ34nICovCisgIGlmIChnZXRjd2QgKHRtcCwgTFRfUEFUSE1BWCkgPT0gTlVMTCkKKyAgICBsdF9mYXRhbCAoImdldGN3ZCBmYWlsZWQiKTsKKyAgc2l6ZSA9IHN0cmxlbih0bXApICsgMSArIHN0cmxlbihwYXRoKSArIDE7IC8qICsyIGZvciAnLycgYW5kICdcMCcgKi8KKyAgcCA9IFhNQUxMT0MoY2hhciwgc2l6ZSk7CisgIHNwcmludGYocCwgIiVzJWMlcyIsIHRtcCwgRElSX1NFUEFSQVRPUiwgcGF0aCk7CisgIHJldHVybiBwOworfQorCitjaGFyICoKK3N0cmVuZHphcChjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnBhdCkKK3sKKyAgc2l6ZV90IGxlbiwgcGF0bGVuOworCisgIGFzc2VydChzdHIgIT0gTlVMTCk7CisgIGFzc2VydChwYXQgIT0gTlVMTCk7CisKKyAgbGVuID0gc3RybGVuKHN0cik7CisgIHBhdGxlbiA9IHN0cmxlbihwYXQpOworCisgIGlmIChwYXRsZW4gPD0gbGVuKQorICB7CisgICAgc3RyICs9IGxlbiAtIHBhdGxlbjsKKyAgICBpZiAoc3RyY21wKHN0ciwgcGF0KSA9PSAwKQorICAgICAgKnN0ciA9ICdcMCc7CisgIH0KKyAgcmV0dXJuIHN0cjsKK30KKworc3RhdGljIHZvaWQKK2x0X2Vycm9yX2NvcmUgKGludCBleGl0X3N0YXR1cywgY29uc3QgY2hhciAqIG1vZGUsCisgICAgICAgICAgY29uc3QgY2hhciAqIG1lc3NhZ2UsIHZhX2xpc3QgYXApCit7CisgIGZwcmludGYgKHN0ZGVyciwgIiVzOiAlczogIiwgcHJvZ3JhbV9uYW1lLCBtb2RlKTsKKyAgdmZwcmludGYgKHN0ZGVyciwgbWVzc2FnZSwgYXApOworICBmcHJpbnRmIChzdGRlcnIsICIuXG4iKTsKKworICBpZiAoZXhpdF9zdGF0dXMgPj0gMCkKKyAgICBleGl0IChleGl0X3N0YXR1cyk7Cit9CisKK3ZvaWQKK2x0X2ZhdGFsIChjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pCit7CisgIHZhX2xpc3QgYXA7CisgIHZhX3N0YXJ0IChhcCwgbWVzc2FnZSk7CisgIGx0X2Vycm9yX2NvcmUgKEVYSVRfRkFJTFVSRSwgIkZBVEFMIiwgbWVzc2FnZSwgYXApOworICB2YV9lbmQgKGFwKTsKK30KK0VPRgorCSAgIyB3ZSBzaG91bGQgcmVhbGx5IHVzZSBhIGJ1aWxkLXBsYXRmb3JtIHNwZWNpZmljIGNvbXBpbGVyCisJICAjIGhlcmUsIGJ1dCBPVE9ILCB0aGUgd3JhcHBlcnMgKHNoZWxsIHNjcmlwdCBhbmQgdGhpcyBDIG9uZSkKKwkgICMgYXJlIG9ubHkgdXNlZnVsIGlmIHlvdSB3YW50IHRvIGV4ZWN1dGUgdGhlICJyZWFsIiBiaW5hcnkuCisJICAjIFNpbmNlIHRoZSAicmVhbCIgYmluYXJ5IGlzIGJ1aWx0IGZvciAkaG9zdCwgdGhlbiB0aGlzCisJICAjIHdyYXBwZXIgbWlnaHQgYXMgd2VsbCBiZSBidWlsdCBmb3IgJGhvc3QsIHRvby4KKwkgICRydW4gJExUQ0MgLXMgLW8gJGN3cmFwcGVyICRjd3JhcHBlcnNvdXJjZQorCSAgOzsKKwllc2FjCisJJHJtICRvdXRwdXQKKwl0cmFwICIkcm0gJG91dHB1dDsgZXhpdCAkRVhJVF9GQUlMVVJFIiAxIDIgMTUKKworCSRlY2hvID4gJG91dHB1dCAiXAorIyEgJFNIRUxMCisKKyMgJG91dHB1dCAtIHRlbXBvcmFyeSB3cmFwcGVyIHNjcmlwdCBmb3IgJG9iamRpci8kb3V0cHV0bmFtZQorIyBHZW5lcmF0ZWQgYnkgJFBST0dSQU0gLSBHTlUgJFBBQ0tBR0UgJFZFUlNJT04kVElNRVNUQU1QCisjCisjIFRoZSAkb3V0cHV0IHByb2dyYW0gY2Fubm90IGJlIGRpcmVjdGx5IGV4ZWN1dGVkIHVudGlsIGFsbCB0aGUgbGlidG9vbAorIyBsaWJyYXJpZXMgdGhhdCBpdCBkZXBlbmRzIG9uIGFyZSBpbnN0YWxsZWQuCisjCisjIFRoaXMgd3JhcHBlciBzY3JpcHQgc2hvdWxkIG5ldmVyIGJlIG1vdmVkIG91dCBvZiB0aGUgYnVpbGQgZGlyZWN0b3J5LgorIyBJZiBpdCBpcywgaXQgd2lsbCBub3Qgb3BlcmF0ZSBjb3JyZWN0bHkuCisKKyMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGhlbHBzIHVzIGRvIHJvYnVzdCBxdW90aW5nLiAgSXQgYmFja3NsYXNoaWZpZXMKKyMgbWV0YWNoYXJhY3RlcnMgdGhhdCBhcmUgc3RpbGwgYWN0aXZlIHdpdGhpbiBkb3VibGUtcXVvdGVkIHN0cmluZ3MuCitYc2VkPScke1NFRH0gLWUgMXMvXlgvLycKK3NlZF9xdW90ZV9zdWJzdD0nJHNlZF9xdW90ZV9zdWJzdCcKKworIyBUaGUgSFAtVVgga3NoIGFuZCBQT1NJWCBzaGVsbCBwcmludCB0aGUgdGFyZ2V0IGRpcmVjdG9yeSB0byBzdGRvdXQKKyMgaWYgQ0RQQVRIIGlzIHNldC4KK2lmIHRlc3QgXCJcJHtDRFBBVEgrc2V0fVwiID0gc2V0OyB0aGVuIENEUEFUSD06OyBleHBvcnQgQ0RQQVRIOyBmaQorCityZWxpbmtfY29tbWFuZD1cIiRyZWxpbmtfY29tbWFuZFwiCisKKyMgVGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZSBkZXRlcm1pbmVzIG91ciBvcGVyYXRpb24gbW9kZS4KK2lmIHRlc3QgXCJcJGxpYnRvb2xfaW5zdGFsbF9tYWdpY1wiID0gXCIkbWFnaWNcIjsgdGhlbgorICAjIGluc3RhbGwgbW9kZSBuZWVkcyB0aGUgZm9sbG93aW5nIHZhcmlhYmxlOgorICBub3RpbnN0X2RlcGxpYnM9JyRub3RpbnN0X2RlcGxpYnMnCitlbHNlCisgICMgV2hlbiB3ZSBhcmUgc291cmNlZCBpbiBleGVjdXRlIG1vZGUsIFwkZmlsZSBhbmQgXCRlY2hvIGFyZSBhbHJlYWR5IHNldC4KKyAgaWYgdGVzdCBcIlwkbGlidG9vbF9leGVjdXRlX21hZ2ljXCIgIT0gXCIkbWFnaWNcIjsgdGhlbgorICAgIGVjaG89XCIkcWVjaG9cIgorICAgIGZpbGU9XCJcJDBcIgorICAgICMgTWFrZSBzdXJlIGVjaG8gd29ya3MuCisgICAgaWYgdGVzdCBcIlhcJDFcIiA9IFgtLW5vLXJlZXhlYzsgdGhlbgorICAgICAgIyBEaXNjYXJkIHRoZSAtLW5vLXJlZXhlYyBmbGFnLCBhbmQgY29udGludWUuCisgICAgICBzaGlmdAorICAgIGVsaWYgdGVzdCBcIlhcYChcJGVjaG8gJ1x0JykgMj4vZGV2L251bGxcYFwiID0gJ1hcdCc7IHRoZW4KKyAgICAgICMgWWlwcGVlLCBcJGVjaG8gd29ya3MhCisgICAgICA6CisgICAgZWxzZQorICAgICAgIyBSZXN0YXJ0IHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLCBhbmQgdGhlbiBtYXliZSBcJGVjaG8gd2lsbCB3b3JrLgorICAgICAgZXhlYyAkU0hFTEwgXCJcJDBcIiAtLW5vLXJlZXhlYyBcJHsxK1wiXCRAXCJ9CisgICAgZmkKKyAgZmlcCisiCisJJGVjaG8gPj4gJG91dHB1dCAiXAorCisgICMgRmluZCB0aGUgZGlyZWN0b3J5IHRoYXQgdGhpcyBzY3JpcHQgbGl2ZXMgaW4uCisgIHRoaXNkaXI9XGBcJGVjaG8gXCJYXCRmaWxlXCIgfCBcJFhzZWQgLWUgJ3MlL1teL10qJCUlJ1xgCisgIHRlc3QgXCJ4XCR0aGlzZGlyXCIgPSBcInhcJGZpbGVcIiAmJiB0aGlzZGlyPS4KKworICAjIEZvbGxvdyBzeW1ib2xpYyBsaW5rcyB1bnRpbCB3ZSBnZXQgdG8gdGhlIHJlYWwgdGhpc2Rpci4KKyAgZmlsZT1cYGxzIC1sZCBcIlwkZmlsZVwiIHwgJHtTRUR9IC1uICdzLy4qLT4gLy9wJ1xgCisgIHdoaWxlIHRlc3QgLW4gXCJcJGZpbGVcIjsgZG8KKyAgICBkZXN0ZGlyPVxgXCRlY2hvIFwiWFwkZmlsZVwiIHwgXCRYc2VkIC1lICdzJS9bXi9dKlwkJSUnXGAKKworICAgICMgSWYgdGhlcmUgd2FzIGEgZGlyZWN0b3J5IGNvbXBvbmVudCwgdGhlbiBjaGFuZ2UgdGhpc2Rpci4KKyAgICBpZiB0ZXN0IFwieFwkZGVzdGRpclwiICE9IFwieFwkZmlsZVwiOyB0aGVuCisgICAgICBjYXNlIFwiXCRkZXN0ZGlyXCIgaW4KKyAgICAgIFtcXFxcL10qIHwgW0EtWmEtel06W1xcXFwvXSopIHRoaXNkaXI9XCJcJGRlc3RkaXJcIiA7OworICAgICAgKikgdGhpc2Rpcj1cIlwkdGhpc2Rpci9cJGRlc3RkaXJcIiA7OworICAgICAgZXNhYworICAgIGZpCisKKyAgICBmaWxlPVxgXCRlY2hvIFwiWFwkZmlsZVwiIHwgXCRYc2VkIC1lICdzJV4uKi8lJSdcYAorICAgIGZpbGU9XGBscyAtbGQgXCJcJHRoaXNkaXIvXCRmaWxlXCIgfCAke1NFRH0gLW4gJ3MvLiotPiAvL3AnXGAKKyAgZG9uZQorCisgICMgVHJ5IHRvIGdldCB0aGUgYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUuCisgIGFic2Rpcj1cYGNkIFwiXCR0aGlzZGlyXCIgJiYgcHdkXGAKKyAgdGVzdCAtbiBcIlwkYWJzZGlyXCIgJiYgdGhpc2Rpcj1cIlwkYWJzZGlyXCIKKyIKKworCWlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0geWVzOyB0aGVuCisJICAkZWNobyA+PiAkb3V0cHV0ICJcCisgIHByb2dyYW09bHQtJyRvdXRwdXRuYW1lJyRleGVleHQKKyAgcHJvZ2Rpcj1cIlwkdGhpc2Rpci8kb2JqZGlyXCIKKworICBpZiB0ZXN0ICEgLWYgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCIgfHwgXFwKKyAgICAgeyBmaWxlPVxgbHMgLTFkdCBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiBcIlwkcHJvZ2Rpci8uLi9cJHByb2dyYW1cIiAyPi9kZXYvbnVsbCB8ICR7U0VEfSAxcVxgOyBcXAorICAgICAgIHRlc3QgXCJYXCRmaWxlXCIgIT0gXCJYXCRwcm9nZGlyL1wkcHJvZ3JhbVwiOyB9OyB0aGVuCisKKyAgICBmaWxlPVwiXCRcJC1cJHByb2dyYW1cIgorCisgICAgaWYgdGVzdCAhIC1kIFwiXCRwcm9nZGlyXCI7IHRoZW4KKyAgICAgICRta2RpciBcIlwkcHJvZ2RpclwiCisgICAgZWxzZQorICAgICAgJHJtIFwiXCRwcm9nZGlyL1wkZmlsZVwiCisgICAgZmkiCisKKwkgICRlY2hvID4+ICRvdXRwdXQgIlwKKworICAgICMgcmVsaW5rIGV4ZWN1dGFibGUgaWYgbmVjZXNzYXJ5CisgICAgaWYgdGVzdCAtbiBcIlwkcmVsaW5rX2NvbW1hbmRcIjsgdGhlbgorICAgICAgaWYgcmVsaW5rX2NvbW1hbmRfb3V0cHV0PVxgZXZhbCBcJHJlbGlua19jb21tYW5kIDI+JjFcYDsgdGhlbiA6CisgICAgICBlbHNlCisJJGVjaG8gXCJcJHJlbGlua19jb21tYW5kX291dHB1dFwiID4mMgorCSRybSBcIlwkcHJvZ2Rpci9cJGZpbGVcIgorCWV4aXQgJEVYSVRfRkFJTFVSRQorICAgICAgZmkKKyAgICBmaQorCisgICAgJG12IFwiXCRwcm9nZGlyL1wkZmlsZVwiIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIDI+L2Rldi9udWxsIHx8CisgICAgeyAkcm0gXCJcJHByb2dkaXIvXCRwcm9ncmFtXCI7CisgICAgICAkbXYgXCJcJHByb2dkaXIvXCRmaWxlXCIgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCI7IH0KKyAgICAkcm0gXCJcJHByb2dkaXIvXCRmaWxlXCIKKyAgZmkiCisJZWxzZQorCSAgJGVjaG8gPj4gJG91dHB1dCAiXAorICBwcm9ncmFtPSckb3V0cHV0bmFtZScKKyAgcHJvZ2Rpcj1cIlwkdGhpc2Rpci8kb2JqZGlyXCIKKyIKKwlmaQorCisJJGVjaG8gPj4gJG91dHB1dCAiXAorCisgIGlmIHRlc3QgLWYgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCI7IHRoZW4iCisKKwkjIEV4cG9ydCBvdXIgc2hsaWJwYXRoX3ZhciBpZiB3ZSBoYXZlIG9uZS4KKwlpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyAmJiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHRlbXBfcnBhdGgiOyB0aGVuCisJICAkZWNobyA+PiAkb3V0cHV0ICJcCisgICAgIyBBZGQgb3VyIG93biBsaWJyYXJ5IHBhdGggdG8gJHNobGlicGF0aF92YXIKKyAgICAkc2hsaWJwYXRoX3Zhcj1cIiR0ZW1wX3JwYXRoXCQkc2hsaWJwYXRoX3ZhclwiCisKKyAgICAjIFNvbWUgc3lzdGVtcyBjYW5ub3QgY29wZSB3aXRoIGNvbG9uLXRlcm1pbmF0ZWQgJHNobGlicGF0aF92YXIKKyAgICAjIFRoZSBzZWNvbmQgY29sb24gaXMgYSB3b3JrYXJvdW5kIGZvciBhIGJ1ZyBpbiBCZU9TIFI0IHNlZAorICAgICRzaGxpYnBhdGhfdmFyPVxgXCRlY2hvIFwiWFwkJHNobGlicGF0aF92YXJcIiB8IFwkWHNlZCAtZSAncy86OipcJC8vJ1xgCisKKyAgICBleHBvcnQgJHNobGlicGF0aF92YXIKKyIKKwlmaQorCisJIyBmaXh1cCB0aGUgZGxsIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4KKwlpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KKwkgICRlY2hvID4+ICRvdXRwdXQgIlwKKyAgICAjIEFkZCB0aGUgZGxsIHNlYXJjaCBwYXRoIGNvbXBvbmVudHMgdG8gdGhlIGV4ZWN1dGFibGUgUEFUSAorICAgIFBBVEg9JGRsbHNlYXJjaHBhdGg6XCRQQVRICisiCisJZmkKKworCSRlY2hvID4+ICRvdXRwdXQgIlwKKyAgICBpZiB0ZXN0IFwiXCRsaWJ0b29sX2V4ZWN1dGVfbWFnaWNcIiAhPSBcIiRtYWdpY1wiOyB0aGVuCisgICAgICAjIFJ1biB0aGUgYWN0dWFsIHByb2dyYW0gd2l0aCBvdXIgYXJndW1lbnRzLgorIgorCWNhc2UgJGhvc3QgaW4KKwkjIEJhY2tzbGFzaGVzIHNlcGFyYXRlIGRpcmVjdG9yaWVzIG9uIHBsYWluIHdpbmRvd3MKKwkqLSotbWluZ3cgfCAqLSotb3MyKikKKwkgICRlY2hvID4+ICRvdXRwdXQgIlwKKyAgICAgIGV4ZWMgXCRwcm9nZGlyXFxcXFwkcHJvZ3JhbSBcJHsxK1wiXCRAXCJ9CisiCisJICA7OworCisJKikKKwkgICRlY2hvID4+ICRvdXRwdXQgIlwKKyAgICAgIGV4ZWMgXCRwcm9nZGlyL1wkcHJvZ3JhbSBcJHsxK1wiXCRAXCJ9CisiCisJICA7OworCWVzYWMKKwkkZWNobyA+PiAkb3V0cHV0ICJcCisgICAgICBcJGVjaG8gXCJcJDA6IGNhbm5vdCBleGVjIFwkcHJvZ3JhbSBcJHsxK1wiXCRAXCJ9XCIKKyAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorICAgIGZpCisgIGVsc2UKKyAgICAjIFRoZSBwcm9ncmFtIGRvZXNuJ3QgZXhpc3QuCisgICAgXCRlY2hvIFwiXCQwOiBlcnJvcjogXCRwcm9nZGlyL1wkcHJvZ3JhbSBkb2VzIG5vdCBleGlzdFwiIDE+JjIKKyAgICBcJGVjaG8gXCJUaGlzIHNjcmlwdCBpcyBqdXN0IGEgd3JhcHBlciBmb3IgXCRwcm9ncmFtLlwiIDE+JjIKKyAgICAkZWNobyBcIlNlZSB0aGUgJFBBQ0tBR0UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIiAxPiYyCisgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisgIGZpCitmaVwKKyIKKwljaG1vZCAreCAkb3V0cHV0CisgICAgICBmaQorICAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCisgICAgICA7OworICAgIGVzYWMKKworICAgICMgU2VlIGlmIHdlIG5lZWQgdG8gYnVpbGQgYW4gb2xkLWZhc2hpb25lZCBhcmNoaXZlLgorICAgIGZvciBvbGRsaWIgaW4gJG9sZGxpYnM7IGRvCisKKyAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0gY29udmVuaWVuY2U7IHRoZW4KKwlvbGRvYmpzPSIkbGlib2Jqc19zYXZlIgorCWFkZGxpYnM9IiRjb252ZW5pZW5jZSIKKwlidWlsZF9saWJ0b29sX2xpYnM9bm8KKyAgICAgIGVsc2UKKwlpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IG1vZHVsZTsgdGhlbgorCSAgb2xkb2Jqcz0iJGxpYm9ianNfc2F2ZSIKKwkgIGJ1aWxkX2xpYnRvb2xfbGlicz1ubworCWVsc2UKKwkgIG9sZG9ianM9IiRvbGRfZGVwbGlicyAkbm9uX3BpY19vYmplY3RzIgorCWZpCisJYWRkbGlicz0iJG9sZF9jb252ZW5pZW5jZSIKKyAgICAgIGZpCisKKyAgICAgIGlmIHRlc3QgLW4gIiRhZGRsaWJzIjsgdGhlbgorCWdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCisJJHNob3cgIiR7cm19ciAkZ2VudG9wIgorCSRydW4gJHtybX1yICIkZ2VudG9wIgorCSRzaG93ICIkbWtkaXIgJGdlbnRvcCIKKwkkcnVuICRta2RpciAiJGdlbnRvcCIKKwlzdGF0dXM9JD8KKwlpZiB0ZXN0ICIkc3RhdHVzIiAtbmUgMCAmJiB0ZXN0ICEgLWQgIiRnZW50b3AiOyB0aGVuCisJICBleGl0ICRzdGF0dXMKKwlmaQorCWdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorCisJIyBBZGQgaW4gbWVtYmVycyBmcm9tIGNvbnZlbmllbmNlIGFyY2hpdmVzLgorCWZvciB4bGliIGluICRhZGRsaWJzOyBkbworCSAgIyBFeHRyYWN0IHRoZSBvYmplY3RzLgorCSAgY2FzZSAkeGxpYiBpbgorCSAgW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSB4YWJzPSIkeGxpYiIgOzsKKwkgICopIHhhYnM9YHB3ZGAiLyR4bGliIiA7OworCSAgZXNhYworCSAgeGxpYj1gJGVjaG8gIlgkeGxpYiIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAorCSAgeGRpcj0iJGdlbnRvcC8keGxpYiIKKworCSAgJHNob3cgIiR7cm19ciAkeGRpciIKKwkgICRydW4gJHtybX1yICIkeGRpciIKKwkgICRzaG93ICIkbWtkaXIgJHhkaXIiCisJICAkcnVuICRta2RpciAiJHhkaXIiCisJICBzdGF0dXM9JD8KKwkgIGlmIHRlc3QgIiRzdGF0dXMiIC1uZSAwICYmIHRlc3QgISAtZCAiJHhkaXIiOyB0aGVuCisJICAgIGV4aXQgJHN0YXR1cworCSAgZmkKKwkgICMgV2Ugd2lsbCBleHRyYWN0IHNlcGFyYXRlbHkganVzdCB0aGUgY29uZmxpY3RpbmcgbmFtZXMgYW5kIHdlIHdpbGwgbm8KKwkgICMgbG9uZ2VyIHRvdWNoIGFueSB1bmlxdWUgbmFtZXMuIEl0IGlzIGZhc3RlciB0byBsZWF2ZSB0aGVzZSBleHRyYWN0CisJICAjIGF1dG9tYXRpY2FsbHkgYnkgJEFSIGluIG9uZSBydW4uCisJICAkc2hvdyAiKGNkICR4ZGlyICYmICRBUiB4ICR4YWJzKSIKKwkgICRydW4gZXZhbCAiKGNkIFwkeGRpciAmJiAkQVIgeCBcJHhhYnMpIiB8fCBleGl0ICQ/CisJICBpZiAoJEFSIHQgIiR4YWJzIiB8IHNvcnQgfCBzb3J0IC11YyA+L2Rldi9udWxsIDI+JjEpOyB0aGVuCisJICAgIDoKKwkgIGVsc2UKKwkgICAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogb2JqZWN0IG5hbWUgY29uZmxpY3RzOyByZW5hbWluZyBvYmplY3QgZmlsZXMiIDE+JjIKKwkgICAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogdG8gZW5zdXJlIHRoYXQgdGhleSB3aWxsIG5vdCBvdmVyd3JpdGUiIDE+JjIKKwkgICAgJEFSIHQgIiR4YWJzIiB8IHNvcnQgfCB1bmlxIC1jZCB8IHdoaWxlIHJlYWQgLXIgY291bnQgbmFtZQorCSAgICBkbworCSAgICAgIGk9MQorCSAgICAgIHdoaWxlIHRlc3QgIiRpIiAtbGUgIiRjb3VudCIKKwkgICAgICBkbworCSAgICAgICAjIFB1dCBvdXIgJGkgYmVmb3JlIGFueSBmaXJzdCBkb3QgKGV4dGVuc2lvbikKKwkgICAgICAgIyBOZXZlciBvdmVyd3JpdGUgYW55IGZpbGUKKwkgICAgICAgbmFtZV90bz0iJG5hbWUiCisJICAgICAgIHdoaWxlIHRlc3QgIlgkbmFtZV90byIgPSAiWCRuYW1lIiB8fCB0ZXN0IC1mICIkeGRpci8kbmFtZV90byIKKwkgICAgICAgZG8KKwkJIG5hbWVfdG89YCRlY2hvICJYJG5hbWVfdG8iIHwgJFhzZWQgLWUgInMvXChbXi5dKlwpL1wxLSRpLyJgCisJICAgICAgIGRvbmUKKwkgICAgICAgJHNob3cgIihjZCAkeGRpciAmJiAkQVIgeE4gJGkgJHhhYnMgJyRuYW1lJyAmJiAkbXYgJyRuYW1lJyAnJG5hbWVfdG8nKSIKKwkgICAgICAgJHJ1biBldmFsICIoY2QgXCR4ZGlyICYmICRBUiB4TiAkaSBcJHhhYnMgJyRuYW1lJyAmJiAkbXYgJyRuYW1lJyAnJG5hbWVfdG8nKSIgfHwgZXhpdCAkPworCSAgICAgICBpPWBleHByICRpICsgMWAKKwkgICAgICBkb25lCisJICAgIGRvbmUKKwkgIGZpCisKKwkgIG9sZG9ianM9IiRvbGRvYmpzICJgZmluZCAkeGRpciAtbmFtZSBcKi4ke29iamV4dH0gLXByaW50IC1vIC1uYW1lIFwqLmxvIC1wcmludCB8ICROTDJTUGAKKwlkb25lCisgICAgICBmaQorCisgICAgICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgYXJjaGl2ZSBjb21tYW5kcy4KKyAgICAgIGlmIHRlc3QgLW4gIiRvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzIiAmJiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllczsgdGhlbgorICAgICAgIGNtZHM9JG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMKKyAgICAgIGVsc2UKKwlldmFsIGNtZHM9XCIkb2xkX2FyY2hpdmVfY21kc1wiCisKKwlpZiBsZW49YGV4cHIgIlgkY21kcyIgOiAiLioiYCAmJgorCSAgICAgdGVzdCAiJGxlbiIgLWxlICIkbWF4X2NtZF9sZW4iIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB0aGVuCisJICBjbWRzPSRvbGRfYXJjaGl2ZV9jbWRzCisJZWxzZQorCSAgIyB0aGUgY29tbWFuZCBsaW5lIGlzIHRvbyBsb25nIHRvIGxpbmsgaW4gb25lIHN0ZXAsIGxpbmsgaW4gcGFydHMKKwkgICRlY2hvICJ1c2luZyBwaWVjZXdpc2UgYXJjaGl2ZSBsaW5raW5nLi4uIgorCSAgc2F2ZV9SQU5MSUI9JFJBTkxJQgorCSAgUkFOTElCPToKKwkgIG9iamxpc3Q9CisJICBjb25jYXRfY21kcz0KKwkgIHNhdmVfb2xkb2Jqcz0kb2xkb2JqcworCSAgIyBHTlUgYXIgMi4xMCsgd2FzIGNoYW5nZWQgdG8gbWF0Y2ggUE9TSVg7IHRodXMgbm8gcGF0aHMgYXJlCisJICAjIGVuY29kZWQgaW50byBhcmNoaXZlcy4gIFRoaXMgbWFrZXMgJ2FyIHInIG1hbGZ1bmN0aW9uIGluCisJICAjIHRoaXMgcGllY2V3aXNlIGxpbmtpbmcgY2FzZSB3aGVuZXZlciBjb25mbGljdGluZyBvYmplY3QKKwkgICMgbmFtZXMgYXBwZWFyIGluIGRpc3RpbmN0IGFyIGNhbGxzOyBjaGVjaywgd2FybiBhbmQgY29tcGVuc2F0ZS4KKwkgICAgaWYgKGZvciBvYmogaW4gJHNhdmVfb2xkb2JqcworCSAgICBkbworCSAgICAgICRlY2hvICJYJG9iaiIgfCAkWHNlZCAtZSAncyVeLiovJSUnCisJICAgIGRvbmUgfCBzb3J0IHwgc29ydCAtdWMgPi9kZXYvbnVsbCAyPiYxKTsgdGhlbgorCSAgICA6CisJICBlbHNlCisJICAgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IG9iamVjdCBuYW1lIGNvbmZsaWN0czsgb3ZlcnJpZGluZyBBUl9GTEFHUyB0byAnY3EnIiAxPiYyCisJICAgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IHRvIGVuc3VyZSB0aGF0IFBPU0lYLWNvbXBhdGlibGUgYXIgd2lsbCB3b3JrIiAxPiYyCisJICAgIEFSX0ZMQUdTPWNxCisJICBmaQorCSAgIyBJcyB0aGVyZSBhIGJldHRlciB3YXkgb2YgZmluZGluZyB0aGUgbGFzdCBvYmplY3QgaW4gdGhlIGxpc3Q/CisJICBmb3Igb2JqIGluICRzYXZlX29sZG9ianMKKwkgIGRvCisJICAgIGxhc3Rfb2xkb2JqPSRvYmoKKwkgIGRvbmUKKwkgIGZvciBvYmogaW4gJHNhdmVfb2xkb2JqcworCSAgZG8KKwkgICAgb2xkb2Jqcz0iJG9iamxpc3QgJG9iaiIKKwkgICAgb2JqbGlzdD0iJG9iamxpc3QgJG9iaiIKKwkgICAgZXZhbCB0ZXN0X2NtZHM9XCIkb2xkX2FyY2hpdmVfY21kc1wiCisJICAgIGlmIGxlbj1gZXhwciAiWCR0ZXN0X2NtZHMiIDogIi4qImAgJiYKKwkgICAgICAgdGVzdCAiJGxlbiIgLWxlICIkbWF4X2NtZF9sZW4iOyB0aGVuCisJICAgICAgOgorCSAgICBlbHNlCisJICAgICAgIyB0aGUgYWJvdmUgY29tbWFuZCBzaG91bGQgYmUgdXNlZCBiZWZvcmUgaXQgZ2V0cyB0b28gbG9uZworCSAgICAgIG9sZG9ianM9JG9iamxpc3QKKwkgICAgICBpZiB0ZXN0ICIkb2JqIiA9ICIkbGFzdF9vbGRvYmoiIDsgdGhlbgorCSAgICAgICAgUkFOTElCPSRzYXZlX1JBTkxJQgorCSAgICAgIGZpCisJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+CisJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRvbGRfYXJjaGl2ZV9jbWRzXCIKKwkgICAgICBvYmpsaXN0PQorCSAgICBmaQorCSAgZG9uZQorCSAgUkFOTElCPSRzYXZlX1JBTkxJQgorCSAgb2xkb2Jqcz0kb2JqbGlzdAorCSAgaWYgdGVzdCAiWCRvbGRvYmpzIiA9ICJYIiA7IHRoZW4KKwkgICAgZXZhbCBjbWRzPVwiXCRjb25jYXRfY21kc1wiCisJICBlbHNlCisJICAgIGV2YWwgY21kcz1cIlwkY29uY2F0X2NtZHN+XCRvbGRfYXJjaGl2ZV9jbWRzXCIKKwkgIGZpCisJZmkKKyAgICAgIGZpCisgICAgICBzYXZlX2lmcz0iJElGUyI7IElGUz0nficKKyAgICAgIGZvciBjbWQgaW4gJGNtZHM7IGRvCisgICAgICAgIGV2YWwgY21kPVwiJGNtZFwiCisJSUZTPSIkc2F2ZV9pZnMiCisJJHNob3cgIiRjbWQiCisJJHJ1biBldmFsICIkY21kIiB8fCBleGl0ICQ/CisgICAgICBkb25lCisgICAgICBJRlM9IiRzYXZlX2lmcyIKKyAgICBkb25lCisKKyAgICBpZiB0ZXN0IC1uICIkZ2VuZXJhdGVkIjsgdGhlbgorICAgICAgJHNob3cgIiR7cm19ciRnZW5lcmF0ZWQiCisgICAgICAkcnVuICR7cm19ciRnZW5lcmF0ZWQKKyAgICBmaQorCisgICAgIyBOb3cgY3JlYXRlIHRoZSBsaWJ0b29sIGFyY2hpdmUuCisgICAgY2FzZSAkb3V0cHV0IGluCisgICAgKi5sYSkKKyAgICAgIG9sZF9saWJyYXJ5PQorICAgICAgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllcyAmJiBvbGRfbGlicmFyeT0iJGxpYm5hbWUuJGxpYmV4dCIKKyAgICAgICRzaG93ICJjcmVhdGluZyAkb3V0cHV0IgorCisgICAgICAjIFByZXNlcnZlIGFueSB2YXJpYWJsZXMgdGhhdCBtYXkgYWZmZWN0IGNvbXBpbGVyIGJlaGF2aW9yCisgICAgICBmb3IgdmFyIGluICR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluazsgZG8KKwlpZiBldmFsIHRlc3QgLXogXCJcJHskdmFyK3NldH1cIjsgdGhlbgorCSAgcmVsaW5rX2NvbW1hbmQ9InsgdGVzdCAteiBcIlwkeyR2YXIrc2V0fVwiIHx8IHVuc2V0ICR2YXIgfHwgeyAkdmFyPTsgZXhwb3J0ICR2YXI7IH07IH07ICRyZWxpbmtfY29tbWFuZCIKKwllbGlmIGV2YWwgdmFyX3ZhbHVlPVwkJHZhcjsgdGVzdCAteiAiJHZhcl92YWx1ZSI7IHRoZW4KKwkgIHJlbGlua19jb21tYW5kPSIkdmFyPTsgZXhwb3J0ICR2YXI7ICRyZWxpbmtfY29tbWFuZCIKKwllbHNlCisJICB2YXJfdmFsdWU9YCRlY2hvICJYJHZhcl92YWx1ZSIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisJICByZWxpbmtfY29tbWFuZD0iJHZhcj1cIiR2YXJfdmFsdWVcIjsgZXhwb3J0ICR2YXI7ICRyZWxpbmtfY29tbWFuZCIKKwlmaQorICAgICAgZG9uZQorICAgICAgIyBRdW90ZSB0aGUgbGluayBjb21tYW5kIGZvciBzaGlwcGluZy4KKyAgICAgIHJlbGlua19jb21tYW5kPSIoY2QgYHB3ZGA7ICRTSEVMTCAkcHJvZ3BhdGggJHByZXNlcnZlX2FyZ3MgLS1tb2RlPXJlbGluayAkbGlidG9vbF9hcmdzIEBpbnN0X3ByZWZpeF9kaXJAKSIKKyAgICAgIHJlbGlua19jb21tYW5kPWAkZWNobyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisgICAgICBpZiB0ZXN0ICIkaGFyZGNvZGVfYXV0b21hdGljIiA9IHllcyA7IHRoZW4KKwlyZWxpbmtfY29tbWFuZD0KKyAgICAgIGZpCisKKworICAgICAgIyBPbmx5IGNyZWF0ZSB0aGUgb3V0cHV0IGlmIG5vdCBhIGRyeSBydW4uCisgICAgICBpZiB0ZXN0IC16ICIkcnVuIjsgdGhlbgorCWZvciBpbnN0YWxsZWQgaW4gbm8geWVzOyBkbworCSAgaWYgdGVzdCAiJGluc3RhbGxlZCIgPSB5ZXM7IHRoZW4KKwkgICAgaWYgdGVzdCAteiAiJGluc3RhbGxfbGliZGlyIjsgdGhlbgorCSAgICAgIGJyZWFrCisJICAgIGZpCisJICAgIG91dHB1dD0iJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUiaQorCSAgICAjIFJlcGxhY2UgYWxsIHVuaW5zdGFsbGVkIGxpYnRvb2wgbGlicmFyaWVzIHdpdGggdGhlIGluc3RhbGxlZCBvbmVzCisJICAgIG5ld2RlcGVuZGVuY3lfbGlicz0KKwkgICAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbworCSAgICAgIGNhc2UgJGRlcGxpYiBpbgorCSAgICAgICoubGEpCisJCW5hbWU9YCRlY2hvICJYJGRlcGxpYiIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAorCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZGVwbGliYAorCQlpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgorCQkgICRlY2hvICIkbW9kZW5hbWU6IFxgJGRlcGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIiAxPiYyCisJCSAgZXhpdCAkRVhJVF9GQUlMVVJFCisJCWZpCisJCW5ld2RlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyAkbGliZGlyLyRuYW1lIgorCQk7OworCSAgICAgICopIG5ld2RlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyAkZGVwbGliIiA7OworCSAgICAgIGVzYWMKKwkgICAgZG9uZQorCSAgICBkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMiCisJICAgIG5ld2RsZmlsZXM9CisJICAgIGZvciBsaWIgaW4gJGRsZmlsZXM7IGRvCisJICAgICAgbmFtZT1gJGVjaG8gIlgkbGliIiB8ICRYc2VkIC1lICdzJV4uKi8lJSdgCisJICAgICAgZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGxpYmAKKwkgICAgICBpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgorCQkkZWNobyAiJG1vZGVuYW1lOiBcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIgMT4mMgorCQlleGl0ICRFWElUX0ZBSUxVUkUKKwkgICAgICBmaQorCSAgICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWJkaXIvJG5hbWUiCisJICAgIGRvbmUKKwkgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCisJICAgIG5ld2RscHJlZmlsZXM9CisJICAgIGZvciBsaWIgaW4gJGRscHJlZmlsZXM7IGRvCisJICAgICAgbmFtZT1gJGVjaG8gIlgkbGliIiB8ICRYc2VkIC1lICdzJV4uKi8lJSdgCisJICAgICAgZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGxpYmAKKwkgICAgICBpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgorCQkkZWNobyAiJG1vZGVuYW1lOiBcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIgMT4mMgorCQlleGl0ICRFWElUX0ZBSUxVUkUKKwkgICAgICBmaQorCSAgICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRsaWJkaXIvJG5hbWUiCisJICAgIGRvbmUKKwkgICAgZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMiCisJICBlbHNlCisJICAgIG5ld2RsZmlsZXM9CisJICAgIGZvciBsaWIgaW4gJGRsZmlsZXM7IGRvCisJICAgICAgY2FzZSAkbGliIGluCisJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzPSIkbGliIiA7OworCQkqKSBhYnM9YHB3ZGAiLyRsaWIiIDs7CisJICAgICAgZXNhYworCSAgICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRhYnMiCisJICAgIGRvbmUKKwkgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCisJICAgIG5ld2RscHJlZmlsZXM9CisJICAgIGZvciBsaWIgaW4gJGRscHJlZmlsZXM7IGRvCisJICAgICAgY2FzZSAkbGliIGluCisJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzPSIkbGliIiA7OworCQkqKSBhYnM9YHB3ZGAiLyRsaWIiIDs7CisJICAgICAgZXNhYworCSAgICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRhYnMiCisJICAgIGRvbmUKKwkgICAgZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMiCisJICBmaQorCSAgJHJtICRvdXRwdXQKKwkgICMgcGxhY2UgZGxuYW1lIGluIGNvcnJlY3QgcG9zaXRpb24gZm9yIGN5Z3dpbgorCSAgdGRsbmFtZT0kZGxuYW1lCisJICBjYXNlICRob3N0LCRvdXRwdXQsJGluc3RhbGxlZCwkbW9kdWxlLCRkbG5hbWUgaW4KKwkgICAgKmN5Z3dpbiosKmxhaSx5ZXMsbm8sKi5kbGwgfCAqbWluZ3cqLCpsYWkseWVzLG5vLCouZGxsKSB0ZGxuYW1lPS4uL2Jpbi8kZGxuYW1lIDs7CisJICBlc2FjCisJICAkZWNobyA+ICRvdXRwdXQgIlwKKyMgJG91dHB1dG5hbWUgLSBhIGxpYnRvb2wgbGlicmFyeSBmaWxlCisjIEdlbmVyYXRlZCBieSAkUFJPR1JBTSAtIEdOVSAkUEFDS0FHRSAkVkVSU0lPTiRUSU1FU1RBTVAKKyMKKyMgUGxlYXNlIERPIE5PVCBkZWxldGUgdGhpcyBmaWxlIQorIyBJdCBpcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgdGhlIGxpYnJhcnkuCisKKyMgVGhlIG5hbWUgdGhhdCB3ZSBjYW4gZGxvcGVuKDMpLgorZGxuYW1lPSckdGRsbmFtZScKKworIyBOYW1lcyBvZiB0aGlzIGxpYnJhcnkuCitsaWJyYXJ5X25hbWVzPSckbGlicmFyeV9uYW1lcycKKworIyBUaGUgbmFtZSBvZiB0aGUgc3RhdGljIGFyY2hpdmUuCitvbGRfbGlicmFyeT0nJG9sZF9saWJyYXJ5JworCisjIExpYnJhcmllcyB0aGF0IHRoaXMgb25lIGRlcGVuZHMgdXBvbi4KK2RlcGVuZGVuY3lfbGlicz0nJGRlcGVuZGVuY3lfbGlicycKKworIyBWZXJzaW9uIGluZm9ybWF0aW9uIGZvciAkbGlibmFtZS4KK2N1cnJlbnQ9JGN1cnJlbnQKK2FnZT0kYWdlCityZXZpc2lvbj0kcmV2aXNpb24KKworIyBJcyB0aGlzIGFuIGFscmVhZHkgaW5zdGFsbGVkIGxpYnJhcnk/CitpbnN0YWxsZWQ9JGluc3RhbGxlZAorCisjIFNob3VsZCB3ZSB3YXJuIGFib3V0IHBvcnRhYmlsaXR5IHdoZW4gbGlua2luZyBhZ2FpbnN0IC1tb2R1bGVzPworc2hvdWxkbm90bGluaz0kbW9kdWxlCisKKyMgRmlsZXMgdG8gZGxvcGVuL2RscHJlb3BlbgorZGxvcGVuPSckZGxmaWxlcycKK2RscHJlb3Blbj0nJGRscHJlZmlsZXMnCisKKyMgRGlyZWN0b3J5IHRoYXQgdGhpcyBsaWJyYXJ5IG5lZWRzIHRvIGJlIGluc3RhbGxlZCBpbjoKK2xpYmRpcj0nJGluc3RhbGxfbGliZGlyJyIKKwkgIGlmIHRlc3QgIiRpbnN0YWxsZWQiID0gbm8gJiYgdGVzdCAiJG5lZWRfcmVsaW5rIiA9IHllczsgdGhlbgorCSAgICAkZWNobyA+PiAkb3V0cHV0ICJcCityZWxpbmtfY29tbWFuZD1cIiRyZWxpbmtfY29tbWFuZFwiIgorCSAgZmkKKwlkb25lCisgICAgICBmaQorCisgICAgICAjIERvIGEgc3ltYm9saWMgbGluayBzbyB0aGF0IHRoZSBsaWJ0b29sIGFyY2hpdmUgY2FuIGJlIGZvdW5kIGluCisgICAgICAjIExEX0xJQlJBUllfUEFUSCBiZWZvcmUgdGhlIHByb2dyYW0gaXMgaW5zdGFsbGVkLgorICAgICAgJHNob3cgIihjZCAkb3V0cHV0X29iamRpciAmJiAkcm0gJG91dHB1dG5hbWUgJiYgJExOX1MgLi4vJG91dHB1dG5hbWUgJG91dHB1dG5hbWUpIgorICAgICAgJHJ1biBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJHJtICRvdXRwdXRuYW1lICYmICRMTl9TIC4uLyRvdXRwdXRuYW1lICRvdXRwdXRuYW1lKScgfHwgZXhpdCAkPworICAgICAgOzsKKyAgICBlc2FjCisgICAgZXhpdCAkRVhJVF9TVUNDRVNTCisgICAgOzsKKworICAjIGxpYnRvb2wgaW5zdGFsbCBtb2RlCisgIGluc3RhbGwpCisgICAgbW9kZW5hbWU9IiRtb2RlbmFtZTogaW5zdGFsbCIKKworICAgICMgVGhlcmUgbWF5IGJlIGFuIG9wdGlvbmFsIHNoKDEpIGFyZ3VtZW50IGF0IHRoZSBiZWdpbm5pbmcgb2YKKyAgICAjIGluc3RhbGxfcHJvZyAoZXNwZWNpYWxseSBvbiBXaW5kb3dzIE5UKS4KKyAgICBpZiB0ZXN0ICIkbm9ub3B0IiA9ICIkU0hFTEwiIHx8IHRlc3QgIiRub25vcHQiID0gL2Jpbi9zaCB8fAorICAgICAgICMgQWxsb3cgdGhlIHVzZSBvZiBHTlUgc2h0b29sJ3MgaW5zdGFsbCBjb21tYW5kLgorICAgICAgICRlY2hvICJYJG5vbm9wdCIgfCAkWHNlZCB8IGdyZXAgc2h0b29sID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgaXQuCisgICAgICBhcmc9YCRlY2hvICJYJG5vbm9wdCIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisgICAgICBjYXNlICRhcmcgaW4KKyAgICAgICpbXFtcflwjXF5cJlwqXChcKVx7XH1cfFw7XDxcPlw/XCdcIFwJXSp8Kl0qKQorCWFyZz0iXCIkYXJnXCIiCisJOzsKKyAgICAgIGVzYWMKKyAgICAgIGluc3RhbGxfcHJvZz0iJGFyZyAiCisgICAgICBhcmc9IiQxIgorICAgICAgc2hpZnQKKyAgICBlbHNlCisgICAgICBpbnN0YWxsX3Byb2c9CisgICAgICBhcmc9IiRub25vcHQiCisgICAgZmkKKworICAgICMgVGhlIHJlYWwgZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSBpbnN0YWxsYXRpb24gcHJvZ3JhbS4KKyAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgaXQuCisgICAgYXJnPWAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorICAgIGNhc2UgJGFyZyBpbgorICAgICpbXFtcflwjXF5cJlwqXChcKVx7XH1cfFw7XDxcPlw/XCdcIFwJXSp8Kl0qKQorICAgICAgYXJnPSJcIiRhcmdcIiIKKyAgICAgIDs7CisgICAgZXNhYworICAgIGluc3RhbGxfcHJvZz0iJGluc3RhbGxfcHJvZyRhcmciCisKKyAgICAjIFdlIG5lZWQgdG8gYWNjZXB0IGF0IGxlYXN0IGFsbCB0aGUgQlNEIGluc3RhbGwgZmxhZ3MuCisgICAgZGVzdD0KKyAgICBmaWxlcz0KKyAgICBvcHRzPQorICAgIHByZXY9CisgICAgaW5zdGFsbF90eXBlPQorICAgIGlzZGlyPW5vCisgICAgc3RyaXBtZT0KKyAgICBmb3IgYXJnCisgICAgZG8KKyAgICAgIGlmIHRlc3QgLW4gIiRkZXN0IjsgdGhlbgorCWZpbGVzPSIkZmlsZXMgJGRlc3QiCisJZGVzdD0iJGFyZyIKKwljb250aW51ZQorICAgICAgZmkKKworICAgICAgY2FzZSAkYXJnIGluCisgICAgICAtZCkgaXNkaXI9eWVzIDs7CisgICAgICAtZikgcHJldj0iLWYiIDs7CisgICAgICAtZykgcHJldj0iLWciIDs7CisgICAgICAtbSkgcHJldj0iLW0iIDs7CisgICAgICAtbykgcHJldj0iLW8iIDs7CisgICAgICAtcykKKwlzdHJpcG1lPSIgLXMiCisJY29udGludWUKKwk7OworICAgICAgLSopIDs7CisKKyAgICAgICopCisJIyBJZiB0aGUgcHJldmlvdXMgb3B0aW9uIG5lZWRlZCBhbiBhcmd1bWVudCwgdGhlbiBza2lwIGl0LgorCWlmIHRlc3QgLW4gIiRwcmV2IjsgdGhlbgorCSAgcHJldj0KKwllbHNlCisJICBkZXN0PSIkYXJnIgorCSAgY29udGludWUKKwlmaQorCTs7CisgICAgICBlc2FjCisKKyAgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSB0aGUgYXJndW1lbnQuCisgICAgICBhcmc9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisgICAgICBjYXNlICRhcmcgaW4KKyAgICAgICpbXFtcflwjXF5cJlwqXChcKVx7XH1cfFw7XDxcPlw/XCdcIFwJXSp8Kl0qKQorCWFyZz0iXCIkYXJnXCIiCisJOzsKKyAgICAgIGVzYWMKKyAgICAgIGluc3RhbGxfcHJvZz0iJGluc3RhbGxfcHJvZyAkYXJnIgorICAgIGRvbmUKKworICAgIGlmIHRlc3QgLXogIiRpbnN0YWxsX3Byb2ciOyB0aGVuCisgICAgICAkZWNobyAiJG1vZGVuYW1lOiB5b3UgbXVzdCBzcGVjaWZ5IGFuIGluc3RhbGwgcHJvZ3JhbSIgMT4mMgorICAgICAgJGVjaG8gIiRoZWxwIiAxPiYyCisgICAgICBleGl0ICRFWElUX0ZBSUxVUkUKKyAgICBmaQorCisgICAgaWYgdGVzdCAtbiAiJHByZXYiOyB0aGVuCisgICAgICAkZWNobyAiJG1vZGVuYW1lOiB0aGUgXGAkcHJldicgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IiAxPiYyCisgICAgICAkZWNobyAiJGhlbHAiIDE+JjIKKyAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorICAgIGZpCisKKyAgICBpZiB0ZXN0IC16ICIkZmlsZXMiOyB0aGVuCisgICAgICBpZiB0ZXN0IC16ICIkZGVzdCI7IHRoZW4KKwkkZWNobyAiJG1vZGVuYW1lOiBubyBmaWxlIG9yIGRlc3RpbmF0aW9uIHNwZWNpZmllZCIgMT4mMgorICAgICAgZWxzZQorCSRlY2hvICIkbW9kZW5hbWU6IHlvdSBtdXN0IHNwZWNpZnkgYSBkZXN0aW5hdGlvbiIgMT4mMgorICAgICAgZmkKKyAgICAgICRlY2hvICIkaGVscCIgMT4mMgorICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisgICAgZmkKKworICAgICMgU3RyaXAgYW55IHRyYWlsaW5nIHNsYXNoIGZyb20gdGhlIGRlc3RpbmF0aW9uLgorICAgIGRlc3Q9YCRlY2hvICJYJGRlc3QiIHwgJFhzZWQgLWUgJ3MlLyQlJSdgCisKKyAgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBkZXN0aW5hdGlvbiBpcyBhIGRpcmVjdG9yeS4KKyAgICB0ZXN0IC1kICIkZGVzdCIgJiYgaXNkaXI9eWVzCisgICAgaWYgdGVzdCAiJGlzZGlyIiA9IHllczsgdGhlbgorICAgICAgZGVzdGRpcj0iJGRlc3QiCisgICAgICBkZXN0bmFtZT0KKyAgICBlbHNlCisgICAgICBkZXN0ZGlyPWAkZWNobyAiWCRkZXN0IiB8ICRYc2VkIC1lICdzJS9bXi9dKiQlJSdgCisgICAgICB0ZXN0ICJYJGRlc3RkaXIiID0gIlgkZGVzdCIgJiYgZGVzdGRpcj0uCisgICAgICBkZXN0bmFtZT1gJGVjaG8gIlgkZGVzdCIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAorCisgICAgICAjIE5vdCBhIGRpcmVjdG9yeSwgc28gY2hlY2sgdG8gc2VlIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgZmlsZSBzcGVjaWZpZWQuCisgICAgICBzZXQgZHVtbXkgJGZpbGVzCisgICAgICBpZiB0ZXN0ICIkIyIgLWd0IDI7IHRoZW4KKwkkZWNobyAiJG1vZGVuYW1lOiBcYCRkZXN0JyBpcyBub3QgYSBkaXJlY3RvcnkiIDE+JjIKKwkkZWNobyAiJGhlbHAiIDE+JjIKKwlleGl0ICRFWElUX0ZBSUxVUkUKKyAgICAgIGZpCisgICAgZmkKKyAgICBjYXNlICRkZXN0ZGlyIGluCisgICAgW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSA7OworICAgICopCisgICAgICBmb3IgZmlsZSBpbiAkZmlsZXM7IGRvCisJY2FzZSAkZmlsZSBpbgorCSoubG8pIDs7CisJKikKKwkgICRlY2hvICIkbW9kZW5hbWU6IFxgJGRlc3RkaXInIG11c3QgYmUgYW4gYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUiIDE+JjIKKwkgICRlY2hvICIkaGVscCIgMT4mMgorCSAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICA7OworCWVzYWMKKyAgICAgIGRvbmUKKyAgICAgIDs7CisgICAgZXNhYworCisgICAgIyBUaGlzIHZhcmlhYmxlIHRlbGxzIHdyYXBwZXIgc2NyaXB0cyBqdXN0IHRvIHNldCB2YXJpYWJsZXMgcmF0aGVyCisgICAgIyB0aGFuIHJ1bm5pbmcgdGhlaXIgcHJvZ3JhbXMuCisgICAgbGlidG9vbF9pbnN0YWxsX21hZ2ljPSIkbWFnaWMiCisKKyAgICBzdGF0aWNsaWJzPQorICAgIGZ1dHVyZV9saWJkaXJzPQorICAgIGN1cnJlbnRfbGliZGlycz0KKyAgICBmb3IgZmlsZSBpbiAkZmlsZXM7IGRvCisKKyAgICAgICMgRG8gZWFjaCBpbnN0YWxsYXRpb24uCisgICAgICBjYXNlICRmaWxlIGluCisgICAgICAqLiRsaWJleHQpCisJIyBEbyB0aGUgc3RhdGljIGxpYnJhcmllcyBsYXRlci4KKwlzdGF0aWNsaWJzPSIkc3RhdGljbGlicyAkZmlsZSIKKwk7OworCisgICAgICAqLmxhKQorCSMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhpcyByZWFsbHkgaXMgYSBsaWJ0b29sIGFyY2hpdmUuCisJaWYgKCR7U0VEfSAtZSAnMnEnICRmaWxlIHwgZ3JlcCAiXiMgR2VuZXJhdGVkIGJ5IC4qJFBBQ0tBR0UiKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorCWVsc2UKKwkgICRlY2hvICIkbW9kZW5hbWU6IFxgJGZpbGUnIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIgMT4mMgorCSAgJGVjaG8gIiRoZWxwIiAxPiYyCisJICBleGl0ICRFWElUX0ZBSUxVUkUKKwlmaQorCisJbGlicmFyeV9uYW1lcz0KKwlvbGRfbGlicmFyeT0KKwlyZWxpbmtfY29tbWFuZD0KKwkjIElmIHRoZXJlIGlzIG5vIGRpcmVjdG9yeSBjb21wb25lbnQsIHRoZW4gYWRkIG9uZS4KKwljYXNlICRmaWxlIGluCisJKi8qIHwgKlxcKikgLiAkZmlsZSA7OworCSopIC4gLi8kZmlsZSA7OworCWVzYWMKKworCSMgQWRkIHRoZSBsaWJkaXIgdG8gY3VycmVudF9saWJkaXJzIGlmIGl0IGlzIHRoZSBkZXN0aW5hdGlvbi4KKwlpZiB0ZXN0ICJYJGRlc3RkaXIiID0gIlgkbGliZGlyIjsgdGhlbgorCSAgY2FzZSAiJGN1cnJlbnRfbGliZGlycyAiIGluCisJICAqIiAkbGliZGlyICIqKSA7OworCSAgKikgY3VycmVudF9saWJkaXJzPSIkY3VycmVudF9saWJkaXJzICRsaWJkaXIiIDs7CisJICBlc2FjCisJZWxzZQorCSAgIyBOb3RlIHRoZSBsaWJkaXIgYXMgYSBmdXR1cmUgbGliZGlyLgorCSAgY2FzZSAiJGZ1dHVyZV9saWJkaXJzICIgaW4KKwkgICoiICRsaWJkaXIgIiopIDs7CisJICAqKSBmdXR1cmVfbGliZGlycz0iJGZ1dHVyZV9saWJkaXJzICRsaWJkaXIiIDs7CisJICBlc2FjCisJZmkKKworCWRpcj1gJGVjaG8gIlgkZmlsZSIgfCAkWHNlZCAtZSAncyUvW14vXSokJSUnYC8KKwl0ZXN0ICJYJGRpciIgPSAiWCRmaWxlLyIgJiYgZGlyPQorCWRpcj0iJGRpciRvYmpkaXIiCisKKwlpZiB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCisJICAjIERldGVybWluZSB0aGUgcHJlZml4IHRoZSB1c2VyIGhhcyBhcHBsaWVkIHRvIG91ciBmdXR1cmUgZGlyLgorCSAgaW5zdF9wcmVmaXhfZGlyPWAkZWNobyAiJGRlc3RkaXIiIHwgJFNFRCAicyUkbGliZGlyXCQlJSJgCisKKwkgICMgRG9uJ3QgYWxsb3cgdGhlIHVzZXIgdG8gcGxhY2UgdXMgb3V0c2lkZSBvZiBvdXIgZXhwZWN0ZWQKKwkgICMgbG9jYXRpb24gYi9jIHRoaXMgcHJldmVudHMgZmluZGluZyBkZXBlbmRlbnQgbGlicmFyaWVzIHRoYXQKKwkgICMgYXJlIGluc3RhbGxlZCB0byB0aGUgc2FtZSBwcmVmaXguCisJICAjIEF0IHByZXNlbnQsIHRoaXMgY2hlY2sgZG9lc24ndCBhZmZlY3Qgd2luZG93cyAuZGxsJ3MgdGhhdAorCSAgIyBhcmUgaW5zdGFsbGVkIGludG8gJGxpYmRpci8uLi9iaW4gKGN1cnJlbnRseSwgdGhhdCB3b3JrcyBmaW5lKQorCSAgIyBidXQgaXQncyBzb21ldGhpbmcgdG8ga2VlcCBhbiBleWUgb24uCisJICBpZiB0ZXN0ICIkaW5zdF9wcmVmaXhfZGlyIiA9ICIkZGVzdGRpciI7IHRoZW4KKwkgICAgJGVjaG8gIiRtb2RlbmFtZTogZXJyb3I6IGNhbm5vdCBpbnN0YWxsIFxgJGZpbGUnIHRvIGEgZGlyZWN0b3J5IG5vdCBlbmRpbmcgaW4gJGxpYmRpciIgMT4mMgorCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgIGZpCisKKwkgIGlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCisJICAgICMgU3RpY2sgdGhlIGluc3RfcHJlZml4X2RpciBkYXRhIGludG8gdGhlIGxpbmsgY29tbWFuZC4KKwkgICAgcmVsaW5rX2NvbW1hbmQ9YCRlY2hvICIkcmVsaW5rX2NvbW1hbmQiIHwgJFNFRCAicyVAaW5zdF9wcmVmaXhfZGlyQCUtaW5zdC1wcmVmaXgtZGlyICRpbnN0X3ByZWZpeF9kaXIlImAKKwkgIGVsc2UKKwkgICAgcmVsaW5rX2NvbW1hbmQ9YCRlY2hvICIkcmVsaW5rX2NvbW1hbmQiIHwgJFNFRCAicyVAaW5zdF9wcmVmaXhfZGlyQCUlImAKKwkgIGZpCisKKwkgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IHJlbGlua2luZyBcYCRmaWxlJyIgMT4mMgorCSAgJHNob3cgIiRyZWxpbmtfY29tbWFuZCIKKwkgIGlmICRydW4gZXZhbCAiJHJlbGlua19jb21tYW5kIjsgdGhlbiA6CisJICBlbHNlCisJICAgICRlY2hvICIkbW9kZW5hbWU6IGVycm9yOiByZWxpbmsgXGAkZmlsZScgd2l0aCB0aGUgYWJvdmUgY29tbWFuZCBiZWZvcmUgaW5zdGFsbGluZyBpdCIgMT4mMgorCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgIGZpCisJZmkKKworCSMgU2VlIHRoZSBuYW1lcyBvZiB0aGUgc2hhcmVkIGxpYnJhcnkuCisJc2V0IGR1bW15ICRsaWJyYXJ5X25hbWVzCisJaWYgdGVzdCAtbiAiJDIiOyB0aGVuCisJICByZWFsbmFtZT0iJDIiCisJICBzaGlmdAorCSAgc2hpZnQKKworCSAgc3JjbmFtZT0iJHJlYWxuYW1lIgorCSAgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIiAmJiBzcmNuYW1lPSIkcmVhbG5hbWUiVAorCisJICAjIEluc3RhbGwgdGhlIHNoYXJlZCBsaWJyYXJ5IGFuZCBidWlsZCB0aGUgc3ltbGlua3MuCisJICAkc2hvdyAiJGluc3RhbGxfcHJvZyAkZGlyLyRzcmNuYW1lICRkZXN0ZGlyLyRyZWFsbmFtZSIKKwkgICRydW4gZXZhbCAiJGluc3RhbGxfcHJvZyAkZGlyLyRzcmNuYW1lICRkZXN0ZGlyLyRyZWFsbmFtZSIgfHwgZXhpdCAkPworCSAgaWYgdGVzdCAtbiAiJHN0cmlwbWUiICYmIHRlc3QgLW4gIiRzdHJpcGxpYiI7IHRoZW4KKwkgICAgJHNob3cgIiRzdHJpcGxpYiAkZGVzdGRpci8kcmVhbG5hbWUiCisJICAgICRydW4gZXZhbCAiJHN0cmlwbGliICRkZXN0ZGlyLyRyZWFsbmFtZSIgfHwgZXhpdCAkPworCSAgZmkKKworCSAgaWYgdGVzdCAiJCMiIC1ndCAwOyB0aGVuCisJICAgICMgRGVsZXRlIHRoZSBvbGQgc3ltbGlua3MsIGFuZCBjcmVhdGUgbmV3IG9uZXMuCisJICAgIGZvciBsaW5rbmFtZQorCSAgICBkbworCSAgICAgIGlmIHRlc3QgIiRsaW5rbmFtZSIgIT0gIiRyZWFsbmFtZSI7IHRoZW4KKwkJJHNob3cgIihjZCAkZGVzdGRpciAmJiAkcm0gJGxpbmtuYW1lICYmICRMTl9TICRyZWFsbmFtZSAkbGlua25hbWUpIgorCQkkcnVuIGV2YWwgIihjZCAkZGVzdGRpciAmJiAkcm0gJGxpbmtuYW1lICYmICRMTl9TICRyZWFsbmFtZSAkbGlua25hbWUpIgorCSAgICAgIGZpCisJICAgIGRvbmUKKwkgIGZpCisKKwkgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBwb3N0aW5zdGFsbCBjb21tYW5kcy4KKwkgIGxpYj0iJGRlc3RkaXIvJHJlYWxuYW1lIgorCSAgY21kcz0kcG9zdGluc3RhbGxfY21kcworCSAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCisJICBmb3IgY21kIGluICRjbWRzOyBkbworCSAgICBJRlM9IiRzYXZlX2lmcyIKKwkgICAgZXZhbCBjbWQ9XCIkY21kXCIKKwkgICAgJHNob3cgIiRjbWQiCisJICAgICRydW4gZXZhbCAiJGNtZCIgfHwgZXhpdCAkPworCSAgZG9uZQorCSAgSUZTPSIkc2F2ZV9pZnMiCisJZmkKKworCSMgSW5zdGFsbCB0aGUgcHNldWRvLWxpYnJhcnkgZm9yIGluZm9ybWF0aW9uIHB1cnBvc2VzLgorCW5hbWU9YCRlY2hvICJYJGZpbGUiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKKwlpbnN0bmFtZT0iJGRpci8kbmFtZSJpCisJJHNob3cgIiRpbnN0YWxsX3Byb2cgJGluc3RuYW1lICRkZXN0ZGlyLyRuYW1lIgorCSRydW4gZXZhbCAiJGluc3RhbGxfcHJvZyAkaW5zdG5hbWUgJGRlc3RkaXIvJG5hbWUiIHx8IGV4aXQgJD8KKworCSMgTWF5YmUgaW5zdGFsbCB0aGUgc3RhdGljIGxpYnJhcnksIHRvby4KKwl0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIHN0YXRpY2xpYnM9IiRzdGF0aWNsaWJzICRkaXIvJG9sZF9saWJyYXJ5IgorCTs7CisKKyAgICAgICoubG8pCisJIyBJbnN0YWxsIChpLmUuIGNvcHkpIGEgbGlidG9vbCBvYmplY3QuCisKKwkjIEZpZ3VyZSBvdXQgZGVzdGluYXRpb24gZmlsZSBuYW1lLCBpZiBpdCB3YXNuJ3QgYWxyZWFkeSBzcGVjaWZpZWQuCisJaWYgdGVzdCAtbiAiJGRlc3RuYW1lIjsgdGhlbgorCSAgZGVzdGZpbGU9IiRkZXN0ZGlyLyRkZXN0bmFtZSIKKwllbHNlCisJICBkZXN0ZmlsZT1gJGVjaG8gIlgkZmlsZSIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAorCSAgZGVzdGZpbGU9IiRkZXN0ZGlyLyRkZXN0ZmlsZSIKKwlmaQorCisJIyBEZWR1Y2UgdGhlIG5hbWUgb2YgdGhlIGRlc3RpbmF0aW9uIG9sZC1zdHlsZSBvYmplY3QgZmlsZS4KKwljYXNlICRkZXN0ZmlsZSBpbgorCSoubG8pCisJICBzdGF0aWNkZXN0PWAkZWNobyAiWCRkZXN0ZmlsZSIgfCAkWHNlZCAtZSAiJGxvMm8iYAorCSAgOzsKKwkqLiRvYmpleHQpCisJICBzdGF0aWNkZXN0PSIkZGVzdGZpbGUiCisJICBkZXN0ZmlsZT0KKwkgIDs7CisJKikKKwkgICRlY2hvICIkbW9kZW5hbWU6IGNhbm5vdCBjb3B5IGEgbGlidG9vbCBvYmplY3QgdG8gXGAkZGVzdGZpbGUnIiAxPiYyCisJICAkZWNobyAiJGhlbHAiIDE+JjIKKwkgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgOzsKKwllc2FjCisKKwkjIEluc3RhbGwgdGhlIGxpYnRvb2wgb2JqZWN0IGlmIHJlcXVlc3RlZC4KKwlpZiB0ZXN0IC1uICIkZGVzdGZpbGUiOyB0aGVuCisJICAkc2hvdyAiJGluc3RhbGxfcHJvZyAkZmlsZSAkZGVzdGZpbGUiCisJICAkcnVuIGV2YWwgIiRpbnN0YWxsX3Byb2cgJGZpbGUgJGRlc3RmaWxlIiB8fCBleGl0ICQ/CisJZmkKKworCSMgSW5zdGFsbCB0aGUgb2xkIG9iamVjdCBpZiBlbmFibGVkLgorCWlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KKwkgICMgRGVkdWNlIHRoZSBuYW1lIG9mIHRoZSBvbGQtc3R5bGUgb2JqZWN0IGZpbGUuCisJICBzdGF0aWNvYmo9YCRlY2hvICJYJGZpbGUiIHwgJFhzZWQgLWUgIiRsbzJvImAKKworCSAgJHNob3cgIiRpbnN0YWxsX3Byb2cgJHN0YXRpY29iaiAkc3RhdGljZGVzdCIKKwkgICRydW4gZXZhbCAiJGluc3RhbGxfcHJvZyBcJHN0YXRpY29iaiBcJHN0YXRpY2Rlc3QiIHx8IGV4aXQgJD8KKwlmaQorCWV4aXQgJEVYSVRfU1VDQ0VTUworCTs7CisKKyAgICAgICopCisJIyBGaWd1cmUgb3V0IGRlc3RpbmF0aW9uIGZpbGUgbmFtZSwgaWYgaXQgd2Fzbid0IGFscmVhZHkgc3BlY2lmaWVkLgorCWlmIHRlc3QgLW4gIiRkZXN0bmFtZSI7IHRoZW4KKwkgIGRlc3RmaWxlPSIkZGVzdGRpci8kZGVzdG5hbWUiCisJZWxzZQorCSAgZGVzdGZpbGU9YCRlY2hvICJYJGZpbGUiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKKwkgIGRlc3RmaWxlPSIkZGVzdGRpci8kZGVzdGZpbGUiCisJZmkKKworCSMgSWYgdGhlIGZpbGUgaXMgbWlzc2luZywgYW5kIHRoZXJlIGlzIGEgLmV4ZSBvbiB0aGUgZW5kLCBzdHJpcCBpdAorCSMgYmVjYXVzZSBpdCBpcyBtb3N0IGxpa2VseSBhIGxpYnRvb2wgc2NyaXB0IHdlIGFjdHVhbGx5IHdhbnQgdG8KKwkjIGluc3RhbGwKKwlzdHJpcHBlZF9leHQ9IiIKKwljYXNlICRmaWxlIGluCisJICAqLmV4ZSkKKwkgICAgaWYgdGVzdCAhIC1mICIkZmlsZSI7IHRoZW4KKwkgICAgICBmaWxlPWAkZWNobyAkZmlsZXwke1NFRH0gJ3MsLmV4ZSQsLCdgCisJICAgICAgc3RyaXBwZWRfZXh0PSIuZXhlIgorCSAgICBmaQorCSAgICA7OworCWVzYWMKKworCSMgRG8gYSB0ZXN0IHRvIHNlZSBpZiB0aGlzIGlzIHJlYWxseSBhIGxpYnRvb2wgcHJvZ3JhbS4KKwljYXNlICRob3N0IGluCisJKmN5Z3dpbip8Km1pbmd3KikKKwkgICAgd3JhcHBlcj1gJGVjaG8gJGZpbGUgfCAke1NFRH0gLWUgJ3MsLmV4ZSQsLCdgCisJICAgIDs7CisJKikKKwkgICAgd3JhcHBlcj0kZmlsZQorCSAgICA7OworCWVzYWMKKwlpZiAoJHtTRUR9IC1lICc0cScgJHdyYXBwZXIgfCBncmVwICJeIyBHZW5lcmF0ZWQgYnkgLiokUEFDS0FHRSIpPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisJICBub3RpbnN0X2RlcGxpYnM9CisJICByZWxpbmtfY29tbWFuZD0KKworCSAgIyBUbyBpbnN1cmUgdGhhdCAiZm9vIiBpcyBzb3VyY2VkLCBhbmQgbm90ICJmb28uZXhlIiwKKwkgICMgZmluZXNlIHRoZSBjeWd3aW4vTVNZUyBzeXN0ZW0gYnkgZXhwbGljaXRseSBzb3VyY2luZyAiZm9vLiIKKwkgICMgd2hpY2ggZGlzYWxsb3dzIHRoZSBhdXRvbWF0aWMtYXBwZW5kLS5leGUgYmVoYXZpb3IuCisJICBjYXNlICRidWlsZCBpbgorCSAgKmN5Z3dpbiogfCAqbWluZ3cqKSB3cmFwcGVyZG90PSR7d3JhcHBlcn0uIDs7CisJICAqKSB3cmFwcGVyZG90PSR7d3JhcHBlcn0gOzsKKwkgIGVzYWMKKwkgICMgSWYgdGhlcmUgaXMgbm8gZGlyZWN0b3J5IGNvbXBvbmVudCwgdGhlbiBhZGQgb25lLgorCSAgY2FzZSAkZmlsZSBpbgorCSAgKi8qIHwgKlxcKikgLiAke3dyYXBwZXJkb3R9IDs7CisJICAqKSAuIC4vJHt3cmFwcGVyZG90fSA7OworCSAgZXNhYworCisJICAjIENoZWNrIHRoZSB2YXJpYWJsZXMgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIHNldC4KKwkgIGlmIHRlc3QgLXogIiRub3RpbnN0X2RlcGxpYnMiOyB0aGVuCisJICAgICRlY2hvICIkbW9kZW5hbWU6IGludmFsaWQgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCBcYCR3cmFwcGVyJyIgMT4mMgorCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgIGZpCisKKwkgIGZpbmFsaXplPXllcworCSAgZm9yIGxpYiBpbiAkbm90aW5zdF9kZXBsaWJzOyBkbworCSAgICAjIENoZWNrIHRvIHNlZSB0aGF0IGVhY2ggbGlicmFyeSBpcyBpbnN0YWxsZWQuCisJICAgIGxpYmRpcj0KKwkgICAgaWYgdGVzdCAtZiAiJGxpYiI7IHRoZW4KKwkgICAgICAjIElmIHRoZXJlIGlzIG5vIGRpcmVjdG9yeSBjb21wb25lbnQsIHRoZW4gYWRkIG9uZS4KKwkgICAgICBjYXNlICRsaWIgaW4KKwkgICAgICAqLyogfCAqXFwqKSAuICRsaWIgOzsKKwkgICAgICAqKSAuIC4vJGxpYiA7OworCSAgICAgIGVzYWMKKwkgICAgZmkKKwkgICAgbGliZmlsZT0iJGxpYmRpci8iYCRlY2hvICJYJGxpYiIgfCAkWHNlZCAtZSAncyVeLiovJSVnJ2AgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0CisJICAgIGlmIHRlc3QgLW4gIiRsaWJkaXIiICYmIHRlc3QgISAtZiAiJGxpYmZpbGUiOyB0aGVuCisJICAgICAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAkbGliJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIFxgJGxpYmRpciciIDE+JjIKKwkgICAgICBmaW5hbGl6ZT1ubworCSAgICBmaQorCSAgZG9uZQorCisJICByZWxpbmtfY29tbWFuZD0KKwkgICMgVG8gaW5zdXJlIHRoYXQgImZvbyIgaXMgc291cmNlZCwgYW5kIG5vdCAiZm9vLmV4ZSIsCisJICAjIGZpbmVzZSB0aGUgY3lnd2luL01TWVMgc3lzdGVtIGJ5IGV4cGxpY2l0bHkgc291cmNpbmcgImZvby4iCisJICAjIHdoaWNoIGRpc2FsbG93cyB0aGUgYXV0b21hdGljLWFwcGVuZC0uZXhlIGJlaGF2aW9yLgorCSAgY2FzZSAkYnVpbGQgaW4KKwkgICpjeWd3aW4qIHwgKm1pbmd3Kikgd3JhcHBlcmRvdD0ke3dyYXBwZXJ9LiA7OworCSAgKikgd3JhcHBlcmRvdD0ke3dyYXBwZXJ9IDs7CisJICBlc2FjCisJICAjIElmIHRoZXJlIGlzIG5vIGRpcmVjdG9yeSBjb21wb25lbnQsIHRoZW4gYWRkIG9uZS4KKwkgIGNhc2UgJGZpbGUgaW4KKwkgICovKiB8ICpcXCopIC4gJHt3cmFwcGVyZG90fSA7OworCSAgKikgLiAuLyR7d3JhcHBlcmRvdH0gOzsKKwkgIGVzYWMKKworCSAgb3V0cHV0bmFtZT0KKwkgIGlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0gbm8gJiYgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIjsgdGhlbgorCSAgICBpZiB0ZXN0ICIkZmluYWxpemUiID0geWVzICYmIHRlc3QgLXogIiRydW4iOyB0aGVuCisJICAgICAgdG1wZGlyPSIvdG1wIgorCSAgICAgIHRlc3QgLW4gIiRUTVBESVIiICYmIHRtcGRpcj0iJFRNUERJUiIKKwkgICAgICB0bXBkaXI9IiR0bXBkaXIvbGlidG9vbC0kJCIKKwkgICAgICBzYXZlX3VtYXNrPWB1bWFza2AKKwkgICAgICB1bWFzayAwMDc3CisJICAgICAgaWYgJG1rZGlyICIkdG1wZGlyIjsgdGhlbgorCSAgICAgICAgdW1hc2sgJHNhdmVfdW1hc2sKKwkgICAgICBlbHNlCisJICAgICAgICB1bWFzayAkc2F2ZV91bWFzaworCQkkZWNobyAiJG1vZGVuYW1lOiBlcnJvcjogY2Fubm90IGNyZWF0ZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IFxgJHRtcGRpciciIDE+JjIKKwkJY29udGludWUKKwkgICAgICBmaQorCSAgICAgIGZpbGU9YCRlY2hvICJYJGZpbGUkc3RyaXBwZWRfZXh0IiB8ICRYc2VkIC1lICdzJV4uKi8lJSdgCisJICAgICAgb3V0cHV0bmFtZT0iJHRtcGRpci8kZmlsZSIKKwkgICAgICAjIFJlcGxhY2UgdGhlIG91dHB1dCBmaWxlIHNwZWNpZmljYXRpb24uCisJICAgICAgcmVsaW5rX2NvbW1hbmQ9YCRlY2hvICJYJHJlbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dG5hbWUiJyVnJ2AKKworCSAgICAgICRzaG93ICIkcmVsaW5rX2NvbW1hbmQiCisJICAgICAgaWYgJHJ1biBldmFsICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuIDoKKwkgICAgICBlbHNlCisJCSRlY2hvICIkbW9kZW5hbWU6IGVycm9yOiByZWxpbmsgXGAkZmlsZScgd2l0aCB0aGUgYWJvdmUgY29tbWFuZCBiZWZvcmUgaW5zdGFsbGluZyBpdCIgMT4mMgorCQkke3JtfXIgIiR0bXBkaXIiCisJCWNvbnRpbnVlCisJICAgICAgZmkKKwkgICAgICBmaWxlPSIkb3V0cHV0bmFtZSIKKwkgICAgZWxzZQorCSAgICAgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IGNhbm5vdCByZWxpbmsgXGAkZmlsZSciIDE+JjIKKwkgICAgZmkKKwkgIGVsc2UKKwkgICAgIyBJbnN0YWxsIHRoZSBiaW5hcnkgdGhhdCB3ZSBjb21waWxlZCBlYXJsaWVyLgorCSAgICBmaWxlPWAkZWNobyAiWCRmaWxlJHN0cmlwcGVkX2V4dCIgfCAkWHNlZCAtZSAicyVcKFteL10qXCkkJSRvYmpkaXIvXDElImAKKwkgIGZpCisJZmkKKworCSMgcmVtb3ZlIC5leGUgc2luY2UgY3lnd2luIC91c3IvYmluL2luc3RhbGwgd2lsbCBhcHBlbmQgYW5vdGhlcgorCSMgb25lIGFueXdheXMKKwljYXNlICRpbnN0YWxsX3Byb2csJGhvc3QgaW4KKwkqL3Vzci9iaW4vaW5zdGFsbCosKmN5Z3dpbiopCisJICBjYXNlICRmaWxlOiRkZXN0ZmlsZSBpbgorCSAgKi5leGU6Ki5leGUpCisJICAgICMgdGhpcyBpcyBvaworCSAgICA7OworCSAgKi5leGU6KikKKwkgICAgZGVzdGZpbGU9JGRlc3RmaWxlLmV4ZQorCSAgICA7OworCSAgKjoqLmV4ZSkKKwkgICAgZGVzdGZpbGU9YCRlY2hvICRkZXN0ZmlsZSB8ICR7U0VEfSAtZSAncywuZXhlJCwsJ2AKKwkgICAgOzsKKwkgIGVzYWMKKwkgIDs7CisJZXNhYworCSRzaG93ICIkaW5zdGFsbF9wcm9nJHN0cmlwbWUgJGZpbGUgJGRlc3RmaWxlIgorCSRydW4gZXZhbCAiJGluc3RhbGxfcHJvZ1wkc3RyaXBtZSBcJGZpbGUgXCRkZXN0ZmlsZSIgfHwgZXhpdCAkPworCXRlc3QgLW4gIiRvdXRwdXRuYW1lIiAmJiAke3JtfXIgIiR0bXBkaXIiCisJOzsKKyAgICAgIGVzYWMKKyAgICBkb25lCisKKyAgICBmb3IgZmlsZSBpbiAkc3RhdGljbGliczsgZG8KKyAgICAgIG5hbWU9YCRlY2hvICJYJGZpbGUiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKKworICAgICAgIyBTZXQgdXAgdGhlIHJhbmxpYiBwYXJhbWV0ZXJzLgorICAgICAgb2xkbGliPSIkZGVzdGRpci8kbmFtZSIKKworICAgICAgJHNob3cgIiRpbnN0YWxsX3Byb2cgJGZpbGUgJG9sZGxpYiIKKyAgICAgICRydW4gZXZhbCAiJGluc3RhbGxfcHJvZyBcJGZpbGUgXCRvbGRsaWIiIHx8IGV4aXQgJD8KKworICAgICAgaWYgdGVzdCAtbiAiJHN0cmlwbWUiICYmIHRlc3QgLW4gIiRvbGRfc3RyaXBsaWIiOyB0aGVuCisJJHNob3cgIiRvbGRfc3RyaXBsaWIgJG9sZGxpYiIKKwkkcnVuIGV2YWwgIiRvbGRfc3RyaXBsaWIgJG9sZGxpYiIgfHwgZXhpdCAkPworICAgICAgZmkKKworICAgICAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIHBvc3RpbnN0YWxsIGNvbW1hbmRzLgorICAgICAgY21kcz0kb2xkX3Bvc3RpbnN0YWxsX2NtZHMKKyAgICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JworICAgICAgZm9yIGNtZCBpbiAkY21kczsgZG8KKwlJRlM9IiRzYXZlX2lmcyIKKwlldmFsIGNtZD1cIiRjbWRcIgorCSRzaG93ICIkY21kIgorCSRydW4gZXZhbCAiJGNtZCIgfHwgZXhpdCAkPworICAgICAgZG9uZQorICAgICAgSUZTPSIkc2F2ZV9pZnMiCisgICAgZG9uZQorCisgICAgaWYgdGVzdCAtbiAiJGZ1dHVyZV9saWJkaXJzIjsgdGhlbgorICAgICAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogcmVtZW1iZXIgdG8gcnVuIFxgJHByb2duYW1lIC0tZmluaXNoJGZ1dHVyZV9saWJkaXJzJyIgMT4mMgorICAgIGZpCisKKyAgICBpZiB0ZXN0IC1uICIkY3VycmVudF9saWJkaXJzIjsgdGhlbgorICAgICAgIyBNYXliZSBqdXN0IGRvIGEgZHJ5IHJ1bi4KKyAgICAgIHRlc3QgLW4gIiRydW4iICYmIGN1cnJlbnRfbGliZGlycz0iIC1uJGN1cnJlbnRfbGliZGlycyIKKyAgICAgIGV4ZWNfY21kPSckU0hFTEwgJHByb2dwYXRoICRwcmVzZXJ2ZV9hcmdzIC0tZmluaXNoJGN1cnJlbnRfbGliZGlycycKKyAgICBlbHNlCisgICAgICBleGl0ICRFWElUX1NVQ0NFU1MKKyAgICBmaQorICAgIDs7CisKKyAgIyBsaWJ0b29sIGZpbmlzaCBtb2RlCisgIGZpbmlzaCkKKyAgICBtb2RlbmFtZT0iJG1vZGVuYW1lOiBmaW5pc2giCisgICAgbGliZGlycz0iJG5vbm9wdCIKKyAgICBhZG1pbmNtZHM9CisKKyAgICBpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMkZmluaXNoX2V2YWwiICYmIHRlc3QgLW4gIiRsaWJkaXJzIjsgdGhlbgorICAgICAgZm9yIGRpcgorICAgICAgZG8KKwlsaWJkaXJzPSIkbGliZGlycyAkZGlyIgorICAgICAgZG9uZQorCisgICAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbworCWlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyI7IHRoZW4KKwkgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBmaW5pc2ggY29tbWFuZHMuCisJICBjbWRzPSRmaW5pc2hfY21kcworCSAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCisJICBmb3IgY21kIGluICRjbWRzOyBkbworCSAgICBJRlM9IiRzYXZlX2lmcyIKKwkgICAgZXZhbCBjbWQ9XCIkY21kXCIKKwkgICAgJHNob3cgIiRjbWQiCisJICAgICRydW4gZXZhbCAiJGNtZCIgfHwgYWRtaW5jbWRzPSIkYWRtaW5jbWRzCisgICAgICAgJGNtZCIKKwkgIGRvbmUKKwkgIElGUz0iJHNhdmVfaWZzIgorCWZpCisJaWYgdGVzdCAtbiAiJGZpbmlzaF9ldmFsIjsgdGhlbgorCSAgIyBEbyB0aGUgc2luZ2xlIGZpbmlzaF9ldmFsLgorCSAgZXZhbCBjbWRzPVwiJGZpbmlzaF9ldmFsXCIKKwkgICRydW4gZXZhbCAiJGNtZHMiIHx8IGFkbWluY21kcz0iJGFkbWluY21kcworICAgICAgICRjbWRzIgorCWZpCisgICAgICBkb25lCisgICAgZmkKKworICAgICMgRXhpdCBoZXJlIGlmIHRoZXkgd2FudGVkIHNpbGVudCBtb2RlLgorICAgIHRlc3QgIiRzaG93IiA9IDogJiYgZXhpdCAkRVhJVF9TVUNDRVNTCisKKyAgICAkZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKKyAgICAkZWNobyAiTGlicmFyaWVzIGhhdmUgYmVlbiBpbnN0YWxsZWQgaW46IgorICAgIGZvciBsaWJkaXIgaW4gJGxpYmRpcnM7IGRvCisgICAgICAkZWNobyAiICAgJGxpYmRpciIKKyAgICBkb25lCisgICAgJGVjaG8KKyAgICAkZWNobyAiSWYgeW91IGV2ZXIgaGFwcGVuIHRvIHdhbnQgdG8gbGluayBhZ2FpbnN0IGluc3RhbGxlZCBsaWJyYXJpZXMiCisgICAgJGVjaG8gImluIGEgZ2l2ZW4gZGlyZWN0b3J5LCBMSUJESVIsIHlvdSBtdXN0IGVpdGhlciB1c2UgbGlidG9vbCwgYW5kIgorICAgICRlY2hvICJzcGVjaWZ5IHRoZSBmdWxsIHBhdGhuYW1lIG9mIHRoZSBsaWJyYXJ5LCBvciB1c2UgdGhlIFxgLUxMSUJESVInIgorICAgICRlY2hvICJmbGFnIGR1cmluZyBsaW5raW5nIGFuZCBkbyBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZzoiCisgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCisgICAgICAkZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRzaGxpYnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKKyAgICAgICRlY2hvICIgICAgIGR1cmluZyBleGVjdXRpb24iCisgICAgZmkKKyAgICBpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCisgICAgICAkZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRydW5wYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCisgICAgICAkZWNobyAiICAgICBkdXJpbmcgbGlua2luZyIKKyAgICBmaQorICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgorICAgICAgbGliZGlyPUxJQkRJUgorICAgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorCisgICAgICAkZWNobyAiICAgLSB1c2UgdGhlIFxgJGZsYWcnIGxpbmtlciBmbGFnIgorICAgIGZpCisgICAgaWYgdGVzdCAtbiAiJGFkbWluY21kcyI7IHRoZW4KKyAgICAgICRlY2hvICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBydW4gdGhlc2UgY29tbWFuZHM6JGFkbWluY21kcyIKKyAgICBmaQorICAgIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCisgICAgICAkZWNobyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgYWRkIExJQkRJUiB0byBcYC9ldGMvbGQuc28uY29uZiciCisgICAgZmkKKyAgICAkZWNobworICAgICRlY2hvICJTZWUgYW55IG9wZXJhdGluZyBzeXN0ZW0gZG9jdW1lbnRhdGlvbiBhYm91dCBzaGFyZWQgbGlicmFyaWVzIGZvciIKKyAgICAkZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCBwYWdlcy4iCisgICAgJGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCisgICAgZXhpdCAkRVhJVF9TVUNDRVNTCisgICAgOzsKKworICAjIGxpYnRvb2wgZXhlY3V0ZSBtb2RlCisgIGV4ZWN1dGUpCisgICAgbW9kZW5hbWU9IiRtb2RlbmFtZTogZXhlY3V0ZSIKKworICAgICMgVGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBjb21tYW5kIG5hbWUuCisgICAgY21kPSIkbm9ub3B0IgorICAgIGlmIHRlc3QgLXogIiRjbWQiOyB0aGVuCisgICAgICAkZWNobyAiJG1vZGVuYW1lOiB5b3UgbXVzdCBzcGVjaWZ5IGEgQ09NTUFORCIgMT4mMgorICAgICAgJGVjaG8gIiRoZWxwIgorICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisgICAgZmkKKworICAgICMgSGFuZGxlIC1kbG9wZW4gZmxhZ3MgaW1tZWRpYXRlbHkuCisgICAgZm9yIGZpbGUgaW4gJGV4ZWN1dGVfZGxmaWxlczsgZG8KKyAgICAgIGlmIHRlc3QgISAtZiAiJGZpbGUiOyB0aGVuCisJJGVjaG8gIiRtb2RlbmFtZTogXGAkZmlsZScgaXMgbm90IGEgZmlsZSIgMT4mMgorCSRlY2hvICIkaGVscCIgMT4mMgorCWV4aXQgJEVYSVRfRkFJTFVSRQorICAgICAgZmkKKworICAgICAgZGlyPQorICAgICAgY2FzZSAkZmlsZSBpbgorICAgICAgKi5sYSkKKwkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBhcmNoaXZlLgorCWlmICgke1NFRH0gLWUgJzJxJyAkZmlsZSB8IGdyZXAgIl4jIEdlbmVyYXRlZCBieSAuKiRQQUNLQUdFIikgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKwllbHNlCisJICAkZWNobyAiJG1vZGVuYW1lOiBcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIgMT4mMgorCSAgJGVjaG8gIiRoZWxwIiAxPiYyCisJICBleGl0ICRFWElUX0ZBSUxVUkUKKwlmaQorCisJIyBSZWFkIHRoZSBsaWJ0b29sIGxpYnJhcnkuCisJZGxuYW1lPQorCWxpYnJhcnlfbmFtZXM9CisKKwkjIElmIHRoZXJlIGlzIG5vIGRpcmVjdG9yeSBjb21wb25lbnQsIHRoZW4gYWRkIG9uZS4KKwljYXNlICRmaWxlIGluCisJKi8qIHwgKlxcKikgLiAkZmlsZSA7OworCSopIC4gLi8kZmlsZSA7OworCWVzYWMKKworCSMgU2tpcCB0aGlzIGxpYnJhcnkgaWYgaXQgY2Fubm90IGJlIGRsb3BlbmVkLgorCWlmIHRlc3QgLXogIiRkbG5hbWUiOyB0aGVuCisJICAjIFdhcm4gaWYgaXQgd2FzIGEgc2hhcmVkIGxpYnJhcnkuCisJICB0ZXN0IC1uICIkbGlicmFyeV9uYW1lcyIgJiYgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAkZmlsZScgd2FzIG5vdCBsaW5rZWQgd2l0aCBcYC1leHBvcnQtZHluYW1pYyciCisJICBjb250aW51ZQorCWZpCisKKwlkaXI9YCRlY2hvICJYJGZpbGUiIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AKKwl0ZXN0ICJYJGRpciIgPSAiWCRmaWxlIiAmJiBkaXI9LgorCisJaWYgdGVzdCAtZiAiJGRpci8kb2JqZGlyLyRkbG5hbWUiOyB0aGVuCisJICBkaXI9IiRkaXIvJG9iamRpciIKKwllbHNlCisJICAkZWNobyAiJG1vZGVuYW1lOiBjYW5ub3QgZmluZCBcYCRkbG5hbWUnIGluIFxgJGRpcicgb3IgXGAkZGlyLyRvYmpkaXInIiAxPiYyCisJICBleGl0ICRFWElUX0ZBSUxVUkUKKwlmaQorCTs7CisKKyAgICAgICoubG8pCisJIyBKdXN0IGFkZCB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIC5sbyBmaWxlLgorCWRpcj1gJGVjaG8gIlgkZmlsZSIgfCAkWHNlZCAtZSAncyUvW14vXSokJSUnYAorCXRlc3QgIlgkZGlyIiA9ICJYJGZpbGUiICYmIGRpcj0uCisJOzsKKworICAgICAgKikKKwkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nIFxgLWRsb3BlbicgaXMgaWdub3JlZCBmb3Igbm9uLWxpYnRvb2wgbGlicmFyaWVzIGFuZCBvYmplY3RzIiAxPiYyCisJY29udGludWUKKwk7OworICAgICAgZXNhYworCisgICAgICAjIEdldCB0aGUgYWJzb2x1dGUgcGF0aG5hbWUuCisgICAgICBhYnNkaXI9YGNkICIkZGlyIiAmJiBwd2RgCisgICAgICB0ZXN0IC1uICIkYWJzZGlyIiAmJiBkaXI9IiRhYnNkaXIiCisKKyAgICAgICMgTm93IGFkZCB0aGUgZGlyZWN0b3J5IHRvIHNobGlicGF0aF92YXIuCisgICAgICBpZiBldmFsICJ0ZXN0IC16IFwiXCQkc2hsaWJwYXRoX3ZhclwiIjsgdGhlbgorCWV2YWwgIiRzaGxpYnBhdGhfdmFyPVwiXCRkaXJcIiIKKyAgICAgIGVsc2UKKwlldmFsICIkc2hsaWJwYXRoX3Zhcj1cIlwkZGlyOlwkJHNobGlicGF0aF92YXJcIiIKKyAgICAgIGZpCisgICAgZG9uZQorCisgICAgIyBUaGlzIHZhcmlhYmxlIHRlbGxzIHdyYXBwZXIgc2NyaXB0cyBqdXN0IHRvIHNldCBzaGxpYnBhdGhfdmFyCisgICAgIyByYXRoZXIgdGhhbiBydW5uaW5nIHRoZWlyIHByb2dyYW1zLgorICAgIGxpYnRvb2xfZXhlY3V0ZV9tYWdpYz0iJG1hZ2ljIgorCisgICAgIyBDaGVjayBpZiBhbnkgb2YgdGhlIGFyZ3VtZW50cyBpcyBhIHdyYXBwZXIgc2NyaXB0LgorICAgIGFyZ3M9CisgICAgZm9yIGZpbGUKKyAgICBkbworICAgICAgY2FzZSAkZmlsZSBpbgorICAgICAgLSopIDs7CisgICAgICAqKQorCSMgRG8gYSB0ZXN0IHRvIHNlZSBpZiB0aGlzIGlzIHJlYWxseSBhIGxpYnRvb2wgcHJvZ3JhbS4KKwlpZiAoJHtTRUR9IC1lICc0cScgJGZpbGUgfCBncmVwICJeIyBHZW5lcmF0ZWQgYnkgLiokUEFDS0FHRSIpID4vZGV2L251bGwgMj4mMTsgdGhlbgorCSAgIyBJZiB0aGVyZSBpcyBubyBkaXJlY3RvcnkgY29tcG9uZW50LCB0aGVuIGFkZCBvbmUuCisJICBjYXNlICRmaWxlIGluCisJICAqLyogfCAqXFwqKSAuICRmaWxlIDs7CisJICAqKSAuIC4vJGZpbGUgOzsKKwkgIGVzYWMKKworCSAgIyBUcmFuc2Zvcm0gYXJnIHRvIHdyYXBwZWQgbmFtZS4KKwkgIGZpbGU9IiRwcm9nZGlyLyRwcm9ncmFtIgorCWZpCisJOzsKKyAgICAgIGVzYWMKKyAgICAgICMgUXVvdGUgYXJndW1lbnRzICh0byBwcmVzZXJ2ZSBzaGVsbCBtZXRhY2hhcmFjdGVycykuCisgICAgICBmaWxlPWAkZWNobyAiWCRmaWxlIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKyAgICAgIGFyZ3M9IiRhcmdzIFwiJGZpbGVcIiIKKyAgICBkb25lCisKKyAgICBpZiB0ZXN0IC16ICIkcnVuIjsgdGhlbgorICAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCisJIyBFeHBvcnQgdGhlIHNobGlicGF0aF92YXIuCisJZXZhbCAiZXhwb3J0ICRzaGxpYnBhdGhfdmFyIgorICAgICAgZmkKKworICAgICAgIyBSZXN0b3JlIHNhdmVkIGVudmlyb25tZW50IHZhcmlhYmxlcworICAgICAgaWYgdGVzdCAiJHtzYXZlX0xDX0FMTCtzZXR9IiA9IHNldDsgdGhlbgorCUxDX0FMTD0iJHNhdmVfTENfQUxMIjsgZXhwb3J0IExDX0FMTAorICAgICAgZmkKKyAgICAgIGlmIHRlc3QgIiR7c2F2ZV9MQU5HK3NldH0iID0gc2V0OyB0aGVuCisJTEFORz0iJHNhdmVfTEFORyI7IGV4cG9ydCBMQU5HCisgICAgICBmaQorCisgICAgICAjIE5vdyBwcmVwYXJlIHRvIGFjdHVhbGx5IGV4ZWMgdGhlIGNvbW1hbmQuCisgICAgICBleGVjX2NtZD0iXCRjbWQkYXJncyIKKyAgICBlbHNlCisgICAgICAjIERpc3BsYXkgd2hhdCB3b3VsZCBiZSBkb25lLgorICAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCisJZXZhbCAiXCRlY2hvIFwiXCRzaGxpYnBhdGhfdmFyPVwkJHNobGlicGF0aF92YXJcIiIKKwkkZWNobyAiZXhwb3J0ICRzaGxpYnBhdGhfdmFyIgorICAgICAgZmkKKyAgICAgICRlY2hvICIkY21kJGFyZ3MiCisgICAgICBleGl0ICRFWElUX1NVQ0NFU1MKKyAgICBmaQorICAgIDs7CisKKyAgIyBsaWJ0b29sIGNsZWFuIGFuZCB1bmluc3RhbGwgbW9kZQorICBjbGVhbiB8IHVuaW5zdGFsbCkKKyAgICBtb2RlbmFtZT0iJG1vZGVuYW1lOiAkbW9kZSIKKyAgICBybT0iJG5vbm9wdCIKKyAgICBmaWxlcz0KKyAgICBybWZvcmNlPQorICAgIGV4aXRfc3RhdHVzPTAKKworICAgICMgVGhpcyB2YXJpYWJsZSB0ZWxscyB3cmFwcGVyIHNjcmlwdHMganVzdCB0byBzZXQgdmFyaWFibGVzIHJhdGhlcgorICAgICMgdGhhbiBydW5uaW5nIHRoZWlyIHByb2dyYW1zLgorICAgIGxpYnRvb2xfaW5zdGFsbF9tYWdpYz0iJG1hZ2ljIgorCisgICAgZm9yIGFyZworICAgIGRvCisgICAgICBjYXNlICRhcmcgaW4KKyAgICAgIC1mKSBybT0iJHJtICRhcmciOyBybWZvcmNlPXllcyA7OworICAgICAgLSopIHJtPSIkcm0gJGFyZyIgOzsKKyAgICAgICopIGZpbGVzPSIkZmlsZXMgJGFyZyIgOzsKKyAgICAgIGVzYWMKKyAgICBkb25lCisKKyAgICBpZiB0ZXN0IC16ICIkcm0iOyB0aGVuCisgICAgICAkZWNobyAiJG1vZGVuYW1lOiB5b3UgbXVzdCBzcGVjaWZ5IGFuIFJNIHByb2dyYW0iIDE+JjIKKyAgICAgICRlY2hvICIkaGVscCIgMT4mMgorICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisgICAgZmkKKworICAgIHJtZGlycz0KKworICAgIG9yaWdvYmpkaXI9IiRvYmpkaXIiCisgICAgZm9yIGZpbGUgaW4gJGZpbGVzOyBkbworICAgICAgZGlyPWAkZWNobyAiWCRmaWxlIiB8ICRYc2VkIC1lICdzJS9bXi9dKiQlJSdgCisgICAgICBpZiB0ZXN0ICJYJGRpciIgPSAiWCRmaWxlIjsgdGhlbgorCWRpcj0uCisJb2JqZGlyPSIkb3JpZ29iamRpciIKKyAgICAgIGVsc2UKKwlvYmpkaXI9IiRkaXIvJG9yaWdvYmpkaXIiCisgICAgICBmaQorICAgICAgbmFtZT1gJGVjaG8gIlgkZmlsZSIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAorICAgICAgdGVzdCAiJG1vZGUiID0gdW5pbnN0YWxsICYmIG9iamRpcj0iJGRpciIKKworICAgICAgIyBSZW1lbWJlciBvYmpkaXIgZm9yIHJlbW92YWwgbGF0ZXIsIGJlaW5nIGNhcmVmdWwgdG8gYXZvaWQgZHVwbGljYXRlcworICAgICAgaWYgdGVzdCAiJG1vZGUiID0gY2xlYW47IHRoZW4KKwljYXNlICIgJHJtZGlycyAiIGluCisJICAqIiAkb2JqZGlyICIqKSA7OworCSAgKikgcm1kaXJzPSIkcm1kaXJzICRvYmpkaXIiIDs7CisJZXNhYworICAgICAgZmkKKworICAgICAgIyBEb24ndCBlcnJvciBpZiB0aGUgZmlsZSBkb2Vzbid0IGV4aXN0IGFuZCBybSAtZiB3YXMgdXNlZC4KKyAgICAgIGlmICh0ZXN0IC1MICIkZmlsZSIpID4vZGV2L251bGwgMj4mMSBcCisJfHwgKHRlc3QgLWggIiRmaWxlIikgPi9kZXYvbnVsbCAyPiYxIFwKKwl8fCB0ZXN0IC1mICIkZmlsZSI7IHRoZW4KKwk6CisgICAgICBlbGlmIHRlc3QgLWQgIiRmaWxlIjsgdGhlbgorCWV4aXRfc3RhdHVzPTEKKwljb250aW51ZQorICAgICAgZWxpZiB0ZXN0ICIkcm1mb3JjZSIgPSB5ZXM7IHRoZW4KKwljb250aW51ZQorICAgICAgZmkKKworICAgICAgcm1maWxlcz0iJGZpbGUiCisKKyAgICAgIGNhc2UgJG5hbWUgaW4KKyAgICAgICoubGEpCisJIyBQb3NzaWJseSBhIGxpYnRvb2wgYXJjaGl2ZSwgc28gdmVyaWZ5IGl0LgorCWlmICgke1NFRH0gLWUgJzJxJyAkZmlsZSB8IGdyZXAgIl4jIEdlbmVyYXRlZCBieSAuKiRQQUNLQUdFIikgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisJICAuICRkaXIvJG5hbWUKKworCSAgIyBEZWxldGUgdGhlIGxpYnRvb2wgbGlicmFyaWVzIGFuZCBzeW1saW5rcy4KKwkgIGZvciBuIGluICRsaWJyYXJ5X25hbWVzOyBkbworCSAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuIgorCSAgZG9uZQorCSAgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRvbGRfbGlicmFyeSIKKwkgIHRlc3QgIiRtb2RlIiA9IGNsZWFuICYmIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG5hbWUgJG9iamRpci8ke25hbWV9aSIKKworCSAgaWYgdGVzdCAiJG1vZGUiID0gdW5pbnN0YWxsOyB0aGVuCisJICAgIGlmIHRlc3QgLW4gIiRsaWJyYXJ5X25hbWVzIjsgdGhlbgorCSAgICAgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBwb3N0dW5pbnN0YWxsIGNvbW1hbmRzLgorCSAgICAgIGNtZHM9JHBvc3R1bmluc3RhbGxfY21kcworCSAgICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JworCSAgICAgIGZvciBjbWQgaW4gJGNtZHM7IGRvCisJCUlGUz0iJHNhdmVfaWZzIgorCQlldmFsIGNtZD1cIiRjbWRcIgorCQkkc2hvdyAiJGNtZCIKKwkJJHJ1biBldmFsICIkY21kIgorCQlpZiB0ZXN0ICIkPyIgLW5lIDAgJiYgdGVzdCAiJHJtZm9yY2UiICE9IHllczsgdGhlbgorCQkgIGV4aXRfc3RhdHVzPTEKKwkJZmkKKwkgICAgICBkb25lCisJICAgICAgSUZTPSIkc2F2ZV9pZnMiCisJICAgIGZpCisKKwkgICAgaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IjsgdGhlbgorCSAgICAgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBvbGRfcG9zdHVuaW5zdGFsbCBjb21tYW5kcy4KKwkgICAgICBjbWRzPSRvbGRfcG9zdHVuaW5zdGFsbF9jbWRzCisJICAgICAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCisJICAgICAgZm9yIGNtZCBpbiAkY21kczsgZG8KKwkJSUZTPSIkc2F2ZV9pZnMiCisJCWV2YWwgY21kPVwiJGNtZFwiCisJCSRzaG93ICIkY21kIgorCQkkcnVuIGV2YWwgIiRjbWQiCisJCWlmIHRlc3QgIiQ/IiAtbmUgMCAmJiB0ZXN0ICIkcm1mb3JjZSIgIT0geWVzOyB0aGVuCisJCSAgZXhpdF9zdGF0dXM9MQorCQlmaQorCSAgICAgIGRvbmUKKwkgICAgICBJRlM9IiRzYXZlX2lmcyIKKwkgICAgZmkKKwkgICAgIyBGSVhNRTogc2hvdWxkIHJlaW5zdGFsbCB0aGUgYmVzdCByZW1haW5pbmcgc2hhcmVkIGxpYnJhcnkuCisJICBmaQorCWZpCisJOzsKKworICAgICAgKi5sbykKKwkjIFBvc3NpYmx5IGEgbGlidG9vbCBvYmplY3QsIHNvIHZlcmlmeSBpdC4KKwlpZiAoJHtTRUR9IC1lICcycScgJGZpbGUgfCBncmVwICJeIyBHZW5lcmF0ZWQgYnkgLiokUEFDS0FHRSIpID4vZGV2L251bGwgMj4mMTsgdGhlbgorCisJICAjIFJlYWQgdGhlIC5sbyBmaWxlCisJICAuICRkaXIvJG5hbWUKKworCSAgIyBBZGQgUElDIG9iamVjdCB0byB0aGUgbGlzdCBvZiBmaWxlcyB0byByZW1vdmUuCisJICBpZiB0ZXN0IC1uICIkcGljX29iamVjdCIgXAorCSAgICAgJiYgdGVzdCAiJHBpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KKwkgICAgcm1maWxlcz0iJHJtZmlsZXMgJGRpci8kcGljX29iamVjdCIKKwkgIGZpCisKKwkgICMgQWRkIG5vbi1QSUMgb2JqZWN0IHRvIHRoZSBsaXN0IG9mIGZpbGVzIHRvIHJlbW92ZS4KKwkgIGlmIHRlc3QgLW4gIiRub25fcGljX29iamVjdCIgXAorCSAgICAgJiYgdGVzdCAiJG5vbl9waWNfb2JqZWN0IiAhPSBub25lOyB0aGVuCisJICAgIHJtZmlsZXM9IiRybWZpbGVzICRkaXIvJG5vbl9waWNfb2JqZWN0IgorCSAgZmkKKwlmaQorCTs7CisKKyAgICAgICopCisJaWYgdGVzdCAiJG1vZGUiID0gY2xlYW4gOyB0aGVuCisJICBub2V4ZW5hbWU9JG5hbWUKKwkgIGNhc2UgJGZpbGUgaW4KKwkgICouZXhlKQorCSAgICBmaWxlPWAkZWNobyAkZmlsZXwke1NFRH0gJ3MsLmV4ZSQsLCdgCisJICAgIG5vZXhlbmFtZT1gJGVjaG8gJG5hbWV8JHtTRUR9ICdzLC5leGUkLCwnYAorCSAgICAjICRmaWxlIHdpdGggLmV4ZSBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkIHRvIHJtZmlsZXMsCisJICAgICMgYWRkICRmaWxlIHdpdGhvdXQgLmV4ZQorCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZmlsZSIKKwkgICAgOzsKKwkgIGVzYWMKKwkgICMgRG8gYSB0ZXN0IHRvIHNlZSBpZiB0aGlzIGlzIGEgbGlidG9vbCBwcm9ncmFtLgorCSAgaWYgKCR7U0VEfSAtZSAnNHEnICRmaWxlIHwgZ3JlcCAiXiMgR2VuZXJhdGVkIGJ5IC4qJFBBQ0tBR0UiKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKwkgICAgcmVsaW5rX2NvbW1hbmQ9CisJICAgIC4gJGRpci8kbm9leGVuYW1lCisKKwkgICAgIyBub3RlICRuYW1lIHN0aWxsIGNvbnRhaW5zIC5leGUgaWYgaXQgd2FzIGluICRmaWxlIG9yaWdpbmFsbHkKKwkgICAgIyBhcyBkb2VzIHRoZSB2ZXJzaW9uIG9mICRmaWxlIHRoYXQgd2FzIGFkZGVkIGludG8gJHJtZmlsZXMKKwkgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kbmFtZSAkb2JqZGlyLyR7bmFtZX1TLiR7b2JqZXh0fSIKKwkgICAgaWYgdGVzdCAiJGZhc3RfaW5zdGFsbCIgPSB5ZXMgJiYgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIjsgdGhlbgorCSAgICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvbHQtJG5hbWUiCisJICAgIGZpCisJICAgIGlmIHRlc3QgIlgkbm9leGVuYW1lIiAhPSAiWCRuYW1lIiA7IHRoZW4KKwkgICAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyL2x0LSR7bm9leGVuYW1lfS5jIgorCSAgICBmaQorCSAgZmkKKwlmaQorCTs7CisgICAgICBlc2FjCisgICAgICAkc2hvdyAiJHJtICRybWZpbGVzIgorICAgICAgJHJ1biAkcm0gJHJtZmlsZXMgfHwgZXhpdF9zdGF0dXM9MQorICAgIGRvbmUKKyAgICBvYmpkaXI9IiRvcmlnb2JqZGlyIgorCisgICAgIyBUcnkgdG8gcmVtb3ZlIHRoZSAke29iamRpcn1zIGluIHRoZSBkaXJlY3RvcmllcyB3aGVyZSB3ZSBkZWxldGVkIGZpbGVzCisgICAgZm9yIGRpciBpbiAkcm1kaXJzOyBkbworICAgICAgaWYgdGVzdCAtZCAiJGRpciI7IHRoZW4KKwkkc2hvdyAicm1kaXIgJGRpciIKKwkkcnVuIHJtZGlyICRkaXIgPi9kZXYvbnVsbCAyPiYxCisgICAgICBmaQorICAgIGRvbmUKKworICAgIGV4aXQgJGV4aXRfc3RhdHVzCisgICAgOzsKKworICAiIikKKyAgICAkZWNobyAiJG1vZGVuYW1lOiB5b3UgbXVzdCBzcGVjaWZ5IGEgTU9ERSIgMT4mMgorICAgICRlY2hvICIkZ2VuZXJpY19oZWxwIiAxPiYyCisgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisgICAgOzsKKyAgZXNhYworCisgIGlmIHRlc3QgLXogIiRleGVjX2NtZCI7IHRoZW4KKyAgICAkZWNobyAiJG1vZGVuYW1lOiBpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG1vZGUnIiAxPiYyCisgICAgJGVjaG8gIiRnZW5lcmljX2hlbHAiIDE+JjIKKyAgICBleGl0ICRFWElUX0ZBSUxVUkUKKyAgZmkKK2ZpICMgdGVzdCAteiAiJHNob3dfaGVscCIKKworaWYgdGVzdCAtbiAiJGV4ZWNfY21kIjsgdGhlbgorICBldmFsIGV4ZWMgJGV4ZWNfY21kCisgIGV4aXQgJEVYSVRfRkFJTFVSRQorZmkKKworIyBXZSBuZWVkIHRvIGRpc3BsYXkgaGVscCBmb3IgZWFjaCBvZiB0aGUgbW9kZXMuCitjYXNlICRtb2RlIGluCisiIikgJGVjaG8gXAorIlVzYWdlOiAkbW9kZW5hbWUgW09QVElPTl0uLi4gW01PREUtQVJHXS4uLgorCitQcm92aWRlIGdlbmVyYWxpemVkIGxpYnJhcnktYnVpbGRpbmcgc3VwcG9ydCBzZXJ2aWNlcy4KKworICAgIC0tY29uZmlnICAgICAgICAgIHNob3cgYWxsIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCisgICAgLS1kZWJ1ZyAgICAgICAgICAgZW5hYmxlIHZlcmJvc2Ugc2hlbGwgdHJhY2luZworLW4sIC0tZHJ5LXJ1biAgICAgICAgIGRpc3BsYXkgY29tbWFuZHMgd2l0aG91dCBtb2RpZnlpbmcgYW55IGZpbGVzCisgICAgLS1mZWF0dXJlcyAgICAgICAgZGlzcGxheSBiYXNpYyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFuZCBleGl0CisgICAgLS1maW5pc2ggICAgICAgICAgc2FtZSBhcyBcYC0tbW9kZT1maW5pc2gnCisgICAgLS1oZWxwICAgICAgICAgICAgZGlzcGxheSB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAorICAgIC0tbW9kZT1NT0RFICAgICAgIHVzZSBvcGVyYXRpb24gbW9kZSBNT0RFIFtkZWZhdWx0PWluZmVycmVkIGZyb20gTU9ERS1BUkdTXQorICAgIC0tcXVpZXQgICAgICAgICAgIHNhbWUgYXMgXGAtLXNpbGVudCcKKyAgICAtLXNpbGVudCAgICAgICAgICBkb24ndCBwcmludCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzCisgICAgLS10YWc9VEFHICAgICAgICAgdXNlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZyb20gdGFnIFRBRworICAgIC0tdmVyc2lvbiAgICAgICAgIHByaW50IHZlcnNpb24gaW5mb3JtYXRpb24KKworTU9ERSBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCisgICAgICBjbGVhbiAgICAgICAgICAgcmVtb3ZlIGZpbGVzIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeQorICAgICAgY29tcGlsZSAgICAgICAgIGNvbXBpbGUgYSBzb3VyY2UgZmlsZSBpbnRvIGEgbGlidG9vbCBvYmplY3QKKyAgICAgIGV4ZWN1dGUgICAgICAgICBhdXRvbWF0aWNhbGx5IHNldCBsaWJyYXJ5IHBhdGgsIHRoZW4gcnVuIGEgcHJvZ3JhbQorICAgICAgZmluaXNoICAgICAgICAgIGNvbXBsZXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgbGlidG9vbCBsaWJyYXJpZXMKKyAgICAgIGluc3RhbGwgICAgICAgICBpbnN0YWxsIGxpYnJhcmllcyBvciBleGVjdXRhYmxlcworICAgICAgbGluayAgICAgICAgICAgIGNyZWF0ZSBhIGxpYnJhcnkgb3IgYW4gZXhlY3V0YWJsZQorICAgICAgdW5pbnN0YWxsICAgICAgIHJlbW92ZSBsaWJyYXJpZXMgZnJvbSBhbiBpbnN0YWxsZWQgZGlyZWN0b3J5CisKK01PREUtQVJHUyB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgTU9ERS4gIFRyeSBcYCRtb2RlbmFtZSAtLWhlbHAgLS1tb2RlPU1PREUnIGZvcgorYSBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIE1PREUuCisKK1JlcG9ydCBidWdzIHRvIDxidWctbGlidG9vbEBnbnUub3JnPi4iCisgIGV4aXQgJEVYSVRfU1VDQ0VTUworICA7OworCitjbGVhbikKKyAgJGVjaG8gXAorIlVzYWdlOiAkbW9kZW5hbWUgW09QVElPTl0uLi4gLS1tb2RlPWNsZWFuIFJNIFtSTS1PUFRJT05dLi4uIEZJTEUuLi4KKworUmVtb3ZlIGZpbGVzIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeS4KKworUk0gaXMgdGhlIG5hbWUgb2YgdGhlIHByb2dyYW0gdG8gdXNlIHRvIGRlbGV0ZSBmaWxlcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBGSUxFCisodHlwaWNhbGx5IFxgL2Jpbi9ybScpLiAgUk0tT1BUSU9OUyBhcmUgb3B0aW9ucyAoc3VjaCBhcyBcYC1mJykgdG8gYmUgcGFzc2VkCit0byBSTS4KKworSWYgRklMRSBpcyBhIGxpYnRvb2wgbGlicmFyeSwgb2JqZWN0IG9yIHByb2dyYW0sIGFsbCB0aGUgZmlsZXMgYXNzb2NpYXRlZAord2l0aCBpdCBhcmUgZGVsZXRlZC4gT3RoZXJ3aXNlLCBvbmx5IEZJTEUgaXRzZWxmIGlzIGRlbGV0ZWQgdXNpbmcgUk0uIgorICA7OworCitjb21waWxlKQorICAkZWNobyBcCisiVXNhZ2U6ICRtb2RlbmFtZSBbT1BUSU9OXS4uLiAtLW1vZGU9Y29tcGlsZSBDT01QSUxFLUNPTU1BTkQuLi4gU09VUkNFRklMRQorCitDb21waWxlIGEgc291cmNlIGZpbGUgaW50byBhIGxpYnRvb2wgbGlicmFyeSBvYmplY3QuCisKK1RoaXMgbW9kZSBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBvcHRpb25zOgorCisgIC1vIE9VVFBVVC1GSUxFICAgIHNldCB0aGUgb3V0cHV0IGZpbGUgbmFtZSB0byBPVVRQVVQtRklMRQorICAtcHJlZmVyLXBpYyAgICAgICB0cnkgdG8gYnVpbGRpbmcgUElDIG9iamVjdHMgb25seQorICAtcHJlZmVyLW5vbi1waWMgICB0cnkgdG8gYnVpbGRpbmcgbm9uLVBJQyBvYmplY3RzIG9ubHkKKyAgLXN0YXRpYyAgICAgICAgICAgYWx3YXlzIGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3RhdGljIGxpbmtpbmcKKworQ09NUElMRS1DT01NQU5EIGlzIGEgY29tbWFuZCB0byBiZSB1c2VkIGluIGNyZWF0aW5nIGEgXGBzdGFuZGFyZCcgb2JqZWN0IGZpbGUKK2Zyb20gdGhlIGdpdmVuIFNPVVJDRUZJTEUuCisKK1RoZSBvdXRwdXQgZmlsZSBuYW1lIGlzIGRldGVybWluZWQgYnkgcmVtb3ZpbmcgdGhlIGRpcmVjdG9yeSBjb21wb25lbnQgZnJvbQorU09VUkNFRklMRSwgdGhlbiBzdWJzdGl0dXRpbmcgdGhlIEMgc291cmNlIGNvZGUgc3VmZml4IFxgLmMnIHdpdGggdGhlCitsaWJyYXJ5IG9iamVjdCBzdWZmaXgsIFxgLmxvJy4iCisgIDs7CisKK2V4ZWN1dGUpCisgICRlY2hvIFwKKyJVc2FnZTogJG1vZGVuYW1lIFtPUFRJT05dLi4uIC0tbW9kZT1leGVjdXRlIENPTU1BTkQgW0FSR1NdLi4uCisKK0F1dG9tYXRpY2FsbHkgc2V0IGxpYnJhcnkgcGF0aCwgdGhlbiBydW4gYSBwcm9ncmFtLgorCitUaGlzIG1vZGUgYWNjZXB0cyB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgb3B0aW9uczoKKworICAtZGxvcGVuIEZJTEUgICAgICBhZGQgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIEZJTEUgdG8gdGhlIGxpYnJhcnkgcGF0aAorCitUaGlzIG1vZGUgc2V0cyB0aGUgbGlicmFyeSBwYXRoIGVudmlyb25tZW50IHZhcmlhYmxlIGFjY29yZGluZyB0byBcYC1kbG9wZW4nCitmbGFncy4KKworSWYgYW55IG9mIHRoZSBBUkdTIGFyZSBsaWJ0b29sIGV4ZWN1dGFibGUgd3JhcHBlcnMsIHRoZW4gdGhleSBhcmUgdHJhbnNsYXRlZAoraW50byB0aGVpciBjb3JyZXNwb25kaW5nIHVuaW5zdGFsbGVkIGJpbmFyeSwgYW5kIGFueSBvZiB0aGVpciByZXF1aXJlZCBsaWJyYXJ5CitkaXJlY3RvcmllcyBhcmUgYWRkZWQgdG8gdGhlIGxpYnJhcnkgcGF0aC4KKworVGhlbiwgQ09NTUFORCBpcyBleGVjdXRlZCwgd2l0aCBBUkdTIGFzIGFyZ3VtZW50cy4iCisgIDs7CisKK2ZpbmlzaCkKKyAgJGVjaG8gXAorIlVzYWdlOiAkbW9kZW5hbWUgW09QVElPTl0uLi4gLS1tb2RlPWZpbmlzaCBbTElCRElSXS4uLgorCitDb21wbGV0ZSB0aGUgaW5zdGFsbGF0aW9uIG9mIGxpYnRvb2wgbGlicmFyaWVzLgorCitFYWNoIExJQkRJUiBpcyBhIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIGxpYnRvb2wgbGlicmFyaWVzLgorCitUaGUgY29tbWFuZHMgdGhhdCB0aGlzIG1vZGUgZXhlY3V0ZXMgbWF5IHJlcXVpcmUgc3VwZXJ1c2VyIHByaXZpbGVnZXMuICBVc2UKK3RoZSBcYC0tZHJ5LXJ1bicgb3B0aW9uIGlmIHlvdSBqdXN0IHdhbnQgdG8gc2VlIHdoYXQgd291bGQgYmUgZXhlY3V0ZWQuIgorICA7OworCitpbnN0YWxsKQorICAkZWNobyBcCisiVXNhZ2U6ICRtb2RlbmFtZSBbT1BUSU9OXS4uLiAtLW1vZGU9aW5zdGFsbCBJTlNUQUxMLUNPTU1BTkQuLi4KKworSW5zdGFsbCBleGVjdXRhYmxlcyBvciBsaWJyYXJpZXMuCisKK0lOU1RBTEwtQ09NTUFORCBpcyB0aGUgaW5zdGFsbGF0aW9uIGNvbW1hbmQuICBUaGUgZmlyc3QgY29tcG9uZW50IHNob3VsZCBiZQorZWl0aGVyIHRoZSBcYGluc3RhbGwnIG9yIFxgY3AnIHByb2dyYW0uCisKK1RoZSByZXN0IG9mIHRoZSBjb21wb25lbnRzIGFyZSBpbnRlcnByZXRlZCBhcyBhcmd1bWVudHMgdG8gdGhhdCBjb21tYW5kIChvbmx5CitCU0QtY29tcGF0aWJsZSBpbnN0YWxsIG9wdGlvbnMgYXJlIHJlY29nbml6ZWQpLiIKKyAgOzsKKworbGluaykKKyAgJGVjaG8gXAorIlVzYWdlOiAkbW9kZW5hbWUgW09QVElPTl0uLi4gLS1tb2RlPWxpbmsgTElOSy1DT01NQU5ELi4uCisKK0xpbmsgb2JqZWN0IGZpbGVzIG9yIGxpYnJhcmllcyB0b2dldGhlciB0byBmb3JtIGFub3RoZXIgbGlicmFyeSwgb3IgdG8KK2NyZWF0ZSBhbiBleGVjdXRhYmxlIHByb2dyYW0uCisKK0xJTkstQ09NTUFORCBpcyBhIGNvbW1hbmQgdXNpbmcgdGhlIEMgY29tcGlsZXIgdGhhdCB5b3Ugd291bGQgdXNlIHRvIGNyZWF0ZQorYSBwcm9ncmFtIGZyb20gc2V2ZXJhbCBvYmplY3QgZmlsZXMuCisKK1RoZSBmb2xsb3dpbmcgY29tcG9uZW50cyBvZiBMSU5LLUNPTU1BTkQgYXJlIHRyZWF0ZWQgc3BlY2lhbGx5OgorCisgIC1hbGwtc3RhdGljICAgICAgIGRvIG5vdCBkbyBhbnkgZHluYW1pYyBsaW5raW5nIGF0IGFsbAorICAtYXZvaWQtdmVyc2lvbiAgICBkbyBub3QgYWRkIGEgdmVyc2lvbiBzdWZmaXggaWYgcG9zc2libGUKKyAgLWRsb3BlbiBGSUxFICAgICAgXGAtZGxwcmVvcGVuJyBGSUxFIGlmIGl0IGNhbm5vdCBiZSBkbG9wZW5lZCBhdCBydW50aW1lCisgIC1kbHByZW9wZW4gRklMRSAgIGxpbmsgaW4gRklMRSBhbmQgYWRkIGl0cyBzeW1ib2xzIHRvIGx0X3ByZWxvYWRlZF9zeW1ib2xzCisgIC1leHBvcnQtZHluYW1pYyAgIGFsbG93IHN5bWJvbHMgZnJvbSBPVVRQVVQtRklMRSB0byBiZSByZXNvbHZlZCB3aXRoIGRsc3ltKDMpCisgIC1leHBvcnQtc3ltYm9scyBTWU1GSUxFCisJCSAgICB0cnkgdG8gZXhwb3J0IG9ubHkgdGhlIHN5bWJvbHMgbGlzdGVkIGluIFNZTUZJTEUKKyAgLWV4cG9ydC1zeW1ib2xzLXJlZ2V4IFJFR0VYCisJCSAgICB0cnkgdG8gZXhwb3J0IG9ubHkgdGhlIHN5bWJvbHMgbWF0Y2hpbmcgUkVHRVgKKyAgLUxMSUJESVIgICAgICAgICAgc2VhcmNoIExJQkRJUiBmb3IgcmVxdWlyZWQgaW5zdGFsbGVkIGxpYnJhcmllcworICAtbE5BTUUgICAgICAgICAgICBPVVRQVVQtRklMRSByZXF1aXJlcyB0aGUgaW5zdGFsbGVkIGxpYnJhcnkgbGliTkFNRQorICAtbW9kdWxlICAgICAgICAgICBidWlsZCBhIGxpYnJhcnkgdGhhdCBjYW4gZGxvcGVuZWQKKyAgLW5vLWZhc3QtaW5zdGFsbCAgZGlzYWJsZSB0aGUgZmFzdC1pbnN0YWxsIG1vZGUKKyAgLW5vLWluc3RhbGwgICAgICAgbGluayBhIG5vdC1pbnN0YWxsYWJsZSBleGVjdXRhYmxlCisgIC1uby11bmRlZmluZWQgICAgIGRlY2xhcmUgdGhhdCBhIGxpYnJhcnkgZG9lcyBub3QgcmVmZXIgdG8gZXh0ZXJuYWwgc3ltYm9scworICAtbyBPVVRQVVQtRklMRSAgICBjcmVhdGUgT1VUUFVULUZJTEUgZnJvbSB0aGUgc3BlY2lmaWVkIG9iamVjdHMKKyAgLW9iamVjdGxpc3QgRklMRSAgVXNlIGEgbGlzdCBvZiBvYmplY3QgZmlsZXMgZm91bmQgaW4gRklMRSB0byBzcGVjaWZ5IG9iamVjdHMKKyAgLXByZWNpb3VzLWZpbGVzLXJlZ2V4IFJFR0VYCisgICAgICAgICAgICAgICAgICAgIGRvbid0IHJlbW92ZSBvdXRwdXQgZmlsZXMgbWF0Y2hpbmcgUkVHRVgKKyAgLXJlbGVhc2UgUkVMRUFTRSAgc3BlY2lmeSBwYWNrYWdlIHJlbGVhc2UgaW5mb3JtYXRpb24KKyAgLXJwYXRoIExJQkRJUiAgICAgdGhlIGNyZWF0ZWQgbGlicmFyeSB3aWxsIGV2ZW50dWFsbHkgYmUgaW5zdGFsbGVkIGluIExJQkRJUgorICAtUlsgXUxJQkRJUiAgICAgICBhZGQgTElCRElSIHRvIHRoZSBydW50aW1lIHBhdGggb2YgcHJvZ3JhbXMgYW5kIGxpYnJhcmllcworICAtc3RhdGljICAgICAgICAgICBkbyBub3QgZG8gYW55IGR5bmFtaWMgbGlua2luZyBvZiBsaWJ0b29sIGxpYnJhcmllcworICAtdmVyc2lvbi1pbmZvIENVUlJFTlRbOlJFVklTSU9OWzpBR0VdXQorCQkgICAgc3BlY2lmeSBsaWJyYXJ5IHZlcnNpb24gaW5mbyBbZWFjaCB2YXJpYWJsZSBkZWZhdWx0cyB0byAwXQorCitBbGwgb3RoZXIgb3B0aW9ucyAoYXJndW1lbnRzIGJlZ2lubmluZyB3aXRoIFxgLScpIGFyZSBpZ25vcmVkLgorCitFdmVyeSBvdGhlciBhcmd1bWVudCBpcyB0cmVhdGVkIGFzIGEgZmlsZW5hbWUuICBGaWxlcyBlbmRpbmcgaW4gXGAubGEnIGFyZQordHJlYXRlZCBhcyB1bmluc3RhbGxlZCBsaWJ0b29sIGxpYnJhcmllcywgb3RoZXIgZmlsZXMgYXJlIHN0YW5kYXJkIG9yIGxpYnJhcnkKK29iamVjdCBmaWxlcy4KKworSWYgdGhlIE9VVFBVVC1GSUxFIGVuZHMgaW4gXGAubGEnLCB0aGVuIGEgbGlidG9vbCBsaWJyYXJ5IGlzIGNyZWF0ZWQsCitvbmx5IGxpYnJhcnkgb2JqZWN0cyAoXGAubG8nIGZpbGVzKSBtYXkgYmUgc3BlY2lmaWVkLCBhbmQgXGAtcnBhdGgnIGlzCityZXF1aXJlZCwgZXhjZXB0IHdoZW4gY3JlYXRpbmcgYSBjb252ZW5pZW5jZSBsaWJyYXJ5LgorCitJZiBPVVRQVVQtRklMRSBlbmRzIGluIFxgLmEnIG9yIFxgLmxpYicsIHRoZW4gYSBzdGFuZGFyZCBsaWJyYXJ5IGlzIGNyZWF0ZWQKK3VzaW5nIFxgYXInIGFuZCBcYHJhbmxpYicsIG9yIG9uIFdpbmRvd3MgdXNpbmcgXGBsaWInLgorCitJZiBPVVRQVVQtRklMRSBlbmRzIGluIFxgLmxvJyBvciBcYC4ke29iamV4dH0nLCB0aGVuIGEgcmVsb2FkYWJsZSBvYmplY3QgZmlsZQoraXMgY3JlYXRlZCwgb3RoZXJ3aXNlIGFuIGV4ZWN1dGFibGUgcHJvZ3JhbSBpcyBjcmVhdGVkLiIKKyAgOzsKKwordW5pbnN0YWxsKQorICAkZWNobyBcCisiVXNhZ2U6ICRtb2RlbmFtZSBbT1BUSU9OXS4uLiAtLW1vZGU9dW5pbnN0YWxsIFJNIFtSTS1PUFRJT05dLi4uIEZJTEUuLi4KKworUmVtb3ZlIGxpYnJhcmllcyBmcm9tIGFuIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuCisKK1JNIGlzIHRoZSBuYW1lIG9mIHRoZSBwcm9ncmFtIHRvIHVzZSB0byBkZWxldGUgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggRklMRQorKHR5cGljYWxseSBcYC9iaW4vcm0nKS4gIFJNLU9QVElPTlMgYXJlIG9wdGlvbnMgKHN1Y2ggYXMgXGAtZicpIHRvIGJlIHBhc3NlZAordG8gUk0uCisKK0lmIEZJTEUgaXMgYSBsaWJ0b29sIGxpYnJhcnksIGFsbCB0aGUgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIGl0IGFyZSBkZWxldGVkLgorT3RoZXJ3aXNlLCBvbmx5IEZJTEUgaXRzZWxmIGlzIGRlbGV0ZWQgdXNpbmcgUk0uIgorICA7OworCisqKQorICAkZWNobyAiJG1vZGVuYW1lOiBpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG1vZGUnIiAxPiYyCisgICRlY2hvICIkaGVscCIgMT4mMgorICBleGl0ICRFWElUX0ZBSUxVUkUKKyAgOzsKK2VzYWMKKworJGVjaG8KKyRlY2hvICJUcnkgXGAkbW9kZW5hbWUgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBvdGhlciBtb2Rlcy4iCisKK2V4aXQgJEVYSVRfU1VDQ0VTUworCisjIFRoZSBUQUdzIGJlbG93IGFyZSBkZWZpbmVkIHN1Y2ggdGhhdCB3ZSBuZXZlciBnZXQgaW50byBhIHNpdHVhdGlvbgorIyBpbiB3aGljaCB3ZSBkaXNhYmxlIGJvdGgga2luZHMgb2YgbGlicmFyaWVzLiAgR2l2ZW4gY29uZmxpY3RpbmcKKyMgY2hvaWNlcywgd2UgZ28gZm9yIGEgc3RhdGljIGxpYnJhcnksIHRoYXQgaXMgdGhlIG1vc3QgcG9ydGFibGUsCisjIHNpbmNlIHdlIGNhbid0IHRlbGwgd2hldGhlciBzaGFyZWQgbGlicmFyaWVzIHdlcmUgZGlzYWJsZWQgYmVjYXVzZQorIyB0aGUgdXNlciBhc2tlZCBmb3IgdGhhdCBvciBiZWNhdXNlIHRoZSBwbGF0Zm9ybSBkb2Vzbid0IHN1cHBvcnQKKyMgdGhlbS4gIFRoaXMgaXMgcGFydGljdWxhcmx5IGltcG9ydGFudCBvbiBBSVgsIGJlY2F1c2Ugd2UgZG9uJ3QKKyMgc3VwcG9ydCBoYXZpbmcgYm90aCBzdGF0aWMgYW5kIHNoYXJlZCBsaWJyYXJpZXMgZW5hYmxlZCBhdCB0aGUgc2FtZQorIyB0aW1lIG9uIHRoYXQgcGxhdGZvcm0sIHNvIHdlIGRlZmF1bHQgdG8gYSBzaGFyZWQtb25seSBjb25maWd1cmF0aW9uLgorIyBJZiBhIGRpc2FibGUtc2hhcmVkIHRhZyBpcyBnaXZlbiwgd2UnbGwgZmFsbGJhY2sgdG8gYSBzdGF0aWMtb25seQorIyBjb25maWd1cmF0aW9uLiAgQnV0IHdlJ2xsIG5ldmVyIGdvIGZyb20gc3RhdGljLW9ubHkgdG8gc2hhcmVkLW9ubHkuCisKKyMgIyMjIEJFR0lOIExJQlRPT0wgVEFHIENPTkZJRzogZGlzYWJsZS1zaGFyZWQKK2J1aWxkX2xpYnRvb2xfbGlicz1ubworYnVpbGRfb2xkX2xpYnM9eWVzCisjICMjIyBFTkQgTElCVE9PTCBUQUcgQ09ORklHOiBkaXNhYmxlLXNoYXJlZAorCisjICMjIyBCRUdJTiBMSUJUT09MIFRBRyBDT05GSUc6IGRpc2FibGUtc3RhdGljCitidWlsZF9vbGRfbGlicz1gY2FzZSAkYnVpbGRfbGlidG9vbF9saWJzIGluIHllcykgJGVjaG8gbm87OyAqKSAkZWNobyB5ZXM7OyBlc2FjYAorIyAjIyMgRU5EIExJQlRPT0wgVEFHIENPTkZJRzogZGlzYWJsZS1zdGF0aWMKKworIyBMb2NhbCBWYXJpYWJsZXM6CisjIG1vZGU6c2hlbGwtc2NyaXB0CisjIHNoLWluZGVudGF0aW9uOjIKKyMgRW5kOgpkaWZmIC0tZ2l0IGEvYy9jb25maWcvbWlzc2luZyBiL2MvY29uZmlnL21pc3NpbmcKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODk0ZTc4NgotLS0gL2Rldi9udWxsCisrKyBiL2MvY29uZmlnL21pc3NpbmcKQEAgLTAsMCArMSwzNjAgQEAKKyMhIC9iaW4vc2gKKyMgQ29tbW9uIHN0dWIgZm9yIGEgZmV3IG1pc3NpbmcgR05VIHByb2dyYW1zIHdoaWxlIGluc3RhbGxpbmcuCisKK3NjcmlwdHZlcnNpb249MjAwNS0wNi0wOC4yMQorCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OSwgMjAwMCwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNQorIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBPcmlnaW5hbGx5IGJ5IEZyYW4sY29pcyBQaW5hcmQgPHBpbmFyZEBpcm8udW1vbnRyZWFsLmNhPiwgMTk5Ni4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisjIGFueSBsYXRlciB2ZXJzaW9uLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQorIyAwMjExMC0xMzAxLCBVU0EuCisKKyMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQorIyBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKKyMgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUgaXQgdW5kZXIKKyMgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIHRoYXQgeW91IHVzZSBmb3IgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgorCitpZiB0ZXN0ICQjIC1lcSAwOyB0aGVuCisgIGVjaG8gMT4mMiAiVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiIKKyAgZXhpdCAxCitmaQorCitydW49OgorCisjIEluIHRoZSBjYXNlcyB3aGVyZSB0aGlzIG1hdHRlcnMsIGBtaXNzaW5nJyBpcyBiZWluZyBydW4gaW4gdGhlCisjIHNyY2RpciBhbHJlYWR5LgoraWYgdGVzdCAtZiBjb25maWd1cmUuYWM7IHRoZW4KKyAgY29uZmlndXJlX2FjPWNvbmZpZ3VyZS5hYworZWxzZQorICBjb25maWd1cmVfYWM9Y29uZmlndXJlLmluCitmaQorCittc2c9Im1pc3Npbmcgb24geW91ciBzeXN0ZW0iCisKK2Nhc2UgIiQxIiBpbgorLS1ydW4pCisgICMgVHJ5IHRvIHJ1biByZXF1ZXN0ZWQgcHJvZ3JhbSwgYW5kIGp1c3QgZXhpdCBpZiBpdCBzdWNjZWVkcy4KKyAgcnVuPQorICBzaGlmdAorICAiJEAiICYmIGV4aXQgMAorICAjIEV4aXQgY29kZSA2MyBtZWFucyB2ZXJzaW9uIG1pc21hdGNoLiAgVGhpcyBvZnRlbiBoYXBwZW5zCisgICMgd2hlbiB0aGUgdXNlciB0cnkgdG8gdXNlIGFuIGFuY2llbnQgdmVyc2lvbiBvZiBhIHRvb2wgb24KKyAgIyBhIGZpbGUgdGhhdCByZXF1aXJlcyBhIG1pbmltdW0gdmVyc2lvbi4gIEluIHRoaXMgY2FzZSB3ZQorICAjIHdlIHNob3VsZCBwcm9jZWVkIGhhcyBpZiB0aGUgcHJvZ3JhbSBoYWQgYmVlbiBhYnNlbnQsIG9yCisgICMgaWYgLS1ydW4gaGFkbid0IGJlZW4gcGFzc2VkLgorICBpZiB0ZXN0ICQ/ID0gNjM7IHRoZW4KKyAgICBydW49OgorICAgIG1zZz0icHJvYmFibHkgdG9vIG9sZCIKKyAgZmkKKyAgOzsKKworICAtaHwtLWh8LS1oZXwtLWhlbHwtLWhlbHApCisgICAgZWNobyAiXAorJDAgW09QVElPTl0uLi4gUFJPR1JBTSBbQVJHVU1FTlRdLi4uCisKK0hhbmRsZSBcYFBST0dSQU0gW0FSR1VNRU5UXS4uLicgZm9yIHdoZW4gUFJPR1JBTSBpcyBtaXNzaW5nLCBvciByZXR1cm4gYW4KK2Vycm9yIHN0YXR1cyBpZiB0aGVyZSBpcyBubyBrbm93biBoYW5kbGluZyBmb3IgUFJPR1JBTS4KKworT3B0aW9uczoKKyAgLWgsIC0taGVscCAgICAgIGRpc3BsYXkgdGhpcyBoZWxwIGFuZCBleGl0CisgIC12LCAtLXZlcnNpb24gICBvdXRwdXQgdmVyc2lvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdAorICAtLXJ1biAgICAgICAgICAgdHJ5IHRvIHJ1biB0aGUgZ2l2ZW4gY29tbWFuZCwgYW5kIGVtdWxhdGUgaXQgaWYgaXQgZmFpbHMKKworU3VwcG9ydGVkIFBST0dSQU0gdmFsdWVzOgorICBhY2xvY2FsICAgICAgdG91Y2ggZmlsZSBcYGFjbG9jYWwubTQnCisgIGF1dG9jb25mICAgICB0b3VjaCBmaWxlIFxgY29uZmlndXJlJworICBhdXRvaGVhZGVyICAgdG91Y2ggZmlsZSBcYGNvbmZpZy5oLmluJworICBhdXRvbWFrZSAgICAgdG91Y2ggYWxsIFxgTWFrZWZpbGUuaW4nIGZpbGVzCisgIGJpc29uICAgICAgICBjcmVhdGUgXGB5LnRhYi5bY2hdJywgaWYgcG9zc2libGUsIGZyb20gZXhpc3RpbmcgLltjaF0KKyAgZmxleCAgICAgICAgIGNyZWF0ZSBcYGxleC55eS5jJywgaWYgcG9zc2libGUsIGZyb20gZXhpc3RpbmcgLmMKKyAgaGVscDJtYW4gICAgIHRvdWNoIHRoZSBvdXRwdXQgZmlsZQorICBsZXggICAgICAgICAgY3JlYXRlIFxgbGV4Lnl5LmMnLCBpZiBwb3NzaWJsZSwgZnJvbSBleGlzdGluZyAuYworICBtYWtlaW5mbyAgICAgdG91Y2ggdGhlIG91dHB1dCBmaWxlCisgIHRhciAgICAgICAgICB0cnkgdGFyLCBnbnV0YXIsIGd0YXIsIHRoZW4gdGFyIHdpdGhvdXQgbm9uLXBvcnRhYmxlIGZsYWdzCisgIHlhY2MgICAgICAgICBjcmVhdGUgXGB5LnRhYi5bY2hdJywgaWYgcG9zc2libGUsIGZyb20gZXhpc3RpbmcgLltjaF0KKworU2VuZCBidWcgcmVwb3J0cyB0byA8YnVnLWF1dG9tYWtlQGdudS5vcmc+LiIKKyAgICBleGl0ICQ/CisgICAgOzsKKworICAtdnwtLXZ8LS12ZXwtLXZlcnwtLXZlcnN8LS12ZXJzaXwtLXZlcnNpb3wtLXZlcnNpb24pCisgICAgZWNobyAibWlzc2luZyAkc2NyaXB0dmVyc2lvbiAoR05VIEF1dG9tYWtlKSIKKyAgICBleGl0ICQ/CisgICAgOzsKKworICAtKikKKyAgICBlY2hvIDE+JjIgIiQwOiBVbmtub3duIFxgJDEnIG9wdGlvbiIKKyAgICBlY2hvIDE+JjIgIlRyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24iCisgICAgZXhpdCAxCisgICAgOzsKKworZXNhYworCisjIE5vdyBleGl0IGlmIHdlIGhhdmUgaXQsIGJ1dCBpdCBmYWlsZWQuICBBbHNvIGV4aXQgbm93IGlmIHdlCisjIGRvbid0IGhhdmUgaXQgYW5kIC0tdmVyc2lvbiB3YXMgcGFzc2VkIChtb3N0IGxpa2VseSB0byBkZXRlY3QKKyMgdGhlIHByb2dyYW0pLgorY2FzZSAiJDEiIGluCisgIGxleHx5YWNjKQorICAgICMgTm90IEdOVSBwcm9ncmFtcywgdGhleSBkb24ndCBoYXZlIC0tdmVyc2lvbi4KKyAgICA7OworCisgIHRhcikKKyAgICBpZiB0ZXN0IC1uICIkcnVuIjsgdGhlbgorICAgICAgIGVjaG8gMT4mMiAiRVJST1I6IFxgdGFyJyByZXF1aXJlcyAtLXJ1biIKKyAgICAgICBleGl0IDEKKyAgICBlbGlmIHRlc3QgIngkMiIgPSAieC0tdmVyc2lvbiIgfHwgdGVzdCAieCQyIiA9ICJ4LS1oZWxwIjsgdGhlbgorICAgICAgIGV4aXQgMQorICAgIGZpCisgICAgOzsKKworICAqKQorICAgIGlmIHRlc3QgLXogIiRydW4iICYmICgkMSAtLXZlcnNpb24pID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICAgICAjIFdlIGhhdmUgaXQsIGJ1dCBpdCBmYWlsZWQuCisgICAgICAgZXhpdCAxCisgICAgZWxpZiB0ZXN0ICJ4JDIiID0gIngtLXZlcnNpb24iIHx8IHRlc3QgIngkMiIgPSAieC0taGVscCI7IHRoZW4KKyAgICAgICAjIENvdWxkIG5vdCBydW4gLS12ZXJzaW9uIG9yIC0taGVscC4gIFRoaXMgaXMgcHJvYmFibHkgc29tZW9uZQorICAgICAgICMgcnVubmluZyBgJFRPT0wgLS12ZXJzaW9uJyBvciBgJFRPT0wgLS1oZWxwJyB0byBjaGVjayB3aGV0aGVyCisgICAgICAgIyAkVE9PTCBleGlzdHMgYW5kIG5vdCBrbm93aW5nICRUT09MIHVzZXMgbWlzc2luZy4KKyAgICAgICBleGl0IDEKKyAgICBmaQorICAgIDs7Citlc2FjCisKKyMgSWYgaXQgZG9lcyBub3QgZXhpc3QsIG9yIGZhaWxzIHRvIHJ1biAocG9zc2libHkgYW4gb3V0ZGF0ZWQgdmVyc2lvbiksCisjIHRyeSB0byBlbXVsYXRlIGl0LgorY2FzZSAiJDEiIGluCisgIGFjbG9jYWwqKQorICAgIGVjaG8gMT4mMiAiXAorV0FSTklORzogXGAkMScgaXMgJG1zZy4gIFlvdSBzaG91bGQgb25seSBuZWVkIGl0IGlmCisgICAgICAgICB5b3UgbW9kaWZpZWQgXGBhY2luY2x1ZGUubTQnIG9yIFxgJHtjb25maWd1cmVfYWN9Jy4gIFlvdSBtaWdodCB3YW50CisgICAgICAgICB0byBpbnN0YWxsIHRoZSBcYEF1dG9tYWtlJyBhbmQgXGBQZXJsJyBwYWNrYWdlcy4gIEdyYWIgdGhlbSBmcm9tCisgICAgICAgICBhbnkgR05VIGFyY2hpdmUgc2l0ZS4iCisgICAgdG91Y2ggYWNsb2NhbC5tNAorICAgIDs7CisKKyAgYXV0b2NvbmYpCisgICAgZWNobyAxPiYyICJcCitXQVJOSU5HOiBcYCQxJyBpcyAkbXNnLiAgWW91IHNob3VsZCBvbmx5IG5lZWQgaXQgaWYKKyAgICAgICAgIHlvdSBtb2RpZmllZCBcYCR7Y29uZmlndXJlX2FjfScuICBZb3UgbWlnaHQgd2FudCB0byBpbnN0YWxsIHRoZQorICAgICAgICAgXGBBdXRvY29uZicgYW5kIFxgR05VIG00JyBwYWNrYWdlcy4gIEdyYWIgdGhlbSBmcm9tIGFueSBHTlUKKyAgICAgICAgIGFyY2hpdmUgc2l0ZS4iCisgICAgdG91Y2ggY29uZmlndXJlCisgICAgOzsKKworICBhdXRvaGVhZGVyKQorICAgIGVjaG8gMT4mMiAiXAorV0FSTklORzogXGAkMScgaXMgJG1zZy4gIFlvdSBzaG91bGQgb25seSBuZWVkIGl0IGlmCisgICAgICAgICB5b3UgbW9kaWZpZWQgXGBhY2NvbmZpZy5oJyBvciBcYCR7Y29uZmlndXJlX2FjfScuICBZb3UgbWlnaHQgd2FudAorICAgICAgICAgdG8gaW5zdGFsbCB0aGUgXGBBdXRvY29uZicgYW5kIFxgR05VIG00JyBwYWNrYWdlcy4gIEdyYWIgdGhlbQorICAgICAgICAgZnJvbSBhbnkgR05VIGFyY2hpdmUgc2l0ZS4iCisgICAgZmlsZXM9YHNlZCAtbiAncy9eWyBdKkFbQ01dX0NPTkZJR19IRUFERVIoXChbXildKlwpKS4qL1wxL3AnICR7Y29uZmlndXJlX2FjfWAKKyAgICB0ZXN0IC16ICIkZmlsZXMiICYmIGZpbGVzPSJjb25maWcuaCIKKyAgICB0b3VjaF9maWxlcz0KKyAgICBmb3IgZiBpbiAkZmlsZXM7IGRvCisgICAgICBjYXNlICIkZiIgaW4KKyAgICAgICo6KikgdG91Y2hfZmlsZXM9IiR0b3VjaF9maWxlcyAiYGVjaG8gIiRmIiB8CisJCQkJICAgICAgIHNlZCAtZSAncy9eW146XSo6Ly8nIC1lICdzLzouKi8vJ2A7OworICAgICAgKikgdG91Y2hfZmlsZXM9IiR0b3VjaF9maWxlcyAkZi5pbiI7OworICAgICAgZXNhYworICAgIGRvbmUKKyAgICB0b3VjaCAkdG91Y2hfZmlsZXMKKyAgICA7OworCisgIGF1dG9tYWtlKikKKyAgICBlY2hvIDE+JjIgIlwKK1dBUk5JTkc6IFxgJDEnIGlzICRtc2cuICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgorICAgICAgICAgeW91IG1vZGlmaWVkIFxgTWFrZWZpbGUuYW0nLCBcYGFjaW5jbHVkZS5tNCcgb3IgXGAke2NvbmZpZ3VyZV9hY30nLgorICAgICAgICAgWW91IG1pZ2h0IHdhbnQgdG8gaW5zdGFsbCB0aGUgXGBBdXRvbWFrZScgYW5kIFxgUGVybCcgcGFja2FnZXMuCisgICAgICAgICBHcmFiIHRoZW0gZnJvbSBhbnkgR05VIGFyY2hpdmUgc2l0ZS4iCisgICAgZmluZCAuIC10eXBlIGYgLW5hbWUgTWFrZWZpbGUuYW0gLXByaW50IHwKKwkgICBzZWQgJ3MvXC5hbSQvLmluLycgfAorCSAgIHdoaWxlIHJlYWQgZjsgZG8gdG91Y2ggIiRmIjsgZG9uZQorICAgIDs7CisKKyAgYXV0b200dGUpCisgICAgZWNobyAxPiYyICJcCitXQVJOSU5HOiBcYCQxJyBpcyBuZWVkZWQsIGJ1dCBpcyAkbXNnLgorICAgICAgICAgWW91IG1pZ2h0IGhhdmUgbW9kaWZpZWQgc29tZSBmaWxlcyB3aXRob3V0IGhhdmluZyB0aGUKKyAgICAgICAgIHByb3BlciB0b29scyBmb3IgZnVydGhlciBoYW5kbGluZyB0aGVtLgorICAgICAgICAgWW91IGNhbiBnZXQgXGAkMScgYXMgcGFydCBvZiBcYEF1dG9jb25mJyBmcm9tIGFueSBHTlUKKyAgICAgICAgIGFyY2hpdmUgc2l0ZS4iCisKKyAgICBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gJ3MvLiotLW91dHB1dFsgPV0qXChbXiBdKlwpLiovXDEvcCdgCisgICAgdGVzdCAteiAiJGZpbGUiICYmIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAncy8uKi1vWyBdKlwoW14gXSpcKS4qL1wxL3AnYAorICAgIGlmIHRlc3QgLWYgIiRmaWxlIjsgdGhlbgorCXRvdWNoICRmaWxlCisgICAgZWxzZQorCXRlc3QgLXogIiRmaWxlIiB8fCBleGVjID4kZmlsZQorCWVjaG8gIiMhIC9iaW4vc2giCisJZWNobyAiIyBDcmVhdGVkIGJ5IEdOVSBBdXRvbWFrZSBtaXNzaW5nIGFzIGEgcmVwbGFjZW1lbnQgb2YiCisJZWNobyAiIyAgJCAkQCIKKwllY2hvICJleGl0IDAiCisJY2htb2QgK3ggJGZpbGUKKwlleGl0IDEKKyAgICBmaQorICAgIDs7CisKKyAgYmlzb258eWFjYykKKyAgICBlY2hvIDE+JjIgIlwKK1dBUk5JTkc6IFxgJDEnICRtc2cuICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgorICAgICAgICAgeW91IG1vZGlmaWVkIGEgXGAueScgZmlsZS4gIFlvdSBtYXkgbmVlZCB0aGUgXGBCaXNvbicgcGFja2FnZQorICAgICAgICAgaW4gb3JkZXIgZm9yIHRob3NlIG1vZGlmaWNhdGlvbnMgdG8gdGFrZSBlZmZlY3QuICBZb3UgY2FuIGdldAorICAgICAgICAgXGBCaXNvbicgZnJvbSBhbnkgR05VIGFyY2hpdmUgc2l0ZS4iCisgICAgcm0gLWYgeS50YWIuYyB5LnRhYi5oCisgICAgaWYgWyAkIyAtbmUgMSBdOyB0aGVuCisgICAgICAgIGV2YWwgTEFTVEFSRz0iXCR7JCN9IgorCWNhc2UgIiRMQVNUQVJHIiBpbgorCSoueSkKKwkgICAgU1JDRklMRT1gZWNobyAiJExBU1RBUkciIHwgc2VkICdzL3kkL2MvJ2AKKwkgICAgaWYgWyAtZiAiJFNSQ0ZJTEUiIF07IHRoZW4KKwkgICAgICAgICBjcCAiJFNSQ0ZJTEUiIHkudGFiLmMKKwkgICAgZmkKKwkgICAgU1JDRklMRT1gZWNobyAiJExBU1RBUkciIHwgc2VkICdzL3kkL2gvJ2AKKwkgICAgaWYgWyAtZiAiJFNSQ0ZJTEUiIF07IHRoZW4KKwkgICAgICAgICBjcCAiJFNSQ0ZJTEUiIHkudGFiLmgKKwkgICAgZmkKKwkgIDs7CisJZXNhYworICAgIGZpCisgICAgaWYgWyAhIC1mIHkudGFiLmggXTsgdGhlbgorCWVjaG8gPnkudGFiLmgKKyAgICBmaQorICAgIGlmIFsgISAtZiB5LnRhYi5jIF07IHRoZW4KKwllY2hvICdtYWluKCkgeyByZXR1cm4gMDsgfScgPnkudGFiLmMKKyAgICBmaQorICAgIDs7CisKKyAgbGV4fGZsZXgpCisgICAgZWNobyAxPiYyICJcCitXQVJOSU5HOiBcYCQxJyBpcyAkbXNnLiAgWW91IHNob3VsZCBvbmx5IG5lZWQgaXQgaWYKKyAgICAgICAgIHlvdSBtb2RpZmllZCBhIFxgLmwnIGZpbGUuICBZb3UgbWF5IG5lZWQgdGhlIFxgRmxleCcgcGFja2FnZQorICAgICAgICAgaW4gb3JkZXIgZm9yIHRob3NlIG1vZGlmaWNhdGlvbnMgdG8gdGFrZSBlZmZlY3QuICBZb3UgY2FuIGdldAorICAgICAgICAgXGBGbGV4JyBmcm9tIGFueSBHTlUgYXJjaGl2ZSBzaXRlLiIKKyAgICBybSAtZiBsZXgueXkuYworICAgIGlmIFsgJCMgLW5lIDEgXTsgdGhlbgorICAgICAgICBldmFsIExBU1RBUkc9IlwkeyQjfSIKKwljYXNlICIkTEFTVEFSRyIgaW4KKwkqLmwpCisJICAgIFNSQ0ZJTEU9YGVjaG8gIiRMQVNUQVJHIiB8IHNlZCAncy9sJC9jLydgCisJICAgIGlmIFsgLWYgIiRTUkNGSUxFIiBdOyB0aGVuCisJICAgICAgICAgY3AgIiRTUkNGSUxFIiBsZXgueXkuYworCSAgICBmaQorCSAgOzsKKwllc2FjCisgICAgZmkKKyAgICBpZiBbICEgLWYgbGV4Lnl5LmMgXTsgdGhlbgorCWVjaG8gJ21haW4oKSB7IHJldHVybiAwOyB9JyA+bGV4Lnl5LmMKKyAgICBmaQorICAgIDs7CisKKyAgaGVscDJtYW4pCisgICAgZWNobyAxPiYyICJcCitXQVJOSU5HOiBcYCQxJyBpcyAkbXNnLiAgWW91IHNob3VsZCBvbmx5IG5lZWQgaXQgaWYKKwkgeW91IG1vZGlmaWVkIGEgZGVwZW5kZW5jeSBvZiBhIG1hbnVhbCBwYWdlLiAgWW91IG1heSBuZWVkIHRoZQorCSBcYEhlbHAybWFuJyBwYWNrYWdlIGluIG9yZGVyIGZvciB0aG9zZSBtb2RpZmljYXRpb25zIHRvIHRha2UKKwkgZWZmZWN0LiAgWW91IGNhbiBnZXQgXGBIZWxwMm1hbicgZnJvbSBhbnkgR05VIGFyY2hpdmUgc2l0ZS4iCisKKyAgICBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gJ3MvLiotbyBcKFteIF0qXCkuKi9cMS9wJ2AKKyAgICBpZiB0ZXN0IC16ICIkZmlsZSI7IHRoZW4KKwlmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gJ3MvLiotLW91dHB1dD1cKFteIF0qXCkuKi9cMS9wJ2AKKyAgICBmaQorICAgIGlmIFsgLWYgIiRmaWxlIiBdOyB0aGVuCisJdG91Y2ggJGZpbGUKKyAgICBlbHNlCisJdGVzdCAteiAiJGZpbGUiIHx8IGV4ZWMgPiRmaWxlCisJZWNobyAiLmFiIGhlbHAybWFuIGlzIHJlcXVpcmVkIHRvIGdlbmVyYXRlIHRoaXMgcGFnZSIKKwlleGl0IDEKKyAgICBmaQorICAgIDs7CisKKyAgbWFrZWluZm8pCisgICAgZWNobyAxPiYyICJcCitXQVJOSU5HOiBcYCQxJyBpcyAkbXNnLiAgWW91IHNob3VsZCBvbmx5IG5lZWQgaXQgaWYKKyAgICAgICAgIHlvdSBtb2RpZmllZCBhIFxgLnRleGknIG9yIFxgLnRleGluZm8nIGZpbGUsIG9yIGFueSBvdGhlciBmaWxlCisgICAgICAgICBpbmRpcmVjdGx5IGFmZmVjdGluZyB0aGUgYXNwZWN0IG9mIHRoZSBtYW51YWwuICBUaGUgc3B1cmlvdXMKKyAgICAgICAgIGNhbGwgbWlnaHQgYWxzbyBiZSB0aGUgY29uc2VxdWVuY2Ugb2YgdXNpbmcgYSBidWdneSBcYG1ha2UnIChBSVgsCisgICAgICAgICBEVSwgSVJJWCkuICBZb3UgbWlnaHQgd2FudCB0byBpbnN0YWxsIHRoZSBcYFRleGluZm8nIHBhY2thZ2Ugb3IKKyAgICAgICAgIHRoZSBcYEdOVSBtYWtlJyBwYWNrYWdlLiAgR3JhYiBlaXRoZXIgZnJvbSBhbnkgR05VIGFyY2hpdmUgc2l0ZS4iCisgICAgIyBUaGUgZmlsZSB0byB0b3VjaCBpcyB0aGF0IHNwZWNpZmllZCB3aXRoIC1vIC4uLgorICAgIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAncy8uKi1vIFwoW14gXSpcKS4qL1wxL3AnYAorICAgIGlmIHRlc3QgLXogIiRmaWxlIjsgdGhlbgorICAgICAgIyAuLi4gb3IgaXQgaXMgdGhlIG9uZSBzcGVjaWZpZWQgd2l0aCBAc2V0ZmlsZW5hbWUgLi4uCisgICAgICBpbmZpbGU9YGVjaG8gIiQqIiB8IHNlZCAncy8uKiBcKFteIF0qXCkgKiQvXDEvJ2AKKyAgICAgIGZpbGU9YHNlZCAtbiAnL15Ac2V0ZmlsZW5hbWUvIHsgcy8uKiBcKFteIF0qXCkgKiQvXDEvOyBwOyBxOyB9JyAkaW5maWxlYAorICAgICAgIyAuLi4gb3IgaXQgaXMgZGVyaXZlZCBmcm9tIHRoZSBzb3VyY2UgbmFtZSAoZGlyL2YudGV4aSBiZWNvbWVzIGYuaW5mbykKKyAgICAgIHRlc3QgLXogIiRmaWxlIiAmJiBmaWxlPWBlY2hvICIkaW5maWxlIiB8IHNlZCAncywuKi8sLDtzLC5bXi5dKiQsLCdgLmluZm8KKyAgICBmaQorICAgICMgSWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3QsIHRoZSB1c2VyIHJlYWxseSBuZWVkcyBtYWtlaW5mbzsKKyAgICAjIGxldCdzIGZhaWwgd2l0aG91dCB0b3VjaGluZyBhbnl0aGluZy4KKyAgICB0ZXN0IC1mICRmaWxlIHx8IGV4aXQgMQorICAgIHRvdWNoICRmaWxlCisgICAgOzsKKworICB0YXIpCisgICAgc2hpZnQKKworICAgICMgV2UgaGF2ZSBhbHJlYWR5IHRyaWVkIHRhciBpbiB0aGUgZ2VuZXJpYyBwYXJ0LgorICAgICMgTG9vayBmb3IgZ251dGFyL2d0YXIgYmVmb3JlIGludm9jYXRpb24gdG8gYXZvaWQgdWdseSBlcnJvcgorICAgICMgbWVzc2FnZXMuCisgICAgaWYgKGdudXRhciAtLXZlcnNpb24gPiAvZGV2L251bGwgMj4mMSk7IHRoZW4KKyAgICAgICBnbnV0YXIgIiRAIiAmJiBleGl0IDAKKyAgICBmaQorICAgIGlmIChndGFyIC0tdmVyc2lvbiA+IC9kZXYvbnVsbCAyPiYxKTsgdGhlbgorICAgICAgIGd0YXIgIiRAIiAmJiBleGl0IDAKKyAgICBmaQorICAgIGZpcnN0YXJnPSIkMSIKKyAgICBpZiBzaGlmdDsgdGhlbgorCWNhc2UgIiRmaXJzdGFyZyIgaW4KKwkqbyopCisJICAgIGZpcnN0YXJnPWBlY2hvICIkZmlyc3RhcmciIHwgc2VkIHMvby8vYAorCSAgICB0YXIgIiRmaXJzdGFyZyIgIiRAIiAmJiBleGl0IDAKKwkgICAgOzsKKwllc2FjCisJY2FzZSAiJGZpcnN0YXJnIiBpbgorCSpoKikKKwkgICAgZmlyc3Rhcmc9YGVjaG8gIiRmaXJzdGFyZyIgfCBzZWQgcy9oLy9gCisJICAgIHRhciAiJGZpcnN0YXJnIiAiJEAiICYmIGV4aXQgMAorCSAgICA7OworCWVzYWMKKyAgICBmaQorCisgICAgZWNobyAxPiYyICJcCitXQVJOSU5HOiBJIGNhbid0IHNlZW0gdG8gYmUgYWJsZSB0byBydW4gXGB0YXInIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cy4KKyAgICAgICAgIFlvdSBtYXkgd2FudCB0byBpbnN0YWxsIEdOVSB0YXIgb3IgRnJlZSBwYXh1dGlscywgb3IgY2hlY2sgdGhlCisgICAgICAgICBjb21tYW5kIGxpbmUgYXJndW1lbnRzLiIKKyAgICBleGl0IDEKKyAgICA7OworCisgICopCisgICAgZWNobyAxPiYyICJcCitXQVJOSU5HOiBcYCQxJyBpcyBuZWVkZWQsIGFuZCBpcyAkbXNnLgorICAgICAgICAgWW91IG1pZ2h0IGhhdmUgbW9kaWZpZWQgc29tZSBmaWxlcyB3aXRob3V0IGhhdmluZyB0aGUKKyAgICAgICAgIHByb3BlciB0b29scyBmb3IgZnVydGhlciBoYW5kbGluZyB0aGVtLiAgQ2hlY2sgdGhlIFxgUkVBRE1FJyBmaWxlLAorICAgICAgICAgaXQgb2Z0ZW4gdGVsbHMgeW91IGFib3V0IHRoZSBuZWVkZWQgcHJlcmVxdWlzaXRlcyBmb3IgaW5zdGFsbGluZworICAgICAgICAgdGhpcyBwYWNrYWdlLiAgWW91IG1heSBhbHNvIHBlZWsgYXQgYW55IEdOVSBhcmNoaXZlIHNpdGUsIGluIGNhc2UKKyAgICAgICAgIHNvbWUgb3RoZXIgcGFja2FnZSB3b3VsZCBjb250YWluIHRoaXMgbWlzc2luZyBcYCQxJyBwcm9ncmFtLiIKKyAgICBleGl0IDEKKyAgICA7OworZXNhYworCitleGl0IDAKKworIyBMb2NhbCB2YXJpYWJsZXM6CisjIGV2YWw6IChhZGQtaG9vayAnd3JpdGUtZmlsZS1ob29rcyAndGltZS1zdGFtcCkKKyMgdGltZS1zdGFtcC1zdGFydDogInNjcmlwdHZlcnNpb249IgorIyB0aW1lLXN0YW1wLWZvcm1hdDogIiU6eS0lMDJtLSUwMmQuJTAySCIKKyMgdGltZS1zdGFtcC1lbmQ6ICIkIgorIyBFbmQ6CmRpZmYgLS1naXQgYS9jL2NvbmZpZ3VyZS5hYyBiL2MvY29uZmlndXJlLmFjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzNTQwZGEKLS0tIC9kZXYvbnVsbAorKysgYi9jL2NvbmZpZ3VyZS5hYwpAQCAtMCwwICsxLDEwMDIgQEAKKyMgQ29weXJpZ2h0IDIwMDItMjAwNiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisjCisjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorIworIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyMgQWxsIHRoZXNlIHNldHRpbmcgY29tZSBmcm9tIHRoZSBjb25maWd1cmUgc2NyaXB0CisjIFdlIHVzZSBjb25maWd1cmUgdG8gZG8gbW9zdCBvZiB0aGUgaGFyZCB3b3JrIGFzIGl0IGlzIG1vcmUKKyMgZGVzaWduZWQgdG8gaGFuZGxlIGRpZmZlcmVudCBzeXN0ZW0gY29tcGxleGl0eSB0aGFuIG1ha2UKKyMKKworIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9jb25mIHRvIHByb2R1Y2UgYSBjb25maWd1cmUgc2NyaXB0CisKK0FDX0lOSVQoW1tYTUwtU2VjdXJpdHktQ11dLCBbMS42LjBdLCBbc2VjdXJpdHktZGV2QHhtbC5hcGFjaGUub3JnXSwgW3htbC1zZWN1cml0eS1jXSkKK0FDX0NPTkZJR19BVVhfRElSKFtjb25maWddKQorCisjIGtpY2sgb2ZmIGF1dG9tYWtlCisKK0FNX0lOSVRfQVVUT01BS0UoeG1sLXNlY3VyaXR5LWMsIDEuNi4wKQorc2luY2x1ZGUobTQvYWN4X3B0aHJlYWQubTQpCitBTV9QUk9HX0xJQlRPT0wKKworIyBXZSB3YW50IHRvIGNvbnRyb2wgdGhlIGF1dG90b29scyBpbnZvY2F0aW9uCisKK0FNX01BSU5UQUlORVJfTU9ERQorCisjIGZyYW1ld29yayBpcyBhIHVuaXF1ZSBkaXJlY3RvcnkgaW4gc3JjLyAtIGFsbG93cyBjb25maWd1cmUgdG8gY2hlY2sKKyMgaXQgaXMgcnVubmluZyBpbiB0aGUgY29ycmVjdCBkaXJlY3RvcnkKKworQUNfQ09ORklHX1NSQ0RJUihzcmMpCisKKyMgRGVmaW5lIHRoZSBmaWxlcyB3ZSB3aXNoIHRvIGdlbmVyYXRlCisKK0FDX0NPTkZJR19GSUxFUyhbTWFrZWZpbGVcCisgIGxpYi9NYWtlZmlsZSBcCisgIGluY2x1ZGUvTWFrZWZpbGUgXAorICBiaW4vTWFrZWZpbGUgXSkKKworIyBBQ19DT05GSUdfRklMRVMoW01ha2VmaWxlIGNhbm9uL01ha2VmaWxlIHRyYW5zZm9ybWVycy9NYWtlZmlsZSBkc2lnL01ha2VmaWxlIGVuYy9NYWtlZmlsZSBlbmMvT3BlblNTTC9NYWtlZmlsZSBmcmFtZXdvcmsvTWFrZWZpbGUgdXRpbHMvTWFrZWZpbGUgdXRpbHMvdW5peHV0aWxzL01ha2VmaWxlIHRvb2xzL01ha2VmaWxlIHNhbXBsZXMvTWFrZWZpbGVdKQorQUNfQ09ORklHX0hFQURFUlMoW3NyYy9mcmFtZXdvcmsvWFNFQ0NvbmZpZy5ocHBdKQorCisjIEdldCB1c2VyIG9wdGlvbnMKKworQUNfQVJHX1dJVEgoeGVyY2VzLCAKKwlBQ19IRUxQX1NUUklORygtLXdpdGgteGVyY2VzLCAKKwkJW0RlZmluZSBYZXJjZXMgZGlyZWN0b3J5LiAgVmFsdWVzID0gJ3llcycgb3IgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeS4gJ05vJyBpcyBub3QgcGVybWl0dGVkIChEZWZhdWx0ID0geWVzKV0pLCAKKwl1c2VfeGVyY2VzPSR3aXRodmFsLCB1c2VfeGVyY2VzPXllcykKKworaWYgdGVzdCB4IiR1c2VfeGVyY2VzIiAhPSAieHllcyIgOyB0aGVuCisgIGlmIHRlc3QgeCIkdXNlX3hlcmNlcyIgIT0gInhubyIgOyB0aGVuCisgICAgWEVSQ0VTQ1JPT1Q9JHVzZV94ZXJjZXMKKyAgZWxzZQorICAgIEFDX01TR19FUlJPUihbQ2Fubm90IGNvbmZpZ3VyZSB3aXRob3V0IFhlcmNlc10pCisgIGZpCitmaQorCisKK0FDX0FSR19XSVRIKHhhbGFuLCAKKwlBQ19IRUxQX1NUUklORygtLXdpdGgteGFsYW4sIAorCQlbRW5hYmxlIFhhbGFuIGludGVncmF0aW9uLiAgVmFsdWVzID0gJ3llcycgb3IgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSAoRGVmYXVsdCA9IHllcyldKSwgCisJdXNlX3hhbGFuPSR3aXRodmFsLCB1c2VfeGFsYW49eWVzKQorCitpZiB0ZXN0IHgiJHVzZV94YWxhbiIgIT0gInh5ZXMiIDsgdGhlbgorICBpZiB0ZXN0IHgiJHVzZV94YWxhbiIgIT0gInhubyIgOyB0aGVuCisgICAgWEFMQU5DUk9PVD0kdXNlX3hhbGFuCisgIGZpCitmaQorCitBQ19BUkdfV0lUSChvcGVuc3NsLAorICAgIEFDX0hFTFBfU1RSSU5HKC0td2l0aC1vcGVuc3NsLAorICAgICAgICBbVXNlIE9wZW5zc2wuICBWYWx1ZXMgPSAneWVzJyBvciBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IChEZWZhdWx0ID0geWVzKV0pLAorICAgIHVzZV9vcGVuc3NsPSR3aXRodmFsLCB1c2Vfb3BlbnNzbD15ZXMpCisKK2lmIHRlc3QgeCIkdXNlX29wZW5zc2wiICE9ICJ4eWVzIiA7IHRoZW4KKyAgaWYgdGVzdCB4IiR1c2Vfb3BlbnNzbCIgIT0gInhubyIgOyB0aGVuCisgICAgIyBNdXN0IGJlIHRoZSBzb3VyY2UgZGlyZWN0b3J5CisgICAgT1BFTlNTTD0kdXNlX29wZW5zc2wKKyAgZmkKK2ZpCisKK0FDX0FSR19FTkFCTEUoZGVidWcsCisJQUNfSEVMUF9TVFJJTkcoLS1lbmFibGUtZGVidWcsCisJCVtDb21waWxlIGEgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSB3aXRoIHN5bWJvbHMgKERlZmF1bHQgPSBubyldKSwKKwllbmFibGVfZGVidWc9JGVuYWJsZXZhbCwgZW5hYmxlX2RlYnVnPW5vKQorCisjIEFzIG9mIHZlcnNpb24gMS4zLCBieSBkZWZhdWx0IHRyZWF0IHdhcm5pbmdzIGFzIGVycm9ycworCitBQ19BUkdfRU5BQkxFKHdhcm5lcnJvciwKKwlBQ19IRUxQX1NUUklORygtLWVuYWJsZS13YXJuZXJyZXIsCisJCVtUcmVhdCB3YXJuaW5ncyBhcyBlcnJvcnMgZHVyaW5nIGNvbXBpbGUgKERlZmF1bHQgPSBubyldKSwKKwllbmFibGVfd2FybmVycm9yPSRlbmFibGV2YWwsIGVuYWJsZV93YXJuZXJyb3I9bm8pCisKKyMgQ2hlY2sgZm9yIGJhc2ljIHByb2dyYW1zCisKK0FDX1BST0dfQ0MKK0FDX1BST0dfQ1hYCitBQ19QUk9HX0lOU1RBTEwKK0FDX1BST0dfTE5fUworQUNfUFJPR19BV0sKK0FDX0NIRUNLX1BST0coQVVUT0NPTkYsIGF1dG9jb25mLCBhdXRvY29uZiwgdHJ1ZSkKKworIyBBQ19QUk9HX0NDIERlZmluZXMgdGhlIE9CSkVYVAorb2Jqc3VmZml4PSIuJHtPQkpFWFR9IgorCisjIHB0aHJlYWRzCitBQ1hfUFRIUkVBRAorQ1hYRkxBR1M9IiR7Q1hYRkxBR1N9ICR7UFRIUkVBRF9DRkxBR1N9IgorTElCUz0iJHtMSUJTfSAke1BUSFJFQURfTElCU30iCisKKyMgU2V0IHVwIHZlcnNpb25zCisKK3BhY2thZ2VfdmVyc2lvbl9tYWpvcj1gZWNobyAke1BBQ0tBR0VfVkVSU0lPTn0gfCAke0FXS30gLUYgJy4nICd7cHJpbnQgJDF9J2AKK3BhY2thZ2VfdmVyc2lvbl9tZWRpdW09YGVjaG8gJHtQQUNLQUdFX1ZFUlNJT059IHwgJHtBV0t9IC1GICcuJyAne3ByaW50ICQyfSdgCitwYWNrYWdlX3ZlcnNpb25fbWlub3I9YGVjaG8gJHtQQUNLQUdFX1ZFUlNJT059IHwgJHtBV0t9IC1GICcuJyAne3ByaW50ICQzfSdgCisKK3BhY2thZ2VfbGliX21ham9yPSR7cGFja2FnZV92ZXJzaW9uX21ham9yfSR7cGFja2FnZV92ZXJzaW9uX21lZGl1bX0KK3BhY2thZ2VfbGliX21pbm9yPSR7cGFja2FnZV92ZXJzaW9uX21pbm9yfQorcGFja2FnZV9saWJfdmVyc2lvbj0ke3BhY2thZ2VfbGliX21ham9yfS4ke3BhY2thZ2VfbGliX21pbm9yfQorCisjICJjYWNoZSIgdGhlIGNoZWNrIGZvciBnY2MgLUUKKworQUNfVFJZX0NQUCgpCitBQ19MQU5HKEMrKykKK0FDX1RSWV9DUFAoKQorCisjIE5lZWQgdG8gcmVzZXQgQ1hYRkxBR1MgaWYgZGVmYXVsdHMgaGF2ZSBiZWVuIHNldAoraWYgdGVzdCAiJGFjX3Rlc3RfQ1hYRkxBR1MiICE9IHNldDsgdGhlbgorICBDWFhGTEFHUz0iIgorZmkKKworIyBDaGVjayBmb3IgSW50ZWwgPiA4LjAgKHdoaWNoIGZvb2xzIGNvbmZpZ3VyZSBpbnRvIHRoaW5raW5nIGl0IGlzIEdOVQoraWYgdGVzdCAieCR7YWNfY3ZfY3h4X2NvbXBpbGVyX2dudX0iID0gInh5ZXMiOyB0aGVuCisJQUNfTVNHX0NIRUNLSU5HKFtmb3IgSW50ZWwgY29tcGlsZXIgZGlzZ3Vpc2VkIGFzIEdOVV0pCisJaW50ZWxfY2hlY2s9YCR7Q1hYfSAtdiAyPiYxIHwgJHtBV0t9ICd7cHJpbnQgJDF9J2AKKwlpZiB0ZXN0ICJ4JHtpbnRlbF9jaGVja30iID0gInhWZXJzaW9uIjsgdGhlbgorCQlBQ19NU0dfUkVTVUxUKFt5ZXNdKQorCQlhY19jdl9jeHhfY29tcGlsZXJfZ251PSJubyIKKwllbHNlCisJCUFDX01TR19SRVNVTFQoW25vXSkKKwlmaQorZmkKKworQUNfTEFORyhDKQorCisjIENoZWNrcyBmb3IgcmVxdWlyZWQgbGlicmFyaWVzCitBQ19DSEVDS19MSUIobSwgZmxvb3IpCitBQ19DSEVDS19MSUIoc29ja2V0LCBnZXRzZXJ2ZW50KQorCisjIERldGVybWluZSB0aGUgaG9zdCBzeXN0ZW0gYW5kIE1ha2VmaWxlIGZyYWdtZW50CisKKyMgQ2hlY2sgZm9yIHJlcXVpcmVkIGluY2x1ZGVzCitBQ19DSEVDS19IRUFERVJTKHVuaXN0ZC5oIGRpcmVjdC5oKQorCisjIEFzIGEgcGFydCBvZiB0aGUgYXV0b21ha2UgcHJvY2VzcywgQU1fQ0hFQ0tfTElCVE9PTCBjYWxscworIyB0aGlzIGF1dG9tYXRpY2FsbHkuICBBZGRpbmcgaGVyZSBjYXVzZXMgc3B1cmlvdXMgd2FybmluZyBtZXNzYWdlcworI0FDX0NBTk9OSUNBTF9IT1NUCisKKyMgRW5zdXJlIHdlIGFyZSBhbHdheXMgY29tcGlsaW5nIHVzaW5nIGxpYnJhcnkgZGVmcworCitDRkxBR1M9IiR7Q0ZMQUdTfSAtRFhTRUNfTElCUkFSWV9CVUlMRCIKK0NYWEZMQUdTPSIke0NYWEZMQUdTfSAtRFhTRUNfTElCUkFSWV9CVUlMRCIKKworCisjIFBsYXRmb3JtLXNwZWNpZmljIE1ha2VmaWxlIHNldHVwCisjIFdlIGhhdmUgcHV0IG1vc3Qgb2YgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gaGVyZSByYXRoZXIgdGhhbgorIyBpbiB0aGUgTWFrZWZpbGUuICBBdXRvY29uZiBpcyBkZXNpZ25lZCB3aXRoIHBsYXRmb3JtIHBvcnRhYmlsaXR5IGluIG1pbmQsCisjIHNvIGJ5IHB1dHRpbmcgdGhlIGNvbXBsZXhpdHkgaGVyZSB3ZSBzaG91bGQgYmUgYWJsZSB0byBjcmVhdGUgYSBtb3JlCisjIHBvcnRhYmxlIG1ha2VmaWxlLgorCitjYXNlICIke2hvc3R9IiBpbgorICAqLSotc29sYXJpcyopICAgCisgICAgcGxhdGZvcm09U09MQVJJUyAKKyAgICBzaGxpYnN1ZmZpeD0uc28KKyAgICBsaWJfbmFtZT0ibGliJHtQQUNLQUdFX1RBUk5BTUV9LnNvLiR7cGFja2FnZV9saWJfdmVyc2lvbn0iCisgICAgbGliX21ham9yX25hbWU9ImxpYiR7UEFDS0FHRV9UQVJOQU1FfS5zby4ke3BhY2thZ2VfbGliX21ham9yfSIKKyAgICBsaWJfc2hvcnRfbmFtZT0ibGliJHtQQUNLQUdFX1RBUk5BTUV9LnNvIgorCisgICAgaWYgdGVzdCAieCR7YWNfY3ZfY3h4X2NvbXBpbGVyX2dudX0iICE9ICJ4eWVzIjsgdGhlbgorICAgICAgIyBGbGFncyBmb3Igd2FybmluZ3MgYXMgZXJyb3JzCisgICAgICBjeHhmbGFnc193YXJuZXJyb3I9Ii14d2UgLWVycnRhZ3MiCisgICAgICAjIEZsYWdzIGZvciBPcHRpbWlzZQorICAgICAgY3h4ZmxhZ3Nfb3B0aW1pc2U9Ii14TzIiCisgICAgICAjIEZsYWdzIGZvciBkZWJ1ZworICAgICAgY3h4ZmxhZ3NfZGVidWc9Ii1nIgorICAgIGZpCisKKyAgICAjIFNob3VsZCB1c2UgLURfUkVFTlRSQU5UIC0gYnV0IG5vdCB5ZXQgT0sKKyAgICBQTEFURk9STV9PUFRJT05TPVsiJHtQTEFURk9STV9PUFRJT05TfSAtRFNPTEFSSVMiXQorICAgIFNIQVJFRF9PUFRJT05TPSItRyAtRFNPTEFSSVMiCisgICAgTElOS19PUFRJT05TPSItRFNPTEFSSVMiCisJCQkJCQk7OworCisgICotKi1uZXRic2QqKSAgIHBsYXRmb3JtPU5FVEJTRCAKKyAgICBzaGxpYnN1ZmZpeD0uc28KKyAgICBsaWJfbmFtZT0ibGliJHtQQUNLQUdFX1RBUk5BTUV9LnNvLiR7cGFja2FnZV9saWJfdmVyc2lvbn0iCisgICAgbGliX21ham9yX25hbWU9ImxpYiR7UEFDS0FHRV9UQVJOQU1FfS5zby4ke3BhY2thZ2VfbGliX21ham9yfSIKKyAgICBsaWJfc2hvcnRfbmFtZT0ibGliJHtQQUNLQUdFX1RBUk5BTUV9LnNvIgorCisgICAgUExBVEZPUk1fT1BUSU9OUz1bIiR7UExBVEZPUk1fT1BUSU9OU30gLURGUkVFQlNEIl0KKyAgICBTSEFSRURfT1BUSU9OUz1bIi1ETkVUQlNEIC1zaGFyZWQiXQorCUxJTktfT1BUSU9OUz1bIi1ETkVUQlNEIl0KKworICAgICMgTmV0QlNEIHB1dHMgcGFja2FnZXMgaW4gL3Vzci9wa2cKKyAgICBDUFBGTEFHUz0iJHtDUFBGTEFHU30gLUkvdXNyL3BrZy9pbmNsdWRlIgorICAgIExJQlM9IiR7TElCU30gLUwvdXNyL3BrZy9saWIiCisJCQkJCQk7OworCisgICotKi1mcmVlYnNkKikgICBwbGF0Zm9ybT1GUkVFQlNEIAorICAgIHNobGlic3VmZml4PS5zbworICAgIGxpYl9uYW1lPSJsaWIke1BBQ0tBR0VfVEFSTkFNRX0uc28uJHtwYWNrYWdlX2xpYl92ZXJzaW9ufSIKKyAgICBsaWJfbWFqb3JfbmFtZT0ibGliJHtQQUNLQUdFX1RBUk5BTUV9LnNvLiR7cGFja2FnZV92ZXJzaW9uX21ham9yfSIKKyAgICBsaWJfc2hvcnRfbmFtZT0ibGliJHtQQUNLQUdFX1RBUk5BTUV9LnNvIgorCisgICAgIyBTaG91bGQgdXNlIC1EX1JFRU5UUkFOVCAtIGJ1dCBub3QgeWV0IE9LCisgICAgUExBVEZPUk1fT1BUSU9OUz1bIiR7UExBVEZPUk1fT1BUSU9OU30gLURGUkVFQlNEIl0KKyAgICBTSEFSRURfT1BUSU9OUz0iLURGUkVFQlNEIC1zaGFyZWQgLXB0aHJlYWQgLWxjX3IiCisgICAgTElOS19PUFRJT05TPSItREZSRUVCU0QgLXB0aHJlYWQgLWxjX3IiCisKKwkJCQkJCTs7CisKKyAgKi0qLWxpbnV4KikgICAgIHBsYXRmb3JtPUxJTlVYIDsKKyAgICBzaGxpYnN1ZmZpeD0uc28KKyAgICBsaWJfbmFtZT0ibGliJHtQQUNLQUdFX1RBUk5BTUV9LnNvLiR7cGFja2FnZV9saWJfdmVyc2lvbn0iCisgICAgbGliX21ham9yX25hbWU9ImxpYiR7UEFDS0FHRV9UQVJOQU1FfS5zby4ke3BhY2thZ2VfbGliX21ham9yfSIKKyAgICBsaWJfc2hvcnRfbmFtZT0ibGliJHtQQUNLQUdFX1RBUk5BTUV9LnNvIgorCisgICAgaWYgdGVzdCAieCR7YWNfY3ZfY3h4X2NvbXBpbGVyX2dudX0iICE9ICJ4eWVzIjsgdGhlbgorICAgICAgIyBBc3N1bWUgSW50ZWwgQ0MKKyAgICAgIFBMQVRGT1JNX09QVElPTlM9WyItdzEgLW1wIC1wcmVjX2RpdiJdCisgICAgZmkKKworICAgICMgU2hvdWxkIHVzZSAtRF9SRUVOVFJBTlQgLSBidXQgbm90IHlldCBPSworICAgIFBMQVRGT1JNX09QVElPTlM9WyIke1BMQVRGT1JNX09QVElPTlN9IC1ETElOVVgiXQorICAgIFNIQVJFRF9PUFRJT05TPVsiLVdsLC1zb25hbWUsXCQoTElCTkFNRSkgLURMSU5VWCAtc2hhcmVkIl0KKyAgICBMSU5LX09QVElPTlM9WyItRExJTlVYIC1sZGwiXQorCisJCQkJCQk7OworCisgICotKi1jeWd3aW4qKQkKKyAgICBwbGF0Zm9ybT1DWUdXSU4KKyAgICBzaGxpYnN1ZmZpeD0uZGxsCisgICAgbGliX25hbWU9ImN5ZyR7UEFDS0FHRV9UQVJOQU1FfS0ke3BhY2thZ2VfbGliX3ZlcnNpb259LmRsbCIKKyAgICBsaWJfbWFqb3JfbmFtZT0ibGliJHtQQUNLQUdFX1RBUk5BTUV9LmRsbC5hIgorICAgIGxpYl9zaG9ydF9uYW1lPSJjeWcke1BBQ0tBR0VfVEFSTkFNRX0uZGxsIgorCisgICAgIyBBc3N1bWUgZysrCisgICAgUExBVEZPUk1fT1BUSU9OUz1bIi1XYWxsIl0KKyAgICBQTEFURk9STV9PUFRJT05TPVsiJHtQTEFURk9STV9PUFRJT05TfSAtRENZR1dJTiJdCisgICAgUElDPSIiCisgICAgU0hBUkVEX09QVElPTlM9Ii1XbCwtc29uYW1lLFwkKExJQk5BTUUpIC1EQ1lHV0lOIC1zaGFyZWQgLVhsaW5rZXIgLS13YXJuLW9uY2UgLVhsaW5rZXIgLU1hcCAtWGxpbmtlciAuLi9saWIvbGliJHtQQUNLQUdFX1RBUk5BTUV9Lm1hcCAtWGxpbmtlciAtLW91dHB1dC1kZWYgLVhsaW5rZXIgLi4vbGliL2xpYiR7UEFDS0FHRV9UQVJOQU1FfS5kZWYgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyIC4uL2xpYi9cJChMSUJNQUpPUk5BTUUpIgorICAgIExJTktfT1BUSU9OUz1bIi1EQ1lHV0lOIl0KKworICAgICMgRGVmaW5lIGluc3RhbGxhdGlvbiBjb21tYW5kcyBhcyBjeWd3aW4gdXNlcyBkaWZmZXJlbnQgZGVmYXVsdHMKKyAgICBJTlNUQUxMX0NPTU1BTkRfMT1bIlwkKElOU1RBTEwpIC1kIFwkKERFU1RESVIpXCR7YmluZGlyfSAmJiBcJChJTlNUQUxMKSBcJHtUSElTTElCfSBcJChERVNURElSKVwke2JpbmRpcn0iXQorICAgIElOU1RBTExfQ09NTUFORF8yPVsiXCQoSU5TVEFMTCkgLWQgXCQoREVTVERJUilcJHtsaWJkaXJ9ICYmIFwkKElOU1RBTEwpIFwkKExJQl9ESVIpL1wkKExJQk1BSk9STkFNRSkgXCQoREVTVERJUilcJHtsaWJkaXJ9Il0KKworICAgICMgRGVmaW5lIHRoaXMgdG8ga2lsbCB0aGUgbGluayBjb21tYW5kcworICAgIExJTktfQ09NTUFORF8xPXRydWUKKyAgICA7OworCQkJCQkJCisjICAgICAgICAqLSotaXJpeCopICAgICAgcGxhdGZvcm09SVJJWCA7OworIyAgICAgICAgKi0qLWFpeCopICAgICAgIHBsYXRmb3JtPUFJWCA7OworIyAgICAgICAgKi0qLWhwKikgICAgICAgIHBsYXRmb3JtPUhQVVggOworIyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIiR7aG9zdH0iIGluCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICotKi1ocHV4MTEqKSAgb3N2ZXI9SFBVWDExOzsKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi0qLWhwdXgxMCopICBvc3Zlcj1IUFVYMTA7OworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKSAgICAgICAgICAgIG9zdmVyPUhQVVgxMTs7CisjICAgICAgICAgICAgICAgICAgICAgICAgZXNhYzs7CisjICAgICAgICAqLSotbXZzKikgICAgICAgcGxhdGZvcm09T1MzOTAgOzsKKworICAqLSotb3NmKikKKyAgICBwbGF0Zm9ybT1UUlU2NAorICAgIHNobGlic3VmZml4PS5zbworICAgIGxpYl9uYW1lPSJsaWIke1BBQ0tBR0VfVEFSTkFNRX0uc28uJHtwYWNrYWdlX2xpYl92ZXJzaW9ufSIKKyAgICBsaWJfbWFqb3JfbmFtZT0ibGliJHtQQUNLQUdFX1RBUk5BTUV9LnNvLiR7cGFja2FnZV9saWJfbWFqb3J9IgorICAgIGxpYl9zaG9ydF9uYW1lPSJsaWIke1BBQ0tBR0VfVEFSTkFNRX0uc28iCisKKyAgICAjIFNob3VsZCB1c2UgLURfUkVFTlRSQU5UIC0gYnV0IG5vdCB5ZXQgT0sKKyAgICBQTEFURk9STV9PUFRJT05TPVsiJHtQTEFURk9STV9PUFRJT05TfSAtRFRSVTY0Il0KKyAgICBTSEFSRURfT1BUSU9OUz1bIi1XbCwtc29uYW1lLFwkKExJQk5BTUUpIC1EVFJVNjQgLXNoYXJlZCJdCisgICAgTElOS19PUFRJT05TPVsiLURUUlU2NCJdCisgICAgICAgICAgICAgICAgICAgICAgICA7OworCisgICotYXBwbGUtZGFyd2luKikKKyAgICBwbGF0Zm9ybT1NQUNPU1ggCisgICAgc2hsaWJzdWZmaXg9LmR5bGliCisgICAgbGliX25hbWU9ImxpYiR7UEFDS0FHRV9UQVJOQU1FfS4ke3BhY2thZ2VfbGliX3ZlcnNpb259LmR5bGliIgorICAgIGxpYl9tYWpvcl9uYW1lPSJsaWIke1BBQ0tBR0VfVEFSTkFNRX0uJHtwYWNrYWdlX2xpYl9tYWpvcn0uZHlsaWIiCisgICAgbGliX3Nob3J0X25hbWU9ImxpYiR7UEFDS0FHRV9UQVJOQU1FfS5keWxpYiIKKworICAgIGlmIHRlc3QgIngke2FjX2N2X2N4eF9jb21waWxlcl9nbnV9IiAhPSAieHllcyI7IHRoZW4KKyAgICAgICMgTm90IHN1cmUgaWYgdGhlc2Ugd2lsbCB3b3JrIC0gb25seSB0ZXN0ZWQgd2l0aCBnKysKKyAgICAgIFBMQVRGT1JNX09QVElPTlM9WyItdzEgLW1wIC1wcmVjX2RpdiJdCisgICAgZmkKKworICAgIFBMQVRGT1JNX09QVElPTlM9WyIke1BMQVRGT1JNX09QVElPTlN9IC1ETUFDT1NYIl0KKyAgICBTSEFSRURfT1BUSU9OUz1bIi1YbGlua2VyIC1pbnN0YWxsX25hbWUgLVhsaW5rZXIgXCQoTElCTkFNRSkgLURNQUNPU1ggLWR5bmFtaWNsaWIiXQorICAgIExJTktfT1BUSU9OUz1bIi1ETUFDT1NYIl0KKyAgICAgICAgICAgICAgICAgICAgICAgIDs7CisKKyAgKikgICAgICAgICAgICAgIHBsYXRmb3JtPVVOS05PV04gCisgICAgQUNfTVNHX0VSUk9SKFtVbmtub3duIFBsYXRmb3JtLiAgQWJvcnRpbmddKQorCQkJCQkJOzsKK2VzYWMKKworIyBOb3cgd2Ugc2hvdWxkIGhhdmUgYWxsIGNvbXBpbGVyIHNwZWNpZmljIGZsYWdzLiAgU28gc2V0IHVwIHNwZWNpZmljIGZsYWdzCisjIHdlIG5lZWQKKworIyBGaXJzdCBpZiB3ZSBhcmUgdXNpbmcgZ2NjIHRoZW4uLi4KK2lmIHRlc3QgIngke2FjX2N2X2N4eF9jb21waWxlcl9nbnV9IiA9ICJ4eWVzIiA7IHRoZW4KKworICBDWFhGTEFHUz1bIiR7Q1hYRkxBR1N9ICR7UExBVEZPUk1fT1BUSU9OU30gLVdhbGwiXQorCisgIGlmIHRlc3QgIiRlbmFibGVfZGVidWciID0gInllcyIgOyB0aGVuCisJQ1hYRkxBR1M9IiR7Q1hYRkxBR1N9IC1nIgorICBlbHNlCisJQ1hYRkxBR1M9IiR7Q1hYRkxBR1N9IC1PMiAtRE5ERUJVRyIKKyAgZmkKKworICBpZiB0ZXN0ICJ4JHtlbmFibGVfd2FybmVycm9yfSIgPSAieHllcyIgOyB0aGVuCisgICAgQUNfTVNHX1dBUk4oW0VuYWJsaW5nIGVycm9yIG9uIHdhcm5pbmdzXSkKKwlDWFhGTEFHUz0iJHtDWFhGTEFHU30gLVdlcnJvciAtV25vLWRlcHJlY2F0ZWQiCisgIGZpCitlbHNlCisKKyAgaWYgdGVzdCAiJGVuYWJsZV9kZWJ1ZyIgPSAieWVzIiA7IHRoZW4KKwlDWFhGTEFHUz0iJHtDWFhGTEFHU30gJHtjeHhmbGFnc19kZWJ1Z30iCisgIGVsc2UKKwlDWFhGTEFHUz0iJHtDWFhGTEFHU30gJHtjeHhmbGFnc19vcHRpbWlzZX0gLUROREVCVUciCisgIGZpCisKKyAgaWYgdGVzdCAieCR7ZW5hYmxlX3dhcm5lcnJvcn0iID0gInh5ZXMiIDsgdGhlbgorICAgIEFDX01TR19XQVJOKFtFbmFibGluZyBlcnJvciBvbiB3YXJuaW5nc10pCisJQ1hYRkxBR1M9IiR7Q1hYRkxBR1N9ICR7Y3h4ZmxhZ3Nfd2FybmVycm9yfSIKKyAgZmkKKworZmkKKworIyBIb3cgZG8gd2UgcnVuIHRoZSBDKysgY29tcGlsZXI/CitDQzE9WyIke0NYWH0gJHtDWFhGTEFHU30iXQorIyBDb21tYW5kIHRvIG1ha2UgdGhlIHNoYXJlZCBsaWJyYXJ5CitNQUtFX1NIQVJFRD1bIiR7Q1hYfSAke0NYWEZMQUdTfSAke1NIQVJFRF9PUFRJT05TfSJdCisjIENvbW1hbmQgdG8gbGluayBhbiBleGVjdXRhYmxlCitMSU5LPVsiJHtDWFh9ICR7Q1hYRkxBR1N9ICR7TElOS19PUFRJT05TfSJdCisKKyMgRGVmYXVsdCBjb21tYW5kcyB0byBjcmVhdGUgdGhlIGxpYnJhcnkgaW4gdGhlIGNvcnJlY3QgcGxhY2UKKworaWYgdGVzdCAteiAiJExJTktfQ09NTUFORF8xIiA7IHRoZW4gCisgICAgTElOS19DT01NQU5EXzE9WyIoY2QgXCQoTElCX0RJUikgOyBybSAtZiBcJChMSUJNQUpPUk5BTUUpIDsgXCQoTE5fUykgXCQoTElCTkFNRSkgXCQoTElCTUFKT1JOQU1FKSkiXQorICAgIExJTktfQ09NTUFORF8yPVsiKGNkIFwkKExJQl9ESVIpIDsgcm0gLWYgXCQoTElCU0hPUlROQU1FKSA7IFwkKExOX1MpIFwkKExJQk5BTUUpIFwkKExJQlNIT1JUTkFNRSkpIl0KK2ZpCisKKyMgRGVmYXVsdCBjb21tYW5kcyB0byBpbnN0YWxsCisKK2lmIHRlc3QgLXogIiRJTlNUQUxMX0NPTU1BTkRfMSIgOyB0aGVuCisgICAgSU5TVEFMTF9DT01NQU5EXzE9WyJcJChJTlNUQUxMKSAtZCBcJChERVNURElSKVwke2xpYmRpcn0gJiYgXCQoSU5TVEFMTCkgXCR7VEhJU0xJQn0gXCQoREVTVERJUilcJHtsaWJkaXJ9Il0KKyAgICBJTlNUQUxMX0NPTU1BTkRfMj1bIlwkKFJNKSBcJChERVNURElSKVwke2xpYmRpcn0vXCR7TElCTUFKT1JOQU1FfSAmJiBcJChMTl9TKSBcJHtMSUJOQU1FfSBcJChERVNURElSKVwke2xpYmRpcn0vXCR7TElCTUFKT1JOQU1FfSJdCisgICAgSU5TVEFMTF9DT01NQU5EXzM9WyJcJChSTSkgXCQoREVTVERJUilcJHtsaWJkaXJ9L1wke0xJQlNIT1JUTkFNRX0gJiYgXCQoTE5fUykgXCR7TElCTkFNRX0gXCQoREVTVERJUilcJHtsaWJkaXJ9L1wke0xJQlNIT1JUTkFNRX0iXQorZmkKKworCisjIEZpbmQgWGVyY2VzCisKKyMgQ2hlY2sgZm9yIFhlcmNlcyB1c2luZyBYRVJDRVNDUk9PVCAob3ZlcnJpZGUgYW55IHN5c3RlbSB2ZXJzaW9uKQorCitBQ19MQU5HKEMrKykKKworaWYgdGVzdCAkWEVSQ0VTQ1JPT1Q7IHRoZW4KKworICBPTERDUFBGTEFHUz0kQ1BQRkxBR1MKKyAgQ1BQRkxBR1M9WyIke0NQUEZMQUdTfSAtSSR7WEVSQ0VTQ1JPT1R9L2luY2x1ZGUiXQorCisgIEFDX01TR19DSEVDS0lORyhbZm9yIFhlcmNlcyAyLnggb3IgMy54IGhlYWRlcnMgaW4gWEVSQ0VTQ1JPT1QvaW5jbHVkZV0pCisgIEFDX1RSWV9SVU4oWyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWGVyY2VzVmVyc2lvbi5ocHA+CisgICAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgICAgICBpZiAoWEVSQ0VTX1ZFUlNJT05fTUFKT1IgPCAyKQorICAgICAgICByZXR1cm4gMTsKKyAgICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfV0sCisgICAgeGVyY2VzX2xpYl9iYXNlPSR7WEVSQ0VTQ1JPT1R9CisgICAgeGVyY2VzX2ZvdW5kPXllcworICAgIFtBQ19NU0dfUkVTVUxUKFtmb3VuZF0pXSwKKyAgICBDUFBGTEFHUz0kT0xEX0NQUEZMQUdTCisgICAgW0FDX01TR19SRVNVTFQoW25vXSldKQorCitmaQorCitpZiB0ZXN0IC16ICIkeGVyY2VzX2ZvdW5kIiA7IHRoZW4KKworICAjIFhlcmNlcyB3YXMgbm90IGZvdW5kCisKKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgWGVyY2VzIDIueCBvciAzLnggaGVhZGVycyBpbiBzeXN0ZW0gaW5jbHVkZXNdKQorCisgIEFDX1RSWV9SVU4oWyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWGVyY2VzVmVyc2lvbi5ocHA+CisgICAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgICAgICBpZiAoWEVSQ0VTX1ZFUlNJT05fTUFKT1IgPCAyKQorICAgICAgICByZXR1cm4gMTsKKyAgICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfV0sCisgICAgW0FDX01TR19SRVNVTFQoW2ZvdW5kXSldLAorICAgIFtBQ19NU0dfRVJST1IoW1hlcmNlcyAyLjAgbm90IGZvdW5kLiAgRW5zdXJlIFhFUkNFU0NST09UIHBvaW50cyB0byBiYXNlIGRpcmVjdG9yeSBvZiBYZXJjZXMgYW5kIFhlcmNlcyAyLjAgb3IgbGF0ZXIgaXMgYXZhaWxhYmxlXSldKQorCitmaQorCisjIFdoZXJlIGlzIHRoZSBYZXJjZXMgbGliPworQUNfTVNHX0NIRUNLSU5HKFtmb3IgWGVyY2VzIDIueCBvciAzLnggbGlicmFyeSBuYW1pbmcgY29udmVudGlvbl0pCitPTERfTElCUz0kTElCUworaWYgdGVzdCAteiAiJHhlcmNlc19saWJfYmFzZSIgOyB0aGVuCisgIExJQlM9IiR7TElCU30gLWx4ZXJjZXMtYyIKK2Vsc2UKKyAgTElCUz0iLUwke3hlcmNlc19saWJfYmFzZX0vbGliIC1seGVyY2VzLWMgJHtMSUJTfSIKK2ZpCisKK0FDX1RSWV9MSU5LKFsjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1BsYXRmb3JtVXRpbHMuaHBwPl0sCisgICBbWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFIFhNTFBsYXRmb3JtVXRpbHM6OkluaXRpYWxpemUoKTsgcmV0dXJuIDA7IF0sCisgICBbQUNfTVNHX1JFU1VMVChbeGVyY2VzLWNdKV0KKyAgIHhlcmNlc2xpYl9mb3VuZD15ZXMsCisgICBbTElCUz0kT0xEX0xJQlNdKQorCitpZiB0ZXN0IC16ICIkeGVyY2VzbGliX2ZvdW5kIiA7IHRoZW4KKyAgaWYgdGVzdCAteiAiJHhlcmNlc19saWJfYmFzZSIgOyB0aGVuCisgICAgTElCUz0iJHtMSUJTfSAtbHhlcmNlcy0zLjAiCisgIGVsc2UKKyAgICBMSUJTPSItTCR7eGVyY2VzX2xpYl9iYXNlfS9saWIgLWx4ZXJjZXMtMy4wICR7TElCU30iCisgIGZpCisKKyAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvUGxhdGZvcm1VdGlscy5ocHA+XSwKKyAgICAgW1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRSBYTUxQbGF0Zm9ybVV0aWxzOjpJbml0aWFsaXplKCk7IHJldHVybiAwOyBdLAorICAgICBbQUNfTVNHX1JFU1VMVChbeGVyY2VzLTMuMF0pXQorICAgICB4ZXJjZXNsaWJfZm91bmQ9eWVzLAorICAgICBbQUNfTVNHX1JFU1VMVChbdW5hYmxlIHRvIGRldGVybWluZV0pXQorICAgICBbQUNfTVNHX0VSUk9SKFtjYW5ub3QgbGluayB0byBYZXJjZXMgbGlicmFyeV0pXSkKK2ZpCisKKyMgRmluZCBvdXQgc29tZSBwcm9wZXJ0aWVzIG9mIHRoZSB2ZXJzaW9uIG9mIFhlcmNlcyB3ZSBoYXZlCisKK0FDX01TR19DSEVDS0lORyhbd2hldGhlciBYZXJjZXMgaXMgNjQtYml0IGNsZWFuXSkKKworQUNfVFJZX0NPTVBJTEUoWyNpbmNsdWRlIDx4ZXJjZXNjL2ZyYW1ld29yay9NZW1CdWZJbnB1dFNvdXJjZS5ocHA+XSwKKyAgICBbdXNpbmcgbmFtZXNwYWNlIFhFUkNFU19DUFBfTkFNRVNQQUNFOworICAgICAgWE1MRmlsZVBvcyB0ZXN0dmFyOworICAgIF0sCisgICAgW0FDX01TR19SRVNVTFQoW3llc10pXQorICAgIFtBQ19ERUZJTkUoWFNFQ19YRVJDRVNfNjRCSVRTQUZFKV0sCisgICAgW0FDX01TR19SRVNVTFQoW25vXSldKQorCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgWGVyY2VzIEJpbklucHV0U3RyZWFtIHJlcXVpcmVzIGdldENvbnRlbnRUeXBlXSkKKworQUNfVFJZX0NPTVBJTEUoWyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvQmluTWVtSW5wdXRTdHJlYW0uaHBwPl0sCisgICAgW3VzaW5nIG5hbWVzcGFjZSBYRVJDRVNfQ1BQX05BTUVTUEFDRTsKKyAgICAgIFhNTEJ5dGUgYnVmWzEwMjRdOworICAgICAgQmluTWVtSW5wdXRTdHJlYW0gaW4oYnVmLDEwMjQpOworICAgICAgaW4uZ2V0Q29udGVudFR5cGUoKTsKKyAgICBdLAorICAgIFtBQ19NU0dfUkVTVUxUKFt5ZXNdKV0KKyAgICBbQUNfREVGSU5FKFhTRUNfWEVSQ0VTX0lOUFVUU1RSRUFNX0hBU19DT05URU5UVFlQRSldLAorICAgIFtBQ19NU0dfUkVTVUxUKFtub10pXSkKKworQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIFhlcmNlcyBYTUxGb3JtYXR0ZXIgcmVxdWlyZXMgYSB2ZXJzaW9uXSkKKworQUNfVFJZX0NPTVBJTEUoWyNpbmNsdWRlIDx4ZXJjZXNjL2ZyYW1ld29yay9YTUxGb3JtYXR0ZXIuaHBwPgorCSNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWGVyY2VzRGVmcy5ocHA+CisJI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxVbmlEZWZzLmhwcD5dLAorCVt1c2luZyBuYW1lc3BhY2UgWEVSQ0VTX0NQUF9OQU1FU1BBQ0U7CisJICBYTUxDaCBzX2VuY29kaW5nW10gPSB7CisJCWNoTGF0aW5fVSwgY2hMYXRpbl9ULCBjaExhdGluX0YsIGNoRGFzaCwgY2hEaWdpdF84LCBjaE51bGwKKwkgIH07CisJICBYTUxGb3JtYXR0ZXIgZihzX2VuY29kaW5nLAorCQlOVUxMLAorCQlOVUxMLCAKKwkJWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMsIAorCQlYTUxGb3JtYXR0ZXI6OlVuUmVwX0NoYXJSZWYpOworCV0sCisJW0FDX01TR19SRVNVTFQoW3llc10pXQorCVtBQ19ERUZJTkUoWFNFQ19YRVJDRVNfUkVRVUlSRVNfTUVNTUdSKV0KKwlbQUNfREVGSU5FKFhTRUNfWEVSQ0VTX0ZPUk1BVFRFUl9SRVFVSVJFU19WRVJTSU9OKV0sCisJW0FDX01TR19SRVNVTFQoW25vXSldKQorCQorQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIFhlcmNlcyBYTUxTdHJpbmcgaGFzIDo6cmVsZWFzZV0pCisKK0FDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFN0cmluZy5ocHA+XSwKKwlbdXNpbmcgbmFtZXNwYWNlIFhFUkNFU19DUFBfTkFNRVNQQUNFOworCQlYTUxDaCAqIHRzdDsKKwkJWE1MU3RyaW5nOjpyZWxlYXNlKCZ0c3QpOworCV0sCisJW0FDX01TR19SRVNVTFQoW3llc10pXQorCVtBQ19ERUZJTkUoWFNFQ19YRVJDRVNfWE1MU1RSSU5HX0hBU19SRUxFQVNFKV0sCisJW0FDX01TR19SRVNVTFQoW25vXSldKQorCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgWGVyY2VzIFhNTEVsZW1lbnQgaGFzIDo6c2V0SWRBdHRyaWJ1dGUoWE1MQ2gqKV0pCisKK0FDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD5dLAorCVt1c2luZyBuYW1lc3BhY2UgWEVSQ0VTX0NQUF9OQU1FU1BBQ0U7CisJCURPTUVsZW1lbnQgKiBlbHQ7CisJCWVsdC0+c2V0SWRBdHRyaWJ1dGUoTlVMTCk7CisJXSwKKwlbQUNfTVNHX1JFU1VMVChbeWVzXSldCisgICAgeGVyY2VzX2hhc19zZXRpZGF0dHJpYnV0ZT15ZXMKKwlbQUNfREVGSU5FKFhTRUNfWEVSQ0VTX0hBU19TRVRJREFUVFJJQlVURSldLAorCVtBQ19NU0dfUkVTVUxUKFtub10pXSkKKworaWYgdGVzdCAteiAiJHhlcmNlc19oYXNfc2V0aWRhdHRyaWJ1dGUiIDsgdGhlbgorCisgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBYZXJjZXMgWE1MRWxlbWVudCBoYXMgOjpzZXRJZEF0dHJpYnV0ZShYTUxDaCosIGJvb2wpXSkKKyAgQUNfVFJZX0NPTVBJTEUoWyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPl0sCisJICBbdXNpbmcgbmFtZXNwYWNlIFhFUkNFU19DUFBfTkFNRVNQQUNFOworCQkgIERPTUVsZW1lbnQgKiBlbHQ7CisJCSAgZWx0LT5zZXRJZEF0dHJpYnV0ZShOVUxMLCBmYWxzZSk7CisJICBdLAorCSAgW0FDX01TR19SRVNVTFQoW3llc10pXQorICAgICAgeGVyY2VzX2hhc19zZXRpZGF0dHJpYnV0ZT15ZXMKKwkgIFtBQ19ERUZJTkUoWFNFQ19YRVJDRVNfSEFTX0JPT0xTRVRJREFUVFJJQlVURSldLAorCSAgW0FDX01TR19SRVNVTFQoW25vXSldKQorCitmaQorCisjIEZvciBYZXJjZXMgMy54IHdlIG5vdyBoYXZlIGEgc3RyaWN0ZXIgRE9NIEwzIGltcGxlbWVudGF0aW9uCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgWGVyY2VzIERPTUltcGxlbWVudGF0aW9uTFMgaGFzIERPTUxTU2VyaWFsaXplcl0pCisKK0FDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD5dLAorICAgIFt1c2luZyBuYW1lc3BhY2UgWEVSQ0VTX0NQUF9OQU1FU1BBQ0U7CisgICAgICAgIERPTUltcGxlbWVudGF0aW9uICppbXBsID0gRE9NSW1wbGVtZW50YXRpb25SZWdpc3RyeTo6Z2V0RE9NSW1wbGVtZW50YXRpb24oTlVMTCk7CisgICAgICAgIERPTUxTU2VyaWFsaXplciAqbHMgPSAoKERPTUltcGxlbWVudGF0aW9uTFMqKWltcGwpLT5jcmVhdGVMU1NlcmlhbGl6ZXIoKTsKKyAgICBdLAorICAgIFtBQ19NU0dfUkVTVUxUKFt5ZXNdKV0KKyAgICBbQUNfREVGSU5FKFhTRUNfWEVSQ0VTX0RPTUxTU0VSSUFMSVpFUildLAorICAgIFtBQ19NU0dfUkVTVUxUKFtub10pXSkKKworQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIFhlcmNlcyBET01FbnRpdHkgdXNlcyBnZXRJbnB1dEVuY29kaW5nKCldKQorCitBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPHhlcmNlc2MvZG9tL0RPTS5ocHA+XSwKKyAgICBbdXNpbmcgbmFtZXNwYWNlIFhFUkNFU19DUFBfTkFNRVNQQUNFOworICAgICAgICBET01FbnRpdHkgKnQ7CisgICAgICAgIHQtPmdldElucHV0RW5jb2RpbmcoKTsKKyAgICBdLAorICAgIFtBQ19NU0dfUkVTVUxUKFt5ZXNdKV0KKyAgICBbQUNfREVGSU5FKFhTRUNfWEVSQ0VTX0RPTUVOVElUWUlOUFVURU5DT0RJTkcpXSwKKyAgICBbQUNfTVNHX1JFU1VMVChbbm9dKV0pCisKKworIyBOb3cgY2hlY2sgZm9yIFhhbGFuCisKK2lmIHRlc3QgeCIkdXNlX3hhbGFuIiAhPSB4Im5vIiA7IHRoZW4KKworICBpZiB0ZXN0ICRYQUxBTkNST09UOyB0aGVuCisKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBYYWxhbiBoZWFkZXJzIGluIFhBTEFOQ1JPT1RdKQorCisgICAgT0xEX0NQUEZMQUdTPSRDUFBGTEFHUworICAgICMgVXBkYXRlZCB0byBpbmNsdWRlIG5scy9pbmNsdWRlIGFzIHRoaXMgaXMgZ2VuZXJhbGx5IG5lZWRlZCBmb3IKKyAgICAjIGNvbXBpbGF0aW9uIGFnYWluc3Qgbm9uLWluc3RhbGxlZCB4YWxhbi4KKyAgICAjIEFsc28gbm93IGluY2x1ZGUgWEFMQU5DUk9PVC9pbmNsdWRlIHRvIGNhdGVyIGZvciBpbnN0YWxsZWQgeGFsYW4KKyAgICBDUFBGTEFHUz1bIi1JJHtYQUxBTkNST09UfS9zcmMgLUkke1hBTEFOQ1JPT1R9L2luY2x1ZGUgLUkke1hBTEFOQ1JPT1R9L25scy9pbmNsdWRlICR7Q1BQRkxBR1N9Il0KKworICAgIEFDX1RSWV9DUFAoWyNpbmNsdWRlIDx4YWxhbmMvSW5jbHVkZS9YYWxhblZlcnNpb24uaHBwPl0sIAorICAgICAgeGFsYW5fZm91bmQ9eWVzIAorICAgICAgTElCUz0iLUwke1hBTEFOQ1JPT1R9L2xpYiAtbHhhbGFuLWMgJHtMSUJTfSIKKyAgICAgIFtBQ19NU0dfUkVTVUxUKFtmb3VuZF0pXSwgCisgICAgICBDUFBGTEFHUz0kT0xEX0NQUEZMQUdTCisgICAgICBbQUNfTVNHX1JFU1VMVChbbm9dKV0pOworCisgIGZpCisKKyAgaWYgdGVzdCAteiAiJHhhbGFuX2ZvdW5kIiA7IHRoZW4KKworICAgIEFDX01TR19DSEVDS0lORyhbZm9yIFhhbGFuIGluIHN5c3RlbSBpbmNsdWRlc10pCisgICAgQUNfVFJZX0NQUChbI2luY2x1ZGUgPHhhbGFuYy9JbmNsdWRlL1hhbGFuVmVyc2lvbi5ocHA+XSwgCisgICAgICB4YWxhbl9mb3VuZD15ZXMgCisgICAgICBMSUJTPSIke0xJQlN9IC1seGFsYW4tYyIKKyAgICAgIFtBQ19NU0dfUkVTVUxUKFtmb3VuZF0pXSwKKyAgICAgIFtBQ19ERUZJTkUoWFNFQ19OT19YQUxBTildIAorICAgICAgW0FDX01TR19SRVNVTFQoW25vIC0gV0FSTklORyAtIGNvbmZpZ3VyaW5nIGZvciBubyBYYWxhbl0pXSk7CisKKyAgZmkKKworZWxzZQorCisgICMgTk9fWEFMQU4gaXMgZGVmaW5lZCAtIHNvIHdlIHNraXAKKworICBBQ19NU0dfTk9USUNFKFtXYXJuaW5nIC0gWGFsYW4gYmVpbmcgY29uZmlndXJlZCBvdXQgLSBYUGF0aCBhbmQgWFNMVCB3aWxsIG5vdCBiZSBhdmFpbGFibGVdKQorICBBQ19ERUZJTkUoWFNFQ19OT19YQUxBTikKKworZmkKKworaWYgdGVzdCAiJHt4YWxhbl9mb3VuZH0iID0gInllcyIgOyB0aGVuCisgICMgRG8gd2UgbmVlZCB4YWxhbk1zZy5zbz8KKyAgQUNfTVNHX0NIRUNLSU5HKFtpZiBsaWJ4YWxhbk1zZyBpcyByZXF1aXJlZF0pCisgIG9sZF9saWJzPSRMSUJTCisgIExJQlM9IiR7TElCU30gLWx4YWxhbk1zZyIKKyAgQUNfVFJZX0xJTksoW10sWworICAgIGludCB0ZXN0PTE7CisgIF0sCisgIEFDX01TR19SRVNVTFQoW3llc10pLAorICBBQ19NU0dfUkVTVUxUKFtub10pCisgIExJQlM9JHtvbGRfbGlic30pOworZmkKKworIyBDaGVjayBmb3IgaGFuZGxpbmcgb2YgWFNMRXhjZXB0aW9uIHR5cGVzCitpZiB0ZXN0ICIkeGFsYW5fZm91bmQiID0gInllcyIgOyB0aGVuCisKKyAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIFhTTEV4Y2VwdGlvbjo6Z2V0VHlwZSgpIHJldHVybnMgWGFsYW5ET01TdHJpbmddKQorCisgIEFDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8eGFsYW5jL1BsYXRmb3JtU3VwcG9ydC9YU0xFeGNlcHRpb24uaHBwPl0sIAorICAgIFsgdHJ5IHsKKyAgICAgICAgICBpbnQgeCA9IDE7CisgICAgICB9IAorICAgICAgY2F0Y2ggKFhBTEFOX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIFhTTEV4Y2VwdGlvbiAmZSkgeworICAgICAgICBlLmdldFR5cGUoKS5jX3N0cigpOworICAgICAgfQorICAgIF0sCisgICAgQUNfREVGSU5FKFhTRUNfWFNMRVhDRVBUSU9OX1JFVFVSTlNfRE9NU1RSSU5HKQorICAgIFtBQ19NU0dfUkVTVUxUKFt5ZXNdKV0sIAorICAgIFtBQ19NU0dfUkVTVUxUKFtub10pXSk7CisKKyAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIFhlcmNlc1BhcnNlckxpYWlzb24gY3RvciB0YWtlcyBYZXJjZXNET01TdXBwb3J0XSkKKworICBBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPHhhbGFuYy9YZXJjZXNQYXJzZXJMaWFpc29uL1hlcmNlc0RPTVN1cHBvcnQuaHBwPgorICAgICNpbmNsdWRlIDx4YWxhbmMvWGVyY2VzUGFyc2VyTGlhaXNvbi9YZXJjZXNQYXJzZXJMaWFpc29uLmhwcD5dLAorCVsgCVhBTEFOX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIFhlcmNlc0RPTVN1cHBvcnQgCisgICAgICAgICAgIHRoZURPTVN1cHBvcnQ7CisJICAgIFhBTEFOX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIFhlcmNlc1BhcnNlckxpYWlzb24gCisgICAgICAgICAgIHRoZVBhcnNlckxpYWlzb24odGhlRE9NU3VwcG9ydCk7CisJXSwKKwlBQ19ERUZJTkUoWFNFQ19YRVJDRVNQQVJTRVJMSUFJU09OX1JFUVNfRE9NU1VQUE9SVCkKKwlbQUNfTVNHX1JFU1VMVChbeWVzXSldLAorCVtBQ19NU0dfUkVTVUxUKFtub10pXSk7CisKKyAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIFhQYXRoRXZhbHVhdG9yOjpzZWxlY3ROb2RlTGlzdCByZXFzIE5vZGVSZWZMaXN0XSkKKworICBBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPHhhbGFuYy9YZXJjZXNQYXJzZXJMaWFpc29uL1hlcmNlc0RPTVN1cHBvcnQuaHBwPgorCSNpbmNsdWRlIDx4YWxhbmMvWFBhdGgvWFBhdGhFdmFsdWF0b3IuaHBwPgorCSNpbmNsdWRlIDx4YWxhbmMvWFBhdGgvTm9kZVJlZkxpc3QuaHBwPgorICAgICNpbmNsdWRlIDx4YWxhbmMvWGVyY2VzUGFyc2VyTGlhaXNvbi9YZXJjZXNQYXJzZXJMaWFpc29uLmhwcD5dLAorCVsgCVhBTEFOX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIFhlcmNlc0RPTVN1cHBvcnQgCisgICAgICAgICAgIHRoZURPTVN1cHBvcnQ7CisJCVhBTEFOX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIFhQYXRoRXZhbHVhdG9yCXRoZUV2YWx1YXRvcjsKKwkJWEFMQU5fQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgTm9kZVJlZkxpc3QJdGhlUmVzdWx0KAorCQkJdGhlRXZhbHVhdG9yLnNlbGVjdE5vZGVMaXN0KAorCQkJdGhlRE9NU3VwcG9ydCwKKwkJCU5VTEwsCisJCQlOVUxMLAorCQkJTlVMTCkpOworCV0sCisJW0FDX01TR19SRVNVTFQoW25vXSldLAorCUFDX0RFRklORShYU0VDX1NFTEVDVE5PREVMSVNUX1JFUVNfTk9ERVJFRkxJU1QpCisJW0FDX01TR19SRVNVTFQoW3llc10pXSk7CisKKyAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIFhhbGFuIGNsYXNzZXMgcmVxIE1lbW9yeU1hbmFnZXJdKQorCisgIEFDX1RSWV9DT01QSUxFKFsKKyAJI2luY2x1ZGUgPHhhbGFuYy9YUGF0aC9YUGF0aERlZmluaXRpb25zLmhwcD4KKyAgICAjaW5jbHVkZSA8eGFsYW5jL1hQYXRoL0Z1bmN0aW9uLmhwcD5dLAorICAgIFsKKyAgICB9CisJWEFMQU5fQ1BQX05BTUVTUEFDRV9CRUdJTgorCisJY2xhc3MgRnVuY3Rpb25UZXN0IDogcHVibGljIEZ1bmN0aW9uCisJeworCQlwdWJsaWM6CisgCSAgICAgICB0eXBlZGVmIEZ1bmN0aW9uICAgICAgICBQYXJlbnRUeXBlOworCisgICAgCSAgICBGdW5jdGlvblRlc3QoKTsKKworICAgICAgICAJdmlydHVhbCB+RnVuY3Rpb25UZXN0KCk7ICAgICAgCisJICAgICAgICB2aXJ0dWFsIFhPYmplY3RQdHIKKyAgICAJICAgIGV4ZWN1dGUoCisgICAgICAgIAkgICBYUGF0aEV4ZWN1dGlvbkNvbnRleHQmIGV4ZWN1dGlvbkNvbnRleHQsCisgICAgICAgICAgICAgICBYYWxhbk5vZGUqIGNvbnRleHQsCisgICAgICAgICAgICAgICBjb25zdCBYT2JqZWN0QXJnVmVjdG9yVHlwZSYgYXJncywKKyAgICAgICAgICAgICAgIGNvbnN0IExvY2F0b3JUeXBlKiBsb2NhdG9yKSBjb25zdDsKKworICAgICAgICAgICAgWE9iamVjdFB0cgorICAgICAgICAgICAgZXhlY3V0ZSgKKyAgICAgICAgICAgICAgICBYUGF0aEV4ZWN1dGlvbkNvbnRleHQmICAgICAgICAgIGV4ZWN1dGlvbkNvbnRleHQsCisgICAgICAgICAgICAgICAgWGFsYW5Ob2RlKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwKKyAgICAgICAgICAgICAgICBjb25zdCBYT2JqZWN0UHRyICAgICAgICAgICAgICAgICAgICAgICAgYXJnMSwKKyAgICAgICAgICAgICAgICBjb25zdCBYT2JqZWN0UHRyICAgICAgICAgICAgICAgICAgICAgICAgYXJnMiwKKyAgICAgICAgICAgICAgICBjb25zdCBMb2NhdG9yVHlwZSogICAgICAgICAgICAgICAgICAgICAgbG9jYXRvcikgY29uc3Q7CisKKyAgICAgICAgICAgIFhPYmplY3RQdHIKKyAgICAgICAgICAgIGV4ZWN1dGUoCisgICAgICAgICAgICAgICAgWFBhdGhFeGVjdXRpb25Db250ZXh0JiAgICAgICAgICBleGVjdXRpb25Db250ZXh0LAorICAgICAgICAgICAgICAgIFhhbGFuTm9kZSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY29uc3QgWE9iamVjdFB0ciAgICAgICAgICAgICAgICAgICAgICAgIGFyZzEsCisgICAgICAgICAgICAgICAgY29uc3QgWE9iamVjdFB0ciAgICAgICAgICAgICAgICAgICAgICAgIGFyZzIsCisgICAgICAgICAgICAgICAgY29uc3QgWE9iamVjdFB0ciAgICAgICAgICAgICAgICAgICAgICAgIGFyZzMsCisgICAgICAgICAgICAgICAgY29uc3QgTG9jYXRvclR5cGUqICAgICAgICAgICAgICAgICAgICAgIGxvY2F0b3IpIGNvbnN0OworCisJI2lmICFkZWZpbmVkKFhBTEFOX05PX1VTSU5HX0RFQ0xBUkFUSU9OKQorICAgICAgICB1c2luZyBQYXJlbnRUeXBlOjpleGVjdXRlOworCSNlbmRpZgorCisJI2lmIGRlZmluZWQoWEFMQU5fTk9fQ09WQVJJQU5UX1JFVFVSTl9UWVBFKQorICAgICAgICB2aXJ0dWFsIEZ1bmN0aW9uKgorCSNlbHNlCisgICAgICAgIHZpcnR1YWwgRnVuY3Rpb25UZXN0KgorCSNlbmRpZgorICAgICAgICBjbG9uZSgpIGNvbnN0OworCisJcHJvdGVjdGVkOgorCisgICAgICAgIHZpcnR1YWwgY29uc3QgWGFsYW5ET01TdHJpbmcKKyAgICAgICAgZ2V0RXJyb3IoKSBjb25zdDsKKworICAgIHByaXZhdGU6CisKKyAgICAgICAgLy8gTm90IGltcGxlbWVudGVkLi4uCisgICAgICAgIEZ1bmN0aW9uVGVzdCYKKyAgICAgICAgb3BlcmF0b3I9KGNvbnN0IEZ1bmN0aW9uVGVzdCYpOworCisgICAgICAgIGJvb2wKKyAgICAgICAgb3BlcmF0b3I9PShjb25zdCBGdW5jdGlvblRlc3QmKSBjb25zdDsKKwl9OworCisgIHZvaWQgbWFpbjIodm9pZCl7CisKKwlGdW5jdGlvblRlc3QgdDsKKworICB9CisKK1hBTEFOX0NQUF9OQU1FU1BBQ0VfRU5ECisgIGludCBtYWluMyh2b2lkKSB7CisKKwldLAorCVtBQ19NU0dfUkVTVUxUKFtub10pXSwKKwlBQ19ERUZJTkUoWFNFQ19YQUxBTl9SRVFTX01FTU9SWU1BTkFHRVIpCisJW0FDX01TR19SRVNVTFQoW3llc10pXSk7CisKK2ZpCisKKyMgQUNfTEFORyhDKQorCisjIENoZWNrIGZvciBPcGVuU1NMCitpZiB0ZXN0ICRPUEVOU1NMIDsgdGhlbgorCisjIEZpcnN0IGNoZWNrIGluY2x1ZGVzCisKK0FDX01TR19DSEVDS0lORyhbZm9yIE9wZW5TU0wgaGVhZGVycyBpbiAkT1BFTlNTTF0pCisKK09MRF9DUFBGTEFHUz0kQ1BQRkxBR1MKK0NQUEZMQUdTPVsiJHtDUFBGTEFHU30gLUkke09QRU5TU0x9L2luY2x1ZGUiXQorCitBQ19UUllfQ1BQKFsjaW5jbHVkZSA8b3BlbnNzbC9vcGVuc3Nsdi5oPl0sIAorICAgb3BlbnNzbF9mb3VuZD15ZXMgCisgICBBQ19ERUZJTkUoSEFWRV9PUEVOU1NMKQorICAgW0FDX01TR19SRVNVTFQoW2ZvdW5kXSldLCAKKyAgIFtBQ19NU0dfRVJST1IoWyJVbmFibGUgdG8gZmluZCBPcGVuU1NMIGhlYWRlcnMiXSldKTsKKworIyBOb3cgY2hlY2sgbGlicworIyBOb3RlIHdlIGtlZXAgYm90aCB0aGUgYmFzZSBPUEVOU1NMIGRpciBhbmQgL2xpYiB0byBoYW5kbGUKKyMgYm90aCBhbiBpbnN0YWxsZWQgdmVyc2lvbiBvciBhIHNvdXJjZSBkaXIKKworT0xEX0xJQlM9JExJQlMKK0xJQlM9WyIke0xJQlN9IC1MJHtPUEVOU1NMfSAtbGNyeXB0byJdCisKKyMgQXMgb2YgMS4zIC0gdXNlIEFDX1RSWV9MSU5LIHRvIGNoZWNrIGFzIEFDX0NIRUNLX0xJQiBkb2VzCisjIHRoZSB3cm9uZyB0aGluZworCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBsaWJjcnlwdG9dKQorQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPl0sCisgICBbRVZQX0VuY3J5cHRJbml0KE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpIDsgcmV0dXJuIDA7IF0sCisgICBbQUNfTVNHX1JFU1VMVChbZm91bmRdKV0KKyAgIG9wZW5zc2xsaWJfZm91bmQ9eWVzLAorICAgW0xJQlM9JE9MRF9MSUJTXSkKKworICAgaWYgdGVzdCAteiAiJG9wZW5zc2xsaWJfZm91bmQiIDsgdGhlbgorCisgICBMSUJTPVsiJHtMSUJTfSAtTCR7T1BFTlNTTH0vbGliIC1sY3J5cHRvIl0KKyAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD5dLAorICAgICBbRVZQX0VuY3J5cHRJbml0KE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpIDsgcmV0dXJuIDA7IF0sCisgICAgICBbQUNfTVNHX1JFU1VMVChbZm91bmRdKV0KKyAgICAgIG9wZW5zc2xsaWJfZm91bmQ9eWVzLAorICAgICAgW0xJQlM9JE9MRF9MSUJTXQorICAgICAgICAgIFtBQ19NU0dfUkVTVUxUKFtub10pXQorCSAgW0FDX01TR19FUlJPUihbIlVuYWJsZSB0byBmaW5kIGxpYmNyeXB0byJdKV0pCisKKyAgZmkKKworZmkKKworaWYgdGVzdCAteiAiJG9wZW5zc2xfZm91bmQiIDsgdGhlbgorCisgICAgQUNfUEFUSF9QUk9HKFBLR19DT05GSUcsIHBrZy1jb25maWcpCisgICAgaWYgdGVzdCAieCRQS0dfQ09ORklHIiAhPSB4ICYmIHRlc3QgIngkUEtHX0NPTkZJRyIgIT0gInhubyIgOyB0aGVuCisgICAgICAgIGlmIHBrZy1jb25maWcgb3BlbnNzbCA7IHRoZW4KKyAgICAgICAgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgYCRQS0dfQ09ORklHIC0tY2ZsYWdzIG9wZW5zc2xgIgorICAgICAgICAgICAgTElCUz0iJExJQlMgYCRQS0dfQ09ORklHIC0tbGlicyBvcGVuc3NsYCIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQUNfTVNHX1dBUk4oW09wZW5TU0wgbm90IHN1cHBvcnRlZCBieSBwa2ctY29uZmlnLCB1c2luZyBkZWZhdWx0IHNldHRpbmdzXSkKKyAgICAgICAgICAgIExJQlM9IiR7TElCU30gLWxjcnlwdG8iCisgICAgICAgIGZpCisgICAgZWxzZQorICAgICAgICBMSUJTPSIke0xJQlN9IC1sY3J5cHRvIgorICAgIGZpCisKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBPcGVuU1NMIGluIHN5c3RlbSBpbmNsdWRlc10pCisgICAgQUNfVFJZX0NQUChbI2luY2x1ZGUgPG9wZW5zc2wvb3BlbnNzbHYuaD5dLCAKKyAgICAgICBvcGVuc3NsX2ZvdW5kPXllcyAKKyAgICAgICBBQ19ERUZJTkUoSEFWRV9PUEVOU1NMKQorICAgICAgIFtBQ19NU0dfUkVTVUxUKFtmb3VuZF0pXSwKKyAgICAgICBbQUNfTVNHX1JFU1VMVChbbm9dKV0KKyAgICAgICBbQUNfTVNHX0VSUk9SKFtPcGVuU1NMIGhlYWRlciBmaWxlcyBub3QgZm91bmQuICBQbGVhc2UgZGVmaW5lIE9QRU5TU0xdKV0pOworCitmaQorCisjIE5vdyB0cnkgdG8gZmluZCBvdXQgc29tZSB0aGluZ3MgYWJvdXQgdGhpcyB2ZXJzaW9uIG9mIE9wZW5TU0wKKworQUNfTEFORyhDKyspCisKK0FDX01TR19DSEVDS0lORyhbZm9yIGNvbnN0IGlucHV0IGJ1ZmZlcnMgaW4gT3BlblNTTF0pCitBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPG9wZW5zc2wvcnNhLmg+XSwKKwlbIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBidWY7CisJICB1bnNpZ25lZCBjaGFyICogb3V0YnVmOworCSAgUlNBIHJzYTsKKworCQlSU0FfcHJpdmF0ZV9kZWNyeXB0KDEsCisJCQkJCQkJYnVmLAorCQkJCQkJCW91dGJ1ZiwKKwkJCQkJCQkmcnNhLAorCQkJCQkJCVJTQV9QS0NTMV9QQURESU5HKTsKKworCV0sCisJW0FDX01TR19SRVNVTFQoW3llc10pXQorCVtBQ19ERUZJTkUoWFNFQ19PUEVOU1NMX0NPTlNUX0JVRkZFUlMpXSwKKwlbQUNfTVNHX1JFU1VMVChbbm9dKV0pCisKKyMgQ2hlY2sgZm9yIGZ1bGwgc3RyZW5ndGggQUVTIC0gU29sYXJpcyAxMCBpbnN0YWxsIGlzIGJyb2tlbgorIyBhbmQgb25seSBzdXBwb3J0cyBsb3cgZW5kIEFFUy4gIEFzIHRoZSBsaWJyYXJ5IGRvZXMgbm90IGhhdmUKKyMgdGhpcyBncmFudWxhcml0eSwgd2UgaGF2ZSB0byBkaXNhYmxlIEFFUyBpbiB0aGlzIGluc3RhbmNlLgorCisjIEFDX0NIRUNLX0RFQ0woRVZQX2Flc18yNTZfY2JjLAorIyAJW0FDX0RFRklORShYU0VDX09QRU5TU0xfSEFWRV9BRVMpXSwKKyMgCSxbI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+XSkKKworQUNfTVNHX0NIRUNLSU5HKFtmb3Igbm9uLWJyb2tlbiBBRVMgc3VwcG9ydF0pCitBQ19UUllfTElOSyhbI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+XSwKKwlbIEVWUF9hZXNfMjU2X2NiYygpOworCV0sCisJW0FDX01TR19SRVNVTFQoW3llc10pXQorCVtBQ19ERUZJTkUoWFNFQ19PUEVOU1NMX0hBVkVfQUVTKV0sCisJW0FDX01TR19SRVNVTFQoW25vXSldKQorCitBQ19DSEVDS19ERUNMKEVWUF9QS0VZX3NldDFfRUNfS0VZLAorICAgIFtBQ19ERUZJTkUoWFNFQ19PUEVOU1NMX0hBVkVfRUMpXSwKKyAgICAsWyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPl0pCisKK0FDX0NIRUNLX0RFQ0woRVZQX0NJUEhFUl9DVFhfc2V0X3BhZGRpbmcsCisJW0FDX0RFRklORShYU0VDX09QRU5TU0xfQ0FOU0VUX1BBRERJTkcpXSwKKwksWyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPl0pCisKK0FDX0NIRUNLX0RFQ0woQ1JZUFRPX2NsZWFudXBfYWxsX2V4X2RhdGEsCisJW0FDX0RFRklORShYU0VDX09QRU5TU0xfSEFWRV9DUllQVE9fQ0xFQU5VUF9BTExfRVhfREFUQSldLAorCSxbI2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+XSkKKworQUNfTVNHX0NIRUNLSU5HKFtmb3IgY29uc3QgaW5wdXQgYnVmZmVyIGluIGxvYWRYNTA5QmFzZTY0QmluXSkKK0FDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8b3BlbnNzbC94NTA5Lmg+XSwKKwlbIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBidWY7CisJICBkMmlfWDUwOShOVUxMLCAmYnVmLCAxKTsKKwldLAorCVtBQ19NU0dfUkVTVUxUKFt5ZXNdKV0KKwlbQUNfREVGSU5FKFhTRUNfT1BFTlNTTF9EMklYNTA5X0NPTlNUX0JVRkZFUildLAorCVtBQ19NU0dfUkVTVUxUKFtub10pXSkKKworIyBTdHJpbmcgZnVuY3Rpb25zCitBQ19DSEVDS19ERUNMKF9zdHJkdXAsCisJW0FDX0RFRklORShYU0VDX0hBVkVfX1NUUkRVUCldLAorCSxbI2luY2x1ZGUgPHN0cmluZy5oPl0pCisKK0FDX0NIRUNLX0RFQ0woX3N0cmljbXAsCisJW0FDX0RFRklORShYU0VDX0hBVkVfX1NUUkRVUCldLAorCSxbI2luY2x1ZGUgPHN0cmluZy5oPl0pCisKK0FDX0NIRUNLX0RFQ0woX2dldGN3ZCwKKwlbQUNfREVGSU5FKFhTRUNfSEFWRV9fR0VUQ1dEKV0sCisJLFsjaW5jbHVkZSA8c3RyaW5nLmg+XSkKKworQUNfQ0hFQ0tfREVDTChfZ2V0Y3dkLAorCVtBQ19ERUZJTkUoWFNFQ19IQVZFX19HRVRDV0QpXSwKKwksWyNpbmNsdWRlIDxzdHJpbmcuaD5dKQorCitBQ19DSEVDS19ERUNMKHN0cmljbXAsCisJW0FDX0RFRklORShYU0VDX0hBVkVfU1RSSUNNUCldLAorCSxbI2luY2x1ZGUgPHN0cmluZy5oPl0pCisKK0FDX0NIRUNLX0RFQ0woc3RyY2FzZWNtcCwKKwlbQUNfREVGSU5FKFhTRUNfSEFWRV9TVFJDQVNFQ01QKV0sCisJLFsjaW5jbHVkZSA8c3RyaW5nLmg+XSkKKworIyBQb3B1bGF0ZSBJbnN0YWxsIGRpcmVjdG9yaWVzCisKK0FDX1NVQlNUKHByZWZpeCkKK0FDX1NVQlNUKGV4ZWNfcHJlZml4KQorQUNfU1VCU1QoaW5jbHVkZWRpcikKK0FDX1NVQlNUKGxpYmRpcikKK0FDX1NVQlNUKGJpbmRpcikKKworIyBQb3B1bGF0ZSBzcGVjaWFsIHBsYXRmb3JtIHNwZWNpZmljIG1ha2UgY29tbWFuZHMKKworQUNfU1VCU1QoTElOS19DT01NQU5EXzEpCitBQ19TVUJTVChMSU5LX0NPTU1BTkRfMikKK0FDX1NVQlNUKElOU1RBTExfQ09NTUFORF8xKQorQUNfU1VCU1QoSU5TVEFMTF9DT01NQU5EXzIpCitBQ19TVUJTVChJTlNUQUxMX0NPTU1BTkRfMykKKworIyBOb3cgcG9wdWxhdGUgdGhlIHBsYXRmb3JtIGFuZCBDb21waWxlciByZWxhdGVkIHZhcmlhYmxlcy4KKworQUNfU1VCU1QocGxhdGZvcm0pCisKK2N4eD0ke0NYWH0KK0FDX1NVQlNUKGN4eCkKKworY2M9JHtDQ30KK0FDX1NVQlNUKGNjKQorCitBQ19TVUJTVChwcmVmaXgpCitBQ19TVUJTVChvc3ZlcikKKworY3h4ZmxhZ3M9JHtDWFhGTEFHU30KK0FDX1NVQlNUKGN4eGZsYWdzKQorCitjcHBmbGFncz0ke0NQUEZMQUdTfQorQUNfU1VCU1QoY3BwZmxhZ3MpCisKK2NmbGFncz0ke0NGTEFHU30KK0FDX1NVQlNUKGNmbGFncykKKworbGRmbGFncz0ke0xERkxBR1N9CitBQ19TVUJTVChsZGZsYWdzKQorCitsaWJzPSR7TElCU30KK0FDX1NVQlNUKGxpYnMpCisKK3RyYW5zY29kZXI9JHtUUkFOU0NPREVSfQorQUNfU1VCU1QodHJhbnNjb2RlcikKKwordGhyZWFkcz0ke1RIUkVBRFN9CitBQ19TVUJTVCh0aHJlYWRzKQorCitiaXRzdG9idWlsZD0ke0JJVFNUT0JVSUxEfQorQUNfU1VCU1QoYml0c3RvYnVpbGQpCisKK2NjMT0ke0NDMX0KK0FDX1NVQlNUKGNjMSkKKworY2M0PSR7Q0M0fQorQUNfU1VCU1QoY2M0KQorCitsbl9zPSR7TE5fU30KK0FDX1NVQlNUKGxuX3MpCisKK2luc3RhbGw9JHtJTlNUQUxMfQoraW5zdGFsbF9kYXRhPSR7SU5TVEFMTF9EQVRBfQorCitBQ19TVUJTVChpbnN0YWxsKQorQUNfU1VCU1QoaW5zdGFsbF9kYXRhKQorCittYWtlX3NoYXJlZD0ke01BS0VfU0hBUkVEfQorQUNfU1VCU1QobWFrZV9zaGFyZWQpCisKK2xpbms9JHtMSU5LfQorQUNfU1VCU1QobGluaykKKworQUNfU1VCU1Qob2Jqc3VmZml4KQorQUNfU1VCU1Qoc2hsaWJzdWZmaXgpCisKKyMgUG9wdWxhdGUgdGhlIE1ha2VmaWxlIGNvbmRpdGlvbmFscworQU1fQ09ORElUSU9OQUwoWFNFQ19BTV9IQVZFX09QRU5TU0wsIHRlc3QgeCRvcGVuc3NsX2ZvdW5kID0geHllcykKKworIyBWZXJzaW9uaW5nCitwYWNrYWdlX3ZlcnNpb249JHtQQUNLQUdFX1ZFUlNJT059CitwYWNrYWdlX2xpYnRvb2xfdmVyc2lvbj0iJHtwYWNrYWdlX3ZlcnNpb25fbWFqb3J9JHtwYWNrYWdlX3ZlcnNpb25fbWVkaXVtfToke3BhY2thZ2VfdmVyc2lvbl9taW5vcn0iCitBQ19TVUJTVChwYWNrYWdlX3ZlcnNpb24pCitBQ19TVUJTVChwYWNrYWdlX3ZlcnNpb25fbWFqb3IpCitBQ19TVUJTVChwYWNrYWdlX2xpYnRvb2xfdmVyc2lvbikKK0FDX0RFRklORV9VTlFVT1RFRChYU0VDX1ZFUlNJT04sICIkcGFja2FnZV92ZXJzaW9uIikKK0FDX0RFRklORV9VTlFVT1RFRChYU0VDX1ZFUlNJT05fTUFKT1IsICRwYWNrYWdlX3ZlcnNpb25fbWFqb3IpCitBQ19ERUZJTkVfVU5RVU9URUQoWFNFQ19WRVJTSU9OX01FRElVTSwgJHBhY2thZ2VfdmVyc2lvbl9tZWRpdW0pCitBQ19ERUZJTkVfVU5RVU9URUQoWFNFQ19WRVJTSU9OX01JTk9SLCAkcGFja2FnZV92ZXJzaW9uX21pbm9yKQorCitwYWNrYWdlX25hbWU9JHtQQUNLQUdFX05BTUV9CitBQ19TVUJTVChwYWNrYWdlX25hbWUpCitwYWNrYWdlX3Rhcm5hbWU9JHtQQUNLQUdFX1RBUk5BTUV9CitBQ19TVUJTVChwYWNrYWdlX3Rhcm5hbWUpCisKKyMgTGlicmFyeSBuYW1lcworQUNfU1VCU1QobGliX25hbWUpCitBQ19TVUJTVChsaWJfbWFqb3JfbmFtZSkKK0FDX1NVQlNUKGxpYl9zaG9ydF9uYW1lKQorCisjIG91dHB1dCB0aGUgTWFrZWZpbGVzCitBQ19PVVRQVVQoKQpkaWZmIC0tZ2l0IGEvYy9kb2MvTElDRU5TRS5mb3JyZXN0IGIvYy9kb2MvTElDRU5TRS5mb3JyZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNzZlOWIKLS0tIC9kZXYvbnVsbAorKysgYi9jL2RvYy9MSUNFTlNFLmZvcnJlc3QKQEAgLTAsMCArMSw0OSBAQAorLyoKKworID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgICAgICAgICAgICAgICBUaGUgQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4xCisgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIAorIENvcHlyaWdodCAoQykgMjAwMiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgCisgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhLQorIHRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAKKyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2YgIHNvdXJjZSBjb2RlIG11c3QgIHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0ICBub3RpY2UsCisgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAKKyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIAorIDMuIFRoZSBlbmQtdXNlciBkb2N1bWVudGF0aW9uIGluY2x1ZGVkIHdpdGggdGhlIHJlZGlzdHJpYnV0aW9uLCBpZiBhbnksIG11c3QKKyAgICBpbmNsdWRlICB0aGUgZm9sbG93aW5nICBhY2tub3dsZWRnbWVudDogICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgIHNvZnR3YXJlCisgICAgZGV2ZWxvcGVkICBieSB0aGUgIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uICAoaHR0cDovL3d3dy5hcGFjaGUub3JnLykuIgorICAgIEFsdGVybmF0ZWx5LCB0aGlzICBhY2tub3dsZWRnbWVudCBtYXkgIGFwcGVhciBpbiB0aGUgc29mdHdhcmUgaXRzZWxmLCAgaWYKKyAgICBhbmQgd2hlcmV2ZXIgc3VjaCB0aGlyZC1wYXJ0eSBhY2tub3dsZWRnbWVudHMgbm9ybWFsbHkgYXBwZWFyLgorIAorIDQuIFRoZSBuYW1lcyAiQXBhY2hlIEZvcnJlc3QiIGFuZCAgIkFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIiBtdXN0ICBub3QgYmUKKyAgICB1c2VkIHRvICBlbmRvcnNlIG9yIHByb21vdGUgIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0CisgICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAorICAgIGFwYWNoZUBhcGFjaGUub3JnLgorIAorIDUuIFByb2R1Y3RzICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90ICBiZSBjYWxsZWQgIkFwYWNoZSIsIG5vciBtYXkKKyAgICAiQXBhY2hlIiBhcHBlYXIgIGluIHRoZWlyIG5hbWUsICB3aXRob3V0IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbiAgb2YgdGhlCisgICAgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgCisgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLAorIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQKKyBGSVRORVNTICBGT1IgQSBQQVJUSUNVTEFSICBQVVJQT1NFIEFSRSAgRElTQ0xBSU1FRC4gIElOIE5PICBFVkVOVCBTSEFMTCAgVEhFCisgQVBBQ0hFIFNPRlRXQVJFICBGT1VOREFUSU9OICBPUiBJVFMgQ09OVFJJQlVUT1JTICBCRSBMSUFCTEUgRk9SICBBTlkgRElSRUNULAorIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCAgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMICBEQU1BR0VTIChJTkNMVS0KKyBESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UICBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTCisgT0YgVVNFLCBEQVRBLCBPUiAgUFJPRklUUzsgT1IgQlVTSU5FU1MgIElOVEVSUlVQVElPTikgIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorIEFOWSAgVEhFT1JZIE9GIExJQUJJTElUWSwgIFdIRVRIRVIgIElOIENPTlRSQUNULCAgU1RSSUNUIExJQUJJTElUWSwgIE9SIFRPUlQKKyAoSU5DTFVESU5HICBORUdMSUdFTkNFIE9SICBPVEhFUldJU0UpIEFSSVNJTkcgSU4gIEFOWSBXQVkgT1VUIE9GIFRIRSAgVVNFIE9GCisgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAKKyBUaGlzIHNvZnR3YXJlICBjb25zaXN0cyBvZiB2b2x1bnRhcnkgY29udHJpYnV0aW9ucyBtYWRlICBieSBtYW55IGluZGl2aWR1YWxzCisgb24gYmVoYWxmICBvZiB0aGUgQXBhY2hlICBTb2Z0d2FyZSBGb3VuZGF0aW9uLiBGb3IgIG1vcmUgaW5mb3JtYXRpb24gIG9uIHRoZSAKKyBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiwgcGxlYXNlIHNlZSA8aHR0cDovL3d3dy5hcGFjaGUub3JnLz4uCisgCisqLwpkaWZmIC0tZ2l0IGEvYy9kb2MvTElDRU5TRS5vcGVuc3NsIGIvYy9kb2MvTElDRU5TRS5vcGVuc3NsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiOTNlMGQKLS0tIC9kZXYvbnVsbAorKysgYi9jL2RvYy9MSUNFTlNFLm9wZW5zc2wKQEAgLTAsMCArMSwxMjcgQEAKKworICBMSUNFTlNFIElTU1VFUworICA9PT09PT09PT09PT09PQorCisgIFRoZSBPcGVuU1NMIHRvb2xraXQgc3RheXMgdW5kZXIgYSBkdWFsIGxpY2Vuc2UsIGkuZS4gYm90aCB0aGUgY29uZGl0aW9ucyBvZgorICB0aGUgT3BlblNTTCBMaWNlbnNlIGFuZCB0aGUgb3JpZ2luYWwgU1NMZWF5IGxpY2Vuc2UgYXBwbHkgdG8gdGhlIHRvb2xraXQuCisgIFNlZSBiZWxvdyBmb3IgdGhlIGFjdHVhbCBsaWNlbnNlIHRleHRzLiBBY3R1YWxseSBib3RoIGxpY2Vuc2VzIGFyZSBCU0Qtc3R5bGUKKyAgT3BlbiBTb3VyY2UgbGljZW5zZXMuIEluIGNhc2Ugb2YgYW55IGxpY2Vuc2UgaXNzdWVzIHJlbGF0ZWQgdG8gT3BlblNTTAorICBwbGVhc2UgY29udGFjdCBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCisKKyAgT3BlblNTTCBMaWNlbnNlCisgIC0tLS0tLS0tLS0tLS0tLQorCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcworICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6CisgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisgKgorICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAorICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAorICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgorICoKKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgorICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgorICoKKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKyAqICAgIGFja25vd2xlZGdtZW50OgorICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCisgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKgorICogVGhpcyBwcm9kdWN0IGluY2x1ZGVzIGNyeXB0b2dyYXBoaWMgc29mdHdhcmUgd3JpdHRlbiBieSBFcmljIFlvdW5nCisgKiAoZWF5QGNyeXB0c29mdC5jb20pLiAgVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIHdyaXR0ZW4gYnkgVGltCisgKiBIdWRzb24gKHRqaEBjcnlwdHNvZnQuY29tKS4KKyAqCisgKi8KKworIE9yaWdpbmFsIFNTTGVheSBMaWNlbnNlCisgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLyogQ29weXJpZ2h0IChDKSAxOTk1LTE5OTggRXJpYyBZb3VuZyAoZWF5QGNyeXB0c29mdC5jb20pCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgcGFja2FnZSBpcyBhbiBTU0wgaW1wbGVtZW50YXRpb24gd3JpdHRlbgorICogYnkgRXJpYyBZb3VuZyAoZWF5QGNyeXB0c29mdC5jb20pLgorICogVGhlIGltcGxlbWVudGF0aW9uIHdhcyB3cml0dGVuIHNvIGFzIHRvIGNvbmZvcm0gd2l0aCBOZXRzY2FwZXMgU1NMLgorICogCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBmb3IgY29tbWVyY2lhbCBhbmQgbm9uLWNvbW1lcmNpYWwgdXNlIGFzIGxvbmcgYXMKKyAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgYWhlYXJlZCB0by4gIFRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXBwbHkgdG8gYWxsIGNvZGUgZm91bmQgaW4gdGhpcyBkaXN0cmlidXRpb24sIGJlIGl0IHRoZSBSQzQsIFJTQSwKKyAqIGxoYXNoLCBERVMsIGV0Yy4sIGNvZGU7IG5vdCBqdXN0IHRoZSBTU0wgY29kZS4gIFRoZSBTU0wgZG9jdW1lbnRhdGlvbgorICogaW5jbHVkZWQgd2l0aCB0aGlzIGRpc3RyaWJ1dGlvbiBpcyBjb3ZlcmVkIGJ5IHRoZSBzYW1lIGNvcHlyaWdodCB0ZXJtcworICogZXhjZXB0IHRoYXQgdGhlIGhvbGRlciBpcyBUaW0gSHVkc29uICh0amhAY3J5cHRzb2Z0LmNvbSkuCisgKiAKKyAqIENvcHlyaWdodCByZW1haW5zIEVyaWMgWW91bmcncywgYW5kIGFzIHN1Y2ggYW55IENvcHlyaWdodCBub3RpY2VzIGluCisgKiB0aGUgY29kZSBhcmUgbm90IHRvIGJlIHJlbW92ZWQuCisgKiBJZiB0aGlzIHBhY2thZ2UgaXMgdXNlZCBpbiBhIHByb2R1Y3QsIEVyaWMgWW91bmcgc2hvdWxkIGJlIGdpdmVuIGF0dHJpYnV0aW9uCisgKiBhcyB0aGUgYXV0aG9yIG9mIHRoZSBwYXJ0cyBvZiB0aGUgbGlicmFyeSB1c2VkLgorICogVGhpcyBjYW4gYmUgaW4gdGhlIGZvcm0gb2YgYSB0ZXh0dWFsIG1lc3NhZ2UgYXQgcHJvZ3JhbSBzdGFydHVwIG9yCisgKiBpbiBkb2N1bWVudGF0aW9uIChvbmxpbmUgb3IgdGV4dHVhbCkgcHJvdmlkZWQgd2l0aCB0aGUgcGFja2FnZS4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKKyAqICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoKKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgY3J5cHRvZ3JhcGhpYyBzb2Z0d2FyZSB3cml0dGVuIGJ5CisgKiAgICAgRXJpYyBZb3VuZyAoZWF5QGNyeXB0c29mdC5jb20pIgorICogICAgVGhlIHdvcmQgJ2NyeXB0b2dyYXBoaWMnIGNhbiBiZSBsZWZ0IG91dCBpZiB0aGUgcm91aW5lcyBmcm9tIHRoZSBsaWJyYXJ5CisgKiAgICBiZWluZyB1c2VkIGFyZSBub3QgY3J5cHRvZ3JhcGhpYyByZWxhdGVkIDotKS4KKyAqIDQuIElmIHlvdSBpbmNsdWRlIGFueSBXaW5kb3dzIHNwZWNpZmljIGNvZGUgKG9yIGEgZGVyaXZhdGl2ZSB0aGVyZW9mKSBmcm9tIAorICogICAgdGhlIGFwcHMgZGlyZWN0b3J5IChhcHBsaWNhdGlvbiBjb2RlKSB5b3UgbXVzdCBpbmNsdWRlIGFuIGFja25vd2xlZGdlbWVudDoKKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgd3JpdHRlbiBieSBUaW0gSHVkc29uICh0amhAY3J5cHRzb2Z0LmNvbSkiCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRVJJQyBZT1VORyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqIAorICogVGhlIGxpY2VuY2UgYW5kIGRpc3RyaWJ1dGlvbiB0ZXJtcyBmb3IgYW55IHB1YmxpY2FsbHkgYXZhaWxhYmxlIHZlcnNpb24gb3IKKyAqIGRlcml2YXRpdmUgb2YgdGhpcyBjb2RlIGNhbm5vdCBiZSBjaGFuZ2VkLiAgaS5lLiB0aGlzIGNvZGUgY2Fubm90IHNpbXBseSBiZQorICogY29waWVkIGFuZCBwdXQgdW5kZXIgYW5vdGhlciBkaXN0cmlidXRpb24gbGljZW5jZQorICogW2luY2x1ZGluZyB0aGUgR05VIFB1YmxpYyBMaWNlbmNlLl0KKyAqLworCmRpZmYgLS1naXQgYS9jL2RvYy9MSUNFTlNFLnhhbGFuIGIvYy9kb2MvTElDRU5TRS54YWxhbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmY4NzExCi0tLSAvZGV2L251bGwKKysrIGIvYy9kb2MvTElDRU5TRS54YWxhbgpAQCAtMCwwICsxLDU2IEBACisvKgorICogVGhlIEFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMQorICoKKyAqIENvcHlyaWdodCAoYykgMTk5OSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uICBBbGwgcmlnaHRzIAorICogcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIDMuIFRoZSBlbmQtdXNlciBkb2N1bWVudGF0aW9uIGluY2x1ZGVkIHdpdGggdGhlIHJlZGlzdHJpYnV0aW9uLAorICogICAgaWYgYW55LCBtdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDogIAorICogICAgICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlCisgKiAgICAgICAgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKGh0dHA6Ly93d3cuYXBhY2hlLm9yZy8pLiIKKyAqICAgIEFsdGVybmF0ZWx5LCB0aGlzIGFja25vd2xlZGdtZW50IG1heSBhcHBlYXIgaW4gdGhlIHNvZnR3YXJlIGl0c2VsZiwKKyAqICAgIGlmIGFuZCB3aGVyZXZlciBzdWNoIHRoaXJkLXBhcnR5IGFja25vd2xlZGdtZW50cyBub3JtYWxseSBhcHBlYXIuCisgKgorICogNC4gVGhlIG5hbWVzICJYYWxhbiIgYW5kICJBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiIgbXVzdAorICogICAgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gCisgKiAgICBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdCBhcGFjaGVAYXBhY2hlLm9yZy4KKyAqCisgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiQXBhY2hlIiwKKyAqICAgIG5vciBtYXkgIkFwYWNoZSIgYXBwZWFyIGluIHRoZWlyIG5hbWUsIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorICogICAgcGVybWlzc2lvbiBvZiB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTRUQgT1IgSU1QTElFRAorICogV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKKyAqIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFQQUNIRSBTT0ZUV0FSRSBGT1VOREFUSU9OIE9SCisgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GCisgKiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVAorICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKgorICogVGhpcyBzb2Z0d2FyZSBjb25zaXN0cyBvZiB2b2x1bnRhcnkgY29udHJpYnV0aW9ucyBtYWRlIGJ5IG1hbnkKKyAqIGluZGl2aWR1YWxzIG9uIGJlaGFsZiBvZiB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gYW5kIHdhcworICogb3JpZ2luYWxseSBiYXNlZCBvbiBzb2Z0d2FyZSBjb3B5cmlnaHQgKGMpIDE5OTksIExvdHVzCisgKiBEZXZlbG9wbWVudCBDb3Jwb3JhdGlvbi4sIGh0dHA6Ly93d3cubG90dXMuY29tLiAgRm9yIG1vcmUKKyAqIGluZm9ybWF0aW9uIG9uIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiwgcGxlYXNlIHNlZQorICogPGh0dHA6Ly93d3cuYXBhY2hlLm9yZy8+LgorICovCisKZGlmZiAtLWdpdCBhL2MvZG9jL0xJQ0VOU0UueGVyY2VzIGIvYy9kb2MvTElDRU5TRS54ZXJjZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY0NTQyZAotLS0gL2Rldi9udWxsCisrKyBiL2MvZG9jL0xJQ0VOU0UueGVyY2VzCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBUaGUgQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4xCisgKgorICoKKyAqIENvcHlyaWdodCAoYykgMTk5OS0yMDAxIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4gIEFsbCByaWdodHMKKyAqIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAzLiBUaGUgZW5kLXVzZXIgZG9jdW1lbnRhdGlvbiBpbmNsdWRlZCB3aXRoIHRoZSByZWRpc3RyaWJ1dGlvbiwKKyAqICAgIGlmIGFueSwgbXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6ICAKKyAqICAgICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZQorICogICAgICAgIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChodHRwOi8vd3d3LmFwYWNoZS5vcmcvKS4iCisgKiAgICBBbHRlcm5hdGVseSwgdGhpcyBhY2tub3dsZWRnbWVudCBtYXkgYXBwZWFyIGluIHRoZSBzb2Z0d2FyZSBpdHNlbGYsCisgKiAgICBpZiBhbmQgd2hlcmV2ZXIgc3VjaCB0aGlyZC1wYXJ0eSBhY2tub3dsZWRnbWVudHMgbm9ybWFsbHkgYXBwZWFyLgorICoKKyAqIDQuIFRoZSBuYW1lcyAiWGVyY2VzIiBhbmQgIkFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIiBtdXN0CisgKiAgICBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiAKKyAqICAgIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0IGFwYWNoZUBhcGFjaGUub3JnLgorICoKKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJBcGFjaGUiLAorICogICAgbm9yIG1heSAiQXBhY2hlIiBhcHBlYXIgaW4gdGhlaXIgbmFtZSwgd2l0aG91dCBwcmlvciB3cml0dGVuCisgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1NFRCBPUiBJTVBMSUVECisgKiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUworICogT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVBBQ0hFIFNPRlRXQVJFIEZPVU5EQVRJT04gT1IKKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YKKyAqIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUCisgKiBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGNvbnNpc3RzIG9mIHZvbHVudGFyeSBjb250cmlidXRpb25zIG1hZGUgYnkgbWFueQorICogaW5kaXZpZHVhbHMgb24gYmVoYWxmIG9mIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiBhbmQgd2FzCisgKiBvcmlnaW5hbGx5IGJhc2VkIG9uIHNvZnR3YXJlIGNvcHlyaWdodCAoYykgMTk5OSwgSW50ZXJuYXRpb25hbAorICogQnVzaW5lc3MgTWFjaGluZXMsIEluYy4sIGh0dHA6Ly93d3cuaWJtLmNvbS4gIEZvciBtb3JlCisgKiBpbmZvcm1hdGlvbiBvbiB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHBsZWFzZSBzZWUKKyAqIDxodHRwOi8vd3d3LmFwYWNoZS5vcmcvPi4KKyAqLwpkaWZmIC0tZ2l0IGEvYy9kb2MvUkVBRE1FLnR4dCBiL2MvZG9jL1JFQURNRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY4ZTNiNAotLS0gL2Rldi9udWxsCisrKyBiL2MvZG9jL1JFQURNRS50eHQKQEAgLTAsMCArMSw4IEBACitDKysgTGlicmFyeSBEb2NzCistLS0tLS0tLS0tLS0tLS0tCisKK0ZvciBkb2N1bWVudGF0aW9uIChpbmNsdWRpbmcgYnVpbGQgaW5zdHJ1Y3Rpb25zKSBzZWUKKworZG9jL2luZGV4Lmh0bWwKKworCmRpZmYgLS1naXQgYS9jL2RvYy9kb3h5LmNvbmYgYi9jL2RvYy9kb3h5LmNvbmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThhY2IyNwotLS0gL2Rldi9udWxsCisrKyBiL2MvZG9jL2RveHkuY29uZgpAQCAtMCwwICsxLDEyMjEgQEAKKyMgRG94eWZpbGUgMS40LjIKKworIyBUaGlzIGZpbGUgZGVzY3JpYmVzIHRoZSBzZXR0aW5ncyB0byBiZSB1c2VkIGJ5IHRoZSBkb2N1bWVudGF0aW9uIHN5c3RlbQorIyBkb3h5Z2VuICh3d3cuZG94eWdlbi5vcmcpIGZvciBhIHByb2plY3QKKyMKKyMgQWxsIHRleHQgYWZ0ZXIgYSBoYXNoICgjKSBpcyBjb25zaWRlcmVkIGEgY29tbWVudCBhbmQgd2lsbCBiZSBpZ25vcmVkCisjIFRoZSBmb3JtYXQgaXM6CisjICAgICAgIFRBRyA9IHZhbHVlIFt2YWx1ZSwgLi4uXQorIyBGb3IgbGlzdHMgaXRlbXMgY2FuIGFsc28gYmUgYXBwZW5kZWQgdXNpbmc6CisjICAgICAgIFRBRyArPSB2YWx1ZSBbdmFsdWUsIC4uLl0KKyMgVmFsdWVzIHRoYXQgY29udGFpbiBzcGFjZXMgc2hvdWxkIGJlIHBsYWNlZCBiZXR3ZWVuIHF1b3RlcyAoIiAiKQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFByb2plY3QgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBUaGUgUFJPSkVDVF9OQU1FIHRhZyBpcyBhIHNpbmdsZSB3b3JkIChvciBhIHNlcXVlbmNlIG9mIHdvcmRzIHN1cnJvdW5kZWQgCisjIGJ5IHF1b3RlcykgdGhhdCBzaG91bGQgaWRlbnRpZnkgdGhlIHByb2plY3QuCisKK1BST0pFQ1RfTkFNRSAgICAgICAgICAgPSBYTUwtU2VjdXJpdHktQworCisjIFRoZSBQUk9KRUNUX05VTUJFUiB0YWcgY2FuIGJlIHVzZWQgdG8gZW50ZXIgYSBwcm9qZWN0IG9yIHJldmlzaW9uIG51bWJlci4gCisjIFRoaXMgY291bGQgYmUgaGFuZHkgZm9yIGFyY2hpdmluZyB0aGUgZ2VuZXJhdGVkIGRvY3VtZW50YXRpb24gb3IgCisjIGlmIHNvbWUgdmVyc2lvbiBjb250cm9sIHN5c3RlbSBpcyB1c2VkLgorCitQUk9KRUNUX05VTUJFUiAgICAgICAgID0gMS40LjAKKworIyBUaGUgT1VUUFVUX0RJUkVDVE9SWSB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSAocmVsYXRpdmUgb3IgYWJzb2x1dGUpIAorIyBiYXNlIHBhdGggd2hlcmUgdGhlIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uIHdpbGwgYmUgcHV0LiAKKyMgSWYgYSByZWxhdGl2ZSBwYXRoIGlzIGVudGVyZWQsIGl0IHdpbGwgYmUgcmVsYXRpdmUgdG8gdGhlIGxvY2F0aW9uIAorIyB3aGVyZSBkb3h5Z2VuIHdhcyBzdGFydGVkLiBJZiBsZWZ0IGJsYW5rIHRoZSBjdXJyZW50IGRpcmVjdG9yeSB3aWxsIGJlIHVzZWQuCisKK09VVFBVVF9ESVJFQ1RPUlkgICAgICAgPSAKKworIyBJZiB0aGUgQ1JFQVRFX1NVQkRJUlMgdGFnIGlzIHNldCB0byBZRVMsIHRoZW4gZG94eWdlbiB3aWxsIGNyZWF0ZSAKKyMgNDA5NiBzdWItZGlyZWN0b3JpZXMgKGluIDIgbGV2ZWxzKSB1bmRlciB0aGUgb3V0cHV0IGRpcmVjdG9yeSBvZiBlYWNoIG91dHB1dCAKKyMgZm9ybWF0IGFuZCB3aWxsIGRpc3RyaWJ1dGUgdGhlIGdlbmVyYXRlZCBmaWxlcyBvdmVyIHRoZXNlIGRpcmVjdG9yaWVzLiAKKyMgRW5hYmxpbmcgdGhpcyBvcHRpb24gY2FuIGJlIHVzZWZ1bCB3aGVuIGZlZWRpbmcgZG94eWdlbiBhIGh1Z2UgYW1vdW50IG9mIAorIyBzb3VyY2UgZmlsZXMsIHdoZXJlIHB1dHRpbmcgYWxsIGdlbmVyYXRlZCBmaWxlcyBpbiB0aGUgc2FtZSBkaXJlY3Rvcnkgd291bGQgCisjIG90aGVyd2lzZSBjYXVzZSBwZXJmb3JtYW5jZSBwcm9ibGVtcyBmb3IgdGhlIGZpbGUgc3lzdGVtLgorCitDUkVBVEVfU1VCRElSUyAgICAgICAgID0gTk8KKworIyBUaGUgT1VUUFVUX0xBTkdVQUdFIHRhZyBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGxhbmd1YWdlIGluIHdoaWNoIGFsbCAKKyMgZG9jdW1lbnRhdGlvbiBnZW5lcmF0ZWQgYnkgZG94eWdlbiBpcyB3cml0dGVuLiBEb3h5Z2VuIHdpbGwgdXNlIHRoaXMgCisjIGluZm9ybWF0aW9uIHRvIGdlbmVyYXRlIGFsbCBjb25zdGFudCBvdXRwdXQgaW4gdGhlIHByb3BlciBsYW5ndWFnZS4gCisjIFRoZSBkZWZhdWx0IGxhbmd1YWdlIGlzIEVuZ2xpc2gsIG90aGVyIHN1cHBvcnRlZCBsYW5ndWFnZXMgYXJlOiAKKyMgQnJhemlsaWFuLCBDYXRhbGFuLCBDaGluZXNlLCBDaGluZXNlLVRyYWRpdGlvbmFsLCBDcm9hdGlhbiwgQ3plY2gsIERhbmlzaCwgCisjIER1dGNoLCBGaW5uaXNoLCBGcmVuY2gsIEdlcm1hbiwgR3JlZWssIEh1bmdhcmlhbiwgSXRhbGlhbiwgSmFwYW5lc2UsIAorIyBKYXBhbmVzZS1lbiAoSmFwYW5lc2Ugd2l0aCBFbmdsaXNoIG1lc3NhZ2VzKSwgS29yZWFuLCBLb3JlYW4tZW4sIE5vcndlZ2lhbiwgCisjIFBvbGlzaCwgUG9ydHVndWVzZSwgUm9tYW5pYW4sIFJ1c3NpYW4sIFNlcmJpYW4sIFNsb3ZhaywgU2xvdmVuZSwgU3BhbmlzaCwgCisjIFN3ZWRpc2gsIGFuZCBVa3JhaW5pYW4uCisKK09VVFBVVF9MQU5HVUFHRSAgICAgICAgPSBFbmdsaXNoCisKKyMgVGhpcyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgZW5jb2RpbmcgdXNlZCBpbiB0aGUgZ2VuZXJhdGVkIG91dHB1dC4gCisjIFRoZSBlbmNvZGluZyBpcyBub3QgYWx3YXlzIGRldGVybWluZWQgYnkgdGhlIGxhbmd1YWdlIHRoYXQgaXMgY2hvc2VuLCAKKyMgYnV0IGFsc28gd2hldGhlciBvciBub3QgdGhlIG91dHB1dCBpcyBtZWFudCBmb3IgV2luZG93cyBvciBub24tV2luZG93cyB1c2Vycy4gCisjIEluIGNhc2UgdGhlcmUgaXMgYSBkaWZmZXJlbmNlLCBzZXR0aW5nIHRoZSBVU0VfV0lORE9XU19FTkNPRElORyB0YWcgdG8gWUVTIAorIyBmb3JjZXMgdGhlIFdpbmRvd3MgZW5jb2RpbmcgKHRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIHRoZSBXaW5kb3dzIGJpbmFyeSksIAorIyB3aGVyZWFzIHNldHRpbmcgdGhlIHRhZyB0byBOTyB1c2VzIGEgVW5peC1zdHlsZSBlbmNvZGluZyAodGhlIGRlZmF1bHQgZm9yIAorIyBhbGwgcGxhdGZvcm1zIG90aGVyIHRoYW4gV2luZG93cykuCisKK1VTRV9XSU5ET1dTX0VOQ09ESU5HICAgPSBOTworCisjIElmIHRoZSBCUklFRl9NRU1CRVJfREVTQyB0YWcgaXMgc2V0IHRvIFlFUyAodGhlIGRlZmF1bHQpIERveHlnZW4gd2lsbCAKKyMgaW5jbHVkZSBicmllZiBtZW1iZXIgZGVzY3JpcHRpb25zIGFmdGVyIHRoZSBtZW1iZXJzIHRoYXQgYXJlIGxpc3RlZCBpbiAKKyMgdGhlIGZpbGUgYW5kIGNsYXNzIGRvY3VtZW50YXRpb24gKHNpbWlsYXIgdG8gSmF2YURvYykuIAorIyBTZXQgdG8gTk8gdG8gZGlzYWJsZSB0aGlzLgorCitCUklFRl9NRU1CRVJfREVTQyAgICAgID0gWUVTCisKKyMgSWYgdGhlIFJFUEVBVF9CUklFRiB0YWcgaXMgc2V0IHRvIFlFUyAodGhlIGRlZmF1bHQpIERveHlnZW4gd2lsbCBwcmVwZW5kIAorIyB0aGUgYnJpZWYgZGVzY3JpcHRpb24gb2YgYSBtZW1iZXIgb3IgZnVuY3Rpb24gYmVmb3JlIHRoZSBkZXRhaWxlZCBkZXNjcmlwdGlvbi4gCisjIE5vdGU6IGlmIGJvdGggSElERV9VTkRPQ19NRU1CRVJTIGFuZCBCUklFRl9NRU1CRVJfREVTQyBhcmUgc2V0IHRvIE5PLCB0aGUgCisjIGJyaWVmIGRlc2NyaXB0aW9ucyB3aWxsIGJlIGNvbXBsZXRlbHkgc3VwcHJlc3NlZC4KKworUkVQRUFUX0JSSUVGICAgICAgICAgICA9IFlFUworCisjIFRoaXMgdGFnIGltcGxlbWVudHMgYSBxdWFzaS1pbnRlbGxpZ2VudCBicmllZiBkZXNjcmlwdGlvbiBhYmJyZXZpYXRvciAKKyMgdGhhdCBpcyB1c2VkIHRvIGZvcm0gdGhlIHRleHQgaW4gdmFyaW91cyBsaXN0aW5ncy4gRWFjaCBzdHJpbmcgCisjIGluIHRoaXMgbGlzdCwgaWYgZm91bmQgYXMgdGhlIGxlYWRpbmcgdGV4dCBvZiB0aGUgYnJpZWYgZGVzY3JpcHRpb24sIHdpbGwgYmUgCisjIHN0cmlwcGVkIGZyb20gdGhlIHRleHQgYW5kIHRoZSByZXN1bHQgYWZ0ZXIgcHJvY2Vzc2luZyB0aGUgd2hvbGUgbGlzdCwgaXMgCisjIHVzZWQgYXMgdGhlIGFubm90YXRlZCB0ZXh0LiBPdGhlcndpc2UsIHRoZSBicmllZiBkZXNjcmlwdGlvbiBpcyB1c2VkIGFzLWlzLiAKKyMgSWYgbGVmdCBibGFuaywgdGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlIHVzZWQgKCIkbmFtZSIgaXMgYXV0b21hdGljYWxseSAKKyMgcmVwbGFjZWQgd2l0aCB0aGUgbmFtZSBvZiB0aGUgZW50aXR5KTogIlRoZSAkbmFtZSBjbGFzcyIgIlRoZSAkbmFtZSB3aWRnZXQiIAorIyAiVGhlICRuYW1lIGZpbGUiICJpcyIgInByb3ZpZGVzIiAic3BlY2lmaWVzIiAiY29udGFpbnMiIAorIyAicmVwcmVzZW50cyIgImEiICJhbiIgInRoZSIKKworQUJCUkVWSUFURV9CUklFRiAgICAgICA9IAorCisjIElmIHRoZSBBTFdBWVNfREVUQUlMRURfU0VDIGFuZCBSRVBFQVRfQlJJRUYgdGFncyBhcmUgYm90aCBzZXQgdG8gWUVTIHRoZW4gCisjIERveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIGRldGFpbGVkIHNlY3Rpb24gZXZlbiBpZiB0aGVyZSBpcyBvbmx5IGEgYnJpZWYgCisjIGRlc2NyaXB0aW9uLgorCitBTFdBWVNfREVUQUlMRURfU0VDICAgID0gTk8KKworIyBJZiB0aGUgSU5MSU5FX0lOSEVSSVRFRF9NRU1CIHRhZyBpcyBzZXQgdG8gWUVTLCBkb3h5Z2VuIHdpbGwgc2hvdyBhbGwgCisjIGluaGVyaXRlZCBtZW1iZXJzIG9mIGEgY2xhc3MgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgdGhhdCBjbGFzcyBhcyBpZiB0aG9zZSAKKyMgbWVtYmVycyB3ZXJlIG9yZGluYXJ5IGNsYXNzIG1lbWJlcnMuIENvbnN0cnVjdG9ycywgZGVzdHJ1Y3RvcnMgYW5kIGFzc2lnbm1lbnQgCisjIG9wZXJhdG9ycyBvZiB0aGUgYmFzZSBjbGFzc2VzIHdpbGwgbm90IGJlIHNob3duLgorCitJTkxJTkVfSU5IRVJJVEVEX01FTUIgID0gTk8KKworIyBJZiB0aGUgRlVMTF9QQVRIX05BTUVTIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gRG94eWdlbiB3aWxsIHByZXBlbmQgdGhlIGZ1bGwgCisjIHBhdGggYmVmb3JlIGZpbGVzIG5hbWUgaW4gdGhlIGZpbGUgbGlzdCBhbmQgaW4gdGhlIGhlYWRlciBmaWxlcy4gSWYgc2V0IAorIyB0byBOTyB0aGUgc2hvcnRlc3QgcGF0aCB0aGF0IG1ha2VzIHRoZSBmaWxlIG5hbWUgdW5pcXVlIHdpbGwgYmUgdXNlZC4KKworRlVMTF9QQVRIX05BTUVTICAgICAgICA9IE5PCisKKyMgSWYgdGhlIEZVTExfUEFUSF9OQU1FUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIHRoZSBTVFJJUF9GUk9NX1BBVEggdGFnIAorIyBjYW4gYmUgdXNlZCB0byBzdHJpcCBhIHVzZXItZGVmaW5lZCBwYXJ0IG9mIHRoZSBwYXRoLiBTdHJpcHBpbmcgaXMgCisjIG9ubHkgZG9uZSBpZiBvbmUgb2YgdGhlIHNwZWNpZmllZCBzdHJpbmdzIG1hdGNoZXMgdGhlIGxlZnQtaGFuZCBwYXJ0IG9mIAorIyB0aGUgcGF0aC4gVGhlIHRhZyBjYW4gYmUgdXNlZCB0byBzaG93IHJlbGF0aXZlIHBhdGhzIGluIHRoZSBmaWxlIGxpc3QuIAorIyBJZiBsZWZ0IGJsYW5rIHRoZSBkaXJlY3RvcnkgZnJvbSB3aGljaCBkb3h5Z2VuIGlzIHJ1biBpcyB1c2VkIGFzIHRoZSAKKyMgcGF0aCB0byBzdHJpcC4KKworU1RSSVBfRlJPTV9QQVRIICAgICAgICA9IAorCisjIFRoZSBTVFJJUF9GUk9NX0lOQ19QQVRIIHRhZyBjYW4gYmUgdXNlZCB0byBzdHJpcCBhIHVzZXItZGVmaW5lZCBwYXJ0IG9mIAorIyB0aGUgcGF0aCBtZW50aW9uZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgYSBjbGFzcywgd2hpY2ggdGVsbHMgCisjIHRoZSByZWFkZXIgd2hpY2ggaGVhZGVyIGZpbGUgdG8gaW5jbHVkZSBpbiBvcmRlciB0byB1c2UgYSBjbGFzcy4gCisjIElmIGxlZnQgYmxhbmsgb25seSB0aGUgbmFtZSBvZiB0aGUgaGVhZGVyIGZpbGUgY29udGFpbmluZyB0aGUgY2xhc3MgCisjIGRlZmluaXRpb24gaXMgdXNlZC4gT3RoZXJ3aXNlIG9uZSBzaG91bGQgc3BlY2lmeSB0aGUgaW5jbHVkZSBwYXRocyB0aGF0IAorIyBhcmUgbm9ybWFsbHkgcGFzc2VkIHRvIHRoZSBjb21waWxlciB1c2luZyB0aGUgLUkgZmxhZy4KKworU1RSSVBfRlJPTV9JTkNfUEFUSCAgICA9IAorCisjIElmIHRoZSBTSE9SVF9OQU1FUyB0YWcgaXMgc2V0IHRvIFlFUywgZG94eWdlbiB3aWxsIGdlbmVyYXRlIG11Y2ggc2hvcnRlciAKKyMgKGJ1dCBsZXNzIHJlYWRhYmxlKSBmaWxlIG5hbWVzLiBUaGlzIGNhbiBiZSB1c2VmdWwgaXMgeW91ciBmaWxlIHN5c3RlbXMgCisjIGRvZXNuJ3Qgc3VwcG9ydCBsb25nIG5hbWVzIGxpa2Ugb24gRE9TLCBNYWMsIG9yIENELVJPTS4KKworU0hPUlRfTkFNRVMgICAgICAgICAgICA9IE5PCisKKyMgSWYgdGhlIEpBVkFET0NfQVVUT0JSSUVGIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gRG94eWdlbiAKKyMgd2lsbCBpbnRlcnByZXQgdGhlIGZpcnN0IGxpbmUgKHVudGlsIHRoZSBmaXJzdCBkb3QpIG9mIGEgSmF2YURvYy1zdHlsZSAKKyMgY29tbWVudCBhcyB0aGUgYnJpZWYgZGVzY3JpcHRpb24uIElmIHNldCB0byBOTywgdGhlIEphdmFEb2MgCisjIGNvbW1lbnRzIHdpbGwgYmVoYXZlIGp1c3QgbGlrZSB0aGUgUXQtc3R5bGUgY29tbWVudHMgKHRodXMgcmVxdWlyaW5nIGFuIAorIyBleHBsaWNpdCBAYnJpZWYgY29tbWFuZCBmb3IgYSBicmllZiBkZXNjcmlwdGlvbi4KKworSkFWQURPQ19BVVRPQlJJRUYgICAgICA9IE5PCisKKyMgVGhlIE1VTFRJTElORV9DUFBfSVNfQlJJRUYgdGFnIGNhbiBiZSBzZXQgdG8gWUVTIHRvIG1ha2UgRG94eWdlbiAKKyMgdHJlYXQgYSBtdWx0aS1saW5lIEMrKyBzcGVjaWFsIGNvbW1lbnQgYmxvY2sgKGkuZS4gYSBibG9jayBvZiAvLyEgb3IgLy8vIAorIyBjb21tZW50cykgYXMgYSBicmllZiBkZXNjcmlwdGlvbi4gVGhpcyB1c2VkIHRvIGJlIHRoZSBkZWZhdWx0IGJlaGF2aW91ci4gCisjIFRoZSBuZXcgZGVmYXVsdCBpcyB0byB0cmVhdCBhIG11bHRpLWxpbmUgQysrIGNvbW1lbnQgYmxvY2sgYXMgYSBkZXRhaWxlZCAKKyMgZGVzY3JpcHRpb24uIFNldCB0aGlzIHRhZyB0byBZRVMgaWYgeW91IHByZWZlciB0aGUgb2xkIGJlaGF2aW91ciBpbnN0ZWFkLgorCitNVUxUSUxJTkVfQ1BQX0lTX0JSSUVGID0gTk8KKworIyBJZiB0aGUgREVUQUlMU19BVF9UT1AgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBEb3h5Z2VuIAorIyB3aWxsIG91dHB1dCB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24gbmVhciB0aGUgdG9wLCBsaWtlIEphdmFEb2MuCisjIElmIHNldCB0byBOTywgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uIGFwcGVhcnMgYWZ0ZXIgdGhlIG1lbWJlciAKKyMgZG9jdW1lbnRhdGlvbi4KKworREVUQUlMU19BVF9UT1AgICAgICAgICA9IFlFUworCisjIElmIHRoZSBJTkhFUklUX0RPQ1MgdGFnIGlzIHNldCB0byBZRVMgKHRoZSBkZWZhdWx0KSB0aGVuIGFuIHVuZG9jdW1lbnRlZCAKKyMgbWVtYmVyIGluaGVyaXRzIHRoZSBkb2N1bWVudGF0aW9uIGZyb20gYW55IGRvY3VtZW50ZWQgbWVtYmVyIHRoYXQgaXQgCisjIHJlLWltcGxlbWVudHMuCisKK0lOSEVSSVRfRE9DUyAgICAgICAgICAgPSBZRVMKKworIyBJZiBtZW1iZXIgZ3JvdXBpbmcgaXMgdXNlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgdGhlIERJU1RSSUJVVEVfR1JPVVBfRE9DIAorIyB0YWcgaXMgc2V0IHRvIFlFUywgdGhlbiBkb3h5Z2VuIHdpbGwgcmV1c2UgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIGZpcnN0IAorIyBtZW1iZXIgaW4gdGhlIGdyb3VwIChpZiBhbnkpIGZvciB0aGUgb3RoZXIgbWVtYmVycyBvZiB0aGUgZ3JvdXAuIEJ5IGRlZmF1bHQgCisjIGFsbCBtZW1iZXJzIG9mIGEgZ3JvdXAgbXVzdCBiZSBkb2N1bWVudGVkIGV4cGxpY2l0bHkuCisKK0RJU1RSSUJVVEVfR1JPVVBfRE9DICAgPSBOTworCisjIElmIHRoZSBTRVBBUkFURV9NRU1CRVJfUEFHRVMgdGFnIGlzIHNldCB0byBZRVMsIHRoZW4gZG94eWdlbiB3aWxsIHByb2R1Y2UgCisjIGEgbmV3IHBhZ2UgZm9yIGVhY2ggbWVtYmVyLiBJZiBzZXQgdG8gTk8sIHRoZSBkb2N1bWVudGF0aW9uIG9mIGEgbWVtYmVyIHdpbGwgCisjIGJlIHBhcnQgb2YgdGhlIGZpbGUvY2xhc3MvbmFtZXNwYWNlIHRoYXQgY29udGFpbnMgaXQuCisKK1NFUEFSQVRFX01FTUJFUl9QQUdFUyAgPSBOTworCisjIFRoZSBUQUJfU0laRSB0YWcgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBudW1iZXIgb2Ygc3BhY2VzIGluIGEgdGFiLiAKKyMgRG94eWdlbiB1c2VzIHRoaXMgdmFsdWUgdG8gcmVwbGFjZSB0YWJzIGJ5IHNwYWNlcyBpbiBjb2RlIGZyYWdtZW50cy4KKworVEFCX1NJWkUgICAgICAgICAgICAgICA9IDQKKworIyBUaGlzIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgbnVtYmVyIG9mIGFsaWFzZXMgdGhhdCBhY3RzIAorIyBhcyBjb21tYW5kcyBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gQW4gYWxpYXMgaGFzIHRoZSBmb3JtICJuYW1lPXZhbHVlIi4gCisjIEZvciBleGFtcGxlIGFkZGluZyAic2lkZWVmZmVjdD1ccGFyIFNpZGUgRWZmZWN0czpcbiIgd2lsbCBhbGxvdyB5b3UgdG8gCisjIHB1dCB0aGUgY29tbWFuZCBcc2lkZWVmZmVjdCAob3IgQHNpZGVlZmZlY3QpIGluIHRoZSBkb2N1bWVudGF0aW9uLCB3aGljaCAKKyMgd2lsbCByZXN1bHQgaW4gYSB1c2VyLWRlZmluZWQgcGFyYWdyYXBoIHdpdGggaGVhZGluZyAiU2lkZSBFZmZlY3RzOiIuIAorIyBZb3UgY2FuIHB1dCBcbidzIGluIHRoZSB2YWx1ZSBwYXJ0IG9mIGFuIGFsaWFzIHRvIGluc2VydCBuZXdsaW5lcy4KKworQUxJQVNFUyAgICAgICAgICAgICAgICA9IAorCisjIFNldCB0aGUgT1BUSU1JWkVfT1VUUFVUX0ZPUl9DIHRhZyB0byBZRVMgaWYgeW91ciBwcm9qZWN0IGNvbnNpc3RzIG9mIEMgCisjIHNvdXJjZXMgb25seS4gRG94eWdlbiB3aWxsIHRoZW4gZ2VuZXJhdGUgb3V0cHV0IHRoYXQgaXMgbW9yZSB0YWlsb3JlZCBmb3IgQy4gCisjIEZvciBpbnN0YW5jZSwgc29tZSBvZiB0aGUgbmFtZXMgdGhhdCBhcmUgdXNlZCB3aWxsIGJlIGRpZmZlcmVudC4gVGhlIGxpc3QgCisjIG9mIGFsbCBtZW1iZXJzIHdpbGwgYmUgb21pdHRlZCwgZXRjLgorCitPUFRJTUlaRV9PVVRQVVRfRk9SX0MgID0gTk8KKworIyBTZXQgdGhlIE9QVElNSVpFX09VVFBVVF9KQVZBIHRhZyB0byBZRVMgaWYgeW91ciBwcm9qZWN0IGNvbnNpc3RzIG9mIEphdmEgc291cmNlcyAKKyMgb25seS4gRG94eWdlbiB3aWxsIHRoZW4gZ2VuZXJhdGUgb3V0cHV0IHRoYXQgaXMgbW9yZSB0YWlsb3JlZCBmb3IgSmF2YS4gCisjIEZvciBpbnN0YW5jZSwgbmFtZXNwYWNlcyB3aWxsIGJlIHByZXNlbnRlZCBhcyBwYWNrYWdlcywgcXVhbGlmaWVkIHNjb3BlcyAKKyMgd2lsbCBsb29rIGRpZmZlcmVudCwgZXRjLgorCitPUFRJTUlaRV9PVVRQVVRfSkFWQSAgID0gTk8KKworIyBTZXQgdGhlIFNVQkdST1VQSU5HIHRhZyB0byBZRVMgKHRoZSBkZWZhdWx0KSB0byBhbGxvdyBjbGFzcyBtZW1iZXIgZ3JvdXBzIG9mIAorIyB0aGUgc2FtZSB0eXBlIChmb3IgaW5zdGFuY2UgYSBncm91cCBvZiBwdWJsaWMgZnVuY3Rpb25zKSB0byBiZSBwdXQgYXMgYSAKKyMgc3ViZ3JvdXAgb2YgdGhhdCB0eXBlIChlLmcuIHVuZGVyIHRoZSBQdWJsaWMgRnVuY3Rpb25zIHNlY3Rpb24pLiBTZXQgaXQgdG8gCisjIE5PIHRvIHByZXZlbnQgc3ViZ3JvdXBpbmcuIEFsdGVybmF0aXZlbHksIHRoaXMgY2FuIGJlIGRvbmUgcGVyIGNsYXNzIHVzaW5nIAorIyB0aGUgXG5vc3ViZ3JvdXBpbmcgY29tbWFuZC4KKworU1VCR1JPVVBJTkcgICAgICAgICAgICA9IFlFUworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEJ1aWxkIHJlbGF0ZWQgY29uZmlndXJhdGlvbiBvcHRpb25zCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgSWYgdGhlIEVYVFJBQ1RfQUxMIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBhc3N1bWUgYWxsIGVudGl0aWVzIGluIAorIyBkb2N1bWVudGF0aW9uIGFyZSBkb2N1bWVudGVkLCBldmVuIGlmIG5vIGRvY3VtZW50YXRpb24gd2FzIGF2YWlsYWJsZS4gCisjIFByaXZhdGUgY2xhc3MgbWVtYmVycyBhbmQgc3RhdGljIGZpbGUgbWVtYmVycyB3aWxsIGJlIGhpZGRlbiB1bmxlc3MgCisjIHRoZSBFWFRSQUNUX1BSSVZBVEUgYW5kIEVYVFJBQ1RfU1RBVElDIHRhZ3MgYXJlIHNldCB0byBZRVMKKworRVhUUkFDVF9BTEwgICAgICAgICAgICA9IFlFUworCisjIElmIHRoZSBFWFRSQUNUX1BSSVZBVEUgdGFnIGlzIHNldCB0byBZRVMgYWxsIHByaXZhdGUgbWVtYmVycyBvZiBhIGNsYXNzIAorIyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBkb2N1bWVudGF0aW9uLgorCitFWFRSQUNUX1BSSVZBVEUgICAgICAgID0gTk8KKworIyBJZiB0aGUgRVhUUkFDVF9TVEFUSUMgdGFnIGlzIHNldCB0byBZRVMgYWxsIHN0YXRpYyBtZW1iZXJzIG9mIGEgZmlsZSAKKyMgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KKworRVhUUkFDVF9TVEFUSUMgICAgICAgICA9IE5PCisKKyMgSWYgdGhlIEVYVFJBQ1RfTE9DQUxfQ0xBU1NFUyB0YWcgaXMgc2V0IHRvIFlFUyBjbGFzc2VzIChhbmQgc3RydWN0cykgCisjIGRlZmluZWQgbG9jYWxseSBpbiBzb3VyY2UgZmlsZXMgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gCisjIElmIHNldCB0byBOTyBvbmx5IGNsYXNzZXMgZGVmaW5lZCBpbiBoZWFkZXIgZmlsZXMgYXJlIGluY2x1ZGVkLgorCitFWFRSQUNUX0xPQ0FMX0NMQVNTRVMgID0gWUVTCisKKyMgVGhpcyBmbGFnIGlzIG9ubHkgdXNlZnVsIGZvciBPYmplY3RpdmUtQyBjb2RlLiBXaGVuIHNldCB0byBZRVMgbG9jYWwgCisjIG1ldGhvZHMsIHdoaWNoIGFyZSBkZWZpbmVkIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBzZWN0aW9uIGJ1dCBub3QgaW4gCisjIHRoZSBpbnRlcmZhY2UgYXJlIGluY2x1ZGVkIGluIHRoZSBkb2N1bWVudGF0aW9uLiAKKyMgSWYgc2V0IHRvIE5PICh0aGUgZGVmYXVsdCkgb25seSBtZXRob2RzIGluIHRoZSBpbnRlcmZhY2UgYXJlIGluY2x1ZGVkLgorCitFWFRSQUNUX0xPQ0FMX01FVEhPRFMgID0gTk8KKworIyBJZiB0aGUgSElERV9VTkRPQ19NRU1CRVJTIHRhZyBpcyBzZXQgdG8gWUVTLCBEb3h5Z2VuIHdpbGwgaGlkZSBhbGwgCisjIHVuZG9jdW1lbnRlZCBtZW1iZXJzIG9mIGRvY3VtZW50ZWQgY2xhc3NlcywgZmlsZXMgb3IgbmFtZXNwYWNlcy4gCisjIElmIHNldCB0byBOTyAodGhlIGRlZmF1bHQpIHRoZXNlIG1lbWJlcnMgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgCisjIHZhcmlvdXMgb3ZlcnZpZXdzLCBidXQgbm8gZG9jdW1lbnRhdGlvbiBzZWN0aW9uIGlzIGdlbmVyYXRlZC4gCisjIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3QgaWYgRVhUUkFDVF9BTEwgaXMgZW5hYmxlZC4KKworSElERV9VTkRPQ19NRU1CRVJTICAgICA9IE5PCisKKyMgSWYgdGhlIEhJREVfVU5ET0NfQ0xBU1NFUyB0YWcgaXMgc2V0IHRvIFlFUywgRG94eWdlbiB3aWxsIGhpZGUgYWxsIAorIyB1bmRvY3VtZW50ZWQgY2xhc3NlcyB0aGF0IGFyZSBub3JtYWxseSB2aXNpYmxlIGluIHRoZSBjbGFzcyBoaWVyYXJjaHkuIAorIyBJZiBzZXQgdG8gTk8gKHRoZSBkZWZhdWx0KSB0aGVzZSBjbGFzc2VzIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIHZhcmlvdXMgCisjIG92ZXJ2aWV3cy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBpZiBFWFRSQUNUX0FMTCBpcyBlbmFibGVkLgorCitISURFX1VORE9DX0NMQVNTRVMgICAgID0gTk8KKworIyBJZiB0aGUgSElERV9GUklFTkRfQ09NUE9VTkRTIHRhZyBpcyBzZXQgdG8gWUVTLCBEb3h5Z2VuIHdpbGwgaGlkZSBhbGwgCisjIGZyaWVuZCAoY2xhc3N8c3RydWN0fHVuaW9uKSBkZWNsYXJhdGlvbnMuIAorIyBJZiBzZXQgdG8gTk8gKHRoZSBkZWZhdWx0KSB0aGVzZSBkZWNsYXJhdGlvbnMgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgCisjIGRvY3VtZW50YXRpb24uCisKK0hJREVfRlJJRU5EX0NPTVBPVU5EUyAgPSBOTworCisjIElmIHRoZSBISURFX0lOX0JPRFlfRE9DUyB0YWcgaXMgc2V0IHRvIFlFUywgRG94eWdlbiB3aWxsIGhpZGUgYW55IAorIyBkb2N1bWVudGF0aW9uIGJsb2NrcyBmb3VuZCBpbnNpZGUgdGhlIGJvZHkgb2YgYSBmdW5jdGlvbi4gCisjIElmIHNldCB0byBOTyAodGhlIGRlZmF1bHQpIHRoZXNlIGJsb2NrcyB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSAKKyMgZnVuY3Rpb24ncyBkZXRhaWxlZCBkb2N1bWVudGF0aW9uIGJsb2NrLgorCitISURFX0lOX0JPRFlfRE9DUyAgICAgID0gTk8KKworIyBUaGUgSU5URVJOQUxfRE9DUyB0YWcgZGV0ZXJtaW5lcyBpZiBkb2N1bWVudGF0aW9uIAorIyB0aGF0IGlzIHR5cGVkIGFmdGVyIGEgXGludGVybmFsIGNvbW1hbmQgaXMgaW5jbHVkZWQuIElmIHRoZSB0YWcgaXMgc2V0IAorIyB0byBOTyAodGhlIGRlZmF1bHQpIHRoZW4gdGhlIGRvY3VtZW50YXRpb24gd2lsbCBiZSBleGNsdWRlZC4gCisjIFNldCBpdCB0byBZRVMgdG8gaW5jbHVkZSB0aGUgaW50ZXJuYWwgZG9jdW1lbnRhdGlvbi4KKworSU5URVJOQUxfRE9DUyAgICAgICAgICA9IE5PCisKKyMgSWYgdGhlIENBU0VfU0VOU0VfTkFNRVMgdGFnIGlzIHNldCB0byBOTyB0aGVuIERveHlnZW4gd2lsbCBvbmx5IGdlbmVyYXRlIAorIyBmaWxlIG5hbWVzIGluIGxvd2VyLWNhc2UgbGV0dGVycy4gSWYgc2V0IHRvIFlFUyB1cHBlci1jYXNlIGxldHRlcnMgYXJlIGFsc28gCisjIGFsbG93ZWQuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBoYXZlIGNsYXNzZXMgb3IgZmlsZXMgd2hvc2UgbmFtZXMgb25seSBkaWZmZXIgCisjIGluIGNhc2UgYW5kIGlmIHlvdXIgZmlsZSBzeXN0ZW0gc3VwcG9ydHMgY2FzZSBzZW5zaXRpdmUgZmlsZSBuYW1lcy4gV2luZG93cyAKKyMgYW5kIE1hYyB1c2VycyBhcmUgYWR2aXNlZCB0byBzZXQgdGhpcyBvcHRpb24gdG8gTk8uCisKK0NBU0VfU0VOU0VfTkFNRVMgICAgICAgPSBZRVMKKworIyBJZiB0aGUgSElERV9TQ09QRV9OQU1FUyB0YWcgaXMgc2V0IHRvIE5PICh0aGUgZGVmYXVsdCkgdGhlbiBEb3h5Z2VuIAorIyB3aWxsIHNob3cgbWVtYmVycyB3aXRoIHRoZWlyIGZ1bGwgY2xhc3MgYW5kIG5hbWVzcGFjZSBzY29wZXMgaW4gdGhlIAorIyBkb2N1bWVudGF0aW9uLiBJZiBzZXQgdG8gWUVTIHRoZSBzY29wZSB3aWxsIGJlIGhpZGRlbi4KKworSElERV9TQ09QRV9OQU1FUyAgICAgICA9IE5PCisKKyMgSWYgdGhlIFNIT1dfSU5DTFVERV9GSUxFUyB0YWcgaXMgc2V0IHRvIFlFUyAodGhlIGRlZmF1bHQpIHRoZW4gRG94eWdlbiAKKyMgd2lsbCBwdXQgYSBsaXN0IG9mIHRoZSBmaWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBieSBhIGZpbGUgaW4gdGhlIGRvY3VtZW50YXRpb24gCisjIG9mIHRoYXQgZmlsZS4KKworU0hPV19JTkNMVURFX0ZJTEVTICAgICA9IFlFUworCisjIElmIHRoZSBJTkxJTkVfSU5GTyB0YWcgaXMgc2V0IHRvIFlFUyAodGhlIGRlZmF1bHQpIHRoZW4gYSB0YWcgW2lubGluZV0gCisjIGlzIGluc2VydGVkIGluIHRoZSBkb2N1bWVudGF0aW9uIGZvciBpbmxpbmUgbWVtYmVycy4KKworSU5MSU5FX0lORk8gICAgICAgICAgICA9IFlFUworCisjIElmIHRoZSBTT1JUX01FTUJFUl9ET0NTIHRhZyBpcyBzZXQgdG8gWUVTICh0aGUgZGVmYXVsdCkgdGhlbiBkb3h5Z2VuIAorIyB3aWxsIHNvcnQgdGhlIChkZXRhaWxlZCkgZG9jdW1lbnRhdGlvbiBvZiBmaWxlIGFuZCBjbGFzcyBtZW1iZXJzIAorIyBhbHBoYWJldGljYWxseSBieSBtZW1iZXIgbmFtZS4gSWYgc2V0IHRvIE5PIHRoZSBtZW1iZXJzIHdpbGwgYXBwZWFyIGluIAorIyBkZWNsYXJhdGlvbiBvcmRlci4KKworU09SVF9NRU1CRVJfRE9DUyAgICAgICA9IFlFUworCisjIElmIHRoZSBTT1JUX0JSSUVGX0RPQ1MgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgc29ydCB0aGUgCisjIGJyaWVmIGRvY3VtZW50YXRpb24gb2YgZmlsZSwgbmFtZXNwYWNlIGFuZCBjbGFzcyBtZW1iZXJzIGFscGhhYmV0aWNhbGx5IAorIyBieSBtZW1iZXIgbmFtZS4gSWYgc2V0IHRvIE5PICh0aGUgZGVmYXVsdCkgdGhlIG1lbWJlcnMgd2lsbCBhcHBlYXIgaW4gCisjIGRlY2xhcmF0aW9uIG9yZGVyLgorCitTT1JUX0JSSUVGX0RPQ1MgICAgICAgID0gTk8KKworIyBJZiB0aGUgU09SVF9CWV9TQ09QRV9OQU1FIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGUgY2xhc3MgbGlzdCB3aWxsIGJlIAorIyBzb3J0ZWQgYnkgZnVsbHktcXVhbGlmaWVkIG5hbWVzLCBpbmNsdWRpbmcgbmFtZXNwYWNlcy4gSWYgc2V0IHRvIAorIyBOTyAodGhlIGRlZmF1bHQpLCB0aGUgY2xhc3MgbGlzdCB3aWxsIGJlIHNvcnRlZCBvbmx5IGJ5IGNsYXNzIG5hbWUsIAorIyBub3QgaW5jbHVkaW5nIHRoZSBuYW1lc3BhY2UgcGFydC4gCisjIE5vdGU6IFRoaXMgb3B0aW9uIGlzIG5vdCB2ZXJ5IHVzZWZ1bCBpZiBISURFX1NDT1BFX05BTUVTIGlzIHNldCB0byBZRVMuCisjIE5vdGU6IFRoaXMgb3B0aW9uIGFwcGxpZXMgb25seSB0byB0aGUgY2xhc3MgbGlzdCwgbm90IHRvIHRoZSAKKyMgYWxwaGFiZXRpY2FsIGxpc3QuCisKK1NPUlRfQllfU0NPUEVfTkFNRSAgICAgPSBOTworCisjIFRoZSBHRU5FUkFURV9UT0RPTElTVCB0YWcgY2FuIGJlIHVzZWQgdG8gZW5hYmxlIChZRVMpIG9yIAorIyBkaXNhYmxlIChOTykgdGhlIHRvZG8gbGlzdC4gVGhpcyBsaXN0IGlzIGNyZWF0ZWQgYnkgcHV0dGluZyBcdG9kbyAKKyMgY29tbWFuZHMgaW4gdGhlIGRvY3VtZW50YXRpb24uCisKK0dFTkVSQVRFX1RPRE9MSVNUICAgICAgPSBZRVMKKworIyBUaGUgR0VORVJBVEVfVEVTVExJU1QgdGFnIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSAoWUVTKSBvciAKKyMgZGlzYWJsZSAoTk8pIHRoZSB0ZXN0IGxpc3QuIFRoaXMgbGlzdCBpcyBjcmVhdGVkIGJ5IHB1dHRpbmcgXHRlc3QgCisjIGNvbW1hbmRzIGluIHRoZSBkb2N1bWVudGF0aW9uLgorCitHRU5FUkFURV9URVNUTElTVCAgICAgID0gWUVTCisKKyMgVGhlIEdFTkVSQVRFX0JVR0xJU1QgdGFnIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSAoWUVTKSBvciAKKyMgZGlzYWJsZSAoTk8pIHRoZSBidWcgbGlzdC4gVGhpcyBsaXN0IGlzIGNyZWF0ZWQgYnkgcHV0dGluZyBcYnVnIAorIyBjb21tYW5kcyBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KKworR0VORVJBVEVfQlVHTElTVCAgICAgICA9IFlFUworCisjIFRoZSBHRU5FUkFURV9ERVBSRUNBVEVETElTVCB0YWcgY2FuIGJlIHVzZWQgdG8gZW5hYmxlIChZRVMpIG9yIAorIyBkaXNhYmxlIChOTykgdGhlIGRlcHJlY2F0ZWQgbGlzdC4gVGhpcyBsaXN0IGlzIGNyZWF0ZWQgYnkgcHV0dGluZyAKKyMgXGRlcHJlY2F0ZWQgY29tbWFuZHMgaW4gdGhlIGRvY3VtZW50YXRpb24uCisKK0dFTkVSQVRFX0RFUFJFQ0FURURMSVNUPSBZRVMKKworIyBUaGUgRU5BQkxFRF9TRUNUSU9OUyB0YWcgY2FuIGJlIHVzZWQgdG8gZW5hYmxlIGNvbmRpdGlvbmFsIAorIyBkb2N1bWVudGF0aW9uIHNlY3Rpb25zLCBtYXJrZWQgYnkgXGlmIHNlY3Rpb25uYW1lIC4uLiBcZW5kaWYuCisKK0VOQUJMRURfU0VDVElPTlMgICAgICAgPSAKKworIyBUaGUgTUFYX0lOSVRJQUxJWkVSX0xJTkVTIHRhZyBkZXRlcm1pbmVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBsaW5lcyAKKyMgdGhlIGluaXRpYWwgdmFsdWUgb2YgYSB2YXJpYWJsZSBvciBkZWZpbmUgY29uc2lzdHMgb2YgZm9yIGl0IHRvIGFwcGVhciBpbiAKKyMgdGhlIGRvY3VtZW50YXRpb24uIElmIHRoZSBpbml0aWFsaXplciBjb25zaXN0cyBvZiBtb3JlIGxpbmVzIHRoYW4gc3BlY2lmaWVkIAorIyBoZXJlIGl0IHdpbGwgYmUgaGlkZGVuLiBVc2UgYSB2YWx1ZSBvZiAwIHRvIGhpZGUgaW5pdGlhbGl6ZXJzIGNvbXBsZXRlbHkuIAorIyBUaGUgYXBwZWFyYW5jZSBvZiB0aGUgaW5pdGlhbGl6ZXIgb2YgaW5kaXZpZHVhbCB2YXJpYWJsZXMgYW5kIGRlZmluZXMgaW4gdGhlIAorIyBkb2N1bWVudGF0aW9uIGNhbiBiZSBjb250cm9sbGVkIHVzaW5nIFxzaG93aW5pdGlhbGl6ZXIgb3IgXGhpZGVpbml0aWFsaXplciAKKyMgY29tbWFuZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiByZWdhcmRsZXNzIG9mIHRoaXMgc2V0dGluZy4KKworTUFYX0lOSVRJQUxJWkVSX0xJTkVTICA9IDMwCisKKyMgU2V0IHRoZSBTSE9XX1VTRURfRklMRVMgdGFnIHRvIE5PIHRvIGRpc2FibGUgdGhlIGxpc3Qgb2YgZmlsZXMgZ2VuZXJhdGVkIAorIyBhdCB0aGUgYm90dG9tIG9mIHRoZSBkb2N1bWVudGF0aW9uIG9mIGNsYXNzZXMgYW5kIHN0cnVjdHMuIElmIHNldCB0byBZRVMgdGhlIAorIyBsaXN0IHdpbGwgbWVudGlvbiB0aGUgZmlsZXMgdGhhdCB3ZXJlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGRvY3VtZW50YXRpb24uCisKK1NIT1dfVVNFRF9GSUxFUyAgICAgICAgPSBZRVMKKworIyBJZiB0aGUgc291cmNlcyBpbiB5b3VyIHByb2plY3QgYXJlIGRpc3RyaWJ1dGVkIG92ZXIgbXVsdGlwbGUgZGlyZWN0b3JpZXMgCisjIHRoZW4gc2V0dGluZyB0aGUgU0hPV19ESVJFQ1RPUklFUyB0YWcgdG8gWUVTIHdpbGwgc2hvdyB0aGUgZGlyZWN0b3J5IGhpZXJhcmNoeSAKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24uCisKK1NIT1dfRElSRUNUT1JJRVMgICAgICAgPSBZRVMKKworIyBUaGUgRklMRV9WRVJTSU9OX0ZJTFRFUiB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIHByb2dyYW0gb3Igc2NyaXB0IHRoYXQgCisjIGRveHlnZW4gc2hvdWxkIGludm9rZSB0byBnZXQgdGhlIGN1cnJlbnQgdmVyc2lvbiBmb3IgZWFjaCBmaWxlICh0eXBpY2FsbHkgZnJvbSB0aGUgCisjIHZlcnNpb24gY29udHJvbCBzeXN0ZW0pLiBEb3h5Z2VuIHdpbGwgaW52b2tlIHRoZSBwcm9ncmFtIGJ5IGV4ZWN1dGluZyAodmlhIAorIyBwb3BlbigpKSB0aGUgY29tbWFuZCA8Y29tbWFuZD4gPGlucHV0LWZpbGU+LCB3aGVyZSA8Y29tbWFuZD4gaXMgdGhlIHZhbHVlIG9mIAorIyB0aGUgRklMRV9WRVJTSU9OX0ZJTFRFUiB0YWcsIGFuZCA8aW5wdXQtZmlsZT4gaXMgdGhlIG5hbWUgb2YgYW4gaW5wdXQgZmlsZSAKKyMgcHJvdmlkZWQgYnkgZG94eWdlbi4gV2hhdGV2ZXIgdGhlIHByb2dhbSB3cml0ZXMgdG8gc3RhbmRhcmQgb3V0cHV0IAorIyBpcyB1c2VkIGFzIHRoZSBmaWxlIHZlcnNpb24uIFNlZSB0aGUgbWFudWFsIGZvciBleGFtcGxlcy4KKworRklMRV9WRVJTSU9OX0ZJTFRFUiAgICA9IAorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHdhcm5pbmcgYW5kIHByb2dyZXNzIG1lc3NhZ2VzCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgVGhlIFFVSUVUIHRhZyBjYW4gYmUgdXNlZCB0byB0dXJuIG9uL29mZiB0aGUgbWVzc2FnZXMgdGhhdCBhcmUgZ2VuZXJhdGVkIAorIyBieSBkb3h5Z2VuLiBQb3NzaWJsZSB2YWx1ZXMgYXJlIFlFUyBhbmQgTk8uIElmIGxlZnQgYmxhbmsgTk8gaXMgdXNlZC4KKworUVVJRVQgICAgICAgICAgICAgICAgICA9IE5PCisKKyMgVGhlIFdBUk5JTkdTIHRhZyBjYW4gYmUgdXNlZCB0byB0dXJuIG9uL29mZiB0aGUgd2FybmluZyBtZXNzYWdlcyB0aGF0IGFyZSAKKyMgZ2VuZXJhdGVkIGJ5IGRveHlnZW4uIFBvc3NpYmxlIHZhbHVlcyBhcmUgWUVTIGFuZCBOTy4gSWYgbGVmdCBibGFuayAKKyMgTk8gaXMgdXNlZC4KKworV0FSTklOR1MgICAgICAgICAgICAgICA9IFlFUworCisjIElmIFdBUk5fSUZfVU5ET0NVTUVOVEVEIGlzIHNldCB0byBZRVMsIHRoZW4gZG94eWdlbiB3aWxsIGdlbmVyYXRlIHdhcm5pbmdzIAorIyBmb3IgdW5kb2N1bWVudGVkIG1lbWJlcnMuIElmIEVYVFJBQ1RfQUxMIGlzIHNldCB0byBZRVMgdGhlbiB0aGlzIGZsYWcgd2lsbCAKKyMgYXV0b21hdGljYWxseSBiZSBkaXNhYmxlZC4KKworV0FSTl9JRl9VTkRPQ1VNRU5URUQgICA9IFlFUworCisjIElmIFdBUk5fSUZfRE9DX0VSUk9SIGlzIHNldCB0byBZRVMsIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSB3YXJuaW5ncyBmb3IgCisjIHBvdGVudGlhbCBlcnJvcnMgaW4gdGhlIGRvY3VtZW50YXRpb24sIHN1Y2ggYXMgbm90IGRvY3VtZW50aW5nIHNvbWUgCisjIHBhcmFtZXRlcnMgaW4gYSBkb2N1bWVudGVkIGZ1bmN0aW9uLCBvciBkb2N1bWVudGluZyBwYXJhbWV0ZXJzIHRoYXQgCisjIGRvbid0IGV4aXN0IG9yIHVzaW5nIG1hcmt1cCBjb21tYW5kcyB3cm9uZ2x5LgorCitXQVJOX0lGX0RPQ19FUlJPUiAgICAgID0gWUVTCisKKyMgVGhpcyBXQVJOX05PX1BBUkFNRE9DIG9wdGlvbiBjYW4gYmUgYWJsZWQgdG8gZ2V0IHdhcm5pbmdzIGZvciAKKyMgZnVuY3Rpb25zIHRoYXQgYXJlIGRvY3VtZW50ZWQsIGJ1dCBoYXZlIG5vIGRvY3VtZW50YXRpb24gZm9yIHRoZWlyIHBhcmFtZXRlcnMgCisjIG9yIHJldHVybiB2YWx1ZS4gSWYgc2V0IHRvIE5PICh0aGUgZGVmYXVsdCkgZG94eWdlbiB3aWxsIG9ubHkgd2FybiBhYm91dCAKKyMgd3Jvbmcgb3IgaW5jb21wbGV0ZSBwYXJhbWV0ZXIgZG9jdW1lbnRhdGlvbiwgYnV0IG5vdCBhYm91dCB0aGUgYWJzZW5jZSBvZiAKKyMgZG9jdW1lbnRhdGlvbi4KKworV0FSTl9OT19QQVJBTURPQyAgICAgICA9IE5PCisKKyMgVGhlIFdBUk5fRk9STUFUIHRhZyBkZXRlcm1pbmVzIHRoZSBmb3JtYXQgb2YgdGhlIHdhcm5pbmcgbWVzc2FnZXMgdGhhdCAKKyMgZG94eWdlbiBjYW4gcHJvZHVjZS4gVGhlIHN0cmluZyBzaG91bGQgY29udGFpbiB0aGUgJGZpbGUsICRsaW5lLCBhbmQgJHRleHQgCisjIHRhZ3MsIHdoaWNoIHdpbGwgYmUgcmVwbGFjZWQgYnkgdGhlIGZpbGUgYW5kIGxpbmUgbnVtYmVyIGZyb20gd2hpY2ggdGhlIAorIyB3YXJuaW5nIG9yaWdpbmF0ZWQgYW5kIHRoZSB3YXJuaW5nIHRleHQuIE9wdGlvbmFsbHkgdGhlIGZvcm1hdCBtYXkgY29udGFpbiAKKyMgJHZlcnNpb24sIHdoaWNoIHdpbGwgYmUgcmVwbGFjZWQgYnkgdGhlIHZlcnNpb24gb2YgdGhlIGZpbGUgKGlmIGl0IGNvdWxkIAorIyBiZSBvYnRhaW5lZCB2aWEgRklMRV9WRVJTSU9OX0ZJTFRFUikKKworV0FSTl9GT1JNQVQgICAgICAgICAgICA9ICIkZmlsZTokbGluZTogJHRleHQiCisKKyMgVGhlIFdBUk5fTE9HRklMRSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIGZpbGUgdG8gd2hpY2ggd2FybmluZyAKKyMgYW5kIGVycm9yIG1lc3NhZ2VzIHNob3VsZCBiZSB3cml0dGVuLiBJZiBsZWZ0IGJsYW5rIHRoZSBvdXRwdXQgaXMgd3JpdHRlbiAKKyMgdG8gc3RkZXJyLgorCitXQVJOX0xPR0ZJTEUgICAgICAgICAgID0gCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIGlucHV0IGZpbGVzCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgVGhlIElOUFVUIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBmaWxlcyBhbmQvb3IgZGlyZWN0b3JpZXMgdGhhdCBjb250YWluIAorIyBkb2N1bWVudGVkIHNvdXJjZSBmaWxlcy4gWW91IG1heSBlbnRlciBmaWxlIG5hbWVzIGxpa2UgIm15ZmlsZS5jcHAiIG9yIAorIyBkaXJlY3RvcmllcyBsaWtlICIvdXNyL3NyYy9teXByb2plY3QiLiBTZXBhcmF0ZSB0aGUgZmlsZXMgb3IgZGlyZWN0b3JpZXMgCisjIHdpdGggc3BhY2VzLgorCitJTlBVVCAgICAgICAgICAgICAgICAgID0gLi4vc3JjCisKKyMgSWYgdGhlIHZhbHVlIG9mIHRoZSBJTlBVVCB0YWcgY29udGFpbnMgZGlyZWN0b3JpZXMsIHlvdSBjYW4gdXNlIHRoZSAKKyMgRklMRV9QQVRURVJOUyB0YWcgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSB3aWxkY2FyZCBwYXR0ZXJuIChsaWtlICouY3BwIAorIyBhbmQgKi5oKSB0byBmaWx0ZXIgb3V0IHRoZSBzb3VyY2UtZmlsZXMgaW4gdGhlIGRpcmVjdG9yaWVzLiBJZiBsZWZ0IAorIyBibGFuayB0aGUgZm9sbG93aW5nIHBhdHRlcm5zIGFyZSB0ZXN0ZWQ6IAorIyAqLmMgKi5jYyAqLmN4eCAqLmNwcCAqLmMrKyAqLmphdmEgKi5paSAqLml4eCAqLmlwcCAqLmkrKyAqLmlubCAqLmggKi5oaCAqLmh4eCAKKyMgKi5ocHAgKi5oKysgKi5pZGwgKi5vZGwgKi5jcyAqLnBocCAqLnBocDMgKi5pbmMgKi5tICoubW0KKworRklMRV9QQVRURVJOUyAgICAgICAgICA9ICouaHBwCisKKyMgVGhlIFJFQ1VSU0lWRSB0YWcgY2FuIGJlIHVzZWQgdG8gdHVybiBzcGVjaWZ5IHdoZXRoZXIgb3Igbm90IHN1YmRpcmVjdG9yaWVzIAorIyBzaG91bGQgYmUgc2VhcmNoZWQgZm9yIGlucHV0IGZpbGVzIGFzIHdlbGwuIFBvc3NpYmxlIHZhbHVlcyBhcmUgWUVTIGFuZCBOTy4gCisjIElmIGxlZnQgYmxhbmsgTk8gaXMgdXNlZC4KKworUkVDVVJTSVZFICAgICAgICAgICAgICA9IFlFUworCisjIFRoZSBFWENMVURFIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGZpbGVzIGFuZC9vciBkaXJlY3RvcmllcyB0aGF0IHNob3VsZCAKKyMgZXhjbHVkZWQgZnJvbSB0aGUgSU5QVVQgc291cmNlIGZpbGVzLiBUaGlzIHdheSB5b3UgY2FuIGVhc2lseSBleGNsdWRlIGEgCisjIHN1YmRpcmVjdG9yeSBmcm9tIGEgZGlyZWN0b3J5IHRyZWUgd2hvc2Ugcm9vdCBpcyBzcGVjaWZpZWQgd2l0aCB0aGUgSU5QVVQgdGFnLgorCitFWENMVURFICAgICAgICAgICAgICAgID0gCisKKyMgVGhlIEVYQ0xVREVfU1lNTElOS1MgdGFnIGNhbiBiZSB1c2VkIHNlbGVjdCB3aGV0aGVyIG9yIG5vdCBmaWxlcyBvciAKKyMgZGlyZWN0b3JpZXMgdGhhdCBhcmUgc3ltYm9saWMgbGlua3MgKGEgVW5peCBmaWxlc3lzdGVtIGZlYXR1cmUpIGFyZSBleGNsdWRlZCAKKyMgZnJvbSB0aGUgaW5wdXQuCisKK0VYQ0xVREVfU1lNTElOS1MgICAgICAgPSBOTworCisjIElmIHRoZSB2YWx1ZSBvZiB0aGUgSU5QVVQgdGFnIGNvbnRhaW5zIGRpcmVjdG9yaWVzLCB5b3UgY2FuIHVzZSB0aGUgCisjIEVYQ0xVREVfUEFUVEVSTlMgdGFnIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgd2lsZGNhcmQgcGF0dGVybnMgdG8gZXhjbHVkZSAKKyMgY2VydGFpbiBmaWxlcyBmcm9tIHRob3NlIGRpcmVjdG9yaWVzLgorCitFWENMVURFX1BBVFRFUk5TICAgICAgID0gKi9zYW1wbGVzLyogXAorICAgICAgICAgICAgICAgICAgICAgICAgICovdG9vbHMvKiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgKi9pbXBsLyoKKworIyBUaGUgRVhBTVBMRV9QQVRIIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIGZpbGVzIG9yIAorIyBkaXJlY3RvcmllcyB0aGF0IGNvbnRhaW4gZXhhbXBsZSBjb2RlIGZyYWdtZW50cyB0aGF0IGFyZSBpbmNsdWRlZCAoc2VlIAorIyB0aGUgXGluY2x1ZGUgY29tbWFuZCkuCisKK0VYQU1QTEVfUEFUSCAgICAgICAgICAgPSAKKworIyBJZiB0aGUgdmFsdWUgb2YgdGhlIEVYQU1QTEVfUEFUSCB0YWcgY29udGFpbnMgZGlyZWN0b3JpZXMsIHlvdSBjYW4gdXNlIHRoZSAKKyMgRVhBTVBMRV9QQVRURVJOUyB0YWcgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSB3aWxkY2FyZCBwYXR0ZXJuIChsaWtlICouY3BwIAorIyBhbmQgKi5oKSB0byBmaWx0ZXIgb3V0IHRoZSBzb3VyY2UtZmlsZXMgaW4gdGhlIGRpcmVjdG9yaWVzLiBJZiBsZWZ0IAorIyBibGFuayBhbGwgZmlsZXMgYXJlIGluY2x1ZGVkLgorCitFWEFNUExFX1BBVFRFUk5TICAgICAgID0gCisKKyMgSWYgdGhlIEVYQU1QTEVfUkVDVVJTSVZFIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gc3ViZGlyZWN0b3JpZXMgd2lsbCBiZSAKKyMgc2VhcmNoZWQgZm9yIGlucHV0IGZpbGVzIHRvIGJlIHVzZWQgd2l0aCB0aGUgXGluY2x1ZGUgb3IgXGRvbnRpbmNsdWRlIAorIyBjb21tYW5kcyBpcnJlc3BlY3RpdmUgb2YgdGhlIHZhbHVlIG9mIHRoZSBSRUNVUlNJVkUgdGFnLiAKKyMgUG9zc2libGUgdmFsdWVzIGFyZSBZRVMgYW5kIE5PLiBJZiBsZWZ0IGJsYW5rIE5PIGlzIHVzZWQuCisKK0VYQU1QTEVfUkVDVVJTSVZFICAgICAgPSBOTworCisjIFRoZSBJTUFHRV9QQVRIIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIGZpbGVzIG9yIAorIyBkaXJlY3RvcmllcyB0aGF0IGNvbnRhaW4gaW1hZ2UgdGhhdCBhcmUgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gKHNlZSAKKyMgdGhlIFxpbWFnZSBjb21tYW5kKS4KKworSU1BR0VfUEFUSCAgICAgICAgICAgICA9IAorCisjIFRoZSBJTlBVVF9GSUxURVIgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBwcm9ncmFtIHRoYXQgZG94eWdlbiBzaG91bGQgCisjIGludm9rZSB0byBmaWx0ZXIgZm9yIGVhY2ggaW5wdXQgZmlsZS4gRG94eWdlbiB3aWxsIGludm9rZSB0aGUgZmlsdGVyIHByb2dyYW0gCisjIGJ5IGV4ZWN1dGluZyAodmlhIHBvcGVuKCkpIHRoZSBjb21tYW5kIDxmaWx0ZXI+IDxpbnB1dC1maWxlPiwgd2hlcmUgPGZpbHRlcj4gCisjIGlzIHRoZSB2YWx1ZSBvZiB0aGUgSU5QVVRfRklMVEVSIHRhZywgYW5kIDxpbnB1dC1maWxlPiBpcyB0aGUgbmFtZSBvZiBhbiAKKyMgaW5wdXQgZmlsZS4gRG94eWdlbiB3aWxsIHRoZW4gdXNlIHRoZSBvdXRwdXQgdGhhdCB0aGUgZmlsdGVyIHByb2dyYW0gd3JpdGVzIAorIyB0byBzdGFuZGFyZCBvdXRwdXQuICBJZiBGSUxURVJfUEFUVEVSTlMgaXMgc3BlY2lmaWVkLCB0aGlzIHRhZyB3aWxsIGJlIAorIyBpZ25vcmVkLgorCitJTlBVVF9GSUxURVIgICAgICAgICAgID0gCisKKyMgVGhlIEZJTFRFUl9QQVRURVJOUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBmaWx0ZXJzIG9uIGEgcGVyIGZpbGUgcGF0dGVybiAKKyMgYmFzaXMuICBEb3h5Z2VuIHdpbGwgY29tcGFyZSB0aGUgZmlsZSBuYW1lIHdpdGggZWFjaCBwYXR0ZXJuIGFuZCBhcHBseSB0aGUgCisjIGZpbHRlciBpZiB0aGVyZSBpcyBhIG1hdGNoLiAgVGhlIGZpbHRlcnMgYXJlIGEgbGlzdCBvZiB0aGUgZm9ybTogCisjIHBhdHRlcm49ZmlsdGVyIChsaWtlICouY3BwPW15X2NwcF9maWx0ZXIpLiBTZWUgSU5QVVRfRklMVEVSIGZvciBmdXJ0aGVyIAorIyBpbmZvIG9uIGhvdyBmaWx0ZXJzIGFyZSB1c2VkLiBJZiBGSUxURVJfUEFUVEVSTlMgaXMgZW1wdHksIElOUFVUX0ZJTFRFUiAKKyMgaXMgYXBwbGllZCB0byBhbGwgZmlsZXMuCisKK0ZJTFRFUl9QQVRURVJOUyAgICAgICAgPSAKKworIyBJZiB0aGUgRklMVEVSX1NPVVJDRV9GSUxFUyB0YWcgaXMgc2V0IHRvIFlFUywgdGhlIGlucHV0IGZpbHRlciAoaWYgc2V0IHVzaW5nIAorIyBJTlBVVF9GSUxURVIpIHdpbGwgYmUgdXNlZCB0byBmaWx0ZXIgdGhlIGlucHV0IGZpbGVzIHdoZW4gcHJvZHVjaW5nIHNvdXJjZSAKKyMgZmlsZXMgdG8gYnJvd3NlIChpLmUuIHdoZW4gU09VUkNFX0JST1dTRVIgaXMgc2V0IHRvIFlFUykuCisKK0ZJTFRFUl9TT1VSQ0VfRklMRVMgICAgPSBOTworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHNvdXJjZSBicm93c2luZworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIElmIHRoZSBTT1VSQ0VfQlJPV1NFUiB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGEgbGlzdCBvZiBzb3VyY2UgZmlsZXMgd2lsbCAKKyMgYmUgZ2VuZXJhdGVkLiBEb2N1bWVudGVkIGVudGl0aWVzIHdpbGwgYmUgY3Jvc3MtcmVmZXJlbmNlZCB3aXRoIHRoZXNlIHNvdXJjZXMuIAorIyBOb3RlOiBUbyBnZXQgcmlkIG9mIGFsbCBzb3VyY2UgY29kZSBpbiB0aGUgZ2VuZXJhdGVkIG91dHB1dCwgbWFrZSBzdXJlIGFsc28gCisjIFZFUkJBVElNX0hFQURFUlMgaXMgc2V0IHRvIE5PLgorCitTT1VSQ0VfQlJPV1NFUiAgICAgICAgID0gTk8KKworIyBTZXR0aW5nIHRoZSBJTkxJTkVfU09VUkNFUyB0YWcgdG8gWUVTIHdpbGwgaW5jbHVkZSB0aGUgYm9keSAKKyMgb2YgZnVuY3Rpb25zIGFuZCBjbGFzc2VzIGRpcmVjdGx5IGluIHRoZSBkb2N1bWVudGF0aW9uLgorCitJTkxJTkVfU09VUkNFUyAgICAgICAgID0gTk8KKworIyBTZXR0aW5nIHRoZSBTVFJJUF9DT0RFX0NPTU1FTlRTIHRhZyB0byBZRVMgKHRoZSBkZWZhdWx0KSB3aWxsIGluc3RydWN0IAorIyBkb3h5Z2VuIHRvIGhpZGUgYW55IHNwZWNpYWwgY29tbWVudCBibG9ja3MgZnJvbSBnZW5lcmF0ZWQgc291cmNlIGNvZGUgCisjIGZyYWdtZW50cy4gTm9ybWFsIEMgYW5kIEMrKyBjb21tZW50cyB3aWxsIGFsd2F5cyByZW1haW4gdmlzaWJsZS4KKworU1RSSVBfQ09ERV9DT01NRU5UUyAgICA9IFlFUworCisjIElmIHRoZSBSRUZFUkVOQ0VEX0JZX1JFTEFUSU9OIHRhZyBpcyBzZXQgdG8gWUVTICh0aGUgZGVmYXVsdCkgCisjIHRoZW4gZm9yIGVhY2ggZG9jdW1lbnRlZCBmdW5jdGlvbiBhbGwgZG9jdW1lbnRlZCAKKyMgZnVuY3Rpb25zIHJlZmVyZW5jaW5nIGl0IHdpbGwgYmUgbGlzdGVkLgorCitSRUZFUkVOQ0VEX0JZX1JFTEFUSU9OID0gWUVTCisKKyMgSWYgdGhlIFJFRkVSRU5DRVNfUkVMQVRJT04gdGFnIGlzIHNldCB0byBZRVMgKHRoZSBkZWZhdWx0KSAKKyMgdGhlbiBmb3IgZWFjaCBkb2N1bWVudGVkIGZ1bmN0aW9uIGFsbCBkb2N1bWVudGVkIGVudGl0aWVzIAorIyBjYWxsZWQvdXNlZCBieSB0aGF0IGZ1bmN0aW9uIHdpbGwgYmUgbGlzdGVkLgorCitSRUZFUkVOQ0VTX1JFTEFUSU9OICAgID0gWUVTCisKKyMgSWYgdGhlIFZFUkJBVElNX0hFQURFUlMgdGFnIGlzIHNldCB0byBZRVMgKHRoZSBkZWZhdWx0KSB0aGVuIERveHlnZW4gCisjIHdpbGwgZ2VuZXJhdGUgYSB2ZXJiYXRpbSBjb3B5IG9mIHRoZSBoZWFkZXIgZmlsZSBmb3IgZWFjaCBjbGFzcyBmb3IgCisjIHdoaWNoIGFuIGluY2x1ZGUgaXMgc3BlY2lmaWVkLiBTZXQgdG8gTk8gdG8gZGlzYWJsZSB0aGlzLgorCitWRVJCQVRJTV9IRUFERVJTICAgICAgID0gWUVTCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIGFscGhhYmV0aWNhbCBjbGFzcyBpbmRleAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIElmIHRoZSBBTFBIQUJFVElDQUxfSU5ERVggdGFnIGlzIHNldCB0byBZRVMsIGFuIGFscGhhYmV0aWNhbCBpbmRleCAKKyMgb2YgYWxsIGNvbXBvdW5kcyB3aWxsIGJlIGdlbmVyYXRlZC4gRW5hYmxlIHRoaXMgaWYgdGhlIHByb2plY3QgCisjIGNvbnRhaW5zIGEgbG90IG9mIGNsYXNzZXMsIHN0cnVjdHMsIHVuaW9ucyBvciBpbnRlcmZhY2VzLgorCitBTFBIQUJFVElDQUxfSU5ERVggICAgID0gTk8KKworIyBJZiB0aGUgYWxwaGFiZXRpY2FsIGluZGV4IGlzIGVuYWJsZWQgKHNlZSBBTFBIQUJFVElDQUxfSU5ERVgpIHRoZW4gCisjIHRoZSBDT0xTX0lOX0FMUEhBX0lOREVYIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgY29sdW1ucyAKKyMgaW4gd2hpY2ggdGhpcyBsaXN0IHdpbGwgYmUgc3BsaXQgKGNhbiBiZSBhIG51bWJlciBpbiB0aGUgcmFuZ2UgWzEuLjIwXSkKKworQ09MU19JTl9BTFBIQV9JTkRFWCAgICA9IDUKKworIyBJbiBjYXNlIGFsbCBjbGFzc2VzIGluIGEgcHJvamVjdCBzdGFydCB3aXRoIGEgY29tbW9uIHByZWZpeCwgYWxsIAorIyBjbGFzc2VzIHdpbGwgYmUgcHV0IHVuZGVyIHRoZSBzYW1lIGhlYWRlciBpbiB0aGUgYWxwaGFiZXRpY2FsIGluZGV4LiAKKyMgVGhlIElHTk9SRV9QUkVGSVggdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgcHJlZml4ZXMgdGhhdCAKKyMgc2hvdWxkIGJlIGlnbm9yZWQgd2hpbGUgZ2VuZXJhdGluZyB0aGUgaW5kZXggaGVhZGVycy4KKworSUdOT1JFX1BSRUZJWCAgICAgICAgICA9IAorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBIVE1MIG91dHB1dAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIElmIHRoZSBHRU5FUkFURV9IVE1MIHRhZyBpcyBzZXQgdG8gWUVTICh0aGUgZGVmYXVsdCkgRG94eWdlbiB3aWxsIAorIyBnZW5lcmF0ZSBIVE1MIG91dHB1dC4KKworR0VORVJBVEVfSFRNTCAgICAgICAgICA9IFlFUworCisjIFRoZSBIVE1MX09VVFBVVCB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXJlIHRoZSBIVE1MIGRvY3Mgd2lsbCBiZSBwdXQuIAorIyBJZiBhIHJlbGF0aXZlIHBhdGggaXMgZW50ZXJlZCB0aGUgdmFsdWUgb2YgT1VUUFVUX0RJUkVDVE9SWSB3aWxsIGJlIAorIyBwdXQgaW4gZnJvbnQgb2YgaXQuIElmIGxlZnQgYmxhbmsgYGh0bWwnIHdpbGwgYmUgdXNlZCBhcyB0aGUgZGVmYXVsdCBwYXRoLgorCitIVE1MX09VVFBVVCAgICAgICAgICAgID0gLi4vLi4vZG9jL3NpdGUvYnVpbGQvc2l0ZS9jL2FwaURvY3MKKworIyBUaGUgSFRNTF9GSUxFX0VYVEVOU0lPTiB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgZmlsZSBleHRlbnNpb24gZm9yIAorIyBlYWNoIGdlbmVyYXRlZCBIVE1MIHBhZ2UgKGZvciBleGFtcGxlOiAuaHRtLC5waHAsLmFzcCkuIElmIGl0IGlzIGxlZnQgYmxhbmsgCisjIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBmaWxlcyB3aXRoIC5odG1sIGV4dGVuc2lvbi4KKworSFRNTF9GSUxFX0VYVEVOU0lPTiAgICA9IC5odG1sCisKKyMgVGhlIEhUTUxfSEVBREVSIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgcGVyc29uYWwgSFRNTCBoZWFkZXIgZm9yIAorIyBlYWNoIGdlbmVyYXRlZCBIVE1MIHBhZ2UuIElmIGl0IGlzIGxlZnQgYmxhbmsgZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgCisjIHN0YW5kYXJkIGhlYWRlci4KKworSFRNTF9IRUFERVIgICAgICAgICAgICA9IAorCisjIFRoZSBIVE1MX0ZPT1RFUiB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIHBlcnNvbmFsIEhUTUwgZm9vdGVyIGZvciAKKyMgZWFjaCBnZW5lcmF0ZWQgSFRNTCBwYWdlLiBJZiBpdCBpcyBsZWZ0IGJsYW5rIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIAorIyBzdGFuZGFyZCBmb290ZXIuCisKK0hUTUxfRk9PVEVSICAgICAgICAgICAgPSAKKworIyBUaGUgSFRNTF9TVFlMRVNIRUVUIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgdXNlci1kZWZpbmVkIGNhc2NhZGluZyAKKyMgc3R5bGUgc2hlZXQgdGhhdCBpcyB1c2VkIGJ5IGVhY2ggSFRNTCBwYWdlLiBJdCBjYW4gYmUgdXNlZCB0byAKKyMgZmluZS10dW5lIHRoZSBsb29rIG9mIHRoZSBIVE1MIG91dHB1dC4gSWYgdGhlIHRhZyBpcyBsZWZ0IGJsYW5rIGRveHlnZW4gCisjIHdpbGwgZ2VuZXJhdGUgYSBkZWZhdWx0IHN0eWxlIHNoZWV0LiBOb3RlIHRoYXQgZG94eWdlbiB3aWxsIHRyeSB0byBjb3B5IAorIyB0aGUgc3R5bGUgc2hlZXQgZmlsZSB0byB0aGUgSFRNTCBvdXRwdXQgZGlyZWN0b3J5LCBzbyBkb24ndCBwdXQgeW91ciBvd24gCisjIHN0eWxlc2hlZXQgaW4gdGhlIEhUTUwgb3V0cHV0IGRpcmVjdG9yeSBhcyB3ZWxsLCBvciBpdCB3aWxsIGJlIGVyYXNlZCEKKworSFRNTF9TVFlMRVNIRUVUICAgICAgICA9IAorCisjIElmIHRoZSBIVE1MX0FMSUdOX01FTUJFUlMgdGFnIGlzIHNldCB0byBZRVMsIHRoZSBtZW1iZXJzIG9mIGNsYXNzZXMsIAorIyBmaWxlcyBvciBuYW1lc3BhY2VzIHdpbGwgYmUgYWxpZ25lZCBpbiBIVE1MIHVzaW5nIHRhYmxlcy4gSWYgc2V0IHRvIAorIyBOTyBhIGJ1bGxldCBsaXN0IHdpbGwgYmUgdXNlZC4KKworSFRNTF9BTElHTl9NRU1CRVJTICAgICA9IFlFUworCisjIElmIHRoZSBHRU5FUkFURV9IVE1MSEVMUCB0YWcgaXMgc2V0IHRvIFlFUywgYWRkaXRpb25hbCBpbmRleCBmaWxlcyAKKyMgd2lsbCBiZSBnZW5lcmF0ZWQgdGhhdCBjYW4gYmUgdXNlZCBhcyBpbnB1dCBmb3IgdG9vbHMgbGlrZSB0aGUgCisjIE1pY3Jvc29mdCBIVE1MIGhlbHAgd29ya3Nob3AgdG8gZ2VuZXJhdGUgYSBjb21wcmVzc2VkIEhUTUwgaGVscCBmaWxlICguY2htKSAKKyMgb2YgdGhlIGdlbmVyYXRlZCBIVE1MIGRvY3VtZW50YXRpb24uCisKK0dFTkVSQVRFX0hUTUxIRUxQICAgICAgPSBOTworCisjIElmIHRoZSBHRU5FUkFURV9IVE1MSEVMUCB0YWcgaXMgc2V0IHRvIFlFUywgdGhlIENITV9GSUxFIHRhZyBjYW4gCisjIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgZmlsZSBuYW1lIG9mIHRoZSByZXN1bHRpbmcgLmNobSBmaWxlLiBZb3UgCisjIGNhbiBhZGQgYSBwYXRoIGluIGZyb250IG9mIHRoZSBmaWxlIGlmIHRoZSByZXN1bHQgc2hvdWxkIG5vdCBiZSAKKyMgd3JpdHRlbiB0byB0aGUgaHRtbCBvdXRwdXQgZGlyZWN0b3J5LgorCitDSE1fRklMRSAgICAgICAgICAgICAgID0gCisKKyMgSWYgdGhlIEdFTkVSQVRFX0hUTUxIRUxQIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGUgSEhDX0xPQ0FUSU9OIHRhZyBjYW4gCisjIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgbG9jYXRpb24gKGFic29sdXRlIHBhdGggaW5jbHVkaW5nIGZpbGUgbmFtZSkgb2YgCisjIHRoZSBIVE1MIGhlbHAgY29tcGlsZXIgKGhoYy5leGUpLiBJZiBub24tZW1wdHkgZG94eWdlbiB3aWxsIHRyeSB0byBydW4gCisjIHRoZSBIVE1MIGhlbHAgY29tcGlsZXIgb24gdGhlIGdlbmVyYXRlZCBpbmRleC5oaHAuCisKK0hIQ19MT0NBVElPTiAgICAgICAgICAgPSAKKworIyBJZiB0aGUgR0VORVJBVEVfSFRNTEhFTFAgdGFnIGlzIHNldCB0byBZRVMsIHRoZSBHRU5FUkFURV9DSEkgZmxhZyAKKyMgY29udHJvbHMgaWYgYSBzZXBhcmF0ZSAuY2hpIGluZGV4IGZpbGUgaXMgZ2VuZXJhdGVkIChZRVMpIG9yIHRoYXQgCisjIGl0IHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgbWFzdGVyIC5jaG0gZmlsZSAoTk8pLgorCitHRU5FUkFURV9DSEkgICAgICAgICAgID0gTk8KKworIyBJZiB0aGUgR0VORVJBVEVfSFRNTEhFTFAgdGFnIGlzIHNldCB0byBZRVMsIHRoZSBCSU5BUllfVE9DIGZsYWcgCisjIGNvbnRyb2xzIHdoZXRoZXIgYSBiaW5hcnkgdGFibGUgb2YgY29udGVudHMgaXMgZ2VuZXJhdGVkIChZRVMpIG9yIGEgCisjIG5vcm1hbCB0YWJsZSBvZiBjb250ZW50cyAoTk8pIGluIHRoZSAuY2htIGZpbGUuCisKK0JJTkFSWV9UT0MgICAgICAgICAgICAgPSBOTworCisjIFRoZSBUT0NfRVhQQU5EIGZsYWcgY2FuIGJlIHNldCB0byBZRVMgdG8gYWRkIGV4dHJhIGl0ZW1zIGZvciBncm91cCBtZW1iZXJzIAorIyB0byB0aGUgY29udGVudHMgb2YgdGhlIEhUTUwgaGVscCBkb2N1bWVudGF0aW9uIGFuZCB0byB0aGUgdHJlZSB2aWV3LgorCitUT0NfRVhQQU5EICAgICAgICAgICAgID0gTk8KKworIyBUaGUgRElTQUJMRV9JTkRFWCB0YWcgY2FuIGJlIHVzZWQgdG8gdHVybiBvbi9vZmYgdGhlIGNvbmRlbnNlZCBpbmRleCBhdCAKKyMgdG9wIG9mIGVhY2ggSFRNTCBwYWdlLiBUaGUgdmFsdWUgTk8gKHRoZSBkZWZhdWx0KSBlbmFibGVzIHRoZSBpbmRleCBhbmQgCisjIHRoZSB2YWx1ZSBZRVMgZGlzYWJsZXMgaXQuCisKK0RJU0FCTEVfSU5ERVggICAgICAgICAgPSBOTworCisjIFRoaXMgdGFnIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgbnVtYmVyIG9mIGVudW0gdmFsdWVzIChyYW5nZSBbMS4uMjBdKSAKKyMgdGhhdCBkb3h5Z2VuIHdpbGwgZ3JvdXAgb24gb25lIGxpbmUgaW4gdGhlIGdlbmVyYXRlZCBIVE1MIGRvY3VtZW50YXRpb24uCisKK0VOVU1fVkFMVUVTX1BFUl9MSU5FICAgPSAxCisKKyMgSWYgdGhlIEdFTkVSQVRFX1RSRUVWSUVXIHRhZyBpcyBzZXQgdG8gWUVTLCBhIHNpZGUgcGFuZWwgd2lsbCBiZQorIyBnZW5lcmF0ZWQgY29udGFpbmluZyBhIHRyZWUtbGlrZSBpbmRleCBzdHJ1Y3R1cmUgKGp1c3QgbGlrZSB0aGUgb25lIHRoYXQgCisjIGlzIGdlbmVyYXRlZCBmb3IgSFRNTCBIZWxwKS4gRm9yIHRoaXMgdG8gd29yayBhIGJyb3dzZXIgdGhhdCBzdXBwb3J0cyAKKyMgSmF2YVNjcmlwdCwgREhUTUwsIENTUyBhbmQgZnJhbWVzIGlzIHJlcXVpcmVkIChmb3IgaW5zdGFuY2UgTW96aWxsYSAxLjArLCAKKyMgTmV0c2NhcGUgNi4wKywgSW50ZXJuZXQgZXhwbG9yZXIgNS4wKywgb3IgS29ucXVlcm9yKS4gV2luZG93cyB1c2VycyBhcmUgCisjIHByb2JhYmx5IGJldHRlciBvZmYgdXNpbmcgdGhlIEhUTUwgaGVscCBmZWF0dXJlLgorCitHRU5FUkFURV9UUkVFVklFVyAgICAgID0gTk8KKworIyBJZiB0aGUgdHJlZXZpZXcgaXMgZW5hYmxlZCAoc2VlIEdFTkVSQVRFX1RSRUVWSUVXKSB0aGVuIHRoaXMgdGFnIGNhbiBiZSAKKyMgdXNlZCB0byBzZXQgdGhlIGluaXRpYWwgd2lkdGggKGluIHBpeGVscykgb2YgdGhlIGZyYW1lIGluIHdoaWNoIHRoZSB0cmVlIAorIyBpcyBzaG93bi4KKworVFJFRVZJRVdfV0lEVEggICAgICAgICA9IDI1MAorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBMYVRlWCBvdXRwdXQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBJZiB0aGUgR0VORVJBVEVfTEFURVggdGFnIGlzIHNldCB0byBZRVMgKHRoZSBkZWZhdWx0KSBEb3h5Z2VuIHdpbGwgCisjIGdlbmVyYXRlIExhdGV4IG91dHB1dC4KKworR0VORVJBVEVfTEFURVggICAgICAgICA9IE5PCisKKyMgVGhlIExBVEVYX09VVFBVVCB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXJlIHRoZSBMYVRlWCBkb2NzIHdpbGwgYmUgcHV0LiAKKyMgSWYgYSByZWxhdGl2ZSBwYXRoIGlzIGVudGVyZWQgdGhlIHZhbHVlIG9mIE9VVFBVVF9ESVJFQ1RPUlkgd2lsbCBiZSAKKyMgcHV0IGluIGZyb250IG9mIGl0LiBJZiBsZWZ0IGJsYW5rIGBsYXRleCcgd2lsbCBiZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHBhdGguCisKK0xBVEVYX09VVFBVVCAgICAgICAgICAgPSBsYXRleAorCisjIFRoZSBMQVRFWF9DTURfTkFNRSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgTGFUZVggY29tbWFuZCBuYW1lIHRvIGJlIAorIyBpbnZva2VkLiBJZiBsZWZ0IGJsYW5rIGBsYXRleCcgd2lsbCBiZSB1c2VkIGFzIHRoZSBkZWZhdWx0IGNvbW1hbmQgbmFtZS4KKworTEFURVhfQ01EX05BTUUgICAgICAgICA9IGxhdGV4CisKKyMgVGhlIE1BS0VJTkRFWF9DTURfTkFNRSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgY29tbWFuZCBuYW1lIHRvIAorIyBnZW5lcmF0ZSBpbmRleCBmb3IgTGFUZVguIElmIGxlZnQgYmxhbmsgYG1ha2VpbmRleCcgd2lsbCBiZSB1c2VkIGFzIHRoZSAKKyMgZGVmYXVsdCBjb21tYW5kIG5hbWUuCisKK01BS0VJTkRFWF9DTURfTkFNRSAgICAgPSBtYWtlaW5kZXgKKworIyBJZiB0aGUgQ09NUEFDVF9MQVRFWCB0YWcgaXMgc2V0IHRvIFlFUyBEb3h5Z2VuIGdlbmVyYXRlcyBtb3JlIGNvbXBhY3QgCisjIExhVGVYIGRvY3VtZW50cy4gVGhpcyBtYXkgYmUgdXNlZnVsIGZvciBzbWFsbCBwcm9qZWN0cyBhbmQgbWF5IGhlbHAgdG8gCisjIHNhdmUgc29tZSB0cmVlcyBpbiBnZW5lcmFsLgorCitDT01QQUNUX0xBVEVYICAgICAgICAgID0gTk8KKworIyBUaGUgUEFQRVJfVFlQRSB0YWcgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBwYXBlciB0eXBlIHRoYXQgaXMgdXNlZCAKKyMgYnkgdGhlIHByaW50ZXIuIFBvc3NpYmxlIHZhbHVlcyBhcmU6IGE0LCBhNHdpZGUsIGxldHRlciwgbGVnYWwgYW5kIAorIyBleGVjdXRpdmUuIElmIGxlZnQgYmxhbmsgYTR3aWRlIHdpbGwgYmUgdXNlZC4KKworUEFQRVJfVFlQRSAgICAgICAgICAgICA9IGE0d2lkZQorCisjIFRoZSBFWFRSQV9QQUNLQUdFUyB0YWcgY2FuIGJlIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgbmFtZXMgb2YgTGFUZVggCisjIHBhY2thZ2VzIHRoYXQgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBMYVRlWCBvdXRwdXQuCisKK0VYVFJBX1BBQ0tBR0VTICAgICAgICAgPSAKKworIyBUaGUgTEFURVhfSEVBREVSIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgcGVyc29uYWwgTGFUZVggaGVhZGVyIGZvciAKKyMgdGhlIGdlbmVyYXRlZCBsYXRleCBkb2N1bWVudC4gVGhlIGhlYWRlciBzaG91bGQgY29udGFpbiBldmVyeXRoaW5nIHVudGlsIAorIyB0aGUgZmlyc3QgY2hhcHRlci4gSWYgaXQgaXMgbGVmdCBibGFuayBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSAKKyMgc3RhbmRhcmQgaGVhZGVyLiBOb3RpY2U6IG9ubHkgdXNlIHRoaXMgdGFnIGlmIHlvdSBrbm93IHdoYXQgeW91IGFyZSBkb2luZyEKKworTEFURVhfSEVBREVSICAgICAgICAgICA9IAorCisjIElmIHRoZSBQREZfSFlQRVJMSU5LUyB0YWcgaXMgc2V0IHRvIFlFUywgdGhlIExhVGVYIHRoYXQgaXMgZ2VuZXJhdGVkIAorIyBpcyBwcmVwYXJlZCBmb3IgY29udmVyc2lvbiB0byBwZGYgKHVzaW5nIHBzMnBkZikuIFRoZSBwZGYgZmlsZSB3aWxsIAorIyBjb250YWluIGxpbmtzIChqdXN0IGxpa2UgdGhlIEhUTUwgb3V0cHV0KSBpbnN0ZWFkIG9mIHBhZ2UgcmVmZXJlbmNlcyAKKyMgVGhpcyBtYWtlcyB0aGUgb3V0cHV0IHN1aXRhYmxlIGZvciBvbmxpbmUgYnJvd3NpbmcgdXNpbmcgYSBwZGYgdmlld2VyLgorCitQREZfSFlQRVJMSU5LUyAgICAgICAgID0gTk8KKworIyBJZiB0aGUgVVNFX1BERkxBVEVYIHRhZyBpcyBzZXQgdG8gWUVTLCBwZGZsYXRleCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiAKKyMgcGxhaW4gbGF0ZXggaW4gdGhlIGdlbmVyYXRlZCBNYWtlZmlsZS4gU2V0IHRoaXMgb3B0aW9uIHRvIFlFUyB0byBnZXQgYSAKKyMgaGlnaGVyIHF1YWxpdHkgUERGIGRvY3VtZW50YXRpb24uCisKK1VTRV9QREZMQVRFWCAgICAgICAgICAgPSBOTworCisjIElmIHRoZSBMQVRFWF9CQVRDSE1PREUgdGFnIGlzIHNldCB0byBZRVMsIGRveHlnZW4gd2lsbCBhZGQgdGhlIFxcYmF0Y2htb2RlLiAKKyMgY29tbWFuZCB0byB0aGUgZ2VuZXJhdGVkIExhVGVYIGZpbGVzLiBUaGlzIHdpbGwgaW5zdHJ1Y3QgTGFUZVggdG8ga2VlcCAKKyMgcnVubmluZyBpZiBlcnJvcnMgb2NjdXIsIGluc3RlYWQgb2YgYXNraW5nIHRoZSB1c2VyIGZvciBoZWxwLiAKKyMgVGhpcyBvcHRpb24gaXMgYWxzbyB1c2VkIHdoZW4gZ2VuZXJhdGluZyBmb3JtdWxhcyBpbiBIVE1MLgorCitMQVRFWF9CQVRDSE1PREUgICAgICAgID0gTk8KKworIyBJZiBMQVRFWF9ISURFX0lORElDRVMgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBub3QgCisjIGluY2x1ZGUgdGhlIGluZGV4IGNoYXB0ZXJzIChzdWNoIGFzIEZpbGUgSW5kZXgsIENvbXBvdW5kIEluZGV4LCBldGMuKSAKKyMgaW4gdGhlIG91dHB1dC4KKworTEFURVhfSElERV9JTkRJQ0VTICAgICA9IE5PCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIFJURiBvdXRwdXQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBJZiB0aGUgR0VORVJBVEVfUlRGIHRhZyBpcyBzZXQgdG8gWUVTIERveHlnZW4gd2lsbCBnZW5lcmF0ZSBSVEYgb3V0cHV0IAorIyBUaGUgUlRGIG91dHB1dCBpcyBvcHRpbWl6ZWQgZm9yIFdvcmQgOTcgYW5kIG1heSBub3QgbG9vayB2ZXJ5IHByZXR0eSB3aXRoIAorIyBvdGhlciBSVEYgcmVhZGVycyBvciBlZGl0b3JzLgorCitHRU5FUkFURV9SVEYgICAgICAgICAgID0gTk8KKworIyBUaGUgUlRGX09VVFBVVCB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXJlIHRoZSBSVEYgZG9jcyB3aWxsIGJlIHB1dC4gCisjIElmIGEgcmVsYXRpdmUgcGF0aCBpcyBlbnRlcmVkIHRoZSB2YWx1ZSBvZiBPVVRQVVRfRElSRUNUT1JZIHdpbGwgYmUgCisjIHB1dCBpbiBmcm9udCBvZiBpdC4gSWYgbGVmdCBibGFuayBgcnRmJyB3aWxsIGJlIHVzZWQgYXMgdGhlIGRlZmF1bHQgcGF0aC4KKworUlRGX09VVFBVVCAgICAgICAgICAgICA9IHJ0ZgorCisjIElmIHRoZSBDT01QQUNUX1JURiB0YWcgaXMgc2V0IHRvIFlFUyBEb3h5Z2VuIGdlbmVyYXRlcyBtb3JlIGNvbXBhY3QgCisjIFJURiBkb2N1bWVudHMuIFRoaXMgbWF5IGJlIHVzZWZ1bCBmb3Igc21hbGwgcHJvamVjdHMgYW5kIG1heSBoZWxwIHRvIAorIyBzYXZlIHNvbWUgdHJlZXMgaW4gZ2VuZXJhbC4KKworQ09NUEFDVF9SVEYgICAgICAgICAgICA9IE5PCisKKyMgSWYgdGhlIFJURl9IWVBFUkxJTktTIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGUgUlRGIHRoYXQgaXMgZ2VuZXJhdGVkIAorIyB3aWxsIGNvbnRhaW4gaHlwZXJsaW5rIGZpZWxkcy4gVGhlIFJURiBmaWxlIHdpbGwgCisjIGNvbnRhaW4gbGlua3MgKGp1c3QgbGlrZSB0aGUgSFRNTCBvdXRwdXQpIGluc3RlYWQgb2YgcGFnZSByZWZlcmVuY2VzLiAKKyMgVGhpcyBtYWtlcyB0aGUgb3V0cHV0IHN1aXRhYmxlIGZvciBvbmxpbmUgYnJvd3NpbmcgdXNpbmcgV09SRCBvciBvdGhlciAKKyMgcHJvZ3JhbXMgd2hpY2ggc3VwcG9ydCB0aG9zZSBmaWVsZHMuIAorIyBOb3RlOiB3b3JkcGFkICh3cml0ZSkgYW5kIG90aGVycyBkbyBub3Qgc3VwcG9ydCBsaW5rcy4KKworUlRGX0hZUEVSTElOS1MgICAgICAgICA9IE5PCisKKyMgTG9hZCBzdHlsZXNoZWV0IGRlZmluaXRpb25zIGZyb20gZmlsZS4gU3ludGF4IGlzIHNpbWlsYXIgdG8gZG94eWdlbidzIAorIyBjb25maWcgZmlsZSwgaS5lLiBhIHNlcmllcyBvZiBhc3NpZ25tZW50cy4gWW91IG9ubHkgaGF2ZSB0byBwcm92aWRlIAorIyByZXBsYWNlbWVudHMsIG1pc3NpbmcgZGVmaW5pdGlvbnMgYXJlIHNldCB0byB0aGVpciBkZWZhdWx0IHZhbHVlLgorCitSVEZfU1RZTEVTSEVFVF9GSUxFICAgID0gCisKKyMgU2V0IG9wdGlvbmFsIHZhcmlhYmxlcyB1c2VkIGluIHRoZSBnZW5lcmF0aW9uIG9mIGFuIHJ0ZiBkb2N1bWVudC4gCisjIFN5bnRheCBpcyBzaW1pbGFyIHRvIGRveHlnZW4ncyBjb25maWcgZmlsZS4KKworUlRGX0VYVEVOU0lPTlNfRklMRSAgICA9IAorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBtYW4gcGFnZSBvdXRwdXQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBJZiB0aGUgR0VORVJBVEVfTUFOIHRhZyBpcyBzZXQgdG8gWUVTICh0aGUgZGVmYXVsdCkgRG94eWdlbiB3aWxsIAorIyBnZW5lcmF0ZSBtYW4gcGFnZXMKKworR0VORVJBVEVfTUFOICAgICAgICAgICA9IE5PCisKKyMgVGhlIE1BTl9PVVRQVVQgdGFnIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGVyZSB0aGUgbWFuIHBhZ2VzIHdpbGwgYmUgcHV0LiAKKyMgSWYgYSByZWxhdGl2ZSBwYXRoIGlzIGVudGVyZWQgdGhlIHZhbHVlIG9mIE9VVFBVVF9ESVJFQ1RPUlkgd2lsbCBiZSAKKyMgcHV0IGluIGZyb250IG9mIGl0LiBJZiBsZWZ0IGJsYW5rIGBtYW4nIHdpbGwgYmUgdXNlZCBhcyB0aGUgZGVmYXVsdCBwYXRoLgorCitNQU5fT1VUUFVUICAgICAgICAgICAgID0gbWFuCisKKyMgVGhlIE1BTl9FWFRFTlNJT04gdGFnIGRldGVybWluZXMgdGhlIGV4dGVuc2lvbiB0aGF0IGlzIGFkZGVkIHRvIAorIyB0aGUgZ2VuZXJhdGVkIG1hbiBwYWdlcyAoZGVmYXVsdCBpcyB0aGUgc3Vicm91dGluZSdzIHNlY3Rpb24gLjMpCisKK01BTl9FWFRFTlNJT04gICAgICAgICAgPSAuMworCisjIElmIHRoZSBNQU5fTElOS1MgdGFnIGlzIHNldCB0byBZRVMgYW5kIERveHlnZW4gZ2VuZXJhdGVzIG1hbiBvdXRwdXQsIAorIyB0aGVuIGl0IHdpbGwgZ2VuZXJhdGUgb25lIGFkZGl0aW9uYWwgbWFuIGZpbGUgZm9yIGVhY2ggZW50aXR5IAorIyBkb2N1bWVudGVkIGluIHRoZSByZWFsIG1hbiBwYWdlKHMpLiBUaGVzZSBhZGRpdGlvbmFsIGZpbGVzIAorIyBvbmx5IHNvdXJjZSB0aGUgcmVhbCBtYW4gcGFnZSwgYnV0IHdpdGhvdXQgdGhlbSB0aGUgbWFuIGNvbW1hbmQgCisjIHdvdWxkIGJlIHVuYWJsZSB0byBmaW5kIHRoZSBjb3JyZWN0IHBhZ2UuIFRoZSBkZWZhdWx0IGlzIE5PLgorCitNQU5fTElOS1MgICAgICAgICAgICAgID0gTk8KKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgWE1MIG91dHB1dAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIElmIHRoZSBHRU5FUkFURV9YTUwgdGFnIGlzIHNldCB0byBZRVMgRG94eWdlbiB3aWxsIAorIyBnZW5lcmF0ZSBhbiBYTUwgZmlsZSB0aGF0IGNhcHR1cmVzIHRoZSBzdHJ1Y3R1cmUgb2YgCisjIHRoZSBjb2RlIGluY2x1ZGluZyBhbGwgZG9jdW1lbnRhdGlvbi4KKworR0VORVJBVEVfWE1MICAgICAgICAgICA9IE5PCisKKyMgVGhlIFhNTF9PVVRQVVQgdGFnIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGVyZSB0aGUgWE1MIHBhZ2VzIHdpbGwgYmUgcHV0LiAKKyMgSWYgYSByZWxhdGl2ZSBwYXRoIGlzIGVudGVyZWQgdGhlIHZhbHVlIG9mIE9VVFBVVF9ESVJFQ1RPUlkgd2lsbCBiZSAKKyMgcHV0IGluIGZyb250IG9mIGl0LiBJZiBsZWZ0IGJsYW5rIGB4bWwnIHdpbGwgYmUgdXNlZCBhcyB0aGUgZGVmYXVsdCBwYXRoLgorCitYTUxfT1VUUFVUICAgICAgICAgICAgID0geG1sCisKKyMgVGhlIFhNTF9TQ0hFTUEgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYW4gWE1MIHNjaGVtYSwgCisjIHdoaWNoIGNhbiBiZSB1c2VkIGJ5IGEgdmFsaWRhdGluZyBYTUwgcGFyc2VyIHRvIGNoZWNrIHRoZSAKKyMgc3ludGF4IG9mIHRoZSBYTUwgZmlsZXMuCisKK1hNTF9TQ0hFTUEgICAgICAgICAgICAgPSAKKworIyBUaGUgWE1MX0RURCB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhbiBYTUwgRFRELCAKKyMgd2hpY2ggY2FuIGJlIHVzZWQgYnkgYSB2YWxpZGF0aW5nIFhNTCBwYXJzZXIgdG8gY2hlY2sgdGhlIAorIyBzeW50YXggb2YgdGhlIFhNTCBmaWxlcy4KKworWE1MX0RURCAgICAgICAgICAgICAgICA9IAorCisjIElmIHRoZSBYTUxfUFJPR1JBTUxJU1RJTkcgdGFnIGlzIHNldCB0byBZRVMgRG94eWdlbiB3aWxsIAorIyBkdW1wIHRoZSBwcm9ncmFtIGxpc3RpbmdzIChpbmNsdWRpbmcgc3ludGF4IGhpZ2hsaWdodGluZyAKKyMgYW5kIGNyb3NzLXJlZmVyZW5jaW5nIGluZm9ybWF0aW9uKSB0byB0aGUgWE1MIG91dHB1dC4gTm90ZSB0aGF0IAorIyBlbmFibGluZyB0aGlzIHdpbGwgc2lnbmlmaWNhbnRseSBpbmNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUgWE1MIG91dHB1dC4KKworWE1MX1BST0dSQU1MSVNUSU5HICAgICA9IFlFUworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIEF1dG9HZW4gRGVmaW5pdGlvbnMgb3V0cHV0CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgSWYgdGhlIEdFTkVSQVRFX0FVVE9HRU5fREVGIHRhZyBpcyBzZXQgdG8gWUVTIERveHlnZW4gd2lsbCAKKyMgZ2VuZXJhdGUgYW4gQXV0b0dlbiBEZWZpbml0aW9ucyAoc2VlIGF1dG9nZW4uc2YubmV0KSBmaWxlIAorIyB0aGF0IGNhcHR1cmVzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGNvZGUgaW5jbHVkaW5nIGFsbCAKKyMgZG9jdW1lbnRhdGlvbi4gTm90ZSB0aGF0IHRoaXMgZmVhdHVyZSBpcyBzdGlsbCBleHBlcmltZW50YWwgCisjIGFuZCBpbmNvbXBsZXRlIGF0IHRoZSBtb21lbnQuCisKK0dFTkVSQVRFX0FVVE9HRU5fREVGICAgPSBOTworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBQZXJsIG1vZHVsZSBvdXRwdXQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBJZiB0aGUgR0VORVJBVEVfUEVSTE1PRCB0YWcgaXMgc2V0IHRvIFlFUyBEb3h5Z2VuIHdpbGwgCisjIGdlbmVyYXRlIGEgUGVybCBtb2R1bGUgZmlsZSB0aGF0IGNhcHR1cmVzIHRoZSBzdHJ1Y3R1cmUgb2YgCisjIHRoZSBjb2RlIGluY2x1ZGluZyBhbGwgZG9jdW1lbnRhdGlvbi4gTm90ZSB0aGF0IHRoaXMgCisjIGZlYXR1cmUgaXMgc3RpbGwgZXhwZXJpbWVudGFsIGFuZCBpbmNvbXBsZXRlIGF0IHRoZSAKKyMgbW9tZW50LgorCitHRU5FUkFURV9QRVJMTU9EICAgICAgID0gTk8KKworIyBJZiB0aGUgUEVSTE1PRF9MQVRFWCB0YWcgaXMgc2V0IHRvIFlFUyBEb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgCisjIHRoZSBuZWNlc3NhcnkgTWFrZWZpbGUgcnVsZXMsIFBlcmwgc2NyaXB0cyBhbmQgTGFUZVggY29kZSB0byBiZSBhYmxlIAorIyB0byBnZW5lcmF0ZSBQREYgYW5kIERWSSBvdXRwdXQgZnJvbSB0aGUgUGVybCBtb2R1bGUgb3V0cHV0LgorCitQRVJMTU9EX0xBVEVYICAgICAgICAgID0gTk8KKworIyBJZiB0aGUgUEVSTE1PRF9QUkVUVFkgdGFnIGlzIHNldCB0byBZRVMgdGhlIFBlcmwgbW9kdWxlIG91dHB1dCB3aWxsIGJlIAorIyBuaWNlbHkgZm9ybWF0dGVkIHNvIGl0IGNhbiBiZSBwYXJzZWQgYnkgYSBodW1hbiByZWFkZXIuICBUaGlzIGlzIHVzZWZ1bCAKKyMgaWYgeW91IHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0IGlzIGdvaW5nIG9uLiAgT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoaXMgCisjIHRhZyBpcyBzZXQgdG8gTk8gdGhlIHNpemUgb2YgdGhlIFBlcmwgbW9kdWxlIG91dHB1dCB3aWxsIGJlIG11Y2ggc21hbGxlciAKKyMgYW5kIFBlcmwgd2lsbCBwYXJzZSBpdCBqdXN0IHRoZSBzYW1lLgorCitQRVJMTU9EX1BSRVRUWSAgICAgICAgID0gWUVTCisKKyMgVGhlIG5hbWVzIG9mIHRoZSBtYWtlIHZhcmlhYmxlcyBpbiB0aGUgZ2VuZXJhdGVkIGRveHlydWxlcy5tYWtlIGZpbGUgCisjIGFyZSBwcmVmaXhlZCB3aXRoIHRoZSBzdHJpbmcgY29udGFpbmVkIGluIFBFUkxNT0RfTUFLRVZBUl9QUkVGSVguIAorIyBUaGlzIGlzIHVzZWZ1bCBzbyBkaWZmZXJlbnQgZG94eXJ1bGVzLm1ha2UgZmlsZXMgaW5jbHVkZWQgYnkgdGhlIHNhbWUgCisjIE1ha2VmaWxlIGRvbid0IG92ZXJ3cml0ZSBlYWNoIG90aGVyJ3MgdmFyaWFibGVzLgorCitQRVJMTU9EX01BS0VWQVJfUFJFRklYID0gCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIHByZXByb2Nlc3NvciAgIAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIElmIHRoZSBFTkFCTEVfUFJFUFJPQ0VTU0lORyB0YWcgaXMgc2V0IHRvIFlFUyAodGhlIGRlZmF1bHQpIERveHlnZW4gd2lsbCAKKyMgZXZhbHVhdGUgYWxsIEMtcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgZm91bmQgaW4gdGhlIHNvdXJjZXMgYW5kIGluY2x1ZGUgCisjIGZpbGVzLgorCitFTkFCTEVfUFJFUFJPQ0VTU0lORyAgID0gWUVTCisKKyMgSWYgdGhlIE1BQ1JPX0VYUEFOU0lPTiB0YWcgaXMgc2V0IHRvIFlFUyBEb3h5Z2VuIHdpbGwgZXhwYW5kIGFsbCBtYWNybyAKKyMgbmFtZXMgaW4gdGhlIHNvdXJjZSBjb2RlLiBJZiBzZXQgdG8gTk8gKHRoZSBkZWZhdWx0KSBvbmx5IGNvbmRpdGlvbmFsIAorIyBjb21waWxhdGlvbiB3aWxsIGJlIHBlcmZvcm1lZC4gTWFjcm8gZXhwYW5zaW9uIGNhbiBiZSBkb25lIGluIGEgY29udHJvbGxlZCAKKyMgd2F5IGJ5IHNldHRpbmcgRVhQQU5EX09OTFlfUFJFREVGIHRvIFlFUy4KKworTUFDUk9fRVhQQU5TSU9OICAgICAgICA9IE5PCisKKyMgSWYgdGhlIEVYUEFORF9PTkxZX1BSRURFRiBhbmQgTUFDUk9fRVhQQU5TSU9OIHRhZ3MgYXJlIGJvdGggc2V0IHRvIFlFUyAKKyMgdGhlbiB0aGUgbWFjcm8gZXhwYW5zaW9uIGlzIGxpbWl0ZWQgdG8gdGhlIG1hY3JvcyBzcGVjaWZpZWQgd2l0aCB0aGUgCisjIFBSRURFRklORUQgYW5kIEVYUEFORF9BU19QUkVERUZJTkVEIHRhZ3MuCisKK0VYUEFORF9PTkxZX1BSRURFRiAgICAgPSBOTworCisjIElmIHRoZSBTRUFSQ0hfSU5DTFVERVMgdGFnIGlzIHNldCB0byBZRVMgKHRoZSBkZWZhdWx0KSB0aGUgaW5jbHVkZXMgZmlsZXMgCisjIGluIHRoZSBJTkNMVURFX1BBVEggKHNlZSBiZWxvdykgd2lsbCBiZSBzZWFyY2ggaWYgYSAjaW5jbHVkZSBpcyBmb3VuZC4KKworU0VBUkNIX0lOQ0xVREVTICAgICAgICA9IFlFUworCisjIFRoZSBJTkNMVURFX1BBVEggdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgZGlyZWN0b3JpZXMgdGhhdCAKKyMgY29udGFpbiBpbmNsdWRlIGZpbGVzIHRoYXQgYXJlIG5vdCBpbnB1dCBmaWxlcyBidXQgc2hvdWxkIGJlIHByb2Nlc3NlZCBieSAKKyMgdGhlIHByZXByb2Nlc3Nvci4KKworSU5DTFVERV9QQVRIICAgICAgICAgICA9IAorCisjIFlvdSBjYW4gdXNlIHRoZSBJTkNMVURFX0ZJTEVfUEFUVEVSTlMgdGFnIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgd2lsZGNhcmQgCisjIHBhdHRlcm5zIChsaWtlICouaCBhbmQgKi5ocHApIHRvIGZpbHRlciBvdXQgdGhlIGhlYWRlci1maWxlcyBpbiB0aGUgCisjIGRpcmVjdG9yaWVzLiBJZiBsZWZ0IGJsYW5rLCB0aGUgcGF0dGVybnMgc3BlY2lmaWVkIHdpdGggRklMRV9QQVRURVJOUyB3aWxsIAorIyBiZSB1c2VkLgorCitJTkNMVURFX0ZJTEVfUEFUVEVSTlMgID0gCisKKyMgVGhlIFBSRURFRklORUQgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgbWFjcm8gbmFtZXMgdGhhdCAKKyMgYXJlIGRlZmluZWQgYmVmb3JlIHRoZSBwcmVwcm9jZXNzb3IgaXMgc3RhcnRlZCAoc2ltaWxhciB0byB0aGUgLUQgb3B0aW9uIG9mIAorIyBnY2MpLiBUaGUgYXJndW1lbnQgb2YgdGhlIHRhZyBpcyBhIGxpc3Qgb2YgbWFjcm9zIG9mIHRoZSBmb3JtOiBuYW1lIAorIyBvciBuYW1lPWRlZmluaXRpb24gKG5vIHNwYWNlcykuIElmIHRoZSBkZWZpbml0aW9uIGFuZCB0aGUgPSBhcmUgCisjIG9taXR0ZWQgPTEgaXMgYXNzdW1lZC4gVG8gcHJldmVudCBhIG1hY3JvIGRlZmluaXRpb24gZnJvbSBiZWluZyAKKyMgdW5kZWZpbmVkIHZpYSAjdW5kZWYgb3IgcmVjdXJzaXZlbHkgZXhwYW5kZWQgdXNlIHRoZSA6PSBvcGVyYXRvciAKKyMgaW5zdGVhZCBvZiB0aGUgPSBvcGVyYXRvci4KKworUFJFREVGSU5FRCAgICAgICAgICAgICA9IEhBVkVfT1BFTlNTTD0wIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBIQVZFX1dJTkNBUEk9MAorCisjIElmIHRoZSBNQUNST19FWFBBTlNJT04gYW5kIEVYUEFORF9PTkxZX1BSRURFRiB0YWdzIGFyZSBzZXQgdG8gWUVTIHRoZW4gCisjIHRoaXMgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBsaXN0IG9mIG1hY3JvIG5hbWVzIHRoYXQgc2hvdWxkIGJlIGV4cGFuZGVkLiAKKyMgVGhlIG1hY3JvIGRlZmluaXRpb24gdGhhdCBpcyBmb3VuZCBpbiB0aGUgc291cmNlcyB3aWxsIGJlIHVzZWQuIAorIyBVc2UgdGhlIFBSRURFRklORUQgdGFnIGlmIHlvdSB3YW50IHRvIHVzZSBhIGRpZmZlcmVudCBtYWNybyBkZWZpbml0aW9uLgorCitFWFBBTkRfQVNfREVGSU5FRCAgICAgID0gCisKKyMgSWYgdGhlIFNLSVBfRlVOQ1RJT05fTUFDUk9TIHRhZyBpcyBzZXQgdG8gWUVTICh0aGUgZGVmYXVsdCkgdGhlbiAKKyMgZG94eWdlbidzIHByZXByb2Nlc3NvciB3aWxsIHJlbW92ZSBhbGwgZnVuY3Rpb24tbGlrZSBtYWNyb3MgdGhhdCBhcmUgYWxvbmUgCisjIG9uIGEgbGluZSwgaGF2ZSBhbiBhbGwgdXBwZXJjYXNlIG5hbWUsIGFuZCBkbyBub3QgZW5kIHdpdGggYSBzZW1pY29sb24uIFN1Y2ggCisjIGZ1bmN0aW9uIG1hY3JvcyBhcmUgdHlwaWNhbGx5IHVzZWQgZm9yIGJvaWxlci1wbGF0ZSBjb2RlLCBhbmQgd2lsbCBjb25mdXNlIAorIyB0aGUgcGFyc2VyIGlmIG5vdCByZW1vdmVkLgorCitTS0lQX0ZVTkNUSU9OX01BQ1JPUyAgID0gWUVTCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29uZmlndXJhdGlvbjo6YWRkaXRpb25zIHJlbGF0ZWQgdG8gZXh0ZXJuYWwgcmVmZXJlbmNlcyAgIAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIFRoZSBUQUdGSUxFUyBvcHRpb24gY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSB0YWdmaWxlcy4gCisjIE9wdGlvbmFsbHkgYW4gaW5pdGlhbCBsb2NhdGlvbiBvZiB0aGUgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbiAKKyMgY2FuIGJlIGFkZGVkIGZvciBlYWNoIHRhZ2ZpbGUuIFRoZSBmb3JtYXQgb2YgYSB0YWcgZmlsZSB3aXRob3V0IAorIyB0aGlzIGxvY2F0aW9uIGlzIGFzIGZvbGxvd3M6IAorIyAgIFRBR0ZJTEVTID0gZmlsZTEgZmlsZTIgLi4uIAorIyBBZGRpbmcgbG9jYXRpb24gZm9yIHRoZSB0YWcgZmlsZXMgaXMgZG9uZSBhcyBmb2xsb3dzOiAKKyMgICBUQUdGSUxFUyA9IGZpbGUxPWxvYzEgImZpbGUyID0gbG9jMiIgLi4uIAorIyB3aGVyZSAibG9jMSIgYW5kICJsb2MyIiBjYW4gYmUgcmVsYXRpdmUgb3IgYWJzb2x1dGUgcGF0aHMgb3IgCisjIFVSTHMuIElmIGEgbG9jYXRpb24gaXMgcHJlc2VudCBmb3IgZWFjaCB0YWcsIHRoZSBpbnN0YWxsZG94IHRvb2wgCisjIGRvZXMgbm90IGhhdmUgdG8gYmUgcnVuIHRvIGNvcnJlY3QgdGhlIGxpbmtzLgorIyBOb3RlIHRoYXQgZWFjaCB0YWcgZmlsZSBtdXN0IGhhdmUgYSB1bmlxdWUgbmFtZQorIyAod2hlcmUgdGhlIG5hbWUgZG9lcyBOT1QgaW5jbHVkZSB0aGUgcGF0aCkKKyMgSWYgYSB0YWcgZmlsZSBpcyBub3QgbG9jYXRlZCBpbiB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIGRveHlnZW4gCisjIGlzIHJ1biwgeW91IG11c3QgYWxzbyBzcGVjaWZ5IHRoZSBwYXRoIHRvIHRoZSB0YWdmaWxlIGhlcmUuCisKK1RBR0ZJTEVTICAgICAgICAgICAgICAgPSAKKworIyBXaGVuIGEgZmlsZSBuYW1lIGlzIHNwZWNpZmllZCBhZnRlciBHRU5FUkFURV9UQUdGSUxFLCBkb3h5Z2VuIHdpbGwgY3JlYXRlIAorIyBhIHRhZyBmaWxlIHRoYXQgaXMgYmFzZWQgb24gdGhlIGlucHV0IGZpbGVzIGl0IHJlYWRzLgorCitHRU5FUkFURV9UQUdGSUxFICAgICAgID0gCisKKyMgSWYgdGhlIEFMTEVYVEVSTkFMUyB0YWcgaXMgc2V0IHRvIFlFUyBhbGwgZXh0ZXJuYWwgY2xhc3NlcyB3aWxsIGJlIGxpc3RlZCAKKyMgaW4gdGhlIGNsYXNzIGluZGV4LiBJZiBzZXQgdG8gTk8gb25seSB0aGUgaW5oZXJpdGVkIGV4dGVybmFsIGNsYXNzZXMgCisjIHdpbGwgYmUgbGlzdGVkLgorCitBTExFWFRFUk5BTFMgICAgICAgICAgID0gTk8KKworIyBJZiB0aGUgRVhURVJOQUxfR1JPVVBTIHRhZyBpcyBzZXQgdG8gWUVTIGFsbCBleHRlcm5hbCBncm91cHMgd2lsbCBiZSBsaXN0ZWQgCisjIGluIHRoZSBtb2R1bGVzIGluZGV4LiBJZiBzZXQgdG8gTk8sIG9ubHkgdGhlIGN1cnJlbnQgcHJvamVjdCdzIGdyb3VwcyB3aWxsIAorIyBiZSBsaXN0ZWQuCisKK0VYVEVSTkFMX0dST1VQUyAgICAgICAgPSBZRVMKKworIyBUaGUgUEVSTF9QQVRIIHNob3VsZCBiZSB0aGUgYWJzb2x1dGUgcGF0aCBhbmQgbmFtZSBvZiB0aGUgcGVybCBzY3JpcHQgCisjIGludGVycHJldGVyIChpLmUuIHRoZSByZXN1bHQgb2YgYHdoaWNoIHBlcmwnKS4KKworUEVSTF9QQVRIICAgICAgICAgICAgICA9IC91c3IvYmluL3BlcmwKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgZG90IHRvb2wgICAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBJZiB0aGUgQ0xBU1NfRElBR1JBTVMgdGFnIGlzIHNldCB0byBZRVMgKHRoZSBkZWZhdWx0KSBEb3h5Z2VuIHdpbGwgCisjIGdlbmVyYXRlIGEgaW5oZXJpdGFuY2UgZGlhZ3JhbSAoaW4gSFRNTCwgUlRGIGFuZCBMYVRlWCkgZm9yIGNsYXNzZXMgd2l0aCBiYXNlIAorIyBvciBzdXBlciBjbGFzc2VzLiBTZXR0aW5nIHRoZSB0YWcgdG8gTk8gdHVybnMgdGhlIGRpYWdyYW1zIG9mZi4gTm90ZSB0aGF0IAorIyB0aGlzIG9wdGlvbiBpcyBzdXBlcnNlZGVkIGJ5IHRoZSBIQVZFX0RPVCBvcHRpb24gYmVsb3cuIFRoaXMgaXMgb25seSBhIAorIyBmYWxsYmFjay4gSXQgaXMgcmVjb21tZW5kZWQgdG8gaW5zdGFsbCBhbmQgdXNlIGRvdCwgc2luY2UgaXQgeWllbGRzIG1vcmUgCisjIHBvd2VyZnVsIGdyYXBocy4KKworQ0xBU1NfRElBR1JBTVMgICAgICAgICA9IFlFUworCisjIElmIHNldCB0byBZRVMsIHRoZSBpbmhlcml0YW5jZSBhbmQgY29sbGFib3JhdGlvbiBncmFwaHMgd2lsbCBoaWRlIAorIyBpbmhlcml0YW5jZSBhbmQgdXNhZ2UgcmVsYXRpb25zIGlmIHRoZSB0YXJnZXQgaXMgdW5kb2N1bWVudGVkIAorIyBvciBpcyBub3QgYSBjbGFzcy4KKworSElERV9VTkRPQ19SRUxBVElPTlMgICA9IFlFUworCisjIElmIHlvdSBzZXQgdGhlIEhBVkVfRE9UIHRhZyB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgYXNzdW1lIHRoZSBkb3QgdG9vbCBpcyAKKyMgYXZhaWxhYmxlIGZyb20gdGhlIHBhdGguIFRoaXMgdG9vbCBpcyBwYXJ0IG9mIEdyYXBodml6LCBhIGdyYXBoIHZpc3VhbGl6YXRpb24gCisjIHRvb2xraXQgZnJvbSBBVCZUIGFuZCBMdWNlbnQgQmVsbCBMYWJzLiBUaGUgb3RoZXIgb3B0aW9ucyBpbiB0aGlzIHNlY3Rpb24gCisjIGhhdmUgbm8gZWZmZWN0IGlmIHRoaXMgb3B0aW9uIGlzIHNldCB0byBOTyAodGhlIGRlZmF1bHQpCisKK0hBVkVfRE9UICAgICAgICAgICAgICAgPSBZRVMKKworIyBJZiB0aGUgQ0xBU1NfR1JBUEggYW5kIEhBVkVfRE9UIHRhZ3MgYXJlIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIAorIyB3aWxsIGdlbmVyYXRlIGEgZ3JhcGggZm9yIGVhY2ggZG9jdW1lbnRlZCBjbGFzcyBzaG93aW5nIHRoZSBkaXJlY3QgYW5kIAorIyBpbmRpcmVjdCBpbmhlcml0YW5jZSByZWxhdGlvbnMuIFNldHRpbmcgdGhpcyB0YWcgdG8gWUVTIHdpbGwgZm9yY2UgdGhlIAorIyB0aGUgQ0xBU1NfRElBR1JBTVMgdGFnIHRvIE5PLgorCitDTEFTU19HUkFQSCAgICAgICAgICAgID0gWUVTCisKKyMgSWYgdGhlIENPTExBQk9SQVRJT05fR1JBUEggYW5kIEhBVkVfRE9UIHRhZ3MgYXJlIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIAorIyB3aWxsIGdlbmVyYXRlIGEgZ3JhcGggZm9yIGVhY2ggZG9jdW1lbnRlZCBjbGFzcyBzaG93aW5nIHRoZSBkaXJlY3QgYW5kIAorIyBpbmRpcmVjdCBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbmNpZXMgKGluaGVyaXRhbmNlLCBjb250YWlubWVudCwgYW5kIAorIyBjbGFzcyByZWZlcmVuY2VzIHZhcmlhYmxlcykgb2YgdGhlIGNsYXNzIHdpdGggb3RoZXIgZG9jdW1lbnRlZCBjbGFzc2VzLgorCitDT0xMQUJPUkFUSU9OX0dSQVBIICAgID0gWUVTCisKKyMgSWYgdGhlIEdST1VQX0dSQVBIUyBhbmQgSEFWRV9ET1QgdGFncyBhcmUgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gCisjIHdpbGwgZ2VuZXJhdGUgYSBncmFwaCBmb3IgZ3JvdXBzLCBzaG93aW5nIHRoZSBkaXJlY3QgZ3JvdXBzIGRlcGVuZGVuY2llcworCitHUk9VUF9HUkFQSFMgICAgICAgICAgID0gWUVTCisKKyMgSWYgdGhlIFVNTF9MT09LIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBpbmhlcml0YW5jZSBhbmQgCisjIGNvbGxhYm9yYXRpb24gZGlhZ3JhbXMgaW4gYSBzdHlsZSBzaW1pbGFyIHRvIHRoZSBPTUcncyBVbmlmaWVkIE1vZGVsaW5nIAorIyBMYW5ndWFnZS4KKworVU1MX0xPT0sgICAgICAgICAgICAgICA9IE5PCisKKyMgSWYgc2V0IHRvIFlFUywgdGhlIGluaGVyaXRhbmNlIGFuZCBjb2xsYWJvcmF0aW9uIGdyYXBocyB3aWxsIHNob3cgdGhlIAorIyByZWxhdGlvbnMgYmV0d2VlbiB0ZW1wbGF0ZXMgYW5kIHRoZWlyIGluc3RhbmNlcy4KKworVEVNUExBVEVfUkVMQVRJT05TICAgICA9IFlFUworCisjIElmIHRoZSBFTkFCTEVfUFJFUFJPQ0VTU0lORywgU0VBUkNIX0lOQ0xVREVTLCBJTkNMVURFX0dSQVBILCBhbmQgSEFWRV9ET1QgCisjIHRhZ3MgYXJlIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBncmFwaCBmb3IgZWFjaCBkb2N1bWVudGVkIAorIyBmaWxlIHNob3dpbmcgdGhlIGRpcmVjdCBhbmQgaW5kaXJlY3QgaW5jbHVkZSBkZXBlbmRlbmNpZXMgb2YgdGhlIGZpbGUgd2l0aCAKKyMgb3RoZXIgZG9jdW1lbnRlZCBmaWxlcy4KKworSU5DTFVERV9HUkFQSCAgICAgICAgICA9IFlFUworCisjIElmIHRoZSBFTkFCTEVfUFJFUFJPQ0VTU0lORywgU0VBUkNIX0lOQ0xVREVTLCBJTkNMVURFRF9CWV9HUkFQSCwgYW5kIAorIyBIQVZFX0RPVCB0YWdzIGFyZSBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgZ3JhcGggZm9yIGVhY2ggCisjIGRvY3VtZW50ZWQgaGVhZGVyIGZpbGUgc2hvd2luZyB0aGUgZG9jdW1lbnRlZCBmaWxlcyB0aGF0IGRpcmVjdGx5IG9yIAorIyBpbmRpcmVjdGx5IGluY2x1ZGUgdGhpcyBmaWxlLgorCitJTkNMVURFRF9CWV9HUkFQSCAgICAgID0gWUVTCisKKyMgSWYgdGhlIENBTExfR1JBUEggYW5kIEhBVkVfRE9UIHRhZ3MgYXJlIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgCisjIGdlbmVyYXRlIGEgY2FsbCBkZXBlbmRlbmN5IGdyYXBoIGZvciBldmVyeSBnbG9iYWwgZnVuY3Rpb24gb3IgY2xhc3MgbWV0aG9kLiAKKyMgTm90ZSB0aGF0IGVuYWJsaW5nIHRoaXMgb3B0aW9uIHdpbGwgc2lnbmlmaWNhbnRseSBpbmNyZWFzZSB0aGUgdGltZSBvZiBhIHJ1bi4gCisjIFNvIGluIG1vc3QgY2FzZXMgaXQgd2lsbCBiZSBiZXR0ZXIgdG8gZW5hYmxlIGNhbGwgZ3JhcGhzIGZvciBzZWxlY3RlZCAKKyMgZnVuY3Rpb25zIG9ubHkgdXNpbmcgdGhlIFxjYWxsZ3JhcGggY29tbWFuZC4KKworQ0FMTF9HUkFQSCAgICAgICAgICAgICA9IE5PCisKKyMgSWYgdGhlIEdSQVBISUNBTF9ISUVSQVJDSFkgYW5kIEhBVkVfRE9UIHRhZ3MgYXJlIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIAorIyB3aWxsIGdyYXBoaWNhbCBoaWVyYXJjaHkgb2YgYWxsIGNsYXNzZXMgaW5zdGVhZCBvZiBhIHRleHR1YWwgb25lLgorCitHUkFQSElDQUxfSElFUkFSQ0hZICAgID0gWUVTCisKKyMgSWYgdGhlIERJUkVDVE9SWV9HUkFQSCwgU0hPV19ESVJFQ1RPUklFUyBhbmQgSEFWRV9ET1QgdGFncyBhcmUgc2V0IHRvIFlFUyAKKyMgdGhlbiBkb3h5Z2VuIHdpbGwgc2hvdyB0aGUgZGVwZW5kZW5jaWVzIGEgZGlyZWN0b3J5IGhhcyBvbiBvdGhlciBkaXJlY3RvcmllcyAKKyMgaW4gYSBncmFwaGljYWwgd2F5LiBUaGUgZGVwZW5kZW5jeSByZWxhdGlvbnMgYXJlIGRldGVybWluZWQgYnkgdGhlICNpbmNsdWRlCisjIHJlbGF0aW9ucyBiZXR3ZWVuIHRoZSBmaWxlcyBpbiB0aGUgZGlyZWN0b3JpZXMuCisKK0RJUkVDVE9SWV9HUkFQSCAgICAgICAgPSBZRVMKKworIyBUaGUgRE9UX0lNQUdFX0ZPUk1BVCB0YWcgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBpbWFnZSBmb3JtYXQgb2YgdGhlIGltYWdlcyAKKyMgZ2VuZXJhdGVkIGJ5IGRvdC4gUG9zc2libGUgdmFsdWVzIGFyZSBwbmcsIGpwZywgb3IgZ2lmCisjIElmIGxlZnQgYmxhbmsgcG5nIHdpbGwgYmUgdXNlZC4KKworRE9UX0lNQUdFX0ZPUk1BVCAgICAgICA9IHBuZworCisjIFRoZSB0YWcgRE9UX1BBVEggY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgcGF0aCB3aGVyZSB0aGUgZG90IHRvb2wgY2FuIGJlIAorIyBmb3VuZC4gSWYgbGVmdCBibGFuaywgaXQgaXMgYXNzdW1lZCB0aGUgZG90IHRvb2wgY2FuIGJlIGZvdW5kIGluIHRoZSBwYXRoLgorCitET1RfUEFUSCAgICAgICAgICAgICAgID0gCisKKyMgVGhlIERPVEZJTEVfRElSUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBkaXJlY3RvcmllcyB0aGF0IAorIyBjb250YWluIGRvdCBmaWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiAoc2VlIHRoZSAKKyMgXGRvdGZpbGUgY29tbWFuZCkuCisKK0RPVEZJTEVfRElSUyAgICAgICAgICAgPSAKKworIyBUaGUgTUFYX0RPVF9HUkFQSF9XSURUSCB0YWcgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBtYXhpbXVtIGFsbG93ZWQgd2lkdGggCisjIChpbiBwaXhlbHMpIG9mIHRoZSBncmFwaHMgZ2VuZXJhdGVkIGJ5IGRvdC4gSWYgYSBncmFwaCBiZWNvbWVzIGxhcmdlciB0aGFuIAorIyB0aGlzIHZhbHVlLCBkb3h5Z2VuIHdpbGwgdHJ5IHRvIHRydW5jYXRlIHRoZSBncmFwaCwgc28gdGhhdCBpdCBmaXRzIHdpdGhpbiAKKyMgdGhlIHNwZWNpZmllZCBjb25zdHJhaW50LiBCZXdhcmUgdGhhdCBtb3N0IGJyb3dzZXJzIGNhbm5vdCBjb3BlIHdpdGggdmVyeSAKKyMgbGFyZ2UgaW1hZ2VzLgorCitNQVhfRE9UX0dSQVBIX1dJRFRIICAgID0gMTAyNAorCisjIFRoZSBNQVhfRE9UX0dSQVBIX0hFSUdIVCB0YWcgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBtYXhpbXVtIGFsbG93cyBoZWlnaHQgCisjIChpbiBwaXhlbHMpIG9mIHRoZSBncmFwaHMgZ2VuZXJhdGVkIGJ5IGRvdC4gSWYgYSBncmFwaCBiZWNvbWVzIGxhcmdlciB0aGFuIAorIyB0aGlzIHZhbHVlLCBkb3h5Z2VuIHdpbGwgdHJ5IHRvIHRydW5jYXRlIHRoZSBncmFwaCwgc28gdGhhdCBpdCBmaXRzIHdpdGhpbiAKKyMgdGhlIHNwZWNpZmllZCBjb25zdHJhaW50LiBCZXdhcmUgdGhhdCBtb3N0IGJyb3dzZXJzIGNhbm5vdCBjb3BlIHdpdGggdmVyeSAKKyMgbGFyZ2UgaW1hZ2VzLgorCitNQVhfRE9UX0dSQVBIX0hFSUdIVCAgID0gMTAyNAorCisjIFRoZSBNQVhfRE9UX0dSQVBIX0RFUFRIIHRhZyBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIG1heGltdW0gZGVwdGggb2YgdGhlIAorIyBncmFwaHMgZ2VuZXJhdGVkIGJ5IGRvdC4gQSBkZXB0aCB2YWx1ZSBvZiAzIG1lYW5zIHRoYXQgb25seSBub2RlcyByZWFjaGFibGUgCisjIGZyb20gdGhlIHJvb3QgYnkgZm9sbG93aW5nIGEgcGF0aCB2aWEgYXQgbW9zdCAzIGVkZ2VzIHdpbGwgYmUgc2hvd24uIE5vZGVzIAorIyB0aGF0IGxheSBmdXJ0aGVyIGZyb20gdGhlIHJvb3Qgbm9kZSB3aWxsIGJlIG9taXR0ZWQuIE5vdGUgdGhhdCBzZXR0aW5nIHRoaXMgCisjIG9wdGlvbiB0byAxIG9yIDIgbWF5IGdyZWF0bHkgcmVkdWNlIHRoZSBjb21wdXRhdGlvbiB0aW1lIG5lZWRlZCBmb3IgbGFyZ2UgCisjIGNvZGUgYmFzZXMuIEFsc28gbm90ZSB0aGF0IGEgZ3JhcGggbWF5IGJlIGZ1cnRoZXIgdHJ1bmNhdGVkIGlmIHRoZSBncmFwaCdzIAorIyBpbWFnZSBkaW1lbnNpb25zIGFyZSBub3Qgc3VmZmljaWVudCB0byBmaXQgdGhlIGdyYXBoIChzZWUgTUFYX0RPVF9HUkFQSF9XSURUSCAKKyMgYW5kIE1BWF9ET1RfR1JBUEhfSEVJR0hUKS4gSWYgMCBpcyB1c2VkIGZvciB0aGUgZGVwdGggdmFsdWUgKHRoZSBkZWZhdWx0KSwgCisjIHRoZSBncmFwaCBpcyBub3QgZGVwdGgtY29uc3RyYWluZWQuCisKK01BWF9ET1RfR1JBUEhfREVQVEggICAgPSAwCisKKyMgU2V0IHRoZSBET1RfVFJBTlNQQVJFTlQgdGFnIHRvIFlFUyB0byBnZW5lcmF0ZSBpbWFnZXMgd2l0aCBhIHRyYW5zcGFyZW50IAorIyBiYWNrZ3JvdW5kLiBUaGlzIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQsIHdoaWNoIHJlc3VsdHMgaW4gYSB3aGl0ZSBiYWNrZ3JvdW5kLiAKKyMgV2FybmluZzogRGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybSB1c2VkLCBlbmFibGluZyB0aGlzIG9wdGlvbiBtYXkgbGVhZCB0byAKKyMgYmFkbHkgYW50aS1hbGlhc2VkIGxhYmVscyBvbiB0aGUgZWRnZXMgb2YgYSBncmFwaCAoaS5lLiB0aGV5IGJlY29tZSBoYXJkIHRvIAorIyByZWFkKS4KKworRE9UX1RSQU5TUEFSRU5UICAgICAgICA9IE5PCisKKyMgU2V0IHRoZSBET1RfTVVMVElfVEFSR0VUUyB0YWcgdG8gWUVTIGFsbG93IGRvdCB0byBnZW5lcmF0ZSBtdWx0aXBsZSBvdXRwdXQgCisjIGZpbGVzIGluIG9uZSBydW4gKGkuZS4gbXVsdGlwbGUgLW8gYW5kIC1UIG9wdGlvbnMgb24gdGhlIGNvbW1hbmQgbGluZSkuIFRoaXMgCisjIG1ha2VzIGRvdCBydW4gZmFzdGVyLCBidXQgc2luY2Ugb25seSBuZXdlciB2ZXJzaW9ucyBvZiBkb3QgKD4xLjguMTApIAorIyBzdXBwb3J0IHRoaXMsIHRoaXMgZmVhdHVyZSBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgorCitET1RfTVVMVElfVEFSR0VUUyAgICAgID0gTk8KKworIyBJZiB0aGUgR0VORVJBVEVfTEVHRU5EIHRhZyBpcyBzZXQgdG8gWUVTICh0aGUgZGVmYXVsdCkgRG94eWdlbiB3aWxsIAorIyBnZW5lcmF0ZSBhIGxlZ2VuZCBwYWdlIGV4cGxhaW5pbmcgdGhlIG1lYW5pbmcgb2YgdGhlIHZhcmlvdXMgYm94ZXMgYW5kIAorIyBhcnJvd3MgaW4gdGhlIGRvdCBnZW5lcmF0ZWQgZ3JhcGhzLgorCitHRU5FUkFURV9MRUdFTkQgICAgICAgID0gWUVTCisKKyMgSWYgdGhlIERPVF9DTEVBTlVQIHRhZyBpcyBzZXQgdG8gWUVTICh0aGUgZGVmYXVsdCkgRG94eWdlbiB3aWxsIAorIyByZW1vdmUgdGhlIGludGVybWVkaWF0ZSBkb3QgZmlsZXMgdGhhdCBhcmUgdXNlZCB0byBnZW5lcmF0ZSAKKyMgdGhlIHZhcmlvdXMgZ3JhcGhzLgorCitET1RfQ0xFQU5VUCAgICAgICAgICAgID0gWUVTCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29uZmlndXJhdGlvbjo6YWRkaXRpb25zIHJlbGF0ZWQgdG8gdGhlIHNlYXJjaCBlbmdpbmUgICAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBUaGUgU0VBUkNIRU5HSU5FIHRhZyBzcGVjaWZpZXMgd2hldGhlciBvciBub3QgYSBzZWFyY2ggZW5naW5lIHNob3VsZCBiZSAKKyMgdXNlZC4gSWYgc2V0IHRvIE5PIHRoZSB2YWx1ZXMgb2YgYWxsIHRhZ3MgYmVsb3cgdGhpcyBvbmUgd2lsbCBiZSBpZ25vcmVkLgorCitTRUFSQ0hFTkdJTkUgICAgICAgICAgID0gTk8KZGlmZiAtLWdpdCBhL2MvaW5jbHVkZS9NYWtlZmlsZS5hbSBiL2MvaW5jbHVkZS9NYWtlZmlsZS5hbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDE5YmY3Ci0tLSAvZGV2L251bGwKKysrIGIvYy9pbmNsdWRlL01ha2VmaWxlLmFtCkBAIC0wLDAgKzEsMjQwIEBACisjCisjIENvcHlyaWdodCAyMDA2LTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorIworIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyMKKyMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMKKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyMKKworQlVJTFRfU09VUkNFUyA9ICR7bGliX2luY2x1ZGVzfQorbm9iYXNlX2luY2x1ZGVfSEVBREVSUyA9ICR7bGliX2luY2x1ZGVzfQorCitsaWJfaW5jbHVkZXMgPSAKKworIyBUaGUgcmVxdWlyZWQgaW5jbHVkZSBmaWxlcworCisjICAgICAgIEEgbGluZSBsaWtlIHRoZSBmb2xsb3dpbmcgd2lsbCBnZW5lcmF0ZSBhIGxpc3Qgb2YgaGVhZGVycworIyAgICAgICBmb3IgYSBnaXZlbiBkaXJlY3Rvcnk6IChtdXN0IGJlIGlzc3VlZCBmcm9tIGJhc2UgZGlyZWN0b3J5KQorIworIyBmaW5kIHNyYy9mcmFtZXdvcmsgLW5hbWUgJyouaHBwJyAtZXhlYyBlY2hvIHt9IFxcICI7IiB8IHNlZCAicy9zcmMvICB4c2VjL2ciCisKKyMgQ2Fub24KKworbGliX2luY2x1ZGVzICs9IFwKKyAgeHNlYy9jYW5vbi9YU0VDWE1MTlNTdGFjay5ocHAgXAorICB4c2VjL2Nhbm9uL1hTRUNDYW5vbi5ocHAgXAorICB4c2VjL2Nhbm9uL1hTRUNDMTRuMjAwMTAzMTUuaHBwCisKKyMgZW5jCisKK2xpYl9pbmNsdWRlcyArPSBcCisgIHhzZWMvZW5jL1hTRUNDcnlwdG9LZXlITUFDLmhwcCBcCisgIHhzZWMvZW5jL1hTRUNDcnlwdG9YNTA5LmhwcCBcCisgIHhzZWMvZW5jL1hTRUNDcnlwdG9LZXlEU0EuaHBwIFwKKyAgeHNlYy9lbmMvWFNFQ0NyeXB0b0tleUVDLmhwcCBcCisgIHhzZWMvZW5jL1hTRUNLZXlJbmZvUmVzb2x2ZXIuaHBwIFwKKyAgeHNlYy9lbmMvWFNFQ0NyeXB0b0hhc2guaHBwIFwKKyAgeHNlYy9lbmMvWFNFQ0NyeXB0b0Jhc2U2NC5ocHAgXAorICB4c2VjL2VuYy9YU0VDQ3J5cHRvU3ltbWV0cmljS2V5LmhwcCBcCisgIHhzZWMvZW5jL1hTRUNDcnlwdG9LZXkuaHBwIFwKKyAgeHNlYy9lbmMvWFNFQ0NyeXB0b1Byb3ZpZGVyLmhwcCBcCisgIHhzZWMvZW5jL1hTRUNLZXlJbmZvUmVzb2x2ZXJEZWZhdWx0LmhwcCBcCisgIHhzZWMvZW5jL1hTRUNDcnlwdG9LZXlSU0EuaHBwIFwKKyAgeHNlYy9lbmMvWFNFQ0NyeXB0b0V4Y2VwdGlvbi5ocHAgXAorICB4c2VjL2VuYy9YU0VDQ3J5cHRvVXRpbHMuaHBwCisKK2xpYl9pbmNsdWRlcyArPSBcCisgIHhzZWMvZW5jL1hTQ3J5cHQvWFNDcnlwdENyeXB0b0Jhc2U2NC5ocHAKKworbGliX2luY2x1ZGVzICs9IFwKKyAgeHNlYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvQmFzZTY0LmhwcCBcCisgIHhzZWMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b1N5bW1ldHJpY0tleS5ocHAgXAorICB4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9Qcm92aWRlci5ocHAgXAorICB4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9LZXlSU0EuaHBwIFwKKyAgeHNlYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvWDUwOS5ocHAgXAorICB4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9IYXNoSE1BQy5ocHAgXAorICB4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9LZXlEU0EuaHBwIFwKKyAgeHNlYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvS2V5RUMuaHBwIFwKKyAgeHNlYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvS2V5SE1BQy5ocHAgXAorICB4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9IYXNoLmhwcCAKKworbGliX2luY2x1ZGVzICs9IFwKKyAgeHNlYy9lbmMvTlNTL05TU0NyeXB0b1g1MDkuaHBwIFwKKyAgeHNlYy9lbmMvTlNTL05TU0NyeXB0b0hhc2hITUFDLmhwcCBcCisgIHhzZWMvZW5jL05TUy9OU1NDcnlwdG9LZXlEU0EuaHBwIFwKKyAgeHNlYy9lbmMvTlNTL05TU0NyeXB0b0tleUhNQUMuaHBwIFwKKyAgeHNlYy9lbmMvTlNTL05TU0NyeXB0b0hhc2guaHBwIFwKKyAgeHNlYy9lbmMvTlNTL05TU0NyeXB0b1N5bW1ldHJpY0tleS5ocHAgXAorICB4c2VjL2VuYy9OU1MvTlNTQ3J5cHRvUHJvdmlkZXIuaHBwIFwKKyAgeHNlYy9lbmMvTlNTL05TU0NyeXB0b0tleVJTQS5ocHAgCisKKyMgZHNpZworCitsaWJfaW5jbHVkZXMgKz0gXAorICB4c2VjL2RzaWcvRFNJR0tleUluZm9TUEtJRGF0YS5ocHAgXAorICB4c2VjL2RzaWcvRFNJR1hQYXRoSGVyZS5ocHAgXAorICB4c2VjL2RzaWcvRFNJR0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0LmhwcCBcCisgIHhzZWMvZHNpZy9EU0lHWFBhdGhGaWx0ZXJFeHByLmhwcCBcCisgIHhzZWMvZHNpZy9EU0lHS2V5SW5mb1g1MDkuaHBwIFwKKyAgeHNlYy9kc2lnL0RTSUdLZXlJbmZvTGlzdC5ocHAgXAorICB4c2VjL2RzaWcvRFNJR0tleUluZm9WYWx1ZS5ocHAgXAorICB4c2VjL2RzaWcvRFNJR0tleUluZm9ERVJFbmNvZGVkLmhwcCBcCisgIHhzZWMvZHNpZy9EU0lHVHJhbnNmb3JtQzE0bi5ocHAgXAorICB4c2VjL2RzaWcvRFNJR1RyYW5zZm9ybVhTTC5ocHAgXAorICB4c2VjL2RzaWcvRFNJR0tleUluZm8uaHBwIFwKKyAgeHNlYy9kc2lnL0RTSUdLZXlJbmZvUEdQRGF0YS5ocHAgXAorICB4c2VjL2RzaWcvRFNJR0tleUluZm9FeHQuaHBwIFwKKyAgeHNlYy9kc2lnL0RTSUdPYmplY3QuaHBwIFwKKyAgeHNlYy9kc2lnL0RTSUdUcmFuc2Zvcm1MaXN0LmhwcCBcCisgIHhzZWMvZHNpZy9EU0lHVHJhbnNmb3JtLmhwcCBcCisgIHhzZWMvZHNpZy9EU0lHVHJhbnNmb3JtQmFzZTY0LmhwcCBcCisgIHhzZWMvZHNpZy9EU0lHVHJhbnNmb3JtWFBhdGguaHBwIFwKKyAgeHNlYy9kc2lnL0RTSUdLZXlJbmZvTWdtdERhdGEuaHBwIFwKKyAgeHNlYy9kc2lnL0RTSUdTaWduZWRJbmZvLmhwcCBcCisgIHhzZWMvZHNpZy9EU0lHVHJhbnNmb3JtWFBhdGhGaWx0ZXIuaHBwIFwKKyAgeHNlYy9kc2lnL0RTSUdSZWZlcmVuY2VMaXN0LmhwcCBcCisgIHhzZWMvZHNpZy9EU0lHUmVmZXJlbmNlLmhwcCBcCisgIHhzZWMvZHNpZy9EU0lHU2lnbmF0dXJlLmhwcCBcCisgIHhzZWMvZHNpZy9EU0lHS2V5SW5mb05hbWUuaHBwIFwKKyAgeHNlYy9kc2lnL0RTSUdUcmFuc2Zvcm1FbnZlbG9wZS5ocHAgXAorICB4c2VjL2RzaWcvRFNJR0NvbnN0YW50cy5ocHAKKworIyBmcmFtZXdvcmsKK2xpYl9pbmNsdWRlcyArPSBcCisgIHhzZWMvZnJhbWV3b3JrL1hTRUNBbGdvcml0aG1IYW5kbGVyLmhwcCBcCisgIHhzZWMvZnJhbWV3b3JrL1hTRUNVUklSZXNvbHZlci5ocHAgXAorICB4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHAgXAorICB4c2VjL2ZyYW1ld29yay9YU0VDRW52LmhwcCBcCisgIHhzZWMvZnJhbWV3b3JrL1hTRUNFeGNlcHRpb24uaHBwIFwKKyAgeHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcCBcCisgIHhzZWMvZnJhbWV3b3JrL1hTRUNQcm92aWRlci5ocHAgXAorICB4c2VjL2ZyYW1ld29yay9YU0VDQ29uZmlnLmhwcCBcCisgIHhzZWMvZnJhbWV3b3JrL1hTRUNVUklSZXNvbHZlclhlcmNlcy5ocHAgXAorICB4c2VjL2ZyYW1ld29yay9YU0VDQWxnb3JpdGhtTWFwcGVyLmhwcCBcCisgIHhzZWMvZnJhbWV3b3JrL1hTRUNXMzJDb25maWcuaHBwCisKKyMgdHJhbnNmb3JtZXJzCisKK2xpYl9pbmNsdWRlcyArPSBcCisgIHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1YUGF0aEZpbHRlci5ocHAgXAorICB4c2VjL3RyYW5zZm9ybWVycy9UWEZNU0hBMS5ocHAgXAorICB4c2VjL3RyYW5zZm9ybWVycy9UWEZNUGFyc2VyLmhwcCBcCisgIHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1PdXRwdXRGaWxlLmhwcCBcCisgIHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1VUkwuaHBwIFwKKyAgeHNlYy90cmFuc2Zvcm1lcnMvVFhGTUJhc2UuaHBwIFwKKyAgeHNlYy90cmFuc2Zvcm1lcnMvVFhGTUNpcGhlci5ocHAgXAorICB4c2VjL3RyYW5zZm9ybWVycy9UWEZNRW52ZWxvcGUuaHBwIFwKKyAgeHNlYy90cmFuc2Zvcm1lcnMvVFhGTUNoYWluLmhwcCBcCisgIHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1NRDUuaHBwIFwKKyAgeHNlYy90cmFuc2Zvcm1lcnMvVFhGTURvY09iamVjdC5ocHAgXAorICB4c2VjL3RyYW5zZm9ybWVycy9UWEZNQ29uY2F0Q2hhaW5zLmhwcCBcCisgIHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1TQi5ocHAgXAorICB4c2VjL3RyYW5zZm9ybWVycy9UWEZNQzE0bi5ocHAgXAorICB4c2VjL3RyYW5zZm9ybWVycy9UWEZNWFNMLmhwcCBcCisgIHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1YUGF0aC5ocHAgXAorICB4c2VjL3RyYW5zZm9ybWVycy9UWEZNQmFzZTY0LmhwcAorCisjIHV0aWxzCisKK2xpYl9pbmNsdWRlcyArPSBcCisgIHhzZWMvdXRpbHMvdW5peHV0aWxzL1hTRUNVUklSZXNvbHZlckdlbmVyaWNVbml4LmhwcCBcCisgIHhzZWMvdXRpbHMvdW5peHV0aWxzL1hTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0uaHBwIFwKKyAgeHNlYy91dGlscy9YU0VDU2FmZUJ1ZmZlci5ocHAgXAorICB4c2VjL3V0aWxzL1hTRUNTT0FQUmVxdWVzdG9yLmhwcCBcCisgIHhzZWMvdXRpbHMvWFNFQ1RYRk1JbnB1dFNvdXJjZS5ocHAgXAorICB4c2VjL3V0aWxzL1hTRUNOYW1lU3BhY2VFeHBhbmRlci5ocHAgXAorICB4c2VjL3V0aWxzL1hTRUNTT0FQUmVxdWVzdG9yU2ltcGxlLmhwcCBcCisgIHhzZWMvdXRpbHMvWFNFQ1hQYXRoTm9kZUxpc3QuaHBwIFwKKyAgeHNlYy91dGlscy9YU0VDU2FmZUJ1ZmZlckZvcm1hdHRlci5ocHAgXAorICB4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHAgXAorICB4c2VjL3V0aWxzL1hTRUNCaW5UWEZNSW5wdXRTdHJlYW0uaHBwIFwKKyAgeHNlYy91dGlscy9YU0VDUGxhdGZvcm1VdGlscy5ocHAgCisKKyMgWE1MIEVuY3J5cHRpb24KKworbGliX2luY2x1ZGVzICs9IFwKKyAgeHNlYy94ZW5jL1hFTkNFbmNyeXB0aW9uTWV0aG9kLmhwcCBcCisgIHhzZWMveGVuYy9YRU5DRW5jcnlwdGVkVHlwZS5ocHAgXAorICB4c2VjL3hlbmMvWEVOQ0NpcGhlckRhdGEuaHBwIFwKKyAgeHNlYy94ZW5jL1hFTkNFbmNyeXB0ZWRLZXkuaHBwIFwKKyAgeHNlYy94ZW5jL1hFTkNDaXBoZXJWYWx1ZS5ocHAgXAorICB4c2VjL3hlbmMvWEVOQ0VuY3J5cHRlZERhdGEuaHBwIFwKKyAgeHNlYy94ZW5jL1hFTkNDaXBoZXJSZWZlcmVuY2UuaHBwIFwKKyAgeHNlYy94ZW5jL1hFTkNDaXBoZXIuaHBwCisKKyMgWE1MIEtleSBNYW5hZ2VtZW50CitsaWJfaW5jbHVkZXMgKz0gXAorICB4c2VjL3hrbXMvWEtNU05vdEJvdW5kQXV0aGVudGljYXRpb24uaHBwIFwKKyAgeHNlYy94a21zL1hLTVNWYWxpZGF0ZVJlc3VsdC5ocHAgXAorICB4c2VjL3hrbXMvWEtNU1ZhbGlkaXR5SW50ZXJ2YWwuaHBwIFwKKyAgeHNlYy94a21zL1hLTVNTdGF0dXNSZXF1ZXN0LmhwcCBcCisgIHhzZWMveGttcy9YS01TUmVnaXN0ZXJSZXF1ZXN0LmhwcCBcCisgIHhzZWMveGttcy9YS01TUGVuZGluZ1JlcXVlc3QuaHBwIFwKKyAgeHNlYy94a21zL1hLTVNDb21wb3VuZFJlcXVlc3QuaHBwIFwKKyAgeHNlYy94a21zL1hLTVNVc2VLZXlXaXRoLmhwcCBcCisgIHhzZWMveGttcy9YS01TVmFsaWRhdGVSZXF1ZXN0LmhwcCBcCisgIHhzZWMveGttcy9YS01TVW52ZXJpZmllZEtleUJpbmRpbmcuaHBwIFwKKyAgeHNlYy94a21zL1hLTVNMb2NhdGVSZXN1bHQuaHBwIFwKKyAgeHNlYy94a21zL1hLTVNSZXNwb25kV2l0aC5ocHAgXAorICB4c2VjL3hrbXMvWEtNU1F1ZXJ5S2V5QmluZGluZy5ocHAgXAorICB4c2VjL3hrbXMvWEtNU1Byb3RvdHlwZUtleUJpbmRpbmcuaHBwIFwKKyAgeHNlYy94a21zL1hLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlLmhwcCBcCisgIHhzZWMveGttcy9YS01TTWVzc2FnZUFic3RyYWN0VHlwZS5ocHAgXAorICB4c2VjL3hrbXMvWEtNU01lc3NhZ2VGYWN0b3J5LmhwcCBcCisgIHhzZWMveGttcy9YS01TQ29uc3RhbnRzLmhwcCBcCisgIHhzZWMveGttcy9YS01TUmVxdWVzdEFic3RyYWN0VHlwZS5ocHAgXAorICB4c2VjL3hrbXMvWEtNU1Jlc3VsdC5ocHAgXAorICB4c2VjL3hrbXMvWEtNU0F1dGhlbnRpY2F0aW9uLmhwcCBcCisgIHhzZWMveGttcy9YS01TTG9jYXRlUmVxdWVzdC5ocHAgXAorICB4c2VjL3hrbXMvWEtNU1Jlc3VsdFR5cGUuaHBwIFwKKyAgeHNlYy94a21zL1hLTVNTdGF0dXNSZXN1bHQuaHBwIFwKKyAgeHNlYy94a21zL1hLTVNLZXlCaW5kaW5nLmhwcCBcCisgIHhzZWMveGttcy9YS01TQ29tcG91bmRSZXN1bHQuaHBwIFwKKyAgeHNlYy94a21zL1hLTVNSZWdpc3RlclJlc3VsdC5ocHAgXAorICB4c2VjL3hrbXMvWEtNU1Jlc3BvbnNlTWVjaGFuaXNtLmhwcCBcCisgIHhzZWMveGttcy9YS01TU3RhdHVzLmhwcCBcCisgIHhzZWMveGttcy9YS01TUmV2b2tlUmVxdWVzdC5ocHAgXAorICB4c2VjL3hrbXMvWEtNU1Jldm9rZVJlc3VsdC5ocHAgXAorICB4c2VjL3hrbXMvWEtNU1JlY292ZXJLZXlCaW5kaW5nLmhwcCBcCisgIHhzZWMveGttcy9YS01TUmV2b2tlS2V5QmluZGluZy5ocHAgXAorICB4c2VjL3hrbXMvWEtNU1JTQUtleVBhaXIuaHBwIFwKKyAgeHNlYy94a21zL1hLTVNSZWNvdmVyUmVzdWx0LmhwcCBcCisgIHhzZWMveGttcy9YS01TUmVpc3N1ZVJlc3VsdC5ocHAgXAorICB4c2VjL3hrbXMvWEtNU1JlY292ZXJSZXF1ZXN0LmhwcCBcCisgIHhzZWMveGttcy9YS01TUmVpc3N1ZVJlcXVlc3QuaHBwIFwKKyAgeHNlYy94a21zL1hLTVNSZWlzc3VlS2V5QmluZGluZy5ocHAKKworIyBOb3cgdGhlIHJ1bGVzIGZvciBjb3B5aW5nIHRoZSBpbmNsdWRlIGZpbGVzIG92ZXIKKworU1VGRklYRVMgPSAuaHBwCisKK3hzZWMvJS5ocHA6IHhzZWMgLi4vc3JjLyUuaHBwCisJY3AgLi4vc3JjLyQqLmhwcCAkQAorCit4c2VjOgorCW1rZGlyIHhzZWMKKwlta2RpciB4c2VjL2Nhbm9uCisJbWtkaXIgeHNlYy9kc2lnCisJbWtkaXIgeHNlYy9mcmFtZXdvcmsKKwlta2RpciB4c2VjL3V0aWxzCisJbWtkaXIgeHNlYy91dGlscy91bml4dXRpbHMKKwlta2RpciB4c2VjL2VuYworCW1rZGlyIHhzZWMvZW5jL09wZW5TU0wKKwlta2RpciB4c2VjL2VuYy9OU1MKKwlta2RpciB4c2VjL2VuYy9YU0NyeXB0CisJbWtkaXIgeHNlYy90cmFuc2Zvcm1lcnMKKwlta2RpciB4c2VjL3hlbmMKKwlta2RpciB4c2VjL3hrbXMKKworIyBDbGVhbmluZworCitjbGVhbi1sb2NhbDoKKwkkKFJNKSAtciB4c2VjCmRpZmYgLS1naXQgYS9jL2xpYi9NYWtlZmlsZS5hbSBiL2MvbGliL01ha2VmaWxlLmFtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhMzU1NWIKLS0tIC9kZXYvbnVsbAorKysgYi9jL2xpYi9NYWtlZmlsZS5hbQpAQCAtMCwwICsxLDQ2NyBAQAorIworIyBDb3B5cmlnaHQgMjAwNi0yMDEwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyMKKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisjCisKK2xpYl9MVExJQlJBUklFUyA9IGxpYnhtbC1zZWN1cml0eS1jLmxhCisKK2xpYnhtbF9zZWN1cml0eV9jX2xhX1NPVVJDRVMgPSAke2xpYl9zb3VyY2VzfQorCitsaWJfc291cmNlcyA9CisKKyMgY2Fub24KKworbGliX3NvdXJjZXMgKz0gJHtjYW5vbl9zb3VyY2VzfQorCisjIFNpZ25hdHVyZQorCitsaWJfc291cmNlcyArPSAke2RzaWdfc291cmNlc30KKworIyBNYWluIGVuY3J5cHRpb24gc291cmNlcworCitsaWJfc291cmNlcyArPSAke2VuY19zb3VyY2VzfQorCisjIEZyYW1ld29yayBzb3VyY2VzCisKK2xpYl9zb3VyY2VzICs9ICR7ZnJhbWV3b3JrX3NvdXJjZXN9CisKKyMgdHJhbnNmb3JtZXJzCisKK2xpYl9zb3VyY2VzICs9ICR7dHhmbV9zb3VyY2VzfQorCisjIFV0aWxpdHkgc291cmNlcworCitsaWJfc291cmNlcyArPSAke3V0aWxzX3NvdXJjZXN9CisKKyMgWE1MIEVuY3J5cHRpb24KKworbGliX3NvdXJjZXMgKz0gJHt4ZW5jX3NvdXJjZXN9CisKKyMgWE1MIEtleSBNYW5hZ2VtZW50CisKK2xpYl9zb3VyY2VzICs9ICR7eGttc19zb3VyY2VzfQorCisjCisjIFRoZSBmb2xsb3dpbmcgYmxvY2tzIGFyZSBjb25kaXRpb25hbGx5IGFkZGVkIG9uIHRoZSBiYXNpcworIyBvZiBzZWxlY3Rpb25zIG1hZGUgZHVyaW5nIHRoZSAiY29uZmlndXJlIiBvcGVyYXRpb24KKworaWYgWFNFQ19BTV9IQVZFX09QRU5TU0wKKyAgbGliX3NvdXJjZXMgKz0gJHtvcGVuc3NsX3NvdXJjZXN9CitlbmRpZgorCisjIFNvdXJjZXMgYXJlIGJ1aWxkIHVwIHVzaW5nIGEgZmluZCBjb21tYW5kOgorIworIyBmaW5kIHNyYy90cmFuc2Zvcm1lcnMvIC1uYW1lICcqLmNwcCcgLWV4ZWMgZWNobyB7fSBcXCAiOyIgfCBzZWQgInMvc3JjXC8vICAuLlwvc3JjXC8vZyIKKworIyBjYW5vbgorCitjYW5vbl9zb3VyY2VzID0gXAorICAuLi9zcmMvY2Fub24vWFNFQ1hNTE5TU3RhY2suaHBwIFwKKyAgLi4vc3JjL2Nhbm9uL1hTRUNDMTRuMjAwMTAzMTUuaHBwIFwKKyAgLi4vc3JjL2Nhbm9uL1hTRUNDMTRuMjAwMTAzMTUuY3BwIFwKKyAgLi4vc3JjL2Nhbm9uL1hTRUNYTUxOU1N0YWNrLmNwcCBcCisgIC4uL3NyYy9jYW5vbi9YU0VDQ2Fub24uaHBwIFwKKyAgLi4vc3JjL2Nhbm9uL1hTRUNDYW5vbi5jcHAKKworIyBTaWduYXR1cmUKKworZHNpZ19zb3VyY2VzID0gXAorICAuLi9zcmMvZHNpZy9EU0lHS2V5SW5mb1BHUERhdGEuaHBwIFwKKyAgLi4vc3JjL2RzaWcvRFNJR0tleUluZm9QR1BEYXRhLmNwcCBcCisgIC4uL3NyYy9kc2lnL0RTSUdSZWZlcmVuY2VMaXN0LmhwcCBcCisgIC4uL3NyYy9kc2lnL0RTSUdSZWZlcmVuY2VMaXN0LmNwcCBcCisgIC4uL3NyYy9kc2lnL0RTSUdLZXlJbmZvVmFsdWUuaHBwIFwKKyAgLi4vc3JjL2RzaWcvRFNJR0tleUluZm9WYWx1ZS5jcHAgXAorICAuLi9zcmMvZHNpZy9EU0lHS2V5SW5mb0RFUkVuY29kZWQuaHBwIFwKKyAgLi4vc3JjL2RzaWcvRFNJR0tleUluZm9ERVJFbmNvZGVkLmNwcCBcCisgIC4uL3NyYy9kc2lnL0RTSUdYUGF0aEhlcmUuaHBwIFwKKyAgLi4vc3JjL2RzaWcvRFNJR1hQYXRoSGVyZS5jcHAgXAorICAuLi9zcmMvZHNpZy9EU0lHQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQuaHBwIFwKKyAgLi4vc3JjL2RzaWcvRFNJR0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0LmNwcCBcCisgIC4uL3NyYy9kc2lnL0RTSUdYUGF0aEZpbHRlckV4cHIuaHBwIFwKKyAgLi4vc3JjL2RzaWcvRFNJR1hQYXRoRmlsdGVyRXhwci5jcHAgXAorICAuLi9zcmMvZHNpZy9EU0lHS2V5SW5mb01nbXREYXRhLmhwcCBcCisgIC4uL3NyYy9kc2lnL0RTSUdLZXlJbmZvTWdtdERhdGEuY3BwIFwKKyAgLi4vc3JjL2RzaWcvRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyLmhwcCBcCisgIC4uL3NyYy9kc2lnL0RTSUdUcmFuc2Zvcm1YUGF0aEZpbHRlci5jcHAgXAorICAuLi9zcmMvZHNpZy9EU0lHU2lnbmVkSW5mby5ocHAgXAorICAuLi9zcmMvZHNpZy9EU0lHU2lnbmVkSW5mby5jcHAgXAorICAuLi9zcmMvZHNpZy9EU0lHS2V5SW5mb0xpc3QuaHBwIFwKKyAgLi4vc3JjL2RzaWcvRFNJR0tleUluZm9MaXN0LmNwcCBcCisgIC4uL3NyYy9kc2lnL0RTSUdDb25zdGFudHMuaHBwIFwKKyAgLi4vc3JjL2RzaWcvRFNJR0NvbnN0YW50cy5jcHAgXAorICAuLi9zcmMvZHNpZy9EU0lHU2lnbmF0dXJlLmhwcCBcCisgIC4uL3NyYy9kc2lnL0RTSUdTaWduYXR1cmUuY3BwIFwKKyAgLi4vc3JjL2RzaWcvRFNJR1RyYW5zZm9ybVhTTC5ocHAgXAorICAuLi9zcmMvZHNpZy9EU0lHVHJhbnNmb3JtWFNMLmNwcCBcCisgIC4uL3NyYy9kc2lnL0RTSUdPYmplY3QuaHBwIFwKKyAgLi4vc3JjL2RzaWcvRFNJR09iamVjdC5jcHAgXAorICAuLi9zcmMvZHNpZy9EU0lHVHJhbnNmb3JtWFBhdGguaHBwIFwKKyAgLi4vc3JjL2RzaWcvRFNJR1RyYW5zZm9ybVhQYXRoLmNwcCBcCisgIC4uL3NyYy9kc2lnL0RTSUdUcmFuc2Zvcm1FbnZlbG9wZS5ocHAgXAorICAuLi9zcmMvZHNpZy9EU0lHVHJhbnNmb3JtRW52ZWxvcGUuY3BwIFwKKyAgLi4vc3JjL2RzaWcvRFNJR0tleUluZm9OYW1lLmhwcCBcCisgIC4uL3NyYy9kc2lnL0RTSUdLZXlJbmZvTmFtZS5jcHAgXAorICAuLi9zcmMvZHNpZy9EU0lHVHJhbnNmb3JtQmFzZTY0LmhwcCBcCisgIC4uL3NyYy9kc2lnL0RTSUdUcmFuc2Zvcm1CYXNlNjQuY3BwIFwKKyAgLi4vc3JjL2RzaWcvRFNJR1JlZmVyZW5jZS5ocHAgXAorICAuLi9zcmMvZHNpZy9EU0lHUmVmZXJlbmNlLmNwcCBcCisgIC4uL3NyYy9kc2lnL0RTSUdLZXlJbmZvU1BLSURhdGEuaHBwIFwKKyAgLi4vc3JjL2RzaWcvRFNJR0tleUluZm9TUEtJRGF0YS5jcHAgXAorICAuLi9zcmMvZHNpZy9EU0lHS2V5SW5mby5ocHAgXAorICAuLi9zcmMvZHNpZy9EU0lHVHJhbnNmb3JtTGlzdC5ocHAgXAorICAuLi9zcmMvZHNpZy9EU0lHVHJhbnNmb3JtTGlzdC5jcHAgXAorICAuLi9zcmMvZHNpZy9EU0lHS2V5SW5mb1g1MDkuaHBwIFwKKyAgLi4vc3JjL2RzaWcvRFNJR0tleUluZm9YNTA5LmNwcCBcCisgIC4uL3NyYy9kc2lnL0RTSUdLZXlJbmZvRXh0LmhwcCBcCisgIC4uL3NyYy9kc2lnL0RTSUdLZXlJbmZvRXh0LmNwcCBcCisgIC4uL3NyYy9kc2lnL0RTSUdUcmFuc2Zvcm0uaHBwIFwKKyAgLi4vc3JjL2RzaWcvRFNJR1RyYW5zZm9ybS5jcHAgXAorICAuLi9zcmMvZHNpZy9EU0lHVHJhbnNmb3JtQzE0bi5ocHAgXAorICAuLi9zcmMvZHNpZy9EU0lHVHJhbnNmb3JtQzE0bi5jcHAKKworIyBNYWluIENyeXB0byBpbnRlcmZhY2Ugcm91dGluZXMKKworZW5jX3NvdXJjZXMgPSBcCisgIC4uL3NyYy9lbmMvWFNFQ0NyeXB0b1g1MDkuaHBwIFwKKyAgLi4vc3JjL2VuYy9YU0VDQ3J5cHRvWDUwOS5jcHAgXAorICAuLi9zcmMvZW5jL1hTRUNLZXlJbmZvUmVzb2x2ZXJEZWZhdWx0LmhwcCBcCisgIC4uL3NyYy9lbmMvWFNFQ0tleUluZm9SZXNvbHZlckRlZmF1bHQuY3BwIFwKKyAgLi4vc3JjL2VuYy9YU0VDQ3J5cHRvS2V5SE1BQy5ocHAgXAorICAuLi9zcmMvZW5jL1hTRUNDcnlwdG9IYXNoLmhwcCBcCisgIC4uL3NyYy9lbmMvWFNFQ0NyeXB0b0tleVJTQS5ocHAgXAorICAuLi9zcmMvZW5jL1hTRUNDcnlwdG9VdGlscy5ocHAgXAorICAuLi9zcmMvZW5jL1hTRUNDcnlwdG9VdGlscy5jcHAgXAorICAuLi9zcmMvZW5jL1hTRUNDcnlwdG9CYXNlNjQuaHBwIFwKKyAgLi4vc3JjL2VuYy9YU0VDQ3J5cHRvQmFzZTY0LmNwcCBcCisgIC4uL3NyYy9lbmMvWFNFQ0NyeXB0b0tleS5ocHAgXAorICAuLi9zcmMvZW5jL1hTQ3J5cHQvWFNDcnlwdENyeXB0b0Jhc2U2NC5ocHAgXAorICAuLi9zcmMvZW5jL1hTQ3J5cHQvWFNDcnlwdENyeXB0b0Jhc2U2NC5jcHAgXAorICAuLi9zcmMvZW5jL1hTRUNDcnlwdG9LZXlEU0EuaHBwIFwKKyAgLi4vc3JjL2VuYy9YU0VDQ3J5cHRvS2V5RUMuaHBwIFwKKyAgLi4vc3JjL2VuYy9YU0VDQ3J5cHRvUHJvdmlkZXIuaHBwIFwKKyAgLi4vc3JjL2VuYy9YU0VDQ3J5cHRvUHJvdmlkZXIuY3BwIFwKKyAgLi4vc3JjL2VuYy9YU0VDS2V5SW5mb1Jlc29sdmVyLmhwcCBcCisgIC4uL3NyYy9lbmMvWFNFQ0NyeXB0b1N5bW1ldHJpY0tleS5ocHAgXAorICAuLi9zcmMvZW5jL1hTRUNDcnlwdG9FeGNlcHRpb24uaHBwIFwKKyAgLi4vc3JjL2VuYy9YU0VDQ3J5cHRvRXhjZXB0aW9uLmNwcAorCisjIEZyYW1ld29yayBmaWxlcworCitmcmFtZXdvcmtfc291cmNlcyA9IFwKKyAgLi4vc3JjL2ZyYW1ld29yay9YU0VDVVJJUmVzb2x2ZXIuaHBwIFwKKyAgLi4vc3JjL2ZyYW1ld29yay9YU0VDRXJyb3IuY3BwIFwKKyAgLi4vc3JjL2ZyYW1ld29yay9YU0VDQWxnb3JpdGhtTWFwcGVyLmNwcCBcCisgIC4uL3NyYy9mcmFtZXdvcmsvWFNFQ0V4Y2VwdGlvbi5ocHAgXAorICAuLi9zcmMvZnJhbWV3b3JrL1hTRUNFbnYuY3BwIFwKKyAgLi4vc3JjL2ZyYW1ld29yay9YU0VDVVJJUmVzb2x2ZXJYZXJjZXMuaHBwIFwKKyAgLi4vc3JjL2ZyYW1ld29yay9YU0VDVzMyQ29uZmlnLmhwcCBcCisgIC4uL3NyYy9mcmFtZXdvcmsvWFNFQ1Byb3ZpZGVyLmhwcCBcCisgIC4uL3NyYy9mcmFtZXdvcmsvWFNFQ0FsZ29yaXRobUhhbmRsZXIuaHBwIFwKKyAgLi4vc3JjL2ZyYW1ld29yay9YU0VDQ29uZmlnLmhwcCBcCisgIC4uL3NyYy9mcmFtZXdvcmsvWFNFQ0FsZ29yaXRobU1hcHBlci5ocHAgXAorICAuLi9zcmMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcCBcCisgIC4uL3NyYy9mcmFtZXdvcmsvWFNFQ1Byb3ZpZGVyLmNwcCBcCisgIC4uL3NyYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcCBcCisgIC4uL3NyYy9mcmFtZXdvcmsvWFNFQ0V4Y2VwdGlvbi5jcHAgXAorICAuLi9zcmMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwIFwKKyAgLi4vc3JjL2ZyYW1ld29yay9YU0VDVVJJUmVzb2x2ZXJYZXJjZXMuY3BwCisKK3R4Zm1fc291cmNlcyA9IFwKKyAgLi4vc3JjL3RyYW5zZm9ybWVycy9UWEZNQmFzZS5jcHAgXAorICAuLi9zcmMvdHJhbnNmb3JtZXJzL1RYRk1DaGFpbi5jcHAgXAorICAuLi9zcmMvdHJhbnNmb3JtZXJzL1RYRk1DaXBoZXIuY3BwIFwKKyAgLi4vc3JjL3RyYW5zZm9ybWVycy9UWEZNUGFyc2VyLmNwcCBcCisgIC4uL3NyYy90cmFuc2Zvcm1lcnMvVFhGTVVSTC5ocHAgXAorICAuLi9zcmMvdHJhbnNmb3JtZXJzL1RYRk1TQi5jcHAgXAorICAuLi9zcmMvdHJhbnNmb3JtZXJzL1RYRk1YUGF0aEZpbHRlci5ocHAgXAorICAuLi9zcmMvdHJhbnNmb3JtZXJzL1RYRk1FbnZlbG9wZS5jcHAgXAorICAuLi9zcmMvdHJhbnNmb3JtZXJzL1RYRk1CYXNlLmhwcCBcCisgIC4uL3NyYy90cmFuc2Zvcm1lcnMvVFhGTUJhc2U2NC5jcHAgXAorICAuLi9zcmMvdHJhbnNmb3JtZXJzL1RYRk1DaXBoZXIuaHBwIFwKKyAgLi4vc3JjL3RyYW5zZm9ybWVycy9UWEZNQ2hhaW4uaHBwIFwKKyAgLi4vc3JjL3RyYW5zZm9ybWVycy9UWEZNRG9jT2JqZWN0LmhwcCBcCisgIC4uL3NyYy90cmFuc2Zvcm1lcnMvVFhGTVhQYXRoRmlsdGVyLmNwcCBcCisgIC4uL3NyYy90cmFuc2Zvcm1lcnMvVFhGTVNCLmhwcCBcCisgIC4uL3NyYy90cmFuc2Zvcm1lcnMvVFhGTU1ENS5ocHAgXAorICAuLi9zcmMvdHJhbnNmb3JtZXJzL1RYRk1DMTRuLmhwcCBcCisgIC4uL3NyYy90cmFuc2Zvcm1lcnMvVFhGTVNIQTEuY3BwIFwKKyAgLi4vc3JjL3RyYW5zZm9ybWVycy9UWEZNUGFyc2VyLmhwcCBcCisgIC4uL3NyYy90cmFuc2Zvcm1lcnMvVFhGTUVudmVsb3BlLmhwcCBcCisgIC4uL3NyYy90cmFuc2Zvcm1lcnMvVFhGTUMxNG4uY3BwIFwKKyAgLi4vc3JjL3RyYW5zZm9ybWVycy9UWEZNVVJMLmNwcCBcCisgIC4uL3NyYy90cmFuc2Zvcm1lcnMvVFhGTU91dHB1dEZpbGUuY3BwIFwKKyAgLi4vc3JjL3RyYW5zZm9ybWVycy9UWEZNWFBhdGguY3BwIFwKKyAgLi4vc3JjL3RyYW5zZm9ybWVycy9UWEZNWFBhdGguaHBwIFwKKyAgLi4vc3JjL3RyYW5zZm9ybWVycy9UWEZNWFNMLmNwcCBcCisgIC4uL3NyYy90cmFuc2Zvcm1lcnMvVFhGTURvY09iamVjdC5jcHAgXAorICAuLi9zcmMvdHJhbnNmb3JtZXJzL1RYRk1Db25jYXRDaGFpbnMuY3BwIFwKKyAgLi4vc3JjL3RyYW5zZm9ybWVycy9UWEZNQ29uY2F0Q2hhaW5zLmhwcCBcCisgIC4uL3NyYy90cmFuc2Zvcm1lcnMvVFhGTVhTTC5ocHAgXAorICAuLi9zcmMvdHJhbnNmb3JtZXJzL1RYRk1TSEExLmhwcCBcCisgIC4uL3NyYy90cmFuc2Zvcm1lcnMvVFhGTU1ENS5jcHAgXAorICAuLi9zcmMvdHJhbnNmb3JtZXJzL1RYRk1CYXNlNjQuaHBwIFwKKyAgLi4vc3JjL3RyYW5zZm9ybWVycy9UWEZNT3V0cHV0RmlsZS5ocHAKKworIyBVdGlsaXR5IGZpbGVzLiAgTm90ZSB3ZSBkb24ndCB3b3JyeSBhYm91dCBjaGVja2luZworIyBpZiB0aGUgVU5JWCBzdHVmZiBpcyBuZWNlc3NhcnkgLSB3ZSBqdXN0IGFzc3VtZSB0aGF0CisjIHdlIGFyZSBydW5uaW5nIG9uIGEgKk5JWCBzeXN0ZW0gYmVjYXVzZSBjb21waWxpbmcgdW5kZXIKKyMgbWFrZS4gIEN5Z3dpbiBjb21waWxlcyB1c2UgdGhlIFVOSVggdXRpbGl0aWVzLCBub3Qgd2luZG93cworCit1dGlsc19zb3VyY2VzID0gXAorICAuLi9zcmMvdXRpbHMvdW5peHV0aWxzL1hTRUNTT0FQUmVxdWVzdG9yU2ltcGxlVW5peC5jcHAgXAorICAuLi9zcmMvdXRpbHMvdW5peHV0aWxzL1hTRUNVUklSZXNvbHZlckdlbmVyaWNVbml4LmNwcCBcCisgIC4uL3NyYy91dGlscy91bml4dXRpbHMvWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbS5jcHAgXAorICAuLi9zcmMvdXRpbHMvdW5peHV0aWxzL1hTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0uaHBwIFwKKyAgLi4vc3JjL3V0aWxzL3VuaXh1dGlscy9YU0VDVVJJUmVzb2x2ZXJHZW5lcmljVW5peC5ocHAgXAorICAuLi9zcmMvdXRpbHMvWFNFQ0JpblRYRk1JbnB1dFN0cmVhbS5ocHAgXAorICAuLi9zcmMvdXRpbHMvWFNFQ0JpblRYRk1JbnB1dFN0cmVhbS5jcHAgXAorICAuLi9zcmMvdXRpbHMvWFNFQ05hbWVTcGFjZUV4cGFuZGVyLmhwcCBcCisgIC4uL3NyYy91dGlscy9YU0VDWFBhdGhOb2RlTGlzdC5jcHAgXAorICAuLi9zcmMvdXRpbHMvWFNFQ1hQYXRoTm9kZUxpc3QuaHBwIFwKKyAgLi4vc3JjL3V0aWxzL1hTRUNUWEZNSW5wdXRTb3VyY2UuaHBwIFwKKyAgLi4vc3JjL3V0aWxzL1hTRUNTT0FQUmVxdWVzdG9yU2ltcGxlLmhwcCBcCisgIC4uL3NyYy91dGlscy9YU0VDU2FmZUJ1ZmZlci5jcHAgXAorICAuLi9zcmMvdXRpbHMvWFNFQ1NhZmVCdWZmZXJGb3JtYXR0ZXIuaHBwIFwKKyAgLi4vc3JjL3V0aWxzL1hTRUNUWEZNSW5wdXRTb3VyY2UuY3BwIFwKKyAgLi4vc3JjL3V0aWxzL1hTRUNET01VdGlscy5ocHAgXAorICAuLi9zcmMvdXRpbHMvWFNFQ1NhZmVCdWZmZXIuaHBwIFwKKyAgLi4vc3JjL3V0aWxzL1hTRUNQbGF0Zm9ybVV0aWxzLmhwcCBcCisgIC4uL3NyYy91dGlscy9YU0VDRE9NVXRpbHMuY3BwIFwKKyAgLi4vc3JjL3V0aWxzL1hTRUNTYWZlQnVmZmVyRm9ybWF0dGVyLmNwcCBcCisgIC4uL3NyYy91dGlscy9YU0VDU09BUFJlcXVlc3RvclNpbXBsZS5jcHAgXAorICAuLi9zcmMvdXRpbHMvWFNFQ1NPQVBSZXF1ZXN0b3IuaHBwIFwKKyAgLi4vc3JjL3V0aWxzL1hTRUNOYW1lU3BhY2VFeHBhbmRlci5jcHAgXAorICAuLi9zcmMvdXRpbHMvWFNFQ1BsYXRmb3JtVXRpbHMuY3BwIFwKKyAgLi4vc3JjL3V0aWxzL1hTRUNBdXRvUHRyLmhwcAorCisjIFhNTCBFbmNyeXB0aW9uCisKK3hlbmNfc291cmNlcyA9IFwKKyAgLi4vc3JjL3hlbmMvaW1wbC9YRU5DQ2lwaGVyUmVmZXJlbmNlSW1wbC5jcHAgXAorICAuLi9zcmMveGVuYy9pbXBsL1hFTkNFbmNyeXB0aW9uTWV0aG9kSW1wbC5jcHAgXAorICAuLi9zcmMveGVuYy9pbXBsL1hFTkNFbmNyeXB0ZWRLZXlJbXBsLmhwcCBcCisgIC4uL3NyYy94ZW5jL2ltcGwvWEVOQ0NpcGhlclZhbHVlSW1wbC5jcHAgXAorICAuLi9zcmMveGVuYy9pbXBsL1hFTkNDaXBoZXJJbXBsLmhwcCBcCisgIC4uL3NyYy94ZW5jL2ltcGwvWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0LmhwcCBcCisgIC4uL3NyYy94ZW5jL2ltcGwvWEVOQ0NpcGhlckRhdGFJbXBsLmhwcCBcCisgIC4uL3NyYy94ZW5jL2ltcGwvWEVOQ0VuY3J5cHRpb25NZXRob2RJbXBsLmhwcCBcCisgIC4uL3NyYy94ZW5jL2ltcGwvWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0LmNwcCBcCisgIC4uL3NyYy94ZW5jL2ltcGwvWEVOQ0VuY3J5cHRlZERhdGFJbXBsLmNwcCBcCisgIC4uL3NyYy94ZW5jL2ltcGwvWEVOQ0VuY3J5cHRlZFR5cGVJbXBsLmhwcCBcCisgIC4uL3NyYy94ZW5jL2ltcGwvWEVOQ0NpcGhlckRhdGFJbXBsLmNwcCBcCisgIC4uL3NyYy94ZW5jL2ltcGwvWEVOQ0VuY3J5cHRlZERhdGFJbXBsLmhwcCBcCisgIC4uL3NyYy94ZW5jL2ltcGwvWEVOQ0NpcGhlclZhbHVlSW1wbC5ocHAgXAorICAuLi9zcmMveGVuYy9pbXBsL1hFTkNFbmNyeXB0ZWRUeXBlSW1wbC5jcHAgXAorICAuLi9zcmMveGVuYy9pbXBsL1hFTkNDaXBoZXJJbXBsLmNwcCBcCisgIC4uL3NyYy94ZW5jL2ltcGwvWEVOQ0VuY3J5cHRlZEtleUltcGwuY3BwIFwKKyAgLi4vc3JjL3hlbmMvaW1wbC9YRU5DQ2lwaGVyUmVmZXJlbmNlSW1wbC5ocHAgXAorICAuLi9zcmMveGVuYy9YRU5DQ2lwaGVyRGF0YS5ocHAgXAorICAuLi9zcmMveGVuYy9YRU5DRW5jcnlwdGVkS2V5LmhwcCBcCisgIC4uL3NyYy94ZW5jL1hFTkNDaXBoZXJWYWx1ZS5ocHAgXAorICAuLi9zcmMveGVuYy9YRU5DRW5jcnlwdGlvbk1ldGhvZC5ocHAgXAorICAuLi9zcmMveGVuYy9YRU5DQ2lwaGVyLmhwcCBcCisgIC4uL3NyYy94ZW5jL1hFTkNFbmNyeXB0ZWREYXRhLmhwcCBcCisgIC4uL3NyYy94ZW5jL1hFTkNFbmNyeXB0ZWRUeXBlLmhwcCBcCisgIC4uL3NyYy94ZW5jL1hFTkNDaXBoZXJSZWZlcmVuY2UuaHBwCisKKyMgWE1MIEtleSBNYW5hZ2VtZW50Cit4a21zX3NvdXJjZXMgPSBcCisgIC4uL3NyYy94a21zL2ltcGwvWEtNU0NvbXBvdW5kUmVxdWVzdEltcGwuY3BwIFwKKyAgLi4vc3JjL3hrbXMvaW1wbC9YS01TUmV2b2tlS2V5QmluZGluZ0ltcGwuaHBwIFwKKyAgLi4vc3JjL3hrbXMvaW1wbC9YS01TUmVjb3ZlclJlcXVlc3RJbXBsLmNwcCBcCisgIC4uL3NyYy94a21zL2ltcGwvWEtNU1JlZ2lzdGVyUmVzdWx0SW1wbC5jcHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNSZWNvdmVyUmVzdWx0SW1wbC5jcHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNWYWxpZGF0ZVJlc3VsdEltcGwuaHBwIFwKKyAgLi4vc3JjL3hrbXMvaW1wbC9YS01TUmV2b2tlUmVzdWx0SW1wbC5ocHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNDb21wb3VuZFJlc3VsdEltcGwuY3BwIFwKKyAgLi4vc3JjL3hrbXMvaW1wbC9YS01TUmV2b2tlS2V5QmluZGluZ0ltcGwuY3BwIFwKKyAgLi4vc3JjL3hrbXMvaW1wbC9YS01TQ29tcG91bmRSZXN1bHRJbXBsLmhwcCBcCisgIC4uL3NyYy94a21zL2ltcGwvWEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nSW1wbC5ocHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbC5jcHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNRdWVyeUtleUJpbmRpbmdJbXBsLmhwcCBcCisgIC4uL3NyYy94a21zL2ltcGwvWEtNU1Byb3RvdHlwZUtleUJpbmRpbmdJbXBsLmNwcCBcCisgIC4uL3NyYy94a21zL2ltcGwvWEtNU1ZhbGlkYXRlUmVzdWx0SW1wbC5jcHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNSU0FLZXlQYWlySW1wbC5ocHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNBdXRoZW50aWNhdGlvbkltcGwuY3BwIFwKKyAgLi4vc3JjL3hrbXMvaW1wbC9YS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbkltcGwuaHBwIFwKKyAgLi4vc3JjL3hrbXMvaW1wbC9YS01TQ29tcG91bmRSZXF1ZXN0SW1wbC5ocHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNQZW5kaW5nUmVxdWVzdEltcGwuaHBwIFwKKyAgLi4vc3JjL3hrbXMvaW1wbC9YS01TU3RhdHVzUmVzdWx0SW1wbC5jcHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNTdGF0dXNJbXBsLmhwcCBcCisgIC4uL3NyYy94a21zL2ltcGwvWEtNU1JlZ2lzdGVyUmVxdWVzdEltcGwuaHBwIFwKKyAgLi4vc3JjL3hrbXMvaW1wbC9YS01TUmVpc3N1ZVJlcXVlc3RJbXBsLmNwcCBcCisgIC4uL3NyYy94a21zL2ltcGwvWEtNU0tleUJpbmRpbmdJbXBsLmNwcCBcCisgIC4uL3NyYy94a21zL2ltcGwvWEtNU1VzZUtleVdpdGhJbXBsLmhwcCBcCisgIC4uL3NyYy94a21zL2ltcGwvWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsLmNwcCBcCisgIC4uL3NyYy94a21zL2ltcGwvWEtNU1Jlc3BvbmRXaXRoSW1wbC5jcHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNSZXNwb25zZU1lY2hhbmlzbUltcGwuaHBwIFwKKyAgLi4vc3JjL3hrbXMvaW1wbC9YS01TUmVzdWx0SW1wbC5ocHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNSZWlzc3VlUmVzdWx0SW1wbC5jcHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNBdXRoZW50aWNhdGlvbkltcGwuaHBwIFwKKyAgLi4vc3JjL3hrbXMvaW1wbC9YS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGwuY3BwIFwKKyAgLi4vc3JjL3hrbXMvaW1wbC9YS01TUmV2b2tlUmVzdWx0SW1wbC5jcHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNTdGF0dXNSZXN1bHRJbXBsLmhwcCBcCisgIC4uL3NyYy94a21zL2ltcGwvWEtNU1JlaXNzdWVLZXlCaW5kaW5nSW1wbC5ocHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNSZXNwb25kV2l0aEltcGwuaHBwIFwKKyAgLi4vc3JjL3hrbXMvaW1wbC9YS01TUmV2b2tlUmVxdWVzdEltcGwuY3BwIFwKKyAgLi4vc3JjL3hrbXMvaW1wbC9YS01TUGVuZGluZ1JlcXVlc3RJbXBsLmNwcCBcCisgIC4uL3NyYy94a21zL2ltcGwvWEtNU1JlY292ZXJSZXN1bHRJbXBsLmhwcCBcCisgIC4uL3NyYy94a21zL2ltcGwvWEtNU1ZhbGlkYXRlUmVxdWVzdEltcGwuY3BwIFwKKyAgLi4vc3JjL3hrbXMvaW1wbC9YS01TU3RhdHVzUmVxdWVzdEltcGwuaHBwIFwKKyAgLi4vc3JjL3hrbXMvaW1wbC9YS01TUmVjb3ZlclJlcXVlc3RJbXBsLmhwcCBcCisgIC4uL3NyYy94a21zL2ltcGwvWEtNU1JlY292ZXJLZXlCaW5kaW5nSW1wbC5jcHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNSU0FLZXlQYWlySW1wbC5jcHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbC5ocHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNVbnZlcmlmaWVkS2V5QmluZGluZ0ltcGwuY3BwIFwKKyAgLi4vc3JjL3hrbXMvaW1wbC9YS01TVmFsaWRpdHlJbnRlcnZhbEltcGwuaHBwIFwKKyAgLi4vc3JjL3hrbXMvaW1wbC9YS01TTG9jYXRlUmVzdWx0SW1wbC5ocHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNMb2NhdGVSZXF1ZXN0SW1wbC5jcHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNSZXN1bHRUeXBlSW1wbC5jcHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNSZWNvdmVyS2V5QmluZGluZ0ltcGwuaHBwIFwKKyAgLi4vc3JjL3hrbXMvaW1wbC9YS01TUmVzdWx0SW1wbC5jcHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNWYWxpZGl0eUludGVydmFsSW1wbC5jcHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNSZWdpc3RlclJlcXVlc3RJbXBsLmNwcCBcCisgIC4uL3NyYy94a21zL2ltcGwvWEtNU1JlaXNzdWVSZXN1bHRJbXBsLmhwcCBcCisgIC4uL3NyYy94a21zL2ltcGwvWEtNU1N0YXR1c0ltcGwuY3BwIFwKKyAgLi4vc3JjL3hrbXMvaW1wbC9YS01TUmVpc3N1ZVJlcXVlc3RJbXBsLmhwcCBcCisgIC4uL3NyYy94a21zL2ltcGwvWEtNU1N0YXR1c1JlcXVlc3RJbXBsLmNwcCBcCisgIC4uL3NyYy94a21zL2ltcGwvWEtNU1JlaXNzdWVLZXlCaW5kaW5nSW1wbC5jcHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNLZXlCaW5kaW5nSW1wbC5ocHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNWYWxpZGF0ZVJlcXVlc3RJbXBsLmhwcCBcCisgIC4uL3NyYy94a21zL2ltcGwvWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsLmhwcCBcCisgIC4uL3NyYy94a21zL2ltcGwvWEtNU1Jlc3VsdFR5cGVJbXBsLmhwcCBcCisgIC4uL3NyYy94a21zL2ltcGwvWEtNU01lc3NhZ2VGYWN0b3J5SW1wbC5jcHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNSZXZva2VSZXF1ZXN0SW1wbC5ocHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNSZXNwb25zZU1lY2hhbmlzbUltcGwuY3BwIFwKKyAgLi4vc3JjL3hrbXMvaW1wbC9YS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbi5jcHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNMb2NhdGVSZXF1ZXN0SW1wbC5ocHAgXAorICAuLi9zcmMveGttcy9pbXBsL1hLTVNMb2NhdGVSZXN1bHRJbXBsLmNwcCBcCisgIC4uL3NyYy94a21zL2ltcGwvWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsLmhwcCBcCisgIC4uL3NyYy94a21zL2ltcGwvWEtNU1F1ZXJ5S2V5QmluZGluZ0ltcGwuY3BwIFwKKyAgLi4vc3JjL3hrbXMvaW1wbC9YS01TVXNlS2V5V2l0aEltcGwuY3BwIFwKKyAgLi4vc3JjL3hrbXMvaW1wbC9YS01TTWVzc2FnZUZhY3RvcnlJbXBsLmhwcCBcCisgIC4uL3NyYy94a21zL2ltcGwvWEtNU1Byb3RvdHlwZUtleUJpbmRpbmdJbXBsLmhwcCBcCisgIC4uL3NyYy94a21zL2ltcGwvWEtNU1JlZ2lzdGVyUmVzdWx0SW1wbC5ocHAgXAorICAuLi9zcmMveGttcy9YS01TU3RhdHVzUmVxdWVzdC5ocHAgXAorICAuLi9zcmMveGttcy9YS01TUmVzdWx0VHlwZS5ocHAgXAorICAuLi9zcmMveGttcy9YS01TS2V5QmluZGluZy5ocHAgXAorICAuLi9zcmMveGttcy9YS01TVmFsaWRhdGVSZXN1bHQuaHBwIFwKKyAgLi4vc3JjL3hrbXMvWEtNU1ZhbGlkYXRlUmVxdWVzdC5ocHAgXAorICAuLi9zcmMveGttcy9YS01TVXNlS2V5V2l0aC5ocHAgXAorICAuLi9zcmMveGttcy9YS01TUmVnaXN0ZXJSZXF1ZXN0LmhwcCBcCisgIC4uL3NyYy94a21zL1hLTVNSZXZva2VLZXlCaW5kaW5nLmhwcCBcCisgIC4uL3NyYy94a21zL1hLTVNDb25zdGFudHMuaHBwIFwKKyAgLi4vc3JjL3hrbXMvWEtNU0xvY2F0ZVJlcXVlc3QuaHBwIFwKKyAgLi4vc3JjL3hrbXMvWEtNU1N0YXR1cy5ocHAgXAorICAuLi9zcmMveGttcy9YS01TUGVuZGluZ1JlcXVlc3QuaHBwIFwKKyAgLi4vc3JjL3hrbXMvWEtNU1N0YXR1c1Jlc3VsdC5ocHAgXAorICAuLi9zcmMveGttcy9YS01TUmVpc3N1ZVJlc3VsdC5ocHAgXAorICAuLi9zcmMveGttcy9YS01TVW52ZXJpZmllZEtleUJpbmRpbmcuaHBwIFwKKyAgLi4vc3JjL3hrbXMvWEtNU1F1ZXJ5S2V5QmluZGluZy5ocHAgXAorICAuLi9zcmMveGttcy9YS01TUmVjb3ZlclJlc3VsdC5ocHAgXAorICAuLi9zcmMveGttcy9YS01TTWVzc2FnZUZhY3RvcnkuaHBwIFwKKyAgLi4vc3JjL3hrbXMvWEtNU0F1dGhlbnRpY2F0aW9uLmhwcCBcCisgIC4uL3NyYy94a21zL1hLTVNDb25zdGFudHMuY3BwIFwKKyAgLi4vc3JjL3hrbXMvWEtNU1JTQUtleVBhaXIuaHBwIFwKKyAgLi4vc3JjL3hrbXMvWEtNU1JlaXNzdWVSZXF1ZXN0LmhwcCBcCisgIC4uL3NyYy94a21zL1hLTVNSZWNvdmVyS2V5QmluZGluZy5ocHAgXAorICAuLi9zcmMveGttcy9YS01TUmV2b2tlUmVxdWVzdC5ocHAgXAorICAuLi9zcmMveGttcy9YS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbi5ocHAgXAorICAuLi9zcmMveGttcy9YS01TUmVzcG9uZFdpdGguaHBwIFwKKyAgLi4vc3JjL3hrbXMvWEtNU1ZhbGlkaXR5SW50ZXJ2YWwuaHBwIFwKKyAgLi4vc3JjL3hrbXMvWEtNU1JlaXNzdWVLZXlCaW5kaW5nLmhwcCBcCisgIC4uL3NyYy94a21zL1hLTVNNZXNzYWdlQWJzdHJhY3RUeXBlLmhwcCBcCisgIC4uL3NyYy94a21zL1hLTVNQcm90b3R5cGVLZXlCaW5kaW5nLmhwcCBcCisgIC4uL3NyYy94a21zL1hLTVNSZXNwb25zZU1lY2hhbmlzbS5ocHAgXAorICAuLi9zcmMveGttcy9YS01TUmVjb3ZlclJlcXVlc3QuaHBwIFwKKyAgLi4vc3JjL3hrbXMvWEtNU0NvbXBvdW5kUmVzdWx0LmhwcCBcCisgIC4uL3NyYy94a21zL1hLTVNDb21wb3VuZFJlcXVlc3QuaHBwIFwKKyAgLi4vc3JjL3hrbXMvWEtNU1Jldm9rZVJlc3VsdC5ocHAgXAorICAuLi9zcmMveGttcy9YS01TUmVzdWx0LmhwcCBcCisgIC4uL3NyYy94a21zL1hLTVNMb2NhdGVSZXN1bHQuaHBwIFwKKyAgLi4vc3JjL3hrbXMvWEtNU1JlZ2lzdGVyUmVzdWx0LmhwcCBcCisgIC4uL3NyYy94a21zL1hLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlLmhwcCBcCisgIC4uL3NyYy94a21zL1hLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlLmhwcAorCisjIENvbmRpdGlvbmFsIGNyeXB0byByb3V0aW5lcworCitvcGVuc3NsX3NvdXJjZXMgPSBcCisgIC4uL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvSGFzaEhNQUMuY3BwIFwKKyAgLi4vc3JjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9LZXlEU0EuaHBwIFwKKyAgLi4vc3JjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9LZXlFQy5ocHAgXAorICAuLi9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0tleVJTQS5jcHAgXAorICAuLi9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0hhc2guY3BwIFwKKyAgLi4vc3JjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9Qcm92aWRlci5ocHAgXAorICAuLi9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b1Byb3ZpZGVyLmNwcCBcCisgIC4uL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvQmFzZTY0LmhwcCBcCisgIC4uL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvWDUwOS5jcHAgXAorICAuLi9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0tleVJTQS5ocHAgXAorICAuLi9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b1g1MDkuaHBwIFwKKyAgLi4vc3JjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9CYXNlNjQuY3BwIFwKKyAgLi4vc3JjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9IYXNoLmhwcCBcCisgIC4uL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvS2V5RFNBLmNwcCBcCisgIC4uL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvS2V5RUMuY3BwIFwKKyAgLi4vc3JjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9LZXlITUFDLmhwcCBcCisgIC4uL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvSGFzaEhNQUMuaHBwIFwKKyAgLi4vc3JjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9TeW1tZXRyaWNLZXkuaHBwIFwKKyAgLi4vc3JjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9TeW1tZXRyaWNLZXkuY3BwIFwKKyAgLi4vc3JjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9LZXlITUFDLmNwcAorCitFWFRSQV9ESVNUID0gXAorICAuLi9zcmMvdXRpbHMvd2ludXRpbHMvWFNFQ1VSSVJlc29sdmVyR2VuZXJpY1dpbjMyLmNwcCBcCisgIC4uL3NyYy91dGlscy93aW51dGlscy9YU0VDU09BUFJlcXVlc3RvclNpbXBsZVdpbjMyLmNwcCBcCisgIC4uL3NyYy91dGlscy93aW51dGlscy9YU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtLmNwcCBcCisgIC4uL3NyYy91dGlscy93aW51dGlscy9YU0VDVVJJUmVzb2x2ZXJHZW5lcmljV2luMzIuaHBwIFwKKyAgLi4vc3JjL3V0aWxzL3dpbnV0aWxzL1hTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0uaHBwIFwKKyAgLi4vc3JjL2VuYy9OU1MvTlNTQ3J5cHRvSGFzaC5ocHAgXAorICAuLi9zcmMvZW5jL05TUy9OU1NDcnlwdG9YNTA5LmNwcCBcCisgIC4uL3NyYy9lbmMvTlNTL05TU0NyeXB0b0tleURTQS5ocHAgXAorICAuLi9zcmMvZW5jL05TUy9OU1NDcnlwdG9IYXNoSE1BQy5jcHAgXAorICAuLi9zcmMvZW5jL05TUy9OU1NDcnlwdG9LZXlSU0EuaHBwIFwKKyAgLi4vc3JjL2VuYy9OU1MvTlNTQ3J5cHRvS2V5SE1BQy5ocHAgXAorICAuLi9zcmMvZW5jL05TUy9OU1NDcnlwdG9IYXNoLmNwcCBcCisgIC4uL3NyYy9lbmMvTlNTL05TU0NyeXB0b0tleURTQS5jcHAgXAorICAuLi9zcmMvZW5jL05TUy9OU1NDcnlwdG9Qcm92aWRlci5jcHAgXAorICAuLi9zcmMvZW5jL05TUy9OU1NDcnlwdG9TeW1tZXRyaWNLZXkuaHBwIFwKKyAgLi4vc3JjL2VuYy9OU1MvTlNTQ3J5cHRvSGFzaEhNQUMuaHBwIFwKKyAgLi4vc3JjL2VuYy9OU1MvTlNTQ3J5cHRvWDUwOS5ocHAgXAorICAuLi9zcmMvZW5jL05TUy9OU1NDcnlwdG9TeW1tZXRyaWNLZXkuY3BwIFwKKyAgLi4vc3JjL2VuYy9OU1MvTlNTQ3J5cHRvUHJvdmlkZXIuaHBwIFwKKyAgLi4vc3JjL2VuYy9OU1MvTlNTQ3J5cHRvS2V5UlNBLmNwcCBcCisgIC4uL3NyYy9lbmMvTlNTL05TU0NyeXB0b0tleUhNQUMuY3BwIFwKKyAgLi4vc3JjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9Qcm92aWRlci5jcHAgXAorICAuLi9zcmMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b0tleUhNQUMuaHBwIFwKKyAgLi4vc3JjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9IYXNoLmNwcCBcCisgIC4uL3NyYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvS2V5RFNBLmNwcCBcCisgIC4uL3NyYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvSGFzaEhNQUMuaHBwIFwKKyAgLi4vc3JjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9LZXlEU0EuaHBwIFwKKyAgLi4vc3JjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9TeW1tZXRyaWNLZXkuaHBwIFwKKyAgLi4vc3JjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9YNTA5LmhwcCBcCisgIC4uL3NyYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvS2V5UlNBLmhwcCBcCisgIC4uL3NyYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvWDUwOS5jcHAgXAorICAuLi9zcmMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b0hhc2hITUFDLmNwcCBcCisgIC4uL3NyYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvSGFzaC5ocHAgXAorICAuLi9zcmMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b0tleVJTQS5jcHAgXAorICAuLi9zcmMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b1Byb3ZpZGVyLmhwcCBcCisgIC4uL3NyYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvU3ltbWV0cmljS2V5LmNwcCBcCisgIC4uL3NyYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvS2V5SE1BQy5jcHAKKworIworIyBOb3cgdGhlIGxpYnJhcnkgc3BlY2lmaWMgYnVpbGQgaXRlbXMKKyMKKworSU5DTFVERVMgPSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZQorbGlieG1sX3NlY3VyaXR5X2NfbGFfTERGTEFHUyA9IFwKKyAgLXZlcnNpb24taW5mbyAke3BhY2thZ2VfbGlidG9vbF92ZXJzaW9ufQpkaWZmIC0tZ2l0IGEvYy9tNC9hY3hfcHRocmVhZC5tNCBiL2MvbTQvYWN4X3B0aHJlYWQubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNmMWQyOQotLS0gL2Rldi9udWxsCisrKyBiL2MvbTQvYWN4X3B0aHJlYWQubTQKQEAgLTAsMCArMSwyODcgQEAKKyMjIyMjIGh0dHA6Ly9hdXRvY29uZi1hcmNoaXZlLmNyeXAudG8vYWN4X3B0aHJlYWQuaHRtbAorIworIyBTWU5PUFNJUworIworIyAgIEFDWF9QVEhSRUFEKFtBQ1RJT04tSUYtRk9VTkRbLCBBQ1RJT04tSUYtTk9ULUZPVU5EXV0pCisjCisjIERFU0NSSVBUSU9OCisjCisjICAgVGhpcyBtYWNybyBmaWd1cmVzIG91dCBob3cgdG8gYnVpbGQgQyBwcm9ncmFtcyB1c2luZyBQT1NJWCB0aHJlYWRzLgorIyAgIEl0IHNldHMgdGhlIFBUSFJFQURfTElCUyBvdXRwdXQgdmFyaWFibGUgdG8gdGhlIHRocmVhZHMgbGlicmFyeSBhbmQKKyMgICBsaW5rZXIgZmxhZ3MsIGFuZCB0aGUgUFRIUkVBRF9DRkxBR1Mgb3V0cHV0IHZhcmlhYmxlIHRvIGFueSBzcGVjaWFsCisjICAgQyBjb21waWxlciBmbGFncyB0aGF0IGFyZSBuZWVkZWQuIChUaGUgdXNlciBjYW4gYWxzbyBmb3JjZSBjZXJ0YWluCisjICAgY29tcGlsZXIgZmxhZ3MvbGlicyB0byBiZSB0ZXN0ZWQgYnkgc2V0dGluZyB0aGVzZSBlbnZpcm9ubWVudAorIyAgIHZhcmlhYmxlcy4pCisjCisjICAgQWxzbyBzZXRzIFBUSFJFQURfQ0MgdG8gYW55IHNwZWNpYWwgQyBjb21waWxlciB0aGF0IGlzIG5lZWRlZCBmb3IKKyMgICBtdWx0aS10aHJlYWRlZCBwcm9ncmFtcyAoZGVmYXVsdHMgdG8gdGhlIHZhbHVlIG9mIENDIG90aGVyd2lzZSkuCisjICAgKFRoaXMgaXMgbmVjZXNzYXJ5IG9uIEFJWCB0byB1c2UgdGhlIHNwZWNpYWwgY2NfciBjb21waWxlciBhbGlhcy4pCisjCisjICAgTk9URTogWW91IGFyZSBhc3N1bWVkIHRvIG5vdCBvbmx5IGNvbXBpbGUgeW91ciBwcm9ncmFtIHdpdGggdGhlc2UKKyMgICBmbGFncywgYnV0IGFsc28gbGluayBpdCB3aXRoIHRoZW0gYXMgd2VsbC4gZS5nLiB5b3Ugc2hvdWxkIGxpbmsKKyMgICB3aXRoICRQVEhSRUFEX0NDICRDRkxBR1MgJFBUSFJFQURfQ0ZMQUdTICRMREZMQUdTIC4uLiAkUFRIUkVBRF9MSUJTCisjICAgJExJQlMKKyMKKyMgICBJZiB5b3UgYXJlIG9ubHkgYnVpbGRpbmcgdGhyZWFkcyBwcm9ncmFtcywgeW91IG1heSB3aXNoIHRvIHVzZQorIyAgIHRoZXNlIHZhcmlhYmxlcyBpbiB5b3VyIGRlZmF1bHQgTElCUywgQ0ZMQUdTLCBhbmQgQ0M6CisjCisjICAgICAgICAgIExJQlM9IiRQVEhSRUFEX0xJQlMgJExJQlMiCisjICAgICAgICAgIENGTEFHUz0iJENGTEFHUyAkUFRIUkVBRF9DRkxBR1MiCisjICAgICAgICAgIENDPSIkUFRIUkVBRF9DQyIKKyMKKyMgICBJbiBhZGRpdGlvbiwgaWYgdGhlIFBUSFJFQURfQ1JFQVRFX0pPSU5BQkxFIHRocmVhZC1hdHRyaWJ1dGUKKyMgICBjb25zdGFudCBoYXMgYSBub25zdGFuZGFyZCBuYW1lLCBkZWZpbmVzIFBUSFJFQURfQ1JFQVRFX0pPSU5BQkxFIHRvCisjICAgdGhhdCBuYW1lIChlLmcuIFBUSFJFQURfQ1JFQVRFX1VOREVUQUNIRUQgb24gQUlYKS4KKyMKKyMgICBBQ1RJT04tSUYtRk9VTkQgaXMgYSBsaXN0IG9mIHNoZWxsIGNvbW1hbmRzIHRvIHJ1biBpZiBhIHRocmVhZHMKKyMgICBsaWJyYXJ5IGlzIGZvdW5kLCBhbmQgQUNUSU9OLUlGLU5PVC1GT1VORCBpcyBhIGxpc3Qgb2YgY29tbWFuZHMgdG8KKyMgICBydW4gaXQgaWYgaXQgaXMgbm90IGZvdW5kLiBJZiBBQ1RJT04tSUYtRk9VTkQgaXMgbm90IHNwZWNpZmllZCwgdGhlCisjICAgZGVmYXVsdCBhY3Rpb24gd2lsbCBkZWZpbmUgSEFWRV9QVEhSRUFELgorIworIyAgIFBsZWFzZSBsZXQgdGhlIGF1dGhvcnMga25vdyBpZiB0aGlzIG1hY3JvIGZhaWxzIG9uIGFueSBwbGF0Zm9ybSwgb3IKKyMgICBpZiB5b3UgaGF2ZSBhbnkgb3RoZXIgc3VnZ2VzdGlvbnMgb3IgY29tbWVudHMuIFRoaXMgbWFjcm8gd2FzIGJhc2VkCisjICAgb24gd29yayBieSBTR0ogb24gYXV0b2NvbmYgc2NyaXB0cyBmb3IgRkZUVyAoaHR0cDovL3d3dy5mZnR3Lm9yZy8pCisjICAgKHdpdGggaGVscCBmcm9tIE0uIEZyaWdvKSwgYXMgd2VsbCBhcyBhY19wdGhyZWFkIGFuZCBoYl9wdGhyZWFkCisjICAgbWFjcm9zIHBvc3RlZCBieSBBbGVqYW5kcm8gRm9yZXJvIEN1ZXJ2byB0byB0aGUgYXV0b2NvbmYgbWFjcm8KKyMgICByZXBvc2l0b3J5LiBXZSBhcmUgYWxzbyBncmF0ZWZ1bCBmb3IgdGhlIGhlbHBmdWwgZmVlZGJhY2sgb2YKKyMgICBudW1lcm91cyB1c2Vycy4KKyMKKyMgTEFTVCBNT0RJRklDQVRJT04KKyMKKyMgICAyMDA2LTA1LTI5CisjCisjIENPUFlMRUZUCisjCisjICAgQ29weXJpZ2h0IChjKSAyMDA2IFN0ZXZlbiBHLiBKb2huc29uIDxzdGV2ZW5qQGFsdW0ubWl0LmVkdT4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyMgICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUKKyMgICBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyMgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorIyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BCisjICAgMDIxMTEtMTMwNywgVVNBLgorIworIyAgIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHRoZSByZXNwZWN0aXZlIEF1dG9jb25mIE1hY3JvJ3MgY29weXJpZ2h0CisjICAgb3duZXIgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IHRoZQorIyAgIGNvbmZpZ3VyZSBzY3JpcHRzIHRoYXQgYXJlIHRoZSBvdXRwdXQgb2YgQXV0b2NvbmYgd2hlbiBwcm9jZXNzaW5nCisjICAgdGhlIE1hY3JvLiBZb3UgbmVlZCBub3QgZm9sbG93IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisjICAgTGljZW5zZSB3aGVuIHVzaW5nIG9yIGRpc3RyaWJ1dGluZyBzdWNoIHNjcmlwdHMsIGV2ZW4gdGhvdWdoCisjICAgcG9ydGlvbnMgb2YgdGhlIHRleHQgb2YgdGhlIE1hY3JvIGFwcGVhciBpbiB0aGVtLiBUaGUgR05VIEdlbmVyYWwKKyMgICBQdWJsaWMgTGljZW5zZSAoR1BMKSBkb2VzIGdvdmVybiBhbGwgb3RoZXIgdXNlIG9mIHRoZSBtYXRlcmlhbCB0aGF0CisjICAgY29uc3RpdHV0ZXMgdGhlIEF1dG9jb25mIE1hY3JvLgorIworIyAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCBhcHBsaWVzIHRvIHZlcnNpb25zIG9mIHRoZQorIyAgIEF1dG9jb25mIE1hY3JvIHJlbGVhc2VkIGJ5IHRoZSBBdXRvY29uZiBNYWNybyBBcmNoaXZlLiBXaGVuIHlvdQorIyAgIG1ha2UgYW5kIGRpc3RyaWJ1dGUgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBBdXRvY29uZiBNYWNybywgeW91CisjICAgbWF5IGV4dGVuZCB0aGlzIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwgdG8gYXBwbHkgdG8geW91cgorIyAgIG1vZGlmaWVkIHZlcnNpb24gYXMgd2VsbC4KKworQUNfREVGVU4oW0FDWF9QVEhSRUFEXSwgWworQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQorQUNfTEFOR19TQVZFCitBQ19MQU5HX0MKK2FjeF9wdGhyZWFkX29rPW5vCisKKyMgV2UgdXNlZCB0byBjaGVjayBmb3IgcHRocmVhZC5oIGZpcnN0LCBidXQgdGhpcyBmYWlscyBpZiBwdGhyZWFkLmgKKyMgcmVxdWlyZXMgc3BlY2lhbCBjb21waWxlciBmbGFncyAoZS5nLiBvbiBUcnVlNjQgb3IgU2VxdWVudCkuCisjIEl0IGdldHMgY2hlY2tlZCBmb3IgaW4gdGhlIGxpbmsgdGVzdCBhbnl3YXkuCisKKyMgRmlyc3Qgb2YgYWxsLCBjaGVjayBpZiB0aGUgdXNlciBoYXMgc2V0IGFueSBvZiB0aGUgUFRIUkVBRF9MSUJTLAorIyBldGNldGVyYSBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGFuZCBpZiB0aHJlYWRzIGxpbmtpbmcgd29ya3MgdXNpbmcKKyMgdGhlbToKK2lmIHRlc3QgeCIkUFRIUkVBRF9MSUJTJFBUSFJFQURfQ0ZMQUdTIiAhPSB4OyB0aGVuCisgICAgICAgIHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorICAgICAgICBDRkxBR1M9IiRDRkxBR1MgJFBUSFJFQURfQ0ZMQUdTIgorICAgICAgICBzYXZlX0xJQlM9IiRMSUJTIgorICAgICAgICBMSUJTPSIkUFRIUkVBRF9MSUJTICRMSUJTIgorICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBwdGhyZWFkX2pvaW4gaW4gTElCUz0kUFRIUkVBRF9MSUJTIHdpdGggQ0ZMQUdTPSRQVEhSRUFEX0NGTEFHU10pCisgICAgICAgIEFDX1RSWV9MSU5LX0ZVTkMocHRocmVhZF9qb2luLCBhY3hfcHRocmVhZF9vaz15ZXMpCisgICAgICAgIEFDX01TR19SRVNVTFQoJGFjeF9wdGhyZWFkX29rKQorICAgICAgICBpZiB0ZXN0IHgiJGFjeF9wdGhyZWFkX29rIiA9IHhubzsgdGhlbgorICAgICAgICAgICAgICAgIFBUSFJFQURfTElCUz0iIgorICAgICAgICAgICAgICAgIFBUSFJFQURfQ0ZMQUdTPSIiCisgICAgICAgIGZpCisgICAgICAgIExJQlM9IiRzYXZlX0xJQlMiCisgICAgICAgIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgorZmkKKworIyBXZSBtdXN0IGNoZWNrIGZvciB0aGUgdGhyZWFkcyBsaWJyYXJ5IHVuZGVyIGEgbnVtYmVyIG9mIGRpZmZlcmVudAorIyBuYW1lczsgdGhlIG9yZGVyaW5nIGlzIHZlcnkgaW1wb3J0YW50IGJlY2F1c2Ugc29tZSBzeXN0ZW1zCisjIChlLmcuIERFQykgaGF2ZSBib3RoIC1scHRocmVhZCBhbmQgLWxwdGhyZWFkcywgd2hlcmUgb25lIG9mIHRoZQorIyBsaWJyYXJpZXMgaXMgYnJva2VuIChub24tUE9TSVgpLgorCisjIENyZWF0ZSBhIGxpc3Qgb2YgdGhyZWFkIGZsYWdzIHRvIHRyeS4gIEl0ZW1zIHN0YXJ0aW5nIHdpdGggYSAiLSIgYXJlCisjIEMgY29tcGlsZXIgZmxhZ3MsIGFuZCBvdGhlciBpdGVtcyBhcmUgbGlicmFyeSBuYW1lcywgZXhjZXB0IGZvciAibm9uZSIKKyMgd2hpY2ggaW5kaWNhdGVzIHRoYXQgd2UgdHJ5IHdpdGhvdXQgYW55IGZsYWdzIGF0IGFsbCwgYW5kICJwdGhyZWFkLWNvbmZpZyIKKyMgd2hpY2ggaXMgYSBwcm9ncmFtIHJldHVybmluZyB0aGUgZmxhZ3MgZm9yIHRoZSBQdGggZW11bGF0aW9uIGxpYnJhcnkuCisKK2FjeF9wdGhyZWFkX2ZsYWdzPSJwdGhyZWFkcyBub25lIC1LdGhyZWFkIC1rdGhyZWFkIGx0aHJlYWQgLXB0aHJlYWQgLXB0aHJlYWRzIC1tdGhyZWFkcyBwdGhyZWFkIC0tdGhyZWFkLXNhZmUgLW10IHB0aHJlYWQtY29uZmlnIgorCisjIFRoZSBvcmRlcmluZyAqaXMqIChzb21ldGltZXMpIGltcG9ydGFudC4gIFNvbWUgbm90ZXMgb24gdGhlCisjIGluZGl2aWR1YWwgaXRlbXMgZm9sbG93OgorCisjIHB0aHJlYWRzOiBBSVggKG11c3QgY2hlY2sgdGhpcyBiZWZvcmUgLWxwdGhyZWFkKQorIyBub25lOiBpbiBjYXNlIHRocmVhZHMgYXJlIGluIGxpYmM7IHNob3VsZCBiZSB0cmllZCBiZWZvcmUgLUt0aHJlYWQgYW5kCisjICAgICAgIG90aGVyIGNvbXBpbGVyIGZsYWdzIHRvIHByZXZlbnQgY29udGludWFsIGNvbXBpbGVyIHdhcm5pbmdzCisjIC1LdGhyZWFkOiBTZXF1ZW50ICh0aHJlYWRzIGluIGxpYmMsIGJ1dCAtS3RocmVhZCBuZWVkZWQgZm9yIHB0aHJlYWQuaCkKKyMgLWt0aHJlYWQ6IEZyZWVCU0Qga2VybmVsIHRocmVhZHMgKHByZWZlcnJlZCB0byAtcHRocmVhZCBzaW5jZSBTTVAtYWJsZSkKKyMgbHRocmVhZDogTGludXhUaHJlYWRzIHBvcnQgb24gRnJlZUJTRCAoYWxzbyBwcmVmZXJyZWQgdG8gLXB0aHJlYWQpCisjIC1wdGhyZWFkOiBMaW51eC9nY2MgKGtlcm5lbCB0aHJlYWRzKSwgQlNEL2djYyAodXNlcmxhbmQgdGhyZWFkcykKKyMgLXB0aHJlYWRzOiBTb2xhcmlzL2djYworIyAtbXRocmVhZHM6IE1pbmd3MzIvZ2NjLCBMeW54L2djYworIyAtbXQ6IFN1biBXb3Jrc2hvcCBDIChtYXkgb25seSBsaW5rIFN1bk9TIHRocmVhZHMgWy1sdGhyZWFkXSwgYnV0IGl0CisjICAgICAgZG9lc24ndCBodXJ0IHRvIGNoZWNrIHNpbmNlIHRoaXMgc29tZXRpbWVzIGRlZmluZXMgcHRocmVhZHMgdG9vOworIyAgICAgIGFsc28gZGVmaW5lcyAtRF9SRUVOVFJBTlQpCisjICAgICAgLi4uIC1tdCBpcyBhbHNvIHRoZSBwdGhyZWFkcyBmbGFnIGZvciBIUC9hQ0MKKyMgcHRocmVhZDogTGludXgsIGV0Y2V0ZXJhCisjIC0tdGhyZWFkLXNhZmU6IEtBSSBDKysKKyMgcHRocmVhZC1jb25maWc6IHVzZSBwdGhyZWFkLWNvbmZpZyBwcm9ncmFtIChmb3IgR05VIFB0aCBsaWJyYXJ5KQorCitjYXNlICIke2hvc3RfY3B1fS0ke2hvc3Rfb3N9IiBpbgorICAgICAgICAqc29sYXJpcyopCisKKyAgICAgICAgIyBPbiBTb2xhcmlzIChhdCBsZWFzdCwgZm9yIHNvbWUgdmVyc2lvbnMpLCBsaWJjIGNvbnRhaW5zIHN0dWJiZWQKKyAgICAgICAgIyAobm9uLWZ1bmN0aW9uYWwpIHZlcnNpb25zIG9mIHRoZSBwdGhyZWFkcyByb3V0aW5lcywgc28gbGluay1iYXNlZAorICAgICAgICAjIHRlc3RzIHdpbGwgZXJyb25lb3VzbHkgc3VjY2VlZC4gIChXZSBuZWVkIHRvIGxpbmsgd2l0aCAtcHRocmVhZHMvLW10LworICAgICAgICAjIC1scHRocmVhZC4pICAoVGhlIHN0dWJzIGFyZSBtaXNzaW5nIHB0aHJlYWRfY2xlYW51cF9wdXNoLCBvciByYXRoZXIKKyAgICAgICAgIyBhIGZ1bmN0aW9uIGNhbGxlZCBieSB0aGlzIG1hY3JvLCBzbyB3ZSBjb3VsZCBjaGVjayBmb3IgdGhhdCwgYnV0CisgICAgICAgICMgd2hvIGtub3dzIHdoZXRoZXIgdGhleSdsbCBzdHViIHRoYXQgdG9vIGluIGEgZnV0dXJlIGxpYmMuKSAgU28sCisgICAgICAgICMgd2UnbGwganVzdCBsb29rIGZvciAtcHRocmVhZHMgYW5kIC1scHRocmVhZCBmaXJzdDoKKworICAgICAgICBhY3hfcHRocmVhZF9mbGFncz0iLXB0aHJlYWRzIHB0aHJlYWQgLW10IC1wdGhyZWFkICRhY3hfcHRocmVhZF9mbGFncyIKKyAgICAgICAgOzsKK2VzYWMKKworaWYgdGVzdCB4IiRhY3hfcHRocmVhZF9vayIgPSB4bm87IHRoZW4KK2ZvciBmbGFnIGluICRhY3hfcHRocmVhZF9mbGFnczsgZG8KKworICAgICAgICBjYXNlICRmbGFnIGluCisgICAgICAgICAgICAgICAgbm9uZSkKKyAgICAgICAgICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgcHRocmVhZHMgd29yayB3aXRob3V0IGFueSBmbGFnc10pCisgICAgICAgICAgICAgICAgOzsKKworICAgICAgICAgICAgICAgIC0qKQorICAgICAgICAgICAgICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBwdGhyZWFkcyB3b3JrIHdpdGggJGZsYWddKQorICAgICAgICAgICAgICAgIFBUSFJFQURfQ0ZMQUdTPSIkZmxhZyIKKyAgICAgICAgICAgICAgICA7OworCisJCXB0aHJlYWQtY29uZmlnKQorCQlBQ19DSEVDS19QUk9HKGFjeF9wdGhyZWFkX2NvbmZpZywgcHRocmVhZC1jb25maWcsIHllcywgbm8pCisJCWlmIHRlc3QgeCIkYWN4X3B0aHJlYWRfY29uZmlnIiA9IHhubzsgdGhlbiBjb250aW51ZTsgZmkKKwkJUFRIUkVBRF9DRkxBR1M9ImBwdGhyZWFkLWNvbmZpZyAtLWNmbGFnc2AiCisJCVBUSFJFQURfTElCUz0iYHB0aHJlYWQtY29uZmlnIC0tbGRmbGFnc2AgYHB0aHJlYWQtY29uZmlnIC0tbGlic2AiCisJCTs7CisKKyAgICAgICAgICAgICAgICAqKQorICAgICAgICAgICAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIHRoZSBwdGhyZWFkcyBsaWJyYXJ5IC1sJGZsYWddKQorICAgICAgICAgICAgICAgIFBUSFJFQURfTElCUz0iLWwkZmxhZyIKKyAgICAgICAgICAgICAgICA7OworICAgICAgICBlc2FjCisKKyAgICAgICAgc2F2ZV9MSUJTPSIkTElCUyIKKyAgICAgICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisgICAgICAgIExJQlM9IiRQVEhSRUFEX0xJQlMgJExJQlMiCisgICAgICAgIENGTEFHUz0iJENGTEFHUyAkUFRIUkVBRF9DRkxBR1MiCisKKyAgICAgICAgIyBDaGVjayBmb3IgdmFyaW91cyBmdW5jdGlvbnMuICBXZSBtdXN0IGluY2x1ZGUgcHRocmVhZC5oLAorICAgICAgICAjIHNpbmNlIHNvbWUgZnVuY3Rpb25zIG1heSBiZSBtYWNyb3MuICAoT24gdGhlIFNlcXVlbnQsIHdlCisgICAgICAgICMgbmVlZCBhIHNwZWNpYWwgZmxhZyAtS3RocmVhZCB0byBtYWtlIHRoaXMgaGVhZGVyIGNvbXBpbGUuKQorICAgICAgICAjIFdlIGNoZWNrIGZvciBwdGhyZWFkX2pvaW4gYmVjYXVzZSBpdCBpcyBpbiAtbHB0aHJlYWQgb24gSVJJWAorICAgICAgICAjIHdoaWxlIHB0aHJlYWRfY3JlYXRlIGlzIGluIGxpYmMuICBXZSBjaGVjayBmb3IgcHRocmVhZF9hdHRyX2luaXQKKyAgICAgICAgIyBkdWUgdG8gREVDIGNyYXppbmVzcyB3aXRoIC1scHRocmVhZHMuICBXZSBjaGVjayBmb3IKKyAgICAgICAgIyBwdGhyZWFkX2NsZWFudXBfcHVzaCBiZWNhdXNlIGl0IGlzIG9uZSBvZiB0aGUgZmV3IHB0aHJlYWQKKyAgICAgICAgIyBmdW5jdGlvbnMgb24gU29sYXJpcyB0aGF0IGRvZXNuJ3QgaGF2ZSBhIG5vbi1mdW5jdGlvbmFsIGxpYmMgc3R1Yi4KKyAgICAgICAgIyBXZSB0cnkgcHRocmVhZF9jcmVhdGUgb24gZ2VuZXJhbCBwcmluY2lwbGVzLgorICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPHB0aHJlYWQuaD5dLAorICAgICAgICAgICAgICAgICAgICBbcHRocmVhZF90IHRoOyBwdGhyZWFkX2pvaW4odGgsIDApOworICAgICAgICAgICAgICAgICAgICAgcHRocmVhZF9hdHRyX2luaXQoMCk7IHB0aHJlYWRfY2xlYW51cF9wdXNoKDAsIDApOworICAgICAgICAgICAgICAgICAgICAgcHRocmVhZF9jcmVhdGUoMCwwLDAsMCk7IHB0aHJlYWRfY2xlYW51cF9wb3AoMCk7IF0sCisgICAgICAgICAgICAgICAgICAgIFthY3hfcHRocmVhZF9vaz15ZXNdKQorCisgICAgICAgIExJQlM9IiRzYXZlX0xJQlMiCisgICAgICAgIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgorCisgICAgICAgIEFDX01TR19SRVNVTFQoJGFjeF9wdGhyZWFkX29rKQorICAgICAgICBpZiB0ZXN0ICJ4JGFjeF9wdGhyZWFkX29rIiA9IHh5ZXM7IHRoZW4KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZmkKKworICAgICAgICBQVEhSRUFEX0xJQlM9IiIKKyAgICAgICAgUFRIUkVBRF9DRkxBR1M9IiIKK2RvbmUKK2ZpCisKKyMgVmFyaW91cyBvdGhlciBjaGVja3M6CitpZiB0ZXN0ICJ4JGFjeF9wdGhyZWFkX29rIiA9IHh5ZXM7IHRoZW4KKyAgICAgICAgc2F2ZV9MSUJTPSIkTElCUyIKKyAgICAgICAgTElCUz0iJFBUSFJFQURfTElCUyAkTElCUyIKKyAgICAgICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisgICAgICAgIENGTEFHUz0iJENGTEFHUyAkUFRIUkVBRF9DRkxBR1MiCisKKyAgICAgICAgIyBEZXRlY3QgQUlYIGxvc3NhZ2U6IEpPSU5BQkxFIGF0dHJpYnV0ZSBpcyBjYWxsZWQgVU5ERVRBQ0hFRC4KKwlBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBqb2luYWJsZSBwdGhyZWFkIGF0dHJpYnV0ZV0pCisJYXR0cl9uYW1lPXVua25vd24KKwlmb3IgYXR0ciBpbiBQVEhSRUFEX0NSRUFURV9KT0lOQUJMRSBQVEhSRUFEX0NSRUFURV9VTkRFVEFDSEVEOyBkbworCSAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPHB0aHJlYWQuaD5dLCBbaW50IGF0dHI9JGF0dHI7IHJldHVybiBhdHRyO10sCisgICAgICAgICAgICAgICAgICAgICAgICBbYXR0cl9uYW1lPSRhdHRyOyBicmVha10pCisJZG9uZQorICAgICAgICBBQ19NU0dfUkVTVUxUKCRhdHRyX25hbWUpCisgICAgICAgIGlmIHRlc3QgIiRhdHRyX25hbWUiICE9IFBUSFJFQURfQ1JFQVRFX0pPSU5BQkxFOyB0aGVuCisgICAgICAgICAgICBBQ19ERUZJTkVfVU5RVU9URUQoUFRIUkVBRF9DUkVBVEVfSk9JTkFCTEUsICRhdHRyX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmluZSB0byBuZWNlc3Nhcnkgc3ltYm9sIGlmIHRoaXMgY29uc3RhbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcyBhIG5vbi1zdGFuZGFyZCBuYW1lIG9uIHlvdXIgc3lzdGVtLl0pCisgICAgICAgIGZpCisKKyAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtpZiBtb3JlIHNwZWNpYWwgZmxhZ3MgYXJlIHJlcXVpcmVkIGZvciBwdGhyZWFkc10pCisgICAgICAgIGZsYWc9bm8KKyAgICAgICAgY2FzZSAiJHtob3N0X2NwdX0tJHtob3N0X29zfSIgaW4KKyAgICAgICAgICAgICAgICAqLWFpeCogfCAqLWZyZWVic2QqKSAgICAgZmxhZz0iLURfVEhSRUFEX1NBRkUiOzsKKyAgICAgICAgICAgICAgICAqLW9zZiogfCAqLWhwdXgqKSBmbGFnPSItRF9SRUVOVFJBTlQiOzsKKyAgICAgICAgICAgICAgICAqc29sYXJpcyopCisgICAgICAgICAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSAieWVzIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICBmbGFnPSItRF9SRUVOVFJBTlQiCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBmbGFnPSItbXQgLURfUkVFTlRSQU5UIgorICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICBBQ19NU0dfUkVTVUxUKCR7ZmxhZ30pCisgICAgICAgIGlmIHRlc3QgIngkZmxhZyIgIT0geG5vOyB0aGVuCisgICAgICAgICAgICBQVEhSRUFEX0NGTEFHUz0iJGZsYWcgJFBUSFJFQURfQ0ZMQUdTIgorICAgICAgICBmaQorCisgICAgICAgIExJQlM9IiRzYXZlX0xJQlMiCisgICAgICAgIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgorCisgICAgICAgICMgTW9yZSBBSVggbG9zc2FnZTogbXVzdCBjb21waWxlIHdpdGggeGxjX3Igb3IgY2NfcgorCWlmIHRlc3QgeCIkR0NDIiAhPSB4eWVzOyB0aGVuCisgICAgICAgICAgQUNfQ0hFQ0tfUFJPR1MoUFRIUkVBRF9DQywgeGxjX3IgY2NfciwgJHtDQ30pCisgICAgICAgIGVsc2UKKyAgICAgICAgICBQVEhSRUFEX0NDPSRDQworCWZpCitlbHNlCisgICAgICAgIFBUSFJFQURfQ0M9IiRDQyIKK2ZpCisKK0FDX1NVQlNUKFBUSFJFQURfTElCUykKK0FDX1NVQlNUKFBUSFJFQURfQ0ZMQUdTKQorQUNfU1VCU1QoUFRIUkVBRF9DQykKKworIyBGaW5hbGx5LCBleGVjdXRlIEFDVElPTi1JRi1GT1VORC9BQ1RJT04tSUYtTk9ULUZPVU5EOgoraWYgdGVzdCB4IiRhY3hfcHRocmVhZF9vayIgPSB4eWVzOyB0aGVuCisgICAgICAgIGlmZWxzZShbJDFdLCxBQ19ERUZJTkUoSEFWRV9QVEhSRUFELDEsW0RlZmluZSBpZiB5b3UgaGF2ZSBQT1NJWCB0aHJlYWRzIGxpYnJhcmllcyBhbmQgaGVhZGVyIGZpbGVzLl0pLFskMV0pCisgICAgICAgIDoKK2Vsc2UKKyAgICAgICAgYWN4X3B0aHJlYWRfb2s9bm8KKyAgICAgICAgJDIKK2ZpCitBQ19MQU5HX1JFU1RPUkUKK10pZG5sIEFDWF9QVEhSRUFECmRpZmYgLS1naXQgYS9jL3NyYy9iYXNpY1Rlc3RzLnBsIGIvYy9zcmMvYmFzaWNUZXN0cy5wbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41M2UwODBiCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvYmFzaWNUZXN0cy5wbApAQCAtMCwwICsxLDQyMSBAQAorIyBDb3B5cmlnaHQgMjAwMi0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyMKKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMKKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworIyBBbGwgdGhlc2Ugc2V0dGluZyBjb21lIGZyb20gdGhlIGNvbmZpZ3VyZSBzY3JpcHQKKyMgV2UgdXNlIGNvbmZpZ3VyZSB0byBkbyBtb3N0IG9mIHRoZSBoYXJkIHdvcmsgYXMgaXQgaXMgbW9yZQorIyBkZXNpZ25lZCB0byBoYW5kbGUgZGlmZmVyZW50IHN5c3RlbSBjb21wbGV4aXR5IHRoYW4gbWFrZQorIworCisjIEEgcGVybCBiYXNlZCB0ZXN0IHNjcmlwdCBmb3IgcnVubmluZyBhbGwgdGhlIGludGVyb3AgZXhhbXBsZXMKKworIyBUaGVyZSBjYW4gYmUgYSBudW1iZXIgb2YgZmFpbHVyZXMuCisjCisjIDEuIHRoZSBmaWxlIGh0dHA6Ly94bWxkc2lnLnBvdGhvbGUuY29tL3htbC1zdHlsZXNoZWV0LnR4dCBubworIyAgICBsb25nZXIgZXhpc3RzLiAgSSBoYXZlIGl0IG9uIGEgdGVzdCBodHRwIHNlcnZlciB0byBtYWtlIHRoZXNlCisjICAgIHRlc3RzIHdvcmsuCisjIDIuIElmIHlvdSBhcmUgbm90IG9ubGluZSB0byB0aGUgSW50ZXJuZXQsIHRoZSBjaGVja3MgZm9yIGRvY3VtZW50cworIyAgICBhdCB3d3cudzMub3JnIHdpbGwgYWxzbyBmYWlsLgorCityZXF1aXJlIDUuMDAwOwordXNlIHN0cmljdDsKKworIyBDb3VudGVycworCitteSAkZHNpZ19mYWlsdXJlX2NvdW50ID0gMDsKK215ICRkc2lnX3Bhc3NfY291bnQgPSAwOworbXkgJGRzaWdfc2tpcHBlZF9jb3VudCA9IDA7CisKK215ICR4ZW5jX2ZhaWx1cmVfY291bnQgPSAwOworbXkgJHhlbmNfcGFzc19jb3VudCA9IDA7CitteSAkeGVuY19za2lwcGVkX2NvdW50ID0gMDsKKworbXkgJGZhaWx1cmVfY291bnQgPSAwOworbXkgJHBhc3NfY291bnQgPSAwOworCitteSAkdG90YWxfZHNpZ19jb3VudCA9IDA7CitteSAkdG90YWxfeGVuY19jb3VudCA9IDA7CisKKyMgQ2hlY2tzaWcgc2V0dXAKK215ICRjaGVja3NpZ19hcmdzID0gIi14IjsKKworIyBQcm9ncmFtIHNldHVwCisKK215ICRjaGVja3NpZzsKK215ICRjaXBoZXI7CisKK215ICRjaGVja3NpZ192YzggPSAiLi4vQnVpbGQvV2luMzIvVkM4L0RlYnVnL2NoZWNrc2lnLmV4ZSI7CitteSAkY2lwaGVyX3ZjOCA9ICIuLi9CdWlsZC9XaW4zMi9WQzgvRGVidWcvY2lwaGVyLmV4ZSI7CisKK215ICRjaGVja3NpZ192YzcgPSAiLi4vQnVpbGQvV2luMzIvVkM3L0RlYnVnL2NoZWNrc2lnLmV4ZSI7CitteSAkY2lwaGVyX3ZjNyA9ICIuLi9CdWlsZC9XaW4zMi9WQzcvRGVidWcvY2lwaGVyLmV4ZSI7CisKK215ICRjaGVja3NpZ19yZWxlYXNlID0gIi4uL0J1aWxkL1dpbjMyL1ZDNi9SZWxlYXNlL2NoZWNrc2lnLmV4ZSI7CitteSAkY2lwaGVyX3JlbGVhc2UgPSAiLi4vQnVpbGQvV2luMzIvVkM2L1JlbGVhc2UvY2lwaGVyLmV4ZSI7CisKK215ICRjaGVja3NpZ192YzdyZWxlYXNlID0gIi4uL0J1aWxkL1dpbjMyL1ZDNy9SZWxlYXNlL2NoZWNrc2lnLmV4ZSI7CitteSAkY2lwaGVyX3ZjN3JlbGVhc2UgPSAiLi4vQnVpbGQvV2luMzIvVkM3L1JlbGVhc2UvY2lwaGVyLmV4ZSI7CisKK215ICRjaGVja3NpZ192YzhyZWxlYXNlID0gIi4uL0J1aWxkL1dpbjMyL1ZDOC9SZWxlYXNlL2NoZWNrc2lnLmV4ZSI7CitteSAkY2lwaGVyX3ZjOHJlbGVhc2UgPSAiLi4vQnVpbGQvV2luMzIvVkM4L1JlbGVhc2UvY2lwaGVyLmV4ZSI7CisKK2lmICgkXk8gPX4gbS9XaW4vKSB7CisgICRjaGVja3NpZyA9ICIuLi9CdWlsZC9XaW4zMi9WQzYvRGVidWcvY2hlY2tzaWcuZXhlIjsKKyAgJGNpcGhlciA9ICIuLi9CdWlsZC9XaW4zMi9WQzYvRGVidWcvY2lwaGVyLmV4ZSI7Cit9CitlbHNlIHsKKyAgJGNoZWNrc2lnID0gIi4uL2Jpbi9jaGVja3NpZyI7CisgICRjaXBoZXIgPSAiLi4vYmluL2NpcGhlciI7Cit9CisKKyMgRGlyZWN0b3J5IHNldHVwCitteSAkZGF0YV9kaXIgPSAiLi4vLi4vZGF0YSI7CisKKyMgRGlnaXRhbCBTaWduYXR1cmUgVGVzdHMKKworbXkgJGRzaWdfZmlsZSA9IDA7CitteSAkZHNpZ19hcmdzID0gMTsKKyMgRG9lcyB0aGlzIHRlc3QgcmVxdWlyZSBYYWxhbiAoeS9uKQorbXkgJGRzaWdfZmxhZ194YWxhbiA9IDI7CisjIERvZXMgdGhpcyB0ZXN0IHJlcXVpcmUgcG90aG9sZS5jb20gKHkvbikKK215ICRkc2lnX2ZsYWdfcG90aG9sZSA9IDM7CisKKyMgV2hhdCBjb21wb25lbnRzIGRvIHdlIGhhdmUgYXZhaWxhYmxlPworbXkgJGhhdmVfcG90aG9sZSA9IDE7CitteSAkaGF2ZV94YWxhbiA9IDE7CitteSAkaGF2ZV9hZXMgPSAxOworCisjIFdoYXQga2luZCBvZiB0ZXN0IHJlc3VsdHMgc2hvdWxkIHdlIGV4cGVjdD8KKyMgV2l0aG91dCB4YWxhbiwgMTMgdGVzdHMgd2lsbCBmYWlsCitteSAkbm9feGFsYW5fZmFpbHVyZXMgPSAxMzsKK215ICRleHBlY3RlZF9mYWlsdXJlcyA9IDA7CisKKyMgV2hhdCB0ZXN0cyBzaG91bGQgd2UgcnVuPworCitteSAkZG9lbmMgPSAxOworbXkgJGRvc2lnID0gMTsKKworIyBUaGUgZm9sbG93aW5nIGFycmF5IGRlZmluZXMgaG93IGNoZWNrc2lnIHdpbGwgYmUgY2FsbGVkIHRvIHZhbGlkYXRlIHRoZSBzaWcKKyMKKyMgVGhlIGZpZWxkcyBhcmU6CisjIEZpbGVuYW1lID0gdGhlIGZpbGUgdGhhdCBjb250YWlucyB0aGUgc2lnbmF0dXJlLiAgUmVsYXRpdmUgdG8gdGhlIGRhdGEgZGlyCisjIEZsYWdzID0gYWRkaXRpb25hbCBmbGFncyB0byBwYXNzIHRvIGNoZWNrc2lnCisjIFJlcXVpcmVzIFhhbGFuID0geS9uIC0gaWYgeSBvbmx5IHJ1biBpZiBYYWxhbiBhdmFpbGFibGUKKyMgUmVxdWlyZXMgcG90aG9sZSA9IHkvbiAtIGlmIHkgb25seSBydW4gaWYgcG90aG9sZSBzaXRlIGF2YWlsYWJsZQorCitteSBAZHNpZ19hcnJheT0oCisKKyJhdC9pYWlrL2l4c2lsL2NvcmVGZWF0dXJlcy9zaWduYXR1cmVzL2Fub255bW91c1JlZmVyZW5jZVNpZ25hdHVyZS54bWwsLWEsbixuIiwKKyJhdC9pYWlrL2l4c2lsL2NvcmVGZWF0dXJlcy9zaWduYXR1cmVzL21hbmlmZXN0U2lnbmF0dXJlLnhtbCwsbixuIiwKKworIyB3aWxsIGZhaWwgaWYgbm8gbmV0d29yaworCisiYXQvaWFpay9peHNpbC9jb3JlRmVhdHVyZXMvc2lnbmF0dXJlcy9zaWduYXR1cmVUeXBlc1NpZ25hdHVyZS54bWwsLHksbiIsCisiYXQvaWFpay9peHNpbC9zaWduYXR1cmVBbGdvcml0aG1zL3NpZ25hdHVyZXMvZFNBU2lnbmF0dXJlLnhtbCwsbixuIiwKKyJhdC9pYWlrL2l4c2lsL3NpZ25hdHVyZUFsZ29yaXRobXMvc2lnbmF0dXJlcy9oTUFDU2hvcnRTaWduYXR1cmUueG1sLC1oIHNlY3JldCxuLG4iLAorImF0L2lhaWsvaXhzaWwvc2lnbmF0dXJlQWxnb3JpdGhtcy9zaWduYXR1cmVzL2hNQUNTaWduYXR1cmUueG1sLC1oIHNlY3JldCxuLG4iLAorImF0L2lhaWsvaXhzaWwvc2lnbmF0dXJlQWxnb3JpdGhtcy9zaWduYXR1cmVzL3JTQVNpZ25hdHVyZS54bWwsLG4sbiIsCisKKyJhdC9pYWlrL2l4c2lsL3RyYW5zZm9ybXMvc2lnbmF0dXJlcy9iYXNlNjREZWNvZGVTaWduYXR1cmUueG1sLCxuLG4iLAorImF0L2lhaWsvaXhzaWwvdHJhbnNmb3Jtcy9zaWduYXR1cmVzL2MxNG5TaWduYXR1cmUueG1sLCxuLG4iLAorImF0L2lhaWsvaXhzaWwvdHJhbnNmb3Jtcy9zaWduYXR1cmVzL2VudmVsb3BlZFNpZ25hdHVyZVNpZ25hdHVyZS54bWwsLG4sbiIsCisiYXQvaWFpay9peHNpbC90cmFuc2Zvcm1zL3NpZ25hdHVyZXMveFBhdGhTaWduYXR1cmUueG1sLCx5LG4iLAorCisKKworImNvbS9yc2FzZWN1cml0eS9iZG91cm5hZWUvY2VydGoyMDFfZW52ZWxvcGVkLnhtbCwsbixuIiwKKyJjb20vcnNhc2VjdXJpdHkvYmRvdXJuYWVlL2NlcnRqMjAxX2VudmVsb3BpbmcueG1sLCxuLG4iLAorImllL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvZWMtbWVybGluLWlhaWtUZXN0cy10d28vc2lnbmF0dXJlLnhtbCwseSxuIiwKKyJpZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi1leGMtYzE0bi1vbmUvZXhjLXNpZ25hdHVyZS54bWwsLG4sbiIsCisKKyJpZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWVpZ2h0ZWVuL3NpZ25hdHVyZS1rZXluYW1lLnhtbCwtaSxuLG4iLAorImllL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZWlnaHRlZW4vc2lnbmF0dXJlLXJldHJpZXZhbG1ldGhvZC1yYXd4NTA5Y3J0LnhtbCwtaSxuLG4iLAorImllL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZWlnaHRlZW4vc2lnbmF0dXJlLXg1MDktY3J0LWNybC54bWwsLWksbixuIiwKKyJpZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWVpZ2h0ZWVuL3NpZ25hdHVyZS14NTA5LWNydC54bWwsLG4sbiIsCisiaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1laWdodGVlbi9zaWduYXR1cmUteDUwOS1pcy54bWwsLWksbixuIiwKKyJpZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWVpZ2h0ZWVuL3NpZ25hdHVyZS14NTA5LXNraS54bWwsLWksbixuIiwKKyJpZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWVpZ2h0ZWVuL3NpZ25hdHVyZS14NTA5LXNuLnhtbCwtaSxuLG4iLAorCisKKworImllL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9zaWduYXR1cmUtZW52ZWxvcGVkLWRzYS54bWwsLG4sbiIsCisiaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWZ0ZWVuL3NpZ25hdHVyZS1lbnZlbG9waW5nLWI2NC1kc2EueG1sLCx5LG4iLAorImllL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9zaWduYXR1cmUtZW52ZWxvcGluZy1kc2EueG1sLCxuLG4iLAorImllL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTEtNDAueG1sLC1oIHNlY3JldCxuLG4iLAorImllL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTEueG1sLC1oIHNlY3JldCxuLG4iLAorImllL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9zaWduYXR1cmUtZW52ZWxvcGluZy1yc2EueG1sLCxuLG4iLAorImllL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9zaWduYXR1cmUtZXh0ZXJuYWwtYjY0LWRzYS54bWwsLG4seSIsCisiaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWZ0ZWVuL3NpZ25hdHVyZS1leHRlcm5hbC1kc2EueG1sLCxuLG4iLAorCisjIFRoZXNlIHR3byBhcmUgcmVtb3ZlZCwgYXMgdGhpcyBpcyBhIHByZS1yZWxlYXNlIHN5bnRheCB0aGF0IHRoZSBsaWJyYXJ5CisjIGRvZXMgbm90IHVuZGVyc3RhbmQKKworIyB0ZXN0U2lnICRkYXRhX2Rpci9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpbHRlcjItb25lL3NpZ24teGZkbC54bWwKKyMgdGVzdFNpZyAkZGF0YV9kaXIvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWx0ZXIyLW9uZS9zaWduYXR1cmUueG1sCisKKyJpZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vc2lnbmF0dXJlLnhtbCwseSx5IiwKKyJpbnRlcm9wL2MxNG4vWTEvZXhjLXNpZ25hdHVyZS54bWwsLG4sbiIsCisKKyMgTUQ1IG5vdyBpbXBsZW1lbnRlZAorCisiaW50ZXJvcC9jMTRuL1kyL3NpZ25hdHVyZS1qb3NlcGgtZXhjLnhtbCwseSxuIiwKKyJpbnRlcm9wL2MxNG4vWTMvc2lnbmF0dXJlLnhtbCwseSxuIiwKKyJpbnRlcm9wL2MxNG4vWTQvc2lnbmF0dXJlLnhtbCwseSxuIiwKKyJpbnRlcm9wL2MxNG4vWTUvc2lnbmF0dXJlLnhtbCwseSxuIiwKKyJpbnRlcm9wL2MxNG4vWTUvc2lnbmF0dXJlQ29tbWVudGVkLnhtbCwseSxuIiwKKworIyBYUGF0aCBGaWx0ZXIKKworImludGVyb3AveGZpbHRlcjIvbWVybGluLXhwYXRoLWZpbHRlcjItdGhyZWUvc2lnbi1zcGVjLnhtbCwseSxuIiwKKyJpbnRlcm9wL3hmaWx0ZXIyL21lcmxpbi14cGF0aC1maWx0ZXIyLXRocmVlL3NpZ24teGZkbC54bWwsLHksbiIsCisKKyMgRXh0cmEgdW5pdCB0ZXN0cyBwcm92aWRlZCBmb3IgYnVnIHJlcG9ydHMKKworIm9yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3RjYXNlcy9TQU1MMkFydGlmYWN0UmVzcG9uc2UueG1sLCxuLG4iLAorCispOworCisjIFhNTCBFbmNyeXB0aW9uIFRlc3RzCisKK215ICR4ZW5jX3Jlc3VsdCA9IDA7CitteSAkeGVuY19maWxlID0gMTsKK215ICR4ZW5jX2FyZ3MgPSAyOworbXkgJHhlbmNfZmxhZ194YWxhbiA9IDM7CitteSAkeGVuY19mbGFnX2FlcyA9IDQ7CisKK215IEB4ZW5jX2FycmF5PSgKKyNiYWQtZW5jcnlwdC1jb250ZW50LWFlczEyOC1jYmMta3ctYWVzMTkyLnhtbAorI2RlY3J5cHRpb24tdHJhbnNmb3JtLWV4Y2VwdC54bWwKKyNkZWNyeXB0aW9uLXRyYW5zZm9ybS54bWwKKyI8TnVtYmVyPjEyMzQgNTY3ODkwIDEyMzQ1PC9OdW1iZXI+LGllL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3J5cHQtY29udGVudC1hZXMxMjgtY2JjLWt3LWFlczE5Mi54bWwsLWkgLWRlLG4seSIsCisiPE51bWJlcj4xMjM0IDU2Nzg5MCAxMjM0NTwvTnVtYmVyPixpZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWNvbnRlbnQtYWVzMjU2LWNiYy1wcm9wLnhtbCwtaSAtZGUsbix5IiwKKyI8TnVtYmVyPjEyMzQgNTY3ODkwIDEyMzQ1PC9OdW1iZXI+LGllL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3J5cHQtY29udGVudC10cmlwbGVkZXMtY2JjLnhtbCwtaSAtZGUsbixuIiwKKworInRvcCBzZWNyZXQgbWVzc2FnZSxpZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWRhdGEtYWVzMTI4LWNiYy54bWwsLWksbix5IiwKKyJ0b3Agc2VjcmV0IG1lc3NhZ2UsaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZW5jcnlwdC1kYXRhLWFlczE5Mi1jYmMta3ctYWVzMjU2LnhtbCwtaSxuLHkiLAorInRvcCBzZWNyZXQgbWVzc2FnZSxpZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWRhdGEtYWVzMjU2LWNiYy1rdy10cmlwbGVkZXMueG1sLC1pLG4seSIsCisidG9wIHNlY3JldCBtZXNzYWdlLGllL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3J5cHQtZGF0YS10cmlwbGVkZXMtY2JjLXJzYS1vYWVwLW1nZjFwLnhtbCwtaSxuLG4iLAorCisjIE5PVCBTdXBwb3J0ZWQgYXMgb2YgVjEuMiAoT3BlblNTTCAwLjkuOCBzdXBwb3J0cyBTSEEyNTYgZGlnZXN0LCBub3QgT0FFUCkKKyMidG9wIHNlY3JldCBtZXNzYWdlLGllL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3J5cHQtZGF0YS10cmlwbGVkZXMtY2JjLXJzYS1vYWVwLW1nZjFwLXNoYTI1Ni54bWwsLWksbixuIiwKKworIjxOdW1iZXI+MTIzNCA1Njc4OTAgMTIzNDU8L051bWJlcj4saWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZW5jcnlwdC1lbGVtZW50LWFlczEyOC1jYmMtcnNhLTFfNS54bWwsLWkgLWRlLG4seSIsCisKKyMgQ2lwaGVyUmVmIG5vdyBzdXBwb3J0ZWQKKworIjxOdW1iZXI+MTIzNCA1Njc4OTAgMTIzNDU8L051bWJlcj4saWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZW5jcnlwdC1lbGVtZW50LWFlczE5Mi1jYmMtcmVmLnhtbCwtaSAtZGUseSx5IiwKKworIjxOdW1iZXI+MTIzNCA1Njc4OTAgMTIzNDU8L051bWJlcj4saWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZW5jcnlwdC1lbGVtZW50LWFlczI1Ni1jYmMtY2FycmllZC1rdy1hZXMyNTYueG1sLC1pIC1kZSxuLHkiLAorIjxOdW1iZXI+MTIzNCA1Njc4OTAgMTIzNDU8L051bWJlcj4saWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZW5jcnlwdC1lbGVtZW50LWFlczI1Ni1jYmMtcmV0cmlldmVkLWt3LWFlczI1Ni54bWwsLWkgLWRlLG4seSIsCisiPE51bWJlcj4xMjM0IDU2Nzg5MCAxMjM0NTwvTnVtYmVyPixpZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWVsZW1lbnQtdHJpcGxlZGVzLWNiYy1rdy1hZXMxMjgueG1sLC1pIC1kZSxuLHkiLAorCisKKyMgVW5zdXBwb3J0ZWQgS2V5LXdyYXBzCisjZW5jcnlwdC1jb250ZW50LWFlczE5Mi1jYmMtZGgtc2hhNTEyLnhtbAorI2VuY3J5cHQtZWxlbWVudC1hZXMyNTYtY2JjLWt3LWFlczI1Ni1kaC1yaXBlbWQxNjAueG1sCisKKyMgRG9uJ3QgeWV0IHN1cHBvcnQgZW5jcnlwdGVkIGtleXNpbiBzaWduYXR1cmVzIChvciBTSEEtMi9SaXBlbWQpCisKKyNlbmNzaWctaG1hYy1zaGEyNTYtZGgueG1sCisjZW5jc2lnLWhtYWMtc2hhMjU2LWt3LXRyaXBsZWRlcy1kaC54bWwKKyNlbmNzaWctaG1hYy1zaGEyNTYtcnNhLTFfNS54bWwKKyNlbmNzaWctaG1hYy1zaGEyNTYtcnNhLW9hZXAtbWdmMXAueG1sCisjZW5jc2lnLXJpcGVtZDE2MC1obWFjLXJpcGVtZDE2MC1rdy10cmlwbGVkZXMueG1sCisjZW5jc2lnLXNoYTI1Ni1obWFjLXNoYTI1Ni1rdy1hZXMxMjgueG1sCisjZW5jc2lnLXNoYTM4NC1obWFjLXNoYTM4NC1rdy1hZXMxOTIueG1sCisjZW5jc2lnLXNoYTUxMi1obWFjLXNoYTUxMi1rdy1hZXMyNTYueG1sCisKKyMgRG9uJ3QgeWV0IGNoZWNrIGZvciBiYWQgZW5jcnlwdGlvbgorCisjYmFkLWVuY3J5cHQtY29udGVudC1hZXMxMjgtY2JjLWt3LWFlczE5Mi54bWwKKworIyBEb24ndCB5ZXQgc3VwcG9ydCBzaWduYXR1cmUgZGVjcnlwdGlvbiB0cmFuc2Zvcm1zCisKKyNkZWNyeXB0aW9uLXRyYW5zZm9ybS1leGNlcHQueG1sCisjZGVjcnlwdGlvbi10cmFuc2Zvcm0ueG1sCisKKyMgUEhBT1MgaW50ZXJvcCB0ZXN0cy4gIENvbW1lbnRlZCBvdXQgdGVzdHMgYXJlIGN1cnJlbnRseQorIyBub3Qgc3VwcG9ydGVkCisjIGJhZC1hbGctZW5jLWVsZW1lbnQtYWVzMTI4LWt3LTNkZXMueG1sCisiPE51bWJlcj40MDE5IDI0NDUgMDI3NyA1NTY3PC9OdW1iZXI+LGNvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtY29udGVudC0zZGVzLWt3LWFlczE5Mi54bWwsLWkgLWRlLG4seSIsCisiPE51bWJlcj40MDE5IDI0NDUgMDI3NyA1NTY3PC9OdW1iZXI+LGNvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtY29udGVudC1hZXMxMjgta3ctM2Rlcy54bWwsLWkgLWRlLG4seSIsCisiPE51bWJlcj40MDE5IDI0NDUgMDI3NyA1NTY3PC9OdW1iZXI+LGNvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtY29udGVudC1hZXMxOTIta3ctYWVzMjU2LnhtbCwtaSAtZGUsbix5IiwKKyI8TnVtYmVyPjQwMTkgMjQ0NSAwMjc3IDU1Njc8L051bWJlcj4sY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy1jb250ZW50LWFlczI1Ni1rdC1yc2ExXzUueG1sLC1pIC1kZSxuLHkiLAorIyBlbmMtZWxlbWVudC0zZGVzLWthLWRoLnhtbAorIjxOdW1iZXI+NDAxOSAyNDQ1IDAyNzcgNTU2NzwvTnVtYmVyPixjb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtM2Rlcy1rdC1yc2ExXzUueG1sLC1pIC1kZSxuLG4iLAorIjxOdW1iZXI+NDAxOSAyNDQ1IDAyNzcgNTU2NzwvTnVtYmVyPixjb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtM2Rlcy1rdC1yc2Ffb2FlcF9zaGExLnhtbCwtaSAtZGUsbixuIiwKKyMgZW5jLWVsZW1lbnQtM2Rlcy1rdC1yc2Ffb2FlcF9zaGEyNTYueG1sCisjIGVuYy1lbGVtZW50LTNkZXMta3QtcnNhX29hZXBfc2hhNTEyLnhtbAorIjxOdW1iZXI+NDAxOSAyNDQ1IDAyNzcgNTU2NzwvTnVtYmVyPixjb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtM2Rlcy1rdy0zZGVzLnhtbCwtaSAtZGUsbixuIiwKKyMgZW5jLWVsZW1lbnQtYWVzMTI4LWthLWRoLnhtbAorIjxOdW1iZXI+NDAxOSAyNDQ1IDAyNzcgNTU2NzwvTnVtYmVyPixjb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtYWVzMTI4LWt0LXJzYTFfNS54bWwsLWkgLWRlLG4seSIsCisiPE51bWJlcj40MDE5IDI0NDUgMDI3NyA1NTY3PC9OdW1iZXI+LGNvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtZWxlbWVudC1hZXMxMjgta3QtcnNhX29hZXBfc2hhMS54bWwsLWkgLWRlLG4seSIsCisiPE51bWJlcj40MDE5IDI0NDUgMDI3NyA1NTY3PC9OdW1iZXI+LGNvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtZWxlbWVudC1hZXMxMjgta3ctYWVzMTI4LnhtbCwtaSAtZGUsbix5IiwKKyI8TnVtYmVyPjQwMTkgMjQ0NSAwMjc3IDU1Njc8L051bWJlcj4sY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy1lbGVtZW50LWFlczEyOC1rdy1hZXMyNTYueG1sLC1pIC1kZSxuLHkiLAorIyBlbmMtZWxlbWVudC1hZXMxOTIta2EtZGgueG1sCisiPE51bWJlcj40MDE5IDI0NDUgMDI3NyA1NTY3PC9OdW1iZXI+LGNvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtZWxlbWVudC1hZXMxOTIta3QtcnNhX29hZXBfc2hhMS54bWwsLWkgLWRlLG4seSIsCisiPE51bWJlcj40MDE5IDI0NDUgMDI3NyA1NTY3PC9OdW1iZXI+LGNvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtZWxlbWVudC1hZXMxOTIta3ctYWVzMTkyLnhtbCwtaSAtZGUsbix5IiwKKyMgZW5jLWVsZW1lbnQtYWVzMjU2LWthLWRoLnhtbAorIjxOdW1iZXI+NDAxOSAyNDQ1IDAyNzcgNTU2NzwvTnVtYmVyPixjb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtYWVzMjU2LWt3LWFlczI1Ni54bWwsLWkgLWRlLG4seSIsCisiNDAxOSAyNDQ1IDAyNzcgNTU2Nyxjb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLXRleHQtM2Rlcy1rdy1hZXMyNTYueG1sLC1pLG4seSIsCisiNDAxOSAyNDQ1IDAyNzcgNTU2Nyxjb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLXRleHQtYWVzMTI4LWt3LWFlczE5Mi54bWwsLWksbix5IiwKKyI0MDE5IDI0NDUgMDI3NyA1NTY3LGNvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtdGV4dC1hZXMxOTIta3QtcnNhMV81LnhtbCwtaSxuLHkiLAorIjQwMTkgMjQ0NSAwMjc3IDU1NjcsY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy10ZXh0LWFlczI1Ni1rdC1yc2Ffb2FlcF9zaGExLnhtbCwtaSxuLHkiCisKKyk7CisKK3N1YiBwcmludF9hcmdzIHsKKworICBwcmludCBTVERFUlIgIlxuVXNhZ2U6IGJhc2ljVGVzdHMucGwgWy0tbm94YWxhbl0gWy0tbm9wb3Rob2xlXSBbLS1ub2Flc10gWy0tdmM4XSBbLS12YzhyZWxlYXNlXSBbLS12YzddIFstLXZjN3JlbGVhc2VdIFstLXZjNnJlbGVhc2VdIFstLW5vc2lnXSAtLVtub2VuY11cblxuIjsKKyAgZXhpdCgxKTsKKworfQorCisjIFByb2Nlc3MgY29tbWFuZCBsaW5lIG9wdGlvbnMKKworZm9yZWFjaCAoQEFSR1YpIHsKKworIFNXSVRDSDogeworICAgIGlmICgvXi0tbm94YWxhbiQvIHx8IC9eLXgkLykgeyRoYXZlX3hhbGFuID0gMDsgbGFzdCBTV0lUQ0g7fQorICAgIGlmICgvXi0tbm9wb3Rob2xlJC8gfHwgL14tcCQvKSB7JGhhdmVfcG90aG9sZSA9IDA7IGxhc3QgU1dJVENIO30KKyAgICBpZiAoL14tLW5vYWVzJC8gfHwgL14tYSQvKSB7JGhhdmVfYWVzID0gMDsgbGFzdCBTV0lUQ0g7fQorICAgIGlmICgvXi0tdmM4JC8pIHskY2hlY2tzaWcgPSAkY2hlY2tzaWdfdmM4IDsgJGNpcGhlciA9ICRjaXBoZXJfdmM4OyBsYXN0IFNXSVRDSDt9CisgICAgaWYgKC9eLS12YzhyZWxlYXNlJC8pIHskY2hlY2tzaWcgPSAkY2hlY2tzaWdfdmM4cmVsZWFzZSA7ICRjaXBoZXIgPSAkY2lwaGVyX3ZjOHJlbGVhc2U7IGxhc3QgU1dJVENIO30KKyAgICBpZiAoL14tLXZjNyQvKSB7JGNoZWNrc2lnID0gJGNoZWNrc2lnX3ZjNyA7ICRjaXBoZXIgPSAkY2lwaGVyX3ZjNzsgbGFzdCBTV0lUQ0g7fQorICAgIGlmICgvXi0tdmM3cmVsZWFzZSQvKSB7JGNoZWNrc2lnID0gJGNoZWNrc2lnX3ZjN3JlbGVhc2UgOyAkY2lwaGVyID0gJGNpcGhlcl92YzdyZWxlYXNlOyBsYXN0IFNXSVRDSDt9CisgICAgaWYgKC9eLS12YzZyZWxlYXNlJC8pIHskY2hlY2tzaWcgPSAkY2hlY2tzaWdfcmVsZWFzZSA7ICRjaXBoZXIgPSAkY2lwaGVyX3JlbGVhc2U7IGxhc3QgU1dJVENIO30KKwlpZiAoL14tLW5vc2lnJC8pIHskZG9zaWcgPSAwOyBsYXN0IFNXSVRDSDt9CisJaWYgKC9eLS1ub2VuYyQvKSB7JGRvZW5jID0gMDsgbGFzdCBTV0lUQ0g7fQorICAgIHByaW50IFNUREVSUiAiVW5rbm93biBjb21tYW5kIDogIiAuICRfIC4gIlxuXG4iOworICAgIHByaW50X2FyZ3MoKTsKKyAgfQorfQorCisjIFJ1biB0aGUgc2lnbmF0dXJlIHRlc3RzCisKK2lmICgkZG9zaWcpIHsKKworICBwcmludCAiXG5cbiI7CisgIHByaW50ICJSdW5uaW5nIFhNTCBEaWdpdGFsIFNpZ25hdHVyZSBJbnRlcm9wIFRlc3RzXG4iOworICBwcmludCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4iOworCisgIGZvcmVhY2ggKEBkc2lnX2FycmF5KSB7CisKKwkkdG90YWxfZHNpZ19jb3VudCsrOworCisJbXkgQGZpZWxkcyA9IHNwbGl0KC9cLC8sICRfKTsKKwlteSAkZmlsZV9uYW1lID0gJGZpZWxkc1skZHNpZ19maWxlXTsKKwlteSAkYXJncyA9ICRmaWVsZHNbJGRzaWdfYXJnc107CisJbXkgJHhhbGFuX2ZsYWcgPSAkZmllbGRzWyRkc2lnX2ZsYWdfeGFsYW5dOworCW15ICRwb3Rob2xlX2ZsYWcgPSAkZmllbGRzWyRkc2lnX2ZsYWdfcG90aG9sZV07CisKKwlpZiAoKCgkeGFsYW5fZmxhZyBlcSAibiIpIHwgJGhhdmVfeGFsYW4pICYgKCgkcG90aG9sZV9mbGFnIGVxICduJykgfHwgJGhhdmVfcG90aG9sZSkpIHsKKwkKKwkgIG15ICRyZXN1bHQgPSBgJGNoZWNrc2lnICRjaGVja3NpZ19hcmdzICRhcmdzICRkYXRhX2Rpci8kZmlsZV9uYW1lYDsKKworCSAgaWYgKCQ/ID09IDApIHsKKwkJcHJpbnQgIiRmaWxlX25hbWUgT0tcbiI7CisJCSRkc2lnX3Bhc3NfY291bnQrKzsKKwkgIH0KKwkgIGVsc2UgeworCQlwcmludCAiXG5GQUlMVVJFXG4iOworCQlwcmludCAiLS0tLS0tLS0tXG4iOworCQlwcmludCAiXG4kZmlsZV9uYW1lIGZhaWxlZC4gIFxuXG5NZXNzYWdlIHdhcyBcblxuJHJlc3VsdFxuXG4iOworCQlwcmludCAiLS0tLS0tLS0tXG5cbiI7CisJCSRkc2lnX2ZhaWx1cmVfY291bnQrKzsKKwkgIH0KKwl9IGVsc2UgeworCisJICBwcmludCAiJGZpbGVfbmFtZSBTS0lQUEVEXG4iOworCSAgJGRzaWdfc2tpcHBlZF9jb3VudCsrOworCisJfQorCisgIH07CisKKyAgcHJpbnQgIlxuXG4iOworICBwcmludCAiRFNJRyBUZXN0cyBjb21wbGV0ZVxuXG4iOworICBwcmludCAiVG90YWwgVGVzdHMgICAgPSAkdG90YWxfZHNpZ19jb3VudFxuIjsKKyAgcHJpbnQgIk51bWJlciBQYXNzZWQgID0gJGRzaWdfcGFzc19jb3VudFxuIjsKKyAgcHJpbnQgIk51bWJlciBTa2lwcGVkID0gJGRzaWdfc2tpcHBlZF9jb3VudFxuIjsKKyAgcHJpbnQgIk51bWJlciBGYWlsZWQgID0gJGRzaWdfZmFpbHVyZV9jb3VudFxuXG4iOworICBwcmludCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4iOworfQorCisjIE5vdyBydW4gdGhlIGVuY3J5cHRpb24gdGVzdHMKKworaWYgKCRkb2VuYykgeworCisgIHByaW50ICJcblxuIjsKKyAgcHJpbnQgIlJ1bm5pbmcgWE1MIEVuY3J5cHRpb24gSW50ZXJvcCBUZXN0c1xuIjsKKyAgcHJpbnQgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4iOworCisgIGZvcmVhY2ggKEB4ZW5jX2FycmF5KSB7CisKKwkkdG90YWxfeGVuY19jb3VudCsrOworCisJbXkgQGZpZWxkcyA9IHNwbGl0KC9ccyosXHMqLywgJF8pOworCW15ICRleHBlY3RlZF9yZXN1bHQgPSAkZmllbGRzWyR4ZW5jX3Jlc3VsdF07CisJbXkgJGZpbGVfbmFtZSA9ICRmaWVsZHNbJHhlbmNfZmlsZV07CisJbXkgJGFyZ3MgPSAkZmllbGRzWyR4ZW5jX2FyZ3NdOworCW15ICR4YWxhbl9mbGFnID0gJGZpZWxkc1skeGVuY19mbGFnX3hhbGFuXTsKKwlteSAkYWVzX2ZsYWcgPSAkZmllbGRzWyR4ZW5jX2ZsYWdfYWVzXTsKKworCWlmICgoKCR4YWxhbl9mbGFnIGVxICJuIikgfCAkaGF2ZV94YWxhbikgJiAoKCRhZXNfZmxhZyBlcSAibiIpIHwgJGhhdmVfYWVzKSkgeworCisJICBteSAkcmVzdWx0ID0gYCRjaXBoZXIgJGFyZ3MgJGRhdGFfZGlyLyRmaWxlX25hbWVgOworCisJICBpZiAoJD8gPT0gMCAmJiAkcmVzdWx0ID1+IC8kZXhwZWN0ZWRfcmVzdWx0LykgeworCQlwcmludCAiJGZpbGVfbmFtZSBPS1xuIjsKKwkJJHhlbmNfcGFzc19jb3VudCsrOworCSAgfQorCSAgZWxzZSB7CisJCXByaW50ICJcbkZBSUxVUkVcbiI7CisJCXByaW50ICItLS0tLS0tLS1cbiI7CisJCXByaW50ICJcbiRmaWxlX25hbWUgZmFpbGVkLiAgXG5cbk91dHB1dCB3YXMgXG5cbiRyZXN1bHRcblxuIjsKKwkJcHJpbnQgIi0tLS0tLS0tLVxuXG4iOworCQkkeGVuY19mYWlsdXJlX2NvdW50Kys7CisJICB9CisJfSBlbHNlIHsKKworCSAgcHJpbnQgIiRmaWxlX25hbWUgU0tJUFBFRFxuIjsKKwkgICR4ZW5jX3NraXBwZWRfY291bnQrKzsKKwl9CQorCisgIH07CisKKyAgcHJpbnQgIlxuXG4iOworICBwcmludCAiWEVOQyBUZXN0cyBjb21wbGV0ZVxuXG4iOworICBwcmludCAiVG90YWwgVGVzdHMgICAgPSAkdG90YWxfeGVuY19jb3VudFxuIjsKKyAgcHJpbnQgIk51bWJlciBQYXNzZWQgID0gJHhlbmNfcGFzc19jb3VudFxuIjsKKyAgcHJpbnQgIk51bWJlciBTa2lwcGVkID0gJHhlbmNfc2tpcHBlZF9jb3VudFxuIjsKKyAgcHJpbnQgIk51bWJlciBGYWlsZWQgID0gJHhlbmNfZmFpbHVyZV9jb3VudFxuXG4iOworfQorCisjIE5vdyB0aGUgdG90YWxzCisKK215ICR0b3RhbF9jb3VudCA9ICR0b3RhbF9kc2lnX2NvdW50ICsgJHRvdGFsX3hlbmNfY291bnQ7CitteSAkdG90YWxfcGFzc2VkID0gJGRzaWdfcGFzc19jb3VudCArICR4ZW5jX3Bhc3NfY291bnQ7CitteSAkdG90YWxfZmFpbGVkID0gJGRzaWdfZmFpbHVyZV9jb3VudCArICR4ZW5jX2ZhaWx1cmVfY291bnQ7CitteSAkdG90YWxfc2tpcHBlZCA9ICRkc2lnX3NraXBwZWRfY291bnQgKyAkeGVuY19za2lwcGVkX2NvdW50OworCitwcmludCAiQWxsIHRlc3RzIGNvbXBsZXRlLlxuXG4iOworcHJpbnQgIlRvdGFsIFRlc3RzICAgPSAkdG90YWxfY291bnRcbiI7CitwcmludCAiVG90YWwgUGFzc2VkICA9ICR0b3RhbF9wYXNzZWRcbiI7CitwcmludCAiVG90YWwgU2tpcHBlZCA9ICR0b3RhbF9za2lwcGVkXG4iOworcHJpbnQgIlRvdGFsIEZhaWxlZCAgPSAkdG90YWxfZmFpbGVkXG5cbiI7CisKKyMgTm93IGNhbGN1bGF0ZSBlcnJvciBjb2RlCitleGl0ICgkdG90YWxfZmFpbGVkKTsKKworCmRpZmYgLS1naXQgYS9jL3NyYy9jYW5vbi9YU0VDQzE0bjIwMDEwMzE1LmNwcCBiL2Mvc3JjL2Nhbm9uL1hTRUNDMTRuMjAwMTAzMTUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2OWNmYzQKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9jYW5vbi9YU0VDQzE0bjIwMDEwMzE1LmNwcApAQCAtMCwwICsxLDE2MzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNDMTRuMjAwMTAzMTUgOj0gQ2Fub25pY2FsaXNlciBvYmplY3QgdG8gcHJvY2VzcyBYTUwgZG9jdW1lbnQgaW4gbGluZSB3aXRoCisgKgkJCQkJICAgICBSRkMgMzA3NgorICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworLy9YU0VDIGluY2x1ZGVzCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisjaW5jbHVkZSA8eHNlYy9jYW5vbi9YU0VDQzE0bjIwMDEwMzE1LmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDU2FmZUJ1ZmZlckZvcm1hdHRlci5ocHA+CisKKy8vIFhlcmNlcyBpbmNsdWRlcworI2luY2x1ZGUgPHhlcmNlc2MvZG9tL0RPTUVsZW1lbnQuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvZG9tL0RPTU5hbWVkTm9kZU1hcC5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFVuaURlZnMuaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworI2lmbmRlZiBYU0VDX05PX1hBTEFOCisKKy8vIFhhbGFuIGluY2x1ZGVzCisjaW5jbHVkZSA8eGFsYW5jL1hhbGFuRE9NL1hhbGFuRG9jdW1lbnQuaHBwPgorI2luY2x1ZGUgPHhhbGFuYy9YZXJjZXNQYXJzZXJMaWFpc29uL1hlcmNlc0RvY3VtZW50V3JhcHBlci5ocHA+CisjaW5jbHVkZSA8eGFsYW5jL1hlcmNlc1BhcnNlckxpYWlzb24vWGVyY2VzRE9NU3VwcG9ydC5ocHA+CisjaW5jbHVkZSA8eGFsYW5jL1hlcmNlc1BhcnNlckxpYWlzb24vWGVyY2VzUGFyc2VyTGlhaXNvbi5ocHA+CisjaW5jbHVkZSA8eGFsYW5jL1hQYXRoL1hQYXRoRXZhbHVhdG9yLmhwcD4KKyNpbmNsdWRlIDx4YWxhbmMvWFBhdGgvTm9kZVJlZkxpc3QuaHBwPgorCisvLyBOYW1lc3BhY2UgZGVmaW5pdGlvbnMKK1hBTEFOX1VTSU5HX1hBTEFOKFhQYXRoRXZhbHVhdG9yKQorWEFMQU5fVVNJTkdfWEFMQU4oWGVyY2VzRE9NU3VwcG9ydCkKK1hBTEFOX1VTSU5HX1hBTEFOKFhlcmNlc1BhcnNlckxpYWlzb24pCitYQUxBTl9VU0lOR19YQUxBTihYYWxhbkRvY3VtZW50KQorWEFMQU5fVVNJTkdfWEFMQU4oWGFsYW5Ob2RlKQorWEFMQU5fVVNJTkdfWEFMQU4oWGFsYW5FbGVtZW50KQorWEFMQU5fVVNJTkdfWEFMQU4oWGFsYW5ET01TdHJpbmcpCitYQUxBTl9VU0lOR19YQUxBTihYYWxhbkRPTUNoYXIpCitYQUxBTl9VU0lOR19YQUxBTihOb2RlUmVmTGlzdCkKK1hBTEFOX1VTSU5HX1hBTEFOKFhlcmNlc0RvY3VtZW50V3JhcHBlcikKK1hBTEFOX1VTSU5HX1hBTEFOKFhlcmNlc1dyYXBwZXJOYXZpZ2F0b3IpCitYQUxBTl9VU0lOR19YQUxBTihjX3dzdHIpCisKKyNlbmRpZgorCisvLyBHZW5lcmFsIGluY2x1ZGVzCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlIDxpb3N0cmVhbT4KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFNvbWUgdXNlZnVsIHV0aWxpdGllcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gRmluZCBhIG5vZGUgaW4gYW4gWFNFQ05vZGVMaXN0CisKK2Jvb2wgTm9kZUluTGlzdChjb25zdCBYU0VDTm9kZUxpc3RFbHQgKiBsc3QsIGNvbnN0IERPTU5vZGUgKiB0b0ZpbmQpIHsKKworCWNvbnN0IFhTRUNOb2RlTGlzdEVsdCAqIHRtcCA9IGxzdDsKKworCXdoaWxlICh0bXAgIT0gTlVMTCkgeworCisJCWlmICh0bXAtPmVsZW1lbnQgPT0gdG9GaW5kKQorCQkJcmV0dXJuIHRydWU7CisKKwkJdG1wID0gdG1wLT5uZXh0OworCisJfQorCisJcmV0dXJuIGZhbHNlOworCit9CisKK1hTRUNOb2RlTGlzdEVsdCAqIGluc2VydE5vZGVJbnRvTGlzdChYU0VDTm9kZUxpc3RFbHQgKiBsc3QsIFhTRUNOb2RlTGlzdEVsdCAqdG9JbnMpIHsKKworCVhTRUNOb2RlTGlzdEVsdCAqdG1wLCAqbGFzdDsKKworCWlmIChsc3QgPT0gTlVMTCkgeworCisJCS8vIEdvZXMgYXQgc3RhcnQKKwkJdG9JbnMtPm5leHQgPSBOVUxMOworCQl0b0lucy0+bGFzdCA9IE5VTEw7CisKKwkJcmV0dXJuIHRvSW5zOworCisJfSAvKiBpZiBtcF9hdHRyaWJ1dGVzID09IE5VTEwgKi8KKworCS8vIE5lZWQgdG8gcnVuIHRocm91Z2ggc3RhcnQgb2YgbGlzdAorCisJdG1wID0gbHN0OworCWxhc3QgPSBOVUxMOworCWludCByZXMgPSAtMTsgICAvLyBVc2VkIHRvIHJlbW92ZSBhIGdjYyB3YXJuaW5nCisKKwl3aGlsZSAoKHRtcCAhPSBOVUxMKSAmJgorCQkoKHJlcyA9IHRvSW5zLT5zb3J0U3RyaW5nLnNiU3RyY21wKHRtcC0+c29ydFN0cmluZykpID49IDApKSB7CisKKwkJbGFzdCA9IHRtcDsKKwkJdG1wID0gdG1wLT5uZXh0OworCisJfSAvKiB3aGlsZSAqLworCisJaWYgKHJlcyA9PTApIHsKKworCQkvLyBBbHJlYWR5IGV4aXN0cyEKKwkJZGVsZXRlIHRvSW5zOworCQlyZXR1cm4gbHN0OworCisJfQorCisJaWYgKGxhc3QgPT0gTlVMTCkgeworCisJCS8vIEl0IHNpdHMgYmVmb3JlIGZpcnN0IGVsZW1lbnQKKworCQl0b0lucy0+bmV4dCA9IGxzdDsKKwkJdG9JbnMtPmxhc3QgPSBOVUxMOworCQlsc3QtPmxhc3QgPSB0bXA7CisKKwkJcmV0dXJuIHRvSW5zOworCisJfSAvKiBpZiBsYXN0ID09IE5VTEwgKi8KKworCS8vIFdlIGhhdmUgZm91bmQgd2hlcmUgaXQgZ29lcworCisJdG9JbnMtPm5leHQgPSB0bXA7CisJdG9JbnMtPmxhc3QgPSBsYXN0OworCisJaWYgKHRtcCAhPSBOVUxMKQorCQl0bXAtPmxhc3QgPSB0b0luczsKKworCWxhc3QtPm5leHQgPSB0b0luczsKKworCXJldHVybiBsc3Q7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBFeGNsdXNpdmUgQ2Fub25pY2FsaXNhdGlvbiBNZXRob2RzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK2Jvb2wgdmlzaWJseVV0aWxpc2VzKERPTU5vZGUgKm5vZGUsIHNhZmVCdWZmZXIgJm5zKSB7CisKKwkvLyBUZXN0IHdoZXRoZXIgdGhlIG5vZGUgdXNlcyB0aGUgbmFtZSBzcGFjZSBwYXNzZWQgaW4KKworCWlmIChzdHJFcXVhbHMobm9kZS0+Z2V0UHJlZml4KCksIChjaGFyICopIG5zLnJhd0J1ZmZlcigpKSkKKwkJcmV0dXJuIHRydWU7CisKKwlpZiAobnMuc2JTdHJjbXAoIiIpID09IDApCisJCXJldHVybiBmYWxzZTsJCS8vIEF0dHJpYnV0ZXMgYXJlIG5ldmVyIGluIGRlZmF1bHQgbmFtZXNwYWNlCisKKwkvLyBDaGVjayB0aGUgYXR0cmlidXRlcworCURPTU5hbWVkTm9kZU1hcCAqYXR0cyA9IG5vZGUtPmdldEF0dHJpYnV0ZXMoKTsKKwlpZiAoYXR0cyA9PSBOVUxMKQorCQlyZXR1cm4gZmFsc2U7CisKKwlYTUxTaXplX3Qgc2l6ZSA9IGF0dHMtPmdldExlbmd0aCgpOworCisJZm9yIChYTUxTaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKworCQlpZiAoc3RyRXF1YWxzKGF0dHMtPml0ZW0oaSktPmdldFByZWZpeCgpLCAoY2hhciAqKSBucy5yYXdCdWZmZXIoKSkgJiYKKwkJCSFzdHJFcXVhbHMoYXR0cy0+aXRlbShpKS0+Z2V0TG9jYWxOYW1lKCksICJ4bWxucyIpKQorCQkJcmV0dXJuIHRydWU7CisKKwl9CisKKwlyZXR1cm4gZmFsc2U7CisKK30KKworYm9vbCBYU0VDQzE0bjIwMDEwMzE1Ojppbk5vbkV4Y2xOU0xpc3Qoc2FmZUJ1ZmZlciAmbnMpIHsKKworCWludCBzaXplID0gKGludCkgbV9leGNsTlNMaXN0LnNpemUoKTsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisKKwkJaWYgKCFzdHJjbXAoKGNoYXIgKikgbnMucmF3QnVmZmVyKCksIG1fZXhjbE5TTGlzdFtpXSkpCisJCQlyZXR1cm4gdHJ1ZTsKKworCX0KKworCXJldHVybiBmYWxzZTsKKworfQorCit2b2lkIFhTRUNDMTRuMjAwMTAzMTU6OnNldEluY2x1c2l2ZTExKHZvaWQpIHsKKyAgICBtX2luY2wxMSA9IHRydWU7CisgICAgbV9leGNsdXNpdmUgPSBmYWxzZTsKKyAgICBtX2V4Y2x1c2l2ZURlZmF1bHQgPSBmYWxzZTsKK30KKwordm9pZCBYU0VDQzE0bjIwMDEwMzE1OjpzZXRFeGNsdXNpdmUodm9pZCkgeworCisJbV9leGNsdXNpdmUgPSB0cnVlOworCW1fZXhjbHVzaXZlRGVmYXVsdCA9IHRydWU7CisJbV9pbmNsMTEgPSBmYWxzZTsKK30KKwordm9pZCBYU0VDQzE0bjIwMDEwMzE1OjpzZXRFeGNsdXNpdmUoY2hhciAqIHhtbG5zTGlzdCkgeworCisJY2hhciAqIG5zQnVmOworCisJc2V0RXhjbHVzaXZlKCk7CisKKwkvLyBTZXQgdXAgdGhlIGRlZmluZSBub24tZXhjbHVzaXZlIHByZWZpeGVzCisKKwluc0J1ZiA9IG5ldyBjaGFyIFtzdHJsZW4oeG1sbnNMaXN0KSArIDFdOworCisJaWYgKG5zQnVmID09IE5VTEwpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uIChYU0VDRXhjZXB0aW9uOjpNZW1vcnlBbGxvY2F0aW9uRmFpbCwKKwkJCSJFcnJvciBhbGxvY2F0aW5nIGEgc3RyaW5nIGJ1ZmZlciBpbiBYU0VDQzE0bjIwMDEwMzE1OjpzZXRFeGNsdXNpdmUiKTsKKworCX0KKworCWludCBpLCBqOworCisJaSA9IDA7CisKKwl3aGlsZSAoeG1sbnNMaXN0W2ldICE9ICdcMCcpIHsKKworCQl3aGlsZSAoeG1sbnNMaXN0W2ldID09ICcgJyB8fAorCQkJICAgeG1sbnNMaXN0W2ldID09ICdcMCcgfHwKKwkJCSAgIHhtbG5zTGlzdFtpXSA9PSAnXHQnIHx8CisJCQkgICB4bWxuc0xpc3RbaV0gPT0gJ1xyJyB8fAorCQkJICAgeG1sbnNMaXN0W2ldID09ICdcbicpCisKKwkJCSAgICsraTsJLy8gU2tpcCB3aGl0ZSBzcGFjZQorCisJCWogPSAwOworCQl3aGlsZSAoISh4bWxuc0xpc3RbaV0gPT0gJyAnIHx8CisJCQkgICB4bWxuc0xpc3RbaV0gPT0gJ1wwJyB8fAorCQkJICAgeG1sbnNMaXN0W2ldID09ICdcdCcgfHwKKwkJCSAgIHhtbG5zTGlzdFtpXSA9PSAnXHInIHx8CisJCQkgICB4bWxuc0xpc3RbaV0gPT0gJ1xuJykpCisKKwkJCSAgIG5zQnVmW2orK10gPSB4bWxuc0xpc3RbaSsrXTsJLy8gQ29weSBuYW1lCisKKwkJLy8gVGVybWluYXRlIHRoZSBzdHJpbmcKKwkJbnNCdWZbal0gPSAnXDAnOworCQlpZiAoc3RyY21wKG5zQnVmLCAiI2RlZmF1bHQiKSA9PSAwKSB7CisKKwkJCS8vIERlZmF1bHQgaXMgbm90IHRvIGJlIGV4Y2x1c2l2ZQorCQkJbV9leGNsdXNpdmVEZWZhdWx0ID0gZmFsc2U7CisKKwkJfQorCisJCWVsc2UgeworCisJCQkvLyBBZGQgdGhpcyB0byB0aGUgbGlzdAorCQkJbV9leGNsTlNMaXN0LnB1c2hfYmFjayhfc3RyZHVwKG5zQnVmKSk7CisKKwkJfQorCisJfQorCisJZGVsZXRlW10gbnNCdWY7CisKK30KKworCisKKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFhTRUNDMTRuMjAwMTAzMTUgbWV0aG9kcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCit2b2lkIFhTRUNDMTRuMjAwMTAzMTU6OnN0YWNrSW5pdChET01Ob2RlICogbikgeworCisJaWYgKG4gPT0gTlVMTCkKKwkJcmV0dXJuOworCisJc3RhY2tJbml0KG4tPmdldFBhcmVudE5vZGUoKSk7CisJbV9uc1N0YWNrLnB1c2hFbGVtZW50KG4pOworCVhNTFNpemVfdCBzaXplOworCisJRE9NTmFtZWROb2RlTWFwICp0bXBBdHRzID0gbi0+Z2V0QXR0cmlidXRlcygpOworCXNhZmVCdWZmZXIgY3VycmVudE5hbWU7CisKKwlpZiAodG1wQXR0cyAhPSBOVUxMKQorCQlzaXplID0gdG1wQXR0cy0+Z2V0TGVuZ3RoKCk7CisJZWxzZQorCQlzaXplID0gMDsKKworCVhNTFNpemVfdCBpOworCisJZm9yIChpID0gMDsgaSA8IHNpemU7ICsraSkgeworCisJCWN1cnJlbnROYW1lIDw8ICgqbXBfZm9ybWF0dGVyIDw8IHRtcEF0dHMtPml0ZW0oaSktPmdldE5vZGVOYW1lKCkpOworCisJCWlmIChjdXJyZW50TmFtZS5zYlN0cm5jbXAoInhtbG5zIiwgNSkgPT0gMCkKKwkJCW1fbnNTdGFjay5hZGROYW1lc3BhY2UodG1wQXR0cy0+aXRlbShpKSk7CisKKwl9CisKK30KKworCisvLyBDb25zdHJ1Y3RvcnMKKwordm9pZCBYU0VDQzE0bjIwMDEwMzE1Ojppbml0KCkgeworCisJLy8gVGhpcyBkb2VzIHRoZSB3b3JrIG9mIHNldHRpbmcgdXMgdXAgYW5kIGNoZWNrcyB0byBtYWtlIHN1cmUgZXZlcnloaW5nIGlzIE9LCisKKwkvLyBTZXQgdXAgdGhlIFhlcmNlcyBmb3JtYXR0ZXIKKworCVhTRUNuZXcobXBfZm9ybWF0dGVyLCBYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlcigiVVRGLTgiLFhNTEZvcm1hdHRlcjo6Tm9Fc2NhcGVzLAorCQkJCQkJCQkJCQkJWE1MRm9ybWF0dGVyOjpVblJlcF9DaGFyUmVmKSk7CisKKwkvLyBTZXQgdXAgZm9yIGZpcnN0IGF0dHJpYnV0ZSBsaXN0CisKKwltcF9hdHRyaWJ1dGVzID0gbXBfY3VycmVudEF0dHJpYnV0ZSA9IG1wX2ZpcnN0Tm9uTnNBdHRyaWJ1dGUgPSBOVUxMOworCisJLy8gQnkgZGVmYXVsdCBwcm9jZXNzIGNvbW1lbnRzCisJbV9wcm9jZXNzQ29tbWVudHMgPSB0cnVlOworCisJLy8gU2V0IHVwIGZvciB0cmVlIHdhbGtpbmcKKworCW1fcmV0dXJuZWRGcm9tQ2hpbGQgPSBmYWxzZTsKKwltcF9maXJzdEVsZW1lbnROb2RlID0gbXBfc3RhcnROb2RlOworCW1fZmlyc3RFbGVtZW50UHJvY2Vzc2VkID0gZmFsc2U7CisKKwkvLyBYUGF0aCBzZXR1cAorCW1fWFBhdGhTZWxlY3Rpb24gPSBmYWxzZTsKKwltX1hQYXRoTWFwLmNsZWFyKCk7CisKKwkvLyBFeGNsdXNpdmUgQ2Fub25pY2FsaXNhdGlvbiBzZXR1cAorCisJbV9leGNsTlNMaXN0LmNsZWFyKCk7CisJbV9leGNsdXNpdmUgPSBmYWxzZTsKKwltX2V4Y2x1c2l2ZURlZmF1bHQgPSBmYWxzZTsKKworCS8vIERlZmF1bHQgdG8gMS4wIG1vZGUKKwltX2luY2wxMSA9IGZhbHNlOworCisJLy8gTmFtZXNwYWNlIGhhbmRsaW5nCisJbV91c2VOYW1lc3BhY2VTdGFjayA9IHRydWU7CisKKwkvLyBJTml0aWFsaXNlIHRoZSBzdGFjayAtIGV2ZW4gaWYgd2UgZG9uJ3QgdXNlIGl0IGxhdGVyLCBhdCBsZWFzdCB0aGlzIHNldHMgdXMgdXAKKwlpZiAobXBfc3RhcnROb2RlICE9IE5VTEwpIHsKKwkJc3RhY2tJbml0KG1wX3N0YXJ0Tm9kZS0+Z2V0UGFyZW50Tm9kZSgpKTsKKwl9CisKK30KKworCitYU0VDQzE0bjIwMDEwMzE1OjpYU0VDQzE0bjIwMDEwMzE1KCkge307CitYU0VDQzE0bjIwMDEwMzE1OjpYU0VDQzE0bjIwMDEwMzE1KERPTURvY3VtZW50ICpuZXdEb2MpIDogWFNFQ0Nhbm9uKG5ld0RvYykgeworCisJLy8gSnVzdCBjYWxsIHRoZSBpbml0IGZ1bmN0aW9uOworCisJaW5pdCgpOworCit9OworWFNFQ0MxNG4yMDAxMDMxNTo6WFNFQ0MxNG4yMDAxMDMxNShET01Eb2N1bWVudCAqbmV3RG9jLAorCQkJCQkJCQkgICBET01Ob2RlICpuZXdTdGFydE5vZGUpIDogWFNFQ0Nhbm9uKG5ld0RvYywgbmV3U3RhcnROb2RlKSB7CisKKwkvLyBKdXN0IGNhbGwgdGhlIGluaXQgZnVuY3Rpb24KKworCWluaXQoKTsKKworfQorCitYU0VDQzE0bjIwMDEwMzE1Ojp+WFNFQ0MxNG4yMDAxMDMxNSgpIHsKKworCWlmIChtcF9mb3JtYXR0ZXIgIT0gTlVMTCkKKwkJZGVsZXRlIG1wX2Zvcm1hdHRlcjsKKworCS8vIENsZWFyIG91dCB0aGUgZXhjbHVzaXZlIG5hbWVzcGFjZSBsaXN0CisJaW50IHNpemUgPSAoaW50KSBtX2V4Y2xOU0xpc3Quc2l6ZSgpOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKworCQlmcmVlKG1fZXhjbE5TTGlzdFtpXSk7CisKKwl9CisKKwltX2V4Y2xOU0xpc3QuY2xlYXIoKTsKKworICAgIHdoaWxlIChtcF9hdHRyaWJ1dGVzICE9IE5VTEwpIHsKKworICAgICAgICBtcF9jdXJyZW50QXR0cmlidXRlID0gbXBfYXR0cmlidXRlcy0+bmV4dDsKKyAgICAgICAgZGVsZXRlIG1wX2F0dHJpYnV0ZXM7CisgICAgICAgIG1wX2F0dHJpYnV0ZXMgPSBtcF9jdXJyZW50QXR0cmlidXRlOworICAgIH0KKworICAgIG1wX2F0dHJpYnV0ZXMgPSBtcF9jdXJyZW50QXR0cmlidXRlID0gbXBfZmlyc3ROb25Oc0F0dHJpYnV0ZSA9IE5VTEw7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgWFNFQ0MxNG4yMDAxMDMxNSBDb21tZW50cyBwcm9jZXNpbmcKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwordm9pZCBYU0VDQzE0bjIwMDEwMzE1OjpzZXRDb21tZW50c1Byb2Nlc3NpbmcoYm9vbCBvbm9mZikgeworCisJbV9wcm9jZXNzQ29tbWVudHMgPSBvbm9mZjsKKworfQorCitib29sIFhTRUNDMTRuMjAwMTAzMTU6OmdldENvbW1lbnRzUHJvY2Vzc2luZyh2b2lkKSB7CisKKwlyZXR1cm4gbV9wcm9jZXNzQ29tbWVudHM7CisKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFhTRUNDMTRuMjAwMTAzMTUgWFBhdGhTZWxlY3ROb2RlcyBtZXRob2QKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIFVzZSBhbiBYUGF0aCBleHByZXNzaW9uIHRvIHNlbGVjdCBhIHN1YnNldCBvZiBub2RlcyBmcm9tIHRoZSBkb2N1bWVudAorCisKK2ludCBYU0VDQzE0bjIwMDEwMzE1OjpYUGF0aFNlbGVjdE5vZGVzKGNvbnN0IGNoYXIgKiBYUGF0aEV4cHIpIHsKKworI2lmZGVmIFhTRUNfTk9fWFBBVEgKKworCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6VW5zdXBwb3J0ZWRGdW5jdGlvbiwKKwkJIlRoaXMgbGlicmFyeSBoYXMgYmVlbiBjb21waWxlZCB3aXRob3V0IFhQYXRoIHN1cHBvcnQiKTsKKworI2Vsc2UKKworCVhQYXRoRXZhbHVhdG9yOjppbml0aWFsaXplKCk7CisKKwkvLyBXZSB1c2UgWGFsYW4gdG8gcHJvY2VzcyB0aGUgWGVyY2VzIERPTSB0cmVlIGFuZCBnZXQgdGhlIFhQYXRoIG5vZGVzCisKKyNpZiBYQUxBTl9WRVJTSU9OX01BSk9SID09IDEgJiYgWEFMQU5fVkVSU0lPTl9NSU5PUiA+IDEwCisJWGVyY2VzUGFyc2VyTGlhaXNvbiB0aGVQYXJzZXJMaWFpc29uOworCVhlcmNlc0RPTVN1cHBvcnQgdGhlRE9NU3VwcG9ydCh0aGVQYXJzZXJMaWFpc29uKTsKKyNlbHNlCisJWGVyY2VzRE9NU3VwcG9ydCB0aGVET01TdXBwb3J0OworI2lmIGRlZmluZWQgWFNFQ19YRVJDRVNQQVJTRVJMSUFJU09OX1JFUVNfRE9NU1VQUE9SVAorCVhlcmNlc1BhcnNlckxpYWlzb24gdGhlUGFyc2VyTGlhaXNvbih0aGVET01TdXBwb3J0KTsKKyNlbHNlCisJWGVyY2VzUGFyc2VyTGlhaXNvbiB0aGVQYXJzZXJMaWFpc29uOworI2VuZGlmCisjZW5kaWYgLy8gWEFMQU5fVkVSU0lPTl9NQUpPUiA9PSAxICYmIFhBTEFOX1ZFUlNJT05fTUlOT1IgPiAxMAorCisJaWYgKG1wX2RvYyA9PSAwKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6VW5zdXBwb3J0ZWRGdW5jdGlvbiwKKwkJCSJYUGF0aCBzZWxlY3Rpb24gb25seSBzdXBwb3J0ZWQgaW4gQzE0biBmb3IgZnVsbCBkb2N1bWVudHMiKTsKKwl9CisKKwlET01FbGVtZW50KiB0aGVYZXJjZXNOb2RlID0gbXBfZG9jLT5jcmVhdGVFbGVtZW50KGNfd3N0cihYYWxhbkRPTVN0cmluZygibnMiKSkpOworCXRoZVhlcmNlc05vZGUtPnNldEF0dHJpYnV0ZShjX3dzdHIoWGFsYW5ET01TdHJpbmcoInhtbG5zOmlldGYiKSksIGNfd3N0cihYYWxhbkRPTVN0cmluZygiaHR0cDovL3d3dy5pZXRmLm9yZyIpKSk7CisKKwlYYWxhbkRvY3VtZW50KiB0aGVEb2MgPSB0aGVQYXJzZXJMaWFpc29uLmNyZWF0ZURvY3VtZW50KG1wX2RvYyk7CisKKwkvLyBTZXQgdXAgdGhlIFhQYXRoIGV2YWx1YXRvcgorCisJWFBhdGhFdmFsdWF0b3IJdGhlRXZhbHVhdG9yOworCisJLy8gT0ssIGxldCdzIGZpbmQgdGhlIGNvbnRleHQgbm9kZS4uLgorCisJWGFsYW5ET01TdHJpbmcgY2QgPSBYYWxhbkRPTVN0cmluZygiLyIpOwkvLyBGb3IgdGhlIG1vbWVudCBhc3N1bWUgdGhlIHJvb3QgaXMgdGhlIGNvbnRleHQKKworCWNvbnN0IFhhbGFuRE9NQ2hhciAqIGNleHByID0gY2QuY19zdHIoKTsKKworCVhhbGFuTm9kZSogY29uc3QJdGhlQ29udGV4dE5vZGUgPQorCQl0aGVFdmFsdWF0b3Iuc2VsZWN0U2luZ2xlTm9kZSgKKwkJdGhlRE9NU3VwcG9ydCwKKwkJdGhlRG9jLAorCQljZXhwciwKKwkJdGhlRG9jLT5nZXREb2N1bWVudEVsZW1lbnQoKSk7CisKKwlpZiAodGhlQ29udGV4dE5vZGUgPT0gMCkKKwl7CisKKwkJLy8gTm8gYXBwcm9wcmlhdGUgbm9kZXMuCisJCXJldHVybiAwOworCisJfQorCS8vIE9LLCBsZXQncyBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbi4uLgorCisJWGFsYW5ET01TdHJpbmcgZWQgPSBYYWxhbkRPTVN0cmluZyhYUGF0aEV4cHIpOworCWNvbnN0IFhhbGFuRE9NQ2hhciAqIGV4cHIgPSBlZC5jX3N0cigpOworCisjaWYgZGVmaW5lZCBYU0VDX1NFTEVDVE5PREVMSVNUX1JFUVNfTk9ERVJFRkxJU1QKKworCU5vZGVSZWZMaXN0IG91dHB1dDsKKworCU5vZGVSZWZMaXN0CXRoZVJlc3VsdCgKKwkJdGhlRXZhbHVhdG9yLnNlbGVjdE5vZGVMaXN0KAorCQlvdXRwdXQsCisJCXRoZURPTVN1cHBvcnQsCisJCXRoZUNvbnRleHROb2RlLAorCQlleHByLAorCQl0aGVEb2MtPmdldEVsZW1lbnRCeUlkKFhhbGFuRE9NU3RyaW5nKCJucyIpKSkpOworCisjZWxzZQorCisJTm9kZVJlZkxpc3QJdGhlUmVzdWx0KAorCQl0aGVFdmFsdWF0b3Iuc2VsZWN0Tm9kZUxpc3QoCisJCXRoZURPTVN1cHBvcnQsCisJCXRoZUNvbnRleHROb2RlLAorCQlleHByLAorCQl0aGVEb2MtPmdldEVsZW1lbnRCeUlkKFhhbGFuRE9NU3RyaW5nKCJucyIpKSkpOworCQkvL3RoZURvYy0+Z2V0RG9jdW1lbnRFbGVtZW50KCkpKTsKKyNlbmRpZgorCisJLy9YZXJjZXNEb2N1bWVudEJyaWRnZSAqdGhlQnJpZGdlID0gdGhlUGFyc2VyTGlhaXNvbi5tYXBEb2N1bWVudCh0aGVEb2MpOworCVhlcmNlc0RvY3VtZW50V3JhcHBlciAqdGhlV3JhcHBlciA9IHRoZVBhcnNlckxpYWlzb24ubWFwRG9jdW1lbnRUb1dyYXBwZXIodGhlRG9jKTsKKwlYZXJjZXNXcmFwcGVyTmF2aWdhdG9yIHRoZVdyYXBwZXJOYXZpZ2F0b3IodGhlV3JhcHBlcik7CisKKwlpbnQgc2l6ZSA9IChpbnQpIHRoZVJlc3VsdC5nZXRMZW5ndGgoKTsKKwljb25zdCBET01Ob2RlICppdGVtOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArKyBpKSB7CisKKwkJaXRlbSA9IHRoZVdyYXBwZXJOYXZpZ2F0b3IubWFwTm9kZSh0aGVSZXN1bHQuaXRlbShpKSk7CisJCW1fWFBhdGhNYXAuYWRkTm9kZShpdGVtKTsKKwkJLy90bXAtPmVsZW1lbnQgPSB0aGVCcmlkZ2VOYXZpZ2F0b3IubWFwTm9kZSh0aGVSZXN1bHQuaXRlbShpKSk7CisJfQorCisJbV9YUGF0aFNlbGVjdGlvbiA9IHRydWU7CisJcmV0dXJuIHNpemU7CisKKyNlbmRpZgorCit9CisKK3ZvaWQgWFNFQ0MxNG4yMDAxMDMxNTo6c2V0WFBhdGhNYXAoY29uc3QgWFNFQ1hQYXRoTm9kZUxpc3QgJiBtYXApIHsKKworCS8vIFhQYXRoIGFscmVhZHkgZG9uZSEKKworCW1fWFBhdGhNYXAgPSBtYXA7CisJbV9YUGF0aFNlbGVjdGlvbiA9IHRydWU7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBYU0VDQzE0bjIwMDEwMzE1IHByb2Nlc3NOZXh0Tm9kZSBtZXRob2QKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3NhZmVCdWZmZXIgYzE0bkNsZWFuVGV4dChzYWZlQnVmZmVyICZpbnB1dCkgeworCisJLyogYzE0biBSZXF1aXJlcyA6CisKKwkJJiAtPiAmYW1wCisJCTwgLT4gJmx0CisJCT4gLT4gJmd0CisJCUxGIC0+ICYjeEQKKworCSovCisKKwl4c2Vjc2l6ZV90IGxlbiA9IGlucHV0LnNiU3RybGVuKCk7CisJc2FmZUJ1ZmZlciByZXQ7CisKKwl4c2Vjc2l6ZV90IGksIGo7CisJdW5zaWduZWQgY2hhciBjOworCisJaiA9IDA7CisJZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKSB7CisKKwkJYyA9IGlucHV0W2ldOworCisJCXN3aXRjaCAoYykgeworCisJCWNhc2UgJyYnIDoKKworCQkJcmV0W2orK10gPSAnJic7CisJCQlyZXRbaisrXSA9ICdhJzsKKwkJCXJldFtqKytdID0gJ20nOworCQkJcmV0W2orK10gPSAncCc7CisJCQlyZXRbaisrXSA9ICc7JzsKKworCQkJYnJlYWs7CisKKwkJY2FzZSAnPCcgOgorCisJCQlyZXRbaisrXSA9ICcmJzsKKwkJCXJldFtqKytdID0gJ2wnOworCQkJcmV0W2orK10gPSAndCc7CisJCQlyZXRbaisrXSA9ICc7JzsKKworCQkJYnJlYWs7CisKKwkJY2FzZSAnPicgOgorCisJCQlyZXRbaisrXSA9ICcmJzsKKwkJCXJldFtqKytdID0gJ2cnOworCQkJcmV0W2orK10gPSAndCc7CisJCQlyZXRbaisrXSA9ICc7JzsKKworCQkJYnJlYWs7CisKKwkJY2FzZSAweEQgOgorCisJCQlyZXRbaisrXSA9ICcmJzsKKwkJCXJldFtqKytdID0gJyMnOworCQkJcmV0W2orK10gPSAneCc7CisJCQlyZXRbaisrXSA9ICdEJzsKKwkJCXJldFtqKytdID0gJzsnOworCisJCQlicmVhazsKKworCQlkZWZhdWx0IDoKKworCQkJcmV0W2orK10gPSBjOworCisJCX0KKworCX0KKworCS8vIGZpbmFsIGNoYXJhY3RlcjoKKworCXJldFtqXSA9ICdcMCc7CisKKwlyZXQuc2V0QnVmZmVyVHlwZShzYWZlQnVmZmVyOjpCVUZGRVJfQ0hBUik7CisKKwlyZXR1cm4gcmV0OworCit9CisKK3NhZmVCdWZmZXIgYzE0bkNsZWFuQXR0cmlidXRlKHNhZmVCdWZmZXIgJmlucHV0KSB7CisKKwkvKiBjMTRuIFJlcXVpcmVzIDoKKworCQkmIC0+ICZhbXAKKwkJPCAtPiAmbHQKKwkJIiAtPiAmcXVvdAorCQkjeDkgLT4mI3g5CisJCSN4QSAtPiYjeEEKKwkJTEYgLT4gJiN4RAorCisJKi8KKworCXhzZWNzaXplX3QgbGVuID0gaW5wdXQuc2JTdHJsZW4oKTsKKwlzYWZlQnVmZmVyIHJldDsKKworCXhzZWNzaXplX3QgaSwgajsKKwl1bnNpZ25lZCBjaGFyIGM7CisKKwlqID0gMDsKKwlmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKKworCQljID0gaW5wdXRbaV07CisKKwkJc3dpdGNoIChjKSB7CisKKwkJY2FzZSAnJicgOgorCisJCQlyZXRbaisrXSA9ICcmJzsKKwkJCXJldFtqKytdID0gJ2EnOworCQkJcmV0W2orK10gPSAnbSc7CisJCQlyZXRbaisrXSA9ICdwJzsKKwkJCXJldFtqKytdID0gJzsnOworCisJCQlicmVhazsKKworCQljYXNlICciJyA6CisKKwkJCXJldFtqKytdID0gJyYnOworCQkJcmV0W2orK10gPSAncSc7CisJCQlyZXRbaisrXSA9ICd1JzsKKwkJCXJldFtqKytdID0gJ28nOworCQkJcmV0W2orK10gPSAndCc7CisJCQlyZXRbaisrXSA9ICc7JzsKKworCQkJYnJlYWs7CisKKwkJY2FzZSAnPCcgOgorCisJCQlyZXRbaisrXSA9ICcmJzsKKwkJCXJldFtqKytdID0gJ2wnOworCQkJcmV0W2orK10gPSAndCc7CisJCQlyZXRbaisrXSA9ICc7JzsKKworCQkJYnJlYWs7CisKKwkJY2FzZSAweDkgOgorCisJCQlyZXRbaisrXSA9ICcmJzsKKwkJCXJldFtqKytdID0gJyMnOworCQkJcmV0W2orK10gPSAneCc7CisJCQlyZXRbaisrXSA9ICc5JzsKKwkJCXJldFtqKytdID0gJzsnOworCisJCQlicmVhazsKKworCQljYXNlIDB4QSA6CisKKwkJCXJldFtqKytdID0gJyYnOworCQkJcmV0W2orK10gPSAnIyc7CisJCQlyZXRbaisrXSA9ICd4JzsKKwkJCXJldFtqKytdID0gJ0EnOworCQkJcmV0W2orK10gPSAnOyc7CisKKwkJCWJyZWFrOworCisJCWNhc2UgMHhEIDoKKworCQkJcmV0W2orK10gPSAnJic7CisJCQlyZXRbaisrXSA9ICcjJzsKKwkJCXJldFtqKytdID0gJ3gnOworCQkJcmV0W2orK10gPSAnRCc7CisJCQlyZXRbaisrXSA9ICc7JzsKKworCQkJYnJlYWs7CisKKwkJZGVmYXVsdCA6CisKKwkJCXJldFtqKytdID0gYzsKKworCQl9CisKKwl9CisKKwkvLyBmaW5hbCBjaGFyYWN0ZXI6CisKKwlyZXRbal0gPSAnXDAnOworCXJldC5zZXRCdWZmZXJUeXBlKHNhZmVCdWZmZXI6OkJVRkZFUl9DSEFSKTsKKworCXJldHVybiByZXQ7CisKK30KKworYm9vbCBYU0VDQzE0bjIwMDEwMzE1OjpjaGVja1JlbmRlck5hbWVTcGFjZU5vZGUoRE9NTm9kZSAqZSwgRE9NTm9kZSAqYSkgeworCisJRE9NTm9kZSAqcGFyZW50OworCURPTU5vZGUgKmF0dDsKKwlET01OYW1lZE5vZGVNYXAgKmF0dHM7CisKKwkvLyBJZiBYUGF0aCBhbmQgbm9kZSBub3Qgc2VsZWN0ZWQsIHRoZW4gbmV2ZXIgcHJpbnQKKwlpZiAobV9YUGF0aFNlbGVjdGlvbiAmJiAhIG1fWFBhdGhNYXAuaGFzTm9kZShhKSkKKwkJcmV0dXJuIGZhbHNlOworCisgICAgLy8gQlVHRklYOiB3ZSBuZWVkIHRvIHNraXAgeG1sbnM6eG1sIGlmIHRoZSB2YWx1ZSBpcyBodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UKKyAgICBpZiAoc3RyRXF1YWxzKGEtPmdldExvY2FsTmFtZSgpLCAieG1sIikgJiYgc3RyRXF1YWxzKGEtPmdldE5vZGVWYWx1ZSgpLCAiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworCS8vIEZpcnN0IC0gYXJlIHdlIGV4Y2x1c2l2ZT8KKworCXNhZmVCdWZmZXIgbG9jYWxOYW1lOworCWJvb2wgcHJvY2Vzc0FzRXhjbHVzaXZlID0gZmFsc2U7CisKKwlpZiAobV9leGNsdXNpdmUpIHsKKworCQlpZiAoc3RyRXF1YWxzKGEtPmdldE5vZGVOYW1lKCksICJ4bWxucyIpKSB7CisJCQlwcm9jZXNzQXNFeGNsdXNpdmUgPSBtX2V4Y2x1c2l2ZURlZmF1bHQ7CisJCX0KKwkJZWxzZSB7CisJCQlsb2NhbE5hbWUgPDwgKCptcF9mb3JtYXR0ZXIgPDwgYS0+Z2V0TG9jYWxOYW1lKCkpOworCQkJcHJvY2Vzc0FzRXhjbHVzaXZlID0gIWluTm9uRXhjbE5TTGlzdChsb2NhbE5hbWUpOworCQl9CisKKwl9CisKKwlpZiAocHJvY2Vzc0FzRXhjbHVzaXZlKSB7CisKKwkJLy8gSXMgdGhlIHBhcmVudCBpbiB0aGUgIG5vZGUtc2V0PworCQlpZiAobV9YUGF0aFNlbGVjdGlvbiAmJiAhbV9YUGF0aE1hcC5oYXNOb2RlKGUpKQorCQkJcmV0dXJuIGZhbHNlOworCisJCS8vIElzIHRoZSBuYW1lIHNwYWNlIHZpc2libHkgdXRpbGlzZWQ/CisJCWxvY2FsTmFtZSA8PCAoKm1wX2Zvcm1hdHRlciA8PCBhLT5nZXRMb2NhbE5hbWUoKSk7CisKKwkJaWYgKGxvY2FsTmFtZS5zYlN0cmNtcCgieG1sbnMiKSA9PSAwKQorCQkJbG9jYWxOYW1lWzBdID0gJ1wwJzsJCQkvLyBJcyB0aGlzIGNvcnJlY3Qgb3Igc2hvdWxkIFhlcmNlcyByZXR1cm4gIiIgZm9yIGRlZmF1bHQ/CisKKwkJaWYgKCF2aXNpYmx5VXRpbGlzZXMoZSwgbG9jYWxOYW1lKSkKKwkJCXJldHVybiBmYWxzZTsKKworCQkvLyBJZiB3ZSBhcmUgdGhlIHRvcCBub2RlLCB0aGVuIHRoaXMgaGFzIG5ldmVyIGJlZW4gcHJpbnRlcgorCQlpZiAoZSA9PSBtcF9maXJzdEVsZW1lbnROb2RlKQorCQkJcmV0dXJuIHRydWU7CisKKwkJLy8gTWFrZSBzdXJlIHByZXZpb3VzIG5vZGVzIGRvIG5vdCB1c2UgdGhlIG5hbWUgc3BhY2UgKGFuZCBoYXZlIGl0IHByaW50ZWQpCisJCXBhcmVudCA9IGUtPmdldFBhcmVudE5vZGUoKTsKKworCQl3aGlsZSAocGFyZW50ICE9IE5VTEwpIHsKKworCQkJaWYgKCFtX1hQYXRoU2VsZWN0aW9uIHx8IG1fWFBhdGhNYXAuaGFzTm9kZShwYXJlbnQpKSB7CisKKwkJCQkvLyBBbiBvdXRwdXQgYW5jZXN0b3IKKwkJCQlpZiAodmlzaWJseVV0aWxpc2VzKHBhcmVudCwgbG9jYWxOYW1lKSkgeworCisJCQkJCS8vIEhhdmUgYSBoaXQhCisJCQkJCXdoaWxlIChwYXJlbnQgIT0gTlVMTCkgeworCQkJCQkJYXR0cyA9IHBhcmVudC0+Z2V0QXR0cmlidXRlcygpOworCQkJCQkJYXR0ID0gKGF0dHMgIT0gTlVMTCkgPyBhdHRzLT5nZXROYW1lZEl0ZW0oYS0+Z2V0Tm9kZU5hbWUoKSkgOiBOVUxMOworCQkJCQkJaWYgKGF0dCAhPSBOVUxMICYmICghbV9YUGF0aFNlbGVjdGlvbiB8fCBtX1hQYXRoTWFwLmhhc05vZGUoYXR0KSkpIHsKKworCQkJCQkJCS8vIENoZWNrIFVSSSBpcyB0aGUgc2FtZQorCQkJCQkJCWlmIChzdHJFcXVhbHMoYXR0LT5nZXROb2RlVmFsdWUoKSwgYS0+Z2V0Tm9kZVZhbHVlKCkpKQorCQkJCQkJCQlyZXR1cm4gZmFsc2U7CisKKwkJCQkJCQlyZXR1cm4gdHJ1ZTsKKworCQkJCQkJfQorCisJCQkJCQkvLyBJZiB3ZSBhcmUgdXNpbmcgdGhlIG5hbWVzcGFjZSBzdGFjaywgd2UgbmVlZCB0byBnbyB1cCB1bnRpbAorCQkJCQkJLy8gd2UgZm91bmQgdGhlIGRlZmluaW5nIGF0dHJpYnV0ZSBmb3IgdGhpcyBub2RlCisJCQkJCQlpZiAobV91c2VOYW1lc3BhY2VTdGFjaykgeworCQkJCQkJCXBhcmVudCA9IHBhcmVudC0+Z2V0UGFyZW50Tm9kZSgpOworCQkJCQkJfQorCQkJCQkJZWxzZQorCisJCQkJCQkJcmV0dXJuIHRydWU7CisJCQkJCX0KKwkJCQkJLy8gRXZlbiBpZiB3ZSBhcmUgdXNpbmcgdGhlIG5hbWVzcGFjZSBzdGFjaywgd2UgaGF2ZSBuZXZlcgorCQkJCQkvLyBwcmludGVkIHRoaXMgbmFtZXNwYWNlCisJCQkJCXJldHVybiB0cnVlOworCQkJCX0KKwkJCX0KKworCQkJaWYgKHBhcmVudCA9PSBtcF9maXJzdEVsZW1lbnROb2RlKQorCQkJCXBhcmVudCA9IE5VTEw7CisJCQllbHNlCisJCQkJcGFyZW50ID0gcGFyZW50LT5nZXRQYXJlbnROb2RlKCk7CisKKwkJfQorCisJCS8vIERpZG4ndCBmaW5kIGl0IHJlbmRlcmVkIQorCQlyZXR1cm4gdHJ1ZTsKKworCX0KKworCS8vIEVpdGhlciB3ZSBhcmUgbm93IGluIG5vbi1leGNsdXNpdmUgbW9kZSwgb3IgdGhlIG5hbWUgc3BhY2UgaW4gcXVlc3Rpb24KKwkvLyBJcyB0byBiZSB0cmVhdGVkIGFzIG5vbi1leGNsdXNpdmUKKworCS8vIE5ldmVyIGRpcmVjdGx5IHJlbmRlciBhIGRlZmF1bHQKKwlpZiAoc3RyRXF1YWxzKGEtPmdldE5vZGVOYW1lKCksICJ4bWxucyIpICYmIHN0ckVxdWFscyhhLT5nZXROb2RlVmFsdWUoKSwgIiIpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvLyBJZiB1c2luZyBhIG5hbWVzcGFjZSBzdGFjaywgdGhlbiB3ZSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQgbm9kZSBpcyBpbiB0aGUgbm9kZXNldAorCS8vIE9ubHkgcmVhbGx5IG5lY2Vzc2FyeSBmb3IgZW52ZWxvcGUgdHhmbXMgaW4gYm91bmRhcnkgY29uZGl0aW9ucworCisJaWYgKG1fdXNlTmFtZXNwYWNlU3RhY2sgJiYgbV9YUGF0aFNlbGVjdGlvbiAmJiAhbV9YUGF0aE1hcC5oYXNOb2RlKGUpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvLyBPdGhlcndpc2UsIG9mIG5vZGUgaXMgYXQgYmFzZSBvZiBzZWxlY3RlZCBkb2N1bWVudCwgdGhlbiBwcmludAorCWlmIChlID09IG1wX2ZpcnN0RWxlbWVudE5vZGUpCisJCXJldHVybiB0cnVlOworCisJaWYgKG1fdXNlTmFtZXNwYWNlU3RhY2spIHsKKworCQkvLyBJbiB0aGlzIGNhc2UsIHdlIG5lZWQgdG8gZ28gdXAgdW50aWwgd2UgZmluZCB0aGUgbmFtZXNwYWNlIGRlZmluaXRpb24KKwkJLy8gaW4gcXVlc3Rpb24KKworCQlwYXJlbnQgPSBlLT5nZXRQYXJlbnROb2RlKCk7CisJCXdoaWxlIChwYXJlbnQgIT0gTlVMTCkgeworCisJCQlpZiAoIW1fWFBhdGhTZWxlY3Rpb24gfHwgbV9YUGF0aE1hcC5oYXNOb2RlKHBhcmVudCkpIHsKKwkJCQlET01OYW1lZE5vZGVNYXAgKnBtYXAgPSBwYXJlbnQtPmdldEF0dHJpYnV0ZXMoKTsKKwkJCQlET01Ob2RlICpwbnM7CisJCQkJaWYgKHBtYXApCisJCQkJCXBucyA9IHBtYXAtPmdldE5hbWVkSXRlbShhLT5nZXROb2RlTmFtZSgpKTsKKwkJCQllbHNlCisJCQkJCXBucyA9IE5VTEw7CisKKwkJCQlpZiAocG5zICE9IE5VTEwpIHsKKworCQkJCQkvLyBOb3RlIHdlIGRvbid0IGNoZWNrIFhQYXRoIGluY2x1c2lvbiwgYXMgd2Ugc2hvdWxkbid0IGJlCisJCQkJCS8vIHVzaW5nIHRoZSBuYW1lc3BhY2Ugc3RhY2sgZm9yIFhQYXRoIGV4cHJlc3Npb25zCisKKwkJCQkJaWYgKHN0ckVxdWFscyhwbnMtPmdldE5vZGVWYWx1ZSgpLCBhLT5nZXROb2RlVmFsdWUoKSkpCisJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCWVsc2UKKwkJCQkJCXJldHVybiB0cnVlOwkJLy8gV2FzIGRlZmluZWQgYnV0IGRpZmZlcmVudGx5CisJCQkJfQorCQkJfQorCQkJcGFyZW50ID0gcGFyZW50LT5nZXRQYXJlbnROb2RlKCk7CisJCX0KKwkJLy8gT2J2aW91c2x5IHdlIGhhdmVuJ3QgZm91bmQgaXQhCisJCXJldHVybiB0cnVlOworCX0KKworCS8vIEZpbmQgdGhlIHBhcmVudCBhbmQgY2hlY2sgaWYgdGhlIG5vZGUgaXMgYWxyZWFkeSBkZWZpbmVkIG9yIGlmIHRoZSBub2RlCisJLy8gd2FzIG91dCBvZiBzY29wZQorCXBhcmVudCA9IGUtPmdldFBhcmVudE5vZGUoKTsKKy8vCWlmIChtX1hQYXRoU2VsZWN0aW9uICYmICFtX1hQYXRoTWFwLmhhc05vZGUocGFyZW50KSkKKy8vCQlyZXR1cm4gdHJ1ZTsKKworCXdoaWxlIChtX1hQYXRoU2VsZWN0aW9uICYmIHBhcmVudCAhPSBOVUxMICYmICFtX1hQYXRoTWFwLmhhc05vZGUocGFyZW50KSkKKwkJcGFyZW50ID0gcGFyZW50LT5nZXRQYXJlbnROb2RlKCk7CisKKwlpZiAocGFyZW50ID09IE5VTEwpCisJCXJldHVybiB0cnVlOworCisJRE9NTmFtZWROb2RlTWFwICpwbWFwID0gcGFyZW50LT5nZXRBdHRyaWJ1dGVzKCk7CisKKwlET01Ob2RlICpwbnMgPSBwbWFwLT5nZXROYW1lZEl0ZW0oYS0+Z2V0Tm9kZU5hbWUoKSk7CisKKwlpZiAocG5zICE9IE5VTEwpIHsKKworCQlpZiAobV9YUGF0aFNlbGVjdGlvbiAmJiAhbV9YUGF0aE1hcC5oYXNOb2RlKHBucykpCisJCQlyZXR1cm4gdHJ1ZTsJCQkvLyBOb3QgcHJpbnRlZCBpbiBwcmV2aW91cyBub2RlCisKKwkJaWYgKHN0ckVxdWFscyhwbnMtPmdldE5vZGVWYWx1ZSgpLCBhLT5nZXROb2RlVmFsdWUoKSkpCisJCQlyZXR1cm4gZmFsc2U7CisJCWVsc2UKKwkJCXJldHVybiB0cnVlOwkJLy8gV2FzIGRlZmluZWQgYnV0IGRpZmZlcmVudGx5CisKKwl9CisKKwlyZXR1cm4gdHJ1ZTsJCQkvLyBOb3QgZGVmaW5lZCBpbiBwcmV2aW91cyBub2RlCisKK30KKworCisKKwkvLyBDaGVjayBhbiBhdHRyaWJ1dGUgdG8gc2VlIGlmIHdlIHNob3VsZCBvdXRwdXQKKworCisvLyBUaGlzIGlzIHRoZSBtYWluIHdvcmtlciBmdW5jdGlvbiBvZiB0aGlzIGNsYXNzCisKK3hzZWNzaXplX3QgWFNFQ0MxNG4yMDAxMDMxNTo6cHJvY2Vzc05leHROb2RlKCkgeworCisJLy8gVGhlIGluZm9ybWF0aW9uIGN1cnJlbnRseSBpbiB0aGUgYnVmZmVyIGhhcyBhbGwgYmVlbiB1c2VkLiAgV2Ugbm93IHByb2Nlc3MgdGhlCisJLy8gbmV4dCBub2RlLgorCisJRE9NTm9kZSAqbmV4dDsJCQkJLy8gRm9yIHdvcmtpbmcgKGhhZCAqbnMpCisJRE9NTmFtZWROb2RlTWFwICp0bXBBdHRzOwkvLyAgIiAgICAgIgorCXNhZmVCdWZmZXIgY3VycmVudE5hbWUoMTI4KSwgY3VycmVudFZhbHVlKDEwMjQpLCBzYldvcms7CisJYm9vbCBkb25lLCB4bWxuc0ZvdW5kOworCisKKwlpZiAobV9hbGxOb2Rlc0RvbmUpIHsKKworCQlyZXR1cm4gMDsJCQkJCS8vIE5vIGJ5dGVzIGNvcGllZCBiZWNhdXNlIG5vdGhpbmcgbW9yZSB0byBiZSBkb25lCisKKwl9CisKKwkvLyBBbHdheXMgemVyb2lzZSBidWZmZXJzIHRvIG1ha2Ugd29yayBzaW1wbGVyCisJbV9idWZmZXJMZW5ndGggPSBtX2J1ZmZlclBvaW50ID0gMDsKKwltX2J1ZmZlci5zYlN0cmNweUluKCIiKTsKKworCS8vIEZpbmQgb3V0IGlmIHRoaXMgaXMgYSBub2RlIHRvIHByb2Nlc3MKKwlib29sIHByb2Nlc3NOb2RlOworCWludCBub2RlVDsKKworCWlmIChtcF9uZXh0Tm9kZSA9PSAwKSB7CisKKwkJLy8gRHVtbXkgZWxlbWVudCAtIHdlIG5lZWQgdG8gaW5zZXJ0IGEgZGVmYXVsdCBuYW1lc3BhY2UKKworCQlub2RlVCA9IERPTU5vZGU6OkFUVFJJQlVURV9OT0RFOworCQlwcm9jZXNzTm9kZSA9IHRydWU7CisKKwl9CisJZWxzZSB7CisKKwkJcHJvY2Vzc05vZGUgPSAoKCFtX1hQYXRoU2VsZWN0aW9uKSB8fCAobV9YUGF0aE1hcC5oYXNOb2RlKG1wX25leHROb2RlKSkpOworCQlub2RlVCA9IG1wX25leHROb2RlLT5nZXROb2RlVHlwZSgpOworCisJfQorCisJc3dpdGNoIChub2RlVCkgeworCisJY2FzZSBET01Ob2RlOjpET0NVTUVOVF9OT0RFIDogLy8gU3RhcnQgb2YgYSBkb2N1bWVudAorCisJCS8vIENoZWNrIGlmIGZpbmlzaGVkCisJCWlmIChtX3JldHVybmVkRnJvbUNoaWxkKSB7CisKKwkJCS8vIEFsbCBkb25lIQorCQkJbV9hbGxOb2Rlc0RvbmUgPSB0cnVlOworCisJCQlyZXR1cm4gMDsKKworCQl9CisKKwkJLy8gSW4gYzE0biB3ZSBkb24ndCBhY3R1YWxseSBkbyBhbnl0aGluZyBmb3IgYSBkb2N1bWVudCBub2RlIGV4Y2VwdAorCQkvLyBwcm9jZXNzIHRoZSBjaGlsZGVyZW4KKworCQltcF9maXJzdEVsZW1lbnROb2RlID0gKChET01Eb2N1bWVudCAqKSBtcF9uZXh0Tm9kZSktPmdldERvY3VtZW50RWxlbWVudCgpOworCQluZXh0ID0gbXBfbmV4dE5vZGUtPmdldEZpcnN0Q2hpbGQoKTsKKworCQlpZiAobmV4dCA9PSBOVUxMKSB7CisKKwkJCS8vIEVtcHR5IGRvY3VtZW50PworCQkJbV9hbGxOb2Rlc0RvbmUgPSB0cnVlOworCisJCX0KKworCQltcF9uZXh0Tm9kZSA9IG5leHQ7CisJCW1fYnVmZmVyTGVuZ3RoID0gbV9idWZmZXJQb2ludCA9IDA7CQkvLyBUbyBlbnN1cmUgbm9ib2R5IGNvcGllcyAibm90aGluZyIKKworCQlyZXR1cm4gMDsKKworCWNhc2UgRE9NTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFIDogLy8gSWdub3JlIG1lCisKKwkJbV9yZXR1cm5lZEZyb21DaGlsZCA9IHRydWU7CisJCW1fYnVmZmVyLnNiU3RyY3B5SW4oIiIpOworCQlicmVhazsKKworCWNhc2UgRE9NTm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFIDogLy8gSnVzdCBwcmludAorCisJCWlmIChwcm9jZXNzTm9kZSkgeworCQkJaWYgKChtcF9uZXh0Tm9kZS0+Z2V0UGFyZW50Tm9kZSgpID09IG1wX2RvYykgJiYgbV9maXJzdEVsZW1lbnRQcm9jZXNzZWQpIHsKKworCQkJCS8vIHRoaXMgaXMgYSB0b3AgbGV2ZWwgbm9kZSBhbmQgZmlyc3QgZWxlbWVudCBkb25lCisJCQkJbV9idWZmZXIuc2JTdHJjcHlJbigiXHgwMEE8PyIpOworCisJCQl9CisJCQllbHNlCisJCQkJbV9idWZmZXIuc2JTdHJjcHlJbigiPD8iKTsKKworCQkJbV9mb3JtYXRCdWZmZXIgPDwgKCptcF9mb3JtYXR0ZXIgPDwgbXBfbmV4dE5vZGUtPmdldE5vZGVOYW1lKCkpOworCQkJbV9idWZmZXIuc2JTdHJjYXRJbihtX2Zvcm1hdEJ1ZmZlcik7CisKKwkJCW1fZm9ybWF0QnVmZmVyIDw8ICgqbXBfZm9ybWF0dGVyIDw8ICgoRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICopIG1wX25leHROb2RlKS0+Z2V0RGF0YSgpKTsKKwkJCWlmIChtX2Zvcm1hdEJ1ZmZlci5zYlN0cmxlbigpID4gMCkgeworCQkJCW1fYnVmZmVyLnNiU3RyY2F0SW4oIiAiKTsKKwkJCQltX2J1ZmZlci5zYlN0cmNhdEluKG1fZm9ybWF0QnVmZmVyKTsKKwkJCX0KKworCQkJbV9idWZmZXIuc2JTdHJjYXRJbigiPz4iKTsKKworCQkJaWYgKChtcF9uZXh0Tm9kZS0+Z2V0UGFyZW50Tm9kZSgpID09IG1wX2RvYykgJiYgIW1fZmlyc3RFbGVtZW50UHJvY2Vzc2VkKSB7CisKKwkJCQkvLyB0aGlzIGlzIGEgdG9wIGxldmVsIG5vZGUgYW5kIGZpcnN0IGVsZW1lbnQgZG9uZQorCQkJCW1fYnVmZmVyLnNiU3RyY2F0SW4oIlx4MDBBIik7CisKKwkJCX0KKwkJfQorCisJCS8vIE5vZGUgZnVsbHkgcHJvY2Vzc2VkCisJCW1fcmV0dXJuZWRGcm9tQ2hpbGQgPSB0cnVlOworCisJCWJyZWFrOworCisKKwljYXNlIERPTU5vZGU6OkNPTU1FTlRfTk9ERSA6IC8vIEp1c3QgcHJpbnQgb3V0CisKKwkJaWYgKHByb2Nlc3NOb2RlICYmIG1fcHJvY2Vzc0NvbW1lbnRzKSB7CisJCQlpZiAoKG1wX25leHROb2RlLT5nZXRQYXJlbnROb2RlKCkgPT0gbXBfZG9jKSAmJiBtX2ZpcnN0RWxlbWVudFByb2Nlc3NlZCkgeworCisJCQkJLy8gdGhpcyBpcyBhIHRvcCBsZXZlbCBub2RlIGFuZCBmaXJzdCBlbGVtZW50IGRvbmUKKwkJCQltX2J1ZmZlci5zYlN0cmNweUluKCJceDAwQTwhLS0iKTsKKworCQkJfQorCQkJZWxzZQorCQkJCW1fYnVmZmVyLnNiU3RyY3B5SW4oIjwhLS0iKTsKKworCQkJbV9mb3JtYXRCdWZmZXIgPDwgKCptcF9mb3JtYXR0ZXIgPDwgbXBfbmV4dE5vZGUtPmdldE5vZGVWYWx1ZSgpKTsKKworCQkJaWYgKG1fZm9ybWF0QnVmZmVyLnNiU3RybGVuKCkgPiAwKSB7CisJCQkJbV9idWZmZXIuc2JTdHJjYXRJbihtX2Zvcm1hdEJ1ZmZlcik7CisJCQl9CisKKwkJCW1fYnVmZmVyLnNiU3RyY2F0SW4oIi0tPiIpOworCisJCQlpZiAoKG1wX25leHROb2RlLT5nZXRQYXJlbnROb2RlKCkgPT0gbXBfZG9jKSAmJiAhbV9maXJzdEVsZW1lbnRQcm9jZXNzZWQpIHsKKworCQkJCS8vIHRoaXMgaXMgYSB0b3AgbGV2ZWwgbm9kZSBhbmQgZmlyc3QgZWxlbWVudCBkb25lCisJCQkJbV9idWZmZXIuc2JTdHJjYXRJbigiXHgwMEEiKTsKKworCQkJfQorCQl9CisKKwkJbV9yZXR1cm5lZEZyb21DaGlsZCA9IHRydWU7CS8vIEZvb2wgdGhlIHRyZWUgcHJvY2Vzc29yCisKKwkJYnJlYWs7CisKKwljYXNlIERPTU5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERSA6CisJY2FzZSBET01Ob2RlOjpURVhUX05PREUgOiAvLyBTdHJhaWdodCBjb3B5IGZvciBub3cKKworCQlpZiAocHJvY2Vzc05vZGUpIHsKKwkJCW1fZm9ybWF0QnVmZmVyIDw8ICgqbXBfZm9ybWF0dGVyIDw8IG1wX25leHROb2RlLT5nZXROb2RlVmFsdWUoKSk7CisKKwkJCS8vIERvIGMxNG4gY2xlYW5pbmcgb24gdGhlIHRleHQgc3RyaW5nCisKKwkJCW1fYnVmZmVyID0gYzE0bkNsZWFuVGV4dChtX2Zvcm1hdEJ1ZmZlcik7CisKKwkJfQorCisJCS8vIEZhbGwgdGhyb3VnaAorCQltX3JldHVybmVkRnJvbUNoaWxkID0gdHJ1ZTsJCS8vIEZvb2wgdGhlIHRyZWUgcHJvY2Vzc29yCisJCWJyZWFrOworCisJY2FzZSBET01Ob2RlOjpFTEVNRU5UX05PREUgOiAvLyBUaGlzIGlzIGFuIGVsZW1lbnQgdGhhdCB3ZSBjYW4gZWFzaWx5IHByb2Nlc3MKKworCQkvLyBJZiB3ZSBhcmUgZ29pbmcgInVwIiB0aGVuIHdlIHNpbXBseSBjbG9zZSBvZmYgdGhlIGVsZW1lbnQKKworCQlpZiAobV9yZXR1cm5lZEZyb21DaGlsZCkgeworCQkJaWYgKHByb2Nlc3NOb2RlKSB7CisJCQkJbV9idWZmZXIuc2JTdHJjcHlJbiAoIjwvIik7CisJCQkJbV9mb3JtYXRCdWZmZXIgPDwgKCptcF9mb3JtYXR0ZXIgPDwgbXBfbmV4dE5vZGUtPmdldE5vZGVOYW1lKCkpOworCQkJCW1fYnVmZmVyLnNiU3RyY2F0SW4obV9mb3JtYXRCdWZmZXIpOworCQkJCW1fYnVmZmVyLnNiU3RyY2F0SW4oIj4iKTsKKwkJCX0KKworCQkJaWYgKG1fdXNlTmFtZXNwYWNlU3RhY2spCisJCQkJbV9uc1N0YWNrLnBvcEVsZW1lbnQoKTsKKworCQkJYnJlYWs7CisJCX0KKworCQlpZiAocHJvY2Vzc05vZGUpIHsKKworCQkJbV9idWZmZXIuc2JTdHJjcHlJbigiPCIpOworCQkJbV9mb3JtYXRCdWZmZXIgPDwgKCptcF9mb3JtYXR0ZXIgPDwgbXBfbmV4dE5vZGUtPmdldE5vZGVOYW1lKCkpOworCQkJbV9idWZmZXIuc2JTdHJjYXRJbihtX2Zvcm1hdEJ1ZmZlcik7CisJCX0KKworCQkvLyBXZSBub3cgc2V0IHVwIGZvciBhdHRyaWJ1dGVzIGFuZCBuYW1lIHNwYWNlcworCQlpZiAobV91c2VOYW1lc3BhY2VTdGFjaykKKwkJCW1fbnNTdGFjay5wdXNoRWxlbWVudChtcF9uZXh0Tm9kZSk7CisKKwkJbXBfYXR0cmlidXRlcyA9IE5VTEw7CisJCXRtcEF0dHMgPSBtcF9uZXh0Tm9kZS0+Z2V0QXR0cmlidXRlcygpOworCQluZXh0ID0gbXBfbmV4dE5vZGU7CisKKwkJZG9uZSA9IGZhbHNlOworCQl4bWxuc0ZvdW5kID0gZmFsc2U7CisKKwkJd2hpbGUgKCFkb25lKSB7CisKKwkJCS8vIE5lZWQgdG8gc29ydCB0aGUgYXR0cmlidXRlcworCisJCQlYTUxTaXplX3Qgc2l6ZTsKKworCQkJaWYgKHRtcEF0dHMgIT0gTlVMTCkKKwkJCQlzaXplID0gdG1wQXR0cy0+Z2V0TGVuZ3RoKCk7CisJCQllbHNlCisJCQkJc2l6ZSA9IDA7CisKKwkJCVhTRUNOb2RlTGlzdEVsdCAqdG9JbnM7CisJCQlYTUxTaXplX3QgaTsKKworCQkJZm9yIChpID0gMDsgaSA8IHNpemU7ICsraSkgeworCisJCQkJLy8gR2V0IHRoZSBuYW1lIGFuZCB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlCisJCQkJY3VycmVudE5hbWUgPDwgKCptcF9mb3JtYXR0ZXIgPDwgdG1wQXR0cy0+aXRlbShpKS0+Z2V0Tm9kZU5hbWUoKSk7CisJCQkJY3VycmVudFZhbHVlIDw8ICgqbXBfZm9ybWF0dGVyIDw8IHRtcEF0dHMtPml0ZW0oaSktPmdldE5vZGVWYWx1ZSgpKTsKKworCQkJCS8vIEJ1aWxkIHRoZSBzdHJpbmcgdXNlZCB0byBzb3J0IHRoaXMgbm9kZQorCisJCQkJaWYgKChuZXh0ID09IG1wX25leHROb2RlKSAmJiBjdXJyZW50TmFtZS5zYlN0cm5jbXAoInhtbG5zIiwgNSkgPT0gMCkgeworCisJCQkJCS8vIEFyZSB3ZSB1c2luZyB0aGUgbmFtZXNwYWNlIHN0YWNrPyAgSWYgc28gLSBzdG9yZSB0aGlzIGZvciBsYXRlcgorCQkJCQkvLyBwcm9jZXNzaW5nCisJCQkJCWlmIChtX3VzZU5hbWVzcGFjZVN0YWNrKSB7CisJCQkJCQltX25zU3RhY2suYWRkTmFtZXNwYWNlKHRtcEF0dHMtPml0ZW0oaSkpOworCQkJCQl9CisJCQkJCWVsc2UgeworCisJCQkJCQkvLyBJcyB0aGlzIHRoZSBkZWZhdWx0PworCQkJCQkJaWYgKGN1cnJlbnROYW1lLnNiU3RyY21wKCJ4bWxucyIpID09IDAgJiYKKwkJCQkJCQkoIW1fWFBhdGhTZWxlY3Rpb24gfHwgbV9YUGF0aE1hcC5oYXNOb2RlKHRtcEF0dHMtPml0ZW0oaSkpKSAmJgorCQkJCQkJCSFjdXJyZW50VmFsdWUuc2JTdHJjbXAoIiIpID09IDApCisJCQkJCQkJeG1sbnNGb3VuZCA9IHRydWU7CisKKwkJCQkJCS8vIEEgbmFtZXNwYWNlIG5vZGUgLSBTZWUgaWYgd2UgbmVlZCB0byBvdXRwdXQKKwkJCQkJCWlmIChjaGVja1JlbmRlck5hbWVTcGFjZU5vZGUobXBfbmV4dE5vZGUsIHRtcEF0dHMtPml0ZW0oaSkpKSB7CisKKwkJCQkJCQkvLyBBZGQgdG8gdGhlIGxpc3QKKworCQkJCQkJCW1fZm9ybWF0QnVmZmVyIDw8ICgqbXBfZm9ybWF0dGVyIDw8IHRtcEF0dHMtPml0ZW0oaSktPmdldE5vZGVOYW1lKCkpOworCQkJCQkJCWlmIChtX2Zvcm1hdEJ1ZmZlcls1XSA9PSAnOicpCisJCQkJCQkJCWN1cnJlbnROYW1lLnNiU3RyY3B5SW4oKGNoYXIgKikgJm1fZm9ybWF0QnVmZmVyWzZdKTsKKwkJCQkJCQllbHNlCisJCQkJCQkJCWN1cnJlbnROYW1lLnNiU3RyY3B5SW4oIiIpOworCisJCQkJCQkJdG9JbnMgPSBuZXcgWFNFQ05vZGVMaXN0RWx0OworCQkJCQkJCXRvSW5zLT5lbGVtZW50ID0gdG1wQXR0cy0+aXRlbShpKTsKKworCQkJCQkJCS8vIEJ1aWxkIGFuZCBpbnNlcnQgbmFtZSBzcGFjZSBub2RlCisJCQkJCQkJdG9JbnMtPnNvcnRTdHJpbmcuc2JTdHJjcHlJbihYTUxOU19QUkVGSVgpOworCQkJCQkJCXRvSW5zLT5zb3J0U3RyaW5nLnNiU3RyY2F0SW4oY3VycmVudE5hbWUpOworCisJCQkJCQkJLy8gSW5zZXJ0IG5vZGUKKwkJCQkJCQltcF9hdHRyaWJ1dGVzID0gaW5zZXJ0Tm9kZUludG9MaXN0KG1wX2F0dHJpYnV0ZXMsIHRvSW5zKTsKKworCQkJCQkJfQorCQkJCQl9CisKKwkJCQl9CisKKwkJCQllbHNlIHsKKworCQkJCQkvLyBBICJub3JtYWwiIGF0dHJpYnV0ZSAtIG9ubHkgcHJvY2VzcyBpZiBzZWxlY3RlZCBvciBubyBYUGF0aCBvciBpcyBhbgorCQkJCQkvLyBYTUwgbm9kZSBmcm9tIGEgcHJldmlvdXNseSB1bi1wcmludGVkIEVsZW1lbnQgbm9kZQorCisJCQkJCWJvb2wgWE1MRWxlbWVudCA9IChuZXh0ICE9IG1wX25leHROb2RlKSAmJiAoIW1fZXhjbHVzaXZlKSAmJiAhY3VycmVudE5hbWUuc2JTdHJuY21wKCJ4bWw6IiwgNCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICghbV9pbmNsMTEgfHwgY3VycmVudE5hbWUuc2JTdHJjbXAoInhtbDppZCIpKTsKKworCQkJCQkvLyBJZiB3ZSBoYXZlIGFuIFhNTCBlbGVtZW50LCBtYWtlIHN1cmUgaXQgd2FzIG5vdCBwcmludGVkIGJldHdlZW4gdGhpcworCQkJCQkvLyBub2RlIGFuZCB0aGUgbm9kZSBjdXJyZW50bHkgIGJlaW5nIHdvcmtlZCBvbgorCisJCQkJCWlmIChYTUxFbGVtZW50KSB7CisKKwkJCQkJCURPTU5vZGUgKnQgPSBtcF9uZXh0Tm9kZS0+Z2V0UGFyZW50Tm9kZSgpOworCQkJCQkJaWYgKG1fWFBhdGhTZWxlY3Rpb24gJiYgbV9YUGF0aE1hcC5oYXNOb2RlKHQpKQorCQkJCQkJCVhNTEVsZW1lbnQgPSBmYWxzZTsKKwkJCQkJCWVsc2UgeworCisJCQkJCQkJLy8gVGhpcyBpcyBhIHJlYWwgbm9kZSB0aGF0IHdlIGhhdmUgdG8gY2hlY2sKKworCQkJCQkJCXQgPSBtcF9uZXh0Tm9kZTsKKwkJCQkJCQl3aGlsZSAodCAhPSBuZXh0KSB7CisJCQkJCQkJCURPTU5hbWVkTm9kZU1hcCAqdGE7CisJCQkJCQkJCVhNTFNpemVfdCBzejsKKworCQkJCQkJCQl0YSA9IHQtPmdldEF0dHJpYnV0ZXMoKTsKKworCQkJCQkJCQlpZiAodGEgIT0gTlVMTCkKKwkJCQkJCQkJCXN6ID0gdGEtPmdldExlbmd0aCgpOworCQkJCQkJCQllbHNlCisJCQkJCQkJCQlzeiA9IDA7CisKKwkJCQkJCQkJZm9yIChYTUxTaXplX3QgaiA9IDA7IGogPCBzejsgKytqKSB7CisKKwkJCQkJCQkJCWlmIChzdHJFcXVhbHModGEtPml0ZW0oaiktPmdldE5vZGVOYW1lKCksCisJCQkJCQkJCQkJdG1wQXR0cy0+aXRlbShpKS0+Z2V0Tm9kZU5hbWUoKSkgPT0gdHJ1ZSkgeworCisJCQkJCQkJCQkJWE1MRWxlbWVudCA9IGZhbHNlOworCQkJCQkJCQkJCWJyZWFrOworCisJCQkJCQkJCQl9CisKKwkJCQkJCQkJfQorCisJCQkJCQkJCXQgPSB0LT5nZXRQYXJlbnROb2RlKCk7CisKKwkJCQkJCQl9CisKKwkJCQkJCX0KKworCQkJCQl9CisKKworCisJCQkJCWlmICgoIW1fWFBhdGhTZWxlY3Rpb24gJiYgbmV4dCA9PSBtcF9uZXh0Tm9kZSkgfHwgWE1MRWxlbWVudCB8fCAoKG5leHQgPT0gbXBfbmV4dE5vZGUpICYmIG1fWFBhdGhNYXAuaGFzTm9kZSh0bXBBdHRzLT5pdGVtKGkpKSkpIHsKKworCQkJCQkJdG9JbnMgPSBuZXcgWFNFQ05vZGVMaXN0RWx0OworCQkJCQkJdG9JbnMtPmVsZW1lbnQgPSB0bXBBdHRzLT5pdGVtKGkpOworCisJCQkJCQkvLyBGaXJzdCB0aGUgY29ycmVjdCBwcmVmaXggdG8gZW5zdXJlIHdpbGwgYmUgc29ydGVkCisJCQkJCQkvLyBpbiBjb3JyZWN0IHBsYWNpbmcgYWdhaW5zdCBYTUxOUyBub2RlcworCisJCQkJCQl0b0lucy0+c29ydFN0cmluZy5zYlN0cmNweUluKEFUVFJJQlVURV9QUkVGSVgpOworCisJCQkJCQkvLyBGaW5kIHRoZSBuYW1lc3BhY2UgVVJJCisJCQkJCQljb25zdCBYTUxDaCAqIG5zVVJJID0KKwkJCQkJCQl0bXBBdHRzLT5pdGVtKGkpLT5nZXROYW1lc3BhY2VVUkkoKTsKKworCQkJCQkJaWYgKG5zVVJJID09IE5VTEwpIHsKKwkJCQkJCQl0b0lucy0+c29ydFN0cmluZy5zYlN0cmNhdEluKE5PVVJJX1BSRUZJWCk7CisJCQkJCQl9CisJCQkJCQllbHNlIHsKKwkJCQkJCQltX2Zvcm1hdEJ1ZmZlciA8PCAoKm1wX2Zvcm1hdHRlciA8PCBuc1VSSSk7CisJCQkJCQkJdG9JbnMtPnNvcnRTdHJpbmcuc2JTdHJjYXRJbihIQVZFVVJJX1BSRUZJWCk7CisJCQkJCQkJdG9JbnMtPnNvcnRTdHJpbmcuc2JTdHJjYXRJbihtX2Zvcm1hdEJ1ZmZlcik7CisJCQkJCQl9CisKKwkJCQkJCS8vIEFwcGVuZCB0aGUgbG9jYWwgbmFtZSBhcyB0aGUgc2Vjb25kYXJ5IGtleQorCQkJCQkJY29uc3QgWE1MQ2ggKiBsbiA9IHRtcEF0dHMtPml0ZW0oaSktPmdldE5vZGVOYW1lKCk7CisJCQkJCQlpbnQgaW5kZXggPSBYTUxTdHJpbmc6OmluZGV4T2YobG4sIGNoQ29sb24pOworCQkJCQkJaWYgKGluZGV4ID49IDApCisJCQkJCQkJbG4gPSAmbG5baW5kZXgrMV07CisJCQkJCQltX2Zvcm1hdEJ1ZmZlciA8PCAoKm1wX2Zvcm1hdHRlciA8PCBsbik7CisJCQkJCQl0b0lucy0+c29ydFN0cmluZy5zYlN0cmNhdEluKG1fZm9ybWF0QnVmZmVyKTsKKworCQkJCQkJLy8gSW5zZXJ0IG5vZGUKKwkJCQkJCW1wX2F0dHJpYnV0ZXMgPSBpbnNlcnROb2RlSW50b0xpc3QobXBfYXR0cmlidXRlcywgdG9JbnMpOworCisJCQkJCX0gLyogZWxzZSAoc2JTdHJDbXAgeG1sbnMpICovCisJCQkJfQorCQkJfSAvKiBmb3IgKi8KKyNpZiAxCisJCQkvLyBOb3cgZ28gdXB3YXJkcyBhbmQgZmluZCBwYXJlbnQgZm9yIHhtbCBuYW1lIHNwYWNlcworCQkJaWYgKHByb2Nlc3NOb2RlICYmIChtX1hQYXRoU2VsZWN0aW9uIHx8IG1wX25leHROb2RlID09IG1wX2ZpcnN0RWxlbWVudE5vZGUpKSB7CisJCQkJbmV4dCA9IG5leHQtPmdldFBhcmVudE5vZGUoKTsKKworCQkJCWlmIChuZXh0ID09IDApIC8vIHx8IE5vZGVJbkxpc3QobXBfWFBhdGhNYXAsIG5leHQpKQorCQkJCQlkb25lID0gdHJ1ZTsKKwkJCQllbHNlCisJCQkJCXRtcEF0dHMgPSBuZXh0LT5nZXRBdHRyaWJ1dGVzKCk7CisJCQl9CisJCQllbHNlCisjZW5kaWYKKwkJCQlkb25lID0gdHJ1ZTsKKworCQl9IC8qIHdoaWxlIHRtcEF0dHMgIT0gTlVMTCAqLworCisJCS8vIE5vdyBhZGQgbmFtZXNwYWNlIG5vZGVzIC0gYnV0IG9ubHkgaWYgd2UgYXJlIHVzaW5nIHRoZSBuYW1lc3BhY2Ugc3RhY2sKKwkJLy8gKFRoZXkgaGF2ZSBhbHJlYWR5IGJlZW4gYWRkZWQgb3RoZXJ3aXNlCisJCWlmIChtX3VzZU5hbWVzcGFjZVN0YWNrKSB7CisKKwkJCURPTU5vZGUgKiBuc25vZGUgPSBtX25zU3RhY2suZ2V0Rmlyc3ROYW1lc3BhY2UoKTsKKwkJCXdoaWxlIChuc25vZGUgIT0gTlVMTCkgeworCQkJCS8vIEdldCB0aGUgbmFtZSBhbmQgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZQorCQkJCWN1cnJlbnROYW1lIDw8ICgqbXBfZm9ybWF0dGVyIDw8IG5zbm9kZS0+Z2V0Tm9kZU5hbWUoKSk7CisJCQkJY3VycmVudFZhbHVlIDw8ICgqbXBfZm9ybWF0dGVyIDw8IG5zbm9kZS0+Z2V0Tm9kZVZhbHVlKCkpOworCisJCQkJLy8gSXMgdGhpcyB0aGUgZGVmYXVsdD8KKwkJCQlpZiAoY3VycmVudE5hbWUuc2JTdHJjbXAoInhtbG5zIikgPT0gMCAmJgorCQkJCQkoIW1fWFBhdGhTZWxlY3Rpb24gfHwgbV9YUGF0aE1hcC5oYXNOb2RlKG5zbm9kZSkpICYmCisJCQkJCSFjdXJyZW50VmFsdWUuc2JTdHJjbXAoIiIpID09IDApCisJCQkJCXhtbG5zRm91bmQgPSB0cnVlOworCisJCQkJLy8gQSBuYW1lc3BhY2Ugbm9kZSAtIFNlZSBpZiB3ZSBuZWVkIHRvIG91dHB1dAorCQkJCWlmIChjaGVja1JlbmRlck5hbWVTcGFjZU5vZGUobXBfbmV4dE5vZGUsIG5zbm9kZSkpIHsKKworCQkJCQkvLyBBZGQgdG8gdGhlIGxpc3QKKwkJCQkJWFNFQ05vZGVMaXN0RWx0ICp0b0luczsKKworCQkJCQltX2Zvcm1hdEJ1ZmZlciA8PCAoKm1wX2Zvcm1hdHRlciA8PCBuc25vZGUtPmdldE5vZGVOYW1lKCkpOworCQkJCQlpZiAobV9mb3JtYXRCdWZmZXJbNV0gPT0gJzonKQorCQkJCQkJY3VycmVudE5hbWUuc2JTdHJjcHlJbigoY2hhciAqKSAmbV9mb3JtYXRCdWZmZXJbNl0pOworCQkJCQllbHNlCisJCQkJCQljdXJyZW50TmFtZS5zYlN0cmNweUluKCIiKTsKKworCQkJCQl0b0lucyA9IG5ldyBYU0VDTm9kZUxpc3RFbHQ7CisJCQkJCXRvSW5zLT5lbGVtZW50ID0gbnNub2RlOworCisJCQkJCS8vIEJ1aWxkIGFuZCBpbnNlcnQgbmFtZSBzcGFjZSBub2RlCisJCQkJCXRvSW5zLT5zb3J0U3RyaW5nLnNiU3RyY3B5SW4oWE1MTlNfUFJFRklYKTsKKwkJCQkJdG9JbnMtPnNvcnRTdHJpbmcuc2JTdHJjYXRJbihjdXJyZW50TmFtZSk7CisKKwkJCQkJLy8gSW5zZXJ0IG5vZGUKKwkJCQkJbXBfYXR0cmlidXRlcyA9IGluc2VydE5vZGVJbnRvTGlzdChtcF9hdHRyaWJ1dGVzLCB0b0lucyk7CisKKwkJCQkJLy8gTWFyayBhcyBwcmludGVkIGluIHRoZSBOUyBTdGFjaworCQkJCQltX25zU3RhY2sucHJpbnROYW1lc3BhY2UobnNub2RlLCBtcF9uZXh0Tm9kZSk7CisKKwkJCQl9CisJCQkJbnNub2RlID0gbV9uc1N0YWNrLmdldE5leHROYW1lc3BhY2UoKTsKKwkJCX0KKworCQkJLy8gRml4IGZvciBidWcjNDczNTMsIG1ha2Ugc3VyZSB3ZSBzZXQgeG1sbnNGb3VuZCByZWdhcmRsZXNzIG9mIHdoYXQgdGhlIHByaW50aW5nIHByb2Nlc3Mgc2F3LgorCSAgICAgICAgaWYgKCF4bWxuc0ZvdW5kKQorCSAgICAgICAgICAgIHhtbG5zRm91bmQgPSBtX25zU3RhY2suaXNOb25FbXB0eURlZmF1bHROUygpOworCisJCX0gLyogaWYgKG1fdXNlTmFtZXNwYWNlU3RhY2spICovCisKKworCQkvLyBDaGVjayB0byBzZWUgaWYgd2UgYWRkIHhtbG5zPSIiCisJCWlmIChwcm9jZXNzTm9kZSAmJiAheG1sbnNGb3VuZCAmJiBtcF9uZXh0Tm9kZSAhPSBtcF9maXJzdEVsZW1lbnROb2RlKSB7CisKKwkJCS8vIElzIHRoaXMgZXhjbHVzaXZlPworCisJCQlzYWZlQnVmZmVyIHNiTG9jYWxOYW1lKCIiKTsKKworCQkJaWYgKG1fZXhjbHVzaXZlRGVmYXVsdCkgeworCisJCQkJaWYgKHZpc2libHlVdGlsaXNlcyhtcF9uZXh0Tm9kZSwgc2JMb2NhbE5hbWUpKSB7CisKKwkJCQkJLy8gTWF5IGhhdmUgdG8gb3V0cHV0IQorCQkJCQluZXh0ID0gbXBfbmV4dE5vZGUtPmdldFBhcmVudE5vZGUoKTsKKworCQkJCQl3aGlsZSAobmV4dCAhPSBOVUxMKSB7CisKKwkJCQkJCWlmICghbV9YUGF0aFNlbGVjdGlvbiB8fCBtX3VzZU5hbWVzcGFjZVN0YWNrIHx8IG1fWFBhdGhNYXAuaGFzTm9kZShuZXh0KSkgeworCisJCQkJCQkJRE9NTm9kZSAqdG1wQXR0OworCisJCQkJCQkJLy8gQW4gb3V0cHV0IGFuY2VzdG9yCisJCQkJCQkJaWYgKHZpc2libHlVdGlsaXNlcyhuZXh0LCBzYkxvY2FsTmFtZSkpIHsKKwkJCQkJCQkJRE9NTm9kZSAqIG5leHRBdHRQYXJlbnQgPSBuZXh0OworCisJCQkJCQkJCXdoaWxlIChuZXh0QXR0UGFyZW50ICE9IE5VTEwpIHsKKwkJCQkJCQkJCS8vIEhhdmUgYSBoaXQhCisJCQkJCQkJCQl0bXBBdHRzID0gbmV4dEF0dFBhcmVudC0+Z2V0QXR0cmlidXRlcygpOworCQkJCQkJCQkJaWYgKHRtcEF0dHMgIT0gTlVMTCkKKwkJCQkJCQkJCQl0bXBBdHQgPSB0bXBBdHRzLT5nZXROYW1lZEl0ZW0oRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyWG1sbnMpOworCQkJCQkJCQkJaWYgKHRtcEF0dHMgIT0gTlVMTCAmJiB0bXBBdHQgIT0gTlVMTCAmJiAoIW1fWFBhdGhTZWxlY3Rpb24gfHwgbV91c2VOYW1lc3BhY2VTdGFjayB8fCBtX1hQYXRoTWFwLmhhc05vZGUodG1wQXR0KSkpIHsKKworCQkJCQkJCQkJCS8vIENoZWNrIFVSSSBpcyB0aGUgc2FtZQorCQkJCQkJCQkJCWlmICghc3RyRXF1YWxzKHRtcEF0dC0+Z2V0Tm9kZVZhbHVlKCksICIiKSkgeworCQkJCQkJCQkJCQl4bWxuc0ZvdW5kID0gdHJ1ZTsKKwkJCQkJCQkJCQkJbmV4dEF0dFBhcmVudCA9IE5VTEw7CisJCQkJCQkJCQkJfQorCQkJCQkJCQkJfQorCQkJCQkJCQkJZWxzZSB7CisKKwkJCQkJCQkJCQkvLyBEb2Vzbid0IGhhdmUgYSBkZWZhdWx0IG5hbWVzcGFjZSBpbiB0aGUgbm9kZS1zZXQKKwkJCQkJCQkJCQluZXh0ID0gbmV4dEF0dFBhcmVudCA9IE5VTEw7CisJCQkJCQkJCQkJYnJlYWs7CisKKwkJCQkJCQkJCX0KKworCQkJCQkJCQkJaWYgKG1fdXNlTmFtZXNwYWNlU3RhY2sgJiYgbmV4dEF0dFBhcmVudCkKKwkJCQkJCQkJCQluZXh0QXR0UGFyZW50ID0gbmV4dEF0dFBhcmVudC0+Z2V0UGFyZW50Tm9kZSgpOworCQkJCQkJCQkJZWxzZQorCQkJCQkJCQkJCW5leHRBdHRQYXJlbnQgPSBOVUxMOworCQkJCQkJCQl9CisKKworCQkJCQkJCX0KKwkJCQkJCX0KKworCQkJCQkJaWYgKG5leHQpCisJCQkJCQkJbmV4dCA9IG5leHQtPmdldFBhcmVudE5vZGUoKTsKKwkJCQkJfQorCisJCQkJfQorCQkJfSAvKiBtX2V4Y2x1c2l2ZURlZmF1bHQgKi8KKworCQkJZWxzZSB7CisKKwkJCQkvL0RPTV9Ob2RlIG5leHQ7CisKKwkJCQluZXh0ID0gbXBfbmV4dE5vZGUtPmdldFBhcmVudE5vZGUoKTsKKwkJCQl3aGlsZSAoIXhtbG5zRm91bmQgJiYgbmV4dCAhPSBOVUxMKSB7CisJCQkJCXdoaWxlIChuZXh0ICE9IE5VTEwgJiYgIW1fdXNlTmFtZXNwYWNlU3RhY2sgJiYgKG1fWFBhdGhTZWxlY3Rpb24gJiYgIW1fWFBhdGhNYXAuaGFzTm9kZShuZXh0KSkpCisJCQkJCQluZXh0ID0gbmV4dC0+Z2V0UGFyZW50Tm9kZSgpOworCisJCQkJCVhNTFNpemVfdCBzaXplOworCQkJCQlpZiAobmV4dCAhPSBOVUxMKQorCQkJCQkJdG1wQXR0cyA9IG5leHQtPmdldEF0dHJpYnV0ZXMoKTsKKworCQkJCQlpZiAobmV4dCAhPSBOVUxMICYmIHRtcEF0dHMgIT0gTlVMTCkKKwkJCQkJCXNpemUgPSB0bXBBdHRzLT5nZXRMZW5ndGgoKTsKKwkJCQkJZWxzZQorCQkJCQkJc2l6ZSA9IDA7CisKKwkJCQkJZm9yIChYTUxTaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKworCQkJCQkJY3VycmVudE5hbWUgPDwgKCptcF9mb3JtYXR0ZXIgPDwgdG1wQXR0cy0+aXRlbShpKS0+Z2V0Tm9kZU5hbWUoKSk7CisJCQkJCQljdXJyZW50VmFsdWUgPDwgKCptcF9mb3JtYXR0ZXIgPDwgdG1wQXR0cy0+aXRlbShpKS0+Z2V0Tm9kZVZhbHVlKCkpOworCisJCQkJCQlpZiAoKGN1cnJlbnROYW1lLnNiU3RyY21wKCJ4bWxucyIpID09IDApICYmCisJCQkJCQkJKG1fdXNlTmFtZXNwYWNlU3RhY2sgfHwgIW1fWFBhdGhTZWxlY3Rpb24gfHwgbV9YUGF0aE1hcC5oYXNOb2RlKHRtcEF0dHMtPml0ZW0oaSkpKSkgeworCQkJCQkJCWlmIChjdXJyZW50VmFsdWUuc2JTdHJjbXAoIiIpICE9IDApIHsKKwkJCQkJCQkJeG1sbnNGb3VuZCA9IHRydWU7CisJCQkJCQkJfQorCQkJCQkJCWVsc2UgeworCQkJCQkJCQl4bWxuc0ZvdW5kID0gZmFsc2U7CisJCQkJCQkJCW5leHQgPSBOVUxMOworCQkJCQkJCX0KKwkJCQkJCX0KKworCQkJCQl9CisJCQkJCWlmIChtX3VzZU5hbWVzcGFjZVN0YWNrICYmIG5leHQgIT0gTlVMTCkKKwkJCQkJCW5leHQgPSBuZXh0LT5nZXRQYXJlbnROb2RlKCk7CisJCQkJCWVsc2UKKwkJCQkJCW5leHQgPSBOVUxMOworCQkJCX0KKwkJCX0KKworCQkJLy8gRGlkIHdlIGZpbmQgYSBub24gZW1wdHkgbmFtZXNwYWNlPworCQkJaWYgKHhtbG5zRm91bmQpIHsKKworCQkJCWN1cnJlbnROYW1lLnNiU3RyY3B5SW4oIiIpOwkJLy8gRG9uJ3QgaW5jbHVkZSB4bWxucyBwcmVmaXgKKwkJCQlYU0VDTm9kZUxpc3RFbHQgKiB0b0luczsKKworCQkJCXRvSW5zID0gbmV3IFhTRUNOb2RlTGlzdEVsdDsKKwkJCQl0b0lucy0+ZWxlbWVudCA9IE5VTEw7CQkvLyBUbyB0cmlnZ2VyIHRoZSBzdGF0ZSBlbmdpbmUKKworCQkJCS8vIEJ1aWxkIGFuZCBpbnNlcnQgbmFtZSBzcGFjZSBub2RlCisJCQkJdG9JbnMtPnNvcnRTdHJpbmcuc2JTdHJjcHlJbihYTUxOU19QUkVGSVgpOworCQkJCXRvSW5zLT5zb3J0U3RyaW5nLnNiU3RyY2F0SW4oY3VycmVudE5hbWUpOworCisJCQkJLy8gSW5zZXJ0IG5vZGUKKwkJCQltcF9hdHRyaWJ1dGVzID0gaW5zZXJ0Tm9kZUludG9MaXN0KG1wX2F0dHJpYnV0ZXMsIHRvSW5zKTsKKwkJCX0KKwkJfQorCisKKwkJaWYgKG1wX2F0dHJpYnV0ZXMgIT0gTlVMTCkgeworCisJCQkvLyBOb3cgd2UgaGF2ZSBzZXQgdXAgdGhlIGF0dHJpYnV0ZSBsaXN0LCBzZXQgbmV4dCBub2RlIGFuZCByZXR1cm4hCisKKwkJCW1wX2F0dHJpYnV0ZVBhcmVudCA9IG1wX25leHROb2RlOworCQkJbXBfbmV4dE5vZGUgPSBtcF9hdHRyaWJ1dGVzLT5lbGVtZW50OworCQkJbXBfY3VycmVudEF0dHJpYnV0ZSA9IG1wX2F0dHJpYnV0ZXM7CisJCQltX2J1ZmZlckxlbmd0aCA9IG1fYnVmZmVyLnNiU3RybGVuKCk7CisJCQltX2J1ZmZlclBvaW50ID0gMDsKKworCQkJcmV0dXJuIG1fYnVmZmVyTGVuZ3RoOworCisJCX0gLyogYXR0cnJpYnV0ZXMgIT0gTlVMTCAqLworCisKKwkJaWYgKHByb2Nlc3NOb2RlKQorCQkJbV9idWZmZXIuc2JTdHJjYXRJbigiPiIpOworCisJCS8vIEZhbGwgdGhyb3VnaCB0byBmaW5kIG5leHQgbm9kZQorCisJCWJyZWFrOworCisJY2FzZSBET01Ob2RlOjpBVFRSSUJVVEVfTk9ERSA6IC8vIE91dHB1dCBhdHRyX25hbWU9InZhbHVlIgorCisJCS8vIEFsd2F5cyBwcm9jZXNzIGFuIGF0dHJpYnV0ZSBub2RlIGFzIHdlIGhhdmUgYWxyZWFkeSBjaGVja2VkIHRoZXkgc2hvdWxkCisJCS8vIGJlIHByaW50ZWQKKworCQltX2J1ZmZlci5zYlN0cmNweUluKCIgIik7CisKKwkJaWYgKG1wX25leHROb2RlICE9IDApIHsKKworCQkJbV9mb3JtYXRCdWZmZXIgPDwgKCptcF9mb3JtYXR0ZXIgPDwgbXBfbmV4dE5vZGUtPmdldE5vZGVOYW1lKCkpOworCQkJbV9idWZmZXIuc2JTdHJjYXRJbihtX2Zvcm1hdEJ1ZmZlcik7CisKKwkJCW1fYnVmZmVyLnNiU3RyY2F0SW4oIj1cIiIpOworCisJCQltX2Zvcm1hdEJ1ZmZlciA8PCAoKm1wX2Zvcm1hdHRlciA8PCBtcF9uZXh0Tm9kZS0+Z2V0Tm9kZVZhbHVlKCkpOworCQkJc2JXb3JrID0gYzE0bkNsZWFuQXR0cmlidXRlKG1fZm9ybWF0QnVmZmVyKTsKKwkJCW1fYnVmZmVyLnNiU3RyY2F0SW4oc2JXb3JrKTsKKworCQkJbV9idWZmZXIuc2JTdHJjYXRJbigiXCIiKTsKKwkJfQorCQllbHNlIHsKKwkJCW1fYnVmZmVyLnNiU3RyY2F0SW4oInhtbG5zIik7CisJCQltX2J1ZmZlci5zYlN0cmNhdEluKCI9XCIiKTsKKwkJCW1fYnVmZmVyLnNiU3RyY2F0SW4oIlwiIik7CisJCX0KKworCisJCS8vIE5vdyBzZWUgaWYgbmV4dCBub2RlIGlzIGFuIGF0dHJpYnV0ZQorCisJCW1wX2N1cnJlbnRBdHRyaWJ1dGUgPSBtcF9jdXJyZW50QXR0cmlidXRlLT5uZXh0OworCQlpZiAobXBfY3VycmVudEF0dHJpYnV0ZSAhPSBOVUxMKSB7CisKKwkJCS8vIEVhc3kgY2FzZQorCQkJbXBfbmV4dE5vZGUgPSBtcF9jdXJyZW50QXR0cmlidXRlLT5lbGVtZW50OworCQkJbV9idWZmZXJMZW5ndGggPSBtX2J1ZmZlci5zYlN0cmxlbigpOworCQkJbV9idWZmZXJQb2ludCA9IDA7CisKKwkJCXJldHVybiBtX2J1ZmZlckxlbmd0aDsKKworCisJCX0gLyogaWYgbXBfY3VycmVudEF0dHJpYnV0ZXMgIT0gTlVMTCkgKi8KKworCQkvLyBuZWVkIHRvIGNsZWFyIG91dCB0aGUgbm9kZSBsaXN0CisJCXdoaWxlIChtcF9hdHRyaWJ1dGVzICE9IE5VTEwpIHsKKworCQkJbXBfY3VycmVudEF0dHJpYnV0ZSA9IG1wX2F0dHJpYnV0ZXMtPm5leHQ7CisJCQlkZWxldGUgbXBfYXR0cmlidXRlczsKKwkJCW1wX2F0dHJpYnV0ZXMgPSBtcF9jdXJyZW50QXR0cmlidXRlOworCQl9CisKKwkJbXBfYXR0cmlidXRlcyA9IG1wX2N1cnJlbnRBdHRyaWJ1dGUgPSBtcF9maXJzdE5vbk5zQXR0cmlidXRlID0gTlVMTDsKKworCQkvLyByZXR1cm4gdXMgdG8gdGhlIGVsZW1lbnQgbm9kZQorCQltcF9uZXh0Tm9kZSA9IG1wX2F0dHJpYnV0ZVBhcmVudDsKKworCQkvLyBFbmQgdGhlIGVsZW1lbnQgZGVmaW5pdGlvbgorCQlpZiAoIW1fWFBhdGhTZWxlY3Rpb24gfHwgKG1fWFBhdGhNYXAuaGFzTm9kZShtcF9uZXh0Tm9kZSkpKQorCQkJbV9idWZmZXIuc2JTdHJjYXRJbigiPiIpOworCisJCW1fcmV0dXJuZWRGcm9tQ2hpbGQgPSBmYWxzZTsKKworCisJCWJyZWFrOworCisJZGVmYXVsdDoKKworCQlicmVhazsKKworCX0KKworCS8vIEEgbm9kZSBoYXMgZmFsbGVuIHRocm91Z2ggdG8gdGhlIGRlZmF1bHQgY2FzZSBmb3IgZmluZGluZyB0aGUgbmV4dCBub2RlLgorCisJbV9idWZmZXJMZW5ndGggPSBtX2J1ZmZlci5zYlN0cmxlbigpOzsKKwltX2J1ZmZlclBvaW50ID0gMDsKKworCS8vIEZpcnN0bHksIHdhcyB0aGUgbGFzdCBwaWVjZSBvZiBwcm9jZXNzaW5nIGJlY2F1c2Ugd2UgImNhbWUgdXAiIGZyb20gYSBjaGlsZCBub2RlPworCisJaWYgKG1fcmV0dXJuZWRGcm9tQ2hpbGQpIHsKKworCQlpZiAobXBfbmV4dE5vZGUgPT0gbXBfc3RhcnROb2RlKSB7CisKKwkJCS8vIHdlIGhhdmUgY2xvc2VkIG9mZiB0aGUgZG9jdW1lbnQhCisJCQltX2FsbE5vZGVzRG9uZSA9IHRydWU7CisJCQlyZXR1cm4gbV9idWZmZXJMZW5ndGg7CisKKwkJfQorCisJCWlmIChtcF9uZXh0Tm9kZSA9PSBtcF9maXJzdEVsZW1lbnROb2RlKSB7CisKKwkJCS8vIHdlIGhhdmUgY2xvc2VkIG9mZiB0aGUgbWFpbiBtcF9kb2MgZWx0CisJCQltX2ZpcnN0RWxlbWVudFByb2Nlc3NlZCA9IHRydWU7CisKKwkJfQorCisJfQorCisJZWxzZSB7CisKKwkJLy8gR29pbmcgZG93biAtIHNvIGNoZWNrIGZvciBjaGlsZHJlbiBub2RlcworCQluZXh0ID0gbXBfbmV4dE5vZGUtPmdldEZpcnN0Q2hpbGQoKTsKKworCQlpZiAobmV4dCAhPSBOVUxMKQorCisJCQltcF9uZXh0Tm9kZSA9IG5leHQ7CisKKwkJZWxzZQorCisJCQkvLyBObyBjaGlsZHJlbiwgc28gbmVlZCB0byBjbG9zZSB0aGlzIG5vZGUgb2ZmIQorCQkJbV9yZXR1cm5lZEZyb21DaGlsZCA9IHRydWU7CisKKwkJcmV0dXJuIG1fYnVmZmVyTGVuZ3RoOworCisJfQorCisJLy8gSWYgd2UgZ2V0IGhlcmUgYWxsIGNoaWxkZXJlbiAoaWYgdGhlcmUgYXJlIGFueSkgYXJlIGRvbmUKKworCW5leHQgPSBtcF9uZXh0Tm9kZS0+Z2V0TmV4dFNpYmxpbmcoKTsKKwlpZiAobmV4dCAhPSBOVUxMKSB7CisKKwkJbV9yZXR1cm5lZEZyb21DaGlsZCA9IGZhbHNlOworCQltcF9uZXh0Tm9kZSA9IG5leHQ7CisJCXJldHVybiBtX2J1ZmZlckxlbmd0aDsKKworCX0KKworCS8vIE5vIG1vcmUgbm9kZXMgYXQgdGhpcyBsZXZlbCBlaXRoZXIhCisKKwltcF9uZXh0Tm9kZSA9IG1wX25leHROb2RlLT5nZXRQYXJlbnROb2RlKCk7CisJbV9yZXR1cm5lZEZyb21DaGlsZCA9IHRydWU7CisJcmV0dXJuIG1fYnVmZmVyTGVuZ3RoOworCit9CmRpZmYgLS1naXQgYS9jL3NyYy9jYW5vbi9YU0VDQzE0bjIwMDEwMzE1LmhwcCBiL2Mvc3JjL2Nhbm9uL1hTRUNDMTRuMjAwMTAzMTUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3ZDQ3N2IKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9jYW5vbi9YU0VDQzE0bjIwMDEwMzE1LmhwcApAQCAtMCwwICsxLDE4MyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ0MxNG4yMDAxMDMxNSA6PSBDYW5vbmljYWxpc2VyIG9iamVjdCB0byBwcm9jZXNzIFhNTCBkb2N1bWVudCBpbiBsaW5lIHdpdGgKKyAqCQkJCQkgICAgIFJGQyAzMDc2CisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhTRUNDMTRuMjAwMTAzMTVfSU5DTFVERQorI2RlZmluZSBYU0VDQzE0bjIwMDEwMzE1X0lOQ0xVREUKKworLy9YU0VDIGluY2x1ZGVzCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1NhZmVCdWZmZXIuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1hQYXRoTm9kZUxpc3QuaHBwPgorI2luY2x1ZGUgPHhzZWMvY2Fub24vWFNFQ0Nhbm9uLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2Nhbm9uL1hTRUNYTUxOU1N0YWNrLmhwcD4KKworI2luY2x1ZGUgPHhlcmNlc2MvZnJhbWV3b3JrL1hNTEZvcm1hdHRlci5ocHA+CisKKy8vIEdlbmVyYWwgaW5jbHVkZXMKKyNpbmNsdWRlIDxtZW1vcnkuaD4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKK1hTRUNfVVNJTkdfWEVSQ0VTKFhNTEZvcm1hdHRlcik7CitYU0VDX1VTSU5HX1hFUkNFUyhYTUxGb3JtYXRUYXJnZXQpOworCitjbGFzcyBYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlcjsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBTaW1wbGUgc3RydWN0dXJlIGZvciBob2xkaW5nIGEgbGlzdCBvZiBub2RlcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gTk9URTogV2UgZG9uJ3QgdXNlIE5hbWVkTm9kZU1hcCBvciBET01Ob2RlTGlzdCBhcyB3ZSBhcmUgdW5zdXJlIHdoYXQgbWlnaHQgaGFwcGVuCisvLyB0byB0aGVtIGluIHRoZSBmdXR1cmUuICBBbHNvLCB0byBhZGQgaXRlbXMgd2Ugd291bGQgaGF2ZSB0byBkZWx2ZSBpbnRvIHRoZSBpbmFyZHMKKy8vIG9mIFhlcmNlcyAoYW5kIHVzZSB0aGUgIi4uLmltcGwiIGNsYXNzZXMpLiAgU3VjaCBhbiBhcHByb2FjaCBtaWdodCBub3QgYmUgc3VwcG9ydGVkCisvLyBpbiB0aGUgZnV0dXJlLgorCitzdHJ1Y3QgWFNFQ05vZGVMaXN0RWx0IHsKKworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlCSplbGVtZW50OwkvLyBFbGVtZW50IHJlZmVycmVkIHRvCisJc2FmZUJ1ZmZlcgkJCQkJCXNvcnRTdHJpbmc7CS8vIFRoZSBzdHJpbmcgdGhhdCBpcyB1c2VkIHRvIHNvcnQgdGhlIG5vZGVzCisKKwlYU0VDTm9kZUxpc3RFbHQJCQkJCSpuZXh0LAorCQkJCQkJCQkJKmxhc3Q7CQkvLyBGb3IgdGhlIGxpc3QKKworfTsKKworLy8gVXNlZCBmb3IgdGhlIHNvcnRpbmcgZnVuY3Rpb24KKworI2RlZmluZSBYTUxOU19QUkVGSVgJCSJhIgorI2RlZmluZSBBVFRSSUJVVEVfUFJFRklYCSJiIgorCisjZGVmaW5lIE5PVVJJX1BSRUZJWCAgICAgICAgICJhIgorI2RlZmluZSBIQVZFVVJJX1BSRUZJWCAgICAgICAiYiIKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBYU0VDQzE0bjIwMDEwMzE1IE9iamVjdCBkZWZpbml0aW9uCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjbGFzcyBDQU5PTl9FWFBPUlQgWFNFQ0MxNG4yMDAxMDMxNSA6IHB1YmxpYyBYU0VDQ2Fub24geworCisjaWYgZGVmaW5lZChYQUxBTl9OT19OQU1FU1BBQ0VTKQorCXR5cGVkZWYgdmVjdG9yPGNoYXIgKj4JCQkJQ2hhckxpc3RWZWN0b3JUeXBlOworI2Vsc2UKKwl0eXBlZGVmIHN0ZDo6dmVjdG9yPGNoYXIgKj4JCQlDaGFyTGlzdFZlY3RvclR5cGU7CisjZW5kaWYKKworI2lmIGRlZmluZWQoWEFMQU5fU0laRV9UX0lOX05BTUVTUEFDRV9TVEQpCisJdHlwZWRlZiBzdGQ6OnNpemVfdAkJc2l6ZV90eXBlOworI2Vsc2UKKwl0eXBlZGVmIHNpemVfdAkJCXNpemVfdHlwZTsKKyNlbmRpZgorCisKK3B1YmxpYzoKKworCS8vIENvbnN0cnVjdG9ycworCVhTRUNDMTRuMjAwMTAzMTUoKTsKKwlYU0VDQzE0bjIwMDEwMzE1KFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqbmV3RG9jKTsKKwlYU0VDQzE0bjIwMDEwMzE1KFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqbmV3RG9jLAorCQkJCQkgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUgKm5ld1N0YXJ0Tm9kZSk7CisJdmlydHVhbCB+WFNFQ0MxNG4yMDAxMDMxNSgpOworCisJLy8gWFBhdGggcHJvY2Vzc29yCisKKwlpbnQgWFBhdGhTZWxlY3ROb2Rlcyhjb25zdCBjaGFyICogWFBhdGhFeHByKTsKKwl2b2lkIHNldFhQYXRoTWFwKGNvbnN0IFhTRUNYUGF0aE5vZGVMaXN0ICYgbWFwKTsKKworCS8vIENvbW1lbnRzIHByb2Nlc3NpbmcKKwl2b2lkIHNldENvbW1lbnRzUHJvY2Vzc2luZyhib29sIG9ub2ZmKTsKKwlib29sIGdldENvbW1lbnRzUHJvY2Vzc2luZyh2b2lkKTsKKworCS8vIEV4Y2x1c2l2ZSBwcm9jZXNzaW5nCisJdm9pZCBzZXRFeGNsdXNpdmUodm9pZCk7CisJdm9pZCBzZXRFeGNsdXNpdmUoY2hhciAqIHhtbG5zTGlzdCk7CisKKwkvLyBJbmNsdXNpdmUgMS4xIHByb2Nlc3NpbmcKKyAgICB2b2lkIHNldEluY2x1c2l2ZTExKHZvaWQpOworCisJLy8gTmFtZXNwYWNlIHByb2Nlc3NpbmcKKwl2b2lkIHNldFVzZU5hbWVzcGFjZVN0YWNrKGJvb2wgZmxhZykge21fdXNlTmFtZXNwYWNlU3RhY2sgPSBmbGFnO30KKworcHJvdGVjdGVkOgorCisJLy8gSW1wbGVtZW50YXRpb24gb2YgdmlydHVhbCBmdW5jdGlvbgorCXhzZWNzaXplX3QgcHJvY2Vzc05leHROb2RlKCk7CisKKwkvLyBUZXN0IHdoZXRoZXIgYSBuYW1lIHNwYWNlIGlzIGluIHRoZSBub24tZXhjbHVzaXZlIGxpc3QKKwlib29sIGluTm9uRXhjbE5TTGlzdChzYWZlQnVmZmVyICZucyk7CisKK3ByaXZhdGU6CisKKwl2b2lkIGluaXQoKTsKKwlib29sIGNoZWNrUmVuZGVyTmFtZVNwYWNlTm9kZShYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqZSwKKwkJCQkJCQkJICBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqYSk7CisJdm9pZCBzdGFja0luaXQoWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUgKiBuKTsKKworCS8vIEZvciBmb3JtYXR0aW5nIHRoZSBidWZmZXJzCisJWFNFQ1NhZmVCdWZmZXJGb3JtYXR0ZXIJCSogbXBfZm9ybWF0dGVyOworCXNhZmVCdWZmZXIJCQkJCW1fZm9ybWF0QnVmZmVyOworCisJLy8gRm9yIGhvbGRpbmcgc3RhdGUgd2hpbHN0IHdhbGtpbmcgdGhlIERPTSB0cmVlCisJWFNFQ05vZGVMaXN0RWx0CSogbXBfYXR0cmlidXRlcywJCQkJLy8gU3RhcnQgb2YgbGlzdAorCQkJCQkqIG1wX2N1cnJlbnRBdHRyaWJ1dGUsCQkJLy8gV2hlcmUgd2UgY3VycmVudGx5IGFyZSBpbiBsaXN0CisJCQkJCSogbXBfZmlyc3ROb25Oc0F0dHJpYnV0ZTsJCS8vIEZpcnN0IE5PTiBYTUxOUyBlbGVtZW50IGluIGxpc3QKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqIG1wX2F0dHJpYnV0ZVBhcmVudDsJCQkvLyBUbyByZXR1cm4gdXAgdGhlIHRyZWUKKwlib29sIG1fcmV0dXJuZWRGcm9tQ2hpbGQ7CQkJCQkJLy8gRGlkIHdlIGdldCB0byB0aGlzIG5vZGUgZnJvbSBiZWxvdz8KKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqIG1wX2ZpcnN0RWxlbWVudE5vZGU7CQkJLy8gVGhlIHJvb3QgZWxlbWVudCBvZiB0aGUgZG9jdW1lbnQKKwlib29sCQkJbV9maXJzdEVsZW1lbnRQcm9jZXNzZWQ7CQkvLyBIYXMgdGhlIGZpcnN0IG5vZGUgYmVlbiBoYW5kbGVkPworCXVuc2lnbmVkIGNoYXIJKiBtcF9jaGFyQnVmZmVyOworCisJLy8gRm9yIFhQYXRoIGV2YWx1YXRpb24KKwlib29sCQkJICBtX1hQYXRoU2VsZWN0aW9uOwkJCQkvLyBBcmUgd2UgZG9pbmcgYW4gWFBhdGg/CisJWFNFQ1hQYXRoTm9kZUxpc3QgbV9YUGF0aE1hcDsJCQkJCS8vIFRoZSBlbGVtZW50cyBpbiB0aGUgWFBhdGgKKworCS8vIEZvciBjb21tZW50IHByb2Nlc3NpbmcKKwlib29sCQkJbV9wcm9jZXNzQ29tbWVudHM7CQkJCS8vIFdoZXRoZXIgY29tbWVudHMgYXJlIGluIG9yIG91dCAoaW4gYnkgZGVmYXVsdCkKKworCS8vIEZvciBleGNsdXNpdmUgY2Fub25pY2FsaXNhdGlvbgorCUNoYXJMaXN0VmVjdG9yVHlwZQkJbV9leGNsTlNMaXN0OworCWJvb2wJCQkJCW1fZXhjbHVzaXZlOworCWJvb2wJCQkJCW1fZXhjbHVzaXZlRGVmYXVsdDsKKworCS8vIEZvciBJbmNsdXNpdmUgMS4xIHN1cHBvcnQKKwlib29sICAgICAgICAgICAgICAgICAgICBtX2luY2wxMTsKKworCS8vIEhvdyBkbyB3ZSBoYW5kbGUgbmFtZXNwYWNlcz8KKwkvLyBVc2UgdGhlIG5hbWVzcGFjZSBzdGFjayBpZiBuYW1lIHNwYWNlIGV4cGFuc2lvbiBoYXMgbm90IGJlZW4gcnVuIG9uIHRoZSBkb2N1bWVudC4KKwkvLyBOT1RFIDogVXNpbmcgdGhlIG5hbWUgc3BhY2Ugc3RhY2sgKndpbGwqIGNhdXNlIHByb2JsZW1zIGlmIGEgZnVsbCBYUGF0aCBleHByZXNzaW9uCisJLy8gaGFzIGJlZW4gcnVuIHRvIHNlbGVjdCB0aGUgaW5wdXQgbm9kZXNldC4gIE90aGVyd2lzZSB3ZSBzaG91bGQgYmUgZmluZS4KKworCWJvb2wJCQkJCW1fdXNlTmFtZXNwYWNlU3RhY2s7CisJWFNFQ1hNTE5TU3RhY2sJCQltX25zU3RhY2s7CisKKworCit9OworCisKKyNlbmRpZiAvKiBYU0VDQzE0bjIwMDEwMzE1X0lOQ0xVREUgKi8KKworCmRpZmYgLS1naXQgYS9jL3NyYy9jYW5vbi9YU0VDQ2Fub24uY3BwIGIvYy9zcmMvY2Fub24vWFNFQ0Nhbm9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjI1Yjc1Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvY2Fub24vWFNFQ0Nhbm9uLmNwcApAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ0Nhbm9uIDo9IEJhc2UgKHZpcnR1YWwpIGNsYXNzIGZvciBjYW5vbmljYWxpc2F0aW9uIG9iamVjdHMKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSUQkCisgKgorICogJExPRyQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvY2Fub24vWFNFQ0Nhbm9uLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisKKyNpbmNsdWRlIDxtZW1vcnkuaD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgWFNFQ0Nhbm9uIFZpcnR1YWwgQ2xhc3MgaW1wbGVtZW50YXRpb24KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworLy8gQ29uc3RydWN0b3JzCisKK1hTRUNDYW5vbjo6WFNFQ0Nhbm9uKCkge307CisJCitYU0VDQ2Fub246OlhTRUNDYW5vbihET01Eb2N1bWVudCAqbmV3RG9jKSA6IG1fYnVmZmVyKCkgeworCQkKKwkKKwltcF9kb2MgPSBuZXdEb2M7CisJbXBfc3RhcnROb2RlID0gbXBfbmV4dE5vZGUgPSBuZXdEb2M7CQkvLyBCeSBkZWZhdWx0LCBzdGFydCBmcm9tIHN0YXJ0Tm9kZQorCW1fYnVmZmVyTGVuZ3RoID0gbV9idWZmZXJQb2ludCA9IDA7IAkvLyBTdGFydCB3aXRoIGFuIGVtcHR5IGJ1ZmZlcgorCW1fYWxsTm9kZXNEb25lID0gZmFsc2U7CisJCit9OworCitYU0VDQ2Fub246OlhTRUNDYW5vbihET01Eb2N1bWVudCAqbmV3RG9jLCBET01Ob2RlICpuZXdTdGFydE5vZGUpIHsKKwkKKwltcF9kb2MgPSBuZXdEb2M7CisJbXBfc3RhcnROb2RlID0gbXBfbmV4dE5vZGUgPSBuZXdTdGFydE5vZGU7CisJbV9idWZmZXJMZW5ndGggPSBtX2J1ZmZlclBvaW50ID0gMDsgCS8vIFN0YXJ0IHdpdGggYW4gZW1wdHkgYnVmZmVyCisJbV9hbGxOb2Rlc0RvbmUgPSBmYWxzZTsKKwkKK307CisKKy8vIERlc3RydWN0b3JzCisKK1hTRUNDYW5vbjo6flhTRUNDYW5vbigpIHt9OworCisvLyBQdWJsaWMgTWV0aG9kcworCit4c2Vjc2l6ZV90IFhTRUNDYW5vbjo6b3V0cHV0QnVmZmVyKHVuc2lnbmVkIGNoYXIgKm91dEJ1ZmZlciwgeHNlY3NpemVfdCBudW1CeXRlcykgeworCisJLy8gbnVtQnl0ZXMgb2YgZGF0YSBhcmUgcmVxdWlyZWQgdG8gYmUgcGxhY2VkIGluIG91dEJ1ZmZlci4KKworCS8vIENhbGN1bGF0ZSBhbW91bnQgbGVmdCBpbiBidWZmZXIKKworCXhzZWNzaXplX3QgcmVtYWluaW5nID0gbV9idWZmZXJMZW5ndGggLSBtX2J1ZmZlclBvaW50OworCXhzZWNzaXplX3QgYnl0ZXNUb0dvID0gbnVtQnl0ZXM7CisJeHNlY3NpemVfdCBpID0gMDsJCQkJCS8vIGN1cnJlbnQgcG9pbnQgaW4gb3V0QnVmZmVyCisKKworCS8vIFdoaWxlIHdlIGRvbid0IGhhdmUgZW5vdWdoLCBhbmQgaGF2ZSBub3QgY29tcGxldGVkIC0gCisKKwl3aGlsZSAoIW1fYWxsTm9kZXNEb25lICYmIChyZW1haW5pbmcgPCBieXRlc1RvR28pKSB7CisKKwkJLy8gQ29weSB3aGF0IHdlIGhhdmUgYW5kIGdldCBzb21lIG1vcmUgaW4gdGhlIGJ1ZmZlcgorCQltZW1jcHkoJm91dEJ1ZmZlcltpXSwgJm1fYnVmZmVyW21fYnVmZmVyUG9pbnRdLCByZW1haW5pbmcpOworCQlpICs9IHJlbWFpbmluZzsKKwkJbV9idWZmZXJQb2ludCArPSByZW1haW5pbmc7CisJCWJ5dGVzVG9HbyAtPSByZW1haW5pbmc7CisKKwkJLy8gR2V0IG1vcmUKKworCQlwcm9jZXNzTmV4dE5vZGUoKTsKKworCQlyZW1haW5pbmcgPSBtX2J1ZmZlckxlbmd0aCAtIG1fYnVmZmVyUG9pbnQ7CQkvLyBUaGlzIHdpbGwgYmUgcmVzZXQgYnkgcHJvY2Vzc05leHRFbGVtZW50CisJCQkJCQkJCQkJCQkJLy8gIi1idWZmZXJQb2ludCIgaXMganVzdCBpbiBjYXNlLgorCisJfQorCisJaWYgKG1fYWxsTm9kZXNEb25lICYmIChyZW1haW5pbmcgPCBieXRlc1RvR28pKSB7CisKKwkJLy8gV2FzIG5vdCBlbm91Z2ggZGF0YSB0byBmaWxsIGV2ZXJ5dGhpbmcgdXAKKwkJbWVtY3B5ICgmb3V0QnVmZmVyW2ldLCAmbV9idWZmZXJbbV9idWZmZXJQb2ludF0sIHJlbWFpbmluZyk7CisJCW1fYnVmZmVyUG9pbnQgKz0gcmVtYWluaW5nOworCQlyZXR1cm4gaSArIHJlbWFpbmluZzsKKwl9CisJCisJLy8gQ29weSB0aGUgdGFpbCBvZiB0aGUgYnVmZmVyCisKKwltZW1jcHkoJm91dEJ1ZmZlcltpXSwgJm1fYnVmZmVyW21fYnVmZmVyUG9pbnRdLCBieXRlc1RvR28pOworCW1fYnVmZmVyUG9pbnQgKz0gYnl0ZXNUb0dvOworCXJldHVybiAoYnl0ZXNUb0dvICsgaSk7CisJCit9CisKKy8vIHNldFN0YXJ0Tm9kZSBzZXRzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgdGhlIG91dHB1dCBpZiBpdCBpcyBhIHN1Yi1kb2N1bWVudCAKKy8vIHRoYXQgbmVlZHMgY2Fub25pY2FsaXNhdGlvbiBhbmQgd2Ugd2FudCB0byByZS1zdGFydAorCitib29sIFhTRUNDYW5vbjo6c2V0U3RhcnROb2RlKERPTU5vZGUgKm5ld1N0YXJ0Tm9kZSkgeworCisJbXBfc3RhcnROb2RlID0gbmV3U3RhcnROb2RlOworCW1fYnVmZmVyUG9pbnQgPSAwOworCW1fYnVmZmVyTGVuZ3RoID0gMDsKKwltcF9uZXh0Tm9kZSA9IG1wX3N0YXJ0Tm9kZTsKKworCW1fYWxsTm9kZXNEb25lID0gZmFsc2U7CQkJLy8gUmVzdGFydAorCisJcmV0dXJuIHRydWU7CQkJLy8gU2hvdWxkIGNoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSBTdGFydE5vZGUgaXMgcGFydCBvZiB0aGUgZG9jLgorCit9CisKKwpkaWZmIC0tZ2l0IGEvYy9zcmMvY2Fub24vWFNFQ0Nhbm9uLmhwcCBiL2Mvc3JjL2Nhbm9uL1hTRUNDYW5vbi5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM4YzhhMQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2Nhbm9uL1hTRUNDYW5vbi5ocHAKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ0Nhbm9uIDo9IEJhc2UgKGFic3RyYWN0KSBjbGFzcyBmb3IgY2Fub25pY2FsaXNhdGlvbiBvYmplY3RzCisgKgorICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqLworCisvLyBYU0VDIGluY2x1ZGVzCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1NhZmVCdWZmZXIuaHBwPgorCitYU0VDX0RFQ0xBUkVfWEVSQ0VTX0NMQVNTKERPTU5vZGUpCitYU0VDX0RFQ0xBUkVfWEVSQ0VTX0NMQVNTKERPTURvY3VtZW50KQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIERlZmluZXMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNkZWZpbmUgWFNFQ0NBTk5PTl9CVUZGRVJfU1RBUlRfU0laRQkJODE5MgkJLyogRGVmYXVsdCBzaXplIGZvciB0aGUgb3V0QnVmZmVyICovCisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBYU0VDQ2Fub24gVmlydHVhbCBDbGFzcyBkZWZpbml0aW9uCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBNb3N0IG9mIHRoZSBpbnRlcmZhY2Ugd29yayBpcyBkb25lIHdpdGhpbiB0aGlzIGNsYXNzLiAgSG93ZXZlciB0aGUgYWN0dWFsCisvLyBwcm9jZXNzaW5nIGlzIGRvbmUgdmlhIHRoZSBwcm9jZXNzTmV4dE5vZGUgdmlydHVhbCBmdW5jdGlvbiB0aGF0IG11c3QgYmUKKy8vIGltcGxlbWVudGVkIGJ5IGFsbCBjaGlsZHJlbiBjbGFzc2VzLgorCitjbGFzcyBDQU5PTl9FWFBPUlQgWFNFQ0Nhbm9uIHsKKworcHJvdGVjdGVkOgorCisJLy8gRGF0YSBzdHJ1Y3R1cmVzCisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQJKiBtcF9kb2M7CQkvLyBYZXJjZXMgRE9NIE5vZGUgdGhhdCBkZWZpbmVzIHRoZSBkb2N1bWVudAorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlCQkqIG1wX3N0YXJ0Tm9kZSwJLy8gTm9kZSB0byBzdGFydCBwcm9jZXNzaW5nIGZyb20KKwkJCQkJCQkJCQkqbXBfbmV4dE5vZGU7CS8vIE5leHQgTm9kZSB0byBiZSBwcm9jZXNzZWVkCisJc2FmZUJ1ZmZlcgkJCQkJCQltX2J1ZmZlcjsJCS8vIEJ1ZmZlciBob2xkaW5nIHBhcnNlZCBvdXRwdXQKKwl4c2Vjc2l6ZV90CQkJCQkJCW1fYnVmZmVyTGVuZ3RoLAkvLyBMZW5ndGggb2YgaW5wdXQgY3VycmVudGx5IGluIGJ1ZmZlcgorCQkJCQkJCQkJCW1fYnVmZmVyUG9pbnQ7CS8vIE5leHQgImNoYXJhY3RlciIgdG8gY29weSBvdXQKKwlib29sCQkJCQkJCQltX2FsbE5vZGVzRG9uZTsJLy8gSGF2ZSB3ZSBjb21wbGV0ZWQ/CisKKworcHVibGljOgorCisJLy8gQ29uc3RydWN0b3JzCisKKwlYU0VDQ2Fub24oKTsKKwlYU0VDQ2Fub24oWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICpuZXdEb2MpOworCVhTRUNDYW5vbigKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICpuZXdEb2MsIAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqbmV3U3RhcnROb2RlKTsKKworCS8vIERlc3RydWN0b3JzCisKKwl2aXJ0dWFsIH5YU0VDQ2Fub24oKTsKKworCS8vIFB1YmxpYyBNZXRob2RzCisKKwkvLyBvdXRwdXRCdWZmZXIgaXMgdXNlZCBieSBhbGwgY2Fub25pY2FsaXNlcnMgdG8gb3V0cHV0IHRoZSBuZXh0IG51bUJ5dGVzIGJ5dGVzIG9mCisJLy8gY2Fub25pY2FsaXNlZCBYTUwgdG8gdGhlIG5vbWluYXRlZCBidWZmZXIKKworCXhzZWNzaXplX3Qgb3V0cHV0QnVmZmVyKHVuc2lnbmVkIGNoYXIgKm91dEJ1ZmZlciwgeHNlY3NpemVfdCBudW1CeXRlcyk7CisJCisJLy8gc2V0U3RhcnROb2RlIHNldHMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB0aGUgb3V0cHV0IGlmIGl0IGlzIGEgc3ViLWRvY3VtZW50IAorCS8vIHRoYXQgbmVlZHMgY2Fub25pY2FsaXNhdGlvbiBhbmQgd2Ugd2FudCB0byByZS1zdGFydAorCQorCWJvb2wgc2V0U3RhcnROb2RlKFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICpuZXdTdGFydE5vZGUpOworCitwcm90ZWN0ZWQ6CisKKwkvLyBwcm9jZXNzTmV4dE5vZGUgaXMgdGhlIHB1cmUgdmlydHVhbCBmdW5jdGlvbiB0aGF0IG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgYWxsIGNhbm9ucworCisJdmlydHVhbCB4c2Vjc2l6ZV90IHByb2Nlc3NOZXh0Tm9kZSgpID0gMDsKKworfTsKKwpkaWZmIC0tZ2l0IGEvYy9zcmMvY2Fub24vWFNFQ1hNTE5TU3RhY2suY3BwIGIvYy9zcmMvY2Fub24vWFNFQ1hNTE5TU3RhY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MzExMWUKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9jYW5vbi9YU0VDWE1MTlNTdGFjay5jcHAKQEAgLTAsMCArMSwyNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYU0VDWE1MTlNTdGFjayA6PSBOUyBTdGFjayBmb3Igc2ltcGxlIGNhbm9uaWNhbGlzYXRpb24KKyAqCisgKiAkSWQkCisgKgorICovCisKKworLy8gWFNFQworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2Nhbm9uL1hTRUNYTUxOU1N0YWNrLmhwcD4KKworLy8gWGVyY2VzCisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEhvbGRlciBzdHJ1Y3R1cmVzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0eXBlZGVmIHN0cnVjdCBYU0VDTlNIb2xkZXJTdHJ1Y3QgeworCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUJKiBtcF9uczsJCS8vIEFjdHVhbCBOUyBhdHRyaWJ1dGUKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZQkqIG1wX293bmVyOwkJLy8gT3duZXIgRWxlbWVudAorCisJc3RydWN0IFhTRUNOU0hvbGRlclN0cnVjdAkJCQkqIG1wX2hpZGVzOwkJLy8gV0hhdCBkb2VzIHRoaXMgTlMgaGlkZT8KKwlzdHJ1Y3QgWFNFQ05TSG9sZGVyU3RydWN0CQkJCSogbXBfbmV4dDsJCS8vIE5leHQgaW4gbGlzdAorCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUJKiBtcF9wcmludGVkOwkvLyBOb2RlIGF0IHdoaWNoIGl0IHdhcyBwcmludGVkCisKKwlib29sCQkJCQkJCQkJbV9pc0RlZmF1bHQ7CS8vIElzIHRoaXMgYSBkZWZhdWx0IE5TPworCit9IFhTRUNOU0hvbGRlcjsKKwordHlwZWRlZiBzdHJ1Y3QgWFNFQ05TRWxlbWVudFN0cnVjdCB7CisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZQkqIG1wX2VsdDsJCS8vIEVsZW1lbnQKKwlzdHJ1Y3QgWFNFQ05TSG9sZGVyU3RydWN0CQkJCSogbXBfZmlyc3ROUzsJLy8gV0hhdCBkb2VzIHRoaXMgTlMgaGlkZT8KKworfSBYU0VDTlNFbGVtZW50OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdC9EZXN0cnVjdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitYU0VDWE1MTlNTdGFjazo6WFNFQ1hNTE5TU3RhY2soKSB7CisKK30KKworWFNFQ1hNTE5TU3RhY2s6On5YU0VDWE1MTlNTdGFjaygpIHsKKworCS8vIE5lZWQgdG8gaXRlcmF0ZSB0aHJvdWdoIHRoZSBTdGFjayB0byAKKwlYU0VDTlNFbGVtZW50ICogdDsKKwlYU0VDTlNIb2xkZXIgKiB1LCAqdjsKKwkKKwl3aGlsZSAobV9lbGVtZW50cy5zaXplKCkgPiAwKSB7CisJCXQgPSBtX2VsZW1lbnRzLnRvcCgpOworCQl1ID0gdC0+bXBfZmlyc3ROUzsKKwkJd2hpbGUgKHUgIT0gTlVMTCkgeworCQkJdiA9IHUtPm1wX25leHQ7CisJCQlkZWxldGUgdTsKKwkJCXUgPSB2OworCQl9CisJCWRlbGV0ZSB0OworCQltX2VsZW1lbnRzLnBvcCgpOworCX0KK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFN0YWNrIEZ1bmN0aW9ucworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3ZvaWQgWFNFQ1hNTE5TU3RhY2s6OnB1c2hFbGVtZW50KFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICogZWx0KSB7CisKKwlYU0VDTlNFbGVtZW50ICogdDsKKwlYU0VDbmV3KHQsIFhTRUNOU0VsZW1lbnQpOworCisJdC0+bXBfZWx0ID0gZWx0OworCXQtPm1wX2ZpcnN0TlMgPSBOVUxMOworCisJbV9lbGVtZW50cy5wdXNoKHQpOworCit9CisKK3ZvaWQgWFNFQ1hNTE5TU3RhY2s6OnBvcEVsZW1lbnQoKSB7CisKKwkvLyBGaXJzdCAtIGFyZSB0aGVyZSBhbnkgbmFtZXNwYWNlcyB0byByZW1vdmUgZnJvbSB0aGUgY3VycmVudGx5IHZpc2libGUgbGlzdD8KKwlYU0VDTlNIb2xkZXIgKiB0LCAqdTsKKwlYU0VDTlNFbGVtZW50ICogZSA9IG1fZWxlbWVudHMudG9wKCk7CisKKwkvLyBJdGVyYXRlIHRocm91Z2ggdGhlIGN1cnJlbnQgbmFtZXNwYWNlcyB2ZWN0b3IKKwlYU0VDTlNIb2xkZXJWZWN0b3JUeXBlOjppdGVyYXRvciBpdCA9IG1fY3VycmVudE5TLmJlZ2luKCk7CisKKwl3aGlsZSAoaXQgIT0gbV9jdXJyZW50TlMuZW5kKCkpIHsKKworCQl0ID0gKml0OworCQlpZiAodC0+bXBfb3duZXIgPT0gZS0+bXBfZWx0KSB7CisKKwkJCS8vIE5lZWQgdG8gZGVsZXRlIHRoaXMKKwkJCW1fY3VycmVudE5TLmVyYXNlKGl0KTsKKwkJCWlmICh0LT5tcF9oaWRlcyAhPSBOVUxMKSB7CisJCQkJbV9jdXJyZW50TlMucHVzaF9iYWNrKHQtPm1wX2hpZGVzKTsKKwkJCX0KKwkJCS8vIFRPRE8gLSBGaXggdGhpcywgaXQgaXMgbmFpZXZlIGFuZCBzbG93CisJCQlpdCA9IG1fY3VycmVudE5TLmJlZ2luKCk7CisKKwkJfQorCQllbHNlIHsKKwkJCWlmICh0LT5tcF9wcmludGVkID09IGUtPm1wX2VsdCkKKwkJCQl0LT5tcF9wcmludGVkID0gTlVMTDsKKwkJCWl0Kys7CisJCX0KKworCX0KKworCS8vIE9LIC0gTm93IHdlIGRlbGV0ZSB0aGUgTlMgbm9kZXMKKwl0ID0gZS0+bXBfZmlyc3ROUzsKKwl3aGlsZSAodCAhPSBOVUxMKSB7CisJCXUgPSB0LT5tcF9uZXh0OworCQlkZWxldGUgdDsKKwkJdCA9IHU7CisJfQorCisJLy8gTm93IGRlbGV0ZSB0aGUgZWxlbWVudCBob2xkZXIgaXRzZWxmCisJbV9lbGVtZW50cy5wb3AoKTsKKwlkZWxldGUgZTsKKworfQorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgTlMgQWRkaXRpb24KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgWFNFQ1hNTE5TU3RhY2s6OmFkZE5hbWVzcGFjZShYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqIG5zKSB7CisKKwkvLyBDcmVhdGUgdGhlIG5ldyBlbnRyeSBmb3IgdGhpcyBub2RlCisJWFNFQ05TSG9sZGVyICogdCwgKnU7CisJWFNFQ25ldyh0LCBYU0VDTlNIb2xkZXIpOworCisJdC0+bXBfaGlkZXMgPSBOVUxMOworCXQtPm1wX25leHQgPSBOVUxMOworCXQtPm1wX25zID0gbnM7CisJdC0+bXBfb3duZXIgPSAobV9lbGVtZW50cy50b3AoKSktPm1wX2VsdDsKKwl0LT5tcF9wcmludGVkID0gTlVMTDsKKworCXQtPm1faXNEZWZhdWx0ID0gc3RyRXF1YWxzKG5zLT5nZXROb2RlTmFtZSgpLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJYbWxucyk7CisKKwkvLyBEb2VzIHRoaXMgaGlkZSBzb21ldGhpbmcgaW4gdGhlIGN1cnJlbnQgbmFtZXNwYWNlIGxpc3Q/CisJWFNFQ05TSG9sZGVyVmVjdG9yVHlwZTo6aXRlcmF0b3IgaXQgPSBtX2N1cnJlbnROUy5iZWdpbigpOworCisJd2hpbGUgKGl0ICE9IG1fY3VycmVudE5TLmVuZCgpKSB7CisJCXUgPSAoKml0KTsKKwkJaWYgKHN0ckVxdWFscyh1LT5tcF9ucy0+Z2V0Tm9kZU5hbWUoKSwgbnMtPmdldE5vZGVOYW1lKCkpKSB7CisKKwkJCS8vIFRoaXMgaGlkZXMgYSBjdXJyZW50IE5TIGVudHJ5CisJCQl0LT5tcF9oaWRlcyA9IHU7CisJCQltX2N1cnJlbnROUy5lcmFzZShpdCk7CisJCQlpdCA9IG1fY3VycmVudE5TLmVuZCgpOworCQl9CisJCWVsc2UKKwkJCWl0Kys7CisJfQorCisJLy8gTm93IHB1c2ggaXQgb250byB0aGUgbmFtZXNwYWNlIHZlY3RvcgorCW1fY3VycmVudE5TLnB1c2hfYmFjayh0KTsKKworCS8vIEFkZCBtZSB0byB0aGUgY3VycmVudCBlbGVtZW50J3MgbmFtZXNwYWNlcworCVhTRUNOU0VsZW1lbnQgKiBlID0gbV9lbGVtZW50cy50b3AoKTsKKwkKKwl0LT5tcF9uZXh0ID0gZS0+bXBfZmlyc3ROUzsKKwllLT5tcF9maXJzdE5TID0gdDsKKworfQorCit2b2lkIFhTRUNYTUxOU1N0YWNrOjpwcmludE5hbWVzcGFjZShET01Ob2RlICogbnMsIERPTU5vZGUgKiBlbHQpIHsKKworCVhTRUNOU0hvbGRlciAqIHQ7CisJWFNFQ05TSG9sZGVyVmVjdG9yVHlwZTo6aXRlcmF0b3IgaXQgPSBtX2N1cnJlbnROUy5iZWdpbigpOworCisJd2hpbGUgKGl0ICE9IG1fY3VycmVudE5TLmVuZCgpKSB7CisJCXQgPSAoKml0KTsKKwkJLy8gRml4IGZvciBidWcjNDczNTMsIGdvIGFoZWFkIGFuZCB0cmFjayBwcmludGluZyBvZiBkZWZhdWx0IG5hbWVzcGFjZXMuCisJCWlmICh0LT5tcF9ucyA9PSBucykgeyAvLyAgJiYgdC0+bV9pc0RlZmF1bHQgPT0gZmFsc2UpIHsKKwkJCXQtPm1wX3ByaW50ZWQgPSBlbHQ7CisJCQlicmVhazsKKwkJfQorCQlpdCsrOworCX0KK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBOUyBTZWFyY2hpbmcKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RPTU5vZGUgKiBYU0VDWE1MTlNTdGFjazo6Z2V0Rmlyc3ROYW1lc3BhY2Uodm9pZCkgeworCisJbV9jdXJyZW50TlNJdGVyYXRvciA9IG1fY3VycmVudE5TLmJlZ2luKCk7CisKKwl3aGlsZSAobV9jdXJyZW50TlNJdGVyYXRvciAhPSBtX2N1cnJlbnROUy5lbmQoKSAmJiAKKwkJKCptX2N1cnJlbnROU0l0ZXJhdG9yKS0+bXBfcHJpbnRlZCAhPSBOVUxMKQorCQltX2N1cnJlbnROU0l0ZXJhdG9yKys7CisKKwlpZiAobV9jdXJyZW50TlNJdGVyYXRvciAhPSBtX2N1cnJlbnROUy5lbmQoKSkKKwkJcmV0dXJuICgqbV9jdXJyZW50TlNJdGVyYXRvciktPm1wX25zOworCisJcmV0dXJuIE5VTEw7CisKK30KKworRE9NTm9kZSAqIFhTRUNYTUxOU1N0YWNrOjpnZXROZXh0TmFtZXNwYWNlKHZvaWQpIHsKKwlpZiAobV9jdXJyZW50TlNJdGVyYXRvciA9PSBtX2N1cnJlbnROUy5lbmQoKSkgCisJCXJldHVybiBOVUxMOworCW1fY3VycmVudE5TSXRlcmF0b3IrKzsKKwl3aGlsZSAobV9jdXJyZW50TlNJdGVyYXRvciAhPSBtX2N1cnJlbnROUy5lbmQoKSAmJiAKKwkJKCptX2N1cnJlbnROU0l0ZXJhdG9yKS0+bXBfcHJpbnRlZCAhPSBOVUxMKQorCQltX2N1cnJlbnROU0l0ZXJhdG9yKys7CisKKwlpZiAobV9jdXJyZW50TlNJdGVyYXRvciA9PSBtX2N1cnJlbnROUy5lbmQoKSkgCisJCXJldHVybiBOVUxMOworCisJcmV0dXJuICgqbV9jdXJyZW50TlNJdGVyYXRvciktPm1wX25zOworCit9CisKKy8vIEZpeCBmb3IgYnVnIzQ3MzUzLCBleHBsaWNpdCBjaGVjayBmb3Igbm9uLWVtcHR5IGRlZmF1bHQgTlMgZGVjbC4KK2Jvb2wgWFNFQ1hNTE5TU3RhY2s6OmlzTm9uRW1wdHlEZWZhdWx0TlModm9pZCkgeworICAgIGZvciAoWFNFQ05TSG9sZGVyVmVjdG9yVHlwZTo6aXRlcmF0b3IgaXQgPSBtX2N1cnJlbnROUy5iZWdpbigpOyBpdCAhPSBtX2N1cnJlbnROUy5lbmQoKTsgKytpdCkgeworICAgICAgICBpZiAoKCppdCktPm1faXNEZWZhdWx0KSB7CisgICAgICAgICAgICBjb25zdCBYTUxDaCogdmFsID0gKCppdCktPm1wX25zLT5nZXROb2RlVmFsdWUoKTsKKyAgICAgICAgICAgIGlmICh2YWwgJiYgKnZhbCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CmRpZmYgLS1naXQgYS9jL3NyYy9jYW5vbi9YU0VDWE1MTlNTdGFjay5ocHAgYi9jL3NyYy9jYW5vbi9YU0VDWE1MTlNTdGFjay5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFlYTZhOAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2Nhbm9uL1hTRUNYTUxOU1N0YWNrLmhwcApAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNYTUxOU1N0YWNrIDo9IE5TIFN0YWNrIGZvciBzaW1wbGUgY2Fub25pY2FsaXNhdGlvbgorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYU0VDWE1MTlNTVEFDS19JTkNMVURFCisjZGVmaW5lIFhTRUNYTUxOU1NUQUNLX0lOQ0xVREUKKworLy8gWFNFQworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKworLy8gWGVyY2VzCisKK1hTRUNfREVDTEFSRV9YRVJDRVNfQ0xBU1MoRE9NTm9kZSkKKworLy8gR2VuZXJhbAorCisjaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgPHN0YWNrPgorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEhvbGRlciBzdHJ1Y3R1cmVzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdHJ1Y3QgWFNFQ05TSG9sZGVyU3RydWN0Oworc3RydWN0IFhTRUNOU0VsZW1lbnRTdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IFhTRUNOU0hvbGRlclN0cnVjdCBYU0VDTlNIb2xkZXI7Cit0eXBlZGVmIHN0cnVjdCBYU0VDTlNFbGVtZW50U3RydWN0IFhTRUNOU0VsZW1lbnQ7CisKKyNpZiBkZWZpbmVkKFhTRUNfTk9fTkFNRVNQQUNFUykKKwl0eXBlZGVmIHZlY3RvcjxYU0VDTlNIb2xkZXIgKj4JCQkJWFNFQ05TSG9sZGVyVmVjdG9yVHlwZTsKKwl0eXBlZGVmIHN0YWNrPFhTRUNOU0VsZW1lbnQgKj4gICAgICAgICAgICAgIFhTRUNOU0VsZW1lbnRTdGFja1R5cGU7CisjZWxzZQorCXR5cGVkZWYgc3RkOjp2ZWN0b3I8WFNFQ05TSG9sZGVyICo+CQkJWFNFQ05TSG9sZGVyVmVjdG9yVHlwZTsKKwl0eXBlZGVmIHN0ZDo6c3RhY2s8WFNFQ05TRWxlbWVudCAqPiAgICAgICAgIFhTRUNOU0VsZW1lbnRTdGFja1R5cGU7CisjZW5kaWYKKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFRoZSBzdGFjaworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitjbGFzcyBYU0VDWE1MTlNTdGFjayB7CisKK3B1YmxpYzoKKworCVhTRUNYTUxOU1N0YWNrKCk7CisJflhTRUNYTUxOU1N0YWNrKCk7CisKKwkvLyBTdGFjayBmdW5jdGlvbnMKKwl2b2lkIHB1c2hFbGVtZW50KFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICogZWx0KTsKKwl2b2lkIHBvcEVsZW1lbnQoKTsKKworCS8vIE5TIEZ1bmN0aW9ucworCXZvaWQgYWRkTmFtZXNwYWNlKFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICogbnMpOworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICoKKwkJZ2V0Rmlyc3ROYW1lc3BhY2Uodm9pZCk7CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUgKgorCQlnZXROZXh0TmFtZXNwYWNlKHZvaWQpOworCS8vIE1hcmsgdGhlIG5hbWVzcGFjZSBhcyBwcmludGVkCisJdm9pZCBwcmludE5hbWVzcGFjZShYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqIG5zLCAKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUgKiBlbHQpOworCS8vIFJldHVybiB3aGV0aGVyIHRoZSBzdGFjayBpbmNsdWRlcyB4bWxucz0ic29tZXRoaW5nIgorCWJvb2wgaXNOb25FbXB0eURlZmF1bHROUyh2b2lkKTsKKworcHJpdmF0ZToKKworCS8vIFRoZSBzdGFjayBob2xkcyBhbGwgdGhlIGVsZW1lbnRzLCB3aXRoIGEgbGlua2VkIGxpc3Qgb2YgTlMgbm9kZXMKKwkvLyBUSGF0IHdlcmUgcHVzaGVkIGluIGZvciBlYWNoIGVsZW1lbnQKKwlYU0VDTlNFbGVtZW50U3RhY2tUeXBlIG1fZWxlbWVudHM7CisJLy8gVGhlIHZlY3RvciBob2xkcyBhbGwgdGhlICJjdXJyZW50bHkgdmlzaWJsZSIgbmFtZXNwYWNlcyBmb3IgdGhpcyBlbGVtZW50CisJWFNFQ05TSG9sZGVyVmVjdG9yVHlwZSBtX2N1cnJlbnROUzsKKwkvLyBIb2xkIGEgcG9pbnRlciBpbnRvIHRoZSB2aXNpYmxlIG5hbWVzcGFjZSBsaXN0IGZvciB0aGUgY3VycmVudCBlbGVtZW50CisJWFNFQ05TSG9sZGVyVmVjdG9yVHlwZTo6aXRlcmF0b3IgbV9jdXJyZW50TlNJdGVyYXRvcjsKKworfTsKKworCisjZW5kaWYgLyogWFNFQ1hNTE5TU1RBQ0tfSU5DTFVERSAqLworCmRpZmYgLS1naXQgYS9jL3NyYy9kc2lnL0RTSUdBbGdvcml0aG1IYW5kbGVyRGVmYXVsdC5jcHAgYi9jL3NyYy9kc2lnL0RTSUdBbGdvcml0aG1IYW5kbGVyRGVmYXVsdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA4MGE5NAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2RzaWcvRFNJR0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0LmNwcApAQCAtMCwwICsxLDc1OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAzLTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0IDo9IEludGVyZmFjZSBjbGFzcyB0byBkZWZpbmUgaGFuZGxpbmcgb2YKKyAqCQkJCQkJCQkgIGRlZmF1bHQgZW5jcnlwdGlvbiBhbGdvcml0aG1zCisgKgorICogJElkJAorICoKKyAqLworCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTUNoYWluLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNQmFzZTY0LmhwcD4KKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNU0hBMS5ocHA+CisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTU1ENS5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b0tleS5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisKKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0LmhwcD4KKworI2luY2x1ZGUgPHhlcmNlc2MvZG9tL0RPTS5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL0phbml0b3IuaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFNvbWUgdXNlZnVsIHV0aWxpdHkgZnVuY3Rpb25zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK2Jvb2wgY29tcGFyZUJhc2U2NFN0cmluZ1RvUmF3KGNvbnN0IGNoYXIgKiBiNjRTdHIsIAorCQkJCQkJCSAgdW5zaWduZWQgY2hhciAqIHJhdywgCisJCQkJCQkJICB1bnNpZ25lZCBpbnQgcmF3TGVuLCAKKwkJCQkJCQkgIHVuc2lnbmVkIGludCBtYXhDb21wYXJlID0gMCkgeworCS8vIERlY29kZSBhIGJhc2U2NCBidWZmZXIgYW5kIHRoZW4gY29tcGFyZSB0aGUgcmVzdWx0IHRvIGEgcmF3IGJ1ZmZlcgorCS8vIENvbXBhcmUgYXQgbW9zdCBtYXhDb21wYXJlIGJpdHMgKGlmIG1heENvbWFyZSA+IDApCisJLy8gTm90ZSAtIHdoaWxzdCB0aGUgb3RoZXIgcGFyYW1ldGVycyBhcmUgYnl0ZXMsIG1heENvbXBhcmUgaXMgYml0cworCisJdW5zaWduZWQgY2hhciBvdXRwdXRTdHJbMTAyNF07CisJdW5zaWduZWQgaW50IG91dHB1dExlbiA9IDA7CisJCisJWFNFQ0NyeXB0b0Jhc2U2NCAqIGI2NCA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5iYXNlNjQoKTsKKwkKKwlpZiAoIWI2NCkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q3J5cHRvUHJvdmlkZXJFcnJvciwgCisJCQkJIkVycm9yIHJlcXVlc3RpbmcgQmFzZTY0IG9iamVjdCBmcm9tIENyeXB0byBQcm92aWRlciIpOworCisJfQorCisJSmFuaXRvcjxYU0VDQ3J5cHRvQmFzZTY0PiBqX2I2NChiNjQpOworCisJYjY0LT5kZWNvZGVJbml0KCk7CisJb3V0cHV0TGVuID0gYjY0LT5kZWNvZGUoKHVuc2lnbmVkIGNoYXIgKikgYjY0U3RyLCAodW5zaWduZWQgaW50KSBzdHJsZW4oKGNoYXIgKikgYjY0U3RyKSwgb3V0cHV0U3RyLCAxMDI0KTsKKwlvdXRwdXRMZW4gKz0gYjY0LT5kZWNvZGVGaW5pc2goJm91dHB1dFN0cltvdXRwdXRMZW5dLCAxMDI0IC0gb3V0cHV0TGVuKTsKKworCS8vIENvbXBhcmUKKworCWRpdl90IGQ7CisgICAgZC5yZW0gPSAwOworICAgIGQucXVvdCA9IDA7CisKKwl1bnNpZ25lZCBpbnQgbWF4Q29tcGFyZUJ5dGVzLCBtYXhDb21wYXJlQml0czsKKwltYXhDb21wYXJlQml0cyA9IDA7CisKKwl1bnNpZ25lZCBpbnQgc2l6ZTsKKworCWlmIChtYXhDb21wYXJlID4gMCkgeworCQlkID0gZGl2KG1heENvbXBhcmUsIDgpOworCQltYXhDb21wYXJlQnl0ZXMgPSBkLnF1b3Q7CisJCWlmIChkLnJlbSAhPSAwKQorCQkJbWF4Q29tcGFyZUJ5dGVzKys7CisKKwkJaWYgKHJhd0xlbiA8IG1heENvbXBhcmVCeXRlcyAmJiBvdXRwdXRMZW4gPCBtYXhDb21wYXJlQnl0ZXMpIHsKKwkJCWlmIChyYXdMZW4gIT0gb3V0cHV0TGVuKQorCQkJCXJldHVybiBmYWxzZTsKKwkJCXNpemUgPSByYXdMZW47CisJCX0KKwkJZWxzZSBpZiAocmF3TGVuIDwgbWF4Q29tcGFyZUJ5dGVzIHx8IG91dHB1dExlbiA8IG1heENvbXBhcmVCeXRlcykgeworCQkJcmV0dXJuIGZhbHNlOworCQl9CisJCWVsc2UKKwkJCXNpemUgPSBtYXhDb21wYXJlQnl0ZXM7CisJfQorCWVsc2UgeworCisJCWlmIChyYXdMZW4gIT0gb3V0cHV0TGVuKQorCQkJcmV0dXJuIGZhbHNlOworCisJCXNpemUgPSByYXdMZW47CisKKwl9CisKKwkvLyBDb21wYXJlIGJ5dGVzCisJdW5zaWduZWQgaW50IGksIGo7CisJZm9yIChpID0gMDsgaSA8IHNpemU7ICsrIGkpIHsKKwkJaWYgKHJhd1tpXSAhPSBvdXRwdXRTdHJbaV0pCisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLy8gQ29tcGFyZSBiaXRzCisKKwljaGFyIG1hc2sgPSAweDAxOworCWlmIChtYXhDb21wYXJlICE9IDApIHsKKwkgICAgZm9yIChqID0gMCA7IGogPCAodW5zaWduZWQgaW50KSBkLnJlbTsgKytpKSB7CisKKwkJICAgIGlmICgocmF3W2ldICYgbWFzaykgIT0gKG91dHB1dFN0cltpXSAmIG1hc2spKQorCQkJICAgIHJldHVybiBmYWxzZTsKKworCQkJbWFzayA9IG1hc2sgPDwgMTsKKwkJfQorCX0KKworCXJldHVybiB0cnVlOworCit9CisKKwordm9pZCBjb252ZXJ0UmF3VG9CYXNlNjRTdHJpbmcoc2FmZUJ1ZmZlciAmYjY0U0IsIAorCQkJCQkJCSAgdW5zaWduZWQgY2hhciAqIHJhdywgCisJCQkJCQkJICB1bnNpZ25lZCBpbnQgcmF3TGVuLCAKKwkJCQkJCQkgIHVuc2lnbmVkIGludCBtYXhCaXRzID0gMCkgeworCisJLy8gVHJhbnNsYXRlIHRoZSByYXdidWZmZXIgKGF0IG1vc3QgbWF4Qml0cyBvciByYXdMZW4gLSB3aGljaGV2ZXIgaXMgc21hbGxlcikKKwkvLyB0byBhIGJhc2U2NCBzdHJpbmcKKworCXVuc2lnbmVkIGNoYXIgYjY0U3RyWzEwMjRdOworCXVuc2lnbmVkIGludCBvdXRwdXRMZW4gPSAwOworCQorCVhTRUNDcnlwdG9CYXNlNjQgKiBiNjQgPSBYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+YmFzZTY0KCk7CisJCisJaWYgKCFiNjQpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkNyeXB0b1Byb3ZpZGVyRXJyb3IsIAorCQkJCSJFcnJvciByZXF1ZXN0aW5nIEJhc2U2NCBvYmplY3QgZnJvbSBDcnlwdG8gUHJvdmlkZXIiKTsKKworCX0KKworCUphbml0b3I8WFNFQ0NyeXB0b0Jhc2U2ND4gal9iNjQoYjY0KTsKKworCS8vIERldGVybWluZSBsZW5ndGggdG8gdHJhbnNsYXRlCisJdW5zaWduZWQgaW50IHNpemU7CisKKwlpZiAobWF4Qml0cyA+IDApIHsKKwkJZGl2X3QgZCA9IGRpdihtYXhCaXRzLCA4KTsKKwkJc2l6ZSA9IGQucXVvdDsKKwkJaWYgKGQucmVtICE9IDApCisJCQkrK3NpemU7CisJCQorCQlpZiAoc2l6ZSA+IHJhd0xlbikKKwkJCXNpemUgPSByYXdMZW47CisJfQorCisJZWxzZQorCQlzaXplID0gcmF3TGVuOworCisJYjY0LT5lbmNvZGVJbml0KCk7CisJb3V0cHV0TGVuID0gYjY0LT5lbmNvZGUoKHVuc2lnbmVkIGNoYXIgKikgcmF3LCByYXdMZW4sIGI2NFN0ciwgMTAyNCk7CisJb3V0cHV0TGVuICs9IGI2NC0+ZW5jb2RlRmluaXNoKCZiNjRTdHJbb3V0cHV0TGVuXSwgMTAyNCAtIG91dHB1dExlbik7CisJYjY0U3RyW291dHB1dExlbl0gPSAnXDAnOworCisJLy8gQ29weSBvdXQKKworCWI2NFNCLnNiU3RyY3B5SW4oKGNoYXIgKikgYjY0U3RyKTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlDbG9uZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWFNFQ0FsZ29yaXRobUhhbmRsZXIgKiBEU0lHQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQ6OmNsb25lKHZvaWQpIGNvbnN0IHsKKworCURTSUdBbGdvcml0aG1IYW5kbGVyRGVmYXVsdCAqIHJldDsKKwlYU0VDbmV3KHJldCwgRFNJR0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0KTsKKworCXJldHVybiByZXQ7CisKK30KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCUFkZCBhIGhhc2ggdHhmbQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVFhGTUJhc2UgKiBhZGRIYXNoVHhmbShzaWduYXR1cmVNZXRob2Qgc20sIGhhc2hNZXRob2QgaG0sIFhTRUNDcnlwdG9LZXkgKiBrZXksIAorCQkJCQkgICBET01Eb2N1bWVudCAqIGRvYykgeworCisJLy8gR2l2ZW4gYSBoYXNoIG1ldGhvZCBhbmQgc2lnbmF0dXJlIG1ldGhvZCwgY3JlYXRlIGFuIGFwcHJvcHJpYXRlIFRYRk0KKworCVRYRk1CYXNlICogdHhmbTsKKwkKKwlzd2l0Y2ggKGhtKSB7CisKKwljYXNlIEhBU0hfTUQ1IDoKKworCQlpZiAoc20gPT0gU0lHTkFUVVJFX0hNQUMpeworCQkJaWYgKGtleS0+Z2V0S2V5VHlwZSgpICE9IFhTRUNDcnlwdG9LZXk6OktFWV9ITUFDKSB7CisJCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpBbGdvcml0aG1NYXBwZXJFcnJvciwKKwkJCQkJIkRTSUdBbGdvcml0aG1IYW5kbGVyRGVmYXVsdDo6YWRkSGFzaFR4Zm0gLSBub24gSE1BQyBrZXkgcGFzc2VkIGluIHRvIEhNQUMgc2lnbmF0dXJlIik7CisJCQl9CisJCQlYU0VDbmV3KHR4Zm0sIFRYRk1NRDUoZG9jLCBrZXkpKTsKKwkJfQorCQllbHNlICB7CisJCQlYU0VDbmV3KHR4Zm0sIFRYRk1NRDUoZG9jKSk7CisJCX0KKworCQlicmVhazsKKworCWNhc2UgSEFTSF9TSEExIDoKKworCQlpZiAoc20gPT0gU0lHTkFUVVJFX0hNQUMpeworCQkJaWYgKGtleS0+Z2V0S2V5VHlwZSgpICE9IFhTRUNDcnlwdG9LZXk6OktFWV9ITUFDKSB7CisJCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpBbGdvcml0aG1NYXBwZXJFcnJvciwKKwkJCQkJIkRTSUdBbGdvcml0aG1IYW5kbGVyRGVmYXVsdDo6YWRkSGFzaFR4Zm0gLSBub24gSE1BQyBrZXkgcGFzc2VkIGluIHRvIEhNQUMgc2lnbmF0dXJlIik7CisJCQl9CisJCQlYU0VDbmV3KHR4Zm0sIFRYRk1TSEExKGRvYywgSEFTSF9TSEExLCBrZXkpKTsKKwkJfQorCQllbHNlICB7CisJCQlYU0VDbmV3KHR4Zm0sIFRYRk1TSEExKGRvYykpOworCQl9CisKKwkJYnJlYWs7CisKKwljYXNlIEhBU0hfU0hBMjI0IDoKKworCQlpZiAoc20gPT0gU0lHTkFUVVJFX0hNQUMpeworCQkJaWYgKGtleS0+Z2V0S2V5VHlwZSgpICE9IFhTRUNDcnlwdG9LZXk6OktFWV9ITUFDKSB7CisJCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpBbGdvcml0aG1NYXBwZXJFcnJvciwKKwkJCQkJIkRTSUdBbGdvcml0aG1IYW5kbGVyRGVmYXVsdDo6YWRkSGFzaFR4Zm0gLSBub24gSE1BQyBrZXkgcGFzc2VkIGluIHRvIEhNQUMgc2lnbmF0dXJlIik7CisJCQl9CisJCQlYU0VDbmV3KHR4Zm0sIFRYRk1TSEExKGRvYywgSEFTSF9TSEEyMjQsIGtleSkpOworCQl9CisJCWVsc2UgIHsKKwkJCVhTRUNuZXcodHhmbSwgVFhGTVNIQTEoZG9jLCBIQVNIX1NIQTIyNCkpOworCQl9CisKKwkJYnJlYWs7CisKKwljYXNlIEhBU0hfU0hBMjU2IDoKKworCQlpZiAoc20gPT0gU0lHTkFUVVJFX0hNQUMpeworCQkJaWYgKGtleS0+Z2V0S2V5VHlwZSgpICE9IFhTRUNDcnlwdG9LZXk6OktFWV9ITUFDKSB7CisJCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpBbGdvcml0aG1NYXBwZXJFcnJvciwKKwkJCQkJIkRTSUdBbGdvcml0aG1IYW5kbGVyRGVmYXVsdDo6YWRkSGFzaFR4Zm0gLSBub24gSE1BQyBrZXkgcGFzc2VkIGluIHRvIEhNQUMgc2lnbmF0dXJlIik7CisJCQl9CisJCQlYU0VDbmV3KHR4Zm0sIFRYRk1TSEExKGRvYywgSEFTSF9TSEEyNTYsIGtleSkpOworCQl9CisJCWVsc2UgIHsKKwkJCVhTRUNuZXcodHhmbSwgVFhGTVNIQTEoZG9jLCBIQVNIX1NIQTI1NikpOworCQl9CisKKwkJYnJlYWs7CisKKwljYXNlIEhBU0hfU0hBMzg0IDoKKworCQlpZiAoc20gPT0gU0lHTkFUVVJFX0hNQUMpeworCQkJaWYgKGtleS0+Z2V0S2V5VHlwZSgpICE9IFhTRUNDcnlwdG9LZXk6OktFWV9ITUFDKSB7CisJCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpBbGdvcml0aG1NYXBwZXJFcnJvciwKKwkJCQkJIkRTSUdBbGdvcml0aG1IYW5kbGVyRGVmYXVsdDo6YWRkSGFzaFR4Zm0gLSBub24gSE1BQyBrZXkgcGFzc2VkIGluIHRvIEhNQUMgc2lnbmF0dXJlIik7CisJCQl9CisJCQlYU0VDbmV3KHR4Zm0sIFRYRk1TSEExKGRvYywgSEFTSF9TSEEzODQsIGtleSkpOworCQl9CisJCWVsc2UgIHsKKwkJCVhTRUNuZXcodHhmbSwgVFhGTVNIQTEoZG9jLCBIQVNIX1NIQTM4NCkpOworCQl9CisKKwkJYnJlYWs7CisKKwljYXNlIEhBU0hfU0hBNTEyIDoKKworCQlpZiAoc20gPT0gU0lHTkFUVVJFX0hNQUMpeworCQkJaWYgKGtleS0+Z2V0S2V5VHlwZSgpICE9IFhTRUNDcnlwdG9LZXk6OktFWV9ITUFDKSB7CisJCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpBbGdvcml0aG1NYXBwZXJFcnJvciwKKwkJCQkJIkRTSUdBbGdvcml0aG1IYW5kbGVyRGVmYXVsdDo6YWRkSGFzaFR4Zm0gLSBub24gSE1BQyBrZXkgcGFzc2VkIGluIHRvIEhNQUMgc2lnbmF0dXJlIik7CisJCQl9CisJCQlYU0VDbmV3KHR4Zm0sIFRYRk1TSEExKGRvYywgSEFTSF9TSEE1MTIsIGtleSkpOworCQl9CisJCWVsc2UgIHsKKwkJCVhTRUNuZXcodHhmbSwgVFhGTVNIQTEoZG9jLCBIQVNIX1NIQTUxMikpOworCQl9CisKKwkJYnJlYWs7CisKKwlkZWZhdWx0IDoKKworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpBbGdvcml0aG1NYXBwZXJFcnJvciwKKwkJCQkiSGFzaCBtZXRob2QgdW5rbm93biBpbiBEU0lHQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQ6OmFkZEhhc2hUeGZtIik7CisKKwl9CisKKwlyZXR1cm4gdHhmbTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCQkJTWFwIGEgU2lnbmF0dXJlIGhhc2gKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Jvb2wgRFNJR0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0OjphcHBlbmRTaWduYXR1cmVIYXNoVHhmbShUWEZNQ2hhaW4gKiBpbnB1dEJ5dGVzLAorCQkJCQkJCQkJCQkJCQkgIGNvbnN0IFhNTENoICogVVJJLAorCQkJCQkJCQkJCQkJCQkgIFhTRUNDcnlwdG9LZXkgKiBrZXkpIHsKKworCXNpZ25hdHVyZU1ldGhvZCBzbTsKKwloYXNoTWV0aG9kIGhtOworCisJLy8gTWFwIHRvIGludGVybmFsIGNvbnN0YW50cworCisJaWYgKCFYU0VDbWFwVVJJVG9TaWduYXR1cmVNZXRob2RzKFVSSSwgc20sIGhtKSkgeworCQlzYWZlQnVmZmVyIHNiOworCQlzYi5zYlRyYW5zY29kZUluKCJEU0lHQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQgLSBVbmtub3duIFVSSSA6ICIpOworCQlzYi5zYlhNTENoQ2F0KFVSSSk7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpBbGdvcml0aG1NYXBwZXJFcnJvciwgCisJCQlzYi5yYXdYTUxDaEJ1ZmZlcigpKTsKKwl9CisKKwkvLyBOb3cgYXBwZW5kIHRoZSBhcHByb3ByaWF0ZSBoYXNoIHRyYW5zZm9ybSBvbnRvIHRoZSBlbmQgb2YgdGhlIGNoYWluCisJLy8gSWYgdGhpcyBpcyBhbiBITUFDIG9mIHNvbWUga2luZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBhZGQgdGhlIGFwcHJvcHJpYXRlIGtleQorCisJVFhGTUJhc2UgKiBodHhmbSA9IGFkZEhhc2hUeGZtKHNtLCBobSwga2V5LCBpbnB1dEJ5dGVzLT5nZXRMYXN0VHhmbSgpLT5nZXREb2N1bWVudCgpKTsKKwlpbnB1dEJ5dGVzLT5hcHBlbmRUeGZtKGh0eGZtKTsKKworCXJldHVybiB0cnVlOworCit9CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCQkJU2lnbgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordW5zaWduZWQgaW50IERTSUdBbGdvcml0aG1IYW5kbGVyRGVmYXVsdDo6c2lnblRvU2FmZUJ1ZmZlcigKKwkJVFhGTUNoYWluICogaW5wdXRCeXRlcywKKwkJY29uc3QgWE1MQ2ggKiBVUkksCisJCVhTRUNDcnlwdG9LZXkgKiBrZXksCisJCXVuc2lnbmVkIGludCBvdXRwdXRMZW5ndGgsCisJCXNhZmVCdWZmZXIgJiByZXN1bHQpIHsKKworCXNpZ25hdHVyZU1ldGhvZCBzbTsKKwloYXNoTWV0aG9kIGhtOworCisJLy8gTWFwIHRvIGludGVybmFsIGNvbnN0YW50cworCisJaWYgKCFYU0VDbWFwVVJJVG9TaWduYXR1cmVNZXRob2RzKFVSSSwgc20sIGhtKSkgeworCQlzYWZlQnVmZmVyIHNiOworCQlzYi5zYlRyYW5zY29kZUluKCJEU0lHQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQgLSBVbmtub3duIFVSSSA6ICIpOworCQlzYi5zYlhNTENoQ2F0KFVSSSk7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpBbGdvcml0aG1NYXBwZXJFcnJvciwgCisJCQlzYi5yYXdYTUxDaEJ1ZmZlcigpKTsKKwl9CisKKwkvLyBOb3cgYXBwZW5kIHRoZSBhcHByb3ByaWF0ZSBoYXNoIHRyYW5zZm9ybSBvbnRvIHRoZSBlbmQgb2YgdGhlIGNoYWluCisJLy8gSWYgdGhpcyBpcyBhbiBITUFDIG9mIHNvbWUga2luZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBhZGQgdGhlIGFwcHJvcHJpYXRlIGtleQorCisJVFhGTUJhc2UgKiBodHhmbSA9IGFkZEhhc2hUeGZtKHNtLCBobSwga2V5LCBpbnB1dEJ5dGVzLT5nZXRMYXN0VHhmbSgpLT5nZXREb2N1bWVudCgpKTsKKwlpbnB1dEJ5dGVzLT5hcHBlbmRUeGZtKGh0eGZtKTsKKworCXVuc2lnbmVkIGNoYXIgaGFzaFs0MDk2XTsKKworCWludCBoYXNoTGVuID0gaW5wdXRCeXRlcy0+Z2V0TGFzdFR4Zm0oKS0+cmVhZEJ5dGVzKChYTUxCeXRlICopIGhhc2gsIDQwOTYpOworCQorCS8vIE5vdyBjaGVjayB0aGUgY2FsY3VsYXRlZCBoYXNoCisKKwljaGFyIGI2NEJ1ZlsxMDI0XTsKKwl1bnNpZ25lZCBpbnQgYjY0TGVuOworCXNhZmVCdWZmZXIgYjY0U0I7CisJCisJc3dpdGNoIChrZXktPmdldEtleVR5cGUoKSkgeworCisJY2FzZSAoWFNFQ0NyeXB0b0tleTo6S0VZX0RTQV9QUklWQVRFKSA6CisJY2FzZSAoWFNFQ0NyeXB0b0tleTo6S0VZX0RTQV9QQUlSKSA6CisKKwkJaWYgKHNtICE9IFNJR05BVFVSRV9EU0EpIHsKKworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpBbGdvcml0aG1NYXBwZXJFcnJvciwKKwkJCQkiS2V5IHR5cGUgZG9lcyBub3QgbWF0Y2ggPFNpZ25lZEluZm8+IHNpZ25hdHVyZSB0eXBlIik7CisKKwkJfQorCisJCWI2NExlbiA9ICgoWFNFQ0NyeXB0b0tleURTQSAqKSBrZXkpLT5zaWduQmFzZTY0U2lnbmF0dXJlKAorCQkJaGFzaCwgCisJCQloYXNoTGVuLAorCQkJKGNoYXIgKikgYjY0QnVmLCAKKwkJCTEwMjQpOworCisJCWlmIChiNjRMZW4gPD0gMCkgeworCisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkFsZ29yaXRobU1hcHBlckVycm9yLAorCQkJCSJVbmtub3duIGVycm9yIG9jY3VyZWQgZHVyaW5nIGEgRFNBIFNpZ25pbmcgb3BlcmF0aW9uIik7CisKKwkJfQorCisJCWlmIChiNjRCdWZbYjY0TGVuLTFdID09ICdcbicpCisJCQliNjRCdWZbYjY0TGVuLTFdID0gJ1wwJzsKKwkJZWxzZQorCQkJYjY0QnVmW2I2NExlbl0gPSAnXDAnOworCisJCWJyZWFrOworCisJY2FzZSAoWFNFQ0NyeXB0b0tleTo6S0VZX1JTQV9QUklWQVRFKSA6CisJY2FzZSAoWFNFQ0NyeXB0b0tleTo6S0VZX1JTQV9QQUlSKSA6CisKKwkJaWYgKHNtICE9IFNJR05BVFVSRV9SU0EpIHsKKworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpBbGdvcml0aG1NYXBwZXJFcnJvciwKKwkJCQkiS2V5IHR5cGUgZG9lcyBub3QgbWF0Y2ggPFNpZ25lZEluZm8+IHNpZ25hdHVyZSB0eXBlIik7CisKKwkJfQorCisJCWI2NExlbiA9ICgoWFNFQ0NyeXB0b0tleVJTQSAqKSBrZXkpLT5zaWduU0hBMVBLQ1MxQmFzZTY0U2lnbmF0dXJlKAorCQkJaGFzaCwgCisJCQloYXNoTGVuLAorCQkJKGNoYXIgKikgYjY0QnVmLCAKKwkJCTEwMjQsCisJCQlobSk7CisKKwkJaWYgKGI2NExlbiA8PSAwKSB7CisKKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6QWxnb3JpdGhtTWFwcGVyRXJyb3IsCisJCQkJIlVua25vd24gZXJyb3Igb2NjdXJlZCBkdXJpbmcgYSBSU0EgU2lnbmluZyBvcGVyYXRpb24iKTsKKworCQl9CisKKwkJLy8gQ2xlYW4gdXAgc29tZSAiZnVubmllcyIgYW5kIG1ha2Ugc3VyZSB0aGUgc3RyaW5nIGlzIE5VTEwgdGVybWluYXRlZAorCisJCWlmIChiNjRCdWZbYjY0TGVuLTFdID09ICdcbicpCisJCQliNjRCdWZbYjY0TGVuLTFdID0gJ1wwJzsKKwkJZWxzZQorCQkJYjY0QnVmW2I2NExlbl0gPSAnXDAnOworCisJCWJyZWFrOworCisJY2FzZSAoWFNFQ0NyeXB0b0tleTo6S0VZX0VDX1BSSVZBVEUpIDoKKwljYXNlIChYU0VDQ3J5cHRvS2V5OjpLRVlfRUNfUEFJUikgOgorCisJCWlmIChzbSAhPSBTSUdOQVRVUkVfRUNEU0EpIHsKKworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpBbGdvcml0aG1NYXBwZXJFcnJvciwKKwkJCQkiS2V5IHR5cGUgZG9lcyBub3QgbWF0Y2ggPFNpZ25lZEluZm8+IHNpZ25hdHVyZSB0eXBlIik7CisKKwkJfQorCisJCWI2NExlbiA9ICgoWFNFQ0NyeXB0b0tleUVDICopIGtleSktPnNpZ25CYXNlNjRTaWduYXR1cmVEU0EoCisJCQloYXNoLCAKKwkJCWhhc2hMZW4sCisJCQkoY2hhciAqKSBiNjRCdWYsIAorCQkJMTAyNCk7CisKKwkJaWYgKGI2NExlbiA8PSAwKSB7CisKKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6QWxnb3JpdGhtTWFwcGVyRXJyb3IsCisJCQkJIlVua25vd24gZXJyb3Igb2NjdXJlZCBkdXJpbmcgYW4gRUNEU0EgU2lnbmluZyBvcGVyYXRpb24iKTsKKworCQl9CisKKwkJaWYgKGI2NEJ1ZltiNjRMZW4tMV0gPT0gJ1xuJykKKwkJCWI2NEJ1ZltiNjRMZW4tMV0gPSAnXDAnOworCQllbHNlCisJCQliNjRCdWZbYjY0TGVuXSA9ICdcMCc7CisKKwkJYnJlYWs7CisKKwljYXNlIChYU0VDQ3J5cHRvS2V5OjpLRVlfSE1BQykgOgorCisJCWlmIChzbSAhPSBTSUdOQVRVUkVfSE1BQykgeworCisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkFsZ29yaXRobU1hcHBlckVycm9yLAorCQkJCSJLZXkgdHlwZSBkb2VzIG5vdCBtYXRjaCA8U2lnbmVkSW5mbz4gc2lnbmF0dXJlIHR5cGUiKTsKKworCQl9CisKKwkJLy8gU2lnbmF0dXJlIGFscmVhZHkgY3JlYXRlZCwgc28ganVzdCB0cmFuc2xhdGUgdG8gYmFzZSA2NCBhbmQgZW50ZXIgc3RyaW5nCisKKyAgICAgICAgLy8gRklYOiBDVkUtMjAwOS0wMjE3CisgICAgICAgIGlmIChvdXRwdXRMZW5ndGggPiAwICYmIChvdXRwdXRMZW5ndGggPCA4MCB8fCBvdXRwdXRMZW5ndGggPCBoYXNoTGVuIC8gMikpIHsKKyAgICAgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6QWxnb3JpdGhtTWFwcGVyRXJyb3IsCisgICAgICAgICAgICAgICAgIkhNQUNPdXRwdXRMZW5ndGggc2V0IHRvIHVuc2FmZSB2YWx1ZS4iKTsKKyAgICAgICAgfQorCQkKKwkJY29udmVydFJhd1RvQmFzZTY0U3RyaW5nKGI2NFNCLCAKKwkJCQkJCQkJaGFzaCwgCisJCQkJCQkJCWhhc2hMZW4sIAorCQkJCQkJCQlvdXRwdXRMZW5ndGgpOworCQkKKwkJc3RybmNweShiNjRCdWYsIChjaGFyICopIGI2NFNCLnJhd0J1ZmZlcigpLCAxMDI0KTsKKwkJYnJlYWs7CisKKwlkZWZhdWx0IDoKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkFsZ29yaXRobU1hcHBlckVycm9yLAorCQkJIktleSBmb3VuZCwgYnV0IGRvbid0IGtub3cgaG93IHRvIHNpZ24gdGhlIGRvY3VtZW50IHVzaW5nIGl0Iik7CisKKwl9CisKKwlyZXN1bHQgPSBiNjRCdWY7CisKKwlyZXR1cm4gKHVuc2lnbmVkIGludCkgc3RybGVuKGI2NEJ1Zik7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCQkJVmVyaWZ5CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorYm9vbCBEU0lHQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQ6OnZlcmlmeUJhc2U2NFNpZ25hdHVyZSgKKwkJVFhGTUNoYWluICogaW5wdXRCeXRlcywKKwkJY29uc3QgWE1MQ2ggKiBVUkksCisJCWNvbnN0IGNoYXIgKiBzaWcsCisJCXVuc2lnbmVkIGludCBvdXRwdXRMZW5ndGgsCisJCVhTRUNDcnlwdG9LZXkgKiBrZXkpIHsKKworCXNpZ25hdHVyZU1ldGhvZCBzbTsKKwloYXNoTWV0aG9kIGhtOworCisJLy8gTWFwIHRvIGludGVybmFsIGNvbnN0YW50cworCisJaWYgKCFYU0VDbWFwVVJJVG9TaWduYXR1cmVNZXRob2RzKFVSSSwgc20sIGhtKSkgeworCQlzYWZlQnVmZmVyIHNiOworCQlzYi5zYlRyYW5zY29kZUluKCJEU0lHQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQgLSBVbmtub3duIFVSSSA6ICIpOworCQlzYi5zYlhNTENoQ2F0KFVSSSk7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpBbGdvcml0aG1NYXBwZXJFcnJvciwgCisJCQlzYi5yYXdYTUxDaEJ1ZmZlcigpKTsKKwl9CisKKwkvLyBOb3cgYXBwZW5kIHRoZSBhcHByb3ByaWF0ZSBoYXNoIHRyYW5zZm9ybSBvbnRvIHRoZSBlbmQgb2YgdGhlIGNoYWluCisJLy8gSWYgdGhpcyBpcyBhbiBITUFDIG9mIHNvbWUga2luZCAtIHRoaXMgZnVuY3Rpb24gd2lsbCBhZGQgdGhlIGFwcHJvcHJpYXRlIGtleQorCisJVFhGTUJhc2UgKiBodHhmbSA9IGFkZEhhc2hUeGZtKHNtLCBobSwga2V5LCBpbnB1dEJ5dGVzLT5nZXRMYXN0VHhmbSgpLT5nZXREb2N1bWVudCgpKTsKKwlpbnB1dEJ5dGVzLT5hcHBlbmRUeGZtKGh0eGZtKTsKKworCXVuc2lnbmVkIGNoYXIgaGFzaFs0MDk2XTsKKworCWludCBoYXNoTGVuID0gaW5wdXRCeXRlcy0+Z2V0TGFzdFR4Zm0oKS0+cmVhZEJ5dGVzKChYTUxCeXRlICopIGhhc2gsIDQwOTYpOworCQorCS8vIE5vdyBjaGVjayB0aGUgY2FsY3VsYXRlZCBoYXNoCisJYm9vbCBzaWdWZnlSZXQgPSBmYWxzZTsKKworCXN3aXRjaCAoa2V5LT5nZXRLZXlUeXBlKCkpIHsKKworCWNhc2UgKFhTRUNDcnlwdG9LZXk6OktFWV9EU0FfUFVCTElDKSA6CisJY2FzZSAoWFNFQ0NyeXB0b0tleTo6S0VZX0RTQV9QQUlSKSA6CisKKwkJaWYgKHNtICE9IFNJR05BVFVSRV9EU0EpIHsKKworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpBbGdvcml0aG1NYXBwZXJFcnJvciwKKwkJCQkiS2V5IHR5cGUgZG9lcyBub3QgbWF0Y2ggPFNpZ25lZEluZm8+IHNpZ25hdHVyZSB0eXBlIik7CisKKwkJfQorCisJCXNpZ1ZmeVJldCA9ICgoWFNFQ0NyeXB0b0tleURTQSAqKSBrZXkpLT52ZXJpZnlCYXNlNjRTaWduYXR1cmUoCisJCQloYXNoLCAKKwkJCWhhc2hMZW4sCisJCQkoY2hhciAqKSBzaWcsIAorCQkJKHVuc2lnbmVkIGludCkgc3RybGVuKHNpZykpOworCisJCWJyZWFrOworCisJY2FzZSAoWFNFQ0NyeXB0b0tleTo6S0VZX1JTQV9QVUJMSUMpIDoKKwljYXNlIChYU0VDQ3J5cHRvS2V5OjpLRVlfUlNBX1BBSVIpIDoKKworCQlpZiAoc20gIT0gU0lHTkFUVVJFX1JTQSkgeworCQkKKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6QWxnb3JpdGhtTWFwcGVyRXJyb3IsCisJCQkJIktleSB0eXBlIGRvZXMgbm90IG1hdGNoIDxTaWduZWRJbmZvPiBzaWduYXR1cmUgdHlwZSIpOworCisJCX0KKworCQlzaWdWZnlSZXQgPSAoKFhTRUNDcnlwdG9LZXlSU0EgKikga2V5KS0+dmVyaWZ5U0hBMVBLQ1MxQmFzZTY0U2lnbmF0dXJlKAorCQkJaGFzaCwKKwkJCWhhc2hMZW4sCisJCQlzaWcsCisJCQkodW5zaWduZWQgaW50KSBzdHJsZW4oc2lnKSwKKwkJCWhtKTsKKworCQlicmVhazsKKworCWNhc2UgKFhTRUNDcnlwdG9LZXk6OktFWV9FQ19QVUJMSUMpIDoKKwljYXNlIChYU0VDQ3J5cHRvS2V5OjpLRVlfRUNfUEFJUikgOgorCisJCWlmIChzbSAhPSBTSUdOQVRVUkVfRUNEU0EpIHsKKworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpBbGdvcml0aG1NYXBwZXJFcnJvciwKKwkJCQkiS2V5IHR5cGUgZG9lcyBub3QgbWF0Y2ggPFNpZ25lZEluZm8+IHNpZ25hdHVyZSB0eXBlIik7CisKKwkJfQorCisJCXNpZ1ZmeVJldCA9ICgoWFNFQ0NyeXB0b0tleUVDICopIGtleSktPnZlcmlmeUJhc2U2NFNpZ25hdHVyZURTQSgKKwkJCWhhc2gsIAorCQkJaGFzaExlbiwKKwkJCShjaGFyICopIHNpZywgCisJCQkodW5zaWduZWQgaW50KSBzdHJsZW4oc2lnKSk7CisKKwkJYnJlYWs7CisKKwljYXNlIChYU0VDQ3J5cHRvS2V5OjpLRVlfSE1BQykgOgorCisJCS8vIEFscmVhZHkgZG9uZSAtIGp1c3QgY29tcGFyZSBjYWxjdWxhdGVkIHZhbHVlIHdpdGggcmVhZCB2YWx1ZQorCisgICAgICAgIC8vIEZJWDogQ1ZFLTIwMDktMDIxNworICAgICAgICBpZiAob3V0cHV0TGVuZ3RoID4gMCAmJiAob3V0cHV0TGVuZ3RoIDwgODAgfHwgb3V0cHV0TGVuZ3RoIDwgaGFzaExlbiAvIDIpKSB7CisgICAgICAgICAgICB0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkFsZ29yaXRobU1hcHBlckVycm9yLAorICAgICAgICAgICAgICAgICJITUFDT3V0cHV0TGVuZ3RoIHNldCB0byB1bnNhZmUgdmFsdWUuIik7CisgICAgICAgIH0KKworCSAgICBzaWdWZnlSZXQgPSBjb21wYXJlQmFzZTY0U3RyaW5nVG9SYXcoc2lnLAorCQkJaGFzaCwgCisJCQloYXNoTGVuLAorCQkJb3V0cHV0TGVuZ3RoKTsKKworCQlicmVhazsKKworCWRlZmF1bHQgOgorCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6QWxnb3JpdGhtTWFwcGVyRXJyb3IsCisJCQkiS2V5IGZvdW5kLCBidXQgZG9uJ3Qga25vdyBob3cgdG8gY2hlY2sgdGhlIHNpZ25hdHVyZSB1c2luZyBpdCIpOworCisJfQorCisJcmV0dXJuIHNpZ1ZmeVJldDsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlIYXNoIFRYRk0gYXBwZW5kZXJzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitib29sIERTSUdBbGdvcml0aG1IYW5kbGVyRGVmYXVsdDo6YXBwZW5kSGFzaFR4Zm0oCisJCVRYRk1DaGFpbiAqIGlucHV0Qnl0ZXMsCisJCWNvbnN0IFhNTENoICogVVJJKSB7CisKKwloYXNoTWV0aG9kIGhtOworCisJLy8gSXMgdGhpcyBhIFVSSSB3ZSByZWNvZ25pc2U/CisKKwlpZiAoIVhTRUNtYXBVUklUb0hhc2hNZXRob2QoVVJJLCBobSkpIHsKKwkJc2FmZUJ1ZmZlciBzYjsKKwkJc2Iuc2JUcmFuc2NvZGVJbigiRFNJR0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0IC0gVW5rbm93biBIYXNoIFVSSSA6ICIpOworCQlzYi5zYlhNTENoQ2F0KFVSSSk7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpBbGdvcml0aG1NYXBwZXJFcnJvciwgCisJCQlzYi5yYXdYTUxDaEJ1ZmZlcigpKTsKKwl9CisKKwlUWEZNQmFzZSAqIHR4Zm07CisJRE9NRG9jdW1lbnQgKmQgPSBpbnB1dEJ5dGVzLT5nZXRMYXN0VHhmbSgpLT5nZXREb2N1bWVudCgpOworCXN3aXRjaCAoaG0pIHsKKworCWNhc2UgSEFTSF9TSEExIDoKKwljYXNlIEhBU0hfU0hBMjI0IDoKKwljYXNlIEhBU0hfU0hBMjU2IDoKKwljYXNlIEhBU0hfU0hBMzg0IDoKKwljYXNlIEhBU0hfU0hBNTEyIDoKKworCQlYU0VDbmV3KHR4Zm0sIFRYRk1TSEExKGQsIGhtKSk7CisJCWJyZWFrOworCQorCWNhc2UgSEFTSF9NRDUgOgorCisJCVhTRUNuZXcodHhmbSwgVFhGTU1ENShkKSk7CisJCWJyZWFrOworCisJZGVmYXVsdCA6CisKKwkJc2FmZUJ1ZmZlciBzYjsKKwkJc2Iuc2JUcmFuc2NvZGVJbigiRFNJR0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0IC0gSW50ZXJuYWwgZXJyb3IgdW5rbm93biBIYXNoLCBidXQgVVJJIGtub3duLiBVUkkgOiAiKTsKKwkJc2Iuc2JYTUxDaENhdChVUkkpOworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6QWxnb3JpdGhtTWFwcGVyRXJyb3IsIAorCQkJc2IucmF3WE1MQ2hCdWZmZXIoKSk7CisKKwl9CisKKwlpbnB1dEJ5dGVzLT5hcHBlbmRUeGZtKHR4Zm0pOworCisJcmV0dXJuIHRydWU7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCQkJU2FmZUJ1ZmZlciBkZWNyeXB0aW9uCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit1bnNpZ25lZCBpbnQgRFNJR0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0OjpkZWNyeXB0VG9TYWZlQnVmZmVyKAorCQlUWEZNQ2hhaW4gKiBjaXBoZXJUZXh0LAorCQlYRU5DRW5jcnlwdGlvbk1ldGhvZCAqIGVuY3J5cHRpb25NZXRob2QsCisJCVhTRUNDcnlwdG9LZXkgKiBrZXksCisJCURPTURvY3VtZW50ICogZG9jLAorCQlzYWZlQnVmZmVyICYgcmVzdWx0CisJCSkgeworCisJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpBbGdvcml0aG1NYXBwZXJFcnJvciwgCisJCQkiRFNJR0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0IC0gRW5jcnlwdGlvbiBvcGVyYXRpb25zIG5vdCBzdXBwb3J0ZWQiKTsKKworfQorCitib29sIERTSUdBbGdvcml0aG1IYW5kbGVyRGVmYXVsdDo6YXBwZW5kRGVjcnlwdENpcGhlclRYRk0oCisJCVRYRk1DaGFpbiAqIGNpcGhlclRleHQsCisJCVhFTkNFbmNyeXB0aW9uTWV0aG9kICogZW5jcnlwdGlvbk1ldGhvZCwKKwkJWFNFQ0NyeXB0b0tleSAqIGtleSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogZG9jCisJCSkgeworCisJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpBbGdvcml0aG1NYXBwZXJFcnJvciwgCisJCQkiRFNJR0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0IC0gRW5jcnlwdGlvbiBvcGVyYXRpb25zIG5vdCBzdXBwb3J0ZWQiKTsKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlTYWZlQnVmZmVyIGVuY3J5cHRpb24KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Jvb2wgRFNJR0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0OjplbmNyeXB0VG9TYWZlQnVmZmVyKAorCQlUWEZNQ2hhaW4gKiBwbGFpblRleHQsCisJCVhFTkNFbmNyeXB0aW9uTWV0aG9kICogZW5jcnlwdGlvbk1ldGhvZCwKKwkJWFNFQ0NyeXB0b0tleSAqIGtleSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogZG9jLAorCQlzYWZlQnVmZmVyICYgcmVzdWx0CisJCSkgeworCisJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpBbGdvcml0aG1NYXBwZXJFcnJvciwgCisJCQkiRFNJR0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0IC0gRW5jcnlwdGlvbiBvcGVyYXRpb25zIG5vdCBzdXBwb3J0ZWQiKTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlLZXkgQ3JlYXRpb24KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hTRUNDcnlwdG9LZXkgKiBEU0lHQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQ6OmNyZWF0ZUtleUZvclVSSSgKKwkJY29uc3QgWE1MQ2ggKiB1cmksCisJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKiBrZXlCdWZmZXIsCisJCXVuc2lnbmVkIGludCBrZXlMZW4KKwkJKSB7CisKKwl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkFsZ29yaXRobU1hcHBlckVycm9yLCAKKwkJCSJEU0lHQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQgLSBLZXkgY3JlYXRpb24gb3BlcmF0aW9ucyBub3Qgc3VwcG9ydGVkIik7CisKK30KKwpkaWZmIC0tZ2l0IGEvYy9zcmMvZHNpZy9EU0lHQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQuaHBwIGIvYy9zcmMvZHNpZy9EU0lHQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkMzU1NDUKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9kc2lnL0RTSUdBbGdvcml0aG1IYW5kbGVyRGVmYXVsdC5ocHAKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBEU0lHQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQgOj0gSW50ZXJmYWNlIGNsYXNzIHRvIGRlZmluZSBoYW5kbGluZyBvZgorICoJCQkJCQkJCSAgZGVmYXVsdCBzaWduYXR1cmUgYWxnb3JpdGhtcworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBEU0lHQUxHSEFORExFUkRFRkFVTFRfSU5DTFVERQorI2RlZmluZSBEU0lHQUxHSEFORExFUkRFRkFVTFRfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0FsZ29yaXRobUhhbmRsZXIuaHBwPgorCitjbGFzcyBUWEZNQ2hhaW47CitjbGFzcyBYRU5DRW5jcnlwdGlvbk1ldGhvZDsKK2NsYXNzIFhTRUNDcnlwdG9LZXk7CisKKy8vIFhlcmNlcworCitjbGFzcyBEU0lHQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQgOiBwdWJsaWMgWFNFQ0FsZ29yaXRobUhhbmRsZXIgeworCitwdWJsaWM6CisJCisJCisJdmlydHVhbCB+RFNJR0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0KCkge307CisKKworCXZpcnR1YWwgWFNFQ0FsZ29yaXRobUhhbmRsZXIgKiBjbG9uZSh2b2lkKSBjb25zdDsKKworCS8vIFNpZ25hdHVyZSBvcHMKKworCXZpcnR1YWwgYm9vbCBhcHBlbmRTaWduYXR1cmVIYXNoVHhmbSgKKwkJVFhGTUNoYWluICogaW5wdXRCeXRlcywKKwkJY29uc3QgWE1MQ2ggKiBVUkksCisJCVhTRUNDcnlwdG9LZXkgKiBrZXkKKwkpOworCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgc2lnblRvU2FmZUJ1ZmZlcigKKwkJVFhGTUNoYWluICogaW5wdXRCeXRlcywKKwkJY29uc3QgWE1MQ2ggKiBVUkksCisJCVhTRUNDcnlwdG9LZXkgKiBrZXksCisJCXVuc2lnbmVkIGludCBvdXRwdXRMZW5ndGgsCisJCXNhZmVCdWZmZXIgJiByZXN1bHQKKwkpOworCisJdmlydHVhbCBib29sIHZlcmlmeUJhc2U2NFNpZ25hdHVyZSgKKwkJVFhGTUNoYWluICogaW5wdXRCeXRlcywKKwkJY29uc3QgWE1MQ2ggKiBVUkksCisJCWNvbnN0IGNoYXIgKiBzaWcsCisJCXVuc2lnbmVkIGludCBvdXRwdXRMZW5ndGgsCisJCVhTRUNDcnlwdG9LZXkgKiBrZXkKKwkpOworCisJdmlydHVhbCBib29sIGFwcGVuZEhhc2hUeGZtKAorCQlUWEZNQ2hhaW4gKiBpbnB1dEJ5dGVzLAorCQljb25zdCBYTUxDaCAqIFVSSQorCSk7CisKKwkvLyBVbnN1cHBvcnRlZCBFbmNyeXB0aW9uIE9wZXJhdGlvbnMKKworCXZpcnR1YWwgdW5zaWduZWQgaW50IGRlY3J5cHRUb1NhZmVCdWZmZXIoCisJCVRYRk1DaGFpbiAqIGNpcGhlclRleHQsCisJCVhFTkNFbmNyeXB0aW9uTWV0aG9kICogZW5jcnlwdGlvbk1ldGhvZCwKKwkJWFNFQ0NyeXB0b0tleSAqIGtleSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogZG9jLAorCQlzYWZlQnVmZmVyICYgcmVzdWx0CisJKTsKKworCXZpcnR1YWwgYm9vbCBhcHBlbmREZWNyeXB0Q2lwaGVyVFhGTSgKKwkJVFhGTUNoYWluICogY2lwaGVyVGV4dCwKKwkJWEVOQ0VuY3J5cHRpb25NZXRob2QgKiBlbmNyeXB0aW9uTWV0aG9kLAorCQlYU0VDQ3J5cHRvS2V5ICoga2V5LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBkb2MKKwkpOworCisJdmlydHVhbCBib29sIGVuY3J5cHRUb1NhZmVCdWZmZXIoCisJCVRYRk1DaGFpbiAqIHBsYWluVGV4dCwKKwkJWEVOQ0VuY3J5cHRpb25NZXRob2QgKiBlbmNyeXB0aW9uTWV0aG9kLAorCQlYU0VDQ3J5cHRvS2V5ICoga2V5LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBkb2MsCisJCXNhZmVCdWZmZXIgJiByZXN1bHQKKwkpOworCisJdmlydHVhbCBYU0VDQ3J5cHRvS2V5ICogY3JlYXRlS2V5Rm9yVVJJKAorCQljb25zdCBYTUxDaCAqIHVyaSwKKwkJY29uc3QgdW5zaWduZWQgY2hhciAqIGtleUJ1ZmZlciwKKwkJdW5zaWduZWQgaW50IGtleUxlbgorCSk7CisKK3ByaXZhdGU6CisKK307CisKKy8qXEB9Ki8KKworI2VuZGlmIC8qIERTSUdBTEdIQU5ETEVSREVGQVVMVF9JTkNMVURFICovCisKZGlmZiAtLWdpdCBhL2Mvc3JjL2RzaWcvRFNJR0NvbnN0YW50cy5jcHAgYi9jL3NyYy9kc2lnL0RTSUdDb25zdGFudHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxZjc3NDUKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9kc2lnL0RTSUdDb25zdGFudHMuY3BwCkBAIC0wLDAgKzEsNTkxIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBEU0lHQ29uc3RhbnRzIDo9IERlZmluaXRpb25zIG9mIHZhcml1cyBEU0lHIGNvbnN0YW50cyAobWFpbmx5IHN0cmluZ3MpCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdDb25zdGFudHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4KKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxVbmlEZWZzLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKy8vIFdlIG5lZWQgYSBzcGVjaWFsIHZlcnNpb24gb2YgWFNFQ19SRUxFQVNFX1hNTENICisKKyN1bmRlZiBYU0VDX1JFTEVBU0VfWE1MQ0gKKworI2lmIGRlZmluZWQgKFhTRUNfWEVSQ0VTX1hNTFNUUklOR19IQVNfUkVMRUFTRSkKKyMgICAgZGVmaW5lIFhTRUNfUkVMRUFTRV9YTUxDSCh4KSBYTUxTdHJpbmc6OnJlbGVhc2UoKFhNTENoICoqKSAmeCkKKyNlbHNlCisjICAgIGRlZmluZSBYU0VDX1JFTEVBU0VfWE1MQ0goeCkgZGVsZXRlW10geDsKKyNlbmRpZgorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlTb21lIHVzZWZ1bCBkZWZpbmVzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0aWMgWE1MQ2ggc19kc2FbXSA9IHsKKworCWNoTGF0aW5fZCwKKwljaExhdGluX3MsCisJY2hMYXRpbl9hLAorCWNoTnVsbAorfTsKKworc3RhdGljIFhNTENoIHNfcnNhW10gPSB7CisKKwljaExhdGluX3IsCisJY2hMYXRpbl9zLAorCWNoTGF0aW5fYSwKKwljaE51bGwKK307CisKK3N0YXRpYyBYTUxDaCBzX2VjZHNhW10gPSB7CisKKwljaExhdGluX2UsCisJY2hMYXRpbl9jLAorCWNoTGF0aW5fZCwKKyAgICBjaExhdGluX3MsCisgICAgY2hMYXRpbl9hLAorCWNoTnVsbAorfTsKKworc3RhdGljIFhNTENoIHNfaG1hY1tdID0geworCisJY2hMYXRpbl9oLAorCWNoTGF0aW5fbSwKKwljaExhdGluX2EsCisJY2hMYXRpbl9jLAorCWNoTnVsbAorfTsKKworc3RhdGljIFhNTENoIHNfc2hhMVtdID0geworCisJY2hMYXRpbl9zLAorCWNoTGF0aW5faCwKKwljaExhdGluX2EsCisJY2hEaWdpdF8xLAorCWNoTnVsbAorfTsKKworc3RhdGljIFhNTENoIHNfc2hhMjI0W10gPSB7CisKKwljaExhdGluX3MsCisJY2hMYXRpbl9oLAorCWNoTGF0aW5fYSwKKwljaERpZ2l0XzIsCisJY2hEaWdpdF8yLAorCWNoRGlnaXRfNCwKKwljaE51bGwKK307CisKK3N0YXRpYyBYTUxDaCBzX3NoYTI1NltdID0geworCisJY2hMYXRpbl9zLAorCWNoTGF0aW5faCwKKwljaExhdGluX2EsCisJY2hEaWdpdF8yLAorCWNoRGlnaXRfNSwKKwljaERpZ2l0XzYsCisJY2hOdWxsCit9OworCitzdGF0aWMgWE1MQ2ggc19zaGEzODRbXSA9IHsKKworCWNoTGF0aW5fcywKKwljaExhdGluX2gsCisJY2hMYXRpbl9hLAorCWNoRGlnaXRfMywKKwljaERpZ2l0XzgsCisJY2hEaWdpdF80LAorCWNoTnVsbAorfTsKKworc3RhdGljIFhNTENoIHNfc2hhNTEyW10gPSB7CisKKwljaExhdGluX3MsCisJY2hMYXRpbl9oLAorCWNoTGF0aW5fYSwKKwljaERpZ2l0XzUsCisJY2hEaWdpdF8xLAorCWNoRGlnaXRfMiwKKwljaE51bGwKK307CisKK3N0YXRpYyBYTUxDaCBzX21kNVtdID0geworCisJY2hMYXRpbl9tLAorCWNoTGF0aW5fZCwKKwljaERpZ2l0XzUsCisJY2hOdWxsCit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0YW50IFN0cmluZ3MgU3RvcmFnZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJFbXB0eTsJCS8vICIiCitjb25zdCBYTUxDaCAqIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ck5MOwkJLy8gIlxuIgorY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJYbWxuczsJCS8vICJ4bWxucyIKK2NvbnN0IFhNTENoICogRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJOworCitjb25zdCBYTUxDaCAqIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ckFsZ29yaXRobTsKKworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklEU0lHOworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklEU0lHMTE7Citjb25zdCBYTUxDaCAqIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUVDOworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYUEY7Citjb25zdCBYTUxDaCAqIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhFTkM7CisKK2NvbnN0IFhNTENoICogRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJU0lHQkFTRTsKK2NvbnN0IFhNTENoICogRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJU0lHQkFTRU1PUkU7Citjb25zdCBYTUxDaCAqIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVNJR0JBU0UxMTsKKworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklSYXdYNTA5OworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklTSEExOworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklTSEEyMjQ7Citjb25zdCBYTUxDaCAqIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVNIQTI1NjsKK2NvbnN0IFhNTENoICogRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJU0hBMzg0OworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklTSEE1MTI7Citjb25zdCBYTUxDaCAqIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSU1ENTsJCS8vIE5vdCByZWNvbW1lbmRlZAorY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklCQVNFNjQ7Citjb25zdCBYTUxDaCAqIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhQQVRIOworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYU0xUOworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklFTlZFTE9QRTsKK2NvbnN0IFhNTENoICogRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJQzE0Tl9OT0M7Citjb25zdCBYTUxDaCAqIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUMxNE5fQ09NOworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklDMTROMTFfTk9DOworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklDMTROMTFfQ09NOworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklFWENfQzE0Tl9OT0M7Citjb25zdCBYTUxDaCAqIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUVYQ19DMTROX0NPTTsKKworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklEU0FfU0hBMTsKK2NvbnN0IFhNTENoICogRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRFNBX1NIQTI1NjsKKworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklSU0FfTUQ1OworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklSU0FfU0hBMTsKK2NvbnN0IFhNTENoICogRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJUlNBX1NIQTIyNDsKK2NvbnN0IFhNTENoICogRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJUlNBX1NIQTI1NjsKK2NvbnN0IFhNTENoICogRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJUlNBX1NIQTM4NDsKK2NvbnN0IFhNTENoICogRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJUlNBX1NIQTUxMjsKKworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklFQ0RTQV9TSEExOworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklFQ0RTQV9TSEEyNTY7Citjb25zdCBYTUxDaCAqIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUVDRFNBX1NIQTM4NDsKK2NvbnN0IFhNTENoICogRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRUNEU0FfU0hBNTEyOworCitjb25zdCBYTUxDaCAqIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUhNQUNfU0hBMTsKK2NvbnN0IFhNTENoICogRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJSE1BQ19TSEEyMjQ7Citjb25zdCBYTUxDaCAqIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUhNQUNfU0hBMjU2OworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklITUFDX1NIQTM4NDsKK2NvbnN0IFhNTENoICogRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJSE1BQ19TSEE1MTI7CisKK2NvbnN0IFhNTENoICogRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWE1MTlM7Citjb25zdCBYTUxDaCAqIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSU1BTklGRVNUOworCitjb25zdCBYTUxDaCAqIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSTNERVNfQ0JDOworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklBRVMxMjhfQ0JDOworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklBRVMxOTJfQ0JDOworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklBRVMyNTZfQ0JDOworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklLV19BRVMxMjg7Citjb25zdCBYTUxDaCAqIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUtXX0FFUzE5MjsKK2NvbnN0IFhNTENoICogRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJS1dfQUVTMjU2OworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklLV18zREVTOworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklSU0FfMV81OworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklSU0FfT0FFUF9NR0ZQMTsKKworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYRU5DX0VMRU1FTlQ7Citjb25zdCBYTUxDaCAqIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhFTkNfQ09OVEVOVDsKKworY29uc3QgWE1MQ2ggKiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJQUk9WT3BlblNTTDsKK2NvbnN0IFhNTENoICogRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyUFJPVldpbkNBUEk7Citjb25zdCBYTUxDaCAqIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clBST1ZOU1M7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ29uc3RhbnQgU3RyaW5ncyBDcmVhdGlvbiBhbmQgRGVsZXRpb24KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgRFNJR0NvbnN0YW50czo6Y3JlYXRlKCkgeworCisJLy8gU2V0IHVwIHRoZSBzdGF0aWMgc3RyaW5ncworCisJc191bmljb2RlU3RyRW1wdHkgPSBYTUxTdHJpbmc6OnRyYW5zY29kZSgiIik7CisJc191bmljb2RlU3RyTkwgPSBYTUxTdHJpbmc6OnRyYW5zY29kZSgiXG4iKTsKKwlzX3VuaWNvZGVTdHJYbWxucyA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKCJ4bWxucyIpOworCXNfdW5pY29kZVN0clVSSSA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKCJVUkkiKTsKKworCXNfdW5pY29kZVN0ckFsZ29yaXRobSA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKCJBbGdvcml0aG0iKTsKKworCXNfdW5pY29kZVN0clVSSVJhd1g1MDkgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShVUklfSURfUkFXWDUwOSk7CisJc191bmljb2RlU3RyVVJJRFNJRyA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKFVSSV9JRF9EU0lHKTsKKyAgICBzX3VuaWNvZGVTdHJVUklEU0lHMTEgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShVUklfSURfRFNJRzExKTsKKwlzX3VuaWNvZGVTdHJVUklFQyA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKFVSSV9JRF9FQyk7CisJc191bmljb2RlU3RyVVJJWFBGID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoVVJJX0lEX1hQRik7CisJc191bmljb2RlU3RyVVJJWEVOQyA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKFVSSV9JRF9YRU5DKTsKKworCXNfdW5pY29kZVN0clVSSVNJR0JBU0UgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShVUklfSURfU0lHX0JBU0UpOworCXNfdW5pY29kZVN0clVSSVNJR0JBU0VNT1JFID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoVVJJX0lEX1NJR19CQVNFTU9SRSk7CisgICAgc191bmljb2RlU3RyVVJJU0lHQkFTRTExID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoVVJJX0lEX1NJR19CQVNFMTEpOworCisJc191bmljb2RlU3RyVVJJU0hBMSA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKFVSSV9JRF9TSEExKTsKKwlzX3VuaWNvZGVTdHJVUklTSEEyMjQgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShVUklfSURfU0hBMjI0KTsKKwlzX3VuaWNvZGVTdHJVUklTSEEyNTYgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShVUklfSURfU0hBMjU2KTsKKwlzX3VuaWNvZGVTdHJVUklTSEEzODQgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShVUklfSURfU0hBMzg0KTsKKwlzX3VuaWNvZGVTdHJVUklTSEE1MTIgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShVUklfSURfU0hBNTEyKTsKKwlzX3VuaWNvZGVTdHJVUklNRDUgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShVUklfSURfTUQ1KTsKKwlzX3VuaWNvZGVTdHJVUklCQVNFNjQgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShVUklfSURfQkFTRTY0KTsKKwlzX3VuaWNvZGVTdHJVUklYUEFUSCA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKFVSSV9JRF9YUEFUSCk7CisJc191bmljb2RlU3RyVVJJWFNMVCA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKFVSSV9JRF9YU0xUKTsKKwlzX3VuaWNvZGVTdHJVUklFTlZFTE9QRSA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKFVSSV9JRF9FTlZFTE9QRSk7CisJc191bmljb2RlU3RyVVJJQzE0Tl9OT0MgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShVUklfSURfQzE0Tl9OT0MpOworCXNfdW5pY29kZVN0clVSSUMxNE5fQ09NID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoVVJJX0lEX0MxNE5fQ09NKTsKKyAgICBzX3VuaWNvZGVTdHJVUklDMTROMTFfTk9DID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoVVJJX0lEX0MxNE4xMV9OT0MpOworICAgIHNfdW5pY29kZVN0clVSSUMxNE4xMV9DT00gPSBYTUxTdHJpbmc6OnRyYW5zY29kZShVUklfSURfQzE0TjExX0NPTSk7CisJc191bmljb2RlU3RyVVJJRVhDX0MxNE5fTk9DID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoVVJJX0lEX0VYQ19DMTROX05PQyk7CisJc191bmljb2RlU3RyVVJJRVhDX0MxNE5fQ09NID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoVVJJX0lEX0VYQ19DMTROX0NPTSk7CisKKwlzX3VuaWNvZGVTdHJVUklEU0FfU0hBMSA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKFVSSV9JRF9EU0FfU0hBMSk7CisgICAgc191bmljb2RlU3RyVVJJRFNBX1NIQTI1NiA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKFVSSV9JRF9EU0FfU0hBMjU2KTsKKworCXNfdW5pY29kZVN0clVSSVJTQV9NRDUgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShVUklfSURfUlNBX01ENSk7CisJc191bmljb2RlU3RyVVJJUlNBX1NIQTEgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShVUklfSURfUlNBX1NIQTEpOworCXNfdW5pY29kZVN0clVSSVJTQV9TSEEyMjQgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShVUklfSURfUlNBX1NIQTIyNCk7CisJc191bmljb2RlU3RyVVJJUlNBX1NIQTI1NiA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKFVSSV9JRF9SU0FfU0hBMjU2KTsKKwlzX3VuaWNvZGVTdHJVUklSU0FfU0hBMzg0ID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoVVJJX0lEX1JTQV9TSEEzODQpOworCXNfdW5pY29kZVN0clVSSVJTQV9TSEE1MTIgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShVUklfSURfUlNBX1NIQTUxMik7CisKKwlzX3VuaWNvZGVTdHJVUklFQ0RTQV9TSEExID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoVVJJX0lEX0VDRFNBX1NIQTEpOworCXNfdW5pY29kZVN0clVSSUVDRFNBX1NIQTI1NiA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKFVSSV9JRF9FQ0RTQV9TSEEyNTYpOworCXNfdW5pY29kZVN0clVSSUVDRFNBX1NIQTM4NCA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKFVSSV9JRF9FQ0RTQV9TSEEzODQpOworCXNfdW5pY29kZVN0clVSSUVDRFNBX1NIQTUxMiA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKFVSSV9JRF9FQ0RTQV9TSEE1MTIpOworCisJc191bmljb2RlU3RyVVJJSE1BQ19TSEExID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoVVJJX0lEX0hNQUNfU0hBMSk7CisJc191bmljb2RlU3RyVVJJSE1BQ19TSEEyMjQgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShVUklfSURfSE1BQ19TSEEyMjQpOworCXNfdW5pY29kZVN0clVSSUhNQUNfU0hBMjU2ID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoVVJJX0lEX0hNQUNfU0hBMjU2KTsKKwlzX3VuaWNvZGVTdHJVUklITUFDX1NIQTM4NCA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKFVSSV9JRF9ITUFDX1NIQTM4NCk7CisJc191bmljb2RlU3RyVVJJSE1BQ19TSEE1MTIgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShVUklfSURfSE1BQ19TSEE1MTIpOworCisJc191bmljb2RlU3RyVVJJWE1MTlMgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShVUklfSURfWE1MTlMpOworCXNfdW5pY29kZVN0clVSSU1BTklGRVNUID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoVVJJX0lEX01BTklGRVNUKTsKKworCXNfdW5pY29kZVN0clVSSTNERVNfQ0JDCT0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoVVJJX0lEXzNERVNfQ0JDKTsKKwlzX3VuaWNvZGVTdHJVUklBRVMxMjhfQ0JDCT0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoVVJJX0lEX0FFUzEyOF9DQkMpOworCXNfdW5pY29kZVN0clVSSUFFUzE5Ml9DQkMJPSBYTUxTdHJpbmc6OnRyYW5zY29kZShVUklfSURfQUVTMTkyX0NCQyk7CisJc191bmljb2RlU3RyVVJJQUVTMjU2X0NCQwk9IFhNTFN0cmluZzo6dHJhbnNjb2RlKFVSSV9JRF9BRVMyNTZfQ0JDKTsKKwlzX3VuaWNvZGVTdHJVUklLV19BRVMxMjggPSBYTUxTdHJpbmc6OnRyYW5zY29kZShVUklfSURfS1dfQUVTMTI4KTsKKwlzX3VuaWNvZGVTdHJVUklLV19BRVMxOTIgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShVUklfSURfS1dfQUVTMTkyKTsKKwlzX3VuaWNvZGVTdHJVUklLV19BRVMyNTYgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShVUklfSURfS1dfQUVTMjU2KTsKKwlzX3VuaWNvZGVTdHJVUklLV18zREVTID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoVVJJX0lEX0tXXzNERVMpOworCXNfdW5pY29kZVN0clVSSVJTQV8xXzUgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShVUklfSURfUlNBXzFfNSk7CisJc191bmljb2RlU3RyVVJJUlNBX09BRVBfTUdGUDEgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShVUklfSURfUlNBX09BRVBfTUdGUDEpOworCisJc191bmljb2RlU3RyVVJJWEVOQ19FTEVNRU5UID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoVVJJX0lEX1hFTkNfRUxFTUVOVCk7CisJc191bmljb2RlU3RyVVJJWEVOQ19DT05URU5UID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoVVJJX0lEX1hFTkNfQ09OVEVOVCk7CisKKwlzX3VuaWNvZGVTdHJQUk9WT3BlblNTTCA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKFBST1ZfT1BFTlNTTCk7CisJc191bmljb2RlU3RyUFJPVldpbkNBUEkgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShQUk9WX1dJTkNBUEkpOworICAgIHNfdW5pY29kZVN0clBST1ZOU1MgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShQUk9WX05TUyk7CisKK30KKwordm9pZCBEU0lHQ29uc3RhbnRzOjpkZXN0cm95KCkgeworCisJLy8gRGVsZXRlIHRoZSBzdGF0aWMgc3RyaW5ncworCVhTRUNfUkVMRUFTRV9YTUxDSChzX3VuaWNvZGVTdHJFbXB0eSk7CisJWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0ck5MKTsKKwlYU0VDX1JFTEVBU0VfWE1MQ0goc191bmljb2RlU3RyWG1sbnMpOworCVhTRUNfUkVMRUFTRV9YTUxDSChzX3VuaWNvZGVTdHJVUkkpOworCisJWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0ckFsZ29yaXRobSk7CisKKwlYU0VDX1JFTEVBU0VfWE1MQ0goc191bmljb2RlU3RyVVJJUmF3WDUwOSk7CisJWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0clVSSURTSUcpOworICAgIFhTRUNfUkVMRUFTRV9YTUxDSChzX3VuaWNvZGVTdHJVUklEU0lHMTEpOworCVhTRUNfUkVMRUFTRV9YTUxDSChzX3VuaWNvZGVTdHJVUklFQyk7CisJWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0clVSSVhQRik7CisJWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0clVSSVhFTkMpOworCisJWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0clVSSVNJR0JBU0UpOworCVhTRUNfUkVMRUFTRV9YTUxDSChzX3VuaWNvZGVTdHJVUklTSUdCQVNFTU9SRSk7CisgICAgWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0clVSSVNJR0JBU0UxMSk7CisKKwlYU0VDX1JFTEVBU0VfWE1MQ0goc191bmljb2RlU3RyVVJJU0hBMSk7CisJWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0clVSSVNIQTIyNCk7CisJWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0clVSSVNIQTI1Nik7CisJWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0clVSSVNIQTM4NCk7CisJWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0clVSSVNIQTUxMik7CisJWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0clVSSU1ENSk7CisJWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0clVSSUJBU0U2NCk7CisJWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0clVSSVhQQVRIKTsKKwlYU0VDX1JFTEVBU0VfWE1MQ0goc191bmljb2RlU3RyVVJJWFNMVCk7CisJWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0clVSSUVOVkVMT1BFKTsKKwlYU0VDX1JFTEVBU0VfWE1MQ0goc191bmljb2RlU3RyVVJJQzE0Tl9OT0MpOworCVhTRUNfUkVMRUFTRV9YTUxDSChzX3VuaWNvZGVTdHJVUklDMTROX0NPTSk7CisgICAgWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0clVSSUMxNE4xMV9OT0MpOworICAgIFhTRUNfUkVMRUFTRV9YTUxDSChzX3VuaWNvZGVTdHJVUklDMTROMTFfQ09NKTsKKwlYU0VDX1JFTEVBU0VfWE1MQ0goc191bmljb2RlU3RyVVJJRVhDX0MxNE5fTk9DKTsKKwlYU0VDX1JFTEVBU0VfWE1MQ0goc191bmljb2RlU3RyVVJJRVhDX0MxNE5fQ09NKTsKKwlYU0VDX1JFTEVBU0VfWE1MQ0goc191bmljb2RlU3RyVVJJRFNBX1NIQTEpOworICAgIFhTRUNfUkVMRUFTRV9YTUxDSChzX3VuaWNvZGVTdHJVUklEU0FfU0hBMjU2KTsKKwlYU0VDX1JFTEVBU0VfWE1MQ0goc191bmljb2RlU3RyVVJJUlNBX01ENSk7CisJWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0clVSSVJTQV9TSEExKTsKKwlYU0VDX1JFTEVBU0VfWE1MQ0goc191bmljb2RlU3RyVVJJUlNBX1NIQTIyNCk7CisJWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0clVSSVJTQV9TSEEyNTYpOworCVhTRUNfUkVMRUFTRV9YTUxDSChzX3VuaWNvZGVTdHJVUklSU0FfU0hBMzg0KTsKKwlYU0VDX1JFTEVBU0VfWE1MQ0goc191bmljb2RlU3RyVVJJUlNBX1NIQTUxMik7CisJWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0clVSSUVDRFNBX1NIQTEpOworCVhTRUNfUkVMRUFTRV9YTUxDSChzX3VuaWNvZGVTdHJVUklFQ0RTQV9TSEEyNTYpOworCVhTRUNfUkVMRUFTRV9YTUxDSChzX3VuaWNvZGVTdHJVUklFQ0RTQV9TSEEzODQpOworCVhTRUNfUkVMRUFTRV9YTUxDSChzX3VuaWNvZGVTdHJVUklFQ0RTQV9TSEE1MTIpOworCVhTRUNfUkVMRUFTRV9YTUxDSChzX3VuaWNvZGVTdHJVUklITUFDX1NIQTEpOworCVhTRUNfUkVMRUFTRV9YTUxDSChzX3VuaWNvZGVTdHJVUklITUFDX1NIQTIyNCk7CisJWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0clVSSUhNQUNfU0hBMjU2KTsKKwlYU0VDX1JFTEVBU0VfWE1MQ0goc191bmljb2RlU3RyVVJJSE1BQ19TSEEzODQpOworCVhTRUNfUkVMRUFTRV9YTUxDSChzX3VuaWNvZGVTdHJVUklITUFDX1NIQTUxMik7CisJWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0clVSSVhNTE5TKTsKKwlYU0VDX1JFTEVBU0VfWE1MQ0goc191bmljb2RlU3RyVVJJTUFOSUZFU1QpOworCisJWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0clVSSTNERVNfQ0JDKTsKKwlYU0VDX1JFTEVBU0VfWE1MQ0goc191bmljb2RlU3RyVVJJQUVTMTI4X0NCQyk7CisJWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0clVSSUFFUzE5Ml9DQkMpOworCVhTRUNfUkVMRUFTRV9YTUxDSChzX3VuaWNvZGVTdHJVUklBRVMyNTZfQ0JDKTsKKwlYU0VDX1JFTEVBU0VfWE1MQ0goc191bmljb2RlU3RyVVJJS1dfQUVTMTI4KTsKKwlYU0VDX1JFTEVBU0VfWE1MQ0goc191bmljb2RlU3RyVVJJS1dfQUVTMTkyKTsKKwlYU0VDX1JFTEVBU0VfWE1MQ0goc191bmljb2RlU3RyVVJJS1dfQUVTMjU2KTsKKwlYU0VDX1JFTEVBU0VfWE1MQ0goc191bmljb2RlU3RyVVJJS1dfM0RFUyk7CisJWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0clVSSVJTQV8xXzUpOworCVhTRUNfUkVMRUFTRV9YTUxDSChzX3VuaWNvZGVTdHJVUklSU0FfT0FFUF9NR0ZQMSk7CisJWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0clVSSVhFTkNfRUxFTUVOVCk7CisJWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0clVSSVhFTkNfQ09OVEVOVCk7CisKKwlYU0VDX1JFTEVBU0VfWE1MQ0goc191bmljb2RlU3RyUFJPVk9wZW5TU0wpOworCVhTRUNfUkVMRUFTRV9YTUxDSChzX3VuaWNvZGVTdHJQUk9WV2luQ0FQSSk7CisJWFNFQ19SRUxFQVNFX1hNTENIKHNfdW5pY29kZVN0clBST1ZOU1MpOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCVVSSSBNYXBwaW5ncworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYm9vbCBnZXRIYXNoTWV0aG9kKGNvbnN0IFhNTENoICogVVJJLCBoYXNoTWV0aG9kICYgaG0pIHsKKworCWlmIChzdHJFcXVhbHMoVVJJLCBzX21kNSkpIHsKKworCQlobSA9IEhBU0hfTUQ1OworCQlyZXR1cm4gdHJ1ZTsKKworCX0KKworCWlmIChzdHJFcXVhbHMoVVJJLCBzX3NoYTEpKSB7CisKKwkJaG0gPSBIQVNIX1NIQTE7CisJCXJldHVybiB0cnVlOworCX0KKworCWlmIChzdHJFcXVhbHMoVVJJLCBzX3NoYTIyNCkpIHsKKworCQlobSA9IEhBU0hfU0hBMjI0OworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlpZiAoc3RyRXF1YWxzKFVSSSwgc19zaGEyNTYpKSB7CisKKwkJaG0gPSBIQVNIX1NIQTI1NjsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJaWYgKHN0ckVxdWFscyhVUkksIHNfc2hhMzg0KSkgeworCisJCWhtID0gSEFTSF9TSEEzODQ7CisJCXJldHVybiB0cnVlOworCX0KKworCWlmIChzdHJFcXVhbHMoVVJJLCBzX3NoYTUxMikpIHsKKworCQlobSA9IEhBU0hfU0hBNTEyOworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlobSA9IEhBU0hfTk9ORTsKKwlyZXR1cm4gZmFsc2U7CisKK30KKworYm9vbCBYU0VDbWFwVVJJVG9TaWduYXR1cmVNZXRob2RzKGNvbnN0IFhNTENoICogVVJJLAorCQkJCQkJCQkgIHNpZ25hdHVyZU1ldGhvZCAmIHNtLAorCQkJCQkJCQkgIGhhc2hNZXRob2QgJiBobSkgeworCisKKwkvLyBUaGUgZWFzeSBvbmVzIQorCisJaWYgKHN0ckVxdWFscyhVUkksIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSURTQV9TSEExKSkgeworCisJCXNtID0gU0lHTkFUVVJFX0RTQTsKKwkJaG0gPSBIQVNIX1NIQTE7CisKKwkJcmV0dXJuIHRydWU7CisKKwl9CisKKwlpZiAoc3RyRXF1YWxzKFVSSSwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJUlNBX1NIQTEpKSB7CisKKwkJc20gPSBTSUdOQVRVUkVfUlNBOworCQlobSA9IEhBU0hfU0hBMTsKKworCQlyZXR1cm4gdHJ1ZTsKKworCX0KKworCWlmIChzdHJFcXVhbHMoVVJJLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklITUFDX1NIQTEpKSB7CisKKwkJc20gPSBTSUdOQVRVUkVfSE1BQzsKKwkJaG0gPSBIQVNIX1NIQTE7CisKKwkJcmV0dXJuIHRydWU7CisKKwl9CisKKwkvKiBDaGVjayB0byBzZWUgaWYgd2UgYXJlIG9uZSBvZiB0aGUgbW9yZSBleG90aWMgUlNBIHNpZ25hdHVyZXMgKi8KKwl4c2Vjc2l6ZV90IGNudCA9IFhNTFN0cmluZzo6c3RyaW5nTGVuKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVNJR0JBU0VNT1JFKTsKKworCWlmIChYTUxTdHJpbmc6OmNvbXBhcmVOU3RyaW5nKFVSSSwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJU0lHQkFTRU1PUkUsIGNudCkgPT0gMCkgeworCisJCS8vIEhhdmUgYSAibmV3IiBhbGdvcml0aG0KKwkJaWYgKFhNTFN0cmluZzo6Y29tcGFyZU5TdHJpbmcoJlVSSVtjbnRdLCBzX2htYWMsIDQpID09IDApIHsKKworCQkJLy8gU29tZSBraW5kIG9mIEhNQUMKKwkJCXNtID0gU0lHTkFUVVJFX0hNQUM7CisKKwkJCS8vIERldGVybWluZSBhIHRyYWlsaW5nIGhhc2ggbWV0aG9kCisJCQlpZiAoVVJJW2NudCs0XSAhPSBjaERhc2gpCisJCQkJcmV0dXJuIGZhbHNlOworCQkJcmV0dXJuIGdldEhhc2hNZXRob2QoJihVUklbY250KzVdKSwgaG0pOworCisJCX0KKwkJZWxzZSBpZiAoWE1MU3RyaW5nOjpjb21wYXJlTlN0cmluZygmVVJJW2NudF0sIHNfcnNhLCAzKSA9PSAwKSB7CisKKwkJCXNtID0gU0lHTkFUVVJFX1JTQTsKKwkJCWlmIChVUklbY250KzNdICE9IGNoRGFzaCkKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQlyZXR1cm4gZ2V0SGFzaE1ldGhvZCgmKFVSSVtjbnQrNF0pLCBobSk7CisJCX0KKwkJZWxzZSBpZiAoWE1MU3RyaW5nOjpjb21wYXJlTlN0cmluZygmVVJJW2NudF0sIHNfZWNkc2EsIDUpID09IDApIHsKKworCQkJc20gPSBTSUdOQVRVUkVfRUNEU0E7CisJCQlpZiAoVVJJW2NudCs1XSAhPSBjaERhc2gpCisJCQkJcmV0dXJuIGZhbHNlOworCQkJcmV0dXJuIGdldEhhc2hNZXRob2QoJihVUklbY250KzZdKSwgaG0pOworCQl9CisKKwl9CisKKyAgICBjbnQgPSBYTUxTdHJpbmc6OnN0cmluZ0xlbihEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklTSUdCQVNFMTEpOworCisgICAgaWYgKFhNTFN0cmluZzo6Y29tcGFyZU5TdHJpbmcoVVJJLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklTSUdCQVNFMTEsIGNudCkgPT0gMCkgeworCisgICAgICAgIGlmIChYTUxTdHJpbmc6OmNvbXBhcmVOU3RyaW5nKCZVUklbY250XSwgc19kc2EsIDMpID09IDApIHsKKworICAgICAgICAgICAgc20gPSBTSUdOQVRVUkVfRFNBOworICAgICAgICAgICAgaWYgKFVSSVtjbnQrM10gIT0gY2hEYXNoKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBnZXRIYXNoTWV0aG9kKCYoVVJJW2NudCs0XSksIGhtKTsKKyAgICAgICAgfQorCisgICAgfQorCisJc20gPSBTSUdOQVRVUkVfTk9ORTsKKwlobSA9IEhBU0hfTk9ORTsKKwlyZXR1cm4gZmFsc2U7CisKK30KKworYm9vbCBYU0VDbWFwVVJJVG9IYXNoTWV0aG9kKGNvbnN0IFhNTENoICogVVJJLAorCQkJCQkJCWhhc2hNZXRob2QgJiBobSkgeworCisKKwkvLyBDaGVjayB0aGlzIGlzIGEga25vd24gcHJlZml4IG9uIHRoZSBVUkkuCisJeHNlY3NpemVfdCBibGVuID0gWE1MU3RyaW5nOjpzdHJpbmdMZW4oRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJU0lHQkFTRSk7CisJeHNlY3NpemVfdCBibWxlbiA9IFhNTFN0cmluZzo6c3RyaW5nTGVuKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVNJR0JBU0VNT1JFKTsKKwl4c2Vjc2l6ZV90IGJlbGVuID0gWE1MU3RyaW5nOjpzdHJpbmdMZW4oRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWEVOQyk7CisJaWYgKFhNTFN0cmluZzo6Y29tcGFyZU5TdHJpbmcoVVJJLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklTSUdCQVNFLCBibGVuKSA9PSAwKSB7CisKKwkJLy8gVGhpcyBpcyBhY3R1YWxseSBjaGVhdGluZyAtIHRoaXMgd2lsbCByZXR1cm4gU0hBMjU2IChhcyBhbiBleGFtcGxlKSwgZXZlbiBpZgorCQkvLyB0aGUgYmFzZSBVUkkgaXMgdGhlIG9yaWdpbmFsIERTSUcgdXJpIChpZSBub3QgYmFzZS1tb3JlKQorCQlyZXR1cm4gZ2V0SGFzaE1ldGhvZCgmVVJJW2JsZW5dLCBobSk7CisKKwl9CisKKwlpZiAoWE1MU3RyaW5nOjpjb21wYXJlTlN0cmluZyhVUkksIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVNJR0JBU0VNT1JFLCBibWxlbikgPT0gMCkgeworCisJCXJldHVybiBnZXRIYXNoTWV0aG9kKCZVUklbYm1sZW5dLCBobSk7CisKKwl9CisKKwlpZiAoWE1MU3RyaW5nOjpjb21wYXJlTlN0cmluZyhVUkksIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhFTkMsIGJlbGVuKSA9PSAwKSB7CisKKwkJcmV0dXJuIGdldEhhc2hNZXRob2QoJlVSSVtiZWxlbl0sIGhtKTsKKworCX0KKworCWhtID0gSEFTSF9OT05FOworCXJldHVybiBmYWxzZTsKKworfQorCitib29sIFhTRUNtYXBVUklUb0Nhbm9uaWNhbGl6YXRpb25NZXRob2QoY29uc3QgWE1MQ2ggKiBVUkksCisJCQkJCQkJY2Fub25pY2FsaXphdGlvbk1ldGhvZCAmIGNtKSB7CisKKwkvLyBRdWljayBhbmQgZGlydHkgYnV0IGluZWZmaWNpZW50CisJaWYgKHN0ckVxdWFscyhVUkksIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUMxNE5fTk9DKSkgeworCQljbSA9IENBTk9OX0MxNE5fTk9DOworCX0KKwllbHNlIGlmIChzdHJFcXVhbHMoVVJJLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklDMTROX0NPTSkpIHsKKwkJY20gPSBDQU5PTl9DMTROX0NPTTsKKwl9CisKKwllbHNlIGlmIChzdHJFcXVhbHMoVVJJLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklFWENfQzE0Tl9DT00pKSB7CisJCWNtID0gQ0FOT05fQzE0TkVfQ09NOworCX0KKworCWVsc2UgaWYgKHN0ckVxdWFscyhVUkksIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUVYQ19DMTROX05PQykpIHsKKwkJY20gPSBDQU5PTl9DMTRORV9OT0M7CisJfQorCWVsc2UgaWYgKHN0ckVxdWFscyhVUkksIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUMxNE4xMV9OT0MpKSB7CisgICAgICAgIGNtID0gQ0FOT05fQzE0TjExX05PQzsKKyAgICB9CisgICAgZWxzZSBpZiAoc3RyRXF1YWxzKFVSSSwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJQzE0TjExX0NPTSkpIHsKKyAgICAgICAgY20gPSBDQU5PTl9DMTROMTFfQ09NOworICAgIH0KKworCWVsc2UgeworCisJCS8vIFVua25vd24KKwkJY20gPSBDQU5PTl9OT05FOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CmRpZmYgLS1naXQgYS9jL3NyYy9kc2lnL0RTSUdDb25zdGFudHMuaHBwIGIvYy9zcmMvZHNpZy9EU0lHQ29uc3RhbnRzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2ZlMGRiCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZHNpZy9EU0lHQ29uc3RhbnRzLmhwcApAQCAtMCwwICsxLDYwMCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogRFNJR0NvbnN0YW50cyA6PSBEZWZpbml0aW9ucyBvZiB2YXJpdXMgRFNJRyBjb25zdGFudHMgKG1haW5seSBzdHJpbmdzKQorICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBEU0lHQ09OU1RBTlRTX0hFQURFUgorI2RlZmluZSBEU0lHQ09OU1RBTlRTX0hFQURFUgorCisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDU2FmZUJ1ZmZlci5ocHA+CisKKy8vIFhlcmNlcworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxTdHJpbmcuaHBwPgorCitYU0VDX1VTSU5HX1hFUkNFUyhYTUxTdHJpbmcpOworCisvLyBOYW1lIFNwYWNlcworCisjZGVmaW5lIFVSSV9JRF9EU0lHCQkiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKKyNkZWZpbmUgVVJJX0lEX0RTSUcxMQkiaHR0cDovL3d3dy53My5vcmcvMjAwOS94bWxkc2lnMTEjIgorI2RlZmluZSBVUklfSURfRUMJCSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiCisvLyBBbHNvIHVzZWQgYXMgYWxnb3JpdGhtIElEIGZvciBYUEFUSF9GSUxURVIKKyNkZWZpbmUgVVJJX0lEX1hQRgkJImh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDYveG1sZHNpZy1maWx0ZXIyIgorI2RlZmluZSBVUklfSURfWEVOQwkJImh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIKKworLy8gSGFzaGluZyBBbGdvcml0aG1zCisKKyNkZWZpbmUgVVJJX0lEX1NIQTEJCQkiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiCisjZGVmaW5lIFVSSV9JRF9NRDUJCQkiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjbWQ1IgorI2RlZmluZSBVUklfSURfU0hBMjI0ICAgICAgICJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNzaGEyMjQiCisjZGVmaW5lIFVSSV9JRF9TSEEyNTYgICAgICAgImh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIKKyNkZWZpbmUgVVJJX0lEX1NIQTM4NCAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjc2hhMzg0IgorI2RlZmluZSBVUklfSURfU0hBNTEyICAgICAgICJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGE1MTIiCisKKy8vIEVuY3J5cHRpb24gQWxnb3JpdGhtcworI2RlZmluZSBVUklfSURfM0RFU19DQkMJCSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyN0cmlwbGVkZXMtY2JjIgorI2RlZmluZSBVUklfSURfQUVTMTI4X0NCQwkiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjYWVzMTI4LWNiYyIKKyNkZWZpbmUgVVJJX0lEX0FFUzE5Ml9DQkMJImh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczE5Mi1jYmMiCisjZGVmaW5lIFVSSV9JRF9BRVMyNTZfQ0JDCSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNhZXMyNTYtY2JjIgorCisvLyBLZXkgV3JhcCBBbGdvcml0aG0KKyNkZWZpbmUgVVJJX0lEX0tXX0FFUzEyOAkiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMja3ctYWVzMTI4IgorI2RlZmluZSBVUklfSURfS1dfQUVTMTkyCSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNrdy1hZXMxOTIiCisjZGVmaW5lIFVSSV9JRF9LV19BRVMyNTYJImh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2t3LWFlczI1NiIKKyNkZWZpbmUgVVJJX0lEX0tXXzNERVMJCSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNrdy10cmlwbGVkZXMiCisKKy8vIEtleSBUcmFuc3BvcnQgYWxnb3JpdGhtcworI2RlZmluZSBVUklfSURfUlNBXzFfNQkJCSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNyc2EtMV81IgorI2RlZmluZSBVUklfSURfUlNBX09BRVBfTUdGUDEJImh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3JzYS1vYWVwLW1nZjFwIgorCisvLyBUcmFuc2Zvcm1zCisKKyNkZWZpbmUgVVJJX0lEX0JBU0U2NAkJCSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjYmFzZTY0IgorI2RlZmluZSBVUklfSURfWFBBVEgJCQkiaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiCisjZGVmaW5lIFVSSV9JRF9YU0xUCQkJCSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14c2x0LTE5OTkxMTE2IgorI2RlZmluZSBVUklfSURfRU5WRUxPUEUJCQkiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiCisjZGVmaW5lIFVSSV9JRF9DMTROX05PQwkJCSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIKKyNkZWZpbmUgVVJJX0lEX0MxNE5fQ09NCQkJImh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1I1dpdGhDb21tZW50cyIKKyNkZWZpbmUgVVJJX0lEX0MxNE4xMV9OT0MgICAgICAgImh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIKKyNkZWZpbmUgVVJJX0lEX0MxNE4xMV9DT00gICAgICAgImh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiCisjZGVmaW5lIFVSSV9JRF9FWENfQzE0Tl9OT0MJCSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiCisjZGVmaW5lIFVSSV9JRF9FWENfQzE0Tl9DT00JCSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biNXaXRoQ29tbWVudHMiCisjZGVmaW5lIFhQQVRIX0VYUFJfRU5WRUxPUEUJCSJjb3VudChhbmNlc3Rvci1vci1zZWxmOjpkc2lnOlNpZ25hdHVyZSB8IFwKKwkJCQkJCQkJIGhlcmUoKS9hbmNlc3Rvcjo6ZHNpZzpTaWduYXR1cmVbMV0pID4gXAorCQkJCQkJCQkgY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6ZHNpZzpTaWduYXR1cmUpIgorCisvLyBTaWduYXR1cmUgQWxnb3JpdGhtcworCisjZGVmaW5lIFVSSV9JRF9TSUdfQkFTRQkJImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiCisjZGVmaW5lIFVSSV9JRF9TSUdfQkFTRU1PUkUJImh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlIyIKKyNkZWZpbmUgVVJJX0lEX1NJR19CQVNFMTEJImh0dHA6Ly93d3cudzMub3JnLzIwMDkveG1sZHNpZzExIyIKKyNkZWZpbmUgVVJJX0lEX1NJR19EU0EJCSJkc2EiCisjZGVmaW5lIFVSSV9JRF9TSUdfRUNEU0EJImVjZHNhIgorI2RlZmluZSBVUklfSURfU0lHX0hNQUMJCSJobWFjIgorI2RlZmluZSBVUklfSURfU0lHX1NIQTEJCSJzaGExIgorI2RlZmluZSBVUklfSURfU0lHX1NIQTIyNAkic2hhMjI0IgorI2RlZmluZSBVUklfSURfU0lHX1NIQTI1Ngkic2hhMjU2IgorI2RlZmluZSBVUklfSURfU0lHX1NIQTM4NAkic2hhMzg0IgorI2RlZmluZSBVUklfSURfU0lHX1NIQTUxMgkic2hhNTEyIgorI2RlZmluZSBVUklfSURfU0lHX1JTQQkJInJzYSIKKyNkZWZpbmUgVVJJX0lEX1NJR19NRDUJCSJtZDUiCisKKyNkZWZpbmUgVVJJX0lEX0RTQV9TSEExCQkiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIgorI2RlZmluZSBVUklfSURfRFNBX1NIQTI1NgkiaHR0cDovL3d3dy53My5vcmcvMjAwOS94bWxkc2lnMTEjZHNhLXNoYTI1NiIKKyNkZWZpbmUgVVJJX0lEX0hNQUNfU0hBMQkiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIKKyNkZWZpbmUgVVJJX0lEX0hNQUNfU0hBMjI0CSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTIyNCIKKyNkZWZpbmUgVVJJX0lEX0hNQUNfU0hBMjU2CSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTI1NiIKKyNkZWZpbmUgVVJJX0lEX0hNQUNfU0hBMzg0CSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTM4NCIKKyNkZWZpbmUgVVJJX0lEX0hNQUNfU0hBNTEyCSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTUxMiIKKyNkZWZpbmUgVVJJX0lEX1JTQV9TSEExCQkiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIgorI2RlZmluZSBVUklfSURfUlNBX1NIQTIyNAkiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTIyNCIKKyNkZWZpbmUgVVJJX0lEX1JTQV9TSEEyNTYJImh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiCisjZGVmaW5lIFVSSV9JRF9SU0FfU0hBMzg0CSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMzg0IgorI2RlZmluZSBVUklfSURfUlNBX1NIQTUxMgkiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTUxMiIKKyNkZWZpbmUgVVJJX0lEX1JTQV9NRDUJCSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2EtbWQ1IgorI2RlZmluZSBVUklfSURfRUNEU0FfU0hBMQkiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjZWNkc2Etc2hhMSIKKyNkZWZpbmUgVVJJX0lEX0VDRFNBX1NIQTI1NgkiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjZWNkc2Etc2hhMjU2IgorI2RlZmluZSBVUklfSURfRUNEU0FfU0hBMzg0CSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNlY2RzYS1zaGEzODQiCisjZGVmaW5lIFVSSV9JRF9FQ0RTQV9TSEE1MTIJImh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTUxMiIKKworLy8gRW5jcnlwdGlvbiBkZWZpbmVzCisjZGVmaW5lIFVSSV9JRF9YRU5DX0VMRU1FTlQJImh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI0VsZW1lbnQiCisjZGVmaW5lIFVSSV9JRF9YRU5DX0NPTlRFTlQJImh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI0NvbnRlbnQiCisKKy8vIEdlbmVyYWwKKworI2RlZmluZSBVUklfSURfWE1MTlMJImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIgorI2RlZmluZSBVUklfSURfTUFOSUZFU1QgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNNYW5pZmVzdCIKKyNkZWZpbmUgVVJJX0lEX1JBV1g1MDkgICJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcmF3WDUwOUNlcnRpZmljYXRlIgorCisvLyBJbnRlcm5hbCBDcnlwdG8gUHJvdmlkZXJzCisKKyNkZWZpbmUgUFJPVl9PUEVOU1NMCSJPcGVuU1NMIFByb3ZpZGVyIgorI2RlZmluZSBQUk9WX1dJTkNBUEkJIldpbkNBUEkgUHJvdmlkZXIiCisjZGVmaW5lIFBST1ZfTlNTCSAgICAiTlNTIFByb3ZpZGVyIgorCisvLyBFbnVtZXJhdGVkIFR5cGVzCisKK2VudW0gY2Fub25pY2FsaXphdGlvbk1ldGhvZCB7CisKKwlDQU5PTl9OT05FCQkJCQk9IDAsCQkJLy8gTm8gbWV0aG9kIGRlZmluZWQKKwlDQU5PTl9DMTROX05PQwkJCQk9IDEsCQkJLy8gQzE0biB3aXRob3V0IGNvbW1lbnRzCisJQ0FOT05fQzE0Tl9DT00JCQkJPSAyLCAJCQkvLyBDMTRuIHdpdGggY29tbWVudHMKKwlDQU5PTl9DMTRORV9OT0MJCQkJPSAzLAkJCS8vIEMxNG4gRXhjbHVzaXZlICh3aXRob3V0IGNvbW1lbnRzKQorCUNBTk9OX0MxNE5FX0NPTQkJCQk9IDQsCQkJLy8gQzE0biBFeGx1c2l2ZSAod2l0aCBDb21tZW50cworCUNBTk9OX0MxNE4xMV9OT0MgICAgICAgICAgICA9IDUsICAgICAgICAgICAgLy8gQzE0biAxLjEgd2l0aG91dCBjb21tZW50cworCUNBTk9OX0MxNE4xMV9DT00gICAgICAgICAgICA9IDYgICAgICAgICAgICAgLy8gQzE0biAxLjEgd2l0aCBjb21tZW50cworfTsKKworZW51bSBzaWduYXR1cmVNZXRob2QgeworCisJU0lHTkFUVVJFX05PTkUJCQkJPSAwLAkJCS8vIE5vIG1ldGhvZCBkZWZpbmVkCisJU0lHTkFUVVJFX0RTQQkJCQk9IDEsIAkJCS8vIERTQQorCVNJR05BVFVSRV9ITUFDCQkJCT0gMiwJCQkvLyBIYXNoIE1BQworCVNJR05BVFVSRV9SU0EJCQkJPSAzLAkJCS8vIFJTQQorCVNJR05BVFVSRV9FQ0RTQQkJCQk9IDQJCQkJLy8gRUNEU0EKK307CisKKworZW51bSBoYXNoTWV0aG9kIHsKKworCUhBU0hfTk9ORQkJCQkJPSAwLAkJCS8vIE5vIG1ldGhvZCBkZWZpbmVkCisJSEFTSF9TSEExCQkJCQk9IDEsIAkJCS8vIFNIQTEKKwlIQVNIX01ENQkJCQkJPSAyLAorCUhBU0hfU0hBMjI0CQkJCQk9IDMsCisJSEFTSF9TSEEyNTYJCQkJCT0gNCwKKwlIQVNIX1NIQTM4NAkJCQkJPSA1LAorCUhBU0hfU0hBNTEyCQkJCQk9IDYKK307CisKK2VudW0gdHJhbnNmb3JtVHlwZSB7CisKKwlUUkFOU0ZPUk1fQkFTRTY0LAorCVRSQU5TRk9STV9DMTROLAorICAgIFRSQU5TRk9STV9DMTROMTEsCisJVFJBTlNGT1JNX0VYQ19DMTROLAorCVRSQU5TRk9STV9FTlZFTE9QRURfU0lHTkFUVVJFLAorCVRSQU5TRk9STV9YUEFUSCwKKwlUUkFOU0ZPUk1fWFNMVCwKKwlUUkFOU0ZPUk1fWFBBVEhfRklMVEVSCit9OworCitlbnVtIHhwYXRoRmlsdGVyVHlwZSB7CisKKwlGSUxURVJfVU5JT04JCQk9IDAsCS8qKiBSZXN1bHRzIHNob3VsZCBiZSBhZGRlZCB0byBwcmV2aW91cyBub2Rlc2V0ICovCisJRklMVEVSX0lOVEVSU0VDVAkJPSAxLAkvKiogUmVzdWx0cyBzaG91bGQgYmUgaW5jbHVkZWQgaWYgaW4gcHJldiBub2Rlc2V0ICovCisJRklMVEVSX1NVQlRSQUNUCQkJPSAyCQkvKiogUmVzdWx0cyBzaG91bGQgYmUgc3VidHJhY3RlZCBmcm9tIHByZXYgbm9kZXNldCAqLworCit9OworCitlbnVtIGVuY3J5cHRpb25NZXRob2QgeworCisJRU5DUllQVF9OT05FCQkJPSAwLAkJCQkvLyBObyBtZXRob2QgZGVmaW5lZAorCUVOQ1JZUFRfM0RFU19DQkMJCT0gMSwJCQkJLy8gVXNlIDNERVMKKwlFTkNSWVBUX0FFUzEyOF9DQkMJCT0gMiwJCQkJLy8gMTI4IGJpdCBBRVMgaW4gQ0JDIG1vZGUKKwlFTkNSWVBUX0FFUzE5Ml9DQkMJCT0gMywJCQkJLy8gMTkyIGJpdCBBRVMgaW4gQ0JDIG1vZGUKKwlFTkNSWVBUX0FFUzI1Nl9DQkMJCT0gNCwJCQkJLy8gMjU2IGJpdCBBRVMgaW4gQ0JDIG1vZGUKKwlFTkNSWVBUX0tXX0FFUzEyOAkJPSA1LAkJCQkvLyBLZXlXcmFwIC0gQUVTMTI4CisJRU5DUllQVF9LV19BRVMxOTIJCT0gNiwJCQkJLy8gS2V5V3JhcCAtIEFFUzE5MgorCUVOQ1JZUFRfS1dfQUVTMjU2CQk9IDcsCQkJCS8vIEtleVdyYXAgLSBBRVMyNTYKKwlFTkNSWVBUX0tXXzNERVMJCQk9IDgsCisJRU5DUllQVF9SU0FfMTUJCQk9IDksCQkJCS8vIFJTQSB3aXRoIFBLQ1MgMS41IHBhZGRpbmcKKwlFTkNSWVBUX1JTQV9PQUVQX01HRlAxCT0gMTAJCQkJLy8gUlNBIHdpdGggT0FFUAorCit9OworCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU29tZSB1dGlsaXR5IGZ1bmN0aW9ucworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaW5saW5lCitib29sIGNhbm9uaWNhbGl6YXRpb25NZXRob2QyVVJJKHNhZmVCdWZmZXIgJnVyaSwgY2Fub25pY2FsaXphdGlvbk1ldGhvZCBjbSkgeworCisJc3dpdGNoIChjbSkgeworCisJY2FzZSAoQ0FOT05fQzE0Tl9OT0MpIDoKKworCQl1cmkgPSBVUklfSURfQzE0Tl9OT0M7CisJCWJyZWFrOworCisJY2FzZSAoQ0FOT05fQzE0Tl9DT00pIDoKKworCQl1cmkgPSBVUklfSURfQzE0Tl9DT007CisJCWJyZWFrOworCisJY2FzZSAoQ0FOT05fQzE0TkVfTk9DKSA6CisKKwkJdXJpID0gVVJJX0lEX0VYQ19DMTROX05PQzsKKwkJYnJlYWs7CisKKwljYXNlIChDQU5PTl9DMTRORV9DT00pIDoKKworCQl1cmkgPSBVUklfSURfRVhDX0MxNE5fQ09NOworCQlicmVhazsKKworICAgIGNhc2UgKENBTk9OX0MxNE4xMV9OT0MpIDoKKworICAgICAgICB1cmkgPSBVUklfSURfQzE0TjExX05PQzsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIChDQU5PTl9DMTROMTFfQ09NKSA6CisKKyAgICAgICAgdXJpID0gVVJJX0lEX0MxNE4xMV9DT007CisgICAgICAgIGJyZWFrOworCisJZGVmYXVsdCA6CisJCXJldHVybiBmYWxzZTsJCS8vIFVua25vd24gdHlwZQorCisJfQorCisJcmV0dXJuIHRydWU7CisKK30KKworaW5saW5lCitib29sIHNpZ25hdHVyZUhhc2hNZXRob2QyVVJJKHNhZmVCdWZmZXIgJnVyaSwgc2lnbmF0dXJlTWV0aG9kIHNtLCBoYXNoTWV0aG9kIGhtKSB7CisKKwlpZiAoaG0gPCBIQVNIX01ENSAmJiBzbSAhPSBTSUdOQVRVUkVfRUNEU0EpCisJCXVyaSA9IFVSSV9JRF9TSUdfQkFTRTsKKyAgICBlbHNlIGlmIChobSA9PSBIQVNIX1NIQTI1NiAmJiBzbSA9PSBTSUdOQVRVUkVfRFNBKQorICAgICAgICB1cmkgPSBVUklfSURfU0lHX0JBU0UxMTsKKwllbHNlCisJCXVyaSA9IFVSSV9JRF9TSUdfQkFTRU1PUkU7CisKKwlzd2l0Y2ggKHNtKSB7CisKKwljYXNlIChTSUdOQVRVUkVfRFNBKSA6CisKKwkJdXJpLnNiU3RyY2F0SW4oVVJJX0lEX1NJR19EU0EpOworCQlicmVhazsKKworCWNhc2UgKFNJR05BVFVSRV9ITUFDKSA6CisKKwkJdXJpLnNiU3RyY2F0SW4oVVJJX0lEX1NJR19ITUFDKTsKKwkJYnJlYWs7CisKKwljYXNlIChTSUdOQVRVUkVfUlNBKSA6CisKKwkJdXJpLnNiU3RyY2F0SW4oVVJJX0lEX1NJR19SU0EpOworCQlicmVhazsKKworCWNhc2UgKFNJR05BVFVSRV9FQ0RTQSkgOgorCisJCXVyaS5zYlN0cmNhdEluKFVSSV9JRF9TSUdfRUNEU0EpOworCQlicmVhazsKKworCWRlZmF1bHQgOgorCisJCXJldHVybiBmYWxzZTsKKworCX0KKworCXVyaS5zYlN0cmNhdEluKCItIik7CisKKwlzd2l0Y2ggKGhtKSB7CisKKwljYXNlIChIQVNIX1NIQTEpIDoKKworCQl1cmkuc2JTdHJjYXRJbihVUklfSURfU0lHX1NIQTEpOworCQlicmVhazsKKworCWNhc2UgKEhBU0hfTUQ1KSA6CisKKwkJdXJpLnNiU3RyY2F0SW4oVVJJX0lEX1NJR19NRDUpOworCQlicmVhazsKKworCWNhc2UgKEhBU0hfU0hBMjI0KSA6CisKKwkJdXJpLnNiU3RyY2F0SW4oVVJJX0lEX1NJR19TSEEyMjQpOworCQlicmVhazsKKworCWNhc2UgKEhBU0hfU0hBMjU2KSA6CisKKwkJdXJpLnNiU3RyY2F0SW4oVVJJX0lEX1NJR19TSEEyNTYpOworCQlicmVhazsKKworCWNhc2UgKEhBU0hfU0hBMzg0KSA6CisKKwkJdXJpLnNiU3RyY2F0SW4oVVJJX0lEX1NJR19TSEEzODQpOworCQlicmVhazsKKworCWNhc2UgKEhBU0hfU0hBNTEyKSA6CisKKwkJdXJpLnNiU3RyY2F0SW4oVVJJX0lEX1NJR19TSEE1MTIpOworCQlicmVhazsKKworCWRlZmF1bHQ6CisKKwkJcmV0dXJuIGZhbHNlOworCisJfQorCisJcmV0dXJuIHRydWU7CisKK30KKworaW5saW5lCitib29sIGhhc2hNZXRob2QyVVJJKHNhZmVCdWZmZXIgJnVyaSwgaGFzaE1ldGhvZCBobSkgeworCisJc3dpdGNoIChobSkgeworCisJY2FzZSAoSEFTSF9TSEExKSA6CisKKwkJdXJpID0gVVJJX0lEX1NIQTE7CisJCWJyZWFrOworCisJY2FzZSAoSEFTSF9NRDUpIDoKKworCQl1cmkgPSBVUklfSURfTUQ1OworCQlicmVhazsKKworCWNhc2UgKEhBU0hfU0hBMjI0KSA6CisKKwkJdXJpID0gVVJJX0lEX1NIQTIyNDsKKwkJYnJlYWs7CisKKwljYXNlIChIQVNIX1NIQTI1NikgOgorCisJCXVyaSA9IFVSSV9JRF9TSEEyNTY7CisJCWJyZWFrOworCisJY2FzZSAoSEFTSF9TSEEzODQpIDoKKworCQl1cmkgPSBVUklfSURfU0hBMzg0OworCQlicmVhazsKKworCWNhc2UgKEhBU0hfU0hBNTEyKSA6CisKKwkJdXJpID0gVVJJX0lEX1NIQTUxMjsKKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQlyZXR1cm4gZmFsc2U7CisKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKKworfQorCitpbmxpbmUKK2Jvb2wgZW5jcnlwdGlvbk1ldGhvZDJVUkkoc2FmZUJ1ZmZlciAmdXJpLCBlbmNyeXB0aW9uTWV0aG9kIGVtKSB7CisKKwlzd2l0Y2ggKGVtKSB7CisKKwljYXNlIChFTkNSWVBUXzNERVNfQ0JDKSA6CisKKwkJdXJpID0gVVJJX0lEXzNERVNfQ0JDOworCQlicmVhazsKKworCWNhc2UgKEVOQ1JZUFRfQUVTMTI4X0NCQykgOgorCisJCXVyaSA9IFVSSV9JRF9BRVMxMjhfQ0JDOworCQlicmVhazsKKworCWNhc2UgKEVOQ1JZUFRfQUVTMTkyX0NCQykgOgorCisJCXVyaSA9IFVSSV9JRF9BRVMxOTJfQ0JDOworCQlicmVhazsKKworCWNhc2UgKEVOQ1JZUFRfQUVTMjU2X0NCQykgOgorCisJCXVyaSA9IFVSSV9JRF9BRVMyNTZfQ0JDOworCQlicmVhazsKKworCWNhc2UgKEVOQ1JZUFRfS1dfQUVTMTI4KSA6CisKKwkJdXJpID0gVVJJX0lEX0tXX0FFUzEyODsKKwkJYnJlYWs7CisKKwljYXNlIChFTkNSWVBUX0tXX0FFUzE5MikgOgorCisJCXVyaSA9IFVSSV9JRF9LV19BRVMxOTI7CisJCWJyZWFrOworCisJY2FzZSAoRU5DUllQVF9LV19BRVMyNTYpIDoKKworCQl1cmkgPSBVUklfSURfS1dfQUVTMjU2OworCQlicmVhazsKKworCWNhc2UgKEVOQ1JZUFRfS1dfM0RFUykgOgorCisJCXVyaSA9IFVSSV9JRF9LV18zREVTOworCQlicmVhazsKKworCWNhc2UgKEVOQ1JZUFRfUlNBXzE1KSA6CisKKwkJdXJpID0gVVJJX0lEX1JTQV8xXzU7CisJCWJyZWFrOworCisJY2FzZSAoRU5DUllQVF9SU0FfT0FFUF9NR0ZQMSkgOgorCisJCXVyaSA9IFVSSV9JRF9SU0FfT0FFUF9NR0ZQMTsKKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCisJCXJldHVybiBmYWxzZTsKKworCX0KKworCXJldHVybiB0cnVlOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ29uc3RhbnQgU3RyaW5ncyBDbGFzcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgRFNJR19FWFBPUlQgRFNJR0NvbnN0YW50cyB7CisKK3B1YmxpYzoKKworCS8vIEdlbmVyYWwgc3RyaW5ncworCisJc3RhdGljIGNvbnN0IFhNTENoICogc191bmljb2RlU3RyRW1wdHk7CQkvLyAiIgorCXN0YXRpYyBjb25zdCBYTUxDaCAqIHNfdW5pY29kZVN0ck5MOwkJLy8gIlxuIgorCXN0YXRpYyBjb25zdCBYTUxDaCAqIHNfdW5pY29kZVN0clhtbG5zOwkJLy8gInhtbG5zIgorCXN0YXRpYyBjb25zdCBYTUxDaCAqIHNfdW5pY29kZVN0clVSSTsJCS8vICJVUkkiCisKKwkvLyBEU0lHIEVsZW1lbnQgU3RyaW5ncworCXN0YXRpYyBjb25zdCBYTUxDaCAqIHNfdW5pY29kZVN0ckFsZ29yaXRobTsKKworCS8vIFVSSV9JRHMKKwlzdGF0aWMgY29uc3QgWE1MQ2ggKiBzX3VuaWNvZGVTdHJVUklEU0lHOworICAgIHN0YXRpYyBjb25zdCBYTUxDaCAqIHNfdW5pY29kZVN0clVSSURTSUcxMTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggKiBzX3VuaWNvZGVTdHJVUklFQzsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggKiBzX3VuaWNvZGVTdHJVUklYUEY7CisJc3RhdGljIGNvbnN0IFhNTENoICogc191bmljb2RlU3RyVVJJWEVOQzsKKworCXN0YXRpYyBjb25zdCBYTUxDaCAqIHNfdW5pY29kZVN0clVSSVNJR0JBU0U7CisJc3RhdGljIGNvbnN0IFhNTENoICogc191bmljb2RlU3RyVVJJU0lHQkFTRU1PUkU7CisgICAgc3RhdGljIGNvbnN0IFhNTENoICogc191bmljb2RlU3RyVVJJU0lHQkFTRTExOworCisJc3RhdGljIGNvbnN0IFhNTENoICogc191bmljb2RlU3RyVVJJUmF3WDUwOTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggKiBzX3VuaWNvZGVTdHJVUklTSEExOworCXN0YXRpYyBjb25zdCBYTUxDaCAqIHNfdW5pY29kZVN0clVSSVNIQTIyNDsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggKiBzX3VuaWNvZGVTdHJVUklTSEEyNTY7CisJc3RhdGljIGNvbnN0IFhNTENoICogc191bmljb2RlU3RyVVJJU0hBMzg0OworCXN0YXRpYyBjb25zdCBYTUxDaCAqIHNfdW5pY29kZVN0clVSSVNIQTUxMjsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggKiBzX3VuaWNvZGVTdHJVUklNRDU7CQkvLyBOb3QgcmVjb21tZW5kZWQKKwlzdGF0aWMgY29uc3QgWE1MQ2ggKiBzX3VuaWNvZGVTdHJVUklCQVNFNjQ7CisJc3RhdGljIGNvbnN0IFhNTENoICogc191bmljb2RlU3RyVVJJWFBBVEg7CisJc3RhdGljIGNvbnN0IFhNTENoICogc191bmljb2RlU3RyVVJJWFNMVDsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggKiBzX3VuaWNvZGVTdHJVUklFTlZFTE9QRTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggKiBzX3VuaWNvZGVTdHJVUklDMTROX05PQzsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggKiBzX3VuaWNvZGVTdHJVUklDMTROX0NPTTsKKyAgICBzdGF0aWMgY29uc3QgWE1MQ2ggKiBzX3VuaWNvZGVTdHJVUklDMTROMTFfTk9DOworICAgIHN0YXRpYyBjb25zdCBYTUxDaCAqIHNfdW5pY29kZVN0clVSSUMxNE4xMV9DT007CisJc3RhdGljIGNvbnN0IFhNTENoICogc191bmljb2RlU3RyVVJJRVhDX0MxNE5fTk9DOworCXN0YXRpYyBjb25zdCBYTUxDaCAqIHNfdW5pY29kZVN0clVSSUVYQ19DMTROX0NPTTsKKworCXN0YXRpYyBjb25zdCBYTUxDaCAqIHNfdW5pY29kZVN0clVSSURTQV9TSEExOworICAgIHN0YXRpYyBjb25zdCBYTUxDaCAqIHNfdW5pY29kZVN0clVSSURTQV9TSEEyNTY7CisKKwlzdGF0aWMgY29uc3QgWE1MQ2ggKiBzX3VuaWNvZGVTdHJVUklSU0FfTUQ1OworCXN0YXRpYyBjb25zdCBYTUxDaCAqIHNfdW5pY29kZVN0clVSSVJTQV9TSEExOworCXN0YXRpYyBjb25zdCBYTUxDaCAqIHNfdW5pY29kZVN0clVSSVJTQV9TSEEyMjQ7CisJc3RhdGljIGNvbnN0IFhNTENoICogc191bmljb2RlU3RyVVJJUlNBX1NIQTI1NjsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggKiBzX3VuaWNvZGVTdHJVUklSU0FfU0hBMzg0OworCXN0YXRpYyBjb25zdCBYTUxDaCAqIHNfdW5pY29kZVN0clVSSVJTQV9TSEE1MTI7CisKKwlzdGF0aWMgY29uc3QgWE1MQ2ggKiBzX3VuaWNvZGVTdHJVUklFQ0RTQV9TSEExOworCXN0YXRpYyBjb25zdCBYTUxDaCAqIHNfdW5pY29kZVN0clVSSUVDRFNBX1NIQTI1NjsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggKiBzX3VuaWNvZGVTdHJVUklFQ0RTQV9TSEEzODQ7CisJc3RhdGljIGNvbnN0IFhNTENoICogc191bmljb2RlU3RyVVJJRUNEU0FfU0hBNTEyOworCisJc3RhdGljIGNvbnN0IFhNTENoICogc191bmljb2RlU3RyVVJJSE1BQ19TSEExOworCXN0YXRpYyBjb25zdCBYTUxDaCAqIHNfdW5pY29kZVN0clVSSUhNQUNfU0hBMjI0OworCXN0YXRpYyBjb25zdCBYTUxDaCAqIHNfdW5pY29kZVN0clVSSUhNQUNfU0hBMjU2OworCXN0YXRpYyBjb25zdCBYTUxDaCAqIHNfdW5pY29kZVN0clVSSUhNQUNfU0hBMzg0OworCXN0YXRpYyBjb25zdCBYTUxDaCAqIHNfdW5pY29kZVN0clVSSUhNQUNfU0hBNTEyOworCisJc3RhdGljIGNvbnN0IFhNTENoICogc191bmljb2RlU3RyVVJJWE1MTlM7CisJc3RhdGljIGNvbnN0IFhNTENoICogc191bmljb2RlU3RyVVJJTUFOSUZFU1Q7CisKKwkvLyBVUklzIGZvciBFbmNyeXB0aW9uCisJc3RhdGljIGNvbnN0IFhNTENoICogc191bmljb2RlU3RyVVJJM0RFU19DQkM7CisJc3RhdGljIGNvbnN0IFhNTENoICogc191bmljb2RlU3RyVVJJQUVTMTI4X0NCQzsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggKiBzX3VuaWNvZGVTdHJVUklBRVMxOTJfQ0JDOworCXN0YXRpYyBjb25zdCBYTUxDaCAqIHNfdW5pY29kZVN0clVSSUFFUzI1Nl9DQkM7CisJc3RhdGljIGNvbnN0IFhNTENoICogc191bmljb2RlU3RyVVJJS1dfQUVTMTI4OworCXN0YXRpYyBjb25zdCBYTUxDaCAqIHNfdW5pY29kZVN0clVSSUtXX0FFUzE5MjsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggKiBzX3VuaWNvZGVTdHJVUklLV19BRVMyNTY7CisJc3RhdGljIGNvbnN0IFhNTENoICogc191bmljb2RlU3RyVVJJS1dfM0RFUzsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggKiBzX3VuaWNvZGVTdHJVUklSU0FfMV81OworCXN0YXRpYyBjb25zdCBYTUxDaCAqIHNfdW5pY29kZVN0clVSSVJTQV9PQUVQX01HRlAxOworCisJc3RhdGljIGNvbnN0IFhNTENoICogc191bmljb2RlU3RyVVJJWEVOQ19FTEVNRU5UOworCXN0YXRpYyBjb25zdCBYTUxDaCAqIHNfdW5pY29kZVN0clVSSVhFTkNfQ09OVEVOVDsKKworCS8vIEludGVybmFsIENyeXB0byBQcm92aWRlcnMKKwlzdGF0aWMgY29uc3QgWE1MQ2ggKiBzX3VuaWNvZGVTdHJQUk9WT3BlblNTTDsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggKiBzX3VuaWNvZGVTdHJQUk9WV2luQ0FQSTsKKyAgICBzdGF0aWMgY29uc3QgWE1MQ2ggKiBzX3VuaWNvZGVTdHJQUk9WTlNTOworCisKKwlEU0lHQ29uc3RhbnRzKCk7CisKKwlzdGF0aWMgdm9pZCBjcmVhdGUoKTsKKwlzdGF0aWMgdm9pZCBkZXN0cm95KCk7CisKK307CisKKworCisKK2lubGluZQorY29uc3QgWE1MQ2ggKiBjYW5vbmljYWxpemF0aW9uTWV0aG9kMlVOSUNPREVVUkkoY2Fub25pY2FsaXphdGlvbk1ldGhvZCBjbSkgeworCisJc3dpdGNoIChjbSkgeworCisJY2FzZSAoQ0FOT05fQzE0Tl9OT0MpIDoKKworCQlyZXR1cm4gRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJQzE0Tl9OT0M7CisKKwljYXNlIChDQU5PTl9DMTROX0NPTSkgOgorCisJCXJldHVybiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklDMTROX0NPTTsKKworCWNhc2UgKENBTk9OX0MxNE5FX05PQykgOgorCisJCXJldHVybiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklFWENfQzE0Tl9OT0M7CisKKwljYXNlIChDQU5PTl9DMTRORV9DT00pIDoKKworCQlyZXR1cm4gRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRVhDX0MxNE5fQ09NOworCisJZGVmYXVsdCA6CisJCWJyZWFrOworCisJfQorCisJcmV0dXJuIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ckVtcHR5OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCVVSSSBJbnZlcnNlIE1hcHBpbmdzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvKiBNYXAgVVJJcyB0byBpbnRlcm5hbCBlbnVtcywgaWYgdGhlIFVSSXMgYXJlIGtub3duIHRvIHRoZSBsaWJyYXJ5LgorICAgSWYgdGhleSBhcmVuJ3QsIGFsbCB0aGVzZSBjYWxscyB3aWxsIHNldCB0aGUgTWV0aG9kIHZhcmlhYmxlcyB0bworICAgKl9OT05FLCBzaWduaWZ5aW5nIHdlIGRvbid0IGtub3cgdGhlbS4gIE5vdGUgdGhpcyBpcyBub3QgbmVjZXNzYXJpbHkKKyAgIGFuIGVycm9yIC0gdGhlIGNhbGxpbmcgYXBwbGljYXRpb24gbWF5IGhhdmUgaW5zdGFsbGVkIGhhbmRsZXJzIHRvIGhhbmRsZQorICAgdGhlc2UgVVJJcywgaXQncyBqdXN0IHdlIGRvbid0IGhhdmUgYW4gaW50ZXJuYWwgZW51bSBtYXBwaW5nCisqLworCitib29sIERTSUdfRVhQT1JUIFhTRUNtYXBVUklUb1NpZ25hdHVyZU1ldGhvZHMoY29uc3QgWE1MQ2ggKiBVUkksCisJCQkJCQkJCQkJCQkgIHNpZ25hdHVyZU1ldGhvZCAmIHNtLAorCQkJCQkJCQkJCQkJICBoYXNoTWV0aG9kICYgaG0pOworYm9vbCBEU0lHX0VYUE9SVCBYU0VDbWFwVVJJVG9IYXNoTWV0aG9kKGNvbnN0IFhNTENoICogVVJJLAorCQkJCQkJCQkJCQkJICBoYXNoTWV0aG9kICYgaG0pOworYm9vbCBEU0lHX0VYUE9SVCBYU0VDbWFwVVJJVG9DYW5vbmljYWxpemF0aW9uTWV0aG9kKGNvbnN0IFhNTENoICogVVJJLAorCQkJCQkJCWNhbm9uaWNhbGl6YXRpb25NZXRob2QgJiBjbSk7CisKKyNlbmRpZiAvKiBEU0lHQ09OU1RBTlRTX0hFQURFUiAqLworCmRpZmYgLS1naXQgYS9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvLmhwcCBiL2Mvc3JjL2RzaWcvRFNJR0tleUluZm8uaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkNDc1M2EKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvLmhwcApAQCAtMCwwICsxLDE2OSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogRFNJR0tleUluZm8gOj0gQmFzZSAodmlydHVhbCkgY2xhc3MgdGhhdCBkZWZpbmVzIGFuIFhTRUMgS2V5SW5mbyBub2RlCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIERTSUdLRVlJTkZPX0lOQ0xVREUKKyNkZWZpbmUgRFNJR0tFWUlORk9fSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDU2FmZUJ1ZmZlckZvcm1hdHRlci5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b0tleS5ocHA+CisKKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPgorCitjbGFzcyBEU0lHU2lnbmF0dXJlOworY2xhc3MgWFNFQ0VudjsKKworLyoqCisgKiBAaW5ncm91cCBwdWJzaWcKKyAqLworCisvKioKKyAqIEBicmllZiBCYXNlIGNsYXNzIGZvciA8S2V5Kj4gbm9kZXMgaW4gYSBLZXlJbmZvIGxpc3QuCisgKgorICogRGlnaXRhbCBzaWduYXR1cmVzIGNhbiBoYXZlIGEgbnVtYmVyIG9mIEtleUluZm8gZWxlbWVudHMgdGhhdCBhcmUKKyAqIHVzZWQgdG8gY29tbXVuaWNhdGUgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBrZXkgdG8gdXNlIGJldHdlZW4gdGhlCisgKiBzaWduZXIgYW5kIHRoZSB2YWxpZGF0b3IuCisgKgorICogSW4gdGhlIFhNTC1TZWN1cml0eS1DIGxpYmFyeSwgS2V5SW5mbyBlbGVtZW50cyBhcmUgb25seSB1c2VkIGZvcgorICogaG9sZGluZyBpbmZvcm1hdGlvbiBhYm91dCBrZXlzLiAgVGhleSBkbyBub3QgaW4gdGhlbXNlbHZlcyBwZXJmb3JtCisgKiBhbnkgY3J5cHRvZ3JhcGhpYyBmdW5jdGlvbi4KKyAqCisgKi8KKworCitjbGFzcyBEU0lHX0VYUE9SVCBEU0lHS2V5SW5mbyB7CisKK3B1YmxpYzoKKworCS8qKgorCSAqIFxicmllZiBMaXN0IG9mIHBvdGVudGlhbCBLZXlJbmZvIHR5cGVzCisJICoKKwkgKiBUaGUga2V5SW50b1R5cGUgZW51bWVyYXRlZCB0eXBlIGRlZmluZXMgdGhlIEtleUluZm8gdHlwZXMga25vd24gYnkKKwkgKiB0aGUgWE1MLVNlY3VyaXR5LUMgbGlicmFyeS4KKwkgKgorCSAqLworCisKKwllbnVtIGtleUluZm9UeXBlIHsKKyAgICAgICAgS0VZSU5GT19FWFRFTlNJT04gICAgICAgPSAwLCAgICAgICAgICAgIC8vIEV4dGVuc2lvbiB0eXBlIHVua25vd24gdG8gbGlicmFyeQorCQlLRVlJTkZPX05PVFNFVAkJCT0gMSwJCQkvLyBFbXB0eSBrZXkgdHlwZQorCQlLRVlJTkZPX1g1MDkJCQk9IDIsCQkJLy8gWC41MDkgQ2VydGlmaWNhdGUtUmVsYXRlZCBEYXRhCisJCUtFWUlORk9fVkFMVUVfRFNBCQk9IDMsCQkJLy8gRFNBIEtleQorCQlLRVlJTkZPX1ZBTFVFX1JTQQkJPSA0LCAgICAgICAgICAgIC8vIFJTQSBLZXkKKwkJS0VZSU5GT19OQU1FCQkJPSA1LAkJCS8vIE5hbWUgb2YgYSBrZXkgKGFwcGxpY2F0aW9uIGRlcGVuZGFudCkKKwkJS0VZSU5GT19QR1BEQVRBCQkJPSA2LAkJCS8vIFBHUCBLZXkKKwkJS0VZSU5GT19TUEtJREFUQQkJPSA3LCAgICAgICAgICAgIC8vIFNQS0kgS2V5CisJCUtFWUlORk9fTUdNVERBVEEJCT0gOCwJCQkvLyBNYW5hZ2VtZW50IGRhdGEKKwkJS0VZSU5GT19FTkNSWVBURURLRVkJPSA5LCAJCQkvLyBYTUwgRW5jcnlwdGlvbiAtIEVuY3J5cHRlZCBLZXkKKyAgICAgICAgS0VZSU5GT19WQUxVRV9FQyAgICAgICAgPSAxMCwgICAgICAgICAgIC8vIEVDQyBLZXkKKyAgICAgICAgS0VZSU5GT19ERVJFTkNPREVEICAgICAgPSAxMSAgICAgICAgICAgIC8vIERFUi1FbmNvZGVkIEtleQorCX07CisKK3B1YmxpYzoKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIENvbnN0cnVjdCBmcm9tIGFuIG93bmluZyBzaWduYXR1cmUKKwkgKgorCSAqIEFsbCBLZXlJbmZvIHR5cGVzIHRha2UgYSBjb25zdHJ1Y3RvciB0aGF0IHByb3ZpZGVzIHRoZSBjb250cm9sbGluZyBlbnZpcm9ubWVudC4KKwkgKgorCSAqIEBwYXJhbSBlbnYgVGhlIGVudmlyb25tZW50IHRoYXQgdGhlIEtleUluZm8gaXMgb3BlcmF0aW5nIHdpdGhpbgorCSAqLworCisJRFNJR0tleUluZm8oY29uc3QgWFNFQ0VudiAqIGVudikge21wX2tleUluZm9ET01Ob2RlID0gTlVMTDsgbXBfZW52ID0gZW52O30KKworCS8qKgorCSAqIFxicmllZiBUaGUgRGVzdHJ1Y3RvcgorCSAqLworCisJdmlydHVhbCB+RFNJR0tleUluZm8oKSB7fTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBHZXQgZnVuY3Rpb25zICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFJldHVybiB0eXBlCisJICoKKwkgKiBDYW4gYmUgdXNlZCB0byBmaW5kIHdoYXQgdHlwZSBvZiBLZXlJbmZvIHRoaXMgaXMKKwkgKi8KKworCXZpcnR1YWwga2V5SW5mb1R5cGUgZ2V0S2V5SW5mb1R5cGUodm9pZCkgY29uc3QgPSAwOworCisJLyoqCisJICogXGJyaWVmIFJldHVybiB0aGUgRE9NTm9kZSB0aGF0IGhlYWRzIHVwIHRoaXMgS2V5SW5mbyBjaGlsZAorCSAqLworCisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqZ2V0S2V5SW5mb0RPTU5vZGUoKQorCQl7cmV0dXJuIG1wX2tleUluZm9ET01Ob2RlO30KKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhpcyBrZXkKKwkgKgorCSAqIEZvciB0aG9zZSBLZXlJbmZvIHR5cGVzIHRoYXQgaGF2ZSBhIGtleW5hbWUsIHRoaXMgZnVuY3Rpb24gc2hvdWxkIHJldHVybgorCSAqIGl0LiAgRm9yIGNlcnRpZmljYXRlcywgdGhpcyBtYXkgYmUgdGhlIEROLgorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIGEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIG5hbWUKKwkgKi8KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRLZXlOYW1lKHZvaWQpIGNvbnN0ID0gMDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBMb2FkIGFuZCBTZXQgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgTG9hZCB0aGUgRE9NIHN0cnVjdHVyZXMuCisJICoKKwkgKiBVc2VkIGJ5IHRoZSBsaWJyYXJ5IHRvIGluc3RydWN0IHRoZSBvYmplY3QgdG8gbG9hZCBpbmZvcm1hdGlvbiBmcm9tCisJICogdGhlIERPTSBub2RlcworCSAqLworCisJdmlydHVhbCB2b2lkIGxvYWQoKSA9IDA7CisKKwkvL0B9CisKK3Byb3RlY3RlZDoKKworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlCQkJKiBtcF9rZXlJbmZvRE9NTm9kZTsKKwljb25zdCBYU0VDRW52CQkJCQkJCQkJKiBtcF9lbnY7CisKK3ByaXZhdGU6CisJRFNJR0tleUluZm8oKTsKKworfTsKKworCisKKworI2VuZGlmIC8qICNkZWZpbmUgWFNFQ0tFWUlORk9fSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvZHNpZy9EU0lHS2V5SW5mb0RFUkVuY29kZWQuY3BwIGIvYy9zcmMvZHNpZy9EU0lHS2V5SW5mb0RFUkVuY29kZWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyYTBkYmEKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvREVSRW5jb2RlZC5jcHAKQEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBEU0lHS2V5SW5mb0RFUkVuY29kZWQgOj0gREVSLWVuY29kZWQga2V5IGluZm9ybWF0aW9uCisgKgorICogQXV0aG9yKHMpOiBTY290dCBDYW50b3IKKyAqCisgKiAkSWQ6JAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdLZXlJbmZvREVSRW5jb2RlZC5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdTaWduYXR1cmUuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPgorCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL0phbml0b3IuaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK0RTSUdLZXlJbmZvREVSRW5jb2RlZDo6RFNJR0tleUluZm9ERVJFbmNvZGVkKGNvbnN0IFhTRUNFbnYgKiBlbnYsIERPTU5vZGUgKm5hbWVOb2RlKSA6IAorRFNJR0tleUluZm8oZW52KSwKK21wX2RhdGEoTlVMTCksCittcF9kYXRhVGV4dE5vZGUoMCkgeworCisJbXBfa2V5SW5mb0RPTU5vZGUgPSBuYW1lTm9kZTsKKworfQorCisKK0RTSUdLZXlJbmZvREVSRW5jb2RlZDo6RFNJR0tleUluZm9ERVJFbmNvZGVkKGNvbnN0IFhTRUNFbnYgKiBlbnYpIDogCitEU0lHS2V5SW5mbyhlbnYpLAorbXBfZGF0YShOVUxMKSwKK21wX2RhdGFUZXh0Tm9kZSgwKSB7CisKKwltcF9rZXlJbmZvRE9NTm9kZSA9IDA7CisKK30KKworCitEU0lHS2V5SW5mb0RFUkVuY29kZWQ6On5EU0lHS2V5SW5mb0RFUkVuY29kZWQoKSB7CisKKworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBMb2FkIGFuZCBHZXQgZnVuY3Rpb25zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK3ZvaWQgRFNJR0tleUluZm9ERVJFbmNvZGVkOjpsb2FkKHZvaWQpIHsKKworCS8vIEFzc3VtaW5nIHdlIGhhdmUgYSB2YWxpZCBET01fTm9kZSB0byBzdGFydCB3aXRoLCBsb2FkIHRoZSBzaWduaW5nIGtleSBzbyB0aGF0IGl0IGNhbgorCS8vIGJlIHVzZWQgbGF0ZXIgb24KKworCWlmIChtcF9rZXlJbmZvRE9NTm9kZSA9PSBOVUxMKSB7CisKKwkJLy8gQXR0ZW1wdCB0byBsb2FkIGFuIGVtcHR5IGVsZW1lbnQKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpLZXlJbmZvRXJyb3IsCisJCQkiRFNJR0tleUluZm9ERVJFbmNvZGVkOjpsb2FkIC0gY2FsbGVkIG9uIGVtcHR5IERPTSIpOworCisJfQorCisJaWYgKCFzdHJFcXVhbHMoZ2V0RFNJRzExTG9jYWxOYW1lKG1wX2tleUluZm9ET01Ob2RlKSwgIkRFUkVuY29kZWRLZXlWYWx1ZSIpKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpLZXlJbmZvRXJyb3IsCisJCQkiRFNJR0tleUluZm9ERVJFbmNvZGVkOjpsb2FkIC0gY2FsbGVkIG9uIG5vbiA8ZHMxMTo6REVSRW5jb2RlZEtleVZhbHVlPiBub2RlIik7CisKKwl9CisKKwkvLyBOb3cgZmluZCB0aGUgdGV4dCBub2RlIGNvbnRhaW5pbmcgdGhlIG5hbWUKKworCURPTU5vZGUgKnRtcEVsdCA9IGZpbmRGaXJzdENoaWxkT2ZUeXBlKG1wX2tleUluZm9ET01Ob2RlLCBET01Ob2RlOjpURVhUX05PREUpOworCisJaWYgKHRtcEVsdCAhPSAwKSB7CisKKwkJbXBfZGF0YVRleHROb2RlID0gdG1wRWx0OworCQltcF9kYXRhID0gdG1wRWx0LT5nZXROb2RlVmFsdWUoKTsKKworCX0KKworCWVsc2UgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWREU0lHQ2hpbGROb3RGb3VuZCwKKwkJCSJEU0lHS2V5SW5mb0RFUkVuY29kZWQ6OmxvYWQgLSBFeHBlY3RlZCBURVhUIG5vZGUgYXMgY2hpbGQgdG8gPGRzMTE6OkRFUkVuY29kZWRLZXlWYWx1ZT4gZWxlbWVudCIpOworCisJfQorCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ3JlYXRlIGFuZCBTZXQgZnVuY3Rpb25zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitET01FbGVtZW50ICogRFNJR0tleUluZm9ERVJFbmNvZGVkOjpjcmVhdGVCbGFua0RFUkVuY29kZWQoY29uc3QgWE1MQ2ggKiBkYXRhKSB7CisKKwkvLyBDcmVhdGUgdGhlIERPTSBTdHJ1Y3R1cmUKKworCXNhZmVCdWZmZXIgc3RyOworCURPTURvY3VtZW50ICpkb2MgPSBtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCk7CisJY29uc3QgWE1MQ2ggKiBwcmVmaXggPSBtcF9lbnYtPmdldERTSUcxMU5TUHJlZml4KCk7CisKKwltYWtlUU5hbWUoc3RyLCBwcmVmaXgsICJERVJFbmNvZGVkS2V5VmFsdWUiKTsKKworCURPTUVsZW1lbnQgKnJldCA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSURTSUcxMSwgc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCW1wX2tleUluZm9ET01Ob2RlID0gcmV0OworCisJLy8gQ2hlY2sgd2hldGhlciB0byBlbmNvZGUgcHJpb3IgdG8gYWRkaW5nCisJbXBfZGF0YVRleHROb2RlID0gZG9jLT5jcmVhdGVUZXh0Tm9kZShkYXRhKTsKKworCXJldC0+YXBwZW5kQ2hpbGQobXBfZGF0YVRleHROb2RlKTsKKworCW1wX2RhdGEgPSBtcF9kYXRhVGV4dE5vZGUtPmdldE5vZGVWYWx1ZSgpOworCisJcmV0dXJuIHJldDsKKworfQorCit2b2lkIERTSUdLZXlJbmZvREVSRW5jb2RlZDo6c2V0RGF0YShjb25zdCBYTUxDaCAqIGRhdGEpIHsKKworCWlmIChtcF9kYXRhVGV4dE5vZGUgPT0gMCkgeworCisJCS8vIEF0dGVtcHQgdG8gc2V0IGFuIGVtcHR5IGVsZW1lbnQKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpLZXlJbmZvRXJyb3IsCisJCQkiRFNJR0tleUluZm9ERVJFbmNvZGVkOjpzZXREYXRhKCkgY2FsbGVkIHByaW9yIHRvIGxvYWQoKSBvciBjcmVhdGVCbGFuaygpIik7CisKKwl9CisKKwltcF9kYXRhVGV4dE5vZGUtPnNldE5vZGVWYWx1ZShkYXRhKTsKKwltcF9kYXRhID0gbXBfZGF0YVRleHROb2RlLT5nZXROb2RlVmFsdWUoKTsKKworfQorCmRpZmYgLS1naXQgYS9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvREVSRW5jb2RlZC5ocHAgYi9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvREVSRW5jb2RlZC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDlhYzk3ZgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2RzaWcvRFNJR0tleUluZm9ERVJFbmNvZGVkLmhwcApAQCAtMCwwICsxLDE2NiBAQAorLyoNCisgKiBDb3B5cmlnaHQgMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoNCisgKiBYU0VDDQorICoNCisgKiBEU0lHS2V5SW5mb0RFUkVuY29kZWQgOj0gREVSRW5jb2RlZEtleVZhbHVlIC0gdXNlZCBmb3IgY29udmV5aW5nIERFUi1lbmNvZGVkIGtleXMNCisgKg0KKyAqIEF1dGhvcihzKTogU2NvdHQgQ2FudG9yDQorICoNCisgKiAkSWQ6JA0KKyAqDQorICovDQorDQorI2lmbmRlZiBEU0lHS0VZSU5GT0RFUkVOQ09ERURfSU5DTFVERQ0KKyNkZWZpbmUgRFNJR0tFWUlORk9ERVJFTkNPREVEX0lOQ0xVREUNCisNCisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdLZXlJbmZvLmhwcD4NCisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDUGxhdGZvcm1VdGlscy5ocHA+DQorDQorWFNFQ19ERUNMQVJFX1hFUkNFU19DTEFTUyhET01FbGVtZW50KTsNCisNCisvKioNCisgKiBAaW5ncm91cCBwdWJzaWcNCisgKi8NCisNCisvKioNCisgKiBAYnJpZWYgVGhlIGNsYXNzIGZvciBcPGRzMTE6OkRFUkVuY29kZWRLZXlWYWx1ZVw+IG5vZGVzIGluIGEgS2V5SW5mbyBsaXN0Lg0KKyAqDQorICogQ2xhc3MgZm9yIGhvbGRpbmcgREVSLWVuY29kZWQga2V5IGluZm9ybWF0aW9uLg0KKyAqDQorICovDQorDQorDQorDQorY2xhc3MgRFNJR19FWFBPUlQgRFNJR0tleUluZm9ERVJFbmNvZGVkIDogcHVibGljIERTSUdLZXlJbmZvIHsNCisNCitwdWJsaWM6DQorDQorCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovDQorCS8vQHsNCisNCisJLyoqDQorCSAqIFxicmllZiBDb25zdHJ1Y3RvciB1c2VkIHdoZW4gWE1MIGV4aXN0cy4NCisJICoNCisJICogVGhpcyBjb25zdHJ1Y3RvciBpcyB1c2VkIGJ5IG90aGVyIHVzZXIgaW50ZXJmYWNlIGNsYXNzZXMgdG8gbG9hZA0KKwkgKiBhbiBleGlzdGluZyBET00gc3RydWN0dXJlIGludG8gdGhlIE5hbWUgZWxlbWVudC4NCisJICoNCisJICogQHBhcmFtIGVudiBFbnZpcm9ubWVudCBvcGVyYXRpbmcgd2l0aGluLg0KKwkgKiBAcGFyYW0gbmFtZU5vZGUgRE9NTm9kZSB0byBsb2FkIGluZm9ybWF0aW9uIGZyb20NCisJICovDQorDQorCURTSUdLZXlJbmZvREVSRW5jb2RlZChjb25zdCBYU0VDRW52ICogZW52LCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqbmFtZU5vZGUpOw0KKw0KKwkvKioNCisJICogXGJyaWVmIENvbnN0cnVjdG9yIHVzZWQgd2hlbiBYTUwgbmVlZHMgdG8gYmUgY3JlYXRlZC4NCisJICoNCisJICogVGhpcyBjb25zdHJ1Y3RvciBpcyB1c2VkIGJ5IGludGVyZmFjZSBvYmplY3RzIHRvDQorCSAqIGNyZWF0ZSBhIERTSUdLZXlJbmZvTmFtZSBvYmplY3QgdGhhdCBjYW4gdGhlbiBiZSB1c2VkDQorCSAqIHRvIGNyZWF0ZSB0aGUgcmVxdWlyZWQgWE1MLg0KKwkgKg0KKwkgKiBAcGFyYW0gZW52IE9wZXJhdGluZyBlbnZpcm9ubWVudA0KKwkgKi8NCisNCisJRFNJR0tleUluZm9ERVJFbmNvZGVkKGNvbnN0IFhTRUNFbnYgKiBlbnYpOw0KKw0KKwkvKioNCisJICogXGJyaWVmIERlc3RydWN0b3INCisJICovDQorDQorCXZpcnR1YWwgfkRTSUdLZXlJbmZvREVSRW5jb2RlZCgpOw0KKw0KKwkvL0B9DQorDQorCS8qKiBAbmFtZSBMb2FkIGFuZCBHZXQgZnVuY3Rpb25zICovDQorCS8vQHsNCisNCisJLyoqDQorCSAqIFxicmllZiBMb2FkIGFuIGV4aXN0aW5nIFhNTCBzdHJ1Y3R1cmUgaW50byB0aGlzIG9iamVjdC4NCisJICovDQorDQorCXZpcnR1YWwgdm9pZCBsb2FkKHZvaWQpOw0KKw0KKwkvKioNCisJICogXGJyaWVmIEdldCBrZXkgbmFtZSAtIHVuaW1wbGVtZW50ZWQgZm9yIERFUkVuY29kZWRLZXlWYWx1ZQ0KKwkgKi8NCisNCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldEtleU5hbWUodm9pZCkgY29uc3Qge3JldHVybiBOVUxMO30NCisNCisJLyoqDQorCSAqIFxicmllZiBHZXQgdGhlIGtleSBkYXRhDQorCSAqDQorCSAqIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgZGF0YSBzdHJpbmcuDQorCSAqDQorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgWE1MQ2ggYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRhdGENCisJICovDQorDQorCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXREYXRhKHZvaWQpIGNvbnN0IHtyZXR1cm4gbXBfZGF0YTt9Ow0KKw0KKwkvL0B9DQorDQorCS8qKkBuYW1lIENyZWF0ZSBhbmQgc2V0IGZ1bmN0aW9ucyAqLw0KKwkvL0B7DQorCQ0KKwkvKioNCisJICogXGJyaWVmIENyZWF0ZSBhIG5ldyBERVJFbmNvZGVkS2V5VmFsdWUgZWxlbWVudCBpbiB0aGUgY3VycmVudCBkb2N1bWVudC4NCisJICoNCisJICogQ3JlYXRlcyBhIG5ldyBERVJFbmNvZGVkS2V5VmFsdWUgZWxlbWVudCBhbmQgc2V0cyB0aGUgZGF0YSB3aXRoIHRoZSBzdHJpbmcNCisJICogcGFzc2VkIGluLg0KKwkgKg0KKwkgKiBAcGFyYW0gZGF0YSBWYWx1ZSB0byBzZXQgdGhlIERFUkVuY29kZWRLZXlWYWx1ZSB0bw0KKwkgKiBAcmV0dXJucyBUaGUgbmV3bHkgY3JlYXRlZCBET01FbGVtZW50IHdpdGggdGhlIHN0cnVjdHVyZSB1bmRlcm5lYXRoLg0KKwkgKi8NCisNCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBjcmVhdGVCbGFua0RFUkVuY29kZWQoY29uc3QgWE1MQ2ggKiBkYXRhKTsNCisNCisJLyoqDQorCSAqIFxicmllZiBTZXQgdGhlIHZhbHVlIG9mIHRoZSBERVJFbmNvZGVkS2V5VmFsdWUgdG8gYSBuZXcgc3RyaW5nLg0KKwkgKg0KKwkgKiBVc2VzIHRoZSBwYXNzZWQgaW4gc3RyaW5nIHRvIHNldCBhIG5ldyB2YWx1ZSBpbiB0aGUgRE9NIHN0cnVjdHVyZS4NCisJICoNCisJICogQHBhcmFtIGRhdGEgVmFsdWUgdG8gc2V0IGluIERFUkVuY29kZWRLZXlWYWx1ZQ0KKwkgKi8NCisNCisJdm9pZCBzZXREYXRhKGNvbnN0IFhNTENoICogZGF0YSk7DQorDQorCS8vQH0NCisNCisJLyoqIEBuYW1lIEluZm9ybWF0aW9uIEZ1bmN0aW9ucyAqLw0KKwkvL0B7DQorCQ0KKwkvKioNCisJICogXGJyaWVmIFJldHVybiB0eXBlIG9mIHRoaXMgS2V5SW5mbyBlbGVtZW50DQorCSAqLw0KKwkNCisJdmlydHVhbCBrZXlJbmZvVHlwZSBnZXRLZXlJbmZvVHlwZSh2b2lkKSBjb25zdCB7cmV0dXJuIERTSUdLZXlJbmZvOjpLRVlJTkZPX0RFUkVOQ09ERUQ7fQ0KKw0KKwkvL0B9DQorDQorcHJpdmF0ZToNCisNCisJRFNJR0tleUluZm9ERVJFbmNvZGVkKCk7CQkJICAgICAgICAvLyBOb24taW1wbGVtZW50ZWQgY29uc3RydWN0b3INCisNCisJY29uc3QgWE1MQ2gJCQkqIG1wX2RhdGE7CQkJCS8vIFRoZSBEYXRhIHN0b3JlZCBpbiB0aGUgWE1MIGZpbGUNCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUJCQkJDQorCQkJCQkJKiBtcF9kYXRhVGV4dE5vZGU7CQkvLyBUZXh0IG5vZGUgY29udGFpbmluZyB0aGUgbmFtZQ0KKw0KK307DQorDQorDQorDQorI2VuZGlmIC8qICNkZWZpbmUgRFNJR0tFWUlORk9ERVJFTkNPREVEX0lOQ0xVREUgKi8NCisNCmRpZmYgLS1naXQgYS9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvRXh0LmNwcCBiL2Mvc3JjL2RzaWcvRFNJR0tleUluZm9FeHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwNzkyZDIKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvRXh0LmNwcApAQCAtMCwwICsxLDY0IEBACisvKg0KKyAqIENvcHlyaWdodCAyMDAyLTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qDQorICogWFNFQw0KKyAqDQorICogRFNJR0tleUV4dCA6PSBBbiBleHRlbnNpb24gdHlwZSBmb3IgYW55dGhpbmcgdW5rbm93biB0byB0aGUgbGlicmFyeQ0KKyAqDQorICogQXV0aG9yKHMpOiBTY290dCBDYW50b3INCisgKg0KKyAqICRJZDokDQorICoNCisgKi8NCisNCisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdLZXlJbmZvRXh0LmhwcD4NCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4NCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vudi5ocHA+DQorDQorWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyAgICAgICAgICAgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorDQorRFNJR0tleUluZm9FeHQ6OkRTSUdLZXlJbmZvRXh0KGNvbnN0IFhTRUNFbnYgKiBlbnYsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICpleHROb2RlKQ0KKzogRFNJR0tleUluZm8oZW52KSB7DQorDQorICAgIG1wX2tleUluZm9ET01Ob2RlID0gZXh0Tm9kZTsNCit9DQorDQorRFNJR0tleUluZm9FeHQ6On5EU0lHS2V5SW5mb0V4dCgpIHt9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyAgICAgICAgICAgTG9hZCBhbmQgR2V0IGZ1bmN0aW9ucw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorDQordm9pZCBEU0lHS2V5SW5mb0V4dDo6bG9hZCh2b2lkKSB7DQorDQorCS8vIEFzc3VtaW5nIHdlIGhhdmUgYSB2YWxpZCBET01fTm9kZSB0byBzdGFydCB3aXRoLCBsb2FkIHRoZSBleHRlbnNpb24gc28gdGhhdCBpdCBjYW4NCisJLy8gYmUgdXNlZCBsYXRlciBvbg0KKw0KKwlpZiAobXBfa2V5SW5mb0RPTU5vZGUgPT0gTlVMTCkgew0KKw0KKwkJLy8gQXR0ZW1wdCB0byBsb2FkIGFuIGVtcHR5IHNpZ25hdHVyZSBlbGVtZW50DQorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkxvYWRFbXB0eUluZm9OYW1lKTsNCisNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvRXh0LmhwcCBiL2Mvc3JjL2RzaWcvRFNJR0tleUluZm9FeHQuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3MjU4YmQKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvRXh0LmhwcApAQCAtMCwwICsxLDEwNyBAQAorLyoNCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKg0KKyAqIFhTRUMNCisgKg0KKyAqIERTSUdLZXlJbmZvRXh0IDo9IEFuIGV4dGVuc2lvbiB0eXBlIGZvciBhbnl0aGluZyB1bmtub3duIHRvIHRoZSBsaWJyYXJ5DQorICoNCisgKiAkSWQ6JA0KKyAqDQorICovDQorDQorI2lmbmRlZiBEU0lHS0VZSU5GT0VYVF9JTkNMVURFDQorI2RlZmluZSBEU0lHS0VZSU5GT0VYVF9JTkNMVURFDQorDQorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHS2V5SW5mby5ocHA+DQorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1BsYXRmb3JtVXRpbHMuaHBwPg0KKw0KK1hTRUNfREVDTEFSRV9YRVJDRVNfQ0xBU1MoRE9NRWxlbWVudCk7DQorDQorLyoqDQorICogQGluZ3JvdXAgcHVic2lnDQorICovDQorDQorLyoqDQorICogQGJyaWVmIFRoZSBjbGFzcyBmb3IgZXh0ZW5zaW9uIG5vZGVzIGluIGEgS2V5SW5mbyBsaXN0Lg0KKyAqDQorICogQ2xhc3MgZm9yIGhvbGRpbmcgaW5mb3JtYXRpb24gb24gYW4gZXh0ZW5zaW9uIG5vZGUuDQorICoNCisgKi8NCisNCisNCisNCitjbGFzcyBEU0lHX0VYUE9SVCBEU0lHS2V5SW5mb0V4dCA6IHB1YmxpYyBEU0lHS2V5SW5mbyB7DQorDQorcHVibGljOg0KKw0KKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLw0KKwkvL0B7DQorDQorCS8qKg0KKwkgKiBcYnJpZWYgQ29uc3RydWN0b3IgdXNlZCB3aGVuIFhNTCBleGlzdHMuDQorCSAqDQorCSAqIFRoaXMgY29uc3RydWN0b3IgaXMgdXNlZCBieSBpbnRlcmZhY2UgY2xhc3Nlcw0KKwkgKiBhbiBleGlzdGluZyBET00gc3RydWN0dXJlIGludG8gdGhlIGV4dGVuc2lvbiBlbGVtZW50Lg0KKwkgKg0KKwkgKiBAcGFyYW0gZW52IEVudmlyb25tZW50IHRoZSBLZXlJbmZvIGlzIG9wZXJhdGluZyB3aXRoaW4NCisJICogQHBhcmFtIGV4dE5vZGUgRE9NTm9kZSB0byBsb2FkIGluZm9ybWF0aW9uIGZyb20NCisJICovDQorDQorICAgIERTSUdLZXlJbmZvRXh0KGNvbnN0IFhTRUNFbnYgKiBlbnYsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICpleHROb2RlKTsNCisNCisJLyoqDQorCSAqIFxicmllZiBEZXN0cnVjdG9yDQorCSAqLw0KKw0KKwl2aXJ0dWFsIH5EU0lHS2V5SW5mb0V4dCgpOw0KKw0KKwkvL0B9DQorDQorCS8qKiBAbmFtZSBMb2FkIGFuZCBHZXQgZnVuY3Rpb25zICovDQorCS8vQHsNCisNCisJLyoqDQorCSAqIFxicmllZiBMb2FkIGFuIGV4aXN0aW5nIFhNTCBzdHJ1Y3R1cmUgaW50byB0aGlzIG9iamVjdC4NCisJICovDQorDQorCXZpcnR1YWwgdm9pZCBsb2FkKHZvaWQpOw0KKw0KKwkvL0B9DQorDQorCS8vQH0NCisNCisJLyoqIEBuYW1lIEluZm9ybWF0aW9uIEZ1bmN0aW9ucyAqLw0KKwkvL0B7DQorDQorCS8qKg0KKwkgKiBcYnJpZWYgUmV0dXJuIHR5cGUgb2YgdGhpcyBLZXlJbmZvIGVsZW1lbnQNCisJICovDQorDQorCXZpcnR1YWwga2V5SW5mb1R5cGUgZ2V0S2V5SW5mb1R5cGUodm9pZCkgY29uc3Qge3JldHVybiBEU0lHS2V5SW5mbzo6S0VZSU5GT19FWFRFTlNJT047fQ0KKw0KKwkvL0B9DQorDQorICAgIHZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRLZXlOYW1lKHZvaWQpIGNvbnN0IHtyZXR1cm4gTlVMTDt9DQorDQorcHJpdmF0ZToNCisNCisJRFNJR0tleUluZm9FeHQoKTsJCQkJCQkJLy8gTm9uLWltcGxlbWVudGVkIGNvbnN0cnVjdG9yDQorfTsNCisNCisNCisNCisjZW5kaWYgLyogI2RlZmluZSBEU0lHS0VZTkFNRV9JTkNMVURFICovDQpkaWZmIC0tZ2l0IGEvYy9zcmMvZHNpZy9EU0lHS2V5SW5mb0xpc3QuY3BwIGIvYy9zcmMvZHNpZy9EU0lHS2V5SW5mb0xpc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ZWM2OWMKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvTGlzdC5jcHAKQEAgLTAsMCArMSw2MzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDEwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIERTSUdLZXlJbmZvTGlzdCA6PSBDbGFzcyBmb3IgTG9hZGluZyBhbmQgc3RvcmluZyBhIGxpc3Qgb2YgS2V5SW5mbyBlbGVtZW50cworICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworLy8gWFNFQyBJbmNsdWRlcworI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHS2V5SW5mb0xpc3QuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHS2V5SW5mb1g1MDkuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHS2V5SW5mb05hbWUuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHS2V5SW5mb1ZhbHVlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0tleUluZm9ERVJFbmNvZGVkLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0tleUluZm9QR1BEYXRhLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0tleUluZm9TUEtJRGF0YS5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdLZXlJbmZvTWdtdERhdGEuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHS2V5SW5mb0V4dC5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdTaWduYXR1cmUuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHUmVmZXJlbmNlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1RyYW5zZm9ybUxpc3QuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPgorI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1DaGFpbi5ocHA+CisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTUJhc2UuaHBwPgorCisjaW5jbHVkZSAiLi4veGVuYy9pbXBsL1hFTkNFbmNyeXB0ZWRLZXlJbXBsLmhwcCIKKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9KYW5pdG9yLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKK0RTSUdLZXlJbmZvTGlzdDo6RFNJR0tleUluZm9MaXN0KGNvbnN0IFhTRUNFbnYgKiBlbnYpIDoKK21wX2VudihlbnYpLAorbXBfa2V5SW5mb05vZGUoTlVMTCkge30KKworRFNJR0tleUluZm9MaXN0Ojp+RFNJR0tleUluZm9MaXN0KCkgeworCisJZW1wdHkoKTsKKworfQorCisvLyBBY3Rpb25zCisKK3ZvaWQgRFNJR0tleUluZm9MaXN0OjphZGRLZXlJbmZvKERTSUdLZXlJbmZvICogcmVmKSB7CisKKwltX2tleUluZm9MaXN0LnB1c2hfYmFjayhyZWYpOworCit9CisKK0RTSUdLZXlJbmZvICogRFNJR0tleUluZm9MaXN0OjpyZW1vdmVLZXlJbmZvKHNpemVfdHlwZSBpbmRleCkgeworCisJaWYgKGluZGV4IDwgbV9rZXlJbmZvTGlzdC5zaXplKCkpCisJCXJldHVybiBtX2tleUluZm9MaXN0W2luZGV4XTsKKworCXJldHVybiBOVUxMOworCit9CisKK3NpemVfdCBEU0lHS2V5SW5mb0xpc3Q6OmdldFNpemUoKSBjb25zdCB7CisKKwlyZXR1cm4gbV9rZXlJbmZvTGlzdC5zaXplKCk7CisKK30KKworCitEU0lHS2V5SW5mbyAqIERTSUdLZXlJbmZvTGlzdDo6aXRlbShzaXplX3R5cGUgaW5kZXgpIHsKKworCWlmIChpbmRleCA8IG1fa2V5SW5mb0xpc3Quc2l6ZSgpKQorCQlyZXR1cm4gbV9rZXlJbmZvTGlzdFtpbmRleF07CisKKwlyZXR1cm4gTlVMTDsKKworfQorCitjb25zdCBEU0lHS2V5SW5mbyAqIERTSUdLZXlJbmZvTGlzdDo6aXRlbShzaXplX3R5cGUgaW5kZXgpIGNvbnN0IHsKKworCWlmIChpbmRleCA8IG1fa2V5SW5mb0xpc3Quc2l6ZSgpKQorCQlyZXR1cm4gbV9rZXlJbmZvTGlzdFtpbmRleF07CisKKwlyZXR1cm4gTlVMTDsKKworfQorCit2b2lkIERTSUdLZXlJbmZvTGlzdDo6ZW1wdHkoKSB7CisKKwlzaXplX3R5cGUgaSwgczsKKwlzID0gZ2V0U2l6ZSgpOworCisJZm9yIChpID0gMDsgaSA8IHM7ICsraSkKKwkJZGVsZXRlIG1fa2V5SW5mb0xpc3RbaV07CisKKwltX2tleUluZm9MaXN0LmNsZWFyKCk7CisKK30KKworYm9vbCBEU0lHS2V5SW5mb0xpc3Q6OmlzRW1wdHkoKSBjb25zdCB7CisKKwkJcmV0dXJuIChtX2tleUluZm9MaXN0LnNpemUoKSA9PSAwKTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEFkZCBhIEtleUluZm8gYmFzZWQgb24gWE1MIERvbU5vZGUgc291cmNlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK2Jvb2wgRFNJR0tleUluZm9MaXN0OjphZGRYTUxLZXlJbmZvKERPTU5vZGUgKmtpKSB7CisKKwkvLyByZXR1cm4gdHJ1ZSBpZiBzdWNjZXNzZnVsIC0gZG9lcyBub3QgdGhyb3cgaWYgdGhlIG5vZGUgdHlwZSBpcyB1bmtub3duCisKKwlpZiAoa2kgPT0gMCkKKwkJcmV0dXJuIGZhbHNlOworCisJRFNJR0tleUluZm8gKiBrOworCisJaWYgKHN0ckVxdWFscyhnZXREU0lHTG9jYWxOYW1lKGtpKSwgIlg1MDlEYXRhIikpIHsKKworCQkvLyBIYXZlIGEgY2VydGlmaWNhdGUhCisJCVhTRUNuZXcoaywgRFNJR0tleUluZm9YNTA5KG1wX2Vudiwga2kpKTsKKwl9CisKKwllbHNlIGlmIChzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZShraSksICJLZXlOYW1lIikpIHsKKworCQlYU0VDbmV3KGssIERTSUdLZXlJbmZvTmFtZShtcF9lbnYsIGtpKSk7CisJfQorCisJZWxzZSBpZiAoc3RyRXF1YWxzKGdldERTSUdMb2NhbE5hbWUoa2kpLCAiS2V5VmFsdWUiKSkgeworCisJCVhTRUNuZXcoaywgRFNJR0tleUluZm9WYWx1ZShtcF9lbnYsIGtpKSk7CisJfQorCisJZWxzZSBpZiAoc3RyRXF1YWxzKGdldERTSUdMb2NhbE5hbWUoa2kpLCAiUEdQRGF0YSIpKSB7CisKKwkJWFNFQ25ldyhrLCBEU0lHS2V5SW5mb1BHUERhdGEobXBfZW52LCBraSkpOworCX0KKworCWVsc2UgaWYgKHN0ckVxdWFscyhnZXREU0lHTG9jYWxOYW1lKGtpKSwgIlNQS0lEYXRhIikpIHsKKworCQlYU0VDbmV3KGssIERTSUdLZXlJbmZvU1BLSURhdGEobXBfZW52LCBraSkpOworCisJfQorCisJZWxzZSBpZiAoc3RyRXF1YWxzKGdldERTSUdMb2NhbE5hbWUoa2kpLCAiTWdtdERhdGEiKSkgeworCisJCVhTRUNuZXcoaywgRFNJR0tleUluZm9NZ210RGF0YShtcF9lbnYsIGtpKSk7CisKKwl9CisgICAgCisgICAgZWxzZSBpZiAoc3RyRXF1YWxzKGdldERTSUcxMUxvY2FsTmFtZShraSksICJERVJFbmNvZGVkS2V5VmFsdWUiKSkgeworCisJCVhTRUNuZXcoaywgRFNJR0tleUluZm9ERVJFbmNvZGVkKG1wX2Vudiwga2kpKTsKKworCX0KKworCWVsc2UgaWYgKHN0ckVxdWFscyhnZXRYRU5DTG9jYWxOYW1lKGtpKSwgIkVuY3J5cHRlZEtleSIpKSB7CisKKwkJWFNFQ25ldyhrLCBYRU5DRW5jcnlwdGVkS2V5SW1wbChtcF9lbnYsIChET01FbGVtZW50ICopIGtpKSk7CisKKwl9CisKKwllbHNlIHsKKworCSAgICBYU0VDbmV3KGssIERTSUdLZXlJbmZvRXh0KG1wX2Vudiwga2kpKTsKKworCX0KKworCS8vIE5vdyB3ZSBrbm93IHdoYXQgdGhlIGVsZW1lbnQgdHlwZSBpcyAtIGRvIHRoZSBsb2FkIGFuZCBzYXZlCisKKwl0cnkgeworCQlrLT5sb2FkKCk7CisJfQorCWNhdGNoICguLi4pIHsKKwkJZGVsZXRlIGs7CisJCXRocm93OworCX0KKworCS8vIEFkZAorCXRoaXMtPmFkZEtleUluZm8oayk7CisKKwlyZXR1cm4gdHJ1ZTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFJldHJpZXZlIGEgY29tcGxldGUgS2V5SW5mbyBsaXN0CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK2Jvb2wgRFNJR0tleUluZm9MaXN0Ojpsb2FkTGlzdEZyb21YTUwoRE9NTm9kZSAqIG5vZGUpIHsKKworCWlmIChub2RlID09IE5VTEwgfHwgIXN0ckVxdWFscyhnZXREU0lHTG9jYWxOYW1lKG5vZGUpLCAiS2V5SW5mbyIpKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWREU0lHQ2hpbGROb3RGb3VuZCwKKwkJCSJEU0lHS2V5SW5mb0xpc3Q6OmxvYWRMaXN0RnJvbVhNTCAtIGV4cGVjdGVkIEtleUluZm8gbm9kZSIpOworCX0KKworCURPTU5vZGUgKnRtcEtJID0gZmluZEZpcnN0Q2hpbGRPZlR5cGUobm9kZSwgRE9NTm9kZTo6RUxFTUVOVF9OT0RFKTsKKworCXdoaWxlICh0bXBLSSAhPSAwKSB7CisKKwkJLy8gRmluZCBvdXQgd2hhdCBraW5kIG9mIEtleUluZm8gY2hpbGQgaXQgaXMKKworCQlpZiAodG1wS0kgIT0gMCAmJiBzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZSh0bXBLSSksICJSZXRyaWV2YWxNZXRob2QiKSkgeworCisJCQkvLyBBIHJlZmVyZW5jZSB0byBrZXkgaW5mb3JtYXRpb24gaGVsZCBlbHNld2hlcmUKKworCQkJY29uc3QgWE1MQ2ggKiBVUkkgPSBOVUxMOworCQkJVFhGTUJhc2UgKiBjdXJyZW50VHhmbTsKKwkJCWJvb2wgaXNSYXdYNTA5ID0gZmFsc2U7CisKKwkJCURPTU5hbWVkTm9kZU1hcCAqYXR0cyA9IHRtcEtJLT5nZXRBdHRyaWJ1dGVzKCk7CisJCQljb25zdCBYTUxDaCAqIG5hbWU7CisJCQlYTUxTaXplX3Qgc2l6ZTsKKworCQkJaWYgKGF0dHMgPT0gMCB8fCAoc2l6ZSA9IGF0dHMtPmdldExlbmd0aCgpKSA9PSAwKQorCQkJCXJldHVybiB0cnVlOworCisJCQlmb3IgKFhNTFNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworCisJCQkJbmFtZSA9IGF0dHMtPml0ZW0oaSktPmdldE5vZGVOYW1lKCk7CisKKwkJCQlpZiAoc3RyRXF1YWxzKG5hbWUsICJVUkkiKSkgeworCQkJCQlVUkkgID0gYXR0cy0+aXRlbShpKS0+Z2V0Tm9kZVZhbHVlKCk7CisJCQkJfQorCisJCQkJZWxzZSBpZiAoc3RyRXF1YWxzKG5hbWUsICJUeXBlIikpIHsKKworCQkJCQkvLyBDaGVjayBpZiB0aGlzIGlzIGEgcmF3IFg1MDkgY2VydAorCQkJCQlpZiAoc3RyRXF1YWxzKGF0dHMtPml0ZW0oaSktPmdldE5vZGVWYWx1ZSgpLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklSYXdYNTA5KSkgeworCQkJCQkJaXNSYXdYNTA5ID0gdHJ1ZTsKKwkJCQkJfQorCisJCQkJfQorCisJCQkJZWxzZSBpZiAoc3RyRXF1YWxzKG5hbWUsICJJZCIpKSB7CisKKwkJCQkJLy8gRm9yIG5vdyBpZ25vcmUKKworCQkJCX0KKworCQkJCWVsc2UgeworCQkJCQlzYWZlQnVmZmVyIHRtcCwgZXJyb3I7CisKKwkJCQkJZXJyb3IgPDwgKCptcF9lbnYtPmdldFNCRm9ybWF0dGVyKCkgPDwgbmFtZSk7CisJCQkJCXRtcC5zYlN0cmNweUluKCJVbmtub3duIGF0dHJpYnV0ZSBpbiA8UmV0cmlldmFsTWV0aG9kPiBFbGVtZW50IDogIik7CisJCQkJCXRtcC5zYlN0cmNhdEluKGVycm9yKTsKKworCQkJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlVua25vd25EU0lHQXR0cmlidXRlLCB0bXAucmF3Q2hhckJ1ZmZlcigpKTsKKworCQkJCX0KKworCQkJfQorCisJCQlpZiAoaXNSYXdYNTA5ID09IHRydWUpIHsKKworCQkJCWlmIChVUkkgPT0gTlVMTCkgeworCisJCQkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWREU0lHQ2hpbGROb3RGb3VuZCwKKwkJCQkJCSJFeHBlY3RlZCB0byBmaW5kIGEgVVJJIGF0dHJpYnV0ZSBpbiBhIHJhd1g1MDlSZXRyaWV2YWxNZXRob2QgS2V5SW5mbyIpOworCisJCQkJfQorCisJCQkJRFNJR0tleUluZm9YNTA5ICogeDUwOTsKKwkJCQlYU0VDbmV3KHg1MDksIERTSUdLZXlJbmZvWDUwOShtcF9lbnYpKTsKKwkJCQl4NTA5LT5zZXRSYXdSZXRyaWV2YWxVUkkoVVJJKTsKKworCQkJCWFkZEtleUluZm8oeDUwOSk7CisKKwkJCX0KKworCQkJZWxzZSB7CisKKwkJCQkvLyBGaW5kIGJhc2UgdHJhbnNmb3JtIHVzaW5nIHRoZSBiYXNlIFVSSQorCQkJCWN1cnJlbnRUeGZtID0gRFNJR1JlZmVyZW5jZTo6Z2V0VVJJQmFzZVRYRk0obXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpLCBVUkksIG1wX2Vudik7CisJCQkJVFhGTUNoYWluICogY2hhaW47CisJCQkJWFNFQ25ldyhjaGFpbiwgVFhGTUNoYWluKGN1cnJlbnRUeGZtKSk7CisJCQkJSmFuaXRvcjxUWEZNQ2hhaW4+IGpfY2hhaW4oY2hhaW4pOworCisJCQkJLy8gTm93IGNoZWNrIGZvciB0cmFuc2Zvcm1zCisJCQkJRE9NTm9kZSAqIHRtcFRyYW4gPSB0bXBLSS0+Z2V0Rmlyc3RDaGlsZCgpOworCisJCQkJd2hpbGUgKHRtcFRyYW4gIT0gMCAmJiAodG1wVHJhbi0+Z2V0Tm9kZVR5cGUoKSAhPSBET01Ob2RlOjpFTEVNRU5UX05PREUpKQorCQkJCQkvLyBTa2lwIHRleHQgYW5kIGNvbW1lbnRzCisJCQkJICAgIHRtcFRyYW4gPSB0bXBUcmFuLT5nZXROZXh0U2libGluZygpOworCisJCQkJaWYgKHRtcFRyYW4gIT0gMCAmJiBzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZSh0bXBUcmFuKSwgIlRyYW5zZm9ybXMiKSkgeworCisKKwkJCQkJLy8gUHJvY2VzcyB0aGUgdHJhbnNmb3JtcyB1c2luZyB0aGUgc3RhdGljIGZ1bmN0aW9uLgorCQkJCQkvLyBGb3IgdGhlIG1vbWVudCB3ZSBkb24ndCByZWFsbHkgc3VwcG9ydCByZW1vdGUgS2V5SW5mb3MsIHNvCisJCQkJCS8vIEp1c3QgYnVpbHQgdGhlIHRyYW5zZm9ybSBsaXN0LCBwcm9jZXNzIGl0IGFuZCB0aGVuIGRlc3Ryb3kgaXQuCisKKwkJCQkJRFNJR1RyYW5zZm9ybUxpc3QgKiBsID0gRFNJR1JlZmVyZW5jZTo6bG9hZFRyYW5zZm9ybXMoCisJCQkJCSAgICB0bXBUcmFuLAorCQkJCQkJbXBfZW52LT5nZXRTQkZvcm1hdHRlcigpLAorCQkJCQkJbXBfZW52KTsKKworCQkJCQlEU0lHVHJhbnNmb3JtTGlzdDo6VHJhbnNmb3JtTGlzdFZlY3RvclR5cGU6OnNpemVfdHlwZSBzaXplLCBpOworCQkJCQlzaXplID0gbC0+Z2V0U2l6ZSgpOworCQkJCQlmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgKysgaSkgeworCQkJCQkJdHJ5IHsKKwkJCQkJCQlsLT5pdGVtKGkpLT5hcHBlbmRUcmFuc2Zvcm1lcihjaGFpbik7CisJCQkJCQl9CisJCQkJCQljYXRjaCAoLi4uKSB7CisJCQkJCQkJZGVsZXRlIGw7CisJCQkJCQkJdGhyb3c7CisJCQkJCQl9CisJCQkJCX0KKworCQkJCQlkZWxldGUgbDsKKworCQkJCX0KKworCQkJCS8vIEZpbmQgb3V0IHRoZSB0eXBlIG9mIHRoZSBmaW5hbCB0cmFuc2Zvcm0gYW5kIHByb2Nlc3MgYWNjb3JkaW5nbHkKKworCQkJCVRYRk1CYXNlOjpub2RlVHlwZSB0eXBlID0gY2hhaW4tPmdldExhc3RUeGZtKCktPmdldE5vZGVUeXBlKCk7CisKKwkJCQlYU0VDWFBhdGhOb2RlTGlzdCBsc3Q7CisJCQkJY29uc3QgRE9NTm9kZSAqIGVsZW1lbnQ7CisKKwkJCQlzd2l0Y2ggKHR5cGUpIHsKKworCQkJCWNhc2UgVFhGTUJhc2U6OkRPTV9OT0RFX0RPQ1VNRU5UIDoKKworCQkJCQlicmVhazsKKworCQkJCWNhc2UgVFhGTUJhc2U6OkRPTV9OT0RFX0RPQ1VNRU5UX0ZSQUdNRU5UIDoKKworCQkJCQllbGVtZW50ID0gY2hhaW4tPmdldExhc3RUeGZtKCktPmdldEZyYWdtZW50Tm9kZSgpOworCQkJCQlpZiAoZWxlbWVudCAhPSBOVUxMKQorCQkJCQkJYWRkWE1MS2V5SW5mbygoRE9NTm9kZSAqKSBlbGVtZW50KTsKKworCQkJCQlicmVhazsKKworCQkJCWNhc2UgVFhGTUJhc2U6OkRPTV9OT0RFX1hQQVRIX05PREVTRVQgOgorCisJCQkJCWxzdCA9IGNoYWluLT5nZXRMYXN0VHhmbSgpLT5nZXRYUGF0aE5vZGVMaXN0KCk7CisJCQkJCWVsZW1lbnQgPSBsc3QuZ2V0Rmlyc3ROb2RlKCk7CisKKwkJCQkJd2hpbGUgKGVsZW1lbnQgIT0gTlVMTCkgeworCisJCQkJCQkvLyBUcnkgdG8gYWRkIGVhY2ggZWxlbWVudCAtIGp1c3QgY2FsbCBLZXlJbmZvTGlzdCBhZGQgYXMgaXQgd2lsbAorCQkJCQkJLy8gZG8gdGhlIGNoZWNrIHRvIHNlZSBpZiBpdCBpcyBhIHZhbGlkIEtleUluZm8KKworCQkJCQkJYWRkWE1MS2V5SW5mbygoRE9NTm9kZSAqKSBlbGVtZW50KTsKKwkJCQkJCWVsZW1lbnQgPSBsc3QuZ2V0TmV4dE5vZGUoKTsKKworCQkJCQl9CisKKwkJCQkJYnJlYWs7CisKKwkJCQlkZWZhdWx0IDoKKworCQkJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhQYXRoRXJyb3IpOworCisJCQkJfQorCisJCQkJLy8gRGVsZXRlIHRoZSB0cmFuc2Zvcm0gY2hhaW4KKwkJCQljaGFpbi0+Z2V0TGFzdFR4Zm0oKS0+ZGVsZXRlRXhwYW5kZWROYW1lU3BhY2VzKCk7CisKKwkJCQkvLyBKYW5pdG9yIHdpbGwgY2xlYW4gdXAgY2hhaW4KKwkJCX0KKworCQl9IC8qIGlmIGdldE5vZGVOYW1lID09IFJldHJpZXZhbCBNZXRob2QgKi8KKworCQkvLyBOb3cganVzdCBydW4gdGhyb3VnaCBlYWNoIG5vZGUgdHlwZSBpbiB0dXJuIHRvIHByb2Nlc3MgImxvY2FsIiBLZXlJbmZvcworCisJCWVsc2UgeworICAgICAgICAgICAgLy8gVGhpcyB1c2VkIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUsIGFuZCB0aHJvdyBpZiB0aGUgY2hpbGQgd2FzIHVua25vd24uCisgICAgICAgICAgICAvLyBOb3csIHNob3VsZCBoYW5kbGUgYWxsIGNhc2VzLgorICAgICAgICAgICAgYWRkWE1MS2V5SW5mbyh0bXBLSSk7CisJCX0KKworCQlpZiAodG1wS0kgIT0gTlVMTCkKKwkJCXRtcEtJID0gdG1wS0ktPmdldE5leHRTaWJsaW5nKCk7CisKKwkJd2hpbGUgKHRtcEtJICE9IE5VTEwgJiYgKHRtcEtJLT5nZXROb2RlVHlwZSgpICE9IERPTU5vZGU6OkVMRU1FTlRfTk9ERSkpCisJCQl0bXBLSSA9IHRtcEtJLT5nZXROZXh0U2libGluZygpOworCisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ3JlYXRlIG5ldyBLZXlJbmZvIGVsZW1lbnRzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitET01FbGVtZW50ICogRFNJR0tleUluZm9MaXN0OjpjcmVhdGVLZXlJbmZvKHZvaWQpIHsKKworCS8vIEFzc3VtZSB0aGF0IHNvbWVvbmUgZWxzZSBoYXMgbG9va2VkIGFmdGVyIHRoZSBET00KKwllbXB0eSgpOworCisJc2FmZUJ1ZmZlciBzdHI7CisJRE9NRG9jdW1lbnQgKiBkb2MgPSBtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCk7CisKKwltYWtlUU5hbWUoc3RyLCBtcF9lbnYtPmdldERTSUdOU1ByZWZpeCgpLCAiS2V5SW5mbyIpOworCisJRE9NRWxlbWVudCAqIHJldCA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSURTSUcsIHN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKworCW1wX2tleUluZm9Ob2RlID0gcmV0OworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChtcF9rZXlJbmZvTm9kZSk7CisKKwlyZXR1cm4gcmV0OworCit9CisKKworRFNJR0tleUluZm9WYWx1ZSAqIERTSUdLZXlJbmZvTGlzdDo6YXBwZW5kRFNBS2V5VmFsdWUoY29uc3QgWE1MQ2ggKiBQLAorCQkJCQkJICAgY29uc3QgWE1MQ2ggKiBRLAorCQkJCQkJICAgY29uc3QgWE1MQ2ggKiBHLAorCQkJCQkJICAgY29uc3QgWE1MQ2ggKiBZKSB7CisKKwlpZiAobXBfa2V5SW5mb05vZGUgPT0gTlVMTCkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6S2V5SW5mb0Vycm9yLAorCQkJIktleUluZm9MaXN0IC0gQXR0ZW1wdCB0byBjcmVhdGUgRFNBS2V5VmFsdWUgYmVmb3JlIGNyZWF0aW5nIEtleUluZm8iKTsKKworCX0KKworCS8vIENyZWF0ZSB0aGUgbmV3IGVsZW1lbnQKKwlEU0lHS2V5SW5mb1ZhbHVlICogdjsKKwlYU0VDbmV3KHYsIERTSUdLZXlJbmZvVmFsdWUobXBfZW52KSk7CisKKwltcF9rZXlJbmZvTm9kZS0+YXBwZW5kQ2hpbGQodi0+Y3JlYXRlQmxhbmtEU0FLZXlWYWx1ZShQLCBRLCBHLCBZKSk7CisJbXBfZW52LT5kb1ByZXR0eVByaW50KG1wX2tleUluZm9Ob2RlKTsKKworCS8vIEFkZCB0byB0aGUgbGlzdAorCWFkZEtleUluZm8odik7CisKKwlyZXR1cm4gdjsKKworfQorCitEU0lHS2V5SW5mb1ZhbHVlICogRFNJR0tleUluZm9MaXN0OjphcHBlbmRSU0FLZXlWYWx1ZShjb25zdCBYTUxDaCAqIG1vZHVsdXMsCisJCQkJCQkgICBjb25zdCBYTUxDaCAqIGV4cG9uZW50KSB7CisKKwlpZiAobXBfa2V5SW5mb05vZGUgPT0gTlVMTCkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6S2V5SW5mb0Vycm9yLAorCQkJIktleUluZm9MaXN0IC0gQXR0ZW1wdCB0byBjcmVhdGUgUlNBS2V5VmFsdWUgYmVmb3JlIGNyZWF0aW5nIEtleUluZm8iKTsKKworCX0KKworCS8vIENyZWF0ZSB0aGUgbmV3IGVsZW1lbnQKKwlEU0lHS2V5SW5mb1ZhbHVlICogdjsKKwlYU0VDbmV3KHYsIERTSUdLZXlJbmZvVmFsdWUobXBfZW52KSk7CisKKwltcF9rZXlJbmZvTm9kZS0+YXBwZW5kQ2hpbGQodi0+Y3JlYXRlQmxhbmtSU0FLZXlWYWx1ZShtb2R1bHVzLCBleHBvbmVudCkpOworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChtcF9rZXlJbmZvTm9kZSk7CisKKwkvLyBBZGQgdG8gdGhlIGxpc3QKKwlhZGRLZXlJbmZvKHYpOworCisJcmV0dXJuIHY7CisKK30KKworCitEU0lHS2V5SW5mb1g1MDkgKiBEU0lHS2V5SW5mb0xpc3Q6OmFwcGVuZFg1MDlEYXRhKHZvaWQpIHsKKworCWlmIChtcF9rZXlJbmZvTm9kZSA9PSBOVUxMKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpLZXlJbmZvRXJyb3IsCisJCQkiS2V5SW5mb0xpc3QgLSBBdHRlbXB0IHRvIGNyZWF0ZSBYNTA5RGF0YSBiZWZvcmUgY3JlYXRpbmcgS2V5SW5mbyIpOworCisJfQorCisJRFNJR0tleUluZm9YNTA5ICogeDsKKworCVhTRUNuZXcoeCwgRFNJR0tleUluZm9YNTA5KG1wX2VudikpOworCisJbXBfa2V5SW5mb05vZGUtPmFwcGVuZENoaWxkKHgtPmNyZWF0ZUJsYW5rWDUwOURhdGEoKSk7CisJbXBfZW52LT5kb1ByZXR0eVByaW50KG1wX2tleUluZm9Ob2RlKTsKKworCS8vIEFkZCB0byB0aGUgbGlzdAorCWFkZEtleUluZm8oeCk7CisKKwlyZXR1cm4geDsKKworfQorCitEU0lHS2V5SW5mb05hbWUgKiBEU0lHS2V5SW5mb0xpc3Q6OmFwcGVuZEtleU5hbWUoY29uc3QgWE1MQ2ggKiBuYW1lLCBib29sIGlzRE5hbWUpIHsKKworCWlmIChtcF9rZXlJbmZvTm9kZSA9PSBOVUxMKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpLZXlJbmZvRXJyb3IsCisJCQkiS2V5SW5mb0xpc3QgLSBBdHRlbXB0IHRvIGNyZWF0ZSBLZXlOYW1lIGJlZm9yZSBjcmVhdGluZyBLZXlJbmZvIik7CisKKwl9CisKKwlEU0lHS2V5SW5mb05hbWUgKiBuOworCisJWFNFQ25ldyhuLCBEU0lHS2V5SW5mb05hbWUobXBfZW52KSk7CisKKwltcF9rZXlJbmZvTm9kZS0+YXBwZW5kQ2hpbGQobi0+Y3JlYXRlQmxhbmtLZXlOYW1lKG5hbWUsIGlzRE5hbWUpKTsKKwltcF9lbnYtPmRvUHJldHR5UHJpbnQobXBfa2V5SW5mb05vZGUpOworCisJLy8gQWRkIHRvIHRoZSBsaXN0CisJYWRkS2V5SW5mbyhuKTsKKworCXJldHVybiBuOworCit9CisKK0RTSUdLZXlJbmZvUEdQRGF0YSAqIERTSUdLZXlJbmZvTGlzdDo6YXBwZW5kUEdQRGF0YShjb25zdCBYTUxDaCAqIGlkLCBjb25zdCBYTUxDaCAqIHBhY2tldCkgeworCisJaWYgKG1wX2tleUluZm9Ob2RlID09IE5VTEwpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OktleUluZm9FcnJvciwKKwkJCSJLZXlJbmZvTGlzdCAtIEF0dGVtcHQgdG8gY3JlYXRlIFBHUERhdGEgYmVmb3JlIGNyZWF0aW5nIEtleUluZm8iKTsKKworCX0KKworCURTSUdLZXlJbmZvUEdQRGF0YSAqIHA7CisKKwlYU0VDbmV3KHAsIERTSUdLZXlJbmZvUEdQRGF0YShtcF9lbnYpKTsKKworCW1wX2tleUluZm9Ob2RlLT5hcHBlbmRDaGlsZChwLT5jcmVhdGVCbGFua1BHUERhdGEoaWQsIHBhY2tldCkpOworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChtcF9rZXlJbmZvTm9kZSk7CisKKwlhZGRLZXlJbmZvKHApOworCisJcmV0dXJuIHA7CisKK30KKworRFNJR0tleUluZm9TUEtJRGF0YSAqIERTSUdLZXlJbmZvTGlzdDo6YXBwZW5kU1BLSURhdGEoY29uc3QgWE1MQ2ggKiBzZXhwKSB7CisKKwlpZiAobXBfa2V5SW5mb05vZGUgPT0gTlVMTCkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6S2V5SW5mb0Vycm9yLAorCQkJIktleUluZm9MaXN0IC0gQXR0ZW1wdCB0byBjcmVhdGUgU1BLSURhdGEgYmVmb3JlIGNyZWF0aW5nIEtleUluZm8iKTsKKworCX0KKworCURTSUdLZXlJbmZvU1BLSURhdGEgKiBzOworCisJWFNFQ25ldyhzLCBEU0lHS2V5SW5mb1NQS0lEYXRhKG1wX2VudikpOworCisJbXBfa2V5SW5mb05vZGUtPmFwcGVuZENoaWxkKHMtPmNyZWF0ZUJsYW5rU1BLSURhdGEoc2V4cCkpOworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChtcF9rZXlJbmZvTm9kZSk7CisKKwlhZGRLZXlJbmZvKHMpOworCisJcmV0dXJuIHM7CisKK30KKworRFNJR0tleUluZm9NZ210RGF0YSAqIERTSUdLZXlJbmZvTGlzdDo6YXBwZW5kTWdtdERhdGEoY29uc3QgWE1MQ2ggKiBkYXRhKSB7CisKKwlpZiAobXBfa2V5SW5mb05vZGUgPT0gTlVMTCkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6S2V5SW5mb0Vycm9yLAorCQkJIktleUluZm9MaXN0IC0gQXR0ZW1wdCB0byBjcmVhdGUgTWdtdERhdGEgYmVmb3JlIGNyZWF0aW5nIEtleUluZm8iKTsKKworCX0KKworCURTSUdLZXlJbmZvTWdtdERhdGEgKiBtOworCisJWFNFQ25ldyhtLCBEU0lHS2V5SW5mb01nbXREYXRhKG1wX2VudikpOworCisJbXBfa2V5SW5mb05vZGUtPmFwcGVuZENoaWxkKG0tPmNyZWF0ZUJsYW5rTWdtdERhdGEoZGF0YSkpOworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChtcF9rZXlJbmZvTm9kZSk7CisKKwlhZGRLZXlJbmZvKG0pOworCisJcmV0dXJuIG07CisKK30KKworRFNJR0tleUluZm9ERVJFbmNvZGVkICogRFNJR0tleUluZm9MaXN0OjphcHBlbmRERVJFbmNvZGVkKGNvbnN0IFhNTENoICogZGF0YSkgeworCisJaWYgKG1wX2tleUluZm9Ob2RlID09IE5VTEwpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OktleUluZm9FcnJvciwKKwkJCSJLZXlJbmZvTGlzdCAtIEF0dGVtcHQgdG8gY3JlYXRlIERFUkVuY29kZWRLZXlWYWx1ZSBiZWZvcmUgY3JlYXRpbmcgS2V5SW5mbyIpOworCisJfQorCisJRFNJR0tleUluZm9ERVJFbmNvZGVkICogZDsKKworCVhTRUNuZXcoZCwgRFNJR0tleUluZm9ERVJFbmNvZGVkKG1wX2VudikpOworCisJbXBfa2V5SW5mb05vZGUtPmFwcGVuZENoaWxkKGQtPmNyZWF0ZUJsYW5rREVSRW5jb2RlZChkYXRhKSk7CisJbXBfZW52LT5kb1ByZXR0eVByaW50KG1wX2tleUluZm9Ob2RlKTsKKworCWFkZEtleUluZm8oZCk7CisKKwlyZXR1cm4gZDsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFNvbWUgaGVscGVyIGZ1bmN0aW9ucworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBEU0lHS2V5SW5mb0xpc3Q6OmFkZEFuZEluc2VydEtleUluZm8oRFNJR0tleUluZm8gKiByZWYpIHsKKworCWlmIChtcF9rZXlJbmZvTm9kZSA9PSBOVUxMKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpLZXlJbmZvRXJyb3IsCisJCQkiS2V5SW5mb0xpc3QgLSBBdHRlbXB0IHRvIGNyZWF0ZSBjaGlsZCBiZWZvcmUgY3JlYXRpbmcgS2V5SW5mbyIpOworCisJfQorCisJbXBfa2V5SW5mb05vZGUtPmFwcGVuZENoaWxkKHJlZi0+Z2V0S2V5SW5mb0RPTU5vZGUoKSk7CisJbXBfZW52LT5kb1ByZXR0eVByaW50KG1wX2tleUluZm9Ob2RlKTsKKworCWFkZEtleUluZm8ocmVmKTsKKworfQpkaWZmIC0tZ2l0IGEvYy9zcmMvZHNpZy9EU0lHS2V5SW5mb0xpc3QuaHBwIGIvYy9zcmMvZHNpZy9EU0lHS2V5SW5mb0xpc3QuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4ODk1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvTGlzdC5ocHAKQEAgLTAsMCArMSwzNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDEwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIERTSUdLZXlJbmZvTGlzdCA6PSBDbGFzcyBmb3IgTG9hZGluZyBhbmQgc3RvcmluZyBhIGxpc3Qgb2YgS2V5SW5mbyBlbGVtZW50cworICoJCQkJCSAKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBEU0lHS0VZSU5GT0xJU1RfSU5DTFVERQorI2RlZmluZSBEU0lHS0VZSU5GT0xJU1RfSU5DTFVERQorCisKKy8vIFhTRUMgSW5jbHVkZXMKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdLZXlJbmZvLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNTYWZlQnVmZmVyRm9ybWF0dGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvS2V5LmhwcD4KKworLy8gWGVyY2VzCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD4KKworLy8gR2VuZXJhbCBpbmNsdWRlcworI2luY2x1ZGUgPHZlY3Rvcj4KKworLy8gRm9yd2FyZCBkZWZpbml0aW9ucworY2xhc3MgRFNJR0tleUluZm9WYWx1ZTsKK2NsYXNzIERTSUdLZXlJbmZvREVSRW5jb2RlZDsKK2NsYXNzIERTSUdLZXlJbmZvWDUwOTsKK2NsYXNzIERTSUdLZXlJbmZvTmFtZTsKK2NsYXNzIERTSUdLZXlJbmZvUEdQRGF0YTsKK2NsYXNzIERTSUdLZXlJbmZvU1BLSURhdGE7CitjbGFzcyBEU0lHS2V5SW5mb01nbXREYXRhOworY2xhc3MgRFNJR1NpZ25hdHVyZTsKKworLyoqCisgKiBAaW5ncm91cCBwdWJzaWcKKyAqLworCisvKioKKyAqIFxicmllZiBDb250YWluZXIgY2xhc3MgZm9yIEtleUluZm8gZWxlbWVudHMuCisgKgorICogVGhlIGxpYnJhcnkgc3RvcmVzIEtleUluZm8gbGlzdHMgdXNpbmcgdGhpcyBjbGFzcy4KKyAqLworCitjbGFzcyBEU0lHX0VYUE9SVCBEU0lHS2V5SW5mb0xpc3QgeworCitwdWJsaWM6CisKKyNpZiBkZWZpbmVkKFhTRUNfTk9fTkFNRVNQQUNFUykKKwl0eXBlZGVmIHZlY3RvcjxEU0lHS2V5SW5mbyAqPgkJCUtleUluZm9MaXN0VmVjdG9yVHlwZTsKKyNlbHNlCisJdHlwZWRlZiBzdGQ6OnZlY3RvcjxEU0lHS2V5SW5mbyAqPgkJS2V5SW5mb0xpc3RWZWN0b3JUeXBlOworI2VuZGlmCisKKyNpZiBkZWZpbmVkKFhTRUNfU0laRV9UX0lOX05BTUVTUEFDRV9TVEQpCisJdHlwZWRlZiBzdGQ6OnNpemVfdAkJc2l6ZV90eXBlOworI2Vsc2UKKwl0eXBlZGVmIHNpemVfdAkJCXNpemVfdHlwZTsKKyNlbmRpZgorCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgTWFpbiBjb25zdHJ1Y3RvcgorCSAqCisJICogTWFpbiBjb25zdHJ1Y3RvciBjYWxsZWQgYnkgRFNJR1NpZ25hdHVyZQorCSAqCisJICogQG5vdGUgU2hvdWxkIG9ubHkgZXZlciBiZSBjcmVhdGVkIGJ5IGEgU2lnbmF0dXJlIG9yIENpcGhlciBjbGFzcy4KKwkgKgorCSAqIEBwYXJhbSBlbnYgVGhlIGVudmlyb25tZW50IHRoZSBLZXlJbmZvIGlzIG9wZXJhdGluZyB3aXRoaW4KKwkgKi8KKworCURTSUdLZXlJbmZvTGlzdChjb25zdCBYU0VDRW52ICogZW52KTsKKworCS8qKgorCSAqIFxicmllZiBEZXN0cnVjdG9yCisJICovCisKKwl+RFNJR0tleUluZm9MaXN0KCk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgUHVibGljIChBUEkpIGZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBHZXQgc2l6ZSBvZiBsaXN0CisJICoKKwkgKiBAcmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBsaXN0CisJICovCisKKwlzaXplX3QgZ2V0U2l6ZSgpIGNvbnN0OworCisJLyoKKwkgKiBcYnJpZWYgR2V0IGFuIGl0ZW0KKwkgKgorCSAqIFJldHVybnMgdGhlIGl0ZW0gYXQgaW5kZXggcG9pbnQgaW4gdGhlIGxpc3QKKwkgKgorCSAqIEBub3RlIFRoaXMgaXMgYW4gaW50ZXJuYWwgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5CisJICoKKwkgKiBAcGFyYW0gaW5kZXggUG9pbnRlciBpbnRvIHRoZSBsaXN0CisJICogQHJldHVybnMgVGhlIGluZGljYXRlZCBlbGVtZW50IG9yIDAgaWYgaXQgZG9lcyBub3QgZXhpc3QuCisJICovCisKKwlEU0lHS2V5SW5mbyAqIGl0ZW0oc2l6ZV90eXBlIGluZGV4KTsKKworCS8qCisJICogXGJyaWVmIEdldCBhbiBpdGVtCisJICoKKwkgKiBSZXR1cm5zIHRoZSBpdGVtIGF0IGluZGV4IHBvaW50IGluIHRoZSBsaXN0CisJICoKKwkgKiBAbm90ZSBUaGlzIGlzIGFuIGludGVybmFsIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseQorCSAqCisJICogQHBhcmFtIGluZGV4IFBvaW50ZXIgaW50byB0aGUgbGlzdAorCSAqIEByZXR1cm5zIFRoZSBpbmRpY2F0ZWQgZWxlbWVudCBvciAwIGlmIGl0IGRvZXMgbm90IGV4aXN0LgorCSAqLworCisJY29uc3QgRFNJR0tleUluZm8gKiBpdGVtKHNpemVfdHlwZSBpbmRleCkgY29uc3Q7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgTWFuaXB1bGF0ZSB0aGUgTGlzdCAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBBZGQgYW4gYWxyZWFkeSBjcmVhdGVkIEtleUluZm8gCisJICoKKwkgKiBBZGRzIGEgS2V5SW5mbyBlbGVtZW50IHRoYXQgaGFzIGFscmVhZHkgYmVlbiBidWlsdAorCSAqIGludG8gdGhlIGxpc3QuCisJICoKKwkgKiBAbm90ZSBUaGlzIG1ldGhvZCBkb2VzIDxiPm5vdDwvYj4gaW5zZXJ0IHRoZSBLZXlJbmZvIGludG8gdGhlIERPTQorCSAqIHN0cnVjdHVyZSAtIGl0IGFzc3VtZXMgaXQgaXMgYWxyZWFkeSB0aGVyZSBhbmQganVzdCBhZGRzIHRvIHRoZSBsaXN0LgorCSAqIEBwYXJhbSByZWYgVGhlIEtleUluZm8gdG8gYWRkCisJICovCisKKwl2b2lkIGFkZEtleUluZm8oRFNJR0tleUluZm8gKiByZWYpOworCisJLyoqCisJICogXGJyaWVmIEFkZCBhbiBhbHJlYWR5IGNyZWF0ZWQgS2V5SW5mbyAKKwkgKgorCSAqIEFkZHMgYSBLZXlJbmZvIGVsZW1lbnQgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGJ1aWx0CisJICogaW50byB0aGUgbGlzdC4KKwkgKgorCSAqIEBub3RlIFRoaXMgbWV0aG9kIGZpbmRzIHRoZSBET00gbm9kZSBvZiB0aGUgS2V5SW5mbyBhbmQgaW5zZXJ0cyBpdAorCSAqIGludG8gdGhlIDxLZXlJbmZvLz4gbGlzdCBpbiB0aGUgRE9NLgorCSAqIEBwYXJhbSByZWYgVGhlIEtleUluZm8gdG8gYWRkCisJICovCisKKwl2b2lkIGFkZEFuZEluc2VydEtleUluZm8oRFNJR0tleUluZm8gKiByZWYpOwkKKwkKKwkvKioKKwkgKiBcYnJpZWYgUmVhZCBmcm9tIERPTSBhbmQgY3JlYXRlLgorCSAqCisJICogVXNlcyBhIERPTU5vZGUgcG9pbnRpbmcgdG8gdGhlIHN0YXJ0IG9mIHRoZSBLZXlJbmZvIGVsZW1lbnQKKwkgKiB0byBidWlsZCBhIG5ldyBLZXlJbmZvIGFuZCB0aGVuIGFkZCBpdCB0byB0aGUgbGlzdAorCSAqCisJICogQG5vdGUgVGhpcyBpcyBhbiBpbnRlcm5hbCBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkKKwkgKgorCSAqIEBwYXJhbSBraSBIZWFkIG9mIERPTSBzdHJ1Y3R1cmUgd2l0aCB0aGUgS2V5SW5mbworCSAqIEByZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bGx5IGxvYWRlZAorCSAqLworCisJYm9vbCBhZGRYTUxLZXlJbmZvKFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICpraSk7CisKKwkvKioKKwkgKiBcYnJpZWYgUmVhZCBmdWxsIGxpc3QgZnJvbSBET00KKwkgKgorCSAqIFdpbGwgdGFrZSB0aGUgc3RhcnRpbmcgbm9kZSBvZiBhIEtleUluZm8gbGlzdCBhbmQgcmVhZCBpbnRvIHRoZQorCSAqIGxpc3Qgc3RydWN0dXJlLiAgVGhpcyBpcyBhIGJpdCBkaWZmZXJlbnQgZnJvbSBvdGhlciAibG9hZCIKKwkgKiBmdW5jdGlvbnMsIGluIHRoYXQgaXQgdGFrZXMgYSBub2RlIGFzIGEgcGFyYW1ldGVyLgorCSAqCisJICogQG5vdGUgVGhpcyBpcyBhbiBpbnRlcm5hbCBmdW5jdGlvbnMgYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5CisJICoKKwkgKiBAcGFyYW0gbm9kZSBUaGUgXDxLZXlJbmZvXD4gZWxlbWVudCBub2RlIHRvIHJlYWQgZnJvbQorCSAqLworCisJYm9vbCBsb2FkTGlzdEZyb21YTUwoWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUgKiBub2RlKTsKKworCS8qCisJICogXGJyaWVmIFJlbW92ZSBhIEtleUluZm8gZnJvbSB0aGUgbGlzdAorCSAqCisJICogUmVtb3ZlcyB0aGUgS2V5SW5mbyBlbGVtZW50IGF0IHRoZSBpbmRpY2F0ZWQgaW5kZXggcG9pbnQgaW4gdGhlIGxpc3QKKwkgKgorCSAqIEBwYXJhbSBpbmRleCBQb2ludGVyIGluIHRoZSBsaXN0IHRvIHJlbW92ZSBlbGVtZW50IGZyb20KKwkgKiBAcmV0dXJucyBUaGUgcmVtb3ZlZCBLZXlJbmZvIGVsZW1lbnQKKwkgKi8KKworCURTSUdLZXlJbmZvICogcmVtb3ZlS2V5SW5mbyhzaXplX3R5cGUgaW5kZXgpOworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUgb3ZlcmFyY2hpbmcgZW52aXJvbm1lbnQKKwkgKgorCSAqIFNldHMgdGhlIGVudmlyb25tZW50IHRoaXMgbGlzdCBpcyBvcGVyYXRpbmcgd2l0aGluCisJICoKKwkgKiBAcGFyYW0gZW52IE9wZXJhdGluZyBlbnZpcm9ubWVudAorCSAqLworCisJdm9pZCBzZXRFbnZpcm9ubWVudChjb25zdCBYU0VDRW52ICogZW52KSB7bXBfZW52ID0gZW52O30KKworCS8qKgorCSAqIFxicmllZiBDbGVhciBvdXQgdGhlIGxpc3QKKwkgKgorCSAqIFJlbW92ZXMgYWxsIGVsZW1lbnRzIGZyb20gdGhlIGxpc3QKKwkgKgorCSAqIEBub3RlIERlbGV0ZXMgdGhlIGl0ZW1zIHRoZW1zZWx2ZXMgYXMgd2VsbCBhcyBjbGVhcmluZyB0aGUgbGlzdC4KKwkgKi8KKworCXZvaWQgZW1wdHkoKTsKKwkKKwkvKioKKwkgKiBcYnJpZWYgSXMgdGhlIGxpc3QgZW1wdHk/CisJICoKKwkgKiBAcmV0dXJucyB0cnVlIElmZiB0aGVyZSBhcmUgbm8gZWxlbWVudHMgaW4gdGhlIGxpc3QKKwkgKi8KKworCWJvb2wgaXNFbXB0eSgpIGNvbnN0OworCisJLy9AfQorCisJLyoqIEBuYW1lIENyZWF0ZSBuZXcgS2V5SW5mbyBlbGVtZW50cyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBDcmVhdGUgYmFzaWMgS2V5SW5mbyBlbGVtZW50LgorCSAqCisJICogQ3JlYXRlcyB0aGUgYmFzaWMgS2V5SW5mbyBub2RlIHRoYXQgY2FuIHRoZW4gYmUgdXNlZCB0bworCSAqIGVtYmVkIHNwZWNpZmljIEtleUluZm8gdHlwZXMKKwkgKi8KKworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogCisJCWNyZWF0ZUtleUluZm8odm9pZCk7CisKKwkvKioKKwkgKiBcYnJpZWYgQXBwZW5kIGEgRFNBIEtleVZhbHVlIGVsZW1lbnQgCisJICoKKwkgKiBBZGQgYSBuZXcgS2V5SW5mbyBlbGVtZW50IGZvciBhIERTQSBWYWx1ZQorCSAqCisJICogQHBhcmFtIFAgQmFzZTY0IGVuY29kZWQgdmFsdWUgb2YgUAorCSAqIEBwYXJhbSBRIEJhc2U2NCBlbmNvZGVkIHZhbHVlIG9mIFEKKwkgKiBAcGFyYW0gRyBCYXNlNjQgZW5jb2RlZCB2YWx1ZSBvZiBHCisJICogQHBhcmFtIFkgQmFzZTY0IGVuY29kZWQgdmFsdWUgb2YgWQorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgY3JlYXRlZCBvYmplY3QuCisJICovCisKKwlEU0lHS2V5SW5mb1ZhbHVlICogYXBwZW5kRFNBS2V5VmFsdWUoY29uc3QgWE1MQ2ggKiBQLCAKKwkJCQkJCSAgIGNvbnN0IFhNTENoICogUSwgCisJCQkJCQkgICBjb25zdCBYTUxDaCAqIEcsIAorCQkJCQkJICAgY29uc3QgWE1MQ2ggKiBZKTsKKworCS8qKgorCSAqIFxicmllZiBBcHBlbmQgYSBSU0EgS2V5VmFsdWUgZWxlbWVudCAKKwkgKgorCSAqIEFkZCBhIG5ldyBLZXlJbmZvIGVsZW1lbnQgZm9yIGEgUlNBIFZhbHVlCisJICoKKwkgKiBAcGFyYW0gbW9kdWx1cyBCYXNlNjQgZW5jb2RlZCB2YWx1ZSBvZiB0aGUgbW9kdWx1cworCSAqIEBwYXJhbSBleHBvbmVudCBCYXNlNjQgZW5jb2RlZCB2YWx1ZSBvZiBleHBvbmVudAorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgY3JlYXRlZCBvYmplY3QuCisJICovCisKKwlEU0lHS2V5SW5mb1ZhbHVlICogYXBwZW5kUlNBS2V5VmFsdWUoY29uc3QgWE1MQ2ggKiBtb2R1bHVzLCAKKwkJCQkJCSAgIGNvbnN0IFhNTENoICogZXhwb25lbnQpOworCisJLyoqCisJICogXGJyaWVmIEFwcGVuZCBhbiBFQyBLZXlWYWx1ZSBlbGVtZW50IAorCSAqCisJICogQWRkIGEgbmV3IEtleUluZm8gZWxlbWVudCBmb3IgYW4gRUMgVmFsdWUKKwkgKgorCSAqIEBwYXJhbSBjdXJ2ZU5hbWUgVVJJIChnZW5lcmFsbHkgdXJuOm9pZDouLi4pIHRoYXQgaWRlbnRpZmllcyB0aGUgY3VydmUKKwkgKiBAcGFyYW0ga2V5VmFsdWUgQmFzZTY0IGVuY29kZWQgcHVibGljIGtleQorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgY3JlYXRlZCBvYmplY3QuCisJICovCisKKwlEU0lHS2V5SW5mb1ZhbHVlICogYXBwZW5kRUNLZXlWYWx1ZShjb25zdCBYTUxDaCAqIGN1cnZlTmFtZSwgCisJCQkJCQkgICBjb25zdCBYTUxDaCAqIGtleVZhbHVlKTsKKworCS8qKgorCSAqIFxicmllZiBBcHBlbmQgYSBYNTA5RGF0YSBlbGVtZW50LgorCSAqCisJICogQWRkIGEgbmV3IEtleUluZm8gZWxlbWVudCBmb3IgWDUwOSBkYXRhLgorCSAqCisJICogQG5vdGUgVGhlIGFkZGVkIGVsZW1lbnQgaXMgZW1wdHkuICBUaGUgY2FsbGVyIG11c3QgbWFrZSB1c2Ugb2YgdGhlCisJICogcmV0dXJuZWQgb2JqZWN0IHRvIHNldCB0aGUgcmVxdWlyZWQgdmFsdWVzLgorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBjcmVhdGVkIG9iamVjdC4KKwkgKi8KKworCURTSUdLZXlJbmZvWDUwOSAqIGFwcGVuZFg1MDlEYXRhKHZvaWQpOworCisJLyoqCisJICogXGJyaWVmIEFwcGVuZCBhIEtleU5hbWUgZWxlbWVudC4KKwkgKgorCSAqIEFkZCBhIG5ldyBLZXlJbmZvIGVsZW1lbnQgZm9yIGEga2V5IG5hbWUuCisJICoKKwkgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUga2V5IHRvIHNldCBpbiB0aGUgWE1MCisJICogQHBhcmFtIGlzRE5hbWUgVHJlYXQgdGhlIG5hbWUgYXMgYSBEaXN0aW5ndWlzaGVkIG5hbWUgYW5kIGVuY29kZSBhY2NvcmRpbmdseQorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgY3JlYXRlZCBvYmplY3QKKwkgKi8KKworCURTSUdLZXlJbmZvTmFtZSAqIGFwcGVuZEtleU5hbWUoY29uc3QgWE1MQ2ggKiBuYW1lLCBib29sIGlzRE5hbWUgPSBmYWxzZSk7CisKKwkvKioKKwkgKiBcYnJpZWYgQXBwZW5kIGEgUEdQRGF0YSBlbGVtZW50LgorCSAqCisJICogQWRkIGEgbmV3IEtleUluZm8gZWxlbWVudCBmb3IgYSBQR1Aga2V5LgorCSAqCisJICogQHBhcmFtIGlkIFRoZSBJRCBvZiB0aGUga2V5IHRvIHNldCBpbiB0aGUgWE1MIChiYXNlNjQgZW5jb2RlZCAtIE5VTEwgaWYgbm9uZSkKKwkgKiBAcGFyYW0gcGFja2V0IFRoZSBQYWNrZXQgaW5mb3JtYXRpb24gdG8gc2V0IGluIHRoZSBYTUwgKGJhc2U2NCBlbmNvZGVkIC0KKwkgKiBOVUxMIGlmIG5vbmUpCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBjcmVhdGVkIG9iamVjdAorCSAqLworCisJRFNJR0tleUluZm9QR1BEYXRhICogYXBwZW5kUEdQRGF0YShjb25zdCBYTUxDaCAqIGlkLCBjb25zdCBYTUxDaCAqIHBhY2tldCk7CisKKwkvKioKKwkgKiBcYnJpZWYgQXBwZW5kIGEgU1BLSURhdGEgZWxlbWVudAorCSAqCisJICogQWRkIGEgbmV3IEtleUluZm8gZWxlbWVudCBmb3IgYSBzZXQgb2YgU1BLSSBTLWV4cHJlc3Npb25zCisJICoKKwkgKiBAcGFyYW0gc2V4cCBUaGUgaW5pdGlhbCBTLWV4cHJlc3Npb24gdG8gc2V0IGluIHRoZSBTUEtJRGF0YSBlbGVtZW50CisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBjcmVhdGVkIG9iamVjdAorCSAqLworCisJRFNJR0tleUluZm9TUEtJRGF0YSAqIGFwcGVuZFNQS0lEYXRhKGNvbnN0IFhNTENoICogc2V4cCk7CisKKwkvKioKKwkgKiBcYnJpZWYgQXBwZW5kIGEgTWdtdERhdGEgZWxlbWVudAorCSAqCisJICogQWRkIGEgbmV3IEtleUluZm8gZWxlbWVudCBmb3IgTWFuYWdlbWVudCBEYXRhCisJICoKKwkgKiBAcGFyYW0gZGF0YSBUaGUgc3RyaW5nIHRvIHNldCBpbiB0aGUgTWdtdERhdGEgZWxlbWVudAorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgY3JlYXRlZCBvYmplY3QKKwkgKi8KKworCURTSUdLZXlJbmZvTWdtdERhdGEgKiBhcHBlbmRNZ210RGF0YShjb25zdCBYTUxDaCAqIGRhdGEpOworCisJLyoqCisJICogXGJyaWVmIEFwcGVuZCBhIERFUkVuY29kZWRLZXlWYWx1ZSBlbGVtZW50CisJICoKKwkgKiBBZGQgYSBuZXcgS2V5SW5mbyBlbGVtZW50IGZvciBhIERFUkVuY29kZWRLZXlWYWx1ZQorCSAqCisJICogQHBhcmFtIGRhdGEgVGhlIGRhdGEgdG8gc2V0IGluIHRoZSBERVJFbmNvZGVkS2V5VmFsdWUgZWxlbWVudAorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgY3JlYXRlZCBvYmplY3QKKwkgKi8KKworCURTSUdLZXlJbmZvREVSRW5jb2RlZCAqIGFwcGVuZERFUkVuY29kZWQoY29uc3QgWE1MQ2ggKiBkYXRhKTsKKworCS8vQH0KKworcHJpdmF0ZToKKworCURTSUdLZXlJbmZvTGlzdCgpOworCisJS2V5SW5mb0xpc3RWZWN0b3JUeXBlCQkJCQltX2tleUluZm9MaXN0OworCWNvbnN0IFhTRUNFbnYJCQkJCQkJKiBtcF9lbnY7CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUJKiBtcF9rZXlJbmZvTm9kZTsKKwkvLyBLZXlJbmZvTGlzdFZlY3RvclR5cGU6Oml0ZXJhdG9yCQkJbV9pdGVyYXRvcjsKK307CisKKworI2VuZGlmIC8qIERTSUdLRVlJTkZPTElTVF9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvTWdtdERhdGEuY3BwIGIvYy9zcmMvZHNpZy9EU0lHS2V5SW5mb01nbXREYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2JhODA1Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZHNpZy9EU0lHS2V5SW5mb01nbXREYXRhLmNwcApAQCAtMCwwICsxLDE1NSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogRFNJR0tleUluZm9NZ210RGF0YSA6PSBJbmJhbmQga2V5IGluZm9ybWF0aW9uCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdLZXlJbmZvTWdtdERhdGEuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDRE9NVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHU2lnbmF0dXJlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRW52LmhwcD4KKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9KYW5pdG9yLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitEU0lHS2V5SW5mb01nbXREYXRhOjpEU0lHS2V5SW5mb01nbXREYXRhKGNvbnN0IFhTRUNFbnYgKiBlbnYsIERPTU5vZGUgKm5hbWVOb2RlKSA6IAorRFNJR0tleUluZm8oZW52KSwKK21wX2RhdGEoTlVMTCksCittcF9kYXRhVGV4dE5vZGUoMCkgeworCisJbXBfa2V5SW5mb0RPTU5vZGUgPSBuYW1lTm9kZTsKKworfQorCisKK0RTSUdLZXlJbmZvTWdtdERhdGE6OkRTSUdLZXlJbmZvTWdtdERhdGEoY29uc3QgWFNFQ0VudiAqIGVudikgOiAKK0RTSUdLZXlJbmZvKGVudiksCittcF9kYXRhKE5VTEwpLAorbXBfZGF0YVRleHROb2RlKDApIHsKKworCW1wX2tleUluZm9ET01Ob2RlID0gMDsKKworfQorCisKK0RTSUdLZXlJbmZvTWdtdERhdGE6On5EU0lHS2V5SW5mb01nbXREYXRhKCkgeworCisKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgTG9hZCBhbmQgR2V0IGZ1bmN0aW9ucworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCit2b2lkIERTSUdLZXlJbmZvTWdtdERhdGE6OmxvYWQodm9pZCkgeworCisJLy8gQXNzdW1pbmcgd2UgaGF2ZSBhIHZhbGlkIERPTV9Ob2RlIHRvIHN0YXJ0IHdpdGgsIGxvYWQgdGhlIHNpZ25pbmcga2V5IHNvIHRoYXQgaXQgY2FuCisJLy8gYmUgdXNlZCBsYXRlciBvbgorCisJaWYgKG1wX2tleUluZm9ET01Ob2RlID09IE5VTEwpIHsKKworCQkvLyBBdHRlbXB0IHRvIGxvYWQgYW4gZW1wdHkgc2lnbmF0dXJlIGVsZW1lbnQKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpLZXlJbmZvRXJyb3IsCisJCQkiRFNJR0tleUluZm9NZ210RGF0YTo6bG9hZCAtIGNhbGxlZCBvbiBlbXB0eSBET00iKTsKKworCX0KKworCWlmICghc3RyRXF1YWxzKGdldERTSUdMb2NhbE5hbWUobXBfa2V5SW5mb0RPTU5vZGUpLCAiTWdtdERhdGEiKSkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6S2V5SW5mb0Vycm9yLAorCQkJIkRTSUdLZXlJbmZvTWdtdERhdGE6OmxvYWQgLSBjYWxsZWQgb24gbm9uIDxNZ210RGF0YT4gbm9kZSIpOworCisJfQorCisJLy8gTm93IGZpbmQgdGhlIHRleHQgbm9kZSBjb250YWluaW5nIHRoZSBuYW1lCisKKwlET01Ob2RlICp0bXBFbHQgPSBmaW5kRmlyc3RDaGlsZE9mVHlwZShtcF9rZXlJbmZvRE9NTm9kZSwgRE9NTm9kZTo6VEVYVF9OT0RFKTsKKworCWlmICh0bXBFbHQgIT0gMCkgeworCisJCW1wX2RhdGFUZXh0Tm9kZSA9IHRtcEVsdDsKKwkJbXBfZGF0YSA9IHRtcEVsdC0+Z2V0Tm9kZVZhbHVlKCk7CisKKwl9CisKKwllbHNlIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkRFNJR0NoaWxkTm90Rm91bmQsCisJCQkiRFNJR0tleUluZm9NZ210RGF0YTo6bG9hZCAtIEV4cGVjdGVkIFRFWFQgbm9kZSBhcyBjaGlsZCB0byA8TWdtdERhdGE+IGVsZW1lbnQiKTsKKworCX0KKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENyZWF0ZSBhbmQgU2V0IGZ1bmN0aW9ucworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRE9NRWxlbWVudCAqIERTSUdLZXlJbmZvTWdtdERhdGE6OmNyZWF0ZUJsYW5rTWdtdERhdGEoY29uc3QgWE1MQ2ggKiBkYXRhKSB7CisKKwkvLyBDcmVhdGUgdGhlIERPTSBTdHJ1Y3R1cmUKKworCXNhZmVCdWZmZXIgc3RyOworCURPTURvY3VtZW50ICpkb2MgPSBtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCk7CisJY29uc3QgWE1MQ2ggKiBwcmVmaXggPSBtcF9lbnYtPmdldERTSUdOU1ByZWZpeCgpOworCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCAiTWdtdERhdGEiKTsKKworCURPTUVsZW1lbnQgKnJldCA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSURTSUcsIHN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKwltcF9rZXlJbmZvRE9NTm9kZSA9IHJldDsKKworCS8vIENoZWNrIHdoZXRoZXIgdG8gZW5jb2RlIHByaW9yIHRvIGFkZGluZworCW1wX2RhdGFUZXh0Tm9kZSA9IGRvYy0+Y3JlYXRlVGV4dE5vZGUoZGF0YSk7CisKKwlyZXQtPmFwcGVuZENoaWxkKG1wX2RhdGFUZXh0Tm9kZSk7CisKKwltcF9kYXRhID0gbXBfZGF0YVRleHROb2RlLT5nZXROb2RlVmFsdWUoKTsKKworCXJldHVybiByZXQ7CisKK30KKwordm9pZCBEU0lHS2V5SW5mb01nbXREYXRhOjpzZXREYXRhKGNvbnN0IFhNTENoICogZGF0YSkgeworCisJaWYgKG1wX2RhdGFUZXh0Tm9kZSA9PSAwKSB7CisKKwkJLy8gQXR0ZW1wdCB0byBzZXQgYW4gZW1wdHkgZWxlbWVudAorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OktleUluZm9FcnJvciwKKwkJCSJLZXlJbmZvTWdtdERhdGE6OnNldERhdGEoKSBjYWxsZWQgcHJpb3IgdG8gbG9hZCgpIG9yIGNyZWF0ZUJsYW5rKCkiKTsKKworCX0KKworCW1wX2RhdGFUZXh0Tm9kZS0+c2V0Tm9kZVZhbHVlKGRhdGEpOworCW1wX2RhdGEgPSBtcF9kYXRhVGV4dE5vZGUtPmdldE5vZGVWYWx1ZSgpOworCit9CisKZGlmZiAtLWdpdCBhL2Mvc3JjL2RzaWcvRFNJR0tleUluZm9NZ210RGF0YS5ocHAgYi9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvTWdtdERhdGEuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2NTAzYjQKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvTWdtdERhdGEuaHBwCkBAIC0wLDAgKzEsMTY4IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBEU0lHS2V5SW5mb01nbXREYXRhIDo9IE1nbXREYXRhIC0gdXNlZCBmb3IgY29udmV5aW5nIGluLWJhbmQga2V5IGRhdGEKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgRFNJR0tFWUlORk9NR01UREFUQV9JTkNMVURFCisjZGVmaW5lIERTSUdLRVlJTkZPTUdNVERBVEFfSU5DTFVERQorCisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdLZXlJbmZvLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNQbGF0Zm9ybVV0aWxzLmhwcD4KKworWFNFQ19ERUNMQVJFX1hFUkNFU19DTEFTUyhET01FbGVtZW50KTsKKworLyoqCisgKiBAaW5ncm91cCBwdWJzaWcKKyAqLworCisvKioKKyAqIEBicmllZiBUaGUgY2xhc3MgZm9yIFw8TWdtdERhdGFcPiBub2RlcyBpbiBhIEtleUluZm8gbGlzdC4KKyAqCisgKiBDbGFzcyBmb3IgaG9sZGluZyBpbiBiYW5kIGtleSBpbmZvcm1hdGlvbi4KKyAqIEBub3RlIFVzZSBvZiB0aGlzIGNsYXNzIGlzIDxlbT5OT1QgUkVDT01NRURFRDwvZW0+IHdpdGhpbgorICogdGhlIERTSUcgc3RhbmRhcmQuCisgKgorICovCisKKworCitjbGFzcyBEU0lHX0VYUE9SVCBEU0lHS2V5SW5mb01nbXREYXRhIDogcHVibGljIERTSUdLZXlJbmZvIHsKKworcHVibGljOgorCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgQ29uc3RydWN0b3IgdXNlZCB3aGVuIFhNTCBleGlzdHMuCisJICoKKwkgKiBUaGlzIGNvbnN0cnVjdG9yIGlzIHVzZWQgYnkgb3RoZXIgdXNlciBpbnRlcmZhY2UgY2xhc3NlcyB0byBsb2FkCisJICogYW4gZXhpc3RpbmcgRE9NIHN0cnVjdHVyZSBpbnRvIHRoZSBOYW1lIGVsZW1lbnQuCisJICoKKwkgKiBAcGFyYW0gZW52IEVudmlyb25tZW50IG9wZXJhdGluZyB3aXRoaW4uCisJICogQHBhcmFtIG5hbWVOb2RlIERPTU5vZGUgdG8gbG9hZCBpbmZvcm1hdGlvbiBmcm9tCisJICovCisKKwlEU0lHS2V5SW5mb01nbXREYXRhKGNvbnN0IFhTRUNFbnYgKiBlbnYsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICpuYW1lTm9kZSk7CisKKwkvKioKKwkgKiBcYnJpZWYgQ29uc3RydWN0b3IgdXNlZCB3aGVuIFhNTCBuZWVkcyB0byBiZSBjcmVhdGVkLgorCSAqCisJICogVGhpcyBjb25zdHJ1Y3RvciBpcyB1c2VkIGJ5IGludGVyZmFjZSBvYmplY3RzIHRvCisJICogY3JlYXRlIGEgRFNJR0tleUluZm9OYW1lIG9iamVjdCB0aGF0IGNhbiB0aGVuIGJlIHVzZWQKKwkgKiB0byBjcmVhdGUgdGhlIHJlcXVpcmVkIFhNTC4KKwkgKgorCSAqIEBwYXJhbSBlbnYgT3BlcmF0aW5nIGVudmlyb25tZW50CisJICovCisKKwlEU0lHS2V5SW5mb01nbXREYXRhKGNvbnN0IFhTRUNFbnYgKiBlbnYpOworCisJLyoqCisJICogXGJyaWVmIERlc3RydWN0b3IKKwkgKi8KKworCXZpcnR1YWwgfkRTSUdLZXlJbmZvTWdtdERhdGEoKTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBMb2FkIGFuZCBHZXQgZnVuY3Rpb25zICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIExvYWQgYW4gZXhpc3RpbmcgWE1MIHN0cnVjdHVyZSBpbnRvIHRoaXMgb2JqZWN0LgorCSAqLworCisJdmlydHVhbCB2b2lkIGxvYWQodm9pZCk7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IGtleSBuYW1lIC0gdW5pbXBsZW1lbnRlZCBmb3IgTWdtdERhdGEKKwkgKi8KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRLZXlOYW1lKHZvaWQpIGNvbnN0IHtyZXR1cm4gTlVMTDt9CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBNZ210RGF0YSBzdHJpbmcKKwkgKgorCSAqIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgZGF0YSBzdHJpbmcuCisJICoKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIFhNTENoIGJ1ZmZlciBjb250YWluaW5nIHRoZSBkYXRhCisJICovCisKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0RGF0YSh2b2lkKSBjb25zdCB7cmV0dXJuIG1wX2RhdGE7fTsKKworCS8vQH0KKworCS8qKkBuYW1lIENyZWF0ZSBhbmQgc2V0IGZ1bmN0aW9ucyAqLworCS8vQHsKKwkKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIGEgbmV3IE1nbXREYXRhIGVsZW1lbnQgaW4gdGhlIGN1cnJlbnQgZG9jdW1lbnQuCisJICoKKwkgKiBDcmVhdGVzIGEgbmV3IE1nbXREYXRhIGVsZW1lbnQgYW5kIHNldHMgdGhlIGRhdGEgd2l0aCB0aGUgc3RyaW5nCisJICogcGFzc2VkIGluLgorCSAqCisJICogQHBhcmFtIGRhdGEgVmFsdWUgdG8gc2V0IHRoZSBNZ210RGF0YSB0bworCSAqIEByZXR1cm5zIFRoZSBuZXdseSBjcmVhdGVkIERPTUVsZW1lbnQgd2l0aCB0aGUgc3RydWN0dXJlIHVuZGVybmVhdGguCisJICovCisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGNyZWF0ZUJsYW5rTWdtdERhdGEoY29uc3QgWE1MQ2ggKiBkYXRhKTsKKworCS8qKgorCSAqIFxicmllZiBTZXQgdGhlIHZhbHVlIG9mIHRoZSBNZ210RGF0YSB0byBhIG5ldyBzdHJpbmcuCisJICoKKwkgKiBVc2VzIHRoZSBwYXNzZWQgaW4gc3RyaW5nIHRvIHNldCBhIG5ldyB2YWx1ZSBpbiB0aGUgRE9NIHN0cnVjdHVyZS4KKwkgKgorCSAqIEBwYXJhbSBkYXRhIFZhbHVlIHRvIHNldCBpbiBNZ210RGF0YQorCSAqLworCisJdm9pZCBzZXREYXRhKGNvbnN0IFhNTENoICogZGF0YSk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgSW5mb3JtYXRpb24gRnVuY3Rpb25zICovCisJLy9AeworCQorCS8qKgorCSAqIFxicmllZiBSZXR1cm4gdHlwZSBvZiB0aGlzIEtleUluZm8gZWxlbWVudAorCSAqLworCQorCXZpcnR1YWwga2V5SW5mb1R5cGUgZ2V0S2V5SW5mb1R5cGUodm9pZCkgY29uc3Qge3JldHVybiBEU0lHS2V5SW5mbzo6S0VZSU5GT19NR01UREFUQTt9CisKKwkvL0B9CisKK3ByaXZhdGU6CisKKwlEU0lHS2V5SW5mb01nbXREYXRhKCk7CQkJCQkJLy8gTm9uLWltcGxlbWVudGVkIGNvbnN0cnVjdG9yCisKKwljb25zdCBYTUxDaAkJCSogbXBfZGF0YTsJCQkJLy8gVGhlIERhdGEgc3RvcmVkIGluIHRoZSBYTUwgZmlsZQorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlCQkJCQorCQkJCQkJKiBtcF9kYXRhVGV4dE5vZGU7CQkvLyBUZXh0IG5vZGUgY29udGFpbmluZyB0aGUgbmFtZQorCit9OworCisKKworI2VuZGlmIC8qICNkZWZpbmUgRFNJR0tFWUlORk9NR01UREFUQV9JTkNMVURFICovCisKZGlmZiAtLWdpdCBhL2Mvc3JjL2RzaWcvRFNJR0tleUluZm9OYW1lLmNwcCBiL2Mvc3JjL2RzaWcvRFNJR0tleUluZm9OYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGUzZTBkCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZHNpZy9EU0lHS2V5SW5mb05hbWUuY3BwCkBAIC0wLDAgKzEsMjA0IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBEU0lHS2V5TmFtZSA6PSBTaW1wbHkgYSBzdHJpbmcgdGhhdCBuYW1lcyBhIGtleSBmb3IgYW4gYXBwbGljYXRpb24gdG8gcmVhZAorICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHS2V5SW5mb05hbWUuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDUGxhdGZvcm1VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDRE9NVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHU2lnbmF0dXJlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRW52LmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitEU0lHS2V5SW5mb05hbWU6OkRTSUdLZXlJbmZvTmFtZShjb25zdCBYU0VDRW52ICogZW52LCBET01Ob2RlICpuYW1lTm9kZSkgOiAKK0RTSUdLZXlJbmZvKGVudiksCittcF9uYW1lKE5VTEwpLAorbXBfZGVjb2RlZEROYW1lKE5VTEwpLAorbXBfa2V5TmFtZVRleHROb2RlKDApIHsKKworCW1wX2tleUluZm9ET01Ob2RlID0gbmFtZU5vZGU7CisKK30KKworCitEU0lHS2V5SW5mb05hbWU6OkRTSUdLZXlJbmZvTmFtZShjb25zdCBYU0VDRW52ICogZW52KSA6IAorRFNJR0tleUluZm8oZW52KSwKK21wX25hbWUoTlVMTCksCittcF9kZWNvZGVkRE5hbWUoTlVMTCksCittcF9rZXlOYW1lVGV4dE5vZGUoMCkgeworCisJbXBfa2V5SW5mb0RPTU5vZGUgPSAwOworCit9CisKKworRFNJR0tleUluZm9OYW1lOjp+RFNJR0tleUluZm9OYW1lKCkgeworCisJaWYgKG1wX2RlY29kZWRETmFtZSAhPSBOVUxMKQorCQlYU0VDX1JFTEVBU0VfWE1MQ0gobXBfZGVjb2RlZEROYW1lKTsKKworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBMb2FkIGFuZCBHZXQgZnVuY3Rpb25zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK3ZvaWQgRFNJR0tleUluZm9OYW1lOjpsb2FkKHZvaWQpIHsKKworCS8vIEFzc3VtaW5nIHdlIGhhdmUgYSB2YWxpZCBET01fTm9kZSB0byBzdGFydCB3aXRoLCBsb2FkIHRoZSBzaWduaW5nIGtleSBzbyB0aGF0IGl0IGNhbgorCS8vIGJlIHVzZWQgbGF0ZXIgb24KKworCWlmIChtcF9rZXlJbmZvRE9NTm9kZSA9PSBOVUxMKSB7CisKKwkJLy8gQXR0ZW1wdCB0byBsb2FkIGFuIGVtcHR5IHNpZ25hdHVyZSBlbGVtZW50CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6TG9hZEVtcHR5SW5mb05hbWUpOworCisJfQorCisJaWYgKCFzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZShtcF9rZXlJbmZvRE9NTm9kZSksICJLZXlOYW1lIikpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkxvYWROb25JbmZvTmFtZSk7CisKKwl9CisKKwkvLyBOb3cgZmluZCB0aGUgdGV4dCBub2RlIGNvbnRhaW5pbmcgdGhlIG5hbWUKKworCURPTU5vZGUgKnRtcEVsdCA9IG1wX2tleUluZm9ET01Ob2RlLT5nZXRGaXJzdENoaWxkKCk7CisKKwl3aGlsZSAodG1wRWx0ICE9IDAgJiYgdG1wRWx0LT5nZXROb2RlVHlwZSgpICE9IERPTU5vZGU6OlRFWFRfTk9ERSkKKwkJdG1wRWx0ID0gdG1wRWx0LT5nZXROZXh0U2libGluZygpOworCisJaWYgKHRtcEVsdCAhPSAwKSB7CisKKwkJbXBfa2V5TmFtZVRleHROb2RlID0gdG1wRWx0OworCQltcF9uYW1lID0gdG1wRWx0LT5nZXROb2RlVmFsdWUoKTsKKworCX0KKworCWVsc2UgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWREU0lHQ2hpbGROb3RGb3VuZCwKKwkJCU1BS0VfVU5JQ09ERV9TVFJJTkcoIkV4cGVjdGVkIFRFWFQgbm9kZSBhcyBjaGlsZCB0byA8S2V5TmFtZT4gZWxlbWVudCIpKTsKKworCX0KKworfQorCitjb25zdCBYTUxDaCAqIERTSUdLZXlJbmZvTmFtZTo6Z2V0RGVjb2RlZEtleU5hbWUodm9pZCkgeworCisJaWYgKG1wX2RlY29kZWRETmFtZSA9PSBOVUxMKSB7CisKKwkJbXBfZGVjb2RlZEROYW1lID0gZGVjb2RlRE5hbWUobXBfbmFtZSk7CisKKwl9CisKKwlyZXR1cm4gbXBfZGVjb2RlZEROYW1lOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ3JlYXRlIGFuZCBTZXQgZnVuY3Rpb25zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitET01FbGVtZW50ICogRFNJR0tleUluZm9OYW1lOjpjcmVhdGVCbGFua0tleU5hbWUoY29uc3QgWE1MQ2ggKiBuYW1lLCBib29sIGlzRE5hbWUpIHsKKworCS8vIENyZWF0ZSB0aGUgRE9NIFN0cnVjdHVyZQorCisJc2FmZUJ1ZmZlciBzdHI7CisJRE9NRG9jdW1lbnQgKmRvYyA9IG1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKTsKKwljb25zdCBYTUxDaCAqIHByZWZpeCA9IG1wX2Vudi0+Z2V0RFNJR05TUHJlZml4KCk7CisKKwltYWtlUU5hbWUoc3RyLCBwcmVmaXgsICJLZXlOYW1lIik7CisKKwlET01FbGVtZW50ICpyZXQgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklEU0lHLCBzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisJbXBfa2V5SW5mb0RPTU5vZGUgPSByZXQ7CisKKwkvLyBDaGVjayB3aGV0aGVyIHRvIGVuY29kZSBwcmlvciB0byBhZGRpbmcKKwlpZiAoaXNETmFtZSA9PSB0cnVlKSB7CisKKwkJLy8gVHJlYXQgYXMgYSBkaXN0aW5ndWlzaGVkIG5hbWUKKworCQltcF9kZWNvZGVkRE5hbWUgPSBYTUxTdHJpbmc6OnJlcGxpY2F0ZShuYW1lKTsKKwkJWE1MQ2ggKiBlbmNvZGVkTmFtZSA9IGVuY29kZUROYW1lKG5hbWUpOworCQltcF9rZXlOYW1lVGV4dE5vZGUgPSBkb2MtPmNyZWF0ZVRleHROb2RlKGVuY29kZWROYW1lKTsKKwkJWFNFQ19SRUxFQVNFX1hNTENIKGVuY29kZWROYW1lKTsKKwl9CisKKwllbHNlCisJCW1wX2tleU5hbWVUZXh0Tm9kZSA9IGRvYy0+Y3JlYXRlVGV4dE5vZGUobmFtZSk7CisKKwlyZXQtPmFwcGVuZENoaWxkKG1wX2tleU5hbWVUZXh0Tm9kZSk7CisKKwltcF9uYW1lID0gbXBfa2V5TmFtZVRleHROb2RlLT5nZXROb2RlVmFsdWUoKTsKKworCXJldHVybiByZXQ7CisKK30KKwordm9pZCBEU0lHS2V5SW5mb05hbWU6OnNldEtleU5hbWUoY29uc3QgWE1MQ2ggKiBuYW1lLCBib29sIGlzRE5hbWUpIHsKKworCWlmIChtcF9rZXlOYW1lVGV4dE5vZGUgPT0gMCkgeworCisJCS8vIEF0dGVtcHQgdG8gbG9hZCBhbiBlbXB0eSBlbGVtZW50CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6TG9hZEVtcHR5U2lnbmF0dXJlLAorCQkJTUFLRV9VTklDT0RFX1NUUklORygiS2V5SW5mb05hbWU6OnNldCgpIGNhbGxlZCBwcmlvciB0byBsb2FkKCkgb3IgY3JlYXRlQmxhbmsoKSIpKTsKKworCX0KKworCWlmIChtcF9kZWNvZGVkRE5hbWUgIT0gTlVMTCkgeworCisJCVhTRUNfUkVMRUFTRV9YTUxDSChtcF9kZWNvZGVkRE5hbWUpOworCQltcF9kZWNvZGVkRE5hbWUgPSBOVUxMOworCisJfQorCisJaWYgKGlzRE5hbWUgPT0gdHJ1ZSkgeworCisJCS8vIFRoaXMgbmFtZSBzaG91bGQgYmUgdHJlYXRlZCBhcyBhIERpc3Rpbmd1aXNoZWQgTmFtZSAtIHNvIGRvIHRoZQorCQkvLyByZXF1aXJlZCBlbmNvZGluZworCisJCW1wX2RlY29kZWRETmFtZSA9IFhNTFN0cmluZzo6cmVwbGljYXRlKG5hbWUpOworCQlYTUxDaCAqIGVuY29kZWROYW1lID0gZW5jb2RlRE5hbWUobmFtZSk7CisJCW1wX2tleU5hbWVUZXh0Tm9kZS0+c2V0Tm9kZVZhbHVlKGVuY29kZWROYW1lKTsKKwkJWFNFQ19SRUxFQVNFX1hNTENIKGVuY29kZWROYW1lKTsKKwl9CisKKwllbHNlIHsKKworCQltcF9rZXlOYW1lVGV4dE5vZGUtPnNldE5vZGVWYWx1ZShuYW1lKTsKKworCX0KKworCW1wX25hbWUgPSBtcF9rZXlOYW1lVGV4dE5vZGUtPmdldE5vZGVWYWx1ZSgpOworCit9CmRpZmYgLS1naXQgYS9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvTmFtZS5ocHAgYi9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvTmFtZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE2NGYyNQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2RzaWcvRFNJR0tleUluZm9OYW1lLmhwcApAQCAtMCwwICsxLDE3NSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogRFNJR0tleUluZm9OYW1lIDo9IFJlZmVyZW5jZXMgYSBrZXkgYnkgbmFtZS4KKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgRFNJR0tFWUlORk9OQU1FX0lOQ0xVREUKKyNkZWZpbmUgRFNJR0tFWUlORk9OQU1FX0lOQ0xVREUKKworI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1NhZmVCdWZmZXIuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHS2V5SW5mby5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDUGxhdGZvcm1VdGlscy5ocHA+CisKK1hTRUNfREVDTEFSRV9YRVJDRVNfQ0xBU1MoRE9NRWxlbWVudCk7CisKKy8qKgorICogQGluZ3JvdXAgcHVic2lnCisgKi8KKworLyoqCisgKiBAYnJpZWYgVGhlIGNsYXNzIGZvciBcPEtleU5hbWVcPiBub2RlcyBpbiBhIEtleUluZm8gbGlzdC4KKyAqCisgKiBDbGFzcyBmb3IgaG9sZGluZyBpbmZvcm1hdGlvbiBvbiBhIEtleU5hbWUgbm9kZSBhcyB3ZWxsIGFzIHNldHRpbmcKKyAqIHN1Y2ggYSBub2RlIGluIGEgc2lnbmF0dXJlLgorICoKKyAqLworCisKKworY2xhc3MgRFNJR19FWFBPUlQgRFNJR0tleUluZm9OYW1lIDogcHVibGljIERTSUdLZXlJbmZvIHsKKworcHVibGljOgorCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgQ29uc3RydWN0b3IgdXNlZCB3aGVuIFhNTCBleGlzdHMuCisJICoKKwkgKiBUaGlzIGNvbnN0cnVjdG9yIGlzIHVzZWQgYnkgaW50ZXJmYWNlIGNsYXNzZXMKKwkgKiBhbiBleGlzdGluZyBET00gc3RydWN0dXJlIGludG8gdGhlIE5hbWUgZWxlbWVudC4KKwkgKgorCSAqIEBwYXJhbSBlbnYgRW52aXJvbm1lbnQgdGhlIEtleUluZm8gaXMgb3BlcmF0aW5nIHdpdGhpbgorCSAqIEBwYXJhbSBuYW1lTm9kZSBET01Ob2RlIHRvIGxvYWQgaW5mb3JtYXRpb24gZnJvbQorCSAqLworCisJRFNJR0tleUluZm9OYW1lKGNvbnN0IFhTRUNFbnYgKiBlbnYsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICpuYW1lTm9kZSk7CisKKwkvKioKKwkgKiBcYnJpZWYgQ29uc3RydWN0b3IgdXNlZCB3aGVuIFhNTCBuZWVkcyB0byBiZSBjcmVhdGVkLgorCSAqCisJICogVGhpcyBjb25zdHJ1Y3RvciBpcyB1c2VkIGJ5IGludGVyZmFjZSBvYmplY3RzIHRvCisJICogY3JlYXRlIGEgRFNJR0tleUluZm9OYW1lIG9iamVjdCB0aGF0IGNhbiB0aGVuIGJlIHVzZWQKKwkgKiB0byBjcmVhdGUgdGhlIHJlcXVpcmVkIFhNTC4KKwkgKgorCSAqIEBwYXJhbSBlbnYgT3BlcmF0aW5nIGVudmlyb25tZW50CisJICovCisKKwlEU0lHS2V5SW5mb05hbWUoY29uc3QgWFNFQ0VudiAqIGVudik7CisKKwkvKioKKwkgKiBcYnJpZWYgRGVzdHJ1Y3RvcgorCSAqLworCisJdmlydHVhbCB+RFNJR0tleUluZm9OYW1lKCk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgTG9hZCBhbmQgR2V0IGZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBMb2FkIGFuIGV4aXN0aW5nIFhNTCBzdHJ1Y3R1cmUgaW50byB0aGlzIG9iamVjdC4KKwkgKi8KKworCXZpcnR1YWwgdm9pZCBsb2FkKHZvaWQpOworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgbmFtZSBoZWxkIGluIHRoZSBzdHJ1Y3R1cmUKKwkgKgorCSAqIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgbmFtZSBvZiB0aGUga2V5LgorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBjaGFyIGJ1ZmZlciBjb250YWluaW5nIHRoZSBrZXkgbmFtZQorCSAqLworCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldEtleU5hbWUodm9pZCkgY29uc3Qge3JldHVybiBtcF9uYW1lO307CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBkZWNvZGVkIGtleSBuYW1lIChmb3IgZGlzdGluZ3Vpc2hlZCBuYW1lcykKKwkgKgorCSAqIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgZGVjb2RlZCBEaXN0aW5ndWlzaGVkCisJICogTmFtZS4KKwkgKgorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgY2hhciBidWZmZXIgY29udGFpbmluZyB0aGUga2V5IG5hbWUKKwkgKi8KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXREZWNvZGVkS2V5TmFtZSh2b2lkKTsKKworCS8vQH0KKworCS8qKkBuYW1lIENyZWF0ZSBhbmQgc2V0IGZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBDcmVhdGUgYSBuZXcgS2V5TmFtZSBlbGVtZW50IGluIHRoZSBjdXJyZW50IGRvY3VtZW50LgorCSAqCisJICogQ3JlYXRlcyBhIG5ldyBLZXlOYW1lIGVsZW1lbnQgYW5kIHNldHMgdGhlIG5hbWUgd2l0aCB0aGUgc3RyaW5nCisJICogcGFzc2VkIGluLgorCSAqCisJICogQHBhcmFtIG5hbWUgVmFsdWUgdG8gc2V0IHRoZSBLZXlOYW1lIGFzCisJICogQHBhcmFtIGlzRE5hbWUgSWYgc2V0IHRvIHRydWUsIHRoZSBuYW1lIHdpbGwgYmUgZW5jb2RlZCBhcyBhIEROYW1lCisJICogcHJpb3IgdG8gYmUgYmVpbmcgcGxhY2VkIGluIHRoZSBET00gZG9jdW1lbnQKKwkgKiBAcmV0dXJucyBUaGUgbmV3bHkgY3JlYXRlZCBET01FbGVtZW50IHdpdGggdGhlIHN0cnVjdHVyZSB1bmRlcm5lYXRoLgorCSAqLworCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBjcmVhdGVCbGFua0tleU5hbWUoY29uc3QgWE1MQ2ggKiBuYW1lLCBib29sIGlzRE5hbWUgPSBmYWxzZSk7CisKKwkvKioKKwkgKiBcYnJpZWYgU2V0IHRoZSB2YWx1ZSBvZiB0aGUgS2V5TmFtZSB0byBhIG5ldyBzdHJpbmcuCisJICoKKwkgKiBVc2VzIHRoZSBwYXNzZWQgaW4gc3RyaW5nIHRvIHNldCBhIG5ldyB2YWx1ZSBpbiB0aGUgRE9NIHN0cnVjdHVyZS4KKwkgKgorCSAqIEBwYXJhbSBuYW1lIFZhbHVlIHRvIHNldCBpbiBLZXlOYW1lCisJICogQHBhcmFtIGlzRE5hbWUgSWYgc2V0IHRvIHRydWUsIHRoZSBuYW1lIHdpbGwgYmUgZW5jb2RlZCBhcyBhIEROYW1lCisJICogcHJpb3IgdG8gYmUgYmVpbmcgcGxhY2VkIGluIHRoZSBET00gZG9jdW1lbnQKKwkgKi8KKworCXZvaWQgc2V0S2V5TmFtZShjb25zdCBYTUxDaCAqIG5hbWUsIGJvb2wgaXNETmFtZSA9IGZhbHNlKTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBJbmZvcm1hdGlvbiBGdW5jdGlvbnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIHR5cGUgb2YgdGhpcyBLZXlJbmZvIGVsZW1lbnQKKwkgKi8KKworCXZpcnR1YWwga2V5SW5mb1R5cGUgZ2V0S2V5SW5mb1R5cGUodm9pZCkgY29uc3Qge3JldHVybiBEU0lHS2V5SW5mbzo6S0VZSU5GT19OQU1FO30KKworCS8vQH0KKworcHJpdmF0ZToKKworCURTSUdLZXlJbmZvTmFtZSgpOwkJCQkJCQkvLyBOb24taW1wbGVtZW50ZWQgY29uc3RydWN0b3IKKworCWNvbnN0IFhNTENoCQkJKiBtcF9uYW1lOwkJCQkvLyBUaGUgRGF0YSBzdG9yZWQgaW4gdGhlIFhNTCBmaWxlCisJWE1MQ2gJCQkJKiBtcF9kZWNvZGVkRE5hbWU7CQkvLyBXaGVuIHRoaXMgaXMgYSBETmFtZSB0aGF0IG5lZWRzIGRlY29kaW5nCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUKKwkJCQkJCSogbXBfa2V5TmFtZVRleHROb2RlOwkvLyBUZXh0IG5vZGUgY29udGFpbmluZyB0aGUgbmFtZQorCit9OworCisKKworI2VuZGlmIC8qICNkZWZpbmUgRFNJR0tFWU5BTUVfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvZHNpZy9EU0lHS2V5SW5mb1BHUERhdGEuY3BwIGIvYy9zcmMvZHNpZy9EU0lHS2V5SW5mb1BHUERhdGEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwYzhjNGUKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvUEdQRGF0YS5jcHAKQEAgLTAsMCArMSwyNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIERTSUdLZXlOYW1lIDo9IFNpbXBseSBhIHN0cmluZyB0aGF0IG5hbWVzIGEga2V5IGZvciBhbiBhcHBsaWNhdGlvbiB0byByZWFkCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdLZXlJbmZvUEdQRGF0YS5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNQbGF0Zm9ybVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdTaWduYXR1cmUuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPgorCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL0phbml0b3IuaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK0RTSUdLZXlJbmZvUEdQRGF0YTo6RFNJR0tleUluZm9QR1BEYXRhKGNvbnN0IFhTRUNFbnYgKiBlbnYsIERPTU5vZGUgKnBncERhdGFOb2RlKSA6IAorRFNJR0tleUluZm8oZW52KSwKK21wX2tleUlEKE5VTEwpLAorbXBfa2V5UGFja2V0KE5VTEwpLAorbXBfa2V5SURUZXh0Tm9kZShOVUxMKSwKK21wX2tleVBhY2tldFRleHROb2RlKE5VTEwpIHsKKworCW1wX2tleUluZm9ET01Ob2RlID0gcGdwRGF0YU5vZGU7CisKK30KKworCitEU0lHS2V5SW5mb1BHUERhdGE6OkRTSUdLZXlJbmZvUEdQRGF0YShjb25zdCBYU0VDRW52ICogZW52KSA6IAorRFNJR0tleUluZm8oZW52KSwKK21wX2tleUlEKE5VTEwpLAorbXBfa2V5UGFja2V0KE5VTEwpLAorbXBfa2V5SURUZXh0Tm9kZShOVUxMKSwKK21wX2tleVBhY2tldFRleHROb2RlKE5VTEwpIHsKKworCW1wX2tleUluZm9ET01Ob2RlID0gMDsKKworfQorCisKK0RTSUdLZXlJbmZvUEdQRGF0YTo6fkRTSUdLZXlJbmZvUEdQRGF0YSgpIHsKKworCit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIExvYWQgYW5kIEdldCBmdW5jdGlvbnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwordm9pZCBEU0lHS2V5SW5mb1BHUERhdGE6OmxvYWQodm9pZCkgeworCisJLy8gQXNzdW1pbmcgd2UgaGF2ZSBhIHZhbGlkIERPTV9Ob2RlIHRvIHN0YXJ0IHdpdGgsIGxvYWQgdGhlIHNpZ25pbmcga2V5IHNvIHRoYXQgaXQgY2FuCisJLy8gYmUgdXNlZCBsYXRlciBvbgorCisJaWYgKG1wX2tleUluZm9ET01Ob2RlID09IE5VTEwpIHsKKworCQkvLyBBdHRlbXB0IHRvIGxvYWQgYW4gZW1wdHkgc2lnbmF0dXJlIGVsZW1lbnQKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpMb2FkRW1wdHlJbmZvTmFtZSk7CisKKwl9CisKKwlpZiAoIXN0ckVxdWFscyhnZXREU0lHTG9jYWxOYW1lKG1wX2tleUluZm9ET01Ob2RlKSwgIlBHUERhdGEiKSkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWREU0lHQ2hpbGROb3RGb3VuZCwKKwkJCSJFeHBlY3RlZCBhIFBHUERhdGEgbm9kZSIpOworCisJfQorCisJLy8gTm93IGZpbmQgdGhlIGZpcnN0IGVsZW1lbnQgbm9kZSBjb250YWluaW5nIGVpdGhlciBLZXlJRCBvciBLZXlQYWNrZXQKKworCURPTU5vZGUgKiB0bXBFbHQgPSBmaW5kRmlyc3RDaGlsZE9mVHlwZShtcF9rZXlJbmZvRE9NTm9kZSwgRE9NTm9kZTo6RUxFTUVOVF9OT0RFKTsKKworCWlmICh0bXBFbHQgPT0gMCkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWREU0lHQ2hpbGROb3RGb3VuZCwKKwkJCSJFeHBlY3RlZCA8UEdQS2V5SUQ+IG9yIDxQR1BLZXlQYWNrZXQ+IGNoaWxkcmVuIG9mIFBHUERhdGEgbm9kZSIpOworCisJfQorCisJaWYgKHN0ckVxdWFscyhnZXREU0lHTG9jYWxOYW1lKHRtcEVsdCksICJQR1BLZXlJRCIpKSB7CisKKwkJLy8gRmluZCB0aGUgdGV4dCBub2RlCisJCW1wX2tleUlEVGV4dE5vZGUgPSBmaW5kRmlyc3RDaGlsZE9mVHlwZSh0bXBFbHQsIERPTU5vZGU6OlRFWFRfTk9ERSk7CisKKwkJaWYgKG1wX2tleUlEVGV4dE5vZGUgPT0gTlVMTCkgeworCisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkRFNJR0NoaWxkTm90Rm91bmQsCisJCQkJIkV4cGVjdGVkIGEgdGV4dCBub2RlIGJlbmVhdGggUEdQS2V5SUQiKTsKKworCQl9CisKKwkJbXBfa2V5SUQgPSBtcF9rZXlJRFRleHROb2RlLT5nZXROb2RlVmFsdWUoKTsKKworCQlkbyB7CisKKwkJCXRtcEVsdCA9IHRtcEVsdC0+Z2V0TmV4dFNpYmxpbmcoKTsKKworCQl9IHdoaWxlICh0bXBFbHQgIT0gTlVMTCAmJiB0bXBFbHQtPmdldE5vZGVUeXBlKCkgIT0gRE9NTm9kZTo6RUxFTUVOVF9OT0RFKTsKKworCX0KKworCWlmICh0bXBFbHQgIT0gTlVMTCAmJiBzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZSh0bXBFbHQpLCAiUEdQS2V5UGFja2V0IikpIHsKKworCQkvLyBGaW5kIHRoZSB0ZXh0IG5vZGUKKwkJbXBfa2V5UGFja2V0VGV4dE5vZGUgPSBmaW5kRmlyc3RDaGlsZE9mVHlwZSh0bXBFbHQsIERPTU5vZGU6OlRFWFRfTk9ERSk7CisKKwkJaWYgKG1wX2tleVBhY2tldFRleHROb2RlID09IE5VTEwpIHsKKworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZERTSUdDaGlsZE5vdEZvdW5kLAorCQkJCSJFeHBlY3RlZCBhIHRleHQgbm9kZSBiZW5lYXRoIFBHUEtleVBhY2tldCIpOworCisJCX0KKworCQltcF9rZXlQYWNrZXQgPSBtcF9rZXlQYWNrZXRUZXh0Tm9kZS0+Z2V0Tm9kZVZhbHVlKCk7CisKKwl9CisKKwlpZiAobXBfa2V5UGFja2V0VGV4dE5vZGUgPT0gTlVMTCAmJiBtcF9rZXlJRFRleHROb2RlID09IE5VTEwpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkRFNJR0NoaWxkTm90Rm91bmQsCisJCQkiRXhwZWN0ZWQgPFBHUEtleUlEPiBvciA8UEdQS2V5UGFja2V0PiBjaGlsZHJlbiBvZiBQR1BEYXRhIG5vZGUiKTsKKwkKKwl9Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ3JlYXRlIGFuZCBTZXQgZnVuY3Rpb25zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitET01FbGVtZW50ICogRFNJR0tleUluZm9QR1BEYXRhOjpjcmVhdGVCbGFua1BHUERhdGEoY29uc3QgWE1MQ2ggKiBpZCwgY29uc3QgWE1MQ2ggKiBwYWNrZXQpIHsKKworCS8vIENyZWF0ZSB0aGUgRE9NIFN0cnVjdHVyZQorCisJc2FmZUJ1ZmZlciBzdHI7CisJRE9NRG9jdW1lbnQgKmRvYyA9IG1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKTsKKwljb25zdCBYTUxDaCAqIHByZWZpeCA9IG1wX2Vudi0+Z2V0RFNJR05TUHJlZml4KCk7CisKKwltYWtlUU5hbWUoc3RyLCBwcmVmaXgsICJQR1BEYXRhIik7CisKKwlET01FbGVtZW50ICpyZXQgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklEU0lHLCBzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisJbXBfa2V5SW5mb0RPTU5vZGUgPSByZXQ7CisJbXBfZW52LT5kb1ByZXR0eVByaW50KHJldCk7CisKKwlpZiAoaWQgIT0gTlVMTCkgeworCisJCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgIlBHUEtleUlEIik7CisJCURPTUVsZW1lbnQgKiB0ID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRFNJRywgc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCQlyZXQtPmFwcGVuZENoaWxkKHQpOworCQltcF9lbnYtPmRvUHJldHR5UHJpbnQocmV0KTsKKwkJbXBfa2V5SURUZXh0Tm9kZSA9IGRvYy0+Y3JlYXRlVGV4dE5vZGUoaWQpOworCQl0LT5hcHBlbmRDaGlsZChtcF9rZXlJRFRleHROb2RlKTsKKwkJbXBfa2V5SUQgPSBtcF9rZXlJRFRleHROb2RlLT5nZXROb2RlVmFsdWUoKTsKKworCX0KKworCWlmIChwYWNrZXQgIT0gTlVMTCkgeworCisJCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgIlBHUEtleVBhY2tldCIpOworCQlET01FbGVtZW50ICogdCA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSURTSUcsIHN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKwkJcmV0LT5hcHBlbmRDaGlsZCh0KTsKKwkJbXBfZW52LT5kb1ByZXR0eVByaW50KHJldCk7CisJCW1wX2tleVBhY2tldFRleHROb2RlID0gZG9jLT5jcmVhdGVUZXh0Tm9kZShwYWNrZXQpOworCQl0LT5hcHBlbmRDaGlsZChtcF9rZXlQYWNrZXRUZXh0Tm9kZSk7CisJCW1wX2tleVBhY2tldCA9IG1wX2tleVBhY2tldFRleHROb2RlLT5nZXROb2RlVmFsdWUoKTsKKworCX0KKwkKKwlyZXR1cm4gcmV0OworCit9CisKK3ZvaWQgRFNJR0tleUluZm9QR1BEYXRhOjpzZXRLZXlJRChjb25zdCBYTUxDaCAqIGlkKSB7CisKKwlpZiAobXBfa2V5SW5mb0RPTU5vZGUgPT0gTlVMTCkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6S2V5SW5mb0Vycm9yLAorCQkJIkRTSUdLZXlJbmZvUEdQRGF0YTo6c2V0S2V5SUQoKSBjYWxsZWQgcHJpb3IgdG8gbG9hZCBvciBjcmVhdGVCbGFuayIpOworCX0KKworCWlmIChtcF9rZXlJRFRleHROb2RlID09IDApIHsKKworCQkvLyBOZWVkIHRvIGNyZWF0ZQorCQlzYWZlQnVmZmVyIHN0cjsKKwkJRE9NRG9jdW1lbnQgKmRvYyA9IG1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKTsKKwkJY29uc3QgWE1MQ2ggKiBwcmVmaXggPSBtcF9lbnYtPmdldERTSUdOU1ByZWZpeCgpOworCisJCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgIlBHUEtleUlEIik7CisJCURPTUVsZW1lbnQgKiB0ID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRFNJRywgc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCQlET01Ob2RlICogcGt0ID0gZmluZEZpcnN0Q2hpbGRPZlR5cGUobXBfa2V5SW5mb0RPTU5vZGUsIERPTU5vZGU6OkVMRU1FTlRfTk9ERSk7CisJCWlmIChwa3QgIT0gTlVMTCkgeworCQkJbXBfa2V5SW5mb0RPTU5vZGUtPmluc2VydEJlZm9yZSh0LCBwa3QpOworCQkJaWYgKG1wX2Vudi0+Z2V0UHJldHR5UHJpbnRGbGFnKCkgPT0gdHJ1ZSkKKwkJCQltcF9rZXlJbmZvRE9NTm9kZS0+aW5zZXJ0QmVmb3JlKGRvYy0+Y3JlYXRlVGV4dE5vZGUoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyTkwpLCBwa3QpOworCQl9CisJCWVsc2UgeworCQkJbXBfa2V5SW5mb0RPTU5vZGUtPmFwcGVuZENoaWxkKHQpOworCQkJbXBfZW52LT5kb1ByZXR0eVByaW50KG1wX2tleUluZm9ET01Ob2RlKTsKKwkJfQorCQltcF9rZXlJRFRleHROb2RlID0gZG9jLT5jcmVhdGVUZXh0Tm9kZShpZCk7CisJCXQtPmFwcGVuZENoaWxkKG1wX2tleUlEVGV4dE5vZGUpOworCisJfQorCisJZWxzZSAKKwkJbXBfa2V5SURUZXh0Tm9kZS0+c2V0Tm9kZVZhbHVlKGlkKTsKKworCW1wX2tleUlEID0gbXBfa2V5SURUZXh0Tm9kZS0+Z2V0Tm9kZVZhbHVlKCk7CisKK30KKwordm9pZCBEU0lHS2V5SW5mb1BHUERhdGE6OnNldEtleVBhY2tldChjb25zdCBYTUxDaCAqIHBhY2tldCkgeworCisJaWYgKG1wX2tleUluZm9ET01Ob2RlID09IE5VTEwpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OktleUluZm9FcnJvciwKKwkJCSJEU0lHS2V5SW5mb1BHUERhdGE6OnNldEtleUlEKCkgY2FsbGVkIHByaW9yIHRvIGxvYWQgb3IgY3JlYXRlQmxhbmsiKTsKKwl9CisKKwlpZiAobXBfa2V5UGFja2V0VGV4dE5vZGUgPT0gMCkgeworCisJCS8vIE5lZWQgdG8gY3JlYXRlCisKKwkJc2FmZUJ1ZmZlciBzdHI7CisJCURPTURvY3VtZW50ICpkb2MgPSBtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCk7CisJCWNvbnN0IFhNTENoICogcHJlZml4ID0gbXBfZW52LT5nZXREU0lHTlNQcmVmaXgoKTsKKworCQltYWtlUU5hbWUoc3RyLCBwcmVmaXgsICJQR1BLZXlQYWNrZXQiKTsKKwkJRE9NRWxlbWVudCAqIHQgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklEU0lHLCBzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisJCW1wX2tleUluZm9ET01Ob2RlLT5hcHBlbmRDaGlsZCh0KTsKKwkJbXBfZW52LT5kb1ByZXR0eVByaW50KG1wX2tleUluZm9ET01Ob2RlKTsKKwkJbXBfa2V5UGFja2V0VGV4dE5vZGUgPSBkb2MtPmNyZWF0ZVRleHROb2RlKHBhY2tldCk7CisJCXQtPmFwcGVuZENoaWxkKG1wX2tleVBhY2tldFRleHROb2RlKTsKKworCX0KKworCWVsc2UgCisJCW1wX2tleVBhY2tldFRleHROb2RlLT5zZXROb2RlVmFsdWUocGFja2V0KTsKKworCW1wX2tleVBhY2tldCA9IG1wX2tleVBhY2tldFRleHROb2RlLT5nZXROb2RlVmFsdWUoKTsKKworfQorCmRpZmYgLS1naXQgYS9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvUEdQRGF0YS5ocHAgYi9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvUEdQRGF0YS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjNhZDkwYwotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2RzaWcvRFNJR0tleUluZm9QR1BEYXRhLmhwcApAQCAtMCwwICsxLDE5NCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogRFNJR0tleUluZm9QR1BEYXRhIDo9IENvbnRhaW5zIGEga2V5IHBvaW50ZXIgdG8gYSBQR1Aga2V5CisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIERTSUdLRVlJTkZPUEdQREFUQV9JTkNMVURFCisjZGVmaW5lIERTSUdLRVlJTkZPUEdQREFUQV9JTkNMVURFCisKKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNTYWZlQnVmZmVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0tleUluZm8uaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1BsYXRmb3JtVXRpbHMuaHBwPgorCitYU0VDX0RFQ0xBUkVfWEVSQ0VTX0NMQVNTKERPTUVsZW1lbnQpOworCisvKioKKyAqIEBpbmdyb3VwIHB1YnNpZworICovCisKKy8qKgorICogQGJyaWVmIFRoZSBjbGFzcyBmb3IgXDxQR1BEYXRhXD4gbm9kZXMgaW4gYSBLZXlJbmZvIGxpc3QuCisgKgorICogQ2xhc3MgZm9yIGhvbGRpbmcgaW5mb3JtYXRpb24gb24gYSBQR1AgRGF0YSBub2RlIGFzIHdlbGwgYXMgc2V0dGluZworICogc3VjaCBhIG5vZGUgaW4gYSBzaWduYXR1cmUuCisgKgorICovCisKKworCitjbGFzcyBEU0lHX0VYUE9SVCBEU0lHS2V5SW5mb1BHUERhdGEgOiBwdWJsaWMgRFNJR0tleUluZm8geworCitwdWJsaWM6CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBDb25zdHJ1Y3RvciB1c2VkIHdoZW4gWE1MIGV4aXN0cy4KKwkgKgorCSAqIFRoaXMgY29uc3RydWN0b3IgaXMgdXNlZCBieSBpbnRlcmZhY2Ugb2JqZWN0cyB0byBsb2FkCisJICogYW4gZXhpc3RpbmcgRE9NIHN0cnVjdHVyZSBpbnRvIHRoZSBQR1BEYXRhIGVsZW1lbnQuCisJICoKKwkgKiBAcGFyYW0gZW52IEVudmlyb25tZW50IHRoZSBLZXlJbmZvIGlzIG9wZXJhdGluZyB3aXRoaW4KKwkgKiBAcGFyYW0gcGdwRGF0YU5vZGUgRE9NTm9kZSB0byBsb2FkIGluZm9ybWF0aW9uIGZyb20KKwkgKi8KKworCURTSUdLZXlJbmZvUEdQRGF0YShjb25zdCBYU0VDRW52ICogZW52LCAKKwkJCQkJICAgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUgKnBncERhdGFOb2RlKTsKKworCS8qKgorCSAqIFxicmllZiBDb25zdHJ1Y3RvciB1c2VkIHdoZW4gWE1MIG5lZWRzIHRvIGJlIGNyZWF0ZWQuCisJICoKKwkgKiBUaGlzIGNvbnN0cnVjdG9yIGlzIHVzZWQgYnkgaW50ZXJmYWNlIG9iamVjdHMgdG8KKwkgKiBjcmVhdGUgYSBEU0lHS2V5SW5mb1BHUERhdGEgb2JqZWN0IHRoYXQgY2FuIHRoZW4gYmUgdXNlZAorCSAqIHRvIGNyZWF0ZSB0aGUgcmVxdWlyZWQgWE1MLgorCSAqCisJICogQHBhcmFtIGVudiBPcGVyYXRpbmcgZW52aXJvbm1lbnQKKwkgKi8KKworCURTSUdLZXlJbmZvUEdQRGF0YShjb25zdCBYU0VDRW52ICogZW52KTsKKworCS8qKgorCSAqIFxicmllZiBEZXN0cnVjdG9yCisJICovCisKKwl2aXJ0dWFsIH5EU0lHS2V5SW5mb1BHUERhdGEoKTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBMb2FkIGFuZCBHZXQgZnVuY3Rpb25zICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIExvYWQgYW4gZXhpc3RpbmcgWE1MIHN0cnVjdHVyZSBpbnRvIHRoaXMgb2JqZWN0LgorCSAqLworCisJdmlydHVhbCB2b2lkIGxvYWQodm9pZCk7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBQR1AgS2V5IElEIGhlbGQgaW4gdGhlIHN0cnVjdHVyZQorCSAqCisJICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZSBJRCBvZiB0aGUgUEdQIGtleS4KKwkgKgorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgY2hhciBidWZmZXIgY29udGFpbmluZyB0aGUgKGJhc2UgNjQgZW5jb2RlZCkKKwkgKiBQR1AgS2V5IElECisJICovCisKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0S2V5SUQodm9pZCkgY29uc3Qge3JldHVybiBtcF9rZXlJRDt9CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBQR1AgS2V5IFBhY2tldAorCSAqCisJICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZSBQR1AgS2V5IHBhY2tldC4KKwkgKgorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgWE1MQ2ggYnVmZmVyIGNvbnRhaW5pbmcgdGhlIEtleSBQYWNrZXQgaW4KKwkgKiBiYXNlNjQgZW5jb2RlZCBmb3JtYXQKKwkgKi8KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRLZXlQYWNrZXQodm9pZCkgY29uc3Qge3JldHVybiBtcF9rZXlQYWNrZXQ7fQorCisJLyoqCisJICogXGJyaWVmIEdldCBrZXkgbmFtZSAtIHVuaW1wbGVtZW50ZWQgZm9yIFBHUCBwYWNrZXRzCisJICovCisKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0S2V5TmFtZSh2b2lkKSBjb25zdCB7cmV0dXJuIE5VTEw7fQorCisJLy9AfQorCisJLyoqQG5hbWUgQ3JlYXRlIGFuZCBzZXQgZnVuY3Rpb25zICovCisJLy9AeworCQorCS8qKgorCSAqIFxicmllZiBDcmVhdGUgYSBuZXcgUEdQRGF0YSBlbGVtZW50IGluIHRoZSBjdXJyZW50IGRvY3VtZW50LgorCSAqCisJICogQ3JlYXRlcyBhIG5ldyBQR1BEYXRhIGVsZW1lbnQgYW5kIHNldHMgdGhlIEtleVBhY2tldCBhbmQgS2V5SUQgCisJKiB3aXRoIHRoZSBzdHJpbmdzIHBhc3NlZCBpbi4KKwkgKgorCSAqIEBwYXJhbSBpZCBWYWx1ZSB0byBzZXQgdGhlIEtleUlEIGFzIChOVUxMIGlmIG5vdCB0byBiZSBzZXQpCisJICogQHBhcmFtIHBhY2tldCBWYWx1ZSB0byBzZXQgdGhlIGtleSBwYWNrZXQgdG8gKE5VTEwgaWYgbm90IHRvIGJlIHNldCkKKwkgKiBAcmV0dXJucyBUaGUgbmV3bHkgY3JlYXRlZCBET01FbGVtZW50IHdpdGggdGhlIHN0cnVjdHVyZSB1bmRlcm5lYXRoLgorCSAqLworCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiAKKwkJY3JlYXRlQmxhbmtQR1BEYXRhKGNvbnN0IFhNTENoICogaWQsIGNvbnN0IFhNTENoICogcGFja2V0KTsKKworCS8qKgorCSAqIFxicmllZiBTZXQgdGhlIHZhbHVlIG9mIHRoZSBLZXlJRCB0byBhIG5ldyBzdHJpbmcuCisJICoKKwkgKiBVc2VzIHRoZSBwYXNzZWQgaW4gc3RyaW5nIHRvIHNldCBhIG5ldyB2YWx1ZSBpbiB0aGUgRE9NIHN0cnVjdHVyZS4KKwkgKgorCSAqIEBwYXJhbSBpZCBUaGUgdmFsdWUgdG8gc2V0IHRoZSBLZXlJRCB0bworCSAqLworCisJdm9pZCBzZXRLZXlJRChjb25zdCBYTUxDaCAqIGlkKTsKKworCS8qKgorCSAqIFxicmllZiBTZXQgdGhlIHZhbHVlIG9mIHRoZSBLZXlQYWNrZXQgdG8gYSBuZXcgc3RyaW5nLgorCSAqCisJICogVXNlcyB0aGUgcGFzc2VkIGluIHN0cmluZyB0byBzZXQgYSBuZXcgdmFsdWUgaW4gdGhlIERPTSBzdHJ1Y3R1cmUuCisJICoKKwkgKiBAcGFyYW0gcGFja2V0IFRoZSB2YWx1ZSB0byBzZXQgdGhlIEtleVBhY2tldCB0bworCSAqLworCisJdm9pZCBzZXRLZXlQYWNrZXQoY29uc3QgWE1MQ2ggKiBwYWNrZXQpOworCisJLy9AfQorCisJLyoqIEBuYW1lIEluZm9ybWF0aW9uIEZ1bmN0aW9ucyAqLworCS8vQHsKKwkKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIHR5cGUgb2YgdGhpcyBLZXlJbmZvIGVsZW1lbnQKKwkgKi8KKwkKKwl2aXJ0dWFsIGtleUluZm9UeXBlIGdldEtleUluZm9UeXBlKHZvaWQpIGNvbnN0IHtyZXR1cm4gRFNJR0tleUluZm86OktFWUlORk9fUEdQREFUQTt9CisKKwkvL0B9CisKK3ByaXZhdGU6CisKKwlEU0lHS2V5SW5mb1BHUERhdGEoKTsJCQkJCQkvLyBOb24taW1wbGVtZW50ZWQgY29uc3RydWN0b3IKKworCWNvbnN0IFhNTENoCQkJKiBtcF9rZXlJRDsJCQkJLy8gS2V5IElEIChmcm9tIERPTSkKKwljb25zdCBYTUxDaAkJCSogbXBfa2V5UGFja2V0OwkJCS8vIGtleSBQYWNrZXQgKGZyb20gRE9NKQorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlCQkJCQorCQkJCQkJKiBtcF9rZXlJRFRleHROb2RlOwkJLy8gVGV4dCBub2RlIGNvbnRhaW5pbmcgdGhlIElECisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUJCQkJCisJCQkJCQkqIG1wX2tleVBhY2tldFRleHROb2RlOwkvLyBUZXh0IG5vZGUgY29udGlhbmluZyBrZXkgcGFja2V0Cit9OworCisKKworI2VuZGlmIC8qICNkZWZpbmUgRFNJR0tFWUlORk9QR1BEQVRBX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL2RzaWcvRFNJR0tleUluZm9TUEtJRGF0YS5jcHAgYi9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvU1BLSURhdGEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlY2QwYjYKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvU1BLSURhdGEuY3BwCkBAIC0wLDAgKzEsMTk3IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBEU0lHS2V5SW5mb1NQS0lEYXRhIDo9IFNQS0kgSW5mb3JtYXRpb24KKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0tleUluZm9TUEtJRGF0YS5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1NpZ25hdHVyZS5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vudi5ocHA+CisKKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitEU0lHS2V5SW5mb1NQS0lEYXRhOjpEU0lHS2V5SW5mb1NQS0lEYXRhKGNvbnN0IFhTRUNFbnYgKiBlbnYsIERPTU5vZGUgKm5hbWVOb2RlKSA6IAorRFNJR0tleUluZm8oZW52KSB7CisKKwltcF9rZXlJbmZvRE9NTm9kZSA9IG5hbWVOb2RlOworCit9CisKK0RTSUdLZXlJbmZvU1BLSURhdGE6OkRTSUdLZXlJbmZvU1BLSURhdGEoY29uc3QgWFNFQ0VudiAqIGVudikgOgorRFNJR0tleUluZm8oZW52KSB7CisKKwltcF9rZXlJbmZvRE9NTm9kZSA9IE5VTEw7CisKK30KKworRFNJR0tleUluZm9TUEtJRGF0YTo6fkRTSUdLZXlJbmZvU1BLSURhdGEoKSB7CisKKwlzZXhwVmVjdG9yVHlwZTo6aXRlcmF0b3IgaTsKKworCWZvciAoaSA9IG1fc2V4cExpc3QuYmVnaW4oKTsgaSA8IG1fc2V4cExpc3QuZW5kKCk7ICsraSkgeworCisJCWRlbGV0ZSAqaTsKKworCX0KK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBMb2FkIGFuZCBnZXQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgRFNJR0tleUluZm9TUEtJRGF0YTo6bG9hZCh2b2lkKSB7CisKKwkvLyBBc3N1bWluZyB3ZSBoYXZlIGEgdmFsaWQgRE9NX05vZGUgdG8gc3RhcnQgd2l0aCwgbG9hZCB0aGUgc2lnbmluZyBrZXkgc28gdGhhdCBpdCBjYW4KKwkvLyBiZSB1c2VkIGxhdGVyIG9uCisKKwlpZiAobXBfa2V5SW5mb0RPTU5vZGUgPT0gTlVMTCkgeworCisJCS8vIEF0dGVtcHQgdG8gbG9hZCBhbiBlbXB0eSBzaWduYXR1cmUgZWxlbWVudAorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkRFNJR0NoaWxkTm90Rm91bmQsCisJCQkiRFNJR0tleUluZm9TUEtJRGF0YTo6bG9hZCBjYWxsZWQgd2l0aG91dCBub2RlIGJlaW5nIHNldCIpOworCisJfQorCisJaWYgKCFzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZShtcF9rZXlJbmZvRE9NTm9kZSksICJTUEtJRGF0YSIpKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZERTSUdDaGlsZE5vdEZvdW5kLAorCQkJIkV4cGVjdGVkIGFuIDxTUEtJRGF0YT4gbm9kZSIpOworCisJfQorCisJLy8gTm93IGZpbmQgdGhlIFNQS0lTZXhwIG5vZGVzCisJRE9NTm9kZSAqIHRtcEVsdCA9IGZpbmRGaXJzdENoaWxkT2ZUeXBlKG1wX2tleUluZm9ET01Ob2RlLCBET01Ob2RlOjpFTEVNRU5UX05PREUpOworCisJd2hpbGUgKHRtcEVsdCAhPSBOVUxMICYmIHN0ckVxdWFscyhnZXREU0lHTG9jYWxOYW1lKHRtcEVsdCksICJTUEtJU2V4cCIpKSB7CisKKwkJRE9NTm9kZSAqIHR4dCA9IGZpbmRGaXJzdENoaWxkT2ZUeXBlKHRtcEVsdCwgRE9NTm9kZTo6VEVYVF9OT0RFKTsKKworCQlpZiAodHh0ID09IE5VTEwpIHsKKworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZERTSUdDaGlsZE5vdEZvdW5kLAorCQkJCSJFeHBlY3RlZCB0ZXh0IG5vZGUgY2hpbGQgb2YgPFNQS0lTZXhwPiIpOworCisJCX0KKworCQlTZXhwTm9kZSAqIHM7CisJCVhTRUNuZXcocywgU2V4cE5vZGUpOworCisJCW1fc2V4cExpc3QucHVzaF9iYWNrKHMpOworCisJCXMtPm1wX2V4cHIgPSB0eHQtPmdldE5vZGVWYWx1ZSgpOworCQlzLT5tcF9leHByVGV4dE5vZGUgPSB0eHQ7CisKKwkJLy8gRmluZCBuZXh0IFNQS0lTZXhwCisJCQorCQlkbyB7CisKKwkJCXRtcEVsdCA9IHRtcEVsdC0+Z2V0TmV4dFNpYmxpbmcoKTsKKworCQl9IHdoaWxlICh0bXBFbHQgIT0gTlVMTCAmJiB0bXBFbHQtPmdldE5vZGVUeXBlKCkgIT0gRE9NTm9kZTo6RUxFTUVOVF9OT0RFKTsKKworCX0KKworCS8qCisJICogTm90ZSB0aGF0IGl0IGlzIG5vdCBuZWNlc3NhcmlseSBhbiBlcnJvciBpZiBub24gU1BLSVNleHAgbm9kZXMgYXJlIGZvdW5kCisJICogYWZ0ZXIgdGhlIFNQS0lTZXhwIG5vZGVzLgorCSAqLworCit9CisKK3Vuc2lnbmVkIGludCBEU0lHS2V5SW5mb1NQS0lEYXRhOjpnZXRTZXhwU2l6ZSh2b2lkKSBjb25zdCB7CisKKwlyZXR1cm4gKHVuc2lnbmVkIGludCkgbV9zZXhwTGlzdC5zaXplKCk7CisKK30KKworY29uc3QgWE1MQ2ggKiBEU0lHS2V5SW5mb1NQS0lEYXRhOjpnZXRTZXhwKHVuc2lnbmVkIGludCBpbmRleCkgY29uc3QgeworCisJaWYgKGluZGV4ID49IG1fc2V4cExpc3Quc2l6ZSgpKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpLZXlJbmZvRXJyb3IsCisJCQkiRFNJR0tleUluZm9TUEtJRGF0YTo6Z2V0U2V4cCAtIGluZGV4IG91dCBvZiByYW5nZSIpOworCisJfQorCisJcmV0dXJuIG1fc2V4cExpc3RbaW5kZXhdLT5tcF9leHByOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ3JlYXRlIGFuZCBzZXQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RPTUVsZW1lbnQgKiBEU0lHS2V5SW5mb1NQS0lEYXRhOjpjcmVhdGVCbGFua1NQS0lEYXRhKGNvbnN0IFhNTENoICogU2V4cCkgeworCisJLy8gQ3JlYXRlIHRoZSBET00gU3RydWN0dXJlCisKKwlzYWZlQnVmZmVyIHN0cjsKKwlET01Eb2N1bWVudCAqZG9jID0gbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpOworCWNvbnN0IFhNTENoICogcHJlZml4ID0gbXBfZW52LT5nZXREU0lHTlNQcmVmaXgoKTsKKworCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgIlNQS0lEYXRhIik7CisKKwlET01FbGVtZW50ICogcmV0ID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRFNJRywgc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCW1wX2tleUluZm9ET01Ob2RlID0gcmV0OworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChyZXQpOworCisJYXBwZW5kU2V4cChTZXhwKTsKKworCXJldHVybiByZXQ7CisKK30KKwordm9pZCBEU0lHS2V5SW5mb1NQS0lEYXRhOjphcHBlbmRTZXhwKGNvbnN0IFhNTENoICogU2V4cCkgeworCisJLy8gRmlyc3QgY3JlYXRlIHRoZSBuZXcgZWxlbWVudCBpbiB0aGUgbGlzdAorCVNleHBOb2RlICpzOworCVhTRUNuZXcocywgU2V4cE5vZGUpOworCisJbV9zZXhwTGlzdC5wdXNoX2JhY2socyk7CisKKwlzYWZlQnVmZmVyIHN0cjsKKwlET01Eb2N1bWVudCAqZG9jID0gbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpOworCWNvbnN0IFhNTENoICogcHJlZml4ID0gbXBfZW52LT5nZXREU0lHTlNQcmVmaXgoKTsKKworCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgIlNQS0lTZXhwIik7CisKKwlET01Ob2RlICp0bXBFbHQgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklEU0lHLCBzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisJCisJcy0+bXBfZXhwclRleHROb2RlID0gZG9jLT5jcmVhdGVUZXh0Tm9kZShTZXhwKTsKKwlzLT5tcF9leHByID0gcy0+bXBfZXhwclRleHROb2RlLT5nZXROb2RlVmFsdWUoKTsKKworCXRtcEVsdC0+YXBwZW5kQ2hpbGQocy0+bXBfZXhwclRleHROb2RlKTsKKworCW1wX2tleUluZm9ET01Ob2RlLT5hcHBlbmRDaGlsZCh0bXBFbHQpOworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChtcF9rZXlJbmZvRE9NTm9kZSk7CisKK30KKwpkaWZmIC0tZ2l0IGEvYy9zcmMvZHNpZy9EU0lHS2V5SW5mb1NQS0lEYXRhLmhwcCBiL2Mvc3JjL2RzaWcvRFNJR0tleUluZm9TUEtJRGF0YS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRmNmYyMgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2RzaWcvRFNJR0tleUluZm9TUEtJRGF0YS5ocHAKQEAgLTAsMCArMSwxOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIERTSUdLZXlJbmZvU1BLSURhdGEgOj0gU1BLSSBJbmZvcm1hdGlvbgorICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBEU0lHS0VZSU5GT1NQS0lEQVRBX0lOQ0xVREUKKyNkZWZpbmUgRFNJR0tFWUlORk9TUEtJREFUQV9JTkNMVURFCisKKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0tleUluZm8uaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1BsYXRmb3JtVXRpbHMuaHBwPgorCitYU0VDX0RFQ0xBUkVfWEVSQ0VTX0NMQVNTKERPTUVsZW1lbnQpOworCisjaW5jbHVkZSA8dmVjdG9yPgorCisvKioKKyAqIEBpbmdyb3VwIHB1YnNpZworICovCisKKy8qKgorICogQGJyaWVmIFRoZSBjbGFzcyBmb3IgXDxTUEtJRGF0YVw+IG5vZGVzIGluIGEgS2V5SW5mbyBsaXN0LgorICoKKyAqIENsYXNzIGZvciBob2xkaW5nIGluZm9ybWF0aW9uIG9uIGEgU1BLSURhdGEgbm9kZSBhcyB3ZWxsIGFzIHNldHRpbmcKKyAqIHN1Y2ggYSBub2RlIGluIGEgc2lnbmF0dXJlLgorICoKKyAqLworCisKKworY2xhc3MgRFNJR19FWFBPUlQgRFNJR0tleUluZm9TUEtJRGF0YSA6IHB1YmxpYyBEU0lHS2V5SW5mbyB7CisKK3B1YmxpYzoKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIENvbnN0cnVjdG9yIHVzZWQgd2hlbiBYTUwgZXhpc3RzLgorCSAqCisJICogVGhpcyBjb25zdHJ1Y3RvciBpcyB1c2VkIGJ5IGludGVyZmFjZSBvYmplY3RzIHRvIGxvYWQKKwkgKiBhbiBleGlzdGluZyBET00gc3RydWN0dXJlIGludG8gdGhlIE5hbWUgZWxlbWVudC4KKwkgKgorCSAqIEBwYXJhbSBlbnYgRW52aXJvbm1lbnQgS2V5SW5mbyBpcyBvcGVyYXRpbmcgaW4KKwkgKiBAcGFyYW0gbmFtZU5vZGUgRE9NTm9kZSB0byBsb2FkIGluZm9ybWF0aW9uIGZyb20KKwkgKi8KKworCURTSUdLZXlJbmZvU1BLSURhdGEoY29uc3QgWFNFQ0VudiAqIGVudiwgCisJCQkJCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqbmFtZU5vZGUpOworCisJLyoqCisJICogXGJyaWVmIENvbnN0cnVjdG9yIHVzZWQgd2hlbiBYTUwgbmVlZHMgdG8gYmUgY3JlYXRlZC4KKwkgKgorCSAqIFRoaXMgY29uc3RydWN0b3IgaXMgdXNlZCBieSBpbnRlcmZhY2Ugb2JqZWN0cyB0bworCSAqIGNyZWF0ZSBhIERTSUdLZXlJbmZvU1BLSURhdGEgb2JqZWN0IHRoYXQgY2FuIHRoZW4gYmUgdXNlZAorCSAqIHRvIGNyZWF0ZSB0aGUgcmVxdWlyZWQgWE1MLgorCSAqCisJICogQHBhcmFtIGVudiBPcGVyYXRpbmcgZW52aXJvbm1lbnQKKwkgKi8KKworCURTSUdLZXlJbmZvU1BLSURhdGEoY29uc3QgWFNFQ0VudiAqIGVudik7CisKKwkvKioKKwkgKiBcYnJpZWYgRGVzdHJ1Y3RvcgorCSAqLworCisJdmlydHVhbCB+RFNJR0tleUluZm9TUEtJRGF0YSgpOworCisJLy9AfQorCisJLyoqIEBuYW1lIExvYWQgYW5kIEdldCBmdW5jdGlvbnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgTG9hZCBhbiBleGlzdGluZyBYTUwgc3RydWN0dXJlIGludG8gdGhpcyBvYmplY3QuCisJICovCisKKwl2b2lkIGxvYWQodm9pZCk7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBudW1iZXIgb2YgUy1leHByZXNzaW9ucyAKKwkgKgorCSAqIFJldHVybnMgdGhlIG51bWJlciBvZiBTLWV4cHJlc3Npb25zIGhlbGQgZm9yIHRoaXMgU1BLSURhdGEgZWxlbWVudAorCSAqCisJICogQHJldHVybnMgVGhlIG51bWJlciBvZiBTLWV4cHJlc3Npb25zCisJICovCisKKwl1bnNpZ25lZCBpbnQgZ2V0U2V4cFNpemUodm9pZCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgcmV0dXJucyB0aGUgaW5kaWNhdGVkIFNFeHByZXNzaW9uCisJICoKKwkgKiBSZXR1cm5zIGEgcG9pbnRlciB0byBhIFhNTENoIGJ1ZmZlciBob2xkaW5nIHRoZSByZXF1aXJlZCBTRXhwcmVzc2lvbi4KKwkgKgorCSAqIEBwYXJhbSBpbmRleCBUaGUgbnVtYmVyIG9mIHRoZSBTRXhwcmVzc2lvbiB0byByZXR1cm4KKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIGNoYXIgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGJhc2U2NCBlbmNvZGVkIAorCSAqIFMtZXhwcmVzc2lvbgorCSAqLworCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldFNleHAodW5zaWduZWQgaW50IGluZGV4KSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBHZXQga2V5IG5hbWUgLSB1bmltcGxlbWVudGVkIGZvciBTUEtJIHBhY2tldHMKKwkgKi8KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRLZXlOYW1lKHZvaWQpIGNvbnN0IHtyZXR1cm4gTlVMTDt9CisKKwkvL0B9CisKKwkvKipAbmFtZSBDcmVhdGUgYW5kIHNldCBmdW5jdGlvbnMgKi8KKwkvL0B7CisJCisJCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIG5ldyBTUEtJRGF0YSBlbGVtZW50IGluIHRoZSBkb2N1bWVudC4KKwkgKgorCSAqIENyZWF0ZXMgYSBuZXcgU1BLSURhdGEgZWxlbWVudCBhbmQgc2V0cyB0aGUgZmlyc3QgUy1leHByZXNzaW9uCisJICogd2l0aCB0aGUgc3RyaW5nIHBhc3NlZCBpbi4KKwkgKgorCSAqIEBwYXJhbSBTZXhwIFZhbHVlIChiYXNlNjQgZW5jb2RlZCBzdHJpbmcpIHRvIHNldCB0aGUgZmlyc3QgUy1leHByZXNzaW9uCisJICogQHJldHVybnMgVGhlIG5ld2x5IGNyZWF0ZWQgRE9NRWxlbWVudCB3aXRoIHRoZSBzdHJ1Y3R1cmUgdW5kZXJuZWF0aC4KKwkgKi8KKworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogCisJCWNyZWF0ZUJsYW5rU1BLSURhdGEoY29uc3QgWE1MQ2ggKiBTZXhwKTsKKworCS8qKgorCSAqIFxicmllZiBBcHBlbmQgYSBuZXcgU1BLSVNleHAgZWxlbWVudCB0byB0aGUgU1BLSURhdGEgbm9kZXMKKwkgKgorCSAqIEFwcGVuZCBhIG5ldyBTUEtJU2V4cCBlbGVtZW50IHRvIHRoZSBsaXN0IG9mIFMtZXhwcmVzc2lvbnMgdGhhdAorCSAqIGFscmVhZHkgZXhpc3RzLgorCSAqCisJICogQHBhcmFtIFNleHAgVmFsdWUgKGJhc2U2NCBlbmNvZGVkIHN0cmluZykgdG8gc2V0IHRoZSBuZXcgUy1leHByZXNzaW9uCisJICovCisKKwl2b2lkIGFwcGVuZFNleHAoY29uc3QgWE1MQ2ggKiBTZXhwKTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBJbmZvcm1hdGlvbiBGdW5jdGlvbnMgKi8KKwkvL0B7CisJCisJLyoqCisJICogXGJyaWVmIFJldHVybiB0eXBlIG9mIHRoaXMgS2V5SW5mbyBlbGVtZW50CisJICovCisJCisJdmlydHVhbCBrZXlJbmZvVHlwZSBnZXRLZXlJbmZvVHlwZSh2b2lkKSBjb25zdCB7cmV0dXJuIERTSUdLZXlJbmZvOjpLRVlJTkZPX1NQS0lEQVRBO30KKworCS8vQH0KKworcHJpdmF0ZToKKworCURTSUdLZXlJbmZvU1BLSURhdGEoKTsJCQkJCQkvLyBOb24taW1wbGVtZW50ZWQgY29uc3RydWN0b3IKKworCXN0cnVjdCBTZXhwTm9kZSB7CisJCWNvbnN0IFhNTENoCQkqIG1wX2V4cHI7CisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlCQkJCisJCQkJCQkqIG1wX2V4cHJUZXh0Tm9kZTsKKwl9OworCisJdHlwZWRlZiBzdGQ6OnZlY3RvcjxTZXhwTm9kZSAqPiBzZXhwVmVjdG9yVHlwZTsKKworCXNleHBWZWN0b3JUeXBlCQltX3NleHBMaXN0OworCit9OworCisKKworI2VuZGlmIC8qICNkZWZpbmUgRFNJR0tFWVNQS0lEQVRBX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL2RzaWcvRFNJR0tleUluZm9WYWx1ZS5jcHAgYi9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvVmFsdWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmMDNkYWYKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvVmFsdWUuY3BwCkBAIC0wLDAgKzEsNTc0IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBEU0lHS2V5SW5mb1ZhbHVlIDo9IEEgdmFsdWUgc2V0dGluZworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHS2V5SW5mb1ZhbHVlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNQbGF0Zm9ybVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0V4Y2VwdGlvbi5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdTaWduYXR1cmUuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworRFNJR0tleUluZm9WYWx1ZTo6RFNJR0tleUluZm9WYWx1ZShjb25zdCBYU0VDRW52ICogZW52LCBET01Ob2RlICp2YWx1ZU5vZGUpIDoKK0RTSUdLZXlJbmZvKGVudiksCittcF9QVGV4dE5vZGUoMCksCittcF9RVGV4dE5vZGUoMCksCittcF9HVGV4dE5vZGUoMCksCittcF9ZVGV4dE5vZGUoMCksCittcF9tb2R1bHVzVGV4dE5vZGUoMCksCittcF9leHBvbmVudFRleHROb2RlKDApLAorbXBfbmFtZWRDdXJ2ZUVsZW1lbnROb2RlKDApLAorbXBfZWNQdWJsaWNLZXlUZXh0Tm9kZSgwKSwKK21fa2V5SW5mb1R5cGUoS0VZSU5GT19OT1RTRVQpIHsKKworCQltcF9rZXlJbmZvRE9NTm9kZSA9IHZhbHVlTm9kZTsKK30KKworRFNJR0tleUluZm9WYWx1ZTo6RFNJR0tleUluZm9WYWx1ZShjb25zdCBYU0VDRW52ICogZW52KSA6CitEU0lHS2V5SW5mbyhlbnYpLAorbXBfUFRleHROb2RlKDApLAorbXBfUVRleHROb2RlKDApLAorbXBfR1RleHROb2RlKDApLAorbXBfWVRleHROb2RlKDApLAorbXBfbW9kdWx1c1RleHROb2RlKDApLAorbXBfZXhwb25lbnRUZXh0Tm9kZSgwKSwKK21wX25hbWVkQ3VydmVFbGVtZW50Tm9kZSgwKSwKK21wX2VjUHVibGljS2V5VGV4dE5vZGUoMCksCittX2tleUluZm9UeXBlKEtFWUlORk9fTk9UU0VUKSB7CisKKwltcF9rZXlJbmZvRE9NTm9kZSA9IE5VTEw7Cit9CisKK0RTSUdLZXlJbmZvVmFsdWU6On5EU0lHS2V5SW5mb1ZhbHVlKCkgeworCisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBMb2FkIGZyb20gWE1MCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIERTSUdLZXlJbmZvVmFsdWU6OmxvYWQodm9pZCkgeworCisJaWYgKG1wX2tleUluZm9ET01Ob2RlID09IE5VTEwgfHwgIXN0ckVxdWFscyhnZXREU0lHTG9jYWxOYW1lKG1wX2tleUluZm9ET01Ob2RlKSwgIktleVZhbHVlIikpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkRFNJR0NoaWxkTm90Rm91bmQsCisJCQkiRW1wdHkgb3IgaW5jb3JyZWN0IG5vZGUgcGFzc2VkIHRvIERTSUdLZXlJbmZvVmFsdWUiKTsKKworCX0KKworCURPTU5vZGUgKmNoaWxkLCAqcCwgKnZhbDsKKworCWNoaWxkID0gbXBfa2V5SW5mb0RPTU5vZGUtPmdldEZpcnN0Q2hpbGQoKTsKKwl3aGlsZSAoY2hpbGQgIT0gTlVMTCAmJiBjaGlsZC0+Z2V0Tm9kZVR5cGUoKSAhPSBET01Ob2RlOjpFTEVNRU5UX05PREUpCisJCWNoaWxkID0gY2hpbGQtPmdldE5leHRTaWJsaW5nKCk7CisJLy9jaGlsZCA9IGZpbmRGaXJzdENoaWxkT2ZUeXBlKG1wX3ZhbHVlTm9kZSwgRE9NTm9kZTo6RUxFTUVOVF9OT0RFKTsKKworCWlmIChjaGlsZCA9PSAwKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWREU0lHQ2hpbGROb3RGb3VuZCwKKwkJCSJFbXB0eSBFeHBlY3RlZCB2YWx1ZSBub2RlIGJlbmVhdGggPEtleVZhbHVlPiIpOworCX0KKworCWlmIChzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZShjaGlsZCksICJEU0FLZXlWYWx1ZSIpKSB7CisKKwkJbV9rZXlJbmZvVHlwZSA9IEtFWUlORk9fVkFMVUVfRFNBOworCisJCXAgPSBmaW5kRmlyc3RDaGlsZE9mVHlwZShjaGlsZCwgRE9NTm9kZTo6RUxFTUVOVF9OT0RFKTsKKworCQl3aGlsZSAocCAhPSBOVUxMKSB7CisKKwkJCWlmIChzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZShwKSwgIlAiKSkgeworCQkJCXZhbCA9IGZpbmRGaXJzdENoaWxkT2ZUeXBlKHAsIERPTU5vZGU6OlRFWFRfTk9ERSk7CisJCQkJaWYgKHZhbCAhPSBOVUxMKSB7CisJCQkJCW1wX1BUZXh0Tm9kZSA9IHZhbDsKKwkJCQl9CisJCQl9CisJCQlpZiAoc3RyRXF1YWxzKGdldERTSUdMb2NhbE5hbWUocCksICJRIikpIHsKKwkJCQl2YWwgPSBmaW5kRmlyc3RDaGlsZE9mVHlwZShwLCBET01Ob2RlOjpURVhUX05PREUpOworCQkJCWlmICh2YWwgIT0gTlVMTCkgeworCQkJCQltcF9RVGV4dE5vZGUgPSB2YWw7CisJCQkJfQorCQkJfQorCQkJaWYgKHN0ckVxdWFscyhnZXREU0lHTG9jYWxOYW1lKHApLCAiRyIpKSB7CisJCQkJdmFsID0gZmluZEZpcnN0Q2hpbGRPZlR5cGUocCwgRE9NTm9kZTo6VEVYVF9OT0RFKTsKKwkJCQlpZiAodmFsICE9IE5VTEwpIHsKKwkJCQkJbXBfR1RleHROb2RlID0gdmFsOworCQkJCX0KKwkJCX0KKwkJCWlmIChzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZShwKSwgIlkiKSkgeworCQkJCXZhbCA9IGZpbmRGaXJzdENoaWxkT2ZUeXBlKHAsIERPTU5vZGU6OlRFWFRfTk9ERSk7CisJCQkJaWYgKHZhbCAhPSBOVUxMKSB7CisJCQkJCW1wX1lUZXh0Tm9kZSA9IHZhbDsKKwkJCQl9CisJCQl9CisKKwkJCXAgPSBwLT5nZXROZXh0U2libGluZygpOworCisJCX0KKwl9CisKKwllbHNlIGlmIChzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZShjaGlsZCksICJSU0FLZXlWYWx1ZSIpKSB7CisKKwkJbV9rZXlJbmZvVHlwZSA9IEtFWUlORk9fVkFMVUVfUlNBOworCisJCXAgPSBmaW5kRmlyc3RDaGlsZE9mVHlwZShjaGlsZCwgRE9NTm9kZTo6RUxFTUVOVF9OT0RFKTsKKworCQlpZiAocCA9PSAwIHx8ICFzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZShwKSwgIk1vZHVsdXMiKSkgeworCisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkRFNJR0NoaWxkTm90Rm91bmQsCisJCQkJIkV4cGVjdGVkIDxNb2R1bHVzPiBub2RlIGJlbmVhdGggPFJTQUtleVZhbHVlPiIpOworCisJCX0KKworCQl2YWwgPSBmaW5kRmlyc3RDaGlsZE9mVHlwZShwLCBET01Ob2RlOjpURVhUX05PREUpOworCisJCWlmICh2YWwgPT0gMCkgeworCisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkRFNJR0NoaWxkTm90Rm91bmQsCisJCQkJIkV4cGVjdGVkIGEgdGV4dCBub2RlIGJlbmVhdGggPE1vZHVsdXM+Iik7CisKKwkJfQorCQkKKwkJbXBfbW9kdWx1c1RleHROb2RlID0gdmFsOworCisJCS8vIEZpbmQgdGhlIEV4cG9uZW50CisKKwkJcCA9IHAtPmdldE5leHRTaWJsaW5nKCk7CisKKwkJd2hpbGUgKHAgIT0gMCAmJiBwLT5nZXROb2RlVHlwZSgpICE9IERPTU5vZGU6OkVMRU1FTlRfTk9ERSkKKwkJCXAgPSBwLT5nZXROZXh0U2libGluZygpOworCisJCWlmIChwID09IDAgfHwgIXN0ckVxdWFscyhnZXREU0lHTG9jYWxOYW1lKHApLCAiRXhwb25lbnQiKSkgeworCisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkRFNJR0NoaWxkTm90Rm91bmQsCisJCQkJIkV4cGVjdGVkIDxFeHBvbmVudD4gbm9kZSBiZW5lYXRoIDxSU0FLZXlWYWx1ZT4iKTsKKworCQl9CisKKwkJdmFsID0gZmluZEZpcnN0Q2hpbGRPZlR5cGUocCwgRE9NTm9kZTo6VEVYVF9OT0RFKTsKKworCQlpZiAodmFsID09IDApIHsKKworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZERTSUdDaGlsZE5vdEZvdW5kLAorCQkJCSJFeHBlY3RlZCBhIHRleHQgbm9kZSBiZW5lYXRoIDxFeHBvbmVudD4iKTsKKworCQl9CisJCQorCQltcF9leHBvbmVudFRleHROb2RlID0gdmFsOworCisJfQorCisgICAgZWxzZSBpZiAoc3RyRXF1YWxzKGdldERTSUcxMUxvY2FsTmFtZShjaGlsZCksICJFQ0tleVZhbHVlIikpIHsKKworICAgICAgICBtX2tleUluZm9UeXBlID0gS0VZSU5GT19WQUxVRV9FQzsKKworICAgICAgICBwID0gZmluZEZpcnN0Q2hpbGRPZlR5cGUoY2hpbGQsIERPTU5vZGU6OkVMRU1FTlRfTk9ERSk7CisgICAgICAgIGlmIChwID09IDAgfHwgIXN0ckVxdWFscyhnZXREU0lHMTFMb2NhbE5hbWUocCksICJOYW1lZEN1cnZlIikpIHsKKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWREU0lHQ2hpbGROb3RGb3VuZCwKKwkJCQkiRXhwZWN0ZWQgPE5hbWVkQ3VydmU+IG5vZGUgYmVuZWF0aCA8RUNLZXlWYWx1ZT4gKDxFQ1BhcmFtZXRlcnM+IG5vdCBzdXBwb3J0ZWQpIik7CisgICAgICAgIH0KKworICAgICAgICBtcF9uYW1lZEN1cnZlRWxlbWVudE5vZGUgPSBwOworCisJCXAgPSBwLT5nZXROZXh0U2libGluZygpOworCisJCXdoaWxlIChwICE9IDAgJiYgcC0+Z2V0Tm9kZVR5cGUoKSAhPSBET01Ob2RlOjpFTEVNRU5UX05PREUpCisJCQlwID0gcC0+Z2V0TmV4dFNpYmxpbmcoKTsKKworICAgICAgICBpZiAocCA9PSAwIHx8ICFzdHJFcXVhbHMoZ2V0RFNJRzExTG9jYWxOYW1lKHApLCAiUHVibGljS2V5IikpIHsKKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWREU0lHQ2hpbGROb3RGb3VuZCwKKwkJCQkiRXhwZWN0ZWQgPFB1YmxpY0tleT4gbm9kZSBiZW5lYXRoIDxFQ0tleVZhbHVlPiIpOworICAgICAgICB9CisKKwkJdmFsID0gZmluZEZpcnN0Q2hpbGRPZlR5cGUocCwgRE9NTm9kZTo6VEVYVF9OT0RFKTsKKworCQlpZiAodmFsID09IDApIHsKKworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZERTSUdDaGlsZE5vdEZvdW5kLAorCQkJCSJFeHBlY3RlZCBhIHRleHQgbm9kZSBiZW5lYXRoIDxQdWJsaWNLZXk+Iik7CisKKwkJfQorCQkKKwkJbXBfZWNQdWJsaWNLZXlUZXh0Tm9kZSA9IHZhbDsKKworICAgIH0KKworCWVsc2UgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6VW5rbm93bktleVZhbHVlKTsKKworCX0KKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdldCBSU0EgVmFsdWVzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjb25zdCBYTUxDaCogRFNJR0tleUluZm9WYWx1ZTo6Z2V0UlNBTW9kdWx1cyh2b2lkKSBjb25zdCB7CisKKwlpZiAobV9rZXlJbmZvVHlwZSAhPSBLRVlJTkZPX1ZBTFVFX1JTQSkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6S2V5SW5mb0Vycm9yLAorCQkJIkF0dGVtcHQgdG8gR2V0IGFuIFJTQSBNb2R1bHVzIGZyb20gYSBub24tUlNBVmFsdWUgS2V5VmFsdWUgbm9kZSIpOworCisJfQorCisJaWYgKG1wX21vZHVsdXNUZXh0Tm9kZSAhPSBOVUxMKQorCQlyZXR1cm4gbXBfbW9kdWx1c1RleHROb2RlLT5nZXROb2RlVmFsdWUoKTsKKworCXJldHVybiBOVUxMOworCit9CisKK2NvbnN0IFhNTENoICogRFNJR0tleUluZm9WYWx1ZTo6Z2V0UlNBRXhwb25lbnQodm9pZCkgY29uc3QgeworCisJaWYgKG1fa2V5SW5mb1R5cGUgIT0gS0VZSU5GT19WQUxVRV9SU0EpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OktleUluZm9FcnJvciwKKwkJCSJBdHRlbXB0IHRvIEdldCBhbiBSU0EgRXhwb25lbnQgZnJvbSBhIG5vbi1SU0FWYWx1ZSBLZXlWYWx1ZSBub2RlIik7CisKKwl9CisKKwlpZiAobXBfZXhwb25lbnRUZXh0Tm9kZSAhPSBOVUxMKQorCQlyZXR1cm4gbXBfZXhwb25lbnRUZXh0Tm9kZS0+Z2V0Tm9kZVZhbHVlKCk7CisKKwlyZXR1cm4gTlVMTDsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdldCBFQyBWYWx1ZXMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NvbnN0IFhNTENoKiBEU0lHS2V5SW5mb1ZhbHVlOjpnZXRFQ05hbWVkQ3VydmUodm9pZCkgY29uc3QgeworCisJaWYgKG1fa2V5SW5mb1R5cGUgIT0gS0VZSU5GT19WQUxVRV9FQykgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6S2V5SW5mb0Vycm9yLAorCQkJIkF0dGVtcHQgdG8gR2V0IGFuIEVDIE5hbWVkQ3VydmUgZnJvbSBhIG5vbi1FQ1ZhbHVlIEtleVZhbHVlIG5vZGUiKTsKKworCX0KKworCWlmIChtcF9uYW1lZEN1cnZlRWxlbWVudE5vZGUgIT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUVsZW1lbnQqPihtcF9uYW1lZEN1cnZlRWxlbWVudE5vZGUpLT5nZXRBdHRyaWJ1dGVOUyhOVUxMLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUkkpOworCisJcmV0dXJuIE5VTEw7CisKK30KKworY29uc3QgWE1MQ2ggKiBEU0lHS2V5SW5mb1ZhbHVlOjpnZXRFQ1B1YmxpY0tleSh2b2lkKSBjb25zdCB7CisKKwlpZiAobV9rZXlJbmZvVHlwZSAhPSBLRVlJTkZPX1ZBTFVFX0VDKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpLZXlJbmZvRXJyb3IsCisJCQkiQXR0ZW1wdCB0byBHZXQgYW4gRUMgUHVibGljS2V5IGZyb20gYSBub24tRUNWYWx1ZSBLZXlWYWx1ZSBub2RlIik7CisKKwl9CisKKwlpZiAobXBfZWNQdWJsaWNLZXlUZXh0Tm9kZSAhPSBOVUxMKQorCQlyZXR1cm4gbXBfZWNQdWJsaWNLZXlUZXh0Tm9kZS0+Z2V0Tm9kZVZhbHVlKCk7CisKKwlyZXR1cm4gTlVMTDsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENyZWF0ZSBhbmQgbWFuaXB1bGF0ZSBEU0EgVmFsdWVzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitET01FbGVtZW50ICogRFNJR0tleUluZm9WYWx1ZTo6Y3JlYXRlQmxhbmtEU0FLZXlWYWx1ZShjb25zdCBYTUxDaCAqIFAsCisJY29uc3QgWE1MQ2ggKiBRLAorCWNvbnN0IFhNTENoICogRywKKwljb25zdCBYTUxDaCAqIFkpIHsKKworCS8vIFNldCBvdXIgdHlwZQorCQorCW1fa2V5SW5mb1R5cGUgPSBLRVlJTkZPX1ZBTFVFX0RTQTsKKworCS8vIENyZWF0ZSB0aGUgRE9NIFN0cnVjdHVyZQorCisJc2FmZUJ1ZmZlciBzdHI7CisJRE9NRG9jdW1lbnQgKmRvYyA9IG1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKTsKKwljb25zdCBYTUxDaCAqIHByZWZpeCA9IG1wX2Vudi0+Z2V0RFNJR05TUHJlZml4KCk7CisKKwltYWtlUU5hbWUoc3RyLCBwcmVmaXgsICJLZXlWYWx1ZSIpOworCisJRE9NRWxlbWVudCAqcmV0ID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRFNJRywgc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCW1wX2tleUluZm9ET01Ob2RlID0gcmV0OworCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCAiRFNBS2V5VmFsdWUiKTsKKwlET01FbGVtZW50ICogZHNhID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRFNJRywgc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChyZXQpOworCXJldC0+YXBwZW5kQ2hpbGQoZHNhKTsKKwltcF9lbnYtPmRvUHJldHR5UHJpbnQoZHNhKTsKKwltcF9lbnYtPmRvUHJldHR5UHJpbnQocmV0KTsKKworCS8vIE5vdyBjcmVhdGUgdGhlIHZhbHVlIGNoaWxkcmVuCisKKwltYWtlUU5hbWUoc3RyLCBwcmVmaXgsICJQIik7CisJRE9NRWxlbWVudCAqIHYgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklEU0lHLCBzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisJbXBfUFRleHROb2RlID0gZG9jLT5jcmVhdGVUZXh0Tm9kZShQKTsKKwlkc2EtPmFwcGVuZENoaWxkKHYpOworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChkc2EpOworCXYtPmFwcGVuZENoaWxkKG1wX1BUZXh0Tm9kZSk7CisKKwltYWtlUU5hbWUoc3RyLCBwcmVmaXgsICJRIik7CisJdiA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSURTSUcsIHN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKwltcF9QVGV4dE5vZGUgPSBkb2MtPmNyZWF0ZVRleHROb2RlKFEpOworCWRzYS0+YXBwZW5kQ2hpbGQodik7CisJbXBfZW52LT5kb1ByZXR0eVByaW50KGRzYSk7CisJdi0+YXBwZW5kQ2hpbGQobXBfUFRleHROb2RlKTsKKworCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgIkciKTsKKwl2ID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRFNJRywgc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCW1wX1BUZXh0Tm9kZSA9IGRvYy0+Y3JlYXRlVGV4dE5vZGUoRyk7CisJZHNhLT5hcHBlbmRDaGlsZCh2KTsKKwltcF9lbnYtPmRvUHJldHR5UHJpbnQoZHNhKTsKKwl2LT5hcHBlbmRDaGlsZChtcF9QVGV4dE5vZGUpOworCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCAiWSIpOworCXYgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklEU0lHLCBzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisJbXBfUFRleHROb2RlID0gZG9jLT5jcmVhdGVUZXh0Tm9kZShZKTsKKwlkc2EtPmFwcGVuZENoaWxkKHYpOworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChkc2EpOworCXYtPmFwcGVuZENoaWxkKG1wX1BUZXh0Tm9kZSk7CisKKwlyZXR1cm4gcmV0OworCit9CisKK3ZvaWQgRFNJR0tleUluZm9WYWx1ZTo6c2V0RFNBUChjb25zdCBYTUxDaCAqIFApIHsKKworCWlmIChtX2tleUluZm9UeXBlICE9IEtFWUlORk9fVkFMVUVfRFNBKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpLZXlJbmZvRXJyb3IsCisJCQkiQXR0ZW1wdCB0byBzZXQgYSBEU0EgdmFsdWUgaW4gYSBub24tRFNBIEtleVZhbHVlIG5vZGUiKTsKKworCX0KKworCW1wX1BUZXh0Tm9kZS0+c2V0Tm9kZVZhbHVlKFApOworCit9CisKK3ZvaWQgRFNJR0tleUluZm9WYWx1ZTo6c2V0RFNBUShjb25zdCBYTUxDaCAqIFEpIHsKKworCWlmIChtX2tleUluZm9UeXBlICE9IEtFWUlORk9fVkFMVUVfRFNBKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpLZXlJbmZvRXJyb3IsCisJCQkiQXR0ZW1wdCB0byBzZXQgYSBEU0EgdmFsdWUgaW4gYSBub24tRFNBIEtleVZhbHVlIG5vZGUiKTsKKworCX0KKworCW1wX1FUZXh0Tm9kZS0+c2V0Tm9kZVZhbHVlKFEpOworCit9CisKK3ZvaWQgRFNJR0tleUluZm9WYWx1ZTo6c2V0RFNBRyhjb25zdCBYTUxDaCAqIEcpIHsKKworCWlmIChtX2tleUluZm9UeXBlICE9IEtFWUlORk9fVkFMVUVfRFNBKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpLZXlJbmZvRXJyb3IsCisJCQkiQXR0ZW1wdCB0byBzZXQgYSBEU0EgdmFsdWUgaW4gYSBub24tRFNBIEtleVZhbHVlIG5vZGUiKTsKKworCX0KKworCW1wX0dUZXh0Tm9kZS0+c2V0Tm9kZVZhbHVlKEcpOworCit9CisKK3ZvaWQgRFNJR0tleUluZm9WYWx1ZTo6c2V0RFNBWShjb25zdCBYTUxDaCAqIFkpIHsKKworCWlmIChtX2tleUluZm9UeXBlICE9IEtFWUlORk9fVkFMVUVfRFNBKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpLZXlJbmZvRXJyb3IsCisJCQkiQXR0ZW1wdCB0byBzZXQgYSBEU0EgdmFsdWUgaW4gYSBub24tRFNBIEtleVZhbHVlIG5vZGUiKTsKKworCX0KKworCW1wX1lUZXh0Tm9kZS0+c2V0Tm9kZVZhbHVlKFkpOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ3JlYXRlIGFuZCBtYW5pcHVsYXRlIFJTQSBWYWx1ZXMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RPTUVsZW1lbnQgKiBEU0lHS2V5SW5mb1ZhbHVlOjpjcmVhdGVCbGFua1JTQUtleVZhbHVlKGNvbnN0IFhNTENoICogbW9kdWx1cywKKwkJCQkJCQkJCQkJCQkgIGNvbnN0IFhNTENoICogZXhwb25lbnQpIHsKKworCS8vIFNldCBvdXIgdHlwZQorCQorCW1fa2V5SW5mb1R5cGUgPSBLRVlJTkZPX1ZBTFVFX1JTQTsKKworCS8vIENyZWF0ZSB0aGUgRE9NIFN0cnVjdHVyZQorCisJc2FmZUJ1ZmZlciBzdHI7CisJRE9NRG9jdW1lbnQgKmRvYyA9IG1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKTsKKwljb25zdCBYTUxDaCAqIHByZWZpeCA9IG1wX2Vudi0+Z2V0RFNJR05TUHJlZml4KCk7CisKKwltYWtlUU5hbWUoc3RyLCBwcmVmaXgsICJLZXlWYWx1ZSIpOworCisJRE9NRWxlbWVudCAqcmV0ID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRFNJRywgc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCW1wX2tleUluZm9ET01Ob2RlID0gcmV0OworCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCAiUlNBS2V5VmFsdWUiKTsKKwlET01FbGVtZW50ICogcnNhID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRFNJRywgc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChyZXQpOworCXJldC0+YXBwZW5kQ2hpbGQocnNhKTsKKwltcF9lbnYtPmRvUHJldHR5UHJpbnQocnNhKTsKKwltcF9lbnYtPmRvUHJldHR5UHJpbnQocmV0KTsKKworCS8vIE5vdyBjcmVhdGUgdGhlIHZhbHVlIGNoaWxkcmVuCisKKwltYWtlUU5hbWUoc3RyLCBwcmVmaXgsICJNb2R1bHVzIik7CisJRE9NRWxlbWVudCAqIHYgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklEU0lHLCBzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisJbXBfbW9kdWx1c1RleHROb2RlID0gZG9jLT5jcmVhdGVUZXh0Tm9kZShtb2R1bHVzKTsKKwlyc2EtPmFwcGVuZENoaWxkKHYpOworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChyc2EpOworCXYtPmFwcGVuZENoaWxkKG1wX21vZHVsdXNUZXh0Tm9kZSk7CisKKwltYWtlUU5hbWUoc3RyLCBwcmVmaXgsICJFeHBvbmVudCIpOworCXYgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklEU0lHLCBzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisJbXBfZXhwb25lbnRUZXh0Tm9kZSA9IGRvYy0+Y3JlYXRlVGV4dE5vZGUoZXhwb25lbnQpOworCXJzYS0+YXBwZW5kQ2hpbGQodik7CisJbXBfZW52LT5kb1ByZXR0eVByaW50KHJzYSk7CisJdi0+YXBwZW5kQ2hpbGQobXBfZXhwb25lbnRUZXh0Tm9kZSk7CisKKwlyZXR1cm4gcmV0OworCit9CisKK3ZvaWQgRFNJR0tleUluZm9WYWx1ZTo6c2V0UlNBTW9kdWx1cyhjb25zdCBYTUxDaCAqIG1vZHVsdXMpIHsKKworCWlmIChtX2tleUluZm9UeXBlICE9IEtFWUlORk9fVkFMVUVfUlNBKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpLZXlJbmZvRXJyb3IsCisJCQkiQXR0ZW1wdCB0byBzZXQgYW4gUlNBIE1vZHVsdXMgZnJvbSBhIG5vbi1SU0EgS2V5VmFsdWUgbm9kZSIpOworCisJfQorCisJbXBfbW9kdWx1c1RleHROb2RlLT5zZXROb2RlVmFsdWUobW9kdWx1cyk7CisKK30KKwordm9pZCBEU0lHS2V5SW5mb1ZhbHVlOjpzZXRSU0FFeHBvbmVudChjb25zdCBYTUxDaCAqIGV4cG9uZW50KSB7CisKKwlpZiAobV9rZXlJbmZvVHlwZSAhPSBLRVlJTkZPX1ZBTFVFX1JTQSkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6S2V5SW5mb0Vycm9yLAorCQkJIkF0dGVtcHQgdG8gc2V0IGFuIFJTQSBFeHBvbmVudCBmcm9tIGEgbm9uLVJTQSBLZXlWYWx1ZSBub2RlIik7CisKKwl9CisKKwltcF9leHBvbmVudFRleHROb2RlLT5zZXROb2RlVmFsdWUoZXhwb25lbnQpOworCit9CisKK0RPTUVsZW1lbnQqIERTSUdLZXlJbmZvVmFsdWU6OmNyZWF0ZUJsYW5rRUNLZXlWYWx1ZShjb25zdCBYTUxDaCAqIGN1cnZlTmFtZSwgY29uc3QgWE1MQ2ggKiBwdWJsaWNLZXkpIHsKKworCS8vIFNldCBvdXIgdHlwZQorCQorCW1fa2V5SW5mb1R5cGUgPSBLRVlJTkZPX1ZBTFVFX0VDOworCisJLy8gQ3JlYXRlIHRoZSBET00gU3RydWN0dXJlCisKKwlzYWZlQnVmZmVyIHN0cjsKKwlET01Eb2N1bWVudCAqZG9jID0gbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpOworCWNvbnN0IFhNTENoICogcHJlZml4ID0gbXBfZW52LT5nZXREU0lHTlNQcmVmaXgoKTsKKwljb25zdCBYTUxDaCAqIHByZWZpeDExID0gbXBfZW52LT5nZXREU0lHMTFOU1ByZWZpeCgpOworCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCAiS2V5VmFsdWUiKTsKKworCURPTUVsZW1lbnQgKnJldCA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSURTSUcsIHN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKwltcF9rZXlJbmZvRE9NTm9kZSA9IHJldDsKKworCW1ha2VRTmFtZShzdHIsIHByZWZpeDExLCAiRUNLZXlWYWx1ZSIpOworCURPTUVsZW1lbnQgKiBlYyA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSURTSUcxMSwgc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChyZXQpOworCXJldC0+YXBwZW5kQ2hpbGQoZWMpOworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChlYyk7CisJbXBfZW52LT5kb1ByZXR0eVByaW50KHJldCk7CisKKwkvLyBOb3cgY3JlYXRlIHRoZSB2YWx1ZSBjaGlsZHJlbgorCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4MTEsICJOYW1lZEN1cnZlIik7CisJRE9NRWxlbWVudCAqIHYgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklEU0lHMTEsIHN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKwltcF9uYW1lZEN1cnZlRWxlbWVudE5vZGUgPSB2OworCWVjLT5hcHBlbmRDaGlsZCh2KTsKKwltcF9lbnYtPmRvUHJldHR5UHJpbnQoZWMpOworICAgIHYtPnNldEF0dHJpYnV0ZU5TKE5VTEwsIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSSwgY3VydmVOYW1lKTsKKworCW1ha2VRTmFtZShzdHIsIHByZWZpeDExLCAiUHVibGljS2V5Iik7CisJdiA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSURTSUcxMSwgc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCW1wX2VjUHVibGljS2V5VGV4dE5vZGUgPSBkb2MtPmNyZWF0ZVRleHROb2RlKHB1YmxpY0tleSk7CisJZWMtPmFwcGVuZENoaWxkKHYpOworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChlYyk7CisJdi0+YXBwZW5kQ2hpbGQobXBfZWNQdWJsaWNLZXlUZXh0Tm9kZSk7CisKKwlyZXR1cm4gcmV0OworCit9CisKK3ZvaWQgRFNJR0tleUluZm9WYWx1ZTo6c2V0RUNOYW1lZEN1cnZlKGNvbnN0IFhNTENoKiBjdXJ2ZU5hbWUpIHsKKwlpZiAobV9rZXlJbmZvVHlwZSAhPSBLRVlJTkZPX1ZBTFVFX0VDKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpLZXlJbmZvRXJyb3IsCisJCQkiQXR0ZW1wdCB0byBzZXQgYW4gRUMgTmFtZWRDdXJ2ZSBmcm9tIGEgbm9uLUVDIEtleVZhbHVlIG5vZGUiKTsKKworCX0KKworICAgIHN0YXRpY19jYXN0PERPTUVsZW1lbnQqPihtcF9uYW1lZEN1cnZlRWxlbWVudE5vZGUpLT5zZXRBdHRyaWJ1dGVOUyhOVUxMLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUkksIGN1cnZlTmFtZSk7Cit9CisKK3ZvaWQgRFNJR0tleUluZm9WYWx1ZTo6c2V0RUNQdWJsaWNLZXkoY29uc3QgWE1MQ2gqIHB1YmxpY0tleSkgeworCisJaWYgKG1fa2V5SW5mb1R5cGUgIT0gS0VZSU5GT19WQUxVRV9FQykgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6S2V5SW5mb0Vycm9yLAorCQkJIkF0dGVtcHQgdG8gc2V0IGFuIEVDIFB1YmxpY0tleSBmcm9tIGEgbm9uLUVDIEtleVZhbHVlIG5vZGUiKTsKKworCX0KKworCW1wX2VjUHVibGljS2V5VGV4dE5vZGUtPnNldE5vZGVWYWx1ZShwdWJsaWNLZXkpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIE90aGVyIGludGVyZmFjZSBmdW5jdGlvbnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RTSUdLZXlJbmZvOjprZXlJbmZvVHlwZSBEU0lHS2V5SW5mb1ZhbHVlOjpnZXRLZXlJbmZvVHlwZSh2b2lkKSBjb25zdCB7CisKKwlyZXR1cm4gbV9rZXlJbmZvVHlwZTsKKworfQorCitjb25zdCBYTUxDaCAqIERTSUdLZXlJbmZvVmFsdWU6OmdldEtleU5hbWUodm9pZCkgY29uc3QgeworCisJcmV0dXJuIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ckVtcHR5OworCit9CisKZGlmZiAtLWdpdCBhL2Mvc3JjL2RzaWcvRFNJR0tleUluZm9WYWx1ZS5ocHAgYi9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvVmFsdWUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ZTA1NzAKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvVmFsdWUuaHBwCkBAIC0wLDAgKzEsMzYyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBEU0lHS2V5SW5mb1ZhbHVlIDo9IEEgdmFsdWUgc2V0dGluZworICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBEU0lHS0VZSU5GT1ZBTFVFX0lOQ0xVREUKKyNkZWZpbmUgRFNJR0tFWUlORk9WQUxVRV9JTkNMVURFCisKKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNTYWZlQnVmZmVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0tleUluZm8uaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1BsYXRmb3JtVXRpbHMuaHBwPgorCitYU0VDX0RFQ0xBUkVfWEVSQ0VTX0NMQVNTKERPTUVsZW1lbnQpOworCisvKioKKyAqIEBpbmdyb3VwIHB1YnNpZworICovCisKKy8qKgorICogQGJyaWVmIFRoZSBjbGFzcyBmb3IgXDxLZXlWYWx1ZVw+IG5vZGVzIGluIGEgS2V5SW5mbyBsaXN0LgorICoKKyAqIENsYXNzIGZvciBob2xkaW5nIGluZm9ybWF0aW9uIG9uIGEgS2V5VmFsdWUgbm9kZSBhcyB3ZWxsIGFzIHNldHRpbmcKKyAqIHN1Y2ggYSBub2RlIGluIGEgc2lnbmF0dXJlLgorICoKKyAqIFR3byB0eXBlcyBvZiBWYWx1ZSBhcmUgdW5kZXJzdG9vZCAtIFJTQSBhbmQgRFNBLgorICoKKyAqIFJTQSB2YWx1ZXMgYXJlIGZ1bGx5IGltcGxlbWVudGVkIGFzIHBlciBYTUwtRFNpZy4gIFRoZXkgaGF2ZSB0d28gcGFyYW1ldGVycworICoKKyAqIDx1bD4KKyAqIDxsaT48ZW0+TW9kdWx1czwvZW0+IC0gaG9sZHMgdGhlIG1vZHVsdXMgb2YgdGhpcyBwdWJsaWMga2V5OyBhbmQ8L2xpPgorICogPGxpPjxlbT5FeHBvbmVudDwvZW0+IC0gaG9sZHMgdGhlIGV4cG9uZW50LjwvbGk+CisgKiA8L3VsPgorICoKKyAqIERTQSB2YWx1ZXMgaGF2ZSBhbGwgbWFuZGF0b3J5IHBhcnRzIGltcGxlbWVudGVkICAtIFAsIFEsIEcgYW5kIFkuCisgKgorICogSiwgU2VlZCBhbmQgUGdlbkNvdW50ZXIgYXJlIG5vdCBjdXJyZW50bHkgaW1wbGVtZW50ZWQuCisgKi8KKworCitjbGFzcyBEU0lHX0VYUE9SVCBEU0lHS2V5SW5mb1ZhbHVlIDogcHVibGljIERTSUdLZXlJbmZvIHsKKworcHVibGljOgorCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgQ29uc3RydWN0b3IgZm9yIGFuIGV4aXN0aW5nIEtleUluZm8gICoKKwkgKgorCSAqIENvbnN0cnVjdG9yIHVzZWQgd2hlbiBsb2FkaW5nIGEgS2V5VmFsdWUgbm9kZSB0aGF0IGFscmVhZHkgZXhpc3RzCisJICogaW4gYW4gWE1MIGRvY3VtZW50LgorCSAqCisJICogQHBhcmFtIGVudiBPcGVyYXRpbmcgZW52aXJvbm1lbnQKKwkgKiBAcGFyYW0gdmFsdWVOb2RlIERPTU5vZGUgYXQgaGVhZCBvZiBYTUwgc3RydWN0dXJlCisJICovCisKKwlEU0lHS2V5SW5mb1ZhbHVlKAorCQljb25zdCBYU0VDRW52ICogZW52LCAKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUgKnZhbHVlTm9kZQorCSk7CisKKwkvKioKKwkgKiBcYnJpZWYgQ29uc3RydWN0b3IgZm9yIGNyZWF0aW5nIGZyb20gc2NyYXRjaAorCSAqCisJICogQ29uc3RydWN0b3IgdXNlZCB3aGVuIGNyZWF0aW5nIGEgbmV3IEtleVZhbHVlIG5vZGUgdG8gYXBwZW5kCisJICogdG8gYSBzaWduYXR1cmUgc3RydWN0dXJlLgorCSAqCisJICogQHBhcmFtIGVudiBPcGVyYXRpbmcgZW52aXJvbm1lbnQKKwkgKi8KKworCURTSUdLZXlJbmZvVmFsdWUoY29uc3QgWFNFQ0VudiAqIGVudik7CisKKwl2aXJ0dWFsIH5EU0lHS2V5SW5mb1ZhbHVlKCk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgTG9hZGluZyBhbmQgR2V0IGZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBMb2FkIGFuIGV4aXN0aW5nIFhNTCBzdHJ1Y3R1cmUKKwkgKgorCSAqIENhbGxlZCBieSB0aGUgU2lnbmF0dXJlIGNsYXNzIHdoZW4gaXQgaXMgcmVhZGluZyBpbgorCSAqIGEgRE9NIHN0cnVjdHVyZSAKKwkgKi8KKworCXZpcnR1YWwgdm9pZCBsb2FkKHZvaWQpOworCisJLyoqCisJICogXGJyaWVmIEdldCBQIHZhbHVlCisJICoKKwkgKiBAcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIERTQSBQIHN0cmluZyB2YWx1ZS4KKwkgKi8KKworCWNvbnN0IFhNTENoICogZ2V0RFNBUCh2b2lkKSBjb25zdCB7cmV0dXJuIG1wX1BUZXh0Tm9kZS0+Z2V0Tm9kZVZhbHVlKCk7fQorCisJLyoqCisJICogXGJyaWVmIEdldCBRIHZhbHVlCisJICoKKwkgKiBAcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIERTQSBRIHN0cmluZyB2YWx1ZS4KKwkgKi8KKworCWNvbnN0IFhNTENoICogZ2V0RFNBUSh2b2lkKSBjb25zdCB7cmV0dXJuIG1wX1FUZXh0Tm9kZS0+Z2V0Tm9kZVZhbHVlKCk7fQorCisJLyoqCisJICogXGJyaWVmIEdldCBHIHZhbHVlCisJICoKKwkgKiBAcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIERTQSBHIHN0cmluZyB2YWx1ZS4KKwkgKi8KKworCWNvbnN0IFhNTENoICogZ2V0RFNBRyh2b2lkKSBjb25zdCB7cmV0dXJuIG1wX0dUZXh0Tm9kZS0+Z2V0Tm9kZVZhbHVlKCk7fQorCisJLyoqCisJICogXGJyaWVmIEdldCBZIHZhbHVlCisJICoKKwkgKiBAcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIERTQSBZIHN0cmluZyB2YWx1ZS4KKwkgKi8KKworCWNvbnN0IFhNTENoICogZ2V0RFNBWSh2b2lkKSBjb25zdCB7cmV0dXJuIG1wX1lUZXh0Tm9kZS0+Z2V0Tm9kZVZhbHVlKCk7fQorCisJLyoqCisJICogXGJyaWVmIEdldCBNb2R1bHVzCisJICoKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIFJTQSBNb2R1bHVzCisJICovCisKKwljb25zdCBYTUxDaCAqIGdldFJTQU1vZHVsdXModm9pZCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IEV4cG9uZW50CisJICoKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZSBSU0EgTW9kdWx1cyBzdHJpbmcKKwkgKi8KKworCWNvbnN0IFhNTENoICogZ2V0UlNBRXhwb25lbnQodm9pZCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IE5hbWVkQ3VydmUgVVJJCisJICoKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIEVDIE5hbWVkQ3VydmUgVVJJCisJICovCisKKwljb25zdCBYTUxDaCAqIGdldEVDTmFtZWRDdXJ2ZSh2b2lkKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBHZXQgRUMgUHVibGljIEtleQorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgRUMgcHVibGljIGtleQorCSAqLworCisJY29uc3QgWE1MQ2ggKiBnZXRFQ1B1YmxpY0tleSh2b2lkKSBjb25zdDsKKworICAgIC8vQH0KKworCS8qKiBAbmFtZSBEU0EgQ3JlYXRlIGFuZCBzZXQgZnVuY3Rpb25zICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIGJsYW5rIEtleVZhbHVlIChhbmQgRE9NIHN0cnVjdHVyZSkKKwkgKgorCSAqIENyZWF0ZSBhIGJsYW5rIEtleVZhbHVlIHN0cnVjdHVyZSB3aXRoIHRoZSBwYXNzZWQgcGFyYW1ldGVycworCSAqIGFuZCBjcmVhdGUgdGhlIHJlcXVpcmVkIERPTSBzdHJ1Y3R1cmUgYXMgd2VsbC4KKwkgKgorCSAqIEBwYXJhbSBQIFRoZSBQIHZhbHVlIChiYXNlNjQgZW5jb2RlZCBpbiB1bmljb2RlIGZvcm1hdCkKKwkgKiBAcGFyYW0gUSBUaGUgUSB2YWx1ZSAoYmFzZTY0IGVuY29kZWQgaW4gdW5pY29kZSBmb3JtYXQpCisJICogQHBhcmFtIEcgVGhlIEcgdmFsdWUgKGJhc2U2NCBlbmNvZGVkIGluIHVuaWNvZGUgZm9ybWF0KQorCSAqIEBwYXJhbSBZIFRoZSBZIHZhbHVlIChiYXNlNjQgZW5jb2RlZCBpbiB1bmljb2RlIGZvcm1hdCkKKwkgKiBAcmV0dXJucyB0aGUgRE9NRWxlbWVudCBhdCB0aGUgaGVhZCBvZiB0aGUgRE9NIHN0cnVjdHVyZQorCSAqLworCQorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogY3JlYXRlQmxhbmtEU0FLZXlWYWx1ZShjb25zdCBYTUxDaCAqIFAsCisJCWNvbnN0IFhNTENoICogUSwKKwkJY29uc3QgWE1MQ2ggKiBHLAorCQljb25zdCBYTUxDaCAqIFkKKwkpOworCisJLyoqCisJICogXGJyaWVmIFNldCBQIHZhbHVlLgorCSAqCisJICogVGFrZSB0aGUgcHJvdmlkZWQgc3RyaW5nIGFuZCB1c2UgaXQgdG8gc2V0IHRoZSBQIHBhcmFtZXRlcgorCSAqIGluIHRoZSBLZXlWYWx1ZQorCSAqLworCisJdm9pZCBzZXREU0FQKGNvbnN0IFhNTENoICogUCk7CisKKwkvKioKKwkgKiBcYnJpZWYgU2V0IFEgdmFsdWUuCisJICoKKwkgKiBUYWtlIHRoZSBwcm92aWRlZCBzdHJpbmcgYW5kIHVzZSBpdCB0byBzZXQgdGhlIFEgcGFyYW1ldGVyCisJICogaW4gdGhlIEtleVZhbHVlCisJICovCisKKwl2b2lkIHNldERTQVEoY29uc3QgWE1MQ2ggKiBRKTsKKworCS8qKgorCSAqIFxicmllZiBTZXQgRyB2YWx1ZS4KKwkgKgorCSAqIFRha2UgdGhlIHByb3ZpZGVkIHN0cmluZyBhbmQgdXNlIGl0IHRvIHNldCB0aGUgRyBwYXJhbWV0ZXIKKwkgKiBpbiB0aGUgS2V5VmFsdWUKKwkgKi8KKworCXZvaWQgc2V0RFNBRyhjb25zdCBYTUxDaCAqIEcpOworCisJLyoqCisJICogXGJyaWVmIFNldCBZIHZhbHVlLgorCSAqCisJICogVGFrZSB0aGUgcHJvdmlkZWQgc3RyaW5nIGFuZCB1c2UgaXQgdG8gc2V0IHRoZSBZIHBhcmFtZXRlcgorCSAqIGluIHRoZSBLZXlWYWx1ZQorCSAqLworCisJdm9pZCBzZXREU0FZKGNvbnN0IFhNTENoICogWSk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgUlNBIENyZWF0ZSBhbmQgU2V0IGZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBDcmVhdGUgYSBibGFuayBSU0EgS2V5VmFsdWUKKwkgKgorCSAqIENyZWF0ZSBhIG5ldyBSU0FLZXlWYWx1ZSBvYmplY3QgYW5kIGFzc29jaWF0ZWQgRE9NIHN0cnVjdHVyZXMuCisJICoKKwkgKiBAcGFyYW0gbW9kdWx1cyBCYXNlNjQgZW5jb2RlZCB2YWx1ZSBvZiBNb2R1bHVzIHRvIHNldAorCSAqIEBwYXJhbSBleHBvbmVudCBCYXNlNjQgZW5jb2RlZCB2YWx1ZSBvZiB0aGUgRXhwb25lbnQgdG8gc2V0CisJICogQHJldHVybnMgVGhlIERPTSBzdHJ1Y3R1cmUgb2YgdGhlIFJTQUtleVZhbHVlIHRoYXQgaGFzIGJlZW4gY3JlYXRlZAorCSAqLworCQorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogCisJCWNyZWF0ZUJsYW5rUlNBS2V5VmFsdWUoY29uc3QgWE1MQ2ggKiBtb2R1bHVzLAorCQkJY29uc3QgWE1MQ2ggKiBleHBvbmVudCk7CisKKwkvKioKKwkgKiBcYnJpZWYgU2V0IHRoZSBNb2R1bHVzCisJICoKKwkgKiBTZXQgdGhlIGJhc2U2NCBlbmNvZGVkIHN0cmluZyBvZiB0aGUgTW9kdWx1cyB2YWx1ZSB3aXRoaW4gdGhlIGVsZW1lbnQuCisJICoKKwkgKiBAcGFyYW0gbW9kdWx1cyBCYXNlNjQgZW5jb2RlZCB2YWx1ZSB0byBzZXQKKwkgKi8KKworCXZvaWQgc2V0UlNBTW9kdWx1cyhjb25zdCBYTUxDaCAqIG1vZHVsdXMpOworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUgZXhwb25lbnQKKwkgKgorCSAqIFNldCB0aGUgYmFzZTY0IGVuY29kZWQgc3RyaW5nIG9mIHRoZSBleHBvbmVudCB2YWx1ZSB3aXRoaW4gdGhlIGVsZW1lbnQKKwkgKgorCSAqIEBwYXJhbSBleHBvbmVudCBCYXNlNjQgZW5jb2RlZCB2YWx1ZSB0byBzZXQKKwkgKi8KKworCXZvaWQgc2V0UlNBRXhwb25lbnQoY29uc3QgWE1MQ2ggKiBleHBvbmVudCk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgRUMgQ3JlYXRlIGFuZCBTZXQgZnVuY3Rpb25zICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIGJsYW5rIEVDIEtleVZhbHVlCisJICoKKwkgKiBDcmVhdGUgYSBuZXcgRUNLZXlWYWx1ZSBvYmplY3QgYW5kIGFzc29jaWF0ZWQgRE9NIHN0cnVjdHVyZXMuCisJICoKKwkgKiBAcGFyYW0gY3VydmVOYW1lIFVSSSBvZiBOYW1lZEN1cnZlIHRvIHNldAorCSAqIEBwYXJhbSBwdWJsaWNLZXkgQmFzZTY0IGVuY29kZWQga2V5IHZhbHVlIHRvIHNldAorCSAqIEByZXR1cm5zIFRoZSBET00gc3RydWN0dXJlIG9mIHRoZSBFQ0tleVZhbHVlIHRoYXQgaGFzIGJlZW4gY3JlYXRlZAorCSAqLworCQorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogCisJCWNyZWF0ZUJsYW5rRUNLZXlWYWx1ZShjb25zdCBYTUxDaCAqIGN1cnZlTmFtZSwKKwkJCWNvbnN0IFhNTENoICogcHVibGljS2V5KTsKKworCS8qKgorCSAqIFxicmllZiBTZXQgdGhlIE5hbWVkQ3VydmUgVVJJCisJICoKKwkgKiBTZXQgdGhlIFVSSSBvZiB0aGUgTmFtZWRDdXJ2ZSB3aXRoaW4gdGhlIGVsZW1lbnQuCisJICoKKwkgKiBAcGFyYW0gY3VydmVOYW1lIFVSSSBvZiBOYW1lZEN1cnZlIHRvIHNldAorCSAqLworCisJdm9pZCBzZXRFQ05hbWVkQ3VydmUoY29uc3QgWE1MQ2ggKiBjdXJ2ZU5hbWUpOworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUgcHVibGljIGtleQorCSAqCisJICogU2V0IHRoZSBiYXNlNjQgZW5jb2RlZCBwdWJsaWMga2V5CisJICoKKwkgKiBAcGFyYW0gcHVibGljS2V5IEJhc2U2NCBlbmNvZGVkIHB1YmxpYyBrZXkgdG8gc2V0CisJICovCisKKwl2b2lkIHNldEVDUHVibGljS2V5KGNvbnN0IFhNTENoICogcHVibGljS2V5KTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBJbmZvcm1hdGlvbiBGdW5jdGlvbnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgSW50ZXJmYWNlIGNhbGwgdG8gcmV0dXJuIHR5cGUKKwkgKgorCSAqIEByZXR1cm5zIHRoZSB0eXBlIG9mIHRoaXMga2V5SW5mbyBub2RlCisJICovCisKKwl2aXJ0dWFsIGtleUluZm9UeXBlIGdldEtleUluZm9UeXBlKHZvaWQpIGNvbnN0OworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgbmFtZSBvZiB0aGlzIGtleSAoaXJyZWxldmFudCBmb3IgYSBLZXlWYWx1ZSkKKwkgKgorCSAqIEByZXR1cm5zIE5VTEwKKwkgKi8KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRLZXlOYW1lKHZvaWQpIGNvbnN0OworCisJLy9AfQorcHJpdmF0ZToKKworCS8vIFN0cnVjdHVyZXMgdG8gaG9sZCBBTEwgdGhlIHJlcXVpcmVkIGluZm9ybWF0aW9uCisJLy8gTm90IHRoZSBtb3N0IGVmZmljaWVudCBvZiBtZXRob2RzLCBidXQgc2ltcGxlLgorCisJLy8gRFNBCisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZQkqIG1wX1BUZXh0Tm9kZTsJLy8gTm9kZXMgd2hlcmUgc3RyaW5ncyBhcmUgc3RvcmVkCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUJKiBtcF9RVGV4dE5vZGU7CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUJKiBtcF9HVGV4dE5vZGU7CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUJKiBtcF9ZVGV4dE5vZGU7CisKKwkvLyBSU0EKKwkKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZQkqIG1wX21vZHVsdXNUZXh0Tm9kZTsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZQkqIG1wX2V4cG9uZW50VGV4dE5vZGU7CisKKyAgICAvLyBFQworCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUJKiBtcF9uYW1lZEN1cnZlRWxlbWVudE5vZGU7CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUJKiBtcF9lY1B1YmxpY0tleVRleHROb2RlOworCisJLy8gR2VuZXJhbAorCisJa2V5SW5mb1R5cGUJCQkJCQkJCW1fa2V5SW5mb1R5cGU7Cit9OworCisjZW5kaWYgLyogI2RlZmluZSBEU0lHS0VZVkFMVUVfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvZHNpZy9EU0lHS2V5SW5mb1g1MDkuY3BwIGIvYy9zcmMvZHNpZy9EU0lHS2V5SW5mb1g1MDkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5YmI2ODQKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvWDUwOS5jcHAKQEAgLTAsMCArMSw1NzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDEwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIERTSUdLZXlYNTA5IDo9IEEgIlN1cGVyIiBrZXkgdGhhdCBkZWZpbmVzIGEgY2VydGlmaWNhdGUgd2l0aCBhIHN1Yi1rZXkgdGhhdCBkZWZpbmVzCisgKiAgICAgICAgICAgICAgICB0aGUgc2lnbmluZyBrZXkKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0tleUluZm9YNTA5LmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1BsYXRmb3JtVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1NpZ25hdHVyZS5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vudi5ocHA+CisKKyNpbmNsdWRlICIuLi91dGlscy9YU0VDQXV0b1B0ci5ocHAiCisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworRFNJR0tleUluZm9YNTA5OjpEU0lHS2V5SW5mb1g1MDkoY29uc3QgWFNFQ0VudiAqIGVudiwgRE9NTm9kZSAqWDUwOURhdGEpIDoKK0RTSUdLZXlJbmZvKGVudiksCittcF9YNTA5SXNzdWVyTmFtZShOVUxMKSwKK21wX1g1MDlTZXJpYWxOdW1iZXIoTlVMTCksCittcF9YNTA5U3ViamVjdE5hbWUoTlVMTCksCittcF9YNTA5U0tJKE5VTEwpLAorbXBfcmF3UmV0cmlldmFsVVJJKE5VTEwpLAorbXBfWDUwOVN1YmplY3ROYW1lVGV4dE5vZGUoMCksCittcF9YNTA5SXNzdWVyTmFtZVRleHROb2RlKDApLAorbXBfWDUwOVNlcmlhbE51bWJlclRleHROb2RlKDApLAorbXBfWDUwOVNLSVRleHROb2RlKDApIHsKKworCW1wX2tleUluZm9ET01Ob2RlID0gWDUwOURhdGE7CisJbV9YNTA5TGlzdC5jbGVhcigpOworCW1fWDUwOUNSTExpc3QuY2xlYXIoKTsKK30KKworRFNJR0tleUluZm9YNTA5OjpEU0lHS2V5SW5mb1g1MDkoY29uc3QgWFNFQ0VudiAqIGVudikgOgorRFNJR0tleUluZm8oZW52KSwKK21wX1g1MDlJc3N1ZXJOYW1lKE5VTEwpLAorbXBfWDUwOVNlcmlhbE51bWJlcihOVUxMKSwKK21wX1g1MDlTdWJqZWN0TmFtZShOVUxMKSwKK21wX1g1MDlTS0koTlVMTCksCittcF9yYXdSZXRyaWV2YWxVUkkoTlVMTCksCittcF9YNTA5U3ViamVjdE5hbWVUZXh0Tm9kZSgwKSwKK21wX1g1MDlJc3N1ZXJOYW1lVGV4dE5vZGUoMCksCittcF9YNTA5U2VyaWFsTnVtYmVyVGV4dE5vZGUoMCksCittcF9YNTA5U0tJVGV4dE5vZGUoMCkgeworCisJbXBfa2V5SW5mb0RPTU5vZGUgPSAwOworCW1fWDUwOUxpc3QuY2xlYXIoKTsKKyAgICBtX1g1MDlDUkxMaXN0LmNsZWFyKCk7Cit9CisKKworRFNJR0tleUluZm9YNTA5Ojp+RFNJR0tleUluZm9YNTA5KCkgeworCisJLy8gU3ViamVjdE5hbWUgYW5kIElzc3Vlck5hbWUgYXJlIGxvY2FsIChkZWNvZGVkKSBjb3BpZXMgb2YgdGhlCisJLy8gZW5jb2RlZCBETmFtZSBoZWxkIGluIHRoZSBET00KKworCWlmIChtcF9YNTA5SXNzdWVyTmFtZSAhPSBOVUxMKQorCQlYU0VDX1JFTEVBU0VfWE1MQ0gobXBfWDUwOUlzc3Vlck5hbWUpOworCisJaWYgKG1wX1g1MDlTdWJqZWN0TmFtZSAhPSBOVUxMKQorCQlYU0VDX1JFTEVBU0VfWE1MQ0gobXBfWDUwOVN1YmplY3ROYW1lKTsKKworCVg1MDlMaXN0VHlwZTo6aXRlcmF0b3IgaTsKKworCWZvciAoaSA9IG1fWDUwOUxpc3QuYmVnaW4oKTsgaSAhPSBtX1g1MDlMaXN0LmVuZCgpOyArK2kpIHsKKworCQlpZiAoKCppKS0+bXBfY3J5cHRvWDUwOSAhPSBOVUxMKQorCQkJZGVsZXRlICgoKmkpLT5tcF9jcnlwdG9YNTA5KTsKKwkJZGVsZXRlICgqaSk7CisKKwl9CisKKwltX1g1MDlMaXN0LmNsZWFyKCk7CisgICAgbV9YNTA5Q1JMTGlzdC5jbGVhcigpOworCisJaWYgKG1wX3Jhd1JldHJpZXZhbFVSSSAhPSBOVUxMKQorCQlYU0VDX1JFTEVBU0VfWE1MQ0gobXBfcmF3UmV0cmlldmFsVVJJKTsKKworCQorfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBMb2FkIGFuZCBHZXQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworLy8gTWV0aG9kcyB1bmlxdWUgdG8gRFNJR0tleUluZm9YNTA5CisKK3ZvaWQgRFNJR0tleUluZm9YNTA5Ojpsb2FkKHZvaWQpIHsKKworCS8vIEFzc3VtaW5nIHdlIGhhdmUgYSB2YWxpZCBET01fTm9kZSB0byBzdGFydCB3aXRoLCBsb2FkIHRoZSBzaWduaW5nIGtleSBzbyB0aGF0IGl0IGNhbgorCS8vIGJlIHVzZWQgbGF0ZXIgb24KKworCWlmIChtcF9rZXlJbmZvRE9NTm9kZSA9PSBOVUxMKSB7CisKKwkJLy8gQXR0ZW1wdCB0byBsb2FkIGFuIGVtcHR5IHNpZ25hdHVyZSBlbGVtZW50CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6TG9hZEVtcHR5WDUwOSk7CisKKwl9CisKKwlpZiAoIXN0ckVxdWFscyhnZXREU0lHTG9jYWxOYW1lKG1wX2tleUluZm9ET01Ob2RlKSwgIlg1MDlEYXRhIikpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkxvYWROb25YNTA5KTsKKworCX0KKworCS8vIE5vdyBjaGVjayBmb3IgYW4gWDUwOSBEYXRhIEVsZW1lbnQgd2UgdW5kZXJzdGFuZAorCisJRE9NTm9kZSAqdG1wRWx0ID0gbXBfa2V5SW5mb0RPTU5vZGUtPmdldEZpcnN0Q2hpbGQoKTsKKwlET01Ob2RlICpjaGlsZDsJLy8gV29ya2VyCisKKwl3aGlsZSAodG1wRWx0ICE9IDApIHsKKworCQlpZiAodG1wRWx0LT5nZXROb2RlVHlwZSgpID09IERPTU5vZGU6OkVMRU1FTlRfTk9ERSkgeworCisJCQkvLyBTZWUgaWYgaXQncyBhIGtub3duIGVsZW1lbnQgdHlwZQorCQkJaWYgKHN0ckVxdWFscyhnZXREU0lHTG9jYWxOYW1lKHRtcEVsdCksICJYNTA5Q2VydGlmaWNhdGUiKSkgeworCisJCQkgICAgLy8gTG9vcCBvdmVyIFRleHQgbm9kZXMgdW50aWwgd2Ugc3VjY2Vzc2Z1bGx5IGxvYWQgYSBjZXJ0aWZpY2F0ZS4KKwkJCSAgICAvLyBJZiB3ZSBydW4gb3V0LCB0aHJvdyBvdXQgdGhlIGxhc3QgZXhjZXB0aW9uIHJhaXNlZC4KKworCQkJCVg1MDlIb2xkZXIgKiBoOworICAgICAgICAgICAgICAgIFhTRUNDcnlwdG9YNTA5KiBjcnlwdG9YNTA5ID0gWFNFQ1BsYXRmb3JtVXRpbHM6OmdfY3J5cHRvUHJvdmlkZXItPlg1MDkoKTsKKwkJCQlET01Ob2RlICpjZXJ0RWx0ID0gZmluZEZpcnN0Q2hpbGRPZlR5cGUodG1wRWx0LCBET01Ob2RlOjpURVhUX05PREUpOworCQkJCXdoaWxlIChjZXJ0RWx0KSB7CisgICAgICAgICAgICAgICAgICAgIFhTRUNBdXRvUHRyQ2hhciBjaGFyWDUwOShjZXJ0RWx0LT5nZXROb2RlVmFsdWUoKSk7CisJCQkJICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjcnlwdG9YNTA5LT5sb2FkWDUwOUJhc2U2NEJpbihjaGFyWDUwOS5nZXQoKSwgKGludCkgc3RybGVuKGNoYXJYNTA5LmdldCgpKSk7CisKKwkgICAgICAgICAgICAgICAgICAgIC8vIEFkZCB0byB0aGUgbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgWFNFQ25ldyhoLCBYNTA5SG9sZGVyKTsKKwkgICAgICAgICAgICAgICAgICAgIG1fWDUwOUxpc3QucHVzaF9iYWNrKGgpOworCSAgICAgICAgICAgICAgICAgICAgaC0+bXBfZW5jb2RlZFg1MDkgPSBjZXJ0RWx0LT5nZXROb2RlVmFsdWUoKTsKKwkgICAgICAgICAgICAgICAgICAgIGgtPm1wX2NyeXB0b1g1MDkgPSBjcnlwdG9YNTA5OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJCQkJICAgIH0KKwkJCQkgICAgY2F0Y2ggKFhTRUNDcnlwdG9FeGNlcHRpb24mKSB7CisJICAgICAgICAgICAgICAgICAgICBjZXJ0RWx0ID0gZmluZE5leHRDaGlsZE9mVHlwZShjZXJ0RWx0LCBET01Ob2RlOjpURVhUX05PREUpOworCSAgICAgICAgICAgICAgICAgICAgaWYgKCFjZXJ0RWx0KSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGNyeXB0b1g1MDk7CisJICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3c7CisJICAgICAgICAgICAgICAgICAgICB9CisJCQkJICAgIH0KKwkJCQl9CisJCQl9CisKKwkJCWVsc2UgaWYgKHN0ckVxdWFscyhnZXREU0lHTG9jYWxOYW1lKHRtcEVsdCksICJYNTA5U3ViamVjdE5hbWUiKSkgeworCisJCQkJY2hpbGQgPSBmaW5kRmlyc3RDaGlsZE9mVHlwZSh0bXBFbHQsIERPTU5vZGU6OlRFWFRfTk9ERSk7CisKKwkJCQlpZiAoY2hpbGQgPT0gTlVMTCkgeworCisJCQkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWREU0lHQ2hpbGROb3RGb3VuZCwKKwkJCQkJCSJFeHBlY3RlZCBURVhUX05PREUgY2hpbGQgb2YgPFg1MDlTdWJqZWN0TmFtZT4iKTsKKworCQkJCX0KKworCQkJCW1wX1g1MDlTdWJqZWN0TmFtZSA9IGRlY29kZUROYW1lKGNoaWxkLT5nZXROb2RlVmFsdWUoKSk7CisKKwkJCX0KKworCQkJZWxzZSBpZiAoc3RyRXF1YWxzKGdldERTSUdMb2NhbE5hbWUodG1wRWx0KSwgIlg1MDlJc3N1ZXJTZXJpYWwiKSkgeworCisJCQkJY2hpbGQgPSB0bXBFbHQtPmdldEZpcnN0Q2hpbGQoKTsKKwkJCQl3aGlsZSAoY2hpbGQgIT0gMCAmJiBjaGlsZC0+Z2V0Tm9kZVR5cGUoKSAhPSBET01Ob2RlOjpFTEVNRU5UX05PREUgJiYKKwkJCQkJIXN0ckVxdWFscyhnZXREU0lHTG9jYWxOYW1lKGNoaWxkKSwgIlg1MDlJc3N1ZXJOYW1lIikpCisJCQkJCWNoaWxkID0gY2hpbGQtPmdldE5leHRTaWJsaW5nKCk7CisKKwkJCQlpZiAoY2hpbGQgPT0gTlVMTCkgeworCisJCQkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWREU0lHQ2hpbGROb3RGb3VuZCwKKwkJCQkJCSJFeHBlY3RlZCA8WDUwOUlzc3Vlck5hbWU+IGNoaWxkIG9mIDxYNTA5SXNzdWVyU2VyaWFsPiIpOworCisJCQkJfQorCisJCQkJY2hpbGQgPSBjaGlsZC0+Z2V0Rmlyc3RDaGlsZCgpOworCQkJCXdoaWxlIChjaGlsZCAhPSAwICYmIGNoaWxkLT5nZXROb2RlVHlwZSgpICE9IERPTU5vZGU6OlRFWFRfTk9ERSkKKwkJCQkJY2hpbGQgPSBjaGlsZC0+Z2V0TmV4dFNpYmxpbmcoKTsKKworCQkJCWlmIChjaGlsZCA9PSBOVUxMKSB7CisKKwkJCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZERTSUdDaGlsZE5vdEZvdW5kLAorCQkJCQkJIkV4cGVjdGVkIFRFWFRfTk9ERSBjaGlsZCBvZiA8WDUwOUlzc3VlclNlcmlhbD4iKTsKKworCQkJCX0KKworCQkJCW1wX1g1MDlJc3N1ZXJOYW1lID0gZGVjb2RlRE5hbWUoY2hpbGQtPmdldE5vZGVWYWx1ZSgpKTsKKworCQkJCS8vIE5vdyBmaW5kIHRoZSBzZXJpYWwgbnVtYmVyCisJCQkJY2hpbGQgPSB0bXBFbHQtPmdldEZpcnN0Q2hpbGQoKTsKKwkJCQl3aGlsZSAoY2hpbGQgIT0gMCAmJiAoY2hpbGQtPmdldE5vZGVUeXBlKCkgIT0gRE9NTm9kZTo6RUxFTUVOVF9OT0RFIHx8CisJCQkJCSFzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZShjaGlsZCksICJYNTA5U2VyaWFsTnVtYmVyIikpKQorCQkJCQljaGlsZCA9IGNoaWxkLT5nZXROZXh0U2libGluZygpOworCisJCQkJaWYgKGNoaWxkID09IE5VTEwpIHsKKworCQkJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkRFNJR0NoaWxkTm90Rm91bmQsCisJCQkJCQkiRXhwZWN0ZWQgPFg1MDlTZXJpYWxOdW1iZXI+IGNoaWxkIG9mIDxYNTA5SXNzdWVyU2VyaWFsPiIpOworCisJCQkJfQorCisJCQkJY2hpbGQgPSBjaGlsZC0+Z2V0Rmlyc3RDaGlsZCgpOworCQkJCXdoaWxlIChjaGlsZCAhPSAwICYmIGNoaWxkLT5nZXROb2RlVHlwZSgpICE9IERPTU5vZGU6OlRFWFRfTk9ERSkKKwkJCQkJY2hpbGQgPSBjaGlsZC0+Z2V0TmV4dFNpYmxpbmcoKTsKKworCQkJCWlmIChjaGlsZCA9PSBOVUxMKSB7CisKKwkJCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZERTSUdDaGlsZE5vdEZvdW5kLAorCQkJCQkJIkV4cGVjdGVkIFRFWFRfTk9ERSBjaGlsZCBvZiA8WDUwOUlzc3VlclNlcmlhbD4iKTsKKworCQkJCX0KKworCQkJCW1wX1g1MDlTZXJpYWxOdW1iZXIgPSBjaGlsZC0+Z2V0Tm9kZVZhbHVlKCk7CisKKwkJCX0KKworCQkJZWxzZSBpZiAoc3RyRXF1YWxzKGdldERTSUdMb2NhbE5hbWUodG1wRWx0KSwgIlg1MDlDUkwiKSkgeworCisgICAgICAgICAgICAgICAgRE9NTm9kZSAqY3JsRWx0ID0gZmluZEZpcnN0Q2hpbGRPZlR5cGUodG1wRWx0LCBET01Ob2RlOjpURVhUX05PREUpOworCisgICAgICAgICAgICAgICAgaWYgKGNybEVsdCAhPSAwKSB7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gQWRkIHRvIHRoZSBsaXN0CisgICAgICAgICAgICAgICAgICAgIG1fWDUwOUNSTExpc3QucHVzaF9iYWNrKGNybEVsdC0+Z2V0Tm9kZVZhbHVlKCkpOworCisgICAgICAgICAgICAgICAgfQorCisJCQl9CisJCQllbHNlIGlmIChzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZSh0bXBFbHQpLCAiWDUwOVNLSSIpKSB7CisKKwkJCQljaGlsZCA9IGZpbmRGaXJzdENoaWxkT2ZUeXBlKHRtcEVsdCwgRE9NTm9kZTo6VEVYVF9OT0RFKTsKKworCQkJCWlmIChjaGlsZCA9PSBOVUxMKSB7CisKKwkJCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZERTSUdDaGlsZE5vdEZvdW5kLAorCQkJCQkJIkV4cGVjdGVkIFRFWFRfTk9ERSBjaGlsZCBvZiA8WDUwOVNLST4iKTsKKworCQkJCX0KKworCQkJCW1wX1g1MDlTS0lUZXh0Tm9kZSA9IGNoaWxkOworCQkJCW1wX1g1MDlTS0kgPSBjaGlsZC0+Z2V0Tm9kZVZhbHVlKCk7CisKKwkJCX0KKwkJfQorCisJCS8vIEdvIHRvIG5leHQgZGF0YSBlbGVtZW50IHRvIGxvYWQgaWYgd2UgdW5kZXJzdGFuZAorCisJCXRtcEVsdCA9IHRtcEVsdC0+Z2V0TmV4dFNpYmxpbmcoKTsKKworCX0KKworfQorCitjb25zdCBYTUxDaCAqIERTSUdLZXlJbmZvWDUwOTo6Z2V0S2V5TmFtZSh2b2lkKSBjb25zdCB7CisKKwlyZXR1cm4gbXBfWDUwOVN1YmplY3ROYW1lOworCisJLy8gU2hvdWxkIHJldHVybiBETgorCit9CisKK2NvbnN0IFhNTENoICogRFNJR0tleUluZm9YNTA5OjpnZXRYNTA5U3ViamVjdE5hbWUodm9pZCkgY29uc3QgeworCisKKwlyZXR1cm4gbXBfWDUwOVN1YmplY3ROYW1lOworCit9CisKK2NvbnN0IFhNTENoICogRFNJR0tleUluZm9YNTA5OjpnZXRYNTA5SXNzdWVyTmFtZSh2b2lkKSBjb25zdCB7CisKKwlyZXR1cm4gbXBfWDUwOUlzc3Vlck5hbWU7CisKK30KKworY29uc3QgWE1MQ2ggKiBEU0lHS2V5SW5mb1g1MDk6OmdldFg1MDlDUkwodm9pZCkgY29uc3QgeworCisJcmV0dXJuIG1fWDUwOUNSTExpc3QuZW1wdHkoKSA/IE5VTEwgOiBtX1g1MDlDUkxMaXN0LmZyb250KCk7CisKK30KKworaW50IERTSUdLZXlJbmZvWDUwOTo6Z2V0WDUwOUNSTExpc3RTaXplKHZvaWQpIGNvbnN0IHsKKworICAgIHJldHVybiAoaW50KSBtX1g1MDlDUkxMaXN0LnNpemUoKTsKKworfQorCisKK2NvbnN0IFhNTENoICogRFNJR0tleUluZm9YNTA5OjpnZXRYNTA5Q1JMSXRlbShpbnQgaXRlbSkgY29uc3QgeworCisgICAgaWYgKGl0ZW0gPj0wICYmICh1bnNpZ25lZCBpbnQpIGl0ZW0gPCBtX1g1MDlDUkxMaXN0LnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG1fWDUwOUNSTExpc3RbaXRlbV07CisKKyAgICByZXR1cm4gMDsKKworfQorCitjb25zdCBYTUxDaCAqIERTSUdLZXlJbmZvWDUwOTo6Z2V0WDUwOVNLSSh2b2lkKSBjb25zdCB7CisKKwlyZXR1cm4gbXBfWDUwOVNLSTsKKworfQorCitjb25zdCBYTUxDaCAqIERTSUdLZXlJbmZvWDUwOTo6Z2V0WDUwOUlzc3VlclNlcmlhbE51bWJlcih2b2lkKSBjb25zdCB7CisKKwlyZXR1cm4gbXBfWDUwOVNlcmlhbE51bWJlcjsKKworfQorCitpbnQgRFNJR0tleUluZm9YNTA5OjpnZXRDZXJ0aWZpY2F0ZUxpc3RTaXplKHZvaWQpIGNvbnN0IHsKKworCXJldHVybiAoaW50KSBtX1g1MDlMaXN0LnNpemUoKTsKKworfQorCitjb25zdCBYTUxDaCAqIERTSUdLZXlJbmZvWDUwOTo6Z2V0Q2VydGlmaWNhdGVJdGVtKGludCBpdGVtKSBjb25zdCB7CisKKwlpZiAoaXRlbSA+PTAgJiYgKHVuc2lnbmVkIGludCkgaXRlbSA8IG1fWDUwOUxpc3Quc2l6ZSgpKQorCQlyZXR1cm4gbV9YNTA5TGlzdFtpdGVtXS0+bXBfZW5jb2RlZFg1MDk7CisKKwlyZXR1cm4gMDsKKworfQorCitYU0VDQ3J5cHRvWDUwOSAqIERTSUdLZXlJbmZvWDUwOTo6Z2V0Q2VydGlmaWNhdGVDcnlwdG9JdGVtKGludCBpdGVtKSB7CisKKyAgICBpZiAoaXRlbSA+PTAgJiYgKHVuc2lnbmVkIGludCkgaXRlbSA8IG1fWDUwOUxpc3Quc2l6ZSgpKQorICAgICAgICByZXR1cm4gbV9YNTA5TGlzdFtpdGVtXS0+bXBfY3J5cHRvWDUwOTsKKworICAgIHJldHVybiAwOworfQorCitjb25zdCBYU0VDQ3J5cHRvWDUwOSAqIERTSUdLZXlJbmZvWDUwOTo6Z2V0Q2VydGlmaWNhdGVDcnlwdG9JdGVtKGludCBpdGVtKSBjb25zdCB7CisKKwlpZiAoaXRlbSA+PTAgJiYgKHVuc2lnbmVkIGludCkgaXRlbSA8IG1fWDUwOUxpc3Quc2l6ZSgpKQorCQlyZXR1cm4gbV9YNTA5TGlzdFtpdGVtXS0+bXBfY3J5cHRvWDUwOTsKKworCXJldHVybiAwOworfQorCitjb25zdCBYTUxDaCAqIERTSUdLZXlJbmZvWDUwOTo6Z2V0UmF3UmV0cmlldmFsVVJJKHZvaWQpIGNvbnN0IHsKKworCXJldHVybiBtcF9yYXdSZXRyaWV2YWxVUkk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDcmVhdGUgYW5kIFNldAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRE9NRWxlbWVudCAqIERTSUdLZXlJbmZvWDUwOTo6Y3JlYXRlQmxhbmtYNTA5RGF0YSh2b2lkKSB7CisKKwkvLyBDcmVhdGUgdGhlIERPTSBTdHJ1Y3R1cmUKKworCXNhZmVCdWZmZXIgc3RyOworCURPTURvY3VtZW50ICpkb2MgPSBtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCk7CisJY29uc3QgWE1MQ2ggKiBwcmVmaXggPSBtcF9lbnYtPmdldERTSUdOU1ByZWZpeCgpOworCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCAiWDUwOURhdGEiKTsKKworCURPTUVsZW1lbnQgKnJldCA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSURTSUcsIHN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKwltcF9rZXlJbmZvRE9NTm9kZSA9IHJldDsKKwltcF9lbnYtPmRvUHJldHR5UHJpbnQocmV0KTsKKworCXJldHVybiByZXQ7CisKK30KKwordm9pZCBEU0lHS2V5SW5mb1g1MDk6OnNldFg1MDlDUkwoY29uc3QgWE1MQ2ggKiBjcmwpIHsKKyAgICBhcHBlbmRYNTA5Q1JMKGNybCk7Cit9CisKK3ZvaWQgRFNJR0tleUluZm9YNTA5OjphcHBlbmRYNTA5Q1JMKGNvbnN0IFhNTENoICogY3JsKSB7CisKKyAgICBzYWZlQnVmZmVyIHN0cjsKKyAgICBET01Eb2N1bWVudCAqZG9jID0gbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpOworICAgIGNvbnN0IFhNTENoICogcHJlZml4ID0gbXBfZW52LT5nZXREU0lHTlNQcmVmaXgoKTsKKworICAgIG1ha2VRTmFtZShzdHIsIHByZWZpeCwgIlg1MDlDUkwiKTsKKworICAgIERPTUVsZW1lbnQgKiBzID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRFNJRywgc3RyLnJhd1hNTENoQnVmZmVyKCkpOworICAgIERPTU5vZGUgKiBiNjRUeHQgPSBkb2MtPmNyZWF0ZVRleHROb2RlKGNybCk7CisgICAgcy0+YXBwZW5kQ2hpbGQoYjY0VHh0KTsKKworICAgIG1wX2tleUluZm9ET01Ob2RlLT5hcHBlbmRDaGlsZChzKTsKKyAgICBtcF9lbnYtPmRvUHJldHR5UHJpbnQobXBfa2V5SW5mb0RPTU5vZGUpOworCisgICAgLy8gQWRkIHRvIHRoZSBsaXN0CisKKyAgICBtX1g1MDlDUkxMaXN0LnB1c2hfYmFjayhiNjRUeHQtPmdldE5vZGVWYWx1ZSgpKTsKK30KKwordm9pZCBEU0lHS2V5SW5mb1g1MDk6OnNldFg1MDlTS0koY29uc3QgWE1MQ2ggKiBza2kpIHsKKworCWlmIChtcF9YNTA5U0tJVGV4dE5vZGUgPT0gMCkgeworCisJCXNhZmVCdWZmZXIgc3RyOworCQlET01Eb2N1bWVudCAqZG9jID0gbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpOworCQljb25zdCBYTUxDaCAqIHByZWZpeCA9IG1wX2Vudi0+Z2V0RFNJR05TUHJlZml4KCk7CisKKwkJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCAiWDUwOVNLSSIpOworCisJCURPTUVsZW1lbnQgKiBzID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRFNJRywgc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCQltcF9YNTA5U0tJVGV4dE5vZGUgPSBkb2MtPmNyZWF0ZVRleHROb2RlKHNraSk7CisJCXMtPmFwcGVuZENoaWxkKG1wX1g1MDlTS0lUZXh0Tm9kZSk7CisKKwkJLy8gQWRkIHRvIHRoZSBvdmVyLWFyY2hpbmcgbm9kZQorCQltcF9rZXlJbmZvRE9NTm9kZS0+YXBwZW5kQ2hpbGQocyk7CisJCW1wX2Vudi0+ZG9QcmV0dHlQcmludChtcF9rZXlJbmZvRE9NTm9kZSk7CisKKwl9CisKKwllbHNlIHsKKworCQltcF9YNTA5U0tJVGV4dE5vZGUtPnNldE5vZGVWYWx1ZShza2kpOworCisJfQorCisJbXBfWDUwOVNLSSA9IG1wX1g1MDlTS0lUZXh0Tm9kZS0+Z2V0Tm9kZVZhbHVlKCk7CisKK30KKwordm9pZCBEU0lHS2V5SW5mb1g1MDk6OnNldFg1MDlTdWJqZWN0TmFtZShjb25zdCBYTUxDaCAqIG5hbWUpIHsKKworCWlmIChtcF9YNTA5U3ViamVjdE5hbWUgIT0gTlVMTCkKKwkJWFNFQ19SRUxFQVNFX1hNTENIKG1wX1g1MDlTdWJqZWN0TmFtZSk7CisKKwltcF9YNTA5U3ViamVjdE5hbWUgPSBYTUxTdHJpbmc6OnJlcGxpY2F0ZShuYW1lKTsKKwkKKwlYTUxDaCAqIGVuY29kZWROYW1lID0gZW5jb2RlRE5hbWUobmFtZSk7CisKKwlpZiAobXBfWDUwOVN1YmplY3ROYW1lVGV4dE5vZGUgPT0gMCkgeworCisJCS8vIERvZXMgbm90IHlldCBleGlzdCBpbiB0aGUgRE9NCisKKwkJc2FmZUJ1ZmZlciBzdHI7CisJCURPTURvY3VtZW50ICpkb2MgPSBtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCk7CisJCWNvbnN0IFhNTENoICogcHJlZml4ID0gbXBfZW52LT5nZXREU0lHTlNQcmVmaXgoKTsKKworCQltYWtlUU5hbWUoc3RyLCBwcmVmaXgsICJYNTA5U3ViamVjdE5hbWUiKTsKKworCQlET01FbGVtZW50ICogcyA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSURTSUcsIHN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKwkJbXBfWDUwOVN1YmplY3ROYW1lVGV4dE5vZGUgPSBkb2MtPmNyZWF0ZVRleHROb2RlKGVuY29kZWROYW1lKTsKKwkJcy0+YXBwZW5kQ2hpbGQobXBfWDUwOVN1YmplY3ROYW1lVGV4dE5vZGUpOworCisJCS8vIEFkZCB0byB0aGUgb3Zlci1hcmNoaW5nIG5vZGUKKwkJbXBfa2V5SW5mb0RPTU5vZGUtPmFwcGVuZENoaWxkKHMpOworCQltcF9lbnYtPmRvUHJldHR5UHJpbnQobXBfa2V5SW5mb0RPTU5vZGUpOworCisJfQorCisJZWxzZSB7CisKKwkJbXBfWDUwOVN1YmplY3ROYW1lVGV4dE5vZGUtPnNldE5vZGVWYWx1ZShlbmNvZGVkTmFtZSk7CisKKwl9CisJWFNFQ19SRUxFQVNFX1hNTENIKGVuY29kZWROYW1lKTsKK30KKwordm9pZCBEU0lHS2V5SW5mb1g1MDk6OnNldFg1MDlJc3N1ZXJTZXJpYWwoY29uc3QgWE1MQ2ggKiBuYW1lLCBjb25zdCBYTUxDaCAqIHNlcmlhbCkgeworCisJaWYgKG1wX1g1MDlJc3N1ZXJOYW1lICE9IE5VTEwpCisJCVhTRUNfUkVMRUFTRV9YTUxDSChtcF9YNTA5SXNzdWVyTmFtZSk7CisKKwltcF9YNTA5SXNzdWVyTmFtZSA9IFhNTFN0cmluZzo6cmVwbGljYXRlKG5hbWUpOworCQorCVhNTENoICogZW5jb2RlZE5hbWUgPSBlbmNvZGVETmFtZShuYW1lKTsKKworCWlmIChtcF9YNTA5SXNzdWVyTmFtZVRleHROb2RlID09IDApIHsKKworCQkvLyBEb2VzIG5vdCB5ZXQgZXhpc3QgaW4gdGhlIERPTQorCisJCXNhZmVCdWZmZXIgc3RyOworCQlET01Eb2N1bWVudCAqZG9jID0gbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpOworCQljb25zdCBYTUxDaCAqIHByZWZpeCA9IG1wX2Vudi0+Z2V0RFNJR05TUHJlZml4KCk7CisKKwkJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCAiWDUwOUlzc3VlclNlcmlhbCIpOworCisJCURPTUVsZW1lbnQgKiBzID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRFNJRywgc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCQltcF9lbnYtPmRvUHJldHR5UHJpbnQocyk7CisKKwkJLy8gQ3JlYXRlIHRoZSB0ZXh0IG5vZGVzIHdpdGggdGhlIGNvbnRlbnRzCisKKwkJbXBfWDUwOUlzc3Vlck5hbWVUZXh0Tm9kZSA9IGRvYy0+Y3JlYXRlVGV4dE5vZGUoZW5jb2RlZE5hbWUpOworCQltcF9YNTA5U2VyaWFsTnVtYmVyVGV4dE5vZGUgPSBkb2MtPmNyZWF0ZVRleHROb2RlKHNlcmlhbCk7CisJCisJCS8vIENyZWF0ZSB0aGUgc3ViIGVsZW1lbnRzCisKKwkJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCAiWDUwOUlzc3Vlck5hbWUiKTsKKwkJRE9NRWxlbWVudCAqIHQgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklEU0lHLCBzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisJCXQtPmFwcGVuZENoaWxkKG1wX1g1MDlJc3N1ZXJOYW1lVGV4dE5vZGUpOworCQkKKwkJcy0+YXBwZW5kQ2hpbGQodCk7CisJCW1wX2Vudi0+ZG9QcmV0dHlQcmludChzKTsKKwkJCisJCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgIlg1MDlTZXJpYWxOdW1iZXIiKTsKKwkJdCA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSURTSUcsIHN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKwkJdC0+YXBwZW5kQ2hpbGQobXBfWDUwOVNlcmlhbE51bWJlclRleHROb2RlKTsKKwkJCisJCXMtPmFwcGVuZENoaWxkKHQpOworCQltcF9lbnYtPmRvUHJldHR5UHJpbnQocyk7CisKKwkJLy8gQWRkIHRvIHRoZSBvdmVyLWFyY2hpbmcgWDUwOURhdGEKKworCQltcF9rZXlJbmZvRE9NTm9kZS0+YXBwZW5kQ2hpbGQocyk7CisJCW1wX2Vudi0+ZG9QcmV0dHlQcmludChtcF9rZXlJbmZvRE9NTm9kZSk7CisKKwl9CisKKwllbHNlIHsKKworCQltcF9YNTA5SXNzdWVyTmFtZVRleHROb2RlLT5zZXROb2RlVmFsdWUoZW5jb2RlZE5hbWUpOworCQltcF9YNTA5U2VyaWFsTnVtYmVyVGV4dE5vZGUtPnNldE5vZGVWYWx1ZShzZXJpYWwpOworCisJfQorCisJWFNFQ19SRUxFQVNFX1hNTENIKGVuY29kZWROYW1lKTsKK30KKwordm9pZCBEU0lHS2V5SW5mb1g1MDk6OnNldFJhd1JldHJpZXZhbFVSSShjb25zdCBYTUxDaCAqIHVyaSkgeworCisJaWYgKG1wX3Jhd1JldHJpZXZhbFVSSSAhPSBOVUxMKQorCQlYU0VDX1JFTEVBU0VfWE1MQ0gobXBfcmF3UmV0cmlldmFsVVJJKTsKKworCW1wX3Jhd1JldHJpZXZhbFVSSSA9IFhNTFN0cmluZzo6cmVwbGljYXRlKHVyaSk7CisKK30KKwordm9pZCBEU0lHS2V5SW5mb1g1MDk6OmFwcGVuZFg1MDlDZXJ0aWZpY2F0ZShjb25zdCBYTUxDaCAqIGJhc2U2NENlcnRpZmljYXRlKSB7CisKKwlzYWZlQnVmZmVyIHN0cjsKKwlET01Eb2N1bWVudCAqZG9jID0gbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpOworCWNvbnN0IFhNTENoICogcHJlZml4ID0gbXBfZW52LT5nZXREU0lHTlNQcmVmaXgoKTsKKworCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgIlg1MDlDZXJ0aWZpY2F0ZSIpOworCisJRE9NRWxlbWVudCAqIHMgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklEU0lHLCBzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisJRE9NTm9kZSAqIGI2NFR4dCA9IGRvYy0+Y3JlYXRlVGV4dE5vZGUoYmFzZTY0Q2VydGlmaWNhdGUpOworCXMtPmFwcGVuZENoaWxkKGI2NFR4dCk7CisKKwltcF9rZXlJbmZvRE9NTm9kZS0+YXBwZW5kQ2hpbGQocyk7CisJbXBfZW52LT5kb1ByZXR0eVByaW50KG1wX2tleUluZm9ET01Ob2RlKTsKKworCS8vIEFkZCB0byB0aGUgbGlzdAorCisJWDUwOUhvbGRlciAqIGg7CisJWFNFQ25ldyhoLCBYNTA5SG9sZGVyKTsKKwltX1g1MDlMaXN0LnB1c2hfYmFjayhoKTsKKwloLT5tcF9lbmNvZGVkWDUwOSA9IGI2NFR4dC0+Z2V0Tm9kZVZhbHVlKCk7CisJaC0+bXBfY3J5cHRvWDUwOSA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5YNTA5KCk7CisJWFNFQ0F1dG9QdHJDaGFyIGNoYXJYNTA5KGgtPm1wX2VuY29kZWRYNTA5KTsKKwloLT5tcF9jcnlwdG9YNTA5LT5sb2FkWDUwOUJhc2U2NEJpbihjaGFyWDUwOS5nZXQoKSwgKHVuc2lnbmVkIGludCkgc3RybGVuKGNoYXJYNTA5LmdldCgpKSk7CisJCit9CmRpZmYgLS1naXQgYS9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvWDUwOS5ocHAgYi9jL3NyYy9kc2lnL0RTSUdLZXlJbmZvWDUwOS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmUxM2U4NAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2RzaWcvRFNJR0tleUluZm9YNTA5LmhwcApAQCAtMCwwICsxLDQxNCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogRFNJR0tleUluZm9YNTA5IDo9IEEgIlN1cGVyIiBrZXkgdGhhdCBkZWZpbmVzIGEgY2VydGlmaWNhdGUgd2l0aCBhIHN1Yi1rZXkgdGhhdCBkZWZpbmVzCisgKiAgICAgICAgICAgICAgICB0aGUgc2lnbmluZyBrZXkKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgRFNJR0tFWUlORk9YNTA5X0lOQ0xVREUKKyNkZWZpbmUgRFNJR0tFWUlORk9YNTA5X0lOQ0xVREUKKworI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1NhZmVCdWZmZXIuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHS2V5SW5mby5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b1g1MDkuaHBwPgorCisjaW5jbHVkZSA8dmVjdG9yPgorCitYU0VDX1VTSU5HX1hFUkNFUyhET01FbGVtZW50KTsKKworLyoqCisgKiBAaW5ncm91cCBwdWJzaWcKKyAqLworCisvKioKKyAqIEBicmllZiBUaGUgY2xhc3MgZm9yIFw8WDUwOURhdGFcPiBub2RlcyBpbiBhIEtleUluZm8gbGlzdC4KKyAqCisgKiBDbGFzcyBmb3IgaG9sZGluZyBpbmZvcm1hdGlvbiBvbiBhIFg1MDlEYXRhIG5vZGUgYXMgd2VsbCBhcyBzZXR0aW5nCisgKiBzdWNoIGEgbm9kZSBpbiBhIHNpZ25hdHVyZS4KKyAqCisgKi8KKworCitjbGFzcyBEU0lHX0VYUE9SVCBEU0lHS2V5SW5mb1g1MDkgOiBwdWJsaWMgRFNJR0tleUluZm8geworCitwdWJsaWM6CisKKworCXN0cnVjdCBYNTA5SG9sZGVyIHsKKworCQljb25zdCBYTUxDaAkJCSogbXBfZW5jb2RlZFg1MDk7CQkvLyBCYXNlNjQgZW5jb2RpbmcKKwkJWFNFQ0NyeXB0b1g1MDkJCSogbXBfY3J5cHRvWDUwOTsJCS8vIFRoZSBjZXJ0aWZpY2F0ZQorCisJfTsKKworI2lmIGRlZmluZWQoWFNFQ19OT19OQU1FU1BBQ0VTKQorCXR5cGVkZWYgdmVjdG9yPFg1MDlIb2xkZXIgKj4JCQlYNTA5TGlzdFR5cGU7CisgICAgdHlwZWRlZiB2ZWN0b3I8Y29uc3QgWE1MQ2ggKj4gICAgICAgICAgIFg1MDlDUkxMaXN0VHlwZTsKKyNlbHNlCisJdHlwZWRlZiBzdGQ6OnZlY3RvcjxYNTA5SG9sZGVyICo+CQlYNTA5TGlzdFR5cGU7CisgICAgdHlwZWRlZiBzdGQ6OnZlY3Rvcjxjb25zdCBYTUxDaCAqPiAgICAgIFg1MDlDUkxMaXN0VHlwZTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChYU0VDX1NJWkVfVF9JTl9OQU1FU1BBQ0VfU1REKQorCXR5cGVkZWYgc3RkOjpzaXplX3QJCXNpemVfdHlwZTsKKyNlbHNlCisJdHlwZWRlZiBzaXplX3QJCQlzaXplX3R5cGU7CisjZW5kaWYKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIENvbnN0cnVjdG9yIHVzZWQgd2hlbiBYTUwgc3RydWN0dXJlcyBleGlzdC4KKwkgKgorCSAqIENvbnN0cnVjdG9yIGNhbGxlZCBieSBpbnRlcmZhY2UgY2xhc3Mgd2hlbiBsb2FkaW5nIGFuCisJICogWDUwOURhdGEgZWxlbWVudCBmcm9tIERPTSBub2Rlcy4KKwkgKgorCSAqIEBwYXJhbSBlbnYgT3BlcmF0aW5nIGVudmlyb25tZW50CisJICogQHBhcmFtIFg1MDlEYXRhIERPTU5vZGUgYXQgc3RhcnQgb2YgZGF0YQorCSAqLworCisJRFNJR0tleUluZm9YNTA5KGNvbnN0IFhTRUNFbnYgKiBlbnYsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICpYNTA5RGF0YSk7CisKKwkvKioKKwkgKiBcYnJpZWYgQ29uc3RydWN0b3IgY2FsbGVkIHdoZW4gYnVpbGRpbmcgWE1MIHN0cnVjdHVyZXMKKwkgKgorCSAqIENvbnN0cnVjdG9yIGNhbGxlZCBieSBpbnRlcmZhY2UgY2xhc3Mgd2hlbiBhbiBYTUwKKwkgKiBzdHJ1Y3R1cmUgaXMgYmVpbmcgYnVpbHQgYnkgYSB1c2VyIGNhbGxpbmcgdGhlIEFQSQorCSAqIAorCSAqIEBwYXJhbSBlbnYgT3BlcmF0aW5nIGVudmlyb25tZW50CisJICovCisKKwlEU0lHS2V5SW5mb1g1MDkoY29uc3QgWFNFQ0VudiAqIGVudik7CisJCisJLyoqCisJICogXGJyaWVmIERlc3RydWN0b3IKKwkgKi8KKworCXZpcnR1YWwgfkRTSUdLZXlJbmZvWDUwOSgpOworCisJLy9AfQorCisJLyoqIEBuYW1lIExvYWQgZnVuY3Rpb24gYW5kIGdldCBtZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIEZ1bmN0aW9uIGNhbGxlZCB0byBsb2FkIGFuIFhNTCBzdHJ1Y3R1cmUKKwkgKgorCSAqIEZ1bmN0aW9uIGNhbGxlZCBieSBpbnRlcmNhY2UgY2xhc3MgdG8gbG9hZCBhbiBYNTA5RGF0YSBzdHJ1Y3R1cmUKKwkgKiBmcm9tIERPTU5vZGVzLgorCSAqLworCisJdmlydHVhbCB2b2lkIGxvYWQoKTsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIG5hbWUgb2YgdGhlIGNlcnRpZmljYXRlCisJICoKKwkgKiBHZXQgdGhlIG5hbWUgc3RvcmVkIGluIHRoZSBYNTA5U3ViamVjdE5hbWUgZWxlbWVudCAoaWYgaXQKKwkgKiBleGlzdHMpLgorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIGEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIG5hbWUKKwkgKiAoTlVMTCBpZiBub3Qgc2V0LikKKwkgKi8KKworCWNvbnN0IFhNTENoICogZ2V0WDUwOVN1YmplY3ROYW1lKHZvaWQpIGNvbnN0OworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgbmFtZSBvZiB0aGUgY2VydGlmaWNhdGUgKGludGVyZmFjZSBmdW5jdGlvbikKKwkgKgorCSAqIEdldCB0aGUgbmFtZSBzdG9yZWQgaW4gdGhlIFg1MDlTdWJqZWN0TmFtZSBlbGVtZW50IChpZiBpdAorCSAqIGV4aXN0cykuCisJICoKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZSBuYW1lIChvciBOVUxMIGlmIG5vdCBzZXQpLgorCSAqIFRoZSBkZWNvZGVkIHN0cmluZyBpcyByZXR1cm5lZC4KKwkgKiBAc2VlIHNldFg1MDlTdWJqZWN0TmFtZSh2b2lkKQorCSAqLworCisJY29uc3QgWE1MQ2ggKiBnZXRLZXlOYW1lKHZvaWQpIGNvbnN0OworCQorCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIElzc3VlclNlcmlhbE5hbWUKKwkgKgorCSAqIEdldCB0aGUgbmFtZSBvZiB0aGUgSXNzdWVyIChzdG9yZWQgaW4gdGhlIFg1MDlJc3N1ZXJTZXJpYWwgZWxlbWVudCkuCisJICoKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZSBpc3N1ZXIgbmFtZS4KKwkgKiAoMCBpZiBub3Qgc2V0LikKKwkgKi8KKworCWNvbnN0IFhNTENoICogZ2V0WDUwOUlzc3Vlck5hbWUodm9pZCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBJc3NlclNlcmlhbE51bWJlcgorCSAqCisJICogR2V0IHRoZSBzZXJpYWwgbnVtYmVyIG9mIHRoZSBjZXJ0aWZpY2F0ZSBvZiB0aGUgaXNzdWVyIG9mIHRoZQorCSAqIHNpZ25pbmcgY2VydGlmaWNhdGUuCisJICogCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBzdHJpbmcgY29udGFpbmluZyB0aGUgSXNzdWVyU2VyaWFsTnVtYmVyLgorCSAqICgwIGlmIG5vdCBzZXQuKSAgVGhpcyBpcyB0aGUgZGVjb2RlZCBzdHJpbmcuCisJICogQHNlZSBzZXRYNTA5SXNzdWVyU2VyaWFsCisJICovCisKKwljb25zdCBYTUxDaCAqIGdldFg1MDlJc3N1ZXJTZXJpYWxOdW1iZXIodm9pZCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBmaXJzdCBhc3NvY2lhdGVkIENSTAorCSAqCisJICogUmV0dXJuIHRoZSBzdHJpbmcgY29udGFpbmluZyB0aGUgYmFzZTY0IGVuY29kZWQgQ1JMIHRoYXQgd2FzIGhlbGQgaW4KKwkgKiB0aGUgZmlyc3QgWDUwOUNSTCBub2RlCisJICoKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIHN0cmluZyBjb250YWluaW5nIHRoZSBDUkwKKwkgKiAoMCBpZiBub3Qgc2V0KQorCSAqLworCisJY29uc3QgWE1MQ2ggKiBnZXRYNTA5Q1JMKHZvaWQpIGNvbnN0OworCisgICAgLyoqCisgICAgICogXGJyaWVmIEZpbmQgdGhlIG51bWJlciBvZiBDUkxzIGhlbGQKKyAgICAgKgorICAgICAqIEZpbmQgdGhlIG51bWJlciBvZiBDUkxzIGhlbGQgaW4gdGhlIFg1MDlEYXRhIHN0cnVjdHVyZXMuCisgICAgICoKKyAgICAgKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIENSTHMKKyAgICAgKi8KKworICAgIGludCBnZXRYNTA5Q1JMTGlzdFNpemUodm9pZCkgY29uc3Q7CisKKyAgICAvKioKKyAgICAgKiBcYnJpZWYgR2V0IHRoZSBERVIgZW5jb2RlZCBDUkwgcG9pbnRlZCB0byBpbiB0aGUgbGlzdC4KKyAgICAgKgorICAgICAqIFVzZSB0aGUgaW5kZXggdG8gZmluZCB0aGUgcmVxdWlyZWQgQ1JMIGFuZCByZXR1cm4gYSBwb2ludGVyCisgICAgICogdG8gdGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZSBlbmNvZGVkIENSTC4KKyAgICAgKgorICAgICAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIENSTCBvciAwIGlmCisgICAgICogbm8gQ1JMIGV4aXN0cyBhdCB0aGF0IHBvaW50IGluIHRoZSBsaXN0LgorICAgICAqLworCisgICAgY29uc3QgWE1MQ2ggKiBnZXRYNTA5Q1JMSXRlbShpbnQgaXRlbSkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBTS0kgdmFsdWUgKGlmIHNldCkKKwkgKgorCSAqIFRoZSBTS0kgKFN1YmplY3QgS2V5IElkZW50aWZpZXIpIGNhbiBiZSB1c2VkIHRvIHJlZmVyZW5jZSBhCisJICogcmVxdWlyZWQgY2VydGlmaWNhdGUuICBJZiB0aGlzIHdhcyBzZXQgaW4gdGhlIEtleUluZm8gZWxlbWVudCwKKwkgKiB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSB2YWx1ZQorCSAqCisJICogQHJldHVybnMgdGhlIGJhc2U2NCBlbmNvZGVkIChwbGFuIC0gbm90IERFUikgZW5jb2RlZCBTS0kgdmFsdWUKKwkgKi8KKworCWNvbnN0IFhNTENoICogZ2V0WDUwOVNLSSh2b2lkKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gdGhlIHJhdyBSZXRyaWV2YWwgbWV0aG9kIHRvIGZpbmQgdGhpcyBjZXJ0aWZpY2F0ZQorCSAqCisJICogSW4gc29tZSBjYXNlcywgdGhlIEtleUluZm8gUmV0cmlldmFsTWV0aG9kIHJlZmVyZW5jZXMgYSByYXcgY2VydGlmaWNhdGUKKwkgKiBJbiBzdWNoIGNhc2VzLCB0aGUgbGlicmFyeSBzaW1wbHkgY3JlYXRlcyBhIEtleUluZm9YNTA5IG9iamVjdCBhbmQgc2V0cworCSAqIHRoaXMgc3RyaW5nIHRvIGFsbG93IG90aGVycyB0byBmaW5kIHRoZSBjZXJ0aWZpY2F0ZQorCSAqLworCisJY29uc3QgWE1MQ2ggKiBnZXRSYXdSZXRyaWV2YWxVUkkodm9pZCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgRmluZCB0aGUgbnVtYmVyIG9mIGNlcnRpZmljYXRlcyBoZWxkCisJICoKKwkgKiBGaW5kIHRoZSBudW1iZXIgb2YgY2VydGlmaWNhdGVzIGhlbGQgaW4gdGhlIFg1MDlEYXRhIHN0cnVjdHVyZXMuCisJICoKKwkgKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGNlcnRpZmljYXRlcworCSAqLworCisJaW50IGdldENlcnRpZmljYXRlTGlzdFNpemUodm9pZCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBERVIgZW5jb2RlZCBjZXJ0aWZpY2F0ZSBwb2ludGVkIHRvIGluIHRoZSBsaXN0LgorCSAqCisJICogVXNlIHRoZSBpbmRleCB0byBmaW5kIHRoZSByZXF1aXJlZCBjZXJ0aWZpY2F0ZSBhbmQgcmV0dXJuIGEgcG9pbnRlcgorCSAqIHRvIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgZW5jb2RlZCBjZXJ0aWZpY2F0ZS4KKwkgKgorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGNlcnRpZmljYXRlIG9yIDAgaWYKKwkgKiBubyBjZXJ0aWZpY2F0ZSBleGlzdHMgYXQgdGhhdCBwb2ludCBpbiB0aGUgbGlzdC4KKwkgKi8KKworCWNvbnN0IFhNTENoICogZ2V0Q2VydGlmaWNhdGVJdGVtKGludCBpdGVtKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIENyeXB0byBJbnRlcmZhY2UgWDUwOSBzdHJ1Y3R1cmUgdmVyc2lvbiBvZiB0aGUgY2VydGlmaWNhdGUKKwkgKgorCSAqIFVzZSB0aGUgaW5kZXggdG8gZmluZCB0aGUgcmVxdWlyZWQgY2VydGlmaWNhdGUgYW5kIHJldHVybiBhIHBvaW50ZXIKKwkgKiB0byB0aGUgWFNFQ0NyeXB0b1g1MDkgY2VydAorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBYU0VDQ3J5cHRvWDUwOSBjZXJ0IHN0cnVjdHVyZQorCSAqLworCisJWFNFQ0NyeXB0b1g1MDkgKiBnZXRDZXJ0aWZpY2F0ZUNyeXB0b0l0ZW0oaW50IGl0ZW0pOworCisgICAgLyoqCisJICogXGJyaWVmIEdldCB0aGUgQ3J5cHRvIEludGVyZmFjZSBYNTA5IHN0cnVjdHVyZSB2ZXJzaW9uIG9mIHRoZSBjZXJ0aWZpY2F0ZQorCSAqCisJICogVXNlIHRoZSBpbmRleCB0byBmaW5kIHRoZSByZXF1aXJlZCBjZXJ0aWZpY2F0ZSBhbmQgcmV0dXJuIGEgcG9pbnRlcgorCSAqIHRvIHRoZSBYU0VDQ3J5cHRvWDUwOSBjZXJ0CisJICoKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIFhTRUNDcnlwdG9YNTA5IGNlcnQgc3RydWN0dXJlCisJICovCisKKwljb25zdCBYU0VDQ3J5cHRvWDUwOSAqIGdldENlcnRpZmljYXRlQ3J5cHRvSXRlbShpbnQgaXRlbSkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgSW50ZXJmYWNlIGZ1bmN0aW9uIHRvIGZpbmQgdGhlIHR5cGUgb2YgdGhpcyBLZXlJbmZvCisJICovCisJCisJdmlydHVhbCBrZXlJbmZvVHlwZSBnZXRLZXlJbmZvVHlwZSh2b2lkKSBjb25zdCB7cmV0dXJuIERTSUdLZXlJbmZvOjpLRVlJTkZPX1g1MDk7fQorCisJLy9AfQorCisJLyoqIEBuYW1lIENyZWF0ZSBhbmQgU2V0IGZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBDcmVhdGUgYSBuZXcgWDUwOSBkYXRhIGVsZW1lbnQuCisJICoKKwkgKiBDcmVhdGUgYSBibGFuayAoZW1wdHkpIFg1MDlEYXRhIGVsZW1lbnQgdGhhdCBjYW4gdGhlbiBiZSB1c2VkCisJICogYnkgdGhlIGFwcGxpY2F0aW9uIHRvIGFkZCBYNTA5RGF0YSBlbGVtZW50cy4KKwkgKgorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgbmV3IFg1MDlEYXRhIGVsZW1lbnQuCisJICovCisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIAorCQljcmVhdGVCbGFua1g1MDlEYXRhKHZvaWQpOworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUgWDUwOVN1YmplY3ROYW1lIGVsZW1lbnQgaW4gdGhlIEtleUluZm8gZWxlbWVudC4KKwkgKgorCSAqIElmIGEgWDUwOVN1YmplY3ROYW1lIGVsZW1lbnQgZXhpc3RzLCByZXBsYWNlIHRoZSB0ZXh0IHdpdGggdGhlCisJICogcHJvdmlkZWQgdGV4dC4gIE90aGVyd2lzZSBjcmVhdGUgdGhlIGVsZW1lbnQgYW5kIHNldCB0aGUgdGV4dC4KKwkgKgorCSAqIEBub3RlIFhNTERTSUcgcmVxdWlyZXMgRGlzdGluZ3Vpc2hlZCBOYW1lcyBiZSBlbmNvZGVkIGluIGEgZGVmaW5lZAorCSAqIG1hbm5lciAoZXNjYXBpbmcgJzwnIGNoYXJhY3RlcnMgZXRjLikuICBUaGlzIG1ldGhvZCB3aWxsIHBlcmZvcm0KKwkgKiB0aGlzIGVuY29kaW5nIHByaW9yIHRvIGNyZWF0aW5nIHRoZSBET00gbm9kZXMuCisJICoKKwkgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSB0byBzZXQuCisJICovCisKKwl2b2lkIHNldFg1MDlTdWJqZWN0TmFtZShjb25zdCBYTUxDaCAqIG5hbWUpOworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUgSXNzdWVyU2VyaWFsIGVsZW1lbnQKKwkgKgorCSAqIElmIGFuIFg1MDlJc3N1ZXJTZXJpYWwgZXhpc3RzLCByZXBsYWNlIHRoZSB2YWx1ZXMgd2l0aCB0aG9zZSBwcm92aWRlZCwKKwkgKiBvdGhlcndpc2UgY3JlYXRlIGEgbmV3IGVsZW1lbnQgYW5kIHNldCB0aGUgdmFsdWVzIGFwcHJvcHJpYXRlbHkuCisJICoKKwkgKiBAbm90ZSBYTUxEU0lHIHJlcXVpcmVzIERpc3Rpbmd1aXNoZWQgTmFtZXMgYmUgZW5jb2RlZCBpbiBhIGRlZmluZWQKKwkgKiBtYW5uZXIgKGVzY2FwaW5nICc8JyBjaGFyYWN0ZXJzIGV0Yy4pLiAgVGhpcyBtZXRob2Qgd2lsbCBwZXJmb3JtCisJICogdGhpcyBlbmNvZGluZyBwcmlvciB0byBjcmVhdGluZyB0aGUgRE9NIG5vZGVzLgorCSAqCisJICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGlzc3Vlci4KKwkgKiBAcGFyYW0gc2VyaWFsIFRoZSBzZXJpYWwgbnVtYmVyIG9mIHRoZSBpc3N1ZXIncyBjZXJ0aWZpY2F0ZQorCSAqLworCisJdm9pZCBzZXRYNTA5SXNzdWVyU2VyaWFsKGNvbnN0IFhNTENoICogbmFtZSwgY29uc3QgWE1MQ2ggKiBzZXJpYWwpOworCisJLyoqCisgICAgICogXGJyaWVmIEFkZCBhIENSTC4KKwkgKgorICAgICAqIEFwcGVuZCBhbiBYNTA5Q1JMIGVsZW1lbnQgdG8gdGhlIGxpc3Qgb2YgQ1JMcworICAgICAqIHN0b3JlZCBhdCB0aGUgZW5kIG9mIHRoaXMgS2V5SW5mbyBlbGVtZW50LgorCSAqCisgICAgICogQHBhcmFtIGNybCBBIHBvaW50ZXIgdG8gdGhlIGJhc2U2NCBlbmNvZGVkIENSTCwKKyAgICAgKiBleGFjdGx5IGFzIGl0IHdpbGwgYXBwZWFyIGluIHRoZSBYTUwgc3RydWN0dXJlLgorCSAqLworCisJdm9pZCBzZXRYNTA5Q1JMKGNvbnN0IFhNTENoICogY3JsKTsKKworICAgIC8qKgorICAgICAqIFxicmllZiBBZGQgYSBDUkwuCisgICAgICoKKyAgICAgKiBBcHBlbmQgYW4gWDUwOUNSTCBlbGVtZW50IHRvIHRoZSBsaXN0IG9mIENSTHMKKyAgICAgKiBzdG9yZWQgYXQgdGhlIGVuZCBvZiB0aGlzIEtleUluZm8gZWxlbWVudC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjcmwgQSBwb2ludGVyIHRvIHRoZSBiYXNlNjQgZW5jb2RlZCBDUkwsCisgICAgICogZXhhY3RseSBhcyBpdCB3aWxsIGFwcGVhciBpbiB0aGUgWE1MIHN0cnVjdHVyZS4KKyAgICAgKi8KKworICAgIHZvaWQgYXBwZW5kWDUwOUNSTChjb25zdCBYTUxDaCAqIGNybCk7CisJCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUgU0tJIGVsZW1lbnQKKwkgKgorCSAqIFRoZSBTS0kgbm9kZSBwcm92aWRlcyBhIHJlZmVyZW5jZSB0byB0aGUgU3ViamVjdCBLZXkgSWRlbnRpZmllciBvZgorCSAqIGEgY2VydGlmaWNhdGUuCisJICoKKwkgKiBUaGlzIGZ1bmN0aW9uIHRha2VzIGEgYmFzZTY0IGVuY29kZWQgc2tpIGFuZCBzZXRzIGl0IGludG8gdGhlIAorCSAqIGFwcHJvcHJpYXRlIG5vZGUKKwkgKgorCSAqIEBwYXJhbSBza2kgVGhlIGJhc2U2NCBwbGFpbiAobm9uLURFUikgZW5jb2RlZCBTS0kgdmFsdWUKKwkgKi8KKworCXZvaWQgc2V0WDUwOVNLSShjb25zdCBYTUxDaCAqIHNraSk7CisKKwkvKioKKwkgKiBcYnJpZWYgc2V0IHRoZSByZXRyaWV2YWwgVVJJCisJICoKKwkgKiBHZW5lcmFsbHkgdG8gYmUgdXNlZCBieSBpbnRlcm5hbCBsaWJyYXJ5IHByb2Nlc3NlcyBvbmx5LgorCSAqIFRoaXMgc2V0cyB0aGUgcmV0cmlldmFsIFVSSSAtIGJ1dCBkb2VzIF9ub3RfIG1hbmlwdWxhdGUgdGhlIERPTQorCSAqIGluIGFueSB3YXkuCisJICoKKwkgKiBAcGFyYW0gdXJpIFRoZSBVUkkgc3RyaW5nIHRvIHVzZQorCSAqLworCisJdm9pZCBzZXRSYXdSZXRyaWV2YWxVUkkoY29uc3QgWE1MQ2ggKiB1cmkpOworCisJLyoqCisJICogXGJyaWVmIEFkZCBhIGNlcnRpZmljYXRlLgorCSAqCisJICogQXBwZW5kIGFuIFg1MDlDZXJ0aWZpY2F0ZSBlbGVtZW50IHRvIHRoZSBsaXN0IG9mIGNlcnRpZmljYXRlcworCSAqIHN0b3JlZCBhdCB0aGUgZW5kIG9mIHRoaXMgS2V5SW5mbyBlbGVtZW50LgorCSAqCisJICogQHBhcmFtIGJhc2U2NENlcnRpZmljYXRlIEEgcG9pbnRlciB0byB0aGUgYmFzZTY0IGVuY29kZWQgY2VydGlmaWNhdGUsCisJICogZXhhY3RseSBhcyBpdCB3aWxsIGFwcGVhciBpbiB0aGUgWE1MIHN0cnVjdHVyZS4KKwkgKi8KKworCXZvaWQgYXBwZW5kWDUwOUNlcnRpZmljYXRlKGNvbnN0IFhNTENoICogYmFzZTY0Q2VydGlmaWNhdGUpOworCisJLy9AfQorCisKK3ByaXZhdGU6CisKKwlEU0lHS2V5SW5mb1g1MDkoKTsKKworCVg1MDlMaXN0VHlwZQkJbV9YNTA5TGlzdDsJCQkJLy8gVGhlIFg1MDkgc3RydWN0dXJlcworCVg1MDlDUkxMaXN0VHlwZSAgICAgbV9YNTA5Q1JMTGlzdDsgICAgICAgICAgLy8gVGhlIFg1MDlDUkwgbGlzdAorCVhNTENoIAkJCQkqIG1wX1g1MDlJc3N1ZXJOYW1lOwkvLyBQYXJhbWV0ZXJzIGZyb20gS2V5SW5mbyAobm90IGNlcnQpCisJY29uc3QgWE1MQ2ggCQkqIG1wX1g1MDlTZXJpYWxOdW1iZXI7CisJWE1MQ2ggCQkJCSogbXBfWDUwOVN1YmplY3ROYW1lOworCWNvbnN0IFhNTENoCQkJKiBtcF9YNTA5U0tJOworCVhNTENoCQkJCSogbXBfcmF3UmV0cmlldmFsVVJJOworCisJLy8gVGV4dCBub2RlcyBob2xkaW5nIGluZm9ybWF0aW9uCisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZQkqIG1wX1g1MDlTdWJqZWN0TmFtZVRleHROb2RlOworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlCSogbXBfWDUwOUlzc3Vlck5hbWVUZXh0Tm9kZTsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZQkqIG1wX1g1MDlTZXJpYWxOdW1iZXJUZXh0Tm9kZTsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZQkqIG1wX1g1MDlTS0lUZXh0Tm9kZTsKKworfTsKKworCisKKyNlbmRpZiAvKiAjZGVmaW5lIERTSUdLRVlYNTA5X0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL2RzaWcvRFNJR09iamVjdC5jcHAgYi9jL3NyYy9kc2lnL0RTSUdPYmplY3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiYWYwNTIKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9kc2lnL0RTSUdPYmplY3QuY3BwCkBAIC0wLDAgKzEsMjg2IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBEU0lHT2JqZWN0IDo9IERlZmluZXMgdGhlIGNvbnRhaW5lciBjbGFzcyB1c2VkIGJ5IGRzaWcgdG8gaG9sZCBvYmplY3RzCisgKgkJCQkgaW5zaWRlIGEgc2lnbnR1cmUKKyAqCisgKiAkSWQkCisgKgorICovCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRW52LmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHQ29uc3RhbnRzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR09iamVjdC5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDRE9NVXRpbHMuaHBwPgorCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MVW5pRGVmcy5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlTdHJpbmcgQ29uc3RhbnRzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0aWMgWE1MQ2ggc19PYmplY3RbXSA9IHsKKworCWNoTGF0aW5fTywKKwljaExhdGluX2IsCisJY2hMYXRpbl9qLAorCWNoTGF0aW5fZSwKKwljaExhdGluX2MsCisJY2hMYXRpbl90LAorCWNoTnVsbAorfTsKKworc3RhdGljIFhNTENoIHNfSWRbXSA9IHsKKworCWNoTGF0aW5fSSwKKwljaExhdGluX2QsCisJY2hOdWxsCit9OworCitzdGF0aWMgWE1MQ2ggc19NaW1lVHlwZVtdID0geworCisJY2hMYXRpbl9NLAorCWNoTGF0aW5faSwKKwljaExhdGluX20sCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fVCwKKwljaExhdGluX3ksCisJY2hMYXRpbl9wLAorCWNoTGF0aW5fZSwKKwljaE51bGwKK307CisKK3N0YXRpYyBYTUxDaCBzX0VuY29kaW5nW10gPSB7CisKKwljaExhdGluX0UsCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fYywKKwljaExhdGluX28sCisJY2hMYXRpbl9kLAorCWNoTGF0aW5faSwKKwljaExhdGluX24sCisJY2hMYXRpbl9nLAorCWNoTnVsbAorfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdHJ1Y3RvcnMvRGVzdHJ1Y3RvcgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRFNJR09iamVjdDo6RFNJR09iamVjdChjb25zdCBYU0VDRW52ICogZW52LCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqZG9tKSB7CisKKwltcF9lbnYgPSBlbnY7CisJbXBfb2JqZWN0Tm9kZSA9IGRvbTsKKwltcF9pZEF0dHIgPSBOVUxMOworCW1wX21pbWVUeXBlQXR0ciA9IE5VTEw7CisJbXBfZW5jb2RpbmdBdHRyID0gTlVMTDsKKworfQorCitEU0lHT2JqZWN0OjpEU0lHT2JqZWN0KGNvbnN0IFhTRUNFbnYgKiBlbnYpIHsKKworCW1wX2VudiA9IGVudjsKKwltcF9vYmplY3ROb2RlID0gTlVMTDsKKwltcF9pZEF0dHIgPSBOVUxMOworCW1wX21pbWVUeXBlQXR0ciA9IE5VTEw7CisJbXBfZW5jb2RpbmdBdHRyID0gTlVMTDsKKworfQorCisKKworRFNJR09iamVjdDo6fkRTSUdPYmplY3QoKSB7fQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIExpYnJhcnkgb25seQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCit2b2lkIERTSUdPYmplY3Q6OmxvYWQodm9pZCkgeworCisJaWYgKG1wX29iamVjdE5vZGUgPT0gTlVMTCB8fCAKKwkJbXBfb2JqZWN0Tm9kZS0+Z2V0Tm9kZVR5cGUoKSAhPSBET01Ob2RlOjpFTEVNRU5UX05PREUgfHwgCisJCSFzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZShtcF9vYmplY3ROb2RlKSwgc19PYmplY3QpKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpPYmplY3RFcnJvciwKKwkJCSJFeHBlY3RlZCA8T2JqZWN0PiBOb2RlIGluIERTSUdPYmplY3Q6OmxvYWQiKTsKKworCX0KKworCisJbXBfaWRBdHRyID0gKChET01FbGVtZW50ICopIG1wX29iamVjdE5vZGUpLT5nZXRBdHRyaWJ1dGVOb2RlTlMoTlVMTCwgc19JZCk7CisjaWYgZGVmaW5lZCAoWFNFQ19YRVJDRVNfSEFTX1NFVElEQVRUUklCVVRFKQorCSgoRE9NRWxlbWVudCAqKSBtcF9vYmplY3ROb2RlKS0+c2V0SWRBdHRyaWJ1dGVOUyhOVUxMLCBzX0lkKTsKKyNlbHNlCisjICBpZiBkZWZpbmVkIChYU0VDX1hFUkNFU19IQVNfQk9PTFNFVElEQVRUUklCVVRFKQorCQkoKERPTUVsZW1lbnQgKikgbXBfb2JqZWN0Tm9kZSktPnNldElkQXR0cmlidXRlTlMoTlVMTCwgc19JZCwgdHJ1ZSk7CisjICBlbmRpZgorI2VuZGlmCisKKwltcF9taW1lVHlwZUF0dHIgPSAoKERPTUVsZW1lbnQgKikgbXBfb2JqZWN0Tm9kZSktPmdldEF0dHJpYnV0ZU5vZGVOUyhOVUxMLCBzX01pbWVUeXBlKTsKKwltcF9lbmNvZGluZ0F0dHIgPSAoKERPTUVsZW1lbnQgKikgbXBfb2JqZWN0Tm9kZSktPmdldEF0dHJpYnV0ZU5vZGVOUyhOVUxMLCBzX0VuY29kaW5nKTsKKworfQorCisKK0RPTUVsZW1lbnQgKiBEU0lHT2JqZWN0OjpjcmVhdGVCbGFua09iamVjdCh2b2lkKSB7CisKKwlzYWZlQnVmZmVyIHN0cjsKKwljb25zdCBYTUxDaCAqIHByZWZpeDsKKwlET01Eb2N1bWVudCAqZG9jID0gbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpOworCisJcHJlZml4ID0gbXBfZW52LT5nZXREU0lHTlNQcmVmaXgoKTsKKwkKKwkvLyBDcmVhdGUgdGhlIHRyYW5zZm9ybSBub2RlCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCBzX09iamVjdCk7CisJbXBfb2JqZWN0Tm9kZSA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSURTSUcsIHN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKworCW1wX2lkQXR0ciA9IE5VTEw7CisJbXBfbWltZVR5cGVBdHRyID0gTlVMTDsKKwltcF9lbmNvZGluZ0F0dHIgPSBOVUxMOworCisJcmV0dXJuIChET01FbGVtZW50ICopIG1wX29iamVjdE5vZGU7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBHZXQgZnVuY3Rpb25zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK2NvbnN0IFhNTENoICogRFNJR09iamVjdDo6Z2V0SWQodm9pZCkgeworCisJaWYgKG1wX2lkQXR0ciAhPSBOVUxMKQorCQlyZXR1cm4gbXBfaWRBdHRyLT5nZXROb2RlVmFsdWUoKTsKKworCXJldHVybiBOVUxMOworCit9CisKK2NvbnN0IFhNTENoICogRFNJR09iamVjdDo6Z2V0TWltZVR5cGUodm9pZCkgeworCisJaWYgKG1wX21pbWVUeXBlQXR0ciAhPSBOVUxMKQorCQlyZXR1cm4gbXBfbWltZVR5cGVBdHRyLT5nZXROb2RlVmFsdWUoKTsKKworCXJldHVybiBOVUxMOworCit9CisKKworY29uc3QgWE1MQ2ggKiBEU0lHT2JqZWN0OjpnZXRFbmNvZGluZyh2b2lkKSB7CisKKwlpZiAobXBfZW5jb2RpbmdBdHRyICE9IE5VTEwpCisJCXJldHVybiBtcF9lbmNvZGluZ0F0dHItPmdldE5vZGVWYWx1ZSgpOworCisJcmV0dXJuIE5VTEw7CisKK30KKworY29uc3QgRE9NRWxlbWVudCAqIERTSUdPYmplY3Q6OmdldEVsZW1lbnQodm9pZCkgeworCisJcmV0dXJuIChET01FbGVtZW50ICopIG1wX29iamVjdE5vZGU7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBTZXQgRnVuY3Rpb25zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK3ZvaWQgRFNJR09iamVjdDo6c2V0SWQoY29uc3QgWE1MQ2ggKiBpZCkgeworCisJaWYgKG1wX2lkQXR0ciAhPSBOVUxMKSB7CisKKwkJbXBfaWRBdHRyLT5zZXROb2RlVmFsdWUoaWQpOworCisJfQorCisJZWxzZSB7CisKKwkJKChET01FbGVtZW50ICopIG1wX29iamVjdE5vZGUpLT5zZXRBdHRyaWJ1dGVOUyhOVUxMLCBzX0lkLCBpZCk7CisJCS8vIE1hcmsgYXMgYW4gSUQKKyNpZiBkZWZpbmVkIChYU0VDX1hFUkNFU19IQVNfU0VUSURBVFRSSUJVVEUpCisJCSgoRE9NRWxlbWVudCAqKSBtcF9vYmplY3ROb2RlKS0+c2V0SWRBdHRyaWJ1dGVOUyhOVUxMLCBzX0lkKTsKKyNlbHNlCisjICBpZiBkZWZpbmVkIChYU0VDX1hFUkNFU19IQVNfQk9PTFNFVElEQVRUUklCVVRFKQorCQkoKERPTUVsZW1lbnQgKikgbXBfb2JqZWN0Tm9kZSktPnNldElkQXR0cmlidXRlTlMoTlVMTCwgc19JZCwgdHJ1ZSk7CisjICBlbmRpZgorI2VuZGlmCisJCW1wX2lkQXR0ciA9ICgoRE9NRWxlbWVudCAqKSBtcF9vYmplY3ROb2RlKS0+Z2V0QXR0cmlidXRlTm9kZU5TKE5VTEwsIHNfSWQpOworCisJfQorCit9CisKKwordm9pZCBEU0lHT2JqZWN0OjpzZXRNaW1lVHlwZShjb25zdCBYTUxDaCAqIHR5cGUpIHsKKworCWlmIChtcF9taW1lVHlwZUF0dHIgIT0gTlVMTCkgeworCisJCW1wX21pbWVUeXBlQXR0ci0+c2V0Tm9kZVZhbHVlKHR5cGUpOworCisJfQorCisJZWxzZSB7CisKKwkJKChET01FbGVtZW50ICopIG1wX29iamVjdE5vZGUpLT5zZXRBdHRyaWJ1dGVOUyhOVUxMLCBzX01pbWVUeXBlLCB0eXBlKTsKKwkJbXBfbWltZVR5cGVBdHRyID0gKChET01FbGVtZW50ICopIG1wX29iamVjdE5vZGUpLT5nZXRBdHRyaWJ1dGVOb2RlTlMoTlVMTCwgc19NaW1lVHlwZSk7CisKKwl9CisKK30KKwordm9pZCBEU0lHT2JqZWN0OjpzZXRFbmNvZGluZyhjb25zdCBYTUxDaCAqIGVuY29kaW5nKSB7CisKKwlpZiAobXBfZW5jb2RpbmdBdHRyICE9IE5VTEwpIHsKKworCQltcF9lbmNvZGluZ0F0dHItPnNldE5vZGVWYWx1ZShlbmNvZGluZyk7CisKKwl9CisKKwllbHNlIHsKKworCQkoKERPTUVsZW1lbnQgKikgbXBfb2JqZWN0Tm9kZSktPnNldEF0dHJpYnV0ZU5TKE5VTEwsIHNfRW5jb2RpbmcsIGVuY29kaW5nKTsKKwkJbXBfZW5jb2RpbmdBdHRyID0gKChET01FbGVtZW50ICopIG1wX29iamVjdE5vZGUpLT5nZXRBdHRyaWJ1dGVOb2RlTlMoTlVMTCwgc19FbmNvZGluZyk7CisKKwl9CisKK30KKworCit2b2lkIERTSUdPYmplY3Q6OmFwcGVuZENoaWxkKERPTU5vZGUgKiBjaGlsZCkgeworCisJaWYgKG1wX29iamVjdE5vZGUgPT0gTlVMTCkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6T2JqZWN0RXJyb3IsCisJCQkiRFNJR09iamVjdDo6YXBwZW5kQ2hpbGQgLSBPYmplY3Qgbm9kZSBoYXMgbm90IGJlZW4gY3JlYXRlZCIpOworCisJfQorCisJbXBfb2JqZWN0Tm9kZS0+YXBwZW5kQ2hpbGQoY2hpbGQpOworCit9CisKZGlmZiAtLWdpdCBhL2Mvc3JjL2RzaWcvRFNJR09iamVjdC5ocHAgYi9jL3NyYy9kc2lnL0RTSUdPYmplY3QuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmZGM5M2QKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9kc2lnL0RTSUdPYmplY3QuaHBwCkBAIC0wLDAgKzEsMjA1IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBEU0lHT2JqZWN0IDo9IERlZmluZXMgdGhlIGNvbnRhaW5lciBjbGFzcyB1c2VkIGJ5IGRzaWcgdG8gaG9sZCBvYmplY3RzCisgKgkJCQkgaW5zaWRlIGEgc2lnbnR1cmUKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgRFNJR09CSkVDVF9JTkNMVURFCisjZGVmaW5lIERTSUdPQkpFQ1RfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisKK1hTRUNfREVDTEFSRV9YRVJDRVNfQ0xBU1MoRE9NTm9kZSk7CisKK2NsYXNzIFhTRUNFbnY7CisKKy8qKgorICogQGluZ3JvdXAgcHVic2lnCisgKi8KKworLyoqCisgKiBAYnJpZWYgQmFzZSBjbGFzcyBmb3IgXDxPYmplY3RcPiBub2RlcyBpbiBhIFw8U2lnbmF0dXJlXD4gZWxlbWVudC4KKyAqCisgKiBUaGUgRFNJRyBzcGVjIGFsbG93cyBmb3IgZW52ZWxvcGluZyBzaWduYXR1cmVzLCBpbiB3aGljaCB0aGUgc2lnbmF0dXJlIGhvbGRzCisgKiB0aGUgaW5mb3JtYXRpb24gaXQgaXMgc2lnbmluZy4gIEZvciB0aGVzZSB0eXBlcyBvZiBzaWduYXR1cmVzLCB0aGUgZGF0YSBiZWluZworICogc2lnbmVkIGNhbiBiZSBoZWxkIGluIGFuIFw8T2JqZWN0XD4gY29udGFpbmVyLgorICoKKyAqIFRoaXMgY2xhc3MgYWxsb3dzIGNhbGxlcnMgdG8gYW5kIG1hbmlwdWxhdGUgT2JqZWN0IGNvbnRhaW5lcnMuCisgKgorICovCisKKworY2xhc3MgRFNJR19FWFBPUlQgRFNJR09iamVjdCB7CisKK3B1YmxpYzoKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIENvbnN0cnVjdCBmcm9tIGFuIG93bmluZyBzaWduYXR1cmUKKwkgKgorCSAqIENhbGxlZCBieSB0aGUgbGlicmFyeSB3aGVuIGFuIE9iamVjdCBuZWVkcyB0byBiZSBjcmVhdGVkIGZyb20gYW4gT2JqZWN0CisJICogaW4gYSBET00gdHJlZS4KKwkgKgorCSAqIEBwYXJhbSBlbnYgVGhlIGVudmlyb25tZW50IHRoYXQgdGhlIE9iamVjdCBpcyBvcGVyYXRpbmcgd2l0aGluCisJICogQHBhcmFtIGRvbSBUaGUgRE9NIG5vZGUgdGhhdCB3aWxsIGJlIGxvYWRlZAorCSAqLworCisJRFNJR09iamVjdChjb25zdCBYU0VDRW52ICogZW52LCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqZG9tKTsKKworCS8qKgorCSAqIFxicmllZiBDb25zdHJ1Y3QgYSBuZXcgb2JqZWN0CisJICoKKwkgKiBDYWxsZWQgYnkgdGhlIGxpYnJhcnkgdG8gY3JlYXRlIGFuIE9iamVjdCBmcm9tIHNjcmF0Y2gKKwkgKgorCSAqIEBwYXJhbSBlbnYgVGhlIGVudmlyb25tZW50IHRoZSBPYmplY3QgaXMgb3BlcmF0aW5nIHdpdGhpbgorCSAqLworCisJRFNJR09iamVjdChjb25zdCBYU0VDRW52ICogZW52KTsKKworCisJLyoqCisJICogXGJyaWVmIERlc3RydWN0b3IKKwkgKi8KKworCX5EU0lHT2JqZWN0KCk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgTGlicmFyeSBmdW5jdGlvbnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgTG9hZCB0aGUgb2JqZWN0IGZyb20gRE9NCisJICoKKwkgKiBDYWxsZWQgYnkgdGhlIGxpYnJhcnkgdG8gbG9hZCBhIGNvbnN0cnVjdGVkIG9iamVjdAorCSAqLworCisJdm9pZCBsb2FkKHZvaWQpOworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIG5ldyBPYmplY3QKKwkgKgorCSAqIENyZWF0ZSBhIG5ldyBPYmplY3QgZnJvbSBzY3JhdGNoICh3aWxsIGdlbmVyYXRlIHRoZSBET00pCisJICovCisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIAorCQljcmVhdGVCbGFua09iamVjdCh2b2lkKTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBHZXQgZnVuY3Rpb25zICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgSWQgZm9yIHRoaXMgb2JqZWN0CisJICoKKwkgKiBAcmV0dXJucyB0aGUgVVJJIGF0dHJpYnV0ZSBzdHJpbmcgZm9yIHRoaXMgb2JqZWN0CisJICovCisKKwljb25zdCBYTUxDaCAqIGdldElkKHZvaWQpOworCisJLyoqCisJICogXGJyaWVmIFJldHVybnMgdGhlIE1pbWVUeXBlIHN0cmluZyBvZiB0aGlzIG9iamVjdAorCSAqCisJICogQHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgTWltZSBUeXBlIHN0cmluZworCSAqLworCisJY29uc3QgWE1MQ2ggKiBnZXRNaW1lVHlwZSh2b2lkKTsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm5zIHRoZSBFbmNvZGluZyBzdHJpbmcgb2YgdGhpcyBvYmplY3QKKwkgKgorCSAqIEByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIEVuY29kaW5nIHN0cmluZworCSAqLworCisJY29uc3QgWE1MQ2ggKiBnZXRFbmNvZGluZyh2b2lkKTsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm5zIHRoZSBFbGVtZW50IG5vZGUgZm9yIHRoaXMgb2JqZWN0CisJICoKKwkgKiBAcmV0dXJucyB0aGUgRWxlbWVudCBub2RlIGF0IHRoZSBoZWFkIG9mIHRoaXMgb2JqZWN0CisJICovCisKKwljb25zdCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGdldEVsZW1lbnQodm9pZCk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgU2V0dGVyIGZ1bmN0aW9ucyAqLworCS8vQHsKKwkKKwkvKioKKwkgKiBcYnJpZWYgU2V0IHRoZSBJZCBhdHRyaWJ1dGUgZm9yIHRoaXMgT2JqZWN0CisJICoKKwkgKiBAcGFyYW0gaWQgU3RyaW5nIHRvIHVzZSBmb3IgdGhlIElkIGF0dHJpYnV0ZQorCSAqLworCisJdm9pZCBzZXRJZChjb25zdCBYTUxDaCAqIGlkKTsKKworCS8qKgorCSAqIFxicmllZiBTZXQgdGhlIElkIGF0dHJpYnV0ZSBmb3IgdGhpcyBPYmplY3QKKwkgKgorCSAqIEBwYXJhbSB0eXBlIFN0cmluZyB0byB1c2UgZm9yIHRoZSBNaW1lVHlwZSBhdHRyaWJ1dGUKKwkgKi8KKworCXZvaWQgc2V0TWltZVR5cGUoY29uc3QgWE1MQ2ggKiB0eXBlKTsKKworCS8qKgorCSAqIFxicmllZiBTZXQgdGhlIEVuY29kaW5nIGF0dHJpYnV0ZSBmb3IgdGhpcyBPYmplY3QKKwkgKgorCSAqIEBwYXJhbSBlbmNvZGluZyBTdHJpbmcgdG8gdXNlIGZvciB0aGUgRW5jb2RpbmcgYXR0cmlidXRlCisJICovCisKKwl2b2lkIHNldEVuY29kaW5nKGNvbnN0IFhNTENoICogZW5jb2RpbmcpOworCisJLyoqCisJICogXGJyaWVmIEFkZCBhIGNoaWxkIG5vZGUgdG8gdGhlIE9iamVjdAorCSAqCisJICogVGhpcyBpcyBhICJlYXNlIG9mIHVzZSIgZnVuY3Rpb24gdG8gYWxsb3cgdXNlcnMgdG8gYWRkIGEgRE9NIHN0cnVjdHVyZQorCSAqIHRoYXQgaGFzIGJlZW4gYnVpbHQgcHJldmlvdXNseSBpbnRvIHRoZSBPYmplY3QgZWxlbWVudAorCSAqLworCisJdm9pZCBhcHBlbmRDaGlsZChYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqIGNoaWxkKTsKKworCS8vQH0KKworCitwcml2YXRlOgorCisJY29uc3QgWFNFQ0VudgkJKiBtcF9lbnY7CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUKKwkJCQkJCSogbXBfb2JqZWN0Tm9kZTsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZQorCQkJCQkJKiBtcF9pZEF0dHI7CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUKKwkJCQkJCSogbXBfbWltZVR5cGVBdHRyOworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlCisJCQkJCQkqIG1wX2VuY29kaW5nQXR0cjsKKworfTsKKworI2VuZGlmIC8qIERTSUdPQkpFQ1RfSU5DTFVERSAqLworCmRpZmYgLS1naXQgYS9jL3NyYy9kc2lnL0RTSUdSZWZlcmVuY2UuY3BwIGIvYy9zcmMvZHNpZy9EU0lHUmVmZXJlbmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODE5MzRjCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZHNpZy9EU0lHUmVmZXJlbmNlLmNwcApAQCAtMCwwICsxLDE0MTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDEwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIERTSUdfUmVmZXJlbmNlIDo9IENsYXNzIGZvciBoYW5kbGluZyBhIERTSUcgcmVmZXJlbmNlIGVsZW1lbnQKKyAqCisgKiAkSWQkCisgKgorICovCisKKy8vIFhTRUMgaW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHUmVmZXJlbmNlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNQ2hhaW4uaHBwPgorI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1VUkwuaHBwPgorI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1Eb2NPYmplY3QuaHBwPgorI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1PdXRwdXRGaWxlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNU0hBMS5ocHA+CisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTU1ENS5ocHA+CisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTUJhc2U2NC5ocHA+CisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTVNCLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNWFBhdGguaHBwPgorI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1DMTRuLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNWFNMLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNRW52ZWxvcGUuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHQ29uc3RhbnRzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1NpZ25hdHVyZS5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdUcmFuc2Zvcm1MaXN0LmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1RyYW5zZm9ybUJhc2U2NC5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdUcmFuc2Zvcm1FbnZlbG9wZS5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdUcmFuc2Zvcm1YUGF0aC5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdUcmFuc2Zvcm1YUGF0aEZpbHRlci5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdUcmFuc2Zvcm1YU0wuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHVHJhbnNmb3JtQzE0bi5ocHA+CisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNBbGdvcml0aG1IYW5kbGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDQWxnb3JpdGhtTWFwcGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNQbGF0Zm9ybVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDQmluVFhGTUlucHV0U3RyZWFtLmhwcD4KKworLy8gWGVyY2VzCisKKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MTmV0QWNjZXNzb3IuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxVbmlEZWZzLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvSmFuaXRvci5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisjaW5jbHVkZSA8aW9zdHJlYW0+CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU29tZSB1c2VmdWwgc3RyaW5ncworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitzdGF0aWMgY29uc3QgWE1MQ2ggIHNfdW5pY29kZVN0clVSSVtdID0KK3sKKyAgICAgICAgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoTGF0aW5fVSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoTGF0aW5fUiwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoTGF0aW5fSSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoTnVsbAorfTsKKworc3RhdGljIGNvbnN0IFhNTENoICBzX3VuaWNvZGVTdHJ4cG9pbnRlcltdID0KK3sKKyAgICAgICAgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoTGF0aW5feCwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoTGF0aW5fcCwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoTGF0aW5fbywKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoTGF0aW5faSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoTGF0aW5fbiwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoTGF0aW5fdCwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoTGF0aW5fZSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoTGF0aW5fciwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoTnVsbAorfTsKKworc3RhdGljIGNvbnN0IFhNTENoIHNfdW5pY29kZVN0clJvb3ROb2RlW10gPQoreworCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgY2hPcGVuUGFyZW4sCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBjaEZvcndhcmRTbGFzaCwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoQ2xvc2VQYXJlbiwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoTnVsbAorfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK0RTSUdSZWZlcmVuY2U6OkRTSUdSZWZlcmVuY2UoY29uc3QgWFNFQ0VudiAqIGVudiwgRE9NTm9kZSAqZG9tKSB7CisKKwltcF9yZWZlcmVuY2VOb2RlID0gZG9tOworCW1wX2VudiA9IGVudjsKKworCS8vIFNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24gaWYgdGhlIG5vZGUgaXMgbm90IGEgUkVGRVJFTkNFIGVsZW1lbnQKKworCVhTRUNuZXcobXBfZm9ybWF0dGVyLCBYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlcigiVVRGLTgiLFhNTEZvcm1hdHRlcjo6Tm9Fc2NhcGVzLAorCQkJCQkJCQkJCQkJWE1MRm9ybWF0dGVyOjpVblJlcF9DaGFyUmVmKSk7CisKKwltcF9wcmVIYXNoID0gTlVMTDsKKwltcF9tYW5pZmVzdExpc3QgPSBOVUxMOworCW1lX2hhc2hNZXRob2QgPSBIQVNIX05PTkU7CisJbXBfdHJhbnNmb3Jtc05vZGUgPSBOVUxMOworCW1wX3RyYW5zZm9ybUxpc3QgPSBOVUxMOworCW1wX1VSSSA9IE5VTEw7CisJbV9pc01hbmlmZXN0ID0gZmFsc2U7CisJbXBfYWxnb3JpdGhtVVJJID0gTlVMTDsKKwltX2xvYWRlZCA9IGZhbHNlOworCit9CisKK0RTSUdSZWZlcmVuY2U6OkRTSUdSZWZlcmVuY2UoY29uc3QgWFNFQ0VudiAqIGVudikgeworCisJbXBfZW52ID0gZW52OworCW1wX3JlZmVyZW5jZU5vZGUgPSBOVUxMOworCW1wX3RyYW5zZm9ybXNOb2RlID0gTlVMTDsKKwltcF90cmFuc2Zvcm1MaXN0ID0gTlVMTDsKKworCVhTRUNuZXcobXBfZm9ybWF0dGVyLCBYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlcigiVVRGLTgiLFhNTEZvcm1hdHRlcjo6Tm9Fc2NhcGVzLAorCQkJCQkJCQkJCQlYTUxGb3JtYXR0ZXI6OlVuUmVwX0NoYXJSZWYpKTsKKworCW1wX3ByZUhhc2ggPSBOVUxMOwkJLy8gQnkgZGVmYXVsdCBubyAic3BlY2lhbCIgdHJhbnNmb3JtCisJbXBfbWFuaWZlc3RMaXN0ID0gTlVMTDsKKwltZV9oYXNoTWV0aG9kID0gSEFTSF9OT05FOworCW1wX1VSSSA9IE5VTEw7CisJbV9pc01hbmlmZXN0ID0gZmFsc2U7CisJbXBfYWxnb3JpdGhtVVJJID0gTlVMTDsKKwltX2xvYWRlZCA9IGZhbHNlOworCit9OworCitEU0lHUmVmZXJlbmNlOjp+RFNJR1JlZmVyZW5jZSgpIHsKKworCS8vIERlc3Ryb3kgYW55IGFzc29jaWF0ZWQgdHJhbnNmb3JtcworCisJaWYgKG1wX3RyYW5zZm9ybUxpc3QgIT0gTlVMTCkgeworCisJCWRlbGV0ZSBtcF90cmFuc2Zvcm1MaXN0OworCQltcF90cmFuc2Zvcm1MaXN0ID0gTlVMTDsKKworCX0KKworCWlmIChtcF9mb3JtYXR0ZXIgIT0gTlVMTCkKKwkJZGVsZXRlIG1wX2Zvcm1hdHRlcjsKKworCWlmIChtcF9tYW5pZmVzdExpc3QgIT0gTlVMTCkKKwkJZGVsZXRlIG1wX21hbmlmZXN0TGlzdDsKKworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDcmVhdGlvbiBvZiBUcmFuc2Zvcm1zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIERTSUdSZWZlcmVuY2U6OmNyZWF0ZVRyYW5zZm9ybUxpc3Qodm9pZCkgeworCisJLy8gQ3JlYXRlcyB0aGUgdHJhbnNmb3JtcyBsaXN0CisJc2FmZUJ1ZmZlciBzdHI7CisJY29uc3QgWE1MQ2ggKiBwcmVmaXg7CisJRE9NRG9jdW1lbnQgKmRvYyA9IG1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKTsKKworCXByZWZpeCA9IG1wX2Vudi0+Z2V0RFNJR05TUHJlZml4KCk7CisKKwlpZiAobXBfdHJhbnNmb3Jtc05vZGUgPT0gTlVMTCkgeworCisJCS8vIE5lZWQgdG8gY3JlYXRlIGEgdHJhbnNmb3JtcyBub2RlCisJCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgIlRyYW5zZm9ybXMiKTsKKwkJbXBfdHJhbnNmb3Jtc05vZGUgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklEU0lHLCBzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisJCW1wX3JlZmVyZW5jZU5vZGUtPmluc2VydEJlZm9yZShtcF90cmFuc2Zvcm1zTm9kZSwgbXBfcmVmZXJlbmNlTm9kZS0+Z2V0Rmlyc3RDaGlsZCgpKTsKKwkJaWYgKG1wX2Vudi0+Z2V0UHJldHR5UHJpbnRGbGFnKCkgPT0gdHJ1ZSkKKwkJCW1wX3JlZmVyZW5jZU5vZGUtPmluc2VydEJlZm9yZShkb2MtPmNyZWF0ZVRleHROb2RlKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ck5MKSwgbXBfdHJhbnNmb3Jtc05vZGUpOworCQltcF9lbnYtPmRvUHJldHR5UHJpbnQobXBfdHJhbnNmb3Jtc05vZGUpOworCisJCS8vIENyZWF0ZSB0aGUgbGlzdAorCQlYU0VDbmV3KG1wX3RyYW5zZm9ybUxpc3QsIERTSUdUcmFuc2Zvcm1MaXN0KCkpOworCX0KKworfQorCit2b2lkIERTSUdSZWZlcmVuY2U6OmFkZFRyYW5zZm9ybShEU0lHVHJhbnNmb3JtICogdHhmbSwgRE9NRWxlbWVudCAqIHR4Zm1FbHQpIHsKKworCWlmIChtcF90cmFuc2Zvcm1MaXN0ID09IE5VTEwpCisJCWNyZWF0ZVRyYW5zZm9ybUxpc3QoKTsKKworCW1wX3RyYW5zZm9ybXNOb2RlLT5hcHBlbmRDaGlsZCh0eGZtRWx0KTsKKwltcF9lbnYtPmRvUHJldHR5UHJpbnQobXBfdHJhbnNmb3Jtc05vZGUpOworCisJbXBfdHJhbnNmb3JtTGlzdC0+YWRkVHJhbnNmb3JtKHR4Zm0pOworfQorCisKK0RTSUdUcmFuc2Zvcm1FbnZlbG9wZSAqIERTSUdSZWZlcmVuY2U6OmFwcGVuZEVudmVsb3BlZFNpZ25hdHVyZVRyYW5zZm9ybSgpIHsKKworCURPTUVsZW1lbnQgKnR4Zm1FbHQ7CisJRFNJR1RyYW5zZm9ybUVudmVsb3BlICogdHhmbTsKKworCVhTRUNuZXcodHhmbSwgRFNJR1RyYW5zZm9ybUVudmVsb3BlKG1wX2VudikpOworCXR4Zm1FbHQgPSB0eGZtLT5jcmVhdGVCbGFua1RyYW5zZm9ybShtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCkpOworCisJYWRkVHJhbnNmb3JtKHR4Zm0sIHR4Zm1FbHQpOworCisJcmV0dXJuIHR4Zm07CisKK30KKworRFNJR1RyYW5zZm9ybUJhc2U2NCAqIERTSUdSZWZlcmVuY2U6OmFwcGVuZEJhc2U2NFRyYW5zZm9ybSgpIHsKKworCURPTUVsZW1lbnQgKnR4Zm1FbHQ7CisJRFNJR1RyYW5zZm9ybUJhc2U2NCAqIHR4Zm07CisKKwlYU0VDbmV3KHR4Zm0sIERTSUdUcmFuc2Zvcm1CYXNlNjQobXBfZW52KSk7CisJdHhmbUVsdCA9IHR4Zm0tPmNyZWF0ZUJsYW5rVHJhbnNmb3JtKG1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKSk7CisKKwlhZGRUcmFuc2Zvcm0odHhmbSwgdHhmbUVsdCk7CisKKwlyZXR1cm4gdHhmbTsKKworfQorCitEU0lHVHJhbnNmb3JtWFNMICogRFNJR1JlZmVyZW5jZTo6YXBwZW5kWFNMVHJhbnNmb3JtKERPTU5vZGUgKiBzdHlsZXNoZWV0KSB7CisKKwlET01FbGVtZW50ICp0eGZtRWx0OworCURTSUdUcmFuc2Zvcm1YU0wgKiB0eGZtOworCisJWFNFQ25ldyh0eGZtLCBEU0lHVHJhbnNmb3JtWFNMKG1wX2VudikpOworCXR4Zm1FbHQgPSB0eGZtLT5jcmVhdGVCbGFua1RyYW5zZm9ybShtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCkpOworCXR4Zm0tPnNldFN0eWxlc2hlZXQoc3R5bGVzaGVldCk7CisKKwlhZGRUcmFuc2Zvcm0odHhmbSwgdHhmbUVsdCk7CisKKwlyZXR1cm4gdHhmbTsKKworfQorCitEU0lHVHJhbnNmb3JtQzE0biAqIERTSUdSZWZlcmVuY2U6OmFwcGVuZENhbm9uaWNhbGl6YXRpb25UcmFuc2Zvcm0oY2Fub25pY2FsaXphdGlvbk1ldGhvZCBjbSkgeworCisJRE9NRWxlbWVudCAqdHhmbUVsdDsKKwlEU0lHVHJhbnNmb3JtQzE0biAqIHR4Zm07CisKKwlYU0VDbmV3KHR4Zm0sIERTSUdUcmFuc2Zvcm1DMTRuKG1wX2VudikpOworCXR4Zm1FbHQgPSB0eGZtLT5jcmVhdGVCbGFua1RyYW5zZm9ybShtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCkpOworCXR4Zm0tPnNldENhbm9uaWNhbGl6YXRpb25NZXRob2QoY20pOworCisJYWRkVHJhbnNmb3JtKHR4Zm0sIHR4Zm1FbHQpOworCisJcmV0dXJuIHR4Zm07CisKK30KKworRFNJR1RyYW5zZm9ybUMxNG4gKiBEU0lHUmVmZXJlbmNlOjphcHBlbmRDYW5vbmljYWxpemF0aW9uVHJhbnNmb3JtKAorCQljb25zdCBYTUxDaCAqIGNhbm9uaWNhbGl6YXRpb25BbGdvcml0aG1VUkkpIHsKKworCWNhbm9uaWNhbGl6YXRpb25NZXRob2QgY207CisJWFNFQ21hcFVSSVRvQ2Fub25pY2FsaXphdGlvbk1ldGhvZChjYW5vbmljYWxpemF0aW9uQWxnb3JpdGhtVVJJLCBjbSk7CisKKwlyZXR1cm4gYXBwZW5kQ2Fub25pY2FsaXphdGlvblRyYW5zZm9ybShjbSk7CisKK30KKworRFNJR1RyYW5zZm9ybVhQYXRoICogRFNJR1JlZmVyZW5jZTo6YXBwZW5kWFBhdGhUcmFuc2Zvcm0oY29uc3QgY2hhciAqIGV4cHIpIHsKKworCURPTUVsZW1lbnQgKnR4Zm1FbHQ7CisJRFNJR1RyYW5zZm9ybVhQYXRoICogdHhmbTsKKworCVhTRUNuZXcodHhmbSwgRFNJR1RyYW5zZm9ybVhQYXRoKG1wX2VudikpOworCXR4Zm1FbHQgPSB0eGZtLT5jcmVhdGVCbGFua1RyYW5zZm9ybShtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCkpOworCXR4Zm0tPnNldEV4cHJlc3Npb24oZXhwcik7CisKKwlhZGRUcmFuc2Zvcm0odHhmbSwgdHhmbUVsdCk7CisKKwlyZXR1cm4gdHhmbTsKK30KKworRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyICogRFNJR1JlZmVyZW5jZTo6YXBwZW5kWFBhdGhGaWx0ZXJUcmFuc2Zvcm0odm9pZCkgeworCisJRE9NRWxlbWVudCAqdHhmbUVsdDsKKwlEU0lHVHJhbnNmb3JtWFBhdGhGaWx0ZXIgKiB0eGZtOworCisJWFNFQ25ldyh0eGZtLCBEU0lHVHJhbnNmb3JtWFBhdGhGaWx0ZXIobXBfZW52KSk7CisJdHhmbUVsdCA9IHR4Zm0tPmNyZWF0ZUJsYW5rVHJhbnNmb3JtKG1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKSk7CisKKwlhZGRUcmFuc2Zvcm0odHhmbSwgdHhmbUVsdCk7CisJbXBfZW52LT5kb1ByZXR0eVByaW50KHR4Zm1FbHQpOworCisJcmV0dXJuIHR4Zm07Cit9CisKKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENyZWF0aW9uIG9mIGJsYW5rcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitET01FbGVtZW50ICpEU0lHUmVmZXJlbmNlOjpjcmVhdGVCbGFua1JlZmVyZW5jZShjb25zdCBYTUxDaCAqIFVSSSwgaGFzaE1ldGhvZCBobSwgY2hhciAqIHR5cGUpIHsKKworCS8vIERlcHJlY2F0ZWQgLSB1c2UgdGhlIGFsZ29yaXRobSBVUkkgYmFzZWQgbWV0aG9kIGluc3RlYWQKKworCXNhZmVCdWZmZXIgaFVSSTsKKworCWlmIChoYXNoTWV0aG9kMlVSSShoVVJJLCBobSkgPT0gZmFsc2UpIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpVbmtub3duU2lnbmF0dXJlQWxnb3JpdGhtLAorCQkJIkRTSUdSZWZlcmVuY2U6OmNyZWF0ZUJsYW5rUmVmZXJlbmNlIC0gSGFzaCBtZXRob2QgdW5rbm93biIpOworCX0KKworCXJldHVybiBjcmVhdGVCbGFua1JlZmVyZW5jZShVUkksIGhVUkkuc2JTdHJUb1hNTENoKCksIE1BS0VfVU5JQ09ERV9TVFJJTkcodHlwZSkpOworCit9CisKK0RPTUVsZW1lbnQgKkRTSUdSZWZlcmVuY2U6OmNyZWF0ZUJsYW5rUmVmZXJlbmNlKGNvbnN0IFhNTENoICogVVJJLAorCQkJCQkJCQkJCQkJY29uc3QgWE1MQ2ggKiBoYXNoQWxnb3JpdGhtVVJJLAorCQkJCQkJCQkJCQkJY29uc3QgWE1MQ2ggKiB0eXBlKSB7CisKKwkvLyBSZXNldCB0aGlzIFJlZmVyZW5jZSBqdXN0IGluIGNhc2UKKworCW1faXNNYW5pZmVzdCA9IGZhbHNlOworCW1wX3ByZUhhc2ggPSBOVUxMOworCW1wX21hbmlmZXN0TGlzdCA9IE5VTEw7CisJbXBfdHJhbnNmb3Jtc05vZGUgPSBOVUxMOworCW1wX3RyYW5zZm9ybUxpc3QgPSBOVUxMOworCisJWFNFQ21hcFVSSVRvSGFzaE1ldGhvZChoYXNoQWxnb3JpdGhtVVJJLCBtZV9oYXNoTWV0aG9kKTsKKworCXNhZmVCdWZmZXIgc3RyOworCURPTURvY3VtZW50ICpkb2MgPSBtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCk7CisJY29uc3QgWE1MQ2ggKiBwcmVmaXggPSBtcF9lbnYtPmdldERTSUdOU1ByZWZpeCgpOworCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCAiUmVmZXJlbmNlIik7CisKKwlET01FbGVtZW50ICpyZXQgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklEU0lHLCBzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisJbXBfcmVmZXJlbmNlTm9kZSA9IHJldDsKKworCS8vIFNldCB0eXBlCisJaWYgKHR5cGUgIT0gTlVMTCkKKwkJcmV0LT5zZXRBdHRyaWJ1dGVOUyhOVUxMLCBNQUtFX1VOSUNPREVfU1RSSU5HKCJUeXBlIiksIHR5cGUpOworCisJLy8gU2V0IFVSSQorCWlmIChVUkkgIT0gTlVMTCkgeworCQlyZXQtPnNldEF0dHJpYnV0ZU5TKE5VTEwsIHNfdW5pY29kZVN0clVSSSwgVVJJKTsKKwkJbXBfVVJJID0gcmV0LT5nZXRBdHRyaWJ1dGVOUyhOVUxMLCBzX3VuaWNvZGVTdHJVUkkpOyAvLyBVc2VkIGxhdGVyIG9uIGFzIGEgcG9pbnRlcgorCX0KKwllbHNlIHsKKwkJLy8gQW5vbnltb3VzIHJlZmVyZW5jZQorCQltcF9VUkkgPSBOVUxMOworCX0KKworCS8vIENyZWF0ZSBoYXNoIGFuZCBoYXNoVmFsdWUgbm9kZXMKKwltYWtlUU5hbWUoc3RyLCBwcmVmaXgsICJEaWdlc3RNZXRob2QiKTsKKwlET01FbGVtZW50ICpkaWdlc3RNZXRob2QgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklEU0lHLCBzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisJbXBfZW52LT5kb1ByZXR0eVByaW50KHJldCk7CisJcmV0LT5hcHBlbmRDaGlsZChkaWdlc3RNZXRob2QpOworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChyZXQpOworCisJZGlnZXN0TWV0aG9kLT5zZXRBdHRyaWJ1dGVOUyhOVUxMLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJBbGdvcml0aG0sCisJCWhhc2hBbGdvcml0aG1VUkkpOworCisJLy8gUmV0cmlldmUgdGhlIGF0dHJpYnV0ZSB2YWx1ZSBmb3IgbGF0ZXIgdXNlCisJbXBfYWxnb3JpdGhtVVJJID0KKwkJZGlnZXN0TWV0aG9kLT5nZXRBdHRyaWJ1dGVOUyhOVUxMLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJBbGdvcml0aG0pOworCisKKwkvLyBEaWdlc3RWYWx1ZQorCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCAiRGlnZXN0VmFsdWUiKTsKKwltcF9oYXNoVmFsdWVOb2RlID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRFNJRywgc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCXJldC0+YXBwZW5kQ2hpbGQobXBfaGFzaFZhbHVlTm9kZSk7CisJbXBfZW52LT5kb1ByZXR0eVByaW50KHJldCk7CisJbXBfaGFzaFZhbHVlTm9kZS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZShNQUtFX1VOSUNPREVfU1RSSU5HKCJOb3QgeWV0IGNhbGN1bGF0ZWQiKSkpOworCisJbV9sb2FkZWQgPSB0cnVlOworCXJldHVybiByZXQ7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBzZXRQcmVIYXNoVHJhbnNmb3JtIC0gdG8gc2V0IGEgdHJhbnNmb3JtIHRvIGJlIHVzZWQgcHJlLWhhc2gKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwordm9pZCBEU0lHUmVmZXJlbmNlOjpzZXRQcmVIYXNoVFhGTShUWEZNQmFzZSAqIHQpIHsKKworCW1wX3ByZUhhc2ggPSB0OworCit9CisKKy8vICAgICAgICAgICBzZXRJZAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBEU0lHUmVmZXJlbmNlOjpzZXRJZChjb25zdCBYTUxDaCAqaWQpIHsKKworICAgIGlmIChtcF9yZWZlcmVuY2VOb2RlKQorICAgICAgICAoKERPTUVsZW1lbnQqKW1wX3JlZmVyZW5jZU5vZGUpLT5zZXRBdHRyaWJ1dGVOUyhOVUxMLCBNQUtFX1VOSUNPREVfU1RSSU5HKCJJZCIpLCBpZCk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBzZXRUeXBlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIERTSUdSZWZlcmVuY2U6OnNldFR5cGUoY29uc3QgWE1MQ2ggKnR5cGUpIHsKKworICAgIGlmIChtcF9yZWZlcmVuY2VOb2RlKQorICAgICAgICAoKERPTUVsZW1lbnQqKW1wX3JlZmVyZW5jZU5vZGUpLT5zZXRBdHRyaWJ1dGVOUyhOVUxMLCBNQUtFX1VOSUNPREVfU1RSSU5HKCJUeXBlIiksIHR5cGUpOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgaXNNYW5pZmVzdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYm9vbCBEU0lHUmVmZXJlbmNlOjppc01hbmlmZXN0KCkgeworCisJcmV0dXJuIG1faXNNYW5pZmVzdDsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIGdldFVSSQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY29uc3QgWE1MQ2ggKiBEU0lHUmVmZXJlbmNlOjpnZXRVUkkoKSB7CisKKwlyZXR1cm4gbXBfVVJJOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgZ2V0TWFuaWZlc3RSZWZlcmVuY2VMaXN0CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitEU0lHUmVmZXJlbmNlTGlzdCAqIERTSUdSZWZlcmVuY2U6OmdldE1hbmlmZXN0UmVmZXJlbmNlTGlzdCgpIHsKKworCXJldHVybiBtcF9tYW5pZmVzdExpc3Q7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBnZXRVUklCYXNlVHJhbnNmb3JtCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUWEZNQmFzZSAqIERTSUdSZWZlcmVuY2U6OmdldFVSSUJhc2VUWEZNKERPTURvY3VtZW50ICogZG9jLAorCQkJCQkJCQkJCSBjb25zdCBYTUxDaCAqIFVSSSwKKwkJCQkJCQkJCQkgY29uc3QgWFNFQ0VudiAqIGVudikgeworCisJLy8gRGV0ZXJtaW5lIGlmIHRoaXMgaXMgYSBmdWxsIFVSTCBvciBhIHBvaW50ZXIgdG8gYSBVUkwKKworCWlmIChVUkkgPT0gTlVMTCB8fCAoVVJJWzBdICE9IDAgJiYKKwkJVVJJWzBdICE9IFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBjaFBvdW5kKSkgeworCisJCVRYRk1VUkwgKiByZXRUcmFuc2Zvcm07CisKKwkJLy8gSGF2ZSBhIFVSTCEKKworCQlYU0VDbmV3KHJldFRyYW5zZm9ybSwgVFhGTVVSTChkb2MsIGVudi0+Z2V0VVJJUmVzb2x2ZXIoKSkpOworCisJCXRyeSB7CisJCQkoKFRYRk1VUkwgKikgcmV0VHJhbnNmb3JtKS0+c2V0SW5wdXQoVVJJKTsKKwkJfQorCQljYXRjaCAoLi4uKSB7CisKKwkJCWRlbGV0ZSByZXRUcmFuc2Zvcm07CisJCQl0aHJvdzsKKworCQl9CisKKwkJcmV0dXJuIHJldFRyYW5zZm9ybTsKKworCX0KKworCS8vIEhhdmUgYSBmcmFnbWVudCBVUkkgZnJvbSB0aGUgbG9jYWwgZG9jdW1lbnQKKwlUWEZNRG9jT2JqZWN0ICogdG87CisJWFNFQ25ldyh0bywgVFhGTURvY09iamVjdChkb2MpKTsKKwlKYW5pdG9yPFRYRk1Eb2NPYmplY3Q+IGpfdG8odG8pOworCXRvLT5zZXRFbnYoZW52KTsKKworCS8vIEZpbmQgb3V0IHdoYXQgc29ydCBvZiBvYmplY3QgcG9pbnRlciB0aGlzIGlzLgorCisJaWYgKFVSSVswXSA9PSAwKSB7CisKKwkJLy8gZW1wdHkgcG9pbnRlciAtIHVzZSB0aGUgZG9jdW1lbnQgaXRzZWxmCisJCXRvLT5zZXRJbnB1dChkb2MpOworCQl0by0+c3RyaXBDb21tZW50cygpOworCisJfQorCisJZWxzZSBpZiAoWE1MU3RyaW5nOjpjb21wYXJlTlN0cmluZygmVVJJWzFdLCBzX3VuaWNvZGVTdHJ4cG9pbnRlciwgOCkgPT0gMCkgeworCisJCS8vIEhhdmUgYW4geHBvaW50ZXIKKwkJaWYgKHN0ckVxdWFscyhzX3VuaWNvZGVTdHJSb290Tm9kZSwgJlVSSVs5XSkgPT0gdHJ1ZSkgeworCQkJLy8gUm9vdCBub2RlCisJCQl0by0+c2V0SW5wdXQoZG9jKTsKKworCQl9CisKKwkJZWxzZSBpZiAoVVJJWzldID09IFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBjaE9wZW5QYXJlbiAmJgorCQkJICAgICBVUklbMTBdID09IFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBjaExhdGluX2kgJiYKKwkJCQkgVVJJWzExXSA9PSBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgY2hMYXRpbl9kICYmCisJCQkJIFVSSVsxMl0gPT0gWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoT3BlblBhcmVuICYmCisJCQkJIFVSSVsxM10gPT0gWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoU2luZ2xlUXVvdGUpIHsKKworCQkJeHNlY3NpemVfdCBsZW4gPSBYTUxTdHJpbmc6OnN0cmluZ0xlbigmVVJJWzE0XSk7CisKKwkJCVhNTENoIHRtcFs1MTJdOworCisJCQlpZiAobGVuID4gNTExKQorCQkJCWxlbiA9IDUxMTsKKworCQkJeHNlY3NpemVfdCBqID0gMTQsIGkgPSAwOworCisJCQkvLyBIYXZlIGFuIElECisJCQl3aGlsZSAoVVJJW2pdICE9ICdcJycpIHsKKwkJCQl0bXBbaSsrXSA9IFVSSVtqKytdOworCQkJfQorCQkJdG1wW2ldID0gWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoTnVsbDsKKworCQkJdG8tPnNldElucHV0KGRvYywgdG1wKTsKKworCQl9CisKKwkJZWxzZSB7CisKKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6VW5zdXBwb3J0ZWRYcG9pbnRlckV4cHIpOworCisJCX0KKworCQkvLyBLZWVwIGNvbW1lbnRzIGluIHRoZXNlIHNpdHVhdGlvbnMKKwkJdG8tPmFjdGl2YXRlQ29tbWVudHMoKTsKKwl9CisKKwllbHNlIHsKKworCQl0by0+c2V0SW5wdXQoZG9jLCAmVVJJWzFdKTsKKworCQkvLyBSZW1vdmUgY29tbWVudHMKKwkJdG8tPnN0cmlwQ29tbWVudHMoKTsKKworCX0KKworCWpfdG8ucmVsZWFzZSgpOworCXJldHVybiB0bzsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIGxvYWQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgRFNJR1JlZmVyZW5jZTo6bG9hZCh2b2lkKSB7CisKKwkvLyBMb2FkIHJlZmVyZW5jZSBpbmZvIGZyb20gWE1MCisKKwlET01OYW1lZE5vZGVNYXAgKmF0dHMgPSBtcF9yZWZlcmVuY2VOb2RlLT5nZXRBdHRyaWJ1dGVzKCk7CisJRE9NTm9kZSAqdG1wRWx0OworCisJY29uc3QgWE1MQ2ggKiBuYW1lOworCXNhZmVCdWZmZXIgc2JOYW1lOworCisJaWYgKGF0dHMgIT0gMCkgeworCisJCVhNTFNpemVfdCBzaXplID0gYXR0cy0+Z2V0TGVuZ3RoKCk7CisKKwkJZm9yIChYTUxTaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKworCQkJbmFtZSA9IGF0dHMtPml0ZW0oaSktPmdldE5vZGVOYW1lKCk7CisJCQlzYk5hbWUgPDwgKCptcF9mb3JtYXR0ZXIgPDwgYXR0cy0+aXRlbShpKS0+Z2V0Tm9kZU5hbWUoKSk7CisKKwkJCWlmIChzdHJFcXVhbHMobmFtZSwgc191bmljb2RlU3RyVVJJKSkgeworCQkJCW1wX1VSSSA9IGF0dHMtPml0ZW0oaSktPmdldE5vZGVWYWx1ZSgpOworCQkJfQorCisJCQllbHNlIGlmIChzdHJFcXVhbHMobmFtZSwgIlR5cGUiKSkgeworCisJCQkJLy8gQ2hlY2sgaWYgYSBtYW5pZmVzdCwgb3RoZXJ3aXNlIGlnbm9yZSBmb3Igbm93CisJCQkJaWYgKHN0ckVxdWFscyhhdHRzLT5pdGVtKGkpLT5nZXROb2RlVmFsdWUoKSwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJTUFOSUZFU1QpKQorCQkJCQltX2lzTWFuaWZlc3QgPSB0cnVlOworCisJCQl9CisKKwkJCWVsc2UgaWYgKHN0ckVxdWFscyhuYW1lLCAiSWQiKSkgeworCisJCQkJLy8gRm9yIG5vdyBpZ25vcmUKKworCQkJfQorCisJCQllbHNlIGlmIChzYk5hbWUuc2JTdHJuY21wKCJ4bWxucyIsIDUpID09IDApIHsKKworCQkJCS8vIElnbm9yZSBuYW1lIHNwYWNlcworCisJCQl9CisKKwkJCWVsc2UgeworCQkJCS8vc2FmZUJ1ZmZlciB0bXAsIGVycm9yOworCisJCQkJLy9lcnJvciA8PCAoKm1wX2Zvcm1hdHRlciA8PCBuYW1lKTsKKwkJCQkvL3RtcC5zYlN0cmNweUluKCJVbmtub3duIGF0dHJpYnV0ZSBpbiA8UmVmZXJlbmNlPiBFbGVtZW50IDogIik7CisJCQkJLy90bXAuc2JTdHJjYXRJbihlcnJvcik7CisKKwkJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlVua25vd25EU0lHQXR0cmlidXRlLAorCQkJCQkiVW5rbm93biBhdHRyaWJ1dGUgaW4gPFJlZmVyZW5jZT4gRWxlbWVudCIpOworCisJCQl9CisKKwkJfQorCisJfQorCisJLy8gTm93IGNoZWNrIGZvciBUcmFuc2Zvcm1zCisJdG1wRWx0ID0gbXBfcmVmZXJlbmNlTm9kZS0+Z2V0Rmlyc3RDaGlsZCgpOworCisJd2hpbGUgKHRtcEVsdCAhPSAwICYmICh0bXBFbHQtPmdldE5vZGVUeXBlKCkgIT0gRE9NTm9kZTo6RUxFTUVOVF9OT0RFKSkKKwkJLy8gU2tpcCB0ZXh0IGFuZCBjb21tZW50cworCQl0bXBFbHQgPSB0bXBFbHQtPmdldE5leHRTaWJsaW5nKCk7CisKKwlpZiAodG1wRWx0ID09IDApIHsKKworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZERTSUdDaGlsZE5vdEZvdW5kLAorCQkJCQkiRXhwZWN0ZWQgPFRyYW5zZm9ybXM+IG9yIDxEaWdlc3RNZXRob2Q+IHdpdGhpbiA8UmVmZXJlbmNlPiIpOworCisJfQorCisJaWYgKHN0ckVxdWFscyhnZXREU0lHTG9jYWxOYW1lKHRtcEVsdCksICJUcmFuc2Zvcm1zIikpIHsKKworCQkvLyBTdG9yZSBub2RlIGZvciBsYXRlciB1c2UKKwkJbXBfdHJhbnNmb3Jtc05vZGUgPSB0bXBFbHQ7CisKKwkJLy8gTG9hZCB0aGUgdHJhbnNmb3JtcworCQltcF90cmFuc2Zvcm1MaXN0ID0gbG9hZFRyYW5zZm9ybXModG1wRWx0LCBtcF9mb3JtYXR0ZXIsIG1wX2Vudik7CisKKwkJLy8gRmluZCBuZXh0IG5vZGUKKwkJdG1wRWx0ID0gdG1wRWx0LT5nZXROZXh0U2libGluZygpOworCQl3aGlsZSAodG1wRWx0ICE9IDAgJiYgKHRtcEVsdC0+Z2V0Tm9kZVR5cGUoKSAhPSBET01Ob2RlOjpFTEVNRU5UX05PREUpKQorCQkJdG1wRWx0ID0gdG1wRWx0LT5nZXROZXh0U2libGluZygpOworCisKKwl9IC8qIGlmIHRtcEVsdCBub2RlIHR5cGUgPSB0cmFuc2Zvcm1zICovCisJZWxzZQorCQltcF90cmFuc2Zvcm1MaXN0ID0gTlVMTDsKKworCisJaWYgKHRtcEVsdCA9PSBOVUxMIHx8ICFzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZSh0bXBFbHQpLCAiRGlnZXN0TWV0aG9kIikpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkRFNJR0NoaWxkTm90Rm91bmQsCisJCQkJCQkJIkV4cGVjdGVkIDxEaWdlc3RNZXRob2Q+IGVsZW1lbnQiKTsKKworCX0KKworCS8vIERldGVybWluZSB3aGF0IHRoZSBkaWdlc3QgbWV0aG9kIGFjdHVhbGx5IGlzCisKKwlhdHRzID0gdG1wRWx0LT5nZXRBdHRyaWJ1dGVzKCk7CisJdW5zaWduZWQgaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgYXR0cy0+Z2V0TGVuZ3RoKCkgJiYKKwkJIXN0ckVxdWFscyhhdHRzLT5pdGVtKGkpLT5nZXROb2RlTmFtZSgpLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJBbGdvcml0aG0pOyArK2kpOworCisKKwlpZiAoaSA9PSBhdHRzLT5nZXRMZW5ndGgoKSkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWREU0lHQ2hpbGROb3RGb3VuZCwKKwkJCQkJCQkiRXhwZWN0ZWQgJ0FsZ29yaXRobScgYXR0cmlidXRlIGluIDxEaWdlc3RNZXRob2Q+Iik7CisKKwl9CisKKwltcF9hbGdvcml0aG1VUkkgPSBhdHRzLT5pdGVtKGkpLT5nZXROb2RlVmFsdWUoKTsKKworCS8vIERldGVybWluZSBoYXNoaW5nIGFsZ29yaXRobQorCVhTRUNtYXBVUklUb0hhc2hNZXRob2QobXBfYWxnb3JpdGhtVVJJLCBtZV9oYXNoTWV0aG9kKTsKKworCS8vIEZpbmQgdGhlIGhhc2ggdmFsdWUgbm9kZQorCisJdG1wRWx0ID0gdG1wRWx0LT5nZXROZXh0U2libGluZygpOworCisJd2hpbGUgKHRtcEVsdCAhPSAwICYmICEoc3RyRXF1YWxzKGdldERTSUdMb2NhbE5hbWUodG1wRWx0KSwgIkRpZ2VzdFZhbHVlIikpKQorCQl0bXBFbHQgPSB0bXBFbHQtPmdldE5leHRTaWJsaW5nKCk7CisKKwlpZiAodG1wRWx0ID09IDApIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkRFNJR0NoaWxkTm90Rm91bmQsCisJCQkiRXhwZWN0ZWQgPERpZ2VzdFZhbHVlPiB3aXRoaW4gPFJlZmVyZW5jZT4iKTsKKworCX0KKworCW1wX2hhc2hWYWx1ZU5vZGUgPSB0bXBFbHQ7CisKKwkvLyBJZiB3ZSBhcmUgYSBtYW5pZmVzdCwgdGhlbiB3ZSBuZWVkIHRvIGxvYWQgdGhlIG1hbmlmZXN0IHJlZmVyZW5jZXMKKworCWlmIChtX2lzTWFuaWZlc3QpIHsKKworCQkvLyBGaW5kIHRoZSBtYW5pZmVzdCBub2RlIC0gd2UgY2hlYXQgYW5kIHVzZSBhIHRyYW5zZm9ybQorCQlUWEZNQmFzZQkJCQkqIGRvY09iamVjdDsKKwkJRE9NTm9kZQkJCQkJKiBtYW5pZmVzdE5vZGUsICogcmVmZXJlbmNlTm9kZTsKKworCQlkb2NPYmplY3QgPSBnZXRVUklCYXNlVFhGTShtcF9yZWZlcmVuY2VOb2RlLT5nZXRPd25lckRvY3VtZW50KCksIG1wX1VSSSwKKwkJCW1wX2Vudik7CisKKwkJbWFuaWZlc3ROb2RlID0gZG9jT2JqZWN0LT5nZXRGcmFnbWVudE5vZGUoKTsKKwkJZGVsZXRlIGRvY09iamVjdDsKKworCQkvLyBOb3cgc2VhcmNoIGRvd253YXJkcyB0byBmaW5kIGEgPE1hbmlmZXN0PgorCQlpZiAobWFuaWZlc3ROb2RlID09IDAgfHwgbWFuaWZlc3ROb2RlLT5nZXROb2RlVHlwZSgpICE9IERPTU5vZGU6OkVMRU1FTlRfTk9ERSB8fAorCQkJKCFzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZShtYW5pZmVzdE5vZGUpLCAiT2JqZWN0IikgJiYgIXN0ckVxdWFscyhnZXREU0lHTG9jYWxOYW1lKG1hbmlmZXN0Tm9kZSksICJNYW5pZmVzdCIpKSkgeworCisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkRFNJR0NoaWxkTm90Rm91bmQsCisJCQkJIkV4cGVjdGVkIDxNYW5pZmVzdD4gb3IgPE9iamVjdD4gVVJJIGZvciBNYW5pZmVzdCBUeXBlIDxSZWZlcmVuY2U+Iik7CisKKwkJfQorCisJCWlmIChzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZShtYW5pZmVzdE5vZGUpLCAiT2JqZWN0IikpIHsKKworCQkJLy8gRmluZCBNYW5pZmVzdCBjaGlsZAorCQkJbWFuaWZlc3ROb2RlID0gbWFuaWZlc3ROb2RlLT5nZXRGaXJzdENoaWxkKCk7CisJCQl3aGlsZSAobWFuaWZlc3ROb2RlICE9IDAgJiYgbWFuaWZlc3ROb2RlLT5nZXROb2RlVHlwZSgpICE9IERPTU5vZGU6OkVMRU1FTlRfTk9ERSkKKwkJCQltYW5pZmVzdE5vZGUgPSBtYW5pZmVzdE5vZGUtPmdldE5leHRTaWJsaW5nKCk7CisKKwkJCWlmIChtYW5pZmVzdE5vZGUgPT0gMCB8fCAhc3RyRXF1YWxzKGdldERTSUdMb2NhbE5hbWUobWFuaWZlc3ROb2RlKSwgIk1hbmlmZXN0IikpCisJCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZERTSUdDaGlsZE5vdEZvdW5kLAorCQkJCSJFeHBlY3RlZCA8TWFuaWZlc3Q+IGFzIGNoaWxkIG9mIDxPYmplY3Q+IGZvciBNYW5pZmVzdCBUeXBlIDxSZWZlcmVuY2U+Iik7CisKKwkJfQorCisJCS8vIE5vdyBoYXZlIHRoZSBtYW5pZmVzdCBub2RlLCBmaW5kIHRoZSBmaXJzdCByZWZlcmVuY2UgYW5kIGxvYWQhCisJCXJlZmVyZW5jZU5vZGUgPSBtYW5pZmVzdE5vZGUtPmdldEZpcnN0Q2hpbGQoKTsKKworCQl3aGlsZSAocmVmZXJlbmNlTm9kZSAhPSAwICYmICFzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZShyZWZlcmVuY2VOb2RlKSwgIlJlZmVyZW5jZSIpKQorCQkJcmVmZXJlbmNlTm9kZSA9IHJlZmVyZW5jZU5vZGUtPmdldE5leHRTaWJsaW5nKCk7CisKKwkJaWYgKHJlZmVyZW5jZU5vZGUgPT0gMCkKKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWREU0lHQ2hpbGROb3RGb3VuZCwKKwkJCSJFeHBlY3RlZCA8UmVmZXJlbmNlPiBhcyBjaGlsZCBvZiA8TWFuaWZlc3Q+Iik7CisKKwkJLy8gSGF2ZSByZWZlcmVuY2Ugbm9kZSwgc28gbGV0cyBjcmVhdGUgYSBsaXN0IQorCQltcF9tYW5pZmVzdExpc3QgPSBEU0lHUmVmZXJlbmNlOjpsb2FkUmVmZXJlbmNlTGlzdEZyb21YTUwobXBfZW52LCByZWZlcmVuY2VOb2RlKTsKKworCX0gLyogbV9pc01hbmlmZXN0ICovCisKKwltX2xvYWRlZCA9IHRydWU7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBjcmVhdGVSZWZlcmVuY2VMaXN0RnJvbVhNTAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRFNJR1JlZmVyZW5jZUxpc3QgKkRTSUdSZWZlcmVuY2U6OmxvYWRSZWZlcmVuY2VMaXN0RnJvbVhNTChjb25zdCBYU0VDRW52ICogZW52LCBET01Ob2RlICpmaXJzdFJlZmVyZW5jZSkgeworCisJLy8gSGF2ZSB0aGUgZmlyc3QgcmVmZXJlbmNlIGVsZW1lbnQgaW4gdGhlIGRvY3VtZW50LAorCS8vIHNvIHdhbnQgdG8gZmluZCBhbmQgbG9hZCB0aGVtIGFsbAorCisJRE9NTm9kZSAqdG1wUmVmID0gZmlyc3RSZWZlcmVuY2U7CisJRFNJR1JlZmVyZW5jZUxpc3QgKiByZWZMaXN0OworCURTSUdSZWZlcmVuY2UgKiByOworCisJWFNFQ25ldyhyZWZMaXN0LCBEU0lHUmVmZXJlbmNlTGlzdCgpKTsKKwlKYW5pdG9yPERTSUdSZWZlcmVuY2VMaXN0PiBqX3JlZkxpc3QocmVmTGlzdCk7CisKKwl3aGlsZSAodG1wUmVmICE9IDApIHsKKworCQkvLyBNdXN0IGJlIGFuIGVsZW1lbnQgbm9kZQorCisJCWlmICh0bXBSZWYtPmdldE5vZGVUeXBlKCkgIT0gRE9NTm9kZTo6RUxFTUVOVF9OT0RFIHx8CisJCQkhc3RyRXF1YWxzKGdldERTSUdMb2NhbE5hbWUodG1wUmVmKSwgIlJlZmVyZW5jZSIpKSB7CisKKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWREU0lHQ2hpbGROb3RGb3VuZCwKKwkJCQkiRXhwZWN0ZWQgPFJlZmVyZW5jZT4gYXMgY2hpbGQgb2YgPFNpZ25lZEluZm8+Iik7CisKKwkJfQorCisJCVhTRUNuZXcociwgRFNJR1JlZmVyZW5jZShlbnYsIHRtcFJlZikpOworCisJCXJlZkxpc3QtPmFkZFJlZmVyZW5jZShyKTsKKworCQkvLyBMb2FkIHRoZSByZWZlcmVuY2UgYmVmb3JlIG1vdmluZyBvbgorCQlyLT5sb2FkKCk7CisKKwkJLy8gRmluZCBuZXh0IGVsZW1lbnQgTm9kZQorCQl0bXBSZWYgPSB0bXBSZWYtPmdldE5leHRTaWJsaW5nKCk7CisKKwkJd2hpbGUgKHRtcFJlZiAhPSAwICYmIHRtcFJlZi0+Z2V0Tm9kZVR5cGUoKSAhPSBET01Ob2RlOjpFTEVNRU5UX05PREUpCisJCQl0bXBSZWYgPSB0bXBSZWYtPmdldE5leHRTaWJsaW5nKCk7CisKKwl9CisKKwlqX3JlZkxpc3QucmVsZWFzZSgpOworCXJldHVybiByZWZMaXN0OworCit9CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdldCB0aGUgQ2Fub25pY2FsaXNlZCBCWVRFX1NUUkVBTSBvZiB0aGUgcmVmZXJlbmNlIGRhdGEgKGFuZCBUWEZNUykKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hTRUNCaW5UWEZNSW5wdXRTdHJlYW0gKiBEU0lHUmVmZXJlbmNlOjptYWtlQmluSW5wdXRTdHJlYW0odm9pZCkgY29uc3QgeworCisJLy8gRmlyc3Qgc2V0IHVwIGZvciBpbnB1dAorCisJVFhGTUNoYWluICogdHhmbUNoYWluOworCVRYRk1CYXNlICogY3VycmVudFR4Zm07CisKKwlpZiAobV9sb2FkZWQgPT0gZmFsc2UpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246Ok5vdExvYWRlZCwKKwkJCSJjYWxjdWxhdGVIYXNoKCkgY2FsbGVkIGluIERTSUdSZWZlcmVuY2UgYmVmb3JlIGxvYWQoKSIpOworCisJfQorCisJLy8gRmluZCBiYXNlIHRyYW5zZm9ybQorCWN1cnJlbnRUeGZtID0gZ2V0VVJJQmFzZVRYRk0obXBfcmVmZXJlbmNlTm9kZS0+Z2V0T3duZXJEb2N1bWVudCgpLCBtcF9VUkksCisJCW1wX2Vudik7CisKKwkvLyBTZXQgdXAgdGhlIHRyYW5zZm9ybSBjaGFpbgorCisJdHhmbUNoYWluID0gY3JlYXRlVFhGTUNoYWluRnJvbUxpc3QoY3VycmVudFR4Zm0sIG1wX3RyYW5zZm9ybUxpc3QpOworCUphbml0b3I8VFhGTUNoYWluPiBqX3R4Zm1DaGFpbih0eGZtQ2hhaW4pOworCisJRE9NRG9jdW1lbnQgKmQgPSBtcF9yZWZlcmVuY2VOb2RlLT5nZXRPd25lckRvY3VtZW50KCk7CisKKwkvLyBBbGwgdHJhbnNmb3JtcyBkb25lLiAgSWYgbmVjZXNzYXJ5LCBjaGFuZ2UgdGhlIHR5cGUgZnJvbSBub2RlcyB0byBieXRlcworCisJaWYgKHR4Zm1DaGFpbi0+Z2V0TGFzdFR4Zm0oKS0+Z2V0T3V0cHV0VHlwZSgpID09IFRYRk1CYXNlOjpET01fTk9ERVMpIHsKKworCQlUWEZNQzE0biAqIGMxNG47CisJCVhTRUNuZXcoYzE0biwgVFhGTUMxNG4oZCkpOworCQl0eGZtQ2hhaW4tPmFwcGVuZFR4Zm0oYzE0bik7CisKKwl9CisKKwkvLyBOb3cgY3JlYXRlIHRoZSBJbnB1dFN0cmVhbQorCisJWFNFQ0JpblRYRk1JbnB1dFN0cmVhbSAqIHJldDsKKwlyZXQgPSBuZXcgWFNFQ0JpblRYRk1JbnB1dFN0cmVhbSh0eGZtQ2hhaW4pOwkvLyBQcm9icyB3aXRoIE1TVkMrKyBtZWFuIG5vIFhTRUNuZXcKKwlqX3R4Zm1DaGFpbi5yZWxlYXNlKCk7CQkvLyBOb3cgb3duZWQgYnkgInJldCIKKworCXJldHVybiByZXQ7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBIYXNoIGEgcmVmZXJlbmNlIGxpc3QKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwordm9pZCBEU0lHUmVmZXJlbmNlOjpoYXNoUmVmZXJlbmNlTGlzdChEU0lHUmVmZXJlbmNlTGlzdCAqbHN0LCBib29sIGludGVybG9ja2luZykgeworCisvLyBSdW4gdGhyb3VnaCBhIGxpc3Qgb2YgaGFzaGVzIGFuZCBjaGVja0hhc2ggZm9yIGVhY2ggb25lCisKKwlEU0lHUmVmZXJlbmNlICogcjsKKwlpbnQgaSA9IChpbnQpIGxzdC0+Z2V0U2l6ZSgpOworCXNhZmVCdWZmZXIgZXJyU3RyOworCWVyclN0ci5zYlhNTENoSW4oRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyRW1wdHkpOworCisJLy8gUnVuIGEgVkVSWSBuYWlldmUgcHJvY2VzcyBhdCB0aGUgbW9tZW50IHRoYXQgYXNzdW1lcyB0aGUgbGlzdCB3aWxsICJzZXR0bGUiCisJLy8gYWZ0ZXIgTiBpdGVyYXRpb25zIHRocm91Z2ggdGhlIGxpc3QuICBUaGlzIHdpbGwgc2V0dGxlIGFueSBpbnRlci1sb2NraW5nIHJlZmVyZW5jZXMKKwkvLyBXaGVyZSBhIGhhc2ggaW4gYSBsYXRlciBjYWxjdWxhdGVkIHJlZmVyZW5jZSBjb3VsZCBpbXBhY3QgYW4gYWxyZWFkeSBjYWxjdWxhdGVkIGhhc2gKKwkvLyBpbiBhIHByZXZpb3VzIHJlZmVyZW5jZXMKKwkvLworCS8vIElmIGludGVybG9ja2luZyBpcyBzZXQgdG8gZmFsc2UsIGFzc3VtZSB0aGVyZSBhcmUgbm8gaW50ZXJhY3RpbmcgPFJlZmVyZW5jZT4gbm9kZXMKKworCWRvIHsKKworCQlmb3IgKGludCBqID0gMDsgaiA8IGk7ICsraikgeworCisJCQlyID0gbHN0LT5pdGVtKGopOworCisJCQkvLyBJZiB0aGlzIGlzIGEgbWFuaWZlc3Qgd2UgbmVlZCB0byBzZXQgYWxsIHRoZSByZWZlcmVuY2VzIGluIHRoZSBtYW5pZmVzdCBhcyB3ZWxsCisKKwkJCWlmIChyLT5pc01hbmlmZXN0KCkpCisJCQkJaGFzaFJlZmVyZW5jZUxpc3Qoci0+Z2V0TWFuaWZlc3RSZWZlcmVuY2VMaXN0KCkpOworCisJCQkvLyBSZS1vcmRlcmVkIGFzIHBlciBzdWdnZXN0aW9uIGJ5IFBldGVyIEd1YmlzIHRvIG1ha2UgaXQgbW9yZSBsaWtlbHkKKwkJCS8vIHRoYXQgaGFzaGVzIGFyZSBjb3JyZWN0IG9uIGZpcnN0IHBhc3Mgd2hlbiBtYW5pZmVzdHMgYXJlIGludm9sdmVkCisKKwkJCXItPnNldEhhc2goKTsKKworCQl9CisKKwl9IHdoaWxlIChpbnRlcmxvY2tpbmcgJiYgIURTSUdSZWZlcmVuY2U6OnZlcmlmeVJlZmVyZW5jZUxpc3QobHN0LCBlcnJTdHIpICYmIGktLSA+PSAwKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBWZXJpZnkgcmVmZXJlbmNlIGxpc3QKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Jvb2wgRFNJR1JlZmVyZW5jZTo6dmVyaWZ5UmVmZXJlbmNlTGlzdChEU0lHUmVmZXJlbmNlTGlzdCAqIGxzdCwgc2FmZUJ1ZmZlciAmZXJyU3RyKSB7CisKKwkvLyBSdW4gdGhyb3VnaCBhIGxpc3Qgb2YgaGFzaGVzIGFuZCBjaGVja0hhc2ggZm9yIGVhY2ggb25lCisKKwlYU0VDX1VTSU5HX1hFUkNFUyhOZXRBY2Nlc3NvckV4Y2VwdGlvbik7CisKKwlEU0lHUmVmZXJlbmNlICogcjsKKwlib29sIHJlcyA9IHRydWU7CisKKwlpbnQgc2l6ZSA9IChsc3QgPyAoaW50KSBsc3QtPmdldFNpemUoKSA6IDApOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKworCQlyID0gbHN0LT5pdGVtKGkpOworCisJCXRyeSB7CisJCQlpZiAoIXItPmNoZWNrSGFzaCgpKSB7CisKKwkJCQkvLyBGYWlsZWQKKwkJCQllcnJTdHIuc2JYTUxDaENhdCgiUmVmZXJlbmNlIFVSST1cIiIpOworCQkJCWVyclN0ci5zYlhNTENoQ2F0KHItPmdldFVSSSgpKTsKKwkJCQllcnJTdHIuc2JYTUxDaENhdCgiXCIgZmFpbGVkIHRvIHZlcmlmeVxuIik7CisKKwkJCQlyZXMgPSBmYWxzZTsKKworCQkJfQorCQl9CisJCWNhdGNoIChOZXRBY2Nlc3NvckV4Y2VwdGlvbiBlKSB7CisKKwkJCXJlcyA9IGZhbHNlOworCisJCQllcnJTdHIuc2JYTUxDaENhdCgiRXJyb3IgYWNjZXNzaW5nIG5ldHdvcmsgVVJJPVwiIik7CisJCQllcnJTdHIuc2JYTUxDaENhdChyLT5nZXRVUkkoKSk7CisJCQllcnJTdHIuc2JYTUxDaENhdCgiXCIuICBSZWZlcmVuY2UgZmFpbGVkIHRvIHZlcmlmeVxuIik7CisKKwkJfQorCQljYXRjaCAoWFNFQ0V4Y2VwdGlvbiBlKSB7CisKKwkJCWlmIChlLmdldFR5cGUoKSAhPSBYU0VDRXhjZXB0aW9uOjpIVFRQVVJJSW5wdXRTdHJlYW1FcnJvcikKKwkJCQl0aHJvdzsKKworCQkJcmVzID0gZmFsc2U7CisKKwkJCWVyclN0ci5zYlhNTENoQ2F0KCJFcnJvciBhY2Nlc3NpbmcgbmV0d29yayBVUkk9XCIiKTsKKwkJCWVyclN0ci5zYlhNTENoQ2F0KHItPmdldFVSSSgpKTsKKwkJCWVyclN0ci5zYlhNTENoQ2F0KCJcIi4gIFJlZmVyZW5jZSBmYWlsZWQgdG8gdmVyaWZ5XG4iKTsKKworCQl9CisKKwkJLy8gaWYgYSBtYW5pZmVzdCwgY2hlY2sgdGhlIG1hbmlmZXN0IGxpc3QKKwkJaWYgKHItPmlzTWFuaWZlc3QoKSkKKwkJCXJlcyA9IHJlcyAmIHZlcmlmeVJlZmVyZW5jZUxpc3Qoci0+Z2V0TWFuaWZlc3RSZWZlcmVuY2VMaXN0KCksIGVyclN0cik7CisKKwl9CisKKwlyZXR1cm4gcmVzOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIHByb2Nlc3NUcmFuc2Zvcm1zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUWEZNQ2hhaW4gKiBEU0lHUmVmZXJlbmNlOjpjcmVhdGVUWEZNQ2hhaW5Gcm9tTGlzdChUWEZNQmFzZSAqIGlucHV0LAorCQkJCQkJCURTSUdUcmFuc2Zvcm1MaXN0ICogbHN0KSB7CisKKwlUWEZNQ2hhaW4gKiByZXQ7CisJWFNFQ25ldyhyZXQsIFRYRk1DaGFpbihpbnB1dCkpOworCisJaWYgKGxzdCA9PSBOVUxMKQorCQlyZXR1cm4gcmV0OworCisJSmFuaXRvcjxUWEZNQ2hhaW4+IGpfcmV0KHJldCk7CisKKwlEU0lHVHJhbnNmb3JtTGlzdDo6VHJhbnNmb3JtTGlzdFZlY3RvclR5cGU6OnNpemVfdHlwZSBzaXplLCBpOworCisJc2l6ZSA9IGxzdC0+Z2V0U2l6ZSgpOworCisJaWYgKHNpemUgPiAwKSB7CisKKwkJLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSBsaXN0CisKKwkJZm9yIChpID0gMDsgaSA8IHNpemU7ICsraSkgeworCisJCQlsc3QtPml0ZW0oaSktPmFwcGVuZFRyYW5zZm9ybWVyKHJldCk7CisKKwkJfQorCisJfQorCisJal9yZXQucmVsZWFzZSgpOworCXJldHVybiByZXQ7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBsb2FkVHJhbnNmb3JtcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRFNJR1RyYW5zZm9ybUxpc3QgKiBEU0lHUmVmZXJlbmNlOjpsb2FkVHJhbnNmb3JtcygKKwkJCQkJCQlET01Ob2RlICp0cmFuc2Zvcm1zTm9kZSwKKwkJCQkJCQlYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlciAqIGZvcm1hdHRlciwKKwkJCQkJCQljb25zdCBYU0VDRW52ICogZW52KSB7CisKKwkvLyBUaGlzIGlzIGRlZmluZWQgYXMgYSBzdGF0aWMgZnVuY3Rpb24sIG5vdCBiZWNhdXNlIGl0IG1ha2VzIHVzZSBvZiBhbnkgc3RhdGljIHZhcmlhYmxlcworCS8vIGluIHRoZSBEU0lHUmVmZXJlbmNlIGNsYXNzLCBidXQgdG8gbmVhdGx5IGxpbmsgaXQgdG8gdGhlIG90aGVyIHVzZXJzCisKKwlpZiAodHJhbnNmb3Jtc05vZGUgPT0gMCB8fCAoIXN0ckVxdWFscyhnZXREU0lHTG9jYWxOYW1lKHRyYW5zZm9ybXNOb2RlKSwgIlRyYW5zZm9ybXMiKSAmJgorCQkhc3RyRXF1YWxzKGdldFhFTkNMb2NhbE5hbWUodHJhbnNmb3Jtc05vZGUpLCAiVHJhbnNmb3JtcyIpKSkgeworCisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkRFNJR0NoaWxkTm90Rm91bmQsCisJCQkJCSJFeHBlY3RlZCA8VHJhbnNmb3Jtcz4gaW4gZnVuY3Rpb24gRFNJR1JlZmVyZW5jZTo6cHJvY2Vzc1RyYW5zZm9ybXMiKTsKKworCX0KKworCS8vIENyZWF0ZSB0aGUgbGlzdAorCURTSUdUcmFuc2Zvcm1MaXN0ICogbHN0OworCVhTRUNuZXcobHN0LCBEU0lHVHJhbnNmb3JtTGlzdCgpKTsKKwlKYW5pdG9yPERTSUdUcmFuc2Zvcm1MaXN0PiBqX2xzdChsc3QpOworCisJLy8gRmluZCBGaXJzdCB0cmFuc2Zvcm0KKworCURPTU5vZGUgKiB0cmFuc2Zvcm1zID0gdHJhbnNmb3Jtc05vZGUtPmdldEZpcnN0Q2hpbGQoKTsKKwl3aGlsZSAodHJhbnNmb3JtcyAhPSBOVUxMICYmIHRyYW5zZm9ybXMtPmdldE5vZGVUeXBlKCkgIT0gRE9NTm9kZTo6RUxFTUVOVF9OT0RFKQorCQl0cmFuc2Zvcm1zID0gdHJhbnNmb3Jtcy0+Z2V0TmV4dFNpYmxpbmcoKTsKKworCXdoaWxlICh0cmFuc2Zvcm1zICE9IE5VTEwpIHsKKworCQkvLyBQcm9jZXNzIGVhY2ggdHJhbnNmb3JtIGluIHR1cm4KKwkJaWYgKCFzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZSh0cmFuc2Zvcm1zKSwgIlRyYW5zZm9ybSIpKSB7CisKKwkJCS8vIE5vdCB3aGF0IHdlIGV4cGVjdGVkIHRvIHNlZSEKKwkJCXNhZmVCdWZmZXIgdG1wLCBlcnJvcjsKKworCQkJZXJyb3IgPDwgKCpmb3JtYXR0ZXIgPDwgZ2V0RFNJR0xvY2FsTmFtZSh0cmFuc2Zvcm1zKSk7CisJCQl0bXAuc2JTdHJjcHlJbigiVW5rbm93biBhdHRyaWJ1dGUgaW4gPFRyYW5zZm9ybXM+IC0gRXhwZWN0ZWQgPFRyYW5zZm9ybT4gZm91bmQgIik7CisJCQl0bXAuc2JTdHJjYXRJbihlcnJvcik7CisJCQl0bXAuc2JTdHJjYXRJbigiPi4iKTsKKworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZERTSUdDaGlsZE5vdEZvdW5kLCBlcnJvci5yYXdDaGFyQnVmZmVyKCkpOworCisJCX0KKworCQlET01OYW1lZE5vZGVNYXAgKiB0cmFuc2Zvcm1BdHRzID0gdHJhbnNmb3Jtcy0+Z2V0QXR0cmlidXRlcygpOworCisJCXVuc2lnbmVkIGludCBpOworCisJCWZvciAoaSA9IDA7IGkgPCB0cmFuc2Zvcm1BdHRzLT5nZXRMZW5ndGgoKSAmJgorCQkJCSFzdHJFcXVhbHModHJhbnNmb3JtQXR0cy0+aXRlbShpKS0+Z2V0Tm9kZU5hbWUoKSwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyQWxnb3JpdGhtKTsgKytpKTsKKworCQlpZiAoaSA9PSB0cmFuc2Zvcm1BdHRzLT5nZXRMZW5ndGgoKSkgeworCisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkRFNJR0NoaWxkTm90Rm91bmQsCisJCQkJIkFsZ29yaXRobSBhdHRyaWJ1dGUgbm90IGZvdW5kIGluIDxUcmFuc2Zvcm0+IGVsZW1lbnQiKTsKKworCQl9CisKKwkJc2FmZUJ1ZmZlciBhbGdvcml0aG07CisJCWFsZ29yaXRobSA8PCAoKmZvcm1hdHRlciA8PCB0cmFuc2Zvcm1BdHRzLT5pdGVtKGkpLT5nZXROb2RlVmFsdWUoKSk7CisKKwkJLy8gRGV0ZXJtaW5lIHdoYXQgdGhlIHRyYW5zZm9ybSBpcworCisJCWlmIChhbGdvcml0aG0uc2JTdHJjbXAoVVJJX0lEX0JBU0U2NCkgPT0gMCkgeworCisJCQlEU0lHVHJhbnNmb3JtQmFzZTY0ICogYjsKKwkJCVhTRUNuZXcoYiwgRFNJR1RyYW5zZm9ybUJhc2U2NChlbnYsIHRyYW5zZm9ybXMpKTsKKwkJCWxzdC0+YWRkVHJhbnNmb3JtKGIpOworCQkJYi0+bG9hZCgpOworCQl9CisKKwkJZWxzZSBpZiAoYWxnb3JpdGhtLnNiU3RyY21wKFVSSV9JRF9YUEFUSCkgPT0gMCkgeworCisJCQlEU0lHVHJhbnNmb3JtWFBhdGggKiB4OworCQkJWFNFQ25ldyh4LCBEU0lHVHJhbnNmb3JtWFBhdGgoZW52LCB0cmFuc2Zvcm1zKSk7CisJCQlsc3QtPmFkZFRyYW5zZm9ybSh4KTsKKwkJCXgtPmxvYWQoKTsKKwkJfQorCisJCWVsc2UgaWYgKGFsZ29yaXRobS5zYlN0cmNtcChVUklfSURfWFBGKSA9PSAwKSB7CisKKwkJCURTSUdUcmFuc2Zvcm1YUGF0aEZpbHRlciAqIHhwZjsKKworCQkJWFNFQ25ldyh4cGYsIERTSUdUcmFuc2Zvcm1YUGF0aEZpbHRlcihlbnYsIHRyYW5zZm9ybXMpKTsKKwkJCWxzdC0+YWRkVHJhbnNmb3JtKHhwZik7CisJCQl4cGYtPmxvYWQoKTsKKworCQl9CisKKwkJZWxzZSBpZiAoYWxnb3JpdGhtLnNiU3RyY21wKFVSSV9JRF9FTlZFTE9QRSkgPT0gMCkgeworCisJCQlEU0lHVHJhbnNmb3JtRW52ZWxvcGUgKiBlOworCQkJWFNFQ25ldyhlLCBEU0lHVHJhbnNmb3JtRW52ZWxvcGUoZW52LCB0cmFuc2Zvcm1zKSk7CisJCQlsc3QtPmFkZFRyYW5zZm9ybShlKTsKKwkJCWUtPmxvYWQoKTsKKwkJfQorCisJCWVsc2UgaWYgKGFsZ29yaXRobS5zYlN0cmNtcChVUklfSURfWFNMVCkgPT0gMCkgeworCisJCQlEU0lHVHJhbnNmb3JtWFNMICogeDsKKwkJCVhTRUNuZXcoeCwgRFNJR1RyYW5zZm9ybVhTTChlbnYsIHRyYW5zZm9ybXMpKTsKKwkJCWxzdC0+YWRkVHJhbnNmb3JtKHgpOworCQkJeC0+bG9hZCgpOworCisJCX0KKworCisJCWVsc2UgaWYgKGFsZ29yaXRobS5zYlN0cmNtcChVUklfSURfQzE0Tl9DT00pID09IDAgfHwKKwkJCSAgICAgYWxnb3JpdGhtLnNiU3RyY21wKFVSSV9JRF9DMTROX05PQykgPT0gMCB8fAorCQkJICAgICBhbGdvcml0aG0uc2JTdHJjbXAoVVJJX0lEX0MxNE4xMV9DT00pID09IDAgfHwKKyAgICAgICAgICAgICAgICAgYWxnb3JpdGhtLnNiU3RyY21wKFVSSV9JRF9DMTROMTFfTk9DKSA9PSAwIHx8CisJCQkJIGFsZ29yaXRobS5zYlN0cmNtcChVUklfSURfRVhDX0MxNE5fQ09NKSA9PSAwIHx8CisJCQkJIGFsZ29yaXRobS5zYlN0cmNtcChVUklfSURfRVhDX0MxNE5fTk9DKSA9PSAwKSB7CisKKwkJCURTSUdUcmFuc2Zvcm1DMTRuICogYzsKKwkJCVhTRUNuZXcoYywgRFNJR1RyYW5zZm9ybUMxNG4oZW52LCB0cmFuc2Zvcm1zKSk7CisJCQlsc3QtPmFkZFRyYW5zZm9ybShjKTsKKwkJCWMtPmxvYWQoKTsKKworCQl9CisKKwkJZWxzZSB7CisKKwkJCS8vIE5vdCB3aGF0IHdlIGV4cGVjdGVkIHRvIHNlZSEKKwkJCXNhZmVCdWZmZXIgdG1wOworCisJCQl0bXAuc2JTdHJjcHlJbigiVW5rbm93biB0cmFuc2Zvcm0gOiAiKTsKKwkJCXRtcC5zYlN0cmNhdEluKGFsZ29yaXRobSk7CisJCQl0bXAuc2JTdHJjYXRJbigiIGZvdW5kLiIpOworCisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlVua25vd25UcmFuc2Zvcm0sIHRtcC5yYXdDaGFyQnVmZmVyKCkpOworCQl9CisKKwkJLy8gTm93IGZpbmQgbmV4dCBlbGVtZW50CisKKwkJdHJhbnNmb3JtcyA9IHRyYW5zZm9ybXMtPmdldE5leHRTaWJsaW5nKCk7CisJCXdoaWxlICh0cmFuc2Zvcm1zICE9IE5VTEwgJiYgdHJhbnNmb3Jtcy0+Z2V0Tm9kZVR5cGUoKSAhPSBET01Ob2RlOjpFTEVNRU5UX05PREUpCisJCQl0cmFuc2Zvcm1zID0gdHJhbnNmb3Jtcy0+Z2V0TmV4dFNpYmxpbmcoKTsKKworCX0gLyogd2hpbGUgKHRyYW5zZm9ybXMgIT0gTlVMTCkgKi8KKworCWpfbHN0LnJlbGVhc2UoKTsKKwlyZXR1cm4gbHN0OworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFNldCBoYXNoCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIERTSUdSZWZlcmVuY2U6OnNldEhhc2godm9pZCkgeworCisJLy8gRmlyc3QgZGV0ZXJtaW5lIHRoZSBoYXNoIHZhbHVlCisJWE1MQnl0ZSBjYWxjdWxhdGVkSGFzaFZhbFtDUllQVE9fTUFYX0hBU0hfU0laRV07CS8vIFRoZSBoYXNoIHRoYXQgd2UgZGV0ZXJtaW5lZAorCXVuc2lnbmVkIGludCBjYWxjdWxhdGVkSGFzaExlbjsKKwlYTUxCeXRlIGJhc2U2NEhhc2ggW0NSWVBUT19NQVhfSEFTSF9TSVpFICogMl07CisJdW5zaWduZWQgaW50IGJhc2U2NEhhc2hMZW47CisKKwljYWxjdWxhdGVkSGFzaExlbiA9IGNhbGN1bGF0ZUhhc2goY2FsY3VsYXRlZEhhc2hWYWwsIENSWVBUT19NQVhfSEFTSF9TSVpFKTsKKworCS8vIENhbGN1bGF0ZSB0aGUgYmFzZTY0IHZhbHVlCisKKwlYU0VDQ3J5cHRvQmFzZTY0ICoJYjY0ID0gWFNFQ1BsYXRmb3JtVXRpbHM6OmdfY3J5cHRvUHJvdmlkZXItPmJhc2U2NCgpOworCisJaWYgKCFiNjQpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkNyeXB0b1Byb3ZpZGVyRXJyb3IsCisJCQkJIkVycm9yIHJlcXVlc3RpbmcgQmFzZTY0IG9iamVjdCBmcm9tIENyeXB0byBQcm92aWRlciIpOworCisJfQorCisJSmFuaXRvcjxYU0VDQ3J5cHRvQmFzZTY0PiBqX2I2NChiNjQpOworCisJYjY0LT5lbmNvZGVJbml0KCk7CisJYmFzZTY0SGFzaExlbiA9IGI2NC0+ZW5jb2RlKGNhbGN1bGF0ZWRIYXNoVmFsLAorCQkJCQkJCQljYWxjdWxhdGVkSGFzaExlbiwKKwkJCQkJCQkJYmFzZTY0SGFzaCwKKwkJCQkJCQkJQ1JZUFRPX01BWF9IQVNIX1NJWkUgKiAyKTsKKwliYXNlNjRIYXNoTGVuICs9IGI2NC0+ZW5jb2RlRmluaXNoKCZiYXNlNjRIYXNoW2Jhc2U2NEhhc2hMZW5dLAorCQkJCQkJCQkJCShDUllQVE9fTUFYX0hBU0hfU0laRSAqIDIpIC0gYmFzZTY0SGFzaExlbik7CisKKwkvLyBFbnN1cmUgdGhlIHN0cmluZyBpcyB0ZXJtaW5hdGVkCisJaWYgKGJhc2U2NEhhc2hbYmFzZTY0SGFzaExlbi0xXSA9PSAnXG4nKQorCQliYXNlNjRIYXNoW2Jhc2U2NEhhc2hMZW4tMV0gPSAnXDAnOworCWVsc2UKKwkJYmFzZTY0SGFzaFtiYXNlNjRIYXNoTGVuXSA9ICdcMCc7CisKKwkvLyBOb3cgZmluZCB0aGUgY29ycmVjdCB0ZXh0IG5vZGUgdG8gcmUtc2V0CisKKwlET01Ob2RlICp0bXBFbHQgPSBtcF9oYXNoVmFsdWVOb2RlOworCisJaWYgKG1wX2hhc2hWYWx1ZU5vZGUgPT0gMCkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Tm90TG9hZGVkLAorCQkJInNldEhhc2goKSBjYWxsZWQgaW4gRFNJR1JlZmVyZW5jZSBiZWZvcmUgbG9hZCgpIik7CisKKwl9CisKKwl0bXBFbHQgPSBtcF9oYXNoVmFsdWVOb2RlLT5nZXRGaXJzdENoaWxkKCk7CisKKwl3aGlsZSAodG1wRWx0ICE9IE5VTEwgJiYgdG1wRWx0LT5nZXROb2RlVHlwZSgpICE9IERPTU5vZGU6OlRFWFRfTk9ERSkKKwkJdG1wRWx0ID0gdG1wRWx0LT5nZXROZXh0U2libGluZygpOworCisJaWYgKHRtcEVsdCA9PSBOVUxMKSB7CisJCS8vIE5lZWQgdG8gY3JlYXRlIHRoZSB1bmRlcmx5aW5nIFRFWFRfTk9ERQorCQlET01Eb2N1bWVudCAqZG9jID0gbXBfcmVmZXJlbmNlTm9kZS0+Z2V0T3duZXJEb2N1bWVudCgpOworCQl0bXBFbHQgPSBkb2MtPmNyZWF0ZVRleHROb2RlKE1BS0VfVU5JQ09ERV9TVFJJTkcoKGNoYXIgKikgYmFzZTY0SGFzaCkpOworCQltcF9oYXNoVmFsdWVOb2RlLT5hcHBlbmRDaGlsZCh0bXBFbHQpOworCX0KKwllbHNlIHsKKwkJdG1wRWx0LT5zZXROb2RlVmFsdWUoTUFLRV9VTklDT0RFX1NUUklORygoY2hhciAqKSBiYXNlNjRIYXNoKSk7CisJfQorCit9CisKKworCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ3JlYXRlIGhhc2gKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3Vuc2lnbmVkIGludCBEU0lHUmVmZXJlbmNlOjpjYWxjdWxhdGVIYXNoKFhNTEJ5dGUgKnRvRmlsbCwgdW5zaWduZWQgaW50IG1heFRvRmlsbCkgeworCisJLy8gRGV0ZXJtaW5lIHRoZSBoYXNoIHZhbHVlIG9mIHRoZSBlbGVtZW50CisKKwkvLyBGaXJzdCBzZXQgdXAgZm9yIGlucHV0CisKKwlUWEZNQmFzZSAqIGN1cnJlbnRUeGZtOworCVRYRk1DaGFpbiAqIGNoYWluOworCisJdW5zaWduZWQgaW50IHNpemU7CisKKwlpZiAobV9sb2FkZWQgPT0gZmFsc2UpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246Ok5vdExvYWRlZCwKKwkJCSJjYWxjdWxhdGVIYXNoKCkgY2FsbGVkIGluIERTSUdSZWZlcmVuY2UgYmVmb3JlIGxvYWQoKSIpOworCisJfQorCisJLy8gRmluZCBiYXNlIHRyYW5zZm9ybQorCWN1cnJlbnRUeGZtID0gZ2V0VVJJQmFzZVRYRk0obXBfcmVmZXJlbmNlTm9kZS0+Z2V0T3duZXJEb2N1bWVudCgpLCBtcF9VUkksCisJCW1wX2Vudik7CisKKwkvLyBOb3cgYnVpbGQgdGhlIHRyYW5zZm9ybXMgbGlzdAorCS8vIE5vdGUgdGhpcyBwYXNzZXMgb3duZXJzaGlwIG9mIGN1cnJlbnRUeGZtIHRvIHRoZSBmdW5jdGlvbiwgc28gaXQgaXMgdGhlCisJLy8gcmVzcG9uc2liaWxpdHkgb2YgY3JlYXRlVFhGTUNoYWluIHRvIGVuc3VyZSBpdCBnZXRzIGRlbGV0ZWQgaWYgdGhpcyB0aHJvd3MuCisKKwljaGFpbiA9IGNyZWF0ZVRYRk1DaGFpbkZyb21MaXN0KGN1cnJlbnRUeGZtLCBtcF90cmFuc2Zvcm1MaXN0KTsKKwlKYW5pdG9yPFRYRk1DaGFpbj4gal9jaGFpbihjaGFpbik7CisKKwlET01Eb2N1bWVudCAqZCA9IG1wX3JlZmVyZW5jZU5vZGUtPmdldE93bmVyRG9jdW1lbnQoKTsKKworCS8vIEFsbCB0cmFuc2Zvcm1zIGRvbmUuICBJZiBuZWNlc3NhcnksIGNoYW5nZSB0aGUgdHlwZSBmcm9tIG5vZGVzIHRvIGJ5dGVzCisKKwlpZiAoY2hhaW4tPmdldExhc3RUeGZtKCktPmdldE91dHB1dFR5cGUoKSA9PSBUWEZNQmFzZTo6RE9NX05PREVTKSB7CisKKwkJVFhGTUMxNG4gKiBjMTRuOworCQlYU0VDbmV3KGMxNG4sIFRYRk1DMTRuKGQpKTsKKwkJY2hhaW4tPmFwcGVuZFR4Zm0oYzE0bik7CisKKwl9CisKKwkvLyBDaGVjayB0byBzZWUgaWYgdGhlcmUgaXMgYSBmaW5hbCAiYXBwbGljYXRpb24iIHRyYW5zZm9ybSBwcmlvciB0byB0aGUgaGFzaAorCisJaWYgKG1wX3ByZUhhc2ggIT0gTlVMTCkgeworCisJCWNoYWluLT5hcHBlbmRUeGZtKG1wX3ByZUhhc2gpOworCQltcF9wcmVIYXNoID0gTlVMTDsJLy8gQ2FuJ3QgYmUgcmUtdXNlZAorCisJfQorCisgICAgLy8gQ2hlY2sgZm9yIGRlYnVnZ2luZyBzaW5rIGZvciB0aGUgZGF0YQorICAgIFRYRk1CYXNlKiBzaW5rID0gWFNFQ1BsYXRmb3JtVXRpbHM6OkdldFJlZmVyZW5jZUxvZ2dpbmdTaW5rKGQpOworICAgIGlmIChzaW5rKQorICAgICAgICBjaGFpbi0+YXBwZW5kVHhmbShzaW5rKTsKKworCisJLy8gR2V0IHRoZSBtYXBwaW5nIGZvciB0aGUgaGFzaCB0cmFuc2Zvcm0KKworCVhTRUNBbGdvcml0aG1IYW5kbGVyICogaGFuZGxlciA9CisJCVhTRUNQbGF0Zm9ybVV0aWxzOjpnX2FsZ29yaXRobU1hcHBlci0+bWFwVVJJVG9IYW5kbGVyKG1wX2FsZ29yaXRobVVSSSk7CisKKwlpZiAoaGFuZGxlciA9PSBOVUxMKSB7CisKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlNpZ1ZmeUVycm9yLAorCQkJIkhhc2ggbWV0aG9kIHVua25vd24gaW4gRFNJR1JlZmVyZW5jZTo6Y2FsY3VsYXRlSGFzaCgpIik7CisKKwl9CisKKwlpZiAoIWhhbmRsZXItPmFwcGVuZEhhc2hUeGZtKGNoYWluLCBtcF9hbGdvcml0aG1VUkkpKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpTaWdWZnlFcnJvciwKKwkJCSJVbmV4cGVjdGVkIGVycm9yIGluIGhhbmRsZXIgd2hpbHN0IGFwcGVuZGluZyBIYXNoIHRyYW5zZm9ybSIpOworCisJfQorCisJLy8gTm93IHdlIGhhdmUgdGhlIGhhc2hpbmcgdHJhbnNmb3JtLCBydW4gaXQuCisKKwlzaXplID0gY2hhaW4tPmdldExhc3RUeGZtKCktPnJlYWRCeXRlcyh0b0ZpbGwsIG1heFRvRmlsbCk7CisKKwkvLyBDbGVhbiBvdXQgZG9jdW1lbnQgaWYgbmVjZXNzYXJ5CisJY2hhaW4tPmdldExhc3RUeGZtKCktPmRlbGV0ZUV4cGFuZGVkTmFtZVNwYWNlcygpOworCisJcmV0dXJuIHNpemU7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBSZWFkIGhhc2gKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3Vuc2lnbmVkIGludCBEU0lHUmVmZXJlbmNlOjpyZWFkSGFzaChYTUxCeXRlICp0b0ZpbGwsIHVuc2lnbmVkIGludCBtYXhUb0ZpbGwpIHsKKworCS8vIERldGVybWluZSB0aGUgaGFzaCB2YWx1ZSBzdG9yZWQgaW4gdGhlIHJlZmVyZW5jZQorCisJLy8gRmlyc3Qgc2V0IHVwIGZvciBpbnB1dAorCisJdW5zaWduZWQgaW50IHNpemU7CisJRE9NTm9kZSAqdG1wRWx0OworCS8vY29uc3QgWE1MQ2ggKiBzdHJpbmdIYXNoOworCisJVFhGTUJhc2UgKiBuZXh0SW5wdXQ7CisKKwlET01Eb2N1bWVudCAqZCA9IG1wX3JlZmVyZW5jZU5vZGUtPmdldE93bmVyRG9jdW1lbnQoKTsKKworCXNhZmVCdWZmZXIgYjY0SGFzaFZhbDsKKworCS8vIEZpbmQgdGhlIGhhc2ggdmFsdWUKKworCXRtcEVsdCA9IG1wX3JlZmVyZW5jZU5vZGUtPmdldEZpcnN0Q2hpbGQoKTsKKworCXdoaWxlICh0bXBFbHQgIT0gMCAmJiAhc3RyRXF1YWxzKGdldERTSUdMb2NhbE5hbWUodG1wRWx0KSwgIkRpZ2VzdFZhbHVlIikpCisJCXRtcEVsdCA9IHRtcEVsdC0+Z2V0TmV4dFNpYmxpbmcoKTsKKworCWlmICh0bXBFbHQgPT0gTlVMTCkKKwkJLy8gRVJST1IKKwkJcmV0dXJuIDA7CisKKwkvLyBOb3cgcmVhZCB0aGUgRE9NU3RyaW5nIG9mIHRoZSBoYXNoCisKKwl0bXBFbHQgPSB0bXBFbHQtPmdldEZpcnN0Q2hpbGQoKTsKKwl3aGlsZSAodG1wRWx0ICE9IE5VTEwgJiYgdG1wRWx0LT5nZXROb2RlVHlwZSgpICE9IERPTU5vZGU6OlRFWFRfTk9ERSkKKwkJdG1wRWx0ID0gdG1wRWx0LT5nZXROZXh0U2libGluZygpOworCisJaWYgKHRtcEVsdCA9PSBOVUxMKQorCQkvLyBTb21ldGhpbmcgd3Jvbmcgd2l0aCB0aGUgdW5kZXJseWluZyBYTUwgaWYgbm8gdGV4dCB3YXMgZm91bmQKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpOb0hhc2hGb3VuZEluRGlnZXN0VmFsdWUpOworCisJYjY0SGFzaFZhbCA8PCAoKm1wX2Zvcm1hdHRlciA8PCB0bXBFbHQtPmdldE5vZGVWYWx1ZSgpKTsKKworCS8vIE5vdyBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgc3RyaW5nIC0gY3JlYXRlIGEgdHJhbnNmb3JtIGFyb3VuZCBpdAorCisJWFNFQ25ldyhuZXh0SW5wdXQsIFRYRk1TQihkKSk7CisJKChUWEZNU0IgKikgbmV4dElucHV0KS0+c2V0SW5wdXQoYjY0SGFzaFZhbCk7CisKKwkvLyBDcmVhdGUgYSB0cmFuc2Zvcm0gY2hhaW4gKHJlYWxseSBhcyBhIGphbml0b3IgZm9yIHRoZSBlbnRpcmUgbGlzdCkKKwlUWEZNQ2hhaW4gKiBjaGFpbjsKKwlYU0VDbmV3KGNoYWluLCBUWEZNQ2hhaW4obmV4dElucHV0KSk7CisJSmFuaXRvcjxUWEZNQ2hhaW4+IGpfY2hhaW4oY2hhaW4pOworCisJLy8gTm93IGNyZWF0ZSB0aGUgYmFzZTY0IHRyYW5zZm9ybQorCisJWFNFQ25ldyhuZXh0SW5wdXQsIFRYRk1CYXNlNjQoZCkpOworCWNoYWluLT5hcHBlbmRUeGZtKG5leHRJbnB1dCk7CisKKwkvLyBOb3cgZ2V0IHRoZSB2YWx1ZQorCisJc2l6ZSA9IGNoYWluLT5nZXRMYXN0VHhmbSgpLT5yZWFkQnl0ZXModG9GaWxsLCBtYXhUb0ZpbGwpOworCisJLy8gQ2xlYXIgYW55IGRvY3VtZW50YXQgbW9kaWZpY2F0aW9ucworCisJY2hhaW4tPmdldExhc3RUeGZtKCktPmRlbGV0ZUV4cGFuZGVkTmFtZVNwYWNlcygpOworCisJcmV0dXJuIHNpemU7CisKK30KKworCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ2hlY2sgYSByZWZlcmVuY2UKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Jvb2wgRFNJR1JlZmVyZW5jZTo6Y2hlY2tIYXNoKCkgeworCisJLy8gRGV0ZXJtaW5lIHRoZSBoYXNoIHZhbHVlIG9mIHRoZSBlbGVtZW50IGFuZCBjaGVjayBpZiBtYXRjaGVzIHRoYXQgc3RvcmVkIGluIHRoZQorCS8vIERpZ2VzdFZhbHVlIHBhcnQgb2YgdGhlIGVsZW1lbnQKKworCS8vIEZpcnN0IHNldCB1cCBmb3IgaW5wdXQKKworCVhNTEJ5dGUgY2FsY3VsYXRlZEhhc2hWYWxbQ1JZUFRPX01BWF9IQVNIX1NJWkVdOwkJLy8gVGhlIGhhc2ggdGhhdCB3ZSBkZXRlcm1pbmVkCisJWE1MQnl0ZSByZWFkSGFzaFZhbFtDUllQVE9fTUFYX0hBU0hfU0laRV07CQkJLy8gVGhlIGhhc2ggaW4gdGhlIGVsZW1lbnQKKworCXVuc2lnbmVkIGludCBjYWxjdWxhdGVkSGFzaFNpemUsIGk7CisKKwlpZiAoKGNhbGN1bGF0ZWRIYXNoU2l6ZSA9IGNhbGN1bGF0ZUhhc2goY2FsY3VsYXRlZEhhc2hWYWwsIENSWVBUT19NQVhfSEFTSF9TSVpFKSkgPT0gMCkKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKHJlYWRIYXNoKHJlYWRIYXNoVmFsLCBDUllQVE9fTUFYX0hBU0hfU0laRSkgIT0gY2FsY3VsYXRlZEhhc2hTaXplKQorCQlyZXR1cm4gZmFsc2U7CisKKwlmb3IgKGkgPSAwOyBpIDwgY2FsY3VsYXRlZEhhc2hTaXplOyArK2kpIHsKKwkJaWYgKGNhbGN1bGF0ZWRIYXNoVmFsW2ldICE9IHJlYWRIYXNoVmFsW2ldKQorCQkJcmV0dXJuIGZhbHNlOworCisJfQorCisJLy8gR290IHRocm91Z2ggd2l0aCBmbHlpbmcgY29sb3VycyEKKwlyZXR1cm4gdHJ1ZTsKKworfQorCisKKworCisKZGlmZiAtLWdpdCBhL2Mvc3JjL2RzaWcvRFNJR1JlZmVyZW5jZS5ocHAgYi9jL3NyYy9kc2lnL0RTSUdSZWZlcmVuY2UuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5YmJhOGMKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9kc2lnL0RTSUdSZWZlcmVuY2UuaHBwCkBAIC0wLDAgKzEsNTc2IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBEU0lHX1JlZmVyZW5jZSA6PSBDbGFzcyBmb3IgY2hlY2tpbmcgYW5kIHNldHRpbmcgdXAgcmVmZXJlbmNlIG5vZGVzIGluIGEgRFNJRyBzaWduYXR1cmUKKyAqCisgKiAkSWQkCisgKgkJCQkJIAorICovCisKKy8vIEhpZ2ggbGV2ZWwgaW5jbHVkZQorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKworLy8gWGVyY2VzIElOY2x1ZGVzCisKKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvZG9tL0RPTU5hbWVkTm9kZU1hcC5ocHA+CisKKy8vIFhTRUMgSW5jbHVkZXMKKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNTYWZlQnVmZmVyRm9ybWF0dGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1RyYW5zZm9ybS5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdSZWZlcmVuY2VMaXN0LmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0NvbnN0YW50cy5ocHA+CisKK2NsYXNzIERTSUdUcmFuc2Zvcm1MaXN0OworY2xhc3MgRFNJR1RyYW5zZm9ybUJhc2U2NDsKK2NsYXNzIERTSUdUcmFuc2Zvcm1DMTRuOworY2xhc3MgRFNJR1RyYW5zZm9ybUVudmVsb3BlOworY2xhc3MgRFNJR1RyYW5zZm9ybVhQYXRoOworY2xhc3MgRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyOworY2xhc3MgRFNJR1RyYW5zZm9ybVhTTDsKK2NsYXNzIERTSUdTaWduYXR1cmU7CisKK2NsYXNzIFRYRk1CYXNlOworY2xhc3MgVFhGTUNoYWluOworY2xhc3MgWFNFQ0JpblRYRk1JbnB1dFN0cmVhbTsKK2NsYXNzIFhTRUNVUklSZXNvbHZlcjsKK2NsYXNzIFhTRUNFbnY7CisKKy8qKgorICogQGluZ3JvdXAgcHVic2lnCisgKi8KKworLyoqCisgKiBAYnJpZWYgVGhlIGNsYXNzIHVzZWQgZm9yIG1hbmlwdWxhdGluZyBSZWZlcmVuY2UgRWxlbWVudHMgd2l0aGluIGEgc2lnbmF0dXJlLgorICoKKyAqIDxwPlRoZSBEU0lHUmVmZXJlbmNlIGNsYXNzIGNyZWF0ZXMgYW5kIG1hbmlwdWxhdGVzIChpbmNsdWRpbmcgaGFzaGluZyBhbmQgdmFsaWRhdGluZykKKyAqIFw8UmVmZXJlbmNlXD4gZWxlbWVudHMuPC9wPgorICoKKyAqLworCitjbGFzcyBEU0lHX0VYUE9SVCBEU0lHUmVmZXJlbmNlIHsKKworcHVibGljOgorCisgICAgLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKyAgICAvL0B7CisJCisgICAgLyoqCisJICogXGJyaWVmIENvbnRydWN0b3IgZm9yIHVzZSB3aXRoIGV4aXN0aW5nIFhNTCBzaWduYXR1cmVzIG9yIHRlbXBsYXRlcy4KKwkgKgorCSAqIDxwPkNyZWF0ZSBhIERTSUdSZWZlcmVuY2Ugb2JqZWN0IGJhc2VkIG9uIGFuIGFscmVhZHkgZXhpc3RpbmcKKwkgKiBEU0lHIFJlZmVyZW5jZSBYTUwgbm9kZS4gIEl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgdW5kZXJseWluZworCSAqIERPTSBzdHJ1Y3R1cmUgaXMgaW4gcGxhY2UgYW5kIHdvcmtzIGNvcnJlY3RseS48L3A+CisJICoKKwkgKiBAbm90ZSBEU0lHUmVmZXJlbmNlIHN0cnVjdHVyZXMgc2hvdWxkIG9ubHkgZXZlciBiZSBjcmVhdGVkIHZpYSBjYWxscyB0byBhCisJICogRFNJR1NpZ25hdHVyZSBvYmplY3QuCisJICoKKwkgKiBAcGFyYW0gZW52IFRoZSBvcGVyYXRpbmcgZW52aXJvbm1lbnQgaW4gd2hpY2ggdGhlIFJlZmVyZW5jZSBpcyBvcGVyYXRpbmcKKwkgKiBAcGFyYW0gZG9tIFRoZSBET00gbm9kZSAod2l0aGluIGRvYykgdGhhdCBpcyB0byBiZSB1c2VkIGFzIHRoZSBiYXNlIG9mIHRoZSByZWZlcmVuY2UuCisJICogQHNlZSAjbG9hZAorCSAqIEBzZWUgRFNJR1NpZ25hdHVyZSNjcmVhdGVSZWZlcmVuY2UKKwkgKi8KKworCURTSUdSZWZlcmVuY2UoY29uc3QgWFNFQ0VudiAqIGVudiwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUgKmRvbSk7CisKKyAgICAvKioKKwkgKiBcYnJpZWYgQ29udHJ1Y3RvciBmb3IgdXNlIHdoZW4gY3JlYXRpbmcgbmV3IFJlZmVyZW5jZSBzdHJ1Y3R1cmVzLgorCSAqCisJICogPHA+Q3JlYXRlIGEgRFNJR1JlZmVyZW5jZSBvYmplY3QgdGhhdCBjYW4gbGF0ZXIgYmUgdXNlZCB0byBjcmVhdGUKKwkgKiBhIG5ldyBSZWZlcmVuY2Ugc3RydWN0dXJlIGluIHRoZSBET00gZG9jdW1lbnQuPC9wPgorCSAqCisJICogQG5vdGUgRFNJR1JlZmVyZW5jZSBzdHJ1Y3R1cmVzIHNob3VsZCBvbmx5IGV2ZXIgYmUgY3JlYXRlZCB2aWEgY2FsbHMgdG8gYQorCSAqIERTSUdTaWduYXR1cmUgb2JqZWN0LgorCSAqCisJICogQHBhcmFtIGVudiBUaGUgZW52aXJvbm1lbnQgb2JqZWN0IGZvciB0aGlzIHJlZmVyZW5jZS4KKwkgKiBAc2VlICNsb2FkCisJICogQHNlZSBEU0lHU2lnbmF0dXJlI2NyZWF0ZVJlZmVyZW5jZQorCSAqLworCQorCURTSUdSZWZlcmVuY2UoY29uc3QgWFNFQ0VudiAqIGVudik7CisKKwkvKioKKwkgKiBcYnJpZWYgRGVzdHJ1Y3Rvci4KKwkgKgorCSAqIEBub3RlIERvZXMgbm90IGltcGFjdCBhbnkgY3JlYXRlZCBET00gc3RydWN0dXJlcyB3aGVuIGRlc3Ryb3llZC4KKwkgKgorCSAqIEBub3RlIERTSUdSZWZlcmVuY2VzIHNob3VsZCA8ZW0+bmV2ZXI8L2VtPiBiZSBkZXN0cm95ZWQvZGVsZXRlZCBieQorCSAqIGFwcGxpY2F0aW9ucy4gIFRoZXkgYXJlIG93bmVkIGFuZCBtYW5hZ2VkIGJ5IERTSUdTaWduYXR1cmUgc3RydWN0dXJlcy4KKwkgKi8KKworCX5EU0lHUmVmZXJlbmNlKCk7CisKKwkvL0B9CisKKyAgICAvKiogQG5hbWUgUmVmZXJlbmNlIENvbnN0cnVjdGlvbiBhbmQgTWFuaXB1bGF0aW9uICovCisgICAgLy9AeworCisJLyoqCisJICogXGJyaWVmIExvYWQgYSBEU0lHUmVmZXJlbmNlIGZyb20gYW4gZXhpc3RpbmcgRE9NIHN0cnVjdHVyZS4KKwkgKgorCSAqIDxwPlRoaXMgZnVuY3Rpb24gd2lsbCBsb2FkIGEgUmVmZXJlbmNlIHN0cnVjdHVyZSBmcm9tIHRoZSBvd25lcgorCSAqIGRvY3VtZW50LjwvcD4KKwkgKgorCSAqLworCQorCXZvaWQgbG9hZCgpOworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIFJlZmVyZW5jZSBzdHJ1Y3R1cmUgaW4gdGhlIGRvY3VtZW50LgorCSAqCisJICogPHA+VGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0ZSBhIFJlZmVyZW5jZSBzdHJ1Y3R1cmUgaW4gdGhlIG93bmVyCisJICogZG9jdW1lbnQuICBJbiBzb21lIGNhc2VzLCBhIGNhbGwgdG8gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHN1ZmZpY2llbnQKKwkgKiB0byBwdXQgdGhlIHJlcXVpcmVkIFJlZmVyZW5jZSBpbiBwbGFjZS4gIEluIG90aGVyIGNhc2VzLCBjYWxscyB3aWxsCisJICogYWxzbyBuZWVkIHRvIGJlIG1hZGUgdG8gdGhlIHZhcmlvdXMgYXBwZW5kKlRyYW5zZm9ybSBtZXRob2RzLjwvcD4KKwkgKgorCSAqIEBub3RlIFRoZSBYU0VDIExpYnJhcnkgY3VycmVudGx5IG1ha2VzIHZlcnkgbGl0dGxlIHVzZSBvZiA8ZW0+dHlwZTwvZW0+CisJICogYXR0cmlidXRlcyBpbiBcPFJlZmVyZW5jZVw+IEVsZW1lbnRzLiAgSG93ZXZlciB0aGlzIG1heSBvZiB1c2UgdG8gY2FsbGluZworCSAqIGFwcGxpY2F0aW9ucy4KKwkgKgorCSAqIEBwYXJhbSBVUkkgVGhlIFVSSSAoZGF0YSBzb3VyY2UpIGZvciB0aGlzIHJlZmVyZW5jZS4gIFNldCB0byBOVUxMIGZvcgorCSAqIGFuIGFub255bW91cyByZWZlcmVuY2UuCisJICogQHBhcmFtIGhtIFRoZSB0eXBlIG9mIERpZ2VzdCB0byBiZSB1c2VkIChnZW5lcmFsbHkgU0hBLTEpCisJICogQHBhcmFtIHR5cGUgQSB0eXBlIHN0cmluZyAoYXMgZGVmaW5lZCBieSBYTUwgU2lnbmF0dXJlKS4KKwkgKiBAcmV0dXJucyBUaGUgcm9vdCBSZWZlcmVuY2UgZWxlbWVudCBvZiB0aGUgbmV3bHkgY3JlYXRlZCBET00gc3RydWN0dXJlLgorCSAqIEBkZXByZWNhdGVkIFVzZSB0aGUgVVJJIGJhc2VkIGNyZWF0aW9uIG1ldGhvZCBpbnN0ZWFkCisJICovCisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIAorCQljcmVhdGVCbGFua1JlZmVyZW5jZShjb25zdCBYTUxDaCAqIFVSSSwgaGFzaE1ldGhvZCBobSwgY2hhciAqIHR5cGUpOworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIFJlZmVyZW5jZSBzdHJ1Y3R1cmUgaW4gdGhlIGRvY3VtZW50LgorCSAqCisJICogPHA+VGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0ZSBhIFJlZmVyZW5jZSBzdHJ1Y3R1cmUgaW4gdGhlIG93bmVyCisJICogZG9jdW1lbnQuICBJbiBzb21lIGNhc2VzLCBhIGNhbGwgdG8gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHN1ZmZpY2llbnQKKwkgKiB0byBwdXQgdGhlIHJlcXVpcmVkIFJlZmVyZW5jZSBpbiBwbGFjZS4gIEluIG90aGVyIGNhc2VzLCBjYWxscyB3aWxsCisJICogYWxzbyBuZWVkIHRvIGJlIG1hZGUgdG8gdGhlIHZhcmlvdXMgYXBwZW5kKlRyYW5zZm9ybSBtZXRob2RzLjwvcD4KKwkgKgorCSAqIEBub3RlIFRoZSBYU0VDIExpYnJhcnkgY3VycmVudGx5IG1ha2VzIHZlcnkgbGl0dGxlIHVzZSBvZiA8ZW0+dHlwZTwvZW0+CisJICogYXR0cmlidXRlcyBpbiBcPFJlZmVyZW5jZVw+IEVsZW1lbnRzLiAgSG93ZXZlciB0aGlzIG1heSBvZiB1c2UgdG8gY2FsbGluZworCSAqIGFwcGxpY2F0aW9ucy4KKwkgKgorCSAqIEBwYXJhbSBVUkkgVGhlIFVSSSAoZGF0YSBzb3VyY2UpIGZvciB0aGlzIHJlZmVyZW5jZS4gIFNldCB0byBOVUxMIGZvcgorCSAqIGFuIGFub255bW91cyByZWZlcmVuY2UuCisJICogQHBhcmFtIGhhc2hBbGdvcml0aG1VUkkgVGhlIHR5cGUgb2YgRGlnZXN0IHRvIGJlIHVzZWQgKGdlbmVyYWxseSBTSEEtMSkKKwkgKiBAcGFyYW0gdHlwZSBBIHR5cGUgc3RyaW5nIChhcyBkZWZpbmVkIGJ5IFhNTCBTaWduYXR1cmUpLgorCSAqIEByZXR1cm5zIFRoZSByb290IFJlZmVyZW5jZSBlbGVtZW50IG9mIHRoZSBuZXdseSBjcmVhdGVkIERPTSBzdHJ1Y3R1cmUuCisJICovCisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIAorCQljcmVhdGVCbGFua1JlZmVyZW5jZShjb25zdCBYTUxDaCAqIFVSSSwgCisJCQljb25zdCBYTUxDaCAqIGhhc2hBbGdvcml0aG1VUkksIAorCQkJY29uc3QgWE1MQ2ggKiB0eXBlKTsKKworCS8qKgorCSAqIFxicmllZiBBcHBlbmQgYW4gRW52ZWxvcGVkIFNpZ25hdHVyZSBUcmFuc2Zvcm0gdG8gdGhlIFJlZmVyZW5jZS4KKwkgKgorCSAqIEFwcGVuZHMgYSBzaW1wbGUgZW52ZWxvcGVkLXNpZ25hdHVyZSB0cmFuc2Zvcm0gdG8gdGhlIGxpc3Qgb2YgdHJhbnNmb3JtcworCSAqIGluIHRoaXMgZWxlbWVudC4KKwkgKgorCSAqIEByZXR1cm5zIFRoZSBuZXdseSBjcmVhdGVkIGVudmVsb3BlIHRyYW5zZm9ybS4KKwkgKgorCSAqLworCisJRFNJR1RyYW5zZm9ybUVudmVsb3BlICogIGFwcGVuZEVudmVsb3BlZFNpZ25hdHVyZVRyYW5zZm9ybSgpOworCQorCS8qKgorCSAqIFxicmllZiBBcHBlbmQgYSBCYXNlNjQgVHJhbnNmb3JtIHRvIHRoZSBSZWZlcmVuY2UuCisJICoKKwkgKiBAcmV0dXJucyBUaGUgbmV3bHkgY3JlYXRlZCBCYXNlNjQgdHJhbnNmb3JtLgorCSAqLworCisJRFNJR1RyYW5zZm9ybUJhc2U2NCAqIGFwcGVuZEJhc2U2NFRyYW5zZm9ybSgpOworCQorCS8qKgorCSAqIFxicmllZiBBcHBlbmQgYW4gWFBhdGggVHJhbnNmb3JtIHRvIHRoZSBSZWZlcmVuY2UuCisJICoKKwkgKiA8cD4gQXBwZW5kIGFuIFhQYXRoIHRyYW5zZm9ybS4gIE5hbWVzcGFjZXMgY2FuIGJlIGFkZGVkIHRvIHRoZSAKKwkgKiB0cmFuc2Zvcm0gZGlyZWN0bHkgdXNpbmcgdGhlIHJldHVybmVkIDxlbT5EU0lHVHJhbnNmb3JtWFBhdGg8L2VtPgorCSAqIHN0cnVjdHVyZTwvcD4KKwkgKgorCSAqIEBwYXJhbSBleHByIFRoZSBYUGF0aCBleHByZXNzaW9uIHRvIGJlIHBsYWNlZCBpbiB0aGUgdHJhbnNmb3JtLgorCSAqIEByZXR1cm5zIFRoZSBuZXdseSBjcmVhdGVkIFhQYXRoIHRyYW5zZm9ybQorCSAqLworCisJRFNJR1RyYW5zZm9ybVhQYXRoICogYXBwZW5kWFBhdGhUcmFuc2Zvcm0oY29uc3QgY2hhciAqIGV4cHIpOworCQorCS8qKgorCSAqIFxicmllZiBBcHBlbmQgYW4gWFBhdGgtRmlsdGVyMiBUcmFuc2Zvcm0gdG8gdGhlIFJlZmVyZW5jZS4KKwkgKgorCSAqIFRoZSByZXR1cm5lZCBEU0lHVHJhbnNmb3JtWFBhdGhGaWx0ZXIgd2lsbCBoYXZlIG5vIGFjdHVhbCBmaWx0ZXIKKwkgKiBleHByZXNzaW9ucyBsb2FkZWQsIGJ1dCBjYWxscyBjYW4gYmUgbWFkZSB0bworCSAqIERTSUdUcmFuc2Zvcm1YUGF0aEZpbHRlcjo6YXBwZW5kVHJhbnNmb3JtIHRvIGFkZCB0aGVtLgorCSAqCisJICogQHJldHVybnMgVGhlIG5ld2x5IGNyZWF0ZWQgWFBhdGggRmlsdGVyIHRyYW5zZm9ybQorCSAqLworCisJRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyICogYXBwZW5kWFBhdGhGaWx0ZXJUcmFuc2Zvcm0odm9pZCk7CisKKwkvKioKKwkgKiBcYnJpZWYgQXBwZW5kIGFuIFhTTFQgVHJhbnNmb3JtIHRvIHRoZSBSZWZlcmVuY2UuCisJICoKKwkgKiA8cD5UaGUgY2FsbGVyIG11c3QgaGF2ZSBhbHJlYWR5IGNyZWF0ZSB0aGUgc3R5bGVzaGVldCBhbmQgdHVybmVkIGl0IGludG8KKwkgKiBhIERPTSBzdHJ1Y3R1cmUgdGhhdCBpcyBwYXNzZWQgaW4gYXMgdGhlIHN0eWxlc2hlZXQgcGFyYW1ldGVyLjwvcD4KKwkgKgorCSAqIEBwYXJhbSBzdHlsZXNoZWV0IFRoZSBzdHlsZXNoZWV0IERPTSBzdHJ1Y3R1cmUgdG8gYmUgcGxhY2VkIGluIHRoZSByZWZlcmVuY2UuCisJICogQHJldHVybnMgVGhlIG5ld2x5IGNyZWF0ZSBYU0xUIHRyYW5zZm9ybQorCSAqLworCisJRFNJR1RyYW5zZm9ybVhTTCAqIGFwcGVuZFhTTFRyYW5zZm9ybShYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqc3R5bGVzaGVldCk7CisJCisJLyoqCisJICogXGJyaWVmIEFwcGVuZCBhIENhbm9uaWNhbGl6YXRpb24gVHJhbnNmb3JtIHRvIHRoZSBSZWZlcmVuY2UuCisJICoKKwkgKiBAcGFyYW0gY2Fub25pY2FsaXphdGlvbkFsZ29yaXRobVVSSSBUaGUgdHlwZSBvZiBjYW5vbmljYWxpc2F0aW9uIHRvIGJlIGFkZGVkLgorCSAqIEByZXR1cm5zIFRoZSBuZXdseSBjcmVhdGUgY2Fub25pY2FsaXNhdGlvbiB0cmFuc2Zvcm0KKwkgKi8KKworCURTSUdUcmFuc2Zvcm1DMTRuICogYXBwZW5kQ2Fub25pY2FsaXphdGlvblRyYW5zZm9ybSgKKwkJY29uc3QgWE1MQ2ggKiBjYW5vbmljYWxpemF0aW9uQWxnb3JpdGhtVVJJCisJKTsKKworCS8qKgorCSAqIFxicmllZiBBcHBlbmQgYSBDYW5vbmljYWxpemF0aW9uIFRyYW5zZm9ybSB0byB0aGUgUmVmZXJlbmNlLgorCSAqCisJICogQHBhcmFtIGNtIFRoZSB0eXBlIG9mIGNhbm9uaWNhbGlzYXRpb24gdG8gYmUgYWRkZWQuCisJICogQHJldHVybnMgVGhlIG5ld2x5IGNyZWF0ZSBjYW5vbmljYWxpc2F0aW9uIHRyYW5zZm9ybQorCSAqIEBkZXByZWNhdGVkIFVzZSB0aGUgQWxnb3JpdGhtVVJJIGJhc2VkIG1ldGhvZCBpbnN0ZWFkCisJICovCisKKwlEU0lHVHJhbnNmb3JtQzE0biAqIGFwcGVuZENhbm9uaWNhbGl6YXRpb25UcmFuc2Zvcm0oY2Fub25pY2FsaXphdGlvbk1ldGhvZCBjbSk7CisKKwkvKioKKwkgKiBcYnJpZWYgQXBwZW5kIGEgImRlYnVnIiB0cmFuc2Zvcm1lci4KKwkgKgorCSAqIFRoaXMgbWV0aG9kIGFsbG93cyBhcHBsaWNhdGlvbnMgdG8gcHJvdmlkZSBhIFRYRk0gdGhhdCB3aWxsIGJlIGFwcGVuZGVkCisJICogdG8gdGhlIHRyYW5zZm9ybSBjaGFpbiBqdXN0IHByaW9yIHRvIHRoZSBhcHBsaWNhdGlvbiBvZiB0aGUgaGFzaAorCSAqIGFsZ29yaXRobS4KKwkgKgorCSAqIEBub3RlIFRoaXMgaXMgcHJpbWFyaWx5IGZvciBkZWJ1Z2dpbmcuICBJdCBzaG91bGQgbm90IGJlIHVzZWQgdG8gbW9kaWZ5IHRoZQorCSAqIGNvbnRlbnRzIG9mIHRoZSBieXRlIHN0cmVhbS4KKwkgKgorCSAqIEBwYXJhbSB0IFRoZSBUWEZNIGVsZW1lbnQgdG8gaW5zZXJ0LgorCSAqLworCQorCXZvaWQgc2V0UHJlSGFzaFRYRk0oVFhGTUJhc2UgKiB0KTsKKworICAgLyoqCisgICAgKiBcYnJpZWYgU2V0IHRoZSBJZCBhdHRyaWJ1dGUgb2YgdGhlIERTSUdSZWZlcmVuY2UKKyAgICAqCisgICAgKiBUaGlzIG1ldGhvZCBhbGxvd3MgYXBwbGljYXRpb25zIHRvIHNldCB0aGUgSWQgYXR0cmlidXRlIG9mIHRoZSBEU0lHUmVmZXJlbmNlCisgICAgKiBhcyBkZXNjcmliZWQgaW4gaHR0cDovL3d3dy53My5vcmcvVFIveG1sZHNpZy1jb3JlLyNzZWMtUmVmZXJlbmNlLgorICAgICoKKyAgICAqCisgICAgKiBAcGFyYW0gaWQgVGhlIHZhbHVlIGZvciB0aGlzIHJlZmVyZW5jZS4KKyAgICAqLworICAgdm9pZCBzZXRJZChjb25zdCBYTUxDaCAqaWQpOworCisgICAvKioKKyAgICAqIFxicmllZiBTZXQgdGhlIFR5cGUgYXR0cmlidXRlIG9mIHRoZSBEU0lHUmVmZXJlbmNlCisgICAgKgorICAgICogVGhpcyBtZXRob2QgYWxsb3dzIGFwcGxpY2F0aW9ucyB0byBzZXQgdGhlIFR5cGUgYXR0cmlidXRlIG9mIHRoZSBEU0lHUmVmZXJlbmNlCisgICAgKiBhcyBkZXNjcmliZWQgaW4gaHR0cDovL3d3dy53My5vcmcvVFIveG1sZHNpZy1jb3JlLyNzZWMtUmVmZXJlbmNlLgorICAgICoKKyAgICAqCisgICAgKiBAcGFyYW0gdHlwZSBUaGUgdmFsdWUgZm9yIHRoaXMgcmVmZXJlbmNlLgorICAgICovCisgICB2b2lkIHNldFR5cGUoY29uc3QgWE1MQ2ggKnR5cGUpOworCS8vQH0KKworCS8qKiBAbmFtZSBHZXR0aW5nIEluZm9ybWF0aW9uICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhbiBpbnB1dCBzdHJlYW0gYmFzZWQgb24gdGhlIGRpZ2VzdGVkIGJ5dGUgc3RyZWFtLgorCSAqCisJICogVGhpcyBtZXRob2QgYWxsb3dzIGFwcGxpY2F0aW9ucyB0byByZWFkIHRoZSBmdWxseSBjYW5vbmljYWxpc2VkCisJICogYnl0ZSBzdHJlYW0gdGhhdCBpcyBoYXNoZWQgZm9yIGEgcmVmZXJlbmNlLgorCSAqCisJICogQWxsIHRyYW5zZm9ybXMgYXJlIHBlcmZvcm1lZCB1cCB0byB0aGUgcG9pbnQgd2hlcmUgdGhleSB3b3VsZAorCSAqIG5vcm1hbGx5IGJlIGZlZCBpbnRvIHRoZSBEaWdlc3QgZnVuY3Rpb24uCisJICoKKwkgKiBAcmV0dXJucyBBIEJpbklucHV0U291cmNlIG9mIHRoZSBjYW5vbmljYWxpc2VkIFNpZ25lZEluZm8KKwkgKi8KKworCVhTRUNCaW5UWEZNSW5wdXRTdHJlYW0gKiBtYWtlQmluSW5wdXRTdHJlYW0odm9pZCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIHRoZSBVUkkgc3RyaW5nIG9mIHRoZSBSZWZlcmVuY2UuCisJICoKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciAob3duZWQgYnkgdGhlIFJlZmVyZW5jZSkgY29udGFpbmluZyAKKwkgKiB0aGUgdmFsdWUgb2YgdGhlIFVSSSBzdG9yZWQgaW50aGUgcmVmZXJlbmNlCisJICovCisKKwljb25zdCBYTUxDaCAqIGdldFVSSSgpOworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgRGlnZXN0IG1ldGhvZAorCSAqCisJICogT2J0YWluIHRoZSBkaWdlc3QgbWV0aG9kIHVzZWQgdG8gZmluZCBhIGhhc2ggZm9yIHRoaXMgcmVmZXJlbmNlCisJICoKKwkgKiBAcmV0dXJucyB0aGUgaGFzaE1ldGhvZAorCSAqLworCisJaGFzaE1ldGhvZCBnZXRIYXNoTWV0aG9kKHZvaWQpIHsKKwkJcmV0dXJuIG1lX2hhc2hNZXRob2Q7CisJfQorCisgICAgLyoqCisgICAgICogXGJyaWVmIEdldCB0aGUgRGlnZXN0IEFsZ29yaXRobSBVUkkKKyAgICAgKgorICAgICAqIEByZXR1cm5zIHRoZSBVUkkgYXNzb2NpYXRlZCB3aXRoIHRoZSBBbGdvcml0aG0gdXNlZCB0byBnZW5lcmF0ZQorICAgICAqIHRoZSBkaWdlc3QKKyAgICAgKi8KKworICAgIGNvbnN0IFhNTENoICogZ2V0QWxnb3JpdGhtVVJJKCkgY29uc3QgeworICAgICAgICByZXR1cm4gbXBfYWxnb3JpdGhtVVJJOworICAgIH0KKworCS8qKgorCSAqIFxicmllZiBPYnRhaW4gdGhlIHRyYW5zZm9ybXMgZm9yIHRoaXMgcmVmZXJlbmNlCisJICoKKwkgKiBHZXQgdGhlIERTSUdUcmFuc2Zvcm1MaXN0IG9iamVjdCBmb3IgdGhpcyByZWZlcmVuY2UuICBDYW4gYmUgdXNlZCB0bworCSAqIG9idGFpbiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdHJhbnNmb3JtcyBhbmQgYWxzbyBjaGFuZ2UgdGhlIHRoZSB0cmFuc2Zvcm1zCisJICovCisKKwlEU0lHVHJhbnNmb3JtTGlzdCAqIGdldFRyYW5zZm9ybXModm9pZCkgeworCQlyZXR1cm4gbXBfdHJhbnNmb3JtTGlzdDsKKwl9CisKKwkvKioKKwkgKiBcYnJpZWYgRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHJlZmVyZW5jZSBpcyBhIG1hbmlmZXN0CisJICoKKwkgKiBAcmV0dXJucyB0cnVlIGlmZiB0aGUgUmVmZXJlbmNlIGVsZW1lbnQgaXMgYSBNYW5pZmVzdCByZWZlcmVuY2UKKwkgKi8KKwkKKwlib29sIGlzTWFuaWZlc3QoKTsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIE1hbmlmZXN0CisJICoKKwkgKiBAcmV0dXJucyBUaGUgUmVmZXJlbmNlTGlzdCBjb250YWluaW5nIHRoZSByZWZlcmVuY2VzIGluIHRoZSBNYW5pZmVzdAorCSAqIGxpc3Qgb2YgdGhpcyByZWZlcmVuY2UgZWxlbWVudC4KKwkgKi8KKworCURTSUdSZWZlcmVuY2VMaXN0ICogZ2V0TWFuaWZlc3RSZWZlcmVuY2VMaXN0KCk7CQkvLyBSZXR1cm4gbGlzdCBvZiByZWZlcmVuY2VzIGZvciBhIG1hbmlmZXN0IG9iamVjdAorCisKKwkvL0B9CisJCisJLyoqIEBuYW1lIE1lc3NhZ2UgRGlnZXN0L0hhc2ggbWFuaXB1bGF0aW9uICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIENhbGN1bGF0ZSB0aGUgSGFzaCAgdmFsdWUgb2YgYSByZWZlcmVuY2UKKwkgKgorCSAqIFRha2VzIHRoZSBSZWZlcmVuY2UgVVJJLCBwZXJmb3JtcyBhbGwgdGhlIHRyYW5zZm9ybXMgYW5kIGZpbmFsbHkKKwkgKiBjYWxjdWxhdGVzIHRoZSBIYXNoIHZhbHVlIG9mIHRoZSBkYXRhIHVzaW5nIHRoZSBEaWdlc3QgYWxnb3JpdGhtCisJICogaW5kaWNhdGVkIGluIHRoZSByZWZlcmVuY2UKKwkgKgorCSAqIEBwYXJhbSB0b0ZpbGwgQSBCdWZmZXIgdGhhdCB0aGUgcmF3IGhhc2ggd2lsbCBiZSBjb3BpZWQgaW50by4KKwkgKiBAcGFyYW0gbWF4VG9GaWxsIE1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvIHBsYWNlIGluIHRoZSBidWZmZXIKKwkgKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZCBpbnRvIHRoZSBidWZmZXIKKwkgKi8KKworCXVuc2lnbmVkIGludCBjYWxjdWxhdGVIYXNoKFhNTEJ5dGUgKiB0b0ZpbGwsIAorCQkJCQkJCXVuc2lnbmVkIGludCBtYXhUb0ZpbGwpOworCisJLyoqCisJICogXGJyaWVmIFJlYWQgdGhlIGhhc2ggZnJvbSB0aGUgUmVmZXJlbmNlIGVsZW1lbnQuCisJICoKKwkgKiBSZWFkcyB0aGUgQmFzZTY0IGVuY29kZWQgZWxlbWVudCBmcm9tIHRoZSBSZWZlcmVuY2UgZWxlbWVudC4KKwkgKiBUaGUgaGFzaCBpcyB0aGVuIHRyYW5zbGF0ZWQgZnJvbSBCYXNlNjQgYmFjayBpbnRvIHJhdyBmb3JtIGFuZAorCSAqIHdyaXR0ZW4gaW50byB0aGUgaW5kaWNhdGVkIGJ1ZmZlci4KKwkgKgorCSAqIEBwYXJhbSB0b0ZpbGwgUG9pbnRlciB0byB0aGUgYnVmZmVyIHdoZXJlIHRoZSByYXcgaGFzaCB3aWxsIGJlIHdyaXR0ZW4KKwkgKiBAcGFyYW0gbWF4VG9GaWxsIE1heGltdW0gYnl0ZXMgdG8gd3JpdGUgdG8gdGhlIGJ1ZmZlcgorCSAqIEByZXR1cm5zIE51bWJlciBvZiBieXRlcyB3cml0dGVuCisJICovCisJCisJdW5zaWduZWQgaW50IHJlYWRIYXNoKFhNTEJ5dGUgKnRvRmlsbCwJCQkKKwkJCQkJCQl1bnNpZ25lZCBpbnQgbWF4VG9GaWxsKTsKKworCS8qKgorCSAqIFxicmllZiBWYWxpZGF0ZSB0aGUgUmVmZXJlbmNlIGVsZW1lbnQKKwkgKgorCSAqIFBlcmZvcm1zIGEgI2NhbGN1bGF0ZUhhc2goKSBhbmQgYSAjcmVhZEhhc2goKSBhbmQgdGhlbiBjb21wYXJlcyB0aGUKKwkgKiByZXN1bHRzLgorCSAqCisJICogQHJldHVybnMgdHJ1ZSBpZmYgdGhlIGhhc2ggb2YgdGhlIGRhdGEgbWF0Y2hlcyB0aGUgaGFzaCBzdG9yZWQgCisJICogaW4gdGhlIHJlZmVyZW5jZS4KKwkgKi8KKworCWJvb2wgY2hlY2tIYXNoKCk7CisKKwkvKioKKwkgKiBcYnJpZWYgU2V0IHRoZSB2YWx1ZSBvZiB0aGUgaGFzaCBpbiB0aGUgUmVmZXJlbmNlCisJICoKKwkgKiBIYXNoZXMgdGhlIGRhdGEgcmVmZXJlbmNlZCBieSB0aGUgZWxlbWVudCBhbmQgdGhlbiB3cml0ZXMKKwkgKiB0aGUgQmFzZTY0IGVuY29kZWQgaGFzaCB2YWx1ZSBpbnRvIHRoZSBSZWZlcmVuY2UuCisJICoKKwkgKi8KKworCXZvaWQgc2V0SGFzaCgpOworCisJLy9AfQorCisJLyoqIEBuYW1lIEhlbHBlciAoc3RhdGljKSBGdW5jdGlvbnMgKi8JCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIFRyYW5zZm9ybWVyIGNoYWluCisJICoKKwkgKiBHaXZlbiBhIFRyYW5zZm9ybUxpc3QgY3JlYXRlIHRoZSBjb3JyZXNwb25kaW5nIFRYRk0gY2hhaW4gdG8gYWxsb3cKKwkgKiB0aGUgY2FsbGVyIHRvIHJlYWQgdGhlIHJlZmVyZW5jZSBieXRlIHN0cmVhbQorCSAqCisJICogQG5vdGUgVGhpcyBtZXRob2QgaXMgcHJpbWFyaWx5IGZvciB1c2Ugd2l0aGluIHRoZSBYU0VDIGxpYnJhcnkuCisJICogVXNlcnMgd2lzaGluZyB0byBnZXQgdGhlIGJ5dGUgc3RyZWFtIHNob3VsZCB1c2UgdGhlICNtYWtlQmluSW5wdXRTdHJlYW0KKwkgKiBtZXRob2QgaW5zdGVhZC4KKwkgKgorCSAqIEBwYXJhbSBpbnB1dCBUaGUgaW5wdXQgdHJhbnNmb3JtZXIgdG8gd2hpY2ggdGhlIFRYRk1zIHdpbGwgYmUgYXBwbGllZCB0bworCSAqIFRoaXMgaXMgZ2VuZXJhbGx5IGNyZWF0ZWQgZnJvbSB0aGUgVVJJIGF0dHJpYnV0ZSBvZiB0aGUgcmVmZXJlbmNlLgorCSAqIEBwYXJhbSBsc3QgVGhlIGxpc3Qgb2YgVHJhbnNmb3JtIGVsZW1lbnRzIGZyb20gd2hpY2ggdG8gYnVpbGQgdGhlIAorCSAqIHRyYW5zZm9ybWVyIGxpc3QuCisJICogQHJldHVybnMgVGhlIDxCPmVuZDwvQj4gb2YgdGhlIG5ld2x5IGJ1aWxkIFRYRk0gY2hhaW4uICBUaGlzIGNhbiBiZSAKKwkgKiByZWFkIGZyb20gdXNpbmcgVFhGTUJhc2U6OnJlYWRCeXRlcygpIHRvIGdpdmUgdGhlIGVuZCByZXN1bHQgb2YgdGhlCisJICogdHJhbnNmb3Jtcy4KKwkgKi8KKworCXN0YXRpYyBUWEZNQ2hhaW4gKiBjcmVhdGVUWEZNQ2hhaW5Gcm9tTGlzdChUWEZNQmFzZSAqIGlucHV0LCAKKwkJCQkJCQlEU0lHVHJhbnNmb3JtTGlzdCAqIGxzdCk7CisKKwkvKioKKwkgKiBcYnJpZWYgTG9hZCBhIFRyYW5zZm9ybXMgbGlzdCBmcm9tIHRoZSBcPFRyYW5zZm9ybXNcPiBET01Ob2RlLgorCSAqCisJICogUmVhZHMgdGhlIGRhdGEgZnJvbSB0aGUgWE1MIGRhdGEgc3RvcmVkIGluIHRoZSBET00gYW5kIGNyZWF0ZQorCSAqIHRoZSBhc3NvY2lhdGVkIERTSUdUcmFzbmZvcm1MaXN0LgorCSAqCisJICogQHBhcmFtIHRyYW5zZm9ybXNOb2RlIFN0YXJ0aW5nIG5vZGUgaW4gdGhlIERPTQorCSAqIEBwYXJhbSBmb3JtYXR0ZXIgVGhlIGZvcm1hdHRlciB0byBiZSB1c2VkIHRvIG1vdmUgZnJvbSBYTUxDaCB0byBzdHJpbmdzCisJICogQHBhcmFtIGVudiBFbnZpcm9ubWVudCBpbiB3aGljaCB0byBvcGVyYXRlCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBjcmVhdGVkIGxpc3QuCisJICovCisKKwlzdGF0aWMgRFNJR1RyYW5zZm9ybUxpc3QgKiBsb2FkVHJhbnNmb3JtcygKKwkJCQkJCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqdHJhbnNmb3Jtc05vZGUsCisJCQkJCQkJWFNFQ1NhZmVCdWZmZXJGb3JtYXR0ZXIgKiBmb3JtYXR0ZXIsCisJCQkJCQkJY29uc3QgWFNFQ0VudiAqIGVudik7CisKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIGEgc3RhcnRpbmcgcG9pbnQgZm9yIGEgVFhGTSBDaGFpbi4KKwkgKgorCSAqIFVzZXMgdGhlIHByb3ZpZGVkIFVSSSB0byBmaW5kIHRoZSBiYXNlIGRhdGEgdGhhdCB0aGUgVHJhbnNmb3JtZXIgY2hhaW4KKwkgKiB3aWxsIGJlIGJ1aWx0IHVwb24uCisJICoKKwkgKiBAcGFyYW0gZG9jIFRoZSBkb2N1bWVudCB0aGF0IHRoZSBzaWduYXR1cmUgaXMgYmFzZWQgb24gKHVzZWQgZm9yIGxvY2FsIFVSSXMpCisJICogQHBhcmFtIFVSSSBUaGUgVVJJIHRvIGJ1aWxkIHRoZSBiYXNlIGZyb20KKwkgKiBAcGFyYW0gZW52IFRoZSBlbnZpcm9ubWVudCB0aGUgc2lnbmF0dXJlIGlzIG9wZXJhdGluZyBpbgorCSAqIEByZXR1cm5zIEEgYmFzZSBUWEZNIGVsZW1lbnQuCisJICovCisKKwlzdGF0aWMgVFhGTUJhc2UgKiBnZXRVUklCYXNlVFhGTShYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBkb2MsIAorCQkJCQkJCQkJY29uc3QgWE1MQ2ggKiBVUkksIAorCQkJCQkJCQkJY29uc3QgWFNFQ0VudiAqIGVudik7CisKKwkvKioKKwkgKiBcYnJpZWYgTG9hZCBhIHNlcmllcyBvZiByZWZlcmVuY2VzLgorCSAqCisJICogVGFrZXMgYSBzZXJpZXMgb2YgXDxSZWZlcmVuY2VcPiBlbGVtZW50cyBpbiBhIERPTSBzdHJ1Y3R1cmUKKwkgKiBhbmQgY3JlYXRlcyB0aGUgY29ycmVzcG9uZGluZyBSZWZlcmVuY2VMaXN0IG9iamVjdC4KKwkgKgorCSAqIEBub3RlIEludGVybmFsIGZ1bmN0aW9uIC0gbWVhbnQgZm9yIHVzZSBieSB0aGUgbGlicmFyeQorCSAqCisJICogQHBhcmFtIGVudiBUaGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggdGhpcyByZWZlcmVuY2UgcmVzaWRlcworCSAqIEBwYXJhbSBmaXJzdFJlZmVyZW5jZSBGaXJzdCByZWZlcmVuY2UgaW4gRE9NIHN0cnVjdHVyZQorCSAqIEByZXR1cm5zIHRoZSBjcmVhdGVkIGxpc3QuCisJICovCisKKwlzdGF0aWMgRFNJR1JlZmVyZW5jZUxpc3QgKmxvYWRSZWZlcmVuY2VMaXN0RnJvbVhNTChjb25zdCBYU0VDRW52ICogZW52LCAKKwkJCQkJCQkJCQkJCQkgICBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqZmlyc3RSZWZlcmVuY2UpOworCisJLyoqCisJICogXGJyaWVmIFZhbGlkYXRlIGEgbGlzdCBvZiByZWZlcmVuY2VzLgorCSAqCisJICogUnVucyB0aHJvdWdoIGEgcmVmZXJlbmNlIGxpc3QsIGNhbGxpbmcgdmVyaWZ5KCkgb24gZWFjaCBhbmQgCisJICogc2V0dGluZyB0aGUgRXJycm9TdHJpbmdzIGZvciBhbnkgZXJyb3JzIGZvdW5kCisJICoKKwkgKiBAcGFyYW0gbHN0IFRoZSBsaXN0IHRvIHZlcmlmeQorCSAqIEBwYXJhbSBlcnJvclN0ciBUaGUgc3RyaW5nIHRvIGFwcGVuZCBhbnkgZXJyb3JzIGZvdW5kIHRvCisJICogQHJldHVybnMgdHJ1ZSBpZmYgYWxsIHRoZSByZWZlcmVuY2VzIHZhbGlkYXRlIHN1Y2Nlc3NmdWxseS4KKwkgKi8KKworCXN0YXRpYyBib29sIHZlcmlmeVJlZmVyZW5jZUxpc3QoRFNJR1JlZmVyZW5jZUxpc3QgKiBsc3QsIHNhZmVCdWZmZXIgJmVycm9yU3RyKTsKKwkKKwkvKioKKwkgKiBcYnJpZWYgSGFzaCBhIHJlZmVyZW5jZSBsaXN0CisJICogCisJICogUnVuIHRocm91Z2ggYSBsaXN0IG9mIHJlZmVyZW5jZXMgYW5kIGNhbGN1bGF0ZSB0aGUgaGFzaCB2YWx1ZSBvZiBlYWNoCisJICogZWxlbWVudC4gIEZpbmFsbHkgc2V0IHRoZSBCYXNlNjQgZW5jb2RlZCBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBuZXdseQorCSAqIGNhbGN1YXRlZCBoYXNoLgorCSAqCisJICogQG5vdGUgVGhpcyBpcyBhbiBpbnRlcm5hbCBsaWJyYXJ5IGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseS4KKwkgKgorCSAqIEBwYXJhbSBsaXN0IFRoZSBsaXN0IG9mIHJlZmVyZW5jZXMKKwkgKiBAcGFyYW0gaW50ZXJsb2NraW5nIElmIHNldCB0byBmYWxzZSwgdGhlIGxpYnJhcnkgd2lsbCBhc3N1bWUgdGhlcmUKKwkgKiBhcmUgbm8gaW50ZXItcmVsYXRlZCByZWZlcmVuY2VzLiAgVGhlIGFsZ29yaXRobSBmb3IgZGV0ZXJtaW5pbmcgdGhpcworCSAqIGludGVybmFsbHkgaXMgdmVyeSBwcmltaXRpdmUgYW5kIENQVSBpbnRlbnNpdmUsIHNvIHRoaXMgaXMgYSBtZXRob2QgdG8gCisJICogYnlwYXNzIHRoZSBjaGVja3MuCisJICovCisJc3RhdGljIHZvaWQgaGFzaFJlZmVyZW5jZUxpc3QoRFNJR1JlZmVyZW5jZUxpc3QgKiBsaXN0LCBib29sIGludGVybG9ja2luZyA9IHRydWUpOworCisJLy9AfQorCitwcml2YXRlOgorCisJLy8gSW50ZXJuYWwgZnVuY3Rpb25zCisJdm9pZCBjcmVhdGVUcmFuc2Zvcm1MaXN0KHZvaWQpOworCXZvaWQgYWRkVHJhbnNmb3JtKAorCQlEU0lHVHJhbnNmb3JtICogdHhmbSwgCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogdHhmbUVsdAorCSk7CisKKworCVhTRUNTYWZlQnVmZmVyRm9ybWF0dGVyCQkqIG1wX2Zvcm1hdHRlcjsKKwlib29sIGZvcm1hdHRlckxvY2FsOworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlCQkJCQkJCisJCQkJCQkJCSogbXBfcmVmZXJlbmNlTm9kZTsJCS8vIFBvaW50cyB0byBzdGFydCBvZiBkb2N1bWVudCB3aGVyZSByZWZlcmVuY2Ugbm9kZSBpcworCVRYRk1CYXNlCQkJCQkqIG1wX3ByZUhhc2g7CQkJLy8gVG8gYmUgdXNlZCBwcmUtaGFzaAorCURTSUdSZWZlcmVuY2VMaXN0CQkJKiBtcF9tYW5pZmVzdExpc3Q7CQkvLyBUaGUgbGlzdCBvZiByZWZlcmVuY2VzIGluIGEgbWFuaWZlc3QKKwljb25zdCBYTUxDaAkJCQkJKiBtcF9VUkk7CQkJCS8vIFRoZSBVUkkgU3RyaW5nCisJYm9vbAkJCQkJCW1faXNNYW5pZmVzdDsJCQkvLyBEb2VzIHRoaXMgcmVmZXJlbmNlIGEgbWFuaWZlc3Q/CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUJCQkJCQkKKwkJCQkJCQkJKiBtcF90cmFuc2Zvcm1zTm9kZTsKKwloYXNoTWV0aG9kCQkJCQltZV9oYXNoTWV0aG9kOwkJCS8vIFdoYXQgZm9ybSBvZiBkaWdlc3Q/CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUJCQkJCQkKKwkJCQkJCQkJKiBtcF9oYXNoVmFsdWVOb2RlOwkJLy8gTm9kZSB3aGVyZSB0aGUgSGFzaCB2YWx1ZSBpcyBzdG9yZWQKKwljb25zdCBYU0VDRW52CQkJCSogbXBfZW52OworCURTSUdUcmFuc2Zvcm1MaXN0CQkJKiBtcF90cmFuc2Zvcm1MaXN0OwkJLy8gTGlzdCBvZiB0cmFuc2Zvcm1zCisJY29uc3QgWE1MQ2gJCQkJCSogbXBfYWxnb3JpdGhtVVJJOwkJLy8gSGFzaCBhbGdvcml0aG0gZm9yIHRoaXMgcmVmZXJlbmNlCisJCisJYm9vbCAgICAgICAgICAgICAgICAgICAgICAgIG1fbG9hZGVkOworCisJRFNJR1JlZmVyZW5jZSgpOworCisJLypcQH0qLworfTsKKworCisKKwpkaWZmIC0tZ2l0IGEvYy9zcmMvZHNpZy9EU0lHUmVmZXJlbmNlTGlzdC5jcHAgYi9jL3NyYy9kc2lnL0RTSUdSZWZlcmVuY2VMaXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2U2ZGE5Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZHNpZy9EU0lHUmVmZXJlbmNlTGlzdC5jcHAKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogRFNJR1JlZmVyZW5jZUxpc3QgOj0gQ2xhc3MgZm9yIExvYWRpbmcgYW5kIHN0b3JpbmcgYSBsaXN0IG9mIHJlZmVyZW5jZXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKy8vIFhTRUMgSW5jbHVkZXMKKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1JlZmVyZW5jZUxpc3QuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHUmVmZXJlbmNlLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKK0RTSUdSZWZlcmVuY2VMaXN0OjpEU0lHUmVmZXJlbmNlTGlzdCgpIHt9CisKK0RTSUdSZWZlcmVuY2VMaXN0Ojp+RFNJR1JlZmVyZW5jZUxpc3QoKSB7CisKKwkvLyBEZWxldGUgYWxsIHRoZSByZWZlcmVuY2VzIGNvbnRhaW5lZCBpbiB0aGUgbGlzdAorCisJUmVmZXJlbmNlTGlzdFZlY3RvclR5cGU6Oml0ZXJhdG9yIGl0ZXJhdG9yID0gbV9yZWZlcmVuY2VMaXN0LmJlZ2luKCk7CisKKwl3aGlsZSAoaXRlcmF0b3IgIT0gbV9yZWZlcmVuY2VMaXN0LmVuZCgpKSB7CisJCQorCQlkZWxldGUgKml0ZXJhdG9yOworCQlpdGVyYXRvcisrOworCisJfQorCit9CisKKwordm9pZCBEU0lHUmVmZXJlbmNlTGlzdDo6YWRkUmVmZXJlbmNlKERTSUdSZWZlcmVuY2UgKiByZWYpIHsKKworCW1fcmVmZXJlbmNlTGlzdC5wdXNoX2JhY2socmVmKTsKKworfQorCitEU0lHUmVmZXJlbmNlTGlzdDo6c2l6ZV90eXBlIERTSUdSZWZlcmVuY2VMaXN0OjpnZXRTaXplKCkgeworCisJcmV0dXJuIG1fcmVmZXJlbmNlTGlzdC5zaXplKCk7CisKK30KKworRFNJR1JlZmVyZW5jZSAqIERTSUdSZWZlcmVuY2VMaXN0OjpyZW1vdmVSZWZlcmVuY2Uoc2l6ZV90eXBlIGluZGV4KSB7CisKKwlEU0lHUmVmZXJlbmNlICogcmV0ID0gTlVMTDsKKwlpZiAoaW5kZXggPCBtX3JlZmVyZW5jZUxpc3Quc2l6ZSgpKSB7CisKKwkJcmV0ID0gbV9yZWZlcmVuY2VMaXN0W2luZGV4XTsKKwkJbV9yZWZlcmVuY2VMaXN0LmVyYXNlKG1fcmVmZXJlbmNlTGlzdC5iZWdpbigpICsgaW5kZXgpOworCQorCX0KKworCXJldHVybiByZXQ7CisKK30KKworRFNJR1JlZmVyZW5jZSAqIERTSUdSZWZlcmVuY2VMaXN0OjppdGVtKFJlZmVyZW5jZUxpc3RWZWN0b3JUeXBlOjpzaXplX3R5cGUgaW5kZXgpIHsKKworCWlmIChpbmRleCA8IG1fcmVmZXJlbmNlTGlzdC5zaXplKCkpCisJCXJldHVybiBtX3JlZmVyZW5jZUxpc3RbaW5kZXhdOworCisJcmV0dXJuIE5VTEw7CisKK30KK2Jvb2wgRFNJR1JlZmVyZW5jZUxpc3Q6OmVtcHR5KCkgeworCisJLy8gQ2xlYXIgb3V0IHRoZSBsaXN0IC0gbm90ZSB3ZSBkbyBOT1QgZGVsZXRlIHRoZSByZWZlcmVuY2UgZWxlbWVudHMKKworCVJlZmVyZW5jZUxpc3RWZWN0b3JUeXBlOjppdGVyYXRvciByZXRUZXN0OworCisJcmV0VGVzdCA9IG1fcmVmZXJlbmNlTGlzdC5lcmFzZShtX3JlZmVyZW5jZUxpc3QuYmVnaW4oKSwgbV9yZWZlcmVuY2VMaXN0LmVuZCgpKTsKKwlyZXR1cm4gKHJldFRlc3QgPT0gbV9yZWZlcmVuY2VMaXN0LmVuZCgpKTsKKworfQorCisKZGlmZiAtLWdpdCBhL2Mvc3JjL2RzaWcvRFNJR1JlZmVyZW5jZUxpc3QuaHBwIGIvYy9zcmMvZHNpZy9EU0lHUmVmZXJlbmNlTGlzdC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJlMTJhNQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2RzaWcvRFNJR1JlZmVyZW5jZUxpc3QuaHBwCkBAIC0wLDAgKzEsMTU3IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBEU0lHUmVmZXJlbmNlTGlzdCA6PSBDbGFzcyBmb3IgTG9hZGluZyBhbmQgc3RvcmluZyBhIGxpc3Qgb2YgcmVmZXJlbmNlcworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBEU0lHUkVGRVJFTkNFTElTVF9JTkNMVURFCisjZGVmaW5lIERTSUdSRUZFUkVOQ0VMSVNUX0lOQ0xVREUKKworCisvLyBYU0VDIEluY2x1ZGVzCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorLy8jaW5jbHVkZSA8ZHNpZy9EU0lHUmVmZXJlbmNlLmhwcD4KKworLy8gR2VuZXJhbCBpbmNsdWRlcworI2luY2x1ZGUgPHZlY3Rvcj4KKworY2xhc3MgRFNJR1JlZmVyZW5jZTsKKworLyoqCisgKiBAaW5ncm91cCBwdWJzaWcKKyAqLworCisvKioKKyAqIEBicmllZiBIb2xkcyBhIGxpc3Qgb2YgcmVmZXJlbmNlIGVsZW1lbnRzLgorICoKKyAqIFRoZSBsaWJyYXJ5IGhvbGRzIGEgU2lnbmF0dXJlJ3MgbGlzdCBvZiByZWZlcmVuY2VzIHVzaW5nIHRoaXMgY2xhc3MuCisgKiBNYW5pZmVzdCBsaXN0cyBhcmUgc2ltaWxhcmx5IGhlbGQuICBEZXZlbG9wZXJzIGNhbiBvYnRhaW4gdGhlIAorICogbGlzdCBmcm9tIHRoZSBTaWduYXR1cmUgbGlicmFyeSB1c2luZyBEU0lHU2lnbmF0dXJlOjpnZXRSZWZlcmVuY2VMaXN0CisgKiBhbmQgdGhlbiBpdGVyYXRlIHRocm91Z2ggZWFjaCByZWZlcmVuY2UuCisgKgorICogVGhlIGxpYnJhcnkgYWxzbyB1c2VzIHRoZSBMaXN0IGFzIHRoZSBvd25lciBvZiB0aGUgbWVtb3J5IGFzc29jaWF0ZWQKKyAqIHdpdGggUmVmZXJlbmNlcy4gIFNvIHdoZW4gYSBsaXN0IGlzIGRlbGV0ZWQsIHRoZSByZWZlcmVuY2VzIGFyZSBkZWxldGVkCisgKiBhdCB0aGUgc2FtZSB0aW1lLgorICoKKyAqLworCitjbGFzcyBEU0lHX0VYUE9SVCBEU0lHUmVmZXJlbmNlTGlzdCB7CisKK3B1YmxpYzoKKworI2lmIGRlZmluZWQoWFNFQ19OT19OQU1FU1BBQ0VTKQorCXR5cGVkZWYgdmVjdG9yPERTSUdSZWZlcmVuY2UgKj4JCQlSZWZlcmVuY2VMaXN0VmVjdG9yVHlwZTsKKyNlbHNlCisJdHlwZWRlZiBzdGQ6OnZlY3RvcjxEU0lHUmVmZXJlbmNlICo+CVJlZmVyZW5jZUxpc3RWZWN0b3JUeXBlOworI2VuZGlmCisKKyNpZiBkZWZpbmVkKFhTRUNfU0laRV9UX0lOX05BTUVTUEFDRV9TVEQpCisJdHlwZWRlZiBzdGQ6OnNpemVfdAkJc2l6ZV90eXBlOworI2Vsc2UKKwl0eXBlZGVmIHNpemVfdAkJCXNpemVfdHlwZTsKKyNlbmRpZgorCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgQ29uc3RydWN0IGEgbGlzdAorCSAqLworCisJRFNJR1JlZmVyZW5jZUxpc3QoKTsKKworCS8qKgorCSAqIFxicmllZiBEZXN0cm95IGEgbGlzdC4KKwkgKgorCSAqIFN0YW5kYXJkIGRlc3RydWN0b3IgdG8gY2xvc2UgZG93biB0aGUgbGlzdC4KKwkgKgorCSAqIEBub3RlIERlc3Ryb3lzIHRoZSByZWZlcmVuY2VzIGFzIHdlbGwgYXMgdGhlIGxpc3QKKwkgKi8KKworCX5EU0lHUmVmZXJlbmNlTGlzdCgpOworCisJLy9AfQorCisJLyoqIEBuYW1lIExpc3QgbWFuaXB1bGF0aW9uICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIEFkZCBhIHJlZmVyZW5jZSB0byB0aGUgbGlzdAorCSAqCisJICogQXBwZW5kcyB0aGUgcmVmZXJlbmNlIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QgYW5kIHRha2VzIG93bmVyc2hpcAorCSAqIG9mIGFzc29jaWF0ZWQgbWVtb3J5LgorCSAqLworCQorCXZvaWQgYWRkUmVmZXJlbmNlKERTSUdSZWZlcmVuY2UgKiByZWYpOworCisJLyoqCisJICogXGJyaWVmIFJlbW92ZSBhIHJlZmVyZW5jZSBmcm9tIHRoZSBsaXN0CisJICoKKwkgKiBSZW1vdmVzIHRoZSByZWZlcmVuY2UgYXQgdGhlIGluZGV4IHBvaW50IGFuZCByZXR1cm5zIGEgcG9pbnRlcgorCSAqIHRvIHRoZSByZWZlcmVuY2UgcmVtb3ZlZC4KKwkgKgorCSAqIEBub3RlIFRoaXMgYWxzbyByZWxlYXNlcyBvd25lcnNoaXAuICBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YKKwkgKiB0aGUgY2FsbGVyIHRvIGVuc3VyZSB0aGUgcmVmZXJlbmNlIGlzIGRlbGV0ZWQuCisJICoKKwkgKiBAbm90ZSBUaGlzIGRvZXMgbm90IGN1cnJlbnRseSBkZWxldGUgdGhlIHJlZmVyZW5jZSBmcm9tIHRoZSBTaWduYXR1cmUgCisJICoKKwkgKiBAcGFyYW0gaW5kZXggUG9pbnQgaW4gdGhlIGxpc3QgdG8gcmVtb3ZlCisJICovCisJCisJRFNJR1JlZmVyZW5jZSAqIHJlbW92ZVJlZmVyZW5jZShzaXplX3R5cGUgaW5kZXgpOworCisJLyoqCisJICogXGJyaWVmIFJldHVybiBhIHJlZmVyZW5jZSBmcm9tIHRoZSBsaXN0CisJICoKKwkgKiBHZXRzIHRoZSByZWZlcmVuY2UgYXQgcG9pbnQgaW5kZXggaW4gdGhlIGxpc3QKKwkgKgorCSAqIEBwYXJhbSBpbmRleCBUaGUgcG9pbnRlciBpbnRvIHRoZSBsaXN0CisJICovCisKKwlEU0lHUmVmZXJlbmNlICogaXRlbShzaXplX3R5cGUgaW5kZXgpOworCisJLyoqCisJICogXGJyaWVmIEZpbmQgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgbGlzdAorCSAqCisJICogQHJldHVybnMgVGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgbGlzdAorCSAqLworCisJc2l6ZV90eXBlCWdldFNpemUoKTsKKworCS8qKgorCSAqIFxicmllZiBDbGVhciBvdXQgdGhlIGxpc3QKKwkgKgorCSAqIFNpbXBseSBjbGVhcnMgdGhlIGxpc3QuICBEb2VzIG5vdCBkZWxldGUgdGhlIHJlZmVyZW5jZSBlbGVtZW50cyB0aGVtc2VsdmVzLgorCSAqLworCQorCWJvb2wgZW1wdHkoKTsKKworCS8vQH0KKworcHJpdmF0ZToKKworCVJlZmVyZW5jZUxpc3RWZWN0b3JUeXBlCQkJCQltX3JlZmVyZW5jZUxpc3Q7CisKK307CisKKworI2VuZGlmIC8qIERTSUdSRUZFUkVOQ0VMSVNUX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL2RzaWcvRFNJR1NpZ25hdHVyZS5jcHAgYi9jL3NyYy9kc2lnL0RTSUdTaWduYXR1cmUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2MzQ5NGUKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9kc2lnL0RTSUdTaWduYXR1cmUuY3BwCkBAIC0wLDAgKzEsMTMwNyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogRFNJR1NpZ25hdHVyZSA6PSBDbGFzcyBmb3IgY2hlY2tpbmcgYW5kIHNldHRpbmcgdXAgc2lnbmF0dXJlIG5vZGVzIGluIGEgRFNJRyBzaWduYXR1cmUJCQkJCSAKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKy8vIFhTRUMgSW5jbHVkZXMKKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1NpZ25hdHVyZS5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdDb25zdGFudHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHS2V5SW5mb1g1MDkuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHT2JqZWN0LmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1JlZmVyZW5jZS5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdUcmFuc2Zvcm1MaXN0LmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0tleUluZm9WYWx1ZS5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdLZXlJbmZvWDUwOS5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdLZXlJbmZvTmFtZS5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdLZXlJbmZvUEdQRGF0YS5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdLZXlJbmZvU1BLSURhdGEuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHS2V5SW5mb01nbXREYXRhLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0LmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvS2V5RFNBLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvS2V5UlNBLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDS2V5SW5mb1Jlc29sdmVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNBbGdvcml0aG1IYW5kbGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDQWxnb3JpdGhtTWFwcGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRW52LmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDVVJJUmVzb2x2ZXIuaHBwPgorI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1Eb2NPYmplY3QuaHBwPgorI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1PdXRwdXRGaWxlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNU0hBMS5ocHA+CisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTUJhc2U2NC5ocHA+CisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTUMxNG4uaHBwPgorI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1DaGFpbi5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDQmluVFhGTUlucHV0U3RyZWFtLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDUGxhdGZvcm1VdGlscy5ocHA+CisKKy8vIFhlcmNlcyBpbmNsdWRlcworCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NTmFtZWROb2RlTWFwLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvSmFuaXRvci5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEluaXQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwordm9pZCBEU0lHU2lnbmF0dXJlOjpJbml0aWFsaXNlKHZvaWQpIHsKKworCURTSUdBbGdvcml0aG1IYW5kbGVyRGVmYXVsdCBkZWY7CisJCisJLy8gUmVnaXN0ZXIgZGVmYXVsdCBzaWduYXR1cmUgYWxnb3JpdGhtIGhhbmRsZXJzCisKKwlYU0VDUGxhdGZvcm1VdGlsczo6cmVnaXN0ZXJBbGdvcml0aG1IYW5kbGVyKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVJTQV9TSEExLCBkZWYpOworCVhTRUNQbGF0Zm9ybVV0aWxzOjpyZWdpc3RlckFsZ29yaXRobUhhbmRsZXIoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJUlNBX01ENSwgZGVmKTsKKwlYU0VDUGxhdGZvcm1VdGlsczo6cmVnaXN0ZXJBbGdvcml0aG1IYW5kbGVyKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVJTQV9TSEEyMjQsIGRlZik7CisJWFNFQ1BsYXRmb3JtVXRpbHM6OnJlZ2lzdGVyQWxnb3JpdGhtSGFuZGxlcihEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklSU0FfU0hBMjU2LCBkZWYpOworCVhTRUNQbGF0Zm9ybVV0aWxzOjpyZWdpc3RlckFsZ29yaXRobUhhbmRsZXIoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJUlNBX1NIQTM4NCwgZGVmKTsKKwlYU0VDUGxhdGZvcm1VdGlsczo6cmVnaXN0ZXJBbGdvcml0aG1IYW5kbGVyKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVJTQV9TSEE1MTIsIGRlZik7CisJCisgICAgWFNFQ1BsYXRmb3JtVXRpbHM6OnJlZ2lzdGVyQWxnb3JpdGhtSGFuZGxlcihEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklEU0FfU0hBMSwgZGVmKTsKKyAgICBYU0VDUGxhdGZvcm1VdGlsczo6cmVnaXN0ZXJBbGdvcml0aG1IYW5kbGVyKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSURTQV9TSEEyNTYsIGRlZik7CisKKyAgICBYU0VDUGxhdGZvcm1VdGlsczo6cmVnaXN0ZXJBbGdvcml0aG1IYW5kbGVyKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUVDRFNBX1NIQTEsIGRlZik7CisJWFNFQ1BsYXRmb3JtVXRpbHM6OnJlZ2lzdGVyQWxnb3JpdGhtSGFuZGxlcihEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklFQ0RTQV9TSEEyNTYsIGRlZik7CisJWFNFQ1BsYXRmb3JtVXRpbHM6OnJlZ2lzdGVyQWxnb3JpdGhtSGFuZGxlcihEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklFQ0RTQV9TSEEzODQsIGRlZik7CisJWFNFQ1BsYXRmb3JtVXRpbHM6OnJlZ2lzdGVyQWxnb3JpdGhtSGFuZGxlcihEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklFQ0RTQV9TSEE1MTIsIGRlZik7CisKKyAgICBYU0VDUGxhdGZvcm1VdGlsczo6cmVnaXN0ZXJBbGdvcml0aG1IYW5kbGVyKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUhNQUNfU0hBMSwgZGVmKTsKKwlYU0VDUGxhdGZvcm1VdGlsczo6cmVnaXN0ZXJBbGdvcml0aG1IYW5kbGVyKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUhNQUNfU0hBMjI0LCBkZWYpOworCVhTRUNQbGF0Zm9ybVV0aWxzOjpyZWdpc3RlckFsZ29yaXRobUhhbmRsZXIoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJSE1BQ19TSEEyNTYsIGRlZik7CisJWFNFQ1BsYXRmb3JtVXRpbHM6OnJlZ2lzdGVyQWxnb3JpdGhtSGFuZGxlcihEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklITUFDX1NIQTM4NCwgZGVmKTsKKwlYU0VDUGxhdGZvcm1VdGlsczo6cmVnaXN0ZXJBbGdvcml0aG1IYW5kbGVyKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUhNQUNfU0hBNTEyLCBkZWYpOworCisJLy8gUmVnaXN0ZXIgZGVmYXVsdCBoYXNoaW5nIGFsZ29yaXRobSBoYW5kbGVycworCisJWFNFQ1BsYXRmb3JtVXRpbHM6OnJlZ2lzdGVyQWxnb3JpdGhtSGFuZGxlcihEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklTSEExLCBkZWYpOworCVhTRUNQbGF0Zm9ybVV0aWxzOjpyZWdpc3RlckFsZ29yaXRobUhhbmRsZXIoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJU0hBMjI0LCBkZWYpOworCVhTRUNQbGF0Zm9ybVV0aWxzOjpyZWdpc3RlckFsZ29yaXRobUhhbmRsZXIoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJU0hBMjU2LCBkZWYpOworCVhTRUNQbGF0Zm9ybVV0aWxzOjpyZWdpc3RlckFsZ29yaXRobUhhbmRsZXIoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJU0hBMzg0LCBkZWYpOworCVhTRUNQbGF0Zm9ybVV0aWxzOjpyZWdpc3RlckFsZ29yaXRobUhhbmRsZXIoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJU0hBNTEyLCBkZWYpOworCVhTRUNQbGF0Zm9ybVV0aWxzOjpyZWdpc3RlckFsZ29yaXRobUhhbmRsZXIoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJTUQ1LCBkZWYpOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU29tZSB1c2VmdWwgdXRpbGl0eSBmdW5jdGlvbnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworI2lmIDAKKworYm9vbCBjb21wYXJlQmFzZTY0U3RyaW5nVG9SYXcoc2FmZUJ1ZmZlciAmYjY0U0IsIAorCQkJCQkJCSAgdW5zaWduZWQgY2hhciAqIHJhdywgCisJCQkJCQkJICB1bnNpZ25lZCBpbnQgcmF3TGVuLCAKKwkJCQkJCQkgIHVuc2lnbmVkIGludCBtYXhDb21wYXJlID0gMCkgeworCS8vIERlY29kZSBhIGJhc2U2NCBidWZmZXIgYW5kIHRoZW4gY29tcGFyZSB0aGUgcmVzdWx0IHRvIGEgcmF3IGJ1ZmZlcgorCS8vIENvbXBhcmUgYXQgbW9zdCBtYXhDb21wYXJlIGJpdHMgKGlmIG1heENvbWFyZSA+IDApCisJLy8gTm90ZSAtIHdoaWxzdCB0aGUgb3RoZXIgcGFyYW1ldGVycyBhcmUgYnl0ZXMsIG1heENvbXBhcmUgaXMgYml0cworCisJdW5zaWduZWQgY2hhciBvdXRwdXRTdHJbMTAyNF07CisJdW5zaWduZWQgY2hhciBiNjRTdHJbMTAyNF07CisJdW5zaWduZWQgaW50IG91dHB1dExlbiA9IDA7CisJCisJWFNFQ0NyeXB0b0Jhc2U2NCAqIGI2NCA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5iYXNlNjQoKTsKKwkKKwlpZiAoIWI2NCkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q3J5cHRvUHJvdmlkZXJFcnJvciwgCisJCQkJIkVycm9yIHJlcXVlc3RpbmcgQmFzZTY0IG9iamVjdCBmcm9tIENyeXB0byBQcm92aWRlciIpOworCisJfQorCisJSmFuaXRvcjxYU0VDQ3J5cHRvQmFzZTY0PiBqX2I2NChiNjQpOworCisJc3RybmNweSgoY2hhciAqKSBiNjRTdHIsIChjaGFyICopIGI2NFNCLnJhd0J1ZmZlcigpLCAxMDIzKTsKKwliNjRTdHJbMTAyM10gPSAnXDAnOwkvLyBKdXN0IGluIGNhc2UKKworCWI2NC0+ZGVjb2RlSW5pdCgpOworCW91dHB1dExlbiA9IGI2NC0+ZGVjb2RlKCh1bnNpZ25lZCBjaGFyICopIGI2NFN0ciwgKHVuc2lnbmVkIGludCkgc3RybGVuKChjaGFyICopIGI2NFN0ciksIG91dHB1dFN0ciwgMTAyNCk7CisJb3V0cHV0TGVuICs9IGI2NC0+ZGVjb2RlRmluaXNoKCZvdXRwdXRTdHJbb3V0cHV0TGVuXSwgMTAyNCAtIG91dHB1dExlbik7CisKKwkvLyBDb21wYXJlCisKKwlkaXZfdCBkOworCXVuc2lnbmVkIGludCBtYXhDb21wYXJlQnl0ZXMsIG1heENvbXBhcmVCaXRzOworCW1heENvbXBhcmVCaXRzID0gMDsKKworCXVuc2lnbmVkIGludCBzaXplOworCisJaWYgKG1heENvbXBhcmUgPiAwKSB7CisJCWQgPSBkaXYobWF4Q29tcGFyZSwgOCk7CisJCW1heENvbXBhcmVCeXRlcyA9IGQucXVvdDsKKwkJaWYgKGQucmVtICE9IDApCisJCQltYXhDb21wYXJlQnl0ZXMrKzsKKworCQlpZiAocmF3TGVuIDwgbWF4Q29tcGFyZUJ5dGVzICYmIG91dHB1dExlbiA8IG1heENvbXBhcmVCeXRlcykgeworCQkJaWYgKHJhd0xlbiAhPSBvdXRwdXRMZW4pCisJCQkJcmV0dXJuIGZhbHNlOworCQkJc2l6ZSA9IHJhd0xlbjsKKwkJfQorCQllbHNlIGlmIChyYXdMZW4gPCBtYXhDb21wYXJlQnl0ZXMgfHwgb3V0cHV0TGVuIDwgbWF4Q29tcGFyZUJ5dGVzKSB7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwkJZWxzZQorCQkJc2l6ZSA9IG1heENvbXBhcmVCeXRlczsKKwl9CisJZWxzZSB7CisKKwkJaWYgKHJhd0xlbiAhPSBvdXRwdXRMZW4pCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJc2l6ZSA9IHJhd0xlbjsKKworCX0KKworCS8vIENvbXBhcmUgYnl0ZXMKKwl1bnNpZ25lZCBpbnQgaSwgajsKKwlmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgKysgaSkgeworCQlpZiAocmF3W2ldICE9IG91dHB1dFN0cltpXSkKKwkJCXJldHVybiBmYWxzZTsKKwl9CisKKwkvLyBDb21wYXJlIGJpdHMKKworCWNoYXIgbWFzayA9IDB4MDE7CisJaWYgKG1heENvbXBhcmUgIT0gMCkgeworCSAgICBmb3IgKGogPSAwIDsgaiA8ICh1bnNpZ25lZCBpbnQpIGQucmVtOyArK2kpIHsKKworCQkgICAgaWYgKChyYXdbaV0gJiBtYXNrKSAhPSAob3V0cHV0U3RyW2ldICYgbWFzaykpCisJCQkgICAgcmV0dXJuIGZhbHNlOworCisJCQltYXNrID0gbWFzayA8PCAxOworCQl9CisJfQorCisJcmV0dXJuIHRydWU7CisKK30KKworCit2b2lkIGNvbnZlcnRSYXdUb0Jhc2U2NFN0cmluZyhzYWZlQnVmZmVyICZiNjRTQiwgCisJCQkJCQkJICB1bnNpZ25lZCBjaGFyICogcmF3LCAKKwkJCQkJCQkgIHVuc2lnbmVkIGludCByYXdMZW4sIAorCQkJCQkJCSAgdW5zaWduZWQgaW50IG1heEJpdHMgPSAwKSB7CisKKwkvLyBUcmFuc2xhdGUgdGhlIHJhd2J1ZmZlciAoYXQgbW9zdCBtYXhCaXRzIG9yIHJhd0xlbiAtIHdoaWNoZXZlciBpcyBzbWFsbGVyKQorCS8vIHRvIGEgYmFzZTY0IHN0cmluZworCisJdW5zaWduZWQgY2hhciBiNjRTdHJbMTAyNF07CisJdW5zaWduZWQgaW50IG91dHB1dExlbiA9IDA7CisJCisJWFNFQ0NyeXB0b0Jhc2U2NCAqIGI2NCA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5iYXNlNjQoKTsKKwkKKwlpZiAoIWI2NCkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q3J5cHRvUHJvdmlkZXJFcnJvciwgCisJCQkJIkVycm9yIHJlcXVlc3RpbmcgQmFzZTY0IG9iamVjdCBmcm9tIENyeXB0byBQcm92aWRlciIpOworCisJfQorCisJSmFuaXRvcjxYU0VDQ3J5cHRvQmFzZTY0PiBqX2I2NChiNjQpOworCisJLy8gRGV0ZXJtaW5lIGxlbmd0aCB0byB0cmFuc2xhdGUKKwl1bnNpZ25lZCBpbnQgc2l6ZTsKKworCWlmIChtYXhCaXRzID4gMCkgeworCQlkaXZfdCBkID0gZGl2KG1heEJpdHMsIDgpOworCQlzaXplID0gZC5xdW90OworCQlpZiAoZC5yZW0gIT0gMCkKKwkJCSsrc2l6ZTsKKwkJCisJCWlmIChzaXplID4gcmF3TGVuKQorCQkJc2l6ZSA9IHJhd0xlbjsKKwl9CisKKwllbHNlCisJCXNpemUgPSByYXdMZW47CisKKwliNjQtPmVuY29kZUluaXQoKTsKKwlvdXRwdXRMZW4gPSBiNjQtPmVuY29kZSgodW5zaWduZWQgY2hhciAqKSByYXcsIHJhd0xlbiwgYjY0U3RyLCAxMDI0KTsKKwlvdXRwdXRMZW4gKz0gYjY0LT5lbmNvZGVGaW5pc2goJmI2NFN0cltvdXRwdXRMZW5dLCAxMDI0IC0gb3V0cHV0TGVuKTsKKwliNjRTdHJbb3V0cHV0TGVuXSA9ICdcMCc7CisKKwkvLyBDb3B5IG91dAorCisJYjY0U0Iuc2JTdHJjcHlJbigoY2hhciAqKSBiNjRTdHIpOworCit9CisKKyNlbmRpZiAvKiAwICovCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgR2V0IHRoZSBDYW5vbmljYWxpc2VkIEJZVEVfU1RSRUFNIG9mIHRoZSBTaWduZWRJbmZvCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYU0VDQmluVFhGTUlucHV0U3RyZWFtICogRFNJR1NpZ25hdHVyZTo6bWFrZUJpbklucHV0U3RyZWFtKHZvaWQpIGNvbnN0IHsKKworCVRYRk1CYXNlICogdHhmbTsKKworCS8vIENyZWF0ZSB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHRoZSB0cmFuc2Zvcm0gbGlzdAorCisJWFNFQ25ldyh0eGZtLCBUWEZNRG9jT2JqZWN0KG1wX2RvYykpOworCisJVFhGTUNoYWluICogY2hhaW47CisJWFNFQ25ldyhjaGFpbiwgVFhGTUNoYWluKHR4Zm0pKTsKKwlKYW5pdG9yPFRYRk1DaGFpbj4gal9jaGFpbihjaGFpbik7CisKKwkoKFRYRk1Eb2NPYmplY3QgKikgdHhmbSktPnNldElucHV0KG1wX2RvYywgbXBfc2lnbmVkSW5mby0+Z2V0RE9NTm9kZSgpKTsKKwkKKwkvLyBjYW5vbmljYWxpc2UgdGhlIFNpZ25lZEluZm8gY29udGVudAorCisJc3dpdGNoIChtcF9zaWduZWRJbmZvLT5nZXRDYW5vbmljYWxpemF0aW9uTWV0aG9kKCkpIHsKKworCWNhc2UgQ0FOT05fQzE0Tl9OT0MgOgorCisJCVhTRUNuZXcodHhmbSwgVFhGTUMxNG4obXBfZG9jKSk7CisJCWNoYWluLT5hcHBlbmRUeGZtKHR4Zm0pOworCQl0eGZtLT5zdHJpcENvbW1lbnRzKCk7CisJCQorCQlicmVhazsKKworCWNhc2UgQ0FOT05fQzE0Tl9DT00gOgorCisJCVhTRUNuZXcodHhmbSwgVFhGTUMxNG4obXBfZG9jKSk7CisJCWNoYWluLT5hcHBlbmRUeGZtKHR4Zm0pOworCQl0eGZtLT5hY3RpdmF0ZUNvbW1lbnRzKCk7CisKKwkJYnJlYWs7CisKKwljYXNlIENBTk9OX0MxNE5FX05PQyA6CisKKwkJWFNFQ25ldyh0eGZtLCBUWEZNQzE0bihtcF9kb2MpKTsKKwkJY2hhaW4tPmFwcGVuZFR4Zm0odHhmbSk7CisJCSgoVFhGTUMxNG4gKikgdHhmbSktPnNldEV4Y2x1c2l2ZSgpOworCQl0eGZtLT5zdHJpcENvbW1lbnRzKCk7CisJCQorCQlicmVhazsKKworCWNhc2UgQ0FOT05fQzE0TkVfQ09NIDoKKworCQlYU0VDbmV3KHR4Zm0sIFRYRk1DMTRuKG1wX2RvYykpOworCQljaGFpbi0+YXBwZW5kVHhmbSh0eGZtKTsKKwkJKChUWEZNQzE0biAqKSB0eGZtKS0+c2V0RXhjbHVzaXZlKCk7CisJCXR4Zm0tPmFjdGl2YXRlQ29tbWVudHMoKTsKKworCQlicmVhazsKKworCWRlZmF1bHQgOgorCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6U2lnVmZ5RXJyb3IsCisJCQkiQ2Fub25pY2FsaXNhdGlvbiBtZXRob2QgdW5rbm93biBpbiBEU0lHU2lnbmF0dXJlOjptYWtlQmluSW5wdXRTdHJlYW0oKSIpOworCisJfQorCisJLy8gTm93IGNyZWF0ZSB0aGUgSW5wdXRTdHJlYW0KKworCVhTRUNCaW5UWEZNSW5wdXRTdHJlYW0gKiByZXQ7CisKKwlyZXQgPSBuZXcgWFNFQ0JpblRYRk1JbnB1dFN0cmVhbShjaGFpbik7CisJal9jaGFpbi5yZWxlYXNlKCk7CisKKwlyZXR1cm4gcmV0OworCit9CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBHZXQgdGhlIGxpc3Qgb2YgcmVmZXJlbmNlcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRFNJR1JlZmVyZW5jZUxpc3QgKiBEU0lHU2lnbmF0dXJlOjpnZXRSZWZlcmVuY2VMaXN0KHZvaWQpIHsKKworCXJldHVybiBtcF9zaWduZWRJbmZvID8gbXBfc2lnbmVkSW5mby0+Z2V0UmVmZXJlbmNlTGlzdCgpIDogTlVMTDsKKworfQorCitjb25zdCBEU0lHUmVmZXJlbmNlTGlzdCAqIERTSUdTaWduYXR1cmU6OmdldFJlZmVyZW5jZUxpc3Qodm9pZCkgY29uc3QgeworCisJcmV0dXJuIG1wX3NpZ25lZEluZm8gPyBtcF9zaWduZWRJbmZvLT5nZXRSZWZlcmVuY2VMaXN0KCkgOiBOVUxMOworCit9CisKK2NvbnN0IFhNTENoICogRFNJR1NpZ25hdHVyZTo6Z2V0QWxnb3JpdGhtVVJJKCkgY29uc3QgeworCisgICAgcmV0dXJuIG1wX3NpZ25lZEluZm8gPyBtcF9zaWduZWRJbmZvLT5nZXRBbGdvcml0aG1VUkkoKSA6IE5VTEw7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBTZXQgYW5kIEdldCBSZXNvbHZlcnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwordm9pZCBEU0lHU2lnbmF0dXJlOjpzZXRVUklSZXNvbHZlcihYU0VDVVJJUmVzb2x2ZXIgKiByZXNvbHZlcikgeworCisJbXBfZW52LT5zZXRVUklSZXNvbHZlcihyZXNvbHZlcik7CisKK30KKworWFNFQ1VSSVJlc29sdmVyICogRFNJR1NpZ25hdHVyZTo6Z2V0VVJJUmVzb2x2ZXIodm9pZCkgY29uc3QgeworCisJcmV0dXJuIG1wX2Vudi0+Z2V0VVJJUmVzb2x2ZXIoKTsKKworfQorCit2b2lkIERTSUdTaWduYXR1cmU6OnNldEtleUluZm9SZXNvbHZlcihYU0VDS2V5SW5mb1Jlc29sdmVyICogcmVzb2x2ZXIpIHsKKworCWlmIChtcF9LZXlJbmZvUmVzb2x2ZXIgIT0gMCkKKwkJZGVsZXRlIG1wX0tleUluZm9SZXNvbHZlcjsKKworCW1wX0tleUluZm9SZXNvbHZlciA9IHJlc29sdmVyLT5jbG9uZSgpOworCit9CisKK1hTRUNLZXlJbmZvUmVzb2x2ZXIgKiBEU0lHU2lnbmF0dXJlOjpnZXRLZXlJbmZvUmVzb2x2ZXIodm9pZCkgY29uc3QgeworCisJcmV0dXJuIG1wX0tleUluZm9SZXNvbHZlcjsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIE9iamVjdCBIYW5kbGluZworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRFNJR09iamVjdCAqIERTSUdTaWduYXR1cmU6OmFwcGVuZE9iamVjdCh2b2lkKSB7CisKKwlEU0lHT2JqZWN0ICogcmV0OworCVhTRUNuZXcocmV0LCBEU0lHT2JqZWN0KG1wX2VudikpOworCURPTUVsZW1lbnQgKiBlbHQgPSByZXQtPmNyZWF0ZUJsYW5rT2JqZWN0KCk7CisKKwltcF9zaWdOb2RlLT5hcHBlbmRDaGlsZChlbHQpOworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChtcF9zaWdOb2RlKTsKKworCW1fb2JqZWN0cy5wdXNoX2JhY2socmV0KTsKKworCXJldHVybiByZXQ7CisKK30KKworaW50IERTSUdTaWduYXR1cmU6OmdldE9iamVjdExlbmd0aCh2b2lkKSBjb25zdCB7CisKKwlyZXR1cm4gKHVuc2lnbmVkIGludCkgbV9vYmplY3RzLnNpemUoKTsKKworfQorCitEU0lHT2JqZWN0ICogRFNJR1NpZ25hdHVyZTo6Z2V0T2JqZWN0SXRlbShpbnQgaSkgeworCisJaWYgKCBpIDwgMCB8fCBpID49ICgoaW50KSBtX29iamVjdHMuc2l6ZSgpKSkgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246Ok9iamVjdEVycm9yLAorCQkJIkRTSUdTaWduYXR1cmU6OmdldE9iamVjdEl0ZW0gLSBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKwl9CisKKwlyZXR1cm4gbV9vYmplY3RzW2ldOworCit9CisKK2NvbnN0IERTSUdPYmplY3QgKiBEU0lHU2lnbmF0dXJlOjpnZXRPYmplY3RJdGVtKGludCBpKSBjb25zdCB7CisKKwlpZiAoIGkgPCAwIHx8IGkgPj0gKChpbnQpIG1fb2JqZWN0cy5zaXplKCkpKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6T2JqZWN0RXJyb3IsCisJCQkiRFNJR1NpZ25hdHVyZTo6Z2V0T2JqZWN0SXRlbSAtIGluZGV4IG91dCBvZiByYW5nZSIpOworCX0KKworCXJldHVybiBtX29iamVjdHNbaV07CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBTaWduYXR1cmUKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMKKworRFNJR1NpZ25hdHVyZTo6RFNJR1NpZ25hdHVyZShET01Eb2N1bWVudCAqZG9jLCBET01Ob2RlICpzaWdOb2RlKSA6CittX2tleUluZm9MaXN0KDApLAorbV9lcnJTdHIoIiIpIHsKKworCW1wX2RvYyA9IGRvYzsKKwltcF9zaWdOb2RlID0gc2lnTm9kZTsKKwltcF9zaWduaW5nS2V5ID0gTlVMTDsKKwltcF9zaWduZWRJbmZvID0gTlVMTDsKKwltcF9LZXlJbmZvUmVzb2x2ZXIgPSBOVUxMOworCW1wX0tleUluZm9Ob2RlID0gTlVMTDsKKwltX2xvYWRlZCA9IGZhbHNlOworCW1faW50ZXJsb2NraW5nUmVmZXJlbmNlcyA9IGZhbHNlOworCisJLy8gU2V0IHVwIG91ciBmb3JtYXR0ZXIKKwlYU0VDbmV3KG1wX2Zvcm1hdHRlciwgWFNFQ1NhZmVCdWZmZXJGb3JtYXR0ZXIoIlVURi04IixYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcywgCisJCQkJCQkJCQkJCQlYTUxGb3JtYXR0ZXI6OlVuUmVwX0NoYXJSZWYpKTsKKworCS8vIFNldCB1cCB0aGUgZW52aXJvbm1lbnQKKwlYU0VDbmV3KG1wX2VudiwgWFNFQ0Vudihkb2MpKTsKKworCW1fa2V5SW5mb0xpc3Quc2V0RW52aXJvbm1lbnQobXBfZW52KTsKKworfQorCitEU0lHU2lnbmF0dXJlOjpEU0lHU2lnbmF0dXJlKHZvaWQpIDoKK21fa2V5SW5mb0xpc3QoMCksCittX2VyclN0cigiIikgeworCW1wX2RvYyA9IE5VTEw7CisJbXBfc2lnTm9kZSA9IE5VTEw7CisJbXBfc2lnbmluZ0tleSA9IE5VTEw7CisJbXBfc2lnbmVkSW5mbyA9IE5VTEw7CisJbXBfS2V5SW5mb1Jlc29sdmVyID0gTlVMTDsKKwltcF9LZXlJbmZvTm9kZSA9IE5VTEw7CisJbV9sb2FkZWQgPSBmYWxzZTsKKwltX2ludGVybG9ja2luZ1JlZmVyZW5jZXMgPSBmYWxzZTsKKworCS8vIFNldCB1cCBvdXIgZm9ybWF0dGVyCisJWFNFQ25ldyhtcF9mb3JtYXR0ZXIsIFhTRUNTYWZlQnVmZmVyRm9ybWF0dGVyKCJVVEYtOCIsWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMsIAorCQkJCQkJCQkJCQkJWE1MRm9ybWF0dGVyOjpVblJlcF9DaGFyUmVmKSk7CisKKwlYU0VDbmV3KG1wX2VudiwgWFNFQ0VudihOVUxMKSk7CisKKwltX2tleUluZm9MaXN0LnNldEVudmlyb25tZW50KG1wX2Vudik7CisKK30KKworRFNJR1NpZ25hdHVyZTo6fkRTSUdTaWduYXR1cmUoKSB7CisKKwlpZiAobXBfZW52ICE9IE5VTEwpCisJCWRlbGV0ZSBtcF9lbnY7CisKKwlpZiAobXBfc2lnbmluZ0tleSAhPSBOVUxMKSB7CisKKwkJZGVsZXRlIG1wX3NpZ25pbmdLZXk7CisJCW1wX3NpZ25pbmdLZXkgPSBOVUxMOworCisJfQorCisJaWYgKG1wX3NpZ25lZEluZm8gIT0gTlVMTCkgeworCisJCWRlbGV0ZSBtcF9zaWduZWRJbmZvOworCQltcF9zaWduZWRJbmZvID0gTlVMTDsKKworCX0KKworCWlmIChtcF9mb3JtYXR0ZXIgIT0gTlVMTCkgeworCisJCWRlbGV0ZSBtcF9mb3JtYXR0ZXI7CisJCW1wX2Zvcm1hdHRlciA9IE5VTEw7CisJfQorCisJaWYgKG1wX0tleUluZm9SZXNvbHZlciAhPSBOVUxMKSB7CisJCWRlbGV0ZSBtcF9LZXlJbmZvUmVzb2x2ZXI7CisJCW1wX0tleUluZm9SZXNvbHZlciA9IE5VTEw7CisJfQorCisJLy8gRGVsZXRlIGFueSBvYmplY3QgaXRlbXMKKwlmb3IgKGludCBpID0gMDsgaSA8ICgoaW50KSBtX29iamVjdHMuc2l6ZSgpKTsgKytpKSB7CisJCWRlbGV0ZSAobV9vYmplY3RzW2ldKTsKKwl9CisKK30KKworLy8gQWN0aW9ucworCitjb25zdCBYTUxDaCAqIERTSUdTaWduYXR1cmU6OmdldEVyck1zZ3MoKSBjb25zdCB7CisKKwlyZXR1cm4gbV9lcnJTdHIucmF3WE1MQ2hCdWZmZXIoKTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFByZXR0eSBQcmludGluZworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBEU0lHU2lnbmF0dXJlOjpzZXRQcmV0dHlQcmludChib29sIGZsYWcpIHsKKworCW1wX2Vudi0+c2V0UHJldHR5UHJpbnRGbGFnKGZsYWcpOworCit9CisKKworYm9vbCBEU0lHU2lnbmF0dXJlOjpnZXRQcmV0dHlQcmludCh2b2lkKSBjb25zdCB7CisKKwlyZXR1cm4gbXBfZW52LT5nZXRQcmV0dHlQcmludEZsYWcoKTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENyZWF0aW5nIHNpZ25hdHVyZXMgZnJvbSBibGFuaworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBEU0lHU2lnbmF0dXJlOjpzZXREU0lHTlNQcmVmaXgoY29uc3QgWE1MQ2ggKiBwcmVmaXgpIHsKKworCW1wX2Vudi0+c2V0RFNJR05TUHJlZml4KHByZWZpeCk7CisKK30KKwordm9pZCBEU0lHU2lnbmF0dXJlOjpzZXRFQ05TUHJlZml4KGNvbnN0IFhNTENoICogcHJlZml4KSB7CisKKwltcF9lbnYtPnNldEVDTlNQcmVmaXgocHJlZml4KTsKKworfQorCit2b2lkIERTSUdTaWduYXR1cmU6OnNldFhQRk5TUHJlZml4KGNvbnN0IFhNTENoICogcHJlZml4KSB7CisKKwltcF9lbnYtPnNldFhQRk5TUHJlZml4KHByZWZpeCk7CisKK30KKworLy8gZ2V0CisKK2NvbnN0IFhNTENoICogRFNJR1NpZ25hdHVyZTo6Z2V0RFNJR05TUHJlZml4KCkgY29uc3QgeworCisJcmV0dXJuIG1wX2Vudi0+Z2V0RFNJR05TUHJlZml4KCk7CisKK30KKworCitjb25zdCBYTUxDaCAqIERTSUdTaWduYXR1cmU6OmdldEVDTlNQcmVmaXgoKSBjb25zdCB7CisKKwlyZXR1cm4gbXBfZW52LT5nZXRFQ05TUHJlZml4KCk7CisKK30KKworY29uc3QgWE1MQ2ggKiBEU0lHU2lnbmF0dXJlOjpnZXRYUEZOU1ByZWZpeCgpIGNvbnN0IHsKKworCXJldHVybiBtcF9lbnYtPmdldFhQRk5TUHJlZml4KCk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDcmVhdGluZyBCbGFuayBTaWduYXR1cmUKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RPTUVsZW1lbnQgKkRTSUdTaWduYXR1cmU6OmNyZWF0ZUJsYW5rU2lnbmF0dXJlKERPTURvY3VtZW50ICpkb2MsCisJCQljYW5vbmljYWxpemF0aW9uTWV0aG9kIGNtLAorCQkJc2lnbmF0dXJlTWV0aG9kCXNtLAorCQkJaGFzaE1ldGhvZCBobSkgeworCisJLy8gVGhpcyBpcyBub3cgZGVwcmVjYXRlZC4gIEJlY2F1c2UgdGhpcyBpcyBzbywgd2UgZ28gdGhlIGxvbmcgd2F5IC0gdHJhbnNsYXRlCisJLy8gdG8gVVJJIGFuZCB0aGVuIGNhbGwgdGhlICJzdGFuZGFyZCIgbWV0aG9kLCB3aGljaCB3aWxsIHRyYW5zbGF0ZSBiYWNrIHRvIAorCS8vIGludGVybmFsIGVudW1zIGlmIHBvc3NpYmxlCisKKwljb25zdCBYTUxDaCAqIGNVUkk7CisJc2FmZUJ1ZmZlciBzVVJJOworCisJaWYgKChjVVJJID0gY2Fub25pY2FsaXphdGlvbk1ldGhvZDJVTklDT0RFVVJJKGNtKSkgPT0gTlVMTCkgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlVua25vd25DYW5vbmljYWxpemF0aW9uLAorCQkJIkRTSUdTaWduYXR1cmU6OmNyZWF0ZUJsYW5rU2lnbmF0dXJlIC0gQ2Fub25pY2FsaXNhdGlvbiBtZXRob2QgdW5rbm93biIpOworCX0KKworCWlmIChzaWduYXR1cmVIYXNoTWV0aG9kMlVSSShzVVJJLCBzbSwgaG0pID09IGZhbHNlKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6VW5rbm93blNpZ25hdHVyZUFsZ29yaXRobSwKKwkJCSJEU0lHU2lnbmF0dXJlOjpjcmVhdGVCbGFua1NpZ25hdHVyZSAtIFNpZ25hdHVyZS9IYXNoIG1ldGhvZCB1bmtub3duIik7CisJfQorCisJcmV0dXJuIGNyZWF0ZUJsYW5rU2lnbmF0dXJlKGRvYywgY1VSSSwgc1VSSS5zYlN0clRvWE1MQ2goKSk7CisKK30KKworCitET01FbGVtZW50ICpEU0lHU2lnbmF0dXJlOjpjcmVhdGVCbGFua1NpZ25hdHVyZSgKKwkJRE9NRG9jdW1lbnQgKmRvYywKKwkJY29uc3QgWE1MQ2ggKiBjYW5vbmljYWxpemF0aW9uQWxnb3JpdGhtVVJJLAorCQljb25zdCBYTUxDaCAqIHNpZ25hdHVyZUFsZ29yaXRobVVSSSkgeworCisJLy8gIk5ldyIgbWV0aG9kIHRvIGNyZWF0ZSBhIGJsYW5rIHNpZ25hdHVyZSwgYmFzZWQgb24gVVJJcy4KKworCW1wX2RvYyA9IGRvYzsKKwltcF9lbnYtPnNldFBhcmVudERvY3VtZW50KGRvYyk7CisKKwljb25zdCBYTUxDaCAqIHByZWZpeE5TID0gbXBfZW52LT5nZXREU0lHTlNQcmVmaXgoKTsKKworCXNhZmVCdWZmZXIgc3RyOworCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4TlMsICJTaWduYXR1cmUiKTsKKworCURPTUVsZW1lbnQgKnNpZ05vZGUgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklEU0lHLCBzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisKKwlpZiAocHJlZml4TlNbMF0gPT0gJ1wwJykgeworCQlzdHIuc2JUcmFuc2NvZGVJbigieG1sbnMiKTsKKwl9CisJZWxzZSB7CisJCXN0ci5zYlRyYW5zY29kZUluKCJ4bWxuczoiKTsKKwkJc3RyLnNiWE1MQ2hDYXQocHJlZml4TlMpOworCX0KKworCXNpZ05vZGUtPnNldEF0dHJpYnV0ZU5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhNTE5TLCAKKwkJCQkJCQlzdHIucmF3WE1MQ2hCdWZmZXIoKSwgCisJCQkJCQkJRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRFNJRyk7CisKKwltcF9zaWdOb2RlID0gc2lnTm9kZTsKKworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChtcF9zaWdOb2RlKTsKKworCS8vIENyZWF0ZSB0aGUgc2tlbGV0b24gU2lnbmVkSW5mbworCVhTRUNuZXcobXBfc2lnbmVkSW5mbywgRFNJR1NpZ25lZEluZm8obXBfZG9jLCBtcF9mb3JtYXR0ZXIsIG1wX2VudikpOworCQorCW1wX3NpZ05vZGUtPmFwcGVuZENoaWxkKG1wX3NpZ25lZEluZm8tPmNyZWF0ZUJsYW5rU2lnbmVkSW5mbygKKwkJY2Fub25pY2FsaXphdGlvbkFsZ29yaXRobVVSSSwgc2lnbmF0dXJlQWxnb3JpdGhtVVJJKSk7CisJbXBfZW52LT5kb1ByZXR0eVByaW50KG1wX3NpZ05vZGUpOworCisJLy8gQ3JlYXRlIGEgZHVtbXkgc2lnbmF0dXJlIHZhbHVlIChkdW1teSB1bnRpbCBzaWduZWQpCisKKwltYWtlUU5hbWUoc3RyLCBtcF9lbnYtPmdldERTSUdOU1ByZWZpeCgpLCAiU2lnbmF0dXJlVmFsdWUiKTsKKwlET01FbGVtZW50ICpzaWdWYWxOb2RlID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRFNJRywgCisJCQkJCQkJCQkJCQkgIHN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKwltcF9zaWduYXR1cmVWYWx1ZU5vZGUgPSBzaWdWYWxOb2RlOworCW1wX3NpZ05vZGUtPmFwcGVuZENoaWxkKHNpZ1ZhbE5vZGUpOworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChtcF9zaWdOb2RlKTsKKworCS8vIFNvbWUgdGV4dCB0byBtYXJrIHRoaXMgYXMgYSB0ZW1wbGF0ZSBvbmx5CisJc2lnVmFsTm9kZS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZShNQUtFX1VOSUNPREVfU1RSSU5HKCJOb3QgeWV0IHNpZ25lZCIpKSk7CisKKwltX2xvYWRlZCA9IHRydWU7CisJCisJcmV0dXJuIHNpZ05vZGU7Cit9CisKKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENyZWF0aW5nIFJlZmVyZW5jZXMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RTSUdSZWZlcmVuY2UgKiBEU0lHU2lnbmF0dXJlOjpjcmVhdGVSZWZlcmVuY2UoY29uc3QgWE1MQ2ggKiBVUkksIAorCQkJCQkJCQloYXNoTWV0aG9kIGhtLCAKKwkJCQkJCQkJY2hhciAqIHR5cGUpIHsKKworCXJldHVybiBtcF9zaWduZWRJbmZvLT5jcmVhdGVSZWZlcmVuY2UoVVJJLCBobSwgdHlwZSk7CisKK30KKworRFNJR1JlZmVyZW5jZSAqIERTSUdTaWduYXR1cmU6OmNyZWF0ZVJlZmVyZW5jZSgKKwkJY29uc3QgWE1MQ2ggKiBVUkksCisJCWNvbnN0IFhNTENoICogaGFzaEFsZ29yaXRobVVSSSwgCisJCWNvbnN0IFhNTENoICogdHlwZSkgeworCisJcmV0dXJuIG1wX3NpZ25lZEluZm8tPmNyZWF0ZVJlZmVyZW5jZShVUkksIGhhc2hBbGdvcml0aG1VUkksIHR5cGUpOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgTWFuaXB1bGF0aW9uIG9mIEtleUluZm8gZWxlbWVudHMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgRFNJR1NpZ25hdHVyZTo6Y2xlYXJLZXlJbmZvKHZvaWQpIHsKKworCWlmIChtcF9LZXlJbmZvTm9kZSA9PSAwKQorCQlyZXR1cm47CisKKwlpZiAobXBfc2lnTm9kZS0+cmVtb3ZlQ2hpbGQobXBfS2V5SW5mb05vZGUpICE9IG1wX0tleUluZm9Ob2RlKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZERTSUdDaGlsZE5vdEZvdW5kLAorCQkJIkF0dGVtcHRlZCB0byByZW1vdmUgS2V5SW5mbyBub2RlIGJ1dCBpdCBpcyBubyBsb25nZXIgYSBjaGlsZCBvZiA8U2lnbmF0dXJlPiIpOworCisJfQorCisJbXBfS2V5SW5mb05vZGUtPnJlbGVhc2UoKTsJCS8vIE5vIGxvbmdlciByZXF1aXJlZAorCisJbXBfS2V5SW5mb05vZGUgPSBOVUxMOworCisJLy8gQ2xlYXIgb3V0IHRoZSBsaXN0CisJbV9rZXlJbmZvTGlzdC5lbXB0eSgpOworCit9CisKK3ZvaWQgRFNJR1NpZ25hdHVyZTo6Y3JlYXRlS2V5SW5mb0VsZW1lbnQodm9pZCkgeworCisJaWYgKG1wX0tleUluZm9Ob2RlICE9IE5VTEwpCisJCXJldHVybjsKKworCXNhZmVCdWZmZXIgc3RyOworCisJbWFrZVFOYW1lKHN0ciwgbXBfZW52LT5nZXREU0lHTlNQcmVmaXgoKSwgIktleUluZm8iKTsKKworCW1wX0tleUluZm9Ob2RlID0gbV9rZXlJbmZvTGlzdC5jcmVhdGVLZXlJbmZvKCk7CisKKwkvLyBBcHBlbmQgdGhlIG5vZGUgdG8gdGhlIGVuZCBvZiB0aGUgc2lnbmF0dXJlCisJCisJRE9NTm9kZSAqIGFmdGVyU2lnbmF0dXJlVmFsdWUgPSBtcF9zaWduYXR1cmVWYWx1ZU5vZGUtPmdldE5leHRTaWJsaW5nKCk7CisJd2hpbGUgKGFmdGVyU2lnbmF0dXJlVmFsdWUgIT0gMCAmJiBhZnRlclNpZ25hdHVyZVZhbHVlLT5nZXROb2RlVHlwZSgpICE9IERPTU5vZGU6OkVMRU1FTlRfTk9ERSkKKwkJYWZ0ZXJTaWduYXR1cmVWYWx1ZSA9IGFmdGVyU2lnbmF0dXJlVmFsdWUtPmdldE5leHRTaWJsaW5nKCk7CisKKwlpZiAoYWZ0ZXJTaWduYXR1cmVWYWx1ZSA9PSAwKSB7CisJCW1wX3NpZ05vZGUtPmFwcGVuZENoaWxkKG1wX0tleUluZm9Ob2RlKTsKKwkJbXBfZW52LT5kb1ByZXR0eVByaW50KG1wX3NpZ05vZGUpOworCX0KKwllbHNlIHsKKwkJbXBfc2lnTm9kZS0+aW5zZXJ0QmVmb3JlKG1wX0tleUluZm9Ob2RlLCBhZnRlclNpZ25hdHVyZVZhbHVlKTsKKwkJaWYgKG1wX2Vudi0+Z2V0UHJldHR5UHJpbnRGbGFnKCkgPT0gdHJ1ZSkKKwkJCW1wX3NpZ05vZGUtPmluc2VydEJlZm9yZShtcF9kb2MtPmNyZWF0ZVRleHROb2RlKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ck5MKSwKKwkJCQlhZnRlclNpZ25hdHVyZVZhbHVlKTsKKwl9CisKK30KKworRFNJR0tleUluZm9WYWx1ZSAqIERTSUdTaWduYXR1cmU6OmFwcGVuZERTQUtleVZhbHVlKGNvbnN0IFhNTENoICogUCwgCisJCQkJCQkgICBjb25zdCBYTUxDaCAqIFEsIAorCQkJCQkJICAgY29uc3QgWE1MQ2ggKiBHLCAKKwkJCQkJCSAgIGNvbnN0IFhNTENoICogWSkgeworCisJY3JlYXRlS2V5SW5mb0VsZW1lbnQoKTsKKwlyZXR1cm4gbV9rZXlJbmZvTGlzdC5hcHBlbmREU0FLZXlWYWx1ZShQLCBRLCBHLCBZKTsKKworfQorCitEU0lHS2V5SW5mb1ZhbHVlICogRFNJR1NpZ25hdHVyZTo6YXBwZW5kUlNBS2V5VmFsdWUoY29uc3QgWE1MQ2ggKiBtb2R1bHVzLCAKKwkJCQkJCSAgIGNvbnN0IFhNTENoICogZXhwb25lbnQpIHsKKworCWNyZWF0ZUtleUluZm9FbGVtZW50KCk7CisJcmV0dXJuIG1fa2V5SW5mb0xpc3QuYXBwZW5kUlNBS2V5VmFsdWUobW9kdWx1cywgZXhwb25lbnQpOworCit9CisKKworRFNJR0tleUluZm9YNTA5ICogRFNJR1NpZ25hdHVyZTo6YXBwZW5kWDUwOURhdGEodm9pZCkgeworCisJY3JlYXRlS2V5SW5mb0VsZW1lbnQoKTsKKwlyZXR1cm4gbV9rZXlJbmZvTGlzdC5hcHBlbmRYNTA5RGF0YSgpOworCit9CisKK0RTSUdLZXlJbmZvTmFtZSAqIERTSUdTaWduYXR1cmU6OmFwcGVuZEtleU5hbWUoY29uc3QgWE1MQ2ggKiBuYW1lLCBib29sIGlzRE5hbWUpIHsKKworCWNyZWF0ZUtleUluZm9FbGVtZW50KCk7CisJcmV0dXJuIG1fa2V5SW5mb0xpc3QuYXBwZW5kS2V5TmFtZShuYW1lLCBpc0ROYW1lKTsKKworfQorCitEU0lHS2V5SW5mb1BHUERhdGEgKiBEU0lHU2lnbmF0dXJlOjphcHBlbmRQR1BEYXRhKGNvbnN0IFhNTENoICogaWQsIGNvbnN0IFhNTENoICogcGFja2V0KSB7CisKKwljcmVhdGVLZXlJbmZvRWxlbWVudCgpOworCXJldHVybiBtX2tleUluZm9MaXN0LmFwcGVuZFBHUERhdGEoaWQsIHBhY2tldCk7CisKK30KKworRFNJR0tleUluZm9TUEtJRGF0YSAqIERTSUdTaWduYXR1cmU6OmFwcGVuZFNQS0lEYXRhKGNvbnN0IFhNTENoICogc2V4cCkgeworCisJY3JlYXRlS2V5SW5mb0VsZW1lbnQoKTsKKwlyZXR1cm4gbV9rZXlJbmZvTGlzdC5hcHBlbmRTUEtJRGF0YShzZXhwKTsKKworfQorCitEU0lHS2V5SW5mb01nbXREYXRhICogRFNJR1NpZ25hdHVyZTo6YXBwZW5kTWdtdERhdGEoY29uc3QgWE1MQ2ggKiBkYXRhKSB7CisKKwljcmVhdGVLZXlJbmZvRWxlbWVudCgpOworCXJldHVybiBtX2tleUluZm9MaXN0LmFwcGVuZE1nbXREYXRhKGRhdGEpOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgV29ya2luZyBvbiBFeGlzdGluZyB0ZW1wbGF0ZXMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwordm9pZCBEU0lHU2lnbmF0dXJlOjpsb2FkKHZvaWQpIHsKKworCS8vIExvYWQgYWxsIHRoZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBzb3VyY2UgZG9jdW1lbnQgaW50byBsb2NhbCB2YXJpYWJsZXMgZm9yIGVhc2llcgorCS8vIG1hbmlwdWxhdGlvbiBieSB0aGUgb3RoZXIgZnVuY3Rpb25zIGluIHRoZSBjbGFzcworCisJaWYgKG1wX3NpZ05vZGUgPT0gTlVMTCkgeworCisJCS8vIEF0dGVtcHQgdG8gbG9hZCBhbiBlbXB0eSBzaWduYXR1cmUgZWxlbWVudAorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkxvYWRFbXB0eVNpZ25hdHVyZSk7CisKKwl9CisKKwlpZiAoIXN0ckVxdWFscyhnZXREU0lHTG9jYWxOYW1lKG1wX3NpZ05vZGUpLCAiU2lnbmF0dXJlIikpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkxvYWROb25TaWduYXR1cmUpOworCisJfQorCisJbV9sb2FkZWQgPSB0cnVlOworCisJLy8gRmluZCB0aGUgcHJlZml4IGJlaW5nIHVzZWQgc28gdGhhdCB3ZSBjYW4gbGF0ZXIgdXNlIGl0IHRvIG1hbmlwdWxhdGUgdGhlIHNpZ25hdHVyZQorCW1wX2Vudi0+c2V0RFNJR05TUHJlZml4KG1wX3NpZ05vZGUtPmdldFByZWZpeCgpKTsKKworCS8vIE5vdyBjaGVjayBmb3IgU2lnbmVkSW5mbworCURPTU5vZGUgKnRtcEVsdCA9IG1wX3NpZ05vZGUtPmdldEZpcnN0Q2hpbGQoKTsKKworCXdoaWxlICh0bXBFbHQgIT0gMCAmJiAodG1wRWx0LT5nZXROb2RlVHlwZSgpICE9IERPTU5vZGU6OkVMRU1FTlRfTk9ERSkpCisJCS8vIFNraXAgdGV4dCBhbmQgY29tbWVudHMKKwkJdG1wRWx0ID0gdG1wRWx0LT5nZXROZXh0U2libGluZygpOworCisJaWYgKHRtcEVsdCA9PSAwIHx8ICFzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZSh0bXBFbHQpLCAiU2lnbmVkSW5mbyIpKSB7CisKKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWREU0lHQ2hpbGROb3RGb3VuZCwgCisJCQkJCSJFeHBlY3RlZCA8U2lnbmVkSW5mbz4gYXMgZmlyc3QgY2hpbGQgb2YgPFNpZ25hdHVyZT4iKTsKKworCX0KKworCS8vIEhhdmUgYSBzaWduZWQgaW5mbworCisJWFNFQ25ldyhtcF9zaWduZWRJbmZvLCBEU0lHU2lnbmVkSW5mbyhtcF9kb2MsIG1wX2Zvcm1hdHRlciwgdG1wRWx0LCBtcF9lbnYpKTsKKwltcF9zaWduZWRJbmZvLT5sb2FkKCk7CisKKwkvLyBMb29rIGF0IFNpZ25hdHVyZSBWYWx1ZQorCXRtcEVsdCA9IHRtcEVsdC0+Z2V0TmV4dFNpYmxpbmcoKTsKKworCXdoaWxlICh0bXBFbHQgIT0gMCAmJiB0bXBFbHQtPmdldE5vZGVUeXBlKCkgIT0gRE9NTm9kZTo6RUxFTUVOVF9OT0RFKQorCQl0bXBFbHQgPSB0bXBFbHQtPmdldE5leHRTaWJsaW5nKCk7CisKKwlpZiAodG1wRWx0ID09IDAgfHwgIXN0ckVxdWFscyhnZXREU0lHTG9jYWxOYW1lKHRtcEVsdCksICJTaWduYXR1cmVWYWx1ZSIpKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZERTSUdDaGlsZE5vdEZvdW5kLAorCQkJIkV4cGVjdGVkIDxTaWduYXR1cmVWYWx1ZT4gbm9kZSIpOworCisJfQorCisJRE9NTm9kZSAqdG1wU1YgPSB0bXBFbHQtPmdldEZpcnN0Q2hpbGQoKTsKKwl3aGlsZSAodG1wU1YgIT0gMCAmJiB0bXBTVi0+Z2V0Tm9kZVR5cGUoKSAhPSBET01Ob2RlOjpURVhUX05PREUpCisJCXRtcFNWID0gdG1wU1YtPmdldE5leHRTaWJsaW5nKCk7CisKKwlpZiAodG1wU1YgPT0gMCkKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZERTSUdDaGlsZE5vdEZvdW5kLAorCQkiRXhwZWN0ZWQgVEVYVCBjaGlsZCBvZiA8U2lnbmF0dXJlVmFsdWU+Iik7CisKKwltcF9zaWduYXR1cmVWYWx1ZU5vZGUgPSB0bXBFbHQ7CisJCisJLy8gVGhlIHNpZ25hdHVyZSB2YWx1ZSBpcyB0cmFuc2NvZGVkIHRvIGxvY2FsIGNvZGUgcGFnZSwgYXMgaXQgaXMgZWFzaWVyCisJLy8gdG8gd29yayB3aXRoLCBhbmQgc2hvdWxkIGJlIGxvdyBBU0NJSSBpbiBhbnkgY2FzZSAoQmFzZTY0KQorCisJbV9zaWduYXR1cmVWYWx1ZVNCLnNiVHJhbnNjb2RlSW4odG1wU1YtPmdldE5vZGVWYWx1ZSgpKTsKKworCisJLy8gTm93IGxvb2sgYXQgS2V5SW5mbworCXRtcEVsdCA9IHRtcEVsdC0+Z2V0TmV4dFNpYmxpbmcoKTsKKworCXdoaWxlICh0bXBFbHQgIT0gMCAmJiAhKCh0bXBFbHQtPmdldE5vZGVUeXBlKCkgPT0gRE9NTm9kZTo6RUxFTUVOVF9OT0RFKSAmJiAKKwkJc3RyRXF1YWxzKGdldERTSUdMb2NhbE5hbWUodG1wRWx0KSwgIktleUluZm8iKSkpCisJCXRtcEVsdCA9IHRtcEVsdC0+Z2V0TmV4dFNpYmxpbmcoKTsKKworCWlmICh0bXBFbHQgIT0gMCAmJiBzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZSh0bXBFbHQpLCAiS2V5SW5mbyIpKSB7CisKKwkJLy8gSGF2ZSBhIGtleUluZm8KKworCQltcF9LZXlJbmZvTm9kZSA9IHRtcEVsdDsJCS8vIEluIGNhc2Ugd2UgbGF0ZXIgd2FudCB0byBtYW5pcHVsYXRlIGl0CisKKwkJbV9rZXlJbmZvTGlzdC5sb2FkTGlzdEZyb21YTUwodG1wRWx0KTsKKworCQl0bXBFbHQgPSBmaW5kTmV4dEVsZW1lbnRDaGlsZCh0bXBFbHQpOworCX0KKworCXdoaWxlICh0bXBFbHQgIT0gMCAmJiBzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZSh0bXBFbHQpLCAiT2JqZWN0IikpIHsKKworCQlEU0lHT2JqZWN0ICogb2JqOworCQlYU0VDbmV3KG9iaiwgRFNJR09iamVjdChtcF9lbnYsIHRtcEVsdCkpOworCQlvYmotPmxvYWQoKTsKKworCQltX29iamVjdHMucHVzaF9iYWNrKG9iaik7CisKKwkJdG1wRWx0ID0gZmluZE5leHRFbGVtZW50Q2hpbGQodG1wRWx0KTsKKworCX0KKy8qCisJKiBTdHJpY3RseSBzcGVha2luZywgdGhpcyBzaG91bGQgcmVtYWluLCBidXQgaXQgY2F1c2VzIHRvbyBtYW55IHByb2JsZW1zIHdpdGggbm9uCisJKiBjb25mb3JtaW5nIHNpZ25hdHVyZXMKKworCWlmICh0bXBFbHQgIT0gMCkgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkRFNJR0NoaWxkTm90Rm91bmQsIAorCQkJIkRTSUdTaWduYXR1cmU6OmxvYWQgLSBVbmV4cGVjdGVkIChub24gT2JqZWN0KSBFbGVtZW50IGZvdW5kIGF0IGVuZCBvZiBzaWduYXR1cmUiKTsKKwl9CisqLworfQorCitUWEZNQ2hhaW4gKiBEU0lHU2lnbmF0dXJlOjpnZXRTaWduZWRJbmZvSW5wdXQodm9pZCkgeworCisJVFhGTUJhc2UgKiB0eGZtOworCVRYRk1DaGFpbiAqIGNoYWluOworCisJLy8gRmlyc3Qgd2UgY2FsY3VsYXRlIHRoZSBoYXNoLiAgU3RhcnQgb2ZmIGJ5IGNyZWF0aW5nIGEgc3RhcnRpbmcgcG9pbnQKKwlYU0VDbmV3KHR4Zm0sIFRYRk1Eb2NPYmplY3QobXBfZG9jKSk7CisJWFNFQ25ldyhjaGFpbiwgVFhGTUNoYWluKHR4Zm0pKTsKKwlKYW5pdG9yPFRYRk1DaGFpbj4gal9jaGFpbihjaGFpbik7CisKKwkoKFRYRk1Eb2NPYmplY3QgKikgdHhmbSktPnNldElucHV0KG1wX2RvYywgbXBfc2lnbmVkSW5mby0+Z2V0RE9NTm9kZSgpKTsKKwkKKwkvLyBjYW5vbmljYWxpc2UgdGhlIFNpZ25lZEluZm8gY29udGVudAorCisJc3dpdGNoIChtcF9zaWduZWRJbmZvLT5nZXRDYW5vbmljYWxpemF0aW9uTWV0aG9kKCkpIHsKKworCWNhc2UgQ0FOT05fQzE0Tl9OT0MgOgorCisJCVhTRUNuZXcodHhmbSwgVFhGTUMxNG4obXBfZG9jKSk7CisJCWNoYWluLT5hcHBlbmRUeGZtKHR4Zm0pOworCQl0eGZtLT5zdHJpcENvbW1lbnRzKCk7CisJCQorCQlicmVhazsKKworCWNhc2UgQ0FOT05fQzE0Tl9DT00gOgorCisJCVhTRUNuZXcodHhmbSwgVFhGTUMxNG4obXBfZG9jKSk7CisJCWNoYWluLT5hcHBlbmRUeGZtKHR4Zm0pOworCQl0eGZtLT5hY3RpdmF0ZUNvbW1lbnRzKCk7CisKKwkJYnJlYWs7CisKKwljYXNlIENBTk9OX0MxNE5FX05PQyA6CisKKwkJWFNFQ25ldyh0eGZtLCBUWEZNQzE0bihtcF9kb2MpKTsKKwkJY2hhaW4tPmFwcGVuZFR4Zm0odHhmbSk7CisJCSgoVFhGTUMxNG4gKikgdHhmbSktPnNldEV4Y2x1c2l2ZSgpOworCQl0eGZtLT5zdHJpcENvbW1lbnRzKCk7CisJCQorCQlicmVhazsKKworCWNhc2UgQ0FOT05fQzE0TkVfQ09NIDoKKworCQlYU0VDbmV3KHR4Zm0sIFRYRk1DMTRuKG1wX2RvYykpOworCQljaGFpbi0+YXBwZW5kVHhmbSh0eGZtKTsKKwkJKChUWEZNQzE0biAqKSB0eGZtKS0+c2V0RXhjbHVzaXZlKCk7CisJCXR4Zm0tPmFjdGl2YXRlQ29tbWVudHMoKTsKKworCQlicmVhazsKKworCWRlZmF1bHQgOgorCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6U2lnVmZ5RXJyb3IsCisJCQkiQ2Fub25pY2FsaXNhdGlvbiBtZXRob2QgdW5rbm93biBpbiBEU0lHU2lnbmF0dXJlOjpjYWxjdWxhdGVTaWduZWRJbmZvSGFzaCgpIik7CisKKwl9CisJCisJal9jaGFpbi5yZWxlYXNlKCk7CisJcmV0dXJuIGNoYWluOworCit9CisKK3Vuc2lnbmVkIGludCBEU0lHU2lnbmF0dXJlOjpjYWxjdWxhdGVTaWduZWRJbmZvSGFzaCh1bnNpZ25lZCBjaGFyICogaGFzaEJ1ZiwgCisJCQkJCQkJCQkJCQkJdW5zaWduZWQgaW50IGhhc2hCdWZMZW4pIHsKKworCS8vIEdldCB0aGUgU2lnbmVkSW5mbyBpbnB1dCBieXRlcworCVRYRk1DaGFpbiAqIGNoYWluID0gZ2V0U2lnbmVkSW5mb0lucHV0KCk7CisJSmFuaXRvcjxUWEZNQ2hhaW4+IGpfY2hhaW4oY2hhaW4pOworCisJLy8gQ2hlY2sgZm9yIGRlYnVnZ2luZyBzaW5rIGZvciB0aGUgZGF0YQorICAgIFRYRk1CYXNlKiBzaW5rID0gWFNFQ1BsYXRmb3JtVXRpbHM6OkdldFJlZmVyZW5jZUxvZ2dpbmdTaW5rKG1wX2RvYyk7CisgICAgaWYgKHNpbmspCisgICAgICAgIGNoYWluLT5hcHBlbmRUeGZtKHNpbmspOworCisJLy8gU2V0dXAgSGFzaAorCS8vIEZpcnN0IGZpbmQgdGhlIGFwcHJvcHJpYXRlIGhhbmRsZXIgZm9yIHRoZSBVUkkKKwlYU0VDQWxnb3JpdGhtSGFuZGxlciAqIGhhbmRsZXIgPSAKKwkJWFNFQ1BsYXRmb3JtVXRpbHM6OmdfYWxnb3JpdGhtTWFwcGVyLT5tYXBVUklUb0hhbmRsZXIoCisJCQkJCW1wX3NpZ25lZEluZm8tPmdldEFsZ29yaXRobVVSSSgpKTsKKworCWlmIChoYW5kbGVyID09IE5VTEwpIHsKKworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6U2lnVmZ5RXJyb3IsCisJCQkiSGFzaCBtZXRob2QgdW5rbm93biBpbiBEU0lHU2lnbmF0dXJlOjpjYWxjdWxhdGVTaWduZWRJbmZvSGFzaCgpIik7CisKKwl9CisKKwlpZiAoIWhhbmRsZXItPmFwcGVuZFNpZ25hdHVyZUhhc2hUeGZtKGNoYWluLCBtcF9zaWduZWRJbmZvLT5nZXRBbGdvcml0aG1VUkkoKSwgbXBfc2lnbmluZ0tleSkpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlNpZ1ZmeUVycm9yLAorCQkJIlVuZXhwZWN0ZWQgZXJyb3IgaW4gaGFuZGxlciB3aGlsc3QgYXBwZW5kaW5nIFNpZ25hdHVyZSBIYXNoIHRyYW5zZm9ybSIpOworCisJfQorCisKKwkvLyBXcml0ZSBoYXNoIHRvIHRoZSBidWZmZXIKKwlyZXR1cm4gY2hhaW4tPmdldExhc3RUeGZtKCktPnJlYWRCeXRlcygoWE1MQnl0ZSAqKSBoYXNoQnVmLCBoYXNoQnVmTGVuKTsKKworfQorCit1bnNpZ25lZCBpbnQgRFNJR1NpZ25hdHVyZTo6Y2FsY3VsYXRlU2lnbmVkSW5mb0FuZFJlZmVyZW5jZUhhc2godW5zaWduZWQgY2hhciAqIGhhc2hCdWYsIAorCQkJCQkJCQkJCQkJCXVuc2lnbmVkIGludCBoYXNoQnVmTGVuKSB7CisKKwkvLyBTZXQgdXAgdGhlIHJlZmVyZW5jZSBsaXN0IGhhc2hlcyAtIGluY2x1ZGluZyBhbnkgbWFuaWZlc3RzCisJbXBfc2lnbmVkSW5mby0+aGFzaChtX2ludGVybG9ja2luZ1JlZmVyZW5jZXMpOworCS8vIGNhbGN1bGFldCBzaWduZWQgSW5mb0hhc2gKKwlyZXR1cm4gY2FsY3VsYXRlU2lnbmVkSW5mb0hhc2goaGFzaEJ1ZixoYXNoQnVmTGVuKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBWZXJpZnkgYSBzaWduYXR1cmUKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Jvb2wgRFNJR1NpZ25hdHVyZTo6dmVyaWZ5U2lnbmF0dXJlT25seUludGVybmFsKHZvaWQpIHsKKworCXVuc2lnbmVkIGNoYXIgaGFzaFs0MDk2XTsKKwlpbnQgaGFzaExlbjsKKworCWlmICghbV9sb2FkZWQpIHsKKworCQkvLyBOZWVkIHRvIGNhbGwgImxvYWQiIHByaW9yIHRvIGNoZWNraW5nIGEgc2lnbmF0dXJlCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6U2lnVmZ5RXJyb3IsCisJCQkJCSJEU0lHU2lnbmF0dXJlOjp2ZXJpZnkoKSBjYWxsZWQgcHJpb3IgdG8gRFNJR1NpZ25hdHVyZTo6bG9hZCgpIik7CisKKwl9CisKKwkvLyBGSVg6IENWRS0yMDA5LTAyMTcKKworCWlmIChtcF9zaWduZWRJbmZvLT5nZXRITUFDT3V0cHV0TGVuZ3RoKCkgPiAwICYmIG1wX3NpZ25lZEluZm8tPmdldEhNQUNPdXRwdXRMZW5ndGgoKSA8IDgwKSB7CisJICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6U2lnVmZ5RXJyb3IsCisgICAgICAgICAgICAiRFNJR1NpZ25hdHVyZTo6dmVyaWZ5KCkgLSBITUFDT3V0cHV0TGVuZ3RoIGlzIHVuc2FmZSIpOworCX0KKworCS8vIFRyeSB0byBmaW5kIGEga2V5CisJaWYgKG1wX3NpZ25pbmdLZXkgPT0gTlVMTCkgeworCisvLwkJLy8gVHJ5IHRvIGxvYWQgYSBrZXkgZnJvbSB0aGUgS2V5SW5mbyBsaXN0CisvLwkJaWYgKChtcF9zaWduaW5nS2V5ID0gbV9rZXlJbmZvTGlzdC5maW5kS2V5KCkpID09IE5VTEwpIHsKKworLy8JCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlNpZ1ZmeUVycm9yLAorLy8JCQkJIkRTSUdTaWduYXR1cmU6OnZlcmlmeSgpIC0gbm8gdmVyaWZpY2F0aW9uIGtleSBsb2FkZWQgYW5kIGNhbm5vdCBkZXRlcm1pbmUgZnJvbSBLZXlJbmZvIGxpc3QiKTsKKy8vCQl9CisKKwkJaWYgKG1wX0tleUluZm9SZXNvbHZlciA9PSBOVUxMKSB7CisJCQkKKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6U2lnVmZ5RXJyb3IsCisJCQkJIkRTSUdTaWduYXR1cmU6OnZlcmlmeSgpIC0gbm8gdmVyaWZpY2F0aW9uIGtleSBsb2FkZWQgYW5kIG5vIEtleUluZm9SZXNvbHZlciBsb2FkZWQiKTsKKworCQl9CisJCQorCQlpZiAoKG1wX3NpZ25pbmdLZXkgPSBtcF9LZXlJbmZvUmVzb2x2ZXItPnJlc29sdmVLZXkoJm1fa2V5SW5mb0xpc3QpKSA9PSBOVUxMKSB7CisKKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6U2lnVmZ5RXJyb3IsCisJCQkJIkRTSUdTaWduYXR1cmU6OnZlcmlmeSgpIC0gbm8gdmVyaWZpY2F0aW9uIGtleSBsb2FkZWQgYW5kIGNhbm5vdCBkZXRlcm1pbmUgZnJvbSBLZXlJbmZvUmVzb2x2ZXIiKTsKKwkJfQorCisJfQorCisJLy8gR2V0IHRoZSBTaWduZWRJbmZvIGlucHV0IGJ5dGVzCisJVFhGTUNoYWluICogY2hhaW4gPSBnZXRTaWduZWRJbmZvSW5wdXQoKTsKKwlKYW5pdG9yPFRYRk1DaGFpbj4gal9jaGFpbihjaGFpbik7CisKKwloYXNoTGVuID0gY2FsY3VsYXRlU2lnbmVkSW5mb0hhc2goaGFzaCwgNDA5Nik7CisKKwkvLyBOb3cgc2V0IHVwIHRvIHZlcmlmeQorCS8vIEZpcnN0IGZpbmQgdGhlIGFwcHJvcHJpYXRlIGhhbmRsZXIgZm9yIHRoZSBVUkkKKwlYU0VDQWxnb3JpdGhtSGFuZGxlciAqIGhhbmRsZXIgPSAKKwkJWFNFQ1BsYXRmb3JtVXRpbHM6OmdfYWxnb3JpdGhtTWFwcGVyLT5tYXBVUklUb0hhbmRsZXIoCisJCQkJCW1wX3NpZ25lZEluZm8tPmdldEFsZ29yaXRobVVSSSgpKTsKKworCWlmIChoYW5kbGVyID09IE5VTEwpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlNpZ1ZmeUVycm9yLAorCQkJIkhhc2ggbWV0aG9kIHVua25vd24gaW4gRFNJR1NpZ25hdHVyZTo6dmVyaWZ5U2lnbmF0dXJlT25seUludGVybmFsKCkiKTsKKworCX0KKworCWJvb2wgc2lnVmZ5UmV0ID0gaGFuZGxlci0+dmVyaWZ5QmFzZTY0U2lnbmF0dXJlKGNoYWluLCAKKwkJbXBfc2lnbmVkSW5mby0+Z2V0QWxnb3JpdGhtVVJJKCksIAorCQltX3NpZ25hdHVyZVZhbHVlU0IucmF3Q2hhckJ1ZmZlcigpLCAKKwkJbXBfc2lnbmVkSW5mby0+Z2V0SE1BQ091dHB1dExlbmd0aCgpLAorCQltcF9zaWduaW5nS2V5KTsKKworCWlmICghc2lnVmZ5UmV0KQorCQltX2VyclN0ci5zYlhNTENoQ2F0KCJWYWxpZGF0aW9uIG9mIDxTaWduZWRJbmZvPiBmYWlsZWQiKTsKKworCXJldHVybiBzaWdWZnlSZXQ7CisKK30KKworYm9vbCBEU0lHU2lnbmF0dXJlOjp2ZXJpZnlTaWduYXR1cmVPbmx5KHZvaWQpIHsKKworCW1fZXJyU3RyLnNiVHJhbnNjb2RlSW4oIiIpOworCXJldHVybiB2ZXJpZnlTaWduYXR1cmVPbmx5SW50ZXJuYWwoKTsKKworfQorCitib29sIERTSUdTaWduYXR1cmU6OnZlcmlmeSh2b2lkKSB7CisKKwkvLyBXZSBoYXZlIGEgKGhvcGVmdWxseSkgZnVsbHkgbG9hZGVkIHNpZ25hdHVyZS4gIE5lZWQgdG8gCisJLy8gdmVyaWZ5CisKKwlib29sIHJlZmVyZW5jZUNoZWNrUmVzdWx0OworCisJaWYgKCFtX2xvYWRlZCkgeworCisJCS8vIE5lZWQgdG8gY2FsbCAibG9hZCIgcHJpb3IgdG8gY2hlY2tpbmcgYSBzaWduYXR1cmUKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpTaWdWZnlFcnJvciwKKwkJCQkJIkRTSUdTaWduYXR1cmU6OnZlcmlmeSgpIGNhbGxlZCBwcmlvciB0byBEU0lHU2lnbmF0dXJlOjpsb2FkKCkiKTsKKworCX0KKworCS8vIFJlc2V0CisJbV9lcnJTdHIuc2JYTUxDaEluKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ckVtcHR5KTsKKworCS8vIEZpcnN0IHRoaW5nIHRvIGRvIGlzIGNoZWNrIHRoZSByZWZlcmVuY2VzCisKKwlyZWZlcmVuY2VDaGVja1Jlc3VsdCA9IG1wX3NpZ25lZEluZm8tPnZlcmlmeShtX2VyclN0cik7CisKKwkvLyBDaGVjayB0aGUgc2lnbmF0dXJlCisKKwlib29sIHNpZ1ZmeVJlc3VsdCA9IHZlcmlmeVNpZ25hdHVyZU9ubHlJbnRlcm5hbCgpOworCisJcmV0dXJuIHNpZ1ZmeVJlc3VsdCAmIHJlZmVyZW5jZUNoZWNrUmVzdWx0OworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFNpZ24gdGhlIFhNTCBkb2N1bWVudCB0aGF0IGhhcyBiZWVuIHByZXZpb3VzbHkgbG9hZGVkCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIERTSUdTaWduYXR1cmU6OnNpZ24odm9pZCkgeworCisJLy8gV2UgaGF2ZSBhIChob3BlZnVsbHkpIGZ1bGx5IGxvYWRlZCBzaWduYXR1cmUuICBOZWVkIHRvIAorCS8vIHNpZ24KKworCWlmICghbV9sb2FkZWQpIHsKKworCQkvLyBOZWVkIHRvIGNhbGwgImxvYWQiIHByaW9yIHRvIGNoZWNraW5nIGEgc2lnbmF0dXJlCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6U2lnVmZ5RXJyb3IsCisJCQkJCSJEU0lHU2lnbmF0dXJlOjpzaWduKCkgY2FsbGVkIHByaW9yIHRvIERTSUdTaWduYXR1cmU6OmxvYWQoKSIpOworCisJfQorCisJLy8gQ2hlY2sgd2UgaGF2ZSBhIGtleQorCWlmIChtcF9zaWduaW5nS2V5ID09IE5VTEwpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlNpZ1ZmeUVycm9yLAorCQkJIkRTSUdTaWduYXR1cmU6OnNpZ24oKSAtIG5vIHNpZ25pbmcga2V5IGxvYWRlZCIpOworCQkKKworCX0KKworCS8vIFJlc2V0IGVycm9yIHN0cmluZyBpbiBjYXNlIHdlIGhhdmUgYW55IHJlZmVyZW5jZSBwcm9ibGVtcy4KKwltX2VyclN0ci5zYlhNTENoSW4oRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyRW1wdHkpOworCisJLy8gU2V0IHVwIHRoZSByZWZlcmVuY2UgbGlzdCBoYXNoZXMgLSBpbmNsdWRpbmcgYW55IG1hbmlmZXN0cworCW1wX3NpZ25lZEluZm8tPmhhc2gobV9pbnRlcmxvY2tpbmdSZWZlcmVuY2VzKTsKKworCS8vIEdldCB0aGUgU2lnbmVkSW5mbyBpbnB1dCBieXRlcworCVRYRk1DaGFpbiAqIGNoYWluID0gZ2V0U2lnbmVkSW5mb0lucHV0KCk7CisJSmFuaXRvcjxUWEZNQ2hhaW4+IGpfY2hhaW4oY2hhaW4pOworCisJLy8gQ2FsY3VsYXRlIHRoZSBoYXNoIHRvIGJlIHNpZ25lZAorCisJc2FmZUJ1ZmZlciBiNjRCdWY7CisKKwlYU0VDQWxnb3JpdGhtSGFuZGxlciAqIGhhbmRsZXIgPSAKKwkJWFNFQ1BsYXRmb3JtVXRpbHM6OmdfYWxnb3JpdGhtTWFwcGVyLT5tYXBVUklUb0hhbmRsZXIoCisJCQkJCW1wX3NpZ25lZEluZm8tPmdldEFsZ29yaXRobVVSSSgpKTsKKworCWlmIChoYW5kbGVyID09IE5VTEwpIHsKKworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6U2lnVmZ5RXJyb3IsCisJCQkiSGFzaCBtZXRob2QgdW5rbm93biBpbiBEU0lHU2lnbmF0dXJlOjpzaWduKCkiKTsKKworCX0KKworCWlmICghaGFuZGxlci0+c2lnblRvU2FmZUJ1ZmZlcihjaGFpbiwgbXBfc2lnbmVkSW5mby0+Z2V0QWxnb3JpdGhtVVJJKCksIAorCQkJCQkJCQkgICBtcF9zaWduaW5nS2V5LCBtcF9zaWduZWRJbmZvLT5nZXRITUFDT3V0cHV0TGVuZ3RoKCksIGI2NEJ1ZikpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlNpZ1ZmeUVycm9yLAorCQkJIlVuZXhwZWN0ZWQgZXJyb3IgaW4gaGFuZGxlciB3aGlsc3QgYXBwZW5kaW5nIFNpZ25hdHVyZSBIYXNoIHRyYW5zZm9ybSIpOworCisJfQorCisJLy8gTm93IHdlIGhhdmUgdGhlIHNpZ25hdHVyZSAtIHBsYWNlIGl0IGluIHRoZSBET00gc3RydWN0dXJlcworCisJRE9NTm9kZSAqdG1wRWx0ID0gbXBfc2lnbmF0dXJlVmFsdWVOb2RlLT5nZXRGaXJzdENoaWxkKCk7CisKKwl3aGlsZSAodG1wRWx0ICE9IE5VTEwgJiYgdG1wRWx0LT5nZXROb2RlVHlwZSgpICE9IERPTU5vZGU6OlRFWFRfTk9ERSkKKwkJdG1wRWx0ID0gdG1wRWx0LT5nZXROZXh0U2libGluZygpOworCisJaWYgKHRtcEVsdCA9PSBOVUxMKSB7CisJCS8vIE5lZWQgdG8gY3JlYXRlIHRoZSB1bmRlcmx5aW5nIFRFWFRfTk9ERQorCQlET01Eb2N1bWVudCAqIGRvYyA9IG1wX3NpZ25hdHVyZVZhbHVlTm9kZS0+Z2V0T3duZXJEb2N1bWVudCgpOworCQl0bXBFbHQgPSBkb2MtPmNyZWF0ZVRleHROb2RlKGI2NEJ1Zi5zYlN0clRvWE1MQ2goKSk7CisJCW1wX3NpZ25hdHVyZVZhbHVlTm9kZS0+YXBwZW5kQ2hpbGQodG1wRWx0KTsKKwl9CisJZWxzZSB7CisJCXRtcEVsdC0+c2V0Tm9kZVZhbHVlKGI2NEJ1Zi5zYlN0clRvWE1MQ2goKSk7CisJfQorCisJLy8gQW5kIGNvcHkgdG8gdGhlIGxvY2FsIGJ1ZmZlcgorCW1fc2lnbmF0dXJlVmFsdWVTQiA9IGI2NEJ1ZjsKKwkKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBLZXkgTWFuYWdlbWVudAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBEU0lHU2lnbmF0dXJlOjpzZXRTaWduaW5nS2V5KFhTRUNDcnlwdG9LZXkgKmspIHsKKworCWlmIChtcF9zaWduaW5nS2V5ICE9IE5VTEwpCisJCWRlbGV0ZSBtcF9zaWduaW5nS2V5OworCisJbXBfc2lnbmluZ0tleSA9IGs7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBJRCBIYW5kbGluZworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLyoKKyAqIElEIGhhbmRsaW5nIGlzIHJlYWxseSBhbGwgZG9uZSB3aXRoaW4gdGhlIGVudmlyb25tZW50IG9iamVjdCAtIGp1c3QgcGFzcyB0aGUKKyAqIGNhbGxzIHN0cmFpZ2h0IHRocm91Z2gKKyAqLworCit2b2lkIERTSUdTaWduYXR1cmU6OnNldElkQnlBdHRyaWJ1dGVOYW1lKGJvb2wgZmxhZykgeworCisJbXBfZW52LT5zZXRJZEJ5QXR0cmlidXRlTmFtZShmbGFnKTsKKworfQorCitib29sIERTSUdTaWduYXR1cmU6OmdldElkQnlBdHRyaWJ1dGVOYW1lKHZvaWQpIGNvbnN0IHsKKworCXJldHVybiBtcF9lbnYtPmdldElkQnlBdHRyaWJ1dGVOYW1lKCk7CisKK30KKworCit2b2lkIERTSUdTaWduYXR1cmU6OnJlZ2lzdGVySWRBdHRyaWJ1dGVOYW1lKGNvbnN0IFhNTENoICogbmFtZSkgeworCisJbXBfZW52LT5yZWdpc3RlcklkQXR0cmlidXRlTmFtZShuYW1lKTsKKworfQorCitib29sIERTSUdTaWduYXR1cmU6OmRlcmVnaXN0ZXJJZEF0dHJpYnV0ZU5hbWUoY29uc3QgWE1MQ2ggKiBuYW1lKSB7CisKKwlyZXR1cm4gbXBfZW52LT5kZXJlZ2lzdGVySWRBdHRyaWJ1dGVOYW1lKG5hbWUpOworCit9CisKK3ZvaWQgRFNJR1NpZ25hdHVyZTo6cmVnaXN0ZXJJZEF0dHJpYnV0ZU5hbWVOUyhjb25zdCBYTUxDaCAqIG5zLCBjb25zdCBYTUxDaCAqIG5hbWUpIHsKKworCW1wX2Vudi0+cmVnaXN0ZXJJZEF0dHJpYnV0ZU5hbWVOUyhucywgbmFtZSk7CisKK30KKworYm9vbCBEU0lHU2lnbmF0dXJlOjpkZXJlZ2lzdGVySWRBdHRyaWJ1dGVOYW1lTlMoY29uc3QgWE1MQ2ggKiBucywgY29uc3QgWE1MQ2ggKiBuYW1lKSB7CisKKwlyZXR1cm4gbXBfZW52LT5kZXJlZ2lzdGVySWRBdHRyaWJ1dGVOYW1lTlMobnMsIG5hbWUpOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgT3RoZXIgZnVuY3Rpb25zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjb25zdCBYTUxDaCAqIERTSUdTaWduYXR1cmU6OmdldFNpZ25hdHVyZVZhbHVlKHZvaWQpIGNvbnN0IHsKKworCWlmIChtcF9zaWduYXR1cmVWYWx1ZU5vZGUgPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisKKwlyZXR1cm4gZmluZEZpcnN0Q2hpbGRPZlR5cGUobXBfc2lnbmF0dXJlVmFsdWVOb2RlLCBET01Ob2RlOjpURVhUX05PREUpLT5nZXROb2RlVmFsdWUoKTsKKworfQorCmRpZmYgLS1naXQgYS9jL3NyYy9kc2lnL0RTSUdTaWduYXR1cmUuaHBwIGIvYy9zcmMvZHNpZy9EU0lHU2lnbmF0dXJlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTkzYmM3Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZHNpZy9EU0lHU2lnbmF0dXJlLmhwcApAQCAtMCwwICsxLDEwMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDEwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIERTSUdTaWduYXR1cmUgOj0gQ2xhc3MgZm9yIGNoZWNraW5nIGFuZCBzZXR0aW5nIHVwIHNpZ25hdHVyZSBub2RlcyBpbiBhIERTSUcgc2lnbmF0dXJlCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIERTSUdTSUdOQVRVUkVfSU5DTFVERQorI2RlZmluZSBEU0lHU0lHTkFUVVJFX0lOQ0xVREUKKworLy8gWFNFQyBJbmNsdWRlcworI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1NhZmVCdWZmZXJGb3JtYXR0ZXIuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHVHJhbnNmb3JtLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0tleUluZm9MaXN0LmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0NvbnN0YW50cy5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdTaWduZWRJbmZvLmhwcD4KKworLy8gWGVyY2VzIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPgorCitjbGFzcyBYU0VDRW52OworY2xhc3MgWFNFQ0JpblRYRk1JbnB1dFN0cmVhbTsKK2NsYXNzIFhTRUNVUklSZXNvbHZlcjsKK2NsYXNzIFhTRUNLZXlJbmZvUmVzb2x2ZXI7CitjbGFzcyBEU0lHS2V5SW5mb1ZhbHVlOworY2xhc3MgRFNJR0tleUluZm9YNTA5OworY2xhc3MgRFNJR0tleUluZm9OYW1lOworY2xhc3MgRFNJR0tleUluZm9QR1BEYXRhOworY2xhc3MgRFNJR0tleUluZm9TUEtJRGF0YTsKK2NsYXNzIERTSUdLZXlJbmZvTWdtdERhdGE7CitjbGFzcyBEU0lHT2JqZWN0OworCisvKioKKyAqIEBpbmdyb3VwIHB1YnNpZworICovCisvKlxAeyovCisKKy8qKgorICogQGJyaWVmIFRoZSBtYWluIGNsYXNzIHVzZWQgZm9yIG1hbmlwdWxhdGluZyBYTUwgRGlnaXRhbCBTaWduYXR1cmVzLgorICoKKyAqIDxwPlRoZSBEU0lHU2lnbmF0dXJlIGNsYXNzIGlzIHVzZWQgdG8gbWFuaXB1bGF0ZSBhbmQgdmVyaWZ5CisgKiBcPHNpZ25hdHVyZVw+IGJsb2Nrcy4gIEl0IHNob3VsZCBvbmx5IGV2ZXIgYmUgY3JlYXRlZCB2aWEgdGhlIAorICogWFNFQ1Byb3ZpZGVyIGNsYXNzLjwvcD4KKyAqCisgKi8KKworY2xhc3MgRFNJR19FWFBPUlQgRFNJR1NpZ25hdHVyZSB7CisKK3Byb3RlY3RlZDoKKworICAgIC8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisgICAgLy9AeworCQorICAgIC8qKgorCSAqIFxicmllZiBDb250cnVjdG9yIGZvciB1c2Ugd2l0aCBleGlzdGluZyBYTUwgc2lnbmF0dXJlcyBvciB0ZW1wbGF0ZXMuCisJICoKKwkgKiA8cD5DcmVhdGUgYSBEU0lHU2lnbmF0dXJlIG9iamVjdCBiYXNlZCBvbiBhbiBhbHJlYWR5IGV4aXN0aW5nCisJICogRFNJRyBTaWduYXR1cmUgWE1MIG5vZGUuICBJdCBpcyBhc3N1bWVkIHRoYXQgdGhlIHVuZGVybHlpbmcKKwkgKiBET00gc3RydWN0dXJlIGlzIGluIHBsYWNlIGFuZCB3b3JrcyBjb3JyZWN0bHkuPC9wPgorCSAqCisJICogPHA+SXQgaXMgcmVxdWlyZWQgdGhhdCB0aGUgY2FsbGVyIHBhc3MgaW4gdGhlIHNpZ25hdHVyZSBET00gTm9kZQorCSAqIGFzIHRoZXJlIG1heSBiZSBtb3JlIHRoYW4gb25lIHNpZ25hdHVyZSBpbiBhIGRvY3VtZW50LiAgVGhlIGNhbGxlcgorCSAqIG5lZWRzIHRvIHNwZWNpZnkgd2hpY2ggc2lnbmF0dXJlIHRyZWUgaXMgdG8gYmUgdXNlZC48L3A+CisJICoKKwkgKiBAcGFyYW0gZG9jIFRoZSBET00gZG9jdW1lbnQgbm9kZSBpbiB3aGljaCB0aGUgc2lnbmF0dXJlIGlzIGVtYmVkZGVkLgorCSAqIEBwYXJhbSBzaWdOb2RlIFRoZSBET00gbm9kZSAod2l0aGluIGRvYykgdGhhdCBpcyB0byBiZSB1c2VkIGFzIHRoZSBiYXNlIG9mIHRoZSBzaWduYXR1cmUuCisJICogQHNlZSAjbG9hZAorCSAqLworCisJRFNJR1NpZ25hdHVyZShYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKmRvYywgCisJCQkJICBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqc2lnTm9kZSk7CisKKwl+RFNJR1NpZ25hdHVyZSgpOworICAgIC8vQH0KKwkKK3B1YmxpYzoKKworCS8qKiBAbmFtZSBMb2FkIGFuZCBTZXR1cCBGdW5jdGlvbnMgKi8KKwkvL0B7CisKKwkvKioKKwkgICogXGJyaWVmIExvYWQgdGhlIHNpZ25hdHVyZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBET00gc291cmNlLgorCSAgKgorCSAgKiBVc2VkIHRvIHRlbGwgdGhlIERTSUdTaWduYXR1cmUgb2JqZWN0IHRvIHJlYWQgZnJvbSB0aGUgRE9NIHRyZWUKKwkgICogaW50byBsb2NhbCBzdHJ1Y3R1cmVzLiAgV2lsbCB0aHJvdyB2YXJpb3VzIGV4Y2VwdGlvbnMgaWYgaXQgZmluZHMgdGhhdAorCSAgKiB0aGUgRE9NIHN0cnVjdHVyZSBpcyBub3QgaW4gbGluZSB3aXRoIHRoZSBYTUwgU2lnbmF0dXJlIHN0YW5kYXJkLgorCSAgKgorCSAgKi8KKworCXZvaWQgbG9hZCh2b2lkKTsKKworCS8qKgorCSAgKiBcYnJpZWYgRXh0ZXJuYWxseSBzZXQgdGhlIHNpZ25pbmcvdmVyaWZpY2F0aW9uIGtleQorCSAgKgorCSAgKiBVc2VkIHByaW9yIHRvIGEgdmVyaWZ5IG9yIHNpZ24gb3BlcmF0aW9uIHRvIHNldCB0aGUgc2lnbmF0dXJlIGtleSAocHVibGljIG9yCisJICAqIHByaXZhdGUgcmVzcGVjdGl2ZWx5KSB0byBiZSB1c2VkIGZvciB0aGUgb3BlcmF0aW9uLgorCSAgKgorCSAgKiBAbm90ZSBPbmNlIHBhc3NlZCBpbiB2aWEgdGhpcyBjYWxsLCB0aGUga2V5IGlzIG93bmVkIGJ5IHRoZSBTaWduYXR1cmUuICBJdCB3aWxsCisJICAqIGRlbGV0ZWQgd2hlbiBhIG5ldyBrZXkgaXMgbG9hZGVkIG9yIHRoZSBzaWduYXR1cmUgaXMgcmVsZWFzZWQuCisJICAqCisJICAqIEBzZWUgI3ZlcmlmeQorCSAgKiBAc2VlICNzaWduCisJICAqLworCisJdm9pZCBzZXRTaWduaW5nS2V5KFhTRUNDcnlwdG9LZXkgKmspOworCisJLy9AfQorCisJLyoqIEBuYW1lIFNpZ25hdHVyZSBPcGVyYXRpb25zICovCisJLy9AeworCisJLyoqCisJICAqIFxicmllZiBWZXJpZnkgdGhhdCBhIHNpZ25hdHVyZSBpcyB2YWxpZC4KKwkgICoKKwkgICogPHA+VGhlIDxJPnZlcmlmeTwvST4gZnVuY3Rpb24gd2lsbCB2YWxpZGF0ZSB0aGUgc2lnbmF0dXJlIG9mIGFuIFhNTCBkb2N1bWVudAorCSAgKiBwcmV2aW91c2x5IGxvYWRlZCBpbnRvIHRoZSBEU0lHU2lnbmF0dXJlIHN0cnVjdHVyZSB2aWEgYSA8ST5sb2FkPC9JPi48L3A+CisJICAqCisJICAqIDxwPkl0IHBlcmZvcm1zIHRoZSBmb2xsb3dpbmcgb3BlcmF0aW9ucyA6IDwvcD4KKwkgICogPHVsPgorCSAgKgkJPGxpPkl0ZXJhdGUgdGhyb3VnaCBlYWNoIHJlZmVyZW5jZSBhbmQgdmFsaWRhdGUgdGhlIGhhc2g7CisJICAqCQk8bGk+SXRlcmF0ZSB0aHJvdWdoIHJlZmVyZW5jZXMgY29udGFpbmVkIGluIFw8bWFuaWZlc3RcPiBlbGVtZW50czsKKwkgICoJCTxsaT5DYWxjdWxhdGUgdGhlIGhhc2ggb2YgdGhlIFw8U2lnbmVkSW5mb1w+IGVsZW1lbnQ7IGFuZAorCSAgKgkJPGxpPlZhbGlkYXRlIHRoZSBzaWduYXR1cmUgb2YgdGhlIGhhc2ggcHJldmlvdXNseSBjYWxjdWxhdGVkLgorCSAgKiA8L3VsPgorCSAgKiAKKwkgICogQHJldHVybnMgdHJ1ZS9mYWxzZQorCSAgKgkJPHVsPgorCSAgKiAgICAgICAgPGxpPjxiPnRydWU8L2I+ID0gU2lnbmF0dXJlIChhbmQgYWxsIHJlZmVyZW5jZXMpIHZhbGlkYXRlZCBjb3JyZWN0bHkuCisJICAqCQkgICA8bGk+PGI+ZmFsc2U8L2I+ID0gU2lnbmF0dXJlIHZhbGlkYXRpb24gZmFpbGVkLiAgQW4gZXJyb3IgbGlzdCBjYW4gYmUgZm91bmQgdmlhIGEKKwkgICogICAgICAgICAgY2FsbCB0byAjZ2V0RXJyTXNncy4KKwkgICoJCTwvdWw+CisJICAqIEBzZWUgI2xvYWQKKwkgICogQHNlZSAjZ2V0RXJyTXNncworCSAgKi8KKworCWJvb2wgdmVyaWZ5KHZvaWQpOworCisJLyoqCisJICAqIFxicmllZiBWZXJpZnkgYSBzaWduYXR1cmUgaXMgdmFsaWQgKHNraXAgcmVmZXJlbmNlcykuCisJICAqCisJICAqIDxwPlRoaXMgZnVuY3Rpb24gaXMgYWxtb3N0IHRoZSBzYW1lIGFzICN2ZXJpZnkgZXhjZXB0IGl0IHdpbGwgc2tpcCB0aGUKKwkgICogcmVmZXJlbmNlIGNoZWNrcy4KKwkgICoKKwkgICogQHNlZSAjbG9hZAorCSAgKiBAc2VlICN2ZXJpZnkKKwkgICovCisKKwlib29sIHZlcmlmeVNpZ25hdHVyZU9ubHkodm9pZCk7CisKKwkvKioKKwkgICogXGJyaWVmIFNpZ24gYSBEU0lHU2lnbmF0dXJlIERPTSBzdHJ1Y3R1cmUuCisJICAqCisJICAqIDxwPlRoZSAjc2lnbiBmdW5jdGlvbiB3aWxsIGNyZWF0ZSB0aGUgcmVmZXJlbmNlIGhhc2ggdmFsdWVzIGFuZCBzaWduYXR1cmUKKwkgICogdmFsdWUgaW4gYSBET00gc3RydWN0dXJlIHByZXZpb3VzbHkgY3JlYXRlZCB2aWEgYSAjbG9hZCBvciAjY3JlYXRlQmxhbmtTaWduYXR1cmUKKwkgICogY2FsbCA8L3A+CisJICAqCisJICAqIDxwPkl0IHBlcmZvcm1zIHRoZSBmb2xsb3dpbmcgb3BlcmF0aW9ucyA6IDwvcD4KKwkgICogPHVsPgorCSAgKgkJPGxpPkl0ZXJhdGUgdGhyb3VnaCBlYWNoIHJlZmVyZW5jZSwgY2FsY3VsYXRlIGFuZCBzZXQgdGhlIGhhc2ggdmFsdWU7CisJICAqCQk8bGk+SXRlcmF0ZSB0aHJvdWdoIHJlZmVyZW5jZXMgY29udGFpbmVkIGluIFw8bWFuaWZlc3RcPiBlbGVtZW50cyBhbmQgc2V0IHRoZWlyIHZhbHVlczsKKwkgICoJCTxsaT5DYWxjdWxhdGUgdGhlIGhhc2ggb2YgdGhlIFw8U2lnbmVkSW5mb1w+IGVsZW1lbnQ7IGFuZAorCSAgKgkJPGxpPkNhbGN1bGF0ZSAoYW5kIHNldCkgdGhlIHNpZ25hdHVyZSB2YWx1ZSBnaXZlbiB0aGUgaGFzaCBwcmV2aW91c2x5IGNhbGN1bGF0ZWQuCisJICAqIDwvdWw+CisJICAqIAorCSAgKiBAbm90ZSBUaGUga2V5IHRvIHVzZSBmb3Igc2lnbmluZyBtdXN0IGhhdmUgYmVlbiBzZXQgcHJpb3IgdG8gY2FsbCB0byBzaWduIHVzaW5nICNzZXRTaWduaW5nS2V5CisJICAqCisJICAqIEB0aHJvd3MgWFNFQ0V4Y2VwdGlvbiAoZm9yIGVycm9ycyBkdXJpbmcgdGhlIFhNTCBmb3JtYXR0aW5nIGFuZCBsb2FkaW5nKQorCSAgKiBAdGhyb3dzIFhTRUNDcnlwdG9FeGNlcHRpb24gKGZvciBlcnJvcnMgZHVyaW5nIHRoZSBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbnMpCisJICAqCisJICAqIEBzZWUgI3NldFNpZ25pbmdLZXkKKwkgICogQHNlZSAjbG9hZAorCSAgKiBAc2VlICNnZXRFcnJNc2dzCisJICAqLworCisJdm9pZCBzaWduKHZvaWQpOworCS8vQH0KKworCS8qKiBAbmFtZSBGdW5jdGlvbnMgdG8gY3JlYXRlIGFuZCBtYW5pcHVsYXRlIHNpZ25hdHVyZSBlbGVtZW50cy4gKi8KKwkvL0B7CisJCisJLyoqCisJICAqIFxicmllZiBTZXQgdGhlIHByZWZpeCBiZSB1c2VkIGZvciB0aGUgRFNJRyBuYW1lc3BhY2UuCisJICAqCisJICAqIDxwPldoZW4gdGhlIFhTRUMgbGlicmFyeSBjcmVhdGVzIFhNTCBFbGVtZW50IG5vZGVzLCBpdCB1c2VzIHRoZSBwcmVmaXggaGVyZQorCSAgKiBmb3IgYWxsIG5vZGVzIGNyZWF0ZWQuICBCeSBkZWZhdWx0LCB0aGUgbGlicmFyeSBhc3N1bWVzIHRoYXQgdGhlIGRlZmF1bHQKKwkgICogbmFtZXNwYWNlIGlzIHVzZWQuPC9wPgorCSAgKgorCSAgKiA8cD5UaGUgI2NyZWF0ZUJsYW5rU2lnbmF0dXJlIGZ1bmN0aW9uIHdpbGwgdXNlIHRoaXMgcHJlZml4IHRvIHNldHVwIHRoZQorCSAgKiBkc2lnIG5hbWVzcGFjZS4gIEUuZy4gKGFzc3VtaW5nIGEgY2FsbCBoYXMgYmVlbiBtYWRlIHRvIHNldCB0aGUgcHJlZml4IHRvICJkcyIpCisJICAqIHRoZSBcPFNpZ25hdHVyZVw+IGVsZW1lbnQgd2lsbCBoYXZlIGEgbmFtZXNwYWNlIGF0dHJpYnV0ZSBhZGRlZCBvZjwvcD4KKwkgICoKKwkgICogPHA+eG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9wPgorCSAgKgorCSAgKiA8cD5JZiBubyBwcmVmaXggaGFzIGJlZW4gc2V0LCB0aGlzIGF0dHJpYnV0ZSB3aWxsIGJlIHNldCBhcyB0aGUgZGVmYXVsdCBuYW1lc3BhY2U8L3A+CisJICAqCisJICAqIEBzZWUgI2NyZWF0ZUJsYW5rU2lnbmF0dXJlCisJICAqIEBwYXJhbSBwcmVmaXggVGhlIFVURi0xNiBlbmNvaWRlZCBOUyBwcmVmaXggdG8gdXNlIGZvciB0aGUgWE1MIAorCSAgKiBEaWdpdGFsIFNpZ25hdHVyZSBub2RlcworCSAgKi8KKworCXZvaWQgc2V0RFNJR05TUHJlZml4KGNvbnN0IFhNTENoICogcHJlZml4KTsKKworCS8qKgorCSAgKiBcYnJpZWYgU2V0IHRoZSBwcmVmaXggYmUgdXNlZCBmb3IgdGhlIEV4Y2x1c2l2ZSBDYW5vbmljYWxpc2F0aW9uIG5hbWVzcGFjZS4KKwkgICoKKwkgICogVGhlIEV4Y2x1c2l2ZSBDYW5vbmljYWxpc2F0aW9uIHNwZWNpZmljYXRpb24gZGVmaW5lcyBhIG5ldyBuYW1lc3BhY2UgZm9yIHRoZQorCSAgKiBJbmNsdXNpdmVOYW1lc3BhY2VzIG5vZGUuICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgcHJlZml4CisJICAqIHRoYXQgdGhlIGxpYnJhcnkgd2lsbCB1c2Ugd2hlbiBjcmVhdGluZyBub2RlcyB3aXRoaW4gdGhpcyBuYW1lc3BhY2UuCisJICAqCisJICAqIDxwPnhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9wPgorCSAgKgorCSAgKiBJZiBubyBwcmVmaXggaXMgc2V0LCB0aGUgZGVmYXVsdCBuYW1lc3BhY2Ugd2lsbCBiZSB1c2VkCisJICAqCisJICAqIEBzZWUgI2NyZWF0ZUJsYW5rU2lnbmF0dXJlCisJICAqIEBwYXJhbSBwcmVmaXggVGhlIFVURi0xNiBlbmNvaWRlZCBOUyBwcmVmaXggdG8gdXNlIGZvciB0aGUgWE1MIAorCSAgKiBFeGNsdXNpdmUgQ2Fub25pY2FsaXNhdGlvbiBub2RlcworCSAgKi8KKworCXZvaWQgc2V0RUNOU1ByZWZpeChjb25zdCBYTUxDaCAqIHByZWZpeCk7CisKKwkvKioKKwkgICogXGJyaWVmIFNldCB0aGUgcHJlZml4IGJlIHVzZWQgZm9yIHRoZSBYUGF0aC1GaWx0ZXIyIG5hbWVzcGFjZS4KKwkgICoKKwkgICogVGhlIFhQYXRoRmlsdGVyIGRlZmluaXRpb24gdXNlcyBpdHMgb3duIG5hbWVzcGFjZS4gIFRoaXMKKwkgICogbWV0aG9kIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgcHJlZml4IHRoYXQgdGhlIGxpYnJhcnkgd2lsbCB1c2UKKwkgICogd2hlbiBjcmVhdGluZyBlbGVtZW50cyBpbiB0aGlzIG5hbWVzcGFjZQorCSAgKgorCSAgKiA8cD54bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNi94bWxkc2lnLWZpbHRlcjIiPC9wPgorCSAgKgorCSAgKiBJZiBubyBwcmVmaXggaXMgc2V0LCB0aGUgZGVmYXVsdCBuYW1lc3BhY2Ugd2lsbCBiZSB1c2VkCisJICAqCisJICAqIEBzZWUgI2NyZWF0ZUJsYW5rU2lnbmF0dXJlCisJICAqIEBwYXJhbSBwcmVmaXggVGhlIFVURi0xNiBlbmNvaWRlZCBOUyBwcmVmaXggdG8gdXNlIGZvciB0aGUgWFBhdGgKKwkgICogZmlsdGVyIG5vZGVzCisJICAqLworCisJdm9pZCBzZXRYUEZOU1ByZWZpeChjb25zdCBYTUxDaCAqIHByZWZpeCk7CisKKwkvKioKKwkgKiBcYnJpZWYgU2V0IFByZXR0eSBQcmludAorCSAqCisJICogVGhlIHByZXR0eSBwcmludCBmdW5jdGlvbnMgY29udHJvbHMgd2hldGhlciB0aGUgbGlicmFyeSB3aWxsIG91dHB1dAorCSAqIENSL0xGIGFmdGVyIHRoZSBlbGVtZW50cyBpdCBhZGRzIHRvIGEgZG9jdW1lbnQKKwkgKgorCSAqIEJ5IGRlZmF1bHQgdGhlIGxpYnJhcnkgd2lsbCBkbyBwcmV0dHkgcHJpbnRpbmcgKGZsYWcgaXMgdHJ1ZSkKKwkgKgorCSAqIEBwYXJhbSBmbGFnIFZhbHVlIHRvIHNldCBmb3IgUHJldHR5IFByaW50aW5nICh0cnVlID0gZG8gcHJldHR5IHByaW50aW5nKQorCSAqLworCisJdm9pZCBzZXRQcmV0dHlQcmludChib29sIGZsYWcpOworCisJLyoqCisJICogXGJyaWVmIFRlbGwgY2FsbGVyIHdoZXRoZXIgUHJldHR5UHJpbnRpbmcgaXMgYWN0aXZlCisJICoKKwkgKiBAcmV0dXJucyBUcnVlIGlmIFByZXR0eSBQcmludGluZyBpcyBhY3RpdmUsIGZhbHNlIGlmIG5vdAorCSAqLworCisJYm9vbCBnZXRQcmV0dHlQcmludCh2b2lkKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBDcmVhdGUgYSBcPFNpZ25hdHVyZVw+IERPTSBzdHJ1Y3R1cmUuCisJICoKKwkgKiA8cD5UaGUgRE9NIHN0cnVjdHVyZSBjcmVhdGVkIGlzIHN0aWxsIGRpdm9yY2VkIGZyb20gdGhlIGRvY3VtZW50LiAgVGhlIGNhbGxlZQorCSAqIG5lZWRzIHRvIHRha2UgdGhlIHJldHVybmVkIFw8U2lnbmF0dXJlXD4gRWxlbWVudCBub2RlIGFuZCBpbnNlcnQgaXQgYXQgdGhlCisJICogYXBwcm9wcmlhdGUgcGxhY2UgaW4gdGhlaXIgZG9jdW1lbnQuPC9wPgorCSAqCisJICogPHA+VGhlIHNpZ25hdHVyZSBpcyBhIHNrZWxldG9uIG9ubHkuICBUaGVyZSBhcmUgbm8gcmVmZXJlbmNlcyBvciBLZXlJbmZvCisJICogZWxlbWVudHMgaW5zZXJ0ZWQuICBIb3dldmVyIHRoZSBEU0lHU2lnbmF0dXJlIHN0cnVjdHVyZXMgYXJlIHNldCB1cCB3aXRoIHRoZQorCSAqIG5ldyBpbmZvcm1hdGlvbiwgc28gb25jZSBhbiBlbGVtZW50IGhhcyBiZWVuIGNyZWF0ZWQgYW5kIGEgc2lnbmluZyBrZXkgaGFzIGJlZW4KKwkgKiBzZXQsIGEgY2FsbCB0byAjc2lnbiB3aWxsIHNpZ24gYXBwcm9wcmlhdGVseS4KKwkgKgorCSAqIEBub3RlIFRoZSBkaWdlc3QgbWV0aG9kIChoYXNoIG1ldGhvZCkgc2V0IGhlcmUgaXMgZm9yIHRoZSBzaWduaW5nIGZ1bmN0aW9uIG9ubHkuCisJICogRGlmZmVyZW50IGhhc2ggbWV0aG9kcyBjYW4gYmUgdXNlZCBmb3IgcmVmZXJlbmNlIGVsZW1lbnRzLgorCSAqCisJICogQHBhcmFtIGRvYyBUaGUgZG9jdW1lbnQgdGhlIFNpZ25hdHVyZSBET00gc3RydWN0dXJlIHdpbGwgYmUgaW5zZXJ0ZWQgaW50by4KKwkgKiBAcGFyYW0gY2Fub25pY2FsaXphdGlvbkFsZ29yaXRobVVSSSBUaGUgY2Fub25pY2FsaXNhdGlvbiBtZXRob2QgdG8gdXNlLgorCSAqIEBwYXJhbSBzaWduYXR1cmVBbGdvcml0aG1VUkkgVGhlIFNpZ25hdHVyZSBhbGdvcml0aG0gKGRlZmluZWQgYnkgVVJJKSB0byB1c2UKKwkgKiBAcmV0dXJucyBUaGUgbmV3bHkgY3JlYXRlZCBcPFNpZ25hdHVyZVw+IGVsZW1lbnQgdGhhdCB0aGUgY2FsbGVyIHNob3VsZCBpbnNlcnQgaW4KKwkgKiB0aGUgZG9jdW1lbnQuCisJICovCisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqY3JlYXRlQmxhbmtTaWduYXR1cmUoCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqZG9jLAorCQljb25zdCBYTUxDaCAqIGNhbm9uaWNhbGl6YXRpb25BbGdvcml0aG1VUkksCisJCWNvbnN0IFhNTENoICogc2lnbmF0dXJlQWxnb3JpdGhtVVJJCisJKTsKKworCS8qKgorCSAqIFxicmllZiBDcmVhdGUgYSBcPFNpZ25hdHVyZVw+IERPTSBzdHJ1Y3R1cmUuCisJICoKKwkgKiA8cD5UaGUgRE9NIHN0cnVjdHVyZSBjcmVhdGVkIGlzIHN0aWxsIGRpdm9yY2VkIGZyb20gdGhlIGRvY3VtZW50LiAgVGhlIGNhbGxlZQorCSAqIG5lZWRzIHRvIHRha2UgdGhlIHJldHVybmVkIFw8U2lnbmF0dXJlXD4gRWxlbWVudCBub2RlIGFuZCBpbnNlcnQgaXQgYXQgdGhlCisJICogYXBwcm9wcmlhdGUgcGxhY2UgaW4gdGhlaXIgZG9jdW1lbnQuPC9wPgorCSAqCisJICogPHA+VGhlIHNpZ25hdHVyZSBpcyBhIHNrZWxldG9uIG9ubHkuICBUaGVyZSBhcmUgbm8gcmVmZXJlbmNlcyBvciBLZXlJbmZvCisJICogZWxlbWVudHMgaW5zZXJ0ZWQuICBIb3dldmVyIHRoZSBEU0lHU2lnbmF0dXJlIHN0cnVjdHVyZXMgYXJlIHNldCB1cCB3aXRoIHRoZQorCSAqIG5ldyBpbmZvcm1hdGlvbiwgc28gb25jZSBhbiBlbGVtZW50IGhhcyBiZWVuIGNyZWF0ZWQgYW5kIGEgc2lnbmluZyBrZXkgaGFzIGJlZW4KKwkgKiBzZXQsIGEgY2FsbCB0byAjc2lnbiB3aWxsIHNpZ24gYXBwcm9wcmlhdGVseS4KKwkgKgorCSAqIEBub3RlIFRoZSBkaWdlc3QgbWV0aG9kIChoYXNoIG1ldGhvZCkgc2V0IGhlcmUgaXMgZm9yIHRoZSBzaWduaW5nIGZ1bmN0aW9uIG9ubHkuCisJICogRGlmZmVyZW50IGhhc2ggbWV0aG9kcyBjYW4gYmUgdXNlZCBmb3IgcmVmZXJlbmNlIGVsZW1lbnRzLgorCSAqCisJICogQHBhcmFtIGRvYyBUaGUgZG9jdW1lbnQgdGhlIFNpZ25hdHVyZSBET00gc3RydWN0dXJlIHdpbGwgYmUgaW5zZXJ0ZWQgaW50by4KKwkgKiBAcGFyYW0gY20gVGhlIGNhbm9uaWNhbGlzYXRpb24gbWV0aG9kIHRvIHVzZS4KKwkgKiBAcGFyYW0gc20gVGhlIHNpZ25hdHVyZSBhbGdvcml0aG0gdG8gYmUgdXNlZC4KKwkgKiBAcGFyYW0gaG0gVGhlIERpZ2VzdCBmdW5jdGlvbiB0byBiZSB1c2VkIGZvciB0aGUgYWN0dWFsIHNpZ25hdHVyZXMuCisJICogQHJldHVybnMgVGhlIG5ld2x5IGNyZWF0ZWQgXDxTaWduYXR1cmVcPiBlbGVtZW50IHRoYXQgdGhlIGNhbGxlciBzaG91bGQgaW5zZXJ0IGluCisJICogdGhlIGRvY3VtZW50LgorCSAqIEBkZXByZWNhdGVkIFVzZSB0aGUgVVJJIGJhc2VkIGNyZWF0aW9uIG1ldGhvZCBpbnN0ZWFkLCBhcyB0aGlzIHN1cHBvcnRzIAorCSAqIHNpZ25hdHVyZSBhbGdvcml0aG1zIHRoYXQgYXJlIG5vdCBrbm93biB0byB0aGUgbGlicmFyeSBkaXJlY3RseS4KKwkgKi8KKworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICpjcmVhdGVCbGFua1NpZ25hdHVyZSgKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICpkb2MsCisJCWNhbm9uaWNhbGl6YXRpb25NZXRob2QgY20gPSBDQU5PTl9DMTROX05PQywKKwkJc2lnbmF0dXJlTWV0aG9kCXNtID0gU0lHTkFUVVJFX0RTQSwKKwkJaGFzaE1ldGhvZCBobSA9IEhBU0hfU0hBMQorCSk7CisKKwkvKioKKwkgKiBcYnJpZWYgQWRkIGEgbmV3IHJlZmVyZW5jZSB0byB0aGUgZW5kIG9mIHRoZSBsaXN0IG9mIFw8UmVmZXJlbmNlXD4gbm9kZXMuCisJICoKKwkgKiA8cD5DcmVhdGVzIGEgbmV3IERTSUdSZWZlcmVuY2UsIGFkZHMgaXQgdG8gdGhlIGxpc3Qgb2YgcmVmZXJlbmNlcyBoYW5kbGVkCisJICogYnkgdGhlIG93bmluZyBEU0lHU2lnbmF0dXJlIGFuZCBhbHNvIGNyZWF0ZXMgdGhlIHNrZWxldG9uIERPTSBzdHJ1Y3R1cmUgaW50bworCSAqIHRoZSBkb2N1bWVudC48L3A+CisJICoKKwkgKiBAbm90ZSBUaGUgWFNFQyBMaWJyYXJ5IGN1cnJlbnRseSBtYWtlcyB2ZXJ5IGxpdHRsZSB1c2Ugb2YgPGVtPnR5cGU8L2VtPgorCSAqIGF0dHJpYnV0ZXMgaW4gXDxSZWZlcmVuY2VcPiBFbGVtZW50cy4gIEhvd2V2ZXIgdGhpcyBtYXkgb2YgdXNlIHRvIGNhbGxpbmcKKwkgKiBhcHBsaWNhdGlvbnMuCisJICoKKwkgKiBAc2VlIERTSUdSZWZlcmVuY2UKKwkgKiBAcGFyYW0gVVJJIFRoZSBEYXRhIHRoYXQgdGhpcyBSZWZlcmVuY2Ugbm9kZSByZWZlcnMgdG8uCisJICogQHBhcmFtIGhtIFRoZSBoYXNoaW5nIChkaWdlc3QpIG1ldGhvZCB0byBiZSB1c2VkIGZvciB0aGlzIHJlZmVyZW5jZQorCSAqIEBwYXJhbSB0eXBlIEEgInR5cGUiIHN0cmluZyAoYXMgZGVmaW5lZCBpbiBYTUwgU2lnbmF0dXJlKS4KKwkgKiBAcmV0dXJucyBUaGUgbmV3bHkgY3JlYXRlZCBEU0lHUmVmZXJlbmNlIGVsZW1lbnQuCisJICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBVUkkgYmFzZWQgY3JlYXRpb24gbWV0aG9kIGluc3RlYWQKKwkgKgorCSAqLworCisJCisJRFNJR1JlZmVyZW5jZSAqIGNyZWF0ZVJlZmVyZW5jZSgKKwkJY29uc3QgWE1MQ2ggKiBVUkksCisJCWhhc2hNZXRob2QgaG0gPSBIQVNIX1NIQTEsIAorCQljaGFyICogdHlwZSA9IE5VTEwKKwkpOworCisJLyoqCisJICogXGJyaWVmIEFkZCBhIG5ldyByZWZlcmVuY2UgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdCBvZiBcPFJlZmVyZW5jZVw+IG5vZGVzLgorCSAqCisJICogPHA+Q3JlYXRlcyBhIG5ldyBEU0lHUmVmZXJlbmNlLCBhZGRzIGl0IHRvIHRoZSBsaXN0IG9mIHJlZmVyZW5jZXMgaGFuZGxlZAorCSAqIGJ5IHRoZSBvd25pbmcgRFNJR1NpZ25hdHVyZSBhbmQgYWxzbyBjcmVhdGVzIHRoZSBza2VsZXRvbiBET00gc3RydWN0dXJlIGludG8KKwkgKiB0aGUgZG9jdW1lbnQuPC9wPgorCSAqCisJICogQG5vdGUgVGhlIFhTRUMgTGlicmFyeSBjdXJyZW50bHkgbWFrZXMgdmVyeSBsaXR0bGUgdXNlIG9mIDxlbT50eXBlPC9lbT4KKwkgKiBhdHRyaWJ1dGVzIGluIFw8UmVmZXJlbmNlXD4gRWxlbWVudHMuICBIb3dldmVyIHRoaXMgbWF5IG9mIHVzZSB0byBjYWxsaW5nCisJICogYXBwbGljYXRpb25zLgorCSAqCisJICogQHNlZSBEU0lHUmVmZXJlbmNlCisJICogQHBhcmFtIFVSSSBUaGUgRGF0YSB0aGF0IHRoaXMgUmVmZXJlbmNlIG5vZGUgcmVmZXJzIHRvLgorCSAqIEBwYXJhbSBobSBUaGUgaGFzaGluZyAoZGlnZXN0KSBtZXRob2QgdG8gYmUgdXNlZCBmb3IgdGhpcyByZWZlcmVuY2UKKwkgKiBAcGFyYW0gdHlwZSBBICJ0eXBlIiBzdHJpbmcgKGFzIGRlZmluZWQgaW4gWE1MIFNpZ25hdHVyZSkuCisJICogQHJldHVybnMgVGhlIG5ld2x5IGNyZWF0ZWQgRFNJR1JlZmVyZW5jZSBlbGVtZW50LgorCSAqIEBkZXByZWNhdGVkIFVzZSB0aGUgVVJJIGJhc2VkIGNyZWF0aW9uIG1ldGhvZCBpbnN0ZWFkCisJICoKKwkgKi8KKworCURTSUdSZWZlcmVuY2UgKiBjcmVhdGVSZWZlcmVuY2UoCisJCWNvbnN0IFhNTENoICogVVJJLAorCQljb25zdCBYTUxDaCAqIGhhc2hBbGdvcml0aG1VUkksIAorCQljb25zdCBYTUxDaCAqIHR5cGUgPSBOVUxMCisJKTsKKwkvL0B9CisKKwkvKiogQG5hbWUgR2VuZXJhbCBhbmQgSW5mb3JtYXRpb24gZnVuY3Rpb25zLiAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIGhhc2ggb2YgdGhlIFNpZ25lZCBWYWx1ZQorCSAqIAorCSAqIEZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSBhbmQgcmV0dXJuIHRoZSBoYXNoIG9mIHRoZSBcPFNpZ25lZEluZm9cPgorCSAqIHN0cnVjdHVyZXMgKGFmdGVyIHRoZSBjYW5vbmljYWxpemF0aW9uIGRlZmluZWQgYnkKKwkgKiBcPENhbm9uaWNhbGl6YXRpb25NZXRob2RcPiBhbmQgdGhlIHJlZmVyZW5jZSBoYXNoZXMgaGF2ZSBiZWVuIHBlcmZvcm1lZCkuCisJICoKKwkgKiBAcGFyYW0gaGFzaEJ1ZiBCdWZmZXIgdG8gcGxhY2UgdGhlIHJhdyBoYXNoIGluLgorCSAqIEBwYXJhbSBoYXNoQnVmTGVuIFRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlcgorCSAqIEByZXR1cm5zIFRoZSBsZW5ndGggb2YgdGhlIGhhc2ggdGhhdCB3YXMgcGxhY2VkIGluIGhhc2hCdWYKKwkgKgorCSAqLworCisJdW5zaWduZWQgaW50IGNhbGN1bGF0ZVNpZ25lZEluZm9BbmRSZWZlcmVuY2VIYXNoKHVuc2lnbmVkIGNoYXIgKiBoYXNoQnVmLCAKKwkJCQkJCQkJCQkJCQl1bnNpZ25lZCBpbnQgaGFzaEJ1Zkxlbik7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBoYXNoIG9mIHRoZSBTaWduZWQgVmFsdWUKKwkgKiAKKwkgKiBGdW5jdGlvbiB0byBjYWxjdWxhdGUgYW5kIHJldHVybiB0aGUgaGFzaCBvZiB0aGUgXDxTaWduZWRJbmZvXD4KKwkgKiBzdHJ1Y3R1cmVzIChhZnRlciB0aGUgY2Fub25pY2FsaXphdGlvbiBkZWZpbmVkIGJ5CisJICogXDxDYW5vbmljYWxpemF0aW9uTWV0aG9kXD4gaGFzIGJlZW4gcGVyZm9ybWVkKS4KKwkgKgorCSAqIEBwYXJhbSBoYXNoQnVmIEJ1ZmZlciB0byBwbGFjZSB0aGUgcmF3IGhhc2ggaW4uCisJICogQHBhcmFtIGhhc2hCdWZMZW4gVGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyCisJICogQHJldHVybnMgVGhlIGxlbmd0aCBvZiB0aGUgaGFzaCB0aGF0IHdhcyBwbGFjZWQgaW4gaGFzaEJ1ZgorCSAqCisJICovCisKKwl1bnNpZ25lZCBpbnQgY2FsY3VsYXRlU2lnbmVkSW5mb0hhc2godW5zaWduZWQgY2hhciAqIGhhc2hCdWYsIAorCQkJCQkJCQkJCXVuc2lnbmVkIGludCBoYXNoQnVmTGVuKTsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gdGhlIHJlZmVyZW5jZSBsaXN0IGZvciBvdXRzaWRlIHVzZS4KKwkgKgorCSAqIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBsaXN0IG9mIHJlZmVyZW5jZXMgd2hpY2ggY2FuCisJICogdGhlbiBiZSByZWFkIGJ5IHRoZSBjYWxsZXIuCisJICoKKwkgKiBAcmV0dXJucyBUaGUgcmVmZXJlbmNlTGlzdAorCSAqLworCisJRFNJR1JlZmVyZW5jZUxpc3QgKiBnZXRSZWZlcmVuY2VMaXN0KHZvaWQpOworCisJLyoqCisJICogXGJyaWVmIFJldHVybiB0aGUgcmVmZXJlbmNlIGxpc3QgZm9yIG91dHNpZGUgdXNlLgorCSAqCisJICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGxpc3Qgb2YgcmVmZXJlbmNlcyB3aGljaCBjYW4KKwkgKiB0aGVuIGJlIHJlYWQgYnkgdGhlIGNhbGxlci4KKwkgKgorCSAqIEByZXR1cm5zIFRoZSByZWZlcmVuY2VMaXN0CisJICovCisKKwljb25zdCBEU0lHUmVmZXJlbmNlTGlzdCAqIGdldFJlZmVyZW5jZUxpc3Qodm9pZCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIGFuIGlucHV0IHN0cmVhbSBmcm9tIFNpZ25lZEluZm8uCisJICoKKwkgKiBUaGlzIG1ldGhvZCBhbGxvd3MgYXBwbGljYXRpb25zIHRvIHJlYWQgdGhlIGZ1bGx5IGNhbm9uaWNhbGlzZWQKKwkgKiBieXRlIHN0cmVhbSB0aGF0IGlzIGhhc2hlZCBhbmQgc2lnbmVkLgorCSAqCisJICogQWxsIHRyYW5zZm9ybXMgYXJlIHBlcmZvcm1lZCB1cCB0byB0aGUgcG9pbnQgd2hlcmUgdGhleSB3b3VsZAorCSAqIG5vcm1hbGx5IGJlIGZlZCBpbnRvIHRoZSBEaWdlc3QgZnVuY3Rpb24uCisJICoKKwkgKiBAcmV0dXJucyBBIEJpbklucHV0U291cmNlIG9mIHRoZSBjYW5vbmljYWxpc2VkIFNpZ25lZEluZm8KKwkgKi8KKworCisJWFNFQ0JpblRYRk1JbnB1dFN0cmVhbSAqIG1ha2VCaW5JbnB1dFN0cmVhbSh2b2lkKSBjb25zdDsKKworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgRXJyb3IgbWVzc2FnZXMgZnJvbSB0aGUgbGFzdCAjdmVyaWZ5LgorCSAqCisJICogUmV0dXJucyBhIGxpc3Qgb2YgdGV4dCBlcnJvciBtZXNzYWdlcyBmcm9tIHRoZSBsYXN0IFNpZ25hdHVyZQorCSAqIG9wZXJhdGlvbi4gIEVhY2ggZXJyb3IgdGhhdCBvY2N1cnJlZCBpcyBpbiB0aGUgYnVmZmVyLCBzZXBhcmF0ZWQKKwkgKiBieSBuZXctbGluZXMuCisJICoKKwkgKiBAbm90ZSBUaGUgYnVmZmVyIGlzIG93bmVkIGJ5IHRoZSBEU0lHU2lnbmF0dXJlIG9iamVjdCAtIGRvIG5vdCBkZWxldGUgaXQKKwkgKgorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGVycm9yIHN0cmluZ3MuCisJICoKKwkgKi8KKworCWNvbnN0IFhNTENoICogZ2V0RXJyTXNncyh2b2lkKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIE5TIFByZWZpeCBiZWluZyB1c2VkIGZvciBEU0lHIGVsZW1lbnRzLgorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBidWZmZXIgaG9sZGluZyB0aGUgcHJlZml4CisJICogQHNlZSAjc2V0RFNJR05TUHJlZml4CisJICoKKwkgKi8KKworCWNvbnN0IFhNTENoICogZ2V0RFNJR05TUHJlZml4KCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBOUyBiZWluZyB1c2VkIGZvciBFQyBub2RlcworCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBidWZmZXIgaG9sZGluZyB0aGUgcHJlZml4CisJICogQHNlZSAjc2V0RUNOU1ByZWZpeAorCSAqLworCisJY29uc3QgWE1MQ2ggKiBnZXRFQ05TUHJlZml4KCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBOUyBiZWluZyB1c2VkIGZvciBYUGF0aCBGaWx0ZXIyIG5vZGVzCisJICoKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBob2xkaW5nIHRoZSBwcmVmaXgKKwkgKiBAc2VlICNzZXRYUEZOU1ByZWZpeAorCSAqLworCisJY29uc3QgWE1MQ2ggKiBnZXRYUEZOU1ByZWZpeCgpIGNvbnN0OworCisJLyoqCisJICogXGJyaWVmCisJICoKKwkgKiBHZXQgdGhlIERPTV9Eb2N1bWVudCB0aGF0IHRoaXMgU2lnbmF0dXJlIGlzIG9wZXJhdGluZyB3aXRoaW4uCisJICoKKwkgKiBNYWlubHkgdXNlZCBieSB0aGUgbGlicmFyeSBpdHNlbGYuCisJICoKKwkgKiBAcmV0dXJucyBUaGUgRE9NX0RvY3VtZW50IG5vZGUuCisJICovCisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBnZXRQYXJlbnREb2N1bWVudCgpIGNvbnN0CisJCXtyZXR1cm4gbXBfZG9jO30KKworCS8qKgorCSAqIFxicmllZiBHZXQgY2Fub25pY2FsaXNhdGlvbiBhbGdvcml0aG0KKwkgKgorCSAqIFJldHVybnMgdGhlIGNhbm9uaWNhbGlzYXRpb24gYWxnb3JpdGhtIHRoYXQgd2lsbCBiZS9pcyB1c2VkCisJICogdG8gY2Fub25pY2FsaXNlIHRoZSBcPFNpZ25lZEluZm9cPiBlbGVtZW50IHByaW9yIHRvIGhhc2gvc2lnbgorCSAqCisJICogQHJldHVybnMgVGhlIGNhbm9uaWNhbGlzYXRpb24gbWV0aG9kCisJICovCisKKwljYW5vbmljYWxpemF0aW9uTWV0aG9kIGdldENhbm9uaWNhbGl6YXRpb25NZXRob2Qodm9pZCkgY29uc3QKKwl7cmV0dXJuIChtcF9zaWduZWRJbmZvICE9IE5VTEwgPyAKKwkJCSBtcF9zaWduZWRJbmZvLT5nZXRDYW5vbmljYWxpemF0aW9uTWV0aG9kKCkgOiBDQU5PTl9OT05FKTt9CisKKworICAgIC8qKgorICAgICAqIFxicmllZiBHZXQgdGhlIEFsZ29yaXRobSBVUkkKKyAgICAgKgorICAgICAqIEByZXR1cm5zIHRoZSBVUkkgYXNzb2NpYXRlZCB3aXRoIHRoZSBBbGdvcml0aG0gdXNlZCB0byBnZW5lcmF0ZQorICAgICAqIHRoZSBzaWduYXR1cmUKKyAgICAgKi8KKworICAgIGNvbnN0IFhNTENoICogZ2V0QWxnb3JpdGhtVVJJKCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBoYXNoIG1ldGhvZAorCSAqCisJICogT2J0YWluIHRoZSBoYXNoIChkaWdlc3QpIGFsZ29yaXRobSB0aGF0IGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBoYXNoCisJICogb2YgdGhlIGNhbm9uaWNhbGlzZWQgXDxTaWduZWRJbmZvXD4gZWxlbWVudC4KKwkgKgorCSAqIEByZXR1cm5zIHRoZSBIYXNoIChkaWdlc3QpIE1ldGhvZAorCSAqLworCisJaGFzaE1ldGhvZCBnZXRIYXNoTWV0aG9kKHZvaWQpIGNvbnN0CisJe3JldHVybiAobXBfc2lnbmVkSW5mbyAhPSBOVUxMID8gCisJCQkgbXBfc2lnbmVkSW5mby0+Z2V0SGFzaE1ldGhvZCgpIDogSEFTSF9OT05FKTt9CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBzaWduYXR1cmUgbWV0aG9kCisJICoKKwkgKiBPYnRhaW4gdGhlIGFsZ29yaXRobSB0aGF0IHdpbGwgYmUgdXNlZCB0byBnZW5lcmF0ZS9jaGVjayB0aGUgc2lnbmF0dXJlCisJICogb2YgdGhlIGNhbm9uaWNhbGlzZWQgYW5kIGhhc2hlZCBcPFNpZ25lZEluZm9cPiBlbGVtZW50LgorCSAqCisJICogQHJldHVybnMgdGhlIFNpZ25hdHVyZSBtZXRob2QKKwkgKi8KKworCXNpZ25hdHVyZU1ldGhvZCBnZXRTaWduYXR1cmVNZXRob2Qodm9pZCkgY29uc3QKKwl7cmV0dXJuIChtcF9zaWduZWRJbmZvICE9IE5VTEwgPyAKKwkJCSBtcF9zaWduZWRJbmZvLT5nZXRTaWduYXR1cmVNZXRob2QoKSA6IFNJR05BVFVSRV9OT05FKTt9CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBTaWduYXR1cmUgVmFsdWUKKwkgKgorCSAqIFJldHVybnMgdGhlIGJhc2U2NCBzdHJpbmcgaG9sZGluZyB0aGUgc2lnbmF0dXJlIHZhbHVlIGZvciB0aGlzIHNpZ25hdHVyZQorCSAqIAorCSAqIEByZXR1cm5zIHRoZSBzaWduYXR1cmUgdmFsdWUgc3RyaW5nCisJICovCisKKwljb25zdCBYTUxDaCAqIGdldFNpZ25hdHVyZVZhbHVlKHZvaWQpIGNvbnN0OworCQkgCisJLyoqCisJICogXGJyaWVmIEhlbHBlciBmdW5jdGlvbiBmb3Igc3ViIENsYXNzZXMuCisJICoKKwkgKiBSZXR1cm5zIHRoZSBwb2ludGVyIHRvIHRoZSBmb3JtYXR0ZXIgYmVpbmcgdXNlZCB3aXRoaW4gdGhlIFNpZ25hdHVyZQorCSAqCisJICovCisKKwlYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlciAqIGdldFNCRm9ybWF0dGVyKHZvaWQpIHtyZXR1cm4gbXBfZm9ybWF0dGVyO30KKworCS8qKgorCSAqIFxicmllZiBTZXQgdGhlIGludGVybG9ja2luZyByZWZlcmVuY2VzIGZsYWcKKwkgKgorCSAqIFRoaXMgZmxhZyBjb250cm9scyB3aGV0aGVyIHRoZSBsaWJyYXJ5IHdpbGwgY2F0ZXIgZm9yICJpbnRlcmxvY2tpbmciCisJICogUmVmZXJlbmNlIG5vZGVzIC0gd2hlcmUgdGhlIGhhc2ggb2Ygb25lIHJlZmVyZW5jZSBkZXBlbmRzIG9uIHRoZQorCSAqIGhhc2ggb2YgYW5vdGhlci4KKwkgKgorCSAqIEFzIG9mIFZlcnNpb24gMS4zLCB0aGlzIGlzLCBieSBkZWZhdWx0LCBzZXQgdG8gZmFsc2UsIGFzIGl0IGlzIAorCSAqIGZhaXJseSB1bnVzdWFsIHRvIGZpbmQgYSBSZWZlcmVuY2Ugbm9kZSB0aGF0IGhhcyBhcyBhbiBpbnB1dCB0aGUKKwkgKiBkaWdlc3QgdmFsdWUgb2YgYW5vdGhlciByZWZlcmVuY2Ugbm9kZS4gIEJ5IHNldHRpbmcgdGhpcyB2YWx1ZSB0bworCSAqIHRydWUsIHRoZSBsaWJyYXJ5IHdpbGwgZmlyc3QgY2FsY3VsYXRlIGFsbCBoYXNoIHZhbHVlcywgYW5kIHRoZW4KKwkgKiB2ZXJpZnkgdGhlIGhhc2ggdmFsdWVzLiAgSWYgYW55IGFyZSBpbmNvcnJlY3QgKGNhdXNlZCBieSBvbmUgCisJICogdGhlIHZhbHVlIG9mIG9uZSByZWZlcmVuY2UgYmVpbmcgY2hhbmdlZCAqYWZ0ZXIqIGl0IHdhcyB1c2VkIGFzIAorCSAqIHRoZSBpbnB1dCB0byBhbm90aGVyKSwgdGhlbiB0aGUgaGFzaCB2YWx1ZXMgYXJlIHJlY2FsY3VsYXRlZC4gIFRoaXMKKwkgKiBpcyByZXBlYXRlZCB1bnRpbCB0aGUgcmVmZXJlbmNlIGxpc3QgInNldHRsZXMiLgorCSAqCisJICogQHBhcmFtIGZsYWcgdHJ1ZSBmb3IgaW50ZXJsb2NraW5nIHJlZmVyZW5jZXMsIGZhbHNlIGZvciBzdGFuZGFsb25lCisJICovCisKKwl2b2lkIHNldEludGVybG9ja2luZ1JlZmVyZW5jZXMoYm9vbCBmbGFnKSB7bV9pbnRlcmxvY2tpbmdSZWZlcmVuY2VzID0gZmxhZzt9CisKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIGludGVybG9ja2luZyByZWZlcmVuY2VzIGZsYWcKKwkgKgorCSAqIFRoaXMgZmxhZyBjb250cm9scyB3aGV0aGVyIHRoZSBsaWJyYXJ5IHdpbGwgY2F0ZXIgZm9yICJpbnRlcmxvY2tpbmciCisJICogUmVmZXJlbmNlIG5vZGVzIC0gd2hlcmUgdGhlIGhhc2ggb2Ygb25lIHJlZmVyZW5jZSBkZXBlbmRzIG9uIHRoZQorCSAqIGhhc2ggb2YgYW5vdGhlci4KKwkgKgorCSAqIEFzIG9mIFZlcnNpb24gMS4zLCB0aGlzIGlzLCBieSBkZWZhdWx0LCBzZXQgdG8gZmFsc2UsIGFzIGl0IGlzIAorCSAqIGZhaXJseSB1bnVzdWFsIHRvIGZpbmQgYSBSZWZlcmVuY2Ugbm9kZSB0aGF0IGhhcyBhcyBhbiBpbnB1dCB0aGUKKwkgKiBkaWdlc3QgdmFsdWUgb2YgYW5vdGhlciByZWZlcmVuY2Ugbm9kZS4gIEJ5IHNldHRpbmcgdGhpcyB2YWx1ZSB0bworCSAqIHRydWUsIHRoZSBsaWJyYXJ5IHdpbGwgZmlyc3QgY2FsY3VsYXRlIGFsbCBoYXNoIHZhbHVlcywgYW5kIHRoZW4KKwkgKiB2ZXJpZnkgdGhlIGhhc2ggdmFsdWVzLiAgSWYgYW55IGFyZSBpbmNvcnJlY3QgKGNhdXNlZCBieSBvbmUgCisJICogdGhlIHZhbHVlIG9mIG9uZSByZWZlcmVuY2UgYmVpbmcgY2hhbmdlZCAqYWZ0ZXIqIGl0IHdhcyB1c2VkIGFzIAorCSAqIHRoZSBpbnB1dCB0byBhbm90aGVyKSwgdGhlbiB0aGUgaGFzaCB2YWx1ZXMgYXJlIHJlY2FsY3VsYXRlZC4gIFRoaXMKKwkgKiBpcyByZXBlYXRlZCB1bnRpbCB0aGUgcmVmZXJlbmNlIGxpc3QgInNldHRsZXMiLgorCSAqCisJICogQHJldHVybiBWYWx1ZSBvZiBmbGFnIC0gdHJ1ZSBmb3IgaW50ZXJsb2NraW5nIHJlZmVyZW5jZXMsIGZhbHNlIGZvciBzdGFuZGFsb25lCisJICovCisKKwlib29sIGdldEludGVybG9ja2luZ1JlZmVyZW5jZXModm9pZCkgY29uc3Qge3JldHVybiBtX2ludGVybG9ja2luZ1JlZmVyZW5jZXM7fQorCisJLy9AfQorCisJLyoqIEBuYW1lIFJlc29sdmVyIG1hbmlwdWxhdGlvbiAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBSZWdpc3RlciBhIFVSSVJlc29sdmVyIAorCSAqCisJICogUmVnaXN0ZXJzIGEgVVJJUmVzb2x2ZXIgdG8gYmUgdXNlZCBieSB0aGUgU2lnbmF0dXJlIHdoZW4gZGVyZWZlcmVuY2luZworCSAqIGEgVVJJIGluIGEgUmVmZXJlbmNlIGVsZW1lbnQKKwkgKgorCSAqLworCisJdm9pZCBzZXRVUklSZXNvbHZlcihYU0VDVVJJUmVzb2x2ZXIgKiByZXNvbHZlcik7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgcmVzb2x2ZXIgYmVpbmcgdXNlZAorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBVUklSZXNvbHZlciByZWdpc3RlcmVkIGluIHRoaXMgc2lnbmF0dXJlCisJICovCisKKwlYU0VDVVJJUmVzb2x2ZXIgKiBnZXRVUklSZXNvbHZlcih2b2lkKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBSZWdpc3RlciBhIEtleUluZm9SZXNvbHZlciAKKwkgKgorCSAqIFJlZ2lzdGVycyBhIEtleUluZm9SZXNvbHZlciB0byBiZSB1c2VkIGJ5IHRoZSBTaWduYXR1cmUgd2hlbiAKKwkgKiBpdCBuZWVkcyB0byBmaW5kIGEga2V5IHRvIGJlIHVzZWQgdG8gdmFsaWRhdGUgYSBzaWduYXR1cmUKKwkgKgorCSAqLworCisJdm9pZCBzZXRLZXlJbmZvUmVzb2x2ZXIoWFNFQ0tleUluZm9SZXNvbHZlciAqIHJlc29sdmVyKTsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSByZXNvbHZlciBiZWluZyB1c2VkCisJICoKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIEtleUluZm9SZXNvbHZlciByZWdpc3RlcmVkIGluIHRoaXMgc2lnbmF0dXJlCisJICovCisKKwlYU0VDS2V5SW5mb1Jlc29sdmVyICogZ2V0S2V5SW5mb1Jlc29sdmVyKHZvaWQpIGNvbnN0OworCisJLy9AfQorCisJLyoqIEBuYW1lIEtleUluZm8gRWxlbWVudCBNYW5pcHVsYXRpb24gKi8KKwkKKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBsaXN0IG9mIFw8S2V5SW5mb1w+IGVsZW1lbnRzLgorCSAqCisJICogPHA+VGhpcyBmdW5jdGlvbiByZWNvdmVycyBsaXN0IHRoYXQgY29udGFpbnMgdGhlIEtleUluZm8gZWxlbWVudHMKKwkgKiByZWFkIGluIGZyb20gdGhlIERPTSBkb2N1bWVudC48L3A+CisJICoKKwkgKiA8cD5UaGlzIGxpc3Qgc2hvdWxkIGJlIHVzZWQgYnkgY2FsbGluZyBhcHBsaWNhdGlvbnMgdG8gZGV0ZXJtaW5lIHdoYXQga2V5CisJICogaXMgYXBwcm9wcmlhdGUgZm9yIHZhbGlkYXRpbmcgKG9yIGV2ZW4gc2lnbmluZykgdGhlIFNpZ25hdHVyZS48L3A+CisJICoKKwkgKiBAdG9kbyBUaGUgS2V5SW5mbyBwcm9jZXNzIGlzIHZlcnkgcHJpbWl0aXZlLiAgQW4gaW50ZXJmYWNlIG5lZWRzIHRvIGJlCisJICogY3JlYXRlZCB0byBhbGxvdyBhcHBsaWNhdGlvbiBkZXZlbG9wZXJzIHRvIGluc3RhbGwgYW4gb2JqZWN0IGludG8gdGhlIFNpZ25hdHVyZQorCSAqIHRoYXQgdGhlIFNpZ25hdHVyZSBjYW4gY2FsbCBvbiB0byB0cmFuc2xhdGUgS2V5SW5mbyBsaXN0cyBpbnRvIGEgS2V5LgorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgRFNJR0tleUluZm9MaXN0IG9iamVjdCBoZWxkIGJ5IHRoZSBEU0lHU2lnbmF0dXJlCisJICovCisJCisJRFNJR0tleUluZm9MaXN0ICogZ2V0S2V5SW5mb0xpc3QoKSB7cmV0dXJuICZtX2tleUluZm9MaXN0O30KKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIGxpc3Qgb2YgXDxLZXlJbmZvXD4gZWxlbWVudHMuCisJICoKKwkgKiA8cD5UaGlzIGZ1bmN0aW9uIHJlY292ZXJzIGxpc3QgdGhhdCBjb250YWlucyB0aGUgS2V5SW5mbyBlbGVtZW50cworCSAqIHJlYWQgaW4gZnJvbSB0aGUgRE9NIGRvY3VtZW50LjwvcD4KKwkgKgorCSAqIDxwPlRoaXMgbGlzdCBzaG91bGQgYmUgdXNlZCBieSBjYWxsaW5nIGFwcGxpY2F0aW9ucyB0byBkZXRlcm1pbmUgd2hhdCBrZXkKKwkgKiBpcyBhcHByb3ByaWF0ZSBmb3IgdmFsaWRhdGluZyAob3IgZXZlbiBzaWduaW5nKSB0aGUgU2lnbmF0dXJlLjwvcD4KKwkgKgorCSAqIEB0b2RvIFRoZSBLZXlJbmZvIHByb2Nlc3MgaXMgdmVyeSBwcmltaXRpdmUuICBBbiBpbnRlcmZhY2UgbmVlZHMgdG8gYmUKKwkgKiBjcmVhdGVkIHRvIGFsbG93IGFwcGxpY2F0aW9uIGRldmVsb3BlcnMgdG8gaW5zdGFsbCBhbiBvYmplY3QgaW50byB0aGUgU2lnbmF0dXJlCisJICogdGhhdCB0aGUgU2lnbmF0dXJlIGNhbiBjYWxsIG9uIHRvIHRyYW5zbGF0ZSBLZXlJbmZvIGxpc3RzIGludG8gYSBLZXkuCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBEU0lHS2V5SW5mb0xpc3Qgb2JqZWN0IGhlbGQgYnkgdGhlIERTSUdTaWduYXR1cmUKKwkgKi8KKwkKKwljb25zdCBEU0lHS2V5SW5mb0xpc3QgKiBnZXRLZXlJbmZvTGlzdCgpIGNvbnN0IHtyZXR1cm4gJm1fa2V5SW5mb0xpc3Q7fQorCisJLyoqCisJICogXGJyaWVmIENsZWFyIG91dCBhbGwgS2V5SW5mbyBlbGVtZW50cyBpbiB0aGUgc2lnbmF0dXJlLgorCSAqCisJICogVGhpcyBmdW5jdGlvbiB3aWxsIGRlbGV0ZSBhbGwgS2V5SW5mbyBlbGVtZW50cyBmcm9tIGJvdGggdGhlIERTSUdTaWduYXR1cmUKKwkgKiBvYmplY3QgPGVtPmFuZCB0aGUgYXNzb2NpYXRlZCBET008L2VtPi4KKwkgKgorCSAqLworCisJdm9pZCBjbGVhcktleUluZm8odm9pZCk7CisKKwkvKioKKwkgKiBcYnJpZWYgQXBwZW5kIGEgRFNBIEtleVZhbHVlIGVsZW1lbnQgCisJICoKKwkgKiBBZGQgYSBuZXcgS2V5SW5mbyBlbGVtZW50IGZvciBhIERTQSBWYWx1ZQorCSAqCisJICogQHBhcmFtIFAgQmFzZTY0IGVuY29kZWQgdmFsdWUgb2YgUAorCSAqIEBwYXJhbSBRIEJhc2U2NCBlbmNvZGVkIHZhbHVlIG9mIFEKKwkgKiBAcGFyYW0gRyBCYXNlNjQgZW5jb2RlZCB2YWx1ZSBvZiBHCisJICogQHBhcmFtIFkgQmFzZTY0IGVuY29kZWQgdmFsdWUgb2YgWQorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgY3JlYXRlZCBvYmplY3QuCisJICovCisKKwlEU0lHS2V5SW5mb1ZhbHVlICogYXBwZW5kRFNBS2V5VmFsdWUoY29uc3QgWE1MQ2ggKiBQLCAKKwkJCQkJCSAgIGNvbnN0IFhNTENoICogUSwgCisJCQkJCQkgICBjb25zdCBYTUxDaCAqIEcsIAorCQkJCQkJICAgY29uc3QgWE1MQ2ggKiBZKTsKKworCS8qKgorCSAqIFxicmllZiBBcHBlbmQgYSBSU0EgS2V5VmFsdWUgZWxlbWVudCAKKwkgKgorCSAqIEFkZCBhIG5ldyBLZXlJbmZvIGVsZW1lbnQgZm9yIGEgUlNBIFZhbHVlCisJICoKKwkgKiBAcGFyYW0gbW9kdWx1cyBCYXNlNjQgZW5jb2RlZCB2YWx1ZSBvZiB0aGUgbW9kdWx1cworCSAqIEBwYXJhbSBleHBvbmVudCBCYXNlNjQgZW5jb2RlZCB2YWx1ZSBvZiBleHBvbmVudAorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgY3JlYXRlZCBvYmplY3QuCisJICovCisKKwlEU0lHS2V5SW5mb1ZhbHVlICogYXBwZW5kUlNBS2V5VmFsdWUoY29uc3QgWE1MQ2ggKiBtb2R1bHVzLCAKKwkJCQkJCSAgIGNvbnN0IFhNTENoICogZXhwb25lbnQpOworCisJLyoqCisJICogXGJyaWVmIEFwcGVuZCBhIFg1MDlEYXRhIGVsZW1lbnQuCisJICoKKwkgKiBBZGQgYSBuZXcgS2V5SW5mbyBlbGVtZW50IGZvciBYNTA5IGRhdGEuCisJICoKKwkgKiBAbm90ZSBUaGUgYWRkZWQgZWxlbWVudCBpcyBlbXB0eS4gIFRoZSBjYWxsZXIgbXVzdCBtYWtlIHVzZSBvZiB0aGUKKwkgKiByZXR1cm5lZCBvYmplY3QgdG8gc2V0IHRoZSByZXF1aXJlZCB2YWx1ZXMuCisJICoKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0LgorCSAqLworCisJRFNJR0tleUluZm9YNTA5ICogYXBwZW5kWDUwOURhdGEodm9pZCk7CisKKwkvKioKKwkgKiBcYnJpZWYgQXBwZW5kIGEgS2V5TmFtZSBlbGVtZW50LgorCSAqCisJICogQWRkIGEgbmV3IEtleUluZm8gZWxlbWVudCBmb3IgYSBrZXkgbmFtZS4KKwkgKgorCSAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBrZXkgdG8gc2V0IGluIHRoZSBYTUwKKwkgKiBAcGFyYW0gaXNETmFtZSBUcmVhdCB0aGUgbmFtZSBhcyBhIERpc3Rpbmd1aXNoZWQgbmFtZSBhbmQgZW5jb2RlIGFjY29yZGluZ2x5CisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBjcmVhdGVkIG9iamVjdAorCSAqLworCisJRFNJR0tleUluZm9OYW1lICogYXBwZW5kS2V5TmFtZShjb25zdCBYTUxDaCAqIG5hbWUsIGJvb2wgaXNETmFtZSA9IGZhbHNlKTsKKworCS8qKgorCSAqIFxicmllZiBBcHBlbmQgYSBQR1BEYXRhIGVsZW1lbnQuCisJICoKKwkgKiBBZGQgYSBuZXcgS2V5SW5mbyBlbGVtZW50IGZvciBhIFBHUCBrZXkuCisJICoKKwkgKiBAcGFyYW0gaWQgVGhlIElEIG9mIHRoZSBrZXkgdG8gc2V0IGluIHRoZSBYTUwgKGJhc2U2NCBlbmNvZGVkIC0gTlVMTCBpZiBub25lKQorCSAqIEBwYXJhbSBwYWNrZXQgVGhlIFBhY2tldCBpbmZvcm1hdGlvbiB0byBzZXQgaW4gdGhlIFhNTCAoYmFzZTY0IGVuY29kZWQgLQorCSAqIE5VTEwgaWYgbm9uZSkKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0CisJICovCisKKwlEU0lHS2V5SW5mb1BHUERhdGEgKiBhcHBlbmRQR1BEYXRhKGNvbnN0IFhNTENoICogaWQsIGNvbnN0IFhNTENoICogcGFja2V0KTsKKworCS8qKgorCSAqIFxicmllZiBBcHBlbmQgYSBTUEtJRGF0YSBlbGVtZW50CisJICoKKwkgKiBBZGQgYSBuZXcgS2V5SW5mbyBlbGVtZW50IGZvciBhIHNldCBvZiBTUEtJIFMtZXhwcmVzc2lvbnMKKwkgKgorCSAqIEBwYXJhbSBzZXhwIFRoZSBpbml0aWFsIFMtZXhwcmVzc2lvbiB0byBzZXQgaW4gdGhlIFNQS0lEYXRhIGVsZW1lbnQKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0CisJICovCisKKwlEU0lHS2V5SW5mb1NQS0lEYXRhICogYXBwZW5kU1BLSURhdGEoY29uc3QgWE1MQ2ggKiBzZXhwKTsKKworCS8qKgorCSAqIFxicmllZiBBcHBlbmQgYSBNZ210RGF0YSBlbGVtZW50CisJICoKKwkgKiBBZGQgYSBuZXcgS2V5SW5mbyBlbGVtZW50IGZvciBNYW5hZ2VtZW50IERhdGEKKwkgKgorCSAqIEBwYXJhbSBkYXRhIFRoZSBzdHJpbmcgdG8gc2V0IGluIHRoZSBNZ210RGF0YSBlbGVtZW50CisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBjcmVhdGVkIG9iamVjdAorCSAqLworCisJRFNJR0tleUluZm9NZ210RGF0YSAqIGFwcGVuZE1nbXREYXRhKGNvbnN0IFhNTENoICogZGF0YSk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgT2JqZWN0IGhhbmRsaW5nICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIEFwcGVuZCBhbiBvYmplY3QgY29udGFpbmVyCisJICoKKwkgKiBDcmVhdGUgYSBuZXcgT2JqZWN0IChpLmUuIGEgU2lnbmF0dXJlIFw8T2JqZWN0XD4gd2hpY2ggaXMgYSBjb250YWluZXIKKwkgKiBlbGVtZW50IHVzZWQgdG8gaG9sZCBpbmZvcm1hdGlvbiB0aGF0IG5lZWRzIHRvIGJlIHNpZ25lZCB3aXRoaW4gdGhlCisJICogc2lnbmF0dXJlIC0gaS5lLiBpbiBlbnZlbG9waW5nIG1vZGUKKwkgKgorCSAqIEByZXR1cm5zIHRoZSBuZXdseSBjcmVhdGVkIERTSUdPYmplY3QKKwkgKi8KKworCURTSUdPYmplY3QgKiBhcHBlbmRPYmplY3Qodm9pZCk7CisKKwkvKioKKwkgKiBcYnJpZWYgRmluZCB0aGUgbnVtYmVyIG9mIGRzOk9iamVjdCBub2RlcyB3aXRoaW4gdGhlIFNpZ25hdHVyZQorCSAqCisJICogQHJldHVybnMgdGhlIG51bWJlciBvZiBkczpPYmplY3Qgbm9kZXMgaGVsZCBpbiB0aGUgU2lnbmF0dXJlLCAwIGlmIG5vbmUKKwkgKi8KKworCWludCBnZXRPYmplY3RMZW5ndGgodm9pZCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IGEgcGFydGljdWxhciBkczpPYmplY3QgZnJvbSB3aXRoaW4gdGhlIFNpZ25hdHVyZQorCSAqCisJICogQHJldHVybnMgdGhlIGl0aCBPYmplY3QgZnJvbSB0aGUgbGlzdCBvZiBkczpPYmplY3Qgbm9kZXMgaW4gdGhlIHNpZ25hdHVyZS4KKwkgKiBJdGVtcyBhcmUgb3JkZXJlZCBpbiB0cmVlIG9yZGVyLgorCSAqLworCisJRFNJR09iamVjdCAqIGdldE9iamVjdEl0ZW0oaW50IGkpOworCisJLyoqCisJICogXGJyaWVmIEdldCBhIHBhcnRpY3VsYXIgZHM6T2JqZWN0IGZyb20gd2l0aGluIHRoZSBTaWduYXR1cmUKKwkgKgorCSAqIEByZXR1cm5zIHRoZSBpdGggT2JqZWN0IGZyb20gdGhlIGxpc3Qgb2YgZHM6T2JqZWN0IG5vZGVzIGluIHRoZSBzaWduYXR1cmUuCisJICogSXRlbXMgYXJlIG9yZGVyZWQgaW4gdHJlZSBvcmRlci4KKwkgKi8KKworCWNvbnN0IERTSUdPYmplY3QgKiBnZXRPYmplY3RJdGVtKGludCBpKSBjb25zdDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBJRCBoYW5kbGluZyAqLworCQorCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBTZXQgSWQgZmluZGluZyBiZWhhdmlvdXIKKwkgKgorCSAqIFRoZSBsaWJyYXJ5IGRlLXJlZmVyZW5jZXMgIiNvYmoiIFVSSSByZWZlcmVuY2VzIHRvIElEIGF0dHJpYnV0ZXMgd2l0aGluCisJICogYSBET00gZG9jdW1lbnQuICBDdXJyZW50bHksIHRoZSBsaWJyYXJ5IGZpcnN0IHVzZXMgRE9NIGNhbGxzIHRvIGZpbmQgaWYKKwkgKiB0aGUgSWQgaGFzIGJlZW4gcHJvcGVybHkgc2V0IHdpdGhpbiB0aGUgZG9jdW1lbnQgdmlhIHRoZSBwYXJzZXIgb3Igb25lCisJICogb2YgdGhlIERPTSBMZXZlbCAzIGNhbGxzIHRvIHNldCBhbiBJZC4KKwkgKgorCSAqIElmIG5vIElkIGlzIGZvdW5kIG9mIHRoZSBjb3JyZWN0IG5hbWUsIHRoZSBsaWJyYXJ5IHRoZW4gc3RhcnRzIHNlYXJjaGluZworCSAqIGZvciBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gbmFtZSB3aXRoIHRoZSByZXF1aXJlZCB2YWx1ZS4gIFRoaXMgbGlzdCBkZWZhdWx0cworCSAqIHRvICJpZCIgYW5kICJJZCIsIGJ1dCBjYW4gYmUgbW9kaWZpZWQgdmlhIGEgY2FsbCB0byBhZGRJZEF0dHJpYnV0ZU5hbWUoKQorCSAqCisJICogVGhlIHNldElkQnlBdHRyaWJ1dGVOYW1lIGNhbGwgZW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgc2Vjb25kIHBhcnQgb2YgdGhlIElkCisJICogc2VhcmNoLiAgSS5lLiB3aGVuIHRoZSBJZCBkb2Vzbid0IGV4aXN0IGFzIGFuIGF0dHJpYnV0ZSBvZiBUeXBlPUlELCB3aGV0aGVyIG9yCisJICogbm90IHRvIHNlYXJjaCBmb3IgYW4gYXR0cmlidXRlIG9mIGEgbmFtZSBpbiB0aGUgbGlzdCBvZiBuYW1lcy4gIEJ5IGRlZmF1bHQKKwkgKiB0aGlzIGJlaGF2aW91ciBpcyBlbmFibGVkLgorCSAqCisJICogQHdhcm5pbmcgVGhpcyBpcyBjdXJyZW50bHkgZW5hYmxlZCBieSBkZWZhdWx0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQorCSAqIHJlYXNvbnMgb25seS4gIEZ1dHVyZSB2ZXJzaW9uIG1heSByZXZlcnNlIHRoaXMgYW5kIHNoaXAgZGlzYWJsZWQgYnkgZGVmYXVsdCwgYXMKKwkgKiB0aGlzIGJlaGF2aW91ciBpcyBhIHBvdGVudGlhbCBzZWN1cml0eSByaXNrLgorCSAqCisJICogQHBhcmFtIGZsYWcgRW5hYmxlICh0cnVlKSBvciBEaXNhYmxlIChmYWxzZSkgc2VhcmNoaW5nIGZvciBJZCBhdHRyaWJ1dGVzIGJ5IG5hbWUKKwkgKi8KKworCXZvaWQgc2V0SWRCeUF0dHJpYnV0ZU5hbWUoYm9vbCBmbGFnKTsKKworCS8qKgorCSAqIFxicmllZiBEZXRlcm1pbmUgSWQgZmluZGluZyBiZWhhdmlvdXIKKwkgKgorCSAqIEFsbG93cyBhIGNhbGxlciB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgbGlicmFyeSBpcyBjdXJyZW50bHkgc2VhcmNoaW5nIGZvcgorCSAqIElkIGF0dHJpYnV0ZXMgYnkgbmFtZQorCSAqCisJICogQHJldHVybnMgVGhlIHZhbHVlIG9mIHRoZSBJZEJ5QXR0cmlidXRlTmFtZSBmbGFnCisJICovCisKKwlib29sIGdldElkQnlBdHRyaWJ1dGVOYW1lKHZvaWQpIGNvbnN0OworCisJLyoqCisJICogXGJyaWVmIEFkZCBhbiBhdHRyaWJ1dGUgbmFtZSB0byBiZSBzZWFyY2hlZCBmb3Igd2hlbiBsb29raW5nIGZvciBJZCBhdHRyaWJ1dGVzCisJICoKKwkgKiBUaGlzIGFsbG93cyBhIHVzZXIgdG8gYWRkIGFuIGF0dHJpYnV0ZSBuYW1lIHRvIGJlIHVzZWQgdG8gaWRlbnRpZnkgSWQgYXR0cmlidXRlcworCSAqIHdoZW4gdGhleSBhcmUgbm90IHNldCB0byBiZSBvZiBUeXBlPUlEIGluIHRoZSBET00KKwkgKgorCSAqIEBub3RlIFR3byBuYW1lcyBhcmUgcmVnaXN0ZXJlZCBieSBkZWZhdWx0IC0gIklkIiBhbmQgImlkIi4gIFRoZXNlIGNhbiBiZQorCSAqIHJlbW92ZWQgYnkgY2FsbGluZyBkZXJlZ2lzdGVySWRBdHRyaWJ1dGVOYW1lCisJICoKKwkgKiBAcGFyYW0gbmFtZSBOYW1lIHRvIGFwcGVuZCB0byB0aGUgbGlzdCBvZiB0aG9zZSB1c2VkIHRvIGZpbmQgSWQgYXR0cmlidXRlcworCSAqLworCisJdm9pZCByZWdpc3RlcklkQXR0cmlidXRlTmFtZShjb25zdCBYTUxDaCAqIG5hbWUpOworCisJLyoqCisJICogXGJyaWVmIFJlbW92ZSBhbiBhdHRyaWJ1dGUgbmFtZSB0byBiZSBzZWFyY2hlZCBmb3Igd2hlbiBsb29raW5nIGZvciBJZCBhdHRyaWJ1dGVzCisJICoKKwkgKiBUaGlzIGFsbG93cyBhIHVzZXIgdG8gZGUtcmVnaXN0ZXIgYSBwYXJ0aWN1bGFyIG5hbWUgdG8gYmUgdXNlZCB0byBpZGVudGlmeSBJZAorCSAqIGF0dHJpYnV0ZXMuCisJICoKKwkgKiBAcGFyYW0gbmFtZSBOYW1lIHRvIHJlbW92ZSBmcm9tIHRoZSBsaXN0IG9mIHRob3NlIHVzZWQgdG8gZmluZCBJZCBhdHRyaWJ1dGVzCisJICogQHJldHVybnMgdHJ1ZSBpZiBmb3VuZCBhbmQgcmVtb3ZlZCwgZmFsc2UgaWYgd2FzIG5vdCBpbiB0aGUgbGlzdAorCSAqLworCisJYm9vbCBkZXJlZ2lzdGVySWRBdHRyaWJ1dGVOYW1lKGNvbnN0IFhNTENoICogbmFtZSk7CisKKwkvKioKKwkgKiBcYnJpZWYgQWRkIGFuIGF0dHJpYnV0ZSBuYW1lIHdpdGhpbiBhIHBhcnRpY3VsYXIgTmFtZXNwYWNlCisJICogdG8gYmUgc2VhcmNoZWQgZm9yIHdoZW4gbG9va2luZyBmb3IgSWQgYXR0cmlidXRlcworCSAqCisJICogVGhpcyBhbGxvd3MgYSB1c2VyIHRvIGFkZCBhbiBhdHRyaWJ1dGUgbmFtZSB0byBiZSB1c2VkIHRvIGlkZW50aWZ5IElkIGF0dHJpYnV0ZXMKKwkgKiB3aGVuIHRoZXkgYXJlIG5vdCBzZXQgdG8gYmUgb2YgVHlwZT1JRCBpbiB0aGUgRE9NCisJICoKKwkgKiBAbm90ZSBUd28gbmFtZXMgYXJlIHJlZ2lzdGVyZWQgYnkgZGVmYXVsdCAtICJJZCIgYW5kICJpZCIuICBUaGVzZSBjYW4gYmUKKwkgKiByZW1vdmVkIGJ5IGNhbGxpbmcgZGVyZWdpc3RlcklkQXR0cmlidXRlTmFtZQorCSAqCisJICogQHBhcmFtIG5zIE5hbWVzcGFjZSBpbiB3aGljaCBhdHRyaWJ1dGUgd2lsbCByZXNpZGUKKwkgKiBAcGFyYW0gbmFtZSBOYW1lIHRvIGFwcGVuZCB0byB0aGUgbGlzdCBvZiB0aG9zZSB1c2VkIHRvIGZpbmQgSWQgYXR0cmlidXRlcworCSAqLworCisJdm9pZCByZWdpc3RlcklkQXR0cmlidXRlTmFtZU5TKGNvbnN0IFhNTENoICogbnMsIGNvbnN0IFhNTENoICogbmFtZSk7CisKKwkvKioKKwkgKiBcYnJpZWYgUmVtb3ZlIGFuIGF0dHJpYnV0ZSBuYW1lIGFuZCBucyB0byBiZSBzZWFyY2hlZCBmb3Igd2hlbiBsb29raW5nIGZvciBJZCBhdHRyaWJ1dGVzCisJICoKKwkgKiBUaGlzIGFsbG93cyBhIHVzZXIgdG8gZGUtcmVnaXN0ZXIgYSBwYXJ0aWN1bGFyIG5hbWUgdG8gYmUgdXNlZCB0byBpZGVudGlmeSBJZAorCSAqIGF0dHJpYnV0ZXMuCisJICoKKwkgKiBAcGFyYW0gbnMgTmFtZXNwYWNlIGluIHdoaWNoIGF0dHJpYnV0ZSB3aWxsIHJlc2lkZQorCSAqIEBwYXJhbSBuYW1lIE5hbWUgdG8gcmVtb3ZlIGZyb20gdGhlIGxpc3Qgb2YgdGhvc2UgdXNlZCB0byBmaW5kIElkIGF0dHJpYnV0ZXMKKwkgKiBAcmV0dXJucyB0cnVlIGlmIGZvdW5kIGFuZCByZW1vdmVkLCBmYWxzZSBpZiB3YXMgbm90IGluIHRoZSBsaXN0CisJICovCisKKwlib29sIGRlcmVnaXN0ZXJJZEF0dHJpYnV0ZU5hbWVOUyhjb25zdCBYTUxDaCAqIG5zLCBjb25zdCBYTUxDaCAqIG5hbWUpOworCisJLy9AfQorCisJZnJpZW5kIGNsYXNzIFhTRUNQcm92aWRlcjsKKworcHJpdmF0ZToKKworCS8vIEZvciBob2xkaW5nIERTSUdPYmplY3Qgbm9kZXMKKyNpZiBkZWZpbmVkKFhTRUNfTk9fTkFNRVNQQUNFUykKKwl0eXBlZGVmIHZlY3RvcjxEU0lHT2JqZWN0ICo+CQkJT2JqZWN0VmVjdG9yVHlwZTsKKyNlbHNlCisJdHlwZWRlZiBzdGQ6OnZlY3RvcjxEU0lHT2JqZWN0ICo+CQlPYmplY3RWZWN0b3JUeXBlOworI2VuZGlmCisKKworCS8vIEludGVybmFsIGZ1bmN0aW9ucworCXZvaWQgY3JlYXRlS2V5SW5mb0VsZW1lbnQodm9pZCk7CisJYm9vbCB2ZXJpZnlTaWduYXR1cmVPbmx5SW50ZXJuYWwodm9pZCk7CisJVFhGTUNoYWluICogZ2V0U2lnbmVkSW5mb0lucHV0KHZvaWQpOworCisJLy8gSW5pdGlhbGlzYXRpb24KKwlzdGF0aWMgdm9pZCBJbml0aWFsaXNlKHZvaWQpOworCisJWFNFQ1NhZmVCdWZmZXJGb3JtYXR0ZXIJCSogbXBfZm9ybWF0dGVyOworCWJvb2wJCQkJCQltX2xvYWRlZDsJCQkJLy8gSGF2ZSB3ZSBhbHJlYWR5IGxvYWRlZD8KKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQJCQkJCQorCQkJCQkJCQkqIG1wX2RvYzsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZQkJCQkJCQorCQkJCQkJCQkqIG1wX3NpZ05vZGU7CisJRFNJR1NpZ25lZEluZm8JCQkJKiBtcF9zaWduZWRJbmZvOworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlCQkJCQkJCisJCQkJCQkJCSogbXBfc2lnbmF0dXJlVmFsdWVOb2RlOworCXNhZmVCdWZmZXIJCQkJCW1fc2lnbmF0dXJlVmFsdWVTQjsKKwlEU0lHS2V5SW5mb0xpc3QJCQkJbV9rZXlJbmZvTGlzdDsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZQkJCQkJCQorCQkJCQkJCQkqIG1wX0tleUluZm9Ob2RlOworCXNhZmVCdWZmZXIJCQkgICAgICAgIG1fZXJyU3RyOworCisJLy8gRW52aXJvbm1lbnQKKwlYU0VDRW52CQkJCQkJKiBtcF9lbnY7CisJCisJLy8gVGhlIHNpZ25pbmcvdmVyaWZ5aW5nIGtleQorCW11dGFibGUgWFNFQ0NyeXB0b0tleQkJKiBtcF9zaWduaW5nS2V5OworCisJLy8gUmVzb2x2ZXJzCisJWFNFQ0tleUluZm9SZXNvbHZlcgkJCSogbXBfS2V5SW5mb1Jlc29sdmVyOworCisJLy8gT2JqZWN0cworCisJT2JqZWN0VmVjdG9yVHlwZQkJCW1fb2JqZWN0czsKKworCS8vIEludGVybG9ja2luZyByZWZlcmVuY2VzCisJYm9vbAkJCQkJCW1faW50ZXJsb2NraW5nUmVmZXJlbmNlczsKKworCS8vIE5vdCBpbXBsZW1lbnRlZCBjb25zdHJ1Y3RvcnMKKworCURTSUdTaWduYXR1cmUoKTsKKwkKKwlmcmllbmQgY2xhc3MgWFNFQ1BsYXRmb3JtVXRpbHM7CisKKwkvKlxAfSovCit9OworCisjZW5kaWYgLyogRFNJR1NJR05BVFVSRV9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy9kc2lnL0RTSUdTaWduZWRJbmZvLmNwcCBiL2Mvc3JjL2RzaWcvRFNJR1NpZ25lZEluZm8uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzMmFiY2IKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9kc2lnL0RTSUdTaWduZWRJbmZvLmNwcApAQCAtMCwwICsxLDQzNCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogRFNJR1NpZ25lZEluZm8gOj0gQ2xhc3MgZm9yIGNoZWNraW5nIGFuZCBzZXR0aW5nIHVwIHNpZ25lZCBJbmZvIG5vZGVzIGluIGEgRFNJRyBzaWduYXR1cmUKKyAqCisgKiAkSWQkCisgKgorICovCisKKy8vIFhTRUMgSW5jbHVkZXMKKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1NpZ25lZEluZm8uaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHUmVmZXJlbmNlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1NpZ25hdHVyZS5ocHA+CisKKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvSmFuaXRvci5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzCisKK0RTSUdTaWduZWRJbmZvOjpEU0lHU2lnbmVkSW5mbyhET01Eb2N1bWVudCAqZG9jLCAKKwkJWFNFQ1NhZmVCdWZmZXJGb3JtYXR0ZXIgKiBwRm9ybWF0dGVyLCAKKwkJRE9NTm9kZSAqc2lnbmVkSW5mb05vZGUsIGNvbnN0IFhTRUNFbnYgKiBlbnYpIHsKKworCW1wX2RvYyA9IGRvYzsKKwltX0hNQUNPdXRwdXRMZW5ndGggPSAwOworCW1wX2Zvcm1hdHRlciA9IHBGb3JtYXR0ZXI7CisJbXBfc2lnbmVkSW5mb05vZGUgPSBzaWduZWRJbmZvTm9kZTsKKwltX3NpZ25hdHVyZU1ldGhvZCA9IFNJR05BVFVSRV9OT05FOworCW1wX2VudiA9IGVudjsKKwltcF9yZWZlcmVuY2VMaXN0ID0gTlVMTDsKKwltX2xvYWRlZCA9IGZhbHNlOworCit9CisKK0RTSUdTaWduZWRJbmZvOjpEU0lHU2lnbmVkSW5mbyhET01Eb2N1bWVudCAqZG9jLCAKKwkJWFNFQ1NhZmVCdWZmZXJGb3JtYXR0ZXIgKiBwRm9ybWF0dGVyLCAKKwkJY29uc3QgWFNFQ0VudiAqIGVudikgeworCisJbXBfZG9jID0gZG9jOworCW1fSE1BQ091dHB1dExlbmd0aCA9IDA7CisJbXBfZm9ybWF0dGVyID0gcEZvcm1hdHRlcjsKKwltcF9zaWduZWRJbmZvTm9kZSA9IE5VTEw7CisJbV9zaWduYXR1cmVNZXRob2QgPSBTSUdOQVRVUkVfTk9ORTsKKwltcF9lbnYgPSBlbnY7CisJbXBfcmVmZXJlbmNlTGlzdCA9IE5VTEw7CisJbV9sb2FkZWQgPSBmYWxzZTsKKworfQorCitEU0lHU2lnbmVkSW5mbzo6fkRTSUdTaWduZWRJbmZvKCkgeworCisJbXBfZm9ybWF0dGVyID0gTlVMTDsKKwltcF9lbnYgPSBOVUxMOworCWlmIChtcF9yZWZlcmVuY2VMaXN0ICE9IE5VTEwpIHsKKworCQlkZWxldGUgbXBfcmVmZXJlbmNlTGlzdDsKKwkJbXBfcmVmZXJlbmNlTGlzdCA9IE5VTEw7CisKKwl9CisKK30KKworc2lnbmF0dXJlTWV0aG9kIERTSUdTaWduZWRJbmZvOjpnZXRTaWduYXR1cmVNZXRob2Qodm9pZCkgeworCisJcmV0dXJuIG1fc2lnbmF0dXJlTWV0aG9kOworCit9CisKK0RPTU5vZGUgKiBEU0lHU2lnbmVkSW5mbzo6Z2V0RE9NTm9kZSgpIHsKKworCXJldHVybiBtcF9zaWduZWRJbmZvTm9kZTsKKworfQorCitjYW5vbmljYWxpemF0aW9uTWV0aG9kIERTSUdTaWduZWRJbmZvOjpnZXRDYW5vbmljYWxpemF0aW9uTWV0aG9kKHZvaWQpIHsKKworCXJldHVybiBtX2Nhbm9uaWNhbGl6YXRpb25NZXRob2Q7CisKK30KKworaGFzaE1ldGhvZCBEU0lHU2lnbmVkSW5mbzo6Z2V0SGFzaE1ldGhvZCgpIHsKKworCXJldHVybiBtX2hhc2hNZXRob2Q7CisKK30KKworaW50IERTSUdTaWduZWRJbmZvOjpnZXRITUFDT3V0cHV0TGVuZ3RoKCkgeworCisJcmV0dXJuIG1fSE1BQ091dHB1dExlbmd0aDsKKworfQorCisKKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFZlcmlmeSBlYWNoIHJlZmVyZW5jZSBlbGVtZW50CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK2Jvb2wgRFNJR1NpZ25lZEluZm86OnZlcmlmeShzYWZlQnVmZmVyICZlcnJTdHIpIHsKKworCXJldHVybiBEU0lHUmVmZXJlbmNlOjp2ZXJpZnlSZWZlcmVuY2VMaXN0KG1wX3JlZmVyZW5jZUxpc3QsIGVyclN0cik7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDYWxjdWxhdGUgYW5kIHNldCBoYXNoIHZhbHVlcyBmb3IgZWFjaCByZWZlcmVuY2UgZWxlbWVudAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBEU0lHU2lnbmVkSW5mbzo6aGFzaChib29sIGludGVybG9ja2luZ1JlZmVyZW5jZXMpIHsKKworCURTSUdSZWZlcmVuY2U6Omhhc2hSZWZlcmVuY2VMaXN0KG1wX3JlZmVyZW5jZUxpc3QsIGludGVybG9ja2luZ1JlZmVyZW5jZXMpOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ3JlYXRlIGFuIGVtcHR5IHJlZmVyZW5jZSBpbiB0aGUgc2lnbmVkIGluZm8KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworRFNJR1JlZmVyZW5jZSAqIERTSUdTaWduZWRJbmZvOjpjcmVhdGVSZWZlcmVuY2UoY29uc3QgWE1MQ2ggKiBVUkksIAorCQkJCQkJCQloYXNoTWV0aG9kIGhtLCAKKwkJCQkJCQkJY2hhciAqIHR5cGUpIHsKKworCXNhZmVCdWZmZXIgaFVSSTsKKworCWlmIChoYXNoTWV0aG9kMlVSSShoVVJJLCBobSkgPT0gZmFsc2UpIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpVbmtub3duU2lnbmF0dXJlQWxnb3JpdGhtLAorCQkJIkRTSUdTaWduZWRJbmZvOjpjcmVhdGVSZWZlcmVuY2UgLSBIYXNoIG1ldGhvZCB1bmtub3duIik7CisJfQorCQorCXJldHVybiBjcmVhdGVSZWZlcmVuY2UoVVJJLCBoVVJJLnNiU3RyVG9YTUxDaCgpLCBNQUtFX1VOSUNPREVfU1RSSU5HKHR5cGUpKTs7Cit9CisKK0RTSUdSZWZlcmVuY2UgKiBEU0lHU2lnbmVkSW5mbzo6Y3JlYXRlUmVmZXJlbmNlKAorCQljb25zdCBYTUxDaCAqIFVSSSwKKwkJY29uc3QgWE1MQ2ggKiBoYXNoQWxnb3JpdGhtVVJJLCAKKwkJY29uc3QgWE1MQ2ggKiB0eXBlKSB7CisKKwlEU0lHUmVmZXJlbmNlICogcmVmOworCVhTRUNuZXcocmVmLCBEU0lHUmVmZXJlbmNlKG1wX2VudikpOworCUphbml0b3I8RFNJR1JlZmVyZW5jZT4gal9yZWYocmVmKTsKKworCURPTU5vZGUgKnJlZk5vZGUgPSByZWYtPmNyZWF0ZUJsYW5rUmVmZXJlbmNlKFVSSSwgaGFzaEFsZ29yaXRobVVSSSwgdHlwZSk7CisKKwkvLyBBZGQgdGhlIG5vZGUgdG8gdGhlIGVuZCBvZiB0aGUgY2hpbGRlcmVuCisJbXBfc2lnbmVkSW5mb05vZGUtPmFwcGVuZENoaWxkKHJlZk5vZGUpOworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChtcF9zaWduZWRJbmZvTm9kZSk7CisKKwkvLyBBZGQgdG8gdGhlIHJlZmVyZW5jZSBMaXN0CisJal9yZWYucmVsZWFzZSgpOworCW1wX3JlZmVyZW5jZUxpc3QtPmFkZFJlZmVyZW5jZShyZWYpOworCisJcmV0dXJuIHJlZjsKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENyZWF0ZSBhbiBlbXB0eSBTaWduZWRJbmZvCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBkZXByZWNhdGVkCisKK0RPTUVsZW1lbnQgKkRTSUdTaWduZWRJbmZvOjpjcmVhdGVCbGFua1NpZ25lZEluZm8oY2Fub25pY2FsaXphdGlvbk1ldGhvZCBjbSwKKwkJCXNpZ25hdHVyZU1ldGhvZAlzbSwKKwkJCWhhc2hNZXRob2QgaG0pIHsKKworCS8vIFRoaXMgaXMgbm93IGRlcHJlY2F0ZWQuICBCZWNhdXNlIHRoaXMgaXMgc28sIHdlIGdvIHRoZSBsb25nIHdheSAtIHRyYW5zbGF0ZQorCS8vIHRvIFVSSSBhbmQgdGhlbiBjYWxsIHRoZSAic3RhbmRhcmQiIG1ldGhvZCwgd2hpY2ggd2lsbCB0cmFuc2xhdGUgYmFjayB0byAKKwkvLyBpbnRlcm5hbCBlbnVtcyBpZiBwb3NzaWJsZQorCisJY29uc3QgWE1MQ2ggKiBjVVJJOworCXNhZmVCdWZmZXIgc1VSSTsKKworCWlmICgoY1VSSSA9IGNhbm9uaWNhbGl6YXRpb25NZXRob2QyVU5JQ09ERVVSSShjbSkpID09IE5VTEwpIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpVbmtub3duQ2Fub25pY2FsaXphdGlvbiwKKwkJCSJEU0lHU2lnbmF0dXJlOjpjcmVhdGVCbGFua1NpZ25hdHVyZSAtIENhbm9uaWNhbGlzYXRpb24gbWV0aG9kIHVua25vd24iKTsKKwl9CisKKwlpZiAoc2lnbmF0dXJlSGFzaE1ldGhvZDJVUkkoc1VSSSwgc20sIGhtKSA9PSBmYWxzZSkgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlVua25vd25TaWduYXR1cmVBbGdvcml0aG0sCisJCQkiRFNJR1NpZ25hdHVyZTo6Y3JlYXRlQmxhbmtTaWduYXR1cmUgLSBTaWduYXR1cmUvSGFzaCBtZXRob2QgdW5rbm93biIpOworCX0KKworCXJldHVybiBjcmVhdGVCbGFua1NpZ25lZEluZm8oY1VSSSwgc1VSSS5zYlN0clRvWE1MQ2goKSk7CisKK30KKworRE9NRWxlbWVudCAqIERTSUdTaWduZWRJbmZvOjpjcmVhdGVCbGFua1NpZ25lZEluZm8oCisJCQljb25zdCBYTUxDaCAqIGNhbm9uaWNhbGl6YXRpb25BbGdvcml0aG1VUkksCisJCQljb25zdCBYTUxDaCAqIHNpZ25hdHVyZUFsZ29yaXRobVVSSSkgeworCisJc2FmZUJ1ZmZlciBzdHI7CisJY29uc3QgWE1MQ2ggKiBwcmVmaXhOUyA9IG1wX2Vudi0+Z2V0RFNJR05TUHJlZml4KCk7CisKKwltYWtlUU5hbWUoc3RyLCBwcmVmaXhOUywgIlNpZ25lZEluZm8iKTsKKworCURPTUVsZW1lbnQgKnJldCA9IG1wX2RvYy0+Y3JlYXRlRWxlbWVudE5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSURTSUcsIAorCQkJCQkJCQlzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisJCisJbXBfc2lnbmVkSW5mb05vZGUgPSByZXQ7CisKKwkvLyBOb3cgY3JlYXRlIHRoZSBhbGdvcml0aG0gcGFydHMKKwlYU0VDbWFwVVJJVG9DYW5vbmljYWxpemF0aW9uTWV0aG9kKGNhbm9uaWNhbGl6YXRpb25BbGdvcml0aG1VUkksIG1fY2Fub25pY2FsaXphdGlvbk1ldGhvZCk7CisJWFNFQ21hcFVSSVRvU2lnbmF0dXJlTWV0aG9kcyhzaWduYXR1cmVBbGdvcml0aG1VUkksIG1fc2lnbmF0dXJlTWV0aG9kLCBtX2hhc2hNZXRob2QpOworCisJLy8gQ2Fub25pY2FsaXNhdGlvbgorCisJRE9NRWxlbWVudCAqY2FuTWV0aCA9IG1wX2RvYy0+Y3JlYXRlRWxlbWVudE5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSURTSUcsIAorCQkJbWFrZVFOYW1lKHN0ciwgcHJlZml4TlMsICJDYW5vbmljYWxpemF0aW9uTWV0aG9kIikucmF3WE1MQ2hCdWZmZXIoKSk7CisKKwltcF9lbnYtPmRvUHJldHR5UHJpbnQobXBfc2lnbmVkSW5mb05vZGUpOworCW1wX3NpZ25lZEluZm9Ob2RlLT5hcHBlbmRDaGlsZChjYW5NZXRoKTsKKwltcF9lbnYtPmRvUHJldHR5UHJpbnQobXBfc2lnbmVkSW5mb05vZGUpOworCisJY2FuTWV0aC0+c2V0QXR0cmlidXRlTlMoTlVMTCxEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJBbGdvcml0aG0sCisJCWNhbm9uaWNhbGl6YXRpb25BbGdvcml0aG1VUkkpOworCisJLy8gTm93IHRoZSBTaWduYXR1cmVNZXRob2QKKworCURPTUVsZW1lbnQgKnNpZ01ldGggPSBtcF9kb2MtPmNyZWF0ZUVsZW1lbnROUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklEU0lHLCAKKwkJCW1ha2VRTmFtZShzdHIsIHByZWZpeE5TLCAiU2lnbmF0dXJlTWV0aG9kIikucmF3WE1MQ2hCdWZmZXIoKSk7CisKKwltcF9zaWduZWRJbmZvTm9kZS0+YXBwZW5kQ2hpbGQoc2lnTWV0aCk7CisJbXBfZW52LT5kb1ByZXR0eVByaW50KG1wX3NpZ25lZEluZm9Ob2RlKTsKKworCXNpZ01ldGgtPnNldEF0dHJpYnV0ZU5TKE5VTEwsIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ckFsZ29yaXRobSwgCisJCXNpZ25hdHVyZUFsZ29yaXRobVVSSSk7CisKKwkvLyBTdG9yZSB0aGUgYWxnb3JpdGhtIFVSSSBpbnRlcm5hbGx5CisJbXBfYWxnb3JpdGhtVVJJID0gc2lnTWV0aC0+Z2V0QXR0cmlidXRlTlMoTlVMTCwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyQWxnb3JpdGhtKTsKKworCS8vIENyZWF0ZSBhbiBlbXB0eSByZWZlcmVuY2UgbGlzdAorCisJWFNFQ25ldyhtcF9yZWZlcmVuY2VMaXN0LCBEU0lHUmVmZXJlbmNlTGlzdCgpKTsKKworCXJldHVybiByZXQ7CisKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIExvYWQgdGhlIFNpZ25lZEluZm8KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgRFNJR1NpZ25lZEluZm86OmxvYWQodm9pZCkgeworCisKKwlpZiAobXBfc2lnbmVkSW5mb05vZGUgPT0gMCkgeworCisJCS8vIEF0dGVtcHQgdG8gbG9hZCBhbiBlbXB0eSBzaWduYXR1cmUgZWxlbWVudAorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkxvYWRFbXB0eVNpZ25lZEluZm8pOworCisJfQorCisJaWYgKCFzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZShtcF9zaWduZWRJbmZvTm9kZSksICJTaWduZWRJbmZvIikpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkxvYWROb25TaWduZWRJbmZvKTsKKworCX0KKworCURPTU5vZGUgKiB0bXBTSSA9IG1wX3NpZ25lZEluZm9Ob2RlLT5nZXRGaXJzdENoaWxkKCk7CisKKwkvLyBDaGVjayBmb3IgQ2Fub25pY2FsaXphdGlvbk1ldGhvZAorCisJd2hpbGUgKHRtcFNJICE9IDAgJiYgKHRtcFNJLT5nZXROb2RlVHlwZSgpICE9IERPTU5vZGU6OkVMRU1FTlRfTk9ERSkpCisJCS8vIFNraXAgdGV4dCBhbmQgY29tbWVudHMKKwkJdG1wU0kgPSB0bXBTSS0+Z2V0TmV4dFNpYmxpbmcoKTsKKworCWlmICh0bXBTSSA9PSAwIHx8ICFzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZSh0bXBTSSksICJDYW5vbmljYWxpemF0aW9uTWV0aG9kIikpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkRFNJR0NoaWxkTm90Rm91bmQsIAorCQkJCSJFeHBlY3RlZCA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZD4gYXMgZmlyc3QgY2hpbGQgb2YgPFNpZ25lZEluZm8+Iik7CisKKwl9CisKKwkvLyBEZXRlcm1pbmUgd2hhdCB0aGUgY2Fub25pY2FsaXphdGlvbiBtZXRob2QgaXMKKwlET01OYW1lZE5vZGVNYXAgKnRtcEF0dHMgPSB0bXBTSS0+Z2V0QXR0cmlidXRlcygpOworCisJRE9NTm9kZSAqYWxnb3JpdGhtID0gdG1wQXR0cy0+Z2V0TmFtZWRJdGVtKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ckFsZ29yaXRobSk7CisKKwlpZiAoYWxnb3JpdGhtID09IDApIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkRFNJR0NoaWxkTm90Rm91bmQsCisJCQkJCSJFeHBlY3RlZCBBbGdvcml0aG0gYXR0cmlidXRlIGluIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kPiIpOworCisJfQorCisJc2FmZUJ1ZmZlciB0bXBTQjsKKworCXRtcFNCIDw8ICgqbXBfZm9ybWF0dGVyIDw8IGFsZ29yaXRobS0+Z2V0Tm9kZVZhbHVlKCkpOworCisJaWYgKHRtcFNCLnNiU3RyY21wKFVSSV9JRF9DMTROX05PQykgPT0gMCkgeworCisJCW1fY2Fub25pY2FsaXphdGlvbk1ldGhvZCA9IENBTk9OX0MxNE5fTk9DOworCisJfQorCisJZWxzZSBpZiAodG1wU0Iuc2JTdHJjbXAoVVJJX0lEX0MxNE5fQ09NKSA9PSAwKSB7CisKKwkJbV9jYW5vbmljYWxpemF0aW9uTWV0aG9kID0gQ0FOT05fQzE0Tl9DT007CisKKwl9CisKKwllbHNlIGlmICh0bXBTQi5zYlN0cmNtcChVUklfSURfQzE0TjExX05PQykgPT0gMCkgeworCisgICAgICAgIG1fY2Fub25pY2FsaXphdGlvbk1ldGhvZCA9IENBTk9OX0MxNE4xMV9OT0M7CisKKyAgICB9CisKKyAgICBlbHNlIGlmICh0bXBTQi5zYlN0cmNtcChVUklfSURfQzE0TjExX0NPTSkgPT0gMCkgeworCisgICAgICAgIG1fY2Fub25pY2FsaXphdGlvbk1ldGhvZCA9IENBTk9OX0MxNE4xMV9DT007CisKKyAgICB9CisKKyAgICBlbHNlIGlmICh0bXBTQi5zYlN0cmNtcChVUklfSURfRVhDX0MxNE5fQ09NKSA9PSAwKSB7CisKKwkJbV9jYW5vbmljYWxpemF0aW9uTWV0aG9kID0gQ0FOT05fQzE0TkVfQ09NOworCisJfQorCisJZWxzZSBpZiAodG1wU0Iuc2JTdHJjbXAoVVJJX0lEX0VYQ19DMTROX05PQykgPT0gMCkgeworCisJCW1fY2Fub25pY2FsaXphdGlvbk1ldGhvZCA9IENBTk9OX0MxNE5FX05PQzsKKworCX0KKworCWVsc2UKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlVua25vd25DYW5vbmljYWxpemF0aW9uKTsKKworCS8vIE5vdyBsb2FkIHRoZSBTaWduYXR1cmVNZXRob2QKKworCXRtcFNJID0gdG1wU0ktPmdldE5leHRTaWJsaW5nKCk7CisKKwl3aGlsZSAodG1wU0kgIT0gMCAmJiAodG1wU0ktPmdldE5vZGVUeXBlKCkgIT0gRE9NTm9kZTo6RUxFTUVOVF9OT0RFKSkKKwkJLy8gU2tpcCB0ZXh0IGFuZCBjb21tZW50cworCQl0bXBTSSA9IHRtcFNJLT5nZXROZXh0U2libGluZygpOworCisJaWYgKHRtcFNJID09IDAgfHwgIXN0ckVxdWFscyhnZXREU0lHTG9jYWxOYW1lKHRtcFNJKSwgIlNpZ25hdHVyZU1ldGhvZCIpKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZERTSUdDaGlsZE5vdEZvdW5kLCAKKwkJCQkiRXhwZWN0ZWQgPFNpZ25hdHVyZU1ldGhvZD4gYXMgY2hpbGQgb2YgPFNpZ25lZEluZm8+Iik7CisJfQorCisKKwkvLyBEZXRlcm1pbmUgdGhlIGFsZ29yaXRobXMgdXNlZCB0byBzaWduIHRoaXMgZG9jdW1lbnQKKworCXRtcEF0dHMgPSB0bXBTSS0+Z2V0QXR0cmlidXRlcygpOworCisJYWxnb3JpdGhtID0gdG1wQXR0cy0+Z2V0TmFtZWRJdGVtKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ckFsZ29yaXRobSk7CisJCisJaWYgKGFsZ29yaXRobSA9PSAwKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZERTSUdDaGlsZE5vdEZvdW5kLAorCQkJCQkiRXhwZWN0ZWQgQWxnb3JpdGhtIGF0dHJpYnV0ZSBpbiA8U2lnbmF0dXJlTWV0aG9kPiIpOworCisJfQorCQorCW1wX2FsZ29yaXRobVVSSSA9IGFsZ29yaXRobS0+Z2V0Tm9kZVZhbHVlKCk7CisKKwkvKiBOT1RFIC0gYXMgb2YgdmVyc2lvbiAxLjMuMSBhbGwgY29kZSByZWxhdGluZyB0byBwYXJzaW5nIHRoZSBhbGdvcml0aG0gCisJICogaGFzIGJlZW4gcmVtb3ZlZC4gIFRoaXMgc2hvdWxkIGFsbCBiZSBoYW5kbGVkIGluc2lkZSB0aGUgYWxnb3JpdGhtIG1hcHBlcnMuCisJICogSGF2aW5nIGNvZGUgaGVyZSByZXN0cmljdHMgYXZhaWxhYmxlIGFsZ29yaXRobXMsIGFzIHRoaXMgY29kZSBpcyBub3QgZXh0ZW5kZWQgZm9yCisJICogbmV3IGFsZ29ydGhtcy4KKwkgKi8KKworCS8qIExvb2sgZm9yIG1heGltdW0gb3V0cHV0IHZhbHVlLiBSZWFsbHkgb25seSBhcHBsaWVzIHRvIEhNQUNzLCBidXQgYXMgd2Ugbm8KKwkgKiBsb25nZXIga25vdyBhdCB0aGlzIHBvaW50IGlmIHRoaXMgaXMgYW4gSE1BQywgd2UgbmVlZCB0byBjaGVjay4gKi8KKworCURPTU5vZGUgKnRtcFNPViA9IHRtcFNJLT5nZXRGaXJzdENoaWxkKCk7CisJd2hpbGUgKHRtcFNPViAhPSBOVUxMICYmIAorCQl0bXBTT1YtPmdldE5vZGVUeXBlKCkgIT0gRE9NTm9kZTo6RUxFTUVOVF9OT0RFICYmIAorCQkhc3RyRXF1YWxzKGdldERTSUdMb2NhbE5hbWUodG1wU09WKSwgIkhNQUNPdXRwdXRMZW5ndGgiKSkKKwkJdG1wU09WID0gdG1wU09WLT5nZXROZXh0U2libGluZygpOworCisJaWYgKHRtcFNPViAhPSBOVUxMKSB7CisKKwkJLy8gSGF2ZSBhIG1heCBvdXRwdXQgdmFsdWUhCisJCXRtcFNPViA9IHRtcFNPVi0+Z2V0Rmlyc3RDaGlsZCgpOworCQl3aGlsZSAodG1wU09WICE9IE5VTEwgJiYgdG1wU09WLT5nZXROb2RlVHlwZSgpICE9IERPTU5vZGU6OlRFWFRfTk9ERSkKKwkJCXRtcFNPViA9IHRtcFNPVi0+Z2V0TmV4dFNpYmxpbmcoKTsKKworCQlpZiAodG1wU09WICE9IE5VTEwpIHsKKworCQkJc2FmZUJ1ZmZlciB2YWw7CisJCQl2YWwgPDwgKCptcF9mb3JtYXR0ZXIgPDwgdG1wU09WLT5nZXROb2RlVmFsdWUoKSk7CisJCQltX0hNQUNPdXRwdXRMZW5ndGggPSBhdG9pKChjaGFyICopIHZhbC5yYXdCdWZmZXIoKSk7CisKKwkJfQorCX0KKworCS8vIE5vdyBsb29rIGF0IHJlZmVyZW5jZXMuLi4uCisKKwl0bXBTSSA9IHRtcFNJLT5nZXROZXh0U2libGluZygpOworCisJLy8gUnVuIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGVsZW1lbnRzIHVudGlsIGRvbmUKKworCXdoaWxlICh0bXBTSSAhPSAwICYmICh0bXBTSS0+Z2V0Tm9kZVR5cGUoKSAhPSBET01Ob2RlOjpFTEVNRU5UX05PREUpKQorCQkvLyBTa2lwIHRleHQgYW5kIGNvbW1lbnRzCisJCXRtcFNJID0gdG1wU0ktPmdldE5leHRTaWJsaW5nKCk7CisKKwlpZiAodG1wU0kgIT0gTlVMTCkgeworCisJCS8vIEhhdmUgYW4gZWxlbWVudCBub2RlIC0gc2hvdWxkIGJlIGEgcmVmZXJlbmNlLCBzbyBsZXQncyBsb2FkIHRoZSBsaXN0CisKKwkJbXBfcmVmZXJlbmNlTGlzdCA9IERTSUdSZWZlcmVuY2U6OmxvYWRSZWZlcmVuY2VMaXN0RnJvbVhNTChtcF9lbnYsIHRtcFNJKTsKKworCX0KKworfQorCmRpZmYgLS1naXQgYS9jL3NyYy9kc2lnL0RTSUdTaWduZWRJbmZvLmhwcCBiL2Mvc3JjL2RzaWcvRFNJR1NpZ25lZEluZm8uaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMmFjM2EKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9kc2lnL0RTSUdTaWduZWRJbmZvLmhwcApAQCAtMCwwICsxLDMxNCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogRFNJR1NpZ25hdHVyZSA6PSBDbGFzcyBmb3IgY2hlY2tpbmcgYW5kIHNldHRpbmcgdXAgc2lnbmF0dXJlIG5vZGVzIGluIGEgRFNJRyBzaWduYXR1cmUKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgRFNJR1NJR05FRElORk9fSU5DTFVERQorI2RlZmluZSBEU0lHU0lHTkVESU5GT19JTkNMVURFCisKKy8vIFhTRUMgSW5jbHVkZXMKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDU2FmZUJ1ZmZlckZvcm1hdHRlci5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdDb25zdGFudHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHUmVmZXJlbmNlTGlzdC5ocHA+CisKKy8vIFhlcmNlcyBJbmNsdWRlcworCitYU0VDX0RFQ0xBUkVfWEVSQ0VTX0NMQVNTKERPTURvY3VtZW50KTsKK1hTRUNfREVDTEFSRV9YRVJDRVNfQ0xBU1MoRE9NTm9kZSk7CitYU0VDX0RFQ0xBUkVfWEVSQ0VTX0NMQVNTKERPTUVsZW1lbnQpOworCisvLyBHZW5lcmFsIGluY2x1ZGVzCisKKyNpbmNsdWRlIDx2ZWN0b3I+CisKK2NsYXNzIFhTRUNFbnY7CisKKy8qKgorICogQGluZ3JvdXAgcHVic2lnCisgKi8KKworLyoqCisgKiBAYnJpZWYgQ29uc3RydWN0cyBhbmQgaG9sZHMgYSBTaWduZWRJbmZvLgorICoKKyAqIFRoZSBcPFNpZ25lZEluZm9cPiBub2RlIGlzIHRoZSBjb250YWluZXIgZm9yIGFsbCB0aGUgaW5mb3JtYXRpb24KKyAqIHRoYXQgaXMgc2lnbmVkLiAgSXQgY29udGFpbnMgdGhlIFJlZmVyZW5jZUxpc3QgYW5kIGluZm9ybWF0aW9uCisgKiBvbiB0aGUgc2lnbmF0dXJlIGFuZCBjYW5vbmljYWxpc2F0aW9uIG1ldGhvZCBmb3IgdGhlIHNpZ25hdHVyZS4KKyAqCisgKiBHZW5lcmFsbHkgdGhpcyBjbGFzcyBzaG91bGQgbm90IGJlIG1hbmlwdWxhdGVkIGRpcmVjdGx5LgorICoKKyAqLworCitjbGFzcyBEU0lHX0VYUE9SVCBEU0lHU2lnbmVkSW5mbyB7CisKK3B1YmxpYzoKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIENvbnN0cnVjdG9yIGZvciBleGlzdGluZyBub2RlcworCSAqCisJICogQ2FsbGVkIGJ5IHRoZSBsaWJyYXJ5IHRvIGNvbnN0cnVjdCBhIFNpZ25lZEluZm8gaW4gY2FzZXMKKwkgKiB3aGVyZSB0aGUgRE9NIE5vZGVzIGV4aXN0IGFuZCBuZWVkIHRvIGJlIGxvYWRlZAorCSAqCisJICogQHBhcmFtIGRvYyBUaGUgZG9jdW1lbnQgY29udGFpbmluZyB0aGUgc3RydWN0dXJlIHRvIGJlIGxvYWRlZAorCSAqIEBwYXJhbSBwRm9ybWF0dGVyIEEgc2FmZUJ1ZmZlciBmb3JtYXR0ZXIgdGhhdCB3aWxsIHRyYW5zbGF0ZSB0byBVVEYtOAorCSAqIEBwYXJhbSBzaWduZWRJbmZvTm9kZSBUaGUgbm9kZSBhdCB0aGUgdG9wIG9mIHRoZSBTaWduZWRJbmZvIHRyZWUgZnJhZ21lbnQKKwkgKiBAcGFyYW0gZW52IE9wZXJhdGluZyBlbnZpcm9ubWVudAorCSAqLworCisJRFNJR1NpZ25lZEluZm8oWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICpkb2MsIAorCQlYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlciAqIHBGb3JtYXR0ZXIsIAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqc2lnbmVkSW5mb05vZGUsCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYpOworCisKKwkvKioKKwkgKiBcYnJpZWYgQ29uc3RydWN0b3IgZm9yIGJ1aWxkaW5nIGZyb20gc2NyYXRjaAorCSAqCisJICogV2lsbCBzZXQgdXAgdGhlIGNsYXNzIGluIHByZXBhcmF0aW9uIGZvciBidWlsZGluZyB0aGUgCisJICogRE9NIHN0cnVjdHVyZSAKKwkgKgorCSAqIEBwYXJhbSBkb2MgVGhlIGRvY3VtZW50IHRvIHVzZSB0byBjb25zdHJ1Y3QKKwkgKiBAcGFyYW0gcEZvcm1hdHRlciBGb3JtYXR0ZXIgdG8gdXNlIHRvIHRyYW5zbGF0ZSB0byBVVEYtOAorCSAqIEBwYXJhbSBlbnYgT3BlcmF0aW5nIGVudmlyb25tZW50CisJICovCisKKwlEU0lHU2lnbmVkSW5mbyhYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKmRvYywKKwkJCQlYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlciAqIHBGb3JtYXR0ZXIsIAorCQkJCWNvbnN0IFhTRUNFbnYgKiBlbnYpOworCisJLyoqCisJICogXGJyaWVmIERlc3RydWN0b3IKKwkgKiAKKwkgKiBEZWxldGUgLSBidXQgZG9lcyBub3QgZGVzdHJveSB0aGUgRE9NIE5vZGVzCisJICoKKwkgKi8KKworCX5EU0lHU2lnbmVkSW5mbygpOworCisJLy9AfQorCisJLyoqIEBuYW1lIENyZWF0ZSBhbmQgU2V0ICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIExvYWQgZnJvbSBET00KKwkgKgorCSAqIExvYWQgdGhlIFNpZ25lZEluZm8gZnJvbSB0aGUgRE9NIERvY3VtZW50CisJICoKKwkgKiBEb2VzIG5vdCBkbyBhbnkgdmVyaWZpY2F0aW9uIG9mIHNpZ25hdHVyZXMgb3IgcmVmZXJlbmNlcyAtIAorCSAqIHNpbXBseSBsb2FkcyB0aGUgdmFsdWVzCisJICovCisKKwl2b2lkIGxvYWQodm9pZCk7CisKKwkvKioKKwkgKiBcYnJpZWYgVmVyaWZ5IHRoZSBTaWduZWRJbmZvCisJICoKKwkgKiBWYWxpZGF0ZXMgZWFjaCByZWZlcmVuY2UgY29udGFpbmVkIGluIHRoZSBTaWduZWRJbmZvLiAgRG9lcyBub3QKKwkgKiB2YWxpZGF0ZSB0aGUgc2lnbmF0dXJlIGl0c2VsZiAtIHRoaXMgaXMgZG9uZSBieSBEU0lHU2lnbmF0dXJlCisJICoKKwkgKiBAcGFyYW0gZXJyU3RyIFRoZSBzYWZlQnVmZmVyIHRoYXQgZXJyb3IgbWVzc2FnZXMgc2hvdWxkIGJlIHdyaXR0ZW4gdG8uCisJICovCisKKwlib29sIHZlcmlmeShzYWZlQnVmZmVyICZlcnJTdHIpOworCisJLyoqCisJICogXGJyaWVmIEhhc2ggdGhlIHJlZmVyZW5jZSBsaXN0CisJICoKKwkgKiBHb2VzIHRocm91Z2ggZWFjaCByZWZlcmVuY2UgaW4gdGhlIFNpZ25lZEluZm8gKGluY2x1ZGluZyByZWZlcmVuY2VkCisJICogbWFuaWZlc3RzKSwgcGVyZm9ybXMgdGhlIGRpZ2VzdCBvcGVyYXRpb24gYW5kIGFkZHMgdGhlIGRpZ2VzdAorCSAqIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudAorCSAqCisJICogQHBhcmFtIGludGVybG9ja2luZ1JlZmVyZW5jZXMgU2V0IHRvIHRydWUgaWYgYW55IHJlZmVyZW5jZXMgZGVwZW5kIG9uIG90aGVyCisJICogcmVmZXJlbmNlcworCSAqLworCisJdm9pZCBoYXNoKGJvb2wgaW50ZXJsb2NraW5nUmVmZXJlbmNlcyk7CisKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIGFuIGVtcHR5IFNpZ25lZEluZm8KKwkgKgorCSAqIENyZWF0ZXMgdGhlIERPTSBzdHJ1Y3R1cmUgZm9yIGEgU2lnbmVkSW5mbworCSAqCisJICogQnVpbGRzIHRoZSBET00gc3RydWN0dXJlcyBhbmQgc2V0cyB0aGUgY29udHJvbAorCSAqIHN0cnVjdHVyZXMgb2YgdGhlIFNpZ25lZEluZm8KKwkgKgorCSAqIEBwYXJhbSBjYW5vbmljYWxpemF0aW9uQWxnb3JpdGhtVVJJIFRoZSBjYW5vbmljYWxpc2F0aW9uIG1ldGhvZCB0byBzZXQgdGhlIFNpZ25lZEluZm8gYXMKKwkgKiBAcGFyYW0gc2lnbmF0dXJlQWxnb3JpdGhtVVJJIFNpZ25hdHVyZSBNZXRob2QgdG8gdXNlCisJICogQHBhcmFtIGhtIEhhc2ggbWV0aG9kIHRvIHVzZSAoZm9yIHRoZSBTaWduZWRJbmZvLCBub3QgdGhlIHJlZmVyZW5jZXMpCisJICovCisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqCisJCWNyZWF0ZUJsYW5rU2lnbmVkSW5mbygKKwkJCWNvbnN0IFhNTENoICogY2Fub25pY2FsaXphdGlvbkFsZ29yaXRobVVSSSwKKwkJCWNvbnN0IFhNTENoICogc2lnbmF0dXJlQWxnb3JpdGhtVVJJCisJCSk7CisKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIGFuIGVtcHR5IFNpZ25lZEluZm8KKwkgKgorCSAqIENyZWF0ZXMgdGhlIERPTSBzdHJ1Y3R1cmUgZm9yIGEgU2lnbmVkSW5mbworCSAqCisJICogQnVpbGRzIHRoZSBET00gc3RydWN0dXJlcyBhbmQgc2V0cyB0aGUgY29udHJvbAorCSAqIHN0cnVjdHVyZXMgb2YgdGhlIFNpZ25lZEluZm8KKwkgKgorCSAqIEBwYXJhbSBjbSBUaGUgY2Fub25pY2FsaXNhdGlvbiBtZXRob2QgdG8gc2V0IHRoZSBTaWduZWRJbmZvIGFzCisJICogQHBhcmFtIHNtIFNpZ25hdHVyZSBNZXRob2QgdG8gdXNlCisJICogQHBhcmFtIGhtIEhhc2ggbWV0aG9kIHRvIHVzZSAoZm9yIHRoZSBTaWduZWRJbmZvLCBub3QgdGhlIHJlZmVyZW5jZXMpCisJICogQGRlcHJlY2F0ZWQgVXNlIFVSSSBiYXNlZCBjcmVhdGlvbiBtZXRob2QgaW5zdGVhZAorCSAqLworCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKgorCQljcmVhdGVCbGFua1NpZ25lZEluZm8oY2Fub25pY2FsaXphdGlvbk1ldGhvZCBjbSwKKwkJCXNpZ25hdHVyZU1ldGhvZAlzbSwKKwkJCWhhc2hNZXRob2QgaG0KKwkJKTsKKworCS8qKgorCSAqIFxicmllZiBDcmVhdGUgYSByZWZlcmVuY2UgdG8gYWRkIHRvIHRoZSBTaWduZWRJbmZvCisJICoKKwkgKiBDYWxsZWQgYnkgRFNJR1NpZ25hdHVyZSB0byBjcmVhdGUgYW5kIGVudGVyIGEgbmV3IHJlZmVyZW5jZSBlbGVtZW50CisJICoKKwkgKiBAcGFyYW0gVVJJIFdoYXQgdGhlIHJlZmVyZW5jZSByZWZlcmVuY2VzCisJICogQHBhcmFtIGhtIERpZ2VzdCBtZXRob2QgdG8gdXNlIGZvciB0aGUgcmVmZXJlbmNlCisJICogQHBhcmFtIHR5cGUgUmVmZXJlbmNlIHR5cGUKKwkgKiBAZGVwcmVjYXRlZCBVc2UgdGhlIGFsZ29yaXRobVVSSSBiYXNlZCBjYWxsIGluc3RlYWQKKwkgKi8KKworCURTSUdSZWZlcmVuY2UgKiBjcmVhdGVSZWZlcmVuY2UoY29uc3QgWE1MQ2ggKiBVUkksCisJCWhhc2hNZXRob2QgaG0sIGNoYXIgKiB0eXBlKTsKKworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIHJlZmVyZW5jZSB0byBhZGQgdG8gdGhlIFNpZ25lZEluZm8KKwkgKgorCSAqIENhbGxlZCBieSBEU0lHU2lnbmF0dXJlIHRvIGNyZWF0ZSBhbmQgZW50ZXIgYSBuZXcgcmVmZXJlbmNlIGVsZW1lbnQKKwkgKgorCSAqIEBwYXJhbSBVUkkgV2hhdCB0aGUgcmVmZXJlbmNlIHJlZmVyZW5jZXMKKwkgKiBAcGFyYW0gaGFzaEFsZ29yaXRobVVSSSBEaWdlc3QgbWV0aG9kIHRvIHVzZSBmb3IgdGhlIHJlZmVyZW5jZQorCSAqIEBwYXJhbSB0eXBlIFJlZmVyZW5jZSB0eXBlCisJICovCisKKwlEU0lHUmVmZXJlbmNlICogY3JlYXRlUmVmZXJlbmNlKAorCQljb25zdCBYTUxDaCAqIFVSSSwKKwkJY29uc3QgWE1MQ2ggKiBoYXNoQWxnb3JpdGhtVVJJLCAKKwkJY29uc3QgWE1MQ2ggKiB0eXBlCisJKTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBHZXR0ZXIgZnVuY3Rpb25zICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgbm9kZSBwb2ludGluZyB0byB0aGUgdG9wIG9mIHRoZSBET00gZnJhZ21lbnQKKwkgKgorCSAqIEByZXR1cm5zIHRoZSBTaWduZWRJbmZvIG5vZGUKKwkgKi8KKworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICpnZXRET01Ob2RlKHZvaWQpOworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgQWxnb3JpdGhtIFVSSQorCSAqCisJICogQHJldHVybnMgdGhlIFVSSSBhc3NvY2lhdGVkIHdpdGggdGhlIEFsZ29yaXRobSB1c2VkIHRvIGdlbmVyYXRlCisJICogdGhlIHNpZ25hdHVyZQorCSAqLworCisJY29uc3QgWE1MQ2ggKiBnZXRBbGdvcml0aG1VUkkoKSB7cmV0dXJuIG1wX2FsZ29yaXRobVVSSTt9CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBjYW5vbmljYWxpc2F0aW9uIG1ldGhvZCAKKwkgKiAKKwkgKiBAcmV0dXJucyBDYW5vbmljYWxpc2F0aW9uIG1ldGhvZAorCSAqLworCisJY2Fub25pY2FsaXphdGlvbk1ldGhvZCBnZXRDYW5vbmljYWxpemF0aW9uTWV0aG9kKHZvaWQpOworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgaGFzaCBtZXRob2QKKwkgKgorCSAqIEByZXR1cm5zIHRoZSBIYXNoIChkaWdlc3QpIE1ldGhvZAorCSAqLworCisJaGFzaE1ldGhvZCBnZXRIYXNoTWV0aG9kKHZvaWQpOworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgc2lnbmF0dXJlIG1ldGhvZAorCSAqCisJICogQHJldHVybnMgdGhlIFNpZ25hdHVyZSBtZXRob2QKKwkgKi8KKworCXNpZ25hdHVyZU1ldGhvZCBnZXRTaWduYXR1cmVNZXRob2Qodm9pZCk7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IEhNQUMgbGVuZ3RoCisJICogCisJICogSE1BQyBzaWduYXR1cmVzIGNhbiBiZSB0cnVuY2F0ZWQgdG8gYSBub21pbmF0ZWQgbGVuZ3RoLgorCSAqIFRoaXMgcmV0dXJucyB0aGUgbGVuZ3RoIHVzZWQuCisJICovCisKKwlpbnQgZ2V0SE1BQ091dHB1dExlbmd0aCh2b2lkKTsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gdGhlIGxpc3Qgb2YgcmVmZXJlbmNlcworCSAqCisJICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIG9iamVjdCBob2xkaW5nIHRoZSByZWZlcmVuY2VzCisJICogY29udGFpbmVkIGluIHRoZSBTaWduZWRJbmZvCisJICovCisKKwlEU0lHUmVmZXJlbmNlTGlzdCAqZ2V0UmVmZXJlbmNlTGlzdCAodm9pZCkge3JldHVybiBtcF9yZWZlcmVuY2VMaXN0O30KKworCS8vQH0KKworCitwcml2YXRlOgorCisJWFNFQ1NhZmVCdWZmZXJGb3JtYXR0ZXIJCSogbXBfZm9ybWF0dGVyOworCWJvb2wJCQkJCQltX2xvYWRlZDsJCQkJLy8gSGF2ZSB3ZSBhbHJlYWR5IGxvYWRlZD8KKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQJCQkJCQorCQkJCQkJCQkqIG1wX2RvYzsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZQkJCQkJCQorCQkJCQkJCQkqIG1wX3NpZ25lZEluZm9Ob2RlOworCWNhbm9uaWNhbGl6YXRpb25NZXRob2QJCW1fY2Fub25pY2FsaXphdGlvbk1ldGhvZDsKKwlzaWduYXR1cmVNZXRob2QJCQkJbV9zaWduYXR1cmVNZXRob2Q7CisJaGFzaE1ldGhvZAkJCQkJbV9oYXNoTWV0aG9kOworCURTSUdSZWZlcmVuY2VMaXN0CQkJKiBtcF9yZWZlcmVuY2VMaXN0OworCWludAkJCQkJCQltX0hNQUNPdXRwdXRMZW5ndGg7CisJY29uc3QgWE1MQ2gJCQkJCSogbXBfYWxnb3JpdGhtVVJJOworCWNvbnN0IFhTRUNFbnYJCQkJKiBtcF9lbnY7CisKKwkvLyBOb3QgaW1wbGVtZW50ZWQgY29uc3RydWN0b3JzCisKKwlEU0lHU2lnbmVkSW5mbygpOworCS8vIERTSUdTaWduZWRJbmZvICYgb3BlcmF0b3I9IChjb25zdCBEU0lHU2lnbmVkSW5mbyAmKTsKKworfTsKKworCisjZW5kaWYgLyogRFNJR1NJR05FRElORk9fSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvZHNpZy9EU0lHVHJhbnNmb3JtLmNwcCBiL2Mvc3JjL2RzaWcvRFNJR1RyYW5zZm9ybS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGZjNWFkOAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2RzaWcvRFNJR1RyYW5zZm9ybS5jcHAKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogRFNJR1RyYW5zZm9ybSA6PSBCYXNlICh2aXJ0dWFsKSBjbGFzcyB0aGF0IGRlZmluZXMgYSBEU0lHIFRyYW5zZm9ybQorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHVHJhbnNmb3JtLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1NpZ25hdHVyZS5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vudi5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCitET01FbGVtZW50ICogRFNJR1RyYW5zZm9ybTo6Y3JlYXRlVHJhbnNmb3JtTm9kZSgpIHsKKworCS8vIENyZWF0ZSBhIHRyYW5zZm9ybSBub2RlIChhbmQgdHJhbnNmb3JtcyBpZiB0aGV5IGRvIG5vdCBleGlzdCkKKworCXNhZmVCdWZmZXIgc3RyOworCWNvbnN0IFhNTENoICogcHJlZml4OworCURPTUVsZW1lbnQgKnJldDsKKwlET01Eb2N1bWVudCAqZG9jID0gbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpOworCisJcHJlZml4ID0gbXBfZW52LT5nZXREU0lHTlNQcmVmaXgoKTsKKwkKKwkvLyBDcmVhdGUgdGhlIHRyYW5zZm9ybSBub2RlCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCAiVHJhbnNmb3JtIik7CisJcmV0ID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRFNJRywgc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCisJcmV0dXJuIHJldDsKKworfQorCisKKwpkaWZmIC0tZ2l0IGEvYy9zcmMvZHNpZy9EU0lHVHJhbnNmb3JtLmhwcCBiL2Mvc3JjL2RzaWcvRFNJR1RyYW5zZm9ybS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNhMzI4YwotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2RzaWcvRFNJR1RyYW5zZm9ybS5ocHAKQEAgLTAsMCArMSwxODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIERTSUdUcmFuc2Zvcm0gOj0gQmFzZSAodmlydHVhbCkgY2xhc3MgdGhhdCBkZWZpbmVzIGEgRFNJRyBUcmFuc2Zvcm0KKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgRFNJR1RSQU5TRk9STV9JTkNMVURFCisjZGVmaW5lIERTSUdUUkFOU0ZPUk1fSU5DTFVERQorCisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdDb25zdGFudHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKworWFNFQ19ERUNMQVJFX1hFUkNFU19DTEFTUyhET01Ob2RlKTsKK1hTRUNfREVDTEFSRV9YRVJDRVNfQ0xBU1MoRE9NRWxlbWVudCk7CitYU0VDX0RFQ0xBUkVfWEVSQ0VTX0NMQVNTKERPTURvY3VtZW50KTsKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisKK2NsYXNzIFhTRUNFbnY7CitjbGFzcyBUWEZNQ2hhaW47CisKKy8qKgorICogQGluZ3JvdXAgcHVic2lnCisgKi8KKworLyoqCisgKiBAYnJpZWYgVGhlIGJhc2UgY2xhc3MgZm9yIHRyYW5zZm9ybXMuCisgKgorICogVGhlIERTSUdUcmFuc2Zvcm0gY2xhc3MgaXMgdGhlIGJhc2UgY2xhc3MgdXNlZCB0byBob2xkIFw8VHJhbnNmb3JtXD4gZWxlbWVudHMKKyAqIHdpdGhpbiBhIGRvY3VtZW50LgorICoKKyAqIEl0IGRvZXMgbm90IGluIGFjdHVhbGx5IHBlcmZvcm0gYW55IHRyYW5zZm9ybWF0aW9ucyAtIG9ubHkgaG9sZCB0aGUgaW5mb3JtYXRpb24KKyAqIGFib3V0IGEgdHJhbnNmb3JtIGluIGEgXDxTaWduYXR1cmVcPiBzdHJ1Y3R1cmUuCisgKgorICogQHNlZSBUWEZNQmFzZQorICoKKyAqLworCisKK2NsYXNzIERTSUdfRVhQT1JUIERTSUdUcmFuc2Zvcm0geworCitwdWJsaWM6CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworICAgIC8vQHsKKwkKKyAgICAvKioKKwkgKiBcYnJpZWYgQ29udHJ1Y3RvciB1c2VkIGZvciBleGlzdGluZyBYTUwgc2lnbmF0dXJlcy4KKwkgKgorCSAqIFRoZSBOb2RlIHN0cnVjdHVyZSBhbHJlYWR5IGV4aXN0cywgc28gdGhpcyB0eXBlIG9mIFRyYW5zZm9ybSBjb25zdHJ1Y3RvcgorCSAqIHdpbGwgZ2VuZXJhbGx5IHJlYWQgdGhlIG5vZGVzIGluLgorCSAqCisJICogQG5vdGUgRFNJR1RyYW5zZm9ybSBzdHJ1Y3R1cmVzIHNob3VsZCBvbmx5IGV2ZXIgYmUgY3JlYXRlZCB2aWEgY2FsbHMgdG8gYQorCSAqIERTSUdUcmFuc2Zvcm1MaXN0IG9iamVjdC4KKwkgKgorCSAqIEBwYXJhbSBlbnYgVGhlIGVudmlyb25tZW50IGluIHdoaWNoIHRoaXMgdHJhbnNmb3JtIG9wZXJhdGVzCisJICogQHBhcmFtIG5vZGUgVGhlIERPTSBub2RlICh3aXRoaW4gZG9jKSB0aGF0IGlzIHRvIGJlIHVzZWQgYXMgdGhlIGJhc2Ugb2YgdGhlIFRyYW5zZm9ybS4KKwkgKiBAc2VlICNsb2FkCisJICovCisKKwlEU0lHVHJhbnNmb3JtKGNvbnN0IFhTRUNFbnYgKiBlbnYsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICogbm9kZSkgOiAKKwkJICBtcF90eGZtTm9kZShub2RlKSwKKwkJICBtcF9lbnYoZW52KSB7fTsKKworICAgIC8qKgorCSAqIFxicmllZiBDb250cnVjdG9yIHVzZWQgZm9yIG5ldyBzaWduYXR1cmVzLgorCSAqCisJICogVGhlIE5vZGUgc3RydWN0dXJlIHdpbGwgaGF2ZSB0byBiZSBjcmVhdGVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiBjbGFzcworCSAqCisJICogQG5vdGUgRFNJR1RyYW5zZm9ybSBzdHJ1Y3R1cmVzIHNob3VsZCBvbmx5IGV2ZXIgYmUgY3JlYXRlZCB2aWEgY2FsbHMgdG8gYQorCSAqIERTSUdUcmFuc2Zvcm1MaXN0IG9iamVjdC4KKwkgKgorCSAqIEBwYXJhbSBlbnYgVGhlIGVudmlyb25tZW50IGRlc2NyaXB0b3IgZm9yIHRoZSBvYmplY3QKKwkgKgorCSAqLworCisJRFNJR1RyYW5zZm9ybShjb25zdCBYU0VDRW52ICogZW52KSA6IAorCQkgIG1wX3R4Zm1Ob2RlKE5VTEwpLAorCQkgIG1wX2VudihlbnYpIHt9OworCisJCSAgCisJLyoqCisJICogXGJyaWVmIERlc3RydWN0b3IuCisJICoKKwkgKiBEZXN0cm95IHRoZSBEU0lHU2lnbmF0dXJlIGVsZW1lbnRzLgorCSAqCisJICogRG9lcyBub3QgZGVzdHJveSBhbnkgYXNzb2NpYXRlZCBET00gTm9kZXMKKwkgKi8KKwkJICAKKwl2aXJ0dWFsIH5EU0lHVHJhbnNmb3JtKCkge307CisJCisJLy9AfQorCisJLyoqIEBuYW1lIEludGVyZmFjZSBNZXRob2RzICovCisKKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgRGV0ZXJtaW5lIHRoZSB0cmFuc2Zvcm0gdHlwZS4KKwkgKgorCSAqIFVzZWQgdG8gZGV0ZXJtaW5lIHdoYXQgdGhlIHR5cGUgb2YgdGhlIHRyYW5zZm9ybSBpcy4KKwkgKgorCSAqLworCisJdmlydHVhbCB0cmFuc2Zvcm1UeXBlIGdldFRyYW5zZm9ybVR5cGUoKSA9IDA7CisJCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSB0aGUgdHJhbnNmb3JtZXIgZWxlbWVudCBhbmQgYXBwZW5kIHRvIGFuIGV4aXN0aW5nIENoYWluLgorCSAqCisJICogSW1wbGVtZW50ZWQgYnkgZWFjaCBUcmFuc2Zvcm0gY2xhc3MgYW5kIHVzZWQgYnkgdGhlIERTSUdTaWduYXR1cmUKKwkgKiB0byBjb25zdHJ1Y3QgYSBjb21wbGV0ZSBUcmFuc2Zvcm0gY2hhaW4gKFRYRk1DaGFpbikuCisJICovCisKKwl2aXJ0dWFsIHZvaWQgYXBwZW5kVHJhbnNmb3JtZXIoVFhGTUNoYWluICogaW5wdXQpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBDb25zdHJ1Y3QgYSBuZXcgdHJhbnNmb3JtLgorCSAqCisJICogSW5zdHJ1Y3QgdGhlIGltcGxlbWVudGF0aW9uIHRvIGNyZWF0ZSB0aGUgcmVxdWlyZWQKKwkgKiB0cmFuc2Zvcm0gYW5kIHJldHVybiB0aGUgbmV3bHkgY29uc3RydWN0ZWQgRE9NTm9kZSBzdHJ1Y3R1cmUKKwkgKi8KKworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiAKKwkJY3JlYXRlQmxhbmtUcmFuc2Zvcm0oWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogcGFyZW50RG9jKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgTG9hZCBhIERPTSBzdHJ1Y3R1cmUKKwkgKgorCSAqIFRha2UgdGhlIG9yaWdpbmFsIG5vZGUgYW5kIGxvYWQgYW55IHN1YiBub2RlcyBpbiB0aGUgdHJhbnNmb3JtCisJICogKGlmIG5lY2Vzc2FyeSkKKwkgKi8KKworCXZpcnR1YWwgdm9pZCBsb2FkKHZvaWQpID0gMDsKKworCS8vQH0KKworcHJvdGVjdGVkOgorCisJLyoqIEBuYW1lIFV0aWxpdHkgRnVuY3Rpb25zICovCisKKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIHRoZSBiYXNpYyBub2RlIHN0cnVjdHVyZSBvZiBhIHRyYW5zZm9ybQorCSAqCisJICovCisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGNyZWF0ZVRyYW5zZm9ybU5vZGUoKTsKKworCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUJCQkJCQorCQkJCQkJCSogbXBfdHhmbU5vZGU7CQkJLy8gVGhlIG5vZGUgdGhhdCB3ZSByZWFkIGZyb20KKwljb25zdCBYU0VDRW52CQkJKiBtcF9lbnY7CS8vIE93bmluZyBzaWduYXR1cmUKKworcHJpdmF0ZToKKworCURTSUdUcmFuc2Zvcm0oKTsKKwlEU0lHVHJhbnNmb3JtKGNvbnN0IERTSUdUcmFuc2Zvcm0gJnRoZU90aGVyKTsKKworfTsKKworCisKKyNlbmRpZiAvKiAjZGVmaW5lIERTSUdUUkFOU0ZPUk1fSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvZHNpZy9EU0lHVHJhbnNmb3JtQmFzZTY0LmNwcCBiL2Mvc3JjL2RzaWcvRFNJR1RyYW5zZm9ybUJhc2U2NC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjYwMTk4OQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2RzaWcvRFNJR1RyYW5zZm9ybUJhc2U2NC5jcHAKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIERTSUdUcmFuc2Zvcm1CYXNlNjQgOj0gQ2xhc3MgdGhhdCBob2xkcyBhIEJhc2U2NCB0cmFuc2Zvcm0gc3RydWN0dXJlCisgKgorICogJElkJAorICoKKyAqLworCisvLyBYU0VDCisKKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1RyYW5zZm9ybUJhc2U2NC5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdTaWduYXR1cmUuaHBwPgorI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1CYXNlNjQuaHBwPgorI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1DMTRuLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNQ2hhaW4uaHBwPgorI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1YUGF0aC5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0V4Y2VwdGlvbi5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vudi5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDRE9NVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RTSUdUcmFuc2Zvcm1CYXNlNjQ6OkRTSUdUcmFuc2Zvcm1CYXNlNjQoY29uc3QgWFNFQ0VudiAqIGVudiwgRE9NTm9kZSAqIG5vZGUpIDoKK0RTSUdUcmFuc2Zvcm0oZW52LCBub2RlKSB7fTsKKworCitEU0lHVHJhbnNmb3JtQmFzZTY0OjpEU0lHVHJhbnNmb3JtQmFzZTY0KGNvbnN0IFhTRUNFbnYgKiBlbnYpIDoKK0RTSUdUcmFuc2Zvcm0oZW52KSB7fTsKKwkJICAKKworRFNJR1RyYW5zZm9ybUJhc2U2NDo6fkRTSUdUcmFuc2Zvcm1CYXNlNjQoKSB7fTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBJbnRlcmZhY2UgTWV0aG9kcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCit0cmFuc2Zvcm1UeXBlIERTSUdUcmFuc2Zvcm1CYXNlNjQ6OmdldFRyYW5zZm9ybVR5cGUoKSB7CisKKwlyZXR1cm4gVFJBTlNGT1JNX0JBU0U2NDsKKworfQorCisKK3ZvaWQgRFNJR1RyYW5zZm9ybUJhc2U2NDo6YXBwZW5kVHJhbnNmb3JtZXIoVFhGTUNoYWluICogaW5wdXQpIHsKKworCS8vIElmIHRoZSBpbnB1dCBpcyBhIE5vZGVzZXQgdGhlbiB3ZSBuZWVkIHRvIGZpbmQgdGhlIHRleHQgZnJvbSB0aGUgaW5wdXQKKworCWlmIChpbnB1dC0+Z2V0TGFzdFR4Zm0oKS0+Z2V0T3V0cHV0VHlwZSgpID09IFRYRk1CYXNlOjpET01fTk9ERVMpIHsKKworCQlpZiAoaW5wdXQtPmdldExhc3RUeGZtKCktPmdldE5vZGVUeXBlKCkgIT0gVFhGTUJhc2U6OkRPTV9OT0RFX1hQQVRIX05PREVTRVQpIHsKKworI2lmZGVmIFhTRUNfTk9fWFBBVEgKKworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpVbnN1cHBvcnRlZEZ1bmN0aW9uLAorCQkJCSJVbmFibGUgdG8gZXh0cmFjdCBCYXNlNjQgdGV4dCBmcm9tIE5vZGVzIHdpdGhvdXQgWFBhdGggc3VwcG9ydCIpOworCisJCX0KKworI2Vsc2UKKwkJCisJCQkvLyBVc2UgYW4gWFBhdGggdHJhbnNmb3JtIHRvIGdldCAiU2VsZjo6dGV4dCgpIiBmcm9tIHRoZSBub2Rlc2V0CisJCQorCQkJVFhGTVhQYXRoICp4OworCQkKKwkJCVhTRUNuZXcoeCwgVFhGTVhQYXRoKG1wX3R4Zm1Ob2RlLT5nZXRPd25lckRvY3VtZW50KCkpKTsKKwkJCWlucHV0LT5hcHBlbmRUeGZtKHgpOworCQkJKChUWEZNWFBhdGggKikgeCktPmV2YWx1YXRlRXhwcihtcF90eGZtTm9kZSwgInNlbGY6OnRleHQoKSIpOworCisJCX0KKwkJCisJCVRYRk1DMTRuICpjOworCQkKKwkJLy8gTm93IHVzZSBjMTRuIHRvIHRyYW5zbGF0ZSB0byBCWVRFUworCQkKKwkJWFNFQ25ldyhjLCBUWEZNQzE0bihtcF90eGZtTm9kZS0+Z2V0T3duZXJEb2N1bWVudCgpKSk7CisJCWlucHV0LT5hcHBlbmRUeGZtKGMpOworI2VuZGlmCisKKwl9CisKKwkvLyBOb3cgdGhlIGFjdHVhbCBCYXNlNjQKKworCVRYRk1CYXNlNjQgKmI7CisJWFNFQ25ldyhiLCBUWEZNQmFzZTY0KG1wX3R4Zm1Ob2RlLT5nZXRPd25lckRvY3VtZW50KCkpKTsKKwlpbnB1dC0+YXBwZW5kVHhmbShiKTsKKworfQorCitET01FbGVtZW50ICogRFNJR1RyYW5zZm9ybUJhc2U2NDo6Y3JlYXRlQmxhbmtUcmFuc2Zvcm0oRE9NRG9jdW1lbnQgKiBwYXJlbnREb2MpIHsKKworCXNhZmVCdWZmZXIgc3RyOworCWNvbnN0IFhNTENoICogcHJlZml4OworCURPTUVsZW1lbnQgKnJldDsKKwlET01Eb2N1bWVudCAqZG9jID0gbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpOworCisJcHJlZml4ID0gbXBfZW52LT5nZXREU0lHTlNQcmVmaXgoKTsKKwkKKwkvLyBDcmVhdGUgdGhlIHRyYW5zZm9ybSBub2RlCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCAiVHJhbnNmb3JtIik7CisJcmV0ID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRFNJRywgc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCXJldC0+c2V0QXR0cmlidXRlTlMoTlVMTCxEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJBbGdvcml0aG0sIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUJBU0U2NCk7CisKKwltcF90eGZtTm9kZSA9IHJldDsKKworCXJldHVybiByZXQ7CisKK30KKwordm9pZCBEU0lHVHJhbnNmb3JtQmFzZTY0Ojpsb2FkKHZvaWQpIHsKKworCS8vIERvIG5vdGhpbmcgZm9yIGEgQmFzZTY0IHRyYW5zZm9ybQorCit9CmRpZmYgLS1naXQgYS9jL3NyYy9kc2lnL0RTSUdUcmFuc2Zvcm1CYXNlNjQuaHBwIGIvYy9zcmMvZHNpZy9EU0lHVHJhbnNmb3JtQmFzZTY0LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmNiNDM1Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZHNpZy9EU0lHVHJhbnNmb3JtQmFzZTY0LmhwcApAQCAtMCwwICsxLDE0MyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogRFNJR1RyYW5zZm9ybUJhc2U2NCA6PSBDbGFzcyB0aGF0IGhvbGRzIEJhc2UgNjQgVHJhbnNmb3JtIGluZm9ybWF0aW9uCisgKgorICogJElkJAorICoKKyAqLworCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1RyYW5zZm9ybS5ocHA+CisgCisvKioKKyAqIEBpbmdyb3VwIHB1YnNpZworICovCisKKy8qKgorICogQGJyaWVmIFRyYW5zZm9ybSBob2xkZXIgZm9yIEJhc2UgNjQuCisgKgorICogVGhlIERTSUdUcmFuc2Zvcm1iYXNlNjQgY2xhc3MgaXMgdXNlZCB0byBob2xkIGJhc2U2NCBcPFRyYW5zZm9ybVw+IGVsZW1lbnRzCisgKiB3aXRoaW4gYSBkb2N1bWVudC4KKyAqCisgKiBUaGlzIGlzIGEgdmVyeSBzaW1wbGUgdHJhbnNmb3JtIHdpdGggbm8gcmVhbCBvcHRpb25zLgorICoKKyAqIEBzZWUgVFhGTUJhc2UKKyAqIEBzZWUgRFNJR1RyYW5zZm9ybQorICoKKyAqLworCisKKworY2xhc3MgRFNJR19FWFBPUlQgRFNJR1RyYW5zZm9ybUJhc2U2NCA6IHB1YmxpYyBEU0lHVHJhbnNmb3JtIHsKKworcHVibGljOgorCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKyAgICAvL0B7CisJCisgICAgLyoqCisJICogXGJyaWVmIENvbnRydWN0b3IgdXNlZCBmb3IgZXhpc3RpbmcgWE1MIHNpZ25hdHVyZXMuCisJICoKKwkgKiBUaGUgTm9kZSBzdHJ1Y3R1cmUgYWxyZWFkeSBleGlzdHMsIHNvIHJlYWQgdGhlIG5vZGVzIGluLgorCSAqCisJICogQHBhcmFtIGVudiBUaGUgb3BlcmF0aW5nIGVudmlyb25tZW50CisJICogQHBhcmFtIG5vZGUgVGhlIERPTSBub2RlICh3aXRoaW4gZG9jKSB0aGF0IGlzIHRvIGJlIHVzZWQgYXMgdGhlIGJhc2Ugb2YgdGhlIFRyYW5zZm9ybS4KKwkgKiBAc2VlICNsb2FkCisJICovCisKKwlEU0lHVHJhbnNmb3JtQmFzZTY0KGNvbnN0IFhTRUNFbnYgKiBlbnYsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICogbm9kZSk7CisKKyAgICAvKioKKwkgKiBcYnJpZWYgQ29udHJ1Y3RvciB1c2VkIGZvciBuZXcgc2lnbmF0dXJlcy4KKwkgKgorCSAqIFRoZSBOb2RlIHN0cnVjdHVyZSB3aWxsIGhhdmUgdG8gYmUgY3JlYXRlZC4KKwkgKgorCSAqIEBub3RlIERTSUdUcmFuc2Zvcm0gc3RydWN0dXJlcyBzaG91bGQgb25seSBldmVyIGJlIGNyZWF0ZWQgdmlhIGNhbGxzIHRvIGEKKwkgKiBEU0lHVHJhbnNmb3JtTGlzdCBvYmplY3QuCisJICoKKwkgKiBAcGFyYW0gZW52IFRoZSBvcGVyYXRpbmcgZW52aXJvbm1lbnQKKwkgKiBAc2VlIGNyZWF0ZUJsYW5rVHJhbnNmb3JtCisJICovCisKKwlEU0lHVHJhbnNmb3JtQmFzZTY0KGNvbnN0IFhTRUNFbnYgKiBlbnYpOworCQkgIAorCS8qKgorCSAqIFxicmllZiBEZXN0cnVjdG9yLgorCSAqCisJICogRGVzdHJveSB0aGUgRFNJR1NpZ25hdHVyZSBlbGVtZW50cy4KKwkgKgorCSAqIERvZXMgbm90IGRlc3Ryb3kgYW55IGFzc29jaWF0ZWQgRE9NIE5vZGVzCisJICovCisJCSAgCisJdmlydHVhbCB+RFNJR1RyYW5zZm9ybUJhc2U2NCgpOworCQorCS8vQH0KKworCS8qKiBAbmFtZSBJbnRlcmZhY2UgTWV0aG9kcyAqLworCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIERldGVybWluZSB0aGUgdHJhbnNmb3JtIHR5cGUuCisJICoKKwkgKiBVc2VkIHRvIGRldGVybWluZSB3aGF0IHRoZSB0eXBlIG9mIHRoZSB0cmFuc2Zvcm0gaXMuCisJICoKKwkgKi8KKworCXZpcnR1YWwgdHJhbnNmb3JtVHlwZSBnZXRUcmFuc2Zvcm1UeXBlKCk7CisKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIHRoZSBCYXNlIDY0dHJhbnNmb3JtZXIgZWxlbWVudC4KKwkgKgorCSAqIEltcGxlbWVudGVkIGJ5IGVhY2ggVHJhbnNmb3JtIGNsYXNzIGFuZCB1c2VkIGJ5IHRoZSBEU0lHU2lnbmF0dXJlCisJICogdG8gY29uc3RydWN0IGEgY29tcGxldGUgVHJhbnNmb3JtIGxpc3QuCisJICovCisKKwl2aXJ0dWFsIHZvaWQgYXBwZW5kVHJhbnNmb3JtZXIoVFhGTUNoYWluICogaW5wdXQpOworCisJLyoqCisJICogXGJyaWVmIENvbnN0cnVjdCBibGFuayBCYXNlNjQgVHJhbnNmb3JtIGVsZW1lbnQuCisJICoKKwkgKiBJbnN0cnVjdCB0aGUgaW1wbGVtZW50YXRpb24gdG8gY3JlYXRlIHRoZSByZXF1aXJlZAorCSAqIHRyYW5zZm9ybSBhbmQgcmV0dXJuIHRoZSBuZXdseSBjb25zdHJ1Y3RlZCBET01Ob2RlIHN0cnVjdHVyZQorCSAqLworCisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIAorCQljcmVhdGVCbGFua1RyYW5zZm9ybShYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBwYXJlbnREb2MpOworCisJLyoqCisJICogXGJyaWVmIExvYWQgYSBET00gc3RydWN0dXJlCisJICoKKwkgKiBGb3IgYSBCYXNlNjQgdHJhbnNmb3JtIHRoaXMgZG9lcyBhbG1vc3Qgbm90aGluZy4KKwkgKgorCSAqLworCisJdmlydHVhbCB2b2lkIGxvYWQodm9pZCk7CisKKwkvL0B9CisKKwkKK3ByaXZhdGU6CisKKwlEU0lHVHJhbnNmb3JtQmFzZTY0KCk7CisJRFNJR1RyYW5zZm9ybUJhc2U2NChjb25zdCBEU0lHVHJhbnNmb3JtQmFzZTY0ICYgdGhlT3RoZXIpOworCit9OwpkaWZmIC0tZ2l0IGEvYy9zcmMvZHNpZy9EU0lHVHJhbnNmb3JtQzE0bi5jcHAgYi9jL3NyYy9kc2lnL0RTSUdUcmFuc2Zvcm1DMTRuLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjk0NjA2Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZHNpZy9EU0lHVHJhbnNmb3JtQzE0bi5jcHAKQEAgLTAsMCArMSwzODggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIERTSUdUcmFuc2Zvcm1DMTRuIDo9IENsYXNzIHRoYXQgcGVyZm9ybXMgQzE0biBjYW5vbmljYWxpc2F0aW9uCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdUcmFuc2Zvcm1DMTRuLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXhjZXB0aW9uLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNQzE0bi5ocHA+CisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTUNoYWluLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHU2lnbmF0dXJlLmhwcD4KKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9KYW5pdG9yLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRFNJR1RyYW5zZm9ybUMxNG46OkRTSUdUcmFuc2Zvcm1DMTRuKGNvbnN0IFhTRUNFbnYgKiBlbnYsIERPTU5vZGUgKiBub2RlKSA6CitEU0lHVHJhbnNmb3JtKGVudiwgbm9kZSkgeworCisJbV9jTWV0aG9kID0gQ0FOT05fTk9ORTsKKwltcF9pbmNsTlNOb2RlID0gTlVMTDsKKwltcF9pbmNsTlNTdHIgPSBOVUxMOworfQorCisKK0RTSUdUcmFuc2Zvcm1DMTRuOjpEU0lHVHJhbnNmb3JtQzE0bihjb25zdCBYU0VDRW52ICogZW52KSA6CitEU0lHVHJhbnNmb3JtKGVudikgeworCisJbV9jTWV0aG9kID0gQ0FOT05fTk9ORTsKKwltcF9pbmNsTlNOb2RlID0gTlVMTDsKKwltcF9pbmNsTlNTdHIgPSBOVUxMOworCit9CisKK0RTSUdUcmFuc2Zvcm1DMTRuOjp+RFNJR1RyYW5zZm9ybUMxNG4oKSB7fTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBJbnRlcmZhY2UgTWV0aG9kcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordHJhbnNmb3JtVHlwZSBEU0lHVHJhbnNmb3JtQzE0bjo6Z2V0VHJhbnNmb3JtVHlwZSgpIHsKKworCWlmICgobV9jTWV0aG9kID09IENBTk9OX0MxNE5FX05PQykgfHwgKG1fY01ldGhvZCA9PSBDQU5PTl9DMTRORV9DT00pKQorCQlyZXR1cm4gVFJBTlNGT1JNX0VYQ19DMTROOworCWVsc2UgaWYgKChtX2NNZXRob2QgPT0gQ0FOT05fQzE0TjExX05PQykgfHwgKG1fY01ldGhvZCA9PSBDQU5PTl9DMTROMTFfQ09NKSkKKyAgICAgICAgcmV0dXJuIFRSQU5TRk9STV9DMTROMTE7CisJcmV0dXJuIFRSQU5TRk9STV9DMTROOworCit9CisKK3ZvaWQgRFNJR1RyYW5zZm9ybUMxNG46OmFwcGVuZFRyYW5zZm9ybWVyKFRYRk1DaGFpbiAqIGlucHV0KSB7CisKKwlUWEZNQzE0biAqIGM7CisKKwlYU0VDbmV3KGMsIFRYRk1DMTRuKG1wX3R4Zm1Ob2RlLT5nZXRPd25lckRvY3VtZW50KCkpKTsKKwlpbnB1dC0+YXBwZW5kVHhmbShjKTsKKworCXN3aXRjaCAobV9jTWV0aG9kKSB7CisKKwljYXNlIChDQU5PTl9DMTROX05PQykgOgorCWNhc2UgKENBTk9OX0MxNE4xMV9OT0MpIDoKKwljYXNlIChDQU5PTl9DMTRORV9OT0MpIDoKKwkJYy0+c3RyaXBDb21tZW50cygpOworCQlicmVhazsKKwljYXNlIChDQU5PTl9DMTROX0NPTSkgOgorICAgIGNhc2UgKENBTk9OX0MxNE4xMV9DT00pIDoKKwljYXNlIChDQU5PTl9DMTRORV9DT00pIDoKKwkJYy0+YWN0aXZhdGVDb21tZW50cygpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlicmVhazsKKwl9CisKKwkvLyBDaGVjayBmb3IgZXhjbHVzaXZlIGFuZCAxLjEKKwlpZiAobV9jTWV0aG9kID09IENBTk9OX0MxNE5FX0NPTSB8fCBtX2NNZXRob2QgPT0gQ0FOT05fQzE0TkVfTk9DKSB7CisKKwkJaWYgKG1wX2luY2xOU1N0ciA9PSBOVUxMKSB7CisKKwkJCWMtPnNldEV4Y2x1c2l2ZSgpOworCisJCX0KKwkJZWxzZSB7CisKKwkJCXNhZmVCdWZmZXIgaW5jbDsKKwkJCWluY2wgPDwgKCoobXBfZW52LT5nZXRTQkZvcm1hdHRlcigpKSA8PCBtcF9pbmNsTlNTdHIpOworCQkJYy0+c2V0RXhjbHVzaXZlKGluY2wpOworCisJCX0KKworCX0KKwllbHNlIGlmIChtX2NNZXRob2QgPT0gQ0FOT05fQzE0TjExX0NPTSB8fCBtX2NNZXRob2QgPT0gQ0FOT05fQzE0TjExX05PQykgeworCSAgICBjLT5zZXRJbmNsdXNpdmUxMSgpOworCX0KKworfQorCitET01FbGVtZW50ICogRFNJR1RyYW5zZm9ybUMxNG46OmNyZWF0ZUJsYW5rVHJhbnNmb3JtKERPTURvY3VtZW50ICogcGFyZW50RG9jKSB7CisKKwlzYWZlQnVmZmVyIHN0cjsKKwljb25zdCBYTUxDaCAqIHByZWZpeDsKKwlET01FbGVtZW50ICpyZXQ7CisJRE9NRG9jdW1lbnQgKmRvYyA9IG1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKTsKKworCXByZWZpeCA9IG1wX2Vudi0+Z2V0RFNJR05TUHJlZml4KCk7CisKKwkvLyBDcmVhdGUgdGhlIHRyYW5zZm9ybSBub2RlCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCAiVHJhbnNmb3JtIik7CisJcmV0ID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRFNJRywgc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCXJldC0+c2V0QXR0cmlidXRlTlMoTlVMTCxEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJBbGdvcml0aG0sIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUMxNE5fTk9DKTsKKworCW1wX3R4Zm1Ob2RlID0gcmV0OworCW1wX2luY2xOU1N0ciA9IE5VTEw7CisJbXBfaW5jbE5TTm9kZSA9IE5VTEw7CisKKwlyZXR1cm4gcmV0OworCit9CisKK3ZvaWQgRFNJR1RyYW5zZm9ybUMxNG46OmxvYWQodm9pZCkgeworCisJY29uc3QgWE1MQ2ggKiB1cmk7CisJRE9NTmFtZWROb2RlTWFwICogYXR0czsKKwlET01Ob2RlICphdHQ7CisKKwkvLyBSZWFkIHRoZSBVUkkgZm9yIHRoZSB0eXBlCisJaWYgKG1wX3R4Zm1Ob2RlID09IE5VTEwpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkRFNJR0NoaWxkTm90Rm91bmQsCisJCQkiRXhwZWN0ZWQgPFRyYW5zZm9ybT4gTm9kZSBpbiBEU0lHVHJhc25mb3JtQzE0bjo6bG9hZCIpOworCisJfQorCisJYXR0cyA9IG1wX3R4Zm1Ob2RlLT5nZXRBdHRyaWJ1dGVzKCk7CisKKwlpZiAoYXR0cyA9PSBOVUxMIHx8CisJCSgoYXR0ID0gYXR0cy0+Z2V0TmFtZWRJdGVtKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ckFsZ29yaXRobSkpID09IE5VTEwpKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZERTSUdDaGlsZE5vdEZvdW5kLAorCQkJIkV4cGVjdGVkIHRvIGZpbmQgQWxnb3JpdGhtIGF0dHJpYnV0ZSBpbiA8VHJhbnNmb3JtPiBub2RlIik7CisKKwl9CisKKwl1cmkgPSBhdHQtPmdldE5vZGVWYWx1ZSgpOworCisJaWYgKHN0ckVxdWFscyh1cmksIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUMxNE5fQ09NKSkgeworCQltX2NNZXRob2QgPSBDQU5PTl9DMTROX0NPTTsKKwl9CisJZWxzZSBpZiAoc3RyRXF1YWxzKHVyaSwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJQzE0Tl9OT0MpKSB7CisJCW1fY01ldGhvZCA9IENBTk9OX0MxNE5fTk9DOworCX0KKwllbHNlIGlmIChzdHJFcXVhbHModXJpLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklDMTROMTFfQ09NKSkgeworICAgICAgICBtX2NNZXRob2QgPSBDQU5PTl9DMTROMTFfQ09NOworICAgIH0KKyAgICBlbHNlIGlmIChzdHJFcXVhbHModXJpLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklDMTROMTFfTk9DKSkgeworICAgICAgICBtX2NNZXRob2QgPSBDQU5PTl9DMTROMTFfTk9DOworICAgIH0KKwllbHNlIGlmIChzdHJFcXVhbHModXJpLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklFWENfQzE0Tl9DT00pKSB7CisJCW1fY01ldGhvZCA9IENBTk9OX0MxNE5FX0NPTTsKKwl9CisJZWxzZSBpZiAoc3RyRXF1YWxzKHVyaSwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRVhDX0MxNE5fTk9DKSkgeworCQltX2NNZXRob2QgPSBDQU5PTl9DMTRORV9OT0M7CisJfQorCWVsc2UgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkRFNJR0NoaWxkTm90Rm91bmQsCisJCQkiVW5leHBlY3RlZCBVUkkgZm91bmQgaW4gY2Fub25pY2FsaXNhdGlvbiA8VHJhbnNmb3JtPiIpOworCX0KKworCS8vIERldGVybWluZSB3aGV0aGVyIHRoZXJlIGlzIGFuIEluY2x1c2l2ZU5hbWVzcGFjZXMgbGlzdAorCisJaWYgKG1fY01ldGhvZCA9PSBDQU5PTl9DMTRORV9OT0MgfHwgbV9jTWV0aG9kID09IENBTk9OX0MxNE5FX0NPTSkgeworCisJCS8vIEV4Y2x1c2l2ZSwgc28gdGhlcmUgbWF5IGJlIGFuIEluY2x1c2l2ZU5hbWVzcGFjZXMgbm9kZQorCisJCURPTU5vZGUgKiBpbmNsTlNOb2RlID0gbXBfdHhmbU5vZGUtPmdldEZpcnN0Q2hpbGQoKTsKKworCQl3aGlsZSAoaW5jbE5TTm9kZSAhPSBOVUxMICYmIChpbmNsTlNOb2RlLT5nZXROb2RlVHlwZSgpICE9IERPTU5vZGU6OkVMRU1FTlRfTk9ERSB8fAorCQkJIXN0ckVxdWFscyhnZXRFQ0xvY2FsTmFtZShpbmNsTlNOb2RlKSwgIkluY2x1c2l2ZU5hbWVzcGFjZXMiKSkpCisJCQkJaW5jbE5TTm9kZSA9IGluY2xOU05vZGUtPmdldE5leHRTaWJsaW5nKCk7CisKKwkJaWYgKGluY2xOU05vZGUgIT0gMCkgeworCisJCQltcF9pbmNsTlNOb2RlID0gc3RhdGljX2Nhc3Q8RE9NRWxlbWVudCAqPihpbmNsTlNOb2RlKTsKKworCQkJLy8gSGF2ZSBhIHByZWZpeCBsaXN0CisJCQlhdHRzID0gbXBfaW5jbE5TTm9kZS0+Z2V0QXR0cmlidXRlcygpOworCQkJc2FmZUJ1ZmZlciBpblNCOworCisJCQlpZiAoYXR0cyA9PSAwIHx8ICgoYXR0ID0gYXR0cy0+Z2V0TmFtZWRJdGVtKE1BS0VfVU5JQ09ERV9TVFJJTkcoIlByZWZpeExpc3QiKSkpID09IE5VTEwpKSB7CisJCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZERTSUdDaGlsZE5vdEZvdW5kLAorCQkJCQkiRXhwZWN0ZWQgUHJlZml4TGlzdCBpbiBJbmNsdXNpdmVOYW1lc3BhY2VzIik7CisJCQl9CisKKwkJCW1wX2luY2xOU1N0ciA9IGF0dC0+Z2V0Tm9kZVZhbHVlKCk7CisKKwkJfQorCX0KKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENhbm9uaWNhbGl6YXRpb24gU3BlY2lmaWMgTWV0aG9kcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCit2b2lkIERTSUdUcmFuc2Zvcm1DMTRuOjpzZXRDYW5vbmljYWxpemF0aW9uTWV0aG9kKGNhbm9uaWNhbGl6YXRpb25NZXRob2QgbWV0aG9kKSB7CisKKwljb25zdCBYTUxDaCAqIG0gPSBjYW5vbmljYWxpemF0aW9uTWV0aG9kMlVOSUNPREVVUkkobWV0aG9kKTsKKworCWlmIChzdHJFcXVhbHMobSwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyRW1wdHkpIHx8IG1wX3R4Zm1Ob2RlID09IE5VTEwpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlRyYW5zZm9ybUVycm9yLAorCQkJIkVpdGhlciBtZXRob2QgdW5rbm93biBvciBOb2RlIG5vdCBzZXQgaW4gc2V0Q2Fub25pY2FsaXphdGlvbk1ldGhvZCIpOworCisJfQorCisJaWYgKG1ldGhvZCA9PSBDQU5PTl9DMTROX05PQyB8fCBtZXRob2QgPT0gQ0FOT05fQzE0Tl9DT00gfHwgbWV0aG9kID09IENBTk9OX0MxNE4xMV9OT0MgfHwgbWV0aG9kID09IENBTk9OX0MxNE4xMV9DT00pIHsKKworCQlpZiAobV9jTWV0aG9kID09IENBTk9OX0MxNE5FX05PQyB8fCBtX2NNZXRob2QgPT0gQ0FOT05fQzE0TkVfQ09NKSB7CisKKwkJCWlmIChtcF9pbmNsTlNOb2RlICE9IDApIHsKKworCQkJCW1wX3R4Zm1Ob2RlLT5yZW1vdmVDaGlsZChtcF9pbmNsTlNOb2RlKTsKKwkJCQltcF9pbmNsTlNOb2RlLT5yZWxlYXNlKCk7CQkvLyBObyBsb25nZXIgcmVxdWlyZWQKKworCQkJCW1wX2luY2xOU05vZGUgPSBOVUxMOworCQkJCW1wX2luY2xOU1N0ciA9IE5VTEw7CisKKwkJCX0KKwkJfQorCisJfQorCisJLy8gTm93IGRvIHRoZSBzZXQuCisKKwkoKERPTUVsZW1lbnQgKikgbXBfdHhmbU5vZGUpLT5zZXRBdHRyaWJ1dGVOUyhOVUxMLE1BS0VfVU5JQ09ERV9TVFJJTkcoIkFsZ29yaXRobSIpLCBtKTsKKwltX2NNZXRob2QgPSBtZXRob2Q7CisKK30KKworY2Fub25pY2FsaXphdGlvbk1ldGhvZCBEU0lHVHJhbnNmb3JtQzE0bjo6Z2V0Q2Fub25pY2FsaXphdGlvbk1ldGhvZCh2b2lkKSB7CisKKwlyZXR1cm4gbV9jTWV0aG9kOworCit9CisKK3ZvaWQgRFNJR1RyYW5zZm9ybUMxNG46OmNyZWF0ZUluY2x1c2l2ZU5hbWVzcGFjZU5vZGUodm9pZCkgeworCisJLy8gQ3JlYXRlcyBhbiBlbXB0eSBpbmNsdXNpdmVOYW1lc3BhY2Ugbm9kZS4gIERvZXMgX25vdF8gc2V0IHRoZSBwcmVmaXhsaXN0IGF0dHJpYnV0ZQorCisJaWYgKG1wX2luY2xOU05vZGUgIT0gTlVMTCkKKwkJcmV0dXJuOwkJLy8gQWxyZWFkeSBleGlzdHMKKworCXNhZmVCdWZmZXIgc3RyOworCWNvbnN0IFhNTENoICogcHJlZml4OworCURPTURvY3VtZW50ICpkb2MgPSBtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCk7CisKKwkvLyBVc2UgdGhlIEV4Y2x1c2l2ZSBDYW5vbmljYWxpc2F0aW9uIHByZWZpeAorCXByZWZpeCA9IG1wX2Vudi0+Z2V0RUNOU1ByZWZpeCgpOworCisJLy8gQ3JlYXRlIHRoZSB0cmFuc2Zvcm0gbm9kZQorCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgIkluY2x1c2l2ZU5hbWVzcGFjZXMiKTsKKwltcF9pbmNsTlNOb2RlID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRUMsIHN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKworCS8vIEFkZCB0aGUgbm9kZSB0byB0aGUgb3duZXIgZWxlbWVudAorCW1wX2Vudi0+ZG9QcmV0dHlQcmludChtcF90eGZtTm9kZSk7CisJbXBfdHhmbU5vZGUtPmFwcGVuZENoaWxkKG1wX2luY2xOU05vZGUpOworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChtcF90eGZtTm9kZSk7CisKKwkvLyBTZXQgdGhlIG5hbWVzcGFjZSBhdHRyaWJ1dGUKKwlpZiAocHJlZml4WzBdID09ICdcMCcpIHsKKwkJc3RyLnNiVHJhbnNjb2RlSW4oInhtbG5zIik7CisJfQorCWVsc2UgeworCQlzdHIuc2JUcmFuc2NvZGVJbigieG1sbnM6Iik7CisJCXN0ci5zYlhNTENoQ2F0KHByZWZpeCk7CisJfQorCisJbXBfaW5jbE5TTm9kZS0+c2V0QXR0cmlidXRlTlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWE1MTlMsCisJCQkJCQkJc3RyLnJhd1hNTENoQnVmZmVyKCksCisJCQkJCQkJRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRUMpOworfQorCit2b2lkIERTSUdUcmFuc2Zvcm1DMTRuOjpzZXRJbmNsdXNpdmVOYW1lc3BhY2VzKFhNTENoICogbnMpIHsKKworCS8vIFNldCBhbGwgdGhlIG5hbWVzcGFjZXMgYXQgb25jZQorCisJaWYgKG1fY01ldGhvZCAhPSBDQU5PTl9DMTRORV9DT00gJiYgbV9jTWV0aG9kICE9IENBTk9OX0MxNE5FX05PQykgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6VHJhbnNmb3JtRXJyb3IsCisJCQkiQ2Fubm90IHNldCBpbmNsdXNpdmUgbmFtZXNwYWNlcyBvbiBub24gRXhjbHVzaXZlIENhbm9uaWNhbGlzYXRpb24iKTsKKworCX0KKworCWlmIChtcF9pbmNsTlNOb2RlID09IE5VTEwpIHsKKworCQkvLyBDcmVhdGUgdGhlIHRyYW5zZm9ybSBub2RlCisJCWNyZWF0ZUluY2x1c2l2ZU5hbWVzcGFjZU5vZGUoKTsKKworCisJfQorCisJLy8gTm93IGNyZWF0ZSB0aGUgcHJlZml4IGxpc3QKKworCW1wX2luY2xOU05vZGUtPnNldEF0dHJpYnV0ZU5TKE5VTEwsTUFLRV9VTklDT0RFX1NUUklORygiUHJlZml4TGlzdCIpLCBucyk7CisJbXBfaW5jbE5TU3RyID0gbXBfaW5jbE5TTm9kZS0+Z2V0QXR0cmlidXRlcygpLT5nZXROYW1lZEl0ZW0oTUFLRV9VTklDT0RFX1NUUklORygiUHJlZml4TGlzdCIpKS0+Z2V0Tm9kZVZhbHVlKCk7CisKK30KKworCit2b2lkIERTSUdUcmFuc2Zvcm1DMTRuOjphZGRJbmNsdXNpdmVOYW1lc3BhY2UoY29uc3QgY2hhciAqIG5zKSB7CisKKwlpZiAobV9jTWV0aG9kICE9IENBTk9OX0MxNE5FX0NPTSAmJiBtX2NNZXRob2QgIT0gQ0FOT05fQzE0TkVfTk9DKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpUcmFuc2Zvcm1FcnJvciwKKwkJCSJDYW5ub3Qgc2V0IGluY2x1c2l2ZSBuYW1lc3BhY2VzIG9uIG5vbiBFeGNsdXNpdmUgQ2Fub25pY2FsaXNhdGlvbiIpOworCisJfQorCisJaWYgKG1wX2luY2xOU05vZGUgPT0gTlVMTCkgeworCisJCS8vIENyZWF0ZSB0aGUgdHJhbnNmb3JtIG5vZGUKKwkJY3JlYXRlSW5jbHVzaXZlTmFtZXNwYWNlTm9kZSgpOworCisJCS8vIE5vdyBjcmVhdGUgdGhlIHByZWZpeCBsaXN0CisKKwkJbXBfaW5jbE5TTm9kZS0+c2V0QXR0cmlidXRlTlMoTlVMTCxNQUtFX1VOSUNPREVfU1RSSU5HKCJQcmVmaXhMaXN0IiksIE1BS0VfVU5JQ09ERV9TVFJJTkcobnMpKTsKKwkJbXBfaW5jbE5TU3RyID0gbXBfaW5jbE5TTm9kZS0+Z2V0QXR0cmlidXRlcygpLT5nZXROYW1lZEl0ZW0oTUFLRV9VTklDT0RFX1NUUklORygiUHJlZml4TGlzdCIpKS0+Z2V0Tm9kZVZhbHVlKCk7CisKKwl9CisKKwllbHNlIHsKKworCQkvLyBNb3JlIHRyaWNreQorCQlzYWZlQnVmZmVyIHN0cjsKKworCQlzdHIgPDwgKCoobXBfZW52LT5nZXRTQkZvcm1hdHRlcigpKSA8PCBtcF9pbmNsTlNTdHIpOworCQlzdHIuc2JTdHJjYXRJbigiICIpOworCQlzdHIuc2JTdHJjYXRJbigoY2hhciAqKSBucyk7CisJCW1wX2luY2xOU05vZGUtPnNldEF0dHJpYnV0ZU5TKE5VTEwsTUFLRV9VTklDT0RFX1NUUklORygiUHJlZml4TGlzdCIpLCBzdHIuc2JTdHJUb1hNTENoKCkpOworCQltcF9pbmNsTlNTdHIgPSBtcF9pbmNsTlNOb2RlLT5nZXRBdHRyaWJ1dGVzKCktPmdldE5hbWVkSXRlbShNQUtFX1VOSUNPREVfU1RSSU5HKCJQcmVmaXhMaXN0IikpLT5nZXROb2RlVmFsdWUoKTsKKworCX0KKworfQorCitjb25zdCBYTUxDaCAqIERTSUdUcmFuc2Zvcm1DMTRuOjpnZXRQcmVmaXhMaXN0KHZvaWQpIHsKKworCXJldHVybiBtcF9pbmNsTlNTdHI7CisKK30KKwordm9pZCBEU0lHVHJhbnNmb3JtQzE0bjo6Y2xlYXJJbmNsdXNpdmVOYW1lc3BhY2VzKHZvaWQpIHsKKworCWlmIChtcF9pbmNsTlNOb2RlICE9IDApIHsKKworCQltcF90eGZtTm9kZS0+cmVtb3ZlQ2hpbGQobXBfaW5jbE5TTm9kZSk7CisJCW1wX2luY2xOU05vZGUtPnJlbGVhc2UoKTsJCS8vIE5vIGxvbmdlciByZXF1aXJlZAorCisJCW1wX2luY2xOU05vZGUgPSBOVUxMOworCQltcF9pbmNsTlNTdHIgPSBOVUxMOworCisJfQorfQpkaWZmIC0tZ2l0IGEvYy9zcmMvZHNpZy9EU0lHVHJhbnNmb3JtQzE0bi5ocHAgYi9jL3NyYy9kc2lnL0RTSUdUcmFuc2Zvcm1DMTRuLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZThkMGM1Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZHNpZy9EU0lHVHJhbnNmb3JtQzE0bi5ocHAKQEAgLTAsMCArMSwyMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIERTSUdUcmFuc2Zvcm1DMTRuIDo9IENsYXNzIHRoYXQgaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgQzE0biB0cmFuc2Zvcm1zCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdUcmFuc2Zvcm0uaHBwPgorCisvKioKKyAqIEBpbmdyb3VwIHB1YnNpZworICovCisKKy8qKgorICogQGJyaWVmIFRyYW5zZm9ybSBob2xkZXIgZm9yIEMxNG4gYmFzZWQgdHJhbnNmb3Jtcy4KKyAqCisgKiBUaGUgRFNJR1RyYW5zZm9ybUMxNG4gY2xhc3MgaXMgdXNlZCB0byBob2xkIEMxNG4gXDxUcmFuc2Zvcm1cPiBlbGVtZW50cworICogd2l0aGluIGEgZG9jdW1lbnQuICBUaGlzIGluY2x1ZGVzIEV4Y2x1c2l2ZSBhbmQgQ29tbWVudCBvcHRpb25zCisgKgorICoKKyAqIEBzZWUgVFhGTUMxNG4KKyAqIEBzZWUgRFNJR1RyYW5zZm9ybQorICoKKyAqLworCitjbGFzcyBEU0lHX0VYUE9SVCBEU0lHVHJhbnNmb3JtQzE0biA6IHB1YmxpYyBEU0lHVHJhbnNmb3JtIHsKKworcHVibGljOgorCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKyAgICAvL0B7CisJCisgICAgLyoqCisJICogXGJyaWVmIENvbnRydWN0b3IgdXNlZCBmb3IgZXhpc3RpbmcgWE1MIHNpZ25hdHVyZXMuCisJICoKKwkgKiBUaGUgTm9kZSBzdHJ1Y3R1cmUgYWxyZWFkeSBleGlzdHMsIHNvIHJlYWQgdGhlIG5vZGVzIGluLgorCSAqCisJICogQHBhcmFtIGVudiBUaGUgb3BlcmF0aW5nIGVudmlyb25tZW50CisJICogQHBhcmFtIG5vZGUgVGhlIERPTSBub2RlICh3aXRoaW4gZG9jKSB0aGF0IGlzIHRvIGJlIHVzZWQgYXMgdGhlIGJhc2Ugb2YgdGhlIFRyYW5zZm9ybS4KKwkgKiBAc2VlICNsb2FkCisJICovCisKKwlEU0lHVHJhbnNmb3JtQzE0bihjb25zdCBYU0VDRW52ICogZW52LCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqIG5vZGUpOworCisgICAgLyoqCisJICogXGJyaWVmIENvbnRydWN0b3IgdXNlZCBmb3IgbmV3IHNpZ25hdHVyZXMuCisJICoKKwkgKiBUaGUgTm9kZSBzdHJ1Y3R1cmUgd2lsbCBoYXZlIHRvIGJlIGNyZWF0ZWQuCisJICoKKwkgKiBAbm90ZSBEU0lHVHJhbnNmb3JtIHN0cnVjdHVyZXMgc2hvdWxkIG9ubHkgZXZlciBiZSBjcmVhdGVkIHZpYSBjYWxscyB0byBhCisJICogRFNJR1RyYW5zZm9ybUxpc3Qgb2JqZWN0LgorCSAqCisJICogQHBhcmFtIGVudiBUaGUgb3BlcmF0aW5nIGVudmlyb25tZW50CisJICogQHNlZSBjcmVhdGVCbGFua1RyYW5zZm9ybQorCSAqLworCisJRFNJR1RyYW5zZm9ybUMxNG4oY29uc3QgWFNFQ0VudiAqIGVudik7CisJCSAgCisJLyoqCisJICogXGJyaWVmIERlc3RydWN0b3IuCisJICoKKwkgKiBEZXN0cm95IHRoZSBEU0lHU2lnbmF0dXJlIGVsZW1lbnRzLgorCSAqCisJICogRG9lcyBub3QgZGVzdHJveSBhbnkgYXNzb2NpYXRlZCBET00gTm9kZXMKKwkgKi8KKwkJICAKKwl2aXJ0dWFsIH5EU0lHVHJhbnNmb3JtQzE0bigpOworCQorCS8vQH0KKworCS8qKiBAbmFtZSBJbnRlcmZhY2UgTWV0aG9kcyAqLworCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIERldGVybWluZSB0aGUgdHJhbnNmb3JtIHR5cGUuCisJICoKKwkgKiBVc2VkIHRvIGRldGVybWluZSB3aGF0IHRoZSB0eXBlIG9mIHRoZSB0cmFuc2Zvcm0gaXMuCisJICoKKwkgKi8KKworCXZpcnR1YWwgdHJhbnNmb3JtVHlwZSBnZXRUcmFuc2Zvcm1UeXBlKCk7CisKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIHRoZSBDYW5vbmljYWxpc2luZyB0cmFuc2Zvcm1lciBlbGVtZW50LgorCSAqCisJICogSW1wbGVtZW50ZWQgYnkgZWFjaCBUcmFuc2Zvcm0gY2xhc3MgYW5kIHVzZWQgYnkgdGhlIERTSUdTaWduYXR1cmUKKwkgKiB3aGVuIGNvbnNydWN0aW5nIGEgVFhGTSBMaXN0IHRoYXQgaW5jbHVkZXMgY2Fub25pY2FsaXNhdGlvbiAobmVhcmx5IGFsd2F5cykKKwkgKi8KKworCXZpcnR1YWwgdm9pZCBhcHBlbmRUcmFuc2Zvcm1lcihUWEZNQ2hhaW4gKiBpbnB1dCk7CisKKwkvKioKKwkgKiBcYnJpZWYgQ29uc3RydWN0IGJsYW5rIENhbm9uaWNhbGlzYXRpb24gVHJhbnNmb3JtIGVsZW1lbnQuCisJICoKKwkgKiBJbnN0cnVjdCB0aGUgaW1wbGVtZW50YXRpb24gdG8gY3JlYXRlIHRoZSByZXF1aXJlZAorCSAqIHRyYW5zZm9ybSBhbmQgcmV0dXJuIHRoZSBuZXdseSBjb25zdHJ1Y3RlZCBET01Ob2RlIHN0cnVjdHVyZQorCSAqCisJICogQG5vdGUgQnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLWNvbW1lbnQgbm9uLWV4Y2x1c2l2ZSBDMTRuIHRyYW5zZm9ybS4KKwkgKi8KKworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBjcmVhdGVCbGFua1RyYW5zZm9ybSgKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogcGFyZW50RG9jKTsKKworCS8qKgorCSAqIFxicmllZiBMb2FkIGEgRE9NIHN0cnVjdHVyZQorCSAqCisJICogKFJlKXJlYWQgdGhlIERPTSBzdHJ1Y3R1cmUgaW50byB0aGUgU2lnbmF0dXJlIHN0cnVjdHVyZXMKKwkgKgorCSAqLworCisJdmlydHVhbCB2b2lkIGxvYWQodm9pZCk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgQzE0biBTcGVjaWZpYyBNZXRob2RzICovCisKKwkvL0B7CisJCisJLyoqCisJICogXGJyaWVmIENoYW5nZSBjYW5vbmljYWxpc2F0aW9uIG1ldGhvZC4KKwkgKgorCSAqIFNldCB0aGUgY2Fub25pY2FsaXNhdGlvbiBtZXRob2QgdG8gdGhlIHR5cGUgaW5kaWNhdGVkLiAgSWYgdGhpcyBjaGFuZ2VzCisJICogdGhlIHRyYW5zZm9ybSBmcm9tIEV4Y2x1c2l2ZSB0byBTdGFuZGFyZCBDMTRuLCBhbnkgYXNzb2NpYXRlZAorCSAqIEluY2x1c2l2ZU5hbWVzcGFjZXMgY2hpbGRyZW4gd2lsbCBiZSByZW1vdmVkLgorCSAqCisJICogSWYgdGhpcyBpcyBtb3ZpbmcgZnJvbSBvbmUgZm9ybSBvZiBFeGNsdXNpdmUgdG8gYW5vdGhlciwgYW55IEluY2x1c2l2ZU5hbWVzcGFjZQorCSAqIGNoaWxkcmVuIHdpbGwgcmVtYWluLgorCSAqCisJICogQHBhcmFtIG1ldGhvZCBUeXBlIG9mIGNhbmljYWxpc2VyIHJlcXVpcmVkLgorCSAqCisJICogQHNlZSBjYW5vbmljYWxpemF0aW9uTWV0aG9kCisJICovCisKKwl2b2lkIHNldENhbm9uaWNhbGl6YXRpb25NZXRob2QoY2Fub25pY2FsaXphdGlvbk1ldGhvZCBtZXRob2QpOworCisJLyoqCisJICogXGJyaWVmIEdldCBjYW5vbmljYWxpc2F0aW9uIHR5cGUuCisJICoKKwkgKiBSZXR1cm4gdGhlIHR5cGUgb2YgY2Fub25pY2FsaXNhdGlvbiB0byB0aGUgY2FsbGVyLgorCSAqCisJICogQHJldHVybnMgQ2Fub25pY2FsaXNhdGlvbiB0eXBlLgorCSAqIEBzZWUgY2Fub25pY2FsaXphdGlvbk1ldGhvZAorCSAqLworCisJY2Fub25pY2FsaXphdGlvbk1ldGhvZCBnZXRDYW5vbmljYWxpemF0aW9uTWV0aG9kKHZvaWQpOworCisJLyoqCisJICogXGJyaWVmIEFkZCBhIG5hbWVzcGFjZSBwcmVmaXggdG8gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgbGlzdAorCSAqCisJICogRXhjbHVzaXZlIGNhbm9uaWNhbGlzYXRpb24gaW5jbHVkZXMgdGhlIGFiaWxpdHkgdG8gZGVmaW5lIGEgUHJlZml4TGlzdCBvZgorCSAqIG5hbWVzcGFjZSBwcmVmaXhlcyB0aGF0IHdpbGwgbm90IGJlIHRyZWF0ZWQgZXhjbHVzaXZlbHksIHJhdGhlciB0aGV5IHdpbGwKKwkgKiBiZSBoYW5kbGVkIGFzIHBlciBub3JtYWwgQzE0bi4KKwkgKgorCSAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIGEgY2FsbGVyIHRvIGFkZCBhIHByZWZpeCB0byB0aGlzIGxpc3QKKwkgKiBAcGFyYW0gbnMgVGhlIHByZWZpeCB0byBhZGQuCisJICovCisKKwl2b2lkIGFkZEluY2x1c2l2ZU5hbWVzcGFjZShjb25zdCBjaGFyICogbnMpOworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUgbmFtZXNwYWNlIGxpc3QKKwkgKgorCSAqIERlbGV0ZXMgY3VycmVudCBQcmVmaXhMaXN0IChpZiBhbnkpIGFuZCBzZXRzIHRoZSBsaXN0IHRvIHRoZSBzcGFjZQorCSAqIHNlcGFyYXRlZCBsaXN0IG9mIG5hbWVzcGFjZSBwcmVmaXhlcyBwcm92aWRlZCBpbiBucy4KKwkgKgorCSAqIEBub3RlIE5vIGNoZWNraW5nIGlzIGRvbmUgb24gdGhlIHN0cmluZyBwYXNzZWQgaW4uCisJICoKKwkgKiBAcGFyYW0gbnMgVGhlIChzcGFjZSBzZXBhcmF0ZWQpIGxpc3Qgb2YgcHJlZml4ZXMgdG8gc2V0LgorCSAqLworCisJdm9pZCBzZXRJbmNsdXNpdmVOYW1lc3BhY2VzKFhNTENoICogbnMpOworCQorCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIHN0cmluZyBjb250YWluaW5nIHRoZSBpbmNsdXNpdmUgbmFtZXNwYWNlcy4KKwkgKgorCSAqIEdldCB0aGUgc3RyaW5nIGNvbnRhaW5pbmcgYSBsaXN0IG9mIChzcGFjZSBzZXBhcmF0ZWQpIHByZWZpeGVzIHRoYXQgd2lsbAorCSAqIGJlIGhhbmRsZWQgbm9uLWV4Y2x1c2l2ZWx5IGluIGFuIGV4Y2x1c2l2ZSBDMTRuIHRyYW5zZm9ybS4KKwkgKgorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgc3RyaW5nIGhlbGQgaW4gdGhlIG5vZGUgKE5VTEwgaWYgbm8gbmFtZXNwYWNlcyBkZWZpbmVkKS4KKwkgKiBAbm90ZSBUaGUgcG9pbnRlciByZXR1cm5lZCBpcyBvd25lZCBieSB0aGUgVHJhbnNmb3JtIHN0cnVjdHVyZSAtIGRvIG5vdCBkZWxldGUuCisJICovCisKKwkgY29uc3QgWE1MQ2ggKiBnZXRQcmVmaXhMaXN0KHZvaWQpOworCisJIC8qKgorCSAgKiBcYnJpZWYgRGVsZXRlIGFsbCBpbmNsdXNpdmUgbmFtZXNwYWNlcy4KKwkgICoKKwkgICogRGVsZXRlcyB0aGUgc3RydWN0dXJlcyAoaW5jbHVkaW5nIHRoZSBET00gbm9kZXMpIHRoYXQgaG9sZCB0aGUgaW5jbHVzaXZlCisJICAqIG5hbWVzcGFjZXMgbGlzdC4KKwkgICovCisKKwkgdm9pZCBjbGVhckluY2x1c2l2ZU5hbWVzcGFjZXModm9pZCk7CisKKwkvL0B9CisKKwkKK3ByaXZhdGU6CisKKwlEU0lHVHJhbnNmb3JtQzE0bigpOworCURTSUdUcmFuc2Zvcm1DMTRuKGNvbnN0IERTSUdUcmFuc2Zvcm1DMTRuICYgdGhlT3RoZXIpOworCisJdm9pZCBjcmVhdGVJbmNsdXNpdmVOYW1lc3BhY2VOb2RlKHZvaWQpOworCisKKwljYW5vbmljYWxpemF0aW9uTWV0aG9kCQkJbV9jTWV0aG9kOwkJCS8vIFRoZSBtZXRob2QKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudAkJCQkJCQorCQkJCQkJCQkJKiBtcF9pbmNsTlNOb2RlOwkvLyBOb2RlIGhvbGRpbmcgdGhlIGluY2x1c2l2ZSBOYW1lc3BhY2VzCisJY29uc3QgWE1MQ2gJCQkJCQkqIG1wX2luY2xOU1N0cjsJCS8vIFN0cmluZyBob2xkaW5nIHRoZSBuYW1lc3BhY2VzCQkJCQkJCQorfTsKZGlmZiAtLWdpdCBhL2Mvc3JjL2RzaWcvRFNJR1RyYW5zZm9ybUVudmVsb3BlLmNwcCBiL2Mvc3JjL2RzaWcvRFNJR1RyYW5zZm9ybUVudmVsb3BlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjY2OTZlCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZHNpZy9EU0lHVHJhbnNmb3JtRW52ZWxvcGUuY3BwCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBEU0lHVHJhbnNmb3JtRW52ZWxvcGUgOj0gQ2xhc3MgdGhhdCBjYWxjdWxhdGVzIGFuIEVudmVsb3BlIHdpdGggYW4gWFBhdGggZXZhbHVhdG9yCisgKgorICogJElkJAorICoKKyAqLworCisvLyBYU0VDCisKKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1RyYW5zZm9ybUVudmVsb3BlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1NpZ25hdHVyZS5ocHA+CisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTUVudmVsb3BlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNQzE0bi5ocHA+CisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTUNoYWluLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNWFBhdGguaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFeGNlcHRpb24uaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitEU0lHVHJhbnNmb3JtRW52ZWxvcGU6OkRTSUdUcmFuc2Zvcm1FbnZlbG9wZShjb25zdCBYU0VDRW52ICogZW52LCBET01Ob2RlICogbm9kZSkgOgorRFNJR1RyYW5zZm9ybShlbnYsIG5vZGUpIHt9OworCisKK0RTSUdUcmFuc2Zvcm1FbnZlbG9wZTo6RFNJR1RyYW5zZm9ybUVudmVsb3BlKGNvbnN0IFhTRUNFbnYgKiBlbnYpIDoKK0RTSUdUcmFuc2Zvcm0oZW52KSB7fTsKKwkJICAKKworRFNJR1RyYW5zZm9ybUVudmVsb3BlOjp+RFNJR1RyYW5zZm9ybUVudmVsb3BlKCkge307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgSW50ZXJmYWNlIE1ldGhvZHMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwordHJhbnNmb3JtVHlwZSBEU0lHVHJhbnNmb3JtRW52ZWxvcGU6OmdldFRyYW5zZm9ybVR5cGUoKSB7CisKKwlyZXR1cm4gVFJBTlNGT1JNX0VOVkVMT1BFRF9TSUdOQVRVUkU7CisKK30KKworCit2b2lkIERTSUdUcmFuc2Zvcm1FbnZlbG9wZTo6YXBwZW5kVHJhbnNmb3JtZXIoVFhGTUNoYWluICogaW5wdXQpIHsKKworI2lmZGVmIFhTRUNfVVNFX1hQQVRIX0VOVkVMT1BFCisKKwlUWEZNWFBhdGggKng7CisJCisJLy8gU3BlY2lhbCBYUGF0aCB0cmFuc2Zvcm0KKwlYU0VDbmV3KHgsIFRYRk1YUGF0aChtcF90eGZtTm9kZS0+Z2V0T3duZXJEb2N1bWVudCgpKSk7CisJaW5wdXQtPmFwcGVuZFR4Zm0oeCk7CisJCisJLy8gRXhlY3V0ZSB0aGUgZW52ZWxvcGUgZXhwcmVzc2lvbgorCXgtPmV2YWx1YXRlRW52ZWxvcGUobXBfdHhmbU5vZGUpOworI2Vsc2UKKworCVRYRk1FbnZlbG9wZSAqeDsKKworCS8vIFVzZSB0aGUgRW52ZWxvcGUgdHJhbnNmb3JtCisJCisJWFNFQ25ldyh4LCBUWEZNRW52ZWxvcGUobXBfdHhmbU5vZGUtPmdldE93bmVyRG9jdW1lbnQoKSkpOworCWlucHV0LT5hcHBlbmRUeGZtKHgpOworCisJLy8gRXhlY3V0ZSBlbnZlbG9wZQorCXgtPmV2YWx1YXRlRW52ZWxvcGUobXBfdHhmbU5vZGUpOworCisjZW5kaWYKKworfQorCitET01FbGVtZW50ICogRFNJR1RyYW5zZm9ybUVudmVsb3BlOjpjcmVhdGVCbGFua1RyYW5zZm9ybShET01Eb2N1bWVudCAqIHBhcmVudERvYykgeworCisJc2FmZUJ1ZmZlciBzdHI7CisJY29uc3QgWE1MQ2ggKiBwcmVmaXg7CisJRE9NRWxlbWVudCAqcmV0OworCURPTURvY3VtZW50ICpkb2MgPSBtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCk7CisKKwlwcmVmaXggPSBtcF9lbnYtPmdldERTSUdOU1ByZWZpeCgpOworCQorCS8vIENyZWF0ZSB0aGUgdHJhbnNmb3JtIG5vZGUKKwltYWtlUU5hbWUoc3RyLCBwcmVmaXgsICJUcmFuc2Zvcm0iKTsKKwlyZXQgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklEU0lHLCBzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisJcmV0LT5zZXRBdHRyaWJ1dGVOUyhOVUxMLERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ckFsZ29yaXRobSwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRU5WRUxPUEUpOworCisJbXBfdHhmbU5vZGUgPSByZXQ7CisKKwlyZXR1cm4gcmV0OworCit9CisKK3ZvaWQgRFNJR1RyYW5zZm9ybUVudmVsb3BlOjpsb2FkKHZvaWQpIHsKKworCS8vIERvIG5vdGhpbmcgZm9yIGFuIEVudmVsb3BlIHRyYW5zZm9ybQorCit9CmRpZmYgLS1naXQgYS9jL3NyYy9kc2lnL0RTSUdUcmFuc2Zvcm1FbnZlbG9wZS5ocHAgYi9jL3NyYy9kc2lnL0RTSUdUcmFuc2Zvcm1FbnZlbG9wZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDAxZDEzMAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2RzaWcvRFNJR1RyYW5zZm9ybUVudmVsb3BlLmhwcApAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogRFNJR1RyYW5zZm9ybUVudmVsb3BlIDo9IENsYXNzIHRoYXQgaG9sZHMgYW4gRW52ZWxvcGUgdHJhbnNmb3JtCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdUcmFuc2Zvcm0uaHBwPgorIAorLyoqCisgKiBAaW5ncm91cCBwdWJzaWcKKyAqLworCisvKioKKyAqIEBicmllZiBUcmFuc2Zvcm0gaG9sZGVyIGZvciBCYXNlIDY0LgorICoKKyAqIFRoZSBEU0lHVHJhbnNmb3JtRW52ZWxvcGUgY2xhc3MgaXMgdXNlZCB0byBob2xkIGJhc2U2NCBcPFRyYW5zZm9ybVw+IGVsZW1lbnRzCisgKiB3aXRoaW4gYSBkb2N1bWVudC4KKyAqCisgKiBUaGlzIGlzIGEgdmVyeSBzaW1wbGUgdHJhbnNmb3JtIHdpdGggbm8gcmVhbCBvcHRpb25zLgorICoKKyAqIEBzZWUgVFhGTUJhc2UKKyAqIEBzZWUgRFNJR1RyYW5zZm9ybQorICoKKyAqLworCisKKworY2xhc3MgRFNJR19FWFBPUlQgRFNJR1RyYW5zZm9ybUVudmVsb3BlIDogcHVibGljIERTSUdUcmFuc2Zvcm0geworCitwdWJsaWM6CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworICAgIC8vQHsKKwkKKyAgICAvKioKKwkgKiBcYnJpZWYgQ29udHJ1Y3RvciB1c2VkIGZvciBleGlzdGluZyBYTUwgc2lnbmF0dXJlcy4KKwkgKgorCSAqIFRoZSBOb2RlIHN0cnVjdHVyZSBhbHJlYWR5IGV4aXN0cywgc28gcmVhZCB0aGUgbm9kZXMgaW4uCisJICoKKwkgKiBAcGFyYW0gZW52IFRoZSBvcGVyYXRpbmcgZW52aXJvbm1lbnQKKwkgKiBAcGFyYW0gbm9kZSBUaGUgRE9NIG5vZGUgKHdpdGhpbiBkb2MpIHRoYXQgaXMgdG8gYmUgdXNlZCBhcyB0aGUgYmFzZSBvZiB0aGUgVHJhbnNmb3JtLgorCSAqIEBzZWUgI2xvYWQKKwkgKi8KKworCURTSUdUcmFuc2Zvcm1FbnZlbG9wZShjb25zdCBYU0VDRW52ICogZW52LCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqIG5vZGUpOworCisgICAgLyoqCisJICogXGJyaWVmIENvbnRydWN0b3IgdXNlZCBmb3IgbmV3IHNpZ25hdHVyZXMuCisJICoKKwkgKiBUaGUgTm9kZSBzdHJ1Y3R1cmUgd2lsbCBoYXZlIHRvIGJlIGNyZWF0ZWQuCisJICoKKwkgKiBAcGFyYW0gZW52IFRoZSBvcGVyYXRpbmcgZW52aXJvbm1lbnQKKwkgKiBAc2VlIGNyZWF0ZUJsYW5rVHJhbnNmb3JtCisJICovCisKKwlEU0lHVHJhbnNmb3JtRW52ZWxvcGUoY29uc3QgWFNFQ0VudiAqIGVudik7CisJCSAgCisJLyoqCisJICogXGJyaWVmIERlc3RydWN0b3IuCisJICoKKwkgKiBEZXN0cm95IHRoZSBEU0lHU2lnbmF0dXJlIGVsZW1lbnRzLgorCSAqCisJICogRG9lcyBub3QgZGVzdHJveSBhbnkgYXNzb2NpYXRlZCBET00gTm9kZXMKKwkgKi8KKwkJICAKKwl2aXJ0dWFsIH5EU0lHVHJhbnNmb3JtRW52ZWxvcGUoKTsKKwkKKwkvL0B9CisKKwkvKiogQG5hbWUgSW50ZXJmYWNlIE1ldGhvZHMgKi8KKworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBEZXRlcm1pbmUgdGhlIHRyYW5zZm9ybSB0eXBlLgorCSAqCisJICogVXNlZCB0byBkZXRlcm1pbmUgd2hhdCB0aGUgdHlwZSBvZiB0aGUgdHJhbnNmb3JtIGlzLgorCSAqCisJICovCisKKwl2aXJ0dWFsIHRyYW5zZm9ybVR5cGUgZ2V0VHJhbnNmb3JtVHlwZSgpOworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSB0aGUgRW5ldmVsb3BlIHRyYW5zZm9ybWVyIGVsZW1lbnQuCisJICoKKwkgKiBJbXBsZW1lbnRlZCBieSBlYWNoIFRyYW5zZm9ybSBjbGFzcyBhbmQgdXNlZCBieSB0aGUgRFNJR1NpZ25hdHVyZQorCSAqIHRvIGNvbnN0cnVjdCBhIGNvbXBsZXRlIFRyYW5zZm9ybSBsaXN0LgorCSAqLworCisJdmlydHVhbCB2b2lkIGFwcGVuZFRyYW5zZm9ybWVyKFRYRk1DaGFpbiAqIGlucHV0KTsKKworCS8qKgorCSAqIFxicmllZiBDb25zdHJ1Y3QgYmxhbmsgRW52ZWxvcGUgVHJhbnNmb3JtIGVsZW1lbnQuCisJICoKKwkgKiBJbnN0cnVjdCB0aGUgaW1wbGVtZW50YXRpb24gdG8gY3JlYXRlIHRoZSByZXF1aXJlZAorCSAqIHRyYW5zZm9ybSBhbmQgcmV0dXJuIHRoZSBuZXdseSBjb25zdHJ1Y3RlZCBET01Ob2RlIHN0cnVjdHVyZQorCSAqLworCisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIAorCQljcmVhdGVCbGFua1RyYW5zZm9ybShYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBwYXJlbnREb2MpOworCisJLyoqCisJICogXGJyaWVmIExvYWQgYSBET00gc3RydWN0dXJlCisJICoKKwkgKiBGb3IgYSBFbnZlbG9wZSB0cmFuc2Zvcm0gdGhpcyBkb2VzIGFsbW9zdCBub3RoaW5nLgorCSAqCisJICovCisKKwl2aXJ0dWFsIHZvaWQgbG9hZCh2b2lkKTsKKworCS8vQH0KKworCQorcHJpdmF0ZToKKworCURTSUdUcmFuc2Zvcm1FbnZlbG9wZSgpOworCURTSUdUcmFuc2Zvcm1FbnZlbG9wZShjb25zdCBEU0lHVHJhbnNmb3JtRW52ZWxvcGUgJiB0aGVPdGhlcik7CisKK307CmRpZmYgLS1naXQgYS9jL3NyYy9kc2lnL0RTSUdUcmFuc2Zvcm1MaXN0LmNwcCBiL2Mvc3JjL2RzaWcvRFNJR1RyYW5zZm9ybUxpc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxOWFmNTYKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9kc2lnL0RTSUdUcmFuc2Zvcm1MaXN0LmNwcApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBEU0lHVHJhbnNmb3JtTGlzdCA6PSBDbGFzcyBmb3IgTG9hZGluZyBhbmQgc3RvcmluZyBhIGxpc3Qgb2YgcmVmZXJlbmNlcworICoKKyAqICRJZCQKKyAqCisgKi8KKworLy8gWFNFQyBJbmNsdWRlcworI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHVHJhbnNmb3JtTGlzdC5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdUcmFuc2Zvcm0uaHBwPgorCitEU0lHVHJhbnNmb3JtTGlzdDo6RFNJR1RyYW5zZm9ybUxpc3Qodm9pZCl7CisKK30KKworRFNJR1RyYW5zZm9ybUxpc3Q6On5EU0lHVHJhbnNmb3JtTGlzdCgpIHsKKworCS8vIERlbGV0ZSBhbGwgdGhlIHRyYW5zZm9ybXMgY29udGFpbmVkIGluIHRoZSBsaXN0CisKKwlEU0lHVHJhbnNmb3JtTGlzdDo6VHJhbnNmb3JtTGlzdFZlY3RvclR5cGU6Oml0ZXJhdG9yIGl0ID0gbV90cmFuc2Zvcm1MaXN0LmJlZ2luKCk7CisKKwl3aGlsZSAoaXQgIT0gbV90cmFuc2Zvcm1MaXN0LmVuZCgpKSB7CisJCQorCQlkZWxldGUgKml0OworCQlpdCsrOworCisJfQorCit9CisKKwordm9pZCBEU0lHVHJhbnNmb3JtTGlzdDo6YWRkVHJhbnNmb3JtKERTSUdUcmFuc2Zvcm0gKiByZWYpIHsKKworCW1fdHJhbnNmb3JtTGlzdC5wdXNoX2JhY2socmVmKTsKKworfQorCitEU0lHVHJhbnNmb3JtTGlzdDo6c2l6ZV90eXBlIERTSUdUcmFuc2Zvcm1MaXN0OjpnZXRTaXplKHZvaWQpIHsKKworCXJldHVybiBtX3RyYW5zZm9ybUxpc3Quc2l6ZSgpOworCit9CisKK3ZvaWQgRFNJR1RyYW5zZm9ybUxpc3Q6OnJlbW92ZVRyYW5zZm9ybShzaXplX3R5cGUgaW5kZXgpIHsKKworCWlmIChpbmRleCA8IG1fdHJhbnNmb3JtTGlzdC5zaXplKCkpIHsKKworCQlUcmFuc2Zvcm1MaXN0VmVjdG9yVHlwZTo6aXRlcmF0b3IgaSA9IG1fdHJhbnNmb3JtTGlzdC5iZWdpbigpOworCQlmb3IgKHNpemVfdHlwZSBqID0gMDsgaiA8IGluZGV4OyArK2opCisJCQlpKys7CisJCQorCQlpZiAoaSAhPSBtX3RyYW5zZm9ybUxpc3QuZW5kKCkpIHsKKwkJCWRlbGV0ZSAqaTsKKwkJCW1fdHJhbnNmb3JtTGlzdC5lcmFzZShpKTsKKwkJfQorCX0KK30KKworRFNJR1RyYW5zZm9ybSAqIERTSUdUcmFuc2Zvcm1MaXN0OjppdGVtKERTSUdUcmFuc2Zvcm1MaXN0OjpzaXplX3R5cGUgaW5kZXgpIHsKKworCWlmIChpbmRleCA8IG1fdHJhbnNmb3JtTGlzdC5zaXplKCkpCisJCXJldHVybiBtX3RyYW5zZm9ybUxpc3RbaW5kZXhdOworCisJcmV0dXJuIE5VTEw7CisKK30KKworCitib29sIERTSUdUcmFuc2Zvcm1MaXN0OjplbXB0eSgpIHsKKworCS8vIENsZWFyIG91dCB0aGUgbGlzdCAtIG5vdGUgd2UgZG8gTk9UIGRlbGV0ZSB0aGUgdHJhbnNmb3JtIGVsZW1lbnRzCisKKwlyZXR1cm4gbV90cmFuc2Zvcm1MaXN0LmVtcHR5KCk7CisKK30KZGlmZiAtLWdpdCBhL2Mvc3JjL2RzaWcvRFNJR1RyYW5zZm9ybUxpc3QuaHBwIGIvYy9zcmMvZHNpZy9EU0lHVHJhbnNmb3JtTGlzdC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjVmOWM2YQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2RzaWcvRFNJR1RyYW5zZm9ybUxpc3QuaHBwCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBEU0lHVHJhbnNmb3JtTGlzdCA6PSBMaXN0IHRoYXQgaG9sZHMgYWxsIHRoZSB0cmFuc2Zvcm1zIGluIHRoZSBTaWduYXR1cmUuCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIERTSUdUUkFOU0ZPUk1MSVNUX0lOQ0xVREUKKyNkZWZpbmUgRFNJR1RSQU5TRk9STUxJU1RfSU5DTFVERQorCisKKy8vIFhTRUMgSW5jbHVkZXMKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisKKy8vIEdlbmVyYWwgaW5jbHVkZXMKKyNpbmNsdWRlIDx2ZWN0b3I+CisKK2NsYXNzIERTSUdUcmFuc2Zvcm07CisKKy8qKgorICogQGluZ3JvdXAgaW50ZXJuYWwKKyAqLworCisvKioKKyAqIEBicmllZiBUaGUgY2xhc3MgdXNlZCBmb3IgaG9sZGluZyBUcmFuc2Zvcm0gRWxlbWVudHMgd2l0aGluIGEgc2lnbmF0dXJlLgorICoKKyAqIFRoaXMgY2xhc3MgaXMgdGhlIGNvbnRhaW5lciBmb3IgdGhlIFw8VHJhbnNmb3Jtc1w+IGxpc3QgaW4gYSBSZWZlcmVuY2Ugb3IKKyAqIEtleUluZm8gbGlzdC4gIEl0IGhvbGRzIGEgbGlzdCBvZiBUcmFuc2Zvcm0gZWxlbWVudHMgdGhhdCBjYW4gYmUKKyAqIG1hbmlwdWxhdGVkIGJ5IHRoZSBjYWxsZXIsIG9yIGFza2VkIHRvIHByb3ZpZGUgdGhlIGFwcHJvcHJpYXRlCisgKiBUWEZNKiBjbGFzcyB0byBhY3R1YWxseSBwZXJmb3JtIGEgdHJhbnNmb3JtLgorICoKKyAqLworCisKK2NsYXNzIERTSUdfRVhQT1JUIERTSUdUcmFuc2Zvcm1MaXN0IHsKKworcHVibGljOgorCisjaWYgZGVmaW5lZChYU0VDX05PX05BTUVTUEFDRVMpCisJdHlwZWRlZiB2ZWN0b3I8RFNJR1RyYW5zZm9ybSAqPgkJCVRyYW5zZm9ybUxpc3RWZWN0b3JUeXBlOworI2Vsc2UKKwl0eXBlZGVmIHN0ZDo6dmVjdG9yPERTSUdUcmFuc2Zvcm0gKj4JVHJhbnNmb3JtTGlzdFZlY3RvclR5cGU7CisjZW5kaWYKKworI2lmIGRlZmluZWQoWFNFQ19TSVpFX1RfSU5fTkFNRVNQQUNFX1NURCkKKwl0eXBlZGVmIHN0ZDo6c2l6ZV90CQlzaXplX3R5cGU7CisjZWxzZQorCXR5cGVkZWYgc2l6ZV90CQkJc2l6ZV90eXBlOworI2VuZGlmCisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBDb25zdHJ1Y3QgdGhlIGxpc3QKKwkgKgorCSAqLworCisJRFNJR1RyYW5zZm9ybUxpc3QoKTsKKworCS8qKgorCSAqIFxicmllZiBEZXN0cm95IGFsbCBUcmFuc2Zvcm0gcmVzb3VyY2VzCisJICoKKwkgKiBEZXN0cm95cyB0aGUgbGlzdCAtIGluY2x1ZGluZyB0aGUgY29udGFpbmVkIERTSUdUcmFuc2Zvcm0qIGVsZW1lbnRzLgorCSAqIERvZXMgbm90IGRlc3Ryb3kgdGhlIHVuZGVybHlpbmcgRE9NIHN0cnVjdHVyZS4KKwkgKgorCSAqLworCisJfkRTSUdUcmFuc2Zvcm1MaXN0KCk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgTWFuaXB1bGF0ZSBleGlzdGluZyBzdHJ1Y3R1cmVzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIEFkZCBhIHRyYW5zZm9ybSB0byB0aGUgbGlzdAorCSAqCisJICogU2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBkaXJlY3RseSAtIHdpbGwgYWRkIGEgcHJlLWJ1aWx0CisJICogdHJhbnNmb3JtIHRvIHRoZSBsaXN0LgorCSAqCisJICogQG5vdGUgV2lsbCBub3QgYWRkIGFueSBET00gc3RydWN0dXJlcworCSAqIEBwYXJhbSByZWYgVGhlIHRyYW5zZm9ybSBzdHJ1Y3R1cmUgdG8gYWRkCisJICovCisKKwl2b2lkIGFkZFRyYW5zZm9ybShEU0lHVHJhbnNmb3JtICogcmVmKTsKKworCS8qKgorCSAqIFxicmllZiBSZW1vdmUgYSB0cmFuc2Zvcm0gZnJvbSB0aGUgbGlzdC4KKwkgKgorCSAqIFNob3VsZCBuZXZlciBiZSBjYWxsZWQgZGlyZWN0bHkgLSB3aWxsIHNpbXBseSByZW1vdmUgdGhlIGVsZW1lbnQKKwkgKiB3aXRob3V0IGRlbGV0aW5nCisJICovCisKKwl2b2lkIHJlbW92ZVRyYW5zZm9ybShzaXplX3R5cGUgaW5kZXgpOworCisJLyoqCisJICogXGJyaWVmIERlbGV0ZSB0aGUgdHJhbnNmb3JtIGF0IHRoZSBpbmRpY2F0ZWQgcG9zaXRpb24uCisJICoKKwkgKiBAcGFyYW0gaW5kZXggVGhlIHBvc2l0aW9uIHRvIGRlbGV0ZSBmcm9tLgorCSAqLworCisJRFNJR1RyYW5zZm9ybSAqIGl0ZW0oc2l6ZV90eXBlIGluZGV4KTsKKworCS8qKiAKKwkgKiBcYnJpZWYgR2V0IHRoZSBudW1iZXIgb2YgaXRlbXMuCisJICoKKwkgKi8KKworCXNpemVfdHlwZQlnZXRTaXplKCk7CisKKwkvKioKKwkgKiBcYnJpZWYgUmVtb3ZlIGFsbCBlbGVtZW50cyAtIGJ1dCBkZWxldGUgbm9uZS4KKwkgKi8KKworCWJvb2wgZW1wdHkoKTsKKworCisJLy8gR2V0IGluZm9ybWF0aW9uCisKK3ByaXZhdGU6CisKKwlUcmFuc2Zvcm1MaXN0VmVjdG9yVHlwZQkJCQkJbV90cmFuc2Zvcm1MaXN0OworfTsKKworCisjZW5kaWYgLyogRFNJR1RSQU5TRk9STUxJU1RfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvZHNpZy9EU0lHVHJhbnNmb3JtWFBhdGguY3BwIGIvYy9zcmMvZHNpZy9EU0lHVHJhbnNmb3JtWFBhdGguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzNzEzM2EKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9kc2lnL0RTSUdUcmFuc2Zvcm1YUGF0aC5jcHAKQEAgLTAsMCArMSwyMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIERTSUdUcmFuc2Zvcm1YUGF0aCA6PSBDbGFzcyB0aGF0IGhvbGRzIFhQYXRoIHRyYW5zZm9ybXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKworI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHVHJhbnNmb3JtWFBhdGguaHBwPgorI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1YUGF0aC5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0V4Y2VwdGlvbi5ocHA+CisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTUMxNG4uaHBwPgorI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1DaGFpbi5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRW52LmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1NpZ25hdHVyZS5ocHA+CisKKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvSmFuaXRvci5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RTSUdUcmFuc2Zvcm1YUGF0aDo6RFNJR1RyYW5zZm9ybVhQYXRoKGNvbnN0IFhTRUNFbnYgKiBlbnYsIERPTU5vZGUgKiBub2RlKSA6CitEU0lHVHJhbnNmb3JtKGVudiwgbm9kZSkgeworCisJbXBfZXhwclRleHROb2RlID0gTlVMTDsKKwltcF94cGF0aE5vZGUgPSBOVUxMOworCW1wX05TTWFwID0gTlVMTDsKKwltX2V4cHIgPSAiIjsKKworfQorCQorCitEU0lHVHJhbnNmb3JtWFBhdGg6OkRTSUdUcmFuc2Zvcm1YUGF0aChjb25zdCBYU0VDRW52ICogZW52KSA6CitEU0lHVHJhbnNmb3JtKGVudikgeworCisJbXBfZXhwclRleHROb2RlID0gTlVMTDsKKwltcF94cGF0aE5vZGUgPSBOVUxMOworCW1wX05TTWFwID0gTlVMTDsKKwltX2V4cHIgPSAiIjsKK30KKwkJICAKK0RTSUdUcmFuc2Zvcm1YUGF0aDo6fkRTSUdUcmFuc2Zvcm1YUGF0aCgpIHt9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEludGVyZmFjZSBNZXRob2RzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQordHJhbnNmb3JtVHlwZSBEU0lHVHJhbnNmb3JtWFBhdGg6OmdldFRyYW5zZm9ybVR5cGUoKSB7CisKKwlyZXR1cm4gVFJBTlNGT1JNX1hQQVRIOworCit9CisKK3ZvaWQgRFNJR1RyYW5zZm9ybVhQYXRoOjphcHBlbmRUcmFuc2Zvcm1lcihUWEZNQ2hhaW4gKiBpbnB1dCkgeworCisjaWZkZWYgWFNFQ19OT19YUEFUSAorCisJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpVbnN1cHBvcnRlZEZ1bmN0aW9uLAorCQkiWFBhdGggdHJhbnNmb3JtcyBhcmUgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGNvbXBpbGF0aW9uIG9mIHRoZSBYU0VDIGxpYnJhcnkiKTsKKworI2Vsc2UKKworCVRYRk1YUGF0aCAqeDsKKwkvLyBYUGF0aCB0cmFuc2Zvcm0KKwlYU0VDbmV3KHgsIFRYRk1YUGF0aChtcF90eGZtTm9kZS0+Z2V0T3duZXJEb2N1bWVudCgpKSk7CisJaW5wdXQtPmFwcGVuZFR4Zm0oeCk7CisKKwkvLyBUaGVzZSBjYW4gdGhyb3csIGJ1dCB0aGUgVFhGTVhQYXRoIGlzIG5vdyBvd25lZCBieSB0aGUgY2hhaW4sIHNvIHdpbGwKKwkvLyBiZSBjbGVhbmVkIHVwIGRvd24gdGhlIGNhbGxpbmcgc3RhY2suCisKKwl4LT5zZXROYW1lU3BhY2UobXBfTlNNYXApOworCXgtPmV2YWx1YXRlRXhwcihtcF90eGZtTm9kZSwgbV9leHByKTsKKwkKKyNlbmRpZiAvKiBOT19YUEFUSCAqLworCit9CisKK0RPTUVsZW1lbnQgKiBEU0lHVHJhbnNmb3JtWFBhdGg6OmNyZWF0ZUJsYW5rVHJhbnNmb3JtKERPTURvY3VtZW50ICogcGFyZW50RG9jKSB7CisKKwlzYWZlQnVmZmVyIHN0cjsKKwljb25zdCBYTUxDaCAqIHByZWZpeDsKKwlET01FbGVtZW50ICpyZXQ7CisJRE9NRG9jdW1lbnQgKmRvYyA9IG1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKTsKKworCXByZWZpeCA9IG1wX2Vudi0+Z2V0RFNJR05TUHJlZml4KCk7CisJCisJLy8gQ3JlYXRlIHRoZSB0cmFuc2Zvcm0gbm9kZQorCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgIlRyYW5zZm9ybSIpOworCXJldCA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSURTSUcsIHN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKwlyZXQtPnNldEF0dHJpYnV0ZU5TKE5VTEwsRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyQWxnb3JpdGhtLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYUEFUSCk7CisJCisJLy8gQ3JlYXRlIHRoZSBYUGF0aCBlbGVtZW50CisJCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCAiWFBhdGgiKTsKKwltcF94cGF0aE5vZGUgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklEU0lHLCBzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisJbXBfZXhwclRleHROb2RlID0gZG9jLT5jcmVhdGVUZXh0Tm9kZShNQUtFX1VOSUNPREVfU1RSSU5HKCIiKSk7CisJcmV0LT5hcHBlbmRDaGlsZChtcF94cGF0aE5vZGUpOworCW1wX3hwYXRoTm9kZS0+YXBwZW5kQ2hpbGQobXBfZXhwclRleHROb2RlKTsKKworCW1wX3R4Zm1Ob2RlID0gcmV0OworCisJcmV0dXJuIHJldDsKKworfQorCit2b2lkIERTSUdUcmFuc2Zvcm1YUGF0aDo6bG9hZCh2b2lkKSB7CisKKwkvLyBGaW5kIHRoZSBYUGF0aCBleHByZXNzaW9uCisJCisJbXBfeHBhdGhOb2RlID0gbXBfdHhmbU5vZGUtPmdldEZpcnN0Q2hpbGQoKTsKKworCXdoaWxlIChtcF94cGF0aE5vZGUgIT0gMCAmJiAKKwkJbXBfeHBhdGhOb2RlLT5nZXROb2RlVHlwZSgpICE9IERPTU5vZGU6OkVMRU1FTlRfTk9ERSAmJiAhc3RyRXF1YWxzKG1wX3hwYXRoTm9kZS0+Z2V0Tm9kZU5hbWUoKSwgIlhQYXRoIikpCisJCW1wX3hwYXRoTm9kZSA9IG1wX3hwYXRoTm9kZS0+Z2V0TmV4dFNpYmxpbmcoKTsKKwkKKwlpZiAobXBfeHBhdGhOb2RlID09IDApIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkRFNJR0NoaWxkTm90Rm91bmQsCisJCQkiRXhwZWN0ZWQgPFhQYXRoPiBOb2RlIGluIERTSUdUcmFuc2Zvcm1YUGF0aDo6bG9hZCIpOworCX0KKwkKKwllbHNlIHsKKwkJCisJCS8vIENoZWNrIGZvciBhdHRyaWJ1dGVzIC0gaW4gcGFydGljdWxhciBhbnkgbmFtZXNwYWNlcworCisJCW1wX05TTWFwID0gbXBfeHBhdGhOb2RlLT5nZXRBdHRyaWJ1dGVzKCk7CisJCQorCQkvLyBGaW5kIHRoZSB0ZXh0IG5vZGUKKwkJbXBfZXhwclRleHROb2RlID0gZmluZEZpcnN0Q2hpbGRPZlR5cGUobXBfeHBhdGhOb2RlLCBET01Ob2RlOjpURVhUX05PREUpOworCisJCWlmIChtcF9leHByVGV4dE5vZGUgPT0gTlVMTCkgeworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZERTSUdDaGlsZE5vdEZvdW5kLAorCQkJCSJFeHBlY3RlZCBUZXh0IE5vZGUgaW4gYmVuZWF0aCA8WFBhdGg+IGluIERTSUdUcmFuc2Zvcm1YUGF0aDo6bG9hZCIpOworCQl9CisKKwkJLy8gR2F0aGVyIHRoZSB0ZXh0CisJCXNhZmVCdWZmZXIgZXhwclNCOworCisJCWdhdGhlckNoaWxkcmVuVGV4dChtcF94cGF0aE5vZGUsIGV4cHJTQik7CisKKwkJbV9leHByIDw8ICgqKG1wX2Vudi0+Z2V0U0JGb3JtYXR0ZXIoKSkgPDwgZXhwclNCLnJhd1hNTENoQnVmZmVyKCkpOworCisJCS8vbV9leHByIDw8ICgqKG1wX2Vudi0+Z2V0U0JGb3JtYXR0ZXIoKSkgPDwgbXBfZXhwclRleHROb2RlLT5nZXROb2RlVmFsdWUoKSk7CisJCQkJCisJfQorCit9CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBYUGF0aCBUcmFuc2Zvcm0gU3BlY2lmaWMgTWV0aG9kcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBEU0lHVHJhbnNmb3JtWFBhdGg6OnNldEV4cHJlc3Npb24oY29uc3QgY2hhciAqIGV4cHIpIHsKKworCW1wX2V4cHJUZXh0Tm9kZS0+c2V0Tm9kZVZhbHVlKE1BS0VfVU5JQ09ERV9TVFJJTkcoZXhwcikpOworCisJbV9leHByLnNiU3RyY3B5SW4oKGNoYXIgKikgZXhwcik7CisKK30KKworCisKK2NvbnN0IGNoYXIgKiBEU0lHVHJhbnNmb3JtWFBhdGg6OmdldEV4cHJlc3Npb24odm9pZCkgeworCisJcmV0dXJuIG1fZXhwci5yYXdDaGFyQnVmZmVyKCk7CisKK30KKworCit2b2lkIERTSUdUcmFuc2Zvcm1YUGF0aDo6c2V0TmFtZXNwYWNlKGNvbnN0IGNoYXIgKiBwcmVmaXgsIGNvbnN0IGNoYXIgKiB2YWx1ZSkgeworCisJc2FmZUJ1ZmZlciBzdHI7CisKKwlzdHIuc2JTdHJjcHlJbigieG1sbnM6Iik7CisJc3RyLnNiU3RyY2F0SW4oKGNoYXIgKikgcHJlZml4KTsKKworCURPTUVsZW1lbnQgKng7CisKKwl4ID0gc3RhdGljX2Nhc3QgPERPTUVsZW1lbnQgKj4gKG1wX3hwYXRoTm9kZSk7CisKKy8vCWlmICh4ID09IE5VTEwpIHsKKy8vCisvLwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpUcmFuc2Zvcm1FcnJvciwKKy8vCQkJIkZvdW5kIGEgbm9uIEVMRU1FTlQgbm9kZSBhcyB0aGUgWFBhdGggbm9kZSBpbiBEU0lHVHJhbnNmb3JtWFBhdGgiKTsKKy8vCX0KKworCXgtPnNldEF0dHJpYnV0ZU5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhNTE5TLAorCQlzdHIuc2JTdHJUb1hNTENoKCksCisJCU1BS0VfVU5JQ09ERV9TVFJJTkcodmFsdWUpKTsKKworCW1wX05TTWFwID0gbXBfeHBhdGhOb2RlLT5nZXRBdHRyaWJ1dGVzKCk7CisKKworfQorCit2b2lkIERTSUdUcmFuc2Zvcm1YUGF0aDo6ZGVsZXRlTmFtZXNwYWNlKGNvbnN0IGNoYXIgKiBwcmVmaXgpIHsKKworCURPTUVsZW1lbnQgKng7CisKKwl4ID0gc3RhdGljX2Nhc3QgPERPTUVsZW1lbnQgKj4gKG1wX3hwYXRoTm9kZSk7CisKKy8vCWlmICh4ID09IE5VTEwpIHsKKy8vCisvLwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpUcmFuc2Zvcm1FcnJvciwKKy8vCQkJIkZvdW5kIGEgbm9uIEVMRU1FTlQgbm9kZSBhcyB0aGUgWFBhdGggbm9kZSBpbiBEU0lHVHJhbnNmb3JtWFBhdGgiKTsKKy8vCX0KKworCXgtPnJlbW92ZUF0dHJpYnV0ZU5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhNTE5TLAorCQlNQUtFX1VOSUNPREVfU1RSSU5HKHByZWZpeCkpOworCit9CisKZGlmZiAtLWdpdCBhL2Mvc3JjL2RzaWcvRFNJR1RyYW5zZm9ybVhQYXRoLmhwcCBiL2Mvc3JjL2RzaWcvRFNJR1RyYW5zZm9ybVhQYXRoLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjllNjQwCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZHNpZy9EU0lHVHJhbnNmb3JtWFBhdGguaHBwCkBAIC0wLDAgKzEsMjI1IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBEU0lHVHJhbnNmb3JtWFBhdGggOj0gQ2xhc3MgdGhhdCBwZXJmb3JtcyBYUGF0aCB0cmFuc2Zvcm1zCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIERTSUdUUkFOU0ZPUk1YUEFUSF9JTkNMVURFCisjZGVmaW5lIERTSUdUUkFOU0ZPUk1YUEFUSF9JTkNMVURFCisKKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1RyYW5zZm9ybS5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDU2FmZUJ1ZmZlci5ocHA+CisKKworWFNFQ19ERUNMQVJFX1hFUkNFU19DTEFTUyhET01OYW1lZE5vZGVNYXApOworWFNFQ19ERUNMQVJFX1hFUkNFU19DTEFTUyhET01Ob2RlKTsKKworLyoqCisgKiBAaW5ncm91cCBwdWJzaWcKKyAqLworCisvKioKKyAqIEBicmllZiBUcmFuc2Zvcm0gaG9sZGVyIGZvciBYUGF0aCB0cmFuc2Zvcm1zLgorICoKKyAqIFRoZSBEU0lHVHJhbnNmb3JtWFBhdGggY2xhc3MgaXMgdXNlZCB0byBob2xkIFhQYXRoIFw8VHJhbnNmb3JtXD4gZWxlbWVudHMKKyAqIHdpdGhpbiBhIGRvY3VtZW50LgorICoKKyAqIEBzZWUgVFhGTVhQYXRoCisgKiBAc2VlIERTSUdUcmFuc2Zvcm0KKyAqCisgKi8KKworY2xhc3MgRFNJR19FWFBPUlQgRFNJR1RyYW5zZm9ybVhQYXRoIDogcHVibGljIERTSUdUcmFuc2Zvcm0geworCitwdWJsaWM6CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworICAgIC8vQHsKKwkKKyAgICAvKioKKwkgKiBcYnJpZWYgQ29udHJ1Y3RvciB1c2VkIGZvciBleGlzdGluZyBYTUwgc2lnbmF0dXJlcy4KKwkgKgorCSAqIFRoZSBOb2RlIHN0cnVjdHVyZSBhbHJlYWR5IGV4aXN0cywgc28gcmVhZCB0aGUgbm9kZXMgaW4uCisJICoKKwkgKiBAcGFyYW0gZW52IFRoZSBvcGVyYXRpbmcgZW52aXJvbm1lbnQKKwkgKiBAcGFyYW0gbm9kZSBUaGUgRE9NIG5vZGUgKHdpdGhpbiBkb2MpIHRoYXQgaXMgdG8gYmUgdXNlZCBhcyB0aGUgYmFzZSBvZiB0aGUgVHJhbnNmb3JtLgorCSAqIEBzZWUgI2xvYWQKKwkgKi8KKworCURTSUdUcmFuc2Zvcm1YUGF0aChjb25zdCBYU0VDRW52ICogZW52LCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqIG5vZGUpOworCisgICAgLyoqCisJICogXGJyaWVmIENvbnRydWN0b3IgdXNlZCBmb3IgbmV3IHNpZ25hdHVyZXMuCisJICoKKwkgKiBUaGUgTm9kZSBzdHJ1Y3R1cmUgd2lsbCBoYXZlIHRvIGJlIGNyZWF0ZWQuCisJICoKKwkgKiBAbm90ZSBEU0lHVHJhbnNmb3JtIHN0cnVjdHVyZXMgc2hvdWxkIG9ubHkgZXZlciBiZSBjcmVhdGVkIHZpYSBjYWxscyB0byBhCisJICogRFNJR1RyYW5zZm9ybUxpc3Qgb2JqZWN0LgorCSAqCisJICogQHBhcmFtIGVudiBUaGUgb3BlcmF0aW5nIGVudmlyb25tZW50CisJICogQHNlZSBjcmVhdGVCbGFua1RyYW5zZm9ybQorCSAqLworCisJRFNJR1RyYW5zZm9ybVhQYXRoKGNvbnN0IFhTRUNFbnYgKiBlbnYpOworCQkgIAorCS8qKgorCSAqIFxicmllZiBEZXN0cnVjdG9yLgorCSAqCisJICogRGVzdHJveSB0aGUgRFNJR1NpZ25hdHVyZSBlbGVtZW50cy4KKwkgKgorCSAqIERvZXMgbm90IGRlc3Ryb3kgYW55IGFzc29jaWF0ZWQgRE9NIE5vZGVzCisJICovCisJCSAgCisJdmlydHVhbCB+RFNJR1RyYW5zZm9ybVhQYXRoKCk7CisJCisJLy9AfQorCisJLyoqIEBuYW1lIEludGVyZmFjZSBNZXRob2RzICovCisKKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgRGV0ZXJtaW5lIHRoZSB0cmFuc2Zvcm0gdHlwZS4KKwkgKgorCSAqIFVzZWQgdG8gZGV0ZXJtaW5lIHdoYXQgdGhlIHR5cGUgb2YgdGhlIHRyYW5zZm9ybSBpcy4KKwkgKgorCSAqLworCisJdmlydHVhbCB0cmFuc2Zvcm1UeXBlIGdldFRyYW5zZm9ybVR5cGUoKTsKKworCS8qKgorCSAqIFxicmllZiBDcmVhdGUgdGhlIFhQYXRoIFRyYW5zZm9ybWVyIGNsYXNzLgorCSAqCisJICogQ3JlYXRlIHRoZSB0cmFuc2Zvcm1lciBhc3NvY2lhdGVkIHdpdGggdGhpcyBYUGF0aCB0cmFuc2Zvcm0uCisJICogV2lsbCBzZXQgdGhlIGV4cHJlc3Npb24gYW5kIE5hbWVzcGFjZXMgYXMgYXBwcm9wcmlhdGUKKwkgKgorCSAqIEByZXR1cm5zIFRoZSBUWEZNWFBhdGggdHJhbnNmb3JtZXIgYXNzb2NpYXRlZCB3aXRoIHRoaXMgVHJhbnNmb3JtCisJICovCisKKwl2aXJ0dWFsIHZvaWQgYXBwZW5kVHJhbnNmb3JtZXIoVFhGTUNoYWluICogaW5wdXQpOworCisJLyoqCisJICogXGJyaWVmIENvbnN0cnVjdCBibGFuayBYUGF0aCBUcmFuc2Zvcm0gZWxlbWVudC4KKwkgKgorCSAqIEluc3RydWN0IHRoZSBpbXBsZW1lbnRhdGlvbiB0byBjcmVhdGUgdGhlIHJlcXVpcmVkCisJICogdHJhbnNmb3JtIGFuZCByZXR1cm4gdGhlIG5ld2x5IGNvbnN0cnVjdGVkIERPTU5vZGUgc3RydWN0dXJlCisJICovCisKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogY3JlYXRlQmxhbmtUcmFuc2Zvcm0oCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIHBhcmVudERvYyk7CisKKwkvKioKKwkgKiBcYnJpZWYgTG9hZCBhIERPTSBzdHJ1Y3R1cmUKKwkgKgorCSAqIExvYWQgdGhlIGV4cHJlc3Npb24gYW5kIE5hbWVzcGFjZXMuCisJICoKKwkgKi8KKworCXZpcnR1YWwgdm9pZCBsb2FkKHZvaWQpOworCisJLy9AfQorCisJLyoqIEBuYW1lIFhQYXRoIHNwZWNpZmljIG1ldGhvZHMgKi8KKworCS8vQHsKKworCS8qKiAKKwkgKgorCSAqIFxicmllZiBTZXQgdGhlIFhQYXRoIGV4cHJlc3Npb24uCisJICoKKwkgKiBUYWtlcyB0aGUgcHJvdmlkZWQgc3RyaW5nIGFuZCB1c2VzIGl0IHRvIHNldCB0aGUgZXhwcmVzc2lvbiBpbiB0aGUKKwkgKiBTaWduYXR1cmUgYW5kIERPTSBzdHJ1Y3R1cmVzLgorCSAqCisJICogSWYgYW4gZXhwcmVzc2lvbiBhbHJlYWR5IGV4aXN0cywgaXQgaXMgb3ZlcndyaXR0ZW4uCisJICoKKwkgKiBAcGFyYW0gZXhwciBUaGUgZXhwcmVzc2lvbiB0byBzZXQKKwkgKi8KKworCXZvaWQgc2V0RXhwcmVzc2lvbihjb25zdCBjaGFyICogZXhwcik7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBYUGF0aCBleHByZXNzaW9uCisJICoKKwkgKiBSZXR1cm5zIGEgY2hhcmFjdGVyIGJ1ZmZlciB3aXRoIHRoZSBleHByZXNzaW9uIGluc2lkZSBpdC4KKwkgKgorCSAqIEBub3RlIERvIG5vdCBkZWxldGUgdGhlIHJldHVybmVkIHBvaW50ZXIgLSBpdCBpcyBvd25lZCBieSB0aGUgb2JqZWN0LgorCSAqCisJICogQHJldHVybnMgVGhlIGV4cHJlc3Npb24KKwkgKi8KKworCWNvbnN0IGNoYXIgKiBnZXRFeHByZXNzaW9uKHZvaWQpOworCisJLyoqCisJICogXGJyaWVmIEFkZCBhIG5ldyBuYW1lc3BhY2UgdG8gdGhlIGxpc3QgdG8gYmUgdXNlZAorCSAqCisJICogQWRkIGEgbmV3IG5hbWVzcGFjZSB0byB0aGUgWFBhdGggRWxlbWVudC4KKwkgKgorCSAqIEBwYXJhbSBwcmVmaXggTkNOYW1lIG9mIHRoZSBOYW1lc3BhY2UgdG8gc2V0CisJICogQHBhcmFtIHZhbHVlIFRoZSBzdHJpbmcgd2l0aCB0aGUgVVJJIHRvIHNldAorCSAqLworCisJdm9pZCBzZXROYW1lc3BhY2UoY29uc3QgY2hhciAqIHByZWZpeCwgY29uc3QgY2hhciAqIHZhbHVlKTsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIGxpc3Qgb2YgbmFtZXNwYWNlcy4KKwkgKgorCSAqIFJldHVybnMgdGhlIERPTU5hbWVkTm9kZU1hcCBvZiB0aGUgYXR0cmlidXRlcyBvZiB0aGUgWFBhdGggdHJhbnNmb3JtCisJICogbm9kZS4gIFRoaXMgPGVtPnNob3VsZDwvZW0+IG9ubHkgY29udGFpbiBuYW1lc3BhY2VzLgorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBOYW1lZE5vZGVNYXAKKwkgKi8KKworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01OYW1lZE5vZGVNYXAgKiBnZXROYW1lc3BhY2VzKHZvaWQpIHsKKwkJcmV0dXJuIG1wX05TTWFwOworCX0KKworCS8qKgorCSAqIFxicmllZiBEZWxldGUgYSBuYW1lc3BhY2UgdG8gdGhlIGxpc3QgdG8gYmUgdXNlZAorCSAqCisJICogRGVsZXRlIGEgbmFtZXNwYWNlIGZyb20gdGhlIFhQYXRoIEVsZW1lbnQuCisJICoKKwkgKiBAcGFyYW0gcHJlZml4IE5DTmFtZSBvZiB0aGUgTmFtZXNwYWNlIHRvIGRlbGV0ZQorCSAqIEB0aHJvd3MgWFNFQ0V4Y2VwdGlvbiBpZiB0aGUgTkNOYW1lIGRvZXMgbm90IGV4aXN0CisJICoKKwkgKi8KKworCXZvaWQgZGVsZXRlTmFtZXNwYWNlKGNvbnN0IGNoYXIgKiBwcmVmaXgpOworCisJLy9AfQorCQorcHJpdmF0ZToKKworCURTSUdUcmFuc2Zvcm1YUGF0aCgpOworCURTSUdUcmFuc2Zvcm1YUGF0aChjb25zdCBEU0lHVHJhbnNmb3JtWFBhdGggJiB0aGVPdGhlcik7CisKKwlzYWZlQnVmZmVyCQkJCQltX2V4cHI7CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUJCQkJCQkKKwkJCQkJCQkJKiBtcF9leHByVGV4dE5vZGU7CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUJCQkJCQkKKwkJCQkJCQkJKiBtcF94cGF0aE5vZGU7CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5hbWVkTm9kZU1hcAkJCisJCQkJCQkJCSogbXBfTlNNYXA7CisKKworfTsKKworI2VuZGlmIC8qIERTSUdUUkFOU0ZPUk1YUEFUSF9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy9kc2lnL0RTSUdUcmFuc2Zvcm1YUGF0aEZpbHRlci5jcHAgYi9jL3NyYy9kc2lnL0RTSUdUcmFuc2Zvcm1YUGF0aEZpbHRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I1OTlhMwotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2RzaWcvRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyLmNwcApAQCAtMCwwICsxLDIxNSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyIDo9IENsYXNzIHRoYXQgcGVyZm9ybXMgWFBhdGggRmlsdGVyIAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybXMKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1hQYXRoRmlsdGVyRXhwci5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdTaWduYXR1cmUuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vudi5ocHA+CisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTVhQYXRoRmlsdGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNQ2hhaW4uaHBwPgorCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NTm9kZS5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdC9EZXN0cnVjdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyOjpEU0lHVHJhbnNmb3JtWFBhdGhGaWx0ZXIoY29uc3QgWFNFQ0VudiAqIGVudiwgRE9NTm9kZSAqIG5vZGUpIDoKK0RTSUdUcmFuc2Zvcm0oZW52LCBub2RlKSwKK21fbG9hZGVkKGZhbHNlKSB7CisKKworfQorCisKK0RTSUdUcmFuc2Zvcm1YUGF0aEZpbHRlcjo6RFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyKGNvbnN0IFhTRUNFbnYgKiBlbnYpIDoKK0RTSUdUcmFuc2Zvcm0oZW52KSwKK21fbG9hZGVkKGZhbHNlKSB7CisKK30KKwkgIAorCSAgCitEU0lHVHJhbnNmb3JtWFBhdGhGaWx0ZXI6On5EU0lHVHJhbnNmb3JtWFBhdGhGaWx0ZXIoKSB7CisKKwlleHByVmVjdG9yVHlwZTo6aXRlcmF0b3IgaTsKKworCWZvciAoaSA9IG1fZXhwcnMuYmVnaW4oKTsgaSA8IG1fZXhwcnMuZW5kKCk7ICsraSkgeworCisJCWRlbGV0ZSAoKmkpOworCisJfQorCit9CisKK3RyYW5zZm9ybVR5cGUgRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyOjpnZXRUcmFuc2Zvcm1UeXBlKCkgeworCisJcmV0dXJuIFRSQU5TRk9STV9YUEFUSF9GSUxURVI7CisKK30KKworCit2b2lkIERTSUdUcmFuc2Zvcm1YUGF0aEZpbHRlcjo6YXBwZW5kVHJhbnNmb3JtZXIoVFhGTUNoYWluICogaW5wdXQpIHsKKworCWlmIChtX2xvYWRlZCA9PSBmYWxzZSkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WFBhdGhGaWx0ZXJFcnJvciwKKwkJCSJEU0lHVHJhbnNmb3JtWFBhdGhGaWx0ZXI6OmFwcGVuZFRyYW5zZm9ybSAtIGxvYWQgbm90IHlldCBjYWxsZWQiKTsKKworCX0KKworI2lmZGVmIFhTRUNfTk9fWFBBVEgKKworCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6VW5zdXBwb3J0ZWRGdW5jdGlvbiwKKwkJIlhQYXRoIHRyYW5zZm9ybXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBjb21waWxhdGlvbiBvZiB0aGUgWFNFQyBsaWJyYXJ5Iik7CisKKyNlbHNlCisKKwlUWEZNWFBhdGhGaWx0ZXIgKnhwZjsKKwkvLyBYUGF0aCB0cmFuc2Zvcm0KKwlYU0VDbmV3KHhwZiwgVFhGTVhQYXRoRmlsdGVyKG1wX3R4Zm1Ob2RlLT5nZXRPd25lckRvY3VtZW50KCkpKTsKKwlpbnB1dC0+YXBwZW5kVHhmbSh4cGYpOworCisJLy8gVGhlc2UgY2FuIHRocm93LCBidXQgdGhlIFRYRk1YUGF0aEZpbHRlciBpcyBub3cgb3duZWQgYnkgdGhlIGNoYWluLCBzbyB3aWxsCisJLy8gYmUgY2xlYW5lZCB1cCBkb3duIHRoZSBjYWxsaW5nIHN0YWNrLgorCisJeHBmLT5ldmFsdWF0ZUV4cHJzKCZtX2V4cHJzKTsKKwkKKyNlbmRpZiAvKiBOT19YUEFUSCAqLworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ3JlYXRlIGEgYmxhbmsgdHJhbnNmb3JtCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK0RPTUVsZW1lbnQgKiBEU0lHVHJhbnNmb3JtWFBhdGhGaWx0ZXI6OmNyZWF0ZUJsYW5rVHJhbnNmb3JtKERPTURvY3VtZW50ICogcGFyZW50RG9jKSB7CisKKwlzYWZlQnVmZmVyIHN0cjsKKwljb25zdCBYTUxDaCAqIHByZWZpeDsKKwlET01FbGVtZW50ICpyZXQ7CisJRE9NRG9jdW1lbnQgKmRvYyA9IG1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKTsKKworCXByZWZpeCA9IG1wX2Vudi0+Z2V0RFNJR05TUHJlZml4KCk7CisJCisJLy8gQ3JlYXRlIHRoZSB0cmFuc2Zvcm0gbm9kZQorCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgIlRyYW5zZm9ybSIpOworCXJldCA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSURTSUcsIHN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKwlyZXQtPnNldEF0dHJpYnV0ZU5TKE5VTEwsRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyQWxnb3JpdGhtLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYUEYpOworCQorCW1wX3R4Zm1Ob2RlID0gcmV0OworCisJbV9sb2FkZWQgPSB0cnVlOworCisJcmV0dXJuIHJldDsKKworCit9CisKK0RTSUdYUGF0aEZpbHRlckV4cHIgKiBEU0lHVHJhbnNmb3JtWFBhdGhGaWx0ZXI6OmFwcGVuZEZpbHRlcih4cGF0aEZpbHRlclR5cGUgZmlsdGVyVHlwZSwKKwkJCQkJCQkJCQkJY29uc3QgWE1MQ2ggKiBmaWx0ZXJFeHByKSB7CisKKwlEU0lHWFBhdGhGaWx0ZXJFeHByICogZTsKKworCVhTRUNuZXcoZSwgRFNJR1hQYXRoRmlsdGVyRXhwcihtcF9lbnYpKTsKKworCURPTU5vZGUgKiBlbHQgPSBlLT5zZXRGaWx0ZXIoZmlsdGVyVHlwZSwgZmlsdGVyRXhwcik7CisJbV9leHBycy5wdXNoX2JhY2soZSk7CisKKwltcF90eGZtTm9kZS0+YXBwZW5kQ2hpbGQoZWx0KTsKKwltcF9lbnYtPmRvUHJldHR5UHJpbnQobXBfdHhmbU5vZGUpOworCisJcmV0dXJuIGU7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBMb2FkIGZyb20gWE1MCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIERTSUdUcmFuc2Zvcm1YUGF0aEZpbHRlcjo6bG9hZCh2b2lkKSB7CisKKwlpZiAobXBfdHhmbU5vZGUgPT0gTlVMTCkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WFBhdGhGaWx0ZXJFcnJvciwKKwkJCSJEU0lHVHJhbnNmb3JtWFBhdGhGaWx0ZXI6OmxvYWQgY2FsbGVkIG9uIE5VTEwgbm9kZSIpOworCQkKKwl9CisKKwkvLyBWZXJ5IHNpbXBsZSAtIGdvIHRocm91Z2ggZWFjaCBjaGlsZC4gIElmIGl0J3MgYW4gWFBhdGggY2hpbGQKKwkvLyBDcmVhdGUgdGhlIERTSUdYUGF0aEZpbHRlckV4cHIgb2JqZWN0CisKKwlET01Ob2RlICogbiA9IG1wX3R4Zm1Ob2RlLT5nZXRGaXJzdENoaWxkKCk7CisKKwl3aGlsZSAobiAhPSBOVUxMKSB7CisKKwkJaWYgKG4tPmdldE5vZGVUeXBlKCkgPT0gRE9NTm9kZTo6RUxFTUVOVF9OT0RFICYmCisJCQlzdHJFcXVhbHMoZ2V0WFBGTG9jYWxOYW1lKG4pLCAiWFBhdGgiKSkgeworCisJCQlEU0lHWFBhdGhGaWx0ZXJFeHByICogeHBmOworCQkJWFNFQ25ldyh4cGYsIERTSUdYUGF0aEZpbHRlckV4cHIobXBfZW52LCBuKSk7CisKKwkJCS8vIEFkZCBpdCB0byB0aGUgdmVjdG9yIHByaW9yIHRvIGxvYWQgdG8gZW5zdXJlIGRlbGV0ZWQgaWYKKwkJCS8vIGFueXRoaW5nIHRocm93cyBhbiBleGNlcHRpb24KKworCQkJbV9leHBycy5wdXNoX2JhY2soeHBmKTsKKworCQkJeHBmLT5sb2FkKCk7CisKKwkJfQorCisJCW4gPSBuLT5nZXROZXh0U2libGluZygpOworCisJfQorCisJbV9sb2FkZWQgPSB0cnVlOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgUmV0cmlldmUgZXhwcmVzc2lvbiBpbmZvcm1hdGlvbgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordW5zaWduZWQgaW50IERTSUdUcmFuc2Zvcm1YUGF0aEZpbHRlcjo6Z2V0RXhwck51bSh2b2lkKSB7CisKKwlyZXR1cm4gKHVuc2lnbmVkIGludCkgbV9leHBycy5zaXplKCk7CisKK30KKworCitEU0lHWFBhdGhGaWx0ZXJFeHByICogRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyOjpleHByKHVuc2lnbmVkIGludCBuKSB7CisKKwlpZiAobiA8IG1fZXhwcnMuc2l6ZSgpKQorCQlyZXR1cm4gbV9leHByc1tuXTsKKworCXJldHVybiBOVUxMOworCit9CmRpZmYgLS1naXQgYS9jL3NyYy9kc2lnL0RTSUdUcmFuc2Zvcm1YUGF0aEZpbHRlci5ocHAgYi9jL3NyYy9kc2lnL0RTSUdUcmFuc2Zvcm1YUGF0aEZpbHRlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNkYTg0MwotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2RzaWcvRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyLmhwcApAQCAtMCwwICsxLDIwOSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyIDo9IENsYXNzIHRoYXQgcGVyZm9ybXMgWFBhdGggRmlsdGVyIAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgRFNJR1RSQU5TRk9STVhQQVRIRklMVEVSX0lOQ0xVREUKKyNkZWZpbmUgRFNJR1RSQU5TRk9STVhQQVRIRklMVEVSX0lOQ0xVREUKKworI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHVHJhbnNmb3JtLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNTYWZlQnVmZmVyLmhwcD4KKworCitYU0VDX0RFQ0xBUkVfWEVSQ0VTX0NMQVNTKERPTU5hbWVkTm9kZU1hcCk7CitYU0VDX0RFQ0xBUkVfWEVSQ0VTX0NMQVNTKERPTU5vZGUpOworCisjaW5jbHVkZSA8dmVjdG9yPgorCitjbGFzcyBEU0lHWFBhdGhGaWx0ZXJFeHByOworCisvKioKKyAqIEBpbmdyb3VwIHB1YnNpZworICovCisKKy8qKgorICogQGJyaWVmIFRyYW5zZm9ybSBob2xkZXIgZm9yIFhQYXRoIEZpbHRlciB0cmFuc2Zvcm1zLgorICoKKyAqIFRoZSBEU0lHVHJhbnNmb3JtWFBhdGggY2xhc3MgaXMgdXNlZCB0byBob2xkIFhQYXRoIFw8VHJhbnNmb3JtXD4gZWxlbWVudHMKKyAqIHdpdGhpbiBhIGRvY3VtZW50LgorICoKKyAqIEBzZWUgVFhGTVhQYXRoCisgKiBAc2VlIERTSUdUcmFuc2Zvcm0KKyAqCisgKi8KKworY2xhc3MgRFNJR19FWFBPUlQgRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyIDogcHVibGljIERTSUdUcmFuc2Zvcm0geworCisKK3B1YmxpYzoKKworCS8qKgorCSAqIFxicmllZiBWZWN0b3IgdXNlZCB0byBwYXNzIHRoZSBhY3R1YWwgZXhwcmVzc2lvbnMgaW50byB0aGUgdHJhbnNmb3JtZXIKKwkgKi8KKworCXR5cGVkZWYgc3RkOjp2ZWN0b3I8RFNJR1hQYXRoRmlsdGVyRXhwciAqPiBleHByVmVjdG9yVHlwZTsKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisgICAgLy9AeworCQorICAgIC8qKgorCSAqIFxicmllZiBDb250cnVjdG9yIHVzZWQgZm9yIGV4aXN0aW5nIFhNTCBzaWduYXR1cmVzLgorCSAqCisJICogVGhlIE5vZGUgc3RydWN0dXJlIGFscmVhZHkgZXhpc3RzLCBzbyByZWFkIHRoZSBub2RlcyBpbi4KKwkgKgorCSAqIEBwYXJhbSBlbnYgVGhlIG9wZXJhdGluZyBlbnZpcm9ubWVudAorCSAqIEBwYXJhbSBub2RlIFRoZSBET00gbm9kZSAod2l0aGluIGRvYykgdGhhdCBpcyB0byBiZSB1c2VkIGFzIHRoZSBiYXNlIG9mIHRoZSBUcmFuc2Zvcm0uCisJICogQHNlZSAjbG9hZAorCSAqLworCisJRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyKGNvbnN0IFhTRUNFbnYgKiBlbnYsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICogbm9kZSk7CisKKyAgICAvKioKKwkgKiBcYnJpZWYgQ29udHJ1Y3RvciB1c2VkIGZvciBuZXcgc2lnbmF0dXJlcy4KKwkgKgorCSAqIFRoZSBOb2RlIHN0cnVjdHVyZSB3aWxsIGhhdmUgdG8gYmUgY3JlYXRlZC4KKwkgKgorCSAqIEBub3RlIERTSUdUcmFuc2Zvcm0gc3RydWN0dXJlcyBzaG91bGQgb25seSBldmVyIGJlIGNyZWF0ZWQgdmlhIGNhbGxzIHRvIGEKKwkgKiBEU0lHVHJhbnNmb3JtTGlzdCBvYmplY3QuCisJICoKKwkgKiBAcGFyYW0gZW52IFRoZSBvcGVyYXRpbmcgZW52aXJvbm1lbnQKKwkgKiBAc2VlIGNyZWF0ZUJsYW5rVHJhbnNmb3JtCisJICovCisKKwlEU0lHVHJhbnNmb3JtWFBhdGhGaWx0ZXIoY29uc3QgWFNFQ0VudiAqIGVudik7CisJCSAgCisJLyoqCisJICogXGJyaWVmIERlc3RydWN0b3IuCisJICoKKwkgKiBEZXN0cm95IHRoZSBEU0lHU2lnbmF0dXJlIGVsZW1lbnRzLgorCSAqCisJICogRG9lcyBub3QgZGVzdHJveSBhbnkgYXNzb2NpYXRlZCBET00gTm9kZXMKKwkgKi8KKwkJICAKKwl2aXJ0dWFsIH5EU0lHVHJhbnNmb3JtWFBhdGhGaWx0ZXIoKTsKKwkKKwkvL0B9CisKKwkvKiogQG5hbWUgSW50ZXJmYWNlIE1ldGhvZHMgKi8KKworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBEZXRlcm1pbmUgdGhlIHRyYW5zZm9ybSB0eXBlLgorCSAqCisJICogVXNlZCB0byBkZXRlcm1pbmUgd2hhdCB0aGUgdHlwZSBvZiB0aGUgdHJhbnNmb3JtIGlzLgorCSAqCisJICovCisKKwl2aXJ0dWFsIHRyYW5zZm9ybVR5cGUgZ2V0VHJhbnNmb3JtVHlwZSgpOworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSB0aGUgWFBhdGggRmlsdGVyIFRyYW5zZm9ybWVyIGNsYXNzLgorCSAqCisJICogQ3JlYXRlIHRoZSB0cmFuc2Zvcm1lciBhc3NvY2lhdGVkIHdpdGggdGhpcyBYUGF0aCB0cmFuc2Zvcm0uCisJICogV2lsbCBzZXQgdGhlIGV4cHJlc3Npb24gYW5kIE5hbWVzcGFjZXMgYXMgYXBwcm9wcmlhdGUKKwkgKgorCSAqIEByZXR1cm5zIFRoZSBUWEZNWFBhdGggdHJhbnNmb3JtZXIgYXNzb2NpYXRlZCB3aXRoIHRoaXMgVHJhbnNmb3JtCisJICovCisKKwl2aXJ0dWFsIHZvaWQgYXBwZW5kVHJhbnNmb3JtZXIoVFhGTUNoYWluICogaW5wdXQpOworCisJLyoqCisJICogXGJyaWVmIENvbnN0cnVjdCBibGFuayBYUGF0aCBUcmFuc2Zvcm0gZWxlbWVudC4KKwkgKgorCSAqIEluc3RydWN0IHRoZSBpbXBsZW1lbnRhdGlvbiB0byBjcmVhdGUgdGhlIHJlcXVpcmVkCisJICogdHJhbnNmb3JtIGFuZCByZXR1cm4gdGhlIG5ld2x5IGNvbnN0cnVjdGVkIERPTU5vZGUgc3RydWN0dXJlCisJICovCisKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogCisJCWNyZWF0ZUJsYW5rVHJhbnNmb3JtKFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIHBhcmVudERvYyk7CisKKwkvKioKKwkgKiBcYnJpZWYgTG9hZCBhIERPTSBzdHJ1Y3R1cmUKKwkgKgorCSAqIExvYWQgdGhlIGV4cHJlc3Npb24gYW5kIE5hbWVzcGFjZXMuCisJICoKKwkgKi8KKworCXZpcnR1YWwgdm9pZCBsb2FkKHZvaWQpOworCisJLy9AfQorCisJLyoqIEBuYW1lIFhQYXRoRmlsdGVyIHNwZWNpZmljIG1ldGhvZHMgKi8KKworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBBcHBlbmQgYSBuZXcgZmlsdGVyIHRvIHRoZSB0cmFuc2Zvcm0KKwkgKgorCSAqIEFwcGVuZHMgdGhlIGluZGljYXRlZCBmaWx0ZXIgKG9mIGdpdmVuIHR5cGUpIHRvIHRoZSBsaXN0IG9mIAorCSAqIGZpbHRlcnMgaW4gdGhlIHRyYW5zZm9ybS4KKwkgKgorCSAqIEBwYXJhbSBmaWx0ZXJUeXBlIFRoZSB0eXBlIG9mIHRoaXMgZmlsdGVyCisJICogQHBhcmFtIGZpbHRlckV4cHIgVGhlIFhQYXRoIGV4cHJlc3Npb24gdG8gdXNlCisJICogQHJldHVybnMgVGhlIGZpbHRlciBleHByZXNzaW9uCisJICovCisKKwlEU0lHWFBhdGhGaWx0ZXJFeHByICogYXBwZW5kRmlsdGVyKHhwYXRoRmlsdGVyVHlwZSBmaWx0ZXJUeXBlLAorCQkJCQkJCQkJCWNvbnN0IFhNTENoICogZmlsdGVyRXhwcik7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0cmlldmUgbnVtYmVyIG9mIGV4cHJlc3Npb25zCisJICoKKwkgKiBBbGxvd3MgY2FsbGVycyB0byBkZXRlcm1pbmUgaG93IG1hbnkgZXhwcmVzc2lvbnMgdGhlcmUgYXJlIGluCisJICogdGhpcyBmaWx0ZXIKKwkgKgorCSAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgZXhwcmVzc2lvbnMKKwkgKi8KKworCXVuc2lnbmVkIGludCBnZXRFeHByTnVtKHZvaWQpOworCisJLyoqCisJICogXGJyaWVmIEdldCBleHByZXNzaW9uLgorCSAqCisJICogQWxsb3dzIHRoZSBjYWxsZXIgdG8gcmV0cmlldmUgdGhlIHNwZWNpZmllZCBleHByZXNzaW9uIGZyb20gdGhlCisJICogWFBhdGggRmlsdGVyIG9iamVjdAorCSAqCisJICogQHBhcmFtIG4gVGhlIGluZGV4IG9mIHRoZSBleHByZXNzaW9uIHRvIHJldHJpZXZlCisJICogQHJldHVybnMgVGhlIGluZGljYXRlZCBleHByZXNzaW9uCisJICovCisKKwlEU0lHWFBhdGhGaWx0ZXJFeHByICogZXhwcih1bnNpZ25lZCBpbnQgbik7CisKKwkvL0B9CisJCitwcml2YXRlOgorCisJRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyKCk7CisJRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyKGNvbnN0IERTSUdUcmFuc2Zvcm1YUGF0aEZpbHRlciAmIHRoZU90aGVyKTsKKworCWJvb2wJCQkJCQltX2xvYWRlZDsKKworCS8vIFRoZSBleHByZXNzaW9ucworCWV4cHJWZWN0b3JUeXBlCQkJCW1fZXhwcnM7CisKKworfTsKKworI2VuZGlmIC8qIERTSUdUUkFOU0ZPUk1YUEFUSEZJTFRFUl9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy9kc2lnL0RTSUdUcmFuc2Zvcm1YU0wuY3BwIGIvYy9zcmMvZHNpZy9EU0lHVHJhbnNmb3JtWFNMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmMyZWUwCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZHNpZy9EU0lHVHJhbnNmb3JtWFNMLmNwcApAQCAtMCwwICsxLDIyNSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogRFNJR1RyYW5zZm9ybVhTTCA6PSBDbGFzcyB0aGF0IEhhbmRsZXMgRFNJRyBYU0xUIFRyYW5zZm9ybXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKy8vIFhTRUMKKworI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHVHJhbnNmb3JtWFNMLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1NpZ25hdHVyZS5ocHA+CisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTVhTTC5ocHA+CisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTUMxNG4uaHBwPgorI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1DaGFpbi5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0V4Y2VwdGlvbi5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vudi5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDRE9NVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisKKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvZnJhbWV3b3JrL01lbUJ1ZkZvcm1hdFRhcmdldC5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFVuaURlZnMuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9KYW5pdG9yLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKK2NsYXNzIFhTRUNEb21Ub1NhZmVCdWZmZXIgeworcHVibGljOgorICAgIFhTRUNEb21Ub1NhZmVCdWZmZXI6OlhTRUNEb21Ub1NhZmVCdWZmZXIoRE9NTm9kZSAqbm9kZSk7CisgICAgdmlydHVhbCB+WFNFQ0RvbVRvU2FmZUJ1ZmZlcigpIHt9CisKKyAgICBvcGVyYXRvciBjb25zdCBzYWZlQnVmZmVyJigpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIG1fYnVmZmVyOworICAgIH0KK3ByaXZhdGU6CisgICAgc2FmZUJ1ZmZlciBtX2J1ZmZlcjsKK307CisKK1hTRUNEb21Ub1NhZmVCdWZmZXI6OlhTRUNEb21Ub1NhZmVCdWZmZXIoRE9NTm9kZSogbm9kZSkKK3sKKyAgICBzdGF0aWMgY29uc3QgWE1MQ2ggX0xTW10gPSB7Y2hMYXRpbl9MLCBjaExhdGluX1MsIGNoTnVsbH07CisgICAgRE9NSW1wbGVtZW50YXRpb25MUyogaW1wbCA9IERPTUltcGxlbWVudGF0aW9uUmVnaXN0cnk6OmdldERPTUltcGxlbWVudGF0aW9uKF9MUyk7CisKKyAgICBNZW1CdWZGb3JtYXRUYXJnZXQqIHRhcmdldCA9IG5ldyBNZW1CdWZGb3JtYXRUYXJnZXQ7CisgICAgSmFuaXRvcjxNZW1CdWZGb3JtYXRUYXJnZXQ+IGpfdGFyZ2V0KHRhcmdldCk7CisKKyNpZiBkZWZpbmVkIChYU0VDX1hFUkNFU19ET01MU1NFUklBTElaRVIpCisgICAgLy8gRE9NIEwzIHZlcnNpb24gYXMgcGVyIFhlcmNlcyAzLjAgQVBJCisgICAgRE9NTFNTZXJpYWxpemVyKiB0aGVTZXJpYWxpemVyID0gaW1wbC0+Y3JlYXRlTFNTZXJpYWxpemVyKCk7CisgICAgSmFuaXRvcjxET01MU1NlcmlhbGl6ZXI+IGpfdGhlU2VyaWFsaXplcih0aGVTZXJpYWxpemVyKTsKKworICAgIERPTUxTT3V0cHV0ICp0aGVPdXRwdXQgPSBpbXBsLT5jcmVhdGVMU091dHB1dCgpOworICAgIEphbml0b3I8RE9NTFNPdXRwdXQ+IGpfdGhlT3V0cHV0KHRoZU91dHB1dCk7CisgICAgdGhlT3V0cHV0LT5zZXRCeXRlU3RyZWFtKHRhcmdldCk7CisjZWxzZQorICAgIERPTVdyaXRlciogdGhlU2VyaWFsaXplciA9IGltcGwtPmNyZWF0ZURPTVdyaXRlcigpOworICAgIEphbml0b3I8RE9NV3JpdGVyPiBqX3RoZVNlcmlhbGl6ZXIodGhlU2VyaWFsaXplcik7CisjZW5kaWYKKworICAgIHRyeQorICAgIHsKKyNpZiBkZWZpbmVkIChYU0VDX1hFUkNFU19ET01MU1NFUklBTElaRVIpCisgICAgICAgIHRoZVNlcmlhbGl6ZXItPndyaXRlKG5vZGUsIHRoZU91dHB1dCk7CisjZWxzZQorICAgICAgICB0aGVTZXJpYWxpemVyLT53cml0ZU5vZGUodGFyZ2V0LCAqbm9kZSk7CisjZW5kaWYKKyAgICAgICAgbV9idWZmZXIuc2JNZW1jcHlJbigwLCB0YXJnZXQtPmdldFJhd0J1ZmZlcigpLCB0YXJnZXQtPmdldExlbigpKTsKKyAgICB9CisgICAgY2F0Y2goY29uc3QgWE1MRXhjZXB0aW9uJikKKyAgICB7CisgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6VW5rbm93bkVycm9yKTsKKyAgICB9CisgICAgY2F0Y2goY29uc3QgRE9NRXhjZXB0aW9uJikKKyAgICB7CisgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6VW5rbm93bkVycm9yKTsKKyAgICB9Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRFNJR1RyYW5zZm9ybVhTTDo6RFNJR1RyYW5zZm9ybVhTTChjb25zdCBYU0VDRW52ICogZW52LCBET01Ob2RlICogbm9kZSkgOgorRFNJR1RyYW5zZm9ybShlbnYsIG5vZGUpLAorbXBfc3R5bGVzaGVldE5vZGUoTlVMTCkge307CisKKworRFNJR1RyYW5zZm9ybVhTTDo6RFNJR1RyYW5zZm9ybVhTTChjb25zdCBYU0VDRW52ICogZW52KSA6CitEU0lHVHJhbnNmb3JtKGVudiksCittcF9zdHlsZXNoZWV0Tm9kZShOVUxMKSB7fTsKKwkJICAKKworRFNJR1RyYW5zZm9ybVhTTDo6fkRTSUdUcmFuc2Zvcm1YU0woKSB7fTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBJbnRlcmZhY2UgTWV0aG9kcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCit0cmFuc2Zvcm1UeXBlIERTSUdUcmFuc2Zvcm1YU0w6OmdldFRyYW5zZm9ybVR5cGUoKSB7CisKKwlyZXR1cm4gVFJBTlNGT1JNX1hTTFQ7CisKK30KKworCit2b2lkIERTSUdUcmFuc2Zvcm1YU0w6OmFwcGVuZFRyYW5zZm9ybWVyKFRYRk1DaGFpbiAqIGlucHV0KSB7CisKKworI2lmZGVmIFhTRUNfTk9fWFNMVAorCisJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpVbnN1cHBvcnRlZEZ1bmN0aW9uLAorCQkiWFNMVCBUcmFuc2Zvcm1zIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBjb21waWxhdGlvbiBvZiB0aGUgbGlicmFyeSIpOworI2Vsc2UKKworCWlmIChtcF9zdHlsZXNoZWV0Tm9kZSA9PSAwKQorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhTTEVycm9yLCAiU3R5bGUgU2hlZXQgbm90IGZvdW5kIGZvciBYU0wgVHJhbnNmb3JtIik7CisKKworCVRYRk1CYXNlICogbmV4dElucHV0OworCisJLy8gWFNMVCBUcmFuc2Zvcm0gLSByZXF1aXJlcyBhIGJ5dGUgc3RyZWFtIGlucHV0CisJCisJaWYgKGlucHV0LT5nZXRMYXN0VHhmbSgpLT5nZXRPdXRwdXRUeXBlKCkgPT0gVFhGTUJhc2U6OkRPTV9OT0RFUykgeworCQkKKwkJLy8gVXNlIGMxNG4gdG8gdHJhbnNsYXRlIHRvIEJZVEVTCisJCQorCQlYU0VDbmV3KG5leHRJbnB1dCwgVFhGTUMxNG4obXBfdHhmbU5vZGUtPmdldE93bmVyRG9jdW1lbnQoKSkpOworCQlpbnB1dC0+YXBwZW5kVHhmbShuZXh0SW5wdXQpOworCX0KKworCVRYRk1YU0wgKiB4OworCQorCS8vIENyZWF0ZSB0aGUgWFNMVCB0cmFuc2Zvcm0KKwlYU0VDbmV3KHgsIFRYRk1YU0wobXBfdHhmbU5vZGUtPmdldE93bmVyRG9jdW1lbnQoKSkpOworCWlucHV0LT5hcHBlbmRUeGZtKHgpOworCQorCS8vIFBhdGNoIHRvIGF2b2lkIGMxNG4gb2Ygc3R5bGVzaGVldAorICAgIFhTRUNEb21Ub1NhZmVCdWZmZXIgc2JTdHlsZVNoZWV0KG1wX3N0eWxlc2hlZXROb2RlKTsKKyAgICB4LT5ldmFsdWF0ZVN0eWxlU2hlZXQoc2JTdHlsZVNoZWV0KTsKKyNlbmRpZiAvKiBOT19YU0xUICovCisKK30KKworCitET01FbGVtZW50ICogRFNJR1RyYW5zZm9ybVhTTDo6Y3JlYXRlQmxhbmtUcmFuc2Zvcm0oRE9NRG9jdW1lbnQgKiBwYXJlbnREb2MpIHsKKworCXNhZmVCdWZmZXIgc3RyOworCWNvbnN0IFhNTENoICogcHJlZml4OworCURPTUVsZW1lbnQgKnJldDsKKwlET01Eb2N1bWVudCAqZG9jID0gbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpOworCisJcHJlZml4ID0gbXBfZW52LT5nZXREU0lHTlNQcmVmaXgoKTsKKwkKKwkvLyBDcmVhdGUgdGhlIHRyYW5zZm9ybSBub2RlCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCAiVHJhbnNmb3JtIik7CisJcmV0ID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRFNJRywgc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCXJldC0+c2V0QXR0cmlidXRlTlMoTlVMTCxEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJBbGdvcml0aG0sIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhTTFQpOworCisJbXBfdHhmbU5vZGUgPSByZXQ7CisJbXBfc3R5bGVzaGVldE5vZGUgPSBOVUxMOworCisJcmV0dXJuIHJldDsKKworfQorCit2b2lkIERTSUdUcmFuc2Zvcm1YU0w6OmxvYWQodm9pZCkgeworCisJLy8gZmluZCB0aGUgc3R5bGUgc2hlZXQKKwltcF9zdHlsZXNoZWV0Tm9kZSA9IG1wX3R4Zm1Ob2RlLT5nZXRGaXJzdENoaWxkKCk7CisJd2hpbGUgKG1wX3N0eWxlc2hlZXROb2RlICE9IDAgJiYgCisJCW1wX3N0eWxlc2hlZXROb2RlLT5nZXROb2RlVHlwZSgpICE9IERPTU5vZGU6OkVMRU1FTlRfTk9ERSAmJiAhc3RyRXF1YWxzKG1wX3N0eWxlc2hlZXROb2RlLT5nZXROb2RlTmFtZSgpLCAieHNsOnN0eWxlc2hlZXQiKSkKKwkJbXBfc3R5bGVzaGVldE5vZGUgPSBtcF9zdHlsZXNoZWV0Tm9kZS0+Z2V0TmV4dFNpYmxpbmcoKTsKKworCWlmIChtcF9zdHlsZXNoZWV0Tm9kZSA9PSAwKQorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhTTEVycm9yLCAiU3R5bGUgU2hlZXQgbm90IGZvdW5kIGZvciBYU0wgVHJhbnNmb3JtIik7CisKKworfQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBYU0xUIFNwZWNpZmljIE1ldGhvZHMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RPTU5vZGUgKiBEU0lHVHJhbnNmb3JtWFNMOjpzZXRTdHlsZXNoZWV0KERPTU5vZGUgKiBzdHlsZXNoZWV0KSB7CisKKwlET01Ob2RlICogcmV0ID0gbXBfc3R5bGVzaGVldE5vZGU7CisKKwlpZiAobXBfc3R5bGVzaGVldE5vZGUpIHsKKwkgICAgaWYgKHN0eWxlc2hlZXQpCisJICAgICAgICBtcF90eGZtTm9kZS0+aW5zZXJ0QmVmb3JlKHN0eWxlc2hlZXQsIG1wX3N0eWxlc2hlZXROb2RlKTsKKwkJbXBfdHhmbU5vZGUtPnJlbW92ZUNoaWxkKG1wX3N0eWxlc2hlZXROb2RlKTsKKwl9CisJZWxzZSBpZiAoc3R5bGVzaGVldCkgeworCSAgICBtcF90eGZtTm9kZS0+YXBwZW5kQ2hpbGQoc3R5bGVzaGVldCk7CisJfQorCisJbXBfc3R5bGVzaGVldE5vZGUgPSBzdHlsZXNoZWV0OworCisJcmV0dXJuIHJldDsKKworfQorCitET01Ob2RlICogRFNJR1RyYW5zZm9ybVhTTDo6Z2V0U3R5bGVzaGVldCh2b2lkKSB7CisKKwlyZXR1cm4gbXBfc3R5bGVzaGVldE5vZGU7CisKK30KZGlmZiAtLWdpdCBhL2Mvc3JjL2RzaWcvRFNJR1RyYW5zZm9ybVhTTC5ocHAgYi9jL3NyYy9kc2lnL0RTSUdUcmFuc2Zvcm1YU0wuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhYjA3YTAKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9kc2lnL0RTSUdUcmFuc2Zvcm1YU0wuaHBwCkBAIC0wLDAgKzEsMTczIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBEU0lHVHJhbnNmb3JtWFNMIDo9IENsYXNzIHRoYXQgcGVyZm9ybXMgWE1MIFN0eWxlc2hlZXQgTGFuZ3VhZ2UgdHJhbnNmb3JtcworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHVHJhbnNmb3JtLmhwcD4KKworLy8gWGVyY2VzCisKKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPgorCisvKioKKyAqIEBpbmdyb3VwIHB1YnNpZworICovCisKKy8qKgorICogQGJyaWVmIFRyYW5zZm9ybSBob2xkZXIgZm9yIFhTTFQgVHJhbnNmb3Jtcy4KKyAqCisgKiBUaGUgRFNJR1RyYW5zZm9ybVhTTCBjbGFzcyBpcyB1c2VkIHRvIGhvbGQgWFNMVCBcPFRyYW5zZm9ybVw+IGVsZW1lbnRzCisgKiB3aXRoaW4gYSBkb2N1bWVudC4KKyAqCisgKgorICogQHNlZSBUWEZNWFNMCisgKiBAc2VlIERTSUdUcmFuc2Zvcm0KKyAqCisgKi8KKworCisKK2NsYXNzIERTSUdfRVhQT1JUIERTSUdUcmFuc2Zvcm1YU0wgOiBwdWJsaWMgRFNJR1RyYW5zZm9ybSB7CisKK3B1YmxpYzoKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisgICAgLy9AeworCQorICAgIC8qKgorCSAqIFxicmllZiBDb250cnVjdG9yIHVzZWQgZm9yIGV4aXN0aW5nIFhNTCBzaWduYXR1cmVzLgorCSAqCisJICogVGhlIE5vZGUgc3RydWN0dXJlIGFscmVhZHkgZXhpc3RzLCBzbyByZWFkIHRoZSBub2RlcyBpbi4KKwkgKgorCSAqIEBwYXJhbSBlbnYgVGhlIG9wZXJhdGluZyBlbnZpcm9ubWVudAorCSAqIEBwYXJhbSBub2RlIFRoZSBET00gbm9kZSAod2l0aGluIGRvYykgdGhhdCBpcyB0byBiZSB1c2VkIGFzIHRoZSBiYXNlIG9mIHRoZSBUcmFuc2Zvcm0uCisJICogQHNlZSAjbG9hZAorCSAqLworCisJRFNJR1RyYW5zZm9ybVhTTChjb25zdCBYU0VDRW52ICogZW52LCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqIG5vZGUpOworCisgICAgLyoqCisJICogXGJyaWVmIENvbnRydWN0b3IgdXNlZCBmb3IgbmV3IHNpZ25hdHVyZXMuCisJICoKKwkgKiBUaGUgTm9kZSBzdHJ1Y3R1cmUgd2lsbCBoYXZlIHRvIGJlIGNyZWF0ZWQuCisJICoKKwkgKiBAcGFyYW0gZW52IFRoZSBvcGVyYXRpbmcgZW52aXJvbm1lbnQKKwkgKiBAc2VlIGNyZWF0ZUJsYW5rVHJhbnNmb3JtCisJICovCisKKwlEU0lHVHJhbnNmb3JtWFNMKGNvbnN0IFhTRUNFbnYgKiBlbnYpOworCQkgIAorCS8qKgorCSAqIFxicmllZiBEZXN0cnVjdG9yLgorCSAqCisJICogRGVzdHJveSB0aGUgRFNJR1NpZ25hdHVyZSBlbGVtZW50cy4KKwkgKgorCSAqIERvZXMgbm90IGRlc3Ryb3kgYW55IGFzc29jaWF0ZWQgRE9NIE5vZGVzCisJICovCisJCSAgCisJdmlydHVhbCB+RFNJR1RyYW5zZm9ybVhTTCgpOworCQorCS8vQH0KKworCS8qKiBAbmFtZSBJbnRlcmZhY2UgTWV0aG9kcyAqLworCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIERldGVybWluZSB0aGUgdHJhbnNmb3JtIHR5cGUuCisJICoKKwkgKiBVc2VkIHRvIGRldGVybWluZSB3aGF0IHRoZSB0eXBlIG9mIHRoZSB0cmFuc2Zvcm0gaXMuCisJICoKKwkgKi8KKworCXZpcnR1YWwgdHJhbnNmb3JtVHlwZSBnZXRUcmFuc2Zvcm1UeXBlKCk7CisKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIHRoZSBYU0xUIHRyYW5zZm9ybWVyIGVsZW1lbnQuCisJICoKKwkgKi8KKworCXZpcnR1YWwgdm9pZCBhcHBlbmRUcmFuc2Zvcm1lcihUWEZNQ2hhaW4gKiBpbnB1dCk7CisKKwkvKioKKwkgKiBcYnJpZWYgQ29uc3RydWN0IGJsYW5rIFhTTFQgVHJhbnNmb3JtIGVsZW1lbnQuCisJICoKKwkgKiBJbnN0cnVjdCB0aGUgaW1wbGVtZW50YXRpb24gdG8gY3JlYXRlIHRoZSByZXF1aXJlZAorCSAqIHRyYW5zZm9ybSBhbmQgcmV0dXJuIHRoZSBuZXdseSBjb25zdHJ1Y3RlZCBET01Ob2RlIHN0cnVjdHVyZQorCSAqLworCisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGNyZWF0ZUJsYW5rVHJhbnNmb3JtKAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBwYXJlbnREb2MpOworCisJLyoqCisJICogXGJyaWVmIExvYWQgYSBET00gc3RydWN0dXJlCisJICoKKwkgKiBGaW5kIHRoZSBzdGFydCBvZiB0aGUgWFNMVCB0cmFuc2Zvcm0gYW5kIGxvYWQuCisJICoKKwkgKi8KKworCXZpcnR1YWwgdm9pZCBsb2FkKHZvaWQpOworCisJLy9AfQorCisJLyoqIEBuYW1lIFhTTFQgU3BlY2lmaWMgTWV0aG9kcyAqLworCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUgRE9NIHRyZWUgbm9kZXMgYmVuZWF0aCBmb3IgdGhlIGFjdHVhbCBUcmFuc2Zvcm0KKwkgKgorCSAqIFRoZSBjYWxsZXIgbmVlZHMgdG8gaGF2ZSBhbHJlYWR5IGNyZWF0ZWQgdGhlIERPTSB0cmVlIHdpdGggdGhlIAorCSAqIFhTTFQgZW1iZWRkZWQuCisJICoKKwkgKiBAcmV0dXJucyBUaGUgb2xkIHRyYW5zZm9ybSBFbGVtZW50IG5vZGUgaWYgaXQgZXhpc3RlZC4KKwkgKiBAcGFyYW0gc3R5bGVzaGVldCBUaGUgbmV3IHN0eWxlc2hlZXQgdG8gaW5zZXJ0IGludG8gdGhlIGRvY3VtZW50CisJICogQG5vdGUgRG9lcyBub3QgZGVsZXRlIHRoZSBvbGQgc3R5bGVzaGVldCBpZiBvbmUgZXhpc3RlZC4gIFRoaXMgaXMgcmV0dXJuZWQKKwkgKiB0byB0aGUgY2FsbGVyIHdobyBpcyBleHBlY3RlZCB0byBkZWxldGUgaXQuCisJICovCisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqIHNldFN0eWxlc2hlZXQoCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICogc3R5bGVzaGVldAorCSk7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBzdHlsZXNoZWV0IG5vZGUuCisJICoKKwkgKiBPYnRhaW4gdGhlIERPTU5vZGUgYXQgdGhlIHRvcCBvZiB0aGUgc3R5bGVzaGVldCB0aGF0IHdpbGwgYmUgdXNlZCBpbiB0aGlzCisJICogdHJhbnNmb3JtLgorCSAqCisJICogQHJldHVybnMgVGhlIHRvcCBzdHlsZXNoZWV0IG5vZGUKKwkgKi8KKworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICogZ2V0U3R5bGVzaGVldCh2b2lkKTsKKworCS8vQH0KKwkKK3ByaXZhdGU6CisKKwlEU0lHVHJhbnNmb3JtWFNMKCk7CisJRFNJR1RyYW5zZm9ybVhTTChjb25zdCBEU0lHVHJhbnNmb3JtWFNMICYgdGhlT3RoZXIpOworCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUgKiBtcF9zdHlsZXNoZWV0Tm9kZTsKKworfTsKZGlmZiAtLWdpdCBhL2Mvc3JjL2RzaWcvRFNJR1hQYXRoRmlsdGVyRXhwci5jcHAgYi9jL3NyYy9kc2lnL0RTSUdYUGF0aEZpbHRlckV4cHIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2YTljYjUKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9kc2lnL0RTSUdYUGF0aEZpbHRlckV4cHIuY3BwCkBAIC0wLDAgKzEsMzMwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBEU0lHWFBhdGhGaWx0ZXJFeHByIDo9IENsYXNzIHRoYXQgaG9sZHMgYW4gWFBhdGggRmlsdGVyIGV4cHJlc3Npb24KKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdYUGF0aEZpbHRlckV4cHIuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHU2lnbmF0dXJlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXhjZXB0aW9uLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRW52LmhwcD4KKworCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NTm9kZS5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NTmFtZWROb2RlTWFwLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MVW5pRGVmcy5ocHA+CisKKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKK1hNTENoIGZpbHRlclN0cltdID0geworCisJY2hMYXRpbl9GLAorCWNoTGF0aW5faSwKKwljaExhdGluX2wsCisJY2hMYXRpbl90LAorCWNoTGF0aW5fZSwKKwljaExhdGluX3IsCisJY2hOdWxsCisKK307CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitEU0lHWFBhdGhGaWx0ZXJFeHByOjpEU0lHWFBhdGhGaWx0ZXJFeHByKGNvbnN0IFhTRUNFbnYgKiBlbnYsIERPTU5vZGUgKiBub2RlKSA6CittcF9lbnYoZW52KSwKK21wX3hwYXRoRmlsdGVyTm9kZShub2RlKSwKK21wX05TTWFwKE5VTEwpLAorbV9sb2FkZWQoZmFsc2UpIHsKKworfQorCitEU0lHWFBhdGhGaWx0ZXJFeHByOjpEU0lHWFBhdGhGaWx0ZXJFeHByKGNvbnN0IFhTRUNFbnYgKiBlbnYpIDoKK21wX2VudihlbnYpLAorbXBfeHBhdGhGaWx0ZXJOb2RlKE5VTEwpLAorbXBfTlNNYXAoTlVMTCksCittX2xvYWRlZChmYWxzZSkgIHsKKworfQorCisKK0RTSUdYUGF0aEZpbHRlckV4cHI6On5EU0lHWFBhdGhGaWx0ZXJFeHByKCkgeworCisJLy8gTm90aGluZyB0byBkbyBhdCB0aGUgbW9tZW50CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBMb2FkIGV4aXN0aW5nIERPTSBzdHJ1Y3R1cmUKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJCit2b2lkIERTSUdYUGF0aEZpbHRlckV4cHI6OmxvYWQodm9pZCkgeworCisJLy8gRmluZCB0aGUgWFBhdGggZXhwcmVzc2lvbgorCisJaWYgKG1wX3hwYXRoRmlsdGVyTm9kZSA9PSBOVUxMIHx8CisJCSFzdHJFcXVhbHMoZ2V0WFBGTG9jYWxOYW1lKG1wX3hwYXRoRmlsdGVyTm9kZSksICJYUGF0aCIpKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZERTSUdDaGlsZE5vdEZvdW5kLAorCQkJIkV4cGVjdGVkIDxYUGF0aD4gYXMgZmlyc3Qgbm9kZSBpbiBEU0lHWFBhdGhGaWx0ZXJFeHByOjpsb2FkIik7CisKKwl9CisKKwkJCisJLy8gQ2hlY2sgZm9yIGF0dHJpYnV0ZXMgLSBpbiBwYXJ0aWN1bGFyIGFueSBuYW1lc3BhY2VzCisKKwltcF9OU01hcCA9IG1wX3hwYXRoRmlsdGVyTm9kZS0+Z2V0QXR0cmlidXRlcygpOworCisJLy8gRmluZCB0aGUgZmlsdGVyIHR5cGUKKwlET01Ob2RlICogYTsKKwlpZiAobXBfTlNNYXAgPT0gTlVMTCB8fAorCQkoKGEgPSBtcF9OU01hcC0+Z2V0TmFtZWRJdGVtKGZpbHRlclN0cikpID09IE5VTEwpKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZERTSUdDaGlsZE5vdEZvdW5kLAorCQkJIkV4cGVjdGVkIEZpbHRlciBhdHRyaWJ1dGUgb2YgPFhQYXRoPiBub2RlIGluIGluIERTSUdYUGF0aEZpbHRlckV4cHI6OmxvYWQiKTsKKworCX0KKworCWNvbnN0IFhNTENoICogZiA9IGEtPmdldE5vZGVWYWx1ZSgpOworCWlmIChzdHJFcXVhbHMoZiwgImludGVyc2VjdCIpKSB7CisJCW1fZmlsdGVyVHlwZSA9IEZJTFRFUl9JTlRFUlNFQ1Q7CisJfQorCWVsc2UgaWYgKHN0ckVxdWFscyhmLCAidW5pb24iKSkgeworCQltX2ZpbHRlclR5cGUgPSBGSUxURVJfVU5JT047CisJfQorCWVsc2UgaWYgKHN0ckVxdWFscyhmLCAic3VidHJhY3QiKSkgeworCQltX2ZpbHRlclR5cGUgPSBGSUxURVJfU1VCVFJBQ1Q7CisJfQorCWVsc2UgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWREU0lHQ2hpbGROb3RGb3VuZCwKKwkJCQkiRFNJR1hQYXRoRmlsdGVyRXhwcjo6bG9hZCBFeHBlY3RlZCBvbiBvZiBpbnRlcnNlY3QsIHVuaW9uIG9yIHN1YnRyYWN0IGFzIGZpbHRlciB0eXBlIik7CisJfQorCisJLy8gRmluZCB0aGUgdGV4dCBub2RlCisJbXBfZXhwclRleHROb2RlID0gZmluZEZpcnN0Q2hpbGRPZlR5cGUobXBfeHBhdGhGaWx0ZXJOb2RlLCBET01Ob2RlOjpURVhUX05PREUpOworCisJaWYgKG1wX2V4cHJUZXh0Tm9kZSA9PSBOVUxMKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWREU0lHQ2hpbGROb3RGb3VuZCwKKwkJCSJFeHBlY3RlZCBUZXh0IE5vZGUgaW4gYmVuZWF0aCA8WFBhdGg+IGluIERTSUdYUGF0aEZpbHRlckV4cHI6OmxvYWQiKTsKKwl9CisKKwkvLyBHYXRoZXIgdGhlIHRleHQgLSBob2xkIGl0IGluIFVURjE2IGZvcm1hdAorCWdhdGhlckNoaWxkcmVuVGV4dChtcF94cGF0aEZpbHRlck5vZGUsIG1fZXhwcik7CisKKwltX2xvYWRlZCA9IHRydWU7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDcmVhdGUgYSBuZXcgZmlsdGVyCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitET01FbGVtZW50ICogRFNJR1hQYXRoRmlsdGVyRXhwcjo6c2V0RmlsdGVyKHhwYXRoRmlsdGVyVHlwZSBmaWx0ZXJUeXBlLAorCQkJCQkJY29uc3QgWE1MQ2ggKiBmaWx0ZXJFeHByKSB7CisKKwlpZiAobV9sb2FkZWQgPT0gdHJ1ZSkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WFBhdGhGaWx0ZXJFcnJvciwKKwkJCSJEU0lHWFBhdGhGaWx0ZXJFeHByOjpzZXRGaWx0ZXIgLSBjYWxsZWQgd2hlbiBhbHJlYWR5IGxvYWRlZCIpOworCisJfQorCisJc2FmZUJ1ZmZlciBzdHI7CisJY29uc3QgWE1MQ2ggKiBwcmVmaXg7CisJRE9NRG9jdW1lbnQgKmRvYyA9IG1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKTsKKwlET01FbGVtZW50ICogeGU7CisKKwkvLyBDcmVhdGUgdGhlIFhQYXRoIGVsZW1lbnQKKwlwcmVmaXggPSBtcF9lbnYtPmdldFhQRk5TUHJlZml4KCk7CisJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCAiWFBhdGgiKTsKKwl4ZSA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhQRiwgc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCW1wX3hwYXRoRmlsdGVyTm9kZSA9IHhlOworCisJLy8gUHV0IGluIGNvcnJlY3QgbmFtZXNwYWNlCisJcHJlZml4ID0gbXBfZW52LT5nZXRYUEZOU1ByZWZpeCgpOworCisJLy8gU2V0IHRoZSBuYW1lc3BhY2UgYXR0cmlidXRlCisJaWYgKHByZWZpeFswXSA9PSAnXDAnKSB7CisJCXN0ci5zYlRyYW5zY29kZUluKCJ4bWxucyIpOworCX0KKwllbHNlIHsKKwkJc3RyLnNiVHJhbnNjb2RlSW4oInhtbG5zOiIpOworCQlzdHIuc2JYTUxDaENhdChwcmVmaXgpOworCX0KKworCXhlLT5zZXRBdHRyaWJ1dGVOUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYTUxOUywgCisJCQkJCQkJc3RyLnJhd1hNTENoQnVmZmVyKCksIAorCQkJCQkJCURTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhQRik7CisKKwkvLyBTZXQgdGhlIGZpbHRlciB0eXBlCisJbV9maWx0ZXJUeXBlID0gZmlsdGVyVHlwZTsKKworCXN3aXRjaCAoZmlsdGVyVHlwZSkgeworCisJY2FzZSBGSUxURVJfSU5URVJTRUNUIDoKKworCQl4ZS0+c2V0QXR0cmlidXRlTlMoTlVMTCxNQUtFX1VOSUNPREVfU1RSSU5HKCJGaWx0ZXIiKSwgTUFLRV9VTklDT0RFX1NUUklORygiaW50ZXJzZWN0IikpOworCQlicmVhazsKKworCWNhc2UgRklMVEVSX1NVQlRSQUNUIDoKKworCQl4ZS0+c2V0QXR0cmlidXRlTlMoTlVMTCxNQUtFX1VOSUNPREVfU1RSSU5HKCJGaWx0ZXIiKSwgTUFLRV9VTklDT0RFX1NUUklORygic3VidHJhY3QiKSk7CisJCWJyZWFrOworCisJY2FzZSBGSUxURVJfVU5JT04gOgorCisJCXhlLT5zZXRBdHRyaWJ1dGVOUyhOVUxMLE1BS0VfVU5JQ09ERV9TVFJJTkcoIkZpbHRlciIpLCBNQUtFX1VOSUNPREVfU1RSSU5HKCJ1bmlvbiIpKTsKKwkJYnJlYWs7CisKKwlkZWZhdWx0IDoKKworCQltcF94cGF0aEZpbHRlck5vZGUtPnJlbGVhc2UoKTsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYUGF0aEZpbHRlckVycm9yLAorCQkJIkRTSUdYUGF0aEZpbHRlckV4cHI6OmFwcGVuZEZpbHRlciAtIFVuZXhwZWN0ZWQgRmlsdGVyIFR5cGUiKTsKKworCX0KKworCS8vIE5vdyBhZGQgdGhlIGFjdHVhbCBmaWx0ZXIKKworCW1wX2V4cHJUZXh0Tm9kZSA9IGRvYy0+Y3JlYXRlVGV4dE5vZGUoZmlsdGVyRXhwcik7CisJbXBfeHBhdGhGaWx0ZXJOb2RlLT5hcHBlbmRDaGlsZChtcF9leHByVGV4dE5vZGUpOworCisJbXBfTlNNYXAgPSBtcF94cGF0aEZpbHRlck5vZGUtPmdldEF0dHJpYnV0ZXMoKTsKKworCW1fZXhwci5zYlhNTENoSW4oZmlsdGVyRXhwcik7CisJbV9sb2FkZWQgPSB0cnVlOworCXJldHVybiB4ZTsKKworfQorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgRmluZCB0aGUgdHlwZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworeHBhdGhGaWx0ZXJUeXBlIERTSUdYUGF0aEZpbHRlckV4cHI6OmdldEZpbHRlclR5cGUodm9pZCkgeworCisJaWYgKG1fbG9hZGVkID09IGZhbHNlKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6TG9hZEVtcHR5WFBhdGhGaWx0ZXIsCisJCQkiRFNJR1hQYXRoRmlsdGVyRXhwcjo6RWxlbWVudCBub2RlIGxvYWRlZCIpOworCX0KKworCXJldHVybiBtX2ZpbHRlclR5cGU7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBTZXQgYW5kIGNsZWFyIG5hbWVzcGFjZXMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgRFNJR1hQYXRoRmlsdGVyRXhwcjo6c2V0TmFtZXNwYWNlKGNvbnN0IFhNTENoICogcHJlZml4LCBjb25zdCBYTUxDaCAqIHZhbHVlKSB7CisKKwlpZiAobXBfeHBhdGhGaWx0ZXJOb2RlID09IE5VTEwpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhQYXRoRmlsdGVyRXJyb3IsCisJCQkiRFNJR1hQYXRoRmlsdGVyRXhwcjo6c2V0TmFtZXNwYWNlIC0gbG9hZCBub3QgY2FsbGVkIik7CisKKwl9CisJCisJc2FmZUJ1ZmZlciBzdHI7CisKKwlzdHIuc2JUcmFuc2NvZGVJbigieG1sbnM6Iik7CisJc3RyLnNiWE1MQ2hDYXQocHJlZml4KTsKKworCURPTUVsZW1lbnQgKng7CisKKwl4ID0gc3RhdGljX2Nhc3QgPERPTUVsZW1lbnQgKj4gKG1wX3hwYXRoRmlsdGVyTm9kZSk7CisKKwl4LT5zZXRBdHRyaWJ1dGVOUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYTUxOUywKKwkJc3RyLnJhd1hNTENoQnVmZmVyKCksCisJCXZhbHVlKTsKKworCW1wX05TTWFwID0gbXBfeHBhdGhGaWx0ZXJOb2RlLT5nZXRBdHRyaWJ1dGVzKCk7CisKKworfQorCit2b2lkIERTSUdYUGF0aEZpbHRlckV4cHI6OmRlbGV0ZU5hbWVzcGFjZShjb25zdCBYTUxDaCAqIHByZWZpeCkgeworCisJaWYgKG1wX3hwYXRoRmlsdGVyTm9kZSA9PSBOVUxMKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYUGF0aEZpbHRlckVycm9yLAorCQkJIkRTSUdYUGF0aEZpbHRlckV4cHI6OmRlbGV0ZU5hbWVzcGFjZSAtIGxvYWQgbm90IGNhbGxlZCIpOworCisJfQorCisJRE9NRWxlbWVudCAqeDsKKworCXggPSBzdGF0aWNfY2FzdCA8RE9NRWxlbWVudCAqPiAobXBfeHBhdGhGaWx0ZXJOb2RlKTsKKworCXgtPnJlbW92ZUF0dHJpYnV0ZU5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhNTE5TLAorCQlwcmVmaXgpOworCit9CisKKworCisJLyoqCisJICogXGJyaWVmIEFkZCBhIG5ldyBuYW1lc3BhY2UgdG8gdGhlIGxpc3QgdG8gYmUgdXNlZAorCSAqCisJICogQWRkIGEgbmV3IG5hbWVzcGFjZSB0byB0aGUgWFBhdGggRWxlbWVudC4KKwkgKgorCSAqIEBwYXJhbSBwcmVmaXggTkNOYW1lIG9mIHRoZSBOYW1lc3BhY2UgdG8gc2V0CisJICogQHBhcmFtIHZhbHVlIFRoZSBzdHJpbmcgd2l0aCB0aGUgVVJJIHRvIHNldAorCSAqLworCisvLwl2b2lkIHNldE5hbWVzcGFjZShjb25zdCBjaGFyICogcHJlZml4LCBjb25zdCBjaGFyICogdmFsdWUpOworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgbGlzdCBvZiBuYW1lc3BhY2VzLgorCSAqCisJICogUmV0dXJucyB0aGUgRE9NTmFtZWROb2RlTWFwIG9mIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBYUGF0aCB0cmFuc2Zvcm0KKwkgKiBub2RlLiAgVGhpcyA8ZW0+c2hvdWxkPC9lbT4gb25seSBjb250YWluIG5hbWVzcGFjZXMuCisJICoKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIE5hbWVkTm9kZU1hcAorCSAqLworCisvLwlET01OYW1lZE5vZGVNYXAgKiBnZXROYW1lc3BhY2VzKHZvaWQpIHsKKy8vCQlyZXR1cm4gbXBfTlNNYXA7CisvLwl9CisKKwkvKioKKwkgKiBcYnJpZWYgRGVsZXRlIGEgbmFtZXNwYWNlIHRvIHRoZSBsaXN0IHRvIGJlIHVzZWQKKwkgKgorCSAqIERlbGV0ZSBhIG5hbWVzcGFjZSBmcm9tIHRoZSBYUGF0aCBFbGVtZW50LgorCSAqCisJICogQHBhcmFtIHByZWZpeCBOQ05hbWUgb2YgdGhlIE5hbWVzcGFjZSB0byBkZWxldGUKKwkgKiBAdGhyb3dzIFhTRUNFeGNlcHRpb24gaWYgdGhlIE5DTmFtZSBkb2VzIG5vdCBleGlzdAorCSAqCisJICovCisKKy8vCXZvaWQgZGVsZXRlTmFtZXNwYWNlKGNvbnN0IGNoYXIgKiBwcmVmaXgpOworCisJLy9AfQorCQpkaWZmIC0tZ2l0IGEvYy9zcmMvZHNpZy9EU0lHWFBhdGhGaWx0ZXJFeHByLmhwcCBiL2Mvc3JjL2RzaWcvRFNJR1hQYXRoRmlsdGVyRXhwci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg4MjdjNQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2RzaWcvRFNJR1hQYXRoRmlsdGVyRXhwci5ocHAKQEAgLTAsMCArMSwyMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIERTSUdYUGF0aEZpbHRlckV4cHIgOj0gQ2xhc3MgdGhhdCBob2xkcyBhbiBYUGF0aCBGaWx0ZXIgZXhwcmVzc2lvbgorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBEU0lHWFBBVEhGSUxURVJFWFBSX0lOQ0xVREUKKyNkZWZpbmUgRFNJR1hQQVRIRklMVEVSRVhQUl9JTkNMVURFCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdDb25zdGFudHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1NhZmVCdWZmZXIuaHBwPgorCisKK1hTRUNfREVDTEFSRV9YRVJDRVNfQ0xBU1MoRE9NTmFtZWROb2RlTWFwKTsKK1hTRUNfREVDTEFSRV9YRVJDRVNfQ0xBU1MoRE9NTm9kZSk7CitYU0VDX0RFQ0xBUkVfWEVSQ0VTX0NMQVNTKERPTUVsZW1lbnQpOworCitjbGFzcyBYU0VDRW52OworCisvKioKKyAqIEBpbmdyb3VwIHB1YnNpZworICovCisKKy8qKgorICogQGJyaWVmIENsYXNzIHVzZWQgdG8gaG9sZCAoYW5kIG1hbmlwdWxhdGUpIGluZGl2aWR1YWwgZXhwcmVzc2lvbnMKKyAqICAgICAgICBpbiBhbiBYUGF0aEZpbHRlciB0cmFuc2Zvcm0KKyAqCisgKiBAc2VlIFRYRk1YUGF0aEZpbHRlcgorICogQHNlZSBEU0lHVHJhbnNmb3JtWHBhdGhGaWx0ZXIKKyAqCisgKi8KKworY2xhc3MgRFNJR19FWFBPUlQgRFNJR1hQYXRoRmlsdGVyRXhwciB7CisKK3B1YmxpYzoKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIENvbnN0cnVjdG9yIHVzZWQgZm9yIGV4aXN0aW5nIFhNTCBzaWduYXR1cmVzCisJICoKKwkgKiBOb2RlIGFscmVhZHkgZXhpc3RzIGFuZCBpcyBwYXJ0IG9mIGFuIGV4aXN0aW5nIFhQYXRoRmlsdGVyIHRyZWUKKwkgKgorCSAqIEBwYXJhbSBlbnYgVGhlIG9wZXJhdGluZyBlbnZpcm9ubWVudAorCSAqIEBwYXJhbSBub2RlIFRoZSBub2RlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHJlYWQgdGhlIGV4cHJlc3Npb24gaW4KKwkgKi8KKworCURTSUdYUGF0aEZpbHRlckV4cHIoY29uc3QgWFNFQ0VudiAqIGVudiwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUgKiBub2RlKTsKKworCS8qKgorCSAqIFxicmllZiBCdWlsZGVyIGNvbnN0cnVjdG9yCisJICoKKwkgKiBVc2VkIHRvIGNyZWF0ZSB0aGUgRE9NIHN0cnVjdHVyZSBhbmQgRFNJR1NpZ25hdHVyZSBlbGVtZW50cworCSAqCisJICogQHBhcmFtIGVudiBUaGUgb3BlcmF0aW5nIEVudmlyb25tZW50CisJICovCisKKwlEU0lHWFBhdGhGaWx0ZXJFeHByKGNvbnN0IFhTRUNFbnYgKiBlbnYpOworCisJLyoqCisJICogXGJyaWVmIERlc3RydWN0b3IuCisJICoKKwkgKiBEZXN0cm95IHRoZSBEU0lHU2lnbmF0dXJlIGVsZW1lbnRzLgorCSAqCisJICogRG9lcyBub3QgZGVzdHJveSBhbnkgYXNzb2NpYXRlZCBET00gTm9kZXMKKwkgKi8KKwkJICAKKwl+RFNJR1hQYXRoRmlsdGVyRXhwcigpOworCQorCS8vQH0KKworCS8qKiBAbmFtZSBTZXQgYW5kIGdldCBJbmZvcm1hdGlvbiAqLworCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFJlYWQgaW4gZXhpc3Rpbmcgc3RydWN0dXJlCisJICoKKwkgKiBSZWFkcyBET00gc3RydWN0dXJlIG9mIHRoZSBYUGF0aCBleHByZXNzaW9uCisJICovCisKKwl2b2lkIGxvYWQodm9pZCk7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBmaWx0ZXIgdHlwZQorCSAqCisJICogUmV0dXJucyB0aGUgdHlwZSBvZiB0aGlzIHBhcnRpY3VsYXIgWFBhdGggZmlsdGVyCisJICoKKwkgKiBAcmV0dXJucyBUaGUgZmlsdGVyIHR5cGUgb2YgdGhpcyBleHByZXNzaW9uCisJICovCisKKwl4cGF0aEZpbHRlclR5cGUgZ2V0RmlsdGVyVHlwZSh2b2lkKTsKKworCS8qKgorCSAqIFxicmllZiBjcmVhdGUgZnJvbSBibGFuaworCSAqCisJICogR2l2ZW4gdGhlIGZpbHRlciB0eXBlIGFuZCBYUGF0aCBleHByZXNzaW9uLCBzZXR1cCB0aGUKKwkgKiBET01Ob2RlcyBhbmQgdmFyaWFibGVzIHRvIGFsbG93IHNpZ25pbmcgYW5kIHZhbGlkYXRpb24KKwkgKgorCSAqIEBwYXJhbSBmaWx0ZXJUeXBlIFR5cGUgb2YgdGhpcyBmaWx0ZXIgdG8gYWRkCisJICogQHBhcmFtIGZpbHRlckV4cHIgVGhlIFhQYXRoIGV4cHJlc3Npb24KKwkgKi8KKworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogc2V0RmlsdGVyKHhwYXRoRmlsdGVyVHlwZSBmaWx0ZXJUeXBlLAorCQkJCQkJY29uc3QgWE1MQ2ggKiBmaWx0ZXJFeHByKTsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIGZpbHRlciBleHByZXNzaW9uCisJICoKKwkgKiBSZXR1cm5zIGFuIFhNTENoIHN0cmluZyBjb250YWluaW5nIHRoZSBmaWx0ZXIgZXhwcmVzc2lvbgorCSAqCisJICogQHJldHVybnMgVGhlIGZpbHRlciBleHByZXNzaW9uCisJICovCisKKwljb25zdCBYTUxDaCAqIGdldEZpbHRlcih2b2lkKSB7cmV0dXJuIG1fZXhwci5yYXdYTUxDaEJ1ZmZlcigpO30KKworCS8qKgorCSAqIFxicmllZiBBZGQgYSBuZXcgbmFtZXNwYWNlIHRvIHRoZSBsaXN0IHRvIGJlIHVzZWQKKwkgKgorCSAqIEFkZCBhIG5ldyBuYW1lc3BhY2UgdG8gdGhlIFhQYXRoIEVsZW1lbnQuCisJICoKKwkgKiBAcGFyYW0gcHJlZml4IE5DTmFtZSBvZiB0aGUgTmFtZXNwYWNlIHRvIHNldAorCSAqIEBwYXJhbSB2YWx1ZSBUaGUgc3RyaW5nIHdpdGggdGhlIFVSSSB0byBzZXQKKwkgKi8KKworCXZvaWQgc2V0TmFtZXNwYWNlKGNvbnN0IFhNTENoICogcHJlZml4LCBjb25zdCBYTUxDaCAqIHZhbHVlKTsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIGxpc3Qgb2YgbmFtZXNwYWNlcy4KKwkgKgorCSAqIFJldHVybnMgdGhlIERPTU5hbWVkTm9kZU1hcCBvZiB0aGUgYXR0cmlidXRlcyBvZiB0aGUgWFBhdGggdHJhbnNmb3JtCisJICogbm9kZS4gIAorCSAqCisJICogQG5vdGUgVGhpcyB3aWxsIGFsc28gY29udGFpbiB0aGUgRmlsdGVyIGF0dHJpYnV0ZQorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBOYW1lZE5vZGVNYXAKKwkgKi8KKworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01OYW1lZE5vZGVNYXAgKiBnZXROYW1lc3BhY2VzKHZvaWQpIHsKKwkJcmV0dXJuIG1wX05TTWFwOworCX0KKworCS8qKgorCSAqIFxicmllZiBEZWxldGUgYSBuYW1lc3BhY2UgdG8gdGhlIGxpc3QgdG8gYmUgdXNlZAorCSAqCisJICogRGVsZXRlIGEgbmFtZXNwYWNlIGZyb20gdGhlIFhQYXRoIEVsZW1lbnQuCisJICoKKwkgKiBAcGFyYW0gcHJlZml4IE5DTmFtZSBvZiB0aGUgTmFtZXNwYWNlIHRvIGRlbGV0ZQorCSAqIEB0aHJvd3MgWFNFQ0V4Y2VwdGlvbiBpZiB0aGUgTkNOYW1lIGRvZXMgbm90IGV4aXN0CisJICoKKwkgKi8KKworCXZvaWQgZGVsZXRlTmFtZXNwYWNlKGNvbnN0IFhNTENoICogcHJlZml4KTsKKworCS8vQH0KKwkKK3ByaXZhdGU6CisKKwkvLyBKdXN0IGxldCB0aGUgVFhGTSByZWFkIGRpcmVjdGx5CisKKwlmcmllbmQgY2xhc3MgVFhGTVhQYXRoRmlsdGVyOworCisJRFNJR1hQYXRoRmlsdGVyRXhwcigpOworCURTSUdYUGF0aEZpbHRlckV4cHIoY29uc3QgRFNJR1hQYXRoRmlsdGVyRXhwciYgdGhlT3RoZXIpOworCisJY29uc3QgWFNFQ0VudgkJCQkqIG1wX2VudjsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZQkJCQkJCQorCQkJCQkJCQkqIG1wX3hwYXRoRmlsdGVyTm9kZTsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZQkJCQkJCQorCQkJCQkJCQkqIG1wX2V4cHJUZXh0Tm9kZTsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTmFtZWROb2RlTWFwCQkJCQorCQkJCQkJCQkqIG1wX05TTWFwOworCXNhZmVCdWZmZXIJCQkJCW1fZXhwcjsKKwl4cGF0aEZpbHRlclR5cGUJCQkJbV9maWx0ZXJUeXBlOworCWJvb2wJCQkJCQltX2xvYWRlZDsKKworCit9OworCisjZW5kaWYgLyogRFNJR1hQQVRIRklMVEVSRVhQUl9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy9kc2lnL0RTSUdYUGF0aEhlcmUuY3BwIGIvYy9zcmMvZHNpZy9EU0lHWFBhdGhIZXJlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTI4YThhCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZHNpZy9EU0lHWFBhdGhIZXJlLmNwcApAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogRFNJR1hQYXRoSGVyZSA6PSBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgImhlcmUoKSIgWFBhdGggZnVuY3Rpb24uCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdYUGF0aEhlcmUuaHBwPgorCisjaWZuZGVmIFhTRUNfTk9fWFBBVEgKKworI2lmIGRlZmluZWQgWFNFQ19YQUxBTl9SRVFTX01FTU9SWU1BTkFHRVIKKy8vIFhhbGFuIDEuOSBhbmQgYWJvdmUKKyAgICBYQUxBTl9VU0lOR19YQUxBTihYYWxhbkNvcHlDb25zdHJ1Y3QpOworI2VuZGlmCisKK0RTSUdYUGF0aEhlcmU6OkRTSUdYUGF0aEhlcmUoKSB7CisKKwlYYWxhbkhlcmVOb2RlID0gTlVMTDsKKworfQorCitEU0lHWFBhdGhIZXJlOjpEU0lHWFBhdGhIZXJlKFhhbGFuTm9kZSAqIGhlcmUpIHsKKworCVhhbGFuSGVyZU5vZGUgPSBoZXJlOworCit9CisKK0RTSUdYUGF0aEhlcmU6On5EU0lHWFBhdGhIZXJlKCkge30KKworLy8gVGhlc2UgbWV0aG9kcyBhcmUgaW5oZXJpdGVkIGZyb20gRnVuY3Rpb24gLi4uCisKK1hPYmplY3RQdHIgRFNJR1hQYXRoSGVyZTo6ZXhlY3V0ZSgKKwkJCVhQYXRoRXhlY3V0aW9uQ29udGV4dCYJZXhlY3V0aW9uQ29udGV4dCwKKwkJCVhhbGFuTm9kZSoJCQkJY29udGV4dCwKKwkJCS8vIGNvbnN0IFhPYmplY3RQdHIJCWFyZzEsCisJCQljb25zdCBMb2NhdG9yKgkJCWxvY2F0b3IpIGNvbnN0IHsKKworCS8vIFNpbXBsZSBmdW5jdGlvbiAtIHNpbXBseSByZXR1cm4gdGhlIFhhbGFuIE5vZGUgd2UgYWxyZWFkeSBoYXZlCisJCisJdHlwZWRlZiBYUGF0aEV4ZWN1dGlvbkNvbnRleHQ6OkJvcnJvd1JldHVybk11dGFibGVOb2RlUmVmTGlzdAlCb3Jyb3dSZXR1cm5NdXRhYmxlTm9kZVJlZkxpc3Q7CisKKwkvLyBUaGlzIGxpc3Qgd2lsbCBob2xkIHRoZSBub2RlcyB3ZSBmaW5kLgorCisJQm9ycm93UmV0dXJuTXV0YWJsZU5vZGVSZWZMaXN0CW5sKGV4ZWN1dGlvbkNvbnRleHQpOworCisJbmwtPmFkZE5vZGVJbkRvY09yZGVyKFhhbGFuSGVyZU5vZGUsIGV4ZWN1dGlvbkNvbnRleHQpOworCisJcmV0dXJuIGV4ZWN1dGlvbkNvbnRleHQuZ2V0WE9iamVjdEZhY3RvcnkoKS5jcmVhdGVOb2RlU2V0KG5sKTsKK30KKworCisKKworI2lmIGRlZmluZWQoWFNFQ19OT19DT1ZBUklBTlRfUkVUVVJOX1RZUEUpCisJRnVuY3Rpb24qCisjZWxzZQorCURTSUdYUGF0aEhlcmUqCisjZW5kaWYKKyNpZiBkZWZpbmVkIChYU0VDX1hBTEFOX1JFUVNfTUVNT1JZTUFOQUdFUikKKwlEU0lHWFBhdGhIZXJlOjpjbG9uZShNZW1vcnlNYW5hZ2VyVHlwZSYgdGhlTWFuYWdlcikKKyNlbHNlCisJRFNJR1hQYXRoSGVyZTo6Y2xvbmUoKQorI2VuZGlmCisJY29uc3QgeworCisjaWYgZGVmaW5lZCAoWFNFQ19YQUxBTl9SRVFTX01FTU9SWU1BTkFHRVIpCisJCXJldHVybiBYYWxhbkNvcHlDb25zdHJ1Y3QodGhlTWFuYWdlciwgKnRoaXMpOworI2Vsc2UKKwkJRFNJR1hQYXRoSGVyZSAqcmV0OworCisJCXJldCA9IG5ldyBEU0lHWFBhdGhIZXJlKCp0aGlzKTsKKwkJcmV0LT5YYWxhbkhlcmVOb2RlID0gWGFsYW5IZXJlTm9kZTsKKwkJcmV0dXJuIHJldDsKKyNlbmRpZgorCX0KKwkJCisJY29uc3QgWGFsYW5ET01TdHJpbmcKKyNpZiBkZWZpbmVkIFhTRUNfWEFMQU5fUkVRU19NRU1PUllNQU5BR0VSCisgICAgLy8gV2UgY2hlYXQgLSB0aGUgbWVtb3J5IG1hbmFnZXIgaGFwcGVuZWQgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUgc3RyaW5nCisJJkRTSUdYUGF0aEhlcmU6OmdldEVycm9yKFhhbGFuRE9NU3RyaW5nJiB0aGVCdWZmZXIpCisjZWxzZQorCURTSUdYUGF0aEhlcmU6OmdldEVycm9yKCkgCisjZW5kaWYKKyAgICBjb25zdCB7CisKKyNpZiBkZWZpbmVkIFhTRUNfWEFMQU5fUkVRU19NRU1PUllNQU5BR0VSCisgICAgICAgIHRoZUJ1ZmZlciA9ICJUaGUgaGVyZSgpIGZ1bmN0aW9uIHRha2VzIG5vIGFyZ3VtZW50cyEiOworCQlyZXR1cm4gdGhlQnVmZmVyOworI2Vsc2UKKwkJcmV0dXJuIFN0YXRpY1N0cmluZ1RvRE9NU3RyaW5nKFhBTEFOX1NUQVRJQ19VQ09ERV9TVFJJTkcoIlRoZSBoZXJlKCkgZnVuY3Rpb24gdGFrZXMgbm8gYXJndW1lbnRzISIpKTsKKyNlbmRpZgorCisJfQorCisKKyNlbmRpZiAvKiBOT19YUEFUSCAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvZHNpZy9EU0lHWFBhdGhIZXJlLmhwcCBiL2Mvc3JjL2RzaWcvRFNJR1hQYXRoSGVyZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmEzYWVhYgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2RzaWcvRFNJR1hQYXRoSGVyZS5ocHAKQEAgLTAsMCArMSwxNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIERTSUdYUGF0aEhlcmUgOj0gSW1wbGVtZW50YXRpb24gb2YgdGhlICJoZXJlKCkiIFhQYXRoIGZ1bmN0aW9uLgorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBEU0lHWFBBVEhIRVJFX0lOQ0xVREUKKyNkZWZpbmUgRFNJR1hQQVRISEVSRV9JTkNMVURFCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisKKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvUGxhdGZvcm1VdGlscy5ocHA+CisKKyNpZm5kZWYgWFNFQ19OT19YQUxBTgorCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyMJcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDI2NykKKyNlbmRpZgorCisjaW5jbHVkZSA8eGFsYW5jL0luY2x1ZGUvUGxhdGZvcm1EZWZpbml0aW9ucy5ocHA+CisjaW5jbHVkZSA8eGFsYW5jL1hhbGFuVHJhbnNmb3JtZXIvWGFsYW5UcmFuc2Zvcm1lci5ocHA+CisjaW5jbHVkZSA8eGFsYW5jL1hQYXRoL1hPYmplY3RGYWN0b3J5LmhwcD4KKyNpbmNsdWRlIDx4YWxhbmMvWGFsYW5ET00vWGFsYW5FbGVtZW50LmhwcD4KKyNpbmNsdWRlIDx4YWxhbmMvWGFsYW5ET00vWGFsYW5Ob2RlLmhwcD4KKyNpbmNsdWRlIDx4YWxhbmMvWGFsYW5ET00vWGFsYW5Eb2N1bWVudC5ocHA+CisjaW5jbHVkZSA8eGFsYW5jL1hQYXRoL0Z1bmN0aW9uLmhwcD4KKyNpbmNsdWRlIDx4YWxhbmMvWFBhdGgvWE9iamVjdFR5cGVDYWxsYmFjay5ocHA+CisjaW5jbHVkZSA8eGFsYW5jL1hQYXRoL011dGFibGVOb2RlUmVmTGlzdC5ocHA+CisjaW5jbHVkZSA8eGFsYW5jL1hQYXRoL05vZGVSZWZMaXN0QmFzZS5ocHA+CisKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorIwlwcmFnbWEgd2FybmluZyhkZWZhdWx0OiA0MjY3KQorI2VuZGlmCisKKy8vIE5hbWVzcGFjZSB1c2FnZQorCitYQUxBTl9VU0lOR19YQUxBTihGdW5jdGlvbik7CitYQUxBTl9VU0lOR19YQUxBTihYYWxhbk5vZGUpOworWEFMQU5fVVNJTkdfWEFMQU4oWFBhdGhFeGVjdXRpb25Db250ZXh0KTsKK1hBTEFOX1VTSU5HX1hBTEFOKFhhbGFuRE9NU3RyaW5nKTsKK1hBTEFOX1VTSU5HX1hBTEFOKFhPYmplY3RQdHIpOworLy9YQUxBTl9VU0lOR19YQUxBTihTdGF0aWNTdHJpbmdUb0RPTVN0cmluZyk7CisKKyNpZiBkZWZpbmVkIFhTRUNfWEFMQU5fUkVRU19NRU1PUllNQU5BR0VSCisvLyBYYWxhbiAxLjkgYW5kIGFib3ZlCisgICAgWEFMQU5fVVNJTkdfWEFMQU4oTWVtb3J5TWFuYWdlclR5cGUpOworI2VuZGlmCisKK1hTRUNfVVNJTkdfWEVSQ0VTKExvY2F0b3IpOworCisjZW5kaWYKKworI2lmbmRlZiBYU0VDX05PX1hQQVRICisKKy8vIElmIHRoZXJlIGlzIG5vIFhQYXRoIHRoZW4gbGV0J3Mgbm90IGV2ZW4gYm90aGVyIHdpdGggdGhpcyBjbGFzcy4KKworY2xhc3MgRFNJR1hQYXRoSGVyZSA6IHB1YmxpYyBGdW5jdGlvbiB7CisKK3ByaXZhdGU6CisKKwlYYWxhbk5vZGUgKiBYYWxhbkhlcmVOb2RlOworCitwdWJsaWM6CisKKwl0eXBlZGVmIEZ1bmN0aW9uCVBhcmVudFR5cGU7CisKKwlEU0lHWFBhdGhIZXJlKCk7CisJRFNJR1hQYXRoSGVyZShYYWxhbk5vZGUgKmhlcmUpOworCisJdmlydHVhbAorCX5EU0lHWFBhdGhIZXJlKCk7CisKKwkvLyBUaGVzZSBtZXRob2RzIGFyZSBpbmhlcml0ZWQgZnJvbSBGdW5jdGlvbiAuLi4KKworCXZpcnR1YWwgWE9iamVjdFB0cgorCWV4ZWN1dGUoCisJCQlYUGF0aEV4ZWN1dGlvbkNvbnRleHQmCWV4ZWN1dGlvbkNvbnRleHQsCisJCQlYYWxhbk5vZGUqCQkJCWNvbnRleHQsCisJCQkvL2NvbnN0IFhPYmplY3RQdHIJCWFyZzEsCisJCQljb25zdCBMb2NhdG9yVHlwZSoJCWxvY2F0b3IpIGNvbnN0OworCisjaWYgIWRlZmluZWQoWEFMQU5fTk9fVVNJTkdfREVDTEFSQVRJT04pCisJdXNpbmcgUGFyZW50VHlwZTo6ZXhlY3V0ZTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChYU0VDX05PX0NPVkFSSUFOVF9SRVRVUk5fVFlQRSkKKwl2aXJ0dWFsIEZ1bmN0aW9uKgorI2Vsc2UKKwl2aXJ0dWFsIERTSUdYUGF0aEhlcmUqCisjZW5kaWYKKyNpZiBkZWZpbmVkIChYU0VDX1hBTEFOX1JFUVNfTUVNT1JZTUFOQUdFUikKKwljbG9uZShNZW1vcnlNYW5hZ2VyVHlwZSYgdGhlTWFuYWdlcikgY29uc3Q7CisjZWxzZQorICAgIGNsb25lKCkgY29uc3Q7CisjZW5kaWYKKworcHJvdGVjdGVkOgorCisJY29uc3QgWGFsYW5ET01TdHJpbmcKKyNpZiBkZWZpbmVkIChYU0VDX1hBTEFOX1JFUVNfTUVNT1JZTUFOQUdFUikKKyAgICAvLyBXZSBjaGVhdCAtIHRoZSBtZW1vcnkgbWFuYWdlciBoYXBwZW5lZCBhdCB0aGUgc2FtZSB0aW1lIGFzIHRoZSBzdHJpbmcKKwkmZ2V0RXJyb3IoWGFsYW5ET01TdHJpbmcmIHRoZUJ1ZmZlcikgY29uc3Q7CisjZWxzZQorICAgIGdldEVycm9yKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKworCS8vIE5vdCBpbXBsZW1lbnRlZC4uLgorCURTSUdYUGF0aEhlcmUmCisJb3BlcmF0b3I9KGNvbnN0IERTSUdYUGF0aEhlcmUmKTsKKworCWJvb2wKKwlvcGVyYXRvcj09KGNvbnN0IERTSUdYUGF0aEhlcmUmKSBjb25zdDsKK307CisKKyNlbmRpZgorCisjZW5kaWYKKworCisKKworCisKKworCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvTlNTL05TU0NyeXB0b0hhc2guY3BwIGIvYy9zcmMvZW5jL05TUy9OU1NDcnlwdG9IYXNoLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzVlOWFmCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZW5jL05TUy9OU1NDcnlwdG9IYXNoLmNwcApAQCAtMCwwICsxLDE2OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIE5TU0NyeXB0b0hhc2ggOj0gTlNTIEltcGxlbWVudGF0aW9uIG9mIE1lc3NhZ2UgZGlnZXN0cworICoKKyAqIEF1dGhvcihzKTogTWlsYW4gVG9taWMKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZW5jL05TUy9OU1NDcnlwdG9IYXNoLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvRXhjZXB0aW9uLmhwcD4KKworI2lmIGRlZmluZWQgKEhBVkVfTlNTKQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdG9yCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOU1NDcnlwdG9IYXNoOjpOU1NDcnlwdG9IYXNoKEhhc2hUeXBlIGFsZykgeworCisgIHN3aXRjaCAoYWxnKSB7CisKKwljYXNlIChYU0VDQ3J5cHRvSGFzaDo6SEFTSF9TSEExKSA6CisJCisJCW1wX21kID0gUEsxMV9DcmVhdGVEaWdlc3RDb250ZXh0KFNFQ19PSURfU0hBMSk7CisJCWJyZWFrOworCisgIGNhc2UgKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTI1NikgOgorCQorCQltcF9tZCA9IFBLMTFfQ3JlYXRlRGlnZXN0Q29udGV4dChTRUNfT0lEX1NIQTI1Nik7CisJCWJyZWFrOworICAKKyAgY2FzZSAoWFNFQ0NyeXB0b0hhc2g6OkhBU0hfU0hBMzg0KSA6CisJCisJCW1wX21kID0gUEsxMV9DcmVhdGVEaWdlc3RDb250ZXh0KFNFQ19PSURfU0hBMzg0KTsKKwkJYnJlYWs7CisgIAorICBjYXNlIChYU0VDQ3J5cHRvSGFzaDo6SEFTSF9TSEE1MTIpIDoKKwkKKwkJbXBfbWQgPSBQSzExX0NyZWF0ZURpZ2VzdENvbnRleHQoU0VDX09JRF9TSEE1MTIpOworCQlicmVhazsKKwkKKyAgY2FzZSAoWFNFQ0NyeXB0b0hhc2g6OkhBU0hfTUQ1KSA6CisJCisJCW1wX21kID0gUEsxMV9DcmVhdGVEaWdlc3RDb250ZXh0KFNFQ19PSURfTUQ1KTsKKwkJYnJlYWs7CisKKwlkZWZhdWx0IDoKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1ERXJyb3IsCisJCQkiTlNTOkhhc2ggLSBVbmtub3duIGFsZ29yaXRobSIpOyAKKworCX0KKworCW1faGFzaFR5cGUgPSBhbGc7CisKKwlTRUNTdGF0dXMgcyA9IFBLMTFfRGlnZXN0QmVnaW4obXBfbWQpOworCisgIGlmIChzICE9IFNFQ1N1Y2Nlc3MpIHsKKworICAgIHRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6TURFcnJvciwKKwkJCSJOU1M6SGFzaCAtIEVycm9yIGluaXRpYWxpemluZyBNZXNzYWdlIERpZ2VzdCIpOyAKKyAgCisgIH0KKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIERlc3RydWN0b3IKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05TU0NyeXB0b0hhc2g6On5OU1NDcnlwdG9IYXNoKCkgeworCisJaWYgKG1wX21kICE9IDApCisJCVBLMTFfRGVzdHJveUNvbnRleHQobXBfbWQsIFBSX1RSVUUpOworCit9CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBSZXNldAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBOU1NDcnlwdG9IYXNoOjpyZXNldCh2b2lkKSB7CisKKwlTRUNTdGF0dXMgcyA9IFBLMTFfRGlnZXN0QmVnaW4obXBfbWQpOworICAKKyAgaWYgKHMgIT0gU0VDU3VjY2VzcykgeworCisgICAgdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpNREVycm9yLAorCQkJIk5TUzpIYXNoIC0gRXJyb3IgaW5pdGlhbGl6aW5nIE1lc3NhZ2UgRGlnZXN0Iik7IAorCisgIH0KKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEhhc2gKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgTlNTQ3J5cHRvSGFzaDo6aGFzaCh1bnNpZ25lZCBjaGFyICogZGF0YSwgCisJCQkJCQkJCSB1bnNpZ25lZCBpbnQgbGVuZ3RoKSB7CisKKyAgU0VDU3RhdHVzIHMgPSBQSzExX0RpZ2VzdE9wKG1wX21kLCBkYXRhLCBsZW5ndGgpOworCisgIGlmIChzICE9IFNFQ1N1Y2Nlc3MpIHsKKworICAgIHRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6TURFcnJvciwKKwkJCSJOU1M6SGFzaCAtIEVycm9yIEhhc2hpbmcgRGF0YSIpOyAKKworICB9CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBGaW5pc2gKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3Vuc2lnbmVkIGludCBOU1NDcnlwdG9IYXNoOjpmaW5pc2godW5zaWduZWQgY2hhciAqIGhhc2gsCisJCQkJCQkJCQkgICB1bnNpZ25lZCBpbnQgbWF4TGVuZ3RoKSB7CisKKyAgdW5zaWduZWQgaW50IHJldExlbiA9IFhTRUNfTUFYX0hBU0hfU0laRTsKKworICBTRUNTdGF0dXMgcyA9IFBLMTFfRGlnZXN0RmluYWwobXBfbWQsIG1fbWRWYWx1ZSwgJnJldExlbiwgWFNFQ19NQVhfSEFTSF9TSVpFKTsKKworICBpZiAocyAhPSBTRUNTdWNjZXNzKSB7CisKKyAgICB0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1ERXJyb3IsCisJCQkiTlNTOkhhc2ggLSBFcnJvciBnZXR0aW5nIGhhc2ggdmFsdWUiKTsgCisKKyAgfQorCisgIG1fbWRMZW4gPSByZXRMZW47CisKKyAgcmV0TGVuID0gKG1heExlbmd0aCA+IG1fbWRMZW4gPyBtX21kTGVuIDogbWF4TGVuZ3RoKTsKKwltZW1jcHkoaGFzaCwgbV9tZFZhbHVlLCByZXRMZW4pOworCisJcmV0dXJuICh1bnNpZ25lZCBpbnQpIHJldExlbjsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdldCBpbmZvcm1hdGlvbgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWFNFQ0NyeXB0b0hhc2g6Okhhc2hUeXBlIE5TU0NyeXB0b0hhc2g6OmdldEhhc2hUeXBlKHZvaWQpIGNvbnN0IHsKKworCXJldHVybiBtX2hhc2hUeXBlOwkJCS8vIFRoaXMgY291bGQgYmUgYW55IGtpbmQgb2YgaGFzaAorCit9CisKKyNlbmRpZiAvKiBIQVZFX05TUyAqLwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2Mvc3JjL2VuYy9OU1MvTlNTQ3J5cHRvSGFzaC5ocHAgYi9jL3NyYy9lbmMvTlNTL05TU0NyeXB0b0hhc2guaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0NjUxZjgKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9lbmMvTlNTL05TU0NyeXB0b0hhc2guaHBwCkBAIC0wLDAgKzEsMTU3IEBACisvKgorICogQ29weXJpZ2h0IDIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogTlNTQ3J5cHRvSGFzaCA6PSBOU1MgSW1wbGVtZW50YXRpb24gb2YgTWVzc2FnZSBkaWdlc3RzCisgKgorICogQXV0aG9yKHMpOiBNaWxhbiBUb21pYworICoKKyAqLworCisjaWZuZGVmIE5TU0NSWVBUT0hBU0hfSU5DTFVERQorI2RlZmluZSBOU1NDUllQVE9IQVNIX0lOQ0xVREUKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvSGFzaC5ocHA+CisKKyNpZiBkZWZpbmVkIChIQVZFX05TUykKKworI2luY2x1ZGUgIm5zcy9wazExZnVuYy5oIgorI2luY2x1ZGUgIm5zcy9uc3MuaCIKKworLyoqCisgKiBAaW5ncm91cCBuc3NjcnlwdG8KKyAqIEB7CisgKi8KKworLyoqCisgKiBcYnJpZWYgTlNTIEltcGxlbWVudGF0aW9uIG9mIEhhc2ggZnVuY3Rpb25zLgorICoKKyAqIFVzZXMgdGhlIE5TUyBmdW5jdGlvbnMgdG8gcGVyZm9ybSBkaWdlc3QgZnVuY3Rpb25zLgorICoKKyAqLworCitjbGFzcyBEU0lHX0VYUE9SVCBOU1NDcnlwdG9IYXNoIDogcHVibGljIFhTRUNDcnlwdG9IYXNoIHsKKworCitwdWJsaWMgOgorCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycy9EZXN0cnVjdG9ycyAqLworCS8vQHsKKwkvKioKKwkgKiBcYnJpZWYgQ29uc3RydWN0IGEgSGFzaCBvYmplY3QKKwkgKgorCSAqIENyZWF0ZXMgYSBOU1MgYmFzZWQgaGFzaCBvYmplY3Qgb2YgdGhlIHJlcXVpcmVkIHR5cGUuCisJICoKKwkgKiBAcGFyYW0gYWxnIFRoZSBhbGdvcml0aG0gdG8gdXNlIGZvciBkaWdlc3Qgb3BlcmF0aW9ucworCSAqLworCisJTlNTQ3J5cHRvSGFzaChYU0VDQ3J5cHRvSGFzaDo6SGFzaFR5cGUgYWxnKTsKKwl2aXJ0dWFsIH5OU1NDcnlwdG9IYXNoKCk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgSE1BQyBGdW5jdGlvbnMgKi8KKwkvL0B7CisJCisJLyoqCisJICpcYnJpZWYKKwkgKgorCSAqIERvZXMgbm90aGluZy4gSWYgdGhlIHJlcXVpcmVkIGZ1bmN0aW9uIGlzIGFuIEhNQUMgZnVuY3Rpb24sCisJICogdGhlbiBOU1NDcnlwdG9IYXNoSE1BQyBzaG91bGQgYmUgdXNlZC4KKwkgKgorCSAqIEBwYXJhbSBrZXkgVGhlIGtleSB0aGUgSE1BQyBmdW5jdGlvbiBzaG91bGQgdXNlLgorCSAqLworCisJdmlydHVhbCB2b2lkIHNldEtleShYU0VDQ3J5cHRvS2V5ICoga2V5KSB7fQorCisJLy9AfQorCisJLyoqIEBuYW1lIERpZ2VzdC9IYXNoIGZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBSZXNldCB0aGUgaGFzaCBmdW5jdGlvbgorCSAqCisJICogUmUtaW5pdGlhbGlzZXMgdGhlIGRpZ2VzdCBzdHJ1Y3R1cmUuCisJICovCisKKwl2aXJ0dWFsIHZvaWQgcmVzZXQodm9pZCk7CisJCisJLyoqCisJICogXGJyaWVmIEhhc2ggc29tZSBkYXRhLgorCSAqCisJICogVGFrZSBsZW5ndGggYnl0ZXMgb2YgZGF0YSBmcm9tIHRoZSBkYXRhIGJ1ZmZlciBhbmQgdXBkYXRlIHRoZSBoYXNoCisJICogdGhhdCBhbHJlYWR5IGV4aXN0cy4gIFRoaXMgZnVuY3Rpb24gbWF5IChhbmQgbm9ybWFsbHkgd2lsbCkgYmUgY2FsbGVkCisJICogbWFueSB0aW1lcyBmb3IgbGFyZ2UgYmxvY2tzIG9mIGRhdGEuCisJICoKKwkgKiBAcGFyYW0gZGF0YSBUaGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8gYmUgaGFzaGVkLgorCSAqIEBwYXJhbSBsZW5ndGggVGhlIG51bWJlciBvZiBieXRlcyB0byBiZSByZWFkIGZyb20gZGF0YQorCSAqLworCisJdmlydHVhbCB2b2lkCQloYXNoKHVuc2lnbmVkIGNoYXIgKiBkYXRhLCAKKwkJCQkJCQkgdW5zaWduZWQgaW50IGxlbmd0aCk7CisKKwkvKioKKwkgKiBcYnJpZWYgRmluaXNoIHVwIGEgRGlnZXN0IG9wZXJhdGlvbiBhbmQgcmVhZCB0aGUgcmVzdWx0LgorCSAqCisJICogVGhpcyBjYWxsIHRlbGxzIHRoZSBDcnlwdG9IYXNoIG9iamVjdCB0aGF0IHRoZSBpbnB1dCBpcyBjb21wbGV0ZSBhbmQKKwkgKiB0byBmaW5hbGlzZSB0aGUgRGlnZXN0LiAgVGhlIG91dHB1dCBvZiB0aGUgZGlnZXN0IGlzIHJlYWQgaW50byB0aGUgCisJICogaGFzaCBidWZmZXIgKGF0IG1vc3QgbWF4TGVuZ3RoIGJ5dGVzKQorCSAqCisJICogQHBhcmFtIGhhc2ggVGhlIGJ1ZmZlciB0aGUgaGFzaCBzaG91bGQgYmUgcmVhZCBpbnRvLgorCSAqIEBwYXJhbSBtYXhMZW5ndGggVGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvIGJlIHJlYWQgaW50byBoYXNoCisJICogQHJldHVybnMgVGhlIG51bWJlciBvZiBieXRlcyBjb3BpZWQgaW50byB0aGUgaGFzaCBidWZmZXIKKwkgKi8KKworCXZpcnR1YWwgdW5zaWduZWQgaW50IGZpbmlzaCh1bnNpZ25lZCBjaGFyICogaGFzaCwKKwkJCQkJCQkJdW5zaWduZWQgaW50IG1heExlbmd0aCk7Ly8gRmluaXNoIGFuZCBnZXQgaGFzaAorCisJLy9AfQorCisJLyoqIEBuYW1lIEluZm9ybWF0aW9uIGZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqXGJyaWVmCisJICoKKwkgKiBEZXRlcm1pbmUgdGhlIGhhc2ggdHlwZSBvZiB0aGlzIG9iamVjdAorCSAqCisJICogQHJldHVybnMgVGhlIGhhc2ggdHlwZQorCSAqLworCisJdmlydHVhbCBIYXNoVHlwZSBnZXRIYXNoVHlwZSh2b2lkKSBjb25zdDsKKworCS8vQH0KKworcHJpdmF0ZToKKworCS8vIE5vdCBpbXBsZW1lbnRlZCBjb25zdHJ1Y3RvcnMKKwlOU1NDcnlwdG9IYXNoKCk7CisKKwl1bnNpZ25lZCBjaGFyCQkJCW1fbWRWYWx1ZVtYU0VDX01BWF9IQVNIX1NJWkVdOwkJLy8gRmluYWwgb3V0cHV0CisJdW5zaWduZWQgaW50CQkJCW1fbWRMZW47CisKKwlIYXNoVHlwZQkgICAgICAgICAgbV9oYXNoVHlwZTsKKworICBQSzExQ29udGV4dCAqICAgICAgIG1wX21kOworCit9OworCisjZW5kaWYgLyogSEFWRV9OU1MgKi8KKyNlbmRpZiAvKiBOU1NDUllQVE9IQVNIU0hBMV9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvTlNTL05TU0NyeXB0b0hhc2hITUFDLmNwcCBiL2Mvc3JjL2VuYy9OU1MvTlNTQ3J5cHRvSGFzaEhNQUMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmY2RlOTMKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9lbmMvTlNTL05TU0NyeXB0b0hhc2hITUFDLmNwcApAQCAtMCwwICsxLDI2OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIE5TU0NyeXB0b0hhc2hITUFDIDo9IE5TUyBJbXBsZW1lbnRhdGlvbiBvZiBITUFDCisgKgorICogQXV0aG9yKHMpOiBNaWxhbiBUb21pYworICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9lbmMvTlNTL05TU0NyeXB0b0hhc2hITUFDLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvRXhjZXB0aW9uLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9OU1MvTlNTQ3J5cHRvS2V5SE1BQy5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDRE9NVXRpbHMuaHBwPgorCisjaWYgZGVmaW5lZCAoSEFWRV9OU1MpCisKKyNpbmNsdWRlIDxtZW1vcnkuaD4KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdHJ1Y3RvcgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTlNTQ3J5cHRvSGFzaEhNQUM6Ok5TU0NyeXB0b0hhc2hITUFDKEhhc2hUeXBlIGFsZykgeworCisgIHN3aXRjaCAoYWxnKSB7CisKKwljYXNlIChYU0VDQ3J5cHRvSGFzaDo6SEFTSF9TSEExKSA6CisJCisJCW1wX21kID0gUEsxMV9DcmVhdGVEaWdlc3RDb250ZXh0KFNFQ19PSURfU0hBMSk7CisJCWJyZWFrOworCisgIGNhc2UgKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTI1NikgOgorCQorCQltcF9tZCA9IFBLMTFfQ3JlYXRlRGlnZXN0Q29udGV4dChTRUNfT0lEX1NIQTI1Nik7CisJCWJyZWFrOworCisgIGNhc2UgKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTM4NCkgOgorCQorCQltcF9tZCA9IFBLMTFfQ3JlYXRlRGlnZXN0Q29udGV4dChTRUNfT0lEX1NIQTM4NCk7CisJCWJyZWFrOworCisgIGNhc2UgKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTUxMikgOgorCQorCQltcF9tZCA9IFBLMTFfQ3JlYXRlRGlnZXN0Q29udGV4dChTRUNfT0lEX1NIQTUxMik7CisJCWJyZWFrOworCisJY2FzZSAoWFNFQ0NyeXB0b0hhc2g6OkhBU0hfTUQ1KSA6CisJCisJCW1wX21kID0gUEsxMV9DcmVhdGVEaWdlc3RDb250ZXh0KFNFQ19PSURfTUQ1KTsKKwkJYnJlYWs7CisKKwlkZWZhdWx0IDoKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1ERXJyb3IsCisJCQkiTlNTOkhhc2ggLSBVbmtub3duIGFsZ29yaXRobSIpOyAKKworCX0KKworCW1faGFzaFR5cGUgID0gYWxnOworCisgIG1fYmxvY2tTaXplID0gWFNFQ19NQVhfSEFTSF9CTE9DS19TSVpFOworCisJU0VDU3RhdHVzIHMgPSBQSzExX0RpZ2VzdEJlZ2luKG1wX21kKTsKKyAgCisgIGlmIChzICE9IFNFQ1N1Y2Nlc3MpIHsKKworICAgIHRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6TURFcnJvciwKKwkJCSJOU1M6SGFzaCAtIEVycm9yIGluaXRpYWxpemluZyBNZXNzYWdlIERpZ2VzdCIpOyAKKworICB9CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBEZXN0cnVjdG9yCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOU1NDcnlwdG9IYXNoSE1BQzo6fk5TU0NyeXB0b0hhc2hITUFDKCkgeworCisJaWYgKG1wX21kICE9IDApCisJCVBLMTFfRGVzdHJveUNvbnRleHQobXBfbWQsIFBSX1RSVUUpOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgUmVzZXQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgTlNTQ3J5cHRvSGFzaEhNQUM6OnJlc2V0KCkgeworCisJU0VDU3RhdHVzIHMgPSBQSzExX0RpZ2VzdEJlZ2luKG1wX21kKTsKKyAgCisgIGlmIChzICE9IFNFQ1N1Y2Nlc3MpIHsKKworICAgIHRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6TURFcnJvciwKKwkJCSJOU1M6SGFzaCAtIEVycm9yIGluaXRpYWxpemluZyBNZXNzYWdlIERpZ2VzdCIpOyAKKworICB9CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBLZXkgbWFuaXB1bGF0aW9uCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIE5TU0NyeXB0b0hhc2hITUFDOjpzZXRLZXkoWFNFQ0NyeXB0b0tleSAqa2V5KSB7CisKKyAgaWYgKGtleS0+Z2V0S2V5VHlwZSgpICE9IFhTRUNDcnlwdG9LZXk6OktFWV9ITUFDKSB7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpNREVycm9yLAorCQkJIk5TUzpIYXNoSE1BQyAtIE5vbiBITUFDIEtleSBwYXNzZWQgdG8gSGFzaEhNQUMiKTsKKworCX0KKworICBtX2tleUxlbiA9ICgoWFNFQ0NyeXB0b0tleUhNQUMgKikga2V5KS0+Z2V0S2V5KG1fa2V5QnVmKTsKKworICBQSzExU2xvdEluZm8gKiBzbG90ID0gUEsxMV9HZXRJbnRlcm5hbEtleVNsb3QoKTsKKworICBpZiAoc2xvdCA9PSAwKSB7CisKKyAgICB0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1ERXJyb3IsCisJCQkiTlNTOkhhc2hITUFDIC0gRmFpbGVkIHRvIGdldCBpbnRlcm5hbCBrZXkgc2xvdCIpOworCisgIH0KKworICBTRUNJdGVtIGtleUl0ZW07CisgIGtleUl0ZW0uZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopIG1fa2V5QnVmLnJhd0J1ZmZlcigpOworICBrZXlJdGVtLmxlbiAgPSBtX2tleUxlbjsKKworICBDS19NRUNIQU5JU01fVFlQRSBobWFjVHlwZTsKKworICBzd2l0Y2ggKG1faGFzaFR5cGUpIHsKKworCWNhc2UgKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTEpIDoKKwkKKwkJaG1hY1R5cGUgPSBDS01fU0hBXzFfSE1BQzsKKworCQlicmVhazsKKworCWNhc2UgKFhTRUNDcnlwdG9IYXNoOjpIQVNIX01ENSkgOgorCisJCWhtYWNUeXBlID0gQ0tNX01ENV9ITUFDOworCisJCWJyZWFrOworCisJZGVmYXVsdCA6CisKKwkJaG1hY1R5cGUgPSAwOworCisJfQorCisgIGlmKGhtYWNUeXBlID09IDApIHsKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1ERXJyb3IsCisJCQkiTlNTOkhhc2ggLSBVbmtub3duIGFsZ29yaXRobSIpOworCisJfQorCisgIFBLMTFTeW1LZXkgKiBzeW1LZXkgPSBQSzExX0ltcG9ydFN5bUtleShzbG90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBobWFjVHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBLMTFfT3JpZ2luVW53cmFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDS0FfU0lHTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmtleUl0ZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworCisgIFNFQ0l0ZW0gbm9QYXJhbXM7CisgIG5vUGFyYW1zLmRhdGEgPSAwOworICBub1BhcmFtcy5sZW4gID0gMDsKKworCW1wX21kID0gUEsxMV9DcmVhdGVDb250ZXh0QnlTeW1LZXkoaG1hY1R5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENLQV9TSUdOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bUtleSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5vUGFyYW1zKTsKKworCWlmKG1wX21kID09IDApIHsKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1ERXJyb3IsCisJCQkiTlNTOkhhc2ggLSBVbmtub3duIGFsZ29yaXRobSIpOworCisJfQorCisgIGlmIChzeW1LZXkpCisgICAgUEsxMV9GcmVlU3ltS2V5KHN5bUtleSk7CisKKyAgaWYgKHNsb3QpCisgICAgUEsxMV9GcmVlU2xvdChzbG90KTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFBlcmZvcm0gaGFzaCBvcGVyYXRpb24KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgTlNTQ3J5cHRvSGFzaEhNQUM6Omhhc2godW5zaWduZWQgY2hhciAqIGRhdGEsCisJCQkJCQkJCSB1bnNpZ25lZCBpbnQgbGVuZ3RoKSB7CisKKyAgaWYgKG1wX21kID09IDApIHsKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1ERXJyb3IsCisJCQkiTlNTOkhhc2hITUFDIC0gaGFzaCBjYWxsZWQgcHJpb3IgdG8gc2V0S2V5Iik7CisKKyAgfQorCisgIFNFQ1N0YXR1cyBzID0gUEsxMV9EaWdlc3RPcChtcF9tZCwgZGF0YSwgbGVuZ3RoKTsKKworICBpZiAocyAhPSBTRUNTdWNjZXNzKSB7CisKKyAgICB0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1ERXJyb3IsCisJCQkiTlNTOkhhc2ggLSBFcnJvciBIYXNoaW5nIERhdGEiKTsKKworICB9CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBGaW5pc2gKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3Vuc2lnbmVkIGludCBOU1NDcnlwdG9IYXNoSE1BQzo6ZmluaXNoKHVuc2lnbmVkIGNoYXIgKiBoYXNoLAorCQkJCQkJCQkJICAgdW5zaWduZWQgaW50IG1heExlbmd0aCkgeworCisgIHVuc2lnbmVkIGludCByZXRMZW4gPSBYU0VDX01BWF9IQVNIX1NJWkU7CisKKyAgU0VDU3RhdHVzIHMgPSBQSzExX0RpZ2VzdEZpbmFsKG1wX21kLCBtX21kVmFsdWUsICZyZXRMZW4sIFhTRUNfTUFYX0hBU0hfU0laRSk7CisKKyAgaWYgKHMgIT0gU0VDU3VjY2VzcykgeworCisgICAgdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpNREVycm9yLAorCQkJIk5TUzpIYXNoIC0gRXJyb3IgZ2V0dGluZyBoYXNoIHZhbHVlIik7IAorCisgIH0KKworICBtX21kTGVuID0gcmV0TGVuOworCisgIHJldExlbiA9IChtYXhMZW5ndGggPiBtX21kTGVuID8gbV9tZExlbiA6IG1heExlbmd0aCk7CisJbWVtY3B5KGhhc2gsIG1fbWRWYWx1ZSwgcmV0TGVuKTsKKworCXJldHVybiAodW5zaWduZWQgaW50KSByZXRMZW47CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBHZXQgaW5mb3JtYXRpb24KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hTRUNDcnlwdG9IYXNoOjpIYXNoVHlwZSBOU1NDcnlwdG9IYXNoSE1BQzo6Z2V0SGFzaFR5cGUodm9pZCkgY29uc3QgeworCisJcmV0dXJuIG1faGFzaFR5cGU7CQkJLy8gVGhpcyBjb3VsZCBiZSBhbnkga2luZCBvZiBoYXNoCisKK30KKworI2VuZGlmIC8qIEhBVkVfTlNTICovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL05TUy9OU1NDcnlwdG9IYXNoSE1BQy5ocHAgYi9jL3NyYy9lbmMvTlNTL05TU0NyeXB0b0hhc2hITUFDLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmFhOGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZW5jL05TUy9OU1NDcnlwdG9IYXNoSE1BQy5ocHAKQEAgLTAsMCArMSwxNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBOU1NDcnlwdG9IYXNoSE1BQyA6PSBOU1MgSW1wbGVtZW50YXRpb24gb2YgSE1BQworICoKKyAqIEF1dGhvcihzKTogTWlsYW4gVG9taWMKKyAqCisgKi8KKworI2lmbmRlZiBOU1NDUllQVE9IQVNISE1BQ19JTkNMVURFCisjZGVmaW5lIE5TU0NSWVBUT0hBU0hITUFDX0lOQ0xVREUKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvSGFzaC5ocHA+CisKKyNpZiBkZWZpbmVkIChIQVZFX05TUykKKworI2luY2x1ZGUgIm5zcy9wazExZnVuYy5oIgorI2luY2x1ZGUgIm5zcy9uc3MuaCIKKworLyoqCisgKiBAaW5ncm91cCBuc3NjcnlwdG8KKyAqIEB7CisgKi8KKworLyoqCisgKiBcYnJpZWYgSW1wbGVtZW50YXRpb24gb2YgSE1BQyBIYXNoIGZ1bmN0aW9ucyBpbiB0aGUgTlNTIHByb3ZpZGVyCisgKgorICogVXNlcyB0aGUgTlNTIGZ1bmN0aW9ucyB0byBpbXBsZW1lbnQgYW4gSE1BQy4KKyAqCisgKi8KKworY2xhc3MgRFNJR19FWFBPUlQgTlNTQ3J5cHRvSGFzaEhNQUMgOiBwdWJsaWMgWFNFQ0NyeXB0b0hhc2ggeworCisKK3B1YmxpYyA6CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBDb25zdHJ1Y3RvcgorCSAqCisJICogQ3JlYXRlIHRoZSBvYmplY3QsIHdpdGggdGhlIGluZGljYXRlZCBhbGdvcml0aG0KKwkgKiAoQ3VycmVudGx5IHN1cHBvcnRzIE1ENSBhbmQgU0hBMSkKKwkgKgorCSAqIEBwYXJhbSBhbGcgRGlnZXN0IGFsZ29yaXRobSB0byB1c2UKKwkgKi8KKwkKKwlOU1NDcnlwdG9IYXNoSE1BQyhYU0VDQ3J5cHRvSGFzaDo6SGFzaFR5cGUgYWxnKTsKKwl2aXJ0dWFsIH5OU1NDcnlwdG9IYXNoSE1BQygpOworCisJLy9AfQorCisJLyoqIEBuYW1lIEhNQUMgRnVuY3Rpb25zICovCisJLy9AeworCQorCS8qKgorCSAqXGJyaWVmIFNldCB0aGUgSE1BQyBrZXkKKwkgKgorCSAqIFNldHMgdGhlIGtleSAtIHdoaWNoIG5lZWRzIHRvIGhhdmUgYSBiYXNlIGNsYXNzIG9mIAorCSAqIE5TU0NyeXB0b0tleUhNQUMuCisJICoKKwkgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdGhlIEhNQUMgZnVuY3Rpb24gc2hvdWxkIHVzZS4KKwkgKi8KKworCXZpcnR1YWwgdm9pZCBzZXRLZXkoWFNFQ0NyeXB0b0tleSAqIGtleSk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgSGFzaCBmdW5jdGlvbnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgUmVzZXQgdGhlIGhhc2ggZnVuY3Rpb24KKwkgKgorCSAqIFJlLWluaXRpYWxpc2VzIHRoZSBkaWdlc3Qgc3RydWN0dXJlLgorCSAqLworCisJdmlydHVhbCB2b2lkIHJlc2V0KHZvaWQpOworCisJLyoqCisJICogXGJyaWVmIEhhc2ggc29tZSBkYXRhLgorCSAqCisJICogVGFrZSBsZW5ndGggYnl0ZXMgb2YgZGF0YSBmcm9tIHRoZSBkYXRhIGJ1ZmZlciBhbmQgdXBkYXRlIHRoZSBoYXNoCisJICogdGhhdCBhbHJlYWR5IGV4aXN0cy4gIFRoaXMgZnVuY3Rpb24gbWF5IChhbmQgbm9ybWFsbHkgd2lsbCkgYmUgY2FsbGVkCisJICogbWFueSB0aW1lcyBmb3IgbGFyZ2UgYmxvY2tzIG9mIGRhdGEuCisJICoKKwkgKiBAcGFyYW0gZGF0YSBUaGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8gYmUgaGFzaGVkLgorCSAqIEBwYXJhbSBsZW5ndGggVGhlIG51bWJlciBvZiBieXRlcyB0byBiZSByZWFkIGZyb20gZGF0YQorCSAqLworCisJdmlydHVhbCB2b2lkCQloYXNoKHVuc2lnbmVkIGNoYXIgKiBkYXRhLCAKKwkJCQkJCQkgdW5zaWduZWQgaW50IGxlbmd0aCk7CisKKyAgLyoqCisJICogXGJyaWVmIEZpbmlzaCB1cCBhIERpZ2VzdCBvcGVyYXRpb24gYW5kIHJlYWQgdGhlIHJlc3VsdC4KKwkgKgorCSAqIFRoaXMgY2FsbCB0ZWxscyB0aGUgQ3J5cHRvSGFzaCBvYmplY3QgdGhhdCB0aGUgaW5wdXQgaXMgY29tcGxldGUgYW5kCisJICogdG8gZmluYWxpc2UgdGhlIERpZ2VzdC4gIFRoZSBvdXRwdXQgb2YgdGhlIGRpZ2VzdCBpcyByZWFkIGludG8gdGhlIAorCSAqIGhhc2ggYnVmZmVyIChhdCBtb3N0IG1heExlbmd0aCBieXRlcykuICBUaGlzIGlzIGVmZmVjdGl2ZWx5IHRoZQorCSAqIHNpZ25hdHVyZSBmb3IgdGhlIGRhdGEgdGhhdCBoYXMgYmVlbiBydW4gdGhyb3VnaCB0aGUgSE1BQyBmdW5jdGlvbi4KKwkgKgorCSAqIEBwYXJhbSBoYXNoIFRoZSBidWZmZXIgdGhlIGhhc2ggc2hvdWxkIGJlIHJlYWQgaW50by4KKwkgKiBAcGFyYW0gbWF4TGVuZ3RoIFRoZSBtYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byBiZSByZWFkIGludG8gaGFzaAorCSAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgYnl0ZXMgY29waWVkIGludG8gdGhlIGhhc2ggYnVmZmVyCisJICovCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCBmaW5pc2godW5zaWduZWQgY2hhciAqIGhhc2gsCisJCQkJCQkJCXVuc2lnbmVkIGludCBtYXhMZW5ndGgpOworCisJLy9AfQorCisJLyoqIEBuYW1lIEluZm9ybWF0aW9uIGZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqXGJyaWVmCisJICoKKwkgKiBEZXRlcm1pbmUgdGhlIGhhc2ggdHlwZSBvZiB0aGlzIG9iamVjdAorCSAqCisJICogQHJldHVybnMgVGhlIGhhc2ggdHlwZQorCSAqLworCisJdmlydHVhbCBIYXNoVHlwZSBnZXRIYXNoVHlwZSh2b2lkKSBjb25zdDsKKworCS8vQH0KKworcHJpdmF0ZToKKworCS8vIE5vdCBpbXBsZW1lbnRlZCBjb25zdHJ1Y3RvcnMKKwlOU1NDcnlwdG9IYXNoSE1BQygpOworCisJdW5zaWduZWQgY2hhcgkJCQltX21kVmFsdWVbWFNFQ19NQVhfSEFTSF9TSVpFXTsJCS8vIEZpbmFsIG91dHB1dAorCXVuc2lnbmVkIGludAkJCQltX21kTGVuOworCisJSGFzaFR5cGUJICAgICAgICAgIG1faGFzaFR5cGU7CisKKyAgUEsxMUNvbnRleHQgKiAgICAgICBtcF9tZDsKKworCXVuc2lnbmVkIGNoYXIJCQkJbV9pcGFkS2V5ZWRbWFNFQ19NQVhfSEFTSF9TSVpFXTsKKwl1bnNpZ25lZCBjaGFyCQkJCW1fb3BhZEtleWVkW1hTRUNfTUFYX0hBU0hfU0laRV07CisKKwl1bnNpZ25lZCBpbnQJCQkJbV9ibG9ja1NpemU7CQkvLyBCbG9jayBzaXplIChieXRlcykgZm9yIHVzZWQgYWxnLgorCisgIHNhZmVCdWZmZXIJCQkgICAgbV9rZXlCdWY7CQkJCQkJLy8gVGhlIGxvYWRlZCBrZXkKKwl1bnNpZ25lZCBpbnQJCSAgICBtX2tleUxlbjsJCQkJCQkvLyBUaGUgbG9hZGVkIGtleSBsZW5ndGgKKworfTsKKworI2VuZGlmIC8qIEhBVkVfTlNTICovCisjZW5kaWYgLyogTlNTQ1JZUFRPSEFTSEhNQUNfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL05TUy9OU1NDcnlwdG9LZXlEU0EuY3BwIGIvYy9zcmMvZW5jL05TUy9OU1NDcnlwdG9LZXlEU0EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlYmNhMmMKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9lbmMvTlNTL05TU0NyeXB0b0tleURTQS5jcHAKQEAgLTAsMCArMSw2MjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBOU1NDcnlwdG9LZXlEU0EgOj0gRFNBIEtleXMKKyAqCisgKiBBdXRob3Iocyk6IE1pbGFuIFRvbWljCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL2VuYy9OU1MvTlNTQ3J5cHRvS2V5RFNBLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9OU1MvTlNTQ3J5cHRvUHJvdmlkZXIuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTQ3J5cHQvWFNDcnlwdENyeXB0b0Jhc2U2NC5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b0V4Y2VwdGlvbi5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9KYW5pdG9yLmhwcD4KKworI2lmIGRlZmluZWQgKEhBVkVfTlNTKQorCitYU0VDX1VTSU5HX1hFUkNFUyhBcnJheUphbml0b3IpOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdG9yCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOU1NDcnlwdG9LZXlEU0E6Ok5TU0NyeXB0b0tleURTQShTRUNLRVlQdWJsaWNLZXkgKiBwdWJrZXksIFNFQ0tFWVByaXZhdGVLZXkJKglwcml2a2V5KSB7CisKKyAgLy8gTk9URSAtIFdlIE9XTiB0aG9zZSBoYW5kbGVzCisJbXBfcHVia2V5ICA9IHB1YmtleTsKKwltcF9wcml2a2V5ID0gcHJpdmtleTsKKworCW1wX1AgPSBOVUxMOworCW1wX1EgPSBOVUxMOworCW1wX0cgPSBOVUxMOworCW1wX1kgPSBOVUxMOworCit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIERlc3RydWN0b3IKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05TU0NyeXB0b0tleURTQTo6fk5TU0NyeXB0b0tleURTQSgpIHsKKworCS8vIENsZWFuIHVwCisKKwlpZiAobXBfcHVia2V5ICE9IDApCisJCVNFQ0tFWV9EZXN0cm95UHVibGljS2V5KG1wX3B1YmtleSk7CisKKyAgaWYgKG1wX3ByaXZrZXkgIT0gMCkKKwkJU0VDS0VZX0Rlc3Ryb3lQcml2YXRlS2V5KG1wX3ByaXZrZXkpOworCisJaWYgKG1wX1AgIT0gTlVMTCkKKwkJIFNFQ0lURU1fRnJlZUl0ZW0obXBfUCwgUFJfVFJVRSk7CisKKwlpZiAobXBfUSAhPSBOVUxMKQorCQlTRUNJVEVNX0ZyZWVJdGVtKG1wX1EsIFBSX1RSVUUpOworCisJaWYgKG1wX0cgIT0gTlVMTCkKKwkJU0VDSVRFTV9GcmVlSXRlbShtcF9HLCBQUl9UUlVFKTsKKworCWlmIChtcF9ZICE9IE5VTEwpCisJCVNFQ0lURU1fRnJlZUl0ZW0obXBfWSwgUFJfVFJVRSk7CisKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgR2V0IGtleSB0eXBlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYU0VDQ3J5cHRvS2V5OjpLZXlUeXBlIE5TU0NyeXB0b0tleURTQTo6Z2V0S2V5VHlwZSgpIGNvbnN0IHsKKworICAvLyBGaW5kIG91dCB3aGF0IHdlIGhhdmUKKwlpZiAobXBfcHVia2V5ID09IE5VTEwpIHsKKworCQlpZiAobXBfcHJpdmtleSAhPSAwKQorCQkJcmV0dXJuIEtFWV9EU0FfUFJJVkFURTsKKwkJCisJCS8vIENoZWNrIGlmIHdlIGhhdmUgcGFyYW1ldGVycyBsb2FkZWQKKwkJaWYgKG1wX1AgPT0gTlVMTCB8fAorCQkJbXBfUSA9PSBOVUxMIHx8CisJCQltcF9HID09IE5VTEwgfHwKKwkJCW1wX1kgPT0gTlVMTCkKKwkJCXJldHVybiBLRVlfTk9ORTsKKwkJZWxzZQorCQkJcmV0dXJuIEtFWV9EU0FfUFVCTElDOworCX0KKworCWlmIChtcF9wcml2a2V5ICE9IDApCisJCXJldHVybiBLRVlfRFNBX1BBSVI7CisKKwkvLyBJZiB3ZSBoYXZlIG1fa2V5IC0gaXQgbXVzdCBiZSBwdWJsaWMKKwlyZXR1cm4gS0VZX0RTQV9QVUJMSUM7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBMb2FkIFAgcGFyYW1ldGVyCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIE5TU0NyeXB0b0tleURTQTo6bG9hZFBCYXNlNjRCaWdOdW1zKGNvbnN0IGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBsZW4pIHsKKworCWlmIChtcF9QICE9IE5VTEwpIHsKKwkJU0VDSVRFTV9GcmVlSXRlbShtcF9QLCBQUl9UUlVFKTsKKwkJbXBfUCA9IE5VTEw7CQkvLyBJbiBjYXNlIHdlIGdldCBhbiBleGNlcHRpb24KKwl9CisKKwltcF9QID0gTlNTQ3J5cHRvUHJvdmlkZXI6OmI2NDJTSShiNjQsIGxlbik7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBMb2FkIFEgcGFyYW1ldGVyCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIE5TU0NyeXB0b0tleURTQTo6bG9hZFFCYXNlNjRCaWdOdW1zKGNvbnN0IGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBsZW4pIHsKKworCWlmIChtcF9RICE9IE5VTEwpIHsKKwkJU0VDSVRFTV9GcmVlSXRlbShtcF9RLCBQUl9UUlVFKTsKKwkJbXBfUSA9IE5VTEw7CQkvLyBJbiBjYXNlIHdlIGdldCBhbiBleGNlcHRpb24KKwl9CisKKwltcF9RID0gTlNTQ3J5cHRvUHJvdmlkZXI6OmI2NDJTSShiNjQsIGxlbik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgTG9hZCBHIHBhcmFtZXRlcgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBOU1NDcnlwdG9LZXlEU0E6OmxvYWRHQmFzZTY0QmlnTnVtcyhjb25zdCBjaGFyICogYjY0LCB1bnNpZ25lZCBpbnQgbGVuKSB7CisKKwlpZiAobXBfRyAhPSBOVUxMKSB7CisJCVNFQ0lURU1fRnJlZUl0ZW0obXBfRywgUFJfVFJVRSk7CisJCW1wX0cgPSBOVUxMOwkJLy8gSW4gY2FzZSB3ZSBnZXQgYW4gZXhjZXB0aW9uCisJfQorCisJbXBfRyA9IE5TU0NyeXB0b1Byb3ZpZGVyOjpiNjQyU0koYjY0LCBsZW4pOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIExvYWQgWSBwYXJhbWV0ZXIKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgTlNTQ3J5cHRvS2V5RFNBOjpsb2FkWUJhc2U2NEJpZ051bXMoY29uc3QgY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbikgeworCisJaWYgKG1wX1kgIT0gTlVMTCkgeworCQlTRUNJVEVNX0ZyZWVJdGVtKG1wX1ksIFBSX1RSVUUpOworCQltcF9ZID0gTlVMTDsJCS8vIEluIGNhc2Ugd2UgZ2V0IGFuIGV4Y2VwdGlvbgorCX0KKworCW1wX1kgPSBOU1NDcnlwdG9Qcm92aWRlcjo6YjY0MlNJKGI2NCwgbGVuKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBMb2FkIFkgcGFyYW1ldGVyCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIE5TU0NyeXB0b0tleURTQTo6bG9hZEpCYXNlNjRCaWdOdW1zKGNvbnN0IGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBsZW4pIHsKKwkvL0RvIG5vdGhpbmcKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBJbXBvcnQga2V5CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIE5TU0NyeXB0b0tleURTQTo6aW1wb3J0S2V5KHZvaWQpIHsKKwkKKwlpZiAobXBfcHVia2V5ICE9IDAgfHwKKwkJbXBfUCA9PSBOVUxMIHx8CisJCW1wX1EgPT0gTlVMTCB8fAorCQltcF9HID09IE5VTEwgfHwgCisJCW1wX1kgPT0gTlVMTCkKKwkJcmV0dXJuOworCisgIFBSQXJlbmFQb29sICogYXJlbmEgPSBQT1JUX05ld0FyZW5hKERFUl9ERUZBVUxUX0NIVU5LU0laRSk7CisKKyAgaWYoYXJlbmEgPT0gTlVMTCkgeworCisgICAgICB0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OkdlbmVyYWxFcnJvciwKKwkJCSAgIk5TUzpEU0EgRXJyb3IgYXR0ZW1wdGluZyBjcmVhdGUgbmV3IGFyZW5hIik7CisKKyAgfQorCisgIG1wX3B1YmtleSA9IChTRUNLRVlQdWJsaWNLZXkqKVBPUlRfQXJlbmFaQWxsb2MoYXJlbmEsIHNpemVvZihTRUNLRVlQdWJsaWNLZXkpKTsKKworICBpZihtcF9wdWJrZXkgPT0gTlVMTCApIHsKKworICAgICAgUE9SVF9GcmVlQXJlbmEoYXJlbmEsIFBSX0ZBTFNFKTsKKworICAgICAgdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpNZW1vcnlFcnJvciwKKwkJCSAgIk5TUzpEU0EgRXJyb3IgYXR0ZW1wdGluZyBjcmVhdGUgbmV3IGFyZW5hIik7CisKKyAgfQorCisgIG1wX3B1YmtleS0+YXJlbmEgPSBhcmVuYTsKKyAgbXBfcHVia2V5LT51LmRzYS5wYXJhbXMuYXJlbmEgPSBhcmVuYTsKKyAgbXBfcHVia2V5LT5rZXlUeXBlID0gZHNhS2V5OworCisgIFNFQ1N0YXR1cyBzID0gU0VDSVRFTV9Db3B5SXRlbShhcmVuYSwgJihtcF9wdWJrZXktPnUuZHNhLnBhcmFtcy5wcmltZSksIG1wX1ApOworCisgIGlmIChzICE9IFNFQ1N1Y2Nlc3MpIHsKKyAgCisgICAgUE9SVF9GcmVlQXJlbmEoYXJlbmEsIFBSX0ZBTFNFKTsKKworICAgIHRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6TWVtb3J5RXJyb3IsCisJCSAgIk5TUzpEU0EgRXJyb3IgYXR0ZW1wdGluZyB0byBpbXBvcnQgUCBrZXkgcGFyYW1ldGVyIik7CisgIAorICB9CisKKyAgcyA9IFNFQ0lURU1fQ29weUl0ZW0oYXJlbmEsICYobXBfcHVia2V5LT51LmRzYS5wYXJhbXMuc3ViUHJpbWUpLCBtcF9RKTsKKworICBpZiAocyAhPSBTRUNTdWNjZXNzKSB7CisKKyAgICBQT1JUX0ZyZWVBcmVuYShhcmVuYSwgUFJfRkFMU0UpOworCisgICAgdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpNZW1vcnlFcnJvciwKKwkJICAiTlNTOkRTQSBFcnJvciBhdHRlbXB0aW5nIHRvIGltcG9ydCBRIGtleSBwYXJhbWV0ZXIiKTsKKyAgCisgIH0KKworICBzID0gU0VDSVRFTV9Db3B5SXRlbShhcmVuYSwgJihtcF9wdWJrZXktPnUuZHNhLnBhcmFtcy5iYXNlKSwgbXBfRyk7CisKKyAgaWYgKHMgIT0gU0VDU3VjY2VzcykgeworCisgICAgUE9SVF9GcmVlQXJlbmEoYXJlbmEsIFBSX0ZBTFNFKTsKKworICAgIHRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6TWVtb3J5RXJyb3IsCisJCSAgIk5TUzpEU0EgRXJyb3IgYXR0ZW1wdGluZyB0byBpbXBvcnQgRyBrZXkgcGFyYW1ldGVyIik7CisKKyAgfQorCisgIHMgPSBTRUNJVEVNX0NvcHlJdGVtKGFyZW5hLCAmKG1wX3B1YmtleS0+dS5kc2EucHVibGljVmFsdWUpLCBtcF9ZKTsKKyAgCisgIGlmIChzICE9IFNFQ1N1Y2Nlc3MpIHsKKworICAgIFBPUlRfRnJlZUFyZW5hKGFyZW5hLCBQUl9GQUxTRSk7CisKKyAgICB0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1lbW9yeUVycm9yLAorCQkgICJOU1M6RFNBIEVycm9yIGF0dGVtcHRpbmcgdG8gaW1wb3J0IFkga2V5IHBhcmFtZXRlciIpOworICAKKyAgfQorCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgVmVyaWZ5IGEgc2lnbmF0dXJlIGVuY29kZWQgYXMgYSBCYXNlNjQgc3RyaW5nCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitib29sIE5TU0NyeXB0b0tleURTQTo6dmVyaWZ5QmFzZTY0U2lnbmF0dXJlKHVuc2lnbmVkIGNoYXIgKiBoYXNoQnVmLCAKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBoYXNoTGVuLAorCQkJCQkJCQkgY2hhciAqIGJhc2U2NFNpZ25hdHVyZSwKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBzaWdMZW4pIHsKKworCS8vIFVzZSB0aGUgY3VycmVudGx5IGxvYWRlZCBrZXkgdG8gdmFsaWRhdGUgdGhlIEJhc2U2NCBlbmNvZGVkIHNpZ25hdHVyZQorCisJaWYgKG1wX3B1YmtleSA9PSAwKSB7CisKKyAgICAgIC8vIFRyeSB0byBpbXBvcnQgZnJvbSB0aGUgcGFyYW1ldGVycworCQkgIGltcG9ydEtleSgpOworCisgICAgICBpZiAobXBfcHVia2V5ID09IDApIHsKKworICAgICAgICB0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OkRTQUVycm9yLAorCQkJCSAgICAgICJOU1M6RFNBIC0gQXR0ZW1wdCB0byB2YWxpZGF0ZSBzaWduYXR1cmUgd2l0aCBlbXB0eSBrZXkiKTsKKworICAgICAgfQorCisJfQorCisJLy8gRGVjb2RlIHRoZSBzaWduYXR1cmUKKwl1bnNpZ25lZCBjaGFyICogcmF3U2lnOworCURXT1JEIHJhd1NpZ0xlbjsKKwlYU0VDbmV3KHJhd1NpZywgQllURSBbc2lnTGVuXSk7CisJQXJyYXlKYW5pdG9yPEJZVEU+IGpfcmF3U2lnKHJhd1NpZyk7CisKKwkvLyBEZWNvZGUgdGhlIHNpZ25hdHVyZQorCVhTQ3J5cHRDcnlwdG9CYXNlNjQgYjY0OworCisJYjY0LmRlY29kZUluaXQoKTsKKwlyYXdTaWdMZW4gPSBiNjQuZGVjb2RlKCh1bnNpZ25lZCBjaGFyICopIGJhc2U2NFNpZ25hdHVyZSwgc2lnTGVuLCByYXdTaWcsIHNpZ0xlbik7CisJcmF3U2lnTGVuICs9IGI2NC5kZWNvZGVGaW5pc2goJnJhd1NpZ1tyYXdTaWdMZW5dLCBzaWdMZW4gLSByYXdTaWdMZW4pOworCQorICBTRUNJdGVtIHNpZ25hdHVyZTsKKyAgc2lnbmF0dXJlLnR5cGUgPSBzaUJ1ZmZlcjsKKyAgc2lnbmF0dXJlLmRhdGEgPSByYXdTaWc7CisgIHNpZ25hdHVyZS5sZW4gPSByYXdTaWdMZW47CisKKyAgU0VDSXRlbSBkYXRhOworICBkYXRhLnR5cGUgPSBzaUJ1ZmZlcjsKKyAgZGF0YS5kYXRhID0gKHVuc2lnbmVkIGNoYXIgKiloYXNoQnVmOworICBkYXRhLmxlbiA9IGhhc2hMZW47CisKKwkvLyBWZXJpZnkgc2lnbmF0dXJlCisJU0VDU3RhdHVzIHMgPSBQSzExX1ZlcmlmeShtcF9wdWJrZXksICZzaWduYXR1cmUsICZkYXRhLCBOVUxMKTsKKworICByZXR1cm4gcyA9PSBTRUNTdWNjZXNzOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU2lnbiBhbmQgZW5jb2RlIHJlc3VsdCBhcyBhIEJhc2U2NCBzdHJpbmcKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3Vuc2lnbmVkIGludCBOU1NDcnlwdG9LZXlEU0E6OnNpZ25CYXNlNjRTaWduYXR1cmUodW5zaWduZWQgY2hhciAqIGhhc2hCdWYsCisJCXVuc2lnbmVkIGludCBoYXNoTGVuLAorCQljaGFyICogYmFzZTY0U2lnbmF0dXJlQnVmLAorCQl1bnNpZ25lZCBpbnQgYmFzZTY0U2lnbmF0dXJlQnVmTGVuKSB7CisKKwkvLyBTaWduIGEgcHJlLWNhbGN1bGF0ZWQgaGFzaCB1c2luZyB0aGlzIGtleQorCisJaWYgKG1wX3ByaXZrZXkgPT0gMCkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6RFNBRXJyb3IsCisJCQkiTlNTOkRTQSAtIEF0dGVtcHQgdG8gc2lnbiBkYXRhIHVzaW5nIGEgcHVibGljIG9yIHVuLWxvYWRlZCBrZXkiKTsKKworICB9CisKKyAgdW5zaWduZWQgaW50IHNpZ25hdHVyZUxlbiA9IFBLMTFfU2lnbmF0dXJlTGVuKG1wX3ByaXZrZXkpOworCisgIHVuc2lnbmVkIGNoYXIgKiByYXdTaWc7CisJWFNFQ25ldyhyYXdTaWcsIEJZVEUgW3NpZ25hdHVyZUxlbl0pOworCUFycmF5SmFuaXRvcjxCWVRFPiBqX3Jhd1NpZyhyYXdTaWcpOworCisgIFNFQ0l0ZW0gc2lnbmF0dXJlOworICBzaWduYXR1cmUudHlwZSA9IHNpQnVmZmVyOworICBzaWduYXR1cmUuZGF0YSA9IHJhd1NpZzsKKyAgc2lnbmF0dXJlLmxlbiA9IHNpZ25hdHVyZUxlbjsKKworICBTRUNJdGVtIGRhdGE7CisgIGRhdGEudHlwZSA9IHNpQnVmZmVyOworICBkYXRhLmRhdGEgPSBoYXNoQnVmOworICBkYXRhLmxlbiA9IGhhc2hMZW47CisKKyAgU0VDU3RhdHVzIHMgPSBQSzExX1NpZ24obXBfcHJpdmtleSwgJnNpZ25hdHVyZSwgJmRhdGEpOworCisgIGlmIChzICE9IFNFQ1N1Y2Nlc3MpIHsKKworICAgIHRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6RFNBRXJyb3IsCisJCQkiTlNTOkRTQSAtIEVycm9yIGR1cmluZyBzaWduaW5nIG9wZXJhdGlvbiIpOworCisgIH0KKworICAvLyBOb3cgZW5jb2RlCisJWFNDcnlwdENyeXB0b0Jhc2U2NCBiNjQ7CisJYjY0LmVuY29kZUluaXQoKTsKKwl1bnNpZ25lZCBpbnQgcmV0ID0gYjY0LmVuY29kZShzaWduYXR1cmUuZGF0YSwgc2lnbmF0dXJlLmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKSBiYXNlNjRTaWduYXR1cmVCdWYsIGJhc2U2NFNpZ25hdHVyZUJ1Zkxlbik7CisJcmV0ICs9IGI2NC5lbmNvZGVGaW5pc2goKHVuc2lnbmVkIGNoYXIgKikgJmJhc2U2NFNpZ25hdHVyZUJ1ZltyZXRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlNjRTaWduYXR1cmVCdWZMZW4gLSByZXQpOworCisgIHJldHVybiByZXQ7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDbG9uZSBrZXkKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hTRUNDcnlwdG9LZXkgKiBOU1NDcnlwdG9LZXlEU0E6OmNsb25lKCkgY29uc3QgeworCisJTlNTQ3J5cHRvS2V5RFNBICogcmV0ID0gTlVMTDsKKworCVhTRUNuZXcocmV0LCBOU1NDcnlwdG9LZXlEU0EobXBfcHVia2V5LCBtcF9wcml2a2V5KSk7CisJCisgIC8vIENsb25lIHB1YmxpYyBrZXkKKwlpZiAobXBfcHVia2V5ICE9IDApIHsKKworCQlyZXQtPm1wX3B1YmtleSA9IFNFQ0tFWV9Db3B5UHVibGljS2V5KG1wX3B1YmtleSk7CisKKyAgICBpZiAocmV0LT5tcF9wdWJrZXkgPT0gMCkgeworCisgICAgICB0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1lbW9yeUVycm9yLAorCQkgICAgIk5TUzpEU0EgRXJyb3IgYXR0ZW1wdGluZyB0byBjbG9uZSAoY29weSkgcHVibGljIGtleSIpOworICAKKyAgICB9CisKKyAgfQorCisgIC8vIENsb25lIHByaXZhdGUga2V5CisgIGlmIChtcF9wcml2a2V5ICE9IDApIHsKKworICAgIHJldC0+bXBfcHJpdmtleSA9IFNFQ0tFWV9Db3B5UHJpdmF0ZUtleShtcF9wcml2a2V5KTsKKworICAgIGlmIChyZXQtPm1wX3ByaXZrZXkgPT0gMCkgeworCisgICAgICB0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1lbW9yeUVycm9yLAorCQkgICAgIk5TUzpEU0EgRXJyb3IgYXR0ZW1wdGluZyB0byBjbG9uZSAoY29weSkgcHJpdmF0ZSBrZXkiKTsKKyAgCisgICAgfQorCisgIH0KKworICAvLyBDbG9uZSBwYXJhbWV0ZXIgUAorICBpZiAobXBfUCAhPSAwKSB7CisgICAgcmV0LT5tcF9QID0gU0VDSVRFTV9EdXBJdGVtKG1wX1ApOworCisgICAgaWYgKHJldC0+bXBfUCA9PSAwKSB7CisKKyAgICAgIHRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6TWVtb3J5RXJyb3IsCisJICAJICAiTlNTOkRTQSBFcnJvciBhdHRlbXB0aW5nIHRvIGNsb25lIChjb3B5KSBQIGtleSBwYXJhbWV0ZXIiKTsKKyAgCisgICAgfQorICB9CisKKyAgLy8gQ2xvbmUgcGFyYW1ldGVyIFEKKyAgaWYgKG1wX1EgIT0gMCkgeworICAgIHJldC0+bXBfUSA9IFNFQ0lURU1fRHVwSXRlbShtcF9RKTsKKworICAgIGlmIChyZXQtPm1wX1EgPT0gMCkgeworCisgICAgICB0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1lbW9yeUVycm9yLAorCQkgICAgIk5TUzpEU0EgRXJyb3IgYXR0ZW1wdGluZyB0byBjbG9uZSAoY29weSkgUSBrZXkgcGFyYW1ldGVyIik7CisgIAorICAgIH0KKyAgfQorCisgIC8vIENsb25lIHBhcmFtZXRlciBHCisgIGlmIChtcF9HICE9IDApIHsKKyAgICByZXQtPm1wX0cgPSBTRUNJVEVNX0R1cEl0ZW0obXBfRyk7CisKKyAgICBpZiAocmV0LT5tcF9HID09IDApIHsKKworICAgICAgdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpNZW1vcnlFcnJvciwKKwkJICAgICJOU1M6RFNBIEVycm9yIGF0dGVtcHRpbmcgdG8gY2xvbmUgKGNvcHkpIEcga2V5IHBhcmFtZXRlciIpOworICAKKyAgICB9CisgIH0KKworICAvLyBDbG9uZSBwYXJhbWV0ZXIgWQorICBpZiAobXBfWSAhPSAwKSB7CisgICAgcmV0LT5tcF9ZID0gU0VDSVRFTV9EdXBJdGVtKG1wX1kpOworCisgICAgaWYgKHJldC0+bXBfWSA9PSAwKSB7CisKKyAgICAgIHRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6TWVtb3J5RXJyb3IsCisJCSAgICAiTlNTOkRTQSBFcnJvciBhdHRlbXB0aW5nIHRvIGNsb25lIChjb3B5KSBZIGtleSBwYXJhbWV0ZXIiKTsKKyAgCisgICAgfQorICB9CisKKwlyZXR1cm4gcmV0OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU29tZSB1dGlsaXR5IGZ1bmN0aW9ucworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBOU1NDcnlwdG9LZXlEU0E6OmxvYWRQYXJhbXNGcm9tS2V5KHZvaWQpIHsKKworCWlmIChtcF9wdWJrZXkgPT0gMCkKKwkJCXJldHVybjsKKworICBtcF9QID0gU0VDSVRFTV9EdXBJdGVtKCYobXBfcHVia2V5LT51LmRzYS5wYXJhbXMucHJpbWUpKTsKKworICBpZiAobXBfUCA9PSAwKSB7CisKKyAgICB0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OkRTQUVycm9yLAorCQkJIk5TUzpEU0EgLSBFcnJvciBkdXJpbmcgZXh0cmFjdGluZyBQIGZyb20gcHVibGljIGtleSIpOworCisgIH0KKworICBtcF9RID0gU0VDSVRFTV9EdXBJdGVtKCYobXBfcHVia2V5LT51LmRzYS5wYXJhbXMuc3ViUHJpbWUpKTsKKworICBpZiAobXBfUSA9PSAwKSB7CisKKyAgICB0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OkRTQUVycm9yLAorCQkJIk5TUzpEU0EgLSBFcnJvciBkdXJpbmcgZXh0cmFjdGluZyBRIGZyb20gcHVibGljIGtleSIpOworCisgIH0KKworICBtcF9HID0gU0VDSVRFTV9EdXBJdGVtKCYobXBfcHVia2V5LT51LmRzYS5wYXJhbXMuYmFzZSkpOworCisgIGlmIChtcF9HID09IDApIHsKKworICAgIHRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6RFNBRXJyb3IsCisJCQkiTlNTOkRTQSAtIEVycm9yIGR1cmluZyBleHRyYWN0aW5nIEcgZnJvbSBwdWJsaWMga2V5Iik7CisKKyAgfQorCisgIG1wX1kgPSBTRUNJVEVNX0R1cEl0ZW0oJihtcF9wdWJrZXktPnUuZHNhLnB1YmxpY1ZhbHVlKSk7CisKKyAgaWYgKG1wX1kgPT0gMCkgeworCisgICAgdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpEU0FFcnJvciwKKwkJCSJOU1M6RFNBIC0gRXJyb3IgZHVyaW5nIGV4dHJhY3RpbmcgWSBmcm9tIHB1YmxpYyBrZXkiKTsKKyAgCisgIH0KKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdldCBQIHBhcmFtZXRlcgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordW5zaWduZWQgaW50IE5TU0NyeXB0b0tleURTQTo6Z2V0UEJhc2U2NEJpZ051bXMoY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbikgeworCisJaWYgKG1wX3B1YmtleSA9PSAwICYmIG1wX1AgPT0gTlVMTCkgeworCisJCXJldHVybiAwOwkvLyBOb3RoaW5nIHdlIGNhbiBkbworCisJfQorCisJaWYgKG1wX1AgPT0gTlVMTCkgeworCisJCWxvYWRQYXJhbXNGcm9tS2V5KCk7CisKKwl9CisKKwl1bnNpZ25lZCBpbnQgYkxlbiA9IDA7CisJdW5zaWduZWQgY2hhciAqIGIgPSBOU1NDcnlwdG9Qcm92aWRlcjo6U0kyYjY0KG1wX1AsIGJMZW4pOworCWlmIChiTGVuID4gbGVuKQorCQliTGVuID0gbGVuOworCW1lbWNweShiNjQsIGIsIGJMZW4pOworCWRlbGV0ZVtdIGI7CisKKwlyZXR1cm4gYkxlbjsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdldCBRIHBhcmFtZXRlcgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordW5zaWduZWQgaW50IE5TU0NyeXB0b0tleURTQTo6Z2V0UUJhc2U2NEJpZ051bXMoY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbikgeworCisJaWYgKG1wX3B1YmtleSA9PSAwICYmIG1wX1EgPT0gTlVMTCkgeworCisJCXJldHVybiAwOwkvLyBOb3RoaW5nIHdlIGNhbiBkbworCisJfQorCisJaWYgKG1wX1EgPT0gTlVMTCkgeworCisJCWxvYWRQYXJhbXNGcm9tS2V5KCk7CisKKwl9CisKKwl1bnNpZ25lZCBpbnQgYkxlbiA9IDA7CisJdW5zaWduZWQgY2hhciAqIGIgPSBOU1NDcnlwdG9Qcm92aWRlcjo6U0kyYjY0KG1wX1EsIGJMZW4pOworCWlmIChiTGVuID4gbGVuKQorCQliTGVuID0gbGVuOworCW1lbWNweShiNjQsIGIsIGJMZW4pOworCWRlbGV0ZVtdIGI7CisKKwlyZXR1cm4gYkxlbjsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdldCBHIHBhcmFtZXRlcgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordW5zaWduZWQgaW50IE5TU0NyeXB0b0tleURTQTo6Z2V0R0Jhc2U2NEJpZ051bXMoY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbikgeworCisJaWYgKG1wX3B1YmtleSA9PSAwICYmIG1wX0cgPT0gTlVMTCkgeworCisJCXJldHVybiAwOwkvLyBOb3RoaW5nIHdlIGNhbiBkbworCisJfQorCisJaWYgKG1wX0cgPT0gTlVMTCkgeworCisJCWxvYWRQYXJhbXNGcm9tS2V5KCk7CisKKwl9CisKKwl1bnNpZ25lZCBpbnQgYkxlbiA9IDA7CisJdW5zaWduZWQgY2hhciAqIGIgPSBOU1NDcnlwdG9Qcm92aWRlcjo6U0kyYjY0KG1wX0csIGJMZW4pOworCWlmIChiTGVuID4gbGVuKQorCQliTGVuID0gbGVuOworCW1lbWNweShiNjQsIGIsIGJMZW4pOworCWRlbGV0ZVtdIGI7CisKKwlyZXR1cm4gYkxlbjsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdldCBZIHBhcmFtZXRlcgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordW5zaWduZWQgaW50IE5TU0NyeXB0b0tleURTQTo6Z2V0WUJhc2U2NEJpZ051bXMoY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbikgeworCisJaWYgKG1wX3B1YmtleSA9PSAwICYmIG1wX1kgPT0gTlVMTCkgeworCisJCXJldHVybiAwOwkvLyBOb3RoaW5nIHdlIGNhbiBkbworCisJfQorCisJaWYgKG1wX1kgPT0gTlVMTCkgeworCisJCWxvYWRQYXJhbXNGcm9tS2V5KCk7CisKKwl9CisKKwl1bnNpZ25lZCBpbnQgYkxlbiA9IDA7CisJdW5zaWduZWQgY2hhciAqIGIgPSBOU1NDcnlwdG9Qcm92aWRlcjo6U0kyYjY0KG1wX1ksIGJMZW4pOworCWlmIChiTGVuID4gbGVuKQorCQliTGVuID0gbGVuOworCW1lbWNweShiNjQsIGIsIGJMZW4pOworCWRlbGV0ZVtdIGI7CisKKwlyZXR1cm4gYkxlbjsKKworfQorCisjZW5kaWYgLyogSEFWRV9OU1MgKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvTlNTL05TU0NyeXB0b0tleURTQS5ocHAgYi9jL3NyYy9lbmMvTlNTL05TU0NyeXB0b0tleURTQS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjAwNDg1OAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9OU1MvTlNTQ3J5cHRvS2V5RFNBLmhwcApAQCAtMCwwICsxLDI1OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIE5TU0NyeXB0b0tleURTQSA6PSBEU0EgS2V5cworICoKKyAqIEF1dGhvcihzKTogTWlsYW4gVG9taWMKKyAqCisgKi8KKworI2lmbmRlZiBOU1NDUllQVE9LRVlEU0FfSU5DTFVERQorI2RlZmluZSBOU1NDUllQVE9LRVlEU0FfSU5DTFVERQorCisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b0tleURTQS5ocHA+CisKKyNpZiBkZWZpbmVkIChIQVZFX05TUykKKworI2luY2x1ZGUgIm5zcy9wazExZnVuYy5oIgorI2luY2x1ZGUgIm5zcy9rZXloaS5oIgorI2luY2x1ZGUgIm5zcy9uc3MuaCIKKworY2xhc3MgTlNTQ3J5cHRvUHJvdmlkZXI7CisKKy8qKgorICogXGluZ3JvdXAgbnNzY3J5cHRvCisgKiBAeworICovCisKKy8qKgorICogXGJyaWVmIE5TUyBpbXBsZW1lbnRhdGlvbiBjbGFzcyBmb3IgRFNBIGtleXMuCisgKgorICogVGhlIGxpYnJhcnkgdXNlcyBjbGFzc2VzIGRlcml2ZWQgZnJvbSB0aGlzIHRvIHByb2Nlc3MgRFNBIGtleXMuCisgKi8KKworCitjbGFzcyBEU0lHX0VYUE9SVCBOU1NDcnlwdG9LZXlEU0EgOiBwdWJsaWMgWFNFQ0NyeXB0b0tleURTQSB7CisKK3B1YmxpYyA6CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKwkKKwkvKioKKwkgKiBcYnJpZWYgQ3RvciBmb3IgRFNBIGtleXMKKwkgKgorCSAqIFlvdSBjYW4gc2V0IGVpdGhlciBwdWJsaWMsIHByaXZhdGUgb3IgYm90aCBrZXlzCisJICoKKwkgKiBAcGFyYW0gcHVia2V5IEEgaGFuZGxlIHRvIHRoZSBwdWJsaWMga2V5IChvcHRpb25hbCkKKwkgKiBAcGFyYW0gcHJpdmtleSBBIGhhbmRsZSB0byB0aGUgcHJpdmF0ZSBrZXkgKG9wdGlvbmFsKQorCSAqLworCisJTlNTQ3J5cHRvS2V5RFNBKFNFQ0tFWVB1YmxpY0tleSAqIHB1YmtleSA9IE5VTEwsIFNFQ0tFWVByaXZhdGVLZXkgKiBwcml2a2V5ID0gTlVMTCk7CisJCisJdmlydHVhbCB+TlNTQ3J5cHRvS2V5RFNBKCk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgUmVxdWlyZWQgS2V5IEludGVyZmFjZSBtZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFJldHVybiB0aGUgdHlwZSBvZiB0aGlzIGtleS4KKwkgKgorCSAqIEFsbG93cyB0aGUgY2FsbGVyIChhbmQgbGlicmFyeSkgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBpcyBhIAorCSAqIHB1YmxpYyBrZXksIHByaXZhdGUga2V5IG9yIGEga2V5IHBhaXIKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0tleTo6S2V5VHlwZSBnZXRLZXlUeXBlKCkgY29uc3Q7CisKKwkvKioKKwkgKlxicmllZiBSZXR1cm4gdGhlIE5TUyBzdHJpbmcgaWRlbnRpZmllcgorCSAqLworCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldFByb3ZpZGVyTmFtZSgpIGNvbnN0IHtyZXR1cm4gRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyUFJPVk5TUzt9CisJCisJLyoqCisJICogXGJyaWVmIFJlcGxpY2F0ZSBrZXkKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0tleSAqIGNsb25lKCkgY29uc3Q7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgUmVxdWlyZWQgRFNBIG1ldGhvZHMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIGEgc2lnbmF0dXJlCisJICoKKwkgKiBTaWduIHRoZSBidWZmZXIgdXNpbmcgdGhlIGludGVybmFsIHByaXZhdGUga2V5LiAgV2lsbCB0aHJvdyBhIERTQUVycm9yCisJICogaWYgdGhlIGtleSBpcyBub3Qgc2V0LCBvciBpcyBub3QgYSBwcml2YXRlIGtleS4KKwkgKgorCSAqIEBwYXJhbSBoYXNoQnVmIEJ1ZmZlciBjb250YWluaW5nIHRoZSBwcmUtY2FsY3VsYXRlZCAoYmluYXJ5KSBkaWdlc3QKKwkgKiBAcGFyYW0gaGFzaExlbiBOdW1iZXIgb2YgYnl0ZXMgb2YgaGFzaCBpbiB0aGUgaGFzaEJ1ZgorCSAqIEBwYXJhbSBiYXNlNjRTaWduYXR1cmVCdWYgQnVmZmVyIHRvIHBsYWNlIHRoZSBiYXNlNjQgZW5jb2RlZCByZXN1bHQKKwkgKiBpbi4KKwkgKiBAcGFyYW0gYmFzZTY0U2lnbmF0dXJlQnVmTGVuIEltcGxlbWVudGF0aW9ucyBuZWVkIHRvIGVuc3VyZSB0aGV5IGRvCisJICogbm90IHdyaXRlIG1vcmUgYnl0ZXMgdGhhbiB0aGlzIGludG8gdGhlIGJ1ZmZlcgorCSAqLworCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgc2lnbkJhc2U2NFNpZ25hdHVyZSh1bnNpZ25lZCBjaGFyICogaGFzaEJ1ZiwKKwkJCQkJCXVuc2lnbmVkIGludCBoYXNoTGVuLAorCQkJCQkJY2hhciAqIGJhc2U2NFNpZ25hdHVyZUJ1ZiwKKwkJCQkJCXVuc2lnbmVkIGludCBiYXNlNjRTaWduYXR1cmVCdWZMZW4pOworCisJLyoqCisJICogXGJyaWVmIFZlcmlmeSBhIHNpZ25hdHVyZQorCSAqCisJICogVGhlIGxpYnJhcnkgd2lsbCBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gdmFsaWRhdGUgYSBzaWduYXR1cmUKKwkgKgorCSAqIEBwYXJhbSBoYXNoQnVmIEJ1ZmZlciBjb250YWluaW5nIHRoZSBwcmUtY2FsY3VsYXRlZCAoYmluYXJ5KSBkaWdlc3QKKwkgKiBAcGFyYW0gaGFzaExlbiBMZW5ndGggb2YgdGhlIGRhdGEgaW4gdGhlIGRpZ2VzdCBidWZmZXIKKwkgKiBAcGFyYW0gYmFzZTY0U2lnbmF0dXJlIEJ1ZmZlciBjb250YWluaW5nIHRoZSBCYXNlNjQgZW5jb2RlZCBzaWduYXR1cmUKKwkgKiBAcGFyYW0gc2lnTGVuIExlbmd0aCBvZiB0aGUgZGF0YSBpbiB0aGUgc2lnbmF0dXJlIGJ1ZmZlcgorCSAqIEByZXR1cm5zIHRydWUgaWYgdGhlIHNpZ25hdHVyZSB3YXMgdmFsaWQsIGZhbHNlIG90aGVyd2lzZQorCSAqLworCQkKKwl2aXJ0dWFsIGJvb2wgdmVyaWZ5QmFzZTY0U2lnbmF0dXJlKHVuc2lnbmVkIGNoYXIgKiBoYXNoQnVmLCAKKwkJCQkJCSB1bnNpZ25lZCBpbnQgaGFzaExlbiwKKwkJCQkJCSBjaGFyICogYmFzZTY0U2lnbmF0dXJlLAorCQkJCQkJIHVuc2lnbmVkIGludCBzaWdMZW4pOworCisJLy9AfQorCisJLyoqIEBuYW1lIE9wdGlvbmFsIEludGVyZmFjZSBtZXRob2RzCisJICogCisJICogSGF2ZSBiZWVuIGZ1bGx5IGltcGxlbWVudGVkIGluIHRoZSBOU1MgaW50ZXJmYWNlIHRvIGFsbG93IGludGVyb3AKKwkgKiB0ZXN0aW5nIHRvIG9jY3VyLgorCSAqCisJICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIExvYWQgUAorCSAqCisJICogQHBhcmFtIGI2NCBCYXNlNjQgZW5jb2RlZCBwYXJhbWV0ZXIgLSByZWFkIGZyb20gWE1MIGRvY3VtZW50CisJICogQHBhcmFtIGxlbiBMZW5ndGggb2YgdGhlIGVuY29kZWQgc3RyaW5nCisJICovCisKKwl2aXJ0dWFsIHZvaWQgbG9hZFBCYXNlNjRCaWdOdW1zKGNvbnN0IGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBsZW4pOworCisJLyoqCisJICogXGJyaWVmIExvYWQgUQorCSAqCisJICogQHBhcmFtIGI2NCBCYXNlNjQgZW5jb2RlZCBwYXJhbWV0ZXIgLSByZWFkIGZyb20gWE1MIGRvY3VtZW50CisJICogQHBhcmFtIGxlbiBMZW5ndGggb2YgdGhlIGVuY29kZWQgc3RyaW5nCisJICovCisJCisJdmlydHVhbCB2b2lkIGxvYWRRQmFzZTY0QmlnTnVtcyhjb25zdCBjaGFyICogYjY0LCB1bnNpZ25lZCBpbnQgbGVuKTsKKworCS8qKgorCSAqIFxicmllZiBMb2FkIEcKKwkgKgorCSAqIEBwYXJhbSBiNjQgQmFzZTY0IGVuY29kZWQgcGFyYW1ldGVyIC0gcmVhZCBmcm9tIFhNTCBkb2N1bWVudAorCSAqIEBwYXJhbSBsZW4gTGVuZ3RoIG9mIHRoZSBlbmNvZGVkIHN0cmluZworCSAqLworCisJdmlydHVhbCB2b2lkIGxvYWRHQmFzZTY0QmlnTnVtcyhjb25zdCBjaGFyICogYjY0LCB1bnNpZ25lZCBpbnQgbGVuKTsKKwkKKwkvKioKKwkgKiBcYnJpZWYgTG9hZCBZCisJICoKKwkgKiBAcGFyYW0gYjY0IEJhc2U2NCBlbmNvZGVkIHBhcmFtZXRlciAtIHJlYWQgZnJvbSBYTUwgZG9jdW1lbnQKKwkgKiBAcGFyYW0gbGVuIExlbmd0aCBvZiB0aGUgZW5jb2RlZCBzdHJpbmcKKwkgKi8KKworCXZpcnR1YWwgdm9pZCBsb2FkWUJhc2U2NEJpZ051bXMoY29uc3QgY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbik7CisJCisJLyoqCisJICogXGJyaWVmIExvYWQgSgorCSAqCisJICogQHBhcmFtIGI2NCBCYXNlNjQgZW5jb2RlZCBwYXJhbWV0ZXIgLSByZWFkIGZyb20gWE1MIGRvY3VtZW50CisJICogQHBhcmFtIGxlbiBMZW5ndGggb2YgdGhlIGVuY29kZWQgc3RyaW5nCisJICovCisKKwl2aXJ0dWFsIHZvaWQgbG9hZEpCYXNlNjRCaWdOdW1zKGNvbnN0IGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBsZW4pOworCisJLy9AfQorCisJLyoqIEBuYW1lIE5TUyBTcGVjaWZpYyBmdW5jdGlvbnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0cmlldmUgUAorCSAqCisJICogQHBhcmFtIGI2NCBCdWZmZXIgdG8gcGxhY2UgZHM6Q3J5cHRvQmluYXJ5IGVuY29kZWQgUCBwYXJhbWV0ZXIgaW4KKwkgKiBAcGFyYW0gbGVuIE1heCBhbW91bnQgb2YgZGF0YSB0byBiZSBwbGFjZWQgaW4gYnVmZmVyCisJICogQHJldHVybnMgVGhlIG51bWJlciBvZiBieXRlcyBwbGFjZWQgaW4gdGhlIGJ1ZmZlcgorCSAqLworCisJdW5zaWduZWQgaW50IGdldFBCYXNlNjRCaWdOdW1zKGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBsZW4pOworCisJLyoqCisJICogXGJyaWVmIFJldHJpZXZlIFEKKwkgKgorCSAqIEBwYXJhbSBiNjQgQnVmZmVyIHRvIHBsYWNlIGRzOkNyeXB0b0JpbmFyeSBlbmNvZGVkIFEgcGFyYW1ldGVyIGluCisJICogQHBhcmFtIGxlbiBNYXggYW1vdW50IG9mIGRhdGEgdG8gYmUgcGxhY2VkIGluIGJ1ZmZlcgorCSAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgYnl0ZXMgcGxhY2VkIGluIHRoZSBidWZmZXIKKwkgKi8KKwkKKwl1bnNpZ25lZCBpbnQgZ2V0UUJhc2U2NEJpZ051bXMoY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbik7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0cmlldmUgRworCSAqCisJICogQHBhcmFtIGI2NCBCdWZmZXIgdG8gcGxhY2UgZHM6Q3J5cHRvQmluYXJ5IGVuY29kZWQgRyBwYXJhbWV0ZXIgaW4KKwkgKiBAcGFyYW0gbGVuIE1heCBhbW91bnQgb2YgZGF0YSB0byBiZSBwbGFjZWQgaW4gYnVmZmVyCisJICogQHJldHVybnMgVGhlIG51bWJlciBvZiBieXRlcyBwbGFjZWQgaW4gdGhlIGJ1ZmZlcgorCSAqLworCQorCXVuc2lnbmVkIGludCBnZXRHQmFzZTY0QmlnTnVtcyhjaGFyICogYjY0LCB1bnNpZ25lZCBpbnQgbGVuKTsKKworCS8qKgorCSAqIFxicmllZiBSZXRyaWV2ZSBZCisJICoKKwkgKiBAcGFyYW0gYjY0IEJ1ZmZlciB0byBwbGFjZSBkczpDcnlwdG9CaW5hcnkgZW5jb2RlZCBZIHBhcmFtZXRlciBpbgorCSAqIEBwYXJhbSBsZW4gTWF4IGFtb3VudCBvZiBkYXRhIHRvIGJlIHBsYWNlZCBpbiBidWZmZXIKKwkgKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGJ5dGVzIHBsYWNlZCBpbiB0aGUgYnVmZmVyCisJICovCisJCisJdW5zaWduZWQgaW50IGdldFlCYXNlNjRCaWdOdW1zKGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBsZW4pOworCisJLy9AfQorCitwcml2YXRlOgorCisJU0VDS0VZUHVibGljS2V5ICAqCW1wX3B1YmtleTsKKwlTRUNLRVlQcml2YXRlS2V5ICoJbXBfcHJpdmtleTsKKworICBTRUNJdGVtICogbXBfUDsKKyAgU0VDSXRlbSAqIG1wX1E7CisgIFNFQ0l0ZW0gKiBtcF9HOworICBTRUNJdGVtICogbXBfWTsKKworCS8vIEluc3RydWN0IHRvIGltcG9ydCBmcm9tIHBhcmFtZXRlcnMKKworCXZvaWQgaW1wb3J0S2V5KHZvaWQpOworCXZvaWQgbG9hZFBhcmFtc0Zyb21LZXkodm9pZCk7CisKK307CisKKyNlbmRpZiAvKiBIQVZFX05TUyAqLworI2VuZGlmIC8qIE5TU0NSWVBUT0tFWURTQV9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvTlNTL05TU0NyeXB0b0tleUhNQUMuY3BwIGIvYy9zcmMvZW5jL05TUy9OU1NDcnlwdG9LZXlITUFDLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGI5OWE3Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZW5jL05TUy9OU1NDcnlwdG9LZXlITUFDLmNwcApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogTlNTQ3J5cHRvS2V5SE1BQyA6PSBITUFDIEtleXMKKyAqCisgKiBBdXRob3Iocyk6IE1pbGFuIFRvbWljCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL2VuYy9OU1MvTlNTQ3J5cHRvS2V5SE1BQy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvRXhjZXB0aW9uLmhwcD4KKworI2lmIGRlZmluZWQgKEhBVkVfTlNTKQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdG9yCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOU1NDcnlwdG9LZXlITUFDOjpOU1NDcnlwdG9LZXlITUFDKCkgOm1fa2V5QnVmKCIiKSB7CisKKwltX2tleUJ1Zi5pc1NlbnNpdGl2ZSgpOworCW1fa2V5TGVuID0gMDsKKworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBTZXQga2V5CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIE5TU0NyeXB0b0tleUhNQUM6OnNldEtleSh1bnNpZ25lZCBjaGFyICogaW5CdWYsIHVuc2lnbmVkIGludCBpbkxlbmd0aCkgeworCisJbV9rZXlCdWYuc2JNZW1jcHlJbihpbkJ1ZiwgaW5MZW5ndGgpOworCW1fa2V5TGVuID0gaW5MZW5ndGg7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBHZXQga2V5CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit1bnNpZ25lZCBpbnQgTlNTQ3J5cHRvS2V5SE1BQzo6Z2V0S2V5KHNhZmVCdWZmZXIgJm91dEJ1ZikgY29uc3QgeworCisJb3V0QnVmID0gbV9rZXlCdWY7CisJcmV0dXJuIG1fa2V5TGVuOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgUmVwbGljYXRlIGtleQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWFNFQ0NyeXB0b0tleSAqIE5TU0NyeXB0b0tleUhNQUM6OmNsb25lKCkgY29uc3QgeworCisJTlNTQ3J5cHRvS2V5SE1BQyAqIHJldDsKKworCVhTRUNuZXcocmV0LCBOU1NDcnlwdG9LZXlITUFDKCkpOworCisJcmV0LT5tX2tleUJ1ZiA9IG1fa2V5QnVmOworCXJldC0+bV9rZXlMZW4gPSBtX2tleUxlbjsKKworCXJldHVybiByZXQ7CisKK30KKworI2VuZGlmIC8qIEhBVkVfTlNTICovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL05TUy9OU1NDcnlwdG9LZXlITUFDLmhwcCBiL2Mvc3JjL2VuYy9OU1MvTlNTQ3J5cHRvS2V5SE1BQy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNhZTNiNQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9OU1MvTlNTQ3J5cHRvS2V5SE1BQy5ocHAKQEAgLTAsMCArMSwxMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBOU1NDcnlwdG9LZXlITUFDIDo9IEhNQUMgS2V5cworICoKKyAqIEF1dGhvcihzKTogTWlsYW4gVG9taWMKKyAqCisgKi8KKworI2lmbmRlZiBOU1NDUllQVE9LRVlITUFDX0lOQ0xVREUKKyNkZWZpbmUgTlNTQ1JZUFRPS0VZSE1BQ19JTkNMVURFCisKKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvS2V5SE1BQy5ocHA+CisKKyNpZiBkZWZpbmVkIChIQVZFX05TUykKKworI2luY2x1ZGUgIm5zcy9wazExZnVuYy5oIgorI2luY2x1ZGUgIm5zcy9uc3MuaCIKKworLyoqCisgKiBcaW5ncm91cCBuc3NjcnlwdG8KKyAqIEB7CisgKi8KKworLyoqCisgKiBcYnJpZWYgTlNTIGltcGxlbWVudGF0aW9uIGZvciBITUFDIGtleXMuCisgKgorICovCisKK2NsYXNzIERTSUdfRVhQT1JUIE5TU0NyeXB0b0tleUhNQUMgOiBwdWJsaWMgWFNFQ0NyeXB0b0tleUhNQUMgeworCitwdWJsaWMgOgorCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisJLyoqCisJICogXGJyaWVmIENvbnN0cnVjdG9yCisJICoKKwkgKi8KKworCU5TU0NyeXB0b0tleUhNQUMoKTsKKwkKKwl2aXJ0dWFsIH5OU1NDcnlwdG9LZXlITUFDKCkge307CisKKwkvL0B9CisKKwkvKiogQG5hbWUgS2V5IEludGVyZmFjZSBtZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFJldHVybiB0aGUgdHlwZSBvZiB0aGlzIGtleS4KKwkgKgorCSAqIEZvciBEU0Ega2V5cywgdGhpcyBhbGxvd3MgcGVvcGxlIHRvIGRldGVybWluZSB3aGV0aGVyIHRoaXMgaXMgYSAKKwkgKiBwdWJsaWMga2V5LCBwcml2YXRlIGtleSBvciBhIGtleSBwYWlyCisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXk6OktleVR5cGUgZ2V0S2V5VHlwZSgpIGNvbnN0IHtyZXR1cm4gS0VZX0hNQUM7fQorCQorCS8qKgorCSAqIFxicmllZiBSZXBsaWNhdGUga2V5CisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXkgKiBjbG9uZSgpIGNvbnN0OworCisJLyoqCisJICogXGJyaWVmIFJldHVybiB0aGUgTlNTIHN0cmluZyBpZGVudGlmaWVyCisJICovCisKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0UHJvdmlkZXJOYW1lKCkgY29uc3Qge3JldHVybiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJQUk9WTlNTO30KKworCS8vQH0KKworCS8qKiBAbmFtZSBPcHRpb25hbCBJbnRlcmZhY2UgbWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBTZXQgdGhlIGtleQorCSAqCisJICogU2V0IHRoZSBrZXkgZnJvbSB0aGUgYnVmZmVyCisJICoKKwkgKiBAcGFyYW0gaW5CdWYgQnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRpcmVjdCBiaXR3aXNlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBrZXkKKwkgKiBAcGFyYW0gaW5MZW5ndGggTnVtYmVyIG9mIGJ5dGVzIG9mIGtleSBpbiB0aGUgYnVmZmVyCisJICoKKwkgKiBAbm90ZSBpc1NlbnNpdGl2ZSgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uIHRoZSBpbmJvdW5kIGJ1ZmZlcgorCSAqIHRvIGVuc3VyZSB0aGUgY29udGVudHMgaXMgb3ZlcndyaXR0ZW4gd2hlbiB0aGUgc2FmZUJ1ZmZlciBpcyBkZWxldGVkCisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0S2V5KHVuc2lnbmVkIGNoYXIgKiBpbkJ1ZiwgdW5zaWduZWQgaW50IGluTGVuZ3RoKTsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIGtleSB2YWx1ZQorCSAqIAorCSAqIENvcHkgdGhlIGtleSBpbnRvIHRoZSBzYWZlQnVmZmVyIGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcworCSAqIGNvcGllZC4KKwkgKgorCSAqIEBwYXJhbSBvdXRCdWYgQnVmZmVyIHRvIGNvcHkga2V5IGludG8KKwkgKiBAcmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgY29waWVkIGluCisJICovCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRLZXkoc2FmZUJ1ZmZlciAmb3V0QnVmKSBjb25zdDsKKworCS8vQH0KKworcHJpdmF0ZToKKworCXNhZmVCdWZmZXIJCQltX2tleUJ1ZjsKKwl1bnNpZ25lZCBpbnQJCW1fa2V5TGVuOworCit9OworCisjZW5kaWYgLyogSEFWRV9OU1MgKi8KKyNlbmRpZiAvKiBOU1NDUllQVE9LRVlITUFDX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL2VuYy9OU1MvTlNTQ3J5cHRvS2V5UlNBLmNwcCBiL2Mvc3JjL2VuYy9OU1MvTlNTQ3J5cHRvS2V5UlNBLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTE4NzUwCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZW5jL05TUy9OU1NDcnlwdG9LZXlSU0EuY3BwCkBAIC0wLDAgKzEsNzUyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogTlNTQ3J5cHRvS2V5UlNBIDo9IFJTQSBLZXlzCisgKgorICogQXV0aG9yKHMpOiBNaWxhbiBUb21pYworICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9lbmMvTlNTL05TU0NyeXB0b0tleVJTQS5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvTlNTL05TU0NyeXB0b1Byb3ZpZGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0NyeXB0L1hTQ3J5cHRDcnlwdG9CYXNlNjQuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9FeGNlcHRpb24uaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisKKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvSmFuaXRvci5ocHA+CisKKyNpZiBkZWZpbmVkIChIQVZFX05TUykKKworI2luY2x1ZGUgPHNlY2Rlci5oPgorI2luY2x1ZGUgPHNlY2RpZy5oPgorCitYU0VDX1VTSU5HX1hFUkNFUyhBcnJheUphbml0b3IpOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdG9yCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOU1NDcnlwdG9LZXlSU0E6Ok5TU0NyeXB0b0tleVJTQShTRUNLRVlQdWJsaWNLZXkgKiBwdWJrZXksIFNFQ0tFWVByaXZhdGVLZXkgKiBwcml2a2V5KSB7CisKKyAgLy8gTk9URSAtIFdlIE9XTiB0aG9zZSBoYW5kbGVzCisgIG1wX3B1YmtleSAgID0gcHVia2V5OworICBtcF9wcml2a2V5ICA9IHByaXZrZXk7CisgIAorICBtcF9tb2R1bHVzICA9IE5VTEw7CisgIG1wX2V4cG9uZW50ID0gTlVMTDsKKworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBEZXN0cnVjdG9yCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOU1NDcnlwdG9LZXlSU0E6On5OU1NDcnlwdG9LZXlSU0EoKSB7CisKKyAgLy8gQ2xlYW4gdXAKKworCWlmIChtcF9wdWJrZXkgIT0gMCkKKwkJU0VDS0VZX0Rlc3Ryb3lQdWJsaWNLZXkobXBfcHVia2V5KTsKKworICBpZiAobXBfcHJpdmtleSAhPSAwKQorCQlTRUNLRVlfRGVzdHJveVByaXZhdGVLZXkobXBfcHJpdmtleSk7CisKKwlpZiAobXBfbW9kdWx1cyAhPSBOVUxMKQorCQkgU0VDSVRFTV9GcmVlSXRlbShtcF9tb2R1bHVzLCBQUl9UUlVFKTsKKworCWlmIChtcF9leHBvbmVudCAhPSBOVUxMKQorCQlTRUNJVEVNX0ZyZWVJdGVtKG1wX2V4cG9uZW50LCBQUl9UUlVFKTsKKworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBHZXQga2V5IHR5cGUKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hTRUNDcnlwdG9LZXk6OktleVR5cGUgTlNTQ3J5cHRvS2V5UlNBOjpnZXRLZXlUeXBlKCkgY29uc3QgeworCisJLy8gRmluZCBvdXQgd2hhdCB3ZSBoYXZlCisJaWYgKG1wX3B1YmtleSA9PSAwKSB7CisKKwkJaWYgKG1wX3ByaXZrZXkgIT0gMCkKKwkJCXJldHVybiBLRVlfUlNBX1BSSVZBVEU7CisKKwkJaWYgKG1wX2V4cG9uZW50ID09IE5VTEwgfHwgbXBfbW9kdWx1cyA9PSBOVUxMKQorCQkJcmV0dXJuIEtFWV9OT05FOworCQllbHNlCisJCQlyZXR1cm4gS0VZX1JTQV9QVUJMSUM7CisKKwl9CisKKwlpZiAobXBfcHJpdmtleSAhPSAwKQorCQlyZXR1cm4gS0VZX1JTQV9QQUlSOworCisJcmV0dXJuIEtFWV9SU0FfUFVCTElDOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFNldCBPQUVQIHBhcmFtZXRlcnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgTlNTQ3J5cHRvS2V5UlNBOjpzZXRPQUVQcGFyYW1zKHVuc2lnbmVkIGNoYXIgKiBwYXJhbXMsIHVuc2lnbmVkIGludCBwYXJhbXNMZW4pIHsKKworICBpZiAocGFyYW1zICE9IE5VTEwgJiYgcGFyYW1zTGVuICE9IDApIHsKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlVuc3VwcG9ydGVkRXJyb3IsCisJCQkiTlNTOjpzZXRPQUVQUGFyYW1zIC0gT0FFUCBwYXJhbWV0ZXJzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IE5TUyIpOworCisgIH0KKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdldCBPQUVQIHBhcmFtZXRlcnMgbGVuZ3RoCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit1bnNpZ25lZCBpbnQgTlNTQ3J5cHRvS2V5UlNBOjpnZXRPQUVQcGFyYW1zTGVuKHZvaWQpIGNvbnN0IHsKKworCXJldHVybiAwOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgR2V0IE9BRVAgcGFyYW1ldGVycworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY29uc3QgdW5zaWduZWQgY2hhciAqIE5TU0NyeXB0b0tleVJTQTo6Z2V0T0FFUHBhcmFtcyh2b2lkKSBjb25zdCB7CisKKwlyZXR1cm4gTlVMTDsKKworfQorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgTG9hZCBtb2R1bHVzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIE5TU0NyeXB0b0tleVJTQTo6bG9hZFB1YmxpY01vZHVsdXNCYXNlNjRCaWdOdW1zKGNvbnN0IGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBsZW4pIHsKKworCWlmIChtcF9tb2R1bHVzICE9IE5VTEwpIHsKKworCQlTRUNJVEVNX0ZyZWVJdGVtKG1wX21vZHVsdXMsIFBSX1RSVUUpOworCQltcF9tb2R1bHVzID0gTlVMTDsJCS8vIEluIGNhc2Ugd2UgZ2V0IGFuIGV4Y2VwdGlvbgorCisJfQorCisgIG1wX21vZHVsdXMgPSBOU1NDcnlwdG9Qcm92aWRlcjo6YjY0MlNJKGI2NCwgbGVuKTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIExvYWQgZXhwb25lbnQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgTlNTQ3J5cHRvS2V5UlNBOjpsb2FkUHVibGljRXhwb25lbnRCYXNlNjRCaWdOdW1zKGNvbnN0IGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBsZW4pIHsKKworCWlmIChtcF9leHBvbmVudCAhPSBOVUxMKSB7CisKKwkJU0VDSVRFTV9GcmVlSXRlbShtcF9leHBvbmVudCwgUFJfVFJVRSk7CisJCW1wX2V4cG9uZW50ID0gTlVMTDsJCS8vIEluIGNhc2Ugd2UgZ2V0IGFuIGV4Y2VwdGlvbgorCisJfQorCisgIG1wX2V4cG9uZW50ID0gTlNTQ3J5cHRvUHJvdmlkZXI6OmI2NDJTSShiNjQsIGxlbik7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBJbXBvcnQga2V5CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIE5TU0NyeXB0b0tleVJTQTo6aW1wb3J0S2V5KHZvaWQpIHsKKworCWlmIChtcF9wdWJrZXkgIT0gMCB8fCBtcF9leHBvbmVudCA9PSBOVUxMIHx8IG1wX21vZHVsdXMgPT0gTlVMTCkKKwkJcmV0dXJuOworCisKKyAgUFJBcmVuYVBvb2wgKiBhcmVuYSA9IFBPUlRfTmV3QXJlbmEoREVSX0RFRkFVTFRfQ0hVTktTSVpFKTsKKworICBpZihhcmVuYSA9PSBOVUxMKSB7CisKKyAgICAgIHRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6R2VuZXJhbEVycm9yLAorCQkJICAiTlNTOlJTQSBFcnJvciBhdHRlbXB0aW5nIGNyZWF0ZSBuZXcgYXJlbmEiKTsKKworICB9CisKKyAgbXBfcHVia2V5ID0gKFNFQ0tFWVB1YmxpY0tleSopUE9SVF9BcmVuYVpBbGxvYyhhcmVuYSwgc2l6ZW9mKFNFQ0tFWVB1YmxpY0tleSkpOworCisgIGlmKG1wX3B1YmtleSA9PSBOVUxMICkgeworCisgICAgICBQT1JUX0ZyZWVBcmVuYShhcmVuYSwgUFJfRkFMU0UpOworCisgICAgICB0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OkdlbmVyYWxFcnJvciwKKwkJCSAgIk5TUzpSU0EgRXJyb3IgYXR0ZW1wdGluZyBjcmVhdGUgbmV3IGFyZW5hIik7CisKKyAgfQorCisgIG1wX3B1YmtleS0+YXJlbmEgPSBhcmVuYTsKKyAgbXBfcHVia2V5LT5rZXlUeXBlID0gcnNhS2V5OworCisgIFNFQ1N0YXR1cyBzID0gU0VDSVRFTV9Db3B5SXRlbShhcmVuYSwgJihtcF9wdWJrZXktPnUucnNhLm1vZHVsdXMpLCBtcF9tb2R1bHVzKTsKKworICBpZiAocyAhPSBTRUNTdWNjZXNzKSB7CisKKyAgICBQT1JUX0ZyZWVBcmVuYShhcmVuYSwgUFJfRkFMU0UpOworCisgICAgdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpEU0FFcnJvciwKKwkJICAiTlNTOlJTQSBFcnJvciBhdHRlbXB0aW5nIHRvIGltcG9ydCBtb2R1bHVzIik7CisKKyAgfQorCisgIHMgPSBTRUNJVEVNX0NvcHlJdGVtKGFyZW5hLCAmKG1wX3B1YmtleS0+dS5yc2EucHVibGljRXhwb25lbnQpLCBtcF9leHBvbmVudCk7CisKKyAgaWYgKHMgIT0gU0VDU3VjY2VzcykgeworCisgICAgUE9SVF9GcmVlQXJlbmEoYXJlbmEsIFBSX0ZBTFNFKTsKKworICAgIHRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6RFNBRXJyb3IsCisJCSAgIk5TUzpSU0EgRXJyb3IgYXR0ZW1wdGluZyB0byBpbXBvcnQgZXhwb25lbnQiKTsKKworICB9CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBWZXJpZnkgYSBzaWduYXR1cmUgZW5jb2RlZCBhcyBhIEJhc2U2NCBzdHJpbmcKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Jvb2wgTlNTQ3J5cHRvS2V5UlNBOjp2ZXJpZnlTSEExUEtDUzFCYXNlNjRTaWduYXR1cmUoY29uc3QgdW5zaWduZWQgY2hhciAqIGhhc2hCdWYsIAorCQkJCQkJCQkgdW5zaWduZWQgaW50IGhhc2hMZW4sCisJCQkJCQkJCSBjb25zdCBjaGFyICogYmFzZTY0U2lnbmF0dXJlLAorCQkJCQkJCQkgdW5zaWduZWQgaW50IHNpZ0xlbiwKKwkJCQkJCQkJIGhhc2hNZXRob2QgaG0pIHsKKworCS8vIFVzZSB0aGUgY3VycmVudGx5IGxvYWRlZCBrZXkgdG8gdmFsaWRhdGUgdGhlIEJhc2U2NCBlbmNvZGVkIHNpZ25hdHVyZQorCisJaWYgKG1wX3B1YmtleSA9PSAwKSB7CisKKyAgICAgIC8vIFRyeSB0byBpbXBvcnQgZnJvbSB0aGUgcGFyYW1ldGVycworCQkgIGltcG9ydEtleSgpOworCisgICAgICBpZiAobXBfcHVia2V5ID09IDApIHsKKworCQkJICAgIHRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6UlNBRXJyb3IsCisJCQkJICAgICAgIk5TUzpSU0EgLSBBdHRlbXB0IHRvIHZhbGlkYXRlIHNpZ25hdHVyZSB3aXRoIGVtcHR5IGtleSIpOworCisgICAgICB9CisKKwl9CisKKwkvLyBEZWNvZGUgdGhlIHNpZ25hdHVyZQorCXVuc2lnbmVkIGNoYXIgKiByYXdTaWc7CisJRFdPUkQgcmF3U2lnTGVuOworCVhTRUNuZXcocmF3U2lnLCBCWVRFIFtzaWdMZW5dKTsKKwlBcnJheUphbml0b3I8QllURT4gal9yYXdTaWcocmF3U2lnKTsKKworCS8vIERlY29kZSB0aGUgc2lnbmF0dXJlCisJWFNDcnlwdENyeXB0b0Jhc2U2NCBiNjQ7CisKKwliNjQuZGVjb2RlSW5pdCgpOworCXJhd1NpZ0xlbiA9IGI2NC5kZWNvZGUoKHVuc2lnbmVkIGNoYXIgKikgYmFzZTY0U2lnbmF0dXJlLCBzaWdMZW4sIHJhd1NpZywgc2lnTGVuKTsKKwlyYXdTaWdMZW4gKz0gYjY0LmRlY29kZUZpbmlzaCgmcmF3U2lnW3Jhd1NpZ0xlbl0sIHNpZ0xlbiAtIHJhd1NpZ0xlbik7CisJCisgIFNFQ0l0ZW0gc2lnbmF0dXJlOworICBzaWduYXR1cmUudHlwZSA9IHNpQnVmZmVyOworICBzaWduYXR1cmUuZGF0YSA9IHJhd1NpZzsKKyAgc2lnbmF0dXJlLmxlbiA9IHJhd1NpZ0xlbjsKKworICBTRUNJdGVtIGRhdGE7IAorICBkYXRhLnR5cGUgPSBzaUJ1ZmZlcjsKKyAgZGF0YS5kYXRhID0gKHVuc2lnbmVkIGNoYXIgKiloYXNoQnVmOworICBkYXRhLmxlbiA9IGhhc2hMZW47CisKKwkvLyBWZXJpZnkgc2lnbmF0dXJlCisJU0VDU3RhdHVzIHMgPSBQSzExX1ZlcmlmeShtcF9wdWJrZXksICZzaWduYXR1cmUsICZkYXRhLCBOVUxMKTsKKworICByZXR1cm4gcyA9PSBTRUNTdWNjZXNzOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU2lnbiBhbmQgZW5jb2RlIHJlc3VsdCBhcyBhIEJhc2U2NCBzdHJpbmcKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3Vuc2lnbmVkIGludCBOU1NDcnlwdG9LZXlSU0E6OnNpZ25TSEExUEtDUzFCYXNlNjRTaWduYXR1cmUodW5zaWduZWQgY2hhciAqIGhhc2hCdWYsCisJCXVuc2lnbmVkIGludCBoYXNoTGVuLAorCQljaGFyICogYmFzZTY0U2lnbmF0dXJlQnVmLAorCQl1bnNpZ25lZCBpbnQgYmFzZTY0U2lnbmF0dXJlQnVmTGVuLAorCQloYXNoTWV0aG9kIGhtKSB7CisKKwkvLyBTaWduIGEgcHJlLWNhbGN1bGF0ZWQgaGFzaCB1c2luZyB0aGlzIGtleQorCisJaWYgKG1wX3ByaXZrZXkgPT0gMCkgeworCQkKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCSJOU1M6UlNBIC0gQXR0ZW1wdCB0byBzaWduIGRhdGEgdXNpbmcgYSBwdWJsaWMgb3IgdW4tbG9hZGVkIGtleSIpOworCQkKKwl9CisJCisJdW5zaWduZWQgY2hhciAqIHJhd1NpZzsKKwlYU0VDbmV3KHJhd1NpZywgQllURSBbYmFzZTY0U2lnbmF0dXJlQnVmTGVuXSk7CisJQXJyYXlKYW5pdG9yPEJZVEU+IGpfcmF3U2lnKHJhd1NpZyk7CisJCisJU0VDSXRlbSBzaWduYXR1cmU7CisJc2lnbmF0dXJlLnR5cGUgPSBzaUJ1ZmZlcjsKKwlzaWduYXR1cmUuZGF0YSA9IHJhd1NpZzsKKwlzaWduYXR1cmUubGVuID0gYmFzZTY0U2lnbmF0dXJlQnVmTGVuOworCQorCVNFQ0l0ZW0gZGF0YTsKKwlkYXRhLmRhdGEgPSAwOworCVNFQ09pZFRhZyBoYXNoYWxnOworCVBSQXJlbmFQb29sICogYXJlbmEgPSAwOworCVNHTkRpZ2VzdEluZm8gKmRpID0gMDsKKwlTRUNJdGVtICogcmVzOworCisJc3dpdGNoIChobSkgeworCisJY2FzZSAoSEFTSF9NRDUpOgorCQloYXNoYWxnID0gU0VDX09JRF9NRDU7CisJCWJyZWFrOworCWNhc2UgKEhBU0hfU0hBMSk6CisJCWhhc2hhbGcgPSBTRUNfT0lEX1NIQTE7CisJCWJyZWFrOworCWNhc2UgKEhBU0hfU0hBMjU2KToKKwkJaGFzaGFsZyA9IFNFQ19PSURfU0hBMjU2OworCQlicmVhazsKKwljYXNlIChIQVNIX1NIQTM4NCk6CisJCWhhc2hhbGcgPSBTRUNfT0lEX1NIQTM4NDsKKwkJYnJlYWs7CisJY2FzZSAoSEFTSF9TSEE1MTIpOgorCQloYXNoYWxnID0gU0VDX09JRF9TSEE1MTI7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6UlNBRXJyb3IsCisJCQkiTlNTOlJTQSAtIFVuc3VwcG9ydGVkIGhhc2ggYWxnb3JpdGhtIGluIFJTQSBzaWduIik7CisJfQorCisJYXJlbmEgPSBQT1JUX05ld0FyZW5hKERFUl9ERUZBVUxUX0NIVU5LU0laRSk7CisJaWYgKCFhcmVuYSkgeworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlJTQUVycm9yLAorCQkJIk5TUzpSU0EgLSBFcnJvciBjcmVhdGluZyBhcmVuYSIpOworCX0KKworCWRpID0gU0dOX0NyZWF0ZURpZ2VzdEluZm8oaGFzaGFsZywgaGFzaEJ1ZiwgaGFzaExlbik7CQorCWlmIChkaSA9PSBOVUxMKSB7CisJCQorCQlQT1JUX0ZyZWVBcmVuYShhcmVuYSwgUFJfRkFMU0UpOworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6UlNBRXJyb3IsCisJCQkiTlNTOlJTQSAtIEVycm9yIGNyZWF0aW5nIGRpZ2VzdCBpbmZvIik7CisJfQorCisJcmVzID0gU0VDX0FTTjFFbmNvZGVJdGVtKGFyZW5hLCAmZGF0YSwgZGksIE5TU19HZXRfc2duX0RpZ2VzdEluZm9UZW1wbGF0ZShOVUxMLCBGQUxTRSkpOworCisJaWYgKCFyZXMpIHsKKwkJU0dOX0Rlc3Ryb3lEaWdlc3RJbmZvKGRpKTsKKwkJUE9SVF9GcmVlQXJlbmEoYXJlbmEsIFBSX0ZBTFNFKTsKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlJTQUVycm9yLAorCQkJIk5TUzpSU0EgLSBFcnJvciBlbmNvZGluZyBkaWdlc3QgaW5mbyBmb3IgUlNBIHNpZ24iKTsKKwl9CisKKy8qCWRhdGEudHlwZSA9IHNpQnVmZmVyOworCWRhdGEuZGF0YSA9IGhhc2hCdWY7CisJZGF0YS5sZW4gPSBoYXNoTGVuOyovCisKKwkvKiBBcyBvZiBWMS4zLjEgLSBjcmVhdGUgYSBEaWdlc3RJbmZvIGJsb2NrICovCisKKwkKKwlTRUNTdGF0dXMgcyA9IFBLMTFfU2lnbihtcF9wcml2a2V5LCAmc2lnbmF0dXJlLCAmZGF0YSk7CisJCisJU0dOX0Rlc3Ryb3lEaWdlc3RJbmZvKGRpKTsKKwlQT1JUX0ZyZWVBcmVuYShhcmVuYSwgUFJfRkFMU0UpOworCisJaWYgKHMgIT0gU0VDU3VjY2VzcykgeworCQkKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCSJOU1M6UlNBIC0gRXJyb3IgZHVyaW5nIHNpZ25pbmcgb3BlcmF0aW9uIik7CisJCQorCX0KKwkKKwkvLyBOb3cgZW5jb2RlCisJWFNDcnlwdENyeXB0b0Jhc2U2NCBiNjQ7CisJYjY0LmVuY29kZUluaXQoKTsKKwl1bnNpZ25lZCBpbnQgcmV0ID0gYjY0LmVuY29kZShzaWduYXR1cmUuZGF0YSwgc2lnbmF0dXJlLmxlbiwgKHVuc2lnbmVkIGNoYXIgKikgYmFzZTY0U2lnbmF0dXJlQnVmLCBiYXNlNjRTaWduYXR1cmVCdWZMZW4pOworCXJldCArPSBiNjQuZW5jb2RlRmluaXNoKCh1bnNpZ25lZCBjaGFyICopICZiYXNlNjRTaWduYXR1cmVCdWZbcmV0XSwgYmFzZTY0U2lnbmF0dXJlQnVmTGVuIC0gcmV0KTsKKwkKKwlyZXR1cm4gcmV0OworCQorfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENsb25lIGtleQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWFNFQ0NyeXB0b0tleSAqIE5TU0NyeXB0b0tleVJTQTo6Y2xvbmUoKSBjb25zdCB7CisKKwlOU1NDcnlwdG9LZXlSU0EgKiByZXQ7CisKKwlYU0VDbmV3KHJldCwgTlNTQ3J5cHRvS2V5UlNBKG1wX3B1YmtleSwgbXBfcHJpdmtleSkpOworCQorCWlmIChtcF9wdWJrZXkgIT0gMCkgeworCisgICAgcmV0LT5tcF9wdWJrZXkgPSBTRUNLRVlfQ29weVB1YmxpY0tleShtcF9wdWJrZXkpOworICAKKyAgICBpZiAocmV0LT5tcF9wdWJrZXkgPT0gMCkgeworCisgICAgICB0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1lbW9yeUVycm9yLAorCQkgICAgIk5TUzpSU0EgRXJyb3IgYXR0ZW1wdGluZyB0byBjbG9uZSAoY29weSkgcHVibGljIGtleSIpOworCisgICAgfQorCisgIH0KKworICBpZiAobXBfcHJpdmtleSAhPSAwKSB7CisKKyAgICByZXQtPm1wX3ByaXZrZXkgPSBTRUNLRVlfQ29weVByaXZhdGVLZXkobXBfcHJpdmtleSk7CisKKyAgICBpZiAocmV0LT5tcF9wcml2a2V5ID09IDApIHsKKworICAgICAgdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpNZW1vcnlFcnJvciwKKwkJICAgICJOU1M6UlNBIEVycm9yIGF0dGVtcHRpbmcgdG8gY2xvbmUgKGNvcHkpIHByaXZhdGUga2V5Iik7CisKKyAgICB9CisKKyAgfQorCisgIC8vIENsb25lIG1vZHVsdXMKKyAgaWYgKG1wX21vZHVsdXMgIT0gMCkgeworICAgIHJldC0+bXBfbW9kdWx1cyA9IFNFQ0lURU1fRHVwSXRlbShtcF9tb2R1bHVzKTsKKworICAgIGlmIChyZXQtPm1wX21vZHVsdXMgPT0gMCkgeworCisgICAgICB0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1lbW9yeUVycm9yLAorCSAgCSAgIk5TUzpSU0EgRXJyb3IgYXR0ZW1wdGluZyB0byBjbG9uZSAoY29weSkgbW9kdWx1cyIpOworCisgICAgfQorICB9CisKKyAgLy8gQ2xvbmUgZXhwb25lbnQKKyAgaWYgKG1wX2V4cG9uZW50ICE9IDApIHsKKyAgICByZXQtPm1wX2V4cG9uZW50ID0gU0VDSVRFTV9EdXBJdGVtKG1wX2V4cG9uZW50KTsKKworICAgIGlmIChyZXQtPm1wX2V4cG9uZW50ID09IDApIHsKKworICAgICAgdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpNZW1vcnlFcnJvciwKKwkJICAgICJOU1M6UlNBIEVycm9yIGF0dGVtcHRpbmcgdG8gY2xvbmUgKGNvcHkpIGV4cG9uZW50Iik7CisKKyAgICB9CisgIH0KKworICByZXR1cm4gcmV0OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgZGVjcnlwdCBhIGJ1ZmZlcgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordW5zaWduZWQgaW50IE5TU0NyeXB0b0tleVJTQTo6cHJpdmF0ZURlY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqIGluQnVmLAorCQkJCQkJCQkgdW5zaWduZWQgY2hhciAqIHBsYWluQnVmLCAKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBpbkxlbmd0aCwKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBtYXhPdXRMZW5ndGgsCisJCQkJCQkJCSBQYWRkaW5nVHlwZSBwYWRkaW5nLAorCQkJCQkJCQkgaGFzaE1ldGhvZCBobSkgeworCisJLy8gUGVyZm9ybSBhIGRlY3J5cHQKKwlpZiAobXBfcHJpdmtleSA9PSAwKSB7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCSJOU1M6UlNBIC0gQXR0ZW1wdCB0byBkZWNyeXB0IGRhdGEgd2l0aCBlbXB0eSBrZXkiKTsKKworICB9CisKKwlEV09SRCBkZWNyeXB0U2l6ZSA9IGluTGVuZ3RoOworCisgIFNFQ1N0YXR1cyBzOworICBCWVRFICpwdHIgPSBOVUxMOworCisJc3dpdGNoIChwYWRkaW5nKSB7CisKKwljYXNlIFhTRUNDcnlwdG9LZXlSU0E6OlBBRF9QS0NTXzFfNSA6CisKKyAgICBzID0gUEsxMV9QdWJEZWNyeXB0UmF3KG1wX3ByaXZrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFpbkJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQqKSZkZWNyeXB0U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heE91dExlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKilpbkJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGluTGVuZ3RoKTsKKworICAgIGlmIChzICE9IFNFQ1N1Y2Nlc3MpIHsKKworCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCQkiTlNTOlJTQSBwcml2YXRlS2V5RGVjcnlwdCAtIEVycm9yIERlY3J5cHRpbmcgUEtDUzFfNSBwYWRkZWQgUlNBIGVuY3J5cHQiKTsKKworCQl9CisKKyAgICAvL2RvIHRoZSBwYWRkaW5nIChodHRwOi8vd3d3LnczLm9yZy9UUi94bWxlbmMtY29yZS8jcnNhLTFfNSkKKyAgICBwdHIgPSAoQllURSopIG1lbWNocihwbGFpbkJ1ZiwgMHgwMiwgZGVjcnlwdFNpemUpOworCQlpZiggcHRyICkKKwkJeworCQkJdW5zaWduZWQgaW50IGJ5dGVzVG9SZW1vdmUgPSAoKHB0ci1wbGFpbkJ1ZikrMSk7CisJCQltZW1tb3ZlKHBsYWluQnVmLCBwdHIrMSwgZGVjcnlwdFNpemUtYnl0ZXNUb1JlbW92ZSk7CisJCQlkZWNyeXB0U2l6ZSAtPSBieXRlc1RvUmVtb3ZlOworCQl9CisKKwkJcHRyID0gKEJZVEUqKSBtZW1jaHIocGxhaW5CdWYsIDB4MDAsIGRlY3J5cHRTaXplKTsKKwkJaWYoIHB0ciApCisJCXsKKwkJCXVuc2lnbmVkIGludCBieXRlc1RvUmVtb3ZlID0gKChwdHItcGxhaW5CdWYpKzEpOworCQkJbWVtbW92ZShwbGFpbkJ1ZiwgcHRyKzEsIGRlY3J5cHRTaXplLWJ5dGVzVG9SZW1vdmUpOworCQkJZGVjcnlwdFNpemUgLT0gYnl0ZXNUb1JlbW92ZTsKKwkJfQorCisJCWJyZWFrOworCisJY2FzZSBYU0VDQ3J5cHRvS2V5UlNBOjpQQURfT0FFUF9NR0ZQMSA6CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCSJOU1M6UlNBIC0gT0FFUCBwYWRkaW5nIG1ldGhvZCBub3Qgc3VwcG9ydGVkIGluIE5TUyB5ZXQiKTsKKworCQlicmVhazsKKworCisJZGVmYXVsdCA6CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCSJOU1M6UlNBIC0gVW5rbm93biBwYWRkaW5nIG1ldGhvZCIpOworCisJfQorCisJcmV0dXJuIGRlY3J5cHRTaXplOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgRW5jcnlwdCBhIGJ1ZmZlcgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordW5zaWduZWQgaW50IE5TU0NyeXB0b0tleVJTQTo6cHVibGljRW5jcnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICogaW5CdWYsCisJCQkJCQkJCSB1bnNpZ25lZCBjaGFyICogY2lwaGVyQnVmLCAKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBpbkxlbmd0aCwKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBtYXhPdXRMZW5ndGgsCisJCQkJCQkJCSBQYWRkaW5nVHlwZSBwYWRkaW5nLAorCQkJCQkJCQkgaGFzaE1ldGhvZCBobSkgeworCisJLy8gUGVyZm9ybSBhbiBlbmNyeXB0CisJaWYgKG1wX3B1YmtleSA9PSAwKSB7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCSJOU1M6UlNBIC0gQXR0ZW1wdCB0byBlbmNyeXB0IGRhdGEgd2l0aCBlbXB0eSBrZXkiKTsKKworICB9CisKKwl1bnNpZ25lZCBpbnQgZW5jcnlwdFNpemUgPSBTRUNLRVlfUHVibGljS2V5U3RyZW5ndGgobXBfcHVia2V5KTsKKworICBpZiAobWF4T3V0TGVuZ3RoIDwgZW5jcnlwdFNpemUpIHsKKworICAgIHRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6UlNBRXJyb3IsCisJCQkiTlNTOlJTQSAtIFRvbyBzbWFsbCBidWZmZXIgZm9yIGVuY3J5cHRlZCBidWZmZXIgb3V0cHV0Iik7CisKKyAgfQorCisgIFNFQ1N0YXR1cyBzOworCisgIEJZVEUgKiBidWY7CisgIFhTRUNuZXcoYnVmLCBCWVRFW2VuY3J5cHRTaXplXSk7CisgIEFycmF5SmFuaXRvcjxCWVRFPiBqX2J1ZihidWYpOworCisJc3dpdGNoIChwYWRkaW5nKSB7CisKKwljYXNlIFhTRUNDcnlwdG9LZXlSU0E6OlBBRF9QS0NTXzFfNSA6CisKKyAgICAvLyBkbyB0aGUgcGFkZGluZyAoaHR0cDovL3d3dy53My5vcmcvVFIveG1sZW5jLWNvcmUvI3JzYS0xXzUpCisgICAgeworICAgICAgCisgICAgICAvLyBnZW5lcmF0ZSByYW5kb20gZGF0YSBmb3IgcGFkZGluZworICAgICAgU0VDU3RhdHVzIHMgPSBQSzExX0dlbmVyYXRlUmFuZG9tKGJ1ZiwgZW5jcnlwdFNpemUpOworCisgICAgICBpZiAocyAhPSBTRUNTdWNjZXNzKSB7CisgICAgICAKKyAgICAgICAgdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpJbnRlcm5hbEVycm9yLAorCQkJICAgICJOU1NDcnlwdG9LZXlSU0EoKSAtIEVycm9yIGdlbmVyYXRpbmcgUmFuZG9tIGRhdGEiKTsKKworICAgICAgfQorCisgICAgICAvLyBmaXJzdCBieXRlIGhhdmUgdG8gYmUgMHgwMiAKKyAgICAgIGJ1ZlswXSA9IDB4MDA7CisgICAgICBidWZbMV0gPSAweDAyOworCisgICAgICAvLyBjaGVjayB0aGF0IHRoZXJlIGFyZSBubyAweDAwIGJ5dGVzIGFtb25nIHJhbmRvbSBkYXRhCisgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMjsgaSA8IGVuY3J5cHRTaXplIC0gaW5MZW5ndGggLSAxOyBpKyspIHsKKworICAgICAgICB3aGlsZSAoYnVmW2ldID09IDB4MDApIHsKKyAgICAgICAgICAvLyByZXBsYWNlIGFsbCAweDAwIG9jY3VyZW5jZXMgaW4gcmFuZG9tIGRhdGEgd2l0aCByYW5kb20gdmFsdWUKKyAgICAgICAgICBQSzExX0dlbmVyYXRlUmFuZG9tKCZidWZbaV0sIDEpOworICAgICAgICB9CisKKyAgICAgIH0KKworICAgICAgLy8gYmVmb3JlIGtleSBhZGQgMHgwMCBieXRlCisgICAgICBidWZbZW5jcnlwdFNpemUgLSBpbkxlbmd0aCAtIDFdID0gMHgwMDsKKworICAgICAgLy8gYXQgdGhlIGVuZCBvZiBpbnB1dCBidWZmZXIgKHRvIGJlIGVuY3J5cHRlZCkgYWRkIGtleQorICAgICAgbWVtY3B5KCZidWZbZW5jcnlwdFNpemUgLSBpbkxlbmd0aF0sIGluQnVmLCBpbkxlbmd0aCk7CisKKyAgICB9CisKKyAgICAvLyBlbmNyeXB0CisgICAgcyA9IFBLMTFfUHViRW5jcnlwdFJhdyhtcF9wdWJrZXksIGNpcGhlckJ1ZiwgKHVuc2lnbmVkIGNoYXIqKWJ1ZiwgZW5jcnlwdFNpemUsIE5VTEwpOworCisgICAgaWYgKHMgIT0gU0VDU3VjY2VzcykgeworCisJCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlJTQUVycm9yLAorCQkJCSJOU1M6UlNBIHB1YmxpY0tleUVuY3J5cHQgLSBFcnJvciBwZXJmb3JtaW5nIGVuY3J5cHQiKTsKKworICAgIH0KKworICAJYnJlYWs7CisKKwljYXNlIFhTRUNDcnlwdG9LZXlSU0E6OlBBRF9PQUVQX01HRlAxIDoKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlJTQUVycm9yLAorCQkJIk5TUzpSU0EgLSBPQUVQIHBhZGRpbmcgbWV0aG9kIG5vdCBzdXBwb3J0ZWQgaW4gTlNTIHlldCIpOworCisJCWJyZWFrOworCisJZGVmYXVsdCA6CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCSJOU1M6UlNBIC0gVW5rbm93biBwYWRkaW5nIG1ldGhvZCIpOworCisJfQorCisJcmV0dXJuIGVuY3J5cHRTaXplOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgR2V0IGtleSBzaXplIGluIGJ5dGVzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit1bnNpZ25lZCBpbnQgTlNTQ3J5cHRvS2V5UlNBOjpnZXRMZW5ndGgodm9pZCkgIGNvbnN0IHsKKworICB1bnNpZ25lZCBpbnQgcmV0ID0gMDsKKworICBpZiAobXBfcHVia2V5ICE9IDApIHsKKworICAgIHJldCA9IFNFQ0tFWV9QdWJsaWNLZXlTdHJlbmd0aChtcF9wdWJrZXkpOworCisgIH0gZWxzZSBpZiAobXBfcHJpdmtleSAhPSAwKSB7CisKKyAgICByZXQgPSBQSzExX0dldFByaXZhdGVNb2R1bHVzTGVuKG1wX3ByaXZrZXkpOworCisgIH0KKworICByZXR1cm4gcmV0OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgTG9hZCBwYXJhbWV0ZXJzIGZyb20ga2V5ICh1dGlsaXR5IGZ1bmN0aW9uKQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBOU1NDcnlwdG9LZXlSU0E6OmxvYWRQYXJhbXNGcm9tS2V5KHZvaWQpIHsKKworCWlmIChtcF9wdWJrZXkgPT0gMCkKKwkJCXJldHVybjsKKworICBtcF9tb2R1bHVzID0gU0VDSVRFTV9EdXBJdGVtKCYobXBfcHVia2V5LT51LnJzYS5tb2R1bHVzKSk7CisKKyAgaWYgKG1wX21vZHVsdXMgPT0gMCkKKyAgeworCisgICAgdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCSJOU1M6UlNBIC0gRXJyb3IgZHVyaW5nIGV4dHJhY3RpbmcgbW9kdWx1cyBmcm9tIHB1YmxpYyBrZXkiKTsKKyAKKyAgfQorCisgIG1wX2V4cG9uZW50ID0gU0VDSVRFTV9EdXBJdGVtKCYobXBfcHVia2V5LT51LnJzYS5wdWJsaWNFeHBvbmVudCkpOworCisgIGlmIChtcF9leHBvbmVudCA9PSAwKQorICB7CisKKyAgICB0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlJTQUVycm9yLAorCQkJIk5TUzpSU0EgLSBFcnJvciBkdXJpbmcgZXh0cmFjdGluZyBleHBvbmVudCBmcm9tIHB1YmxpYyBrZXkiKTsKKworICB9Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgR2V0IGV4cG9uZW50CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit1bnNpZ25lZCBpbnQgTlNTQ3J5cHRvS2V5UlNBOjpnZXRFeHBvbmVudEJhc2U2NEJpZ051bXMoY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbikgeworCisJaWYgKG1wX3B1YmtleSA9PSAwICYmIG1wX2V4cG9uZW50ID09IDApIHsKKworCQlyZXR1cm4gMDsJLy8gTm90aGluZyB3ZSBjYW4gZG8KKworCX0KKworCWlmIChtcF9leHBvbmVudCA9PSBOVUxMKSB7CisKKwkJbG9hZFBhcmFtc0Zyb21LZXkoKTsKKworCX0KKworCXVuc2lnbmVkIGludCBiTGVuID0gMDsKKwl1bnNpZ25lZCBjaGFyICogYiA9ICBOU1NDcnlwdG9Qcm92aWRlcjo6U0kyYjY0KG1wX2V4cG9uZW50LCBiTGVuKTsKKwlpZiAoYkxlbiA+IGxlbikKKwkJYkxlbiA9IGxlbjsKKwltZW1jcHkoYjY0LCBiLCBiTGVuKTsKKwlkZWxldGVbXSBiOworCisJcmV0dXJuIGJMZW47Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgR2V0IG1vZHVsdXMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3Vuc2lnbmVkIGludCBOU1NDcnlwdG9LZXlSU0E6OmdldE1vZHVsdXNCYXNlNjRCaWdOdW1zKGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBsZW4pIHsKKworCWlmIChtcF9wdWJrZXkgPT0gMCAmJiBtcF9tb2R1bHVzID09IDApIHsKKworCQlyZXR1cm4gMDsJLy8gTm90aGluZyB3ZSBjYW4gZG8KKworCX0KKworCWlmIChtcF9tb2R1bHVzID09IE5VTEwpIHsKKworCQlsb2FkUGFyYW1zRnJvbUtleSgpOworCisJfQorCisJdW5zaWduZWQgaW50IGJMZW4gPSAwOworCXVuc2lnbmVkIGNoYXIgKiBiID0gIE5TU0NyeXB0b1Byb3ZpZGVyOjpTSTJiNjQobXBfbW9kdWx1cywgYkxlbik7CisJaWYgKGJMZW4gPiBsZW4pCisJCWJMZW4gPSBsZW47CisJbWVtY3B5KGI2NCwgYiwgYkxlbik7CisJZGVsZXRlW10gYjsKKworCXJldHVybiBiTGVuOworfQorCisjZW5kaWYgLyogSEFWRV9OU1MgKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvTlNTL05TU0NyeXB0b0tleVJTQS5ocHAgYi9jL3NyYy9lbmMvTlNTL05TU0NyeXB0b0tleVJTQS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRhZmU4ZgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9OU1MvTlNTQ3J5cHRvS2V5UlNBLmhwcApAQCAtMCwwICsxLDMxNiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIE5TU0NyeXB0b0tleVJTQSA6PSBOU1MgaW1wbGVtZW50YXRpb24gb2YgUlNBIEtleXMKKyAqCisgKiBBdXRob3Iocyk6IE1pbGFuIFRvbWljCisgKgorICovCisKKyNpZm5kZWYgTlNTQ1JZUFRPS0VZUlNBX0lOQ0xVREUKKyNkZWZpbmUgTlNTQ1JZUFRPS0VZUlNBX0lOQ0xVREUKKworI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9LZXlSU0EuaHBwPgorCisjaWYgZGVmaW5lZCAoSEFWRV9OU1MpCisKKyNpbmNsdWRlICJuc3MvcGsxMWZ1bmMuaCIKKyNpbmNsdWRlICJuc3Mva2V5aGkuaCIKKyNpbmNsdWRlICJuc3MvbnNzLmgiCisKK2NsYXNzIE5TU0NyeXB0b1Byb3ZpZGVyOworCisvKioKKyAqIFxpbmdyb3VwIG5zc2NyeXB0bworICogQHsKKyAqLworCisvKioKKyAqIFxicmllZiBOU1MgaW1wbGVtZW50YXRpb24gb2YgdGhlIGludGVyZmFjZSBjbGFzcyBmb3IgUlNBIGtleXMuCisgKgorICogVGhlIGxpYnJhcnkgdXNlcyBjbGFzc2VzIGRlcml2ZWQgZnJvbSB0aGlzIHRvIHByb2Nlc3MgUlNBIGtleXMuCisgKi8KKworY2xhc3MgRFNJR19FWFBPUlQgTlNTQ3J5cHRvS2V5UlNBIDogcHVibGljIFhTRUNDcnlwdG9LZXlSU0EgeworCitwdWJsaWMgOgorCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIGFuIFJTQSBrZXkKKwkgKgorCSAqIEBwYXJhbSBwdWJrZXkgQSBoYW5kbGUgdG8gdGhlIHB1YmxpYyBrZXkgKG9wdGlvbmFsKQorCSAqIEBwYXJhbSBwcml2a2V5IEEgaGFuZGxlIHRvIHRoZSBwcml2YXRlIGtleSAob3B0aW9uYWwpCisJICovCisKKwlOU1NDcnlwdG9LZXlSU0EoU0VDS0VZUHVibGljS2V5ICogcHVia2V5ID0gTlVMTCwgU0VDS0VZUHJpdmF0ZUtleSAqIHByaXZrZXkgPSBOVUxMKTsKKworCXZpcnR1YWwgfk5TU0NyeXB0b0tleVJTQSgpOworCisJLy9AfQorCisJLyoqIEBuYW1lIEtleSBJbnRlcmZhY2UgbWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gdGhlIHR5cGUgb2YgdGhpcyBrZXkuCisJICoKKwkgKiBGb3IgUlNBIGtleXMsIHRoaXMgYWxsb3dzIHBlb3BsZSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGlzIGlzIGEgCisJICogcHVibGljIGtleSwgcHJpdmF0ZSBrZXkgb3IgYSBrZXkgcGFpcgorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvS2V5OjpLZXlUeXBlIGdldEtleVR5cGUoKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gdGhlIE5TUyBpZGVudGlmaWVyIHN0cmluZworCSAqLworCQorCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRQcm92aWRlck5hbWUoKSBjb25zdCB7cmV0dXJuIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clBST1ZOU1M7fQorCQorCS8qKgorCSAqIFxicmllZiBSZXBsaWNhdGUga2V5CisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXkgKiBjbG9uZSgpIGNvbnN0OworCisJLy9AfQorCisJLyoqIEBuYW1lIE1hbmRhdG9yeSBSU0EgaW50ZXJmYWNlIG1ldGhvZHMgCisJICoKKwkgKiBUaGVzZSBjbGFzc2VzIGFyZSByZXF1aXJlZCBieSB0aGUgbGlicmFyeS4KKwkgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgU2V0IHRoZSBPQUVQcGFyYW1zIHN0cmluZworCSAqCisJICogQnkgZGVmYXVsdCwgdGhlIGxpYnJhcnkgZXhwZWN0cyBjcnlwdG8gaW1wbGVtZW50YXRpb25zIHRvIHBlcmZvcm0KKwkgKiBPQUVQIHBhZGRpbmcgd2l0aCBubyBwYXJhbXMuIFRoaXMgY2FsbCBhbGxvd3MgdGhlIGxpYnJhcnkgKG9yIHVzZXIpCisJICogdG8gc2V0IGEgcGFyYW1zIHZhbHVlIHByaW9yIHRvIGFuIGVuY3J5cHQvZGVjcnlwdCBvcGVyYXRpb24uCisJICoKKwkgKiBAcGFyYW0gcGFyYW1zIGJ1ZmZlciBjb250YWluaW5nIHRoZSBwYXJhbXMgZGF0YS4gIFBhc3MgaW4gTlVMTCB0byBjbGVhciBhbnkKKwkgKiBvbGQgcGFyYW10ZXJzLgorCSAqIEBwYXJhbSBwYXJhbXNMZW4gbnVtYmVyIG9mIGJ5dGVzIGluIGJ1ZmZlciB0byB1c2UuICBQYXNzIGluIDAgdG8gY2xlYXIgYW55CisJICogb2xkIHBhcmFtZXRlcnMuCisJICogQG5vdGUgTlNTIGRvIG5vdCBzdXBwb3J0IHRoZSBhYmlsaXR5IHRvIHNldCBPQUVQIHBhcmFtZXRlcnMsIHNvIHRoaXMgd2lsbAorCSAqIHRocm93IGFuIFhTRUNDcnlwdG9FeGNlcHRpb246OlVuc3VwcG9ydGVkRXJyb3IsIHVubGVzcyB0aGUgcGFzc2VkIGluCisJICogcGFyYW10ZXJzIGFyZSBOVUxMIGFuZCAwICh0byBjbGVhcikuCisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0T0FFUHBhcmFtcyh1bnNpZ25lZCBjaGFyICogcGFyYW1zLCB1bnNpZ25lZCBpbnQgcGFyYW1zTGVuKTsKKworCS8qKgorCSAqIFxicmllZiBHZXQgT0FFUHBhcmFtcyBMZW5ndGgKKwkgKgorCSAqIEByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgb2YgdGhlIE9BRVBwYXJhbXMgYnVmZmVyIChhc3N1bWluZyBpdCBoYXMgYmVlbiBzZXQpCisJICogQG5vdGUgTlNTIGRvIG5vdCBzdXBwb3J0IHRoZSBhYmlsaXR5IHRvIHNldCBPQUVQIHBhcmFtZXRlcnMsIHNvIHRoaXMgd2lsbCBhbHdheXMKKyAgICogcmV0dXJuIDAKKwkgKi8KKworCXZpcnR1YWwgdW5zaWduZWQgaW50IGdldE9BRVBwYXJhbXNMZW4odm9pZCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBPQUVQcGFyYW1zCisJICoKKwkgKiBAcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIChjcnlwdG8gb2JqZWN0IG93bmVkKSBidWZmZXIgaG9sZGluZyB0aGUgT0FFUHBhcmFtcworCSAqIG9yIE5VTEwgaWYgbm8gcGFyYW1zIGFyZSBoZWxkCisJICogQG5vdGUgTlNTIGRvIG5vdCBzdXBwb3J0IHRoZSBhYmlsaXR5IHRvIHNldCBPQUVQIHBhcmFtZXRlcnMsIHNvIHRoaXMgd2lsbCBhbHdheXMKKyAgICogcmV0dXJuIE5VTEwKKwkgKi8KKworCXZpcnR1YWwgY29uc3QgdW5zaWduZWQgY2hhciAqIGdldE9BRVBwYXJhbXModm9pZCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgVmVyaWZ5IGEgU0hBMSBQS0NTMSBlbmNvZGVkIHNpZ25hdHVyZQorCSAqCisJICogVGhlIGxpYnJhcnkgd2lsbCBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gdmFsaWRhdGUgYW4gUlNBIHNpZ25hdHVyZQorCSAqIFRoZSBzdGFuZGFyZCBieSBkZWZhdWx0IHVzZXMgU0hBMSBpbiBhIFBLQ1MxIGVuY29kaW5nLgorCSAqCisJICogQHBhcmFtIGhhc2hCdWYgQnVmZmVyIGNvbnRhaW5pbmcgdGhlIHByZS1jYWxjdWxhdGVkIChiaW5hcnkpIGRpZ2VzdAorCSAqIEBwYXJhbSBoYXNoTGVuIExlbmd0aCBvZiB0aGUgZGF0YSBpbiB0aGUgZGlnZXN0IGJ1ZmZlcgorCSAqIEBwYXJhbSBiYXNlNjRTaWduYXR1cmUgQnVmZmVyIGNvbnRhaW5pbmcgdGhlIEJhc2U2NCBlbmNvZGVkIHNpZ25hdHVyZQorCSAqIEBwYXJhbSBzaWdMZW4gTGVuZ3RoIG9mIHRoZSBkYXRhIGluIHRoZSBzaWduYXR1cmUgYnVmZmVyCisJICogQHBhcmFtIGhtIFRoZSBoYXNoIG1ldGhvZCB0aGF0IHdhcyB1c2VkIHRvIGNyZWF0ZSB0aGUgaGFzaCB0aGF0IGlzIGJlaW5nCisJICogcGFzc2VkIGluCisJICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgc2lnbmF0dXJlIHdhcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlCisJICovCisKKwl2aXJ0dWFsIGJvb2wgdmVyaWZ5U0hBMVBLQ1MxQmFzZTY0U2lnbmF0dXJlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBoYXNoQnVmLCAKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBoYXNoTGVuLAorCQkJCQkJCQkgY29uc3QgY2hhciAqIGJhc2U2NFNpZ25hdHVyZSwKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBzaWdMZW4sCisJCQkJCQkJCSBoYXNoTWV0aG9kIGhtKTsKKworCS8qKgorCSAqIFxicmllZiBDcmVhdGUgYSBzaWduYXR1cmUKKwkgKgorCSAqIFRoZSBsaWJyYXJ5IHdpbGwgY2FsbCB0aGlzIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIHNpZ25hdHVyZSBmcm9tCisJICogYSBwcmUtY2FsY3VsYXRlZCBkaWdlc3QuICBUaGUgb3V0cHV0IHNpZ25hdHVyZSB3aWxsCisJICogYmUgQmFzZTY0IGVuY29kZWQgc3VjaCB0aGF0IGl0IGNhbiBiZSBwbGFjZWQgZGlyZWN0bHkgaW50byB0aGUKKwkgKiBYTUwgZG9jdW1lbnQKKwkgKgorCSAqIEBwYXJhbSBoYXNoQnVmIEJ1ZmZlciBjb250YWluaW5nIHRoZSBwcmUtY2FsY3VsYXRlZCAoYmluYXJ5KSBkaWdlc3QKKwkgKiBAcGFyYW0gaGFzaExlbiBOdW1iZXIgb2YgYnl0ZXMgb2YgaGFzaCBpbiB0aGUgaGFzaEJ1ZgorCSAqIEBwYXJhbSBiYXNlNjRTaWduYXR1cmVCdWYgQnVmZmVyIHRvIHBsYWNlIHRoZSBiYXNlNjQgZW5jb2RlZCByZXN1bHQKKwkgKiBpbi4KKwkgKiBAcGFyYW0gYmFzZTY0U2lnbmF0dXJlQnVmTGVuIEltcGxlbWVudGF0aW9ucyBuZWVkIHRvIGVuc3VyZSB0aGV5IGRvCisJICogbm90IHdyaXRlIG1vcmUgYnl0ZXMgdGhhbiB0aGlzIGludG8gdGhlIGJ1ZmZlcgorCSAqIEBwYXJhbSBobSBIYXNoIE1ldGhvZCB1c2VkIGluIG9yZGVyIHRvIGVtYmVkIGNvcnJlY3QgT0lEIGZvciBzaWcKKwkgKi8KKworCXZpcnR1YWwgdW5zaWduZWQgaW50IHNpZ25TSEExUEtDUzFCYXNlNjRTaWduYXR1cmUodW5zaWduZWQgY2hhciAqIGhhc2hCdWYsCisJCQkJCQkJCXVuc2lnbmVkIGludCBoYXNoTGVuLAorCQkJCQkJCQljaGFyICogYmFzZTY0U2lnbmF0dXJlQnVmLAorCQkJCQkJCQl1bnNpZ25lZCBpbnQgYmFzZTY0U2lnbmF0dXJlQnVmTGVuLAorCQkJCQkJCQloYXNoTWV0aG9kIGhtKTsKKworCS8qKgorCSAqIFxicmllZiBEZWNyeXB0IHVzaW5nIHByaXZhdGUga2V5CisJICoKKwkgKiBUaGUgbGlicmFyeSB3aWxsIGNhbGwgdGhpcyBmdW5jdGlvbiB0byBkZWNyeXB0IGEgcGllY2Ugb2YgY2lwaGVyCisJICogdGV4dCB1c2luZyB0aGUgcHJpdmF0ZSBjb21wb25lbnQgb2YgdGhpcyBrZXkuCisJICoKKwkgKiBAcGFyYW0gaW5CdWYgY2lwaGVyIHRleHQgdG8gZGVjcnlwdAorCSAqIEBwYXJhbSBwbGFpbkJ1ZiBvdXRwdXQgYnVmZmVyIGZvciBkZWNyeXB0ZWQgYnl0ZXMKKwkgKiBAcGFyYW0gaW5MZW5ndGggYnl0ZXMgb2YgY2lwaGVyIHRleHQgdG8gZGVjcnlwdAorCSAqIEBwYXJhbSBtYXhPdXRMZW5ndGggc2l6ZSBvZiBvdXRwdXRCdWZmZXIKKwkgKiBAcGFyYW0gcGFkZGluZyBUeXBlIG9mIHBhZGRpbmcgKFBLQ1MgMS41IG9yIE9BRVApCisJICogQHBhcmFtIGhtIEhhc2ggTWV0aG9kIGZvciBPQUVQIGVuY3J5cHRpb24gKE9BRVBQYXJhbXMgc2hvdWxkIGJlCisJICogc2V0IHVzaW5nIHNldE9BRVBwYXJhbXMoKQorCSAqLworCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgcHJpdmF0ZURlY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqIGluQnVmLAorCQkJCQkJCQkgdW5zaWduZWQgY2hhciAqIHBsYWluQnVmLCAKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBpbkxlbmd0aCwKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBtYXhPdXRMZW5ndGgsCisJCQkJCQkJCSBQYWRkaW5nVHlwZSBwYWRkaW5nLAorCQkJCQkJCQkgaGFzaE1ldGhvZCBobSk7CisKKwkvKioKKwkgKiBcYnJpZWYgRW5jcnlwdCB1c2luZyBhIHB1YmxpYyBrZXkKKwkgKgorCSAqIFRoZSBsaWJyYXJ5IHdpbGwgY2FsbCB0aGlzIGZ1bmN0aW9uIHRvIGVuY3J5cHQgYSBwbGFpbiB0ZXh0IGJ1ZmZlcgorCSAqIHVzaW5nIHRoZSBwdWJsaWMgY29tcG9uZW50IG9mIHRoaXMga2V5LgorCSAqCisJICogQHBhcmFtIGluQnVmIHBsYWluIHRleHQgdG8gZGVjcnlwdAorCSAqIEBwYXJhbSBjaXBoZXJCdWYgb3V0cHV0IGJ1ZmZlciBmb3IgZGVjcnlwdGVkIGJ5dGVzCisJICogQHBhcmFtIGluTGVuZ3RoIGJ5dGVzIG9mIHBsYWluIHRleHQgdG8gZW5jcnlwdAorCSAqIEBwYXJhbSBtYXhPdXRMZW5ndGggc2l6ZSBvZiBvdXRwdXRCdWZmZXIKKwkgKiBAcGFyYW0gcGFkZGluZyBUeXBlIG9mIHBhZGRpbmcgKFBLQ1MgMS41IG9yIE9BRVApCisJICogQHBhcmFtIGhtIEhhc2ggTWV0aG9kIGZvciBPQUVQIGVuY3J5cHRpb24gKE9BRVBQYXJhbXMgc2hvdWxkIGJlCisJICogc2V0IHVzaW5nIHNldE9BRVBwYXJhbXMoKQorCSAqLworCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgcHVibGljRW5jcnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICogaW5CdWYsCisJCQkJCQkJCSB1bnNpZ25lZCBjaGFyICogY2lwaGVyQnVmLCAKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBpbkxlbmd0aCwKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBtYXhPdXRMZW5ndGgsCisJCQkJCQkJCSBQYWRkaW5nVHlwZSBwYWRkaW5nLAorCQkJCQkJCQkgaGFzaE1ldGhvZCBobSk7CisKKwkvKioKKwkgKiBcYnJpZWYgT2J0YWluIHRoZSBsZW5ndGggb2YgYW4gUlNBIGtleQorCSAqCisJICogQHJldHVybnMgVGhlIGxlbmd0aCBvZiB0aGUgcnNhIGtleSAoaW4gYnl0ZXMpCisJICovCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRMZW5ndGgodm9pZCkgY29uc3Q7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgT3B0aW9uYWwgSW50ZXJmYWNlIG1ldGhvZHMKKwkgKiAKKwkgKiBIYXZlIGJlZW4gaW1wbGVtZW50ZWQgdG8gYWxsb3cgaW50ZXJvcGVyYWJpbGl0eSB0ZXN0aW5nCisJICovCisKKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgTG9hZCB0aGUgbW9kdWx1cworCSAqCisJICogTG9hZCB0aGUgbW9kdWx1cyBmcm9tIGEgQmFzZTY0IGVuY29kZWQgc3RyaW5nCisJICoKKwkgKiBwYXJhbSBiNjQgQSBidWZmZXIgY29udGFpbmluZyB0aGUgZW5jb2RlZCBzdHJpbmcKKwkgKiBwYXJhbSBsZW4gVGhlIGxlbmd0aCBvZiB0aGUgZGF0YSBpbiB0aGUgYnVmZmVyCisJICovCisKKwl2aXJ0dWFsIHZvaWQgbG9hZFB1YmxpY01vZHVsdXNCYXNlNjRCaWdOdW1zKGNvbnN0IGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBsZW4pOworCisJLyoqCisJICogXGJyaWVmIExvYWQgdGhlIGV4cG9uZW50CisJICoKKwkgKiBMb2FkIHRoZSBleHBvbmVudCBmcm9tIGEgQmFzZTY0IGVuY29kZWQgc3RyaW5nCisJICoKKwkgKiBwYXJhbSBiNjQgQSBidWZmZXIgY29udGFpbmluZyB0aGUgZW5jb2RlZCBzdHJpbmcKKwkgKiBwYXJhbSBsZW4gVGhlIGxlbmd0aCBvZiB0aGUgZGF0YSBpbiB0aGUgYnVmZmVyCisJICovCisKKwl2aXJ0dWFsIHZvaWQgbG9hZFB1YmxpY0V4cG9uZW50QmFzZTY0QmlnTnVtcyhjb25zdCBjaGFyICogYjY0LCB1bnNpZ25lZCBpbnQgbGVuKTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBOU1MgU3BlY2lmaWMgRnVuY3Rpb25zICovCisJLy9AeworCisKKwkvKioKKwkgKiBcYnJpZWYgUmV0cmlldmUgdGhlIGV4cG9uZW50CisJICoKKwkgKiBSZXRyaWV2ZXMgdGhlIGV4cG9uZW50IGluIGRzOkNyeXB0b0JpbmFyeSBlbmNvZGVkIGZvcm1hdAorCSAqCisJICogQHBhcmFtIGI2NCBCdWZmZXIgdG8gcGxhY2UgZW5jb2RlZCBleHBvbmVudCBpbnRvCisJICogQHBhcmFtIGxlbiBNYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byBwbGFjZSBpbiBidWZmZXIKKwkgKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGJ5dGVzIHBsYWNlZCBpbiB0aGUgYnVmZmVyCisJICovCisKKwl1bnNpZ25lZCBpbnQgZ2V0RXhwb25lbnRCYXNlNjRCaWdOdW1zKGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBsZW4pOworCisJLyoqCisJICogXGJyaWVmIFJldHJpZXZlIHRoZSBtb2R1bHVzCisJICoKKwkgKiBSZXRyaWV2ZXMgdGhlIG1vZHVsdXMgaW4gZHM6Q3J5cHRvQmluYXJ5IGVuY29kZWQgZm9ybWF0CisJICoKKwkgKiBAcGFyYW0gYjY0IEJ1ZmZlciB0byBwbGFjZSB0aGUgZW5jb2RlZCBtb2R1bHVzIGludG8KKwkgKiBAcGFyYW0gbGVuIE1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvIHBsYWNlIGluIGJ1ZmZlcgorCSAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgYnl0ZXMgcGxhY2VkIGluIHRoZSBidWZmZXIKKwkgKi8KKworCXVuc2lnbmVkIGludCBnZXRNb2R1bHVzQmFzZTY0QmlnTnVtcyhjaGFyICogYjY0LCB1bnNpZ25lZCBpbnQgbGVuKTsKKworCS8vQH0KKworcHJpdmF0ZToKKworICBTRUNLRVlQdWJsaWNLZXkgICoJbXBfcHVia2V5OworCVNFQ0tFWVByaXZhdGVLZXkgKgltcF9wcml2a2V5OworCisgIFNFQ0l0ZW0gKiBtcF9tb2R1bHVzOworICBTRUNJdGVtICogbXBfZXhwb25lbnQ7CisKKwkvLyBJbnN0cnVjdCB0byBpbXBvcnQgZnJvbSBwYXJhbWV0ZXJzCisKKwl2b2lkIGltcG9ydEtleSh2b2lkKTsKKwl2b2lkIGxvYWRQYXJhbXNGcm9tS2V5KHZvaWQpOworCit9OworCisjZW5kaWYgLyogSEFWRV9OU1MgKi8KKyNlbmRpZiAvKiBOU1NDUllQVE9LRVlSU0FfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL05TUy9OU1NDcnlwdG9Qcm92aWRlci5jcHAgYi9jL3NyYy9lbmMvTlNTL05TU0NyeXB0b1Byb3ZpZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODkyNzk2Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZW5jL05TUy9OU1NDcnlwdG9Qcm92aWRlci5jcHAKQEAgLTAsMCArMSw0NjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBOU1NDcnlwdG9Qcm92aWRlciA6PSBQcm92aWRlciB0byBzdXBwb3J0IE5TUworICoKKyAqIEF1dGhvcihzKTogTWlsYW4gVG9taWMKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvTlNTL05TU0NyeXB0b1Byb3ZpZGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9OU1MvTlNTQ3J5cHRvWDUwOS5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvTlNTL05TU0NyeXB0b0tleURTQS5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvTlNTL05TU0NyeXB0b0tleVJTQS5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvTlNTL05TU0NyeXB0b0tleUhNQUMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL05TUy9OU1NDcnlwdG9IYXNoLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9OU1MvTlNTQ3J5cHRvSGFzaEhNQUMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL05TUy9OU1NDcnlwdG9TeW1tZXRyaWNLZXkuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTQ3J5cHQvWFNDcnlwdENyeXB0b0Jhc2U2NC5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b0V4Y2VwdGlvbi5ocHA+CisKKyNpZiBkZWZpbmVkIChIQVZFX05TUykKKworI2luY2x1ZGUgIm5zcy9wazExZnVuYy5oIgorI2luY2x1ZGUgIm5zcy9uc3MuaCIKKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9KYW5pdG9yLmhwcD4KKworWFNFQ19VU0lOR19YRVJDRVMoQXJyYXlKYW5pdG9yKTsKKworaW50IE5TU0NyeXB0b1Byb3ZpZGVyOjptX2luaXRpYWxpc2VkID0gMDsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdHJ1Y3RvcgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBOU1NDcnlwdG9Qcm92aWRlcjo6SW5pdChjb25zdCBjaGFyICogZGJEaXIpIHsKKworCSsrbV9pbml0aWFsaXNlZDsKKworCWlmIChtX2luaXRpYWxpc2VkID4gMSkKKwkJcmV0dXJuOworCisJU0VDU3RhdHVzIHM7CisKKwlpZiAoZGJEaXIgIT0gTlVMTCkKKwkJcyA9IE5TU19Jbml0KGRiRGlyKTsKKwllbHNlCisJCXMgPSBOU1NfTm9EQl9Jbml0KE5VTEwpOworCisJaWYgKHMgIT0gU0VDU3VjY2VzcykgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6TWVtb3J5RXJyb3IsCisJCQkiTlNTQ3J5cHRvUHJvdmlkZXI6TlNTQ3J5cHRvUHJvdmlkZXIgLSBFcnJvciBpbml0aWFsaXppbmcgTlNTIik7CisKKwl9CisKK30KKworTlNTQ3J5cHRvUHJvdmlkZXI6Ok5TU0NyeXB0b1Byb3ZpZGVyKGNvbnN0IGNoYXIgKiBkYkRpcikgeworCisJSW5pdChkYkRpcik7CisKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEVtcHR5IGNvbnN0cnVjdG9yCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOU1NDcnlwdG9Qcm92aWRlcjo6TlNTQ3J5cHRvUHJvdmlkZXIoKQoreworCisJSW5pdChOVUxMKTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIERlc3RydWN0b3IKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05TU0NyeXB0b1Byb3ZpZGVyOjp+TlNTQ3J5cHRvUHJvdmlkZXIoKQoreworCisgIGlmIChtX2luaXRpYWxpc2VkID09IDEpIHsKKworICAgIFBLMTFfTG9nb3V0QWxsKCk7CisKKwkgIFNFQ1N0YXR1cyBzID0gTlNTX1NodXRkb3duKCk7CisKKyAgICAvLyBOb3RlIHRoYXQgTlNTIHdpbGwgZmFpbCB0byBzaHV0IGRvd24gaWYgYW55IG1lbW9yeSBsZWFrcyBhcmUgZGV0ZWN0ZWQgKE5TUworICAgIC8vIG9iamVjdHMgd2VyZSBub3QgcmVsZWFzZWQpLiBUaGlzIGlzIHNlY3VyaXR5IG1lYXN1cmUgdG8gcHJldmVudCBhYnVzZSBvZiB5b3VyCisgICAgLy8gcHJpdmF0ZSBrZXlzLgorICAgIGlmIChzICE9IFNFQ1N1Y2Nlc3MpIHsKKworICAgICAgLy90aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OkdlbmVyYWxFcnJvciwKKwkJICAvLwkiTlNTQ3J5cHRvUHJvdmlkZXI6TlNTQ3J5cHRvUHJvdmlkZXIgLSBFcnJvciBzaHV0aW5nIGRvd24gTlNTIik7CisKKyAgICB9CisKKyAgfQorICBtX2luaXRpYWxpc2VkLS07CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBHZXQgTlNTIHN0cmluZworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY29uc3QgWE1MQ2ggKiBOU1NDcnlwdG9Qcm92aWRlcjo6Z2V0UHJvdmlkZXJOYW1lKCkgY29uc3QgeworCisJcmV0dXJuIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clBST1ZOU1M7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBIYXNoIFNIQTEKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hTRUNDcnlwdG9IYXNoCSogTlNTQ3J5cHRvUHJvdmlkZXI6Omhhc2hTSEExKCkgY29uc3QgeworCisJTlNTQ3J5cHRvSGFzaCAqIHJldDsKKworCVhTRUNuZXcocmV0LCBOU1NDcnlwdG9IYXNoKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTEpKTsKKworCXJldHVybiByZXQ7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBIYXNoIFNIQQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWFNFQ0NyeXB0b0hhc2gJKiBOU1NDcnlwdG9Qcm92aWRlcjo6aGFzaFNIQShpbnQgbGVuZ3RoKSBjb25zdCB7CisKKwlOU1NDcnlwdG9IYXNoICogcmV0OworCisgIHN3aXRjaCAobGVuZ3RoKSB7CisKKyAgY2FzZSAxNjA6IFhTRUNuZXcocmV0LCBOU1NDcnlwdG9IYXNoKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTEpKTsKKwkJYnJlYWs7CisJY2FzZSAyNTY6IFhTRUNuZXcocmV0LCBOU1NDcnlwdG9IYXNoKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTI1NikpOworCQlicmVhazsKKwljYXNlIDM4NDogWFNFQ25ldyhyZXQsIE5TU0NyeXB0b0hhc2goWFNFQ0NyeXB0b0hhc2g6OkhBU0hfU0hBMzg0KSk7CisJCWJyZWFrOworCWNhc2UgNTEyOiBYU0VDbmV3KHJldCwgTlNTQ3J5cHRvSGFzaChYU0VDQ3J5cHRvSGFzaDo6SEFTSF9TSEE1MTIpKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKyAgICByZXQgPSBOVUxMOworCX0KKworCXJldHVybiByZXQ7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBIYXNoIEhNQUMgU0hBMQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWFNFQ0NyeXB0b0hhc2ggKiBOU1NDcnlwdG9Qcm92aWRlcjo6aGFzaEhNQUNTSEExKCkgY29uc3QgeworCisJTlNTQ3J5cHRvSGFzaEhNQUMgKiByZXQ7CisKKwlYU0VDbmV3KHJldCwgTlNTQ3J5cHRvSGFzaEhNQUMoWFNFQ0NyeXB0b0hhc2g6OkhBU0hfU0hBMSkpOworCisJcmV0dXJuIHJldDsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEhhc2ggSE1BQyBTSEEKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hTRUNDcnlwdG9IYXNoICogTlNTQ3J5cHRvUHJvdmlkZXI6Omhhc2hITUFDU0hBKGludCBsZW5ndGgpIGNvbnN0IHsKKworCU5TU0NyeXB0b0hhc2hITUFDICogcmV0OworCisgIHN3aXRjaCAobGVuZ3RoKSB7CisKKyAgY2FzZSAxNjA6IFhTRUNuZXcocmV0LCBOU1NDcnlwdG9IYXNoSE1BQyhYU0VDQ3J5cHRvSGFzaDo6SEFTSF9TSEExKSk7CisJCWJyZWFrOworCWNhc2UgMjU2OiBYU0VDbmV3KHJldCwgTlNTQ3J5cHRvSGFzaEhNQUMoWFNFQ0NyeXB0b0hhc2g6OkhBU0hfU0hBMjU2KSk7CisJCWJyZWFrOworCWNhc2UgMzg0OiBYU0VDbmV3KHJldCwgTlNTQ3J5cHRvSGFzaEhNQUMoWFNFQ0NyeXB0b0hhc2g6OkhBU0hfU0hBMzg0KSk7CisJCWJyZWFrOworCWNhc2UgNTEyOiBYU0VDbmV3KHJldCwgTlNTQ3J5cHRvSGFzaEhNQUMoWFNFQ0NyeXB0b0hhc2g6OkhBU0hfU0hBNTEyKSk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisgICAgcmV0ID0gTlVMTDsKKwl9CisKKwlyZXR1cm4gcmV0OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgSGFzaCBNRDUKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hTRUNDcnlwdG9IYXNoCSogTlNTQ3J5cHRvUHJvdmlkZXI6Omhhc2hNRDUoKSBjb25zdCB7CisKKwlOU1NDcnlwdG9IYXNoICogcmV0OworCisJWFNFQ25ldyhyZXQsIE5TU0NyeXB0b0hhc2goWFNFQ0NyeXB0b0hhc2g6OkhBU0hfTUQ1KSk7CisKKwlyZXR1cm4gcmV0OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgSGFzaCBITUFDIE1ENQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWFNFQ0NyeXB0b0hhc2ggKiBOU1NDcnlwdG9Qcm92aWRlcjo6aGFzaEhNQUNNRDUoKWNvbnN0IHsKKworCU5TU0NyeXB0b0hhc2hITUFDICogcmV0OworCisJWFNFQ25ldyhyZXQsIE5TU0NyeXB0b0hhc2hITUFDKFhTRUNDcnlwdG9IYXNoOjpIQVNIX01ENSkpOworCisJcmV0dXJuIHJldDsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdldCBITUFDIGtleQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWFNFQ0NyeXB0b0tleUhNQUMgKiBOU1NDcnlwdG9Qcm92aWRlcjo6a2V5SE1BQyh2b2lkKSBjb25zdCB7CisKKwlOU1NDcnlwdG9LZXlITUFDICogcmV0OworCisJWFNFQ25ldyhyZXQsIE5TU0NyeXB0b0tleUhNQUMoKSk7CisKKwlyZXR1cm4gcmV0OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgR2V0IERTQSBrZXkKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hTRUNDcnlwdG9LZXlEU0EgKiBOU1NDcnlwdG9Qcm92aWRlcjo6a2V5RFNBKCkgY29uc3QgeworCQorCU5TU0NyeXB0b0tleURTQSAqIHJldDsKKworCVhTRUNuZXcocmV0LCBOU1NDcnlwdG9LZXlEU0EoKSk7CisKKwlyZXR1cm4gcmV0OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgR2V0IFJTQSBrZXkKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hTRUNDcnlwdG9LZXlSU0EgKiBOU1NDcnlwdG9Qcm92aWRlcjo6a2V5UlNBKCkgY29uc3QgeworCQorCU5TU0NyeXB0b0tleVJTQSAqIHJldDsKKworCVhTRUNuZXcocmV0LCBOU1NDcnlwdG9LZXlSU0EoKSk7CisKKwlyZXR1cm4gcmV0OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgR2V0IHN5bW1ldHJpYyBrZXkKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hTRUNDcnlwdG9TeW1tZXRyaWNLZXkJKiBOU1NDcnlwdG9Qcm92aWRlcjo6a2V5U3ltbWV0cmljKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OlN5bW1ldHJpY0tleVR5cGUgYWxnKSBjb25zdCB7CisKKwkvLyBPbmx5IHRlbXBvcmFyeQorCisJTlNTQ3J5cHRvU3ltbWV0cmljS2V5ICogcmV0OworCQorCVhTRUNuZXcocmV0LCBOU1NDcnlwdG9TeW1tZXRyaWNLZXkoYWxnKSk7CisKKwlyZXR1cm4gcmV0OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgR2V0IFg1MDkgY2xhc3MKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hTRUNDcnlwdG9YNTA5ICogTlNTQ3J5cHRvUHJvdmlkZXI6Olg1MDkoKSBjb25zdCB7CisKKwlOU1NDcnlwdG9YNTA5ICogcmV0OworCisJWFNFQ25ldyhyZXQsIE5TU0NyeXB0b1g1MDkoKSk7CisKKwlyZXR1cm4gcmV0OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgR2V0IEJhc2U2NAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWFNFQ0NyeXB0b0Jhc2U2NCAqIE5TU0NyeXB0b1Byb3ZpZGVyOjpiYXNlNjQoKSBjb25zdCB7CisKKwkvLyBOU1MgZG9lcyBwcm92aWRlIGEgQmFzZTY0IGRlY29kZXIvZW5jb2RlciwKKwkvLyBidXQgcmF0aGVyIHVzZSB0aGUgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24uCisKKwlYU0NyeXB0Q3J5cHRvQmFzZTY0ICogcmV0OworCisJWFNFQ25ldyhyZXQsIFhTQ3J5cHRDcnlwdG9CYXNlNjQoKSk7CisKKwlyZXR1cm4gcmV0OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgVHJhbnNsYXRlIGEgQmFzZTY0IG51bWJlciB0byBhIFNFQ0l0ZW0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NFQ0l0ZW0gKiBOU1NDcnlwdG9Qcm92aWRlcjo6YjY0MlNJKGNvbnN0IGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBiNjRMZW4pIHsKKworICBTRUNJdGVtICogcnY7CisKKyAgQllURSAqIG9zOworCVhTRUNuZXcob3MsIEJZVEVbYjY0TGVuXSk7CisJQXJyYXlKYW5pdG9yPEJZVEU+IGpfb3Mob3MpOworCisJLy8gRGVjb2RlCisJWFNDcnlwdENyeXB0b0Jhc2U2NCBiOworCisJYi5kZWNvZGVJbml0KCk7CisJdW5zaWduZWQgaW50IHJldExlbiA9IGIuZGVjb2RlKCh1bnNpZ25lZCBjaGFyICopIGI2NCwgYjY0TGVuLCBvcywgYjY0TGVuKTsKKwlyZXRMZW4gKz0gYi5kZWNvZGVGaW5pc2goJm9zW3JldExlbl0sIGI2NExlbiAtIHJldExlbik7CisKKyAgcnYgPSBTRUNJVEVNX0FsbG9jSXRlbShOVUxMLCBOVUxMLCByZXRMZW4pOworICBydi0+bGVuID0gcmV0TGVuOworCisgIG1lbWNweShydi0+ZGF0YSwgb3MsIHJldExlbik7CisKKwlyZXR1cm4gcnY7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICBUcmFuc2xhdGUgYSBTRUNJdGVtIHRvIGEgQmFzZTY0IEkyT1NQIG51bWJlciAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3Vuc2lnbmVkIGNoYXIgKiBOU1NDcnlwdG9Qcm92aWRlcjo6U0kyYjY0KFNFQ0l0ZW0gKiBuLCB1bnNpZ25lZCBpbnQgJnJldExlbikgeworCisJdW5zaWduZWQgY2hhciAqIGI2NDsKKwkvLyBOYWlldmUgbGVuZ3RoIGNhbGN1bGF0aW9uCisJdW5zaWduZWQgaW50IGJ1ZkxlbiA9IG4tPmxlbiAqIDIgKyA0OworCisJWFNFQ25ldyhiNjQsIHVuc2lnbmVkIGNoYXJbYnVmTGVuXSk7CisJQXJyYXlKYW5pdG9yPHVuc2lnbmVkIGNoYXI+IGpfYjY0KGI2NCk7CisKKyAgLy8gRW5jb2RlCisJWFNDcnlwdENyeXB0b0Jhc2U2NCBiOworCisJYi5lbmNvZGVJbml0KCk7CisJcmV0TGVuID0gYi5lbmNvZGUobi0+ZGF0YSwgKHVuc2lnbmVkIGludCkgbi0+bGVuLCBiNjQsIGJ1Zkxlbik7CisJcmV0TGVuICs9IGIuZW5jb2RlRmluaXNoKCZiNjRbcmV0TGVuXSwgYnVmTGVuIC0gcmV0TGVuKTsKKworCWpfYjY0LnJlbGVhc2UoKTsKKwlyZXR1cm4gYjY0OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ2hlY2sgaWYgaGFzaCBhbGdvcml0aG0gaXMgc3VwcG9ydGVkCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitib29sIE5TU0NyeXB0b1Byb3ZpZGVyOjphbGdvcml0aG1TdXBwb3J0ZWQoWFNFQ0NyeXB0b0hhc2g6Okhhc2hUeXBlIGFsZykgY29uc3QgeworCisJc3dpdGNoIChhbGcpIHsKKworCWNhc2UgKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTEpIDoKKwljYXNlIChYU0VDQ3J5cHRvSGFzaDo6SEFTSF9NRDUpIDoKKworCQlyZXR1cm4gdHJ1ZTsKKworCWNhc2UgKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTI1NikgOgorCWNhc2UgKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTM4NCkgOgorCWNhc2UgKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTUxMikgOgorCWNhc2UgKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTIyNCkgOgorCisJCXJldHVybiBmYWxzZTsKKworCWRlZmF1bHQ6CisKKwkJcmV0dXJuIGZhbHNlOworCisJfQorCisJcmV0dXJuIGZhbHNlOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ2hlY2sgaWYgY3lwaGVyIGFsZ29yaXRobSBpcyBzdXBwb3J0ZWQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Jvb2wgTlNTQ3J5cHRvUHJvdmlkZXI6OmFsZ29yaXRobVN1cHBvcnRlZChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpTeW1tZXRyaWNLZXlUeXBlIGFsZykgY29uc3QgeworCisJc3dpdGNoIChhbGcpIHsKKworCWNhc2UgKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV9BRVNfMTI4KSA6CisJY2FzZSAoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZX0FFU18xOTIpIDoKKwljYXNlIChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfQUVTXzI1NikgOgorCisJCS8vcmV0dXJuIG1faGF2ZUFFUzsKKyAgICByZXR1cm4gdHJ1ZTsKKworCWNhc2UgKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV8zREVTXzE5MikgOgorCisJCXJldHVybiB0cnVlOworCisJZGVmYXVsdDoKKworCQlyZXR1cm4gZmFsc2U7CisKKwl9CisKKwlyZXR1cm4gZmFsc2U7CisKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdlbmVyYXRlIHJhbmRvbSBkYXRhCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit1bnNpZ25lZCBpbnQgTlNTQ3J5cHRvUHJvdmlkZXI6OmdldFJhbmRvbSh1bnNpZ25lZCBjaGFyICogYnVmZmVyLCB1bnNpZ25lZCBpbnQgbnVtT2N0ZXRzKSBjb25zdCB7CisKKyAgU0VDU3RhdHVzIHMgPSBQSzExX0dlbmVyYXRlUmFuZG9tKGJ1ZmZlciwgbnVtT2N0ZXRzKTsKKworICBpZiAocyAhPSBTRUNTdWNjZXNzKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpJbnRlcm5hbEVycm9yLAorCQkJIk5TU0NyeXB0b1Byb3ZpZGVyKCkgLSBFcnJvciBnZW5lcmF0aW5nIFJhbmRvbSBkYXRhIik7CisKKyAgfQorCisJcmV0dXJuIG51bU9jdGV0czsKKworfQorCisjZW5kaWYgLyogSEFWRV9OU1MgKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvTlNTL05TU0NyeXB0b1Byb3ZpZGVyLmhwcCBiL2Mvc3JjL2VuYy9OU1MvTlNTQ3J5cHRvUHJvdmlkZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkM2ViNTIKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9lbmMvTlNTL05TU0NyeXB0b1Byb3ZpZGVyLmhwcApAQCAtMCwwICsxLDMyNSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIE5TU0NyeXB0b1Byb3ZpZGVyIDo9IEJhc2UgY2xhc3MgdG8gaGFuZGxlIE5TUworICoKKyAqIEF1dGhvcihzKTogTWlsYW4gVG9taWMKKyAqCisgKi8KKworI2lmbmRlZiBOU1NDUllQVE9QUk9WSURFUl9JTkNMVURFCisjZGVmaW5lIE5TU0NSWVBUT1BST1ZJREVSX0lOQ0xVREUKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvUHJvdmlkZXIuaHBwPgorCisjaWYgZGVmaW5lZCAoSEFWRV9OU1MpCisKKyNpbmNsdWRlICJuc3MvcGsxMWZ1bmMuaCIKKyNpbmNsdWRlICJuc3MvbnNzLmgiCisKKy8qKgorICogQGRlZmdyb3VwIG5zc2NyeXB0byBOU1MgSW50ZXJmYWNlCisgKiBAaW5ncm91cCBuc3NjcnlwdG8KKyAqIFRoZSBOU1MgY3J5cHRvIHByb3ZpZGVzIGFuIGV4cGVyaW1lbnRhbCBpbmVyZmFjZSB0byB0aGUgTlNTIEFQSS4KKyAqLworIAorIC8qXEB7Ki8KKworY2xhc3MgRFNJR19FWFBPUlQgTlNTQ3J5cHRvUHJvdmlkZXIgOiBwdWJsaWMgWFNFQ0NyeXB0b1Byb3ZpZGVyIHsKKworCitwdWJsaWMgOgorCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIE5TUyBpbnRlcmZhY2UgbGF5ZXIKKwkgKgorCSAqIEBwYXJhbSBkYkRpciBEaXJlY3Rvcnkgd2hlcmUgTlNTIGtleSBkYXRhYmFzZSBpcyBzdG9yZWQuCisJICogV2lsbCBpbml0aWFsaXNlIE5TUyB3aXRob3V0IERCIHN1cHBvcnQgaWYgbm90aGluZyBwYXNzZWQgaW4uCisgICAqIElmIHlvdSBhcmUgd3JpdGluZyBNb3ppbGxhL0ZpcmVmb3ggcGx1Z2luLCB5b3Ugc2hvdWxkbid0CisgICAqIHVzZSB0aGlzIGN0b3IsIGJlY2F1c2UgTW96aWxsYS9GaXJlZm94IGluaXQgTlNTLiBVc2UgZW1wdHkKKyAgICogY3RvciBpbnN0ZWFkLgorCSAqLworCQorCU5TU0NyeXB0b1Byb3ZpZGVyKGNvbnN0IGNoYXIgKiBkYkRpcik7CisKKyAgLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIE5TUyBpbnRlcmZhY2UgbGF5ZXIKKwkgKgorCSAqIFdpbGwgbm90IGluaXRpYWxpc2UgTlNTIGxpYnJhcnksIHVzZXIgc2hvdWxkIGRvIHRoYXQKKwkgKi8KKwkKKwlOU1NDcnlwdG9Qcm92aWRlcigpOworCisJdmlydHVhbCB+TlNTQ3J5cHRvUHJvdmlkZXIoKTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBIYXNoaW5nIChEaWdlc3QpIEZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gYSBTSEExIGltcGxlbWVudGF0aW9uLgorCSAqCisJICogQ2FsbCB1c2VkIGJ5IHRoZSBsaWJyYXJ5IHRvIG9idGFpbiBhIFNIQTEgb2JqZWN0IGZyb20gdGhlIAorCSAqIHByb3ZpZGVyLgorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIGFuIE5TUyBIYXNoIG9iamVjdCB0aGF0IGltcGxlbWVudHMgU0hBMQorCSAqIEBzZWUgTlNTQ3J5cHRvSGFzaAorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvSGFzaCAqIGhhc2hTSEExKCkgY29uc3Q7CisKKyAgLyoqCisJICogXGJyaWVmIFJldHVybiBhIFNIQTEgaW1wbGVtZW50YXRpb24uCisJICoKKwkgKiBDYWxsIHVzZWQgYnkgdGhlIGxpYnJhcnkgdG8gb2J0YWluIGEgU0hBMSBvYmplY3QgZnJvbSB0aGUgCisJICogcHJvdmlkZXIuCisJICoKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gYW4gTlNTIEhhc2ggb2JqZWN0IHRoYXQgaW1wbGVtZW50cyBTSEExCisJICogQHNlZSBOU1NDcnlwdG9IYXNoCisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9IYXNoICogaGFzaFNIQShpbnQgbGVuZ3RoID0gMTYwKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gYSBITUFDIFNIQTEgaW1wbGVtZW50YXRpb24uCisJICoKKwkgKiBDYWxsIHVzZWQgYnkgdGhlIGxpYnJhcnkgdG8gb2J0YWluIGEgSE1BQyBTSEExIG9iamVjdCBmcm9tIHRoZSAKKwkgKiBwcm92aWRlci4gIFRoZSBjYWxsZXIgd2lsbCBuZWVkIHRvIHNldCB0aGUga2V5IGluIHRoZSBoYXNoCisJICogb2JqZWN0IHdpdGggYW4gWFNFQ0NyeXB0b0tleUhNQUMgdXNpbmcgTlNTQ3J5cHRvSGFzaDo6c2V0S2V5KCkKKwkgKgorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byBhIEhhc2ggb2JqZWN0IHRoYXQgaW1wbGVtZW50cyBITUFDLVNIQTEKKwkgKiBAc2VlIE5TU0NyeXB0b0hhc2gKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0hhc2ggKiBoYXNoSE1BQ1NIQTEoKSBjb25zdDsKKworICAvKioKKwkgKiBcYnJpZWYgUmV0dXJuIGEgSE1BQyBTSEExIGltcGxlbWVudGF0aW9uLgorCSAqCisJICogQ2FsbCB1c2VkIGJ5IHRoZSBsaWJyYXJ5IHRvIG9idGFpbiBhIEhNQUMgU0hBMSBvYmplY3QgZnJvbSB0aGUgCisJICogcHJvdmlkZXIuICBUaGUgY2FsbGVyIHdpbGwgbmVlZCB0byBzZXQgdGhlIGtleSBpbiB0aGUgaGFzaAorCSAqIG9iamVjdCB3aXRoIGFuIFhTRUNDcnlwdG9LZXlITUFDIHVzaW5nIE5TU0NyeXB0b0hhc2g6OnNldEtleSgpCisJICoKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gYSBIYXNoIG9iamVjdCB0aGF0IGltcGxlbWVudHMgSE1BQy1TSEExCisJICogQHNlZSBOU1NDcnlwdG9IYXNoCisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9IYXNoICogaGFzaEhNQUNTSEEoaW50IGxlbmd0aCA9IDE2MCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIGEgTUQ1IGltcGxlbWVudGF0aW9uLgorCSAqCisJICogQ2FsbCB1c2VkIGJ5IHRoZSBsaWJyYXJ5IHRvIG9idGFpbiBhIE1ENSBvYmplY3QgZnJvbSB0aGUgCisJICogTlNTIHByb3ZpZGVyLgorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIGEgSGFzaCBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIE1ENQorCSAqIEBzZWUgTlNTQ3J5cHRvSGFzaAorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvSGFzaCAqIGhhc2hNRDUoKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gYSBITUFDIE1ENSBpbXBsZW1lbnRhdGlvbi4KKwkgKgorCSAqIENhbGwgdXNlZCBieSB0aGUgbGlicmFyeSB0byBvYnRhaW4gYSBITUFDIE1ENSBvYmplY3QgZnJvbSB0aGUgCisJICogcHJvdmlkZXIuICBUaGUgY2FsbGVyIHdpbGwgbmVlZCB0byBzZXQgdGhlIGtleSBpbiB0aGUgaGFzaAorCSAqIG9iamVjdCB3aXRoIGFuIFhTRUNDcnlwdG9LZXlITUFDIHVzaW5nIFhTRUNDcnlwdG9IYXNoOjpzZXRLZXkoKQorCSAqCisJICogQG5vdGUgVGhlIHVzZSBvZiBNRDUgaXMgZXhwbGljaXRseSBtYXJrZWQgYXMgPGI+bm90IHJlY29tbWVuZGVkPC9iPiAKKwkgKiBpbiB0aGUgWE1MIERpZ2l0YWwgU2lnbmF0dXJlIHN0YW5kYXJkIGR1ZSB0byByZWNlbnQgYWR2YW5jZXMgaW4KKwkgKiBjcnlwdG9ncmFwaHkgaW5kaWNhdGluZyB0aGVyZSA8ZW0+bWF5PC9lbT4gYmUgd2Vha25lc3NlcyBpbiB0aGUgCisJICogYWxnb3JpdGhtLgorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIGEgSGFzaCBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIEhNQUMtTUQ1CisJICogQHNlZSBOU1NDcnlwdG9IYXNoCisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9IYXNoICogaGFzaEhNQUNNRDUoKSBjb25zdDsKKworICAvKioKKwkgKiBcYnJpZWYgUmV0dXJuIGEgSE1BQyBrZXkKKwkgKgorCSAqIFNvbWV0aW1lcyB0aGUgbGlicmFyeSBuZWVkcyB0byBjcmVhdGUgYW4gSE1BQyBrZXkgKG5vdGFibHkgd2l0aGluCisJICogdGhlIFhLTVMgdXRpbGl0aWVzKS4KKwkgKgorCSAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoZSBsaWJyYXJ5IHRvIG9idGFpbiBhIGtleSB0aGF0IGNhbiB0aGVuIGhhdmUKKwkgKiBhIHZhbHVlIHNldCB3aXRoaW4gaXQuCisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXlITUFDICoga2V5SE1BQyh2b2lkKSBjb25zdDsKKworICAvKioKKwkgKiBcYnJpZWYgRGV0ZXJtaW5lIHdoZXRoZXIgYSBnaXZlbiBhbGdvcml0aG0gaXMgc3VwcG9ydGVkCisJICoKKwkgKiBBIGNhbGwgdGhhdCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciBhIGdpdmVuIAorCSAqIGRpZ2VzdCBhbGdvcml0aG0gaXMgc3VwcG9ydGVkCisJICovCisKKwl2aXJ0dWFsIGJvb2wgYWxnb3JpdGhtU3VwcG9ydGVkKFhTRUNDcnlwdG9IYXNoOjpIYXNoVHlwZSBhbGcpIGNvbnN0OworCisJLy9AfQorCisJLyoqIEBuYW1lIEVuY29kaW5nIGZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gYSBCYXNlNjQgZW5jb2Rlci9kZWNvZGVyIGltcGxlbWVudGF0aW9uLgorCSAqCisJICogQ2FsbCB1c2VkIGJ5IHRoZSBsaWJyYXJ5IHRvIG9idGFpbiBhIEJhc2U2NCAKKwkgKiBlbmNvZGVyL2RlY29kZXIuCisJICoKKwkgKiBAbm90ZSBOU1MgZG8gaW1wbGVtZW50IEJhc2U2NCwgYnV0IGludGVybmFsCisJICogaW1wbGVtZW50YXRpb24gKFhTQ3J5cHQpIGlzIHVzZWQgaW5zdGVhZC4KKwkgKgorCSAqIEByZXR1cm5zIFBvaW50ZXIgdG8gdGhlIG5ldyBCYXNlNjQgZW5jb2Rlci4KKwkgKiBAc2VlIFhTQ3J5cHRDcnlwdG9CYXNlNjQKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0Jhc2U2NCAqIGJhc2U2NCgpIGNvbnN0OworCisJLy9AfQorCisJLyoqIEBuYW1lIEtleXMgYW5kIENlcnRpZmljYXRlcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gYSBEU0Ega2V5IGltcGxlbWVudGF0aW9uIG9iamVjdC4KKwkgKiAKKwkgKiBDYWxsIHVzZWQgYnkgdGhlIGxpYnJhcnkgdG8gb2J0YWluIGEgRFNBIGtleSBvYmplY3QuCisJICoKKwkgKiBAcmV0dXJucyBQb2ludGVyIHRvIHRoZSBuZXcgRFNBIGtleQorCSAqIEBzZWUgTlNTQ3J5cHRvS2V5RFNBCisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXlEU0EgKiBrZXlEU0EoKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gYW4gUlNBIGtleSBpbXBsZW1lbnRhdGlvbiBvYmplY3QuCisJICogCisJICogQ2FsbCB1c2VkIGJ5IHRoZSBsaWJyYXJ5IHRvIG9idGFpbiBhbiBOU1MgUlNBIGtleSBvYmplY3QuCisJICoKKwkgKiBAcmV0dXJucyBQb2ludGVyIHRvIHRoZSBuZXcgUlNBIGtleQorCSAqIEBzZWUgTlNTQ3J5cHRvS2V5UlNBCisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXlSU0EgKiBrZXlSU0EoKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gYW4gWDUwOSBpbXBsZW1lbnRhdGlvbiBvYmplY3QuCisJICogCisJICogQ2FsbCB1c2VkIGJ5IHRoZSBsaWJyYXJ5IHRvIG9idGFpbiBhbiBvYmplY3QgdGhhdCBjYW4gd29yaworCSAqIHdpdGggWDUwOSBjZXJ0aWZpY2F0ZXMuCisJICoKKwkgKiBAcmV0dXJucyBQb2ludGVyIHRvIHRoZSBuZXcgWDUwOSBvYmplY3QKKwkgKiBAc2VlIE5TU0NyeXB0b1g1MDkKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b1g1MDkgKiBYNTA5KCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgRGV0ZXJtaW5lIHdoZXRoZXIgYSBnaXZlbiBhbGdvcml0aG0gaXMgc3VwcG9ydGVkCisJICoKKwkgKiBBIGNhbGwgdGhhdCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciBhIGdpdmVuIAorCSAqIHN5bW1ldHJpYyBhbGdvcml0aG0gaXMgc3VwcG9ydGVkCisJICovCisKKwl2aXJ0dWFsIGJvb2wgYWxnb3JpdGhtU3VwcG9ydGVkKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OlN5bW1ldHJpY0tleVR5cGUgYWxnKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gYSBTeW1tZXRyaWMgS2V5IGltcGxlbWVudGF0aW9uIG9iamVjdC4KKwkgKgorCSAqIENhbGwgdXNlZCBieSB0aGUgbGlicmFyeSB0byBvYnRhaW4gYSBidWxrIGVuY3J5cHRpb24KKwkgKiBvYmplY3QuCisJICoKKwkgKiBAcmV0dXJucyBQb2ludGVyIHRvIHRoZSBuZXcgU3ltbWV0cmljS2V5IG9iamVjdAorCSAqIEBzZWUgWFNFQ0NyeXB0b1N5bW1ldHJpY0tleQorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvU3ltbWV0cmljS2V5ICoga2V5U3ltbWV0cmljKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OlN5bW1ldHJpY0tleVR5cGUgYWxnKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBPYnRhaW4gc29tZSByYW5kb20gb2N0ZXRzCisJICoKKwkgKiBGb3IgZ2VuZXJhdGlvbiBvZiBJVnMgYW5kIHRoZSBsaWtlLCB0aGUgbGlicmFyeSBuZWVkcyB0byBiZSBhYmxlCisJICogdG8gb2J0YWluICJyYW5kb20iIG9jdGV0cy4gIFRoZSBsaWJyYXJ5IHVzZXMgdGhpcyBjYWxsIHRvIHRoZSAKKwkgKiBjcnlwdG8gcHJvdmlkZXIgdG8gb2J0YWluIHdoYXQgaXQgbmVlZHMuCisJICoKKwkgKiBAcGFyYW0gYnVmZmVyIFRoZSBidWZmZXIgdG8gcGxhY2UgdGhlIHJhbmRvbSBkYXRhIGluCisJICogQHBhcmFtIG51bU9jdGV0cyBOdW1iZXIgb2YgYnl0ZXMgcmVxdWlyZWQKKwkgKiBAcmV0dXJucyBOdW1iZXIgb2YgYnl0ZXMgb2J0YWluZWQuCisJICovCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRSYW5kb20odW5zaWduZWQgY2hhciAqIGJ1ZmZlciwgdW5zaWduZWQgaW50IG51bU9jdGV0cykgY29uc3Q7CisKKyAgLyoqCisJICogXGJyaWVmIFRyYW5zbGF0ZSBCNjQgSTJPUyBpbnRlZ2VyIHRvIGEgTlNTIFNFQ0l0ZW0uCisJICoKKwkgKiBEZWNvZGVzIGEgQmFzZTY0IChkczpDcnlwdG9CaW5hcnkpIGludGVnZXIgaW50byBTRUNJdGVtLgorCSAqCisJICogQHBhcmFtIGI2NCBCYXNlIDY0IHN0cmluZworCSAqIEBwYXJhbSBiNjRMZW4gTGVuZ3RoIG9mIGJhc2U2NCBzdHJpbmcKKwkgKiBAcGFyYW0gcmV0TGVuIFBhcmFtZXRlciB0byBob2xkIGxlbmd0aCBvZiByZXR1cm4gaW50ZWdlcgorCSAqLworCisJc3RhdGljIFNFQ0l0ZW0gKiBiNjQyU0koY29uc3QgY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGI2NExlbik7CisKKyAgLyoqCisJICogXGJyaWVmIFRyYW5zbGF0ZSBhIFNFQ0l0ZW0gdG8gYSBCNjQgSTJPUyBpbnRlZ2VyIC4KKwkgKgorCSAqIEVuY29kZXMgYSBTRUNJdGVtIGluIEkyT1NQIGJhc2U2NCBlbmNvZGVkIGZvcm1hdC4KKwkgKgorCSAqIEBwYXJhbSBuIEJ1ZmZlciBob2xkaW5nIHRoZSBTRUNJdGVtCisJICogQHBhcmFtIG5MZW4gTGVuZ3RoIG9mIGRhdGEgaW4gYnVmZmVyCisJICogQHBhcmFtIHJldExlbiBQYXJhbWV0ZXIgdG8gaG9sZCBsZW5ndGggb2YgcmV0dXJuIGludGVnZXIKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gYSBidWZmZXIgaG9sZGluZyB0aGUgZW5jb2RlZCBkYXRhIAorCSAqICh0cmFuc2ZlcnMgb3duZXJzaGlwKQorCSAqLworCisJc3RhdGljIHVuc2lnbmVkIGNoYXIgKiBTSTJiNjQoU0VDSXRlbSAqIG4sIHVuc2lnbmVkIGludCAmcmV0TGVuKTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBJbmZvcm1hdGlvbiBGdW5jdGlvbnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJucyBhIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIENyeXB0byBQcm92aWRlcgorCSAqLworCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldFByb3ZpZGVyTmFtZSgpIGNvbnN0OworCisJLy9AfQorCisKK3ByaXZhdGU6CisKKwl2b2lkIEluaXQoY29uc3QgY2hhciAqIGRiRGlyKTsKKwlzdGF0aWMgaW50IG1faW5pdGlhbGlzZWQ7CisKK307CisKKy8qXEB9Ki8KKworI2VuZGlmIC8qIEhBVkVfTlNTICovCisjZW5kaWYgLyogTlNTQ1JZUFRPUFJPVklERVJfSU5DTFVERSAqLworCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvTlNTL05TU0NyeXB0b1N5bW1ldHJpY0tleS5jcHAgYi9jL3NyYy9lbmMvTlNTL05TU0NyeXB0b1N5bW1ldHJpY0tleS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODUxOGQ4MAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9OU1MvTlNTQ3J5cHRvU3ltbWV0cmljS2V5LmNwcApAQCAtMCwwICsxLDU4OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNDcnlwdG9TeW1tZXRyaWNLZXkgOj0gQnVsayBlbmNyeXB0aW9uIGFsZ29yaXRobXMgc2hvdWxkIGFsbCBiZQorICoJCQkJCQkJaW1wbGVtZW50ZWQgdmlhIHRoaXMgaW50ZXJmYWNlCisgKgorICogQXV0aG9yKHMpOiBNaWxhbiBUb21pYworICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1BsYXRmb3JtVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL05TUy9OU1NDcnlwdG9Qcm92aWRlci5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvTlNTL05TU0NyeXB0b1N5bW1ldHJpY0tleS5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvRXhjZXB0aW9uLmhwcD4KKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9KYW5pdG9yLmhwcD4KKworI2lmIGRlZmluZWQgKEhBVkVfTlNTKQorCisjaW5jbHVkZSAicHJlcnJvci5oIgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdHJ1Y3RvcgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTlNTQ3J5cHRvU3ltbWV0cmljS2V5OjpOU1NDcnlwdG9TeW1tZXRyaWNLZXkoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6U3ltbWV0cmljS2V5VHlwZSB0eXBlKSA6CittX2tleVR5cGUodHlwZSksCittX2tleU1vZGUoTU9ERV9DQkMpLAorbXBfayhOVUxMKSwKK21faW5pdGlhbGlzZWQoZmFsc2UpIHsKKworCQorCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgRGVzdHJ1Y3RvcgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTlNTQ3J5cHRvU3ltbWV0cmljS2V5Ojp+TlNTQ3J5cHRvU3ltbWV0cmljS2V5KCkgeworCisgIGlmIChtcF9rICE9IDApCisJICBQSzExX0ZyZWVTeW1LZXkobXBfayk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBHZXQga2V5IHR5cGUKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OlN5bW1ldHJpY0tleVR5cGUgTlNTQ3J5cHRvU3ltbWV0cmljS2V5OjpnZXRTeW1tZXRyaWNLZXlUeXBlKCkgY29uc3QgeworCisJcmV0dXJuIG1fa2V5VHlwZTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdldCBwcm92aWRlciBuYW1lCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjb25zdCBYTUxDaCAqIE5TU0NyeXB0b1N5bW1ldHJpY0tleTo6Z2V0UHJvdmlkZXJOYW1lKCkgY29uc3QgeworCisJcmV0dXJuIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clBST1ZOU1M7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBSZXBsaWNhdGUga2V5CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYU0VDQ3J5cHRvS2V5ICogTlNTQ3J5cHRvU3ltbWV0cmljS2V5OjpjbG9uZSgpIGNvbnN0IHsKKworCU5TU0NyeXB0b1N5bW1ldHJpY0tleSAqIHJldDsKKworCVhTRUNuZXcocmV0LCBOU1NDcnlwdG9TeW1tZXRyaWNLZXkobV9rZXlUeXBlKSk7CisKKwlpZiAobXBfayAhPSAwKSB7CisKKyAgICByZXQtPm1wX2sgPSBQSzExX1JlZmVyZW5jZVN5bUtleShtcF9rKTsKKworICB9CisKKyAgcmV0LT5tX2tleVR5cGUgPSBtX2tleVR5cGU7CisKKwlyZXR1cm4gcmV0OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU3RvcmUgdGhlIGtleSB2YWx1ZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBOU1NDcnlwdG9TeW1tZXRyaWNLZXk6OnNldEtleShjb25zdCB1bnNpZ25lZCBjaGFyICoga2V5LCB1bnNpZ25lZCBpbnQga2V5TGVuKSB7CisKKyAgaWYgKG1wX2sgIT0gMCkgeworCQlQSzExX0ZyZWVTeW1LZXkobXBfayk7CisgICAgbXBfayA9IDA7CisgIH0KKworICBDS19NRUNIQU5JU01fVFlQRSBjaXBoZXJNZWNoOworCisgIHN3aXRjaCAobV9rZXlUeXBlKSB7CisKKwljYXNlIChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfM0RFU18xOTIpIDoKKworICAgIGNpcGhlck1lY2ggPSBDS01fREVTM19DQkNfUEFEOworICAgIGJyZWFrOworICAKKyAgY2FzZSAoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZX0FFU18xMjgpIDoKKyAgY2FzZSAoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZX0FFU18xOTIpIDoKKyAgY2FzZSAoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZX0FFU18yNTYpIDoKKyAgCisgICAgY2lwaGVyTWVjaCA9IENLTV9BRVNfQ0JDX1BBRDsKKyAgICBicmVhazsKKyAgCisgIGRlZmF1bHQ6CisgIAorICAgIHRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6U3ltbWV0cmljRXJyb3IsCisJCQkiTlNTOlN5bW1ldHJpY0tleSAtIFVua25vd24ga2V5IHR5cGUiKTsKKworICB9CisKKyAgLy8gVHVybiB0aGUgcmF3IGtleSBpbnRvIGEgU0VDSXRlbQorICBTRUNJdGVtIGtleUl0ZW07CisgIGtleUl0ZW0uZGF0YSA9ICh1bnNpZ25lZCBjaGFyKilrZXk7CisgIGtleUl0ZW0ubGVuID0ga2V5TGVuOworCisgIFBLMTFTbG90SW5mbyAqIHNsb3QgPSBQSzExX0dldEJlc3RTbG90KGNpcGhlck1lY2gsIE5VTEwpOworCisgIC8vIFR1cm4gdGhlIFNFQ0l0ZW0gaW50byBhIGtleSBvYmplY3QKKyAgbXBfayA9IFBLMTFfSW1wb3J0U3ltS2V5KHNsb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNpcGhlck1lY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFBLMTFfT3JpZ2luVW53cmFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICBDS0FfRU5DUllQVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmtleUl0ZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworCisgIGlmIChzbG90KQorCSAgUEsxMV9GcmVlU2xvdChzbG90KTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIERlY3J5cHQgY29udGV4dCBpbml0aWFsaXNhdGlvbgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaW50IE5TU0NyeXB0b1N5bW1ldHJpY0tleTo6ZGVjcnlwdEN0eEluaXQoY29uc3QgdW5zaWduZWQgY2hhciAqIGl2KSB7CisKKwkvLyBSZXR1cm5zIGFtb3VudCBvZiBJViBkYXRhIHVzZWQgKGluIGJ5dGVzKQorCS8vIFNldHMgbV9pbml0aWFsaXNlZCBpZiB0aGUga2V5IGlzIE9LIGFuZCB0aGUgSVYgaXMgT0suCisKKwlpZiAobV9pbml0aWFsaXNlZCkKKwkJcmV0dXJuIDA7CisKKwlpZiAobXBfayA9PSAwKSB7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCSJOU1M6U3ltbWV0cmljS2V5IC0gQ2Fubm90IGluaXRpYWxpc2Ugd2l0aG91dCBrZXkiKTsgCisKKwl9CisKKwkvLyBTZXQgdXAgdGhlIGNvbnRleHQgYWNjb3JkaW5nIHRvIHRoZSByZXF1aXJlZCBjaXBoZXIgdHlwZQorCisJc3dpdGNoIChtX2tleVR5cGUpIHsKKworCWNhc2UgKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV8zREVTXzE5MikgOgorCisJCS8vIEEgM0RFUyBrZXkKKworCQlpZiAobV9rZXlNb2RlID09IE1PREVfQ0JDKSB7CisKKwkJCWlmIChpdiA9PSBOVUxMKSB7CisKKwkJCQlyZXR1cm4gMDsJLy8gQ2Fubm90IGluaXRpYWxpc2Ugd2l0aG91dCBhbiBJVgorCisJCQl9CisKKyAgICAgIFNFQ0l0ZW0gaXZJdGVtOworICAgICAgaXZJdGVtLmRhdGEgPSAodW5zaWduZWQgY2hhciopaXY7CisgICAgICBpdkl0ZW0ubGVuID0gODsKKwkgIGludCBlbmNyeXB0QWxnID0gKG1fZG9QYWQgPT0gdHJ1ZSA/IENLTV9ERVMzX0NCQ19QQUQgOiBDS01fREVTM19DQkMpOworCisgICAgICBTRUNJdGVtICogc2VjUGFyYW0gPSBQSzExX1BhcmFtRnJvbUlWKGVuY3J5cHRBbGcsICZpdkl0ZW0pOworICAgICAgbXBfY3R4ID0gUEsxMV9DcmVhdGVDb250ZXh0QnlTeW1LZXkoZW5jcnlwdEFsZywgQ0tBX0RFQ1JZUFQsIG1wX2ssIHNlY1BhcmFtKTsKKworICAgICAgaWYgKHNlY1BhcmFtKQorICAgICAgICBTRUNJVEVNX0ZyZWVJdGVtKHNlY1BhcmFtLCBQUl9UUlVFKTsKKwkJCQorICAgICAgbV9pdlNpemUgPSA4OworCQl9CisJCWVsc2UgeworCQkJU0VDSXRlbSAqIHNlY1BhcmFtID0gUEsxMV9QYXJhbUZyb21JVihDS01fREVTM19FQ0IsIE5VTEwpOworICAgICAgbXBfY3R4ID0gUEsxMV9DcmVhdGVDb250ZXh0QnlTeW1LZXkoQ0tNX0RFUzNfRUNCLCBDS0FfREVDUllQVCwgbXBfaywgc2VjUGFyYW0pOworICAgICAgaWYgKHNlY1BhcmFtKQorICAgICAgICBTRUNJVEVNX0ZyZWVJdGVtKHNlY1BhcmFtLCBQUl9UUlVFKTsJCisgICAgICBtX2l2U2l6ZSA9IDA7CisJCX0KKworCQlicmVhazsKKworCWNhc2UgKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV9BRVNfMTI4KSA6CisgIGNhc2UgKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV9BRVNfMTkyKSA6CisgIGNhc2UgKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV9BRVNfMjU2KSA6CisKKwkJLy8gQW4gQUVTIGtleQorCisJCWlmIChtX2tleU1vZGUgPT0gTU9ERV9DQkMpIHsKKworCQkJaWYgKGl2ID09IE5VTEwpIHsKKworCQkJCXJldHVybiAwOwkvLyBDYW5ub3QgaW5pdGlhbGlzZSB3aXRob3V0IGFuIElWCisKKwkJCX0KKworICAgICAgU0VDSXRlbSBpdkl0ZW07CisgICAgICBpdkl0ZW0uZGF0YSA9ICh1bnNpZ25lZCBjaGFyKilpdjsKKyAgICAgIGl2SXRlbS5sZW4gPSAxNjsKKworICAgICAgU0VDSXRlbSAqIHNlY1BhcmFtID0gUEsxMV9QYXJhbUZyb21JVihDS01fQUVTX0NCQ19QQUQsICZpdkl0ZW0pOworICAgICAgbXBfY3R4ID0gUEsxMV9DcmVhdGVDb250ZXh0QnlTeW1LZXkoQ0tNX0FFU19DQkNfUEFELCBDS0FfREVDUllQVCwgbXBfaywgc2VjUGFyYW0pOworCisgICAgICBpZiAoc2VjUGFyYW0pCisgICAgICAgIFNFQ0lURU1fRnJlZUl0ZW0oc2VjUGFyYW0sIFBSX1RSVUUpOworCisgICAgICBtX2l2U2l6ZSA9IDE2OworCisJCX0KKwkJZWxzZSB7CisJCQlTRUNJdGVtICogc2VjUGFyYW0gPSBQSzExX1BhcmFtRnJvbUlWKENLTV9BRVNfRUNCLCBOVUxMKTsKKwkJCW1wX2N0eCA9IFBLMTFfQ3JlYXRlQ29udGV4dEJ5U3ltS2V5KENLTV9BRVNfRUNCLCBDS0FfREVDUllQVCwgbXBfaywgc2VjUGFyYW0pOworICAgICAgaWYgKHNlY1BhcmFtKQorICAgICAgICBTRUNJVEVNX0ZyZWVJdGVtKHNlY1BhcmFtLCBQUl9UUlVFKTsKKworICAgICAgbV9pdlNpemUgPSAwOworCisJCX0KKworCQlicmVhazsKKwkKKwlkZWZhdWx0IDoKKworCQkvLyBDYW5ub3QgZG8gdGhpcyB3aXRob3V0IGFuIElWCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6U3ltbWV0cmljRXJyb3IsCisJCQkiTlNTOlN5bW1ldHJpY0tleSAtIFVua25vd24ga2V5IHR5cGUiKTsgCisKKwl9CisKKwkvLyBSZXNldCBzb21lIHBhcmFtZXRlcnMKKwltX2luaXRpYWxpc2VkID0gdHJ1ZTsKKworCS8vIFJldHVybiBudW1iZXIgb2YgYnl0ZXMgY2hld2VkIHVwIGJ5IElWCisJcmV0dXJuIG1faXZTaXplOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIERlY3J5cHQgaW5pdGlhbGlzYXRpb24KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Jvb2wgTlNTQ3J5cHRvU3ltbWV0cmljS2V5OjpkZWNyeXB0SW5pdChib29sIGRvUGFkLCAKKwkJCQkJCQkJCQkJU3ltbWV0cmljS2V5TW9kZSBtb2RlLCAKKwkJCQkJCQkJCQkJY29uc3QgdW5zaWduZWQgY2hhciAqIGl2KSB7CisKKwltX2luaXRpYWxpc2VkID0gZmFsc2U7CisgICAgbV9pdlNlbnQgPSBpdiA9PSBOVUxMOworCW1fZG9QYWQgPSBkb1BhZDsKKwltX2tleU1vZGUgPSBtb2RlOworCWRlY3J5cHRDdHhJbml0KGl2KTsKKwlyZXR1cm4gdHJ1ZTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIERlY3J5cHQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3Vuc2lnbmVkIGludCBOU1NDcnlwdG9TeW1tZXRyaWNLZXk6OmRlY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqIGluQnVmLCAKKwkJCQkJCQkJIHVuc2lnbmVkIGNoYXIgKiBwbGFpbkJ1ZiwgCisJCQkJCQkJCSB1bnNpZ25lZCBpbnQgaW5MZW5ndGgsCisJCQkJCQkJCSB1bnNpZ25lZCBpbnQgbWF4T3V0TGVuZ3RoKSB7CisKKwkvLyBOT1RFOiBUaGlzIHdvbid0IGFjdHVhbGx5IHN0b3AgTlNTIGJsb3dpbmcgdGhlIGJ1ZmZlciwgc28gdGhlIG9udXMgaXMKKwkvLyBvbiB0aGUgY2FsbGVyLgorCisJdW5zaWduZWQgaW50IG9mZnNldCA9IDA7CisJaWYgKCFtX2luaXRpYWxpc2VkKSB7CisJCW9mZnNldCA9IGRlY3J5cHRDdHhJbml0KGluQnVmKTsKKwkJaWYgKG9mZnNldCA+IGluTGVuZ3RoKSB7CisJCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlN5bW1ldHJpY0Vycm9yLAorCQkJIk5TUzpTeW1tZXRyaWNLZXkgLSBOb3QgZW5vdWdoIGRhdGEgcGFzc2VkIGluIHRvIGdldCBJViIpOworCQl9CisJfQorCisJaW50IG91dGwgPSBpbkxlbmd0aCAtIG9mZnNldDsKKworICBTRUNTdGF0dXMgcyA9IFBLMTFfQ2lwaGVyT3AobXBfY3R4LCBwbGFpbkJ1ZiwgJm91dGwsIG1heE91dExlbmd0aCwgKHVuc2lnbmVkIGNoYXIqKWluQnVmLCBpbkxlbmd0aCk7CisKKyAgaWYgKHMgIT0gU0VDU3VjY2VzcykgeworCisgICAgdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCSJOU1M6U3ltbWV0cmljS2V5IC0gRXJyb3IgZHVyaW5nIE5TUyBkZWNyeXB0Iik7CisKKyAgfQorCisgIC8vIHJlbW92ZSBJVgorICBpZiAobV9pdlNlbnQpIHsKKyAgICBtZW1tb3ZlKHBsYWluQnVmLCAmcGxhaW5CdWZbbV9pdlNpemVdLCBvdXRsKTsKKyAgICBvdXRsIC09IG1faXZTaXplOworICAgIG1faXZTZW50ID0gZmFsc2U7CisgIH0KKworCXJldHVybiBvdXRsOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgRGVjcnlwdCBmaW5hbGlzYXRpb24KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3Vuc2lnbmVkIGludCBOU1NDcnlwdG9TeW1tZXRyaWNLZXk6OmRlY3J5cHRGaW5pc2godW5zaWduZWQgY2hhciAqIHBsYWluQnVmLAorCQkJCQkJCQkJCQkJCSAgdW5zaWduZWQgaW50IG1heE91dExlbmd0aCkgeworCisJdW5zaWduZWQgaW50IG91dGwgPSAwOworCisgIFNFQ1N0YXR1cyBzID0gUEsxMV9EaWdlc3RGaW5hbChtcF9jdHgsIHBsYWluQnVmLCAmb3V0bCwgbWF4T3V0TGVuZ3RoKTsKKworICBpZiAocyAhPSBTRUNTdWNjZXNzKSB7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCSJOU1M6U3ltbWV0cmljS2V5IC0gRXJyb3IgZHVyaW5nIE5TUyBkZWNyeXB0IGZpbmFsaXNhdGlvbiIpOworCisgIH0KKworICBQSzExX0Rlc3Ryb3lDb250ZXh0KG1wX2N0eCwgUFJfVFJVRSk7CisgIG1wX2N0eCA9IE5VTEw7CisgIG1faW5pdGlhbGlzZWQgPSBmYWxzZTsKKworICByZXR1cm4gb3V0bDsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBFbmNyeXB0IGluaXRpYWxpc2F0aW9uCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitib29sIE5TU0NyeXB0b1N5bW1ldHJpY0tleTo6ZW5jcnlwdEluaXQoYm9vbCBkb1BhZCwgCisJCQkJCQkJCQkJCVN5bW1ldHJpY0tleU1vZGUgbW9kZSwgCisJCQkJCQkJCQkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKiBpdikgeworCisJaWYgKG1faW5pdGlhbGlzZWQgPT0gdHJ1ZSkKKwkJcmV0dXJuIHRydWU7CisKKwltX2RvUGFkID0gZG9QYWQ7CisJbV9rZXlNb2RlID0gbW9kZTsKKwkKKwlpZiAobXBfayA9PSAwKSB7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCSJOU1M6U3ltbWV0cmljS2V5IC0gQ2Fubm90IGluaXRpYWxpc2Ugd2l0aG91dCBrZXkiKTsgCisKKwl9CisKKwkvLyBEbyBzb21lIHBhcmFtZXRlciBpbml0aWFsaXNhdGlvbgorCW1faW5pdGlhbGlzZWQgPSB0cnVlOworCisJLy8gU2V0IHVwIHRoZSBjb250ZXh0IGFjY29yZGluZyB0byB0aGUgcmVxdWlyZWQgY2lwaGVyIHR5cGUKKworCWNvbnN0IHVuc2lnbmVkIGNoYXIgKiB1c2VkSVYgPSBOVUxMOworCXVuc2lnbmVkIGNoYXIgZ2VuSVZbMjU2XTsKKworCS8vIFRlbGwgdGhlIGxpYnJhcnkgdGhhdCB0aGUgSVYgc3RpbGwgaGFzIHRvIGJlIHNlbnQKKworCW1faXZTZW50ID0gZmFsc2U7CisKKwlzd2l0Y2ggKG1fa2V5VHlwZSkgeworCisJY2FzZSAoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZXzNERVNfMTkyKSA6CisKKwkJLy8gQSAzREVTIGtleQorCisJCWlmIChtX2tleU1vZGUgPT0gTU9ERV9DQkMpIHsKKworCQkJaWYgKGl2ID09IE5VTEwpIHsKKwkJCQkKKyAgICAgICAgU0VDU3RhdHVzIHMgPSBQSzExX0dlbmVyYXRlUmFuZG9tKGdlbklWLCA4KTsKKworICAgICAgICBpZiAocyAhPSBTRUNTdWNjZXNzKSB7CisKKwkJCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCQkJCSJOU1M6U3ltbWV0cmljS2V5IC0gRXJyb3IgZ2VuZXJhdGluZyByYW5kb20gSVYiKTsKKworICAgICAgICB9CisKKwkJCQl1c2VkSVYgPSBnZW5JVjsKKworCQkJfQorCQkJZWxzZQorCQkJCXVzZWRJViA9IGl2OworCisgICAgICBTRUNJdGVtIGl2SXRlbTsKKyAgICAgIGl2SXRlbS5kYXRhID0gKHVuc2lnbmVkIGNoYXIqKXVzZWRJVjsKKyAgICAgIGl2SXRlbS5sZW4gPSA4OworCSAgaW50IGVuY3J5cHRBbGcgPSAobV9kb1BhZCA9PSB0cnVlID8gQ0tNX0RFUzNfQ0JDX1BBRCA6IENLTV9ERVMzX0NCQyk7CisKKyAgICAgIFNFQ0l0ZW0gKiBzZWNQYXJhbSA9IFBLMTFfUGFyYW1Gcm9tSVYoZW5jcnlwdEFsZywgJml2SXRlbSk7CisgICAgICBtcF9jdHggPSBQSzExX0NyZWF0ZUNvbnRleHRCeVN5bUtleShlbmNyeXB0QWxnLCBDS0FfRU5DUllQVCwgbXBfaywgc2VjUGFyYW0pOworCisgICAgICBpZiAoc2VjUGFyYW0pCisgICAgICAgIFNFQ0lURU1fRnJlZUl0ZW0oc2VjUGFyYW0sIFBSX1RSVUUpOworCisgICAgICBtX2l2U2l6ZSA9IDg7CisJCX0KKwkJZWxzZSB7CisgICAgICBtcF9jdHggPSBQSzExX0NyZWF0ZUNvbnRleHRCeVN5bUtleShDS01fREVTM19FQ0IsIENLQV9FTkNSWVBULCBtcF9rLCBOVUxMKTsKKworICAgICAgbV9pdlNpemUgPSAwOworCQl9CisKKwkJYnJlYWs7CisKKwljYXNlIChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfQUVTXzEyOCkgOgorICBjYXNlIChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfQUVTXzE5MikgOgorICBjYXNlIChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfQUVTXzI1NikgOgorCisJCS8vIEFuIEFFUyBrZXkKKworCQlpZiAobV9rZXlNb2RlID09IE1PREVfQ0JDKSB7CisKKwkJCWlmIChpdiA9PSBOVUxMKSB7CisJCQkJCisJCQkJU0VDU3RhdHVzIHMgPSBQSzExX0dlbmVyYXRlUmFuZG9tKGdlbklWLCAxNik7CisJCQkJCisgICAgICAgIGlmIChzICE9IFNFQ1N1Y2Nlc3MpIHsKKworCQkJCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlN5bW1ldHJpY0Vycm9yLAorCQkJCQkJIk5TUzpTeW1tZXRyaWNLZXkgLSBFcnJvciBnZW5lcmF0aW5nIHJhbmRvbSBJViIpOworCisgICAgICAgIH0KKworCQkJCXVzZWRJViA9IGdlbklWOworCisJCQl9CisJCQllbHNlCisJCQkJdXNlZElWID0gaXY7CisKKwkJCVNFQ0l0ZW0gaXZJdGVtOworICAgICAgaXZJdGVtLmRhdGEgPSAodW5zaWduZWQgY2hhciopdXNlZElWOworICAgICAgaXZJdGVtLmxlbiA9IDE2OworCisgICAgICBTRUNJdGVtICogc2VjUGFyYW0gPSBQSzExX1BhcmFtRnJvbUlWKENLTV9BRVNfQ0JDX1BBRCwgJml2SXRlbSk7CisgICAgICBtcF9jdHggPSBQSzExX0NyZWF0ZUNvbnRleHRCeVN5bUtleShDS01fQUVTX0NCQ19QQUQsIENLQV9FTkNSWVBULCBtcF9rLCBzZWNQYXJhbSk7CisKKyAgICAgIGlmIChzZWNQYXJhbSkKKyAgICAgICAgU0VDSVRFTV9GcmVlSXRlbShzZWNQYXJhbSwgUFJfVFJVRSk7CisKKyAgICAgIG1faXZTaXplID0gMTY7CisJCX0KKwkJZWxzZSB7CisJCQlTRUNJdGVtICogc2VjUGFyYW0gPSBQSzExX1BhcmFtRnJvbUlWKENLTV9BRVNfRUNCLCBOVUxMKTsKKwkJCW1wX2N0eCA9IFBLMTFfQ3JlYXRlQ29udGV4dEJ5U3ltS2V5KENLTV9BRVNfRUNCLCBDS0FfRU5DUllQVCwgbXBfaywgc2VjUGFyYW0pOworCQkJaWYgKHNlY1BhcmFtKQorCQkJCVNFQ0lURU1fRnJlZUl0ZW0oc2VjUGFyYW0sIFBSX1RSVUUpOworCisgICAgICBtX2l2U2l6ZSA9IDA7CisJCX0KKworCQlicmVhazsKKworCWRlZmF1bHQgOgorCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6U3ltbWV0cmljRXJyb3IsCisJCQkiTlNTOlN5bW1ldHJpY0tleSAtIFVua25vd24ga2V5IHR5cGUiKTsgCisKKwl9CisKKwkvLyBBZGQgSVYKKwlpZiAobV9rZXlNb2RlID09IE1PREVfQ0JDKSB7CisKKwkJbWVtY3B5KG1fbGFzdEJsb2NrLCB1c2VkSVYsIG1faXZTaXplKTsKKworCX0KKworCXJldHVybiB0cnVlOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgRW5jcnlwdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordW5zaWduZWQgaW50IE5TU0NyeXB0b1N5bW1ldHJpY0tleTo6ZW5jcnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICogaW5CdWYsIAorCQkJCQkJCQkgdW5zaWduZWQgY2hhciAqIGNpcGhlckJ1ZiwgCisJCQkJCQkJCSB1bnNpZ25lZCBpbnQgaW5MZW5ndGgsCisJCQkJCQkJCSB1bnNpZ25lZCBpbnQgbWF4T3V0TGVuZ3RoKSB7CisKKyAgaWYgKG1faW5pdGlhbGlzZWQgPT0gZmFsc2UpIHsKKworCQllbmNyeXB0SW5pdCgpOworCisJfQorCisJLy8gTk9URTogVGhpcyB3b24ndCBhY3R1YWxseSBzdG9wIE5TUyBibG93aW5nIHRoZSBidWZmZXIsIHNvIHRoZSBvbnVzIGlzCisJLy8gb24gdGhlIGNhbGxlci4KKworCXVuc2lnbmVkIGludCBvZmZzZXQgPSAwOworCWlmIChtX2l2U2VudCA9PSBmYWxzZSAmJiBtX2l2U2l6ZSA+IDApIHsKKworCQltZW1jcHkoY2lwaGVyQnVmLCBtX2xhc3RCbG9jaywgbV9pdlNpemUpOworCQltX2l2U2VudCA9IHRydWU7CisKKwkJb2Zmc2V0ID0gbV9pdlNpemU7CisKKwl9CisKKwlpbnQgb3V0bCA9IDA7CisKKwlpZiAoaW5MZW5ndGggKyBvZmZzZXQgPiBtYXhPdXRMZW5ndGgpIHsKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlN5bW1ldHJpY0Vycm9yLAorCQkJIk5TUzpTeW1tZXRyaWNLZXkgLSBOb3QgZW5vdWdoIHNwYWNlIGluIG91dHB1dCBidWZmZXIgZm9yIGVuY3J5cHQiKTsgCisKKwl9CisKKyAgU0VDU3RhdHVzIHMgPSBQSzExX0NpcGhlck9wKG1wX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjaXBoZXJCdWZbb2Zmc2V0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4T3V0TGVuZ3RoIC0gb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIqKWluQnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5MZW5ndGgpOworCisJaWYgKHMgIT0gU0VDU3VjY2VzcykgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6U3ltbWV0cmljRXJyb3IsCisJCQkiTlNTOlN5bW1ldHJpY0tleSAtIEVycm9yIGR1cmluZyBOU1MgZW5jcnlwdCIpOyAKKworCX0KKworCXJldHVybiBvdXRsICsgb2Zmc2V0OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgRW5jcnlwdCBmaW5hbGlzYXRpb24KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3Vuc2lnbmVkIGludCBOU1NDcnlwdG9TeW1tZXRyaWNLZXk6OmVuY3J5cHRGaW5pc2godW5zaWduZWQgY2hhciAqIGNpcGhlckJ1ZiwKKwkJCQkJCQkJCQkJCQkgIHVuc2lnbmVkIGludCBtYXhPdXRMZW5ndGgpIHsKKworCXVuc2lnbmVkIGludCBvdXRsID0gMDsKKworCVNFQ1N0YXR1cyBzID0gUEsxMV9EaWdlc3RGaW5hbChtcF9jdHgsIGNpcGhlckJ1ZiwgJm91dGwsIG1heE91dExlbmd0aCk7CisKKwkJaWYgKHMgIT0gU0VDU3VjY2VzcykgeworCisJCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlN5bW1ldHJpY0Vycm9yLAorCQkJCSJOU1M6U3ltbWV0cmljS2V5IC0gRXJyb3IgZHVyaW5nIE5TUyBlbmNyeXB0Iik7IAorCisJfQorCisJUEsxMV9EZXN0cm95Q29udGV4dChtcF9jdHgsIFBSX1RSVUUpOworCW1wX2N0eCA9IE5VTEw7CisKKwkvLyBTZXR1cCBzbyBjYW4gYmUgcmUtdXNlZAorCW1faW5pdGlhbGlzZWQgPSBmYWxzZTsKKworCXJldHVybiBvdXRsOworCit9CisKKyNlbmRpZiAvKiBIQVZFX05TUyAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL05TUy9OU1NDcnlwdG9TeW1tZXRyaWNLZXkuaHBwIGIvYy9zcmMvZW5jL05TUy9OU1NDcnlwdG9TeW1tZXRyaWNLZXkuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyMGE5NDAKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9lbmMvTlNTL05TU0NyeXB0b1N5bW1ldHJpY0tleS5ocHAKQEAgLTAsMCArMSwyOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYU0VDQ3J5cHRvU3ltbWV0cmljS2V5IDo9IEJ1bGsgZW5jcnlwdGlvbiBhbGdvcml0aG1zIHNob3VsZCBhbGwgYmUKKyAqCQkJCQkJCWltcGxlbWVudGVkIHZpYSB0aGlzIGludGVyZmFjZQorICoKKyAqIEF1dGhvcihzKTogTWlsYW4gVG9taWMKKyAqCisgKi8KKworI2lmbmRlZiBOU1NDUllQVE9TWU1NRVRSSUNLRVlfSU5DTFVERQorI2RlZmluZSBOU1NDUllQVE9TWU1NRVRSSUNLRVlfSU5DTFVERQorCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9TeW1tZXRyaWNLZXkuaHBwPgorCisjaWYgZGVmaW5lZCAoSEFWRV9OU1MpCisKKyNpbmNsdWRlICJuc3MvcGsxMWZ1bmMuaCIKKyNpbmNsdWRlICJuc3MvbnNzLmgiCisKKyNkZWZpbmUgTlNTX01BWF9CTE9DS19TSVpFCQkzMgorCisvKioKKyAqIFxpbmdyb3VwIG5zc2NyeXB0bworICogQHsKKyAqLworCisvKioKKyAqIFxicmllZiBCYXNlIGludGVyZmFjZSBkZWZpbml0aW9uIGZvciBzeW1tZXRyaWMga2V5IG1hdGVyaWFsLgorICoKKyAqIFRoaXMgaXMgdGhlIGltcGxlbWVudGF0aW9uIGZvciBhIHdyYXBwZXIgb2YgTlNTIHN5bW1ldHJpYworICogY3J5cHRvIGZ1bmN0aW9ucy4KKyAqLworCitjbGFzcyBEU0lHX0VYUE9SVCBOU1NDcnlwdG9TeW1tZXRyaWNLZXkgOiBwdWJsaWMgWFNFQ0NyeXB0b1N5bW1ldHJpY0tleSB7CisKK3B1YmxpYyA6CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKwkKKwkvKioKKwkgKiBcYnJpZWYgQ29uc3RydWN0b3IKKwkgKgorCSAqIENhbiBvbmx5IGNvbnN0cnVjdCBhIFN5bW1ldHJpYyBrZXkgaWYgd2Uga25vdyB3aGF0IHR5cGUgaXQgaXMKKwkgKgorCSAqIEBwYXJhbSB0eXBlIFRoZSB0eXBlIG9mIGtleSAoaS5lLiBhbGdvcml0aG0pIHRvIGNyZWF0ZQorCSAqKi8KKworCU5TU0NyeXB0b1N5bW1ldHJpY0tleShYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpTeW1tZXRyaWNLZXlUeXBlIHR5cGUpOworCisJLyoqCisJICogXGJyaWVmIERlc3RydWN0b3IgCisJICoKKwkgKiBJbXBsZW1lbnRhdGlvbnMgbXVzdCBlbnN1cmUgdGhhdCB0aGUgaGVsZCBrZXkgaXMgcHJvcGVybHkgZGVzdHJveWVkCisJICogKG92ZXJ3cml0dGVuKSB3aGVuIGtleSBvYmplY3RzIGFyZSBkZWxldGVkLgorCSAqLworCisJdmlydHVhbCB+TlNTQ3J5cHRvU3ltbWV0cmljS2V5KCk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgQmFzaWMgQ3J5cHRvS2V5IEludGVyZmFjZSBtZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFJldHVybnMgYSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSBjcnlwdG8gb3duZXIgb2YgdGhpcyBsaWJyYXJ5LgorCSAqLworCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldFByb3ZpZGVyTmFtZSgpIGNvbnN0OworCisJLyoqCisJICogXGJyaWVmIENsb25lIHRoZSBrZXkKKwkgKgorCSAqIEFsbCBrZXlzIG5lZWQgdG8gYmUgYWJsZSB0byBjb3B5IHRoZW1zZWx2ZXMgYW5kIHJldHVybgorCSAqIGEgcG9pbnRlciB0byB0aGUgY29weS4gIFRoaXMgYWxsb3dzIHRoZSBsaWJyYXJ5IHRvIAorCSAqIGR1cGxpY2F0ZSBrZXlzLgorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvS2V5ICogY2xvbmUoKSBjb25zdDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBTeW1tZXRyaWMga2V5IGludGVyZmFjZSBtZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFdoYXQgdHlwZSBvZiBzeW1tZXRyaWMga2V5IGlzIHRoaXM/CisJICoKKwkgKiBUaGVyZSBhcmUgYSBudW1iZXIgb2YgZGlmZmVyZW50IHR5cGVzIG9mIHN5bW1ldHJpYyBrZXkuCisJICogVGhpcyBtZXRob2QgYWxsb3dzIGNhbGxlcnMgdG8gZGV0ZXJtaW5lIHRoZSB0eXBlIG9mIHRoaXMKKwkgKiBwYXJ0aWN1bGFyIGtleQorCSAqLworCisJU3ltbWV0cmljS2V5VHlwZSBnZXRTeW1tZXRyaWNLZXlUeXBlKHZvaWQpIGNvbnN0OworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUga2V5IGZyb20gdGhlIHByb3ZpZGVkIGJ5dGVzCisJICoKKwkgKiBTeW1tZXRyaWMga2V5cyBjYW4gYWxsIGJlIGxvYWRlZCBmcm9tIGEgYnVmZmVyIGNvbnRhaW5pbmcgYSBzZXJpZXMKKwkgKiBvZiBieXRlcy4KKwkgKgorCSAqIEBwYXJhbSBrZXkgVGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZSBrZXkgYnl0ZXMKKwkgKiBAcGFyYW0ga2V5TGVuIFRoZSBudW1iZXIgb2Yga2V5IGJ5dGVzIGluIHRoZSBidWZmZXIKKwkgKgorCSAqLworCisJdm9pZCBzZXRLZXkoY29uc3QgdW5zaWduZWQgY2hhciAqIGtleSwgdW5zaWduZWQgaW50IGtleUxlbik7CisKKwkvKioKKwkgKiBcYnJpZWYgSW5pdGlhbGlzZSBhbiBkZWNyeXB0aW9uIHByb2Nlc3MKKwkgKgorCSAqIFNldHVwIHRoZSBrZXkgdG8gZ2V0IHJlYWR5IGZvciBhIGRlY3J5cHRpb24gc2Vzc2lvbi4KKwkgKiBDYWxsZXJzIGNhbiBwYXNzIGluIGFuIElWLiAgSWYgb25lIGlzIG5vdCBwcm92aWRlZCwgCisJICogYnV0IHRoZSBhbGdvcml0aG0gcmVxdWlyZXMgb25lIChlLmcuIDNERVNfQ0JDKSwgdGhlbiAKKwkgKiBpbXBsZW1lbnRhdGlvbnMgc2hvdWxkIGFzc3VtZSB0aGF0IHRoZSBzdGFydCBvZiB0aGUKKwkgKiBjaXBoZXIgdGV4dCBzdHJlYW0gd2lsbCBpbiBmYWN0IGJlIHRoZSBJVi4KKwkgKgorCSAqIEBwYXJhbSBkb1BhZCBCeSBkZWZhdWx0LCB3ZSBwZXJmb3JtIHBhZGRpbmcgZm9yIGxhc3QgYmxvY2sKKwkgKiBAcGFyYW0gbW9kZSBtb2RlIHNlbGVjdGlvbiAoQ3VycmVudGx5IEVDQiBvciBDQkMgbW9kZSBvbmx5KQorCSAqIEBwYXJhbSBpdiBJbml0aWFsaXNhdGlvbiBWZWN0b3IgdG8gYmUgdXNlZC4gIE5VTEwgaWYgb25lIGlzCisJICogbm90IHJlcXVpcmVkLCBvciBpZiBJViB3aWxsIGJlIHNldCBmcm9tIGRhdGEgc3RyZWFtCisJICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgaW5pdGlhbGlzYXRpb24gc3VjY2VlZGVkLgorCSAqLworCisJdmlydHVhbCBib29sIGRlY3J5cHRJbml0KGJvb2wgZG9QYWQgPSB0cnVlLAorCQkJCQkJCSBTeW1tZXRyaWNLZXlNb2RlIG1vZGUgPSBNT0RFX0NCQywKKwkJCQkJCQkgY29uc3QgdW5zaWduZWQgY2hhciAqIGl2ID0gTlVMTCk7CisKKwkvKioKKwkgKiBcYnJpZWYgQ29udGludWUgYW4gZGVjcnlwdCBvcGVyYXRpb24gdXNpbmcgdGhpcyBrZXkuCisJICoKKwkgKiBEZWNyeXB0aW9uIG11c3QgaGF2ZSBiZWVuIHNldCB1cCB1c2luZyBhbiBlbmNyeXB0SW5pdAorCSAqIGNhbGwuICBUYWtlcyB0aGUgaW5CdWYgYW5kIGNvbnRpbnVlcyBhIGRlY3J5cHRpb24gb3BlcmF0aW9uLAorCSAqIHdyaXRpbmcgdGhlIG91dHB1dCB0byBvdXRCdWYuCisJICoKKwkgKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGhhdmUgdG8gZ3VhcmFudGVlIHRoYXQgYWxsIGlucHV0CisJICogd2lsbCBiZSBkZWNyeXB0ZWQuICBJbiBjYXNlcyB3aGVyZSB0aGUgaW5wdXQgaXMgbm90IGEgbGVuZ3RoCisJICogb2YgdGhlIGJsb2NrIHNpemUsIHRoZSBpbXBsZW1lbnRhdGlvbiB3aWxsIG5lZWQgdG8gaG9sZCBiYWNrCisJICogY2lwaGVyLXRleHQgdG8gYmUgaGFuZGxlcyBkdXJpbmcgdGhlIG5leHQgb3BlcmF0aW9uLgorCSAqCisJICogQG5vdGUgV2hpbGUgbWF4T3V0TGVuZ3RoIGlzIGRlZmluZWQsIHRoZSBOU1MgbGlicmFyaWVzIHdpbGwKKwkgKiBub3QgcmVhZCB0aGUgdmFsdWUsIHNvIHRoZSBvbnVzIGlzIG9uIHRoZSBjYWxsZXIgdG8gZW5zdXJlIHRoZQorCSAqIGJ1ZmZlciBpcyBsb25nIGVub3VnaCB0byBob2xkIHRoZSBvdXRwdXQhCisJICoKKwkgKiBAcGFyYW0gaW5CdWYgT2N0ZXRzIHRvIGJlIGRlY3J5cHRlZAorCSAqIEBwYXJhbSBwbGFpbkJ1ZiBCdWZmZXIgdG8gcGxhY2Ugb3V0cHV0IGluCisJICogQHBhcmFtIGluTGVuZ3RoIE51bWJlciBvZiBieXRlcyB0byBkZWNyeXB0CisJICogQHBhcmFtIG1heE91dExlbmd0aCBNYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byBwbGFjZSBpbiBvdXRwdXQgCisJICogYnVmZmVyCisJICogQHJldHVybnMgQnl0ZXMgcGxhY2VkIGluIG91dHB1dCBCdWZmZXIKKwkgKi8KKworCXZpcnR1YWwgdW5zaWduZWQgaW50IGRlY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqIGluQnVmLCAKKwkJCQkJCQkJIHVuc2lnbmVkIGNoYXIgKiBwbGFpbkJ1ZiwgCisJCQkJCQkJCSB1bnNpZ25lZCBpbnQgaW5MZW5ndGgsCisJCQkJCQkJCSB1bnNpZ25lZCBpbnQgbWF4T3V0TGVuZ3RoKTsKKworCS8qKgorCSAqIFxicmllZiBGaW5pc2ggYSBkZWNyeXB0aW9uIG9wZXJhdGlvbgorCSAqCisJICogQ29tcGxldGUgYSBkZWNyeXB0aW9uIHByb2Nlc3MuICBObyBjaXBoZXIgdGV4dCBpcyBwYXNzZWQgaW4sCisJICogYXMgdGhpcyBzaG91bGQgc2ltcGx5IGJlIHJlbW92aW5nIGFueSByZW1haW5pbmcgdGV4dCBmcm9tCisJICogdGhlIHBsYWluIHN0b3JhZ2UgYnVmZmVyLgorCSAqCisJICogTWF5IHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBzb21lIHN0b3JlZCBjaXBoZXIgdGV4dAorCSAqIHRoYXQgaXMgbm90IHRoZSBsZW5ndGggb2YgdGhlIGJsb2NrIHNpemUgZm9yIGJsb2NrIGFsZ29yaXRobXMuCisJICoKKwkgKiBAbm90ZSBXaGlsZSBtYXhPdXRMZW5ndGggaXMgZGVmaW5lZCwgdGhlIE5TUyBsaWJyYXJpZXMgd2lsbAorCSAqIG5vdCByZWFkIHRoZSB2YWx1ZSwgc28gdGhlIG9udXMgaXMgb24gdGhlIGNhbGxlciB0byBlbnN1cmUgdGhlCisJICogYnVmZmVyIGlzIGxvbmcgZW5vdWdoIHRvIGhvbGQgdGhlIG91dHB1dCEKKwkgKgorCSAqIEBwYXJhbSBwbGFpbkJ1ZiBCdWZmZXIgdG8gcGxhY2UgYW55IHJlbWFpbmluZyBwbGFpbiB0ZXh0IGluCisJICogQHBhcmFtIG1heE91dExlbmd0aCBNYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byBwYWNlIGluIG91dHB1dAorCSAqIEByZXR1cm5zIEJ5dGVzIHBsYWNlZCBpbiBvdXRwdXQgYnVmZmVyCisJICovCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCBkZWNyeXB0RmluaXNoKHVuc2lnbmVkIGNoYXIgKiBwbGFpbkJ1ZiwKKwkJCQkJCQkJCSAgIHVuc2lnbmVkIGludCBtYXhPdXRMZW5ndGgpOworCisJLyoqCisJICogXGJyaWVmIEluaXRpYWxpc2UgYW4gZW5jcnlwdGlvbiBwcm9jZXNzCisJICoKKwkgKiBTZXR1cCB0aGUga2V5IHRvIGdldCByZWFkeSBmb3IgYSBkZWNyeXB0aW9uIHNlc3Npb24uCisJICogQ2FsbGVycyBjYW4gcGFzcyBpbiBhbiBJVi4gIElmIG9uZSBpcyBub3QgcHJvdmlkZWQsIAorCSAqIGJ1dCB0aGUgYWxnb3JpdGhtIHJlcXVpcmVzIG9uZSAoZS5nLiAzREVTX0NCQyksIHRoZW4KKwkgKiBpbXBsZW1lbnRhdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGdlbmVyYXRlIG9uZS4KKwkgKgorCSAqIEBwYXJhbSBkb1BhZCBCeSBkZWZhdWx0LCB3ZSBwZXJmb3JtIHBhZGRpbmcgZm9yIGxhc3QgYmxvY2sKKwkgKiBAcGFyYW0gbW9kZSBXaGF0IG1vZGUgdG8gaGFuZGxlIGJsb2NrcyAoQ3VycmVudGx5IENCQyBvciBFQ0IpCisJICogQHBhcmFtIGl2IEluaXRpYWxpc2F0aW9uIFZlY3RvciB0byBiZSB1c2VkLiAgTlVMTCBpZiBvbmUgaXMKKwkgKiBub3QgcmVxdWlyZWQsIG9yIGlmIElWIGlzIHRvIGJlIGdlbmVyYXRlZAorCSAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGluaXRpYWxpc2F0aW9uIHN1Y2NlZWRlZC4KKwkgKi8KKworCXZpcnR1YWwgYm9vbCBlbmNyeXB0SW5pdChib29sIGRvUGFkID0gdHJ1ZSwgCisJCQkJCQkJIFN5bW1ldHJpY0tleU1vZGUgbW9kZSA9IE1PREVfQ0JDLAorCQkJCQkJCSBjb25zdCB1bnNpZ25lZCBjaGFyICogaXYgPSBOVUxMKTsKKworCS8qKgorCSAqIFxicmllZiBDb250aW51ZSBhbiBlbmNyeXB0aW9uIG9wZXJhdGlvbiB1c2luZyB0aGlzIGtleS4KKwkgKgorCSAqIEVuY3J5cHRpb24gbXVzdCBoYXZlIGJlZW4gc2V0IHVwIHVzaW5nIGFuIGVuY3J5cHRJbml0CisJICogY2FsbC4gIFRha2VzIHRoZSBpbkJ1ZiBhbmQgY29udGludWVzIGEgZW5jcnlwdGlvbiBvcGVyYXRpb24sCisJICogd3JpdGluZyB0aGUgb3V0cHV0IHRvIG91dEJ1Zi4KKwkgKgorCSAqIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgaGF2ZSB0byBndWFyYW50ZWUgdGhhdCBhbGwgaW5wdXQKKwkgKiB3aWxsIGJlIGVuY3J5cHRlZC4gIEluIGNhc2VzIHdoZXJlIHRoZSBpbnB1dCBpcyBub3QgYSBsZW5ndGgKKwkgKiBvZiB0aGUgYmxvY2sgc2l6ZSwgdGhlIGltcGxlbWVudGF0aW9uIHdpbGwgbmVlZCB0byBob2xkIGJhY2sKKwkgKiBwbGFpbi10ZXh0IHRvIGJlIGhhbmRsZWQgZHVyaW5nIHRoZSBuZXh0IG9wZXJhdGlvbi4KKwkgKgorCSAqIEBwYXJhbSBpbkJ1ZiBPY3RldHMgdG8gYmUgZW5jcnlwdGVkCisJICogQHBhcmFtIGNpcGhlckJ1ZiBCdWZmZXIgdG8gcGxhY2Ugb3V0cHV0IGluCisJICogQHBhcmFtIGluTGVuZ3RoIE51bWJlciBvZiBieXRlcyB0byBlbmNyeXB0CisJICogQHBhcmFtIG1heE91dExlbmd0aCBNYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byBwbGFjZSBpbiBvdXRwdXQgCisJICogYnVmZmVyCisJICogQHJldHVybnMgQnl0ZXMgcGxhY2VkIGluIG91dHB1dCBCdWZmZXIKKwkgKi8KKworCXZpcnR1YWwgdW5zaWduZWQgaW50IGVuY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqIGluQnVmLCAKKwkJCQkJCQkJIHVuc2lnbmVkIGNoYXIgKiBjaXBoZXJCdWYsIAorCQkJCQkJCQkgdW5zaWduZWQgaW50IGluTGVuZ3RoLAorCQkJCQkJCQkgdW5zaWduZWQgaW50IG1heE91dExlbmd0aCk7CisKKwkvKioKKwkgKiBcYnJpZWYgRmluaXNoIGEgZW5jcnlwdGlvbiBvcGVyYXRpb24KKwkgKgorCSAqIENvbXBsZXRlIGEgZW5jcnlwdGlvbiBwcm9jZXNzLiAgTm8gcGxhaW4gdGV4dCBpcyBwYXNzZWQgaW4sCisJICogYXMgdGhpcyBzaG91bGQgc2ltcGx5IGJlIHJlbW92aW5nIGFueSByZW1haW5pbmcgdGV4dCBmcm9tCisJICogdGhlIHBsYWluIHN0b3JhZ2UgYnVmZmVyIGFuZCBjcmVhdGluZyBhIGZpbmFsIHBhZGRlZCBibG9jay4KKwkgKgorCSAqIFBhZGRpbmcgaXMgcGVyZm9ybWVkIGJ5IHRha2luZyB0aGUgcmVtYWluaW5nIGJsb2NrLCBhbmQKKwkgKiBzZXR0aW5nIHRoZSBsYXN0IGJ5dGUgdG8gZXF1YWwgdGhlIG51bWJlciBvZiBieXRlcyBvZgorCSAqIHBhZGRpbmcuICBJZiB0aGUgcGxhaW4gd2FzIGFuIGV4YWN0IG11bHRpcGxlIG9mIHRoZSBibG9jayBzaXplLAorCSAqIHRoZW4gYW4gZXh0cmEgYmxvY2sgb2YgcGFkZGluZyB3aWxsIGJlIHVzZWQuICBGb3IgZXhhbXBsZSwgaWYgCisJICogdGhlIGJsb2NrIHNpemUgaXMgOCBieXRlcywgYW5kIHRoZXJlIHdlcmUgdGhyZWUgcmVtYWluaW5nIHBsYWluCisJICogdGV4dCBieXRlcyAoMHgwMSwgMHgwMiBhbmQgMHgwMyksIHRoZSBmaW5hbCBibG9jayB3aWxsIGJlIDoKKwkgKgorCSAqIDB4MDEwMjAzPz8/Pz8/Pz8wNQorCSAqCisJICogQHBhcmFtIGNpcGhlckJ1ZiBCdWZmZXIgdG8gcGxhY2UgZmluYWwgYmxvY2sgb2YgY2lwaGVyIHRleHQgaW4KKwkgKiBAcGFyYW0gbWF4T3V0TGVuZ3RoIE1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvIHBhY2UgaW4gb3V0cHV0CisJICogQHJldHVybnMgQnl0ZXMgcGxhY2VkIGluIG91dHB1dCBidWZmZXIKKwkgKi8KKworCXZpcnR1YWwgdW5zaWduZWQgaW50IGVuY3J5cHRGaW5pc2godW5zaWduZWQgY2hhciAqIHBsYWluQnVmLAorCQkJCQkJCQkJICAgdW5zaWduZWQgaW50IG1heE91dExlbmd0aCk7CisKKwkvL0B9CisKK3ByaXZhdGU6CisKKwkvLyBVbmltcGxlbWVudGVkIGNvbnN0cnVjdG9ycworCQorCU5TU0NyeXB0b1N5bW1ldHJpY0tleSgpOworCU5TU0NyeXB0b1N5bW1ldHJpY0tleShjb25zdCBOU1NDcnlwdG9TeW1tZXRyaWNLZXkgJik7CisJTlNTQ3J5cHRvU3ltbWV0cmljS2V5ICYgb3BlcmF0b3I9IChjb25zdCBOU1NDcnlwdG9TeW1tZXRyaWNLZXkgJik7CisKKwlpbnQgZGVjcnlwdEN0eEluaXQoY29uc3QgdW5zaWduZWQgY2hhciAqIGl2KTsKKworCVN5bW1ldHJpY0tleVR5cGUJCQkJbV9rZXlUeXBlOworCVN5bW1ldHJpY0tleU1vZGUJCQkJbV9rZXlNb2RlOwkJLy8gRUNCIG9yIENCQworCWJvb2wJCQkJCQkJICBtX2luaXRpYWxpc2VkOworCWJvb2wJCQkJCQkJbV9kb1BhZDsgLy9Eb2VzIHdlIG5lZWQgaXQ/ICBZZXMgd2UgZG8gLSBrZXkgd3JhcHMgYXJlIHVucGFkZGVkIGZvciAzREVTCisKKwl1bnNpZ25lZCBjaGFyCQkJCQltX2xhc3RCbG9ja1tOU1NfTUFYX0JMT0NLX1NJWkVdOworCXVuc2lnbmVkIGludAkJCQkJbV9ibG9ja1NpemU7CisgIGJvb2wJCQkJCQkJICAgIG1faXZTZW50OwkJLy8gSGFzIHRoZSBJViBiZWVuIHB1dCBpbiB0aGUgc3RyZWFtCisJdW5zaWduZWQgaW50CQkJCQltX2l2U2l6ZTsKKworICBQSzExQ29udGV4dCAqICAgICAgICAgbXBfY3R4OworCVBLMTFTeW1LZXkgKgkJCQkgIG1wX2s7CisKK307CisKKyNlbmRpZiAvKiBIQVZFX05TUyAqLworI2VuZGlmIC8qIE5TU0NSWVBUT1NZTU1FVFJJQ0tFWV9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvTlNTL05TU0NyeXB0b1g1MDkuY3BwIGIvYy9zcmMvZW5jL05TUy9OU1NDcnlwdG9YNTA5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWYxZDZhCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZW5jL05TUy9OU1NDcnlwdG9YNTA5LmNwcApAQCAtMCwwICsxLDI1NiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIE5TU0NyeXB0b1g1MDk6PSBOU1MgYmFzZWQgY2xhc3MgZm9yIGhhbmRsaW5nIFg1MDkgKFYzKSBjZXJ0aWZpY2F0ZXMKKyAqCisgKiBBdXRob3Iocyk6IE1pbGFuIFRvbWljCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9OU1MvTlNTQ3J5cHRvUHJvdmlkZXIuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL05TUy9OU1NDcnlwdG9YNTA5LmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9OU1MvTlNTQ3J5cHRvS2V5RFNBLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9OU1MvTlNTQ3J5cHRvS2V5UlNBLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvRXhjZXB0aW9uLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0NyeXB0L1hTQ3J5cHRDcnlwdG9CYXNlNjQuaHBwPgorCisjaWYgZGVmaW5lZCAoSEFWRV9OU1MpCisKKyNpbmNsdWRlIDxuc3MvY2VydC5oPgorCitleHRlcm4gIkMiIHsKKworZXh0ZXJuIENFUlRDZXJ0aWZpY2F0ZSAqCitfX0NFUlRfRGVjb2RlREVSQ2VydGlmaWNhdGUgKFNFQ0l0ZW0gKmRlclNpZ25lZENlcnQsIFBSQm9vbCBjb3B5REVSLCBjaGFyICpuaWNrbmFtZSk7CisKK30KKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9KYW5pdG9yLmhwcD4KKworWFNFQ19VU0lOR19YRVJDRVMoQXJyYXlKYW5pdG9yKTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdHJ1Y3RvcgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTlNTQ3J5cHRvWDUwOTo6TlNTQ3J5cHRvWDUwOSgpIDogbV9ERVJYNTA5KCIiKSwgbXBfY2VydChOVUxMKSB7IAorCisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdHJ1Y3RvcgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTlNTQ3J5cHRvWDUwOTo6TlNTQ3J5cHRvWDUwOShDRVJUQ2VydGlmaWNhdGUgKiBwQ2VydCkgeworCisJLy8gQnVpbGQgdGhpcyBmcm9tIGFuIGV4aXN0aW5nIENFUlRDZXJ0aWZpY2F0ZSBzdHJ1Y3R1cmUKKworCW1wX2NlcnQgPSBwQ2VydDsKKworCXVuc2lnbmVkIGNoYXIgKiBlbmNDZXJ0OworCXVuc2lnbmVkIGxvbmcgbGVuID0gbXBfY2VydC0+ZGVyQ2VydC5sZW4gKiAyOworCVhTRUNuZXcoZW5jQ2VydCwgdW5zaWduZWQgY2hhciBbbGVuXSk7CisJQXJyYXlKYW5pdG9yPHVuc2lnbmVkIGNoYXI+IGpfZW5jQ2VydChlbmNDZXJ0KTsKKworCS8vIEJhc2U2NCBFbmNvZGUKKwlYU0NyeXB0Q3J5cHRvQmFzZTY0IGI2NDsKKworCWI2NC5lbmNvZGVJbml0KCk7CisJdW5zaWduZWQgbG9uZyBlbmNDZXJ0TGVuID0gYjY0LmVuY29kZShtcF9jZXJ0LT5kZXJDZXJ0LmRhdGEsIG1wX2NlcnQtPmRlckNlcnQubGVuLCBlbmNDZXJ0LCBsZW4pOworCWVuY0NlcnRMZW4gKz0gYjY0LmVuY29kZUZpbmlzaCgmZW5jQ2VydFtlbmNDZXJ0TGVuXSwgbGVuIC0gZW5jQ2VydExlbik7CisKKwkvLyBDaGVjayB0aGUgcmVzdWx0CisJaWYgKGVuY0NlcnQgPT0gTlVMTCkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6WDUwOUVycm9yLAorCQkJIk5TU1g1MDk6TlNTWDUwOSAtIEVycm9yIGVuY29kaW5nIGNlcnRpZmljYXRlIik7CisKKwl9CisKKwltX0RFUlg1MDkuc2JNZW1jcHlJbihlbmNDZXJ0LCBlbmNDZXJ0TGVuKTsKKwltX0RFUlg1MDlbZW5jQ2VydExlbl0gPSAnXDAnOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgRGVzdHJ1Y3RvcgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTlNTQ3J5cHRvWDUwOTo6fk5TU0NyeXB0b1g1MDkoKSB7CisKKyAgaWYgKG1wX2NlcnQgIT0gMCkKKwkgIENFUlRfRGVzdHJveUNlcnRpZmljYXRlKG1wX2NlcnQpOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgTG9hZCBYNTA5CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIE5TU0NyeXB0b1g1MDk6OmxvYWRYNTA5QmFzZTY0QmluKGNvbnN0IGNoYXIgKiBidWYsIHVuc2lnbmVkIGludCBsZW4pIHsKKworCXVuc2lnbmVkIGNoYXIgKiByYXdDZXJ0OworCVhTRUNuZXcocmF3Q2VydCwgdW5zaWduZWQgY2hhciBbbGVuXSk7CisJQXJyYXlKYW5pdG9yPHVuc2lnbmVkIGNoYXI+IGpfcmF3Q2VydChyYXdDZXJ0KTsKKworCS8vIEJhc2U2NCBEZWNvZGUKKwlYU0NyeXB0Q3J5cHRvQmFzZTY0IGI2NDsKKworCWI2NC5kZWNvZGVJbml0KCk7CisJdW5zaWduZWQgaW50IHJhd0NlcnRMZW4gPSBiNjQuZGVjb2RlKCh1bnNpZ25lZCBjaGFyICopIGJ1ZiwgbGVuLCByYXdDZXJ0LCBsZW4pOworCXJhd0NlcnRMZW4gKz0gYjY0LmRlY29kZUZpbmlzaCgmcmF3Q2VydFtyYXdDZXJ0TGVuXSwgbGVuIC0gcmF3Q2VydExlbik7CisKKwkvLyBOb3cgbG9hZCBjZXJ0aWZpY2F0ZQorCisJU0VDSXRlbSBpOworCWkudHlwZSA9IHNpQnVmZmVyOworCWkuZGF0YSA9IHJhd0NlcnQ7CisJaS5sZW4gPSByYXdDZXJ0TGVuOworCisJU0VDSXRlbSAqY2VydHNbMV07CisJY2VydHNbMF0gPSAmaTsKKworCS8vIEZvciByZXR1cm5pbmcKKwlDRVJUQ2VydGlmaWNhdGUgKipjZXJ0QXJyYXkgPSBOVUxMOworCisJLyogbXBfY2VydCA9IF9fQ0VSVF9EZWNvZGVERVJDZXJ0aWZpY2F0ZSgmaSwgUFJfVFJVRSwgTlVMTCk7ICovCisJQ0VSVF9JbXBvcnRDZXJ0cyhDRVJUX0dldERlZmF1bHRDZXJ0REIoKSwgY2VydFVzYWdlVXNlckNlcnRJbXBvcnQsIDEsIGNlcnRzLCAKKwkJJmNlcnRBcnJheSwgUFJfRkFMU0UsIFBSX0ZBTFNFLCBOVUxMKTsKKwkvLyAxLiBJZiB5b3UgZ290IGFuIGNvbXBpbGVyIGVycm9yIGhlcmUgYWRkIGludG8gIm5zcy9jZXJ0LmgiIGRlbGFjYXJpb24gZm9yCisJLy8gQ0VSVF9EZWNvZGVERVJDZXJ0aWZpY2F0ZSgpICh0aGUgc2FtZSBwYXJhbWV0ZXJzIGFzIGZvciBfX0NFUlRfRGVjb2RlREVSQ2VydGlmaWNhdGUoKSkKKwkvLyAyLiBTaW5jZSBfX0NFUlRfRGVjb2RlREVSQ2VydGlmaWNhdGUgaXMgYSBwcml2YXRlIGZ1bmN0aW9uIHdlIG1pZ2h0IGNvbnNpZGVyIHVzaW5nCisJLy8gX19DRVJUX05ld1RlbXBDZXJ0aWZpY2F0ZSgpIG9yIENFUlRfSW1wb3J0Q2VydHMoKSBpbnN0ZWFkLgorCisJLy8gTm93IG1hcCB0byBvdXIgY2VydAorCWlmIChjZXJ0QXJyYXkgPT0gTlVMTCkgeworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Olg1MDlFcnJvciwKKwkJCSJOU1NYNTA5OmxvYWRYNTA5QmFzZTY0QmluIC0gRXJyb3IgZGVjb2RpbmcgY2VydGlmaWNhdGUiKTsKKwl9CisKKwltcF9jZXJ0ID0gY2VydEFycmF5WzBdOworCisJaWYgKG1wX2NlcnQgPT0gMCkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6WDUwOUVycm9yLAorCQkJIk5TU1g1MDk6bG9hZFg1MDlCYXNlNjRCaW4gLSBFcnJvciBkZWNvZGluZyBjZXJ0aWZpY2F0ZSIpOworCisJfQorCisJbV9ERVJYNTA5LnNiTWVtY3B5SW4oYnVmLCBsZW4pOworCW1fREVSWDUwOVtsZW5dID0gJ1wwJzsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdldCBOU1MgcHJvdmlkZXIgbmFtZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY29uc3QgWE1MQ2ggKiBOU1NDcnlwdG9YNTA5OjpnZXRQcm92aWRlck5hbWUoKSBjb25zdCB7CisKKwlyZXR1cm4gRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyUFJPVk5TUzsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdldCBwdWJsaWNrZXkgdHlwZTogUlNBIG9yIERTQQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWFNFQ0NyeXB0b0tleTo6S2V5VHlwZSBOU1NDcnlwdG9YNTA5OjpnZXRQdWJsaWNLZXlUeXBlKCkgY29uc3QgeworCisgIGlmIChtcF9jZXJ0ID09IE5VTEwpIHsKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Olg1MDlFcnJvciwKKwkJCSJOU1M6WDUwOSAtIGdldFB1YmxpY0tleVR5cGUgY2FsbGVkIGJlZm9yZSBYNTA5IGxvYWRlZCIpOworCisJfQorCisgIFhTRUNDcnlwdG9LZXk6OktleVR5cGUga3QgPSBYU0VDQ3J5cHRvS2V5OjpLRVlfTk9ORTsKKworICBTRUNLRVlQdWJsaWNLZXkgKiBwdWJrZXkgPSBDRVJUX0V4dHJhY3RQdWJsaWNLZXkobXBfY2VydCk7CisKKyAgaWYgKHB1YmtleSA9PSAwKSB7CisKKyAgICB0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Olg1MDlFcnJvciwKKwkJCSJOU1M6WDUwOSAtIEVycm9yIGV4dHJhY3RpbmcgcHVibGljIGtleSBmcm9tIFg1MDkgY2VydGlmaWNhdGUiKTsKKworICB9CisKKwlpZiAocHVia2V5LT5rZXlUeXBlID09IGRzYUtleSkKKwkJa3QgPSBYU0VDQ3J5cHRvS2V5OjpLRVlfRFNBX1BVQkxJQzsKKworCWlmIChwdWJrZXktPmtleVR5cGUgPT0gcnNhS2V5KQorCQlrdCA9IFhTRUNDcnlwdG9LZXk6OktFWV9SU0FfUFVCTElDOworCisgIFNFQ0tFWV9EZXN0cm95UHVibGljS2V5KHB1YmtleSk7CisKKwlyZXR1cm4ga3Q7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBSZXBsaWNhdGUgcHVibGljIGtleQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWFNFQ0NyeXB0b0tleSAqIE5TU0NyeXB0b1g1MDk6OmNsb25lUHVibGljS2V5KCkgY29uc3QgeworCisJaWYgKG1wX2NlcnQgPT0gTlVMTCkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6WDUwOUVycm9yLAorCQkJIk5TUzpYNTA5IC0gY2xvbmVQdWJsaWNLZXkgY2FsbGVkIGJlZm9yZSBYNTA5IGxvYWRlZCIpOworCisJfQorCisJLy8gSW1wb3J0IHRoZSBrZXkgaW50byB0aGUgcHJvdmlkZXIgdG8gZ2V0IGEgcG9pbnRlciB0byB0aGUga2V5CisKKwlpZiAoZ2V0UHVibGljS2V5VHlwZSgpID09IFhTRUNDcnlwdG9LZXk6OktFWV9EU0FfUFVCTElDKSB7CisKKyAgICBTRUNLRVlQdWJsaWNLZXkgKiBwdWJrZXkgPSBDRVJUX0V4dHJhY3RQdWJsaWNLZXkobXBfY2VydCk7CisKKwkJLy8gTm93IHRoYXQgd2UgaGF2ZSBhIGhhbmRsZSBmb3IgdGhlIERTQSBrZXksIGNyZWF0ZSBhIERTQSBLZXkgb2JqZWN0IHRvCisJCS8vIHdyYXAgaXQgaW4KKworCQlOU1NDcnlwdG9LZXlEU0EgKiByZXQ7CisJCVhTRUNuZXcocmV0LCBOU1NDcnlwdG9LZXlEU0EocHVia2V5KSk7CisKKwkJcmV0dXJuIHJldDsKKworCX0KKworCWlmIChnZXRQdWJsaWNLZXlUeXBlKCkgPT0gWFNFQ0NyeXB0b0tleTo6S0VZX1JTQV9QVUJMSUMpIHsKKworICAgIFNFQ0tFWVB1YmxpY0tleSAqIHB1YmtleSA9IENFUlRfRXh0cmFjdFB1YmxpY0tleShtcF9jZXJ0KTsKKworCQkvLyBOb3cgdGhhdCB3ZSBoYXZlIGEgaGFuZGxlIGZvciB0aGUgRFNBIGtleSwgY3JlYXRlIGEgRFNBIEtleSBvYmplY3QgdG8KKwkJLy8gd3JhcCBpdCBpbgorCisJCU5TU0NyeXB0b0tleVJTQSAqIHJldDsKKwkJWFNFQ25ldyhyZXQsIE5TU0NyeXB0b0tleVJTQShwdWJrZXkpKTsKKworCQlyZXR1cm4gcmV0OworCisJfQorCisJcmV0dXJuIE5VTEw7CQkvLyBVbmtub3duIGtleSB0eXBlLCBidXQgbm90IG5lY2Vzc2FyaWx5IGFuIGVycm9yCisKK30KKworI2VuZGlmIC8qIEhBVkVfTlNTICovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL05TUy9OU1NDcnlwdG9YNTA5LmhwcCBiL2Mvc3JjL2VuYy9OU1MvTlNTQ3J5cHRvWDUwOS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFkMDFjOAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9OU1MvTlNTQ3J5cHRvWDUwOS5ocHAKQEAgLTAsMCArMSwxNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBOU1NDcnlwdG9YNTA5Oj0gTlNTIGJhc2VkIGNsYXNzIGZvciBoYW5kbGluZyBYNTA5IChWMykgY2VydGlmaWNhdGVzCisgKgorICogQXV0aG9yKHMpOiBNaWxhbiBUb21pYworICoKKyAqLworCisjaWZuZGVmIE5TU0NSWVBUT1g1MDlfSU5DTFVERQorI2RlZmluZSBOU1NDUllQVE9YNTA5X0lOQ0xVREUKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvWDUwOS5ocHA+CisKKyNpZiBkZWZpbmVkIChIQVZFX05TUykKKworY2xhc3MgTlNTQ3J5cHRvUHJvdmlkZXI7CisKKy8qKgorICogXGJyaWVmIE5TUyBpbXBsZW1lbnRhdGlvbiBjbGFzcyBmb3IgaW50ZXJmYWNlIGZvciBYNTA5IGNlcnRpZmljYXRlcy4KKyAqIEBpbmdyb3VwIG5zc2NyeXB0bworICoKKyAqIFRoZSBsaWJyYXJ5IHVzZXMgY2xhc3NlcyBkZXJpdmVkIGZyb20gdGhpcyB0byBwcm9jZXNzIFg1MDkgQ2VydGlmaWNhdGVzLgorICoKKyAqLworCitjbGFzcyBEU0lHX0VYUE9SVCBOU1NDcnlwdG9YNTA5IDogcHVibGljIFhTRUNDcnlwdG9YNTA5IHsKKworcHVibGljIDoKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIENvbnN0cnVjdG9yIGZvciBYNTA5IG9iamVjdHMKKwkgKgorCSAqIEVtcHR5IGN0b3IsIHVzZWQgd2hlbiBsb2FkaW5nIFg1MDkgZnJvbSBLZXlJbmZvCisJICoKKwkgKi8KKworCU5TU0NyeXB0b1g1MDkoKTsKKworICAvKioKKwkgKiBcYnJpZWYgQ29uc3RydWN0b3IgZm9yIFg1MDkgb2JqZWN0cworCSAqCisJICogVGhpcyBjdG9yIGlzIHVzZWQgd2hlbiB3ZSB3aXNoIHRvIGdldCBjZXJ0IGFzIEJhc2U2NAorICAgKgorICAgKiBAcGFyYW0gcENlcnQgcG9pbnRlciB0byBOU1MgY2VydGlmaWNhdGUgc3RydWN0dXJlCisJICoKKwkgKi8KKworCU5TU0NyeXB0b1g1MDkoQ0VSVENlcnRpZmljYXRlICogcENlcnQpOworCisJdmlydHVhbCB+TlNTQ3J5cHRvWDUwOSgpOworCisJLy9AfQorCS8qKiBAbmFtZSBLZXkgSW50ZXJmYWNlIG1ldGhvZHMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIHRoZSB0eXBlIG9mIHRoZSBrZXkgc3RvcmVkIGluIHRoZSBjZXJ0aWZpY2F0ZS4KKwkgKgorCSAqIFdpbGwgZXh0cmFjdCB0aGUga2V5IGZyb20gdGhlIGNlcnRpZmljYXRlIHRvIHJldHVybiB0aGUgYXBwcm9wcmlhdGUKKwkgKiB0eXBlCisJICoKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0tleTo6S2V5VHlwZSBnZXRQdWJsaWNLZXlUeXBlKCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IGEgY29weSBvZiB0aGUgcHVibGljIGtleS4KKwkgKgorCSAqIEV4dHJhY3RzIHRoZSBwdWJsaWMga2V5IGZyb20gdGhlIGNlcnRpZmljYXRlIGFuZCByZXR1cm5zIHRoZSBhcHByb3ByaWF0ZQorCSAqIE5TU0NyeXJwdG9LZXkgKERTQSBvciBSU0EpIG9iamVjdAorCSAqCisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXkgKiBjbG9uZVB1YmxpY0tleSgpIGNvbnN0OworCisJLyoqCisJICogXGJyaWVmIFJldHVybnMgYSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSBjcnlwdG8gb3duZXIgb2YgdGhpcyBsaWJyYXJ5LgorCSAqLworCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldFByb3ZpZGVyTmFtZSgpIGNvbnN0OworCisJLy9AfQorCisJLyoqIEBuYW1lIExvYWQgYW5kIEdldCB0aGUgY2VydGlmaWNhdGUgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgTG9hZCBhIGNlcnRpZmljYXRlIGludG8gdGhlIG9iamVjdC4KKwkgKgorCSAqIFRha2UgYSBiYXNlNjQgREVSIGVuY29kZWQgY2VydGlmaWNhdGUgYW5kIGxvYWQuCisJICoKKwkgKiBAcGFyYW0gYnVmIEEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIEJhc2U2NCBlbmNvZGVkIGNlcnRpZmljYXRlCisJICogQHBhcmFtIGxlbiBUaGUgbnVtYmVyIG9mIGJ5dGVzIG9mIGRhdGEgaW4gdGhlIGNlcnRpZmljYXRlLgorCSAqLworCisJdmlydHVhbCB2b2lkIGxvYWRYNTA5QmFzZTY0QmluKGNvbnN0IGNoYXIgKiBidWYsIHVuc2lnbmVkIGludCBsZW4pOworCisJLyoqCisJICogXGJyaWVmIEdldCBhIEJhc2U2NCBERVIgZW5jb2RlZCBjb3B5IG9mIHRoZSBjZXJ0aWZpY2F0ZQorCSAqCisJICogQHJldHVybnMgQSBzYWZlQnVmZmVyIGNvbnRhaW5pbmcgdGhlIERFUiBlbmNvZGVkIGNlcnRpZmljYXRlCisJICovCisKKwl2aXJ0dWFsIHNhZmVCdWZmZXIgJmdldERFUkVuY29kaW5nU0Iodm9pZCkge3JldHVybiBtX0RFUlg1MDk7fQorCisJLyoqCisJICogXGJyaWVmIEdldCBhIEJhc2U2NCBERVIgZW5jb2RlZCBjb3B5IG9mIHRoZSBjZXJ0aWZpY2F0ZQorCSAqCisJICogQHJldHVybnMgQSBzYWZlQnVmZmVyIGNvbnRhaW5pbmcgdGhlIERFUiBlbmNvZGVkIGNlcnRpZmljYXRlCisJICovCisKKwl2aXJ0dWFsIGNvbnN0IHNhZmVCdWZmZXIgJmdldERFUkVuY29kaW5nU0Iodm9pZCkgY29uc3Qge3JldHVybiBtX0RFUlg1MDk7fQorCisJLy9AfQorCitwcml2YXRlOgorCisJc2FmZUJ1ZmZlcgkJCQltX0RFUlg1MDk7CisJQ0VSVENlcnRpZmljYXRlICogbXBfY2VydDsKKworfTsKKworI2VuZGlmIC8qIEhBVkVfTlNTICovCisjZW5kaWYgLyogTlNTQ1JZUFRPWDUwOV9JTkNMVURFICovCisKZGlmZiAtLWdpdCBhL2Mvc3JjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9CYXNlNjQuY3BwIGIvYy9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0Jhc2U2NC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YyMTk0ZAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9CYXNlNjQuY3BwCkBAIC0wLDAgKzEsMjAzIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBPcGVuU1NMQ3J5cHRvQmFzZTY0IDo9IEJhc2UgdmlydHVhbCBjbGFzcyB0byBkZWZpbmUgYSBiYXNlNjQgZW5jb2Rlci9kZWNvZGVyCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElEJAorICoKKyAqICRMT0ckCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaWYgZGVmaW5lZCAoSEFWRV9PUEVOU1NMKQorCisjaW5jbHVkZSA8eHNlYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvQmFzZTY0LmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvRXhjZXB0aW9uLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0NyeXB0L1hTQ3J5cHRDcnlwdG9CYXNlNjQuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisKKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvSmFuaXRvci5ocHA+CisKKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIERlY29kaW5nCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIE9wZW5TU0xDcnlwdG9CYXNlNjQ6OmRlY29kZUluaXQodm9pZCkgeworCisJRVZQX0RlY29kZUluaXQoJm1fZGN0eCk7CisKK30KKwordW5zaWduZWQgaW50IE9wZW5TU0xDcnlwdG9CYXNlNjQ6OmRlY29kZShjb25zdCB1bnNpZ25lZCBjaGFyICogaW5EYXRhLCAKKwkJCQkJCSAJICAgIHVuc2lnbmVkIGludCBpbkxlbmd0aCwKKwkJCQkJCQkJdW5zaWduZWQgY2hhciAqIG91dERhdGEsCisJCQkJCQkJCXVuc2lnbmVkIGludCBvdXRMZW5ndGgpIHsKKworCWludCByYzsKKwlpbnQgb3V0TGVuOworCisJaWYgKG91dExlbmd0aCA8IGluTGVuZ3RoKSB7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpNZW1vcnlFcnJvciwKKwkJCSJPcGVuU1NMOkJhc2U2NCAtIE91dHB1dCBidWZmZXIgbm90IGJpZyBlbm91Z2ggZm9yIEJhc2U2NCBkZWNvZGUiKTsKKworCX0KKworCXJjID0gRVZQX0RlY29kZVVwZGF0ZSgmbV9kY3R4LCAKKwkJCQkJCSAgb3V0RGF0YSwgCisJCQkJCQkgICZvdXRMZW4sIAorCQkJCQkJICAodW5zaWduZWQgY2hhciAqKSBpbkRhdGEsIAorCQkJCQkJICBpbkxlbmd0aCk7CisKKwlpZiAocmMgPCAwKSB7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpCYXNlNjRFcnJvciwKKwkJCSJPcGVuU1NMOkJhc2U2NCAtIEVycm9yIGR1cmluZyBCYXNlNjQgRGVjb2RlIik7CisJfQorCisJaWYgKG91dExlbiA+IChpbnQpIG91dExlbmd0aCkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6TWVtb3J5RXJyb3IsCisJCQkiT3BlblNTTDpCYXNlNjQgLSBPdXRwdXQgYnVmZmVyIG5vdCBiaWcgZW5vdWdoIGZvciBCYXNlNjQgZGVjb2RlIGFuZCBvdmVyZmxvd2VkIik7CisKKwl9CisJCQorCXJldHVybiBvdXRMZW47CisKK30KKwordW5zaWduZWQgaW50IE9wZW5TU0xDcnlwdG9CYXNlNjQ6OmRlY29kZUZpbmlzaCh1bnNpZ25lZCBjaGFyICogb3V0RGF0YSwKKwkJCQkJCQkgCSAgICAgIHVuc2lnbmVkIGludCBvdXRMZW5ndGgpIHsKKworCWludCBvdXRMZW47CisJb3V0TGVuID0gb3V0TGVuZ3RoOworCisJRVZQX0RlY29kZUZpbmFsKCZtX2RjdHgsIG91dERhdGEsICZvdXRMZW4pOyAKKworCXJldHVybiBvdXRMZW47CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBFbmNvZGluZworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBPcGVuU1NMQ3J5cHRvQmFzZTY0OjplbmNvZGVJbml0KHZvaWQpIHsKKworCUVWUF9FbmNvZGVJbml0KCZtX2VjdHgpOworCit9CisKKwordW5zaWduZWQgaW50IE9wZW5TU0xDcnlwdG9CYXNlNjQ6OmVuY29kZShjb25zdCB1bnNpZ25lZCBjaGFyICogaW5EYXRhLCAKKwkJCQkJCSAJICAgIHVuc2lnbmVkIGludCBpbkxlbmd0aCwKKwkJCQkJCQkJdW5zaWduZWQgY2hhciAqIG91dERhdGEsCisJCQkJCQkJCXVuc2lnbmVkIGludCBvdXRMZW5ndGgpIHsKKworCWludCBvdXRMZW47CisKKwlpZiAob3V0TGVuZ3RoICsgMjQgPCBpbkxlbmd0aCkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6TWVtb3J5RXJyb3IsCisJCQkiT3BlblNTTDpCYXNlNjQgLSBPdXRwdXQgYnVmZmVyIG5vdCBiaWcgZW5vdWdoIGZvciBCYXNlNjQgZW5jb2RlIik7CisKKwl9CisKKwlFVlBfRW5jb2RlVXBkYXRlKCZtX2VjdHgsIAorCQkJCQkgIG91dERhdGEsIAorCQkJCQkgICZvdXRMZW4sIAorCQkJCQkgICh1bnNpZ25lZCBjaGFyICopIGluRGF0YSwgCisJCQkJCSAgaW5MZW5ndGgpOworCisJaWYgKG91dExlbiA+IChpbnQpIG91dExlbmd0aCkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6TWVtb3J5RXJyb3IsCisJCQkiT3BlblNTTDpCYXNlNjQgLSBPdXRwdXQgYnVmZmVyIG5vdCBiaWcgZW5vdWdoIGZvciBCYXNlNjQgZW5jb2RlIGFuZCBvdmVyZmxvd2VkIik7CisKKwl9CisJCQorCXJldHVybiBvdXRMZW47CisKK30KKwordW5zaWduZWQgaW50IE9wZW5TU0xDcnlwdG9CYXNlNjQ6OmVuY29kZUZpbmlzaCh1bnNpZ25lZCBjaGFyICogb3V0RGF0YSwKKwkJCQkJCQkgCSAgICAgIHVuc2lnbmVkIGludCBvdXRMZW5ndGgpIHsKKworCWludCBvdXRMZW47CisJb3V0TGVuID0gb3V0TGVuZ3RoOworCisJRVZQX0VuY29kZUZpbmFsKCZtX2VjdHgsIG91dERhdGEsICZvdXRMZW4pOyAKKworCXJldHVybiBvdXRMZW47CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBVdGlsaXR5IGZ1bmN0aW9ucworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQklHTlVNICogT3BlblNTTENyeXB0b0Jhc2U2NDo6YjY0MkJOKGNoYXIgKiBiNjRpbiwgdW5zaWduZWQgaW50IGxlbikgeworCisJaWYgKGxlbiA+IDEwMjQpCisJCXJldHVybiBOVUxMOworCisJaW50IGJ1ZkxlbjsKKwl1bnNpZ25lZCBjaGFyIGJ1ZlsxMDI0XTsKKy8qCisJRVZQX0VOQ09ERV9DVFggbV9kY3R4OworCUVWUF9EZWNvZGVJbml0KCZtX2RjdHgpOworCWludCByYyA9IEVWUF9EZWNvZGVVcGRhdGUoJm1fZGN0eCwgCisJCQkJCQkgIGJ1ZiwgCisJCQkJCQkgICZidWZMZW4sIAorCQkJCQkJICAodW5zaWduZWQgY2hhciAqKSBiNjRpbiwgCisJCQkJCQkgIGxlbik7CisKKwlpZiAocmMgPCAwKSB7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpCYXNlNjRFcnJvciwKKwkJCSJPcGVuU1NMOkJhc2U2NCAtIEVycm9yIGR1cmluZyBCYXNlNjQgRGVjb2RlIG9mIEJJR05VTVMiKTsKKwl9CisKKwlpbnQgZmluYWxMZW47CisJRVZQX0RlY29kZUZpbmFsKCZtX2RjdHgsICZidWZbYnVmTGVuXSwgJmZpbmFsTGVuKTsgCisKKwlidWZMZW4gKz0gZmluYWxMZW47CisqLworCVhTQ3J5cHRDcnlwdG9CYXNlNjQgKmI2NDsKKwlYU0VDbmV3KGI2NCwgWFNDcnlwdENyeXB0b0Jhc2U2NCk7CisJSmFuaXRvcjxYU0NyeXB0Q3J5cHRvQmFzZTY0PiBqX2I2NChiNjQpOworCisJYjY0LT5kZWNvZGVJbml0KCk7CisJYnVmTGVuID0gYjY0LT5kZWNvZGUoKHVuc2lnbmVkIGNoYXIgKikgYjY0aW4sIGxlbiwgYnVmLCBsZW4pOworCWJ1ZkxlbiArPSBiNjQtPmRlY29kZUZpbmlzaCgmYnVmW2J1Zkxlbl0sIGxlbi1idWZMZW4pOworCisJLy8gTm93IHRyYW5zbGF0ZSB0byBhIGJpZ251bQorCXJldHVybiBCTl9iaW4yYm4oYnVmLCBidWZMZW4sIE5VTEwpOworCit9CisKKyNlbmRpZiAvKiBIQVZFX09QRU5TU0wgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9CYXNlNjQuaHBwIGIvYy9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0Jhc2U2NC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA2NzljMQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9CYXNlNjQuaHBwCkBAIC0wLDAgKzEsMjA5IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBPcGVuU1NMQ3J5cHRvQmFzZTY0IDo9IEJhc2UgdmlydHVhbCBjbGFzcyB0byBkZWZpbmUgYSBiYXNlNjQgZW5jb2Rlci9kZWNvZGVyCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIE9QRU5TU0xDUllQVE9CQVNFNjRfSU5DTFVERQorI2RlZmluZSBPUEVOU1NMQ1JZUFRPQkFTRTY0X0lOQ0xVREUKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvQmFzZTY0LmhwcD4KKworLy8gT3BlblNTTAorI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKyMJaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KKworLyoqCisgKiBAaW5ncm91cCBvcGVuc3NsY3J5cHRvCisgKi8KKyAvKlxAeyovCisKKy8qKgorICogXGJyaWVmIEJhc2U2NCBlbmNvZGUvZGVjb2RlIGhhbmRsZXIgaW50ZXJmYWNlIGNsYXNzLgorICoKKyAqIFRoZSBYU0VDIGxpYnJhcnkgd2lsbCB1c2UgaW1wbGVtZW50YXRpb25zIG9mIHRoaXMgaW50ZXJmYWNlIAorICogZm9yIHRyYW5zbGF0aW5nIGJ5dGVzIHRvL2Zyb20gYmFzZTY0IGVuY29kaW5nLgorICoKKyAqIFVzZXMgdGhlIEVWUCBkZWNvZGUvZW5jb2RlIHJvdXRpbmVzIGluIE9wZW5TU0wgdG8gcGVyZm9ybSB0aGUgCisgKiB3b3JrLgorICogCisgKiAKKyAqIAorICogQG5vdGUgUmVxdWlyZXMgaW1wbGVtZW50YXRpb24gb2YgT3BlblNTTCA+IDAuOS42ZSBhcyB0aGVyZSB3YXMgYSBidWcKKyAqIGluIHRoZSBCYXNlNjQgZGVjb2Rpbmcgcm91dGluZXMgaW4gdGhpcyB2ZXJzaW9uIGFuZCBwcmlvci4KKyAqCisgKi8KKworCitjbGFzcyBEU0lHX0VYUE9SVCBPcGVuU1NMQ3J5cHRvQmFzZTY0IDogcHVibGljIFhTRUNDcnlwdG9CYXNlNjQgeworCisKK3B1YmxpYyA6CisKKwkKKwlPcGVuU1NMQ3J5cHRvQmFzZTY0KCkge307CisJdmlydHVhbCB+T3BlblNTTENyeXB0b0Jhc2U2NCgpIHt9OworCisJLyoqIEBuYW1lIERlY29kaW5nIEZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBJbml0aWFsaXNlIHRoZSBiYXNlNjQgb2JqZWN0LgorCSAqCisJICogSW5pdGlhbGlzZXMgdGhlIE9wZW5TU0wgZGVjb2RlIGNvbnRleHQgYW5kIGdldHMgcmVhZHkgZm9yIGRhdGEKKwkgKiB0byBiZSBkZWNvZGVkLgorCSAqCisJICovCisKKwl2aXJ0dWFsIHZvaWQgZGVjb2RlSW5pdCh2b2lkKTsKKworCS8qKgorCSAqIFxicmllZiBEZWNvZGUgc29tZSBwYXNzZWQgaW4gZGF0YS4KKwkgKgorCSAqIFBhc3MgdGhlIGVuY29kZWQgZGF0YSB0aHJvdWdoIHRoZSBPcGVuU1NMIGJhc2U2NCBkZWNvZGUgZnVuY3Rpb24KKwkgKiBhbmQgcGxhY2UgdGhlIGRhdGEgaW4gdGhlIG91dERhdGEgYnVmZmVyLgorCSAqCisJICogQG5vdGUgVGhlIE9wZW5TU0wgbGlicmFyeSBpcyB2ZXJ5IHVua2luZCBpZiB0aGUgb3V0cHV0IGJ1ZmZlciBpcworCSAqIG5vdCBsYXJnZSBlbm91Z2guICBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlciB0byBlbnN1cmUKKwkgKiB0aGUgYnVmZmVyIHdpbGwgdGFrZSB0aGUgZGF0YS4KKwkgKgorCSAqIEBwYXJhbSBpbkRhdGEgUG9pbnRlciB0byB0aGUgYnVmZmVyIGhvbGRpbmcgZW5jb2RlZCBkYXRhLgorCSAqIEBwYXJhbSBpbkxlbmd0aCBMZW5ndGggb2YgdGhlIGVuY29kZWQgZGF0YSBpbiB0aGUgYnVmZmVyCisJICogQHBhcmFtIG91dERhdGEgQnVmZmVyIHRvIHBsYWNlIGRlY29kZWQgZGF0YSBpbnRvCisJICogQHBhcmFtIG91dExlbmd0aCBNYXhpbXVtIGFtb3VudCBvZiBkYXRhIHRoYXQgY2FuIGJlIHBsYWNlZCBpbgorCSAqICAgICAgICB0aGUgYnVmZmVyLgorCSAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgYnl0ZXMgcGxhY2VkIGluIHRoZSBvdXREYXRhIGJ1ZmZlci4KKwkgKi8KKworCXZpcnR1YWwgdW5zaWduZWQgaW50IGRlY29kZShjb25zdCB1bnNpZ25lZCBjaGFyICogaW5EYXRhLCAKKwkJCQkJCSAJICAgIHVuc2lnbmVkIGludCBpbkxlbmd0aCwKKwkJCQkJCQkJdW5zaWduZWQgY2hhciAqIG91dERhdGEsCisJCQkJCQkJCXVuc2lnbmVkIGludCBvdXRMZW5ndGgpOworCisKKwkvKioKKwkgKiBcYnJpZWYgRmluaXNoIG9mZiBhIGRlY29kZS4KKwkgKgorCSAqIENsZWFuIG91dCBhbnkgZXh0cmEgZGF0YSBpbiB0aGUgT3BlblNTTCBkZWNvZGUgY29udGV4dCAKKwkgKiB2YXJpYWJsZSBpbnRvIHRoZSBvdXREYXRhIGJ1ZmZlci4KKwkgKgorCSAqIEBwYXJhbSBvdXREYXRhIEJ1ZmZlciB0byBwbGFjZSBhbnkgcmVtYWluaW5nIGRlY29kZWQgZGF0YQorCSAqIEBwYXJhbSBvdXRMZW5ndGggTWF4IGFtb3VudCBvZiBkYXRhIHRvIGJlIHBsYWNlZCBpbiB0aGUgYnVmZmVyLgorCSAqIEByZXR1cm5zIEFtb3VudCBvZiBkYXRhIHBsYWNlZCBpbiB0aGUgb3V0RGF0YSBidWZmZXIKKwkgKi8KKworCXZpcnR1YWwgdW5zaWduZWQgaW50IGRlY29kZUZpbmlzaCh1bnNpZ25lZCBjaGFyICogb3V0RGF0YSwKKwkJCQkJCQkgCSAgICAgIHVuc2lnbmVkIGludCBvdXRMZW5ndGgpOworCisJLy9AfQorCisJLyoqIEBuYW1lIEVuY29kaW5nIEZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBJbml0aWFsaXNlIHRoZSBiYXNlNjQgb2JqZWN0IGZvciBlbmNvZGluZworCSAqCisJICogR2V0IHRoZSBjb250ZXh0IHZhcmlhYmxlIHJlYWR5IGZvciBhIGJhc2U2NCBkZWNvZGUKKwkgKgorCSAqLworCisJdmlydHVhbCB2b2lkCQkgZW5jb2RlSW5pdCh2b2lkKTsKKworCS8qKgorCSAqIFxicmllZiBFbmNvZGUgc29tZSBwYXNzZWQgaW4gZGF0YS4KKwkgKgorCSAqIFBhc3MgdGhlIGRhdGEgdGhyb3VnaCB0aGUgT3BlblNTTCBCYXNlNjQgZW5jb2RlciBhbmQgcGxhY2UKKwkgKiB0aGUgb3V0cHV0IGluIHRoZSBvdXREYXRhIGJ1ZmZlci4gIFdpbGwga2VlcCBhbnkgIm92ZXJoYW5nIgorCSAqIGRhdGEgaW4gdGhlIGNvbnRleHQgYnVmZmVyIHJlYWR5IGZvciB0aGUgbmV4dCBwYXNzIG9mIGlucHV0IAorCSAqIGRhdGEuCisJICoKKwkgKiBAcGFyYW0gaW5EYXRhIFBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBob2xkaW5nIGRhdGEgdG8gYmUgZW5jb2RlZC4KKwkgKiBAcGFyYW0gaW5MZW5ndGggTGVuZ3RoIG9mIHRoZSBkYXRhIGluIHRoZSBidWZmZXIKKwkgKiBAcGFyYW0gb3V0RGF0YSBCdWZmZXIgdG8gcGxhY2UgZW5jb2RlZCBkYXRhIGludG8KKwkgKiBAcGFyYW0gb3V0TGVuZ3RoIE1heGltdW0gYW1vdW50IG9mIGRhdGEgdGhhdCBjYW4gYmUgcGxhY2VkIGluCisJICogICAgICAgIHRoZSBidWZmZXIuCisJICogQHJldHVybnMgVGhlIG51bWJlciBvZiBieXRlcyBwbGFjZWQgaW4gdGhlIG91dERhdGEgYnVmZmVyLgorCSAqLworCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgZW5jb2RlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBpbkRhdGEsIAorCQkJCQkJIAkgICAgdW5zaWduZWQgaW50IGluTGVuZ3RoLAorCQkJCQkJCQl1bnNpZ25lZCBjaGFyICogb3V0RGF0YSwKKwkJCQkJCQkJdW5zaWduZWQgaW50IG91dExlbmd0aCk7CisKKwkvKioKKwkgKiBcYnJpZWYgRmluaXNoIG9mZiBhbiBlbmNvZGUuCisJICoKKwkgKiBUYWtlIGFueSBkYXRhIGxlZnQgaW4gdGhlIGNvbnRleHQgdmFyaWFibGUsIGFuZCBjcmVhdGUgdGhlCisJICogdGFpbCBvZiB0aGUgYmFzZTY0IGVuY29kaW5nLgorCSAqCisJICogQHBhcmFtIG91dERhdGEgQnVmZmVyIHRvIHBsYWNlIGFueSByZW1haW5pbmcgZW5jb2RlZCBkYXRhCisJICogQHBhcmFtIG91dExlbmd0aCBNYXggYW1vdW50IG9mIGRhdGEgdG8gYmUgcGxhY2VkIGluIHRoZSBidWZmZXIuCisJICogQHJldHVybnMgQW1vdW50IG9mIGRhdGEgcGxhY2VkIGluIHRoZSBvdXREYXRhIGJ1ZmZlcgorCSAqLworCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgZW5jb2RlRmluaXNoKHVuc2lnbmVkIGNoYXIgKiBvdXREYXRhLAorCQkJCQkJCSAJICAgICAgdW5zaWduZWQgaW50IG91dExlbmd0aCk7CS8vIEZpbmlzaAorCisKKwkvL0B9CisKKwkvKiogQG5hbWUgTGlicmFyeSBTcGVjaWZpYyBGdW5jdGlvbnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgVHJhbnNsYXRlIGEgYmFzZTY0IGVuY29kZWQgQk4gdG8gYSBiaWdudW0KKwkgKgorCSAqIFRha2UgYSBkczpDcnlwdG9CaW5hcnkgbnVtYmVyIGFuZCB0cmFuc2xhdGUgdG8gYW4gT3BlblNTTAorCSAqIHJlcHJlc2VudGF0aW9uIG9mIGEgImJpZyBudW1iZXIiIEJJR05VTS4KKwkgKgorCSAqLworCQorCXN0YXRpYyBCSUdOVU0gKiBiNjQyQk4oY2hhciAqIGI2NGluLCB1bnNpZ25lZCBpbnQgbGVuKTsKKworCS8qKgorCSAqIFxicmllZiBHZXQgT3BlblNTTCBlbmNvZGUgY29udGV4dCBzdHJ1Y3R1cmUKKwkgKi8KKworCUVWUF9FTkNPREVfQ1RYICogZ2V0T3BlblNTTEVuY29kZUVWUF9FTkNPREVfQ1RYKHZvaWQpIHtyZXR1cm4gJm1fZWN0eDt9CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IE9wZW5TU0wgZW5jb2RlIGNvbnRleHQgc3RydWN0dXJlCisJICovCisKKwlFVlBfRU5DT0RFX0NUWCAqIGdldE9wZW5TU0xEZWNvZGVFVlBfRU5DT0RFX0NUWCh2b2lkKSB7cmV0dXJuICZtX2RjdHg7fQorCisJLy9AfQorCitwcml2YXRlIDoKKworCUVWUF9FTkNPREVfQ1RYIG1fZWN0eDsJCQkJLy8gRW5jb2RlIGNvbnRleHQKKwlFVlBfRU5DT0RFX0NUWCBtX2RjdHg7CQkJCS8vIERlY29kZSBjb250ZXh0CisKK307CisKKy8qXEB9Ki8KKworI2VuZGlmIC8qIEhBVkVfT1BFTlNTTCAqLworI2VuZGlmIC8qIE9QRU5TU0xDUllQVE9CQVNFNjRfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0hhc2guY3BwIGIvYy9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0hhc2guY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4ODk0NWMKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvSGFzaC5jcHAKQEAgLTAsMCArMSwxNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIE9wZW5TU0xDcnlwdG9IYXNoU0hBMSA6PSBPcGVuU1NMIEltcGxlbWVudGF0aW9uIG9mIFNIQTEKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaWYgZGVmaW5lZCAoSEFWRV9PUEVOU1NMKQorCisjaW5jbHVkZSA8eHNlYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvSGFzaC5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b0V4Y2VwdGlvbi5ocHA+CisKKyNpbmNsdWRlIDxtZW1vcnkuaD4KKworLy8gQ29uc3RydWN0b3JzL0Rlc3RydWN0b3JzCisKK09wZW5TU0xDcnlwdG9IYXNoOjpPcGVuU1NMQ3J5cHRvSGFzaChIYXNoVHlwZSBhbGcpIHsKKworCXN3aXRjaCAoYWxnKSB7CisKKwljYXNlIChYU0VDQ3J5cHRvSGFzaDo6SEFTSF9TSEExKSA6CisJCisJCW1wX21kID0gRVZQX2dldF9kaWdlc3RieW5hbWUoIlNIQTEiKTsKKwkJYnJlYWs7CisKKwljYXNlIChYU0VDQ3J5cHRvSGFzaDo6SEFTSF9NRDUpIDoKKwkKKwkJbXBfbWQgPSBFVlBfZ2V0X2RpZ2VzdGJ5bmFtZSgiTUQ1Iik7CisJCWJyZWFrOworCisJY2FzZSAoWFNFQ0NyeXB0b0hhc2g6OkhBU0hfU0hBMjI0KSA6CisJCisJCW1wX21kID0gRVZQX2dldF9kaWdlc3RieW5hbWUoIlNIQTIyNCIpOworCQlpZiAobXBfbWQgPT0gTlVMTCkgeworCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpNREVycm9yLAorCQkJIk9wZW5TU0w6SGFzaCAtIFNIQTIyNCBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgdmVyc2lvbiBvZiBPcGVuU1NMIik7IAorCQl9CisKKwkJYnJlYWs7CisKKwljYXNlIChYU0VDQ3J5cHRvSGFzaDo6SEFTSF9TSEEyNTYpIDoKKwkKKwkJbXBfbWQgPSBFVlBfZ2V0X2RpZ2VzdGJ5bmFtZSgiU0hBMjU2Iik7CisJCWlmIChtcF9tZCA9PSBOVUxMKSB7CisJCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1ERXJyb3IsCisJCQkiT3BlblNTTDpIYXNoIC0gU0hBMjU2IG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyB2ZXJzaW9uIG9mIE9wZW5TU0wiKTsgCisJCX0KKworCQlicmVhazsKKworCWNhc2UgKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTM4NCkgOgorCQorCQltcF9tZCA9IEVWUF9nZXRfZGlnZXN0YnluYW1lKCJTSEEzODQiKTsKKwkJaWYgKG1wX21kID09IE5VTEwpIHsKKwkJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6TURFcnJvciwKKwkJCSJPcGVuU1NMOkhhc2ggLSBTSEEzODQgbm90IHN1cHBvcnRlZCBieSB0aGlzIHZlcnNpb24gb2YgT3BlblNTTCIpOyAKKwkJfQorCisJCWJyZWFrOworCisJY2FzZSAoWFNFQ0NyeXB0b0hhc2g6OkhBU0hfU0hBNTEyKSA6CisJCisJCW1wX21kID0gRVZQX2dldF9kaWdlc3RieW5hbWUoIlNIQTUxMiIpOworCQlpZiAobXBfbWQgPT0gTlVMTCkgeworCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpNREVycm9yLAorCQkJIk9wZW5TU0w6SGFzaCAtIFNIQTUxMiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgdmVyc2lvbiBvZiBPcGVuU1NMIik7IAorCQl9CisKKwkJYnJlYWs7CisKKwlkZWZhdWx0IDoKKworCQltcF9tZCA9IE5VTEw7CisKKwl9CisKKwlpZighbXBfbWQpIHsKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1ERXJyb3IsCisJCQkiT3BlblNTTDpIYXNoIC0gRXJyb3IgbG9hZGluZyBNZXNzYWdlIERpZ2VzdCIpOyAKKwl9CisKKwlFVlBfRGlnZXN0SW5pdCgmbV9tZGN0eCwgbXBfbWQpOworCW1faGFzaFR5cGUgPSBhbGc7CisKK30KKworCitPcGVuU1NMQ3J5cHRvSGFzaDo6fk9wZW5TU0xDcnlwdG9IYXNoKCkgeworCisJRVZQX01EX0NUWF9jbGVhbnVwKCZtX21kY3R4KTsKKworfQorCisKKworLy8gSGFzaGluZyBBY3Rpdml0aWVzCit2b2lkIE9wZW5TU0xDcnlwdG9IYXNoOjpyZXNldCh2b2lkKSB7CisKKwlFVlBfTURfQ1RYX2NsZWFudXAoJm1fbWRjdHgpOworCisJRVZQX0RpZ2VzdEluaXQoJm1fbWRjdHgsIG1wX21kKTsKKworfQorCit2b2lkIE9wZW5TU0xDcnlwdG9IYXNoOjpoYXNoKHVuc2lnbmVkIGNoYXIgKiBkYXRhLCAKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBsZW5ndGgpIHsKKworCUVWUF9EaWdlc3RVcGRhdGUoJm1fbWRjdHgsIGRhdGEsIGxlbmd0aCk7CisKK30KK3Vuc2lnbmVkIGludCBPcGVuU1NMQ3J5cHRvSGFzaDo6ZmluaXNoKHVuc2lnbmVkIGNoYXIgKiBoYXNoLAorCQkJCQkJCQkJICAgdW5zaWduZWQgaW50IG1heExlbmd0aCkgeworCisJdW5zaWduZWQgaW50IHJldExlbjsKKworCS8vIEZpbmlzaCB1cCBhbmQgY29weSBvdXQgaGFzaCwgcmV0dXJuaW5nIHRoZSBsZW5ndGgKKworCUVWUF9EaWdlc3RGaW5hbCgmbV9tZGN0eCwgbV9tZFZhbHVlLCAmbV9tZExlbik7CisKKwkvLyBDb3B5IHRvIG91dHB1dCBidWZmZXIKKwkKKwlyZXRMZW4gPSAobWF4TGVuZ3RoID4gbV9tZExlbiA/IG1fbWRMZW4gOiBtYXhMZW5ndGgpOworCW1lbWNweShoYXNoLCBtX21kVmFsdWUsIHJldExlbik7CisKKwlyZXR1cm4gcmV0TGVuOworCit9CisKKy8vIEdldCBpbmZvcm1hdGlvbgorCitYU0VDQ3J5cHRvSGFzaDo6SGFzaFR5cGUgT3BlblNTTENyeXB0b0hhc2g6OmdldEhhc2hUeXBlKHZvaWQpIGNvbnN0IHsKKworCXJldHVybiBtX2hhc2hUeXBlOwkJCS8vIFRoaXMgY291bGQgYmUgYW55IGtpbmQgb2YgaGFzaAorCit9CisKKyNlbmRpZiAvKiBIQVZFX09QRU5TU0wgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9IYXNoLmhwcCBiL2Mvc3JjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9IYXNoLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODdkZTY2Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0hhc2guaHBwCkBAIC0wLDAgKzEsMTU3IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBPcGVuU1NMQ3J5cHRvSGFzaCA6PSBPcGVuU1NMIEltcGxlbWVudGF0aW9uIG9mIFNIQTEKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgT1BFTlNTTENSWVBUT0hBU0hTSEExX0lOQ0xVREUKKyNkZWZpbmUgT1BFTlNTTENSWVBUT0hBU0hTSEExX0lOQ0xVREUKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvSGFzaC5ocHA+CisKKy8vIE9wZW5TU0wgSW5jbHVkZXMKKworI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKworIwlpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorCisvKioKKyAqIEBpbmdyb3VwIG9wZW5zc2xjcnlwdG8KKyAqLworCisvKioKKyAqIFxicmllZiBJbnRlcmZhY2UgZGVmaW5pdGlvbiBmb3IgSGFzaCBmdW5jdGlvbnMuCisgKgorICogVXNlcyB0aGUgT3BlblNTTCBFVlBfZGlnZXN0IGZ1bmN0aW9ucyB0byBpbXBsZW1lbnQgdGhlIHZhcmlvdXMKKyAqIGhhc2ggZnVuY3Rpb25zIHJlcXVpcmVkIGJ5IHRoZSBPcGVuU1NMIGxpYnJhcnkuCisgKgorICovCisKK2NsYXNzIERTSUdfRVhQT1JUIE9wZW5TU0xDcnlwdG9IYXNoIDogcHVibGljIFhTRUNDcnlwdG9IYXNoIHsKKworcHVibGljIDoKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCisJT3BlblNTTENyeXB0b0hhc2goWFNFQ0NyeXB0b0hhc2g6Okhhc2hUeXBlIGFsZyk7CisJdmlydHVhbCB+T3BlblNTTENyeXB0b0hhc2goKTsKKwkKKwkvL0B9CisKKwkvKiogQG5hbWUgSE1BQyBGdW5jdGlvbnMgKi8KKwkvL0B7CisJCisJLyoqCisJICpcYnJpZWYKKwkgKgorCSAqIERvZXMgbm90aGluZy4gIElmIHRoZSByZXF1aXJlZCBmdW5jdGlvbiBpcyBhbiBITUFDIGZ1bmN0aW9uLAorCSAqIHRoZW4gT3BlblNTTENyeXB0b0hhc2hITUFDIHNob3VsZCBiZSB1c2VkLgorCSAqCisJICogQHBhcmFtIGtleSBUaGUga2V5IHRoZSBITUFDIGZ1bmN0aW9uIHNob3VsZCB1c2UuCisJICovCisKKwl2aXJ0dWFsIHZvaWQJCXNldEtleShYU0VDQ3J5cHRvS2V5ICoga2V5KSB7fQorCisJLy9AfQorCisJLyoqIEBuYW1lIERpZ2VzdC9IYXNoIGZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBSZXN0IHRoZSBoYXNoIGZ1bmN0aW9uCisJICoKKwkgKiBSZS1pbml0aWFsaXNlcyB0aGUgZGlnZXN0IHN0cnVjdHVyZS4KKwkgKi8KKworCXZpcnR1YWwgdm9pZAkJcmVzZXQodm9pZCk7CisKKwkvKioKKwkgKiBcYnJpZWYgSGFzaCBzb21lIGRhdGEuCisJICoKKwkgKiBUYWtlIGxlbmd0aCBieXRlcyBvZiBkYXRhIGZyb20gdGhlIGRhdGEgYnVmZmVyIGFuZCB1cGRhdGUgdGhlIGhhc2gKKwkgKiB0aGF0IGFscmVhZHkgZXhpc3RzLiAgVGhpcyBmdW5jdGlvbiBtYXkgKGFuZCBub3JtYWxseSB3aWxsKSBiZSBjYWxsZWQKKwkgKiBtYW55IHRpbWVzIGZvciBsYXJnZSBibG9ja3Mgb2YgZGF0YS4KKwkgKgorCSAqIEBwYXJhbSBkYXRhIFRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgZGF0YSB0byBiZSBoYXNoZWQuCisJICogQHBhcmFtIGxlbmd0aCBUaGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGJlIHJlYWQgZnJvbSBkYXRhCisJICovCisKKwl2aXJ0dWFsIHZvaWQJCWhhc2godW5zaWduZWQgY2hhciAqIGRhdGEsIAorCQkJCQkJCSB1bnNpZ25lZCBpbnQgbGVuZ3RoKTsKKwkvKioKKwkgKiBcYnJpZWYgRmluaXNoIHVwIGEgRGlnZXN0IG9wZXJhdGlvbiBhbmQgcmVhZCB0aGUgcmVzdWx0LgorCSAqCisJICogVGhpcyBjYWxsIHRlbGxzIHRoZSBDcnlwdG9IYXNoIG9iamVjdCB0aGF0IHRoZSBpbnB1dCBpcyBjb21wbGV0ZSBhbmQKKwkgKiB0byBmaW5hbGlzZSB0aGUgRGlnZXN0LiAgVGhlIG91dHB1dCBvZiB0aGUgZGlnZXN0IGlzIHJlYWQgaW50byB0aGUgCisJICogaGFzaCBidWZmZXIgKGF0IG1vc3QgbWF4TGVuZ3RoIGJ5dGVzKQorCSAqCisJICogQHBhcmFtIGhhc2ggVGhlIGJ1ZmZlciB0aGUgaGFzaCBzaG91bGQgYmUgcmVhZCBpbnRvLgorCSAqIEBwYXJhbSBtYXhMZW5ndGggVGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvIGJlIHJlYWQgaW50byBoYXNoCisJICogQHJldHVybnMgVGhlIG51bWJlciBvZiBieXRlcyBjb3BpZWQgaW50byB0aGUgaGFzaCBidWZmZXIKKwkgKi8KKworCXZpcnR1YWwgdW5zaWduZWQgaW50IGZpbmlzaCh1bnNpZ25lZCBjaGFyICogaGFzaCwKKwkJCQkJCQkJdW5zaWduZWQgaW50IG1heExlbmd0aCk7Ly8gRmluaXNoIGFuZCBnZXQgaGFzaAorCisJLy9AfQorCisJLyoqIEBuYW1lIEluZm9ybWF0aW9uIGZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqXGJyaWVmCisJICoKKwkgKiBEZXRlcm1pbmUgdGhlIGhhc2ggdHlwZSBvZiB0aGlzIG9iamVjdAorCSAqCisJICogQHJldHVybnMgVGhlIGhhc2ggdHlwZQorCSAqLworCisJdmlydHVhbCBIYXNoVHlwZSBnZXRIYXNoVHlwZSh2b2lkKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBHZXQgT3BlblNTTCBoYXNoIGNvbnRleHQgc3RydWN0dXJlCisJICovCisKKwlFVlBfTURfQ1RYICogZ2V0T3BlblNTTEVWUF9NRF9DVFgodm9pZCkge3JldHVybiAmbV9tZGN0eDt9CisKKwkvL0B9CisKKworcHJpdmF0ZToKKworCS8vIE5vdCBpbXBsZW1lbnRlZCBjb25zdHJ1Y3RvcnMKKwlPcGVuU1NMQ3J5cHRvSGFzaCgpOworCisJRVZQX01EX0NUWAkJCW1fbWRjdHg7CQkJCQkJLy8gQ29udGV4dCBmb3IgZGlnZXN0CisJY29uc3QgRVZQX01ECQkqIG1wX21kOwkJCQkJCS8vIERpZ2VzdCBpbnN0YW5jZQorCXVuc2lnbmVkIGNoYXIJCW1fbWRWYWx1ZVtFVlBfTUFYX01EX1NJWkVdOwkJLy8gRmluYWwgb3V0cHV0CisJdW5zaWduZWQgaW50CQltX21kTGVuOwkJCQkJCS8vIExlbmd0aCBvZiBkaWdlc3QKKwlIYXNoVHlwZQkJCW1faGFzaFR5cGU7CQkJCQkJLy8gV2hhdCB0eXBlIG9mIGhhc2ggaXMgdGhpcz8KKworfTsKKworI2VuZGlmIC8qIEhBVkVfT1BFTlNTTCAqLworI2VuZGlmIC8qIE9QRU5TU0xDUllQVE9IQVNIU0hBMV9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvSGFzaEhNQUMuY3BwIGIvYy9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0hhc2hITUFDLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzExMmI0Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0hhc2hITUFDLmNwcApAQCAtMCwwICsxLDIwMCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogT3BlblNTTENyeXB0b0hhc2hITUFDIDo9IE9wZW5TU0wgSW1wbGVtZW50YXRpb24gb2YgSE1BQworICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpZiBkZWZpbmVkIChIQVZFX09QRU5TU0wpCisKKworI2luY2x1ZGUgPHhzZWMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0hhc2hITUFDLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvRXhjZXB0aW9uLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvS2V5SE1BQy5ocHA+CisKKyNpbmNsdWRlIDxtZW1vcnkuaD4KKworLy8gQ29uc3RydWN0b3JzL0Rlc3RydWN0b3JzCisKK09wZW5TU0xDcnlwdG9IYXNoSE1BQzo6T3BlblNTTENyeXB0b0hhc2hITUFDKEhhc2hUeXBlIGFsZykgeworCisJLy8gSW5pdGlhbGlzZSB0aGUgZGlnZXN0CisKKwlzd2l0Y2ggKGFsZykgeworCisJY2FzZSAoWFNFQ0NyeXB0b0hhc2g6OkhBU0hfU0hBMSkgOgorCQorCQltcF9tZCA9IEVWUF9nZXRfZGlnZXN0YnluYW1lKCJTSEExIik7CisJCWJyZWFrOworCisJY2FzZSAoWFNFQ0NyeXB0b0hhc2g6OkhBU0hfTUQ1KSA6CisJCisJCW1wX21kID0gRVZQX2dldF9kaWdlc3RieW5hbWUoIk1ENSIpOworCQlicmVhazsKKworCWNhc2UgKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTIyNCkgOgorCQorCQltcF9tZCA9IEVWUF9nZXRfZGlnZXN0YnluYW1lKCJTSEEyMjQiKTsKKwkJaWYgKG1wX21kID09IE5VTEwpIHsKKwkJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6TURFcnJvciwKKwkJCSJPcGVuU1NMOkhhc2ggLSBTSEEyMjQgbm90IHN1cHBvcnRlZCBieSB0aGlzIHZlcnNpb24gb2YgT3BlblNTTCIpOyAKKwkJfQorCisJCWJyZWFrOworCisJY2FzZSAoWFNFQ0NyeXB0b0hhc2g6OkhBU0hfU0hBMjU2KSA6CisJCisJCW1wX21kID0gRVZQX2dldF9kaWdlc3RieW5hbWUoIlNIQTI1NiIpOworCQlpZiAobXBfbWQgPT0gTlVMTCkgeworCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpNREVycm9yLAorCQkJIk9wZW5TU0w6SGFzaCAtIFNIQTI1NiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgdmVyc2lvbiBvZiBPcGVuU1NMIik7IAorCQl9CisKKwkJYnJlYWs7CisKKwljYXNlIChYU0VDQ3J5cHRvSGFzaDo6SEFTSF9TSEEzODQpIDoKKwkKKwkJbXBfbWQgPSBFVlBfZ2V0X2RpZ2VzdGJ5bmFtZSgiU0hBMzg0Iik7CisJCWlmIChtcF9tZCA9PSBOVUxMKSB7CisJCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1ERXJyb3IsCisJCQkiT3BlblNTTDpIYXNoIC0gU0hBMzg0IG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyB2ZXJzaW9uIG9mIE9wZW5TU0wiKTsgCisJCX0KKworCQlicmVhazsKKworCWNhc2UgKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTUxMikgOgorCQorCQltcF9tZCA9IEVWUF9nZXRfZGlnZXN0YnluYW1lKCJTSEE1MTIiKTsKKwkJaWYgKG1wX21kID09IE5VTEwpIHsKKwkJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6TURFcnJvciwKKwkJCSJPcGVuU1NMOkhhc2ggLSBTSEE1MTIgbm90IHN1cHBvcnRlZCBieSB0aGlzIHZlcnNpb24gb2YgT3BlblNTTCIpOyAKKwkJfQorCisJCWJyZWFrOworCisJZGVmYXVsdCA6CisKKwkJbXBfbWQgPSBOVUxMOworCisJfQorCisJaWYoIW1wX21kKSB7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpNREVycm9yLAorCQkJIk9wZW5TU0w6SGFzaEhNQUMgLSBFcnJvciBsb2FkaW5nIE1lc3NhZ2UgRGlnZXN0Iik7IAorCX0KKworCW1faW5pdGlhbGlzZWQgPSBmYWxzZTsKKwltX2hhc2hUeXBlID0gYWxnOworCit9CisKK3ZvaWQgT3BlblNTTENyeXB0b0hhc2hITUFDOjpzZXRLZXkoWFNFQ0NyeXB0b0tleSAqa2V5KSB7CisKKwkvLyBVc2UgdGhpcyB0byBpbml0aWFsaXNlIHRoZSBITUFDIENvbnRleHQKKworCWlmIChrZXktPmdldEtleVR5cGUoKSAhPSBYU0VDQ3J5cHRvS2V5OjpLRVlfSE1BQykgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6TURFcnJvciwKKwkJCSJPcGVuU1NMOkhhc2hITUFDIC0gTm9uIEhNQUMgS2V5IHBhc3NlZCB0byBPcGVuU1NMSGFzaEhNQUMiKTsKKworCX0KKworCW1fa2V5TGVuID0gKChYU0VDQ3J5cHRvS2V5SE1BQyAqKSBrZXkpLT5nZXRLZXkobV9rZXlCdWYpOworCisKKwlITUFDX0luaXQoJm1faGN0eCwgCisJCW1fa2V5QnVmLnJhd0J1ZmZlcigpLAorCQltX2tleUxlbiwKKwkJbXBfbWQpOworCisJbV9pbml0aWFsaXNlZCA9IHRydWU7CisKK30KKworT3BlblNTTENyeXB0b0hhc2hITUFDOjp+T3BlblNTTENyeXB0b0hhc2hITUFDKCkgeworCisJaWYgKG1faW5pdGlhbGlzZWQpCisJCUhNQUNfQ1RYX2NsZWFudXAoJm1faGN0eCk7CisKK30KKworCisKKy8vIEhhc2hpbmcgQWN0aXZpdGllcworCit2b2lkIE9wZW5TU0xDcnlwdG9IYXNoSE1BQzo6cmVzZXQodm9pZCkgeworCisJaWYgKG1faW5pdGlhbGlzZWQpIHsKKworCQlITUFDX0NUWF9jbGVhbnVwKCZtX2hjdHgpOworCisJCUhNQUNfSW5pdCgmbV9oY3R4LCAKKwkJCW1fa2V5QnVmLnJhd0J1ZmZlcigpLAorCQkJbV9rZXlMZW4sCisJCQltcF9tZCk7CisKKwl9CisKK30KKwordm9pZCBPcGVuU1NMQ3J5cHRvSGFzaEhNQUM6Omhhc2godW5zaWduZWQgY2hhciAqIGRhdGEsIAorCQkJCQkJCQkgdW5zaWduZWQgaW50IGxlbmd0aCkgeworCisJaWYgKCFtX2luaXRpYWxpc2VkKQorCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1ERXJyb3IsCisJCQkiT3BlblNTTDpIYXNoSE1BQyAtIGhhc2ggY2FsbGVkIHByaW9yIHRvIHNldEtleSIpOworCisKKwlITUFDX1VwZGF0ZSgmbV9oY3R4LCBkYXRhLCAoaW50KSBsZW5ndGgpOworCit9CisKK3Vuc2lnbmVkIGludCBPcGVuU1NMQ3J5cHRvSGFzaEhNQUM6OmZpbmlzaCh1bnNpZ25lZCBjaGFyICogaGFzaCwKKwkJCQkJCQkJCSAgIHVuc2lnbmVkIGludCBtYXhMZW5ndGgpIHsKKworCXVuc2lnbmVkIGludCByZXRMZW47CisKKwkvLyBGaW5pc2ggdXAgYW5kIGNvcHkgb3V0IGhhc2gsIHJldHVybmluZyB0aGUgbGVuZ3RoCisKKwlITUFDX0ZpbmFsKCZtX2hjdHgsIG1fbWRWYWx1ZSwgJm1fbWRMZW4pOworCisJLy8gQ29weSB0byBvdXRwdXQgYnVmZmVyCisJCisJcmV0TGVuID0gKG1heExlbmd0aCA+IG1fbWRMZW4gPyBtX21kTGVuIDogbWF4TGVuZ3RoKTsKKwltZW1jcHkoaGFzaCwgbV9tZFZhbHVlLCByZXRMZW4pOworCisJcmV0dXJuIHJldExlbjsKKworfQorCisvLyBHZXQgaW5mb3JtYXRpb24KKworWFNFQ0NyeXB0b0hhc2g6Okhhc2hUeXBlIE9wZW5TU0xDcnlwdG9IYXNoSE1BQzo6Z2V0SGFzaFR5cGUodm9pZCkgY29uc3QgeworCisJcmV0dXJuIG1faGFzaFR5cGU7CQkJLy8gVGhpcyBjb3VsZCBiZSBhbnkga2luZCBvZiBoYXNoCisKK30KKworI2VuZGlmIC8qIEhBVkVfT1BFTlNTTCAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0hhc2hITUFDLmhwcCBiL2Mvc3JjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9IYXNoSE1BQy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI0YWVkNgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9IYXNoSE1BQy5ocHAKQEAgLTAsMCArMSwxODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIE9wZW5TU0xDcnlwdG9IYXNoSE1BQyA6PSBPcGVuU1NMIEltcGxlbWVudGF0aW9uIG9mIEhNQUMKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgT1BFTlNTTENSWVBUT0hBU0hITUFDX0lOQ0xVREUKKyNkZWZpbmUgT1BFTlNTTENSWVBUT0hBU0hITUFDX0lOQ0xVREUKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvSGFzaC5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDU2FmZUJ1ZmZlci5ocHA+CisKKy8vIE9wZW5TU0wgSW5jbHVkZXMKKyNpZiBkZWZpbmVkIChIQVZFX09QRU5TU0wpCisKKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorI2luY2x1ZGUgPG9wZW5zc2wvaG1hYy5oPgorCisvKioKKyAqIEBpbmdyb3VwIG9wZW5zc2xjcnlwdG8KKyAqLworCisvKioKKyAqIFxicmllZiBJbXBsZW1lbnRhdGlvbiBvZiBITUFDIEhhc2ggZnVuY3Rpb25zIGluIE9wZW5TU0wKKyAqCisgKiBVc2VzIHRoZSBPcGVuU1NMIEVWUF9kaWdlc3QgZnVuY3Rpb25zIHRvIGltcGxlbWVudCB0aGUgdmFyaW91cworICogSE1BQyBoYXNoIGZ1bmN0aW9ucyByZXF1aXJlZCBieSB0aGUgbGlicmFyeS4KKyAqCisgKi8KKworY2xhc3MgRFNJR19FWFBPUlQgT3BlblNTTENyeXB0b0hhc2hITUFDIDogcHVibGljIFhTRUNDcnlwdG9IYXNoIHsKKworcHVibGljIDoKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIENvbnN0cnVjdG9yCisJICoKKwkgKiBDcmVhdGUgdGhlIG9iamVjdCwgd2l0aCB0aGUgaW5kaWNhdGVkIGFsZ29yaXRobQorCSAqIChDdXJyZW50bHkgc3VwcG9ydHMgTUQ1IGFuZCBTSEExKQorCSAqCisJICogQHBhcmFtIGFsZyBEaWdlc3QgYWxnb3JpdGhtIHRvIHVzZQorCSAqLworCisJT3BlblNTTENyeXB0b0hhc2hITUFDKFhTRUNDcnlwdG9IYXNoOjpIYXNoVHlwZSBhbGcpOworCisJLyoqCisJICogXGJyaWVmIERlc3RydWN0b3IKKwkgKgorCSAqIERlc3Ryb3kgdGhlIG9iamVjdC4gIFdpbGwgZW5zdXJlIGFueSBrZXkgbWF0ZXJpYWwgaXMgYWxzbyBkZXN0cm95ZWQKKwkgKi8KKworCXZpcnR1YWwgfk9wZW5TU0xDcnlwdG9IYXNoSE1BQygpOworCisJLy9AfQorCisJLyoqIEBuYW1lIEhNQUMgRnVuY3Rpb25zICovCisJLy9AeworCQorCS8qKgorCSAqXGJyaWVmIFNldCB0aGUgSE1BQyBrZXkKKwkgKgorCSAqIFNldHMgdGhlIGtleSAtIHdoaWNoIG5lZWRzIHRvIGhhdmUgYSBiYXNlIGNsYXNzIG9mIAorCSAqIE9wZW5TU0xDcnlwdG9LZXlITUFDLgorCSAqCisJICogQHBhcmFtIGtleSBUaGUga2V5IHRoZSBITUFDIGZ1bmN0aW9uIHNob3VsZCB1c2UuCisJICovCisKKwl2aXJ0dWFsIHZvaWQJCXNldEtleShYU0VDQ3J5cHRvS2V5ICoga2V5KTsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gdGhlIHN0cmluZyBpZGVudGlmaWVyIGZvciB0aGUgT3BlblNTTCBpbnRlcmZhY2UKKwkgKi8KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRQcm92aWRlck5hbWUoKSB7cmV0dXJuIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clBST1ZPcGVuU1NMO30KKworCS8vQH0KKworCS8qKiBAbmFtZSBIYXNoIEZ1bmN0aW9ucyAqLworCS8ve0AKKworCS8qKgorCSAqIFxicmllZiBSZXNldCB0aGUgaGFzaCBmdW5jdGlvbgorCSAqCisJICogUmUtaW5pdGlhbGlzZXMgdGhlIGRpZ2VzdCBzdHJ1Y3R1cmUuCisJICovCisKKwl2aXJ0dWFsIHZvaWQJCXJlc2V0KHZvaWQpOworCisJLyoqCisJICogXGJyaWVmIEhhc2ggc29tZSBkYXRhLgorCSAqCisJICogVGFrZSBsZW5ndGggYnl0ZXMgb2YgZGF0YSBmcm9tIHRoZSBkYXRhIGJ1ZmZlciBhbmQgdXBkYXRlIHRoZSBoYXNoCisJICogdGhhdCBhbHJlYWR5IGV4aXN0cy4gIFRoaXMgZnVuY3Rpb24gbWF5IChhbmQgbm9ybWFsbHkgd2lsbCkgYmUgY2FsbGVkCisJICogbWFueSB0aW1lcyBmb3IgbGFyZ2UgYmxvY2tzIG9mIGRhdGEuCisJICoKKwkgKiBAcGFyYW0gZGF0YSBUaGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8gYmUgaGFzaGVkLgorCSAqIEBwYXJhbSBsZW5ndGggVGhlIG51bWJlciBvZiBieXRlcyB0byBiZSByZWFkIGZyb20gZGF0YQorCSAqLworCisJdmlydHVhbCB2b2lkCQloYXNoKHVuc2lnbmVkIGNoYXIgKiBkYXRhLCAKKwkJCQkJCQkgdW5zaWduZWQgaW50IGxlbmd0aCk7CisJLyoqCisJICogXGJyaWVmIEZpbmlzaCB1cCBhIERpZ2VzdCBvcGVyYXRpb24gYW5kIHJlYWQgdGhlIHJlc3VsdC4KKwkgKgorCSAqIFRoaXMgY2FsbCB0ZWxscyB0aGUgQ3J5cHRvSGFzaCBvYmplY3QgdGhhdCB0aGUgaW5wdXQgaXMgY29tcGxldGUgYW5kCisJICogdG8gZmluYWxpc2UgdGhlIERpZ2VzdC4gIFRoZSBvdXRwdXQgb2YgdGhlIGRpZ2VzdCBpcyByZWFkIGludG8gdGhlIAorCSAqIGhhc2ggYnVmZmVyIChhdCBtb3N0IG1heExlbmd0aCBieXRlcykuICBUaGlzIGlzIGVmZmVjdGl2ZWx5IHRoZQorCSAqIHNpZ25hdHVyZSBmb3IgdGhlIGRhdGEgdGhhdCBoYXMgYmVlbiBydW4gdGhyb3VnaCB0aGUgSE1BQyBmdW5jdGlvbi4KKwkgKgorCSAqIEBwYXJhbSBoYXNoIFRoZSBidWZmZXIgdGhlIGhhc2ggc2hvdWxkIGJlIHJlYWQgaW50by4KKwkgKiBAcGFyYW0gbWF4TGVuZ3RoIFRoZSBtYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byBiZSByZWFkIGludG8gaGFzaAorCSAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgYnl0ZXMgY29waWVkIGludG8gdGhlIGhhc2ggYnVmZmVyCisJICovCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCBmaW5pc2godW5zaWduZWQgY2hhciAqIGhhc2gsCisJCQkJCQkJCXVuc2lnbmVkIGludCBtYXhMZW5ndGgpOy8vIEZpbmlzaCBhbmQgZ2V0IGhhc2gKKworCS8vQH0KKworCS8qKiBAbmFtZSBJbmZvcm1hdGlvbiBmdW5jdGlvbnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKlxicmllZgorCSAqCisJICogRGV0ZXJtaW5lIHRoZSBoYXNoIHR5cGUgb2YgdGhpcyBvYmplY3QKKwkgKgorCSAqIEByZXR1cm5zIFRoZSBoYXNoIHR5cGUKKwkgKi8KKworCXZpcnR1YWwgSGFzaFR5cGUgZ2V0SGFzaFR5cGUodm9pZCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IE9wZW5TU0wgSGFzaCBDb250ZXh0CisJICovCisKKwlITUFDX0NUWCAqIGdldE9wZW5TU0xITUFDX0NUWCh2b2lkKSB7cmV0dXJuICZtX2hjdHg7fQorCisJLy9AfQorCitwcml2YXRlOgorCisJLy8gTm90IGltcGxlbWVudGVkIGNvbnN0cnVjdG9ycworCU9wZW5TU0xDcnlwdG9IYXNoSE1BQygpOworCisJY29uc3QgRVZQX01ECQkqIG1wX21kOwkJCQkJCS8vIERpZ2VzdCBpbnN0YW5jZQorCXVuc2lnbmVkIGNoYXIJCW1fbWRWYWx1ZVtFVlBfTUFYX01EX1NJWkVdOwkJLy8gRmluYWwgb3V0cHV0CisJdW5zaWduZWQgaW50CQltX21kTGVuOwkJCQkJCS8vIExlbmd0aCBvZiBkaWdlc3QKKwlIYXNoVHlwZQkJCW1faGFzaFR5cGU7CQkJCQkJLy8gV2hhdCB0eXBlIG9mIGhhc2ggaXMgdGhpcz8KKwlITUFDX0NUWAkJCW1faGN0eDsJCQkJCQkJLy8gQ29udGV4dCBmb3IgSE1BQworCXNhZmVCdWZmZXIJCQltX2tleUJ1ZjsJCQkJCQkvLyBUaGUgbG9hZGVkIGtleQorCXVuc2lnbmVkIGludAkJbV9rZXlMZW47CQkJCQkJLy8gVGhlIGxvYWRlZCBrZXkgbGVuZ3RoCisJYm9vbAkJCQltX2luaXRpYWxpc2VkOworCit9OworI2VuZGlmIC8qIEhBVkVfT1BFTlNTTCAqLworI2VuZGlmIC8qIE9QRU5TU0xDUllQVE9IQVNISE1BQ19JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvS2V5RFNBLmNwcCBiL2Mvc3JjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9LZXlEU0EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2NTZiMWIKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvS2V5RFNBLmNwcApAQCAtMCwwICsxLDM1MyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogT3BlblNTTENyeXB0b0tleURTQSA6PSBEU0EgS2V5cworICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaWYgZGVmaW5lZCAoSEFWRV9PUEVOU1NMKQorCisjaW5jbHVkZSA8eHNlYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvS2V5RFNBLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9CYXNlNjQuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9FeGNlcHRpb24uaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9KYW5pdG9yLmhwcD4KKworWFNFQ19VU0lOR19YRVJDRVMoQXJyYXlKYW5pdG9yKTsKKworI2luY2x1ZGUgPG9wZW5zc2wvZHNhLmg+CisKK09wZW5TU0xDcnlwdG9LZXlEU0E6Ok9wZW5TU0xDcnlwdG9LZXlEU0EoKSA6IG1wX2RzYUtleShOVUxMKSB7Cit9OworCitPcGVuU1NMQ3J5cHRvS2V5RFNBOjp+T3BlblNTTENyeXB0b0tleURTQSgpIHsKKworCisJLy8gSWYgd2UgaGF2ZSBhIERTQSwgZGVsZXRlIGl0CisJLy8gT3BlblNTTCB3aWxsIGVuc3VyZSB0aGUgbWVtb3J5IGhvbGRpbmcgYW55IHByaXZhdGUga2V5IGlzIGZyZWVkLgorCisJaWYgKG1wX2RzYUtleSkKKwkJRFNBX2ZyZWUobXBfZHNhS2V5KTsKKworfTsKKworLy8gR2VuZXJpYyBrZXkgZnVuY3Rpb25zCisKK1hTRUNDcnlwdG9LZXk6OktleVR5cGUgT3BlblNTTENyeXB0b0tleURTQTo6Z2V0S2V5VHlwZSgpIGNvbnN0IHsKKworCS8vIEZpbmQgb3V0IHdoYXQgd2UgaGF2ZQorCWlmIChtcF9kc2FLZXkgPT0gTlVMTCkKKwkJcmV0dXJuIEtFWV9OT05FOworCisJaWYgKG1wX2RzYUtleS0+cHJpdl9rZXkgIT0gTlVMTCAmJiBtcF9kc2FLZXktPnB1Yl9rZXkgIT0gTlVMTCkKKwkJcmV0dXJuIEtFWV9EU0FfUEFJUjsKKworCWlmIChtcF9kc2FLZXktPnByaXZfa2V5ICE9IE5VTEwpCisJCXJldHVybiBLRVlfRFNBX1BSSVZBVEU7CisKKwlpZiAobXBfZHNhS2V5LT5wdWJfa2V5ICE9IE5VTEwpCisJCXJldHVybiBLRVlfRFNBX1BVQkxJQzsKKworCXJldHVybiBLRVlfTk9ORTsKKworfQorCit2b2lkIE9wZW5TU0xDcnlwdG9LZXlEU0E6OmxvYWRQQmFzZTY0QmlnTnVtcyhjb25zdCBjaGFyICogYjY0LCB1bnNpZ25lZCBpbnQgbGVuKSB7CisKKwlpZiAobXBfZHNhS2V5ID09IE5VTEwpCisJCW1wX2RzYUtleSA9IERTQV9uZXcoKTsKKworCW1wX2RzYUtleS0+cCA9IE9wZW5TU0xDcnlwdG9CYXNlNjQ6OmI2NDJCTigoY2hhciAqKSBiNjQsIGxlbik7CisKK30KKwordm9pZCBPcGVuU1NMQ3J5cHRvS2V5RFNBOjpsb2FkUUJhc2U2NEJpZ051bXMoY29uc3QgY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbikgeworCisJaWYgKG1wX2RzYUtleSA9PSBOVUxMKQorCQltcF9kc2FLZXkgPSBEU0FfbmV3KCk7CisKKwltcF9kc2FLZXktPnEgPSBPcGVuU1NMQ3J5cHRvQmFzZTY0OjpiNjQyQk4oKGNoYXIgKikgYjY0LCBsZW4pOworCit9CisKK3ZvaWQgT3BlblNTTENyeXB0b0tleURTQTo6bG9hZEdCYXNlNjRCaWdOdW1zKGNvbnN0IGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBsZW4pIHsKKworCWlmIChtcF9kc2FLZXkgPT0gTlVMTCkKKwkJbXBfZHNhS2V5ID0gRFNBX25ldygpOworCisJbXBfZHNhS2V5LT5nID0gT3BlblNTTENyeXB0b0Jhc2U2NDo6YjY0MkJOKChjaGFyICopIGI2NCwgbGVuKTsKKworfQorCit2b2lkIE9wZW5TU0xDcnlwdG9LZXlEU0E6OmxvYWRZQmFzZTY0QmlnTnVtcyhjb25zdCBjaGFyICogYjY0LCB1bnNpZ25lZCBpbnQgbGVuKSB7CisKKwlpZiAobXBfZHNhS2V5ID09IE5VTEwpCisJCW1wX2RzYUtleSA9IERTQV9uZXcoKTsKKworCW1wX2RzYUtleS0+cHViX2tleSA9IE9wZW5TU0xDcnlwdG9CYXNlNjQ6OmI2NDJCTigoY2hhciAqKSBiNjQsIGxlbik7CisKK30KKwordm9pZCBPcGVuU1NMQ3J5cHRvS2V5RFNBOjpsb2FkSkJhc2U2NEJpZ051bXMoY29uc3QgY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbikgeworCisJaWYgKG1wX2RzYUtleSA9PSBOVUxMKQorCQltcF9kc2FLZXkgPSBEU0FfbmV3KCk7CisKKwkvLyBEbyBub3RoaW5nCit9CisKKworLy8gIkhpZGRlbiIgT3BlblNTTCBmdW5jdGlvbnMKKworT3BlblNTTENyeXB0b0tleURTQTo6T3BlblNTTENyeXB0b0tleURTQShFVlBfUEtFWSAqaykgeworCisJLy8gQ3JlYXRlIGEgbmV3IGtleSB0byBiZSBsb2FkZWQgYXMgd2UgZ28KKworCW1wX2RzYUtleSA9IERTQV9uZXcoKTsKKworCWlmIChrID09IE5VTEwgfHwgay0+dHlwZSAhPSBFVlBfUEtFWV9EU0EpCisJCXJldHVybjsJLy8gTm90aGluZyB0byBkbyB3aXRoIHVzCisKKworCWlmIChrLT5wa2V5LmRzYS0+cCkKKwkJbXBfZHNhS2V5LT5wID0gQk5fZHVwKGstPnBrZXkuZHNhLT5wKTsKKwlpZiAoay0+cGtleS5kc2EtPnEpCisJCW1wX2RzYUtleS0+cSA9IEJOX2R1cChrLT5wa2V5LmRzYS0+cSk7CisJaWYgKGstPnBrZXkuZHNhLT5nKQorCQltcF9kc2FLZXktPmcgPSBCTl9kdXAoay0+cGtleS5kc2EtPmcpOworCWlmIChrLT5wa2V5LmRzYS0+cHViX2tleSkKKwkJbXBfZHNhS2V5LT5wdWJfa2V5ID0gQk5fZHVwKGstPnBrZXkuZHNhLT5wdWJfa2V5KTsKKwlpZiAoay0+cGtleS5kc2EtPnByaXZfa2V5KQorCQltcF9kc2FLZXktPnByaXZfa2V5ID0gQk5fZHVwKGstPnBrZXkuZHNhLT5wcml2X2tleSk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBWZXJpZnkgYSBzaWduYXR1cmUgZW5jb2RlZCBhcyBhIEJhc2U2NCBzdHJpbmcKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Jvb2wgT3BlblNTTENyeXB0b0tleURTQTo6dmVyaWZ5QmFzZTY0U2lnbmF0dXJlKHVuc2lnbmVkIGNoYXIgKiBoYXNoQnVmLAorCQkJCQkJCQkgdW5zaWduZWQgaW50IGhhc2hMZW4sCisJCQkJCQkJCSBjaGFyICogYmFzZTY0U2lnbmF0dXJlLAorCQkJCQkJCQkgdW5zaWduZWQgaW50IHNpZ0xlbikgeworCisJLy8gVXNlIHRoZSBjdXJyZW50bHkgbG9hZGVkIGtleSB0byB2YWxpZGF0ZSB0aGUgQmFzZTY0IGVuY29kZWQgc2lnbmF0dXJlCisKKwlpZiAobXBfZHNhS2V5ID09IE5VTEwpIHsKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OkRTQUVycm9yLAorCQkJIk9wZW5TU0w6RFNBIC0gQXR0ZW1wdCB0byB2YWxpZGF0ZSBzaWduYXR1cmUgd2l0aCBlbXB0eSBrZXkiKTsKKwl9CisKKyAgICBjaGFyICogY2xlYW5lZEJhc2U2NFNpZ25hdHVyZTsKKwl1bnNpZ25lZCBpbnQgY2xlYW5lZEJhc2U2NFNpZ25hdHVyZUxlbiA9IDA7CisKKwljbGVhbmVkQmFzZTY0U2lnbmF0dXJlID0KKwkJWFNFQ0NyeXB0b0Jhc2U2NDo6Y2xlYW5CdWZmZXIoYmFzZTY0U2lnbmF0dXJlLCBzaWdMZW4sIGNsZWFuZWRCYXNlNjRTaWduYXR1cmVMZW4pOworCUFycmF5SmFuaXRvcjxjaGFyPiBqX2NsZWFuZWRCYXNlNjRTaWduYXR1cmUoY2xlYW5lZEJhc2U2NFNpZ25hdHVyZSk7CisKKwl1bnNpZ25lZCBjaGFyIHNpZ1ZhbFs1MTJdOworCWludCBzaWdWYWxMZW47CisKKwlFVlBfRU5DT0RFX0NUWCBtX2RjdHg7CisJRVZQX0RlY29kZUluaXQoJm1fZGN0eCk7CisJaW50IHJjID0gRVZQX0RlY29kZVVwZGF0ZSgmbV9kY3R4LAorCQkJCQkJICBzaWdWYWwsCisJCQkJCQkgICZzaWdWYWxMZW4sCisJCQkJCQkgICh1bnNpZ25lZCBjaGFyICopIGNsZWFuZWRCYXNlNjRTaWduYXR1cmUsCisJCQkJCQkgIGNsZWFuZWRCYXNlNjRTaWduYXR1cmVMZW4pOworCisJaWYgKHJjIDwgMCkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6RFNBRXJyb3IsCisJCQkiT3BlblNTTDpEU0EgLSBFcnJvciBkdXJpbmcgQmFzZTY0IERlY29kZSIpOworCX0KKwlpbnQgdCA9IDA7CisKKwlFVlBfRGVjb2RlRmluYWwoJm1fZGN0eCwgJnNpZ1ZhbFtzaWdWYWxMZW5dLCAmdCk7CisKKwlzaWdWYWxMZW4gKz0gdDsKKworCS8vIFRyYW5zbGF0ZSB0byBCTnMgYW5kIHRoZW5jZSB0byBEU0FfU0lHCisJQklHTlVNICogUjsKKwlCSUdOVU0gKiBTOworCisJaWYgKHNpZ1ZhbExlbiA9PSA0MCkgeworCisJCVIgPSBCTl9iaW4yYm4oc2lnVmFsLCAyMCwgTlVMTCk7CisJCVMgPSBCTl9iaW4yYm4oJnNpZ1ZhbFsyMF0sIDIwLCBOVUxMKTsKKwl9CisJZWxzZSB7CisKKwkJdW5zaWduZWQgY2hhciByYlsyMF07CisJCXVuc2lnbmVkIGNoYXIgc2JbMjBdOworCisJCWlmIChzaWdWYWxMZW4gPT0gNDYgJiYgQVNOMkRTQVNpZyhzaWdWYWwsIHJiLCBzYikgPT0gdHJ1ZSkgeworCisJCQlSID0gQk5fYmluMmJuKHJiLCAyMCwgTlVMTCk7CisJCQlTID0gQk5fYmluMmJuKHNiLCAyMCwgTlVMTCk7CisKKwkJfQorCisJCWVsc2UgeworCisJCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OkRTQUVycm9yLAorCQkJCSJPcGVuU1NMOkRTQSAtIFNpZ25hdHVyZSBMZW5ndGggaW5jb3JyZWN0Iik7CisJCX0KKwl9CisKKwlEU0FfU0lHICogZHNhX3NpZyA9IERTQV9TSUdfbmV3KCk7CisKKwlkc2Ffc2lnLT5yID0gQk5fZHVwKFIpOworCWRzYV9zaWctPnMgPSBCTl9kdXAoUyk7CisKKwlCTl9mcmVlKFIpOworCUJOX2ZyZWUoUyk7CisKKwkvLyBOb3cgd2UgaGF2ZSBhIHNpZ25hdHVyZSBhbmQgYSBrZXkgLSBsZXRzIGNoZWNrCisKKwlpbnQgZXJyID0gRFNBX2RvX3ZlcmlmeShoYXNoQnVmLCBoYXNoTGVuLCBkc2Ffc2lnLCBtcF9kc2FLZXkpOworCisJRFNBX1NJR19mcmVlKGRzYV9zaWcpOworCisJaWYgKGVyciA8IDApIHsKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OkRTQUVycm9yLAorCQkJIk9wZW5TU0w6RFNBIC0gRXJyb3IgdmFsaWRhdGluZyBzaWduYXR1cmUiKTsKKwl9CisKKwlyZXR1cm4gKGVyciA9PSAxKTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFNpZ24gYW5kIGVuY29kZSByZXN1bHQgYXMgYSBCYXNlNjQgc3RyaW5nCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK3Vuc2lnbmVkIGludCBPcGVuU1NMQ3J5cHRvS2V5RFNBOjpzaWduQmFzZTY0U2lnbmF0dXJlKHVuc2lnbmVkIGNoYXIgKiBoYXNoQnVmLAorCQl1bnNpZ25lZCBpbnQgaGFzaExlbiwKKwkJY2hhciAqIGJhc2U2NFNpZ25hdHVyZUJ1ZiwKKwkJdW5zaWduZWQgaW50IGJhc2U2NFNpZ25hdHVyZUJ1ZkxlbikgeworCisJLy8gU2lnbiBhIHByZS1jYWxjdWxhdGVkIGhhc2ggdXNpbmcgdGhpcyBrZXkKKworCWlmIChtcF9kc2FLZXkgPT0gTlVMTCkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6RFNBRXJyb3IsCisJCQkiT3BlblNTTDpEU0EgLSBBdHRlbXB0IHRvIHNpZ24gZGF0YSB3aXRoIGVtcHR5IGtleSIpOworCX0KKworCURTQV9TSUcgKiBkc2Ffc2lnOworCisJZHNhX3NpZyA9IERTQV9kb19zaWduKGhhc2hCdWYsIGhhc2hMZW4sIG1wX2RzYUtleSk7CisKKwlpZiAoZHNhX3NpZyA9PSBOVUxMKSB7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpEU0FFcnJvciwKKwkJCSJPcGVuU1NMOkRTQSAtIEVycm9yIHNpZ25pbmcgZGF0YSIpOworCisJfQorCisJLy8gTm93IHR1cm4gdGhlIHNpZ25hdHVyZSBpbnRvIGEgYmFzZTY0IHN0cmluZworCisJdW5zaWduZWQgY2hhciByYXdTaWdCdWZbMjU2XTsKKwl1bnNpZ25lZCBpbnQgcmF3TGVuOworCisJcmF3TGVuID0gQk5fYm4yYmluKGRzYV9zaWctPnIsIHJhd1NpZ0J1Zik7CisKKwlpZiAocmF3TGVuIDw9IDApIHsKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OkRTQUVycm9yLAorCQkJIk9wZW5TU0w6RFNBIC0gRXJyb3IgY29udmVydGluZyBzaWduYXR1cmUgdG8gcmF3IGJ1ZmZlciIpOworCisJfQorCisJdW5zaWduZWQgaW50IHJhd0xlblMgPSBCTl9ibjJiaW4oZHNhX3NpZy0+cywgKHVuc2lnbmVkIGNoYXIgKikgJnJhd1NpZ0J1ZltyYXdMZW5dKTsKKworCWlmIChyYXdMZW5TIDw9IDApIHsKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OkRTQUVycm9yLAorCQkJIk9wZW5TU0w6RFNBIC0gRXJyb3IgY29udmVydGluZyBzaWduYXR1cmUgdG8gcmF3IGJ1ZmZlciIpOworCisJfQorCisJcmF3TGVuICs9IHJhd0xlblM7CisKKwkvLyBOb3cgY29udmVydCB0byBCYXNlIDY0CisKKwlCSU8gKiBiNjQgPSBCSU9fbmV3KEJJT19mX2Jhc2U2NCgpKTsKKwlCSU8gKiBibWVtID0gQklPX25ldyhCSU9fc19tZW0oKSk7CisKKwlCSU9fc2V0X21lbV9lb2ZfcmV0dXJuKGJtZW0sIDApOworCWI2NCA9IEJJT19wdXNoKGI2NCwgYm1lbSk7CisKKwkvLyBUcmFuc2xhdGUgc2lnbmF0dXJlIGZyb20gQmFzZTY0CisKKwlCSU9fd3JpdGUoYjY0LCByYXdTaWdCdWYsIHJhd0xlbik7CisJQklPX2ZsdXNoKGI2NCk7CisKKwl1bnNpZ25lZCBpbnQgc2lnVmFsTGVuID0gQklPX3JlYWQoYm1lbSwgYmFzZTY0U2lnbmF0dXJlQnVmLCBiYXNlNjRTaWduYXR1cmVCdWZMZW4pOworCisJQklPX2ZyZWVfYWxsKGI2NCk7CisKKwlpZiAoc2lnVmFsTGVuIDw9IDApIHsKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OkRTQUVycm9yLAorCQkJIk9wZW5TU0w6RFNBIC0gRXJyb3IgYmFzZTY0IGVuY29kaW5nIHNpZ25hdHVyZSIpOworCX0KKworCXJldHVybiBzaWdWYWxMZW47CisKK30KKworCisKK1hTRUNDcnlwdG9LZXkgKiBPcGVuU1NMQ3J5cHRvS2V5RFNBOjpjbG9uZSgpIGNvbnN0IHsKKworCU9wZW5TU0xDcnlwdG9LZXlEU0EgKiByZXQ7CisKKwlYU0VDbmV3KHJldCwgT3BlblNTTENyeXB0b0tleURTQSk7CisKKwlyZXQtPm1fa2V5VHlwZSA9IG1fa2V5VHlwZTsKKwlyZXQtPm1wX2RzYUtleSA9IERTQV9uZXcoKTsKKworCS8vIER1cGxpY2F0ZSBwYXJhbWV0ZXJzCisJaWYgKG1wX2RzYUtleS0+cCkKKwkJcmV0LT5tcF9kc2FLZXktPnAgPSBCTl9kdXAobXBfZHNhS2V5LT5wKTsKKwlpZiAobXBfZHNhS2V5LT5xKQorCQlyZXQtPm1wX2RzYUtleS0+cSA9IEJOX2R1cChtcF9kc2FLZXktPnEpOworCWlmIChtcF9kc2FLZXktPmcpCisJCXJldC0+bXBfZHNhS2V5LT5nID0gQk5fZHVwKG1wX2RzYUtleS0+Zyk7CisJaWYgKG1wX2RzYUtleS0+cHViX2tleSkKKwkJcmV0LT5tcF9kc2FLZXktPnB1Yl9rZXkgPSBCTl9kdXAobXBfZHNhS2V5LT5wdWJfa2V5KTsKKwlpZiAobXBfZHNhS2V5LT5wcml2X2tleSkKKwkJcmV0LT5tcF9kc2FLZXktPnByaXZfa2V5ID0gQk5fZHVwKG1wX2RzYUtleS0+cHJpdl9rZXkpOworCisJcmV0dXJuIHJldDsKKworfQorCisjZW5kaWYgLyogSEFWRV9PUEVOU1NMICovCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvS2V5RFNBLmhwcCBiL2Mvc3JjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9LZXlEU0EuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5ZTZiYWEKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvS2V5RFNBLmhwcApAQCAtMCwwICsxLDIyNiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogT3BlblNTTENyeXB0b0tleURTQSA6PSBEU0EgS2V5cworICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBPUEVOU1NMQ1JZUFRPS0VZRFNBX0lOQ0xVREUKKyNkZWZpbmUgT1BFTlNTTENSWVBUT0tFWURTQV9JTkNMVURFCisKKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvS2V5RFNBLmhwcD4KKworI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorCisvKioKKyAqIFxpbmdyb3VwIG9wZW5zc2xjcnlwdG8KKyAqLworCisvKioKKyAqIFxicmllZiBPcGVuU1NMIGltcGxlbWVudGF0aW9uIGNsYXNzIGZvciBEU0Ega2V5cy4KKyAqCisgKiBUaGUgbGlicmFyeSB1c2VzIGNsYXNzZXMgZGVyaXZlZCBmcm9tIHRoaXMgdG8gcHJvY2VzcyBEU0Ega2V5cy4KKyAqLworCisKK2NsYXNzIERTSUdfRVhQT1JUIE9wZW5TU0xDcnlwdG9LZXlEU0EgOiBwdWJsaWMgWFNFQ0NyeXB0b0tleURTQSB7CisKK3B1YmxpYyA6CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKwkKKwlPcGVuU1NMQ3J5cHRvS2V5RFNBKCk7CisKKwkvKioKKwkgKiBcYnJpZWYgRGVzdHJ1Y3RvcgorCSAqCisJICogV2lsbCBjYWxsIHRoZSBPcGVuU1NMIGZ1bmN0aW9uIHRvIGRlc3Ryb3kgdGhlIERTQSBrZXkgLSB3aGljaCB3aWxsCisJICogYWxzbyBvdmVyd3JpdGUgYW55IFByaXZhdGUga2V5cworCSAqLworCisJdmlydHVhbCB+T3BlblNTTENyeXB0b0tleURTQSgpOworCisJLy9AfQorCisJLyoqIEBuYW1lIFJlcXVpcmVkIEtleSBJbnRlcmZhY2UgbWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gdGhlIHR5cGUgb2YgdGhpcyBrZXkuCisJICoKKwkgKiBBbGxvd3MgdGhlIGNhbGxlciAoYW5kIGxpYnJhcnkpIHRvIGRldGVybWluZSB3aGV0aGVyIHRoaXMgaXMgYSAKKwkgKiBwdWJsaWMga2V5LCBwcml2YXRlIGtleSBvciBhIGtleSBwYWlyCisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXk6OktleVR5cGUgZ2V0S2V5VHlwZSgpIGNvbnN0OworCisJLyoqCisJICpcYnJpZWYgUmV0dXJuIHRoZSBPcGVuU1NMIHN0cmluZyBpZGVudGlmaWVyCisJICovCisKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0UHJvdmlkZXJOYW1lKCkgY29uc3Qge3JldHVybiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJQUk9WT3BlblNTTDt9CisKKwkvKioKKwkgKiBcYnJpZWYgUmVwbGljYXRlIGtleQorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvS2V5ICogY2xvbmUoKSBjb25zdDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBSZXF1aXJlZCBEU0EgbWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBDcmVhdGUgYSBzaWduYXR1cmUKKwkgKgorCSAqIFNpZ24gdGhlIGJ1ZmZlciB1c2luZyB0aGUgaW50ZXJuYWwgcHJpdmF0ZSBrZXkuICBXaWxsIHRocm93IGEgRFNBRXJyb3IKKwkgKiBpZiB0aGUga2V5IGlzIG5vdCBzZXQsIG9yIGlzIG5vdCBhIHByaXZhdGUga2V5LgorCSAqCisJICogQHBhcmFtIGhhc2hCdWYgQnVmZmVyIGNvbnRhaW5pbmcgdGhlIHByZS1jYWxjdWxhdGVkIChiaW5hcnkpIGRpZ2VzdAorCSAqIEBwYXJhbSBoYXNoTGVuIE51bWJlciBvZiBieXRlcyBvZiBoYXNoIGluIHRoZSBoYXNoQnVmCisJICogQHBhcmFtIGJhc2U2NFNpZ25hdHVyZUJ1ZiBCdWZmZXIgdG8gcGxhY2UgdGhlIGJhc2U2NCBlbmNvZGVkIHJlc3VsdAorCSAqIGluLgorCSAqIEBwYXJhbSBiYXNlNjRTaWduYXR1cmVCdWZMZW4gSW1wbGVtZW50YXRpb25zIG5lZWQgdG8gZW5zdXJlIHRoZXkgZG8KKwkgKiBub3Qgd3JpdGUgbW9yZSBieXRlcyB0aGFuIHRoaXMgaW50byB0aGUgYnVmZmVyCisJICovCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCBzaWduQmFzZTY0U2lnbmF0dXJlKHVuc2lnbmVkIGNoYXIgKiBoYXNoQnVmLAorCQl1bnNpZ25lZCBpbnQgaGFzaExlbiwKKwkJY2hhciAqIGJhc2U2NFNpZ25hdHVyZUJ1ZiwKKwkJdW5zaWduZWQgaW50IGJhc2U2NFNpZ25hdHVyZUJ1Zkxlbik7CisKKwkvKioKKwkgKiBcYnJpZWYgVmVyaWZ5IGEgc2lnbmF0dXJlCisJICoKKwkgKiBUaGUgbGlicmFyeSB3aWxsIGNhbGwgdGhpcyBmdW5jdGlvbiB0byB2YWxpZGF0ZSBhIHNpZ25hdHVyZQorCSAqCisJICogQHBhcmFtIGhhc2hCdWYgQnVmZmVyIGNvbnRhaW5pbmcgdGhlIHByZS1jYWxjdWxhdGVkIChiaW5hcnkpIGRpZ2VzdAorCSAqIEBwYXJhbSBoYXNoTGVuIExlbmd0aCBvZiB0aGUgZGF0YSBpbiB0aGUgZGlnZXN0IGJ1ZmZlcgorCSAqIEBwYXJhbSBiYXNlNjRTaWduYXR1cmUgQnVmZmVyIGNvbnRhaW5pbmcgdGhlIEJhc2U2NCBlbmNvZGVkIHNpZ25hdHVyZQorCSAqIEBwYXJhbSBzaWdMZW4gTGVuZ3RoIG9mIHRoZSBkYXRhIGluIHRoZSBzaWduYXR1cmUgYnVmZmVyCisJICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgc2lnbmF0dXJlIHdhcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlCisJICovCisKKworCXZpcnR1YWwgYm9vbCB2ZXJpZnlCYXNlNjRTaWduYXR1cmUodW5zaWduZWQgY2hhciAqIGhhc2hCdWYsIAorCQkJCQkJCSB1bnNpZ25lZCBpbnQgaGFzaExlbiwKKwkJCQkJCQkgY2hhciAqIGJhc2U2NFNpZ25hdHVyZSwKKwkJCQkJCQkgdW5zaWduZWQgaW50IHNpZ0xlbik7CisJCisJLy9AfQorCisJLyoqIEBuYW1lIE9wdGlvbmFsIEludGVyZmFjZSBtZXRob2RzCisJICogCisJICogSGF2ZSBiZWVuIGZ1bGx5IGltcGxlbWVudGVkIGluIHRoZSBPcGVuU1NMIGludGVyZmFjZSB0byBhbGxvdyBpbnRlcm9wCisJICogdGVzdGluZyB0byBvY2N1ci4KKwkgKgorCSAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBMb2FkIFAKKwkgKgorCSAqIEBwYXJhbSBiNjQgQmFzZTY0IGVuY29kZWQgcGFyYW1ldGVyIC0gcmVhZCBmcm9tIFhNTCBkb2N1bWVudAorCSAqIEBwYXJhbSBsZW4gTGVuZ3RoIG9mIHRoZSBlbmNvZGVkIHN0cmluZworCSAqLworCisJdmlydHVhbCB2b2lkIGxvYWRQQmFzZTY0QmlnTnVtcyhjb25zdCBjaGFyICogYjY0LCB1bnNpZ25lZCBpbnQgbGVuKTsKKworCS8qKgorCSAqIFxicmllZiBMb2FkIFEKKwkgKgorCSAqIEBwYXJhbSBiNjQgQmFzZTY0IGVuY29kZWQgcGFyYW1ldGVyIC0gcmVhZCBmcm9tIFhNTCBkb2N1bWVudAorCSAqIEBwYXJhbSBsZW4gTGVuZ3RoIG9mIHRoZSBlbmNvZGVkIHN0cmluZworCSAqLworCisJdmlydHVhbCB2b2lkIGxvYWRRQmFzZTY0QmlnTnVtcyhjb25zdCBjaGFyICogYjY0LCB1bnNpZ25lZCBpbnQgbGVuKTsKKwkKKwkvKioKKwkgKiBcYnJpZWYgTG9hZCBHCisJICoKKwkgKiBAcGFyYW0gYjY0IEJhc2U2NCBlbmNvZGVkIHBhcmFtZXRlciAtIHJlYWQgZnJvbSBYTUwgZG9jdW1lbnQKKwkgKiBAcGFyYW0gbGVuIExlbmd0aCBvZiB0aGUgZW5jb2RlZCBzdHJpbmcKKwkgKi8KKworCXZpcnR1YWwgdm9pZCBsb2FkR0Jhc2U2NEJpZ051bXMoY29uc3QgY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbik7CisKKwkvKioKKwkgKiBcYnJpZWYgTG9hZCBZCisJICoKKwkgKiBAcGFyYW0gYjY0IEJhc2U2NCBlbmNvZGVkIHBhcmFtZXRlciAtIHJlYWQgZnJvbSBYTUwgZG9jdW1lbnQKKwkgKiBAcGFyYW0gbGVuIExlbmd0aCBvZiB0aGUgZW5jb2RlZCBzdHJpbmcKKwkgKi8KKworCXZpcnR1YWwgdm9pZCBsb2FkWUJhc2U2NEJpZ051bXMoY29uc3QgY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbik7CisKKwkvKioKKwkgKiBcYnJpZWYgTG9hZCBKCisJICoKKwkgKiBAcGFyYW0gYjY0IEJhc2U2NCBlbmNvZGVkIHBhcmFtZXRlciAtIHJlYWQgZnJvbSBYTUwgZG9jdW1lbnQKKwkgKiBAcGFyYW0gbGVuIExlbmd0aCBvZiB0aGUgZW5jb2RlZCBzdHJpbmcKKwkgKi8KKworCXZpcnR1YWwgdm9pZCBsb2FkSkJhc2U2NEJpZ051bXMoY29uc3QgY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbik7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgT3BlblNTTCBTcGVjaWZpYyBmdW5jdGlvbnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgTGlicmFyeSBzcGVjaWZpYyBjb25zdHJ1Y3RvcgorCSAqCisJICogVXNlZCB0byBjcmVhdGUgYSBuZXcga2V5IGFyb3VuZCBhbiBPcGVuU1NMIEVWUF9QS0VZIG9iamVjdAorCSAqIGhvbGRpbmcgYSBEU0Ega2V5CisJICovCisKKwlPcGVuU1NMQ3J5cHRvS2V5RFNBKEVWUF9QS0VZICprKTsKKworCS8qKgorCSAqIFxicmllZiBHZXQgT3BlblNTTCBEU0Egc3RydWN0dXJlCisJICovCisKKwlEU0EgKiBnZXRPcGVuU1NMRFNBKHZvaWQpIHtyZXR1cm4gbXBfZHNhS2V5O30KKworICAgIC8qKgorCSAqIFxicmllZiBHZXQgT3BlblNTTCBEU0Egc3RydWN0dXJlCisJICovCisKKwljb25zdCBEU0EgKiBnZXRPcGVuU1NMRFNBKHZvaWQpIGNvbnN0IHtyZXR1cm4gbXBfZHNhS2V5O30KKworCS8vQH0KKwkvL0B9CisKKworcHJpdmF0ZToKKworCVhTRUNDcnlwdG9LZXk6OktleVR5cGUJCQltX2tleVR5cGU7CisJRFNBCQkJCQkJCQkqIG1wX2RzYUtleTsKKwkKK307CisKKyNlbmRpZiAvKiBIQVZFX09QRU5TU0wgKi8KKyNlbmRpZiAvKiBYU0VDQ1JZUFRPS0VZRFNBX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9LZXlFQy5jcHAgYi9jL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvS2V5RUMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0MzVjODMKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvS2V5RUMuY3BwCkBAIC0wLDAgKzEsMzA0IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBPcGVuU1NMQ3J5cHRvS2V5RUMgOj0gRUMgS2V5cworICoKKyAqIEF1dGhvcihzKTogU2NvdHQgQ2FudG9yCisgKgorICogJElkOiQKKyAqCisgKi8KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaWYgZGVmaW5lZCAoSEFWRV9PUEVOU1NMKSAmJiBkZWZpbmVkIChYU0VDX09QRU5TU0xfSEFWRV9FQykKKworI2luY2x1ZGUgPHhzZWMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0tleUVDLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9CYXNlNjQuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b1Byb3ZpZGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvRXhjZXB0aW9uLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTQ3J5cHQvWFNDcnlwdENyeXB0b0Jhc2U2NC5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNQbGF0Zm9ybVV0aWxzLmhwcD4KKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9KYW5pdG9yLmhwcD4KKworWFNFQ19VU0lOR19YRVJDRVMoSmFuaXRvcik7CitYU0VDX1VTSU5HX1hFUkNFUyhBcnJheUphbml0b3IpOworCisKKyNpbmNsdWRlIDxvcGVuc3NsL2VjZHNhLmg+CisKK09wZW5TU0xDcnlwdG9LZXlFQzo6T3BlblNTTENyeXB0b0tleUVDKCkgOiBtcF9lY0tleShOVUxMKSB7Cit9OworCitPcGVuU1NMQ3J5cHRvS2V5RUM6On5PcGVuU1NMQ3J5cHRvS2V5RUMoKSB7CisKKworCS8vIElmIHdlIGhhdmUgYSBFQ19LRVksIGRlbGV0ZSBpdAorCS8vIE9wZW5TU0wgd2lsbCBlbnN1cmUgdGhlIG1lbW9yeSBob2xkaW5nIGFueSBwcml2YXRlIGtleSBpcyBmcmVlZC4KKworCWlmIChtcF9lY0tleSkKKwkJRUNfS0VZX2ZyZWUobXBfZWNLZXkpOworCit9OworCisvLyBHZW5lcmljIGtleSBmdW5jdGlvbnMKKworWFNFQ0NyeXB0b0tleTo6S2V5VHlwZSBPcGVuU1NMQ3J5cHRvS2V5RUM6OmdldEtleVR5cGUoKSBjb25zdCB7CisKKwkvLyBGaW5kIG91dCB3aGF0IHdlIGhhdmUKKwlpZiAobXBfZWNLZXkgPT0gTlVMTCkKKwkJcmV0dXJuIEtFWV9OT05FOworCisJaWYgKEVDX0tFWV9nZXQwX3ByaXZhdGVfa2V5KG1wX2VjS2V5KSAmJiBFQ19LRVlfZ2V0MF9wdWJsaWNfa2V5KG1wX2VjS2V5KSkKKwkJcmV0dXJuIEtFWV9FQ19QQUlSOworCisJaWYgKEVDX0tFWV9nZXQwX3ByaXZhdGVfa2V5KG1wX2VjS2V5KSkKKwkJcmV0dXJuIEtFWV9FQ19QUklWQVRFOworCisJaWYgKEVDX0tFWV9nZXQwX3B1YmxpY19rZXkobXBfZWNLZXkpKQorCQlyZXR1cm4gS0VZX0VDX1BVQkxJQzsKKworCXJldHVybiBLRVlfTk9ORTsKKworfQorCit2b2lkIE9wZW5TU0xDcnlwdG9LZXlFQzo6bG9hZFB1YmxpY0tleUJhc2U2NChjb25zdCBjaGFyKiBjdXJ2ZU5hbWUsIGNvbnN0IGNoYXIgKiBidWYsIHVuc2lnbmVkIGludCBsZW4pIHsKKworICAgIGlmIChtcF9lY0tleSkgeworICAgICAgICBFQ19LRVlfZnJlZShtcF9lY0tleSk7CisgICAgICAgIG1wX2VjS2V5ID0gTlVMTDsKKyAgICB9CisKKyAgICBFQ19LRVkqIGtleSA9IEVDX0tFWV9uZXdfYnlfY3VydmVfbmFtZShzdGF0aWNfY2FzdDxPcGVuU1NMQ3J5cHRvUHJvdmlkZXIqPihYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlciktPmN1cnZlTmFtZVRvTklEKGN1cnZlTmFtZSkpOworCisJaW50IGJ1ZkxlbiA9IGxlbjsKKwl1bnNpZ25lZCBjaGFyICogb3V0QnVmOworCVhTRUNuZXcob3V0QnVmLCB1bnNpZ25lZCBjaGFyW2xlbiArIDFdKTsKKwlBcnJheUphbml0b3I8dW5zaWduZWQgY2hhcj4gal9vdXRCdWYob3V0QnVmKTsKKworCVhTQ3J5cHRDcnlwdG9CYXNlNjQgKmI2NDsKKwlYU0VDbmV3KGI2NCwgWFNDcnlwdENyeXB0b0Jhc2U2NCk7CisJSmFuaXRvcjxYU0NyeXB0Q3J5cHRvQmFzZTY0PiBqX2I2NChiNjQpOworCisJYjY0LT5kZWNvZGVJbml0KCk7CisJYnVmTGVuID0gYjY0LT5kZWNvZGUoKHVuc2lnbmVkIGNoYXIgKikgYnVmLCBsZW4sIG91dEJ1ZiwgbGVuKTsKKwlidWZMZW4gKz0gYjY0LT5kZWNvZGVGaW5pc2goJm91dEJ1ZltidWZMZW5dLCBsZW4tYnVmTGVuKTsKKworICAgIGlmIChidWZMZW4gPiAwKSB7CisgICAgICAgIGlmIChvMmlfRUNQdWJsaWNLZXkoJmtleSwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiopICZvdXRCdWYsIGJ1ZkxlbikgPT0gTlVMTCkgeworICAgICAgICAgICAgRUNfS0VZX2ZyZWUoa2V5KTsKKyAgICAgICAgICAgIGtleSA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKwlpZiAoa2V5ID09IE5VTEwpIHsKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OkVDRXJyb3IsCisJCSJPcGVuU1NMOkVDIC0gRXJyb3IgdHJhbnNsYXRpbmcgQmFzZTY0IG9jdGV0cyBpbnRvIE9wZW5TU0wgRUNfS0VZIHN0cnVjdHVyZSIpOworCisJfQorCisgICAgbXBfZWNLZXkgPSBrZXk7Cit9CisKKworLy8gIkhpZGRlbiIgT3BlblNTTCBmdW5jdGlvbnMKKworT3BlblNTTENyeXB0b0tleUVDOjpPcGVuU1NMQ3J5cHRvS2V5RUMoRVZQX1BLRVkgKmspIHsKKworCS8vIENyZWF0ZSBhIG5ldyBrZXkgdG8gYmUgbG9hZGVkIGFzIHdlIGdvCisKKwlpZiAoayA9PSBOVUxMIHx8IGstPnR5cGUgIT0gRVZQX1BLRVlfRUMpCisJCXJldHVybjsJLy8gTm90aGluZyB0byBkbyB3aXRoIHVzCisKKyAgICBtcF9lY0tleSA9IEVDX0tFWV9kdXAoay0+cGtleS5lYyk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgVmVyaWZ5IGEgc2lnbmF0dXJlIGVuY29kZWQgYXMgYSBCYXNlNjQgc3RyaW5nCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitib29sIE9wZW5TU0xDcnlwdG9LZXlFQzo6dmVyaWZ5QmFzZTY0U2lnbmF0dXJlRFNBKHVuc2lnbmVkIGNoYXIgKiBoYXNoQnVmLAorCQkJCQkJCQkgdW5zaWduZWQgaW50IGhhc2hMZW4sCisJCQkJCQkJCSBjaGFyICogYmFzZTY0U2lnbmF0dXJlLAorCQkJCQkJCQkgdW5zaWduZWQgaW50IHNpZ0xlbikgeworCisJLy8gVXNlIHRoZSBjdXJyZW50bHkgbG9hZGVkIGtleSB0byB2YWxpZGF0ZSB0aGUgQmFzZTY0IGVuY29kZWQgc2lnbmF0dXJlCisKKwlpZiAobXBfZWNLZXkgPT0gTlVMTCkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6RUNFcnJvciwKKwkJCSJPcGVuU1NMOkVDIC0gQXR0ZW1wdCB0byB2YWxpZGF0ZSBzaWduYXR1cmUgd2l0aCBlbXB0eSBrZXkiKTsKKwl9CisKKwljaGFyICogY2xlYW5lZEJhc2U2NFNpZ25hdHVyZTsKKwl1bnNpZ25lZCBpbnQgY2xlYW5lZEJhc2U2NFNpZ25hdHVyZUxlbiA9IDA7CisKKwljbGVhbmVkQmFzZTY0U2lnbmF0dXJlID0KKwkJWFNFQ0NyeXB0b0Jhc2U2NDo6Y2xlYW5CdWZmZXIoYmFzZTY0U2lnbmF0dXJlLCBzaWdMZW4sIGNsZWFuZWRCYXNlNjRTaWduYXR1cmVMZW4pOworCUFycmF5SmFuaXRvcjxjaGFyPiBqX2NsZWFuZWRCYXNlNjRTaWduYXR1cmUoY2xlYW5lZEJhc2U2NFNpZ25hdHVyZSk7CisKKwl1bnNpZ25lZCBjaGFyIHNpZ1ZhbFs1MTJdOworCWludCBzaWdWYWxMZW47CisKKwlFVlBfRU5DT0RFX0NUWCBtX2RjdHg7CisJRVZQX0RlY29kZUluaXQoJm1fZGN0eCk7CisJaW50IHJjID0gRVZQX0RlY29kZVVwZGF0ZSgmbV9kY3R4LAorCQkJCQkJICBzaWdWYWwsCisJCQkJCQkgICZzaWdWYWxMZW4sCisJCQkJCQkgICh1bnNpZ25lZCBjaGFyICopIGNsZWFuZWRCYXNlNjRTaWduYXR1cmUsCisJCQkJCQkgIGNsZWFuZWRCYXNlNjRTaWduYXR1cmVMZW4pOworCisJaWYgKHJjIDwgMCkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6RUNFcnJvciwKKwkJCSJPcGVuU1NMOkVDIC0gRXJyb3IgZHVyaW5nIEJhc2U2NCBEZWNvZGUiKTsKKwl9CisJaW50IHQgPSAwOworCisJRVZQX0RlY29kZUZpbmFsKCZtX2RjdHgsICZzaWdWYWxbc2lnVmFsTGVuXSwgJnQpOworCisJc2lnVmFsTGVuICs9IHQ7CisKKyAgICBpZiAoc2lnVmFsTGVuIDw9IDAgfHwgc2lnVmFsTGVuICUgMiAhPSAwKSB7CisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6RUNFcnJvciwKKwkJCSJPcGVuU1NMOkVDIC0gU2lnbmF0dXJlIGxlbmd0aCB3YXMgb2RkIik7CisgICAgfQorCisJLy8gVHJhbnNsYXRlIHRvIEJOcyBieSBzcGxpdHRpbmcgaW4gaGFsZiwgYW5kIHRoZW5jZSB0byBFQ0RTQV9TSUcKKworCUVDRFNBX1NJRyAqIGRzYV9zaWcgPSBFQ0RTQV9TSUdfbmV3KCk7CisJZHNhX3NpZy0+ciA9IEJOX2JpbjJibihzaWdWYWwsIHNpZ1ZhbExlbiAvIDIsIE5VTEwpOworCWRzYV9zaWctPnMgPSBCTl9iaW4yYm4oJnNpZ1ZhbFtzaWdWYWxMZW4gLyAyXSwgc2lnVmFsTGVuIC8gMiwgTlVMTCk7CisKKwkvLyBOb3cgd2UgaGF2ZSBhIHNpZ25hdHVyZSBhbmQgYSBrZXkgLSBsZXRzIGNoZWNrCisKKwlpbnQgZXJyID0gRUNEU0FfZG9fdmVyaWZ5KGhhc2hCdWYsIGhhc2hMZW4sIGRzYV9zaWcsIG1wX2VjS2V5KTsKKworCUVDRFNBX1NJR19mcmVlKGRzYV9zaWcpOworCisJaWYgKGVyciA8IDApIHsKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OkVDRXJyb3IsCisJCQkiT3BlblNTTDpFQyAtIEVycm9yIHZhbGlkYXRpbmcgc2lnbmF0dXJlIik7CisJfQorCisJcmV0dXJuIChlcnIgPT0gMSk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBTaWduIGFuZCBlbmNvZGUgcmVzdWx0IGFzIGEgQmFzZTY0IHN0cmluZworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCit1bnNpZ25lZCBpbnQgT3BlblNTTENyeXB0b0tleUVDOjpzaWduQmFzZTY0U2lnbmF0dXJlRFNBKHVuc2lnbmVkIGNoYXIgKiBoYXNoQnVmLAorCQl1bnNpZ25lZCBpbnQgaGFzaExlbiwKKwkJY2hhciAqIGJhc2U2NFNpZ25hdHVyZUJ1ZiwKKwkJdW5zaWduZWQgaW50IGJhc2U2NFNpZ25hdHVyZUJ1ZkxlbikgeworCisJLy8gU2lnbiBhIHByZS1jYWxjdWxhdGVkIGhhc2ggdXNpbmcgdGhpcyBrZXkKKworCWlmIChtcF9lY0tleSA9PSBOVUxMKSB7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpFQ0Vycm9yLAorCQkJIk9wZW5TU0w6RUMgLSBBdHRlbXB0IHRvIHNpZ24gZGF0YSB3aXRoIGVtcHR5IGtleSIpOworCX0KKworCUVDRFNBX1NJRyAqIGRzYV9zaWc7CisKKwlkc2Ffc2lnID0gRUNEU0FfZG9fc2lnbihoYXNoQnVmLCBoYXNoTGVuLCBtcF9lY0tleSk7CisKKwlpZiAoZHNhX3NpZyA9PSBOVUxMKSB7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpFQ0Vycm9yLAorCQkJIk9wZW5TU0w6RUMgLSBFcnJvciBzaWduaW5nIGRhdGEiKTsKKworCX0KKworCS8vIE5vdyB0dXJuIHRoZSBzaWduYXR1cmUgaW50byBhIGJhc2U2NCBzdHJpbmcKKworCXVuc2lnbmVkIGNoYXIgcmF3U2lnQnVmWzI1Nl07CisJdW5zaWduZWQgaW50IHJhd0xlbjsKKworCXJhd0xlbiA9IEJOX2JuMmJpbihkc2Ffc2lnLT5yLCByYXdTaWdCdWYpOworCisJaWYgKHJhd0xlbiA8PSAwKSB7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpFQ0Vycm9yLAorCQkJIk9wZW5TU0w6RUMgLSBFcnJvciBjb252ZXJ0aW5nIHNpZ25hdHVyZSB0byByYXcgYnVmZmVyIik7CisKKwl9CisKKwl1bnNpZ25lZCBpbnQgcmF3TGVuUyA9IEJOX2JuMmJpbihkc2Ffc2lnLT5zLCAodW5zaWduZWQgY2hhciAqKSAmcmF3U2lnQnVmW3Jhd0xlbl0pOworCisJaWYgKHJhd0xlblMgPD0gMCkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6RUNFcnJvciwKKwkJCSJPcGVuU1NMOkVDIC0gRXJyb3IgY29udmVydGluZyBzaWduYXR1cmUgdG8gcmF3IGJ1ZmZlciIpOworCisJfQorCisJcmF3TGVuICs9IHJhd0xlblM7CisKKwkvLyBOb3cgY29udmVydCB0byBCYXNlIDY0CisKKwlCSU8gKiBiNjQgPSBCSU9fbmV3KEJJT19mX2Jhc2U2NCgpKTsKKwlCSU8gKiBibWVtID0gQklPX25ldyhCSU9fc19tZW0oKSk7CisKKwlCSU9fc2V0X21lbV9lb2ZfcmV0dXJuKGJtZW0sIDApOworCWI2NCA9IEJJT19wdXNoKGI2NCwgYm1lbSk7CisKKwkvLyBUcmFuc2xhdGUgc2lnbmF0dXJlIHRvIEJhc2U2NAorCisJQklPX3dyaXRlKGI2NCwgcmF3U2lnQnVmLCByYXdMZW4pOworCUJJT19mbHVzaChiNjQpOworCisJdW5zaWduZWQgaW50IHNpZ1ZhbExlbiA9IEJJT19yZWFkKGJtZW0sIGJhc2U2NFNpZ25hdHVyZUJ1ZiwgYmFzZTY0U2lnbmF0dXJlQnVmTGVuKTsKKworCUJJT19mcmVlX2FsbChiNjQpOworCisJaWYgKHNpZ1ZhbExlbiA8PSAwKSB7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpFQ0Vycm9yLAorCQkJIk9wZW5TU0w6RUMgLSBFcnJvciBiYXNlNjQgZW5jb2Rpbmcgc2lnbmF0dXJlIik7CisJfQorCisJcmV0dXJuIHNpZ1ZhbExlbjsKKworfQorCisKKworWFNFQ0NyeXB0b0tleSAqIE9wZW5TU0xDcnlwdG9LZXlFQzo6Y2xvbmUoKSBjb25zdCB7CisKKwlPcGVuU1NMQ3J5cHRvS2V5RUMgKiByZXQ7CisKKwlYU0VDbmV3KHJldCwgT3BlblNTTENyeXB0b0tleUVDKTsKKworCXJldC0+bV9rZXlUeXBlID0gbV9rZXlUeXBlOworICAgIGlmIChtcF9lY0tleSkKKyAgICAgICAgcmV0LT5tcF9lY0tleSA9IEVDX0tFWV9kdXAobXBfZWNLZXkpOworCisJcmV0dXJuIHJldDsKKworfQorCisjZW5kaWYgLyogSEFWRV9PUEVOU1NMICovCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvS2V5RUMuaHBwIGIvYy9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0tleUVDLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGM4ZWNmCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0tleUVDLmhwcApAQCAtMCwwICsxLDE4NiBAQAorLyoNCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKg0KKyAqIFhTRUMNCisgKg0KKyAqIE9wZW5TU0xDcnlwdG9LZXlFQyA6PSBFQyBLZXlzDQorICoNCisgKiBBdXRob3Iocyk6IFNjb3R0IENhbnRvcg0KKyAqDQorICogJElkOiQNCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgT1BFTlNTTENSWVBUT0tFWUVDX0lOQ0xVREUNCisjZGVmaW5lIE9QRU5TU0xDUllQVE9LRVlFQ19JTkNMVURFDQorDQorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9LZXlFQy5ocHA+DQorDQorI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkgJiYgZGVmaW5lZChYU0VDX09QRU5TU0xfSEFWRV9FQykNCisjaW5jbHVkZSA8b3BlbnNzbC9lYy5oPg0KKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPg0KKw0KKy8qKg0KKyAqIFxpbmdyb3VwIG9wZW5zc2xjcnlwdG8NCisgKi8NCisNCisvKioNCisgKiBcYnJpZWYgT3BlblNTTCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBmb3IgRUMga2V5cy4NCisgKg0KKyAqIFRoZSBsaWJyYXJ5IHVzZXMgY2xhc3NlcyBkZXJpdmVkIGZyb20gdGhpcyB0byBwcm9jZXNzIEVDIGtleXMuDQorICovDQorDQorDQorY2xhc3MgRFNJR19FWFBPUlQgT3BlblNTTENyeXB0b0tleUVDIDogcHVibGljIFhTRUNDcnlwdG9LZXlFQyB7DQorDQorcHVibGljIDoNCisNCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8NCisJLy9Aew0KKwkNCisJT3BlblNTTENyeXB0b0tleUVDKCk7DQorDQorCS8qKg0KKwkgKiBcYnJpZWYgRGVzdHJ1Y3Rvcg0KKwkgKg0KKwkgKiBXaWxsIGNhbGwgdGhlIE9wZW5TU0wgZnVuY3Rpb24gdG8gZGVzdHJveSB0aGUgRUMga2V5IC0gd2hpY2ggd2lsbA0KKwkgKiBhbHNvIG92ZXJ3cml0ZSBhbnkgUHJpdmF0ZSBrZXlzDQorCSAqLw0KKw0KKwl2aXJ0dWFsIH5PcGVuU1NMQ3J5cHRvS2V5RUMoKTsNCisNCisJLy9AfQ0KKw0KKwkvKiogQG5hbWUgUmVxdWlyZWQgS2V5IEludGVyZmFjZSBtZXRob2RzICovDQorCS8vQHsNCisNCisJLyoqDQorCSAqIFxicmllZiBSZXR1cm4gdGhlIHR5cGUgb2YgdGhpcyBrZXkuDQorCSAqDQorCSAqIEFsbG93cyB0aGUgY2FsbGVyIChhbmQgbGlicmFyeSkgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBpcyBhIA0KKwkgKiBwdWJsaWMga2V5LCBwcml2YXRlIGtleSBvciBhIGtleSBwYWlyDQorCSAqLw0KKw0KKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXk6OktleVR5cGUgZ2V0S2V5VHlwZSgpIGNvbnN0Ow0KKw0KKwkvKioNCisJICpcYnJpZWYgUmV0dXJuIHRoZSBPcGVuU1NMIHN0cmluZyBpZGVudGlmaWVyDQorCSAqLw0KKw0KKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0UHJvdmlkZXJOYW1lKCkgY29uc3Qge3JldHVybiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJQUk9WT3BlblNTTDt9DQorDQorCS8qKg0KKwkgKiBcYnJpZWYgUmVwbGljYXRlIGtleQ0KKwkgKi8NCisNCisJdmlydHVhbCBYU0VDQ3J5cHRvS2V5ICogY2xvbmUoKSBjb25zdDsNCisNCisJLy9AfQ0KKw0KKwkvKiogQG5hbWUgUmVxdWlyZWQgRUMgbWV0aG9kcyAqLw0KKwkvL0B7DQorDQorCS8qKg0KKwkgKiBcYnJpZWYgQ3JlYXRlIGFuIEVDLURTQSBzaWduYXR1cmUNCisJICoNCisJICogU2lnbiB0aGUgYnVmZmVyIHVzaW5nIHRoZSBpbnRlcm5hbCBwcml2YXRlIGtleS4gIFdpbGwgdGhyb3cgYW4gRUNFcnJvcg0KKwkgKiBpZiB0aGUga2V5IGlzIG5vdCBzZXQsIG9yIGlzIG5vdCBhIHByaXZhdGUga2V5Lg0KKwkgKg0KKwkgKiBAcGFyYW0gaGFzaEJ1ZiBCdWZmZXIgY29udGFpbmluZyB0aGUgcHJlLWNhbGN1bGF0ZWQgKGJpbmFyeSkgZGlnZXN0DQorCSAqIEBwYXJhbSBoYXNoTGVuIE51bWJlciBvZiBieXRlcyBvZiBoYXNoIGluIHRoZSBoYXNoQnVmDQorCSAqIEBwYXJhbSBiYXNlNjRTaWduYXR1cmVCdWYgQnVmZmVyIHRvIHBsYWNlIHRoZSBiYXNlNjQgZW5jb2RlZCByZXN1bHQNCisJICogaW4uDQorCSAqIEBwYXJhbSBiYXNlNjRTaWduYXR1cmVCdWZMZW4gSW1wbGVtZW50YXRpb25zIG5lZWQgdG8gZW5zdXJlIHRoZXkgZG8NCisJICogbm90IHdyaXRlIG1vcmUgYnl0ZXMgdGhhbiB0aGlzIGludG8gdGhlIGJ1ZmZlcg0KKwkgKi8NCisNCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgc2lnbkJhc2U2NFNpZ25hdHVyZURTQSh1bnNpZ25lZCBjaGFyICogaGFzaEJ1ZiwNCisJCXVuc2lnbmVkIGludCBoYXNoTGVuLA0KKwkJY2hhciAqIGJhc2U2NFNpZ25hdHVyZUJ1ZiwNCisJCXVuc2lnbmVkIGludCBiYXNlNjRTaWduYXR1cmVCdWZMZW4pOw0KKw0KKwkvKioNCisJICogXGJyaWVmIFZlcmlmeSBhbiBFQy1EU0Egc2lnbmF0dXJlDQorCSAqDQorCSAqIFRoZSBsaWJyYXJ5IHdpbGwgY2FsbCB0aGlzIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIGEgc2lnbmF0dXJlDQorCSAqDQorCSAqIEBwYXJhbSBoYXNoQnVmIEJ1ZmZlciBjb250YWluaW5nIHRoZSBwcmUtY2FsY3VsYXRlZCAoYmluYXJ5KSBkaWdlc3QNCisJICogQHBhcmFtIGhhc2hMZW4gTGVuZ3RoIG9mIHRoZSBkYXRhIGluIHRoZSBkaWdlc3QgYnVmZmVyDQorCSAqIEBwYXJhbSBiYXNlNjRTaWduYXR1cmUgQnVmZmVyIGNvbnRhaW5pbmcgdGhlIEJhc2U2NCBlbmNvZGVkIHNpZ25hdHVyZQ0KKwkgKiBAcGFyYW0gc2lnTGVuIExlbmd0aCBvZiB0aGUgZGF0YSBpbiB0aGUgc2lnbmF0dXJlIGJ1ZmZlcg0KKwkgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBzaWduYXR1cmUgd2FzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UNCisJICovDQorDQorDQorCXZpcnR1YWwgYm9vbCB2ZXJpZnlCYXNlNjRTaWduYXR1cmVEU0EodW5zaWduZWQgY2hhciAqIGhhc2hCdWYsIA0KKwkJCQkJCQkgdW5zaWduZWQgaW50IGhhc2hMZW4sDQorCQkJCQkJCSBjaGFyICogYmFzZTY0U2lnbmF0dXJlLA0KKwkJCQkJCQkgdW5zaWduZWQgaW50IHNpZ0xlbik7DQorCQ0KKwkvL0B9DQorDQorCS8qKiBAbmFtZSBPcHRpb25hbCBJbnRlcmZhY2UgbWV0aG9kcw0KKwkgKiANCisJICogSGF2ZSBiZWVuIGZ1bGx5IGltcGxlbWVudGVkIGluIHRoZSBPcGVuU1NMIGludGVyZmFjZSB0byBhbGxvdyBpbnRlcm9wDQorCSAqIHRlc3RpbmcgdG8gb2NjdXIuDQorCSAqDQorCSAqLw0KKwkvL0B7DQorDQorICAgIHZpcnR1YWwgdm9pZCBsb2FkUHVibGljS2V5QmFzZTY0KGNvbnN0IGNoYXIqIGN1cnZlTmFtZSwNCisgICAgICAgIGNvbnN0IGNoYXIqIGI2NCwNCisgICAgICAgIHVuc2lnbmVkIGludCBsZW4pOw0KKw0KKwkvL0B9DQorDQorCS8qKiBAbmFtZSBPcGVuU1NMIFNwZWNpZmljIGZ1bmN0aW9ucyAqLw0KKwkvL0B7DQorDQorCS8qKg0KKwkgKiBcYnJpZWYgTGlicmFyeSBzcGVjaWZpYyBjb25zdHJ1Y3Rvcg0KKwkgKg0KKwkgKiBVc2VkIHRvIGNyZWF0ZSBhIG5ldyBrZXkgYXJvdW5kIGFuIE9wZW5TU0wgRVZQX1BLRVkgb2JqZWN0DQorCSAqIGhvbGRpbmcgYW4gRUMga2V5DQorCSAqLw0KKw0KKwlPcGVuU1NMQ3J5cHRvS2V5RUMoRVZQX1BLRVkgKmspOw0KKw0KKwkvKioNCisJICogXGJyaWVmIEdldCBPcGVuU1NMIEVDX0tFWSBzdHJ1Y3R1cmUNCisJICovDQorDQorCUVDX0tFWSAqIGdldE9wZW5TU0xFQyh2b2lkKSB7cmV0dXJuIG1wX2VjS2V5O30NCisNCisgICAgLyoqDQorCSAqIFxicmllZiBHZXQgT3BlblNTTCBFQ19LRVkgc3RydWN0dXJlDQorCSAqLw0KKw0KKwljb25zdCBFQ19LRVkgKiBnZXRPcGVuU1NMRUModm9pZCkgY29uc3Qge3JldHVybiBtcF9lY0tleTt9DQorDQorCS8vQH0NCisJLy9AfQ0KKw0KKw0KK3ByaXZhdGU6DQorDQorCVhTRUNDcnlwdG9LZXk6OktleVR5cGUJCQltX2tleVR5cGU7DQorCUVDX0tFWQkJCQkJICAgICAgICAqIG1wX2VjS2V5Ow0KKwkNCit9Ow0KKw0KKyNlbmRpZiAvKiBIQVZFX09QRU5TU0wgKi8NCisjZW5kaWYgLyogWFNFQ0NSWVBUT0tFWUVDX0lOQ0xVREUgKi8NCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvS2V5SE1BQy5jcHAgYi9jL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvS2V5SE1BQy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzY0YTllOAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9LZXlITUFDLmNwcApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYU0VDQ3J5cHRvS2V5SE1BQyA6PSBSYXcgSE1BQyBidWZmZXJzCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKworI2luY2x1ZGUgPHhzZWMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0tleUhNQUMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisKK09wZW5TU0xDcnlwdG9LZXlITUFDOjpPcGVuU1NMQ3J5cHRvS2V5SE1BQygpIDptX2tleUJ1ZigiIikgeworCisJbV9rZXlCdWYuaXNTZW5zaXRpdmUoKTsKKwltX2tleUxlbiA9IDA7CisKK307CisKK3ZvaWQgT3BlblNTTENyeXB0b0tleUhNQUM6OnNldEtleSh1bnNpZ25lZCBjaGFyICogaW5CdWYsIHVuc2lnbmVkIGludCBpbkxlbmd0aCkgeworCisJbV9rZXlCdWYuc2JNZW1jcHlJbihpbkJ1ZiwgaW5MZW5ndGgpOworCW1fa2V5QnVmLmlzU2Vuc2l0aXZlKCk7CisJbV9rZXlMZW4gPSBpbkxlbmd0aDsKKworfQorCit1bnNpZ25lZCBpbnQgT3BlblNTTENyeXB0b0tleUhNQUM6OmdldEtleShzYWZlQnVmZmVyICZvdXRCdWYpIGNvbnN0IHsKKworCW91dEJ1ZiA9IG1fa2V5QnVmOworCXJldHVybiBtX2tleUxlbjsKKworfQorCitYU0VDQ3J5cHRvS2V5ICogT3BlblNTTENyeXB0b0tleUhNQUM6OmNsb25lKCkgY29uc3QgeworCisJT3BlblNTTENyeXB0b0tleUhNQUMgKiByZXQ7CisKKwlYU0VDbmV3KHJldCwgT3BlblNTTENyeXB0b0tleUhNQUMoKSk7CisKKwlyZXQtPm1fa2V5QnVmID0gbV9rZXlCdWY7CisJcmV0LT5tX2tleUxlbiA9IG1fa2V5TGVuOworCisJcmV0dXJuIHJldDsKKworfQorCisjZW5kaWYgLyogSEFWRV9PUEVOU1NMICovCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvS2V5SE1BQy5ocHAgYi9jL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvS2V5SE1BQy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjlmMzA5MQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9LZXlITUFDLmhwcApAQCAtMCwwICsxLDEzMCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ0NyeXB0b0tleUhNQUMgOj0gSE1BQyBLZXlzCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIE9QRU5TU0xDUllQVE9LRVlITUFDX0lOQ0xVREUKKyNkZWZpbmUgT1BFTlNTTENSWVBUT0tFWUhNQUNfSU5DTFVERQorCisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b0tleUhNQUMuaHBwPgorCisjaWYgZGVmaW5lZCAoSEFWRV9PUEVOU1NMKQorCisvKioKKyAqIFxpbmdyb3VwIG9wZW5zc2xjcnlwdG8KKyAqLworCisvKioKKyAqIFxicmllZiBPcGVuU1NMIGltcGxlbWVudGF0aW9uIGZvciBITUFDIGtleXMuCisgKgorICogVXNlZCB0byBwcm92aWRlIEhNQUMga2V5cyB0byBPcGVuU1NMQ3J5cHRvSGFzaEhNQUMKKyAqLworCitjbGFzcyBEU0lHX0VYUE9SVCBPcGVuU1NMQ3J5cHRvS2V5SE1BQyA6IHB1YmxpYyBYU0VDQ3J5cHRvS2V5SE1BQyB7CisKK3B1YmxpYyA6CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworCU9wZW5TU0xDcnlwdG9LZXlITUFDKCk7CisJdmlydHVhbCB+T3BlblNTTENyeXB0b0tleUhNQUMoKSB7fTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBLZXkgSW50ZXJmYWNlIG1ldGhvZHMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIHRoZSB0eXBlIG9mIHRoaXMga2V5LgorCSAqCisJICogRm9yIERTQSBrZXlzLCB0aGlzIGFsbG93cyBwZW9wbGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBpcyBhIAorCSAqIHB1YmxpYyBrZXksIHByaXZhdGUga2V5IG9yIGEga2V5IHBhaXIKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0tleTo6S2V5VHlwZSBnZXRLZXlUeXBlKCkgY29uc3Qge3JldHVybiBLRVlfSE1BQzt9CisKKwkvKioKKwkgKiBcYnJpZWYgUmVwbGljYXRlIGtleQorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvS2V5ICogY2xvbmUoKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gdGhlIE9wZW5TU0wgc3RyaW5nIGlkZW50aWZpZXIKKwkgKi8KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRQcm92aWRlck5hbWUoKSBjb25zdCB7cmV0dXJuIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clBST1ZPcGVuU1NMO30KKwkKKwkvL0B9CisKKwkvKiogQG5hbWUgT3B0aW9uYWwgSW50ZXJmYWNlIG1ldGhvZHMKKwkgKiAKKwkgKiBUaGVzZSBmdW5jdGlvbnMgZG8gbm90IG5lY2Vzc2FyaWx5IGhhdmUgdG8gYmUgaW1wbG1lbnRlZC4gIFRoZXkKKwkgKiBhcmUgdXNlZCBieSBYU0VDS2V5SW5mb1Jlc29sdmVyRGVmYXVsdCB0byB0cnkgdG8gY3JlYXRlIGEga2V5IGZyb20KKwkgKiBLZXlJbmZvIGVsZW1lbnRzIHdpdGhvdXQga25vd2luZyBhbnl0aGluZyBlbHNlLgorCSAqCisJICogSWYgYW4gaW50ZXJmYWNlIGNsYXNzIGRvZXMgbm90IGltcGxlbWVudCB0aGVzZSBmdW5jdGlvbnMsIGEgc2ltcGxlCisJICogc3R1YiB0aGF0IGRvZXMgbm90aGluZyBzaG91bGQgYmUgdXNlZC4KKwkgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgU2V0IHRoZSBrZXkKKwkgKgorCSAqIFNldCB0aGUga2V5IGZyb20gdGhlIGJ1ZmZlcgorCSAqCisJICogQHBhcmFtIGluQnVmIEJ1ZmZlciBjb250YWluaW5nIHRoZSBrZXkKKwkgKiBAcGFyYW0gaW5MZW5ndGggTnVtYmVyIG9mIGJ5dGVzIG9mIGtleSBpbiB0aGUgYnVmZmVyCisJICoKKwkgKiBAbm90ZSBpc1NlbnNpdGl2ZSgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uIHRoZSBpbmJvdW5kIGJ1ZmZlcgorCSAqIHRvIGVuc3VyZSB0aGUgY29udGVudHMgaXMgb3ZlcndyaXR0ZW4gd2hlbiB0aGUgc2FmZUJ1ZmZlciBpcyBkZWxldGVkCisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0S2V5KHVuc2lnbmVkIGNoYXIgKiBpbkJ1ZiwgdW5zaWduZWQgaW50IGluTGVuZ3RoKTsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIGtleSB2YWx1ZQorCSAqIAorCSAqIENvcHkgdGhlIGtleSBpbnRvIHRoZSBzYWZlQnVmZmVyIGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcworCSAqIGNvcGllZC4KKwkgKgorCSAqIEBwYXJhbSBvdXRCdWYgQnVmZmVyIHRvIGNvcHkga2V5IGludG8KKwkgKiBAcmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgY29waWVkIGluCisJICovCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRLZXkoc2FmZUJ1ZmZlciAmb3V0QnVmKSBjb25zdDsKKworCS8vQH0KKworcHJpdmF0ZToKKworCXNhZmVCdWZmZXIJCQltX2tleUJ1ZjsKKwl1bnNpZ25lZCBpbnQJCW1fa2V5TGVuOworfTsKKworI2VuZGlmIC8qIEhBVkVfT1BFTlNTTCAqLworCisjZW5kaWYgLyogT1BFTlNTTENSWVBUT0tFWUhNQUNfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0tleVJTQS5jcHAgYi9jL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvS2V5UlNBLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjU4M2YzCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0tleVJTQS5jcHAKQEAgLTAsMCArMSw2ODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIE9wZW5TU0xDcnlwdG9LZXlSU0EgOj0gUlNBIEtleXMKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaWYgZGVmaW5lZCAoSEFWRV9PUEVOU1NMKQorCisjaW5jbHVkZSA8eHNlYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvS2V5UlNBLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9CYXNlNjQuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9FeGNlcHRpb24uaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKworI2luY2x1ZGUgPG9wZW5zc2wvcnNhLmg+CisKKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvSmFuaXRvci5ocHA+CisKK1hTRUNfVVNJTkdfWEVSQ0VTKEFycmF5SmFuaXRvcik7CisKKyNpbmNsdWRlIDxtZW1vcnkuaD4KKworT3BlblNTTENyeXB0b0tleVJTQTo6T3BlblNTTENyeXB0b0tleVJTQSgpIDoKK21wX3JzYUtleShOVUxMKSwKK21wX29hZXBQYXJhbXMoTlVMTCksCittX29hZXBQYXJhbXNMZW4oMCkgeworfTsKKworT3BlblNTTENyeXB0b0tleVJTQTo6fk9wZW5TU0xDcnlwdG9LZXlSU0EoKSB7CisKKworCS8vIElmIHdlIGhhdmUgYSBSU0EsIGRlbGV0ZSBpdCAoT3BlblNTTCB3aWxsIGNsZWFyIHRoZSBtZW1vcnkpCisKKwlpZiAobXBfcnNhS2V5KQorCQlSU0FfZnJlZShtcF9yc2FLZXkpOworCisJaWYgKG1wX29hZXBQYXJhbXMgIT0gTlVMTCkKKwkJZGVsZXRlW10gbXBfb2FlcFBhcmFtczsKKworfTsKKwordm9pZCBPcGVuU1NMQ3J5cHRvS2V5UlNBOjpzZXRPQUVQcGFyYW1zKHVuc2lnbmVkIGNoYXIgKiBwYXJhbXMsIHVuc2lnbmVkIGludCBwYXJhbXNMZW4pIHsKKworCWlmIChtcF9vYWVwUGFyYW1zICE9IE5VTEwpIHsKKwkJZGVsZXRlW10gbXBfb2FlcFBhcmFtczsKKwl9CisKKwltX29hZXBQYXJhbXNMZW4gPSBwYXJhbXNMZW47CisJaWYgKHBhcmFtcyAhPSBOVUxMKSB7CisJCVhTRUNuZXcobXBfb2FlcFBhcmFtcywgdW5zaWduZWQgY2hhcltwYXJhbXNMZW5dKTsKKwkJbWVtY3B5KG1wX29hZXBQYXJhbXMsIHBhcmFtcywgcGFyYW1zTGVuKTsKKwl9CisJZWxzZQorCQltcF9vYWVwUGFyYW1zID0gTlVMTDsKKworfQorCit1bnNpZ25lZCBpbnQgT3BlblNTTENyeXB0b0tleVJTQTo6Z2V0T0FFUHBhcmFtc0xlbih2b2lkKSBjb25zdCB7CisKKwlyZXR1cm4gbV9vYWVwUGFyYW1zTGVuOworCit9CisKK2NvbnN0IHVuc2lnbmVkIGNoYXIgKiBPcGVuU1NMQ3J5cHRvS2V5UlNBOjpnZXRPQUVQcGFyYW1zKHZvaWQpIGNvbnN0IHsKKworCXJldHVybiBtcF9vYWVwUGFyYW1zOworCit9CisKKy8vIEdlbmVyaWMga2V5IGZ1bmN0aW9ucworCitYU0VDQ3J5cHRvS2V5OjpLZXlUeXBlIE9wZW5TU0xDcnlwdG9LZXlSU0E6OmdldEtleVR5cGUoKSBjb25zdCB7CisKKwkvLyBGaW5kIG91dCB3aGF0IHdlIGhhdmUKKwlpZiAobXBfcnNhS2V5ID09IE5VTEwpCisJCXJldHVybiBLRVlfTk9ORTsKKworCWlmIChtcF9yc2FLZXktPm4gIT0gTlVMTCAmJiBtcF9yc2FLZXktPmQgIT0gTlVMTCkKKwkJcmV0dXJuIEtFWV9SU0FfUEFJUjsKKworCWlmIChtcF9yc2FLZXktPmQgIT0gTlVMTCkKKwkJcmV0dXJuIEtFWV9SU0FfUFJJVkFURTsKKworCWlmIChtcF9yc2FLZXktPm4gIT0gTlVMTCkKKwkJcmV0dXJuIEtFWV9SU0FfUFVCTElDOworCisJcmV0dXJuIEtFWV9OT05FOworCit9CisKK3ZvaWQgT3BlblNTTENyeXB0b0tleVJTQTo6bG9hZFB1YmxpY01vZHVsdXNCYXNlNjRCaWdOdW1zKGNvbnN0IGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBsZW4pIHsKKworCWlmIChtcF9yc2FLZXkgPT0gTlVMTCkKKwkJbXBfcnNhS2V5ID0gUlNBX25ldygpOworCisJbXBfcnNhS2V5LT5uID0gT3BlblNTTENyeXB0b0Jhc2U2NDo6YjY0MkJOKChjaGFyICopIGI2NCwgbGVuKTsKKworfQorCit2b2lkIE9wZW5TU0xDcnlwdG9LZXlSU0E6OmxvYWRQdWJsaWNFeHBvbmVudEJhc2U2NEJpZ051bXMoY29uc3QgY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbikgeworCisJaWYgKG1wX3JzYUtleSA9PSBOVUxMKQorCQltcF9yc2FLZXkgPSBSU0FfbmV3KCk7CisKKwltcF9yc2FLZXktPmUgPSBPcGVuU1NMQ3J5cHRvQmFzZTY0OjpiNjQyQk4oKGNoYXIgKikgYjY0LCBsZW4pOworCit9CisKKy8vICJIaWRkZW4iIE9wZW5TU0wgZnVuY3Rpb25zCisKK09wZW5TU0xDcnlwdG9LZXlSU0E6Ok9wZW5TU0xDcnlwdG9LZXlSU0EoRVZQX1BLRVkgKmspIHsKKworCS8vIENyZWF0ZSBhIG5ldyBrZXkgdG8gYmUgbG9hZGVkIGFzIHdlIGdvCisKKwltcF9vYWVwUGFyYW1zID0gTlVMTDsKKwltX29hZXBQYXJhbXNMZW4gPSAwOworCisJbXBfcnNhS2V5ID0gUlNBX25ldygpOworCisJaWYgKGsgPT0gTlVMTCB8fCBrLT50eXBlICE9IEVWUF9QS0VZX1JTQSkKKwkJcmV0dXJuOwkvLyBOb3RoaW5nIHRvIGRvIHdpdGggdXMKKworCWlmIChrLT5wa2V5LnJzYS0+bikKKwkJbXBfcnNhS2V5LT5uID0gQk5fZHVwKGstPnBrZXkucnNhLT5uKTsKKworCWlmIChrLT5wa2V5LnJzYS0+ZSkKKwkJbXBfcnNhS2V5LT5lID0gQk5fZHVwKGstPnBrZXkucnNhLT5lKTsKKworCWlmIChrLT5wa2V5LnJzYS0+ZCkKKwkJbXBfcnNhS2V5LT5kID0gQk5fZHVwKGstPnBrZXkucnNhLT5kKTsKKworCWlmIChrLT5wa2V5LnJzYS0+cCkKKwkJbXBfcnNhS2V5LT5wID0gQk5fZHVwKGstPnBrZXkucnNhLT5wKTsKKworCWlmIChrLT5wa2V5LnJzYS0+cSkKKwkJbXBfcnNhS2V5LT5xID0gQk5fZHVwKGstPnBrZXkucnNhLT5xKTsKKworCWlmIChrLT5wa2V5LnJzYS0+ZG1wMSkKKwkJbXBfcnNhS2V5LT5kbXAxID0gQk5fZHVwKGstPnBrZXkucnNhLT5kbXAxKTsKKworCWlmIChrLT5wa2V5LnJzYS0+ZG1xMSkKKwkJbXBfcnNhS2V5LT5kbXExID0gQk5fZHVwKGstPnBrZXkucnNhLT5kbXExKTsKKworCWlmIChrLT5wa2V5LnJzYS0+aXFtcCkKKwkJbXBfcnNhS2V5LT5pcW1wID0gQk5fZHVwKGstPnBrZXkucnNhLT5pcW1wKTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFZlcmlmeSBhIHNpZ25hdHVyZSBlbmNvZGVkIGFzIGEgQmFzZTY0IHN0cmluZworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYm9vbCBPcGVuU1NMQ3J5cHRvS2V5UlNBOjp2ZXJpZnlTSEExUEtDUzFCYXNlNjRTaWduYXR1cmUoY29uc3QgdW5zaWduZWQgY2hhciAqIGhhc2hCdWYsCisJCQkJCQkJCSB1bnNpZ25lZCBpbnQgaGFzaExlbiwKKwkJCQkJCQkJIGNvbnN0IGNoYXIgKiBiYXNlNjRTaWduYXR1cmUsCisJCQkJCQkJCSB1bnNpZ25lZCBpbnQgc2lnTGVuLAorCQkJCQkJCQkgaGFzaE1ldGhvZCBobSA9IEhBU0hfU0hBMSkgeworCisJLy8gVXNlIHRoZSBjdXJyZW50bHkgbG9hZGVkIGtleSB0byB2YWxpZGF0ZSB0aGUgQmFzZTY0IGVuY29kZWQgc2lnbmF0dXJlCisKKwlpZiAobXBfcnNhS2V5ID09IE5VTEwpIHsKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlJTQUVycm9yLAorCQkJIk9wZW5TU0w6UlNBIC0gQXR0ZW1wdCB0byB2YWxpZGF0ZSBzaWduYXR1cmUgd2l0aCBlbXB0eSBrZXkiKTsKKwl9CisKKwl1bnNpZ25lZCBjaGFyIHNpZ1ZhbFsxMDI0XTsKKwlpbnQgc2lnVmFsTGVuOworCisJRVZQX0VOQ09ERV9DVFggbV9kY3R4OworCWludCByYzsKKworCWNoYXIgKiBjbGVhbmVkQmFzZTY0U2lnbmF0dXJlOworCXVuc2lnbmVkIGludCBjbGVhbmVkQmFzZTY0U2lnbmF0dXJlTGVuID0gMDsKKworCWNsZWFuZWRCYXNlNjRTaWduYXR1cmUgPQorCQlYU0VDQ3J5cHRvQmFzZTY0OjpjbGVhbkJ1ZmZlcihiYXNlNjRTaWduYXR1cmUsIHNpZ0xlbiwgY2xlYW5lZEJhc2U2NFNpZ25hdHVyZUxlbik7CisJQXJyYXlKYW5pdG9yPGNoYXI+IGpfY2xlYW5lZEJhc2U2NFNpZ25hdHVyZShjbGVhbmVkQmFzZTY0U2lnbmF0dXJlKTsKKworCUVWUF9EZWNvZGVJbml0KCZtX2RjdHgpOworCXJjID0gRVZQX0RlY29kZVVwZGF0ZSgmbV9kY3R4LAorCQkJCQkJICBzaWdWYWwsCisJCQkJCQkgICZzaWdWYWxMZW4sCisJCQkJCQkgICh1bnNpZ25lZCBjaGFyICopIGNsZWFuZWRCYXNlNjRTaWduYXR1cmUsCisJCQkJCQkgIGNsZWFuZWRCYXNlNjRTaWduYXR1cmVMZW4pOworCisJaWYgKHJjIDwgMCkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6UlNBRXJyb3IsCisJCQkiT3BlblNTTDpSU0EgLSBFcnJvciBkdXJpbmcgQmFzZTY0IERlY29kZSIpOworCX0KKwlpbnQgdCA9IDA7CisKKwlFVlBfRGVjb2RlRmluYWwoJm1fZGN0eCwgJnNpZ1ZhbFtzaWdWYWxMZW5dLCAmdCk7CisKKwlzaWdWYWxMZW4gKz0gdDsKKworCS8vIE5vdyBkZWNyeXB0CisKKwl1bnNpZ25lZCBjaGFyICogZGVjcnlwdEJ1ZjsKKworCS8vIERlY3J5cHQgd2lsbCBhbHdheXMgYmUgbG9uZ2VyIHRoYW4gKFJTQV9sZW4oa2V5KSAtIDExKQorCWRlY3J5cHRCdWYgPSBuZXcgdW5zaWduZWQgY2hhciBbUlNBX3NpemUobXBfcnNhS2V5KV07CisJQXJyYXlKYW5pdG9yPHVuc2lnbmVkIGNoYXI+IGpfZGVjcnlwdEJ1ZihkZWNyeXB0QnVmKTsKKworCS8vIE5vdGUgYXQgdGhpcyB0aW1lIG9ubHkgc3VwcG9ydHMgUEtDUzEgcGFkZGluZworCS8vIEFzIHRoYXQgaXMgd2hhdCBpcyBkZWZpbmVkIGluIHRoZSBzdGFuZGFyZC4KKwkvLyBJZiB0aGlzIGV2ZXIgY2hhbmdlcyB3ZSB3aWxsIG5lZWQgdG8gcGFzcyBzb21lIHBhcmFtYXRlcnMKKwkvLyBpbnRvIHRoaXMgZnVuY3Rpb24gdG8gYWxsb3cgaXQgdG8gZGV0ZXJtaW5lIHdoYXQgdGhlCisJLy8gcGFkZGluZyBzaG91bGQgYmUgYW5kIHdoYXQgdGhlIG1lc3NhZ2UgZGlnZXN0IE9JRCBzaG91bGQKKwkvLyBiZS4KKworCWludCBkZWNyeXB0U2l6ZSA9IFJTQV9wdWJsaWNfZGVjcnlwdChzaWdWYWxMZW4sCisJCQkJCQkJCQkJCSBzaWdWYWwsCisJCQkJCQkJCQkJCSBkZWNyeXB0QnVmLAorCQkJCQkJCQkJCQkgbXBfcnNhS2V5LAorCQkJCQkJCQkJCQkgUlNBX1BLQ1MxX1BBRERJTkcpOworCisJaWYgKGRlY3J5cHRTaXplIDwgMCkgeworCisvKgkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCSJPcGVuU1NMOlJTQTo6dmVyaWZ5KCkgLSBFcnJvciBkZWNyeXB0aW5nIHNpZ25hdHVyZSIpOyAqLworCQkvLyBSZWFsbHkgLSB0aGlzIGlzIGEgZmFpbGVkIHNpZ25hdHVyZSBjaGVjaywgbm90IGFuIGV4Y2VwdGlvbiEKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qIENoZWNrIHRoZSBPSUQgKi8KKwlpbnQgb2lkTGVuID0gMDsKKwl1bnNpZ25lZCBjaGFyICogb2lkID0gZ2V0UlNBU2lnT0lEKGhtLCBvaWRMZW4pOworCisJaWYgKG9pZCA9PSBOVUxMKSB7CisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6UlNBRXJyb3IsCisJCQkiT3BlblNTTDpSU0E6OnZlcmlmeSgpIC0gVW5zdXBwb3J0ZWQgSEFTSCBhbGdvcml0aG0gZm9yIFJTQSIpOworCX0KKworCWlmIChkZWNyeXB0U2l6ZSAhPSAoaW50KSAob2lkTGVuICsgaGFzaExlbikgfHwgaGFzaExlbiAhPSBvaWRbb2lkTGVuLTFdKSB7CisKKwkJcmV0dXJuIGZhbHNlOworCisJfQorCisJZm9yICh0ID0gMDsgdCA8IG9pZExlbjsgKyt0KSB7CisKKwkJaWYgKG9pZFt0XSAhPSBkZWNyeXB0QnVmW3RdKSB7CisKKwkJCXJldHVybiBmYWxzZTsKKworCQl9CisKKwl9CisKKwlmb3IgKDt0IDwgZGVjcnlwdFNpemU7ICsrdCkgeworCisJCWlmIChoYXNoQnVmW3Qtb2lkTGVuXSAhPSBkZWNyeXB0QnVmW3RdKSB7CisKKwkJCXJldHVybiBmYWxzZTsKKworCQl9CisKKwl9CisKKwkvLyBBbGwgT0sKKwlyZXR1cm4gdHJ1ZTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFNpZ24gYW5kIGVuY29kZSByZXN1bHQgYXMgYSBCYXNlNjQgc3RyaW5nCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK3Vuc2lnbmVkIGludCBPcGVuU1NMQ3J5cHRvS2V5UlNBOjpzaWduU0hBMVBLQ1MxQmFzZTY0U2lnbmF0dXJlKHVuc2lnbmVkIGNoYXIgKiBoYXNoQnVmLAorCQl1bnNpZ25lZCBpbnQgaGFzaExlbiwKKwkJY2hhciAqIGJhc2U2NFNpZ25hdHVyZUJ1ZiwKKwkJdW5zaWduZWQgaW50IGJhc2U2NFNpZ25hdHVyZUJ1ZkxlbiwKKwkJaGFzaE1ldGhvZCBobSkgeworCisJLy8gU2lnbiBhIHByZS1jYWxjdWxhdGVkIGhhc2ggdXNpbmcgdGhpcyBrZXkKKworCWlmIChtcF9yc2FLZXkgPT0gTlVMTCkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6UlNBRXJyb3IsCisJCQkiT3BlblNTTDpSU0EgLSBBdHRlbXB0IHRvIHNpZ24gZGF0YSB3aXRoIGVtcHR5IGtleSIpOworCX0KKworCS8vIEJ1aWxkIHRoZSBidWZmZXIgdG8gYmUgZW5jcnlwdGVkIGJ5IHByZXBlbmRpbmcgdGhlIFNIQTEgT0lEIHRvIHRoZSBoYXNoCisKKwl1bnNpZ25lZCBjaGFyICogZW5jcnlwdEJ1ZjsKKwl1bnNpZ25lZCBjaGFyICogcHJlRW5jcnlwdEJ1ZjsKKwl1bnNpZ25lZCBjaGFyICogb2lkOworCWludCBvaWRMZW47CisJaW50IGVuY3J5cHRMZW47CisJaW50IHByZUVuY3J5cHRMZW47CisKKwlvaWQgPSBnZXRSU0FTaWdPSUQoaG0sIG9pZExlbik7CisKKwlpZiAob2lkID09IE5VTEwpIHsKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCSJPcGVuU1NMOlJTQTo6c2lnbigpIC0gVW5zdXBwb3J0ZWQgSEFTSCBhbGdvcml0aG0gZm9yIFJTQSIpOworCX0KKworCWlmIChoYXNoTGVuICE9IG9pZFtvaWRMZW4tMV0pIHsKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCSJPcGVuU1NMOlJTQTo6c2lnbigpIC0gaGFzaExlbiBpbmNvcnJlY3QgZm9yIGhhc2ggdHlwZSIpOworCX0KKworCXByZUVuY3J5cHRMZW4gPSBoYXNoTGVuICsgb2lkTGVuOworCXByZUVuY3J5cHRCdWYgPSBuZXcgdW5zaWduZWQgY2hhcltwcmVFbmNyeXB0TGVuXTsKKwllbmNyeXB0QnVmID0gbmV3IHVuc2lnbmVkIGNoYXJbUlNBX3NpemUobXBfcnNhS2V5KV07CisKKwltZW1jcHkocHJlRW5jcnlwdEJ1Ziwgb2lkLCBvaWRMZW4pOworCW1lbWNweSgmcHJlRW5jcnlwdEJ1ZltvaWRMZW5dLCBoYXNoQnVmLCBoYXNoTGVuKTsKKworCS8vIE5vdyBlbmNyeXB0CisKKwllbmNyeXB0TGVuID0gUlNBX3ByaXZhdGVfZW5jcnlwdChwcmVFbmNyeXB0TGVuLAorCQkJCQkJCQkgICAgIHByZUVuY3J5cHRCdWYsCisJCQkJCQkJCQkgZW5jcnlwdEJ1ZiwKKwkJCQkJCQkJCSBtcF9yc2FLZXksCisJCQkJCQkJCQkgUlNBX1BLQ1MxX1BBRERJTkcpOworCisJZGVsZXRlW10gcHJlRW5jcnlwdEJ1ZjsKKworCWlmIChlbmNyeXB0TGVuIDwgMCkgeworCisJCWRlbGV0ZVtdIGVuY3J5cHRCdWY7CisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6UlNBRXJyb3IsCisJCQkiT3BlblNTTDpSU0E6OnNpZ24oKSAtIEVycm9yIGVuY3J5cHRpbmcgaGFzaCIpOworCX0KKworCS8vIE5vdyBjb252ZXJ0IHRvIEJhc2UgNjQKKworCUJJTyAqIGI2NCA9IEJJT19uZXcoQklPX2ZfYmFzZTY0KCkpOworCUJJTyAqIGJtZW0gPSBCSU9fbmV3KEJJT19zX21lbSgpKTsKKworCUJJT19zZXRfbWVtX2VvZl9yZXR1cm4oYm1lbSwgMCk7CisJYjY0ID0gQklPX3B1c2goYjY0LCBibWVtKTsKKworCS8vIFRyYW5zbGF0ZSBzaWduYXR1cmUgdG8gQmFzZTY0CisKKwlCSU9fd3JpdGUoYjY0LCBlbmNyeXB0QnVmLCBlbmNyeXB0TGVuKTsKKwlCSU9fZmx1c2goYjY0KTsKKworCXVuc2lnbmVkIGludCBzaWdWYWxMZW4gPSBCSU9fcmVhZChibWVtLCBiYXNlNjRTaWduYXR1cmVCdWYsIGJhc2U2NFNpZ25hdHVyZUJ1Zkxlbik7CisKKwlCSU9fZnJlZV9hbGwoYjY0KTsKKworCWRlbGV0ZVtdIGVuY3J5cHRCdWY7CisKKwlpZiAoc2lnVmFsTGVuIDw9IDApIHsKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OkRTQUVycm9yLAorCQkJIk9wZW5TU0w6UlNBIC0gRXJyb3IgYmFzZTY0IGVuY29kaW5nIHNpZ25hdHVyZSIpOworCX0KKworCXJldHVybiBzaWdWYWxMZW47Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgZGVjcnlwdCBhIGJ1ZmZlcgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordW5zaWduZWQgaW50IE9wZW5TU0xDcnlwdG9LZXlSU0E6OnByaXZhdGVEZWNyeXB0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBpbkJ1ZiwKKwkJCQkJCQkJIHVuc2lnbmVkIGNoYXIgKiBwbGFpbkJ1ZiwKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBpbkxlbmd0aCwKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBtYXhPdXRMZW5ndGgsCisJCQkJCQkJCSBQYWRkaW5nVHlwZSBwYWRkaW5nLAorCQkJCQkJCQkgaGFzaE1ldGhvZCBobSkgeworCisJLy8gUGVyZm9ybSBhIGRlY3J5cHQKKwlpZiAobXBfcnNhS2V5ID09IE5VTEwpIHsKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlJTQUVycm9yLAorCQkJIk9wZW5TU0w6UlNBIC0gQXR0ZW1wdCB0byBkZWNyeXB0IGRhdGEgd2l0aCBlbXB0eSBrZXkiKTsKKwl9CisKKyNpZiAwCisKKwkvKiBub3JtYWxseSBjb21tZW50ZWQgb3V0IGNvZGUgdG8gZGV0ZXJtaW5lIGVuZGlhbiBwcm9ibGVtcyAqLworCXVuc2lnbmVkIGludCBpOworCXVuc2lnbmVkIGNoYXIgZVsyMDQ4XTsKKwl1bnNpZ25lZCBjaGFyICogaW5CdWYxID0gKHVuc2lnbmVkIGNoYXIgKikgaW5CdWY7CisJaWYgKGluTGVuZ3RoIDwgMjA0OCkgeworCQltZW1jcHkoZSwgaW5CdWYsIGluTGVuZ3RoKTsKKwkJZm9yIChpID0gMDsgaSA8IGluTGVuZ3RoOysraSkgeworCQkJaW5CdWYxW2ldID0gZVtpbkxlbmd0aCAtIDEgLSBpXTsKKwkJfQorCX0KKworI2VuZGlmCisKKwlpbnQgZGVjcnlwdFNpemU7CisKKwlzd2l0Y2ggKHBhZGRpbmcpIHsKKworCWNhc2UgWFNFQ0NyeXB0b0tleVJTQTo6UEFEX1BLQ1NfMV81IDoKKworCQlkZWNyeXB0U2l6ZSA9IFJTQV9wcml2YXRlX2RlY3J5cHQoaW5MZW5ndGgsCisjaWYgZGVmaW5lZChYU0VDX09QRU5TU0xfQ09OU1RfQlVGRkVSUykKKwkJCQkJCQlpbkJ1ZiwKKyNlbHNlCisJCQkJCQkgICAgKHVuc2lnbmVkIGNoYXIgKikgaW5CdWYsCisjZW5kaWYKKwkJCQkJCQlwbGFpbkJ1ZiwKKwkJCQkJCQltcF9yc2FLZXksCisJCQkJCQkJUlNBX1BLQ1MxX1BBRERJTkcpOworCisJCWlmIChkZWNyeXB0U2l6ZSA8IDApIHsKKworCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCQkiT3BlblNTTDpSU0EgcHJpdmF0ZUtleURlY3J5cHQgLSBFcnJvciBEZWNyeXB0aW5nIFBLQ1MxXzUgcGFkZGVkIFJTQSBlbmNyeXB0Iik7CisKKwkJfQorCisJCWJyZWFrOworCisJY2FzZSBYU0VDQ3J5cHRvS2V5UlNBOjpQQURfT0FFUF9NR0ZQMSA6CisJCXsKKworCQkJdW5zaWduZWQgY2hhciAqIHRCdWY7CisJCQlpbnQgbnVtID0gUlNBX3NpemUobXBfcnNhS2V5KTsKKwkJCVhTRUNuZXcodEJ1ZiwgdW5zaWduZWQgY2hhcltpbkxlbmd0aF0pOworCQkJQXJyYXlKYW5pdG9yPHVuc2lnbmVkIGNoYXI+IGpfdEJ1Zih0QnVmKTsKKworCQkJZGVjcnlwdFNpemUgPSBSU0FfcHJpdmF0ZV9kZWNyeXB0KGluTGVuZ3RoLAorI2lmIGRlZmluZWQoWFNFQ19PUEVOU1NMX0NPTlNUX0JVRkZFUlMpCisJCQkJCQkJICAgIGluQnVmLAorI2Vsc2UKKwkJCQkJCSAgICAgICAgKHVuc2lnbmVkIGNoYXIgKikgaW5CdWYsCisjZW5kaWYKKwkJCQkJCQkJdEJ1ZiwKKwkJCQkJCQkJbXBfcnNhS2V5LAorCQkJCQkJCQlSU0FfTk9fUEFERElORyk7CisJCQlpZiAoZGVjcnlwdFNpemUgPCAwKSB7CisKKwkJCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlJTQUVycm9yLAorCQkJCQkiT3BlblNTTDpSU0EgcHJpdmF0ZUtleURlY3J5cHQgLSBFcnJvciBkb2luZyByYXcgZGVjcnlwdCBvZiBSU0EgZW5jcnlwdGVkIGRhdGEiKTsKKworCQkJfQorCisJCQkvLyBDbGVhciBvdXQgdGhlICIwInMgYXQgdGhlIGZyb250CisJCQlpbnQgaTsKKwkJCWZvciAoaSA9IDA7IGkgPCBudW0gJiYgdEJ1ZltpXSA9PSAwOyArK2kpCisJCQkJLS1kZWNyeXB0U2l6ZTsKKworCQkJZGVjcnlwdFNpemUgPSBSU0FfcGFkZGluZ19jaGVja19QS0NTMV9PQUVQKHBsYWluQnVmLAorCQkJCQkJCQkJCQkJCSAgIG1heE91dExlbmd0aCwKKwkJCQkJCQkJCQkJCQkgICAmdEJ1ZltpXSwKKwkJCQkJCQkJCQkJCQkgICBkZWNyeXB0U2l6ZSwKKwkJCQkJCQkJCQkJCQkgICBudW0sCisJCQkJCQkJCQkJCQkJICAgbXBfb2FlcFBhcmFtcywKKwkJCQkJCQkJCQkJCQkgICBtX29hZXBQYXJhbXNMZW4pOworCisJCQlpZiAoZGVjcnlwdFNpemUgPCAwKSB7CisKKwkJCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlJTQUVycm9yLAorCQkJCQkiT3BlblNTTDpSU0EgcHJpdmF0ZUtleURlY3J5cHQgLSBFcnJvciByZW1vdmluZyBPQUVQYWRkaW5nIik7CisKKwkJCX0KKworCQl9CisJCWJyZWFrOworCisJZGVmYXVsdCA6CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCSJPcGVuU1NMOlJTQSAtIFVua25vd24gcGFkZGluZyBtZXRob2QiKTsKKworCX0KKworI2lmIDAKKworCS8qIG5vcm1hbGx5IGNvbW1lbnRlZCBvdXQgY29kZSB0byBkZXRlcm1pbmUgZW5kaWFuIHByb2JsZW1zICovCisJaW50IGk7CisJdW5zaWduZWQgY2hhciB0WzUxMl07CisJaWYgKGRlY3J5cHRTaXplIDwgNTEyKSB7CisJCW1lbWNweSh0LCBwbGFpbkJ1ZiwgZGVjcnlwdFNpemUpOworCQlmb3IgKGkgPSAwOyBpIDwgZGVjcnlwdFNpemU7KytpKSB7CisJCQlwbGFpbkJ1ZltpXSA9IHRbZGVjcnlwdFNpemUgLSAxIC0gaV07CisJCX0KKwl9CisKKyNlbmRpZgorCisJcmV0dXJuIGRlY3J5cHRTaXplOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgZW5jcnlwdCBhIGJ1ZmZlcgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordW5zaWduZWQgaW50IE9wZW5TU0xDcnlwdG9LZXlSU0E6OnB1YmxpY0VuY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqIGluQnVmLAorCQkJCQkJCQkgdW5zaWduZWQgY2hhciAqIGNpcGhlckJ1ZiwKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBpbkxlbmd0aCwKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBtYXhPdXRMZW5ndGgsCisJCQkJCQkJCSBQYWRkaW5nVHlwZSBwYWRkaW5nLAorCQkJCQkJCQkgaGFzaE1ldGhvZCBobSkgeworCisJLy8gUGVyZm9ybSBhbiBlbmNyeXB0CisJaWYgKG1wX3JzYUtleSA9PSBOVUxMKSB7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCSJPcGVuU1NMOlJTQSAtIEF0dGVtcHQgdG8gZW5jcnlwdCBkYXRhIHdpdGggZW1wdHkga2V5Iik7CisJfQorCisJaW50IGVuY3J5cHRTaXplOworCisJc3dpdGNoIChwYWRkaW5nKSB7CisKKwljYXNlIFhTRUNDcnlwdG9LZXlSU0E6OlBBRF9QS0NTXzFfNSA6CisKKwkJZW5jcnlwdFNpemUgPSBSU0FfcHVibGljX2VuY3J5cHQoaW5MZW5ndGgsCisjaWYgZGVmaW5lZChYU0VDX09QRU5TU0xfQ09OU1RfQlVGRkVSUykKKyAgCQkJCQkgICAgICAgIGluQnVmLAorI2Vsc2UKKwkJCQkJCSAgICAodW5zaWduZWQgY2hhciAqKSBpbkJ1ZiwKKyNlbmRpZgorCQkJCQkJCWNpcGhlckJ1ZiwKKwkJCQkJCQltcF9yc2FLZXksCisJCQkJCQkJUlNBX1BLQ1MxX1BBRERJTkcpOworCisJCWlmIChlbmNyeXB0U2l6ZSA8IDApIHsKKworCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCQkiT3BlblNTTDpSU0EgcHVibGljS2V5RW5jcnlwdCAtIEVycm9yIHBlcmZvcm1pbmcgUEtDUzFfNSBwYWRkZWQgUlNBIGVuY3J5cHQiKTsKKworCQl9CisKKwkJYnJlYWs7CisKKwljYXNlIFhTRUNDcnlwdG9LZXlSU0E6OlBBRF9PQUVQX01HRlAxIDoKKwkJeworCisJCQl1bnNpZ25lZCBjaGFyICogdEJ1ZjsKKwkJCXVuc2lnbmVkIGludCBudW0gPSBSU0Ffc2l6ZShtcF9yc2FLZXkpOworCQkJaWYgKG1heE91dExlbmd0aCA8IG51bSkgeworCQkJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6UlNBRXJyb3IsCisJCQkJCSJPcGVuU1NMOlJTQSBwdWJsaWNLZXlFbmNyeXB0IC0gTm90IGVub3VnaCBzcGFjZSBpbiBjaXBoZXJCdWYiKTsKKwkJCX0KKworCQkJWFNFQ25ldyh0QnVmLCB1bnNpZ25lZCBjaGFyW251bV0pOworCQkJQXJyYXlKYW5pdG9yPHVuc2lnbmVkIGNoYXI+IGpfdEJ1Zih0QnVmKTsKKworCQkJLy8gRmlyc3QgYWRkIHRoZSBwYWRkaW5nCisKKwkJCWVuY3J5cHRTaXplID0gUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX09BRVAodEJ1ZiwKKwkJCQkJCQkJCQkJCQkgbnVtLAorI2lmIGRlZmluZWQoWFNFQ19PUEVOU1NMX0NPTlNUX0JVRkZFUlMpCisgIAkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5CdWYsCisjZWxzZQorCQkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKSBpbkJ1ZiwKKyNlbmRpZgorCQkJCQkJCQkJCQkJCSBpbkxlbmd0aCwKKwkJCQkJCQkJCQkJCQkgbXBfb2FlcFBhcmFtcywKKwkJCQkJCQkJCQkJCQkgbV9vYWVwUGFyYW1zTGVuKTsKKworCQkJaWYgKGVuY3J5cHRTaXplIDw9IDApIHsKKworCQkJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6UlNBRXJyb3IsCisJCQkJCSJPcGVuU1NMOlJTQSBwdWJsaWNLZXlFbmNyeXB0IC0gRXJyb3IgYWRkaW5nIE9BRVBhZGRpbmciKTsKKworCQkJfQorCisJCQllbmNyeXB0U2l6ZSA9IFJTQV9wdWJsaWNfZW5jcnlwdChudW0sCisJCQkJCQkJCXRCdWYsCisJCQkJCQkJCWNpcGhlckJ1ZiwKKwkJCQkJCQkJbXBfcnNhS2V5LAorCQkJCQkJCQlSU0FfTk9fUEFERElORyk7CisKKworCQkJaWYgKGVuY3J5cHRTaXplIDwgMCkgeworCisJCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCQkJIk9wZW5TU0w6UlNBIHB1YmxpY0tleUVuY3J5cHQgLSBFcnJvciBlbmNyeXB0aW5nIHBhZGRlZCBkYXRhIik7CisKKwkJCX0KKwkJfQorCQlicmVhazsKKworCWRlZmF1bHQgOgorCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6UlNBRXJyb3IsCisJCQkiT3BlblNTTDpSU0EgLSBVbmtub3duIHBhZGRpbmcgbWV0aG9kIik7CisKKwl9CisKKworCXJldHVybiBlbmNyeXB0U2l6ZTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFNpemUgaW4gYnl0ZXMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3Vuc2lnbmVkIGludCBPcGVuU1NMQ3J5cHRvS2V5UlNBOjpnZXRMZW5ndGgodm9pZCkgY29uc3QgeworCisJaWYgKG1wX3JzYUtleSAhPSBOVUxMKQorCQlyZXR1cm4gUlNBX3NpemUobXBfcnNhS2V5KTsKKworCXJldHVybiAwOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ2xvbmUgdGhpcyBrZXkKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hTRUNDcnlwdG9LZXkgKiBPcGVuU1NMQ3J5cHRvS2V5UlNBOjpjbG9uZSgpIGNvbnN0IHsKKworCU9wZW5TU0xDcnlwdG9LZXlSU0EgKiByZXQ7CisKKwlYU0VDbmV3KHJldCwgT3BlblNTTENyeXB0b0tleVJTQSk7CisKKwlyZXQtPm1wX3JzYUtleSA9IFJTQV9uZXcoKTsKKworCWlmIChtcF9vYWVwUGFyYW1zICE9IE5VTEwpIHsKKwkJWFNFQ25ldyhyZXQtPm1wX29hZXBQYXJhbXMsIHVuc2lnbmVkIGNoYXJbbV9vYWVwUGFyYW1zTGVuXSk7CisJCW1lbWNweShyZXQtPm1wX29hZXBQYXJhbXMsIG1wX29hZXBQYXJhbXMsIG1fb2FlcFBhcmFtc0xlbik7CisJCXJldC0+bV9vYWVwUGFyYW1zTGVuID0gbV9vYWVwUGFyYW1zTGVuOworCX0KKwllbHNlIHsKKwkJcmV0LT5tcF9vYWVwUGFyYW1zID0gTlVMTDsKKwkJcmV0LT5tX29hZXBQYXJhbXNMZW4gPSAwOworCX0KKworCS8vIER1cGxpY2F0ZSBwYXJhbWV0ZXJzCisKKwlpZiAobXBfcnNhS2V5LT5uKQorCQlyZXQtPm1wX3JzYUtleS0+biA9IEJOX2R1cChtcF9yc2FLZXktPm4pOworCisJaWYgKG1wX3JzYUtleS0+ZSkKKwkJcmV0LT5tcF9yc2FLZXktPmUgPSBCTl9kdXAobXBfcnNhS2V5LT5lKTsKKworCWlmIChtcF9yc2FLZXktPmQpCisJCXJldC0+bXBfcnNhS2V5LT5kID0gQk5fZHVwKG1wX3JzYUtleS0+ZCk7CisKKwlpZiAobXBfcnNhS2V5LT5wKQorCQlyZXQtPm1wX3JzYUtleS0+cCA9IEJOX2R1cChtcF9yc2FLZXktPnApOworCisJaWYgKG1wX3JzYUtleS0+cSkKKwkJcmV0LT5tcF9yc2FLZXktPnEgPSBCTl9kdXAobXBfcnNhS2V5LT5xKTsKKworCWlmIChtcF9yc2FLZXktPmRtcDEpCisJCXJldC0+bXBfcnNhS2V5LT5kbXAxID0gQk5fZHVwKG1wX3JzYUtleS0+ZG1wMSk7CisKKwlpZiAobXBfcnNhS2V5LT5kbXExKQorCQlyZXQtPm1wX3JzYUtleS0+ZG1xMSA9IEJOX2R1cChtcF9yc2FLZXktPmRtcTEpOworCisJaWYgKG1wX3JzYUtleS0+aXFtcCkKKwkJcmV0LT5tcF9yc2FLZXktPmlxbXAgPSBCTl9kdXAobXBfcnNhS2V5LT5pcW1wKTsKKworCXJldHVybiByZXQ7CisKK30KKworI2VuZGlmIC8qIEhBVkVfT1BFTlNTTCAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0tleVJTQS5ocHAgYi9jL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvS2V5UlNBLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWJkNmUwCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0tleVJTQS5ocHAKQEAgLTAsMCArMSwyODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDEwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNDcnlwdG9LZXlSU0EgOj0gUlNBIEtleXMKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgT1BFTlNTTENSWVBUT0tFWVJTQV9JTkNMVURFCisjZGVmaW5lIE9QRU5TU0xDUllQVE9LRVlSU0FfSU5DTFVERQorCisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b0tleVJTQS5ocHA+CisKKyNpZiBkZWZpbmVkIChIQVZFX09QRU5TU0wpCisjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KKworLyoqCisgKiBcaW5ncm91cCBvcGVuc3NsY3J5cHRvCisgKi8KKworLyoqCisgKiBcYnJpZWYgSW1wbGVtZW50YXRpb24gb2YgdGhlIGludGVyZmFjZSBjbGFzcyBmb3IgUlNBIGtleXMuCisgKgorICogVGhlIGxpYnJhcnkgdXNlcyBjbGFzc2VzIGRlcml2ZWQgZnJvbSB0aGlzIHRvIHByb2Nlc3MgUlNBIGtleXMuCisgKi8KKworY2xhc3MgRFNJR19FWFBPUlQgT3BlblNTTENyeXB0b0tleVJTQSA6IHB1YmxpYyBYU0VDQ3J5cHRvS2V5UlNBIHsKKworcHVibGljIDoKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCQorCU9wZW5TU0xDcnlwdG9LZXlSU0EoKTsKKwl2aXJ0dWFsIH5PcGVuU1NMQ3J5cHRvS2V5UlNBKCk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgS2V5IEludGVyZmFjZSBtZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFJldHVybiB0aGUgdHlwZSBvZiB0aGlzIGtleS4KKwkgKgorCSAqIEZvciBSU0Ega2V5cywgdGhpcyBhbGxvd3MgcGVvcGxlIHRvIGRldGVybWluZSB3aGV0aGVyIHRoaXMgaXMgYSAKKwkgKiBwdWJsaWMga2V5LCBwcml2YXRlIGtleSBvciBhIGtleSBwYWlyCisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXk6OktleVR5cGUgZ2V0S2V5VHlwZSgpIGNvbnN0OworCisJLyoqCisJICogXGJyaWVmIFJldHVybiB0aGUgT3BlblNTTCBpZGVudGlmaWVyIHN0cmluZworCSAqLworCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldFByb3ZpZGVyTmFtZSgpIGNvbnN0IHtyZXR1cm4gRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyUFJPVk9wZW5TU0w7fQorCisJLyoqCisJICogXGJyaWVmIFJlcGxpY2F0ZSBrZXkKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0tleSAqIGNsb25lKCkgY29uc3Q7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgTWFuZGF0b3J5IFJTQSBpbnRlcmZhY2UgbWV0aG9kcyAKKwkgKgorCSAqIFRoZXNlIG1ldGhvZHMgYXJlIHJlcXVpcmVkIGJ5IHRoZSBsaWJyYXJ5LgorCSAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBTZXQgdGhlIE9BRVBwYXJhbXMgc3RyaW5nCisJICoKKwkgKiBCeSBkZWZhdWx0LCB0aGUgbGlicmFyeSBleHBlY3RzIGNyeXB0byBpbXBsZW1lbnRhdGlvbnMgdG8gcGVyZm9ybQorCSAqIE9BRVAgcGFkZGluZyB3aXRoIG5vIHBhcmFtcy4gIFRoaXMgY2FsbCBhbGxvd3MgdGhlIGxpYnJhcnkgKG9yIHVzZXIpCisJICogdG8gc2V0IGEgcGFyYW1zIHZhbHVlIHByaW9yIHRvIGFuIGVuY3J5cHQvZGVjcnlwdCBvcGVyYXRpb24uCisJICoKKwkgKiBAcGFyYW0gcGFyYW1zIGJ1ZmZlciBjb250YWluaW5nIHRoZSBwYXJhbXMgZGF0YS4gIFBhc3MgaW4gTlVMTCB0byBjbGVhciBhbnkKKwkgKiBvbGQgcGFyYW10ZXJzLgorCSAqIEBwYXJhbSBwYXJhbXNMZW4gbnVtYmVyIG9mIGJ5dGVzIGluIGJ1ZmZlciB0byB1c2UuICBQYXNzIGluIDAgdG8gY2xlYXIgYW55CisJICogb2xkIHBhcmFtZXRlcnMuCisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0T0FFUHBhcmFtcyh1bnNpZ25lZCBjaGFyICogcGFyYW1zLCB1bnNpZ25lZCBpbnQgcGFyYW1zTGVuKTsKKworCS8qKgorCSAqIFxicmllZiBHZXQgT0FFUHBhcmFtcyBMZW5ndGgKKwkgKgorCSAqIEByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgb2YgdGhlIE9BRVBwYXJhbXMgYnVmZmVyIChhc3N1bWluZyBpdCBoYXMgYmVlbiBzZXQpCisJICovCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRPQUVQcGFyYW1zTGVuKHZvaWQpIGNvbnN0OworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgT0FFUHBhcmFtcworCSAqCisJICogQHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSAoY3J5cHRvIG9iamVjdCBvd25lZCkgYnVmZmVyIGhvbGRpbmcgdGhlIE9BRVBwYXJhbXMKKwkgKiBvciBOVUxMIGlmIG5vIHBhcmFtcyBhcmUgaGVsZAorCSAqLworCisJdmlydHVhbCBjb25zdCB1bnNpZ25lZCBjaGFyICogZ2V0T0FFUHBhcmFtcyh2b2lkKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBWZXJpZnkgYSBTSEExIFBLQ1MxIGVuY29kZWQgc2lnbmF0dXJlCisJICoKKwkgKiBUaGUgbGlicmFyeSB3aWxsIGNhbGwgdGhpcyBmdW5jdGlvbiB0byB2YWxpZGF0ZSBhbiBSU0Egc2lnbmF0dXJlCisJICogVGhlIHN0YW5kYXJkIGJ5IGRlZmF1bHQgdXNlcyBTSEExIGluIGEgUEtDUzEgZW5jb2RpbmcuCisJICoKKwkgKiBAcGFyYW0gaGFzaEJ1ZiBCdWZmZXIgY29udGFpbmluZyB0aGUgcHJlLWNhbGN1bGF0ZWQgKGJpbmFyeSkgZGlnZXN0CisJICogQHBhcmFtIGhhc2hMZW4gTGVuZ3RoIG9mIHRoZSBkYXRhIGluIHRoZSBkaWdlc3QgYnVmZmVyCisJICogQHBhcmFtIGJhc2U2NFNpZ25hdHVyZSBCdWZmZXIgY29udGFpbmluZyB0aGUgQmFzZTY0IGVuY29kZWQgc2lnbmF0dXJlCisJICogQHBhcmFtIHNpZ0xlbiBMZW5ndGggb2YgdGhlIGRhdGEgaW4gdGhlIHNpZ25hdHVyZSBidWZmZXIKKwkgKiBAcGFyYW0gaG0gVGhlIGhhc2ggbWV0aG9kIHRoYXQgd2FzIHVzZWQgdG8gY3JlYXRlIHRoZSBoYXNoIHRoYXQgaXMgYmVpbmcKKwkgKiBwYXNzZWQgaW4KKwkgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBzaWduYXR1cmUgd2FzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UKKwkgKi8KKworCXZpcnR1YWwgYm9vbCB2ZXJpZnlTSEExUEtDUzFCYXNlNjRTaWduYXR1cmUoY29uc3QgdW5zaWduZWQgY2hhciAqIGhhc2hCdWYsIAorCQkJCQkJCQkgdW5zaWduZWQgaW50IGhhc2hMZW4sCisJCQkJCQkJCSBjb25zdCBjaGFyICogYmFzZTY0U2lnbmF0dXJlLAorCQkJCQkJCQkgdW5zaWduZWQgaW50IHNpZ0xlbiwKKwkJCQkJCQkJIGhhc2hNZXRob2QgaG0pOworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIHNpZ25hdHVyZQorCSAqCisJICogVGhlIGxpYnJhcnkgd2lsbCBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gY3JlYXRlIGEgc2lnbmF0dXJlIGZyb20KKwkgKiBhIHByZS1jYWxjdWxhdGVkIGRpZ2VzdC4gIFRoZSBvdXRwdXQgc2lnbmF0dXJlIHdpbGwKKwkgKiBiZSBCYXNlNjQgZW5jb2RlZCBzdWNoIHRoYXQgaXQgY2FuIGJlIHBsYWNlZCBkaXJlY3RseSBpbnRvIHRoZQorCSAqIFhNTCBkb2N1bWVudAorCSAqCisJICogQHBhcmFtIGhhc2hCdWYgQnVmZmVyIGNvbnRhaW5pbmcgdGhlIHByZS1jYWxjdWxhdGVkIChiaW5hcnkpIGRpZ2VzdAorCSAqIEBwYXJhbSBoYXNoTGVuIE51bWJlciBvZiBieXRlcyBvZiBoYXNoIGluIHRoZSBoYXNoQnVmCisJICogQHBhcmFtIGJhc2U2NFNpZ25hdHVyZUJ1ZiBCdWZmZXIgdG8gcGxhY2UgdGhlIGJhc2U2NCBlbmNvZGVkIHJlc3VsdAorCSAqIGluLgorCSAqIEBwYXJhbSBiYXNlNjRTaWduYXR1cmVCdWZMZW4gSW1wbGVtZW50YXRpb25zIG5lZWQgdG8gZW5zdXJlIHRoZXkgZG8KKwkgKiBub3Qgd3JpdGUgbW9yZSBieXRlcyB0aGFuIHRoaXMgaW50byB0aGUgYnVmZmVyCisJICogQHBhcmFtIGhtIEhhc2ggTWV0aG9kIHVzZWQgaW4gb3JkZXIgdG8gZW1iZWQgY29ycmVjdCBPSUQgZm9yIHNpZworCSAqLworCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgc2lnblNIQTFQS0NTMUJhc2U2NFNpZ25hdHVyZSh1bnNpZ25lZCBjaGFyICogaGFzaEJ1ZiwKKwkJdW5zaWduZWQgaW50IGhhc2hMZW4sCisJCWNoYXIgKiBiYXNlNjRTaWduYXR1cmVCdWYsCisJCXVuc2lnbmVkIGludCBiYXNlNjRTaWduYXR1cmVCdWZMZW4sCisJCWhhc2hNZXRob2QgaG0pOworCisJLyoqCisJICogXGJyaWVmIERlY3J5cHQgdXNpbmcgcHJpdmF0ZSBrZXkKKwkgKgorCSAqIFRoZSBsaWJyYXJ5IHdpbGwgY2FsbCB0aGlzIGZ1bmN0aW9uIHRvIGRlY3J5cHQgYSBwaWVjZSBvZiBjaXBoZXIKKwkgKiB0ZXh0IHVzaW5nIHRoZSBwcml2YXRlIGNvbXBvbmVudCBvZiB0aGlzIGtleS4KKwkgKgorCSAqIEBwYXJhbSBpbkJ1ZiBjaXBoZXIgdGV4dCB0byBkZWNyeXB0CisJICogQHBhcmFtIHBsYWluQnVmIG91dHB1dCBidWZmZXIgZm9yIGRlY3J5cHRlZCBieXRlcworCSAqIEBwYXJhbSBpbkxlbmd0aCBieXRlcyBvZiBjaXBoZXIgdGV4dCB0byBkZWNyeXB0CisJICogQHBhcmFtIG1heE91dExlbmd0aCBzaXplIG9mIG91dHB1dEJ1ZmZlcgorCSAqIEBwYXJhbSBwYWRkaW5nIFR5cGUgb2YgcGFkZGluZyAoUEtDUyAxLjUgb3IgT0FFUCkKKwkgKiBAcGFyYW0gaG0gSGFzaCBNZXRob2QgZm9yIE9BRVAgZW5jcnlwdGlvbiAoT0FFUFBhcmFtcyBzaG91bGQgYmUKKwkgKiBzZXQgdXNpbmcgc2V0T0FFUHBhcmFtcygpCisJICovCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCBwcml2YXRlRGVjcnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICogaW5CdWYsCisJCQkJCQkJCSB1bnNpZ25lZCBjaGFyICogcGxhaW5CdWYsIAorCQkJCQkJCQkgdW5zaWduZWQgaW50IGluTGVuZ3RoLAorCQkJCQkJCQkgdW5zaWduZWQgaW50IG1heE91dExlbmd0aCwKKwkJCQkJCQkJIFBhZGRpbmdUeXBlIHBhZGRpbmcsCisJCQkJCQkJCSBoYXNoTWV0aG9kIGhtKTsKKworCisJLyoqCisJICogXGJyaWVmIEVuY3J5cHQgdXNpbmcgYSBwdWJsaWMga2V5CisJICoKKwkgKiBUaGUgbGlicmFyeSB3aWxsIGNhbGwgdGhpcyBmdW5jdGlvbiB0byBlbmNyeXB0IGEgcGxhaW4gdGV4dCBidWZmZXIKKwkgKiB1c2luZyB0aGUgcHVibGljIGNvbXBvbmVudCBvZiB0aGlzIGtleS4KKwkgKgorCSAqIEBwYXJhbSBpbkJ1ZiBwbGFpbiB0ZXh0IHRvIGRlY3J5cHQKKwkgKiBAcGFyYW0gY2lwaGVyQnVmIG91dHB1dCBidWZmZXIgZm9yIGRlY3J5cHRlZCBieXRlcworCSAqIEBwYXJhbSBpbkxlbmd0aCBieXRlcyBvZiBwbGFpbiB0ZXh0IHRvIGVuY3J5cHQKKwkgKiBAcGFyYW0gbWF4T3V0TGVuZ3RoIHNpemUgb2Ygb3V0cHV0QnVmZmVyCisJICogQHBhcmFtIHBhZGRpbmcgVHlwZSBvZiBwYWRkaW5nIChQS0NTIDEuNSBvciBPQUVQKQorCSAqIEBwYXJhbSBobSBIYXNoIE1ldGhvZCBmb3IgT0FFUCBlbmNyeXB0aW9uIChPQUVQUGFyYW1zIHNob3VsZCBiZQorCSAqIHNldCB1c2luZyBzZXRPQUVQcGFyYW1zKCkKKwkgKi8KKworCXZpcnR1YWwgdW5zaWduZWQgaW50IHB1YmxpY0VuY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqIGluQnVmLAorCQkJCQkJCQkgdW5zaWduZWQgY2hhciAqIGNpcGhlckJ1ZiwgCisJCQkJCQkJCSB1bnNpZ25lZCBpbnQgaW5MZW5ndGgsCisJCQkJCQkJCSB1bnNpZ25lZCBpbnQgbWF4T3V0TGVuZ3RoLAorCQkJCQkJCQkgUGFkZGluZ1R5cGUgcGFkZGluZywKKwkJCQkJCQkJIGhhc2hNZXRob2QgaG0pOworCisJLyoqCisJICogXGJyaWVmIE9idGFpbiB0aGUgbGVuZ3RoIG9mIGFuIFJTQSBrZXkKKwkgKgorCSAqIEByZXR1cm5zIFRoZSBsZW5ndGggb2YgdGhlIHJzYSBrZXkgKGluIGJ5dGVzKQorCSAqLworCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0TGVuZ3RoKHZvaWQpIGNvbnN0OworCisJLy9AfQorCisJLyoqIEBuYW1lIE9wdGlvbmFsIEludGVyZmFjZSBtZXRob2RzCisJICogCisJICogSGF2ZSBiZWVuIGltcGxlbWVudGVkIHRvIGFsbG93IGludGVyb3BlcmFiaWxpdHkgdGVzdGluZworCSAqLworCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIExvYWQgdGhlIG1vZHVsdXMKKwkgKgorCSAqIExvYWQgdGhlIG1vZHVsdXMgZnJvbSBhIEJhc2U2NCBlbmNvZGVkIHN0cmluZworCSAqCisJICogcGFyYW0gYjY0IEEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGVuY29kZWQgc3RyaW5nCisJICogcGFyYW0gbGVuIFRoZSBsZW5ndGggb2YgdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlcgorCSAqLworCisJdmlydHVhbCB2b2lkIGxvYWRQdWJsaWNNb2R1bHVzQmFzZTY0QmlnTnVtcyhjb25zdCBjaGFyICogYjY0LCB1bnNpZ25lZCBpbnQgbGVuKTsKKworCS8qKgorCSAqIFxicmllZiBMb2FkIHRoZSBleHBvbmVudAorCSAqCisJICogTG9hZCB0aGUgZXhwb25lbnQgZnJvbSBhIEJhc2U2NCBlbmNvZGVkIHN0cmluZworCSAqCisJICogcGFyYW0gYjY0IEEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGVuY29kZWQgc3RyaW5nCisJICogcGFyYW0gbGVuIFRoZSBsZW5ndGggb2YgdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlcgorCSAqLworCisJdmlydHVhbCB2b2lkIGxvYWRQdWJsaWNFeHBvbmVudEJhc2U2NEJpZ051bXMoY29uc3QgY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbik7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgT3BlblNTTCBzcGVjaWZpYyBtZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIENvbnN0cnVjdG9yIHRvIGNyZWF0ZSB0aGUgb2JqZWN0IGFyb3VuZCBhbiBleGlzdGluZyBPcGVuU1NMIFJTQQorCSAqIGtleQorCSAqCisJICogQHBhcmFtIGsgVGhlIGtleSB0byBjb3B5CisJICogQG5vdGUgVGhlIG9iamVjdCB0YWtlcyBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIGtleSwgYW5kIHdpbGwgbm90IGRlbGV0ZSBrIG9uCisJICogY29tcGxldGlvbi4gIFRoaXMgbXVzdCBiZSBkb25lIGJ5IHRoZSBjYWxsZXIuCisJICovCisKKwlPcGVuU1NMQ3J5cHRvS2V5UlNBKEVWUF9QS0VZICprKTsKKworCS8qKgorCSAqIFxicmllZiBHZXQgT3BlblNTTCBSU0EgT2JqZWN0CisJICovCisKKwlSU0EgKiBnZXRPcGVuU1NMUlNBKHZvaWQpIHtyZXR1cm4gbXBfcnNhS2V5O30KKworICAgIC8qKgorCSAqIFxicmllZiBHZXQgT3BlblNTTCBSU0EgT2JqZWN0CisJICovCisKKwljb25zdCBSU0EgKiBnZXRPcGVuU1NMUlNBKHZvaWQpIGNvbnN0IHtyZXR1cm4gbXBfcnNhS2V5O30KKworCS8vQH0KKworcHJpdmF0ZToKKworCVJTQQkJCQkJCQkJKiBtcF9yc2FLZXk7CisJdW5zaWduZWQgY2hhcgkJCQkJKiBtcF9vYWVwUGFyYW1zOworCXVuc2lnbmVkIGludAkJCQkJbV9vYWVwUGFyYW1zTGVuOworCit9OworCisjZW5kaWYgLyogSEFWRV9PUEVOU1NMICovCisjZW5kaWYgLyogT1BFTlNTTENSWVBUT0tFWVJTQV9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvUHJvdmlkZXIuY3BwIGIvYy9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b1Byb3ZpZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzVlNGM0Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b1Byb3ZpZGVyLmNwcApAQCAtMCwwICsxLDQ3OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogT3BlblNTTENyeXB0b1Byb3ZpZGVyIDo9IEJhc2UgY2xhc3MgdG8gZGVmaW5lIGFuIE9wZW5TU0wgbW9kdWxlCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisKKyNpbmNsdWRlIDx4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9Qcm92aWRlci5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvSGFzaC5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvSGFzaEhNQUMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0Jhc2U2NC5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvWDUwOS5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvS2V5RFNBLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9LZXlFQy5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvS2V5SE1BQy5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvS2V5UlNBLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9TeW1tZXRyaWNLZXkuaHBwPgorCisjaW5jbHVkZSA8eHNlYy9lbmMvWFNDcnlwdC9YU0NyeXB0Q3J5cHRvQmFzZTY0LmhwcD4KKworI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9FeGNlcHRpb24uaHBwPgorCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL0phbml0b3IuaHBwPgorCitYU0VDX1VTSU5HX1hFUkNFUyhBcnJheUphbml0b3IpOworWFNFQ19VU0lOR19YRVJDRVMoSmFuaXRvcik7CisKKyNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorI2luY2x1ZGUgPG9wZW5zc2wvb2JqX21hYy5oPgorCitPcGVuU1NMQ3J5cHRvUHJvdmlkZXI6Ok9wZW5TU0xDcnlwdG9Qcm92aWRlcigpIHsKKworCU9wZW5TU0xfYWRkX2FsbF9hbGdvcml0aG1zKCk7CQkvLyBJbml0aWFsaXNlIE9wZW5zc2wKKwlFUlJfbG9hZF9jcnlwdG9fc3RyaW5ncygpOworCisJLy9TU0xlYXlfYWRkX2FsbF9hbGdvcml0aG1zKCk7CisKKyAgICAvLyBQb3B1bGF0ZSBjdXJ2ZSBuYW1lcy4KKyAgICBtX25hbWVkQ3VydmVNYXBbInVybjpvaWQ6MS4zLjEzMi4wLjYiXSA9IE5JRF9zZWNwMTEycjE7CisgICAgbV9uYW1lZEN1cnZlTWFwWyJ1cm46b2lkOjEuMy4xMzIuMC43Il0gPSBOSURfc2VjcDExMnIyOworICAgIG1fbmFtZWRDdXJ2ZU1hcFsidXJuOm9pZDoxLjMuMTMyLjAuMjgiXSA9IE5JRF9zZWNwMTI4cjE7CisgICAgbV9uYW1lZEN1cnZlTWFwWyJ1cm46b2lkOjEuMy4xMzIuMC4yOSJdID0gTklEX3NlY3AxMjhyMjsKKyAgICBtX25hbWVkQ3VydmVNYXBbInVybjpvaWQ6MS4zLjEzMi4wLjkiXSA9IE5JRF9zZWNwMTYwazE7CisgICAgbV9uYW1lZEN1cnZlTWFwWyJ1cm46b2lkOjEuMy4xMzIuMC44Il0gPSBOSURfc2VjcDE2MHIxOworICAgIG1fbmFtZWRDdXJ2ZU1hcFsidXJuOm9pZDoxLjMuMTMyLjAuMzAiXSA9IE5JRF9zZWNwMTYwcjI7CisgICAgbV9uYW1lZEN1cnZlTWFwWyJ1cm46b2lkOjEuMy4xMzIuMC4zMSJdID0gTklEX3NlY3AxOTJrMTsKKyAgICBtX25hbWVkQ3VydmVNYXBbInVybjpvaWQ6MS4zLjEzMi4wLjMyIl0gPSBOSURfc2VjcDIyNGsxOworICAgIG1fbmFtZWRDdXJ2ZU1hcFsidXJuOm9pZDoxLjMuMTMyLjAuMzMiXSA9IE5JRF9zZWNwMjI0cjE7CisgICAgbV9uYW1lZEN1cnZlTWFwWyJ1cm46b2lkOjEuMy4xMzIuMC4xMCJdID0gTklEX3NlY3AyNTZrMTsKKyAgICBtX25hbWVkQ3VydmVNYXBbInVybjpvaWQ6MS4zLjEzMi4wLjM0Il0gPSBOSURfc2VjcDM4NHIxOworICAgIG1fbmFtZWRDdXJ2ZU1hcFsidXJuOm9pZDoxLjMuMTMyLjAuMzUiXSA9IE5JRF9zZWNwNTIxcjE7CisKKyAgICBtX25hbWVkQ3VydmVNYXBbInVybjpvaWQ6MS4yLjg0MC4xMDA0NS4zLjEuMSJdID0gTklEX1g5XzYyX3ByaW1lMTkydjE7CisgICAgbV9uYW1lZEN1cnZlTWFwWyJ1cm46b2lkOjEuMi44NDAuMTAwNDUuMy4xLjIiXSA9IE5JRF9YOV82Ml9wcmltZTE5MnYyOworICAgIG1fbmFtZWRDdXJ2ZU1hcFsidXJuOm9pZDoxLjIuODQwLjEwMDQ1LjMuMS4zIl0gPSBOSURfWDlfNjJfcHJpbWUxOTJ2MzsKKyAgICBtX25hbWVkQ3VydmVNYXBbInVybjpvaWQ6MS4yLjg0MC4xMDA0NS4zLjEuNCJdID0gTklEX1g5XzYyX3ByaW1lMjM5djE7CisgICAgbV9uYW1lZEN1cnZlTWFwWyJ1cm46b2lkOjEuMi44NDAuMTAwNDUuMy4xLjUiXSA9IE5JRF9YOV82Ml9wcmltZTIzOXYyOworICAgIG1fbmFtZWRDdXJ2ZU1hcFsidXJuOm9pZDoxLjIuODQwLjEwMDQ1LjMuMS42Il0gPSBOSURfWDlfNjJfcHJpbWUyMzl2MzsKKyAgICBtX25hbWVkQ3VydmVNYXBbInVybjpvaWQ6MS4yLjg0MC4xMDA0NS4zLjEuNyJdID0gTklEX1g5XzYyX3ByaW1lMjU2djE7CisKKyAgICBtX25hbWVkQ3VydmVNYXBbInVybjpvaWQ6MS4zLjEzMi4wLjQiXSA9IE5JRF9zZWN0MTEzcjE7CisgICAgbV9uYW1lZEN1cnZlTWFwWyJ1cm46b2lkOjEuMy4xMzIuMC41Il0gPSBOSURfc2VjdDExM3IyOworICAgIG1fbmFtZWRDdXJ2ZU1hcFsidXJuOm9pZDoxLjMuMTMyLjAuMjIiXSA9IE5JRF9zZWN0MTMxcjE7CisgICAgbV9uYW1lZEN1cnZlTWFwWyJ1cm46b2lkOjEuMy4xMzIuMC4yMyJdID0gTklEX3NlY3QxMzFyMjsKKyAgICBtX25hbWVkQ3VydmVNYXBbInVybjpvaWQ6MS4zLjEzMi4wLjEiXSA9IE5JRF9zZWN0MTYzazE7CisgICAgbV9uYW1lZEN1cnZlTWFwWyJ1cm46b2lkOjEuMy4xMzIuMC4yIl0gPSBOSURfc2VjdDE2M3IxOworICAgIG1fbmFtZWRDdXJ2ZU1hcFsidXJuOm9pZDoxLjMuMTMyLjAuMTUiXSA9IE5JRF9zZWN0MTYzcjI7CisgICAgbV9uYW1lZEN1cnZlTWFwWyJ1cm46b2lkOjEuMy4xMzIuMC4yNCJdID0gTklEX3NlY3QxOTNyMTsKKyAgICBtX25hbWVkQ3VydmVNYXBbInVybjpvaWQ6MS4zLjEzMi4wLjI1Il0gPSBOSURfc2VjdDE5M3IyOworICAgIG1fbmFtZWRDdXJ2ZU1hcFsidXJuOm9pZDoxLjMuMTMyLjAuMjYiXSA9IE5JRF9zZWN0MjMzazE7CisgICAgbV9uYW1lZEN1cnZlTWFwWyJ1cm46b2lkOjEuMy4xMzIuMC4yNyJdID0gTklEX3NlY3QyMzNyMTsKKyAgICBtX25hbWVkQ3VydmVNYXBbInVybjpvaWQ6MS4zLjEzMi4wLjMiXSA9IE5JRF9zZWN0MjM5azE7CisgICAgbV9uYW1lZEN1cnZlTWFwWyJ1cm46b2lkOjEuMy4xMzIuMC4xNiJdID0gTklEX3NlY3QyODNrMTsKKyAgICBtX25hbWVkQ3VydmVNYXBbInVybjpvaWQ6MS4zLjEzMi4wLjE3Il0gPSBOSURfc2VjdDI4M3IxOworICAgIG1fbmFtZWRDdXJ2ZU1hcFsidXJuOm9pZDoxLjMuMTMyLjAuMzYiXSA9IE5JRF9zZWN0NDA5azE7CisgICAgbV9uYW1lZEN1cnZlTWFwWyJ1cm46b2lkOjEuMy4xMzIuMC4zNyJdID0gTklEX3NlY3Q0MDlyMTsKKyAgICBtX25hbWVkQ3VydmVNYXBbInVybjpvaWQ6MS4zLjEzMi4wLjM4Il0gPSBOSURfc2VjdDU3MWsxOworICAgIG1fbmFtZWRDdXJ2ZU1hcFsidXJuOm9pZDoxLjMuMTMyLjAuMzkiXSA9IE5JRF9zZWN0NTcxcjE7CisKKyAgICBtX25hbWVkQ3VydmVNYXBbInVybjpvaWQ6MS4yLjg0MC4xMDA0NS4zLjAuMSJdID0gTklEX1g5XzYyX2MycG5iMTYzdjE7CisgICAgbV9uYW1lZEN1cnZlTWFwWyJ1cm46b2lkOjEuMi44NDAuMTAwNDUuMy4wLjIiXSA9IE5JRF9YOV82Ml9jMnBuYjE2M3YyOworICAgIG1fbmFtZWRDdXJ2ZU1hcFsidXJuOm9pZDoxLjIuODQwLjEwMDQ1LjMuMC4zIl0gPSBOSURfWDlfNjJfYzJwbmIxNjN2MzsKKyAgICBtX25hbWVkQ3VydmVNYXBbInVybjpvaWQ6MS4yLjg0MC4xMDA0NS4zLjAuNCJdID0gTklEX1g5XzYyX2MycG5iMTc2djE7CisgICAgbV9uYW1lZEN1cnZlTWFwWyJ1cm46b2lkOjEuMi44NDAuMTAwNDUuMy4wLjUiXSA9IE5JRF9YOV82Ml9jMnRuYjE5MXYxOworICAgIG1fbmFtZWRDdXJ2ZU1hcFsidXJuOm9pZDoxLjIuODQwLjEwMDQ1LjMuMC42Il0gPSBOSURfWDlfNjJfYzJ0bmIxOTF2MjsKKyAgICBtX25hbWVkQ3VydmVNYXBbInVybjpvaWQ6MS4yLjg0MC4xMDA0NS4zLjAuNyJdID0gTklEX1g5XzYyX2MydG5iMTkxdjM7CisgICAgbV9uYW1lZEN1cnZlTWFwWyJ1cm46b2lkOjEuMi44NDAuMTAwNDUuMy4wLjgiXSA9IE5JRF9YOV82Ml9jMm9uYjE5MXY0OworICAgIG1fbmFtZWRDdXJ2ZU1hcFsidXJuOm9pZDoxLjIuODQwLjEwMDQ1LjMuMC45Il0gPSBOSURfWDlfNjJfYzJvbmIxOTF2NTsKKyAgICBtX25hbWVkQ3VydmVNYXBbInVybjpvaWQ6MS4yLjg0MC4xMDA0NS4zLjAuMTAiXSA9IE5JRF9YOV82Ml9jMnBuYjIwOHcxOworICAgIG1fbmFtZWRDdXJ2ZU1hcFsidXJuOm9pZDoxLjIuODQwLjEwMDQ1LjMuMC4xMSJdID0gTklEX1g5XzYyX2MydG5iMjM5djE7CisgICAgbV9uYW1lZEN1cnZlTWFwWyJ1cm46b2lkOjEuMi44NDAuMTAwNDUuMy4wLjEyIl0gPSBOSURfWDlfNjJfYzJ0bmIyMzl2MjsKKyAgICBtX25hbWVkQ3VydmVNYXBbInVybjpvaWQ6MS4yLjg0MC4xMDA0NS4zLjAuMTMiXSA9IE5JRF9YOV82Ml9jMnRuYjIzOXYzOworICAgIG1fbmFtZWRDdXJ2ZU1hcFsidXJuOm9pZDoxLjIuODQwLjEwMDQ1LjMuMC4xNCJdID0gTklEX1g5XzYyX2Myb25iMjM5djQ7CisgICAgbV9uYW1lZEN1cnZlTWFwWyJ1cm46b2lkOjEuMi44NDAuMTAwNDUuMy4wLjE1Il0gPSBOSURfWDlfNjJfYzJvbmIyMzl2NTsKKyAgICBtX25hbWVkQ3VydmVNYXBbInVybjpvaWQ6MS4yLjg0MC4xMDA0NS4zLjAuMTYiXSA9IE5JRF9YOV82Ml9jMnBuYjI3MncxOworICAgIG1fbmFtZWRDdXJ2ZU1hcFsidXJuOm9pZDoxLjIuODQwLjEwMDQ1LjMuMC4xNyJdID0gTklEX1g5XzYyX2MycG5iMzA0dzE7CisgICAgbV9uYW1lZEN1cnZlTWFwWyJ1cm46b2lkOjEuMi44NDAuMTAwNDUuMy4wLjE4Il0gPSBOSURfWDlfNjJfYzJ0bmIzNTl2MTsKKyAgICBtX25hbWVkQ3VydmVNYXBbInVybjpvaWQ6MS4yLjg0MC4xMDA0NS4zLjAuMTkiXSA9IE5JRF9YOV82Ml9jMnBuYjM2OHcxOworICAgIG1fbmFtZWRDdXJ2ZU1hcFsidXJuOm9pZDoxLjIuODQwLjEwMDQ1LjMuMC4yMCJdID0gTklEX1g5XzYyX2MydG5iNDMxcjE7CisKKyAgICBtX25hbWVkQ3VydmVNYXBbInVybjpvaWQ6Mi4yMy40My4xLjQuMSJdID0gTklEX3dhcF93c2dfaWRtX2VjaWRfd3RsczE7CisgICAgbV9uYW1lZEN1cnZlTWFwWyJ1cm46b2lkOjIuMjMuNDMuMS40LjMiXSA9IE5JRF93YXBfd3NnX2lkbV9lY2lkX3d0bHMzOworICAgIG1fbmFtZWRDdXJ2ZU1hcFsidXJuOm9pZDoyLjIzLjQzLjEuNC40Il0gPSBOSURfd2FwX3dzZ19pZG1fZWNpZF93dGxzNDsKKyAgICBtX25hbWVkQ3VydmVNYXBbInVybjpvaWQ6Mi4yMy40My4xLjQuNSJdID0gTklEX3dhcF93c2dfaWRtX2VjaWRfd3RsczU7CisgICAgbV9uYW1lZEN1cnZlTWFwWyJ1cm46b2lkOjIuMjMuNDMuMS40LjYiXSA9IE5JRF93YXBfd3NnX2lkbV9lY2lkX3d0bHM2OworICAgIG1fbmFtZWRDdXJ2ZU1hcFsidXJuOm9pZDoyLjIzLjQzLjEuNC43Il0gPSBOSURfd2FwX3dzZ19pZG1fZWNpZF93dGxzNzsKKyAgICBtX25hbWVkQ3VydmVNYXBbInVybjpvaWQ6Mi4yMy40My4xLjQuOCJdID0gTklEX3dhcF93c2dfaWRtX2VjaWRfd3Rsczg7CisgICAgbV9uYW1lZEN1cnZlTWFwWyJ1cm46b2lkOjIuMjMuNDMuMS40LjkiXSA9IE5JRF93YXBfd3NnX2lkbV9lY2lkX3d0bHM5OworICAgIG1fbmFtZWRDdXJ2ZU1hcFsidXJuOm9pZDoyLjIzLjQzLjEuNC4xMCJdID0gTklEX3dhcF93c2dfaWRtX2VjaWRfd3RsczEwOworICAgIG1fbmFtZWRDdXJ2ZU1hcFsidXJuOm9pZDoyLjIzLjQzLjEuNC4xMSJdID0gTklEX3dhcF93c2dfaWRtX2VjaWRfd3RsczExOworICAgIG1fbmFtZWRDdXJ2ZU1hcFsidXJuOm9pZDoyLjIzLjQzLjEuNC4xMiJdID0gTklEX3dhcF93c2dfaWRtX2VjaWRfd3RsczEyOworfQorCisKK09wZW5TU0xDcnlwdG9Qcm92aWRlcjo6fk9wZW5TU0xDcnlwdG9Qcm92aWRlcigpIHsKKworCUVWUF9jbGVhbnVwKCk7CisJRVJSX2ZyZWVfc3RyaW5ncygpOworCS8qIEFzIHN1Z2dlc3RlZCBieSBKZXNzZSBQZWx0b24gKi8KKyNpZiBkZWZpbmVkKFhTRUNfT1BFTlNTTF9IQVZFX0NSWVBUT19DTEVBTlVQX0FMTF9FWF9EQVRBKQorCUNSWVBUT19jbGVhbnVwX2FsbF9leF9kYXRhKCk7CisjZW5kaWYKKwlSQU5EX2NsZWFudXAoKTsKKwlYNTA5X1RSVVNUX2NsZWFudXAoKTsKKwlFUlJfcmVtb3ZlX3N0YXRlKDApOworfQorCitpbnQgT3BlblNTTENyeXB0b1Byb3ZpZGVyOjpjdXJ2ZU5hbWVUb05JRChjb25zdCBjaGFyKiBjdXJ2ZU5hbWUpIGNvbnN0IHsKKworICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLGludD46OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX25hbWVkQ3VydmVNYXAuZmluZChjdXJ2ZU5hbWUpOworICAgIGlmIChpID09IG1fbmFtZWRDdXJ2ZU1hcC5lbmQoKSkKKyAgIAkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpVbnN1cHBvcnRlZEVycm9yLAorCQkJIk9wZW5TU0xDcnlwdG9Qcm92aWRlcjo6Y3VydmVOYW1lVG9OSUQgLSBjdXJ2ZSBuYW1lIG5vdCByZWNvZ25pemVkIik7CisgICAgcmV0dXJuIGktPnNlY29uZDsKKworfQorCitjb25zdCBYTUxDaCAqIE9wZW5TU0xDcnlwdG9Qcm92aWRlcjo6Z2V0UHJvdmlkZXJOYW1lKCkgY29uc3QgeworCisJcmV0dXJuIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clBST1ZPcGVuU1NMOworCit9CisJLy8gSGFzaGluZyBjbGFzc2VzCisKK1hTRUNDcnlwdG9IYXNoCSogT3BlblNTTENyeXB0b1Byb3ZpZGVyOjpoYXNoU0hBMSgpIGNvbnN0IHsKKworCU9wZW5TU0xDcnlwdG9IYXNoICogcmV0OworCisJWFNFQ25ldyhyZXQsIE9wZW5TU0xDcnlwdG9IYXNoKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTEpKTsKKworCXJldHVybiByZXQ7CisKK30KKworWFNFQ0NyeXB0b0hhc2ggKiBPcGVuU1NMQ3J5cHRvUHJvdmlkZXI6Omhhc2hITUFDU0hBMSgpIGNvbnN0IHsKKworCU9wZW5TU0xDcnlwdG9IYXNoSE1BQyAqIHJldDsKKworCVhTRUNuZXcocmV0LCBPcGVuU1NMQ3J5cHRvSGFzaEhNQUMoWFNFQ0NyeXB0b0hhc2g6OkhBU0hfU0hBMSkpOworCisJcmV0dXJuIHJldDsKKworfQorCitYU0VDQ3J5cHRvSGFzaAkqIE9wZW5TU0xDcnlwdG9Qcm92aWRlcjo6aGFzaFNIQShpbnQgbGVuZ3RoKSBjb25zdCB7CisKKworCU9wZW5TU0xDcnlwdG9IYXNoICogcmV0OworCisJc3dpdGNoIChsZW5ndGgpIHsKKworCWNhc2UgMTYwOiBYU0VDbmV3KHJldCwgT3BlblNTTENyeXB0b0hhc2goWFNFQ0NyeXB0b0hhc2g6OkhBU0hfU0hBMSkpOworCQlicmVhazsKKwljYXNlIDIyNDogWFNFQ25ldyhyZXQsIE9wZW5TU0xDcnlwdG9IYXNoKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTIyNCkpOworCQlicmVhazsKKwljYXNlIDI1NjogWFNFQ25ldyhyZXQsIE9wZW5TU0xDcnlwdG9IYXNoKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTI1NikpOworCQlicmVhazsKKwljYXNlIDM4NDogWFNFQ25ldyhyZXQsIE9wZW5TU0xDcnlwdG9IYXNoKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTM4NCkpOworCQlicmVhazsKKwljYXNlIDUxMjogWFNFQ25ldyhyZXQsIE9wZW5TU0xDcnlwdG9IYXNoKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTUxMikpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXQgPSBOVUxMOworCX0KKworCXJldHVybiByZXQ7CisKK30KKworWFNFQ0NyeXB0b0hhc2ggKiBPcGVuU1NMQ3J5cHRvUHJvdmlkZXI6Omhhc2hITUFDU0hBKGludCBsZW5ndGgpIGNvbnN0IHsKKworCU9wZW5TU0xDcnlwdG9IYXNoSE1BQyAqIHJldDsKKworCXN3aXRjaCAobGVuZ3RoKSB7CisKKwljYXNlIDE2MDogWFNFQ25ldyhyZXQsIE9wZW5TU0xDcnlwdG9IYXNoSE1BQyhYU0VDQ3J5cHRvSGFzaDo6SEFTSF9TSEExKSk7CisJCWJyZWFrOworCWNhc2UgMjI0OiBYU0VDbmV3KHJldCwgT3BlblNTTENyeXB0b0hhc2hITUFDKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTIyNCkpOworCQlicmVhazsKKwljYXNlIDI1NjogWFNFQ25ldyhyZXQsIE9wZW5TU0xDcnlwdG9IYXNoSE1BQyhYU0VDQ3J5cHRvSGFzaDo6SEFTSF9TSEEyNTYpKTsKKwkJYnJlYWs7CisJY2FzZSAzODQ6IFhTRUNuZXcocmV0LCBPcGVuU1NMQ3J5cHRvSGFzaEhNQUMoWFNFQ0NyeXB0b0hhc2g6OkhBU0hfU0hBMzg0KSk7CisJCWJyZWFrOworCWNhc2UgNTEyOiBYU0VDbmV3KHJldCwgT3BlblNTTENyeXB0b0hhc2hITUFDKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTUxMikpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXQgPSBOVUxMOworCX0KKworCXJldHVybiByZXQ7CisKK30KKworWFNFQ0NyeXB0b0hhc2gJKiBPcGVuU1NMQ3J5cHRvUHJvdmlkZXI6Omhhc2hNRDUoKSBjb25zdCB7CisKKwlPcGVuU1NMQ3J5cHRvSGFzaCAqIHJldDsKKworCVhTRUNuZXcocmV0LCBPcGVuU1NMQ3J5cHRvSGFzaChYU0VDQ3J5cHRvSGFzaDo6SEFTSF9NRDUpKTsKKworCXJldHVybiByZXQ7CisKK30KKworWFNFQ0NyeXB0b0hhc2ggKiBPcGVuU1NMQ3J5cHRvUHJvdmlkZXI6Omhhc2hITUFDTUQ1KCkgY29uc3QgeworCisJT3BlblNTTENyeXB0b0hhc2hITUFDICogcmV0OworCisJWFNFQ25ldyhyZXQsIE9wZW5TU0xDcnlwdG9IYXNoSE1BQyhYU0VDQ3J5cHRvSGFzaDo6SEFTSF9NRDUpKTsKKworCXJldHVybiByZXQ7CisKK30KKworWFNFQ0NyeXB0b0tleUhNQUMgKiBPcGVuU1NMQ3J5cHRvUHJvdmlkZXI6OmtleUhNQUModm9pZCkgY29uc3QgeworCisJT3BlblNTTENyeXB0b0tleUhNQUMgKiByZXQ7CisJWFNFQ25ldyhyZXQsIE9wZW5TU0xDcnlwdG9LZXlITUFDKTsKKworCXJldHVybiByZXQ7CisKK30KKworWFNFQ0NyeXB0b0tleURTQSAqIE9wZW5TU0xDcnlwdG9Qcm92aWRlcjo6a2V5RFNBKCkgY29uc3QgeworCQorCU9wZW5TU0xDcnlwdG9LZXlEU0EgKiByZXQ7CisKKwlYU0VDbmV3KHJldCwgT3BlblNTTENyeXB0b0tleURTQSgpKTsKKworCXJldHVybiByZXQ7CisKK30KKworWFNFQ0NyeXB0b0tleUVDICogT3BlblNTTENyeXB0b1Byb3ZpZGVyOjprZXlFQygpIGNvbnN0IHsKKwkKKwlPcGVuU1NMQ3J5cHRvS2V5RUMgKiByZXQ7CisKKwlYU0VDbmV3KHJldCwgT3BlblNTTENyeXB0b0tleUVDKCkpOworCisJcmV0dXJuIHJldDsKKworfQorCitYU0VDQ3J5cHRvS2V5UlNBICogT3BlblNTTENyeXB0b1Byb3ZpZGVyOjprZXlSU0EoKSBjb25zdCB7CisJCisJT3BlblNTTENyeXB0b0tleVJTQSAqIHJldDsKKworCVhTRUNuZXcocmV0LCBPcGVuU1NMQ3J5cHRvS2V5UlNBKCkpOworCisJcmV0dXJuIHJldDsKKworfQorCitYU0VDQ3J5cHRvS2V5KiBPcGVuU1NMQ3J5cHRvUHJvdmlkZXI6OmtleURFUihjb25zdCBjaGFyKiBidWYsIHVuc2lnbmVkIGxvbmcgbGVuLCBib29sIGJhc2U2NCkgY29uc3QgeworCisgICAgRVZQX1BLRVkqIHBrZXkgPSBOVUxMOworCisgICAgaWYgKGJhc2U2NCkgeworCSAgICBpbnQgYnVmTGVuID0gbGVuOworCSAgICB1bnNpZ25lZCBjaGFyICogb3V0QnVmOworCSAgICBYU0VDbmV3KG91dEJ1ZiwgdW5zaWduZWQgY2hhcltsZW4gKyAxXSk7CisJICAgIEFycmF5SmFuaXRvcjx1bnNpZ25lZCBjaGFyPiBqX291dEJ1ZihvdXRCdWYpOworCisJICAgIC8qIEhhZCB0byBtb3ZlIHRvIG91ciBvd24gQmFzZTY0IGRlY29kZXIgYmVjYXVzZSBpdCBoYW5kbGVzIG5vbi13cmFwcGVkIGI2NAorCSAgICAgICBiZXR0ZXIuICBHcnJyLiAqLworCisJICAgIFhTQ3J5cHRDcnlwdG9CYXNlNjQgKmI2NDsKKwkgICAgWFNFQ25ldyhiNjQsIFhTQ3J5cHRDcnlwdG9CYXNlNjQpOworCSAgICBKYW5pdG9yPFhTQ3J5cHRDcnlwdG9CYXNlNjQ+IGpfYjY0KGI2NCk7CisKKwkgICAgYjY0LT5kZWNvZGVJbml0KCk7CisJICAgIGJ1ZkxlbiA9IGI2NC0+ZGVjb2RlKCh1bnNpZ25lZCBjaGFyICopIGJ1ZiwgbGVuLCBvdXRCdWYsIGxlbik7CisJICAgIGJ1ZkxlbiArPSBiNjQtPmRlY29kZUZpbmlzaCgmb3V0QnVmW2J1Zkxlbl0sIGxlbi1idWZMZW4pOworCisgICAgICAgIEJJTyogYiA9IEJJT19uZXdfbWVtX2J1Zigodm9pZCopb3V0QnVmLCBidWZMZW4pOworICAgICAgICBwa2V5ID0gZDJpX1BVQktFWV9iaW8oYiwgTlVMTCk7CisgICAgICAgIEJJT19mcmVlKGIpOworCisgICAgfQorICAgIGVsc2UgeworCisgICAgICAgIEJJTyogYiA9IEJJT19uZXdfbWVtX2J1Zigodm9pZCopYnVmLCBsZW4pOworICAgICAgICBwa2V5ID0gZDJpX1BVQktFWV9iaW8oYiwgTlVMTCk7CisgICAgICAgIEJJT19mcmVlKGIpOworCisgICAgfQorCisgICAgaWYgKHBrZXkpIHsKKyAgICAgICAgWFNFQ0NyeXB0b0tleSogcmV0ID0gTlVMTDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHN3aXRjaCAocGtleS0+dHlwZSkgeworICAgICAgICAgICAgICAgIGNhc2UgRVZQX1BLRVlfUlNBOgorICAgICAgICAgICAgICAgICAgICByZXQgPSBuZXcgT3BlblNTTENyeXB0b0tleVJTQShwa2V5KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlIEVWUF9QS0VZX0RTQToKKyAgICAgICAgICAgICAgICAgICAgcmV0ID0gbmV3IE9wZW5TU0xDcnlwdG9LZXlEU0EocGtleSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisjaWYgZGVmaW5lZChYU0VDX09QRU5TU0xfSEFWRV9FQykKKyAgICAgICAgICAgICAgICBjYXNlIEVWUF9QS0VZX0VDOgorICAgICAgICAgICAgICAgICAgICByZXQgPSBuZXcgT3BlblNTTENyeXB0b0tleUVDKHBrZXkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyNlbmRpZgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhdGNoIChYU0VDQ3J5cHRvRXhjZXB0aW9uJikgeworICAgICAgICAgICAgRVZQX1BLRVlfZnJlZShwa2V5KTsKKyAgICAgICAgICAgIHRocm93OworICAgICAgICB9CisKKyAgICAgICAgRVZQX1BLRVlfZnJlZShwa2V5KTsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICB0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlVuc3VwcG9ydGVkRXJyb3IsCisJCSJPcGVuU1NMQ3J5cHRvUHJvdmlkZXI6OmtleURFUiAtIEVycm9yIGRlY29kaW5nIHB1YmxpYyBrZXkiKTsgCit9CisKKworWFNFQ0NyeXB0b1g1MDkgKiBPcGVuU1NMQ3J5cHRvUHJvdmlkZXI6Olg1MDkoKSBjb25zdCB7CisKKwlPcGVuU1NMQ3J5cHRvWDUwOSAqIHJldDsKKworCVhTRUNuZXcocmV0LCBPcGVuU1NMQ3J5cHRvWDUwOSgpKTsKKworCXJldHVybiByZXQ7CisKK30KKworWFNFQ0NyeXB0b0Jhc2U2NCAqIE9wZW5TU0xDcnlwdG9Qcm92aWRlcjo6YmFzZTY0KCkgY29uc3QgeworCisjaWYgMAorCU9wZW5TU0xDcnlwdG9CYXNlNjQgKiByZXQ7CisKKwlYU0VDbmV3KHJldCwgT3BlblNTTENyeXB0b0Jhc2U2NCgpKTsKKyNlbHNlCisJWFNDcnlwdENyeXB0b0Jhc2U2NCAqcmV0OworCVhTRUNuZXcocmV0LCBYU0NyeXB0Q3J5cHRvQmFzZTY0KTsKKworI2VuZGlmCisJcmV0dXJuIHJldDsKKworfQorCitib29sIE9wZW5TU0xDcnlwdG9Qcm92aWRlcjo6YWxnb3JpdGhtU3VwcG9ydGVkKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OlN5bW1ldHJpY0tleVR5cGUgYWxnKSBjb25zdCB7CisKKwlzd2l0Y2ggKGFsZykgeworCisJY2FzZSAoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZX0FFU18xMjgpIDoKKwljYXNlIChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfQUVTXzE5MikgOgorCWNhc2UgKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV9BRVNfMjU2KSA6CisKKyNpZiAhZGVmaW5lZCAoWFNFQ19PUEVOU1NMX0hBVkVfQUVTKQorCQlyZXR1cm4gZmFsc2U7CisjZW5kaWYKKwljYXNlIChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfM0RFU18xOTIpIDoKKworCQlyZXR1cm4gdHJ1ZTsKKworCWRlZmF1bHQ6CisKKwkJcmV0dXJuIGZhbHNlOworCisJfQorCisJcmV0dXJuIGZhbHNlOworCit9CisKK2Jvb2wgT3BlblNTTENyeXB0b1Byb3ZpZGVyOjphbGdvcml0aG1TdXBwb3J0ZWQoWFNFQ0NyeXB0b0hhc2g6Okhhc2hUeXBlIGFsZykgY29uc3QgeworCisJc3dpdGNoIChhbGcpIHsKKworCWNhc2UgKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTEpIDoKKwljYXNlIChYU0VDQ3J5cHRvSGFzaDo6SEFTSF9NRDUpIDoKKworCQlyZXR1cm4gdHJ1ZTsKKworCWNhc2UgKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTIyNCkgOgorCWNhc2UgKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTI1NikgOgorCWNhc2UgKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTM4NCkgOgorCWNhc2UgKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTUxMikgOgorCisJCXJldHVybiAKKyNpZiBkZWZpbmVkIChTSEE1MTJfRElHRVNUX0xFTkdUSCkgJiYgIWRlZmluZWQgKE9QRU5TU0xfTk9fU0hBNTEyKQorCQkJdHJ1ZTsKKyNlbHNlCisJCQlmYWxzZTsKKyNlbmRpZgorCisJZGVmYXVsdDoKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVybiBmYWxzZTsKKworfQorCisKK1hTRUNDcnlwdG9TeW1tZXRyaWNLZXkJKiBPcGVuU1NMQ3J5cHRvUHJvdmlkZXI6OmtleVN5bW1ldHJpYyhYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpTeW1tZXRyaWNLZXlUeXBlIGFsZykgY29uc3QgeworCisJT3BlblNTTENyeXB0b1N5bW1ldHJpY0tleSAqIHJldDsKKworCVhTRUNuZXcocmV0LCBPcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5KGFsZykpOworCisJcmV0dXJuIHJldDsKKworfQorCit1bnNpZ25lZCBpbnQgT3BlblNTTENyeXB0b1Byb3ZpZGVyOjpnZXRSYW5kb20odW5zaWduZWQgY2hhciAqIGJ1ZmZlciwgdW5zaWduZWQgaW50IG51bU9jdGV0cykgY29uc3QgeworCisJaWYgKFJBTkRfc3RhdHVzKCkgIT0gMSkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6R2VuZXJhbEVycm9yLAorCQkJIk9wZW5TU0xDcnlwdG9Qcm92aWRlcjo6Z2V0UmFuZG9tIC0gT3BlblNTTCByYW5kb20gbm90IHByb3Blcmx5IGluaXRpYWxpc2VkIik7IAorCX0KKworCWludCByZXMgPSBSQU5EX2J5dGVzKGJ1ZmZlciwgbnVtT2N0ZXRzKTsKKworCWlmIChyZXMgPT0gMCkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6R2VuZXJhbEVycm9yLAorCQkJIk9wZW5TU0xDcnlwdG9Qcm92aWRlcjo6Z2V0UmFuZG9tIC0gRXJyb3Igb2J0YWluaW5nIHJhbmRvbSBvY3RldHMiKTsgCisJCisJfQorCisJcmV0dXJuIG51bU9jdGV0czsKKworfQorCisKKyNlbmRpZiAvKiBIQVZFX09QRU5TU0wgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9Qcm92aWRlci5ocHAgYi9jL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvUHJvdmlkZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0Nzk2MzYKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvUHJvdmlkZXIuaHBwCkBAIC0wLDAgKzEsMzE3IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBPcGVuU1NMQ3J5cHRvUHJvdmlkZXIgOj0gQmFzZSBjbGFzcyB0byBkZWZpbmUgYW4gT3BlblNTTCBtb2R1bGUKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgT1BFTlNTTENSWVBUT1BST1ZJREVSX0lOQ0xVREUKKyNkZWZpbmUgT1BFTlNTTENSWVBUT1BST1ZJREVSX0lOQ0xVREUKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvUHJvdmlkZXIuaHBwPgorCisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHN0cmluZz4KKworI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKworLyoqCisgKiBAZGVmZ3JvdXAgb3BlbnNzbGNyeXB0byBPcGVuU1NMIEludGVyZmFjZQorICogQGluZ3JvdXAgY3J5cHRvCisgKiBUaGUgT3BlblNTTC9PcGVuU1NMKiBjbGFzc2VzIHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIAorICogWFNFQ0NyeXB0byBpbnRlcmZhY2UgbGF5ZXIgZm9yIE9wZW5TU0wuICBUaGUgbGF5ZXIgaXMgdmVyeSB0aGluIC0KKyAqIGl0IG9ubHkgcHJvdmlkZXMgdGhlIGZ1bmN0aW9uYWxpdHkgbmVjZXNzYXJ5IHRvIHByb3ZpZGUgY3J5cHRvZ3JhcGhpYworICogc2VydmljZXMgdG8gdGhlIGxpYnJhcnkuCisgKgorICogQ2FsbGluZyBhcHBsaWNhdGlvbnMgbmVlZCB0byBkbyB0aGUgd29yayB0byBpbml0aWFsaXNlIE9wZW5TU0wsIGxvYWQKKyAqIGtleXMgZnJvbSBkaXNrIGV0Yy4KKyAqCisgKi8KKyAvKlxAeyovCisKK2NsYXNzIERTSUdfRVhQT1JUIE9wZW5TU0xDcnlwdG9Qcm92aWRlciA6IHB1YmxpYyBYU0VDQ3J5cHRvUHJvdmlkZXIgeworCisgICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsaW50PiBtX25hbWVkQ3VydmVNYXA7CisKK3B1YmxpYyA6CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKwkKKwlPcGVuU1NMQ3J5cHRvUHJvdmlkZXIoKTsKKwl2aXJ0dWFsIH5PcGVuU1NMQ3J5cHRvUHJvdmlkZXIoKTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBIYXNoaW5nIChEaWdlc3QpIEZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gYSBTSEExIGltcGxlbWVudGF0aW9uLgorCSAqCisJICogQ2FsbCB1c2VkIGJ5IHRoZSBsaWJyYXJ5IHRvIG9idGFpbiBhIFNIQTEgb2JqZWN0IGZyb20gdGhlIAorCSAqIHByb3ZpZGVyLgorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIGFuIE9wZW5TU0wgSGFzaCBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIFNIQTEKKwkgKiBAc2VlIFhTRUNDcnlwdG9IYXNoCisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9IYXNoCQkJKiBoYXNoU0hBMSgpIGNvbnN0OworCisJLyoqCisJICogXGJyaWVmIFJldHVybiBhIFNIQSBpbXBsZW1lbnRhdGlvbi4KKwkgKgorCSAqIENhbGwgdXNlZCBieSB0aGUgbGlicmFyeSB0byBvYnRhaW4gYSBTSEEgb2JqZWN0IGZyb20gdGhlIAorCSAqIHByb3ZpZGVyLiAgU2l6ZSBvZiBoYXNoIGRldGVybWluZWQgYnkgbGVuZ3RoIGFyZ3VtZW50ICgxNjAgPSBTSEExKQorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIGEgSGFzaCBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIFNIQTEKKwkgKiBAcGFyYW0gbGVuZ3RoIC0gbGVuZ3RoIG9mIGhhc2guICBFLmcuIDE2MCBmb3IgU0hBMSBvciAyNTYgZm9yIFNIQTI1NgorCSAqIEBzZWUgT3BlblNTTENyeXB0b0hhc2gKKwkgKi8KKwkgCisJdmlydHVhbCBYU0VDQ3J5cHRvSGFzaAkJCSogaGFzaFNIQShpbnQgbGVuZ3RoID0gMTYwKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gYSBITUFDIFNIQTEgaW1wbGVtZW50YXRpb24uCisJICoKKwkgKiBDYWxsIHVzZWQgYnkgdGhlIGxpYnJhcnkgdG8gb2J0YWluIGEgSE1BQyBTSEExIG9iamVjdCBmcm9tIHRoZSAKKwkgKiBwcm92aWRlci4gIFRoZSBjYWxsZXIgd2lsbCBuZWVkIHRvIHNldCB0aGUga2V5IGluIHRoZSBoYXNoCisJICogb2JqZWN0IHdpdGggYW4gWFNFQ0NyeXB0b0tleUhNQUMgdXNpbmcgT3BlblNTTENyeXB0b0hhc2g6OnNldEtleSgpCisJICoKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gYSBIYXNoIG9iamVjdCB0aGF0IGltcGxlbWVudHMgSE1BQy1TSEExCisJICogQHNlZSBPcGVuU1NMQ3J5cHRvSGFzaAorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvSGFzaAkJCSogaGFzaEhNQUNTSEExKCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIGEgSE1BQyBTSEEoMS01MTIpIGltcGxlbWVudGF0aW9uLgorCSAqCisJICogQ2FsbCB1c2VkIGJ5IHRoZSBsaWJyYXJ5IHRvIG9idGFpbiBhIEhNQUMgU0hBIG9iamVjdCBmcm9tIHRoZSAKKwkgKiBwcm92aWRlci4gIFRoZSBjYWxsZXIgd2lsbCBuZWVkIHRvIHNldCB0aGUga2V5IGluIHRoZSBoYXNoCisJICogb2JqZWN0IHdpdGggYW4gWFNFQ0NyeXB0b0tleUhNQUMgdXNpbmcgWFNFQ0NyeXB0b0hhc2g6OnNldEtleSgpCisJICoKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gYSBIYXNoIG9iamVjdCB0aGF0IGltcGxlbWVudHMgSE1BQy1TSEExCisJICogQHBhcmFtIGxlbmd0aCBMZW5ndGggb2YgaGFzaCBvdXRwdXQgKDE2MCA9IFNIQTEsIDI1NiwgNTEyIGV0YykKKwkgKiBAc2VlIE9wZW5TU0xDcnlwdG9IYXNoCisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9IYXNoCQkJKiBoYXNoSE1BQ1NIQShpbnQgbGVuZ3RoID0gMTYwKSBjb25zdDsKKwkKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIGEgTUQ1IGltcGxlbWVudGF0aW9uLgorCSAqCisJICogQ2FsbCB1c2VkIGJ5IHRoZSBsaWJyYXJ5IHRvIG9idGFpbiBhIE1ENSBvYmplY3QgZnJvbSB0aGUgCisJICogT3BlblNTTCBwcm92aWRlci4KKwkgKgorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byBhIEhhc2ggb2JqZWN0IHRoYXQgaW1wbGVtZW50cyBNRDUKKwkgKiBAc2VlIE9wZW5TU0xDcnlwdG9IYXNoCisJICovCisJIAorCXZpcnR1YWwgWFNFQ0NyeXB0b0hhc2gJCQkqIGhhc2hNRDUoKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gYSBITUFDIE1ENSBpbXBsZW1lbnRhdGlvbi4KKwkgKgorCSAqIENhbGwgdXNlZCBieSB0aGUgbGlicmFyeSB0byBvYnRhaW4gYSBITUFDIE1ENSBvYmplY3QgZnJvbSB0aGUgCisJICogcHJvdmlkZXIuICBUaGUgY2FsbGVyIHdpbGwgbmVlZCB0byBzZXQgdGhlIGtleSBpbiB0aGUgaGFzaAorCSAqIG9iamVjdCB3aXRoIGFuIFhTRUNDcnlwdG9LZXlITUFDIHVzaW5nIFhTRUNDcnlwdG9IYXNoOjpzZXRLZXkoKQorCSAqCisJICogQG5vdGUgVGhlIHVzZSBvZiBNRDUgaXMgZXhwbGljaXRseSBtYXJrZWQgYXMgPGI+bm90IHJlY29tbWVuZGVkPC9iPiAKKwkgKiBpbiB0aGUgWE1MIERpZ2l0YWwgU2lnbmF0dXJlIHN0YW5kYXJkIGR1ZSB0byByZWNlbnQgYWR2YW5jZXMgaW4KKwkgKiBjcnlwdG9ncmFwaHkgaW5kaWNhdGluZyB0aGVyZSA8ZW0+bWF5PC9lbT4gYmUgd2Vha25lc3NlcyBpbiB0aGUgCisJICogYWxnb3JpdGhtLgorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIGEgSGFzaCBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIEhNQUMtTUQ1CisJICogQHNlZSBPcGVuU1NMQ3J5cHRvSGFzaAorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvSGFzaAkJCSogaGFzaEhNQUNNRDUoKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gYSBITUFDIGtleQorCSAqCisJICogU29tZXRpbWVzIHRoZSBsaWJyYXJ5IG5lZWRzIHRvIGNyZWF0ZSBhbiBITUFDIGtleSAobm90YWJseSB3aXRoaW4KKwkgKiB0aGUgWEtNUyB1dGlsaXRpZXMuCisJICoKKwkgKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGUgbGlicmFyeSB0byBvYnRhaW4gYSBrZXkgdGhhdCBjYW4gdGhlbiBoYXZlCisJICogYSB2YWx1ZSBzZXQgd2l0aGluIGl0LgorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvS2V5SE1BQwkJKiBrZXlITUFDKHZvaWQpIGNvbnN0OworCisJLy9AfQorCisJLyoqIEBuYW1lIEVuY29kaW5nIGZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gYSBCYXNlNjQgZW5jb2Rlci9kZWNvZGVyIGltcGxlbWVudGF0aW9uLgorCSAqCisJICogQ2FsbCB1c2VkIGJ5IHRoZSBsaWJyYXJ5IHRvIG9idGFpbiBhbiBPcGVuU1NMIEJhc2U2NCAKKwkgKiBlbmNvZGVyL2RlY29kZXIuCisJICoKKwkgKiBAcmV0dXJucyBQb2ludGVyIHRvIHRoZSBuZXcgQmFzZTY0IGVuY29kZXIuCisJICogQHNlZSBPcGVuU1NMQ3J5cHRvQmFzZTY0CisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9CYXNlNjQJCSogYmFzZTY0KCkgY29uc3Q7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgS2V5cyBhbmQgQ2VydGlmaWNhdGVzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFJldHVybiBhIERTQSBrZXkgaW1wbGVtZW50YXRpb24gb2JqZWN0LgorCSAqIAorCSAqIENhbGwgdXNlZCBieSB0aGUgbGlicmFyeSB0byBvYnRhaW4gYSBEU0Ega2V5IG9iamVjdC4KKwkgKgorCSAqIEByZXR1cm5zIFBvaW50ZXIgdG8gdGhlIG5ldyBEU0Ega2V5CisJICogQHNlZSBPcGVuU1NMQ3J5cHRvS2V5RFNBCisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXlEU0EJCSoga2V5RFNBKCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIGFuIFJTQSBrZXkgaW1wbGVtZW50YXRpb24gb2JqZWN0LgorCSAqIAorCSAqIENhbGwgdXNlZCBieSB0aGUgbGlicmFyeSB0byBvYnRhaW4gYW4gT3BlblNTTCBSU0Ega2V5IG9iamVjdC4KKwkgKgorCSAqIEByZXR1cm5zIFBvaW50ZXIgdG8gdGhlIG5ldyBSU0Ega2V5CisJICogQHNlZSBPcGVuU1NMQ3J5cHRvS2V5UlNBCisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXlSU0EJCSoga2V5UlNBKCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIGFuIEVDIGtleSBpbXBsZW1lbnRhdGlvbiBvYmplY3QuCisJICogCisJICogQ2FsbCB1c2VkIGJ5IHRoZSBsaWJyYXJ5IHRvIG9idGFpbiBhbiBPcGVuU1NMIEVDIGtleSBvYmplY3QuCisJICoKKwkgKiBAcmV0dXJucyBQb2ludGVyIHRvIHRoZSBuZXcgRUMga2V5CisJICogQHNlZSBPcGVuU1NMQ3J5cHRvS2V5RUMKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0tleUVDCQkgICAgKiBrZXlFQygpIGNvbnN0OworCisJLyoqCisJICogXGJyaWVmIFJldHVybiBhIGtleSBpbXBsZW1lbnRhdGlvbiBvYmplY3QgYmFzZWQgb24gREVSLWVuY29kZWQgaW5wdXQuCisJICogCisJICogQ2FsbCB1c2VkIGJ5IHRoZSBsaWJyYXJ5IHRvIG9idGFpbiBhIGtleSBvYmplY3QgZnJvbSBhIERFUi1lbmNvZGVkIGtleS4KKwkgKgorICAgICAqIEBwYXJhbSBidWYgICAgICAgREVSLWVuY29kZWQgZGF0YQorICAgICAqIEBwYXJhbSBidWZsZW4gICAgbGVuZ3RoIG9mIGRhdGEKKyAgICAgKiBAcGFyYW0gYmFzZTY0ICAgIHRydWUgaWZmIGRhdGEgaXMgYmFzZTY0LWVuY29kZWQKKwkgKiBAcmV0dXJucyBQb2ludGVyIHRvIHRoZSBuZXcga2V5CisJICogQHNlZSBYU0VDQ3J5cHRvS2V5CisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXkgICAgICAgICAgICoga2V5REVSKGNvbnN0IGNoYXIqIGJ1ZiwgdW5zaWduZWQgbG9uZyBidWZsZW4sIGJvb2wgYmFzZTY0KSBjb25zdDsKKworICAgIC8qKgorCSAqIFxicmllZiBSZXR1cm4gYW4gWDUwOSBpbXBsZW1lbnRhdGlvbiBvYmplY3QuCisJICogCisJICogQ2FsbCB1c2VkIGJ5IHRoZSBsaWJyYXJ5IHRvIG9idGFpbiBhbiBvYmplY3QgdGhhdCBjYW4gd29yaworCSAqIHdpdGggWDUwOSBjZXJ0aWZpY2F0ZXMuCisJICoKKwkgKiBAcmV0dXJucyBQb2ludGVyIHRvIHRoZSBuZXcgWDUwOSBvYmplY3QKKwkgKiBAc2VlIE9wZW5TU0xDcnlwdG9YNTA5CisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9YNTA5CQkJKiBYNTA5KCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgRGV0ZXJtaW5lIHdoZXRoZXIgYSBnaXZlbiBhbGdvcml0aG0gaXMgc3VwcG9ydGVkCisJICoKKwkgKiBBIGNhbGwgdGhhdCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciBhIGdpdmVuIAorCSAqIHN5bW1ldHJpYyBhbGdvcml0aG0gaXMgc3VwcG9ydGVkCisJICovCisKKwl2aXJ0dWFsIGJvb2wgYWxnb3JpdGhtU3VwcG9ydGVkKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OlN5bW1ldHJpY0tleVR5cGUgYWxnKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBEZXRlcm1pbmUgd2hldGhlciBhIGdpdmVuIGFsZ29yaXRobSBpcyBzdXBwb3J0ZWQKKwkgKgorCSAqIEEgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIGEgZ2l2ZW4gCisJICogZGlnZXN0IGFsZ29yaXRobSBpcyBzdXBwb3J0ZWQKKwkgKi8KKworCXZpcnR1YWwgYm9vbCBhbGdvcml0aG1TdXBwb3J0ZWQoWFNFQ0NyeXB0b0hhc2g6Okhhc2hUeXBlIGFsZykgY29uc3Q7CisJCisJLyoqCisJICogXGJyaWVmIFJldHVybiBhIFN5bW1ldHJpYyBLZXkgaW1wbGVtZW50YXRpb24gb2JqZWN0LgorCSAqCisJICogQ2FsbCB1c2VkIGJ5IHRoZSBsaWJyYXJ5IHRvIG9idGFpbiBhIGJ1bGsgZW5jcnlwdGlvbgorCSAqIG9iamVjdC4KKwkgKgorCSAqIEByZXR1cm5zIFBvaW50ZXIgdG8gdGhlIG5ldyBTeW1tZXRyaWNLZXkgb2JqZWN0CisJICogQHNlZSBYU0VDQ3J5cHRvU3ltbWV0cmljS2V5CisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9TeW1tZXRyaWNLZXkJKiBrZXlTeW1tZXRyaWMoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6U3ltbWV0cmljS2V5VHlwZSBhbGcpIGNvbnN0OworCisJLyoqCisJICogXGJyaWVmIE9idGFpbiBzb21lIHJhbmRvbSBvY3RldHMKKwkgKgorCSAqIEZvciBnZW5lcmF0aW9uIG9mIElWcyBhbmQgdGhlIGxpa2UsIHRoZSBsaWJyYXJ5IG5lZWRzIHRvIGJlIGFibGUKKwkgKiB0byBvYnRhaW4gInJhbmRvbSIgb2N0ZXRzLiAgVGhlIGxpYnJhcnkgdXNlcyB0aGlzIGNhbGwgdG8gdGhlIAorCSAqIGNyeXB0byBwcm92aWRlciB0byBvYnRhaW4gd2hhdCBpdCBuZWVkcy4KKwkgKgorCSAqIEBwYXJhbSBidWZmZXIgVGhlIGJ1ZmZlciB0byBwbGFjZSB0aGUgcmFuZG9tIGRhdGEgaW4KKwkgKiBAcGFyYW0gbnVtT2N0ZXRzIE51bWJlciBvZiBieXRlcyByZXF1aXJlZAorCSAqIEByZXR1cm5zIE51bWJlciBvZiBieXRlcyBvYnRhaW5lZC4KKwkgKi8KKworCXZpcnR1YWwgdW5zaWduZWQgaW50IGdldFJhbmRvbSh1bnNpZ25lZCBjaGFyICogYnVmZmVyLCB1bnNpZ25lZCBpbnQgbnVtT2N0ZXRzKSBjb25zdDsKKworICAgIC8qKgorICAgICAqIFxicmllZiBNYXAgYSBjdXJ2ZSBuYW1lIChpbiBVUkkgZm9ybSkgdG8gYSBjdXJ2ZSBOSUQuCisgICAgICoKKyAgICAgKiBNYXBzIGEgVVJJIGlkZW50aWZ5aW5nIGEgbmFtZWQgY3VydmUgdG8gYSBsaWJyYXJ5IGlkZW50aWZpZXIuCisgICAgICoKKyAgICAgKiBAcGFyYW0gY3VydmVOYW1lIHRoZSBVUkkgaWRlbnRpZnlpbmcgdGhlIGN1cnZlCisgICAgICogQHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgTklECisgICAgICovCisgICAgaW50IGN1cnZlTmFtZVRvTklEKGNvbnN0IGNoYXIqIGN1cnZlTmFtZSkgY29uc3Q7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgSW5mb3JtYXRpb24gRnVuY3Rpb25zICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFJldHVybnMgYSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSBDcnlwdG8gUHJvdmlkZXIKKwkgKi8KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRQcm92aWRlck5hbWUoKSBjb25zdDsKKworCS8vQH0KKworCS8qXEB9Ki8KKworfTsKKworI2VuZGlmIC8qIEhBVkVfT1BFTlNTTCAqLworI2VuZGlmIC8qIE9QRU5TU0xDUllQVE9QUk9WSURFUl9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5LmNwcCBiL2Mvc3JjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9TeW1tZXRyaWNLZXkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZjhhYjEKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5LmNwcApAQCAtMCwwICsxLDc2NyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ0NyeXB0b1N5bW1ldHJpY0tleSA6PSBCdWxrIGVuY3J5cHRpb24gYWxnb3JpdGhtcyBzaG91bGQgYWxsIGJlCisgKgkJCQkJCQlpbXBsZW1lbnRlZCB2aWEgdGhpcyBpbnRlcmZhY2UKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8eHNlYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5LmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9FeGNlcHRpb24uaHBwPgorCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL0phbml0b3IuaHBwPgorWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFOworCisjaWYgZGVmaW5lZCAoSEFWRV9PUEVOU1NMKQorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitPcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5OjpPcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5KFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OlN5bW1ldHJpY0tleVR5cGUgdHlwZSkgOgorbV9rZXlUeXBlKHR5cGUpLAorbV9rZXlNb2RlKE1PREVfQ0JDKSwKK21fa2V5QnVmKCIiKSwKK21fa2V5TGVuKDApLAorbV9pbml0aWFsaXNlZChmYWxzZSkgeworCisJRVZQX0NJUEhFUl9DVFhfaW5pdCgmbV9jdHgpOworCW1fa2V5QnVmLmlzU2Vuc2l0aXZlKCk7CisKK30KKworT3BlblNTTENyeXB0b1N5bW1ldHJpY0tleTo6fk9wZW5TU0xDcnlwdG9TeW1tZXRyaWNLZXkoKSB7CisKKwkvLyBDbGVhbiB1cCB0aGUgY29udGV4dAorCisJRVZQX0NJUEhFUl9DVFhfY2xlYW51cCgmbV9jdHgpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEJhc2ljIEtleSBpbnRlcmZhY2UgbWV0aG9kcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6U3ltbWV0cmljS2V5VHlwZSBPcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5OjpnZXRTeW1tZXRyaWNLZXlUeXBlKCkgY29uc3QgeworCisJcmV0dXJuIG1fa2V5VHlwZTsKKworfQorCitjb25zdCBYTUxDaCAqIE9wZW5TU0xDcnlwdG9TeW1tZXRyaWNLZXk6OmdldFByb3ZpZGVyTmFtZSgpIGNvbnN0IHsKKworCXJldHVybiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJQUk9WT3BlblNTTDsKKworfQorCitYU0VDQ3J5cHRvS2V5ICogT3BlblNTTENyeXB0b1N5bW1ldHJpY0tleTo6Y2xvbmUoKSBjb25zdCB7CisKKwlPcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5ICogcmV0OworCisJWFNFQ25ldyhyZXQsIE9wZW5TU0xDcnlwdG9TeW1tZXRyaWNLZXkobV9rZXlUeXBlKSk7CisJcmV0LT5tX2tleU1vZGUgPSBtX2tleU1vZGU7CisJcmV0LT5tX2tleUxlbiA9IG1fa2V5TGVuOworCXJldC0+bV9rZXlCdWYgPSBtX2tleUJ1ZjsKKworCXJldHVybiByZXQ7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBTdG9yZSB0aGUga2V5IHZhbHVlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIE9wZW5TU0xDcnlwdG9TeW1tZXRyaWNLZXk6OnNldEtleShjb25zdCB1bnNpZ25lZCBjaGFyICoga2V5LCB1bnNpZ25lZCBpbnQga2V5TGVuKSB7CisKKwltX2tleUJ1Zi5zYk1lbWNweUluKGtleSwga2V5TGVuKTsKKwltX2tleUxlbiA9IGtleUxlbjsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIERlY3J5cHQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2ludCBPcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5OjpkZWNyeXB0Q3R4SW5pdChjb25zdCB1bnNpZ25lZCBjaGFyICogaXYpIHsKKworCS8vIFJldHVybnMgYW1vdW50IG9mIElWIGRhdGEgdXNlZCAoaW4gYnl0ZXMpCisJLy8gU2V0cyBtX2luaXRpYWxpc2VkIGlmZiB0aGUga2V5IGlzIE9LIGFuZCB0aGUgSVYgaXMgT0suCisKKwlpZiAobV9pbml0aWFsaXNlZCkKKwkJcmV0dXJuIDA7CisKKwlpZiAobV9rZXlMZW4gPT0gMCkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6U3ltbWV0cmljRXJyb3IsCisJCQkiT3BlblNTTDpTeW1tZXRyaWNLZXkgLSBDYW5ub3QgaW5pdGlhbGlzZSB3aXRob3V0IGtleSIpOyAKKworCX0KKworCS8vIFNldCB1cCB0aGUgY29udGV4dCBhY2NvcmRpbmcgdG8gdGhlIHJlcXVpcmVkIGNpcGhlciB0eXBlCisKKwlzd2l0Y2ggKG1fa2V5VHlwZSkgeworCisJY2FzZSAoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZXzNERVNfMTkyKSA6CisKKwkJLy8gQSAzREVTIGtleQorCisJCWlmIChtX2tleU1vZGUgPT0gTU9ERV9DQkMpIHsKKworCQkJaWYgKGl2ID09IE5VTEwpIHsKKworCQkJCXJldHVybiAwOwkvLyBDYW5ub3QgaW5pdGlhbGlzZSB3aXRob3V0IGFuIElWCisKKwkJCX0KKworCQkJLyogRG8gbm90IHVzZSAiX2V4IiBjYWxscyB5ZXQgLSBhcyB3YW50IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CisJCQkgICB3aXRoIDAuOS42ICovCisKKyNpZiBkZWZpbmVkKFhTRUNfT1BFTlNTTF9DT05TVF9CVUZGRVJTKQorCQkJRVZQX0RlY3J5cHRJbml0KCZtX2N0eCwgRVZQX2Rlc19lZGUzX2NiYygpLG1fa2V5QnVmLnJhd0J1ZmZlcigpLCBpdik7CisjZWxzZQorCQkJRVZQX0RlY3J5cHRJbml0KCZtX2N0eCwgRVZQX2Rlc19lZGUzX2NiYygpLCh1bnNpZ25lZCBjaGFyICopIG1fa2V5QnVmLnJhd0J1ZmZlcigpLCAodW5zaWduZWQgY2hhciAqKSBpdik7CisjZW5kaWYKKwkJCW1faXZTaXplID0gODsKKwkJfQorCQllbHNlIHsKKyNpZiBkZWZpbmVkKFhTRUNfT1BFTlNTTF9DT05TVF9CVUZGRVJTKQorCQkJRVZQX0RlY3J5cHRJbml0KCZtX2N0eCwgRVZQX2Rlc19lZGUzKCksIG1fa2V5QnVmLnJhd0J1ZmZlcigpLCBOVUxMKTsKKyNlbHNlCisJCQlFVlBfRGVjcnlwdEluaXQoJm1fY3R4LCBFVlBfZGVzX2VkZTMoKSwgKHVuc2lnbmVkIGNoYXIgKikgbV9rZXlCdWYucmF3QnVmZmVyKCksIE5VTEwpOworI2VuZGlmCisJCQltX2l2U2l6ZSA9IDA7CisJCX0KKworCisJCW1fYmxvY2tTaXplID0gODsKKwkJYnJlYWs7CisKKyNpZiBkZWZpbmVkIChYU0VDX09QRU5TU0xfSEFWRV9BRVMpCisKKwljYXNlIChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfQUVTXzEyOCkgOgorCisJCS8vIEFuIEFFUyBrZXkKKworCQlpZiAobV9rZXlNb2RlID09IE1PREVfQ0JDKSB7CisKKwkJCWlmIChpdiA9PSBOVUxMKSB7CisKKwkJCQlyZXR1cm4gMDsJLy8gQ2Fubm90IGluaXRpYWxpc2Ugd2l0aG91dCBhbiBJVgorCisJCQl9CisKKwkJCUVWUF9EZWNyeXB0SW5pdF9leCgmbV9jdHgsIEVWUF9hZXNfMTI4X2NiYygpLCBOVUxMLCBtX2tleUJ1Zi5yYXdCdWZmZXIoKSwgaXYpOworCisJCX0KKwkJZWxzZSB7CisKKwkJCUVWUF9EZWNyeXB0SW5pdF9leCgmbV9jdHgsIEVWUF9hZXNfMTI4X2VjYigpLCBOVUxMLCBtX2tleUJ1Zi5yYXdCdWZmZXIoKSwgTlVMTCk7CisKKwkJfQorCisJCW1fYmxvY2tTaXplID0gMTY7CisJCWJyZWFrOworCQorCWNhc2UgKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV9BRVNfMTkyKSA6CisKKwkJLy8gQW4gQUVTIGtleQorCisJCWlmIChtX2tleU1vZGUgPT0gTU9ERV9DQkMpIHsKKworCQkJaWYgKGl2ID09IE5VTEwpIHsKKworCQkJCXJldHVybiAwOwkvLyBDYW5ub3QgaW5pdGlhbGlzZSB3aXRob3V0IGFuIElWCisKKwkJCX0KKworCQkJRVZQX0RlY3J5cHRJbml0X2V4KCZtX2N0eCwgRVZQX2Flc18xOTJfY2JjKCksIE5VTEwsIG1fa2V5QnVmLnJhd0J1ZmZlcigpLCBpdik7CisKKwkJfQorCQllbHNlIHsKKworCQkJRVZQX0RlY3J5cHRJbml0X2V4KCZtX2N0eCwgRVZQX2Flc18xOTJfZWNiKCksIE5VTEwsIG1fa2V5QnVmLnJhd0J1ZmZlcigpLCBOVUxMKTsKKworCQl9CisKKwkJbV9ibG9ja1NpemUgPSAxNjsKKwkJYnJlYWs7CisKKwljYXNlIChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfQUVTXzI1NikgOgorCisJCS8vIEFuIEFFUyBrZXkKKworCQlpZiAobV9rZXlNb2RlID09IE1PREVfQ0JDKSB7CisKKwkJCWlmIChpdiA9PSBOVUxMKSB7CisKKwkJCQlyZXR1cm4gMDsJLy8gQ2Fubm90IGluaXRpYWxpc2Ugd2l0aG91dCBhbiBJVgorCisJCQl9CisKKwkJCUVWUF9EZWNyeXB0SW5pdF9leCgmbV9jdHgsIEVWUF9hZXNfMjU2X2NiYygpLCBOVUxMLCBtX2tleUJ1Zi5yYXdCdWZmZXIoKSwgaXYpOworCisJCX0KKwkJZWxzZSB7CisKKwkJCUVWUF9EZWNyeXB0SW5pdF9leCgmbV9jdHgsIEVWUF9hZXNfMjU2X2VjYigpLCBOVUxMLCBtX2tleUJ1Zi5yYXdCdWZmZXIoKSwgTlVMTCk7CisKKwkJfQorCisKKwkJbV9ibG9ja1NpemUgPSAxNjsKKworCQlicmVhazsKKyNlbHNlIAorCisJY2FzZSAoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZX0FFU18xMjgpIDoKKwljYXNlIChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfQUVTXzE5MikgOgorCWNhc2UgKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV9BRVNfMjU2KSA6CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpVbnN1cHBvcnRlZEFsZ29yaXRobSwKKwkJCSAiT3BlblNTTDpTeW1tZXRyaWNLZXkgLSBBRVMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIHZlcnNpb24gb2YgT3BlblNTTCIpOworCisjZW5kaWYgLyogWFNFQ19PUEVOU1NMX0hBVkVfQUVTICovCisJCisJZGVmYXVsdCA6CisKKwkJLy8gQ2Fubm90IGRvIHRoaXMgd2l0aG91dCBhbiBJVgorCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlN5bW1ldHJpY0Vycm9yLAorCQkJIk9wZW5TU0w6U3ltbWV0cmljS2V5IC0gVW5rbm93biBrZXkgdHlwZSIpOyAKKworCX0KKworCS8vIFNldHVwIGl2U2l6ZQorCW1faXZTaXplID0gKG1fa2V5TW9kZSA9PSBNT0RFX0NCQyA/IG1fYmxvY2tTaXplIDogMCk7CisKKwkvLyBSZXNldCBzb21lIHBhcmFtZXRlcnMKKwltX2luaXRpYWxpc2VkID0gdHJ1ZTsKKwltX2J5dGVzSW5MYXN0QmxvY2sgPSAwOworCisJLy8gRGlzYWJsZSBPcGVuU1NMIHBhZGRpbmcgLSBUaGUgaW50ZXJvcCBzYW1wbGVzIGhhdmUgYnJva2VuIFBLQ1MgcGFkZGluZyAtIEFBUkdISAorCisjaWYgZGVmaW5lZCAoWFNFQ19PUEVOU1NMX0NBTlNFVF9QQURESU5HKQorCUVWUF9DSVBIRVJfQ1RYX3NldF9wYWRkaW5nKCZtX2N0eCwgMCk7CisjZW5kaWYKKworCS8vIFJldHVybiBudW1iZXIgb2YgYnl0ZXMgY2hld2VkIHVwIGJ5IElWCisJcmV0dXJuIG1faXZTaXplOworfQorCisKK2Jvb2wgT3BlblNTTENyeXB0b1N5bW1ldHJpY0tleTo6ZGVjcnlwdEluaXQoYm9vbCBkb1BhZCwgCisJCQkJCQkJCQkJCVN5bW1ldHJpY0tleU1vZGUgbW9kZSwKKwkJCQkJCQkJCQkJY29uc3QgdW5zaWduZWQgY2hhciAqIGl2KSB7CisKKwltX2RvUGFkID0gZG9QYWQ7CisJbV9rZXlNb2RlID0gbW9kZTsKKwltX2luaXRpYWxpc2VkID0gZmFsc2U7CisJZGVjcnlwdEN0eEluaXQoaXYpOworCXJldHVybiB0cnVlOworCit9CisKK3Vuc2lnbmVkIGludCBPcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5OjpkZWNyeXB0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBpbkJ1ZiwgCisJCQkJCQkJCSB1bnNpZ25lZCBjaGFyICogcGxhaW5CdWYsIAorCQkJCQkJCQkgdW5zaWduZWQgaW50IGluTGVuZ3RoLAorCQkJCQkJCQkgdW5zaWduZWQgaW50IG1heE91dExlbmd0aCkgeworCisKKworCS8vIE5PVEU6IFRoaXMgd29uJ3QgYWN0dWFsbHkgc3RvcCBPcGVuU1NMIGJsb3dpbmcgdGhlIGJ1ZmZlciwgc28gdGhlIG9udXMgaXMKKwkvLyBvbiB0aGUgY2FsbGVyLgorCisjaWYgMAorCisJLyogbm9ybWFsbHkgY29tbWVudGVkIG91dCBjb2RlIHRvIGRldGVybWluZSBlbmRpYW4gcHJvYmxlbXMgKi8KKwl1bnNpZ25lZCBpbnQgaTsKKwl1bnNpZ25lZCBjaGFyIGVbMjA0OF07CisJdW5zaWduZWQgY2hhciAqIGluQnVmMSA9ICh1bnNpZ25lZCBjaGFyICopIGluQnVmOworCWlmIChpbkxlbmd0aCA8IDIwNDgpIHsKKwkJbWVtY3B5KGUsIGluQnVmLCBpbkxlbmd0aCk7CisJCWZvciAoaSA9IDA7IGkgPCBpbkxlbmd0aDsrK2kpIHsKKwkJCWluQnVmMVtpXSA9IGVbaW5MZW5ndGggLSAxIC0gaV07CisJCX0KKwl9CisKKyNlbmRpZgorCisJdW5zaWduZWQgaW50IG9mZnNldCA9IDA7CisJaWYgKCFtX2luaXRpYWxpc2VkKSB7CisJCW9mZnNldCA9IGRlY3J5cHRDdHhJbml0KGluQnVmKTsKKwkJaWYgKG9mZnNldCA+IGluTGVuZ3RoKSB7CisJCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlN5bW1ldHJpY0Vycm9yLAorCQkJIk9wZW5TU0w6U3ltbWV0cmljS2V5IC0gTm90IGVub3VnaCBkYXRhIHBhc3NlZCBpbiB0byBnZXQgSVYiKTsKKwkJfQorCX0KKworCWludCBvdXRsID0gbWF4T3V0TGVuZ3RoOworCisJaWYgKGluTGVuZ3RoIC0gb2Zmc2V0ICsgbV9ieXRlc0luTGFzdEJsb2NrID4gbWF4T3V0TGVuZ3RoKSB7CisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6U3ltbWV0cmljRXJyb3IsCisJCQkiT3BlblNTTFN5bW1ldHJpY0tleTo6ZGVjcnlwdCAtIE5vdCBlbm91Z2ggc3BhY2UgaW4gb3V0cHV0IGJ1ZmZlciIpOworCX0KKworI2lmIGRlZmluZWQgKFhTRUNfT1BFTlNTTF9DT05TVF9CVUZGRVJTKQorCWlmIChFVlBfRGVjcnlwdFVwZGF0ZSgmbV9jdHgsICZwbGFpbkJ1ZlttX2J5dGVzSW5MYXN0QmxvY2tdLCAmb3V0bCwgJmluQnVmW29mZnNldF0sIGluTGVuZ3RoIC0gb2Zmc2V0KSA9PSAwKSB7CisjZWxzZQorCWlmIChFVlBfRGVjcnlwdFVwZGF0ZSgmbV9jdHgsICZwbGFpbkJ1ZlttX2J5dGVzSW5MYXN0QmxvY2tdLCAmb3V0bCwgKHVuc2lnbmVkIGNoYXIgKikgJmluQnVmW29mZnNldF0sIGluTGVuZ3RoIC0gb2Zmc2V0KSA9PSAwKSB7CisjZW5kaWYKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCSJPcGVuU1NMOlN5bW1ldHJpY0tleSAtIEVycm9yIGR1cmluZyBPcGVuU1NMIGRlY3J5cHQiKTsgCisKKwl9CisKKwkvLyBTdG9yZSB0aGUgbGFzdCBibG9jayBpZiB3ZSBhcmUgcGFkZGluZworCWlmIChtX2RvUGFkICYmIG1fYmxvY2tTaXplID4gMCAmJiBvdXRsID49IG1fYmxvY2tTaXplKSB7CisKKwkJLy8gT3V0cHV0IHdpbGwgYWx3YXlzIGJlICphdCBsZWFzdCogdGhlIGJsb2Nrc2l6ZQorCisJCS8vIENvcHkgdGhlIHByZXZpb3VzIGxhc3QgYmxvY2sgaW50byB0aGUgc3RhcnQgb2YgdGhlIG91dHB1dCBidWZmZXIKKwkJbWVtY3B5KHBsYWluQnVmLCBtX2xhc3RCbG9jaywgbV9ieXRlc0luTGFzdEJsb2NrKTsKKworCQkvLyBDb3B5IHRoZSB0YWlsIGludG8gdGhlIGJ1ZmZlcgorCQltZW1jcHkobV9sYXN0QmxvY2ssICZwbGFpbkJ1ZltvdXRsICsgbV9ieXRlc0luTGFzdEJsb2NrIC0gbV9ibG9ja1NpemVdLCBtX2Jsb2NrU2l6ZSk7CisKKwkJb3V0bCA9IG91dGwgKyBtX2J5dGVzSW5MYXN0QmxvY2sgLSBtX2Jsb2NrU2l6ZTsKKwkJbV9ieXRlc0luTGFzdEJsb2NrID0gbV9ibG9ja1NpemU7CisKKwl9CisKKwlyZXR1cm4gb3V0bDsKKworfQorCit1bnNpZ25lZCBpbnQgT3BlblNTTENyeXB0b1N5bW1ldHJpY0tleTo6ZGVjcnlwdEZpbmlzaCh1bnNpZ25lZCBjaGFyICogcGxhaW5CdWYsCisJCQkJCQkJCQkJCQkJICB1bnNpZ25lZCBpbnQgbWF4T3V0TGVuZ3RoKSB7CisKKwlpbnQgb3V0bCA9IG1heE91dExlbmd0aDsKKwltX2luaXRpYWxpc2VkID0gZmFsc2U7CisKKyNpZiBkZWZpbmVkIChYU0VDX09QRU5TU0xfQ0FOU0VUX1BBRERJTkcpCisKKwlpZiAoRVZQX0RlY3J5cHRGaW5hbCgmbV9jdHgsIHBsYWluQnVmLCAmb3V0bCkgPT0gMCkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6U3ltbWV0cmljRXJyb3IsCisJCQkiT3BlblNTTDpTeW1tZXRyaWNLZXkgLSBFcnJvciBkdXJpbmcgT3BlblNTTCBkZWNyeXB0IGZpbmFsaXNhdGlvbiIpOyAKKworCX0KKwkKKwlpZiAob3V0bCA+IDApIHsKKwkKKwkJLy8gU2hvdWxkIG5ldmVyIHNlZSBhbnkgYnl0ZXMgb3V0cHV0LCBhcyB3ZSBhcmUgbm90IHBhZGRpbmcKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlN5bW1ldHJpY0Vycm9yLAorCQkJIk9wZW5TU0w6U3ltbWV0cmljS2V5IC0gVW5leHBlY3RlZGx5IHJlY2lldmVkIGJ5dGVzIGZyb20gRVZQX0RlY3J5cHRGaW5hbF9leCIpOyAKKworCX0KKworCS8vIENhbGN1bGF0ZSBhbnkgcGFkZGluZyBpc3N1ZXMKKwlpZiAobV9kb1BhZCAmJiBtX2J5dGVzSW5MYXN0QmxvY2sgPT0gbV9ibG9ja1NpemUpIHsKKworCQlvdXRsID0gbV9ibG9ja1NpemUgLSBtX2xhc3RCbG9ja1ttX2Jsb2NrU2l6ZSAtIDFdOworCisJCWlmIChvdXRsID4gbV9ibG9ja1NpemUgfHwgb3V0bCA8IDApIHsKKwkJCQorCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCQkiT3BlblNTTDpTeW1tZXRyaWNLZXk6OmRlY3J5cHRGaW5pc2ggLSBPdXQgb2YgcmFuZ2UgcGFkZGluZyB2YWx1ZSBpbiBmaW5hbCBibG9jayIpOyAKKwkKKwkJfQorCisJCW1lbWNweShwbGFpbkJ1ZiwgbV9sYXN0QmxvY2ssIG91dGwpOworCisJfQorCisJaWYgKCh1bnNpZ25lZCBpbnQpIG91dGwgPiBtYXhPdXRMZW5ndGgpIHsKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCSJPcGVuU1NMU3ltbWV0cmljS2V5OjpkZWNyeXB0RmluaXNoIC0gKipXQVJOSU5HKiogLSBQbGFpbnRleHQgb3V0cHV0ID4gbWF4T3V0TGVuZ3RoISIpOyAKKwl9CisKKwlyZXR1cm4gb3V0bDsKKworI2Vsc2UKKworCS8qIFdvcmtpbmcgd2l0aCBhIHZlcnNpb24gb2YgT3BlblNTTCB0aGF0ICphbHdheXMqIHBlcmZvcm1zIHBhZGRpbmcKKwkgICBzbyB3ZSBuZWVkIHRvIHdvcmsgYXJvdW5kIGl0ICovCisJdW5zaWduZWQgY2hhciAqc2NyUGxhaW5CdWY7CisJdW5zaWduZWQgY2hhciAqY2lwaGVyQnVmOworCXNjclBsYWluQnVmID0gbmV3IHVuc2lnbmVkIGNoYXJbMyAqIG1fYmxvY2tTaXplXTsKKwlBcnJheUphbml0b3I8dW5zaWduZWQgY2hhcj4gal9zY3JQbGFpbkJ1ZihzY3JQbGFpbkJ1Zik7CisJY2lwaGVyQnVmID0gbmV3IHVuc2lnbmVkIGNoYXJbbV9ibG9ja1NpemVdOworCUFycmF5SmFuaXRvcjx1bnNpZ25lZCBjaGFyPiBqX2NpcGhlckJ1ZihjaXBoZXJCdWYpOworCisJLyogWmVyb2lzZSB0aGUgY2lwaGVyIGJ1ZmZlciAqLworCW1lbXNldChjaXBoZXJCdWYsIDAsIG1fYmxvY2tTaXplKTsKKworCXVuc2lnbmVkIGludCBvZmZzZXQgPSAwOworCisJLyogR2V0IGFueSBwcmV2aW91cyBieXRlcyBmcm9tIHRoZSBtX2xhc3RCbG9jayAqLworCWlmIChtX2J5dGVzSW5MYXN0QmxvY2sgPiAwICYmIG1fYnl0ZXNJbkxhc3RCbG9jayA8PSBtX2Jsb2NrU2l6ZSkgeworCQltZW1jcHkoc2NyUGxhaW5CdWYsIG1fbGFzdEJsb2NrLCBtX2J5dGVzSW5MYXN0QmxvY2spOworCQlvZmZzZXQgPSBtX2J5dGVzSW5MYXN0QmxvY2s7CisJfQorCisJb3V0bCA9IG1fYmxvY2tTaXplOworCisJLyogVGhpcyBpcyByZWFsbHkgdWdseSAtIGJ1dCB3ZSBoYXZlIHRvIHRyaWNrIE9wZW5TU0wgaW50byB0aGlua2luZyB0aGVyZQorICAgICAgIGlzIG1vcmUsIHNvIHRoYXQgaXQgc2VuZHMgdXMgdGhlIGxhc3RzIGJsb2NrIHdpdGggdGhlIHBhZGRpbmcgaW4gaXQuCisgICAgICAgV2UgY2FuIHRoZW4gY2xlYW4gdGhhdCB1cCBvdXJzZWx2ZXMKKwkqLworCisJaWYgKEVWUF9EZWNyeXB0VXBkYXRlKCZtX2N0eCwgJnNjclBsYWluQnVmW29mZnNldF0sICZvdXRsLCBjaXBoZXJCdWYsIG1fYmxvY2tTaXplKSA9PSAwKSB7CisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6U3ltbWV0cmljRXJyb3IsCisJCQkiT3BlblNTTDpTeW1tZXRyaWNLZXkgLSBFcnJvciBjZWNyeXB0aW5nIGZpbmFsIGJsb2NrIGR1cmluZyBPcGVuU1NMIik7CisJfSAKKworCW91dGwgKz0gb2Zmc2V0OworCisJaWYgKG1fZG9QYWQgJiYgb3V0bCA+IDApIHsKKworCQkvKiBTdHJpcCBhbnkgcGFkZGluZyAqLworCQlvdXRsIC09IHNjclBsYWluQnVmW291dGwgLSAxXTsKKworCQlpZiAob3V0bCA+ICgyICogbV9ibG9ja1NpemUpIHx8IG91dGwgPCAwKSB7CisJCQkKKwkJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6U3ltbWV0cmljRXJyb3IsCisJCQkJIk9wZW5TU0w6U3ltbWV0cmljS2V5OjpkZWNyeXB0RmluaXNoIC0gT3V0IG9mIHJhbmdlIHBhZGRpbmcgdmFsdWUgaW4gZmluYWwgYmxvY2siKTsgCisJCisJCX0KKworCX0KKworCWlmIChvdXRsID4gKGludCkgbWF4T3V0TGVuZ3RoKSB7CisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6U3ltbWV0cmljRXJyb3IsCisJCQkiT3BlblNTTFN5bW1ldHJpY0tleTo6ZGVjcnlwdEZpbmlzaCAtICoqV0FSTklORyoqIC0gUGxhaW50ZXh0IG91dHB1dCA+IG1heE91dExlbmd0aCEiKTsgCisJfQorCisJaWYgKG91dGwgPiAwKSB7CisKKwkJbWVtY3B5KHBsYWluQnVmLCBzY3JQbGFpbkJ1Ziwgb3V0bCk7CisKKwl9CisKKwlyZXR1cm4gb3V0bDsKKyNlbmRpZgorCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgRW5jcnlwdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYm9vbCBPcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5OjplbmNyeXB0SW5pdChib29sIGRvUGFkLCAKKwkJCQkJCQkJCQkJU3ltbWV0cmljS2V5TW9kZSBtb2RlLAorCQkJCQkJCQkJCQljb25zdCB1bnNpZ25lZCBjaGFyICogaXYpIHsKKworCWlmIChtX2luaXRpYWxpc2VkID09IHRydWUpCisJCXJldHVybiB0cnVlOworCisJbV9kb1BhZCA9IGRvUGFkOworCW1fa2V5TW9kZSA9IG1vZGU7CisJCisJaWYgKG1fa2V5TGVuID09IDApIHsKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlN5bW1ldHJpY0Vycm9yLAorCQkJIk9wZW5TU0w6U3ltbWV0cmljS2V5IC0gQ2Fubm90IGluaXRpYWxpc2Ugd2l0aG91dCBrZXkiKTsgCisKKwl9CisKKwkvLyBEbyBzb21lIHBhcmFtZXRlciBpbml0aWFsaXNhdGlvbgorCW1faW5pdGlhbGlzZWQgPSB0cnVlOworCW1fYnl0ZXNJbkxhc3RCbG9jayA9IDA7CisKKwkvLyBTZXQgdXAgdGhlIGNvbnRleHQgYWNjb3JkaW5nIHRvIHRoZSByZXF1aXJlZCBjaXBoZXIgdHlwZQorCisJY29uc3QgdW5zaWduZWQgY2hhciAqIHVzZWRJViA9IE5VTEw7CisJdW5zaWduZWQgY2hhciBnZW5JVlsyNTZdOworCisJLy8gVGVsbCB0aGUgbGlicmFyeSB0aGF0IHRoZSBJViBzdGlsbCBoYXMgdG8gYmUgc2VudAorCisJbV9pdlNlbnQgPSBmYWxzZTsKKworCXN3aXRjaCAobV9rZXlUeXBlKSB7CisKKwljYXNlIChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfM0RFU18xOTIpIDoKKworCQkvLyBBIDNERVMga2V5CisKKwkJaWYgKG1fa2V5TW9kZSA9PSBNT0RFX0NCQykgeworCisJCQlpZiAoaXYgPT0gTlVMTCkgeworCQkJCQorCQkJCWJvb2wgcmVzID0gKChSQU5EX3N0YXR1cygpID09IDEpICYmIChSQU5EX2J5dGVzKGdlbklWLCA4KSA9PSAxKSk7CisJCQkJaWYgKHJlcyA9PSBmYWxzZSkgeworCQkJCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlN5bW1ldHJpY0Vycm9yLAorCQkJCQkJIk9wZW5TU0w6U3ltbWV0cmljS2V5IC0gRXJyb3IgZ2VuZXJhdGluZyByYW5kb20gSVYiKTsKKwkJCQl9CisKKwkJCQl1c2VkSVYgPSBnZW5JVjsKKworCQkJfQorCQkJZWxzZQorCQkJCXVzZWRJViA9IGl2OworCisjaWYgZGVmaW5lZCAoWFNFQ19PUEVOU1NMX0NPTlNUX0JVRkZFUlMpCisJCQlFVlBfRW5jcnlwdEluaXQoJm1fY3R4LCBFVlBfZGVzX2VkZTNfY2JjKCksIG1fa2V5QnVmLnJhd0J1ZmZlcigpLCB1c2VkSVYpOworI2Vsc2UKKwkJCUVWUF9FbmNyeXB0SW5pdCgmbV9jdHgsIEVWUF9kZXNfZWRlM19jYmMoKSwgKHVuc2lnbmVkIGNoYXIgKikgbV9rZXlCdWYucmF3QnVmZmVyKCksICh1bnNpZ25lZCBjaGFyICopIHVzZWRJVik7CisjZW5kaWYKKwkJfQorCQllbHNlIHsKKyNpZiBkZWZpbmVkIChYU0VDX09QRU5TU0xfQ09OU1RfQlVGRkVSUykKKwkJCUVWUF9FbmNyeXB0SW5pdCgmbV9jdHgsIEVWUF9kZXNfZWRlM19lY2IoKSwgbV9rZXlCdWYucmF3QnVmZmVyKCksIE5VTEwpOworI2Vsc2UKKwkJCUVWUF9FbmNyeXB0SW5pdCgmbV9jdHgsIEVWUF9kZXNfZWRlMygpLCAodW5zaWduZWQgY2hhciAqKSBtX2tleUJ1Zi5yYXdCdWZmZXIoKSwgTlVMTCk7CisjZW5kaWYKKwkJfQorCisKKwkJbV9ibG9ja1NpemUgPSA4OworCQlicmVhazsKKworI2lmIGRlZmluZWQgKFhTRUNfT1BFTlNTTF9IQVZFX0FFUykKKworCWNhc2UgKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV9BRVNfMTI4KSA6CisKKwkJLy8gQW4gQUVTIGtleQorCisJCWlmIChtX2tleU1vZGUgPT0gTU9ERV9DQkMpIHsKKworCQkJaWYgKGl2ID09IE5VTEwpIHsKKwkJCQkKKwkJCQlib29sIHJlcyA9ICgoUkFORF9zdGF0dXMoKSA9PSAxKSAmJiAoUkFORF9ieXRlcyhnZW5JViwgMTYpID09IDEpKTsKKwkJCQlpZiAocmVzID09IGZhbHNlKSB7CisJCQkJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6U3ltbWV0cmljRXJyb3IsCisJCQkJCQkiT3BlblNTTDpTeW1tZXRyaWNLZXkgLSBFcnJvciBnZW5lcmF0aW5nIHJhbmRvbSBJViIpOworCQkJCX0KKworCQkJCXVzZWRJViA9IGdlbklWOworCisJCQl9CisJCQllbHNlCisJCQkJdXNlZElWID0gaXY7CisKKwkJCUVWUF9FbmNyeXB0SW5pdF9leCgmbV9jdHgsIEVWUF9hZXNfMTI4X2NiYygpLCBOVUxMLCBtX2tleUJ1Zi5yYXdCdWZmZXIoKSwgdXNlZElWKTsKKwkJfQorCQllbHNlIHsKKworCQkJRVZQX0VuY3J5cHRJbml0X2V4KCZtX2N0eCwgRVZQX2Flc18xMjhfZWNiKCksIE5VTEwsIG1fa2V5QnVmLnJhd0J1ZmZlcigpLCBOVUxMKTsKKworCQl9CisKKwkJbV9ibG9ja1NpemUgPSAxNjsKKwkJYnJlYWs7CisKKwljYXNlIChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfQUVTXzE5MikgOgorCisJCS8vIEFuIEFFUyBrZXkKKworCQlpZiAobV9rZXlNb2RlID09IE1PREVfQ0JDKSB7CisKKwkJCWlmIChpdiA9PSBOVUxMKSB7CisJCQkJCisJCQkJYm9vbCByZXMgPSAoKFJBTkRfc3RhdHVzKCkgPT0gMSkgJiYgKFJBTkRfYnl0ZXMoZ2VuSVYsIDE2KSA9PSAxKSk7CisJCQkJaWYgKHJlcyA9PSBmYWxzZSkgeworCQkJCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlN5bW1ldHJpY0Vycm9yLAorCQkJCQkJIk9wZW5TU0w6U3ltbWV0cmljS2V5IC0gRXJyb3IgZ2VuZXJhdGluZyByYW5kb20gSVYiKTsKKwkJCQl9CisKKwkJCQl1c2VkSVYgPSBnZW5JVjsKKworCQkJfQorCQkJZWxzZQorCQkJCXVzZWRJViA9IGl2OworCisJCQlFVlBfRW5jcnlwdEluaXRfZXgoJm1fY3R4LCBFVlBfYWVzXzE5Ml9jYmMoKSwgTlVMTCwgbV9rZXlCdWYucmF3QnVmZmVyKCksIHVzZWRJVik7CisKKwkJfQorCisJCWVsc2UgeworCisJCQlFVlBfRW5jcnlwdEluaXRfZXgoJm1fY3R4LCBFVlBfYWVzXzE5Ml9lY2IoKSwgTlVMTCwgbV9rZXlCdWYucmF3QnVmZmVyKCksIE5VTEwpOworCQl9CisKKwkJbV9ibG9ja1NpemUgPSAxNjsKKwkJYnJlYWs7CisKKwljYXNlIChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfQUVTXzI1NikgOgorCisJCS8vIEFuIEFFUyBrZXkKKworCQlpZiAobV9rZXlNb2RlID09IE1PREVfQ0JDKSB7CisJCQlpZiAoaXYgPT0gTlVMTCkgeworCQkJCQorCQkJCWJvb2wgcmVzID0gKChSQU5EX3N0YXR1cygpID09IDEpICYmIChSQU5EX2J5dGVzKGdlbklWLCAxNikgPT0gMSkpOworCQkJCWlmIChyZXMgPT0gZmFsc2UpIHsKKwkJCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCQkJCSJPcGVuU1NMOlN5bW1ldHJpY0tleSAtIEVycm9yIGdlbmVyYXRpbmcgcmFuZG9tIElWIik7CisJCQkJfQorCisJCQkJdXNlZElWID0gZ2VuSVY7CisKKwkJCX0KKwkJCWVsc2UKKwkJCQl1c2VkSVYgPSBpdjsKKworCQkJRVZQX0VuY3J5cHRJbml0X2V4KCZtX2N0eCwgRVZQX2Flc18yNTZfY2JjKCksIE5VTEwsIG1fa2V5QnVmLnJhd0J1ZmZlcigpLCB1c2VkSVYpOworCisJCX0KKwkJZWxzZSB7CisKKwkJCUVWUF9FbmNyeXB0SW5pdF9leCgmbV9jdHgsIEVWUF9hZXNfMjU2X2VjYigpLCBOVUxMLCBtX2tleUJ1Zi5yYXdCdWZmZXIoKSwgTlVMTCk7CisKKwkJfQorCisJCW1fYmxvY2tTaXplID0gMTY7CisJCWJyZWFrOworCisjZWxzZSAKKworCWNhc2UgKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV9BRVNfMTI4KSA6CisJY2FzZSAoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZX0FFU18xOTIpIDoKKwljYXNlIChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfQUVTXzI1NikgOgorCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6VW5zdXBwb3J0ZWRBbGdvcml0aG0sCisJCQkgIk9wZW5TU0w6U3ltbWV0cmljS2V5IC0gQUVTIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIE9wZW5TU0wiKTsKKworI2VuZGlmIC8qIFhTRUNfT1BFTlNTTF9IQVZFX0FFUyAqLworCisJZGVmYXVsdCA6CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCSJPcGVuU1NMOlN5bW1ldHJpY0tleSAtIFVua25vd24ga2V5IHR5cGUiKTsgCisKKwl9CisKKwkvLyBDbGVhciB1cCBhbnkgcmVhZCBwYWRkaW5nCisKKwlpZiAobV9rZXlNb2RlID09IE1PREVfQ0JDKSB7CisJCW1faXZTaXplID0gbV9ibG9ja1NpemU7CisJCW1lbWNweShtX2xhc3RCbG9jaywgdXNlZElWLCBtX2l2U2l6ZSk7CisJfQorCWVsc2UKKwkJbV9pdlNpemUgPSAwOworCisjaWYgZGVmaW5lZCAoWFNFQ19PUEVOU1NMX0NBTlNFVF9QQURESU5HKQorCS8vIFNldHVwIHBhZGRpbmcKKwlpZiAobV9kb1BhZCkgeworCQlFVlBfQ0lQSEVSX0NUWF9zZXRfcGFkZGluZygmbV9jdHgsIDEpOworCX0KKwllbHNlIHsKKwkJRVZQX0NJUEhFUl9DVFhfc2V0X3BhZGRpbmcoJm1fY3R4LCAwKTsKKwl9CisjZW5kaWYKKworCXJldHVybiB0cnVlOworCit9CisKK3Vuc2lnbmVkIGludCBPcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5OjplbmNyeXB0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBpbkJ1ZiwgCisJCQkJCQkJCSB1bnNpZ25lZCBjaGFyICogY2lwaGVyQnVmLCAKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBpbkxlbmd0aCwKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBtYXhPdXRMZW5ndGgpIHsKKworCWlmIChtX2luaXRpYWxpc2VkID09IGZhbHNlKSB7CisKKwkJZW5jcnlwdEluaXQoKTsKKworCX0KKworCS8vIE5PVEU6IFRoaXMgd29uJ3QgYWN0dWFsbHkgc3RvcCBPcGVuU1NMIGJsb3dpbmcgdGhlIGJ1ZmZlciwgc28gdGhlIG9udXMgaXMKKwkvLyBvbiB0aGUgY2FsbGVyLgorCisJdW5zaWduZWQgaW50IG9mZnNldCA9IDA7CisJaWYgKG1faXZTZW50ID09IGZhbHNlICYmIG1faXZTaXplID4gMCkgeworCisJCW1lbWNweShjaXBoZXJCdWYsIG1fbGFzdEJsb2NrLCBtX2l2U2l6ZSk7CisJCW1faXZTZW50ID0gdHJ1ZTsKKworCQlvZmZzZXQgPSBtX2l2U2l6ZTsKKworCX0KKworCWludCBvdXRsID0gbWF4T3V0TGVuZ3RoIC0gb2Zmc2V0OworCisJaWYgKGluTGVuZ3RoICsgb2Zmc2V0ID4gbWF4T3V0TGVuZ3RoKSB7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCSJPcGVuU1NMOlN5bW1ldHJpY0tleSAtIE5vdCBlbm91Z2ggc3BhY2UgaW4gb3V0cHV0IGJ1ZmZlciBmb3IgZW5jcnlwdCIpOyAKKworCX0KKyNpZiBkZWZpbmVkIChYU0VDX09QRU5TU0xfQ09OU1RfQlVGRkVSUykKKwlpZiAoRVZQX0VuY3J5cHRVcGRhdGUoJm1fY3R4LCAmY2lwaGVyQnVmW29mZnNldF0sICZvdXRsLCBpbkJ1ZiwgaW5MZW5ndGgpID09IDApIHsKKyNlbHNlCisJaWYgKEVWUF9FbmNyeXB0VXBkYXRlKCZtX2N0eCwgJmNpcGhlckJ1ZltvZmZzZXRdLCAmb3V0bCwgKHVuc2lnbmVkIGNoYXIgKikgaW5CdWYsIGluTGVuZ3RoKSA9PSAwKSB7CisjZW5kaWYKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlN5bW1ldHJpY0Vycm9yLAorCQkJIk9wZW5TU0w6U3ltbWV0cmljS2V5IC0gRXJyb3IgZHVyaW5nIE9wZW5TU0wgZW5jcnlwdCIpOyAKKworCX0KKworCXJldHVybiBvdXRsICsgb2Zmc2V0OworCit9CisKK3Vuc2lnbmVkIGludCBPcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5OjplbmNyeXB0RmluaXNoKHVuc2lnbmVkIGNoYXIgKiBjaXBoZXJCdWYsCisJCQkJCQkJCQkJCQkJICB1bnNpZ25lZCBpbnQgbWF4T3V0TGVuZ3RoKSB7CisKKwlpbnQgb3V0bCA9IG1heE91dExlbmd0aDsKKwltX2luaXRpYWxpc2VkID0gZmFsc2U7CisKKwlpZiAoRVZQX0VuY3J5cHRGaW5hbCgmbV9jdHgsIGNpcGhlckJ1ZiwgJm91dGwpID09IDApIHsKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlN5bW1ldHJpY0Vycm9yLAorCQkgICJPcGVuU1NMU3ltbWV0cmljS2V5OjplbmNyeXB0RmluaXNoIC0gRXJyb3IgZHVyaW5nIE9wZW5TU0wgZGVjcnlwdCBmaW5hbGlzYXRpb24iKTsgCisKKwl9CisKKwlpZiAoKHVuc2lnbmVkIGludCkgb3V0bCA+IG1heE91dExlbmd0aCkgeworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlN5bW1ldHJpY0Vycm9yLAorCQkJIk9wZW5TU0xTeW1tZXRyaWNLZXk6OmVuY3J5cHRGaW5pc2ggLSAqKldBUk5JTkcqKiAtIENpcGhlcm91dHB1dCA+IG1heE91dExlbmd0aCEiKTsgCisJfQorCQorI2lmICFkZWZpbmVkIChYU0VDX09QRU5TU0xfQ0FOU0VUX1BBRERJTkcpCisJaWYgKCFtX2RvUGFkKSB7CisKKwkJaWYgKG91dGwgPCBtX2Jsb2NrU2l6ZSkgeworCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCSAgICJPcGVuU1NMU3ltbWV0cmljS2V5OjplbmNyeXB0RmluaXNoIC0gY2Fubm90IHJlbW92ZSBwYWRkaW5nISIpOyAKKwkJfQorCisJCW91dGwgLT0gbV9ibG9ja1NpemU7CisKKwl9CisKKyNlbmRpZgorCisJcmV0dXJuIG91dGw7CisKK30KKworI2VuZGlmIC8qIEhBVkVfT1BFTlNTTCAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b1N5bW1ldHJpY0tleS5ocHAgYi9jL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTlkNzZlCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b1N5bW1ldHJpY0tleS5ocHAKQEAgLTAsMCArMSwzMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNDcnlwdG9TeW1tZXRyaWNLZXkgOj0gQnVsayBlbmNyeXB0aW9uIGFsZ29yaXRobXMgc2hvdWxkIGFsbCBiZQorICoJCQkJCQkJaW1wbGVtZW50ZWQgdmlhIHRoaXMgaW50ZXJmYWNlCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisKKworI2lmbmRlZiBPUEVOU1NMQ1JZUFRPU1lNTUVUUklDS0VZX0lOQ0xVREUKKyNkZWZpbmUgT1BFTlNTTENSWVBUT1NZTU1FVFJJQ0tFWV9JTkNMVURFCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b1N5bW1ldHJpY0tleS5ocHA+CisKKyNpZiBkZWZpbmVkIChIQVZFX09QRU5TU0wpCisKKy8vIE9wZW5TU0wgSW5jbHVkZXMKKworI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+CisKKyNkZWZpbmUgTUFYX0JMT0NLX1NJWkUJCTMyCisKKy8qKgorICogXGluZ3JvdXAgb3BlbnNzbGNyeXB0bworICovCisKKy8qKgorICogXGJyaWVmIEJhc2UgaW50ZXJmYWNlIGRlZmluaXRpb24gZm9yIHN5bW1ldHJpYyBrZXkgbWF0ZXJpYWwuCisgKgorICogVGhpcyBpcyB0aGUgaW1wbGVtZW50YXRpb24gZm9yIGEgd3JhcHBlciBvZiBPcGVuU1NMIHN5bW1ldHJpYworICogY3J5cHRvIGZ1bmN0aW9ucy4KKyAqLworCitjbGFzcyBEU0lHX0VYUE9SVCBPcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5IDogcHVibGljIFhTRUNDcnlwdG9TeW1tZXRyaWNLZXkgeworCitwdWJsaWMgOgorCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisJCisJLyoqCisJICogXGJyaWVmIENvbnN0cnVjdG9yCisJICoKKwkgKiBDYW4gb25seSBjb25zdHJ1Y3QgYSBTeW1tZXRyaWMga2V5IGlmIHdlIGtub3cgd2hhdCB0eXBlIGl0IGlzCisJICoqLworCisJT3BlblNTTENyeXB0b1N5bW1ldHJpY0tleShYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpTeW1tZXRyaWNLZXlUeXBlIHR5cGUpOworCisJLyoqCisJICogXGJyaWVmIERlc3RydWN0b3IgCisJICoKKwkgKiBJbXBsZW1lbnRhdGlvbnMgbXVzdCBlbnN1cmUgdGhhdCB0aGUgaGVsZCBrZXkgaXMgcHJvcGVybHkgZGVzdHJveWVkCisJICogKG92ZXJ3cml0dGVuKSB3aGVuIGtleSBvYmplY3RzIGFyZSBkZWxldGVkLgorCSAqLworCisJdmlydHVhbCB+T3BlblNTTENyeXB0b1N5bW1ldHJpY0tleSgpOworCisJLy9AfQorCisJLyoqIEBuYW1lIEJhc2ljIENyeXB0b0tleSBJbnRlcmZhY2UgbWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm5zIGEgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB0aGUgY3J5cHRvIG93bmVyIG9mIHRoaXMgbGlicmFyeS4KKwkgKi8KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRQcm92aWRlck5hbWUoKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBDbG9uZSB0aGUga2V5CisJICoKKwkgKiBBbGwga2V5cyBuZWVkIHRvIGJlIGFibGUgdG8gY29weSB0aGVtc2VsdmVzIGFuZCByZXR1cm4KKwkgKiBhIHBvaW50ZXIgdG8gdGhlIGNvcHkuICBUaGlzIGFsbG93cyB0aGUgbGlicmFyeSB0byAKKwkgKiBkdXBsaWNhdGUga2V5cy4KKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0tleSAqIGNsb25lKCkgY29uc3Q7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgU3ltbWV0cmljIGtleSBpbnRlcmZhY2UgbWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBXaGF0IHR5cGUgb2Ygc3ltbWV0cmljIGtleSBpcyB0aGlzPworCSAqCisJICogVGhlcmUgYXJlIGEgbnVtYmVyIG9mIGRpZmZlcmVudCB0eXBlcyBvZiBzeW1tZXRyaWMga2V5LgorCSAqIFRoaXMgbWV0aG9kIGFsbG93cyBjYWxsZXJzIHRvIGRldGVybWluZSB0aGUgdHlwZSBvZiB0aGlzCisJICogcGFydGljdWxhciBrZXkKKwkgKi8KKworCVN5bW1ldHJpY0tleVR5cGUgZ2V0U3ltbWV0cmljS2V5VHlwZSh2b2lkKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBTZXQgdGhlIGtleSBmcm9tIHRoZSBwcm92aWRlZCBieXRlcworCSAqCisJICogU3ltbWV0cmljIGtleXMgY2FuIGFsbCBiZSBsb2FkZWQgZnJvbSBhIGJ1ZmZlciBjb250YWluaW5nIGEgc2VyaWVzCisJICogb2YgYnl0ZXMuCisJICoKKwkgKiBAcGFyYW0ga2V5IFRoZSBidWZmZXIgY29udGFpbmluZyB0aGUga2V5IGJ5dGVzCisJICogQHBhcmFtIGtleUxlbiBUaGUgbnVtYmVyIG9mIGtleSBieXRlcyBpbiB0aGUgYnVmZmVyCisJICoKKwkgKi8KKworCXZvaWQgc2V0S2V5KGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBrZXksIHVuc2lnbmVkIGludCBrZXlMZW4pOworCisJLyoqCisJICogXGJyaWVmIEluaXRpYWxpc2UgYW4gZGVjcnlwdGlvbiBwcm9jZXNzCisJICoKKwkgKiBTZXR1cCB0aGUga2V5IHRvIGdldCByZWFkeSBmb3IgYSBkZWNyeXB0aW9uIHNlc3Npb24uCisJICogQ2FsbGVycyBjYW4gcGFzcyBpbiBhbiBJVi4gIElmIG9uZSBpcyBub3QgcHJvdmlkZWQsIAorCSAqIGJ1dCB0aGUgYWxnb3JpdGhtIHJlcXVpcmVzIG9uZSAoZS5nLiAzREVTX0NCQyksIHRoZW4gCisJICogaW1wbGVtZW50YXRpb25zIHNob3VsZCBhc3N1bWUgdGhhdCB0aGUgc3RhcnQgb2YgdGhlCisJICogY2lwaGVyIHRleHQgc3RyZWFtIHdpbGwgaW4gZmFjdCBiZSB0aGUgSVYuCisJICoKKwkgKiBAcGFyYW0gZG9QYWQgQnkgZGVmYXVsdCwgd2UgcGVyZm9ybSBwYWRkaW5nIGZvciBsYXN0IGJsb2NrCisJICogQHBhcmFtIG1vZGUgbW9kZSBzZWxlY3Rpb24gKEN1cnJlbnRseSBFQ0Igb3IgQ0JDIG1vZGUgb25seSkKKwkgKiBAcGFyYW0gaXYgSW5pdGlhbGlzYXRpb24gVmVjdG9yIHRvIGJlIHVzZWQuICBOVUxMIGlmIG9uZSBpcworCSAqIG5vdCByZXF1aXJlZCwgb3IgaWYgSVYgd2lsbCBiZSBzZXQgZnJvbSBkYXRhIHN0cmVhbQorCSAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGluaXRpYWxpc2F0aW9uIHN1Y2NlZWRlZC4KKwkgKi8KKworCXZpcnR1YWwgYm9vbCBkZWNyeXB0SW5pdChib29sIGRvUGFkID0gdHJ1ZSwKKwkJCQkJCQkgU3ltbWV0cmljS2V5TW9kZSBtb2RlID0gTU9ERV9DQkMsCisJCQkJCQkJIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBpdiA9IE5VTEwpOworCisJLyoqCisJICogXGJyaWVmIENvbnRpbnVlIGFuIGRlY3J5cHQgb3BlcmF0aW9uIHVzaW5nIHRoaXMga2V5LgorCSAqCisJICogRGVjcnlwdGlvbiBtdXN0IGhhdmUgYmVlbiBzZXQgdXAgdXNpbmcgYW4gZW5jcnlwdEluaXQKKwkgKiBjYWxsLiAgVGFrZXMgdGhlIGluQnVmIGFuZCBjb250aW51ZXMgYSBkZWNyeXB0aW9uIG9wZXJhdGlvbiwKKwkgKiB3cml0aW5nIHRoZSBvdXRwdXQgdG8gb3V0QnVmLgorCSAqCisJICogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBoYXZlIHRvIGd1YXJhbnRlZSB0aGF0IGFsbCBpbnB1dAorCSAqIHdpbGwgYmUgZGVjcnlwdGVkLiAgSW4gY2FzZXMgd2hlcmUgdGhlIGlucHV0IGlzIG5vdCBhIGxlbmd0aAorCSAqIG9mIHRoZSBibG9jayBzaXplLCB0aGUgaW1wbGVtZW50YXRpb24gd2lsbCBuZWVkIHRvIGhvbGQgYmFjaworCSAqIGNpcGhlci10ZXh0IHRvIGJlIGhhbmRsZXMgZHVyaW5nIHRoZSBuZXh0IG9wZXJhdGlvbi4KKwkgKgorCSAqIEBub3RlIFdoaWxlIG1heE91dExlbmd0aCBpcyBkZWZpbmVkLCB0aGUgT3BlblNTTCBsaWJyYXJpZXMgd2lsbAorCSAqIG5vdCByZWFkIHRoZSB2YWx1ZSwgc28gdGhlIG9udXMgaXMgb24gdGhlIGNhbGxlciB0byBlbnN1cmUgdGhlCisJICogYnVmZmVyIGlzIGxvbmcgZW5vdWdoIHRvIGhvbGQgdGhlIG91dHB1dCEKKwkgKgorCSAqIEBwYXJhbSBpbkJ1ZiBPY3RldHMgdG8gYmUgZGVjcnlwdGVkCisJICogQHBhcmFtIHBsYWluQnVmIEJ1ZmZlciB0byBwbGFjZSBvdXRwdXQgaW4KKwkgKiBAcGFyYW0gaW5MZW5ndGggTnVtYmVyIG9mIGJ5dGVzIHRvIGRlY3J5cHQKKwkgKiBAcGFyYW0gbWF4T3V0TGVuZ3RoIE1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvIHBsYWNlIGluIG91dHB1dCAKKwkgKiBidWZmZXIKKwkgKiBAcmV0dXJucyBCeXRlcyBwbGFjZWQgaW4gb3V0cHV0IEJ1ZmZlcgorCSAqLworCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgZGVjcnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICogaW5CdWYsIAorCQkJCQkJCQkgdW5zaWduZWQgY2hhciAqIHBsYWluQnVmLCAKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBpbkxlbmd0aCwKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBtYXhPdXRMZW5ndGgpOworCisJLyoqCisJICogXGJyaWVmIEZpbmlzaCBhIGRlY3J5cHRpb24gb3BlcmF0aW9uCisJICoKKwkgKiBDb21wbGV0ZSBhIGRlY3J5cHRpb24gcHJvY2Vzcy4gIE5vIGNpcGhlciB0ZXh0IGlzIHBhc3NlZCBpbiwKKwkgKiBhcyB0aGlzIHNob3VsZCBzaW1wbHkgYmUgcmVtb3ZpbmcgYW55IHJlbWFpbmluZyB0ZXh0IGZyb20KKwkgKiB0aGUgcGxhaW4gc3RvcmFnZSBidWZmZXIuCisJICoKKwkgKiBNYXkgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIHRoZXJlIGlzIHNvbWUgc3RvcmVkIGNpcGhlciB0ZXh0CisJICogdGhhdCBpcyBub3QgdGhlIGxlbmd0aCBvZiB0aGUgYmxvY2sgc2l6ZSBmb3IgYmxvY2sgYWxnb3JpdGhtcy4KKwkgKgorCSAqIEBub3RlIFdoaWxlIG1heE91dExlbmd0aCBpcyBkZWZpbmVkLCB0aGUgT3BlblNTTCBsaWJyYXJpZXMgd2lsbAorCSAqIG5vdCByZWFkIHRoZSB2YWx1ZSwgc28gdGhlIG9udXMgaXMgb24gdGhlIGNhbGxlciB0byBlbnN1cmUgdGhlCisJICogYnVmZmVyIGlzIGxvbmcgZW5vdWdoIHRvIGhvbGQgdGhlIG91dHB1dCEKKwkgKgorCSAqIEBwYXJhbSBwbGFpbkJ1ZiBCdWZmZXIgdG8gcGxhY2UgYW55IHJlbWFpbmluZyBwbGFpbiB0ZXh0IGluCisJICogQHBhcmFtIG1heE91dExlbmd0aCBNYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byBwYWNlIGluIG91dHB1dAorCSAqIEByZXR1cm5zIEJ5dGVzIHBsYWNlZCBpbiBvdXRwdXQgYnVmZmVyCisJICovCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCBkZWNyeXB0RmluaXNoKHVuc2lnbmVkIGNoYXIgKiBwbGFpbkJ1ZiwKKwkJCQkJCQkJCSAgIHVuc2lnbmVkIGludCBtYXhPdXRMZW5ndGgpOworCisJLyoqCisJICogXGJyaWVmIEluaXRpYWxpc2UgYW4gZW5jcnlwdGlvbiBwcm9jZXNzCisJICoKKwkgKiBTZXR1cCB0aGUga2V5IHRvIGdldCByZWFkeSBmb3IgYSBkZWNyeXB0aW9uIHNlc3Npb24uCisJICogQ2FsbGVycyBjYW4gcGFzcyBpbiBhbiBJVi4gIElmIG9uZSBpcyBub3QgcHJvdmlkZWQsIAorCSAqIGJ1dCB0aGUgYWxnb3JpdGhtIHJlcXVpcmVzIG9uZSAoZS5nLiAzREVTX0NCQyksIHRoZW4KKwkgKiBpbXBsZW1lbnRhdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGdlbmVyYXRlIG9uZS4KKwkgKgorCSAqIEBwYXJhbSBkb1BhZCBCeSBkZWZhdWx0LCB3ZSBwZXJmb3JtIHBhZGRpbmcgZm9yIGxhc3QgYmxvY2sKKwkgKiBAcGFyYW0gbW9kZSBXaGF0IG1vZGUgdG8gaGFuZGxlIGJsb2NrcyAoQ3VycmVudGx5IENCQyBvciBFQ0IpCisJICogQHBhcmFtIGl2IEluaXRpYWxpc2F0aW9uIFZlY3RvciB0byBiZSB1c2VkLiAgTlVMTCBpZiBvbmUgaXMKKwkgKiBub3QgcmVxdWlyZWQsIG9yIGlmIElWIGlzIHRvIGJlIGdlbmVyYXRlZAorCSAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGluaXRpYWxpc2F0aW9uIHN1Y2NlZWRlZC4KKwkgKi8KKworCXZpcnR1YWwgYm9vbCBlbmNyeXB0SW5pdChib29sIGRvUGFkID0gdHJ1ZSwgCisJCQkJCQkJIFN5bW1ldHJpY0tleU1vZGUgbW9kZSA9IE1PREVfQ0JDLAorCQkJCQkJCSBjb25zdCB1bnNpZ25lZCBjaGFyICogaXYgPSBOVUxMKTsKKworCS8qKgorCSAqIFxicmllZiBDb250aW51ZSBhbiBlbmNyeXB0aW9uIG9wZXJhdGlvbiB1c2luZyB0aGlzIGtleS4KKwkgKgorCSAqIEVuY3J5cHRpb24gbXVzdCBoYXZlIGJlZW4gc2V0IHVwIHVzaW5nIGFuIGVuY3J5cHRJbml0CisJICogY2FsbC4gIFRha2VzIHRoZSBpbkJ1ZiBhbmQgY29udGludWVzIGEgZW5jcnlwdGlvbiBvcGVyYXRpb24sCisJICogd3JpdGluZyB0aGUgb3V0cHV0IHRvIG91dEJ1Zi4KKwkgKgorCSAqIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgaGF2ZSB0byBndWFyYW50ZWUgdGhhdCBhbGwgaW5wdXQKKwkgKiB3aWxsIGJlIGVuY3J5cHRlZC4gIEluIGNhc2VzIHdoZXJlIHRoZSBpbnB1dCBpcyBub3QgYSBsZW5ndGgKKwkgKiBvZiB0aGUgYmxvY2sgc2l6ZSwgdGhlIGltcGxlbWVudGF0aW9uIHdpbGwgbmVlZCB0byBob2xkIGJhY2sKKwkgKiBwbGFpbi10ZXh0IHRvIGJlIGhhbmRsZWQgZHVyaW5nIHRoZSBuZXh0IG9wZXJhdGlvbi4KKwkgKgorCSAqIEBwYXJhbSBpbkJ1ZiBPY3RldHMgdG8gYmUgZW5jcnlwdGVkCisJICogQHBhcmFtIGNpcGhlckJ1ZiBCdWZmZXIgdG8gcGxhY2Ugb3V0cHV0IGluCisJICogQHBhcmFtIGluTGVuZ3RoIE51bWJlciBvZiBieXRlcyB0byBlbmNyeXB0CisJICogQHBhcmFtIG1heE91dExlbmd0aCBNYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byBwbGFjZSBpbiBvdXRwdXQgCisJICogYnVmZmVyCisJICogQHJldHVybnMgQnl0ZXMgcGxhY2VkIGluIG91dHB1dCBCdWZmZXIKKwkgKi8KKworCXZpcnR1YWwgdW5zaWduZWQgaW50IGVuY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqIGluQnVmLCAKKwkJCQkJCQkJIHVuc2lnbmVkIGNoYXIgKiBjaXBoZXJCdWYsIAorCQkJCQkJCQkgdW5zaWduZWQgaW50IGluTGVuZ3RoLAorCQkJCQkJCQkgdW5zaWduZWQgaW50IG1heE91dExlbmd0aCk7CisKKwkvKioKKwkgKiBcYnJpZWYgRmluaXNoIGEgZW5jcnlwdGlvbiBvcGVyYXRpb24KKwkgKgorCSAqIENvbXBsZXRlIGEgZW5jcnlwdGlvbiBwcm9jZXNzLiAgTm8gcGxhaW4gdGV4dCBpcyBwYXNzZWQgaW4sCisJICogYXMgdGhpcyBzaG91bGQgc2ltcGx5IGJlIHJlbW92aW5nIGFueSByZW1haW5pbmcgdGV4dCBmcm9tCisJICogdGhlIHBsYWluIHN0b3JhZ2UgYnVmZmVyIGFuZCBjcmVhdGluZyBhIGZpbmFsIHBhZGRlZCBibG9jay4KKwkgKgorCSAqIFBhZGRpbmcgaXMgcGVyZm9ybWVkIGJ5IHRha2luZyB0aGUgcmVtYWluaW5nIGJsb2NrLCBhbmQKKwkgKiBzZXR0aW5nIHRoZSBsYXN0IGJ5dGUgdG8gZXF1YWwgdGhlIG51bWJlciBvZiBieXRlcyBvZgorCSAqIHBhZGRpbmcuICBJZiB0aGUgcGxhaW4gd2FzIGFuIGV4YWN0IG11bHRpcGxlIG9mIHRoZSBibG9jayBzaXplLAorCSAqIHRoZW4gYW4gZXh0cmEgYmxvY2sgb2YgcGFkZGluZyB3aWxsIGJlIHVzZWQuICBGb3IgZXhhbXBsZSwgaWYgCisJICogdGhlIGJsb2NrIHNpemUgaXMgOCBieXRlcywgYW5kIHRoZXJlIHdlcmUgdGhyZWUgcmVtYWluaW5nIHBsYWluCisJICogdGV4dCBieXRlcyAoMHgwMSwgMHgwMiBhbmQgMHgwMyksIHRoZSBmaW5hbCBibG9jayB3aWxsIGJlIDoKKwkgKgorCSAqIDB4MDEwMjAzPz8/Pz8/Pz8wNQorCSAqCisJICogQHBhcmFtIHBsYWluQnVmIEJ1ZmZlciB0byBwbGFjZSBmaW5hbCBibG9jayBvZiBjaXBoZXIgdGV4dCBpbgorCSAqIEBwYXJhbSBtYXhPdXRMZW5ndGggTWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG8gcGFjZSBpbiBvdXRwdXQKKwkgKiBAcmV0dXJucyBCeXRlcyBwbGFjZWQgaW4gb3V0cHV0IGJ1ZmZlcgorCSAqLworCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgZW5jcnlwdEZpbmlzaCh1bnNpZ25lZCBjaGFyICogcGxhaW5CdWYsCisJCQkJCQkJCQkgICB1bnNpZ25lZCBpbnQgbWF4T3V0TGVuZ3RoKTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBPcGVuU1NMIExpYnJhcnkgU3BlY2lmaWMgZnVuY3Rpb25zICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIEdldCBPcGVuU1NMIGNpcGhlciBjb250ZXh0IHN0cnVjdHVyZQorCSAqLworCisJRVZQX0NJUEhFUl9DVFggKiBnZXRPcGVuU1NMRVZQX0NJUEhFUl9DVFgodm9pZCkge3JldHVybiAmbV9jdHg7fQorCisgICAgLyoqCisJICogXGJyaWVmIEdldCBPcGVuU1NMIGNpcGhlciBjb250ZXh0IHN0cnVjdHVyZQorCSAqLworCisJY29uc3QgRVZQX0NJUEhFUl9DVFggKiBnZXRPcGVuU1NMRVZQX0NJUEhFUl9DVFgodm9pZCkgY29uc3Qge3JldHVybiAmbV9jdHg7fQorCisJLy9AfQorCitwcml2YXRlOgorCisJLy8gVW5pbXBsZW1lbnRlZCBjb25zdHJ1Y3RvcnMKKwkKKwlPcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5KCk7CisJT3BlblNTTENyeXB0b1N5bW1ldHJpY0tleShjb25zdCBPcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5ICYpOworCU9wZW5TU0xDcnlwdG9TeW1tZXRyaWNLZXkgJiBvcGVyYXRvcj0gKGNvbnN0IE9wZW5TU0xDcnlwdG9TeW1tZXRyaWNLZXkgJik7CisKKwkvLyBQcml2YXRlIGZ1bmN0aW9ucworCWludCBkZWNyeXB0Q3R4SW5pdChjb25zdCB1bnNpZ25lZCBjaGFyICogaXYpOworCisJLy8gUHJpdmF0ZSB2YXJpYWJsZXMKKwlTeW1tZXRyaWNLZXlUeXBlCQkJCW1fa2V5VHlwZTsKKwlTeW1tZXRyaWNLZXlNb2RlCQkJCW1fa2V5TW9kZTsKKwlFVlBfQ0lQSEVSX0NUWAkJCQkJbV9jdHg7CQkJLy8gT3BlblNTTCBDaXBoZXIgQ29udGV4dCBzdHJ1Y3R1cmUKKwlzYWZlQnVmZmVyCQkJCQkJbV9rZXlCdWY7CQkvLyBIb2xkZXIgb2YgdGhlIGtleQorCXVuc2lnbmVkIGludAkJCQkJbV9rZXlMZW47CisJYm9vbAkJCQkJCQltX2luaXRpYWxpc2VkOwkvLyBJcyB0aGUgY29udGV4dCByZWFkeSB0byB3b3JrPworCXVuc2lnbmVkIGNoYXIJCQkJCW1fbGFzdEJsb2NrW01BWF9CTE9DS19TSVpFXTsKKwlpbnQJCQkJCQkJCW1fYmxvY2tTaXplOworCWludAkJCQkJCQkJbV9pdlNpemU7CisJaW50CQkJCQkJCQltX2J5dGVzSW5MYXN0QmxvY2s7CisJYm9vbAkJCQkJCQltX2l2U2VudDsJCS8vIEhhcyB0aGUgSVYgYmVlbiBwdXQgaW4gdGhlIHN0cmVhbQorCWJvb2wJCQkJCQkJbV9kb1BhZDsJCS8vIERvIHdlIHBhZCBsYXN0IGJsb2NrPworfTsKKworI2VuZGlmIC8qIEhBVkVfT1BFTlNTTCAqLworI2VuZGlmIC8qIE9QRU5TU0xDUllQVE9TWU1NRVRSSUNLRVlfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b1g1MDkuY3BwIGIvYy9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b1g1MDkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyN2UxOTgKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvWDUwOS5jcHAKQEAgLTAsMCArMSwyNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDEwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIE9wZW5TU0xDcnlwdG9YNTA5Oj0gT3BlblNTTCBiYXNlZCBjbGFzcyBmb3IgaGFuZGxpbmcgWDUwOSAoVjMpIGNlcnRpZmljYXRlcworICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpZiBkZWZpbmVkIChIQVZFX09QRU5TU0wpCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9YNTA5LmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9LZXlEU0EuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0tleUVDLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9LZXlSU0EuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9FeGNlcHRpb24uaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTQ3J5cHQvWFNDcnlwdENyeXB0b0Jhc2U2NC5ocHA+CisKKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvSmFuaXRvci5ocHA+CisKK1hTRUNfVVNJTkdfWEVSQ0VTKEFycmF5SmFuaXRvcik7CitYU0VDX1VTSU5HX1hFUkNFUyhKYW5pdG9yKTsKKworI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+CisKK09wZW5TU0xDcnlwdG9YNTA5OjpPcGVuU1NMQ3J5cHRvWDUwOSgpIDoKK21fREVSWDUwOSgiIikgeyAKKworCW1wX1g1MDkgPSBOVUxMOworCit9CisKK09wZW5TU0xDcnlwdG9YNTA5Ojp+T3BlblNTTENyeXB0b1g1MDkoKSB7CisKKwlpZiAobXBfWDUwOSAhPSBOVUxMKQorCQlYNTA5X2ZyZWUobXBfWDUwOSk7CisKK30KKworT3BlblNTTENyeXB0b1g1MDk6Ok9wZW5TU0xDcnlwdG9YNTA5KFg1MDkgKiB4KSB7CisKKwkvLyBCdWlsZCB0aGlzIGZyb20gYW4gZXhpc3RpbmcgWDUwOSBzdHJ1Y3R1cmUKKworCW1wX1g1MDkgPSBYNTA5X2R1cCh4KTsKKwkKKwkvLyBOb3cgbmVlZCB0byBjcmVhdGUgdGhlIERFUiBlbmNvZGluZworCisJQklPICogYjY0ID0gQklPX25ldyhCSU9fZl9iYXNlNjQoKSk7CisJQklPICogYm1lbSA9IEJJT19uZXcoQklPX3NfbWVtKCkpOworCisJQklPX3NldF9tZW1fZW9mX3JldHVybihibWVtLCAwKTsKKwliNjQgPSBCSU9fcHVzaChiNjQsIGJtZW0pOworCisJLy8gVHJhbnNsYXRlIFg1MDkgdG8gQmFzZTY0CisKKwlpMmRfWDUwOV9iaW8oYjY0LCB4KTsKKworCUJJT19mbHVzaChiNjQpOworCisJY2hhciBidWZbMTAyNF07CisJdW5zaWduZWQgaW50IGw7CisJCisJbV9ERVJYNTA5LnNiU3RyY3B5SW4oIiIpOworCisJd2hpbGUgKChsID0gQklPX3JlYWQoYm1lbSwgYnVmLCAxMDIzKSkgPiAwKSB7CisJCWJ1ZltsXSA9ICdcMCc7CisJCW1fREVSWDUwOS5zYlN0cmNhdEluKGJ1Zik7CisJfQorCisJQklPX2ZyZWVfYWxsKGI2NCk7CisKK30KKworLy8gbG9hZCBmdW5jdGlvbnMKKwordm9pZCBPcGVuU1NMQ3J5cHRvWDUwOTo6bG9hZFg1MDlCYXNlNjRCaW4oY29uc3QgY2hhciAqIGJ1ZiwgdW5zaWduZWQgaW50IGxlbikgeworCisJLy8gRnJlZSBhbnl0aGluZyBjdXJyZW50bHkgaGVsZC4KKwkKKwlpZiAobXBfWDUwOSAhPSBOVUxMKQorCQlYNTA5X2ZyZWUobXBfWDUwOSk7CisJCisJLy8gSGF2ZSB0byBpbXBsZW1lbnQgdXNpbmcgRVZQX0RlY29kZSByb3V0aW5lcyBkdWUgdG8gYSBidWcgaW4gb2xkZXIKKwkvLyB2ZXJzaW9ucyBvZiBPcGVuU1NMIEJJT19mX2Jhc2U2NAorCisJaW50IGJ1ZkxlbiA9IGxlbjsKKwl1bnNpZ25lZCBjaGFyICogb3V0QnVmOworCVhTRUNuZXcob3V0QnVmLCB1bnNpZ25lZCBjaGFyW2xlbiArIDFdKTsKKwlBcnJheUphbml0b3I8dW5zaWduZWQgY2hhcj4gal9vdXRCdWYob3V0QnVmKTsKKworCS8qIEhhZCB0byBtb3ZlIHRvIG91ciBvd24gQmFzZTY0IGRlY29kZXIgYmVjYXVzZSBpdCBoYW5kbGVzIG5vbi13cmFwcGVkIGI2NAorCSAgIGJldHRlci4gIEdycnIuICovCisKKwlYU0NyeXB0Q3J5cHRvQmFzZTY0ICpiNjQ7CisJWFNFQ25ldyhiNjQsIFhTQ3J5cHRDcnlwdG9CYXNlNjQpOworCUphbml0b3I8WFNDcnlwdENyeXB0b0Jhc2U2ND4gal9iNjQoYjY0KTsKKworCWI2NC0+ZGVjb2RlSW5pdCgpOworCWJ1ZkxlbiA9IGI2NC0+ZGVjb2RlKCh1bnNpZ25lZCBjaGFyICopIGJ1ZiwgbGVuLCBvdXRCdWYsIGxlbik7CisJYnVmTGVuICs9IGI2NC0+ZGVjb2RlRmluaXNoKCZvdXRCdWZbYnVmTGVuXSwgbGVuLWJ1Zkxlbik7CisKKwkvKgorCisJRVZQX0VOQ09ERV9DVFggbV9kY3R4OworCUVWUF9EZWNvZGVJbml0KCZtX2RjdHgpOworCisJaW50IHJjID0gRVZQX0RlY29kZVVwZGF0ZSgmbV9kY3R4LCAKKwkJCQkJCSAgb3V0QnVmLCAKKwkJCQkJCSAgJmJ1ZkxlbiwgCisJCQkJCQkgICh1bnNpZ25lZCBjaGFyICopIGJ1ZiwgCisJCQkJCQkgIGxlbik7CisKKwlpZiAocmMgPCAwKSB7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpCYXNlNjRFcnJvciwKKwkJCSJPcGVuU1NMOkJhc2U2NCAtIEVycm9yIGR1cmluZyBCYXNlNjQgRGVjb2RlIG9mIFg1MDkgQ2VydGlmaWNhdGUiKTsKKwl9CisJCisJaW50IGZpbmFsTGVuOworCUVWUF9EZWNvZGVGaW5hbCgmbV9kY3R4LCAmb3V0QnVmW2J1Zkxlbl0sICZmaW5hbExlbik7IAorCisJYnVmTGVuICs9IGZpbmFsTGVuOworCSovCisJaWYgKGJ1ZkxlbiA+IDApIHsKKyNpZiBkZWZpbmVkKFhTRUNfT1BFTlNTTF9EMklYNTA5X0NPTlNUX0JVRkZFUikKKwkJbXBfWDUwOT0gIGQyaV9YNTA5KE5VTEwsIChjb25zdCB1bnNpZ25lZCBjaGFyICoqKSAoJm91dEJ1ZiksIGJ1Zkxlbik7CisjZWxzZQorCQltcF9YNTA5PSAgZDJpX1g1MDkoTlVMTCwgJm91dEJ1ZiwgYnVmTGVuKTsKKyNlbmRpZgorCX0KKworCS8vIENoZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIGEgY2VydGlmaWNhdGUuLi4uCisJaWYgKG1wX1g1MDkgPT0gTlVMTCkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6WDUwOUVycm9yLAorCQkiT3BlblNTTDpYNTA5IC0gRXJyb3IgdHJhbnNsYXRpbmcgQmFzZTY0IERFUiBlbmNvZGluZyBpbnRvIE9wZW5TU0wgWDUwOSBzdHJ1Y3R1cmUiKTsKKworCX0KKworCW1fREVSWDUwOS5zYlN0cmNweUluKGJ1Zik7CisKK30KKworLy8gSW5mbyBmdW5jdGlvbnMKKworY29uc3QgWE1MQ2ggKiBPcGVuU1NMQ3J5cHRvWDUwOTo6Z2V0UHJvdmlkZXJOYW1lKCkgY29uc3QgeworCisJcmV0dXJuIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clBST1ZPcGVuU1NMOworCit9CisKK1hTRUNDcnlwdG9LZXk6OktleVR5cGUgT3BlblNTTENyeXB0b1g1MDk6OmdldFB1YmxpY0tleVR5cGUoKSBjb25zdCB7CisKKwlpZiAobXBfWDUwOSA9PSBOVUxMKSB7CisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6WDUwOUVycm9yLAorCQkJIk9wZW5TU0w6WDUwOSAtIGdldFB1YmxpY0tleVR5cGUgY2FsbGVkIGJlZm9yZSBYNTA5IGxvYWRlZCIpOworCX0KKworCUVWUF9QS0VZICpwa2V5OworCisJcGtleSA9IFg1MDlfZ2V0X3B1YmtleShtcF9YNTA5KTsKKworCWlmIChwa2V5ID09IE5VTEwpIHsKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpYNTA5RXJyb3IsCisJCQkiT3BlblNTTDpYNTA5IC0gY2Fubm90IHJldHJpZXZlIHB1YmxpYyBrZXkgZnJvbSBjZXJ0Iik7CisJfQorCisJWFNFQ0NyeXB0b0tleTo6S2V5VHlwZSByZXQ7CisKKwlzd2l0Y2ggKHBrZXktPnR5cGUpIHsKKworCWNhc2UgRVZQX1BLRVlfRFNBIDoKKworCQlyZXQgPSBYU0VDQ3J5cHRvS2V5OjpLRVlfRFNBX1BVQkxJQzsKKwkJYnJlYWs7CisKKwljYXNlIEVWUF9QS0VZX1JTQSA6CisKKwkJcmV0ID0gWFNFQ0NyeXB0b0tleTo6S0VZX1JTQV9QVUJMSUM7CisJCWJyZWFrOworCisjaWYgZGVmaW5lZChYU0VDX09QRU5TU0xfSEFWRV9FQykKKwljYXNlIEVWUF9QS0VZX0VDIDoKKworCQlyZXQgPSBYU0VDQ3J5cHRvS2V5OjpLRVlfRUNfUFVCTElDOworCQlicmVhazsKKyNlbmRpZgorCisJZGVmYXVsdCA6CisKKwkJcmV0ID0gWFNFQ0NyeXB0b0tleTo6S0VZX05PTkU7CisKKwl9CisKKwlFVlBfUEtFWV9mcmVlIChwa2V5KTsKKworCXJldHVybiByZXQ7CisKK30KKwkJCisKKy8vIEdldCBmdW5jdGlvbnMKK1hTRUNDcnlwdG9LZXkgKiBPcGVuU1NMQ3J5cHRvWDUwOTo6Y2xvbmVQdWJsaWNLZXkoKSBjb25zdCB7CisKKwlpZiAobXBfWDUwOSA9PSBOVUxMKSB7CisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6WDUwOUVycm9yLAorCQkJIk9wZW5TU0w6WDUwOSAtIGNsb25lUHVibGljS2V5IGNhbGxlZCBiZWZvcmUgWDUwOSBsb2FkZWQiKTsKKwl9CisKKwlFVlBfUEtFWSAqcGtleTsKKwlYU0VDQ3J5cHRvS2V5ICogcmV0OworCisJcGtleSA9IFg1MDlfZ2V0X3B1YmtleShtcF9YNTA5KTsKKworCWlmIChwa2V5ID09IE5VTEwpIHsKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpYNTA5RXJyb3IsCisJCQkiT3BlblNTTDpYNTA5IC0gY2Fubm90IHJldHJpZXZlIHB1YmxpYyBrZXkgZnJvbSBjZXJ0Iik7CisJfQorCisJc3dpdGNoIChwa2V5LT50eXBlKSB7CisKKwljYXNlIEVWUF9QS0VZX0RTQSA6CisKKwkJcmV0ID0gbmV3IE9wZW5TU0xDcnlwdG9LZXlEU0EocGtleSk7CisJCWJyZWFrOworCisJY2FzZSBFVlBfUEtFWV9SU0EgOgorCisJCXJldCA9IG5ldyBPcGVuU1NMQ3J5cHRvS2V5UlNBKHBrZXkpOworCQlicmVhazsKKworI2lmIGRlZmluZWQoWFNFQ19PUEVOU1NMX0hBVkVfRUMpCisJY2FzZSBFVlBfUEtFWV9FQyA6CisKKwkJcmV0ID0gbmV3IE9wZW5TU0xDcnlwdG9LZXlFQyhwa2V5KTsKKwkJYnJlYWs7CisjZW5kaWYKKworCWRlZmF1bHQgOgorCisJCXJldCA9IE5VTEw7CisKKwl9CisKKwlFVlBfUEtFWV9mcmVlIChwa2V5KTsKKworCXJldHVybiByZXQ7CisKK30KKworI2VuZGlmIC8qIEhBVkVfT1BFTlNTTCAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b1g1MDkuaHBwIGIvYy9zcmMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b1g1MDkuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhNzNmNmMKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvWDUwOS5ocHAKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIE9wZW5TU0xDcnlwdG9YNTA5Oj0gT3BlblNTTCBiYXNlZCBjbGFzcyBmb3IgaGFuZGxpbmcgWDUwOSAoVjMpIGNlcnRpZmljYXRlcworICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBPUEVOU1NMQ1JZUFRPWDUwOV9JTkNMVURFCisjZGVmaW5lIE9QRU5TU0xDUllQVE9YNTA5X0lOQ0xVREUKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvWDUwOS5ocHA+CisKKyNpZiBkZWZpbmVkIChIQVZFX09QRU5TU0wpCisjaW5jbHVkZSA8b3BlbnNzbC94NTA5Lmg+CisjaW5jbHVkZSA8b3BlbnNzbC9iaW8uaD4KKworLyoqCisgKiBcYnJpZWYgSW1wbGVtZW50YXRpb24gY2xhc3MgZm9yIGludGVyZmFjZSBmb3IgWDUwOSBjZXJ0aWZpY2F0ZXMuCisgKiBAaW5ncm91cCBvcGVuc3NsY3J5cHRvCisgKgorICogVGhlIGxpYnJhcnkgdXNlcyBjbGFzc2VzIGRlcml2ZWQgZnJvbSB0aGlzIHRvIHByb2Nlc3MgWDUwOSBDZXJ0aWZpY2F0ZXMuCisgKgorICovCisKK2NsYXNzIERTSUdfRVhQT1JUIE9wZW5TU0xDcnlwdG9YNTA5IDogcHVibGljIFhTRUNDcnlwdG9YNTA5IHsKKworcHVibGljIDoKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCisJT3BlblNTTENyeXB0b1g1MDkoKTsKKwl2aXJ0dWFsIH5PcGVuU1NMQ3J5cHRvWDUwOSgpOworCisJLy9AfQorCisKKwkvL0B9CisJLyoqIEBuYW1lIEtleSBJbnRlcmZhY2UgbWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gdGhlIHR5cGUgb2YgdGhlIGtleSBzdG9yZWQgaW4gdGhlIGNlcnRpZmljYXRlLgorCSAqCisJICogV2lsbCBleHRyYWN0IHRoZSBrZXkgZnJvbSB0aGUgY2VydGlmaWNhdGUgdG8gcmV0dXJuIHRoZSBhcHByb3ByaWF0ZQorCSAqIHR5cGUKKwkgKgorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvS2V5OjpLZXlUeXBlIGdldFB1YmxpY0tleVR5cGUoKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm5zIGEgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB0aGUgY3J5cHRvIG93bmVyIG9mIHRoaXMgbGlicmFyeS4KKwkgKi8KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRQcm92aWRlck5hbWUoKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBHZXQgYSBjb3B5IG9mIHRoZSBwdWJsaWMga2V5LgorCSAqCisJICogRXh0cmFjdHMgdGhlIHB1YmxpYyBrZXkgZnJvbSB0aGUgY2VydGlmaWNhdGUgYW5kIHJldHVybnMgdGhlIGFwcHJvcHJpYXRlCisJICogT3BlblNTTENyeXJwdG9LZXkgKERTQSBvciBSU0EpIG9iamVjdAorCSAqCisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXkgKiBjbG9uZVB1YmxpY0tleSgpIGNvbnN0OworCisJLy9AfQorCisJLyoqIEBuYW1lIExvYWQgYW5kIEdldCB0aGUgY2VydGlmaWNhdGUgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgTG9hZCBhIGNlcnRpZmljYXRlIGludG8gdGhlIG9iamVjdC4KKwkgKgorCSAqIFRha2UgYSBiYXNlNjQgREVSIGVuY29kZWQgY2VydGlmaWNhdGUgYW5kIGxvYWQuCisJICoKKwkgKiBAcGFyYW0gYnVmIEEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIEJhc2U2NCBlbmNvZGVkIGNlcnRpZmljYXRlCisJICogQHBhcmFtIGxlbiBUaGUgbnVtYmVyIG9mIGJ5dGVzIG9mIGRhdGEgaW4gdGhlIGNlcnRpZmljYXRlLgorCSAqLworCisJdmlydHVhbCB2b2lkIGxvYWRYNTA5QmFzZTY0QmluKGNvbnN0IGNoYXIgKiBidWYsIHVuc2lnbmVkIGludCBsZW4pOworCisJLyoqCisJICogXGJyaWVmIEdldCBhIEJhc2U2NCBERVIgZW5jb2RlZCBjb3B5IG9mIHRoZSBjZXJ0aWZpY2F0ZQorCSAqCisJICogQHJldHVybnMgQSBzYWZlQnVmZmVyIGNvbnRhaW5pbmcgdGhlIERFUiBlbmNvZGVkIGNlcnRpZmljYXRlCisJICovCisKKwl2aXJ0dWFsIHNhZmVCdWZmZXIgJmdldERFUkVuY29kaW5nU0Iodm9pZCkge3JldHVybiBtX0RFUlg1MDk7fQorCisgICAgLyoqCisJICogXGJyaWVmIEdldCBhIEJhc2U2NCBERVIgZW5jb2RlZCBjb3B5IG9mIHRoZSBjZXJ0aWZpY2F0ZQorCSAqCisJICogQHJldHVybnMgQSBzYWZlQnVmZmVyIGNvbnRhaW5pbmcgdGhlIERFUiBlbmNvZGVkIGNlcnRpZmljYXRlCisJICovCisKKwl2aXJ0dWFsIGNvbnN0IHNhZmVCdWZmZXIgJmdldERFUkVuY29kaW5nU0Iodm9pZCkgY29uc3Qge3JldHVybiBtX0RFUlg1MDk7fQorCisJLy9AfQorCisJLyoqIEBuYW1lIE9wZW5TU0wgTGlicmFyeSBTcGVjaWZpYyBmdW5jdGlvbnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgT3BlblNTTCBzcGVjaWZpYyBjb25zdHJ1Y3RvciAKKwkgKgorCSAqIENvbnN0cnVjdCB0aGUgb2JqZWN0IGFyb3VuZCBhbiBleGlzdGluZyBYNTA5IGNlcnRpZmljYXRlCisJICovCisKKwlPcGVuU1NMQ3J5cHRvWDUwOShYNTA5ICogeCk7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IE9wZW5TU0wgY2VydGlmaWNhdGUgc3RydWN0dXJlCisJICovCisKKwlYNTA5ICogZ2V0T3BlblNTTFg1MDkodm9pZCkge3JldHVybiBtcF9YNTA5O30KKworICAgIC8qKgorCSAqIFxicmllZiBHZXQgT3BlblNTTCBjZXJ0aWZpY2F0ZSBzdHJ1Y3R1cmUKKwkgKi8KKworCWNvbnN0IFg1MDkgKiBnZXRPcGVuU1NMWDUwOSh2b2lkKSBjb25zdCB7cmV0dXJuIG1wX1g1MDk7fQorCisJLy9AfQorCitwcml2YXRlOgorCisJWDUwOQkJCSogbXBfWDUwOTsJCQkJLy8gVGhlIFg1MDkgc3RydWN0dXJlCisJc2FmZUJ1ZmZlcgkJbV9ERVJYNTA5OworfTsKKworI2VuZGlmIC8qIEhBVkVfT1BFTlNTTCAqLworI2VuZGlmIC8qIE9QRU5TU0xDUllQVE9YNTA5X0lOQ0xVREUgKi8KKwpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b0hhc2guY3BwIGIvYy9zcmMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b0hhc2guY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5OTFhNmIKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvSGFzaC5jcHAKQEAgLTAsMCArMSwxNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFdpbkNBUElDcnlwdG9IYXNoIDo9IFdpbmRvd3MgQ0FQSSBJbXBsZW1lbnRhdGlvbiBvZiBNZXNzYWdlIGRpZ2VzdHMKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9IYXNoLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvRXhjZXB0aW9uLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9Qcm92aWRlci5ocHA+CisKKyNpZiBkZWZpbmVkIChIQVZFX1dJTkNBUEkpCisKKyNpbmNsdWRlIDxtZW1vcnkuaD4KKworLy8gQ29uc3RydWN0b3JzL0Rlc3RydWN0b3JzCisKK1dpbkNBUElDcnlwdG9IYXNoOjpXaW5DQVBJQ3J5cHRvSGFzaChIQ1JZUFRQUk9WIHByb3YsIEhhc2hUeXBlIGFsZykgeworCisJbV9wID0gcHJvdjsKKwltX2hhc2hUeXBlID0gYWxnOworCW1faCA9IDA7CisKKwlyZXNldCgpOworfQorCisKK1dpbkNBUElDcnlwdG9IYXNoOjp+V2luQ0FQSUNyeXB0b0hhc2goKSB7CisKKwlpZiAobV9oICE9IDApCisJCUNyeXB0RGVzdHJveUhhc2gobV9oKTsKKworfQorCisKKworLy8gSGFzaGluZyBBY3Rpdml0aWVzCit2b2lkIFdpbkNBUElDcnlwdG9IYXNoOjpyZXNldCh2b2lkKSB7CisKKwlpZiAobV9oICE9IDApCisJCUNyeXB0RGVzdHJveUhhc2gobV9oKTsKKworCW1faCA9IDA7CisJCisJQk9PTCBmUmVzdWx0OworCUFMR19JRCBhbGdfaWQ7CisKKwlzd2l0Y2ggKG1faGFzaFR5cGUpIHsKKworCWNhc2UgKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTEpIDoKKwkKKwkJYWxnX2lkID0gQ0FMR19TSEE7CisJCWJyZWFrOworCisJY2FzZSAoWFNFQ0NyeXB0b0hhc2g6OkhBU0hfTUQ1KSA6CisJCisJCWFsZ19pZCA9IENBTEdfTUQ1OworCQlicmVhazsKKworCWRlZmF1bHQgOgorCisJCWFsZ19pZCA9IDA7CisKKwl9CisKKwlpZihhbGdfaWQgPT0gMCkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6TURFcnJvciwKKwkJCSJXaW5DQVBJOkhhc2ggLSBVbmtub3duIGFsZ29yaXRobSAoTk9URSBTSEE1MTIgYW5kIFNIQTI1NiBub3Qgc3VwcG9ydGVkIik7IAorCX0KKworCWZSZXN1bHQgPSBDcnlwdENyZWF0ZUhhc2goCisJCW1fcCwKKwkJYWxnX2lkLAorCQkwLAorCQkwLAorCQkmbV9oKTsKKworCWlmIChmUmVzdWx0ID09IDAgfHwgbV9oID09IDApIHsKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpNREVycm9yLAorCQkJIldpbkNBUEk6SGFzaCAtIEVycm9yIGNyZWF0aW5nIGhhc2ggb2JqZWN0Iik7IAorCX0KKworfQorCit2b2lkIFdpbkNBUElDcnlwdG9IYXNoOjpoYXNoKHVuc2lnbmVkIGNoYXIgKiBkYXRhLCAKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBsZW5ndGgpIHsKKworCUJPT0wgZlJlc3VsdCA9IENyeXB0SGFzaERhdGEoCisJCW1faCwKKwkJZGF0YSwKKwkJbGVuZ3RoLAorCQkwKTsKKworCWlmIChmUmVzdWx0ID09IDApIHsKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpNREVycm9yLAorCQkJIldpbkNBUEk6SGFzaCAtIEVycm9yIEhhc2hpbmcgRGF0YSIpOyAKKwl9CisKK30KKwordW5zaWduZWQgaW50IFdpbkNBUElDcnlwdG9IYXNoOjpmaW5pc2godW5zaWduZWQgY2hhciAqIGhhc2gsCisJCQkJCQkJCQkgICB1bnNpZ25lZCBpbnQgbWF4TGVuZ3RoKSB7CisKKwlEV09SRCByZXRMZW47CisJQk9PTCBmUmVzdWx0OworCisJcmV0TGVuID0gV0lOQ0FQSV9NQVhfSEFTSF9TSVpFOworCisJZlJlc3VsdCA9IENyeXB0R2V0SGFzaFBhcmFtKAorCQltX2gsCisJCUhQX0hBU0hWQUwsCisJCW1fbWRWYWx1ZSwKKwkJJnJldExlbiwKKwkJMCk7CisKKwlpZiAoZlJlc3VsdCA9PSAwKSB7CisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6TURFcnJvciwKKwkJCSJXaW5DQVBJOkhhc2ggLSBFcnJvciBnZXR0aW5nIGhhc2ggdmFsdWUiKTsgCisJfQorCisJbV9tZExlbiA9IHJldExlbjsKKwlyZXRMZW4gPSAobWF4TGVuZ3RoID4gbV9tZExlbiA/IG1fbWRMZW4gOiBtYXhMZW5ndGgpOworCW1lbWNweShoYXNoLCBtX21kVmFsdWUsIHJldExlbik7CisKKwlyZXR1cm4gKHVuc2lnbmVkIGludCkgcmV0TGVuOworCit9CisKKy8vIEdldCBpbmZvcm1hdGlvbgorCitYU0VDQ3J5cHRvSGFzaDo6SGFzaFR5cGUgV2luQ0FQSUNyeXB0b0hhc2g6OmdldEhhc2hUeXBlKHZvaWQpIGNvbnN0IHsKKworCXJldHVybiBtX2hhc2hUeXBlOwkJCS8vIFRoaXMgY291bGQgYmUgYW55IGtpbmQgb2YgaGFzaAorCit9CisKKyNlbmRpZiAvKiBIQVZFX1dJTkNBUEkgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9IYXNoLmhwcCBiL2Mvc3JjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9IYXNoLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODA5NTNiCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b0hhc2guaHBwCkBAIC0wLDAgKzEsMTY5IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBXaW5DQVBJQ3J5cHRvSGFzaCA6PSBXaW5kb3dzIENBUEkgSW1wbGVtZW50YXRpb24gb2YgTWVzc2FnZSBkaWdlc3RzCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFdJTkNBUElDUllQVE9IQVNIX0lOQ0xVREUKKyNkZWZpbmUgV0lOQ0FQSUNSWVBUT0hBU0hfSU5DTFVERQorCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9IYXNoLmhwcD4KKworIyBpZiBkZWZpbmVkIChIQVZFX1dJTkNBUEkpCisKKyNpZiAhZGVmaW5lZChfV0lOMzJfV0lOTlQpCisjCWRlZmluZSBfV0lOMzJfV0lOTlQgMHgwNDAwCisjZW5kaWYKKworI2luY2x1ZGUgPHdpbmNyeXB0Lmg+CisKKyNkZWZpbmUgV0lOQ0FQSV9NQVhfSEFTSF9TSVpFCTI1NgorCitjbGFzcyBXaW5DQVBJQ3J5cHRvUHJvdmlkZXI7CisKKy8qKgorICogQGluZ3JvdXAgd2luY2FwaWNyeXB0bworICovCisKKy8qKgorICogXGJyaWVmIFdpbmRvd3MgQ3J5cHRvIEFQSSBJbXBsZW1lbnRhdGlvbiBvZiBIYXNoIGZ1bmN0aW9ucy4KKyAqCisgKiBVc2VzIHRoZSBXaW5kb3dzIENyeXB0IGZ1bmN0aW9ucyB0byBwZXJmb3JtIGRpZ2VzdCBmdW5jdGlvbnMuCisgKgorICovCisKK2NsYXNzIERTSUdfRVhQT1JUIFdpbkNBUElDcnlwdG9IYXNoIDogcHVibGljIFhTRUNDcnlwdG9IYXNoIHsKKworCitwdWJsaWMgOgorCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycy9EZXN0cnVjdG9ycyAqLworCS8vQHsKKwkvKioKKwkgKiBcYnJpZWYgQ29uc3RydWN0IGEgSGFzaCBvYmplY3QKKwkgKgorCSAqIENyZWF0ZXMgYSBXaW5kb3dzIENyeXB0byBBUEkgYmFzZWQgaGFzaCBvYmplY3Qgb2YgdGhlIHJlcXVpcmVkCisJICogdHlwZS4KKwkgKgorCSAqIEBwYXJhbSBwcm92IGhhbmRsZSB0byBhIHByb3ZpZGVyIHRoYXQgc3VwcG9ydHMgdGhlIHJlcXVpcmVkIGFsZ29yaXRobS4KKwkgKiBCb3RoIFBST1ZfUlNBX0ZVTEwgYW5kIFBST1ZfRFNTIHN1cHBvcnQgTUQ1IGFuZCBTSEExCisJICogQHBhcmFtIGFsZyBUaGUgYWxnb3JpdGhtIHRvIHVzZSBmb3IgZGlnZXN0IG9wZXJhdGlvbnMKKwkgKi8KKworCVdpbkNBUElDcnlwdG9IYXNoKEhDUllQVFBST1YgcHJvdiwgWFNFQ0NyeXB0b0hhc2g6Okhhc2hUeXBlIGFsZyk7CisJdmlydHVhbCB+V2luQ0FQSUNyeXB0b0hhc2goKTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBITUFDIEZ1bmN0aW9ucyAqLworCS8vQHsKKwkKKwkvKioKKwkgKlxicmllZgorCSAqCisJICogRG9lcyBub3RoaW5nLiAgSWYgdGhlIHJlcXVpcmVkIGZ1bmN0aW9uIGlzIGFuIEhNQUMgZnVuY3Rpb24sCisJICogdGhlbiBXaW5DQVBJQ3J5cHRvSGFzaEhNQUMgc2hvdWxkIGJlIHVzZWQuCisJICoKKwkgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdGhlIEhNQUMgZnVuY3Rpb24gc2hvdWxkIHVzZS4KKwkgKi8KKworCXZpcnR1YWwgdm9pZAkJc2V0S2V5KFhTRUNDcnlwdG9LZXkgKiBrZXkpIHt9CisKKwkvL0B9CisKKwkvKiogQG5hbWUgRGlnZXN0L0hhc2ggZnVuY3Rpb25zICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFJlc3QgdGhlIGhhc2ggZnVuY3Rpb24KKwkgKgorCSAqIFJlLWluaXRpYWxpc2VzIHRoZSBkaWdlc3Qgc3RydWN0dXJlLgorCSAqLworCisJdmlydHVhbCB2b2lkCQlyZXNldCh2b2lkKTsKKwkKKwkvKioKKwkgKiBcYnJpZWYgSGFzaCBzb21lIGRhdGEuCisJICoKKwkgKiBUYWtlIGxlbmd0aCBieXRlcyBvZiBkYXRhIGZyb20gdGhlIGRhdGEgYnVmZmVyIGFuZCB1cGRhdGUgdGhlIGhhc2gKKwkgKiB0aGF0IGFscmVhZHkgZXhpc3RzLiAgVGhpcyBmdW5jdGlvbiBtYXkgKGFuZCBub3JtYWxseSB3aWxsKSBiZSBjYWxsZWQKKwkgKiBtYW55IHRpbWVzIGZvciBsYXJnZSBibG9ja3Mgb2YgZGF0YS4KKwkgKgorCSAqIEBwYXJhbSBkYXRhIFRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgZGF0YSB0byBiZSBoYXNoZWQuCisJICogQHBhcmFtIGxlbmd0aCBUaGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGJlIHJlYWQgZnJvbSBkYXRhCisJICovCisKKwl2aXJ0dWFsIHZvaWQJCWhhc2godW5zaWduZWQgY2hhciAqIGRhdGEsIAorCQkJCQkJCSB1bnNpZ25lZCBpbnQgbGVuZ3RoKTsKKworCS8qKgorCSAqIFxicmllZiBGaW5pc2ggdXAgYSBEaWdlc3Qgb3BlcmF0aW9uIGFuZCByZWFkIHRoZSByZXN1bHQuCisJICoKKwkgKiBUaGlzIGNhbGwgdGVsbHMgdGhlIENyeXB0b0hhc2ggb2JqZWN0IHRoYXQgdGhlIGlucHV0IGlzIGNvbXBsZXRlIGFuZAorCSAqIHRvIGZpbmFsaXNlIHRoZSBEaWdlc3QuICBUaGUgb3V0cHV0IG9mIHRoZSBkaWdlc3QgaXMgcmVhZCBpbnRvIHRoZSAKKwkgKiBoYXNoIGJ1ZmZlciAoYXQgbW9zdCBtYXhMZW5ndGggYnl0ZXMpCisJICoKKwkgKiBAcGFyYW0gaGFzaCBUaGUgYnVmZmVyIHRoZSBoYXNoIHNob3VsZCBiZSByZWFkIGludG8uCisJICogQHBhcmFtIG1heExlbmd0aCBUaGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG8gYmUgcmVhZCBpbnRvIGhhc2gKKwkgKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZCBpbnRvIHRoZSBoYXNoIGJ1ZmZlcgorCSAqLworCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgZmluaXNoKHVuc2lnbmVkIGNoYXIgKiBoYXNoLAorCQkJCQkJCQl1bnNpZ25lZCBpbnQgbWF4TGVuZ3RoKTsvLyBGaW5pc2ggYW5kIGdldCBoYXNoCisKKwkvL0B9CisKKwkvKiogQG5hbWUgSW5mb3JtYXRpb24gZnVuY3Rpb25zICovCisJLy9AeworCisJLyoqCisJICpcYnJpZWYKKwkgKgorCSAqIERldGVybWluZSB0aGUgaGFzaCB0eXBlIG9mIHRoaXMgb2JqZWN0CisJICoKKwkgKiBAcmV0dXJucyBUaGUgaGFzaCB0eXBlCisJICovCisKKwl2aXJ0dWFsIEhhc2hUeXBlIGdldEhhc2hUeXBlKHZvaWQpIGNvbnN0OworCisJLy9AfQorCitwcml2YXRlOgorCisJLy8gTm90IGltcGxlbWVudGVkIGNvbnN0cnVjdG9ycworCVdpbkNBUElDcnlwdG9IYXNoKCk7CisKKwl1bnNpZ25lZCBjaGFyCQkJCW1fbWRWYWx1ZVtXSU5DQVBJX01BWF9IQVNIX1NJWkVdOwkJLy8gRmluYWwgb3V0cHV0CisJdW5zaWduZWQgaW50CQkJCW1fbWRMZW47CisKKwlYU0VDQ3J5cHRvSGFzaDo6SGFzaFR5cGUJbV9oYXNoVHlwZTsKKworCUhDUllQVFBST1YJCQkJCW1fcDsKKwlIQ1JZUFRIQVNICQkJCQltX2g7CisKK307CisKKyNlbmRpZiAvKiBIQVZFX1dJTkNBUEkgKi8KKyNlbmRpZiAvKiBXSU5DQVBJQ1JZUFRPSEFTSFNIQTFfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b0hhc2hITUFDLmNwcCBiL2Mvc3JjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9IYXNoSE1BQy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQwMmE0ZAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9IYXNoSE1BQy5jcHAKQEAgLTAsMCArMSw0MTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFdpbkNBUElDcnlwdG9IYXNoSE1BQyA6PSBXaW5kb3dzIENBUEkgSW1wbGVtZW50YXRpb24gb2YgTWVzc2FnZSBkaWdlc3RzCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvSGFzaEhNQUMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9FeGNlcHRpb24uaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b1Byb3ZpZGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9LZXlITUFDLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisKKyNpZiBkZWZpbmVkIChIQVZFX1dJTkNBUEkpCisKKyNpbmNsdWRlIDxtZW1vcnkuaD4KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBJUEFEL09QQUQgZGVmaW5pdGlvbnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIGlwYWRbXSA9IHsKKworCTB4MzYsIDB4MzYsIDB4MzYsIDB4MzYsIDB4MzYsIDB4MzYsIDB4MzYsIDB4MzYsCisJMHgzNiwgMHgzNiwgMHgzNiwgMHgzNiwgMHgzNiwgMHgzNiwgMHgzNiwgMHgzNiwKKwkweDM2LCAweDM2LCAweDM2LCAweDM2LCAweDM2LCAweDM2LCAweDM2LCAweDM2LAorCTB4MzYsIDB4MzYsIDB4MzYsIDB4MzYsIDB4MzYsIDB4MzYsIDB4MzYsIDB4MzYsCisJMHgzNiwgMHgzNiwgMHgzNiwgMHgzNiwgMHgzNiwgMHgzNiwgMHgzNiwgMHgzNiwKKwkweDM2LCAweDM2LCAweDM2LCAweDM2LCAweDM2LCAweDM2LCAweDM2LCAweDM2LAorCTB4MzYsIDB4MzYsIDB4MzYsIDB4MzYsIDB4MzYsIDB4MzYsIDB4MzYsIDB4MzYsCisJMHgzNiwgMHgzNiwgMHgzNiwgMHgzNiwgMHgzNiwgMHgzNiwgMHgzNiwgMHgzNiwKK307CisKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIG9wYWRbXSA9IHsKKworCTB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIAorCTB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIAorCTB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIAorCTB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIAorCTB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIAorCTB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIAorCTB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIAorCTB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIDB4NUMsIAorfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdHJ1Y3RvcnMvRGVzdHJ1Y3RvcnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1dpbkNBUElDcnlwdG9IYXNoSE1BQzo6V2luQ0FQSUNyeXB0b0hhc2hITUFDKEhDUllQVFBST1YgcHJvdiwgSGFzaFR5cGUgYWxnKSB7CisKKwltX3AgPSBwcm92OworCW1faCA9IDA7CisJbV9ibG9ja1NpemUgPSA2NDsJCS8vIFdlIG9ubHkga25vdyBTSEEtMSBhbmQgTUQ1IGF0IHRoaXMgdGltZSAtIGJvdGggYXJlIDY0IGJ5dGVzCisKKwlzd2l0Y2ggKGFsZykgeworCisJY2FzZSAoWFNFQ0NyeXB0b0hhc2g6OkhBU0hfU0hBMSkgOgorCQorCQltX2FsZ0lkID0gQ0FMR19TSEE7CisJCWJyZWFrOworCisJY2FzZSAoWFNFQ0NyeXB0b0hhc2g6OkhBU0hfTUQ1KSA6CisJCisJCW1fYWxnSWQgPSBDQUxHX01ENTsKKwkJYnJlYWs7CisKKwlkZWZhdWx0IDoKKworCQltX2FsZ0lkID0gMDsKKworCX0KKworCWlmKG1fYWxnSWQgPT0gMCkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6TURFcnJvciwKKwkJCSJXaW5DQVBJOkhhc2ggLSBVbmtub3duIGFsZ29yaXRobSIpOyAKKwl9CisKKwltX2hhc2hUeXBlID0gYWxnOworCisKK30KKwordm9pZCBXaW5DQVBJQ3J5cHRvSGFzaEhNQUM6OnJlc2V0KCkgeworCisJaWYgKG1faCAhPSAwKQorCQlDcnlwdERlc3Ryb3lIYXNoKG1faCk7CisKK30KKworV2luQ0FQSUNyeXB0b0hhc2hITUFDOjp+V2luQ0FQSUNyeXB0b0hhc2hITUFDKCkgeworCisJaWYgKG1faCAhPSAwKQorCQlDcnlwdERlc3Ryb3lIYXNoKG1faCk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBLZXkgbWFuaXB1bGF0aW9uCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIFdpbkNBUElDcnlwdG9IYXNoSE1BQzo6ZXJhc2VLZXlzKHZvaWQpIHsKKworCS8vIE92ZXJ3cml0ZSB0aGUgaXBhZC9vcGFkIGNhbGN1bGF0ZWQga2V5IHZhbHVlcworCXVuc2lnbmVkIGNoYXIgKiBpID0gbV9pcGFkS2V5ZWQ7CisJdW5zaWduZWQgY2hhciAqIGogPSBtX29wYWRLZXllZDsKKworCWZvciAodW5zaWduZWQgaW50IGsgPSAwOyBrIDwgWFNFQ19NQVhfSEFTSF9CTE9DS19TSVpFOyArK2spIHsKKwkJKmkrKyA9IDA7CisJCSpqKysgPSAwOworCX0KKworfQorCit2b2lkIFdpbkNBUElDcnlwdG9IYXNoSE1BQzo6c2V0S2V5KFhTRUNDcnlwdG9LZXkgKmtleSkgeworCisJCisJQk9PTCBmUmVzdWx0OworCisJLy8gVXNlIHRoaXMgdG8gaW5pdGlhbGlzZSB0aGUgaXBhZEtleWVkL29wYWRLZXllZCB2YWx1ZXMKKworCWlmIChrZXktPmdldEtleVR5cGUoKSAhPSBYU0VDQ3J5cHRvS2V5OjpLRVlfSE1BQykgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6TURFcnJvciwKKwkJCSJXaW5DQVBJOkhhc2hITUFDIC0gTm9uIEhNQUMgS2V5IHBhc3NlZCB0byBIYXNoSE1BQyIpOworCisJfQorCisJaWYgKG1fYmxvY2tTaXplID4gWFNFQ19NQVhfSEFTSF9CTE9DS19TSVpFKSB7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpNREVycm9yLAorCQkJIldpbkNBUEk6SGFzaEhNQUMgLSBJbnRlcm5hbCBlcnJvciAtIGhhdmUgZ290IGEgYmxvY2tzaXplIGJpZ2dlciB0aGFuIEkgY2FuIGhhbmRsZSIpOworCisJfQorCisJLy8gQ2hlY2sgdG8gc2VlIGlmIHRoaXMgaXMgYW4gaW50ZXJuYWwgV2luZG93cyBLZXkKKwlpZiAoc3RyRXF1YWxzKGtleS0+Z2V0UHJvdmlkZXJOYW1lKCksIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clBST1ZXaW5DQVBJKSAmJgorCQkoKFdpbkNBUElDcnlwdG9LZXlITUFDICopIGtleSktPmdldFdpbktleSgpICE9IDApIHsKKworCQkvLyBPdmVyLXJpZGUgdGhlIGxvY2FsIHByb3ZpZGVyIGZvciB0aGlzIAorCisJCUhDUllQVFBST1YgcCA9ICgoV2luQ0FQSUNyeXB0b0tleUhNQUMgKikga2V5KS0+Z2V0V2luS2V5UHJvdigpOworCQlIQ1JZUFRLRVkgayA9ICgoV2luQ0FQSUNyeXB0b0tleUhNQUMgKikga2V5KS0+Z2V0V2luS2V5KCk7CisKKwkJZlJlc3VsdCA9IENyeXB0Q3JlYXRlSGFzaCgKKwkJCXAsCisJCQlDQUxHX0hNQUMsCisJCQlrLAorCQkJMCwKKwkJCSZtX2gpOworCisJCWlmIChmUmVzdWx0ID09IDAgfHwgbV9oID09IDApIHsKKwkJCURXT1JEIGVycm9yID0gR2V0TGFzdEVycm9yKCk7CisJCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1ERXJyb3IsCisJCQkJIldpbkNBUEk6SGFzaDo6c2V0S2V5IC0gRXJyb3IgY3JlYXRpbmcgaW50ZXJuYWxseSBrZXllZCBoYXNoIG9iamVjdCIpOyAKKwkJfQorCisJCS8vIFNldCB0aGUgSE1BQyBhbGdvcml0aG0KKwkJSE1BQ19JTkZPIGhpOworCisJCWhpLkhhc2hBbGdpZCA9IG1fYWxnSWQ7CisJCWhpLnBiSW5uZXJTdHJpbmcgPSBOVUxMOwkJLy8gVXNlIGRlZmF1bHQgaW5uZXIgYW5kIG91dGVyIHN0cmluZ3MKKwkJaGkuY2JJbm5lclN0cmluZyA9IDA7CisJCWhpLnBiT3V0ZXJTdHJpbmcgPSBOVUxMOworCQloaS5jYk91dGVyU3RyaW5nID0gMDsKKworCQlmUmVzdWx0ID0gQ3J5cHRTZXRIYXNoUGFyYW0oCisJCQltX2gsCisJCQlIUF9ITUFDX0lORk8sCisJCQkoQllURSAqKSAmaGksCisJCQkwKTsKKworCQlpZiAoZlJlc3VsdCA9PSAwIHx8IG1faCA9PSAwKSB7CisJCQlEV09SRCBlcnJvciA9IEdldExhc3RFcnJvcigpOworCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpNREVycm9yLAorCQkJCSJXaW5DQVBJOkhhc2g6OnNldEtleSAtIEVycm9yIHNldHRpbmcgSEFTSF9JTkZPIG9iamVjdCIpOyAKKwkJfQorCisKKworCQlyZXR1cm47CisKKwl9CisKKwkvLyBOZWVkIHRvIGxvYWQgZnJvbSByYXcgYml0IHN0cmluZworCisJc2FmZUJ1ZmZlciBrZXlCdWY7CisJdW5zaWduZWQgaW50IGtleUxlbiA9ICgoWFNFQ0NyeXB0b0tleUhNQUMgKikga2V5KS0+Z2V0S2V5KGtleUJ1Zik7CisJCisJaWYgKGtleUxlbiA+IG1fYmxvY2tTaXplKSB7CisKKwkJSENSWVBUSEFTSCBoOworCisJCWZSZXN1bHQgPSBDcnlwdENyZWF0ZUhhc2goCisJCQltX3AsCisJCQltX2FsZ0lkLAorCQkJMCwKKwkJCTAsCisJCQkmaCk7CisKKwkJaWYgKGZSZXN1bHQgPT0gMCB8fCBoID09IDApIHsKKwkJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6TURFcnJvciwKKwkJCQkiV2luQ0FQSTpIYXNoOjpzZXRLZXkgLSBFcnJvciBjcmVhdGluZyBoYXNoIG9iamVjdCIpOyAKKwkJfQorCisJCWZSZXN1bHQgPSBDcnlwdEhhc2hEYXRhKAorCQkJaCwKKwkJCWtleUJ1Zi5yYXdCdWZmZXIoKSwKKwkJCWtleUxlbiwKKwkJCTApOworCisJCWlmIChmUmVzdWx0ID09IDAgfHwgaCA9PSAwKSB7CisJCQlpZiAoaCkKKwkJCQlDcnlwdERlc3Ryb3lIYXNoKGgpOworCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpNREVycm9yLAorCQkJCSJXaW5DQVBJOkhhc2g6OnNldEtleSAtIEVycm9yIGhhc2hpbmcga2V5IGRhdGEiKTsgCisJCX0KKworCQlCWVRFIG91dERhdGFbWFNFQ19NQVhfSEFTSF9TSVpFXTsKKwkJRFdPUkQgb3V0RGF0YUxlbiA9IFhTRUNfTUFYX0hBU0hfU0laRTsKKworCQlDcnlwdEdldEhhc2hQYXJhbSgKKwkJCWgsCisJCQlIUF9IQVNIVkFMLAorCQkJb3V0RGF0YSwKKwkJCSZvdXREYXRhTGVuLAorCQkJMCk7CisKKwkJaWYgKGZSZXN1bHQgPT0gMCB8fCBoID09IDApIHsKKwkJCWlmIChoKQorCQkJCUNyeXB0RGVzdHJveUhhc2goaCk7CisJCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1ERXJyb3IsCisJCQkJIldpbkNBUEk6SGFzaDo6c2V0S2V5IC0gRXJyb3IgZ2V0dGluZyBoYXNoIHJlc3VsdCIpOyAKKwkJfQorCisJCWtleUJ1Zi5zYk1lbWNweUluKG91dERhdGEsIG91dERhdGFMZW4pOworCQlrZXlMZW4gPSBvdXREYXRhTGVuOworCisJCWlmIChoKQorCQkJQ3J5cHREZXN0cm95SGFzaChoKTsKKworCisJfQorCisJLy8gTm93IGNyZWF0ZSB0aGUgaXBhZCBhbmQgb3BhZCBrZXllZCB2YWx1ZXMKKwltZW1jcHkobV9pcGFkS2V5ZWQsIGlwYWQsIG1fYmxvY2tTaXplKTsKKwltZW1jcHkobV9vcGFkS2V5ZWQsIG9wYWQsIG1fYmxvY2tTaXplKTsKKworCS8vIFhPUiB3aXRoIHRoZSBrZXkKKwlmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGtleUxlbjsgKytpKSB7CisJCW1faXBhZEtleWVkW2ldID0ga2V5QnVmW2ldIF4gbV9pcGFkS2V5ZWRbaV07CisJCW1fb3BhZEtleWVkW2ldID0ga2V5QnVmW2ldIF4gbV9vcGFkS2V5ZWRbaV07CisJfQorCisKKwkvLyBOb3cgY3JlYXRlIHRoZSBoYXNoIG9iamVjdCwgYW5kIHN0YXJ0IHdpdGggdGhlIGlwYWQgb3BlcmF0aW9uCisJZlJlc3VsdCA9IENyeXB0Q3JlYXRlSGFzaCgKKwkJbV9wLAorCQltX2FsZ0lkLAorCQkwLAorCQkwLAorCQkmbV9oKTsKKworCWlmIChmUmVzdWx0ID09IDAgfHwgbV9oID09IDApIHsKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpNREVycm9yLAorCQkJIldpbkNBUEk6SGFzaEhNQUMgLSBFcnJvciBjcmVhdGluZyBoYXNoIG9iamVjdCIpOyAKKwl9CisKKwlmUmVzdWx0ID0gQ3J5cHRIYXNoRGF0YSgKKwkJbV9oLAorCQltX2lwYWRLZXllZCwKKwkJbV9ibG9ja1NpemUsCisJCTApOworCisJaWYgKGZSZXN1bHQgPT0gMCB8fCBtX2ggPT0gMCkgeworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1ERXJyb3IsCisJCQkiV2luQ0FQSTpIYXNoSE1BQyAtIEVycm9yIHBlcmZvcm1pbmcgaW5pdGlhbCBpcGFkIGRpZ2VzdCIpOyAKKwl9CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBIYXNoIG9wZXJhdGlvbnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgV2luQ0FQSUNyeXB0b0hhc2hITUFDOjpoYXNoKHVuc2lnbmVkIGNoYXIgKiBkYXRhLCAKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBsZW5ndGgpIHsKKworCWlmIChtX2ggPT0gMCkgeworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1ERXJyb3IsCisJCQkiV2luQ0FQSTpIYXNoSE1BQzo6aGFzaCgpIC0gQ2FsbGVkIHByaW9yIHRvIHNldHRpbmcga2V5Iik7IAorCX0KKworCUJPT0wgZlJlc3VsdCA9IENyeXB0SGFzaERhdGEoCisJCW1faCwKKwkJZGF0YSwKKwkJbGVuZ3RoLAorCQkwKTsKKworCWlmIChmUmVzdWx0ID09IDApIHsKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpNREVycm9yLAorCQkJIldpbkNBUEk6SGFzaCAtIEVycm9yIEhhc2hpbmcgRGF0YSIpOyAKKwl9CisKK30KKwordW5zaWduZWQgaW50IFdpbkNBUElDcnlwdG9IYXNoSE1BQzo6ZmluaXNoKHVuc2lnbmVkIGNoYXIgKiBoYXNoLAorCQkJCQkJCQkJICAgdW5zaWduZWQgaW50IG1heExlbmd0aCkgeworCisJRFdPUkQgcmV0TGVuOworCUJPT0wgZlJlc3VsdDsKKworCXJldExlbiA9IFhTRUNfTUFYX0hBU0hfU0laRTsKKworCWZSZXN1bHQgPSBDcnlwdEdldEhhc2hQYXJhbSgKKwkJbV9oLAorCQlIUF9IQVNIVkFMLAorCQltX21kVmFsdWUsCisJCSZyZXRMZW4sCisJCTApOworCisJaWYgKGZSZXN1bHQgPT0gMCkgeworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1ERXJyb3IsCisJCQkiV2luQ0FQSTpIYXNoIC0gRXJyb3IgZ2V0dGluZyBoYXNoIHZhbHVlIik7IAorCX0KKworCS8vIFBlcmZvcm0gdGhlIG9wYWQgb3BlcmF0aW9uCisJSENSWVBUSEFTSCBoOworCWZSZXN1bHQgPSBDcnlwdENyZWF0ZUhhc2goCisJCW1fcCwKKwkJbV9hbGdJZCwKKwkJMCwKKwkJMCwKKwkJJmgpOworCisJaWYgKGZSZXN1bHQgPT0gMCB8fCBoID09IDApIHsKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpNREVycm9yLAorCQkJIldpbkNBUEk6SGFzaDo6ZmluaXNoIC0gRXJyb3IgY3JlYXRpbmcgaGFzaCBvYmplY3QgZm9yIG9wYWQgb3BlcmF0aW9uIik7IAorCX0KKworCWZSZXN1bHQgPSBDcnlwdEhhc2hEYXRhKAorCQloLAorCQltX29wYWRLZXllZCwKKwkJbV9ibG9ja1NpemUsCisJCTApOworCisJaWYgKGZSZXN1bHQgPT0gMCB8fCBoID09IDApIHsKKwkJaWYgKGgpCisJCQlDcnlwdERlc3Ryb3lIYXNoKGgpOworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1ERXJyb3IsCisJCQkiV2luQ0FQSTpIYXNoOjpmaW5pc2ggLSBFcnJvciBoYXNoaW5nIG9wYWQgZGF0YSIpOyAKKwl9CisKKwlmUmVzdWx0ID0gQ3J5cHRIYXNoRGF0YSgKKwkJaCwKKwkJbV9tZFZhbHVlLAorCQlyZXRMZW4sCisJCTApOworCisJaWYgKGZSZXN1bHQgPT0gMCB8fCBoID09IDApIHsKKwkJaWYgKGgpCisJCQlDcnlwdERlc3Ryb3lIYXNoKGgpOworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1ERXJyb3IsCisJCQkiV2luQ0FQSTpIYXNoOjpmaW5pc2ggLSBFcnJvciBoYXNoaW5nIGlwYWQgaGFzaCB0byBvcGFkIik7IAorCX0KKworCS8vIFJlYWQgb3V0IHRoZSBmaW5hbCBoYXNoCisJcmV0TGVuID0gWFNFQ19NQVhfSEFTSF9TSVpFOworCisJZlJlc3VsdCA9IENyeXB0R2V0SGFzaFBhcmFtKAorCQloLAorCQlIUF9IQVNIVkFMLAorCQltX21kVmFsdWUsCisJCSZyZXRMZW4sCisJCTApOworCisJQ3J5cHREZXN0cm95SGFzaChoKTsKKworCW1fbWRMZW4gPSByZXRMZW47CisJcmV0TGVuID0gKG1heExlbmd0aCA+IG1fbWRMZW4gPyBtX21kTGVuIDogbWF4TGVuZ3RoKTsKKwltZW1jcHkoaGFzaCwgbV9tZFZhbHVlLCByZXRMZW4pOworCisJcmV0dXJuICh1bnNpZ25lZCBpbnQpIHJldExlbjsKKworfQorCisvLyBHZXQgaW5mb3JtYXRpb24KKworWFNFQ0NyeXB0b0hhc2g6Okhhc2hUeXBlIFdpbkNBUElDcnlwdG9IYXNoSE1BQzo6Z2V0SGFzaFR5cGUodm9pZCkgY29uc3QgeworCisJcmV0dXJuIG1faGFzaFR5cGU7CQkJLy8gVGhpcyBjb3VsZCBiZSBhbnkga2luZCBvZiBoYXNoCisKK30KKworI2VuZGlmIC8qIEhBVkVfV0lOQ0FQSSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b0hhc2hITUFDLmhwcCBiL2Mvc3JjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9IYXNoSE1BQy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUwNGZiNgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9IYXNoSE1BQy5ocHAKQEAgLTAsMCArMSwxOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFdpbkNBUElDcnlwdG9IYXNoSE1BQyA6PSBXaW5kb3dzIENBUEkgSW1wbGVtZW50YXRpb24gb2YgSE1BQworICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBXSU5DQVBJQ1JZUFRPSEFTSEhNQUNfSU5DTFVERQorI2RlZmluZSBXSU5DQVBJQ1JZUFRPSEFTSEhNQUNfSU5DTFVERQorCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9IYXNoLmhwcD4KKworI2lmIGRlZmluZWQgKEhBVkVfV0lOQ0FQSSkKKworI2lmICFkZWZpbmVkKF9XSU4zMl9XSU5OVCkKKyMJZGVmaW5lIF9XSU4zMl9XSU5OVCAweDA0MDAKKyNlbmRpZgorCisjaW5jbHVkZSA8d2luY3J5cHQuaD4KKworY2xhc3MgV2luQ0FQSUNyeXB0b1Byb3ZpZGVyOworCisvKioKKyAqIEBpbmdyb3VwIHdpbmNhcGljcnlwdG8KKyAqLworCisvKioKKyAqIFxicmllZiBJbXBsZW1lbnRhdGlvbiBvZiBITUFDIEhhc2ggZnVuY3Rpb25zIGluIHRoZSBXaW5kb3dzIHByb3ZpZGVycworICoKKyAqIFVzZXMgdGhlIFdpbmRvd3MgQ3J5cHQqIEFQSSBmdW5jdGlvbnMgdG8gaW1wbGVtZW50IGFuIEhNQUMuCisgKgorICogVW5mb3J0dW5hdGVseSB0aGUgV2luZG93cyBDcnlwdG8gQVBJIGRvZXMgbm90IGFsbG93IGNhbGxlcnMgdG8gZW50ZXIgYW4KKyAqIEhNQUMga2V5IGRpcmVjdGx5LiAgSXQgcmVsaWVzIG9uIGEgc2VlZCBiZWluZyBlbnRlcmVkIGludG8gYSBkaWdlc3QKKyAqIGZ1bmN0aW9uIHRoYXQgaXMgdGhlbiB1c2VkIHRvIGRlcml2ZSBhIGtleSB0aGF0IGNhbiBiZSB1c2VkIGluIGFuCisgKiBITUFDIGZ1bmN0aW9uLgorICoKKyAqIFR3byB0eXBlcyBvZiBrZXkgY2FuIHRoZXJlZm9yZSBiZSB1c2VkIC0gYSBkaXJlY3QgV2luZG93cyBrZXksIG9yCisgKiBhICJzdGFuZGFyZCIgc3RyaW5nIGFzIHRoZSBITUFDIGtleS4gIEluIHRoZSBsYXR0ZXIgY2FzZSwgdGhlIEhNQUMKKyAqIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGludGVybmFsbHkgYXJvdW5kIGEgc3RhbmRhcmQgV2luZG93cworICogaGFzaCBmdW5jdGlvbi4gIEluIHRoZSBmb3JtZXIgY2FzZSwgdGhlIFdpbmRvd3MgSE1BQyBmdW5jdGlvbnMgYXJlCisgKiB1c2VkLiAgKFRoZSBsYXR0ZXIgY2FzZSBpcyBtYWlubHkgZm9yIGludGVyb3BlcmFiaWxpdHkgdGVzdGluZywgd2hlcmUKKyAqIHRoZSBrZXkgaXMgcHJvdmlkZWQgYW5kIG5lZWRzIHRvIGJlIGVudGVyZWQgImFzIGlzIi4KKyAqCisgKi8KKworY2xhc3MgRFNJR19FWFBPUlQgV2luQ0FQSUNyeXB0b0hhc2hITUFDIDogcHVibGljIFhTRUNDcnlwdG9IYXNoIHsKKworCitwdWJsaWMgOgorCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgQ29uc3RydWN0b3IKKwkgKgorCSAqIENyZWF0ZSB0aGUgb2JqZWN0LCB3aXRoIHRoZSBpbmRpY2F0ZWQgYWxnb3JpdGhtCisJICogKEN1cnJlbnRseSBzdXBwb3J0cyBNRDUgYW5kIFNIQTEpCisJICoKKwkgKgorCSAqIEBwYXJhbSBwcm92IGhhbmRsZSB0byBhIHByb3ZpZGVyIHRoYXQgc3VwcG9ydHMgdGhlIHJlcXVpcmVkIGFsZ29yaXRobS4KKwkgKiBCb3RoIFBST1ZfUlNBX0ZVTEwgYW5kIFBST1ZfRFNTIHN1cHBvcnQgTUQ1IGFuZCBTSEExCisJICogQHBhcmFtIGFsZyBEaWdlc3QgYWxnb3JpdGhtIHRvIHVzZQorCSAqLworCQorCVdpbkNBUElDcnlwdG9IYXNoSE1BQyhIQ1JZUFRQUk9WIHByb3YsIFhTRUNDcnlwdG9IYXNoOjpIYXNoVHlwZSBhbGcpOworCXZpcnR1YWwgfldpbkNBUElDcnlwdG9IYXNoSE1BQygpOworCisJLy9AfQorCisJLyoqIEBuYW1lIEhNQUMgRnVuY3Rpb25zICovCisJLy9AeworCQorCS8qKgorCSAqXGJyaWVmIFNldCB0aGUgSE1BQyBrZXkKKwkgKgorCSAqIFNldHMgdGhlIGtleSAtIHdoaWNoIG5lZWRzIHRvIGhhdmUgYSBiYXNlIGNsYXNzIG9mIAorCSAqIFdpbkNBUElDcnlwdG9LZXlITUFDLgorCSAqCisJICogQHBhcmFtIGtleSBUaGUga2V5IHRoZSBITUFDIGZ1bmN0aW9uIHNob3VsZCB1c2UuCisJICovCisKKwl2aXJ0dWFsIHZvaWQJCXNldEtleShYU0VDQ3J5cHRvS2V5ICoga2V5KTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBIYXNoIGZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBSZXNldCB0aGUgaGFzaCBmdW5jdGlvbgorCSAqCisJICogUmUtaW5pdGlhbGlzZXMgdGhlIGRpZ2VzdCBzdHJ1Y3R1cmUuCisJICovCisKKwl2aXJ0dWFsIHZvaWQJCXJlc2V0KHZvaWQpOworCisJLyoqCisJICogXGJyaWVmIEhhc2ggc29tZSBkYXRhLgorCSAqCisJICogVGFrZSBsZW5ndGggYnl0ZXMgb2YgZGF0YSBmcm9tIHRoZSBkYXRhIGJ1ZmZlciBhbmQgdXBkYXRlIHRoZSBoYXNoCisJICogdGhhdCBhbHJlYWR5IGV4aXN0cy4gIFRoaXMgZnVuY3Rpb24gbWF5IChhbmQgbm9ybWFsbHkgd2lsbCkgYmUgY2FsbGVkCisJICogbWFueSB0aW1lcyBmb3IgbGFyZ2UgYmxvY2tzIG9mIGRhdGEuCisJICoKKwkgKiBAcGFyYW0gZGF0YSBUaGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8gYmUgaGFzaGVkLgorCSAqIEBwYXJhbSBsZW5ndGggVGhlIG51bWJlciBvZiBieXRlcyB0byBiZSByZWFkIGZyb20gZGF0YQorCSAqLworCisJdmlydHVhbCB2b2lkCQloYXNoKHVuc2lnbmVkIGNoYXIgKiBkYXRhLCAKKwkJCQkJCQkgdW5zaWduZWQgaW50IGxlbmd0aCk7CisKKwkJCQkJCQkgLyoqCisJICogXGJyaWVmIEZpbmlzaCB1cCBhIERpZ2VzdCBvcGVyYXRpb24gYW5kIHJlYWQgdGhlIHJlc3VsdC4KKwkgKgorCSAqIFRoaXMgY2FsbCB0ZWxscyB0aGUgQ3J5cHRvSGFzaCBvYmplY3QgdGhhdCB0aGUgaW5wdXQgaXMgY29tcGxldGUgYW5kCisJICogdG8gZmluYWxpc2UgdGhlIERpZ2VzdC4gIFRoZSBvdXRwdXQgb2YgdGhlIGRpZ2VzdCBpcyByZWFkIGludG8gdGhlIAorCSAqIGhhc2ggYnVmZmVyIChhdCBtb3N0IG1heExlbmd0aCBieXRlcykuICBUaGlzIGlzIGVmZmVjdGl2ZWx5IHRoZQorCSAqIHNpZ25hdHVyZSBmb3IgdGhlIGRhdGEgdGhhdCBoYXMgYmVlbiBydW4gdGhyb3VnaCB0aGUgSE1BQyBmdW5jdGlvbi4KKwkgKgorCSAqIEBwYXJhbSBoYXNoIFRoZSBidWZmZXIgdGhlIGhhc2ggc2hvdWxkIGJlIHJlYWQgaW50by4KKwkgKiBAcGFyYW0gbWF4TGVuZ3RoIFRoZSBtYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byBiZSByZWFkIGludG8gaGFzaAorCSAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgYnl0ZXMgY29waWVkIGludG8gdGhlIGhhc2ggYnVmZmVyCisJICovCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCBmaW5pc2godW5zaWduZWQgY2hhciAqIGhhc2gsCisJCQkJCQkJCXVuc2lnbmVkIGludCBtYXhMZW5ndGgpOworCisJLy9AfQorCisJLyoqIEBuYW1lIEluZm9ybWF0aW9uIGZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqXGJyaWVmCisJICoKKwkgKiBEZXRlcm1pbmUgdGhlIGhhc2ggdHlwZSBvZiB0aGlzIG9iamVjdAorCSAqCisJICogQHJldHVybnMgVGhlIGhhc2ggdHlwZQorCSAqLworCisJdmlydHVhbCBIYXNoVHlwZSBnZXRIYXNoVHlwZSh2b2lkKSBjb25zdDsKKworCS8vQH0KKworcHJpdmF0ZToKKworCS8vIE5vdCBpbXBsZW1lbnRlZCBjb25zdHJ1Y3RvcnMKKwlXaW5DQVBJQ3J5cHRvSGFzaEhNQUMoKTsKKworCXVuc2lnbmVkIGNoYXIJCQkJbV9tZFZhbHVlW1hTRUNfTUFYX0hBU0hfU0laRV07CQkvLyBGaW5hbCBvdXRwdXQKKwl1bnNpZ25lZCBpbnQJCQkJbV9tZExlbjsKKworCUFMR19JRAkJCQkJCW1fYWxnSWQ7CisJWFNFQ0NyeXB0b0hhc2g6Okhhc2hUeXBlCW1faGFzaFR5cGU7CisKKwlIQ1JZUFRQUk9WCQkJCQltX3A7CisJSENSWVBUSEFTSAkJCQkJbV9oOworCisJdW5zaWduZWQgY2hhcgkJCQltX2lwYWRLZXllZFtYU0VDX01BWF9IQVNIX1NJWkVdOworCXVuc2lnbmVkIGNoYXIJCQkJbV9vcGFkS2V5ZWRbWFNFQ19NQVhfSEFTSF9TSVpFXTsKKworCXVuc2lnbmVkIGludAkJCQltX2Jsb2NrU2l6ZTsJCS8vIEJsb2NrIHNpemUgKGJ5dGVzKSBmb3IgdXNlZCBhbGcuCisKKwkvLyBJbnRlcm5hbCBmdW5jdGlvbnMKKwl2b2lkIGVyYXNlS2V5cygpOworCit9OworCisjZW5kaWYgLyogSEFWRV9XSU5DQVBJICovCisjZW5kaWYgLyogV0lOQ0FQSUNSWVBUT0hBU0hITUFDX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9LZXlEU0EuY3BwIGIvYy9zcmMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b0tleURTQS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRhNTRjZAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9LZXlEU0EuY3BwCkBAIC0wLDAgKzEsNzcwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBXaW5DQVBJQ3J5cHRvS2V5RFNBIDo9IERTQSBLZXlzCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvS2V5RFNBLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9Qcm92aWRlci5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNDcnlwdC9YU0NyeXB0Q3J5cHRvQmFzZTY0LmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvRXhjZXB0aW9uLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisKKyNpZiBkZWZpbmVkIChIQVZFX1dJTkNBUEkpCisKKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvSmFuaXRvci5ocHA+CisKK1hTRUNfVVNJTkdfWEVSQ0VTKEFycmF5SmFuaXRvcik7CisKK1dpbkNBUElDcnlwdG9LZXlEU0E6OldpbkNBUElDcnlwdG9LZXlEU0EoSENSWVBUUFJPViBwcm92KSB7CisKKwkvLyBDcmVhdGUgYSBuZXcga2V5IHRvIGJlIGxvYWRlZCBhcyB3ZSBnbworCisJbV9rZXkgPSAwOworCW1fcCA9IHByb3Y7CisJbV9rZXlTcGVjID0gMDsKKworCW1wX1AgPSBOVUxMOworCW1wX1EgPSBOVUxMOworCW1wX0cgPSBOVUxMOworCW1wX1kgPSBOVUxMOworCit9OworCisvLyAiSGlkZGVuIiBXaW5DQVBJIGNvbnN0cnVjdG9yCisKK1dpbkNBUElDcnlwdG9LZXlEU0E6OldpbkNBUElDcnlwdG9LZXlEU0EoSENSWVBUUFJPViBwcm92LCAKKwkJCQkJCQkJCQkgSENSWVBUS0VZIGspIDoKK21fcChwcm92KSB7CisKKwltX2tleSA9IGs7CQkvLyBOT1RFIC0gV2UgT1dOIHRoaXMgaGFuZGxlCisJbV9rZXlTcGVjID0gMDsKKworCW1wX1AgPSBtcF9RID0gbXBfRyA9IG1wX1kgPSBOVUxMOworCW1fUExlbiA9IG1fUUxlbiA9IG1fR0xlbiA9IG1fWUxlbiA9IDA7CisKK30KKworV2luQ0FQSUNyeXB0b0tleURTQTo6V2luQ0FQSUNyeXB0b0tleURTQShIQ1JZUFRQUk9WIHByb3YsIAorCQkJCQkJCQkJCSBEV09SRCBrZXlTcGVjLAorCQkJCQkJCQkJCSBib29sIGlzUHJpdmF0ZSkgOgorbV9wKHByb3YpIHsKKworCWlmIChpc1ByaXZhdGUgPT0gZmFsc2UpIHsKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OkRTQUVycm9yLAorCQkJIlB1YmxpYyBrZXlzIGRlZmluZWQgdmlhIGtleVNwZWMgY3RvciBub3QgeWV0IHN1cHBvcnRlZCIpOworCisJCQorCX0KKwkKKwltX2tleSA9IDA7CisJbV9rZXlTcGVjID0ga2V5U3BlYzsKKworCW1wX1AgPSBtcF9RID0gbXBfRyA9IG1wX1kgPSBOVUxMOworCW1fUExlbiA9IG1fUUxlbiA9IG1fR0xlbiA9IG1fWUxlbiA9IDA7CisKK30KKworV2luQ0FQSUNyeXB0b0tleURTQTo6fldpbkNBUElDcnlwdG9LZXlEU0EoKSB7CisKKworCS8vIElmIHdlIGhhdmUgYSBEU0EsIGRlbGV0ZSBpdAorCisJaWYgKG1fa2V5ICE9IDApCisJCUNyeXB0RGVzdHJveUtleShtX2tleSk7CisKKwlpZiAobXBfUCAhPSBOVUxMKQorCQlkZWxldGVbXSBtcF9QOworCWlmIChtcF9RICE9IE5VTEwpCisJCWRlbGV0ZVtdIG1wX1E7CisJaWYgKG1wX0cgIT0gTlVMTCkKKwkJZGVsZXRlW10gbXBfRzsKKwlpZiAobXBfWSAhPSBOVUxMKQorCQlkZWxldGVbXSBtcF9ZOworCit9OworCisvLyBHZW5lcmljIGtleSBmdW5jdGlvbnMKKworWFNFQ0NyeXB0b0tleTo6S2V5VHlwZSBXaW5DQVBJQ3J5cHRvS2V5RFNBOjpnZXRLZXlUeXBlKCkgY29uc3QgeworCisJLy8gRmluZCBvdXQgd2hhdCB3ZSBoYXZlCisJaWYgKG1fa2V5ID09IE5VTEwpIHsKKworCQkvLyBGb3Igbm93IHdlIGRvbid0IHJlYWxseSB1bmRlcnN0YW5kIFByaXZhdGUgV2luZG93cyBrZXlzCisJCWlmIChtX2tleVNwZWMgIT0gMCkKKwkJCXJldHVybiBLRVlfRFNBX1BSSVZBVEU7CisJCQorCQkvLyBDaGVjayBpZiB3ZSBoYXZlIHBhcmFtZXRlcnMgbG9hZGVkCisJCWlmIChtcF9QID09IE5VTEwgfHwKKwkJCW1wX1EgPT0gTlVMTCB8fAorCQkJbXBfRyA9PSBOVUxMIHx8CisJCQltcF9ZID09IE5VTEwpCisJCQlyZXR1cm4gS0VZX05PTkU7CisJCWVsc2UKKwkJCXJldHVybiBLRVlfRFNBX1BVQkxJQzsKKwl9CisKKwlpZiAobV9rZXlTcGVjICE9IDApCisJCXJldHVybiBLRVlfRFNBX1BBSVI7CisKKwkvLyBJZiB3ZSBoYXZlIG1fa2V5IC0gaXQgbXVzdCBiZSBwdWJsaWMKKworCXJldHVybiBLRVlfRFNBX1BVQkxJQzsKKworfQorCit2b2lkIFdpbkNBUElDcnlwdG9LZXlEU0E6OmxvYWRQQmFzZTY0QmlnTnVtcyhjb25zdCBjaGFyICogYjY0LCB1bnNpZ25lZCBpbnQgbGVuKSB7CisKKwlpZiAobXBfUCAhPSBOVUxMKSB7CisJCWRlbGV0ZVtdIG1wX1A7CisJCW1wX1AgPSBOVUxMOwkJLy8gSW4gY2FzZSB3ZSBnZXQgYW4gZXhjZXB0aW9uCisJfQorCisJbXBfUCA9IFdpbkNBUElDcnlwdG9Qcm92aWRlcjo6YjY0MldpbkJOKGI2NCwgbGVuLCBtX1BMZW4pOworCit9CisKK3ZvaWQgV2luQ0FQSUNyeXB0b0tleURTQTo6bG9hZFFCYXNlNjRCaWdOdW1zKGNvbnN0IGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBsZW4pIHsKKworCWlmIChtcF9RICE9IE5VTEwpIHsKKwkJZGVsZXRlW10gbXBfUTsKKwkJbXBfUSA9IE5VTEw7CQkvLyBJbiBjYXNlIHdlIGdldCBhbiBleGNlcHRpb24KKwl9CisKKwltcF9RID0gV2luQ0FQSUNyeXB0b1Byb3ZpZGVyOjpiNjQyV2luQk4oYjY0LCBsZW4sIG1fUUxlbik7Cit9CisKK3ZvaWQgV2luQ0FQSUNyeXB0b0tleURTQTo6bG9hZEdCYXNlNjRCaWdOdW1zKGNvbnN0IGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBsZW4pIHsKKworCWlmIChtcF9HICE9IE5VTEwpIHsKKwkJZGVsZXRlW10gbXBfRzsKKwkJbXBfRyA9IE5VTEw7CQkvLyBJbiBjYXNlIHdlIGdldCBhbiBleGNlcHRpb24KKwl9CisKKwltcF9HID0gV2luQ0FQSUNyeXB0b1Byb3ZpZGVyOjpiNjQyV2luQk4oYjY0LCBsZW4sIG1fR0xlbik7Cit9CisKK3ZvaWQgV2luQ0FQSUNyeXB0b0tleURTQTo6bG9hZFlCYXNlNjRCaWdOdW1zKGNvbnN0IGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBsZW4pIHsKKworCWlmIChtcF9ZICE9IE5VTEwpIHsKKwkJZGVsZXRlW10gbXBfWTsKKwkJbXBfWSA9IE5VTEw7CQkvLyBJbiBjYXNlIHdlIGdldCBhbiBleGNlcHRpb24KKwl9CisKKwltcF9ZID0gV2luQ0FQSUNyeXB0b1Byb3ZpZGVyOjpiNjQyV2luQk4oYjY0LCBsZW4sIG1fWUxlbik7Cit9CisKK3ZvaWQgV2luQ0FQSUNyeXB0b0tleURTQTo6bG9hZEpCYXNlNjRCaWdOdW1zKGNvbnN0IGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBsZW4pIHsKKy8qCisJRG8gbm90aGluZworKi8KK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFZlcmlmeSBhIHNpZ25hdHVyZSBlbmNvZGVkIGFzIGEgQmFzZTY0IHN0cmluZworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBXaW5DQVBJQ3J5cHRvS2V5RFNBOjppbXBvcnRLZXkodm9pZCkgeworCQorCWlmIChtX2tleSAhPSAwIHx8CisJCW1wX1AgPT0gTlVMTCB8fAorCQltcF9RID09IE5VTEwgfHwKKwkJbXBfRyA9PSBOVUxMIHx8IAorCQltcF9ZID09IE5VTEwpCisJCXJldHVybjsKKworCS8vIERvIHNvbWUgYmFzaWMgY2hlY2tzCisJaWYgKChtX1FMZW4gPiAyMCkgfAorCQkobV9HTGVuID4gbV9QTGVuKSB8CisJCShtX1lMZW4gPiBtX1BMZW4pKSB7CisKKwkJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6RFNBRXJyb3IsCisJCQkJIldpbkNBUEk6RFNBIC0gUGFyYW1ldGVyIGxlbmd0aHMgaW5jb25zaXN0ZW50Iik7CisJfQorCisJLy8gQ3JlYXRlIGEgRFNTIFB1YmxpYy1LZXkgYmxvYgorCisJLy8gRmlyc3QgYnVpbGQgYSBidWZmZXIgdG8gaG9sZCBldmVyeXRoaW5nCisJQllURSAqIGJsb2JCdWZmZXI7CisJdW5zaWduZWQgaW50IGJsb2JCdWZmZXJMZW4gPSBXSU5DQVBJX0JMT0JIRUFERVJMRU4gKyBXSU5DQVBJX0RTU1BVQktFWUxFTiArICgzICogbV9QTGVuKSArIDB4MTQgKyBXSU5DQVBJX0RTU1NFRURMRU47CisJWFNFQ25ldyhibG9iQnVmZmVyLCBCWVRFW2Jsb2JCdWZmZXJMZW5dKTsKKwlBcnJheUphbml0b3I8QllURT4gal9ibG9iQnVmZmVyKGJsb2JCdWZmZXIpOworCisJLy8gQmxvYiBoZWFkZXIKKwlCTE9CSEVBREVSICogaGVhZGVyID0gKEJMT0JIRUFERVIgKikgYmxvYkJ1ZmZlcjsKKworCWhlYWRlci0+YlR5cGUgPSBQVUJMSUNLRVlCTE9COworCWhlYWRlci0+YlZlcnNpb24gPSAweDAyOwkJCS8vIFdlIGFyZSB1c2luZyBhIHZlcnNpb24gMiBibG9iCisJaGVhZGVyLT5yZXNlcnZlZCA9IDA7CisJaGVhZGVyLT5haUtleUFsZyA9IENBTEdfRFNTX1NJR047CisKKwkvLyBOb3cgdGhlIHB1YmxpYyBrZXkgaGVhZGVyCisJRFNTUFVCS0VZICogcHVia2V5ID0gKERTU1BVQktFWSAqKSAoYmxvYkJ1ZmZlciArIFdJTkNBUElfQkxPQkhFQURFUkxFTik7CisKKwlwdWJrZXktPm1hZ2ljID0gMHgzMTUzNTM0NDsJCS8vIEFTQ0lJIGVuY29kaW5nIG9mIERTUzEKKwlwdWJrZXktPmJpdGxlbiA9IG1fUExlbiAqIDg7CQkvLyBOdW1iZXIgb2YgYml0cyBpbiBwcmltZSBtb2R1bHVzCisKKwkvLyBOb3cgY29weSBpbiBlYWNoIG9mIHRoZSBrZXlzCisJQllURSAqIGkgPSAoQllURSAqKSAocHVia2V5KTsKKwlpICs9IFdJTkNBUElfRFNTUFVCS0VZTEVOOworCisJbWVtY3B5KGksIG1wX1AsIG1fUExlbik7CisJaSs9IG1fUExlbjsKKworCS8vIFEKKwltZW1jcHkoaSwgbXBfUSwgbV9RTGVuKTsKKwlpICs9IG1fUUxlbjsKKworCS8vIFBhZCB3aXRoIDBzCisJdW5zaWduZWQgaW50IGo7CisJZm9yIChqID0gbV9RTGVuOyBqIDwgMjAgOyArK2opCisJCSppKysgPSAwOworCisJLy8gR2VuZXJhdG9yCisJbWVtY3B5KGksIG1wX0csIG1fR0xlbik7CisJaSArPSBtX0dMZW47CisJLy8gUGFkCisJZm9yIChqID0gbV9HTGVuOyBqIDwgbV9QTGVuIDsgKytqKQorCQkqaSsrID0gMDsKKworCS8vIFB1YmxpYyBrZXkKKwltZW1jcHkoaSwgbXBfWSwgbV9ZTGVuKTsKKwlpICs9IG1fWUxlbjsKKwkvLyBQYWQKKwlmb3IgKGogPSBtX1lMZW47IGogPCBtX1BMZW4gOyArK2opCisJCSppKysgPSAwOworCisJLy8gU2V0IHNlZWQgdG8gMAorCWZvciAoaiA9IDA7IGogPCBXSU5DQVBJX0RTU1NFRURMRU47ICsraikKKwkJKmkrKyA9IDB4RkY7CS8vIFNFRUQgQ291bnRlciBzZXQgdG8gMHhGRkZGRkZGRiB3aWxsIGNhdXNlIHNlZWQgdG8gYmUgaWdub3JlZAorCisJLy8gTm93IHRoYXQgd2UgaGF2ZSB0aGUgYmxvYiwgaW1wb3J0CisJQk9PTCBmUmVzdWx0ID0gQ3J5cHRJbXBvcnRLZXkoCisJCQkJCW1fcCwKKwkJCQkJYmxvYkJ1ZmZlciwKKwkJCQkJYmxvYkJ1ZmZlckxlbiwKKwkJCQkJMCwJCQkJLy8gTm90IHNpZ25lZAorCQkJCQkwLAkJCQkvLyBObyBmbGFncworCQkJCQkmbV9rZXkpOworCisJaWYgKGZSZXN1bHQgPT0gMCkgeworCQkKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpEU0FFcnJvciwKKwkJCSJXaW5DQVBJOkRTQSBFcnJvciBhdHRlbXB0aW5nIHRvIGltcG9ydCBrZXkgcGFyYW1ldGVycyIpOworCisJfQorCit9CisKK2Jvb2wgV2luQ0FQSUNyeXB0b0tleURTQTo6dmVyaWZ5QmFzZTY0U2lnbmF0dXJlKHVuc2lnbmVkIGNoYXIgKiBoYXNoQnVmLCAKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBoYXNoTGVuLAorCQkJCQkJCQkgY2hhciAqIGJhc2U2NFNpZ25hdHVyZSwKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBzaWdMZW4pIHsKKworCS8vIFVzZSB0aGUgY3VycmVudGx5IGxvYWRlZCBrZXkgdG8gdmFsaWRhdGUgdGhlIEJhc2U2NCBlbmNvZGVkIHNpZ25hdHVyZQorCisJaWYgKG1fa2V5ID09IDApIHsKKworCQkvLyBUcnkgdG8gaW1wb3J0IGZyb20gdGhlIHBhcmFtZXRlcnMKKwkJaW1wb3J0S2V5KCk7CisKKwkJaWYgKG1fa2V5ID09IDApIHsKKwkJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6RFNBRXJyb3IsCisJCQkJIldpbkNBUEk6RFNBIC0gQXR0ZW1wdCB0byB2YWxpZGF0ZSBzaWduYXR1cmUgd2l0aCBlbXB0eSBrZXkiKTsKKwkJfQorCX0KKworCS8vIERlY29kZSB0aGUgc2lnbmF0dXJlCisJdW5zaWduZWQgY2hhciAqIHJhd1NpZzsKKwlEV09SRCByYXdTaWdMZW47CisJWFNFQ25ldyhyYXdTaWcsIEJZVEUgW3NpZ0xlbl0pOworCUFycmF5SmFuaXRvcjxCWVRFPiBqX3Jhd1NpZyhyYXdTaWcpOworCisJLy8gRGVjb2RlIHRoZSBzaWduYXR1cmUKKwlYU0NyeXB0Q3J5cHRvQmFzZTY0IGI2NDsKKworCWI2NC5kZWNvZGVJbml0KCk7CisJcmF3U2lnTGVuID0gYjY0LmRlY29kZSgodW5zaWduZWQgY2hhciAqKSBiYXNlNjRTaWduYXR1cmUsIHNpZ0xlbiwgcmF3U2lnLCBzaWdMZW4pOworCXJhd1NpZ0xlbiArPSBiNjQuZGVjb2RlRmluaXNoKCZyYXdTaWdbcmF3U2lnTGVuXSwgc2lnTGVuIC0gcmF3U2lnTGVuKTsKKworCS8vIFJldmVyc2UgdGhlIHNpZyAtIFdpbmRvd3Mgc3RvcmVzIGludGVnZXJzIGFzIG9jdGV0IHN0cmVhbXMgaW4gbGl0dGxlIGVuZGlhbgorCS8vIG9yZGVyLiAgVGhlIEkyT1NQIGFsZ29yaXRobSB1c2VkIGJ5IFhNTERTaWcgdG8gc3RvcmUgaW50ZWdlcnMgaXMgYmlnIGVuZGlhbgorCisJQllURSByYXdTaWdGaW5hbFs0MF07CisJQllURSAqIGosICprLCAqbCwgKm07CisKKwl1bnNpZ25lZCBjaGFyIHJiWzIwXTsKKwl1bnNpZ25lZCBjaGFyIHNiWzIwXTsKKworCWlmIChyYXdTaWdMZW4gPT0gNDApIHsKKworCQlqID0gcmF3U2lnOworCQlrID0gcmF3U2lnICsgMjA7CisKKwl9IGVsc2UgaWYgKHJhd1NpZ0xlbiA9PSA0NiAmJiBBU04yRFNBU2lnKHJhd1NpZywgcmIsIHNiKSA9PSB0cnVlKSB7CisKKwkJaiA9IHJiOworCQlrID0gc2I7CisKKwl9IGVsc2UgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6RFNBRXJyb3IsCisJCQkiV2luQ0FQSTpEU0E6OlZlcmlmeUJhc2U2NFNpZ25hdHVyZSAtIEV4cGVjdCA0MCBieXRlcyBpbiBhIERTQSBzaWduYXR1cmUiKTsKKwl9CisKKwlsID0gcmF3U2lnRmluYWwgKyAxOTsKKwltID0gcmF3U2lnRmluYWwgKyAzOTsKKwkKKwl3aGlsZSAobCA+PSByYXdTaWdGaW5hbCkgeworCQkqbC0tID0gKmorKzsKKwkJKm0tLSA9ICprKys7CisJfQorCQorCS8vIEhhdmUgdG8gY3JlYXRlIGEgV2luZG93cyBoYXNoIG9iamVjdCBhbmQgZmVlZCBpbiB0aGUgaGFzaAorCUJPT0wgZlJlc3VsdDsKKwlIQ1JZUFRIQVNIIGg7CisJZlJlc3VsdCA9IENyeXB0Q3JlYXRlSGFzaChtX3AsIAorCQkJCQlDQUxHX1NIQTEsIAorCQkJCQkwLCAKKwkJCQkJMCwKKwkJCQkJJmgpOworCisJaWYgKCFmUmVzdWx0KSB7CisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6RFNBRXJyb3IsCisJCQkiV2luQ0FQSTpEU0EgLSBFcnJvciBjcmVhdGluZyBXaW5kb3dzIEhhc2ggT2JqZWN0Iik7CisJfQorCisJLy8gRmVlZCB0aGUgaGFzaCB2YWx1ZSBpbnRvIHRoZSBuZXdseSBjcmVhdGVkIGhhc2ggb2JqZWN0CisJZlJlc3VsdCA9IENyeXB0U2V0SGFzaFBhcmFtKAorCQkJCQloLCAKKwkJCQkJSFBfSEFTSFZBTCwgCisJCQkJCWhhc2hCdWYsIAorCQkJCQkwKTsKKworCWlmICghZlJlc3VsdCkgeworCQlpZiAoaCkKKwkJCUNyeXB0RGVzdHJveUhhc2goaCk7CisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6RFNBRXJyb3IsCisJCQkiV2luQ0FQSTpEU0EgLSBFcnJvciBTZXR0aW5nIEhhc2ggVmFsdWUgaW4gV2luZG93cyBIYXNoIG9iamVjdCIpOworCX0KKworCS8vIE5vdyB2YWxpZGF0ZQorCWZSZXN1bHQgPSBDcnlwdFZlcmlmeVNpZ25hdHVyZSgKKwkJCQloLAorCQkJCXJhd1NpZ0ZpbmFsLAorCQkJCTQwLAorCQkJCW1fa2V5LAorCQkJCU5VTEwsCisJCQkJMCk7CisKKwlpZiAoIWZSZXN1bHQpIHsKKworCQlEV09SRCBlcnJvciA9IEdldExhc3RFcnJvcigpOworCisJCS8qIEZvciBzb21lIHJlYXNvbiwgdGhlIGRlZmF1bHQgTWljcm9zb2Z0IERTUyBwcm92aWRlciBnZW5lcmFsbHkgcmV0dXJucworCQkgKiBOVEVfRkFJTCAod2hpY2ggZGVub3RlcyBhbiBpbnRlcm5hbCBmYWlsdXJlIGluIHRoZSBwcm92aWRlcikgZm9yIGEgCisJCSAqIGZhaWxlZCBzaWduYXR1cmUgcmF0aGVyIHRoYW4gTlRFX0JBRF9TSUdOQVRVUkUKKwkJICovCisKKwkJaWYgKGVycm9yICE9IE5URV9CQURfU0lHTkFUVVJFICYmIGVycm9yICE9IE5URV9GQUlMKSB7CisJCQlpZiAoaCkKKwkJCQlDcnlwdERlc3Ryb3lIYXNoKGgpOworCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpEU0FFcnJvciwKKwkJCSJXaW5DQVBJOkRTQSAtIEVycm9yIG9jY3VycmVkIGluIERTQSB2YWxpZGF0aW9uIik7CisJCX0KKworCQlpZiAoaCkKKwkJCUNyeXB0RGVzdHJveUhhc2goaCk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlpZiAoaCkKKwkJQ3J5cHREZXN0cm95SGFzaChoKTsKKworCXJldHVybiB0cnVlOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU2lnbiBhbmQgZW5jb2RlIHJlc3VsdCBhcyBhIEJhc2U2NCBzdHJpbmcKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwordW5zaWduZWQgaW50IFdpbkNBUElDcnlwdG9LZXlEU0E6OnNpZ25CYXNlNjRTaWduYXR1cmUodW5zaWduZWQgY2hhciAqIGhhc2hCdWYsCisJCXVuc2lnbmVkIGludCBoYXNoTGVuLAorCQljaGFyICogYmFzZTY0U2lnbmF0dXJlQnVmLAorCQl1bnNpZ25lZCBpbnQgYmFzZTY0U2lnbmF0dXJlQnVmTGVuKSB7CisKKwkvLyBTaWduIGEgcHJlLWNhbGN1bGF0ZWQgaGFzaCB1c2luZyB0aGlzIGtleQorCisJaWYgKG1fa2V5U3BlYyA9PSAwKSB7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpEU0FFcnJvciwKKwkJCSJXaW5DQVBJOkRTQSAtIEF0dGVtcHQgdG8gc2lnbiBkYXRhIGEgcHVibGljIG9yIG5vbi1leGlzdGVudCBrZXkiKTsKKwl9CisKKwkvLyBIYXZlIHRvIGNyZWF0ZSBhIFdpbmRvd3MgaGFzaCBvYmplY3QgYW5kIGZlZWQgaW4gdGhlIGhhc2gKKwlCT09MIGZSZXN1bHQ7CisJSENSWVBUSEFTSCBoOworCWZSZXN1bHQgPSBDcnlwdENyZWF0ZUhhc2gobV9wLCAKKwkJCQkJQ0FMR19TSEExLCAKKwkJCQkJMCwgCisJCQkJCTAsCisJCQkJCSZoKTsKKworCWlmICghZlJlc3VsdCkgeworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OkRTQUVycm9yLAorCQkJIldpbkNBUEk6RFNBIC0gRXJyb3IgY3JlYXRpbmcgV2luZG93cyBIYXNoIE9iamVjdCIpOworCX0KKworCS8vIEZlZWQgdGhlIGhhc2ggdmFsdWUgaW50byB0aGUgbmV3bHkgY3JlYXRlZCBoYXNoIG9iamVjdAorCWZSZXN1bHQgPSBDcnlwdFNldEhhc2hQYXJhbSgKKwkJCQkJaCwgCisJCQkJCUhQX0hBU0hWQUwsIAorCQkJCQloYXNoQnVmLCAKKwkJCQkJMCk7CisKKwlpZiAoIWZSZXN1bHQpIHsKKwkJaWYgKGgpCisJCQlDcnlwdERlc3Ryb3lIYXNoKGgpOworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OkRTQUVycm9yLAorCQkJIldpbkNBUEk6RFNBIC0gRXJyb3IgU2V0dGluZyBIYXNoIFZhbHVlIGluIFdpbmRvd3MgSGFzaCBvYmplY3QiKTsKKwl9CisKKwkvLyBOb3cgc2lnbgorCUJZVEUgcmF3U2lnWzUwXTsKKwlEV09SRCByYXdTaWdMZW4gPSA1MDsKKwlmUmVzdWx0ID0gQ3J5cHRTaWduSGFzaCgKKwkJCQloLAorCQkJCW1fa2V5U3BlYywKKwkJCQlOVUxMLAorCQkJCTAsCisJCQkJcmF3U2lnLAorCQkJCSZyYXdTaWdMZW4pOworCisJaWYgKCFmUmVzdWx0IHx8IHJhd1NpZ0xlbiAhPSA0MCkgeworCisJCWlmIChoKQorCQkJQ3J5cHREZXN0cm95SGFzaChoKTsKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpEU0FFcnJvciwKKwkJIldpbkNBUEk6RFNBIC0gRXJyb3Igb2NjdXJyZWQgaW4gRFNBIHNpZ25pbmciKTsKKwl9CisKKwlpZiAoaCkKKwkJQ3J5cHREZXN0cm95SGFzaChoKTsKKwkvLyBOb3cgZW5jb2RlIGludG8gYSBzaWduYXR1cmUgYmxvY2sKKwlCWVRFIHJhd1NpZ0ZpbmFsWzQwXTsKKworCUJZVEUgKiBpLCAqIGosICogbSwgKiBuOworCisJaSA9IHJhd1NpZzsKKwlqID0gcmF3U2lnICsgMjA7CisJbSA9IHJhd1NpZ0ZpbmFsICsgMTk7CisJbiA9IHJhd1NpZ0ZpbmFsICsgMzk7CisKKwl3aGlsZSAobSA+PSByYXdTaWdGaW5hbCkgeworCQkqbS0tID0gKmkrKzsKKwkJKm4tLSA9ICpqKys7CisJfQorCisJLy8gTm93IGVuY29kZQorCVhTQ3J5cHRDcnlwdG9CYXNlNjQgYjY0OworCWI2NC5lbmNvZGVJbml0KCk7CisJdW5zaWduZWQgaW50IHJldCA9IGI2NC5lbmNvZGUocmF3U2lnRmluYWwsIDQwLCAodW5zaWduZWQgY2hhciAqKSBiYXNlNjRTaWduYXR1cmVCdWYsIGJhc2U2NFNpZ25hdHVyZUJ1Zkxlbik7CisJcmV0ICs9IGI2NC5lbmNvZGVGaW5pc2goKHVuc2lnbmVkIGNoYXIgKikgJmJhc2U2NFNpZ25hdHVyZUJ1ZltyZXRdLCBiYXNlNjRTaWduYXR1cmVCdWZMZW4gLSByZXQpOworCisJcmV0dXJuIHJldDsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENsb25lIGtleQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitYU0VDQ3J5cHRvS2V5ICogV2luQ0FQSUNyeXB0b0tleURTQTo6Y2xvbmUoKSBjb25zdCB7CisKKwlXaW5DQVBJQ3J5cHRvS2V5RFNBICogcmV0OworCisJWFNFQ25ldyhyZXQsIFdpbkNBUElDcnlwdG9LZXlEU0EobV9wKSk7CisJCisJaWYgKG1fa2V5ICE9IDApIHsKKworCQkvLyBDcnlwdER1cGxpY2F0ZUtleSBpcyBub3Qgc3VwcG9ydGVkIGluIFdpbmRvd3MgTlQsIHNvIHdlIG5lZWQgdG8gZXhwb3J0IGFuZCB0aGVuCisJCS8vIHJlaW1wb3J0IHRoZSBrZXkgdG8gZ2V0IGEgY29weQorCisJCUJZVEUga2V5QnVmWzIwNDhdOworCQlEV09SRCBrZXlCdWZMZW4gPSAyMDQ4OworCQlDcnlwdEV4cG9ydEtleShtX2tleSwgMCwgUFVCTElDS0VZQkxPQiwgMCwga2V5QnVmLCAma2V5QnVmTGVuKTsKKworCQkvLyBOb3cgcmUtaW1wb3J0CisJCUNyeXB0SW1wb3J0S2V5KG1fcCwga2V5QnVmLCBrZXlCdWZMZW4sIE5VTEwsIDAsICZyZXQtPm1fa2V5KTsKKwl9CisKKwlyZXQtPm1fUExlbiA9IG1fUExlbjsKKwlpZiAobXBfUCAhPSBOVUxMKSB7CisJCVhTRUNuZXcocmV0LT5tcF9QLCBCWVRFW21fUExlbl0pOworCQltZW1jcHkocmV0LT5tcF9QLCBtcF9QLCBtX1BMZW4pOworCX0KKwllbHNlCisJCXJldC0+bXBfUCA9IE5VTEw7CisKKwlyZXQtPm1fUUxlbiA9IG1fUUxlbjsKKwlpZiAobXBfUSAhPSBOVUxMKSB7CisJCVhTRUNuZXcocmV0LT5tcF9RLCBCWVRFW21fUUxlbl0pOworCQltZW1jcHkocmV0LT5tcF9RLCBtcF9RLCBtX1FMZW4pOworCX0KKwllbHNlCisJCXJldC0+bXBfUSA9IE5VTEw7CisKKwlyZXQtPm1fR0xlbiA9IG1fR0xlbjsKKwlpZiAobXBfRyAhPSBOVUxMKSB7CisJCVhTRUNuZXcocmV0LT5tcF9HLCBCWVRFW21fR0xlbl0pOworCQltZW1jcHkocmV0LT5tcF9HLCBtcF9HLCBtX0dMZW4pOworCX0KKwllbHNlCisJCXJldC0+bXBfRyA9IE5VTEw7CisKKwlyZXQtPm1fWUxlbiA9IG1fWUxlbjsKKwlpZiAobXBfWSAhPSBOVUxMKSB7CisJCVhTRUNuZXcocmV0LT5tcF9ZLCBCWVRFW21fWUxlbl0pOworCQltZW1jcHkocmV0LT5tcF9ZLCBtcF9ZLCBtX1lMZW4pOworCX0KKwllbHNlCisJCXJldC0+bXBfWSA9IE5VTEw7CisKKworCisJcmV0dXJuIHJldDsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFNvbWUgdXRpbGl0eSBmdW5jdGlvbnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgV2luQ0FQSUNyeXB0b0tleURTQTo6bG9hZFBhcmFtc0Zyb21LZXkodm9pZCkgeworCisJaWYgKG1fa2V5ID09IDApIHsKKworCQlpZiAobV9rZXlTcGVjID09IDApCisJCQlyZXR1cm47CisKKwkJLy8gU2VlIG9mIHdlIGNhbiBnZXQgdGhlIHVzZXIga2V5CisJCWlmICghQ3J5cHRHZXRVc2VyS2V5KG1fcCwgbV9rZXlTcGVjLCAmbV9rZXkpKQorCQkJcmV0dXJuOworCisJfQorCisJLy8gRXhwb3J0IGtleSBpbnRvIGEga2V5YmxvYgorCUJPT0wgZlJlc3VsdDsKKwlEV09SRCBibG9iTGVuOworCisJZlJlc3VsdCA9IENyeXB0RXhwb3J0S2V5KAorCQltX2tleSwKKwkJMCwKKwkJUFVCTElDS0VZQkxPQiwKKwkJMCwKKwkJTlVMTCwKKwkJJmJsb2JMZW4pOworCQorCWlmIChmUmVzdWx0ID09IDAgfHwgYmxvYkxlbiA8IDEpIHsKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpEU0FFcnJvciwKKwkJCSJXaW5DQVBJOkRTQSAtIEVycm9yIGV4cG9ydGluZyBwdWJsaWMga2V5Iik7CisJfQorCisJQllURSAqIGJsb2I7CisJWFNFQ25ldyhibG9iLCBCWVRFW2Jsb2JMZW5dKTsKKwlBcnJheUphbml0b3I8QllURT4gal9ibG9iKGJsb2IpOworCisJZlJlc3VsdCA9IENyeXB0RXhwb3J0S2V5KAorCQltX2tleSwKKwkJMCwKKwkJUFVCTElDS0VZQkxPQiwKKwkJMCwKKwkJYmxvYiwKKwkJJmJsb2JMZW4pOworCQorCWlmIChmUmVzdWx0ID09IDAgfHwgYmxvYkxlbiA8IDEpIHsKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpEU0FFcnJvciwKKwkJCSJXaW5DQVBJOkRTQSAtIEVycm9yIGV4cG9ydGluZyBwdWJsaWMga2V5Iik7CisJfQorCisJRFNTUFVCS0VZICogcGsgPSAoRFNTUFVCS0VZICopICggYmxvYiArIFdJTkNBUElfQkxPQkhFQURFUkxFTiApOworCURXT1JEIGtleUxlbiA9IHBrLT5iaXRsZW4gLyA4OworCisJLy8gQ29weSB0aGUga2V5cworCQorCUJZVEUgKiBpID0gKEJZVEUgKikgKCBwayApOworCWkgKz0gV0lOQ0FQSV9EU1NQVUJLRVlMRU47CisJaWYgKG1wX1AgIT0gTlVMTCkKKwkJZGVsZXRlW10gbXBfUDsKKworCVhTRUNuZXcobXBfUCwgQllURVtrZXlMZW5dKTsKKwltZW1jcHkobXBfUCwgaSwga2V5TGVuKTsKKwltX1BMZW4gPSBrZXlMZW47CisKKwlpKz1rZXlMZW47CisKKwlpZiAobXBfUSAhPSBOVUxMKQorCQlkZWxldGVbXSBtcF9ROworCisJbV9RTGVuID0gMjA7CisJd2hpbGUgKGlbbV9RTGVuIC0gMV0gPT0gMCAmJiBtX1FMZW4gPiAwKQorCQltX1FMZW4tLTsKKwlYU0VDbmV3KG1wX1EsIEJZVEVbbV9RTGVuXSk7CisJbWVtY3B5KG1wX1EsIGksIG1fUUxlbik7CisJCisJaSs9MjA7CisKKwlpZiAobXBfRyAhPSBOVUxMKQorCQlkZWxldGVbXSBtcF9HOworCQorCW1fR0xlbiA9IGtleUxlbjsKKwl3aGlsZShpW21fR0xlbiAtIDFdID09IDAgJiYgbV9HTGVuID4gMCkKKwkJbV9HTGVuLS07CisKKwlYU0VDbmV3KG1wX0csIEJZVEVbbV9HTGVuXSk7CisJbWVtY3B5KG1wX0csIGksIG1fR0xlbik7CisKKwlpKz1rZXlMZW47CisKKwlpZiAobXBfWSAhPSBOVUxMKQorCQlkZWxldGVbXSBtcF9ZOworCisJbV9ZTGVuID0ga2V5TGVuOworCXdoaWxlIChpW21fWUxlbl0gPT0gMCAmJiBtX1lMZW4gPiAwKQorCQltX1lMZW4tLTsKKworCVhTRUNuZXcobXBfWSwgQllURVttX1lMZW5dKTsKKwltZW1jcHkobXBfWSwgaSwgbV9ZTGVuKTsKKworfQorCit1bnNpZ25lZCBpbnQgV2luQ0FQSUNyeXB0b0tleURTQTo6Z2V0UEJhc2U2NEJpZ051bXMoY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbikgeworCisJaWYgKG1fa2V5ID09IDAgJiYgbV9rZXlTcGVjID09IDAgJiYgbXBfUCA9PSBOVUxMKSB7CisKKwkJcmV0dXJuIDA7CS8vIE5vdGhpbmcgd2UgY2FuIGRvCisKKwl9CisKKwlpZiAobXBfUCA9PSBOVUxMKSB7CisKKwkJbG9hZFBhcmFtc0Zyb21LZXkoKTsKKworCX0KKworCXVuc2lnbmVkIGludCBiTGVuOworCXVuc2lnbmVkIGNoYXIgKiBiID0gIFdpbkNBUElDcnlwdG9Qcm92aWRlcjo6V2luQk4yYjY0KG1wX1AsIG1fUExlbiwgYkxlbik7CisJaWYgKGJMZW4gPiBsZW4pCisJCWJMZW4gPSBsZW47CisJbWVtY3B5KGI2NCwgYiwgYkxlbik7CisJZGVsZXRlW10gYjsKKworCXJldHVybiBiTGVuOworCit9CisKK3Vuc2lnbmVkIGludCBXaW5DQVBJQ3J5cHRvS2V5RFNBOjpnZXRRQmFzZTY0QmlnTnVtcyhjaGFyICogYjY0LCB1bnNpZ25lZCBpbnQgbGVuKSB7CisKKwlpZiAobV9rZXkgPT0gMCAmJiBtX2tleVNwZWMgPT0gMCAmJiBtcF9RID09IE5VTEwpIHsKKworCQlyZXR1cm4gMDsJLy8gTm90aGluZyB3ZSBjYW4gZG8KKworCX0KKworCWlmIChtcF9RID09IE5VTEwpIHsKKworCQlsb2FkUGFyYW1zRnJvbUtleSgpOworCisJfQorCisJdW5zaWduZWQgaW50IGJMZW47CisJdW5zaWduZWQgY2hhciAqIGIgPSAgV2luQ0FQSUNyeXB0b1Byb3ZpZGVyOjpXaW5CTjJiNjQobXBfUSwgbV9RTGVuLCBiTGVuKTsKKwlpZiAoYkxlbiA+IGxlbikKKwkJYkxlbiA9IGxlbjsKKwltZW1jcHkoYjY0LCBiLCBiTGVuKTsKKwlkZWxldGVbXSBiOworCisJcmV0dXJuIGJMZW47CisKK30KKwordW5zaWduZWQgaW50IFdpbkNBUElDcnlwdG9LZXlEU0E6OmdldEdCYXNlNjRCaWdOdW1zKGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBsZW4pIHsKKworCWlmIChtX2tleSA9PSAwICYmIG1fa2V5U3BlYyA9PSAwICYmIG1wX0cgPT0gTlVMTCkgeworCisJCXJldHVybiAwOwkvLyBOb3RoaW5nIHdlIGNhbiBkbworCisJfQorCisJaWYgKG1wX0cgPT0gTlVMTCkgeworCisJCWxvYWRQYXJhbXNGcm9tS2V5KCk7CisKKwl9CisKKwl1bnNpZ25lZCBpbnQgYkxlbjsKKwl1bnNpZ25lZCBjaGFyICogYiA9ICBXaW5DQVBJQ3J5cHRvUHJvdmlkZXI6OldpbkJOMmI2NChtcF9HLCBtX0dMZW4sIGJMZW4pOworCWlmIChiTGVuID4gbGVuKQorCQliTGVuID0gbGVuOworCW1lbWNweShiNjQsIGIsIGJMZW4pOworCWRlbGV0ZVtdIGI7CisKKwlyZXR1cm4gYkxlbjsKKworfQorCit1bnNpZ25lZCBpbnQgV2luQ0FQSUNyeXB0b0tleURTQTo6Z2V0WUJhc2U2NEJpZ051bXMoY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbikgeworCisJaWYgKG1fa2V5ID09IDAgJiYgbV9rZXlTcGVjID09IDAgJiYgbXBfWSA9PSBOVUxMKSB7CisKKwkJcmV0dXJuIDA7CS8vIE5vdGhpbmcgd2UgY2FuIGRvCisKKwl9CisKKwlpZiAobXBfWSA9PSBOVUxMKSB7CisKKwkJbG9hZFBhcmFtc0Zyb21LZXkoKTsKKworCX0KKworCXVuc2lnbmVkIGludCBiTGVuOworCXVuc2lnbmVkIGNoYXIgKiBiID0gIFdpbkNBUElDcnlwdG9Qcm92aWRlcjo6V2luQk4yYjY0KG1wX1ksIG1fWUxlbiwgYkxlbik7CisJaWYgKGJMZW4gPiBsZW4pCisJCWJMZW4gPSBsZW47CisJbWVtY3B5KGI2NCwgYiwgYkxlbik7CisJZGVsZXRlW10gYjsKKworCXJldHVybiBiTGVuOworCit9CisKKyNlbmRpZiAvKiBIQVZFX1dJTkNBUEkgKi8KKwpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b0tleURTQS5ocHAgYi9jL3NyYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvS2V5RFNBLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjhkMzZmCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b0tleURTQS5ocHAKQEAgLTAsMCArMSwzMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFdpbkNBUElDcnlwdG9LZXlEU0EgOj0gRFNBIEtleXMKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgV0lOQ0FQSUNSWVBUT0tFWURTQV9JTkNMVURFCisjZGVmaW5lIFdJTkNBUElDUllQVE9LRVlEU0FfSU5DTFVERQorCisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b0tleURTQS5ocHA+CisKKyNpZiBkZWZpbmVkIChIQVZFX1dJTkNBUEkpCisKKyNpZiAhZGVmaW5lZChfV0lOMzJfV0lOTlQpCisjCWRlZmluZSBfV0lOMzJfV0lOTlQgMHgwNDAwCisjZW5kaWYKKworI2luY2x1ZGUgPHdpbmNyeXB0Lmg+CisKK2NsYXNzIFdpbkNBUElDcnlwdG9Qcm92aWRlcjsKKworLyoqCisgKiBcaW5ncm91cCB3aW5jYXBpY3J5cHRvCisgKi8KKworLyoqCisgKiBcYnJpZWYgV2luQ0FQSSBpbXBsZW1lbnRhdGlvbiBjbGFzcyBmb3IgRFNBIGtleXMuCisgKgorICogVGhlIGxpYnJhcnkgdXNlcyBjbGFzc2VzIGRlcml2ZWQgZnJvbSB0aGlzIHRvIHByb2Nlc3MgRFNBIGtleXMuCisgKi8KKworCitjbGFzcyBEU0lHX0VYUE9SVCBXaW5DQVBJQ3J5cHRvS2V5RFNBIDogcHVibGljIFhTRUNDcnlwdG9LZXlEU0EgeworCitwdWJsaWMgOgorCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisJCisJLyoqCisJICogXGJyaWVmIEN0b3IgZm9yIERTQSBrZXlzCisJICoKKwkgKiBUaGlzIGNvbnN0cnVjdG9yIHNob3VsZCBiZSB1c2VkIGZvciBwdWJsaWMga2V5cyB0aGF0IGFyZSBnb2luZyB0byBiZQorCSAqIGxvYWRlZCBsYXRlciB2aWEgUCwgUSBldGMuCisJICoKKwkgKiBAcGFyYW0gcHJvdiBBIGhhbmRsZSB0byB0aGUgcHJvdmlkZXIgKGFuZCBrZXkgc3RvcmUpIHRoYXQgd2lsbCBiZQorCSAqIHVzZWQgdG8gaG9sZCB0aGUga2V5IGJlaW5nIGJ1aWx0ICAoT2J2aW91c2x5IGEgcHJvdmlkZXIgdHlwZSB0aGF0IHN1cHBvcnRzCisJICogRFNTLCBzdWNoIGFzIERTU19QUk9WKQorCSAqLworCisJV2luQ0FQSUNyeXB0b0tleURTQShIQ1JZUFRQUk9WIHByb3YpOworCQorCXZpcnR1YWwgfldpbkNBUElDcnlwdG9LZXlEU0EoKTsKKworCS8qKgorCSAqIFxicmllZiBXaW5DQVBJIFNwZWNpZmljIGNvbnN0cnVjdG9yIGZvciBwdWJsaWMga2V5cworCSAqCisJICogQ3JlYXRlIGEgRFNBIGtleSBmb3IgdXNlIGluIFhTRUMgZnJvbSBhbiBleGlzdGluZyBwdWJsaWMgSENSWVBUS0VZCisJICoKKwkgKiBAcGFyYW0gcHJvdiBBIGhhbmRsZSB0byB0aGUgQ1NQIHRvIGJlIHVzZWQgZm9yIG9wZXJhdGlvbnMgdW5kZXIgdGhpcyBrZXkuCisJICogQHBhcmFtIGsgVGhlIGtleSB0byB1c2UKKwkgKiBAbm90ZSBrIGlzIG93bmVkIGJ5IHRoZSBsaWJyYXJ5LiAgV2hlbiB0aGUgd3JhcHBlciAKKwkgKiBXaW5DQVBJQ3J5cHRvS2V5RFNBIGlzIGRlbGV0ZWQsIGsgd2lsbCBiZSBkZXN0cm95ZWQgdXNpbmcKKwkgKiBDcnlwdERlc3Ryb3lLZXkoKS4gIE5vdGUgYWxzbyB0aGF0IHByb3Ygd2lsbCBub3QgYmUgcmVsZWFzZWQuCisJICovCisKKwlXaW5DQVBJQ3J5cHRvS2V5RFNBKEhDUllQVFBST1YgcHJvdiwgSENSWVBUS0VZIGspOworCisJLyoqCisJICogXGJyaWVmIFdpbkNBUEkgU3BlY2lmaWMgY29uc3RydWN0b3IgZm9yIHByaXZhdGUga2V5cworCSAqCisJICogQ3JlYXRlIGEgRFNBIGtleSBmb3IgdXNlIGluIFhTRUMgZnJvbSBhIHBhc3NlZCBpbiBoYW5kbGUgdG8gYSBwcm92aWRlcgorCSAqIGFuZCBhc3NvY2lhdGVkIGtleSBzdG9yZQorCSAqCisJICogQHBhcmFtIHByb3YgQSBoYW5kbGUgdG8gdGhlIENTUCB0byBiZSB1c2VkIGFuZCByZWFkIGZvciB0aGUga2V5LgorCSAqIEBwYXJhbSBrZXlTcGVjIFRoZSBLZXkgdG8gdXNlIChBVF9TSUdOQVRVUkUgb3IgQVRfS0VZRVhDSEFOR0UpCisJICogQHBhcmFtIGlzUHJpdmF0ZSBTaG91bGQgYmUgdHJ1ZS4gIEluIGZ1dHVyZSwgbWF5IGJlIGFibGUgdG8gZGVmaW5lIHB1YmxpYworCSAqIGtleXMgdGhpcyB3YXkgYXMgd2VsbC4KKwkgKiBAbm90ZSBUaGUgcHJvdiB3aWxsIG5vdCBiZSByZWxlYXNlZCBvbiBjbG9zZS4KKwkgKi8KKworCVdpbkNBUElDcnlwdG9LZXlEU0EoSENSWVBUUFJPViBwcm92LCBEV09SRCBrZXlTcGVjLCBib29sIGlzUHJpdmF0ZSk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgUmVxdWlyZWQgS2V5IEludGVyZmFjZSBtZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFJldHVybiB0aGUgdHlwZSBvZiB0aGlzIGtleS4KKwkgKgorCSAqIEFsbG93cyB0aGUgY2FsbGVyIChhbmQgbGlicmFyeSkgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBpcyBhIAorCSAqIHB1YmxpYyBrZXksIHByaXZhdGUga2V5IG9yIGEga2V5IHBhaXIKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0tleTo6S2V5VHlwZSBnZXRLZXlUeXBlKCkgY29uc3Q7CisKKwkvKioKKwkgKlxicmllZiBSZXR1cm4gdGhlIFdpTkNBUEkgc3RyaW5nIGlkZW50aWZpZXIKKwkgKi8KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRQcm92aWRlck5hbWUoKSBjb25zdCB7cmV0dXJuIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clBST1ZXaW5DQVBJO30KKwkKKwkvKioKKwkgKiBcYnJpZWYgUmVwbGljYXRlIGtleQorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvS2V5ICogY2xvbmUoKSBjb25zdDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBSZXF1aXJlZCBEU0EgbWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBDcmVhdGUgYSBzaWduYXR1cmUKKwkgKgorCSAqIFNpZ24gdGhlIGJ1ZmZlciB1c2luZyB0aGUgaW50ZXJuYWwgcHJpdmF0ZSBrZXkuICBXaWxsIHRocm93IGEgRFNBRXJyb3IKKwkgKiBpZiB0aGUga2V5IGlzIG5vdCBzZXQsIG9yIGlzIG5vdCBhIHByaXZhdGUga2V5LgorCSAqCisJICogQHBhcmFtIGhhc2hCdWYgQnVmZmVyIGNvbnRhaW5pbmcgdGhlIHByZS1jYWxjdWxhdGVkIChiaW5hcnkpIGRpZ2VzdAorCSAqIEBwYXJhbSBoYXNoTGVuIE51bWJlciBvZiBieXRlcyBvZiBoYXNoIGluIHRoZSBoYXNoQnVmCisJICogQHBhcmFtIGJhc2U2NFNpZ25hdHVyZUJ1ZiBCdWZmZXIgdG8gcGxhY2UgdGhlIGJhc2U2NCBlbmNvZGVkIHJlc3VsdAorCSAqIGluLgorCSAqIEBwYXJhbSBiYXNlNjRTaWduYXR1cmVCdWZMZW4gSW1wbGVtZW50YXRpb25zIG5lZWQgdG8gZW5zdXJlIHRoZXkgZG8KKwkgKiBub3Qgd3JpdGUgbW9yZSBieXRlcyB0aGFuIHRoaXMgaW50byB0aGUgYnVmZmVyCisJICovCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCBzaWduQmFzZTY0U2lnbmF0dXJlKHVuc2lnbmVkIGNoYXIgKiBoYXNoQnVmLAorCQkJCQkJdW5zaWduZWQgaW50IGhhc2hMZW4sCisJCQkJCQljaGFyICogYmFzZTY0U2lnbmF0dXJlQnVmLAorCQkJCQkJdW5zaWduZWQgaW50IGJhc2U2NFNpZ25hdHVyZUJ1Zkxlbik7CisKKwkvKioKKwkgKiBcYnJpZWYgVmVyaWZ5IGEgc2lnbmF0dXJlCisJICoKKwkgKiBUaGUgbGlicmFyeSB3aWxsIGNhbGwgdGhpcyBmdW5jdGlvbiB0byB2YWxpZGF0ZSBhIHNpZ25hdHVyZQorCSAqCisJICogQHBhcmFtIGhhc2hCdWYgQnVmZmVyIGNvbnRhaW5pbmcgdGhlIHByZS1jYWxjdWxhdGVkIChiaW5hcnkpIGRpZ2VzdAorCSAqIEBwYXJhbSBoYXNoTGVuIExlbmd0aCBvZiB0aGUgZGF0YSBpbiB0aGUgZGlnZXN0IGJ1ZmZlcgorCSAqIEBwYXJhbSBiYXNlNjRTaWduYXR1cmUgQnVmZmVyIGNvbnRhaW5pbmcgdGhlIEJhc2U2NCBlbmNvZGVkIHNpZ25hdHVyZQorCSAqIEBwYXJhbSBzaWdMZW4gTGVuZ3RoIG9mIHRoZSBkYXRhIGluIHRoZSBzaWduYXR1cmUgYnVmZmVyCisJICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgc2lnbmF0dXJlIHdhcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlCisJICovCisJCQorCXZpcnR1YWwgYm9vbCB2ZXJpZnlCYXNlNjRTaWduYXR1cmUodW5zaWduZWQgY2hhciAqIGhhc2hCdWYsIAorCQkJCQkJIHVuc2lnbmVkIGludCBoYXNoTGVuLAorCQkJCQkJIGNoYXIgKiBiYXNlNjRTaWduYXR1cmUsCisJCQkJCQkgdW5zaWduZWQgaW50IHNpZ0xlbik7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgT3B0aW9uYWwgSW50ZXJmYWNlIG1ldGhvZHMKKwkgKiAKKwkgKiBIYXZlIGJlZW4gZnVsbHkgaW1wbGVtZW50ZWQgaW4gdGhlIFdpbkNBUEkgaW50ZXJmYWNlIHRvIGFsbG93IGludGVyb3AKKwkgKiB0ZXN0aW5nIHRvIG9jY3VyLgorCSAqCisJICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIExvYWQgUAorCSAqCisJICogQHBhcmFtIGI2NCBCYXNlNjQgZW5jb2RlZCBwYXJhbWV0ZXIgLSByZWFkIGZyb20gWE1MIGRvY3VtZW50CisJICogQHBhcmFtIGxlbiBMZW5ndGggb2YgdGhlIGVuY29kZWQgc3RyaW5nCisJICovCisKKwl2aXJ0dWFsIHZvaWQgbG9hZFBCYXNlNjRCaWdOdW1zKGNvbnN0IGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBsZW4pOworCisJLyoqCisJICogXGJyaWVmIExvYWQgUQorCSAqCisJICogQHBhcmFtIGI2NCBCYXNlNjQgZW5jb2RlZCBwYXJhbWV0ZXIgLSByZWFkIGZyb20gWE1MIGRvY3VtZW50CisJICogQHBhcmFtIGxlbiBMZW5ndGggb2YgdGhlIGVuY29kZWQgc3RyaW5nCisJICovCisJCisJdmlydHVhbCB2b2lkIGxvYWRRQmFzZTY0QmlnTnVtcyhjb25zdCBjaGFyICogYjY0LCB1bnNpZ25lZCBpbnQgbGVuKTsKKworCS8qKgorCSAqIFxicmllZiBMb2FkIEcKKwkgKgorCSAqIEBwYXJhbSBiNjQgQmFzZTY0IGVuY29kZWQgcGFyYW1ldGVyIC0gcmVhZCBmcm9tIFhNTCBkb2N1bWVudAorCSAqIEBwYXJhbSBsZW4gTGVuZ3RoIG9mIHRoZSBlbmNvZGVkIHN0cmluZworCSAqLworCisJdmlydHVhbCB2b2lkIGxvYWRHQmFzZTY0QmlnTnVtcyhjb25zdCBjaGFyICogYjY0LCB1bnNpZ25lZCBpbnQgbGVuKTsKKwkKKwkvKioKKwkgKiBcYnJpZWYgTG9hZCBZCisJICoKKwkgKiBAcGFyYW0gYjY0IEJhc2U2NCBlbmNvZGVkIHBhcmFtZXRlciAtIHJlYWQgZnJvbSBYTUwgZG9jdW1lbnQKKwkgKiBAcGFyYW0gbGVuIExlbmd0aCBvZiB0aGUgZW5jb2RlZCBzdHJpbmcKKwkgKi8KKworCXZpcnR1YWwgdm9pZCBsb2FkWUJhc2U2NEJpZ051bXMoY29uc3QgY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbik7CisJCisJLyoqCisJICogXGJyaWVmIExvYWQgSgorCSAqCisJICogQHBhcmFtIGI2NCBCYXNlNjQgZW5jb2RlZCBwYXJhbWV0ZXIgLSByZWFkIGZyb20gWE1MIGRvY3VtZW50CisJICogQHBhcmFtIGxlbiBMZW5ndGggb2YgdGhlIGVuY29kZWQgc3RyaW5nCisJICovCisKKwl2aXJ0dWFsIHZvaWQgbG9hZEpCYXNlNjRCaWdOdW1zKGNvbnN0IGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBsZW4pOworCisJLy9AfQorCisJLyoqIEBuYW1lIFdpbkNBUEkgU3BlY2lmaWMgZnVuY3Rpb25zICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFJldHJpZXZlIFAKKwkgKgorCSAqIEBwYXJhbSBiNjQgQnVmZmVyIHRvIHBsYWNlIGRzOkNyeXB0b0JpbmFyeSBlbmNvZGVkIFAgcGFyYW1ldGVyIGluCisJICogQHBhcmFtIGxlbiBNYXggYW1vdW50IG9mIGRhdGEgdG8gYmUgcGxhY2VkIGluIGJ1ZmZlcgorCSAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgYnl0ZXMgcGxhY2VkIGluIHRoZSBidWZmZXIKKwkgKi8KKworCXVuc2lnbmVkIGludCBnZXRQQmFzZTY0QmlnTnVtcyhjaGFyICogYjY0LCB1bnNpZ25lZCBpbnQgbGVuKTsKKworCS8qKgorCSAqIFxicmllZiBSZXRyaWV2ZSBRCisJICoKKwkgKiBAcGFyYW0gYjY0IEJ1ZmZlciB0byBwbGFjZSBkczpDcnlwdG9CaW5hcnkgZW5jb2RlZCBRIHBhcmFtZXRlciBpbgorCSAqIEBwYXJhbSBsZW4gTWF4IGFtb3VudCBvZiBkYXRhIHRvIGJlIHBsYWNlZCBpbiBidWZmZXIKKwkgKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGJ5dGVzIHBsYWNlZCBpbiB0aGUgYnVmZmVyCisJICovCisJCisJdW5zaWduZWQgaW50IGdldFFCYXNlNjRCaWdOdW1zKGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBsZW4pOworCisJLyoqCisJICogXGJyaWVmIFJldHJpZXZlIEcKKwkgKgorCSAqIEBwYXJhbSBiNjQgQnVmZmVyIHRvIHBsYWNlIGRzOkNyeXB0b0JpbmFyeSBlbmNvZGVkIEcgcGFyYW1ldGVyIGluCisJICogQHBhcmFtIGxlbiBNYXggYW1vdW50IG9mIGRhdGEgdG8gYmUgcGxhY2VkIGluIGJ1ZmZlcgorCSAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgYnl0ZXMgcGxhY2VkIGluIHRoZSBidWZmZXIKKwkgKi8KKwkKKwl1bnNpZ25lZCBpbnQgZ2V0R0Jhc2U2NEJpZ051bXMoY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbik7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0cmlldmUgWQorCSAqCisJICogQHBhcmFtIGI2NCBCdWZmZXIgdG8gcGxhY2UgZHM6Q3J5cHRvQmluYXJ5IGVuY29kZWQgWSBwYXJhbWV0ZXIgaW4KKwkgKiBAcGFyYW0gbGVuIE1heCBhbW91bnQgb2YgZGF0YSB0byBiZSBwbGFjZWQgaW4gYnVmZmVyCisJICogQHJldHVybnMgVGhlIG51bWJlciBvZiBieXRlcyBwbGFjZWQgaW4gdGhlIGJ1ZmZlcgorCSAqLworCQorCXVuc2lnbmVkIGludCBnZXRZQmFzZTY0QmlnTnVtcyhjaGFyICogYjY0LCB1bnNpZ25lZCBpbnQgbGVuKTsKKworCS8vQH0KKworcHJpdmF0ZToKKworCUhDUllQVFBST1YJCQkJCW1fcDsKKwlIQ1JZUFRLRVkJCQkJCW1fa2V5OwkJLy8gRm9yIGEgcHVibGljIGtleQorCURXT1JECQkJCQkJbV9rZXlTcGVjOwkvLyBGb3IgYSBwcml2YXRlIGtleQorCisJQllURQkJCQkJCSogbXBfUDsKKwlCWVRFCQkJCQkJKiBtcF9ROworCUJZVEUJCQkJCQkqIG1wX0c7CisJQllURQkJCQkJCSogbXBfWTsKKworCXVuc2lnbmVkIGludAkJCQltX1BMZW47CisJdW5zaWduZWQgaW50CQkJCW1fUUxlbjsKKwl1bnNpZ25lZCBpbnQJCQkJbV9HTGVuOworCXVuc2lnbmVkIGludAkJCQltX1lMZW47CisKKwkvLyBJbnN0cnVjdCB0byBpbXBvcnQgZnJvbSBwYXJhbWV0ZXJzCisKKwl2b2lkIGltcG9ydEtleSh2b2lkKTsKKwl2b2lkIGxvYWRQYXJhbXNGcm9tS2V5KHZvaWQpOworCisJLy8gTm8gZGVmYXVsdCBjb25zdHJ1Y3RvcgorCVdpbkNBUElDcnlwdG9LZXlEU0EoKTsKK307CisKKyNlbmRpZiAvKiBIQVZFX1dJTkNBUEkgKi8KKyNlbmRpZiAvKiBXSU5DQVBJQ1JZUFRPS0VZRFNBX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9LZXlITUFDLmNwcCBiL2Mvc3JjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9LZXlITUFDLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDRlM2FlCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b0tleUhNQUMuY3BwCkBAIC0wLDAgKzEsMTE3IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBXaW5DQVBJQ3J5cHRvS2V5SE1BQyA6PSBXaW5kb3dzIEhNQUMga2V5cworICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b0tleUhNQUMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b0V4Y2VwdGlvbi5ocHA+CisKKyNpZiBkZWZpbmVkIChIQVZFX1dJTkNBUEkpCisKK1dpbkNBUElDcnlwdG9LZXlITUFDOjpXaW5DQVBJQ3J5cHRvS2V5SE1BQyhIQ1JZUFRQUk9WIHByb3YpIDptX2tleUJ1ZigiIikgeworCisJbV9rZXlCdWYuaXNTZW5zaXRpdmUoKTsKKwltX2tleUxlbiA9IDA7CisJbV9rID0gMDsKKwltX3AgPSBwcm92OworCit9OworCit2b2lkIFdpbkNBUElDcnlwdG9LZXlITUFDOjpzZXRLZXkodW5zaWduZWQgY2hhciAqIGluQnVmLCB1bnNpZ25lZCBpbnQgaW5MZW5ndGgpIHsKKworCW1fa2V5QnVmLnNiTWVtY3B5SW4oaW5CdWYsIGluTGVuZ3RoKTsKKwltX2tleUxlbiA9IGluTGVuZ3RoOworCit9CisKK3Vuc2lnbmVkIGludCBXaW5DQVBJQ3J5cHRvS2V5SE1BQzo6Z2V0S2V5KHNhZmVCdWZmZXIgJm91dEJ1ZikgY29uc3QgeworCisJb3V0QnVmID0gbV9rZXlCdWY7CisJcmV0dXJuIG1fa2V5TGVuOworCit9CisKK1hTRUNDcnlwdG9LZXkgKiBXaW5DQVBJQ3J5cHRvS2V5SE1BQzo6Y2xvbmUoKSBjb25zdCB7CisKKwlXaW5DQVBJQ3J5cHRvS2V5SE1BQyAqIHJldDsKKworCVhTRUNuZXcocmV0LCBXaW5DQVBJQ3J5cHRvS2V5SE1BQyhtX3ApKTsKKworCXJldC0+bV9rZXlCdWYgPSBtX2tleUJ1ZjsKKwlyZXQtPm1fa2V5TGVuID0gbV9rZXlMZW47CisKKwlpZiAobV9rICE9IDApIHsKKyNpZiAoX1dJTjMyX1dJTk5UID4gMHgwNDAwKQorCQlpZiAoQ3J5cHREdXBsaWNhdGVLZXkobV9rLAorCQkJIAkJCQkgIDAsCisJCQkJCQkJICAwLAorCQkJCQkJCSAgJihyZXQtPm1faykpID09IDAgKSB7CisKKwkJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6TURFcnJvciwKKwkJCQkiV2luQ0FQSTpLZXlITUFDIEVycm9yIGF0dGVtcHRpbmcgdG8gY2xvbmUga2V5IHBhcmFtZXRlcnMiKTsKKworCQl9CisjZWxzZQorCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Ok1ERXJyb3IsCisJCQkiVW5hYmxlIHRvIGNsb25lIGtleXMgaW4gV2luZG93cyBOVCA0LjAgYW5kIGJlbG93Iik7CisjZW5kaWYKKwl9CisJZWxzZQorCQlyZXQtPm1fayA9IDA7CisKKwlyZXR1cm4gcmV0OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgV2luZG93cyBTcGVjaWZpYyBLZXlzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIFdpbkNBUElDcnlwdG9LZXlITUFDOjpzZXRXaW5LZXkoSENSWVBUS0VZIGspIHsKKworCWlmIChtX2sgIT0gMCkgeworCisJCUNyeXB0RGVzdHJveUtleShtX2spOworCisJfQorCisJbV9rID0gazsKKworfQorCitIQ1JZUFRLRVkgV2luQ0FQSUNyeXB0b0tleUhNQUM6OmdldFdpbktleSh2b2lkKSBjb25zdCB7CisKKwlyZXR1cm4gbV9rOworCit9CisKK0hDUllQVFBST1YgV2luQ0FQSUNyeXB0b0tleUhNQUM6OmdldFdpbktleVByb3Yodm9pZCkgY29uc3QgeworCisJcmV0dXJuIG1fcDsKKworfQorCisjZW5kaWYgLyogSEFWRV9XSU5DQVBJICovCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvS2V5SE1BQy5ocHAgYi9jL3NyYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvS2V5SE1BQy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlmN2M5OAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9LZXlITUFDLmhwcApAQCAtMCwwICsxLDE4OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogV2luQ0FQSUNyeXB0b0tleUhNQUMgOj0gSE1BQyBLZXlzCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFdJTkNBUElDUllQVE9LRVlITUFDX0lOQ0xVREUKKyNkZWZpbmUgV0lOQ0FQSUNSWVBUT0tFWUhNQUNfSU5DTFVERQorCisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b0tleUhNQUMuaHBwPgorCisjaWYgZGVmaW5lZCAoSEFWRV9XSU5DQVBJKQorCisjaWYgIWRlZmluZWQoX1dJTjMyX1dJTk5UKQorIwlkZWZpbmUgX1dJTjMyX1dJTk5UIDB4MDQwMAorI2VuZGlmCisKKyNpbmNsdWRlIDx3aW5jcnlwdC5oPgorCisvKioKKyAqIFxpbmdyb3VwIHdpbmNhcGljcnlwdG8KKyAqLworCisvKioKKyAqIFxicmllZiBXaW5kb3dzIENyeXB0byBBUEkgaW1wbGVtZW50YXRpb24gZm9yIEhNQUMga2V5cy4KKyAqCisgKiBVc2VkIHRvIHByb3ZpZGUgSE1BQyBrZXlzIHRvIFdpbkNBUEkgQ3J5cHRvSGFzaEhNQUMKKyAqCisgKiBQcm92aWRlcyB0d28gdHlwZXMgb2Yga2V5LgorICoKKyAqIEEgPGI+V2luZG93cyBLZXk8L2I+ICh2aWEgc2V0V2luS2V5KSBpcyBhIGRpcmVjdCBrZXkgdGhhdCBjYW4gYmUgdXNlZAorICogYnkgdGhlIFdpbmRvd3MgSE1BQyBpbXBsZW1lbnRhdGlvbi4KKyAqCisgKiBBIDxiPmJ5dGU8L2I+IGtleSAodmlhIHNldEtleSkgaXMgYSBzdHJpbmcgb2YgYnl0ZXMgdGhhdCB3aWxsIGJlIHVzZWQgCisgKiBhcyBhIGtleS4gIFRoaXMgcmVxdWlyZXMgYW4gaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gb2YgYW4gSE1BQyB1c2luZyB0aGUKKyAqIFdpbmRvd3MgRGlnZXN0IGZ1bmN0aW9ucywgYXMgdGhlIFdpbmRvd3MgQVBJIGRvZXMgbm90IGFsbG93IGRpcmVjdAorICogbG9hZGluZyBvZiB0aGVzZSBrZXlzLgorICovCisKK2NsYXNzIERTSUdfRVhQT1JUIFdpbkNBUElDcnlwdG9LZXlITUFDIDogcHVibGljIFhTRUNDcnlwdG9LZXlITUFDIHsKKworcHVibGljIDoKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCS8qKgorCSAqIFxicmllZiBDb25zdHJ1Y3RvcgorCSAqCisJICogQHBhcmFtIHByb3YgVGhlIGhhbmRsZSB0byB0aGUgcHJvdmlkZXIgY29udGV4dCB0aGF0IHdhcyB1c2VkIHRvCisJICogY3JlYXRlIGFueSBXaW5kb3dzIGtleXMgKGxhdGVyIHNldCB2aWEgc2V0S2V5KS4gIElmIHRoaXMgaXMgbm90CisJICogdG8gYmUgdXNlZCBmb3IgYSB3aW5kb3dzIGtleSAoaS5lLiB3aWxsIGJlIHVzZWQgZm9yIGEgIm5vcm1hbCIKKwkgKiBidWZmZXIgb2YgYnl0ZXMgYXMgYSBrZXksIHRoZW4gdGhpcyB2YWx1ZSBjYW4gYmUgc2V0IHRvIDAKKwkgKi8KKworCVdpbkNBUElDcnlwdG9LZXlITUFDKEhDUllQVFBST1YgcHJvdik7CisJCisJdmlydHVhbCB+V2luQ0FQSUNyeXB0b0tleUhNQUMoKSB7fTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBLZXkgSW50ZXJmYWNlIG1ldGhvZHMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIHRoZSB0eXBlIG9mIHRoaXMga2V5LgorCSAqCisJICogRm9yIERTQSBrZXlzLCB0aGlzIGFsbG93cyBwZW9wbGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBpcyBhIAorCSAqIHB1YmxpYyBrZXksIHByaXZhdGUga2V5IG9yIGEga2V5IHBhaXIKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0tleTo6S2V5VHlwZSBnZXRLZXlUeXBlKCkgY29uc3Qge3JldHVybiBLRVlfSE1BQzt9CisJCisJLyoqCisJICogXGJyaWVmIFJlcGxpY2F0ZSBrZXkKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0tleSAqIGNsb25lKCkgY29uc3QgOworCisJLyoqCisJICogXGJyaWVmIFJldHVybiB0aGUgV2luQ0FQSSBzdHJpbmcgaWRlbnRpZmllcgorCSAqLworCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldFByb3ZpZGVyTmFtZSgpIGNvbnN0IHtyZXR1cm4gRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyUFJPVldpbkNBUEk7fQorCisJLy9AfQorCisJLyoqIEBuYW1lIE9wdGlvbmFsIEludGVyZmFjZSBtZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUga2V5CisJICoKKwkgKiBTZXQgdGhlIGtleSBmcm9tIHRoZSBidWZmZXIKKwkgKgorCSAqIEBwYXJhbSBpbkJ1ZiBCdWZmZXIgY29udGFpbmluZyB0aGUgZGlyZWN0IGJpdHdpc2UgcmVwcmVzZW50YXRpb24gb2YgdGhlIGtleQorCSAqIEBwYXJhbSBpbkxlbmd0aCBOdW1iZXIgb2YgYnl0ZXMgb2Yga2V5IGluIHRoZSBidWZmZXIKKwkgKgorCSAqIEBub3RlIGlzU2Vuc2l0aXZlKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb24gdGhlIGluYm91bmQgYnVmZmVyCisJICogdG8gZW5zdXJlIHRoZSBjb250ZW50cyBpcyBvdmVyd3JpdHRlbiB3aGVuIHRoZSBzYWZlQnVmZmVyIGlzIGRlbGV0ZWQKKwkgKi8KKworCXZpcnR1YWwgdm9pZCBzZXRLZXkodW5zaWduZWQgY2hhciAqIGluQnVmLCB1bnNpZ25lZCBpbnQgaW5MZW5ndGgpOworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUga2V5IHZhbHVlCisJICogCisJICogQ29weSB0aGUga2V5IGludG8gdGhlIHNhZmVCdWZmZXIgYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzCisJICogY29waWVkLgorCSAqCisJICogQHBhcmFtIG91dEJ1ZiBCdWZmZXIgdG8gY29weSBrZXkgaW50bworCSAqIEByZXR1cm5zIG51bWJlciBvZiBieXRlcyBjb3BpZWQgaW4KKwkgKi8KKworCXZpcnR1YWwgdW5zaWduZWQgaW50IGdldEtleShzYWZlQnVmZmVyICZvdXRCdWYpIGNvbnN0OworCisJLy9AfQorCisJLyoqIEBuYW1lIFdpbmRvd3Mgc3BlY2lmaWMga2V5cyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBTZXQgYSBXaW5kb3dzIGtleQorCSAqCisJICogU2V0IGEgV2luZG93cyBDcnlwdG8ga2V5IHRoYXQgaGFzIGJlZW4gZWl0aGVyIGRlcml2ZWQgdmlhIHRoZQorCSAqIHZhcmlvdXMgQ3J5cHQgZnVuY3Rpb25zIG9yIGhhcyBiZWVuIGxvYWRlZCBmcm9tIGFuIGVuY3J5cHRlZCBCTE9CCisJICoKKwkgKiBAcGFyYW0gayBXaW5kb3dzIENBUEkga2V5IHRvIGxvYWQKKwkgKiBOb3RlIHRoYXQgdGhlIGxpYnJhcnkgbm93IG93bnMgdGhpcyBrZXkgKGFuZCB3aWxsIGRlc3Ryb3kgaXQpLgorCSAqLworCisJdm9pZCBzZXRXaW5LZXkoSENSWVBUS0VZIGspOworCisJLyoqCisJICogXGJyaWVmIEdldCBhIHdpbmRvd3Mga2V5CisJICoKKwkgKiBVc2VkIGJ5IFdpbkNBUElDcnlwdG9IYXNoSE1BQyB0byByZXRyaWV2ZSB0aGUga2V5IGluIG9yZGVyIHRvCisJICogbG9hZCBpdCBpbnRvIHRoZSBITUFDIGZ1bmN0aW9uLgorCSAqCisJICogQHJldHVybnMgVGhlIGtleSB0byB1c2Ugb3IgMCBpZiB0aGlzIG9iamVjdCBkb2VzIG5vdCBob2xkIG9uZQorCSAqLworCisJSENSWVBUS0VZIGdldFdpbktleSh2b2lkKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBHZXQgYSB3aW5kb3dzIGtleSBwcm92aWRlcgorCSAqCisJICogVXNlZCBieSBXaW5DQVBJQ3J5cHRvSGFzaEhNQUMgdG8gcmV0cmlldmUgdGhlIHByb3ZpZGVyIGhhbmRsZSBhc3NvY2lhdGVkCisJICogd2l0aCBhbiBITUFDIGtleSBpbiBvcmRlciB0byBsb2FkIGl0IGludG8gdGhlIEhNQUMgZnVuY3Rpb24uCisJICoKKwkgKiBAcmV0dXJucyBUaGUga2V5IHRvIHVzZSBvciAwIGlmIHRoaXMgb2JqZWN0IGRvZXMgbm90IGhvbGQgb25lCisJICovCisKKwlIQ1JZUFRQUk9WIGdldFdpbktleVByb3Yodm9pZCkgY29uc3Q7CisKKwkvL0B9CisKK3ByaXZhdGU6CisKKwlzYWZlQnVmZmVyCQkJbV9rZXlCdWY7CisJdW5zaWduZWQgaW50CQltX2tleUxlbjsKKworCUhDUllQVEtFWQkJCW1fazsKKwlIQ1JZUFRQUk9WCQkJbV9wOworfTsKKworI2VuZGlmIC8qIEhBVkVfV0lOQ0FQSSAqLworI2VuZGlmIC8qIFdJTkNBUElDUllQVE9LRVlITUFDX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9LZXlSU0EuY3BwIGIvYy9zcmMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b0tleVJTQS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZiOGFhOAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9LZXlSU0EuY3BwCkBAIC0wLDAgKzEsODUxIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBXaW5DQVBJQ3J5cHRvS2V5UlNBIDo9IFJTQSBLZXlzCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvUHJvdmlkZXIuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b0tleVJTQS5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNDcnlwdC9YU0NyeXB0Q3J5cHRvQmFzZTY0LmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvRXhjZXB0aW9uLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorCisjaWYgZGVmaW5lZCAoSEFWRV9XSU5DQVBJKQorCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL0phbml0b3IuaHBwPgorCitYU0VDX1VTSU5HX1hFUkNFUyhBcnJheUphbml0b3IpOworCisjaWYgIWRlZmluZWQgKENSWVBUX09BRVApCisjCWRlZmluZSBDUllQVF9PQUVQICAgICAgICAgICAgICAweDAwMDAwMDQwCisjCWRlZmluZSBLUF9PQUVQX1BBUkFNUyAgICAgICAgICAzNgorI2VuZGlmCisKK1dpbkNBUElDcnlwdG9LZXlSU0E6OldpbkNBUElDcnlwdG9LZXlSU0EoSENSWVBUUFJPViBwcm92KSB7CisKKwkvLyBDcmVhdGUgYSBuZXcga2V5IHRvIGJlIGxvYWRlZCBhcyB3ZSBnbworCisJbV9rZXkgPSAwOworCW1fcCA9IHByb3Y7CisJbV9rZXlTcGVjID0gMDsKKworCW1wX2V4cG9uZW50ID0gTlVMTDsKKwltX2V4cG9uZW50TGVuID0gMDsKKwltcF9tb2R1bHVzID0gTlVMTDsKKwltX21vZHVsdXNMZW4gPSAwOworCit9OworCitXaW5DQVBJQ3J5cHRvS2V5UlNBOjp+V2luQ0FQSUNyeXB0b0tleVJTQSgpIHsKKworCisJLy8gSWYgd2UgaGF2ZSBhIFJTQSwgZGVsZXRlIGl0CisKKwlpZiAobV9rZXkgIT0gMCkKKwkJQ3J5cHREZXN0cm95S2V5KG1fa2V5KTsKKworCWlmIChtcF9leHBvbmVudCkKKwkJZGVsZXRlW10gbXBfZXhwb25lbnQ7CisJaWYgKG1wX21vZHVsdXMpCisJCWRlbGV0ZVtdIG1wX21vZHVsdXM7CisKK307CisKK1dpbkNBUElDcnlwdG9LZXlSU0E6OldpbkNBUElDcnlwdG9LZXlSU0EoSENSWVBUUFJPViBwcm92LCAKKwkJCQkJCQkJCQkgSENSWVBUS0VZIGspIDoKK21fcChwcm92KSB7CisKKwltX2tleSA9IGs7CQkvLyBOT1RFIC0gV2UgT1dOIHRoaXMgaGFuZGxlCisJbV9rZXlTcGVjID0gMDsKKworCW1wX2V4cG9uZW50ID0gbXBfbW9kdWx1cyA9IE5VTEw7CisJbV9leHBvbmVudExlbiA9IG1fbW9kdWx1c0xlbiA9IDA7CisKK30KKworV2luQ0FQSUNyeXB0b0tleVJTQTo6V2luQ0FQSUNyeXB0b0tleVJTQShIQ1JZUFRQUk9WIHByb3YsIAorCQkJCQkJCQkJCSBEV09SRCBrZXlTcGVjLAorCQkJCQkJCQkJCSBib29sIGlzUHJpdmF0ZSkgOgorbV9wKHByb3YpIHsKKworCWlmIChpc1ByaXZhdGUgPT0gZmFsc2UpIHsKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlJTQUVycm9yLAorCQkJIldpbkNBUElDcnlwdG9LZXlSU0EgLSBQdWJsaWMga2V5cyBkZWZpbmVkIHZpYSBrZXlTcGVjIGN0b3Igbm90IHlldCBzdXBwb3J0ZWQiKTsKKworCQkKKwl9CisKKwlpZiAoIUNyeXB0R2V0VXNlcktleShwcm92LCBrZXlTcGVjLCAmbV9rZXkpKSB7CisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6UlNBRXJyb3IsCisJCQkiV2luQ0FQSTpSU0EgVW5hYmxlIHRvIHJldHJpZXZlIHVzZXIga2V5Iik7CisJfQorCisJLy9tX2tleSA9IDA7CisJbV9rZXlTcGVjID0ga2V5U3BlYzsKKworCW1wX2V4cG9uZW50ID0gbXBfbW9kdWx1cyA9IE5VTEw7CisJbV9leHBvbmVudExlbiA9IG1fbW9kdWx1c0xlbiA9IDA7CisKK30KKworLy8gR2VuZXJpYyBrZXkgZnVuY3Rpb25zCisKK1hTRUNDcnlwdG9LZXk6OktleVR5cGUgV2luQ0FQSUNyeXB0b0tleVJTQTo6Z2V0S2V5VHlwZSgpIGNvbnN0IHsKKworCS8vIEZpbmQgb3V0IHdoYXQgd2UgaGF2ZQorCWlmIChtX2tleSA9PSAwKSB7CisKKwkJaWYgKG1fa2V5U3BlYyAhPSAwKQorCQkJcmV0dXJuIEtFWV9SU0FfUFJJVkFURTsKKworCQlpZiAobXBfZXhwb25lbnQgPT0gTlVMTCB8fAorCQkJbXBfbW9kdWx1cyA9PSBOVUxMKQorCQkJcmV0dXJuIEtFWV9OT05FOworCQllbHNlCisJCQlyZXR1cm4gS0VZX1JTQV9QVUJMSUM7CisKKwl9CisKKwlpZiAobV9rZXlTcGVjICE9IDApCisJCXJldHVybiBLRVlfUlNBX1BBSVI7CisKKwlyZXR1cm4gS0VZX1JTQV9QVUJMSUM7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBPQUVQIHBhcmFtZXRlcnMgaGFuZGxpbmcKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwordm9pZCBXaW5DQVBJQ3J5cHRvS2V5UlNBOjpzZXRPQUVQcGFyYW1zKHVuc2lnbmVkIGNoYXIgKiBwYXJhbXMsIHVuc2lnbmVkIGludCBwYXJhbXNMZW4pIHsKKworCWlmIChwYXJhbXMgIT0gTlVMTCAmJiBwYXJhbXNMZW4gIT0gMCkKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpVbnN1cHBvcnRlZEVycm9yLAorCQkJIldpbkNBUEk6OnNldE9BRVBQYXJhbXMgLSBPQUVQIHBhcmFtZXRlcnMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgV2luZG93cyBDcnlwdG8gQVBJIik7CisKK30KKwordW5zaWduZWQgaW50IFdpbkNBUElDcnlwdG9LZXlSU0E6OmdldE9BRVBwYXJhbXNMZW4odm9pZCkgY29uc3QgeworCisJcmV0dXJuIDA7CisKK30KKworY29uc3QgdW5zaWduZWQgY2hhciAqIFdpbkNBUElDcnlwdG9LZXlSU0E6OmdldE9BRVBwYXJhbXModm9pZCkgY29uc3QgeworCisJcmV0dXJuIE5VTEw7CisKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIExvYWQga2V5IGZyb20gcGFyYW1ldGVycworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBXaW5DQVBJQ3J5cHRvS2V5UlNBOjpsb2FkUHVibGljTW9kdWx1c0Jhc2U2NEJpZ051bXMoY29uc3QgY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbikgeworCisJaWYgKG1wX21vZHVsdXMgIT0gTlVMTCkgeworCQlkZWxldGVbXSBtcF9tb2R1bHVzOworCQltcF9tb2R1bHVzID0gTlVMTDsJCS8vIEluIGNhc2Ugd2UgZ2V0IGFuIGV4Y2VwdGlvbgorCX0KKworCW1wX21vZHVsdXMgPSBXaW5DQVBJQ3J5cHRvUHJvdmlkZXI6OmI2NDJXaW5CTihiNjQsIGxlbiwgbV9tb2R1bHVzTGVuKTsKKworfQorCit2b2lkIFdpbkNBUElDcnlwdG9LZXlSU0E6OmxvYWRQdWJsaWNFeHBvbmVudEJhc2U2NEJpZ051bXMoY29uc3QgY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbikgeworCisJaWYgKG1wX2V4cG9uZW50ICE9IE5VTEwpIHsKKwkJZGVsZXRlW10gbXBfZXhwb25lbnQ7CisJCW1wX2V4cG9uZW50ID0gTlVMTDsJCS8vIEluIGNhc2Ugd2UgZ2V0IGFuIGV4Y2VwdGlvbgorCX0KKworCW1wX2V4cG9uZW50ID0gV2luQ0FQSUNyeXB0b1Byb3ZpZGVyOjpiNjQyV2luQk4oYjY0LCBsZW4sIG1fZXhwb25lbnRMZW4pOworCit9CisKK0hDUllQVEtFWSBXaW5DQVBJQ3J5cHRvS2V5UlNBOjppbXBvcnRLZXkodm9pZCkgeworCQorCWlmIChtX2tleSAhPSAwIHx8CisJCW1wX2V4cG9uZW50ID09IE5VTEwgfHwKKwkJbXBfbW9kdWx1cyA9PSBOVUxMKQorCisJCXJldHVybiBtX2tleTsKKworCisJLy8gQ3JlYXRlIGEgUlNBIFB1YmxpYy1LZXkgYmxvYgorCisJLy8gRmlyc3QgYnVpbGQgYSBidWZmZXIgdG8gaG9sZCBldmVyeXRoaW5nCisKKwlCWVRFICogYmxvYkJ1ZmZlcjsKKwl1bnNpZ25lZCBpbnQgYmxvYkJ1ZmZlckxlbiA9IFdJTkNBUElfQkxPQkhFQURFUkxFTiArIFdJTkNBUElfUlNBUFVCS0VZTEVOICsgbV9tb2R1bHVzTGVuOworCVhTRUNuZXcoYmxvYkJ1ZmZlciwgQllURVtibG9iQnVmZmVyTGVuXSk7CisJQXJyYXlKYW5pdG9yPEJZVEU+IGpfYmxvYkJ1ZmZlcihibG9iQnVmZmVyKTsKKworCS8vIEJsb2IgaGVhZGVyCisJQkxPQkhFQURFUiAqIGhlYWRlciA9IChCTE9CSEVBREVSICopIGJsb2JCdWZmZXI7CisKKwloZWFkZXItPmJUeXBlID0gUFVCTElDS0VZQkxPQjsKKwloZWFkZXItPmJWZXJzaW9uID0gMHgwMjsJCQkvLyBXZSBhcmUgdXNpbmcgYSB2ZXJzaW9uIDIgYmxvYgorCWhlYWRlci0+cmVzZXJ2ZWQgPSAwOworCWhlYWRlci0+YWlLZXlBbGcgPSBDQUxHX1JTQV9TSUdOOworCisJLy8gTm93IHRoZSBwdWJsaWMga2V5IGhlYWRlcgorCVJTQVBVQktFWSAqIHB1YmtleSA9IChSU0FQVUJLRVkgKikgKGJsb2JCdWZmZXIgKyBXSU5DQVBJX0JMT0JIRUFERVJMRU4pOworCisJcHVia2V5LT5tYWdpYyA9IDB4MzE0MTUzNTI7CQkJLy8gQVNDSUkgZW5jb2Rpbmcgb2YgUlNBMQorCXB1YmtleS0+Yml0bGVuID0gbV9tb2R1bHVzTGVuICogODsJCS8vIE51bWJlciBvZiBiaXRzIGluIHByaW1lIG1vZHVsdXMKKwlwdWJrZXktPnB1YmV4cCA9IDA7CisJQllURSAqIGkgPSAoKEJZVEUgKikgJihwdWJrZXktPnB1YmV4cCkpOworCWZvciAodW5zaWduZWQgaW50IGogPSAwOyBqIDwgbV9leHBvbmVudExlbjsgKytqKQorCQkqaSsrID0gbXBfZXhwb25lbnRbal07CisKKwkvLyBOb3cgY29weSBpbiB0aGUgbW9kdWx1cworCWkgPSAoQllURSAqKSAocHVia2V5KTsKKwlpICs9IFdJTkNBUElfUlNBUFVCS0VZTEVOOworCisJbWVtY3B5KGksIG1wX21vZHVsdXMsIG1fbW9kdWx1c0xlbik7CisKKwkvLyBOb3cgdGhhdCB3ZSBoYXZlIHRoZSBibG9iLCBpbXBvcnQKKwlCT09MIGZSZXN1bHQgPSBDcnlwdEltcG9ydEtleSgKKwkJCQkJbV9wLAorCQkJCQlibG9iQnVmZmVyLAorCQkJCQlibG9iQnVmZmVyTGVuLAorCQkJCQkwLAkJCQkvLyBOb3Qgc2lnbmVkCisJCQkJCTAsCQkJCS8vIE5vIGZsYWdzCisJCQkJCSZtX2tleSk7CisKKwlpZiAoZlJlc3VsdCA9PSAwKSB7CisJCQorCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlJTQUVycm9yLAorCQkJIldpbkNBUEk6UlNBIEVycm9yIGF0dGVtcHRpbmcgdG8gaW1wb3J0IGtleSBwYXJhbWV0ZXJzIik7CisKKwl9CisKKwlyZXR1cm4gbV9rZXk7CisKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFZlcmlmeSBhIHNpZ25hdHVyZSBlbmNvZGVkIGFzIGEgQmFzZTY0IHN0cmluZworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYm9vbCBXaW5DQVBJQ3J5cHRvS2V5UlNBOjp2ZXJpZnlTSEExUEtDUzFCYXNlNjRTaWduYXR1cmUoY29uc3QgdW5zaWduZWQgY2hhciAqIGhhc2hCdWYsIAorCQkJCQkJCQkgdW5zaWduZWQgaW50IGhhc2hMZW4sCisJCQkJCQkJCSBjb25zdCBjaGFyICogYmFzZTY0U2lnbmF0dXJlLAorCQkJCQkJCQkgdW5zaWduZWQgaW50IHNpZ0xlbiwKKwkJCQkJCQkJIGhhc2hNZXRob2QgaG0pIHsKKworCS8vIFVzZSB0aGUgY3VycmVudGx5IGxvYWRlZCBrZXkgdG8gdmFsaWRhdGUgdGhlIEJhc2U2NCBlbmNvZGVkIHNpZ25hdHVyZQorCisJaWYgKG1fa2V5ID09IDApIHsKKworCQkvLyBUcnkgdG8gaW1wb3J0IGZyb20gdGhlIHBhcmFtZXRlcnMKKwkJaW1wb3J0S2V5KCk7CisKKwkJaWYgKG1fa2V5ID09IDApIHsKKwkJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6UlNBRXJyb3IsCisJCQkJIldpbkNBUEk6UlNBIC0gQXR0ZW1wdCB0byB2YWxpZGF0ZSBzaWduYXR1cmUgd2l0aCBlbXB0eSBrZXkiKTsKKwkJfQorCX0KKworCS8qIElzIHRoaXMgYSBoYXNoIHdlIHN1cHBvcnQ/ICovCisJQUxHX0lEIGFsZzsKKwlzd2l0Y2ggKGhtKSB7CisJY2FzZSAoSEFTSF9NRDUpOgorCQlhbGcgPSBDQUxHX01ENTsKKwkJYnJlYWs7CisJY2FzZSAoSEFTSF9TSEExKToKKwkJYWxnPUNBTEdfU0hBMTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCSJXaW5DQVBJOlJTQSBVbnN1cHBvcnRlZCBoYXNoIGFsZ29yaXRobSBmb3IgUlNBIHNpZ24gLSBvbmx5IE1ENSBvciBTSEExIHN1cHBvcnRlZCIpOworCX0KKworCS8vIERlY29kZSB0aGUgc2lnbmF0dXJlCisJdW5zaWduZWQgY2hhciAqIHJhd1NpZzsKKwlEV09SRCByYXdTaWdMZW47CisJWFNFQ25ldyhyYXdTaWcsIEJZVEUgW3NpZ0xlbl0pOworCUFycmF5SmFuaXRvcjxCWVRFPiBqX3Jhd1NpZyhyYXdTaWcpOworCisJLy8gRGVjb2RlIHRoZSBzaWduYXR1cmUKKwlYU0NyeXB0Q3J5cHRvQmFzZTY0IGI2NDsKKworCWI2NC5kZWNvZGVJbml0KCk7CisJcmF3U2lnTGVuID0gYjY0LmRlY29kZSgodW5zaWduZWQgY2hhciAqKSBiYXNlNjRTaWduYXR1cmUsIHNpZ0xlbiwgcmF3U2lnLCBzaWdMZW4pOworCXJhd1NpZ0xlbiArPSBiNjQuZGVjb2RlRmluaXNoKCZyYXdTaWdbcmF3U2lnTGVuXSwgc2lnTGVuIC0gcmF3U2lnTGVuKTsKKwkKKwlCWVRFICogcmF3U2lnRmluYWw7CisJWFNFQ25ldyhyYXdTaWdGaW5hbCwgQllURVtyYXdTaWdMZW5dKTsKKwlBcnJheUphbml0b3I8QllURT4gal9yYXdTaWdGaW5hbChyYXdTaWdGaW5hbCk7CisKKwlCWVRFICogaiwgKmw7CisJaiA9IHJhd1NpZzsKKwlsID0gcmF3U2lnRmluYWwgKyByYXdTaWdMZW4gLSAxOworCQorCXdoaWxlIChsID49IHJhd1NpZ0ZpbmFsKSB7CisJCSpsLS0gPSAqaisrOworCX0KKworCS8vIEhhdmUgdG8gY3JlYXRlIGEgV2luZG93cyBoYXNoIG9iamVjdCBhbmQgZmVlZCBpbiB0aGUgaGFzaAorCUJPT0wgZlJlc3VsdDsKKwlIQ1JZUFRIQVNIIGg7CisJZlJlc3VsdCA9IENyeXB0Q3JlYXRlSGFzaChtX3AsIAorCQkJCQlhbGcsIAorCQkJCQkwLCAKKwkJCQkJMCwKKwkJCQkJJmgpOworCisJaWYgKCFmUmVzdWx0KSB7CisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6UlNBRXJyb3IsCisJCQkiV2luQ0FQSTpSU0EgLSBFcnJvciBjcmVhdGluZyBXaW5kb3dzIEhhc2ggT2JqZWN0Iik7CisJfQorCisJLy8gRmVlZCB0aGUgaGFzaCB2YWx1ZSBpbnRvIHRoZSBuZXdseSBjcmVhdGVkIGhhc2ggb2JqZWN0CisJZlJlc3VsdCA9IENyeXB0U2V0SGFzaFBhcmFtKAorCQkJCQloLCAKKwkJCQkJSFBfSEFTSFZBTCwKKwkJCQkJKHVuc2lnbmVkIGNoYXIgKikgaGFzaEJ1ZiwKKwkJCQkJMCk7CisKKwlpZiAoIWZSZXN1bHQpIHsKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCSJXaW5DQVBJOlJTQSAtIEVycm9yIFNldHRpbmcgSGFzaCBWYWx1ZSBpbiBXaW5kb3dzIEhhc2ggb2JqZWN0Iik7CisJfQorCisJLy8gTm93IHZhbGlkYXRlCisJZlJlc3VsdCA9IENyeXB0VmVyaWZ5U2lnbmF0dXJlKAorCQkJCWgsCisJCQkJcmF3U2lnRmluYWwsCisJCQkJcmF3U2lnTGVuLAorCQkJCW1fa2V5LAorCQkJCU5VTEwsCisJCQkJMCk7CisKKwlpZiAoIWZSZXN1bHQpIHsKKworCQlEV09SRCBlcnJvciA9IEdldExhc3RFcnJvcigpOworCisJCWlmIChlcnJvciAhPSBOVEVfQkFEX1NJR05BVFVSRSkgeworCQkJaWYgKGgpCisJCQkJQ3J5cHREZXN0cm95SGFzaChoKTsKKwkJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6UlNBRXJyb3IsCisJCQkiV2luQ0FQSTpSU0EgLSBFcnJvciBvY2N1cnJlZCBpbiBSU0EgdmFsaWRhdGlvbiIpOworCQl9CisKKwkJaWYgKGgpCisJCQlDcnlwdERlc3Ryb3lIYXNoKGgpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJaWYgKGgpCisJCUNyeXB0RGVzdHJveUhhc2goaCk7CisJcmV0dXJuIHRydWU7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBTaWduIGFuZCBlbmNvZGUgcmVzdWx0IGFzIGEgQmFzZTY0IHN0cmluZworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCit1bnNpZ25lZCBpbnQgV2luQ0FQSUNyeXB0b0tleVJTQTo6c2lnblNIQTFQS0NTMUJhc2U2NFNpZ25hdHVyZSh1bnNpZ25lZCBjaGFyICogaGFzaEJ1ZiwKKwkJdW5zaWduZWQgaW50IGhhc2hMZW4sCisJCWNoYXIgKiBiYXNlNjRTaWduYXR1cmVCdWYsCisJCXVuc2lnbmVkIGludCBiYXNlNjRTaWduYXR1cmVCdWZMZW4sCisJCWhhc2hNZXRob2QgaG0pIHsKKworCS8vIFNpZ24gYSBwcmUtY2FsY3VsYXRlZCBoYXNoIHVzaW5nIHRoaXMga2V5CisKKwlpZiAobV9rZXlTcGVjID09IDApIHsKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlJTQUVycm9yLAorCQkJIldpbkNBUEk6UlNBIC0gQXR0ZW1wdCB0byBzaWduIGRhdGEgdXNpbmcgYSBwdWJsaWMgb3IgdW4tbG9hZGVkIGtleSIpOworCX0KKworCS8qIElzIHRoaXMgYSBoYXNoIHdlIHN1cHBvcnQ/ICovCisJQUxHX0lEIGFsZzsKKwlzd2l0Y2ggKGhtKSB7CisJY2FzZSAoSEFTSF9NRDUpOgorCQlhbGcgPSBDQUxHX01ENTsKKwkJYnJlYWs7CisJY2FzZSAoSEFTSF9TSEExKToKKwkJYWxnPUNBTEdfU0hBMTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCSJXaW5DQVBJOlJTQSBVbnN1cHBvcnRlZCBoYXNoIGFsZ29yaXRobSBmb3IgUlNBIHNpZ24gLSBvbmx5IE1ENSBvciBTSEExIHN1cHBvcnRlZCIpOworCX0KKworCS8vIEhhdmUgdG8gY3JlYXRlIGEgV2luZG93cyBoYXNoIG9iamVjdCBhbmQgZmVlZCBpbiB0aGUgaGFzaAorCUJPT0wgZlJlc3VsdDsKKwlIQ1JZUFRIQVNIIGg7CisJZlJlc3VsdCA9IENyeXB0Q3JlYXRlSGFzaChtX3AsIAorCQkJCQlhbGcsIAorCQkJCQkwLCAKKwkJCQkJMCwKKwkJCQkJJmgpOworCisJaWYgKCFmUmVzdWx0KSB7CisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6UlNBRXJyb3IsCisJCQkiV2luQ0FQSTpSU0EgLSBFcnJvciBjcmVhdGluZyBXaW5kb3dzIEhhc2ggT2JqZWN0Iik7CisJfQorCisJLy8gRmVlZCB0aGUgaGFzaCB2YWx1ZSBpbnRvIHRoZSBuZXdseSBjcmVhdGVkIGhhc2ggb2JqZWN0CisJZlJlc3VsdCA9IENyeXB0U2V0SGFzaFBhcmFtKAorCQkJCQloLCAKKwkJCQkJSFBfSEFTSFZBTCwgCisJCQkJCWhhc2hCdWYsIAorCQkJCQkwKTsKKworCWlmICghZlJlc3VsdCkgeworCQlpZiAoaCkKKwkJCUNyeXB0RGVzdHJveUhhc2goaCk7CisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6UlNBRXJyb3IsCisJCQkiV2luQ0FQSTpSU0EgLSBFcnJvciBTZXR0aW5nIEhhc2ggVmFsdWUgaW4gV2luZG93cyBIYXNoIG9iamVjdCIpOworCX0KKworCS8vIE5vdyBzaWduCisJRFdPUkQgcmF3U2lnTGVuOworCWZSZXN1bHQgPSBDcnlwdFNpZ25IYXNoKAorCQkJCWgsCisJCQkJbV9rZXlTcGVjLAorCQkJCU5VTEwsCisJCQkJMCwKKwkJCQlOVUxMLAorCQkJCSZyYXdTaWdMZW4pOworCisJaWYgKCFmUmVzdWx0IHx8IHJhd1NpZ0xlbiA8IDEpIHsKKworCQlpZiAoaCkKKwkJCUNyeXB0RGVzdHJveUhhc2goaCk7CisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6UlNBRXJyb3IsCisJCSJXaW5DQVBJOlJTQSAtIEVycm9yIG9jY3VycmVkIG9idGFpbmluZyBSU0Egc2lnIGxlbmd0aCIpOworCX0KKworCUJZVEUgKiByYXdTaWc7CisJWFNFQ25ldyhyYXdTaWcsIEJZVEVbcmF3U2lnTGVuXSk7CisJQXJyYXlKYW5pdG9yPEJZVEU+IGpfcmF3U2lnKHJhd1NpZyk7CisKKwlmUmVzdWx0ID0gQ3J5cHRTaWduSGFzaCgKKwkJCQloLAorCQkJCW1fa2V5U3BlYywKKwkJCQlOVUxMLAorCQkJCTAsCisJCQkJcmF3U2lnLAorCQkJCSZyYXdTaWdMZW4pOworCisJaWYgKCFmUmVzdWx0IHx8IHJhd1NpZ0xlbiA8IDEpIHsKKworCQkvLyBGcmVlIHRoZSBoYXNoCisJCWlmIChoKQorCQkJQ3J5cHREZXN0cm95SGFzaChoKTsKKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlJTQUVycm9yLAorCQkiV2luQ0FQSTpSU0EgLSBFcnJvciBvY2N1cnJlZCBzaWduaW5nIGhhc2giKTsKKwl9CisKKwkvLyBGcmVlIHRoZSBoYXNoCisJaWYgKGgpCisJCUNyeXB0RGVzdHJveUhhc2goaCk7CisKKwkvLyBOb3cgZW5jb2RlIGludG8gYSBzaWduYXR1cmUgYmxvY2sKKwlCWVRFICpyYXdTaWdGaW5hbDsKKwlYU0VDbmV3KHJhd1NpZ0ZpbmFsLCBCWVRFW3Jhd1NpZ0xlbl0pOworCUFycmF5SmFuaXRvcjxCWVRFPiBqX3Jhd1NpZ0ZpbmFsKHJhd1NpZ0ZpbmFsKTsKKworCUJZVEUgKiBpLCAqIGo7CisKKwlpID0gcmF3U2lnOworCWogPSByYXdTaWdGaW5hbCArIHJhd1NpZ0xlbiAtIDE7CisKKwl3aGlsZSAoaiA+PSByYXdTaWdGaW5hbCkgeworCQkqai0tID0gKmkrKzsKKwl9CisKKwkvLyBOb3cgZW5jb2RlCisJWFNDcnlwdENyeXB0b0Jhc2U2NCBiNjQ7CisJYjY0LmVuY29kZUluaXQoKTsKKwl1bnNpZ25lZCBpbnQgcmV0ID0gYjY0LmVuY29kZShyYXdTaWdGaW5hbCwgcmF3U2lnTGVuLCAodW5zaWduZWQgY2hhciAqKSBiYXNlNjRTaWduYXR1cmVCdWYsIGJhc2U2NFNpZ25hdHVyZUJ1Zkxlbik7CisJcmV0ICs9IGI2NC5lbmNvZGVGaW5pc2goKHVuc2lnbmVkIGNoYXIgKikgJmJhc2U2NFNpZ25hdHVyZUJ1ZltyZXRdLCBiYXNlNjRTaWduYXR1cmVCdWZMZW4gLSByZXQpOworCisJcmV0dXJuIHJldDsKKworfQorCitYU0VDQ3J5cHRvS2V5ICogV2luQ0FQSUNyeXB0b0tleVJTQTo6Y2xvbmUoKSBjb25zdCB7CisKKwlXaW5DQVBJQ3J5cHRvS2V5UlNBICogcmV0OworCisJWFNFQ25ldyhyZXQsIFdpbkNBUElDcnlwdG9LZXlSU0EobV9wKSk7CisJCisJaWYgKG1fa2V5ICE9IDApIHsKKworCQkvLyBDcnlwdER1cGxpY2F0ZUtleSBpcyBub3Qgc3VwcG9ydGVkIGluIFdpbmRvd3MgTlQsIHNvIHdlIG5lZWQgdG8gZXhwb3J0IGFuZCB0aGVuCisJCS8vIHJlaW1wb3J0IHRoZSBrZXkgdG8gZ2V0IGEgY29weQorCisJCUJZVEUga2V5QnVmWzIwNDhdOworCQlEV09SRCBrZXlCdWZMZW4gPSAyMDQ4OworCQlDcnlwdEV4cG9ydEtleShtX2tleSwgMCwgUFVCTElDS0VZQkxPQiwgMCwga2V5QnVmLCAma2V5QnVmTGVuKTsKKworCQkvLyBOb3cgcmUtaW1wb3J0CisJCUNyeXB0SW1wb3J0S2V5KG1fcCwga2V5QnVmLCBrZXlCdWZMZW4sIE5VTEwsIDAsICZyZXQtPm1fa2V5KTsKKwl9CisKKwlyZXQtPm1fa2V5U3BlYyA9IG1fa2V5U3BlYzsKKworCXJldC0+bV9leHBvbmVudExlbiA9IG1fZXhwb25lbnRMZW47CisJaWYgKG1wX2V4cG9uZW50ICE9IE5VTEwpIHsKKwkJWFNFQ25ldyhyZXQtPm1wX2V4cG9uZW50LCBCWVRFW21fZXhwb25lbnRMZW5dKTsKKwkJbWVtY3B5KHJldC0+bXBfZXhwb25lbnQsIG1wX2V4cG9uZW50LCBtX2V4cG9uZW50TGVuKTsKKwl9CisJZWxzZQorCQlyZXQtPm1wX2V4cG9uZW50ID0gTlVMTDsKKworCXJldC0+bV9tb2R1bHVzTGVuID0gbV9tb2R1bHVzTGVuOworCWlmIChtcF9tb2R1bHVzICE9IE5VTEwpIHsKKwkJWFNFQ25ldyhyZXQtPm1wX21vZHVsdXMsIEJZVEVbbV9tb2R1bHVzTGVuXSk7CisJCW1lbWNweShyZXQtPm1wX21vZHVsdXMsIG1wX21vZHVsdXMsIG1fbW9kdWx1c0xlbik7CisJfQorCWVsc2UKKwkJcmV0LT5tcF9tb2R1bHVzID0gTlVMTDsKKworCXJldHVybiByZXQ7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBkZWNyeXB0IGEgYnVmZmVyCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit1bnNpZ25lZCBpbnQgV2luQ0FQSUNyeXB0b0tleVJTQTo6cHJpdmF0ZURlY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqIGluQnVmLAorCQkJCQkJCQkgdW5zaWduZWQgY2hhciAqIHBsYWluQnVmLCAKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBpbkxlbmd0aCwKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBtYXhPdXRMZW5ndGgsCisJCQkJCQkJCSBQYWRkaW5nVHlwZSBwYWRkaW5nLAorCQkJCQkJCQkgaGFzaE1ldGhvZCBobSkgeworCisJLy8gUGVyZm9ybSBhIGRlY3J5cHQKKwlpZiAobV9rZXkgPT0gMCkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6UlNBRXJyb3IsCisJCQkiV2luQ0FQSTpSU0EgLSBBdHRlbXB0IHRvIGRlY3J5cHQgZGF0YSB3aXRoIGVtcHR5IGtleSIpOworCX0KKworCS8vIEhhdmUgdG8gcmV2ZXJzZSBvcmRlcmluZyBvZiBpbnB1dCA6CisJRFdPUkQgZGVjcnlwdFNpemUgPSBpbkxlbmd0aDsKKwkvLyBtZW1jcHkocGxhaW5CdWYsIGluQnVmLCBpbkxlbmd0aCk7CisJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBpbkxlbmd0aDsgKytpKQorCQlwbGFpbkJ1ZltpXSA9IGluQnVmW2luTGVuZ3RoIC0gMSAtIGldOworCisJc3dpdGNoIChwYWRkaW5nKSB7CisKKwljYXNlIFhTRUNDcnlwdG9LZXlSU0E6OlBBRF9QS0NTXzFfNSA6CisKKwkJaWYgKCFDcnlwdERlY3J5cHQobV9rZXksCisJCQkJCQkgMCwKKwkJCQkJCSBUUlVFLAorCQkJCQkJIDAsCisJCQkJCQkgcGxhaW5CdWYsCisJCQkJCQkgJmRlY3J5cHRTaXplKSkgeworCisJCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlJTQUVycm9yLAorCQkJCSJXaW5DQVBJOlJTQSBwcml2YXRlS2V5RGVjcnlwdCAtIEVycm9yIERlY3J5cHRpbmcgUEtDUzFfNSBwYWRkZWQgUlNBIGVuY3J5cHQiKTsKKworCQl9CisKKwkJYnJlYWs7CisKKwljYXNlIFhTRUNDcnlwdG9LZXlSU0E6OlBBRF9PQUVQX01HRlAxIDoKKworCQlpZiAoIUNyeXB0RGVjcnlwdChtX2tleSwKKwkJCQkJCSAwLAorCQkJCQkJIFRSVUUsCisJCQkJCQkgQ1JZUFRfT0FFUCwKKwkJCQkJCSBwbGFpbkJ1ZiwKKwkJCQkJCSAmZGVjcnlwdFNpemUpKSB7CisKKwkJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6UlNBRXJyb3IsCisJCQkJIldpbkNBUEk6UlNBIHByaXZhdGVLZXlEZWNyeXB0IC0gRXJyb3IgRGVjcnlwdGluZyBQS0NTMV81IHBhZGRlZCBSU0EgZW5jcnlwdCIpOworCisJCX0KKworCQlicmVhazsKKworCisJZGVmYXVsdCA6CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCSJXaU5DQVBJOlJTQSAtIFVua25vd24gcGFkZGluZyBtZXRob2QiKTsKKworCX0KKworCisJcmV0dXJuIGRlY3J5cHRTaXplOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgZW5jcnlwdCBhIGJ1ZmZlcgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordW5zaWduZWQgaW50IFdpbkNBUElDcnlwdG9LZXlSU0E6OnB1YmxpY0VuY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqIGluQnVmLAorCQkJCQkJCQkgdW5zaWduZWQgY2hhciAqIGNpcGhlckJ1ZiwgCisJCQkJCQkJCSB1bnNpZ25lZCBpbnQgaW5MZW5ndGgsCisJCQkJCQkJCSB1bnNpZ25lZCBpbnQgbWF4T3V0TGVuZ3RoLAorCQkJCQkJCQkgUGFkZGluZ1R5cGUgcGFkZGluZywKKwkJCQkJCQkJIGhhc2hNZXRob2QgaG0pIHsKKworCS8vIFBlcmZvcm0gYW4gZW5jcnlwdAorCWlmIChtX2tleSA9PSAwKSB7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCSJXaW5DQVBJOlJTQSAtIEF0dGVtcHQgdG8gZW5jcnlwdCBkYXRhIHdpdGggZW1wdHkga2V5Iik7CisJfQorCisJRFdPUkQgZW5jcnlwdFNpemUgPSBpbkxlbmd0aDsKKwltZW1jcHkoY2lwaGVyQnVmLCBpbkJ1ZiwgaW5MZW5ndGgpOworCisJc3dpdGNoIChwYWRkaW5nKSB7CisKKwljYXNlIFhTRUNDcnlwdG9LZXlSU0E6OlBBRF9QS0NTXzFfNSA6CisKKwkJaWYgKCFDcnlwdEVuY3J5cHQobV9rZXksCisJCQkJCQkgIDAsCQkJLyogTm8gSGFzaCAqLworCQkJCQkJICBUUlVFLAkJCS8qIElzIEZpbmFsICovCisJCQkJCQkgIDAsCQkJLyogTm8gZmxhZ3MgKi8KKwkJCQkJCSAgY2lwaGVyQnVmLAorCQkJCQkJICAmZW5jcnlwdFNpemUsCisJCQkJCQkgIG1heE91dExlbmd0aCkpIHsKKworCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCQkiV2luQ0FQSTpSU0EgcHVibGljS2V5RW5jcnlwdCAtIEVycm9yIHBlcmZvcm1pbmcgZW5jcnlwdCIpOworCQl9CisKKwkJaWYgKGVuY3J5cHRTaXplIDw9IDApIHsKKworCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCQkiV2luQ0FQSTpSU0EgcHVibGljS2V5RW5jcnlwdCAtIEVycm9yIHBlcmZvcm1pbmcgUEtDUzFfNSBwYWRkZWQgUlNBIGVuY3J5cHQiKTsKKworCQl9CisKKwkJYnJlYWs7CisKKwljYXNlIFhTRUNDcnlwdG9LZXlSU0E6OlBBRF9PQUVQX01HRlAxIDoKKworCQlpZiAoIUNyeXB0RW5jcnlwdChtX2tleSwKKwkJCQkJCSAgMCwJCQkvKiBObyBIYXNoICovCisJCQkJCQkgIFRSVUUsCQkJLyogSXMgRmluYWwgKi8KKwkJCQkJCSAgQ1JZUFRfT0FFUCwKKwkJCQkJCSAgY2lwaGVyQnVmLAorCQkJCQkJICAmZW5jcnlwdFNpemUsCisJCQkJCQkgIG1heE91dExlbmd0aCkpIHsKKworCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCQkiV2luQ0FQSTpSU0EgcHVibGljS2V5RW5jcnlwdCAtIEVycm9yIHBlcmZvcm1pbmcgZW5jcnlwdCIpOworCQl9CisKKwkJaWYgKGVuY3J5cHRTaXplIDw9IDApIHsKKworCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCQkiV2luQ0FQSTpSU0EgcHVibGljS2V5RW5jcnlwdCAtIEVycm9yIHBlcmZvcm1pbmcgT0FFUCBSU0EgZW5jcnlwdCIpOworCisJCX0KKworCQlicmVhazsKKworCWRlZmF1bHQgOgorCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6UlNBRXJyb3IsCisJCQkiV2luQ0FQSTpSU0EgLSBVbmtub3duIHBhZGRpbmcgbWV0aG9kIik7CisKKwl9CisKKwkvLyBSZXZlcnNlIHRoZSBvdXRwdXQKKwl1bnNpZ25lZCBjaGFyICp0YnVmOworCVhTRUNuZXcodGJ1ZiwgdW5zaWduZWQgY2hhcltlbmNyeXB0U2l6ZV0pOworCUFycmF5SmFuaXRvcjx1bnNpZ25lZCBjaGFyPiBqX3RidWYodGJ1Zik7CisJbWVtY3B5KHRidWYsIGNpcGhlckJ1ZiwgZW5jcnlwdFNpemUpOworCisJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBlbmNyeXB0U2l6ZTsgKytpKQorCQljaXBoZXJCdWZbaV0gPSB0YnVmW2VuY3J5cHRTaXplIC0gMSAtIGldOworCisJcmV0dXJuIGVuY3J5cHRTaXplOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU2l6ZSBpbiBieXRlcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordW5zaWduZWQgaW50IFdpbkNBUElDcnlwdG9LZXlSU0E6OmdldExlbmd0aCh2b2lkKSBjb25zdCB7CisKKwlEV09SRCBsZW47CisJRFdPUkQgcExlbiA9IDQ7CisKKwlpZiAoIUNyeXB0R2V0S2V5UGFyYW0obV9rZXksCisJCQkJCSBLUF9CTE9DS0xFTiwKKwkJCQkJIChCWVRFICopICZsZW4sCisJCQkJCSAmcExlbiwKKwkJCQkJIDApKSB7CisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6UlNBRXJyb3IsCisJCQkiV2luQ0FQSTpSU0EgLSBFcnJvciBkZXRlcm1pbmluZyBrZXkgc2l6ZSIpOworCX0KKworCXJldHVybiBsZW4gLyA4OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU29tZSB1dGlsaXR5IGZ1bmN0aW9ucworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBXaW5DQVBJQ3J5cHRvS2V5UlNBOjpsb2FkUGFyYW1zRnJvbUtleSh2b2lkKSB7CisKKwlpZiAobV9rZXkgPT0gMCkgeworCisJCWlmIChtX2tleVNwZWMgPT0gMCkKKwkJCXJldHVybjsKKworCQkvLyBTZWUgb2Ygd2UgY2FuIGdldCB0aGUgdXNlciBrZXkKKwkJaWYgKCFDcnlwdEdldFVzZXJLZXkobV9wLCBtX2tleVNwZWMsICZtX2tleSkpCisJCQlyZXR1cm47CisJfQorCisJLy8gRXhwb3J0IGtleSBpbnRvIGEga2V5YmxvYgorCUJPT0wgZlJlc3VsdDsKKwlEV09SRCBibG9iTGVuOworCisJZlJlc3VsdCA9IENyeXB0RXhwb3J0S2V5KAorCQltX2tleSwKKwkJMCwKKwkJUFVCTElDS0VZQkxPQiwKKwkJMCwKKwkJTlVMTCwKKwkJJmJsb2JMZW4pOworCQorCWlmIChmUmVzdWx0ID09IDAgfHwgYmxvYkxlbiA8IDEpIHsKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCSJXaW5DQVBJOlJTQSAtIEVycm9yIGV4cG9ydGluZyBwdWJsaWMga2V5Iik7CisJfQorCisJQllURSAqIGJsb2I7CisJWFNFQ25ldyhibG9iLCBCWVRFW2Jsb2JMZW5dKTsKKwlBcnJheUphbml0b3I8QllURT4gal9ibG9iKGJsb2IpOworCisJZlJlc3VsdCA9IENyeXB0RXhwb3J0S2V5KAorCQltX2tleSwKKwkJMCwKKwkJUFVCTElDS0VZQkxPQiwKKwkJMCwKKwkJYmxvYiwKKwkJJmJsb2JMZW4pOworCQorCWlmIChmUmVzdWx0ID09IDAgfHwgYmxvYkxlbiA8IDEpIHsKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpSU0FFcnJvciwKKwkJCSJXaW5DQVBJOlJTQSAtIEVycm9yIGV4cG9ydGluZyBwdWJsaWMga2V5Iik7CisJfQorCisJUlNBUFVCS0VZICogcGsgPSAoUlNBUFVCS0VZICopICggYmxvYiArIFdJTkNBUElfQkxPQkhFQURFUkxFTiApOworCURXT1JEIGtleUxlbiA9IHBrLT5iaXRsZW4gLyA4OworCisJLy8gQ29weSB0aGUga2V5cworCQorCUJZVEUgKiBpID0gKEJZVEUgKikgKCBwayApOworCWkgKz0gV0lOQ0FQSV9SU0FQVUJLRVlMRU47CisJaWYgKG1wX21vZHVsdXMgIT0gTlVMTCkKKwkJZGVsZXRlW10gbXBfbW9kdWx1czsKKworCW1fbW9kdWx1c0xlbiA9IGtleUxlbjsKKwlYU0VDbmV3KG1wX21vZHVsdXMsIEJZVEVbbV9tb2R1bHVzTGVuXSk7CisJbWVtY3B5KG1wX21vZHVsdXMsIGksIG1fbW9kdWx1c0xlbik7CisKKwkvLyBUYWtlIHRoZSBzaW1wbGUgd2F5IG91dAorCVhTRUNuZXcobXBfZXhwb25lbnQsIEJZVEVbNF0pOworCSooKERXT1JEICopIG1wX2V4cG9uZW50KSA9IHBrLT5wdWJleHA7CisKKwkvLyBOb3cgY3V0IGFueSBsZWFkaW5nIDBzIChXaW5kb3dzIGlzIExFLCBzbyBzdGFydCBsZWFzdCBzaWduaWZpY2FudCBlbmQpCisKKwltX2V4cG9uZW50TGVuID0gMzsKKwl3aGlsZSAobV9leHBvbmVudExlbiA+IDAgJiYgbXBfZXhwb25lbnRbbV9leHBvbmVudExlbl0gPT0gMCkKKwkJbV9leHBvbmVudExlbi0tOworCisJbV9leHBvbmVudExlbisrOwkvLyBNYWtlIGl0IGEgbGVuZ3RoIGFzIGFwcG9zZWQgdG8gYW4gb2Zmc2V0Cit9CisKK3Vuc2lnbmVkIGludCBXaW5DQVBJQ3J5cHRvS2V5UlNBOjpnZXRFeHBvbmVudEJhc2U2NEJpZ051bXMoY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbikgeworCisJaWYgKG1fa2V5ID09IDAgJiYgbV9rZXlTcGVjID09IDAgJiYgbXBfZXhwb25lbnQgPT0gTlVMTCkgeworCisJCXJldHVybiAwOwkvLyBOb3RoaW5nIHdlIGNhbiBkbworCisJfQorCisJaWYgKG1wX2V4cG9uZW50ID09IE5VTEwpIHsKKworCQlsb2FkUGFyYW1zRnJvbUtleSgpOworCisJfQorCisJdW5zaWduZWQgaW50IGJMZW47CisJdW5zaWduZWQgY2hhciAqIGIgPSAgV2luQ0FQSUNyeXB0b1Byb3ZpZGVyOjpXaW5CTjJiNjQobXBfZXhwb25lbnQsIG1fZXhwb25lbnRMZW4sIGJMZW4pOworCWlmIChiTGVuID4gbGVuKQorCQliTGVuID0gbGVuOworCW1lbWNweShiNjQsIGIsIGJMZW4pOworCWRlbGV0ZVtdIGI7CisKKwlyZXR1cm4gYkxlbjsKKworfQorCit1bnNpZ25lZCBpbnQgV2luQ0FQSUNyeXB0b0tleVJTQTo6Z2V0TW9kdWx1c0Jhc2U2NEJpZ051bXMoY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbikgeworCisJaWYgKG1fa2V5ID09IDAgJiYgbV9rZXlTcGVjID09IDAgJiYgbXBfbW9kdWx1cyA9PSBOVUxMKSB7CisKKwkJcmV0dXJuIDA7CS8vIE5vdGhpbmcgd2UgY2FuIGRvCisKKwl9CisKKwlpZiAobXBfbW9kdWx1cyA9PSBOVUxMKSB7CisKKwkJbG9hZFBhcmFtc0Zyb21LZXkoKTsKKworCX0KKworCXVuc2lnbmVkIGludCBiTGVuOworCXVuc2lnbmVkIGNoYXIgKiBiID0gIFdpbkNBUElDcnlwdG9Qcm92aWRlcjo6V2luQk4yYjY0KG1wX21vZHVsdXMsIG1fbW9kdWx1c0xlbiwgYkxlbik7CisJaWYgKGJMZW4gPiBsZW4pCisJCWJMZW4gPSBsZW47CisJbWVtY3B5KGI2NCwgYiwgYkxlbik7CisJZGVsZXRlW10gYjsKKworCXJldHVybiBiTGVuOworCit9CisKKyNlbmRpZiAvKiBXSU5DQVBJICovCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvS2V5UlNBLmhwcCBiL2Mvc3JjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9LZXlSU0EuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2YWQ1ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvS2V5UlNBLmhwcApAQCAtMCwwICsxLDM2NCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogV2luQ0FQSUNyeXB0b0tleVJTQSA6PSBXaW5kb3dzIGltcGxlbWVudGF0aW9uIG9mIFJTQSBLZXlzCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFdJTkNBUElDUllQVE9LRVlSU0FfSU5DTFVERQorI2RlZmluZSBXSU5DQVBJQ1JZUFRPS0VZUlNBX0lOQ0xVREUKKworI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9LZXlSU0EuaHBwPgorCisjaWYgZGVmaW5lZCAoSEFWRV9XSU5DQVBJKQorCisjaWYgIWRlZmluZWQoX1dJTjMyX1dJTk5UKQorIwlkZWZpbmUgX1dJTjMyX1dJTk5UIDB4MDQwMAorI2VuZGlmCisKKyNpbmNsdWRlIDx3aW5jcnlwdC5oPgorCitjbGFzcyBXaW5DQVBJQ3J5cHRvUHJvdmlkZXI7CisKKy8qKgorICogXGluZ3JvdXAgd2luY2FwaWNyeXB0bworICovCisKKy8qKgorICogXGJyaWVmIFdpbkNBUEkgaW1wbGVtZW50YXRpb24gb2YgdGhlIGludGVyZmFjZSBjbGFzcyBmb3IgUlNBIGtleXMuCisgKgorICogVGhlIGxpYnJhcnkgdXNlcyBjbGFzc2VzIGRlcml2ZWQgZnJvbSB0aGlzIHRvIHByb2Nlc3MgUlNBIGtleXMuCisgKi8KKworY2xhc3MgRFNJR19FWFBPUlQgV2luQ0FQSUNyeXB0b0tleVJTQSA6IHB1YmxpYyBYU0VDQ3J5cHRvS2V5UlNBIHsKKworcHVibGljIDoKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhbiBSU0Ega2V5CisJICoKKwkgKiBDb25zdHJ1Y3RvciB1c2VkIHRvIGNyZWF0ZSBhbiAiZW1wdHkiIFJTQSBrZXksIHRoYXQgdGhlCisJICogbGlicmFyeSB3aWxsIGxhdGVyIHNldCBwYXJhbWV0ZXJzIGZvciB0aGUgcHVibGljIGtleSB3aXRoaW4uCisJICoKKwkgKiBAcGFyYW0gcHJvdiBBIGhhbmRsZSB0byBhIFBST1ZfUlNBX0ZVTEwgcHJvdmlkZXIgdGhhdCB0aGUKKwkgKiBsaWJyYXJ5IHdpbGwgZXZlbnR1YWxseSBpbXBvcnQgdGhlIGtleSBpbnRvCisJICovCisKKwlXaW5DQVBJQ3J5cHRvS2V5UlNBKEhDUllQVFBST1YgcHJvdik7CisKKwkvKioKKwkgKiBcYnJpZWYgRGVkaWNhdGVkIFdpbkNBUEkgY29uc3RydWN0b3IgZm9yIGEgcHVibGljIFJTQSBrZXkKKwkgKgorCSAqIENyZWF0ZSBhIHB1YmxpYyBSU0Ega2V5IGZvciB1c2UgaW4gWFNFQyBmcm9tIGFuIGV4aXN0aW5nIEhDUllQVEtFWQorCSAqCisJICogQHBhcmFtIHByb3YgVGhlIGhhbmRsZSB0byB0aGUgcHJvdmlkZXIgdGhhdCB3YXMgdXNlZCB0byBjcmVhdGUgdGhlIGtleQorCSAqIEBwYXJhbSBrIFRoZSBrZXkgdG8gdXNlCisJICogQG5vdGUgayBpcyBvd25lZCBieSB0aGUgbGlicmFyeS4gIFdoZW4gdGhlIHdyYXBwZXIgCisJICogV2luQ0FQSUNyeXB0b0tleVJTQSBpcyBkZWxldGVkLCBrIHdpbGwgYmUgZGVzdHJveWVkIHVzaW5nCisJICogQ3J5cHREZXN0cm95S2V5KCkKKwkgKi8KKworCVdpbkNBUElDcnlwdG9LZXlSU0EoSENSWVBUUFJPViBwcm92LCBIQ1JZUFRLRVkgayk7CisKKwkvKioKKwkgKiBcYnJpZWYgRGVkaWNhdGVkIFdpbkNBUEkgY29uc3RydWN0b3IgZm9yIGEgcHJpdmF0ZSBSU0Ega2V5CisJICoKKwkgKiBDcmVhdGUgYSBwdWJsaWMgUlNBIGtleSBmb3IgdXNlIGluIFhTRUMgZnJvbSBhbiBrZXlTcGVjCisJICoKKwkgKiBAcGFyYW0gcHJvdiBUaGUgaGFuZGxlIHRvIHRoZSBwcm92aWRlciB0aGF0IHdhcyB1c2VkIHRvIGNyZWF0ZSB0aGUga2V5CisJICogQHBhcmFtIGtleVNwZWMgVGhlIGtleSB0byB1c2UgKEFUX1NJR05BVFVSRSBvciBBVF9LRVlFWENIQU5HRQorCSAqIEBwYXJhbSBpc1ByaXZhdGUgU2hvdWxkIGJlIHRydWUuICBNYXkgYmUgdXNlZCBsYXRlciBmb3IgcHVibGljIAorCSAqIGtleXMgY3JlYXRlZCB0aGlzIHdheQorCSAqLworCisJV2luQ0FQSUNyeXB0b0tleVJTQShIQ1JZUFRQUk9WIHByb3YsIERXT1JEIGtleVNwZWMsIGJvb2wgaXNQcml2YXRlKTsKKworCXZpcnR1YWwgfldpbkNBUElDcnlwdG9LZXlSU0EoKTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBLZXkgSW50ZXJmYWNlIG1ldGhvZHMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIHRoZSB0eXBlIG9mIHRoaXMga2V5LgorCSAqCisJICogRm9yIFJTQSBrZXlzLCB0aGlzIGFsbG93cyBwZW9wbGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBpcyBhIAorCSAqIHB1YmxpYyBrZXksIHByaXZhdGUga2V5IG9yIGEga2V5IHBhaXIKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0tleTo6S2V5VHlwZSBnZXRLZXlUeXBlKCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIHRoZSBXaW5DQVBJIGlkZW50aWZpZXIgc3RyaW5nCisJICovCisJCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldFByb3ZpZGVyTmFtZSgpIGNvbnN0IHtyZXR1cm4gRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyUFJPVldpbkNBUEk7fQorCQorCS8qKgorCSAqIFxicmllZiBSZXBsaWNhdGUga2V5CisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXkgKiBjbG9uZSgpIGNvbnN0OworCisJLy9AfQorCisJLyoqIEBuYW1lIE1hbmRhdG9yeSBSU0EgaW50ZXJmYWNlIG1ldGhvZHMgCisJICoKKwkgKiBUaGVzZSBjbGFzc2VzIGFyZSByZXF1aXJlZCBieSB0aGUgbGlicmFyeS4KKwkgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgU2V0IHRoZSBPQUVQcGFyYW1zIHN0cmluZworCSAqCisJICogQnkgZGVmYXVsdCwgdGhlIGxpYnJhcnkgZXhwZWN0cyBjcnlwdG8gaW1wbGVtZW50YXRpb25zIHRvIHBlcmZvcm0KKwkgKiBPQUVQIHBhZGRpbmcgd2l0aCBubyBwYXJhbXMuICBUaGlzIGNhbGwgYWxsb3dzIHRoZSBsaWJyYXJ5IChvciB1c2VyKQorCSAqIHRvIHNldCBhIHBhcmFtcyB2YWx1ZSBwcmlvciB0byBhbiBlbmNyeXB0L2RlY3J5cHQgb3BlcmF0aW9uLgorCSAqCisJICogQHBhcmFtIHBhcmFtcyBidWZmZXIgY29udGFpbmluZyB0aGUgcGFyYW1zIGRhdGEuICBQYXNzIGluIE5VTEwgdG8gY2xlYXIgYW55CisJICogb2xkIHBhcmFtdGVycy4KKwkgKiBAcGFyYW0gcGFyYW1zTGVuIG51bWJlciBvZiBieXRlcyBpbiBidWZmZXIgdG8gdXNlLiAgUGFzcyBpbiAwIHRvIGNsZWFyIGFueQorCSAqIG9sZCBwYXJhbWV0ZXJzLgorCSAqIEBub3RlIFRoZSBNaWNyb3NvZnQgQ3J5cHRvIFJTQV9BRVMgYW5kIFJTQV9GVUxMIHByb3ZpZGVycyBkbyBub3Qgc3VwcG9ydAorCSAqIHRoZSBhYmlsaXR5IHRvIHNldCBPQUVQIHBhcmFtZXRlcnMsIHNvIHRoaXMgd2lsbCB0aHJvdyBhbiAKKwkgKiBYU0VDQ3J5cHRvRXhjZXB0aW9uOjpVbnN1cHBvcnRlZEVycm9yLCB1bmxlc3MgdGhlIHBhc3NlZCBpbiBwYXJhbXRlcnMKKwkgKiBhcmUgTlVMTCBhbmQgMCAodG8gY2xlYXIpLgorCSAqLworCisJdmlydHVhbCB2b2lkIHNldE9BRVBwYXJhbXModW5zaWduZWQgY2hhciAqIHBhcmFtcywgdW5zaWduZWQgaW50IHBhcmFtc0xlbik7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IE9BRVBwYXJhbXMgTGVuZ3RoCisJICoKKwkgKiBAcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIG9mIHRoZSBPQUVQcGFyYW1zIGJ1ZmZlciAoYXNzdW1pbmcgaXQgaGFzIGJlZW4gc2V0KQorCSAqIEBub3RlIFRoZSBNaWNyb3NvZnQgQ3J5cHRvIFJTQV9BRVMgYW5kIFJTQV9GVUxMIHByb3ZpZGVycyBkbyBub3Qgc3VwcG9ydAorCSAqIHRoZSBhYmlsaXR5IHRvIHNldCBPQUVQIHBhcmFtZXRlcnMsIHNvIHRoaXMgd2lsbCBhbHdheXMgcmV0dXJuIDAKKwkgKi8KKworCXZpcnR1YWwgdW5zaWduZWQgaW50IGdldE9BRVBwYXJhbXNMZW4odm9pZCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBPQUVQcGFyYW1zCisJICoKKwkgKiBAcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIChjcnlwdG8gb2JqZWN0IG93bmVkKSBidWZmZXIgaG9sZGluZyB0aGUgT0FFUHBhcmFtcworCSAqIG9yIE5VTEwgaWYgbm8gcGFyYW1zIGFyZSBoZWxkCisJICogQG5vdGUgVGhlIE1pY3Jvc29mdCBDcnlwdG8gUlNBX0FFUyBhbmQgUlNBX0ZVTEwgcHJvdmlkZXJzIGRvIG5vdCBzdXBwb3J0CisJICogdGhlIGFiaWxpdHkgdG8gc2V0IE9BRVAgcGFyYW1ldGVycywgc28gdGhpcyB3aWxsIGFsd2F5cyByZXR1cm4gTlVMTAorCSAqLworCisJdmlydHVhbCBjb25zdCB1bnNpZ25lZCBjaGFyICogZ2V0T0FFUHBhcmFtcyh2b2lkKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBWZXJpZnkgYSBTSEExIFBLQ1MxIGVuY29kZWQgc2lnbmF0dXJlCisJICoKKwkgKiBUaGUgbGlicmFyeSB3aWxsIGNhbGwgdGhpcyBmdW5jdGlvbiB0byB2YWxpZGF0ZSBhbiBSU0Egc2lnbmF0dXJlCisJICogVGhlIHN0YW5kYXJkIGJ5IGRlZmF1bHQgdXNlcyBTSEExIGluIGEgUEtDUzEgZW5jb2RpbmcuCisJICoKKwkgKiBAcGFyYW0gaGFzaEJ1ZiBCdWZmZXIgY29udGFpbmluZyB0aGUgcHJlLWNhbGN1bGF0ZWQgKGJpbmFyeSkgZGlnZXN0CisJICogQHBhcmFtIGhhc2hMZW4gTGVuZ3RoIG9mIHRoZSBkYXRhIGluIHRoZSBkaWdlc3QgYnVmZmVyCisJICogQHBhcmFtIGJhc2U2NFNpZ25hdHVyZSBCdWZmZXIgY29udGFpbmluZyB0aGUgQmFzZTY0IGVuY29kZWQgc2lnbmF0dXJlCisJICogQHBhcmFtIHNpZ0xlbiBMZW5ndGggb2YgdGhlIGRhdGEgaW4gdGhlIHNpZ25hdHVyZSBidWZmZXIKKwkgKiBAcGFyYW0gaG0gVGhlIGhhc2ggbWV0aG9kIHRoYXQgd2FzIHVzZWQgdG8gY3JlYXRlIHRoZSBoYXNoIHRoYXQgaXMgYmVpbmcKKwkgKiBwYXNzZWQgaW4KKwkgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBzaWduYXR1cmUgd2FzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UKKwkgKi8KKworCXZpcnR1YWwgYm9vbCB2ZXJpZnlTSEExUEtDUzFCYXNlNjRTaWduYXR1cmUoY29uc3QgdW5zaWduZWQgY2hhciAqIGhhc2hCdWYsIAorCQkJCQkJCQkgdW5zaWduZWQgaW50IGhhc2hMZW4sCisJCQkJCQkJCSBjb25zdCBjaGFyICogYmFzZTY0U2lnbmF0dXJlLAorCQkJCQkJCQkgdW5zaWduZWQgaW50IHNpZ0xlbiwKKwkJCQkJCQkJIGhhc2hNZXRob2QgaG0pOworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIHNpZ25hdHVyZQorCSAqCisJICogVGhlIGxpYnJhcnkgd2lsbCBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gY3JlYXRlIGEgc2lnbmF0dXJlIGZyb20KKwkgKiBhIHByZS1jYWxjdWxhdGVkIGRpZ2VzdC4gIFRoZSBvdXRwdXQgc2lnbmF0dXJlIHdpbGwKKwkgKiBiZSBCYXNlNjQgZW5jb2RlZCBzdWNoIHRoYXQgaXQgY2FuIGJlIHBsYWNlZCBkaXJlY3RseSBpbnRvIHRoZQorCSAqIFhNTCBkb2N1bWVudAorCSAqCisJICogQHBhcmFtIGhhc2hCdWYgQnVmZmVyIGNvbnRhaW5pbmcgdGhlIHByZS1jYWxjdWxhdGVkIChiaW5hcnkpIGRpZ2VzdAorCSAqIEBwYXJhbSBoYXNoTGVuIE51bWJlciBvZiBieXRlcyBvZiBoYXNoIGluIHRoZSBoYXNoQnVmCisJICogQHBhcmFtIGJhc2U2NFNpZ25hdHVyZUJ1ZiBCdWZmZXIgdG8gcGxhY2UgdGhlIGJhc2U2NCBlbmNvZGVkIHJlc3VsdAorCSAqIGluLgorCSAqIEBwYXJhbSBiYXNlNjRTaWduYXR1cmVCdWZMZW4gSW1wbGVtZW50YXRpb25zIG5lZWQgdG8gZW5zdXJlIHRoZXkgZG8KKwkgKiBub3Qgd3JpdGUgbW9yZSBieXRlcyB0aGFuIHRoaXMgaW50byB0aGUgYnVmZmVyCisJICogQHBhcmFtIGhtIFRoZSBoYXNoIG1ldGhvZCB0aGF0IHdhcyB1c2VkIHRvIGNyZWF0ZSB0aGUgaGFzaCB0aGF0IGlzIGJlaW5nCisJICogcGFzc2VkIGluCisJICovCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCBzaWduU0hBMVBLQ1MxQmFzZTY0U2lnbmF0dXJlKHVuc2lnbmVkIGNoYXIgKiBoYXNoQnVmLAorCQkJCQkJCQl1bnNpZ25lZCBpbnQgaGFzaExlbiwKKwkJCQkJCQkJY2hhciAqIGJhc2U2NFNpZ25hdHVyZUJ1ZiwKKwkJCQkJCQkJdW5zaWduZWQgaW50IGJhc2U2NFNpZ25hdHVyZUJ1ZkxlbiwKKwkJCQkJCQkJaGFzaE1ldGhvZCBobSk7CisKKwkvKioKKwkgKiBcYnJpZWYgRGVjcnlwdCB1c2luZyBwcml2YXRlIGtleQorCSAqCisJICogVGhlIGxpYnJhcnkgd2lsbCBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gZGVjcnlwdCBhIHBpZWNlIG9mIGNpcGhlcgorCSAqIHRleHQgdXNpbmcgdGhlIHByaXZhdGUgY29tcG9uZW50IG9mIHRoaXMga2V5LgorCSAqCisJICogQHBhcmFtIGluQnVmIGNpcGhlciB0ZXh0IHRvIGRlY3J5cHQKKwkgKiBAcGFyYW0gcGxhaW5CdWYgb3V0cHV0IGJ1ZmZlciBmb3IgZGVjcnlwdGVkIGJ5dGVzCisJICogQHBhcmFtIGluTGVuZ3RoIGJ5dGVzIG9mIGNpcGhlciB0ZXh0IHRvIGRlY3J5cHQKKwkgKiBAcGFyYW0gbWF4T3V0TGVuZ3RoIHNpemUgb2Ygb3V0cHV0QnVmZmVyCisJICogQHBhcmFtIHBhZGRpbmcgVHlwZSBvZiBwYWRkaW5nIChQS0NTIDEuNSBvciBPQUVQKQorCSAqIEBwYXJhbSBobSBIYXNoIE1ldGhvZCBmb3IgT0FFUCBlbmNyeXB0aW9uIChPQUVQUGFyYW1zIHNob3VsZCBiZQorCSAqIHNldCB1c2luZyBzZXRPQUVQcGFyYW1zKCkKKwkgKi8KKworCXZpcnR1YWwgdW5zaWduZWQgaW50IHByaXZhdGVEZWNyeXB0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBpbkJ1ZiwKKwkJCQkJCQkJIHVuc2lnbmVkIGNoYXIgKiBwbGFpbkJ1ZiwgCisJCQkJCQkJCSB1bnNpZ25lZCBpbnQgaW5MZW5ndGgsCisJCQkJCQkJCSB1bnNpZ25lZCBpbnQgbWF4T3V0TGVuZ3RoLAorCQkJCQkJCQkgUGFkZGluZ1R5cGUgcGFkZGluZywKKwkJCQkJCQkJIGhhc2hNZXRob2QgaG0pOworCisJLyoqCisJICogXGJyaWVmIEVuY3J5cHQgdXNpbmcgYSBwdWJsaWMga2V5CisJICoKKwkgKiBUaGUgbGlicmFyeSB3aWxsIGNhbGwgdGhpcyBmdW5jdGlvbiB0byBlbmNyeXB0IGEgcGxhaW4gdGV4dCBidWZmZXIKKwkgKiB1c2luZyB0aGUgcHVibGljIGNvbXBvbmVudCBvZiB0aGlzIGtleS4KKwkgKgorCSAqIEBwYXJhbSBpbkJ1ZiBwbGFpbiB0ZXh0IHRvIGRlY3J5cHQKKwkgKiBAcGFyYW0gY2lwaGVyQnVmIG91dHB1dCBidWZmZXIgZm9yIGRlY3J5cHRlZCBieXRlcworCSAqIEBwYXJhbSBpbkxlbmd0aCBieXRlcyBvZiBwbGFpbiB0ZXh0IHRvIGVuY3J5cHQKKwkgKiBAcGFyYW0gbWF4T3V0TGVuZ3RoIHNpemUgb2Ygb3V0cHV0QnVmZmVyCisJICogQHBhcmFtIHBhZGRpbmcgVHlwZSBvZiBwYWRkaW5nIChQS0NTIDEuNSBvciBPQUVQKQorCSAqIEBwYXJhbSBobSBIYXNoIE1ldGhvZCBmb3IgT0FFUCBlbmNyeXB0aW9uIChPQUVQUGFyYW1zIHNob3VsZCBiZQorCSAqIHNldCB1c2luZyBzZXRPQUVQcGFyYW1zKCkKKwkgKi8KKworCXZpcnR1YWwgdW5zaWduZWQgaW50IHB1YmxpY0VuY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqIGluQnVmLAorCQkJCQkJCQkgdW5zaWduZWQgY2hhciAqIGNpcGhlckJ1ZiwgCisJCQkJCQkJCSB1bnNpZ25lZCBpbnQgaW5MZW5ndGgsCisJCQkJCQkJCSB1bnNpZ25lZCBpbnQgbWF4T3V0TGVuZ3RoLAorCQkJCQkJCQkgUGFkZGluZ1R5cGUgcGFkZGluZywKKwkJCQkJCQkJIGhhc2hNZXRob2QgaG0pOworCisJLyoqCisJICogXGJyaWVmIE9idGFpbiB0aGUgbGVuZ3RoIG9mIGFuIFJTQSBrZXkKKwkgKgorCSAqIEByZXR1cm5zIFRoZSBsZW5ndGggb2YgdGhlIHJzYSBrZXkgKGluIGJ5dGVzKQorCSAqLworCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0TGVuZ3RoKHZvaWQpIGNvbnN0OworCisJLy9AfQorCisJLyoqIEBuYW1lIE9wdGlvbmFsIEludGVyZmFjZSBtZXRob2RzCisJICogCisJICogSGF2ZSBiZWVuIGltcGxlbWVudGVkIHRvIGFsbG93IGludGVyb3BlcmFiaWxpdHkgdGVzdGluZworCSAqLworCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIExvYWQgdGhlIG1vZHVsdXMKKwkgKgorCSAqIExvYWQgdGhlIG1vZHVsdXMgZnJvbSBhIEJhc2U2NCBlbmNvZGVkIHN0cmluZworCSAqCisJICogcGFyYW0gYjY0IEEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGVuY29kZWQgc3RyaW5nCisJICogcGFyYW0gbGVuIFRoZSBsZW5ndGggb2YgdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlcgorCSAqLworCisJdmlydHVhbCB2b2lkIGxvYWRQdWJsaWNNb2R1bHVzQmFzZTY0QmlnTnVtcyhjb25zdCBjaGFyICogYjY0LCB1bnNpZ25lZCBpbnQgbGVuKTsKKworCS8qKgorCSAqIFxicmllZiBMb2FkIHRoZSBleHBvbmVudAorCSAqCisJICogTG9hZCB0aGUgZXhwb25lbnQgZnJvbSBhIEJhc2U2NCBlbmNvZGVkIHN0cmluZworCSAqCisJICogcGFyYW0gYjY0IEEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGVuY29kZWQgc3RyaW5nCisJICogcGFyYW0gbGVuIFRoZSBsZW5ndGggb2YgdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlcgorCSAqLworCQorCXZpcnR1YWwgdm9pZCBsb2FkUHVibGljRXhwb25lbnRCYXNlNjRCaWdOdW1zKGNvbnN0IGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBsZW4pOworCisJLy9AfQorCisJLyoqIEBuYW1lIFdpbkNBUEkgU3BlY2lmaWMgRnVuY3Rpb25zICovCisJLy9AeworCisKKwkvKioKKwkgKiBcYnJpZWYgUmV0cmlldmUgdGhlIGV4cG9uZW50CisJICoKKwkgKiBSZXRyaWV2ZXMgdGhlIGV4cG9uZW50IGluIGRzOkNyeXB0b0JpbmFyeSBlbmNvZGVkIGZvcm1hdAorCSAqCisJICogQHBhcmFtIGI2NCBCdWZmZXIgdG8gcGxhY2UgZW5jb2RlZCBleHBvbmVudCBpbnRvCisJICogQHBhcmFtIGxlbiBNYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byBwbGFjZSBpbiBidWZmZXIKKwkgKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGJ5dGVzIHBsYWNlZCBpbiB0aGUgYnVmZmVyCisJICovCisKKwl1bnNpZ25lZCBpbnQgZ2V0RXhwb25lbnRCYXNlNjRCaWdOdW1zKGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBsZW4pOworCisJLyoqCisJICogXGJyaWVmIFJldHJpZXZlIHRoZSBtb2R1bHVzCisJICoKKwkgKiBSZXRyaWV2ZXMgdGhlIG1vZHVsdXMgaW4gZHM6Q3J5cHRvQmluYXJ5IGVuY29kZWQgZm9ybWF0CisJICoKKwkgKiBAcGFyYW0gYjY0IEJ1ZmZlciB0byBwbGFjZSB0aGUgZW5jb2RlZCBtb2R1bHVzIGludG8KKwkgKiBAcGFyYW0gbGVuIE1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvIHBsYWNlIGluIGJ1ZmZlcgorCSAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgYnl0ZXMgcGxhY2VkIGluIHRoZSBidWZmZXIKKwkgKi8KKworCXVuc2lnbmVkIGludCBnZXRNb2R1bHVzQmFzZTY0QmlnTnVtcyhjaGFyICogYjY0LCB1bnNpZ25lZCBpbnQgbGVuKTsKKworCS8qKgorCSAqIFxicmllZiBJbXBvcnQga2V5IGFuZCByZXR1cm4gaXQKKwkgKgorCSAqIFJldHJpZXZlcyB0aGUgUlNBIGtleSBhcyBIQ1JZUFRLRVkKKwkgKgorCSAqIEByZXR1cm5zIFRoZSBrZXkKKwkgKi8KKworCUhDUllQVEtFWSBpbXBvcnRLZXkodm9pZCk7CisKKwkvL0B9CisKK3ByaXZhdGU6CisKKwlIQ1JZUFRQUk9WCQkJCQltX3A7CisJSENSWVBUS0VZCQkJCQltX2tleTsJCQkvLyBGb3IgYSBwdWJsaWMga2V5CisJRFdPUkQJCQkJCQltX2tleVNwZWM7CQkvLyBGb3IgYSBwcml2YXRlIGtleQorCisJQllURQkJCQkJCSogbXBfbW9kdWx1czsKKwlCWVRFCQkJCQkJKiBtcF9leHBvbmVudDsKKworCXVuc2lnbmVkIGludAkJCQltX21vZHVsdXNMZW47CisJdW5zaWduZWQgaW50CQkJCW1fZXhwb25lbnRMZW47CisKKwkvLyBJbnN0cnVjdCB0byBpbXBvcnQgZnJvbSBwYXJhbWV0ZXJzCisKKwl2b2lkIGxvYWRQYXJhbXNGcm9tS2V5KHZvaWQpOworCit9OworCisjZW5kaWYgLyogSEFWRV9XSU5DQVBJICovCisjZW5kaWYgLyogV0lOQ0FQSUNSWVBUT0tFWVJTQV9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvUHJvdmlkZXIuY3BwIGIvYy9zcmMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b1Byb3ZpZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjc1NmIzCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b1Byb3ZpZGVyLmNwcApAQCAtMCwwICsxLDQyNyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogV2luQ0FQSUNyeXB0b1Byb3ZpZGVyIDo9IFByb3ZpZGVyIHRvIHN1cHBvcnQgV2luZG93cyBDcnlwdG8gQVBJCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKworCisjaW5jbHVkZSA8eHNlYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvUHJvdmlkZXIuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b1g1MDkuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b0tleURTQS5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvS2V5SE1BQy5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvS2V5UlNBLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9IYXNoLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9IYXNoSE1BQy5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvU3ltbWV0cmljS2V5LmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0NyeXB0L1hTQ3J5cHRDcnlwdG9CYXNlNjQuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9FeGNlcHRpb24uaHBwPgorCisjaWYgZGVmaW5lZCAoSEFWRV9XSU5DQVBJKQorCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL0phbml0b3IuaHBwPgorCitYU0VDX1VTSU5HX1hFUkNFUyhBcnJheUphbml0b3IpOworCitzdGF0aWMgY2hhciBzX3hzZWNLZXlTdG9yZU5hbWVbXSA9ICJBcGFjaGVYTUwtU2VjdXJpdHlLZXlTdG9yZSI7CisKK1dpbkNBUElDcnlwdG9Qcm92aWRlcjo6V2luQ0FQSUNyeXB0b1Byb3ZpZGVyKAorCQkJCQkJTFBDU1RSIHByb3ZEU1NOYW1lLAorCQkJCQkJTFBDU1RSIHByb3ZSU0FOYW1lLAorICAgICAgICAgICAgRFdPUkQgZHdGbGFncykgeworCisJaWYgKCFDcnlwdEFjcXVpcmVDb250ZXh0KCZtX3Byb3ZEU1MsCisJCU5VTEwsCisJCXByb3ZEU1NOYW1lLAorCQlQUk9WX0RTUywKKwkJQ1JZUFRfVkVSSUZZQ09OVEVYVCkpCisJeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkludGVybmFsRXJyb3IsCisJCQkiV2luQ0FQSUNyeXB0b1Byb3ZpZGVyKCkgLSBFcnJvciBvYnRhaW5pbmcgZGVmYXVsdCBQUk9WX0RTUyIpOworCX0KKworCWlmICghQ3J5cHRBY3F1aXJlQ29udGV4dCgmbV9wcm92UlNBLAorCQlOVUxMLAorCQlwcm92UlNBTmFtZSwKKwkJUFJPVl9SU0FfQUVTLAorCQlDUllQVF9WRVJJRllDT05URVhUKSkgCisJeworCQkvLyBDaGVjayBvZiB3ZSBtYXliZSBkb24ndCB1bmRlcnN0YW5kIEFFUworCisJCURXT1JEIGVycm9yID0gR2V0TGFzdEVycm9yKCk7CisJCWlmIChlcnJvciA9PSBOVEVfUFJPVl9UWVBFX05PVF9ERUYgfHwgZXJyb3IgPT0gMCkgeworCisJCQkvLyBUaGlzIHN5c3RlbSBkb2VzIG5vdCBoYXZlIEFFUyEKKwkJCW1faGF2ZUFFUyA9IGZhbHNlOworCQkJbV9wcm92UlNBVHlwZSA9IFBST1ZfUlNBX0ZVTEw7CisKKwkJCWlmICghQ3J5cHRBY3F1aXJlQ29udGV4dCgmbV9wcm92UlNBLAorCQkJCU5VTEwsCisJCQkJcHJvdlJTQU5hbWUsCisJCQkJUFJPVl9SU0FfRlVMTCwKKwkJCQlDUllQVF9WRVJJRllDT05URVhUKSkgCisJCQl7CisKKwkJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkludGVybmFsRXJyb3IsCisJCQkJCSJXaW5DQVBJQ3J5cHRvUHJvdmlkZXIoKSAtIEVycm9yIG9idGFpbmluZyBkZWZhdWx0IFBST1ZfUlNBX0ZVTEwiKTsKKwkJCX0KKworCQl9CisJCQorCQllbHNlIHsKKworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpJbnRlcm5hbEVycm9yLAorCQkJCSJXaW5DQVBJQ3J5cHRvUHJvdmlkZXIoKSAtIEVycm9yIG9idGFpbmluZyBkZWZhdWx0IFBST1ZfUlNBX0FFUyIpOworCQl9CisJfQorCisJZWxzZSB7CisJCW1faGF2ZUFFUyA9IHRydWU7CisJCW1fcHJvdlJTQVR5cGUgPSBQUk9WX1JTQV9BRVM7CisJfQorCisJLy8gTm93IG9idGFpbiBvdXIgaW50ZXJuYWwgKGxpYnJhcnkpIGtleSBzdG9yZQorCisJaWYgKCFDcnlwdEFjcXVpcmVDb250ZXh0KCZtX3Byb3ZBcGFjaGVLZXlTdG9yZSwKKwkJc194c2VjS2V5U3RvcmVOYW1lLAorCQlwcm92UlNBTmFtZSwKKwkJbV9wcm92UlNBVHlwZSwKKwkJZHdGbGFncykpIAorCXsKKwkJaWYgKEdldExhc3RFcnJvcigpID09IE5URV9CQURfS0VZU0VUKSB7CisKKwkJICAgICAgQ3J5cHRBY3F1aXJlQ29udGV4dCgmbV9wcm92QXBhY2hlS2V5U3RvcmUsCisJCQkgICAgICAgICAgICAgICAgICAgIHNfeHNlY0tleVN0b3JlTmFtZSwKKwkJCSAgICAgICAgICAgICAgICAgICAgcHJvdlJTQU5hbWUsCisJCQkgICAgICAgICAgICAgICAgICAgIG1fcHJvdlJTQVR5cGUsCisJCQkgICAgICAgICAgICAgICAgICAgIENSWVBUX0RFTEVURUtFWVNFVCk7CisKKwkJfQorCisJCS8vIFRyeSB0byBjcmVhdGUKKwkJaWYgKCFDcnlwdEFjcXVpcmVDb250ZXh0KCZtX3Byb3ZBcGFjaGVLZXlTdG9yZSwKKwkJCXNfeHNlY0tleVN0b3JlTmFtZSwKKwkJCXByb3ZSU0FOYW1lLAorCQkJbV9wcm92UlNBVHlwZSwKKwkJCWR3RmxhZ3MgfCBDUllQVF9ORVdLRVlTRVQpKSB7CisKKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SW50ZXJuYWxFcnJvciwKKwkJCQkiV2luQ0FQSUNyeXB0b1Byb3ZpZGVyKCkgLSBFcnJvciBvYnRhaW5pbmcgZ2VuZXJhdGluZyBpbnRlcm5hbCBrZXkgc3RvcmUgZm9yIFBST1ZfUlNBX0ZVTEwiKTsKKwkJfQorCQllbHNlIHsKKwkJCUhDUllQVEtFWSBrOworCQkJaWYgKCFDcnlwdEdlbktleShtX3Byb3ZBcGFjaGVLZXlTdG9yZSwgQVRfS0VZRVhDSEFOR0UsIENSWVBUX0VYUE9SVEFCTEUsICZrKSkgeworCQkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SW50ZXJuYWxFcnJvciwKKwkJCQkJIldpbkNBUElDcnlwdG9Qcm92aWRlcigpIC0gRXJyb3IgZ2VuZXJhdGluZyBpbnRlcm5hbCBrZXkgc2V0IGZvciBQUk9WX1JTQV9GVUxMIik7CisJCQl9CisJCQlDcnlwdERlc3Ryb3lLZXkoayk7CisJCX0KKwl9CisKKwkvLyBDb3B5IHBhcmFtZXRlcnMgZm9yIGxhdGVyIHVzZQorCisJaWYgKHByb3ZEU1NOYW1lICE9IE5VTEwpCisJCW1fcHJvdkRTU05hbWUgPSBfc3RyZHVwKHByb3ZEU1NOYW1lKTsgCisJZWxzZQorCQltX3Byb3ZEU1NOYW1lID0gTlVMTDsKKworCWlmIChwcm92UlNBTmFtZSAhPSBOVUxMKQorCQltX3Byb3ZSU0FOYW1lID0gX3N0cmR1cChwcm92UlNBTmFtZSk7CisJZWxzZQorCQltX3Byb3ZSU0FOYW1lID0gTlVMTDsKKworfQorCitXaW5DQVBJQ3J5cHRvUHJvdmlkZXI6On5XaW5DQVBJQ3J5cHRvUHJvdmlkZXIoKSB7CisKKworCUNyeXB0UmVsZWFzZUNvbnRleHQobV9wcm92UlNBLCAwKTsKKwlDcnlwdFJlbGVhc2VDb250ZXh0KG1fcHJvdkRTUywgMCk7CisJQ3J5cHRSZWxlYXNlQ29udGV4dChtX3Byb3ZBcGFjaGVLZXlTdG9yZSwgMCk7CisKK30KKworY29uc3QgWE1MQ2ggKiBXaW5DQVBJQ3J5cHRvUHJvdmlkZXI6OmdldFByb3ZpZGVyTmFtZSgpIGNvbnN0IHsKKworCXJldHVybiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJQUk9WV2luQ0FQSTsKKworfQorCisKKy8vIEhhc2hpbmcgY2xhc3NlcworCitYU0VDQ3J5cHRvSGFzaAkqIFdpbkNBUElDcnlwdG9Qcm92aWRlcjo6aGFzaFNIQTEoKSBjb25zdCB7CisKKwlXaW5DQVBJQ3J5cHRvSGFzaCAqIHJldDsKKworCVhTRUNuZXcocmV0LCBXaW5DQVBJQ3J5cHRvSGFzaChtX3Byb3ZEU1MsIFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTEpKTsKKworCXJldHVybiByZXQ7CisKK30KKworWFNFQ0NyeXB0b0hhc2ggKiBXaW5DQVBJQ3J5cHRvUHJvdmlkZXI6Omhhc2hITUFDU0hBMSgpIGNvbnN0IHsKKworCVdpbkNBUElDcnlwdG9IYXNoSE1BQyAqIHJldDsKKworCVhTRUNuZXcocmV0LCBXaW5DQVBJQ3J5cHRvSGFzaEhNQUMobV9wcm92RFNTLCBYU0VDQ3J5cHRvSGFzaDo6SEFTSF9TSEExKSk7CisKKwlyZXR1cm4gcmV0OworCit9CisKK1hTRUNDcnlwdG9IYXNoCSogV2luQ0FQSUNyeXB0b1Byb3ZpZGVyOjpoYXNoU0hBKGludCBsZW5ndGgpIGNvbnN0IHsKKworCisJaWYgKGxlbmd0aCA9PSAxNjApCisJCXJldHVybiBoYXNoU0hBMSgpOworCisJZWxzZSByZXR1cm4gTlVMTDsKK30KKworWFNFQ0NyeXB0b0hhc2ggKiBXaW5DQVBJQ3J5cHRvUHJvdmlkZXI6Omhhc2hITUFDU0hBKGludCBsZW5ndGgpIGNvbnN0IHsKKworCWlmIChsZW5ndGggPT0gMTYwKQorCQlyZXR1cm4gaGFzaEhNQUNTSEExKCk7CisKKwllbHNlIHJldHVybiBOVUxMOworCit9CisKK1hTRUNDcnlwdG9IYXNoCSogV2luQ0FQSUNyeXB0b1Byb3ZpZGVyOjpoYXNoTUQ1KCkgY29uc3QgeworCisJV2luQ0FQSUNyeXB0b0hhc2ggKiByZXQ7CisKKwlYU0VDbmV3KHJldCwgV2luQ0FQSUNyeXB0b0hhc2gobV9wcm92RFNTLCBYU0VDQ3J5cHRvSGFzaDo6SEFTSF9NRDUpKTsKKworCXJldHVybiByZXQ7CisKK30KKworWFNFQ0NyeXB0b0hhc2ggKiBXaW5DQVBJQ3J5cHRvUHJvdmlkZXI6Omhhc2hITUFDTUQ1KCkgY29uc3QgeworCisJV2luQ0FQSUNyeXB0b0hhc2hITUFDICogcmV0OworCisJWFNFQ25ldyhyZXQsIFdpbkNBUElDcnlwdG9IYXNoSE1BQyhtX3Byb3ZEU1MsIFhTRUNDcnlwdG9IYXNoOjpIQVNIX01ENSkpOworCisJcmV0dXJuIHJldDsKKworfQorCitYU0VDQ3J5cHRvS2V5SE1BQyAqIFdpbkNBUElDcnlwdG9Qcm92aWRlcjo6a2V5SE1BQyh2b2lkKSBjb25zdCB7CisKKwlXaW5DQVBJQ3J5cHRvS2V5SE1BQyAqIHJldDsKKwlYU0VDbmV3KHJldCwgV2luQ0FQSUNyeXB0b0tleUhNQUMobV9wcm92RFNTKSk7CisKKwlyZXR1cm4gcmV0OworCit9CisKKworWFNFQ0NyeXB0b0tleURTQSAqIFdpbkNBUElDcnlwdG9Qcm92aWRlcjo6a2V5RFNBKCkgY29uc3QgeworCQorCVdpbkNBUElDcnlwdG9LZXlEU0EgKiByZXQ7CisKKwlYU0VDbmV3KHJldCwgV2luQ0FQSUNyeXB0b0tleURTQShtX3Byb3ZEU1MpKTsKKworCXJldHVybiByZXQ7CisKK30KKworWFNFQ0NyeXB0b0tleVJTQSAqIFdpbkNBUElDcnlwdG9Qcm92aWRlcjo6a2V5UlNBKCkgY29uc3QgeworCQorCVdpbkNBUElDcnlwdG9LZXlSU0EgKiByZXQ7CisKKwlYU0VDbmV3KHJldCwgV2luQ0FQSUNyeXB0b0tleVJTQShtX3Byb3ZSU0EpKTsKKworCXJldHVybiByZXQ7CisKK30KKworCitYU0VDQ3J5cHRvWDUwOSAqIFdpbkNBUElDcnlwdG9Qcm92aWRlcjo6WDUwOSgpIGNvbnN0IHsKKworCVdpbkNBUElDcnlwdG9YNTA5ICogcmV0OworCisJWFNFQ25ldyhyZXQsIFdpbkNBUElDcnlwdG9YNTA5KG1fcHJvdlJTQSwgbV9wcm92RFNTKSk7CisKKwlyZXR1cm4gcmV0OworCit9CisKK1hTRUNDcnlwdG9CYXNlNjQgKiBXaW5DQVBJQ3J5cHRvUHJvdmlkZXI6OmJhc2U2NCgpIGNvbnN0IHsKKworCS8vIFRoZSBXaW5kb3dzIENBUEkgZG9lcyBub3QgcHJvdmlkZSBhIEJhc2U2NCBkZWNvZGVyL2VuY29kZXIuCisJLy8gVXNlIHRoZSBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbi4KKworCVhTQ3J5cHRDcnlwdG9CYXNlNjQgKiByZXQ7CisKKwlYU0VDbmV3KHJldCwgWFNDcnlwdENyeXB0b0Jhc2U2NCgpKTsKKworCXJldHVybiByZXQ7CisKK30KKworYm9vbCBXaW5DQVBJQ3J5cHRvUHJvdmlkZXI6OmFsZ29yaXRobVN1cHBvcnRlZChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpTeW1tZXRyaWNLZXlUeXBlIGFsZykgY29uc3QgeworCisJc3dpdGNoIChhbGcpIHsKKworCWNhc2UgKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV9BRVNfMTI4KSA6CisJY2FzZSAoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZX0FFU18xOTIpIDoKKwljYXNlIChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfQUVTXzI1NikgOgorCisJCXJldHVybiBtX2hhdmVBRVM7CisKKwljYXNlIChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfM0RFU18xOTIpIDoKKworCQlyZXR1cm4gdHJ1ZTsKKworCWRlZmF1bHQ6CisKKwkJcmV0dXJuIGZhbHNlOworCisJfQorCisJcmV0dXJuIGZhbHNlOworCit9CisKK2Jvb2wgV2luQ0FQSUNyeXB0b1Byb3ZpZGVyOjphbGdvcml0aG1TdXBwb3J0ZWQoWFNFQ0NyeXB0b0hhc2g6Okhhc2hUeXBlIGFsZykgY29uc3QgeworCisJc3dpdGNoIChhbGcpIHsKKworCWNhc2UgKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTEpIDoKKwljYXNlIChYU0VDQ3J5cHRvSGFzaDo6SEFTSF9NRDUpIDoKKworCQlyZXR1cm4gdHJ1ZTsKKworCWNhc2UgKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTIyNCkgOgorCWNhc2UgKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTI1NikgOgorCWNhc2UgKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTM4NCkgOgorCWNhc2UgKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTUxMikgOgorCisJCXJldHVybiBmYWxzZTsKKworCWRlZmF1bHQ6CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7CisKK30KKwkKK1hTRUNDcnlwdG9TeW1tZXRyaWNLZXkJKiBXaW5DQVBJQ3J5cHRvUHJvdmlkZXI6OmtleVN5bW1ldHJpYyhYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpTeW1tZXRyaWNLZXlUeXBlIGFsZykgY29uc3QgeworCisJLy8gT25seSB0ZW1wb3JhcnkKKworCVdpbkNBUElDcnlwdG9TeW1tZXRyaWNLZXkgKiByZXQ7CisJCisJWFNFQ25ldyhyZXQsIFdpbkNBUElDcnlwdG9TeW1tZXRyaWNLZXkobV9wcm92QXBhY2hlS2V5U3RvcmUsIGFsZykpOworCisJcmV0dXJuIHJldDsKKworfQorCit1bnNpZ25lZCBpbnQgV2luQ0FQSUNyeXB0b1Byb3ZpZGVyOjpnZXRSYW5kb20odW5zaWduZWQgY2hhciAqIGJ1ZmZlciwgdW5zaWduZWQgaW50IG51bU9jdGV0cykgY29uc3QgeworCisJaWYgKCFDcnlwdEdlblJhbmRvbShtX3Byb3ZBcGFjaGVLZXlTdG9yZSwgbnVtT2N0ZXRzLCBidWZmZXIpKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SW50ZXJuYWxFcnJvciwKKwkJCSJXaW5DQVBJQ3J5cHRvUHJvdmlkZXIoKSAtIEVycm9yIGdlbmVyYXRpbmcgUmFuZG9tIGRhdGEiKTsKKwl9CisKKwlyZXR1cm4gbnVtT2N0ZXRzOworfQorCisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICBUcmFuc2xhdGUgYSBCYXNlNjQgbnVtYmVyIHRvIGEgV2luZG93cyAobGl0dGxlIGVuZGlhbikgaW50ZWdlcgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQllURSAqIFdpbkNBUElDcnlwdG9Qcm92aWRlcjo6YjY0MldpbkJOKGNvbnN0IGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBiNjRMZW4sIHVuc2lnbmVkIGludCAmcmV0TGVuKSB7CisKKwlCWVRFICogb3M7CisJWFNFQ25ldyhvcywgQllURVtiNjRMZW5dKTsKKwlBcnJheUphbml0b3I8QllURT4gal9vcyhvcyk7CisKKwkvLyBEZWNvZGUKKwlYU0NyeXB0Q3J5cHRvQmFzZTY0IGI7CisKKwliLmRlY29kZUluaXQoKTsKKwlyZXRMZW4gPSBiLmRlY29kZSgodW5zaWduZWQgY2hhciAqKSBiNjQsIGI2NExlbiwgb3MsIGI2NExlbik7CisJcmV0TGVuICs9IGIuZGVjb2RlRmluaXNoKCZvc1tyZXRMZW5dLCBiNjRMZW4gLSByZXRMZW4pOworCisJQllURSAqIHJldDsKKwlYU0VDbmV3KHJldCwgQllURVtyZXRMZW5dKTsKKworCUJZVEUgKiBqID0gb3M7CisJQllURSAqIGsgPSByZXQgKyByZXRMZW4gLSAxOworCisJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCByZXRMZW4gOyArK2kpCisJCSprLS0gPSAqaisrOworCisJcmV0dXJuIHJldDsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgIFRyYW5zbGF0ZSBhIFdpbmRvd3MgaW50ZWdlciB0byBhIEJhc2U2NCBJMk9TUCBudW1iZXIgCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit1bnNpZ25lZCBjaGFyICogV2luQ0FQSUNyeXB0b1Byb3ZpZGVyOjpXaW5CTjJiNjQoQllURSAqIG4sIERXT1JEIG5MZW4sIHVuc2lnbmVkIGludCAmcmV0TGVuKSB7CisKKworCS8vIEZpcnN0IHJldmVyc2UKKwlCWVRFICogcmV2OzsKKwlYU0VDbmV3KHJldiwgQllURVtuTGVuXSk7CisJQXJyYXlKYW5pdG9yPEJZVEU+IGpfcmV2KHJldik7CisKKwlCWVRFICogaiA9IG47CisJQllURSAqIGsgPSByZXYgKyBuTGVuIC0gMTsKKworCWZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbkxlbiA7ICsraSkKKwkJKmstLSA9ICpqKys7CisKKwkKKwl1bnNpZ25lZCBjaGFyICogYjY0OworCS8vIE5haWV2ZSBsZW5ndGggY2FsY3VsYXRpb24KKwl1bnNpZ25lZCBpbnQgYnVmTGVuID0gbkxlbiAqIDIgKyA0OworCisJWFNFQ25ldyhiNjQsIHVuc2lnbmVkIGNoYXJbYnVmTGVuXSk7CisJQXJyYXlKYW5pdG9yPHVuc2lnbmVkIGNoYXI+IGpfYjY0KGI2NCk7CisKKwlYU0NyeXB0Q3J5cHRvQmFzZTY0IGI7CisKKwliLmVuY29kZUluaXQoKTsKKwlyZXRMZW4gPSBiLmVuY29kZShyZXYsICh1bnNpZ25lZCBpbnQpIG5MZW4sIGI2NCwgYnVmTGVuKTsKKwlyZXRMZW4gKz0gYi5lbmNvZGVGaW5pc2goJmI2NFtyZXRMZW5dLCBidWZMZW4gLSByZXRMZW4pOworCisJal9iNjQucmVsZWFzZSgpOworCXJldHVybiBiNjQ7CisKK30KKworI2VuZGlmIC8qIEhBVkVfV0lOQ0FQSSAqLworCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvUHJvdmlkZXIuaHBwIGIvYy9zcmMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b1Byb3ZpZGVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjY0ZGQxCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b1Byb3ZpZGVyLmhwcApAQCAtMCwwICsxLDM5NiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogV2luQ0FQSUNyeXB0b1Byb3ZpZGVyIDo9IEJhc2UgY2xhc3MgdG8gaGFuZGxlIFdpbmRvd3MgQ3J5cHRvIEFQSQorICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBXSU5DQVBJQ1JZUFRPUFJPVklERVJfSU5DTFVERQorI2RlZmluZSBXSU5DQVBJQ1JZUFRPUFJPVklERVJfSU5DTFVERQorCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9Qcm92aWRlci5ocHA+CisKKyNpZiBkZWZpbmVkIChIQVZFX1dJTkNBUEkpCisKKyNpZiBkZWZpbmVkIChfV0lOMzJfV0lOTlQpCisjCXVuZGVmIF9XSU4zMl9XSU5OVAorI2VuZGlmCisjZGVmaW5lIF9XSU4zMl9XSU5OVCAweDA0MDAKKyNpbmNsdWRlIDx3aW5jcnlwdC5oPgorCisKKy8vIEZvciBvbGRlciB2ZXJzaW9ucyBvZiB3aW5jcnlwdC5oCisKKyNpZiAhZGVmaW5lZCAoUFJPVl9SU0FfQUVTKQorIwlkZWZpbmUgUFJPVl9SU0FfQUVTICAgICAgMjQKKyMJZGVmaW5lIEFMR19TSURfQUVTXzEyOCAgIDE0CisjCWRlZmluZSBBTEdfU0lEX0FFU18xOTIgICAxNQorIwlkZWZpbmUgQUxHX1NJRF9BRVNfMjU2ICAgMTYKKyMJZGVmaW5lIEFMR19TSURfQUVTICAgICAgIDE3CisjCWRlZmluZSBDQUxHX0FFU18xMjggICAgICAoQUxHX0NMQVNTX0RBVEFfRU5DUllQVHxBTEdfVFlQRV9CTE9DS3xBTEdfU0lEX0FFU18xMjgpCisjCWRlZmluZSBDQUxHX0FFU18xOTIgICAgICAoQUxHX0NMQVNTX0RBVEFfRU5DUllQVHxBTEdfVFlQRV9CTE9DS3xBTEdfU0lEX0FFU18xOTIpCisjCWRlZmluZSBDQUxHX0FFU18yNTYgICAgICAoQUxHX0NMQVNTX0RBVEFfRU5DUllQVHxBTEdfVFlQRV9CTE9DS3xBTEdfU0lEX0FFU18yNTYpCisjZW5kaWYKKworI2RlZmluZSBXSU5DQVBJX0JMT0JIRUFERVJMRU4gICAweDA4CisjZGVmaW5lIFdJTkNBUElfRFNTUFVCS0VZTEVOICAgIDB4MDgKKyNkZWZpbmUgV0lOQ0FQSV9EU1NTRUVETEVOICAgICAgMHgxOAorI2RlZmluZSBXSU5DQVBJX1JTQVBVQktFWUxFTiAgICAweDBDCisKKy8qKgorICogQGRlZmdyb3VwIHdpbmNhcGljcnlwdG8gV2luZG93cyBDcnlwdG8gQVBJIEludGVyZmFjZQorICogQGluZ3JvdXAgY3J5cHRvCisgKiBUaGUgV2luQ0FQSSBjcnlwdG8gcHJvdmlkZXMgYW4gZXhwZXJpbWVudGFsIGluZXJmYWNlIHRvCisgKiB0aGUgV2luZG93cyBDcnlwdG9ncmFwaGljIEFQSS4KKyAqCisgKiBBbGwgaW5pdGlhbGlzYXRpb24gb2YgdGhlIFdpbmRvd3MgcHJvdmlkZXJzIG5lZWRzIHRvIGJlIGRvbmUKKyAqIGJ5IHRoZSBjYWxsaW5nIGFwcGxpY2F0aW9uLiAgVGhlIGludGVyZmFjZSB3aWxsIGNhbGwgdGhlIHByb3ZpZGVkCisgKiBEU1MgKFBST1ZfRFNTKSBwcm92aWRlciBhbmQgUlNBIChQUk9WX1JTQV9GVUxMKSBwcm92aWRlciB0byBwZXJmb3JtCisgKiBjcnlwdG9ncmFwaGljIGZ1bmN0aW9ucy4KKyAqCisgKiBUaGUgdG9vbHMgdXNlIHRoZSBkZWZhdWx0IHByb3ZpZGVycywgYnV0IHRoZSBjYWxsaW5nIGFwcGxpY2F0aW9uCisgKiBjYW4gdXNlIGFueSBwcm92aWRlcnMgdGhhdCBpbXBsZW1lbnQgUFJPVl9EU1MgYW5kIFBST1ZfRlVMTF9SU0EuCisgKgorICogTm90ZSB0aGF0LCB1bmxpa2UgdGhlIE9wZW5TU0wgY2xhc3NlcywgdGhlIHZhcmlvdXMgaW1wbGVtZW50YXRpb24gCisgKiBjbGFzc2VzIGFsbCByZXF1aXJlIHRoZWlyIG93bmVyIHByb3ZpZGVyIGNsYXNzIHRvIGJlIHBhc3NlZCBpbnRvCisgKiB0aGUgY29uc3RydWN0b3IuICBUaGlzIGFsbG93cyB0aGVtIHRvIGFjY2VzcyB0aGUgUlNBIGFuZCBEU1MgQ0FQSQorICogcHJvdmlkZXJzIGJlaW5nIHVzZWQgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbi4KKyAqCisgKiBAdG9kbyBOZWVkIHRvIGFsbG93IHRoZSB2YXJpb3VzIGNsYXNzZXMgdG8gb3Zlci1yaWRlIHRoZSBQUk9WCisgKiBvYmplY3RzIHRvIGFsbG93IHNwZWNpZmljIHByaXZhdGUga2V5IGluc3RhbmNlcyByYXRoZXIgdGhhbiBvbmUKKyAqIGluc3RhbmNlIGFjcm9zcyB0aGUgbGlicmFyeSBpbnN0YW5jZS4KKyAqLworIC8qXEB7Ki8KKworY2xhc3MgRFNJR19FWFBPUlQgV2luQ0FQSUNyeXB0b1Byb3ZpZGVyIDogcHVibGljIFhTRUNDcnlwdG9Qcm92aWRlciB7CisKKworcHVibGljIDoKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCS8qKgorCSAqIFxicmllZiBDcmVhdGUgYSBXaW5kb3dzIENBUEkgaW50ZXJmYWNlIGxheWVyCisJICoKKwkgKiBXaW5kb3dzIENTUHMgd29yayB1bmRlciBhIHByb3ZpZGVyIG1vZGVsLiAgVGhlIHVzZXIgc2hvdWxkIHNwZWNpZnkKKwkgKiB3aGljaCBDU1AgdG8gdXNlLgorCSAqCisJICogQHBhcmFtIHByb3ZEU1NOYW1lIE5hbWUgb2YgRFNTIHByb3ZpZGVyIC0gbXVzdCBiZSBvZiB0eXBlIFBST1ZfRFNTLgorCSAqIFdpbGwgdXNlIHRoZSBkZWZhdWx0IFdpbmRvd3MgRFNTIHByb3ZpZGVyIGlmIG5vdGhpbmcgcGFzc2VkIGluLgorCSAqIEBwYXJhbSBwcm92UlNBTmFtZSBSU0EgcHJvdmlkZXIgLSBtdXN0IGJlIG9mIHR5cGUgUFJPVl9SU0FfRlVMTC4KKwkgKiBXaWxsIHVzZSB0aGUgZGVmYXVsdCBSU0FfRlVMTCBwcm92aWRlciBpZiBub3RoaW5nIHBhc3NlZCBpbgorICAgICAgICAgKiBAcGFyYW0gZHdGbGFncyBJZiB5b3UgYXJlIHJ1bm5pbmcgWFNFQyBhcyBzZXJ2aWNlIHlvdSBzaG91bGQgc3BlY2lmeQorICAgICAgICAgKiBDUllQVF9NQUNISU5FX0tFWVNFVCBoZXJlCisJICovCisKKwlXaW5DQVBJQ3J5cHRvUHJvdmlkZXIoTFBDU1RSIHByb3ZEU1NOYW1lID0gTlVMTCwgTFBDU1RSIHByb3ZSU0FOYW1lID0gTlVMTCwgRFdPUkQgZHdGbGFncyA9IDApOworCisJdmlydHVhbCB+V2luQ0FQSUNyeXB0b1Byb3ZpZGVyKCk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgSGFzaGluZyAoRGlnZXN0KSBGdW5jdGlvbnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIGEgU0hBMSBpbXBsZW1lbnRhdGlvbi4KKwkgKgorCSAqIENhbGwgdXNlZCBieSB0aGUgbGlicmFyeSB0byBvYnRhaW4gYSBTSEExIG9iamVjdCBmcm9tIHRoZSAKKwkgKiBwcm92aWRlci4KKwkgKgorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byBhbiBXaW5DQVBJIEhhc2ggb2JqZWN0IHRoYXQgaW1wbGVtZW50cyBTSEExCisJICogQHNlZSBXaW5DQVBJQ3J5cHRvSGFzaAorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvSGFzaAkJCSogaGFzaFNIQTEoKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gYSBTSEEgaW1wbGVtZW50YXRpb24uCisJICoKKwkgKiBDYWxsIHVzZWQgYnkgdGhlIGxpYnJhcnkgdG8gb2J0YWluIGEgU0hBIG9iamVjdCBmcm9tIHRoZSAKKwkgKiBwcm92aWRlci4gIFNpemUgb2YgaGFzaCBkZXRlcm1pbmVkIGJ5IGxlbmd0aCBhcmd1bWVudCAoMTYwID0gU0hBMSkKKwkgKgorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byBhIEhhc2ggb2JqZWN0IHRoYXQgaW1wbGVtZW50cyBTSEExCisJICogQHBhcmFtIGxlbmd0aCAtIGxlbmd0aCBvZiBoYXNoLiAgRS5nLiAxNjAgZm9yIFNIQTEgb3IgMjU2IGZvciBTSEEyNTYKKwkgKiBAc2VlIFdpbkNBUElDcnlwdG9IYXNoCisJICovCisJIAorCXZpcnR1YWwgWFNFQ0NyeXB0b0hhc2gJCQkqIGhhc2hTSEEoaW50IGxlbmd0aCA9IDE2MCkgY29uc3Q7CisJCisJLyoqCisJICogXGJyaWVmIFJldHVybiBhIEhNQUMgU0hBMSBpbXBsZW1lbnRhdGlvbi4KKwkgKgorCSAqIENhbGwgdXNlZCBieSB0aGUgbGlicmFyeSB0byBvYnRhaW4gYSBITUFDIFNIQTEgb2JqZWN0IGZyb20gdGhlIAorCSAqIHByb3ZpZGVyLiAgVGhlIGNhbGxlciB3aWxsIG5lZWQgdG8gc2V0IHRoZSBrZXkgaW4gdGhlIGhhc2gKKwkgKiBvYmplY3Qgd2l0aCBhbiBYU0VDQ3J5cHRvS2V5SE1BQyB1c2luZyBXaW5DQVBJQ3J5cHRvSGFzaDo6c2V0S2V5KCkKKwkgKgorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byBhIEhhc2ggb2JqZWN0IHRoYXQgaW1wbGVtZW50cyBITUFDLVNIQTEKKwkgKiBAc2VlIFdpbkNBUElDcnlwdG9IYXNoCisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9IYXNoCQkJKiBoYXNoSE1BQ1NIQTEoKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gYSBITUFDIFNIQSgxLTUxMikgaW1wbGVtZW50YXRpb24uCisJICoKKwkgKiBDYWxsIHVzZWQgYnkgdGhlIGxpYnJhcnkgdG8gb2J0YWluIGEgSE1BQyBTSEEgb2JqZWN0IGZyb20gdGhlIAorCSAqIHByb3ZpZGVyLiAgVGhlIGNhbGxlciB3aWxsIG5lZWQgdG8gc2V0IHRoZSBrZXkgaW4gdGhlIGhhc2gKKwkgKiBvYmplY3Qgd2l0aCBhbiBYU0VDQ3J5cHRvS2V5SE1BQyB1c2luZyBYU0VDQ3J5cHRvSGFzaDo6c2V0S2V5KCkKKwkgKgorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byBhIEhhc2ggb2JqZWN0IHRoYXQgaW1wbGVtZW50cyBITUFDLVNIQTEKKwkgKiBAcGFyYW0gbGVuZ3RoIExlbmd0aCBvZiBoYXNoIG91dHB1dCAoMTYwID0gU0hBMSwgMjU2LCA1MTIgZXRjKQorCSAqIEBzZWUgV2luQ0FQSUNyeXB0b0hhc2gKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0hhc2gJCQkqIGhhc2hITUFDU0hBKGludCBsZW5ndGggPSAxNjApIGNvbnN0OworCQorCS8qKgorCSAqIFxicmllZiBSZXR1cm4gYSBNRDUgaW1wbGVtZW50YXRpb24uCisJICoKKwkgKiBDYWxsIHVzZWQgYnkgdGhlIGxpYnJhcnkgdG8gb2J0YWluIGEgTUQ1IG9iamVjdCBmcm9tIHRoZSAKKwkgKiBXaU5DQVBJIHByb3ZpZGVyLgorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIGEgSGFzaCBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIE1ENQorCSAqIEBzZWUgV2luQ0FQSUNyeXB0b0hhc2gKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0hhc2gJCQkqIGhhc2hNRDUoKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gYSBITUFDIE1ENSBpbXBsZW1lbnRhdGlvbi4KKwkgKgorCSAqIENhbGwgdXNlZCBieSB0aGUgbGlicmFyeSB0byBvYnRhaW4gYSBITUFDIE1ENSBvYmplY3QgZnJvbSB0aGUgCisJICogcHJvdmlkZXIuICBUaGUgY2FsbGVyIHdpbGwgbmVlZCB0byBzZXQgdGhlIGtleSBpbiB0aGUgaGFzaAorCSAqIG9iamVjdCB3aXRoIGFuIFhTRUNDcnlwdG9LZXlITUFDIHVzaW5nIFhTRUNDcnlwdG9IYXNoOjpzZXRLZXkoKQorCSAqCisJICogQG5vdGUgVGhlIHVzZSBvZiBNRDUgaXMgZXhwbGljaXRseSBtYXJrZWQgYXMgPGI+bm90IHJlY29tbWVuZGVkPC9iPiAKKwkgKiBpbiB0aGUgWE1MIERpZ2l0YWwgU2lnbmF0dXJlIHN0YW5kYXJkIGR1ZSB0byByZWNlbnQgYWR2YW5jZXMgaW4KKwkgKiBjcnlwdG9ncmFwaHkgaW5kaWNhdGluZyB0aGVyZSA8ZW0+bWF5PC9lbT4gYmUgd2Vha25lc3NlcyBpbiB0aGUgCisJICogYWxnb3JpdGhtLgorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIGEgSGFzaCBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIEhNQUMtTUQ1CisJICogQHNlZSBXaW5DQVBJQ3J5cHRvSGFzaAorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvSGFzaAkJCSogaGFzaEhNQUNNRDUoKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gYSBITUFDIGtleQorCSAqCisJICogU29tZXRpbWVzIHRoZSBsaWJyYXJ5IG5lZWRzIHRvIGNyZWF0ZSBhbiBITUFDIGtleSAobm90YWJseSB3aXRoaW4KKwkgKiB0aGUgWEtNUyB1dGlsaXRpZXMuCisJICoKKwkgKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGUgbGlicmFyeSB0byBvYnRhaW4gYSBrZXkgdGhhdCBjYW4gdGhlbiBoYXZlCisJICogYSB2YWx1ZSBzZXQgd2l0aGluIGl0LgorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvS2V5SE1BQwkJKiBrZXlITUFDKHZvaWQpIGNvbnN0OworCisJLy9AfQorCisJLyoqIEBuYW1lIEVuY29kaW5nIGZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gYSBCYXNlNjQgZW5jb2Rlci9kZWNvZGVyIGltcGxlbWVudGF0aW9uLgorCSAqCisJICogQ2FsbCB1c2VkIGJ5IHRoZSBsaWJyYXJ5IHRvIG9idGFpbiBhIEJhc2U2NCAKKwkgKiBlbmNvZGVyL2RlY29kZXIuCisJICoKKwkgKiBAbm90ZSBXaW5kb3dzIHByb3ZpZGVycyBkbyBub3QgaW1wbGVtZW50IEJhc2U2NCwgc28gdGhlIGludGVybmFsCisJICogaW1wbGVtZW50YXRpb24gKFhTQ3J5cHQpIGlzIHVzZWQgaW5zdGVhZC4KKwkgKiAKKwkgKgorCSAqIEByZXR1cm5zIFBvaW50ZXIgdG8gdGhlIG5ldyBCYXNlNjQgZW5jb2Rlci4KKwkgKiBAc2VlIFhTQ3J5cHRDcnlwdG9CYXNlNjQKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0Jhc2U2NAkJKiBiYXNlNjQoKSBjb25zdDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBLZXlzIGFuZCBDZXJ0aWZpY2F0ZXMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIGEgRFNBIGtleSBpbXBsZW1lbnRhdGlvbiBvYmplY3QuCisJICogCisJICogQ2FsbCB1c2VkIGJ5IHRoZSBsaWJyYXJ5IHRvIG9idGFpbiBhIERTQSBrZXkgb2JqZWN0LgorCSAqCisJICogQHJldHVybnMgUG9pbnRlciB0byB0aGUgbmV3IERTQSBrZXkKKwkgKiBAc2VlIFdpbkNBUElDcnlwdG9LZXlEU0EKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0tleURTQQkJKiBrZXlEU0EoKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gYW4gUlNBIGtleSBpbXBsZW1lbnRhdGlvbiBvYmplY3QuCisJICogCisJICogQ2FsbCB1c2VkIGJ5IHRoZSBsaWJyYXJ5IHRvIG9idGFpbiBhbiBXaW5DQVBJIFJTQSBrZXkgb2JqZWN0LgorCSAqCisJICogQHJldHVybnMgUG9pbnRlciB0byB0aGUgbmV3IFJTQSBrZXkKKwkgKiBAc2VlIFdpbkNBUElDcnlwdG9LZXlSU0EKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0tleVJTQQkJKiBrZXlSU0EoKSBjb25zdDsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gYW4gWDUwOSBpbXBsZW1lbnRhdGlvbiBvYmplY3QuCisJICogCisJICogQ2FsbCB1c2VkIGJ5IHRoZSBsaWJyYXJ5IHRvIG9idGFpbiBhbiBvYmplY3QgdGhhdCBjYW4gd29yaworCSAqIHdpdGggWDUwOSBjZXJ0aWZpY2F0ZXMuCisJICoKKwkgKiBAcmV0dXJucyBQb2ludGVyIHRvIHRoZSBuZXcgWDUwOSBvYmplY3QKKwkgKiBAc2VlIFdpbkNBUElDcnlwdG9YNTA5CisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9YNTA5CQkJKiBYNTA5KCkgY29uc3Q7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgV2luZG93cyBDQVBJIFNwZWNpZmljIG1ldGhvZHMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJucyB0aGUgQ3J5cHRvIFByb3ZpZGVyIGJlaW5nIHVzZWQgZm9yIERTUworCSAqLworCisJSENSWVBUUFJPViBnZXRQcm92aWRlckRTUyh2b2lkKSB7cmV0dXJuIG1fcHJvdkRTUzt9CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJucyB0aGUgUHJvdmlkZXIgYmVpbmcgdXNlZCBmb3IgUlNBIGZ1bmN0aW9ucworCSAqLworCisJSENSWVBUUFJPViBnZXRQcm92aWRlclJTQSh2b2lkKSB7cmV0dXJuIG1fcHJvdlJTQTt9CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIHRoZSBpbnRlcm5hbCBrZXkgc3RvcmUgcHJvdmlkZXIKKwkgKi8KKworCUhDUllQVFBST1YgZ2V0QXBhY2hlS2V5U3RvcmUodm9pZCkge3JldHVybiBtX3Byb3ZBcGFjaGVLZXlTdG9yZTt9CisKKwkvKioKKwkgKiBcYnJpZWYgVHJhbnNsYXRlIEI2NCBJMk9TIGludGVnZXIgdG8gYSBXaW5DQVBJIGludC4KKwkgKgorCSAqIERlY29kZXMgYSBCYXNlNjQgKGRzOkNyeXB0b0JpbmFyeSkgaW50ZWdlciBhbmQgcmV2ZXJzZXMgdGhlIG9yZGVyIHRvIAorCSAqIGFsbG93IGxvYWRpbmcgaW50byBhIFdpbmRvd3MgQ0FQSSBmdW5jdGlvbi4gIChDQVBJIHVzZXMgTGl0dGxlIEVuZGlhbiAKKwkgKiBzdG9yYWdlIG9mIGludGVnZXJzKS4KKwkgKgorCSAqIEBwYXJhbSBiNjQgQmFzZSA2NCBzdHJpbmcKKwkgKiBAcGFyYW0gYjY0TGVuIExlbmd0aCBvZiBiYXNlNjQgc3RyaW5nCisJICogQHBhcmFtIHJldExlbiBQYXJhbWV0ZXIgdG8gaG9sZCBsZW5ndGggb2YgcmV0dXJuIGludGVnZXIKKwkgKi8KKworCXN0YXRpYyBCWVRFICogYjY0MldpbkJOKGNvbnN0IGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBiNjRMZW4sIHVuc2lnbmVkIGludCAmcmV0TGVuKTsKKworCS8qKgorCSAqIFxicmllZiBUcmFuc2xhdGUgYSBXaW5DQVBJIGludCB0byBhIEI2NCBJMk9TIGludGVnZXIgLgorCSAqCisJICogRW5jb2RlcyBhIFdpbmRvd3MgaW50ZWdlciBpbiBJMk9TUCBiYXNlNjQgZW5jb2RlZCBmb3JtYXQuCisJICoKKwkgKiBAcGFyYW0gbiBCdWZmZXIgaG9sZGluZyB0aGUgV2luZG93cyBJbnRlZ2VyCisJICogQHBhcmFtIG5MZW4gTGVuZ3RoIG9mIGRhdGEgaW4gYnVmZmVyCisJICogQHBhcmFtIHJldExlbiBQYXJhbWV0ZXIgdG8gaG9sZCBsZW5ndGggb2YgcmV0dXJuIGludGVnZXIKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gYSBidWZmZXIgaG9sZGluZyB0aGUgZW5jb2RlZCBkYXRhIAorCSAqICh0cmFuc2ZlcnMgb3duZXJzaGlwKQorCSAqLworCisJc3RhdGljIHVuc2lnbmVkIGNoYXIgKiBXaW5CTjJiNjQoQllURSAqIG4sIERXT1JEIG5MZW4sIHVuc2lnbmVkIGludCAmcmV0TGVuKTsKKworCS8qKgorCSAqIFxicmllZiBEZXRlcm1pbmUgd2hldGhlciBhIGdpdmVuIGFsZ29yaXRobSBpcyBzdXBwb3J0ZWQKKwkgKgorCSAqIEEgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIGEgZ2l2ZW4gCisJICogc3ltbWV0cmljIGFsZ29yaXRobSBpcyBzdXBwb3J0ZWQKKwkgKi8KKworCXZpcnR1YWwgYm9vbCBhbGdvcml0aG1TdXBwb3J0ZWQoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6U3ltbWV0cmljS2V5VHlwZSBhbGcpIGNvbnN0OworCisJLyoqCisJICogXGJyaWVmIERldGVybWluZSB3aGV0aGVyIGEgZ2l2ZW4gYWxnb3JpdGhtIGlzIHN1cHBvcnRlZAorCSAqCisJICogQSBjYWxsIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBnaXZlbiAKKwkgKiBkaWdlc3QgYWxnb3JpdGhtIGlzIHN1cHBvcnRlZAorCSAqLworCisJdmlydHVhbCBib29sIGFsZ29yaXRobVN1cHBvcnRlZChYU0VDQ3J5cHRvSGFzaDo6SGFzaFR5cGUgYWxnKSBjb25zdDsKKwkKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIGEgU3ltbWV0cmljIEtleSBpbXBsZW1lbnRhdGlvbiBvYmplY3QuCisJICoKKwkgKiBDYWxsIHVzZWQgYnkgdGhlIGxpYnJhcnkgdG8gb2J0YWluIGEgYnVsayBlbmNyeXB0aW9uCisJICogb2JqZWN0LgorCSAqCisJICogQHJldHVybnMgUG9pbnRlciB0byB0aGUgbmV3IFN5bW1ldHJpY0tleSBvYmplY3QKKwkgKiBAc2VlIFhTRUNDcnlwdG9TeW1tZXRyaWNLZXkKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b1N5bW1ldHJpY0tleQkqIGtleVN5bW1ldHJpYyhYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpTeW1tZXRyaWNLZXlUeXBlIGFsZykgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgT2J0YWluIHNvbWUgcmFuZG9tIG9jdGV0cworCSAqCisJICogRm9yIGdlbmVyYXRpb24gb2YgSVZzIGFuZCB0aGUgbGlrZSwgdGhlIGxpYnJhcnkgbmVlZHMgdG8gYmUgYWJsZQorCSAqIHRvIG9idGFpbiAicmFuZG9tIiBvY3RldHMuICBUaGUgbGlicmFyeSB1c2VzIHRoaXMgY2FsbCB0byB0aGUgCisJICogY3J5cHRvIHByb3ZpZGVyIHRvIG9idGFpbiB3aGF0IGl0IG5lZWRzLgorCSAqCisJICogQHBhcmFtIGJ1ZmZlciBUaGUgYnVmZmVyIHRvIHBsYWNlIHRoZSByYW5kb20gZGF0YSBpbgorCSAqIEBwYXJhbSBudW1PY3RldHMgTnVtYmVyIG9mIGJ5dGVzIHJlcXVpcmVkCisJICogQHJldHVybnMgTnVtYmVyIG9mIGJ5dGVzIG9idGFpbmVkLgorCSAqLworCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0UmFuZG9tKHVuc2lnbmVkIGNoYXIgKiBidWZmZXIsIHVuc2lnbmVkIGludCBudW1PY3RldHMpIGNvbnN0OworCisKKwkvL0B9CisKKwkvKiogQG5hbWUgSW5mb3JtYXRpb24gRnVuY3Rpb25zICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFJldHVybnMgYSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSBDcnlwdG8gUHJvdmlkZXIKKwkgKi8KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRQcm92aWRlck5hbWUoKSBjb25zdDsKKworCS8vQH0KKworCitwcml2YXRlOgorCisJSENSWVBUUFJPVgkJbV9wcm92RFNTOworCUhDUllQVFBST1YJCW1fcHJvdlJTQTsKKwlIQ1JZUFRQUk9WCQltX3Byb3ZBcGFjaGVLZXlTdG9yZTsKKwlMUENTVFIJCQltX3Byb3ZEU1NOYW1lOworCUxQQ1NUUgkJCW1fcHJvdlJTQU5hbWU7CisJYm9vbAkJCW1faGF2ZUFFUzsKKwlEV09SRAkJCW1fcHJvdlJTQVR5cGU7CisKK307CisKKy8qXEB9Ki8KKworI2VuZGlmIC8qIEhBVkVfV0lOQ0FQSSAqLworI2VuZGlmIC8qIFdJTkNBUElDUllQVE9QUk9WSURFUl9JTkNMVURFICovCisKZGlmZiAtLWdpdCBhL2Mvc3JjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9TeW1tZXRyaWNLZXkuY3BwIGIvYy9zcmMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b1N5bW1ldHJpY0tleS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTIwOTVkYwotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9TeW1tZXRyaWNLZXkuY3BwCkBAIC0wLDAgKzEsNzIwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYU0VDQ3J5cHRvU3ltbWV0cmljS2V5IDo9IEJ1bGsgZW5jcnlwdGlvbiBhbGdvcml0aG1zIHNob3VsZCBhbGwgYmUKKyAqCQkJCQkJCWltcGxlbWVudGVkIHZpYSB0aGlzIGludGVyZmFjZQorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNQbGF0Zm9ybVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvUHJvdmlkZXIuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b1N5bW1ldHJpY0tleS5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvRXhjZXB0aW9uLmhwcD4KKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9KYW5pdG9yLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKyNpZiBkZWZpbmVkIChIQVZFX1dJTkNBUEkpCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2luQ0FQSUNyeXB0b1N5bW1ldHJpY0tleTo6V2luQ0FQSUNyeXB0b1N5bW1ldHJpY0tleSgKKwkJCQkJCUhDUllQVFBST1YgcHJvdiwKKwkJCQkJCVhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OlN5bW1ldHJpY0tleVR5cGUgdHlwZSkgOgorbV9rZXlUeXBlKHR5cGUpLAorbV9rZXlNb2RlKE1PREVfRUNCKSwKK21faW5pdGlhbGlzZWQoZmFsc2UpLAorbV9kb1BhZCh0cnVlKSwKK21fcChwcm92KSwKK21faygwKSB7CisKKworfQorCitXaW5DQVBJQ3J5cHRvU3ltbWV0cmljS2V5Ojp+V2luQ0FQSUNyeXB0b1N5bW1ldHJpY0tleSgpIHsKKworCWlmIChtX2sgIT0gMCkKKwkJQ3J5cHREZXN0cm95S2V5KG1fayk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBCYXNpYyBLZXkgaW50ZXJmYWNlIG1ldGhvZHMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hTRUNDcnlwdG9LZXkgKiBXaW5DQVBJQ3J5cHRvU3ltbWV0cmljS2V5OjpjbG9uZSgpIGNvbnN0IHsKKworCVdpbkNBUElDcnlwdG9TeW1tZXRyaWNLZXkgKiByZXQ7CisKKwlYU0VDbmV3KHJldCwgV2luQ0FQSUNyeXB0b1N5bW1ldHJpY0tleShtX3AsIG1fa2V5VHlwZSkpOworCXJldC0+bV9rZXlMZW4gPSBtX2tleUxlbjsKKwlyZXQtPm1fa2V5QnVmID0gbV9rZXlCdWY7CisKKwlpZiAobV9rICE9IDApIHsKKworI2lmIChfV0lOMzJfV0lOTlQgPiAweDA0MDApCisKKwkJLy8gT25seSBzdXBwb3J0ZWQgaW4gV2luMksgYW5kIGFib3ZlCisKKwkJaWYgKENyeXB0RHVwbGljYXRlS2V5KG1faywKKwkJCSAJCQkJICAwLAorCQkJCQkJCSAgMCwKKwkJCQkJCQkgICYocmV0LT5tX2spKSA9PSAwICkgeworCisJCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlN5bW1ldHJpY0Vycm9yLAorCQkJCSJXaW5DQVBJOlN5bW1ldHJpY0tleSBFcnJvciBhdHRlbXB0aW5nIHRvIGNsb25lIGtleSBwYXJhbWV0ZXJzIik7CisKKwkJfQorI2Vsc2UKKworCQlyZXQtPnNldEtleShtX2tleUJ1Zi5yYXdCdWZmZXIoKSwgbV9rZXlMZW4pOworCisjZW5kaWYKKwl9CisJZWxzZQorCQlyZXQtPm1fayA9IDA7CisKKwlyZXR1cm4gcmV0OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU3RvcmUgdGhlIGtleSB2YWx1ZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBXaW5DQVBJQ3J5cHRvU3ltbWV0cmljS2V5OjpzZXRLZXkoY29uc3QgdW5zaWduZWQgY2hhciAqIGtleSwgdW5zaWduZWQgaW50IGtleUxlbikgeworCisJbV9rZXlCdWYuc2JNZW1jcHlJbihrZXksIGtleUxlbik7CisJbV9rZXlMZW4gPSBrZXlMZW47CisKKwlpZiAobV9rICE9IDApCisJCUNyeXB0RGVzdHJveUtleShtX2spOworCQorCW1fcCA9IDA7CisJbV9rID0gY3JlYXRlV2luZG93c0tleShrZXksIGtleUxlbiwgbV9rZXlUeXBlLCAmbV9wKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBEZWNyeXB0CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitpbnQgV2luQ0FQSUNyeXB0b1N5bW1ldHJpY0tleTo6ZGVjcnlwdEN0eEluaXQoY29uc3QgdW5zaWduZWQgY2hhciAqIGl2KSB7CisKKwkvLyBSZXR1cm5zIGFtb3VudCBvZiBJViBkYXRhIHVzZWQgKGluIGJ5dGVzKQorCS8vIFNldHMgbV9pbml0aWFsaXNlZCBpZmYgdGhlIGtleSBpcyBPSyBhbmQgdGhlIElWIGlzIE9LLgorCisJaWYgKG1faW5pdGlhbGlzZWQpCisJCXJldHVybiAwOworCisJaWYgKG1fayA9PSAwKSB7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCSJXaW5DQVBJOlN5bW1ldHJpY0tleSAtIENhbm5vdCBpbml0aWFsaXNlIHdpdGhvdXQga2V5Iik7IAorCisJfQorCisJRFdPUkQgY3J5cHRNb2RlOworCWlmIChtX2tleU1vZGUgPT0gTU9ERV9DQkMpIHsKKworCQlpZiAoaXYgPT0gTlVMTCkgeworCisJCQlyZXR1cm4gMDsJLy8gQ2Fubm90IGluaXRpYWxpc2Ugd2l0aG91dCBhbiBJVgorCisJCX0KKwkJCisJCWNyeXB0TW9kZSA9IENSWVBUX01PREVfQ0JDOworCisJCWlmICghQ3J5cHRTZXRLZXlQYXJhbShtX2ssIEtQX01PREUsIChCWVRFICopICgmY3J5cHRNb2RlKSwgMCkpIHsKKworCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCQkiV2luQ0FQSTpTeW1tZXRyaWNLZXkgLSBFcnJvciBzZXR0aW5nIGNpcGhlciBtb2RlIik7IAorCisJCX0KKwkJCisJCWlmICghQ3J5cHRTZXRLZXlQYXJhbShtX2ssIEtQX0lWLCAodW5zaWduZWQgY2hhciAqKSBpdiwgMCkpIHsKKworCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCSJXaW5DQVBJOlN5bW1ldHJpY0tleSAtIEVycm9yIHNldHRpbmcgSVYiKTsgCisKKwkJfQorCisJfQorCWVsc2UgeworCQljcnlwdE1vZGUgPSBDUllQVF9NT0RFX0VDQjsKKworCQlpZiAoIUNyeXB0U2V0S2V5UGFyYW0obV9rLCBLUF9NT0RFLCAoQllURSAqKSAoJmNyeXB0TW9kZSksIDApKSB7CisKKwkJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6U3ltbWV0cmljRXJyb3IsCisJCQkJIldpbkNBUEk6U3ltbWV0cmljS2V5IC0gRXJyb3Igc2V0dGluZyBjaXBoZXIgbW9kZSIpOyAKKworCQl9CisJfQorCisJLy8gU2V0IHVwIHRoZSBjb250ZXh0IGFjY29yZGluZyB0byB0aGUgcmVxdWlyZWQgY2lwaGVyIHR5cGUKKwlzd2l0Y2ggKG1fa2V5VHlwZSkgeworCisJY2FzZSAoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZXzNERVNfMTkyKSA6CisKKwkJLy8gQSAzREVTIENCQyBrZXkKKworCQltX2Jsb2NrU2l6ZSA9IDg7CisJCW1fYnl0ZXNJbkxhc3RCbG9jayA9IDA7CisJCW1faW5pdGlhbGlzZWQgPSB0cnVlOworCQkKKwkJYnJlYWs7CisKKwljYXNlIChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfQUVTXzEyOCkgOgorCWNhc2UgKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV9BRVNfMTkyKSA6CisJY2FzZSAoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZX0FFU18yNTYpIDoKKworCQkvLyBBbiBBRVMga2V5CisKKwkJbV9ibG9ja1NpemUgPSAxNjsKKwkJbV9ieXRlc0luTGFzdEJsb2NrID0gMDsKKwkJbV9pbml0aWFsaXNlZCA9IHRydWU7CisJCQorCQlicmVhazsKKworCWRlZmF1bHQgOgorCisJCS8vIENhbm5vdCBkbyB0aGlzIHdpdGhvdXQgYW4gSVYKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCSJXaW5DQVBJOlN5bW1ldHJpY0tleSAtIFVua25vd24ga2V5IHR5cGUiKTsgCisKKwl9CisKKwlyZXR1cm4gKG1fa2V5TW9kZSA9PSBNT0RFX0NCQyA/IG1fYmxvY2tTaXplIDogMCk7Cit9CisKKworYm9vbCBXaW5DQVBJQ3J5cHRvU3ltbWV0cmljS2V5OjpkZWNyeXB0SW5pdChib29sIGRvUGFkLCAKKwkJCQkJCQkJCQkJU3ltbWV0cmljS2V5TW9kZSBtb2RlLCAKKwkJCQkJCQkJCQkJY29uc3QgdW5zaWduZWQgY2hhciAqIGl2KSB7CisKKwltX2luaXRpYWxpc2VkID0gZmFsc2U7CisJbV9kb1BhZCA9IGRvUGFkOworCW1fa2V5TW9kZSA9IG1vZGU7CisJZGVjcnlwdEN0eEluaXQoaXYpOworCXJldHVybiB0cnVlOworCit9CisKK3Vuc2lnbmVkIGludCBXaW5DQVBJQ3J5cHRvU3ltbWV0cmljS2V5OjpkZWNyeXB0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBpbkJ1ZiwgCisJCQkJCQkJCSB1bnNpZ25lZCBjaGFyICogcGxhaW5CdWYsIAorCQkJCQkJCQkgdW5zaWduZWQgaW50IGluTGVuZ3RoLAorCQkJCQkJCQkgdW5zaWduZWQgaW50IG1heE91dExlbmd0aCkgeworCisKKworCS8vIE5PVEU6IFRoaXMgd29uJ3QgYWN0dWFsbHkgc3RvcCBXaW5DQVBJIGJsb3dpbmcgdGhlIGJ1ZmZlciwgc28gdGhlIG9udXMgaXMKKwkvLyBvbiB0aGUgY2FsbGVyLgorCisJdW5zaWduZWQgaW50IG9mZnNldCA9IDA7CisJaWYgKCFtX2luaXRpYWxpc2VkKSB7CisJCW9mZnNldCA9IGRlY3J5cHRDdHhJbml0KGluQnVmKTsKKwkJaWYgKG9mZnNldCA+IGluTGVuZ3RoKSB7CisJCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlN5bW1ldHJpY0Vycm9yLAorCQkJIldpbkNBUEk6U3ltbWV0cmljS2V5IC0gTm90IGVub3VnaCBkYXRhIHBhc3NlZCBpbiB0byBnZXQgSVYiKTsKKwkJfQorCX0KKworCS8qIEFzIHBlciBidWcgIzM4MzY1IC0gd2UgbmVlZCB0byBlbnN1cmUgdGhlcmUgYXJlIGVub3VnaCBjaGFyYWN0ZXJzIHRvIGRlY3J5cHQuCisJICAgT3RoZXJ3aXNlIHdlIGdldCBzb21lIG5hc3R5IGVycm9ycyBkdWUgdG8gcm91bmRpbmcgY2FsY3VsYXRpb25zIHdoZW4gaW5wdXRzCisJICAgYXJlIHRvbyBzbWFsbCAqLworCisJZWxzZSBpZiAobV9ieXRlc0luTGFzdEJsb2NrICsgaW5MZW5ndGggPCBtX2Jsb2NrU2l6ZSkgeworCQkvLyBOb3QgZW5vdWdoIGlucHV0IGRhdGEKKwkJbWVtY3B5KCZtX2xhc3RCbG9ja1ttX2J5dGVzSW5MYXN0QmxvY2tdLCBpbkJ1ZiwgaW5MZW5ndGgpOworCQltX2J5dGVzSW5MYXN0QmxvY2sgKz0gaW5MZW5ndGg7CisJCXJldHVybiAwOworCX0KKworCURXT1JEIG91dGwgPSBpbkxlbmd0aCAtIG9mZnNldDsKKworCS8vIENvcHkgaW4gbGFzdCBibG9jaworCWlmIChtX2J5dGVzSW5MYXN0QmxvY2sgPiAwKQorCQltZW1jcHkocGxhaW5CdWYsIG1fbGFzdEJsb2NrLCBtX2J5dGVzSW5MYXN0QmxvY2spOworCisJLy8gQ29weSBvdXQgdGhlIHRhaWwsIGFzIHdlIF9NVVNUXyBrbm93IHdoZW4gd2UgY29tZSB0byB0aGUgZW5kIGZvciBkZWNyeXB0RmluYWwKKwl1bnNpZ25lZCBpbnQgcm91bmRpbmcgPSAob3V0bCAlIG1fYmxvY2tTaXplKSArIG1fYmxvY2tTaXplOworCW1lbWNweSgmcGxhaW5CdWZbbV9ieXRlc0luTGFzdEJsb2NrXSwgJmluQnVmW29mZnNldF0sIG91dGwgLSByb3VuZGluZyk7CisKKwkvLyBDb3B5IHRoZSB0YWlsIHRvIG1fbGFzdEJsb2NrCisJbWVtY3B5KG1fbGFzdEJsb2NrLCAmaW5CdWZbb2Zmc2V0ICsgb3V0bCAtIHJvdW5kaW5nXSwgcm91bmRpbmcpOworCW91dGwgPSBvdXRsIC0gcm91bmRpbmcgKyBtX2J5dGVzSW5MYXN0QmxvY2s7CisJbV9ieXRlc0luTGFzdEJsb2NrID0gcm91bmRpbmc7CisJCisJaWYgKCFDcnlwdERlY3J5cHQobV9rLAorCQkJCSAwLAorCQkJCSBGQUxTRSwKKwkJCQkgMCwKKwkJCQkgcGxhaW5CdWYsCisJCQkJICZvdXRsKSkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6U3ltbWV0cmljRXJyb3IsCisJCQkiV2luQ0FQSTpTeW1tZXRyaWNLZXkgLSBFcnJvciBkdXJpbmcgV2luQ0FQSSBkZWNyeXB0Iik7IAorCisJfQorCisJcmV0dXJuIG91dGw7CisKK30KKwordW5zaWduZWQgaW50IFdpbkNBUElDcnlwdG9TeW1tZXRyaWNLZXk6OmRlY3J5cHRGaW5pc2godW5zaWduZWQgY2hhciAqIHBsYWluQnVmLAorCQkJCQkJCQkJCQkJCSAgdW5zaWduZWQgaW50IG1heE91dExlbmd0aCkgeworCisJRFdPUkQgb3V0bCA9IG1fYnl0ZXNJbkxhc3RCbG9jazsKKworCW1lbWNweShwbGFpbkJ1ZiwgbV9sYXN0QmxvY2ssIG91dGwpOworCisJaWYgKCFDcnlwdERlY3J5cHQobV9rLCAKKwkJCQkJICAwLCAKKwkJCQkJICBGQUxTRSwKKwkJCQkJICAwLAorCQkJCQkgIHBsYWluQnVmLAorCQkJCQkgICZvdXRsKSkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6U3ltbWV0cmljRXJyb3IsCisJCQkiV2luQ0FQSTpTeW1tZXRyaWNLZXkgLSBFcnJvciBkdXJpbmcgV2luQ0FQSSBkZWNyeXB0IGZpbmFsaXNhdGlvbiIpOyAKKworCX0KKworCWlmIChtX2RvUGFkKSB7CisKKwkJLy8gTmVlZCB0byBkbyB0aGlzIG91cnNlbHZlcywgYXMgV2luQ0FQSSBhcHBlYXJzIGJyb2tlbgorCQlpZiAocGxhaW5CdWZbb3V0bCAtIDFdID4gbV9ibG9ja1NpemUpIHsKKwkJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6U3ltbWV0cmljRXJyb3IsCisJCQkJIldpbkNBUEk6U3ltbWV0cmljS2V5IC0gQmFkIHBhZGRpbmciKTsgCisJCX0KKworCQlvdXRsIC09IHBsYWluQnVmW291dGwgLSAxXTsKKworCX0KKworCS8vIFRoaXMgaXMganVzdCB0byByZXNldCB0aGUga2V5LCBhbmQgZG9lcyBub3RoaW5nIGVsc2UgdXNlZnVsLgorCURXT1JEIHRtcG91dCA9IG1heE91dExlbmd0aCAtIG91dGw7CisJQ3J5cHREZWNyeXB0KG1faywgMCwgVFJVRSwgMCwgJnBsYWluQnVmW291dGxdLCAmdG1wb3V0KTsKKworCXJldHVybiBvdXRsOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEVuY3J5cHQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgV2luQ0FQSUNyeXB0b1N5bW1ldHJpY0tleTo6ZW5jcnlwdEN0eEluaXQoY29uc3QgdW5zaWduZWQgY2hhciAqIGl2KSB7CisKKworCisJaWYgKG1faW5pdGlhbGlzZWQgPT0gdHJ1ZSkKKwkJcmV0dXJuOworCQorCWlmIChtX2tleUxlbiA9PSAwKSB7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCSJXaW5DQVBJOlN5bW1ldHJpY0tleSAtIENhbm5vdCBpbml0aWFsaXNlIHdpdGhvdXQga2V5Iik7IAorCisJfQorCisJbV9pbml0aWFsaXNlZCA9IHRydWU7CisKKwkvLyBTZXQgdXAgdGhlIGNvbnRleHQgYWNjb3JkaW5nIHRvIHRoZSByZXF1aXJlZCBjaXBoZXIgdHlwZQorCisJY29uc3QgdW5zaWduZWQgY2hhciAqIHVzZWRJViA9IE5VTEw7CisJdW5zaWduZWQgY2hhciBnZW5JVlsyNTZdOworCURXT1JEIGNyeXB0TW9kZTsKKworCS8vIFRlbGwgdGhlIGxpYnJhcnkgdGhhdCB0aGUgSVYgc3RpbGwgaGFzIHRvIGJlIHNlbnQKKworCWlmIChtX2tleU1vZGUgPT0gTU9ERV9DQkMpIHsKKworCQlpZiAoaXYgPT0gTlVMTCkgeworCQkJCisJCQlCT09MIHJlcyA9IENyeXB0R2VuUmFuZG9tKG1fcCwgMjU2LCBnZW5JVik7CisJCQlpZiAocmVzID09IEZBTFNFKSB7CisJCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCQkJIldpbkNBUEk6U3ltbWV0cmljS2V5IC0gRXJyb3IgZ2VuZXJhdGluZyByYW5kb20gSVYiKTsKKwkJCX0KKworCQkJdXNlZElWID0gZ2VuSVY7CisJCQkvL3JldHVybiAwOwkvLyBDYW5ub3QgaW5pdGlhbGlzZSB3aXRob3V0IGFuIElWCisKKwkJfQorCQllbHNlCisJCQl1c2VkSVYgPSBpdjsKKworCQljcnlwdE1vZGUgPSBDUllQVF9NT0RFX0NCQzsKKworCQlpZiAoIUNyeXB0U2V0S2V5UGFyYW0obV9rLCBLUF9NT0RFLCAoQllURSAqKSAoJmNyeXB0TW9kZSksIDApKSB7CisKKwkJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6U3ltbWV0cmljRXJyb3IsCisJCQkJIldpbkNBUEk6U3ltbWV0cmljS2V5IC0gRXJyb3Igc2V0dGluZyBjaXBoZXIgbW9kZSIpOyAKKworCQl9CisKKwkJLy8gU2V0IHRoZSBJViBwYXJhbWV0ZXIKKwkJaWYgKCFDcnlwdFNldEtleVBhcmFtKG1faywgS1BfSVYsICh1bnNpZ25lZCBjaGFyICopIHVzZWRJViwgMCkpIHsKKworCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCSJXaW5DQVBJOlN5bW1ldHJpY0tleSAtIEVycm9yIHNldHRpbmcgSVYiKTsgCisKKwkJfQorCisJfQorCWVsc2UgeworCisJCWNyeXB0TW9kZSA9IENSWVBUX01PREVfRUNCOworCisJCWlmICghQ3J5cHRTZXRLZXlQYXJhbShtX2ssIEtQX01PREUsIChCWVRFICopICgmY3J5cHRNb2RlKSwgMCkpIHsKKworCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCQkiV2luQ0FQSTpTeW1tZXRyaWNLZXkgLSBFcnJvciBzZXR0aW5nIGNpcGhlciBtb2RlIik7IAorCisJCX0KKwl9CisKKwlzd2l0Y2ggKG1fa2V5VHlwZSkgeworCisJY2FzZSAoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZXzNERVNfMTkyKSA6CisKKwkJLy8gQSAzREVTIGtleQorCisJCW1fYmxvY2tTaXplID0gODsKKwkJaWYgKG1fa2V5TW9kZSA9PSBNT0RFX0NCQykKKwkJCW1faXZTaXplID0gODsKKwkJZWxzZSAKKwkJCW1faXZTaXplID0gMDsKKwkJbV9ieXRlc0luTGFzdEJsb2NrID0gMDsKKworCQlicmVhazsKKworCWNhc2UgKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV9BRVNfMTI4KSA6CisJY2FzZSAoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZX0FFU18xOTIpIDoKKwljYXNlIChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfQUVTXzI1NikgOgorCisJCS8vIEFuIEFFUyBrZXkKKworCQltX2Jsb2NrU2l6ZSA9IDE2OworCQlpZiAobV9rZXlNb2RlID09IE1PREVfQ0JDKQorCQkJbV9pdlNpemUgPSAxNjsKKwkJZWxzZSAKKwkJCW1faXZTaXplID0gMDsKKwkJbV9ieXRlc0luTGFzdEJsb2NrID0gMDsKKworCQlicmVhazsKKwkKKwlkZWZhdWx0IDoKKworCQkvLyBDYW5ub3QgZG8gdGhpcyB3aXRob3V0IGFuIElWCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6U3ltbWV0cmljRXJyb3IsCisJCQkiV2luQ0FQSTpTeW1tZXRyaWNLZXkgLSBVbmtub3duIGtleSB0eXBlIik7IAorCisJfQorCisJaWYgKHVzZWRJViAhPSBOVUxMICYmIG1faXZTaXplID4gMCkKKwkJbWVtY3B5KG1fbGFzdEJsb2NrLCB1c2VkSVYsIG1faXZTaXplKTsKKworCit9Citib29sIFdpbkNBUElDcnlwdG9TeW1tZXRyaWNLZXk6OmVuY3J5cHRJbml0KGJvb2wgZG9QYWQsIAorCQkJCQkJCQkJCQlTeW1tZXRyaWNLZXlNb2RlIG1vZGUsIAorCQkJCQkJCQkJCQljb25zdCB1bnNpZ25lZCBjaGFyICogaXYpIHsKKworCW1fZG9QYWQgPSBkb1BhZDsKKwltX2tleU1vZGUgPSBtb2RlOworCW1faW5pdGlhbGlzZWQgPSBmYWxzZTsKKwllbmNyeXB0Q3R4SW5pdChpdik7CisJcmV0dXJuIHRydWU7CisKK30KKwordW5zaWduZWQgaW50IFdpbkNBUElDcnlwdG9TeW1tZXRyaWNLZXk6OmVuY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqIGluQnVmLCAKKwkJCQkJCQkJIHVuc2lnbmVkIGNoYXIgKiBjaXBoZXJCdWYsIAorCQkJCQkJCQkgdW5zaWduZWQgaW50IGluTGVuZ3RoLAorCQkJCQkJCQkgdW5zaWduZWQgaW50IG1heE91dExlbmd0aCkgeworCisJaWYgKG1faW5pdGlhbGlzZWQgPT0gZmFsc2UpIHsKKworCQllbmNyeXB0SW5pdCgpOworCisJfQorCisJLy8gTk9URTogVGhpcyB3b24ndCBhY3R1YWxseSBzdG9wIFdpbkNBUEkgYmxvd2luZyB0aGUgYnVmZmVyLCBzbyB0aGUgb251cyBpcworCS8vIG9uIHRoZSBjYWxsZXIuCisKKwl1bnNpZ25lZCBpbnQgb2Zmc2V0ID0gMDsKKwl1bnNpZ25lZCBjaGFyICogYnVmUHRyOworCXVuc2lnbmVkIGNoYXIgKiBlbmNQdHI7CS8vIFB0ciB0byBzdGFydCBvZiBibG9jayB0byBlbmNyeXB0CisKKwlEV09SRCBvdXRsID0gMDsKKwkKKwlpZiAobV9pdlNpemUgPiAwKSB7CisKKwkJRFdPUkQgbGVuID0gMTY7CisJCWlmICghQ3J5cHRHZXRLZXlQYXJhbShtX2ssIEtQX0lWLCAodW5zaWduZWQgY2hhciAqKSBtX2xhc3RCbG9jaywgJmxlbiwgMCkpIHsKKworCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCSJXaW5DQVBJOlN5bW1ldHJpY0tleSAtIEVycm9yIHNldHRpbmcgSVYiKTsgCisKKwkJfQorCQltZW1jcHkoY2lwaGVyQnVmLCBtX2xhc3RCbG9jaywgbV9pdlNpemUpOworCQlvZmZzZXQgPSBtX2l2U2l6ZTsKKwkJb3V0bCArPSBtX2l2U2l6ZTsKKwkJbV9pdlNpemUgPSAwOworCisJfQorCisJLyogQXMgcGVyIGJ1ZyAjMzgzNjUgLSB3ZSBuZWVkIHRvIGVuc3VyZSB0aGVyZSBhcmUgZW5vdWdoIGNoYXJhY3RlcnMgdG8gZW5jcnlwdC4KKwkgICBPdGhlcndpc2Ugd2UgZ2V0IHNvbWUgbmFzdHkgZXJyb3JzIGR1ZSB0byByb3VuZGluZyBjYWxjdWxhdGlvbnMgd2hlbiBpbnB1dHMKKwkgICBhcmUgdG9vIHNtYWxsICovCisKKwlpZiAobV9ieXRlc0luTGFzdEJsb2NrICsgaW5MZW5ndGggPCBtX2Jsb2NrU2l6ZSkgeworCQkvLyBOb3QgZW5vdWdoIGlucHV0IGRhdGEKKwkJbWVtY3B5KCZtX2xhc3RCbG9ja1ttX2J5dGVzSW5MYXN0QmxvY2tdLCBpbkJ1ZiwgaW5MZW5ndGgpOworCQltX2J5dGVzSW5MYXN0QmxvY2sgKz0gaW5MZW5ndGg7CisKKwkJLy8gSnVzdCBpbiBjYXNlIHdlIGhhdmUgcmV0dXJuZWQgYW4gSVYKKwkJcmV0dXJuIG91dGw7CisJfQorCisJYnVmUHRyID0gJmNpcGhlckJ1ZltvZmZzZXRdOworCWVuY1B0ciA9IGJ1ZlB0cjsKKworCWlmIChtX2J5dGVzSW5MYXN0QmxvY2sgPiAwKSB7CisJCW1lbWNweShidWZQdHIsIG1fbGFzdEJsb2NrLCBtX2J5dGVzSW5MYXN0QmxvY2spOworCQlidWZQdHIgPSAmYnVmUHRyW21fYnl0ZXNJbkxhc3RCbG9ja107CisJCW91dGwgKz0gbV9ieXRlc0luTGFzdEJsb2NrOworCX0KKworCXVuc2lnbmVkIGludCByb3VuZGluZyA9IChtX2J5dGVzSW5MYXN0QmxvY2sgKyBpbkxlbmd0aCkgJSBtX2Jsb2NrU2l6ZTsKKwlyb3VuZGluZyArPSBtX2Jsb2NrU2l6ZTsKKworCW91dGwgKz0gaW5MZW5ndGggLSByb3VuZGluZzsKKwlpZiAob3V0bCA+IG1heE91dExlbmd0aCkgeworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlN5bW1ldHJpY0Vycm9yLAorCQkJIldpbkNBUEk6U3ltbWV0cmljS2V5IC0gTm90IGVub3VnaCBzcGFjZSBpbiBvdXRwdXQgYnVmZmVyIGZvciBlbmNyeXB0Iik7IAorCX0KKworCW91dGwgLT0gb2Zmc2V0OworCisJLy8gTm93IGNvcHkgYmFjayBvbmUgYmxvY2sgKyByb3VuZGluZworCW1lbWNweShtX2xhc3RCbG9jaywgJmluQnVmW2luTGVuZ3RoIC0gcm91bmRpbmddLCByb3VuZGluZyk7CisJbV9ieXRlc0luTGFzdEJsb2NrID0gcm91bmRpbmc7CisKKwkvLyBGaW5hbGx5LCBjb3B5IGluIGxhc3Qgb2YgYnVmZmVyIHRvIGVuY3J5cHQKKwltZW1jcHkoYnVmUHRyLCBpbkJ1ZiwgaW5MZW5ndGggLSByb3VuZGluZyk7CisKKwkvLyBEbyB0aGUgZW5yeXB0CisJaWYgKCFDcnlwdEVuY3J5cHQobV9rLCAwLCBGQUxTRSwgMCwgZW5jUHRyLCAmb3V0bCwgbWF4T3V0TGVuZ3RoKSkgeworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlN5bW1ldHJpY0Vycm9yLAorCQkJIldpbkNBUEk6U3ltbWV0cmljS2V5IC0gRXJyb3IgZHVyaW5nIFdpbkNBUEkgZW5jcnlwdCIpOyAKKwl9CisJCisJcmV0dXJuIG91dGwgKyBvZmZzZXQ7CisKK30KKwordW5zaWduZWQgaW50IFdpbkNBUElDcnlwdG9TeW1tZXRyaWNLZXk6OmVuY3J5cHRGaW5pc2godW5zaWduZWQgY2hhciAqIGNpcGhlckJ1ZiwKKwkJCQkJCQkJCQkJCQkgIHVuc2lnbmVkIGludCBtYXhPdXRMZW5ndGgpIHsKKworCURXT1JEIG91dGwgPSBtX2J5dGVzSW5MYXN0QmxvY2sgKyBtX2Jsb2NrU2l6ZTsKKworCWlmIChvdXRsID4gbWF4T3V0TGVuZ3RoKSB7CisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6U3ltbWV0cmljRXJyb3IsCisJCQkiV2luQ0FQSTpTeW1tZXRyaWNLZXkgLSBOb3QgZW5vdWdoIHNwYWNlIGluIG91dHB1dCBidWZmZXIgZm9yIGVuY3J5cHQgLSBOT1RFIFdpbkNBUEkgcmVxdWlyZXMgYW4gZXh0cmEgYmxvY2sgdG8gY29tcGxldGUgZW5jcnlwdGlvbiIpOyAKKwl9CisKKwlvdXRsID0gMDsKKworCWlmIChtX2J5dGVzSW5MYXN0QmxvY2sgIT0gMCkgeworCisJCW1lbWNweShjaXBoZXJCdWYsIG1fbGFzdEJsb2NrLCBtX2J5dGVzSW5MYXN0QmxvY2spOworCQlvdXRsID0gbV9ieXRlc0luTGFzdEJsb2NrOworCisJfQorCisJaWYgKCFDcnlwdEVuY3J5cHQobV9rLCAwLCBUUlVFLCAwLCBjaXBoZXJCdWYsICZvdXRsLCBtYXhPdXRMZW5ndGgpKSB7CisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6U3ltbWV0cmljRXJyb3IsCisJCQkiV2luQ0FQSTpTeW1tZXRyaWNLZXkgLSBFcnJvciBkdXJpbmcgV2luQ0FQSSBlbmNyeXB0Iik7IAorCX0KKworCWlmICghbV9kb1BhZCkgeworCisJCS8vIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2FsbGVyIHRvIGVuc3VyZSB0aGV5IGhhdmUgCisJCS8vIHBhc3NlZCBpbiBibG9jayBzaXplIG51bSBieXRlcworCisJCWlmIChvdXRsID49IG1fYmxvY2tTaXplKQorCQkJb3V0bCAtPSBtX2Jsb2NrU2l6ZTsKKworCX0KKworCXJldHVybiBvdXRsOworCit9CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDcmVhdGUgYSB3aW5kb3dzIGtleQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSENSWVBUS0VZIFdpbkNBUElDcnlwdG9TeW1tZXRyaWNLZXk6OmNyZWF0ZVdpbmRvd3NLZXkoCisJCQkJCQkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKiBrZXksIAorCQkJCQkJCQl1bnNpZ25lZCBpbnQga2V5TGVuLCAKKwkJCQkJCQkJWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6U3ltbWV0cmljS2V5VHlwZSB0eXBlLAorCQkJCQkJCQlIQ1JZUFRQUk9WICogcHJvdikgeworCisJLy8gRmlyc3QgZ2V0IHRoZSBjb3JyZWN0IFByb3ZpZGVyIGhhbmRsZSB0byBsb2FkIHRoZSBrZXkgaW50bworCQorCUhDUllQVFBST1YgcDsKKwkKKwlpZiAocHJvdiA9PSBOVUxMIHx8ICpwcm92ID09IDApIHsKKwkJaWYgKCFzdHJFcXVhbHMoWFNFQ1BsYXRmb3JtVXRpbHM6OmdfY3J5cHRvUHJvdmlkZXItPmdldFByb3ZpZGVyTmFtZSgpLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJQUk9WV2luQ0FQSSkpIHsKKwkJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6U3ltbWV0cmljRXJyb3IsCisJCQkJIldpbkNBUEk6U3ltbWV0cmljS2V5IC0gTWFpbiBwcm92aWRlciBpcyBub3QgV2luZG93cyBwcm92aWRlciIpOyAKKwkJfQorCisJCVdpbkNBUElDcnlwdG9Qcm92aWRlciAqIGNwID0gCisJCQkoV2luQ0FQSUNyeXB0b1Byb3ZpZGVyKikgWFNFQ1BsYXRmb3JtVXRpbHM6OmdfY3J5cHRvUHJvdmlkZXI7CisKKwkJcCA9IGNwLT5nZXRBcGFjaGVLZXlTdG9yZSgpOworCisJCWlmIChwID09IDApIHsKKworCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCSJXaW5DQVBJOlN5bW1ldHJpY0tleSAtIFVuYWJsZSB0byByZXRyaWV2ZSBpbnRlcm5hbCBrZXkgc3RvcmUiKTsgCisKKwkJfQorCisJCWlmIChwcm92ICE9IE5VTEwpCisJCQkqcHJvdiA9IHA7CisJfQorCisJZWxzZSBpZiAocHJvdiAhPSBOVUxMKQorCQlwID0gKnByb3Y7CisKKwkvLyBHZXQgdGhlIGtleSB3cmFwcGluZyBrZXkKKwlIQ1JZUFRLRVkgazsKKwlpZiAoIUNyeXB0R2V0VXNlcktleShwLCBBVF9LRVlFWENIQU5HRSwgJmspKSB7CisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6U3ltbWV0cmljRXJyb3IsCisJCQkiV2luQ0FQSTpTeW1tZXRyaWNLZXkgLSBVbmFibGUgdG8gcmV0cmlldmUgaW50ZXJuYWwga2V5IHBhaXIiKTsgCisJfQorCisJLy8gRmluZCBvdXQgaG93IGxvbmcgdGhlIG91dHB1dCB3aWxsIGJlCisJRFdPUkQgb3V0bCA9IDA7CisJaWYgKCFDcnlwdEVuY3J5cHQoaywgMCwgVFJVRSwgMCwgMCwgJm91dGwsIGtleUxlbikpIHsKKwkJRFdPUkQgZXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKKwkJaWYgKGVycm9yID09IE5URV9CQURfS0VZKSB7CisJCQkvLyBXZSB0aHJvdyBlaXRoZXIgd2F5LCBidXQgdGhpcyBpcyAqbGlrZWx5KiB0byBiZSBhbiB1bnN1cHBvcnRlZCBPUyBpc3N1ZQorCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCQkiV2luQ0FQSTpTeW1tZXRyaWNLZXk6OmNyZWF0ZVdpbmRvd3NLZXkgLSBFcnJvciBlbmNyeXB0aW5nIGEga2V5IC0gaXMgdGhpcyA+PSBXaW5kb3dzIDIwMDA/Iik7CisJCX0KKworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OlN5bW1ldHJpY0Vycm9yLAorCQkJIldpbkNBUEk6U3ltbWV0cmljS2V5IC0gVW5hYmxlIHRvIGRldGVybWluZSBzcGFjZSByZXF1aXJlZCB0byBlbmNyeXB0IGtleSIpOworCX0KKworCS8vIENyZWF0ZSB0aGUgbmVjZXNzYXJ5IGJ1ZmZlcgorCXVuc2lnbmVkIGNoYXIgKiBlbmNyeXB0QnVmOworCXVuc2lnbmVkIGludCBlbmNyeXB0QnVmU2l6ZSA9IG91dGw7CisJWFNFQ25ldyhlbmNyeXB0QnVmLCB1bnNpZ25lZCBjaGFyW291dGxdKTsKKwlBcnJheUphbml0b3I8dW5zaWduZWQgY2hhcj4gal9lbmNyeXB0QnVmKGVuY3J5cHRCdWYpOworCisJbWVtY3B5KGVuY3J5cHRCdWYsIGtleSwga2V5TGVuKTsKKwlvdXRsID0ga2V5TGVuOworCisJLy8gRG8gdGhlIGVuY3J5cHQKKworCWlmICghQ3J5cHRFbmNyeXB0KGssIDAsIFRSVUUsIDAsIGVuY3J5cHRCdWYsICZvdXRsLCBlbmNyeXB0QnVmU2l6ZSkpIHsKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCSJXaW5DQVBJOlN5bW1ldHJpY0tleSAtIFVuYWJsZSB0byBlbmNyeXB0IGtleSIpOworCX0KKworCS8vIE5vdyB3ZSBoYXZlIHRoZSBlbmNyeXB0ZWQgYnVmZmVyLCBjcmVhdGUgYSBTSU1QTEVCTE9CIHN0cnVjdHVyZQorCisJdW5zaWduZWQgY2hhciAqIHNpbXBsZUJsb2I7CisJWFNFQ25ldyhzaW1wbGVCbG9iLCB1bnNpZ25lZCBjaGFyIFtzaXplb2YgKEJMT0JIRUFERVIpICsgc2l6ZW9mIChEV09SRCkgKyAgb3V0bF0pOworCUFycmF5SmFuaXRvcjx1bnNpZ25lZCBjaGFyPiBqX3NpbXBsZUJsb2Ioc2ltcGxlQmxvYik7CisKKwlCTE9CSEVBREVSICogYmxvYkhlYWRlciA9IChCTE9CSEVBREVSICopIHNpbXBsZUJsb2I7CisJYmxvYkhlYWRlci0+YlR5cGUgPSBTSU1QTEVCTE9COworCWJsb2JIZWFkZXItPmJWZXJzaW9uID0gQ1VSX0JMT0JfVkVSU0lPTjsKKwlibG9iSGVhZGVyLT5yZXNlcnZlZCA9IDA7CisKKwl1bnNpZ25lZCBpbnQgZXhwZWN0ZWRMZW5ndGg7CisKKwlzd2l0Y2ggKHR5cGUpIHsKKworCWNhc2UgKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV8zREVTXzE5MikgOgorCQkJCQlibG9iSGVhZGVyLT5haUtleUFsZyA9IENBTEdfM0RFUzsKKwkJCQkJZXhwZWN0ZWRMZW5ndGggPSAyNDsKKwkJCQkJYnJlYWs7CisJY2FzZSAoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZX0FFU18xMjgpIDoKKwkJCQkJYmxvYkhlYWRlci0+YWlLZXlBbGcgPSBDQUxHX0FFU18xMjg7CisJCQkJCWV4cGVjdGVkTGVuZ3RoID0gMTY7CisJCQkJCWJyZWFrOworCWNhc2UgKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV9BRVNfMTkyKSA6CisJCQkJCWJsb2JIZWFkZXItPmFpS2V5QWxnID0gQ0FMR19BRVNfMTkyOworCQkJCQlleHBlY3RlZExlbmd0aCA9IDI0OworCQkJCQlicmVhazsKKwljYXNlIChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfQUVTXzI1NikgOgorCQkJCQlibG9iSGVhZGVyLT5haUtleUFsZyA9IENBTEdfQUVTXzI1NjsKKwkJCQkJZXhwZWN0ZWRMZW5ndGggPSAzMjsKKwkJCQkJYnJlYWs7CisJZGVmYXVsdCA6CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCSJXaW5DQVBJOlN5bW1ldHJpY0tleTo6Y3JlYXRlV2luZG93c0tleSAtIFVua25vd24gU3ltbWV0cmljIGtleSB0eXBlIik7CisKKwl9CisKKwkvLyBDaGVjayBrZXkgbGVuZ3RoIC0gb3RoZXJ3aXNlIHRoZSB1c2VyIGNvdWxkIGdldCBzb21lIHZlcnkgY3J5cHRpYyBlcnJvciBtZXNzYWdlcworCWlmIChrZXlMZW4gIT0gZXhwZWN0ZWRMZW5ndGgpIHsKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCSJXaW5DQVBJOlN5bW1ldHJpY0tleTo6Y3JlYXRlV2luZG93c0tleSAtIEtleSBsZW5ndGggaW5jb3JyZWN0IGZvciBhbGdvcml0aG0iKTsKKwl9CisKKwlEV09SRCAqIGFsZ0lkID0gKERXT1JEICopIChzaW1wbGVCbG9iICsgc2l6ZW9mKEJMT0JIRUFERVIpKTsKKwkqYWxnSWQgPSBDQUxHX1JTQV9LRVlYOworCisJLy8gQ29weSBpbiB0aGUgZW5jcnlwdGVkIGRhdGEKKwltZW1jcHkoJnNpbXBsZUJsb2Jbc2l6ZW9mKEJMT0JIRUFERVIpICsgc2l6ZW9mKERXT1JEKV0sIGVuY3J5cHRCdWYsIG91dGwpOworCisJLy8gTm93IGRvIHRoZSBpbXBvcnQKKworCUhDUllQVEtFWSBrMjsKKworCWlmICghQ3J5cHRJbXBvcnRLZXkocCwgc2ltcGxlQmxvYiwgc2l6ZW9mKEJMT0JIRUFERVIpICsgc2l6ZW9mKERXT1JEKSArIG91dGwsIGssIENSWVBUX0VYUE9SVEFCTEUsICZrMikpIHsKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpTeW1tZXRyaWNFcnJvciwKKwkJCSJXaW5DQVBJOlN5bW1ldHJpY0tleSAtIFVuYWJsZSB0byBpbXBvcnQga2V5Iik7CisJfQorCisJcmV0dXJuIGsyOworCit9CisKKworI2VuZGlmIC8qIEhBVkVfV0lOQ0FQSSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b1N5bW1ldHJpY0tleS5ocHAgYi9jL3NyYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvU3ltbWV0cmljS2V5LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZmMzMWM4Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b1N5bW1ldHJpY0tleS5ocHAKQEAgLTAsMCArMSwzMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNDcnlwdG9TeW1tZXRyaWNLZXkgOj0gQnVsayBlbmNyeXB0aW9uIGFsZ29yaXRobXMgc2hvdWxkIGFsbCBiZQorICoJCQkJCQkJaW1wbGVtZW50ZWQgdmlhIHRoaXMgaW50ZXJmYWNlCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisKKworI2lmbmRlZiBXSU5DQVBJQ1JZUFRPU1lNTUVUUklDS0VZX0lOQ0xVREUKKyNkZWZpbmUgV0lOQ0FQSUNSWVBUT1NZTU1FVFJJQ0tFWV9JTkNMVURFCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b1N5bW1ldHJpY0tleS5ocHA+CisKKyNpZiBkZWZpbmVkIChIQVZFX1dJTkNBUEkpCisKKyNpZiAhZGVmaW5lZChfV0lOMzJfV0lOTlQpCisjCWRlZmluZSBfV0lOMzJfV0lOTlQgMHgwNDAwCisjZW5kaWYKKworI2luY2x1ZGUgPHdpbmNyeXB0Lmg+CisKKyNkZWZpbmUgV0lOQ0FQSV9NQVhfQkxPQ0tfU0laRQkJMzIKKworLyoqCisgKiBcaW5ncm91cCB3aW5jYXBpY3J5cHRvCisgKi8KKworLyoqCisgKiBcYnJpZWYgQmFzZSBpbnRlcmZhY2UgZGVmaW5pdGlvbiBmb3Igc3ltbWV0cmljIGtleSBtYXRlcmlhbC4KKyAqCisgKiBUaGlzIGlzIHRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgYSB3cmFwcGVyIG9mIFdpbmRvd3MgQ3J5cHRvQVBJIHN5bW1ldHJpYworICogY3J5cHRvIGZ1bmN0aW9ucy4KKyAqLworCitjbGFzcyBEU0lHX0VYUE9SVCBXaW5DQVBJQ3J5cHRvU3ltbWV0cmljS2V5IDogcHVibGljIFhTRUNDcnlwdG9TeW1tZXRyaWNLZXkgeworCitwdWJsaWMgOgorCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisJCisJLyoqCisJICogXGJyaWVmIENvbnN0cnVjdG9yCisJICoKKwkgKiBDYW4gb25seSBjb25zdHJ1Y3QgYSBTeW1tZXRyaWMga2V5IGlmIHdlIGtub3cgd2hhdCB0eXBlIGl0IGlzCisJICoKKwkgKiBAcGFyYW0gcHJvdiBUaGUgYXBwcm9wcmlhdGUgcHJvdmlkZXIgdGhhdCBzdXBwb3J0cyB0aGUgcmVxdWlyZWQgYWxnb3JpdGhtLgorCSAqIENhbiBiZSAwIGlmIHRoZSBhcHAgaXMgZ29pbmcgdG8gcGFzcyBpbiBhbiBvY3RldCB2aWEgc2V0S2V5LCBhcyB0aGUgbGlicmFyeQorCSAqIHdpbGwgdXNlIGl0cyBvd24gaW50ZXJuYWwga2V5IHN0b3JlIGFuZCBoYW5kbGUgdG8gQ1NQLgorCSAqIEBwYXJhbSB0eXBlIFRoZSB0eXBlIG9mIGtleSAoaS5lLiBhbGdvcml0aG0pIHRvIGNyZWF0ZQorCSAqKi8KKworCVdpbkNBUElDcnlwdG9TeW1tZXRyaWNLZXkoSENSWVBUUFJPViBwcm92LCBYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpTeW1tZXRyaWNLZXlUeXBlIHR5cGUpOworCisJLyoqCisJICogXGJyaWVmIERlc3RydWN0b3IgCisJICoKKwkgKiBJbXBsZW1lbnRhdGlvbnMgbXVzdCBlbnN1cmUgdGhhdCB0aGUgaGVsZCBrZXkgaXMgcHJvcGVybHkgZGVzdHJveWVkCisJICogKG92ZXJ3cml0dGVuKSB3aGVuIGtleSBvYmplY3RzIGFyZSBkZWxldGVkLgorCSAqLworCisJdmlydHVhbCB+V2luQ0FQSUNyeXB0b1N5bW1ldHJpY0tleSgpOworCisJLy9AfQorCisJLyoqIEBuYW1lIEJhc2ljIENyeXB0b0tleSBJbnRlcmZhY2UgbWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm5zIGEgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB0aGUgY3J5cHRvIG93bmVyIG9mIHRoaXMgbGlicmFyeS4KKwkgKi8KKworICAgIHZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRQcm92aWRlck5hbWUoKSBjb25zdCB7cmV0dXJuIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clBST1ZXaW5DQVBJO30KKworCS8qKgorCSAqIFxicmllZiBDbG9uZSB0aGUga2V5CisJICoKKwkgKiBBbGwga2V5cyBuZWVkIHRvIGJlIGFibGUgdG8gY29weSB0aGVtc2VsdmVzIGFuZCByZXR1cm4KKwkgKiBhIHBvaW50ZXIgdG8gdGhlIGNvcHkuICBUaGlzIGFsbG93cyB0aGUgbGlicmFyeSB0byAKKwkgKiBkdXBsaWNhdGUga2V5cy4KKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0tleSAqIGNsb25lKCkgY29uc3Q7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgU3ltbWV0cmljIGtleSBpbnRlcmZhY2UgbWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBXaGF0IHR5cGUgb2Ygc3ltbWV0cmljIGtleSBpcyB0aGlzPworCSAqCisJICogVGhlcmUgYXJlIGEgbnVtYmVyIG9mIGRpZmZlcmVudCB0eXBlcyBvZiBzeW1tZXRyaWMga2V5LgorCSAqIFRoaXMgbWV0aG9kIGFsbG93cyBjYWxsZXJzIHRvIGRldGVybWluZSB0aGUgdHlwZSBvZiB0aGlzCisJICogcGFydGljdWxhciBrZXkKKwkgKi8KKworICAgIFN5bW1ldHJpY0tleVR5cGUgZ2V0U3ltbWV0cmljS2V5VHlwZSh2b2lkKSBjb25zdCB7cmV0dXJuIG1fa2V5VHlwZTt9CisKKwkvKioKKwkgKiBcYnJpZWYgU2V0IHRoZSBrZXkgZnJvbSB0aGUgcHJvdmlkZWQgYnl0ZXMKKwkgKgorCSAqIFN5bW1ldHJpYyBrZXlzIGNhbiBhbGwgYmUgbG9hZGVkIGZyb20gYSBidWZmZXIgY29udGFpbmluZyBhIHNlcmllcworCSAqIG9mIGJ5dGVzLgorCSAqCisJICogQHBhcmFtIGtleSBUaGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGtleSBieXRlcworCSAqIEBwYXJhbSBrZXlMZW4gVGhlIG51bWJlciBvZiBrZXkgYnl0ZXMgaW4gdGhlIGJ1ZmZlcgorCSAqCisJICovCisKKwl2b2lkIHNldEtleShjb25zdCB1bnNpZ25lZCBjaGFyICoga2V5LCB1bnNpZ25lZCBpbnQga2V5TGVuKTsKKworCS8qKgorCSAqIFxicmllZiBJbml0aWFsaXNlIGFuIGRlY3J5cHRpb24gcHJvY2VzcworCSAqCisJICogU2V0dXAgdGhlIGtleSB0byBnZXQgcmVhZHkgZm9yIGEgZGVjcnlwdGlvbiBzZXNzaW9uLgorCSAqIENhbGxlcnMgY2FuIHBhc3MgaW4gYW4gSVYuICBJZiBvbmUgaXMgbm90IHByb3ZpZGVkLCAKKwkgKiBidXQgdGhlIGFsZ29yaXRobSByZXF1aXJlcyBvbmUgKGUuZy4gM0RFU19DQkMpLCB0aGVuIAorCSAqIGltcGxlbWVudGF0aW9ucyBzaG91bGQgYXNzdW1lIHRoYXQgdGhlIHN0YXJ0IG9mIHRoZQorCSAqIGNpcGhlciB0ZXh0IHN0cmVhbSB3aWxsIGluIGZhY3QgYmUgdGhlIElWLgorCSAqCisJICogQHBhcmFtIGRvUGFkIEJ5IGRlZmF1bHQsIHdlIHBlcmZvcm0gcGFkZGluZyBmb3IgbGFzdCBibG9jaworCSAqIEBwYXJhbSBtb2RlIG1vZGUgc2VsZWN0aW9uIChDdXJyZW50bHkgRUNCIG9yIENCQyBtb2RlIG9ubHkpCisJICogQHBhcmFtIGl2IEluaXRpYWxpc2F0aW9uIFZlY3RvciB0byBiZSB1c2VkLiAgTlVMTCBpZiBvbmUgaXMKKwkgKiBub3QgcmVxdWlyZWQsIG9yIGlmIElWIHdpbGwgYmUgc2V0IGZyb20gZGF0YSBzdHJlYW0KKwkgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBpbml0aWFsaXNhdGlvbiBzdWNjZWVkZWQuCisJICovCisKKwl2aXJ0dWFsIGJvb2wgZGVjcnlwdEluaXQoYm9vbCBkb1BhZCA9IHRydWUsCisJCQkJCQkJIFN5bW1ldHJpY0tleU1vZGUgbW9kZSA9IE1PREVfQ0JDLAorCQkJCQkJCSBjb25zdCB1bnNpZ25lZCBjaGFyICogaXYgPSBOVUxMKTsKKworCS8qKgorCSAqIFxicmllZiBDb250aW51ZSBhbiBkZWNyeXB0IG9wZXJhdGlvbiB1c2luZyB0aGlzIGtleS4KKwkgKgorCSAqIERlY3J5cHRpb24gbXVzdCBoYXZlIGJlZW4gc2V0IHVwIHVzaW5nIGFuIGVuY3J5cHRJbml0CisJICogY2FsbC4gIFRha2VzIHRoZSBpbkJ1ZiBhbmQgY29udGludWVzIGEgZGVjcnlwdGlvbiBvcGVyYXRpb24sCisJICogd3JpdGluZyB0aGUgb3V0cHV0IHRvIG91dEJ1Zi4KKwkgKgorCSAqIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgaGF2ZSB0byBndWFyYW50ZWUgdGhhdCBhbGwgaW5wdXQKKwkgKiB3aWxsIGJlIGRlY3J5cHRlZC4gIEluIGNhc2VzIHdoZXJlIHRoZSBpbnB1dCBpcyBub3QgYSBsZW5ndGgKKwkgKiBvZiB0aGUgYmxvY2sgc2l6ZSwgdGhlIGltcGxlbWVudGF0aW9uIHdpbGwgbmVlZCB0byBob2xkIGJhY2sKKwkgKiBjaXBoZXItdGV4dCB0byBiZSBoYW5kbGVzIGR1cmluZyB0aGUgbmV4dCBvcGVyYXRpb24uCisJICoKKwkgKiBAbm90ZSBXaGlsZSBtYXhPdXRMZW5ndGggaXMgZGVmaW5lZCwgdGhlIFdpbkNBUEkgbGlicmFyeSB3aWxsCisJICogbm90IHJlYWQgdGhlIHZhbHVlLCBzbyB0aGUgb251cyBpcyBvbiB0aGUgY2FsbGVyIHRvIGVuc3VyZSB0aGUKKwkgKiBidWZmZXIgaXMgbG9uZyBlbm91Z2ggdG8gaG9sZCB0aGUgb3V0cHV0IQorCSAqCisJICogQHBhcmFtIGluQnVmIE9jdGV0cyB0byBiZSBkZWNyeXB0ZWQKKwkgKiBAcGFyYW0gcGxhaW5CdWYgQnVmZmVyIHRvIHBsYWNlIG91dHB1dCBpbgorCSAqIEBwYXJhbSBpbkxlbmd0aCBOdW1iZXIgb2YgYnl0ZXMgdG8gZGVjcnlwdAorCSAqIEBwYXJhbSBtYXhPdXRMZW5ndGggTWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG8gcGxhY2UgaW4gb3V0cHV0IAorCSAqIGJ1ZmZlcgorCSAqIEByZXR1cm5zIEJ5dGVzIHBsYWNlZCBpbiBvdXRwdXQgQnVmZmVyCisJICovCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCBkZWNyeXB0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBpbkJ1ZiwgCisJCQkJCQkJCSB1bnNpZ25lZCBjaGFyICogcGxhaW5CdWYsIAorCQkJCQkJCQkgdW5zaWduZWQgaW50IGluTGVuZ3RoLAorCQkJCQkJCQkgdW5zaWduZWQgaW50IG1heE91dExlbmd0aCk7CisKKwkvKioKKwkgKiBcYnJpZWYgRmluaXNoIGEgZGVjcnlwdGlvbiBvcGVyYXRpb24KKwkgKgorCSAqIENvbXBsZXRlIGEgZGVjcnlwdGlvbiBwcm9jZXNzLiAgTm8gY2lwaGVyIHRleHQgaXMgcGFzc2VkIGluLAorCSAqIGFzIHRoaXMgc2hvdWxkIHNpbXBseSBiZSByZW1vdmluZyBhbnkgcmVtYWluaW5nIHRleHQgZnJvbQorCSAqIHRoZSBwbGFpbiBzdG9yYWdlIGJ1ZmZlci4KKwkgKgorCSAqIE1heSB0aHJvdyBhbiBleGNlcHRpb24gaWYgdGhlcmUgaXMgc29tZSBzdG9yZWQgY2lwaGVyIHRleHQKKwkgKiB0aGF0IGlzIG5vdCB0aGUgbGVuZ3RoIG9mIHRoZSBibG9jayBzaXplIGZvciBibG9jayBhbGdvcml0aG1zLgorCSAqCisJICogQG5vdGUgV2hpbGUgbWF4T3V0TGVuZ3RoIGlzIGRlZmluZWQsIHRoZSBXaW5DQVBJIGxpYnJhcnkgd2lsbAorCSAqIG5vdCByZWFkIHRoZSB2YWx1ZSwgc28gdGhlIG9udXMgaXMgb24gdGhlIGNhbGxlciB0byBlbnN1cmUgdGhlCisJICogYnVmZmVyIGlzIGxvbmcgZW5vdWdoIHRvIGhvbGQgdGhlIG91dHB1dCEKKwkgKgorCSAqIEBwYXJhbSBwbGFpbkJ1ZiBCdWZmZXIgdG8gcGxhY2UgYW55IHJlbWFpbmluZyBwbGFpbiB0ZXh0IGluCisJICogQHBhcmFtIG1heE91dExlbmd0aCBNYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byBwYWNlIGluIG91dHB1dAorCSAqIEByZXR1cm5zIEJ5dGVzIHBsYWNlZCBpbiBvdXRwdXQgYnVmZmVyCisJICovCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCBkZWNyeXB0RmluaXNoKHVuc2lnbmVkIGNoYXIgKiBwbGFpbkJ1ZiwKKwkJCQkJCQkJCSAgIHVuc2lnbmVkIGludCBtYXhPdXRMZW5ndGgpOworCisJLyoqCisJICogXGJyaWVmIEluaXRpYWxpc2UgYW4gZW5jcnlwdGlvbiBwcm9jZXNzCisJICoKKwkgKiBTZXR1cCB0aGUga2V5IHRvIGdldCByZWFkeSBmb3IgYSBkZWNyeXB0aW9uIHNlc3Npb24uCisJICogQ2FsbGVycyBjYW4gcGFzcyBpbiBhbiBJVi4gIElmIG9uZSBpcyBub3QgcHJvdmlkZWQsIAorCSAqIGJ1dCB0aGUgYWxnb3JpdGhtIHJlcXVpcmVzIG9uZSAoZS5nLiAzREVTX0NCQyksIHRoZW4KKwkgKiBpbXBsZW1lbnRhdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGdlbmVyYXRlIG9uZS4KKwkgKgorCSAqIEBwYXJhbSBkb1BhZCBCeSBkZWZhdWx0LCB3ZSBwZXJmb3JtIHBhZGRpbmcgZm9yIGxhc3QgYmxvY2sKKwkgKiBAcGFyYW0gbW9kZSBXaGF0IG1vZGUgdG8gaGFuZGxlIGJsb2NrcyAoQ3VycmVudGx5IENCQyBvciBFQ0IpCisJICogQHBhcmFtIGl2IEluaXRpYWxpc2F0aW9uIFZlY3RvciB0byBiZSB1c2VkLiAgTlVMTCBpZiBvbmUgaXMKKwkgKiBub3QgcmVxdWlyZWQsIG9yIGlmIElWIGlzIHRvIGJlIGdlbmVyYXRlZAorCSAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGluaXRpYWxpc2F0aW9uIHN1Y2NlZWRlZC4KKwkgKi8KKworCXZpcnR1YWwgYm9vbCBlbmNyeXB0SW5pdChib29sIGRvUGFkID0gdHJ1ZSwgCisJCQkJCQkJIFN5bW1ldHJpY0tleU1vZGUgbW9kZSA9IE1PREVfQ0JDLAorCQkJCQkJCSBjb25zdCB1bnNpZ25lZCBjaGFyICogaXYgPSBOVUxMKTsKKworCS8qKgorCSAqIFxicmllZiBDb250aW51ZSBhbiBlbmNyeXB0aW9uIG9wZXJhdGlvbiB1c2luZyB0aGlzIGtleS4KKwkgKgorCSAqIEVuY3J5cHRpb24gbXVzdCBoYXZlIGJlZW4gc2V0IHVwIHVzaW5nIGFuIGVuY3J5cHRJbml0CisJICogY2FsbC4gIFRha2VzIHRoZSBpbkJ1ZiBhbmQgY29udGludWVzIGEgZW5jcnlwdGlvbiBvcGVyYXRpb24sCisJICogd3JpdGluZyB0aGUgb3V0cHV0IHRvIG91dEJ1Zi4KKwkgKgorCSAqIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgaGF2ZSB0byBndWFyYW50ZWUgdGhhdCBhbGwgaW5wdXQKKwkgKiB3aWxsIGJlIGVuY3J5cHRlZC4gIEluIGNhc2VzIHdoZXJlIHRoZSBpbnB1dCBpcyBub3QgYSBsZW5ndGgKKwkgKiBvZiB0aGUgYmxvY2sgc2l6ZSwgdGhlIGltcGxlbWVudGF0aW9uIHdpbGwgbmVlZCB0byBob2xkIGJhY2sKKwkgKiBwbGFpbi10ZXh0IHRvIGJlIGhhbmRsZWQgZHVyaW5nIHRoZSBuZXh0IG9wZXJhdGlvbi4KKwkgKgorCSAqIEBwYXJhbSBpbkJ1ZiBPY3RldHMgdG8gYmUgZW5jcnlwdGVkCisJICogQHBhcmFtIGNpcGhlckJ1ZiBCdWZmZXIgdG8gcGxhY2Ugb3V0cHV0IGluCisJICogQHBhcmFtIGluTGVuZ3RoIE51bWJlciBvZiBieXRlcyB0byBlbmNyeXB0CisJICogQHBhcmFtIG1heE91dExlbmd0aCBNYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byBwbGFjZSBpbiBvdXRwdXQgCisJICogYnVmZmVyCisJICogQHJldHVybnMgQnl0ZXMgcGxhY2VkIGluIG91dHB1dCBCdWZmZXIKKwkgKi8KKworCXZpcnR1YWwgdW5zaWduZWQgaW50IGVuY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqIGluQnVmLCAKKwkJCQkJCQkJIHVuc2lnbmVkIGNoYXIgKiBjaXBoZXJCdWYsIAorCQkJCQkJCQkgdW5zaWduZWQgaW50IGluTGVuZ3RoLAorCQkJCQkJCQkgdW5zaWduZWQgaW50IG1heE91dExlbmd0aCk7CisKKwkvKioKKwkgKiBcYnJpZWYgRmluaXNoIGEgZW5jcnlwdGlvbiBvcGVyYXRpb24KKwkgKgorCSAqIENvbXBsZXRlIGEgZW5jcnlwdGlvbiBwcm9jZXNzLiAgTm8gcGxhaW4gdGV4dCBpcyBwYXNzZWQgaW4sCisJICogYXMgdGhpcyBzaG91bGQgc2ltcGx5IGJlIHJlbW92aW5nIGFueSByZW1haW5pbmcgdGV4dCBmcm9tCisJICogdGhlIHBsYWluIHN0b3JhZ2UgYnVmZmVyIGFuZCBjcmVhdGluZyBhIGZpbmFsIHBhZGRlZCBibG9jay4KKwkgKgorCSAqIFBhZGRpbmcgaXMgcGVyZm9ybWVkIGJ5IHRha2luZyB0aGUgcmVtYWluaW5nIGJsb2NrLCBhbmQKKwkgKiBzZXR0aW5nIHRoZSBsYXN0IGJ5dGUgdG8gZXF1YWwgdGhlIG51bWJlciBvZiBieXRlcyBvZgorCSAqIHBhZGRpbmcuICBJZiB0aGUgcGxhaW4gd2FzIGFuIGV4YWN0IG11bHRpcGxlIG9mIHRoZSBibG9jayBzaXplLAorCSAqIHRoZW4gYW4gZXh0cmEgYmxvY2sgb2YgcGFkZGluZyB3aWxsIGJlIHVzZWQuICBGb3IgZXhhbXBsZSwgaWYgCisJICogdGhlIGJsb2NrIHNpemUgaXMgOCBieXRlcywgYW5kIHRoZXJlIHdlcmUgdGhyZWUgcmVtYWluaW5nIHBsYWluCisJICogdGV4dCBieXRlcyAoMHgwMSwgMHgwMiBhbmQgMHgwMyksIHRoZSBmaW5hbCBibG9jayB3aWxsIGJlIDoKKwkgKgorCSAqIDB4MDEwMjAzPz8/Pz8/Pz8wNQorCSAqCisJICogQHBhcmFtIHBsYWluQnVmIEJ1ZmZlciB0byBwbGFjZSBmaW5hbCBibG9jayBvZiBjaXBoZXIgdGV4dCBpbgorCSAqIEBwYXJhbSBtYXhPdXRMZW5ndGggTWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG8gcGFjZSBpbiBvdXRwdXQKKwkgKiBAcmV0dXJucyBCeXRlcyBwbGFjZWQgaW4gb3V0cHV0IGJ1ZmZlcgorCSAqLworCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgZW5jcnlwdEZpbmlzaCh1bnNpZ25lZCBjaGFyICogcGxhaW5CdWYsCisJCQkJCQkJCQkgICB1bnNpZ25lZCBpbnQgbWF4T3V0TGVuZ3RoKTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBXaW5kb3dzIHV0aWxpdHkgZnVuY3Rpb25zICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIHN5bW1ldHJpYyBrZXkgZnJvbSBhIG9jdGV0IHN0cmluZworCSAqCisJICogVXNlcyB0aGUgQXBhY2hlS2V5U3RvcmUgdG8gd3JhcCBhbiBvY3RldCBzdHJpbmcgaW4gYSBwdWJsaWMga2V5CisJICogYW5kIHRoZW4gbG9hZCBpdCBpbnRvIHRoZSBBcGFjaGUgS2V5IENvbnRhaW5lciB3aXRoaW4gdGhlIGRlZmluZWQgCisJICogQ1NQCisJICoKKwkgKiBAcGFyYW0ga2V5IFRoZSBidWZmZXIgb2YgYnl0ZXMgdG8gbG9hZCBmcm9tCisJICogQHBhcmFtIGtleUxlbiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGxvYWQKKwkgKiBAcGFyYW0gdHlwZSBUaGUga2V5IHR5cGUgdG8gY3JlYXRlIGZyb20gdGhlIGJ5dGVzCisJICogQHBhcmFtIHByb3YgSWYgTlVMTCwgaWdub3JlZC4gIElmIG5vbi1udWxsLCBidXQgKnByb3YgPT0gMCwgdGhlCisJICogZnVuY3Rpb24gd2lsbCB1c2UgYW4gaW50ZXJuYWwgaGFuZGxlIHRvIGEgQ1NQIGFuZCByZXR1cm4gdGhlIHZhbHVlCisJICogaW4gKnByb3YuICBJZiAqcHJvdiAhPSAwLCB1c2UgY29udGVudHMgb2YgKnByb3YgYXMgdGhlIHByb3ZpZGVyIHRvCisJICogbG9hZCB0aGUga2V5IGludG8uICBOT1RFIC0gVGhlIHByb3ZpZGVyIDxlbT5tdXN0PC9lbT4gaGF2ZSBhCisJICogQVRfS0VZRVhDSEFOR0Uga2V5IHBhaXIgYXZhaWxhYmxlLgorCSAqIEByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUga2V5IG9yIDAgb24gZmFpbHVyZQorCSAqLworCisJc3RhdGljIEhDUllQVEtFWSBjcmVhdGVXaW5kb3dzS2V5KGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBrZXksIAorCQkJCQkJCQkJICB1bnNpZ25lZCBpbnQga2V5TGVuLCAKKwkJCQkJCQkJCSAgWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6U3ltbWV0cmljS2V5VHlwZSB0eXBlLAorCQkJCQkJCQkJICBIQ1JZUFRQUk9WICogcHJvdik7CisKKworCitwcml2YXRlOgorCisJLy8gVW5pbXBsZW1lbnRlZCBjb25zdHJ1Y3RvcnMKKwkKKwlXaW5DQVBJQ3J5cHRvU3ltbWV0cmljS2V5KCk7CisJV2luQ0FQSUNyeXB0b1N5bW1ldHJpY0tleShjb25zdCBXaW5DQVBJQ3J5cHRvU3ltbWV0cmljS2V5ICYpOworCVdpbkNBUElDcnlwdG9TeW1tZXRyaWNLZXkgJiBvcGVyYXRvcj0gKGNvbnN0IFdpbkNBUElDcnlwdG9TeW1tZXRyaWNLZXkgJik7CisKKwlpbnQgZGVjcnlwdEN0eEluaXQoY29uc3QgdW5zaWduZWQgY2hhciAqIGl2KTsKKwl2b2lkIGVuY3J5cHRDdHhJbml0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBpdik7CisKKwkvLyBQcml2YXRlIHZhcmlhYmxlcworCVN5bW1ldHJpY0tleVR5cGUJCQkJbV9rZXlUeXBlOworCVN5bW1ldHJpY0tleU1vZGUJCQkJbV9rZXlNb2RlOwkJLy8gRUNCIG9yIENCQworCXNhZmVCdWZmZXIJCQkJCQltX2tleUJ1ZjsJCS8vIEhvbGRlciBvZiB0aGUga2V5CisJdW5zaWduZWQgaW50CQkJCQltX2tleUxlbjsKKwlib29sCQkJCQkJCW1faW5pdGlhbGlzZWQ7CisJYm9vbAkJCQkJCQltX2RvUGFkOworCisJdW5zaWduZWQgY2hhcgkJCQkJbV9sYXN0QmxvY2tbV0lOQ0FQSV9NQVhfQkxPQ0tfU0laRV07CisJdW5zaWduZWQgaW50CQkJCQltX2J5dGVzSW5MYXN0QmxvY2s7CisJdW5zaWduZWQgaW50CQkJCQltX2Jsb2NrU2l6ZTsKKwl1bnNpZ25lZCBpbnQJCQkJCW1faXZTaXplOworCisJSENSWVBUUFJPVgkJCQkJCW1fcDsKKwlIQ1JZUFRLRVkJCQkJCQltX2s7CisKK307CisKKyNlbmRpZiAvKiBIQVZFX1dJTkNBUEkgKi8KKyNlbmRpZiAvKiBXSU5DQVBJQ1JZUFRPU1lNTUVUUklDS0VZX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9YNTA5LmNwcCBiL2Mvc3JjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9YNTA5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDE0YTdmCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b1g1MDkuY3BwCkBAIC0wLDAgKzEsMjA4IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBXaW5DQVBJQ3J5cHRvWDUwOTo9IFdpbmRvd3MgQ0FQSSBiYXNlZCBjbGFzcyBmb3IgaGFuZGxpbmcgWDUwOSAoVjMpIGNlcnRpZmljYXRlcworICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b1Byb3ZpZGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9YNTA5LmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9LZXlEU0EuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b0tleVJTQS5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b0V4Y2VwdGlvbi5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNDcnlwdC9YU0NyeXB0Q3J5cHRvQmFzZTY0LmhwcD4KKworI2lmIGRlZmluZWQgKEhBVkVfV0lOQ0FQSSkKKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9KYW5pdG9yLmhwcD4KKworWFNFQ19VU0lOR19YRVJDRVMoQXJyYXlKYW5pdG9yKTsKKworV2luQ0FQSUNyeXB0b1g1MDk6OldpbkNBUElDcnlwdG9YNTA5KEhDUllQVFBST1YgcHJvdlJTQSwgSENSWVBUUFJPViBwcm92RFNTKSA6CittX0RFUlg1MDkoIiIpLCBtcF9jZXJ0Q29udGV4dChOVUxMKSwgbV9wUlNBKHByb3ZSU0EpLCBtX3BEU1MocHJvdkRTUykgeyAKKworCit9CisKK1dpbkNBUElDcnlwdG9YNTA5OjpXaW5DQVBJQ3J5cHRvWDUwOShQQ0NFUlRfQ09OVEVYVCBwQ2VydENvbnRleHQsCisJCQkJCQkJCQkgSENSWVBUUFJPViBwcm92UlNBLCBIQ1JZUFRQUk9WIHByb3ZEU1MpIDoKK21fcFJTQShwcm92UlNBKSwgbV9wRFNTKHByb3ZEU1MpIHsKKworCS8vIEJ1aWxkIHRoaXMgZnJvbSBhbiBleGlzdGluZyBQQ0NFUlRfQ09OVEVYVCBzdHJ1Y3R1cmUKKworCW1wX2NlcnRDb250ZXh0ID0gcENlcnRDb250ZXh0OworCisJdW5zaWduZWQgY2hhciAqIGVuY0NlcnQ7CisJdW5zaWduZWQgbG9uZyBsZW4gPSBtcF9jZXJ0Q29udGV4dC0+Y2JDZXJ0RW5jb2RlZCAqIDI7CisJWFNFQ25ldyhlbmNDZXJ0LCB1bnNpZ25lZCBjaGFyIFtsZW5dKTsKKwlBcnJheUphbml0b3I8dW5zaWduZWQgY2hhcj4gal9lbmNDZXJ0KGVuY0NlcnQpOworCisJLy8gQmFzZTY0IEVuY29kZQorCVhTQ3J5cHRDcnlwdG9CYXNlNjQgYjY0OworCisJYjY0LmVuY29kZUluaXQoKTsKKwl1bnNpZ25lZCBsb25nIGVuY0NlcnRMZW4gPSBiNjQuZW5jb2RlKG1wX2NlcnRDb250ZXh0LT5wYkNlcnRFbmNvZGVkLCBtcF9jZXJ0Q29udGV4dC0+Y2JDZXJ0RW5jb2RlZCwgZW5jQ2VydCwgbGVuKTsKKwllbmNDZXJ0TGVuICs9IGI2NC5lbmNvZGVGaW5pc2goJmVuY0NlcnRbZW5jQ2VydExlbl0sIGxlbiAtIGVuY0NlcnRMZW4pOworCisJLy8gQ2hlY2sgdGhlIHJlc3VsdAorCWlmIChlbmNDZXJ0ID09IE5VTEwpIHsKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpYNTA5RXJyb3IsCisJCQkiV2luQ0FQSVg1MDk6V2luQ0FQSVg1MDkgLSBFcnJvciBlbmNvZGluZyBjZXJ0aWZpY2F0ZSIpOworCX0KKworCW1fREVSWDUwOS5zYk1lbWNweUluKGVuY0NlcnQsIGVuY0NlcnRMZW4pOworCW1fREVSWDUwOVtlbmNDZXJ0TGVuXSA9ICdcMCc7CisKK30KKworV2luQ0FQSUNyeXB0b1g1MDk6On5XaW5DQVBJQ3J5cHRvWDUwOSgpIHsKKworCWlmIChtcF9jZXJ0Q29udGV4dCAhPSBOVUxMKQorCQlDZXJ0RnJlZUNlcnRpZmljYXRlQ29udGV4dChtcF9jZXJ0Q29udGV4dCk7CisKK30KKworLy8gbG9hZCBmdW5jdGlvbnMKKwordm9pZCBXaW5DQVBJQ3J5cHRvWDUwOTo6bG9hZFg1MDlCYXNlNjRCaW4oY29uc3QgY2hhciAqIGJ1ZiwgdW5zaWduZWQgaW50IGxlbikgeworCisJdW5zaWduZWQgY2hhciAqIHJhd0NlcnQ7CisJWFNFQ25ldyhyYXdDZXJ0LCB1bnNpZ25lZCBjaGFyIFtsZW5dKTsKKwlBcnJheUphbml0b3I8dW5zaWduZWQgY2hhcj4gal9yYXdDZXJ0KHJhd0NlcnQpOworCisJLy8gQmFzZTY0IERlY29kZQorCVhTQ3J5cHRDcnlwdG9CYXNlNjQgYjY0OworCisJYjY0LmRlY29kZUluaXQoKTsKKwl1bnNpZ25lZCBpbnQgcmF3Q2VydExlbiA9IGI2NC5kZWNvZGUoKHVuc2lnbmVkIGNoYXIgKikgYnVmLCBsZW4sIHJhd0NlcnQsIGxlbik7CisJcmF3Q2VydExlbiArPSBiNjQuZGVjb2RlRmluaXNoKCZyYXdDZXJ0W3Jhd0NlcnRMZW5dLCBsZW4gLSByYXdDZXJ0TGVuKTsKKworCS8vIE5vdyBsb2FkIGNlcnRpZmljYXRlIGludG8gV2luMzIgQ1NQCisKKwltcF9jZXJ0Q29udGV4dCA9IENlcnRDcmVhdGVDZXJ0aWZpY2F0ZUNvbnRleHQoCisJCVg1MDlfQVNOX0VOQ09ESU5HLAorCQlyYXdDZXJ0LAorCQlyYXdDZXJ0TGVuKTsKKworCWlmIChtcF9jZXJ0Q29udGV4dCA9PSAwKSB7CisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6WDUwOUVycm9yLAorCQkJIldpbkNBUElYNTA5OmxvYWRYNTA5QmFzZTY0QmluIC0gRXJyb3IgZGVjb2RpbmcgY2VydGlmaWNhdGUiKTsKKwl9CisKKworCW1fREVSWDUwOS5zYk1lbWNweUluKGJ1ZiwgbGVuKTsKKwltX0RFUlg1MDlbbGVuXSA9ICdcMCc7CisKK30KKworLy8gSW5mbyBmdW5jdGlvbnMKKworWFNFQ0NyeXB0b0tleTo6S2V5VHlwZSBXaW5DQVBJQ3J5cHRvWDUwOTo6Z2V0UHVibGljS2V5VHlwZSgpIGNvbnN0IHsKKworCWlmIChtcF9jZXJ0Q29udGV4dCA9PSBOVUxMKSB7CisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6WDUwOUVycm9yLAorCQkJIldpbkNBUEk6WDUwOSAtIGdldFB1YmxpY0tleVR5cGUgY2FsbGVkIGJlZm9yZSBYNTA5IGxvYWRlZCIpOworCX0KKworCWlmIChsc3RyY21wKG1wX2NlcnRDb250ZXh0LT5wQ2VydEluZm8tPlN1YmplY3RQdWJsaWNLZXlJbmZvLkFsZ29yaXRobS5wc3pPYmpJZCwgQ1JZUFRPX09JRF9EU0EpID09IDApCisJCXJldHVybiBYU0VDQ3J5cHRvS2V5OjpLRVlfRFNBX1BVQkxJQzsKKworCWlmIChsc3RyY21wKG1wX2NlcnRDb250ZXh0LT5wQ2VydEluZm8tPlN1YmplY3RQdWJsaWNLZXlJbmZvLkFsZ29yaXRobS5wc3pPYmpJZCwgc3pPSURfUlNBX1JTQSkgPT0gMCkKKwkJcmV0dXJuIFhTRUNDcnlwdG9LZXk6OktFWV9SU0FfUFVCTElDOworCisJcmV0dXJuIFhTRUNDcnlwdG9LZXk6OktFWV9OT05FOworCit9CisJCQorCisvLyBHZXQgZnVuY3Rpb25zCitYU0VDQ3J5cHRvS2V5ICogV2luQ0FQSUNyeXB0b1g1MDk6OmNsb25lUHVibGljS2V5KCkgY29uc3QgeworCisKKwlpZiAobXBfY2VydENvbnRleHQgPT0gTlVMTCkgeworCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Olg1MDlFcnJvciwKKwkJCSJXaW5DQVBJOlg1MDkgLSBjbG9uZVB1YmxpY0tleSBjYWxsZWQgYmVmb3JlIFg1MDkgbG9hZGVkIik7CisJfQorCisJLy8gSW1wb3J0IHRoZSBrZXkgaW50byB0aGUgcHJvdmlkZXIgdG8gZ2V0IGEgcG9pbnRlciB0byB0aGUga2V5CisKKwlIQ1JZUFRLRVkga2V5OworCUJPT0wgZlJlc3VsdDsKKyAgICAgICAgICAgICAgICAgCisJaWYgKGdldFB1YmxpY0tleVR5cGUoKSA9PSBYU0VDQ3J5cHRvS2V5OjpLRVlfRFNBX1BVQkxJQykgeworCisJCWZSZXN1bHQ9IENyeXB0SW1wb3J0UHVibGljS2V5SW5mbygKKwkJCSAgIG1fcERTUywKKwkJCSAgIFg1MDlfQVNOX0VOQ09ESU5HLAorCQkJICAgJihtcF9jZXJ0Q29udGV4dC0+cENlcnRJbmZvLT5TdWJqZWN0UHVibGljS2V5SW5mbyksCisJCQkgICAma2V5KTsKKyAgICAgICAgICAgICAgICAgCisKKwkJaWYgKGZSZXN1bHQgPT0gRkFMU0UpIHsKKwkJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6WDUwOUVycm9yLAorCQkJCSJXaW5DQVBJOlg1MDkgLSBFcnJvciBsb2FkaW5nIHB1YmxpYyBrZXkgaW5mbyBmcm9tIGNlcnRpZmljYXRlIik7CisJCX0KKworCQkvLyBOb3cgdGhhdCB3ZSBoYXZlIGEgaGFuZGxlIGZvciB0aGUgRFNBIGtleSwgY3JlYXRlIGEgRFNBIEtleSBvYmplY3QgdG8KKwkJLy8gd3JhcCBpdCBpbgorCisJCVdpbkNBUElDcnlwdG9LZXlEU0EgKiByZXQ7CisJCVhTRUNuZXcocmV0LCBXaW5DQVBJQ3J5cHRvS2V5RFNBKG1fcERTUywga2V5KSk7CisKKwkJcmV0dXJuIHJldDsKKworCX0KKworCWlmIChnZXRQdWJsaWNLZXlUeXBlKCkgPT0gWFNFQ0NyeXB0b0tleTo6S0VZX1JTQV9QVUJMSUMpIHsKKworCQlmUmVzdWx0PSBDcnlwdEltcG9ydFB1YmxpY0tleUluZm8oCisJCQkgICBtX3BSU0EsCisJCQkgICBYNTA5X0FTTl9FTkNPRElORywKKwkJCSAgICYobXBfY2VydENvbnRleHQtPnBDZXJ0SW5mby0+U3ViamVjdFB1YmxpY0tleUluZm8pLAorCQkJICAgJmtleSk7CisgICAgICAgICAgICAgICAgIAorCisJCWlmIChmUmVzdWx0ID09IEZBTFNFKSB7CisJCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246Olg1MDlFcnJvciwKKwkJCQkiV2luQ0FQSTpYNTA5IC0gRXJyb3IgbG9hZGluZyBwdWJsaWMga2V5IGluZm8gZnJvbSBjZXJ0aWZpY2F0ZSIpOworCQl9CisKKwkJLy8gTm93IHRoYXQgd2UgaGF2ZSBhIGhhbmRsZSBmb3IgdGhlIERTQSBrZXksIGNyZWF0ZSBhIERTQSBLZXkgb2JqZWN0IHRvCisJCS8vIHdyYXAgaXQgaW4KKworCQlXaW5DQVBJQ3J5cHRvS2V5UlNBICogcmV0OworCQlYU0VDbmV3KHJldCwgV2luQ0FQSUNyeXB0b0tleVJTQShtX3BSU0EsIGtleSkpOworCisJCXJldHVybiByZXQ7CisKKwl9CisKKwlyZXR1cm4gTlVMTDsJCS8vIFVua25vd24ga2V5IHR5cGUsIGJ1dCBub3QgbmVjZXNzYXJpbHkgYW4gZXJyb3IKKworfQorCisjZW5kaWYgLyogSEFWRV9XSU5DQVBJICovCisKKwpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b1g1MDkuaHBwIGIvYy9zcmMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b1g1MDkuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhYzM2MDEKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvWDUwOS5ocHAKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFdpbkNBUElDcnlwdG9YNTA5Oj0gV2luZG93cyBDQVBJIGJhc2VkIGNsYXNzIGZvciBoYW5kbGluZyBYNTA5IChWMykgY2VydGlmaWNhdGVzCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFdJTkNBUElDUllQVE9YNTA5X0lOQ0xVREUKKyNkZWZpbmUgV0lOQ0FQSUNSWVBUT1g1MDlfSU5DTFVERQorCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9YNTA5LmhwcD4KKworI2lmIGRlZmluZWQgKEhBVkVfV0lOQ0FQSSkKKworI2RlZmluZSBfV0lOMzJfV0lOTlQgMHgwNDAwCisjaW5jbHVkZSA8d2luY3J5cHQuaD4KKworY2xhc3MgV2luQ0FQSUNyeXB0b1Byb3ZpZGVyOworCisvKioKKyAqIFxicmllZiBXaW5DQVBJIGltcGxlbWVudGF0aW9uIGNsYXNzIGZvciBpbnRlcmZhY2UgZm9yIFg1MDkgY2VydGlmaWNhdGVzLgorICogQGluZ3JvdXAgd2luY2FwaWNyeXB0bworICoKKyAqIFRoZSBsaWJyYXJ5IHVzZXMgY2xhc3NlcyBkZXJpdmVkIGZyb20gdGhpcyB0byBwcm9jZXNzIFg1MDkgQ2VydGlmaWNhdGVzLgorICoKKyAqLworCitjbGFzcyBEU0lHX0VYUE9SVCBXaW5DQVBJQ3J5cHRvWDUwOSA6IHB1YmxpYyBYU0VDQ3J5cHRvWDUwOSB7CisKK3B1YmxpYyA6CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBDb25zdHJ1Y3RvciBmb3IgWDUwOSBvYmplY3RzCisJICoKKwkgKiBUaGUgd2luZG93cyBjb25zdHJ1Y3RvciByZXF1aXJlcyBSU0Egb3IgRFNTIGNyeXB0byBwcm92aWRlcnMsIAorCSAqIGRlcGVuZGluZyBvbiB0aGUga2V5IHR5cGUgd2l0aGluIHRoZSBjZXJ0LgorCSAqCisJICogQHBhcmFtIHByb3ZSU0EgQSBoYW5kbGUgdG8gdGhlIFBST1ZfUlNBX0ZVTEwgdHlwZSBwcm92aWRlciB0aGF0IHRoZQorCSAqIGludGVyZmFjZSBzaG91bGQgdXNlIHdoZW4gaW1wb3J0aW5nIGtleXMgYW5kIG1hbmlwdWxhdGluZyBjZXJ0cworCSAqIEBwYXJhbSBwcm92RFNTIEEgaGFuZGxlIHRvIHRoZSBQUk9WX0RTUyB0eXBlIHByb3ZpZGVyIHRoYXQgdGhlCisJICogaW50ZXJmYWNlIHNob3VsZCB1c2Ugd2hlbiBpbXBvcnRpbmcga2V5cyBhbmQgbWFuaXB1bGF0aW5nIGNlcnRzCisJICovCisKKwlXaW5DQVBJQ3J5cHRvWDUwOShIQ1JZUFRQUk9WIHByb3ZSU0EsIEhDUllQVFBST1YgcHJvdkRTUyk7CisKKwkvKioKKwkgKiBcYnJpZWYgQ29uc3RydWN0b3IgZm9yIFg1MDkgb2JqZWN0cworCSAqCisJICogQHBhcmFtIHBDZXJ0Q29udGV4dCBBIGNlcnRpZmljYXRlIGhhbmRsZQorCSAqIEBwYXJhbSBwcm92UlNBIEEgaGFuZGxlIHRvIHRoZSBQUk9WX1JTQV9GVUxMIHR5cGUgcHJvdmlkZXIgdGhhdCB0aGUKKwkgKiBpbnRlcmZhY2Ugc2hvdWxkIHVzZSB3aGVuIGltcG9ydGluZyBrZXlzIGFuZCBtYW5pcHVsYXRpbmcgY2VydHMKKwkgKiBAcGFyYW0gcHJvdkRTUyBBIGhhbmRsZSB0byB0aGUgUFJPVl9EU1MgdHlwZSBwcm92aWRlciB0aGF0IHRoZQorCSAqIGludGVyZmFjZSBzaG91bGQgdXNlIHdoZW4gaW1wb3J0aW5nIGtleXMgYW5kIG1hbmlwdWxhdGluZyBjZXJ0cworCSAqLworCisJV2luQ0FQSUNyeXB0b1g1MDkoUENDRVJUX0NPTlRFWFQgcENlcnRDb250ZXh0LAorCQkJSENSWVBUUFJPViBwcm92UlNBLCBIQ1JZUFRQUk9WIHByb3ZEU1MpOworCisJdmlydHVhbCB+V2luQ0FQSUNyeXB0b1g1MDkoKTsKKworCS8vQH0KKwkvKiogQG5hbWUgS2V5IEludGVyZmFjZSBtZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFJldHVybiB0aGUgdHlwZSBvZiB0aGUga2V5IHN0b3JlZCBpbiB0aGUgY2VydGlmaWNhdGUuCisJICoKKwkgKiBXaWxsIGV4dHJhY3QgdGhlIGtleSBmcm9tIHRoZSBjZXJ0aWZpY2F0ZSB0byByZXR1cm4gdGhlIGFwcHJvcHJpYXRlCisJICogdHlwZQorCSAqCisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXk6OktleVR5cGUgZ2V0UHVibGljS2V5VHlwZSgpIGNvbnN0OworCisJLyoqCisJICogXGJyaWVmIEdldCBhIGNvcHkgb2YgdGhlIHB1YmxpYyBrZXkuCisJICoKKwkgKiBFeHRyYWN0cyB0aGUgcHVibGljIGtleSBmcm9tIHRoZSBjZXJ0aWZpY2F0ZSBhbmQgcmV0dXJucyB0aGUgYXBwcm9wcmlhdGUKKwkgKiBXaW5DQVBJQ3J5cnB0b0tleSAoRFNBIG9yIFJTQSkgb2JqZWN0CisJICoKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0tleSAqIGNsb25lUHVibGljS2V5KCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJucyBhIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIGNyeXB0byBvd25lciBvZiB0aGlzIGxpYnJhcnkuCisJICovCisKKyAgICB2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0UHJvdmlkZXJOYW1lKCkgY29uc3Qge3JldHVybiBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJQUk9WV2luQ0FQSTt9CisKKwkvL0B9CisKKwkvKiogQG5hbWUgTG9hZCBhbmQgR2V0IHRoZSBjZXJ0aWZpY2F0ZSAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBMb2FkIGEgY2VydGlmaWNhdGUgaW50byB0aGUgb2JqZWN0LgorCSAqCisJICogVGFrZSBhIGJhc2U2NCBERVIgZW5jb2RlZCBjZXJ0aWZpY2F0ZSBhbmQgbG9hZC4KKwkgKgorCSAqIEBwYXJhbSBidWYgQSBidWZmZXIgY29udGFpbmluZyB0aGUgQmFzZTY0IGVuY29kZWQgY2VydGlmaWNhdGUKKwkgKiBAcGFyYW0gbGVuIFRoZSBudW1iZXIgb2YgYnl0ZXMgb2YgZGF0YSBpbiB0aGUgY2VydGlmaWNhdGUuCisJICovCisKKwl2aXJ0dWFsIHZvaWQgbG9hZFg1MDlCYXNlNjRCaW4oY29uc3QgY2hhciAqIGJ1ZiwgdW5zaWduZWQgaW50IGxlbik7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IGEgQmFzZTY0IERFUiBlbmNvZGVkIGNvcHkgb2YgdGhlIGNlcnRpZmljYXRlCisJICoKKwkgKiBAcmV0dXJucyBBIHNhZmVCdWZmZXIgY29udGFpbmluZyB0aGUgREVSIGVuY29kZWQgY2VydGlmaWNhdGUKKwkgKi8KKworCXZpcnR1YWwgc2FmZUJ1ZmZlciAmZ2V0REVSRW5jb2RpbmdTQih2b2lkKSB7cmV0dXJuIG1fREVSWDUwOTt9CisKKyAgICAvKioKKwkgKiBcYnJpZWYgR2V0IGEgQmFzZTY0IERFUiBlbmNvZGVkIGNvcHkgb2YgdGhlIGNlcnRpZmljYXRlCisJICoKKwkgKiBAcmV0dXJucyBBIHNhZmVCdWZmZXIgY29udGFpbmluZyB0aGUgREVSIGVuY29kZWQgY2VydGlmaWNhdGUKKwkgKi8KKworCXZpcnR1YWwgY29uc3Qgc2FmZUJ1ZmZlciAmZ2V0REVSRW5jb2RpbmdTQih2b2lkKSBjb25zdCB7cmV0dXJuIG1fREVSWDUwOTt9CisKKwkvL0B9CisKK3ByaXZhdGU6CisKKwlzYWZlQnVmZmVyCQkJCW1fREVSWDUwOTsKKwlQQ0NFUlRfQ09OVEVYVAkJCW1wX2NlcnRDb250ZXh0OworCisJSENSWVBUUFJPVgkJCQltX3BSU0E7CisJSENSWVBUUFJPVgkJCQltX3BEU1M7CisKK307CisKKyNlbmRpZiAvKiBIQVZFX1dJTkNBUEkgKi8KKyNlbmRpZiAvKiBXSU5DQVBJQ1JZUFRPWDUwOV9JTkNMVURFICovCisKZGlmZiAtLWdpdCBhL2Mvc3JjL2VuYy9YU0NyeXB0L1hTQ3J5cHRDcnlwdG9CYXNlNjQuY3BwIGIvYy9zcmMvZW5jL1hTQ3J5cHQvWFNDcnlwdENyeXB0b0Jhc2U2NC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWU4YTkxMgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9YU0NyeXB0L1hTQ3J5cHRDcnlwdG9CYXNlNjQuY3BwCkBAIC0wLDAgKzEsNDQwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDMtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYU0NyeXB0Q3J5cHRvQmFzZTY0IDo9IEludGVybmFsIGltcGxlbWVudGF0aW9uIG9mIGEgYmFzZTY0IAorICogZW5jb2Rlci9kZWNvZGVyCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9lbmMvWFNDcnlwdC9YU0NyeXB0Q3J5cHRvQmFzZTY0LmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvRXhjZXB0aW9uLmhwcD4KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBMb29rdXAgdGFibGVzIGFuZCBtYWNyb3MKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NoYXIgQmFzZTY0TG9va3VwVGFibGVbXSA9IHsKKwknQScsJ0InLCdDJywnRCcsJ0UnLCdGJywnRycsJ0gnLCdJJywnSicsJ0snLCdMJywnTScsCisJJ04nLCdPJywnUCcsJ1EnLCdSJywnUycsJ1QnLCdVJywnVicsJ1cnLCdYJywnWScsJ1onLAorCSdhJywnYicsJ2MnLCdkJywnZScsJ2YnLCdnJywnaCcsJ2knLCdqJywnaycsJ2wnLCdtJywKKwknbicsJ28nLCdwJywncScsJ3InLCdzJywndCcsJ3UnLCd2JywndycsJ3gnLCd5JywneicsCisJJzAnLCcxJywnMicsJzMnLCc0JywnNScsJzYnLCc3JywnOCcsJzknLCcrJywnLycsCit9OworCisjZGVmaW5lIElTX1VQUEVSKGMpIChjID49ICdBJyAmJiBjIDw9ICdaJykKKyNkZWZpbmUgSVNfTE9XRVIoYykgKGMgPj0gJ2EnICYmIGMgPD0gJ3onKQorI2RlZmluZSBJU19OVU1CUihjKSAoYyA+PSAnMCcgJiYgYyA8PSAnOScpCisjZGVmaW5lIElTX09USEVSKGMpIChjID09ICcrJyB8fCBjID09ICcvJykKKyNkZWZpbmUgSVNfQjY0Q0goYykgKElTX0xPV0VSKGMpIHx8IElTX1VQUEVSKGMpIHx8IElTX05VTUJSKGMpIHx8IElTX09USEVSKGMpKQorI2RlZmluZSBJU19CNjRPRShjKSAoSVNfQjY0Q0goYykgfHwgYyA9PSAnPScpCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgRGVjb2RpbmcKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3Vuc2lnbmVkIGNoYXIgZGVjb2RlQ2godW5zaWduZWQgY2hhciBjKSB7CisKKwlpZiAoSVNfVVBQRVIoYykpCisJCXJldHVybiBjIC0gJ0EnOworCisJaWYgKElTX0xPV0VSKGMpKQorCQlyZXR1cm4gKGMgLSAnYScpICsgMjY7CisKKwlpZiAoSVNfTlVNQlIoYykpCisJCXJldHVybiAoYyAtICcwJykgKyA1MjsKKworCWlmIChjID09ICcrJykKKwkJcmV0dXJuIDYyOworCWlmIChjID09ICcvJykKKwkJcmV0dXJuIDYzOworCisJaWYgKGMgPT0gJz0nKQorCQlyZXR1cm4gNjQ7CisKKwlyZXR1cm4gNjU7CQkvLyBlcnJvcjsKKworfQorCit2b2lkIFhTQ3J5cHRDcnlwdG9CYXNlNjQ6OmNhbm9uaWNhbGlzZUlucHV0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluRGF0YSwgCisJCQkJCQkJCQkJCXVuc2lnbmVkIGludCBpbkxlbmd0aCkgeworCisJLy8gQ2Fub25pY2FsaXNlIHRoZSBpbnB1dCBidWZmZXIgaW50byBtX2lucHV0QnVmZmVyCisKKwl1bnNpZ25lZCBjaGFyIGJ1Zls0MDBdOwkJCS8vIERvIDQwMCBieXRlcyBhdCBhIHRpbWUKKworCXVuc2lnbmVkIGludCBpLCBqOworCWogPSAwOworCisJZm9yIChpID0gMDsgaSA8IGluTGVuZ3RoOyArK2kpIHsKKworCQlpZiAoSVNfQjY0T0UoaW5EYXRhW2ldKSkgeworCisJCQkvLyBIYXZlIGEgYmFzZTY0IG9yICc9JyBjaGFyCisJCQlidWZbaisrXSA9IGluRGF0YVtpXTsKKworCQkJaWYgKGogPT0gNDAwKSB7CisJCQkJbV9pbnB1dEJ1ZmZlci5zYk1lbWNweUluKG1fcmVtYWluaW5nSW5wdXQsIGJ1ZiwgNDAwKTsKKwkJCQltX3JlbWFpbmluZ0lucHV0ICs9IDQwMDsKKwkJCQlqID0gMDsKKwkJCX0KKwkJfQorCX0KKworCWlmIChqID4gMCkgeworCQltX2lucHV0QnVmZmVyLnNiTWVtY3B5SW4obV9yZW1haW5pbmdJbnB1dCwgYnVmLCBqKTsKKwkJbV9yZW1haW5pbmdJbnB1dCArPSBqOworCX0KKworfQorCisKK3ZvaWQgWFNDcnlwdENyeXB0b0Jhc2U2NDo6ZGVjb2RlSW5pdCh2b2lkKSB7CisKKwltX3JlbWFpbmluZ0lucHV0ID0gbV9yZW1haW5pbmdPdXRwdXQgPSAwOworCW1fYWxsRG9uZSA9IGZhbHNlOworCW1fc3RhdGUgPSBCNjRfREVDT0RFOworCit9CisKK3Vuc2lnbmVkIGludCBYU0NyeXB0Q3J5cHRvQmFzZTY0OjpkZWNvZGUoY29uc3QgdW5zaWduZWQgY2hhciAqIGluRGF0YSwgCisJCQkJCQkgCSAgICB1bnNpZ25lZCBpbnQgaW5MZW5ndGgsCisJCQkJCQkJCXVuc2lnbmVkIGNoYXIgKiBvdXREYXRhLAorCQkJCQkJCQl1bnNpZ25lZCBpbnQgb3V0TGVuZ3RoKSB7CisKKworCS8vIEVuc3VyZSB3ZSBhcmUgaW4gYW4gYXBwcm9wcmlhdGUgc3RhdGUKKwlpZiAobV9zdGF0ZSAhPSBCNjRfREVDT0RFKSB7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpCYXNlNjRFcnJvciwKKwkJCSJYU0NyeXB0OkJhc2U2NCAtIEF0dGVtcHQgdG8gZGVjb2RlIHdoZW4gbm90IGluIGRlY29kZSBzdGF0ZSIpOworCQorCX0KKworCS8vIENvcHkgdGhlIGRhdGEgaW50byBvdXIgaW5wdXQgYnVmZmVyCisJY2Fub25pY2FsaXNlSW5wdXQoaW5EYXRhLCBpbkxlbmd0aCk7CisKKwl1bnNpZ25lZCBpbnQgaSA9IDA7CisJdW5zaWduZWQgY2hhciB0OworCisJd2hpbGUgKG1fYWxsRG9uZSAhPSB0cnVlICYmIG1fcmVtYWluaW5nSW5wdXQgLSBpID49IDQpIHsKKworCQkvLyBCWVRFIDEKKworCQl0ID0gZGVjb2RlQ2gobV9pbnB1dEJ1ZmZlcltpKytdKTsKKworCQlpZiAodCA+IDYzKSB7CisKKwkJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6QmFzZTY0RXJyb3IsCisJCQkiWFNDcnlwdDpCYXNlNjQgLSBJbnZhbGlkIGNoYXJhY3RlciBhdCBzdGFydCBvZiBiYXNlIDY0IGJsb2NrIik7CisKKwkJfQorCisJCW1fb3V0cHV0QnVmZmVyW21fcmVtYWluaW5nT3V0cHV0XSA9ICh0IDw8IDIpOworCisJCS8vIEJZVEUgMgorCisJCXQgPSBkZWNvZGVDaChtX2lucHV0QnVmZmVyW2krK10pOworCisJCWlmICh0ID4gNjMpIHsKKworCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpCYXNlNjRFcnJvciwKKwkJCSJYU0NyeXB0OkJhc2U2NCAtIEludmFsaWQgY2hhcmFjdGVyIGF0IHN0YXJ0IG9mIGJhc2UgNjQgYmxvY2siKTsKKworCQl9CisKKwkJLy8gVGFrZSB0b3AgdHdvIGJpdHMgYW5kIHBsYWNlIGF0IGVuZCBvZiBjdXJyZW50IGJ5dGUKKwkJbV9vdXRwdXRCdWZmZXJbbV9yZW1haW5pbmdPdXRwdXRdID0gbV9vdXRwdXRCdWZmZXJbbV9yZW1haW5pbmdPdXRwdXRdIHwKKwkJCSh0ID4+IDQpOworCisJCW1fcmVtYWluaW5nT3V0cHV0Kys7CQkvLyBIYXZlIGEgbmV3IGNvbXBsZXRlIGJ5dGUKKworCQkvLyBUYWtlIHJlbWFpbmluZyA0IGJpdHMgYW5kIGFkZCB0byBvdXRwdXRCdWZmZXIKKwkJbV9vdXRwdXRCdWZmZXJbbV9yZW1haW5pbmdPdXRwdXRdID0gKCB0IDw8IDQpOworCisJCS8vIEJZVEUgMworCisJCXQgPSBkZWNvZGVDaChtX2lucHV0QnVmZmVyW2krK10pOworCisJCWlmICh0ID4gNjQpIHsKKworCQkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpCYXNlNjRFcnJvciwKKwkJCSJYU0NyeXB0OkJhc2U2NCAtIEludmFsaWQgY2hhcmFjdGVyIGF0IHN0YXJ0IG9mIGJhc2UgNjQgYmxvY2siKTsKKworCQl9CisKKwkJaWYgKHQgPT0gNjQpIHsKKworCQkJLy8gJz0nIGNoYXJhY3RlciBmb3VuZAorCisJCQltX2FsbERvbmUgPSB0cnVlOworCQkJYnJlYWs7CisKKwkJfQorCisJCS8vIFRha2UgNCBiaXRzIGFuZCBhcHBlbmQgdG8gY3VycmVudCBidWZmZXIKKworCQltX291dHB1dEJ1ZmZlclttX3JlbWFpbmluZ091dHB1dF0gPSBtX291dHB1dEJ1ZmZlclttX3JlbWFpbmluZ091dHB1dF0gfCAodCA+PiAyKTsKKwkJbV9yZW1haW5pbmdPdXRwdXQrKzsKKworCQkvLyBUYWtlIGxhc3QgMiBiaXRzIGFuZCBhcHBlbmQgdG8gYnVmZmVyCisKKwkJbV9vdXRwdXRCdWZmZXJbbV9yZW1haW5pbmdPdXRwdXRdID0gKHQgPDwgNik7CisKKwkJLy8gQllURSA0CisKKwkJdCA9IGRlY29kZUNoKG1faW5wdXRCdWZmZXJbaSsrXSk7CisKKwkJaWYgKHQgPiA2NCkgeworCisJCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OkJhc2U2NEVycm9yLAorCQkJIlhTQ3J5cHQ6QmFzZTY0IC0gSW52YWxpZCBjaGFyYWN0ZXIgYXQgc3RhcnQgb2YgYmFzZSA2NCBibG9jayIpOworCisJCX0KKworCQlpZiAodCA9PSA2NCkgeworCisJCQltX2FsbERvbmUgPSB0cnVlOworCQkJYnJlYWs7CisKKwkJfQorCisJCS8vIFBsYWNlIGFsbCBzaXggYml0cyBhbmQgZW5kIG9mIGN1cnJlbnQgYnl0ZQorCisJCW1fb3V0cHV0QnVmZmVyW21fcmVtYWluaW5nT3V0cHV0XSA9IG1fb3V0cHV0QnVmZmVyW21fcmVtYWluaW5nT3V0cHV0XSB8IHQ7CisJCW1fcmVtYWluaW5nT3V0cHV0Kys7CisKKwl9CisKKwkvLyBOb3cgd2hhdGV2ZXIgd2UndmUgZGVjb2RlZCBjYW4gYmUgcGxhY2VkIGluIHRoZSBvdXRwdXQgYnVmZmVyCisKKwl1bnNpZ25lZCBpbnQgY3B5T3V0ID0gKG1fcmVtYWluaW5nT3V0cHV0IDwgb3V0TGVuZ3RoID8gbV9yZW1haW5pbmdPdXRwdXQgOiBvdXRMZW5ndGgpOworCisJbV9vdXRwdXRCdWZmZXIuc2JNZW1jcHlPdXQob3V0RGF0YSwgY3B5T3V0KTsKKworCS8vIE1vdmUgdGhlIGJ1ZmZlcnMgZG93bgorCWlmIChjcHlPdXQgIT0gbV9yZW1haW5pbmdPdXRwdXQpIHsKKwkJbV9yZW1haW5pbmdPdXRwdXQgPSBtX3JlbWFpbmluZ091dHB1dCAtIGNweU91dDsKKwkJbV9vdXRwdXRCdWZmZXIuc2JNZW1zaGlmdCgwLCBjcHlPdXQsIG1fcmVtYWluaW5nT3V0cHV0KTsKKwl9CisJZWxzZQorCQltX3JlbWFpbmluZ091dHB1dCA9IDA7CisKKwlpZiAoaSAhPSBtX3JlbWFpbmluZ0lucHV0KSB7CisJCW1fcmVtYWluaW5nSW5wdXQgLT0gaTsKKwkJbV9pbnB1dEJ1ZmZlci5zYk1lbXNoaWZ0KDAsIGksIG1fcmVtYWluaW5nSW5wdXQpOworCX0KKwllbHNlCisJCW1fcmVtYWluaW5nSW5wdXQgPSAwOworCisJLy8gUmV0dXJuIGhvd2V2ZXIgbXVjaCB3ZSBoYXZlIGRlY29kZWQKKwlyZXR1cm4gY3B5T3V0OworCit9CisKK3Vuc2lnbmVkIGludCBYU0NyeXB0Q3J5cHRvQmFzZTY0OjpkZWNvZGVGaW5pc2godW5zaWduZWQgY2hhciAqIG91dERhdGEsCisJCQkJCQkJIAkgICAgICB1bnNpZ25lZCBpbnQgb3V0TGVuZ3RoKSB7CisKKwlpZiAobV9zdGF0ZSAhPSBCNjRfREVDT0RFKSB7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpCYXNlNjRFcnJvciwKKwkJCSJYU0NyeXB0OkJhc2U2NCAtIEF0dGVtcHQgdG8gY29tcGxldGUgYSBkZWNvZGUgd2hlbiBub3QgaW4gZGVjb2RlIHN0YXRlIik7CisJCisJfQorCisJbV9hbGxEb25lID0gdHJ1ZTsKKwl1bnNpZ25lZCBpbnQgY3B5T3V0ID0gKG1fcmVtYWluaW5nT3V0cHV0IDwgb3V0TGVuZ3RoID8gbV9yZW1haW5pbmdPdXRwdXQgOiBvdXRMZW5ndGgpOworCisJbV9vdXRwdXRCdWZmZXIuc2JNZW1jcHlPdXQob3V0RGF0YSwgY3B5T3V0KTsKKworCS8vIE1vdmUgdGhlIGJ1ZmZlcnMgZG93bgorCWlmIChjcHlPdXQgIT0gbV9yZW1haW5pbmdPdXRwdXQpIHsKKwkJbV9yZW1haW5pbmdPdXRwdXQgPSBtX3JlbWFpbmluZ091dHB1dCAtIGNweU91dDsKKwkJbV9vdXRwdXRCdWZmZXIuc2JNZW1zaGlmdCgwLCBjcHlPdXQsIG1fcmVtYWluaW5nT3V0cHV0KTsKKwl9CisJZWxzZSB7CisJCW1fcmVtYWluaW5nT3V0cHV0ID0gMDsKKwl9CisKKwlyZXR1cm4gY3B5T3V0OworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEVuY29kaW5nCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIFhTQ3J5cHRDcnlwdG9CYXNlNjQ6OmVuY29kZUluaXQodm9pZCkgeworCisJbV9yZW1haW5pbmdJbnB1dCA9IG1fcmVtYWluaW5nT3V0cHV0ID0gMDsKKwltX2FsbERvbmUgPSBmYWxzZTsKKwltX2NoYXJDb3VudCA9IDA7CisJbV9zdGF0ZSA9IEI2NF9FTkNPREU7CisKK30KKworCit1bnNpZ25lZCBpbnQgWFNDcnlwdENyeXB0b0Jhc2U2NDo6ZW5jb2RlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBpbkRhdGEsIAorCQkJCQkJIAkgICAgdW5zaWduZWQgaW50IGluTGVuZ3RoLAorCQkJCQkJCQl1bnNpZ25lZCBjaGFyICogb3V0RGF0YSwKKwkJCQkJCQkJdW5zaWduZWQgaW50IG91dExlbmd0aCkgeworCisJaWYgKG1fc3RhdGUgIT0gQjY0X0VOQ09ERSkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6QmFzZTY0RXJyb3IsCisJCQkiWFNDcnlwdDpCYXNlNjQgLSBBdHRlbXB0IHRvIGVuY29kZSB3aGVuIG5vdCBpbiBlbmNvZGluZyBzdGF0ZSIpOworCQorCX0KKworCS8vIENvcHkgaW5wdXQgZGF0YSBpbnRvIGVuZCBvZiBpbnB1dCBidWZmZXIKKwltX2lucHV0QnVmZmVyLnNiTWVtY3B5SW4obV9yZW1haW5pbmdJbnB1dCwgaW5EYXRhLCBpbkxlbmd0aCk7CisJbV9yZW1haW5pbmdJbnB1dCArPSBpbkxlbmd0aDsKKworCXVuc2lnbmVkIGludCBpID0gMDsKKwl1bnNpZ25lZCBjaGFyIHQ7CisKKwl3aGlsZSAobV9hbGxEb25lID09IGZhbHNlICYmIG1fcmVtYWluaW5nSW5wdXQgLSBpID49IDMpIHsKKworCQkvLyBIYXZlIGEgY29tcGxldGUgYmxvY2sgb2YgdGhyZWUgYnl0ZXMgdG8gZW5jb2RlCisKKwkJLy8gRmlyc3QgNiBiaXRzOworCQl0ID0gKG1faW5wdXRCdWZmZXJbaV0gPj4gMik7CisJCW1fb3V0cHV0QnVmZmVyW21fcmVtYWluaW5nT3V0cHV0KytdID0gQmFzZTY0TG9va3VwVGFibGVbdF07CisKKwkJLy8gMiBiaXRzIGZyb20gYnl0ZSBvbmUgYW5kIDQgZnJvbSBieXRlIDIKKwkJdCA9ICgobV9pbnB1dEJ1ZmZlcltpKytdIDw8IDQpICYgMHgzMCk7CisJCXQgfD0gKG1faW5wdXRCdWZmZXJbaV0gPj4gNCk7CisJCW1fb3V0cHV0QnVmZmVyW21fcmVtYWluaW5nT3V0cHV0KytdID0gQmFzZTY0TG9va3VwVGFibGVbdF07CisKKwkJLy8gNCBmcm9tIGJ5dGUgMiBhbmQgMiBmcm9tIGJ5dGUgMworCQl0ID0gKChtX2lucHV0QnVmZmVyW2krK10gPDwgMikgJiAweDNDKTsKKwkJdCB8PSAobV9pbnB1dEJ1ZmZlcltpXSA+PiA2KTsKKwkJbV9vdXRwdXRCdWZmZXJbbV9yZW1haW5pbmdPdXRwdXQrK10gPSBCYXNlNjRMb29rdXBUYWJsZVt0XTsKKworCQkvLyBsYXN0IDYgYml0cyBmcm9tIGJ5dGUgMworCQl0ID0gbV9pbnB1dEJ1ZmZlcltpKytdICYgMHgzRjsKKwkJbV9vdXRwdXRCdWZmZXJbbV9yZW1haW5pbmdPdXRwdXQrK10gPSBCYXNlNjRMb29rdXBUYWJsZVt0XTsKKworCQltX2NoYXJDb3VudCArPSA0OworCisJCWlmIChtX2NoYXJDb3VudCA+PSA3NikgeworCisJCQltX291dHB1dEJ1ZmZlclttX3JlbWFpbmluZ091dHB1dCsrXSA9ICdcbic7CisJCQltX2NoYXJDb3VudCA9IDA7CisJCQorCQl9CisKKwl9CisKKwkvLyBOb3cgY29weSBkYXRhIG91dCB0byBvdXRwdXQgYnVmZmVyCisKKwl1bnNpZ25lZCBpbnQgY3B5T3V0ID0gKG1fcmVtYWluaW5nT3V0cHV0IDwgb3V0TGVuZ3RoID8gbV9yZW1haW5pbmdPdXRwdXQgOiBvdXRMZW5ndGgpOworCisJbV9vdXRwdXRCdWZmZXIuc2JNZW1jcHlPdXQob3V0RGF0YSwgY3B5T3V0KTsKKworCS8vIE1vdmUgdGhlIGJ1ZmZlcnMgZG93bgorCWlmIChjcHlPdXQgIT0gbV9yZW1haW5pbmdPdXRwdXQpIHsKKwkJbV9yZW1haW5pbmdPdXRwdXQgPSBtX3JlbWFpbmluZ091dHB1dCAtIGNweU91dDsKKwkJbV9vdXRwdXRCdWZmZXIuc2JNZW1zaGlmdCgwLCBjcHlPdXQsIG1fcmVtYWluaW5nT3V0cHV0KTsKKwl9CisJZWxzZQorCQltX3JlbWFpbmluZ091dHB1dCA9IDA7CisKKwlpZiAoaSAhPSBtX3JlbWFpbmluZ0lucHV0KSB7CisJCW1fcmVtYWluaW5nSW5wdXQgLT0gaTsKKwkJbV9pbnB1dEJ1ZmZlci5zYk1lbXNoaWZ0KDAsIGksIG1fcmVtYWluaW5nSW5wdXQpOworCX0KKworCWVsc2UKKworCQltX3JlbWFpbmluZ0lucHV0ID0gMDsKKworCS8vIFJldHVybiBob3dldmVyIG11Y2ggd2UgaGF2ZSBkZWNvZGVkCisJcmV0dXJuIGNweU91dDsKKworfQorCit1bnNpZ25lZCBpbnQgWFNDcnlwdENyeXB0b0Jhc2U2NDo6ZW5jb2RlRmluaXNoKHVuc2lnbmVkIGNoYXIgKiBvdXREYXRhLAorCQkJCQkJCSAJICAgICAgdW5zaWduZWQgaW50IG91dExlbmd0aCkgeworCisJaWYgKG1fc3RhdGUgIT0gQjY0X0VOQ09ERSkgeworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6QmFzZTY0RXJyb3IsCisJCQkiWFNDcnlwdDpCYXNlNjQgLSBBdHRlbXB0IHRvIGNvbXBsZXRlIGFuIGVuY29kZSB3aGVuIG5vdCBpbiBlbmNvZGluZyBzdGF0ZSIpOworCQorCX0KKworCWlmIChtX2FsbERvbmUgPT0gZmFsc2UgJiYgbV9yZW1haW5pbmdJbnB1dCA+IDApIHsKKworCQkvLyBXaWxsIGFsd2F5cyBiZSA8IDMgY2hhcmFjdGVycyByZW1haW5pbmcgaW4gaW5wdXRCdWZmZXIKKwkJLy8gSWYgbmVjZXNzYXJ5IC0gdGVybWluYXRlIHRoZSBCYXNlNjQgc3RyaW5nCisKKwkJaWYgKG1fcmVtYWluaW5nSW5wdXQgPj0gMykgeworCisJCQl0aHJvdyBYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb246OkJhc2U2NEVycm9yLAorCQkJCSJYU0NyeXB0OkJhc2U2NCAtIFRvbyBtdWNoIHJlbWFpbmluZyBpbnB1dCBpbiBpbnB1dCBidWZmZXIiKTsKKworCQl9CisKKwkJLy8gRmlyc3QgNiBiaXRzOworCQl1bnNpZ25lZCBpbnQgdCA9IChtX2lucHV0QnVmZmVyWzBdID4+IDIpOworCQltX291dHB1dEJ1ZmZlclttX3JlbWFpbmluZ091dHB1dCsrXSA9IEJhc2U2NExvb2t1cFRhYmxlW3RdOworCisJCS8vIDIgYml0cyBmcm9tIGJ5dGUgb25lIGFuZCA0IGZyb20gYnl0ZSAyCisJCXQgPSAoKG1faW5wdXRCdWZmZXJbMF0gPDwgNCkgJiAweDMwKTsKKwkJCisJCWlmIChtX3JlbWFpbmluZ0lucHV0ID09IDEpIHsKKwkJCW1fb3V0cHV0QnVmZmVyW21fcmVtYWluaW5nT3V0cHV0KytdID0gQmFzZTY0TG9va3VwVGFibGVbdF07CisJCQltX291dHB1dEJ1ZmZlclttX3JlbWFpbmluZ091dHB1dCsrXSA9ICc9JzsKKwkJCW1fb3V0cHV0QnVmZmVyW21fcmVtYWluaW5nT3V0cHV0KytdID0gJz0nOworCQl9CisKKwkJZWxzZSB7CisKKwkJCXQgfD0gKG1faW5wdXRCdWZmZXJbMV0gPj4gNCk7CisJCQltX291dHB1dEJ1ZmZlclttX3JlbWFpbmluZ091dHB1dCsrXSA9IEJhc2U2NExvb2t1cFRhYmxlW3RdOworCisJCQkvLyA0IGZyb20gYnl0ZSAyCisJCQl0ID0gKChtX2lucHV0QnVmZmVyWzFdIDw8IDIpICYgMHgzQyk7CisJCQltX291dHB1dEJ1ZmZlclttX3JlbWFpbmluZ091dHB1dCsrXSA9IEJhc2U2NExvb2t1cFRhYmxlW3RdOworCQkJbV9vdXRwdXRCdWZmZXJbbV9yZW1haW5pbmdPdXRwdXQrK10gPSAnPSc7CisJCX0KKworCX0KKworCW1fYWxsRG9uZSA9IHRydWU7CisKKwkvLyBDb3B5IG91dAorCXVuc2lnbmVkIGludCBjcHlPdXQgPSAobV9yZW1haW5pbmdPdXRwdXQgPCBvdXRMZW5ndGggPyBtX3JlbWFpbmluZ091dHB1dCA6IG91dExlbmd0aCk7CisKKwltX291dHB1dEJ1ZmZlci5zYk1lbWNweU91dChvdXREYXRhLCBjcHlPdXQpOworCisJLy8gTW92ZSB0aGUgYnVmZmVycyBkb3duCisJaWYgKGNweU91dCAhPSBtX3JlbWFpbmluZ091dHB1dCkgeworCQltX3JlbWFpbmluZ091dHB1dCA9IG1fcmVtYWluaW5nT3V0cHV0IC0gY3B5T3V0OworCQltX291dHB1dEJ1ZmZlci5zYk1lbXNoaWZ0KDAsIGNweU91dCwgbV9yZW1haW5pbmdPdXRwdXQpOworCX0KKwllbHNlIHsKKwkJbV9yZW1haW5pbmdPdXRwdXQgPSAwOworCX0KKworCXJldHVybiBjcHlPdXQ7Cit9CmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvWFNDcnlwdC9YU0NyeXB0Q3J5cHRvQmFzZTY0LmhwcCBiL2Mvc3JjL2VuYy9YU0NyeXB0L1hTQ3J5cHRDcnlwdG9CYXNlNjQuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczMDdiYjUKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9lbmMvWFNDcnlwdC9YU0NyeXB0Q3J5cHRvQmFzZTY0LmhwcApAQCAtMCwwICsxLDE3NCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAzLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNDcnlwdENyeXB0b0Jhc2U2NCA6PSBJbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBvZiBhIGJhc2U2NCBlbmNvZGVyL2RlY29kZXIKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWFNDUllQVENSWVBUT0JBU0U2NF9JTkNMVURFCisjZGVmaW5lIFhTQ1JZUFRDUllQVE9CQVNFNjRfSU5DTFVERQorCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9CYXNlNjQuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1NhZmVCdWZmZXIuaHBwPgorCisgLyoqCisgKiBAZGVmZ3JvdXAgeHNjcnlwdGNyeXB0byBJbnRlcm5hbCBDcnlwdG8gQVBJIEludGVyZmFjZQorICogQGluZ3JvdXAgY3J5cHRvCisgKiBUaGUgWFNDcnlwdCBJbnRlcmZhY2UgcHJvdmlkZXMgY3J5cHRvZ3JhcGhpYyBmdW5jdGlvbnMgdGhhdCBhcmUgbWlzc2luZworICogZnJvbSBvdGhlciBsaWJyYXJpZXMuCisgKgorICogQ3VycmVudGx5IHRoaXMgb25seSBwcm92aWRlcyBCYXNlNjQgZnVuY3Rpb25hbGl0eSB3aGljaCBpcyBub3QKKyAqIGF2YWlsYWJsZSBpbiB0aGUgV2luZG93cyBDcnlwdG8gQVBJLgorICoKKyAqLworCitjbGFzcyBEU0lHX0VYUE9SVCBYU0NyeXB0Q3J5cHRvQmFzZTY0IDogcHVibGljIFhTRUNDcnlwdG9CYXNlNjQgeworCisKK3B1YmxpYyA6CisKKwkvLyBDb25zdHJ1Y3RvcnMvRGVzdHJ1Y3RvcnMKKwkKKwlYU0NyeXB0Q3J5cHRvQmFzZTY0KCkgOiBtX3N0YXRlKEI2NF9VTklOSVRJQUxJU0VEKSB7fTsKKwl2aXJ0dWFsIH5YU0NyeXB0Q3J5cHRvQmFzZTY0KCkge307CisKKwkvKiogQG5hbWUgRGVjb2RpbmcgRnVuY3Rpb25zICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIEluaXRpYWxpc2UgdGhlIGJhc2U2NCBvYmplY3QuCisJICoKKwkgKiBJbml0aWFsaXNlcyB0aGUgT3BlblNTTCBkZWNvZGUgY29udGV4dCBhbmQgZ2V0cyByZWFkeSBmb3IgZGF0YQorCSAqIHRvIGJlIGRlY29kZWQuCisJICoKKwkgKi8KKworCXZpcnR1YWwgdm9pZAkJIGRlY29kZUluaXQodm9pZCk7CQkJCQkvLyBTZXR1cAorCisJLyoqCisJICogXGJyaWVmIERlY29kZSBzb21lIHBhc3NlZCBpbiBkYXRhLgorCSAqCisJICogRGVjb2RlIHRoZSBwYXNzZWQgaW4gZGF0YSBhbmQgcGxhY2UgdGhlIGRhdGEgaW4gdGhlIG91dERhdGEgYnVmZmVyCisJICoKKwkgKiBAcGFyYW0gaW5EYXRhIFBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBob2xkaW5nIGVuY29kZWQgZGF0YS4KKwkgKiBAcGFyYW0gaW5MZW5ndGggTGVuZ3RoIG9mIHRoZSBlbmNvZGVkIGRhdGEgaW4gdGhlIGJ1ZmZlcgorCSAqIEBwYXJhbSBvdXREYXRhIEJ1ZmZlciB0byBwbGFjZSBkZWNvZGVkIGRhdGEgaW50bworCSAqIEBwYXJhbSBvdXRMZW5ndGggTWF4aW11bSBhbW91bnQgb2YgZGF0YSB0aGF0IGNhbiBiZSBwbGFjZWQgaW4KKwkgKiAgICAgICAgdGhlIGJ1ZmZlci4KKwkgKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGJ5dGVzIHBsYWNlZCBpbiB0aGUgb3V0RGF0YSBidWZmZXIuCisJICovCisJCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgZGVjb2RlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBpbkRhdGEsIAorCQkJCQkJIAkgICAgdW5zaWduZWQgaW50IGluTGVuZ3RoLAorCQkJCQkJCQl1bnNpZ25lZCBjaGFyICogb3V0RGF0YSwKKwkJCQkJCQkJdW5zaWduZWQgaW50IG91dExlbmd0aCk7CisKKwkvKioKKwkgKiBcYnJpZWYgRmluaXNoIG9mZiBhIGRlY29kZS4KKwkgKgorCSAqIENsZWFuIG91dCBhbnkgZXh0cmEgZGF0YSBmcm9tIHByZXZpb3VzIGRlY29kZSBvcGVyYXRpb25zIGFuZCBwbGFjZQorCSAqIGludG8gdGhlIG91dERhdGEgYnVmZmVyLgorCSAqCisJICogQHBhcmFtIG91dERhdGEgQnVmZmVyIHRvIHBsYWNlIGFueSByZW1haW5pbmcgZGVjb2RlZCBkYXRhCisJICogQHBhcmFtIG91dExlbmd0aCBNYXggYW1vdW50IG9mIGRhdGEgdG8gYmUgcGxhY2VkIGluIHRoZSBidWZmZXIuCisJICogQHJldHVybnMgQW1vdW50IG9mIGRhdGEgcGxhY2VkIGluIHRoZSBvdXREYXRhIGJ1ZmZlcgorCSAqLworCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgZGVjb2RlRmluaXNoKHVuc2lnbmVkIGNoYXIgKiBvdXREYXRhLAorCQkJCQkJCSAJICAgICAgdW5zaWduZWQgaW50IG91dExlbmd0aCk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgRW5jb2RpbmcgRnVuY3Rpb25zICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIEluaXRpYWxpc2UgdGhlIGJhc2U2NCBvYmplY3QgZm9yIGVuY29kaW5nCisJICoKKwkgKiBHZXQgdGhlIGNvbnRleHQgdmFyaWFibGUgcmVhZHkgZm9yIGEgYmFzZTY0IGRlY29kZQorCSAqCisJICovCisKKwl2aXJ0dWFsIHZvaWQJCSBlbmNvZGVJbml0KHZvaWQpOworCisJLyoqCisJICogXGJyaWVmIEVuY29kZSBzb21lIHBhc3NlZCBpbiBkYXRhLgorCSAqCisJICogQHBhcmFtIGluRGF0YSBQb2ludGVyIHRvIHRoZSBidWZmZXIgaG9sZGluZyBkYXRhIHRvIGJlIGVuY29kZWQuCisJICogQHBhcmFtIGluTGVuZ3RoIExlbmd0aCBvZiB0aGUgZGF0YSBpbiB0aGUgYnVmZmVyCisJICogQHBhcmFtIG91dERhdGEgQnVmZmVyIHRvIHBsYWNlIGVuY29kZWQgZGF0YSBpbnRvCisJICogQHBhcmFtIG91dExlbmd0aCBNYXhpbXVtIGFtb3VudCBvZiBkYXRhIHRoYXQgY2FuIGJlIHBsYWNlZCBpbgorCSAqICAgICAgICB0aGUgYnVmZmVyLgorCSAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgYnl0ZXMgcGxhY2VkIGluIHRoZSBvdXREYXRhIGJ1ZmZlci4KKwkgKi8KKworCXZpcnR1YWwgdW5zaWduZWQgaW50IGVuY29kZShjb25zdCB1bnNpZ25lZCBjaGFyICogaW5EYXRhLCAKKwkJCQkJCSAJICAgIHVuc2lnbmVkIGludCBpbkxlbmd0aCwKKwkJCQkJCQkJdW5zaWduZWQgY2hhciAqIG91dERhdGEsCisJCQkJCQkJCXVuc2lnbmVkIGludCBvdXRMZW5ndGgpOworCisJLyoqCisJICogXGJyaWVmIEZpbmlzaCBvZmYgYW4gZW5jb2RlLgorCSAqCisJICogVGFrZSBhbnkgZGF0YSBmcm9tIHByZXZpb3VzIGVuY29kZSBvcGVyYXRpb25zIGFuZCBjcmVhdGUgdGhlCisJICogdGFpbCBvZiB0aGUgYmFzZTY0IGVuY29kaW5nLgorCSAqCisJICogQHBhcmFtIG91dERhdGEgQnVmZmVyIHRvIHBsYWNlIGFueSByZW1haW5pbmcgZW5jb2RlZCBkYXRhCisJICogQHBhcmFtIG91dExlbmd0aCBNYXggYW1vdW50IG9mIGRhdGEgdG8gYmUgcGxhY2VkIGluIHRoZSBidWZmZXIuCisJICogQHJldHVybnMgQW1vdW50IG9mIGRhdGEgcGxhY2VkIGluIHRoZSBvdXREYXRhIGJ1ZmZlcgorCSAqLworCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCBlbmNvZGVGaW5pc2godW5zaWduZWQgY2hhciAqIG91dERhdGEsCisJCQkJCQkJIAkgICAgICB1bnNpZ25lZCBpbnQgb3V0TGVuZ3RoKTsKKworCS8vQH0KKworcHJpdmF0ZSA6CisKKwllbnVtIGI2NHN0YXRlIHsKKworCQlCNjRfVU5JTklUSUFMSVNFRCwKKwkJQjY0X0VOQ09ERSwKKwkJQjY0X0RFQ09ERQorCX07CisKKwlzYWZlQnVmZmVyCQkJCW1faW5wdXRCdWZmZXI7CQkvLyBDYXJyeSBvdmVyIGJ1ZmZlcgorCXNhZmVCdWZmZXIJCQkJbV9vdXRwdXRCdWZmZXI7CQkvLyBDYXJyeSBvdmVyIG91dHB1dAorCisJdW5zaWduZWQgaW50CQkJbV9yZW1haW5pbmdJbnB1dDsJLy8gTnVtYmVyIG9mIGJ5dGVzIGluIGNhcnJ5IGlucHV0IGJ1ZmZlcgorCXVuc2lnbmVkIGludAkJCW1fcmVtYWluaW5nT3V0cHV0OwkvLyBOdW1iZXIgb2YgYnl0ZXMgaW4gY2Fycnkgb3V0cHV0IGJ1ZmZlcgorCisJYm9vbAkJCQkJbV9hbGxEb25lOwkJCS8vIEVuZCBmb3VuZCAoPSkKKworCWI2NHN0YXRlCQkJCW1fc3RhdGU7CQkJLy8gV2hhdCBhcmUgd2UgY3VycmVudGx5IGRvaW5nPworCisJdW5zaWduZWQgaW50CQkJbV9jaGFyQ291bnQ7CQkvLyBIb3cgbWFueSBjaGFyYWN0ZXJzIGluIGN1cnJlbnQgbGluZT8KKworCS8vIFByaXZhdGUgZnVuY3Rpb25zCisJdm9pZCBjYW5vbmljYWxpc2VJbnB1dChjb25zdCB1bnNpZ25lZCBjaGFyICppbkRhdGEsIHVuc2lnbmVkIGludCBpbkxlbmd0aCk7CisKK307CisKKyNlbmRpZiAvKiBYU0NSWVBUQ1JZUFRPQkFTRTY0X0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL2VuYy9YU0VDQ3J5cHRvQmFzZTY0LmNwcCBiL2Mvc3JjL2VuYy9YU0VDQ3J5cHRvQmFzZTY0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGFlYWExCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZW5jL1hTRUNDcnlwdG9CYXNlNjQuY3BwCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNDcnlwdG9CYXNlNjQgOj0gSW1wbGVtZW50YXRpb24gb2YgQmFzZTY0IHV0aWxpdHkgZm5zCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9CYXNlNjQuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisKKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MU3RyaW5nLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ2xlYW4gYSBidWZmZXIgb2YgQmFzZTY0IGNoYXJhY3RlcnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworY2hhciAqIFhTRUNDcnlwdG9CYXNlNjQ6OmNsZWFuQnVmZmVyKGNvbnN0IGNoYXIgKiBidWZmZXIsIAorCQkJCQkJCQkJICB1bnNpZ25lZCBpbnQgYnVmTGVuLCAKKwkJCQkJCQkJCSAgdW5zaWduZWQgaW50ICZyZXRCdWZMZW4pIHsKKworCWlmIChidWZMZW4gPT0gMCkKKwkJYnVmTGVuID0gWE1MU3RyaW5nOjpzdHJpbmdMZW4oYnVmZmVyKTsKKworCWNoYXIgKiByZXM7CisKKwlYU0VDbmV3KHJlcywgY2hhcltidWZMZW4gKyAoYnVmTGVuIC8gNzIpICsgM10pOworCisJdW5zaWduZWQgaW50IGogPSAwOworCXVuc2lnbmVkIGludCBrID0gMDsKKwlmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGJ1ZkxlbjsgKytpKSB7CisJCXJlc1tqKytdID0gYnVmZmVyW2ldOworCQlpZiAoYnVmZmVyW2ldID09ICdcbicgfHwgYnVmZmVyW2ldID09ICdccicpCisJCQlrID0gMDsKKwkJZWxzZSB7CisJCQlpZiAoKytrID49IDcyKSB7CisJCQkJcmVzW2orK10gPSAnXG4nOworCQkJCWsgPSAwOworCQkJfQorCQl9CisJfQorCisJcmVzW2pdID0gJ1wwJzsKKwlyZXRCdWZMZW4gPSBqOworCisJcmV0dXJuIHJlczsKKworfQorCisKKworCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvWFNFQ0NyeXB0b0Jhc2U2NC5ocHAgYi9jL3NyYy9lbmMvWFNFQ0NyeXB0b0Jhc2U2NC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzVkM2RjOQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9YU0VDQ3J5cHRvQmFzZTY0LmhwcApAQCAtMCwwICsxLDIwMCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ0NyeXB0b0Jhc2U2NCA6PSBCYXNlIHZpcnR1YWwgY2xhc3MgdG8gZGVmaW5lIGEgYmFzZTY0IGVuY29kZXIvZGVjb2RlcgorICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYU0VDQ1JZUFRPQkFTRTY0X0lOQ0xVREUKKyNkZWZpbmUgWFNFQ0NSWVBUT0JBU0U2NF9JTkNMVURFCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisKKy8qKgorICogQGluZ3JvdXAgY3J5cHRvCisgKi8KKyAvKlxAeyovCisKKy8qKgorICogXGJyaWVmIEJhc2U2NCBlbmNvZGUvZGVjb2RlIGhhbmRsZXIgaW50ZXJmYWNlIGNsYXNzLgorICoKKyAqIDxwPlRoZSBYU0VDIGxpYnJhcnkgd2lsbCB1c2UgaW1wbGVtZW50YXRpb25zIG9mIHRoaXMgaW50ZXJmYWNlIAorICogZm9yIHRyYW5zbGF0aW5nIGJ5dGVzIHRvL2Zyb20gYmFzZTY0IGVuY29kaW5nLjwvcD4KKyAqCisgKiA8cD5UaGVyZSBhcmUgbWFueSBwbGFjZXMgd2hlcmUgWE1MIERTSUcgdXNlcyBCYXNlNjQgZW5jb2RpbmcgZm9yIAorICogZW1iZWRkaW5nIGRhdGEgaW4gdGhlIFw8U2lnbmF0dXJlXD4gc3RydWN0dXJlLiAgSW4gc29tZSBjYXNlcyB0aGlzIG9iamVjdAorICogaXMgdXNlZC4gIEluIG90aGVyIGNhc2VzLCB0aGUgbGlicmFyeSBwYXNzZXMgYmFzZTY0IGNvZGUgZGlyZWN0bHkgdG8KKyAqIHRoZSBjcnlwdG9ncmFwaGljIGhhbmRsZXIuPC9wPgorICoKKyAqIEBub3RlIFRoZSBsaWJyYXJ5IG1heSByZS11c2UgQmFzZTY0IG9iamVjdHMuICBIb3dldmVyIGl0IHdpbGwgYWx3YXlzCisgKiBjYWxsIHRoZSA/P0luaXQgZnVuY3Rpb24gcHJpb3IgdG8gcmUtdXNlLiAgSW4gYWRkdGlvbiwgdGhlIG9iamVjdCBkb2VzCisgKiBub3QgbmVlZCB0byBiZSBhYmxlIHRvIGhhbmRsZSBjb25jdXJyZW50IGVuY29kZS9kZWNvZGUgb3BlcmF0aW9ucy4KKyAqLworCitjbGFzcyBEU0lHX0VYUE9SVCBYU0VDQ3J5cHRvQmFzZTY0IHsKKworCitwdWJsaWMgOgorCisJLy8gQ29uc3RydWN0b3JzL0Rlc3RydWN0b3JzCisJCisJWFNFQ0NyeXB0b0Jhc2U2NCgpIHt9OworCXZpcnR1YWwgflhTRUNDcnlwdG9CYXNlNjQoKSB7fTsKKworCS8qKiBAbmFtZSBEZWNvZGluZyBGdW5jdGlvbnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgSW5pdGlhbGlzZSB0aGUgYmFzZTY0IG9iamVjdC4KKwkgKgorCSAqIFRoZSBYU0VDIGxpYnJhcnkgd2lsbCA8ZW0+YWx3YXlzPC9lbT4gY2FsbCB0aGlzIGZ1bmN0aW9uIHByaW9yCisJICogdG8gZGVjb2RpbmcgYW55IGRhdGEuICBUaGlzIGZ1bmN0aW9uIHdpbGwgYWxzbyBiZSBjYWxsZWQgd2hlbgorCSAqIG9uZSBkZWNvZGUgKG9yIGVuY29kZSkgaGFzIGJlZW4gY29tcGxldGVkIGFuZCB0aGUgbGlicmFyeSB3aXNoZXMKKwkgKiB0byByZS11c2UgdGhlIG9iamVjdCBmb3IgYW5vdGhlciBkZWNvZGUgb3BlcmF0aW9uLgorCSAqCisJICovCisKKwl2aXJ0dWFsIHZvaWQJCSBkZWNvZGVJbml0KHZvaWQpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBEZWNvZGUgc29tZSBwYXNzZWQgaW4gZGF0YS4KKwkgKgorCSAqIDxwPlRoZSBYU0VDIGxpYnJhcnkgd2lsbCBwYXNzIGEgYmxvY2sgb2YgZGF0YSBpbnRvIHRoZSBkZWNvZGVyCisJICogYW5kIHJlcXVlc3QgdGhhdCBhcyBtdWNoIGFzIHBvc3NpYmxlIGJlIGRlY29kZWQgaW50byB0aGUgb3V0RGF0YQorCSAqIGJ1ZmZlci48L3A+CisJICoKKwkgKiA8cD5EdWUgdG8gdGhlIG5hdHVyZSBvZiBiYXNlNjQsIHRoZXJlIG1heSBiZSBkYXRhIHRoYXQgY2Fubm90IGJlCisJICogZnVsbHkgZGVjb2RlZCAobm90IGVub3VnaCBlbmNvZGluZyB0aHJvdWdoIHlldCkuICBUaGUgaW1wbGVtZW50YXRpb24KKwkgKiBpcyBleHBlY3RlZCB0byBrZWVwIHRoaXMgaW4gbWVtb3J5IHVudGlsIGFub3RoZXIgY2FsbCB0byAjZGVjb2RlKCkKKwkgKiBvciBhIGNhbGwgdG8gI2RlY29kZUZpbmlzaCgpLjwvcD4KKwkgKgorCSAqIEBwYXJhbSBpbkRhdGEgUG9pbnRlciB0byB0aGUgYnVmZmVyIGhvbGRpbmcgZW5jb2RlZCBkYXRhLgorCSAqIEBwYXJhbSBpbkxlbmd0aCBMZW5ndGggb2YgdGhlIGVuY29kZWQgZGF0YSBpbiB0aGUgYnVmZmVyCisJICogQHBhcmFtIG91dERhdGEgQnVmZmVyIHRvIHBsYWNlIGRlY29kZWQgZGF0YSBpbnRvCisJICogQHBhcmFtIG91dExlbmd0aCBNYXhpbXVtIGFtb3VudCBvZiBkYXRhIHRoYXQgY2FuIGJlIHBsYWNlZCBpbgorCSAqICAgICAgICB0aGUgYnVmZmVyLgorCSAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgYnl0ZXMgcGxhY2VkIGluIHRoZSBvdXREYXRhIGJ1ZmZlci4KKwkgKi8KKworCXZpcnR1YWwgdW5zaWduZWQgaW50IGRlY29kZShjb25zdCB1bnNpZ25lZCBjaGFyICogaW5EYXRhLCAKKwkJCQkJCSAJICAgIHVuc2lnbmVkIGludCBpbkxlbmd0aCwKKwkJCQkJCQkJdW5zaWduZWQgY2hhciAqIG91dERhdGEsCisJCQkJCQkJCXVuc2lnbmVkIGludCBvdXRMZW5ndGgpID0gMDsKKwkvKioKKwkgKiBcYnJpZWYgRmluaXNoIG9mZiBhIGRlY29kZS4KKwkgKgorCSAqIDxwPlRoZSBsaWJyYXJ5IHdpbGwgY2FsbCB0aGlzIHdoZW4gdGhlcmUgaXMgbm8gbW9yZSBiYXNlNjQgZGF0YSBmb3IKKwkgKiB0aGUgY3VycmVudCBkZWNvZGUuPC9wPgorCSAqCisJICogQHBhcmFtIG91dERhdGEgQnVmZmVyIHRvIHBsYWNlIGFueSByZW1haW5pbmcgZGVjb2RlZCBkYXRhCisJICogQHBhcmFtIG91dExlbmd0aCBNYXggYW1vdW50IG9mIGRhdGEgdG8gYmUgcGxhY2VkIGluIHRoZSBidWZmZXIuCisJICogQHJldHVybnMgQW1vdW50IG9mIGRhdGEgcGxhY2VkIGluIHRoZSBvdXREYXRhIGJ1ZmZlcgorCSAqLworCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgZGVjb2RlRmluaXNoKHVuc2lnbmVkIGNoYXIgKiBvdXREYXRhLAorCQkJCQkJCSAJICAgICAgdW5zaWduZWQgaW50IG91dExlbmd0aCkgPSAwOworCisJLy9AfQorCisJLyoqIEBuYW1lIEVuY29kaW5nIEZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBJbml0aWFsaXNlIHRoZSBiYXNlNjQgb2JqZWN0IGZvciBlbmNvZGluZworCSAqCisJICogVGhlIFhTRUMgbGlicmFyeSB3aWxsIDxlbT5hbHdheXM8L2VtPiBjYWxsIHRoaXMgZnVuY3Rpb24gcHJpb3IKKwkgKiB0byBlbmNvZGluZyBhbnkgZGF0YS4gIFRoaXMgZnVuY3Rpb24gd2lsbCBhbHNvIGJlIGNhbGxlZCB3aGVuCisJICogb25lIGVuY29kZSAob3IgZGVjb2RlKSBoYXMgYmVlbiBjb21wbGV0ZWQgYW5kIHRoZSBsaWJyYXJ5IHdpc2hlcworCSAqIHRvIHJlLXVzZSB0aGUgb2JqZWN0IGZvciBhbm90aGVyIGVuY29kZSBvcGVyYXRpb24uCisJICoKKwkgKi8KKwkKKwl2aXJ0dWFsIHZvaWQJCSBlbmNvZGVJbml0KHZvaWQpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBFbmNvZGUgc29tZSBwYXNzZWQgaW4gZGF0YS4KKwkgKgorCSAqIDxwPlRoZSBYU0VDIGxpYnJhcnkgd2lsbCBwYXNzIGEgYmxvY2sgb2YgZGF0YSBpbnRvIHRoZSBFbmNvZGVyCisJICogYW5kIHJlcXVlc3QgdGhhdCBhcyBtdWNoIGFzIHBvc3NpYmxlIGJlIGVuY29kZWQgaW50byB0aGUgb3V0RGF0YQorCSAqIGJ1ZmZlci48L3A+CisJICoKKwkgKiA8cD5EdWUgdG8gdGhlIG5hdHVyZSBvZiB0aGUgaW1wbGVtZW50YXRpb24sIHRoZXJlIG1heSBiZSBkYXRhIAorCSAqIHRoYXQgY2Fubm90IGJlCisJICogZnVsbHkgZW5jb2RlZCAobm90IGVub3VnaCBkYXRhIHRocm91Z2ggeWV0KS4gIFRoZSBpbXBsZW1lbnRhdGlvbgorCSAqIGlzIGV4cGVjdGVkIHRvIGtlZXAgdGhpcyBpbiBtZW1vcnkgdW50aWwgYW5vdGhlciBjYWxsIHRvICNlbmNvZGUoKQorCSAqIG9yIGEgY2FsbCB0byAjZW5jb2RlRmluaXNoKCkuPC9wPgorCSAqCisJICogQHBhcmFtIGluRGF0YSBQb2ludGVyIHRvIHRoZSBidWZmZXIgaG9sZGluZyBkYXRhIHRvIGJlIGVuY29kZWQuCisJICogQHBhcmFtIGluTGVuZ3RoIExlbmd0aCBvZiB0aGUgZGF0YSBpbiB0aGUgYnVmZmVyCisJICogQHBhcmFtIG91dERhdGEgQnVmZmVyIHRvIHBsYWNlIGVuY29kZWQgZGF0YSBpbnRvCisJICogQHBhcmFtIG91dExlbmd0aCBNYXhpbXVtIGFtb3VudCBvZiBkYXRhIHRoYXQgY2FuIGJlIHBsYWNlZCBpbgorCSAqICAgICAgICB0aGUgYnVmZmVyLgorCSAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgYnl0ZXMgcGxhY2VkIGluIHRoZSBvdXREYXRhIGJ1ZmZlci4KKwkgKi8KKworCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgZW5jb2RlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBpbkRhdGEsIAorCQkJCQkJIAkgICAgdW5zaWduZWQgaW50IGluTGVuZ3RoLAorCQkJCQkJCQl1bnNpZ25lZCBjaGFyICogb3V0RGF0YSwKKwkJCQkJCQkJdW5zaWduZWQgaW50IG91dExlbmd0aCkgPSAwOworCS8qKgorCSAqIFxicmllZiBGaW5pc2ggb2ZmIGFuIGVuY29kZS4KKwkgKgorCSAqIDxwPlRoZSBsaWJyYXJ5IHdpbGwgY2FsbCB0aGlzIHdoZW4gdGhlcmUgaXMgbm8gbW9yZSBkYXRhIGZvcgorCSAqIHRoZSBjdXJyZW50IGVuY29kZSBvcGVyYXRpb24uPC9wPgorCSAqCisJICogQHBhcmFtIG91dERhdGEgQnVmZmVyIHRvIHBsYWNlIGFueSByZW1haW5pbmcgZW5jb2RlZCBkYXRhCisJICogQHBhcmFtIG91dExlbmd0aCBNYXggYW1vdW50IG9mIGRhdGEgdG8gYmUgcGxhY2VkIGluIHRoZSBidWZmZXIuCisJICogQHJldHVybnMgQW1vdW50IG9mIGRhdGEgcGxhY2VkIGluIHRoZSBvdXREYXRhIGJ1ZmZlcgorCSAqLworCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCBlbmNvZGVGaW5pc2godW5zaWduZWQgY2hhciAqIG91dERhdGEsCisJCQkJCQkJIAkgICAgICB1bnNpZ25lZCBpbnQgb3V0TGVuZ3RoKSA9IDA7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgVXRpbGl0eSBmdW5jdGlvbnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgQ2xlYW4gYSBidWZmZXIgb2YgYmFzZTY0IHRleHQKKwkgKgorCSAqIENyZWF0ZXMgYSBuZXcgY29weSBvZiB0aGUgcGFzc2VkIGluIGJ1ZmZlciB3aXRoIG5ldyBsaW5lcyBpbgorCSAqIGFjY29yZCB3aXRoIHRoZSBNSU1FIHN0YW5kYXJkLgorCSAqCisJICogQHBhcmFtIGJ1ZmZlciBUaGUgYnVmZmVyIG9mIGJhc2U2NCB0ZXh0IHRvIGNsZWFuCisJICogQHBhcmFtIGJ1ZkxlbiBUaGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gY2xlYW4gaW4gdGhlIGJ1ZmZlciAoMCBmb3Igc3RybGVuKQorCSAqIEBwYXJhbSByZXRCdWZMZW4gVGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHBsYWNlZCBpbiB0aGUgY2xlYW5lZCBidWZmZXIKKwkgKiBAcmV0dXJucyBBIGNsZWFuIHZlcnNpb24gb2YgdGhlIGJ1ZmZlcgorCSAqIEBub3RlIFRoaXMgaXMgTk9UIHJlLWltcGxlbWVudGVkIGluIGFueSBvZiB0aGUgY3J5cHRvIGludGVyZmFjZXMuICBJdCBpcyAKKwkgKiBhIEJhc2U2NCB1dGlsaXR5IGZ1bmN0aW9uIG9ubHkuCisJICovCisKKwlzdGF0aWMgY2hhciAqIGNsZWFuQnVmZmVyKGNvbnN0IGNoYXIgKiBidWZmZXIsIHVuc2lnbmVkIGludCBidWZMZW4sIHVuc2lnbmVkIGludCAmcmV0QnVmTGVuKTsKKworCS8vQH0KKworfTsKKy8qXEB9Ki8KKyNlbmRpZiAvKiBYU0VDQ1JZUFRPQkFTRTY0X0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL2VuYy9YU0VDQ3J5cHRvRXhjZXB0aW9uLmNwcCBiL2Mvc3JjL2VuYy9YU0VDQ3J5cHRvRXhjZXB0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWI5YTM1Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZW5jL1hTRUNDcnlwdG9FeGNlcHRpb24uY3BwCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYU0VDQ3J5cHRvRXhjZXB0aW9uOj0gSG93IHdlIHRocm93IGV4Y2VwdGlvbnMgaW4gWFNFQworICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9FeGNlcHRpb24uaHBwPgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKK2V4dGVybiBjb25zdCBjaGFyICogWFNFQ0NyeXB0b0V4Y2VwdGlvblN0cmluZ3NbXSA9IHsKKworCSJObyBFcnJvciIsCisJIkdlbmVyYWwgZXJyb3Igb2NjdXJyZWQgc29tZXdoZXJlIGluIGNyeXB0b2dyYXBoaWMgcm91dGluZXMiLAorCSJFcnJvciBDcmVhdGluZyBTSEExIE1EIiwKKwkiRXJyb3IgaW4gQmFzZTY0IiwKKwkiTWVtb3J5IGFsbG9jYXRpb24gZXJyb3IiLAorCSJYNTA5IEVycm9yIiwKKwkiRFNBIEVycm9yIiwKKwkiUlNBIEVycm9yIiwKKwkiU3ltbWV0cmljIEVycm9yIiwKKyAgICAiRUMgRXJyb3IiLAorCSJVbnN1cHBvcnRlZCBBbGdvcml0aG0iCisKK307CisKK1hTRUNDcnlwdG9FeGNlcHRpb246OlhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvblR5cGUgZU51bSwgY29uc3QgY2hhciAqIGluTXNnKSB7CisKKwlpZiAoZU51bSA+IFVua25vd25FcnJvcikKKwkJdHlwZSA9IFVua25vd25FcnJvcjsKKwllbHNlCisJCXR5cGUgPSBlTnVtOworCisJaWYgKGluTXNnICE9IE5VTEwpIHsKKwkJbXNnID0gbmV3IGNoYXJbc3RybGVuKGluTXNnKSArIDFdOworCQlzdHJjcHkobXNnLCBpbk1zZyk7CisJfQorCWVsc2UgeworCQltc2cgPSBuZXcgY2hhcltzdHJsZW4oWFNFQ0NyeXB0b0V4Y2VwdGlvblN0cmluZ3NbdHlwZV0pICsgMV07CisJCXN0cmNweShtc2csIFhTRUNDcnlwdG9FeGNlcHRpb25TdHJpbmdzW3R5cGVdKTsKKwl9CisKK30KKworWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6WFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uVHlwZSBlTnVtLCBzYWZlQnVmZmVyICZpbk1zZykgeworCisJaWYgKGVOdW0gPiBVbmtub3duRXJyb3IpCisJCXR5cGUgPSBVbmtub3duRXJyb3I7CisJZWxzZQorCQl0eXBlID0gZU51bTsKKworCQorCW1zZyA9IG5ldyBjaGFyW3N0cmxlbigoY2hhciAqKSBpbk1zZy5yYXdCdWZmZXIoKSkgKyAxXTsKKwlzdHJjcHkobXNnLCAoY2hhciAqKSBpbk1zZy5yYXdCdWZmZXIoKSk7CisKK30KKworWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6WFNFQ0NyeXB0b0V4Y2VwdGlvbihjb25zdCBYU0VDQ3J5cHRvRXhjZXB0aW9uICZ0b0NvcHkpIHsKKworCS8vIENvcHkgQ29uc3RydWN0b3IKKworCXR5cGUgPSB0b0NvcHkudHlwZTsKKwlpZiAodG9Db3B5Lm1zZyA9PSBOVUxMKQorCQltc2cgPSBOVUxMOworCWVsc2UgeworCisJCW1zZyA9IG5ldyBjaGFyW3N0cmxlbih0b0NvcHkubXNnKSArIDFdOworCQlzdHJjcHkobXNnLCB0b0NvcHkubXNnKTsKKwl9Cit9CisKK1hTRUNDcnlwdG9FeGNlcHRpb246On5YU0VDQ3J5cHRvRXhjZXB0aW9uKCkgeworCisJaWYgKG1zZyAhPSBOVUxMKQorCQlkZWxldGVbXSBtc2c7CisKK30KKworY29uc3QgY2hhciAqIFhTRUNDcnlwdG9FeGNlcHRpb246OmdldE1zZyh2b2lkKSB7CisKKwlyZXR1cm4gbXNnOworCit9CisKK1hTRUNDcnlwdG9FeGNlcHRpb246OlhTRUNDcnlwdG9FeGNlcHRpb25UeXBlIFhTRUNDcnlwdG9FeGNlcHRpb246OmdldFR5cGUodm9pZCkgeworCisJcmV0dXJuIHR5cGU7CisKK30KZGlmZiAtLWdpdCBhL2Mvc3JjL2VuYy9YU0VDQ3J5cHRvRXhjZXB0aW9uLmhwcCBiL2Mvc3JjL2VuYy9YU0VDQ3J5cHRvRXhjZXB0aW9uLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTQ1MDM4Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZW5jL1hTRUNDcnlwdG9FeGNlcHRpb24uaHBwCkBAIC0wLDAgKzEsMTcwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYU0VDQ3J5cHRvRXhjZXB0aW9uOj0gSG93IHdlIHRocm93IGV4Y2VwdGlvbnMgaW4gWFNFQworICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKyNpZm5kZWYgWFNFQ0NSWVBUT0VYQ0VQVElPTl9JTkNMVURFCisjZGVmaW5lIFhTRUNDUllQVE9FWENFUFRJT05fSU5DTFVERQorCisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDU2FmZUJ1ZmZlci5ocHA+CisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworLyoqCisgKiBAaW5ncm91cCBjcnlwdG8KKyAqLworCisvKioKKyAqXGJyaWVmIEV4Y2VwdGlvbiBzdHJpbmdzCisgKgorICogR2xvYmFsIGFycmF5IG9mIHN0cmluZ3MgdGhhdCBjYW4gYmUgbG9va2VkIHVwIHVzaW5nIHRoZSAjdHlwZSBlbGVtZW50CisgKiBvZiBhbiBYU0VDQ3J5cHRvRXhjZXB0aW9uIHRvIGRldGVybWluZSBhIGRlZmF1bHQgc3RyaW5nIGZvciB0aGUgZXJybworICovCisKKworZXh0ZXJuIGNvbnN0IGNoYXIgKiBYU0VDQ3J5cHRvRXhjZXB0aW9uU3RyaW5nc1tdOworCisvKioKKyAqIEBpbmdyb3VwIGNyeXB0bworICovCisKKy8qKgorICogXGJyaWVmIEV4Y2VwdGlvbiBjbGFzcyB1c2VkIGJ5IHRoZSBjcnlwdG9ncmFwaGljIG1vZHVsZXMKKyAqCisgKiBUaGlzIGV4Y2VwdGlvbiBjbGFzcyBzaG91bGQgYmUgdXNlZCBieSB0aGUgQ3J5cHRvZ3JhcGhpYyBwcm92aWRlcnMKKyAqIGZvciByZXBvcnRpbmcgZXJyb3JzLiBJdCBjYW4gYmUgdXNlZCBkaXJlY3RseSBvciBieSBjbGFzc2VzIHdoaWNoCisgKiBpbmhlcml0IGZyb20gaXQuCisgKgorICogSXQncyBhIGZhaXJseSBzdGFuZGFyZCBleGNlcHRpb24gY2xhc3MsIHdpdGggYSB0eXBlIHBhcmFtZXRlcgorICogKGFuZCBhc3NvY2lhdGVkIGVudW1lcmF0ZWQgdHlwZSkgYW5kIGEgc3RyaW5nIHRoYXQgY2FuIGJlIHVzZWQgdG8KKyAqIHByb3ZpZGUgbW9yZSBpbmZvcm1hdGlvbiB0byB0aGUgY2FsbGVyLgorICovCisKK2NsYXNzIERTSUdfRVhQT1JUIFhTRUNDcnlwdG9FeGNlcHRpb24geworCitwdWJsaWM6CisKKwkvKioKKwkgKiBcYnJpZWYgRGVmaW5lcyB0aGUgZXJyb3IgdHlwZQorCSAqCisJICogRW51bWVyYXRlZCB0eXBlIHRoYXQgY2FuIGJlIGxvb2tlZCB1cCBieSB0aGUgcmVjZWl2ZXIgb2YgdGhlCisJICogZXhjZXB0aW9uIHRvIGRldGVybWluZSB3aGF0IHRoZSBlcnJvciB3YXMuCisJICoKKwkgKiBDYW4gYWxzbyBiZSB1c2VkIGFzIGEgbG9va3VwIGludG8gdGhlIFhTRUNDcnlwdG9FeGNlcHRpb25TdHJpbmdzCisJICogZ2xvYmFsIGFycmF5IGZvciBhIGRlZmF1bHQgZXJyb3IgZGVzY3JpcHRpb24KKwkgKi8KKworCWVudW0gWFNFQ0NyeXB0b0V4Y2VwdGlvblR5cGUgeworCisJCU5vbmUJCQkJCQk9IDAsCisJCUdlbmVyYWxFcnJvcgkJCQk9IDEsCisJCU1ERXJyb3IJCQkJCQk9IDIsCQkvLyBFcnJvciBpbiBNZXNzYWdlIERpZ2VzdAorCQlCYXNlNjRFcnJvcgkJCQkJPSAzLAkJLy8gRXJyb3IgaW4gYSBCYXNlNjQgb3BlcmF0aW9uCisJCU1lbW9yeUVycm9yCQkJCQk9IDQsCQkvLyBNZW1vcnkgYWxsb2NhdGlvbiBlcnJvcgorCQlYNTA5RXJyb3IJCQkJCT0gNSwJCS8vIFg1MDkgcHJvYmxlbQorCQlEU0FFcnJvcgkJCQkJPSA2LAkJLy8gRFNBIEVycm9yCisJCVJTQUVycm9yCQkJCQk9IDcsCQkvLyBSU0EgRXJyb3IKKwkJU3ltbWV0cmljRXJyb3IJCQkJPSA4LAorCQlVbnN1cHBvcnRlZEVycm9yCQkJPSA5LAkJLy8gQ2FsbGVkIGZ1bmN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQKKwkJVW5zdXBwb3J0ZWRBbGdvcml0aG0gICAgICAgID0gMTAsCisgICAgICAgIEVDRXJyb3IgICAgICAgICAgICAgICAgICAgICA9IDExLAorCQlVbmtub3duRXJyb3IJCQkJPSAxMgkJLy8gTXVzdCBiZSBsYXN0IQorCisJfTsKKworCQorcHVibGljOgorCisJLyoqIEBuYW1lIENvbnRydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBDb21tb24gY29uc3RydWN0dXIKKwkgKgorCSAqIENvbnN0cnVjdCBhbiBleGNlcHRpb24gd2l0aCB0aGUgZ2l2ZW4gdHlwZSBhbmQgKHBvc3NpYmx5IGJsYW5rKQorCSAqIG1lc3NhZ2UuCisJICoKKwkgKiBAcGFyYW0gZU51bSBUaGUgZXJyb3IgdHlwZQorCSAqIEBwYXJhbSBpbk1zZyBUaGUgbWVzc2FnZSB0byBiZSBwYXNzZWQgdG8gdGhlIGNhbGxlci4gIElmIE5VTEwKKwkgKiB0aGlzIHdpbGwgYmUgc2V0IHRvIHRoZSBhc3NvY2lhdGVkIHZhbHVlIGluIAorCSAqIFhTRUNDcnlwdG9FeGNlcHRpb25TdHJpbmdzCisJICovCisKKwlYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb25UeXBlIGVOdW0sIGNvbnN0IGNoYXIgKiBpbk1zZyA9IE5VTEwpOworCisJLyoqCisJICogXGJyaWVmIHNhZmVCdWZmZXIgY29uc3RydWN0b3IKKwkgKgorCSAqIEFzIGZvciB0aGUgY29tbW9uIGNvbnN0cnVjdG9yLCBidXQgcGFzc2VzIGluIGEgc2FmZUJ1ZmZlciBtZXNzYWdlCisJICoKKwkgKiBAcGFyYW0gZU51bSBUaGUgZXJyb3IgdHlwZQorCSAqIEBwYXJhbSBpbk1zZyBUaGUgbWVzc2FnZSBzdHJpbmcgdG8gYmUgcGFzc2VkIHRvIHRoZSBjYWxsZXIuCisJICovCisKKwlYU0VDQ3J5cHRvRXhjZXB0aW9uKFhTRUNDcnlwdG9FeGNlcHRpb25UeXBlIGVOdW0sIHNhZmVCdWZmZXIgJmluTXNnKTsKKworCS8qKgorCSAqIFxicmllZiBDb3B5IENvbnN0cnVjdG9yLgorCSAqCisJICogQHBhcmFtIHRvQ29weSBUaGUgZXhjZXB0aW9uIHRvIGJlIGNvcGllZCBpbnRvIHRoZSBuZXcgZXhjZXB0aW9uCisJICovCisKKwlYU0VDQ3J5cHRvRXhjZXB0aW9uKGNvbnN0IFhTRUNDcnlwdG9FeGNlcHRpb24gJnRvQ29weSk7CisJflhTRUNDcnlwdG9FeGNlcHRpb24oKTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBHZXQgTWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIG1lc3NhZ2UKKwkgKgorCSAqIEFsbG93cyB0aGUgcmVjZWl2ZXIgb2YgdGhlIGV4Y2VwdGlvbiB0byBnZXQgdGhlIGVycm9yIG1lc3NhZ2UuCisJICoKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIGNoYXIgYnVmZmVyIGhvbGRpbmcgdGhlIGVycm9yIHN0cmluZworCSAqLworCisJY29uc3QgY2hhciAqIGdldE1zZyh2b2lkKTsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIGVycm9yIHR5cGUKKwkgKgorCSAqIEByZXR1cm5zIFRoZSBlcnJvciB0eXBlIG9mIHRoZSBlcnJvciB0aGF0IGNhdXNlZCB0aGUgZXhjZXB0aW9uCisJICovCisKKwkvL0B9IAorCisJWFNFQ0NyeXB0b0V4Y2VwdGlvblR5cGUgZ2V0VHlwZSh2b2lkKTsKKworcHJpdmF0ZToKKworCWNoYXIJCQkJKiBtc2c7CQkJCS8vIE1lc3NhZ2UgdG8gdGhlIGNhbGxlcgorCVhTRUNDcnlwdG9FeGNlcHRpb25UeXBlCXR5cGU7CQkJCS8vIFR5cGUgb2YgZXhjZXB0aW9uCisJWFNFQ0NyeXB0b0V4Y2VwdGlvbigpOworCit9OworCisKKyNlbmRpZiAvKiBYU0VDQ3J5cHRvRVhDRVBUSU9OX0hFQURFUiAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL1hTRUNDcnlwdG9IYXNoLmhwcCBiL2Mvc3JjL2VuYy9YU0VDQ3J5cHRvSGFzaC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg5NDI4NAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9YU0VDQ3J5cHRvSGFzaC5ocHAKQEAgLTAsMCArMSwxNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNDcnlwdG9Qcm92aWRlciA6PSBCYXNlIHZpcnR1YWwgY2xhc3MgdG8gZGVmaW5lIGEgaGFzaCBhbGdvcml0aG0KKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWFNFQ0NSWVBUT0hBU0hfSU5DTFVERQorI2RlZmluZSBYU0VDQ1JZUFRPSEFTSF9JTkNMVURFCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b0tleS5ocHA+CisKKyNkZWZpbmUgWFNFQ19NQVhfSEFTSF9TSVpFCQkJMjU2CQkvKiBNYXggc2l6ZSBvZiBhbnkgZXhwZWN0ZWQgaGFzaCBhbGdvcml0aG1zIChvdmVyc2l6ZWQpICovCisjZGVmaW5lIFhTRUNfTUFYX0hBU0hfQkxPQ0tfU0laRQk2NAkJLyogTWF4IHNpemUgb2YgYmxvY2tzIHVzZWQgLSBNRDUgYW5kIFNIQTEgYXJlIGJvdGggNjQgYnl0ZXMqLworCisvKioKKyAqIEBpbmdyb3VwIGNyeXB0bworICovCisKKy8qKgorICogXGJyaWVmIEludGVyZmFjZSBkZWZpbml0aW9uIGZvciBIYXNoIGZ1bmN0aW9ucy4KKyAqCisgKiBUaGUgWFNFQ0NyeXB0b0hhc2ggZnVuY3Rpb24gaXMgdXNlZCBieSB0aGUgbGlicmFyeSB0byBtYW5pcHVsYXRlCisgKiBIYXNoaW5nIChEaWdlc3QpIGZ1bmN0aW9ucy4KKyAqCisgKiBJdCBpcyBhbHNvIHVzZWQgYXMgdGhlIGJhc2UgY2xhc3MgZm9yIEhNQUMgZnVuY3Rpb25zLCBhbmQgdGh1cyBoYXMKKyAqIGEgI3NldEtleSgpIG1ldGhvZC4KKyAqCisgKiBAdG9kbyBicmluZyB0aGUgaW50ZXJmYWNlIGhlcmUgaW4tbGluZSB3aXRoIHRoYXQgcHJvdmlkZWQgZm9yCisgKiBYU0VDQ3J5cHRvQmFzZTY0IC0gcmVhbGx5IHNob3VsZCBoYXZlIG9ubHkgb25lIHdheSBvZiBjYWxsaW5nIHRoZXNlCisgKiBraW5kcyBvZiBvYmplY3RzLgorICoKKyAqLworCitjbGFzcyBEU0lHX0VYUE9SVCBYU0VDQ3J5cHRvSGFzaCB7CisKKworcHVibGljIDoKKworCS8qKgorCSAqIFxicmllZiBFbnVtZXJhdGlvbiBvZiBIYXNoIChEaWdlc3QpIHR5cGVzCisJICoKKwkgKiBUaGUgaGFzaCB0eXBlcyBrbm93biB0byBYU0VDCisJICovCisKKwllbnVtIEhhc2hUeXBlIHsKKworCQlIQVNIX05PTkUJCQk9IDAsCisJCUhBU0hfU0hBMQkJCT0gMSwKKwkJSEFTSF9NRDUJCQk9IDIsCisJCUhBU0hfU0hBMjI0CQkJPSAzLAorCQlIQVNIX1NIQTI1NgkJCT0gNCwKKwkJSEFTSF9TSEEzODQJCQk9IDUsCisJCUhBU0hfU0hBNTEyCQkJPSA2CisKKwl9OworCisJLy8gQ29uc3RydWN0b3JzL0Rlc3RydWN0b3JzCisJCisJWFNFQ0NyeXB0b0hhc2goKSB7fTsKKwl2aXJ0dWFsIH5YU0VDQ3J5cHRvSGFzaCgpIHt9OworCisJLyoqIEBuYW1lIERpZ2VzdC9IYXNoIGZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBSZXN0IHRoZSBoYXNoIGZ1bmN0aW9uCisJICoKKwkgKiBYU0VDIHdpbGwgY2FsbCB0aGUgI3Jlc2V0KCkgZnVuY3Rpb24gcHJpb3IgdG8gcmUtdXNpbmcgYSBDcnlwdG9IYXNoCisJICogb2JqZWN0LgorCSAqLworCisJdmlydHVhbCB2b2lkCQlyZXNldCh2b2lkKSA9IDA7CQkJCQkvLyBSZXNldCB0aGUgaGFzaAorCisJLyoqCisJICogXGJyaWVmIEhhc2ggc29tZSBkYXRhLgorCSAqCisJICogVGFrZSBsZW5ndGggYnl0ZXMgb2YgZGF0YSBmcm9tIHRoZSBkYXRhIGJ1ZmZlciBhbmQgdXBkYXRlIHRoZSBoYXNoCisJICogdGhhdCBhbHJlYWR5IGV4aXN0cy4gIFRoaXMgZnVuY3Rpb24gbWF5IChhbmQgbm9ybWFsbHkgd2lsbCkgYmUgY2FsbGVkCisJICogbWFueSB0aW1lcyBmb3IgbGFyZ2UgYmxvY2tzIG9mIGRhdGEuCisJICoKKwkgKiBAcGFyYW0gZGF0YSBUaGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8gYmUgaGFzaGVkLgorCSAqIEBwYXJhbSBsZW5ndGggVGhlIG51bWJlciBvZiBieXRlcyB0byBiZSByZWFkIGZyb20gZGF0YQorCSAqLworCisJdmlydHVhbCB2b2lkCQloYXNoKHVuc2lnbmVkIGNoYXIgKiBkYXRhLCAKKwkJCQkJCQkgdW5zaWduZWQgaW50IGxlbmd0aCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIEZpbmlzaCB1cCBhIERpZ2VzdCBvcGVyYXRpb24gYW5kIHJlYWQgdGhlIHJlc3VsdC4KKwkgKgorCSAqIFRoaXMgY2FsbCB0ZWxscyB0aGUgQ3J5cHRvSGFzaCBvYmplY3QgdGhhdCB0aGUgaW5wdXQgaXMgY29tcGxldGUgYW5kCisJICogdG8gZmluYWxpc2UgdGhlIERpZ2VzdC4gIFRoZSBvdXRwdXQgb2YgdGhlIGRpZ2VzdCBpcyByZWFkIGludG8gdGhlIAorCSAqIGhhc2ggYnVmZmVyIChhdCBtb3N0IG1heExlbmd0aCBieXRlcykKKwkgKgorCSAqIEBwYXJhbSBoYXNoIFRoZSBidWZmZXIgdGhlIGhhc2ggc2hvdWxkIGJlIHJlYWQgaW50by4KKwkgKiBAcGFyYW0gbWF4TGVuZ3RoIFRoZSBtYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byBiZSByZWFkIGludG8gaGFzaAorCSAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgYnl0ZXMgY29waWVkIGludG8gdGhlIGhhc2ggYnVmZmVyCisJICovCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCBmaW5pc2godW5zaWduZWQgY2hhciAqIGhhc2gsCisJCQkJCQkJCXVuc2lnbmVkIGludCBtYXhMZW5ndGgpID0gMDsvLyBGaW5pc2ggYW5kIGdldCBoYXNoCisKKwkvL0B9CisKKwkvKiogQG5hbWUgSW5mb3JtYXRpb24gZnVuY3Rpb25zICovCisJLy9AeworCisJLyoqCisJICpcYnJpZWYKKwkgKgorCSAqIERldGVybWluZSB0aGUgaGFzaCB0eXBlIG9mIHRoaXMgb2JqZWN0CisJICoKKwkgKiBAcmV0dXJucyBUaGUgaGFzaCB0eXBlCisJICovCisKKwl2aXJ0dWFsIEhhc2hUeXBlIGdldEhhc2hUeXBlKHZvaWQpIGNvbnN0ID0gMDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBITUFDIEZ1bmN0aW9ucyAqLworCS8vQHsKKwkKKwkvKioKKwkgKlxicmllZgorCSAqCisJICogVGhlIEhNQUMgY2xhc3NlcyBhcmUgdHJlYXRlZCBpbiB0aGUgbGlicmFyeSBhcyBzdGFuZGFyZCBoYXNoCisJICogb2JqZWN0cyB0aGF0IGp1c3QgaGFwcGVuIHRvIHRha2UgYSBrZXkuICBUaHVzIGFsbCBoYXNoIGZ1bmN0aW9ucworCSAqIGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uIChwb3RlbnRpYWxseSBqdXN0IHRvIHRocm93IGFuIGV4Y2VwdGlvbikKKwkgKgorCSAqIFNldHMgdGhlIGtleSAtIHdoaWNoIG5lZWRzIHRvIGhhdmUgYSBiYXNlIGNsYXNzIG9mIAorCSAqIFhTRUNDcnlwdG9LZXlITUFDLgorCSAqCisJICogQHBhcmFtIGtleSBUaGUga2V5IHRoZSBITUFDIGZ1bmN0aW9uIHNob3VsZCB1c2UuCisJICovCisKKwl2aXJ0dWFsIHZvaWQJCXNldEtleShYU0VDQ3J5cHRvS2V5ICoga2V5KSA9IDA7CisKKwkvL0B9CisKK307CisKKyNlbmRpZiAvKiBYU0VDQ1JZUFRPSEFTSF9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvWFNFQ0NyeXB0b0tleS5ocHAgYi9jL3NyYy9lbmMvWFNFQ0NyeXB0b0tleS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQwZDk1YwotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9YU0VDQ3J5cHRvS2V5LmhwcApAQCAtMCwwICsxLDEzMSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ0NyeXB0b0tleSA6PSBDb250YWluZXIgY2xhc3MgdG8gaG9sZCBjcnlwdG9ncmFwaGljIGtleXMKKyAqCQkJCQlTaG91bGQgYmUgcmUtaW1wbGVtZW50ZWQgYnkgYWxsIHByb3ZpZGVycyBhcyB0aGUgYmFzZSBjbGFzcworICogICAgICAgICAgICAgICAgICBmb3IgYWxsIGtleXMKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKworCisjaWZuZGVmIFhTRUNDUllQVE9LRVlfSU5DTFVERQorI2RlZmluZSBYU0VDQ1JZUFRPS0VZX0lOQ0xVREUKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0NvbnN0YW50cy5ocHA+CisKKy8qKgorICogXGluZ3JvdXAgY3J5cHRvCisgKi8KKworLyoqCisgKiBcYnJpZWYgQmFzZSBpbnRlcmZhY2UgY2xhc3MgZm9yIGtleSBtYXRlcmlhbC4KKyAqCisgKiBBbGwga2V5cyB1c2VkIGZvciBzaWduaW5nIGFuZCBlbmNyeXB0aW5nIGFyZSBkZXJpdmVkIGZyb20gdGhpcworICogYmFzZSBpbnRlcmZhY2UgY2xhc3MuICBUaGVyZSBhcmUgbm8gbWV0aG9kcyBmb3IgcGVyZm9ybWluZworICogY3J5cHRvZ3JhcGhpYyBmdW5jdGlvbnMsIGFzIHRoaXMgaXMgYSBiYXNlIGNsYXNzIHVzZWQgdG8gYWxsb3cKKyAqIHRoZSBsaWJyYXJ5IHRvIHBhc3Mga2V5IG1hdGVyaWFsIHRvIHZhcmlvdXMgb2JqZWN0cyB3aXRob3V0CisgKiBrbm93aW5nIGhvdyB0byBkaXJlY3RseSB1c2UgaXQuCisgKi8KKworY2xhc3MgRFNJR19FWFBPUlQgWFNFQ0NyeXB0b0tleSB7CisKK3B1YmxpYyA6CisKKwkvKioKKwkgKiBcYnJpZWYgS2V5IHR5cGVzIHVuZGVyc3Rvb2QgYnkgdGhlIGxpYnJhcnkKKwkgKgorCSAqIFRoaXMgdHlwZSBkZWZpbmVzIHRoZSBsaXN0IG9mIGtleSB0eXBlcyB0aGF0IHRoZSBsaWJyYXJ5CisJICogdW5kZXJzdGFuZHMuCisJICovCisKKwllbnVtIEtleVR5cGUgeworCisJCUtFWV9OT05FLAorCQlLRVlfRFNBX1BVQkxJQywKKwkJS0VZX0RTQV9QUklWQVRFLAorCQlLRVlfRFNBX1BBSVIsCisJCUtFWV9SU0FfUFVCTElDLAorCQlLRVlfUlNBX1BSSVZBVEUsCisJCUtFWV9SU0FfUEFJUiwKKwkJS0VZX0hNQUMsCisJCUtFWV9TWU1NRVRSSUMsCisJCUtFWV9FQ19QVUJMSUMsCisJCUtFWV9FQ19QUklWQVRFLAorCQlLRVlfRUNfUEFJUgorCQorCX07CisKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCQorCS8qKgorCSAqIFxicmllZiBDb25zdHJ1Y3RvcgorCSAqKi8KKworCVhTRUNDcnlwdG9LZXkoKSB7fTsKKworCS8qKgorCSAqIFxicmllZiBEZXN0cnVjdG9yIAorCSAqCisJICogSW1wbGVtZW50YXRpb25zIG11c3QgZW5zdXJlIHRoYXQgdGhlIGhlbGQga2V5IGlzIHByb3Blcmx5IGRlc3Ryb3llZAorCSAqIChvdmVyd3JpdHRlbikgd2hlbiBrZXkgb2JqZWN0cyBhcmUgZGVsZXRlZC4KKwkgKi8KKworCXZpcnR1YWwgflhTRUNDcnlwdG9LZXkoKSB7fTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBJbnRlcmZhY2UgY2xhc3NlcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm5zIHRoZSB0eXBlIG9mIHRoaXMga2V5LgorCSAqLworCisJdmlydHVhbCBLZXlUeXBlIGdldEtleVR5cGUoKSBjb25zdCB7cmV0dXJuIEtFWV9OT05FO30KKworCS8qKgorCSAqIFxicmllZiBSZXR1cm5zIGEgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB0aGUgY3J5cHRvIG93bmVyIG9mIHRoaXMgbGlicmFyeS4KKwkgKi8KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRQcm92aWRlck5hbWUoKSBjb25zdCA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgQ2xvbmUgdGhlIGtleQorCSAqCisJICogQWxsIGtleXMgbmVlZCB0byBiZSBhYmxlIHRvIGNvcHkgdGhlbXNlbHZlcyBhbmQgcmV0dXJuCisJICogYSBwb2ludGVyIHRvIHRoZSBjb3B5LiAgVGhpcyBhbGxvd3MgdGhlIGxpYnJhcnkgdG8gCisJICogZHVwbGljYXRlIGtleXMuCisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXkgKiBjbG9uZSgpIGNvbnN0ID0gMDsKKworICAvL0B9CisKK307CisKKworI2VuZGlmIC8qIFhTRUNDUllQVE9LRVlfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL1hTRUNDcnlwdG9LZXlEU0EuaHBwIGIvYy9zcmMvZW5jL1hTRUNDcnlwdG9LZXlEU0EuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlMTA5ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9lbmMvWFNFQ0NyeXB0b0tleURTQS5ocHAKQEAgLTAsMCArMSwxODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDEwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNDcnlwdG9LZXlEU0EgOj0gRFNBIEtleXMKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWFNFQ0NSWVBUT0tFWURTQV9JTkNMVURFCisjZGVmaW5lIFhTRUNDUllQVE9LRVlEU0FfSU5DTFVERQorCisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b0tleS5ocHA+CisKKy8qKgorICogXGluZ3JvdXAgY3J5cHRvCisgKi8KKworLyoqCisgKiBcYnJpZWYgSW50ZXJmYWNlIGNsYXNzIGZvciBEU0Ega2V5cy4KKyAqCisgKiBUaGUgbGlicmFyeSB1c2VzIGNsYXNzZXMgZGVyaXZlZCBmcm9tIHRoaXMgdG8gcHJvY2VzcyBEU0Ega2V5cy4KKyAqLworCitjbGFzcyBEU0lHX0VYUE9SVCBYU0VDQ3J5cHRvS2V5RFNBIDogcHVibGljIFhTRUNDcnlwdG9LZXkgeworCitwdWJsaWMgOgorCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisJCisJWFNFQ0NyeXB0b0tleURTQSgpIHt9OworCXZpcnR1YWwgflhTRUNDcnlwdG9LZXlEU0EoKSB7fTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBLZXkgSW50ZXJmYWNlIG1ldGhvZHMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIHRoZSB0eXBlIG9mIHRoaXMga2V5LgorCSAqCisJICogRm9yIERTQSBrZXlzLCB0aGlzIGFsbG93cyBwZW9wbGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBpcyBhIAorCSAqIHB1YmxpYyBrZXksIHByaXZhdGUga2V5IG9yIGEga2V5IHBhaXIKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0tleTo6S2V5VHlwZSBnZXRLZXlUeXBlKCkgY29uc3Qge3JldHVybiBLRVlfTk9ORTt9CisKKwkvKioKKwkgKiBcYnJpZWYgUmVwbGljYXRlIGtleQorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvS2V5ICogY2xvbmUoKSBjb25zdCA9IDA7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgTWFuZGF0b3J5IERTQSBpbnRlcmZhY2UgbWV0aG9kcyAKKwkgKgorCSAqIFRoZXNlIG1ldGhvZHMgYXJlIHJlcXVpcmVkIGJ5IHRoZSBsaWJyYXJ5LgorCSAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBWZXJpZnkgYSBzaWduYXR1cmUKKwkgKgorCSAqIFRoZSBsaWJyYXJ5IHdpbGwgY2FsbCB0aGlzIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIGEgc2lnbmF0dXJlCisJICoKKwkgKiBAcGFyYW0gaGFzaEJ1ZiBCdWZmZXIgY29udGFpbmluZyB0aGUgcHJlLWNhbGN1bGF0ZWQgKGJpbmFyeSkgZGlnZXN0CisJICogQHBhcmFtIGhhc2hMZW4gTGVuZ3RoIG9mIHRoZSBkYXRhIGluIHRoZSBkaWdlc3QgYnVmZmVyCisJICogQHBhcmFtIGJhc2U2NFNpZ25hdHVyZSBCdWZmZXIgY29udGFpbmluZyB0aGUgQmFzZTY0IGVuY29kZWQgc2lnbmF0dXJlCisJICogQHBhcmFtIHNpZ0xlbiBMZW5ndGggb2YgdGhlIGRhdGEgaW4gdGhlIHNpZ25hdHVyZSBidWZmZXIKKwkgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBzaWduYXR1cmUgd2FzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UKKwkgKi8KKworCXZpcnR1YWwgYm9vbCB2ZXJpZnlCYXNlNjRTaWduYXR1cmUodW5zaWduZWQgY2hhciAqIGhhc2hCdWYsIAorCQkJCQkJCQkgdW5zaWduZWQgaW50IGhhc2hMZW4sCisJCQkJCQkJCSBjaGFyICogYmFzZTY0U2lnbmF0dXJlLAorCQkJCQkJCQkgdW5zaWduZWQgaW50IHNpZ0xlbikgPSAwOworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIHNpZ25hdHVyZQorCSAqCisJICogVGhlIGxpYnJhcnkgd2lsbCBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gY3JlYXRlIGEgc2lnbmF0dXJlIGZyb20KKwkgKiBhIHByZS1jYWxjdWxhdGVkIGRpZ2VzdC4gIFRoZSBvdXRwdXQgc2lnbmF0dXJlIGlzIHJlcXVpcmVkIHRvCisJICogYmUgQmFzZTY0IGVuY29kZWQgc3VjaCB0aGF0IGl0IGNhbiBiZSBwbGFjZWQgZGlyZWN0bHkgaW50byB0aGUKKwkgKiBYTUwgZG9jdW1lbnQKKwkgKgorCSAqIEBwYXJhbSBoYXNoQnVmIEJ1ZmZlciBjb250YWluaW5nIHRoZSBwcmUtY2FsY3VsYXRlZCAoYmluYXJ5KSBkaWdlc3QKKwkgKiBAcGFyYW0gaGFzaExlbiBOdW1iZXIgb2YgYnl0ZXMgb2YgaGFzaCBpbiB0aGUgaGFzaEJ1ZgorCSAqIEBwYXJhbSBiYXNlNjRTaWduYXR1cmVCdWYgQnVmZmVyIHRvIHBsYWNlIHRoZSBiYXNlNjQgZW5jb2RlZCByZXN1bHQKKwkgKiBpbi4KKwkgKiBAcGFyYW0gYmFzZTY0U2lnbmF0dXJlQnVmTGVuIEltcGxlbWVudGF0aW9ucyBuZWVkIHRvIGVuc3VyZSB0aGV5IGRvCisJICogbm90IHdyaXRlIG1vcmUgYnl0ZXMgdGhhbiB0aGlzIGludG8gdGhlIGJ1ZmZlcgorCSAqLworCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgc2lnbkJhc2U2NFNpZ25hdHVyZSh1bnNpZ25lZCBjaGFyICogaGFzaEJ1ZiwKKwkJdW5zaWduZWQgaW50IGhhc2hMZW4sCisJCWNoYXIgKiBiYXNlNjRTaWduYXR1cmVCdWYsCisJCXVuc2lnbmVkIGludCBiYXNlNjRTaWduYXR1cmVCdWZMZW4pID0gMDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBPcHRpb25hbCBJbnRlcmZhY2UgbWV0aG9kcworCSAqIAorCSAqIFRoZXNlIGZ1bmN0aW9ucyBkbyBub3QgbmVjZXNzYXJpbHkgaGF2ZSB0byBiZSBpbXBsbWVudGVkLiAgVGhleQorCSAqIGFyZSB1c2VkIGJ5IFhTRUNLZXlJbmZvUmVzb2x2ZXJEZWZhdWx0IHRvIHRyeSB0byBjcmVhdGUgYSBrZXkgZnJvbQorCSAqIEtleUluZm8gZWxlbWVudHMgd2l0aG91dCBrbm93aW5nIGFueXRoaW5nIGVsc2UuCisJICoKKwkgKiBJZiBhbiBpbnRlcmZhY2UgY2xhc3MgZG9lcyBub3QgaW1wbGVtZW50IHRoZXNlIGZ1bmN0aW9ucywgYSBzaW1wbGUKKwkgKiBzdHViIHRoYXQgZG9lcyBub3RoaW5nIHNob3VsZCBiZSB1c2VkLgorCSAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBMb2FkIFAKKwkgKgorCSAqIEBwYXJhbSBiNjQgQmFzZTY0IGVuY29kZWQgcGFyYW1ldGVyIC0gcmVhZCBmcm9tIFhNTCBkb2N1bWVudAorCSAqIEBwYXJhbSBsZW4gTGVuZ3RoIG9mIHRoZSBlbmNvZGVkIHN0cmluZworCSAqLworCisJdmlydHVhbCB2b2lkIGxvYWRQQmFzZTY0QmlnTnVtcyhjb25zdCBjaGFyICogYjY0LCB1bnNpZ25lZCBpbnQgbGVuKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgTG9hZCBRCisJICoKKwkgKiBAcGFyYW0gYjY0IEJhc2U2NCBlbmNvZGVkIHBhcmFtZXRlciAtIHJlYWQgZnJvbSBYTUwgZG9jdW1lbnQKKwkgKiBAcGFyYW0gbGVuIExlbmd0aCBvZiB0aGUgZW5jb2RlZCBzdHJpbmcKKwkgKi8KKworCXZpcnR1YWwgdm9pZCBsb2FkUUJhc2U2NEJpZ051bXMoY29uc3QgY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbikgPSAwOworCisJLyoqCisJICogXGJyaWVmIExvYWQgRworCSAqCisJICogQHBhcmFtIGI2NCBCYXNlNjQgZW5jb2RlZCBwYXJhbWV0ZXIgLSByZWFkIGZyb20gWE1MIGRvY3VtZW50CisJICogQHBhcmFtIGxlbiBMZW5ndGggb2YgdGhlIGVuY29kZWQgc3RyaW5nCisJICovCisKKwl2aXJ0dWFsIHZvaWQgbG9hZEdCYXNlNjRCaWdOdW1zKGNvbnN0IGNoYXIgKiBiNjQsIHVuc2lnbmVkIGludCBsZW4pID0gMDsKKworCS8qKgorCSAqIFxicmllZiBMb2FkIFkKKwkgKgorCSAqIEBwYXJhbSBiNjQgQmFzZTY0IGVuY29kZWQgcGFyYW1ldGVyIC0gcmVhZCBmcm9tIFhNTCBkb2N1bWVudAorCSAqIEBwYXJhbSBsZW4gTGVuZ3RoIG9mIHRoZSBlbmNvZGVkIHN0cmluZworCSAqLworCisJdmlydHVhbCB2b2lkIGxvYWRZQmFzZTY0QmlnTnVtcyhjb25zdCBjaGFyICogYjY0LCB1bnNpZ25lZCBpbnQgbGVuKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgTG9hZCBKCisJICoKKwkgKiBAcGFyYW0gYjY0IEJhc2U2NCBlbmNvZGVkIHBhcmFtZXRlciAtIHJlYWQgZnJvbSBYTUwgZG9jdW1lbnQKKwkgKiBAcGFyYW0gbGVuIExlbmd0aCBvZiB0aGUgZW5jb2RlZCBzdHJpbmcKKwkgKi8KKworCXZpcnR1YWwgdm9pZCBsb2FkSkJhc2U2NEJpZ051bXMoY29uc3QgY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbikgPSAwOworCisJLy9AfQorfTsKKworCisjZW5kaWYgLyogWFNFQ0NSWVBUT0tFWURTQV9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvWFNFQ0NyeXB0b0tleUVDLmhwcCBiL2Mvc3JjL2VuYy9YU0VDQ3J5cHRvS2V5RUMuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZjU4ODEKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9lbmMvWFNFQ0NyeXB0b0tleUVDLmhwcApAQCAtMCwwICsxLDE1NCBAQAorLyoNCisgKiBDb3B5cmlnaHQgMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoNCisgKiBYU0VDDQorICoNCisgKiBYU0VDQ3J5cHRvS2V5RUMgOj0gRUMgS2V5cw0KKyAqDQorICogQXV0aG9yKHMpOiBTY290dCBDYW50b3INCisgKg0KKyAqICRJZDokDQorICoNCisgKi8NCisNCisjaWZuZGVmIFhTRUNDUllQVE9LRVlFQ19JTkNMVURFDQorI2RlZmluZSBYU0VDQ1JZUFRPS0VZRUNfSU5DTFVERQ0KKw0KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvS2V5LmhwcD4NCisNCisvKioNCisgKiBcaW5ncm91cCBjcnlwdG8NCisgKi8NCisNCisvKioNCisgKiBcYnJpZWYgSW50ZXJmYWNlIGNsYXNzIGZvciBSU0Ega2V5cy4NCisgKg0KKyAqIFRoZSBsaWJyYXJ5IHVzZXMgY2xhc3NlcyBkZXJpdmVkIGZyb20gdGhpcyB0byBwcm9jZXNzIFJTQSBrZXlzLg0KKyAqLw0KKw0KKw0KK2NsYXNzIERTSUdfRVhQT1JUIFhTRUNDcnlwdG9LZXlFQyA6IHB1YmxpYyBYU0VDQ3J5cHRvS2V5IHsNCisNCitwdWJsaWMgOg0KKw0KKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLw0KKwkvL0B7DQorDQorCVhTRUNDcnlwdG9LZXlFQygpIHt9Ow0KKwl2aXJ0dWFsIH5YU0VDQ3J5cHRvS2V5RUMoKSB7fTsNCisNCisJLy9AfQ0KKw0KKwkvKiogQG5hbWUgS2V5IEludGVyZmFjZSBtZXRob2RzICovDQorCS8vQHsNCisNCisJLyoqDQorCSAqIFxicmllZiBSZXR1cm4gdGhlIHR5cGUgb2YgdGhpcyBrZXkuDQorCSAqDQorCSAqIEZvciBFQyBrZXlzLCB0aGlzIGFsbG93cyBwZW9wbGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBpcyBhIA0KKwkgKiBwdWJsaWMga2V5LCBwcml2YXRlIGtleSBvciBhIGtleSBwYWlyDQorCSAqLw0KKw0KKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXk6OktleVR5cGUgZ2V0S2V5VHlwZSgpIGNvbnN0IHtyZXR1cm4gS0VZX05PTkU7fQ0KKwkNCisJLyoqDQorCSAqIFxicmllZiBSZXBsaWNhdGUga2V5DQorCSAqLw0KKw0KKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXkgKiBjbG9uZSgpIGNvbnN0ID0gMDsNCisNCisJLy9AfQ0KKw0KKwkvKiogQG5hbWUgTWFuZGF0b3J5IEVDIGludGVyZmFjZSBtZXRob2RzIA0KKwkgKg0KKwkgKiBUaGVzZSBtZXRob2RzIGFyZSByZXF1aXJlZCBieSB0aGUgbGlicmFyeS4NCisJICovDQorCS8vQHsNCisNCisJLyoqDQorCSAqIFxicmllZiBWZXJpZnkgYW4gRUMtRFNBIHNpZ25hdHVyZQ0KKwkgKg0KKwkgKiBUaGUgbGlicmFyeSB3aWxsIGNhbGwgdGhpcyBmdW5jdGlvbiB0byB2YWxpZGF0ZSBhIHNpZ25hdHVyZQ0KKwkgKg0KKwkgKiBAcGFyYW0gaGFzaEJ1ZiBCdWZmZXIgY29udGFpbmluZyB0aGUgcHJlLWNhbGN1bGF0ZWQgKGJpbmFyeSkgZGlnZXN0DQorCSAqIEBwYXJhbSBoYXNoTGVuIExlbmd0aCBvZiB0aGUgZGF0YSBpbiB0aGUgZGlnZXN0IGJ1ZmZlcg0KKwkgKiBAcGFyYW0gYmFzZTY0U2lnbmF0dXJlIEJ1ZmZlciBjb250YWluaW5nIHRoZSBCYXNlNjQgZW5jb2RlZCBzaWduYXR1cmUNCisJICogQHBhcmFtIHNpZ0xlbiBMZW5ndGggb2YgdGhlIGRhdGEgaW4gdGhlIHNpZ25hdHVyZSBidWZmZXINCisJICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgc2lnbmF0dXJlIHdhcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlDQorCSAqLw0KKw0KKwl2aXJ0dWFsIGJvb2wgdmVyaWZ5QmFzZTY0U2lnbmF0dXJlRFNBKHVuc2lnbmVkIGNoYXIgKiBoYXNoQnVmLCANCisJCQkJCQkJCSB1bnNpZ25lZCBpbnQgaGFzaExlbiwNCisJCQkJCQkJCSBjaGFyICogYmFzZTY0U2lnbmF0dXJlLA0KKwkJCQkJCQkJIHVuc2lnbmVkIGludCBzaWdMZW4pID0gMDsNCisNCisJLyoqDQorCSAqIFxicmllZiBDcmVhdGUgYW4gRUMtRFNBIHNpZ25hdHVyZQ0KKwkgKg0KKwkgKiBUaGUgbGlicmFyeSB3aWxsIGNhbGwgdGhpcyBmdW5jdGlvbiB0byBjcmVhdGUgYSBzaWduYXR1cmUgZnJvbQ0KKwkgKiBhIHByZS1jYWxjdWxhdGVkIGRpZ2VzdC4gIFRoZSBvdXRwdXQgc2lnbmF0dXJlIGlzIHJlcXVpcmVkIHRvDQorCSAqIGJlIEJhc2U2NCBlbmNvZGVkIHN1Y2ggdGhhdCBpdCBjYW4gYmUgcGxhY2VkIGRpcmVjdGx5IGludG8gdGhlDQorCSAqIFhNTCBkb2N1bWVudA0KKwkgKg0KKwkgKiBAcGFyYW0gaGFzaEJ1ZiBCdWZmZXIgY29udGFpbmluZyB0aGUgcHJlLWNhbGN1bGF0ZWQgKGJpbmFyeSkgZGlnZXN0DQorCSAqIEBwYXJhbSBoYXNoTGVuIE51bWJlciBvZiBieXRlcyBvZiBoYXNoIGluIHRoZSBoYXNoQnVmDQorCSAqIEBwYXJhbSBiYXNlNjRTaWduYXR1cmVCdWYgQnVmZmVyIHRvIHBsYWNlIHRoZSBiYXNlNjQgZW5jb2RlZCByZXN1bHQNCisJICogaW4uDQorCSAqIEBwYXJhbSBiYXNlNjRTaWduYXR1cmVCdWZMZW4gSW1wbGVtZW50YXRpb25zIG5lZWQgdG8gZW5zdXJlIHRoZXkgZG8NCisJICogbm90IHdyaXRlIG1vcmUgYnl0ZXMgdGhhbiB0aGlzIGludG8gdGhlIGJ1ZmZlcg0KKwkgKi8NCisNCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgc2lnbkJhc2U2NFNpZ25hdHVyZURTQSh1bnNpZ25lZCBjaGFyICogaGFzaEJ1ZiwNCisJCXVuc2lnbmVkIGludCBoYXNoTGVuLA0KKwkJY2hhciAqIGJhc2U2NFNpZ25hdHVyZUJ1ZiwNCisJCXVuc2lnbmVkIGludCBiYXNlNjRTaWduYXR1cmVCdWZMZW4pID0gMDsNCisNCisJLy9AfQ0KKw0KKwkvKiogQG5hbWUgT3B0aW9uYWwgSW50ZXJmYWNlIG1ldGhvZHMNCisJICogDQorCSAqIFRoZXNlIGZ1bmN0aW9ucyBkbyBub3QgbmVjZXNzYXJpbHkgaGF2ZSB0byBiZSBpbXBsbWVudGVkLiAgVGhleQ0KKwkgKiBhcmUgdXNlZCBieSBYU0VDS2V5SW5mb1Jlc29sdmVyRGVmYXVsdCB0byB0cnkgdG8gY3JlYXRlIGEga2V5IGZyb20NCisJICogS2V5SW5mbyBlbGVtZW50cyB3aXRob3V0IGtub3dpbmcgYW55dGhpbmcgZWxzZS4NCisJICoNCisJICogSWYgYW4gaW50ZXJmYWNlIGNsYXNzIGRvZXMgbm90IGltcGxlbWVudCB0aGVzZSBmdW5jdGlvbnMsIGEgc2ltcGxlDQorCSAqIHN0dWIgdGhhdCBkb2VzIG5vdGhpbmcgc2hvdWxkIGJlIHVzZWQuDQorCSAqLw0KKw0KKwkvL0B7DQorDQorCS8qKg0KKwkgKiBcYnJpZWYgTG9hZCB0aGUga2V5DQorCSAqDQorCSAqIExvYWQgdGhlIGtleSBmb3IgYSBuYW1lZCBjdXJ2ZSBmcm9tIGEgQmFzZTY0IGVuY29kZWQgc3RyaW5nDQorCSAqDQorICAgICAqIHBhcmFtIGN1cnZlTmFtZSAgYSBVUkkgaWRlbnRpZnlpbmcgdGhlIGN1cnZlICh0eXBpY2FsbHkgYW4gT0lEIFVSTikNCisJICogcGFyYW0gYjY0IEEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGVuY29kZWQgc3RyaW5nDQorCSAqIHBhcmFtIGxlbiBUaGUgbGVuZ3RoIG9mIHRoZSBkYXRhIGluIHRoZSBidWZmZXINCisJICovDQorDQorCXZpcnR1YWwgdm9pZCBsb2FkUHVibGljS2V5QmFzZTY0KGNvbnN0IGNoYXIqIGN1cnZlTmFtZSwNCisgICAgICAgIGNvbnN0IGNoYXIqIGI2NCwNCisgICAgICAgIHVuc2lnbmVkIGludCBsZW4pID0gMDsNCisNCisJLy9AfQ0KKw0KK307DQorDQorDQorDQorI2VuZGlmIC8qIFhTRUNDUllQVE9LRVlFQ19JTkNMVURFICovDQpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL1hTRUNDcnlwdG9LZXlITUFDLmhwcCBiL2Mvc3JjL2VuYy9YU0VDQ3J5cHRvS2V5SE1BQy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjgzYmQwZgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9YU0VDQ3J5cHRvS2V5SE1BQy5ocHAKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNDcnlwdG9LZXlITUFDIDo9IEhNQUMgS2V5cworICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYU0VDQ1JZUFRPS0VZSE1BQ19JTkNMVURFCisjZGVmaW5lIFhTRUNDUllQVE9LRVlITUFDX0lOQ0xVREUKKworI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9LZXkuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1NhZmVCdWZmZXIuaHBwPgorCisvKioKKyAqIFxpbmdyb3VwIGNyeXB0bworICovCisKKy8qKgorICogXGJyaWVmIEludGVyZmFjZSBjbGFzcyBmb3IgSE1BQyBrZXlzLgorICoKKyAqIFRoZSBsaWJyYXJ5IHVzZXMgY2xhc3NlcyBkZXJpdmVkIGZyb20gdGhpcyB0byBwcm9jZXNzIEhNQUMga2V5cy4KKyAqLworCitjbGFzcyBEU0lHX0VYUE9SVCBYU0VDQ3J5cHRvS2V5SE1BQyA6IHB1YmxpYyBYU0VDQ3J5cHRvS2V5IHsKKworcHVibGljIDoKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCQorCVhTRUNDcnlwdG9LZXlITUFDKCkge307CisJdmlydHVhbCB+WFNFQ0NyeXB0b0tleUhNQUMoKSB7fTsKKwkKKwkvL0B9CisKKwkvKiogQG5hbWUgS2V5IEludGVyZmFjZSBtZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFJldHVybiB0aGUgdHlwZSBvZiB0aGlzIGtleS4KKwkgKgorCSAqIEZvciBEU0Ega2V5cywgdGhpcyBhbGxvd3MgcGVvcGxlIHRvIGRldGVybWluZSB3aGV0aGVyIHRoaXMgaXMgYSAKKwkgKiBwdWJsaWMga2V5LCBwcml2YXRlIGtleSBvciBhIGtleSBwYWlyCisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXk6OktleVR5cGUgZ2V0S2V5VHlwZSgpIGNvbnN0IHtyZXR1cm4gS0VZX0hNQUM7fQorCisJLyoqCisJICogXGJyaWVmIFJlcGxpY2F0ZSBrZXkKKwkgKi8KKwkKKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXkgKiBjbG9uZSgpIGNvbnN0ID0gMDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBPcHRpb25hbCBJbnRlcmZhY2UgbWV0aG9kcworCSAqIAorCSAqIFRoZXNlIGZ1bmN0aW9ucyBkbyBub3QgbmVjZXNzYXJpbHkgaGF2ZSB0byBiZSBpbXBsbWVudGVkLiAgVGhleQorCSAqIGFyZSB1c2VkIGJ5IFhTRUNLZXlJbmZvUmVzb2x2ZXJEZWZhdWx0IHRvIHRyeSB0byBjcmVhdGUgYSBrZXkgZnJvbQorCSAqIEtleUluZm8gZWxlbWVudHMgd2l0aG91dCBrbm93aW5nIGFueXRoaW5nIGVsc2UuCisJICoKKwkgKiBJZiBhbiBpbnRlcmZhY2UgY2xhc3MgZG9lcyBub3QgaW1wbGVtZW50IHRoZXNlIGZ1bmN0aW9ucywgYSBzaW1wbGUKKwkgKiBzdHViIHRoYXQgZG9lcyBub3RoaW5nIHNob3VsZCBiZSB1c2VkLgorCSAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBTZXQgdGhlIGtleQorCSAqCisJICogU2V0IHRoZSBrZXkgZnJvbSB0aGUgYnVmZmVyCisJICoKKwkgKiBAcGFyYW0gaW5CdWYgQnVmZmVyIGNvbnRhaW5pbmcgdGhlIGtleQorCSAqIEBwYXJhbSBpbkxlbmd0aCBOdW1iZXIgb2YgYnl0ZXMgb2Yga2V5IGluIHRoZSBidWZmZXIKKwkgKi8KKworCXZpcnR1YWwgdm9pZCBzZXRLZXkodW5zaWduZWQgY2hhciAqIGluQnVmLCB1bnNpZ25lZCBpbnQgaW5MZW5ndGgpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIGtleSB2YWx1ZQorCSAqIAorCSAqIENvcHkgdGhlIGtleSBpbnRvIHRoZSBzYWZlQnVmZmVyIGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcworCSAqIGNvcGllZC4KKwkgKgorCSAqIEBwYXJhbSBvdXRCdWYgQnVmZmVyIHRvIGNvcHkga2V5IGludG8KKwkgKiBAcmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgY29waWVkIGluCisJICovCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRLZXkoc2FmZUJ1ZmZlciAmb3V0QnVmKSBjb25zdCA9IDA7CisKKwkvL0B9Cit9OworCisKKyNlbmRpZiAvKiBYU0VDQ1JZUFRPS0VZSE1BQ19JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvWFNFQ0NyeXB0b0tleVJTQS5ocHAgYi9jL3NyYy9lbmMvWFNFQ0NyeXB0b0tleVJTQS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg5YWEyNAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9YU0VDQ3J5cHRvS2V5UlNBLmhwcApAQCAtMCwwICsxLDI3MCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ0NyeXB0b0tleVJTQSA6PSBSU0EgS2V5cworICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYU0VDQ1JZUFRPS0VZUlNBX0lOQ0xVREUKKyNkZWZpbmUgWFNFQ0NSWVBUT0tFWVJTQV9JTkNMVURFCisKKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvS2V5LmhwcD4KKworLyoqCisgKiBcaW5ncm91cCBjcnlwdG8KKyAqLworCisvKioKKyAqIFxicmllZiBJbnRlcmZhY2UgY2xhc3MgZm9yIFJTQSBrZXlzLgorICoKKyAqIFRoZSBsaWJyYXJ5IHVzZXMgY2xhc3NlcyBkZXJpdmVkIGZyb20gdGhpcyB0byBwcm9jZXNzIFJTQSBrZXlzLgorICovCisKKworY2xhc3MgRFNJR19FWFBPUlQgWFNFQ0NyeXB0b0tleVJTQSA6IHB1YmxpYyBYU0VDQ3J5cHRvS2V5IHsKKworcHVibGljIDoKKworCS8qKgorCSAqIFxicmllZiBQYWRkaW5nIHR5cGUKKwkgKgorCSAqIFR5cGUgb2YgcGFkZGluZyB0byBiZSB1c2VkIGZvciBSU0EgZW5jcnlwdC9kZWNyeXB0IG9wZXJhdGlvbnMKKwkgKi8KKworCWVudW0gUGFkZGluZ1R5cGUgeworCisJCVBBRF9OT05FCQk9IDAsCQkvKiogTm8gcGFkZGluZyAoSWxsZWdhbCBmb3IgYWxsIGVuYyBvcHMpICovCisJCVBBRF9QS0NTXzFfNQk9IDEsCQkvKiogUEtDUyAxLjUgcGFkZGluZyAqLworCQlQQURfT0FFUF9NR0ZQMQk9IDIJCQkvKiogT0FFUCB1c2luZyBNR0ZQMSBhcyBtYXNrIGZ1bmN0aW9uICovCisKKwl9OworCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisKKwlYU0VDQ3J5cHRvS2V5UlNBKCkge307CisJdmlydHVhbCB+WFNFQ0NyeXB0b0tleVJTQSgpIHt9OworCisJLy9AfQorCisJLyoqIEBuYW1lIEtleSBJbnRlcmZhY2UgbWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gdGhlIHR5cGUgb2YgdGhpcyBrZXkuCisJICoKKwkgKiBGb3IgUlNBIGtleXMsIHRoaXMgYWxsb3dzIHBlb3BsZSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGlzIGlzIGEgCisJICogcHVibGljIGtleSwgcHJpdmF0ZSBrZXkgb3IgYSBrZXkgcGFpcgorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvS2V5OjpLZXlUeXBlIGdldEtleVR5cGUoKSBjb25zdCB7cmV0dXJuIEtFWV9OT05FO30KKwkKKwkvKioKKwkgKiBcYnJpZWYgUmVwbGljYXRlIGtleQorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvS2V5ICogY2xvbmUoKSBjb25zdCA9IDA7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgTWFuZGF0b3J5IFJTQSBpbnRlcmZhY2UgbWV0aG9kcyAKKwkgKgorCSAqIFRoZXNlIG1ldGhvZHMgYXJlIHJlcXVpcmVkIGJ5IHRoZSBsaWJyYXJ5LgorCSAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBTZXQgdGhlIE9BRVBwYXJhbXMgc3RyaW5nCisJICoKKwkgKiBCeSBkZWZhdWx0LCB0aGUgbGlicmFyeSBleHBlY3RzIGNyeXB0byBpbXBsZW1lbnRhdGlvbnMgdG8gcGVyZm9ybQorCSAqIE9BRVAgcGFkZGluZyB3aXRoIG5vIHBhcmFtcy4gIFRoaXMgY2FsbCBhbGxvd3MgdGhlIGxpYnJhcnkgKG9yIHVzZXIpCisJICogdG8gc2V0IGEgcGFyYW1zIHZhbHVlIHByaW9yIHRvIGFuIGVuY3J5cHQvZGVjcnlwdCBvcGVyYXRpb24uCisJICoKKwkgKiBAcGFyYW0gcGFyYW1zIGJ1ZmZlciBjb250YWluaW5nIHRoZSBwYXJhbXMgZGF0YS4gIFBhc3MgaW4gTlVMTCB0byBjbGVhciBhbnkKKwkgKiBvbGQgcGFyYW10ZXJzLgorCSAqIEBwYXJhbSBwYXJhbXNMZW4gbnVtYmVyIG9mIGJ5dGVzIGluIGJ1ZmZlciB0byB1c2UuICBQYXNzIGluIDAgdG8gY2xlYXIgYW55CisJICogb2xkIHBhcmFtZXRlcnMuCisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0T0FFUHBhcmFtcyh1bnNpZ25lZCBjaGFyICogcGFyYW1zLCB1bnNpZ25lZCBpbnQgcGFyYW1zTGVuKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IE9BRVBwYXJhbXMgTGVuZ3RoCisJICoKKwkgKiBAcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIG9mIHRoZSBPQUVQcGFyYW1zIGJ1ZmZlciAoYXNzdW1pbmcgaXQgaGFzIGJlZW4gc2V0KQorCSAqLworCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0T0FFUHBhcmFtc0xlbih2b2lkKSBjb25zdCA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBPQUVQcGFyYW1zCisJICoKKwkgKiBAcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIChjcnlwdG8gb2JqZWN0IG93bmVkKSBidWZmZXIgaG9sZGluZyB0aGUgT0FFUHBhcmFtcworCSAqIG9yIE5VTEwgaWYgbm8gcGFyYW1zIGFyZSBoZWxkCisJICovCisKKwl2aXJ0dWFsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBnZXRPQUVQcGFyYW1zKHZvaWQpIGNvbnN0ID0gMDsKKworCS8qKgorCSAqIFxicmllZiBWZXJpZnkgYSBTSEExIFBLQ1MxIGVuY29kZWQgc2lnbmF0dXJlCisJICoKKwkgKiBUaGUgbGlicmFyeSB3aWxsIGNhbGwgdGhpcyBmdW5jdGlvbiB0byB2YWxpZGF0ZSBhbiBSU0Egc2lnbmF0dXJlCisJICogVGhlIHN0YW5kYXJkIGJ5IGRlZmF1bHQgdXNlcyBTSEExIGluIGEgUEtDUzEgZW5jb2RpbmcuCisJICoKKwkgKiBAcGFyYW0gaGFzaEJ1ZiBCdWZmZXIgY29udGFpbmluZyB0aGUgcHJlLWNhbGN1bGF0ZWQgKGJpbmFyeSkgZGlnZXN0CisJICogQHBhcmFtIGhhc2hMZW4gTGVuZ3RoIG9mIHRoZSBkYXRhIGluIHRoZSBkaWdlc3QgYnVmZmVyCisJICogQHBhcmFtIGJhc2U2NFNpZ25hdHVyZSBCdWZmZXIgY29udGFpbmluZyB0aGUgQmFzZTY0IGVuY29kZWQgc2lnbmF0dXJlCisJICogQHBhcmFtIHNpZ0xlbiBMZW5ndGggb2YgdGhlIGRhdGEgaW4gdGhlIHNpZ25hdHVyZSBidWZmZXIKKwkgKiBAcGFyYW0gaG0gVGhlIHR5cGUgb2YgaGFzaCB0aGF0IHRoZSBzaWduYXR1cmUgaXMgYWNjcm9zcyAtIG11c3QgYmUgYSBTSEEgdmFyaWFudAorCSAqIEByZXR1cm5zIHRydWUgaWYgdGhlIHNpZ25hdHVyZSB3YXMgdmFsaWQsIGZhbHNlIG90aGVyd2lzZQorCSAqLworCisJdmlydHVhbCBib29sIHZlcmlmeVNIQTFQS0NTMUJhc2U2NFNpZ25hdHVyZShjb25zdCB1bnNpZ25lZCBjaGFyICogaGFzaEJ1ZiwgCisJCQkJCQkJCSB1bnNpZ25lZCBpbnQgaGFzaExlbiwKKwkJCQkJCQkJIGNvbnN0IGNoYXIgKiBiYXNlNjRTaWduYXR1cmUsCisJCQkJCQkJCSB1bnNpZ25lZCBpbnQgc2lnTGVuLAorCQkJCQkJCQkgaGFzaE1ldGhvZCBobSkgPSAwOworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIHNpZ25hdHVyZQorCSAqCisJICogVGhlIGxpYnJhcnkgd2lsbCBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gY3JlYXRlIGEgc2lnbmF0dXJlIGZyb20KKwkgKiBhIHByZS1jYWxjdWxhdGVkIGRpZ2VzdC4gIFRoZSBvdXRwdXQgc2lnbmF0dXJlIGlzIHJlcXVpcmVkIHRvCisJICogYmUgQmFzZTY0IGVuY29kZWQgc3VjaCB0aGF0IGl0IGNhbiBiZSBwbGFjZWQgZGlyZWN0bHkgaW50byB0aGUKKwkgKiBYTUwgZG9jdW1lbnQKKwkgKgorCSAqIFRoaXMgY2FsbCBuZWVkcyB0byBkbyBhIFBLQ1MxIGVuY29kZSBmb3IgYSBTSEEtMSBzaWduYXR1cmUuCisJICoKKwkgKiBAcGFyYW0gaGFzaEJ1ZiBCdWZmZXIgY29udGFpbmluZyB0aGUgcHJlLWNhbGN1bGF0ZWQgKGJpbmFyeSkgZGlnZXN0CisJICogQHBhcmFtIGhhc2hMZW4gTnVtYmVyIG9mIGJ5dGVzIG9mIGhhc2ggaW4gdGhlIGhhc2hCdWYKKwkgKiBAcGFyYW0gYmFzZTY0U2lnbmF0dXJlQnVmIEJ1ZmZlciB0byBwbGFjZSB0aGUgYmFzZTY0IGVuY29kZWQgcmVzdWx0CisJICogaW4uCisJICogQHBhcmFtIGJhc2U2NFNpZ25hdHVyZUJ1ZkxlbiBJbXBsZW1lbnRhdGlvbnMgbmVlZCB0byBlbnN1cmUgdGhleSBkbworCSAqIG5vdCB3cml0ZSBtb3JlIGJ5dGVzIHRoYW4gdGhpcyBpbnRvIHRoZSBidWZmZXIKKwkgKiBAcGFyYW0gaG0gSGFzaCBtZXRob2QgdXNlZCB0byBjYWxjdWxhdGUgdGhlIEhhc2ggLSBuZWVkcyB0byBiZSBwYXNzZWQKKwkgKiBpbiBvcmRlciB0byBjYWxjdWxhdGUgY29ycmVjdCBPSUQgdG8gYmUgZW1iZWRkZWQgaW4gc2lnbmF0dXJlCisJICovCisKKworCXZpcnR1YWwgdW5zaWduZWQgaW50IHNpZ25TSEExUEtDUzFCYXNlNjRTaWduYXR1cmUodW5zaWduZWQgY2hhciAqIGhhc2hCdWYsCisJCXVuc2lnbmVkIGludCBoYXNoTGVuLAorCQljaGFyICogYmFzZTY0U2lnbmF0dXJlQnVmLAorCQl1bnNpZ25lZCBpbnQgYmFzZTY0U2lnbmF0dXJlQnVmTGVuLAorCQloYXNoTWV0aG9kIGhtKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgRGVjcnlwdCB1c2luZyBwcml2YXRlIGtleQorCSAqCisJICogVGhlIGxpYnJhcnkgd2lsbCBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gZGVjcnlwdCBhIHBpZWNlIG9mIGNpcGhlcgorCSAqIHRleHQgdXNpbmcgdGhlIHByaXZhdGUgY29tcG9uZW50IG9mIHRoaXMga2V5LgorCSAqCisJICogQHBhcmFtIGluQnVmIGNpcGhlciB0ZXh0IHRvIGRlY3J5cHQKKwkgKiBAcGFyYW0gcGxhaW5CdWYgb3V0cHV0IGJ1ZmZlciBmb3IgZGVjcnlwdGVkIGJ5dGVzCisJICogQHBhcmFtIGluTGVuZ3RoIGJ5dGVzIG9mIGNpcGhlciB0ZXh0IHRvIGRlY3J5cHQKKwkgKiBAcGFyYW0gbWF4T3V0TGVuZ3RoIHNpemUgb2Ygb3V0cHV0QnVmZmVyCisJICogQHBhcmFtIHBhZGRpbmcgVHlwZSBvZiBwYWRkaW5nIChQS0NTIDEuNSBvciBPQUVQKQorCSAqIEBwYXJhbSBobSBIYXNoIE1ldGhvZCBmb3IgT0FFUCBlbmNyeXB0aW9uIChPQUVQUGFyYW1zIHNob3VsZCBiZQorCSAqIHNldCB1c2luZyBzZXRPQUVQcGFyYW1zKCkKKwkgKi8KKworCXZpcnR1YWwgdW5zaWduZWQgaW50IHByaXZhdGVEZWNyeXB0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBpbkJ1ZiwKKwkJCQkJCQkJIHVuc2lnbmVkIGNoYXIgKiBwbGFpbkJ1ZiwgCisJCQkJCQkJCSB1bnNpZ25lZCBpbnQgaW5MZW5ndGgsCisJCQkJCQkJCSB1bnNpZ25lZCBpbnQgbWF4T3V0TGVuZ3RoLAorCQkJCQkJCQkgUGFkZGluZ1R5cGUgcGFkZGluZywKKwkJCQkJCQkJIGhhc2hNZXRob2QgaG0pID0gMDsKKworCS8qKgorCSAqIFxicmllZiBFbmNyeXB0IHVzaW5nIGEgcHVibGljIGtleQorCSAqCisJICogVGhlIGxpYnJhcnkgd2lsbCBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gZW5jcnlwdCBhIHBsYWluIHRleHQgYnVmZmVyCisJICogdXNpbmcgdGhlIHB1YmxpYyBjb21wb25lbnQgb2YgdGhpcyBrZXkuCisJICoKKwkgKiBAcGFyYW0gaW5CdWYgcGxhaW4gdGV4dCB0byBkZWNyeXB0CisJICogQHBhcmFtIGNpcGhlckJ1ZiBvdXRwdXQgYnVmZmVyIGZvciBkZWNyeXB0ZWQgYnl0ZXMKKwkgKiBAcGFyYW0gaW5MZW5ndGggYnl0ZXMgb2YgcGxhaW4gdGV4dCB0byBlbmNyeXB0CisJICogQHBhcmFtIG1heE91dExlbmd0aCBzaXplIG9mIG91dHB1dEJ1ZmZlcgorCSAqIEBwYXJhbSBwYWRkaW5nIFR5cGUgb2YgcGFkZGluZyAoUEtDUyAxLjUgb3IgT0FFUCkKKwkgKiBAcGFyYW0gaG0gSGFzaCBNZXRob2QgZm9yIE9BRVAgZW5jcnlwdGlvbgorCSAqIEBwYXJhbSBobSBIYXNoIE1ldGhvZCBmb3IgT0FFUCBlbmNyeXB0aW9uIChPQUVQUGFyYW1zIHNob3VsZCBiZQorCSAqIHNldCB1c2luZyBzZXRPQUVQcGFyYW1zKCkKKwkgKi8KKworCXZpcnR1YWwgdW5zaWduZWQgaW50IHB1YmxpY0VuY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqIGluQnVmLAorCQkJCQkJCQkgdW5zaWduZWQgY2hhciAqIGNpcGhlckJ1ZiwgCisJCQkJCQkJCSB1bnNpZ25lZCBpbnQgaW5MZW5ndGgsCisJCQkJCQkJCSB1bnNpZ25lZCBpbnQgbWF4T3V0TGVuZ3RoLAorCQkJCQkJCQkgUGFkZGluZ1R5cGUgcGFkZGluZywKKwkJCQkJCQkJIGhhc2hNZXRob2QgaG0pID0gMDsKKworCS8qKgorCSAqIFxicmllZiBPYnRhaW4gdGhlIGxlbmd0aCBvZiBhbiBSU0Ega2V5CisJICoKKwkgKiBAcmV0dXJucyBUaGUgbGVuZ3RoIG9mIHRoZSByc2Ega2V5IChpbiBieXRlcykKKwkgKi8KKworCXZpcnR1YWwgdW5zaWduZWQgaW50IGdldExlbmd0aCh2b2lkKSBjb25zdCA9IDA7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgT3B0aW9uYWwgSW50ZXJmYWNlIG1ldGhvZHMKKwkgKiAKKwkgKiBUaGVzZSBmdW5jdGlvbnMgZG8gbm90IG5lY2Vzc2FyaWx5IGhhdmUgdG8gYmUgaW1wbG1lbnRlZC4gIFRoZXkKKwkgKiBhcmUgdXNlZCBieSBYU0VDS2V5SW5mb1Jlc29sdmVyRGVmYXVsdCB0byB0cnkgdG8gY3JlYXRlIGEga2V5IGZyb20KKwkgKiBLZXlJbmZvIGVsZW1lbnRzIHdpdGhvdXQga25vd2luZyBhbnl0aGluZyBlbHNlLgorCSAqCisJICogSWYgYW4gaW50ZXJmYWNlIGNsYXNzIGRvZXMgbm90IGltcGxlbWVudCB0aGVzZSBmdW5jdGlvbnMsIGEgc2ltcGxlCisJICogc3R1YiB0aGF0IGRvZXMgbm90aGluZyBzaG91bGQgYmUgdXNlZC4KKwkgKi8KKworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBMb2FkIHRoZSBtb2R1bHVzCisJICoKKwkgKiBMb2FkIHRoZSBtb2R1bHVzIGZyb20gYSBCYXNlNjQgZW5jb2RlZCBzdHJpbmcKKwkgKgorCSAqIHBhcmFtIGI2NCBBIGJ1ZmZlciBjb250YWluaW5nIHRoZSBlbmNvZGVkIHN0cmluZworCSAqIHBhcmFtIGxlbiBUaGUgbGVuZ3RoIG9mIHRoZSBkYXRhIGluIHRoZSBidWZmZXIKKwkgKi8KKworCXZpcnR1YWwgdm9pZCBsb2FkUHVibGljTW9kdWx1c0Jhc2U2NEJpZ051bXMoY29uc3QgY2hhciAqIGI2NCwgdW5zaWduZWQgaW50IGxlbikgPSAwOworCisJLyoqCisJICogXGJyaWVmIExvYWQgdGhlIGV4cG9uZW50CisJICoKKwkgKiBMb2FkIHRoZSBleHBvbmVudCBmcm9tIGEgQmFzZTY0IGVuY29kZWQgc3RyaW5nCisJICoKKwkgKiBwYXJhbSBiNjQgQSBidWZmZXIgY29udGFpbmluZyB0aGUgZW5jb2RlZCBzdHJpbmcKKwkgKiBwYXJhbSBsZW4gVGhlIGxlbmd0aCBvZiB0aGUgZGF0YSBpbiB0aGUgYnVmZmVyCisJICovCisKKwl2aXJ0dWFsIHZvaWQgbG9hZFB1YmxpY0V4cG9uZW50QmFzZTY0QmlnTnVtcyhjb25zdCBjaGFyICogYjY0LCB1bnNpZ25lZCBpbnQgbGVuKSA9IDA7CisKKwkvL0B9CisKK307CisKKworCisjZW5kaWYgLyogWFNFQ0NSWVBUT0tFWVJTQV9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvWFNFQ0NyeXB0b1Byb3ZpZGVyLmNwcCBiL2Mvc3JjL2VuYy9YU0VDQ3J5cHRvUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3YWJjZDAKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9lbmMvWFNFQ0NyeXB0b1Byb3ZpZGVyLmNwcApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IDIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ0NyeXB0b1Byb3ZpZGVyIDo9IEJhc2UgdmlydHVhbCBjbGFzcyB0byBkZWZpbmUgYSBjcnB5dG8gbW9kdWxlCisgKgorICogQXV0aG9yKHMpOiBTY290dCBDYW50b3IKKyAqCisgKiAkSWQ6JAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b1Byb3ZpZGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvRXhjZXB0aW9uLmhwcD4KKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9KYW5pdG9yLmhwcD4KKworWFNFQ0NyeXB0b0tleUVDKiBYU0VDQ3J5cHRvUHJvdmlkZXI6OmtleUVDKCkgY29uc3QgeworICAgIHRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6VW5zdXBwb3J0ZWRFcnJvciwKKwkJIlhTRUNDcnlwdG9Qcm92aWRlciAtIEVDIGtleXMgbm90IHN1cHBvcnRlZCIpOworfQorCitYU0VDQ3J5cHRvS2V5KiBYU0VDQ3J5cHRvUHJvdmlkZXI6OmtleURFUihjb25zdCBjaGFyKiBidWYsIHVuc2lnbmVkIGxvbmcgYnVmbGVuLCBib29sIGJhc2U2NCkgY29uc3QgeworICAgIHRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6VW5zdXBwb3J0ZWRFcnJvciwKKwkJIlhTRUNDcnlwdG9Qcm92aWRlciAtIERFUi1lbmNvZGVkIGtleXMgbm90IHN1cHBvcnRlZCIpOworfQpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL1hTRUNDcnlwdG9Qcm92aWRlci5ocHAgYi9jL3NyYy9lbmMvWFNFQ0NyeXB0b1Byb3ZpZGVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjcyMTFkCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZW5jL1hTRUNDcnlwdG9Qcm92aWRlci5ocHAKQEAgLTAsMCArMSwzOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDEwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNDcnlwdG9Qcm92aWRlciA6PSBCYXNlIHZpcnR1YWwgY2xhc3MgdG8gZGVmaW5lIGEgY3JweXRvIG1vZHVsZQorICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYU0VDQ1JZUFRPUFJPVklERVJfSU5DTFVERQorI2RlZmluZSBYU0VDQ1JZUFRPUFJPVklERVJfSU5DTFVERQorCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9IYXNoLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvS2V5SE1BQy5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b0Jhc2U2NC5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b1g1MDkuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9LZXlEU0EuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9LZXlFQy5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b0tleVJTQS5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b1N5bW1ldHJpY0tleS5ocHA+CisKKy8qKgorICogQGRlZmdyb3VwIGNyeXB0byBDcnlwdG9ncmFwaGljIEFic3RyYWN0aW9uIExheWVyCisgKiA8cD5UaGUgaW50ZXJmYWNlIGxheWVyIGJldHdlZW4gdGhlIGNyeXB0b2dyYXBoaWMgbW9kdWxlcyBhbmQgdGhlIFhNTCAKKyAqIFNlY3VyaXR5IGxpYnJhcnkuICBJdCBoYXMgYmVlbiBjcmVhdGVkIHRvIGFsbG93IHVzZXJzIHRvIGVhc2lseSAKKyAqIGludGVncmF0ZSBvdGhlciBjcnlwdG9ncmFwaGljIGxpYnJhcmllcyBpbnRvIHRoZSBYTUwtU2VjdXJpdHkgCisgKiBsaWJyYXJ5LjwvcD4KKyAqCisgKiA8cD5UaGUgWE1MLVNlY3VyaXR5LUMgbGlicmFyeSBpdHNlbGYgbWFrZXMgY2FsbHMgdG8gdGhpcyBpbnRlcmZhY2UgCisgKiBsYXllciB0byBwZXJmb3JtIGFsbCBjcnlwdG9ncmFwaGljIHByb2NlZHVyZXMuICBJbiBvcmRlciB0byAKKyAqIGluc3RhbnRpYXRlIHRoZSBjb3JyZWN0IG9iamVjdCAoaS5lLiB0aGUgb2JqZWN0CisgKiB0aGF0IGJlbG9uZ3MgdG8gdGhlIGNvcnJlY3QgY3J5cHRvIGxpYnJhcnkpLCBYU0VDIG1ha2VzIGNhbGxzIHRvIAorICogdGhlIHZpcnR1YWwgY2xhc3MgWFNFQ0NyeXB0b1Byb3ZpZGVyLCB3aGljaCByZXR1cm5zIHBvaW50ZXJzIHRvIAorICogcGFydGljdWxhciB2aXJ0dWFsIGNsYXNzIG9iamVjdHMuPC9wPgorICoKKyAqIDxwPlRoZSBjcnlwdG9ncmFwaGljIGludGVyZmFjZSBoYXMgYmVlbiBrZXB0IGFzIHRoaW4gYXMgcG9zc2libGUuCisgKiBUaGUgY2xhc3NlcyBhcmUgbm90IG1lYW50IHRvIHByb3ZpZGUgYSBjb21wbGV0ZQorICogd3JhcHBlciBmb3IgdGhlIGNyeXB0b2dyYXBoaWMgbGlicmFyaWVzIGludm9sdmVkLiAgVGhlIGFwcGxpY2F0aW9uCisgKiBwcm9ncmFtIGlzIGV4cGVjdGVkIHRvIGRlYWwgZGlyZWN0bHkgd2l0aCB0aGUgY2hvc2VuIGxpYnJhcnkuICBUaGlzCisgKiBlbnN1cmVzIHRoYXQgdGhlIHhtbC1zZWN1cml0eSBsaWJyYXJ5IGNhbiBwZXJmb3JtIHRoZSBmdW5jdGlvbnMgaXQKKyAqIG5lZWRzIHRvLCBidXQgZG9lcyBub3QgY29uc3RyYWluIHRoZSBhcHBsaWNhdGlvbiBpbiB3aGF0IGl0IGNhbiBkby48L3A+CisgKgorICogPHA+VGhlcmVmb3JlLCB0aHJlZSB0eXBlIG9mIG1ldGhvZHMgYXJlIGF2YWlsYWJsZSBvbiBhbnkgY3J5cHRvZ3JhcGhpYworICogY2xhc3MuPC9wPgorICoKKyAqIDx1bD4KKyAqIDxsaT48ZW0+UmVxdWlyZWQ8L2VtPiBtZXRob2RzIGFyZSB0aG9zZSBhYnNvbHV0ZWx5IG5lY2Vzc2FyeSBmb3IKKyAqIHRoZSBsaWJyYXJ5IHRvIG9wZXJhdGUuICBGb3IgZXhhbXBsZSwgdGhlc2UgaW5jbHVkZSB0aGUgbWV0aG9kcyAKKyAqIG5lY2Vzc2FyeSBmb3IgdGhlIGxpYnJhcnkgdG8gZGVjb2RlIGEgYmFzZTY0IGVuY29kZWQgc2lnbmF0dXJlIAorICogYW5kIHZhbGlkYXRlIGl0IGFnYWluc3QgYSBkZWZpbmVkIGtleS48L2xpPgorICogPGxpPjxlbT5PcHRpb25hbDwvZW0+IG1ldGhvZHMgYXJlIHVzZWQgYnkgdGhlIGFuY2lsbGFyeSBjbGFzc2VzCisgKiBpbiB0aGUgbGlicmFyeS4gIEZvciBleGFtcGxlLCB0aGUgZGVmYXVsdCBLZXlJbmZvUmVzb2x2ZXIgY2FuCisgKiB1c2UgYW4gb3B0aW9uYWwgbWV0aG9kIHRvIGV4dHJhY3QgYSBwdWJsaWMga2V5IGZyb20gYSBjZXJ0aWZpY2F0ZS4KKyAqIFRoaXMgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSwgYXMgdGhlIGNhbGxpbmcgYXBwbGljYXRpb24gY291bGQKKyAqIHByb3ZpZGUgYSByZXNvbHZlciB0aGF0IGRvZXMgdGhpcyB3b3JrIGRpcmVjdGx5IHJhdGhlciB0aGFuIHVzaW5nCisgKiB0aGUgWFNFQ0NyeXB0b1g1MDkgY2xhc3MuPC9saT4KKyAqIDxsaT48ZW0+TGlicmFyeSBTcGVjaWZpYzwvZW0+IG1ldGhvZHMgYXJlIHRob3NlIG1ldGhvZHMgdGhhdCBhcmUKKyAqIHVuaXF1ZSB0byBhIHBhcnRpY3VsYXIgbGlicmFyeS4gIEZvciBleGFtcGxlLCB0aGUgT3BlblNTTENyeXB0b1g1MDkKKyAqIGNsYXNzIGhhcyBhIExpYnJhcnkgU3BlY2lmaWMgY29uc3RydWN0b3IgdGhhdCB0YWtlcyBhbiBPcGVuU1NMCisgKiBYNTA5IHN0cnVjdHVyZSBhcyBpdHMgYXJndW1lbnQuPC9saT4KKyAqIDwvdWw+CisgKgorICogPHA+VW5sZXNzIG1hcmtlZCBvdGhlcndpc2UsIGFsbCBtZXRob2RzIGRlZmluZWQgaW4gdGhlIFhTRUNDcnlwdG8qCisgKiBjbGFzc2VzIGFyZSA8ZW0+UmVxdWlyZWQ8L2VtPi48L3A+CisgKgorICogPHA+VGhlIHBhcnRpY3VsYXIgaW5zdGFudGlhdGlvbiBvZiBYU0VDQ3J5cHRvUHJvdmlkZXIgdGhhdCBpcyB0byAKKyAqIGJlIHVzZWQgaXMgc2V0IHZpYSB0aGUgWFNFQ1BsYXRmb3JtVXRpbHMjSW5pdGlhbGlzZSgpIGZ1bmN0aW9uIAorICogY2FsbC4gIElmIG5vIHByb3ZpZGVyIGlzIHBhc3NlZCBpbiwgdGhlIEluaXRpYWxpc2UgZnVuY3Rpb24gCisgKiBnZW5lcmF0ZXMgYW4gT3BlblNTTENyeXB0b1Byb3ZpZGVyIGNsYXNzIGZvciB1c2UuICBJZiBPcGVuU1NMCisgKiBpcyBub3QgYXZhaWxhYmxlIHVuZGVyIHdpbmRvd3MsIHRoZSBsaWJyYXJ5IHdpbGwgdXNlIHRoZSBXaW5kb3dzCisgKiBDQVBJIGluc3RlYWQuPC9wPgorICoKKyAqIDxwPlRoZSBwcm92aWRlciBpcyBrZXB0IGluIGEgZ2xvYmFsIHZhcmlhYmxlLCBhbmQgaXMgdXNlZCBieSAKKyAqIGFsbCBzaWduYXR1cmUgb2JqZWN0cyBjcmVhdGVkIGJ5IGEgcGFydGljdWxhciBhcHBsaWNhdGlvbi4gIEF0IAorICogdGhpcyB0aW1lIHRoZXJlIGlzIG5vIHdheSB0byBoYXZlIGRpZmZlcmVudCBzaWduYXR1cmUKKyAqIG9iamVjdHMgdXNlIGRpZmZlcmVudCBDcnlwdG9Qcm92aWRlcnM8L3A+CisgKgorICogQHRvZG8gQWRkIGFuIGFiaWxpdHkgdG8gYmV0dGVyIGhhbmRsZSAib3B0aW9uYWwiIGZ1bmN0aW9ucy4gIFRoZSBsaWJyYXJ5IAorICogc2hvdWxkIG1ha2UgYSBjYWxsIHRvIHRoZQorICogcHJvdmlkZXIgdG8gc2VlIHdoZXRoZXIgYW4gb3B0aW9uYWwgZnVuY3Rpb24gKGUuZy4gZXh0cmFjdCBrZXkgZnJvbSAKKyAqIFg1MDkpIGhhcyBiZWVuCisgKiBwcm92aWRlZC4KKyAqCisgKgorICpcQHsqLworCisvLyBTb21lIGNvbnN0YW50cworCisvKioKKyAqXGJyaWVmIE1heGltdW0gbGVuZ3RoIChpbiBieXRlcykgb2YgYW55IGV4cGVjdGVkIERpZ2VzdCByZXN1bHRzLgorICoKKyAqIFRoaXMgY29uc3RhbnQgZGVmaW5lcyB0aGUgbWF4aW11bSBsZW5ndGggKGluIGJ5dGVzKSBvZiBIQVNIIHJldHVybnMuCisgKiBXZSBoYXZlIGRlZmluZWQgaXQgZmFyIGFuZCBhYm92ZSB0aGUgc2l6ZSB3ZSB3b3VsZCBub3JtYWxseSBleHBlY3QuCisgKgorICogQHRvZG8gVGhpcyBzaG91bGQgcmVhbGx5IGNvbWUgZnJvbSBlYWNoIG9mIHRoZSBwcm92aWRlcnMgYW5kIHNob3VsZAorICogYmUgaW1wbGVtZW50ZWQgYXMgYSBmdW5jdGlvbiBjYWxsIHRvICpDcnlwdG9Qcm92aWRlcgorICovCisKKyNkZWZpbmUgQ1JZUFRPX01BWF9IQVNIX1NJWkUJCTEyOAorCisvKioKKyAqXGJyaWVmIE9JRCBGb3IgRFNBCisgKi8KKworI2RlZmluZSBDUllQVE9fT0lEX0RTQQkJCQkiMS4yLjg0MC4xMDA0MC40LjEiCisKKy8qKgorICpcYnJpZWYgVGhlIGJhc2UgY2xhc3MgdGhhdCBhbGwgKkNyeXB0b1Byb3ZpZGVycyBuZWVkIHRvIGltcGxlbWVudC4KKyAqCisgKiBUaGUgaW5zdGF0aWF0aW9ucyBvZiB0aGlzIGNsYXNzIGFyZSB1c2VkIGJ5IHRoZSBjb3JlIGxpYnJhcnkgdG8KKyAqIGNyZWF0ZSBjcnlwdG9ncmFwaGljIG9iamVjdHMgbmVjZXNzYXJ5IGZvciB0aGUgbGlicmFyeSB0byBkbyBpdHMgd29yaworICogd2l0aG91dCBhY3R1YWxseSBrbm93aW5nIGFueSBkZXRhaWxzIGF0IGFsbCBhYm91dCB0aGUgcHJvdmlkZXIgbGlicmFyeQorICoKKyAqIEBub3RlIFN1YmplY3QgdG8gY2hhbmdlCisgKiBAc2VlIE9wZW5TU0xDcnlwdG9Qcm92aWRlcgorICovCisKK2NsYXNzIERTSUdfRVhQT1JUIFhTRUNDcnlwdG9Qcm92aWRlciB7CisKKworcHVibGljIDoKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCQorCVhTRUNDcnlwdG9Qcm92aWRlcigpIHt9OworCXZpcnR1YWwgflhTRUNDcnlwdG9Qcm92aWRlcigpIHt9OworCS8vQH0KKworCisJLyoqIEBuYW1lIEhhc2hpbmcgKERpZ2VzdCkgRnVuY3Rpb25zICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFJldHVybiBhIFNIQTEgaW1wbGVtZW50YXRpb24uCisJICoKKwkgKiBDYWxsIHVzZWQgYnkgdGhlIGxpYnJhcnkgdG8gb2J0YWluIGEgU0hBMSBvYmplY3QgZnJvbSB0aGUgCisJICogcHJvdmlkZXIuCisJICoKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gYSBIYXNoIG9iamVjdCB0aGF0IGltcGxlbWVudHMgU0hBMQorCSAqIEBzZWUgWFNFQ0NyeXB0b0hhc2gKKwkgKiBAZGVwcmVjYXRlZCBVc2UgaGFzaFNIQSBpbnN0ZWFkCisJICovCisJIAorCXZpcnR1YWwgWFNFQ0NyeXB0b0hhc2gJCQkqIGhhc2hTSEExKCkgY29uc3QgPSAwOworCisJLyoqCisJICogXGJyaWVmIFJldHVybiBhIFNIQSBpbXBsZW1lbnRhdGlvbi4KKwkgKgorCSAqIENhbGwgdXNlZCBieSB0aGUgbGlicmFyeSB0byBvYnRhaW4gYSBTSEEgb2JqZWN0IGZyb20gdGhlIAorCSAqIHByb3ZpZGVyLiAgU2l6ZSBvZiBoYXNoIGRldGVybWluZWQgYnkgbGVuZ3RoIGFyZ3VtZW50ICgxNjAgPSBTSEExKQorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIGEgSGFzaCBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIFNIQTEKKwkgKiBAcGFyYW0gbGVuZ3RoIC0gbGVuZ3RoIG9mIGhhc2guICBFLmcuIDE2MCBmb3IgU0hBMSBvciAyNTYgZm9yIFNIQTI1NgorCSAqIEBzZWUgWFNFQ0NyeXB0b0hhc2gKKwkgKi8KKwkgCisJdmlydHVhbCBYU0VDQ3J5cHRvSGFzaAkJCSogaGFzaFNIQShpbnQgbGVuZ3RoID0gMTYwKSBjb25zdCA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIGEgSE1BQyBTSEExIGltcGxlbWVudGF0aW9uLgorCSAqCisJICogQ2FsbCB1c2VkIGJ5IHRoZSBsaWJyYXJ5IHRvIG9idGFpbiBhIEhNQUMgU0hBMSBvYmplY3QgZnJvbSB0aGUgCisJICogcHJvdmlkZXIuICBUaGUgY2FsbGVyIHdpbGwgbmVlZCB0byBzZXQgdGhlIGtleSBpbiB0aGUgaGFzaAorCSAqIG9iamVjdCB3aXRoIGFuIFhTRUNDcnlwdG9LZXlITUFDIHVzaW5nIFhTRUNDcnlwdG9IYXNoOjpzZXRLZXkoKQorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIGEgSGFzaCBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIEhNQUMtU0hBMQorCSAqIEBzZWUgWFNFQ0NyeXB0b0hhc2gKKwkgKiBAZGVwcmVjYXRlZCB1c2UgaGFzaEhNQUNTSEEgaW5zdGVhZAorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvSGFzaAkJCSogaGFzaEhNQUNTSEExKCkgY29uc3QgPSAwOworCisJLyoqCisJICogXGJyaWVmIFJldHVybiBhIEhNQUMgU0hBKDEtNTEyKSBpbXBsZW1lbnRhdGlvbi4KKwkgKgorCSAqIENhbGwgdXNlZCBieSB0aGUgbGlicmFyeSB0byBvYnRhaW4gYSBITUFDIFNIQSBvYmplY3QgZnJvbSB0aGUgCisJICogcHJvdmlkZXIuICBUaGUgY2FsbGVyIHdpbGwgbmVlZCB0byBzZXQgdGhlIGtleSBpbiB0aGUgaGFzaAorCSAqIG9iamVjdCB3aXRoIGFuIFhTRUNDcnlwdG9LZXlITUFDIHVzaW5nIFhTRUNDcnlwdG9IYXNoOjpzZXRLZXkoKQorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIGEgSGFzaCBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIEhNQUMtU0hBMQorCSAqIEBwYXJhbSBsZW5ndGggTGVuZ3RoIG9mIGhhc2ggb3V0cHV0ICgxNjAgPSBTSEExLCAyNTYsIDUxMiBldGMpCisJICogQHNlZSBYU0VDQ3J5cHRvSGFzaAorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvSGFzaAkJCSogaGFzaEhNQUNTSEEoaW50IGxlbmd0aCA9IDE2MCkgY29uc3QgPSAwOworCisJLyoqCisJICogXGJyaWVmIFJldHVybiBhIE1ENSBpbXBsZW1lbnRhdGlvbi4KKwkgKgorCSAqIENhbGwgdXNlZCBieSB0aGUgbGlicmFyeSB0byBvYnRhaW4gYSBNRDUgb2JqZWN0IGZyb20gdGhlIAorCSAqIHByb3ZpZGVyLgorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIGEgSGFzaCBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIE1ENQorCSAqIEBzZWUgWFNFQ0NyeXB0b0hhc2gKKwkgKi8KKwkgCisJdmlydHVhbCBYU0VDQ3J5cHRvSGFzaAkJCSogaGFzaE1ENSgpIGNvbnN0ID0gMDsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gYSBITUFDIE1ENSBpbXBsZW1lbnRhdGlvbi4KKwkgKgorCSAqIENhbGwgdXNlZCBieSB0aGUgbGlicmFyeSB0byBvYnRhaW4gYSBITUFDIE1ENSBvYmplY3QgZnJvbSB0aGUgCisJICogcHJvdmlkZXIuICBUaGUgY2FsbGVyIHdpbGwgbmVlZCB0byBzZXQgdGhlIGtleSBpbiB0aGUgaGFzaAorCSAqIG9iamVjdCB3aXRoIGFuIFhTRUNDcnlwdG9LZXlITUFDIHVzaW5nIFhTRUNDcnlwdG9IYXNoOjpzZXRLZXkoKQorCSAqCisJICogQG5vdGUgVGhlIHVzZSBvZiBNRDUgaXMgZXhwbGljaXRseSBtYXJrZWQgYXMgPGI+bm90IHJlY29tbWVuZGVkPC9iPiAKKwkgKiBpbiB0aGUgWE1MIERpZ2l0YWwgU2lnbmF0dXJlIHN0YW5kYXJkIGR1ZSB0byByZWNlbnQgYWR2YW5jZXMgaW4KKwkgKiBjcnlwdG9ncmFwaHkgaW5kaWNhdGluZyB0aGVyZSA8ZW0+bWF5PC9lbT4gYmUgd2Vha25lc3NlcyBpbiB0aGUgCisJICogYWxnb3JpdGhtLgorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIGEgSGFzaCBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIEhNQUMtTUQ1CisJICogQHNlZSBYU0VDQ3J5cHRvSGFzaAorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvSGFzaAkJCSogaGFzaEhNQUNNRDUoKSBjb25zdCA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIGEgSE1BQyBrZXkKKwkgKgorCSAqIFNvbWV0aW1lcyB0aGUgbGlicmFyeSBuZWVkcyB0byBjcmVhdGUgYW4gSE1BQyBrZXkgKG5vdGFibHkgd2l0aGluCisJICogdGhlIFhLTVMgdXRpbGl0aWVzLgorCSAqCisJICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhlIGxpYnJhcnkgdG8gb2J0YWluIGEga2V5IHRoYXQgY2FuIHRoZW4gaGF2ZQorCSAqIGEgdmFsdWUgc2V0IHdpdGhpbiBpdC4KKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0tleUhNQUMJCSoga2V5SE1BQygpIGNvbnN0ID0gMDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBFbmNvZGluZyBmdW5jdGlvbnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIGEgQmFzZTY0IGVuY29kZXIvZGVjb2RlciBpbXBsZW1lbnRhdGlvbi4KKwkgKgorCSAqIENhbGwgdXNlZCBieSB0aGUgbGlicmFyeSB0byBvYnRhaW4gYSBCYXNlNjQgZW5jb2Rlci9kZWNvZGVyLgorCSAqCisJICogQHJldHVybnMgUG9pbnRlciB0byB0aGUgbmV3IEJhc2U2NCBlbmNvZGVyLgorCSAqIEBzZWUgWFNFQ0NyeXB0b0Jhc2U2NAorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvQmFzZTY0CQkqIGJhc2U2NCgpIGNvbnN0ID0gMDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBLZXlzIGFuZCBDZXJ0aWZpY2F0ZXMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIGEgRFNBIGtleSBpbXBsZW1lbnRhdGlvbiBvYmplY3QuCisJICogCisJICogQ2FsbCB1c2VkIGJ5IHRoZSBsaWJyYXJ5IHRvIG9idGFpbiBhIERTQSBrZXkgb2JqZWN0LgorCSAqCisJICogQHJldHVybnMgUG9pbnRlciB0byB0aGUgbmV3IERTQSBrZXkKKwkgKiBAc2VlIFhTRUNDcnlwdG9LZXlEU0EKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0tleURTQQkJKiBrZXlEU0EoKSBjb25zdCA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIGFuIFJTQSBrZXkgaW1wbGVtZW50YXRpb24gb2JqZWN0LgorCSAqIAorCSAqIENhbGwgdXNlZCBieSB0aGUgbGlicmFyeSB0byBvYnRhaW4gYW4gUlNBIGtleSBvYmplY3QuCisJICoKKwkgKiBAcmV0dXJucyBQb2ludGVyIHRvIHRoZSBuZXcgUlNBIGtleQorCSAqIEBzZWUgWFNFQ0NyeXB0b0tleVJTQQorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvS2V5UlNBCQkqIGtleVJTQSgpIGNvbnN0ID0gMDsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gYW4gRUMga2V5IGltcGxlbWVudGF0aW9uIG9iamVjdC4KKwkgKiAKKwkgKiBDYWxsIHVzZWQgYnkgdGhlIGxpYnJhcnkgdG8gb2J0YWluIGFuIEVDIGtleSBvYmplY3QuCisJICoKKwkgKiBAcmV0dXJucyBQb2ludGVyIHRvIHRoZSBuZXcgRUMga2V5CisJICogQHNlZSBYU0VDQ3J5cHRvS2V5RUMKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0tleUVDICAgICAgICAgKiBrZXlFQygpIGNvbnN0OworCisJLyoqCisJICogXGJyaWVmIFJldHVybiBhIGtleSBpbXBsZW1lbnRhdGlvbiBvYmplY3QgYmFzZWQgb24gREVSLWVuY29kZWQgaW5wdXQuCisJICogCisJICogQ2FsbCB1c2VkIGJ5IHRoZSBsaWJyYXJ5IHRvIG9idGFpbiBhIGtleSBvYmplY3QgZnJvbSBhIERFUi1lbmNvZGVkIGtleS4KKwkgKgorICAgICAqIEBwYXJhbSBidWYgICAgICAgREVSLWVuY29kZWQgZGF0YQorICAgICAqIEBwYXJhbSBidWZsZW4gICAgbGVuZ3RoIG9mIGRhdGEKKyAgICAgKiBAcGFyYW0gYmFzZTY0ICAgIHRydWUgaWZmIGRhdGEgaXMgYmFzZTY0LWVuY29kZWQKKwkgKiBAcmV0dXJucyBQb2ludGVyIHRvIHRoZSBuZXcga2V5CisJICogQHNlZSBYU0VDQ3J5cHRvS2V5CisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXkgICAgICAgICAqIGtleURFUihjb25zdCBjaGFyKiBidWYsIHVuc2lnbmVkIGxvbmcgYnVmbGVuLCBib29sIGJhc2U2NCkgY29uc3Q7CisKKyAgICAvKioKKwkgKiBcYnJpZWYgUmV0dXJuIGFuIFg1MDkgaW1wbGVtZW50YXRpb24gb2JqZWN0LgorCSAqIAorCSAqIENhbGwgdXNlZCBieSB0aGUgbGlicmFyeSB0byBvYnRhaW4gYW4gb2JqZWN0IHRoYXQgY2FuIHdvcmsKKwkgKiB3aXRoIFg1MDkgY2VydGlmaWNhdGVzLgorCSAqCisJICogQHJldHVybnMgUG9pbnRlciB0byB0aGUgbmV3IFg1MDkgb2JqZWN0CisJICogQHNlZSBYU0VDQ3J5cHRvWDUwOQorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvWDUwOQkJCSogWDUwOSgpIGNvbnN0ID0gMDsKKworCS8qKgorCSAqIFxicmllZiBEZXRlcm1pbmUgd2hldGhlciBhIGdpdmVuIGFsZ29yaXRobSBpcyBzdXBwb3J0ZWQKKwkgKgorCSAqIEEgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIGEgZ2l2ZW4gCisJICogc3ltbWV0cmljIGFsZ29yaXRobSBpcyBzdXBwb3J0ZWQKKwkgKi8KKworCXZpcnR1YWwgYm9vbCBhbGdvcml0aG1TdXBwb3J0ZWQoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6U3ltbWV0cmljS2V5VHlwZSBhbGcpIGNvbnN0ID0gMDsKKworCS8qKgorCSAqIFxicmllZiBEZXRlcm1pbmUgd2hldGhlciBhIGdpdmVuIGFsZ29yaXRobSBpcyBzdXBwb3J0ZWQKKwkgKgorCSAqIEEgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIGEgZ2l2ZW4gCisJICogZGlnZXN0IGFsZ29yaXRobSBpcyBzdXBwb3J0ZWQKKwkgKi8KKworCXZpcnR1YWwgYm9vbCBhbGdvcml0aG1TdXBwb3J0ZWQoWFNFQ0NyeXB0b0hhc2g6Okhhc2hUeXBlIGFsZykgY29uc3QgPSAwOworCQorCS8qKgorCSAqIFxicmllZiBSZXR1cm4gYSBTeW1tZXRyaWMgS2V5IGltcGxlbWVudGF0aW9uIG9iamVjdC4KKwkgKgorCSAqIENhbGwgdXNlZCBieSB0aGUgbGlicmFyeSB0byBvYnRhaW4gYSBidWxrIGVuY3J5cHRpb24KKwkgKiBvYmplY3QuCisJICoKKwkgKiBAcmV0dXJucyBQb2ludGVyIHRvIHRoZSBuZXcgU3ltbWV0cmljS2V5IG9iamVjdAorCSAqIEBzZWUgWFNFQ0NyeXB0b1N5bW1ldHJpY0tleQorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvU3ltbWV0cmljS2V5CSoga2V5U3ltbWV0cmljKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OlN5bW1ldHJpY0tleVR5cGUgYWxnKSBjb25zdCA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgT2J0YWluIHNvbWUgcmFuZG9tIG9jdGV0cworCSAqCisJICogRm9yIGdlbmVyYXRpb24gb2YgSVZzIGFuZCB0aGUgbGlrZSwgdGhlIGxpYnJhcnkgbmVlZHMgdG8gYmUgYWJsZQorCSAqIHRvIG9idGFpbiAicmFuZG9tIiBvY3RldHMuICBUaGUgbGlicmFyeSB1c2VzIHRoaXMgY2FsbCB0byB0aGUgCisJICogY3J5cHRvIHByb3ZpZGVyIHRvIG9idGFpbiB3aGF0IGl0IG5lZWRzLgorCSAqCisJICogQHBhcmFtIGJ1ZmZlciBUaGUgYnVmZmVyIHRvIHBsYWNlIHRoZSByYW5kb20gZGF0YSBpbgorCSAqIEBwYXJhbSBudW1PY3RldHMgTnVtYmVyIG9mIGJ5dGVzIHJlcXVpcmVkCisJICogQHJldHVybnMgTnVtYmVyIG9mIGJ5dGVzIG9idGFpbmVkLgorCSAqLworCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0UmFuZG9tKHVuc2lnbmVkIGNoYXIgKiBidWZmZXIsIHVuc2lnbmVkIGludCBudW1PY3RldHMpIGNvbnN0ID0gMDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBJbmZvcm1hdGlvbiBGdW5jdGlvbnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJucyBhIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIENyeXB0byBQcm92aWRlcgorCSAqLworCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldFByb3ZpZGVyTmFtZSgpIGNvbnN0ID0gMDsKKworCS8vQH0KKworCS8qXEB9Ki8KK307CisKKworI2VuZGlmIC8qIFhTRUNDUllQVE9QUk9WSURFUl9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy9lbmMvWFNFQ0NyeXB0b1N5bW1ldHJpY0tleS5ocHAgYi9jL3NyYy9lbmMvWFNFQ0NyeXB0b1N5bW1ldHJpY0tleS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZkMmI4YgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9YU0VDQ3J5cHRvU3ltbWV0cmljS2V5LmhwcApAQCAtMCwwICsxLDI5MyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ0NyeXB0b1N5bW1ldHJpY0tleSA6PSBCdWxrIGVuY3J5cHRpb24gYWxnb3JpdGhtcyBzaG91bGQgYWxsIGJlCisgKgkJCQkJCQlpbXBsZW1lbnRlZCB2aWEgdGhpcyBpbnRlcmZhY2UKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKworCisjaWZuZGVmIFhTRUNDUllQVE9TWU1NRVRSSUNLRVlfSU5DTFVERQorI2RlZmluZSBYU0VDQ1JZUFRPU1lNTUVUUklDS0VZX0lOQ0xVREUKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0NvbnN0YW50cy5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b0tleS5ocHA+CisKKy8qKgorICogXGluZ3JvdXAgY3J5cHRvCisgKi8KKworLyoqCisgKiBcYnJpZWYgQmFzZSBpbnRlcmZhY2UgZGVmaW5pdGlvbiBmb3Igc3ltbWV0cmljIGtleSBtYXRlcmlhbC4KKyAqCisgKiBBbGwgc3ltbWV0cmljIGFsZ29yaXRobXMgYXJlIGltcGxlbWVudGVkIHZpYSB0aGlzIGludGVyZmFjZS4KKyAqIFVubGlrZSB0aGUgYXN5bW1ldHJpYyBrZXkgZGVmaW5pdGlvbnMsIHRoaXMgaXMgbm90IGZ1cnRoZXIKKyAqIGV4dGVuZGVkIGZvciBwYXJ0aWN1bGFyIGFsZ29yaXRobXMuICBSYXRoZXIgaXQgZGVmaW5lcworICogZW5jcnlwdC9kZWNyeXB0IGZ1bmN0aW9ucyB0aGF0IGFyZSBpbXBsZW1lbnRlZCB3aXRoaW4gcGFydGljdWxhcgorICogcHJvdmlkZXJzIGZvciBhIHBhcnRpY3VsYXIgYWxnb3JpdGhtLgorICovCisKK2NsYXNzIERTSUdfRVhQT1JUIFhTRUNDcnlwdG9TeW1tZXRyaWNLZXkgOiBwdWJsaWMgWFNFQ0NyeXB0b0tleSB7CisKK3B1YmxpYyA6CisKKwkvKioKKwkgKiBcYnJpZWYgU3ltbWV0cmljIEtleSB0eXBlcyB1bmRlcnN0b29kIGJ5IHRoZSBsaWJyYXJ5CisJICoKKwkgKiBUaGlzIHR5cGUgZGVmaW5lcyB0aGUgbGlzdCBvZiBzeW1tZXRyaWMga2V5IHR5cGVzIHRoYXQgdGhlIGxpYnJhcnkKKwkgKiB1bmRlcnN0YW5kcy4KKwkgKi8KKworCWVudW0gU3ltbWV0cmljS2V5VHlwZSB7CisKKwkJS0VZX05PTkUsCisJCUtFWV8zREVTXzE5MiwJCQkvKiogMTkyIGJpdCAoMy1LZXkpIDNERVMgKi8KKwkJS0VZX0FFU18xMjgsCQkJLyoqIDEyOCBiaXQgQUVTICovCisJCUtFWV9BRVNfMTkyLAkJCS8qKiAxOTIgYml0IEFFUyAqLworCQlLRVlfQUVTXzI1NgkJCQkvKiogMjU2IGJpdCBBRVMgKi8KKworCX07CisKKwllbnVtIFN5bW1ldHJpY0tleU1vZGUgeworCisJCU1PREVfTk9ORSwJCQkJCS8qKiBBbiBlcnJvciBjb25kaXRpb24gKi8KKwkJTU9ERV9FQ0IsCQkJCQkvKiogRWxlY3Ryb25pYyBDb2RlIEJvb2sgKi8KKwkJTU9ERV9DQkMJCQkJCS8qKiBDaXBoZXIgQmxvY2sgQ2hhaW5pbmcgKi8KKworCX07CisKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCQorCS8qKgorCSAqIFxicmllZiBDb25zdHJ1Y3RvcgorCSAqKi8KKworCVhTRUNDcnlwdG9TeW1tZXRyaWNLZXkoKSB7fTsKKworCS8qKgorCSAqIFxicmllZiBEZXN0cnVjdG9yIAorCSAqCisJICogSW1wbGVtZW50YXRpb25zIG11c3QgZW5zdXJlIHRoYXQgdGhlIGhlbGQga2V5IGlzIHByb3Blcmx5IGRlc3Ryb3llZAorCSAqIChvdmVyd3JpdHRlbikgd2hlbiBrZXkgb2JqZWN0cyBhcmUgZGVsZXRlZC4KKwkgKi8KKworCXZpcnR1YWwgflhTRUNDcnlwdG9TeW1tZXRyaWNLZXkoKSB7fTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBCYXNpYyBDcnlwdG9LZXkgSW50ZXJmYWNlIG1ldGhvZHMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJucyB0aGUgdHlwZSBvZiB0aGlzIGtleS4KKwkgKi8KKworCXZpcnR1YWwgS2V5VHlwZSBnZXRLZXlUeXBlKCkgY29uc3Qge3JldHVybiBLRVlfU1lNTUVUUklDO30KKworCS8qKgorCSAqIFxicmllZiBSZXR1cm5zIGEgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB0aGUgY3J5cHRvIG93bmVyIG9mIHRoaXMgbGlicmFyeS4KKwkgKi8KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRQcm92aWRlck5hbWUoKSBjb25zdCA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgQ2xvbmUgdGhlIGtleQorCSAqCisJICogQWxsIGtleXMgbmVlZCB0byBiZSBhYmxlIHRvIGNvcHkgdGhlbXNlbHZlcyBhbmQgcmV0dXJuCisJICogYSBwb2ludGVyIHRvIHRoZSBjb3B5LiAgVGhpcyBhbGxvd3MgdGhlIGxpYnJhcnkgdG8gCisJICogZHVwbGljYXRlIGtleXMuCisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXkgKiBjbG9uZSgpIGNvbnN0ID0gMDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBTeW1tZXRyaWMga2V5IGludGVyZmFjZSBtZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFdoYXQgdHlwZSBvZiBzeW1tZXRyaWMga2V5IGlzIHRoaXM/CisJICoKKwkgKiBUaGVyZSBhcmUgYSBudW1iZXIgb2YgZGlmZmVyZW50IHR5cGVzIG9mIHN5bW1ldHJpYyBrZXkuCisJICogVGhpcyBtZXRob2QgYWxsb3dzIGNhbGxlcnMgdG8gZGV0ZXJtaW5lIHRoZSB0eXBlIG9mIHRoaXMKKwkgKiBwYXJ0aWN1bGFyIGtleQorCSAqLworCisJdmlydHVhbCBTeW1tZXRyaWNLZXlUeXBlIGdldFN5bW1ldHJpY0tleVR5cGUodm9pZCkgY29uc3QgPSAwOworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUga2V5IGZyb20gdGhlIHByb3ZpZGVkIGJ5dGVzCisJICoKKwkgKiBTeW1tZXRyaWMga2V5cyBjYW4gYWxsIGJlIGxvYWRlZCBmcm9tIGEgYnVmZmVyIGNvbnRhaW5pbmcgYSBzZXJpZXMKKwkgKiBvZiBieXRlcy4KKwkgKgorCSAqIEBwYXJhbSBrZXkgVGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZSBrZXkgYnl0ZXMKKwkgKiBAcGFyYW0ga2V5TGVuIFRoZSBudW1iZXIgb2Yga2V5IGJ5dGVzIGluIHRoZSBidWZmZXIKKwkgKgorCSAqLworCisJdmlydHVhbCB2b2lkIHNldEtleShjb25zdCB1bnNpZ25lZCBjaGFyICoga2V5LCB1bnNpZ25lZCBpbnQga2V5TGVuKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgSW5pdGlhbGlzZSBhbiBkZWNyeXB0aW9uIHByb2Nlc3MKKwkgKgorCSAqIFNldHVwIHRoZSBrZXkgdG8gZ2V0IHJlYWR5IGZvciBhIGRlY3J5cHRpb24gc2Vzc2lvbi4KKwkgKiBDYWxsZXJzIGNhbiBwYXNzIGluIGFuIElWLiAgSWYgb25lIGlzIG5vdCBwcm92aWRlZCwgCisJICogYnV0IHRoZSBhbGdvcml0aG0gcmVxdWlyZXMgb25lIChlLmcuIDNERVNfQ0JDKSwgdGhlbiAKKwkgKiBpbXBsZW1lbnRhdGlvbnMgc2hvdWxkIGFzc3VtZSB0aGF0IHRoZSBzdGFydCBvZiB0aGUKKwkgKiBjaXBoZXIgdGV4dCBzdHJlYW0gd2lsbCBpbiBmYWN0IGJlIHRoZSBJVi4KKwkgKgorCSAqIEBwYXJhbSBkb1BhZCBCeSBkZWZhdWx0LCB3ZSBwZXJmb3JtIHBhZGRpbmcgZm9yIGxhc3QgYmxvY2sKKwkgKiBAcGFyYW0gbW9kZSBtb2RlIHNlbGVjdGlvbiAoQ3VycmVudGx5IEVDQiBvciBDQkMgbW9kZSBvbmx5KS4KKwkgKiBEZWZhdWx0IGlzIENCQworCSAqIEBwYXJhbSBpdiBJbml0aWFsaXNhdGlvbiBWZWN0b3IgdG8gYmUgdXNlZC4gIE5VTEwgaWYgb25lIGlzCisJICogbm90IHJlcXVpcmVkLCBvciBpZiBJViB3aWxsIGJlIHNldCBmcm9tIGRhdGEgc3RyZWFtCisJICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgaW5pdGlhbGlzYXRpb24gc3VjY2VlZGVkLgorCSAqLworCisJdmlydHVhbCBib29sIGRlY3J5cHRJbml0KGJvb2wgZG9QYWQgPSB0cnVlLAorCQkJCQkJCSBTeW1tZXRyaWNLZXlNb2RlIG1vZGUgPSBNT0RFX0NCQywKKwkJCQkJCQkgY29uc3QgdW5zaWduZWQgY2hhciAqIGl2ID0gTlVMTCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIENvbnRpbnVlIGFuIGRlY3J5cHQgb3BlcmF0aW9uIHVzaW5nIHRoaXMga2V5LgorCSAqCisJICogRGVjcnlwdGlvbiBtdXN0IGhhdmUgYmVlbiBzZXQgdXAgdXNpbmcgYW4gZW5jcnlwdEluaXQKKwkgKiBjYWxsLiAgVGFrZXMgdGhlIGluQnVmIGFuZCBjb250aW51ZXMgYSBkZWNyeXB0aW9uIG9wZXJhdGlvbiwKKwkgKiB3cml0aW5nIHRoZSBvdXRwdXQgdG8gb3V0QnVmLgorCSAqCisJICogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBoYXZlIHRvIGd1YXJhbnRlZSB0aGF0IGFsbCBpbnB1dAorCSAqIHdpbGwgYmUgZGVjcnlwdGVkLiAgSW4gY2FzZXMgd2hlcmUgdGhlIGlucHV0IGlzIG5vdCBhIGxlbmd0aAorCSAqIG9mIHRoZSBibG9jayBzaXplLCB0aGUgaW1wbGVtZW50YXRpb24gd2lsbCBuZWVkIHRvIGhvbGQgYmFjaworCSAqIGNpcGhlci10ZXh0IHRvIGJlIGhhbmRsZXMgZHVyaW5nIHRoZSBuZXh0IG9wZXJhdGlvbi4KKwkgKgorCSAqIEBwYXJhbSBpbkJ1ZiBPY3RldHMgdG8gYmUgZGVjcnlwdGVkCisJICogQHBhcmFtIHBsYWluQnVmIEJ1ZmZlciB0byBwbGFjZSBvdXRwdXQgaW4KKwkgKiBAcGFyYW0gaW5MZW5ndGggTnVtYmVyIG9mIGJ5dGVzIHRvIGRlY3J5cHQKKwkgKiBAcGFyYW0gbWF4T3V0TGVuZ3RoIE1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvIHBsYWNlIGluIG91dHB1dCAKKwkgKiBidWZmZXIKKwkgKiBAcmV0dXJucyBCeXRlcyBwbGFjZWQgaW4gb3V0cHV0IEJ1ZmZlcgorCSAqLworCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgZGVjcnlwdChjb25zdCB1bnNpZ25lZCBjaGFyICogaW5CdWYsIAorCQkJCQkJCQkgdW5zaWduZWQgY2hhciAqIHBsYWluQnVmLCAKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBpbkxlbmd0aCwKKwkJCQkJCQkJIHVuc2lnbmVkIGludCBtYXhPdXRMZW5ndGgpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBGaW5pc2ggYSBkZWNyeXB0aW9uIG9wZXJhdGlvbgorCSAqCisJICogQ29tcGxldGUgYSBkZWNyeXB0aW9uIHByb2Nlc3MuICBObyBjaXBoZXIgdGV4dCBpcyBwYXNzZWQgaW4sCisJICogYXMgdGhpcyBzaG91bGQgc2ltcGx5IGJlIHJlbW92aW5nIGFueSByZW1haW5pbmcgdGV4dCBmcm9tCisJICogdGhlIHBsYWluIHN0b3JhZ2UgYnVmZmVyLgorCSAqCisJICogTWF5IHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBzb21lIHN0b3JlZCBjaXBoZXIgdGV4dAorCSAqIHRoYXQgaXMgbm90IHRoZSBsZW5ndGggb2YgdGhlIGJsb2NrIHNpemUgZm9yIGJsb2NrIGFsZ29yaXRobXMuCisJICoKKwkgKiBAcGFyYW0gcGxhaW5CdWYgQnVmZmVyIHRvIHBsYWNlIGFueSByZW1haW5pbmcgcGxhaW4gdGV4dCBpbgorCSAqIEBwYXJhbSBtYXhPdXRMZW5ndGggTWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG8gcGFjZSBpbiBvdXRwdXQKKwkgKiBAcmV0dXJucyBCeXRlcyBwbGFjZWQgaW4gb3V0cHV0IGJ1ZmZlcgorCSAqLworCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgZGVjcnlwdEZpbmlzaCh1bnNpZ25lZCBjaGFyICogcGxhaW5CdWYsCisJCQkJCQkJCQkgICB1bnNpZ25lZCBpbnQgbWF4T3V0TGVuZ3RoKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgSW5pdGlhbGlzZSBhbiBlbmNyeXB0aW9uIHByb2Nlc3MKKwkgKgorCSAqIFNldHVwIHRoZSBrZXkgdG8gZ2V0IHJlYWR5IGZvciBhIGRlY3J5cHRpb24gc2Vzc2lvbi4KKwkgKiBDYWxsZXJzIGNhbiBwYXNzIGluIGFuIElWLiAgSWYgb25lIGlzIG5vdCBwcm92aWRlZCwgCisJICogYnV0IHRoZSBhbGdvcml0aG0gcmVxdWlyZXMgb25lIChlLmcuIDNERVNfQ0JDKSwgdGhlbgorCSAqIGltcGxlbWVudGF0aW9ucyBhcmUgcmVxdWlyZWQgdG8gZ2VuZXJhdGUgb25lLgorCSAqCisJICogQHBhcmFtIGRvUGFkIEJ5IGRlZmF1bHQsIHdlIHBlcmZvcm0gcGFkZGluZyBmb3IgbGFzdCBibG9jaworCSAqIEBwYXJhbSBtb2RlIFdoYXQgbW9kZSB0byBoYW5kbGUgYmxvY2tzIChDdXJyZW50bHkgQ0JDIG9yIEVDQikKKwkgKiBEZWZhdWx0IGlzIENCQy4KKwkgKiBAcGFyYW0gaXYgSW5pdGlhbGlzYXRpb24gVmVjdG9yIHRvIGJlIHVzZWQuICBOVUxMIGlmIG9uZSBpcworCSAqIG5vdCByZXF1aXJlZCwgb3IgaWYgSVYgaXMgdG8gYmUgZ2VuZXJhdGVkCisJICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgaW5pdGlhbGlzYXRpb24gc3VjY2VlZGVkLgorCSAqLworCisJdmlydHVhbCBib29sIGVuY3J5cHRJbml0KGJvb2wgZG9QYWQgPSB0cnVlLCAKKwkJCQkJCQkgU3ltbWV0cmljS2V5TW9kZSBtb2RlID0gTU9ERV9DQkMsCisJCQkJCQkJIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBpdiA9IE5VTEwpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBDb250aW51ZSBhbiBlbmNyeXB0aW9uIG9wZXJhdGlvbiB1c2luZyB0aGlzIGtleS4KKwkgKgorCSAqIEVuY3J5cHRpb24gbXVzdCBoYXZlIGJlZW4gc2V0IHVwIHVzaW5nIGFuIGVuY3J5cHRJbml0CisJICogY2FsbC4gIFRha2VzIHRoZSBpbkJ1ZiBhbmQgY29udGludWVzIGEgZW5jcnlwdGlvbiBvcGVyYXRpb24sCisJICogd3JpdGluZyB0aGUgb3V0cHV0IHRvIG91dEJ1Zi4KKwkgKgorCSAqIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgaGF2ZSB0byBndWFyYW50ZWUgdGhhdCBhbGwgaW5wdXQKKwkgKiB3aWxsIGJlIGVuY3J5cHRlZC4gIEluIGNhc2VzIHdoZXJlIHRoZSBpbnB1dCBpcyBub3QgYSBsZW5ndGgKKwkgKiBvZiB0aGUgYmxvY2sgc2l6ZSwgdGhlIGltcGxlbWVudGF0aW9uIHdpbGwgbmVlZCB0byBob2xkIGJhY2sKKwkgKiBwbGFpbi10ZXh0IHRvIGJlIGhhbmRsZWQgZHVyaW5nIHRoZSBuZXh0IG9wZXJhdGlvbi4KKwkgKgorCSAqIEBwYXJhbSBpbkJ1ZiBPY3RldHMgdG8gYmUgZW5jcnlwdGVkCisJICogQHBhcmFtIGNpcGhlckJ1ZiBCdWZmZXIgdG8gcGxhY2Ugb3V0cHV0IGluCisJICogQHBhcmFtIGluTGVuZ3RoIE51bWJlciBvZiBieXRlcyB0byBlbmNyeXB0CisJICogQHBhcmFtIG1heE91dExlbmd0aCBNYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byBwbGFjZSBpbiBvdXRwdXQgCisJICogYnVmZmVyCisJICogQHJldHVybnMgQnl0ZXMgcGxhY2VkIGluIG91dHB1dCBCdWZmZXIKKwkgKi8KKworCXZpcnR1YWwgdW5zaWduZWQgaW50IGVuY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqIGluQnVmLCAKKwkJCQkJCQkJIHVuc2lnbmVkIGNoYXIgKiBjaXBoZXJCdWYsIAorCQkJCQkJCQkgdW5zaWduZWQgaW50IGluTGVuZ3RoLAorCQkJCQkJCQkgdW5zaWduZWQgaW50IG1heE91dExlbmd0aCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIEZpbmlzaCBhIGVuY3J5cHRpb24gb3BlcmF0aW9uCisJICoKKwkgKiBDb21wbGV0ZSBhIGVuY3J5cHRpb24gcHJvY2Vzcy4gIE5vIHBsYWluIHRleHQgaXMgcGFzc2VkIGluLAorCSAqIGFzIHRoaXMgc2hvdWxkIHNpbXBseSBiZSByZW1vdmluZyBhbnkgcmVtYWluaW5nIHRleHQgZnJvbQorCSAqIHRoZSBwbGFpbiBzdG9yYWdlIGJ1ZmZlciBhbmQgY3JlYXRpbmcgYSBmaW5hbCBwYWRkZWQgYmxvY2suCisJICoKKwkgKiBQYWRkaW5nIGlzIHBlcmZvcm1lZCBieSB0YWtpbmcgdGhlIHJlbWFpbmluZyBibG9jaywgYW5kCisJICogc2V0dGluZyB0aGUgbGFzdCBieXRlIHRvIGVxdWFsIHRoZSBudW1iZXIgb2YgYnl0ZXMgb2YKKwkgKiBwYWRkaW5nLiAgSWYgdGhlIHBsYWluIHdhcyBhbiBleGFjdCBtdWx0aXBsZSBvZiB0aGUgYmxvY2sgc2l6ZSwKKwkgKiB0aGVuIGFuIGV4dHJhIGJsb2NrIG9mIHBhZGRpbmcgd2lsbCBiZSB1c2VkLiAgRm9yIGV4YW1wbGUsIGlmIAorCSAqIHRoZSBibG9jayBzaXplIGlzIDggYnl0ZXMsIGFuZCB0aGVyZSB3ZXJlIHRocmVlIHJlbWFpbmluZyBwbGFpbgorCSAqIHRleHQgYnl0ZXMgKDB4MDEsIDB4MDIgYW5kIDB4MDMpLCB0aGUgZmluYWwgYmxvY2sgd2lsbCBiZSA6CisJICoKKwkgKiAweDAxMDIwMz8/Pz8/Pz8/MDUKKwkgKgorCSAqIEBwYXJhbSBwbGFpbkJ1ZiBCdWZmZXIgdG8gcGxhY2UgZmluYWwgYmxvY2sgb2YgY2lwaGVyIHRleHQgaW4KKwkgKiBAcGFyYW0gbWF4T3V0TGVuZ3RoIE1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvIHBhY2UgaW4gb3V0cHV0CisJICogQHJldHVybnMgQnl0ZXMgcGxhY2VkIGluIG91dHB1dCBidWZmZXIKKwkgKi8KKworCXZpcnR1YWwgdW5zaWduZWQgaW50IGVuY3J5cHRGaW5pc2godW5zaWduZWQgY2hhciAqIHBsYWluQnVmLAorCQkJCQkJCQkJICAgdW5zaWduZWQgaW50IG1heE91dExlbmd0aCkgPSAwOworCisJLy9AfQorCit9OworCisKKyNlbmRpZiAvKiBYU0VDQ1JZUFRPU1lNTUVUUklDS0VZX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL2VuYy9YU0VDQ3J5cHRvVXRpbHMuY3BwIGIvYy9zcmMvZW5jL1hTRUNDcnlwdG9VdGlscy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVmMDBhZgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9YU0VDQ3J5cHRvVXRpbHMuY3BwCkBAIC0wLDAgKzEsNTMyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYU0VDQ3J5cHRvVXRpbHM6PSBIZWxwZXIgY3J5cG8gdXRpbGl0aWVzIHRoYXQgbWFrZSBsaWZlIGVhc2llcgorICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b0tleUhNQUMuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1BsYXRmb3JtVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4KKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9KYW5pdG9yLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MU3RyaW5nLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MVW5pRGVmcy5ocHA+CisKKyNpbmNsdWRlICIuLi91dGlscy9YU0VDQXV0b1B0ci5ocHAiCisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFhLTVMgTGltaXRlZC1Vc2UgU2hhcmVkIFNlY3JldCBoYW5kbGluZworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaW50IENsZWFuWEtNU1Bhc3NQaHJhc2UodW5zaWduZWQgY2hhciAqIGlucHV0LCBpbnQgaW5wdXRMZW4sIHNhZmVCdWZmZXIgJm91dHB1dCkgeworCisJLy8gTm93IG9ic29sZXRlIC0gdXNlIFNBU0xDbGVhblhLTVNQYXNzUGhyYXNlIGluc3RlYWQKKwlpbnQgaiA9IDA7CisJdW5zaWduZWQgY2hhciBjOworCWZvciAoaW50IGkgPSAwOyBpIDwgaW5wdXRMZW47ICsraSkgeworCisJCWMgPSBpbnB1dFtpXTsKKworCQlpZiAoYyA+PSAnQScgJiYgYyA8PSAnWicpIHsKKwkJCW91dHB1dFtqKytdID0gYyAtICdBJyArICdhJzsKKwkJfQorCQllbHNlIGlmIChjICE9ICdcbicgJiYgYyAhPSAnXHInICYmIGMgIT0gJ1x0JyAmJiBjICE9ICcgJykgeworCQkJb3V0cHV0W2orK10gPSBjOworCQl9CisKKwl9CisKKwlyZXR1cm4gajsKKworfQorCitpbnQgU0FTTENsZWFuWEtNU1Bhc3NQaHJhc2UodW5zaWduZWQgY2hhciAqIGlucHV0LCBpbnQgaW5wdXRMZW4sIHNhZmVCdWZmZXIgJm91dHB1dCkgeworCisJLy8gRm9yIG5vdyAtIHRoaXMgZG9lcyAqbm90KiBpbXBsZW1lbnQgdGhlIGZ1bGwgU0FTTFByZXAgYWxnb3JpdGhtLgorCS8vIFRIZSBORktDIGZvcm0gaXMgbm90IHRyaXZpYWwgdG8gaW1wbGVtZW50IC0gc28gdGhpcyBpcyBrZXB0IHZlcnkgc2ltcGxlLgorCS8vIFRPRE8gLSBGaXggdGhpcyAtIGl0IGNhbiBiZSBhbiBpbnRlcm9wZXJhYmlsaXR5IGlzc3VlIGFzIHBhc3MgcGhyYXNlcyBmcm9tCisJLy8gZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBjb3VsZCBiZSB0cmVhdGVkIGRpZmZlcmVudGx5LgorCS8vIEN1cnJlbnRseSB3ZSBvbmx5IGNoZWNrIGZvciBwcm9oaWJpdGVkIHVucHV0IGZvciBjaGFycyA8IDB4RkZGRiBhbmQgZHJvcCBhbnkKKwkvLyBjaGFycyBvdmVyIDB4RkZGRgorCisJdW5zaWduZWQgY2hhciAqIGlucCA9IG5ldyB1bnNpZ25lZCBjaGFyW2lucHV0TGVuICsgMV07CisJQXJyYXlKYW5pdG9yPHVuc2lnbmVkIGNoYXI+IGpfaW5wKGlucCk7CisJbWVtY3B5KGlucCwgaW5wdXQsIGlucHV0TGVuKTsKKwlpbnBbaW5wdXRMZW5dID0gJ1wwJzsKKworCVhTRUNBdXRvUHRyWE1MQ2ggdWlucHV0KChjaGFyICopIGlucCk7CisJeHNlY3NpemVfdCBsID0gWE1MU3RyaW5nOjpzdHJpbmdMZW4odWlucHV0LmdldCgpKTsKKwlYTUxDaCogdW91dHB1dCA9IG5ldyBYTUxDaFtsICsgMV07CisJQXJyYXlKYW5pdG9yPFhNTENoPiBqX3VvdXRwdXQodW91dHB1dCk7CisKKwl4c2Vjc2l6ZV90IGksIGo7CisJaiA9IDA7CisKKwlYTUxDaCBjaDE7CisKKwlmb3IgKGkgPSAwOyBpIDwgbDsgKytpKSB7CisJCQorCQljaDEgPSB1aW5wdXQuZ2V0KClbaV07CisJCS8vIENhc2Ugb25lIC0gY2hhciBpcyA8IDB4MTAwMDAKKwkJaWYgKGNoMSA8IDB4RDgwMCB8fCBjaDEgPiAweERGRkYpIHsKKworCQkJLy8gT0sgLSBjaDEgaXMgInJlYWwiIHZhbHVlIC0gbGV0J3Mgc2VlIGlmIGl0IGlzIGxlZ2FsCisJCQkvLyBUaGUgZm9sbG93aW5nIHN3aXRjaCB0YWJsZXMgYXJlIGRlcml2ZWQgZnJvbSAKKwkJCS8vIFJGQyAzNDU0IC0gc2VlIGh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzM0NTQudHh0CisKKwkJCS8vIE5vbi1BU0NJSSBTcGFjZXMgLSBDLjEuMgorCQkJc3dpdGNoIChjaDEpIHsKKworCQkJY2FzZSAweDAwQTA6CQkvLyBOTy1CUkVBSyBTUEFDRQorCQkJY2FzZSAweDE2ODA6CQkvLyBPR0hBTSBTUEFDRSBNQVJLCisJCQljYXNlIDB4MjAwMDoJCS8vIEVOIFFVQUQKKwkJCWNhc2UgMHgyMDAxOgkJLy8gRU0gUVVBRAorCQkJY2FzZSAweDIwMDI6CQkvLyBFTiBTUEFDRQorCQkJY2FzZSAweDIwMDM6CQkvLyBFTSBTUEFDRQorCQkJY2FzZSAweDIwMDQ6CQkvLyBUSFJFRS1QRVItRU0gU1BBQ0UKKwkJCWNhc2UgMHgyMDA1OgkJLy8gRk9VUi1QRVItRU0gU1BBQ0UKKwkJCWNhc2UgMHgyMDA2OgkJLy8gU0lYLVBFUi1FTSBTUEFDRQorCQkJY2FzZSAweDIwMDc6CQkvLyBGSUdVUkUgU1BBQ0UKKwkJCWNhc2UgMHgyMDA4OgkJLy8gUFVOQ1RVQVRJT04gU1BBQ0UKKwkJCWNhc2UgMHgyMDA5OgkJLy8gVEhJTiBTUEFDRQorCQkJY2FzZSAweDIwMEE6CQkvLyBIQUlSIFNQQUNFCisJCQljYXNlIDB4MjAwQjoJCS8vIFpFUk8gV0lEVEggU1BBQ0UKKwkJCWNhc2UgMHgyMDJGOgkJLy8gTkFSUk9XIE5PLUJSRUFLIFNQQUNFCisJCQljYXNlIDB4MjA1RjoJCS8vIE1FRElVTSBNQVRIRU1BVElDQUwgU1BBQ0UKKwkJCWNhc2UgMHgzMDAwOgkJLy8gSURFT0dSQVBISUMgU1BBQ0UKKwkKKwkJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwKKwkJCQkJIlNBU0xDbGVhblhLTVNQYXNzUGhyYXNlIC0gTm9uIEFTQ0lJIHNwYWNlIGNoYXJhY3RlciBpbiBYS01TIHBhc3MgcGhyYXNlIik7CisJCQlkZWZhdWx0OgorCisJCQkJYnJlYWs7CisKKwkJCX0KKworCQkJLy8gQVNDSUkgQ29udHJvbCBjaGFyYWN0ZXJzCisgICAgICAgICAgICAvLyBOb3RlIC0gdXMgdW5zaWduZWQsIHNvIGFsd2F5cyA+PSAwKQorCQkJaWYgKChjaDEgPD0gMHgxRikgfHwgKGNoMSA9PSAweDdGKSkgeworCQkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLAorCQkJCQkiU0FTTENsZWFuWEtNU1Bhc3NQaHJhc2UgLSBBU0NJSSBjb250cm9sIGNoYXJhY3RlciBpbiBYS01TIHBhc3MgcGhyYXNlIik7CisJCQl9CisKKwkJCS8vIE5vbi1BU0NJSSBDb250cm9sIENoYXJhY3RlcnMKKwkJCWlmICgoY2gxID49IDB4ODAgJiYgY2gxIDw9IDB4OUYpIHx8IAorCQkJCShjaDEgPj0gMHgyMDZBICYmIGNoMSA8PSAweDIwNkYpIHx8CisJCQkJKGNoMSA+PSAweEZGRjkgJiYgY2gxIDw9IDB4RkZGQykpIHsKKworCQkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLAorCQkJCQkiU0FTTENsZWFuWEtNU1Bhc3NQaHJhc2UgLSBOT04gQVNDSUkgY29udHJvbCBjaGFyYWN0ZXIgaW4gWEtNUyBwYXNzIHBocmFzZSIpOworCQkJfQorCisJCQlzd2l0Y2ggKGNoMSkgeworCisKKwkJCWNhc2UgMHgwNkREOgkJLy8gQVJBQklDIEVORCBPRiBBWUFICisJCQljYXNlIDB4MDcwRjoJCS8vIFNZUklBQyBBQkJSRVZJQVRJT04gTUFSSworCQkJY2FzZSAweDE4MEU6CQkvLyBNT05HT0xJQU4gVk9XRUwgU0VQQVJBVE9SCisJCQljYXNlIDB4MjAwQzoJCS8vIFpFUk8gV0lEVEggTk9OLUpPSU5FUgorCQkJY2FzZSAweDIwMEQ6CQkvLyBaRVJPIFdJRFRIIEpPSU5FUgorCQkJY2FzZSAweDIwMjg6CQkvLyBMSU5FIFNFUEFSQVRPUgorCQkJY2FzZSAweDIwMjk6CQkvLyBQQVJBR1JBUEggU0VQQVJBVE9SCisJCQljYXNlIDB4MjA2MDoJCS8vIFdPUkQgSk9JTkVSCisJCQljYXNlIDB4MjA2MToJCS8vIEZVTkNUSU9OIEFQUExJQ0FUSU9OCisJCQljYXNlIDB4MjA2MjoJCS8vIElOVklTSUJMRSBUSU1FUworCQkJY2FzZSAweDIwNjM6CQkvLyBJTlZJU0lCTEUgU0VQQVJBVE9SCisJCQljYXNlIDB4RkVGRjoJCS8vIFpFUk8gV0lEVEggTk8tQlJFQUsgU1BBQ0UKKwkJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwKKwkJCQkJIlNBU0xDbGVhblhLTVNQYXNzUGhyYXNlIC0gTk9OIEFTQ0lJIGNvbnRyb2wgY2hhcmFjdGVyIGluIFhLTVMgcGFzcyBwaHJhc2UiKTsKKwkJCWRlZmF1bHQ6CisJCQkJYnJlYWs7CQkJfQorCQkgICAgLy8gMUQxNzMtMUQxN0E7IFtNVVNJQ0FMIENPTlRST0wgQ0hBUkFDVEVSU10gaXMgbm90IHJlbGV2YW50IGFzIHdlIGFyZSBsb29raW5nIGF0CisJCSAgICAvLyBjaDEgYXQgdGhlIG1vbWVudAorCisJCQkvLyBQcml2YXRlIFVzZSBjaGFyYWN0ZXJzCisJCQlpZiAoKGNoMSA+PSAweEUwMDAgJiYgY2gxIDw9IDB4RjhGRikpIHsKKworCQkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLAorCQkJCQkiU0FTTENsZWFuWEtNU1Bhc3NQaHJhc2UgLSBQcml2YXRlIFVzZSBjaGFyYWN0ZXIgaW4gWEtNUyBwYXNzIHBocmFzZSIpOworCQkJfQorCisJCQkvLyBOb24tY2hhcmFjdGVyIGNvZGUgcG9pbnRzCisJCQlpZiAoKGNoMSA+PSAweEZERDAgJiYgY2gxIDw9IDB4RkRFRikgfHwKKwkJCQkoY2gxID49IDB4RkZGRSkpIHsKKworCQkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLAorCQkJCQkiU0FTTENsZWFuWEtNU1Bhc3NQaHJhc2UgLSBOb24tY2hhcmFjdGVyIGNvZGUgcG9pbnRzIGluIFhLTVMgcGFzcyBwaHJhc2UiKTsKKwkJCX0KKworCQkJLy8gSW5hcHByb3ByaWF0ZSBmb3IgcGxhaW4gdGV4dCBjaGFyYWN0ZXJzCisgICAKKwkJCXN3aXRjaCAoY2gxKSB7CisJCQljYXNlIDB4RkZGOToJCS8vIElOVEVSTElORUFSIEFOTk9UQVRJT04gQU5DSE9SCisJCQljYXNlIDB4RkZGQToJCS8vIElOVEVSTElORUFSIEFOTk9UQVRJT04gU0VQQVJBVE9SCisJCQljYXNlIDB4RkZGQjoJCS8vIElOVEVSTElORUFSIEFOTk9UQVRJT04gVEVSTUlOQVRPUgorCQkJY2FzZSAweEZGRkM6CQkvLyBPQkpFQ1QgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSCisJCQljYXNlIDB4RkZGRDoJCS8vIFJFUExBQ0VNRU5UIENIQVJBQ1RFUgorCQkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLAorCQkJCQkiU0FTTENsZWFuWEtNU1Bhc3NQaHJhc2UgLSBJbm5hcHByb3ByaWF0ZSBmb3IgcGxhaW4gdGV4dCBjaGFyYXJjdGVycyBpbiBYS01TIHBhc3MgcGhyYXNlIik7CisJCQlkZWZhdWx0OgorCQkJCWJyZWFrOworCQkJfQorCisJCQkvLyBJbmFwcHJpcHJpYXRlIGZvciBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gY2hhcmFjdGVycworCQkJaWYgKGNoMSA+PSAweDJGRjAgJiYgY2gxIDw9IDB4MkZGQikgeworCQkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLAorCQkJCQkiU0FTTENsZWFuWEtNU1Bhc3NQaHJhc2UgLSBJbm5hcHByb3ByaWF0ZSBmb3IgY2Fub25pY2FsaXNhdGlvbiBjaGFyYXJjdGVycyBpbiBYS01TIHBhc3MgcGhyYXNlIik7CisJCQl9CisKKwkJCS8vIENoYW5nZSBkaXNwbGF5IHByb3BlcnRpZXMgb3IgYXJlIGRlcHJlY2F0ZWQKKwkJCXN3aXRjaCAoY2gxKSB7CisJCQljYXNlIDB4MDM0MDoJCS8vIENPTUJJTklORyBHUkFWRSBUT05FIE1BUksKKwkJCWNhc2UgMHgwMzQxOgkJLy8gQ09NQklOSU5HIEFDVVRFIFRPTkUgTUFSSworCQkJY2FzZSAweDIwMEU6CQkvLyBMRUZULVRPLVJJR0hUIE1BUksKKwkJCWNhc2UgMHgyMDBGOgkJLy8gUklHSFQtVE8tTEVGVCBNQVJLCisJCQljYXNlIDB4MjAyQToJCS8vIExFRlQtVE8tUklHSFQgRU1CRURESU5HCisJCQljYXNlIDB4MjAyQjoJCS8vIFJJR0hULVRPLUxFRlQgRU1CRURESU5HCisJCQljYXNlIDB4MjAyQzoJCS8vIFBPUCBESVJFQ1RJT05BTCBGT1JNQVRUSU5HCisJCQljYXNlIDB4MjAyRDoJCS8vIExFRlQtVE8tUklHSFQgT1ZFUlJJREUKKwkJCWNhc2UgMHgyMDJFOgkJLy8gUklHSFQtVE8tTEVGVCBPVkVSUklERQorCQkJY2FzZSAweDIwNkE6CQkvLyBJTkhJQklUIFNZTU1FVFJJQyBTV0FQUElORworCQkJY2FzZSAweDIwNkI6CQkvLyBBQ1RJVkFURSBTWU1NRVRSSUMgU1dBUFBJTkcKKwkJCWNhc2UgMHgyMDZDOgkJLy8gSU5ISUJJVCBBUkFCSUMgRk9STSBTSEFQSU5HCisJCQljYXNlIDB4MjA2RDoJCS8vIEFDVElWQVRFIEFSQUJJQyBGT1JNIFNIQVBJTkcKKwkJCWNhc2UgMHgyMDZFOgkJLy8gTkFUSU9OQUwgRElHSVQgU0hBUEVTCisJCQljYXNlIDB4MjA2RjoJCS8vIE5PTUlOQUwgRElHSVQgU0hBUEVTCisJCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsCisJCQkJCSJTQVNMQ2xlYW5YS01TUGFzc1BocmFzZSAtIGNoYW5nZSBkaXNwbGF5IG9yIGRlcHJlY2F0ZWQgY2hhcmFyY3RlcnMgaW4gWEtNUyBwYXNzIHBocmFzZSIpOworCQkJZGVmYXVsdDoKKwkJCQlicmVhazsKKwkJCX0KKworCQkJLy8gV2UgZ290IHRoaXMgZmFyID0ganVzdCBydW4gd2l0aCBpdCBmb3Igbm93CisJCQl1b3V0cHV0W2orK10gPSBjaDE7CisJCX0KKwkJZWxzZSB7CisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwKKwkJCQkiU0FTTENsZWFuWEtNU1Bhc3NQaHJhc2UgLSBkb24ndCBzdXBwb3J0IFhLTVMgcGFzcyBwaHJhc2UgY2hhcnMgPiAweEZGRkYiKTsKKwkJfQorCX0gLyogZm9yICovCisJdW91dHB1dFtqKytdID0gY2hOdWxsOworCisJLy8gTm93IHRyYW5zY29kZQorCWNoYXIgKiB1dGY4b3V0cHV0PSB0cmFuc2NvZGVUb1VURjgodW91dHB1dCk7CisJb3V0cHV0LnNiU3RyY3B5SW4odXRmOG91dHB1dCk7CisKKwlpbnQgcmV0ID0gKGludClzdHJsZW4odXRmOG91dHB1dCk7CisJWFNFQ19SRUxFQVNFX1hNTENIKHV0ZjhvdXRwdXQpOworCXJldHVybiByZXQ7Cit9CisKK2ludCBEU0lHX0VYUE9SVCBDYWxjdWxhdGVYS01TQXV0aGVudGljYXRpb25LZXkodW5zaWduZWQgY2hhciAqIGlucHV0LCBpbnQgaW5wdXRMZW4sIHVuc2lnbmVkIGNoYXIgKiBvdXRwdXQsIGludCBtYXhPdXRwdXRMZW4pIHsKKworCXVuc2lnbmVkIGNoYXIga2V5VmFsW10gPSB7WEtNU0F1dGhlbnRpY2F0aW9uVmFsdWV9OworCisJWFNFQ0NyeXB0b0tleUhNQUMgKiBrID0gWFNFQ1BsYXRmb3JtVXRpbHM6OmdfY3J5cHRvUHJvdmlkZXItPmtleUhNQUMoKTsKKwlKYW5pdG9yPFhTRUNDcnlwdG9LZXlITUFDPiBqX2soayk7CisJay0+c2V0S2V5KGtleVZhbCwgMSk7CisKKwlYU0VDQ3J5cHRvSGFzaCAqaCA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5oYXNoSE1BQ1NIQTEoKTsKKwlKYW5pdG9yPFhTRUNDcnlwdG9IYXNoPiBqX2goaCk7CisJaC0+c2V0S2V5KGspOworCisJLy8gQ2xlYW4gdGhlIGlucHV0CisJc2FmZUJ1ZmZlciBzYjsKKwlpbnQgbCA9IFNBU0xDbGVhblhLTVNQYXNzUGhyYXNlKGlucHV0LCBpbnB1dExlbiwgc2IpOworCisJaC0+aGFzaCgodW5zaWduZWQgY2hhciAqKSBzYi5yYXdCdWZmZXIoKSwgbCk7CisJcmV0dXJuIGgtPmZpbmlzaChvdXRwdXQsIG1heE91dHB1dExlbik7CisKK30KKwkKKworaW50IERTSUdfRVhQT1JUIENhbGN1bGF0ZVhLTVNSZXZvY2F0aW9uQ29kZUlkZW50aWZpZXJFbmNvZGluZzEodW5zaWduZWQgY2hhciAqIGlucHV0LCBpbnQgaW5wdXRMZW4sIHVuc2lnbmVkIGNoYXIgKiBvdXRwdXQsIGludCBtYXhPdXRwdXRMZW4pIHsKKworCXVuc2lnbmVkIGNoYXIga2V5VmFsW10gPSB7WEtNU1Jldm9jYXRpb25Db2RlSWRlbmZpdGllckVuY29kaW5nMX07CisKKwlYU0VDQ3J5cHRvS2V5SE1BQyAqIGsgPSBYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+a2V5SE1BQygpOworCUphbml0b3I8WFNFQ0NyeXB0b0tleUhNQUM+IGpfayhrKTsKKwlrLT5zZXRLZXkoa2V5VmFsLCAxKTsKKworCVhTRUNDcnlwdG9IYXNoICpoID0gWFNFQ1BsYXRmb3JtVXRpbHM6OmdfY3J5cHRvUHJvdmlkZXItPmhhc2hITUFDU0hBMSgpOworCUphbml0b3I8WFNFQ0NyeXB0b0hhc2g+IGpfaChoKTsKKworCWgtPnNldEtleShrKTsKKworCS8vIENsZWFuIHRoZSBpbnB1dAorCXNhZmVCdWZmZXIgc2I7CisJaW50IGwgPSBDbGVhblhLTVNQYXNzUGhyYXNlKGlucHV0LCBpbnB1dExlbiwgc2IpOworCisJaC0+aGFzaCgodW5zaWduZWQgY2hhciAqKSBzYi5yYXdCdWZmZXIoKSwgbCk7CisJcmV0dXJuIGgtPmZpbmlzaChvdXRwdXQsIG1heE91dHB1dExlbik7CisKK30KKworaW50IERTSUdfRVhQT1JUIENhbGN1bGF0ZVhLTVNSZXZvY2F0aW9uQ29kZUlkZW50aWZpZXJFbmNvZGluZzIodW5zaWduZWQgY2hhciAqIGlucHV0LCBpbnQgaW5wdXRMZW4sIHVuc2lnbmVkIGNoYXIgKiBvdXRwdXQsIGludCBtYXhPdXRwdXRMZW4pIHsKKworCisJdW5zaWduZWQgY2hhciB0bXBCdWZbWFNFQ19NQVhfSEFTSF9TSVpFXTsKKwlpbnQgdG1wTGVuID0gQ2FsY3VsYXRlWEtNU1Jldm9jYXRpb25Db2RlSWRlbnRpZmllckVuY29kaW5nMShpbnB1dCwgaW5wdXRMZW4sIHRtcEJ1ZiwgWFNFQ19NQVhfSEFTSF9TSVpFKTsKKwlyZXR1cm4gQ2FsY3VsYXRlWEtNU1Jldm9jYXRpb25Db2RlSWRlbnRpZmllckVuY29kaW5nMkZyb20xKHRtcEJ1ZiwgdG1wTGVuLCBvdXRwdXQsIG1heE91dHB1dExlbik7CisKK30KKworaW50IERTSUdfRVhQT1JUIENhbGN1bGF0ZVhLTVNSZXZvY2F0aW9uQ29kZUlkZW50aWZpZXJFbmNvZGluZzJGcm9tMSh1bnNpZ25lZCBjaGFyICogaW5wdXQsIGludCBpbnB1dExlbiwgdW5zaWduZWQgY2hhciAqIG91dHB1dCwgaW50IG1heE91dHB1dExlbikgeworCisJdW5zaWduZWQgY2hhciBrZXlWYWxbXSA9IHtYS01TUmV2b2NhdGlvbkNvZGVJZGVuZml0aWVyRW5jb2RpbmcyfTsKKworCVhTRUNDcnlwdG9LZXlITUFDICogayA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5rZXlITUFDKCk7CisJSmFuaXRvcjxYU0VDQ3J5cHRvS2V5SE1BQz4gal9rKGspOworCWstPnNldEtleShrZXlWYWwsIDEpOworCisJWFNFQ0NyeXB0b0hhc2ggKmggPSBYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+aGFzaEhNQUNTSEExKCk7CisJSmFuaXRvcjxYU0VDQ3J5cHRvSGFzaD4gal9oKGgpOworCisJaC0+c2V0S2V5KGspOworCisJaC0+aGFzaChpbnB1dCwgaW5wdXRMZW4pOworCXJldHVybiBoLT5maW5pc2gob3V0cHV0LCBtYXhPdXRwdXRMZW4pOworCit9CisKK2ludCBEU0lHX0VYUE9SVCBDYWxjdWxhdGVYS01TS0VLKHVuc2lnbmVkIGNoYXIgKiBpbnB1dCwgaW50IGlucHV0TGVuLCB1bnNpZ25lZCBjaGFyICogb3V0cHV0LCBpbnQgbWF4T3V0cHV0TGVuKSB7CisKKwl1bnNpZ25lZCBjaGFyIGtleVZhbFtdID0ge1hLTVNLZXlFbmNyeXB0aW9ufTsKKwl1bnNpZ25lZCBjaGFyIHNoYU91dHB1dFsyMl07CS8vIFNIQTEgaGFzIDIwIGJ5dGVzIG9mIG91dHB1dAorCisJLy8gQ2xlYW4gdGhlIGlucHV0CisJc2FmZUJ1ZmZlciBzYjsKKwlpbnQgbCA9IFNBU0xDbGVhblhLTVNQYXNzUGhyYXNlKGlucHV0LCBpbnB1dExlbiwgc2IpOworCisJLy8gTmVlZCB0byBpdGVyYXRlIHRocm91Z2ggdW50aWwgd2UgaGF2ZSBlbm91Z2ggZGF0YQorCWludCBieXRlc0RvbmUgPSAwLCBieXRlc1RvRG87OworCXNoYU91dHB1dFswXSA9IGtleVZhbFswXTsKKwlpbnQga2V5TGVuID0gMTsKKwl3aGlsZSAoYnl0ZXNEb25lIDwgbWF4T3V0cHV0TGVuKSB7CisJCVhTRUNDcnlwdG9LZXlITUFDICogayA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5rZXlITUFDKCk7CisJCWstPnNldEtleShzaGFPdXRwdXQsIGtleUxlbik7CisKKwkJWFNFQ0NyeXB0b0hhc2ggKmggPSBYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+aGFzaEhNQUNTSEExKCk7CisJCUphbml0b3I8WFNFQ0NyeXB0b0hhc2g+IGpfaChoKTsKKworCQloLT5zZXRLZXkoayk7CisJCWRlbGV0ZShrKTsKKworCQkvLyBOb3cgaGFzaCBuZXh0IHJvdW5kIG9mIGRhdGEKKwkJaC0+aGFzaCgodW5zaWduZWQgY2hhciAqKSBzYi5yYXdCdWZmZXIoKSwgbCk7CisJCWtleUxlbiA9IGgtPmZpbmlzaChzaGFPdXRwdXQsIDIyKTsKKworCQkvLyBDb3B5IGludG8gdGhlIG91dHB1dCBidWZmZXIKKwkJYnl0ZXNUb0RvID0gbWF4T3V0cHV0TGVuIC0gYnl0ZXNEb25lOworCQlieXRlc1RvRG8gPSBieXRlc1RvRG8gPiAyMCA/IDIwIDogYnl0ZXNUb0RvOworCQltZW1jcHkoJm91dHB1dFtieXRlc0RvbmVdLCBzaGFPdXRwdXQsIGJ5dGVzVG9Ebyk7CisJCWJ5dGVzRG9uZSArPSBieXRlc1RvRG87CisKKwkJLy8gU2V0IHVwIGZvciBuZXh0IGtleQorCQlzaGFPdXRwdXRbMF0gXj0ga2V5VmFsWzBdOworCQlrZXlMZW4gPSAyMDsKKworCQlqX2gucmVsZWFzZSgpOworCQlkZWxldGUgaDsKKwl9CisKKwlyZXR1cm4gYnl0ZXNEb25lOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU29tZSBCYXNlNjQgaGVscGVycworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWE1MQ2ggRFNJR19FWFBPUlQgKiBFbmNvZGVUb0Jhc2U2NFhNTENoKHVuc2lnbmVkIGNoYXIgKiBpbnB1dCwgaW50IGlucHV0TGVuKSB7CisKKwlYU0VDQ3J5cHRvQmFzZTY0ICogYjY0ID0gWFNFQ1BsYXRmb3JtVXRpbHM6OmdfY3J5cHRvUHJvdmlkZXItPmJhc2U2NCgpOworCUphbml0b3I8WFNFQ0NyeXB0b0Jhc2U2ND4gal9iNjQoYjY0KTsKKwl1bnNpZ25lZCBjaGFyICogb3V0cHV0OworCWludCBvdXRwdXRMZW4gPSAoKDQgKiBpbnB1dExlbikgLyAzKSArIDU7CisJWFNFQ25ldyhvdXRwdXQsIHVuc2lnbmVkIGNoYXJbb3V0cHV0TGVuXSk7CisJQXJyYXlKYW5pdG9yPHVuc2lnbmVkIGNoYXI+IGpfb3V0cHV0KG91dHB1dCk7CisKKwliNjQtPmVuY29kZUluaXQoKTsKKwlpbnQgaiA9IGI2NC0+ZW5jb2RlKGlucHV0LCBpbnB1dExlbiwgb3V0cHV0LCBvdXRwdXRMZW4gLSAxKTsKKwlqICs9IGI2NC0+ZW5jb2RlRmluaXNoKCZvdXRwdXRbal0sIG91dHB1dExlbiAtIGogLSAxKTsKKworCS8vIFN0cmlwIGFueSB0cmFpbGluZyBcblxyCisJd2hpbGUgKGogPiAwICYmIChvdXRwdXRbai0xXSA9PSAnXG4nIHx8IG91dHB1dFtqLTFdID09ICdccicpKQorCQlqLS07CisKKwkvLyBOb3cgdHJhbnNjb2RlIGFuZCBnZXQgb3V0IG9mIGhlcmUKKwlvdXRwdXRbal0gPSAnXDAnOworCXJldHVybiBYTUxTdHJpbmc6OnRyYW5zY29kZSgoY2hhciAqKSBvdXRwdXQpOworCit9CisKK3Vuc2lnbmVkIGludCBEU0lHX0VYUE9SVCBEZWNvZGVGcm9tQmFzZTY0WE1MQ2goY29uc3QgWE1MQ2ggKiBpbnB1dCwgdW5zaWduZWQgY2hhciAqIG91dHB1dCwgaW50IG1heE91dHB1dExlbikgeworCisJWFNFQ0NyeXB0b0Jhc2U2NCAqIGI2NCA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5iYXNlNjQoKTsKKwlKYW5pdG9yPFhTRUNDcnlwdG9CYXNlNjQ+IGpfYjY0KGI2NCk7CisKKwlYU0VDQXV0b1B0ckNoYXIgdGlucHV0KGlucHV0KTsKKworCWI2NC0+ZGVjb2RlSW5pdCgpOworCXVuc2lnbmVkIGludCBqID0gYjY0LT5kZWNvZGUoKHVuc2lnbmVkIGNoYXIgKikgdGlucHV0LmdldCgpLCAodW5zaWduZWQgaW50KSBzdHJsZW4odGlucHV0LmdldCgpKSwgb3V0cHV0LCBtYXhPdXRwdXRMZW4gLSAxKTsKKwlqICs9IGI2NC0+ZGVjb2RlRmluaXNoKCZvdXRwdXRbal0sIG1heE91dHB1dExlbiAtIGogLSAxKTsKKworCXJldHVybiBqOworfQorCit1bnNpZ25lZCBpbnQgRFNJR19FWFBPUlQgRGVjb2RlRnJvbUJhc2U2NChjb25zdCBjaGFyICogaW5wdXQsIHVuc2lnbmVkIGNoYXIgKiBvdXRwdXQsIGludCBtYXhPdXRwdXRMZW4pIHsKKworCVhTRUNDcnlwdG9CYXNlNjQgKiBiNjQgPSBYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+YmFzZTY0KCk7CisJSmFuaXRvcjxYU0VDQ3J5cHRvQmFzZTY0PiBqX2I2NChiNjQpOworCisJYjY0LT5kZWNvZGVJbml0KCk7CisJdW5zaWduZWQgaW50IGogPSBiNjQtPmRlY29kZSgodW5zaWduZWQgY2hhciAqKSBpbnB1dCwgKHVuc2lnbmVkIGludCkgc3RybGVuKGlucHV0KSwgb3V0cHV0LCBtYXhPdXRwdXRMZW4gLSAxKTsKKwlqICs9IGI2NC0+ZGVjb2RlRmluaXNoKCZvdXRwdXRbal0sIG1heE91dHB1dExlbiAtIGogLSAxKTsKKworCXJldHVybiBqOworfQorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU29tZSBzdHVmZiB0byBoZWxwIHdpdGggd2llcmQgc2lnbmF0dXJlcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY29uc3QgdW5zaWduZWQgY2hhciBBU05EU0FQcm9sb2dbXSA9IHsweDMwLCAweDJjLCAweDAyLCAweDE0fTsKK2NvbnN0IHVuc2lnbmVkIGNoYXIgQVNORFNBTWlkZGxlW10gPSB7MHgwMiwgMHgxNH07CisKK2Jvb2wgQVNOMkRTQVNpZyhjb25zdCB1bnNpZ25lZCBjaGFyICogaW5wdXQsIHVuc2lnbmVkIGNoYXIgKiByLCB1bnNpZ25lZCBjaGFyICogcykgeworCisJaWYgKG1lbWNtcChBU05EU0FQcm9sb2csIGlucHV0LCA0KSAhPSAwIHx8CisJCW1lbWNtcChBU05EU0FNaWRkbGUsICZpbnB1dFsyNF0sIDIpICE9IDApCisKKwkJcmV0dXJuIGZhbHNlOworCisJbWVtY3B5KHIsICZpbnB1dFs0XSwgMjApOworCW1lbWNweShzLCAmaW5wdXRbMjZdLCAyMCk7CisKKwlyZXR1cm4gdHJ1ZTsKKworfQorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ2FsY3VsYXRlIGNvcnJlY3QgT0lEcyBmb3IgYW4gUlNBIHNpZworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLyogQXMgcGVyIFJTQSdzIFBLQ1MgIzEgdiAyLjEsIFNlY3Rpb24gOS4yIE5vdGUgMSwgdGhlIERFUiBlbmNvZGluZ3MgZm9yCisgKiB0aGUgaGFzIHR5cGVzIGFyZSBhcyBmb2xsb3dzOgorICoKKyAqIE1EMjogKDB4KTMwIDIwIDMwIDBjIDA2IDA4IDJhIDg2IDQ4IDg2IGY3IDBkIDAyIDAyIDA1IDAwIDA0IDEwIHx8IEguCisgKiBNRDU6ICgweCkzMCAyMCAzMCAwYyAwNiAwOCAyYSA4NiA0OCA4NiBmNyAwZCAwMiAwNSAwNSAwMCAwNCAxMCB8fCBILgorICogU0hBLTE6ICgweCkzMCAyMSAzMCAwOSAwNiAwNSAyYiAwZSAwMyAwMiAxYSAwNSAwMCAwNCAxNCB8fCBILgorICogU0hBLTI1NjogKDB4KTMwIDMxIDMwIDBkIDA2IDA5IDYwIDg2IDQ4IDAxIDY1IDAzIDA0IDAyIDAxIDA1IDAwIDA0IDIwIHx8IEguCisgKiBTSEEtMzg0OiAoMHgpMzAgNDEgMzAgMGQgMDYgMDkgNjAgODYgNDggMDEgNjUgMDMgMDQgMDIgMDIgMDUgMDAgMDQgMzAgfHwgSC4KKyAqIFNIQS01MTI6ICgweCkzMCA1MSAzMCAwZCAwNiAwOSA2MCA4NiA0OCAwMSA2NSAwMyAwNCAwMiAwMyAwNSAwMCAwNCA0MCB8fCBILgorICoKKyAqIE1vcmUgcmVjZW50bHkgdGhlIGZvbGxvd2luZyBoYXMgYmVlbiBwcm92aWRlZCBmb3IgU0hBLTIyNAorICoKKyAqIFNIQS0yMjQ6IDMwIDJkIDMwIDBkIDA2IDA5IDYwIDg2IDQ4IDAxIDY1IDAzIDA0IDAyIDA0IDA1IDAwIDA0IDFjCisgKgorICovCisKK2ludCBNRDVPSURMZW4gPSAxODsKK3Vuc2lnbmVkIGNoYXIgTUQ1T0lEW10gPSB7CisJMHgzMCwgMHgyMCwgMHgzMCwgMHgwYywgMHgwNiwgMHgwOCwgMHgyYSwgMHg4NiwgCisJMHg0OCwgMHg4NiwgMHhmNywgMHgwZCwgMHgwMiwgMHgwNSwgMHgwNSwgMHgwMCwgCisJMHgwNCwgMHgxMAorfTsKKworCitpbnQgc2hhMU9JRExlbiA9IDE1OwordW5zaWduZWQgY2hhciBzaGExT0lEW10gPSB7CisJMHgzMCwgMHgyMSwgMHgzMCwgMHgwOSwgMHgwNiwgMHgwNSwgMHgyQiwgMHgwRSwgCisJMHgwMywgMHgwMiwgMHgxQSwgMHgwNSwgMHgwMCwgMHgwNCwgMHgxNAorfTsKKworaW50IHNoYTIyNE9JRExlbiA9IDE5OwordW5zaWduZWQgY2hhciBzaGEyMjRPSURbXSA9IHsKKwkweDMwLCAweDJkLCAweDMwLCAweDBkLCAweDA2LCAweDA5LCAweDYwLCAweDg2LCAKKwkweDQ4LCAweDAxLCAweDY1LCAweDAzLCAweDA0LCAweDAyLCAweDA0LCAweDA1LCAKKwkweDAwLCAweDA0LCAweDFjCit9OworCitpbnQgc2hhMjU2T0lETGVuID0gMTk7Cit1bnNpZ25lZCBjaGFyIHNoYTI1Nk9JRFtdID0geworCTB4MzAsIDB4MzEsIDB4MzAsIDB4MGQsIDB4MDYsIDB4MDksIDB4NjAsIDB4ODYsIAorCTB4NDgsIDB4MDEsIDB4NjUsIDB4MDMsIDB4MDQsIDB4MDIsIDB4MDEsIDB4MDUsIAorCTB4MDAsIDB4MDQsIDB4MjAKK307CisKK2ludCBzaGEzODRPSURMZW4gPSAxOTsKK3Vuc2lnbmVkIGNoYXIgc2hhMzg0T0lEW10gPSB7CisJMHgzMCwgMHg0MSwgMHgzMCwgMHgwZCwgMHgwNiwgMHgwOSwgMHg2MCwgMHg4NiwgCisJMHg0OCwgMHgwMSwgMHg2NSwgMHgwMywgMHgwNCwgMHgwMiwgMHgwMiwgMHgwNSwgCisJMHgwMCwgMHgwNCwgMHgzMAorfTsKKworaW50IHNoYTUxMk9JRExlbiA9IDE5OwordW5zaWduZWQgY2hhciBzaGE1MTJPSURbXSA9IHsKKwkweDMwLCAweDUxLCAweDMwLCAweDBkLCAweDA2LCAweDA5LCAweDYwLCAweDg2LCAKKwkweDQ4LCAweDAxLCAweDY1LCAweDAzLCAweDA0LCAweDAyLCAweDAzLCAweDA1LCAKKwkweDAwLCAweDA0LCAweDQwCit9OworCisKK3Vuc2lnbmVkIGNoYXIgKiBnZXRSU0FTaWdPSUQoaGFzaE1ldGhvZCBobSwgaW50ICZvaWRMZW4pIHsKKworCXN3aXRjaCAoaG0pIHsKKworCWNhc2UgKEhBU0hfTUQ1KToKKwkJb2lkTGVuID0gTUQ1T0lETGVuOworCQlyZXR1cm4gTUQ1T0lEOworCWNhc2UgKEhBU0hfU0hBMSk6CisJCW9pZExlbiA9IHNoYTFPSURMZW47CisJCXJldHVybiBzaGExT0lEOworCWNhc2UgKEhBU0hfU0hBMjI0KToKKwkJb2lkTGVuID0gc2hhMjI0T0lETGVuOworCQlyZXR1cm4gc2hhMjI0T0lEOworCWNhc2UgKEhBU0hfU0hBMjU2KToKKwkJb2lkTGVuID0gc2hhMjU2T0lETGVuOworCQlyZXR1cm4gc2hhMjU2T0lEOworCWNhc2UgKEhBU0hfU0hBMzg0KToKKwkJb2lkTGVuID0gc2hhMzg0T0lETGVuOworCQlyZXR1cm4gc2hhMzg0T0lEOworCWNhc2UgKEhBU0hfU0hBNTEyKToKKwkJb2lkTGVuID0gc2hhNTEyT0lETGVuOworCQlyZXR1cm4gc2hhNTEyT0lEOworCWRlZmF1bHQ6CisJCW9pZExlbiA9IDA7CisJCXJldHVybiBOVUxMOworCisJfQorfQorCisKKwpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL1hTRUNDcnlwdG9VdGlscy5ocHAgYi9jL3NyYy9lbmMvWFNFQ0NyeXB0b1V0aWxzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmM5NTZiCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZW5jL1hTRUNDcnlwdG9VdGlscy5ocHAKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ0NyeXB0b1V0aWxzOj0gSGVscGVyIGNyeXBvIHV0aWxpdGllcyB0aGF0IG1ha2UgbGlmZSBlYXNpZXIKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWFNFQ0NSWVBUT1VUSUxTX0lOQ0xVREUKKyNkZWZpbmUgWFNFQ0NSWVBUT1VUSUxTX0lOQ0xVREUKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNTYWZlQnVmZmVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0NvbnN0YW50cy5ocHA+CisKKy8qKgorICogXGJyaWVmIEhlbHBlciB1dGlsaXRpZXMgZm9yIGNyeXB0by4KKyAqIEBpbmdyb3VwIGNyeXB0bworICovCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgWEtNUyBMaW1pdGVkLVVzZSBTaGFyZWQgU2VjcmV0IGhhbmRsaW5nCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjZGVmaW5lIFhLTVNBdXRoZW50aWNhdGlvblZhbHVlCQkJCQkweDAxCisjZGVmaW5lCVhLTVNSZXZvY2F0aW9uQ29kZUlkZW5maXRpZXJFbmNvZGluZzEJMHgwMgorI2RlZmluZQlYS01TUmV2b2NhdGlvbkNvZGVJZGVuZml0aWVyRW5jb2RpbmcyCTB4MDMKKyNkZWZpbmUgWEtNU0tleUVuY3J5cHRpb24JCQkJCQkweDA0CisKK2ludCBEU0lHX0VYUE9SVCBDYWxjdWxhdGVYS01TQXV0aGVudGljYXRpb25LZXkodW5zaWduZWQgY2hhciAqIGlucHV0LCBpbnQgaW5wdXRMZW4sIHVuc2lnbmVkIGNoYXIgKiBvdXRwdXQsIGludCBtYXhPdXRwdXRMZW4pOworaW50IERTSUdfRVhQT1JUIENhbGN1bGF0ZVhLTVNSZXZvY2F0aW9uQ29kZUlkZW50aWZpZXJFbmNvZGluZzEodW5zaWduZWQgY2hhciAqIGlucHV0LCBpbnQgaW5wdXRMZW4sIHVuc2lnbmVkIGNoYXIgKiBvdXRwdXQsIGludCBtYXhPdXRwdXRMZW4pOworLyogQ2FsY3VsYXRlIGVuY29kaW5nIDIgLSBJbnB1dCBpcyBvcmlnaW5hbCBwYXNzIHBocmFzZSAqLworaW50IERTSUdfRVhQT1JUIENhbGN1bGF0ZVhLTVNSZXZvY2F0aW9uQ29kZUlkZW50aWZpZXJFbmNvZGluZzIodW5zaWduZWQgY2hhciAqIGlucHV0LCBpbnQgaW5wdXRMZW4sIHVuc2lnbmVkIGNoYXIgKiBvdXRwdXQsIGludCBtYXhPdXRwdXRMZW4pOworLyogQ2FsY3VsYXRlIGVuY29kaW5nIDIgLSBJbnB1dCBpcyBlbmNvZGluZyAxICovCitpbnQgRFNJR19FWFBPUlQgQ2FsY3VsYXRlWEtNU1Jldm9jYXRpb25Db2RlSWRlbnRpZmllckVuY29kaW5nMkZyb20xKHVuc2lnbmVkIGNoYXIgKiBpbnB1dCwgaW50IGlucHV0TGVuLCB1bnNpZ25lZCBjaGFyICogb3V0cHV0LCBpbnQgbWF4T3V0cHV0TGVuKTsKK2ludCBEU0lHX0VYUE9SVCBDYWxjdWxhdGVYS01TS0VLKHVuc2lnbmVkIGNoYXIgKiBpbnB1dCwgaW50IGlucHV0TGVuLCB1bnNpZ25lZCBjaGFyICogb3V0cHV0LCBpbnQgbWF4T3V0cHV0TGVuKTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBTb21lIEJhc2U2NCBoZWxwZXJzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYTUxDaCBEU0lHX0VYUE9SVCAqIEVuY29kZVRvQmFzZTY0WE1MQ2godW5zaWduZWQgY2hhciAqIGlucHV0LCBpbnQgaW5wdXRMZW4pOwordW5zaWduZWQgaW50IERTSUdfRVhQT1JUIERlY29kZUZyb21CYXNlNjRYTUxDaChjb25zdCBYTUxDaCAqIGlucHV0LCB1bnNpZ25lZCBjaGFyICogb3V0cHV0LCBpbnQgbWF4T3V0cHV0TGVuKTsKK3Vuc2lnbmVkIGludCBEU0lHX0VYUE9SVCBEZWNvZGVGcm9tQmFzZTY0KGNvbnN0IGNoYXIgKiBpbnB1dCwgdW5zaWduZWQgY2hhciAqIG91dHB1dCwgaW50IG1heE91dHB1dExlbik7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU29tZSBzdHVmZiB0byBoZWxwIHdpdGggd2llcmQgc2lnbmF0dXJlcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gQ29udmVydCBhbiBBU04uMSBmb3JtYXQgRFNBIHNpZ25hdHVyZSAoISEhKSB0byB0aGUgdHdvIGNvbXBvbmVudCBpbnRlZ2VycworLy8gTk9URSAtIGJvdGggciBhbmQgcyBtdXN0IGJlIGF0IGxlYXN0IDIwIGJ5dGVzIGxvbmcKKworYm9vbCBEU0lHX0VYUE9SVCBBU04yRFNBU2lnKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBpbnB1dCwgdW5zaWduZWQgY2hhciAqIHIsIHVuc2lnbmVkIGNoYXIgKiBzKTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDYWxjdWxhdGUgY29ycmVjdCBPSURzIGZvciBhbiBSU0Egc2lnCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit1bnNpZ25lZCBjaGFyICogZ2V0UlNBU2lnT0lEKGhhc2hNZXRob2QgaG0sIGludCAmb2lkTGVuKTsKKworI2VuZGlmIC8qIFhTRUNDUllQVE9VVElMU19JTkNMVURFICovCisKKwpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL1hTRUNDcnlwdG9YNTA5LmNwcCBiL2Mvc3JjL2VuYy9YU0VDQ3J5cHRvWDUwOS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY1ZWNkOQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9YU0VDQ3J5cHRvWDUwOS5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ0NyeXB0b1g1MDk6PSBBIGJhc2UgY2xhc3MgZm9yIGhhbmRsaW5nIFg1MDkgKFYzKSBjZXJ0aWZpY2F0ZXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b1g1MDkuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b0V4Y2VwdGlvbi5ocHA+CisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKwordm9pZCBYU0VDQ3J5cHRvWDUwOTo6bG9hZFg1MDlQRU0oY29uc3QgY2hhciAqIGJ1ZiwgdW5zaWduZWQgaW50IGxlbikgeworCisJY29uc3QgY2hhciAqIGI7CisJY2hhciAqIGIxID0gTlVMTDsKKwlpZiAobGVuID09IDApCisJCWIgPSBidWY7CisJZWxzZSB7CisJCVhTRUNuZXcoYjEsIGNoYXJbbGVuKzFdKTsKKwkJbWVtY3B5KGIxLCBidWYsIGxlbik7CisJCWIxW2xlbl0gPSAnXDAnOworCQliID0gYjE7CisJfQorCisJY29uc3QgY2hhciAqcCA9IHN0cnN0cihidWYsICItLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0iKTsKKworCWlmIChwID09IE5VTEwpIHsKKworCQlpZiAoYjEgIT0gTlVMTCkKKwkJCWRlbGV0ZVtdIGIxOworCisJCXRocm93IFhTRUNDcnlwdG9FeGNlcHRpb24oWFNFQ0NyeXB0b0V4Y2VwdGlvbjo6WDUwOUVycm9yLAorCQkiWDUwOTo6bG9hZFg1MDlQRU0gLSBDYW5ub3QgZmluZCBzdGFydCBvZiBQRU0gY2VydGlmaWNhdGUiKTsKKworCX0KKworCXAgKz0gc3RybGVuKCItLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0iKTsKKworCXdoaWxlICgqcCA9PSAnXG4nIHx8ICpwID09ICdccicgfHwgKnAgPT0gJy0nKQorCQlwKys7CisKKwlzYWZlQnVmZmVyIG91dHB1dDsKKwlpbnQgaSA9IDA7CisJd2hpbGUgKCpwICE9ICdcMCcgJiYgKnAgIT0gJy0nKSB7CisJCW91dHB1dFtpKytdID0gKnA7CisJCSsrcDsKKwl9CisKKwlpZiAoc3Ryc3RyKHAsICItLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tIikgIT0gcCkgeworCisJCWlmIChiMSAhPSBOVUxMKQorCQkJZGVsZXRlW10gYjE7CisKKwkJdGhyb3cgWFNFQ0NyeXB0b0V4Y2VwdGlvbihYU0VDQ3J5cHRvRXhjZXB0aW9uOjpYNTA5RXJyb3IsCisJCSJYNTA5Ojpsb2FkWDUwOVBFTSAtIENhbm5vdCBmaW5kIGVuZCBvZiBQRU0gY2VydGlmaWNhdGUiKTsKKworCX0KKwkKKwlpZiAoYjEgIT0gTlVMTCkKKwkJZGVsZXRlW10gYjE7CisKKwlvdXRwdXRbaV0gPSAnXDAnOworCisJdGhpcy0+bG9hZFg1MDlCYXNlNjRCaW4ob3V0cHV0LnJhd0NoYXJCdWZmZXIoKSwgaSk7CisKK30KKwpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL1hTRUNDcnlwdG9YNTA5LmhwcCBiL2Mvc3JjL2VuYy9YU0VDQ3J5cHRvWDUwOS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWU1OTUyNQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9YU0VDQ3J5cHRvWDUwOS5ocHAKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNDcnlwdG9YNTA5Oj0gQSBiYXNlIGNsYXNzIGZvciBoYW5kbGluZyBYNTA5IChWMykgY2VydGlmaWNhdGVzCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhTRUNDUllQVE9YNTA5X0lOQ0xVREUKKyNkZWZpbmUgWFNFQ0NSWVBUT1g1MDlfSU5DTFVERQorCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9LZXkuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1NhZmVCdWZmZXIuaHBwPgorCisvKioKKyAqIFxicmllZiBJbnRlcmZhY2UgY2xhc3MgZm9yIFg1MDkgY2VydGlmaWNhdGVzLgorICogQGluZ3JvdXAgY3J5cHRvCisgKgorICogVGhlIGxpYnJhcnkgdXNlcyBjbGFzc2VzIGRlcml2ZWQgZnJvbSB0aGlzIHRvIHByb2Nlc3MgWDUwOSBDZXJ0aWZpY2F0ZXMuCisgKgorICogU3RyaWN0bHkgc3BlYWtpbmcsIHRoaXMgY2xhc3MgaXMgbm90IHJlcXVpcmVkIChhbmQgaXMgY29tcGxldGVseSAKKyAqIDxlbT5PcHRpb25hbDwvZW0+LiAgSG93ZXZlciBpdCBpcyB1c2VkIGJ5CisgKiBYU0VDS2V5SW5mb1Jlc29sdmVyRGVmYXVsdCB0byBleHRyYWN0IGEga2V5IGZyb20gYSBjZXJ0aWZpY2F0ZSBpbiBjYXNlcworICogd2hlcmUgdGhlIGNhbGxlciBpcyBub3Qgd29ycmllZCBhYm91dCB0aGUgdHJ1c3QgbGV2ZWwgb2YgdGhlIGNlcnRpZmljYXRlLgorICoKKyAqLworCisKK2NsYXNzIERTSUdfRVhQT1JUIFhTRUNDcnlwdG9YNTA5IHsKKworcHVibGljIDoKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCisJWFNFQ0NyeXB0b1g1MDkoKSB7fTsKKwl2aXJ0dWFsIH5YU0VDQ3J5cHRvWDUwOSgpIHt9OworCisJLy9AfQorCS8qKiBAbmFtZSBLZXkgSW50ZXJmYWNlIG1ldGhvZHMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIHRoZSB0eXBlIG9mIHRoZSBrZXkgc3RvcmVkIGluIHRoZSBjZXJ0aWZpY2F0ZS4KKwkgKgorCSAqIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBleHBlY3RlZCB0byBleHRyYWN0IHRoZSBrZXkgZnJvbSB0aGUgCisJICogY2VydGlmaWNhdGUgYW5kIGRldGVybWluZSB0aGUgdHlwZS4KKwkgKgorCSAqLworCisJdmlydHVhbCBYU0VDQ3J5cHRvS2V5OjpLZXlUeXBlIGdldFB1YmxpY0tleVR5cGUoKSBjb25zdCA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IGEgY29weSBvZiB0aGUgcHVibGljIGtleS4KKwkgKgorCSAqIFRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgZXh0cmFjdCB0aGUga2V5IGZyb20gdGhlIGNlcnRpZmljYXRlLAorCSAqIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUga2V5IHR5cGUsIGFuZCByZXR1cm4gaXQuCisJICoKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0tleSAqIGNsb25lUHVibGljS2V5KCkgY29uc3QgPSAwOworCisJLyoqCisJICogXGJyaWVmIFJldHVybnMgYSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSBjcnlwdG8gb3duZXIgb2YgdGhpcyBsaWJyYXJ5LgorCSAqLworCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldFByb3ZpZGVyTmFtZSgpIGNvbnN0ID0gMDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBMb2FkIGFuZCBHZXQgdGhlIGNlcnRpZmljYXRlICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIExvYWQgYSBjZXJ0aWZpY2F0ZSBpbnRvIHRoZSBvYmplY3QuCisJICoKKwkgKiBUYWtlIGEgYmFzZTY0IERFUiBlbmNvZGVkIGNlcnRpZmljYXRlIGFuZCBsb2FkLgorCSAqCisJICogQHBhcmFtIGJ1ZiBBIGJ1ZmZlciBjb250YWluaW5nIHRoZSBCYXNlNjQgZW5jb2RlZCBjZXJ0aWZpY2F0ZQorCSAqIEBwYXJhbSBsZW4gVGhlIG51bWJlciBvZiBieXRlcyBvZiBkYXRhIGluIHRoZSBjZXJ0aWZpY2F0ZS4KKwkgKi8KKworCXZpcnR1YWwgdm9pZCBsb2FkWDUwOUJhc2U2NEJpbihjb25zdCBjaGFyICogYnVmLCB1bnNpZ25lZCBpbnQgbGVuKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgTG9hZCBhIFBFTSBlbmNvZGVkIGNlcnRpZmljYXRlIGludG8gdGhlIG9iamVjdC4KKwkgKgorCSAqIFRha2UgYSBQRU0gZW5jb2RlZCBjZXJ0aWZpY2F0ZSBhbmQgbG9hZC4KKwkgKgorCSAqIEBwYXJhbSBidWYgQSBidWZmZXIgY29udGFpbmluZyB0aGUgUEVNIGVuY29kZWQgY2VydGlmaWNhdGUKKwkgKiBAcGFyYW0gbGVuIFRoZSBudW1iZXIgb2YgYnl0ZXMgb2YgZGF0YSBpbiB0aGUgY2VydGlmaWNhdGUuCisJICogKDAgaWYgdGhlIHN0cmluZyBpcyBudWxsIHRlcm1pbmF0ZWQuKQorCSAqLworCisJdm9pZCBsb2FkWDUwOVBFTShjb25zdCBjaGFyICogYnVmLCB1bnNpZ25lZCBpbnQgbGVuID0gMCk7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IGEgQmFzZTY0IERFUiBlbmNvZGVkIGNvcHkgb2YgdGhlIGNlcnRpZmljYXRlCisJICoKKwkgKiBAcmV0dXJucyBBIHNhZmVCdWZmZXIgY29udGFpbmluZyB0aGUgREVSIGVuY29kZWQgY2VydGlmaWNhdGUKKwkgKi8KKworCXZpcnR1YWwgc2FmZUJ1ZmZlciAmZ2V0REVSRW5jb2RpbmdTQih2b2lkKSA9IDA7CQkvLyBHZXQgdGhlIERFUiBzdHJpbmcKKworICAgIC8qKgorCSAqIFxicmllZiBHZXQgYSBCYXNlNjQgREVSIGVuY29kZWQgY29weSBvZiB0aGUgY2VydGlmaWNhdGUKKwkgKgorCSAqIEByZXR1cm5zIEEgc2FmZUJ1ZmZlciBjb250YWluaW5nIHRoZSBERVIgZW5jb2RlZCBjZXJ0aWZpY2F0ZQorCSAqLworCisJdmlydHVhbCBjb25zdCBzYWZlQnVmZmVyICZnZXRERVJFbmNvZGluZ1NCKHZvaWQpIGNvbnN0ID0gMDsJCS8vIEdldCB0aGUgREVSIHN0cmluZworCisJLy9AfQorCit9OworCisKKyNlbmRpZiAvKiBYU0VDQ1JZUFRPWDUwOV9JTkNMVURFICovCisKKwpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL1hTRUNLZXlJbmZvUmVzb2x2ZXIuaHBwIGIvYy9zcmMvZW5jL1hTRUNLZXlJbmZvUmVzb2x2ZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1Mzg3YWMKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9lbmMvWFNFQ0tleUluZm9SZXNvbHZlci5ocHAKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNLZXlJbmZvUmVzb2x2ZXIgOj0gVmlydHVhbCBpbnRlcmZhY2UgY2xhc3MgZm9yIGFwcGxpY2F0aW9ucworICoJCQkJCQkgdG8gbWFwIEtleUluZm8gdG8ga2V5cworICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYU0VDS0VZSU5GT1JFU09MVkVSX0lOQ0xVREUKKyNkZWZpbmUgWFNFQ0tFWUlORk9SRVNPTFZFUl9JTkNMVURFCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdLZXlJbmZvTGlzdC5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b0tleS5ocHA+CisKKy8qKgorICogQGluZ3JvdXAgaW50ZXJmYWNlcworICovCisvKlxAeyovCisKKy8qKgorICogQGJyaWVmIEludGVyZmFjZSBjbGFzcyBmb3IgcHJvdmlkaW5nIGtleXMgdG8gdGhlIGxpYnJhcnkuCisgKgorICogVGhlIFhTRUMgbGlicmFyeSBkb2VzIG5vdCBwZXJmb3JtIGFjdHVhbCBtYXBwaW5nIG9mIEtleUluZm8KKyAqIGVsZW1lbnRzIHRvIGVuY3J5cHRpb24ga2V5cy4gIChJbiBzb21lIGNhc2VzIGEgS2V5SW5mbyBtaWdodAorICogbm90IGV2ZW4gYmUgcHJvdmlkZWQpLgorICoKKyAqIFRoaXMgaW50ZXJmYWNlIGNsYXNzIGFsbG93cyB0aGUgYXBwbGljYXRpb24gdG8gcGVyZm9ybSB0aGlzCisgKiBrZXkgbWFwcGluZyBhbmQgcHJvdmlzaW9uIGZ1bmN0aW9uLiAgQXBwbGljYXRpb25zIGNhbiBwZXJmb3JtCisgKiB3aGF0ZXZlciBzdGVwcyBhcmUgbmVjZXNzYXJ5IHRvIGRldGVybWluZSB0aGUgYXBwcm9wcmlhdGUga2V5CisgKiBhbmQgd2hhdCB0cnVzdCBsZXZlbCBpdCBtaWdodCBoYXZlLgorICoKKyAqLworCitjbGFzcyBEU0lHX0VYUE9SVCBYU0VDS2V5SW5mb1Jlc29sdmVyIHsKKworcHVibGljIDoKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCisJWFNFQ0tleUluZm9SZXNvbHZlcigpIHt9OworCXZpcnR1YWwgflhTRUNLZXlJbmZvUmVzb2x2ZXIoKSB7fTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBNYW5kYXRvcnkgSW50ZXJmYWNlIEZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBQcm92aWRlIGEga2V5IHRvIHRoZSBsaWJyYXJ5CisJICoKKwkgKiBUaGUgbGlicmFyeSB3aWxsIHBhc3MgdGhlIEtleUluZm9MaXN0IHRvIHRoZSByZXNvbHZlcgorCSAqIHdoaWNoIHRoZW4gbmVlZHMgdG8gcHJvdmlkZSBhIGtleSBiYWNrIHRvIHRoZSBsaWJyYXJ5LgorCSAqIFRoZSBrZXkgbWF5IGhhdmUgYWJzb2x1dGVseSBubyByZWxhdGlvbnNoaXAgdG8gdGhlIEtleUluZm9MaXN0CisJICogKHdoaWNoIGlzIG9ubHkgc3VwcG9zZWQgdG8gcHJvdmlkZSBhIGhpbnQpLgorCSAqCisJICogSWYgbm8gS2V5SW5mbyBlbGVtZW50cyB3ZXJlIHByb3ZpZGVkIGluIHRoZSBTaWduYXR1cmUsCisJICogTlVMTCB3aWxsIGJlIHBhc3NlZCBpbi4KKwkgKgorCSAqIEBwYXJhbSBsc3QgVGhlIGxpc3Qgb2YgS2V5SW5mbyBlbGVtZW50cyBmcm9tIHRoZSBzaWduYXR1cmUKKwkgKiBAcmV0dXJucyBFaXRoZXIgdGhlIGFwcHJvcHJpYXRlIGtleSBvciBOVUxMIGlmIG5vbmUgY2FuIGJlIGZvdW5kCisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXkgKiByZXNvbHZlS2V5KERTSUdLZXlJbmZvTGlzdCAqIGxzdCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIENsb25lIHRoZSByZXNvbHZlciB0byBiZSBpbnN0YWxsZWQgaW4gYSBuZXcgb2JqZWN0LgorCSAqCisJICogV2hlbiBLZXlJbmZvUmVzb2x2ZXJzIGFyZSBwYXNzZWQgaW50byBzaWduYXR1cmVzIGFuZCBvdGhlcgorCSAqIG9iamVjdHMsIHRoZXkgYXJlIGNsb25lZCBhbmQgY29udHJvbCBvZiB0aGUgb3JpZ2luYWwgb2JqZWN0CisJICogaXMgbGVmdCB3aXRoIHRoZSBjYWxsZXIuCisJICoKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0tleUluZm9SZXNvbHZlciAqIGNsb25lKHZvaWQpIGNvbnN0ID0gMDsKKworCS8vQH0KKworCS8qXEB9Ki8KK307CisKKworI2VuZGlmIC8qIFhTRUNLRVlJTkZPUkVTT0xWRVJfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL1hTRUNLZXlJbmZvUmVzb2x2ZXJEZWZhdWx0LmNwcCBiL2Mvc3JjL2VuYy9YU0VDS2V5SW5mb1Jlc29sdmVyRGVmYXVsdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzljODc0YQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9YU0VDS2V5SW5mb1Jlc29sdmVyRGVmYXVsdC5jcHAKQEAgLTAsMCArMSwxODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDEwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNLZXlJbmZvUmVzb2x2ZXJEZWZhdWx0IDo9IERlZmF1bHQgKHZlcnkgYmFzaWMpIGNsYXNzIGZvciBhcHBsaWNhdGlvbnMKKyAqCQkJCQkJIHRvIG1hcCBLZXlJbmZvIHRvIGtleXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDS2V5SW5mb1Jlc29sdmVyRGVmYXVsdC5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdLZXlJbmZvWDUwOS5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdLZXlJbmZvVmFsdWUuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHS2V5SW5mb0RFUkVuY29kZWQuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisKKyNpbmNsdWRlICIuLi91dGlscy9YU0VDQXV0b1B0ci5ocHAiCisKKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvSmFuaXRvci5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdC9EZXN0cnVjdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1hTRUNLZXlJbmZvUmVzb2x2ZXJEZWZhdWx0OjpYU0VDS2V5SW5mb1Jlc29sdmVyRGVmYXVsdCgpIHsKKworCS8vIENyZWF0ZSBhIFVURi04IGZvcm1hdHRlcgorCVhTRUNuZXcobXBfZm9ybWF0dGVyLCBYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlcigiVVRGLTgiLFhNTEZvcm1hdHRlcjo6Tm9Fc2NhcGVzLCAKKwkJCQkJCQkJCQkJCVhNTEZvcm1hdHRlcjo6VW5SZXBfQ2hhclJlZikpOworfQorCisKK1hTRUNLZXlJbmZvUmVzb2x2ZXJEZWZhdWx0Ojp+WFNFQ0tleUluZm9SZXNvbHZlckRlZmF1bHQoKSB7CisKKwlpZiAobXBfZm9ybWF0dGVyICE9IE5VTEwpCisJCWRlbGV0ZSBtcF9mb3JtYXR0ZXI7CisKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEludGVyZmFjZSBNZXRob2RzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK1hTRUNDcnlwdG9LZXkgKiBYU0VDS2V5SW5mb1Jlc29sdmVyRGVmYXVsdDo6cmVzb2x2ZUtleShEU0lHS2V5SW5mb0xpc3QgKiBsc3QpIHsKKworCS8vIFRyeSB0byBmaW5kIGEga2V5IGZyb20gdGhlIEtleUluZm8gbGlzdCBhcyBiZXN0IHdlIGNhbgorCS8vIE5PVEU6IE5vIHZhbGlkYXRpb24gaXMgcGVyZm9ybWVkIChpLmUuIG5vIGNlcnQvQ1JMIGNoZWNrcyBldGMuKQorCisJWFNFQ0NyeXB0b0tleSAqIHJldCA9IE5VTEw7CisKKwlEU0lHS2V5SW5mb0xpc3Q6OnNpemVfdHlwZSBzeiA9IGxzdC0+Z2V0U2l6ZSgpOworCisJZm9yIChEU0lHS2V5SW5mb0xpc3Q6OnNpemVfdHlwZSBpID0gMDsgaSA8IHN6OyArK2kpIHsKKworCQlzd2l0Y2ggKGxzdC0+aXRlbShpKS0+Z2V0S2V5SW5mb1R5cGUoKSkgeworCisJCWNhc2UgKERTSUdLZXlJbmZvOjpLRVlJTkZPX1g1MDkpIDoKKwkJeworCQkJcmV0ID0gTlVMTDsKKwkJCWNvbnN0IFhNTENoICogeDUwOVN0cjsKKwkJCVhTRUNDcnlwdG9YNTA5ICogeDUwOSA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5YNTA5KCk7CisJCQlKYW5pdG9yPFhTRUNDcnlwdG9YNTA5PiBqX3g1MDkoeDUwOSk7CisKKwkJCXg1MDlTdHIgPSAoKERTSUdLZXlJbmZvWDUwOSAqKSBsc3QtPml0ZW0oaSkpLT5nZXRDZXJ0aWZpY2F0ZUl0ZW0oMCk7CisJCQkKKwkJCWlmICh4NTA5U3RyICE9IDApIHsKKworCQkJCS8vIFRoZSBjcnlwdG8gaW50ZXJmYWNlIGNsYXNzZXMgd29yayBVVEYtOAorCQkJCXNhZmVCdWZmZXIgdHJhbnNYNTA5OworCisJCQkJdHJhbnNYNTA5IDw8ICgqbXBfZm9ybWF0dGVyIDw8IHg1MDlTdHIpOworCQkJCXg1MDktPmxvYWRYNTA5QmFzZTY0QmluKHRyYW5zWDUwOS5yYXdDaGFyQnVmZmVyKCksICh1bnNpZ25lZCBpbnQpIHN0cmxlbih0cmFuc1g1MDkucmF3Q2hhckJ1ZmZlcigpKSk7CisJCQkJcmV0ID0geDUwOS0+Y2xvbmVQdWJsaWNLZXkoKTsKKwkJCX0KKworCQkJaWYgKHJldCAhPSBOVUxMKQorCQkJCXJldHVybiByZXQ7CisJCQorCQl9CisJCQlicmVhazsKKworCQljYXNlIChEU0lHS2V5SW5mbzo6S0VZSU5GT19WQUxVRV9EU0EpIDoKKwkJeworCisJCQlYU0VDQ3J5cHRvS2V5RFNBICogZHNhID0gWFNFQ1BsYXRmb3JtVXRpbHM6OmdfY3J5cHRvUHJvdmlkZXItPmtleURTQSgpOworCQkJSmFuaXRvcjxYU0VDQ3J5cHRvS2V5RFNBPiBqX2RzYShkc2EpOworCisJCQlzYWZlQnVmZmVyIHZhbHVlOworCisJCQl2YWx1ZSA8PCAoKm1wX2Zvcm1hdHRlciA8PCAoKERTSUdLZXlJbmZvVmFsdWUgKikgbHN0LT5pdGVtKGkpKS0+Z2V0RFNBUCgpKTsKKwkJCWRzYS0+bG9hZFBCYXNlNjRCaWdOdW1zKHZhbHVlLnJhd0NoYXJCdWZmZXIoKSwgKHVuc2lnbmVkIGludCkgc3RybGVuKHZhbHVlLnJhd0NoYXJCdWZmZXIoKSkpOworCQkJdmFsdWUgPDwgKCptcF9mb3JtYXR0ZXIgPDwgKChEU0lHS2V5SW5mb1ZhbHVlICopIGxzdC0+aXRlbShpKSktPmdldERTQVEoKSk7CisJCQlkc2EtPmxvYWRRQmFzZTY0QmlnTnVtcyh2YWx1ZS5yYXdDaGFyQnVmZmVyKCksICh1bnNpZ25lZCBpbnQpIHN0cmxlbih2YWx1ZS5yYXdDaGFyQnVmZmVyKCkpKTsKKwkJCXZhbHVlIDw8ICgqbXBfZm9ybWF0dGVyIDw8ICgoRFNJR0tleUluZm9WYWx1ZSAqKSBsc3QtPml0ZW0oaSkpLT5nZXREU0FHKCkpOworCQkJZHNhLT5sb2FkR0Jhc2U2NEJpZ051bXModmFsdWUucmF3Q2hhckJ1ZmZlcigpLCAodW5zaWduZWQgaW50KSBzdHJsZW4odmFsdWUucmF3Q2hhckJ1ZmZlcigpKSk7CisJCQl2YWx1ZSA8PCAoKm1wX2Zvcm1hdHRlciA8PCAoKERTSUdLZXlJbmZvVmFsdWUgKikgbHN0LT5pdGVtKGkpKS0+Z2V0RFNBWSgpKTsKKwkJCWRzYS0+bG9hZFlCYXNlNjRCaWdOdW1zKHZhbHVlLnJhd0NoYXJCdWZmZXIoKSwgKHVuc2lnbmVkIGludCkgc3RybGVuKHZhbHVlLnJhd0NoYXJCdWZmZXIoKSkpOworCisJCQlqX2RzYS5yZWxlYXNlKCk7CisJCQlyZXR1cm4gZHNhOworCQl9CisJCQlicmVhazsKKworCQljYXNlIChEU0lHS2V5SW5mbzo6S0VZSU5GT19WQUxVRV9SU0EpIDoKKwkJeworCisJCQlYU0VDQ3J5cHRvS2V5UlNBICogcnNhID0gWFNFQ1BsYXRmb3JtVXRpbHM6OmdfY3J5cHRvUHJvdmlkZXItPmtleVJTQSgpOworCQkJSmFuaXRvcjxYU0VDQ3J5cHRvS2V5UlNBPiBqX3JzYShyc2EpOworCisJCQlzYWZlQnVmZmVyIHZhbHVlOworCisJCQl2YWx1ZSA8PCAoKm1wX2Zvcm1hdHRlciA8PCAoKERTSUdLZXlJbmZvVmFsdWUgKikgbHN0LT5pdGVtKGkpKS0+Z2V0UlNBTW9kdWx1cygpKTsKKwkJCXJzYS0+bG9hZFB1YmxpY01vZHVsdXNCYXNlNjRCaWdOdW1zKHZhbHVlLnJhd0NoYXJCdWZmZXIoKSwgKHVuc2lnbmVkIGludCkgc3RybGVuKHZhbHVlLnJhd0NoYXJCdWZmZXIoKSkpOworCQkJdmFsdWUgPDwgKCptcF9mb3JtYXR0ZXIgPDwgKChEU0lHS2V5SW5mb1ZhbHVlICopIGxzdC0+aXRlbShpKSktPmdldFJTQUV4cG9uZW50KCkpOworCQkJcnNhLT5sb2FkUHVibGljRXhwb25lbnRCYXNlNjRCaWdOdW1zKHZhbHVlLnJhd0NoYXJCdWZmZXIoKSwgKHVuc2lnbmVkIGludCkgc3RybGVuKHZhbHVlLnJhd0NoYXJCdWZmZXIoKSkpOworCisJCQlqX3JzYS5yZWxlYXNlKCk7CisJCQlyZXR1cm4gcnNhOworCisJCX0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgKERTSUdLZXlJbmZvOjpLRVlJTkZPX1ZBTFVFX0VDKSA6CisgICAgICAgIHsKKworICAgICAgICAgICAgWFNFQ0NyeXB0b0tleUVDKiBlYyA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5rZXlFQygpOworICAgICAgICAgICAgSmFuaXRvcjxYU0VDQ3J5cHRvS2V5RUM+IGpfZWMoZWMpOworCisgICAgICAgICAgICBzYWZlQnVmZmVyIHZhbHVlOworCQkJdmFsdWUgPDwgKCptcF9mb3JtYXR0ZXIgPDwgKChEU0lHS2V5SW5mb1ZhbHVlICopIGxzdC0+aXRlbShpKSktPmdldEVDUHVibGljS2V5KCkpOworICAgICAgICAgICAgWFNFQ0F1dG9QdHJDaGFyIGN1cnZlKCgoRFNJR0tleUluZm9WYWx1ZSAqKSBsc3QtPml0ZW0oaSkpLT5nZXRFQ05hbWVkQ3VydmUoKSk7CisgICAgICAgICAgICBpZiAoY3VydmUuZ2V0KCkpIHsKKyAgICAgICAgICAgICAgICBlYy0+bG9hZFB1YmxpY0tleUJhc2U2NChjdXJ2ZS5nZXQoKSwgdmFsdWUucmF3Q2hhckJ1ZmZlcigpLCAodW5zaWduZWQgaW50KSBzdHJsZW4odmFsdWUucmF3Q2hhckJ1ZmZlcigpKSk7CisgICAgICAgICAgICAgICAgal9lYy5yZWxlYXNlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVjOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIChEU0lHS2V5SW5mbzo6S0VZSU5GT19ERVJFTkNPREVEKSA6CisgICAgICAgIHsKKyAgICAgICAgICAgIHNhZmVCdWZmZXIgdmFsdWU7CisJCQl2YWx1ZSA8PCAoKm1wX2Zvcm1hdHRlciA8PCAoKERTSUdLZXlJbmZvREVSRW5jb2RlZCAqKSBsc3QtPml0ZW0oaSkpLT5nZXREYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5rZXlERVIodmFsdWUucmF3Q2hhckJ1ZmZlcigpLCAodW5zaWduZWQgaW50KXN0cmxlbih2YWx1ZS5yYXdDaGFyQnVmZmVyKCkpLCB0cnVlKTsKKyAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKwkJZGVmYXVsdCA6CisJCQlicmVhazsKKworCQl9CisJfQorCisJcmV0dXJuIE5VTEw7CisKK30KKworCitYU0VDS2V5SW5mb1Jlc29sdmVyICogWFNFQ0tleUluZm9SZXNvbHZlckRlZmF1bHQ6OmNsb25lKHZvaWQpIGNvbnN0IHsKKworCXJldHVybiBuZXcgWFNFQ0tleUluZm9SZXNvbHZlckRlZmF1bHQoKTsKKworfQpkaWZmIC0tZ2l0IGEvYy9zcmMvZW5jL1hTRUNLZXlJbmZvUmVzb2x2ZXJEZWZhdWx0LmhwcCBiL2Mvc3JjL2VuYy9YU0VDS2V5SW5mb1Jlc29sdmVyRGVmYXVsdC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDljNDgxMwotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2VuYy9YU0VDS2V5SW5mb1Jlc29sdmVyRGVmYXVsdC5ocHAKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNLZXlJbmZvUmVzb2x2ZXJEZWZhdWx0IDo9IERlZmF1bHQgKHZlcnkgYmFzaWMpIGNsYXNzIGZvciBhcHBsaWNhdGlvbnMKKyAqCQkJCQkJIHRvIG1hcCBLZXlJbmZvIHRvIGtleXMKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSUQkCisgKgorICogJExPRyQKKyAqCisgKi8KKworI2lmbmRlZiBYU0VDS0VZSU5GT1JFU09MVkVSREVGQVVMVF9JTkNMVURFCisjZGVmaW5lIFhTRUNLRVlJTkZPUkVTT0xWRVJERUZBVUxUX0lOQ0xVREUKKworI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNLZXlJbmZvUmVzb2x2ZXIuaHBwPgorCisvKioKKyAqIEBpbmdyb3VwIGludGVyZmFjZXMKKyAqLworLypcQHsqLworCisvKioKKyAqIEBicmllZiBBIGJhc2ljIGNsYXNzIGZvciBtYXBwaW5nIEtleUluZm8gZWxlbWVudHMgdG8gS2V5cy4KKyAqCisgKiBUaGlzIGNsYXNzIGlzIHByb3ZpZGVzIGEgbWV0aG9kIGZvciBhcHBsaWNhdGlvbnMgdG8gZXh0cmFjdAorICoga2V5cyBmcm9tIEtleUluZm8gZWxlbWVudHMgdGhhdCBoYXZlIGEgcHVibGljIGtleSBlbWJlZGRlZC4KKyAqCisgKiBUaGUgY2xhc3MgbWFrZXMgdXNlIG9mIHRoZSBtYWtlS2V5KCkgbWV0aG9kIGF2YWlsYWJsZSBpbiBhbGwKKyAqIGtleUluZm8gZWxlbWVudHMuICAoV2hpY2ggaW4gdHVybiByZWxpZXMgb24gdGhlIGNsb25lKktleQorICogbWV0aG9kcyBhdmFpbGFibGUgZnJvbSB0aGUgRW5jcnlwdGlvbiBwcm92aWRlciAtIHRoZXNlIG1heQorICogbm90IGJlIGF2YWlsYWJsZSwgc28gdGhpcyBjbGFzcyBtYXkgbm90IHdvcmsgd2VsbCBpbiB0aGVzZQorICogY2FzZXMuKQorICoKKyAqIEBub3RlIFRoaXMgY2xhc3MgaXMgPEI+dmVyeTwvQj4gYmFzaWMuICBJdCBkb2VzIG5vdCB2YWxpZGF0ZQorICogdGhlIHRydXN0d29ydGh5bmVzcyBvZiB0aGUga2V5IGluIGFueSB3YXkuICBJdCBzaW1wbHkgcmVhZHMKKyAqIHRoZSBrZXkgZnJvbSB0aGUgZmlyc3QgS2V5SW5mbyBlbGVtZW50IHRoYXQgYWN0dWFsbHkgaG9sZHMgaXQKKyAqIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgKG9yIE5VTEwpIGlmIG5vbmUgaXMgZm91bmQuICBJdCBpcyBtYWlubHkKKyAqIHByb3ZpZGVkIHRvIGFsbG93IGZvciBpbnRlcm9wZXJhYmlsaXR5IHRlc3RpbmcuCisgKgorICovCisKK2NsYXNzIERTSUdfRVhQT1JUIFhTRUNLZXlJbmZvUmVzb2x2ZXJEZWZhdWx0IDogcHVibGljIFhTRUNLZXlJbmZvUmVzb2x2ZXIgeworCitwdWJsaWMgOgorCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisKKwlYU0VDS2V5SW5mb1Jlc29sdmVyRGVmYXVsdCgpOworCXZpcnR1YWwgflhTRUNLZXlJbmZvUmVzb2x2ZXJEZWZhdWx0KCk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgSW50ZXJmYWNlIEZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBQcm92aWRlIGEga2V5IHRvIHRoZSBsaWJyYXJ5CisJICoKKwkgKiBSZWFkcyB0aHJvdWdoIHRoZSBLZXlJbmZvIGVsZW1lbnRzIHVudGlsIGl0IGZpbmRzIGFuIGVsZW1lbnQKKwkgKiB3aXRoIGFuIGVtYmVkZGVkIEtleS4gIElmIG5vbmUgaXMgZm91bmQsIHJldHVybnMgTlVMTC4KKwkgKgorCSAqIEBwYXJhbSBsc3QgVGhlIGxpc3Qgb2YgS2V5SW5mbyBlbGVtZW50cyBmcm9tIHRoZSBzaWduYXR1cmUKKwkgKiBAcmV0dXJucyBFaXRoZXIgdGhlIGFwcHJvcHJpYXRlIGtleSBvciBOVUxMIGlmIG5vbmUgY2FuIGJlIGZvdW5kCisJICogQHNlZSBYU0VDS2V5SW5mb1Jlc29sdmVyOjpyZXNvbHZlS2V5KCkKKwkgKi8KKworCXZpcnR1YWwgWFNFQ0NyeXB0b0tleSAqIHJlc29sdmVLZXkoRFNJR0tleUluZm9MaXN0ICogbHN0KTsKKworCS8qKgorCSAqIFxicmllZiBDbG9uZSB0aGUgcmVzb2x2ZXIgdG8gYmUgaW5zdGFsbGVkIGluIGEgbmV3IG9iamVjdC4KKwkgKgorCSAqIEBzZWUgWFNFQ0tleUluZm9SZXNvbHZlcjo6Y2xvbmUoKQorCSAqLworCisJdmlydHVhbCBYU0VDS2V5SW5mb1Jlc29sdmVyICogY2xvbmUodm9pZCkgY29uc3Q7CisKKwkvL0B9CisKK3ByaXZhdGU6CisKKwlYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlcgkJKiBtcF9mb3JtYXR0ZXI7CisKKwkvKlxAfSovCit9OworCisKKyNlbmRpZiAvKiBYU0VDS0VZSU5GT1JFU09MVkVSREVGQVVMVF9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy9mcmFtZXdvcmsvWFNFQ0FsZ29yaXRobUhhbmRsZXIuaHBwIGIvYy9zcmMvZnJhbWV3b3JrL1hTRUNBbGdvcml0aG1IYW5kbGVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTk5ZWY3Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZnJhbWV3b3JrL1hTRUNBbGdvcml0aG1IYW5kbGVyLmhwcApAQCAtMCwwICsxLDMzMCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAzLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ0FsZ29yaXRobUhhbmRsZXIgOj0gSW50ZXJmYWNlIGNsYXNzIHRvIGRlZmluZSBoYW5kbGluZyBvZgorICoJCQkJCQkgICBlbmNyeXB0aW9uIGFuZCBzaWduYXR1cmUgYWxnb3JpdGhtcworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYU0VDQUxHSEFORExFUl9JTkNMVURFCisjZGVmaW5lIFhTRUNBTEdIQU5ETEVSX0lOQ0xVREUKKworLy8gWFNFQyBJbmNsdWRlcworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorCitjbGFzcyBUWEZNQ2hhaW47CitjbGFzcyBYRU5DRW5jcnlwdGlvbk1ldGhvZDsKK2NsYXNzIFhTRUNDcnlwdG9LZXk7CitjbGFzcyBzYWZlQnVmZmVyOworY2xhc3MgWFNFQ0JpblRYRk1JbnB1dFN0cmVhbTsKKworWFNFQ19ERUNMQVJFX1hFUkNFU19DTEFTUyhET01Eb2N1bWVudCk7CisKKy8vIFhlcmNlcworCisvKioKKyAqIEBpbmdyb3VwIHhlbmMKKyAqXEB7Ki8KKworCisKKy8qKgorICogQGJyaWVmIEludGVyZmFjZSBjbGFzcyB0byBwcm92aWRlIGhhbmRsZXJzIGZvciBwcm9jZXNzaW5nIGRpZmZlcmVudAorICogZW5jcnlwdGlvbiwgc2lnbmF0dXJlIGFuZCBoYXNoaW5nIHR5cGVzLgorICoKKyAqIFRoZSBYRU5DQ2lwaGVyIGNsYXNzIGFsbG93cyB1c2VycyBhbmQgY2FsbGVycyB0byByZWdpc3RlciBhbGdvcml0aG0KKyAqIGhhbmRsZXJzIGZvciBkaWZmZXJlbnQgVHlwZSBVUklzLCBhcyB1c2VkIGluIHRoZSB2YXJpb3VzIFhNTCBTaWduYXR1cmUKKyAqIG9yIEVuY3J5cHRpb24gZWxlbWVudHMuCisgKgorICogRGVmYXVsdCBoYW5kbGVycyBhcmUgcHJvdmlkZWQgYnkgdGhlCisgKiBsaWJyYXJ5LCBhbmQgYXJlIHVzZWQgdG8gcHJvY2VzcyBhbGwgYWxnb3JpdGhtcyBkZWZpbmVkIGFzIG1hbmRhdG9yeQorICogKGFuZCBtYW55IG9wdGlvbmFsKSB3aXRoaW4gdGhlIHN0YW5kYXJkLgorICoKKyAqIFVzZXJzIGNhbiBleHRlbmQgdGhpcyBjbGFzcyB0byBwcm92aWRlIGN1c3RvbSBhbGdvcml0aG0gaGFuZGxlcnMKKyAqIGZvciB0aGVpciBvd24gY2xhc3Nlcy4KKyAqCisgKiBAbm90ZSBUaGUgbGlicmFyeSB3aWxsIHVzZSBhIHNpbmdsZSBjbG9uZSBvZiBhbnkgcHJvdmlkZWQgb2JqZWN0IGZvcgorICogYSBnaXZlbiBhbGdvcml0aG0uICBTbyBhbGwgaW1wbGVtZW50YXRpb24gY2xhc3NlcyA8Yj5tdXN0PC9iPiBiZSAKKyAqIHRocmVhZCBzYWZlIQorICovCisKK2NsYXNzIFhTRUNBbGdvcml0aG1IYW5kbGVyIHsKKworcHVibGljOgorCQorCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCQorCXZpcnR1YWwgflhTRUNBbGdvcml0aG1IYW5kbGVyKCkge307CisKKwkvL0B9CisKKwkvKiogQG5hbWUgRW5jcnlwdGlvbiBNZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIEVuY3J5cHQgYW4gaW5wdXQgVHJhbnNmb3JtIGNoYWluIHRvIGEgc2FmZUJ1ZmZlci4KKwkgKgorCSAqIFRoaXMgbWV0aG9kIHRha2VzIGEgVFhGTUNoYWluIHRoYXQgd2lsbCBwcm92aWRlIHRoZSBwbGFpbgorCSAqIHRleHQgZGF0YSwgYW5kIHBsYWNlcyB0aGUgZW5jcnlwdGVkIGFuZCBiYXNlNjQgZW5jb2RlZCBvdXRwdXQgCisJICogaW4gYSBzYWZlQnVmZmVyLgorCSAqCisJICogVGhlIEVuY3J5cHRpb25NZXRob2Qgb2JqZWN0IGlzIHByb3ZpZGVkIHNvIHRoYXQgYW55IGFsZ29yaXRobQorCSAqIHNwZWNpZmljIHBhcmFtZXRlcnMgY2FuIGJlIGVtYmVkZGVkIGJ5IHRoZSBwcm9jZXNzb3IuICBEZWZhdWx0CisJICogcGFyYW1ldGVycyBjYW4gYmUgc2V0IGRpcmVjdGx5IChPQUVQYXJhbXMgYW5kIEtleVNpemUpLiAgQW55dGhpbmcKKwkgKiBhZGRpdGlvbmFsIHdpbGwgbmVlZCB0byBiZSBzZXQgd2l0aGluIHRoZSBET00gZGlyZWN0bHkuCisJICoKKwkgKiBAcGFyYW0gcGxhaW5UZXh0IENoYWluIHRoYXQgd2lsbCBwcm92aWRlIHRoZSBwbGFpbiBieXRlcy4gIE93bmVyc2hpcAorCSAqIHJlbWFpbnMgd2l0aCB0aGUgY2FsbGVyIC0gZG8gbm90IGRlbGV0ZS4KKwkgKiBAcGFyYW0gZW5jcnlwdGlvbk1ldGhvZCBJbmZvcm1hdGlvbiBhYm91dCB0aGUgYWxnb3JpdGhtIHRvIHVzZS4KKwkgKiBDYW4gYWxzbyBiZSB1c2VkIHRvIHNldCB0aGUgcmVxdWlyZWQgZW5jcnlwdGlvbiBwYXJhbWV0ZXJzCisJICogQHBhcmFtIGtleSBUaGUga2V5IHRoYXQgaGFzIGJlZW4gcHJvdmlkZWQgYnkgdGhlIGNhbGxpbmcgCisJICogYXBwbGljYXRpb24gdG8gcGVyZm9ybSB0aGUgZW5jcnlwdGlvbi4KKwkgKgorICAgICAqIEBwYXJhbSBkb2MgRG9jdW1lbnQgaW4gd2hpY2ggdG8gb3BlcmF0ZQorICAgICAqIEBwYXJhbSByZXN1bHQgU2FmZUJ1ZmZlciBvYmplY3QgdG8gcGxhY2UgcmVzdWx0IGludG8KKwkgKiBAbm90ZSBUaGlzIGlzIG5vdCBxdWl0ZSB0aGUgc3ltbWV0cmljIG9wcG9zaXRlIG9mIGRlY3J5cHRUb1NhZmVCdWZmZXIKKwkgKiBiZWNhdXNlIG9mIHRoZSB3YXkgdGhlIGxpYnJhcnkgdXNlcyB0cmFuc2Zvcm1lcnMuICBJdCBpcyBleHBlY3RlZAorCSAqIHRoYXQgdGhpcyBtZXRob2Qgd2lsbCBjcmVhdGUgYSBzYWZlQnVmZmVyIHdpdGggPGI+YmFzZTY0PC9iPiBlbmNvZGVkCisJICogZGF0YS4gIChJdCdzIGVhc2llciB0byB0aHJvdyBhIFRYRk1CYXNlNjQgdHhmbWVyIG9uIHRoZSBlbmQgb2YgdGhlCisJICogY2hhaW4gdGhhbiB0byBkbyB0aGUgZW5jcnlwdGlvbiBhbmQgdGhlbiBzZXBhcmF0ZWx5IGJhc2U2NCBlbmNvZGUuKQorCSAqLworCisJdmlydHVhbCBib29sIGVuY3J5cHRUb1NhZmVCdWZmZXIoCisJCVRYRk1DaGFpbiAqIHBsYWluVGV4dCwKKwkJWEVOQ0VuY3J5cHRpb25NZXRob2QgKiBlbmNyeXB0aW9uTWV0aG9kLAorCQlYU0VDQ3J5cHRvS2V5ICoga2V5LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBkb2MsCisJCXNhZmVCdWZmZXIgJiByZXN1bHQKKwkpID0gMDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBEZWNyeXB0aW9uIE1ldGhvZHMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgRGVjcnlwdCBhbiBpbnB1dCBUcmFuc2Zvcm0gY2hhaW4gdG8gYSBzYWZlQnVmZmVyLgorCSAqCisJICogVGhpcyBtZXRob2QgdGFrZXMgYSBUWEZNQ2hhaW4gdGhhdCB3aWxsIHByb3ZpZGUgdGhlIGNpcGhlcgorCSAqIHRleHQgZGF0YSwgYW5kIHBsYWNlcyB0aGUgb3V0cHV0IGluIGEgc2FmZUJ1ZmZlci4KKwkgKgorCSAqIFRoZSBFbmNyeXB0aW9uTWV0aG9kIG9iamVjdCBpcyBwcm92aWRlZCBzbyB0aGF0IGFueSBhbGdvcml0aG0KKwkgKiBzcGVjaWZpYyBwYXJhbWV0ZXJzIGNhbiBiZSBmb3VuZCBieSB0aGUgcHJvY2Vzc29yLiAgSXQgYWxzbworCSAqIGFsbG93cyBhcHBsaWNhdGlvbnMgdG8gZW1iZWQgbXVsdGlwbGUgYWxnb3JpdGhtcyBpbiBhIHNpbmdsZQorCSAqIHByb2Nlc3Npbmcgb2JqZWN0LiAgVGhlIFR5cGUgdmFsdWUgY2FuIHRoZW4gYmUgcmVhZCBmcm9tIHRoZQorCSAqIEVuY3J5cHRpb25NZXRob2Qgb2JqZWN0IHRvIGRldGVybWluZSB3aGF0IHRvIGRvLgorCSAqCisJICogQHBhcmFtIGNpcGhlclRleHQgQ2hhaW4gdGhhdCB3aWxsIHByb3ZpZGUgdGhlIGNpcGhlclRleHQuCisJICogT3duZXJzaGlwIHJlbWFpbnMgd2l0aCB0aGUgY2FsbGVyIC0gZG8gbm90IGRlbGV0ZS4KKwkgKiBAcGFyYW0gZW5jcnlwdGlvbk1ldGhvZCBJbmZvcm1hdGlvbiBhYm91dCB0aGUgYWxnb3JpdGhtIHRvIHVzZQorCSAqIEBwYXJhbSBrZXkgVGhlIGtleSB0aGF0IGhhcyBiZWVuIGRldGVybWluZWQgdmlhIGEgcmVzb2x2ZXIgb3IKKwkgKiB0aGF0IGhhcyBiZWVuIHByb3ZpZGVkIGJ5IHRoZSBjYWxsaW5nIGFwcGxpY2F0aW9uLgorICAgICAqIEBwYXJhbSBkb2MgRG9jdW1lbnQgaW4gd2hpY2ggdG8gb3BlcmF0ZQorICAgICAqIEBwYXJhbSByZXN1bHQgU2FmZUJ1ZmZlciBvYmplY3QgdG8gcGxhY2UgcmVzdWx0IGludG8KKwkgKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIHBsYWluIGJ5dGVzIHBsYWNlZCBpbiB0aGUgc2FmZUJ1ZmZlcgorCSAqLworCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgZGVjcnlwdFRvU2FmZUJ1ZmZlcigKKwkJVFhGTUNoYWluICogY2lwaGVyVGV4dCwKKwkJWEVOQ0VuY3J5cHRpb25NZXRob2QgKiBlbmNyeXB0aW9uTWV0aG9kLAorCQlYU0VDQ3J5cHRvS2V5ICoga2V5LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBkb2MsCisJCXNhZmVCdWZmZXIgJiByZXN1bHQKKwkpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBBcHBlbmQgYW4gYXBwcm9wcmlhdGUgZGVjcnlwdCBUWEZNZXIgdG8gYSBjaXBoZXIgdHhmbSBjaGFpbi4KKwkgKgorCSAqIFRoaXMgbWV0aG9kIHRha2VzIGEgVFhGTUNoYWluIHRoYXQgd2lsbCBwcm92aWRlIHRoZSBjaXBoZXIKKwkgKiB0ZXh0IGRhdGEsIGFuZCBhcHBlbmRzIHRoZSBhcHByb3ByaWF0ZSBjaXBoZXIgdHJhbnNmb3JtZXIgdG8KKwkgKiBkZWNyeXB0IHRoZSBvdXRwdXQuCisJICoKKwkgKiBUaGUgRW5jcnlwdGlvbk1ldGhvZCBvYmplY3QgaXMgcHJvdmlkZWQgc28gdGhhdCBhbnkgYWxnb3JpdGhtCisJICogc3BlY2lmaWMgcGFyYW1ldGVycyBjYW4gYmUgZm91bmQgYnkgdGhlIHByb2Nlc3Nvci4gIEl0IGFsc28KKwkgKiBhbGxvd3MgYXBwbGljYXRpb25zIHRvIGVtYmVkIG11bHRpcGxlIGFsZ29yaXRobXMgaW4gYSBzaW5nbGUKKwkgKiBwcm9jZXNzaW5nIG9iamVjdC4gIFRoZSBUeXBlIHZhbHVlIGNhbiB0aGVuIGJlIHJlYWQgZnJvbSB0aGUKKwkgKiBFbmNyeXB0aW9uTWV0aG9kIG9iamVjdCB0byBkZXRlcm1pbmUgd2hhdCB0byBkby4KKwkgKgorCSAqIEBwYXJhbSBjaXBoZXJUZXh0IENoYWluIHRoYXQgd2lsbCBwcm92aWRlIHRoZSBjaXBoZXJUZXh0LgorCSAqIE93bmVyc2hpcCByZW1haW5zIHdpdGggdGhlIGNhbGxlciAtIGRvIG5vdCBkZWxldGUuCisJICogQHBhcmFtIGVuY3J5cHRpb25NZXRob2QgSW5mb3JtYXRpb24gYWJvdXQgdGhlIGFsZ29yaXRobSB0byB1c2UKKwkgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdGhhdCBoYXMgYmVlbiBkZXRlcm1pbmVkIHZpYSBhIHJlc29sdmVyIG9yCisJICogdGhhdCBoYXMgYmVlbiBwcm92aWRlZCBieSB0aGUgY2FsbGluZyBhcHBsaWNhdGlvbi4KKyAgICAgKiBAcGFyYW0gZG9jIERvY3VtZW50IGZyb20gd2hpY2ggdG8gY3JlYXRlIFhNTCBOb2RlcworCSAqIEByZXR1cm5zIFRoZSByZXN1bHRpbmcgQmluSW5wdXRTdHJlYW0KKwkgKi8KKworCXZpcnR1YWwgYm9vbCBhcHBlbmREZWNyeXB0Q2lwaGVyVFhGTSgKKwkJVFhGTUNoYWluICogY2lwaGVyVGV4dCwKKwkJWEVOQ0VuY3J5cHRpb25NZXRob2QgKiBlbmNyeXB0aW9uTWV0aG9kLAorCQlYU0VDQ3J5cHRvS2V5ICoga2V5LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBkb2MKKwkpID0gMDsKKworCisJLy9AfQorCisJLyoqIEBuYW1lIFNpZ25pbmdNZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFNpZ24gYW4gaW5wdXQgVFhGTUNoYWluLgorCSAqCisJICogVGhpcyBtZXRob2QgdGFrZXMgYSBUWEZNQ2hhaW4gdGhhdCB3aWxsIHByb3ZpZGUgdGhlIHBsYWluCisJICogdGV4dCBkYXRhLCBhbmQgcGxhY2VzIGEgKG51bGwgdGVybWluYXRlZCkgYmFzZTY0IGVuY29kZWQgCisJICogaGFzaCBpbnRvIGEgcmVzdWx0IHNhZmVCdWZmZXIuCisJICoKKwkgKiBVbmxpa2UgdGhlIGVuY3J5cHRpb24gbWV0aG9kcywgdGhlIFVSSSBtdXN0IGFsc28gYmUgcGFzc2VkIGluLAorCSAqIGFzIGEgc2luZ2xlIEFsZ29yaXRobUhhbmRsZXIgbWlnaHQgYmUgdXNlZCB0byBzdXBwb3J0IG11bHRpcGxlCisJICogZGlmZmVyZW50IHNpZ25pbmcgYWxnb3JpdGhtcywgYnV0IHRoZSBvdmVyaGVhZCBvZiBwYXNzaW5nIGluIHRoZQorCSAqIGVudGlyZSBTaWduZWRJbmZvIGlzIG5vdCByZXF1aXJlZC4KKwkgKgorCSAqIEBwYXJhbSBwbGFpblRleHQgQ2hhaW4gdGhhdCB3aWxsIHByb3ZpZGUgdGhlIHBsYWluIGJ5dGVzLiAgT3duZXJzaGlwCisJICogcmVtYWlucyB3aXRoIHRoZSBjYWxsZXIgLSBkbyBub3QgZGVsZXRlLgorCSAqIEBwYXJhbSBVUkkgQWxnb3JpdGhtIFVSSSB0byB1c2UgZm9yIHRoZSBzaWduaW5nIG9wZXJhdGlvbi4KKwkgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdGhhdCBoYXMgYmVlbiBwcm92aWRlZCBieSB0aGUgY2FsbGluZyAKKwkgKiBhcHBsaWNhdGlvbiB0byBwZXJmb3JtIHRoZSBzaWduYXR1cmUuCisJICogQHBhcmFtIG91dHB1dExlbmd0aCBNYXggbGVuZ3RoIG9mIGFuIEhNQUMgc2lnbmF0dXJlIHRvIHVzZSBpbiBvdXRwdXQKKyAgICAgKiBAcGFyYW0gcmVzdWx0IFNhZmVCdWZmZXIgb2JqZWN0IHRvIHBsYWNlIHJlc3VsdCBpbnRvCisJICogQHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyBwbGFjZWQgaW4gdGhlIG91dHB1dCBzYWZlQnVmZmVyCisJICovCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCBzaWduVG9TYWZlQnVmZmVyKAorCQlUWEZNQ2hhaW4gKiBpbnB1dEJ5dGVzLAorCQljb25zdCBYTUxDaCAqIFVSSSwKKwkJWFNFQ0NyeXB0b0tleSAqIGtleSwKKwkJdW5zaWduZWQgaW50IG91dHB1dExlbmd0aCwKKwkJc2FmZUJ1ZmZlciAmIHJlc3VsdAorCSkgPSAwOworCisJLyoqCisJICogXGJyaWVmIFZhbGlkYXRlIGEgc2lnbmF0dXJlIHVzaW5nIGFuIGlucHV0IFRYRk1DaGFpbgorCSAqCisJICogVXNpbmcgdGhlIGlucHV0IHBsYWluIHRleHQgYnl0ZXMgKGluIHRoZSBmb3JtIG9mIGEgdHJhbnNmb3JtIGNoYWluKQorCSAqIHZhbGlkYXRlIHRoZSBhc3NvY2lhdGVkIGJhc2U2NCBlbmNvZGVkIHNpZ25hdHVyZSB1c2luZyB0aGUgc3VwcGxpZWQKKwkgKiBrZXkuCisJICoKKwkgKiBUaGUgVVJJIHZhbHVlIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBhbGdvcml0aG0gdG8gYmUgY2FsbGVkIHVwb24gdG8KKwkgKiB2YWxpZGF0ZSB0aGUgc2lnbmF0dXJlLgorCSAqCisJICogQHBhcmFtIHBsYWluVGV4dCBDaGFpbiB0aGF0IHdpbGwgcHJvdmlkZSB0aGUgcGxhaW4gYnl0ZXMuICBPd25lcnNoaXAKKwkgKiByZW1haW5zIHdpdGggdGhlIGNhbGxlciAtIGRvIG5vdCBkZWxldGUuCisJICogQHBhcmFtIFVSSSBBbGdvcml0aG0gVVJJIHRvIHVzZSBmb3IgdGhlIHNpZ25pbmcgb3BlcmF0aW9uLgorCSAqIEBwYXJhbSBzaWcgQmFzZTY0IGVuY29kZWQgc2lnbmF0dXJlIHZhbHVlCisJICogQHBhcmFtIGtleSBUaGUga2V5IHRoYXQgaGFzIGJlZW4gcHJvdmlkZWQgYnkgdGhlIGNhbGxpbmcgCisJICogYXBwbGljYXRpb24gdG8gcGVyZm9ybSB0aGUgc2lnbmF0dXJlLgorCSAqIEByZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCB2YWxpZGF0ZSwgZmFsc2Ugb3RoZXJ3aXNlCisJICovCisJIAorCXZpcnR1YWwgYm9vbCB2ZXJpZnlCYXNlNjRTaWduYXR1cmUoCisJCVRYRk1DaGFpbiAqIGlucHV0Qnl0ZXMsCisJCWNvbnN0IFhNTENoICogVVJJLAorCQljb25zdCBjaGFyICogc2lnLAorCQl1bnNpZ25lZCBpbnQgb3V0cHV0TGVuZ3RoLAorCQlYU0VDQ3J5cHRvS2V5ICoga2V5CisJKSA9IDA7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgSGFzaCBhcHBlbmRpbmcgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgQXBwZW5kIGEgc2lnbmF0dXJlIGhhc2ggdG8gYSBUWEZNIENoYWluIGJhc2VkIG9uIFVSSQorCSAqCisJICogR2l2ZW4gYSBVUkkgc3RyaW5nIGNyZWF0ZSB0aGUgYXBwcm9wcmlhdGUgaGFzaCBUWEZNLiAgTk9URSB0aGUKKwkgKiBpbnB1dCBVUkkgc2hvdWxkIGJlIGEgU0lHTkFUVVJFIFVSSSAtIGUuZy4gI2hhc2gtc2hhMQorCSAqCisJICogQHBhcmFtIGlucHV0Qnl0ZXMgdGhlIElucHV0IFRYRk1DaGFpbiB0byBhcHBlbmQgdGhlIGhhc2ggdG8KKwkgKiBAcGFyYW0gdXJpIFVSSSBzdHJpbmcgdG8gbWF0Y2ggaGFzaCBhZ2FpbnN0CisJICogQHBhcmFtIGtleSBUaGUga2V5IGZvciB0aGlzIHNpZ25hdHVyZSAoaW4gY2FzZSBvZiBhbiBITUFDIGhhc2gpCisJICogQHJldHVybnMgdHJ1ZSBpZiBhIG1hdGNoIHdhcyBmb3VuZCBhbmQgYSBoYXNoIHdhcyBhcHBlbmRlZAorCSAqLworCisJdmlydHVhbCBib29sIGFwcGVuZFNpZ25hdHVyZUhhc2hUeGZtKAorCQlUWEZNQ2hhaW4gKiBpbnB1dEJ5dGVzLAorCQljb25zdCBYTUxDaCAqIFVSSSwKKwkJWFNFQ0NyeXB0b0tleSAqIGtleQorCSkgPSAwOworCisJLyoqCisJICogXGJyaWVmIEFwcGVuZCBhIGhhc2ggdG8gYSBUWEZNIENoYWluIGJhc2VkIG9uIFVSSQorCSAqCisJICogR2l2ZW4gYSBVUkkgc3RyaW5nIGNyZWF0ZSB0aGUgYXBwcm9wcmlhdGUgaGFzaCBUWEZNLiAgTk9URSB0aGUKKwkgKiBpbnB1dCBVUkkgc2hvdWxkIGJlIGEgInN0cmlnaHQiIChpLmUuIG5vbi1zaWduYXR1cmUpIGhhc2gKKwkgKiBhbGdvcml0aG0gVVJJIC0gZS5nLiAjc2hhMQorCSAqCisJICogQHBhcmFtIGlucHV0Qnl0ZXMgdGhlIElucHV0IFRYRk1DaGFpbiB0byBhcHBlbmQgdGhlIGhhc2ggdG8KKwkgKiBAcGFyYW0gdXJpIFVSSSBzdHJpbmcgdG8gbWF0Y2ggaGFzaCBhZ2FpbnN0CisJICogQHJldHVybnMgdHJ1ZSBpZiBhIG1hdGNoIHdhcyBmb3VuZCBhbmQgYSBoYXNoIHdhcyBhcHBlbmRlZAorCSAqLworCisJdmlydHVhbCBib29sIGFwcGVuZEhhc2hUeGZtKAorCQlUWEZNQ2hhaW4gKiBpbnB1dEJ5dGVzLAorCQljb25zdCBYTUxDaCAqIFVSSQorCSkgPSAwOworCisJLy9AfQorCisJCisJLyoqIEBuYW1lIEtleSBoYW5kbGluZyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBDcmVhdGUgYSBrZXkgdGhhdCB3aWxsIHN1cHBvcnQgYSBnaXZlbiBVUkkKKwkgKgorCSAqIEdpdmVuIGEgVVJJIHN0cmluZyBhbmQgYSByYXcgYml0IHN0cmluZywgY3JlYXRlIHRoZSBhc3NvY2lhdGVkIGtleQorCSAqCisJICogQHBhcmFtIHVyaSBVUkkgc3RyaW5nIHRvIG1hdGNoIGtleSB0bworCSAqIEBwYXJhbSBrZXlCdWZmZXIgUmF3IGJpdHMgdG8gc2V0IGluIHRoZSBrZXkKKwkgKiBAcGFyYW0ga2V5TGVuIE51bWJlciBvZiBieXRlcyBpbiB0aGUga2V5CisJICovCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXkgKiBjcmVhdGVLZXlGb3JVUkkoCisJCWNvbnN0IFhNTENoICogdXJpLAorCQljb25zdCB1bnNpZ25lZCBjaGFyICoga2V5QnVmZmVyLAorCQl1bnNpZ25lZCBpbnQga2V5TGVuCisJKSA9IDA7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgTWlzY2VsbGFuZW91cyBGdW5jdGlvbnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBoYW5kbGVyCisJICoKKwkgKiBQcm92aWRlcyBhIG1lYW5zIGZvciB0aGUgbGlicmFyeSB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2UKKwkgKiBvZiB0aGUgb2JqZWN0IHdpdGhvdXQga25vd2luZyBpdHMgdHlwZQorCSAqLworCisJdmlydHVhbCBYU0VDQWxnb3JpdGhtSGFuZGxlciAqIGNsb25lKHZvaWQpIGNvbnN0ID0gMDsKKworCS8vQH0KKworfTsKKworLypcQH0qLworCisjZW5kaWYgLyogWFNFQ0FMR0hBTkRMRVJfSU5DTFVERSovCisKZGlmZiAtLWdpdCBhL2Mvc3JjL2ZyYW1ld29yay9YU0VDQWxnb3JpdGhtTWFwcGVyLmNwcCBiL2Mvc3JjL2ZyYW1ld29yay9YU0VDQWxnb3JpdGhtTWFwcGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjUzYzE3Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZnJhbWV3b3JrL1hTRUNBbGdvcml0aG1NYXBwZXIuY3BwCkBAIC0wLDAgKzEsMTkwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDMtMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYU0VDQWxnb3JpdGhtTWFwcGVyIDo9IFByb3ZpZGVzIGEgdGFibGUgb2YgQWxnb3JpdGhtSGFuZGxlcnMKKyAqCQkJCQkJICBNYXBwZWQgYnkgVHlwZSBVUkkKKyAqCisgKiAkSWQkCisgKgorICovCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDQWxnb3JpdGhtSGFuZGxlci5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0FsZ29yaXRobU1hcHBlci5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisKKy8vIFhlcmNlcworCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFN0cmluZy5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFVuaURlZnMuaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworLy8gRGVmYXVsdCBzdHJpbmdzCisKK2NvbnN0IFhNTENoIFhTRUNBbGdvcml0aG1NYXBwZXI6OnNfZGVmYXVsdEVuY3J5cHRpb25NYXBwaW5nIFtdID0geworCWNoTGF0aW5fRCwKKwljaExhdGluX2UsCisJY2hMYXRpbl9mLAorCWNoTGF0aW5fYSwKKwljaExhdGluX3UsCisJY2hMYXRpbl9sLAorCWNoTGF0aW5fdCwKKwljaExhdGluX0UsCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fYywKKwljaExhdGluX3IsCisJY2hMYXRpbl95LAorCWNoTGF0aW5fcCwKKwljaExhdGluX3QsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fbywKKwljaExhdGluX24sCisJY2hOdWxsCit9OworCisKKworWFNFQ0FsZ29yaXRobU1hcHBlcjo6WFNFQ0FsZ29yaXRobU1hcHBlcih2b2lkKSB7CisKK30KKworCitYU0VDQWxnb3JpdGhtTWFwcGVyOjp+WFNFQ0FsZ29yaXRobU1hcHBlcigpIHsKKworCU1hcHBlckVudHJ5VmVjdG9yVHlwZTo6aXRlcmF0b3IgaXQgPSBtX21hcHBpbmcuYmVnaW4oKTsKKworCXdoaWxlIChpdCAhPSBtX21hcHBpbmcuZW5kKCkpIHsKKwkJCisJCVhTRUNfUkVMRUFTRV9YTUxDSCgoKCppdCktPm1wX3VyaSkpOworCQlkZWxldGUgKCppdCktPm1wX2hhbmRsZXI7CisJCWRlbGV0ZSAoKml0KTsKKworCQlpdCsrOworCisJfQorCisJbV9tYXBwaW5nLmNsZWFyKCk7CisKKwlYTUxDaCogcHRyOworCWZvciAoV2hpdGVsaXN0VmVjdG9yVHlwZTo6Y29uc3RfaXRlcmF0b3IgaSA9IG1fd2hpdGVsaXN0LmJlZ2luKCk7IGkgIT0gbV93aGl0ZWxpc3QuZW5kKCk7ICsraSkgeworCSAgICBwdHIgPSAqaTsKKwkgICAgWFNFQ19SRUxFQVNFX1hNTENIKHB0cik7CisJfQorCW1fd2hpdGVsaXN0LmNsZWFyKCk7CisKKyAgICBmb3IgKFdoaXRlbGlzdFZlY3RvclR5cGU6OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX2JsYWNrbGlzdC5iZWdpbigpOyBpICE9IG1fYmxhY2tsaXN0LmVuZCgpOyArK2kpIHsKKyAgICAgICAgcHRyID0gKmk7CisgICAgICAgIFhTRUNfUkVMRUFTRV9YTUxDSChwdHIpOworICAgIH0KKyAgICBtX2JsYWNrbGlzdC5jbGVhcigpOworfQorCitYU0VDQWxnb3JpdGhtTWFwcGVyOjpNYXBwZXJFbnRyeSAqIFhTRUNBbGdvcml0aG1NYXBwZXI6OmZpbmRFbnRyeShjb25zdCBYTUxDaCAqIFVSSSkgY29uc3QgeworCisJTWFwcGVyRW50cnlWZWN0b3JUeXBlOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fbWFwcGluZy5iZWdpbigpOworCisJd2hpbGUgKGl0ICE9IG1fbWFwcGluZy5lbmQoKSkgeworCQkKKwkJaWYgKHN0ckVxdWFscygoKml0KS0+bXBfdXJpLCBVUkkpKSB7CisJCQlyZXR1cm4gKCppdCk7CisJCX0KKworCQlpdCsrOworCisJfQorCisJcmV0dXJuIE5VTEw7CisKK30KKworCitYU0VDQWxnb3JpdGhtSGFuZGxlciAqIFhTRUNBbGdvcml0aG1NYXBwZXI6Om1hcFVSSVRvSGFuZGxlcihjb25zdCBYTUxDaCAqIFVSSSkgY29uc3QgeworCisgICAgYm9vbCBhbGxvd2VkID0gdHJ1ZTsKKyAgICBpZiAoIW1fd2hpdGVsaXN0LmVtcHR5KCkpIHsKKyAgICAgICAgYWxsb3dlZCA9IGZhbHNlOworICAgICAgICBmb3IgKFdoaXRlbGlzdFZlY3RvclR5cGU6OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX3doaXRlbGlzdC5iZWdpbigpOyAhYWxsb3dlZCAmJiBpICE9IG1fd2hpdGVsaXN0LmVuZCgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChYTUxTdHJpbmc6OmVxdWFscyhVUkksICppKSkKKyAgICAgICAgICAgICAgICBhbGxvd2VkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChhbGxvd2VkICYmICFtX2JsYWNrbGlzdC5lbXB0eSgpKSB7CisgICAgICAgIGZvciAoV2hpdGVsaXN0VmVjdG9yVHlwZTo6Y29uc3RfaXRlcmF0b3IgaSA9IG1fYmxhY2tsaXN0LmJlZ2luKCk7IGFsbG93ZWQgJiYgaSAhPSBtX2JsYWNrbGlzdC5lbmQoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoWE1MU3RyaW5nOjplcXVhbHMoVVJJLCAqaSkpCisgICAgICAgICAgICAgICAgYWxsb3dlZCA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFhbGxvd2VkKSB7CisgICAgICAgIHNhZmVCdWZmZXIgb3V0cHV0OworICAgICAgICBvdXRwdXQuc2JUcmFuc2NvZGVJbigiWFNFQ0FsZ29yaXRobU1hcHBlcjo6bWFwVVJJVG9IYW5kbGVyIC0gVVJJICIpOworICAgICAgICBvdXRwdXQuc2JYTUxDaENhdChVUkkpOworICAgICAgICBvdXRwdXQuc2JYTUxDaENhdCgiIGRpc2FsbG93ZWQgYnkgd2hpdGVsaXN0L2JsYWNrbGlzdCBwb2xpY3kiKTsKKyAgICAgICAgdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpBbGdvcml0aG1NYXBwZXJFcnJvciwKKyAgICAgICAgICAgIG91dHB1dC5yYXdYTUxDaEJ1ZmZlcigpKTsKKyAgICB9CisKKwlNYXBwZXJFbnRyeSAqIGVudHJ5ID0gZmluZEVudHJ5KFVSSSk7CisKKwlpZiAoZW50cnkgPT0gTlVMTCkgeworCQlzYWZlQnVmZmVyIG91dHB1dDsKKwkJb3V0cHV0LnNiVHJhbnNjb2RlSW4oIlhTRUNBbGdvcml0aG1NYXBwZXI6Om1hcFVSSVRvSGFuZGxlciAtIFVSSSAiKTsKKwkJb3V0cHV0LnNiWE1MQ2hDYXQoVVJJKTsKKwkJb3V0cHV0LnNiWE1MQ2hDYXQoIiBub3QgZm91bmQiKTsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpBbGdvcml0aG1NYXBwZXJFcnJvciwKKwkJCW91dHB1dC5yYXdYTUxDaEJ1ZmZlcigpKTsKKwl9CisKKwlyZXR1cm4gZW50cnktPm1wX2hhbmRsZXI7Cit9CisKK3ZvaWQgWFNFQ0FsZ29yaXRobU1hcHBlcjo6cmVnaXN0ZXJIYW5kbGVyKGNvbnN0IFhNTENoICogVVJJLCBjb25zdCBYU0VDQWxnb3JpdGhtSGFuZGxlciAmIGhhbmRsZXIpIHsKKworCU1hcHBlckVudHJ5ICogZW50cnkgPSBmaW5kRW50cnkoVVJJKTsKKworCWlmIChlbnRyeSAhPSBOVUxMKSB7CisKKwkJZGVsZXRlIGVudHJ5LT5tcF9oYW5kbGVyOworCisJfQorCWVsc2UgeworCQlYU0VDbmV3KGVudHJ5LCBNYXBwZXJFbnRyeSk7CisKKwkJZW50cnktPm1wX3VyaSA9IFhNTFN0cmluZzo6cmVwbGljYXRlKFVSSSk7CisJCW1fbWFwcGluZy5wdXNoX2JhY2soZW50cnkpOworCisJfQorCWVudHJ5LT5tcF9oYW5kbGVyID0gaGFuZGxlci5jbG9uZSgpOworCit9CisKK3ZvaWQgWFNFQ0FsZ29yaXRobU1hcHBlcjo6d2hpdGVsaXN0QWxnb3JpdGhtKGNvbnN0IFhNTENoKiBVUkkpCit7CisgICAgbV93aGl0ZWxpc3QucHVzaF9iYWNrKFhNTFN0cmluZzo6cmVwbGljYXRlKFVSSSkpOworfQorCit2b2lkIFhTRUNBbGdvcml0aG1NYXBwZXI6OmJsYWNrbGlzdEFsZ29yaXRobShjb25zdCBYTUxDaCogVVJJKQoreworICAgIG1fYmxhY2tsaXN0LnB1c2hfYmFjayhYTUxTdHJpbmc6OnJlcGxpY2F0ZShVUkkpKTsKK30KZGlmZiAtLWdpdCBhL2Mvc3JjL2ZyYW1ld29yay9YU0VDQWxnb3JpdGhtTWFwcGVyLmhwcCBiL2Mvc3JjL2ZyYW1ld29yay9YU0VDQWxnb3JpdGhtTWFwcGVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWE4NWI0Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZnJhbWV3b3JrL1hTRUNBbGdvcml0aG1NYXBwZXIuaHBwCkBAIC0wLDAgKzEsMTI2IEBACisvKgorICogQ29weXJpZ2h0IDIwMDMtMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYU0VDQWxnb3JpdGhtTWFwcGVyIDo9IFByb3ZpZGVzIGEgdGFibGUgb2YgQWxnb3JpdGhtSGFuZGxlcnMKKyAqCQkJCQkJICBNYXBwZWQgYnkgVHlwZSBVUkkKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWFNFQ0FMR01BUFBFUl9JTkNMVURFCisjZGVmaW5lIFhTRUNBTEdNQVBQRVJfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisKKyNpbmNsdWRlIDx2ZWN0b3I+CisKK2NsYXNzIFhTRUNBbGdvcml0aG1IYW5kbGVyOworCisvKioKKyAqIEBpbmdyb3VwIGludGVybmFsCisgKlxAeyovCisKKworCisvKioKKyAqIEBicmllZiBIb2xkZXIgY2xhc3MgZm9yIG1hcHBpbmcgQWxnb3JpdGhtcyB0byBIYW5kbGVycworICoKKyAqLworCitjbGFzcyBEU0lHX0VYUE9SVCBYU0VDQWxnb3JpdGhtTWFwcGVyIHsKKworcHVibGljOgorCQorCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCQorCVhTRUNBbGdvcml0aG1NYXBwZXIodm9pZCk7CisJflhTRUNBbGdvcml0aG1NYXBwZXIoKTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBEZWZhdWx0IG1hcHBpbmcgc3RyaW5ncyAqLworCS8vQHsKKworCXN0YXRpYyBjb25zdCBYTUxDaCBzX2RlZmF1bHRFbmNyeXB0aW9uTWFwcGluZ1tdOworCisJLyoqIEBuYW1lIE1hcCBNZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIE1hcCBhIFVSSSB0byBhIGhhbmRsZXIKKwkgKi8KKworCVhTRUNBbGdvcml0aG1IYW5kbGVyICogbWFwVVJJVG9IYW5kbGVyKGNvbnN0IFhNTENoICogVVJJKSBjb25zdDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBSZWdpc3RyYXRpb24gTWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBSZWdpc3RlciBhIG5ldyBoYW5kbGVyCisJICovCisKKwl2b2lkIHJlZ2lzdGVySGFuZGxlcihjb25zdCBYTUxDaCAqIFVSSSwgY29uc3QgWFNFQ0FsZ29yaXRobUhhbmRsZXIgJiBoYW5kbGVyKTsKKworCS8qKgorCSAqIFxicmllZiBJbmRpY2F0ZSBhbiBhbGdvcml0aG0gaXMgYXBwcm92ZWQgZm9yIHVzZSwgaW1wbHlpbmcgb3RoZXJzIGFyZSBub3QuCisJICovCisKKwl2b2lkIHdoaXRlbGlzdEFsZ29yaXRobShjb25zdCBYTUxDaCogVVJJKTsKKworICAgIC8qKgorICAgICAqIFxicmllZiBJbmRpY2F0ZSBhbiBhbGdvcml0aG0gaXMgbm90IGFwcHJvdmVkIGZvciB1c2UsIGltcGx5aW5nIG90aGVycyBhcmUuCisgICAgICovCisKKwl2b2lkIGJsYWNrbGlzdEFsZ29yaXRobShjb25zdCBYTUxDaCogVVJJKTsKKworCS8vQH0KKworcHJpdmF0ZToKKworCXN0cnVjdCBNYXBwZXJFbnRyeSB7CisKKwkJWE1MQ2ggKiBtcF91cmk7CisJCVhTRUNBbGdvcml0aG1IYW5kbGVyICogbXBfaGFuZGxlcjsKKworCX07CisKKwlNYXBwZXJFbnRyeSAqIGZpbmRFbnRyeShjb25zdCBYTUxDaCAqIFVSSSkgY29uc3Q7CisKKyNpZiBkZWZpbmVkKFhTRUNfTk9fTkFNRVNQQUNFUykKKwl0eXBlZGVmIHZlY3RvcjxNYXBwZXJFbnRyeSAqPgkJCU1hcHBlckVudHJ5VmVjdG9yVHlwZTsKKyAgICB0eXBlZGVmIHZlY3RvcjxYTUxDaCo+ICAgICAgICAgICAgICAgICAgV2hpdGVsaXN0VmVjdG9yVHlwZTsKKyNlbHNlCisJdHlwZWRlZiBzdGQ6OnZlY3RvcjxNYXBwZXJFbnRyeSAqPgkJTWFwcGVyRW50cnlWZWN0b3JUeXBlOworICAgIHR5cGVkZWYgc3RkOjp2ZWN0b3I8WE1MQ2gqPiAgICAgICAgICAgICBXaGl0ZWxpc3RWZWN0b3JUeXBlOworI2VuZGlmCisKKwlNYXBwZXJFbnRyeVZlY3RvclR5cGUJCSAgICAgICAgICAgIG1fbWFwcGluZzsKKyAgICBXaGl0ZWxpc3RWZWN0b3JUeXBlICAgICAgICAgICAgICAgICAgICAgbV93aGl0ZWxpc3QsbV9ibGFja2xpc3Q7Cit9OworCisvKlxAfSovCisKKyNlbmRpZiAvKiBYU0VDQUxHTUFQUEVSX0lOQ0xVREUgKi8KKwpkaWZmIC0tZ2l0IGEvYy9zcmMvZnJhbWV3b3JrL1hTRUNDb25maWcuaHBwLmluIGIvYy9zcmMvZnJhbWV3b3JrL1hTRUNDb25maWcuaHBwLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiOWQ5ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9mcmFtZXdvcmsvWFNFQ0NvbmZpZy5ocHAuaW4KQEAgLTAsMCArMSwxOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDEwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICogCisgKiBDb25maWd1cmF0aW9uIHRlbXBsYXRlIGZvciBYU0VDQ29uZmlnLmhwcAorICoKKyAqIEZpbGxlZCBvdXQgYnkgY29uZmlndXJlCisgKgorICovCisKKy8qCisgKiBUaGVzZSBhcmUgdGhlIGhpZ2ggbGV2ZWwgbnVtZXJpY3MgdGhhdCBuZWVkIHRvIGJlIGNoYW5nZWQgdG8gYnVtcCB0aGUKKyAqIHZlcnNpb24gbnVtYmVyLiAgVGhleSBhcmUgZ2VuZXJhbGx5IGRlZmluZWQgdmlhIHRoZSBjb25maWd1cmUgc2NyaXB0LgorICoKKyAqIFRoZXkgYXJlIHVzZWQgdG8gY3JlYXRlIHZlcnNpb24gc3RyaW5ncyAtIHNlZSB0aGUgZGV0YWlscyBhdCB0aGUgZW5kIG9mIHRoaXMgZmlsZQorICovCisKKyN1bmRlZiBYU0VDX1ZFUlNJT05fTUFKT1IKKyN1bmRlZiBYU0VDX1ZFUlNJT05fTUVESVVNCisjdW5kZWYgWFNFQ19WRVJTSU9OX01JTk9SCisKKy8qCisgKiBUaGUgZm9sbG93aW5nIGRlZmluZXMgd2hldGhlciBYYWxhbiBpbnRlZ3JhdGlvbiBpcyByZXF1aXJlZC4KKyAqCisgKiBYYWxhbiBpcyB1c2VkIGZvciBYU0xUIGFuZCBjb21wbGV4IFhQYXRoIHByb2Nlc3NpbmcuCisgKiBBY3RpdmF0ZSB0aGlzICNkZWZpbmUgaWYgWGFsYW4gaXMgbm90IHJlcXVpcmVkIChvciBkZXNpcmVkKQorICovCisKKyN1bmRlZiBYU0VDX05PX1hBTEFOCisKKy8qCisgKiBGaW5kIG91dCB0aGUgaWRpb3N5bmNyYWNpZXMgb2YgdGhlIHZlcnNpb24gb2YgWGVyY2VzIHdlIGFyZSB1c2luZworICovCisKKy8qIDIuMyBhbmQgYWJvdmUgaW50cm9kdWNlZCBhIHZlcnNpb24gcGFyYW1ldGVyIGluIHRoZSBYTUxGb3JtYXR0ZXIgY3RvciAqLworCisjdW5kZWYgWFNFQ19YRVJDRVNfRk9STUFUVEVSX1JFUVVJUkVTX1ZFUlNJT04KKworLyogMi4zIGFuZCBhYm92ZSB1c2UgYSB1c2VyIGRlZmluZWQgTWVtb3J5IE1hbmFnZXIuICBJbiBzb21lIGNhc2VzLCB0aGlzCisgICBhY3R1YWxseSBuZWVkcyB0byBiZSBwYXNzZWQgdG8gZnVuY3Rpb25zCisqLworCisjdW5kZWYgWFNFQ19YRVJDRVNfUkVRVUlSRVNfTUVNTUdSCisKKy8qIElzIGl0IHBvc3NpYmxlIHRvIHNldElkQXR0cmlidXRlcz8gLSBET00gbGV2ZWwgMyBjYWxsICovCisKKyN1bmRlZiBYU0VDX1hFUkNFU19IQVNfU0VUSURBVFRSSUJVVEUKKworLyogSXMgaXQgcG9zc2libGUgdG8gc2V0SWRBdHRyaWJ1dGVzPyAtIERPTSBsZXZlbCAzIGNhbGwuICBWMy54CisgICBBUEkgVmVyc2lvbiAqLworCisjdW5kZWYgWFNFQ19YRVJDRVNfSEFTX0JPT0xTRVRJREFUVFJJQlVURQorCisvKiAzLjAgbm8gbG9uZ2VyIHN1cHBvcnRzIERPTVdyaXRlciwgbXVzdCB1c2UgRE9NTFNTZXJpYWxpemVyIGluc3RlYWQKKyovCisKKyN1bmRlZiBYU0VDX1hFUkNFU19ET01MU1NFUklBTElaRVIKKworLyogMy4wIG5vdyB1c2VzIGdldElucHV0RW5jb2RpbmcgcmF0aGVyIHRoYW4gZ2V0RW5jb2RpbmcgdG8gZGV0ZXJtaW5lCisgICBlbmNvZGluZyB0aGF0IHdhcyBmb3VuZCBpbiBpbnB1dCBkb2N1bWVudCAqLworCisjdW5kZWYgWFNFQ19YRVJDRVNfRE9NRU5USVRZSU5QVVRFTkNPRElORworCisvKiAzLjAgbm93IDY0LWJpdCBzYWZlICovCisKKyN1bmRlZiBYU0VDX1hFUkNFU182NEJJVFNBRkUKKworLyogMy4wIElucHV0U3RyZWFtIG11c3QgZXhwb3NlIGNvbnRlbnQgdHlwZSAqLworCisjdW5kZWYgWFNFQ19YRVJDRVNfSU5QVVRTVFJFQU1fSEFTX0NPTlRFTlRUWVBFCisKKy8qCisgKiBGaW5kIG91dCB0aGUgaWRpb3N5bmNyYWNpZXMgb2YgdGhlIHZlcnNpb24gb2YgWGFsYW4gd2UgYXJlIHVzaW5nCisgKi8KKworLyogMS45IGFuZCBhYm92ZSBoYXZlIFhTTEV4Y2VwdGlvbjo6Z2V0VHlwZSgpIHJldHVybnMgWGFsYW5ET01DaGFyICosIG5vdAorICAgWGFsYW5ET01TdHJpbmcKKyovCisKKyN1bmRlZiBYU0VDX1hTTEVYQ0VQVElPTl9SRVRVUk5TX0RPTVNUUklORworCisvKiAxLjkgYW5kIGFib3ZlIGRvIG5vdCB0YWtlIGEgWGVyY2VzRE9NU3VwcG9ydCBhcyBpbnB1dCB0byB0aGUgY3RvciAqLworCisjdW5kZWYgWFNFQ19YRVJDRVNQQVJTRVJMSUFJU09OX1JFUVNfRE9NU1VQUE9SVAorCisvKiAxLjkgYW5kIGFib3ZlIHJlcXVpcmUgYSBOb2RlUmVmTGlzdCBhcyBpbnB1dCB0byBYUGF0aEV2YWx1YXRvcjo6CisgICBzZWxlY3ROb2RlTGlzdCAKKyovCisKKyN1bmRlZiBYU0VDX1NFTEVDVE5PREVMSVNUX1JFUVNfTk9ERVJFRkxJU1QKKworLyogMS45IGFuZCBhYm92ZSB1c2UgTWVtb3J5TWFuYWdlciBmb3IgdGhlIFhQYXRoIEZ1bmN0aW9uIGNsYXNzZXMKKyovCisKKyN1bmRlZiBYU0VDX1hBTEFOX1JFUVNfTUVNT1JZTUFOQUdFUgorCisvKiBEb2VzIFhNTFN0cmluZzo6cmVsZWFzZSgpIGV4aXN0ICovCisKKyN1bmRlZiBYU0VDX1hFUkNFU19YTUxTVFJJTkdfSEFTX1JFTEVBU0UKKworLyoKKyAqIERlZmluZSBwcmVzZW5jZSBvZiBjcnlwdG9ncmFwaGljIHByb3ZpZGVycworICovCisKKyN1bmRlZiBIQVZFX09QRU5TU0wKKworI3VuZGVmIEhBVkVfV0lOQ0FQSQorCisvKgorICogU29tZSBzZXR0aW5ncyBmb3IgT3BlblNTTCBpZiB3ZSBoYXZlIGl0CisgKgorICovCisKKyN1bmRlZiBYU0VDX09QRU5TU0xfQ09OU1RfQlVGRkVSUworI3VuZGVmIFhTRUNfT1BFTlNTTF9IQVZFX0FFUworI3VuZGVmIFhTRUNfT1BFTlNTTF9IQVZFX0VDCisjdW5kZWYgWFNFQ19PUEVOU1NMX0NBTlNFVF9QQURESU5HCisjdW5kZWYgWFNFQ19PUEVOU1NMX0QySVg1MDlfQ09OU1RfQlVGRkVSCisjdW5kZWYgWFNFQ19PUEVOU1NMX0hBVkVfQ1JZUFRPX0NMRUFOVVBfQUxMX0VYX0RBVEEKKworLyoKKyAqIFNvbWUgc3RyaW5nIGZ1bmN0aW9ucyAobWFpbmx5IHRvIGdldCBwYXN0IG1pY3Jvc29mdCB3YXJuaW5nCisgKiBtZXNzYWdlcworICovCisKKy8qIERvIHdlIGhhdmUgX3N0cmR1cChjb25zdCBjaGFyICopIC0gcHJvYmFibHkgbm90LCBidXQuLi4gKi8KKworI3VuZGVmIFhTRUNfSEFWRV9fU1RSRFVQCisjdW5kZWYgWFNFQ19IQVZFX19TVFJJQ01QCisKKy8qIEhvdyBkbyB3ZSBoYW5kbGUgc3RyaWNtcCBzdHlsZSByZXF1aXJlbWVudHM/ICovCisKKyN1bmRlZiBYU0VDX0hBVkVfU1RSSUNNUAorI3VuZGVmIFhTRUNfSEFWRV9TVFJDQVNFQ01QCisKKy8qCisgKiBNYWNyb3MgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBoZWFkZXIgZmlsZXMgZXhpc3Qgb24gdGhpcworICogc3lzdGVtCisgKi8KKworLyogUG9zaXggdW5pc3RkLmggKi8KKyN1bmRlZiBIQVZFX1VOSVNURF9ICisKKy8qIFdpbmRvd3MgZGlyZWN0LmggKi8KKyN1bmRlZiBIQVZFX0RJUkVDVF9ICisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgVmVyc2lvbiBIYW5kbGluZworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLyoKKyAqIFRoZSBmb2xsb3dpbmcgY29kZSBtYWtlcyB1c2Ugb2YgdGhlIFhlcmNlcyB2ZXJzaW9uIGhhbmRsaW5nIG1hY3JvcyB0byBkZWZpbmUKKyAqIHNvbWUgY29uc3RhbnRzIHRoYXQgY2FuIGJlIHVzZWQgZHVyaW5nIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLgorICovCisKKy8qIFRoaXMgY2FuIGJlIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGFuZCBmb3IgdGVzdGluZyBkdXJpbmcKKyAqIGF1dG9jb25maWd1cmVzLgorICoKKyAqIEl0IHdpbGwgY3JlYXRlIGEgc3RyaW5nIG9mIHRoZSBmb3JtIDEwMDAwICogTUFKT1IgKyAxMDAgKiBNRURJVU0gKyBNSU5PUgorICogRS5nLiAxMDMwMSBmb3IgdmVyc2lvbiAxLjMuMQorICovCisKKyNkZWZpbmUgX1hTRUNfVkVSU0lPTl9GVUxMIENBTENfRVhQQU5ERURfRk9STSAoWFNFQ19WRVJTSU9OX01BSk9SLFhTRUNfVkVSU0lPTl9NRURJVU0sWFNFQ19WRVJTSU9OX01JTk9SKQorCisvKiBTb21lIHVzZWZ1bCBzdHJpbmdzIGZvciB2ZXJzaW9uaW5nIC0gYmFzZWQgb24gdGhlIHNhbWUgc3RyaW5ncyBmcm9tIFhlcmNlcyAqLworCisjZGVmaW5lIFhTRUNfRlVMTFZFUlNJT05TVFIgSU5WS19DQVQzX1NFUF9VTkRFUlNDT1JFKFhTRUNfVkVSU0lPTl9NQUpPUixYU0VDX1ZFUlNJT05fTUVESVVNLFhTRUNfVkVSU0lPTl9NSU5PUikKKyNkZWZpbmUgWFNFQ19GVUxMVkVSU0lPTkRPVCBJTlZLX0NBVDNfU0VQX1BFUklPRChYU0VDX1ZFUlNJT05fTUFKT1IsWFNFQ19WRVJTSU9OX01FRElVTSxYU0VDX1ZFUlNJT05fTUlOT1IpCisjZGVmaW5lIFhTRUNfRlVMTFZFUlNJT05OVU0gSU5WS19DQVQzX1NFUF9OSUwoWFNFQ19WRVJTSU9OX01BSk9SLFhTRUNfVkVSU0lPTl9NRURJVU0sWFNFQ19WRVJTSU9OX01JTk9SKQorI2RlZmluZSBYU0VDX1ZFUlNJT05TVFIgICAgIElOVktfQ0FUMl9TRVBfVU5ERVJTQ09SRShYU0VDX1ZFUlNJT05fTUFKT1IsWFNFQ19WRVJTSU9OX01FRElVTSkKKworLyogVGhlIGZvbGxvd2luZyBpcyB1c2VkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHZlcnNpb24gaGFuZGxpbmcgKi8KKworI3VuZGVmIFhTRUNfVkVSU0lPTgorCisKZGlmZiAtLWdpdCBhL2Mvc3JjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHAgYi9jL3NyYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwODNiZDcKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwCkBAIC0wLDAgKzEsMTkzIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYU0VDRGVmcyA6PSBGaWxlIGZvciBnZW5lcmFsIFhTRUMgZGVmaW5pdGlvbnMKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKy8vIFVzZSBYZXJjZXMgdG8gZG8gdGhlICJoYXJkIHdvcmsgaW4gZGV0ZXJtaW5pbmcgY29tcGlsZXJzIGV0Yy4iIGZvciB1cworCisjaWZuZGVmIFhTRUNERUZTX0hFQURFUgorI2RlZmluZSBYU0VDREVGU19IRUFERVIKKworLy8gR2VuZXJhbCBpbmNsdWRlcworCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKy8vIEluY2x1ZGUgdGhlIGdlbmVyYXRlZCBpbmNsdWRlIGZpbGUKKworI2lmIGRlZmluZWQgKF9XSU4zMikKKyMJaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ1czMkNvbmZpZy5ocHA+CisjCWlmIGRlZmluZWQgKF9ERUJVRykgJiYgZGVmaW5lZCAoX1hTRUNfRE9fTUVNREVCVUcpCisjCQlkZWZpbmUgX0NSVERCR19NQVBfQUxMT0MKKyMJCWluY2x1ZGUgPGNydGRiZy5oPgorIwllbmRpZgorIwlkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgorIwlpbmNsdWRlIDx3aW5kb3dzLmg+CisjZWxzZQorIwlpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDQ29uZmlnLmhwcD4KKyNlbmRpZgorCisvLyBYYWxhbgorCisvLyNpbmNsdWRlIDxJbmNsdWRlL1BsYXRmb3JtRGVmaW5pdGlvbnMuaHBwPgorCisvLyBYZXJjZXMKKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YZXJjZXNEZWZzLmhwcD4KKworLy8gRGVmaW5lICJzaXplcyIgb2YgZGF0YSB0byBjb3JyZXNwb25kIHRvIFhlcmNlcyBBUElzCisjaWZkZWYgWFNFQ19YRVJDRVNfNjRCSVRTQUZFCisgICAgdHlwZWRlZiBYTUxTaXplX3QgeHNlY3NpemVfdDsKKyNlbHNlCisgICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgeHNlY3NpemVfdDsKKyNlbmRpZgorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgTmFtZXNwYWNlIEhhbmRsaW5nCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBVc2UgYW4gYXBwcm9hY2ggc2ltaWxhciB0byB0aGF0IHVzZWQgaW4gWGFsYW4gdG8gcHJvY2VzcyBYZXJjZXMgbmFtZXNwYWNlcworCisjaWYgZGVmaW5lZChYRVJDRVNfSEFTX0NQUF9OQU1FU1BBQ0UpCisjCWRlZmluZSBYU0VDX1VTSU5HX1hFUkNFUyhOQU1FKSB1c2luZyBYRVJDRVNfQ1BQX05BTUVTUEFDRSA6OiBOQU1FCisjCWRlZmluZSBYU0VDX0RFQ0xBUkVfWEVSQ0VTX0NMQVNTKE5BTUUpIG5hbWVzcGFjZSBYRVJDRVNfQ1BQX05BTUVTUEFDRSB7IGNsYXNzIE5BTUU7IH0KKyMJZGVmaW5lIFhTRUNfREVDTEFSRV9YRVJDRVNfU1RSVUNUKE5BTUUpIG5hbWVzcGFjZSBYRVJDRVNfQ1BQX05BTUVTUEFDRSB7IHN0cnVjdCBOQU1FOyB9CisjZWxzZQorIwlkZWZpbmUgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSCisjCWRlZmluZSBYRVJDRVNfQ1BQX05BTUVTUEFDRV9CRUdJTgorIwlkZWZpbmUgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfRU5ECisjCWRlZmluZSBYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKyMJZGVmaW5lIFhTRUNfVVNJTkdfWEVSQ0VTKE5BTUUpCisjCWRlZmluZSBYU0VDX0RFQ0xBUkVfWEVSQ0VTX0NMQVNTKE5BTUUpIGNsYXNzIE5BTUU7CisjCWRlZmluZSBYU0VDX0RFQ0xBUkVfWEVSQ0VTX1NUUlVDVChOQU1FKSBzdHJ1Y3QgTkFNRTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoWFNFQ19YRVJDRVNfWE1MU1RSSU5HX0hBU19SRUxFQVNFKQorIyAgICBkZWZpbmUgWFNFQ19SRUxFQVNFX1hNTENIKHgpIFhNTFN0cmluZzo6cmVsZWFzZSgmKHgpKQorI2Vsc2UKKyMgICAgZGVmaW5lIFhTRUNfUkVMRUFTRV9YTUxDSCh4KSBkZWxldGVbXSAoeCk7CisjZW5kaWYKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBQcm9qZWN0IExpYnJhcnkgSGFuZGxpbmcKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpZiBkZWZpbmVkIChQTEFURk9STV9FWFBPUlQpCisjICBkZWZpbmUgWFNFQ19QTEFURk9STV9FWFBPUlQgUExBVEZPUk1fRVhQT1JUCisjICBkZWZpbmUgWFNFQ19QTEFURk9STV9JTVBPUlQgUExBVEZPUk1fSU1QT1JUCisjZWxzZQorIyAgZGVmaW5lIFhTRUNfUExBVEZPUk1fRVhQT1JUIFhFUkNFU19QTEFURk9STV9FWFBPUlQKKyMgIGRlZmluZSBYU0VDX1BMQVRGT1JNX0lNUE9SVCBYRVJDRVNfUExBVEZPUk1fSU1QT1JUCisjZW5kaWYKKworI2lmIGRlZmluZWQgKFBST0pfQ0FOT04pCisKKyNkZWZpbmUgQ0FOT05fRVhQT1JUIFhTRUNfUExBVEZPUk1fRVhQT1JUCisjZWxzZQorI2RlZmluZSBDQU5PTl9FWFBPUlQgWFNFQ19QTEFURk9STV9JTVBPUlQKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoUFJPSl9EU0lHKQorCisjZGVmaW5lIERTSUdfRVhQT1JUIFhTRUNfUExBVEZPUk1fRVhQT1JUCisjZWxzZQorI2RlZmluZSBEU0lHX0VYUE9SVCBYU0VDX1BMQVRGT1JNX0lNUE9SVAorI2VuZGlmCisKKy8vIFBsYXRmb3JtIGluY2x1ZGVzLiAgTXVjaCBvZiB0aGlzIGlzIHRha2VuIGZyb20gWGFsYW4KKworI2lmIGRlZmluZWQoX01TQ19WRVIpCisKKy8vIE1pY3Jvc29mdCBWQysrCisKKyMJcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEyNyA0MjUxIDQ1MTEgNDUwMyA0NTEyIDQ1MTQgNDcwMiA0NzEwIDQ3MTEgNDc4NiA0MDk3OyBlcnJvcjogNDE1MCA0MTcyIDQyMzggNDIzOSA0NzE1KQorIwlkZWZpbmUgWFNFQ19OT19DT1ZBUklBTlRfUkVUVVJOX1RZUEUKKy8qCisgKiBSZW1vdmVkIHRvIGFsbG93IGFueSBjb21waWxlciB0byBjb21waWxlIC0gbWlnaHQgbm90IHdvcmssIGJ1dCAuLi4uCisgKiAjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQorICogI2VsaWYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKQorICogI2Vsc2UKKyAqICNlcnJvciBVbmtub3duIGNvbXBpbGVyLgorICovCisjZW5kaWYKKworCisvLyBDb25maWd1cmF0aW9uIGluY2x1ZGVzCisKKy8vIFdlIHdhbnQgdG8gdXNlIFhQYXRoIGNhbGN1bGF0ZWQgdHJhbnNmb3JtcworCisvLyNkZWZpbmUgWFNFQ19VU0VfWFBBVEhfRU5WRUxPUEUKKworCisvLyBHaXZlbiB0aGUgY29uZmlndXJhdGlvbiAtIHdoYXQgc2hvdWxkIHdlIHNldD8KKworI2lmZGVmIFhTRUNfTk9fWEFMQU4KKworLy8gWGFsYW4gaXMgbm90IGF2YWlsYWJsZSEKKworIwlkZWZpbmUgWFNFQ19OT19YUEFUSAorIwlkZWZpbmUgWFNFQ19OT19YU0xUCisKKyNlbmRpZgkvKiBYU0VDX05PX1hBTEFOICovCisKKyNpZmRlZiBYU0VDX05PX1hQQVRICisKKyMJaWZkZWYgWFNFQ19VU0VfWFBBVEhfRU5WRUxPUEUKKyMJCXVuZGVmIFhTRUNfVVNFX1hQQVRIX0VOVkVMT1BFCisjCWVuZGlmCisKKyNlbmRpZgorCisKKy8qCisgKiBUaGUgZm9sbG93aW5nIGRlZmluaXRpb25zIGFyZSAqb25seSogbWFkZSBpZiB3ZSBhcmUKKyAqIGJ1aWxkaW5nIGxpYnJhcnkgY29kZSB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgaW50ZXJmZXJlCisgKiB3aXRoIHRoZSB3YXkgYXBwcyBhcmUgZG9pbmcgdGhpbmdzCisgKi8KKworI2lmZGVmIFhTRUNfTElCUkFSWV9CVUlMRAorCisjICAgIGlmbmRlZiBYU0VDX0hBVkVfX1NUUkRVUAorIyAgICAgICAgZGVmaW5lIF9zdHJkdXAoeCkgc3RyZHVwKHgpCisjICAgIGVuZGlmCisKKyMgICAgaWZuZGVmIFhTRUNfSEFWRV9fU1RSSUNNUAorIyAgICAgICAgaWZkZWYgWFNFQ19IQVZFX1NUUklDTVAKKyMgICAgICAgICAgICBkZWZpbmUgX3N0cmljbXAoeCx5KSBzdHJpY21wKHgseSkKKyMgICAgICAgIGVsc2UKKyMgICAgICAgICAgICBpZmRlZiBYU0VDX0hBVkVfU1RSQ0FTRUNNUAorIyAgICAgICAgICAgICAgICBkZWZpbmUgX3N0cmljbXAoeCx5KSBzdHJjYXNlY21wKHgseSkKKyMgICAgICAgICAgICBlbmRpZgorIyAgICAgICAgZW5kaWYKKyMgICAgZW5kaWYKKworIyAgICBpZm5kZWYgWFNFQ19IQVZFX19HRVRDV0QKKyMgICAgICAgIGRlZmluZSBfZ2V0Y3dkKHgseSkgZ2V0Y3dkKHgseSkKKyMgICAgZW5kaWYKKworI2VuZGlmCisKKyNlbmRpZiAvKiBYU0VDREVGU19IRUFERVIgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL2ZyYW1ld29yay9YU0VDRW52LmNwcCBiL2Mvc3JjL2ZyYW1ld29yay9YU0VDRW52LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWE5OTVlCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZnJhbWV3b3JrL1hTRUNFbnYuY3BwCkBAIC0wLDAgKzEsNDcwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDMtMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYU0VDRW52IDo9IENvbmZpZ3VyYXRpb24gY2xhc3MgLSB1c2VkIGJ5IHRoZSBvdGhlciBjbGFzc2VzIHRvIHJldHJpZXZlCisgKiAgICAgICAgICAgIGluZm9ybWF0aW9uIG9uIHRoZSBlbnZpcm9ubWVudCB0aGV5IGFyZSB3b3JraW5nIHVuZGVyCisgKgorICogJElkJAorICoKKyAqLworCisvLyBYU0VDIEluY2x1ZGVzCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vudi5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDVVJJUmVzb2x2ZXIuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHQ29uc3RhbnRzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisKKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MVW5pRGVmcy5ocHA+CisKK3N0cnVjdCBYU0VDRW52OjpJZEF0dHJpYnV0ZVN0cnVjdCB7CisJYm9vbAkJbV91c2VOYW1lc3BhY2U7CQkvKiBXYXMgdGhpcyBkZWZpbmVkIHdpdGggYSBuYW1lc3BhY2U/ICovCisJWE1MQ2gJCSogbXBfbmFtZXNwYWNlOwkJLyogTmFtZXNwYWNlIG9mIGF0dHJpYnV0ZSAqLworCVhNTENoCQkqIG1wX25hbWU7CQkJLyogTmFtZSBvZiBhdHRyaWJ1dGUgKi8KK307CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgRGVmYXVsdCBwcmVmaXggc3RyaW5ncworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY29uc3QgWE1MQ2ggc19kZWZhdWx0MTFQcmVmaXhbXSA9IHsKKworCWNoTGF0aW5fZCwKKwljaExhdGluX3MsCisgICAgY2hEaWdpdF8xLAorICAgIGNoRGlnaXRfMSwKKwljaE51bGwKKworfTsKKworY29uc3QgWE1MQ2ggc19kZWZhdWx0RUNQcmVmaXhbXSA9IHsKKworCWNoTGF0aW5fZSwKKwljaExhdGluX2MsCisJY2hOdWxsCisKK307CisKK2NvbnN0IFhNTENoIHNfZGVmYXVsdFhQRlByZWZpeFtdID0geworCisJY2hMYXRpbl94LAorCWNoTGF0aW5fcCwKKwljaExhdGluX2YsCisJY2hOdWxsCisKK307CisKK2NvbnN0IFhNTENoIHNfZGVmYXVsdFhFTkNQcmVmaXhbXSA9IHsKKworCWNoTGF0aW5feCwKKwljaExhdGluX2UsCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fYywKKwljaE51bGwKKworfTsKKworY29uc3QgWE1MQ2ggc19kZWZhdWx0WEtNU1ByZWZpeFtdID0geworCisJY2hMYXRpbl94LAorCWNoTGF0aW5faywKKwljaExhdGluX20sCisJY2hMYXRpbl9zLAorCWNoTnVsbAorCit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIERlZmF1bHQgSWQgbmFtZXMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NvbnN0IFhNTENoIHNfSWRbXSA9IHsKKworCWNoTGF0aW5fSSwKKwljaExhdGluX2QsCisJY2hOdWxsCisKK307CisKK2NvbnN0IFhNTENoIHNfaWRbXSA9IHsKKworCWNoTGF0aW5faSwKKwljaExhdGluX2QsCisJY2hOdWxsCisKK307CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBFbnYKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMKKworWFNFQ0Vudjo6WFNFQ0VudihET01Eb2N1bWVudCAqZG9jKSB7CisKKwltcF9kb2MgPSBkb2M7CisKKwltcF9wcmVmaXhOUyA9IFhNTFN0cmluZzo6cmVwbGljYXRlKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ckVtcHR5KTsKKyAgICBtcF8xMVByZWZpeE5TID0gWE1MU3RyaW5nOjpyZXBsaWNhdGUoc19kZWZhdWx0MTFQcmVmaXgpOworCW1wX2VjUHJlZml4TlMgPSBYTUxTdHJpbmc6OnJlcGxpY2F0ZShzX2RlZmF1bHRFQ1ByZWZpeCk7CisJbXBfeHBmUHJlZml4TlMgPSBYTUxTdHJpbmc6OnJlcGxpY2F0ZShzX2RlZmF1bHRYUEZQcmVmaXgpOworCW1wX3hlbmNQcmVmaXhOUyA9IFhNTFN0cmluZzo6cmVwbGljYXRlKHNfZGVmYXVsdFhFTkNQcmVmaXgpOworCW1wX3hrbXNQcmVmaXhOUyA9IFhNTFN0cmluZzo6cmVwbGljYXRlKHNfZGVmYXVsdFhLTVNQcmVmaXgpOworCisJbV9wcmV0dHlQcmludEZsYWcgPSB0cnVlOworCisJbXBfVVJJUmVzb2x2ZXIgPSBOVUxMOworCisJLy8gU2V0IHVwIG91ciBmb3JtYXR0ZXIKKwlYU0VDbmV3KG1wX2Zvcm1hdHRlciwgWFNFQ1NhZmVCdWZmZXJGb3JtYXR0ZXIoIlVURi04IixYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcywgCisJCQkJCQkJCQkJCQlYTUxGb3JtYXR0ZXI6OlVuUmVwX0NoYXJSZWYpKTsKKworCS8vIFNldCB1cCBJRHMKKwltX2lkQnlBdHRyaWJ1dGVOYW1lRmxhZyA9IHRydWU7CQkvLyBBdCB0aGUgbW9tZW50IHRoaXMgaXMgb24gYnkgZGVmYXVsdAorCS8vIFJlZ2lzdGVyICJJZCIgYW5kICJpZCIgYXMgdmFsaWQgQXR0cmlidXRlIG5hbWVzCisJcmVnaXN0ZXJJZEF0dHJpYnV0ZU5hbWUoc19JZCk7CisJcmVnaXN0ZXJJZEF0dHJpYnV0ZU5hbWUoc19pZCk7CisKK30KKworWFNFQ0Vudjo6WFNFQ0Vudihjb25zdCBYU0VDRW52ICYgdGhlT3RoZXIpIHsKKworCW1wX2RvYyA9IHRoZU90aGVyLm1wX2RvYzsKKworCW1wX3ByZWZpeE5TID0gWE1MU3RyaW5nOjpyZXBsaWNhdGUodGhlT3RoZXIubXBfcHJlZml4TlMpOworICAgIG1wXzExUHJlZml4TlMgPSBYTUxTdHJpbmc6OnJlcGxpY2F0ZSh0aGVPdGhlci5tcF8xMVByZWZpeE5TKTsKKwltcF9lY1ByZWZpeE5TID0gWE1MU3RyaW5nOjpyZXBsaWNhdGUodGhlT3RoZXIubXBfZWNQcmVmaXhOUyk7CisJbXBfeHBmUHJlZml4TlMgPSBYTUxTdHJpbmc6OnJlcGxpY2F0ZSh0aGVPdGhlci5tcF94cGZQcmVmaXhOUyk7CisJbXBfeGVuY1ByZWZpeE5TID0gWE1MU3RyaW5nOjpyZXBsaWNhdGUodGhlT3RoZXIubXBfeGVuY1ByZWZpeE5TKTsKKwltcF94a21zUHJlZml4TlMgPSBYTUxTdHJpbmc6OnJlcGxpY2F0ZSh0aGVPdGhlci5tcF94a21zUHJlZml4TlMpOworCisJbV9wcmV0dHlQcmludEZsYWcgPSB0aGVPdGhlci5tX3ByZXR0eVByaW50RmxhZzsKKworCWlmICh0aGVPdGhlci5tcF9VUklSZXNvbHZlciAhPSBOVUxMKQorCQltcF9VUklSZXNvbHZlciA9IHRoZU90aGVyLm1wX1VSSVJlc29sdmVyLT5jbG9uZSgpOworCWVsc2UKKwkJbXBfVVJJUmVzb2x2ZXIgPSBOVUxMOworCisJLy8gU2V0IHVwIG91ciBmb3JtYXR0ZXIKKwlYU0VDbmV3KG1wX2Zvcm1hdHRlciwgWFNFQ1NhZmVCdWZmZXJGb3JtYXR0ZXIoIlVURi04IixYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcywgCisJCQkJCQkJCQkJCQlYTUxGb3JtYXR0ZXI6OlVuUmVwX0NoYXJSZWYpKTsKKworCS8vIFNldCB1cCBJRHMKKwltX2lkQnlBdHRyaWJ1dGVOYW1lRmxhZyA9IHRoZU90aGVyLm1faWRCeUF0dHJpYnV0ZU5hbWVGbGFnOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCB0aGVPdGhlci5nZXRJZEF0dHJpYnV0ZU5hbWVMaXN0U2l6ZSgpIDsgKytpKSB7CisJCXJlZ2lzdGVySWRBdHRyaWJ1dGVOYW1lKHRoZU90aGVyLmdldElkQXR0cmlidXRlTmFtZUxpc3RJdGVtKGkpKTsKKwl9CisKK30KKworWFNFQ0Vudjo6flhTRUNFbnYoKSB7CisKKwlpZiAobXBfZm9ybWF0dGVyICE9IE5VTEwpIHsKKwkJZGVsZXRlIG1wX2Zvcm1hdHRlcjsKKwl9CisKKwlpZiAobXBfcHJlZml4TlMgIT0gTlVMTCkgeworCQlYU0VDX1JFTEVBU0VfWE1MQ0gobXBfcHJlZml4TlMpOworCX0KKworICAgIGlmIChtcF8xMVByZWZpeE5TICE9IE5VTEwpIHsKKyAgICAgICAgWFNFQ19SRUxFQVNFX1hNTENIKG1wXzExUHJlZml4TlMpOworICAgIH0KKworCWlmIChtcF9lY1ByZWZpeE5TICE9IE5VTEwpIHsKKwkJWFNFQ19SRUxFQVNFX1hNTENIKG1wX2VjUHJlZml4TlMpOworCX0KKwkKKwlpZiAobXBfeHBmUHJlZml4TlMgIT0gTlVMTCkgeworCQlYU0VDX1JFTEVBU0VfWE1MQ0gobXBfeHBmUHJlZml4TlMpOworCX0KKworCWlmIChtcF94ZW5jUHJlZml4TlMgIT0gTlVMTCkgeworCQlYU0VDX1JFTEVBU0VfWE1MQ0gobXBfeGVuY1ByZWZpeE5TKTsKKwl9CisKKwlpZiAobXBfeGttc1ByZWZpeE5TICE9IE5VTEwpIHsKKwkJWFNFQ19SRUxFQVNFX1hNTENIKG1wX3hrbXNQcmVmaXhOUyk7CisJfQorCisJaWYgKG1wX1VSSVJlc29sdmVyICE9IE5VTEwpIHsKKwkJZGVsZXRlIG1wX1VSSVJlc29sdmVyOworCX0KKworCS8vIENsZWFuIHVwIElkIGF0dHJpYnV0ZSBuYW1lcworCUlkTmFtZVZlY3RvclR5cGU6Oml0ZXJhdG9yIGl0OworCisJZm9yIChpdCA9IG1faWRBdHRyaWJ1dGVOYW1lTGlzdC5iZWdpbigpOyBpdCAhPSBtX2lkQXR0cmlidXRlTmFtZUxpc3QuZW5kKCk7IGl0KyspIHsKKwkJSWRBdHRyaWJ1dGVUeXBlICogaSA9ICppdDsKKwkJaWYgKGktPm1wX25hbWVzcGFjZSAhPSBOVUxMKQorCQkJWFNFQ19SRUxFQVNFX1hNTENIKChpLT5tcF9uYW1lc3BhY2UpKTsKKwkJaWYgKGktPm1wX25hbWUpCisJCQlYU0VDX1JFTEVBU0VfWE1MQ0goKGktPm1wX25hbWUpKTsKKworCQlkZWxldGUgKml0OworCX0KKworCW1faWRBdHRyaWJ1dGVOYW1lTGlzdC5lbXB0eSgpOworCisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBTZXQgYW5kIEdldCBSZXNvbHZlcnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwordm9pZCBYU0VDRW52OjpzZXRVUklSZXNvbHZlcihYU0VDVVJJUmVzb2x2ZXIgKiByZXNvbHZlcikgeworCisJaWYgKG1wX1VSSVJlc29sdmVyICE9IDApCisJCWRlbGV0ZSBtcF9VUklSZXNvbHZlcjsKKworCW1wX1VSSVJlc29sdmVyID0gcmVzb2x2ZXItPmNsb25lKCk7CisKK30KKworWFNFQ1VSSVJlc29sdmVyICogWFNFQ0Vudjo6Z2V0VVJJUmVzb2x2ZXIodm9pZCkgY29uc3QgeworCisJcmV0dXJuIG1wX1VSSVJlc29sdmVyOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU2V0IGFuZCBHZXQgUHJlZml4ZXMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgWFNFQ0Vudjo6c2V0RFNJR05TUHJlZml4KGNvbnN0IFhNTENoICogcHJlZml4KSB7CisKKwlpZiAobXBfcHJlZml4TlMgIT0gTlVMTCkKKwkJWFNFQ19SRUxFQVNFX1hNTENIKG1wX3ByZWZpeE5TKTsKKworCW1wX3ByZWZpeE5TID0gWE1MU3RyaW5nOjpyZXBsaWNhdGUocHJlZml4KTsKKworfQorCit2b2lkIFhTRUNFbnY6OnNldERTSUcxMU5TUHJlZml4KGNvbnN0IFhNTENoICogcHJlZml4KSB7CisKKwlpZiAobXBfMTFQcmVmaXhOUyAhPSBOVUxMKQorCQlYU0VDX1JFTEVBU0VfWE1MQ0gobXBfMTFQcmVmaXhOUyk7CisKKwltcF8xMVByZWZpeE5TID0gWE1MU3RyaW5nOjpyZXBsaWNhdGUocHJlZml4KTsKKworfQorCit2b2lkIFhTRUNFbnY6OnNldEVDTlNQcmVmaXgoY29uc3QgWE1MQ2ggKiBwcmVmaXgpIHsKKworCWlmIChtcF9lY1ByZWZpeE5TICE9IE5VTEwpCisJCVhTRUNfUkVMRUFTRV9YTUxDSChtcF9lY1ByZWZpeE5TKTsKKworCW1wX2VjUHJlZml4TlMgPSBYTUxTdHJpbmc6OnJlcGxpY2F0ZShwcmVmaXgpOworCit9CisKK3ZvaWQgWFNFQ0Vudjo6c2V0WFBGTlNQcmVmaXgoY29uc3QgWE1MQ2ggKiBwcmVmaXgpIHsKKworCWlmIChtcF94cGZQcmVmaXhOUyAhPSBOVUxMKQorCQlYU0VDX1JFTEVBU0VfWE1MQ0gobXBfeHBmUHJlZml4TlMpOworCisJbXBfeHBmUHJlZml4TlMgPSBYTUxTdHJpbmc6OnJlcGxpY2F0ZShwcmVmaXgpOworCit9CisKK3ZvaWQgWFNFQ0Vudjo6c2V0WEVOQ05TUHJlZml4KGNvbnN0IFhNTENoICogcHJlZml4KSB7CisKKwlpZiAobXBfeGVuY1ByZWZpeE5TICE9IE5VTEwpCisJCVhTRUNfUkVMRUFTRV9YTUxDSChtcF94ZW5jUHJlZml4TlMpOworCisJbXBfeGVuY1ByZWZpeE5TID0gWE1MU3RyaW5nOjpyZXBsaWNhdGUocHJlZml4KTsKKworfQorCit2b2lkIFhTRUNFbnY6OnNldFhLTVNOU1ByZWZpeChjb25zdCBYTUxDaCAqIHByZWZpeCkgeworCisJaWYgKG1wX3hrbXNQcmVmaXhOUyAhPSBOVUxMKQorCQlYU0VDX1JFTEVBU0VfWE1MQ0gobXBfeGttc1ByZWZpeE5TKTsKKworCW1wX3hrbXNQcmVmaXhOUyA9IFhNTFN0cmluZzo6cmVwbGljYXRlKHByZWZpeCk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBJZCBBdHRyaWJ1dGUgTmFtZXMgSGFuZGxpbmcKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgWFNFQ0Vudjo6c2V0SWRCeUF0dHJpYnV0ZU5hbWUoYm9vbCBmbGFnKSB7CisKKwltX2lkQnlBdHRyaWJ1dGVOYW1lRmxhZyA9IGZsYWc7CisKK30KKworYm9vbCBYU0VDRW52OjpnZXRJZEJ5QXR0cmlidXRlTmFtZSh2b2lkKSBjb25zdCB7CisKKwlyZXR1cm4gbV9pZEJ5QXR0cmlidXRlTmFtZUZsYWc7CisKK30KKworYm9vbCBYU0VDRW52Ojppc1JlZ2lzdGVyZWRJZEF0dHJpYnV0ZU5hbWUoY29uc3QgWE1MQ2ggKiBuYW1lKSBjb25zdCB7CisKKwlpbnQgc3ogPSAoaW50KSBtX2lkQXR0cmlidXRlTmFtZUxpc3Quc2l6ZSgpOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBzejsgKytpKSB7CisJCWlmICghbV9pZEF0dHJpYnV0ZU5hbWVMaXN0W2ldLT5tX3VzZU5hbWVzcGFjZSAmJgorCQkJc3RyRXF1YWxzKG1faWRBdHRyaWJ1dGVOYW1lTGlzdFtpXS0+bXBfbmFtZSwgbmFtZSkpCisJCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7CisKK30KKwordm9pZCBYU0VDRW52OjpyZWdpc3RlcklkQXR0cmlidXRlTmFtZShjb25zdCBYTUxDaCAqIG5hbWUpIHsKKworCWlmIChpc1JlZ2lzdGVyZWRJZEF0dHJpYnV0ZU5hbWUobmFtZSkpCisJCXJldHVybjsKKworCUlkQXR0cmlidXRlVHlwZSAqIGlhdDsKKworCWlhdCA9IG5ldyBJZEF0dHJpYnV0ZVR5cGU7CisJbV9pZEF0dHJpYnV0ZU5hbWVMaXN0LnB1c2hfYmFjayhpYXQpOworCisJaWF0LT5tX3VzZU5hbWVzcGFjZSA9IGZhbHNlOworCWlhdC0+bXBfbmFtZXNwYWNlID0gTlVMTDsKKwlpYXQtPm1wX25hbWUgPSBYTUxTdHJpbmc6OnJlcGxpY2F0ZShuYW1lKTsKKworfQorCitib29sIFhTRUNFbnY6OmRlcmVnaXN0ZXJJZEF0dHJpYnV0ZU5hbWUoY29uc3QgWE1MQ2ggKiBuYW1lKSB7CisKKwlJZE5hbWVWZWN0b3JUeXBlOjppdGVyYXRvciBpdDsKKworCWZvciAoaXQgPSBtX2lkQXR0cmlidXRlTmFtZUxpc3QuYmVnaW4oKTsgaXQgIT0gbV9pZEF0dHJpYnV0ZU5hbWVMaXN0LmVuZCgpOyBpdCsrKSB7CisJCWlmICghKCgqaXQpLT5tX3VzZU5hbWVzcGFjZSkgJiYgc3RyRXF1YWxzKCgqaXQpLT5tcF9uYW1lLCBuYW1lKSkgeworCisJCQkvLyBSZW1vdmUgdGhpcyBpdGVtCisJCQlYU0VDX1JFTEVBU0VfWE1MQ0goKCgqaXQpLT5tcF9uYW1lKSk7CisJCQlkZWxldGUgKml0OworCQkJbV9pZEF0dHJpYnV0ZU5hbWVMaXN0LmVyYXNlKGl0KTsKKwkJCXJldHVybiB0cnVlOworCQl9CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCitib29sIFhTRUNFbnY6OmlzUmVnaXN0ZXJlZElkQXR0cmlidXRlTmFtZU5TKGNvbnN0IFhNTENoICogbnMsIGNvbnN0IFhNTENoICogbmFtZSkgY29uc3QgeworCisJaW50IHN6ID0gKGludCkgbV9pZEF0dHJpYnV0ZU5hbWVMaXN0LnNpemUoKTsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgc3o7ICsraSkgeworCQlpZiAobV9pZEF0dHJpYnV0ZU5hbWVMaXN0W2ldLT5tX3VzZU5hbWVzcGFjZSAmJgorCQkJc3RyRXF1YWxzKG1faWRBdHRyaWJ1dGVOYW1lTGlzdFtpXS0+bXBfbmFtZXNwYWNlLCBucykgJiYKKwkJCXN0ckVxdWFscyhtX2lkQXR0cmlidXRlTmFtZUxpc3RbaV0tPm1wX25hbWUsIG5hbWUpKQorCQkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworCit9CisKK3ZvaWQgWFNFQ0Vudjo6cmVnaXN0ZXJJZEF0dHJpYnV0ZU5hbWVOUyhjb25zdCBYTUxDaCAqIG5zLCBjb25zdCBYTUxDaCAqIG5hbWUpIHsKKworCWlmIChpc1JlZ2lzdGVyZWRJZEF0dHJpYnV0ZU5hbWVOUyhucywgbmFtZSkpCisJCXJldHVybjsKKworCUlkQXR0cmlidXRlVHlwZSAqIGlhdDsKKworCWlhdCA9IG5ldyBJZEF0dHJpYnV0ZVR5cGU7CisJbV9pZEF0dHJpYnV0ZU5hbWVMaXN0LnB1c2hfYmFjayhpYXQpOworCisJaWF0LT5tX3VzZU5hbWVzcGFjZSA9IHRydWU7CisJaWF0LT5tcF9uYW1lc3BhY2UgPSBYTUxTdHJpbmc6OnJlcGxpY2F0ZShucyk7OworCWlhdC0+bXBfbmFtZSA9IFhNTFN0cmluZzo6cmVwbGljYXRlKG5hbWUpOworCit9CisKK2Jvb2wgWFNFQ0Vudjo6ZGVyZWdpc3RlcklkQXR0cmlidXRlTmFtZU5TKGNvbnN0IFhNTENoICogbnMsIGNvbnN0IFhNTENoICogbmFtZSkgeworCisJSWROYW1lVmVjdG9yVHlwZTo6aXRlcmF0b3IgaXQ7CisKKwlmb3IgKGl0ID0gbV9pZEF0dHJpYnV0ZU5hbWVMaXN0LmJlZ2luKCk7IGl0ICE9IG1faWRBdHRyaWJ1dGVOYW1lTGlzdC5lbmQoKTsgaXQrKykgeworCQlpZiAoKCgqaXQpLT5tX3VzZU5hbWVzcGFjZSkgJiYgCisJCQlzdHJFcXVhbHMoKCppdCktPm1wX25hbWVzcGFjZSwgbnMpICYmCisJCQlzdHJFcXVhbHMoKCppdCktPm1wX25hbWUsIG5hbWUpKSB7CisKKwkJCS8vIFJlbW92ZSB0aGlzIGl0ZW0KKwkJCVhTRUNfUkVMRUFTRV9YTUxDSCgoKCppdCktPm1wX25hbWUpKTsKKwkJCWRlbGV0ZSAqaXQ7CisJCQltX2lkQXR0cmlidXRlTmFtZUxpc3QuZXJhc2UoaXQpOworCQkJcmV0dXJuIHRydWU7CisJCX0KKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKK2ludCBYU0VDRW52OjpnZXRJZEF0dHJpYnV0ZU5hbWVMaXN0U2l6ZSgpIGNvbnN0IHsKKworCXJldHVybiAoaW50KSBtX2lkQXR0cmlidXRlTmFtZUxpc3Quc2l6ZSgpOworCit9CisKK2NvbnN0IFhNTENoICogWFNFQ0Vudjo6Z2V0SWRBdHRyaWJ1dGVOYW1lTGlzdEl0ZW0oaW50IGluZGV4KSBjb25zdCB7CisKKwlpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IChpbnQpIG1faWRBdHRyaWJ1dGVOYW1lTGlzdC5zaXplKCkpCisJCXJldHVybiBtX2lkQXR0cmlidXRlTmFtZUxpc3RbaW5kZXhdLT5tcF9uYW1lOworCisJcmV0dXJuIE5VTEw7CisKK30KKworY29uc3QgWE1MQ2ggKiBYU0VDRW52OjpnZXRJZEF0dHJpYnV0ZU5hbWVMaXN0SXRlbU5TKGludCBpbmRleCkgY29uc3QgeworCisJaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPCAoaW50KSBtX2lkQXR0cmlidXRlTmFtZUxpc3Quc2l6ZSgpKQorCQlyZXR1cm4gbV9pZEF0dHJpYnV0ZU5hbWVMaXN0W2luZGV4XS0+bXBfbmFtZXNwYWNlOworCisJcmV0dXJuIE5VTEw7CisKK30KKworYm9vbCBYU0VDRW52OjpnZXRJZEF0dHJpYnV0ZU5hbWVMaXN0SXRlbUlzTlMoaW50IGluZGV4KSBjb25zdCB7CisKKwlpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IChpbnQpIG1faWRBdHRyaWJ1dGVOYW1lTGlzdC5zaXplKCkpCisJCXJldHVybiBtX2lkQXR0cmlidXRlTmFtZUxpc3RbaW5kZXhdLT5tX3VzZU5hbWVzcGFjZTsKKworCXJldHVybiBmYWxzZTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFNldCBhbmQgR2V0IFJlc29sdmVycworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBYU0VDRW52Ojpkb1ByZXR0eVByaW50KFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICogbm9kZSkgY29uc3QgeworCisJLy8gVmVyeSBzaW1wbGUKKwlpZiAobV9wcmV0dHlQcmludEZsYWcpCisJCW5vZGUtPmFwcGVuZENoaWxkKG1wX2RvYy0+Y3JlYXRlVGV4dE5vZGUoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyTkwpKTsKKworfQorCmRpZmYgLS1naXQgYS9jL3NyYy9mcmFtZXdvcmsvWFNFQ0Vudi5ocHAgYi9jL3NyYy9mcmFtZXdvcmsvWFNFQ0Vudi5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNlNzBlOQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2ZyYW1ld29yay9YU0VDRW52LmhwcApAQCAtMCwwICsxLDU0NiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAzLTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ0VudiA6PSBDb25maWd1cmF0aW9uIGNsYXNzIC0gdXNlZCBieSB0aGUgb3RoZXIgY2xhc3NlcyB0byByZXRyaWV2ZQorICogICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiB0aGUgZW52aXJvbm1lbnQgdGhleSBhcmUgd29ya2luZyB1bmRlcgorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYU0VDRU5WX0lOQ0xVREUKKyNkZWZpbmUgWFNFQ0VOVl9JTkNMVURFCisKKy8vIFhTRUMgSW5jbHVkZXMKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDU2FmZUJ1ZmZlckZvcm1hdHRlci5ocHA+CisKKyNpbmNsdWRlIDx2ZWN0b3I+CisKKy8vIFhlcmNlcyBJbmNsdWRlcworCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD4KKworY2xhc3MgWFNFQ1VSSVJlc29sdmVyOworCisvKioKKyAqIEBpbmdyb3VwIGludGVybmFsCisgKi8KKy8qXEB7Ki8KKworLyoqCisgKiBAYnJpZWYgSG9sZHMgZW52aXJvbm1lbnRhbCBpbmZvcm1hdGlvbgorICoKKyAqIFRoZSB2YXJpb3VzIFhTRUMgY2xhc3NlcyBuZWVkIHRvIGJlIGFibGUgdG8gcmV0cmlldmUgaW5mb3JtYXRpb24KKyAqIGFib3V0IHRoZSBlbnZpcm9ubWVudCB0aGV5IGFyZSBvcGVyYXRpbmcgaW4gKG5hbWVzcGFjZSBwcmVmaXhlcywKKyAqIG93bmluZyBkb2N1bWVudCBldGMuKSAtIHRoaXMgY2xhc3MgaXMgdXNlZCB0byBwcm92aWRlIGFuZCBob2xkCisgKiB0aGlzIGluZm8uCisgKgorICovCisKK2NsYXNzIERTSUdfRVhQT1JUIFhTRUNFbnYgeworCitwdWJsaWM6CisgICAgCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKyAgICAvL0B7CisJCisgICAgLyoqCisJICogXGJyaWVmIENvbnRydWN0b3IuCisJICoKKwkgKi8KKworCVhTRUNFbnYoWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICpkb2MpOworCVhTRUNFbnYoY29uc3QgWFNFQ0VudiAmIHRoZU90aGVyKTsKKwl2aXJ0dWFsIH5YU0VDRW52KCk7CisKKyAgICAvL0B9CisJCisJLyoqIEBuYW1lIFByZWZpeCBoYW5kbGluZy4gKi8KKwkvL0B7CisKKwkvKioKKwkgICogXGJyaWVmIFNldCB0aGUgcHJlZml4IGJlIHVzZWQgZm9yIHRoZSBEU0lHIG5hbWVzcGFjZS4KKwkgICoKKwkgICogPHA+V2hlbiB0aGUgWFNFQyBsaWJyYXJ5IGNyZWF0ZXMgWE1MIEVsZW1lbnQgbm9kZXMsIGl0IHVzZXMgdGhlIHByZWZpeCBoZXJlCisJICAqIGZvciBhbGwgbm9kZXMgY3JlYXRlZC4gIEJ5IGRlZmF1bHQsIHRoZSBsaWJyYXJ5IGFzc3VtZXMgdGhhdCB0aGUgZGVmYXVsdAorCSAgKiBuYW1lc3BhY2UgaXMgdXNlZC48L3A+CisJICAqCisJICAqIDxwPlRoZSAjY3JlYXRlQmxhbmtTaWduYXR1cmUgZnVuY3Rpb24gd2lsbCB1c2UgdGhpcyBwcmVmaXggdG8gc2V0dXAgdGhlCisJICAqIGRzaWcgbmFtZXNwYWNlLiAgRS5nLiAoYXNzdW1pbmcgYSBjYWxsIGhhcyBiZWVuIG1hZGUgdG8gc2V0IHRoZSBwcmVmaXggdG8gImRzIikKKwkgICogdGhlIFw8U2lnbmF0dXJlXD4gZWxlbWVudCB3aWxsIGhhdmUgYSBuYW1lc3BhY2UgYXR0cmlidXRlIGFkZGVkIG9mPC9wPgorCSAgKgorCSAgKiA8cD54bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3A+CisJICAqCisJICAqIDxwPklmIG5vIHByZWZpeCBoYXMgYmVlbiBzZXQsIHRoaXMgYXR0cmlidXRlIHdpbGwgYmUgc2V0IGFzIHRoZSBkZWZhdWx0IG5hbWVzcGFjZTwvcD4KKwkgICoKKwkgICogQHNlZSAjY3JlYXRlQmxhbmtTaWduYXR1cmUKKwkgICogQHBhcmFtIHByZWZpeCBUaGUgVVRGLTE2IGVuY29kZWQgTlMgcHJlZml4IHRvIHVzZSBmb3IgdGhlIFhNTCAKKwkgICogRGlnaXRhbCBTaWduYXR1cmUgbm9kZXMKKwkgICovCisKKwl2b2lkIHNldERTSUdOU1ByZWZpeChjb25zdCBYTUxDaCAqIHByZWZpeCk7CisKKyAgICAvKioKKwkgICogXGJyaWVmIFNldCB0aGUgcHJlZml4IGJlIHVzZWQgZm9yIHRoZSBEU0lHIDEuMSBuYW1lc3BhY2UuCisJICAqCisJICAqIDxwPldoZW4gdGhlIFhTRUMgbGlicmFyeSBjcmVhdGVzIFhNTCBFbGVtZW50IG5vZGVzLCBpdCB1c2VzIHRoZSBwcmVmaXggaGVyZQorCSAgKiBmb3IgYWxsIG5vZGVzIGNyZWF0ZWQuICBCeSBkZWZhdWx0LCB0aGUgbGlicmFyeSBhc3N1bWVzIHRoYXQgdGhlIGRlZmF1bHQKKwkgICogbmFtZXNwYWNlIGlzIHVzZWQuPC9wPgorCSAgKgorCSAgKiBAcGFyYW0gcHJlZml4IFRoZSBVVEYtMTYgZW5jb2RlZCBOUyBwcmVmaXggdG8gdXNlIGZvciB0aGUgWE1MIAorCSAgKiBEaWdpdGFsIFNpZ25hdHVyZSAxLjEgbm9kZXMKKwkgICovCisKKwl2b2lkIHNldERTSUcxMU5TUHJlZml4KGNvbnN0IFhNTENoICogcHJlZml4KTsKKworCS8qKgorCSAgKiBcYnJpZWYgU2V0IHRoZSBwcmVmaXggYmUgdXNlZCBmb3IgdGhlIEV4Y2x1c2l2ZSBDYW5vbmljYWxpc2F0aW9uIG5hbWVzcGFjZS4KKwkgICoKKwkgICogVGhlIEV4Y2x1c2l2ZSBDYW5vbmljYWxpc2F0aW9uIHNwZWNpZmljYXRpb24gZGVmaW5lcyBhIG5ldyBuYW1lc3BhY2UgZm9yIHRoZQorCSAgKiBJbmNsdXNpdmVOYW1lc3BhY2VzIG5vZGUuICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgcHJlZml4CisJICAqIHRoYXQgdGhlIGxpYnJhcnkgd2lsbCB1c2Ugd2hlbiBjcmVhdGluZyBub2RlcyB3aXRoaW4gdGhpcyBuYW1lc3BhY2UuCisJICAqCisJICAqIDxwPnhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9wPgorCSAgKgorCSAgKiBJZiBubyBwcmVmaXggaXMgc2V0LCB0aGUgZGVmYXVsdCBuYW1lc3BhY2Ugd2lsbCBiZSB1c2VkCisJICAqCisJICAqIEBzZWUgI2NyZWF0ZUJsYW5rU2lnbmF0dXJlCisJICAqIEBwYXJhbSBwcmVmaXggVGhlIFVURi0xNiBlbmNvZGVkIE5TIHByZWZpeCB0byB1c2UgZm9yIHRoZSBYTUwgCisJICAqIEV4Y2x1c2l2ZSBDYW5vbmljYWxpc2F0aW9uIG5vZGVzCisJICAqLworCisJdm9pZCBzZXRFQ05TUHJlZml4KGNvbnN0IFhNTENoICogcHJlZml4KTsKKworCS8qKgorCSAgKiBcYnJpZWYgU2V0IHRoZSBwcmVmaXggYmUgdXNlZCBmb3IgdGhlIFhQYXRoLUZpbHRlcjIgbmFtZXNwYWNlLgorCSAgKgorCSAgKiBUaGUgWFBhdGhGaWx0ZXIgZGVmaW5pdGlvbiB1c2VzIGl0cyBvd24gbmFtZXNwYWNlLiAgVGhpcworCSAgKiBtZXRob2QgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBwcmVmaXggdGhhdCB0aGUgbGlicmFyeSB3aWxsIHVzZQorCSAgKiB3aGVuIGNyZWF0aW5nIGVsZW1lbnRzIGluIHRoaXMgbmFtZXNwYWNlCisJICAqCisJICAqIDxwPnhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA2L3htbGRzaWctZmlsdGVyMiI8L3A+CisJICAqCisJICAqIElmIG5vIHByZWZpeCBpcyBzZXQsIHRoZSBkZWZhdWx0IG5hbWVzcGFjZSB3aWxsIGJlIHVzZWQKKwkgICoKKwkgICogQHNlZSAjY3JlYXRlQmxhbmtTaWduYXR1cmUKKwkgICogQHBhcmFtIHByZWZpeCBUaGUgVVRGLTE2IGVuY29kZWQgTlMgcHJlZml4IHRvIHVzZSBmb3IgdGhlIFhQYXRoCisJICAqIGZpbHRlciBub2RlcworCSAgKi8KKworCXZvaWQgc2V0WFBGTlNQcmVmaXgoY29uc3QgWE1MQ2ggKiBwcmVmaXgpOworCisJLyoqCisJICogXGJyaWVmIFNldCBwcmVmaXggZm9yIFhFTkMgbm9kZXMKKwkgKgorCSAqIFNldCB0aGUgbmFtZXNwYWNlIHByZWZpeCB0aGUgbGlicmFyeSB3aWxsIHVzZSB3aGVuIGNyZWF0aW5nCisJICogbm9kZXMgaW4gdGhlIFhFTkMgbmFtZXNwYWNlCisJICovCisKKwl2b2lkIHNldFhFTkNOU1ByZWZpeChjb25zdCBYTUxDaCAqIHByZWZpeCk7CisKKwkvKioKKwkgKiBcYnJpZWYgU2V0IHByZWZpeCBmb3IgWEtNUyBub2RlcworCSAqCisJICogU2V0IHRoZSBuYW1lc3BhY2UgcHJlZml4IHRoZSBsaWJyYXJ5IHdpbGwgdXNlIHdoZW4gY3JlYXRpbmcKKwkgKiBub2RlcyBpbiB0aGUgWEtNUyBuYW1lc3BhY2UKKwkgKi8KKworCXZvaWQgc2V0WEtNU05TUHJlZml4KGNvbnN0IFhNTENoICogcHJlZml4KTsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIE5TIFByZWZpeCBiZWluZyB1c2VkIGZvciBEU0lHIGVsZW1lbnRzLgorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBidWZmZXIgaG9sZGluZyB0aGUgcHJlZml4CisJICogQHNlZSAjc2V0RFNJR05TUHJlZml4CisJICoKKwkgKi8KKworCWNvbnN0IFhNTENoICogZ2V0RFNJR05TUHJlZml4KCkgY29uc3Qge3JldHVybiBtcF9wcmVmaXhOUzt9CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBOUyBQcmVmaXggYmVpbmcgdXNlZCBmb3IgRFNJRyAxLjEgZWxlbWVudHMuCisJICoKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBob2xkaW5nIHRoZSBwcmVmaXgKKwkgKiBAc2VlICNzZXREU0lHMTFOU1ByZWZpeAorCSAqCisJICovCisKKwljb25zdCBYTUxDaCAqIGdldERTSUcxMU5TUHJlZml4KCkgY29uc3Qge3JldHVybiBtcF8xMVByZWZpeE5TO30KKworICAgIC8qKgorCSAqIFxicmllZiBHZXQgdGhlIE5TIGJlaW5nIHVzZWQgZm9yIEVDIG5vZGVzCisJICoKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBob2xkaW5nIHRoZSBwcmVmaXgKKwkgKiBAc2VlICNzZXRFQ05TUHJlZml4CisJICovCisKKwljb25zdCBYTUxDaCAqIGdldEVDTlNQcmVmaXgoKSBjb25zdCB7cmV0dXJuIG1wX2VjUHJlZml4TlM7fQorCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgTlMgYmVpbmcgdXNlZCBmb3IgWFBhdGggRmlsdGVyMiBub2RlcworCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBidWZmZXIgaG9sZGluZyB0aGUgcHJlZml4CisJICogQHNlZSAjc2V0WFBGTlNQcmVmaXgKKwkgKi8KKworCWNvbnN0IFhNTENoICogZ2V0WFBGTlNQcmVmaXgoKSBjb25zdCB7cmV0dXJuIG1wX3hwZlByZWZpeE5TO30KKworCS8qKgorCSAqIFxicmllZiBHZXQgbmFtZXNwYWNlIHByZWZpeCBmb3IgWEVOQyBub2RlcworCSAqCisJICogRmluZCB0aGUgc3RyaW5nIGJlaW5nIHVzZWQgYnkgdGhlIGxpYnJhcnkgdG8gcHJlZml4IG5vZGVzIGluIHRoZSAKKwkgKiB4ZW5jOiBuYW1lc3BhY2UuCisJICoKKwkgKiBAcmV0dXJucyBYRU5DIG5hbWVzcGFjZSBwcmVmaXgKKwkgKi8KKworCWNvbnN0IFhNTENoICogZ2V0WEVOQ05TUHJlZml4KHZvaWQpIGNvbnN0IHtyZXR1cm4gbXBfeGVuY1ByZWZpeE5TO30KKworCS8qKgorCSAqIFxicmllZiBHZXQgbmFtZXNwYWNlIHByZWZpeCBmb3IgWEtNUyBub2RlcworCSAqCisJICogRmluZCB0aGUgc3RyaW5nIGJlaW5nIHVzZWQgYnkgdGhlIGxpYnJhcnkgdG8gcHJlZml4IG5vZGVzIGluIHRoZSAKKwkgKiB4a21zOiBuYW1lc3BhY2UuCisJICoKKwkgKiBAcmV0dXJucyBYS01TIG5hbWVzcGFjZSBwcmVmaXgKKwkgKi8KKworCWNvbnN0IFhNTENoICogZ2V0WEtNU05TUHJlZml4KHZvaWQpIGNvbnN0IHtyZXR1cm4gbXBfeGttc1ByZWZpeE5TO30KKwkKKwkvL0B9CisKKwkvKiogQG5hbWUgUHJldHR5IFByaW50aW5nIEZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBTZXQgUHJldHR5IFByaW50IGZsYWcgCisJICoKKwkgKiBUaGUgcHJldHR5IHByaW50IGZsYWcgY29udHJvbHMgd2hldGhlciB0aGUgbGlicmFyeSB3aWxsIG91dHB1dAorCSAqIENSL0xGIGFmdGVyIHRoZSBlbGVtZW50cyBpdCBhZGRzIHRvIGEgZG9jdW1lbnQKKwkgKgorCSAqIEJ5IGRlZmF1bHQgdGhlIGxpYnJhcnkgd2lsbCBkbyBwcmV0dHkgcHJpbnRpbmcgKGZsYWcgaXMgdHJ1ZSkKKwkgKgorCSAqIEBwYXJhbSBmbGFnIFZhbHVlIHRvIHNldCB0aGUgZmxhZyAodHJ1ZSA9IGRvIHByZXR0eSBwcmludGluZykKKwkgKi8KKworCXZvaWQgc2V0UHJldHR5UHJpbnRGbGFnKGJvb2wgZmxhZykge21fcHJldHR5UHJpbnRGbGFnID0gZmxhZzt9CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBQcmV0dHlQcmludCBmbGFnCisJICoKKwkgKiBAcmV0dXJucyBUaGUgdmFsdWUgb2YgdGhlIHByZXR0eSBwcmludCBmbGFnCisJICovCisKKwlib29sIGdldFByZXR0eVByaW50RmxhZyh2b2lkKSBjb25zdCB7cmV0dXJuIG1fcHJldHR5UHJpbnRGbGFnO30KKworCS8qKgorCSAqIFxicmllZiBEbyBhIHByZXR0eSBwcmludCBvdXRwdXQKKwkgKgorCSAqIFRoZSBsaWJyYXJ5IGNhbGxzIHRoaXMgZnVuY3Rpb24gdG8gcGVyZm9ybSBDUi9MRiBvdXRwdXR0aW5nCisJICoKKwkgKiBBdCB0aGUgbW9tZW50IGh0aXMgaXMgcmVhbGx5IHJlZHVuZGFudCwgYnV0IGl0IGlzIG1vcmUgYSBob2xkZXIKKwkgKiBzbyB0aGF0IHdlIGNhbiBzZXQgdXAgc29tZXRoaW5nIGluIHRoZSBsaWJyYXJ5IHRvIGFsbG93IHVzZXJzCisJICogdG8gaW5zdGFsbCBhIHByZXR0eSBwcmludCBmdW5jdGlvbi4KKwkgKiAKKwkgKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGFwcGVuZCBwcmV0dHkgcHJpbnQgY29udGVudCB0bworCSAqLworCisJdm9pZCBkb1ByZXR0eVByaW50KFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICogbm9kZSkgY29uc3Q7CisKKwkvL0B9CisJCisJLyoqIEBuYW1lIEdlbmVyYWwgaW5mb3JtYXRpb24gZnVuY3Rpb25zICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmCisJICoKKwkgKiBHZXQgdGhlIERPTURvY3VtZW50IHRoYXQgdGhlIHN1cGVyIGNsYXNzIGlzIG9wZXJhdGluZyB3aXRoaW4uCisJICoKKwkgKiBNYWlubHkgdXNlZCBieSB0aGUgbGlicmFyeSBpdHNlbGYuCisJICoKKwkgKiBAcmV0dXJucyBUaGUgRE9NX0RvY3VtZW50IG5vZGUuCisJICovCisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBnZXRQYXJlbnREb2N1bWVudCgpIGNvbnN0CisJCXtyZXR1cm4gbXBfZG9jO30KKworCS8qKgorCSAqIFxicmllZgorCSAqCisJICogU2V0IHRoZSBET01Eb2N1bWVudCB0aGF0IHRoZSBzdXBlciBjbGFzcyBpcyBvcGVyYXRpbmcgd2l0aGluLgorCSAqCisJICogTWFpbmx5IHVzZWQgYnkgdGhlIGxpYnJhcnkgaXRzZWxmLgorCSAqCisJICogQHBhcmFtIGRvYyBUaGUgRG9jdW1lbnQgbm9kZS4KKwkgKi8KKworCXZvaWQgc2V0UGFyZW50RG9jdW1lbnQoWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogZG9jKQorCQl7bXBfZG9jID0gZG9jO30KKworCS8vQH0KKworCS8qKiBAbmFtZSBSZXNvbHZlciBtYW5pcHVsYXRpb24gKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgUmVnaXN0ZXIgYSBVUklSZXNvbHZlciAKKwkgKgorCSAqIFJlZ2lzdGVycyBhIFVSSVJlc29sdmVyIHRvIGJlIHVzZWQgYnkgdGhlIFNpZ25hdHVyZSB3aGVuIGRlcmVmZXJlbmNpbmcKKwkgKiBhIFVSSSBpbiBhIFJlZmVyZW5jZSBlbGVtZW50CisJICoKKwkgKi8KKworCXZvaWQgc2V0VVJJUmVzb2x2ZXIoWFNFQ1VSSVJlc29sdmVyICogcmVzb2x2ZXIpOworCisJLyoqCisJICogXGJyaWVmIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHJlc29sdmVyIGJlaW5nIHVzZWQKKwkgKgorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgVVJJUmVzb2x2ZXIgcmVnaXN0ZXJlZCBpbiB0aGlzIHNpZ25hdHVyZQorCSAqLworCisJWFNFQ1VSSVJlc29sdmVyICogZ2V0VVJJUmVzb2x2ZXIodm9pZCkgY29uc3Q7CisKKworCS8vQH0KKworCS8qKiBAbmFtZSBJRCBoYW5kbGluZyAqLworCQorCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBTZXQgSWQgZmluZGluZyBiZWhhdmlvdXIKKwkgKgorCSAqIFRoZSBsaWJyYXJ5IGRlLXJlZmVyZW5jZXMgIiNvYmoiIFVSSSByZWZlcmVuY2VzIHRvIElEIGF0dHJpYnV0ZXMgd2l0aGluCisJICogYSBET00gZG9jdW1lbnQuICBDdXJyZW50bHksIHRoZSBsaWJyYXJ5IGZpcnN0IHVzZXMgRE9NIGNhbGxzIHRvIGZpbmQgaWYKKwkgKiB0aGUgSWQgaGFzIGJlZW4gcHJvcGVybHkgc2V0IHdpdGhpbiB0aGUgZG9jdW1lbnQgdmlhIHRoZSBwYXJzZXIgb3Igb25lCisJICogb2YgdGhlIERPTSBMZXZlbCAzIGNhbGxzIHRvIHNldCBhbiBJZC4KKwkgKgorCSAqIElmIG5vIElkIGlzIGZvdW5kIG9mIHRoZSBjb3JyZWN0IG5hbWUsIHRoZSBsaWJyYXJ5IHRoZW4gc3RhcnRzIHNlYXJjaGluZworCSAqIGZvciBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gbmFtZSB3aXRoIHRoZSByZXF1aXJlZCB2YWx1ZS4gIFRoaXMgbGlzdCBkZWZhdWx0cworCSAqIHRvICJpZCIgYW5kICJJZCIsIGJ1dCBjYW4gYmUgbW9kaWZpZWQgdmlhIGEgY2FsbCB0byBhZGRJZEF0dHJpYnV0ZU5hbWUoKQorCSAqCisJICogVGhlIHNldElkQnlBdHRyaWJ1dGVOYW1lIGNhbGwgZW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgc2Vjb25kIHBhcnQgb2YgdGhlIElkCisJICogc2VhcmNoLiAgSS5lLiB3aGVuIHRoZSBJZCBkb2Vzbid0IGV4aXN0IGFzIGFuIGF0dHJpYnV0ZSBvZiBUeXBlPUlELCB3aGV0aGVyIG9yCisJICogbm90IHRvIHNlYXJjaCBmb3IgYW4gYXR0cmlidXRlIG9mIGEgbmFtZSBpbiB0aGUgbGlzdCBvZiBuYW1lcy4gIEJ5IGRlZmF1bHQKKwkgKiB0aGlzIGJlaGF2aW91ciBpcyBlbmFibGVkLgorCSAqCisJICogQHdhcm5pbmcgVGhpcyBpcyBjdXJyZW50bHkgZW5hYmxlZCBieSBkZWZhdWx0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQorCSAqIHJlYXNvbnMgb25seS4gIEZ1dHVyZSB2ZXJzaW9uIG1heSByZXZlcnNlIHRoaXMgYW5kIHNoaXAgZGlzYWJsZWQgYnkgZGVmYXVsdCwgYXMKKwkgKiB0aGlzIGJlaGF2aW91ciBpcyBhIHBvdGVudGlhbCBzZWN1cml0eSByaXNrLgorCSAqCisJICogQHBhcmFtIGZsYWcgRW5hYmxlICh0cnVlKSBvciBEaXNhYmxlIChmYWxzZSkgc2VhcmNoaW5nIGZvciBJZCBhdHRyaWJ1dGVzIGJ5IG5hbWUKKwkgKi8KKworCXZvaWQgc2V0SWRCeUF0dHJpYnV0ZU5hbWUoYm9vbCBmbGFnKTsKKworCS8qKgorCSAqIFxicmllZiBEZXRlcm1pbmUgSWQgZmluZGluZyBiZWhhdmlvdXIKKwkgKgorCSAqIEFsbG93cyBhIGNhbGxlciB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgbGlicmFyeSBpcyBjdXJyZW50bHkgc2VhcmNoaW5nIGZvcgorCSAqIElkIGF0dHJpYnV0ZXMgYnkgbmFtZQorCSAqCisJICogQHJldHVybnMgVGhlIHZhbHVlIG9mIHRoZSBJZEJ5QXR0cmlidXRlTmFtZSBmbGFnCisJICovCisKKwlib29sIGdldElkQnlBdHRyaWJ1dGVOYW1lKHZvaWQpIGNvbnN0OworCisJLyoqCisJICogXGJyaWVmIEFkZCBhbiBhdHRyaWJ1dGUgbmFtZSB0byBiZSBzZWFyY2hlZCBmb3Igd2hlbiBsb29raW5nIGZvciBJZCBhdHRyaWJ1dGVzCisJICoKKwkgKiBUaGlzIGFsbG93cyBhIHVzZXIgdG8gYWRkIGFuIGF0dHJpYnV0ZSBuYW1lIHRvIGJlIHVzZWQgdG8gaWRlbnRpZnkgSWQgYXR0cmlidXRlcworCSAqIHdoZW4gdGhleSBhcmUgbm90IHNldCB0byBiZSBvZiBUeXBlPUlEIGluIHRoZSBET00KKwkgKgorCSAqIEBub3RlIFR3byBuYW1lcyBhcmUgcmVnaXN0ZXJlZCBieSBkZWZhdWx0IC0gIklkIiBhbmQgImlkIi4gIFRoZXNlIGNhbiBiZQorCSAqIHJlbW92ZWQgYnkgY2FsbGluZyBkZXJlZ2lzdGVySWRBdHRyaWJ1dGVOYW1lCisJICoKKwkgKiBAcGFyYW0gbmFtZSBOYW1lIHRvIGFwcGVuZCB0byB0aGUgbGlzdCBvZiB0aG9zZSB1c2VkIHRvIGZpbmQgSWQgYXR0cmlidXRlcworCSAqLworCisJdm9pZCByZWdpc3RlcklkQXR0cmlidXRlTmFtZShjb25zdCBYTUxDaCAqIG5hbWUpOworCisJLyoqCisJICogXGJyaWVmIFJlbW92ZSBhbiBhdHRyaWJ1dGUgbmFtZSB0byBiZSBzZWFyY2hlZCBmb3Igd2hlbiBsb29raW5nIGZvciBJZCBhdHRyaWJ1dGVzCisJICoKKwkgKiBUaGlzIGFsbG93cyBhIHVzZXIgdG8gZGUtcmVnaXN0ZXIgYSBwYXJ0aWN1bGFyIG5hbWUgdG8gYmUgdXNlZCB0byBpZGVudGlmeSBJZAorCSAqIGF0dHJpYnV0ZXMuCisJICoKKwkgKiBAcGFyYW0gbmFtZSBOYW1lIHRvIHJlbW92ZSBmcm9tIHRoZSBsaXN0IG9mIHRob3NlIHVzZWQgdG8gZmluZCBJZCBhdHRyaWJ1dGVzCisJICogQHJldHVybnMgdHJ1ZSBpZiBmb3VuZCBhbmQgcmVtb3ZlZCwgZmFsc2UgaWYgd2FzIG5vdCBpbiB0aGUgbGlzdAorCSAqLworCisJYm9vbCBkZXJlZ2lzdGVySWRBdHRyaWJ1dGVOYW1lKGNvbnN0IFhNTENoICogbmFtZSk7CisKKwkvKioKKwkgKiBcYnJpZWYgRGV0ZXJtaW5lIGlmIGFuIGF0dHJpYnV0ZSBuYW1lIGlzIHJlZ2lzdGVyZWQgYXMgYW4gSWQgbmFtZQorCSAqCisJICogQHBhcmFtIG5hbWUgU3RyaW5nIHRvIGNoZWNrIGluIHRoZSBpZEF0dHJpYnV0ZU5hbWUgbGlzdAorCSAqIEByZXR1cm5zIHRydWUgaWYgdGhlIHBhc3NlZCBpbiBuYW1lIGlzIHJlZ2lzdGVyZWQgYXMgYW4gQXR0cmlidXRlIG5hbWUKKwkgKi8KKworCWJvb2wgaXNSZWdpc3RlcmVkSWRBdHRyaWJ1dGVOYW1lKGNvbnN0IFhNTENoICogbmFtZSkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgQWRkIGFuIGF0dHJpYnV0ZSBuYW1lIGFuZCBuYW1lc3BhY2UgdG8gYmUgc2VhcmNoZWQgZm9yIHdoZW4gbG9va2luZyBmb3IgCisJICogSWQgYXR0cmlidXRlcworCSAqCisJICogVGhpcyBhbGxvd3MgYSB1c2VyIHRvIGFkZCBhbiBhdHRyaWJ1dGUgbmFtZSBpbiBhIHBhcmNpY3VsYXIgbmFtZXNwYWNlIHRvIAorCSAqIGJlIHVzZWQgdG8gaWRlbnRpZnkgSWQgYXR0cmlidXRlcworCSAqIHdoZW4gdGhleSBhcmUgbm90IHNldCB0byBiZSBvZiBUeXBlPUlEIGluIHRoZSBET00KKwkgKgorCSAqIEBub3RlIFR3byBuYW1lcyBhcmUgcmVnaXN0ZXJlZCBieSBkZWZhdWx0IC0gIklkIiBhbmQgImlkIi4gIFRoZXNlIGNhbiBiZQorCSAqIHJlbW92ZWQgYnkgY2FsbGluZyBkZXJlZ2lzdGVySWRBdHRyaWJ1dGVOYW1lCisJICoKKwkgKiBAcGFyYW0gbnMgTmFtZXNwYWNlIFVSSSBpbiB3aGljaCBhdHRyaWJ1dGUgYXBwZWFycworCSAqIEBwYXJhbSBuYW1lIE5hbWUgdG8gYXBwZW5kIHRvIHRoZSBsaXN0IG9mIHRob3NlIHVzZWQgdG8gZmluZCBJZCBhdHRyaWJ1dGVzCisJICovCisKKwl2b2lkIHJlZ2lzdGVySWRBdHRyaWJ1dGVOYW1lTlMoY29uc3QgWE1MQ2ggKiBucywgY29uc3QgWE1MQ2ggKiBuYW1lKTsKKworCS8qKgorCSAqIFxicmllZiBSZW1vdmUgYW4gYXR0cmlidXRlIG5hbWUgYW5kIG5hbWVzcGFjZSB0byBiZSBzZWFyY2hlZCBmb3Igd2hlbiAKKwkgKiBsb29raW5nIGZvciBJZCBhdHRyaWJ1dGVzCisJICoKKwkgKiBUaGlzIGFsbG93cyBhIHVzZXIgdG8gZGUtcmVnaXN0ZXIgYSBwYXJ0aWN1bGFyIG5hbWUgdG8gYmUgdXNlZCB0byBpZGVudGlmeSBJZAorCSAqIGF0dHJpYnV0ZXMuCisJICoKKwkgKiBAcGFyYW0gbnMgTmFtZXNwYWNlIGluIHdoaWNoIGF0dHJpYnV0ZSByZXNpZGVzCisJICogQHBhcmFtIG5hbWUgTmFtZSB0byByZW1vdmUgZnJvbSB0aGUgbGlzdCBvZiB0aG9zZSB1c2VkIHRvIGZpbmQgSWQgYXR0cmlidXRlcworCSAqIEByZXR1cm5zIHRydWUgaWYgZm91bmQgYW5kIHJlbW92ZWQsIGZhbHNlIGlmIHdhcyBub3QgaW4gdGhlIGxpc3QKKwkgKi8KKworCWJvb2wgZGVyZWdpc3RlcklkQXR0cmlidXRlTmFtZU5TKGNvbnN0IFhNTENoICpucywgY29uc3QgWE1MQ2ggKiBuYW1lKTsKKworCS8qKgorCSAqIFxicmllZiBEZXRlcm1pbmUgaWYgYW4gYXR0cmlidXRlIG5hbWUgYW5kIG5hbWVzcGFjZSBpcyByZWdpc3RlcmVkIAorCSAqIGFzIGFuIElkIG5hbWUKKwkgKgorCSAqIEBwYXJhbSBucyBOYW1lc3BhY2UgaW4gd2hpY2ggYXR0cmlidXRlIHJlc2lkZXMKKwkgKiBAcGFyYW0gbmFtZSBTdHJpbmcgdG8gY2hlY2sgaW4gdGhlIGlkQXR0cmlidXRlTmFtZSBsaXN0CisJICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgcGFzc2VkIGluIG5hbWUgaXMgcmVnaXN0ZXJlZCBhcyBhbiBBdHRyaWJ1dGUgbmFtZQorCSAqLworCisJYm9vbCBpc1JlZ2lzdGVyZWRJZEF0dHJpYnV0ZU5hbWVOUyhjb25zdCBYTUxDaCAqIG5zLCBjb25zdCBYTUxDaCAqIG5hbWUpIGNvbnN0OworCisJLyoqCisJICogXGJyaWVmIEdldCBudW1iZXIgb2YgQXR0cmlidXRlIE5hbWVzIHJlZ2lzdGVyZWQgYXMgSWQgYXR0cmlidXRlcworCSAqCisJICogQHJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgbGlzdAorCSAqLworCisJaW50IGdldElkQXR0cmlidXRlTmFtZUxpc3RTaXplKCkgY29uc3Q7CisKKwkvKgorCSAqIFxicmllZiBHZXQgYW4gaW5kZXhlZCBhdHRyaWJ1dGUgbmFtZSB0byB1c2UgYXMgYW4gSWQKKwkgKgorCSAqIFJldHVybnMgdGhlIGl0ZW0gYXQgaW5kZXggcG9pbnQgaW4gdGhlIGxpc3QKKwkgKgorCSAqIEBub3RlIFRoaXMgaXMgYW4gaW50ZXJuYWwgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5CisJICoKKwkgKiBAcGFyYW0gaW5kZXggUG9pbnRlciBpbnRvIHRoZSBsaXN0CisJICogQHJldHVybnMgVGhlIGluZGljYXRlZCBlbGVtZW50IG9yIE5VTEwgaWYgaXQgZG9lcyBub3QgZXhpc3QuCisJICovCisKKwljb25zdCBYTUxDaCAqIGdldElkQXR0cmlidXRlTmFtZUxpc3RJdGVtKGludCBpbmRleCkgY29uc3Q7CisKKwkvKgorCSAqIFxicmllZiBHZXQgYW4gaW5kZXhlZCBhdHRyaWJ1dGUgTmFtZXNwYWNlIHRvIHVzZSBhcyBhbiBJZAorCSAqCisJICogUmV0dXJucyB0aGUgaXRlbSBhdCBpbmRleCBwb2ludCBpbiB0aGUgbGlzdAorCSAqCisJICogQG5vdGUgVGhpcyBpcyBhbiBpbnRlcm5hbCBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkKKwkgKgorCSAqIEBwYXJhbSBpbmRleCBQb2ludGVyIGludG8gdGhlIGxpc3QKKwkgKiBAcmV0dXJucyBUaGUgaW5kaWNhdGVkIGVsZW1lbnQgb3IgTlVMTCBpZiBpdCBkb2VzIG5vdCBleGlzdC4KKwkgKi8KKworCWNvbnN0IFhNTENoICogZ2V0SWRBdHRyaWJ1dGVOYW1lTGlzdEl0ZW1OUyhpbnQgaW5kZXgpIGNvbnN0OworCisJLyoKKwkgKiBcYnJpZWYgRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGluZGV4ZWQgaXRlbSBpcyBuYW1lc3BhY2UgYXdhcmUKKwkgKgorCSAqIFJldHVybnMgdGhlIGl0ZW0gYXQgaW5kZXggcG9pbnQgaW4gdGhlIGxpc3QKKwkgKgorCSAqIEBub3RlIFRoaXMgaXMgYW4gaW50ZXJuYWwgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5CisJICoKKwkgKiBAcGFyYW0gaW5kZXggUG9pbnRlciBpbnRvIHRoZSBsaXN0CisJICogQHJldHVybnMgVGhlIGluZGljYXRlZCBlbGVtZW50IG9yIE5VTEwgaWYgaXQgZG9lcyBub3QgZXhpc3QuCisJICovCisKKwlib29sIGdldElkQXR0cmlidXRlTmFtZUxpc3RJdGVtSXNOUyhpbnQgaW5kZXgpIGNvbnN0OworCisJLy9AfQorCQorCS8qKiBAbmFtZSBGb3JtYXR0ZXJzICovCisJLy9AeworCisJLyoqIAorCSAqIFxicmllZiBHZXQgYSBzYWZlQnVmZmVyRm9ybWF0dGVyCisJICoKKwkgKiBSZXR1cm4gYSBVVEYtOCBzYWZlQnVmZmVyIGZvcm1hdHRlcgorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIGEgc2FmZUJ1ZmZlciBmb3JtYXR0ZXIKKwkgKi8KKworCVhTRUNTYWZlQnVmZmVyRm9ybWF0dGVyICogZ2V0U0JGb3JtYXR0ZXIodm9pZCkgY29uc3Qge3JldHVybiBtcF9mb3JtYXR0ZXI7fQorCisJLy9AfQorCitwcml2YXRlOgorCisJc3RydWN0IElkQXR0cmlidXRlU3RydWN0OworCXR5cGVkZWYgc3RydWN0IElkQXR0cmlidXRlU3RydWN0IElkQXR0cmlidXRlVHlwZTsKKworCisjaWYgZGVmaW5lZChYU0VDX05PX05BTUVTUEFDRVMpCisJdHlwZWRlZiB2ZWN0b3I8SWRBdHRyaWJ1dGVUeXBlICo+CQlJZE5hbWVWZWN0b3JUeXBlOworI2Vsc2UKKwl0eXBlZGVmIHN0ZDo6dmVjdG9yPElkQXR0cmlidXRlVHlwZSAqPglJZE5hbWVWZWN0b3JUeXBlOworI2VuZGlmCisKKwkvLyBJbnRlcm5hbCBmdW5jdGlvbnMKKworCVhTRUNTYWZlQnVmZmVyRm9ybWF0dGVyCQkqIG1wX2Zvcm1hdHRlcjsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQJCQkJCQorCQkJCQkJCQkqIG1wX2RvYzsKKwkvLyBGb3IgY3JlYXRpbmcgZnVuY3Rpb25zCisJWE1MQ2ggCQkJCQkJKiBtcF9wcmVmaXhOUzsKKyAgICBYTUxDaCAgICAgICAgICAgICAgICAgICAgICAgKiBtcF8xMVByZWZpeE5TOworCVhNTENoCQkJCQkJKiBtcF9lY1ByZWZpeE5TOworCVhNTENoCQkJCQkJKiBtcF94cGZQcmVmaXhOUzsKKwlYTUxDaAkJCQkJCSogbXBfeGVuY1ByZWZpeE5TOworCVhNTENoCQkJCQkJKiBtcF94a21zUHJlZml4TlM7CisKKwkvLyBSZXNvbHZlcnMKKwlYU0VDVVJJUmVzb2x2ZXIJCQkJKiBtcF9VUklSZXNvbHZlcjsKKworCS8vIEZsYWdzCisJYm9vbAkJCQkJCW1fcHJldHR5UHJpbnRGbGFnOworCWJvb2wJCQkJCQltX2lkQnlBdHRyaWJ1dGVOYW1lRmxhZzsKKworCS8vIElkIGhhbmRsaW5nCisJSWROYW1lVmVjdG9yVHlwZQkJCW1faWRBdHRyaWJ1dGVOYW1lTGlzdDsJCisKKwlYU0VDRW52KCk7CisKKwkvKlxAfSovCit9OworCisjZW5kaWYgLyogWFNFQ0VOVl9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmNwcCBiL2Mvc3JjL2ZyYW1ld29yay9YU0VDRXJyb3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MzliOGEKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmNwcApAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ0Vycm9yIDo9IEdlbmVyYWwgY2xhc3MgZm9yIGhhbmRsaW5nIGVycm9ycworICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJRCQKKyAqCisgKiAkTE9HJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisvLyBSZWFsIGRlZmluaXRpb24gb2Ygc3RyaW5ncworCitjb25zdCBjaGFyICogWFNFQ0V4Y2VwdGlvblN0cmluZ3MgW10gPSB7CisKKwkiTm8gRXJyb3IiLAorCSJFcnJvciBhbGxvY2F0aW5nIG1lbW9yeSIsCisJIk5vIFRFWFQgY2hpbGQgZm91bmQgdW5kZXIgPERpZ2VzdFZhbHVlPiBlbGVtZW50IiwKKwkiVW5rbm93biBBdHRyaWJ1dGUgZm91bmQgaW4gRFNJRyBlbGVtZW50IiwKKwkiRGlkIG5vdCBmaW5kIGV4cGVjdGVkIERTSUcgY2hpbGQgZWxlbWVudCIsCisJIlVua25vd24gYWxnb3JpdGhtIGZvdW5kIGluIDxUcmFuc2Zvcm0+IGVsZW1lbnQiLAorCSJUcmFuc2Zvcm0gaW5wdXQvb3V0cHV0IG1pc21hdGNoIiwKKwkiUmVmZXJlbmNlZCBJRCBpcyBub3QgaW4gRE9NIERvY3VtZW50IiwKKwkiVW5zdXBwb3J0ZWQgWHBvaW50ZXIgZXhwcmVzc2lvbiBmb3VuZCIsCisJIkFuIGVycm9yIG9jY3VyZWQgZHVyaW5nIGFuIFhQYXRoIGV2YWxhdXRpb24iLAorCSJBbiBlcnJvciBvY2N1cmVkIGR1cmluZyBhbiBYU0xUIHRyYW5zZm9ybWF0aW9uIiwKKwkiVGhlIGNhbGxlZCBmZWF0dXJlIGlzIHVuc3VwcG9ydGVkIChnZW5lcmFsIGVycm9yKSIsCisJIkF0dGVtcHRlZCB0byBsb2FkIGFuIGVtcHR5IHNpZ25hdHVyZSBub2RlIiwKKwkiQXR0ZW1wdGVkIHRvIGxvYWQgYSBub24gc2lnbmF0dXJlIERPTSBOb2RlIGFzIGEgPFNpZ25hdHVyZT4iLAorCSJVbmtub3duIGNhbm9uaWNhbGl6YXRpb24gYWxnb3JpdGhtIHJlZmVyZW5jZWQiLAorCSJVbmtub3duIHNpZ25hdHVyZSBhbmQgaGFzaGluZyBhbGdvcml0aG1zIHJlZmVyZW5jZWQiLAorCSJBdHRlbXB0ZWQgdG8gbG9hZCBhbiBlbXB0eSBYNTA5RGF0YSBOb2RlIiwKKwkiQXR0ZW1wdGVkIHRvIGxvYWQgYSBub24gWDUwOURhdGEgbm9kZSBhcyBhIDxYNTA5RGF0YT4iLAorCSJFcnJvciBvY2N1cnJlZCBpbiBPcGVuU1NMIHJvdXRpbmUiLAorCSJFcnJvciBvY2N1cmVkIHdoZW4gYXR0ZW1wdGluZyB0byBWZXJpZnkgYSBTaWduYXR1cmUiLAorCSJBdHRlbXB0ZWQgdG8gbG9hZCBhbiBlbXB0eSBTaWduZWRJbmZvIG5vZGUiLAorCSJBdHRlbXB0ZWQgdG8gbG9hZCBhIG5vbiBTaWduZWRJbmZvIG5vZGUgYXMgYSA8U2lnbmVkSW5mbz4iLAorCSJFeHBlY3RlZCBVUkkgYXR0cmlidXRlIGluIDxSRUZFUkVOQ0U+IG5vZGUiLAorCSJBIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQgd2l0aG91dCBsb2FkKCkgYmVpbmcgY2FsbGVkIGZpcnN0IiwKKwkiQW4gZXJyb3Igb2NjdXJyZWQgd2hlbiBpbnRlcmFjdGluZyB3aXRoIHRoZSBDcnlwdG8gUHJvdmlkZXIiLAorCSJBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcHJvY2Vzc2luZyBvZiA8S2V5SW5mbz4gbGlzdCIsCisJIkFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBhIHNpZ25pbmcgb3BlcmF0aW9uIiwKKwkiQXR0ZW1wdGVkIHRvIGxvYWQgYW4gZW1wdHkgS2V5SW5mb05hbWUgbm9kZSIsCisJIkF0dGVtcHRlZCB0byBsb2FkIGEgbm9uIDxLZXlOYW1lPiBub2RlIGFzIGEgS2V5TmFtZSIsCisJIlVua25vd24ga2V5IHR5cGUgZm91bmQgaW4gPEtleVZhbHVlPiBlbGVtZW50IiwKKwkiQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHRoZSBjcmVhdGlvbiBvZiBhIERTSUdTaWduYXR1cmUgb2JqZWN0IiwKKwkiQW4gZXJyb3Igb2NjdXJyZWQgd2hlbiB0cnlpbmcgdG8gb3BlbiBhIFVSSSBpbnB1dCBzdHJlYW0iLAorCSJBbiBlcnJvciBvY2N1cnJlZCBpbiB0aGUgWFNFQyBQcm92aWRlciIsCisJIkNBVEFTVFJPUEhFIC0gQW4gZXJyb3IgaGFzIGJlZW4gZm91bmQgaW4gaW50ZXJuYWwgc3RhdGUiLAorCSJBbiBlcnJvciBvY2N1cnJlZCBpbiB0aGUgRW52ZWxvcGUgVHJhbnNmb3JtIGhhbmRsZXIiLAorCSJBIGZ1bmN0aW9uIGhhcyBiZWVuIGNhbGxlZCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBjb21waWxlZCBsaWJyYXJ5IiwKKwkiQW4gZXJyb3Igb2NjdXJlZCBpbiBhIERTSUdUcmFuc2Zvcm0gaG9sZGVyIiwKKwkiQW4gZXJyb3Igb2NjdXJlZCBpbiBhIHNhZmUgYnVmZmVyIiwKKwkiQW4gZXJyb3Igb2NjdXJyZWQgcHJvY2Vzc2luZyBhbiBIVFRQIHJlcXVlc3QgdmlhIGludGVybmFsIHJlc29sdmVyIiwKKwkiQW4gZXJyb3Igb2NjdXJyZWQgZGVjb2RpbmcgYSBEU0lHIGVuY29kZWQgRGlzdGluZ3Vpc2hlZCBuYW1lIiwKKwkiQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHByb2Nlc3Npbmcgb2YgYW4gRW5jcnlwdGVkW0RhdGF8S2V5XSBub2RlIiwKKwkiRGlkIG5vdCBmaW5kIGV4cGVjdGVkIFhFTkMgY2hpbGQgZWxlbWVudCIsCisJIkFuIGVycm9yIG9jY3VycmVkIHByb2Nlc3NpbmcgYSBDaXBoZXJEYXRhIG5vZGUiLAorCSJBbiBlcnJvciBvY2N1cnJlZCBwcm9jZXNzaW5nIGEgQ2lwaGVyVmFsdWUgbm9kZSIsCisJIkFuIGVycm9yIG9jY3VycmVkIGluIHRoZSBYU0VDQ2lwaGVyIHByb2Nlc3NvciIsCisJIkFuIGVycm9yIG9jY3VycmVkIGluIHRoZSBBbGdvcml0aG0gTWFwcGVyIiwKKwkiQW4gZXJyb3Igb2NjdXJyZWQgcHJvY2Vzc2luZyBhbiBFbmNyeXB0aW9uTWV0aG9kIG5vZGUiLAorCSJBbiBlcnJvciBvY2N1cnJlZCBwcm9jZXNzaW5nIGEgQ2lwaGVyUmVmZXJlbmNlIG5vZGUiLAorCSJBbiBlcnJvciBvY2N1cnJlZCBwcm9jZXNzaW5nIGFuIE9iamVjdCBub2RlIiwKKwkiQW4gZXJyb3Igb2NjdXJyZWQgaW4gWEtNUyBwcm9jZXNzaW5nIiwKKwkiQW4gZXhwZWN0ZWQgWEtNUyBET00gbm9kZSBvciBhdHRyaWJ1dGUgd2FzIG5vdCBmb3VuZCIsCisJIkFuIGVycm9yIG9jY3VycmVkIHByb2Nlc3NpbmcgYSBNZXNzYWdlQWJzdHJhY3RUeXBlIG9iamVjdCIsCisJIkFuIGVycm9yIG9jY3VycmVkIHByb2Nlc3NpbmcgYSBSZXF1ZXN0QWJzdHJhY3RUeXBlIG9iamVjdCIsCisJIkFuIGVycm9yIG9jY3VycmVkIHByb2Nlc3NpbmcgYSBSZXN1bHRUeXBlIG9iamVjdCIsCisJIkFuIGVycm9yIG9jY3VycmVkIHByb2Nlc3NpbmcgYSBTdGF0dXMgb2JqZWN0IiwKKwkiVW5rbm93biBFcnJvciB0eXBlIiwKKworfTsKKy8vY29uc3QgY2hhciAqKiBYU0VDRXhjZXB0aW9uU3RyaW5ncyA9IFhTRUNFeGNlcHRpb25TdHJpbmdzQXJyYXk7CisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvYy9zcmMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHAgYi9jL3NyYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmRiMTU1Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHAKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ0Vycm9yIDo9IEdlbmVyYWwgaW5jbHVkZSBmaWxlIGZvciBoYW5kbGluZyBlcnJvcnMKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0V4Y2VwdGlvbi5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b0V4Y2VwdGlvbi5ocHA+CisjaW5jbHVkZSA8bmV3PgorCisvKioKKyAqIEBkZWZncm91cCBwdWJzaWcgTWFpbiBTaWduYXR1cmUgQVBJCisgKiBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHRoZSBtYWluIGNsYXNzZXMgYW5kIGludGVyZmFjZXMgbmVjZXNzYXJ5IGZvciAKKyAqIHByb2dyYW1taW5nIHdpdGggdGhlIFhNTC1TZWN1cml0eS1DIGxpYnJhcnkuCisgKiBAeworICovCisKKy8qKgorICogXGJyaWVmIEVycm9yIHN0cmluZ3MKKyAqCisgKiBBbiBhcnJheSB0aGF0IGNhbiBiZSB1c2VkIHRvIG9idGFpbiBhbiBlcnJvciBzdHJpbmcgYXNzb2NpYXRlZCB3aXRoCisgKiBhbiBleGNlcHRpb24gbnVtYmVyLgorICovCisKK2V4dGVybiBjb25zdCBjaGFyICogWFNFQ0V4Y2VwdGlvblN0cmluZ3MgW107CisKKy8qKiBAfSAqLworCisjaWYgZGVmaW5lZCAoX1dJTjMyKSAmJiBkZWZpbmVkIChfREVCVUcpICYmIGRlZmluZWQgKF9YU0VDX0RPX01FTURFQlVHX09MRCkKKworIwlkZWZpbmUgWFNFQ25ldyggYSwgYiApIFwKKwl0cnkge1wKKwkJaWYgKCggYSA9IERFQlVHX05FVyBiICkgPT0gTlVMTCkgeyBcCisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uIChYU0VDRXhjZXB0aW9uOjpNZW1vcnlBbGxvY2F0aW9uRmFpbCk7IFwKKwkJfVwKKwl9IFwKKwljYXRjaCAoWFNFQ0NyeXB0b0V4Y2VwdGlvbiAmZSkgXAorCXtcCisJCXRocm93IFhTRUNFeGNlcHRpb24gKFhTRUNFeGNlcHRpb246OkludGVybmFsRXJyb3IsIGUuZ2V0TXNnKCkpOyBcCisJfSBcCisJY2F0Y2ggKHN0ZDo6YmFkX2FsbG9jJikgeyBcCisJCXRocm93IFhTRUNFeGNlcHRpb24gKFhTRUNFeGNlcHRpb246Ok1lbW9yeUFsbG9jYXRpb25GYWlsKTsgXAorCX0KKworI2Vsc2UgCisKKyMJZGVmaW5lIFhTRUNuZXcoYSwgYikgXAorCXRyeSB7XAorCQlpZiAoKGEgPSBuZXcgYikgPT0gTlVMTCkgeyBcCisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uIChYU0VDRXhjZXB0aW9uOjpNZW1vcnlBbGxvY2F0aW9uRmFpbCk7IFwKKwkJfSBcCisJfSBcCisJY2F0Y2ggKFhTRUNDcnlwdG9FeGNlcHRpb24gJmUpIFwKKwl7XAorCQl0aHJvdyBYU0VDRXhjZXB0aW9uIChYU0VDRXhjZXB0aW9uOjpJbnRlcm5hbEVycm9yLCBlLmdldE1zZygpKTsgXAorCX0gXAorCWNhdGNoIChzdGQ6OmJhZF9hbGxvYyYpIHsgXAorCQl0aHJvdyBYU0VDRXhjZXB0aW9uIChYU0VDRXhjZXB0aW9uOjpNZW1vcnlBbGxvY2F0aW9uRmFpbCk7IFwKKwl9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYy9zcmMvZnJhbWV3b3JrL1hTRUNFeGNlcHRpb24uY3BwIGIvYy9zcmMvZnJhbWV3b3JrL1hTRUNFeGNlcHRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0ZTNhYWYKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9mcmFtZXdvcmsvWFNFQ0V4Y2VwdGlvbi5jcHAKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ0V4Y2VwdGlvbjo9IEhvdyB3ZSB0aHJvdyBleGNlcHRpb25zIGluIFhTRUMKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSUQkCisgKgorICogJExPRyQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDRE9NVXRpbHMuaHBwPgorCitYU0VDRXhjZXB0aW9uOjpYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb25UeXBlIGVOdW0sIGNvbnN0IFhNTENoICogaW5Nc2cpIHsKKworCWlmIChlTnVtID4gVW5rbm93bkVycm9yKQorCQl0eXBlID0gVW5rbm93bkVycm9yOworCWVsc2UKKwkJdHlwZSA9IGVOdW07CisKKwlpZiAoaW5Nc2cgIT0gTlVMTCkgeworCQltc2cgPSBYTUxTdHJpbmc6OnJlcGxpY2F0ZShpbk1zZyk7CisJfQorCWVsc2UgeworCQltc2cgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShYU0VDRXhjZXB0aW9uU3RyaW5nc1t0eXBlXSk7CisJfQorCit9CisKK1hTRUNFeGNlcHRpb246OlhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvblR5cGUgZU51bSwgY29uc3QgY2hhciAqIGluTXNnKSB7CisKKwlpZiAoZU51bSA+IFVua25vd25FcnJvcikKKwkJdHlwZSA9IFVua25vd25FcnJvcjsKKwllbHNlCisJCXR5cGUgPSBlTnVtOworCisJaWYgKGluTXNnICE9IE5VTEwpIHsKKwkJbXNnID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoaW5Nc2cpOworCX0KKwllbHNlIHsKKwkJbXNnID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoWFNFQ0V4Y2VwdGlvblN0cmluZ3NbdHlwZV0pOworCX0KKworfQorCitYU0VDRXhjZXB0aW9uOjpYU0VDRXhjZXB0aW9uKGNvbnN0IFhTRUNFeGNlcHRpb24gJnRvQ29weSkgeworCisJLy8gQ29weSBDb25zdHJ1Y3RvcgorCisJdHlwZSA9IHRvQ29weS50eXBlOworCWlmICh0b0NvcHkubXNnID09IE5VTEwpCisJCW1zZyA9IE5VTEw7CisJZWxzZSB7CisJCW1zZyA9IFhNTFN0cmluZzo6cmVwbGljYXRlKHRvQ29weS5tc2cpOworCX0KK30KKworWFNFQ0V4Y2VwdGlvbjo6flhTRUNFeGNlcHRpb24oKSB7CisKKwlpZiAobXNnICE9IE5VTEwpCisJCVhTRUNfUkVMRUFTRV9YTUxDSChtc2cpOworCit9CisKK2NvbnN0IFhNTENoICogWFNFQ0V4Y2VwdGlvbjo6Z2V0TXNnKHZvaWQpIHsKKworCXJldHVybiBtc2c7CisKK30KKworWFNFQ0V4Y2VwdGlvbjo6WFNFQ0V4Y2VwdGlvblR5cGUgWFNFQ0V4Y2VwdGlvbjo6Z2V0VHlwZSh2b2lkKSB7CisKKwlyZXR1cm4gdHlwZTsKKworfQpkaWZmIC0tZ2l0IGEvYy9zcmMvZnJhbWV3b3JrL1hTRUNFeGNlcHRpb24uaHBwIGIvYy9zcmMvZnJhbWV3b3JrL1hTRUNFeGNlcHRpb24uaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjZmU1MDgKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9mcmFtZXdvcmsvWFNFQ0V4Y2VwdGlvbi5ocHAKQEAgLTAsMCArMSwyMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNFeGNlcHRpb246PSBIb3cgd2UgdGhyb3cgZXhjZXB0aW9ucyBpbiBYU0VDCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhTRUNFWENFUFRJT05fSU5DTFVERQorI2RlZmluZSBYU0VDRVhDRVBUSU9OX0lOQ0xVREUKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKworLyoqCisgKiBAYWRkdG9ncm91cCBwdWJzaWcKKyAqIEB7CisgKi8KKworLyoqCisgKiBAYnJpZWYgRXhjZXB0aW9uIENsYXNzLgorICoKKyAqIDxwPlRoaXMgY2xhc3MgaXMgdXNlZCBmb3IgYWxsIEV4Y2VwdGlvbnMgcmFpc2VkIGJ5IHRoZSBYU0VDIGxpYnJhcnkuCisgKiBJdCBob2xkcyBhICJ0eXBlIiBudW1iZXIgdGhhdCBjYW4gYmUgdXNlZCB0byBmaW5kIHRoZSBnZW5lcmljIHR5cGUKKyAqIG9mIHRoZSBleGNlcHRpb24sIGFzIHdlbGwgYXMgYSBYTUxDaCBzdHJpbmcgdGhhdCBob2xkcyBhIGRlc2NyaXB0aW9uIG9mCisgKiB0aGUgZXJyb3I8L3A+CisgKgorICovCisKK2NsYXNzIERTSUdfRVhQT1JUIFhTRUNFeGNlcHRpb24geworCitwdWJsaWM6CisKKwkvKioKKwkgKiBcYnJpZWYgVHlwZSBvZiBFeGNlcHRpb24gdGhyb3duLgorCSAqCisJICogVGhpcyBlbnVtZXJhdGVkIHR5cGUgaXMgdXNlZCB0byBpbmZvcm0gdGhlIHJlY2lwaWVudCBvZiB0aGUgCisJICogZXhjZXB0aW9uIHdoYXQgZ2VuZXJpYyBlcnJvciBjYXVzZWQgaXQgdG8gYmUgcmFpc2VkLgorCSAqLworCisJZW51bSBYU0VDRXhjZXB0aW9uVHlwZSB7CisKKwkJTm9uZQkJCQkJCT0gMCwKKwkJTWVtb3J5QWxsb2NhdGlvbkZhaWwJCT0gMSwKKwkJTm9IYXNoRm91bmRJbkRpZ2VzdFZhbHVlCT0gMiwKKwkJVW5rbm93bkRTSUdBdHRyaWJ1dGUJCT0gMywKKwkJRXhwZWN0ZWREU0lHQ2hpbGROb3RGb3VuZAk9IDQsCisJCVVua25vd25UcmFuc2Zvcm0JCQk9IDUsCisJCVRyYW5zZm9ybUlucHV0T3V0cHV0RmFpbAk9IDYsCisJCUlETm90Rm91bmRJbkRPTURvYwkJCT0gNywKKwkJVW5zdXBwb3J0ZWRYcG9pbnRlckV4cHIJCT0gOCwKKwkJWFBhdGhFcnJvcgkJCQkJPSA5LAorCQlYU0xFcnJvcgkJCQkJPSAxMCwKKwkJVW5zdXBwb3J0ZWQJCQkJCT0gMTEsCisJCUxvYWRFbXB0eVNpZ25hdHVyZQkJCT0gMTIsCisJCUxvYWROb25TaWduYXR1cmUJCQk9IDEzLAorCQlVbmtub3duQ2Fub25pY2FsaXphdGlvbgkJPSAxNCwKKwkJVW5rbm93blNpZ25hdHVyZUFsZ29yaXRobQk9IDE1LAorCQlMb2FkRW1wdHlYNTA5CQkJCT0gMTYsCisJCUxvYWROb25YNTA5CQkJCQk9IDE3LAorCQlPcGVuU1NMRXJyb3IJCQkJPSAxOCwKKwkJU2lnVmZ5RXJyb3IJCQkJCT0gMTksCisJCUxvYWRFbXB0eVNpZ25lZEluZm8JCQk9IDIwLAorCQlMb2FkTm9uU2lnbmVkSW5mbwkJCT0gMjEsCisJCUV4cGVjdGVkUmVmZXJlbmNlVVJJCQk9IDIyLAorCQlOb3RMb2FkZWQJCQkJCT0gMjMsCisJCUNyeXB0b1Byb3ZpZGVyRXJyb3IJCQk9IDI0LAorCQlLZXlJbmZvRXJyb3IJCQkJPSAyNSwKKwkJU2lnbmluZ0Vycm9yCQkJCT0gMjYsCisJCUxvYWRFbXB0eUluZm9OYW1lCQkJPSAyNywKKwkJTG9hZE5vbkluZm9OYW1lCQkJCT0gMjgsCisJCVVua25vd25LZXlWYWx1ZQkJCQk9IDI5LAorCQlTaWduYXR1cmVDcmVhdGlvbkVycm9yCQk9IDMwLAorCQlFcnJvck9wZW5pbmdVUkkJCQkJPSAzMSwKKwkJUHJvdmlkZXJFcnJvcgkJCQk9IDMyLAorCQlJbnRlcm5hbEVycm9yCQkJCT0gMzMsCisJCUVudmVsb3BlRXJyb3IJCQkJPSAzNCwKKwkJVW5zdXBwb3J0ZWRGdW5jdGlvbgkJCT0gMzUsCisJCVRyYW5zZm9ybUVycm9yCQkJCT0gMzYsCisJCVNhZmVCdWZmZXJFcnJvcgkJCQk9IDM3LAorCQlIVFRQVVJJSW5wdXRTdHJlYW1FcnJvciAgICAgPSAzOCwKKwkJTG9hZEVtcHR5WFBhdGhGaWx0ZXIJCT0gMzksCisJCVhQYXRoRmlsdGVyRXJyb3IJCQk9IDQwLAorCQlETmFtZURlY29kZUVycm9yCQkJPSA0MSwKKworCQkvLyBFbmNyeXB0aW9uIGVycm9ycworCQlFbmNyeXB0ZWRUeXBlRXJyb3IJCQk9IDQyLAorCQlFeHBlY3RlZFhFTkNDaGlsZE5vdEZvdW5kCT0gNDMsCisJCUNpcGhlckRhdGFFcnJvcgkJCQk9IDQ0LAorCQlDaXBoZXJWYWx1ZUVycm9yCQkJPSA0NSwKKwkJQ2lwaGVyRXJyb3IJCQkJCT0gNDYsCisJCUFsZ29yaXRobU1hcHBlckVycm9yCQk9IDQ3LAorCQlFbmNyeXB0aW9uTWV0aG9kRXJyb3IJCT0gNDgsCisJCUNpcGhlclJlZmVyZW5jZUVycm9yCQk9IDQ5LAorCQlPYmplY3RFcnJvcgkJCQkJPSA1MCwKKworCQkvLyBYS01TIEVycm9yCisJCVhLTVNFcnJvcgkJCQkJPSA1MSwKKwkJRXhwZWN0ZWRYS01TQ2hpbGROb3RGb3VuZAk9IDUyLAorCQlNZXNzYWdlQWJzdHJhY3RUeXBlRXJyb3IJPSA1MywKKwkJUmVxdWVzdEFic3RyYWN0VHlwZUVycm9yCT0gNTQsCisJCVJlc3VsdFR5cGVFcnJvcgkJCQk9IDU1LAorCQlTdGF0dXNFcnJvciAJCQkJPSA1NiwKKwkJVW5rbm93bkVycm9yCQkJCT0gNTgJCS8vIE11c3QgYmUgbGFzdCEKKworCX07CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBHZW5lcmFsIENvbnN0cnVjdG9yCisJICoKKwkgKiBHZW5lcmljIGNvbnN0cnVjdG9yIHVzZWQgd2l0aGluIHRoZSBsaWJyYXJ5LiAgV2hlcmUgaW5Nc2cgPT0gTlVMTCwKKwkgKiB0aGUgZ2VuZXJhbCBzdHJpbmcgZm9yIHRoaXMgZXhjZXB0aW9uIHR5cGUgd2lsbCBiZSB1c2VkLgorCSAqCisJICogQHBhcmFtIGVOdW0gRXhjZXB0aW9uIHR5cGUKKwkgKiBAcGFyYW0gaW5Nc2cgTXNnIHRvIGJlIHVzZWQgb3IgTlVMTCBmb3IgZ2VuZXJhbCBzeXN0ZW0gbWVzc2FnZQorCSAqLworCisJWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uVHlwZSBlTnVtLCBjb25zdCBYTUxDaCAqIGluTXNnID0gTlVMTCk7CisKKwkvKioKKwkgKiBcYnJpZWYgTG9jYWwgY29kZSBwYWdlIGNvbnN0cnVjdG9yCisJICoKKwkgKiBTaG9ydGN1dCBjb25zdHJ1Y3RvciB0byBhbGxvdyBsb2NhbCBjb2RlIHBhZ2Ugc3RyaW5ncyB0byBiZSB1c2VkCisJICogZm9yIHRoZSBtZXNzYWdlLiAgU3RyaW5ncyBhcmUgY29udmVydGVkIHRvIFVURi0xNi4KKwkgKgorCSAqIEBwYXJhbSBlTnVtIEV4Y2VwdGlvbiB0eXBlCisJICogQHBhcmFtIGluTXNnIE1zZyB0byBiZSB1c2VkIG9yIE5VTEwgZm9yIGdlbmVyYWwgc3lzdGVtIG1lc3NhZ2UKKwkgKi8KKworCVhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvblR5cGUgZU51bSwgY29uc3QgY2hhciAqIGluTXNnKTsKKworCS8vIFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvblR5cGUgZU51bSwgc2FmZUJ1ZmZlciAmaW5Nc2cpOworCQorCS8qKgorCSAqIFxicmllZiBDb3B5IENvbnN0cnVjdG9yCisJICovCisKKwlYU0VDRXhjZXB0aW9uKGNvbnN0IFhTRUNFeGNlcHRpb24gJnRvQ29weSk7CisJLyoqCisJICogXGJyaWVmIERlc3RydWN0b3IKKwkgKi8KKworCX5YU0VDRXhjZXB0aW9uKCk7CisJCisJLy9AfQorCisJLyoqIEBuYW1lIEluZm9ybWF0aW9uIGZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBHZXQgbWVzc2FnZQorCSAqCisJICogUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgWE1MQ2ggYnVmZmVyIGhvbGRpbmcgdGhlIGVycm9yIG1lc3NhZ2UKKwkgKgorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgYnVmZmVyIHdpdGhpbiB0aGUgZXhjZXB0aW9uIHRoYXQgaG9sZHMgdGhlCisJICogZXJyb3IgbWVzc2FnZSAqLworCisJY29uc3QgWE1MQ2ggKiBnZXRNc2codm9pZCk7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IGVycm9yIHR5cGUKKwkgKgorCSAqIFJldHVybnMgYW4gWFNFQ0V4Y2VwdGlvblR5cGUgY29kaW5nIG9mIHRoZSBnZW5lcmljIGVycm9yIHRoYXQgcmFpc2VkCisJICogdGhpcyBleGNlcHRpb24KKwkgKgorCSAqIEByZXR1cm5zIFRoZSBleGNldHBpb24gdHlwZQorCSAqLworCisJWFNFQ0V4Y2VwdGlvblR5cGUgZ2V0VHlwZSh2b2lkKTsKKworcHJpdmF0ZToKKworCVhNTENoCQkJCSogbXNnOwkJCQkvLyBNZXNzYWdlIHRvIHRoZSBjYWxsZXIKKwlYU0VDRXhjZXB0aW9uVHlwZQl0eXBlOwkJCQkvLyBUeXBlIG9mIGV4Y2VwdGlvbgorCQorCS8qIFVuaW1wbGVtZW50ZWQgQ29uc3RydWN0b3IgKi8KKwlYU0VDRXhjZXB0aW9uKCk7CisKKworfTsKKworLyoqIEB9Ki8KKworI2VuZGlmIC8qIFhTRUNFWENFUFRJT05fSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvZnJhbWV3b3JrL1hTRUNQcm92aWRlci5jcHAgYi9jL3NyYy9mcmFtZXdvcmsvWFNFQ1Byb3ZpZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2Q5YTM2Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZnJhbWV3b3JrL1hTRUNQcm92aWRlci5jcHAKQEAgLTAsMCArMSwyNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNQcm92aWRlci5ocHAgOj0gVGhlIG1haW4gaW50ZXJmYWNlIGZvciB1c2VycyB3aXNoaW5nIHRvIGdhaW4gYWNjZXNzCisgKiAgICAgICAgICAgICAgICAgICAgIHRvIHNpZ25hdHVyZSBvYmplY3RzCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ1Byb3ZpZGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDVVJJUmVzb2x2ZXJYZXJjZXMuaHBwPgorCisjaW5jbHVkZSAiLi4veGVuYy9pbXBsL1hFTkNDaXBoZXJJbXBsLmhwcCIKKyNpbmNsdWRlICIuLi94a21zL2ltcGwvWEtNU01lc3NhZ2VGYWN0b3J5SW1wbC5ocHAiCisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdG9ycy9EZXN0cnVjdG9ycworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitYU0VDUHJvdmlkZXI6OlhTRUNQcm92aWRlcigpIHsKKworCW1wX1VSSVJlc29sdmVyID0gbmV3IFhTRUNVUklSZXNvbHZlclhlcmNlcygpOworCVhTRUNuZXcobXBfeGttc01lc3NhZ2VGYWN0b3J5LCBYS01TTWVzc2FnZUZhY3RvcnlJbXBsKCkpOworCit9CisKK1hTRUNQcm92aWRlcjo6flhTRUNQcm92aWRlcigpIHsKKworCS8vIEZpcnN0IGRlbGV0ZSBzaWduYXR1cmVzCisJCisJU2lnbmF0dXJlTGlzdFZlY3RvclR5cGU6Oml0ZXJhdG9yIGk7CisJCisJZm9yIChpID0gbV9hY3RpdmVTaWduYXR1cmVzLmJlZ2luKCk7IGkgIT0gbV9hY3RpdmVTaWduYXR1cmVzLmVuZCgpOyArK2kpCisJCWRlbGV0ZSAqaTsKKworCW1fYWN0aXZlU2lnbmF0dXJlcy5jbGVhcigpOworCisJaWYgKG1wX1VSSVJlc29sdmVyICE9IE5VTEwpCisJCWRlbGV0ZSBtcF9VUklSZXNvbHZlcjsKKworCS8vIE5vdyBkZWxldGUgY2lwaGVycworCisJQ2lwaGVyTGlzdFZlY3RvclR5cGU6Oml0ZXJhdG9yIGo7CisJCisJZm9yIChqID0gbV9hY3RpdmVDaXBoZXJzLmJlZ2luKCk7IGogIT0gbV9hY3RpdmVDaXBoZXJzLmVuZCgpOyArK2opCisJCWRlbGV0ZSAqajsKKworCW1fYWN0aXZlQ2lwaGVycy5jbGVhcigpOworCisJLy8gQ2xlYW4gdXAgWEtNUyBzdHVmZgorCWRlbGV0ZSBtcF94a21zTWVzc2FnZUZhY3Rvcnk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBTaWduYXR1cmUgQ3JlYXRpb24vRGVsZXRpb24KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworRFNJR1NpZ25hdHVyZSAqIFhTRUNQcm92aWRlcjo6bmV3U2lnbmF0dXJlRnJvbURPTShET01Eb2N1bWVudCAqZG9jLCBET01Ob2RlICpzaWdOb2RlKSB7CisKKwlEU0lHU2lnbmF0dXJlICogcmV0OworCisJWFNFQ25ldyhyZXQsIERTSUdTaWduYXR1cmUoZG9jLCBzaWdOb2RlKSk7CisKKwlzZXR1cChyZXQpOworCisJcmV0dXJuIHJldDsKKworfQorCitEU0lHU2lnbmF0dXJlICogWFNFQ1Byb3ZpZGVyOjpuZXdTaWduYXR1cmVGcm9tRE9NKERPTURvY3VtZW50ICpkb2MpIHsKKworCURTSUdTaWduYXR1cmUgKiByZXQ7CisKKwlET01Ob2RlICpzaWdOb2RlID0gZmluZERTSUdOb2RlKGRvYywgIlNpZ25hdHVyZSIpOworCisJaWYgKHNpZ05vZGUgPT0gTlVMTCkgeworCQkKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpTaWduYXR1cmVDcmVhdGlvbkVycm9yLAorCQkJIkNvdWxkIG5vdCBmaW5kIGEgc2lnbmF0dXJlIG5vZGUgaW4gcGFzc2VkIGluIERPTSBkb2N1bWVudCIpOworCisJfQorCisJWFNFQ25ldyhyZXQsIERTSUdTaWduYXR1cmUoZG9jLCBzaWdOb2RlKSk7CisKKwlzZXR1cChyZXQpOworCisJcmV0dXJuIHJldDsKKworfQorCitEU0lHU2lnbmF0dXJlICogWFNFQ1Byb3ZpZGVyOjpuZXdTaWduYXR1cmUodm9pZCkgeworCisJRFNJR1NpZ25hdHVyZSAqIHJldDsKKworCVhTRUNuZXcocmV0LCBEU0lHU2lnbmF0dXJlKCkpOworCisJc2V0dXAocmV0KTsKKworCXJldHVybiByZXQ7CisKK30KKwordm9pZCBYU0VDUHJvdmlkZXI6OnJlbGVhc2VTaWduYXR1cmUoRFNJR1NpZ25hdHVyZSAqIHRvUmVsZWFzZSkgeworCisJLy8gRmluZCBpbiB0aGUgYWN0aXZlIGxpc3QKKworCVNpZ25hdHVyZUxpc3RWZWN0b3JUeXBlOjppdGVyYXRvciBpOworCisJbV9wcm92aWRlck11dGV4LmxvY2soKTsKKwlpID0gbV9hY3RpdmVTaWduYXR1cmVzLmJlZ2luKCk7CisJd2hpbGUgKGkgIT0gbV9hY3RpdmVTaWduYXR1cmVzLmVuZCgpICYmICppICE9IHRvUmVsZWFzZSkKKwkJKytpOworCisJaWYgKGkgPT0gbV9hY3RpdmVTaWduYXR1cmVzLmVuZCgpKSB7CisKKwkJbV9wcm92aWRlck11dGV4LnVubG9jaygpOworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6UHJvdmlkZXJFcnJvciwKKwkJCSJBdHRlbXB0IHRvIHJlbGVhc2UgYSBzaWduYXR1cmUgdGhhdCB3YXMgbm90IGNyZWF0ZWQgYnkgdGhpcyBwcm92aWRlciIpOworCisJfQorCQorCS8vIEZvciBub3cgLSByZW1vdmUgZnJvbSBsaXN0LiAgV291bGQgYmUgYmV0dGVyIHRvIHJlY3ljbGUKKwltX2FjdGl2ZVNpZ25hdHVyZXMuZXJhc2UoaSk7CisJbV9wcm92aWRlck11dGV4LnVubG9jaygpOworCWRlbGV0ZSB0b1JlbGVhc2U7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDaXBoZXIgQ3JlYXRpb24vRGVsZXRpb24KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hFTkNDaXBoZXIgKiBYU0VDUHJvdmlkZXI6Om5ld0NpcGhlcihET01Eb2N1bWVudCAqIGRvYykgeworCisJWEVOQ0NpcGhlckltcGwgKiByZXQ7CisKKwlYU0VDbmV3KHJldCwgWEVOQ0NpcGhlckltcGwoZG9jKSk7CisKKwlzZXR1cChyZXQpOworCisJcmV0dXJuIHJldDsKKworfQorCit2b2lkIFhTRUNQcm92aWRlcjo6cmVsZWFzZUNpcGhlcihYRU5DQ2lwaGVyICogdG9SZWxlYXNlKSB7CisKKwkvLyBGaW5kIGluIHRoZSBhY3RpdmUgbGlzdAorCisJQ2lwaGVyTGlzdFZlY3RvclR5cGU6Oml0ZXJhdG9yIGk7CisKKwltX3Byb3ZpZGVyTXV0ZXgubG9jaygpOworCWkgPSBtX2FjdGl2ZUNpcGhlcnMuYmVnaW4oKTsKKwl3aGlsZSAoaSAhPSBtX2FjdGl2ZUNpcGhlcnMuZW5kKCkgJiYgKmkgIT0gdG9SZWxlYXNlKQorCQkrK2k7CisKKwlpZiAoaSA9PSBtX2FjdGl2ZUNpcGhlcnMuZW5kKCkpIHsKKworCQltX3Byb3ZpZGVyTXV0ZXgudW5sb2NrKCk7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpQcm92aWRlckVycm9yLAorCQkJIkF0dGVtcHQgdG8gcmVsZWFzZSBhIGNpcGhlciB0aGF0IHdhcyBub3QgY3JlYXRlZCBieSB0aGlzIHByb3ZpZGVyIik7CisKKwl9CisJCisJLy8gRm9yIG5vdyAtIHJlbW92ZSBmcm9tIGxpc3QuICBXb3VsZCBiZSBiZXR0ZXIgdG8gcmVjeWNsZQorCW1fYWN0aXZlQ2lwaGVycy5lcmFzZShpKTsKKwltX3Byb3ZpZGVyTXV0ZXgudW5sb2NrKCk7CisJZGVsZXRlIHRvUmVsZWFzZTsKKworfQorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgWEtNUyBNZXRob2RzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYS01TTWVzc2FnZUZhY3RvcnkgKiBYU0VDUHJvdmlkZXI6OmdldFhLTVNNZXNzYWdlRmFjdG9yeSh2b2lkKSB7CisKKwlyZXR1cm4gbXBfeGttc01lc3NhZ2VGYWN0b3J5OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgRW52aXJvbm1lbnRhbCBtZXRob2RzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK3ZvaWQgWFNFQ1Byb3ZpZGVyOjpzZXREZWZhdWx0VVJJUmVzb2x2ZXIoWFNFQ1VSSVJlc29sdmVyICogcmVzb2x2ZXIpIHsKKworCWlmIChtcF9VUklSZXNvbHZlciAhPSAwKQorCQlkZWxldGUgbXBfVVJJUmVzb2x2ZXI7CisKKwltcF9VUklSZXNvbHZlciA9IHJlc29sdmVyLT5jbG9uZSgpOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgSW50ZXJuYWwgZnVuY3Rpb25zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIFhTRUNQcm92aWRlcjo6c2V0dXAoRFNJR1NpZ25hdHVyZSAqc2lnKSB7CisKKwkvLyBDYWxsZWQgYnkgYWxsIFNpZ25hdHVyZSBjcmVhdGlvbiBtZXRob2RzIHRvIHNldCB1cCB0aGUgc2lnCisKKwkvLyBBZGQgdG8gdGhlIGFjdGl2ZSBsaXN0CisJbV9wcm92aWRlck11dGV4LmxvY2soKTsKKwltX2FjdGl2ZVNpZ25hdHVyZXMucHVzaF9iYWNrKHNpZyk7CisJbV9wcm92aWRlck11dGV4LnVubG9jaygpOworCisJc2lnLT5zZXRVUklSZXNvbHZlcihtcF9VUklSZXNvbHZlcik7CisKK30KKwordm9pZCBYU0VDUHJvdmlkZXI6OnNldHVwKFhFTkNDaXBoZXIgKiBjaXBoZXIpIHsKKworCS8vIENhbGxlZCBieSBhbGwgU2lnbmF0dXJlIGNyZWF0aW9uIG1ldGhvZHMgdG8gc2V0IHVwIHRoZSBzaWcKKworCS8vIEFkZCB0byB0aGUgYWN0aXZlIGxpc3QKKwltX3Byb3ZpZGVyTXV0ZXgubG9jaygpOworCW1fYWN0aXZlQ2lwaGVycy5wdXNoX2JhY2soY2lwaGVyKTsKKwltX3Byb3ZpZGVyTXV0ZXgudW5sb2NrKCk7CisKK30KZGlmZiAtLWdpdCBhL2Mvc3JjL2ZyYW1ld29yay9YU0VDUHJvdmlkZXIuaHBwIGIvYy9zcmMvZnJhbWV3b3JrL1hTRUNQcm92aWRlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJjNmM2MwotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2ZyYW1ld29yay9YU0VDUHJvdmlkZXIuaHBwCkBAIC0wLDAgKzEsMjU1IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYU0VDUHJvdmlkZXIuaHBwIDo9IE1haW4gaW50ZXJmYWNlIGNsYXNzIHRoYXQgYXBwbGljYXRpb25zIHVzZSB0bworICoJCQkJCSAgIGdldCBhY2Nlc3MgdG8gU2lnbmF0dXJlIGFuZCBFbmNyeXB0aW9uIGZ1bmN0aW9ucy4KKyAqCisgKiAkSWQkCisgKgorICovCisjaWZuZGVmIFhTRUNQUk9WSURFUl9JTkNMVURFCisjZGVmaW5lIFhTRUNQUk9WSURFUl9JTkNMVURFCisKKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNQbGF0Zm9ybVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1NpZ25hdHVyZS5ocHA+CisjaW5jbHVkZSA8eHNlYy94ZW5jL1hFTkNDaXBoZXIuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TTWVzc2FnZUZhY3RvcnkuaHBwPgorCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL011dGV4ZXMuaHBwPgorCisjaW5jbHVkZSA8dmVjdG9yPgorCisvKioKKyAqIEBhZGR0b2dyb3VwIHB1YnNpZworICogQHsKKyAqLworCisvKioKKyAqIEBicmllZiBUaGUgbWFpbiBwcm92aWRlciBjbGFzcyBmb3IgWE1MIERpZ2l0YWwgU2lnbmF0dXJlcyBhbmQgRW5jcnlwdGlvbiBvYmplY3RzLgorICoKKyAqIDxwPlRoZSBYU0VDUHJvdmlkZXIgY2xhc3MgaXMgdXNlZCB0byBjcmVhdGUgYW5kIGRlc3Ryb3kgc2lnbmF0dXJlIG9iamVjdHMgYW5kCisgKiBlbmNyeXB0aW9uIG9iamVjdHMuICBJdCBwcm92aWRlcyBhIG51bWJlciBvZiBtZXRob2RzIHRvIGNyZWF0ZSBzaWduYXR1cmUgCisgKiBhbmQgZW5jcnlwdGlvbiBvYmplY3RzIGZvciBhIHZhcmlldHkgb2Ygc2l0dWF0aW9ucyAtIGluIHBhcnRpY3VsYXIgY3JlYXRpbmcgYW4gCisgKiBlbXB0eSBzaWduYXR1cmUgb3IgY2lwaGVyIHdpdGggd2hpY2ggdG8gY3JlYXRlIHRoZSBET00gc3RydWN0dXJlIG9yIGNyZWF0aW5nIGEgCisgKiBzZWN1cml0eSBvYmplY3QgYmFzZWQgb24gYW4gYWxyZWFkeSBleGlzdGluZyBET00gc3RydWN0dXJlLjwvcD4KKyAqCisgKi8KKworCitjbGFzcyBEU0lHX0VYUE9SVCBYU0VDUHJvdmlkZXIgeworCisjaWYgZGVmaW5lZChYQUxBTl9OT19OQU1FU1BBQ0VTKQorCXR5cGVkZWYgdmVjdG9yPERTSUdTaWduYXR1cmUgKj4JCQlTaWduYXR1cmVMaXN0VmVjdG9yVHlwZTsKKyNlbHNlCisJdHlwZWRlZiBzdGQ6OnZlY3RvcjxEU0lHU2lnbmF0dXJlICo+CVNpZ25hdHVyZUxpc3RWZWN0b3JUeXBlOworI2VuZGlmCisKKyNpZiBkZWZpbmVkKFhBTEFOX05PX05BTUVTUEFDRVMpCisJdHlwZWRlZiB2ZWN0b3I8WEVOQ0NpcGhlciAqPgkJCUNpcGhlckxpc3RWZWN0b3JUeXBlOworI2Vsc2UKKwl0eXBlZGVmIHN0ZDo6dmVjdG9yPFhFTkNDaXBoZXIgKj4JCUNpcGhlckxpc3RWZWN0b3JUeXBlOworI2VuZGlmCisKK3B1YmxpYzoKKworICAgIC8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisgICAgLy9AeworCQorICAgIC8qKgorCSAqIFxicmllZiBEZWZhdWx0IGNvbnN0cnVjdG9yLgorCSAqCisJICogPHA+VGhlIHByb3ZpZGVyIGNsYXNzIHJlcXVpcmVzIG5vIHBhcmFtZXRlcnMgZm9yIGNvbnN0cnVjdGlvbjwvcD4KKwkgKgorCSAqLworCisKKwlYU0VDUHJvdmlkZXIoKTsKKwl+WFNFQ1Byb3ZpZGVyKCk7CisKKwkvL0B9CisKKyAgICAvKiogQG5hbWUgU2lnbmF0dXJlIENyZWF0aW9uIENsYXNzZXMgKi8KKyAgICAvL0B7CisJCisgICAgLyoqCisJICogXGJyaWVmIERTSUdTaWduYXR1cmUgY3JlYXRvciBmb3IgdXNlIHdpdGggZXhpc3RpbmcgWE1MIHNpZ25hdHVyZXMgb3IgdGVtcGxhdGVzLgorCSAqCisJICogPHA+Q3JlYXRlIGEgRFNJR1NpZ25hdHVyZSBvYmplY3QgYmFzZWQgb24gYW4gYWxyZWFkeSBleGlzdGluZworCSAqIERTSUcgU2lnbmF0dXJlIFhNTCBub2RlLiAgSXQgaXMgYXNzdW1lZCB0aGF0IHRoZSB1bmRlcmx5aW5nCisJICogRE9NIHN0cnVjdHVyZSBpcyBpbiBwbGFjZSBhbmQgd29ya3MgY29ycmVjdGx5LjwvcD4KKwkgKgorCSAqIDxwPkluIHRoaXMgY2FzZSwgdGhlIGNhbGxlciBjYW4gcGFzcyBpbiB0aGUgc2lnbmF0dXJlIERPTSBOb2RlIGZvciBjYXNlcworCSAqIHdoZXJlIHRoZXJlIG1heSBiZSBtb3JlIHRoYW4gb25lIHNpZ25hdHVyZSBpbiBhIGRvY3VtZW50LiAgVGhlIGNhbGxlcgorCSAqIG5lZWRzIHRvIHNwZWNpZnkgd2hpY2ggc2lnbmF0dXJlIHRyZWUgaXMgdG8gYmUgdXNlZC48L3A+CisJICoKKwkgKiBAcGFyYW0gZG9jIFRoZSBET00gZG9jdW1lbnQgbm9kZSBpbiB3aGljaCB0aGUgc2lnbmF0dXJlIGlzIGVtYmVkZGVkLgorCSAqIEBwYXJhbSBzaWdOb2RlIFRoZSBET00gbm9kZSAod2l0aGluIGRvYykgdGhhdCBpcyB0byBiZSB1c2VkIGFzIHRoZSAKKwkgKgliYXNlIG9mIHRoZSBzaWduYXR1cmUuCisJICogQHNlZSBEU0lHU2lnbmF0dXJlI2xvYWQKKwkgKi8KKworCURTSUdTaWduYXR1cmUgKiBuZXdTaWduYXR1cmVGcm9tRE9NKAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKmRvYywgCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICpzaWdOb2RlCisJKTsKKworICAgIC8qKgorCSAqIFxicmllZiBEU0lHU2lnbmF0dXJlIGNyZWF0b3IgZm9yIHVzZSB3aXRoIGV4aXN0aW5nIFhNTCBzaWduYXR1cmVzIG9yIHRlbXBsYXRlcy4KKwkgKgorCSAqIDxwPkNyZWF0ZSBhIERTSUdTaWduYXR1cmUgb2JqZWN0IGJhc2VkIG9uIGFuIGFscmVhZHkgZXhpc3RpbmcKKwkgKiBEU0lHIFNpZ25hdHVyZSBYTUwgbm9kZS4gIEl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgdW5kZXJseWluZworCSAqIERPTSBzdHJ1Y3R1cmUgaXMgaW4gcGxhY2UgYW5kIHdvcmtzIGNvcnJlY3RseS48L3A+CisJICoKKwkgKiA8cD5JbiB0aGlzIGNhc2UsIHRoZSBYTUwtU2VjdXJpdHkgbGlicmFyaWVzIHdpbGwgZmluZCB0aGUgc2lnbmF0dXJlCisJICogbm9kZS48L3A+CisJICoKKwkgKiBAbm90ZSBUaGUgbGlicmFyeSB3aWxsIDxlbT5vbmx5PC9lbT4gZmluZCBhbmQgdXNlIHRoZSBmaXJzdCBzaWduYXR1cmUgbm9kZQorCSAqIGluIHRoZSBkb2N1bWVudC4gIElmIHRoZXJlIGFyZSBtb3JlLCB0aGV5IHdpbGwgbm90IGJlIHZhbGlkYXRlZAorCSAqIEBwYXJhbSBkb2MgVGhlIERPTSBkb2N1bWVudCBub2RlIGluIHdoaWNoIHRoZSBzaWduYXR1cmUgaXMgZW1iZWRkZWQuCisJICogQHNlZSBEU0lHU2lnbmF0dXJlI2xvYWQKKwkgKi8KKwkKKwlEU0lHU2lnbmF0dXJlICogbmV3U2lnbmF0dXJlRnJvbURPTShYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKmRvYyk7CisKKyAgICAvKioKKwkgKiBcYnJpZWYgRFNJR1NpZ25hdHVyZSBjcmVhdG9yIGZvciBjcmVhdGluZyBuZXcgWE1MIHNpZ25hdHVyZXMuCisJICoKKwkgKiA8cD5DcmVhdGUgYW4gZW1wdHkgRFNJR1NpZ25hdHVyZSBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgbmV3CisJICogc2lnbmF0dXJlIHZhbHVlcy4gIFRoZSByZXR1cm5lZCBzaWduYXR1cmUgb2JqZWN0IG5lZWRzIHRvIGJlIGluaXRpYWxpc2VkCisJICogd2l0aCBhIGRvY3VtZW50IHNvIGEgYmxhbmsgc2lnbmF0dXJlIERPTSBzdHJ1Y3R1cmUgY2FuIGJlIGNyZWF0ZWQ8L3A+CisJICoKKwkgKiBAc2VlIERTSUdTaWduYXR1cmUjY3JlYXRlQmxhbmtTaWduYXR1cmUKKwkgKi8KKwkKKwlEU0lHU2lnbmF0dXJlICogbmV3U2lnbmF0dXJlKHZvaWQpOworCisgICAgLyoqCisJICogXGJyaWVmIE1ldGhvZCBmb3IgZGVzdHJveWluZyBEU0lHU2lnbmF0dXJlIG9iamVjdHMgY3JlYXRlZCB2aWEgdGhpcyBwcm92aWRlci4KKwkgKgorCSAqIDxwPlRoZSBwcm92aWRlciBrZWVwcyB0cmFjayBvZiBhbGwgc2lnbmF0dXJlIG9iamVjdHMgY3JlYXRlZCBkdXJpbmcgdGhlIGxpZmV0aW1lCisJICogb2YgdGhlIHByb3ZpZGVyLiAgVGhpcyBtZXRob2QgY2FuIGJlIGNhbGxlZCB0byBkZWxldGUgYSBzaWduYXR1cmUgd2hpbHN0IHRoZSAKKwkgKiBwcm92aWRlciBpcyBzdGlsbCBpbiBzY29wZS4gIE90aGVyd2lzZSB0aGUgb2JqZWN0cyB3aWxsIGJlIGF1dG9tYXRpY2FsbHkKKwkgKiBkZWxldGVkIHdoZW4gdGhlIHByb3ZpZGVyIG9iamVjdCBnb2VzIG91dCBvZiBzY29wZS48L3A+CisJICogCisJICogPHA+SW4gY2FzZXMgd2hlcmUgdGhlIERTSUdTaWduYXR1cmUgaGFzIGJlZW4gdXNlZCB0byBjcmVhdGUgYSBuZXcgRE9NIHN0cnVjdHVyZSwKKwkgKiBpdCBjYW4gYmUgc2FmZWx5IGRlbGV0ZWQgb25jZSB0aGUgc2lnbmF0dXJlIG9wZXJhdGlvbnMgaGF2ZSBiZWVuIGNvbXBsZXRlZCB3aXRob3V0CisJICogaW1wYWN0aW5nIHRoZSB1bmRlcmx5aW5nIERPTSBzdHJ1Y3R1cmUuPC9wPgorCSAqCisJICogQHBhcmFtIHRvUmVsZWFzZSBUaGUgRFNJR1NpZ25hdHVyZSBvYmplY3QgdG8gYmUgZGVsZXRlZC4KKwkgKiBAdG9kbyBUaGUgRFNJR1NpZ25hdHVyZSBvYmplY3RzIGFyZSBmYWlybHkgYnVsa3kgaW4gdGVybXMgb2YgY3JlYXRpb24gYW5kIGRlbGV0aW9uLgorCSAqIFRoZXJlIHNob3VsZCBiZSBhIGNhcGFiaWxpdHkgdG8gc3RvcmUgInJlbGVhc2VkIiBvYmplY3RzIGluIGEgcmUtdXNlIHN0YWNrLiAgQXQgdGhlCisJICogbW9tZW50IHRoZSBQcm92aWRlciBjbGFzcyBzaW1wbHkgZGVsZXRlcyB0aGUgb2JqZWN0cy4KKwkgKiBAc2VlIERTSUdTaWduYXR1cmUjY3JlYXRlQmxhbmtTaWduYXR1cmUKKwkgKi8KKworCXZvaWQgcmVsZWFzZVNpZ25hdHVyZShEU0lHU2lnbmF0dXJlICogdG9SZWxlYXNlKTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBFbmNyeXB0aW9uIENyZWF0aW9uIEZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBDcmVhdGUgYW4gWEVOQ0NpcGhlciBvYmplY3QgYmFzZWQgb24gYSBwYXJ0aWN1bGFyIERPTSBEb2N1bWVudAorCSAqCisJICogWEVOQ0NpcGhlciBpcyBhbiBlbmdpbmUgY2xhc3MgdGhhdCBpcyB1c2VkIHRvIHdyYXAgZW5jcnlwdGlvbi9kZWNyeXB0aW9uCisJICogZnVuY3Rpb25zLiAgVW5saWtlIHRoZSBTaWduYXR1cmUgZnVuY3Rpb25zLCBvbmx5IGEgWEVOQ0NpcGhlciBvYmplY3QgYXR0YWNoZWQKKwkgKiB0byBhIHBhcnRpY3VsYXIgZG9jdW1lbnQgaXMgcmVxdWlyZWQuICBBcmJpdHJhcnkgb2JqZWN0cyB3aXRoaW4gdGhpcyBkb2N1bWVudAorCSAqIGNhbiB0aGVuIGJlIGVuY3J5cHRlZC9kZWNyeXB0ZWQgdXNpbmcgdGhpcyBjbGFzcy4KKwkgKgorCSAqIEBwYXJhbSBkb2MgRG9jdW1lbnQgdG8gYXR0YWNoIHRoZSBYRU5DQ2lwaGVyIHRvLgorCSAqIEByZXR1cm5zIEFuIGltcGxlbWVudGF0aW9uIG9iamVjdCBmb3IgWEVOQ0NpcGhlcgorCSAqLworCisJWEVOQ0NpcGhlciAqIG5ld0NpcGhlcihYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBkb2MpOworCisJLyoqCisJICogXGJyaWVmIE1ldGhvZCB0byBkZWxldGUgWEVOQ0NpcGhlciBvYmplY3RzIGNyZWF0ZWQgdmlhIHRoaXMgcHJvdmlkZXIKKwkgKgorCSAqIDxwPlRoZSBwcm92aWRlciBrZWVwcyB0cmFjayBvZiBhbGwgb2JqZWN0cyBieSBpdC4gIFRoaXMgbWV0aG9kIGNhbiBiZSB1c2VkCisJICogdG8gZGVsZXRlIGFueSBwcmV2aW91c2x5IGNyZWF0ZWQgWEVOQ0NpcGhlciBvYmplY3RzIHByaW9yIHRvIHRoZSBwcm92aWRlcgorCSAqIGJlaW5nIGRlbGV0ZWQuICBBbnkgWEVOQ0NpcGhlciBvYmplY3RzIG5vdCByZWxlYXNlZCB1c2luZyB0aGlzIGZ1bmN0aW9uIHdpbGwKKwkgKiBhdXRvbWF0aWNhbGx5IGJlIGRlbGV0ZWQgd2hlbiB0aGUgcHJvdmlkZXIgZ29lcyBvdXQgb2Ygc2NvcGUgKG9yIGlzIGl0c2VsZgorCSAqIGRlbGV0ZWQpLgorCSAqCisJICogQHBhcmFtIHRvUmVsZWFzZSBUaGUgWEVOQ0NpcGhlciBvYmplY3QgdG8gYmUgZGVsZXRlZAorCSAqLworCisJdm9pZCByZWxlYXNlQ2lwaGVyKFhFTkNDaXBoZXIgKiB0b1JlbGVhc2UpOworCisJLy9AfQorCisJLyoqIEBuYW1lIFhLTVMgRnVuY3Rpb25zICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIE9idGFpbiBhIHBvaW50ZXIgdG8gdGhlIFhLTVNNZXNzYWdlRmFjdG9yeS4KKwkgKgorCSAqIFRoZSBYS01TTWVzc2FnZUZhY3RvcnkgaXMgdXNlZCB0byBjcmVhdGUgYW5kIG1hbmlwdWxhdGUgWEtNUyBtZXNzYWdlcy4KKwkgKgorCSAqIEBub3RlIFVubGlrZSBvdGhlciBvYmplY3RzIGNyZWF0ZWQgYnkgdGhlIHByb3ZpZGVyLCBvbmx5IG9uZSAKKwkgKiBYS01TTWVzc2FnZUZhY3RvcnkgaXMgZXZlciBpbnN0YW50aWF0ZWQgZm9yIGEgcGFydGljdWxhciBwcm92aWRlci4KKwkgKiBBcHBsaWNhdGlvbnMgc2hvdWxkIDxiPm5ldmVyPC9iPiBkZWxldGUgdGhlIEZhY3RvcnksIGFzIGl0IGlzIHRha2VuCisJICogY2FyZSBvZiBieSB0aGUgcHJvdmlkZXIuCisJICovCisKKwlYS01TTWVzc2FnZUZhY3RvcnkgKiBnZXRYS01TTWVzc2FnZUZhY3Rvcnkodm9pZCk7CisKKwkvKiogQG5hbWUgRW52aXJvbm1lbnRhbCBPcHRpb25zICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUgZGVmYXVsdCBVUklSZXNvbHZlci4KKwkgKgorCSAqIERTSUdTaWduYXR1cmUgb2JqZWN0cyByZXF1aXJlIGEgVVJJUmVzb2x2ZXIgdG8gYWxsb3cgdGhlbSB0byBkZS1yZWZlcmVuY2UKKwkgKiBVUklzIGluIHJlZmVyZW5jZSBlbGVtZW50cy4KKwkgKgorCSAqIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgcmVzb2x2ZXIgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIGFsbAorCSAqIHNpZ25hdHVyZXMgY3JlYXRlZCBhZnRlciB0aGlzIGlzIHNldC4gIFRoZSByZXNvbHZlciBpcworCSAqIGNsb25lZCwgc28gdGhlIG9iamVjdCBwYXNzZWQgaW4gY2FuIGJlIHNhZmVseSBkZWxldGVkIG9uY2UgdGhlCisJICogZnVuY3Rpb24gaGFzIGJlZW4gY29tcGxldGVkLgorCSAqLworCisJdm9pZCBzZXREZWZhdWx0VVJJUmVzb2x2ZXIoWFNFQ1VSSVJlc29sdmVyICogcmVzb2x2ZXIpOworCisJLy9AfQorCitwcml2YXRlOgorCisJLy8gQ29weSBjb25zdHJ1Y3RvciBpcyBkaXNhYmxlZAorCVhTRUNQcm92aWRlcihjb25zdCBYU0VDUHJvdmlkZXIgJik7CisJWFNFQ1Byb3ZpZGVyICogb3BlcmF0b3IgPSAoY29uc3QgWFNFQ1Byb3ZpZGVyICYpOworCisJLy8gSW50ZXJuYWwgZnVuY3Rpb25zCisKKwl2b2lkIHNldHVwKERTSUdTaWduYXR1cmUgKnNpZyk7CisJdm9pZCBzZXR1cChYRU5DQ2lwaGVyICpjaXBoZXIpOworCisJU2lnbmF0dXJlTGlzdFZlY3RvclR5cGUJCQkJCQltX2FjdGl2ZVNpZ25hdHVyZXM7CisJQ2lwaGVyTGlzdFZlY3RvclR5cGUJCQkJCQltX2FjdGl2ZUNpcGhlcnM7CisKKwlYS01TTWVzc2FnZUZhY3RvcnkJCQkJCQkJKiBtcF94a21zTWVzc2FnZUZhY3Rvcnk7CisKKwlYU0VDVVJJUmVzb2x2ZXIJCQkJCQkJCSogbXBfVVJJUmVzb2x2ZXI7CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIFhNTE11dGV4CQltX3Byb3ZpZGVyTXV0ZXg7Cit9OworCisvKiogQH0gKi8KKworI2VuZGlmIC8qIFhTRUNQUk9WSURFUl9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy9mcmFtZXdvcmsvWFNFQ1VSSVJlc29sdmVyLmhwcCBiL2Mvc3JjL2ZyYW1ld29yay9YU0VDVVJJUmVzb2x2ZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNGFlMDcKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9mcmFtZXdvcmsvWFNFQ1VSSVJlc29sdmVyLmhwcApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ1VSSVJlc29sdmVyIDo9IFZpcnR1YWwgSW50ZXJmYWNlIGNsYXNzIHRoYXQgdGFrZXMgYSBVUkkgYW5kCisgKiAgICAgICAgICAgICAgICAgICAgY3JlYXRlcyBhIGJpbmFyeSBpbnB1dCBzdHJlYW0gZnJvbSBpdC4KKyAqCisgKiAkSWQkCisgKi8KKworI2lmbmRlZiBYU0VDVVJJUkVTT0xWRVJfSU5DTFVERQorI2RlZmluZSBYU0VDVVJJUkVTT0xWRVJfSU5DTFVERQorCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorCitYU0VDX0RFQ0xBUkVfWEVSQ0VTX0NMQVNTKEJpbklucHV0U3RyZWFtKTsKKworLyoqCisgKiBAaW5ncm91cCBwdWJzaWcKKyAqLworLypcQHsqLworCisvKioKKyAqIEBicmllZiBJbnRlcmZhY2UgY2xhc3MgZm9yIHJlc29sdmluZyBVUklzLgorICoKKyAqIFRoZSBYTUwgRGlnaXRhbCBTaWduYXR1cmUgc3RhbmRhcmQgbWFrZXMgaGVhdnkgdXNlIG9mIFVSSXMgdG8KKyAqIGlkZW50aWZ5IGluZm9ybWF0aW9uIHRvIGJlIHJlZmVyZW5jZWQgYW5kIHNpZ25lZC4KKyAqCisgKiBUaGUgbGlicmFyeSBpbnRlcm5hbGx5IGhhbmRsZXMgcmVmZXJlbmNlIFVSSXMgd2l0aGluIHRoZQorICogZG9jdW1lbnQgdGhhdCBjb250YWlucyB0aGUgc2lnbmF0dXJlLCBidXQgdXNlcyBVUklSZXNvbHZlcgorICogY2xhc3NlcyB0byBkZXJlZmVyZW5jZSBhIFVSSSBpbnRvIGEgYnl0ZSBzdHJlYW0gdGhhdCBjYW4KKyAqIHRoZW4gYmUgcHJvY2Vzc2VkLgorICoKKyAqIFRoZSBpbnRlcmZhY2UgY2xhc3MgYWxsb3dzIG90aGVycyB0byByZS1pbXBsZW1lbnQgYW5kIGluc3RhbGwKKyAqIHRoZWlyIG93biByZXNvbHZlcyBhY2NvcmRpbmcgdG8gdGhlaXIgbmVlZHMuICBUaGUgYmFzaWMKKyAqIGltcGxlbWVudGF0aW9ucyBmb3VuZCBpbiB0aGUgbGlicmFyeSBhcmUganVzdCB0aGF0IC0gdmVyeSBiYXNpYy4KKyAqIEVub3VnaCB0byBkbyB0aGUgam9iIGZvciBpbnRlcm9wZXJhYmlsaXR5IHRlc3RpbmcsIGJ1dCBub3QKKyAqIGVub3VnaCB0byBwcm92aWRlIHJvYnVzdG5lc3MgaW4gYSBtYWpvciBhcHBsaWNhdGlvbi4KKyAqCisgKi8KKworY2xhc3MgRFNJR19FWFBPUlQgWFNFQ1VSSVJlc29sdmVyIHsKKworcHVibGljOgorCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisKKwlYU0VDVVJJUmVzb2x2ZXIoKSB7fTsKKwl2aXJ0dWFsIH5YU0VDVVJJUmVzb2x2ZXIoKSB7fTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBJbnRlcmZhY2UgTWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBDcmVhdGUgYSBCWVRFX1NUUkVBTSBmcm9tIGEgVVJJLgorCSAqCisJICogVGhlIHJlc29sdmVyIGlzIHJlcXVpcmVkIHRvIHRha2UgdGhlIGlucHV0IFVSSSBhbmQKKwkgKiBkZXJlZmVyZW5jZSBpdCB0byBhbiBhY3R1YWwgc3RyZWFtIG9mIG9jdGV0cy4KKwkgKgorCSAqIFRoZSBvY3RldHMgYXJlIHByb3ZpZGVkIGJhY2sgdG8gdGhlIGxpYnJhcnkgdXNpbmcKKwkgKiB0aGUgWGVyY2VzIEJpbklucHV0U3RyZWFtIGNsYXNzLgorCSAqCisJICogQG5vdGUgVGhlIHJldHVybmVkIHN0cmVhbSBpcyAib3duZWQiIGJ5IHRoZSBjYWxsZXIsIHdoaWNoCisJICogd2lsbCBkZWxldGUgaXQgd2hlbiBwcm9jZXNzaW5nIGlzIGNvbXBsZXRlLgorCSAqIEBwYXJhbSB1cmkgVGhlIHN0cmluZyBjb250YWluaW5nIHRoZSBVUkkgdG8gYmUgZGUtcmVmZXJlbmNlZC4gIE5VTEwKKwkgKiBpZiB0aGlzIGlzIGFuIGFub255bW91cyByZWZlcmVuY2UuCisJICogQHJldHVybnMgVGhlIG9jdGV0IHN0cmVhbSBjb3JyZXNwb25kaW5nIHRvIHRoZSBVUkkuCisJICovCisKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBCaW5JbnB1dFN0cmVhbSAqIAorCQlyZXNvbHZlVVJJKGNvbnN0IFhNTENoICogdXJpKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgQ2xvbmUgdGhlIHJlc29sdmVyIHRvIGJlIGluc3RhbGxlZCBpbiBhIG5ldyBvYmplY3QuCisJICoKKwkgKiBXaGVuIFVSSVJlc29sdmVycyBhcmUgcGFzc2VkIGludG8gc2lnbmF0dXJlcyBhbmQgb3RoZXIKKwkgKiBvYmplY3RzLCB0aGV5IGFyZSBjbG9uZWQgYW5kIGNvbnRyb2wgb2YgdGhlIG9yaWdpbmFsIG9iamVjdAorCSAqIGlzIGxlZnQgd2l0aCB0aGUgY2FsbGVyLgorCSAqCisJICovCisKKwl2aXJ0dWFsIFhTRUNVUklSZXNvbHZlciAqIGNsb25lKHZvaWQpID0gMDsKKworCS8vQH0KKworfTsKKworCisjZW5kaWYgLyogWFNFQ1VSSVJFU09MVkVSX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL2ZyYW1ld29yay9YU0VDVVJJUmVzb2x2ZXJYZXJjZXMuY3BwIGIvYy9zcmMvZnJhbWV3b3JrL1hTRUNVUklSZXNvbHZlclhlcmNlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU1ZWM5ZgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2ZyYW1ld29yay9YU0VDVVJJUmVzb2x2ZXJYZXJjZXMuY3BwCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYU0VDVVJJUmVzb2x2ZXJYZXJjZXMgOj0gVmlydHVhbCBJbnRlcmZhY2UgY2xhc3MgdGhhdCB0YWtlcyBhIFVSSSBhbmQKKyAqICAgICAgICAgICAgICAgICAgICBjcmVhdGVzIGEgYmluYXJ5IGlucHV0IHN0cmVhbSBmcm9tIGl0LgorICoKKyAqICRJZCQKKyAqCisgKi8KKworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNVUklSZXNvbHZlclhlcmNlcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKworI2luY2x1ZGUgPHhlcmNlc2MvZnJhbWV3b3JrL1VSTElucHV0U291cmNlLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MU3RyaW5nLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvSmFuaXRvci5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWFNFQ1VSSVJlc29sdmVyWGVyY2VzOjpYU0VDVVJJUmVzb2x2ZXJYZXJjZXMoY29uc3QgWE1MQ2ggKiBiYXNlVVJJKSB7CisKKwlpZiAoYmFzZVVSSSAhPSAwKSB7CisKKwkJbXBfYmFzZVVSSSA9IFhNTFN0cmluZzo6cmVwbGljYXRlKGJhc2VVUkkpOworCisJfQorCWVsc2UKKwkJbXBfYmFzZVVSSSA9IE5VTEw7CisKK307CisKK1hTRUNVUklSZXNvbHZlclhlcmNlczo6flhTRUNVUklSZXNvbHZlclhlcmNlcygpIHsKKworCWlmIChtcF9iYXNlVVJJICE9IE5VTEwpCisJCVhTRUNfUkVMRUFTRV9YTUxDSChtcF9iYXNlVVJJKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBJbnRlcmZhY2UgTWV0aG9kcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIEJpbklucHV0U3RyZWFtICogWFNFQ1VSSVJlc29sdmVyWGVyY2VzOjpyZXNvbHZlVVJJKGNvbnN0IFhNTENoICogdXJpKSB7CisKKwlYU0VDX1VTSU5HX1hFUkNFUyhVUkxJbnB1dFNvdXJjZSk7CisJWFNFQ19VU0lOR19YRVJDRVMoWE1MVVJMKTsKKwlYU0VDX1VTSU5HX1hFUkNFUyhCaW5JbnB1dFN0cmVhbSk7CisKKwkKKwlVUkxJbnB1dFNvdXJjZQkJCSogVVJMUzsJCS8vIFVzZSBYZXJjZXMgVVJMIElucHV0IHNvdXJjZQorCUJpbklucHV0U3RyZWFtCQkJKiBpczsJCS8vIFRvIGhhbmRsZSB0aGUgYWN0dWFsIGlucHV0CisKKwlpZiAodXJpID09IE5VTEwpIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFcnJvck9wZW5pbmdVUkksCisJCQkiWFNFQ1VSSVJlc29sdmVyWGVyY2VzIC0gYW5vbnltb3VzIHJlZmVyZW5jZXMgbm90IHN1cHBvcnRlZCBpbiBkZWZhdWx0IFVSSSBSZXNvbHZlcnMiKTsKKwl9CisKKwlpZiAobXBfYmFzZVVSSSA9PSAwKSB7CisJCVVSTFMgPSBuZXcgVVJMSW5wdXRTb3VyY2UoWE1MVVJMKHVyaSkpOworCX0KKwllbHNlIHsKKwkJVVJMUyA9IG5ldyBVUkxJbnB1dFNvdXJjZShYTUxVUkwoWE1MVVJMKG1wX2Jhc2VVUkkpLCB1cmkpKTsKKwl9CisKKwkvLyBtYWtlU3RyZWFtIGNhbiAoYW5kIGlzIHF1aXRlIGxpa2VseSB0bykgdGhyb3cgYW4gZXhjZXB0aW9uCisJSmFuaXRvcjxVUkxJbnB1dFNvdXJjZT4gal9VUkxTKFVSTFMpOworCisJaXMgPSBVUkxTLT5tYWtlU3RyZWFtKCk7CisKKwlpZiAoaXMgPT0gTlVMTCkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXJyb3JPcGVuaW5nVVJJLAorCQkJIkFuIGVycm9yIG9jY3VycmVkIGluIFhTRUNVUklSRXNvbHZlclhlcmNlcyB3aGVuIG9wZW5pbmcgYW4gVVJMSW5wdXRTdHJlYW0iKTsKKworCX0KKworCXJldHVybiBpczsKKworfQorCisKK1hTRUNVUklSZXNvbHZlciAqIFhTRUNVUklSZXNvbHZlclhlcmNlczo6Y2xvbmUodm9pZCkgeworCisJWFNFQ1VSSVJlc29sdmVyWGVyY2VzICogcmV0OworCisJcmV0ID0gbmV3IFhTRUNVUklSZXNvbHZlclhlcmNlcygpOworCisJaWYgKHRoaXMtPm1wX2Jhc2VVUkkgIT0gMCkKKwkJcmV0LT5tcF9iYXNlVVJJID0gWE1MU3RyaW5nOjpyZXBsaWNhdGUodGhpcy0+bXBfYmFzZVVSSSk7CisJZWxzZQorCQlyZXQtPm1wX2Jhc2VVUkkgPSAwOworCisJcmV0dXJuIHJldDsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFNwZWNpZmljIE1ldGhvZHMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwordm9pZCBYU0VDVVJJUmVzb2x2ZXJYZXJjZXM6OnNldEJhc2VVUkkoY29uc3QgWE1MQ2ggKiB1cmkpIHsKKworCWlmIChtcF9iYXNlVVJJICE9IDApCisJCVhTRUNfUkVMRUFTRV9YTUxDSChtcF9iYXNlVVJJKTsKKworCW1wX2Jhc2VVUkkgPSBYTUxTdHJpbmc6OnJlcGxpY2F0ZSh1cmkpOworCit9OwpkaWZmIC0tZ2l0IGEvYy9zcmMvZnJhbWV3b3JrL1hTRUNVUklSZXNvbHZlclhlcmNlcy5ocHAgYi9jL3NyYy9mcmFtZXdvcmsvWFNFQ1VSSVJlc29sdmVyWGVyY2VzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzY5YWNkCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvZnJhbWV3b3JrL1hTRUNVUklSZXNvbHZlclhlcmNlcy5ocHAKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNVUklSZXNvbHZlclhlcmNlcyA6PSBWaXJ0dWFsIEludGVyZmFjZSBjbGFzcyB0aGF0IHRha2VzIGEgVVJJIGFuZAorICogICAgICAgICAgICAgICAgICAgIGNyZWF0ZXMgYSBiaW5hcnkgaW5wdXQgc3RyZWFtIGZyb20gaXQuCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhTRUNVUklSRVNPTFZFUlhFUkNFU19JTkNMVURFCisjZGVmaW5lIFhTRUNVUklSRVNPTFZFUlhFUkNFU19JTkNMVURFCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDVVJJUmVzb2x2ZXIuaHBwPgorCisvKioKKyAqIEBpbmdyb3VwIHB1YnNpZworICovCisvKlxAeyovCisKKy8qKgorICogQGJyaWVmIFVSSVJlc29sdmVyIGltcGxlbWVudGF0aW9uIGNsYXNzIGJhc2VkIG9uIFhlcmNlcyBmdW5jdGlvbnMuCisgKgorICogVGhpcyBjbGFzcyBwcm92aWRlcyB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgWFNFQ1VSSVJlc29sdmVyCisgKiBjbGFzcy4gIElmIG5vIG90aGVyIHJlc29sdmVyIGlzIHNwZWNpZmllZCwgdGhlIFhTRUNQcm92aWRlciB3aWxsCisgKiBpbnN0YWxsIHRoaXMgaW50byB0aGUgU2lnbmF0dXJlcyB0aGF0IGFyZSBjcmVhdGVkLgorICoKKyAqIFRoZSBjbGFzcyBpcyB2ZXJ5IHNpbXBsZSAtIGl0IGNhbGxzIG9uIHRoZSBYZXJjZXMgZnVuY3Rpb25zCisgKiB0byBwcm92aWRlIHByaW1pdGl2ZSBVUkkgcmVzb2x2aW5nIHN1cHBvcnQuCisgKgorICovCisKK2NsYXNzIERTSUdfRVhQT1JUIFhTRUNVUklSZXNvbHZlclhlcmNlcyA6IHB1YmxpYyBYU0VDVVJJUmVzb2x2ZXIgeworCitwdWJsaWM6CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBDb25zdHJ1Y3RvcgorCSAqCisJICogQHBhcmFtIGJhc2VVUkkgUHJvdmlkZSBhIFVSSSB0aGF0IHJlbGF0aXZlIFVSSXMgY2FuIGJlCisJICogbWF0Y2hlZCB0by4KKwkgKi8KKworCVhTRUNVUklSZXNvbHZlclhlcmNlcyhjb25zdCBYTUxDaCAqIGJhc2VVUkkgPSAwKTsKKwl2aXJ0dWFsIH5YU0VDVVJJUmVzb2x2ZXJYZXJjZXMoKTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBJbnRlcmZhY2UgTWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBDcmVhdGUgYSBCWVRFX1NUUkVBTSBmcm9tIGEgVVJJLgorCSAqCisJICogVGhlIHJlc29sdmVyIGlzIHJlcXVpcmVkIHRvIHRha2UgdGhlIGlucHV0IFVSSSBhbmQKKwkgKiBkZXJlZmVyZW5jZSBpdCB0byBhbiBhY3R1YWwgc3RyZWFtIG9mIG9jdGV0cy4KKwkgKgorCSAqIEBwYXJhbSB1cmkgVGhlIHN0cmluZyBjb250YWluaW5nIHRoZSBVUkkgdG8gYmUgZGUtcmVmZXJlbmNlZC4KKwkgKiBAcmV0dXJucyBUaGUgb2N0ZXQgc3RyZWFtIGNvcnJlc3BvbmRpbmcgdG8gdGhlIFVSSS4KKwkgKi8KKworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIEJpbklucHV0U3RyZWFtICogcmVzb2x2ZVVSSShjb25zdCBYTUxDaCAqIHVyaSk7CisKKwkvKioKKwkgKiBcYnJpZWYgQ2xvbmUgdGhlIHJlc29sdmVyIHRvIGJlIGluc3RhbGxlZCBpbiBhIG5ldyBvYmplY3QuCisJICoKKwkgKiBXaGVuIFVSSVJlc29sdmVycyBhcmUgcGFzc2VkIGludG8gc2lnbmF0dXJlcyBhbmQgb3RoZXIKKwkgKiBvYmplY3RzLCB0aGV5IGFyZSBjbG9uZWQgYW5kIGNvbnRyb2wgb2YgdGhlIG9yaWdpbmFsIG9iamVjdAorCSAqIGlzIGxlZnQgd2l0aCB0aGUgY2FsbGVyLgorCSAqCisJICovCisKKwl2aXJ0dWFsIFhTRUNVUklSZXNvbHZlciAqIGNsb25lKHZvaWQpOworCisJLy9AfQorCisJLyoqIEBuYW1lIFhTRUNVUklSZXNvbHZlclhlcmNlcyBTcGVjaWZpYyBNZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUgYmFzZSBVUkkgZm9yIHJlbGF0aXZlIFVSSXMuCisJICoKKwkgKi8KKworCXZvaWQgc2V0QmFzZVVSSShjb25zdCBYTUxDaCAqIHVyaSk7CisKKwkvL0B9CisKK3ByaXZhdGU6CisKKwlYTUxDaAkJCSogbXBfYmFzZVVSSTsKKworfTsKKworI2VuZGlmIC8qIFhTRUNVUklSRVNPTFZFUlhFUkNFU19JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy9mcmFtZXdvcmsvWFNFQ1czMkNvbmZpZy5ocHAgYi9jL3NyYy9mcmFtZXdvcmsvWFNFQ1czMkNvbmZpZy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdlMmIxOAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL2ZyYW1ld29yay9YU0VDVzMyQ29uZmlnLmhwcApAQCAtMCwwICsxLDI0NyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogQ29uZmlndXJhdGlvbiBmaWxlIGZvciBXaW5kb3dzIHBsYXRmb3JtCisgKgorICogTmVlZHMgdG8gYmUgbW9kaWZpZWQgYnkgaGFuZAorICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YZXJjZXNWZXJzaW9uLmhwcD4KKworLyoKKyAqIFRoZXNlIGFyZSB0aGUgaGlnaCBsZXZlbCBudW1lcmljcyB0aGF0IG5lZWQgdG8gYmUgY2hhbmdlZCB0byBidW1wIHRoZQorICogdmVyc2lvbiBudW1iZXIuCisgKgorICogVGhleSBhcmUgdXNlZCB0byBjcmVhdGUgdmVyc2lvbiBzdHJpbmdzIC0gc2VlIHRoZSBkZXRhaWxzIGF0IHRoZSBlbmQgb2YgdGhpcyBmaWxlCisgKi8KKworI2RlZmluZSBYU0VDX1ZFUlNJT05fTUFKT1IgICAxCisjZGVmaW5lIFhTRUNfVkVSU0lPTl9NRURJVU0gIDYKKyNkZWZpbmUgWFNFQ19WRVJTSU9OX01JTk9SICAgMAorCisvKgorICogQmVjYXVzZSB3ZSBkb24ndCBoYXZlIGEgY29uZmlndXJlIHNjcmlwdCwgd2UgbmVlZCB0byByZWx5IG9uIHZlcnNpb24KKyAqIG51bWJlcnMgdG8gdW5kZXJzdGFuZCBsaWJyYXJ5IGlkaW9zeWNyYWNpZXMKKyAqLworCisjaWYgKFhFUkNFU19WRVJTSU9OX01BSk9SID49IDMpCisKKy8qIElzIGl0IHBvc3NpYmxlIHRvIHNldElkQXR0cmlidXRlcz8gLSBET00gbGV2ZWwgMyBjYWxsLiAgVjMueAorICAgQVBJIFZlcnNpb24gKi8KKworIwlkZWZpbmUgWFNFQ19YRVJDRVNfSEFTX0JPT0xTRVRJREFUVFJJQlVURSAxCisKKy8qIDMuMCBubyBsb25nZXIgc3VwcG9ydHMgRE9NV3JpdGVyLCBtdXN0IHVzZSBET01MU1NlcmlhbGl6ZXIgaW5zdGVhZAorKi8KKworIwlkZWZpbmUgWFNFQ19YRVJDRVNfRE9NTFNTRVJJQUxJWkVSIDEKKworLyogMy4wIG5vdyB1c2VzIGdldElucHV0RW5jb2RpbmcgcmF0aGVyIHRoYW4gZ2V0RW5jb2RpbmcgdG8gZGV0ZXJtaW5lCisgICBlbmNvZGluZyB0aGF0IHdhcyBmb3VuZCBpbiBpbnB1dCBkb2N1bWVudCAqLworCisjCWRlZmluZSBYU0VDX1hFUkNFU19ET01FTlRJVFlJTlBVVEVOQ09ESU5HIDEKKworLyogMy4wIG5vdyA2NC1iaXQgc2FmZSAqLworCisjICAgZGVmaW5lIFhTRUNfWEVSQ0VTXzY0QklUU0FGRSAxCisKKy8qIDMuMCBJbnB1dFN0cmVhbSBtdXN0IGV4cG9zZSBjb250ZW50IHR5cGUgKi8KKworIyAgIGRlZmluZSBYU0VDX1hFUkNFU19JTlBVVFNUUkVBTV9IQVNfQ09OVEVOVFRZUEUgMQorI2VuZGlmCisKKyNpZiAoWEVSQ0VTX1ZFUlNJT05fTUFKT1IgPT0gMykgfHwgKChYRVJDRVNfVkVSU0lPTl9NQUpPUiA9PSAyKSAmJiAoWEVSQ0VTX1ZFUlNJT05fTUlOT1IgPj0gMykpCisvKgorICogQXMgb2YgdmVyc2lvbiAyLjMsIHhlcmNlcyByZXF1aXJlcyBhIHZlcnNpb24gcGFyYW1ldGVyIGluIFhNTEZvcm1hdHRlcgorICogY29uc3RydWN0b3JzCisgKi8KKyMJZGVmaW5lIFhTRUNfWEVSQ0VTX0ZPUk1BVFRFUl9SRVFVSVJFU19WRVJTSU9OIDEKKworIC8qIDIuMyBhbmQgYWJvdmUgdXNlIGEgdXNlciBkZWZpbmVkIE1lbW9yeSBNYW5hZ2VyLiAgSW4gc29tZSBjYXNlcywgdGhpcworICAgYWN0dWFsbHkgbmVlZHMgdG8gYmUgcGFzc2VkIHRvIGZ1bmN0aW9ucworKi8KKworIwlkZWZpbmUgWFNFQ19YRVJDRVNfUkVRVUlSRVNfTUVNTUdSIDEKKworLyogRG9lcyBYTUxTdHJpbmc6OnJlbGVhc2UoKSBleGlzdCAqLworCisjCWRlZmluZSBYU0VDX1hFUkNFU19YTUxTVFJJTkdfSEFTX1JFTEVBU0UgMQorCisjCWlmIChYRVJDRVNfVkVSU0lPTl9NQUpPUiA8IDMpCisJCS8qIElzIGl0IHBvc3NpYmxlIHRvIHNldElkQXR0cmlidXRlcz8gLSBET00gbGV2ZWwgMyBjYWxsLiAgVjIueCBBUEkgKi8KKworIwkJZGVmaW5lIFhTRUNfWEVSQ0VTX0hBU19TRVRJREFUVFJJQlVURSAxCisKKyMJZW5kaWYKKworI2Vsc2UKKy8qCisgKiBJbiB2ZXJzaW9uIDIuMiwgdGhlIFhNTFVyaSBjbGFzcyB3YXMgYnJva2VuIGZvciByZWxhdGl2ZSBVUkkgZGUtcmVmZXJlbmNpbmcKKyAqLworIwlkZWZpbmUgWFNFQ19YRVJDRVNfQlJPS0VOX1hNTFVSSSAxCisjZW5kaWYKKworCisKKy8qCisgKiBUaGUgZm9sbG93aW5nIGRlZmluZXMgd2hldGhlciBYYWxhbiBpbnRlZ3JhdGlvbiBpcyByZXF1aXJlZC4KKyAqCisgKiBYYWxhbiBpcyB1c2VkIGZvciBYU0xUIGFuZCBjb21wbGV4IFhQYXRoIHByb2Nlc3NpbmcuCisgKiBBY3RpdmF0ZSB0aGlzICNkZWZpbmUgaWYgWGFsYW4gaXMgbm90IHJlcXVpcmVkIChvciBkZXNpcmVkKQorICovCisKKyNkZWZpbmUgWFNFQ19OT19YQUxBTgorCisjaWYgIWRlZmluZWQgKFhTRUNfTk9fWEFMQU4pCisKKyMJaW5jbHVkZSA8eGFsYW5jL0luY2x1ZGUvWGFsYW5WZXJzaW9uLmhwcD4KKworIwlpZiAoX1hBTEFOX1ZFUlNJT04gPD0gMTA4MDApCisjCQlkZWZpbmUgWFNFQ19YU0xFWENFUFRJT05fUkVUVVJOU19ET01TVFJJTkcJMQorIwllbmRpZgorIwlpZiAoX1hBTEFOX1ZFUlNJT04gPj0gMTA5MDApCisKKwkJLyogMS45IGFuZCBhYm92ZSBoYXZlIFhTTEV4Y2VwdGlvbjo6Z2V0VHlwZSgpIHJldHVybnMgWGFsYW5ET01DaGFyICosIG5vdAorCQkJWGFsYW5ET01TdHJpbmcKKwkJKi8KKworIwkJdW5kZWYgWFNFQ19YU0xFWENFUFRJT05fUkVUVVJOU19ET01TVFJJTkcKKworCQkvKiAxLjkgYW5kIGFib3ZlIGRvIG5vdCB0YWtlIGEgWGVyY2VzRE9NU3VwcG9ydCBhcyBpbnB1dCB0byB0aGUgY3RvciAqLworCisjCQl1bmRlZiBYU0VDX1hFUkNFU1BBUlNFUkxJQUlTT05fUkVRU19ET01TVVBQT1JUCisKKwkJLyogMS45IGFuZCBhYm92ZSByZXF1aXJlIGEgTm9kZVJlZkxpc3QgYXMgaW5wdXQgdG8gWFBhdGhFdmFsdWF0b3I6OgorCQkgICBzZWxlY3ROb2RlTGlzdAorCQkqLworCisjCQlkZWZpbmUgWFNFQ19TRUxFQ1ROT0RFTElTVF9SRVFTX05PREVSRUZMSVNUCisKKwkJLyogMS45IGFuZCBhYm92ZSB1c2UgTWVtb3J5TWFuYWdlciBmb3IgdGhlIFhQYXRoIEZ1bmN0aW9uIGNsYXNzZXMKKwkJKi8KKworIwkJZGVmaW5lIFhTRUNfWEFMQU5fUkVRU19NRU1PUllNQU5BR0VSCisjCWVsc2UKKwkJLyogMS45IGFuZCBhYm92ZSBoYXZlIFhTTEV4Y2VwdGlvbjo6Z2V0VHlwZSgpIHJldHVybnMgWGFsYW5ET01DaGFyICosIG5vdAorCQkJWGFsYW5ET01TdHJpbmcKKwkJKi8KKworIwkJZGVmaW5lIFhTRUNfWFNMRVhDRVBUSU9OX1JFVFVSTlNfRE9NU1RSSU5HIDEKKworCQkvKiAxLjkgYW5kIGFib3ZlIGRvIG5vdCB0YWtlIGEgWGVyY2VzRE9NU3VwcG9ydCBhcyBpbnB1dCB0byB0aGUgY3RvciAqLworCisjCQlkZWZpbmUgWFNFQ19YRVJDRVNQQVJTRVJMSUFJU09OX1JFUVNfRE9NU1VQUE9SVAorCisJCS8qIDEuOSBhbmQgYWJvdmUgcmVxdWlyZSBhIE5vZGVSZWZMaXN0IGFzIGlucHV0IHRvIFhQYXRoRXZhbHVhdG9yOjoKKwkJICAgc2VsZWN0Tm9kZUxpc3QKKwkJKi8KKworIwkJdW5kZWYgWFNFQ19TRUxFQ1ROT0RFTElTVF9SRVFTX05PREVSRUZMSVNUCisKKwkJLyogMS45IGFuZCBhYm92ZSB1c2UgTWVtb3J5TWFuYWdlciBmb3IgdGhlIFhQYXRoIEZ1bmN0aW9uIGNsYXNzZXMKKwkJKi8KKworIwkJdW5kZWYgWFNFQ19YQUxBTl9SRVFTX01FTU9SWU1BTkFHRVIKKworIwllbmRpZgorCisjZW5kaWYKKworLyoKKyAqIERlZmluZSBwcmVzZW5jZSBvZiBjcnlwdG9ncmFwaGljIHByb3ZpZGVycworICovCisKKyNkZWZpbmUgSEFWRV9PUEVOU1NMIDEKKworI2RlZmluZSBIQVZFX1dJTkNBUEkgMQorCisvLyBOU1MgQ29kZSBpcyBjdXJyZW50bHkgYWxwaGEuICBJdCBzaG91bGQgd29yaywgYnV0IHlvdSB3aWxsIGFsc28KKy8vIG5lZWQgdG8gaW5jbHVkZSB0aGUgTlNTIGxpYnJhcmllcyBkdXJpbmcgdGhlIGxpbmsuCisKKy8qICNkZWZpbmUgSEFWRV9OU1MgMSAqLworCisKKy8qCisgKiBTb21lIHNldHRpbmdzIGZvciBPcGVuU1NMIGlmIHdlIGhhdmUgaXQKKyAqCisgKi8KKworI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKworIwlpbmNsdWRlIDxvcGVuc3NsL29wZW5zc2x2Lmg+CisjCWlmIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MDA5MDcwMDApCisKKyMJCWRlZmluZSBYU0VDX09QRU5TU0xfQ09OU1RfQlVGRkVSUworIwkJZGVmaW5lIFhTRUNfT1BFTlNTTF9IQVZFX0FFUworIyAgICAgICBkZWZpbmUgWFNFQ19PUEVOU1NMX0hBVkVfRUMKKyMJCWRlZmluZSBYU0VDX09QRU5TU0xfQ0FOU0VUX1BBRERJTkcKKyMJCWRlZmluZSBYU0VDX09QRU5TU0xfSEFWRV9DUllQVE9fQ0xFQU5VUF9BTExfRVhfREFUQQorIwllbmRpZgorIwlpZiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDAwOTA4MDAwKQorIwkJZGVmaW5lIFhTRUNfT1BFTlNTTF9EMklYNTA5X0NPTlNUX0JVRkZFUgorIwllbmRpZgorCisjZW5kaWYKKworLyoKKyAqIE1hY3JvcyB1c2VkIHRvIGRldGVybWluZSB3aGF0IGhlYWRlciBmaWxlcyBleGlzdCBvbiB0aGlzCisgKiBzeXN0ZW0KKyAqLworCisvKiBQb3NpeCB1bmlzdGQuaCAqLworLyogI2RlZmluZSBIQVZFX1VOSVNURF9IICovCisKKy8qIFdpbmRvd3MgZGlyZWN0LmggKi8KKyNkZWZpbmUgSEFWRV9ESVJFQ1RfSCAxCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgVmVyc2lvbiBIYW5kbGluZworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLyoKKyAqIFRoZSBmb2xsb3dpbmcgY29kZSBtYWtlcyB1c2Ugb2YgdGhlIFhlcmNlcyB2ZXJzaW9uIGhhbmRsaW5nIG1hY3JvcyB0byBkZWZpbmUKKyAqIHNvbWUgY29uc3RhbnRzIHRoYXQgY2FuIGJlIHVzZWQgZHVyaW5nIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLgorICovCisKKy8qIFRoaXMgY2FuIGJlIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGFuZCBmb3IgdGVzdGluZyBkdXJpbmcKKyAqIGF1dG9jb25maWd1cmVzLgorICoKKyAqIEl0IHdpbGwgY3JlYXRlIGEgc3RyaW5nIG9mIHRoZSBmb3JtIDEwMDAwICogTUFKT1IgKyAxMDAgKiBNRURJVU0gKyBNSU5PUgorICogRS5nLiAxMDMwMSBmb3IgdmVyc2lvbiAxLjMuMQorICovCisKKyNkZWZpbmUgX1hTRUNfVkVSU0lPTl9GVUxMIENBTENfRVhQQU5ERURfRk9STSAoWFNFQ19WRVJTSU9OX01BSk9SLFhTRUNfVkVSU0lPTl9NRURJVU0sWFNFQ19WRVJTSU9OX01JTk9SKQorCisvKiBTb21lIHVzZWZ1bCBzdHJpbmdzIGZvciB2ZXJzaW9uaW5nIC0gYmFzZWQgb24gdGhlIHNhbWUgc3RyaW5ncyBmcm9tIFhlcmNlcyAqLworCisjZGVmaW5lIFhTRUNfRlVMTFZFUlNJT05TVFIgSU5WS19DQVQzX1NFUF9VTkRFUlNDT1JFKFhTRUNfVkVSU0lPTl9NQUpPUixYU0VDX1ZFUlNJT05fTUVESVVNLFhTRUNfVkVSU0lPTl9NSU5PUikKKyNkZWZpbmUgWFNFQ19GVUxMVkVSU0lPTkRPVCBJTlZLX0NBVDNfU0VQX1BFUklPRChYU0VDX1ZFUlNJT05fTUFKT1IsWFNFQ19WRVJTSU9OX01FRElVTSxYU0VDX1ZFUlNJT05fTUlOT1IpCisjZGVmaW5lIFhTRUNfRlVMTFZFUlNJT05OVU0gSU5WS19DQVQzX1NFUF9OSUwoWFNFQ19WRVJTSU9OX01BSk9SLFhTRUNfVkVSU0lPTl9NRURJVU0sWFNFQ19WRVJTSU9OX01JTk9SKQorI2RlZmluZSBYU0VDX1ZFUlNJT05TVFIgICAgIElOVktfQ0FUMl9TRVBfVU5ERVJTQ09SRShYU0VDX1ZFUlNJT05fTUFKT1IsWFNFQ19WRVJTSU9OX01FRElVTSkKKworLyogVGhlIGZvbGxvd2luZyBpcyB1c2VkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHZlcnNpb24gaGFuZGxpbmcgKi8KKworI2RlZmluZSBYU0VDX1ZFUlNJT04JICAgICAiWFNFQ19GVUxMVkVSU0lPTkRPVCIKKworCmRpZmYgLS1naXQgYS9jL3NyYy9mcmFtZXdvcmsvcmVzb3VyY2UuaCBiL2Mvc3JjL2ZyYW1ld29yay9yZXNvdXJjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjZjBjNzgKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9mcmFtZXdvcmsvcmVzb3VyY2UuaApAQCAtMCwwICsxLDE1IEBACisvL3t7Tk9fREVQRU5ERU5DSUVTfX0KKy8vIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIGdlbmVyYXRlZCBpbmNsdWRlIGZpbGUuCisvLyBVc2VkIGJ5IHZlcnNpb24ucmMKKy8vCisKKy8vIE5leHQgZGVmYXVsdCB2YWx1ZXMgZm9yIG5ldyBvYmplY3RzCisvLyAKKyNpZmRlZiBBUFNUVURJT19JTlZPS0VECisjaWZuZGVmIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMKKyNkZWZpbmUgX0FQU19ORVhUX1JFU09VUkNFX1ZBTFVFICAgICAgICAxMDEKKyNkZWZpbmUgX0FQU19ORVhUX0NPTU1BTkRfVkFMVUUgICAgICAgICA0MDAwMQorI2RlZmluZSBfQVBTX05FWFRfQ09OVFJPTF9WQUxVRSAgICAgICAgIDEwMDAKKyNkZWZpbmUgX0FQU19ORVhUX1NZTUVEX1ZBTFVFICAgICAgICAgICAxMDEKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9jL3NyYy9mcmFtZXdvcmsvdmVyc2lvbi5yYyBiL2Mvc3JjL2ZyYW1ld29yay92ZXJzaW9uLnJjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ZTZiMzMKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9mcmFtZXdvcmsvdmVyc2lvbi5yYwpAQCAtMCwwICsxLDExNyBAQAorLy9NaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBnZW5lcmF0ZWQgcmVzb3VyY2Ugc2NyaXB0LgorLy8KKyNpbmNsdWRlICJyZXNvdXJjZS5oIgorCisjZGVmaW5lIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gR2VuZXJhdGVkIGZyb20gdGhlIFRFWFRJTkNMVURFIDIgcmVzb3VyY2UuCisvLworI2luY2x1ZGUgImFmeHJlcy5oIgorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworI3VuZGVmIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIEVuZ2xpc2ggKEF1c3RyYWxpYSkgcmVzb3VyY2VzCisKKyNpZiAhZGVmaW5lZChBRlhfUkVTT1VSQ0VfRExMKSB8fCBkZWZpbmVkKEFGWF9UQVJHX0VOQSkKKyNpZmRlZiBfV0lOMzIKK0xBTkdVQUdFIExBTkdfRU5HTElTSCwgU1VCTEFOR19FTkdMSVNIX0FVUworI3ByYWdtYSBjb2RlX3BhZ2UoMTI1MikKKyNlbmRpZiAvL19XSU4zMgorCisjaWZkZWYgQVBTVFVESU9fSU5WT0tFRAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBURVhUSU5DTFVERQorLy8KKworMSBURVhUSU5DTFVERSBNT1ZFQUJMRSBQVVJFIAorQkVHSU4KKyAgICAicmVzb3VyY2UuaFwwIgorRU5ECisKKzIgVEVYVElOQ0xVREUgTU9WRUFCTEUgUFVSRSAKK0JFR0lOCisgICAgIiNpbmNsdWRlICIiYWZ4cmVzLmgiIlxyXG4iCisgICAgIlwwIgorRU5ECisKKzMgVEVYVElOQ0xVREUgTU9WRUFCTEUgUFVSRSAKK0JFR0lOCisgICAgIlxyXG4iCisgICAgIlwwIgorRU5ECisKKyNlbmRpZiAgICAvLyBBUFNUVURJT19JTlZPS0VECisKKworI2lmbmRlZiBfTUFDCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIFZlcnNpb24KKy8vCisKK1ZTX1ZFUlNJT05fSU5GTyBWRVJTSU9OSU5GTworIEZJTEVWRVJTSU9OIDEsNiwwLDAKKyBQUk9EVUNUVkVSU0lPTiAxLDYsMCwwCisgRklMRUZMQUdTTUFTSyAweDNmTAorI2lmZGVmIF9ERUJVRworIEZJTEVGTEFHUyAweDFMCisjZWxzZQorIEZJTEVGTEFHUyAweDBMCisjZW5kaWYKKyBGSUxFT1MgMHg0MDAwNEwKKyBGSUxFVFlQRSAweDJMCisgRklMRVNVQlRZUEUgMHgwTAorQkVHSU4KKyAgICBCTE9DSyAiU3RyaW5nRmlsZUluZm8iCisgICAgQkVHSU4KKyAgICAgICAgQkxPQ0sgIjBjMDkwNGIwIgorICAgICAgICBCRUdJTgorICAgICAgICAgICAgVkFMVUUgIkNvbW1lbnRzIiwgIlwwIgorICAgICAgICAgICAgVkFMVUUgIkNvbXBhbnlOYW1lIiwgIlRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvblwwIgorICAgICAgICAgICAgVkFMVUUgIkZpbGVEZXNjcmlwdGlvbiIsICJYTUwgU2VjdXJpdHkgQysrIExpYnJhcnlcMCIKKyAgICAgICAgICAgIFZBTFVFICJGaWxlVmVyc2lvbiIsICIxLCA2LCAwLCAwXDAiCisjaWZkZWYgX0RFQlVHCisgICAgICAgICAgICBWQUxVRSAiSW50ZXJuYWxOYW1lIiwgInhzZWNfMV82RFwwIgorI2Vsc2UKKyAgICAgICAgICAgIFZBTFVFICJJbnRlcm5hbE5hbWUiLCAieHNlY18xXzZcMCIKKyNlbmRpZgorICAgICAgICAgICAgVkFMVUUgIkxlZ2FsQ29weXJpZ2h0IiwgIkNvcHlyaWdodCCpIDIwMDItMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb25cMCIKKyAgICAgICAgICAgIFZBTFVFICJMZWdhbFRyYWRlbWFya3MiLCAiXDAiCisjaWZkZWYgX0RFQlVHCisgICAgICAgICAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsICJ4c2VjXzFfNkQuZGxsXDAiCisjZWxzZQorICAgICAgICAgICAgVkFMVUUgIk9yaWdpbmFsRmlsZW5hbWUiLCAieHNlY18xXzYuZGxsXDAiCisjZW5kaWYKKyAgICAgICAgICAgIFZBTFVFICJQcml2YXRlQnVpbGQiLCAiXDAiCisgICAgICAgICAgICBWQUxVRSAiUHJvZHVjdE5hbWUiLCAiWE1MLVNlY3VyaXR5LUMgLSBDKysgWE1MIFNlY3VyaXR5IExpYnJhcnlcMCIKKyAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0VmVyc2lvbiIsICIxLCA2LCAwLCAwXDAiCisgICAgICAgICAgICBWQUxVRSAiU3BlY2lhbEJ1aWxkIiwgIlwwIgorICAgICAgICBFTkQKKyAgICBFTkQKKyAgICBCTE9DSyAiVmFyRmlsZUluZm8iCisgICAgQkVHSU4KKyAgICAgICAgVkFMVUUgIlRyYW5zbGF0aW9uIiwgMHhjMDksIDEyMDAKKyAgICBFTkQKK0VORAorCisjZW5kaWYgICAgLy8gIV9NQUMKKworI2VuZGlmICAgIC8vIEVuZ2xpc2ggKEF1c3RyYWxpYSkgcmVzb3VyY2VzCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisKKworI2lmbmRlZiBBUFNUVURJT19JTlZPS0VECisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIEdlbmVyYXRlZCBmcm9tIHRoZSBURVhUSU5DTFVERSAzIHJlc291cmNlLgorLy8KKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworI2VuZGlmICAgIC8vIG5vdCBBUFNUVURJT19JTlZPS0VECisKZGlmZiAtLWdpdCBhL2Mvc3JjL3NhbXBsZXMvSU9TdHJlYW1PdXRwdXR0ZXIuY3BwIGIvYy9zcmMvc2FtcGxlcy9JT1N0cmVhbU91dHB1dHRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNjN2E1YQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3NhbXBsZXMvSU9TdHJlYW1PdXRwdXR0ZXIuY3BwCkBAIC0wLDAgKzEsOTQxIEBACisvKgorICogQ29weXJpZ2h0IDIwMDMtMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBJT1N0cmVhbU91dHB1dGVyLmNwcCA6PSBVc2VkIGJ5IGFsbCBzYW1wbGVzIHRoYXQgbmVlZCB0byBvdXRwdXQgYSBET00gZG9jdW1lbnQKKyAqCQkJCQkJCXRvIGFuIElPU3RyZWFtCisgKgorICoJCQkJCQkJVmVyeSB1Z2x5IC0gc2hvdWxkIHJlYWxseSBiZSBhIGNsYXNzLiAgVGhlIG9yaWdpbmFsCisgKgkJCQkJCQlYZXJjZXMgZXhhbXBsZXMgaGFkIHRoaXMgYXMgcGFydCBvZiBhIHNpbmdsZSBDUFAgZmlsZSBmb3IKKyAqCQkJCQkJCU9uZSBvdmVyYWxsIGV4YW1wbGUgLSBtdWNoIG5pY2VyLgorICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJRCQKKyAqCisgKiAkTE9HJAorICoKKyAqLworCisjaW5jbHVkZSAiSU9TdHJlYW1PdXRwdXR0ZXIuaHBwIgorI2luY2x1ZGUgPHhlcmNlc2MvcGFyc2Vycy9YZXJjZXNET01QYXJzZXIuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4KKyNpbmNsdWRlIDxtZW1vcnkuaD4KKworLy8gVXBsaWZ0IGV2ZXJ5dGhpbmcgdG8gdGhlIFhlcmNlcyBuYW1lIHNwYWNlCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIE11Y2ggY29kZSB0YWtlbiBmcm9tIHRoZSBET01QcmludCBYZXJjZXMgZXhhbXBsZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljIFhNTEZvcm1hdHRlciogICAgICAgICAgICBnRm9ybWF0dGVyICAgICAgICAgICAgID0gMDsKK3N0YXRpYyBYTUxDaCogICAgICAgICAgICAgICAgICAgZ0VuY29kaW5nTmFtZSAgICAgICAgICA9IDA7CitzdGF0aWMgWE1MRm9ybWF0dGVyOjpVblJlcEZsYWdzIGdVblJlcEZsYWdzICAgICAgICAgICAgPSBYTUxGb3JtYXR0ZXI6OlVuUmVwX0NoYXJSZWY7CisKKworCisKK3N0YXRpYyBjb25zdCBYTUxDaCAgZ0VuZEVsZW1lbnRbXSA9IHsgY2hPcGVuQW5nbGUsIGNoRm9yd2FyZFNsYXNoLCBjaE51bGwgfTsKK3N0YXRpYyBjb25zdCBYTUxDaCAgZ0VuZFBJW10gPSB7IGNoUXVlc3Rpb24sIGNoQ2xvc2VBbmdsZSwgY2hOdWxsfTsKK3N0YXRpYyBjb25zdCBYTUxDaCAgZ1N0YXJ0UElbXSA9IHsgY2hPcGVuQW5nbGUsIGNoUXVlc3Rpb24sIGNoTnVsbCB9Oworc3RhdGljIGNvbnN0IFhNTENoICBnWE1MRGVjbDFbXSA9Cit7CisgICAgICAgIGNoT3BlbkFuZ2xlLCBjaFF1ZXN0aW9uLCBjaExhdGluX3gsIGNoTGF0aW5fbSwgY2hMYXRpbl9sCisgICAgLCAgIGNoU3BhY2UsIGNoTGF0aW5fdiwgY2hMYXRpbl9lLCBjaExhdGluX3IsIGNoTGF0aW5fcywgY2hMYXRpbl9pCisgICAgLCAgIGNoTGF0aW5fbywgY2hMYXRpbl9uLCBjaEVxdWFsLCBjaERvdWJsZVF1b3RlLCBjaE51bGwKK307CitzdGF0aWMgY29uc3QgWE1MQ2ggIGdYTUxEZWNsMltdID0KK3sKKyAgICAgICAgY2hEb3VibGVRdW90ZSwgY2hTcGFjZSwgY2hMYXRpbl9lLCBjaExhdGluX24sIGNoTGF0aW5fYworICAgICwgICBjaExhdGluX28sIGNoTGF0aW5fZCwgY2hMYXRpbl9pLCBjaExhdGluX24sIGNoTGF0aW5fZywgY2hFcXVhbAorICAgICwgICBjaERvdWJsZVF1b3RlLCBjaE51bGwKK307CitzdGF0aWMgY29uc3QgWE1MQ2ggIGdYTUxEZWNsM1tdID0KK3sKKyAgICAgICAgY2hEb3VibGVRdW90ZSwgY2hTcGFjZSwgY2hMYXRpbl9zLCBjaExhdGluX3QsIGNoTGF0aW5fYQorICAgICwgICBjaExhdGluX24sIGNoTGF0aW5fZCwgY2hMYXRpbl9hLCBjaExhdGluX2wsIGNoTGF0aW5fbworICAgICwgICBjaExhdGluX24sIGNoTGF0aW5fZSwgY2hFcXVhbCwgY2hEb3VibGVRdW90ZSwgY2hOdWxsCit9Oworc3RhdGljIGNvbnN0IFhNTENoICBnWE1MRGVjbDRbXSA9Cit7CisgICAgICAgIGNoRG91YmxlUXVvdGUsIGNoUXVlc3Rpb24sIGNoQ2xvc2VBbmdsZQorICAgICwgICBjaExGLCBjaE51bGwKK307CisKK3N0YXRpYyBjb25zdCBYTUxDaCAgZ1N0YXJ0Q0RBVEFbXSA9Cit7CisgICAgICAgIGNoT3BlbkFuZ2xlLCBjaEJhbmcsIGNoT3BlblNxdWFyZSwgY2hMYXRpbl9DLCBjaExhdGluX0QsCisgICAgICAgIGNoTGF0aW5fQSwgY2hMYXRpbl9ULCBjaExhdGluX0EsIGNoT3BlblNxdWFyZSwgY2hOdWxsCit9OworCitzdGF0aWMgY29uc3QgWE1MQ2ggIGdFbmRDREFUQVtdID0KK3sKKyAgICBjaENsb3NlU3F1YXJlLCBjaENsb3NlU3F1YXJlLCBjaENsb3NlQW5nbGUsIGNoTnVsbAorfTsKK3N0YXRpYyBjb25zdCBYTUxDaCAgZ1N0YXJ0Q29tbWVudFtdID0KK3sKKyAgICBjaE9wZW5BbmdsZSwgY2hCYW5nLCBjaERhc2gsIGNoRGFzaCwgY2hOdWxsCit9OworCitzdGF0aWMgY29uc3QgWE1MQ2ggIGdFbmRDb21tZW50W10gPQoreworICAgIGNoRGFzaCwgY2hEYXNoLCBjaENsb3NlQW5nbGUsIGNoTnVsbAorfTsKKworc3RhdGljIGNvbnN0IFhNTENoICBnU3RhcnREb2N0eXBlW10gPQoreworICAgIGNoT3BlbkFuZ2xlLCBjaEJhbmcsIGNoTGF0aW5fRCwgY2hMYXRpbl9PLCBjaExhdGluX0MsIGNoTGF0aW5fVCwKKyAgICBjaExhdGluX1ksIGNoTGF0aW5fUCwgY2hMYXRpbl9FLCBjaFNwYWNlLCBjaE51bGwKK307CitzdGF0aWMgY29uc3QgWE1MQ2ggIGdQdWJsaWNbXSA9Cit7CisgICAgY2hMYXRpbl9QLCBjaExhdGluX1UsIGNoTGF0aW5fQiwgY2hMYXRpbl9MLCBjaExhdGluX0ksCisgICAgY2hMYXRpbl9DLCBjaFNwYWNlLCBjaERvdWJsZVF1b3RlLCBjaE51bGwKK307CitzdGF0aWMgY29uc3QgWE1MQ2ggIGdTeXN0ZW1bXSA9Cit7CisgICAgY2hMYXRpbl9TLCBjaExhdGluX1ksIGNoTGF0aW5fUywgY2hMYXRpbl9ULCBjaExhdGluX0UsCisgICAgY2hMYXRpbl9NLCBjaFNwYWNlLCBjaERvdWJsZVF1b3RlLCBjaE51bGwKK307CitzdGF0aWMgY29uc3QgWE1MQ2ggIGdTdGFydEVudGl0eVtdID0KK3sKKyAgICBjaE9wZW5BbmdsZSwgY2hCYW5nLCBjaExhdGluX0UsIGNoTGF0aW5fTiwgY2hMYXRpbl9ULCBjaExhdGluX0ksCisgICAgY2hMYXRpbl9ULCBjaExhdGluX1ksIGNoU3BhY2UsIGNoTnVsbAorfTsKK3N0YXRpYyBjb25zdCBYTUxDaCAgZ05vdGF0aW9uW10gPQoreworICAgIGNoTGF0aW5fTiwgY2hMYXRpbl9ELCBjaExhdGluX0EsIGNoTGF0aW5fVCwgY2hMYXRpbl9BLAorICAgIGNoU3BhY2UsIGNoRG91YmxlUXVvdGUsIGNoTnVsbAorfTsKKworCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gIExvY2FsIGNsYXNzZXMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjbGFzcyBET01QcmludEZvcm1hdFRhcmdldCA6IHB1YmxpYyBYTUxGb3JtYXRUYXJnZXQKK3sKK3B1YmxpYzoKKyAgICBET01QcmludEZvcm1hdFRhcmdldCgpICB7fTsKKyAgICB+RE9NUHJpbnRGb3JtYXRUYXJnZXQoKSB7fTsKKworICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gIEltcGxlbWVudGF0aW9ucyBvZiB0aGUgZm9ybWF0IHRhcmdldCBpbnRlcmZhY2UKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgdm9pZCB3cml0ZUNoYXJzKGNvbnN0ICAgWE1MQnl0ZSogY29uc3QgIHRvV3JpdGUsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0ICAgeHNlY3NpemVfdCAgICBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxGb3JtYXR0ZXIgKiBjb25zdCBmb3JtYXR0ZXIpCisgICAgeworICAgICAgICAvLyBTdXJwcmlzaW5nbHksIFNvbGFyaXMgd2FzIHRoZSBvbmx5IHBsYXRmb3JtIG9uIHdoaWNoCisgICAgICAgIC8vIHJlcXVpcmVkIHRoZSBjaGFyKiBjYXN0IHRvIHByaW50IG91dCB0aGUgc3RyaW5nIGNvcnJlY3RseS4KKyAgICAgICAgLy8gV2l0aG91dCB0aGUgY2FzdCwgaXQgd2FzIHByaW50aW5nIHRoZSBwb2ludGVyIHZhbHVlIGluIGhleC4KKyAgICAgICAgLy8gUXVpdGUgYW5ub3lpbmcsIGNvbnNpZGVyaW5nIGV2ZXJ5IG90aGVyIHBsYXRmb3JtIHByaW50ZWQKKyAgICAgICAgLy8gdGhlIHN0cmluZyB3aXRoIHRoZSBleHBsaWNpdCBjYXN0IHRvIGNoYXIqIGJlbG93LgorICAgICAgICBjb3V0LndyaXRlKChjaGFyICopIHRvV3JpdGUsIGNvdW50KTsKKyAgICB9OworCitwcml2YXRlOgorICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gIFVuaW1wbGVtZW50ZWQgbWV0aG9kcy4KKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIERPTVByaW50Rm9ybWF0VGFyZ2V0KGNvbnN0IERPTVByaW50Rm9ybWF0VGFyZ2V0JiBvdGhlcik7CisgICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgRE9NUHJpbnRGb3JtYXRUYXJnZXQmIHJocyk7Cit9OworCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gIG9zdHJlYW0gPDwgRE9NTm9kZQorLy8KKy8vICBTdHJlYW0gb3V0IGEgRE9NIG5vZGUsIGFuZCwgcmVjdXJzaXZlbHksIGFsbCBvZiBpdHMgY2hpbGRyZW4uIFRoaXMKKy8vICBmdW5jdGlvbiBpcyB0aGUgaGVhcnQgb2Ygd3JpdGluZyBhIERPTSB0cmVlIG91dCBhcyBYTUwgc291cmNlLiBHaXZlIGl0CisvLyAgYSBkb2N1bWVudCBub2RlIGFuZCBpdCB3aWxsIGRvIHRoZSB3aG9sZSB0aGluZy4KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiB0YXJnZXQsIERPTU5vZGUqIHRvV3JpdGUpCit7CisgICAgLy8gR2V0IHRoZSBuYW1lIGFuZCB2YWx1ZSBvdXQgZm9yIGNvbnZlbmllbmNlCisgICAgY29uc3QgWE1MQ2gqICAgbm9kZU5hbWUgPSB0b1dyaXRlLT5nZXROb2RlTmFtZSgpOworICAgIGNvbnN0IFhNTENoKiAgIG5vZGVWYWx1ZSA9IHRvV3JpdGUtPmdldE5vZGVWYWx1ZSgpOworICAgIHhzZWNzaXplX3QgbGVudCA9IFhNTFN0cmluZzo6c3RyaW5nTGVuKG5vZGVWYWx1ZSk7CisKKyAgICBzd2l0Y2ggKHRvV3JpdGUtPmdldE5vZGVUeXBlKCkpCisgICAgeworICAgICAgICBjYXNlIERPTU5vZGU6OlRFWFRfTk9ERToKKyAgICAgICAgeworICAgICAgICAgICAgZ0Zvcm1hdHRlci0+Zm9ybWF0QnVmKG5vZGVWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW50LCBYTUxGb3JtYXR0ZXI6OkNoYXJFc2NhcGVzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKworICAgICAgICBjYXNlIERPTU5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSA6CisgICAgICAgIHsKKyAgICAgICAgICAgICpnRm9ybWF0dGVyIDw8IFhNTEZvcm1hdHRlcjo6Tm9Fc2NhcGVzIDw8IGdTdGFydFBJICA8PCBub2RlTmFtZTsKKyAgICAgICAgICAgIGlmIChsZW50ID4gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAqZ0Zvcm1hdHRlciA8PCBjaFNwYWNlIDw8IG5vZGVWYWx1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICpnRm9ybWF0dGVyIDw8IFhNTEZvcm1hdHRlcjo6Tm9Fc2NhcGVzIDw8IGdFbmRQSTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKworICAgICAgICBjYXNlIERPTU5vZGU6OkRPQ1VNRU5UX05PREUgOgorICAgICAgICB7CisKKyAgICAgICAgICAgIERPTU5vZGUgKmNoaWxkID0gdG9Xcml0ZS0+Z2V0Rmlyc3RDaGlsZCgpOworICAgICAgICAgICAgd2hpbGUoIGNoaWxkICE9IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGFyZ2V0IDw8IGNoaWxkOworICAgICAgICAgICAgICAgIC8vIGFkZCBsaW5lZmVlZCBpbiByZXF1ZXN0ZWQgb3V0cHV0IGVuY29kaW5nCisgICAgICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgY2hMRjsKKyAgICAgICAgICAgICAgICB0YXJnZXQgPDwgZmx1c2g7CisgICAgICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC0+Z2V0TmV4dFNpYmxpbmcoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKworICAgICAgICBjYXNlIERPTU5vZGU6OkVMRU1FTlRfTk9ERSA6CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRoZSBuYW1lIGhhcyB0byBiZSByZXByZXNlbnRhYmxlIHdpdGhvdXQgYW55IGVzY2FwZXMKKyAgICAgICAgICAgICpnRm9ybWF0dGVyICA8PCBYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcworICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGNoT3BlbkFuZ2xlIDw8IG5vZGVOYW1lOworCisgICAgICAgICAgICAvLyBPdXRwdXQgdGhlIGVsZW1lbnQgc3RhcnQgdGFnLgorCisgICAgICAgICAgICAvLyBPdXRwdXQgYW55IGF0dHJpYnV0ZXMgb24gdGhpcyBlbGVtZW50CisgICAgICAgICAgICBET01OYW1lZE5vZGVNYXAgKmF0dHJpYnV0ZXMgPSB0b1dyaXRlLT5nZXRBdHRyaWJ1dGVzKCk7CisgICAgICAgICAgICBYTUxTaXplX3QgYXR0ckNvdW50ID0gYXR0cmlidXRlcy0+Z2V0TGVuZ3RoKCk7CisgICAgICAgICAgICBmb3IgKFhNTFNpemVfdCBpID0gMDsgaSA8IGF0dHJDb3VudDsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIERPTU5vZGUgICphdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzLT5pdGVtKGkpOworCisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAvLyAgQWdhaW4gdGhlIG5hbWUgaGFzIHRvIGJlIGNvbXBsZXRlbHkgcmVwcmVzZW50YWJsZS4gQnV0IHRoZQorICAgICAgICAgICAgICAgIC8vICBhdHRyaWJ1dGUgY2FuIGhhdmUgcmVmcyBhbmQgcmVxdWlyZXMgdGhlIGF0dHJpYnV0ZSBzdHlsZQorICAgICAgICAgICAgICAgIC8vICBlc2NhcGluZy4KKyAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAgICpnRm9ybWF0dGVyICA8PCBYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBjaFNwYWNlIDw8IGF0dHJpYnV0ZS0+Z2V0Tm9kZU5hbWUoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBjaEVxdWFsIDw8IGNoRG91YmxlUXVvdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgWE1MRm9ybWF0dGVyOjpBdHRyRXNjYXBlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBhdHRyaWJ1dGUtPmdldE5vZGVWYWx1ZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IFhNTEZvcm1hdHRlcjo6Tm9Fc2NhcGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGNoRG91YmxlUXVvdGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyAgVGVzdCBmb3IgdGhlIHByZXNlbmNlIG9mIGNoaWxkcmVuLCB3aGljaCBpbmNsdWRlcyBib3RoCisgICAgICAgICAgICAvLyAgdGV4dCBjb250ZW50IGFuZCBuZXN0ZWQgZWxlbWVudHMuCisgICAgICAgICAgICAvLworICAgICAgICAgICAgRE9NTm9kZSAqY2hpbGQgPSB0b1dyaXRlLT5nZXRGaXJzdENoaWxkKCk7CisgICAgICAgICAgICBpZiAoY2hpbGQgIT0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBUaGVyZSBhcmUgY2hpbGRyZW4uIENsb3NlIHN0YXJ0LXRhZywgYW5kIG91dHB1dCBjaGlsZHJlbi4KKyAgICAgICAgICAgICAgICAvLyBObyBlc2NhcGVzIGFyZSBsZWdhbCBoZXJlCisgICAgICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMgPDwgY2hDbG9zZUFuZ2xlOworCisgICAgICAgICAgICAgICAgd2hpbGUoIGNoaWxkICE9IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPDwgY2hpbGQ7CisgICAgICAgICAgICAgICAgICAgIGNoaWxkID0gY2hpbGQtPmdldE5leHRTaWJsaW5nKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAvLyBEb25lIHdpdGggY2hpbGRyZW4uICBPdXRwdXQgdGhlIGVuZCB0YWcuCisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAqZ0Zvcm1hdHRlciA8PCBYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcyA8PCBnRW5kRWxlbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IG5vZGVOYW1lIDw8IGNoQ2xvc2VBbmdsZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAgIC8vICBUaGVyZSB3ZXJlIG5vIGNoaWxkcmVuLiBPdXRwdXQgdGhlIHNob3J0IGZvcm0gY2xvc2Ugb2YKKyAgICAgICAgICAgICAgICAvLyAgdGhlIGVsZW1lbnQgc3RhcnQgdGFnLCBtYWtpbmcgaXQgYW4gZW1wdHktZWxlbWVudCB0YWcuCisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAqZ0Zvcm1hdHRlciA8PCBYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcyA8PCBjaEZvcndhcmRTbGFzaCA8PCBjaENsb3NlQW5nbGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisKKyAgICAgICAgY2FzZSBET01Ob2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREU6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy9ET01Ob2RlICpjaGlsZDsKKyNpZiAwCisgICAgICAgICAgICAgICAgZm9yIChjaGlsZCA9IHRvV3JpdGUuZ2V0Rmlyc3RDaGlsZCgpOworICAgICAgICAgICAgICAgIGNoaWxkICE9IDA7CisgICAgICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC5nZXROZXh0U2libGluZygpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IDw8IGNoaWxkOworICAgICAgICAgICAgICAgIH0KKyNlbHNlCisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAvLyBJbnN0ZWFkIG9mIHByaW50aW5nIHRoZSByZWZlcm5lY2UgdHJlZQorICAgICAgICAgICAgICAgIC8vIHdlJ2Qgb3V0cHV0IHRoZSBhY3R1YWwgdGV4dCBhcyBpdCBhcHBlYXJlZCBpbiB0aGUgeG1sIGZpbGUuCisgICAgICAgICAgICAgICAgLy8gVGhpcyB3b3VsZCBiZSB0aGUgY2FzZSB3aGVuIC1lIG9wdGlvbiB3YXMgY2hvc2VuCisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMgPDwgY2hBbXBlcnNhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDw8IG5vZGVOYW1lIDw8IGNoU2VtaUNvbG9uOworI2VuZGlmCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKworICAgICAgICBjYXNlIERPTU5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICpnRm9ybWF0dGVyIDw8IFhNTEZvcm1hdHRlcjo6Tm9Fc2NhcGVzIDw8IGdTdGFydENEQVRBCisgICAgICAgICAgICAgICAgICAgICAgICA8PCBub2RlVmFsdWUgPDwgZ0VuZENEQVRBOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworCisgICAgICAgIGNhc2UgRE9NTm9kZTo6Q09NTUVOVF9OT0RFOgorICAgICAgICB7CisgICAgICAgICAgICAqZ0Zvcm1hdHRlciA8PCBYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcyA8PCBnU3RhcnRDb21tZW50CisgICAgICAgICAgICAgICAgICAgICAgICA8PCBub2RlVmFsdWUgPDwgZ0VuZENvbW1lbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisKKyAgICAgICAgY2FzZSBET01Ob2RlOjpET0NVTUVOVF9UWVBFX05PREU6CisgICAgICAgIHsKKyAgICAgICAgICAgIERPTURvY3VtZW50VHlwZSAqZG9jdHlwZSA9IChET01Eb2N1bWVudFR5cGUgKil0b1dyaXRlOzsKKworICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMgIDw8IGdTdGFydERvY3R5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDw8IG5vZGVOYW1lOworCisgICAgICAgICAgICBjb25zdCBYTUxDaCogaWQgPSBkb2N0eXBlLT5nZXRQdWJsaWNJZCgpOworICAgICAgICAgICAgaWYgKGlkICE9IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMgPDwgY2hTcGFjZSA8PCBnUHVibGljCisgICAgICAgICAgICAgICAgICAgIDw8IGlkIDw8IGNoRG91YmxlUXVvdGU7CisgICAgICAgICAgICAgICAgaWQgPSBkb2N0eXBlLT5nZXRTeXN0ZW1JZCgpOworICAgICAgICAgICAgICAgIGlmIChpZCAhPSAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMgPDwgY2hTcGFjZQorICAgICAgICAgICAgICAgICAgICAgICA8PCBjaERvdWJsZVF1b3RlIDw8IGlkIDw8IGNoRG91YmxlUXVvdGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlkID0gZG9jdHlwZS0+Z2V0U3lzdGVtSWQoKTsKKyAgICAgICAgICAgICAgICBpZiAoaWQgIT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICpnRm9ybWF0dGVyIDw8IFhNTEZvcm1hdHRlcjo6Tm9Fc2NhcGVzIDw8IGNoU3BhY2UgPDwgZ1N5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgPDwgaWQgPDwgY2hEb3VibGVRdW90ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlkID0gZG9jdHlwZS0+Z2V0SW50ZXJuYWxTdWJzZXQoKTsKKyAgICAgICAgICAgIGlmIChpZCAhPTApCisgICAgICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMgPDwgY2hPcGVuU3F1YXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgaWQgPDwgY2hDbG9zZVNxdWFyZTsKKworICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMgPDwgY2hDbG9zZUFuZ2xlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworCisgICAgICAgIGNhc2UgRE9NTm9kZTo6RU5USVRZX05PREU6CisgICAgICAgIHsKKyAgICAgICAgICAgICpnRm9ybWF0dGVyIDw8IFhNTEZvcm1hdHRlcjo6Tm9Fc2NhcGVzIDw8IGdTdGFydEVudGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgPDwgbm9kZU5hbWU7CisKKyAgICAgICAgICAgIGNvbnN0IFhNTENoICogaWQgPSAoKERPTUVudGl0eSAqKXRvV3JpdGUpLT5nZXRQdWJsaWNJZCgpOworICAgICAgICAgICAgaWYgKGlkICE9IDApCisgICAgICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMgPDwgZ1B1YmxpYworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGlkIDw8IGNoRG91YmxlUXVvdGU7CisKKyAgICAgICAgICAgIGlkID0gKChET01FbnRpdHkgKil0b1dyaXRlKS0+Z2V0U3lzdGVtSWQoKTsKKyAgICAgICAgICAgIGlmIChpZCAhPSAwKQorICAgICAgICAgICAgICAgICpnRm9ybWF0dGVyIDw8IFhNTEZvcm1hdHRlcjo6Tm9Fc2NhcGVzIDw8IGdTeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBpZCA8PCBjaERvdWJsZVF1b3RlOworCisgICAgICAgICAgICBpZCA9ICgoRE9NRW50aXR5ICopdG9Xcml0ZSktPmdldE5vdGF0aW9uTmFtZSgpOworICAgICAgICAgICAgaWYgKGlkICE9IDApCisgICAgICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMgPDwgZ05vdGF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgaWQgPDwgY2hEb3VibGVRdW90ZTsKKworICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMgPDwgY2hDbG9zZUFuZ2xlIDw8IGNoTEY7CisKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKy8qCisgICAgICAgIGNhc2UgRE9NTm9kZTo6Tk9UQVRJT05fTk9ERToKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgWE1MQ2ggKiAgc3RyOworCisgICAgICAgICAgICAqZ0Zvcm1hdHRlciA8PCBnWE1MRGVjbDEgPDwgKChET01YTUxEZWNsICopdG9Xcml0ZSktPmdldFZlcnNpb24oKTsKKworICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgZ1hNTERlY2wyIDw8IGdFbmNvZGluZ05hbWU7CisKKyAgICAgICAgICAgIHN0ciA9ICgoRE9NWE1MRGVjbCAqKXRvV3JpdGUpLT5nZXRTdGFuZGFsb25lKCk7CisgICAgICAgICAgICBpZiAoc3RyICE9IDApCisgICAgICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgZ1hNTERlY2wzIDw8IHN0cjsKKworICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgZ1hNTERlY2w0OworCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisqLworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY2VyciA8PCAiVW5yZWNvZ25pemVkIG5vZGUgdHlwZSA9ICIKKyAgICAgICAgICAgICAgICAgPDwgKGxvbmcpdG9Xcml0ZS0+Z2V0Tm9kZVR5cGUoKSA8PCBlbmRsOworICAgIH0KKyAgICByZXR1cm4gdGFyZ2V0OworfQorCisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgb3N0cmVhbSA8PCBET01TdHJpbmcKKy8vCisvLyAgU3RyZWFtIG91dCBhIERPTSBzdHJpbmcuIERvaW5nIHRoaXMgcmVxdWlyZXMgdGhhdCB3ZSBmaXJzdCB0cmFuc2NvZGUKKy8vICB0byBjaGFyICogZm9ybSBpbiB0aGUgZGVmYXVsdCBjb2RlIHBhZ2UgZm9yIHRoZSBzeXN0ZW0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLypvc3RyZWFtJiBvcGVyYXRvcjw8IChvc3RyZWFtJiB0YXJnZXQsIGNvbnN0IERPTVN0cmluZyYgcykKK3sKKyAgICBjaGFyICpwID0gcy50cmFuc2NvZGUoKTsKKyAgICB0YXJnZXQgPDwgcDsKKyAgICBkZWxldGUgW10gcDsKKyAgICByZXR1cm4gdGFyZ2V0OworfQorCisKK1hNTEZvcm1hdHRlciYgb3BlcmF0b3I8PCAoWE1MRm9ybWF0dGVyJiBzdHJtLCBjb25zdCBET01TdHJpbmcmIHMpCit7CisgICAgdW5zaWduZWQgaW50IGxlbnQgPSBzLmxlbmd0aCgpOworCisJaWYgKGxlbnQgPD0gMCkKKwkJcmV0dXJuIHN0cm07CisKKyAgICBYTUxDaCogIGJ1ZiA9IG5ldyBYTUxDaFtsZW50ICsgMV07CisgICAgWE1MU3RyaW5nOjpjb3B5TlN0cmluZyhidWYsIHMucmF3QnVmZmVyKCksIGxlbnQpOworICAgIGJ1ZltsZW50XSA9IDA7CisgICAgc3RybSA8PCBidWY7CisgICAgZGVsZXRlIFtdIGJ1ZjsKKyAgICByZXR1cm4gc3RybTsKK30qLworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEVuZCBvZiBvdXRwdXR0ZXIKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIERPTU1lbUZvcm1hdFRhcmdldCA6IHB1YmxpYyBYTUxGb3JtYXRUYXJnZXQKK3sKK3B1YmxpYzoKKyAgICAKKwl1bnNpZ25lZCBjaGFyICogYnVmZmVyOwkJLy8gQnVmZmVyIHRvIHdyaXRlIHRvCisKKwlET01NZW1Gb3JtYXRUYXJnZXQoKSAge307CisgICAgfkRPTU1lbUZvcm1hdFRhcmdldCgpIHt9OworCisJdm9pZCBzZXRCdWZmZXIgKHVuc2lnbmVkIGNoYXIgKiB0b1NldCkge2J1ZmZlciA9IHRvU2V0O307CisKKworICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gIEltcGxlbWVudGF0aW9ucyBvZiB0aGUgZm9ybWF0IHRhcmdldCBpbnRlcmZhY2UKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgdm9pZCB3cml0ZUNoYXJzKGNvbnN0ICAgWE1MQnl0ZSogY29uc3QgIHRvV3JpdGUsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0ICAgdW5zaWduZWQgaW50ICAgIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTEZvcm1hdHRlciAqIGNvbnN0IGZvcm1hdHRlcikKKyAgICB7CisgICAgICAgIC8vIFN1cnByaXNpbmdseSwgU29sYXJpcyB3YXMgdGhlIG9ubHkgcGxhdGZvcm0gb24gd2hpY2gKKyAgICAgICAgLy8gcmVxdWlyZWQgdGhlIGNoYXIqIGNhc3QgdG8gcHJpbnQgb3V0IHRoZSBzdHJpbmcgY29ycmVjdGx5LgorICAgICAgICAvLyBXaXRob3V0IHRoZSBjYXN0LCBpdCB3YXMgcHJpbnRpbmcgdGhlIHBvaW50ZXIgdmFsdWUgaW4gaGV4LgorICAgICAgICAvLyBRdWl0ZSBhbm5veWluZywgY29uc2lkZXJpbmcgZXZlcnkgb3RoZXIgcGxhdGZvcm0gcHJpbnRlZAorICAgICAgICAvLyB0aGUgc3RyaW5nIHdpdGggdGhlIGV4cGxpY2l0IGNhc3QgdG8gY2hhciogYmVsb3cuCisgICAgICAgIG1lbWNweShidWZmZXIsIChjaGFyICopIHRvV3JpdGUsIChpbnQpIGNvdW50KTsKKwkJYnVmZmVyW2NvdW50XSA9ICdcMCc7CisgICAgfTsKKworcHJpdmF0ZToKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vICBVbmltcGxlbWVudGVkIG1ldGhvZHMuCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBET01NZW1Gb3JtYXRUYXJnZXQoY29uc3QgRE9NTWVtRm9ybWF0VGFyZ2V0JiBvdGhlcik7CisgICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgRE9NTWVtRm9ybWF0VGFyZ2V0JiByaHMpOworCisJCit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICBvc3RyZWFtIDw8IERPTVN0cmluZworLy8KKy8vICBTdHJlYW0gb3V0IGEgRE9NIHN0cmluZy4gRG9pbmcgdGhpcyByZXF1aXJlcyB0aGF0IHdlIGZpcnN0IHRyYW5zY29kZQorLy8gIHRvIGNoYXIgKiBmb3JtIGluIHRoZSBkZWZhdWx0IGNvZGUgcGFnZSBmb3IgdGhlIHN5c3RlbQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworRE9NUHJpbnRGb3JtYXRUYXJnZXQgKkRPTXRhcmdldDsKK0RPTU1lbUZvcm1hdFRhcmdldCAqTUVNdGFyZ2V0OworWE1MRm9ybWF0dGVyICpmb3JtYXR0ZXIsICpNRU1mb3JtYXR0ZXI7Cit1bnNpZ25lZCBjaGFyICpjaGFyQnVmZmVyOworCisjaWYgMAorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgTXVjaCBjb2RlIHRha2VuIGZyb20gdGhlIERPTVByaW50IFhlcmNlcyBleGFtcGxlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0aWMgWE1MRm9ybWF0dGVyKiAgICAgICAgICAgIGdGb3JtYXR0ZXIgICAgICAgICAgICAgPSAwOworc3RhdGljIFhNTENoKiAgICAgICAgICAgICAgICAgICBnRW5jb2RpbmdOYW1lICAgICAgICAgID0gMDsKK3N0YXRpYyBYTUxGb3JtYXR0ZXI6OlVuUmVwRmxhZ3MgZ1VuUmVwRmxhZ3MgICAgICAgICAgICA9IFhNTEZvcm1hdHRlcjo6VW5SZXBfQ2hhclJlZjsKKworCisKKworc3RhdGljIGNvbnN0IFhNTENoICBnRW5kRWxlbWVudFtdID0geyBjaE9wZW5BbmdsZSwgY2hGb3J3YXJkU2xhc2gsIGNoTnVsbCB9Oworc3RhdGljIGNvbnN0IFhNTENoICBnRW5kUElbXSA9IHsgY2hRdWVzdGlvbiwgY2hDbG9zZUFuZ2xlLCBjaE51bGx9Oworc3RhdGljIGNvbnN0IFhNTENoICBnU3RhcnRQSVtdID0geyBjaE9wZW5BbmdsZSwgY2hRdWVzdGlvbiwgY2hOdWxsIH07CitzdGF0aWMgY29uc3QgWE1MQ2ggIGdYTUxEZWNsMVtdID0KK3sKKyAgICAgICAgY2hPcGVuQW5nbGUsIGNoUXVlc3Rpb24sIGNoTGF0aW5feCwgY2hMYXRpbl9tLCBjaExhdGluX2wKKyAgICAsICAgY2hTcGFjZSwgY2hMYXRpbl92LCBjaExhdGluX2UsIGNoTGF0aW5fciwgY2hMYXRpbl9zLCBjaExhdGluX2kKKyAgICAsICAgY2hMYXRpbl9vLCBjaExhdGluX24sIGNoRXF1YWwsIGNoRG91YmxlUXVvdGUsIGNoTnVsbAorfTsKK3N0YXRpYyBjb25zdCBYTUxDaCAgZ1hNTERlY2wyW10gPQoreworICAgICAgICBjaERvdWJsZVF1b3RlLCBjaFNwYWNlLCBjaExhdGluX2UsIGNoTGF0aW5fbiwgY2hMYXRpbl9jCisgICAgLCAgIGNoTGF0aW5fbywgY2hMYXRpbl9kLCBjaExhdGluX2ksIGNoTGF0aW5fbiwgY2hMYXRpbl9nLCBjaEVxdWFsCisgICAgLCAgIGNoRG91YmxlUXVvdGUsIGNoTnVsbAorfTsKK3N0YXRpYyBjb25zdCBYTUxDaCAgZ1hNTERlY2wzW10gPQoreworICAgICAgICBjaERvdWJsZVF1b3RlLCBjaFNwYWNlLCBjaExhdGluX3MsIGNoTGF0aW5fdCwgY2hMYXRpbl9hCisgICAgLCAgIGNoTGF0aW5fbiwgY2hMYXRpbl9kLCBjaExhdGluX2EsIGNoTGF0aW5fbCwgY2hMYXRpbl9vCisgICAgLCAgIGNoTGF0aW5fbiwgY2hMYXRpbl9lLCBjaEVxdWFsLCBjaERvdWJsZVF1b3RlLCBjaE51bGwKK307CitzdGF0aWMgY29uc3QgWE1MQ2ggIGdYTUxEZWNsNFtdID0KK3sKKyAgICAgICAgY2hEb3VibGVRdW90ZSwgY2hRdWVzdGlvbiwgY2hDbG9zZUFuZ2xlCisgICAgLCAgIGNoTEYsIGNoTnVsbAorfTsKKworc3RhdGljIGNvbnN0IFhNTENoICBnU3RhcnRDREFUQVtdID0KK3sKKyAgICAgICAgY2hPcGVuQW5nbGUsIGNoQmFuZywgY2hPcGVuU3F1YXJlLCBjaExhdGluX0MsIGNoTGF0aW5fRCwKKyAgICAgICAgY2hMYXRpbl9BLCBjaExhdGluX1QsIGNoTGF0aW5fQSwgY2hPcGVuU3F1YXJlLCBjaE51bGwKK307CisKK3N0YXRpYyBjb25zdCBYTUxDaCAgZ0VuZENEQVRBW10gPQoreworICAgIGNoQ2xvc2VTcXVhcmUsIGNoQ2xvc2VTcXVhcmUsIGNoQ2xvc2VBbmdsZSwgY2hOdWxsCit9Oworc3RhdGljIGNvbnN0IFhNTENoICBnU3RhcnRDb21tZW50W10gPQoreworICAgIGNoT3BlbkFuZ2xlLCBjaEJhbmcsIGNoRGFzaCwgY2hEYXNoLCBjaE51bGwKK307CisKK3N0YXRpYyBjb25zdCBYTUxDaCAgZ0VuZENvbW1lbnRbXSA9Cit7CisgICAgY2hEYXNoLCBjaERhc2gsIGNoQ2xvc2VBbmdsZSwgY2hOdWxsCit9OworCitzdGF0aWMgY29uc3QgWE1MQ2ggIGdTdGFydERvY3R5cGVbXSA9Cit7CisgICAgY2hPcGVuQW5nbGUsIGNoQmFuZywgY2hMYXRpbl9ELCBjaExhdGluX08sIGNoTGF0aW5fQywgY2hMYXRpbl9ULAorICAgIGNoTGF0aW5fWSwgY2hMYXRpbl9QLCBjaExhdGluX0UsIGNoU3BhY2UsIGNoTnVsbAorfTsKK3N0YXRpYyBjb25zdCBYTUxDaCAgZ1B1YmxpY1tdID0KK3sKKyAgICBjaExhdGluX1AsIGNoTGF0aW5fVSwgY2hMYXRpbl9CLCBjaExhdGluX0wsIGNoTGF0aW5fSSwKKyAgICBjaExhdGluX0MsIGNoU3BhY2UsIGNoRG91YmxlUXVvdGUsIGNoTnVsbAorfTsKK3N0YXRpYyBjb25zdCBYTUxDaCAgZ1N5c3RlbVtdID0KK3sKKyAgICBjaExhdGluX1MsIGNoTGF0aW5fWSwgY2hMYXRpbl9TLCBjaExhdGluX1QsIGNoTGF0aW5fRSwKKyAgICBjaExhdGluX00sIGNoU3BhY2UsIGNoRG91YmxlUXVvdGUsIGNoTnVsbAorfTsKK3N0YXRpYyBjb25zdCBYTUxDaCAgZ1N0YXJ0RW50aXR5W10gPQoreworICAgIGNoT3BlbkFuZ2xlLCBjaEJhbmcsIGNoTGF0aW5fRSwgY2hMYXRpbl9OLCBjaExhdGluX1QsIGNoTGF0aW5fSSwKKyAgICBjaExhdGluX1QsIGNoTGF0aW5fWSwgY2hTcGFjZSwgY2hOdWxsCit9Oworc3RhdGljIGNvbnN0IFhNTENoICBnTm90YXRpb25bXSA9Cit7CisgICAgY2hMYXRpbl9OLCBjaExhdGluX0QsIGNoTGF0aW5fQSwgY2hMYXRpbl9ULCBjaExhdGluX0EsCisgICAgY2hTcGFjZSwgY2hEb3VibGVRdW90ZSwgY2hOdWxsCit9OworCisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgTG9jYWwgY2xhc3NlcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIERPTVByaW50Rm9ybWF0VGFyZ2V0IDogcHVibGljIFhNTEZvcm1hdFRhcmdldAoreworcHVibGljOgorICAgIERPTVByaW50Rm9ybWF0VGFyZ2V0KCkgIHt9OworICAgIH5ET01QcmludEZvcm1hdFRhcmdldCgpIHt9OworCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyAgSW1wbGVtZW50YXRpb25zIG9mIHRoZSBmb3JtYXQgdGFyZ2V0IGludGVyZmFjZQorICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICB2b2lkIHdyaXRlQ2hhcnMoY29uc3QgICBYTUxCeXRlKiBjb25zdCAgdG9Xcml0ZSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgICB1bnNpZ25lZCBpbnQgICAgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MRm9ybWF0dGVyICogY29uc3QgZm9ybWF0dGVyKQorICAgIHsKKyAgICAgICAgLy8gU3VycHJpc2luZ2x5LCBTb2xhcmlzIHdhcyB0aGUgb25seSBwbGF0Zm9ybSBvbiB3aGljaAorICAgICAgICAvLyByZXF1aXJlZCB0aGUgY2hhciogY2FzdCB0byBwcmludCBvdXQgdGhlIHN0cmluZyBjb3JyZWN0bHkuCisgICAgICAgIC8vIFdpdGhvdXQgdGhlIGNhc3QsIGl0IHdhcyBwcmludGluZyB0aGUgcG9pbnRlciB2YWx1ZSBpbiBoZXguCisgICAgICAgIC8vIFF1aXRlIGFubm95aW5nLCBjb25zaWRlcmluZyBldmVyeSBvdGhlciBwbGF0Zm9ybSBwcmludGVkCisgICAgICAgIC8vIHRoZSBzdHJpbmcgd2l0aCB0aGUgZXhwbGljaXQgY2FzdCB0byBjaGFyKiBiZWxvdy4KKyAgICAgICAgY291dC53cml0ZSgoY2hhciAqKSB0b1dyaXRlLCAoaW50KSBjb3VudCk7CisgICAgfTsKKworcHJpdmF0ZToKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vICBVbmltcGxlbWVudGVkIG1ldGhvZHMuCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBET01QcmludEZvcm1hdFRhcmdldChjb25zdCBET01QcmludEZvcm1hdFRhcmdldCYgb3RoZXIpOworICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IERPTVByaW50Rm9ybWF0VGFyZ2V0JiByaHMpOworfTsKKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICBvc3RyZWFtIDw8IERPTV9Ob2RlCisvLworLy8gIFN0cmVhbSBvdXQgYSBET00gbm9kZSwgYW5kLCByZWN1cnNpdmVseSwgYWxsIG9mIGl0cyBjaGlsZHJlbi4gVGhpcworLy8gIGZ1bmN0aW9uIGlzIHRoZSBoZWFydCBvZiB3cml0aW5nIGEgRE9NIHRyZWUgb3V0IGFzIFhNTCBzb3VyY2UuIEdpdmUgaXQKKy8vICBhIGRvY3VtZW50IG5vZGUgYW5kIGl0IHdpbGwgZG8gdGhlIHdob2xlIHRoaW5nLgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mIHRhcmdldCwgRE9NX05vZGUmIHRvV3JpdGUpCit7CisgICAgLy8gR2V0IHRoZSBuYW1lIGFuZCB2YWx1ZSBvdXQgZm9yIGNvbnZlbmllbmNlCisgICAgRE9NU3RyaW5nICAgbm9kZU5hbWUgPSB0b1dyaXRlLmdldE5vZGVOYW1lKCk7CisgICAgRE9NU3RyaW5nICAgbm9kZVZhbHVlID0gdG9Xcml0ZS5nZXROb2RlVmFsdWUoKTsKKyAgICB1bnNpZ25lZCBsb25nIGxlbnQgPSBub2RlVmFsdWUubGVuZ3RoKCk7CisKKyAgICBzd2l0Y2ggKHRvV3JpdGUuZ2V0Tm9kZVR5cGUoKSkKKyAgICB7CisgICAgICAgIGNhc2UgRE9NX05vZGU6OlRFWFRfTk9ERToKKyAgICAgICAgeworICAgICAgICAgICAgZ0Zvcm1hdHRlci0+Zm9ybWF0QnVmKG5vZGVWYWx1ZS5yYXdCdWZmZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW50LCBYTUxGb3JtYXR0ZXI6OkNoYXJFc2NhcGVzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKworICAgICAgICBjYXNlIERPTV9Ob2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUgOgorICAgICAgICB7CisgICAgICAgICAgICAqZ0Zvcm1hdHRlciA8PCBYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcyA8PCBnU3RhcnRQSSAgPDwgbm9kZU5hbWU7CisgICAgICAgICAgICBpZiAobGVudCA+IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgY2hTcGFjZSA8PCBub2RlVmFsdWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqZ0Zvcm1hdHRlciA8PCBYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcyA8PCBnRW5kUEk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisKKyAgICAgICAgY2FzZSBET01fTm9kZTo6RE9DVU1FTlRfTk9ERSA6CisgICAgICAgIHsKKworICAgICAgICAgICAgRE9NX05vZGUgY2hpbGQgPSB0b1dyaXRlLmdldEZpcnN0Q2hpbGQoKTsKKyAgICAgICAgICAgIHdoaWxlKCBjaGlsZCAhPSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRhcmdldCA8PCBjaGlsZDsKKyAgICAgICAgICAgICAgICAvLyBhZGQgbGluZWZlZWQgaW4gcmVxdWVzdGVkIG91dHB1dCBlbmNvZGluZworICAgICAgICAgICAgICAgICpnRm9ybWF0dGVyIDw8IGNoTEY7CisgICAgICAgICAgICAgICAgdGFyZ2V0IDw8IGZsdXNoOworICAgICAgICAgICAgICAgIGNoaWxkID0gY2hpbGQuZ2V0TmV4dFNpYmxpbmcoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKworICAgICAgICBjYXNlIERPTV9Ob2RlOjpFTEVNRU5UX05PREUgOgorICAgICAgICB7CisgICAgICAgICAgICAvLyBUaGUgbmFtZSBoYXMgdG8gYmUgcmVwcmVzZW50YWJsZSB3aXRob3V0IGFueSBlc2NhcGVzCisgICAgICAgICAgICAqZ0Zvcm1hdHRlciAgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICA8PCBjaE9wZW5BbmdsZSA8PCBub2RlTmFtZTsKKworICAgICAgICAgICAgLy8gT3V0cHV0IHRoZSBlbGVtZW50IHN0YXJ0IHRhZy4KKworICAgICAgICAgICAgLy8gT3V0cHV0IGFueSBhdHRyaWJ1dGVzIG9uIHRoaXMgZWxlbWVudAorICAgICAgICAgICAgRE9NX05hbWVkTm9kZU1hcCBhdHRyaWJ1dGVzID0gdG9Xcml0ZS5nZXRBdHRyaWJ1dGVzKCk7CisgICAgICAgICAgICBpbnQgYXR0ckNvdW50ID0gYXR0cmlidXRlcy5nZXRMZW5ndGgoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXR0ckNvdW50OyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRE9NX05vZGUgIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXMuaXRlbShpKTsKKworICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgICAgICAgLy8gIEFnYWluIHRoZSBuYW1lIGhhcyB0byBiZSBjb21wbGV0ZWx5IHJlcHJlc2VudGFibGUuIEJ1dCB0aGUKKyAgICAgICAgICAgICAgICAvLyAgYXR0cmlidXRlIGNhbiBoYXZlIHJlZnMgYW5kIHJlcXVpcmVzIHRoZSBhdHRyaWJ1dGUgc3R5bGUKKyAgICAgICAgICAgICAgICAvLyAgZXNjYXBpbmcuCisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAqZ0Zvcm1hdHRlciAgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgY2hTcGFjZSA8PCBhdHRyaWJ1dGUuZ2V0Tm9kZU5hbWUoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBjaEVxdWFsIDw8IGNoRG91YmxlUXVvdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgWE1MRm9ybWF0dGVyOjpBdHRyRXNjYXBlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBhdHRyaWJ1dGUuZ2V0Tm9kZVZhbHVlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgY2hEb3VibGVRdW90ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vICBUZXN0IGZvciB0aGUgcHJlc2VuY2Ugb2YgY2hpbGRyZW4sIHdoaWNoIGluY2x1ZGVzIGJvdGgKKyAgICAgICAgICAgIC8vICB0ZXh0IGNvbnRlbnQgYW5kIG5lc3RlZCBlbGVtZW50cy4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICBET01fTm9kZSBjaGlsZCA9IHRvV3JpdGUuZ2V0Rmlyc3RDaGlsZCgpOworICAgICAgICAgICAgaWYgKGNoaWxkICE9IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gVGhlcmUgYXJlIGNoaWxkcmVuLiBDbG9zZSBzdGFydC10YWcsIGFuZCBvdXRwdXQgY2hpbGRyZW4uCisgICAgICAgICAgICAgICAgLy8gTm8gZXNjYXBlcyBhcmUgbGVnYWwgaGVyZQorICAgICAgICAgICAgICAgICpnRm9ybWF0dGVyIDw8IFhNTEZvcm1hdHRlcjo6Tm9Fc2NhcGVzIDw8IGNoQ2xvc2VBbmdsZTsKKworICAgICAgICAgICAgICAgIHdoaWxlKCBjaGlsZCAhPSAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IDw8IGNoaWxkOworICAgICAgICAgICAgICAgICAgICBjaGlsZCA9IGNoaWxkLmdldE5leHRTaWJsaW5nKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAvLyBEb25lIHdpdGggY2hpbGRyZW4uICBPdXRwdXQgdGhlIGVuZCB0YWcuCisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAqZ0Zvcm1hdHRlciA8PCBYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcyA8PCBnRW5kRWxlbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IG5vZGVOYW1lIDw8IGNoQ2xvc2VBbmdsZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAgIC8vICBUaGVyZSB3ZXJlIG5vIGNoaWxkcmVuLiBPdXRwdXQgdGhlIHNob3J0IGZvcm0gY2xvc2Ugb2YKKyAgICAgICAgICAgICAgICAvLyAgdGhlIGVsZW1lbnQgc3RhcnQgdGFnLCBtYWtpbmcgaXQgYW4gZW1wdHktZWxlbWVudCB0YWcuCisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAqZ0Zvcm1hdHRlciA8PCBYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcyA8PCBjaEZvcndhcmRTbGFzaCA8PCBjaENsb3NlQW5nbGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisKKyAgICAgICAgY2FzZSBET01fTm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RFOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIERPTV9Ob2RlIGNoaWxkOworI2lmIDAKKyAgICAgICAgICAgICAgICBmb3IgKGNoaWxkID0gdG9Xcml0ZS5nZXRGaXJzdENoaWxkKCk7CisgICAgICAgICAgICAgICAgY2hpbGQgIT0gMDsKKyAgICAgICAgICAgICAgICBjaGlsZCA9IGNoaWxkLmdldE5leHRTaWJsaW5nKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPDwgY2hpbGQ7CisgICAgICAgICAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAgIC8vIEluc3RlYWQgb2YgcHJpbnRpbmcgdGhlIHJlZmVybmVjZSB0cmVlCisgICAgICAgICAgICAgICAgLy8gd2UnZCBvdXRwdXQgdGhlIGFjdHVhbCB0ZXh0IGFzIGl0IGFwcGVhcmVkIGluIHRoZSB4bWwgZmlsZS4KKyAgICAgICAgICAgICAgICAvLyBUaGlzIHdvdWxkIGJlIHRoZSBjYXNlIHdoZW4gLWUgb3B0aW9uIHdhcyBjaG9zZW4KKyAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAgICAgICAqZ0Zvcm1hdHRlciA8PCBYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcyA8PCBjaEFtcGVyc2FuZAorICAgICAgICAgICAgICAgICAgICAgICAgPDwgbm9kZU5hbWUgPDwgY2hTZW1pQ29sb247CisjZW5kaWYKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworCisgICAgICAgIGNhc2UgRE9NX05vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICpnRm9ybWF0dGVyIDw8IFhNTEZvcm1hdHRlcjo6Tm9Fc2NhcGVzIDw8IGdTdGFydENEQVRBCisgICAgICAgICAgICAgICAgICAgICAgICA8PCBub2RlVmFsdWUgPDwgZ0VuZENEQVRBOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworCisgICAgICAgIGNhc2UgRE9NX05vZGU6OkNPTU1FTlRfTk9ERToKKyAgICAgICAgeworICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMgPDwgZ1N0YXJ0Q29tbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgPDwgbm9kZVZhbHVlIDw8IGdFbmRDb21tZW50OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworCisgICAgICAgIGNhc2UgRE9NX05vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToKKyAgICAgICAgeworICAgICAgICAgICAgRE9NX0RvY3VtZW50VHlwZSBkb2N0eXBlID0gKERPTV9Eb2N1bWVudFR5cGUgJil0b1dyaXRlOzsKKworICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMgIDw8IGdTdGFydERvY3R5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDw8IG5vZGVOYW1lOworCisgICAgICAgICAgICBET01TdHJpbmcgaWQgPSBkb2N0eXBlLmdldFB1YmxpY0lkKCk7CisgICAgICAgICAgICBpZiAoaWQgIT0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAqZ0Zvcm1hdHRlciA8PCBYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcyA8PCBjaFNwYWNlIDw8IGdQdWJsaWMKKyAgICAgICAgICAgICAgICAgICAgPDwgaWQgPDwgY2hEb3VibGVRdW90ZTsKKyAgICAgICAgICAgICAgICBpZCA9IGRvY3R5cGUuZ2V0U3lzdGVtSWQoKTsKKyAgICAgICAgICAgICAgICBpZiAoaWQgIT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICpnRm9ybWF0dGVyIDw8IFhNTEZvcm1hdHRlcjo6Tm9Fc2NhcGVzIDw8IGNoU3BhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgPDwgY2hEb3VibGVRdW90ZSA8PCBpZCA8PCBjaERvdWJsZVF1b3RlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZCA9IGRvY3R5cGUuZ2V0U3lzdGVtSWQoKTsKKyAgICAgICAgICAgICAgICBpZiAoaWQgIT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICpnRm9ybWF0dGVyIDw8IFhNTEZvcm1hdHRlcjo6Tm9Fc2NhcGVzIDw8IGNoU3BhY2UgPDwgZ1N5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgPDwgaWQgPDwgY2hEb3VibGVRdW90ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlkID0gZG9jdHlwZS5nZXRJbnRlcm5hbFN1YnNldCgpOworICAgICAgICAgICAgaWYgKGlkICE9MCkKKyAgICAgICAgICAgICAgICAqZ0Zvcm1hdHRlciA8PCBYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcyA8PCBjaE9wZW5TcXVhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBpZCA8PCBjaENsb3NlU3F1YXJlOworCisgICAgICAgICAgICAqZ0Zvcm1hdHRlciA8PCBYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcyA8PCBjaENsb3NlQW5nbGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisKKyAgICAgICAgY2FzZSBET01fTm9kZTo6RU5USVRZX05PREU6CisgICAgICAgIHsKKyAgICAgICAgICAgICpnRm9ybWF0dGVyIDw8IFhNTEZvcm1hdHRlcjo6Tm9Fc2NhcGVzIDw8IGdTdGFydEVudGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgPDwgbm9kZU5hbWU7CisKKyAgICAgICAgICAgIERPTVN0cmluZyBpZCA9ICgoRE9NX0VudGl0eSAmKXRvV3JpdGUpLmdldFB1YmxpY0lkKCk7CisgICAgICAgICAgICBpZiAoaWQgIT0gMCkKKyAgICAgICAgICAgICAgICAqZ0Zvcm1hdHRlciA8PCBYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcyA8PCBnUHVibGljCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgaWQgPDwgY2hEb3VibGVRdW90ZTsKKworICAgICAgICAgICAgaWQgPSAoKERPTV9FbnRpdHkgJil0b1dyaXRlKS5nZXRTeXN0ZW1JZCgpOworICAgICAgICAgICAgaWYgKGlkICE9IDApCisgICAgICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMgPDwgZ1N5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGlkIDw8IGNoRG91YmxlUXVvdGU7CisKKyAgICAgICAgICAgIGlkID0gKChET01fRW50aXR5ICYpdG9Xcml0ZSkuZ2V0Tm90YXRpb25OYW1lKCk7CisgICAgICAgICAgICBpZiAoaWQgIT0gMCkKKyAgICAgICAgICAgICAgICAqZ0Zvcm1hdHRlciA8PCBYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcyA8PCBnTm90YXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBpZCA8PCBjaERvdWJsZVF1b3RlOworCisgICAgICAgICAgICAqZ0Zvcm1hdHRlciA8PCBYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcyA8PCBjaENsb3NlQW5nbGUgPDwgY2hMRjsKKworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworCisgICAgICAgIGNhc2UgRE9NX05vZGU6OlhNTF9ERUNMX05PREU6CisgICAgICAgIHsKKyAgICAgICAgICAgIERPTVN0cmluZyAgc3RyOworCisgICAgICAgICAgICAqZ0Zvcm1hdHRlciA8PCBnWE1MRGVjbDEgPDwgKChET01fWE1MRGVjbCAmKXRvV3JpdGUpLmdldFZlcnNpb24oKTsKKworICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgZ1hNTERlY2wyIDw8IGdFbmNvZGluZ05hbWU7CisKKyAgICAgICAgICAgIHN0ciA9ICgoRE9NX1hNTERlY2wgJil0b1dyaXRlKS5nZXRTdGFuZGFsb25lKCk7CisgICAgICAgICAgICBpZiAoc3RyICE9IDApCisgICAgICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgZ1hNTERlY2wzIDw8IHN0cjsKKworICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgZ1hNTERlY2w0OworCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNlcnIgPDwgIlVucmVjb2duaXplZCBub2RlIHR5cGUgPSAiCisgICAgICAgICAgICAgICAgIDw8IChsb25nKXRvV3JpdGUuZ2V0Tm9kZVR5cGUoKSA8PCBlbmRsOworICAgIH0KKyAgICByZXR1cm4gdGFyZ2V0OworfQorCisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgb3N0cmVhbSA8PCBET01TdHJpbmcKKy8vCisvLyAgU3RyZWFtIG91dCBhIERPTSBzdHJpbmcuIERvaW5nIHRoaXMgcmVxdWlyZXMgdGhhdCB3ZSBmaXJzdCB0cmFuc2NvZGUKKy8vICB0byBjaGFyICogZm9ybSBpbiB0aGUgZGVmYXVsdCBjb2RlIHBhZ2UgZm9yIHRoZSBzeXN0ZW0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorb3N0cmVhbSYgb3BlcmF0b3I8PCAob3N0cmVhbSYgdGFyZ2V0LCBjb25zdCBET01TdHJpbmcmIHMpCit7CisgICAgY2hhciAqcCA9IHMudHJhbnNjb2RlKCk7CisgICAgdGFyZ2V0IDw8IHA7CisgICAgWFNFQ19SRUxFQVNFX1hNTENIKHApOworICAgIHJldHVybiB0YXJnZXQ7Cit9CisKKworWE1MRm9ybWF0dGVyJiBvcGVyYXRvcjw8IChYTUxGb3JtYXR0ZXImIHN0cm0sIGNvbnN0IERPTVN0cmluZyYgcykKK3sKKyAgICB1bnNpZ25lZCBpbnQgbGVudCA9IHMubGVuZ3RoKCk7CisKKwlpZiAobGVudCA8PSAwKQorCQlyZXR1cm4gc3RybTsKKworICAgIFhNTENoKiAgYnVmID0gbmV3IFhNTENoW2xlbnQgKyAxXTsKKyAgICBYTUxTdHJpbmc6OmNvcHlOU3RyaW5nKGJ1Ziwgcy5yYXdCdWZmZXIoKSwgbGVudCk7CisgICAgYnVmW2xlbnRdID0gMDsKKyAgICBzdHJtIDw8IGJ1ZjsKKyAgICBkZWxldGUgW10gYnVmOworICAgIHJldHVybiBzdHJtOworfQorCisjZW5kaWYKKwordm9pZCBkb2NTZXR1cChET01Eb2N1bWVudCAqZG9jKSB7CisKKwkvLyBQcmludCBvdXQgdGhlIGRvYworCisJRE9NUHJpbnRGb3JtYXRUYXJnZXQqIGZvcm1hdFRhcmdldCA9IG5ldyBET01QcmludEZvcm1hdFRhcmdldCgpOworCQorICAgIGNvbnN0IFhNTENoKiBlbmNOYW1lU3RyID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoIlVURi04Iik7CisgICAgRE9NTm9kZSAqYU5vZGUgPSBkb2MtPmdldEZpcnN0Q2hpbGQoKTsKKyAgICBpZiAoYU5vZGUtPmdldE5vZGVUeXBlKCkgPT0gRE9NTm9kZTo6RU5USVRZX05PREUpCisgICAgeworICAgICAgICBjb25zdCBYTUxDaCogYVN0ciA9ICgoRE9NRW50aXR5ICopYU5vZGUpLT4KKyNpZiBkZWZpbmVkIFhTRUNfWEVSQ0VTX0RPTUVOVElUWUlOUFVURU5DT0RJTkcKKyAgICAgICAgICAgIGdldElucHV0RW5jb2RpbmcoKTsKKyNlbHNlCisgICAgICAgICAgICBnZXRFbmNvZGluZygpOworI2VuZGlmCisKKyAgICAgICAgaWYgKCFzdHJFcXVhbHMoYVN0ciwgIiIpKQorICAgICAgICB7CisgICAgICAgICAgICBlbmNOYW1lU3RyID0gYVN0cjsKKyAgICAgICAgfQorICAgIH0KKyAgICB4c2Vjc2l6ZV90IGxlbnQgPSBYTUxTdHJpbmc6OnN0cmluZ0xlbihlbmNOYW1lU3RyKTsKKyAgICBnRW5jb2RpbmdOYW1lID0gbmV3IFhNTENoW2xlbnQgKyAxXTsKKyAgICBYTUxTdHJpbmc6OmNvcHlOU3RyaW5nKGdFbmNvZGluZ05hbWUsIGVuY05hbWVTdHIsIGxlbnQpOworICAgIGdFbmNvZGluZ05hbWVbbGVudF0gPSAwOworCisJCisJCisjaWYgZGVmaW5lZChYU0VDX1hFUkNFU19GT1JNQVRURVJfUkVRVUlSRVNfVkVSU0lPTikKKwlnRm9ybWF0dGVyID0gbmV3IFhNTEZvcm1hdHRlcigiVVRGLTgiLCAwLCBmb3JtYXRUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcywgZ1VuUmVwRmxhZ3MpOworI2Vsc2UKKwlnRm9ybWF0dGVyID0gbmV3IFhNTEZvcm1hdHRlcigiVVRGLTgiLCBmb3JtYXRUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcywgZ1VuUmVwRmxhZ3MpOworI2VuZGlmCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgRW5kIG9mIG91dHB1dHRlcgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2Mvc3JjL3NhbXBsZXMvSU9TdHJlYW1PdXRwdXR0ZXIuaHBwIGIvYy9zcmMvc2FtcGxlcy9JT1N0cmVhbU91dHB1dHRlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM4M2Y3NwotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3NhbXBsZXMvSU9TdHJlYW1PdXRwdXR0ZXIuaHBwCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIElPU3RyZWFtT3V0cHV0ZXIuY3BwIDo9IFVzZWQgYnkgYWxsIHNhbXBsZXMgdGhhdCBuZWVkIHRvIG91dHB1dCBhIERPTSBkb2N1bWVudAorICoJCQkJCQkJdG8gYW4gSU9TdHJlYW0KKyAqIAorICogTk9URTogTXVjaCBvZiB0aGlzIGNvZGUgY2FtZSBmcm9tIEFwYWNoZSBleGFtcGxlcyBpbiB0aGUgWGVyY2VzIGRpc3RyaWJ1dGlvbgorICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhlcmNlc2MvZG9tL0RPTS5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy9mcmFtZXdvcmsvWE1MRm9ybWF0dGVyLmhwcD4KKyNpbmNsdWRlIDxpb3N0cmVhbT4KKwordXNpbmcgc3RkOjpjZXJyOwordXNpbmcgc3RkOjpjb3V0OwordXNpbmcgc3RkOjplbmRsOwordXNpbmcgc3RkOjpvc3RyZWFtOwordXNpbmcgc3RkOjpmbHVzaDsKKworI2lmICFkZWZpbmVkKFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUikKKyMgICAgZGVmaW5lIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUgorI2VuZGlmCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgTXVjaCBjb2RlIHRha2VuIGZyb20gdGhlIERPTVByaW50IFhlcmNlcyBleGFtcGxlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mIHRhcmdldCwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUgKiB0b1dyaXRlKTsKKy8vb3N0cmVhbSYgb3BlcmF0b3I8PCAob3N0cmVhbSYgdGFyZ2V0LCBjb25zdCBET01TdHJpbmcmIHMpOworLy9YTUxGb3JtYXR0ZXImIG9wZXJhdG9yPDwgKFhNTEZvcm1hdHRlciYgc3RybSwgY29uc3QgRE9NU3RyaW5nJiBzKTsKKwordm9pZCBkb2NTZXR1cChYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKmRvYyk7CisKZGlmZiAtLWdpdCBhL2Mvc3JjL3NhbXBsZXMvc2ltcGxlRGVjcnlwdC5jcHAgYi9jL3NyYy9zYW1wbGVzL3NpbXBsZURlY3J5cHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwMDAwYTkKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9zYW1wbGVzL3NpbXBsZURlY3J5cHQuY3BwCkBAIC0wLDAgKzEsMTg0IEBACisvKgorICogQ29weXJpZ2h0IDIwMDMtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBTaW1wbGVFbmNyeXB0IDo9IEFuIGFwcGxpY2F0aW9uIHRvIGdlbmVyYXRlIGFuIFhNTCBkb2N1bWVudCAodmlhIFhlcmNlcykgYW5kIGVuY3J5cHQKKyAqCQkJCQlhIHBvcnRpb24gb2YgaXQKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlICJJT1N0cmVhbU91dHB1dHRlci5ocHAiCisKKy8vIFhlcmNlcworCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1BsYXRmb3JtVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvcGFyc2Vycy9YZXJjZXNET01QYXJzZXIuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvZnJhbWV3b3JrL01lbUJ1ZklucHV0U291cmNlLmhwcD4KKworLy8gWE1MLVNlY3VyaXR5LUMgKFhTRUMpCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDUHJvdmlkZXIuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFeGNlcHRpb24uaHBwPgorI2luY2x1ZGUgPHhzZWMveGVuYy9YRU5DQ2lwaGVyLmhwcD4KKworI2luY2x1ZGUgPHhzZWMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0tleVJTQS5ocHA+CisKKy8vIFhhbGFuCisKKyNpZm5kZWYgWFNFQ19OT19YQUxBTgorI2luY2x1ZGUgPHhhbGFuYy9YYWxhblRyYW5zZm9ybWVyL1hhbGFuVHJhbnNmb3JtZXIuaHBwPgorWEFMQU5fVVNJTkdfWEFMQU4oWGFsYW5UcmFuc2Zvcm1lcikKKyNlbmRpZgorCisvLyBPcGVuU1NMCisKKyNpbmNsdWRlIDxvcGVuc3NsL2Jpby5oPgorI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9wZW0uaD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKK2NoYXIgbGV0dGVyW10gPSAiXG5cCis8TGV0dGVyPlxuXAorPFRvQWRkcmVzcz5UaGUgYWRkcmVzcyBvZiB0aGUgUmVjaXBpZW50PC9Ub0FkZHJlc3M+XG5cCis8RnJvbUFkZHJlc3M+VGhlIGFkZHJlc3Mgb2YgdGhlIFNlbmRlcjwvRnJvbUFkZHJlc3M+XG5cCis8eGVuYzpFbmNyeXB0ZWREYXRhIFR5cGU9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNFbGVtZW50XCIgeG1sbnM6eGVuYz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI1wiPlxuXAorPHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09XCJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyN0cmlwbGVkZXMtY2JjXCIvPlxuXAorPGRzOktleUluZm8geG1sbnM6ZHM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjXCI+XG5cCis8eGVuYzpFbmNyeXB0ZWRLZXkgeG1sbnM6eGVuYz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI1wiPlxuXAorPHhlbmM6RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09XCJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNyc2EtMV81XCIvPlxuXAorPHhlbmM6Q2lwaGVyRGF0YT5cblwKKzx4ZW5jOkNpcGhlclZhbHVlPlVESDlJOWs2ZFJ2bElTN2ZITE1PTnRsUDI0bXFFRFB6c2pTWVVnNFg1U1N6VUZza2lWYU9JemhZUGVGMjFaZUdcblwKK01DbWRvNndzdTZUUUIwWGVibXZKUjJ3Z3ZZcURkMkwySWJYWjF6ajIvRzdGYlZzQi9HU0d4dVFURncyMmFNRmRcblwKK2w0N1A4YktqeFg4Y1V3d1lGemJHQVVma2dlUXA1RGdsbW5KWUpQTzFjVHc9XG5cCis8L3hlbmM6Q2lwaGVyVmFsdWU+XG5cCis8L3hlbmM6Q2lwaGVyRGF0YT5cblwKKzwveGVuYzpFbmNyeXB0ZWRLZXk+XG5cCis8L2RzOktleUluZm8+XG5cCis8eGVuYzpDaXBoZXJEYXRhPlxuXAorPHhlbmM6Q2lwaGVyVmFsdWU+UTdNNlFoWk9xanlZWGRVRE93ODA5ZEdFSldreUF5Z1J2N3IzRUo4RmxjWTdkWXBuNzhPTjc5Ti9aQjV3SnhRdFxuXAora295SHZXaW1QV2tOUmxLR1AxMERKNDJQSUdEdnVUblRCRkhDS2J2YU1yRWprbGw4UFVkOHpIUTBPSklhV0lZaVxuXAorQUt5ZHBsSnkyckN6cHB3bjBiSTBZUT09XG5cCis8L3hlbmM6Q2lwaGVyVmFsdWU+XG5cCis8L3hlbmM6Q2lwaGVyRGF0YT5cblwKKzwveGVuYzpFbmNyeXB0ZWREYXRhPjwvTGV0dGVyPiI7CisKKworLy8gUEtDUzggUEVNIGVuY29kZWQgUHJpdmF0ZUtleSBzdHJ1Y3R1cmUgKG5vdCBFbmNyeXB0ZWQpCisKK2NoYXIgc19wcml2YXRlS2V5W10gPSAiXG5cCistLS0tLUJFR0lOIFJTQSBQUklWQVRFIEtFWS0tLS0tXG5cCitNSUlDWEFJQkFBS0JnUURRajNwa3RaY2tBendzaFJuZnZMaHozZGFOVTZ4cEF6b0hvM3FqQ2Z0eER3SDFSeW5QXG5cCitBNWV5Y0pWa1Y4bXdIMkMxUEZrdHBqdFFUWjJDdlBqdUttVVY1ekV2bVl6dUlvNlNXWWFWWk4vUEpqenNFWk1hXG5cCitWQStVOEdoZlgxWUYvcnN1RnpYQ2k4cjZGVmQzTE4vL3BYSEV3b0RHZEpVZGxwZFZFdVgxaUZLbE5RSURBUUFCXG5cCitBb0dBWVE3VWM3ZTZYYTBQdk53NFhWSHpPU0M4NzBwSVN4cVFUK3U1YjlSK2FuQUVoa1FXNWRzVEpweVVPWDFOXG5cCitSQ1JtR2hHNm9xN2duWTl4Uk4xeXIwdVZmSk50YzkvSG56Skw3TDFqZUpDOFViK3piRUJ2TnVQREwyUDIxQXJXXG5cCit0Y1hSeWNVbGZSQ1JCTG9wN3JmT1lQWHNqdGJvQUduUVkvNmhLNHJPRjRYR3JRVUNRUUQzRXVqKzBtWnFSUlo0XG5cCitNMXlOMndWUDBtS09NZzJpL0haWGFOZVZkOVgvd3lCZ0s2YjdCeEhmNm9uZi9tSUJXbkpuUkJsdmRDclNkaHVUXG5cCitsUEtFb1NndkFrRUEyQmhmV3dRaWhxRDRxSmNWNjVuZm9zanpPWkc0MXJIWDY5bklxSEk3RWp4NVpnZVFCeUg5XG5cCitZbTk2eVhvU3BaajlabEZzSllOb2dUQkJuVUJqcytqTDJ3SkFGanBWUzllUjd5MlgvK2hmQTBRWkRqMVhNSVBBXG5cCitSbEdBTkF6eW1EZlh3TkxGTHVHK2ZBYit6SzVGQ1NuUmwxMlR2VWFiSXpQSVJuYnB0RFZLUERSamNRSkJBTG44XG5cCiswQ1Z2KzU5UDhIUjZCUjNRUkJEQlQ4WGV5KzNOQjRBdzQybEhWOXdzUEhnNlRoWTFoUFl4Nk1aNzBJekNqbVovXG5cCis4Y3FmdlZSamlqV2o4NndtMHowQ1FGS2ZSZkJScmFPWnFmbU9pQUI0K0lMaGJKd0tCQk82YXZYOVRQZ01Za3lOXG5cCittV0tDeFMrOWZQaXkxaUkrRytCOXhrdzJnSjlpOFA4MXQ3ZnNPdmRUREZBPVxuXAorLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0iOworCisKK2ludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKworCXRyeSB7CisJCVhNTFBsYXRmb3JtVXRpbHM6OkluaXRpYWxpemUoKTsKKyNpZm5kZWYgWFNFQ19OT19YQUxBTgorCQlYYWxhblRyYW5zZm9ybWVyOjppbml0aWFsaXplKCk7CisjZW5kaWYKKwkJWFNFQ1BsYXRmb3JtVXRpbHM6OkluaXRpYWxpc2UoKTsKKwl9CisJY2F0Y2ggKGNvbnN0IFhNTEV4Y2VwdGlvbiAmZSkgeworCisJCWNlcnIgPDwgIkVycm9yIGR1cmluZyBpbml0aWFsaXNhdGlvbiBvZiBYZXJjZXMiIDw8IGVuZGw7CisJCWNlcnIgPDwgIkVycm9yIE1lc3NhZ2UgPSA6ICIKKwkJICAgICA8PCBlLmdldE1lc3NhZ2UoKSA8PCBlbmRsOworCisJfQorCisJLy8gVXNlIHhlcmNlcyB0byBwYXJzZSB0aGUgZG9jdW1lbnQKKwlYZXJjZXNET01QYXJzZXIgKiBwYXJzZXIgPSBuZXcgWGVyY2VzRE9NUGFyc2VyOworCXBhcnNlci0+c2V0RG9OYW1lc3BhY2VzKHRydWUpOworCXBhcnNlci0+c2V0Q3JlYXRlRW50aXR5UmVmZXJlbmNlTm9kZXModHJ1ZSk7CisJcGFyc2VyLT5zZXREb1NjaGVtYSh0cnVlKTsKKworCS8vIENyZWF0ZSBhbiBpbnB1dCBzb3VyY2UKKworCU1lbUJ1ZklucHV0U291cmNlKiBtZW1JUyA9IG5ldyBNZW1CdWZJbnB1dFNvdXJjZSAoKGNvbnN0IFhNTEJ5dGUqKSBsZXR0ZXIsICh1bnNpZ25lZCBpbnQpIHN0cmxlbihsZXR0ZXIpLCAiWFNFQ01lbSIpOworCisJcGFyc2VyLT5wYXJzZSgqbWVtSVMpOworICAgIHhzZWNzaXplX3QgZXJyb3JDb3VudCA9IHBhcnNlci0+Z2V0RXJyb3JDb3VudCgpOworICAgIGlmIChlcnJvckNvdW50ID4gMCkgeworCQljZXJyIDw8ICJFcnJvciBwYXJzaW5nIGlucHV0IGRvY3VtZW50XG4iOworCQlleGl0ICgxKTsKKwl9CisKKyAgICBET01Eb2N1bWVudCAqZG9jID0gcGFyc2VyLT5nZXREb2N1bWVudCgpOworCisJLyogRGVjcnlwdCBPcGVyYXRpb25zICovCisKKwl0cnkgeworCisJCS8qIENyZWF0ZSB0aGUgY2lwaGVyIG9iamVjdCB0aGF0IHdlIG5lZWQgKi8KKworCQlYU0VDUHJvdmlkZXIgcHJvdjsKKwkJWEVOQ0NpcGhlciAqY2lwaGVyOworCisJCWNpcGhlciA9IHByb3YubmV3Q2lwaGVyKGRvYyk7CisKKwkJLyogTG9hZCB0aGUgcHJpdmF0ZSBrZXkgdmlhIE9wZW5TU0wgYW5kIHRoZW4gd3JhcCBpbiBhbiBPcGVuU1NMQ3J5cHRvIGNvbnN0cnVjdCAqLworCQlCSU8gKiBiaW9NZW0gPSBCSU9fbmV3KEJJT19zX21lbSgpKTsKKwkJQklPX3B1dHMoYmlvTWVtLCBzX3ByaXZhdGVLZXkpOworCQlFVlBfUEtFWSAqIHBrID0gUEVNX3JlYWRfYmlvX1ByaXZhdGVLZXkoYmlvTWVtLCBOVUxMLCBOVUxMLCBOVUxMKTsKKworCQkvKiBOT1RFIDogRm9yIHNpbXBsaWNpdHkgLSBubyBlcnJvciBjaGVja2luZyBoZXJlICovCisKKwkJT3BlblNTTENyeXB0b0tleVJTQSAqIGsgPSBuZXcgT3BlblNTTENyeXB0b0tleVJTQShwayk7CisJCWNpcGhlci0+c2V0S0VLKGspOworCisJCS8qIEZpbmQgdGhlIEVuY3J5cHRlZERhdGEgbm9kZSAqLworCQlET01Ob2RlICogZW5jcnlwdGVkTm9kZSA9IGZpbmRYRU5DTm9kZShkb2MsICJFbmNyeXB0ZWREYXRhIik7CisKKwkJLyogRG8gdGhlIGRlY3J5cHQgKi8KKwkJY2lwaGVyLT5kZWNyeXB0RWxlbWVudCgoRE9NRWxlbWVudCAqKSBlbmNyeXB0ZWROb2RlKTsKKworCX0KKworCWNhdGNoIChYU0VDRXhjZXB0aW9uICZlKQorCXsKKwkJY2hhciAqIG1zZyA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKGUuZ2V0TXNnKCkpOworCQljZXJyIDw8ICJBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgYW4gZW5jcnlwdGlvbiBvcGVyYXRpb25cbiAgIE1lc3NhZ2U6ICIKKwkJPDwgbXNnIDw8IGVuZGw7CisJCWV4aXQoMSk7CisJCQorCX0KKworCS8qIE91dHB1dCAqLworCWRvY1NldHVwKGRvYyk7CisJY291dCA8PCBkb2M7CisKKwlyZXR1cm4gMDsKKworfQpkaWZmIC0tZ2l0IGEvYy9zcmMvc2FtcGxlcy9zaW1wbGVFbmNyeXB0LmNwcCBiL2Mvc3JjL3NhbXBsZXMvc2ltcGxlRW5jcnlwdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M0NDM4NAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3NhbXBsZXMvc2ltcGxlRW5jcnlwdC5jcHAKQEAgLTAsMCArMSwyMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMy0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFNpbXBsZUVuY3J5cHQgOj0gQW4gYXBwbGljYXRpb24gdG8gZ2VuZXJhdGUgYW4gWE1MIGRvY3VtZW50ICh2aWEgWGVyY2VzKSBhbmQgZW5jcnlwdAorICoJCQkJCWEgcG9ydGlvbiBvZiBpdAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgIklPU3RyZWFtT3V0cHV0dGVyLmhwcCIKKworLy8gWGVyY2VzCisKKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvUGxhdGZvcm1VdGlscy5ocHA+CisKKy8vIFhNTC1TZWN1cml0eS1DIChYU0VDKQorCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ1Byb3ZpZGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXhjZXB0aW9uLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hlbmMvWEVOQ0NpcGhlci5ocHA+CisjaW5jbHVkZSA8eHNlYy94ZW5jL1hFTkNFbmNyeXB0ZWREYXRhLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hlbmMvWEVOQ0VuY3J5cHRlZEtleS5ocHA+CisKKyNpbmNsdWRlIDx4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9TeW1tZXRyaWNLZXkuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b1g1MDkuaHBwPgorCisvLyBYYWxhbgorCisjaWZuZGVmIFhTRUNfTk9fWEFMQU4KKyNpbmNsdWRlIDx4YWxhbmMvWGFsYW5UcmFuc2Zvcm1lci9YYWxhblRyYW5zZm9ybWVyLmhwcD4KK1hBTEFOX1VTSU5HX1hBTEFOKFhhbGFuVHJhbnNmb3JtZXIpCisjZW5kaWYKKworLy8gT3BlblNTTAorCisjaW5jbHVkZSA8b3BlbnNzbC9yYW5kLmg+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCitET01FbGVtZW50ICogZ190b0VuY3J5cHQ7CisKK2NoYXIgY2VydFtdID0gIlxuXAorTUlJQzdqQ0NBcTZnQXdJQkFnSUNFQU13Q1FZSEtvWkl6amdFQXpCNU1Rc3dDUVlEVlFRR0V3SkJWVEVNTUFvR1xuXAorQTFVRUNCTURWbWxqTVJJd0VBWURWUVFIRXdsTlpXeGliM1Z5Ym1VeEh6QWRCZ05WQkFvVEZsaE5UQzFUWldOMVxuXAorY21sMGVTMURJRkJ5YjJwbFkzUXhFREFPQmdOVkJBc1RCMWhUUlVNdFEwRXhGVEFUQmdOVkJBTVRERmhUUlVNdFxuXAorUTBFZ1VtOXZkREFlRncwd01qRXlNVEl4TURFek1UbGFGdzB4TWpFeU1Ea3hNREV6TVRsYU1GWXhDekFKQmdOVlxuXAorQkFZVEFrRlZNUXd3Q2dZRFZRUUlFd05XYVdNeEh6QWRCZ05WQkFvVEZsaE5UQzFUWldOMWNtbDBlUzFESUZCeVxuXAorYjJwbFkzUXhHREFXQmdOVkJBTVREMUpUUVNCVFlXMXdiR1VnUTJWeWREQ0JuekFOQmdrcWhraUc5dzBCQVFFRlxuXAorQUFPQmpRQXdnWWtDZ1lFQTBJOTZaTFdYSkFNOExJVVozN3k0YzkzV2pWT3NhUU02QjZONm93bjdjUThCOVVjcFxuXAorendPWHNuQ1ZaRmZKc0I5Z3RUeFpMYVk3VUUyZGdyejQ3aXBsRmVjeEw1bU03aUtPa2xtR2xXVGZ6eVk4N0JHVFxuXAorR2xRUGxQQm9YMTlXQmY2N0xoYzF3b3ZLK2hWWGR5emYvNlZ4eE1LQXhuU1ZIWmFYVlJMbDlZaFNwVFVDQXdFQVxuXAorQWFPQ0FRRXdnZjR3Q1FZRFZSMFRCQUl3QURBc0JnbGdoa2dCaHZoQ0FRMEVIeFlkVDNCbGJsTlRUQ0JIWlc1bFxuXAorY21GMFpXUWdRMlZ5ZEdsbWFXTmhkR1V3SFFZRFZSME9CQllFRkdxNlUxU3dZTlJ5VEpHQXdBUmlyRWRhdmZYQlxuXAorTUlHakJnTlZIU01FZ1pzd2daaUFGQktOWDlDc0FJc2pVSUZtVnE0d0U0d2xPR0M1b1gya2V6QjVNUXN3Q1FZRFxuXAorVlFRR0V3SkJWVEVNTUFvR0ExVUVDQk1EVm1sak1SSXdFQVlEVlFRSEV3bE5aV3hpYjNWeWJtVXhIekFkQmdOVlxuXAorQkFvVEZsaE5UQzFUWldOMWNtbDBlUzFESUZCeWIycGxZM1F4RURBT0JnTlZCQXNUQjFoVFJVTXRRMEV4RlRBVFxuXAorQmdOVkJBTVRERmhUUlVNdFEwRWdVbTl2ZElJQkFEQUpCZ2NxaGtqT09BUURBeThBTUN3Q0ZHb0toVlBuRGVnOVxuXAorbmJFRm8yS0REbEcvTmlVcUFoUkp4UVBMWERoZWhRam42ZXFRV09VbGtGdEE5QT09IjsKKworCitET01Eb2N1bWVudCAqY3JlYXRlTGV0dGVyKERPTUltcGxlbWVudGF0aW9uICppbXBsKSB7CisKKwlET01Eb2N1bWVudCAqZG9jID0gaW1wbC0+Y3JlYXRlRG9jdW1lbnQoCisgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICBNQUtFX1VOSUNPREVfU1RSSU5HKCJMZXR0ZXIiKSwgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgTlVMTCk7ICAKKworICAgIERPTUVsZW1lbnQgKnJvb3RFbGVtID0gZG9jLT5nZXREb2N1bWVudEVsZW1lbnQoKTsKKworCS8vIEFkZCB0aGUgVG9BZGRyZXNzCisKKwlET01FbGVtZW50ICphZGRyZXNzRWxlbSA9IGRvYy0+Y3JlYXRlRWxlbWVudChNQUtFX1VOSUNPREVfU1RSSU5HKCJUb0FkZHJlc3MiKSk7CisJcm9vdEVsZW0tPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoTUFLRV9VTklDT0RFX1NUUklORygiXG4iKSkpOworCXJvb3RFbGVtLT5hcHBlbmRDaGlsZChhZGRyZXNzRWxlbSk7CisJYWRkcmVzc0VsZW0tPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoCisJCU1BS0VfVU5JQ09ERV9TVFJJTkcoIlRoZSBhZGRyZXNzIG9mIHRoZSBSZWNpcGllbnQiKSkpOworCisJLy8gQWRkIHRoZSBGcm9tQWRkcmVzcworCWFkZHJlc3NFbGVtID0gZG9jLT5jcmVhdGVFbGVtZW50KE1BS0VfVU5JQ09ERV9TVFJJTkcoIkZyb21BZGRyZXNzIikpOworCXJvb3RFbGVtLT5hcHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKE1BS0VfVU5JQ09ERV9TVFJJTkcoIlxuIikpKTsKKwlyb290RWxlbS0+YXBwZW5kQ2hpbGQoYWRkcmVzc0VsZW0pOworCWFkZHJlc3NFbGVtLT5hcHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKAorCQlNQUtFX1VOSUNPREVfU1RSSU5HKCJUaGUgYWRkcmVzcyBvZiB0aGUgU2VuZGVyIikpKTsKKworCS8vIEFkZCBzb21lIHRleHQKKwlET01FbGVtZW50ICp0ZXh0RWxlbSA9IGRvYy0+Y3JlYXRlRWxlbWVudChNQUtFX1VOSUNPREVfU1RSSU5HKCJUZXh0IikpOworCXJvb3RFbGVtLT5hcHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKE1BS0VfVU5JQ09ERV9TVFJJTkcoIlxuIikpKTsKKwlyb290RWxlbS0+YXBwZW5kQ2hpbGQodGV4dEVsZW0pOworCXRleHRFbGVtLT5hcHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKAorCQlNQUtFX1VOSUNPREVfU1RSSU5HKCJcblRvIHdob20gaXQgbWF5IGNvbmNlcm4sIG15IHNlY3JldCBcCitjcmVkaXQgY2FyZCBudW1iZXIgaXMgOiBcbiAgMDEyMyA0NTY3IDg5YWIgY2RlZlxuXG4uLi5cbiIpKSk7CisKKwlnX3RvRW5jcnlwdCA9IHRleHRFbGVtOworCXJldHVybiBkb2M7CisKK30KKworaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikgeworCisJdHJ5IHsKKwkJWE1MUGxhdGZvcm1VdGlsczo6SW5pdGlhbGl6ZSgpOworI2lmbmRlZiBYU0VDX05PX1hBTEFOCisJCVhhbGFuVHJhbnNmb3JtZXI6OmluaXRpYWxpemUoKTsKKyNlbmRpZgorCQlYU0VDUGxhdGZvcm1VdGlsczo6SW5pdGlhbGlzZSgpOworCX0KKwljYXRjaCAoY29uc3QgWE1MRXhjZXB0aW9uICZlKSB7CisKKwkJY2VyciA8PCAiRXJyb3IgZHVyaW5nIGluaXRpYWxpc2F0aW9uIG9mIFhlcmNlcyIgPDwgZW5kbDsKKwkJY2VyciA8PCAiRXJyb3IgTWVzc2FnZSA9IDogIgorCQkgICAgIDw8IGUuZ2V0TWVzc2FnZSgpIDw8IGVuZGw7CisKKwl9CisKKwkvLyBDcmVhdGUgYSBibGFuayBEb2N1bWVudAorCisgICAgRE9NSW1wbGVtZW50YXRpb24gKmltcGwgPSAKKwkJRE9NSW1wbGVtZW50YXRpb25SZWdpc3RyeTo6Z2V0RE9NSW1wbGVtZW50YXRpb24oTUFLRV9VTklDT0RFX1NUUklORygiQ29yZSIpKTsKKwkKKwkvLyBDcmVhdGUgYSBsZXR0ZXIKKwlET01Eb2N1bWVudCAqZG9jID0gY3JlYXRlTGV0dGVyKGltcGwpOworCisJdHJ5IHsKKwkJCisJCS8qIENyZWF0ZSB0aGUgY2lwaGVyIG9iamVjdCB0aGF0IHdlIG5lZWQgKi8KKworCQlYU0VDUHJvdmlkZXIgcHJvdjsKKwkJWEVOQ0NpcGhlciAqY2lwaGVyOworCisJCWNpcGhlciA9IHByb3YubmV3Q2lwaGVyKGRvYyk7CisKKwkJLyogTm93IGdlbmVyYXRlIGEgcmFuZG9tIGtleSB0aGF0IHdlIGNhbiB1c2UgdG8gZW5jcnlwdCB0aGUgZWxlbWVudAorCQkgKgorCQkgKiBGaXJzdCBjaGVjayB0aGUgc3RhdHVzIG9mIHRoZSByYW5kb20gZ2VuZXJhdGlvbiBpbiBPcGVuU1NMCisJCSAqLworCisJCWlmIChSQU5EX3N0YXR1cygpICE9IDEpIHsKKworCQkJY2VyciA8PCAiT3BlblNTTCByYW5kb20gZ2VuZXJhdGlvbiBub3QgcHJvcGVybHkgaW5pdGlhbGlzZWQiIDw8IGVuZGw7CisJCQlleGl0KDEpOworCisJCX0KKworCQl1bnNpZ25lZCBjaGFyIGtleUJ1ZlsyNF07CisJCWlmIChSQU5EX2J5dGVzKGtleUJ1ZiwgMjQpID09IDApIHsKKworCQkJY2VyciA8PCAiRXJyb3Igb2J0YWluaW5nIDI0IGJ5dGVzIG9mIHJhbmRvbSBmcm9tIE9wZW5TU0wiIDw8IGVuZGw7CisJCQlleGl0KDEpOworCisJCX0KKworCQkvKiBXcmFwIHRoaXMgaW4gYSBTeW1tZXRyaWMgM0RFUyBrZXkgKi8KKworCQlPcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5ICoga2V5ID0gCisJCQluZXcgT3BlblNTTENyeXB0b1N5bW1ldHJpY0tleShYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfM0RFU18xOTIpOworCQlrZXktPnNldEtleShrZXlCdWYsIDI0KTsKKwkJY2lwaGVyLT5zZXRLZXkoa2V5KTsKKworCQkvKiBFbmNyeXB0IHRoZSBlbGVtZW50IHRoYXQgbmVlZHMgdG8gYmUgaGlkZGVuICovCisJCWNpcGhlci0+ZW5jcnlwdEVsZW1lbnQoZ190b0VuY3J5cHQsIEVOQ1JZUFRfM0RFU19DQkMpOworCisJCS8qIE5vdyBsZXRzIGNyZWF0ZSBhbiBFbmNyeXB0ZWRLZXkgZWxlbWVudCB0byBob2xkIHRoZSBnZW5lcmF0ZWQga2V5ICovCisKKwkJLyogRmlyc3QgbGV0cyBsb2FkIHRoZSBwdWJsaWMga2V5IGluIHRoZSBjZXJ0aWZpY2F0ZSAqLworCQlPcGVuU1NMQ3J5cHRvWDUwOSAqIHg1MDkgPSBuZXcgT3BlblNTTENyeXB0b1g1MDkoKTsKKwkJeDUwOS0+bG9hZFg1MDlCYXNlNjRCaW4oY2VydCwgKHVuc2lnbmVkIGludCkgc3RybGVuKGNlcnQpKTsKKwkKKwkJLyogTm93IHNldCB0aGUgS2V5IEVuY3J5cHRpbmcgS2V5IChOT1RFOiBOb3QgdGhlIG5vcm1hbCBrZXkpICovCisJCWNpcGhlci0+c2V0S0VLKHg1MDktPmNsb25lUHVibGljS2V5KCkpOworCQkKKworCQkvKiBOb3cgZG8gdGhlIGVuY3J5cHQsIHVzaW5nIFJTQSB3aXRoIFBLQ1MgMS41IHBhZGRpbmcgKi8KKworCQlYRU5DRW5jcnlwdGVkS2V5ICogZW5jcnlwdGVkS2V5ID0gCisJCQljaXBoZXItPmVuY3J5cHRLZXkoa2V5QnVmLCAyNCwgRU5DUllQVF9SU0FfMTUpOworCisJCS8qCisJCSAqIEFkZCB0aGUgZW5jcnlwdGVkIEtleSB0byB0aGUgcHJldmlvdXNseSBjcmVhdGVkIEVuY3J5cHRlZERhdGEsIHdoaWNoCisJCSAqIHdlIGZpcnN0IHJldHJpZXZlIGZyb20gdGhlIGNpcGhlciBvYmplY3QuICBUaGlzIHdpbGwgYXV0b21hdGljYWxseSBjcmVhdGUKKwkJICogdGhlIGFwcHJvcHJpYXRlIDxLZXlJbmZvPiBlbGVtZW50IHdpdGhpbiB0aGUgRW5jcnlwdGVkRGF0YQorCQkgKi8KKworCQlYRU5DRW5jcnlwdGVkRGF0YSAqIGVuY3J5cHRlZERhdGEgPSBjaXBoZXItPmdldEVuY3J5cHRlZERhdGEoKTsKKwkJZW5jcnlwdGVkRGF0YS0+YXBwZW5kRW5jcnlwdGVkS2V5KGVuY3J5cHRlZEtleSk7CisJCQorCisJfQorCisJY2F0Y2ggKFhTRUNFeGNlcHRpb24gJmUpCisJeworCQljaGFyICogbXNnID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoZS5nZXRNc2coKSk7CisJCWNlcnIgPDwgIkFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBhbiBlbmNyeXB0aW9uIG9wZXJhdGlvblxuICAgTWVzc2FnZTogIgorCQk8PCBtc2cgPDwgZW5kbDsKKwkJZXhpdCgxKTsKKwkJCisJfQorCisJLyogT3V0cHV0ICovCisJZG9jU2V0dXAoZG9jKTsKKwljb3V0IDw8IGRvYzsKKworCXJldHVybiAwOworCit9CmRpZmYgLS1naXQgYS9jL3NyYy9zYW1wbGVzL3NpbXBsZUhNQUMuY3BwIGIvYy9zcmMvc2FtcGxlcy9zaW1wbGVITUFDLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmIzYzI1Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvc2FtcGxlcy9zaW1wbGVITUFDLmNwcApAQCAtMCwwICsxLDE2OSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogU2ltcGxlSE1BQyA6PSBBbiBhcHBsaWNhdGlvbiB0byBnZW5lcmF0ZSBhbiBYTUwgZG9jdW1lbnQgKHZpYSBYZXJjZXMpIGFuZCBzaWduIGl0CisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElEJAorICoKKyAqICRMT0ckCisgKgorICovCisKKyNpbmNsdWRlICJJT1N0cmVhbU91dHB1dHRlci5ocHAiCisKKy8vIFhlcmNlcworCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1BsYXRmb3JtVXRpbHMuaHBwPgorCisvLyBYTUwtU2VjdXJpdHktQyAoWFNFQykKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNQcm92aWRlci5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdSZWZlcmVuY2UuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0tleUhNQUMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFeGNlcHRpb24uaHBwPgorCisvLyBYYWxhbgorCisjaWZuZGVmIFhTRUNfTk9fWEFMQU4KKyNpbmNsdWRlIDx4YWxhbmMvWGFsYW5UcmFuc2Zvcm1lci9YYWxhblRyYW5zZm9ybWVyLmhwcD4KK1hBTEFOX1VTSU5HX1hBTEFOKFhhbGFuVHJhbnNmb3JtZXIpCisjZW5kaWYKKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKK0RPTURvY3VtZW50ICpjcmVhdGVMZXR0ZXIoRE9NSW1wbGVtZW50YXRpb24gKmltcGwpIHsKKworCURPTURvY3VtZW50ICpkb2MgPSBpbXBsLT5jcmVhdGVEb2N1bWVudCgKKyAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgIE1BS0VfVU5JQ09ERV9TVFJJTkcoIkxldHRlciIpLCAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBOVUxMKTsgIAorCisgICAgRE9NRWxlbWVudCAqcm9vdEVsZW0gPSBkb2MtPmdldERvY3VtZW50RWxlbWVudCgpOworCisJLy8gQWRkIHRoZSBUb0FkZHJlc3MKKworCURPTUVsZW1lbnQgKmFkZHJlc3NFbGVtID0gZG9jLT5jcmVhdGVFbGVtZW50KE1BS0VfVU5JQ09ERV9TVFJJTkcoIlRvQWRkcmVzcyIpKTsKKwlyb290RWxlbS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZShNQUtFX1VOSUNPREVfU1RSSU5HKCJcbiIpKSk7CisJcm9vdEVsZW0tPmFwcGVuZENoaWxkKGFkZHJlc3NFbGVtKTsKKwlhZGRyZXNzRWxlbS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZSgKKwkJTUFLRV9VTklDT0RFX1NUUklORygiVGhlIGFkZHJlc3Mgb2YgdGhlIFJlY2lwaWVudCIpKSk7CisKKwkvLyBBZGQgdGhlIEZyb21BZGRyZXNzCisJYWRkcmVzc0VsZW0gPSBkb2MtPmNyZWF0ZUVsZW1lbnQoTUFLRV9VTklDT0RFX1NUUklORygiRnJvbUFkZHJlc3MiKSk7CisJcm9vdEVsZW0tPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoTUFLRV9VTklDT0RFX1NUUklORygiXG4iKSkpOworCXJvb3RFbGVtLT5hcHBlbmRDaGlsZChhZGRyZXNzRWxlbSk7CisJYWRkcmVzc0VsZW0tPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoCisJCU1BS0VfVU5JQ09ERV9TVFJJTkcoIlRoZSBhZGRyZXNzIG9mIHRoZSBTZW5kZXIiKSkpOworCisJLy8gQWRkIHNvbWUgdGV4dAorCURPTUVsZW1lbnQgKnRleHRFbGVtID0gZG9jLT5jcmVhdGVFbGVtZW50KE1BS0VfVU5JQ09ERV9TVFJJTkcoIlRleHQiKSk7CisJcm9vdEVsZW0tPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoTUFLRV9VTklDT0RFX1NUUklORygiXG4iKSkpOworCXJvb3RFbGVtLT5hcHBlbmRDaGlsZCh0ZXh0RWxlbSk7CisJdGV4dEVsZW0tPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoCisJCU1BS0VfVU5JQ09ERV9TVFJJTkcoIlxuVG8gd2hvbSBpdCBtYXkgY29uY2VyblxuXG4uLi5cbiIpKSk7CisKKwlyZXR1cm4gZG9jOworCit9CisKK2ludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKworCXRyeSB7CisJCVhNTFBsYXRmb3JtVXRpbHM6OkluaXRpYWxpemUoKTsKKyNpZm5kZWYgWFNFQ19OT19YQUxBTgorCQlYYWxhblRyYW5zZm9ybWVyOjppbml0aWFsaXplKCk7CisjZW5kaWYKKwkJWFNFQ1BsYXRmb3JtVXRpbHM6OkluaXRpYWxpc2UoKTsKKwl9CisJY2F0Y2ggKGNvbnN0IFhNTEV4Y2VwdGlvbiAmZSkgeworCisJCWNlcnIgPDwgIkVycm9yIGR1cmluZyBpbml0aWFsaXNhdGlvbiBvZiBYZXJjZXMiIDw8IGVuZGw7CisJCWNlcnIgPDwgIkVycm9yIE1lc3NhZ2UgPSA6ICIKKwkJICAgICA8PCBlLmdldE1lc3NhZ2UoKSA8PCBlbmRsOworCisJfQorCisJLy8gQ3JlYXRlIGEgYmxhbmsgRG9jdW1lbnQKKworICAgIERPTUltcGxlbWVudGF0aW9uICppbXBsID0gCisJCURPTUltcGxlbWVudGF0aW9uUmVnaXN0cnk6OmdldERPTUltcGxlbWVudGF0aW9uKE1BS0VfVU5JQ09ERV9TVFJJTkcoIkNvcmUiKSk7CisJCisJLy8gQ3JlYXRlIGEgbGV0dGVyCisJRE9NRG9jdW1lbnQgKmRvYyA9IGNyZWF0ZUxldHRlcihpbXBsKTsKKyAgICBET01FbGVtZW50ICpyb290RWxlbSA9IGRvYy0+Z2V0RG9jdW1lbnRFbGVtZW50KCk7CisKKwkvLyBUaGUgc2lnbmF0dXJlCisKKwlYU0VDUHJvdmlkZXIgcHJvdjsKKwlEU0lHU2lnbmF0dXJlICpzaWc7CisJRE9NRWxlbWVudCAqc2lnTm9kZTsKKworCXRyeSB7CisJCQorCQkvLyBDcmVhdGUgYSBzaWduYXR1cmUgb2JqZWN0CisKKwkJc2lnID0gcHJvdi5uZXdTaWduYXR1cmUoKTsKKwkJc2lnLT5zZXREU0lHTlNQcmVmaXgoTUFLRV9VTklDT0RFX1NUUklORygiZHMiKSk7CisKKwkJLy8gVXNlIGl0IHRvIGNyZWF0ZSBhIGJsYW5rIHNpZ25hdHVyZSBET00gc3RydWN0dXJlIGZyb20gdGhlIGRvYworCisJCXNpZ05vZGUgPSBzaWctPmNyZWF0ZUJsYW5rU2lnbmF0dXJlKGRvYywgQ0FOT05fQzE0Tl9DT00sIFNJR05BVFVSRV9ITUFDLCBIQVNIX1NIQTEpOworCisJCS8vIEluc2VyIHRoZSBzaWduYXR1cmUgRE9NIG5vZGVzIGludG8gdGhlIGRvYworCisJCXJvb3RFbGVtLT5hcHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKE1BS0VfVU5JQ09ERV9TVFJJTkcoIlxuIikpKTsKKwkJcm9vdEVsZW0tPmFwcGVuZENoaWxkKHNpZ05vZGUpOworCQlyb290RWxlbS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZShNQUtFX1VOSUNPREVfU1RSSU5HKCJcbiIpKSk7CisKKwkJLy8gQ3JlYXRlIGFuIGVudmVsb3BlIHJlZmVyZW5jZSBmb3IgdGhlIHRleHQgdG8gYmUgc2lnbmVkCisJCURTSUdSZWZlcmVuY2UgKiByZWYgPSBzaWctPmNyZWF0ZVJlZmVyZW5jZShNQUtFX1VOSUNPREVfU1RSSU5HKCIiKSk7CisJCXJlZi0+YXBwZW5kRW52ZWxvcGVkU2lnbmF0dXJlVHJhbnNmb3JtKCk7CisKKwkJLy8gU2V0IHRoZSBITUFDIEtleSB0byBiZSB0aGUgc3RyaW5nICJzZWNyZXQiCisKKwkJT3BlblNTTENyeXB0b0tleUhNQUMgKiBobWFjS2V5ID0gbmV3IE9wZW5TU0xDcnlwdG9LZXlITUFDKCk7CisJCWhtYWNLZXktPnNldEtleSgodW5zaWduZWQgY2hhciAqKSAic2VjcmV0IiwgKHVuc2lnbmVkIGludCkgc3RybGVuKCJzZWNyZXQiKSk7CisJCXNpZy0+c2V0U2lnbmluZ0tleShobWFjS2V5KTsKKworCQkvLyBBZGQgYSBLZXlJbmZvIGVsZW1lbnQKKwkJc2lnLT5hcHBlbmRLZXlOYW1lKE1BS0VfVU5JQ09ERV9TVFJJTkcoIlRoZSBzZWNyZXQga2V5IGlzIFwic2VjcmV0XCIiKSk7CisKKwkJLy8gU2lnbgorCisJCXNpZy0+c2lnbigpOworCX0KKworCWNhdGNoIChYU0VDRXhjZXB0aW9uICZlKQorCXsKKwkJY2VyciA8PCAiQW4gZXJyb3Igb2NjdXJlZCBkdXJpbmcgYSBzaWduYXR1cmUgbG9hZFxuICAgTWVzc2FnZTogIgorCQk8PCBlLmdldE1zZygpIDw8IGVuZGw7CisJCWV4aXQoMSk7CisJCQorCX0KKworCS8vIE91dHB1dAorCisJZG9jU2V0dXAoZG9jKTsKKwljb3V0IDw8IGRvYzsKKworCXJldHVybiAwOworCit9CmRpZmYgLS1naXQgYS9jL3NyYy9zYW1wbGVzL3NpbXBsZVZhbGlkYXRlLmNwcCBiL2Mvc3JjL3NhbXBsZXMvc2ltcGxlVmFsaWRhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwOWYwZWIKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy9zYW1wbGVzL3NpbXBsZVZhbGlkYXRlLmNwcApAQCAtMCwwICsxLDI2MiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogc2ltcGxlVmFsaWRhdGUgOj0gQW4gYXBwbGljYXRpb24gdG8gdmFsaWRhdGUgYW4gaW4tbWVtb3J5IHNpZ25hdHVyZQorICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJRCQKKyAqCisgKiAkTE9HJAorICoKKyAqLworCisjaW5jbHVkZSAiSU9TdHJlYW1PdXRwdXR0ZXIuaHBwIgorCisvLyBYTUwtU2VjdXJpdHktQyAoWFNFQykKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNQcm92aWRlci5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdSZWZlcmVuY2UuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0tleUhNQUMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFeGNlcHRpb24uaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b1g1MDkuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9FeGNlcHRpb24uaHBwPgorCisKKy8vIFhlcmNlcworCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1BsYXRmb3JtVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvcGFyc2Vycy9YZXJjZXNET01QYXJzZXIuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvZnJhbWV3b3JrL01lbUJ1ZklucHV0U291cmNlLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKyNpZm5kZWYgWFNFQ19OT19YQUxBTgorCisvLyBYYWxhbgorCisjaW5jbHVkZSA8eGFsYW5jL1hhbGFuVHJhbnNmb3JtZXIvWGFsYW5UcmFuc2Zvcm1lci5ocHA+CitYQUxBTl9VU0lOR19YQUxBTihYYWxhblRyYW5zZm9ybWVyKQorCisjZW5kaWYKKworY2hhciBkb2NUb1ZhbGlkYXRlIFs0MDk2XSA9ICJcCis8UHVyY2hhc2VPcmRlcj5cblwKKzxDb21wYW55PldpZGdldHMuT3JnPC9Db21wYW55PlxuXAorPFByb2R1Y3Q+QSBsYXJnZSB3aWRnZXQ8L1Byb2R1Y3Q+XG5cCis8QW1vdW50PiQxNi41MDwvQW1vdW50PlxuXAorPER1ZT4xNiBKYW51YXJ5IDIwMTA8L0R1ZT5cblwKKzxkczpTaWduYXR1cmUgeG1sbnM6ZHM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjXCI+XG5cCis8ZHM6U2lnbmVkSW5mbz5cblwKKzxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT1cImh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1XCIvPlxuXAorPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTFcIi8+XG5cCis8ZHM6UmVmZXJlbmNlIFVSST1cIiN4cG9pbnRlcigvKVwiPlxuXAorPGRzOlRyYW5zZm9ybXM+XG5cCis8ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlXCIvPlxuXAorPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09XCJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHNcIi8+XG5cCis8L2RzOlRyYW5zZm9ybXM+XG5cCis8ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExXCIvPlxuXAorPGRzOkRpZ2VzdFZhbHVlPm4rNnk5NDVoL1N2bFZGOXFCcStMYjRUcmNPST08L2RzOkRpZ2VzdFZhbHVlPlxuXAorPC9kczpSZWZlcmVuY2U+XG5cCis8L2RzOlNpZ25lZEluZm8+XG5cCis8ZHM6U2lnbmF0dXJlVmFsdWU+T21Ub0xvOHVFbkszN25DRlhEaVp3Z2NzWkdKMGFaNEF5RUNVeTc4REw5MUFIUlJXZGpsbFNRPT08L2RzOlNpZ25hdHVyZVZhbHVlPlxuXAorPGRzOktleUluZm8+XG5cCis8ZHM6WDUwOURhdGE+XG5cCis8ZHM6WDUwOVN1YmplY3ROYW1lPkM9QVUsIFNUPVZpYywgTz1YTUwtU2VjdXJpdHktQyBQcm9qZWN0LCBDTj1TYW1wbGVzIERlbW8gQ2VydGlmaWNhdGU8L2RzOlg1MDlTdWJqZWN0TmFtZT5cblwKKzwvZHM6WDUwOURhdGE+XG5cCis8L2RzOktleUluZm8+XG5cCis8L2RzOlNpZ25hdHVyZT5cblwKKzwvUHVyY2hhc2VPcmRlcj5cbiI7CisKK2NoYXIgY2VydFtdID0gIlxuXAorTUlJRUVUQ0NBOUdnQXdJQkFnSUNFQUV3Q1FZSEtvWkl6amdFQXpCNU1Rc3dDUVlEVlFRR0V3SkJWVEVNTUFvR1xuXAorQTFVRUNCTURWbWxqTVJJd0VBWURWUVFIRXdsTlpXeGliM1Z5Ym1VeEh6QWRCZ05WQkFvVEZsaE5UQzFUWldOMVxuXAorY21sMGVTMURJRkJ5YjJwbFkzUXhFREFPQmdOVkJBc1RCMWhUUlVNdFEwRXhGVEFUQmdOVkJBTVRERmhUUlVNdFxuXAorUTBFZ1VtOXZkREFlRncwd01qRXhNRFV3TXpFMU5ERmFGdzB3TXpFeE1EVXdNekUxTkRGYU1GOHhDekFKQmdOVlxuXAorQkFZVEFrRlZNUXd3Q2dZRFZRUUlFd05XYVdNeEh6QWRCZ05WQkFvVEZsaE5UQzFUWldOMWNtbDBlUzFESUZCeVxuXAorYjJwbFkzUXhJVEFmQmdOVkJBTVRHRk5oYlhCc1pYTWdSR1Z0YnlCRFpYSjBhV1pwWTJGMFpUQ0NBYmd3Z2dFc1xuXAorQmdjcWhrak9PQVFCTUlJQkh3S0JnUURqMWpCa3UveTZDT2ZreG1ITUxTMWJlaHhyM2FoOHNGQWs3MUV5dVhMeVxuXAorMk9ueTk4OVdVYzUyLzVNM25OWTlFLzc1S0IzdUtOY3JuR1k4VGZ3ODVXcmVodjdqU0ltQ3V4bGp0bm9tQUJUalxuXAorOUxCdUdMOVRmWUJOQkpJLzBqTlIwR09vMGtRcGhvS0ZPdmxkdFJJd1JtdFU1TWNhbWc5ZTVGT0VqWUpDU2FoNVxuXAorcndJVkFPeld4b3JEckY0dXdNSUMvc3M2UGZpYmROZ0hBb0dCQU5MQU9zSmpwQlF4NDNEZ25OU2tWSjUxOFRxelxuXAorSUhLcGc5Y3JBc0NSZCtLZWlwdC90Vm5PVEEyOXVKWk1vMndVU0dDOFZqN3RscmVNSnR4RFVuTGNSZFg2RVp3alxuXAorV1I5bkJoTHB6Q2xuZGN0ampMRjVJa3pDZWNoUWs3Q05LbU8yWjJnYUQ2Sy9oZGZNaXhGL0xILzFpSGVZalROWlxuXAordkFoY0V4ZDFQUnBWMDIwN0E0R0ZBQUtCZ1FETlMzVlB6U0FMK0k3MS8wRW5lVHhMSXl2QWxST2puTFZEZDVMVFxuXAordkVBb3JqZXBvOHY1L3FnWE5LNE8zMk5sTlp4U09ENjEyTXIxUThzTFlEbngwMDZ0OHgwMUE3U3Q4Zi9qY2Q5eVxuXAorZElJb21LTUVzMmh3YWhIdDhwL2pGZFJKTlhGRmU0Z1EyRE0yY0tSaFpURXVMOXFwdjJBblBJSWxHcW5ybG8xTFxuXAorbzRnRGI2T0NBUUV3Z2Y0d0NRWURWUjBUQkFJd0FEQXNCZ2xnaGtnQmh2aENBUTBFSHhZZFQzQmxibE5UVENCSFxuXAorWlc1bGNtRjBaV1FnUTJWeWRHbG1hV05oZEdVd0hRWURWUjBPQkJZRUZBN0VtMVZLNi83cWM4OGw3bjhKbklPVFxuXAorUUVBck1JR2pCZ05WSFNNRWdac3dnWmlBRkJLTlg5Q3NBSXNqVUlGbVZxNHdFNHdsT0dDNW9YMmtlekI1TVFzd1xuXAorQ1FZRFZRUUdFd0pCVlRFTU1Bb0dBMVVFQ0JNRFZtbGpNUkl3RUFZRFZRUUhFd2xOWld4aWIzVnlibVV4SHpBZFxuXAorQmdOVkJBb1RGbGhOVEMxVFpXTjFjbWwwZVMxRElGQnliMnBsWTNReEVEQU9CZ05WQkFzVEIxaFRSVU10UTBFeFxuXAorRlRBVEJnTlZCQU1UREZoVFJVTXRRMEVnVW05dmRJSUJBREFKQmdjcWhrak9PQVFEQXk4QU1Dd0NGREE3bk5aZVxuXAorQzZnU3MrTjdSUnE3dkxteC9JampBaFJKdmZQWi9odm9OOGZOcFRtUm9IdHV6a1NqY1E9PSI7CisKK2ludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKworCXRyeSB7CisJCVhNTFBsYXRmb3JtVXRpbHM6OkluaXRpYWxpemUoKTsKKyNpZm5kZWYgWFNFQ19OT19YQUxBTgorCQlYYWxhblRyYW5zZm9ybWVyOjppbml0aWFsaXplKCk7CisjZW5kaWYKKwkJWFNFQ1BsYXRmb3JtVXRpbHM6OkluaXRpYWxpc2UoKTsKKwl9CisJY2F0Y2ggKGNvbnN0IFhNTEV4Y2VwdGlvbiAmZSkgeworCisJCWNlcnIgPDwgIkVycm9yIGR1cmluZyBpbml0aWFsaXNhdGlvbiBvZiBYZXJjZXMiIDw8IGVuZGw7CisJCWNlcnIgPDwgIkVycm9yIE1lc3NhZ2UgPSA6ICIKKwkJICAgICA8PCBlLmdldE1lc3NhZ2UoKSA8PCBlbmRsOworCisJfQorCisJLy8gVXNlIHhlcmNlcyB0byBwYXJzZSB0aGUgZG9jdW1lbnQKKwlYZXJjZXNET01QYXJzZXIgKiBwYXJzZXIgPSBuZXcgWGVyY2VzRE9NUGFyc2VyOworCXBhcnNlci0+c2V0RG9OYW1lc3BhY2VzKHRydWUpOworCXBhcnNlci0+c2V0Q3JlYXRlRW50aXR5UmVmZXJlbmNlTm9kZXModHJ1ZSk7CisJcGFyc2VyLT5zZXREb1NjaGVtYSh0cnVlKTsKKworCS8vIENyZWF0ZSBhbiBpbnB1dCBzb3VyY2UKKworCU1lbUJ1ZklucHV0U291cmNlKiBtZW1JUyA9IG5ldyBNZW1CdWZJbnB1dFNvdXJjZSAoKGNvbnN0IFhNTEJ5dGUqKSBkb2NUb1ZhbGlkYXRlLCAodW5zaWduZWQgaW50KSBzdHJsZW4oZG9jVG9WYWxpZGF0ZSksICJYU0VDTWVtIik7CisKKwl4c2Vjc2l6ZV90IGVycm9yQ291bnQgPSAwOworCisJcGFyc2VyLT5wYXJzZSgqbWVtSVMpOworICAgIGVycm9yQ291bnQgPSBwYXJzZXItPmdldEVycm9yQ291bnQoKTsKKyAgICBpZiAoZXJyb3JDb3VudCA+IDApIHsKKwkJY2VyciA8PCAiRXJyb3IgcGFyc2luZyBpbnB1dCBkb2N1bWVudFxuIjsKKwkJZXhpdCAoMSk7CisJfQorCisgICAgRE9NRG9jdW1lbnQgKmRvYyA9IHBhcnNlci0+Z2V0RG9jdW1lbnQoKTsKKworCS8vIEZpbmQgdGhlIEFtb3VudCBub2RlCisJRE9NTm9kZSAqYW10ID0gZG9jLT5nZXREb2N1bWVudEVsZW1lbnQoKTsKKworCWlmIChhbXQgIT0gTlVMTCkKKwkJYW10ID0gYW10LT5nZXRGaXJzdENoaWxkKCk7CisKKwl3aGlsZSAoYW10ICE9IE5VTEwgJiYgKGFtdC0+Z2V0Tm9kZVR5cGUoKSAhPSBET01Ob2RlOjpFTEVNRU5UX05PREUgfHwgIXN0ckVxdWFscyhhbXQtPmdldE5vZGVOYW1lKCksICJBbW91bnQiKSkpCisJCWFtdCA9IGFtdC0+Z2V0TmV4dFNpYmxpbmcoKTsKKworCWlmIChhbXQgIT0gTlVMTCkKKwkJYW10ID0gYW10LT5nZXRGaXJzdENoaWxkKCk7CisKKwlpZiAoYW10ID09IE5VTEwgfHwgYW10LT5nZXROb2RlVHlwZSgpICE9IERPTU5vZGU6OlRFWFRfTk9ERSkgeworCQljZXJyIDw8ICJFcnJvciBmaW5kaW5nIGFtb3VudCBpbiBwdXJjaGFzZSBvcmRlciIgPDwgZW5kbDsKKwkJZXhpdCAoMSk7CisJfQorCisJZG9jU2V0dXAoZG9jKTsKKworCS8vIE5vdyBjcmVhdGUgYSBzaWduYXR1cmUgb2JqZWN0IHRvIHZhbGlkYXRlIHRoZSBkb2N1bWVudAorCisJWFNFQ1Byb3ZpZGVyIHByb3Y7CisKKwlEU0lHU2lnbmF0dXJlICogc2lnID0gcHJvdi5uZXdTaWduYXR1cmVGcm9tRE9NKGRvYyk7CisKKworCXRyeSB7CisJCS8vIFVzZSB0aGUgT3BlblNTTCBpbnRlcmZhY2Ugb2JqZWN0cyB0byBnZXQgYSBzaWduaW5nIGtleQorCisJCU9wZW5TU0xDcnlwdG9YNTA5ICogeDUwOSA9IG5ldyBPcGVuU1NMQ3J5cHRvWDUwOSgpOworCQl4NTA5LT5sb2FkWDUwOUJhc2U2NEJpbihjZXJ0LCAodW5zaWduZWQgaW50KSBzdHJsZW4oY2VydCkpOworCQkKKwkJc2lnLT5sb2FkKCk7CisJCURTSUdLZXlJbmZvTGlzdCAqIGtpbmZMaXN0ID0gc2lnLT5nZXRLZXlJbmZvTGlzdCgpOworCQkKKwkJLy8gU2VlIGlmIHdlIGNhbiBmaW5kIGEgS2V5IE5hbWUKKwkJY29uc3QgWE1MQ2ggKiBrbmFtZTsKKwkJRFNJR0tleUluZm9MaXN0OjpzaXplX3R5cGUgc2l6ZSwgaTsKKwkJc2l6ZSA9IGtpbmZMaXN0LT5nZXRTaXplKCk7CisKKwkJZm9yIChpID0gMDsgaSA8IHNpemU7ICsraSkgeworCQkJa25hbWUgPSBraW5mTGlzdC0+aXRlbShpKS0+Z2V0S2V5TmFtZSgpOworCQkJaWYgKGtuYW1lICE9IE5VTEwpIHsKKwkJCQljaGFyICogbiA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKGtuYW1lKTsKKwkJCQljb3V0IDw8ICJLZXkgTmFtZSA9ICIgPDwgbiA8PCBlbmRsOworCQkJCVhTRUNfUkVMRUFTRV9YTUxDSChuKTsKKwkJCX0KKwkJfQorCisJCXNpZy0+c2V0U2lnbmluZ0tleSh4NTA5LT5jbG9uZVB1YmxpY0tleSgpKTsKKworCQljb3V0IDw8ICJBbW91bnQgPSAiIDw8IGFtdCA8PCAiIC0+ICI7CisKKwkJaWYgKHNpZy0+dmVyaWZ5KCkpIHsKKwkJCWNvdXQgPDwgIlNpZ25hdHVyZSBWYWxpZFxuIjsKKwkJfQorCQllbHNlIHsKKwkJCWNoYXIgKiBlcnIgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShzaWctPmdldEVyck1zZ3MoKSk7CisJCQljb3V0IDw8ICJJbmNvcnJlY3QgU2lnbmF0dXJlXG4iOworCQkJY291dCA8PCBlcnIgPDwgZW5kbDsKKwkJCVhTRUNfUkVMRUFTRV9YTUxDSChlcnIpOworCQl9CisKKwkJYW10LT5zZXROb2RlVmFsdWUoTUFLRV9VTklDT0RFX1NUUklORygiJDAuNTAiKSk7CisJCQorCQljb3V0IDw8ICJBbW91bnQgPSAiIDw8IGFtdCA8PCAiIC0+ICI7CisKKwkJaWYgKHNpZy0+dmVyaWZ5KCkpIHsKKwkJCWNvdXQgPDwgIlNpZ25hdHVyZSBWYWxpZFxuIjsKKwkJfQorCQllbHNlIHsKKwkJCWNoYXIgKiBlcnIgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShzaWctPmdldEVyck1zZ3MoKSk7CisJCQljb3V0IDw8ICJJbmNvcnJlY3QgU2lnbmF0dXJlXG4iOworCQkJY291dCA8PCBlcnIgPDwgZW5kbDsKKwkJCVhTRUNfUkVMRUFTRV9YTUxDSChlcnIpOworCQl9CisKKwkJYW10LT5zZXROb2RlVmFsdWUoTUFLRV9VTklDT0RFX1NUUklORygiJDE2LjUwIikpOworCQkKKwkJY291dCA8PCAiQW1vdW50ID0gIiA8PCBhbXQgPDwgIiAtPiAiOworCisJCWlmIChzaWctPnZlcmlmeSgpKSB7CisJCQljb3V0IDw8ICJTaWduYXR1cmUgVmFsaWRcbiI7CisJCX0KKwkJZWxzZSB7CisJCQljaGFyICogZXJyID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoc2lnLT5nZXRFcnJNc2dzKCkpOworCQkJY291dCA8PCAiSW5jb3JyZWN0IFNpZ25hdHVyZVxuIjsKKwkJCWNvdXQgPDwgZXJyIDw8IGVuZGw7CisJCQlYU0VDX1JFTEVBU0VfWE1MQ0goZXJyKTsKKwkJfQorCisKKwl9CisKKwljYXRjaCAoWFNFQ0V4Y2VwdGlvbiAmZSkKKwl7CisJCWNlcnIgPDwgIkFuIGVycm9yIG9jY3VyZWQgZHVyaW5nIGEgc2lnbmF0dXJlIGxvYWRcbiAgIE1lc3NhZ2U6ICIKKwkJPDwgZS5nZXRNc2coKSA8PCBlbmRsOworCQlleGl0KDEpOworCQkKKwl9CisJY2F0Y2ggKFhTRUNDcnlwdG9FeGNlcHRpb24gJmUpIHsKKwkJY2VyciA8PCAiQW4gZXJyb3Igb2NjdXJlZCBpbiB0aGUgWE1MLVNlY3VyaXR5LUMgQ3J5cHRvIHJvdXRpbmVzXG4gICBNZXNzYWdlOiAiCisJCTw8IGUuZ2V0TXNnKCkgPDwgZW5kbDsKKwkJZXhpdCgxKTsKKwl9CisJCQorCQkvLyBDbGVhbiB1cAorCisJZGVsZXRlIG1lbUlTOworCWRlbGV0ZSBwYXJzZXI7CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2Mvc3JjL3Rvb2xzL2MxNG4vYzE0bi5jcHAgYi9jL3NyYy90b29scy9jMTRuL2MxNG4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyOTE2MmIKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy90b29scy9jMTRuL2MxNG4uY3BwCkBAIC0wLDAgKzEsMjEyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBjMTRuIDo9IHRvb2wgdG8gZHVtcCBhIFhNTCBmaWxlIHRvIHRoZSBjb25zb2xlIGFmdGVyIGNhbm9uYWNhbGlzaW5nIGl0IHRocnUKKyAqCQkJYzE0bgorICoKKyAqICRJZCQKKyAqCisgKi8KKworLy9YU0VDIGluY2x1ZGVzCisKKworCisvLyNpbmNsdWRlIDxJbmNsdWRlL1BsYXRmb3JtRGVmaW5pdGlvbnMuaHBwPgorLy8jaW5jbHVkZSA8Y2Fzc2VydD4KKworI2luY2x1ZGUgPG1lbW9yeS5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGlvc3RyZWFtPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1BsYXRmb3JtVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxTdHJpbmcuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvZG9tL0RPTS5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy9wYXJzZXJzL1hlcmNlc0RPTVBhcnNlci5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTEV4Y2VwdGlvbi5ocHA+CisKKy8vIFhTRUMKKworI2luY2x1ZGUgPHhzZWMvY2Fub24vWFNFQ0MxNG4yMDAxMDMxNS5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDTmFtZVNwYWNlRXhwYW5kZXIuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1BsYXRmb3JtVXRpbHMuaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKwordXNpbmcgc3RkOjplbmRsOwordXNpbmcgc3RkOjpjb3V0OwordXNpbmcgc3RkOjpjZXJyOworCit2b2lkIHByaW50VXNhZ2Uodm9pZCkgeworCisJY2VyciA8PCAiXG5Vc2FnZTogYzE0biBbLW5dIFsteF0gWy0xLjFdIFstaWQgSURdIDxpbnB1dCBmaWxlIG5hbWU+XG4iOworCWNlcnIgPDwgIiAgICAgICAtbiA9IE5vIGNvbW1lbnRzXG4iOworICAgIGNlcnIgPDwgIiAgICAgICAtMS4xID0gVXNlIGMxNG4gMS4xXG4iOworICAgIGNlcnIgPDwgIiAgICAgICAteCA9IFVzZSBleGNsdXNpdmUgYzE0blxuIjsKKwljZXJyIDw8ICIgICAgICAgLWlkIElEID0gUmVmZXJlbmNlcyBub2RlIHRvIGNhbm9uaWNhbGl6ZSBieSBJRFxuXG4iOworCit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworCisgICAgY29uc3QgY2hhciogaWQgPSBOVUxMOworCWJvb2wgcHJpbnRDb21tZW50cyA9IHRydWU7CisgICAgYm9vbCBleGNsdXNpdmUgPSBmYWxzZTsKKyAgICBib29sIGluY2x1c2l2ZTExID0gZmFsc2U7CisKKwkvLyBDaGVjayBhcmd1bWVudHMKKworCWlmIChhcmdjIDwgMikgeworCQlwcmludFVzYWdlKCk7CisJCWV4aXQgKDEpOworCX0KKworCWlmIChhcmdjID4gMikgeworCQlmb3IgKGludCBpID0gMTsgaSA8IGFyZ2MgLSAxOyArK2kpIHsKKworCQkJaWYgKCFzdHJjbXAoYXJndltpXSwgIi1uIikgfHwgIXN0cmNtcChhcmd2W2ldLCAiLU4iKSkKKwkJCQlwcmludENvbW1lbnRzID0gZmFsc2U7CisgICAgICAgICAgICBlbHNlIGlmICghc3RyY21wKGFyZ3ZbaV0sICIteCIpIHx8ICFzdHJjbXAoYXJndltpXSwgIi1YIikpCisgICAgICAgICAgICAgICAgZXhjbHVzaXZlID0gdHJ1ZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoYXJndltpXSwgIi0xLjEiKSkKKyAgICAgICAgICAgICAgICBpbmNsdXNpdmUxMSA9IHRydWU7CisgICAgICAgICAgICBlbHNlIGlmICghc3RyY21wKGFyZ3ZbaV0sICItaWQiKSAmJiBhcmdjID4gaSArIDEpCisgICAgICAgICAgICAgICAgaWQgPSBhcmd2WysraV07CisJCQllbHNlIHsKKwkJCQljZXJyIDw8ICJVbmtub3duIG9wdGlvbiAlc1xuXG4iOworCQkJCXByaW50VXNhZ2UoKTsKKwkJCQlleGl0ICgxKTsKKwkJCX0KKwkJfQorCX0KKworCQkJCQorCisJLy8gSW5pdGlhbGlzZSB0aGUgWE1MIHN5c3RlbQorCisJdHJ5IHsKKworCQlYTUxQbGF0Zm9ybVV0aWxzOjpJbml0aWFsaXplKCk7CisJCVhTRUNQbGF0Zm9ybVV0aWxzOjpJbml0aWFsaXNlKCk7CisKKwl9CisJY2F0Y2ggKGNvbnN0IFhNTEV4Y2VwdGlvbiAmZSkgeworCisJCWNlcnIgPDwgIkVycm9yIGR1cmluZyBpbml0aWFsaXNhdGlvbiBvZiBYZXJjZXMiIDw8IGVuZGw7CisJCWNlcnIgPDwgIkVycm9yIE1lc3NhZ2UgPSA6ICIKKwkJICAgICA8PCBlLmdldE1lc3NhZ2UoKSA8PCBlbmRsOworCisJfQorCisJLy8gQ3JlYXRlIGFuZCBzZXQgdXAgdGhlIHBhcnNlcgorCisJWGVyY2VzRE9NUGFyc2VyICogcGFyc2VyID0gbmV3IFhlcmNlc0RPTVBhcnNlcjsKKwlwYXJzZXItPnNldERvTmFtZXNwYWNlcyh0cnVlKTsKKyAgICBwYXJzZXItPnNldFZhbGlkYXRpb25TY2hlbWUoWGVyY2VzRE9NUGFyc2VyOjpWYWxfTmV2ZXIpOworCXBhcnNlci0+c2V0RG9TY2hlbWEoZmFsc2UpOworCXBhcnNlci0+c2V0Q3JlYXRlRW50aXR5UmVmZXJlbmNlTm9kZXMoZmFsc2UpOworCisJLy8gTm93IHBhcnNlIG91dCBmaWxlCisKKwlib29sIGVycm9yc09jY3VyZWQgPSBmYWxzZTsKKwl4c2Vjc2l6ZV90IGVycm9yQ291bnQgPSAwOworICAgIHRyeQorICAgIHsKKyAgICAJcGFyc2VyLT5wYXJzZShhcmd2W2FyZ2MtMV0pOworICAgICAgICBlcnJvckNvdW50ID0gcGFyc2VyLT5nZXRFcnJvckNvdW50KCk7CisgICAgICAgIGlmIChlcnJvckNvdW50ID4gMCkKKyAgICAgICAgICAgIGVycm9yc09jY3VyZWQgPSB0cnVlOworICAgIH0KKworICAgIGNhdGNoIChjb25zdCBYTUxFeGNlcHRpb24mIGUpCisgICAgeworICAgICAgICBjZXJyIDw8ICJBbiBlcnJvciBvY2N1cmVkIGR1cmluZyBwYXJzaW5nXG4gICBNZXNzYWdlOiAiCisgICAgICAgICAgICAgPDwgZS5nZXRNZXNzYWdlKCkgPDwgZW5kbDsKKyAgICAgICAgZXJyb3JzT2NjdXJlZCA9IHRydWU7CisgICAgfQorCisKKyAgICBjYXRjaCAoY29uc3QgRE9NRXhjZXB0aW9uJiBlKQorICAgIHsKKyAgICAgICBjZXJyIDw8ICJBIERPTSBlcnJvciBvY2N1cmVkIGR1cmluZyBwYXJzaW5nXG4gICBET01FeGNlcHRpb24gY29kZTogIgorICAgICAgICAgICAgIDw8IGUuY29kZSA8PCBlbmRsOworICAgICAgICBlcnJvcnNPY2N1cmVkID0gdHJ1ZTsKKyAgICB9CisKKwlpZiAoZXJyb3JzT2NjdXJlZCkgeworCisJCWNvdXQgPDwgIkVycm9ycyBkdXJpbmcgcGFyc2UiIDw8IGVuZGw7CisJCWV4aXQgKDEpOworCisJfQorCisJLyoKKworCQlOb3cgdGhhdCB3ZSBoYXZlIHRoZSBwYXJzZWQgZmlsZSwgZ2V0IHRoZSBET00gZG9jdW1lbnQgYW5kIHN0YXJ0IGxvb2tpbmcgYXQgaXQKKworCSovCisJCisJRE9NTm9kZSAqc3VidHJlZSA9IE5VTEw7CisJRE9NRG9jdW1lbnQgKnRoZURPTSA9IHBhcnNlci0+Z2V0RG9jdW1lbnQoKTsKKyAgICBpZiAoaWQpIHsKKyAgICAgICAgWE1MQ2gqIHRlbXAgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShpZCk7CisgICAgICAgIHN1YnRyZWUgPSB0aGVET00tPmdldEVsZW1lbnRCeUlkKHRlbXApOworICAgICAgICBYU0VDX1JFTEVBU0VfWE1MQ0godGVtcCk7CisgICAgICAgIGlmICghc3VidHJlZSkgeworICAgICAgICAgICAgY2VyciA8PCAiSUQgcmVmZXJlbmNlIGRpZCBub3QgcmVzb2x2ZSIgPDwgZW5kbDsKKyAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgIH0KKyAgICB9CisKKwkvLyBDcmVhdGUgdGhlIGNhbm9uaWNhbGl6ZXIKKyAgICBYU0VDQzE0bjIwMDEwMzE1KiBjYW5vbj1OVUxMOworICAgIGlmIChzdWJ0cmVlKQorCSAgICBjYW5vbiA9IG5ldyBYU0VDQzE0bjIwMDEwMzE1KHRoZURPTSwgc3VidHJlZSk7CisgICAgZWxzZQorICAgICAgICBjYW5vbiA9IG5ldyBYU0VDQzE0bjIwMDEwMzE1KHRoZURPTSk7CisJY2Fub24tPnNldENvbW1lbnRzUHJvY2Vzc2luZyhwcmludENvbW1lbnRzKTsKKwljYW5vbi0+c2V0VXNlTmFtZXNwYWNlU3RhY2sodHJ1ZSk7CisgICAgaWYgKGluY2x1c2l2ZTExKQorICAgICAgICBjYW5vbi0+c2V0SW5jbHVzaXZlMTEoKTsKKyAgICBlbHNlIGlmIChleGNsdXNpdmUpCisgICAgICAgIGNhbm9uLT5zZXRFeGNsdXNpdmUoKTsKKworCS8vIGNhbm9uLT5YUGF0aFNlbGVjdE5vZGVzKCIoL2Rlc2NlbmRhbnQtb3Itc2VsZjo6bm9kZSgpIHwgL2Rlc2NlbmRhbnQtb3Itc2VsZjo6bm9kZSgpL2F0dHJpYnV0ZTo6KiB8IC9kZXNjZW5kYW50LW9yLXNlbGY6Om5vZGUoKS9uYW1lc3BhY2U6OiopWyBzZWxmOjppZXRmOmUxIG9yIChwYXJlbnQ6OmlldGY6ZTEgYW5kIG5vdChzZWxmOjp0ZXh0KCkgb3Igc2VsZjo6ZTIpKSBvciBjb3VudCAoaWQoXCJFM1wiKSB8IGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkgPSBjb3VudCAoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKV0iKTsKKworCWNoYXIgYnVmZmVyWzUxMl07CisJeHNlY3NpemVfdCByZXMgPSBjYW5vbi0+b3V0cHV0QnVmZmVyKCh1bnNpZ25lZCBjaGFyICopIGJ1ZmZlciwgMTI4KTsKKworCisJd2hpbGUgKHJlcyAhPSAwKSB7CisJCWJ1ZmZlcltyZXNdID0gJ1wwJzsKKwkJY291dCA8PCBidWZmZXI7CisJCXJlcyA9IGNhbm9uLT5vdXRwdXRCdWZmZXIoKHVuc2lnbmVkIGNoYXIgKikgYnVmZmVyLCAxMjgpOworCX0KKworCWNvdXQgPDwgZW5kbDsKKworICAgIGRlbGV0ZSBjYW5vbjsKKyAgICBkZWxldGUgcGFyc2VyOworCisgICAgWFNFQ1BsYXRmb3JtVXRpbHM6OlRlcm1pbmF0ZSgpOworCVhNTFBsYXRmb3JtVXRpbHM6OlRlcm1pbmF0ZSgpOworCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9jL3NyYy90b29scy9jaGVja3NpZy9Bbm9ueW1vdXNSZXNvbHZlci5jcHAgYi9jL3NyYy90b29scy9jaGVja3NpZy9Bbm9ueW1vdXNSZXNvbHZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA1YTY4ZQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3Rvb2xzL2NoZWNrc2lnL0Fub255bW91c1Jlc29sdmVyLmNwcApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogQW5vbnltb3VzUmVzb2x2ZXIgOj0gQ2xhc3MgdG8gcmVzb2x2ZSB0aGUgSUFJSyBhbm9ueW1vdXMgc2FtcGxlIHJlZmVyZW5jZQorICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgIkFub255bW91c1Jlc29sdmVyLmhwcCIKKworLy8gWFNFQworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0V4Y2VwdGlvbi5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDRE9NVXRpbHMuaHBwPgorCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFN0cmluZy5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL0phbml0b3IuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvZnJhbWV3b3JrL1VSTElucHV0U291cmNlLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEFub255bW91c1Jlc29sdmVyCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Fub255bW91c1Jlc29sdmVyOjp+QW5vbnltb3VzUmVzb2x2ZXIoKSB7CisKKwlpZiAobXBfYmFzZVVSSSAhPSBOVUxMKQorCQlYU0VDX1JFTEVBU0VfWE1MQ0gobXBfYmFzZVVSSSk7CisKK30KKworCitYU0VDVVJJUmVzb2x2ZXIgKiBBbm9ueW1vdXNSZXNvbHZlcjo6Y2xvbmUodm9pZCkgeworCisgICAJQW5vbnltb3VzUmVzb2x2ZXIgKiByZXQ7CisKKwlyZXQgPSBuZXcgQW5vbnltb3VzUmVzb2x2ZXIoKTsKKworCWlmICh0aGlzLT5tcF9iYXNlVVJJICE9IDApCisJCXJldC0+bXBfYmFzZVVSSSA9IFhNTFN0cmluZzo6cmVwbGljYXRlKHRoaXMtPm1wX2Jhc2VVUkkpOworCWVsc2UKKwkJcmV0LT5tcF9iYXNlVVJJID0gMDsKKworCXJldHVybiByZXQ7CisKK30KKwordm9pZCBBbm9ueW1vdXNSZXNvbHZlcjo6c2V0QmFzZVVSSShjb25zdCBYTUxDaCAqIHVyaSkgeworCisJaWYgKG1wX2Jhc2VVUkkgIT0gTlVMTCkKKwkJWFNFQ19SRUxFQVNFX1hNTENIKG1wX2Jhc2VVUkkpOworCisJbXBfYmFzZVVSSSA9IFhNTFN0cmluZzo6cmVwbGljYXRlKHVyaSk7CisKK30KKworQmluSW5wdXRTdHJlYW0gKiBBbm9ueW1vdXNSZXNvbHZlcjo6cmVzb2x2ZVVSSShjb25zdCBYTUxDaCAqIHVyaSkgeworCisJWFNFQ19VU0lOR19YRVJDRVMoVVJMSW5wdXRTb3VyY2UpOworCVhTRUNfVVNJTkdfWEVSQ0VTKFhNTFVSTCk7CisJWFNFQ19VU0lOR19YRVJDRVMoQmluSW5wdXRTdHJlYW0pOworCisJVVJMSW5wdXRTb3VyY2UJCQkqIFVSTFM7CQkvLyBVc2UgWGVyY2VzIFVSTCBJbnB1dCBzb3VyY2UKKwlCaW5JbnB1dFN0cmVhbQkJCSogaXM7CQkvLyBUbyBoYW5kbGUgdGhlIGFjdHVhbCBpbnB1dAorCisJaWYgKHVyaSAhPSBOVUxMKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXJyb3JPcGVuaW5nVVJJLAorCQkJIkFub255bW91c1Jlc29sdmVyIC0gb25seSBhbm9ueW1vdXMgcmVmZXJlbmNlcyBzdXBwb3J0ZWQiKTsKKwl9CisKKwlpZiAobXBfYmFzZVVSSSA9PSAwKSB7CisJCVVSTFMgPSBuZXcgVVJMSW5wdXRTb3VyY2UoWE1MVVJMKE1BS0VfVU5JQ09ERV9TVFJJTkcoYW5vblVSSSkpKTsKKwl9CisJZWxzZSB7CisJCVVSTFMgPSBuZXcgVVJMSW5wdXRTb3VyY2UoWE1MVVJMKFhNTFVSTChtcF9iYXNlVVJJKSwgTUFLRV9VTklDT0RFX1NUUklORyhhbm9uVVJJKSkpOworCX0KKworCS8vIG1ha2VTdHJlYW0gY2FuIChhbmQgaXMgcXVpdGUgbGlrZWx5IHRvKSB0aHJvdyBhbiBleGNlcHRpb24KKwlKYW5pdG9yPFVSTElucHV0U291cmNlPiBqX1VSTFMoVVJMUyk7CisKKwlpcyA9IFVSTFMtPm1ha2VTdHJlYW0oKTsKKworCWlmIChpcyA9PSBOVUxMKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFcnJvck9wZW5pbmdVUkksCisJCQkiQW4gZXJyb3Igb2NjdXJyZWQgaW4gQW5vbnltb3VzUmVzb2x2ZXIgd2hlbiBvcGVuaW5nIGFuIFVSTElucHV0U3RyZWFtIik7CisKKwl9CisKKwlyZXR1cm4gaXM7Cit9CisKZGlmZiAtLWdpdCBhL2Mvc3JjL3Rvb2xzL2NoZWNrc2lnL0Fub255bW91c1Jlc29sdmVyLmhwcCBiL2Mvc3JjL3Rvb2xzL2NoZWNrc2lnL0Fub255bW91c1Jlc29sdmVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzI5ZmI1Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdG9vbHMvY2hlY2tzaWcvQW5vbnltb3VzUmVzb2x2ZXIuaHBwCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIEFub255bW91c1Jlc29sdmVyIDo9IENsYXNzIHRvIHJlc29sdmUgdGhlIElBSUsgYW5vbnltb3VzIHNhbXBsZSByZWZlcmVuY2UKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKy8vIFhTRUMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDVVJJUmVzb2x2ZXIuaHBwPgorCisKKyNkZWZpbmUgYW5vblVSSSAiLi4vZGlnZXN0SW5wdXRzL2Fub255bW91c1JlZmVyZW5jZVNpZ25hdHVyZS5maXJzdFJlZmVyZW5jZS50eHQiCisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEFub255bW91c1Jlc29sdmVyCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8qCisgKiBUaGUgYW5vbnltb3VzIHJlc29sdmVyIGlzIGEgdmVyeSBzaW1wbGUgcmVzb2x2ZXIgdXNlZCBmb3IgdGhlIElBSUsgCisgKiBhbm9ueW1vdXNSZWZlcmVuY2VTaWduYXR1cmUueG1sIGludGVyb3AgdGVzdCBleGFtcGxlLgorICogSXQgc2ltcGx5IHRha2VzIGFuIGFub255bW91cyAoTlVMTCkgdXJpIHJlZmVyZW5jZSBhbmQgbGlua3MgdG8gdGhlIAorICogcmVsZXZhbnQgZmlsZSBpbiB0aGUgZGF0YSBzdWl0ZQorICovCisKK2NsYXNzIEFub255bW91c1Jlc29sdmVyIDogcHVibGljIFhTRUNVUklSZXNvbHZlciB7CisKK3B1YmxpYzoKKworCUFub255bW91c1Jlc29sdmVyKCkge21wX2Jhc2VVUkkgPSBOVUxMO30KKwl2aXJ0dWFsIH5Bbm9ueW1vdXNSZXNvbHZlcigpOworCisJLy8gSW50ZXJmYWNlIG1ldGhvZAorCisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgQmluSW5wdXRTdHJlYW0gKiByZXNvbHZlVVJJKGNvbnN0IFhNTENoICogdXJpKTsKKyAKKwkvLyBJbnRlcmZhY2UgbWV0aG9kCisKKwl2aXJ0dWFsIFhTRUNVUklSZXNvbHZlciAqIGNsb25lKHZvaWQpOworCisJLy8gRXh0cmEgbWV0aG9kcworCisJdm9pZCBzZXRCYXNlVVJJKGNvbnN0IFhNTENoICogdXJpKTsKK3ByaXZhdGU6CisJWE1MQ2ggKiBtcF9iYXNlVVJJOworfTsKKwpkaWZmIC0tZ2l0IGEvYy9zcmMvdG9vbHMvY2hlY2tzaWcvSW50ZXJvcFJlc29sdmVyLmNwcCBiL2Mvc3JjL3Rvb2xzL2NoZWNrc2lnL0ludGVyb3BSZXNvbHZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk4ODA3YQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3Rvb2xzL2NoZWNrc2lnL0ludGVyb3BSZXNvbHZlci5jcHAKQEAgLTAsMCArMSw2NTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIEludGVyb3BSZXNvbHZlciA6PSBDbGFzcyB0byByZXNvbHZlIGtleSBlbGVtZW50cyBpbnRvIGNlcnRpZmljYXRlcyBmb3IKKyAqCQkJCQkJbWVybGluLTE4IGludGVyb3AgdGVzdAorICoKKyAqICRJZCQKKyAqCisgKi8KKworLy8gWFNFQworCisjaW5jbHVkZSAiSW50ZXJvcFJlc29sdmVyLmhwcCIKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDS2V5SW5mb1Jlc29sdmVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0tleUluZm9YNTA5LmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0tleUluZm9OYW1lLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9YNTA5LmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisKKyNpbmNsdWRlIDx4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9CYXNlNjQuaHBwPgorCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL0phbml0b3IuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxVbmlEZWZzLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKyNpbmNsdWRlIDxpb3N0cmVhbT4KKworI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkgCisKK0ludGVyb3BSZXNvbHZlcjo6SW50ZXJvcFJlc29sdmVyKGNvbnN0IFhNTENoICogYmFzZVVSSSkgeworCisJaWYgKGJhc2VVUkkgIT0gTlVMTCkKKwkJbXBfYmFzZVVSSSA9IFhNTFN0cmluZzo6cmVwbGljYXRlKGJhc2VVUkkpOworCWVsc2UKKwkJbXBfYmFzZVVSSSA9IE5VTEw7CisKKwltX3NlYXJjaFN0YXJ0ZWQgPSBmYWxzZTsKKwltX3NlYXJjaEZpbmlzaGVkID0gZmFsc2U7CisKKyNpZiAhZGVmaW5lZChfV0lOMzIpCisJbV9mY291bnQgPSAwOworI2VuZGlmCisKK30KKworCitJbnRlcm9wUmVzb2x2ZXI6On5JbnRlcm9wUmVzb2x2ZXIoKSB7CisKKwlpZiAobXBfYmFzZVVSSSAhPSBOVUxMKQorCQlYU0VDX1JFTEVBU0VfWE1MQ0gobXBfYmFzZVVSSSk7CisKK30KKworI2lmIGRlZmluZWQoX1dJTjMyKQorCit2b2lkIHJldmVyc2VTbGFzaChzYWZlQnVmZmVyICZwYXRoKSB7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IChpbnQpIHN0cmxlbihwYXRoLnJhd0NoYXJCdWZmZXIoKSk7ICsraSkgeworCisJCWlmIChwYXRoW2ldID09ICcvJykKKwkJCXBhdGhbaV0gPSAnXFwnOworCisJfQorCit9CisKKyNlbmRpZgorCisKK1g1MDkgKiBJbnRlcm9wUmVzb2x2ZXI6Om5leHRGaWxlMkNlcnQodm9pZCkgeworCisKKwlpZiAobV9zZWFyY2hGaW5pc2hlZCkKKwkJcmV0dXJuIE5VTEw7CisKKwlpbnQgcmVzOworCisJaWYgKCFtX3NlYXJjaFN0YXJ0ZWQpIHsKKworCQljaGFyICogYmFzZSA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKG1wX2Jhc2VVUkkpOworCQlzYWZlQnVmZmVyIHBhdGggPSBiYXNlOworCQlYU0VDX1JFTEVBU0VfWE1MQ0goYmFzZSk7CisKKwkJcGF0aC5zYlN0cmNhdEluKCIvY2VydHMvKi5jcnQiKTsKKworI2lmIGRlZmluZWQoX1dJTjMyKQorCisJCS8vIFJldmVyc2UgdGhlICJiYWNrc2xhc2giIGNoYXJhY3RlcnMKKworCQlyZXZlcnNlU2xhc2gocGF0aCk7CisKKwkJbV9oYW5kbGUgPSAobG9uZykgX2ZpbmRmaXJzdChwYXRoLnJhd0NoYXJCdWZmZXIoKSwgJm1fZmluZGVyKTsKKwkJcmVzID0gbV9oYW5kbGU7CisjZWxzZQorCQlpZiAoZ2xvYihwYXRoLnJhd0NoYXJCdWZmZXIoKSwgMCwgTlVMTCwgJm1fZ2xvYmJ1ZikgIT0gMCkKKwkJCXJlcyA9IC0xOworCQllbHNlCisJCQlyZXMgPSAwOworI2VuZGlmCisKKwkJbV9zZWFyY2hTdGFydGVkID0gdHJ1ZTsKKworCX0KKwllbHNlIHsKKworI2lmIGRlZmluZWQoX1dJTjMyKQorCQlyZXMgPSBfZmluZG5leHQobV9oYW5kbGUsICZtX2ZpbmRlcik7CisjZWxzZQorCQlpZiAobV9mY291bnQgPT0gKGludCkgbV9nbG9iYnVmLmdsX3BhdGhjKQorCQkJcmVzID0gLTE7CisJCWVsc2UKKwkJCXJlcyA9IDA7CisjZW5kaWYKKworCX0KKworCWlmIChyZXMgPT0gLTEpIHsKKworCQltX3NlYXJjaEZpbmlzaGVkID0gdHJ1ZTsKKwkJcmV0dXJuIE5VTEw7CisKKwl9CisKKwkvKiAKKwkgKiBDcmVhdGUgdGhlIE9wZW5TU0wgQklPcyBuZWNlc3NhcnkgdG8gcmVhZCBpbiB0aGUgWDUwOSBjZXJ0CisJICovCisKKwlCSU8gKiBiaW9DZXJ0OworCWlmICgoYmlvQ2VydCA9IEJJT19uZXcoQklPX3NfZmlsZSgpKSkgPT0gTlVMTCkgeworCisJCXN0ZDo6Y2VyciA8PCAiRXJyb3Igb3BlbmluZyBjZXJ0aWZpY2F0ZSBmaWxlXG5cbiI7CisJCWV4aXQgKDEpOworCisJfQorCisJLy8gQ3JlYXRlIHRoZSBmaWxlbmFtZQorCXNhZmVCdWZmZXIgZm5hbWU7CisjaWYgZGVmaW5lZChfV0lOMzIpCisJZm5hbWUuc2JUcmFuc2NvZGVJbihtcF9iYXNlVVJJKTsKKwlmbmFtZS5zYlN0cmNhdEluKCIvY2VydHMvIik7CisJZm5hbWUuc2JTdHJjYXRJbihtX2ZpbmRlci5uYW1lKTsKKwlyZXZlcnNlU2xhc2goZm5hbWUpOworI2Vsc2UKKwlmbmFtZS5zYlN0cmNweUluKG1fZ2xvYmJ1Zi5nbF9wYXRodlttX2Zjb3VudCsrXSk7CisjZW5kaWYKKworCWlmIChCSU9fcmVhZF9maWxlbmFtZShiaW9DZXJ0LCBmbmFtZS5yYXdDaGFyQnVmZmVyKCkpIDw9IDApIHsKKworCQlzdGQ6OmNlcnIgPDwgIkVycm9yIG9wZW5pbmcgY2VydGlmaWNhdGUgZmlsZVxuIiA8PCBmbmFtZS5yYXdDaGFyQnVmZmVyKCkgPDwgc3RkOjplbmRsOworCQlyZXR1cm4gTlVMTDsKKworCX0KKworCVg1MDkgKiB4NTA5ID0gZDJpX1g1MDlfYmlvKGJpb0NlcnQsIE5VTEwpOworCUJJT19mcmVlKGJpb0NlcnQpOworCisJcmV0dXJuIHg1MDk7CisKKworfQorCitYNTA5X05BTUUgKiBYNTA5X05BTUVfY3JlYXRlX2Zyb21fdHh0KGNvbnN0IGNoYXIgKiBuKSB7CisKKwkvLyBJJ20gc3VyZSB0aGVyZSBtdXN0IGJlIGEgZnVuY3Rpb24gdG8gZG8gdGhpcyBpbiBPcGVuU1NMLCBidXQgSSdtCisJLy8gZGFybmVkIGlmIEkgY2FuIGZpbmQgaXQuCisKKwlpbnQgaWR4ID0gMDsKKwlpbnQgajsKKwlib29sIG9rID0gdHJ1ZTsKKworCVg1MDlfTkFNRV9FTlRSWSAqIGVudHJpZXNbMTBdOworCWludCBlbnRDb3VudCA9IDA7CisKKwljaGFyICogbmFtZSA9IG5ldyBjaGFyW3N0cmxlbihuKV07CisJY2hhciAqIHZhbHVlID0gbmV3IGNoYXJbc3RybGVuKG4pXTsKKwl3aGlsZSAodHJ1ZSkgeworCisJCXdoaWxlIChuW2lkeF0gPT0gJyAnIHx8CisJCQkgICBuW2lkeF0gPT0gJ1x0JyB8fAorCQkJICAgbltpZHhdID09ICdcbicgfHwKKwkJCSAgIG5baWR4XSA9PSAnXHInKQorCQkJICAgaWR4Kys7CisJCQorCQlpZiAobltpZHhdID09IDApCisJCQlicmVhazsKKworCQlqID0gMDsKKwkJd2hpbGUgKG5baWR4XSAhPSAwICYmIG5baWR4XSAhPSAnPScpIHsKKwkJCW5hbWVbaisrXSA9IG5baWR4KytdOworCQl9CisKKwkJaWYgKGogPT0gMCB8fCBuW2lkeF0gPT0gMCkgeworCQkJb2sgPSBmYWxzZTsKKwkJCWJyZWFrOworCQl9CisKKwkJbmFtZVtqXSA9ICdcMCc7CisJCWlkeCsrOworCisJCS8vIE5vdyB0aGUgdmFsdWUKKwkJaiA9IDA7CisJCXdoaWxlIChuW2lkeF0gIT0gMCAmJiBuW2lkeF0gIT0gJ1xuJyAmJiBuW2lkeF0gIT0gJ1xyJykgeworCisJCQlpZiAobltpZHhdID09ICcsJykgeworCisJCQkJLy8gZmluZCBvdXQgaWYgdGhpcyBpcyBhIG1hcmtlciBmb3IgZW5kIG9mIFJETgorCQkJCWludCBqZHggPSBpZHggKyAxOworCQkJCXdoaWxlIChuW2pkeF0gIT0gJ1wwJyAmJiBuW2pkeF0gIT0gJz0nICYmIG5bamR4XSAhPSAnLCcpCisJCQkJCSsramR4OworCisJCQkJaWYgKG5bamR4XSAhPSAnLCcpCisJCQkJCWJyZWFrOworCisJCQl9CisKKwkJCXZhbHVlW2orK10gPSBuW2lkeCsrXTsKKworCQl9CisKKwkJaWYgKGogPT0gMCkgeworCQkJb2sgPSBmYWxzZTsKKwkJCWJyZWFrOworCQl9CisKKwkJaWYgKG5baWR4XSAhPSAwKQorCQkJaWR4Kys7CisKKwkJdmFsdWVbal0gPSAnXDAnOworCQlYNTA5X05BTUVfRU5UUlkgKiB4bmU7CisKKwkJeG5lID0gWDUwOV9OQU1FX0VOVFJZX2NyZWF0ZV9ieV90eHQoTlVMTCwgbmFtZSwgTUJTVFJJTkdfQVNDLCAodW5zaWduZWQgY2hhciAqKSB2YWx1ZSwgLTEpOworCisJCWlmICh4bmUgIT0gTlVMTCkgeworCQkJZW50cmllc1tlbnRDb3VudCsrXSA9IHhuZTsKKwkJCWlmIChlbnRDb3VudCA9PSAxMCkgeworCQkJCW9rID0gZmFsc2U7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwkJZWxzZSB7CisJCQlvayA9IGZhbHNlOworCQkJYnJlYWs7CisJCX0KKworCX0KKworCWRlbGV0ZVtdIG5hbWU7CisJZGVsZXRlW10gdmFsdWU7CisKKwlYNTA5X05BTUUgKnJldCA9IE5VTEw7CisJaW50IGk7CisKKwlpZiAob2spIHsKKworCQkvLyBDcmVhdGUgdGhlIHJldHVybiB2YWx1ZQorCQlyZXQgPSBYNTA5X05BTUVfbmV3KCk7CisJCWZvciAoaSA9IGVudENvdW50IC0gMTsgaSA+PSAwOyAtLWkpIHsKKworCQkJaWYgKCFYNTA5X05BTUVfYWRkX2VudHJ5KHJldCwgZW50cmllc1tpXSwgLTEsIDApKSB7CisJCQkJWDUwOV9OQU1FX2ZyZWUocmV0KTsKKwkJCQlyZXQgPSBOVUxMOworCQkJCWJyZWFrOworCQkJfQorCQl9CisKKwl9CisJCisJLy8gQ2xlYW4gb3V0IHRoZSBlbnRyaWVzCisJZm9yIChpID0gMDsgaSA8IGVudENvdW50OyArK2kpIHsKKwkJWDUwOV9OQU1FX0VOVFJZX2ZyZWUoZW50cmllc1tpXSk7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworYm9vbCBJbnRlcm9wUmVzb2x2ZXI6OmNoZWNrTWF0Y2goRFNJR0tleUluZm9MaXN0ICogbHN0LCBYNTA5ICogeCkgeworCisJLy8gQ2hlY2sgaWYgdGhlIHBhcmFtZXRlcnMgaW4geCBtYXRjaCB0aGUgcmVxdWlyZWQgY2VydGlmaWNhdGUKKworCisJaW50IHN6ID0gKGludCkgbHN0LT5nZXRTaXplKCk7CisJRFNJR0tleUluZm8qIGs7CisJCisJZm9yIChpbnQgaSA9IDA7IGkgPCBzejsgKytpKSB7CisKKwkJayA9IGxzdC0+aXRlbShpKTsKKworCQlpZiAoay0+Z2V0S2V5SW5mb1R5cGUoKSA9PSBEU0lHS2V5SW5mbzo6S0VZSU5GT19YNTA5KSB7CisKKwkJCURTSUdLZXlJbmZvWDUwOSAqIGt4ID0gc3RhdGljX2Nhc3Q8RFNJR0tleUluZm9YNTA5ICo+KGspOworCQkJCisJCQljb25zdCBYTUxDaCAqIHNlcmlhbCA9IGt4LT5nZXRYNTA5SXNzdWVyU2VyaWFsTnVtYmVyKCk7CisKKwkJCWlmIChzZXJpYWwgIT0gTlVMTCkgeworCisJCQkJY2hhciAqIGNzZXJpYWwgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShzZXJpYWwpOworCQkJCWNoYXIgKiB4c2VyaWFsOworCisJCQkJQklHTlVNICogYm5zZXJpYWwgPSBBU04xX0lOVEVHRVJfdG9fQk4oeC0+Y2VydF9pbmZvLT5zZXJpYWxOdW1iZXIsIE5VTEwpOworCQkJCXhzZXJpYWwgPSBCTl9ibjJkZWMoYm5zZXJpYWwpOworCQkJCUJOX2ZyZWUoYm5zZXJpYWwpOworCisJCQkJaWYgKHN0cmNtcCh4c2VyaWFsLCBjc2VyaWFsKSA9PSAwKSB7CisJCQkJCQorCQkJCQlPUEVOU1NMX2ZyZWUoeHNlcmlhbCk7CisJCQkJCVhTRUNfUkVMRUFTRV9YTUxDSChjc2VyaWFsKTsKKwkJCQkJcmV0dXJuIHRydWU7CisKKwkJCQl9CisJCQkJLy9kZWxldGVbXSB4c2VyaWFsOworCQkJCVhTRUNfUkVMRUFTRV9YTUxDSChjc2VyaWFsKTsKKwkJCQlPUEVOU1NMX2ZyZWUoeHNlcmlhbCk7CisKKwkJCX0KKworCQkJLyogCisJCQkgKiBFaXRoZXIgaXQncyBub3QgYSBzZXJpYWwgbnVtYmVyLCBvciB3ZSBkaWRuJ3QgcGFzcywgc28gbGV0cworCQkJICogbG9vayBhdCB0aGUgbmV4dCBvcHRpb24uCisJCQkgKi8KKwkJCQorCQkJY29uc3QgWE1MQ2ggKiBza2kgPSBreC0+Z2V0WDUwOVNLSSgpOworCQkJCisJCQlpZiAoc2tpICE9IE5VTEwpIHsKKworCQkJCWNoYXIgKiBjc2tpID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoc2tpKTsKKwkJCQlpbnQgY2xlbiA9IChpbnQpIHN0cmxlbihjc2tpKTsKKwkJCQl1bnNpZ25lZCBjaGFyICogeHNraSA9IG5ldyB1bnNpZ25lZCBjaGFyW2NsZW5dOworCQkJCUFycmF5SmFuaXRvciA8dW5zaWduZWQgY2hhcj4gal94c2tpKHhza2kpOworCisJCQkJLy8gRGVjb2RlCisKKwkJCQlPcGVuU1NMQ3J5cHRvQmFzZTY0IGI2NDsKKwkJCQliNjQuZGVjb2RlSW5pdCgpOworCQkJCWludCB4bGVuID0gYjY0LmRlY29kZSgodW5zaWduZWQgY2hhciAqKSBjc2tpLCBjbGVuLCB4c2tpLCBjbGVuKTsKKwkJCQl4bGVuICs9IGI2NC5kZWNvZGVGaW5pc2goJnhza2lbeGxlbl0sIGNsZW4gLSB4bGVuKTsKKyAgICAgICAgICAgICAgICBYU0VDX1JFTEVBU0VfWE1MQ0goY3NraSk7CisKKwkJCQlpZiAoeGxlbiAhPSAwKSB7CisKKwkJCQkJLy8gSGF2ZSBhIGJ1ZmZlciB3aXRoIGEgbnVtYmVyIGluIGl0CisJCQkJCVNUQUNLX09GKFg1MDlfRVhURU5TSU9OKSAqZXh0czsKKwkJCQkJZXh0cyA9IHgtPmNlcnRfaW5mby0+ZXh0ZW5zaW9uczsKKworCQkJCQlpZiAoZXh0cyAhPSBOVUxMKSB7CisKKwkJCQkJCS8vIEZpbmQgdGhlIFN1YmplY3QgS2V5IElkZW50aWZpZXIgT0lECisJCQkJCQlYNTA5X0VYVEVOU0lPTiAqIGV4dDsKKwkJCQkJCUFTTjFfT0JKRUNUICogb2Jqc2tpID0gT0JKX25pZDJvYmooTklEX3N1YmplY3Rfa2V5X2lkZW50aWZpZXIpOworCQkJCQkJaW50IGV4dG4gPSBYNTA5djNfZ2V0X2V4dF9ieV9PQkooZXh0cywgb2Jqc2tpLCAtMSk7CisJCQkJCQlpZiAoZXh0biAhPSAtMSkgeworCQkJCQkJCS8vIER1bW15IHVwIGFuIE9DVEVUX1NUUklORyBmcm9tIHRoZSB4c2tpCisJCQkJCQkJdW5zaWduZWQgY2hhciAqIG9jdHhza2kgPSBuZXcgdW5zaWduZWQgY2hhclt4bGVuICsgMl07CisJCQkJCQkJQXJyYXlKYW5pdG9yPHVuc2lnbmVkIGNoYXI+IGpfb2N0eHNraShvY3R4c2tpKTsKKworCQkJCQkJCW9jdHhza2lbMF0gPSA0OworCQkJCQkJCW9jdHhza2lbMV0gPSB4bGVuOworCQkJCQkJCW1lbWNweSgmb2N0eHNraVsyXSwgeHNraSwgeGxlbik7CisJCQkJCQkJCisJCQkJCQkJZXh0ID0gc2tfWDUwOV9FWFRFTlNJT05fdmFsdWUoZXh0cyxleHRuKTsKKwkJCQkJCQlBU04xX09DVEVUX1NUUklORyAqc2tpZCA9IGV4dC0+dmFsdWU7CisJCQkJCQkJQVNOMV9PQ1RFVF9TVFJJTkcgKiB4c2tpZCA9IE1fQVNOMV9PQ1RFVF9TVFJJTkdfbmV3KCk7CisJCQkJCQkJQVNOMV9TVFJJTkdfc2V0KHhza2lkLCBvY3R4c2tpLCB4bGVuKzIpOworCQkJCQkJCQorCQkJCQkJCWlmIChBU04xX09DVEVUX1NUUklOR19jbXAoeHNraWQsIHNraWQpID09IDApIHsKKwkJCQkJCQkJQVNOMV9PQ1RFVF9TVFJJTkdfZnJlZSh4c2tpZCk7CisJCQkJCQkJCXJldHVybiB0cnVlOworCQkJCQkJCX0KKwkJCQkJCX0KKworCQkJCQl9CisKKwkJCQl9CisKKwkJCX0KKworCQkJLyogTm90IGEgc3ViamVjdCBrZXkgaWRlbnRpZmllciAqLworCQkJY29uc3QgWE1MQ2ggKnNuID0ga3gtPmdldFg1MDlTdWJqZWN0TmFtZSgpOworCisJCQlpZiAoc24gIT0gTlVMTCkgeworCisJCQkJY2hhciAqIGNzbiA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKHNuKTsKKworCQkJCVg1MDlfTkFNRSAqIHg1MDluYW1lID0gWDUwOV9nZXRfc3ViamVjdF9uYW1lKHgpOworCQkJCVg1MDlfTkFNRSAqIHNubmFtZSA9IFg1MDlfTkFNRV9jcmVhdGVfZnJvbV90eHQoY3NuKTsKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0goY3NuKTsKKworCQkJCWlmIChzbm5hbWUgIT0gTlVMTCkgeworCisJCQkJCWlmICghWDUwOV9OQU1FX2NtcCh4NTA5bmFtZSwgc25uYW1lKSkgeworCQkJCQkJWDUwOV9OQU1FX2ZyZWUoc25uYW1lKTsKKwkJCQkJCXJldHVybiB0cnVlOworCQkJCQl9CisJCQkJCisJCQkJCVg1MDlfTkFNRV9mcmVlKHNubmFtZSk7CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJcmV0dXJuIGZhbHNlOworCit9CisKKworWFNFQ0NyeXB0b0tleSAqIEludGVyb3BSZXNvbHZlcjo6b3BlbkNlcnRVUkkoY29uc3QgWE1MQ2ggKiB1cmkpIHsKKworCS8vIE9wZW4gYSBjZXJ0aWZpY2F0ZSBmcm9tIGEgZmlsZSBVUkkgcmVsYXRpdmUgdG8gdGhlIHNpZ25hdHVyZSBmaWxlCisJQklPICogYmlvQ2VydDsKKwlpZiAoKGJpb0NlcnQgPSBCSU9fbmV3KEJJT19zX2ZpbGUoKSkpID09IE5VTEwpIHsKKwkJCisJCXJldHVybiBOVUxMOworCisJfQorCisJc2FmZUJ1ZmZlciBmbmFtZTsKKwljaGFyICogdSA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKHVyaSk7CisJZm5hbWUuc2JUcmFuc2NvZGVJbihtcF9iYXNlVVJJKTsKKwlmbmFtZS5zYlN0cmNhdEluKCIvIik7CisJZm5hbWUuc2JTdHJjYXRJbih1KTsKKwlYU0VDX1JFTEVBU0VfWE1MQ0godSk7CisKKyNpZiBkZWZpbmVkKF9XSU4zMikKKwlyZXZlcnNlU2xhc2goZm5hbWUpOworI2VuZGlmCisKKwlpZiAoQklPX3JlYWRfZmlsZW5hbWUoYmlvQ2VydCwgZm5hbWUucmF3Q2hhckJ1ZmZlcigpKSA8PSAwKSB7CisJCQorCQlyZXR1cm4gTlVMTDsKKworCX0KKworCVg1MDkgKiB4NTA5ID0gZDJpX1g1MDlfYmlvKGJpb0NlcnQsIE5VTEwpOworCUJJT19mcmVlKGJpb0NlcnQpOworCisJT3BlblNTTENyeXB0b1g1MDkgb1g1MDkoeDUwOSk7CisJWDUwOV9mcmVlKHg1MDkpOworCisJcmV0dXJuIG9YNTA5LmNsb25lUHVibGljS2V5KCk7CisKK30KKworWFNFQ0NyeXB0b0tleSAqIEludGVyb3BSZXNvbHZlcjo6cmVzb2x2ZUtleShEU0lHS2V5SW5mb0xpc3QgKiBsc3QpIHsKKworCisJLy8gRmlyc3QgY2hlY2sgaWYgdGhpcyBoYXMgYW4gWDUwOSBjZXJ0ICsgYW4gWDUwOSBDUkwKKwljb25zdCBYTUxDaCAqIGI2NGNlcnQgPSBOVUxMOworCWNvbnN0IFhNTENoICogYjY0Y3JsID0gTlVMTDsKKworCWludCBsc3RTaXplID0gKGludCkgbHN0LT5nZXRTaXplKCk7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IGxzdFNpemU7ICsraSkgeworCisJCURTSUdLZXlJbmZvICoga2k7CisJCWtpID0gbHN0LT5pdGVtKGkpOworCQljb25zdCBYTUxDaCAqIHJhd3VyaTsKKworCQlpZiAoa2ktPmdldEtleUluZm9UeXBlKCkgPT0gRFNJR0tleUluZm86OktFWUlORk9fWDUwOSkgeworCQkJCisJCQlEU0lHS2V5SW5mb1g1MDkgKiBraXg1MDkgPSBzdGF0aWNfY2FzdDxEU0lHS2V5SW5mb1g1MDkgKj4oa2kpOworCisJCQlpZiAoKHJhd3VyaSA9IGtpeDUwOS0+Z2V0UmF3UmV0cmlldmFsVVJJKCkpICE9IE5VTEwpIHsKKworCQkJCS8vIFdlIGhhdmUgYSByYXcgY2VydGlmaWNhdGUgYnkgZGUtcmVmZXJlbmNlCisJCQkJLy8gQXNzdW1lIGl0IGlzIGp1c3QgYSBmaWxlIGRlcmVmZXJlbmNlIGFuZCBvcGVuIHRoZSBjZXJ0CisKKwkJCQlyZXR1cm4gb3BlbkNlcnRVUkkocmF3dXJpKTsKKworCQkJfQorCQkJCisJCQlpZiAoa2l4NTA5LT5nZXRDZXJ0aWZpY2F0ZUxpc3RTaXplKCkgPT0gMSkgeworCisJCQkJYjY0Y2VydCA9IGtpeDUwOS0+Z2V0Q2VydGlmaWNhdGVJdGVtKDApOworCisJCQl9CisKKwkJCWlmIChiNjRjcmwgPT0gTlVMTCkgeworCisJCQkJYjY0Y3JsID0ga2l4NTA5LT5nZXRYNTA5Q1JMKCk7CisKKwkJCX0KKwkJfQorCisJCWVsc2UgaWYgKGtpLT5nZXRLZXlJbmZvVHlwZSgpID09IERTSUdLZXlJbmZvOjpLRVlJTkZPX05BTUUpIHsKKworCQkJRFNJR0tleUluZm9OYW1lICoga24gPSBzdGF0aWNfY2FzdDxEU0lHS2V5SW5mb05hbWUgKj4oa2kpOworCisJCQlpZiAoa24tPmdldEtleU5hbWUoKSAhPSBOVUxMKSB7CisKKwkJCQlzdGF0aWMgWE1MQ2ggY2VydFN0cltdID0geworCQkJCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgY2hMYXRpbl9jLAorCQkJCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgY2hMYXRpbl9lLAorCQkJCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgY2hMYXRpbl9yLAorCQkJCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgY2hMYXRpbl90LAorCQkJCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgY2hMYXRpbl9zLAorCQkJCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgY2hGb3J3YXJkU2xhc2gsCisJCQkJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBjaE51bGwKKwkJCQl9OworCQkJCXN0YXRpYyBYTUxDaCBleHRTdHJbXSA9IHsKKwkJCQkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoUGVyaW9kLAorCQkJCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgY2hMYXRpbl9jLAorCQkJCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgY2hMYXRpbl9yLAorCQkJCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgY2hMYXRpbl90LAorCQkJCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgY2hOdWxsCisJCQkJfTsKKworCQkJCXNhZmVCdWZmZXIgZm5hbWU7CisJCQkJZm5hbWUgPSBjZXJ0U3RyOworCQkJCWZuYW1lLnNiWE1MQ2hDYXQoa24tPmdldEtleU5hbWUoKSk7CisJCQkJZm5hbWUuc2JYTUxDaENhdChleHRTdHIpOworCisJCQkJZm5hbWUuc2JTdHJsd3IoKTsKKworCQkJCXJldHVybiBvcGVuQ2VydFVSSShmbmFtZS5yYXdYTUxDaEJ1ZmZlcigpKTsKKworCQkJfQorCisJCX0KKworCX0KKworCWlmIChiNjRjZXJ0ICE9IE5VTEwgJiYgYjY0Y3JsICE9IE5VTEwpIHsKKworCQkvLyBXZSBoYXZlIGEgY2VydGlmaWNhdGUgYW5kIGEgY3JsLCBsZXRzIGdldCB0aGUgY2VydCBhbmQgY2hlY2sgaW4gdGhlIGNybAorCisJCU9wZW5TU0xDcnlwdG9CYXNlNjQgYjY0OworCQljaGFyICogdHJhbnNiNjRjZXJ0ID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoYjY0Y2VydCk7CisJCXVuc2lnbmVkIGNoYXIgKiB4NTA5YnVmID0gbmV3IHVuc2lnbmVkIGNoYXJbc3RybGVuKHRyYW5zYjY0Y2VydCldOworCQlBcnJheUphbml0b3I8dW5zaWduZWQgY2hhcj4gal94NTA5YnVmKHg1MDlidWYpOworCisJCWludCB4NTA5YnVmTGVuOworCisJCVg1MDkgKng7CisKKwkJYjY0LmRlY29kZUluaXQoKTsKKwkJeDUwOWJ1ZkxlbiA9IGI2NC5kZWNvZGUoKHVuc2lnbmVkIGNoYXIgKikgdHJhbnNiNjRjZXJ0LCAodW5zaWduZWQgaW50KSBzdHJsZW4odHJhbnNiNjRjZXJ0KSwgeDUwOWJ1ZiwgKHVuc2lnbmVkIGludCkgc3RybGVuKHRyYW5zYjY0Y2VydCkpOworCQl4NTA5YnVmTGVuICs9IGI2NC5kZWNvZGVGaW5pc2goJng1MDlidWZbeDUwOWJ1Zkxlbl0sICh1bnNpZ25lZCBpbnQpIHN0cmxlbih0cmFuc2I2NGNlcnQpIC0geDUwOWJ1Zkxlbik7CisJCVhTRUNfUkVMRUFTRV9YTUxDSCh0cmFuc2I2NGNlcnQpOworCisJCWlmICh4NTA5YnVmTGVuID4gMCkgeworI2lmIGRlZmluZWQoWFNFQ19PUEVOU1NMX0QySVg1MDlfQ09OU1RfQlVGRkVSKQorCQkJeCA9ICBkMmlfWDUwOShOVUxMLCAoY29uc3QgdW5zaWduZWQgY2hhciAqKikgKCZ4NTA5YnVmKSwgeDUwOWJ1ZkxlbgorKTsKKyNlbHNlCisJCQl4ID0gIGQyaV9YNTA5KE5VTEwsICZ4NTA5YnVmLCB4NTA5YnVmTGVuKTsKKyNlbmRpZgorCQl9CisJCWVsc2UgCisJCQlyZXR1cm4gTlVMTDsJCS8vIFNvbWV0aGluZyBoYXMgZ29uZSB3cm9uZworCisJCWlmICh4ID09IE5VTEwpCisJCQlyZXR1cm4gTlVMTDsKKworCQkvLyBOb3cgdGhlIENSTAorCQljaGFyICogdHJhbnNiNjRjcmwgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShiNjRjcmwpOworCQl1bnNpZ25lZCBjaGFyICogY3JsYnVmID0gbmV3IHVuc2lnbmVkIGNoYXJbc3RybGVuKHRyYW5zYjY0Y3JsKV07CisJCUFycmF5SmFuaXRvcjx1bnNpZ25lZCBjaGFyPiBqX2NybGJ1ZihjcmxidWYpOworCisJCWludCBjcmxidWZMZW47CisKKwkJWDUwOV9DUkwgKiBjOworCisJCWI2NC5kZWNvZGVJbml0KCk7CisJCWNybGJ1ZkxlbiA9IGI2NC5kZWNvZGUoKHVuc2lnbmVkIGNoYXIqKSB0cmFuc2I2NGNybCwgKHVuc2lnbmVkIGludCkgc3RybGVuKHRyYW5zYjY0Y3JsKSwgY3JsYnVmLCAodW5zaWduZWQgaW50KSBzdHJsZW4odHJhbnNiNjRjcmwpKTsKKwkJY3JsYnVmTGVuICs9IGI2NC5kZWNvZGVGaW5pc2goJmNybGJ1ZltjcmxidWZMZW5dLCAodW5zaWduZWQgaW50KSBzdHJsZW4odHJhbnNiNjRjcmwpIC0gY3JsYnVmTGVuKTsKKwkJWFNFQ19SRUxFQVNFX1hNTENIKHRyYW5zYjY0Y3JsKTsKKworCQlpZiAoY3JsYnVmTGVuID4gMCkgeworI2lmIGRlZmluZWQoWFNFQ19PUEVOU1NMX0QySVg1MDlfQ09OU1RfQlVGRkVSKQorCQkJYyA9ICBkMmlfWDUwOV9DUkwoTlVMTCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiopICgmY3JsYnVmKSwgY3JsYnVmTGVuKTsKKyNlbHNlCisJYyA9ICBkMmlfWDUwOV9DUkwoTlVMTCwgJmNybGJ1ZiwgY3JsYnVmTGVuKTsKKyNlbmRpZgorCQl9CisJCWVsc2UgCisJCQlyZXR1cm4gTlVMTDsJCS8vIFNvbWV0aGluZyBoYXMgZ29uZSB3cm9uZworCisJCWlmIChjID09IE5VTEwpCisJCQlyZXR1cm4gTlVMTDsKKworCQkvLyBOb3cgY2hlY2sgaWYgdGhlIGNlcnQgaXMgaW4gdGhlIENSTCAoY29kZSBsaWZ0ZWQgZnJvbSBPcGVuU1NMIHg1MDlfdmZ5LmMKKworICAgICAgICBpbnQgaWR4OworICAgICAgICBYNTA5X1JFVk9LRUQgcnRtcDsKKworICAgICAgICAvKiBMb29rIGZvciBzZXJpYWwgbnVtYmVyIG9mIGNlcnRpZmljYXRlIGluIENSTCAqLworICAgICAgICAKKwkJcnRtcC5zZXJpYWxOdW1iZXIgPSBYNTA5X2dldF9zZXJpYWxOdW1iZXIoeCk7CisgICAgICAgIGlkeCA9IHNrX1g1MDlfUkVWT0tFRF9maW5kKGMtPmNybC0+cmV2b2tlZCwgJnJ0bXApOworICAgICAgICAKKwkJLyogTm90IGZvdW5kOiBPSyAqLworICAgICAgICAKKwkJaWYoaWR4ICE9IC0xKSB7CisKKwkJCXN0ZDo6Y2VyciA8PCAiV2FybmluZyAtIGNlcnRpZmljYXRlIHJldm9rZWQgaW4gYXR0YWNoZWQgQ1JMIiA8PCBzdGQ6OmVuZGw7CisKKwkJfQorCisJCU9wZW5TU0xDcnlwdG9YNTA5IG94KHgpOworCQlYNTA5X2ZyZWUoeCk7CisJCVg1MDlfQ1JMX2ZyZWUoYyk7CisJCXJldHVybiBveC5jbG9uZVB1YmxpY0tleSgpOworCisJfQorCisJLy8gRG8gYSBydW4gdGhyb3VnaCBlYWNoIG1hdGNoIGluIHRoZSBkaXJlY3RvcnkKKworCXdoaWxlIChtX3NlYXJjaEZpbmlzaGVkID09IGZhbHNlKSB7CisKKwkJWDUwOSAqIHggPSBuZXh0RmlsZTJDZXJ0KCk7CisKKwkJaWYgKHggIT0gTlVMTCkgeworCisJCQlpZiAoY2hlY2tNYXRjaChsc3QsIHgpKSB7CisKKwkJCQlPcGVuU1NMQ3J5cHRvWDUwOSBveCh4KTsKKwkJCQlYNTA5X2ZyZWUoeCk7CisJCQkJcmV0dXJuIG94LmNsb25lUHVibGljS2V5KCk7CisKKwkJCX0KKworCQl9CisJCVg1MDlfZnJlZSh4KTsKKworCX0KKworCXJldHVybiBmYWxzZTsKKworfQorCisKKworWFNFQ0tleUluZm9SZXNvbHZlciAqIEludGVyb3BSZXNvbHZlcjo6Y2xvbmUodm9pZCkgY29uc3QgeworCisJcmV0dXJuIG5ldyBJbnRlcm9wUmVzb2x2ZXIobXBfYmFzZVVSSSk7CisKK30KKworCisKKyNlbmRpZiAvKiBIQVZFX09QRU5TU0wgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL3Rvb2xzL2NoZWNrc2lnL0ludGVyb3BSZXNvbHZlci5ocHAgYi9jL3NyYy90b29scy9jaGVja3NpZy9JbnRlcm9wUmVzb2x2ZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMTliNmUKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy90b29scy9jaGVja3NpZy9JbnRlcm9wUmVzb2x2ZXIuaHBwCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIEludGVyb3BSZXNvbHZlciA6PSBDbGFzcyB0byByZXNvbHZlIGtleSBlbGVtZW50cyBpbnRvIGNlcnRpZmljYXRlcyBmb3IKKyAqCQkJCQkJbWVybGluLTE4IGludGVyb3AgdGVzdAorICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworLy8gWFNFQworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNLZXlJbmZvUmVzb2x2ZXIuaHBwPgorCisjaWYgZGVmaW5lZCAoX1dJTjMyKQorIyAgICBpbmNsdWRlIDxpby5oPgorI2Vsc2UKKyMgICAgaW5jbHVkZSA8Z2xvYi5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkIChIQVZFX09QRU5TU0wpCisjCWluY2x1ZGUgPG9wZW5zc2wveDUwOS5oPgorCitjbGFzcyBJbnRlcm9wUmVzb2x2ZXIgOiBwdWJsaWMgWFNFQ0tleUluZm9SZXNvbHZlciB7CisKK3B1YmxpYyA6CisKKwlJbnRlcm9wUmVzb2x2ZXIoY29uc3QgWE1MQ2ggKiBiYXNlVVJJKTsKKwl+SW50ZXJvcFJlc29sdmVyKCk7CisKKwkvLyBJbnRlcmZhY2UgZnVuY3Rpb25zCisKKwl2aXJ0dWFsIFhTRUNDcnlwdG9LZXkgKiByZXNvbHZlS2V5KERTSUdLZXlJbmZvTGlzdCAqIGxzdCk7CisJdmlydHVhbCBYU0VDS2V5SW5mb1Jlc29sdmVyICogY2xvbmUodm9pZCkgY29uc3Q7CisKKwkvLyBJbnRlcm5hbCBmdW5jdGlvbnMKKwlYNTA5ICogbmV4dEZpbGUyQ2VydCh2b2lkKTsKKwlib29sIGNoZWNrTWF0Y2goRFNJR0tleUluZm9MaXN0ICogbHN0LCBYNTA5ICogeCk7CisJWFNFQ0NyeXB0b0tleSAqIG9wZW5DZXJ0VVJJKGNvbnN0IFhNTENoICogdXJpKTsKKworcHJpdmF0ZToKKworCVhNTENoICoJCQltcF9iYXNlVVJJOworCWJvb2wJCQltX3NlYXJjaFN0YXJ0ZWQ7CisJYm9vbAkJCW1fc2VhcmNoRmluaXNoZWQ7CisKKyNpZiBkZWZpbmVkIChfV0lOMzIpCisJX2ZpbmRkYXRhX3QJCW1fZmluZGVyOworCWxvbmcJCQltX2hhbmRsZTsKKyNlbHNlCisgICAgZ2xvYl90ICAgICAgICAgIG1fZ2xvYmJ1ZjsKKyAgICBpbnQgICAgICAgICAgICAgbV9mY291bnQ7CisjZW5kaWYKKworfTsKKworI2VuZGlmIC8qIEhBVkVfT1BFTlNTTCAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvdG9vbHMvY2hlY2tzaWcvY2hlY2tzaWcuY3BwIGIvYy9zcmMvdG9vbHMvY2hlY2tzaWcvY2hlY2tzaWcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4ZGY3NDEKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy90b29scy9jaGVja3NpZy9jaGVja3NpZy5jcHAKQEAgLTAsMCArMSw2NTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIGNoZWNrU2lnIDo9IChWZXJ5IHVnbHkpIHRvb2wgdG8gY2hlY2sgYSBzaWduYXR1cmUgZW1iZWRkZWQgaW4gYW4gWE1MIGZpbGUKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlICJBbm9ueW1vdXNSZXNvbHZlci5ocHAiCisjaW5jbHVkZSAiSW50ZXJvcFJlc29sdmVyLmhwcCIKKworLy8gWFNFQworCisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDUGxhdGZvcm1VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ1Byb3ZpZGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2Nhbm9uL1hTRUNDMTRuMjAwMTAzMTUuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHU2lnbmF0dXJlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXhjZXB0aW9uLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvRXhjZXB0aW9uLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0tleUluZm9SZXNvbHZlckRlZmF1bHQuaHBwPgorCisvLyB1Z2x5IDo8CisKKyNpZiBkZWZpbmVkKF9XSU4zMikKKyMJaW5jbHVkZSA8eHNlYy91dGlscy93aW51dGlscy9YU0VDVVJJUmVzb2x2ZXJHZW5lcmljV2luMzIuaHBwPgorI2Vsc2UKKyMJaW5jbHVkZSA8eHNlYy91dGlscy91bml4dXRpbHMvWFNFQ1VSSVJlc29sdmVyR2VuZXJpY1VuaXguaHBwPgorI2VuZGlmCisKKy8vIEdlbmVyYWwKKworI2luY2x1ZGUgPG1lbW9yeS5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGlvc3RyZWFtPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaWYgZGVmaW5lZChIQVZFX1VOSVNURF9IKQorIyBpbmNsdWRlIDx1bmlzdGQuaD4KKyMgZGVmaW5lIF9NQVhfUEFUSCBQQVRIX01BWAorI2Vsc2UKKyMgaWYgZGVmaW5lZChIQVZFX0RJUkVDVF9IKQorIyAgaW5jbHVkZSA8ZGlyZWN0Lmg+CisjIGVuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQgKF9ERUJVRykgJiYgZGVmaW5lZCAoX01TQ19WRVIpCisjaW5jbHVkZSA8Y3J0ZGJnLmg+CisjZW5kaWYKKworCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1BsYXRmb3JtVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxTdHJpbmcuaHBwPgorCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3BhcnNlcnMvWGVyY2VzRE9NUGFyc2VyLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MRXhjZXB0aW9uLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MVXJpLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvSmFuaXRvci5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCit1c2luZyBzdGQ6OmNlcnI7Cit1c2luZyBzdGQ6OmNvdXQ7Cit1c2luZyBzdGQ6OmVuZGw7CisKKyNpZm5kZWYgWFNFQ19OT19YQUxBTgorCisvLyBYQUxBTgorCisjaW5jbHVkZSA8eGFsYW5jL1hQYXRoL1hQYXRoRXZhbHVhdG9yLmhwcD4KKyNpbmNsdWRlIDx4YWxhbmMvWGFsYW5UcmFuc2Zvcm1lci9YYWxhblRyYW5zZm9ybWVyLmhwcD4KKworWEFMQU5fVVNJTkdfWEFMQU4oWFBhdGhFdmFsdWF0b3IpCitYQUxBTl9VU0lOR19YQUxBTihYYWxhblRyYW5zZm9ybWVyKQorCisjZW5kaWYKKworI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKy8vIE9wZW5TU0wKKworIwlpbmNsdWRlIDx4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9LZXlITUFDLmhwcD4KKyMJaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KKworI2VuZGlmCisKKyNpZiBkZWZpbmVkIChIQVZFX1dJTkNBUEkpCisKKyMJaW5jbHVkZSA8eHNlYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvUHJvdmlkZXIuaHBwPgorIwlpbmNsdWRlIDx4c2VjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9LZXlITUFDLmhwcD4KKworI2VuZGlmCisKKyNpZiBkZWZpbmVkIChIQVZFX05TUykKKworIwlpbmNsdWRlIDx4c2VjL2VuYy9OU1MvTlNTQ3J5cHRvUHJvdmlkZXIuaHBwPgorIwlpbmNsdWRlIDx4c2VjL2VuYy9OU1MvTlNTQ3J5cHRvS2V5SE1BQy5ocHA+CisKKyNlbmRpZgorCisjaW5jbHVkZSA8dGltZS5oPgorCisjaWZkZWYgWFNFQ19OT19YQUxBTgorCitzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwgKHN0ZDo6b3N0cmVhbSYgdGFyZ2V0LCBjb25zdCBYTUxDaCAqIHMpCit7CisgICAgY2hhciAqcCA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKHMpOworICAgIHRhcmdldCA8PCBwOworICAgIFhTRUNfUkVMRUFTRV9YTUxDSChwKTsKKyAgICByZXR1cm4gdGFyZ2V0OworfQorCisjZW5kaWYKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENoZWNrc2lnCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwordm9pZCBwcmludFVzYWdlKHZvaWQpIHsKKworCWNlcnIgPDwgIlxuVXNhZ2U6IGNoZWNrc2lnIFtvcHRpb25zXSA8aW5wdXQgZmlsZSBuYW1lPlxuXG4iOworCWNlcnIgPDwgIiAgICAgV2hlcmUgb3B0aW9ucyBhcmUgOlxuXG4iOworCWNlcnIgPDwgIiAgICAgLS1za2lwcmVmcy8tc1xuIjsKKwljZXJyIDw8ICIgICAgICAgICBTa2lwIGNoZWNraW5nIHJlZmVyZW5jZXMgLSBjaGVjayBzaWduYXR1cmUgb25seVxuXG4iOworCWNlcnIgPDwgIiAgICAgLS1obWFja2V5Ly1oIDxzdHJpbmc+XG4iOworCWNlcnIgPDwgIiAgICAgICAgIFNldCBhbiBobWFjIGtleSB1c2luZyB0aGUgPHN0cmluZz5cblxuIjsKKwljZXJyIDw8ICIgICAgIC0teHNlY3Jlc29sdmVyLy14XG4iOworCWNlcnIgPDwgIiAgICAgICAgIFVzZSB0aGUgeG1sLXNlY3VyaXR5IHRlc3QgWE1MRFNpZyBVUkkgcmVzb2x2ZXJcblxuIjsKKwljZXJyIDw8ICIgICAgIC0taWRucy8tZCA8bnMgdXJpPiA8bmFtZT5cbiI7CisJY2VyciA8PCAiICAgICAgICAgRGVmaW5lIGFuIGF0dHJpYnV0ZSBJZCBieSBuYW1lc3BhY2UgVVJJIGFuZCBuYW1lXG5cbiI7CisjaWYgZGVmaW5lZCAoSEFWRV9PUEVOU1NMKQorCWNlcnIgPDwgIiAgICAgLS1pbnRlcm9wLy1pXG4iOworCWNlcnIgPDwgIiAgICAgICAgIFVzZSB0aGUgaW50ZXJvcCByZXNvbHZlciBmb3IgQmFsdGltb3JlIGludGVyb3AgZXhhbXBsZXNcblxuIjsKKyNlbmRpZgorI2lmIGRlZmluZWQoSEFWRV9XSU5DQVBJKQorIwlpZiBkZWZpbmVkIChIQVZFX09QRU5TU0wpCisJY2VyciA8PCAiICAgICAtLXdpbmNhcGkvLXdcbiI7CisJY2VyciA8PCAiICAgICAgICAgVXNlIHRoZSBXaW5kb3dzIENBUEkgY3J5cHRvIFByb3ZpZGVyXG5cbiI7CisjCWVuZGlmCisJY2VyciA8PCAiICAgICAtLXdpbmhtYWNrZXkvLXdoIDxzdHJpbmc+XG4iOworCWNlcnIgPDwgIiAgICAgICAgIFVzZSB0aGUgV2luZG93cyBDQVBJIGNyeXB0byBwcm92aWRlciBhbmQgaGFzaCB0aGUgPHN0cmluZz5cbiI7CisJY2VyciA8PCAiICAgICAgICAgaW50byBhIFdpbmRvd3Mga2V5IHVzaW5nIFNIQS0xXG5cbiI7CisjZW5kaWYKKwljZXJyIDw8ICIgICAgIEV4aXRzIHdpdGggY29kZXMgOlxuIjsKKwljZXJyIDw8ICIgICAgICAgICAwID0gU2lnbmF0dXJlIE9LXG4iOworCWNlcnIgPDwgIiAgICAgICAgIDEgPSBTaWduYXR1cmUgQmFkXG4iOworCWNlcnIgPDwgIiAgICAgICAgIDIgPSBQcm9jZXNzaW5nIGVycm9yXG4iOworCit9CisKK2ludCBldmFsdWF0ZShpbnQgYXJnYywgY2hhciAqKiBhcmd2KSB7CisJCisJY2hhcgkJCQkJKiBmaWxlbmFtZSA9IE5VTEw7CisJY2hhcgkJCQkJKiBobWFjS2V5U3RyID0gTlVMTDsKKwljaGFyCQkJCQkqIHVzZUlkQXR0cmlidXRlTlMgPSBOVUxMOworCWNoYXIJCQkJCSogdXNlSWRBdHRyaWJ1dGVOYW1lID0gTlVMTDsKKwlYU0VDQ3J5cHRvS2V5CQkJKiBrZXkgPSBOVUxMOworCWJvb2wJCQkJCXVzZVhTRUNVUklSZXNvbHZlciA9IGZhbHNlOworCWJvb2wgICAgICAgICAgICAgICAgICAgIHVzZUFub255bW91c1Jlc29sdmVyID0gZmFsc2U7CisJYm9vbAkJCQkJdXNlSW50ZXJvcFJlc29sdmVyID0gZmFsc2U7CisjaWYgZGVmaW5lZCAoSEFWRV9XSU5DQVBJKQorCUhDUllQVFBST1YJCQkJd2luMzJDU1AgPSAwOworI2VuZGlmCisKKwlib29sIHNraXBSZWZzID0gZmFsc2U7CisKKwlpZiAoYXJnYyA8IDIpIHsKKworCQlwcmludFVzYWdlKCk7CisJCXJldHVybiAyOworCX0KKworCS8vIFJ1biB0aHJvdWdoIHBhcmFtZXRlcnMKKwlpbnQgcGFyYW1Db3VudCA9IDE7CisKKwl3aGlsZSAocGFyYW1Db3VudCA8IGFyZ2MgLSAxKSB7CisKKwkJaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWhtYWNrZXkiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItaCIpID09IDApIHsKKwkJCXBhcmFtQ291bnQrKzsKKwkJCWhtYWNLZXlTdHIgPSBhcmd2W3BhcmFtQ291bnQrK107CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tc2tpcHJlZnMiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItcyIpID09IDApIHsKKwkJCXNraXBSZWZzID0gdHJ1ZTsKKwkJCXBhcmFtQ291bnQrKzsKKwkJfQorCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS14c2VjcmVzb2x2ZXIiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICIteCIpID09IDApIHsKKwkJCXVzZVhTRUNVUklSZXNvbHZlciA9IHRydWU7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0taWRucyIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1kIikgPT0gMCkgeworCQkJaWYgKHBhcmFtQ291bnQgKzIgPj0gYXJnYykgeworCQkJCXByaW50VXNhZ2UoKTsKKwkJCQlyZXR1cm4gMjsKKwkJCX0KKwkJCXBhcmFtQ291bnQrKzsKKwkJCXVzZUlkQXR0cmlidXRlTlMgPSBhcmd2W3BhcmFtQ291bnQrK107CisJCQl1c2VJZEF0dHJpYnV0ZU5hbWUgPSBhcmd2W3BhcmFtQ291bnQrK107CisJCX0KKyNpZiBkZWZpbmVkIChIQVZFX09QRU5TU0wpCisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWludGVyb3AiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItaSIpID09IDApIHsKKwkJCS8vIFVzZSB0aGUgaW50ZXJvcCBrZXkgcmVzb2x2ZXIKKwkJCXVzZUludGVyb3BSZXNvbHZlciA9IHRydWU7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKyNlbmRpZgorCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1hbm9ueW1vdXNyZXNvbHZlciIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1hIikgPT0wKSB7CisJCQl1c2VBbm9ueW1vdXNSZXNvbHZlciA9IHRydWU7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKyNpZiBkZWZpbmVkIChIQVZFX1dJTkNBUEkpCisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXdpbmNhcGkiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItdyIpID09IDAgfHwKKwkJCV9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXdpbmhtYWNrZXkiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItd2giKSA9PSAwKSB7CisKKwkJCVdpbkNBUElDcnlwdG9Qcm92aWRlciAqIGNwID0gbmV3IFdpbkNBUElDcnlwdG9Qcm92aWRlcigpOworCQkJWFNFQ1BsYXRmb3JtVXRpbHM6OlNldENyeXB0b1Byb3ZpZGVyKGNwKTsKKworCQkJaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXdpbmhtYWNrZXkiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItd2giKSA9PSAwKSB7CisKKwkJCQkvLyBDcmVhdGUgYSBTSEEtMSBiYXNlZCBrZXkgYmFzZWQgb24gdGhlIDxzdHJpbmc+IHBhcmFtZXRlcgorCisJCQkJcGFyYW1Db3VudCsrOworCisJCQkJaWYgKCFDcnlwdEFjcXVpcmVDb250ZXh0KCZ3aW4zMkNTUCwKKwkJCQkJTlVMTCwKKwkJCQkJTlVMTCwKKwkJCQkJUFJPVl9SU0FfRlVMTCwKKwkJCQkJQ1JZUFRfVkVSSUZZQ09OVEVYVCkpIAorCQkJCXsKKwkJCQkJY2VyciA8PCAiRXJyb3Igb2J0YWluaW5nIGRlZmF1bHQgUlNBX1BST1YiIDw8IGVuZGw7CisJCQkJCXJldHVybiAyOworCQkJCX0KKworCQkJCUhDUllQVEtFWSBrOworCQkJCUhDUllQVEhBU0ggaDsKKwkJCQlCT09MIGZSZXN1bHQgPSBDcnlwdENyZWF0ZUhhc2goCisJCQkJCXdpbjMyQ1NQLAorCQkJCQlDQUxHX1NIQSwKKwkJCQkJMCwKKwkJCQkJMCwKKwkJCQkJJmgpOworCisJCQkJaWYgKGZSZXN1bHQgPT0gMCkgeworCQkJCQljZXJyIDw8ICJFcnJvciBjcmVhdGluZyBoYXNoIHRvIGNyZWF0ZSB3aW5kb3dzIGhtYWMga2V5IGZyb20gcGFzc3dvcmQiIDw8IGVuZGw7CisJCQkJCXJldHVybiAyOworCQkJCX0KKwkJCQlmUmVzdWx0ID0gQ3J5cHRIYXNoRGF0YSgKKwkJCQkJaCwKKwkJCQkJKHVuc2lnbmVkIGNoYXIgKikgYXJndltwYXJhbUNvdW50XSwKKwkJCQkJKERXT1JEKSBzdHJsZW4oYXJndltwYXJhbUNvdW50XSksCisJCQkJCTApOworCQkJCQorCQkJCWlmIChmUmVzdWx0ID09IDApIHsKKwkJCQkJY2VyciA8PCAiRXJyb3IgaGFzaGluZyBwYXNzd29yZCB0byBjcmVhdGUgd2luZG93cyBobWFjIGtleSIgPDwgZW5kbDsKKwkJCQkJcmV0dXJuIDI7CisJCQkJfQorCisJCQkJLy8gTm93IGNyZWF0ZSBhIGtleQorCQkJCWZSZXN1bHQgPSBDcnlwdERlcml2ZUtleSgKKwkJCQkJd2luMzJDU1AsCisJCQkJCUNBTEdfUkMyLAorCQkJCQloLAorCQkJCQlDUllQVF9FWFBPUlRBQkxFLAorCQkJCQkmayk7CisKKwkJCQlpZiAoZlJlc3VsdCA9PSAwKSB7CisJCQkJCWNlcnIgPDwgIkVycm9yIGRlcml2aW5nIGtleSBmcm9tIGhhc2ggdmFsdWUiIDw8IGVuZGw7CisJCQkJCXJldHVybiAyOworCQkJCX0KKworCQkJCS8vIFdyYXAgaW4gYSBXaW5DQVBJIG9iamVjdAorCQkJCVdpbkNBUElDcnlwdG9LZXlITUFDICogaGs7CisJCQkJaGsgPSBuZXcgV2luQ0FQSUNyeXB0b0tleUhNQUMod2luMzJDU1ApOworCQkJCWhrLT5zZXRXaW5LZXkoayk7IAorCisJCQkJa2V5ID0gaGs7CisKKwkJCQlDcnlwdERlc3Ryb3lIYXNoKGgpOworCisJCQl9CisKKwkJCXBhcmFtQ291bnQrKzsKKworCQl9CisjZW5kaWYKKwkJZWxzZSB7CisJCQljZXJyIDw8ICJVbmtub3duIG9wdGlvbjogIiA8PCBhcmd2W3BhcmFtQ291bnRdIDw8IGVuZGwgPDwgZW5kbDsKKwkJCXByaW50VXNhZ2UoKTsKKwkJCXJldHVybiAyOworCQl9CisJfQorCisjaWYgZGVmaW5lZCAoSEFWRV9XSU5DQVBJKSAmJiAhZGVmaW5lZChIQVZFX09QRU5TU0wpCisKKwkvLyBVc2UgZGVmYXVsdCBEU1MgcHJvdmlkZXIKKwlXaW5DQVBJQ3J5cHRvUHJvdmlkZXIgKiBjcCA9IG5ldyBXaW5DQVBJQ3J5cHRvUHJvdmlkZXIoKTsKKwlYU0VDUGxhdGZvcm1VdGlsczo6U2V0Q3J5cHRvUHJvdmlkZXIoY3ApOworCisjZW5kaWYKKworCWlmIChwYXJhbUNvdW50ID49IGFyZ2MpIHsKKwkJcHJpbnRVc2FnZSgpOworCQlyZXR1cm4gMjsKKwl9CisKKwlmaWxlbmFtZSA9IGFyZ3ZbcGFyYW1Db3VudF07CisKKwkvLyBDcmVhdGUgYW5kIHNldCB1cCB0aGUgcGFyc2VyCisKKwlYZXJjZXNET01QYXJzZXIgKiBwYXJzZXIgPSBuZXcgWGVyY2VzRE9NUGFyc2VyOworCUphbml0b3I8WGVyY2VzRE9NUGFyc2VyPiBqX3BhcnNlcihwYXJzZXIpOworCisJcGFyc2VyLT5zZXREb05hbWVzcGFjZXModHJ1ZSk7CisJcGFyc2VyLT5zZXRDcmVhdGVFbnRpdHlSZWZlcmVuY2VOb2Rlcyh0cnVlKTsKKworCS8vIE5vdyBwYXJzZSBvdXQgZmlsZQorCisJYm9vbCBlcnJvcnNPY2N1cmVkID0gZmFsc2U7CisJeHNlY3NpemVfdCBlcnJvckNvdW50ID0gMDsKKyAgICB0cnkKKyAgICB7CisgICAgCXBhcnNlci0+cGFyc2UoZmlsZW5hbWUpOworICAgICAgICBlcnJvckNvdW50ID0gcGFyc2VyLT5nZXRFcnJvckNvdW50KCk7CisgICAgICAgIGlmIChlcnJvckNvdW50ID4gMCkKKyAgICAgICAgICAgIGVycm9yc09jY3VyZWQgPSB0cnVlOworICAgIH0KKworICAgIGNhdGNoIChjb25zdCBYTUxFeGNlcHRpb24mIGUpCisgICAgeworICAgICAgICBjZXJyIDw8ICJBbiBlcnJvciBvY2N1cmVkIGR1cmluZyBwYXJzaW5nXG4gICBNZXNzYWdlOiAiCisgICAgICAgICAgICAgPDwgZS5nZXRNZXNzYWdlKCkgPDwgZW5kbDsKKyAgICAgICAgZXJyb3JzT2NjdXJlZCA9IHRydWU7CisgICAgfQorCisKKyAgICBjYXRjaCAoY29uc3QgRE9NRXhjZXB0aW9uJiBlKQorICAgIHsKKyAgICAgICBjZXJyIDw8ICJBIERPTSBlcnJvciBvY2N1cmVkIGR1cmluZyBwYXJzaW5nXG4gICBET01FeGNlcHRpb24gY29kZTogIgorICAgICAgICAgICAgIDw8IGUuY29kZSA8PCBlbmRsOworICAgICAgICBlcnJvcnNPY2N1cmVkID0gdHJ1ZTsKKyAgICB9CisKKwlpZiAoZXJyb3JzT2NjdXJlZCkgeworCisJCWNvdXQgPDwgIkVycm9ycyBkdXJpbmcgcGFyc2UiIDw8IGVuZGw7CisJCXJldHVybiAoMik7CisKKwl9CisKKwkvKgorCisJCU5vdyB0aGF0IHdlIGhhdmUgdGhlIHBhcnNlZCBmaWxlLCBnZXQgdGhlIERPTSBkb2N1bWVudCBhbmQgc3RhcnQgbG9va2luZyBhdCBpdAorCisJKi8KKwkKKwlET01Ob2RlICpkb2M7CQkvLyBUaGUgZG9jdW1lbnQgdGhhdCB3ZSBwYXJzZWQKKworCWRvYyA9IHBhcnNlci0+Z2V0RG9jdW1lbnQoKTsKKwlET01Eb2N1bWVudCAqdGhlRE9NID0gcGFyc2VyLT5nZXREb2N1bWVudCgpOworCisJLy8gRmluZCB0aGUgc2lnbmF0dXJlIG5vZGUKKwkKKwlET01Ob2RlICpzaWdOb2RlID0gZmluZERTSUdOb2RlKGRvYywgIlNpZ25hdHVyZSIpOworCisJLy8gQ3JlYXRlIHRoZSBzaWduYXR1cmUgY2hlY2tlcgorCisJaWYgKHNpZ05vZGUgPT0gMCkgeworCisJCWNlcnIgPDwgIkNvdWxkIG5vdCBmaW5kIDxTaWduYXR1cmU+IG5vZGUgaW4gIiA8PCBhcmd2W2FyZ2MtMV0gPDwgZW5kbDsKKwkJcmV0dXJuIDI7CisJfQorCisJWFNFQ1Byb3ZpZGVyIHByb3Y7CisJWFNFQ0tleUluZm9SZXNvbHZlckRlZmF1bHQgdGhlS2V5SW5mb1Jlc29sdmVyOworCisJRFNJR1NpZ25hdHVyZSAqIHNpZyA9IHByb3YubmV3U2lnbmF0dXJlRnJvbURPTSh0aGVET00sIHNpZ05vZGUpOworCisJLy8gVGhlIG9ubHkgd2F5IHdlIGNhbiB2ZXJpZnkgaXMgdXNpbmcga2V5cyByZWFkIGRpcmVjdGx5IGZyb20gdGhlIEtleUluZm8gbGlzdCwKKwkvLyBzbyB3ZSBhZGQgYSBLZXlJbmZvUmVzb2x2ZXJEZWZhdWx0IHRvIHRoZSBTaWduYXR1cmUuCisKKwlzaWctPnNldEtleUluZm9SZXNvbHZlcigmdGhlS2V5SW5mb1Jlc29sdmVyKTsKKwlzaWctPnJlZ2lzdGVySWRBdHRyaWJ1dGVOYW1lKE1BS0VfVU5JQ09ERV9TVFJJTkcoIklEIikpOworCisJLy8gUmVnaXN0ZXIgZGVmaW5lZCBhdHRyaWJ1dGUgbmFtZQorCWlmICh1c2VJZEF0dHJpYnV0ZU5hbWUgIT0gTlVMTCkKKwkJc2lnLT5yZWdpc3RlcklkQXR0cmlidXRlTmFtZU5TKE1BS0VfVU5JQ09ERV9TVFJJTkcodXNlSWRBdHRyaWJ1dGVOUyksIAorCQkJCQkJCQkJICAgTUFLRV9VTklDT0RFX1NUUklORyh1c2VJZEF0dHJpYnV0ZU5hbWUpKTsKKworCS8vIENoZWNrIHdoZXRoZXIgd2Ugc2hvdWxkIHVzZSB0aGUgaW50ZXJuYWwgcmVzb2x2ZXIKKworCQorCWlmICh1c2VYU0VDVVJJUmVzb2x2ZXIgPT0gdHJ1ZSB8fCAKKwkJdXNlQW5vbnltb3VzUmVzb2x2ZXIgPT0gdHJ1ZSB8fAorCQl1c2VJbnRlcm9wUmVzb2x2ZXIgPT0gdHJ1ZSkgeworCisjaWYgZGVmaW5lZChfV0lOMzIpCisJCVhTRUNVUklSZXNvbHZlckdlbmVyaWNXaW4zMiAKKyNlbHNlCisJCVhTRUNVUklSZXNvbHZlckdlbmVyaWNVbml4IAorI2VuZGlmCisJCQl0aGVSZXNvbHZlcjsKKworCQlBbm9ueW1vdXNSZXNvbHZlciB0aGVBbm9ueW1vdXNSZXNvbHZlcjsKKwkJICAgICAKKwkJLy8gTWFwIG91dCBiYXNlIHBhdGggb2YgdGhlIGZpbGUKKwkJY2hhciBwYXRoW19NQVhfUEFUSF07CisJCWNoYXIgYmFzZVVSSVsoX01BWF9QQVRIICogMikgKyAxMF07CisJCV9nZXRjd2QocGF0aCwgX01BWF9QQVRIKTsKKworCQlzdHJjcHkoYmFzZVVSSSwgImZpbGU6Ly8vIik7CQkKKworCQkvLyBVZ2x5IGFuZCBuYXN0eSBidXQgcXVpY2sKKwkJaWYgKGZpbGVuYW1lWzBdICE9ICdcXCcgJiYgZmlsZW5hbWVbMF0gIT0gJy8nICYmIGZpbGVuYW1lWzFdICE9ICc6JykgeworCQkJc3RyY2F0KGJhc2VVUkksIHBhdGgpOworCQkJc3RyY2F0KGJhc2VVUkksICIvIik7CisJCX0gZWxzZSBpZiAocGF0aFsxXSA9PSAnOicpIHsKKwkJCXBhdGhbMl0gPSAnXDAnOworCQkJc3RyY2F0KGJhc2VVUkksIHBhdGgpOworCQl9CisKKwkJc3RyY2F0KGJhc2VVUkksIGZpbGVuYW1lKTsKKworCQkvLyBGaW5kIGFueSAnOicgYW5kICJcIiBjaGFyYWN0ZXJzCisJCWludCBsYXN0U2xhc2ggPSAwOworCQlmb3IgKHVuc2lnbmVkIGludCBpID0gODsgaSA8IHN0cmxlbihiYXNlVVJJKTsgKytpKSB7CisJCQlpZiAoYmFzZVVSSVtpXSA9PSAnXFwnKSB7CisJCQkJbGFzdFNsYXNoID0gaTsKKwkJCQliYXNlVVJJW2ldID0gJy8nOworCQkJfQorCQkJZWxzZSBpZiAoYmFzZVVSSVtpXSA9PSAnLycpCisJCQkJbGFzdFNsYXNoID0gaTsKKwkJfQorCisJCS8vIFRoZSBsYXN0ICJcXCIgbXVzdCBwcmVmaXggdGhlIGZpbGVuYW1lCisJCWJhc2VVUklbbGFzdFNsYXNoICsgMV0gPSAnXDAnOworCQlYTUxDaCAqIGJhc2VVUklYTUxDaCA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKGJhc2VVUkkpOworCisJCVhNTFVyaSB1cmkoTUFLRV9VTklDT0RFX1NUUklORyhiYXNlVVJJKSk7CisKKwkJaWYgKHVzZUFub255bW91c1Jlc29sdmVyID09IHRydWUpIHsKKwkJCS8vIEFub255bW91c1Jlc29sdmVyIHRha2VzIHByZWNlZGVuY2UKKwkJCXRoZUFub255bW91c1Jlc29sdmVyLnNldEJhc2VVUkkoYmFzZVVSSVhNTENoKTsKKwkJCXNpZy0+c2V0VVJJUmVzb2x2ZXIoJnRoZUFub255bW91c1Jlc29sdmVyKTsKKwkJfQorCQllbHNlIGlmICh1c2VYU0VDVVJJUmVzb2x2ZXIgPT0gdHJ1ZSkgeworCQkJdGhlUmVzb2x2ZXIuc2V0QmFzZVVSSShiYXNlVVJJWE1MQ2gpOworCQkJc2lnLT5zZXRVUklSZXNvbHZlcigmdGhlUmVzb2x2ZXIpOworCQl9CisKKyNpZiBkZWZpbmVkIChIQVZFX09QRU5TU0wpCisJCWlmICh1c2VJbnRlcm9wUmVzb2x2ZXIgPT0gdHJ1ZSkgeworCisJCQlJbnRlcm9wUmVzb2x2ZXIgaXJlcygmKGJhc2VVUklYTUxDaFs4XSkpOworCQkJc2lnLT5zZXRLZXlJbmZvUmVzb2x2ZXIoJmlyZXMpOworCisJCX0KKyNlbmRpZgorCQlYU0VDX1JFTEVBU0VfWE1MQ0goYmFzZVVSSVhNTENoKTsKKworCX0KKworCisKKwlib29sIHJlc3VsdDsKKworCXRyeSB7CisKKwkJLy8gTG9hZCBhIGtleSBpZiBuZWNlc3NhcnkKKwkJaWYgKGhtYWNLZXlTdHIgIT0gTlVMTCkgeworCisJCQlYU0VDQ3J5cHRvS2V5SE1BQyAqIGhtYWNLZXkgPSBYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+a2V5SE1BQygpOworCQkJaG1hY0tleS0+c2V0S2V5KCh1bnNpZ25lZCBjaGFyICopIGhtYWNLZXlTdHIsICh1bnNpZ25lZCBpbnQpIHN0cmxlbihobWFjS2V5U3RyKSk7CisJCQlzaWctPnNldFNpZ25pbmdLZXkoaG1hY0tleSk7CisKKwkJfQorCQllbHNlIGlmIChrZXkgIT0gTlVMTCkgeworCisJCQlzaWctPnNldFNpZ25pbmdLZXkoa2V5KTsKKworCQl9CisKKwkJc2lnLT5sb2FkKCk7CisJCWlmIChza2lwUmVmcykKKwkJCXJlc3VsdCA9IHNpZy0+dmVyaWZ5U2lnbmF0dXJlT25seSgpOworCQllbHNlCisJCQlyZXN1bHQgPSBzaWctPnZlcmlmeSgpOworCX0KKworCWNhdGNoIChYU0VDRXhjZXB0aW9uICZlKSB7CisJCWNoYXIgKiBtc2cgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShlLmdldE1zZygpKTsKKwkJY2VyciA8PCAiQW4gZXJyb3Igb2NjdXJlZCBkdXJpbmcgc2lnbmF0dXJlIHZlcmlmaWNhdGlvblxuICAgTWVzc2FnZTogIgorCQk8PCBtc2cgPDwgZW5kbDsKKwkJWFNFQ19SRUxFQVNFX1hNTENIKG1zZyk7CisJCWVycm9yc09jY3VyZWQgPSB0cnVlOworCQlyZXR1cm4gMjsKKwl9CisJY2F0Y2ggKFhTRUNDcnlwdG9FeGNlcHRpb24gJmUpIHsKKwkJY2VyciA8PCAiQW4gZXJyb3Igb2NjdXJlZCBkdXJpbmcgc2lnbmF0dXJlIHZlcmlmaWNhdGlvblxuICAgTWVzc2FnZTogIgorCQk8PCBlLmdldE1zZygpIDw8IGVuZGw7CisJCWVycm9yc09jY3VyZWQgPSB0cnVlOworCisjaWYgZGVmaW5lZCAoSEFWRV9PUEVOU1NMKQorCQlFUlJfbG9hZF9jcnlwdG9fc3RyaW5ncygpOworCQlCSU8gKiBiaW9fZXJyOworCQlpZiAoKGJpb19lcnI9QklPX25ldyhCSU9fc19maWxlKCkpKSAhPSBOVUxMKQorCQkJQklPX3NldF9mcChiaW9fZXJyLHN0ZGVycixCSU9fTk9DTE9TRXxCSU9fRlBfVEVYVCk7CisKKwkJRVJSX3ByaW50X2Vycm9ycyhiaW9fZXJyKTsKKyNlbmRpZgorCQlyZXR1cm4gMjsKKwl9CisKKyNpZiAwCisJY2F0Y2ggKC4uLikgeworCisJCWNlcnIgPDwgIlVua25vd24gRXhjZXB0aW9uIHR5cGUgb2NjdXJlZC4gIENsZWFuaW5nIHVwIGFuZCBleGl0aW5nXG4iIDw8IGVuZGw7CisKKwkJcmV0dXJuIDI7CisKKwl9CisjZW5kaWYKKwlpbnQgcmV0UmVzdWx0OworCisKKwlpZiAocmVzdWx0KSB7CisJCWNvdXQgPDwgIlNpZ25hdHVyZSB2ZXJpZmllZCBPSyEiIDw8IGVuZGw7CisJCXJldFJlc3VsdCA9IDA7CisJfQorCWVsc2UgeworCQljb3V0IDw8ICJTaWduYXR1cmUgZmFpbGVkIHZlcmlmaWNhdGlvbiIgPDwgZW5kbDsKKwkJY2hhciAqIGUgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShzaWctPmdldEVyck1zZ3MoKSk7CisJCWNvdXQgPDwgZSA8PCBlbmRsOworCQlYU0VDX1JFTEVBU0VfWE1MQ0goZSk7CisJCXJldFJlc3VsdCA9IDE7CisJfQorCisjaWYgZGVmaW5lZCAoSEFWRV9XSU5DQVBJKQorCS8vIENsZWFuIHVwIHRoZSBoYW5kbGUgdG8gdGhlIENTUAorCWlmICh3aW4zMkNTUCAhPSAwKQorCQlDcnlwdFJlbGVhc2VDb250ZXh0KHdpbjMyQ1NQLCAwKTsKKyNlbmRpZgorCisJLy8gSmFuaXRvciB3aWxsIGNsZWFuIHVwIHRoZSBwYXJzZXIKKwlyZXR1cm4gcmV0UmVzdWx0OworCit9CisKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisKKwlpbnQgcmV0UmVzdWx0OworCisjaWYgZGVmaW5lZCAoX0RFQlVHKSAmJiBkZWZpbmVkIChfTVNDX1ZFUikKKworCS8vIERvIHNvbWUgbWVtb3J5IGRlYnVnZ2luZyB1bmRlciBWaXN1YWwgQysrCisKKwlfQ3J0TWVtU3RhdGUgczEsIHMyLCBzMzsKKworCS8vIEF0IHRoaXMgcG9pbnQgd2UgYXJlIGFib3V0IHRvIHN0YXJ0IHJlYWxseSB1c2luZyBYU0VDLCBzbworCS8vIFRha2UgYSAiYmVmb3JlIiBjaGVja3BvaW5nCisKKwlfQ3J0TWVtQ2hlY2twb2ludCggJnMxICk7CisKKyNlbmRpZgorCisJLy8gSW5pdGlhbGlzZSB0aGUgWE1MIHN5c3RlbQorCisJdHJ5IHsKKworCQlYTUxQbGF0Zm9ybVV0aWxzOjpJbml0aWFsaXplKCk7CisjaWZuZGVmIFhTRUNfTk9fWEFMQU4KKwkJWFBhdGhFdmFsdWF0b3I6OmluaXRpYWxpemUoKTsKKwkJWGFsYW5UcmFuc2Zvcm1lcjo6aW5pdGlhbGl6ZSgpOworI2VuZGlmCisJCVhTRUNQbGF0Zm9ybVV0aWxzOjpJbml0aWFsaXNlKCk7CisKKwl9CisJY2F0Y2ggKGNvbnN0IFhNTEV4Y2VwdGlvbiAmZSkgeworCisJCWNlcnIgPDwgIkVycm9yIGR1cmluZyBpbml0aWFsaXNhdGlvbiBvZiBYZXJjZXMiIDw8IGVuZGw7CisJCWNlcnIgPDwgIkVycm9yIE1lc3NhZ2UgPSA6ICIKKwkJICAgICA8PCBlLmdldE1lc3NhZ2UoKSA8PCBlbmRsOworCisJfQorCisJcmV0UmVzdWx0ID0gZXZhbHVhdGUoYXJnYywgYXJndik7CisKKwlYU0VDUGxhdGZvcm1VdGlsczo6VGVybWluYXRlKCk7CisjaWZuZGVmIFhTRUNfTk9fWEFMQU4KKwlYYWxhblRyYW5zZm9ybWVyOjp0ZXJtaW5hdGUoKTsKKwlYUGF0aEV2YWx1YXRvcjo6dGVybWluYXRlKCk7CisjZW5kaWYKKwlYTUxQbGF0Zm9ybVV0aWxzOjpUZXJtaW5hdGUoKTsKKworI2lmIGRlZmluZWQgKF9ERUJVRykgJiYgZGVmaW5lZCAoX01TQ19WRVIpCisKKwlfQ3J0TWVtQ2hlY2twb2ludCggJnMyICk7CisKKwlpZiAoIF9DcnRNZW1EaWZmZXJlbmNlKCAmczMsICZzMSwgJnMyICkgJiYgKAorCQlzMy5sQ291bnRzWzBdID4gMCB8fAorCQlzMy5sQ291bnRzWzFdID4gMSB8fAorCQkvLyBzMy5sQ291bnRzWzJdID4gMiB8fCAgV2UgZG9uJ3Qgd29ycnkgYWJvdXQgQyBSdW50aW1lCisJCXMzLmxDb3VudHNbM10gPiAwIHx8CisJCXMzLmxDb3VudHNbNF0gPiAwKSkgeworCisJCS8vIE5vdGUgdGhhdCB0aGVyZSBpcyBnZW5lcmFsbHkgMSBOb3JtYWwgYW5kIDEgQ1JUIGJsb2NrCisJCS8vIHN0aWxsIHRha2VuLiAgMSBpcyBmcm9tIFhhbGFuIGFuZCAxIGZyb20gc3RkaW8KKworCQkvLyBTZW5kIGFsbCByZXBvcnRzIHRvIFNURE9VVAorCQlfQ3J0U2V0UmVwb3J0TW9kZSggX0NSVF9XQVJOLCBfQ1JUREJHX01PREVfRklMRSApOworCQlfQ3J0U2V0UmVwb3J0RmlsZSggX0NSVF9XQVJOLCBfQ1JUREJHX0ZJTEVfU1RET1VUICk7CisJCV9DcnRTZXRSZXBvcnRNb2RlKCBfQ1JUX0VSUk9SLCBfQ1JUREJHX01PREVfRklMRSApOworCQlfQ3J0U2V0UmVwb3J0RmlsZSggX0NSVF9FUlJPUiwgX0NSVERCR19GSUxFX1NURE9VVCApOworCQlfQ3J0U2V0UmVwb3J0TW9kZSggX0NSVF9BU1NFUlQsIF9DUlREQkdfTU9ERV9GSUxFICk7CisJCV9DcnRTZXRSZXBvcnRGaWxlKCBfQ1JUX0FTU0VSVCwgX0NSVERCR19GSUxFX1NURE9VVCApOworCisJCS8vIER1bXB5IG1lbW9yeSBzdGF0cworCisgCQlfQ3J0TWVtRHVtcEFsbE9iamVjdHNTaW5jZSggJnMzICk7CisJICAgIF9DcnRNZW1EdW1wU3RhdGlzdGljcyggJnMzICk7CisJfQorCisJLy8gTm93IHR1cm4gb2ZmIG1lbW9yeSBsZWFrIGNoZWNraW5nIGFuZCBlbmQgYXMgdGhlcmUgYXJlIHNvbWUgCisJLy8gR2xvYmFscyB0aGF0IGFyZSBhbGxvY2F0ZWQgdGhhdCBnZXQgc2VlbiBhcyBsZWFrcyAoWGFsYW4/KQorCisJaW50IGRiZ0ZsYWcgPSBfQ3J0U2V0RGJnRmxhZyhfQ1JUREJHX1JFUE9SVF9GTEFHKTsKKwlkYmdGbGFnICY9IH4oX0NSVERCR19MRUFLX0NIRUNLX0RGKTsKKwlfQ3J0U2V0RGJnRmxhZyggZGJnRmxhZyApOworCisjZW5kaWYKKworCXJldHVybiByZXRSZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9jL3NyYy90b29scy9jaXBoZXIvWGVuY0ludGVyb3BSZXNvbHZlci5jcHAgYi9jL3NyYy90b29scy9jaXBoZXIvWGVuY0ludGVyb3BSZXNvbHZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTdhN2I5MwotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3Rvb2xzL2NpcGhlci9YZW5jSW50ZXJvcFJlc29sdmVyLmNwcApAQCAtMCwwICsxLDU2NCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAzLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWGVuY0ludGVyb3BSZXNvbHZlciA6PSBDbGFzcyB0byByZXNvbHZlIGtleSBlbGVtZW50cyBpbnRvIGNlcnRpZmljYXRlcyBmb3IKKyAqCQkJCQkJaW50ZXJvcCB0ZXN0CisgKgorICogJElkJAorICoKKyAqLworCisvLyBYU0VDCisKKyNpbmNsdWRlICJYZW5jSW50ZXJvcFJlc29sdmVyLmhwcCIKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDUHJvdmlkZXIuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNLZXlJbmZvUmVzb2x2ZXIuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHS2V5SW5mb05hbWUuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHS2V5SW5mb1g1MDkuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hlbmMvWEVOQ0NpcGhlci5ocHA+CisjaW5jbHVkZSA8eHNlYy94ZW5jL1hFTkNFbmNyeXB0ZWRLZXkuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9KYW5pdG9yLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MVW5pRGVmcy5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisjaW5jbHVkZSA8aW9zdHJlYW0+CisKKyNpZiAhZGVmaW5lZCAoSEFWRV9PUEVOU1NMKSAmJiAhZGVmaW5lZCAoSEFWRV9XSU5DQVBJKSAmJiAhZGVmaW5lZCAoSEFWRV9OU1MpCisjCWVycm9yIFJlcXVpcmUgT3BlblNTTCBvciBXaW5kb3dzIENyeXB0byBBUEkgZm9yIHRoZSBNZXJsaW4gUmVzb2x2ZXIKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoSEFWRV9PUEVOU1NMKQorIwlpbmNsdWRlIDxvcGVuc3NsL3g1MDkuaD4KKyMJaW5jbHVkZSA8b3BlbnNzbC9wZW0uaD4KKyMJaW5jbHVkZSA8eHNlYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvWDUwOS5ocHA+CisjCWluY2x1ZGUgPHhzZWMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0tleVJTQS5ocHA+CisjICAgaW5jbHVkZSA8eHNlYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5LmhwcD4KKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoSEFWRV9XSU5DQVBJKQorIyAgIGluY2x1ZGUgPHhzZWMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b1Byb3ZpZGVyLmhwcD4KKyMgICBpbmNsdWRlIDx4c2VjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9TeW1tZXRyaWNLZXkuaHBwPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkIChIQVZFX05TUykKKyMgICBpbmNsdWRlIDx4c2VjL2VuYy9OU1MvTlNTQ3J5cHRvUHJvdmlkZXIuaHBwPgorIyAgIGluY2x1ZGUgPHhzZWMvZW5jL05TUy9OU1NDcnlwdG9TeW1tZXRyaWNLZXkuaHBwPgorI2VuZGlmCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgTWVybGluIFhlbmMtRml2ZSBrZXlzIGFuZCBTdHJpbmdzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0aWMgWE1MQ2ggc19ib2JOYW1lW10gPSB7CisJY2hMYXRpbl9iLAorCWNoTGF0aW5fbywKKwljaExhdGluX2IsCisJY2hOdWxsCit9OworCitzdGF0aWMgWE1MQ2ggc19qb2JOYW1lW10gPSB7CisJY2hMYXRpbl9qLAorCWNoTGF0aW5fbywKKwljaExhdGluX2IsCisJY2hOdWxsCit9OworCitzdGF0aWMgWE1MQ2ggc19qZWJOYW1lW10gPSB7CisJY2hMYXRpbl9qLAorCWNoTGF0aW5fZSwKKwljaExhdGluX2IsCisJY2hOdWxsCit9OworCitzdGF0aWMgWE1MQ2ggc19qZWROYW1lW10gPSB7CisJY2hMYXRpbl9qLAorCWNoTGF0aW5fZSwKKwljaExhdGluX2QsCisJY2hOdWxsCit9OworCitzdGF0aWMgY2hhciBzX2JvYktleVtdID0gImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eCI7CitzdGF0aWMgY2hhciBzX2pvYktleVtdID0gImFiY2RlZmdoaWprbG1ub3AiOworc3RhdGljIGNoYXIgc19qZWJLZXlbXSA9ICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3giOworc3RhdGljIGNoYXIgc19qZWRLZXlbXSA9ICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NSI7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgUGhhb3MgeGVuYy10aHJlZSBzdHJpbmdzIGFuZCBrZXlzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0aWMgWE1MQ2ggc19waGFvc1JTQU5hbWVbXSA9IHsKKwljaExhdGluX20sCisJY2hMYXRpbl95LAorCWNoRGFzaCwKKwljaExhdGluX3IsCisJY2hMYXRpbl9zLAorCWNoTGF0aW5fYSwKKwljaERhc2gsCisJY2hMYXRpbl9rLAorCWNoTGF0aW5fZSwKKwljaExhdGluX3ksCisJY2hOdWxsCit9OworCitzdGF0aWMgWE1MQ2ggc19waGFvc1RyaXBsZURFU05hbWVbXSA9IHsKKwljaExhdGluX20sCisJY2hMYXRpbl95LAorCWNoRGFzaCwKKwljaExhdGluX3QsCisJY2hMYXRpbl9yLAorCWNoTGF0aW5faSwKKwljaExhdGluX3AsCisJY2hMYXRpbl9sLAorCWNoTGF0aW5fZSwKKwljaExhdGluX2QsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fcywKKwljaERhc2gsCisJY2hMYXRpbl9rLAorCWNoTGF0aW5fZSwKKwljaExhdGluX3ksCisJY2hOdWxsCit9OworCitzdGF0aWMgWE1MQ2ggc19waGFvczNERVNOYW1lW10gPSB7CisJY2hMYXRpbl9tLAorCWNoTGF0aW5feSwKKwljaERhc2gsCisJY2hEaWdpdF8zLAorCWNoTGF0aW5fZCwKKwljaExhdGluX2UsCisJY2hMYXRpbl9zLAorCWNoRGFzaCwKKwljaExhdGluX2ssCisJY2hMYXRpbl9lLAorCWNoTGF0aW5feSwKKwljaE51bGwKK307CisKK3N0YXRpYyBYTUxDaCBzX3BoYW9zQUVTMTI4TmFtZVtdID0geworCWNoTGF0aW5fbSwKKwljaExhdGluX3ksCisJY2hEYXNoLAorCWNoTGF0aW5fYSwKKwljaExhdGluX2UsCisJY2hMYXRpbl9zLAorCWNoRGlnaXRfMSwKKwljaERpZ2l0XzIsCisJY2hEaWdpdF84LAorCWNoRGFzaCwKKwljaExhdGluX2ssCisJY2hMYXRpbl9lLAorCWNoTGF0aW5feSwKKwljaE51bGwKK307CisKK3N0YXRpYyBYTUxDaCBzX3BoYW9zQUVTMTkyTmFtZVtdID0geworCWNoTGF0aW5fbSwKKwljaExhdGluX3ksCisJY2hEYXNoLAorCWNoTGF0aW5fYSwKKwljaExhdGluX2UsCisJY2hMYXRpbl9zLAorCWNoRGlnaXRfMSwKKwljaERpZ2l0XzksCisJY2hEaWdpdF8yLAorCWNoRGFzaCwKKwljaExhdGluX2ssCisJY2hMYXRpbl9lLAorCWNoTGF0aW5feSwKKwljaE51bGwKK307CisKK3N0YXRpYyBYTUxDaCBzX3BoYW9zQUVTMjU2TmFtZVtdID0geworCWNoTGF0aW5fbSwKKwljaExhdGluX3ksCisJY2hEYXNoLAorCWNoTGF0aW5fYSwKKwljaExhdGluX2UsCisJY2hMYXRpbl9zLAorCWNoRGlnaXRfMiwKKwljaERpZ2l0XzUsCisJY2hEaWdpdF82LAorCWNoRGFzaCwKKwljaExhdGluX2ssCisJY2hMYXRpbl9lLAorCWNoTGF0aW5feSwKKwljaE51bGwKK307CisKK3Vuc2lnbmVkIGNoYXIgc19waGFvczNERVNLZXlbXSA9IHsKKworCTB4YzgsIDB4OGYsIDB4ODksIDB4ZDUsIDB4ZmQsIDB4ZTksIDB4YjksIDB4ODAsIAorCTB4MDQsIDB4NDYsIDB4MzIsIDB4MWMsIDB4NGYsIDB4YWIsIDB4ZGYsIDB4ODMsIAorCTB4YTQsIDB4NjIsIDB4YjYsIDB4NjIsIDB4OTcsIDB4ZjIsIDB4NzAsIDB4ZjQKKworfTsKKwordW5zaWduZWQgY2hhciBzX3BoYW9zQUVTMTI4S2V5W10gPSB7CisKKwkweGQzLCAweDVmLCAweGIyLCAweGI5LCAweDBkLCAweGExLCAweGI4LCAweGY0LCAKKwkweGI1LCAweGY5LCAweDBiLCAweGY0LCAweDJjLCAweDdmLCAweGIzLCAweDY5CisKK307CisKK3Vuc2lnbmVkIGNoYXIgc19waGFvc0FFUzE5MktleVtdID0geworCQorCTB4MjIsIDB4NTcsIDB4ZWUsIDB4NGIsIDB4OGQsIDB4MGIsIDB4YmQsIDB4MmIsIAorCTB4NTUsIDB4NTMsIDB4NDMsIDB4MjMsIDB4ZjEsIDB4ZTMsIDB4ZWIsIDB4YWMsIAorCTB4NjEsIDB4ZDUsIDB4ODQsIDB4MDYsIDB4ZjgsIDB4ZjMsIDB4MmYsIDB4YmUKKworfTsKKwordW5zaWduZWQgY2hhciBzX3BoYW9zQUVTMjU2S2V5W10gPSB7CisJCisJMHg2NiwgMHgxNiwgMHg3OCwgMHhiZiwgMHg3NCwgMHg2NSwgMHhjMSwgMHgzOSwgCisJMHg0MiwgMHgxMCwgMHhlYSwgMHg0OCwgMHhhYywgMHg3NywgMHhjYiwgMHgyOSwgCisJMHg1YywgMHg4OSwgMHgzOCwgMHgxMCwgMHhlZCwgMHgxMCwgMHg5MywgMHg4ZSwgCisJMHg0MCwgMHgzNiwgMHhhZCwgMHhmZiwgMHg4YywgMHg1MSwgMHhkNSwgMHhiMAorCit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdC9EZXN0cnVjdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitYZW5jSW50ZXJvcFJlc29sdmVyOjpYZW5jSW50ZXJvcFJlc29sdmVyKERPTURvY3VtZW50ICogZG9jLCBjb25zdCBYTUxDaCAqIGJhc2VVUkkpIHsKKworCWlmIChiYXNlVVJJICE9IE5VTEwpCisJCW1wX2Jhc2VVUkkgPSBYTUxTdHJpbmc6OnJlcGxpY2F0ZShiYXNlVVJJKTsKKwllbHNlCisJCW1wX2Jhc2VVUkkgPSBOVUxMOworCisjaWYgIWRlZmluZWQoX1dJTjMyKQorCW1fZmNvdW50ID0gMDsKKyNlbmRpZgorCisJbXBfZG9jID0gZG9jOworCit9CisKKworWGVuY0ludGVyb3BSZXNvbHZlcjo6flhlbmNJbnRlcm9wUmVzb2x2ZXIoKSB7CisKKwlpZiAobXBfYmFzZVVSSSAhPSBOVUxMKQorCQlYU0VDX1JFTEVBU0VfWE1MQ0gobXBfYmFzZVVSSSk7CisKK30KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCVV0aWxpdHkgZnVuY3Rpb25zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorI2lmIGRlZmluZWQoX1dJTjMyKQorCit2b2lkIHJldmVyc2VTbGFzaChzYWZlQnVmZmVyICZwYXRoKSB7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IChpbnQpIHN0cmxlbihwYXRoLnJhd0NoYXJCdWZmZXIoKSk7ICsraSkgeworCisJCWlmIChwYXRoW2ldID09ICcvJykKKwkJCXBhdGhbaV0gPSAnXFwnOworCisJfQorCit9CisKKyNlbmRpZgorCQorWFNFQ0NyeXB0b1N5bW1ldHJpY0tleSAqIFhlbmNJbnRlcm9wUmVzb2x2ZXI6Om1ha2VTeW1tZXRyaWNLZXkoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6U3ltbWV0cmljS2V5VHlwZSB0eXBlKSB7CisKKwkJWFNFQ0NyeXB0b1N5bW1ldHJpY0tleSAqIGsgPSBYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+a2V5U3ltbWV0cmljKHR5cGUpOworCQlyZXR1cm4gazsKK30KKworI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKworQklPICogY3JlYXRlRmlsZUJJTyhjb25zdCBYTUxDaCAqIGJhc2VVUkksIGNvbnN0IGNoYXIgKiBuYW1lKSB7CisKKwkvLyBPcGVuIGZpbGUgVVJJIHJlbGF0aXZlIHRvIHRoZSBlbmNyeXB0ZWQgZmlsZQorCisJQklPICogYmlvRmlsZTsKKwlpZiAoKGJpb0ZpbGUgPSBCSU9fbmV3KEJJT19zX2ZpbGUoKSkpID09IE5VTEwpIHsKKwkJCisJCXJldHVybiBOVUxMOworCisJfQorCisJc2FmZUJ1ZmZlciBmbmFtZTsKKwlmbmFtZS5zYlRyYW5zY29kZUluKGJhc2VVUkkpOworCWZuYW1lLnNiU3RyY2F0SW4oIi8iKTsKKwlmbmFtZS5zYlN0cmNhdEluKG5hbWUpOworCisjaWYgZGVmaW5lZChfV0lOMzIpCisJcmV2ZXJzZVNsYXNoKGZuYW1lKTsKKyNlbmRpZgorCisJaWYgKEJJT19yZWFkX2ZpbGVuYW1lKGJpb0ZpbGUsIGZuYW1lLnJhd0NoYXJCdWZmZXIoKSkgPD0gMCkgeworCQkKKwkJcmV0dXJuIE5VTEw7CisKKwl9CisKKwlyZXR1cm4gYmlvRmlsZTsKK30KKyNlbmRpZgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBSZXNvbHZlcgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWFNFQ0NyeXB0b0tleSAqIFhlbmNJbnRlcm9wUmVzb2x2ZXI6OnJlc29sdmVLZXkoRFNJR0tleUluZm9MaXN0ICogbHN0KSB7CisKKwlpbnQgbHN0U2l6ZSA9IChpbnQpIGxzdC0+Z2V0U2l6ZSgpOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBsc3RTaXplOyArK2kpIHsKKworCQlEU0lHS2V5SW5mbyAqIGtpID0gbHN0LT5pdGVtKGkpOworCisJCWlmIChraS0+Z2V0S2V5SW5mb1R5cGUoKSA9PSBEU0lHS2V5SW5mbzo6S0VZSU5GT19OQU1FKSB7CisKKwkJCURTSUdLZXlJbmZvTmFtZSAqIGtuID0gKERTSUdLZXlJbmZvTmFtZSAqKSBraTsKKworCQkJY29uc3QgWE1MQ2ggKiBuYW1lID0ga24tPmdldEtleU5hbWUoKTsKKworCQkJLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIGtleSB3ZSBrbm93CisKKwkJCWlmIChzdHJFcXVhbHMoc19ib2JOYW1lLCBuYW1lKSkgeworCQkJCVhTRUNDcnlwdG9TeW1tZXRyaWNLZXkgKiBrID0gCisJCQkJCVhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5rZXlTeW1tZXRyaWMoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZXzNERVNfMTkyKTsKKwkJCQl0cnkgeworCQkJCQlrLT5zZXRLZXkoKHVuc2lnbmVkIGNoYXIgKikgc19ib2JLZXksICh1bnNpZ25lZCBpbnQpIHN0cmxlbihzX2JvYktleSkpOworCQkJCX0gY2F0Y2ggKC4uLikgeworCQkJCQlkZWxldGUgazsKKwkJCQkJdGhyb3c7CisJCQkJfQorCQkJCXJldHVybiBrOworCQkJfQorCQkJaWYgKHN0ckVxdWFscyhzX2pvYk5hbWUsIG5hbWUpKSB7CisJCQkJWFNFQ0NyeXB0b1N5bW1ldHJpY0tleSAqIGsgPSAKKwkJCQkJWFNFQ1BsYXRmb3JtVXRpbHM6OmdfY3J5cHRvUHJvdmlkZXItPmtleVN5bW1ldHJpYyhYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfQUVTXzEyOCk7CisJCQkJdHJ5IHsKKwkJCQkJay0+c2V0S2V5KCh1bnNpZ25lZCBjaGFyICopIHNfam9iS2V5LCAodW5zaWduZWQgaW50KSBzdHJsZW4oc19qb2JLZXkpKTsKKwkJCQl9IGNhdGNoKC4uLikgeworCQkJCQlkZWxldGUgazsKKwkJCQkJdGhyb3c7CisJCQkJfQorCQkJCXJldHVybiBrOworCQkJfQorCQkJaWYgKHN0ckVxdWFscyhzX2plYk5hbWUsIG5hbWUpKSB7CisJCQkJWFNFQ0NyeXB0b1N5bW1ldHJpY0tleSAqIGsgPSAKKwkJCQkJWFNFQ1BsYXRmb3JtVXRpbHM6OmdfY3J5cHRvUHJvdmlkZXItPmtleVN5bW1ldHJpYyhYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfQUVTXzE5Mik7CisJCQkJdHJ5IHsKKwkJCQkJay0+c2V0S2V5KCh1bnNpZ25lZCBjaGFyICopIHNfamViS2V5LCAodW5zaWduZWQgaW50KSBzdHJsZW4oc19qZWJLZXkpKTsKKwkJCQl9IGNhdGNoKC4uLikgeworCQkJCQlkZWxldGUgazsKKwkJCQkJdGhyb3c7CisJCQkJfQorCQkJCXJldHVybiBrOworCQkJfQorCQkJaWYgKHN0ckVxdWFscyhzX2plZE5hbWUsIG5hbWUpKSB7CisJCQkJWFNFQ0NyeXB0b1N5bW1ldHJpY0tleSAqIGsgPSAKKwkJCQkJWFNFQ1BsYXRmb3JtVXRpbHM6OmdfY3J5cHRvUHJvdmlkZXItPmtleVN5bW1ldHJpYyhYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfQUVTXzI1Nik7CisJCQkJdHJ5IHsKKwkJCQkJay0+c2V0S2V5KCh1bnNpZ25lZCBjaGFyICopIHNfamVkS2V5LCAodW5zaWduZWQgaW50KSBzdHJsZW4oc19qZWRLZXkpKTsKKwkJCQl9IGNhdGNoKC4uLikgeworCQkJCQlkZWxldGUgazsKKwkJCQkJdGhyb3c7CisJCQkJfQorCQkJCXJldHVybiBrOworCQkJfQorCQkJLy8gUEhBT1MgS2V5cworCQkJaWYgKHN0ckVxdWFscyhzX3BoYW9zM0RFU05hbWUsIG5hbWUpIHx8IHN0ckVxdWFscyhzX3BoYW9zVHJpcGxlREVTTmFtZSwgbmFtZSkpIHsKKwkJCQlYU0VDQ3J5cHRvU3ltbWV0cmljS2V5ICogayA9IAorCQkJCQlYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+a2V5U3ltbWV0cmljKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV8zREVTXzE5Mik7CisJCQkJdHJ5IHsKKwkJCQkJay0+c2V0S2V5KHNfcGhhb3MzREVTS2V5LCAyNCk7CisJCQkJfSBjYXRjaCAoLi4uKSB7CisJCQkJCWRlbGV0ZSBrOworCQkJCQl0aHJvdzsKKwkJCQl9CisJCQkJcmV0dXJuIGs7CisJCQl9CisJCQlpZiAoc3RyRXF1YWxzKHNfcGhhb3NBRVMxMjhOYW1lLCBuYW1lKSkgeworCQkJCVhTRUNDcnlwdG9TeW1tZXRyaWNLZXkgKiBrID0gCisJCQkJCVhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5rZXlTeW1tZXRyaWMoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZX0FFU18xMjgpOworCQkJCXRyeSB7CisJCQkJCWstPnNldEtleShzX3BoYW9zQUVTMTI4S2V5LCAxNik7CisJCQkJfSBjYXRjaCguLi4pIHsKKwkJCQkJZGVsZXRlIGs7CisJCQkJCXRocm93OworCQkJCX0KKwkJCQlyZXR1cm4gazsKKwkJCX0KKwkJCWlmIChzdHJFcXVhbHMoc19waGFvc0FFUzE5Mk5hbWUsIG5hbWUpKSB7CisJCQkJWFNFQ0NyeXB0b1N5bW1ldHJpY0tleSAqIGsgPSAKKwkJCQkJWFNFQ1BsYXRmb3JtVXRpbHM6OmdfY3J5cHRvUHJvdmlkZXItPmtleVN5bW1ldHJpYyhYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfQUVTXzE5Mik7CisJCQkJdHJ5IHsKKwkJCQkJay0+c2V0S2V5KHNfcGhhb3NBRVMxOTJLZXksIDI0KTsKKwkJCQl9IGNhdGNoKC4uLikgeworCQkJCQlkZWxldGUgazsKKwkJCQkJdGhyb3c7CisJCQkJfQorCQkJCXJldHVybiBrOworCQkJfQorCQkJaWYgKHN0ckVxdWFscyhzX3BoYW9zQUVTMjU2TmFtZSwgbmFtZSkpIHsKKwkJCQlYU0VDQ3J5cHRvU3ltbWV0cmljS2V5ICogayA9IAorCQkJCQlYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+a2V5U3ltbWV0cmljKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV9BRVNfMjU2KTsKKwkJCQl0cnkgeworCQkJCQlrLT5zZXRLZXkoc19waGFvc0FFUzI1NktleSwgMzIpOworCQkJCX0gY2F0Y2goLi4uKSB7CisJCQkJCWRlbGV0ZSBrOworCQkJCQl0aHJvdzsKKwkJCQl9CisJCQkJcmV0dXJuIGs7CisJCQl9CisjaWYgZGVmaW5lZCAoSEFWRV9PUEVOU1NMKQorCQkJaWYgKHN0ckVxdWFscyhzX3BoYW9zUlNBTmFtZSwgbmFtZSkpIHsKKworCQkJCS8vIFRoaXMgaXMgdGhlIFBoYW9zIFJTQSBrZXkKKwkJCQlCSU8gKiByc2FGaWxlID0gY3JlYXRlRmlsZUJJTyhtcF9iYXNlVVJJLCAicnNhLXByaXYta2V5LmRlciIpOworCQkJCWlmIChyc2FGaWxlID09IE5VTEwpCisJCQkJCXJldHVybiBOVUxMOworCisJCQkJUEtDUzhfUFJJVl9LRVlfSU5GTyAqIHA4aW5mOworCQkJCXA4aW5mID0gZDJpX1BLQ1M4X1BSSVZfS0VZX0lORk9fYmlvKHJzYUZpbGUsIE5VTEwpOworCisJCQkJRVZQX1BLRVkgKiBwayA9IEVWUF9QS0NTODJQS0VZKHA4aW5mKTsKKwkJCQlPcGVuU1NMQ3J5cHRvS2V5UlNBICogayA9IG5ldyBPcGVuU1NMQ3J5cHRvS2V5UlNBKHBrKTsKKwkJCQlQS0NTOF9QUklWX0tFWV9JTkZPX2ZyZWUocDhpbmYpOworCQkJCUJJT19mcmVlX2FsbChyc2FGaWxlKTsKKwkJCQlyZXR1cm4gazsKKworCQkJfQorI2VuZGlmCisKKwkJCS8vIElmIHdlIGdldCB0aGlzIGZhciwgd2UgZG9uJ3Qga25vdyBpdC4gIFNvIGxvb2sgZm9yIEVuY3J5cHRlZEtleSBlbGVtZW50cworCQkJLy8gY29udGFpbmluZyB0aGlzIG5hbWUgYXMgYSBDYXJyaWVkS2V5TmFtZQorCisJCQlET01Ob2RlICogYyA9IG1wX2RvYy0+Z2V0RG9jdW1lbnRFbGVtZW50KCktPmdldEZpcnN0Q2hpbGQoKTsKKwkJCXdoaWxlIChjICE9IE5VTEwpIHsKKworCQkJCWlmIChjLT5nZXROb2RlVHlwZSgpID09IERPTU5vZGU6OkVMRU1FTlRfTk9ERSAmJgorCQkJCQlzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZShjKSwgTUFLRV9VTklDT0RFX1NUUklORygiS2V5SW5mbyIpKSkgeworCisJCQkJCURPTU5vZGUgKiBlayA9IGMtPmdldEZpcnN0Q2hpbGQoKTsKKwkJCQkJd2hpbGUgKGVrICE9IE5VTEwpIHsKKworCQkJCQkJaWYgKGVrLT5nZXROb2RlVHlwZSgpID09IERPTU5vZGU6OkVMRU1FTlRfTk9ERSAmJgorCQkJCQkJCXN0ckVxdWFscyhnZXRYRU5DTG9jYWxOYW1lKGVrKSwgTUFLRV9VTklDT0RFX1NUUklORygiRW5jcnlwdGVkS2V5IikpKSB7CisKKwkJCQkJCQkvLyBMb2FkCisJCQkJCQkJWFNFQ1Byb3ZpZGVyIHByb3Y7CisJCQkJCQkJWEVOQ0NpcGhlciAqIGNpcGhlciA9IHByb3YubmV3Q2lwaGVyKG1wX2RvYyk7CisKKwkJCQkJCQlYRU5DRW5jcnlwdGVkS2V5ICogeGVrID0gY2lwaGVyLT5sb2FkRW5jcnlwdGVkS2V5KHN0YXRpY19jYXN0PERPTUVsZW1lbnQqPihlaykpOworCQkJCQkJCUphbml0b3I8WEVOQ0VuY3J5cHRlZEtleT4gal94ZWsoeGVrKTsKKworCQkJCQkJCWlmIChzdHJFcXVhbHMoeGVrLT5nZXRDYXJyaWVkS2V5TmFtZSgpLCBuYW1lKSAmJgorCQkJCQkJCQlzdHJFcXVhbHMoeGVrLT5nZXRSZWNpcGllbnQoKSwgTUFLRV9VTklDT0RFX1NUUklORygieW91IikpKSB7CisKKwkJCQkJCQkJLy8gVGhpcyBpcyBpdCEKKwkJCQkJCQkJY2lwaGVyLT5zZXRLZXlJbmZvUmVzb2x2ZXIodGhpcyk7CisJCQkJCQkJCXVuc2lnbmVkIGNoYXIga2V5QnVmWzEwMjRdOworCQkJCQkJCQlpbnQgc3ogPSBjaXBoZXItPmRlY3J5cHRLZXkoeGVrLCBrZXlCdWYsIDEwMjQpOworCisJCQkJCQkJCWlmIChzeiA+IDApIHsKKwkJCQkJCQkJCVhTRUNDcnlwdG9TeW1tZXRyaWNLZXkgKiBrID0gCisJCQkJCQkJCQkJWFNFQ1BsYXRmb3JtVXRpbHM6OmdfY3J5cHRvUHJvdmlkZXItPmtleVN5bW1ldHJpYyhYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfQUVTXzI1Nik7CisJCQkJCQkJCQl0cnkgeworCQkJCQkJCQkJCWstPnNldEtleShrZXlCdWYsIHN6KTsKKwkJCQkJCQkJCX0gY2F0Y2ggKC4uLikgeworCQkJCQkJCQkJCWRlbGV0ZSBrOworCQkJCQkJCQkJCXRocm93OworCQkJCQkJCQkJfQorCisJCQkJCQkJCQlyZXR1cm4gazsKKwkJCQkJCQkJfQorCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJCWVrID0gZWstPmdldE5leHRTaWJsaW5nKCk7CisJCQkJCX0KKwkJCQl9CisJCQkJCisJCQkJYyA9IGMtPmdldE5leHRTaWJsaW5nKCk7CisJCQl9CisKKwkJfQorCisJCWVsc2UgaWYgKGtpLT5nZXRLZXlJbmZvVHlwZSgpID09IERTSUdLZXlJbmZvOjpLRVlJTkZPX1g1MDkpIHsKKworCQkJRFNJR0tleUluZm9YNTA5ICoga2l4ID0gKERTSUdLZXlJbmZvWDUwOSAqKSBraTsKKworCQkJWFNFQ0NyeXB0b1g1MDkgKiBYQ1g1MDkgPSBraXgtPmdldENlcnRpZmljYXRlQ3J5cHRvSXRlbSgwKTsKKworCQkJaWYgKFhDWDUwOSAhPSAwKSB7CisjaWYgZGVmaW5lZCAoSEFWRV9PUEVOU1NMKQorCisKKwkJCQlpZiAoc3RyRXF1YWxzKFhDWDUwOS0+Z2V0UHJvdmlkZXJOYW1lKCksRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyUFJPVk9wZW5TU0wpKSB7CisKKwkJCQkJT3BlblNTTENyeXB0b1g1MDkgKiBPU1NMWDUwOSA9IChPcGVuU1NMQ3J5cHRvWDUwOSAqKSBYQ1g1MDk7CisJCQkJCVg1MDkgKiB4NTA5ID0gT1NTTFg1MDktPmdldE9wZW5TU0xYNTA5KCk7CisKKwkJCQkJLy8gQ2hlY2sgdGhlIHNlcmlhbCBudW1iZXIKKwkJCQkJQklHTlVNICogYm5zZXJpYWwgPSBBU04xX0lOVEVHRVJfdG9fQk4oeDUwOS0+Y2VydF9pbmZvLT5zZXJpYWxOdW1iZXIsIE5VTEwpOworCQkJCQlCTl9mcmVlKGJuc2VyaWFsKTsKKworCQkJCQlCSU8gKiByc2FGaWxlID0gY3JlYXRlRmlsZUJJTyhtcF9iYXNlVVJJLCAicnNhLnA4Iik7CisJCQkJCWlmIChyc2FGaWxlID09IE5VTEwpCisJCQkJCQlyZXR1cm4gTlVMTDsKKworCQkJCQlQS0NTOF9QUklWX0tFWV9JTkZPICogcDhpbmY7CisJCQkJCXA4aW5mID0gZDJpX1BLQ1M4X1BSSVZfS0VZX0lORk9fYmlvKHJzYUZpbGUsIE5VTEwpOworCisJCQkJCUVWUF9QS0VZICogcGsgPSBFVlBfUEtDUzgyUEtFWShwOGluZik7CisJCQkJCU9wZW5TU0xDcnlwdG9LZXlSU0EgKiBrID0gbmV3IE9wZW5TU0xDcnlwdG9LZXlSU0EocGspOworCQkJCQlQS0NTOF9QUklWX0tFWV9JTkZPX2ZyZWUocDhpbmYpOworCQkJCQlCSU9fZnJlZV9hbGwocnNhRmlsZSk7CisJCQkJCXJldHVybiBrOworCisJCQkJfQorI2lmIGRlZmluZWQgKEhBVkVfV0lOQ0FQSSkKKwkJCQllbHNlIHsKKyNlbmRpZiAvKiBIQVZFX1dJTkNBUEkgKi8KKyNlbmRpZiAvKiBIQVZFX09QRU5TU0wgKi8KKworI2lmIGRlZmluZWQgKEhBVkVfV0lOQ0FQSSkKKwkJCQkJc3RkOjpjZXJyIDw8ICJXQVJOSU5HIC0gVW5hYmxlIHRvIGxvYWQgUEtDUzggcHJpdmF0ZSBrZXkgZmlsZSBpbnRvIFdpbmRvd3MgQ0FQSSIgPDwgc3RkOjplbmRsOworI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKwkJCQl9CisjZW5kaWYgLyogSEFWRV9XSU5DQVBJICovCisjZW5kaWYgLyogSEFWRV9PUEVOU1NMICovCisJCQl9CisJCX0KKwl9CisKKwlyZXR1cm4gTlVMTDsKKworfQorCitYU0VDS2V5SW5mb1Jlc29sdmVyICogWGVuY0ludGVyb3BSZXNvbHZlcjo6Y2xvbmUodm9pZCkgY29uc3QgeworCisJcmV0dXJuIG5ldyBYZW5jSW50ZXJvcFJlc29sdmVyKG1wX2RvYywgbXBfYmFzZVVSSSk7CisKK30KKworCisKZGlmZiAtLWdpdCBhL2Mvc3JjL3Rvb2xzL2NpcGhlci9YZW5jSW50ZXJvcFJlc29sdmVyLmhwcCBiL2Mvc3JjL3Rvb2xzL2NpcGhlci9YZW5jSW50ZXJvcFJlc29sdmVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmYwODhkCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdG9vbHMvY2lwaGVyL1hlbmNJbnRlcm9wUmVzb2x2ZXIuaHBwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhlbmNJbnRlcm9wUmVzb2x2ZXIgOj0gQ2xhc3MgdG8gcmVzb2x2ZSBrZXkgZWxlbWVudHMgaW50byBjZXJ0aWZpY2F0ZXMgZm9yCisgKgkJCQkJCWludGVyb3AgdGVzdAorICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworLy8gWFNFQworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNLZXlJbmZvUmVzb2x2ZXIuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9TeW1tZXRyaWNLZXkuaHBwPgorCisjaWYgZGVmaW5lZCAoX1dJTjMyKQorIyAgICBpbmNsdWRlIDxpby5oPgorI2Vsc2UKKyMgICAgaW5jbHVkZSA8Z2xvYi5oPgorI2VuZGlmCisKK2NsYXNzIFhlbmNJbnRlcm9wUmVzb2x2ZXIgOiBwdWJsaWMgWFNFQ0tleUluZm9SZXNvbHZlciB7CisKK3B1YmxpYyA6CisKKwlYZW5jSW50ZXJvcFJlc29sdmVyKFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGRvYywgY29uc3QgWE1MQ2ggKiBiYXNlVVJJKTsKKwl+WGVuY0ludGVyb3BSZXNvbHZlcigpOworCisJLy8gSW50ZXJmYWNlIGZ1bmN0aW9ucworCisJdmlydHVhbCBYU0VDQ3J5cHRvS2V5ICogcmVzb2x2ZUtleShEU0lHS2V5SW5mb0xpc3QgKiBsc3QpOworCXZpcnR1YWwgWFNFQ0tleUluZm9SZXNvbHZlciAqIGNsb25lKHZvaWQpIGNvbnN0OworCisJLy8gSW50ZXJuYWwgZnVuY3Rpb25zCisKK3ByaXZhdGU6CisKKwlYU0VDQ3J5cHRvU3ltbWV0cmljS2V5ICogbWFrZVN5bW1ldHJpY0tleShYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpTeW1tZXRyaWNLZXlUeXBlKTsKKworCVhNTENoICoJCQltcF9iYXNlVVJJOworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAKKwkJCQkJKm1wX2RvYzsKKworI2lmIGRlZmluZWQgKF9XSU4zMikKKwlfZmluZGRhdGFfdAkJbV9maW5kZXI7CisJbG9uZwkJCW1faGFuZGxlOworI2Vsc2UKKyAgICBnbG9iX3QgICAgICAgICAgbV9nbG9iYnVmOworICAgIGludCAgICAgICAgICAgICBtX2Zjb3VudDsKKyNlbmRpZgorCit9OworCmRpZmYgLS1naXQgYS9jL3NyYy90b29scy9jaXBoZXIvY2lwaGVyLmNwcCBiL2Mvc3JjL3Rvb2xzL2NpcGhlci9jaXBoZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NTA5YzgKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy90b29scy9jaXBoZXIvY2lwaGVyLmNwcApAQCAtMCwwICsxLDkwMyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAzLTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogY2lwaGVyIDo9IFRvb2wgdG8gaGFuZGxlIGJhc2ljIGVuY3J5cHRpb24vZGVjcnlwdGlvbiBvZiBYTUwgZG9jdW1lbnRzCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisvLyBYU0VDCisKKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNQbGF0Zm9ybVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDUHJvdmlkZXIuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFeGNlcHRpb24uaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9FeGNlcHRpb24uaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5LmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNCaW5UWEZNSW5wdXRTdHJlYW0uaHBwPgorI2luY2x1ZGUgPHhzZWMveGVuYy9YRU5DRW5jcnlwdGVkRGF0YS5ocHA+CisjaW5jbHVkZSA8eHNlYy94ZW5jL1hFTkNFbmNyeXB0ZWRLZXkuaHBwPgorCisjaW5jbHVkZSAiWGVuY0ludGVyb3BSZXNvbHZlci5ocHAiCisKKy8vIHVnbHkgOjwKKworI2lmIGRlZmluZWQoX1dJTjMyKQorIwlpbmNsdWRlIDx4c2VjL3V0aWxzL3dpbnV0aWxzL1hTRUNVUklSZXNvbHZlckdlbmVyaWNXaW4zMi5ocHA+CisjZWxzZQorIwlpbmNsdWRlIDx4c2VjL3V0aWxzL3VuaXh1dGlscy9YU0VDVVJJUmVzb2x2ZXJHZW5lcmljVW5peC5ocHA+CisjZW5kaWYKKworLy8gR2VuZXJhbAorCisjaW5jbHVkZSA8bWVtb3J5Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8ZnN0cmVhbT4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2lmIGRlZmluZWQoSEFWRV9VTklTVERfSCkKKyMgaW5jbHVkZSA8dW5pc3RkLmg+CisjIGRlZmluZSBfTUFYX1BBVEggUEFUSF9NQVgKKyNlbHNlCisjIGlmIGRlZmluZWQoSEFWRV9ESVJFQ1RfSCkKKyMgIGluY2x1ZGUgPGRpcmVjdC5oPgorIyBlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkIChfREVCVUcpICYmIGRlZmluZWQgKF9NU0NfVkVSKQorI2luY2x1ZGUgPGNydGRiZy5oPgorI2VuZGlmCisKKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9QbGF0Zm9ybVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MU3RyaW5nLmhwcD4KKworI2luY2x1ZGUgPHhlcmNlc2MvZG9tL0RPTS5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy9wYXJzZXJzL1hlcmNlc0RPTVBhcnNlci5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTEV4Y2VwdGlvbi5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFVyaS5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFVuaS5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL0phbml0b3IuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9CaW5GaWxlSW5wdXRTdHJlYW0uaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvZnJhbWV3b3JrL1hNTEZvcm1hdHRlci5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy9mcmFtZXdvcmsvU3RkT3V0Rm9ybWF0VGFyZ2V0LmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL2ZyYW1ld29yay9Mb2NhbEZpbGVGb3JtYXRUYXJnZXQuaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKwordXNpbmcgc3RkOjpjZXJyOwordXNpbmcgc3RkOjpjb3V0OwordXNpbmcgc3RkOjplbmRsOwordXNpbmcgc3RkOjpvc3RyZWFtOworCisjaWZuZGVmIFhTRUNfTk9fWEFMQU4KKworLy8gWEFMQU4KKworI2luY2x1ZGUgPHhhbGFuYy9YUGF0aC9YUGF0aEV2YWx1YXRvci5ocHA+CisjaW5jbHVkZSA8eGFsYW5jL1hhbGFuVHJhbnNmb3JtZXIvWGFsYW5UcmFuc2Zvcm1lci5ocHA+CisKK1hBTEFOX1VTSU5HX1hBTEFOKFhQYXRoRXZhbHVhdG9yKQorWEFMQU5fVVNJTkdfWEFMQU4oWGFsYW5UcmFuc2Zvcm1lcikKKworI2VuZGlmCisKKyNpZiAhZGVmaW5lZCAoSEFWRV9PUEVOU1NMKSAmJiAhZGVmaW5lZChIQVZFX1dJTkNBUEkpICYmICFkZWZpbmVkKEhBVkVfTlNTKQorIwllcnJvciBObyBhdmFpbGFibGUgY3J5cHRvQVBJCisjZW5kaWYKKworI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKy8vIE9wZW5TU0wKKworIwlpbmNsdWRlIDx4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9LZXlITUFDLmhwcD4KKyMJaW5jbHVkZSA8eHNlYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvS2V5UlNBLmhwcD4KKyMJaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KKyMJaW5jbHVkZSA8b3BlbnNzbC9iaW8uaD4KKyMJaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KKyMJaW5jbHVkZSA8b3BlbnNzbC9wZW0uaD4KKworI2VuZGlmCisKKyNpZiBkZWZpbmVkIChIQVZFX1dJTkNBUEkpCisKKyMJaW5jbHVkZSA8eHNlYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvUHJvdmlkZXIuaHBwPgorIwlpbmNsdWRlIDx4c2VjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9TeW1tZXRyaWNLZXkuaHBwPgorIwlpbmNsdWRlIDx4c2VjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9LZXlITUFDLmhwcD4KKworI2VuZGlmCisKKyNpZiBkZWZpbmVkIChIQVZFX05TUykKKworIwlpbmNsdWRlIDx4c2VjL2VuYy9OU1MvTlNTQ3J5cHRvUHJvdmlkZXIuaHBwPgorIwlpbmNsdWRlIDx4c2VjL2VuYy9OU1MvTlNTQ3J5cHRvU3ltbWV0cmljS2V5LmhwcD4KKyMJaW5jbHVkZSA8eHNlYy9lbmMvTlNTL05TU0NyeXB0b0tleUhNQUMuaHBwPgorCisjZW5kaWYKKworI2luY2x1ZGUgPHRpbWUuaD4KKworI2lmZGVmIFhTRUNfTk9fWEFMQU4KKworc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8IChzdGQ6Om9zdHJlYW0mIHRhcmdldCwgY29uc3QgWE1MQ2ggKiBzKQoreworICAgIGNoYXIgKnAgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShzKTsKKyAgICB0YXJnZXQgPDwgcDsKKyAgICBYU0VDX1JFTEVBU0VfWE1MQ0gocCk7CisgICAgcmV0dXJuIHRhcmdldDsKK30KKworI2VuZGlmCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDaGVja3NpZworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK3ZvaWQgcHJpbnRVc2FnZSh2b2lkKSB7CisKKwljZXJyIDw8ICJcblVzYWdlOiBjaXBoZXIgW29wdGlvbnNdIDxpbnB1dCBmaWxlIG5hbWU+XG5cbiI7CisJY2VyciA8PCAiICAgICBXaGVyZSBvcHRpb25zIGFyZSA6XG5cbiI7CisJY2VyciA8PCAiICAgICAtLWRlY3J5cHQvLWRcbiI7CisJY2VyciA8PCAiICAgICAgICAgT3BlcmF0ZSBpbiBkZWNyeXB0IG1vZGUgKGRlZmF1bHQpIC0gb3V0cHV0cyB0aGUgZGVjcnlwdGVkIG9jdGV0IHN0cmVhbVxuIjsKKwljZXJyIDw8ICIgICAgICAgICBSZWFkcyBpbiB0aGUgaW5wdXQgZmlsZSBhcyBhbiBYTUwgZmlsZSwgc2VhcmNoZXMgZm9yIGFuIEVuY3J5cHRlZERhdGEgbm9kZVxuIjsKKwljZXJyIDw8ICIgICAgICAgICBhbmQgZGVjcnlwdHMgdGhlIGNvbnRlbnRcbiI7CisJY2VyciA8PCAiICAgICAtLWRlY3J5cHQtZWxlbWVudC8tZGVcbiI7CisJY2VyciA8PCAiICAgICAgICAgT3BlcmF0ZSBpbiBkZWNyeXB0IGFuZCBYTUwgbW9kZS5cbiI7CisJY2VyciA8PCAiICAgICAgICAgVGhpcyB3aWxsIG91dHB1dCB0aGUgb3JpZ2luYWwgWE1MIGRvY3VtZW50IHdpdGggdGhlIGZpcnN0IGVuY3J5cHRlZFxuIjsKKwljZXJyIDw8ICIgICAgICAgICBlbGVtZW50IGRlY3J5cHRlZC5cbiI7CisJY2VyciA8PCAiICAgICAtLWVuY3J5cHQtZmlsZS8tZWZcbiI7CisJY2VyciA8PCAiICAgICAgICAgRW5jcnlwdCB0aGUgY29udGVudHMgb2YgdGhlIGlucHV0IGZpbGUgYXMgcmF3IGRhdGEgYW5kIGNyZWF0ZSBhblxuIjsKKwljZXJyIDw8ICIgICAgICAgICBYTUwgRW5jcnlwdGVkIERhdGEgb3V0cHVcbiI7CisJY2VyciA8PCAiICAgICAtLWVuY3J5cHQteG1sLy1leFxuIjsKKwljZXJyIDw8ICIgICAgICAgICBQYXJzZSB0aGUgaW5wdXQgZmlsZSBhbmQgZW5jcnlwdCB0aGUgZG9jIGVsZW1lbnQgZG93biwgc3RvcmluZyB0aGVcbiI7CisJY2VyciA8PCAiICAgICAgICAgb3V0cHV0IGFzIGEgWE1MIEVuY3J5cHRlZCBEYXRhXG4iOworCWNlcnIgPDwgIiAgICAgLS1rZXkvLWsgW2tla10gPEtFWV9UWVBFPiBbb3B0aW9uc11cbiI7CisJY2VyciA8PCAiICAgICAgICAgU2V0IHRoZSBrZXkgdG8gdXNlLlxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgICAgSWYgdGhlIGZpcnN0IHBhcmFtZXRlciBpcyBcImtla1wiLCB0aGUga2V5IGFyZ3VtZW50cyB3aWxsIGJlIHVzZWRcbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICAgYXMgYSBLZXkgRW5jcnlwdGlvbktleVxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgICAgS0VZX1RZUEUgZGVmaW5lcyB3aGF0IHRoZSBrZXkgaXMuICBDYW4gYmUgb25lIG9mIDpcbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICAgWDUwOSwgUlNBLCBBRVMxMjgsIEFFUzE5MiwgQUVTMjU2IG9yIDNERVNcbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgIG9wdGlvbnMgYXJlIDpcbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiAtIGZvciBYNTA5IFBFTSBmaWxlcyAobXVzdCBiZSBhbiBSU0EgS0VLIGNlcnRpZmljYXRlXG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4gPHBhc3N3b3JkPiAtIGZvciBSU0EgcHJpdmF0ZSBrZXkgZmlsZXMgKE1VU1QgYmUgYSBLRUspXG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgIDxrZXktc3RyaW5nPiAtIEZvciBhIHN0cmluZyB0byB1c2UgYXMgdGhlIGtleSBmb3IgQUVTIG9yIERFUyBrZXlzXG4iOworCWNlcnIgPDwgIiAgICAgLS14a21zLy14XG4iOworCWNlcnIgPDwgIiAgICAgICAgIFRoZSBrZXkgdGhhdCBmb2xsb3dzIG9uIHRoZSBjb21tYW5kIGxpbmUgaXMgdG8gYmUgaW50ZXJwcmV0ZWQgYXNcbiI7CisJY2VyciA8PCAiICAgICAgICAgYW4gWEtNUyBSU0FLZXlQYWlyIGVuY3J5cHRpb24ga2V5XG4iOworCWNlcnIgPDwgIiAgICAgLS1pbnRlcm9wLy1pXG4iOworCWNlcnIgPDwgIiAgICAgICAgIFVzZSB0aGUgaW50ZXJvcCByZXNvbHZlciBmb3IgQmFsdGltb3JlIGludGVyb3AgZXhhbXBsZXNcbiI7CisJY2VyciA8PCAiICAgICAtLW91dC1maWxlLy1vXG4iOworCWNlcnIgPDwgIiAgICAgICAgIE91dHB1dCB0aGUgcmVzdWx0IHRvIHRoZSBpbmRpY2F0ZWQgZmlsZSAocmF0aGVyIHRoYW4gc3Rkb3V0KVxuIjsKKyNpZiBkZWZpbmVkIChIQVZFX1dJTkNBUEkpCisJY2VyciA8PCAiICAgICAtLXdpbmNhcGkvLXdcbiI7CisJY2VyciA8PCAiICAgICAgICAgRm9yY2UgdXNlIG9mIFdpbmRvd3MgQ3J5cHRvIEFQSVxuIjsKKyNlbmRpZgorI2lmIGRlZmluZWQgKEhBVkVfTlNTKQorCWNlcnIgPDwgIiAgICAgLS1uc3MvLW5cbiI7CisJY2VyciA8PCAiICAgICAgICAgRm9yY2UgdXNlIG9mIE5TUyBDcnlwdG8gQVBJXG4iOworI2VuZGlmCisKKwljZXJyIDw8ICJcbiAgICAgRXhpdHMgd2l0aCBjb2RlcyA6XG4iOworCWNlcnIgPDwgIiAgICAgICAgIDAgPSBEZWNyeXB0L0VuY3J5cHQgT0tcbiI7CisJY2VyciA8PCAiICAgICAgICAgMSA9IERlY3J5cHQvRW5jcnlwdCBmYWlsZWRcbiI7CisJY2VyciA8PCAiICAgICAgICAgMiA9IFByb2Nlc3NpbmcgZXJyb3JcbiI7CisKK30KKworaW50IGV2YWx1YXRlKGludCBhcmdjLCBjaGFyICoqIGFyZ3YpIHsKKwkKKwljaGFyCQkJCQkqIGZpbGVuYW1lID0gTlVMTDsKKwljaGFyCQkJCQkqIG91dGZpbGUgPSBOVUxMOworCXVuc2lnbmVkIGNoYXIJCQkqIGtleVN0ciA9IE5VTEw7CisJYm9vbAkJCQkJZG9EZWNyeXB0ID0gdHJ1ZTsKKwlib29sCQkJCQllcnJvcnNPY2N1cmVkID0gZmFsc2U7CisJYm9vbAkJCQkJZG9EZWNyeXB0RWxlbWVudCA9IGZhbHNlOworCWJvb2wJCQkJCXVzZUludGVyb3BSZXNvbHZlciA9IGZhbHNlOworCWJvb2wJCQkJCWVuY3J5cHRGaWxlQXNEYXRhID0gZmFsc2U7CisJYm9vbAkJCQkJcGFyc2VYTUxJbnB1dCA9IHRydWU7CisJYm9vbAkJCQkJZG9YTUxPdXRwdXQgPSBmYWxzZTsKKwlib29sCQkJCQlpc1hLTVNLZXkgPSBmYWxzZTsKKwlYU0VDQ3J5cHRvS2V5CQkJKiBrZWsgPSBOVUxMOworCVhTRUNDcnlwdG9LZXkJCQkqIGtleSA9IE5VTEw7CisJaW50CQkJCQkJa2V5TGVuID0gMDsKKwllbmNyeXB0aW9uTWV0aG9kCQlrZWtBbGcgPSBFTkNSWVBUX05PTkU7CisJZW5jcnlwdGlvbk1ldGhvZAkJa2V5QWxnID0gRU5DUllQVF9OT05FOworCURPTURvY3VtZW50CQkJCSpkb2M7CisJdW5zaWduZWQgY2hhcgkJCWtleUJ1ZlsyNF07CisJWE1MRm9ybWF0VGFyZ2V0CQkJKmZvcm1hdFRhcmdldCA7CisKKyNpZiBkZWZpbmVkKF9XSU4zMikgJiYgZGVmaW5lZCAoSEFWRV9XSU5DQVBJKQorCUhDUllQVFBST1YJCQkJd2luMzJEU1NDU1AgPSAwOwkJLy8gQ3J5cHRvIFByb3ZpZGVycworCUhDUllQVFBST1YJCQkJd2luMzJSU0FDU1AgPSAwOworCisJQ3J5cHRBY3F1aXJlQ29udGV4dCgmd2luMzJEU1NDU1AsIE5VTEwsIE5VTEwsIFBST1ZfRFNTLCBDUllQVF9WRVJJRllDT05URVhUKTsKKwlDcnlwdEFjcXVpcmVDb250ZXh0KCZ3aW4zMlJTQUNTUCwgTlVMTCwgTlVMTCwgUFJPVl9SU0FfRlVMTCwgQ1JZUFRfVkVSSUZZQ09OVEVYVCk7CisKKyNlbmRpZgorCisJaWYgKGFyZ2MgPCAyKSB7CisKKwkJcHJpbnRVc2FnZSgpOworCQlyZXR1cm4gMjsKKwl9CisKKwkvLyBSdW4gdGhyb3VnaCBwYXJhbWV0ZXJzCisJaW50IHBhcmFtQ291bnQgPSAxOworCisJd2hpbGUgKHBhcmFtQ291bnQgPCBhcmdjIC0gMSkgeworCisJCWlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1kZWNyeXB0LWVsZW1lbnQiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItZGUiKSA9PSAwKSB7CisJCQlwYXJhbUNvdW50Kys7CisJCQlkb0RlY3J5cHQgPSB0cnVlOworCQkJZG9EZWNyeXB0RWxlbWVudCA9IHRydWU7CisJCQlkb1hNTE91dHB1dCA9IHRydWU7CisJCQlwYXJzZVhNTElucHV0ID0gdHJ1ZTsKKwkJfQorCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1pbnRlcm9wIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLWkiKSA9PSAwKSB7CisJCQkvLyBVc2UgdGhlIGludGVyb3Aga2V5IHJlc29sdmVyCisJCQl1c2VJbnRlcm9wUmVzb2x2ZXIgPSB0cnVlOworCQkJcGFyYW1Db3VudCsrOworCQl9CisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWVuY3J5cHQtZmlsZSIpID09IDApIHsKKwkJCS8vIFVzZSB0aGlzIGZpbGUgYXMgdGhlIGlucHV0CisJCQlkb0RlY3J5cHQgPSBmYWxzZTsKKwkJCWVuY3J5cHRGaWxlQXNEYXRhID0gdHJ1ZTsKKwkJCWRvWE1MT3V0cHV0ID0gdHJ1ZTsKKwkJCXBhcnNlWE1MSW5wdXQgPSBmYWxzZTsKKwkJCXBhcmFtQ291bnQrKzsKKwkJfQorCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1lbmNyeXB0LXhtbCIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1leCIpID09IDApIHsKKwkJCS8vIFVzIHRoaXMgZmlsZSBhcyBhbiBYTUwgaW5wdXQgZmlsZQorCQkJZG9EZWNyeXB0ID0gZmFsc2U7CisJCQllbmNyeXB0RmlsZUFzRGF0YSA9IGZhbHNlOworCQkJZG9YTUxPdXRwdXQgPSB0cnVlOworCQkJcGFyc2VYTUxJbnB1dCA9IHRydWU7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tb3V0LWZpbGUiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItbyIpID09IDApIHsKKwkJCWlmIChwYXJhbUNvdW50ICsyID49IGFyZ2MpIHsKKwkJCQlwcmludFVzYWdlKCk7CisJCQkJcmV0dXJuIDE7CisJCQl9CisJCQlwYXJhbUNvdW50Kys7CisJCQlvdXRmaWxlID0gYXJndltwYXJhbUNvdW50XTsKKwkJCXBhcmFtQ291bnQrKzsKKwkJfQorCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS14a21zIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXgiKSA9PSAwKSB7CisJCQlwYXJhbUNvdW50Kys7CisJCQlpc1hLTVNLZXkgPSB0cnVlOworCQl9CisKKyNpZiBkZWZpbmVkIChIQVZFX1dJTkNBUEkpCisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXdpbmNhcGkiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItdyIpID09IDApIHsKKwkJCS8vIFVzZSB0aGUgaW50ZXJvcCBrZXkgcmVzb2x2ZXIKKwkJCVdpbkNBUElDcnlwdG9Qcm92aWRlciAqIGNwID0gbmV3IFdpbkNBUElDcnlwdG9Qcm92aWRlcigpOworCQkJWFNFQ1BsYXRmb3JtVXRpbHM6OlNldENyeXB0b1Byb3ZpZGVyKGNwKTsKKwkJCXBhcmFtQ291bnQrKzsKKwkJfQorI2VuZGlmCisjaWYgZGVmaW5lZCAoSEFWRV9OU1MpCisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLW5zcyIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1uIikgPT0gMCkgeworCQkJLy8gTlNTIENyeXB0byBQcm92aWRlcgorCQkJTlNTQ3J5cHRvUHJvdmlkZXIgKiBjcCA9IG5ldyBOU1NDcnlwdG9Qcm92aWRlcigpOworCQkJWFNFQ1BsYXRmb3JtVXRpbHM6OlNldENyeXB0b1Byb3ZpZGVyKGNwKTsKKwkJCXBhcmFtQ291bnQrKzsKKwkJfQorI2VuZGlmCisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWtleSIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1rIikgPT0gMCkgeworCisJCQkvLyBIYXZlIGEga2V5IQorCQkJcGFyYW1Db3VudCsrOworCQkJYm9vbCBpc0tFSyA9IGZhbHNlOworCQkJWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6U3ltbWV0cmljS2V5VHlwZSBsb2FkS2V5QXMgPQorCQkJCVhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV9OT05FOworCisJCQlpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgImtlayIpID09IDApIHsKKwkJCQlpc0tFSyA9IHRydWU7CisJCQkJcGFyYW1Db3VudCsrOworCQkJCWlmIChwYXJhbUNvdW50ID49IGFyZ2MpIHsKKwkJCQkJcHJpbnRVc2FnZSgpOworCQkJCQlyZXR1cm4gMjsKKwkJCQl9CisJCQl9CisKKwkJCWlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiM0RFUyIpID09IDAgfHwKKwkJCQlfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiQUVTMTI4IikgPT0gMCB8fAorCQkJCV9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICJBRVMxOTIiKSA9PSAwIHx8CisJCQkJX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIkFFUzI1NiIpID09IDAgKSB7CisJCQkJCisJCQkJaWYgKHBhcmFtQ291bnQgKzIgPj0gYXJnYykgeworCQkJCQlwcmludFVzYWdlKCk7CisJCQkJCXJldHVybiAyOworCQkJCX0KKworCQkJCXN3aXRjaChhcmd2W3BhcmFtQ291bnRdWzRdKSB7CisJCQkJY2FzZSAnXDAnIDoKKwkJCQkJa2V5TGVuID0gMjQ7CisJCQkJCWxvYWRLZXlBcyA9IFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV8zREVTXzE5MjsKKwkJCQkJa2V5QWxnID0gRU5DUllQVF8zREVTX0NCQzsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSAnMicgOgorCQkJCQlrZXlMZW4gPSAxNjsKKwkJCQkJbG9hZEtleUFzID0gWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZX0FFU18xMjg7CisJCQkJCWlmIChpc0tFSykgeworCQkJCQkJa2VrQWxnID0gRU5DUllQVF9LV19BRVMxMjg7CisJCQkJCX0KKwkJCQkJZWxzZSB7CisJCQkJCQlrZXlBbGcgPSBFTkNSWVBUX0FFUzEyOF9DQkM7CisJCQkJCX0KKwkJCQkJYnJlYWs7CisJCQkJY2FzZSAnOScgOgorCQkJCQlrZXlMZW4gPSAyNDsKKwkJCQkJbG9hZEtleUFzID0gWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZX0FFU18xOTI7CisJCQkJCWlmIChpc0tFSykgeworCQkJCQkJa2VrQWxnID0gRU5DUllQVF9LV19BRVMxOTI7CisJCQkJCX0KKwkJCQkJZWxzZSB7CisJCQkJCQlrZXlBbGcgPSBFTkNSWVBUX0FFUzE5Ml9DQkM7CisJCQkJCX0KKwkJCQkJYnJlYWs7CisJCQkJY2FzZSAnNScgOgorCQkJCQlrZXlMZW4gPSAzMjsKKwkJCQkJbG9hZEtleUFzID0gWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZX0FFU18yNTY7CisJCQkJCWlmIChpc0tFSykgeworCQkJCQkJa2VrQWxnID0gRU5DUllQVF9LV19BRVMyNTY7CisJCQkJCX0KKwkJCQkJZWxzZSB7CisJCQkJCQlrZXlBbGcgPSBFTkNSWVBUX0FFUzI1Nl9DQkM7CisJCQkJCX0KKwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQkJcGFyYW1Db3VudCsrOworCQkJCXVuc2lnbmVkIGNoYXIga2V5U3RyWzY0XTsKKwkJCQlpZiAoc3RybGVuKGFyZ3ZbcGFyYW1Db3VudF0pID4gNjQpIHsKKwkJCQkJY2VyciA8PCAiS2V5IHN0cmluZyB0b28gbG9uZ1xuIjsKKwkJCQkJcmV0dXJuIDI7CisJCQkJfQorCQkJCVhTRUNDcnlwdG9TeW1tZXRyaWNLZXkgKiBzayA9IAorCQkJCQlYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+a2V5U3ltbWV0cmljKGxvYWRLZXlBcyk7CisKKwkJCQlpZiAoaXNYS01TS2V5KSB7CisJCQkJCXVuc2lnbmVkIGNoYXIga2J1ZltYU0VDX01BWF9IQVNIX1NJWkVdOworCQkJCQlDYWxjdWxhdGVYS01TS0VLKCh1bnNpZ25lZCBjaGFyICopIGFyZ3ZbcGFyYW1Db3VudF0sIChpbnQpIHN0cmxlbihhcmd2W3BhcmFtQ291bnRdKSwga2J1ZiwgWFNFQ19NQVhfSEFTSF9TSVpFKTsKKwkJCQkJc2stPnNldEtleShrYnVmLCBrZXlMZW4pOworCQkJCX0KKwkJCQllbHNlIHsKKwkJCQkJbWVtc2V0KGtleVN0ciwgMCwgNjQpOworCQkJCQlzdHJjcHkoKGNoYXIgKikga2V5U3RyLCBhcmd2W3BhcmFtQ291bnRdKTsKKwkJCQkJc2stPnNldEtleShrZXlTdHIsIGtleUxlbik7CisJCQkJfQorCQkJCXBhcmFtQ291bnQrKzsKKwkJCQlpZiAoaXNLRUspCisJCQkJCWtlayA9IHNrOworCQkJCWVsc2UKKwkJCQkJa2V5ID0gc2s7CisJCQl9CisKKworI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKworCQkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIlJTQSIpID09IDApIHsKKwkJCQkvLyBSU0EgcHJpdmF0ZSBrZXkgZmlsZQorCisJCQkJaWYgKHBhcmFtQ291bnQgKyAzID49IGFyZ2MpIHsKKworCQkJCQlwcmludFVzYWdlKCk7CisJCQkJCXJldHVybiAyOworCisJCQkJfQorCisJCQkJaWYgKCFpc0tFSykgeworCQkJCQljZXJyIDw8ICJSU0EgcHJpdmF0ZSBrZXlzIG1heSBvbmx5IGJlIEtFS3NcbiI7CisJCQkJCXJldHVybiAyOworCQkJCX0KKworCQkJCUJJTyAqIGJpb0tleTsKKwkJCQlpZiAoKGJpb0tleSA9IEJJT19uZXcoQklPX3NfZmlsZSgpKSkgPT0gTlVMTCkgeworCisJCQkJCWNlcnIgPDwgIkVycm9yIG9wZW5pbmcgcHJpdmF0ZSBrZXkgZmlsZVxuXG4iOworCQkJCQlyZXR1cm4gMTsKKworCQkJCX0KKworCQkJCWlmIChCSU9fcmVhZF9maWxlbmFtZShiaW9LZXksIGFyZ3ZbcGFyYW1Db3VudCArIDFdKSA8PSAwKSB7CisKKwkJCQkJY2VyciA8PCAiRXJyb3Igb3BlbmluZyBwcml2YXRlIGtleSBmaWxlXG5cbiI7CisJCQkJCXJldHVybiAxOworCisJCQkJfQorCisJCQkJRVZQX1BLRVkgKiBwa2V5OworCQkJCXBrZXkgPSBQRU1fcmVhZF9iaW9fUHJpdmF0ZUtleShiaW9LZXksTlVMTCxOVUxMLGFyZ3ZbcGFyYW1Db3VudCArIDJdKTsKKworCQkJCWlmIChwa2V5ID09IE5VTEwpIHsKKworCQkJCQljZXJyIDw8ICJFcnJvciBsb2FkaW5nIHByaXZhdGUga2V5XG5cbiI7CisJCQkJCXJldHVybiAxOworCisJCQkJfQorCisJCQkJa2VrID0gbmV3IE9wZW5TU0xDcnlwdG9LZXlSU0EocGtleSk7CisJCQkJa2VrQWxnID0gRU5DUllQVF9SU0FfMTU7CisJCQkJRVZQX1BLRVlfZnJlZShwa2V5KTsKKwkJCQlCSU9fZnJlZShiaW9LZXkpOworCQkJCXBhcmFtQ291bnQgKz0gMzsKKwkJCX0KKworCQkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIlg1MDkiKSA9PSAwKSB7CisKKwkJCQkvLyBYNTA5IGNlcnQgdXNlZCB0byBsb2FkIGFuIGVuY3J5cHRpbmcga2V5CisKKwkJCQlpZiAocGFyYW1Db3VudCArIDIgPj0gYXJnYykgeworCisJCQkJCXByaW50VXNhZ2UoKTsKKwkJCQkJZXhpdCAoMSk7CisKKwkJCQl9CisKKwkJCQlpZiAoIWlzS0VLKSB7CisJCQkJCWNlcnIgPDwgIlg1MDkgcHJpdmF0ZSBrZXlzIG1heSBvbmx5IGJlIEtFS3NcbiI7CisJCQkJCXJldHVybiAyOworCQkJCX0KKworCQkJCS8vIExvYWQgdGhlIGVuY3J5cHRpbmcga2V5CisJCQkJLy8gRm9yIG5vdyBqdXN0IHJlYWQgYSBwYXJ0aWN1bGFyIGZpbGUKKworCQkJCUJJTyAqIGJpb1g1MDk7CisKKwkJCQlpZiAoKGJpb1g1MDkgPSBCSU9fbmV3KEJJT19zX2ZpbGUoKSkpID09IE5VTEwpIHsKKworCQkJCQljZXJyIDw8ICJFcnJvciBvcGVuaW5nIGZpbGVcblxuIjsKKwkJCQkJZXhpdCAoMSk7CisKKwkJCQl9CisKKwkJCQlpZiAoQklPX3JlYWRfZmlsZW5hbWUoYmlvWDUwOSwgYXJndltwYXJhbUNvdW50ICsgMV0pIDw9IDApIHsKKworCQkJCQljZXJyIDw8ICJFcnJvciBvcGVuaW5nIFg1MDkgQ2VydGlmaWNhdGUgIiA8PCBhcmd2W3BhcmFtQ291bnQgKyAxXSA8PCAiXG5cbiI7CisJCQkJCWV4aXQgKDEpOworCisJCQkJfQorCisJCQkJWDUwOSAqIHgKKwkJCQkJOworCQkJCXggPSBQRU1fcmVhZF9iaW9fWDUwOV9BVVgoYmlvWDUwOSxOVUxMLE5VTEwsTlVMTCk7CisKKwkJCQlpZiAoeCA9PSBOVUxMKSB7CisKKwkJCQkJQklPICogYmlvX2VycjsKKwkJCQkJCisJCQkJCWlmICgoYmlvX2Vycj1CSU9fbmV3KEJJT19zX2ZpbGUoKSkpICE9IE5VTEwpCisJCQkJCQlCSU9fc2V0X2ZwKGJpb19lcnIsc3RkZXJyLEJJT19OT0NMT1NFfEJJT19GUF9URVhUKTsKKworCQkJCQljZXJyIDw8ICJFcnJvciBsb2FkaW5nIGNlcnRpZmljYXRlIGtleVxuXG4iOworCQkJCQlFUlJfcHJpbnRfZXJyb3JzKGJpb19lcnIpOworCQkJCQlCSU9fZnJlZShiaW9fZXJyKTsKKwkJCQkJZXhpdCAoMSk7CisKKwkJCQl9CisKKwkJCQkvLyBOb3cgbG9hZCB0aGUga2V5CisJCQkJRVZQX1BLRVkgKnBrZXk7CisKKwkJCQlwa2V5ID0gWDUwOV9nZXRfcHVia2V5KHgpOworCisJCQkJaWYgKHBrZXkgPT0gTlVMTCB8fCBwa2V5LT50eXBlICE9IEVWUF9QS0VZX1JTQSkgeworCQkJCQljZXJyIDw8ICJFcnJvciBleHRyYWN0aW5nIFJTQSBrZXkgZnJvbSBjZXJ0aWZpY2F0ZSIgPDwgZW5kbDsKKwkJCQl9CisKKwkJCQlrZWsgPSBuZXcgT3BlblNTTENyeXB0b0tleVJTQShwa2V5KTsKKwkJCQlrZWtBbGcgPSBFTkNSWVBUX1JTQV8xNTsKKworCQkJCS8vIENsZWFuIHVwCisKKwkJCQlFVlBfUEtFWV9mcmVlIChwa2V5KTsKKwkJCQlYNTA5X2ZyZWUoeCk7CisJCQkJQklPX2ZyZWUoYmlvWDUwOSk7CisKKwkJCQlwYXJhbUNvdW50ICs9IDI7CisJCQkJCisJCQl9IC8qIGFyZ3ZbMV0gPSAiLS14NTA5Y2VydCIgKi8KKyNlbmRpZiAvKiBIQVZFX09QRU5TU0wgKi8KKwkJCWVsc2UgeworCQkJCXByaW50VXNhZ2UoKTsKKwkJCQlyZXR1cm4gMjsKKwkJCX0KKwkJfQorCisJCWVsc2UgeworCQkJY2VyciA8PCAiVW5rbm93biBvcHRpb246ICIgPDwgYXJndltwYXJhbUNvdW50XSA8PCBlbmRsOworCQkJcHJpbnRVc2FnZSgpOworCQkJcmV0dXJuIDI7CisJCX0KKwl9CisKKwlpZiAocGFyYW1Db3VudCA+PSBhcmdjKSB7CisJCXByaW50VXNhZ2UoKTsKKwkJcmV0dXJuIDI7CisJfQorCisJaWYgKG91dGZpbGUgIT0gTlVMTCkgeworCQlmb3JtYXRUYXJnZXQgPSBuZXcgTG9jYWxGaWxlRm9ybWF0VGFyZ2V0KG91dGZpbGUpOworCX0KKwllbHNlIHsKKwkJZm9ybWF0VGFyZ2V0ID0gbmV3IFN0ZE91dEZvcm1hdFRhcmdldCgpOworCX0KKworCWZpbGVuYW1lID0gYXJndltwYXJhbUNvdW50XTsKKworCWlmIChwYXJzZVhNTElucHV0KSB7CisKKwkJWGVyY2VzRE9NUGFyc2VyICogcGFyc2VyID0gbmV3IFhlcmNlc0RPTVBhcnNlcjsKKwkJSmFuaXRvcjxYZXJjZXNET01QYXJzZXI+IGpfcGFyc2VyKHBhcnNlcik7CisJCQorCQlwYXJzZXItPnNldERvTmFtZXNwYWNlcyh0cnVlKTsKKwkJcGFyc2VyLT5zZXRDcmVhdGVFbnRpdHlSZWZlcmVuY2VOb2Rlcyh0cnVlKTsKKworCQkvLyBOb3cgcGFyc2Ugb3V0IGZpbGUKKworCQl4c2Vjc2l6ZV90IGVycm9yQ291bnQgPSAwOworCQl0cnkKKwkJeworICAgIAkJcGFyc2VyLT5wYXJzZShmaWxlbmFtZSk7CisJCQllcnJvckNvdW50ID0gcGFyc2VyLT5nZXRFcnJvckNvdW50KCk7CisJCQlpZiAoZXJyb3JDb3VudCA+IDApCisJCQkJZXJyb3JzT2NjdXJlZCA9IHRydWU7CisJCX0KKworCQljYXRjaCAoY29uc3QgWE1MRXhjZXB0aW9uJiBlKQorCQl7CisJCQljZXJyIDw8ICJBbiBlcnJvciBvY2N1cmVkIGR1cmluZyBwYXJzaW5nXG4gICBNZXNzYWdlOiAiCisJCQkJIDw8IGUuZ2V0TWVzc2FnZSgpIDw8IGVuZGw7CisJCQllcnJvcnNPY2N1cmVkID0gdHJ1ZTsKKwkJfQorCisKKwkJY2F0Y2ggKGNvbnN0IERPTUV4Y2VwdGlvbiYgZSkKKwkJeworCQkgICBjZXJyIDw8ICJBIERPTSBlcnJvciBvY2N1cmVkIGR1cmluZyBwYXJzaW5nXG4gICBET01FeGNlcHRpb24gY29kZTogIgorCQkJCSA8PCBlLmNvZGUgPDwgZW5kbDsKKwkJCWVycm9yc09jY3VyZWQgPSB0cnVlOworCQl9CisKKwkJaWYgKGVycm9yc09jY3VyZWQpIHsKKworCQkJY291dCA8PCAiRXJyb3JzIGR1cmluZyBwYXJzZSIgPDwgZW5kbDsKKwkJCXJldHVybiAoMik7CisKKwkJfQorCisJCS8qCisKKwkJCU5vdyB0aGF0IHdlIGhhdmUgdGhlIHBhcnNlZCBmaWxlLCBnZXQgdGhlIERPTSBkb2N1bWVudCBhbmQgc3RhcnQgbG9va2luZyBhdCBpdAorCisJCSovCisJCQorCQlkb2MgPSBwYXJzZXItPmFkb3B0RG9jdW1lbnQoKTsKKwl9CisKKwllbHNlIHsKKwkJLy8gQ3JlYXRlIGFuIGVtcHR5IGRvY3VtZW50CisJCVhNTENoIHRlbXBTdHJbMTAwXTsKKwkJWE1MU3RyaW5nOjp0cmFuc2NvZGUoIkNvcmUiLCB0ZW1wU3RyLCA5OSk7ICAgIAorCQlET01JbXBsZW1lbnRhdGlvbiAqaW1wbCA9IERPTUltcGxlbWVudGF0aW9uUmVnaXN0cnk6OmdldERPTUltcGxlbWVudGF0aW9uKHRlbXBTdHIpOworCQlkb2MgPSBpbXBsLT5jcmVhdGVEb2N1bWVudCgKKwkJCTAsICAgICAgICAgICAgICAgICAgICAvLyByb290IGVsZW1lbnQgbmFtZXNwYWNlIFVSSS4KKwkJCU1BS0VfVU5JQ09ERV9TVFJJTkcoIkFEb2MiKSwgICAgICAgICAgICAvLyByb290IGVsZW1lbnQgbmFtZQorCQkJTlVMTCk7Ly8gRE9NRG9jdW1lbnRUeXBlKCkpOyAgLy8gZG9jdW1lbnQgdHlwZSBvYmplY3QgKERURCkuCisJfQorCisKKwlYU0VDUHJvdmlkZXIgcHJvdjsKKwlYRU5DQ2lwaGVyICogY2lwaGVyID0gcHJvdi5uZXdDaXBoZXIoZG9jKTsKKworCWlmIChrZWsgIT0gTlVMTCkKKwkJY2lwaGVyLT5zZXRLRUsoa2VrKTsKKwlpZiAoa2V5ICE9IE5VTEwpCisJCWNpcGhlci0+c2V0S2V5KGtleSk7CisKKwl0cnkgeworCisJCWlmIChkb0RlY3J5cHQpIHsKKworCQkJaWYgKHVzZUludGVyb3BSZXNvbHZlciA9PSB0cnVlKSB7CisKKwkJCQkvLyBNYXAgb3V0IGJhc2UgcGF0aCBvZiB0aGUgZmlsZQorCQkJCWNoYXIgcGF0aFtfTUFYX1BBVEhdOworCQkJCWNoYXIgYmFzZVVSSVsoX01BWF9QQVRIICogMikgKyAxMF07CisJCQkJX2dldGN3ZChwYXRoLCBfTUFYX1BBVEgpOworCisJCQkJc3RyY3B5KGJhc2VVUkksICJmaWxlOi8vLyIpOwkJCisKKwkJCQkvLyBVZ2x5IGFuZCBuYXN0eSBidXQgcXVpY2sKKwkJCQlpZiAoZmlsZW5hbWVbMF0gIT0gJ1xcJyAmJiBmaWxlbmFtZVswXSAhPSAnLycgJiYgZmlsZW5hbWVbMV0gIT0gJzonKSB7CisJCQkJCXN0cmNhdChiYXNlVVJJLCBwYXRoKTsKKwkJCQkJc3RyY2F0KGJhc2VVUkksICIvIik7CisJCQkJfSBlbHNlIGlmIChwYXRoWzFdID09ICc6JykgeworCQkJCQlwYXRoWzJdID0gJ1wwJzsKKwkJCQkJc3RyY2F0KGJhc2VVUkksIHBhdGgpOworCQkJCX0KKworCQkJCXN0cmNhdChiYXNlVVJJLCBmaWxlbmFtZSk7CisKKwkJCQkvLyBGaW5kIGFueSAnOicgYW5kICJcIiBjaGFyYWN0ZXJzCisJCQkJaW50IGxhc3RTbGFzaCA9IDA7CisJCQkJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDg7IGkgPCBzdHJsZW4oYmFzZVVSSSk7ICsraSkgeworCQkJCQlpZiAoYmFzZVVSSVtpXSA9PSAnXFwnKSB7CisJCQkJCQlsYXN0U2xhc2ggPSBpOworCQkJCQkJYmFzZVVSSVtpXSA9ICcvJzsKKwkJCQkJfQorCQkJCQllbHNlIGlmIChiYXNlVVJJW2ldID09ICcvJykKKwkJCQkJCWxhc3RTbGFzaCA9IGk7CisJCQkJfQorCisJCQkJLy8gVGhlIGxhc3QgIlxcIiBtdXN0IHByZWZpeCB0aGUgZmlsZW5hbWUKKwkJCQliYXNlVVJJW2xhc3RTbGFzaCArIDFdID0gJ1wwJzsKKworCQkJCVhNTENoICogdXJpVCA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKGJhc2VVUkkpOworCisJCQkJWGVuY0ludGVyb3BSZXNvbHZlciBpcmVzKGRvYywgJih1cmlUWzhdKSk7CisJCQkJWFNFQ19SRUxFQVNFX1hNTENIKHVyaVQpOworCQkJCWNpcGhlci0+c2V0S2V5SW5mb1Jlc29sdmVyKCZpcmVzKTsKKworCQkJfQorCQkJLy8gRmluZCB0aGUgRW5jcnlwdGVkRGF0YSBub2RlCisJCQlET01Ob2RlICogbiA9IGZpbmRYRU5DTm9kZShkb2MsICJFbmNyeXB0ZWREYXRhIik7CisKKwkJCWlmIChkb0RlY3J5cHRFbGVtZW50KSB7CisJCQkJd2hpbGUgKG4gIT0gTlVMTCkgeworCisJCQkJCS8vIGRlY3J5cHQKKwkJCQkJY2lwaGVyLT5kZWNyeXB0RWxlbWVudChzdGF0aWNfY2FzdDxET01FbGVtZW50ICo+KG4pKTsKKworCQkJCQkvLyBGaW5kIHRoZSBuZXh0IEVuY3J5cHRlZERhdGEgbm9kZQorCQkJCQluID0gZmluZFhFTkNOb2RlKGRvYywgIkVuY3J5cHRlZERhdGEiKTsKKwkJCQl9CisKKwkJCX0KKwkJCWVsc2UgeworCQkJCVhTRUNCaW5UWEZNSW5wdXRTdHJlYW0gKiBiaXMgPSBjaXBoZXItPmRlY3J5cHRUb0JpbklucHV0U3RyZWFtKHN0YXRpY19jYXN0PERPTUVsZW1lbnQgKj4obikpOworCQkJCUphbml0b3I8WFNFQ0JpblRYRk1JbnB1dFN0cmVhbT4gal9iaXMoYmlzKTsKKwkKKwkJCQlYTUxCeXRlIGJ1ZlsxMDI0XTsJCQkKKwkJCQl4c2Vjc2l6ZV90IHJlYWQgPSBiaXMtPnJlYWRCeXRlcyhidWYsIDEwMjMpOworCQkJCXdoaWxlIChyZWFkID4gMCkgeworCQkJCQlmb3JtYXRUYXJnZXQtPndyaXRlQ2hhcnMoYnVmLCByZWFkLCBOVUxMKTsKKwkJCQkJcmVhZCA9IGJpcy0+cmVhZEJ5dGVzKGJ1ZiwgMTAyMyk7CisJCQkJfQorCQkJfQorCQl9CisJCWVsc2UgeworCisJCQlYRU5DRW5jcnlwdGVkRGF0YSAqeGVuYyA9IE5VTEw7CisKKwkJCS8vIEVuY3J5cHRpbmcKKwkJCWlmIChrZWsgIT0gTlVMTCAmJiBrZXkgPT0gTlVMTCkgeworCQkJCVhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5nZXRSYW5kb20oa2V5QnVmLCAyNCk7CisJCQkJWFNFQ0NyeXB0b1N5bW1ldHJpY0tleSAqIGsgPSAKKwkJCQkJWFNFQ1BsYXRmb3JtVXRpbHM6OmdfY3J5cHRvUHJvdmlkZXItPmtleVN5bW1ldHJpYyhYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfM0RFU18xOTIpOworCQkJCWstPnNldEtleShrZXlCdWYsIDI0KTsKKwkJCQljaXBoZXItPnNldEtleShrKTsKKwkJCQlrZXlBbGcgPSBFTkNSWVBUXzNERVNfQ0JDOworCQkJCWtleVN0ciA9IGtleUJ1ZjsKKwkJCQlrZXlMZW4gPSAyNDsKKwkJCX0KKworCQkJaWYgKGVuY3J5cHRGaWxlQXNEYXRhKSB7CisKKwkJCQkvLyBDcmVhdGUgYSBCaW5JbnB1dFN0cmVhbQorI2lmIGRlZmluZWQoWFNFQ19YRVJDRVNfUkVRVUlSRVNfTUVNTUdSKQorCQkJCUJpbkZpbGVJbnB1dFN0cmVhbSAqIGlzID0gbmV3IEJpbkZpbGVJbnB1dFN0cmVhbShmaWxlbmFtZSwgWE1MUGxhdGZvcm1VdGlsczo6ZmdNZW1vcnlNYW5hZ2VyKTsKKyNlbHNlCisJCQkJQmluRmlsZUlucHV0U3RyZWFtICogaXMgPSBuZXcgQmluRmlsZUlucHV0U3RyZWFtKGZpbGVuYW1lKTsKKyNlbmRpZgorCQkJCXhlbmMgPSBjaXBoZXItPmVuY3J5cHRCaW5JbnB1dFN0cmVhbShpcywga2V5QWxnKTsKKworCQkJCS8vIFJlcGxhY2UgdGhlIGRvY3VtZW50IGVsZW1lbnQKKwkJCQlET01FbGVtZW50ICogZWx0ID0gZG9jLT5nZXREb2N1bWVudEVsZW1lbnQoKTsKKwkJCQlkb2MtPnJlcGxhY2VDaGlsZCh4ZW5jLT5nZXRFbGVtZW50KCksIGVsdCk7CisJCQkJZWx0LT5yZWxlYXNlKCk7CisJCQl9CisJCQllbHNlIHsKKwkJCQkvLyBEb2N1bWVudCBlbmNyeXB0aW9uCisJCQkJY2lwaGVyLT5lbmNyeXB0RWxlbWVudChkb2MtPmdldERvY3VtZW50RWxlbWVudCgpLCBrZXlBbGcpOworCQkJfQorCisJCQkvLyBEbyB3ZSBlbmNyeXB0IGEgY3JlYXRlZCBrZXk/CisJCQlpZiAoa2VrICE9IE5VTEwpIHsKKwkJCQlYRU5DRW5jcnlwdGVkS2V5ICp4a2V5ID0gY2lwaGVyLT5lbmNyeXB0S2V5KGtleVN0ciwga2V5TGVuLCBrZWtBbGcpOworCQkJCS8vIEFkZCB0byB0aGUgRW5jcnlwdGVkRGF0YQorCQkJCXhlbmMtPmFwcGVuZEVuY3J5cHRlZEtleSh4a2V5KTsKKwkJCX0KKwkJfQorCisJCWlmIChkb1hNTE91dHB1dCkgeworCQkJLy8gT3V0cHV0IHRoZSByZXN1bHQKKworCQkJWE1MQ2ggY29yZVtdID0geworCQkJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBjaExhdGluX0MsCisJCQkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoTGF0aW5fbywKKwkJCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgY2hMYXRpbl9yLAorCQkJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBjaExhdGluX2UsCisJCQkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoTnVsbAorCQkJfTsKKworICAgICAgICAgICAgRE9NSW1wbGVtZW50YXRpb24gKmltcGwgPSBET01JbXBsZW1lbnRhdGlvblJlZ2lzdHJ5OjpnZXRET01JbXBsZW1lbnRhdGlvbihjb3JlKTsKKworI2lmIGRlZmluZWQgKFhTRUNfWEVSQ0VTX0RPTUxTU0VSSUFMSVpFUikKKyAgICAgICAgICAgIC8vIERPTSBMMyB2ZXJzaW9uIGFzIHBlciBYZXJjZXMgMy4wIEFQSQorICAgICAgICAgICAgRE9NTFNTZXJpYWxpemVyICAgKnRoZVNlcmlhbGl6ZXIgPSAoKERPTUltcGxlbWVudGF0aW9uTFMqKWltcGwpLT5jcmVhdGVMU1NlcmlhbGl6ZXIoKTsKKyAgICAgICAgICAgIEphbml0b3I8RE9NTFNTZXJpYWxpemVyPiBqX3RoZVNlcmlhbGl6ZXIodGhlU2VyaWFsaXplcik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEdldCB0aGUgY29uZmlnIHNvIHdlIGNhbiBzZXQgdXAgcHJldHR5IHByaW50aW5nCisgICAgICAgICAgICBET01Db25maWd1cmF0aW9uICpkYyA9IHRoZVNlcmlhbGl6ZXItPmdldERvbUNvbmZpZygpOworICAgICAgICAgICAgZGMtPnNldFBhcmFtZXRlcihYTUxVbmk6OmZnRE9NV1JURm9ybWF0UHJldHR5UHJpbnQsIGZhbHNlKTsKKworICAgICAgICAgICAgLy8gTm93IGNyZWF0ZSBhbiBvdXRwdXQgb2JqZWN0IHRvIGZvcm1hdCB0byBVVEYtOAorICAgICAgICAgICAgRE9NTFNPdXRwdXQgKnRoZU91dHB1dCA9ICgoRE9NSW1wbGVtZW50YXRpb25MUyopaW1wbCktPmNyZWF0ZUxTT3V0cHV0KCk7CisgICAgICAgICAgICBKYW5pdG9yPERPTUxTT3V0cHV0PiBqX3RoZU91dHB1dCh0aGVPdXRwdXQpOworCisgICAgICAgICAgICB0aGVPdXRwdXQtPnNldEVuY29kaW5nKE1BS0VfVU5JQ09ERV9TVFJJTkcoIlVURi04IikpOworICAgICAgICAgICAgdGhlT3V0cHV0LT5zZXRCeXRlU3RyZWFtKGZvcm1hdFRhcmdldCk7CisKKyAgICAgICAgICAgIHRoZVNlcmlhbGl6ZXItPndyaXRlKGRvYywgdGhlT3V0cHV0KTsKKworI2Vsc2UJCQkKKwkJCURPTVdyaXRlciAgICAgICAgICp0aGVTZXJpYWxpemVyID0gKChET01JbXBsZW1lbnRhdGlvbkxTKilpbXBsKS0+Y3JlYXRlRE9NV3JpdGVyKCk7CisJCQlKYW5pdG9yPERPTVdyaXRlcj4gal90aGVTZXJpYWxpemVyKHRoZVNlcmlhbGl6ZXIpOworCisJCQl0aGVTZXJpYWxpemVyLT5zZXRFbmNvZGluZyhNQUtFX1VOSUNPREVfU1RSSU5HKCJVVEYtOCIpKTsKKwkJCWlmICh0aGVTZXJpYWxpemVyLT5jYW5TZXRGZWF0dXJlKFhNTFVuaTo6ZmdET01XUlRGb3JtYXRQcmV0dHlQcmludCwgZmFsc2UpKQorCQkJCXRoZVNlcmlhbGl6ZXItPnNldEZlYXR1cmUoWE1MVW5pOjpmZ0RPTVdSVEZvcm1hdFByZXR0eVByaW50LCBmYWxzZSk7CisKKwkJCXRoZVNlcmlhbGl6ZXItPndyaXRlTm9kZShmb3JtYXRUYXJnZXQsICpkb2MpOworI2VuZGlmCQorCQkJY291dCA8PCBlbmRsOworCisJCX0KKwl9CisKKwljYXRjaCAoWFNFQ0V4Y2VwdGlvbiAmZSkgeworCQljaGFyICogbXNnID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoZS5nZXRNc2coKSk7CisJCWNlcnIgPDwgIkFuIGVycm9yIG9jY3VyZWQgZHVyaW5nIGVuY3J5cHRpb24vZGVjcnlwdGlvbiBvcGVyYXRpb25cbiAgIE1lc3NhZ2U6ICIKKwkJPDwgbXNnIDw8IGVuZGw7CisJCVhTRUNfUkVMRUFTRV9YTUxDSChtc2cpOworCQllcnJvcnNPY2N1cmVkID0gdHJ1ZTsKKwkJaWYgKGZvcm1hdFRhcmdldCAhPSBOVUxMKQorCQkJZGVsZXRlIGZvcm1hdFRhcmdldDsKKwkJZG9jLT5yZWxlYXNlKCk7CisJCXJldHVybiAyOworCX0KKwljYXRjaCAoWFNFQ0NyeXB0b0V4Y2VwdGlvbiAmZSkgeworCQljZXJyIDw8ICJBbiBlcnJvciBvY2N1cmVkIGR1cmluZyBlbmNyeXB0aW9uL2RlY3J5cHRpb24gb3BlcmF0aW9uXG4gICBNZXNzYWdlOiAiCisJCTw8IGUuZ2V0TXNnKCkgPDwgZW5kbDsKKwkJZXJyb3JzT2NjdXJlZCA9IHRydWU7CisJCWlmIChmb3JtYXRUYXJnZXQgIT0gTlVMTCkKKwkJCWRlbGV0ZSBmb3JtYXRUYXJnZXQ7CisJCWRvYy0+cmVsZWFzZSgpOworCisjaWYgZGVmaW5lZCAoSEFWRV9PUEVOU1NMKQorCQlFUlJfbG9hZF9jcnlwdG9fc3RyaW5ncygpOworCQlCSU8gKiBiaW9fZXJyOworCQlpZiAoKGJpb19lcnI9QklPX25ldyhCSU9fc19maWxlKCkpKSAhPSBOVUxMKQorCQkJQklPX3NldF9mcChiaW9fZXJyLHN0ZGVycixCSU9fTk9DTE9TRXxCSU9fRlBfVEVYVCk7CisKKwkJRVJSX3ByaW50X2Vycm9ycyhiaW9fZXJyKTsKKyNlbmRpZgorCQlyZXR1cm4gMjsKKwl9CisJCisJaWYgKGZvcm1hdFRhcmdldCAhPSBOVUxMKQorCQlkZWxldGUgZm9ybWF0VGFyZ2V0OworCisJZG9jLT5yZWxlYXNlKCk7CisJcmV0dXJuIDA7Cit9CisKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisKKwlpbnQgcmV0UmVzdWx0OworCisjaWYgZGVmaW5lZCAoX0RFQlVHKSAmJiBkZWZpbmVkIChfTVNDX1ZFUikKKworCS8vIERvIHNvbWUgbWVtb3J5IGRlYnVnZ2luZyB1bmRlciBWaXN1YWwgQysrCisKKwlfQ3J0TWVtU3RhdGUgczEsIHMyLCBzMzsKKworCS8vIEF0IHRoaXMgcG9pbnQgd2UgYXJlIGFib3V0IHRvIHN0YXJ0IHJlYWxseSB1c2luZyBYU0VDLCBzbworCS8vIFRha2UgYSAiYmVmb3JlIiBjaGVja3BvaW5nCisKKwlfQ3J0TWVtQ2hlY2twb2ludCggJnMxICk7CisKKyNlbmRpZgorCisJLy8gSW5pdGlhbGlzZSB0aGUgWE1MIHN5c3RlbQorCisJdHJ5IHsKKworCQlYTUxQbGF0Zm9ybVV0aWxzOjpJbml0aWFsaXplKCk7CisjaWZuZGVmIFhTRUNfTk9fWEFMQU4KKwkJWFBhdGhFdmFsdWF0b3I6OmluaXRpYWxpemUoKTsKKwkJWGFsYW5UcmFuc2Zvcm1lcjo6aW5pdGlhbGl6ZSgpOworI2VuZGlmCisJCVhTRUNQbGF0Zm9ybVV0aWxzOjpJbml0aWFsaXNlKCk7CisKKwl9CisJY2F0Y2ggKGNvbnN0IFhNTEV4Y2VwdGlvbiAmZSkgeworCisJCWNlcnIgPDwgIkVycm9yIGR1cmluZyBpbml0aWFsaXNhdGlvbiBvZiBYZXJjZXMiIDw8IGVuZGw7CisJCWNlcnIgPDwgIkVycm9yIE1lc3NhZ2UgPSA6ICIKKwkJICAgICA8PCBlLmdldE1lc3NhZ2UoKSA8PCBlbmRsOworCisJfQorCisJcmV0UmVzdWx0ID0gZXZhbHVhdGUoYXJnYywgYXJndik7CisKKwlYU0VDUGxhdGZvcm1VdGlsczo6VGVybWluYXRlKCk7CisjaWZuZGVmIFhTRUNfTk9fWEFMQU4KKwlYYWxhblRyYW5zZm9ybWVyOjp0ZXJtaW5hdGUoKTsKKwlYUGF0aEV2YWx1YXRvcjo6dGVybWluYXRlKCk7CisjZW5kaWYKKwlYTUxQbGF0Zm9ybVV0aWxzOjpUZXJtaW5hdGUoKTsKKworI2lmIGRlZmluZWQgKF9ERUJVRykgJiYgZGVmaW5lZCAoX01TQ19WRVIpCisKKwlfQ3J0TWVtQ2hlY2twb2ludCggJnMyICk7CisKKwlpZiAoIF9DcnRNZW1EaWZmZXJlbmNlKCAmczMsICZzMSwgJnMyICkgJiYgKAorCQlzMy5sQ291bnRzWzBdID4gMCB8fAorCQlzMy5sQ291bnRzWzFdID4gMSB8fAorCQkvLyBzMy5sQ291bnRzWzJdID4gMiB8fCAgV2UgZG9uJ3Qgd29ycnkgYWJvdXQgQyBSdW50aW1lCisJCXMzLmxDb3VudHNbM10gPiAwIHx8CisJCXMzLmxDb3VudHNbNF0gPiAwKSkgeworCisJCS8vIE5vdGUgdGhhdCB0aGVyZSBpcyBnZW5lcmFsbHkgMSBOb3JtYWwgYW5kIDEgQ1JUIGJsb2NrCisJCS8vIHN0aWxsIHRha2VuLiAgMSBpcyBmcm9tIFhhbGFuIGFuZCAxIGZyb20gc3RkaW8KKworCQkvLyBTZW5kIGFsbCByZXBvcnRzIHRvIFNURE9VVAorCQlfQ3J0U2V0UmVwb3J0TW9kZSggX0NSVF9XQVJOLCBfQ1JUREJHX01PREVfRklMRSApOworCQlfQ3J0U2V0UmVwb3J0RmlsZSggX0NSVF9XQVJOLCBfQ1JUREJHX0ZJTEVfU1RET1VUICk7CisJCV9DcnRTZXRSZXBvcnRNb2RlKCBfQ1JUX0VSUk9SLCBfQ1JUREJHX01PREVfRklMRSApOworCQlfQ3J0U2V0UmVwb3J0RmlsZSggX0NSVF9FUlJPUiwgX0NSVERCR19GSUxFX1NURE9VVCApOworCQlfQ3J0U2V0UmVwb3J0TW9kZSggX0NSVF9BU1NFUlQsIF9DUlREQkdfTU9ERV9GSUxFICk7CisJCV9DcnRTZXRSZXBvcnRGaWxlKCBfQ1JUX0FTU0VSVCwgX0NSVERCR19GSUxFX1NURE9VVCApOworCisJCS8vIER1bXB5IG1lbW9yeSBzdGF0cworCisgCQlfQ3J0TWVtRHVtcEFsbE9iamVjdHNTaW5jZSggJnMzICk7CisJICAgIF9DcnRNZW1EdW1wU3RhdGlzdGljcyggJnMzICk7CisJfQorCisJLy8gTm93IHR1cm4gb2ZmIG1lbW9yeSBsZWFrIGNoZWNraW5nIGFuZCBlbmQgYXMgdGhlcmUgYXJlIHNvbWUgCisJLy8gR2xvYmFscyB0aGF0IGFyZSBhbGxvY2F0ZWQgdGhhdCBnZXQgc2VlbiBhcyBsZWFrcyAoWGFsYW4/KQorCisJaW50IGRiZ0ZsYWcgPSBfQ3J0U2V0RGJnRmxhZyhfQ1JUREJHX1JFUE9SVF9GTEFHKTsKKwlkYmdGbGFnICY9IH4oX0NSVERCR19MRUFLX0NIRUNLX0RGKTsKKwlfQ3J0U2V0RGJnRmxhZyggZGJnRmxhZyApOworCisjZW5kaWYKKworCXJldHVybiByZXRSZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9jL3NyYy90b29scy9zaWdpbmYvc2lnaW5mLmNwcCBiL2Mvc3JjL3Rvb2xzL3NpZ2luZi9zaWdpbmYuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNTg5MjIKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy90b29scy9zaWdpbmYvc2lnaW5mLmNwcApAQCAtMCwwICsxLDYwNSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogc2lnaW5mIDo9IE91dHB1dCBpbmZvcm1hdGlvbiBhYm91dCBhIHNpZ25hdHVyZSBmb3VuZCBpbiBhbiBYTUwgZmlsZQorICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworLy8gWFNFQworCisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDUGxhdGZvcm1VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ1Byb3ZpZGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2Nhbm9uL1hTRUNDMTRuMjAwMTAzMTUuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHU2lnbmF0dXJlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1JlZmVyZW5jZS5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0V4Y2VwdGlvbi5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b0V4Y2VwdGlvbi5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDRE9NVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNLZXlJbmZvUmVzb2x2ZXJEZWZhdWx0LmhwcD4KKworI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHVHJhbnNmb3JtQzE0bi5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdUcmFuc2Zvcm1CYXNlNjQuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHVHJhbnNmb3JtWFNMLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1RyYW5zZm9ybVhQYXRoLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1hQYXRoRmlsdGVyRXhwci5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdUcmFuc2Zvcm1FbnZlbG9wZS5ocHA+CisKKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1RyYW5zZm9ybUxpc3QuaHBwPgorCisvLyBHZW5lcmFsCisKKyNpbmNsdWRlIDxtZW1vcnkuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2lmIGRlZmluZWQgKF9ERUJVRykgJiYgZGVmaW5lZCAoX01TQ19WRVIpCisjaW5jbHVkZSA8Y3J0ZGJnLmg+CisjZW5kaWYKKworCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1BsYXRmb3JtVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxTdHJpbmcuaHBwPgorCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3BhcnNlcnMvWGVyY2VzRE9NUGFyc2VyLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MRXhjZXB0aW9uLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MVXJpLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvSmFuaXRvci5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCit1c2luZyBzdGQ6OmNlcnI7Cit1c2luZyBzdGQ6OmNvdXQ7Cit1c2luZyBzdGQ6OmVuZGw7Cit1c2luZyBzdGQ6Om9zdHJlYW07CisKKyNpZm5kZWYgWFNFQ19OT19YQUxBTgorCisvLyBYQUxBTgorCisjaW5jbHVkZSA8eGFsYW5jL1hQYXRoL1hQYXRoRXZhbHVhdG9yLmhwcD4KKyNpbmNsdWRlIDx4YWxhbmMvWGFsYW5UcmFuc2Zvcm1lci9YYWxhblRyYW5zZm9ybWVyLmhwcD4KKworWEFMQU5fVVNJTkdfWEFMQU4oWFBhdGhFdmFsdWF0b3IpCitYQUxBTl9VU0lOR19YQUxBTihYYWxhblRyYW5zZm9ybWVyKQorCisjZW5kaWYKKworI2lmZGVmIFhTRUNfTk9fWEFMQU4KKworb3N0cmVhbSYgb3BlcmF0b3I8PCAob3N0cmVhbSYgdGFyZ2V0LCBjb25zdCBYTUxDaCAqIHMpCit7CisgICAgY2hhciAqcCA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKHMpOworICAgIHRhcmdldCA8PCBwOworICAgIFhTRUNfUkVMRUFTRV9YTUxDSChwKTsKKyAgICByZXR1cm4gdGFyZ2V0OworfQorCisjZW5kaWYKKworY2xhc3MgWDJDIHsKKworcHVibGljOgorCisJWDJDKGNvbnN0IFhNTENoICogaW4pIHsKKwkJbXBfY1N0ciA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKGluKTsKKwl9CisJflgyQygpIHsKKwkJWFNFQ19SRUxFQVNFX1hNTENIKG1wX2NTdHIpOworCX0KKworCWNoYXIgKiBzdHIodm9pZCkgeworCQlyZXR1cm4gbXBfY1N0cjsKKwl9CisKK3ByaXZhdGUgOgorCisJY2hhciAqIG1wX2NTdHI7CisKK307CisKK29zdHJlYW0gJiBvcGVyYXRvcjw8KG9zdHJlYW0mIHRhcmdldCwgWDJDICZ4KSB7CisJdGFyZ2V0IDw8IHguc3RyKCk7CisJcmV0dXJuIHRhcmdldDsKK30KKworaW5saW5lCit2b2lkIGxldmVsU2V0KGludCBsZXZlbCkgeworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBsZXZlbDsgKytpKQorCQljb3V0IDw8ICIgICAgIjsKKworfQorCit2b2lkIG91dHB1dFRyYW5zZm9ybShEU0lHVHJhbnNmb3JtICogdCwgaW50IGxldmVsKSB7CisKKwlzd2l0Y2ggKHQtPmdldFRyYW5zZm9ybVR5cGUoKSkgeworCisJY2FzZSAoVFJBTlNGT1JNX0JBU0U2NCkgOgorCisJCWNvdXQgPDwgIkJhc2U2NCBEZWNvZGUiIDw8IGVuZGw7CisJCXJldHVybjsKKworCWNhc2UgKFRSQU5TRk9STV9DMTROKSA6IAorCQljb3V0IDw8ICJjMTRuIDEuMCBjYW5vbmljYWxpc2F0aW9uICI7CisJCWlmICgoKERTSUdUcmFuc2Zvcm1DMTRuICopIHQpLT5nZXRDYW5vbmljYWxpemF0aW9uTWV0aG9kKCkgPT0gQ0FOT05fQzE0Tl9OT0MpCisJCQljb3V0IDw8ICIod2l0aG91dCBjb21tZW50cykiIDw8IGVuZGw7CisJCWVsc2UKKwkJCWNvdXQgPDwgIih3aXRoIGNvbW1lbnRzKSIgPDwgZW5kbDsKKwkJcmV0dXJuOworCisJY2FzZSAoVFJBTlNGT1JNX0MxNE4xMSkgOiAKKwkJY291dCA8PCAiYzE0biAxLjEgY2Fub25pY2FsaXNhdGlvbiAiOworCQlpZiAoKChEU0lHVHJhbnNmb3JtQzE0biAqKSB0KS0+Z2V0Q2Fub25pY2FsaXphdGlvbk1ldGhvZCgpID09IENBTk9OX0MxNE4xMV9OT0MpCisJCQljb3V0IDw8ICIod2l0aG91dCBjb21tZW50cykiIDw8IGVuZGw7CisJCWVsc2UKKwkJCWNvdXQgPDwgIih3aXRoIGNvbW1lbnRzKSIgPDwgZW5kbDsKKwkJcmV0dXJuOworCisgICAgY2FzZSAoVFJBTlNGT1JNX0VYQ19DMTROKSA6CisKKwkJY291dCA8PCAiRXhjbHVzaXZlIGMxNG4gMS4wIGNhbm9uaWNhbGlzYXRpb24gIjsKKwkJaWYgKCgoRFNJR1RyYW5zZm9ybUMxNG4gKikgdCktPmdldENhbm9uaWNhbGl6YXRpb25NZXRob2QoKSA9PSBDQU5PTl9DMTRORV9OT0MpCisJCQljb3V0IDw8ICIod2l0aG91dCBjb21tZW50cykiIDw8IGVuZGw7CisJCWVsc2UKKwkJCWNvdXQgPDwgIih3aXRoIGNvbW1lbnRzKSIgPDwgZW5kbDsKKworCQkvLyBDaGVjayBmb3IgaW5jbHVzaXZlIG5hbWVzcGFjZXMKKworCQlpZiAoKChEU0lHVHJhbnNmb3JtQzE0biAqKSB0KS0+Z2V0UHJlZml4TGlzdCgpICE9IE5VTEwpIHsKKwkJCWxldmVsU2V0KGxldmVsKTsKKwkJCWNvdXQgPDwgIkluY2x1c2l2ZSBwcmVmaXhlcyA6ICIgPDwgCisJCQkJWDJDKCgoRFNJR1RyYW5zZm9ybUMxNG4gKikgdCktPmdldFByZWZpeExpc3QoKSkuc3RyKCkgPDwgZW5kbDsKKwkJfQorCQlyZXR1cm47CisKKwljYXNlIChUUkFOU0ZPUk1fRU5WRUxPUEVEX1NJR05BVFVSRSkgOgorCisJCWNvdXQgPDwgImVudmVsb3BlZCBzaWduYXR1cmUiIDw8IGVuZGw7CisJCXJldHVybjsKKworCWNhc2UgKFRSQU5TRk9STV9YUEFUSCkgOgorCQl7CisJCQlEU0lHVHJhbnNmb3JtWFBhdGggKiB4cCA9IChEU0lHVHJhbnNmb3JtWFBhdGggKikgdDsKKwkJCQorCQkJY291dCA8PCAiWFBhdGgiIDw8IGVuZGw7CisJCQkvLyBDaGVjayBmb3IgbmFtZXNwYWNlcworCQkJRE9NTmFtZWROb2RlTWFwICogYXR0cyA9IHhwLT5nZXROYW1lc3BhY2VzKCk7CisKKwkJCWlmIChhdHRzICE9IDApIHsKKworCQkJCVhNTFNpemVfdCBzID0gYXR0cy0+Z2V0TGVuZ3RoKCk7CisJCQkJZm9yIChYTUxTaXplX3QgaSA9IDAgOyBpIDwgczsgKytpKSB7CisJCQkJCWxldmVsU2V0KGxldmVsKTsKKwkJCQkJY291dCA8PCAiTmFtZXNwYWNlIDogIiA8PCBYMkMoYXR0cy0+aXRlbShpKS0+Z2V0Tm9kZU5hbWUoKSkuc3RyKCkgPDwKKwkJCQkJCSI9XCIiIDw8IFgyQyhhdHRzLT5pdGVtKGkpLT5nZXROb2RlVmFsdWUoKSkuc3RyKCkgPDwgIlwiXG4iOworCQkJCX0KKwkJCX0KKwkJCWxldmVsU2V0KGxldmVsKTsKKwkJCS8vIEhtbSAtIHRoaXMgaXMgcmVhbGx5IGEgYnVnLiAgVGhpcyBzaG91bGQgcmV0dXJuIGEgWE1MQ2ggc3RyaW5nCisJCQljb3V0IDw8ICJFeHByIDogIiA8PCB4cC0+Z2V0RXhwcmVzc2lvbigpIDw8IGVuZGw7CisJCQlyZXR1cm47CisJCX0KKworCWNhc2UgKFRSQU5TRk9STV9YUEFUSF9GSUxURVIpIDoKKwkJeworCQkJRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyICogeHBmID0gKERTSUdUcmFuc2Zvcm1YUGF0aEZpbHRlciAqKSB0OworCisJCQljb3V0IDw8ICJYUGF0aC1GaWx0ZXIyIiA8PCBlbmRsOworCisJCQl1bnNpZ25lZCBpbnQgcyA9IHhwZi0+Z2V0RXhwck51bSgpOworCQkJCisJCQlmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHM7ICsraSkgeworCisJCQkJbGV2ZWxTZXQobGV2ZWwpOworCQkJCWNvdXQgPDwgIkZpbHRlciA6ICI7CisKKwkJCQlEU0lHWFBhdGhGaWx0ZXJFeHByICogZSA9IHhwZi0+ZXhwcihpKTsKKworCQkJCXN3aXRjaCAoZS0+Z2V0RmlsdGVyVHlwZSgpKSB7CisKKwkJCQljYXNlIEZJTFRFUl9VTklPTiA6CisJCQkJCWNvdXQgPDwgInVuaW9uIDogXCIiOworCQkJCQlicmVhazsKKwkJCQljYXNlIEZJTFRFUl9JTlRFUlNFQ1QgOgorCQkJCQljb3V0IDw8ICJpbnRlcnNlY3QgOiBcIiI7CisJCQkJCWJyZWFrOworCQkJCWRlZmF1bHQgOgorCQkJCQljb3V0IDw8ICJzdWJ0cmFjdCA6IFwiIjsKKworCQkJCX0KKworCQkJCS8vIE5vdyB0aGUgZXhwcmVzc2lvbgorCQkJCWNoYXIgKiBzdHIgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShlLT5nZXRGaWx0ZXIoKSk7CisJCQkJY291dCA8PCBzdHIgPDwgIlwiIiA8PCBlbmRsOworCQkJCVhTRUNfUkVMRUFTRV9YTUxDSChzdHIpOworCisJCQl9CisKKwkJCWJyZWFrOworCisJCX0KKworCWNhc2UgKFRSQU5TRk9STV9YU0xUKSA6CisJCXsKKworCQkJY291dCA8PCAiWFNMVCIgPDwgZW5kbDsKKwkJCS8vIFJlYWxseSBzaG91bGQgc2VyaWFsaXNlIGFuZCBvdXRwdXQgc3R5bGVzaGVldC4KKwkJCXJldHVybjsKKwkJCQorCQl9CisKKwlkZWZhdWx0IDoKKworCQljb3V0IDw8ICJ1bmtub3duIHRyYW5zZm9ybSB0eXBlIiA8PCBlbmRsOworCisJfQorCit9CisJCQordm9pZCBvdXRwdXRSZWZlcmVuY2VzKERTSUdSZWZlcmVuY2VMaXN0ICpybCwgaW50IGxldmVsKSB7CisKKwlpbnQgcyA9IChpbnQpIHJsLT5nZXRTaXplKCk7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IHM7ICsraSkgeworCQorCQlsZXZlbFNldChsZXZlbCk7CisJCWNvdXQgPDwgIlJlZmVyZW5jZSAiIDw8IGkgKyAxIDw8ICIgOiAiIDw8IGVuZGw7CisJCWxldmVsU2V0KGxldmVsICsgMSk7CisJCWNvdXQgPDwgIlVSSSA6IFwiIiA8PCBYMkMocmwtPml0ZW0oaSktPmdldFVSSSgpKS5zdHIoKSA8PCAiXCIiIDw8IGVuZGw7CisJCWxldmVsU2V0KGxldmVsICsgMSk7CisJCWNvdXQgPDwgIkRpZ2VzdCBBbGdvcml0aG0gOiAiOworICAgICAgICBjaGFyKiBhbGcgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShybC0+aXRlbShpKS0+Z2V0QWxnb3JpdGhtVVJJKCkpOworICAgICAgICBjb3V0IDw8IChhbGcgPyBhbGcgOiAiVW5rbm93biIpIDw8IGVuZGw7CisgICAgICAgIFhTRUNfUkVMRUFTRV9YTUxDSChhbGcpOworCisJCS8vIE5vdyB0aGUgdHJhbnNmb3JtcworCQlEU0lHVHJhbnNmb3JtTGlzdCAqIHRsID0gcmwtPml0ZW0oaSktPmdldFRyYW5zZm9ybXMoKTsKKwkJaWYgKHRsICE9IE5VTEwpIHsKKworCQkJaW50IHRsU2l6ZSA9IChpbnQpIHRsLT5nZXRTaXplKCk7CisJCQlmb3IgKGludCBqID0gMCA7IGogPCB0bFNpemU7ICsraikgeworCisJCQkJbGV2ZWxTZXQobGV2ZWwrMSk7CisJCQkJY291dCA8PCAiVHJhbnNmb3JtICIgPDwgaiArIDEgPDwgIiA6ICI7CisJCQkJb3V0cHV0VHJhbnNmb3JtKHRsLT5pdGVtKGopLCBsZXZlbCArIDIpOworCisJCQl9CisKKwkJfQorCisJCWlmIChybC0+aXRlbShpKS0+aXNNYW5pZmVzdCgpID09IHRydWUpIHsKKworCQkJbGV2ZWxTZXQobGV2ZWwgKyAxKTsKKwkJCWNvdXQgPDwgIk1hbmlmZXN0IFJlZmVyZW5jZXMgOiAiIDw8IGVuZGw7CisJCQlvdXRwdXRSZWZlcmVuY2VzKHJsLT5pdGVtKGkpLT5nZXRNYW5pZmVzdFJlZmVyZW5jZUxpc3QoKSwgbGV2ZWwgKyAyKTsKKwkJCWxldmVsU2V0KGxldmVsICsgMSk7CisJCQljb3V0IDw8ICJFbmQgTWFuaWZlc3QgUmVmZXJlbmNlcyIgPDwgZW5kbDsKKworCQl9CisKKwl9CisKK30KKwordm9pZCBvdXRwdXRTaWduYXR1cmVJbmZvKERTSUdTaWduYXR1cmUgKnNpZywgYm9vbCBza2lwUmVmZXJlbmNlcykgeworCisJLy8gRmlyc3QgZ2V0IHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG1haW4gc2lnbmF0dXJlCisJY291dCA8PCAiU2lnbmF0dXJlIChTaWduZWQgSW5mbykgc2V0dGluZ3MgOiAiIDw8IGVuZGw7CisJY291dCA8PCAiICAgIENhbm9uaWNhbGlzYXRpb24gTWV0aG9kIDogIjsKKwkKKwlzd2l0Y2ggKHNpZy0+Z2V0Q2Fub25pY2FsaXphdGlvbk1ldGhvZCgpKSB7CisKKwljYXNlIChDQU5PTl9DMTROX05PQykgOgorCisJCWNvdXQgPDwgImMxNG4gMS4wICh3aXRob3V0IGNvbW1lbnRzKSI7CisJCWJyZWFrOworCisJY2FzZSAoQ0FOT05fQzE0Tl9DT00pIDoKKworCQljb3V0IDw8ICJjMTRuIDEuMCAod2l0aCBjb21tZW50cykiOworCQlicmVhazsKKworCWNhc2UgKENBTk9OX0MxNE4xMV9OT0MpIDoKKworCQljb3V0IDw8ICJjMTRuIDEuMSAod2l0aG91dCBjb21tZW50cykiOworCQlicmVhazsKKworCWNhc2UgKENBTk9OX0MxNE4xMV9DT00pIDoKKworCQljb3V0IDw8ICJjMTRuIDEuMSAod2l0aCBjb21tZW50cykiOworCQlicmVhazsKKworICAgIGNhc2UgKENBTk9OX0MxNE5FX05PQykgOgorCisJCWNvdXQgPDwgImV4Y2x1c2l2ZSBjMTRuIDEuMCAod2l0aG91dCBjb21tZW50cykiOworCQlicmVhazsKKworCWNhc2UgKENBTk9OX0MxNE5FX0NPTSkgOgorCisJCWNvdXQgPDwgImV4Y2x1c2l2ZSBjMTRuIDEuMCAod2l0aCBjb21tZW50cykiOworCQlicmVhazsKKworCWRlZmF1bHQgOgorCisJCWNvdXQgPDwgIm5vbmUgc2V0IjsKKwkJYnJlYWs7CisKKwl9CisKKwljb3V0IDw8IGVuZGw7CisKKyAgICBjb3V0IDw8ICIgICAgU2lnbmF0dXJlIEFsZ29yaXRobSA6ICI7CisgICAgY2hhciogYWxnID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoc2lnLT5nZXRBbGdvcml0aG1VUkkoKSk7CisgICAgY291dCA8PCAoYWxnID8gYWxnIDogIlVua25vd24iKSA8PCBlbmRsOworICAgIFhTRUNfUkVMRUFTRV9YTUxDSChhbGcpOworCisJLy8gUmVhZCBpbiB0aGUgcmVmZXJlbmNlcyBhbmQgb3V0cHV0CisKKwlpZiAoc2tpcFJlZmVyZW5jZXMgPT0gZmFsc2UpIHsKKworCQlEU0lHUmVmZXJlbmNlTGlzdCAqIHJsID0gc2lnLT5nZXRSZWZlcmVuY2VMaXN0KCk7CisJCisJCWlmIChybCAhPSBOVUxMKSB7CisKKwkJCWNvdXQgPDwgZW5kbCA8PCAiUmVmZXJlbmNlIExpc3QgOiAiIDw8IGVuZGw7CisJCQlvdXRwdXRSZWZlcmVuY2VzKHJsLCAxKTsKKwkKKwkJfQorCX0KK30KKwordm9pZCBwcmludFVzYWdlKHZvaWQpIHsKKworCWNlcnIgPDwgIlxuVXNhZ2U6IHNpZ2luZyBbb3B0aW9uc10gPGlucHV0IGZpbGUgbmFtZT5cblxuIjsKKwljZXJyIDw8ICIgICAgIFdoZXJlIG9wdGlvbnMgYXJlIDpcblxuIjsKKwljZXJyIDw8ICIgICAgIC0tc2tpcHJlZnMvLXNcbiI7CisJY2VyciA8PCAiICAgICAgICAgU2tpcCBpbmZvcm1hdGlvbiBvbiByZWZlcmVuY2VzIC0gb3V0cHV0IG1haW4gc2lnIGluZm8gb25seVxuXG4iOworCit9CisKK2ludCBldmFsdWF0ZShpbnQgYXJnYywgY2hhciAqKiBhcmd2KSB7CisJCisJY2hhcgkJCQkJKiBmaWxlbmFtZSA9IE5VTEw7CisJYm9vbAkJCQkJc2tpcFJlZnMgPSBmYWxzZTsKKworCWlmIChhcmdjIDwgMikgeworCisJCXByaW50VXNhZ2UoKTsKKwkJcmV0dXJuIDI7CisJfQorCisJLy8gUnVuIHRocm91Z2ggcGFyYW1ldGVycworCWludCBwYXJhbUNvdW50ID0gMTsKKworCXdoaWxlIChwYXJhbUNvdW50IDwgYXJnYyAtIDEpIHsKKworCQlpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tc2tpcHJlZnMiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItcyIpID09IDApIHsKKwkJCXNraXBSZWZzID0gdHJ1ZTsKKwkJCXBhcmFtQ291bnQrKzsKKwkJfQorCQllbHNlIHsKKwkJCXByaW50VXNhZ2UoKTsKKwkJCXJldHVybiAyOworCQl9CisJfQorCisJaWYgKHBhcmFtQ291bnQgPj0gYXJnYykgeworCQlwcmludFVzYWdlKCk7CisJCXJldHVybiAyOworCX0KKworCWZpbGVuYW1lID0gYXJndltwYXJhbUNvdW50XTsKKworCS8vIENyZWF0ZSBhbmQgc2V0IHVwIHRoZSBwYXJzZXIKKworCVhlcmNlc0RPTVBhcnNlciAqIHBhcnNlciA9IG5ldyBYZXJjZXNET01QYXJzZXI7CisJSmFuaXRvcjxYZXJjZXNET01QYXJzZXI+IGpfcGFyc2VyKHBhcnNlcik7CisKKwlwYXJzZXItPnNldERvTmFtZXNwYWNlcyh0cnVlKTsKKwlwYXJzZXItPnNldENyZWF0ZUVudGl0eVJlZmVyZW5jZU5vZGVzKHRydWUpOworCisJLy8gTm93IHBhcnNlIG91dCBmaWxlCisKKwlib29sIGVycm9yc09jY3VyZWQgPSBmYWxzZTsKKwl4c2Vjc2l6ZV90IGVycm9yQ291bnQgPSAwOworICAgIHRyeQorICAgIHsKKyAgICAJcGFyc2VyLT5wYXJzZShmaWxlbmFtZSk7CisgICAgICAgIGVycm9yQ291bnQgPSBwYXJzZXItPmdldEVycm9yQ291bnQoKTsKKyAgICB9CisKKyAgICBjYXRjaCAoY29uc3QgWE1MRXhjZXB0aW9uJiBlKQorICAgIHsKKwkJY2hhciAqIG1zZyA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgY2VyciA8PCAiQW4gZXJyb3Igb2NjdXJlZCBkdXJpbmcgcGFyc2luZ1xuICAgTWVzc2FnZTogIgorICAgICAgICAgICAgIDw8IG1zZyA8PCBlbmRsOworCQlYU0VDX1JFTEVBU0VfWE1MQ0gobXNnKTsKKyAgICAgICAgZXJyb3JzT2NjdXJlZCA9IHRydWU7CisgICAgfQorCisKKyAgICBjYXRjaCAoY29uc3QgRE9NRXhjZXB0aW9uJiBlKQorICAgIHsKKyAgICAgICBjZXJyIDw8ICJBIERPTSBlcnJvciBvY2N1cmVkIGR1cmluZyBwYXJzaW5nXG4gICBET01FeGNlcHRpb24gY29kZTogIgorICAgICAgICAgICAgIDw8IGUuY29kZSA8PCBlbmRsOworICAgICAgICBlcnJvcnNPY2N1cmVkID0gdHJ1ZTsKKyAgICB9CisKKwlpZiAoZXJyb3JDb3VudCA+IDAgfHwgZXJyb3JzT2NjdXJlZCkgeworCisJCWNvdXQgPDwgIkVycm9ycyBkdXJpbmcgcGFyc2UiIDw8IGVuZGw7CisJCXJldHVybiAoMik7CisKKwl9CisKKwkvKgorCisJCU5vdyB0aGF0IHdlIGhhdmUgdGhlIHBhcnNlZCBmaWxlLCBnZXQgdGhlIERPTSBkb2N1bWVudCBhbmQgc3RhcnQgbG9va2luZyBhdCBpdAorCisJKi8KKwkKKwlET01Ob2RlICpkb2MgPSBwYXJzZXItPmdldERvY3VtZW50KCk7CisJRE9NRG9jdW1lbnQgKnRoZURPTSA9IHBhcnNlci0+Z2V0RG9jdW1lbnQoKTsKKworCS8vIEZpbmQgdGhlIHNpZ25hdHVyZSBub2RlCisJCisJRE9NTm9kZSAqc2lnTm9kZSA9IGZpbmREU0lHTm9kZShkb2MsICJTaWduYXR1cmUiKTsKKworCS8vIENyZWF0ZSB0aGUgc2lnbmF0dXJlIGNoZWNrZXIKKworCWlmIChzaWdOb2RlID09IDApIHsKKworCQljZXJyIDw8ICJDb3VsZCBub3QgZmluZCA8U2lnbmF0dXJlPiBub2RlIGluICIgPDwgYXJndlthcmdjLTFdIDw8IGVuZGw7CisJCXJldHVybiAxOworCX0KKworCVhTRUNQcm92aWRlciBwcm92OworCURTSUdTaWduYXR1cmUgKiBzaWcgPSBwcm92Lm5ld1NpZ25hdHVyZUZyb21ET00odGhlRE9NLCBzaWdOb2RlKTsKKworCXRyeSB7CisKKwkJc2lnLT5sb2FkKCk7CisKKwkJLy8gSWYgd2UgZGlkbid0IGdldCBhbiBleGNlcHRpb24sIHRoaW5ncyB3ZW50IHdlbGwKKworCQljb3V0IDw8ICJGaWxlbmFtZSA6ICIgPDwgZmlsZW5hbWUgPDwgZW5kbDsKKworCQlvdXRwdXRTaWduYXR1cmVJbmZvKHNpZywgc2tpcFJlZnMpOworLy8JCWlmIChza2lwUmVmcyA9PSBmYWxzZSkKKy8vCQkJcmVzdWx0ID0gc2lnLT52ZXJpZnlTaWduYXR1cmVPbmx5KCk7CisvLwkJZWxzZQorLy8JCQlyZXN1bHQgPSBzaWctPnZlcmlmeSgpOworCX0KKworCWNhdGNoIChYU0VDRXhjZXB0aW9uICZlKSB7CisJCWNoYXIgKiBtc2cgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShlLmdldE1zZygpKTsKKwkJY2VyciA8PCAiQW4gZXJyb3Igb2NjdXJlZCBkdXJpbmcgc2lnbmF0dXJlIGxvYWRpbmdcbiAgIE1lc3NhZ2U6ICIKKwkJPDwgbXNnIDw8IGVuZGw7CisJCVhTRUNfUkVMRUFTRV9YTUxDSChtc2cpOworCQllcnJvcnNPY2N1cmVkID0gdHJ1ZTsKKwkJcmV0dXJuIDI7CisJfQorCWNhdGNoICguLi4pIHsKKworCQljZXJyIDw8ICJVbmtub3duIEV4Y2VwdGlvbiB0eXBlIG9jY3VyZWQuICBDbGVhbmluZyB1cCBhbmQgZXhpdGluZ1xuIiA8PCBlbmRsOworCQlyZXR1cm4gMjsKKworCX0KKworCS8vIENsZWFuIHVwCisKKwlwcm92LnJlbGVhc2VTaWduYXR1cmUoc2lnKTsKKwkvLyBKYW5pdG9yIHdpbGwgY2xlYW4gdXAgdGhlIHBhcnNlcgorCXJldHVybiAwOworCit9CisKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisKKwlpbnQgcmV0UmVzdWx0OworCisJLyogV2Ugb3V0cHV0IGEgdmVyc2lvbiBudW1iZXIgdG8gb3ZlcmNvbWUgYSAiZmVhdHVyZSIgaW4gTWljcm9zb2Z0J3MgbWVtb3J5CisJICAgbGVhayBkZXRlY3Rpb24gKi8KKworCWNvdXQgPDwgIkRTSUcgSW5mbyAoVXNpbmcgQXBhY2hlIFhNTC1TZWN1cml0eS1DIExpYnJhcnkgdiIgPDwgWFNFQ19WRVJTSU9OX01BSk9SIDw8CisJCSIuIiA8PCBYU0VDX1ZFUlNJT05fTUVESVVNIDw8ICIuIiA8PCBYU0VDX1ZFUlNJT05fTUlOT1IgPDwgIilcbiI7CisKKyNpZiBkZWZpbmVkIChfREVCVUcpICYmIGRlZmluZWQgKF9NU0NfVkVSKQorCisJLy8gRG8gc29tZSBtZW1vcnkgZGVidWdnaW5nIHVuZGVyIFZpc3VhbCBDKysKKworCV9DcnRNZW1TdGF0ZSBzMSwgczIsIHMzOworCisJLy8gQXQgdGhpcyBwb2ludCB3ZSBhcmUgYWJvdXQgdG8gc3RhcnQgcmVhbGx5IHVzaW5nIFhTRUMsIHNvCisJLy8gVGFrZSBhICJiZWZvcmUiIGNoZWNrcG9pbmcKKworCV9DcnRNZW1DaGVja3BvaW50KCAmczEgKTsKKworI2VuZGlmCisKKwkvLyBJbml0aWFsaXNlIHRoZSBYTUwgc3lzdGVtCisKKwl0cnkgeworCisJCVhNTFBsYXRmb3JtVXRpbHM6OkluaXRpYWxpemUoKTsKKyNpZm5kZWYgWFNFQ19OT19YQUxBTgorCQlYUGF0aEV2YWx1YXRvcjo6aW5pdGlhbGl6ZSgpOworCQlYYWxhblRyYW5zZm9ybWVyOjppbml0aWFsaXplKCk7CisjZW5kaWYKKwkJWFNFQ1BsYXRmb3JtVXRpbHM6OkluaXRpYWxpc2UoKTsKKworCX0KKwljYXRjaCAoY29uc3QgWE1MRXhjZXB0aW9uICZlKSB7CisKKwkJY2VyciA8PCAiRXJyb3IgZHVyaW5nIGluaXRpYWxpc2F0aW9uIG9mIFhlcmNlcyIgPDwgZW5kbDsKKwkJY2VyciA8PCAiRXJyb3IgTWVzc2FnZSA9IDogIgorCQkgICAgIDw8IGUuZ2V0TWVzc2FnZSgpIDw8IGVuZGw7CisKKwl9CisKKwlyZXRSZXN1bHQgPSBldmFsdWF0ZShhcmdjLCBhcmd2KTsKKworCVhTRUNQbGF0Zm9ybVV0aWxzOjpUZXJtaW5hdGUoKTsKKyNpZm5kZWYgWFNFQ19OT19YQUxBTgorCVhhbGFuVHJhbnNmb3JtZXI6OnRlcm1pbmF0ZSgpOworCVhQYXRoRXZhbHVhdG9yOjp0ZXJtaW5hdGUoKTsKKyNlbmRpZgorCVhNTFBsYXRmb3JtVXRpbHM6OlRlcm1pbmF0ZSgpOworCisjaWYgZGVmaW5lZCAoX0RFQlVHKSAmJiBkZWZpbmVkIChfTVNDX1ZFUikKKworCV9DcnRNZW1DaGVja3BvaW50KCAmczIgKTsKKworCWlmICggX0NydE1lbURpZmZlcmVuY2UoICZzMywgJnMxLCAmczIgKSAmJiBzMy5sQ291bnRzWzFdID4gMSkgeworCisJCXN0ZDo6Y2VyciA8PCAiVG90YWwgY291bnQgPSAiIDw8ICh1bnNpZ25lZCBpbnQpIHMzLmxUb3RhbENvdW50IDw8IGVuZGw7CisKKwkJLy8gU2VuZCBhbGwgcmVwb3J0cyB0byBTVERPVVQKKwkJX0NydFNldFJlcG9ydE1vZGUoIF9DUlRfV0FSTiwgX0NSVERCR19NT0RFX0ZJTEUgKTsKKwkJX0NydFNldFJlcG9ydEZpbGUoIF9DUlRfV0FSTiwgX0NSVERCR19GSUxFX1NURE9VVCApOworCQlfQ3J0U2V0UmVwb3J0TW9kZSggX0NSVF9FUlJPUiwgX0NSVERCR19NT0RFX0ZJTEUgKTsKKwkJX0NydFNldFJlcG9ydEZpbGUoIF9DUlRfRVJST1IsIF9DUlREQkdfRklMRV9TVERPVVQgKTsKKwkJX0NydFNldFJlcG9ydE1vZGUoIF9DUlRfQVNTRVJULCBfQ1JUREJHX01PREVfRklMRSApOworCQlfQ3J0U2V0UmVwb3J0RmlsZSggX0NSVF9BU1NFUlQsIF9DUlREQkdfRklMRV9TVERPVVQgKTsKKworCQkvLyBEdW1weSBtZW1vcnkgc3RhdHMKKworIAkJX0NydE1lbUR1bXBBbGxPYmplY3RzU2luY2UoICZzMyApOworCSAgICBfQ3J0TWVtRHVtcFN0YXRpc3RpY3MoICZzMyApOworCX0KKworCS8vIE5vdyB0dXJuIG9mZiBtZW1vcnkgbGVhayBjaGVja2luZyBhbmQgZW5kIGFzIHRoZXJlIGFyZSBzb21lIAorCS8vIEdsb2JhbHMgdGhhdCBhcmUgYWxsb2NhdGVkIHRoYXQgZ2V0IHNlZW4gYXMgbGVha3MgKFhhbGFuPykKKworCWludCBkYmdGbGFnID0gX0NydFNldERiZ0ZsYWcoX0NSVERCR19SRVBPUlRfRkxBRyk7CisJZGJnRmxhZyAmPSB+KF9DUlREQkdfTEVBS19DSEVDS19ERik7CisJX0NydFNldERiZ0ZsYWcoIGRiZ0ZsYWcgKTsKKworI2VuZGlmCisKKwlyZXR1cm4gcmV0UmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvYy9zcmMvdG9vbHMvdGVtcGxhdGVzaWduL3RlbXBsYXRlc2lnbi5jcHAgYi9jL3NyYy90b29scy90ZW1wbGF0ZXNpZ24vdGVtcGxhdGVzaWduLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NThjNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdG9vbHMvdGVtcGxhdGVzaWduL3RlbXBsYXRlc2lnbi5jcHAKQEAgLTAsMCArMSwxMzk5IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiB0ZW1wbGF0ZXNpZ24gOj0gdG9vbCB0byBzaWduIGEgdGVtcGxhdGUgWE1MIHNpZ25hdHVyZSBmaWxlCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisvL1hTRUMgaW5jbHVkZXMKKy8vIFhTRUMKKworI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1BsYXRmb3JtVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNQcm92aWRlci5ocHA+CisjaW5jbHVkZSA8eHNlYy9jYW5vbi9YU0VDQzE0bjIwMDEwMzE1LmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1NpZ25hdHVyZS5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdLZXlJbmZvWDUwOS5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0V4Y2VwdGlvbi5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDRE9NVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9FeGNlcHRpb24uaHBwPgorCisjaWYgZGVmaW5lZChfV0lOMzIpCisjCWluY2x1ZGUgPHhzZWMvdXRpbHMvd2ludXRpbHMvWFNFQ1VSSVJlc29sdmVyR2VuZXJpY1dpbjMyLmhwcD4KKyNlbHNlCisjCWluY2x1ZGUgPHhzZWMvdXRpbHMvdW5peHV0aWxzL1hTRUNVUklSZXNvbHZlckdlbmVyaWNVbml4LmhwcD4KKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoSEFWRV9PUEVOU1NMKQorIwlpbmNsdWRlIDx4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9LZXlEU0EuaHBwPgorIwlpbmNsdWRlIDx4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9LZXlFQy5ocHA+CisjCWluY2x1ZGUgPHhzZWMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0tleVJTQS5ocHA+CisjCWluY2x1ZGUgPHhzZWMvZW5jL09wZW5TU0wvT3BlblNTTENyeXB0b0tleUhNQUMuaHBwPgorIwlpbmNsdWRlIDx4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9YNTA5LmhwcD4KKworIwlpbmNsdWRlIDxvcGVuc3NsL2Jpby5oPgorIwlpbmNsdWRlIDxvcGVuc3NsL2RzYS5oPgorIwlpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorIwlpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorIwlpbmNsdWRlIDxvcGVuc3NsL3BlbS5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhBVkVfV0lOQ0FQSSkKKyMJaW5jbHVkZSA8eHNlYy9lbmMvV2luQ0FQSS9XaW5DQVBJQ3J5cHRvUHJvdmlkZXIuaHBwPgorIwlpbmNsdWRlIDx4c2VjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9LZXlEU0EuaHBwPgorIwlpbmNsdWRlIDx4c2VjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9LZXlSU0EuaHBwPgorIwlpbmNsdWRlIDx4c2VjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9LZXlITUFDLmhwcD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bWVtb3J5Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpZiBkZWZpbmVkKEhBVkVfVU5JU1REX0gpCisjIGluY2x1ZGUgPHVuaXN0ZC5oPgorIyBkZWZpbmUgX01BWF9QQVRIIFBBVEhfTUFYCisjZWxzZQorIyBpZiBkZWZpbmVkKEhBVkVfRElSRUNUX0gpCisjICBpbmNsdWRlIDxkaXJlY3QuaD4KKyMgZW5kaWYKKyNlbmRpZgorCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1BsYXRmb3JtVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxTdHJpbmcuaHBwPgorCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3BhcnNlcnMvWGVyY2VzRE9NUGFyc2VyLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MRXhjZXB0aW9uLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MVW5pRGVmcy5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTE5ldEFjY2Vzc29yLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MVXJpLmhwcD4KKworI2lmbmRlZiBYU0VDX05PX1hBTEFOCisKKy8vIFhBTEFOCisKKyNpbmNsdWRlIDx4YWxhbmMvWFBhdGgvWFBhdGhFdmFsdWF0b3IuaHBwPgorI2luY2x1ZGUgPHhhbGFuYy9YYWxhblRyYW5zZm9ybWVyL1hhbGFuVHJhbnNmb3JtZXIuaHBwPgorCitYQUxBTl9VU0lOR19YQUxBTihYUGF0aEV2YWx1YXRvcikKK1hBTEFOX1VTSU5HX1hBTEFOKFhhbGFuVHJhbnNmb3JtZXIpCisKKyNlbmRpZgorCit1c2luZyBzdGQ6Om9zdHJlYW07Cit1c2luZyBzdGQ6OmNvdXQ7Cit1c2luZyBzdGQ6OmNlcnI7Cit1c2luZyBzdGQ6OmVuZGw7Cit1c2luZyBzdGQ6OmZsdXNoOworCisvLyBVcGxpZnQgZW50aXJlIHByb2dyYW0gaW50byBYZXJjZXMgbmFtZXNwYWNlCisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIE11Y2ggY29kZSB0YWtlbiBmcm9tIHRoZSBET01QcmludCBYZXJjZXMgZXhhbXBsZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljIFhNTEZvcm1hdHRlciogICAgICAgICAgICBnRm9ybWF0dGVyICAgICAgICAgICAgID0gMDsKK3N0YXRpYyBYTUxDaCogICAgICAgICAgICAgICAgICAgZ0VuY29kaW5nTmFtZSAgICAgICAgICA9IDA7CitzdGF0aWMgWE1MRm9ybWF0dGVyOjpVblJlcEZsYWdzIGdVblJlcEZsYWdzICAgICAgICAgICAgPSBYTUxGb3JtYXR0ZXI6OlVuUmVwX0NoYXJSZWY7CisKKworCisKK3N0YXRpYyBjb25zdCBYTUxDaCAgZ0VuZEVsZW1lbnRbXSA9IHsgY2hPcGVuQW5nbGUsIGNoRm9yd2FyZFNsYXNoLCBjaE51bGwgfTsKK3N0YXRpYyBjb25zdCBYTUxDaCAgZ0VuZFBJW10gPSB7IGNoUXVlc3Rpb24sIGNoQ2xvc2VBbmdsZSwgY2hOdWxsfTsKK3N0YXRpYyBjb25zdCBYTUxDaCAgZ1N0YXJ0UElbXSA9IHsgY2hPcGVuQW5nbGUsIGNoUXVlc3Rpb24sIGNoTnVsbCB9Oworc3RhdGljIGNvbnN0IFhNTENoICBnWE1MRGVjbDFbXSA9Cit7CisgICAgICAgIGNoT3BlbkFuZ2xlLCBjaFF1ZXN0aW9uLCBjaExhdGluX3gsIGNoTGF0aW5fbSwgY2hMYXRpbl9sCisgICAgLCAgIGNoU3BhY2UsIGNoTGF0aW5fdiwgY2hMYXRpbl9lLCBjaExhdGluX3IsIGNoTGF0aW5fcywgY2hMYXRpbl9pCisgICAgLCAgIGNoTGF0aW5fbywgY2hMYXRpbl9uLCBjaEVxdWFsLCBjaERvdWJsZVF1b3RlLCBjaE51bGwKK307CitzdGF0aWMgY29uc3QgWE1MQ2ggIGdYTUxEZWNsMltdID0KK3sKKyAgICAgICAgY2hEb3VibGVRdW90ZSwgY2hTcGFjZSwgY2hMYXRpbl9lLCBjaExhdGluX24sIGNoTGF0aW5fYworICAgICwgICBjaExhdGluX28sIGNoTGF0aW5fZCwgY2hMYXRpbl9pLCBjaExhdGluX24sIGNoTGF0aW5fZywgY2hFcXVhbAorICAgICwgICBjaERvdWJsZVF1b3RlLCBjaE51bGwKK307CitzdGF0aWMgY29uc3QgWE1MQ2ggIGdYTUxEZWNsM1tdID0KK3sKKyAgICAgICAgY2hEb3VibGVRdW90ZSwgY2hTcGFjZSwgY2hMYXRpbl9zLCBjaExhdGluX3QsIGNoTGF0aW5fYQorICAgICwgICBjaExhdGluX24sIGNoTGF0aW5fZCwgY2hMYXRpbl9hLCBjaExhdGluX2wsIGNoTGF0aW5fbworICAgICwgICBjaExhdGluX24sIGNoTGF0aW5fZSwgY2hFcXVhbCwgY2hEb3VibGVRdW90ZSwgY2hOdWxsCit9Oworc3RhdGljIGNvbnN0IFhNTENoICBnWE1MRGVjbDRbXSA9Cit7CisgICAgICAgIGNoRG91YmxlUXVvdGUsIGNoUXVlc3Rpb24sIGNoQ2xvc2VBbmdsZQorICAgICwgICBjaExGLCBjaE51bGwKK307CisKK3N0YXRpYyBjb25zdCBYTUxDaCAgZ1N0YXJ0Q0RBVEFbXSA9Cit7CisgICAgICAgIGNoT3BlbkFuZ2xlLCBjaEJhbmcsIGNoT3BlblNxdWFyZSwgY2hMYXRpbl9DLCBjaExhdGluX0QsCisgICAgICAgIGNoTGF0aW5fQSwgY2hMYXRpbl9ULCBjaExhdGluX0EsIGNoT3BlblNxdWFyZSwgY2hOdWxsCit9OworCitzdGF0aWMgY29uc3QgWE1MQ2ggIGdFbmRDREFUQVtdID0KK3sKKyAgICBjaENsb3NlU3F1YXJlLCBjaENsb3NlU3F1YXJlLCBjaENsb3NlQW5nbGUsIGNoTnVsbAorfTsKK3N0YXRpYyBjb25zdCBYTUxDaCAgZ1N0YXJ0Q29tbWVudFtdID0KK3sKKyAgICBjaE9wZW5BbmdsZSwgY2hCYW5nLCBjaERhc2gsIGNoRGFzaCwgY2hOdWxsCit9OworCitzdGF0aWMgY29uc3QgWE1MQ2ggIGdFbmRDb21tZW50W10gPQoreworICAgIGNoRGFzaCwgY2hEYXNoLCBjaENsb3NlQW5nbGUsIGNoTnVsbAorfTsKKworc3RhdGljIGNvbnN0IFhNTENoICBnU3RhcnREb2N0eXBlW10gPQoreworICAgIGNoT3BlbkFuZ2xlLCBjaEJhbmcsIGNoTGF0aW5fRCwgY2hMYXRpbl9PLCBjaExhdGluX0MsIGNoTGF0aW5fVCwKKyAgICBjaExhdGluX1ksIGNoTGF0aW5fUCwgY2hMYXRpbl9FLCBjaFNwYWNlLCBjaE51bGwKK307CitzdGF0aWMgY29uc3QgWE1MQ2ggIGdQdWJsaWNbXSA9Cit7CisgICAgY2hMYXRpbl9QLCBjaExhdGluX1UsIGNoTGF0aW5fQiwgY2hMYXRpbl9MLCBjaExhdGluX0ksCisgICAgY2hMYXRpbl9DLCBjaFNwYWNlLCBjaERvdWJsZVF1b3RlLCBjaE51bGwKK307CitzdGF0aWMgY29uc3QgWE1MQ2ggIGdTeXN0ZW1bXSA9Cit7CisgICAgY2hMYXRpbl9TLCBjaExhdGluX1ksIGNoTGF0aW5fUywgY2hMYXRpbl9ULCBjaExhdGluX0UsCisgICAgY2hMYXRpbl9NLCBjaFNwYWNlLCBjaERvdWJsZVF1b3RlLCBjaE51bGwKK307CitzdGF0aWMgY29uc3QgWE1MQ2ggIGdTdGFydEVudGl0eVtdID0KK3sKKyAgICBjaE9wZW5BbmdsZSwgY2hCYW5nLCBjaExhdGluX0UsIGNoTGF0aW5fTiwgY2hMYXRpbl9ULCBjaExhdGluX0ksCisgICAgY2hMYXRpbl9ULCBjaExhdGluX1ksIGNoU3BhY2UsIGNoTnVsbAorfTsKK3N0YXRpYyBjb25zdCBYTUxDaCAgZ05vdGF0aW9uW10gPQoreworICAgIGNoTGF0aW5fTiwgY2hMYXRpbl9ELCBjaExhdGluX0EsIGNoTGF0aW5fVCwgY2hMYXRpbl9BLAorICAgIGNoU3BhY2UsIGNoRG91YmxlUXVvdGUsIGNoTnVsbAorfTsKKworCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gIExvY2FsIGNsYXNzZXMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjbGFzcyBET01QcmludEZvcm1hdFRhcmdldCA6IHB1YmxpYyBYTUxGb3JtYXRUYXJnZXQKK3sKK3B1YmxpYzoKKyAgICBET01QcmludEZvcm1hdFRhcmdldCgpICB7fTsKKyAgICB+RE9NUHJpbnRGb3JtYXRUYXJnZXQoKSB7fTsKKworICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gIEltcGxlbWVudGF0aW9ucyBvZiB0aGUgZm9ybWF0IHRhcmdldCBpbnRlcmZhY2UKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgdm9pZCB3cml0ZUNoYXJzKGNvbnN0ICAgWE1MQnl0ZSogY29uc3QgIHRvV3JpdGUsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0ICAgeHNlY3NpemVfdCAgICBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxGb3JtYXR0ZXIgKiBjb25zdCBmb3JtYXR0ZXIpCisgICAgeworICAgICAgICAvLyBTdXJwcmlzaW5nbHksIFNvbGFyaXMgd2FzIHRoZSBvbmx5IHBsYXRmb3JtIG9uIHdoaWNoCisgICAgICAgIC8vIHJlcXVpcmVkIHRoZSBjaGFyKiBjYXN0IHRvIHByaW50IG91dCB0aGUgc3RyaW5nIGNvcnJlY3RseS4KKyAgICAgICAgLy8gV2l0aG91dCB0aGUgY2FzdCwgaXQgd2FzIHByaW50aW5nIHRoZSBwb2ludGVyIHZhbHVlIGluIGhleC4KKyAgICAgICAgLy8gUXVpdGUgYW5ub3lpbmcsIGNvbnNpZGVyaW5nIGV2ZXJ5IG90aGVyIHBsYXRmb3JtIHByaW50ZWQKKyAgICAgICAgLy8gdGhlIHN0cmluZyB3aXRoIHRoZSBleHBsaWNpdCBjYXN0IHRvIGNoYXIqIGJlbG93LgorICAgICAgICBjb3V0LndyaXRlKChjaGFyICopIHRvV3JpdGUsIChpbnQpIGNvdW50KTsKKyAgICB9OworCitwcml2YXRlOgorICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gIFVuaW1wbGVtZW50ZWQgbWV0aG9kcy4KKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIERPTVByaW50Rm9ybWF0VGFyZ2V0KGNvbnN0IERPTVByaW50Rm9ybWF0VGFyZ2V0JiBvdGhlcik7CisgICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgRE9NUHJpbnRGb3JtYXRUYXJnZXQmIHJocyk7Cit9OworCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gIG9zdHJlYW0gPDwgRE9NTm9kZQorLy8KKy8vICBTdHJlYW0gb3V0IGEgRE9NIG5vZGUsIGFuZCwgcmVjdXJzaXZlbHksIGFsbCBvZiBpdHMgY2hpbGRyZW4uIFRoaXMKKy8vICBmdW5jdGlvbiBpcyB0aGUgaGVhcnQgb2Ygd3JpdGluZyBhIERPTSB0cmVlIG91dCBhcyBYTUwgc291cmNlLiBHaXZlIGl0CisvLyAgYSBkb2N1bWVudCBub2RlIGFuZCBpdCB3aWxsIGRvIHRoZSB3aG9sZSB0aGluZy4KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiB0YXJnZXQsIERPTU5vZGUqIHRvV3JpdGUpCit7CisgICAgLy8gR2V0IHRoZSBuYW1lIGFuZCB2YWx1ZSBvdXQgZm9yIGNvbnZlbmllbmNlCisgICAgY29uc3QgWE1MQ2gqICAgbm9kZU5hbWUgPSB0b1dyaXRlLT5nZXROb2RlTmFtZSgpOworICAgIGNvbnN0IFhNTENoKiAgIG5vZGVWYWx1ZSA9IHRvV3JpdGUtPmdldE5vZGVWYWx1ZSgpOworICAgIHhzZWNzaXplX3QgbGVudCA9IFhNTFN0cmluZzo6c3RyaW5nTGVuKG5vZGVWYWx1ZSk7CisKKyAgICBzd2l0Y2ggKHRvV3JpdGUtPmdldE5vZGVUeXBlKCkpCisgICAgeworICAgICAgICBjYXNlIERPTU5vZGU6OlRFWFRfTk9ERToKKyAgICAgICAgeworICAgICAgICAgICAgZ0Zvcm1hdHRlci0+Zm9ybWF0QnVmKG5vZGVWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW50LCBYTUxGb3JtYXR0ZXI6OkNoYXJFc2NhcGVzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKworICAgICAgICBjYXNlIERPTU5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSA6CisgICAgICAgIHsKKyAgICAgICAgICAgICpnRm9ybWF0dGVyIDw8IFhNTEZvcm1hdHRlcjo6Tm9Fc2NhcGVzIDw8IGdTdGFydFBJICA8PCBub2RlTmFtZTsKKyAgICAgICAgICAgIGlmIChsZW50ID4gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAqZ0Zvcm1hdHRlciA8PCBjaFNwYWNlIDw8IG5vZGVWYWx1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICpnRm9ybWF0dGVyIDw8IFhNTEZvcm1hdHRlcjo6Tm9Fc2NhcGVzIDw8IGdFbmRQSTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKworICAgICAgICBjYXNlIERPTU5vZGU6OkRPQ1VNRU5UX05PREUgOgorICAgICAgICB7CisKKyAgICAgICAgICAgIERPTU5vZGUgKmNoaWxkID0gdG9Xcml0ZS0+Z2V0Rmlyc3RDaGlsZCgpOworICAgICAgICAgICAgd2hpbGUoIGNoaWxkICE9IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGFyZ2V0IDw8IGNoaWxkOworICAgICAgICAgICAgICAgIC8vIGFkZCBsaW5lZmVlZCBpbiByZXF1ZXN0ZWQgb3V0cHV0IGVuY29kaW5nCisgICAgICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgY2hMRjsKKyAgICAgICAgICAgICAgICB0YXJnZXQgPDwgZmx1c2g7CisgICAgICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC0+Z2V0TmV4dFNpYmxpbmcoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKworICAgICAgICBjYXNlIERPTU5vZGU6OkVMRU1FTlRfTk9ERSA6CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRoZSBuYW1lIGhhcyB0byBiZSByZXByZXNlbnRhYmxlIHdpdGhvdXQgYW55IGVzY2FwZXMKKyAgICAgICAgICAgICpnRm9ybWF0dGVyICA8PCBYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcworICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGNoT3BlbkFuZ2xlIDw8IG5vZGVOYW1lOworCisgICAgICAgICAgICAvLyBPdXRwdXQgdGhlIGVsZW1lbnQgc3RhcnQgdGFnLgorCisgICAgICAgICAgICAvLyBPdXRwdXQgYW55IGF0dHJpYnV0ZXMgb24gdGhpcyBlbGVtZW50CisgICAgICAgICAgICBET01OYW1lZE5vZGVNYXAgKmF0dHJpYnV0ZXMgPSB0b1dyaXRlLT5nZXRBdHRyaWJ1dGVzKCk7CisgICAgICAgICAgICBYTUxTaXplX3QgYXR0ckNvdW50ID0gYXR0cmlidXRlcy0+Z2V0TGVuZ3RoKCk7CisgICAgICAgICAgICBmb3IgKFhNTFNpemVfdCBpID0gMDsgaSA8IGF0dHJDb3VudDsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIERPTU5vZGUgICphdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzLT5pdGVtKGkpOworCisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAvLyAgQWdhaW4gdGhlIG5hbWUgaGFzIHRvIGJlIGNvbXBsZXRlbHkgcmVwcmVzZW50YWJsZS4gQnV0IHRoZQorICAgICAgICAgICAgICAgIC8vICBhdHRyaWJ1dGUgY2FuIGhhdmUgcmVmcyBhbmQgcmVxdWlyZXMgdGhlIGF0dHJpYnV0ZSBzdHlsZQorICAgICAgICAgICAgICAgIC8vICBlc2NhcGluZy4KKyAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAgICpnRm9ybWF0dGVyICA8PCBYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBjaFNwYWNlIDw8IGF0dHJpYnV0ZS0+Z2V0Tm9kZU5hbWUoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBjaEVxdWFsIDw8IGNoRG91YmxlUXVvdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgWE1MRm9ybWF0dGVyOjpBdHRyRXNjYXBlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBhdHRyaWJ1dGUtPmdldE5vZGVWYWx1ZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IFhNTEZvcm1hdHRlcjo6Tm9Fc2NhcGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGNoRG91YmxlUXVvdGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyAgVGVzdCBmb3IgdGhlIHByZXNlbmNlIG9mIGNoaWxkcmVuLCB3aGljaCBpbmNsdWRlcyBib3RoCisgICAgICAgICAgICAvLyAgdGV4dCBjb250ZW50IGFuZCBuZXN0ZWQgZWxlbWVudHMuCisgICAgICAgICAgICAvLworICAgICAgICAgICAgRE9NTm9kZSAqY2hpbGQgPSB0b1dyaXRlLT5nZXRGaXJzdENoaWxkKCk7CisgICAgICAgICAgICBpZiAoY2hpbGQgIT0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBUaGVyZSBhcmUgY2hpbGRyZW4uIENsb3NlIHN0YXJ0LXRhZywgYW5kIG91dHB1dCBjaGlsZHJlbi4KKyAgICAgICAgICAgICAgICAvLyBObyBlc2NhcGVzIGFyZSBsZWdhbCBoZXJlCisgICAgICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMgPDwgY2hDbG9zZUFuZ2xlOworCisgICAgICAgICAgICAgICAgd2hpbGUoIGNoaWxkICE9IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPDwgY2hpbGQ7CisgICAgICAgICAgICAgICAgICAgIGNoaWxkID0gY2hpbGQtPmdldE5leHRTaWJsaW5nKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAvLyBEb25lIHdpdGggY2hpbGRyZW4uICBPdXRwdXQgdGhlIGVuZCB0YWcuCisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAqZ0Zvcm1hdHRlciA8PCBYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcyA8PCBnRW5kRWxlbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IG5vZGVOYW1lIDw8IGNoQ2xvc2VBbmdsZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAgIC8vICBUaGVyZSB3ZXJlIG5vIGNoaWxkcmVuLiBPdXRwdXQgdGhlIHNob3J0IGZvcm0gY2xvc2Ugb2YKKyAgICAgICAgICAgICAgICAvLyAgdGhlIGVsZW1lbnQgc3RhcnQgdGFnLCBtYWtpbmcgaXQgYW4gZW1wdHktZWxlbWVudCB0YWcuCisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAqZ0Zvcm1hdHRlciA8PCBYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcyA8PCBjaEZvcndhcmRTbGFzaCA8PCBjaENsb3NlQW5nbGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisKKyAgICAgICAgY2FzZSBET01Ob2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREU6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy9ET01Ob2RlICpjaGlsZDsKKyNpZiAwCisgICAgICAgICAgICAgICAgZm9yIChjaGlsZCA9IHRvV3JpdGUuZ2V0Rmlyc3RDaGlsZCgpOworICAgICAgICAgICAgICAgIGNoaWxkICE9IDA7CisgICAgICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC5nZXROZXh0U2libGluZygpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IDw8IGNoaWxkOworICAgICAgICAgICAgICAgIH0KKyNlbHNlCisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAvLyBJbnN0ZWFkIG9mIHByaW50aW5nIHRoZSByZWZlcm5lY2UgdHJlZQorICAgICAgICAgICAgICAgIC8vIHdlJ2Qgb3V0cHV0IHRoZSBhY3R1YWwgdGV4dCBhcyBpdCBhcHBlYXJlZCBpbiB0aGUgeG1sIGZpbGUuCisgICAgICAgICAgICAgICAgLy8gVGhpcyB3b3VsZCBiZSB0aGUgY2FzZSB3aGVuIC1lIG9wdGlvbiB3YXMgY2hvc2VuCisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMgPDwgY2hBbXBlcnNhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDw8IG5vZGVOYW1lIDw8IGNoU2VtaUNvbG9uOworI2VuZGlmCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKworICAgICAgICBjYXNlIERPTU5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICpnRm9ybWF0dGVyIDw8IFhNTEZvcm1hdHRlcjo6Tm9Fc2NhcGVzIDw8IGdTdGFydENEQVRBCisgICAgICAgICAgICAgICAgICAgICAgICA8PCBub2RlVmFsdWUgPDwgZ0VuZENEQVRBOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworCisgICAgICAgIGNhc2UgRE9NTm9kZTo6Q09NTUVOVF9OT0RFOgorICAgICAgICB7CisgICAgICAgICAgICAqZ0Zvcm1hdHRlciA8PCBYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcyA8PCBnU3RhcnRDb21tZW50CisgICAgICAgICAgICAgICAgICAgICAgICA8PCBub2RlVmFsdWUgPDwgZ0VuZENvbW1lbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisKKyAgICAgICAgY2FzZSBET01Ob2RlOjpET0NVTUVOVF9UWVBFX05PREU6CisgICAgICAgIHsKKyAgICAgICAgICAgIERPTURvY3VtZW50VHlwZSAqZG9jdHlwZSA9IChET01Eb2N1bWVudFR5cGUgKil0b1dyaXRlOzsKKworICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMgIDw8IGdTdGFydERvY3R5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDw8IG5vZGVOYW1lOworCisgICAgICAgICAgICBjb25zdCBYTUxDaCogaWQgPSBkb2N0eXBlLT5nZXRQdWJsaWNJZCgpOworICAgICAgICAgICAgaWYgKGlkICE9IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMgPDwgY2hTcGFjZSA8PCBnUHVibGljCisgICAgICAgICAgICAgICAgICAgIDw8IGlkIDw8IGNoRG91YmxlUXVvdGU7CisgICAgICAgICAgICAgICAgaWQgPSBkb2N0eXBlLT5nZXRTeXN0ZW1JZCgpOworICAgICAgICAgICAgICAgIGlmIChpZCAhPSAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMgPDwgY2hTcGFjZQorICAgICAgICAgICAgICAgICAgICAgICA8PCBjaERvdWJsZVF1b3RlIDw8IGlkIDw8IGNoRG91YmxlUXVvdGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlkID0gZG9jdHlwZS0+Z2V0U3lzdGVtSWQoKTsKKyAgICAgICAgICAgICAgICBpZiAoaWQgIT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICpnRm9ybWF0dGVyIDw8IFhNTEZvcm1hdHRlcjo6Tm9Fc2NhcGVzIDw8IGNoU3BhY2UgPDwgZ1N5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgPDwgaWQgPDwgY2hEb3VibGVRdW90ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlkID0gZG9jdHlwZS0+Z2V0SW50ZXJuYWxTdWJzZXQoKTsKKyAgICAgICAgICAgIGlmIChpZCAhPTApCisgICAgICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMgPDwgY2hPcGVuU3F1YXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgaWQgPDwgY2hDbG9zZVNxdWFyZTsKKworICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMgPDwgY2hDbG9zZUFuZ2xlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworCisgICAgICAgIGNhc2UgRE9NTm9kZTo6RU5USVRZX05PREU6CisgICAgICAgIHsKKyAgICAgICAgICAgICpnRm9ybWF0dGVyIDw8IFhNTEZvcm1hdHRlcjo6Tm9Fc2NhcGVzIDw8IGdTdGFydEVudGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgPDwgbm9kZU5hbWU7CisKKyAgICAgICAgICAgIGNvbnN0IFhNTENoICogaWQgPSAoKERPTUVudGl0eSAqKXRvV3JpdGUpLT5nZXRQdWJsaWNJZCgpOworICAgICAgICAgICAgaWYgKGlkICE9IDApCisgICAgICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMgPDwgZ1B1YmxpYworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGlkIDw8IGNoRG91YmxlUXVvdGU7CisKKyAgICAgICAgICAgIGlkID0gKChET01FbnRpdHkgKil0b1dyaXRlKS0+Z2V0U3lzdGVtSWQoKTsKKyAgICAgICAgICAgIGlmIChpZCAhPSAwKQorICAgICAgICAgICAgICAgICpnRm9ybWF0dGVyIDw8IFhNTEZvcm1hdHRlcjo6Tm9Fc2NhcGVzIDw8IGdTeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBpZCA8PCBjaERvdWJsZVF1b3RlOworCisgICAgICAgICAgICBpZCA9ICgoRE9NRW50aXR5ICopdG9Xcml0ZSktPmdldE5vdGF0aW9uTmFtZSgpOworICAgICAgICAgICAgaWYgKGlkICE9IDApCisgICAgICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMgPDwgZ05vdGF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgaWQgPDwgY2hEb3VibGVRdW90ZTsKKworICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMgPDwgY2hDbG9zZUFuZ2xlIDw8IGNoTEY7CisKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKy8qCisgICAgICAgIGNhc2UgRE9NTm9kZTo6Tk9UQVRJT05fTk9ERToKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgWE1MQ2ggKiAgc3RyOworCisgICAgICAgICAgICAqZ0Zvcm1hdHRlciA8PCBnWE1MRGVjbDEgPDwgKChET01YTUxEZWNsICopdG9Xcml0ZSktPmdldFZlcnNpb24oKTsKKworICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgZ1hNTERlY2wyIDw8IGdFbmNvZGluZ05hbWU7CisKKyAgICAgICAgICAgIHN0ciA9ICgoRE9NWE1MRGVjbCAqKXRvV3JpdGUpLT5nZXRTdGFuZGFsb25lKCk7CisgICAgICAgICAgICBpZiAoc3RyICE9IDApCisgICAgICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgZ1hNTERlY2wzIDw8IHN0cjsKKworICAgICAgICAgICAgKmdGb3JtYXR0ZXIgPDwgZ1hNTERlY2w0OworCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisqLworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY2VyciA8PCAiVW5yZWNvZ25pemVkIG5vZGUgdHlwZSA9ICIKKyAgICAgICAgICAgICAgICAgPDwgKGxvbmcpdG9Xcml0ZS0+Z2V0Tm9kZVR5cGUoKSA8PCBlbmRsOworICAgIH0KKyAgICByZXR1cm4gdGFyZ2V0OworfQorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgRW5kIG9mIG91dHB1dHRlcgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgRE9NTWVtRm9ybWF0VGFyZ2V0IDogcHVibGljIFhNTEZvcm1hdFRhcmdldAoreworcHVibGljOgorICAgIAorCXVuc2lnbmVkIGNoYXIgKiBidWZmZXI7CQkvLyBCdWZmZXIgdG8gd3JpdGUgdG8KKworCURPTU1lbUZvcm1hdFRhcmdldCgpICB7fTsKKyAgICB+RE9NTWVtRm9ybWF0VGFyZ2V0KCkge307CisKKwl2b2lkIHNldEJ1ZmZlciAodW5zaWduZWQgY2hhciAqIHRvU2V0KSB7YnVmZmVyID0gdG9TZXQ7fTsKKworCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyAgSW1wbGVtZW50YXRpb25zIG9mIHRoZSBmb3JtYXQgdGFyZ2V0IGludGVyZmFjZQorICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICB2b2lkIHdyaXRlQ2hhcnMoY29uc3QgICBYTUxCeXRlKiBjb25zdCAgdG9Xcml0ZSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgICB1bnNpZ25lZCBpbnQgICAgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MRm9ybWF0dGVyICogY29uc3QgZm9ybWF0dGVyKQorICAgIHsKKyAgICAgICAgLy8gU3VycHJpc2luZ2x5LCBTb2xhcmlzIHdhcyB0aGUgb25seSBwbGF0Zm9ybSBvbiB3aGljaAorICAgICAgICAvLyByZXF1aXJlZCB0aGUgY2hhciogY2FzdCB0byBwcmludCBvdXQgdGhlIHN0cmluZyBjb3JyZWN0bHkuCisgICAgICAgIC8vIFdpdGhvdXQgdGhlIGNhc3QsIGl0IHdhcyBwcmludGluZyB0aGUgcG9pbnRlciB2YWx1ZSBpbiBoZXguCisgICAgICAgIC8vIFF1aXRlIGFubm95aW5nLCBjb25zaWRlcmluZyBldmVyeSBvdGhlciBwbGF0Zm9ybSBwcmludGVkCisgICAgICAgIC8vIHRoZSBzdHJpbmcgd2l0aCB0aGUgZXhwbGljaXQgY2FzdCB0byBjaGFyKiBiZWxvdy4KKyAgICAgICAgbWVtY3B5KGJ1ZmZlciwgKGNoYXIgKikgdG9Xcml0ZSwgKGludCkgY291bnQpOworCQlidWZmZXJbY291bnRdID0gJ1wwJzsKKyAgICB9OworCitwcml2YXRlOgorICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gIFVuaW1wbGVtZW50ZWQgbWV0aG9kcy4KKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIERPTU1lbUZvcm1hdFRhcmdldChjb25zdCBET01NZW1Gb3JtYXRUYXJnZXQmIG90aGVyKTsKKyAgICB2b2lkIG9wZXJhdG9yPShjb25zdCBET01NZW1Gb3JtYXRUYXJnZXQmIHJocyk7CisKKwkKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gIG9zdHJlYW0gPDwgRE9NU3RyaW5nCisvLworLy8gIFN0cmVhbSBvdXQgYSBET00gc3RyaW5nLiBEb2luZyB0aGlzIHJlcXVpcmVzIHRoYXQgd2UgZmlyc3QgdHJhbnNjb2RlCisvLyAgdG8gY2hhciAqIGZvcm0gaW4gdGhlIGRlZmF1bHQgY29kZSBwYWdlIGZvciB0aGUgc3lzdGVtCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitET01QcmludEZvcm1hdFRhcmdldCAqRE9NdGFyZ2V0OworRE9NTWVtRm9ybWF0VGFyZ2V0ICpNRU10YXJnZXQ7CitYTUxGb3JtYXR0ZXIgKmZvcm1hdHRlciwgKk1FTWZvcm1hdHRlcjsKK3Vuc2lnbmVkIGNoYXIgKmNoYXJCdWZmZXI7CisKK3ZvaWQgcHJpbnRVc2FnZSh2b2lkKSB7CisKKwljZXJyIDw8ICJcblVzYWdlOiB0ZW1wbGF0ZXNpZ24gPGtleSBvcHRpb25zPiA8ZmlsZSB0byBzaWduPlxuXG4iOworI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKwljZXJyIDw8ICIgICAgV2hlcmUgPGtleSBvcHRpb25zPiBhcmUgb25lIG9mIDpcblxuIjsKKwljZXJyIDw8ICIgICAgICAgIC0teDUwOXN1YmplY3RuYW1lLy1zIDxkaXN0aW5ndWlzaGVkIG5hbWU+XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgIDxkaXN0aW5ndWlzaGVkIG5hbWU+IHdpbGwgYmUgc2V0IGFzIFN1YmplY3ROYW1lIGluIHg1MDlcbiI7CisJY2VyciA8PCAiICAgICAgICAtLWRzYWtleS8tZCAgPGRzYSBwcml2YXRlIGtleSBmaWxlPiA8cGFzc3dvcmQ+XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgIDxkc2EgcHJpdmF0ZSBrZXkgZmlsZT4gY29udGFpbnMgYSBQRU0gZW5jb2RlZCBwcml2YXRlIGtleVxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgICAgICAgICAgICA8cGFzc3dvcmQ+IGlzIHRoZSBwYXNzd29yZCB1c2VkIHRvIGRlY3J5cHQgdGhlIGtleSBmaWxlXG4iOworIwlpZiBkZWZpbmVkIChIQVZFX1dJTkNBUEkpCisJY2VyciA8PCAiICAgICAgICAgICAgICAgICAgICAgTk9URTogTm90IHVzYWJsZSBpZiAtLXdpbmNhcGkgcHJldmlvdXNseSBzZXRcbiI7CisjCWVuZGlmCisjICAgaWYgZGVmaW5lZChYU0VDX09QRU5TU0xfSEFWRV9FQykKKwljZXJyIDw8ICIgICAgICAgIC0tZWNrZXkvLWUgIDxlYyBwcml2YXRlIGtleSBmaWxlPiA8cGFzc3dvcmQ+XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgIDxlYyBwcml2YXRlIGtleSBmaWxlPiBjb250YWlucyBhIFBFTSBlbmNvZGVkIHByaXZhdGUga2V5XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgIDxwYXNzd29yZD4gaXMgdGhlIHBhc3N3b3JkIHVzZWQgdG8gZGVjcnlwdCB0aGUga2V5IGZpbGVcbiI7CisjICAgZW5kaWYKKyMJaWYgZGVmaW5lZCAoSEFWRV9XSU5DQVBJKQorCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgIE5PVEU6IE5vdCB1c2FibGUgaWYgLS13aW5jYXBpIHByZXZpb3VzbHkgc2V0XG4iOworIwllbmRpZgorCWNlcnIgPDwgIiAgICAgICAgLS1yc2FrZXkvLXIgPHJzYSBwcml2YXRlIGtleSBmaWxlPiA8cGFzc3dvcmQ+XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgIDxyc2EgcHJpdmF0ZWtleSBmaWxlPiBjb250YWlucyBhIFBFTSBlbmNvZGVkIHByaXZhdGUga2V5XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgIDxwYXNzd29yZD4gaXMgdGhlIHBhc3N3b3JkIHVzZWQgdG8gZGVjcnlwdCB0aGUga2V5IGZpbGVcbiI7CisJY2VyciA8PCAiICAgICAgICAtLXg1MDljZXJ0Ly14IDxmaWxlbmFtZT5cbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4gY29udGFpbnMgYSBQRU0gY2VydGlmaWNhdGUgdG8gYmUgYWRkZWQgYXMgYSBLZXlJbmZvXG4iOworI2VuZGlmCisJY2VyciA8PCAiICAgICAgICAtLWhtYWNrZXkvLWggPHN0cmluZz5cbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICAgICAgPHN0cmluZz4gaXMgdGhlIGhtYWMga2V5IHRvIHNldFxuIjsKKwljZXJyIDw8ICIgICAgICAgIC0tY2xlYXJrZXlzLy1jXG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgICBDbGVhcnMgb3V0IGFueSBjdXJyZW50IEtleUluZm8gZWxlbWVudHMgaW4gdGhlIGZpbGVcbiI7CisjaWYgZGVmaW5lZChIQVZFX1dJTkNBUEkpCisJY2VyciA8PCAiICAgICAgICAtLXdpbmRzcy8td2RcbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgZGVmYXVsdCB1c2VyIEFUX1NJR05BVFVSRSBrZXkgZnJvbSBkZWZhdWx0XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgICBXaW5kb3dzIERTUyBDU1BcbiI7CisJY2VyciA8PCAiICAgICAgICAtLXdpbnJzYS8td3JcbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgZGVmYXVsdCB1c2VyIEFUX1NJR05BVFVSRSBrZXkgZnJvbSBkZWZhdWx0XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgICBXaW5kb3dzIFJTQSBDU1BcbiI7CisJY2VyciA8PCAiICAgICAgICAtLXdpbmhtYWMvLXdoIDxzdHJpbmc+XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgICBDcmVhdGUgYSB3aW5kb3dzIEhNQUMga2V5IHVzaW5nIDxzdHJpbmc+IGFzIHRoZSBwYXNzd29yZC5cbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICAgICAgIFVzZXMgYSBTSEEtMSBoYXNoIG9mIHRoZSBwYXNzd29yZCB0byBkZXJpdmUgYSBrZXlcbiI7CisjaWYgZGVmaW5lZCAoQ1JZUFRfQUNRVUlSRV9DQUNIRV9GTEFHKQorCWNlcnIgPDwgIiAgICAgICAgLS13aW5jZXIvLXdjIDxTdWJqZWN0IE5hbWU+XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIHByaXZhdGUga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGUgbmFtZWQgY2VydGlmaWNhdGUgaW4gdGhlIFdpbmRvd3MgY2VydGlmaWNhdGUgc3RvcmVcbiI7CisjZW5kaWYgLyogQ1JZUFRfQUNRVUlSRV9DQUNIRV9GTEFHICovCisJY2VyciA8PCAiICAgICAgICAtLXdpbmRzc2tleWluZm8vLXdkaVxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgICAgICAgICAgICAgQ2xlYXIgS2V5SW5mbyBlbGVtZW50cyBhbmQgaW5zZXJ0IERTUyBwYXJhbWV0ZXJzIGZyb20gd2luZG93cyBrZXlcbiI7CisJY2VyciA8PCAiICAgICAgICAtLXdpbnJzYWtleWluZm8vLXdyaVxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgICAgICAgICAgICAgQ2xlYXIgS2V5SW5mbyBlbGVtZW50cyBhbmQgaW5zZXJ0IFJTQSBwYXJhbWV0ZXJzIGZyb20gd2luZG93cyBrZXlcbiI7CisjZW5kaWYKKworCit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworCisJWFNFQ0NyeXB0b0tleQkJCQkqIGtleSA9IE5VTEw7CisJRFNJR0tleUluZm9YNTA5CQkJCSoga2V5SW5mb1g1MDkgPSBOVUxMOworCWNvbnN0IGNoYXIJCQkJCSogeDUwOVN1YmplY3ROYW1lID0gTlVMTDsKKyNpZiBkZWZpbmVkIChIQVZFX09QRU5TU0wpCisJT3BlblNTTENyeXB0b1g1MDkJCQkqIGNlcnRzWzEyOF07CisjZW5kaWYKKwlpbnQJCQkJCQkJY2VydENvdW50ID0gMDsKKwlpbnQJCQkJCQkJcGFyYW1Db3VudDsKKwlib29sCQkJCQkJY2xlYXJLZXlJbmZvID0gZmFsc2U7CisjaWYgZGVmaW5lZChIQVZFX1dJTkNBUEkpCisJSENSWVBUUFJPVgkJCQkJd2luMzJEU1NDU1AgPSAwOwkJLy8gQ3J5cHRvIFByb3ZpZGVyCisJSENSWVBUUFJPVgkJCQkJd2luMzJSU0FDU1AgPSAwOwkJLy8gQ3J5cHRvIFByb3ZpZGVyCisJYm9vbAkJCQkJCXdpbkRzc0tleUluZm8gPSBmYWxzZTsKKwlib29sCQkJCQkJd2luUnNhS2V5SW5mbyA9IGZhbHNlOworCVdpbkNBUElDcnlwdG9LZXlEU0EJCQkqIHdpbktleURTQSA9IE5VTEw7CisJV2luQ0FQSUNyeXB0b0tleVJTQQkJCSogd2luS2V5UlNBID0gTlVMTDsKKyNlbmRpZgorCisJLy8gSW5pdGlhbGlzZSB0aGUgWE1MIHN5c3RlbQorCisJdHJ5IHsKKworCQlYTUxQbGF0Zm9ybVV0aWxzOjpJbml0aWFsaXplKCk7CisjaWZuZGVmIFhTRUNfTk9fWEFMQU4KKwkJWFBhdGhFdmFsdWF0b3I6OmluaXRpYWxpemUoKTsKKwkJWGFsYW5UcmFuc2Zvcm1lcjo6aW5pdGlhbGl6ZSgpOworI2VuZGlmCisJCVhTRUNQbGF0Zm9ybVV0aWxzOjpJbml0aWFsaXNlKCk7CisKKwl9CisKKwljYXRjaCAoY29uc3QgWE1MRXhjZXB0aW9uICZlKSB7CisKKwkJY2VyciA8PCAiRXJyb3IgZHVyaW5nIGluaXRpYWxpc2F0aW9uIG9mIFhlcmNlcyIgPDwgZW5kbDsKKwkJY2VyciA8PCAiRXJyb3IgTWVzc2FnZSA9IDogIgorCQkgICAgIDw8IGUuZ2V0TWVzc2FnZSgpIDw8IGVuZGw7CisKKwl9CisKKyNpZiBkZWZpbmVkIChIQVZFX09QRU5TU0wpCisJCisJLy8gSW5pdGlhbGlzZSBPcGVuU1NMCisJRVJSX2xvYWRfY3J5cHRvX3N0cmluZ3MoKTsKKwlCSU8gKiBiaW9fZXJyOworCQorCWlmICgoYmlvX2Vycj1CSU9fbmV3KEJJT19zX2ZpbGUoKSkpICE9IE5VTEwpCisJCUJJT19zZXRfZnAoYmlvX2VycixzdGRlcnIsQklPX05PQ0xPU0V8QklPX0ZQX1RFWFQpOworCisjZW5kaWYKKworCWlmIChhcmdjIDwgMikgeworCisJCXByaW50VXNhZ2UoKTsKKwkJZXhpdCAoMSk7CisJfQorCQorCXBhcmFtQ291bnQgPSAxOworCisJd2hpbGUgKHBhcmFtQ291bnQgPCBhcmdjIC0gMSkgeworCisJCS8vIFJ1biB0aHJvdWdoIGFsbCBwYXJhbWV0ZXJzCisKKwkJaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXg1MDlzdWJqZWN0bmFtZSIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1zIikgPT0gMCkgeworCisJCQlpZiAocGFyYW1Db3VudCArMiA+PSBhcmdjKSB7CisKKwkJCQlwcmludFVzYWdlKCk7CisJCQkJZXhpdCgxKTsKKwkJCX0KKworCQkJLy8gR2V0IHRoZSBzdWJqZWN0IG5hbWUKKworCQkJeDUwOVN1YmplY3ROYW1lID0gYXJndltwYXJhbUNvdW50ICsgMV07CisJCQlwYXJhbUNvdW50ICs9IDI7CisJCX0KKworI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKworCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1kc2FrZXkiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItZCIpID09IDAKKwkJCXx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXJzYWtleSIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1yIikgPT0gMAorIyAgIGlmIGRlZmluZWQoWFNFQ19PUEVOU1NMX0hBVkVfRUMpCisJCQl8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1lY2tleSIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1lIikgPT0gMAorIyAgIGVuZGlmCisgICAgICAgICAgICApIHsKKworCQkJLy8gT3BlblNTTCBLZXkKKworCQkJaWYgKHBhcmFtQ291bnQgKyAzID49IGFyZ2MpIHsKKworCQkJCXByaW50VXNhZ2UoKTsKKwkJCQlleGl0ICgxKTsKKworCQkJfQorCisJCQlpZiAoa2V5ICE9IDApIHsKKworCQkJCWNlcnIgPDwgIlxuRXJyb3IgbG9hZGluZyBwcml2YXRlIGtleSAtIGFub3RoZXIga2V5IGFscmVhZHkgbG9hZGVkXG5cbiI7CisJCQkJcHJpbnRVc2FnZSgpOworCQkJCWV4aXQoMSk7CisKKwkJCX0KKworCQkJLy8gTG9hZCB0aGUgc2lnbmluZyBrZXkKKwkJCS8vIEZvciBub3cganVzdCByZWFkIGEgcGFydGljdWxhciBmaWxlCisKKwkJCUJJTyAqIGJpb0tleTsKKwkJCWlmICgoYmlvS2V5ID0gQklPX25ldyhCSU9fc19maWxlKCkpKSA9PSBOVUxMKSB7CisKKwkJCQljZXJyIDw8ICJFcnJvciBvcGVuaW5nIHByaXZhdGUga2V5IGZpbGVcblxuIjsKKwkJCQlleGl0ICgxKTsKKworCQkJfQorCisJCQlpZiAoQklPX3JlYWRfZmlsZW5hbWUoYmlvS2V5LCBhcmd2W3BhcmFtQ291bnQgKyAxXSkgPD0gMCkgeworCisJCQkJY2VyciA8PCAiRXJyb3Igb3BlbmluZyBwcml2YXRlIGtleSBmaWxlXG5cbiI7CisJCQkJZXhpdCAoMSk7CisKKwkJCX0KKworCQkJRVZQX1BLRVkgKiBwa2V5OworCQkJcGtleSA9IFBFTV9yZWFkX2Jpb19Qcml2YXRlS2V5KGJpb0tleSxOVUxMLE5VTEwsYXJndltwYXJhbUNvdW50ICsgMl0pOworCisJCQlpZiAocGtleSA9PSBOVUxMKSB7CisKKwkJCQljZXJyIDw8ICJFcnJvciBsb2FkaW5nIHByaXZhdGUga2V5XG5cbiI7CisJCQkJRVJSX3ByaW50X2Vycm9ycyhiaW9fZXJyKTsKKwkJCQlleGl0ICgxKTsKKworCQkJfQorCisJCQlpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tZHNha2V5IikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLWQiKSA9PSAwKSB7CisKKwkJCQkvLyBDaGVjayB0eXBlIGlzIGNvcnJlY3QKKworCQkJCWlmIChwa2V5LT50eXBlICE9IEVWUF9QS0VZX0RTQSkgeworCQkJCQljZXJyIDw8ICJEU0EgS2V5IHJlcXVlc3RlZCwgYnV0IE9wZW5TU0wgbG9hZGVkIHNvbWV0aGluZyBlbHNlXG4iOworCQkJCQlleGl0ICgxKTsKKwkJCQl9CisKKwkJCQkvLyBDcmVhdGUgdGhlIFhTRUMgT3BlblNTTCBpbnRlcmZhY2UKKwkJCQlrZXkgPSBuZXcgT3BlblNTTENyeXB0b0tleURTQShwa2V5KTsKKwkJCX0KKyMgICBpZiBkZWZpbmVkKFhTRUNfT1BFTlNTTF9IQVZFX0VDKQorCQkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tZWNrZXkiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItZSIpID09IDApIHsKKworCQkJCS8vIENoZWNrIHR5cGUgaXMgY29ycmVjdAorCisJCQkJaWYgKHBrZXktPnR5cGUgIT0gRVZQX1BLRVlfRUMpIHsKKwkJCQkJY2VyciA8PCAiRUMgS2V5IHJlcXVlc3RlZCwgYnV0IE9wZW5TU0wgbG9hZGVkIHNvbWV0aGluZyBlbHNlXG4iOworCQkJCQlleGl0ICgxKTsKKwkJCQl9CisKKwkJCQkvLyBDcmVhdGUgdGhlIFhTRUMgT3BlblNTTCBpbnRlcmZhY2UKKwkJCQlrZXkgPSBuZXcgT3BlblNTTENyeXB0b0tleUVDKHBrZXkpOworCQkJfQorIyAgIGVuZGlmCisgICAgICAgICAgICBlbHNlIHsKKwkJCQlpZiAocGtleS0+dHlwZSAhPSBFVlBfUEtFWV9SU0EpIHsKKwkJCQkJY2VyciA8PCAiUlNBIEtleSByZXF1ZXN0ZWQsIGJ1dCBPcGVuU1NMIGxvYWRlZCBzb21ldGhpbmcgZWxzZVxuIjsKKwkJCQkJZXhpdCAoMSk7CisJCQkJfQorCQkJCWtleSA9IG5ldyBPcGVuU1NMQ3J5cHRvS2V5UlNBKHBrZXkpOworCQkJfQorCisJCQlFVlBfUEtFWV9mcmVlKHBrZXkpOworCQkJQklPX2ZyZWUoYmlvS2V5KTsKKworCQkJcGFyYW1Db3VudCArPSAzOworCQkJCisJCX0gLyogYXJndlsxXSA9ICJkc2EvcnNhL2VjIiAqLworCisKKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0teDUwOWNlcnQiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICIteCIpID09IDApIHsKKworCQkJLy8gWDUwOURhdGEga2V5SW5mbworCisJCQlpZiAocGFyYW1Db3VudCArIDIgPj0gYXJnYykgeworCisJCQkJcHJpbnRVc2FnZSgpOworCQkJCWV4aXQgKDEpOworCisJCQl9CisKKwkJCS8vIExvYWQgdGhlIGNlcnQuCisJCQkvLyBGb3Igbm93IGp1c3QgcmVhZCBhIHBhcnRpY3VsYXIgZmlsZQorCisJCQlCSU8gKiBiaW9YNTA5OworCisJCQlpZiAoKGJpb1g1MDkgPSBCSU9fbmV3KEJJT19zX2ZpbGUoKSkpID09IE5VTEwpIHsKKworCQkJCWNlcnIgPDwgIkVycm9yIG9wZW5pbmcgZmlsZVxuXG4iOworCQkJCWV4aXQgKDEpOworCisJCQl9CisKKwkJCWlmIChCSU9fcmVhZF9maWxlbmFtZShiaW9YNTA5LCBhcmd2W3BhcmFtQ291bnQgKyAxXSkgPD0gMCkgeworCisJCQkJY2VyciA8PCAiRXJyb3Igb3BlbmluZyBYNTA5IENlcnRpZmljYXRlICIgPDwgYXJndltwYXJhbUNvdW50ICsgMV0gPDwgIlxuXG4iOworCQkJCWV4aXQgKDEpOworCisJCQl9CisKKwkJCVg1MDkgKiB4CisJCQkJOworCQkJeCA9IFBFTV9yZWFkX2Jpb19YNTA5X0FVWChiaW9YNTA5LE5VTEwsTlVMTCxOVUxMKTsKKworCQkJaWYgKHggPT0gTlVMTCkgeworCisJCQkJY2VyciA8PCAiRXJyb3IgbG9hZGluZyBjZXJ0aWZpY2F0ZVxuXG4iOworCQkJCUVSUl9wcmludF9lcnJvcnMoYmlvX2Vycik7CisJCQkJZXhpdCAoMSk7CisKKwkJCX0KKworCQkJLy8gQ3JlYXRlIHRoZSBYU0VDIE9wZW5TU0wgaW50ZXJmYWNlIC0gdXNlZCBvbmx5IHRvIHRyYW5zbGF0ZSB0byBCYXNlNjQKKworCQkJY2VydHNbY2VydENvdW50KytdID0gbmV3IE9wZW5TU0xDcnlwdG9YNTA5KHgpOworCQkJWDUwOV9mcmVlKHgpOworCQkJQklPX2ZyZWUoYmlvWDUwOSk7CisKKwkJCXBhcmFtQ291bnQgKz0gMjsKKwkJCQorCQl9IC8qIGFyZ3ZbMV0gPSAiLS14NTA5Y2VydCIgKi8KKwkJCisJCWVsc2UgCisjZW5kaWYKKwkJaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWhtYWNrZXkiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItaCIpID09IDApIHsKKworI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKwkJCU9wZW5TU0xDcnlwdG9LZXlITUFDICogaG1hY0tleSA9IG5ldyBPcGVuU1NMQ3J5cHRvS2V5SE1BQygpOworI2Vsc2UKKyMJaWYgZGVmaW5lZCAoSEFWRV9XSU5DQVBJKQorCQkJV2luQ0FQSUNyeXB0b0tleUhNQUMgKiBobWFjS2V5ID0gbmV3IFdpbkNBUElDcnlwdG9LZXlITUFDKDApOworIwllbmRpZgorI2VuZGlmCisJCQlobWFjS2V5LT5zZXRLZXkoKHVuc2lnbmVkIGNoYXIgKikgYXJndltwYXJhbUNvdW50ICsgMV0sICh1bnNpZ25lZCBpbnQpIHN0cmxlbihhcmd2W3BhcmFtQ291bnQgKyAxXSkpOworCQkJa2V5ID0gaG1hY0tleTsKKwkJCXBhcmFtQ291bnQgKz0gMjsKKworCQl9CisKKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tY2xlYXJrZXlzIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLWMiKSA9PSAwKSB7CisKKwkJCWNsZWFyS2V5SW5mbyA9IHRydWU7CisJCQlwYXJhbUNvdW50ICs9IDE7CisKKwkJfQorCisjaWYgZGVmaW5lZCAoSEFWRV9XSU5DQVBJKQorCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS13aW5kc3MiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItd2QiKSA9PSAwKSB7CisKKwkJCVdpbkNBUElDcnlwdG9Qcm92aWRlciAqIGNwOworCQkJLy8gRmlyc3Qgc2V0IHdpbmRvd3MgYXMgdGhlIGNyeXB0byBwcm92aWRlcgorCQkJY3AgPSBuZXcgV2luQ0FQSUNyeXB0b1Byb3ZpZGVyKCk7CisJCQlYU0VDUGxhdGZvcm1VdGlsczo6U2V0Q3J5cHRvUHJvdmlkZXIoY3ApOworCQkJCisJCQkvLyBOb3cgc2V0IHRoZSBrZXkKKwkJCWlmICghQ3J5cHRBY3F1aXJlQ29udGV4dCgmd2luMzJEU1NDU1AsCisJCQkJTlVMTCwKKwkJCQlOVUxMLAorCQkJCVBST1ZfRFNTLAorCQkJCTApKSB7CisKKwkJCQljZXJyIDw8ICJFcnJvciBhY3F1aXJpbmcgQ3J5cHRvIGNvbnRleHQgLSBBdHRlbXB0aW5nIHRvIGdlbmVyYXRlIG5ldyBrZXkgcGFpciIgPDwgZW5kbDsKKwkJCQkKKwkJCQkvLyBBdHRlbXB0IHRvIGdlbiBhIG5ldyBrZXlzZXQKKwkJCQlpZiAoIUNyeXB0QWNxdWlyZUNvbnRleHQoJndpbjMyRFNTQ1NQLAorCQkJCQlOVUxMLAorCQkJCQlOVUxMLAorCQkJCQlQUk9WX0RTUywKKwkJCQkJQ1JZUFRfTkVXS0VZU0VUKSkgeworCQkJCQkJY2VyciA8PCAiRXJyb3IgYWNxdWlyaW5nIERTUyBDcnlwdG8gU2VydmljZSBQcm92aWRlciB3aXRoIG5ldyBrZXlzZXQiIDw8IGVuZGw7CisJCQkJCQlyZXR1cm4gMjsKKwkJCQl9CisJCQkJZWxzZSB7CisJCQkJCUhDUllQVEtFWSBrOworCQkJCQlpZiAoIUNyeXB0R2VuS2V5KHdpbjMyRFNTQ1NQLCBBVF9TSUdOQVRVUkUsIENSWVBUX0VYUE9SVEFCTEUsICZrKSkgeworCQkJCQkJY2VyciA8PCAiRXJyb3IgZ2VuZXJhdGluZyBEU1Mga2V5c2V0IiA8PCBlbmRsOworCQkJCQkJcmV0dXJuIDI7CisJCQkJCX0KKwkJCQkJQ3J5cHREZXN0cm95S2V5KGspOworCQkJCX0KKwkJCX0KKwkJCQorCQkJd2luS2V5RFNBID0gbmV3IFdpbkNBUElDcnlwdG9LZXlEU0Eod2luMzJEU1NDU1AsIEFUX1NJR05BVFVSRSwgdHJ1ZSk7CisJCQlrZXkgPSB3aW5LZXlEU0E7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKworCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS13aW5yc2EiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItd3IiKSA9PSAwKSB7CisJCQlXaW5DQVBJQ3J5cHRvUHJvdmlkZXIgKiBjcDsKKwkJCWNwID0gbmV3IFdpbkNBUElDcnlwdG9Qcm92aWRlcigpOworCQkJWFNFQ1BsYXRmb3JtVXRpbHM6OlNldENyeXB0b1Byb3ZpZGVyKGNwKTsKKworCQkJaWYgKCFDcnlwdEFjcXVpcmVDb250ZXh0KCZ3aW4zMlJTQUNTUCwKKwkJCQlOVUxMLAorCQkJCU5VTEwsCisJCQkJUFJPVl9SU0FfRlVMTCwKKwkJCQkwKSkgeworCisJCQkJY2VyciA8PCAiRXJyb3IgYWNxdWlyaW5nIENyeXB0byBjb250ZXh0IC0gQXR0ZW1wdGluZyB0byBnZW5lcmF0ZSBuZXcgUlNBIGtleSBwYWlyIiA8PCBlbmRsOworCQkJCQorCQkJCS8vIEF0dGVtcHQgdG8gZ2VuIGEgbmV3IGtleXNldAorCQkJCWlmICghQ3J5cHRBY3F1aXJlQ29udGV4dCgmd2luMzJSU0FDU1AsCisJCQkJCU5VTEwsCisJCQkJCU5VTEwsCisJCQkJCVBST1ZfUlNBX0ZVTEwsCisJCQkJCUNSWVBUX05FV0tFWVNFVCkpIHsKKwkJCQkJCWNlcnIgPDwgIkVycm9yIGFjcXVpcmluZyBSU0EgQ3J5cHRvIFNlcnZpY2UgUHJvdmlkZXIgd2l0aCBuZXcga2V5c2V0IiA8PCBlbmRsOworCQkJCQkJcmV0dXJuIDI7CisJCQkJfQorCQkJCWVsc2UgeworCQkJCQlIQ1JZUFRLRVkgazsKKwkJCQkJaWYgKCFDcnlwdEdlbktleSh3aW4zMlJTQUNTUCwgQVRfU0lHTkFUVVJFLCBDUllQVF9FWFBPUlRBQkxFLCAmaykpIHsKKwkJCQkJCWNlcnIgPDwgIkVycm9yIGdlbmVyYXRpbmcgUlNBIGtleXNldCIgPDwgZW5kbDsKKwkJCQkJCXJldHVybiAyOworCQkJCQl9CisJCQkJCUNyeXB0RGVzdHJveUtleShrKTsKKwkJCQl9CisJCQl9CisKKwkJCXdpbktleVJTQSA9IG5ldyBXaW5DQVBJQ3J5cHRvS2V5UlNBKHdpbjMyUlNBQ1NQLCBBVF9TSUdOQVRVUkUsIHRydWUpOworCQkJa2V5ID0gd2luS2V5UlNBOworCQkJcGFyYW1Db3VudCsrOworCQl9CisKKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0td2luaG1hYyIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi13aCIpID09IDApIHsKKworCQkJV2luQ0FQSUNyeXB0b1Byb3ZpZGVyICogY3A7CisJCQkvLyBPYnRhaW4gZGVmYXVsdCBQUk9WX1JTQSwgd2l0aCBkZWZhdWx0IHVzZXIga2V5IGNvbnRhaW5lcgorCQkJLy8gTm90ZSB3ZSBvcGVuIGluIFZFUklGWUNPTlRFWFQgYXMgd2UgZG8gbm90IHJlcXVpcmUgYSBhc3N5bWV0cmljIGtleSBwYWlyCisJCQlpZiAoIUNyeXB0QWNxdWlyZUNvbnRleHQoJndpbjMyUlNBQ1NQLAorCQkJCU5VTEwsCisJCQkJTlVMTCwKKwkJCQlQUk9WX1JTQV9GVUxMLAorCQkJCUNSWVBUX1ZFUklGWUNPTlRFWFQpKSB7CisJCQkJCWNlcnIgPDwgIkVycm9yIGFjcXVpcmluZyBSU0EgQ3J5cHRvIFNlcnZpY2UgUHJvdmlkZXIiIDw8IGVuZGw7CisJCQkJCXJldHVybiAyOworCQkJfQorCQkJY3AgPSBuZXcgV2luQ0FQSUNyeXB0b1Byb3ZpZGVyKCk7CisJCQlYU0VDUGxhdGZvcm1VdGlsczo6U2V0Q3J5cHRvUHJvdmlkZXIoY3ApOworCisJCQlwYXJhbUNvdW50Kys7CisJCQlIQ1JZUFRLRVkgazsKKwkJCUhDUllQVEhBU0ggaDsKKwkJCUJPT0wgZlJlc3VsdCA9IENyeXB0Q3JlYXRlSGFzaCgKKwkJCQl3aW4zMlJTQUNTUCwKKwkJCQlDQUxHX1NIQSwKKwkJCQkwLAorCQkJCTAsCisJCQkJJmgpOworCisJCQlpZiAoZlJlc3VsdCA9PSAwKSB7CisJCQkJY2VyciA8PCAiRXJyb3IgY3JlYXRpbmcgaGFzaCB0byBjcmVhdGUgd2luZG93cyBobWFjIGtleSBmcm9tIHBhc3N3b3JkIiA8PCBlbmRsOworCQkJCXJldHVybiAyOworCQkJfQorCQkJZlJlc3VsdCA9IENyeXB0SGFzaERhdGEoCisJCQkJaCwKKwkJCQkodW5zaWduZWQgY2hhciAqKSBhcmd2W3BhcmFtQ291bnRdLAorCQkJCShEV09SRCkgc3RybGVuKGFyZ3ZbcGFyYW1Db3VudF0pLAorCQkJCTApOworCQkJCisJCQlpZiAoZlJlc3VsdCA9PSAwKSB7CisJCQkJY2VyciA8PCAiRXJyb3IgaGFzaGluZyBwYXNzd29yZCB0byBjcmVhdGUgd2luZG93cyBobWFjIGtleSIgPDwgZW5kbDsKKwkJCQlyZXR1cm4gMjsKKwkJCX0KKworCQkJLy8gTm93IGNyZWF0ZSBhIGtleQorCQkJZlJlc3VsdCA9IENyeXB0RGVyaXZlS2V5KAorCQkJCXdpbjMyUlNBQ1NQLAorCQkJCUNBTEdfUkMyLAorCQkJCWgsCisJCQkJQ1JZUFRfRVhQT1JUQUJMRSwKKwkJCQkmayk7CisKKwkJCWlmIChmUmVzdWx0ID09IDApIHsKKwkJCQljZXJyIDw8ICJFcnJvciBkZXJpdmluZyBrZXkgZnJvbSBoYXNoIHZhbHVlIiA8PCBlbmRsOworCQkJCXJldHVybiAyOworCQkJfQorCisJCQkvLyBXcmFwIGluIGEgV2luQ0FQSSBvYmplY3QKKwkJCVdpbkNBUElDcnlwdG9LZXlITUFDICogaGs7CisJCQloayA9IG5ldyBXaW5DQVBJQ3J5cHRvS2V5SE1BQyh3aW4zMlJTQUNTUCk7CisJCQloay0+c2V0V2luS2V5KGspOyAKKworCQkJa2V5ID0gaGs7CisKKwkJCUNyeXB0RGVzdHJveUhhc2goaCk7CisJCQlwYXJhbUNvdW50Kys7CisKKwkJfQorCisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXdpbmRzc2tleWluZm8iKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItd2RpIikgPT0gMCkgeworCQkJd2luRHNzS2V5SW5mbyA9IHRydWU7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKworCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS13aW5yc2FrZXlpbmZvIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXdyaSIpID09IDApIHsKKwkJCXdpblJzYUtleUluZm8gPSB0cnVlOworCQkJcGFyYW1Db3VudCsrOworCQl9CisKKwkJLy8gTmVlZCB0byBmaW5kIGEgYmV0dGVyIHdheSB0byBjaGVjayB0aGlzCisJCS8vIElmIENyeXB0QWNxdWlyZUNlcnRpZmljYXRlUHJpdmF0ZUtleSBpcyBub3QgZGVmaW5lZCBpbiB0aGUgaW5jbHVkZWQKKwkJLy8gdmVyc2lvbiBvZiB3aW5jYXBpLmgsIENSWVBUX0FDUVVJUkVfQ0FDSEVfRkxBRyB3aWxsIG5vdCBiZSBzZXQKKworI2lmIGRlZmluZWQgKENSWVBUX0FDUVVJUkVfQ0FDSEVfRkxBRykKKwkJCisJCS8vIENvZGUgcHJvdmlkZWQgYnkgTWlsYW4gVG9taWMKKworCQkvL1BsZWFzZSBub3RlIHRoYXQgdGhpcyBleGFtcGxlIGJlbG93IHVzZSBDcnlwdEFjcXVpcmVDZXJ0aWZpY2F0ZVByaXZhdGVLZXkoKSBmdW5jdGlvbgorCQkvL3doaWNoIGlzIG5vdCBkZWNsYXJlZCBpbiB3aW5jcnlwdC5oIHRoYXQgc2hpcHMgd2l0aCBWQysrIDYuIElmIHlvdSB3b3VsZCBsaWtlIHRvIHJ1bgorCQkvL3RoaXMgZXhhbXBsZSB5b3UnbGwgbmVlZCB0byByZXBsYWNlIHlvdXIgb2xkIHdpbmNyeXB0LmggYW5kIGNyeXB0MzIubGliIHdpdGggbmV3IHZlcnNpb25zLgorCQkvL1RoaXMgZXhhbXBsZSBiZWxvdyBpcyBjb21wYXRpYmxlIHdpdGggV2luZG93cyA5OC9JRSA1IGFuZCBhYm92ZSBPUy9JRSB2ZXJzaW9ucy4KKworCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS13aW5jZXIiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItd2MiKSA9PSAwKSB7CisJCQlXaW5DQVBJQ3J5cHRvUHJvdmlkZXIgKiBjcDsKKwkJCVBDQ0VSVF9DT05URVhUICAgICAgICAgIHBTaWduZXJDZXJ0ID0gTlVMTDsKKwkJCURXT1JEICAgICAgICAgICAgICAgICAgIGR3S2V5U3BlYzsKKwkJCUhDRVJUU1RPUkUJCQkJaFN0b3JlSGFuZGxlOworCQkJI2RlZmluZSBNWV9FTkNPRElOR19UWVBFICAoUEtDU183X0FTTl9FTkNPRElORyB8IFg1MDlfQVNOX0VOQ09ESU5HKQorCisJCQkvLyBPYnRhaW4gZGVmYXVsdCBQUk9WX0RTUyB3aXRoIGRlZmF1bHQgdXNlciBrZXkgY29udGFpbmVyCisJCQlpZiAoIUNyeXB0QWNxdWlyZUNvbnRleHQoJndpbjMyRFNTQ1NQLAorCQkJCU5VTEwsCisJCQkJTlVMTCwKKwkJCQlQUk9WX0RTUywKKwkJCQkwKSkgeworCQkJCQljZXJyIDw8ICJFcnJvciBhY3F1aXJpbmcgRFNTIENyeXB0byBTZXJ2aWNlIFByb3ZpZGVyIiA8PCBlbmRsOworCQkJCQlyZXR1cm4gMjsKKwkJCX0vLyovCisKKwkJCS8vIE9wZW4gJ1BlcnNvbmFsJyBjZXJ0aWZpY2F0ZSBzdG9yZSAKKwkJCWlmICghKGhTdG9yZUhhbmRsZSA9IENlcnRPcGVuU3RvcmUoQ0VSVF9TVE9SRV9QUk9WX1NZU1RFTSwKKwkJCQkwLAorCQkJCU5VTEwsCisJCQkJQ0VSVF9TWVNURU1fU1RPUkVfQ1VSUkVOVF9VU0VSLAorCQkJCUwiTVkiKSkpIHsKKwkJCQkJY2VyciA8PCAiRXJyb3Igb3BlbmluZyAnUGVyc29uYWwnIHN0b3JlLiIgPDwgZW5kbDsKKwkJCQkJcmV0dXJuIDI7CisJCQl9CisKKwkJCS8vIEZpbmQgZGVzaXJlZCBjZXJpZmljYXRlCisJCQlpZiAoIShwU2lnbmVyQ2VydCA9IENlcnRGaW5kQ2VydGlmaWNhdGVJblN0b3JlKGhTdG9yZUhhbmRsZSwKKwkJCQlNWV9FTkNPRElOR19UWVBFLAorCQkJCTAsCisJCQkJQ0VSVF9GSU5EX1NVQkpFQ1RfU1RSX0EsCisJCQkJYXJndltwYXJhbUNvdW50KzFdLAorCQkJCU5VTEwpKSkgeworCQkJCQljZXJyIDw8ICJDYW4ndCBmaW5kICciIDw8IGFyZ3ZbcGFyYW1Db3VudCsxXSA8PCAiJyBjZXJ0aWZpY2F0ZSBpbiAnUGVyc29uYWwnIHN0b3JlLiIgPDwgZW5kbDsKKwkJCQkJcmV0dXJuIDI7CisJCQl9CisKKwkJCS8vIE5vdyBnZXQgY2VydGlmaWNhdGUncyBwcml2YXRlIGtleQorCQkJaWYgKCFDcnlwdEFjcXVpcmVDZXJ0aWZpY2F0ZVByaXZhdGVLZXkocFNpZ25lckNlcnQsCisJCQkJMCwKKwkJCQlOVUxMLAorCQkJCSZ3aW4zMlJTQUNTUCwKKwkJCQkmZHdLZXlTcGVjLAorCQkJCU5VTEwpKSB7CisJCQkJCWNlcnIgPDwgIkNhbid0IGFjcXVpcmUgcHJpdmF0ZSBrZXkgb2YgJyIgPDwgYXJndltwYXJhbUNvdW50KzFdIDw8ICInIGNlcnRpZmljYXRlLiIgPDwgZW5kbDsKKwkJCQkJZXhpdCgxKTsKKwkJCX0KKworCQkJY3AgPSBuZXcgV2luQ0FQSUNyeXB0b1Byb3ZpZGVyKCk7CisJCQlYU0VDUGxhdGZvcm1VdGlsczo6U2V0Q3J5cHRvUHJvdmlkZXIoY3ApOworCisJCQlIQ1JZUFRLRVkgazsKKwkJCUJPT0wgZlJlc3VsdCA9IENyeXB0R2V0VXNlcktleSgKKwkJCQl3aW4zMlJTQUNTUCwKKwkJCQlkd0tleVNwZWMsCisJCQkJJmspOworCisJCQlpZiAoIWZSZXN1bHQgfHwgayA9PSAwKSB7CisJCQkJY2VyciA8PCAiRXJyb3Igb2J0YWluaW5nIGRlZmF1bHQgdXNlciAoQVRfU0lHTkFUVVJFIG9yIEFUX0tFWUVYQ0hBTkdFKSBrZXkgZnJvbSB3aW5kb3dzIFJTQSBwcm92aWRlci5cbiI7CisJCQkJZXhpdCgxKTsKKwkJCX07CisKKwkJCXdpbktleVJTQSA9IG5ldyBXaW5DQVBJQ3J5cHRvS2V5UlNBKHdpbjMyUlNBQ1NQLCBrKTsKKwkJCWtleSA9IHdpbktleVJTQTsKKwkJCXBhcmFtQ291bnQgKz0gMjsKKworCQkJQ2VydEZyZWVDZXJ0aWZpY2F0ZUNvbnRleHQocFNpZ25lckNlcnQpOworCQkJQ2VydENsb3NlU3RvcmUoaFN0b3JlSGFuZGxlLCAwKTsKKwkJfQorCisjZW5kaWYgLyogQ1JZUFRfQUNRVUlSRV9DQUNIRV9GTEFHICovCisKKyNlbmRpZiAvKiBIQVZFX1dJTkNBUEkgKi8KKworCQllbHNlIHsKKworCQkJcHJpbnRVc2FnZSgpOworCQkJZXhpdCgxKTsKKworCQl9CisKKwl9CisKKwkvLyBDcmVhdGUgYW5kIHNldCB1cCB0aGUgcGFyc2VyCisKKwlYZXJjZXNET01QYXJzZXIgKiBwYXJzZXIgPSBuZXcgWGVyY2VzRE9NUGFyc2VyOworCQorCXBhcnNlci0+c2V0RG9OYW1lc3BhY2VzKHRydWUpOworCXBhcnNlci0+c2V0Q3JlYXRlRW50aXR5UmVmZXJlbmNlTm9kZXModHJ1ZSk7CisKKwkvLyBOb3cgcGFyc2Ugb3V0IGZpbGUKKworCWJvb2wgZXJyb3JzT2NjdXJlZCA9IGZhbHNlOworCXhzZWNzaXplX3QgZXJyb3JDb3VudCA9IDA7CisgICAgdHJ5CisgICAgeworICAgIAlwYXJzZXItPnBhcnNlKGFyZ3ZbYXJnYyAtIDFdKTsKKyAgICAgICAgZXJyb3JDb3VudCA9IHBhcnNlci0+Z2V0RXJyb3JDb3VudCgpOworICAgICAgICBpZiAoZXJyb3JDb3VudCA+IDApCisgICAgICAgICAgICBlcnJvcnNPY2N1cmVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBjYXRjaCAoY29uc3QgWE1MRXhjZXB0aW9uJiBlKQorICAgIHsKKyAgICAgICAgY2VyciA8PCAiQW4gZXJyb3Igb2NjdXJlZCBkdXJpbmcgcGFyc2luZ1xuICAgTWVzc2FnZTogIgorICAgICAgICAgICAgIDw8IGUuZ2V0TWVzc2FnZSgpIDw8IGVuZGw7CisgICAgICAgIGVycm9yc09jY3VyZWQgPSB0cnVlOworICAgIH0KKworCisgICAgY2F0Y2ggKGNvbnN0IERPTUV4Y2VwdGlvbiYgZSkKKyAgICB7CisgICAgICAgY2VyciA8PCAiQSBET00gZXJyb3Igb2NjdXJlZCBkdXJpbmcgcGFyc2luZ1xuICAgRE9NRXhjZXB0aW9uIGNvZGU6ICIKKyAgICAgICAgICAgICA8PCBlLmNvZGUgPDwgZW5kbDsKKyAgICAgICAgZXJyb3JzT2NjdXJlZCA9IHRydWU7CisgICAgfQorCisJaWYgKGVycm9yc09jY3VyZWQpIHsKKworCQljb3V0IDw8ICJFcnJvcnMgZHVyaW5nIHBhcnNlIiA8PCBlbmRsOworCQlleGl0ICgxKTsKKworCX0KKworCS8qCisKKwkJTm93IHRoYXQgd2UgaGF2ZSB0aGUgcGFyc2VkIGZpbGUsIGdldCB0aGUgRE9NIGRvY3VtZW50IGFuZCBzdGFydCBsb29raW5nIGF0IGl0CisKKwkqLworCQorCURPTU5vZGUgKmRvYzsJCS8vIFRoZSBkb2N1bWVudCB0aGF0IHdlIHBhcnNlZAorCisJZG9jID0gcGFyc2VyLT5nZXREb2N1bWVudCgpOworCURPTURvY3VtZW50ICp0aGVET00gPSBwYXJzZXItPmdldERvY3VtZW50KCk7CisKKwkvLyBGaW5kIHRoZSBzaWduYXR1cmUgbm9kZQorCQorCURPTU5vZGUgKnNpZ05vZGUgPSBmaW5kRFNJR05vZGUoZG9jLCAiU2lnbmF0dXJlIik7CisKKwkvLyBDcmVhdGUgdGhlIHNpZ25hdHVyZSBjaGVja2VyCisKKwlpZiAoc2lnTm9kZSA9PSAwKSB7CisKKwkJY2VyciA8PCAiQ291bGQgbm90IGZpbmQgPFNpZ25hdHVyZT4gbm9kZSBpbiAiIDw8IGFyZ3ZbYXJnYy0xXSA8PCBlbmRsOworCQlleGl0KDEpOworCX0KKworCisJWFNFQ1Byb3ZpZGVyICogcHJvdiA9IG5ldyBYU0VDUHJvdmlkZXI7CisJRFNJR1NpZ25hdHVyZSAqIHNpZyA9IHByb3YtPm5ld1NpZ25hdHVyZUZyb21ET00odGhlRE9NLCBzaWdOb2RlKTsKKworCS8vIFVzZSB0aGUgaW50ZXJuYWwgVVJJIHJlc29sdmVyCisjaWYgZGVmaW5lZChfV0lOMzIpCisJWFNFQ1VSSVJlc29sdmVyR2VuZXJpY1dpbjMyKiB0aGVSZXNvbHZlciA9IG5ldyBYU0VDVVJJUmVzb2x2ZXJHZW5lcmljV2luMzIoKTsKKyNlbHNlCisJWFNFQ1VSSVJlc29sdmVyR2VuZXJpY1VuaXgqIHRoZVJlc29sdmVyID0gbmV3IFhTRUNVUklSZXNvbHZlckdlbmVyaWNVbml4KCk7CisjZW5kaWYgCisgICAgIAorCS8vIE1hcCBvdXQgYmFzZSBwYXRoIG9mIHRoZSBmaWxlCisJY2hhciAqIGZpbGVuYW1lPWFyZ3ZbYXJnYy0xXTsKKwljaGFyIHBhdGhbX01BWF9QQVRIXTsKKwljaGFyIGJhc2VVUklbKF9NQVhfUEFUSCAqIDIpICsgMTBdOworCV9nZXRjd2QocGF0aCwgX01BWF9QQVRIKTsKKworCXN0cmNweShiYXNlVVJJLCAiZmlsZTovLy8iKTsJCQorCisJLy8gVWdseSBhbmQgbmFzdHkgYnV0IHF1aWNrCisJaWYgKGZpbGVuYW1lWzBdICE9ICdcXCcgJiYgZmlsZW5hbWVbMF0gIT0gJy8nICYmIGZpbGVuYW1lWzFdICE9ICc6JykgeworCQlzdHJjYXQoYmFzZVVSSSwgcGF0aCk7CisJCXN0cmNhdChiYXNlVVJJLCAiLyIpOworCX0gZWxzZSBpZiAocGF0aFsxXSA9PSAnOicpIHsKKwkJcGF0aFsyXSA9ICdcMCc7CisJCXN0cmNhdChiYXNlVVJJLCBwYXRoKTsKKwl9CisKKwlzdHJjYXQoYmFzZVVSSSwgZmlsZW5hbWUpOworCisJLy8gRmluZCBhbnkgJzonIGFuZCAiXCIgY2hhcmFjdGVycworCWludCBsYXN0U2xhc2ggPSAwOworCWZvciAodW5zaWduZWQgaW50IGkgPSA4OyBpIDwgc3RybGVuKGJhc2VVUkkpOyArK2kpIHsKKwkJaWYgKGJhc2VVUklbaV0gPT0gJ1xcJykgeworCQkJbGFzdFNsYXNoID0gaTsKKwkJCWJhc2VVUklbaV0gPSAnLyc7CisJCX0KKwkJZWxzZSBpZiAoYmFzZVVSSVtpXSA9PSAnLycpCisJCQlsYXN0U2xhc2ggPSBpOworCX0KKworCS8vIFRoZSBsYXN0ICJcXCIgbXVzdCBwcmVmaXggdGhlIGZpbGVuYW1lCisJYmFzZVVSSVtsYXN0U2xhc2ggKyAxXSA9ICdcMCc7CisKKwl0aGVSZXNvbHZlci0+c2V0QmFzZVVSSShNQUtFX1VOSUNPREVfU1RSSU5HKGJhc2VVUkkpKTsKKwlzaWctPnNldFVSSVJlc29sdmVyKHRoZVJlc29sdmVyKTsKKworCXRyeSB7CisJCXNpZy0+bG9hZCgpOworCQlpZiAoY2xlYXJLZXlJbmZvID09IHRydWUpCisJCQlzaWctPmNsZWFyS2V5SW5mbygpOworCQlpZiAoa2V5ICE9IE5VTEwpCisJCQlzaWctPnNldFNpZ25pbmdLZXkoa2V5KTsKKwkJc2lnLT5zaWduKCk7CisKKwkJLy8gQWRkIGFueSBLZXlJbmZvIGVsZW1lbnRzCisKKyNpZiBkZWZpbmVkKEhBVkVfV0lOQ0FQSSkKKworCQlpZiAod2luRHNzS2V5SW5mbyA9PSB0cnVlICYmIHdpbktleURTQSAhPSBOVUxMKSB7CisJCQljaGFyIHBCdWZbMTAyNF07CisJCQljaGFyIHFCdWZbMTAyNF07CisJCQljaGFyIGdCdWZbMTAyNF07CisJCQljaGFyIHlCdWZbMTAyNF07CisKKwkJCXVuc2lnbmVkIGludCBpOworCQkJaSA9IHdpbktleURTQS0+Z2V0UEJhc2U2NEJpZ051bXMoKGNoYXIgKikgcEJ1ZiwgMTAyNCk7CisJCQlwQnVmW2ldID0gJ1wwJzsKKwkJCWkgPSB3aW5LZXlEU0EtPmdldFFCYXNlNjRCaWdOdW1zKChjaGFyICopIHFCdWYsIDEwMjQpOworCQkJcUJ1ZltpXSA9ICdcMCc7CisJCQlpID0gd2luS2V5RFNBLT5nZXRHQmFzZTY0QmlnTnVtcygoY2hhciAqKSBnQnVmLCAxMDI0KTsKKwkJCWdCdWZbaV0gPSAnXDAnOworCQkJaSA9IHdpbktleURTQS0+Z2V0WUJhc2U2NEJpZ051bXMoKGNoYXIgKikgeUJ1ZiwgMTAyNCk7CisJCQl5QnVmW2ldID0gJ1wwJzsKKworCQkJc2lnLT5jbGVhcktleUluZm8oKTsKKwkJCXNpZy0+YXBwZW5kRFNBS2V5VmFsdWUoCisJCQkJTUFLRV9VTklDT0RFX1NUUklORyhwQnVmKSwKKwkJCQlNQUtFX1VOSUNPREVfU1RSSU5HKHFCdWYpLAorCQkJCU1BS0VfVU5JQ09ERV9TVFJJTkcoZ0J1ZiksCisJCQkJTUFLRV9VTklDT0RFX1NUUklORyh5QnVmKSk7CisJCX0KKworCQlpZiAod2luUnNhS2V5SW5mbyA9PSB0cnVlICYmIHdpbktleVJTQSAhPSBOVUxMKSB7CisJCQljaGFyIGVCdWZbMTAyNF07CisJCQljaGFyIG1CdWZbMTAyNF07CisKKwkJCXVuc2lnbmVkIGludCBpOworCQkJaSA9IHdpbktleVJTQS0+Z2V0RXhwb25lbnRCYXNlNjRCaWdOdW1zKChjaGFyICopIGVCdWYsIDEwMjQpOworCQkJZUJ1ZltpXSA9ICdcMCc7CisJCQlpID0gd2luS2V5UlNBLT5nZXRNb2R1bHVzQmFzZTY0QmlnTnVtcygoY2hhciAqKSBtQnVmLCAxMDI0KTsKKwkJCW1CdWZbaV0gPSAnXDAnOworCisJCQlzaWctPmNsZWFyS2V5SW5mbygpOworCQkJc2lnLT5hcHBlbmRSU0FLZXlWYWx1ZSgKKwkJCQlNQUtFX1VOSUNPREVfU1RSSU5HKG1CdWYpLAorCQkJCU1BS0VfVU5JQ09ERV9TVFJJTkcoZUJ1ZikpOworCQl9CisKKyNlbmRpZgorI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKwkJaWYgKGNlcnRDb3VudCA+IDApIHsKKworCQkJaW50IGk7CisJCQkvLyBIYXZlIHNvbWUgY2VydGlmaWNhdGVzIC0gc2VlIGlmIHRoZXJlIGlzIGFscmVhZHkgYW4gWDUwOSBsaXN0CisJCQlEU0lHS2V5SW5mb0xpc3QgKiBraUxpc3QgPSBzaWctPmdldEtleUluZm9MaXN0KCk7CisJCQlpbnQga2lTaXplID0gKGludCkga2lMaXN0LT5nZXRTaXplKCk7CisKKwkJCWZvciAoaSA9IDA7IGkgPCBraVNpemU7ICsraSkgeworCisJCQkJaWYgKGtpTGlzdC0+aXRlbShpKS0+Z2V0S2V5SW5mb1R5cGUoKSA9PSBEU0lHS2V5SW5mbzo6S0VZSU5GT19YNTA5KSB7CisJCQkJCWtleUluZm9YNTA5ID0gKERTSUdLZXlJbmZvWDUwOSAqKSBraUxpc3QtPml0ZW0oaSk7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKworCQkJaWYgKGtleUluZm9YNTA5ID09IDApIHsKKworCQkJCS8vIE5vdCBmb3VuZCAtIG5lZWQgdG8gY3JlYXRlCisJCQkJa2V5SW5mb1g1MDkgPSBzaWctPmFwcGVuZFg1MDlEYXRhKCk7CisKKwkJCX0KKworCQkJZm9yIChpID0gMDsgaSA8IGNlcnRDb3VudDsgKytpKSB7CisKKwkJCQlrZXlJbmZvWDUwOS0+YXBwZW5kWDUwOUNlcnRpZmljYXRlKGNlcnRzW2ldLT5nZXRERVJFbmNvZGluZ1NCKCkuc2JTdHJUb1hNTENoKCkpOworCisJCQl9CisKKwkJfSAvKiBjZXJ0Q291bnQgPiAwICovCisjZW5kaWYKKwkJaWYgKHg1MDlTdWJqZWN0TmFtZSAhPSBOVUxMKSB7CisKKwkJCWludCBpOworCQkJLy8gSGF2ZSBzb21lIGNlcnRpZmljYXRlcyAtIHNlZSBpZiB0aGVyZSBpcyBhbHJlYWR5IGFuIFg1MDkgbGlzdAorCQkJRFNJR0tleUluZm9MaXN0ICoga2lMaXN0ID0gc2lnLT5nZXRLZXlJbmZvTGlzdCgpOworCQkJaW50IGtpU2l6ZSA9IChpbnQpIGtpTGlzdC0+Z2V0U2l6ZSgpOworCisJCQlmb3IgKGkgPSAwOyBpIDwga2lTaXplOyArK2kpIHsKKworCQkJCWlmIChraUxpc3QtPml0ZW0oaSktPmdldEtleUluZm9UeXBlKCkgPT0gRFNJR0tleUluZm86OktFWUlORk9fWDUwOSkgeworCQkJCQlrZXlJbmZvWDUwOSA9IChEU0lHS2V5SW5mb1g1MDkgKikga2lMaXN0LT5pdGVtKGkpOworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisKKwkJCWlmIChrZXlJbmZvWDUwOSA9PSAwKSB7CisKKwkJCQkvLyBOb3QgZm91bmQgLSBuZWVkIHRvIGNyZWF0ZQorCQkJCWtleUluZm9YNTA5ID0gc2lnLT5hcHBlbmRYNTA5RGF0YSgpOworCisJCQl9CisKKwkJCWtleUluZm9YNTA5LT5zZXRYNTA5U3ViamVjdE5hbWUoTUFLRV9VTklDT0RFX1NUUklORyh4NTA5U3ViamVjdE5hbWUpKTsKKworCQl9IC8qIGNlcnRDb3VudCA+IDAgKi8KKwl9CisKKwljYXRjaCAoWFNFQ0V4Y2VwdGlvbiAmZSkgeworCQljaGFyICogbSA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKGUuZ2V0TXNnKCkpOworCQljZXJyIDw8ICJBbiBlcnJvciBvY2N1cmVkIGR1cmluZyBzaWduaW5nIG9wZXJhdGlvblxuICAgTWVzc2FnZTogIgorCQk8PCBtIDw8IGVuZGw7CisJCVhTRUNfUkVMRUFTRV9YTUxDSChtKTsKKwkJZXJyb3JzT2NjdXJlZCA9IHRydWU7CisJCWV4aXQgKDEpOworCX0KKworCWNhdGNoIChYU0VDQ3J5cHRvRXhjZXB0aW9uICZlKSB7CisJCWNlcnIgPDwgIkEgY3J5cHRvZ3JhcGhpYyBlcnJvciBvY2N1cmVkIGR1cmluZyBzaWduYXR1cmUgb3BlcmF0aW9uXG4gICBNZXNzYWdlOiAiCisJCTw8IGUuZ2V0TXNnKCkgPDwgZW5kbDsKKwkJZXJyb3JzT2NjdXJlZCA9IHRydWU7CisJCWV4aXQoMSk7CisJfQorCisJY2F0Y2ggKE5ldEFjY2Vzc29yRXhjZXB0aW9uKSB7CisJCWNlcnIgPDwgIkEgbmV0d29yayBlcnJvciBvY2N1cnJlZCBkdXJpbmcgc2lnbmluZyBvcGVyYXRpb25cbiIgPDwgZW5kbDsKKwkJZXJyb3JzT2NjdXJlZCA9IHRydWU7CisJCWV4aXQoMSk7CisJfQorCisJLy8gUHJpbnQgb3V0IHRoZSByZXN1bHQKKworCURPTVByaW50Rm9ybWF0VGFyZ2V0KiBmb3JtYXRUYXJnZXQgPSBuZXcgRE9NUHJpbnRGb3JtYXRUYXJnZXQoKTsKKwkKKyAgICBjb25zdCBYTUxDaCogZW5jTmFtZVN0ciA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKCJVVEYtOCIpOworICAgIERPTU5vZGUgKmFOb2RlID0gZG9jLT5nZXRGaXJzdENoaWxkKCk7CisgICAgaWYgKGFOb2RlLT5nZXROb2RlVHlwZSgpID09IERPTU5vZGU6OkVOVElUWV9OT0RFKQorICAgIHsKKyAgICAgICAgY29uc3QgWE1MQ2gqIGFTdHIgPSAKKyNpZiBkZWZpbmVkIFhTRUNfWEVSQ0VTX0RPTUVOVElUWUlOUFVURU5DT0RJTkcKKyAgICAgICAgICAgICgoRE9NRW50aXR5ICopYU5vZGUpLT5nZXRJbnB1dEVuY29kaW5nKCk7CisjZWxzZQorICAgICAgICAgICAgKChET01FbnRpdHkgKilhTm9kZSktPmdldEVuY29kaW5nKCk7CisjZW5kaWYKKyAgICAgICAgaWYgKCFzdHJFcXVhbHMoYVN0ciwgIiIpKQorICAgICAgICB7CisgICAgICAgICAgICBlbmNOYW1lU3RyID0gYVN0cjsKKyAgICAgICAgfQorICAgIH0KKyAgICB4c2Vjc2l6ZV90IGxlbnQgPSBYTUxTdHJpbmc6OnN0cmluZ0xlbihlbmNOYW1lU3RyKTsKKyAgICBnRW5jb2RpbmdOYW1lID0gbmV3IFhNTENoW2xlbnQgKyAxXTsKKyAgICBYTUxTdHJpbmc6OmNvcHlOU3RyaW5nKGdFbmNvZGluZ05hbWUsIGVuY05hbWVTdHIsIGxlbnQpOworICAgIGdFbmNvZGluZ05hbWVbbGVudF0gPSAwOworCisJCisJCisjaWYgZGVmaW5lZChYU0VDX1hFUkNFU19GT1JNQVRURVJfUkVRVUlSRVNfVkVSU0lPTikKKwlnRm9ybWF0dGVyID0gbmV3IFhNTEZvcm1hdHRlcigiVVRGLTgiLCAwLCBmb3JtYXRUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcywgZ1VuUmVwRmxhZ3MpOworI2Vsc2UKKwlnRm9ybWF0dGVyID0gbmV3IFhNTEZvcm1hdHRlcigiVVRGLTgiLCBmb3JtYXRUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcywgZ1VuUmVwRmxhZ3MpOworI2VuZGlmCisKKwljb3V0IDw8IGRvYzsKKworCWRlbGV0ZSBbXSBnRW5jb2RpbmdOYW1lOworCVhNTENoICogdG9SZWxlYXNlID0gKFhNTENoICopIGVuY05hbWVTdHI7CisJWFNFQ19SRUxFQVNFX1hNTENIKHRvUmVsZWFzZSk7CisJZGVsZXRlIGdGb3JtYXR0ZXI7CisJZGVsZXRlIGZvcm1hdFRhcmdldDsKKworI2lmIGRlZmluZWQgKF9XSU4zMikgJiYgZGVmaW5lZCAoSEFWRV9XSU5DQVBJKQorCWlmICh3aW4zMkRTU0NTUCAhPSAwKQorCQlDcnlwdFJlbGVhc2VDb250ZXh0KHdpbjMyRFNTQ1NQLDApOworCWlmICh3aW4zMlJTQUNTUCAhPSAwKQorCQlDcnlwdFJlbGVhc2VDb250ZXh0KHdpbjMyUlNBQ1NQLDApOworI2VuZGlmCisKKwlwcm92LT5yZWxlYXNlU2lnbmF0dXJlKHNpZyk7CisJZGVsZXRlIHBhcnNlcjsKKwlkZWxldGUgcHJvdjsKKyAgICBkZWxldGUgdGhlUmVzb2x2ZXI7CisKKwlYU0VDUGxhdGZvcm1VdGlsczo6VGVybWluYXRlKCk7CisjaWZuZGVmIFhTRUNfTk9fWEFMQU4KKwlYYWxhblRyYW5zZm9ybWVyOjp0ZXJtaW5hdGUoKTsKKwlYUGF0aEV2YWx1YXRvcjo6dGVybWluYXRlKCk7CisjZW5kaWYKKwlYTUxQbGF0Zm9ybVV0aWxzOjpUZXJtaW5hdGUoKTsKKworCQorCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYy9zcmMvdG9vbHMvdGhyZWFkVGVzdC90aHJlYWR0ZXN0LmNwcCBiL2Mvc3JjL3Rvb2xzL3RocmVhZFRlc3QvdGhyZWFkdGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTAwZmM1ZQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3Rvb2xzL3RocmVhZFRlc3QvdGhyZWFkdGVzdC5jcHAKQEAgLTAsMCArMSw2NjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIHRocmVhZFRlc3QgOj0gUnVuIHVwIGEgbnVtYmVyIG9mIHRocmVhZHMgc2lnbmluZyBhbmQgdmFsaWRhdGluZworICoJCQkJIHRoZSBzaWduYXR1cmVzLgorICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworLy8gWFNFQworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ1Byb3ZpZGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1NpZ25hdHVyZS5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdSZWZlcmVuY2UuaHBwPgorI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKyMJaW5jbHVkZSA8eHNlYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvS2V5SE1BQy5ocHA+CisjZWxzZQorIwlpZiBkZWZpbmVkIChIQVZFX1dJTkNBUEkpCisjCQlpbmNsdWRlIDx4c2VjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9LZXlITUFDLmhwcD4KKyMJZWxzZQorIwkJZXJyb3IgTm8gY3J5cHRvIHByb3ZpZGVyIGF2YWlsYWJsZQorIwllbmRpZgorI2VuZGlmCisKKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvUGxhdGZvcm1VdGlscy5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3BhcnNlcnMvWGVyY2VzRE9NUGFyc2VyLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MRXhjZXB0aW9uLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvTXV0ZXhlcy5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy9mcmFtZXdvcmsvU3RkT3V0Rm9ybWF0VGFyZ2V0LmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL2ZyYW1ld29yay9NZW1CdWZGb3JtYXRUYXJnZXQuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvZnJhbWV3b3JrL01lbUJ1ZklucHV0U291cmNlLmhwcD4KKworCisjaW5jbHVkZSA8c3Ryc3RyZWFtPgorI2luY2x1ZGUgPGlvc3RyZWFtPgorI2luY2x1ZGUgPHF1ZXVlPgorCisjZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d2luYmFzZS5oPgorCit1c2luZyBzdGQ6OmVuZGw7Cit1c2luZyBzdGQ6OmNlcnI7Cit1c2luZyBzdGQ6OmNvdXQ7Cit1c2luZyBzdGQ6OnF1ZXVlOwordXNpbmcgc3RkOjp2ZWN0b3I7Cit1c2luZyBzdGQ6Om9zdHJzdHJlYW07CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdsb2JhbHMgdXNlZCBhbmQgcmVhZCBieSBhbGwgdGhyZWFkcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCisjZGVmaW5lIG51bVRocmVhZHMJNworI2RlZmluZSBzZWNyZXRLZXkJInNlY3JldCIKKyNkZWZpbmUgc2xlZXBUaW1lCTMwCisKK3R5cGVkZWYgcXVldWU8Y2hhciAqPgljaGFyUXVldWVUeXBlOyAKKworWFNFQ1Byb3ZpZGVyCQkJKiBnX3Byb3ZpZGVyOworCitIQU5ETEUJCQkJCWdfdG9WZXJpZnlRdWV1ZVNlbWFwaG9yZTsKK0hBTkRMRQkJCQkJZ190b1NpZ25RdWV1ZVNlbWFwaG9yZTsKK1hNTE11dGV4CQkJCWdfdG9WZXJpZnlRdWV1ZU11dGV4OworY2hhclF1ZXVlVHlwZQkJCWdfdG9WZXJpZnlRdWV1ZTsKKworLy8gQ29udHJvbCBtYXJrZXJzCisKK1hNTE11dGV4CQkJCWdfaW5pdE11dGV4OworYm9vbAkJCQkJZ19jb21wbGV0ZWQ7CitpbnQJCQkJCQlnX2luaXRWZXJpZnlDb3VudDsKK2ludAkJCQkJCWdfaW5pdFNpZ25Db3VudDsKK3Vuc2lnbmVkIGludAkJCWdfc2lnbkNvdW50W251bVRocmVhZHNdOwordW5zaWduZWQgaW50CQkJZ192ZXJpZnlDb3VudFtudW1UaHJlYWRzXTsKK3Vuc2lnbmVkIGludAkJCWdfZXJyb3JzOworCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgRG9jdW1lbnQgbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBvdXRwdXREb2MgKERPTUltcGxlbWVudGF0aW9uICppbXBsLCBET01Eb2N1bWVudCAqIGRvYykgeworCisJWE1MRm9ybWF0VGFyZ2V0ICpmb3JtYXRUYXJnZXQgPSBuZXcgU3RkT3V0Rm9ybWF0VGFyZ2V0KCk7CisKKyAgICAvLyBPdXRwdXQgYSBkb2MgdG8gc3Rkb3V0CisjaWYgZGVmaW5lZCAoWFNFQ19YRVJDRVNfRE9NTFNTRVJJQUxJWkVSKQorICAgIC8vIERPTSBMMyB2ZXJzaW9uIGFzIHBlciBYZXJjZXMgMy4wIEFQSQorICAgIERPTUxTU2VyaWFsaXplciAgICp0aGVTZXJpYWxpemVyID0gKChET01JbXBsZW1lbnRhdGlvbkxTKilpbXBsKS0+Y3JlYXRlTFNTZXJpYWxpemVyKCk7CisKKyAgICAvLyBHZXQgdGhlIGNvbmZpZyBzbyB3ZSBjYW4gc2V0IHVwIHByZXR0eSBwcmludGluZworICAgIERPTUNvbmZpZ3VyYXRpb24gKmRjID0gdGhlU2VyaWFsaXplci0+Z2V0RG9tQ29uZmlnKCk7CisgICAgZGMtPnNldFBhcmFtZXRlcihYTUxVbmk6OmZnRE9NV1JURm9ybWF0UHJldHR5UHJpbnQsIHRydWUpOworCisgICAgLy8gTm93IGNyZWF0ZSBhbiBvdXRwdXQgb2JqZWN0IHRvIGZvcm1hdCB0byBVVEYtOAorICAgIERPTUxTT3V0cHV0ICp0aGVPdXRwdXQgPSAoKERPTUltcGxlbWVudGF0aW9uTFMqKWltcGwpLT5jcmVhdGVMU091dHB1dCgpOworICAgIEphbml0b3I8RE9NTFNPdXRwdXQ+IGpfdGhlT3V0cHV0KHRoZU91dHB1dCk7CisKKyAgICB0aGVPdXRwdXQtPnNldEVuY29kaW5nKE1BS0VfVU5JQ09ERV9TVFJJTkcoIlVURi04IikpOworICAgIHRoZU91dHB1dC0+c2V0Qnl0ZVN0cmVhbShmb3JtYXRUYXJnZXQpOworICAgIAorICAgIHRoZVNlcmlhbGl6ZXItPndyaXRlKGRvYywgdGhlT3V0cHV0KTsKKyNlbHNlCisgICAgRE9NV3JpdGVyICAgICAgICAgKnRoZVNlcmlhbGl6ZXIgPSAoKERPTUltcGxlbWVudGF0aW9uTFMqKWltcGwpLT5jcmVhdGVET01Xcml0ZXIoKTsKKworCXRoZVNlcmlhbGl6ZXItPnNldEVuY29kaW5nKE1BS0VfVU5JQ09ERV9TVFJJTkcoIlVURi04IikpOworCWlmICh0aGVTZXJpYWxpemVyLT5jYW5TZXRGZWF0dXJlKFhNTFVuaTo6ZmdET01XUlRGb3JtYXRQcmV0dHlQcmludCwgdHJ1ZSkpCisJCXRoZVNlcmlhbGl6ZXItPnNldEZlYXR1cmUoWE1MVW5pOjpmZ0RPTVdSVEZvcm1hdFByZXR0eVByaW50LCB0cnVlKTsKKwl0aGVTZXJpYWxpemVyLT53cml0ZU5vZGUoZm9ybWF0VGFyZ2V0LCAqZG9jKTsKKyNlbmRpZgorCisJY291dCA8PCBlbmRsOworCisJZGVsZXRlIHRoZVNlcmlhbGl6ZXI7CisJZGVsZXRlIGZvcm1hdFRhcmdldDsKK30KKwordm9pZCBhZGREb2NUb1F1ZXVlIChET01JbXBsZW1lbnRhdGlvbiAqaW1wbCwgRE9NRG9jdW1lbnQgKiBkb2MpIHsKKworCS8vIE91dHB1dCBhIGRvY3VtZW50IHRvIGEgbWVtb3J5IGJ1ZmZlciBhbmQgYWRkIHRoZSBidWZmZXIgdG8KKwkvLyB0aGUgcXVldWUKKworCU1lbUJ1ZkZvcm1hdFRhcmdldCAqZm9ybWF0VGFyZ2V0ID0gbmV3IE1lbUJ1ZkZvcm1hdFRhcmdldCgpOworCisjaWYgZGVmaW5lZCAoWFNFQ19YRVJDRVNfRE9NTFNTRVJJQUxJWkVSKQorICAgIC8vIERPTSBMMyB2ZXJzaW9uIGFzIHBlciBYZXJjZXMgMy4wIEFQSQorICAgIERPTUxTU2VyaWFsaXplciAgICp0aGVTZXJpYWxpemVyID0gKChET01JbXBsZW1lbnRhdGlvbkxTKilpbXBsKS0+Y3JlYXRlTFNTZXJpYWxpemVyKCk7CisKKyAgICAvLyBHZXQgdGhlIGNvbmZpZyBzbyB3ZSBjYW4gc2V0IHVwIHByZXR0eSBwcmludGluZworICAgIERPTUNvbmZpZ3VyYXRpb24gKmRjID0gdGhlU2VyaWFsaXplci0+Z2V0RG9tQ29uZmlnKCk7CisgICAgZGMtPnNldFBhcmFtZXRlcihYTUxVbmk6OmZnRE9NV1JURm9ybWF0UHJldHR5UHJpbnQsIGZhbHNlKTsKKworICAgIC8vIE5vdyBjcmVhdGUgYW4gb3V0cHV0IG9iamVjdCB0byBmb3JtYXQgdG8gVVRGLTgKKyAgICBET01MU091dHB1dCAqdGhlT3V0cHV0ID0gKChET01JbXBsZW1lbnRhdGlvbkxTKilpbXBsKS0+Y3JlYXRlTFNPdXRwdXQoKTsKKyAgICBKYW5pdG9yPERPTUxTT3V0cHV0PiBqX3RoZU91dHB1dCh0aGVPdXRwdXQpOworCisgICAgdGhlT3V0cHV0LT5zZXRFbmNvZGluZyhNQUtFX1VOSUNPREVfU1RSSU5HKCJVVEYtOCIpKTsKKyAgICB0aGVPdXRwdXQtPnNldEJ5dGVTdHJlYW0oZm9ybWF0VGFyZ2V0KTsKKyAgICAKKyAgICB0aGVTZXJpYWxpemVyLT53cml0ZShkb2MsIHRoZU91dHB1dCk7CisjZWxzZQorCURPTVdyaXRlciAgICAgICAgICp0aGVTZXJpYWxpemVyID0gKChET01JbXBsZW1lbnRhdGlvbkxTKilpbXBsKS0+Y3JlYXRlRE9NV3JpdGVyKCk7CisKKwl0aGVTZXJpYWxpemVyLT5zZXRFbmNvZGluZyhNQUtFX1VOSUNPREVfU1RSSU5HKCJVVEYtOCIpKTsKKwlpZiAodGhlU2VyaWFsaXplci0+Y2FuU2V0RmVhdHVyZShYTUxVbmk6OmZnRE9NV1JURm9ybWF0UHJldHR5UHJpbnQsIGZhbHNlKSkKKwkJdGhlU2VyaWFsaXplci0+c2V0RmVhdHVyZShYTUxVbmk6OmZnRE9NV1JURm9ybWF0UHJldHR5UHJpbnQsIGZhbHNlKTsKKworCXRoZVNlcmlhbGl6ZXItPndyaXRlTm9kZShmb3JtYXRUYXJnZXQsICpkb2MpOworI2VuZGlmCisKKwkvLyBDb3B5IHRvIGEgbmV3IGJ1ZmZlcgorCXhzZWNzaXplX3QgbGVuID0gZm9ybWF0VGFyZ2V0LT5nZXRMZW4oKTsKKwljaGFyICogYnVmID0gbmV3IGNoYXIgW2xlbiArIDFdOworCW1lbWNweShidWYsIGZvcm1hdFRhcmdldC0+Z2V0UmF3QnVmZmVyKCksIGxlbik7CisJYnVmW2xlbl0gPSAnXDAnOworCisJLy8gQWRkIHRvIHRoZSBxdWV1ZSAoYnV0IHdhaXQgZm9yIHF1ZXVlIHRvIGJlIHNtYWxsIGVub3VnaCkKKwlXYWl0Rm9yU2luZ2xlT2JqZWN0KGdfdG9TaWduUXVldWVTZW1hcGhvcmUsIElORklOSVRFKTsKKworCWdfdG9WZXJpZnlRdWV1ZU11dGV4LmxvY2soKTsKKwlnX3RvVmVyaWZ5UXVldWUucHVzaChidWYpOworCWdfdG9WZXJpZnlRdWV1ZU11dGV4LnVubG9jaygpOworCisJLy8gU2lnbmFsIGEgdmFsaWRhdGUgdGhyZWFkIHRoYXQgdGhpcyBpcyByZWFkeSB0byByZWFkCisJUmVsZWFzZVNlbWFwaG9yZShnX3RvVmVyaWZ5UXVldWVTZW1hcGhvcmUsIDEsIE5VTEwpOworCisJZGVsZXRlIHRoZVNlcmlhbGl6ZXI7CisJZGVsZXRlIGZvcm1hdFRhcmdldDsKKworfQorCisKK0RPTVRleHQgKmNyZWF0ZURvY1NrZWxldG9uKERPTUltcGxlbWVudGF0aW9uICppbXBsLCBjaGFyICogdGlkKSB7CisKKwkvLyBDcmVhdGUgYSBuZXcgZG9jdW1lbnQgc2tlbGV0b24gdGhhdCBjYW4gYmUgdXNlZCBieSB0aGUKKwkvLyBjYWxsaW5nIHRocmVhZAorCisJLy9nX3Byb3ZpZGVyTXV0ZXgubG9jaygpOworCURPTURvY3VtZW50ICpkb2MgPSBpbXBsLT5jcmVhdGVEb2N1bWVudCgKKyAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgIE1BS0VfVU5JQ09ERV9TVFJJTkcoIkRvY3VtZW50IiksICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIE5VTEwpOyAgCisJLy9nX3Byb3ZpZGVyTXV0ZXgudW5sb2NrKCk7CisKKyAgICBET01FbGVtZW50ICpyb290RWxlbSA9IGRvYy0+Z2V0RG9jdW1lbnRFbGVtZW50KCk7CisKKwkvLyBBZGQgdGhlIHRocmVhZCBJRCBlbGVtZW50CisJRE9NRWxlbWVudCAqIHRpZEVsZW0gPSBkb2MtPmNyZWF0ZUVsZW1lbnQoTUFLRV9VTklDT0RFX1NUUklORygiVGhyZWFkSUQiKSk7CisJdGlkRWxlbS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZShNQUtFX1VOSUNPREVfU1RSSU5HKHRpZCkpKTsKKwlyb290RWxlbS0+YXBwZW5kQ2hpbGQodGlkRWxlbSk7CisJcm9vdEVsZW0tPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyTkwpKTsKKworCS8vIENyZWF0ZSBhbiBlbGVtZW50IGZvciB0aGUgdW5pcXVlIGVsZW1lbnQKKwlET01FbGVtZW50ICogdW5pcXVlRWxlbSA9IGRvYy0+Y3JlYXRlRWxlbWVudChNQUtFX1VOSUNPREVfU1RSSU5HKCJVbmlxdWVEYXRhIikpOworCURPTVRleHQgKiB1bmlxdWVUZXh0RWxlbSA9IGRvYy0+Y3JlYXRlVGV4dE5vZGUoTUFLRV9VTklDT0RFX1NUUklORygicHJlVW5pcXVlIikpOworCisJcm9vdEVsZW0tPmFwcGVuZENoaWxkKHVuaXF1ZUVsZW0pOworCXJvb3RFbGVtLT5hcHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ck5MKSk7CisJdW5pcXVlRWxlbS0+YXBwZW5kQ2hpbGQodW5pcXVlVGV4dEVsZW0pOworCisJcmV0dXJuIHVuaXF1ZVRleHRFbGVtOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFNpZ25pbmcgVGhyZWFkCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK0RXT1JEIFdJTkFQSSBkb1NpZ25UaHJlYWQgKExQVk9JRCBQYXJhbSkgeworCisJLy8gVGhpcyBpcyBjYWxsZWQgdG8gc3RhcnQgdXAgYSBuZXcgdGhyZWFkCisKKwlpbnQJbXlJZDsKKwlvc3Ryc3RyZWFtIG1zZzsKKwlvc3Ryc3RyZWFtIHRpZDsKKwlET01JbXBsZW1lbnRhdGlvbiAqaW1wbDsKKwlET01Eb2N1bWVudCAqIG15RG9jOworCURPTUVsZW1lbnQgKiBteVJvb3RFbGVtOworCURPTVRleHQgKiBteVRleHQ7CisKKwlpbXBsID0gcmVpbnRlcnByZXRfY2FzdDxET01JbXBsZW1lbnRhdGlvbiAqPihQYXJhbSk7CisKKwljb25zdCBEV09SRAkJdGhlVGhyZWFkSUQgPSBHZXRDdXJyZW50VGhyZWFkSWQoKTsKKwl0aWQgPDwgdGhlVGhyZWFkSUQgPDwgJ1wwJzsKKworCS8vIE9idGFpbiBhbiB0aHJlYWQgbnVtYmVyOworCWdfaW5pdE11dGV4LmxvY2soKTsKKwlteUlkID0gZ19pbml0U2lnbkNvdW50Kys7CisJZ19pbml0TXV0ZXgudW5sb2NrKCk7CisKKwlnX3NpZ25Db3VudFtteUlkXSA9IDA7CQorCisJLy8gU2lnbgorCXdoaWxlIChnX2NvbXBsZXRlZCA9PSBmYWxzZSkgeworCisJCS8vIENyZWF0ZSBhIGRvY3VtZW50IHRvIHNpZ24KKwkJbXlUZXh0ID0gY3JlYXRlRG9jU2tlbGV0b24oaW1wbCwgdGlkLnN0cigpKTsKKwkJbXlEb2MgPSBteVRleHQtPmdldE93bmVyRG9jdW1lbnQoKTsKKwkJbXlSb290RWxlbSA9IG15RG9jLT5nZXREb2N1bWVudEVsZW1lbnQoKTsKKworCisJCS8vIFRoZSBwcm92aWRlciBvYmplY3QgaW50ZXJuYWxseSBtYW5hZ2VzIG11bHRpcGxlIHRocmVhZHMKKwkJRFNJR1NpZ25hdHVyZSAqIHNpZyA9IGdfcHJvdmlkZXItPm5ld1NpZ25hdHVyZSgpOworCisJCURTSUdSZWZlcmVuY2UgKiByZWY7CisJCURPTUVsZW1lbnQgKiBzaWdOb2RlOworCisJCXNpZy0+c2V0RFNJR05TUHJlZml4KE1BS0VfVU5JQ09ERV9TVFJJTkcoImRzIikpOworCQlzaWdOb2RlID0gc2lnLT5jcmVhdGVCbGFua1NpZ25hdHVyZShteURvYywgQ0FOT05fQzE0Tl9DT00sIFNJR05BVFVSRV9ITUFDLCBIQVNIX1NIQTEpOworCQlteVJvb3RFbGVtLT5hcHBlbmRDaGlsZChzaWdOb2RlKTsKKwkJbXlSb290RWxlbS0+YXBwZW5kQ2hpbGQobXlEb2MtPmNyZWF0ZVRleHROb2RlKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ck5MKSk7CisJCXJlZiA9IHNpZy0+Y3JlYXRlUmVmZXJlbmNlKE1BS0VfVU5JQ09ERV9TVFJJTkcoIiIpKTsKKwkJcmVmLT5hcHBlbmRFbnZlbG9wZWRTaWduYXR1cmVUcmFuc2Zvcm0oKTsKKworCQlzaWctPmFwcGVuZEtleU5hbWUoTUFLRV9VTklDT0RFX1NUUklORygiVGhlIHNlY3JldCBrZXkgaXMgXCJzZWNyZXRcIiIpKTsKKworI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKwkJT3BlblNTTENyeXB0b0tleUhNQUMgKiBobWFjS2V5ID0gbmV3IE9wZW5TU0xDcnlwdG9LZXlITUFDKCk7CisjZWxzZQorCQlXaW5DQVBJQ3J5cHRvS2V5SE1BQyAqIGhtYWNLZXkgPSBuZXcgV2luQ0FQSUNyeXB0b0tleUhNQUMoMCk7CisjZW5kaWYKKwkJaG1hY0tleS0+c2V0S2V5KCh1bnNpZ25lZCBjaGFyICopICJzZWNyZXQiLCAodW5zaWduZWQgaW50KSBzdHJsZW4oInNlY3JldCIpKTsKKwkJc2lnLT5zZXRTaWduaW5nS2V5KGhtYWNLZXkpOworCQlzaWctPnNpZ24oKTsKKworCQlnX3Byb3ZpZGVyLT5yZWxlYXNlU2lnbmF0dXJlKHNpZyk7CisJCQorCQkvLyBTZXJpYWxpc2UgYW5kIGFkZCB0byB2ZXJpZnkgcXVldWUKKworCQlhZGREb2NUb1F1ZXVlKGltcGwsIG15RG9jKTsKKworCQlteURvYy0+cmVsZWFzZSgpOworCQorCQkvLyBUZWxsIHRoZSBjb250cm9sIHRocmVhZCB3aGF0IHdlIGhhdmUgZG9uZQorCQlnX3NpZ25Db3VudFtteUlkXSArPSAxOwkKKworCQkvLyBTbGVlcCBmb3IgYSB3aGlsZQorCQlTbGVlcCAoc2xlZXBUaW1lICsgKHJhbmQoKSAlIHNsZWVwVGltZSkpOworCQorCX0KKwkJCisJbXNnIDw8ICJFbmRpbmcgc2lnbmluZyB0aHJlYWQgLSAiIDw8IHRoZVRocmVhZElEIDw8IGVuZGwgPDwgJ1wwJzsKKwljZXJyIDw8IG1zZy5zdHIoKTsKKworCS8vIEFsbG93IHRoZSBvdXRwdXQgc3RyZWFtIG1lbW9yeSB0byBiZSByZWxlYXNlZC4KKworCXRpZC5mcmVlemUoZmFsc2UpOworCW1zZy5mcmVlemUoZmFsc2UpOworCisJcmV0dXJuIDA7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBWZXJpZnkgVGhyZWFkCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitEV09SRCBXSU5BUEkgZG9WZXJpZnlUaHJlYWQgKExQVk9JRCBQYXJhbSkgeworCisJLy8gVGhpcyBpcyBjYWxsZWQgdG8gc3RhcnQgdXAgYSBuZXcgdGhyZWFkCisKKwlpbnQJbXlJZDsKKwlvc3Ryc3RyZWFtIG1zZzsKKwlET01JbXBsZW1lbnRhdGlvbiAqaW1wbDsKKwlET01Eb2N1bWVudCAqIG15RG9jOworCisJaW1wbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NSW1wbGVtZW50YXRpb24gKj4oUGFyYW0pOworCisJY29uc3QgRFdPUkQJCXRoZVRocmVhZElEID0gR2V0Q3VycmVudFRocmVhZElkKCk7CisKKwkvLyBGaW5kIG15IElECisJCisJZ19pbml0TXV0ZXgubG9jaygpOworCW15SWQgPSBnX2luaXRWZXJpZnlDb3VudCsrOworCWdfaW5pdE11dGV4LnVubG9jaygpOworCisJZ192ZXJpZnlDb3VudFtteUlkXSA9IDA7CisKKwkvLyBDcmVhdGUgYSBwYXJzZXIKKwlYZXJjZXNET01QYXJzZXIgKiBwYXJzZXIgPSBuZXcgWGVyY2VzRE9NUGFyc2VyOworCQorCXBhcnNlci0+c2V0RG9OYW1lc3BhY2VzKHRydWUpOworCXBhcnNlci0+c2V0Q3JlYXRlRW50aXR5UmVmZXJlbmNlTm9kZXModHJ1ZSk7CisKKwkvLyBXYWl0IGZvciBhIHNlbWFwaG9yZSBldmVudCB0byB0ZWxsIHVzIHRoYXQgdGhlcmUgaXMgYSBidWZmZXIgdG8gdmFsaWRhdGUKKworCVdhaXRGb3JTaW5nbGVPYmplY3QoIAorCQlnX3RvVmVyaWZ5UXVldWVTZW1hcGhvcmUgLCAgIC8vIGhhbmRsZSB0byBzZW1hcGhvcmUKKwkJSU5GSU5JVEUpOworCisJd2hpbGUgKGdfY29tcGxldGVkID09IGZhbHNlKSB7CisKKwkJLy8gR2V0IHRoZSBidWZmZXIKKwkJZ190b1ZlcmlmeVF1ZXVlTXV0ZXgubG9jaygpOworCQljaGFyICogYnVmID0gZ190b1ZlcmlmeVF1ZXVlLmZyb250KCk7CisJCWdfdG9WZXJpZnlRdWV1ZS5wb3AoKTsKKwkJZ190b1ZlcmlmeVF1ZXVlTXV0ZXgudW5sb2NrKCk7CisKKwkJLy8gU2lnbmFsIHRoZSBzaWduaW5nIHByb2Nlc2VzIHRoYXQgdGhlcmUgaXMgcm9vbSBpbiB0aGUgcXVldWUKKwkJUmVsZWFzZVNlbWFwaG9yZShnX3RvU2lnblF1ZXVlU2VtYXBob3JlLCAxLCBOVUxMKTsKKworCQkvLyBOb3cgcGFyc2UgYW5kIHZhbGlkYXRlIHRoZSBzaWduYXR1cmUKKwkJTWVtQnVmSW5wdXRTb3VyY2UqIG1lbUlTID0gbmV3IE1lbUJ1ZklucHV0U291cmNlICgoY29uc3QgWE1MQnl0ZSopIGJ1ZiwgCisJCQkJCQkJCQkJCQkJCQkodW5zaWduZWQgaW50KSBzdHJsZW4oYnVmKSwgCisJCQkJCQkJCQkJCQkJCQkiWFNFQ01lbSIpOworCisJCXBhcnNlci0+cGFyc2UoKm1lbUlTKTsKKworCQlkZWxldGUobWVtSVMpOworCisJCW15RG9jID0gcGFyc2VyLT5hZG9wdERvY3VtZW50KCk7CisKKwkJaWYgKChyYW5kKCkgJSA1KSA9PSAxKSB7CisKKwkJCS8vIFJlc2V0IHRoZSB2YWx1ZSBvZiAiVW5pcXVlRGF0YSIgdG8gaW52YWxpZGF0ZSB0aGUgc2lnbmF0dXJlCisKKwkJCURPTU5vZGUgKiBuID0gbXlEb2MtPmdldERvY3VtZW50RWxlbWVudCgpLT5nZXRGaXJzdENoaWxkKCk7CisJCQl3aGlsZSAobiAhPSBOVUxMICYmIChuLT5nZXROb2RlVHlwZSgpICE9IERPTU5vZGU6OkVMRU1FTlRfTk9ERSB8fAorCQkJCSFzdHJFcXVhbHMobi0+Z2V0Tm9kZU5hbWUoKSwgIlVuaXF1ZURhdGEiKSkpCisJCQkJbiA9IG4tPmdldE5leHRTaWJsaW5nKCk7CisJCQlpZiAobiAhPSBOVUxMKSB7CisJCQkJbiA9IG4tPmdldEZpcnN0Q2hpbGQoKTsKKwkJCQlpZiAobi0+Z2V0Tm9kZVR5cGUoKSA9PSBET01Ob2RlOjpURVhUX05PREUpIHsKKwkJCQkJbi0+c2V0Tm9kZVZhbHVlKE1BS0VfVU5JQ09ERV9TVFJJTkcoImJhZCB1bmlxdWUgZGF0YSIpKTsKKwkJCQl9CisJCQl9CisJCX0KKworCQlEU0lHU2lnbmF0dXJlICogc2lnID0gZ19wcm92aWRlci0+bmV3U2lnbmF0dXJlRnJvbURPTShteURvYyk7CisKKyNpZiBkZWZpbmVkIChIQVZFX09QRU5TU0wpCisJCU9wZW5TU0xDcnlwdG9LZXlITUFDICpobWFjS2V5ID0gbmV3IE9wZW5TU0xDcnlwdG9LZXlITUFDKCk7CisjZWxzZQorCQlXaW5DQVBJQ3J5cHRvS2V5SE1BQyAqaG1hY0tleSA9IG5ldyBXaW5DQVBJQ3J5cHRvS2V5SE1BQygwKTsKKyNlbmRpZgorCisJCWhtYWNLZXktPnNldEtleSgodW5zaWduZWQgY2hhciAqKSBzZWNyZXRLZXksICh1bnNpZ25lZCBpbnQpIHN0cmxlbihzZWNyZXRLZXkpKTsKKwkJc2lnLT5zZXRTaWduaW5nS2V5KGhtYWNLZXkpOworCQlzaWctPmxvYWQoKTsKKwkJaWYgKHNpZy0+dmVyaWZ5KCkgIT0gdHJ1ZSkgeworCQkJLy8gUmUtdXNlIHRoZSBpbml0IE11dGV4IHRvIHByb3RlY3QgZ19lcnJvcnMKKwkJCWdfaW5pdE11dGV4LmxvY2soKTsKKwkJCWdfZXJyb3JzKys7CisJCQlnX2luaXRNdXRleC51bmxvY2soKTsKKwkJfQorCisJCWdfcHJvdmlkZXItPnJlbGVhc2VTaWduYXR1cmUoc2lnKTsKKworCQkvLyBEZWxldGUgdGhlIHZhbGlkYXRlZCBidWZmZXIKKwkJZGVsZXRlW10gYnVmOworCisJCS8vIENsZWFuIHRoZSBkb2MKKwkJbXlEb2MtPnJlbGVhc2UoKTsKKworCQlnX3ZlcmlmeUNvdW50W215SWRdICs9IDE7CisKKwkJU2xlZXAgKHNsZWVwVGltZSArIChyYW5kKCkgJSBzbGVlcFRpbWUpKTsKKworCQkvLyBXYWl0IGZvciBhbm90aGVyIG9iamVjdAorCQlXYWl0Rm9yU2luZ2xlT2JqZWN0KCAKKwkJCWdfdG9WZXJpZnlRdWV1ZVNlbWFwaG9yZSAsICAgLy8gaGFuZGxlIHRvIHNlbWFwaG9yZQorCQkJSU5GSU5JVEUpOwkKKwkKKwl9CisKKwltc2cgPDwgIkVuZGluZyB2YWxpZGF0ZSB0aHJlYWQgOiAiIDw8IHRoZVRocmVhZElEIDw8IGVuZGwgPDwgJ1wwJzsKKwljZXJyIDw8IG1zZy5zdHIoKTsKKwltc2cuZnJlZXplKGZhbHNlKTsKKworCWRlbGV0ZSBwYXJzZXI7CisKKwlyZXR1cm4gMDsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnRyb2wgdGhyZWFkIC0gdXNlZCB0byBzaHV0IGRvd24gcHJvZ3JhbQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitEV09SRCBXSU5BUEkgZG9Db250cm9sVGhyZWFkIChMUFZPSUQgUGFyYW0pIHsKKworCS8vIE91dHB1dCBzdGF0cyBhbmQgc2h1dGRvd24gd2hlbiBkb25lCisJdXNpbmcgc3RkOjpjaW47CisJdXNpbmcgc3RkOjpjb3V0OworCisJLy8gUXVpY2sgYW5kIGRpcnR5CisJY2luLnBlZWsoKTsKKwkKKwkvLyBTaWduYWwgYWxsIG90aGVyIHRocmVhZHMKKwlnX2NvbXBsZXRlZCA9IHRydWU7CisJUmVsZWFzZVNlbWFwaG9yZShnX3RvVmVyaWZ5UXVldWVTZW1hcGhvcmUsIDUsIE5VTEwpOworCVJlbGVhc2VTZW1hcGhvcmUoZ190b1NpZ25RdWV1ZVNlbWFwaG9yZSwgNSwgTlVMTCk7CisKKwlyZXR1cm4gMDsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIE91dHB1dCBUaHJlYWQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworRFdPUkQgV0lOQVBJIGRvT3V0cHV0VGhyZWFkIChMUFZPSUQgUGFyYW0pIHsKKworCS8vIE91dHB1dCBzdGF0cworCisJaW50IGksIHRvdGFsLCBsYXN0U2lnblRvdGFsLCBsYXN0VmVyaWZ5VG90YWw7CisKKwlsYXN0U2lnblRvdGFsID0gbGFzdFZlcmlmeVRvdGFsID0gMDsKKworCXdoaWxlIChnX2NvbXBsZXRlZCAhPSB0cnVlKSB7CisKKwkJLy8gT3V0cHV0IHNvbWUgaW5mbworCQljZXJyIDw8ICJTaWduaW5nIFRocmVhZHMiIDw8IGVuZGw7CisJCWNlcnIgPDwgIi0tLS0tLS0tLS0tLS0tLSIgPDwgZW5kbCA8PCBlbmRsOworCQl0b3RhbCA9IDA7CisKKwkJZm9yIChpID0gMDsgaSA8IG51bVRocmVhZHM7ICsrIGkpIHsKKworCQkJY2VyciA8PCAiVGhyZWFkOiAiIDw8IGdfc2lnbkNvdW50W2ldIDw8IGVuZGw7CisJCQl0b3RhbCArPSBnX3NpZ25Db3VudFtpXTsKKworCQl9CisKKwkJY2VyciA8PCBlbmRsIDw8ICJUb3RhbDogIiA8PCB0b3RhbCA8PCBlbmRsOworCQljZXJyIDw8ICJPcHMvU2VjOiAiIDw8IHRvdGFsIC0gbGFzdFNpZ25Ub3RhbCA8PCBlbmRsIDw8IGVuZGw7CisJCWxhc3RTaWduVG90YWwgPSB0b3RhbDsKKwkJCisJCWNlcnIgPDwgIlZlcmlmeSBUaHJlYWRzIiA8PCBlbmRsOworCQljZXJyIDw8ICItLS0tLS0tLS0tLS0tLSIgPDwgZW5kbCA8PCBlbmRsOworCQl0b3RhbCA9IDA7CisJCWZvciAoaSA9IDA7IGkgPCBudW1UaHJlYWRzOyArKyBpKSB7CisKKwkJCWNlcnIgPDwgIlRocmVhZDogIiA8PCBnX3ZlcmlmeUNvdW50W2ldIDw8IGVuZGw7CisJCQl0b3RhbCArPSBnX3ZlcmlmeUNvdW50W2ldOworCisJCX0KKworCQljZXJyIDw8IGVuZGwgPDwgIlRvdGFsOiAiIDw8IHRvdGFsIDw8IGVuZGw7CisJCWNlcnIgPDwgIk9wcy9TZWM6ICIgPDwgdG90YWwgLSBsYXN0VmVyaWZ5VG90YWwgPDwgZW5kbCA8PCBlbmRsOworCQlsYXN0VmVyaWZ5VG90YWwgPSB0b3RhbDsKKwkJY2VyciA8PCAiVG90YWwgRXJyb3JzIDogIiA8PCBnX2Vycm9ycyA8PCBlbmRsOworCQljZXJyIDw8ICJCdWZmZXJzIGluIFF1ZXVlIDogIiA8PCAodW5zaWduZWQgaW50KSBnX3RvVmVyaWZ5UXVldWUuc2l6ZSgpIDw8IGVuZGw7CisJCQorCQkvLyBHbyB0byBzbGVlcCBmb3IgYSBzZWNvbmQKKworCQlTbGVlcCgxMDAwKTsKKwl9CisKKwlyZXR1cm4gMDsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFN0YXJ0IHVwIHRocmVhZHMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgcnVuVGhyZWFkcyhET01JbXBsZW1lbnRhdGlvbiAqIGltcGwsIGludCBuVGhyZWFkcykgeworCisKKwkvLyBTZXQgdXAgdGhlIHdvcmtlciBxdWV1ZQorCWdfdG9WZXJpZnlRdWV1ZVNlbWFwaG9yZSA9IENyZWF0ZVNlbWFwaG9yZShOVUxMLCAwLCAyMCwgInZlcmlmeVF1ZXVlIik7CisJZ190b1NpZ25RdWV1ZVNlbWFwaG9yZSA9IENyZWF0ZVNlbWFwaG9yZShOVUxMLCAyMCwgMjAsICJzaWduUXVldWUiKTsKKwkKKwkvLyBFbnN1cmUgbm9ib2R5IHN0b3BzIHRvbyBzb29uCisJZ19jb21wbGV0ZWQgPSBmYWxzZTsKKworCS8vIEhvdyBtYW55IHNpZ25hdHVyZSBlcnJvcnMgZG8gd2UgaGF2ZT8KKwlnX2Vycm9ycyA9IDA7CisKKwlpbnQgaTsKKwlmb3IgKGkgPSAwOyBpIDwgbnVtVGhyZWFkczsgKytpKSB7CisJCWdfc2lnbkNvdW50W2ldID0gMDsKKwkJZ192ZXJpZnlDb3VudFtpXSA9IDA7CisJfQorCisJdmVjdG9yPEhBTkRMRT4JaFRocmVhZHM7CisKKwloVGhyZWFkcy5yZXNlcnZlKG5UaHJlYWRzKTsKKworCWkgPSAwOwkKKworCWZvciAoOyBpIDwgblRocmVhZHM7ICsraSkKKwl7CisJCURXT1JEICB0aHJlYWRJRDsKKworCQljb25zdCBIQU5ETEUJaFRocmVhZCA9IENyZWF0ZVRocmVhZCgKKwkJCQkwLCAKKwkJCQk0MDk2LAkJCQkJCQkvLyBTdGFjayBzaXplIGZvciB0aHJlYWQuCisJCQkJZG9TaWduVGhyZWFkLAkJCQkJLy8gcG9pbnRlciB0byB0aHJlYWQgZnVuY3Rpb24KKwkJCQlyZWludGVycHJldF9jYXN0PExQVk9JRD4oaW1wbCksCS8vIGFyZ3VtZW50IGZvciBuZXcgdGhyZWFkCisJCQkJMCwJCQkJCQkJCS8vIGNyZWF0aW9uIGZsYWdzCisJCQkJJnRocmVhZElEKTsKKworCQlhc3NlcnQoaFRocmVhZCAhPSAwKTsKKworCQloVGhyZWFkcy5wdXNoX2JhY2soaFRocmVhZCk7CisJfQorCisJZm9yICg7IGkgPCBuVGhyZWFkcyAqIDI7ICsraSkKKwl7CisJCURXT1JEICB0aHJlYWRJRDsKKworCQljb25zdCBIQU5ETEUJaFRocmVhZCA9IENyZWF0ZVRocmVhZCgKKwkJCQkwLCAKKwkJCQk0MDk2LAkJCQkJCQkvLyBTdGFjayBzaXplIGZvciB0aHJlYWQuCisJCQkJZG9WZXJpZnlUaHJlYWQsCQkJCQkvLyBwb2ludGVyIHRvIHRocmVhZCBmdW5jdGlvbgorCQkJCXJlaW50ZXJwcmV0X2Nhc3Q8TFBWT0lEPihpbXBsKSwJLy8gYXJndW1lbnQgZm9yIG5ldyB0aHJlYWQKKwkJCQkwLAkJCQkJCQkJLy8gY3JlYXRpb24gZmxhZ3MKKwkJCQkmdGhyZWFkSUQpOworCisJCWFzc2VydChoVGhyZWFkICE9IDApOworCisJCWhUaHJlYWRzLnB1c2hfYmFjayhoVGhyZWFkKTsKKwl9CisKKwkvLyBTdGFydCB0aGUgY29udHJvbCB0aHJlYWQKKwlEV09SRCAgdGhyZWFkSUQ7CisKKwljb25zdCBIQU5ETEUJaFRocmVhZCA9IENyZWF0ZVRocmVhZCgKKwkJCTAsIAorCQkJNDA5NiwJCQkJCQkJLy8gU3RhY2sgc2l6ZSBmb3IgdGhyZWFkLgorCQkJZG9Db250cm9sVGhyZWFkLAkJCQkvLyBwb2ludGVyIHRvIHRocmVhZCBmdW5jdGlvbgorCQkJcmVpbnRlcnByZXRfY2FzdDxMUFZPSUQ+KGltcGwpLAkvLyBhcmd1bWVudCBmb3IgbmV3IHRocmVhZAorCQkJMCwJCQkJCQkJCS8vIGNyZWF0aW9uIGZsYWdzCisJCQkmdGhyZWFkSUQpOworCisJYXNzZXJ0KGhUaHJlYWQgIT0gMCk7CisKKwloVGhyZWFkcy5wdXNoX2JhY2soaFRocmVhZCk7CisKKwkvLyBTdGFydCB0aGUgb3V0cHV0IHRocmVhZAorCisKKwljb25zdCBIQU5ETEUgaDJUaHJlYWQgPSBDcmVhdGVUaHJlYWQoCisJCQkwLCAKKwkJCTQwOTYsCQkJCQkJCS8vIFN0YWNrIHNpemUgZm9yIHRocmVhZC4KKwkJCWRvT3V0cHV0VGhyZWFkLAkJCQkJLy8gcG9pbnRlciB0byB0aHJlYWQgZnVuY3Rpb24KKwkJCXJlaW50ZXJwcmV0X2Nhc3Q8TFBWT0lEPihpbXBsKSwJLy8gYXJndW1lbnQgZm9yIG5ldyB0aHJlYWQKKwkJCTAsCQkJCQkJCQkvLyBjcmVhdGlvbiBmbGFncworCQkJJnRocmVhZElEKTsKKworCWFzc2VydChoMlRocmVhZCAhPSAwKTsKKworCWhUaHJlYWRzLnB1c2hfYmFjayhoMlRocmVhZCk7CisKKwlXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKChEV09SRCkgaFRocmVhZHMuc2l6ZSgpLCAmaFRocmVhZHNbMF0sIFRSVUUsIElORklOSVRFKTsKKworCWZvciAoaSA9IDA7IGkgPCBuVGhyZWFkczsgKytpKQorCXsKKwkJQ2xvc2VIYW5kbGUoaFRocmVhZHNbaV0pOworCX0KKworCS8vIENsZWFyIG91dCB0aGUgdW52ZXJpZmllZCBidWZmZXJzCisJCisJd2hpbGUgKGdfdG9WZXJpZnlRdWV1ZS5zaXplKCkgIT0gMCkgeworCQljaGFyICogYnVmID0gZ190b1ZlcmlmeVF1ZXVlLmZyb250KCk7CisJCWdfdG9WZXJpZnlRdWV1ZS5wb3AoKTsKKwkJZGVsZXRlW10gYnVmOworCX0KKworfQorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgTWFpbgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiogYXJndikgeworCisKKwkvLyBJbml0aWFsaXNlIHRoZSBYTUwgc3lzdGVtCisKKwl0cnkgeworCisJCVhNTFBsYXRmb3JtVXRpbHM6OkluaXRpYWxpemUoKTsKKwkJWFNFQ1BsYXRmb3JtVXRpbHM6OkluaXRpYWxpc2UoKTsKKworCX0KKwljYXRjaCAoY29uc3QgWE1MRXhjZXB0aW9uICZlKSB7CisKKwkJY2VyciA8PCAiRXJyb3IgZHVyaW5nIGluaXRpYWxpc2F0aW9uIG9mIFhlcmNlcyIgPDwgZW5kbDsKKwkJY2VyciA8PCAiRXJyb3IgTWVzc2FnZSA9IDogIgorCQkgICAgIDw8IGUuZ2V0TWVzc2FnZSgpIDw8IGVuZGw7CisKKwl9CisKKwkvLyBDcmVhdGUgYSBzaW5nbGUgaW1wbGVtZW50YXRpb24KKyAgICBET01JbXBsZW1lbnRhdGlvbiAqaW1wbCA9IERPTUltcGxlbWVudGF0aW9uUmVnaXN0cnk6OmdldERPTUltcGxlbWVudGF0aW9uKE1BS0VfVU5JQ09ERV9TVFJJTkcoImNvcmUiKSk7CisKKwkvLyBJbml0aWFsaXNlIHRoYXQgd2hpY2ggbmVlZHMgdG8gYmUgaW5pdGlhbGlzZWQgcHJpb3IgdG8gdGhyZWFkIHN0YXJ0dXAKKwlnX3Byb3ZpZGVyID0gbmV3IFhTRUNQcm92aWRlcjsKKworCXJ1blRocmVhZHMoaW1wbCwgbnVtVGhyZWFkcyk7CisKKwkvLyBDbGVhbiB1cAorCisJZGVsZXRlIGdfcHJvdmlkZXI7CisKKwlYU0VDUGxhdGZvcm1VdGlsczo6VGVybWluYXRlKCk7CisJWE1MUGxhdGZvcm1VdGlsczo6VGVybWluYXRlKCk7CisKKwlyZXR1cm4gMDsKKworfQpkaWZmIC0tZ2l0IGEvYy9zcmMvdG9vbHMvdHhmbW91dC90eGZtb3V0LmNwcCBiL2Mvc3JjL3Rvb2xzL3R4Zm1vdXQvdHhmbW91dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I3ZjBjNAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3Rvb2xzL3R4Zm1vdXQvdHhmbW91dC5jcHAKQEAgLTAsMCArMSw1NzggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIHR4Zm1vdXQ6PSB0b29sIHRvIG91dHB1dCB0aGUgcmVzdWx0cyBvZiB0aGUgdmFyaW91cyB0cmFuc2Zvcm1zCisgKgkJICAgICB1c2VkIHdoZW4gdmFsaWRhdGluZyB0aGUgYXR0YWNoZWQgc2lnbmF0dXJlLgorICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworLy8gWFNFQworCisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDUGxhdGZvcm1VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ1Byb3ZpZGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2Nhbm9uL1hTRUNDMTRuMjAwMTAzMTUuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHU2lnbmF0dXJlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1JlZmVyZW5jZS5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0V4Y2VwdGlvbi5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b0V4Y2VwdGlvbi5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDRE9NVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0JpblRYRk1JbnB1dFN0cmVhbS5ocHA+CisKKyNpZiBkZWZpbmVkKF9XSU4zMikKKyNpbmNsdWRlIDx4c2VjL3V0aWxzL3dpbnV0aWxzL1hTRUNVUklSZXNvbHZlckdlbmVyaWNXaW4zMi5ocHA+CisjZWxzZQorI2luY2x1ZGUgPHhzZWMvdXRpbHMvdW5peHV0aWxzL1hTRUNVUklSZXNvbHZlckdlbmVyaWNVbml4LmhwcD4KKyNlbmRpZgorCisvLyBHZW5lcmFsCisKKyNpbmNsdWRlIDxtZW1vcnkuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDxmc3RyZWFtPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaWYgZGVmaW5lZChIQVZFX1VOSVNURF9IKQorIyBpbmNsdWRlIDx1bmlzdGQuaD4KKyMgZGVmaW5lIF9NQVhfUEFUSCBQQVRIX01BWAorI2Vsc2UKKyMgaWYgZGVmaW5lZChIQVZFX0RJUkVDVF9IKQorIyAgaW5jbHVkZSA8ZGlyZWN0Lmg+CisjIGVuZGlmCisjZW5kaWYKKworCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1BsYXRmb3JtVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxTdHJpbmcuaHBwPgorCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3BhcnNlcnMvWGVyY2VzRE9NUGFyc2VyLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MRXhjZXB0aW9uLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MTmV0QWNjZXNzb3IuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxVcmkuaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKwordXNpbmcgc3RkOjppb3M7Cit1c2luZyBzdGQ6OmNvdXQ7Cit1c2luZyBzdGQ6OmNlcnI7Cit1c2luZyBzdGQ6OmVuZGw7Cit1c2luZyBzdGQ6Om9mc3RyZWFtOworCisjaWZuZGVmIFhTRUNfTk9fWEFMQU4KKworLy8gWEFMQU4KKworI2luY2x1ZGUgPHhhbGFuYy9YUGF0aC9YUGF0aEV2YWx1YXRvci5ocHA+CisjaW5jbHVkZSA8eGFsYW5jL1hhbGFuVHJhbnNmb3JtZXIvWGFsYW5UcmFuc2Zvcm1lci5ocHA+CisKK1hBTEFOX1VTSU5HX1hBTEFOKFhQYXRoRXZhbHVhdG9yKQorWEFMQU5fVVNJTkdfWEFMQU4oWGFsYW5UcmFuc2Zvcm1lcikKKworI2VuZGlmCisKKyNpZmRlZiBYU0VDX05PX1hBTEFOCisKK3N0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCAoc3RkOjpvc3RyZWFtJiB0YXJnZXQsIGNvbnN0IFhNTENoICogcykKK3sKKyAgICBjaGFyICpwID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUocyk7CisgICAgdGFyZ2V0IDw8IHA7CisgICAgWFNFQ19SRUxFQVNFX1hNTENIKHApOworICAgIHJldHVybiB0YXJnZXQ7Cit9CisKKyNlbmRpZgorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICBPdXRwdXR0ZXIKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjbGFzcyBvdXRwdXR0ZXIgeworCitwdWJsaWM6CisKKwlvdXRwdXR0ZXIoKTsKKwl+b3V0cHV0dGVyKCk7CisKKwkvLyBTZXQgbWV0aG9kcworCisJLy8gV2lsbCB0ZWxsIG5vdCB0byB1c2UgY291dCBhbmQgb3BlbiBvbiB0aGlzIGJhc2UKKwl2b2lkIHNldEZpbGVuYW1lKGNvbnN0IGNoYXIgKiBuYW1lKTsKKwkvLyBXaWxsIGFwcGVuZCBhIG51bWJlciBhbmQgcmUtb3BlbiBmb3IgZWFjaCAib3BlbiIgY2FsbAorCXZvaWQgc2V0TmV3RmlsZVBlck9wZW4oKTsKKworCS8vIFJlLW9wZW4gdGhlIGZpbGUgaWYgbmVjZXNzYXJ5IChuZXcgb3V0cHV0KQorCXZvaWQgb3BlblNlY3Rpb24oKTsKKwkvLyBDbG9zZSBpZiBuZWNlc3NhcnkgKG91dHB1dCBzZWN0aW9uIGZpbmlzaGVkKQorCXZvaWQgY2xvc2VTZWN0aW9uKCk7CisJLy8gQ2xvc2Ugb2YgYW5kIGZpbmlzaAorCXZvaWQgY2xvc2VBbGwoKTsKKworCS8vIE91dHB1dCBhIGJ1ZmZlcgorCXZvaWQgb3V0cHV0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBidWYsIHVuc2lnbmVkIGludCBzeik7CisKKwkvLyBJbmZvCisJaW50IGdldEluZGV4KHZvaWQpOworCitwcml2YXRlOgorCisJY2hhcgkJCSogbV9uYW1lOwkJCS8vIE5hbWUgb2YgdGhlIGZpbGUgKG9yIGJhc2UgbmFtZSkKKwlib29sCQkJbV9jb3V0OwkJCQkvLyBBcmUgd2UgdXNpbmcgY291dD8KKwlib29sCQkJbV9uZXdGaWxlUGVyT3BlbjsJLy8gU2hvdWxkIHdlIHJlLW9wZW4/CisJYm9vbAkJCW1fZmlsZU9wZW47CQkJLy8gRG8gd2UgaGF2ZSBhbiBvcGVuIGZpbGUgd2Ugc2hvdWxkIGNsb3NlPworCWludAkJCQltX2NvdW50ZXI7CQkJLy8gVGhlIGNvdW50ZXIKKwlvZnN0cmVhbQkJbV9vdXQ7CQkJCS8vIEN1cnJlbnQgb3V0cHV0IGZpbGUKKworfTsKKworb3V0cHV0dGVyOjpvdXRwdXR0ZXIoKSA6CittX25hbWUoMCksCittX2NvdXQodHJ1ZSksCittX25ld0ZpbGVQZXJPcGVuKGZhbHNlKSwKK21fZmlsZU9wZW4oZmFsc2UpLAorbV9jb3VudGVyKDApIHsKKworfQorCitvdXRwdXR0ZXI6On5vdXRwdXR0ZXIoKSB7CisKKwlpZiAobV9maWxlT3BlbiA9PSB0cnVlKSB7CisKKwkJbV9vdXQuY2xvc2UoKTsKKworCQltX2ZpbGVPcGVuID0gZmFsc2U7CisKKwl9CisKKwlpZiAobV9uYW1lICE9IDApCisJCWRlbGV0ZVtdIG1fbmFtZTsKKworfQorCit2b2lkIG91dHB1dHRlcjo6c2V0RmlsZW5hbWUoY29uc3QgY2hhciAqIG5hbWUpIHsKKworCW1fbmFtZSA9IF9zdHJkdXAobmFtZSk7CisJbV9jb3V0ID0gZmFsc2U7CisKK30KKwordm9pZCBvdXRwdXR0ZXI6OnNldE5ld0ZpbGVQZXJPcGVuKCkgeworCisJbV9uZXdGaWxlUGVyT3BlbiA9IHRydWU7CisKK30KKwordm9pZCBvdXRwdXR0ZXI6Om9wZW5TZWN0aW9uKCkgeworCisJaWYgKG1fY291dCA9PSB0cnVlKQorCQlyZXR1cm47CisKKwlpZiAobV9maWxlT3BlbiA9PSB0cnVlICYmIG1fbmV3RmlsZVBlck9wZW4gPT0gZmFsc2UpCisJCXJldHVybjsKKworCWlmIChtX291dC5pc19vcGVuKCkgIT0gMCkgeworCisJCW1fb3V0LmNsb3NlKCk7CisKKwl9CisKKwljaGFyICogYnVmID0gbmV3IGNoYXJbc3RybGVuKG1fbmFtZSkgKyAxMF07CisJc3RyY3B5KGJ1ZiwgbV9uYW1lKTsKKworCWlmIChtX25ld0ZpbGVQZXJPcGVuID09IHRydWUpIHsKKworCQljaGFyIG51bUJ1ZlsxMF07CisJCXNwcmludGYobnVtQnVmLCAiJWQiLCBtX2NvdW50ZXIpOworCQkvL19pdG9hKG1fY291bnRlciwgbnVtQnVmLCAxMCk7CisJCXN0cmNhdChidWYsICIuIik7CisJCXN0cmNhdChidWYsIG51bUJ1Zik7CisKKwl9CisKKwltX291dC5vcGVuKGJ1ZiwgaW9zOjpvdXQgfCBpb3M6OmJpbmFyeSk7CisJbV9maWxlT3BlbiA9IHRydWU7CisJZGVsZXRlIFtdIGJ1ZjsKK30KKwordm9pZCBvdXRwdXR0ZXI6OmNsb3NlU2VjdGlvbigpIHsKKworCW1fY291bnRlcisrOworCisJaWYgKG1fY291dCA9PSBmYWxzZSAmJiBtX25ld0ZpbGVQZXJPcGVuID09IHRydWUgJiYgbV9vdXQuaXNfb3BlbigpICE9IDApIHsKKworCQltX291dC5jbG9zZSgpOworCQltX2ZpbGVPcGVuID0gZmFsc2U7CisKKwl9CisKKworfQorCitpbnQgb3V0cHV0dGVyOjpnZXRJbmRleCh2b2lkKSB7CisKKwlyZXR1cm4gbV9jb3VudGVyOworCit9CisKK3ZvaWQgb3V0cHV0dGVyOjpjbG9zZUFsbCgpIHsKKworCWlmIChtX291dC5pc19vcGVuKCkgIT0gMCkKKwkJbV9vdXQuY2xvc2UoKTsKKworCW1fZmlsZU9wZW4gPSBmYWxzZTsKKworfQorCisKK3ZvaWQgb3V0cHV0dGVyOjpvdXRwdXQoY29uc3QgdW5zaWduZWQgY2hhciAqIGJ1ZiwgdW5zaWduZWQgaW50IHN6KSB7CisKKwlpZiAobV9jb3V0IHx8IG1fb3V0LmlzX29wZW4oKSA9PSBmYWxzZSkgeworCisJCWNvdXQud3JpdGUoKGNvbnN0IGNoYXIgKikgYnVmLHN6KTsKKworCX0KKwllbHNlIHsKKworCQltX291dC53cml0ZSgoY29uc3QgY2hhciAqKSBidWYsIHN6KTsKKworCX0KKworfQorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gIE1haW4gUHJvZ3JhbQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworCit2b2lkIHByaW50VXNhZ2Uodm9pZCkgeworCisJY2VyciA8PCAiXG5Vc2FnZTogdHhmbW91dCBbb3B0aW9uc10gPGlucHV0IGZpbGUgbmFtZT5cblxuIjsKKwljZXJyIDw8ICIgICAgIFdoZXJlIG9wdGlvbnMgYXJlIDpcblxuIjsKKwljZXJyIDw8ICIgICAgIC0tc2lnbmVkaW5mby8tc1xuIjsKKwljZXJyIDw8ICIgICAgICAgICBPdXRwdXQgY2Fub25pY2FsaXNlZCBTaWduZWRJbmZvIG9ubHlcbiI7CisJY2VyciA8PCAiICAgICAtLW91dC8tb1xuIjsKKwljZXJyIDw8ICIgICAgICAgICBPdXRwdXQgdG8gdGhlIG5vbWluYXRlZCBmaWxlIG5hbWVcbiI7CisJY2VyciA8PCAiICAgICAtLXJlZmVyZW5jZXMvLXIgW251bV1cbiI7CisJY2VyciA8PCAiICAgICAgICAgT3V0cHV0IG9ubHkgcmVmZXJlbmNlcy4gW251bV0gZGVmaW5lcyBhIHNpbmdsZSByZWZlcmVuY2UgdG8gb3V0cHV0XG4iOworCWNlcnIgPDwgIiAgICAgLS1uZXdmaWxlcy8tblxuIjsKKwljZXJyIDw8ICIgICAgICAgICBDcmVhdGUgYSBuZXcgZmlsZSBmb3IgZWFjaCByZWZlcmVuY2UvU2lnbmVkSW5mbyAoYXBwZW5kIC4jKVxuIjsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCQlSZWZlcmVuY2UgT3V0cHV0dGVyCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBvdXRwdXRSZWZlcmVuY2VMaXN0IChEU0lHUmVmZXJlbmNlTGlzdCAqIGxzdCwgb3V0cHV0dGVyICYgdGhlT3V0cHV0dGVyLCBpbnQgcmVmTnVtKSB7CisKKwlpZiAobHN0ID09IDApCisJCXJldHVybjsKKwkKKwlEU0lHUmVmZXJlbmNlICogcmVmOworCXVuc2lnbmVkIGludCBzejsKKwlYU0VDQmluVFhGTUlucHV0U3RyZWFtICogaXM7CisJdW5zaWduZWQgY2hhciBidWZbMTAyNF07CisKKyAgICBEU0lHUmVmZXJlbmNlTGlzdDo6c2l6ZV90eXBlIGxzdFN6ID0gKGludCkgbHN0LT5nZXRTaXplKCk7CisKKwlmb3IgKERTSUdSZWZlcmVuY2VMaXN0OjpzaXplX3R5cGUgaSA9IDA7IGkgPCBsc3RTejsgKytpKSB7CisKKwkJcmVmID0gbHN0LT5pdGVtKGkpOworCQlpZiAocmVmTnVtID09IC0xIHx8IHRoZU91dHB1dHRlci5nZXRJbmRleCgpID09IHJlZk51bSkgeworCQkJdGhlT3V0cHV0dGVyLm9wZW5TZWN0aW9uKCk7CisJCisJCQl0cnkgeworCQkJCWlzID0gcmVmLT5tYWtlQmluSW5wdXRTdHJlYW0oKTsKKwkJCX0KKwkJCWNhdGNoIChOZXRBY2Nlc3NvckV4Y2VwdGlvbiBlKSB7CisKKwkJCQljZXJyIDw8ICJOZXR3b3JrIGVycm9yIGluIHJlZmVyZW5jZSAiIDw8IHRoZU91dHB1dHRlci5nZXRJbmRleCgpIDw8IGVuZGw7CisJCQkJaXMgPSAwOworCQkJCQorCQkJfQorCisKKwkJCWlmIChpcyAhPSAwKSB7CisKKwkJCQlzeiA9ICh1bnNpZ25lZCBpbnQpIGlzLT5yZWFkQnl0ZXMoYnVmLCAxMDIzKTsKKworCQkJCXdoaWxlIChzeiAhPSAwKSB7CisJCQkJCQorCQkJCQlidWZbc3pdID0gJ1wwJzsKKwkJCQkJdGhlT3V0cHV0dGVyLm91dHB1dChidWYsIHN6KTsKKworCQkJCQlzeiA9ICh1bnNpZ25lZCBpbnQpIGlzLT5yZWFkQnl0ZXMoYnVmLCAxMDIzKTsKKworCQkJCX0KKworCQkJCWRlbGV0ZSBpczsKKworCQkJfQorCQl9CisJCXRoZU91dHB1dHRlci5jbG9zZVNlY3Rpb24oKTsKKworCX0KKworCS8vIExvb2sgZm9yIG1hbmlmZXN0cworCWZvciAoRFNJR1JlZmVyZW5jZUxpc3Q6OnNpemVfdHlwZSBpID0gMDsgaSA8IGxzdFN6OyArK2kpIHsKKworCQlyZWYgPSBsc3QtPml0ZW0oaSk7CisKKwkJaWYgKHJlZi0+aXNNYW5pZmVzdCgpID09IHRydWUpIHsKKwkJCW91dHB1dFJlZmVyZW5jZUxpc3QocmVmLT5nZXRNYW5pZmVzdFJlZmVyZW5jZUxpc3QoKSwgdGhlT3V0cHV0dGVyLCByZWZOdW0pOworCQl9CisKKwl9CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgTWFpbiBQcm9ncmFtCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKworCWNoYXIJCQkJCSogZmlsZW5hbWUgPSBOVUxMOworCWJvb2wJCQkJCXNpZ25lZEluZm8gPSB0cnVlOworCWJvb2wJCQkJCXJlZmVyZW5jZXMgPSB0cnVlOworCW91dHB1dHRlcgkJCQl0aGVPdXRwdXR0ZXI7CisJaW50CQkJCQkJcmVmTnVtID0gLTE7CisKKwlpZiAoYXJnYyA8IDIpIHsKKworCQlwcmludFVzYWdlKCk7CisJCWV4aXQgKDIpOworCX0KKworCS8vIFJ1biB0aHJvdWdoIHBhcmFtZXRlcnMKKwlpbnQgcGFyYW1Db3VudCA9IDE7CisKKwl3aGlsZSAocGFyYW1Db3VudCA8IGFyZ2MgLSAxKSB7CisKKwkJaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXNpZ25lZGluZm8iKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItcyIpID09IDApIHsKKwkJCXBhcmFtQ291bnQrKzsKKwkJCXJlZmVyZW5jZXMgPSBmYWxzZTsKKwkJfQorCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1vdXQiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItbyIpID09IDApIHsKKwkJCXBhcmFtQ291bnQrKzsKKwkJCXRoZU91dHB1dHRlci5zZXRGaWxlbmFtZShhcmd2W3BhcmFtQ291bnQrK10pOworCQl9CisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXJlZmVyZW5jZXMiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItciIpID09IDApIHsKKwkJCXBhcmFtQ291bnQrKzsKKwkJCXNpZ25lZEluZm8gPSBmYWxzZTsKKwkJCWlmIChhcmd2W3BhcmFtQ291bnRdWzBdID49ICcwJyAmJiBhcmd2W3BhcmFtQ291bnRdWzBdIDw9ICc5JykKKwkJCQlyZWZOdW0gPSBhdG9pKGFyZ3ZbcGFyYW1Db3VudCsrXSk7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tbmV3ZmlsZXMiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItbiIpID09IDApIHsKKwkJCXBhcmFtQ291bnQrKzsKKwkJCXRoZU91dHB1dHRlci5zZXROZXdGaWxlUGVyT3BlbigpOworCQl9CisJCWVsc2UgeworCQkJcHJpbnRVc2FnZSgpOworCQkJZXhpdCgyKTsKKwkJfQorCX0KKworCWlmIChwYXJhbUNvdW50ID49IGFyZ2MpIHsKKwkJcHJpbnRVc2FnZSgpOworCQlleGl0ICgyKTsKKwl9CisKKwlmaWxlbmFtZSA9IGFyZ3ZbcGFyYW1Db3VudF07CisKKwkvLyBJbml0aWFsaXNlIHRoZSBYTUwgc3lzdGVtCisKKwl0cnkgeworCisJCVhNTFBsYXRmb3JtVXRpbHM6OkluaXRpYWxpemUoKTsKKyNpZm5kZWYgWFNFQ19OT19YQUxBTgorCQlYUGF0aEV2YWx1YXRvcjo6aW5pdGlhbGl6ZSgpOworCQlYYWxhblRyYW5zZm9ybWVyOjppbml0aWFsaXplKCk7CisjZW5kaWYKKwkJWFNFQ1BsYXRmb3JtVXRpbHM6OkluaXRpYWxpc2UoKTsKKworCX0KKwljYXRjaCAoY29uc3QgWE1MRXhjZXB0aW9uICZlKSB7CisKKwkJY2VyciA8PCAiRXJyb3IgZHVyaW5nIGluaXRpYWxpc2F0aW9uIG9mIFhlcmNlcyIgPDwgZW5kbDsKKwkJY2VyciA8PCAiRXJyb3IgTWVzc2FnZSA9IDogIgorCQkgICAgIDw8IGUuZ2V0TWVzc2FnZSgpIDw8IGVuZGw7CisKKwl9CisKKwkvLyBDcmVhdGUgYW5kIHNldCB1cCB0aGUgcGFyc2VyCisKKwlYZXJjZXNET01QYXJzZXIgKiBwYXJzZXIgPSBuZXcgWGVyY2VzRE9NUGFyc2VyOworCQorCXBhcnNlci0+c2V0RG9OYW1lc3BhY2VzKHRydWUpOworCXBhcnNlci0+c2V0Q3JlYXRlRW50aXR5UmVmZXJlbmNlTm9kZXModHJ1ZSk7CisKKwkvLyBOb3cgcGFyc2Ugb3V0IGZpbGUKKworCWJvb2wgZXJyb3JzT2NjdXJlZCA9IGZhbHNlOworCXhzZWNzaXplX3QgZXJyb3JDb3VudCA9IDA7CisgICAgdHJ5CisgICAgeworICAgIAlwYXJzZXItPnBhcnNlKGZpbGVuYW1lKTsKKyAgICAgICAgZXJyb3JDb3VudCA9IHBhcnNlci0+Z2V0RXJyb3JDb3VudCgpOworICAgICAgICBpZiAoZXJyb3JDb3VudCA+IDApCisgICAgICAgICAgICBlcnJvcnNPY2N1cmVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBjYXRjaCAoY29uc3QgWE1MRXhjZXB0aW9uJiBlKQorICAgIHsKKyAgICAgICAgY2VyciA8PCAiQW4gZXJyb3Igb2NjdXJlZCBkdXJpbmcgcGFyc2luZ1xuICAgTWVzc2FnZTogIgorICAgICAgICAgICAgIDw8IGUuZ2V0TWVzc2FnZSgpIDw8IGVuZGw7CisgICAgICAgIGVycm9yc09jY3VyZWQgPSB0cnVlOworICAgIH0KKworCisgICAgY2F0Y2ggKGNvbnN0IERPTUV4Y2VwdGlvbiYgZSkKKyAgICB7CisgICAgICAgY2VyciA8PCAiQSBET00gZXJyb3Igb2NjdXJlZCBkdXJpbmcgcGFyc2luZ1xuICAgRE9NRXhjZXB0aW9uIGNvZGU6ICIKKyAgICAgICAgICAgICA8PCBlLmNvZGUgPDwgZW5kbDsKKyAgICAgICAgZXJyb3JzT2NjdXJlZCA9IHRydWU7CisgICAgfQorCisJaWYgKGVycm9yc09jY3VyZWQpIHsKKworCQljb3V0IDw8ICJFcnJvcnMgZHVyaW5nIHBhcnNlIiA8PCBlbmRsOworCQlleGl0ICgyKTsKKworCX0KKworCS8qCisKKwkJTm93IHRoYXQgd2UgaGF2ZSB0aGUgcGFyc2VkIGZpbGUsIGdldCB0aGUgRE9NIGRvY3VtZW50IGFuZCBzdGFydCBsb29raW5nIGF0IGl0CisKKwkqLworCQorCURPTU5vZGUgKmRvYzsJCS8vIFRoZSBkb2N1bWVudCB0aGF0IHdlIHBhcnNlZAorCisJZG9jID0gcGFyc2VyLT5nZXREb2N1bWVudCgpOworCURPTURvY3VtZW50ICp0aGVET00gPSBwYXJzZXItPmdldERvY3VtZW50KCk7CisKKwkvLyBGaW5kIHRoZSBzaWduYXR1cmUgbm9kZQorCQorCURPTU5vZGUgKnNpZ05vZGUgPSBmaW5kRFNJR05vZGUoZG9jLCAiU2lnbmF0dXJlIik7CisKKwkvLyBDcmVhdGUgdGhlIHNpZ25hdHVyZSBjaGVja2VyCisKKwlpZiAoc2lnTm9kZSA9PSAwKSB7CisKKwkJY2VyciA8PCAiQ291bGQgbm90IGZpbmQgPFNpZ25hdHVyZT4gbm9kZSBpbiAiIDw8IGFyZ3ZbYXJnYy0xXSA8PCBlbmRsOworCQlleGl0KDIpOworCX0KKworCVhTRUNQcm92aWRlciBwcm92OworCURTSUdTaWduYXR1cmUgKiBzaWcgPSBwcm92Lm5ld1NpZ25hdHVyZUZyb21ET00odGhlRE9NLCBzaWdOb2RlKTsKKwlzaWctPnJlZ2lzdGVySWRBdHRyaWJ1dGVOYW1lKE1BS0VfVU5JQ09ERV9TVFJJTkcoIklEIikpOworCisjaWYgZGVmaW5lZChfV0lOMzIpCisJWFNFQ1VSSVJlc29sdmVyR2VuZXJpY1dpbjMyIAorI2Vsc2UKKwlYU0VDVVJJUmVzb2x2ZXJHZW5lcmljVW5peCAKKyNlbmRpZgorCQl0aGVSZXNvbHZlcjsKKwkJIAorCS8vIE1hcCBvdXQgYmFzZSBwYXRoIG9mIHRoZSBmaWxlCisJY2hhciBwYXRoW19NQVhfUEFUSF07CisJY2hhciBiYXNlVVJJWyhfTUFYX1BBVEggKiAyKSArIDEwXTsKKwlfZ2V0Y3dkKHBhdGgsIF9NQVhfUEFUSCk7CisKKwlzdHJjcHkoYmFzZVVSSSwgImZpbGU6Ly8vIik7CisJc3RyY2F0KGJhc2VVUkksIHBhdGgpOworCXN0cmNhdChiYXNlVVJJLCAiLyIpOworCXN0cmNhdChiYXNlVVJJLCBmaWxlbmFtZSk7CisKKwkvLyBGaW5kIGFueSAnOicgYW5kICJcIiBjaGFyYWN0ZXJzCisJaW50IGxhc3RTbGFzaCA9IDA7CisJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDg7IGkgPCBzdHJsZW4oYmFzZVVSSSk7ICsraSkgeworCQlpZiAoYmFzZVVSSVtpXSA9PSAnXFwnKSB7CisJCQlsYXN0U2xhc2ggPSBpOworCQkJYmFzZVVSSVtpXSA9ICcvJzsKKwkJfQorCQllbHNlIGlmIChiYXNlVVJJW2ldID09ICcvJykKKwkJCWxhc3RTbGFzaCA9IGk7CisJfQorCisJLy8gVGhlIGxhc3QgIlxcIiBtdXN0IHByZWZpeCB0aGUgZmlsZW5hbWUKKwliYXNlVVJJW2xhc3RTbGFzaCArIDFdID0gJ1wwJzsKKworCXRoZVJlc29sdmVyLnNldEJhc2VVUkkoTUFLRV9VTklDT0RFX1NUUklORyhiYXNlVVJJKSk7CisKKwlzaWctPnNldFVSSVJlc29sdmVyKCZ0aGVSZXNvbHZlcik7CisKKworCXRyeSB7CisKKwkJWFNFQ0JpblRYRk1JbnB1dFN0cmVhbSAqIGlzOworCQlYTUxCeXRlIGJ1ZlsxMDI0XTsKKwkJdW5zaWduZWQgaW50IHN6OworCisJCXNpZy0+bG9hZCgpOworCQlpZiAocmVmZXJlbmNlcykgeworCQkJb3V0cHV0UmVmZXJlbmNlTGlzdChzaWctPmdldFJlZmVyZW5jZUxpc3QoKSwgdGhlT3V0cHV0dGVyLCByZWZOdW0pOworCisJCX0KKwkJaWYgKHNpZ25lZEluZm8pIHsKKwkJCWlzID0gc2lnLT5tYWtlQmluSW5wdXRTdHJlYW0oKTsKKwkJCWlmIChpcyAhPSBOVUxMKSB7CisKKwkJCQl0aGVPdXRwdXR0ZXIub3BlblNlY3Rpb24oKTsKKwkJCQlzeiA9ICh1bnNpZ25lZCBpbnQpIGlzLT5yZWFkQnl0ZXMoYnVmLCAxMDIzKTsKKworCQkJCXdoaWxlIChzeiAhPSAwKSB7CisJCQkJCQorCQkJCQlidWZbc3pdID0gJ1wwJzsKKwkJCQkJdGhlT3V0cHV0dGVyLm91dHB1dChidWYsIHN6KTsKKwkKKwkJCQkJc3ogPSAodW5zaWduZWQgaW50KSBpcy0+cmVhZEJ5dGVzKGJ1ZiwgMTAyMyk7CisKKwkJCQl9CisJCQkJdGhlT3V0cHV0dGVyLmNsb3NlU2VjdGlvbigpOworCisJCQkJZGVsZXRlIGlzOworCisJCQl9CisJCX0KKwl9CisKKwljYXRjaCAoWFNFQ0V4Y2VwdGlvbiAmZSkgeworCQljaGFyICogbSA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKGUuZ2V0TXNnKCkpOworCQljZXJyIDw8ICJBbiBlcnJvciBvY2N1cmVkIGR1cmluZyBzaWduYXR1cmUgcHJvY2Vzc2luZ1xuICAgTWVzc2FnZTogIgorCQk8PCBtIDw8IGVuZGw7CisJCVhTRUNfUkVMRUFTRV9YTUxDSChtKTsKKwkJZXJyb3JzT2NjdXJlZCA9IHRydWU7CisJCWV4aXQgKDIpOworCX0KKworCXRoZU91dHB1dHRlci5jbG9zZUFsbCgpOworCisJcHJvdi5yZWxlYXNlU2lnbmF0dXJlKHNpZyk7CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2Mvc3JjL3Rvb2xzL3hrbGllbnQveGtsaWVudC5jcHAgYi9jL3NyYy90b29scy94a2xpZW50L3hrbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzMjBkODUKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy90b29scy94a2xpZW50L3hrbGllbnQuY3BwCkBAIC0wLDAgKzEsNDY0MCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogeGtsaWVudCA6PSBBY3QgYXMgYSBjbGllbnQgZm9yIGFuIFhLTVMgc2VydmljZQorICoKKyAqICRJZCQKKyAqCisgKi8KKworLy8gWFNFQworCisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDUGxhdGZvcm1VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ1Byb3ZpZGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvY2Fub24vWFNFQ0MxNG4yMDAxMDMxNS5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdTaWduYXR1cmUuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHS2V5SW5mb1g1MDkuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHS2V5SW5mb1ZhbHVlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0tleUluZm9OYW1lLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXhjZXB0aW9uLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvRXhjZXB0aW9uLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0NyeXB0L1hTQ3J5cHRDcnlwdG9CYXNlNjQuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDRE9NVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNLZXlJbmZvUmVzb2x2ZXJEZWZhdWx0LmhwcD4KKworI2luY2x1ZGUgPHhzZWMveGttcy9YS01TQ29tcG91bmRSZXF1ZXN0LmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0NvbXBvdW5kUmVzdWx0LmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1BlbmRpbmdSZXF1ZXN0LmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGUuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TTG9jYXRlUmVxdWVzdC5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNMb2NhdGVSZXN1bHQuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TU3RhdHVzUmVxdWVzdC5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNTdGF0dXNSZXN1bHQuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TUmVzdWx0LmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1F1ZXJ5S2V5QmluZGluZy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNLZXlCaW5kaW5nLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1VzZUtleVdpdGguaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TQ29uc3RhbnRzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1ZhbGlkYXRlUmVxdWVzdC5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNWYWxpZGF0ZVJlc3VsdC5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNSZWdpc3RlclJlcXVlc3QuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TUmVnaXN0ZXJSZXN1bHQuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TQXV0aGVudGljYXRpb24uaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TUHJvdG90eXBlS2V5QmluZGluZy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNSZXZva2VSZXF1ZXN0LmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1Jldm9rZVJlc3VsdC5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNSZWNvdmVyUmVxdWVzdC5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNSZWNvdmVyUmVzdWx0LmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1JlaXNzdWVSZXF1ZXN0LmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1JlaXNzdWVSZXN1bHQuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TUmV2b2tlS2V5QmluZGluZy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNSZWNvdmVyS2V5QmluZGluZy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNSZWlzc3VlS2V5QmluZGluZy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNSU0FLZXlQYWlyLmhwcD4KKworI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1NPQVBSZXF1ZXN0b3JTaW1wbGUuaHBwPgorCisvLyBHZW5lcmFsCisKKyNpbmNsdWRlIDxtZW1vcnkuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2lmICFkZWZpbmVkKF9XSU4zMikKKyMJaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyMJaW5jbHVkZSA8dGltZS5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkIChfREVCVUcpICYmIGRlZmluZWQgKF9NU0NfVkVSKQorI2luY2x1ZGUgPGNydGRiZy5oPgorI2VuZGlmCisKKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9QbGF0Zm9ybVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MU3RyaW5nLmhwcD4KKworI2luY2x1ZGUgPHhlcmNlc2MvZG9tL0RPTS5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy9wYXJzZXJzL1hlcmNlc0RPTVBhcnNlci5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy9mcmFtZXdvcmsvU3RkT3V0Rm9ybWF0VGFyZ2V0LmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MRXhjZXB0aW9uLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL2ZyYW1ld29yay9Mb2NhbEZpbGVJbnB1dFNvdXJjZS5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFVyaS5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL0phbml0b3IuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2Mvc2F4L0Vycm9ySGFuZGxlci5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy9zYXgvU0FYUGFyc2VFeGNlcHRpb24uaHBwPgorI2luY2x1ZGUgPHhlcmNlc2Mvc2F4L0VudGl0eVJlc29sdmVyLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3NheC9JbnB1dFNvdXJjZS5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCit1c2luZyBzdGQ6OmNlcnI7Cit1c2luZyBzdGQ6OmNvdXQ7Cit1c2luZyBzdGQ6OmVuZGw7Cit1c2luZyBzdGQ6Om9zdHJlYW07CisKKyNpZm5kZWYgWFNFQ19OT19YQUxBTgorCisvLyBYQUxBTgorCisjaW5jbHVkZSA8eGFsYW5jL1hQYXRoL1hQYXRoRXZhbHVhdG9yLmhwcD4KKyNpbmNsdWRlIDx4YWxhbmMvWGFsYW5UcmFuc2Zvcm1lci9YYWxhblRyYW5zZm9ybWVyLmhwcD4KKworWEFMQU5fVVNJTkdfWEFMQU4oWFBhdGhFdmFsdWF0b3IpCitYQUxBTl9VU0lOR19YQUxBTihYYWxhblRyYW5zZm9ybWVyKQorCisjZW5kaWYKKworI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKy8vIE9wZW5TU0wKKworIwlpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorIwlpbmNsdWRlIDx4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9LZXlEU0EuaHBwPgorIwlpbmNsdWRlIDx4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9CYXNlNjQuaHBwPgorIwlpbmNsdWRlIDx4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9LZXlSU0EuaHBwPgorIwlpbmNsdWRlIDx4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9LZXlITUFDLmhwcD4KKyMJaW5jbHVkZSA8eHNlYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvWDUwOS5ocHA+CisKKyMJaW5jbHVkZSA8b3BlbnNzbC9iaW8uaD4KKyMJaW5jbHVkZSA8b3BlbnNzbC9kc2EuaD4KKyMJaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KKyMJaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KKyMJaW5jbHVkZSA8b3BlbnNzbC9wZW0uaD4KKworI2VuZGlmCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgR2xvYmFsIGRlZmluaXRpb25zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitib29sIGdfdHh0T3V0ID0gZmFsc2U7CitjaGFyICogZ19hdXRoUGFzc1BocmFzZSA9IE5VTEw7CitjaGFyICogZ19wcml2YXRlS2V5RmlsZSA9IE5VTEw7CitjaGFyICogZ19wcml2YXRlS2V5UGFzc1BocmFzZSA9IE5VTEw7CisKK2ludCBkb1BhcnNlZE1zZ0R1bXAoRE9NRG9jdW1lbnQgKiBkb2MpOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdlbmVyYWwgZnVuY3Rpb25zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKKyNpZmRlZiBYU0VDX05PX1hBTEFOCisKK29zdHJlYW0mIG9wZXJhdG9yPDwgKG9zdHJlYW0mIHRhcmdldCwgY29uc3QgWE1MQ2ggKiBzKQoreworICAgIGNoYXIgKnAgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShzKTsKKyAgICB0YXJnZXQgPDwgcDsKKyAgICBYU0VDX1JFTEVBU0VfWE1MQ0gocCk7CisgICAgcmV0dXJuIHRhcmdldDsKK30KKworI2VuZGlmCisKK2NsYXNzIFgyQyB7CisKK3B1YmxpYzoKKworCVgyQyhjb25zdCBYTUxDaCAqIGluKSB7CisJCW1wX2NTdHIgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShpbik7CisJfQorCX5YMkMoKSB7CisJCVhTRUNfUkVMRUFTRV9YTUxDSChtcF9jU3RyKTsKKwl9CisKKwljaGFyICogc3RyKHZvaWQpIHsKKwkJcmV0dXJuIG1wX2NTdHI7CisJfQorCitwcml2YXRlIDoKKworCWNoYXIgKiBtcF9jU3RyOworCit9OworCitvc3RyZWFtICYgb3BlcmF0b3I8PChvc3RyZWFtJiB0YXJnZXQsIFgyQyAmeCkgeworCXRhcmdldCA8PCB4LnN0cigpOworCXJldHVybiB0YXJnZXQ7Cit9CisKK2lubGluZQordm9pZCBsZXZlbFNldChpbnQgbGV2ZWwpIHsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgbGV2ZWw7ICsraSkKKwkJY291dCA8PCAiICAgICI7CisKK30KKwordm9pZCBvdXRwdXREb2MoRE9NRG9jdW1lbnQgKiBkb2MpIHsKKworCVhNTENoIHRlbXBTdHJbMTAwXTsKKwlYTUxTdHJpbmc6OnRyYW5zY29kZSgiQ29yZSIsIHRlbXBTdHIsIDk5KTsgICAgCisJRE9NSW1wbGVtZW50YXRpb24gKmltcGwgPSBET01JbXBsZW1lbnRhdGlvblJlZ2lzdHJ5OjpnZXRET01JbXBsZW1lbnRhdGlvbih0ZW1wU3RyKTsKKwlYTUxGb3JtYXRUYXJnZXQgKmZvcm1hdFRhcmdldCA9IG5ldyBTdGRPdXRGb3JtYXRUYXJnZXQoKTsKKworCWNlcnIgPDwgZW5kbDsKKworI2lmIGRlZmluZWQgKFhTRUNfWEVSQ0VTX0RPTUxTU0VSSUFMSVpFUikKKworICAgIC8vIERPTSBMMyB2ZXJzaW9uIGFzIHBlciBYZXJjZXMgMy4wIEFQSQorICAgIERPTUxTU2VyaWFsaXplciAgICp0aGVTZXJpYWxpemVyID0gKChET01JbXBsZW1lbnRhdGlvbkxTKilpbXBsKS0+Y3JlYXRlTFNTZXJpYWxpemVyKCk7CisKKyAgICAvLyBHZXQgdGhlIGNvbmZpZyBzbyB3ZSBjYW4gc2V0IHVwIHByZXR0eSBwcmludGluZworICAgIERPTUNvbmZpZ3VyYXRpb24gKmRjID0gdGhlU2VyaWFsaXplci0+Z2V0RG9tQ29uZmlnKCk7CisgICAgZGMtPnNldFBhcmFtZXRlcihYTUxVbmk6OmZnRE9NV1JURm9ybWF0UHJldHR5UHJpbnQsIGZhbHNlKTsKKworICAgIC8vIE5vdyBjcmVhdGUgYW4gb3V0cHV0IG9iamVjdCB0byBmb3JtYXQgdG8gVVRGLTgKKyAgICBET01MU091dHB1dCAqdGhlT3V0cHV0ID0gKChET01JbXBsZW1lbnRhdGlvbkxTKilpbXBsKS0+Y3JlYXRlTFNPdXRwdXQoKTsKKyAgICBKYW5pdG9yPERPTUxTT3V0cHV0PiBqX3RoZU91dHB1dCh0aGVPdXRwdXQpOworCisgICAgdGhlT3V0cHV0LT5zZXRFbmNvZGluZyhNQUtFX1VOSUNPREVfU1RSSU5HKCJVVEYtOCIpKTsKKyAgICB0aGVPdXRwdXQtPnNldEJ5dGVTdHJlYW0oZm9ybWF0VGFyZ2V0KTsKKworICAgIHRoZVNlcmlhbGl6ZXItPndyaXRlKGRvYywgdGhlT3V0cHV0KTsKKworI2Vsc2UKKworCURPTVdyaXRlciAgICAgICAgICp0aGVTZXJpYWxpemVyID0gKChET01JbXBsZW1lbnRhdGlvbkxTKilpbXBsKS0+Y3JlYXRlRE9NV3JpdGVyKCk7CisKKwl0aGVTZXJpYWxpemVyLT5zZXRFbmNvZGluZyhNQUtFX1VOSUNPREVfU1RSSU5HKCJVVEYtOCIpKTsKKwlpZiAodGhlU2VyaWFsaXplci0+Y2FuU2V0RmVhdHVyZShYTUxVbmk6OmZnRE9NV1JURm9ybWF0UHJldHR5UHJpbnQsIGZhbHNlKSkKKwkJdGhlU2VyaWFsaXplci0+c2V0RmVhdHVyZShYTUxVbmk6OmZnRE9NV1JURm9ybWF0UHJldHR5UHJpbnQsIGZhbHNlKTsKKworCXRoZVNlcmlhbGl6ZXItPndyaXRlTm9kZShmb3JtYXRUYXJnZXQsICpkb2MpOworCQorI2VuZGlmCisKKwljb3V0IDw8IGVuZGw7CisKKwljZXJyIDw8IGVuZGw7CisKKwlkZWxldGUgdGhlU2VyaWFsaXplcjsKKwlkZWxldGUgZm9ybWF0VGFyZ2V0OworCit9CisKK1hTRUNDcnlwdG9YNTA5ICogbG9hZFg1MDkoY29uc3QgY2hhciAqIGluZmlsZSkgeworCisJRklMRSAqIGYgPSBmb3BlbihpbmZpbGUsICJyIik7CisJaWYgKGYgPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisKKwlzYWZlQnVmZmVyIHNiOworCWNoYXIgYnVmWzEwMjRdOworCisJaW50IGkgPSAoaW50KSBmcmVhZChidWYsIDEsIDEwMjQsIGYpOworCWludCBqID0gMDsKKwl3aGlsZSAoaSAhPSAwKSB7CisJCXNiLnNiTWVtY3B5SW4oaiwgYnVmLCBpKTsKKwkJaiArPSBpOworCQlpID0gKGludCkgZnJlYWQoYnVmLCAxLCAxMDI0LCBmKTsKKwl9CisKKwlzYltqXSA9ICdcMCc7CisKKwlYU0VDQ3J5cHRvWDUwOSAqIHJldCA9IAorCQlYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+WDUwOSgpOworCisJcmV0LT5sb2FkWDUwOVBFTShzYi5yYXdDaGFyQnVmZmVyKCkpOworCisJcmV0dXJuIHJldDsKKworfQorCisjaWYgZGVmaW5lZCAoSEFWRV9PUEVOU1NMKQorCitYTUxDaCAqIEJOMmI2NChCSUdOVU0gKiBibikgeworCisJaW50IGJ5dGVzID0gQk5fbnVtX2J5dGVzKGJuKTsKKwl1bnNpZ25lZCBjaGFyICogYmluYnVmID0gbmV3IHVuc2lnbmVkIGNoYXJbYnl0ZXMgKyAxXTsKKwlBcnJheUphbml0b3I8dW5zaWduZWQgY2hhcj4gal9iaW5idWYoYmluYnVmKTsKKworCWJ5dGVzID0gQk5fYm4yYmluKGJuLCBiaW5idWYpOworCisKKwlpbnQgYnVmTGVuID0gYnl0ZXMgKiA0OworCWludCBsZW4gPSBidWZMZW47CisJdW5zaWduZWQgY2hhciAqIGJ1ZjsKKwlYU0VDbmV3KGJ1ZiwgdW5zaWduZWQgY2hhcltidWZMZW5dKTsKKwlBcnJheUphbml0b3I8dW5zaWduZWQgY2hhcj4gal9idWYoYnVmKTsKKworCVhTQ3J5cHRDcnlwdG9CYXNlNjQgKmI2NDsKKwlYU0VDbmV3KGI2NCwgWFNDcnlwdENyeXB0b0Jhc2U2NCk7CisJSmFuaXRvcjxYU0NyeXB0Q3J5cHRvQmFzZTY0PiBqX2I2NChiNjQpOworCisJYjY0LT5lbmNvZGVJbml0KCk7CisJYnVmTGVuID0gYjY0LT5lbmNvZGUoYmluYnVmLCBieXRlcywgYnVmLCBidWZMZW4pOworCWJ1ZkxlbiArPSBiNjQtPmVuY29kZUZpbmlzaCgmYnVmW2J1Zkxlbl0sIGxlbi1idWZMZW4pOworCWJ1ZltidWZMZW5dID0gJ1wwJzsKKworCS8vIE5vdyB0cmFuc2xhdGUgdG8gYSBiaWdudW0KKwlyZXR1cm4gWE1MU3RyaW5nOjp0cmFuc2NvZGUoKGNoYXIgKikgYnVmKTsKKworfQorCisjZW5kaWYKKworRFNJR0tleUluZm9YNTA5ICogZmluZFg1MDlEYXRhKERTSUdLZXlJbmZvTGlzdCAqIGxzdCkgeworCisJaWYgKGxzdCA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCWludCBzeiA9IChpbnQpIGxzdC0+Z2V0U2l6ZSgpOworCWZvciAoaW50IGkgPSAwOyBpIDwgc3o7ICsraSkgeworCisJCURTSUdLZXlJbmZvICpraSA9IGxzdC0+aXRlbShpKTsKKwkJaWYgKGtpLT5nZXRLZXlJbmZvVHlwZSgpID09IERTSUdLZXlJbmZvOjpLRVlJTkZPX1g1MDkpCisJCQlyZXR1cm4gKERTSUdLZXlJbmZvWDUwOSopIGtpOworCisJfQorCisJcmV0dXJuIE5VTEw7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBFcnJvckhhbmRsZXIKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIHhrbXNFcnJvckhhbmRsZXIgOiBwdWJsaWMgRXJyb3JIYW5kbGVyIHsKKworcHVibGljOgorCQorCXhrbXNFcnJvckhhbmRsZXIoKSB7fQorCX54a21zRXJyb3JIYW5kbGVyKCkge30KKworCS8vIEludGVyZmFjZQorCXZpcnR1YWwgdm9pZCAJd2FybmluZyAoY29uc3QgU0FYUGFyc2VFeGNlcHRpb24gJmV4Yyk7CisJdmlydHVhbCB2b2lkIAllcnJvciAoY29uc3QgU0FYUGFyc2VFeGNlcHRpb24gJmV4Yyk7CisJdmlydHVhbCB2b2lkIAlmYXRhbEVycm9yIChjb25zdCBTQVhQYXJzZUV4Y2VwdGlvbiAmZXhjKTsKKwl2aXJ0dWFsIHZvaWQgCXJlc2V0RXJyb3JzICgpOworCQorcHJpdmF0ZToKKworCXZvaWQgb3V0cHV0RXJyb3IoY29uc3QgU0FYUGFyc2VFeGNlcHRpb24gJmV4Yyk7CisKK307CisKK3ZvaWQgeGttc0Vycm9ySGFuZGxlcjo6b3V0cHV0RXJyb3IoY29uc3QgU0FYUGFyc2VFeGNlcHRpb24gJmV4YykgeworCisJY2hhciAqIHN5c3RlbUlkID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoZXhjLmdldFN5c3RlbUlkKCkpOworCWNoYXIgKiBtc2cgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShleGMuZ2V0TWVzc2FnZSgpKTsKKwlpZiAoZXhjLmdldExpbmVOdW1iZXIoKSA+IDAgfHwgZXhjLmdldENvbHVtbk51bWJlcigpID4gMCkgeworCQljZXJyIDw8ICJGaWxlOiAiIDw8IHN5c3RlbUlkIDw8ICIgTGluZSA6ICIgPDwgZXhjLmdldExpbmVOdW1iZXIoKSA8PCAiIENvbHVtbiA6ICIgCisJCQk8PCBleGMuZ2V0Q29sdW1uTnVtYmVyKCkgPDwgIi4gIiA8PCBtc2cgPDwgZW5kbDsKKwl9CisJZWxzZSB7CisJCWNlcnIgPDwgbXNnIDw8IGVuZGw7CisJfQorCVhTRUNfUkVMRUFTRV9YTUxDSChtc2cpOworCVhTRUNfUkVMRUFTRV9YTUxDSChzeXN0ZW1JZCk7CisKK30KKwordm9pZCB4a21zRXJyb3JIYW5kbGVyOjp3YXJuaW5nKGNvbnN0IFNBWFBhcnNlRXhjZXB0aW9uICZleGMpIHsKKworCWNlcnIgPDwgIlBhcnNlciB3YXJuaW5nIC0gIjsKKwlvdXRwdXRFcnJvcihleGMpOworCit9CisKK3ZvaWQgeGttc0Vycm9ySGFuZGxlcjo6ZXJyb3IgKGNvbnN0IFNBWFBhcnNlRXhjZXB0aW9uICZleGMpIHsKKworCWNlcnIgPDwgIlBhcnNlciBlcnJvciAtICI7CisJb3V0cHV0RXJyb3IoZXhjKTsKKworfQorCit2b2lkIHhrbXNFcnJvckhhbmRsZXI6OmZhdGFsRXJyb3IgKGNvbnN0IFNBWFBhcnNlRXhjZXB0aW9uICZleGMpIHsKKworCWNlcnIgPDwgIlBhcnNlciBmYXRhbCBlcnJvciAtICI7CisJb3V0cHV0RXJyb3IoZXhjKTsKKworfQorCit2b2lkIHhrbXNFcnJvckhhbmRsZXI6OnJlc2V0RXJyb3JzICgpIHsKKworfQorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ3JlYXRlIGEgTG9jYXRlUmVxdWVzdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBwcmludExvY2F0ZVJlcXVlc3RVc2FnZSh2b2lkKSB7CisKKwljZXJyIDw8ICJcblVzYWdlIExvY2F0ZVJlcXVlc3QgWy0taGVscHwtaF0gPHNlcnZpY2UgVVJJPiBbb3B0aW9uc11cbiI7CisJY2VyciA8PCAiICAgLS1oZWxwLy1oICAgICAgICAgICAgICAgIDogcHJpbnQgdGhpcyBzY3JlZW4gYW5kIGV4aXRcblxuIjsKKwljZXJyIDw8ICIgICAtLWFkZC1jZXJ0Ly1hIDxmaWxlbmFtZT4gOiBhZGQgY2VydCBpbiBmaWxlbmFtZSBhcyBhIEtleUluZm9cbiI7CisJY2VyciA8PCAiICAgLS1hZGQtbmFtZS8tbiA8bmFtZT4gICAgIDogQWRkIG5hbWUgYXMgYSBLZXlJbmZvTmFtZVxuIjsKKwljZXJyIDw8ICIgICAtLWFkZC1vcGFxdWUvLW8gPGRhdGE+ICAgOiBBZGQgYW4gb3BhcXVlIGRhdGEgc3RyaW5nXG4iOworCWNlcnIgPDwgIiAgIC0tYWRkLXVzYWdlLXNpZy8tdXMgICAgICA6IEFkZCBTaWduYXR1cmUgS2V5IFVzYWdlXG4iOworCWNlcnIgPDwgIiAgIC0tYWRkLXVzYWdlLWV4Yy8tdXggICAgICA6IEFkZCBFeGNhbmdlIEtleSBVc2FnZVxuIjsKKwljZXJyIDw8ICIgICAtLWFkZC11c2FnZS1lbmMvLXVlICAgICAgOiBBZGQgRW5jcnlwdGlvbiBLZXkgVXNhZ2VcbiI7CisJY2VyciA8PCAiICAgLS1hZGQtcmVzcG9uc2VsaW1pdC8tbCA8bGltaXQ+XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFNldCA8bGltaXQ+IGZvciBSZXNwb25zZUxpbWl0XG4iOworCWNlcnIgPDwgIiAgIC0tYWRkLXVzZWtleXdpdGgvLXUgPEFwcGxpY2F0aW9uIFVSST4gPElkZW50aWZpZXI+XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEFkZCBhIFVzZUtleVdpdGggZWxlbWVudFxuIjsKKwljZXJyIDw8ICIgICAtLWFkZC1yZXNwb25kd2l0aC8tciA8SWRlbnRpZmllcj5cbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogQWRkIGEgUmVzcG9uZFdpdGggZWxlbWVudFxuIjsKKwljZXJyIDw8ICIgICAtLWFkZC1yZXNwb25zZW1lY2hhbmlzbS8tbSA8SWRlbnRpZmllcj5cbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogQWRkIGEgUmVzcG9uc2VNZWNoYW5pc20gZWxlbWVudFxuIjsKKwljZXJyIDw8ICIgICAtLXNpZ24tcnNhLy1zciA8ZmlsZW5hbWU+IDxwYXNzcGhyYXNlPlxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgIDogU2lnbiB1c2luZyB0aGUgUlNBIGtleSBpbiBmaWxlIHByb3RlY3RlZCBieSBwYXNzcGhyYXNlXG4iOworCWNlcnIgPDwgIiAgIC0tc2lnbi1kc2EvLXNkIDxmaWxlbmFtZT4gPHBhc3NwaHJhc2U+XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgOiBTaWduIHVzaW5nIHRoZSBEU0Ega2V5IGluIGZpbGUgcHJvdGVjdGVkIGJ5IHBhc3NwaHJhc2VcblxuIjsKKworfQorCitYS01TTWVzc2FnZUFic3RyYWN0VHlwZSAqIGNyZWF0ZUxvY2F0ZVJlcXVlc3QoWFNFQ1Byb3ZpZGVyICZwcm92LCBET01Eb2N1bWVudCAqKmRvYywgaW50IGFyZ2MsIGNoYXIgKiogYXJndiwgaW50ICZwYXJhbUNvdW50LCBYS01TQ29tcG91bmRSZXF1ZXN0ICogY3IgPSBOVUxMKSB7CisKKwlpZiAocGFyYW1Db3VudCA+PSBhcmdjIHx8IAorCQkoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0taGVscCIpID09IDApIHx8CisJCShfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLWgiKSA9PSAwKSkgeworCisJCXByaW50TG9jYXRlUmVxdWVzdFVzYWdlKCk7CisJCXJldHVybiBOVUxMOworCX0KKworCS8qIEZpcnN0IGNyZWF0ZSB0aGUgYmFzaWMgcmVxdWVzdCAqLworCVhLTVNNZXNzYWdlRmFjdG9yeSAqIGZhY3RvcnkgPSAKKwkJcHJvdi5nZXRYS01TTWVzc2FnZUZhY3RvcnkoKTsKKwlYS01TTG9jYXRlUmVxdWVzdCAqIGxyOyAKKwlpZiAoY3IgPT0gTlVMTCkKKwkJbHIgPSBmYWN0b3J5LT5jcmVhdGVMb2NhdGVSZXF1ZXN0KE1BS0VfVU5JQ09ERV9TVFJJTkcoYXJndltwYXJhbUNvdW50KytdKSwgZG9jKTsKKwllbHNlCisJCWxyID0gY3ItPmNyZWF0ZUxvY2F0ZVJlcXVlc3QoTUFLRV9VTklDT0RFX1NUUklORyhhcmd2W3BhcmFtQ291bnQrK10pKTsKKworCXdoaWxlIChwYXJhbUNvdW50IDwgYXJnYyAmJiBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS0iKSAhPSAwKSB7CisKKwkJaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWFkZC1jZXJ0IikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLWEiKSA9PSAwKSB7CisJCQlpZiAoKytwYXJhbUNvdW50ID49IGFyZ2MpIHsKKwkJCQlwcmludExvY2F0ZVJlcXVlc3RVc2FnZSgpOworCQkJCWRlbGV0ZSBscjsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKwkJCVhTRUNDcnlwdG9YNTA5ICogeCA9IGxvYWRYNTA5KGFyZ3ZbcGFyYW1Db3VudF0pOworCQkJaWYgKHggPT0gTlVMTCkgeworCQkJCWRlbGV0ZSBscjsKKwkJCQkoKmRvYyktPnJlbGVhc2UoKTsKKwkJCQljZXJyIDw8ICJFcnJvciBvcGVuaW5nIENlcnRpZmljYXRlIGZpbGUgOiAiIDw8IAorCQkJCQlhcmd2W3BhcmFtQ291bnRdIDw8IGVuZGw7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisKKwkJCUphbml0b3I8WFNFQ0NyeXB0b1g1MDk+IGpfeCh4KTsKKworCQkJWEtNU1F1ZXJ5S2V5QmluZGluZyAqIHFrYiA9IGxyLT5nZXRRdWVyeUtleUJpbmRpbmcoKTsKKwkJCWlmIChxa2IgPT0gTlVMTCkgeworCQkJCXFrYiA9IGxyLT5hZGRRdWVyeUtleUJpbmRpbmcoKTsKKwkJCX0KKwkJCS8vIFNlZSBpZiB0aGVyZSBpcyBhbHJlYWR5IGFuIFguNTA5IGVsZW1lbnQKKwkJCURTSUdLZXlJbmZvWDUwOSAqIGtpeDsKKwkJCWlmICgoa2l4ID0gZmluZFg1MDlEYXRhKHFrYi0+Z2V0S2V5SW5mb0xpc3QoKSkpID09IE5VTEwpCisJCQkJa2l4ID0gcWtiLT5hcHBlbmRYNTA5RGF0YSgpOworCQkJc2FmZUJ1ZmZlciBzYiA9IHgtPmdldERFUkVuY29kaW5nU0IoKTsKKwkJCWtpeC0+YXBwZW5kWDUwOUNlcnRpZmljYXRlKHNiLnNiU3RyVG9YTUxDaCgpKTsKKwkJCXBhcmFtQ291bnQrKzsKKwkJfQorCisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWFkZC1uYW1lIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLW4iKSA9PSAwKSB7CisJCQlpZiAoKytwYXJhbUNvdW50ID49IGFyZ2MpIHsKKwkJCQlwcmludExvY2F0ZVJlcXVlc3RVc2FnZSgpOworCQkJCWRlbGV0ZSBscjsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKwkJCVhLTVNRdWVyeUtleUJpbmRpbmcgKiBxa2IgPSBsci0+YWRkUXVlcnlLZXlCaW5kaW5nKCk7CisJCQlxa2ItPmFwcGVuZEtleU5hbWUoTUFLRV9VTklDT0RFX1NUUklORyhhcmd2W3BhcmFtQ291bnRdKSk7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLW9wYXF1ZSIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1vIikgPT0gMCkgeworCQkJaWYgKCsrcGFyYW1Db3VudCA+PSBhcmdjKSB7CisJCQkJcHJpbnRMb2NhdGVSZXF1ZXN0VXNhZ2UoKTsKKwkJCQlkZWxldGUgbHI7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisJCQlsci0+YXBwZW5kT3BhcXVlQ2xpZW50RGF0YUl0ZW0oTUFLRV9VTklDT0RFX1NUUklORyhhcmd2W3BhcmFtQ291bnRdKSk7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLXVzYWdlLXNpZyIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi11cyIpID09IDApIHsKKwkJCVhLTVNRdWVyeUtleUJpbmRpbmcgKiBxa2IgPSBsci0+Z2V0UXVlcnlLZXlCaW5kaW5nKCk7CisJCQlpZiAocWtiID09IE5VTEwpCisJCQkJcWtiID0gbHItPmFkZFF1ZXJ5S2V5QmluZGluZygpOworCQkJcWtiLT5zZXRTaWduYXR1cmVLZXlVc2FnZSgpOworCQkJcGFyYW1Db3VudCsrOworCQl9CisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWFkZC11c2FnZS1leGMiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItdXgiKSA9PSAwKSB7CisJCQlYS01TUXVlcnlLZXlCaW5kaW5nICogcWtiID0gbHItPmdldFF1ZXJ5S2V5QmluZGluZygpOworCQkJaWYgKHFrYiA9PSBOVUxMKQorCQkJCXFrYiA9IGxyLT5hZGRRdWVyeUtleUJpbmRpbmcoKTsKKwkJCXFrYi0+c2V0RXhjaGFuZ2VLZXlVc2FnZSgpOworCQkJcGFyYW1Db3VudCsrOworCQl9CisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWFkZC11c2FnZS1lbmMiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItdWUiKSA9PSAwKSB7CisJCQlYS01TUXVlcnlLZXlCaW5kaW5nICogcWtiID0gbHItPmdldFF1ZXJ5S2V5QmluZGluZygpOworCQkJaWYgKHFrYiA9PSBOVUxMKQorCQkJCXFrYiA9IGxyLT5hZGRRdWVyeUtleUJpbmRpbmcoKTsKKwkJCXFrYi0+c2V0RW5jcnlwdGlvbktleVVzYWdlKCk7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLXJlc3BvbnNlbGltaXQiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItbCIpID09IDApIHsKKwkJCWlmIChwYXJhbUNvdW50ID49IGFyZ2MrMSkgeworCQkJCXByaW50TG9jYXRlUmVxdWVzdFVzYWdlKCk7CisJCQkJZGVsZXRlIGxyOworCQkJCXJldHVybiBOVUxMOworCQkJfQorCQkJcGFyYW1Db3VudCsrOworCQkJbHItPnNldFJlc3BvbnNlTGltaXQoYXRvaShhcmd2W3BhcmFtQ291bnRdKSk7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLXVzZWtleXdpdGgiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItdSIpID09IDApIHsKKwkJCWlmICgrK3BhcmFtQ291bnQgPj0gYXJnYyArIDEpIHsKKwkJCQlwcmludExvY2F0ZVJlcXVlc3RVc2FnZSgpOworCQkJCWRlbGV0ZSBscjsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKwkJCVhLTVNRdWVyeUtleUJpbmRpbmcgKnFrYiA9IGxyLT5nZXRRdWVyeUtleUJpbmRpbmcoKTsKKwkJCWlmIChxa2IgPT0gTlVMTCkKKwkJCQlxa2IgPSBsci0+YWRkUXVlcnlLZXlCaW5kaW5nKCk7CisKKwkJCXFrYi0+YXBwZW5kVXNlS2V5V2l0aEl0ZW0oTUFLRV9VTklDT0RFX1NUUklORyhhcmd2W3BhcmFtQ291bnRdKSwgTUFLRV9VTklDT0RFX1NUUklORyhhcmd2W3BhcmFtQ291bnQgKyAxXSkpOworCQkJcGFyYW1Db3VudCArPSAyOworCQl9CisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWFkZC1yZXNwb25kd2l0aCIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1yIikgPT0gMCkgeworCQkJaWYgKCsrcGFyYW1Db3VudCA+PSBhcmdjKSB7CisJCQkJcHJpbnRMb2NhdGVSZXF1ZXN0VXNhZ2UoKTsKKwkJCQlkZWxldGUgbHI7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisJCQlsci0+YXBwZW5kUmVzcG9uZFdpdGhJdGVtKE1BS0VfVU5JQ09ERV9TVFJJTkcoYXJndltwYXJhbUNvdW50XSkpOworCQkJcGFyYW1Db3VudCsrOworCQl9CisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWFkZC1yZXNwb25zZW1lY2hhbmlzbSIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1tIikgPT0gMCkgeworCQkJaWYgKCsrcGFyYW1Db3VudCA+PSBhcmdjKSB7CisJCQkJcHJpbnRMb2NhdGVSZXF1ZXN0VXNhZ2UoKTsKKwkJCQlkZWxldGUgbHI7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisJCQlsci0+YXBwZW5kUmVzcG9uc2VNZWNoYW5pc21JdGVtKE1BS0VfVU5JQ09ERV9TVFJJTkcoYXJndltwYXJhbUNvdW50XSkpOworCQkJcGFyYW1Db3VudCsrOworCQl9CisjaWYgZGVmaW5lZCAoSEFWRV9PUEVOU1NMKQorCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1zaWduLWRzYSIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1zZCIpID09IDAgfHwKKwkJCQlfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1zaWduLXJzYSIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1zciIpID09IDApIHsKKwkJCWlmIChwYXJhbUNvdW50ID49IGFyZ2MgKyAyKSB7CisJCQkJcHJpbnRMb2NhdGVSZXF1ZXN0VXNhZ2UoKTsKKwkJCQlkZWxldGUgbHI7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisKKwkJCS8vIERTQSBvciBSU0EgT3BlblNTTCBLZXkKKwkJCS8vIEZvciBub3cganVzdCByZWFkIGEgcGFydGljdWxhciBmaWxlCisKKwkJCUJJTyAqIGJpb0tleTsKKwkJCWlmICgoYmlvS2V5ID0gQklPX25ldyhCSU9fc19maWxlKCkpKSA9PSBOVUxMKSB7CisKKwkJCQljZXJyIDw8ICJFcnJvciBvcGVuaW5nIHByaXZhdGUga2V5IGZpbGVcblxuIjsKKwkJCQlyZXR1cm4gTlVMTDsKKworCQkJfQorCisJCQlpZiAoQklPX3JlYWRfZmlsZW5hbWUoYmlvS2V5LCBhcmd2W3BhcmFtQ291bnQrMV0pIDw9IDApIHsKKworCQkJCWNlcnIgPDwgIkVycm9yIG9wZW5pbmcgcHJpdmF0ZSBrZXkgZmlsZSA6ICIgPDwgYXJndltwYXJhbUNvdW50KzFdIDw8IGVuZGw7CisJCQkJcmV0dXJuIE5VTEw7CisKKwkJCX0KKworCQkJRVZQX1BLRVkgKiBwa2V5OworCQkJcGtleSA9IFBFTV9yZWFkX2Jpb19Qcml2YXRlS2V5KGJpb0tleSxOVUxMLE5VTEwsYXJndltwYXJhbUNvdW50ICsgMl0pOworCisJCQlpZiAocGtleSA9PSBOVUxMKSB7CisKKwkJCQlCSU8gKiBiaW9fZXJyOworCQorCQkJCWlmICgoYmlvX2Vycj1CSU9fbmV3KEJJT19zX2ZpbGUoKSkpICE9IE5VTEwpCisJCQkJCUJJT19zZXRfZnAoYmlvX2VycixzdGRlcnIsQklPX05PQ0xPU0V8QklPX0ZQX1RFWFQpOworCQkJCWNlcnIgPDwgIkVycm9yIGxvYWRpbmcgcHJpdmF0ZSBrZXlcblxuIjsKKwkJCQlFUlJfcHJpbnRfZXJyb3JzKGJpb19lcnIpOworCQkJCXJldHVybiBOVUxMOworCisJCQl9CisJCQlYU0VDQ3J5cHRvS2V5ICprZXk7CisJCQlEU0lHU2lnbmF0dXJlICogc2lnOworCQkJaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXNpZ24tZHNhIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXNkIikgPT0gMCkgeworCisJCQkJLy8gQ2hlY2sgdHlwZSBpcyBjb3JyZWN0CisKKwkJCQlpZiAocGtleS0+dHlwZSAhPSBFVlBfUEtFWV9EU0EpIHsKKwkJCQkJY2VyciA8PCAiRFNBIEtleSByZXF1ZXN0ZWQsIGJ1dCBPcGVuU1NMIGxvYWRlZCBzb21ldGhpbmcgZWxzZVxuIjsKKwkJCQkJcmV0dXJuIE5VTEw7CisJCQkJfQorCisJCQkJc2lnID0gbHItPmFkZFNpZ25hdHVyZShDQU5PTl9DMTROX05PQywgU0lHTkFUVVJFX0RTQSwgSEFTSF9TSEExKTsKKwkJCQkvLyBDcmVhdGUgdGhlIFhTRUMgT3BlblNTTCBpbnRlcmZhY2UKKwkJCQlrZXkgPSBuZXcgT3BlblNTTENyeXB0b0tleURTQShwa2V5KTsKKworCQkJCVhNTENoICogUCA9IEJOMmI2NChwa2V5LT5wa2V5LmRzYS0+cCk7CisJCQkJWE1MQ2ggKiBRID0gQk4yYjY0KHBrZXktPnBrZXkuZHNhLT5xKTsKKwkJCQlYTUxDaCAqIEcgPSBCTjJiNjQocGtleS0+cGtleS5kc2EtPmcpOworCQkJCVhNTENoICogWSA9IEJOMmI2NChwa2V5LT5wa2V5LmRzYS0+cHViX2tleSk7CisKKwkJCQlzaWctPmFwcGVuZERTQUtleVZhbHVlKFAsUSxHLFkpOworCisJCQkJWFNFQ19SRUxFQVNFX1hNTENIKFApOworCQkJCVhTRUNfUkVMRUFTRV9YTUxDSChRKTsKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0goRyk7CisJCQkJWFNFQ19SRUxFQVNFX1hNTENIKFkpOworCQkJfQorCQkJZWxzZSB7CisJCQkJaWYgKHBrZXktPnR5cGUgIT0gRVZQX1BLRVlfUlNBKSB7CisJCQkJCWNlcnIgPDwgIlJTQSBLZXkgcmVxdWVzdGVkLCBidXQgT3BlblNTTCBsb2FkZWQgc29tZXRoaW5nIGVsc2VcbiI7CisJCQkJCWV4aXQgKDEpOworCQkJCX0KKwkJCQlzaWcgPSBsci0+YWRkU2lnbmF0dXJlKENBTk9OX0MxNE5fTk9DLCBTSUdOQVRVUkVfUlNBLCBIQVNIX1NIQTEpOworCQkJCWtleSA9IG5ldyBPcGVuU1NMQ3J5cHRvS2V5UlNBKHBrZXkpOworCisJCQkJWE1MQ2ggKiBtb2QgPSBCTjJiNjQocGtleS0+cGtleS5yc2EtPm4pOworCQkJCVhNTENoICogZXhwID0gQk4yYjY0KHBrZXktPnBrZXkucnNhLT5lKTsKKwkJCQlzaWctPmFwcGVuZFJTQUtleVZhbHVlKG1vZCwgZXhwKTsKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0gobW9kKTsKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0goZXhwKTsKKworCQkJfQorCisJCQlzaWctPnNldFNpZ25pbmdLZXkoa2V5KTsKKwkJCXNpZy0+c2lnbigpOworCisJCQlFVlBfUEtFWV9mcmVlKHBrZXkpOworCQkJQklPX2ZyZWUoYmlvS2V5KTsKKworCQkJcGFyYW1Db3VudCArPSAzOworCisJCQkKKwkJfSAvKiBhcmd2WzFdID0gImRzYS9yc2EiICovCisKKyNlbmRpZgorCQllbHNlIHsKKwkJCXByaW50TG9jYXRlUmVxdWVzdFVzYWdlKCk7CisJCQlkZWxldGUgbHI7CisJCQkoKmRvYyktPnJlbGVhc2UoKTsKKwkJCXJldHVybiBOVUxMOworCQl9CisJfQorCisJcmV0dXJuIGxyOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENyZWF0ZSBhIFZhbGlkYXRlUmVxdWVzdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBwcmludFZhbGlkYXRlUmVxdWVzdFVzYWdlKHZvaWQpIHsKKworCWNlcnIgPDwgIlxuVXNhZ2UgVmFsaWRhdGVSZXF1ZXN0IFstLWhlbHB8LWhdIDxzZXJ2aWNlIFVSST4gW29wdGlvbnNdXG4iOworCWNlcnIgPDwgIiAgIC0taGVscC8taCAgICAgICAgICAgICAgICA6IHByaW50IHRoaXMgc2NyZWVuIGFuZCBleGl0XG5cbiI7CisJY2VyciA8PCAiICAgLS1hZGQtY2VydC8tYSA8ZmlsZW5hbWU+IDogYWRkIGNlcnQgaW4gZmlsZW5hbWUgYXMgYSBLZXlJbmZvXG4iOworCWNlcnIgPDwgIiAgIC0tYWRkLW5hbWUvLW4gPG5hbWU+ICAgICA6IEFkZCBuYW1lIGFzIGEgS2V5SW5mb05hbWVcbiI7CisJY2VyciA8PCAiICAgLS1hZGQtb3BhcXVlLy1vIDxkYXRhPiAgIDogQWRkIGFuIG9wYXF1ZSBkYXRhIHN0cmluZ1xuIjsKKwljZXJyIDw8ICIgICAtLWFkZC11c2FnZS1zaWcvLXVzICAgICAgOiBBZGQgU2lnbmF0dXJlIEtleSBVc2FnZVxuIjsKKwljZXJyIDw8ICIgICAtLWFkZC11c2FnZS1leGMvLXV4ICAgICAgOiBBZGQgRXhjYW5nZSBLZXkgVXNhZ2VcbiI7CisJY2VyciA8PCAiICAgLS1hZGQtdXNhZ2UtZW5jLy11ZSAgICAgIDogQWRkIEVuY3J5cHRpb24gS2V5IFVzYWdlXG4iOworCWNlcnIgPDwgIiAgIC0tYWRkLXJlc3BvbnNlbGltaXQvLWwgPGxpbWl0PlxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBTZXQgPGxpbWl0PiBmb3IgUmVzcG9uc2VMaW1pdFxuIjsKKwljZXJyIDw8ICIgICAtLWFkZC11c2VrZXl3aXRoLy11IDxBcHBsaWNhdGlvbiBVUkk+IDxJZGVudGlmaWVyPlxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBBZGQgYSBVc2VLZXlXaXRoIGVsZW1lbnRcbiI7CisJY2VyciA8PCAiICAgLS1hZGQtcmVzcG9uZHdpdGgvLXIgPElkZW50aWZpZXI+XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEFkZCBhIFJlc3BvbmRXaXRoIGVsZW1lbnRcbiI7CisJY2VyciA8PCAiICAgLS1hZGQtcmVzcG9uc2VtZWNoYW5pc20vLW0gPElkZW50aWZpZXI+XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEFkZCBhIFJlc3BvbnNlTWVjaGFuaXNtIGVsZW1lbnRcbiI7CisJY2VyciA8PCAiICAgLS1zaWduLXJzYS8tc3IgPGZpbGVuYW1lPiA8cGFzc3BocmFzZT5cbiI7CisJY2VyciA8PCAiICAgICAgICAgICA6IFNpZ24gdXNpbmcgdGhlIFJTQSBrZXkgaW4gZmlsZSBwcm90ZWN0ZWQgYnkgcGFzc3BocmFzZVxuIjsKKwljZXJyIDw8ICIgICAtLXNpZ24tZHNhLy1zZCA8ZmlsZW5hbWU+IDxwYXNzcGhyYXNlPlxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgIDogU2lnbiB1c2luZyB0aGUgRFNBIGtleSBpbiBmaWxlIHByb3RlY3RlZCBieSBwYXNzcGhyYXNlXG4iOworCWNlcnIgPDwgIiAgIC0tc2lnbi1jZXJ0Ly1zYyA8ZmlsZW5hbWU+XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgOiBBZGQgdGhlIGluZGljYXRlZCBjZXJ0aWZpY2F0ZSB0byB0aGUgc2lnbmF0dXJlIEtleUluZm9cblxuIjsKKworfQorCitYS01TTWVzc2FnZUFic3RyYWN0VHlwZSAqIGNyZWF0ZVZhbGlkYXRlUmVxdWVzdChYU0VDUHJvdmlkZXIgJnByb3YsIERPTURvY3VtZW50ICoqZG9jLCBpbnQgYXJnYywgY2hhciAqKiBhcmd2LCBpbnQgJnBhcmFtQ291bnQsIFhLTVNDb21wb3VuZFJlcXVlc3QgKiBjciA9IE5VTEwpIHsKKworCWlmIChwYXJhbUNvdW50ID49IGFyZ2MgfHwgCisJCShfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1oZWxwIikgPT0gMCkgfHwKKwkJKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItaCIpID09IDApKSB7CisKKwkJcHJpbnRWYWxpZGF0ZVJlcXVlc3RVc2FnZSgpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwkvKiBGaXJzdCBjcmVhdGUgdGhlIGJhc2ljIHJlcXVlc3QgKi8KKwlYS01TTWVzc2FnZUZhY3RvcnkgKiBmYWN0b3J5ID0gCisJCXByb3YuZ2V0WEtNU01lc3NhZ2VGYWN0b3J5KCk7CisJWEtNU1ZhbGlkYXRlUmVxdWVzdCAqIHZyOworCisJaWYgKGNyID09IE5VTEwpCisJCXZyID0gZmFjdG9yeS0+Y3JlYXRlVmFsaWRhdGVSZXF1ZXN0KE1BS0VfVU5JQ09ERV9TVFJJTkcoYXJndltwYXJhbUNvdW50KytdKSwgZG9jKTsKKwllbHNlCisJCXZyID0gY3ItPmNyZWF0ZVZhbGlkYXRlUmVxdWVzdChNQUtFX1VOSUNPREVfU1RSSU5HKGFyZ3ZbcGFyYW1Db3VudCsrXSkpOworCisJd2hpbGUgKHBhcmFtQ291bnQgPCBhcmdjICYmIF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLSIpICE9IDApIHsKKworCQlpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLWNlcnQiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItYSIpID09IDApIHsKKwkJCWlmICgrK3BhcmFtQ291bnQgPj0gYXJnYykgeworCQkJCXByaW50VmFsaWRhdGVSZXF1ZXN0VXNhZ2UoKTsKKwkJCQlkZWxldGUgdnI7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisJCQlYU0VDQ3J5cHRvWDUwOSAqIHggPSBsb2FkWDUwOShhcmd2W3BhcmFtQ291bnRdKTsKKwkJCWlmICh4ID09IE5VTEwpIHsKKwkJCQlkZWxldGUgdnI7CisJCQkJKCpkb2MpLT5yZWxlYXNlKCk7CisJCQkJY2VyciA8PCAiRXJyb3Igb3BlbmluZyBDZXJ0aWZpY2F0ZSBmaWxlIDogIiA8PCAKKwkJCQkJYXJndltwYXJhbUNvdW50XSA8PCBlbmRsOworCQkJCXJldHVybiBOVUxMOworCQkJfQorCisJCQlKYW5pdG9yPFhTRUNDcnlwdG9YNTA5PiBqX3goeCk7CisKKwkJCVhLTVNRdWVyeUtleUJpbmRpbmcgKiBxa2IgPSB2ci0+Z2V0UXVlcnlLZXlCaW5kaW5nKCk7CisJCQlpZiAocWtiID09IE5VTEwpIHsKKwkJCQlxa2IgPSB2ci0+YWRkUXVlcnlLZXlCaW5kaW5nKCk7CisJCQl9CisJCQkvLyBTZWUgaWYgdGhlcmUgaXMgYWxyZWFkeSBhbiBYLjUwOSBlbGVtZW50CisJCQlEU0lHS2V5SW5mb1g1MDkgKiBraXg7CisJCQlpZiAoKGtpeCA9IGZpbmRYNTA5RGF0YShxa2ItPmdldEtleUluZm9MaXN0KCkpKSA9PSBOVUxMKQorCQkJCWtpeCA9IHFrYi0+YXBwZW5kWDUwOURhdGEoKTsKKwkJCXNhZmVCdWZmZXIgc2IgPSB4LT5nZXRERVJFbmNvZGluZ1NCKCk7CisJCQlraXgtPmFwcGVuZFg1MDlDZXJ0aWZpY2F0ZShzYi5zYlN0clRvWE1MQ2goKSk7CisJCQlwYXJhbUNvdW50Kys7CisKKwkJfQorCisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWFkZC1uYW1lIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLW4iKSA9PSAwKSB7CisJCQlpZiAoKytwYXJhbUNvdW50ID49IGFyZ2MpIHsKKwkJCQlwcmludFZhbGlkYXRlUmVxdWVzdFVzYWdlKCk7CisJCQkJZGVsZXRlIHZyOworCQkJCXJldHVybiBOVUxMOworCQkJfQorCQkJWEtNU1F1ZXJ5S2V5QmluZGluZyAqIHFrYiA9IHZyLT5hZGRRdWVyeUtleUJpbmRpbmcoKTsKKwkJCXFrYi0+YXBwZW5kS2V5TmFtZShNQUtFX1VOSUNPREVfU1RSSU5HKGFyZ3ZbcGFyYW1Db3VudF0pKTsKKwkJCXBhcmFtQ291bnQrKzsKKwkJfQorCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1hZGQtb3BhcXVlIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLW8iKSA9PSAwKSB7CisJCQlpZiAoKytwYXJhbUNvdW50ID49IGFyZ2MpIHsKKwkJCQlwcmludFZhbGlkYXRlUmVxdWVzdFVzYWdlKCk7CisJCQkJZGVsZXRlIHZyOworCQkJCXJldHVybiBOVUxMOworCQkJfQorCQkJdnItPmFwcGVuZE9wYXF1ZUNsaWVudERhdGFJdGVtKE1BS0VfVU5JQ09ERV9TVFJJTkcoYXJndltwYXJhbUNvdW50XSkpOworCQkJcGFyYW1Db3VudCsrOworCQl9CisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWFkZC1yZXNwb25kd2l0aCIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1yIikgPT0gMCkgeworCQkJaWYgKCsrcGFyYW1Db3VudCA+PSBhcmdjKSB7CisJCQkJcHJpbnRWYWxpZGF0ZVJlcXVlc3RVc2FnZSgpOworCQkJCWRlbGV0ZSB2cjsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKwkJCXZyLT5hcHBlbmRSZXNwb25kV2l0aEl0ZW0oTUFLRV9VTklDT0RFX1NUUklORyhhcmd2W3BhcmFtQ291bnRdKSk7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLXJlc3BvbnNlbWVjaGFuaXNtIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLW0iKSA9PSAwKSB7CisJCQlpZiAoKytwYXJhbUNvdW50ID49IGFyZ2MpIHsKKwkJCQlwcmludExvY2F0ZVJlcXVlc3RVc2FnZSgpOworCQkJCWRlbGV0ZSB2cjsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKwkJCXZyLT5hcHBlbmRSZXNwb25zZU1lY2hhbmlzbUl0ZW0oTUFLRV9VTklDT0RFX1NUUklORyhhcmd2W3BhcmFtQ291bnRdKSk7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLXJlc3BvbnNlbGltaXQiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItbCIpID09IDApIHsKKwkJCWlmIChwYXJhbUNvdW50ID49IGFyZ2MrMSkgeworCQkJCXByaW50VmFsaWRhdGVSZXF1ZXN0VXNhZ2UoKTsKKwkJCQlkZWxldGUgdnI7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisJCQlwYXJhbUNvdW50Kys7CisJCQl2ci0+c2V0UmVzcG9uc2VMaW1pdChhdG9pKGFyZ3ZbcGFyYW1Db3VudF0pKTsKKwkJCXBhcmFtQ291bnQrKzsKKwkJfQorCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1hZGQtdXNhZ2Utc2lnIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXVzIikgPT0gMCkgeworCQkJWEtNU1F1ZXJ5S2V5QmluZGluZyAqIHFrYiA9IHZyLT5nZXRRdWVyeUtleUJpbmRpbmcoKTsKKwkJCWlmIChxa2IgPT0gTlVMTCkKKwkJCQlxa2IgPSB2ci0+YWRkUXVlcnlLZXlCaW5kaW5nKCk7CisJCQlxa2ItPnNldFNpZ25hdHVyZUtleVVzYWdlKCk7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLXVzYWdlLWV4YyIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi11eCIpID09IDApIHsKKwkJCVhLTVNRdWVyeUtleUJpbmRpbmcgKiBxa2IgPSB2ci0+Z2V0UXVlcnlLZXlCaW5kaW5nKCk7CisJCQlpZiAocWtiID09IE5VTEwpCisJCQkJcWtiID0gdnItPmFkZFF1ZXJ5S2V5QmluZGluZygpOworCQkJcWtiLT5zZXRFeGNoYW5nZUtleVVzYWdlKCk7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLXVzYWdlLWVuYyIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi11ZSIpID09IDApIHsKKwkJCVhLTVNRdWVyeUtleUJpbmRpbmcgKiBxa2IgPSB2ci0+Z2V0UXVlcnlLZXlCaW5kaW5nKCk7CisJCQlpZiAocWtiID09IE5VTEwpCisJCQkJcWtiID0gdnItPmFkZFF1ZXJ5S2V5QmluZGluZygpOworCQkJcWtiLT5zZXRFbmNyeXB0aW9uS2V5VXNhZ2UoKTsKKwkJCXBhcmFtQ291bnQrKzsKKwkJfQorCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1hZGQtdXNla2V5d2l0aCIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi11IikgPT0gMCkgeworCQkJaWYgKCsrcGFyYW1Db3VudCA+PSBhcmdjICsgMSkgeworCQkJCXByaW50VmFsaWRhdGVSZXF1ZXN0VXNhZ2UoKTsKKwkJCQlkZWxldGUgdnI7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisJCQlYS01TUXVlcnlLZXlCaW5kaW5nICpxa2IgPSB2ci0+Z2V0UXVlcnlLZXlCaW5kaW5nKCk7CisJCQlpZiAocWtiID09IE5VTEwpCisJCQkJcWtiID0gdnItPmFkZFF1ZXJ5S2V5QmluZGluZygpOworCisJCQlxa2ItPmFwcGVuZFVzZUtleVdpdGhJdGVtKE1BS0VfVU5JQ09ERV9TVFJJTkcoYXJndltwYXJhbUNvdW50XSksIE1BS0VfVU5JQ09ERV9TVFJJTkcoYXJndltwYXJhbUNvdW50ICsgMV0pKTsKKwkJCXBhcmFtQ291bnQgKz0gMjsKKwkJfQorI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tc2lnbi1kc2EiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItc2QiKSA9PSAwIHx8CisJCQkJX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tc2lnbi1yc2EiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItc3IiKSA9PSAwKSB7CisJCQlpZiAocGFyYW1Db3VudCA+PSBhcmdjICsgMikgeworCQkJCXByaW50VmFsaWRhdGVSZXF1ZXN0VXNhZ2UoKTsKKwkJCQlkZWxldGUgdnI7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisKKwkJCS8vIERTQSBvciBSU0EgT3BlblNTTCBLZXkKKwkJCS8vIEZvciBub3cganVzdCByZWFkIGEgcGFydGljdWxhciBmaWxlCisKKwkJCUJJTyAqIGJpb0tleTsKKwkJCWlmICgoYmlvS2V5ID0gQklPX25ldyhCSU9fc19maWxlKCkpKSA9PSBOVUxMKSB7CisKKwkJCQljZXJyIDw8ICJFcnJvciBvcGVuaW5nIHByaXZhdGUga2V5IGZpbGVcblxuIjsKKwkJCQlyZXR1cm4gTlVMTDsKKworCQkJfQorCisJCQlpZiAoQklPX3JlYWRfZmlsZW5hbWUoYmlvS2V5LCBhcmd2W3BhcmFtQ291bnQrMV0pIDw9IDApIHsKKworCQkJCWNlcnIgPDwgIkVycm9yIG9wZW5pbmcgcHJpdmF0ZSBrZXkgZmlsZSA6ICIgPDwgYXJndltwYXJhbUNvdW50KzFdIDw8IGVuZGw7CisJCQkJcmV0dXJuIE5VTEw7CisKKwkJCX0KKworCQkJRVZQX1BLRVkgKiBwa2V5OworCQkJcGtleSA9IFBFTV9yZWFkX2Jpb19Qcml2YXRlS2V5KGJpb0tleSxOVUxMLE5VTEwsYXJndltwYXJhbUNvdW50ICsgMl0pOworCisJCQlpZiAocGtleSA9PSBOVUxMKSB7CisKKwkJCQlCSU8gKiBiaW9fZXJyOworCQorCQkJCWlmICgoYmlvX2Vycj1CSU9fbmV3KEJJT19zX2ZpbGUoKSkpICE9IE5VTEwpCisJCQkJCUJJT19zZXRfZnAoYmlvX2VycixzdGRlcnIsQklPX05PQ0xPU0V8QklPX0ZQX1RFWFQpOworCQkJCWNlcnIgPDwgIkVycm9yIGxvYWRpbmcgcHJpdmF0ZSBrZXlcblxuIjsKKwkJCQlFUlJfcHJpbnRfZXJyb3JzKGJpb19lcnIpOworCQkJCXJldHVybiBOVUxMOworCisJCQl9CisJCQlYU0VDQ3J5cHRvS2V5ICprZXk7CisJCQlEU0lHU2lnbmF0dXJlICogc2lnOworCQkJaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXNpZ24tZHNhIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXNkIikgPT0gMCkgeworCisJCQkJLy8gQ2hlY2sgdHlwZSBpcyBjb3JyZWN0CisKKwkJCQlpZiAocGtleS0+dHlwZSAhPSBFVlBfUEtFWV9EU0EpIHsKKwkJCQkJY2VyciA8PCAiRFNBIEtleSByZXF1ZXN0ZWQsIGJ1dCBPcGVuU1NMIGxvYWRlZCBzb21ldGhpbmcgZWxzZVxuIjsKKwkJCQkJcmV0dXJuIE5VTEw7CisJCQkJfQorCisJCQkJc2lnID0gdnItPmFkZFNpZ25hdHVyZShDQU5PTl9DMTROX05PQywgU0lHTkFUVVJFX0RTQSwgSEFTSF9TSEExKTsKKwkJCQkvLyBDcmVhdGUgdGhlIFhTRUMgT3BlblNTTCBpbnRlcmZhY2UKKwkJCQlrZXkgPSBuZXcgT3BlblNTTENyeXB0b0tleURTQShwa2V5KTsKKworCQkJCVhNTENoICogUCA9IEJOMmI2NChwa2V5LT5wa2V5LmRzYS0+cCk7CisJCQkJWE1MQ2ggKiBRID0gQk4yYjY0KHBrZXktPnBrZXkuZHNhLT5xKTsKKwkJCQlYTUxDaCAqIEcgPSBCTjJiNjQocGtleS0+cGtleS5kc2EtPmcpOworCQkJCVhNTENoICogWSA9IEJOMmI2NChwa2V5LT5wa2V5LmRzYS0+cHViX2tleSk7CisKKwkJCQlzaWctPmFwcGVuZERTQUtleVZhbHVlKFAsUSxHLFkpOworCisJCQkJWFNFQ19SRUxFQVNFX1hNTENIKFApOworCQkJCVhTRUNfUkVMRUFTRV9YTUxDSChRKTsKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0goRyk7CisJCQkJWFNFQ19SRUxFQVNFX1hNTENIKFkpOworCQkJfQorCQkJZWxzZSB7CisJCQkJaWYgKHBrZXktPnR5cGUgIT0gRVZQX1BLRVlfUlNBKSB7CisJCQkJCWNlcnIgPDwgIlJTQSBLZXkgcmVxdWVzdGVkLCBidXQgT3BlblNTTCBsb2FkZWQgc29tZXRoaW5nIGVsc2VcbiI7CisJCQkJCWV4aXQgKDEpOworCQkJCX0KKwkJCQlzaWcgPSB2ci0+YWRkU2lnbmF0dXJlKENBTk9OX0MxNE5fTk9DLCBTSUdOQVRVUkVfUlNBLCBIQVNIX1NIQTEpOworCQkJCWtleSA9IG5ldyBPcGVuU1NMQ3J5cHRvS2V5UlNBKHBrZXkpOworCisJCQkJWE1MQ2ggKiBtb2QgPSBCTjJiNjQocGtleS0+cGtleS5yc2EtPm4pOworCQkJCVhNTENoICogZXhwID0gQk4yYjY0KHBrZXktPnBrZXkucnNhLT5lKTsKKwkJCQlzaWctPmFwcGVuZFJTQUtleVZhbHVlKG1vZCwgZXhwKTsKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0gobW9kKTsKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0goZXhwKTsKKworCQkJfQorCisJCQlzaWctPnNldFNpZ25pbmdLZXkoa2V5KTsKKwkJCXNpZy0+c2lnbigpOworCisJCQlFVlBfUEtFWV9mcmVlKHBrZXkpOworCQkJQklPX2ZyZWUoYmlvS2V5KTsKKworCQkJcGFyYW1Db3VudCArPSAzOworCisJCQkKKwkJfSAvKiBhcmd2WzFdID0gImRzYS9yc2EiICovCisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXNpZ24tY2VydCIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1zYyIpID09IDApIHsKKwkJCWlmICgrK3BhcmFtQ291bnQgPj0gYXJnYykgeworCQkJCXByaW50VmFsaWRhdGVSZXF1ZXN0VXNhZ2UoKTsKKwkJCQlkZWxldGUgdnI7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisJCQlYU0VDQ3J5cHRvWDUwOSAqIHggPSBsb2FkWDUwOShhcmd2W3BhcmFtQ291bnRdKTsKKwkJCWlmICh4ID09IE5VTEwpIHsKKwkJCQlkZWxldGUgdnI7CisJCQkJKCpkb2MpLT5yZWxlYXNlKCk7CisJCQkJY2VyciA8PCAiRXJyb3Igb3BlbmluZyBDZXJ0aWZpY2F0ZSBmaWxlIDogIiA8PCAKKwkJCQkJYXJndltwYXJhbUNvdW50XSA8PCBlbmRsOworCQkJCXJldHVybiBOVUxMOworCQkJfQorCisJCQlKYW5pdG9yPFhTRUNDcnlwdG9YNTA5PiBqX3goeCk7CisKKwkJCURTSUdTaWduYXR1cmUgKiBzaWcgPSB2ci0+Z2V0U2lnbmF0dXJlKCk7CisJCQlpZiAoc2lnID09IE5VTEwpIHsKKwkJCQljZXJyIDw8ICJDYW4gb25seSBhZGQgQ2VydGlmaWNhdGVzIHRvIHNpZ25hdHVyZSBhZnRlciBzaWduaW5nXG4iOworCQkJCXJldHVybiBOVUxMOworCQkJfQorCisJCQkvLyBTZWUgaWYgdGhlcmUgaXMgYWxyZWFkeSBhbiBYLjUwOSBlbGVtZW50CisJCQlEU0lHS2V5SW5mb1g1MDkgKiBraXg7CisJCQlpZiAoKGtpeCA9IGZpbmRYNTA5RGF0YShzaWctPmdldEtleUluZm9MaXN0KCkpKSA9PSBOVUxMKQorCQkJCWtpeCA9IHNpZy0+YXBwZW5kWDUwOURhdGEoKTsKKwkJCXNhZmVCdWZmZXIgc2IgPSB4LT5nZXRERVJFbmNvZGluZ1NCKCk7CisJCQlraXgtPmFwcGVuZFg1MDlDZXJ0aWZpY2F0ZShzYi5zYlN0clRvWE1MQ2goKSk7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKworI2VuZGlmCisJCWVsc2UgeworCQkJcHJpbnRWYWxpZGF0ZVJlcXVlc3RVc2FnZSgpOworCQkJZGVsZXRlIHZyOworCQkJKCpkb2MpLT5yZWxlYXNlKCk7CisJCQlyZXR1cm4gTlVMTDsKKwkJfQorCX0KKworCXJldHVybiB2cjsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDcmVhdGUgYSBSZWdpc3RlclJlcXVlc3QKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgcHJpbnRSZWdpc3RlclJlcXVlc3RVc2FnZSh2b2lkKSB7CisKKwljZXJyIDw8ICJcblVzYWdlIFJlZ2lzdGVyUmVxdWVzdCBbLS1oZWxwfC1oXSA8c2VydmljZSBVUkk+IFtvcHRpb25zXVxuIjsKKwljZXJyIDw8ICIgICAtLWhlbHAvLWggICAgICAgICAgICAgICAgOiBwcmludCB0aGlzIHNjcmVlbiBhbmQgZXhpdFxuXG4iOworCWNlcnIgPDwgIiAgIC0tYWRkLW5hbWUvLW4gPG5hbWU+ICAgICA6IEFkZCBuYW1lIGFzIGEgS2V5SW5mb05hbWVcbiI7CisJY2VyciA8PCAiICAgLS1hZGQtb3BhcXVlLy1vIDxkYXRhPiAgIDogQWRkIGFuIG9wYXF1ZSBkYXRhIHN0cmluZ1xuIjsKKwljZXJyIDw8ICIgICAtLWFkZC11c2FnZS1zaWcvLXVzICAgICAgOiBBZGQgU2lnbmF0dXJlIEtleSBVc2FnZVxuIjsKKwljZXJyIDw8ICIgICAtLWFkZC11c2FnZS1leGMvLXV4ICAgICAgOiBBZGQgRXhjaGFuZ2UgS2V5IFVzYWdlXG4iOworCWNlcnIgPDwgIiAgIC0tYWRkLXVzYWdlLWVuYy8tdWUgICAgICA6IEFkZCBFbmNyeXB0aW9uIEtleSBVc2FnZVxuIjsKKwljZXJyIDw8ICIgICAtLWFkZC11c2VrZXl3aXRoLy11IDxBcHBsaWNhdGlvbiBVUkk+IDxJZGVudGlmaWVyPlxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBBZGQgYSBVc2VLZXlXaXRoIGVsZW1lbnRcbiI7CisJY2VyciA8PCAiICAgLS1hZGQtcmVzcG9uZHdpdGgvLXIgPElkZW50aWZpZXI+XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEFkZCBhIFJlc3BvbmRXaXRoIGVsZW1lbnRcbiI7CisJY2VyciA8PCAiICAgLS1hZGQtcmVzcG9uc2VtZWNoYW5pc20vLW0gPElkZW50aWZpZXI+XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEFkZCBhIFJlc3BvbnNlTWVjaGFuaXNtIGVsZW1lbnRcbiI7CisJY2VyciA8PCAiICAgLS1zaWduLWRzYS8tc2QgPGZpbGVuYW1lPiA8cGFzc3BocmFzZT5cbiI7CisJY2VyciA8PCAiICAgICAgICAgICA6IFNpZ24gdXNpbmcgdGhlIERTQSBrZXkgaW4gZmlsZSBwcm90ZWN0ZWQgYnkgcGFzc3BocmFzZVxuIjsKKwljZXJyIDw8ICIgICAtLWFkZC12YWx1ZS1kc2EvLXZkIDxmaWxlbmFtZT4gPHBhc3NwaHJhc2U+IChhbmQgZG8gcHJvb2Ytb2YtcG9zc2Vzc2lvbiBzaWcpXG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgOiBBZGQgdGhlIERTQSBrZXkgYXMgYSBrZXl2YWx1ZVxuIjsKKwljZXJyIDw8ICIgICAtLWFkZC12YWx1ZS1yc2EvLXZyIDxmaWxlbmFtZT4gPHBhc3NwaHJhc2U+IChhbmQgZG8gcHJvb2Ytb2YtcG9zc2Vzc2lvbiBzaWcpXG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgOiBBZGQgdGhlIFJTQSBrZXkgYXMgYSBrZXl2YWx1ZVxuIjsKKwljZXJyIDw8ICIgICAtLXJldm9jYXRpb24vLXYgPHBocmFzZT4gOiBTZXQgPHBocmFzZT4gYXMgcmV2b2NhdGlvbiBjb2RlXG4iOworCWNlcnIgPDwgIiAgIC0ta2VrLy1rIDxwaHJhc2U+ICAgICAgICA6IEtleSBwaHJhc2UgdG8gdXNlIGZvciBQcml2YXRlS2V5IGRlY3J5cHRpb25cbiI7CisjaWYgZGVmaW5lZCAoSEFWRV9PUEVOU1NMKQorCWNlcnIgPDwgIiAgIC0tb3V0cHV0LXByaXZhdGUta2V5Ly1wIDxmaWxlPiA8cGFzcyBwaHJhc2U+XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFdyaXRlIFBFTSBlbmNvZGVkIHByaXZhdGUga2V5IHRvIGZpbGVcbiI7CisjZW5kaWYKKwljZXJyIDw8ICIgICAtLWF1dGhlbnRpY2F0ZS8tYSA8cGhyYXNlPlxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgIDogVXNlIDxwaHJhc2U+IGFzIHRoZSBhdXRoZW50aWNhdGlvbiBrZXkgZm9yIHRoZSByZXF1ZXN0XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICBOT1RFIC0gVGhpcyBtdXN0IGNvbWUgKmFmdGVyKiBhZGRpbmcgb2YgS2V5SW5mbyBlbGVtZW50c1xuXG4iOworCit9CisKK1hLTVNNZXNzYWdlQWJzdHJhY3RUeXBlICogY3JlYXRlUmVnaXN0ZXJSZXF1ZXN0KFhTRUNQcm92aWRlciAmcHJvdiwgRE9NRG9jdW1lbnQgKipkb2MsIGludCBhcmdjLCBjaGFyICoqIGFyZ3YsIGludCAmcGFyYW1Db3VudCwgWEtNU0NvbXBvdW5kUmVxdWVzdCAqIGNyID0gTlVMTCkgeworCisJWFNFQ0NyeXB0b0tleSAqcHJvb2ZPZlBvc3Nlc3Npb25LZXkgPSBOVUxMOworCXNpZ25hdHVyZU1ldGhvZCBwcm9vZk9mUG9zc2Vzc2lvblNtID0gU0lHTkFUVVJFX0RTQTsKKworCWlmIChwYXJhbUNvdW50ID49IGFyZ2MgfHwgCisJCShfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1oZWxwIikgPT0gMCkgfHwKKwkJKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItaCIpID09IDApKSB7CisKKwkJcHJpbnRSZWdpc3RlclJlcXVlc3RVc2FnZSgpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwkvKiBGaXJzdCBjcmVhdGUgdGhlIGJhc2ljIHJlcXVlc3QgKi8KKwlYS01TTWVzc2FnZUZhY3RvcnkgKiBmYWN0b3J5ID0gCisJCXByb3YuZ2V0WEtNU01lc3NhZ2VGYWN0b3J5KCk7CisJWEtNU1JlZ2lzdGVyUmVxdWVzdCAqIHJyOworCisJaWYgKGNyID09IE5VTEwpCisJCXJyID0gZmFjdG9yeS0+Y3JlYXRlUmVnaXN0ZXJSZXF1ZXN0KE1BS0VfVU5JQ09ERV9TVFJJTkcoYXJndltwYXJhbUNvdW50KytdKSwgZG9jKTsKKwllbHNlCisJCXJyID0gY3ItPmNyZWF0ZVJlZ2lzdGVyUmVxdWVzdChNQUtFX1VOSUNPREVfU1RSSU5HKGFyZ3ZbcGFyYW1Db3VudCsrXSkpOworCisJd2hpbGUgKHBhcmFtQ291bnQgPCBhcmdjICYmIF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLSIpICE9IDApIHsKKworCQlpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLW5hbWUiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItbiIpID09IDApIHsKKwkJCWlmICgrK3BhcmFtQ291bnQgPj0gYXJnYykgeworCQkJCXByaW50UmVnaXN0ZXJSZXF1ZXN0VXNhZ2UoKTsKKwkJCQlkZWxldGUgcnI7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisKKwkJCVhLTVNQcm90b3R5cGVLZXlCaW5kaW5nICogcGtiID0gcnItPmdldFByb3RvdHlwZUtleUJpbmRpbmcoKTsKKwkJCWlmIChwa2IgPT0gTlVMTCkKKwkJCQlwa2IgPSByci0+YWRkUHJvdG90eXBlS2V5QmluZGluZygpOworCQkJcGtiLT5hcHBlbmRLZXlOYW1lKE1BS0VfVU5JQ09ERV9TVFJJTkcoYXJndltwYXJhbUNvdW50XSkpOworCQkJcGFyYW1Db3VudCsrOworCQl9CisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWFkZC1vcGFxdWUiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItbyIpID09IDApIHsKKwkJCWlmICgrK3BhcmFtQ291bnQgPj0gYXJnYykgeworCQkJCXByaW50UmVnaXN0ZXJSZXF1ZXN0VXNhZ2UoKTsKKwkJCQlkZWxldGUgcnI7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisJCQlyci0+YXBwZW5kT3BhcXVlQ2xpZW50RGF0YUl0ZW0oTUFLRV9VTklDT0RFX1NUUklORyhhcmd2W3BhcmFtQ291bnRdKSk7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0ta2VrIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLWsiKSA9PSAwKSB7CisJCQlpZiAoKytwYXJhbUNvdW50ID49IGFyZ2MpIHsKKwkJCQlwcmludFJlZ2lzdGVyUmVxdWVzdFVzYWdlKCk7CisJCQkJZGVsZXRlIHJyOworCQkJCXJldHVybiBOVUxMOworCQkJfQorCQkJZ19hdXRoUGFzc1BocmFzZSA9IGFyZ3ZbcGFyYW1Db3VudCsrXTsKKwkJfQorCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1hZGQtcmVzcG9uZHdpdGgiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItciIpID09IDApIHsKKwkJCWlmICgrK3BhcmFtQ291bnQgPj0gYXJnYykgeworCQkJCXByaW50UmVnaXN0ZXJSZXF1ZXN0VXNhZ2UoKTsKKwkJCQlkZWxldGUgcnI7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisJCQlyci0+YXBwZW5kUmVzcG9uZFdpdGhJdGVtKE1BS0VfVU5JQ09ERV9TVFJJTkcoYXJndltwYXJhbUNvdW50XSkpOworCQkJcGFyYW1Db3VudCsrOworCQl9CisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWFkZC1yZXNwb25zZW1lY2hhbmlzbSIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1tIikgPT0gMCkgeworCQkJaWYgKCsrcGFyYW1Db3VudCA+PSBhcmdjKSB7CisJCQkJcHJpbnRSZWdpc3RlclJlcXVlc3RVc2FnZSgpOworCQkJCWRlbGV0ZSBycjsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKwkJCXJyLT5hcHBlbmRSZXNwb25zZU1lY2hhbmlzbUl0ZW0oTUFLRV9VTklDT0RFX1NUUklORyhhcmd2W3BhcmFtQ291bnRdKSk7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLXVzYWdlLXNpZyIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi11cyIpID09IDApIHsKKwkJCVhLTVNQcm90b3R5cGVLZXlCaW5kaW5nICogcGtiID0gcnItPmdldFByb3RvdHlwZUtleUJpbmRpbmcoKTsKKwkJCWlmIChwa2IgPT0gTlVMTCkKKwkJCQlwa2IgPSByci0+YWRkUHJvdG90eXBlS2V5QmluZGluZygpOworCQkJcGtiLT5zZXRTaWduYXR1cmVLZXlVc2FnZSgpOworCQkJcGFyYW1Db3VudCsrOworCQl9CisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWFkZC11c2FnZS1leGMiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItdXgiKSA9PSAwKSB7CisJCQlYS01TUHJvdG90eXBlS2V5QmluZGluZyAqIHBrYiA9IHJyLT5nZXRQcm90b3R5cGVLZXlCaW5kaW5nKCk7CisJCQlpZiAocGtiID09IE5VTEwpCisJCQkJcGtiID0gcnItPmFkZFByb3RvdHlwZUtleUJpbmRpbmcoKTsKKwkJCXBrYi0+c2V0RXhjaGFuZ2VLZXlVc2FnZSgpOworCQkJcGFyYW1Db3VudCsrOworCQl9CisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWFkZC11c2FnZS1lbmMiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItdWUiKSA9PSAwKSB7CisJCQlYS01TUHJvdG90eXBlS2V5QmluZGluZyAqIHBrYiA9IHJyLT5nZXRQcm90b3R5cGVLZXlCaW5kaW5nKCk7CisJCQlpZiAocGtiID09IE5VTEwpCisJCQkJcGtiID0gcnItPmFkZFByb3RvdHlwZUtleUJpbmRpbmcoKTsKKwkJCXBrYi0+c2V0RW5jcnlwdGlvbktleVVzYWdlKCk7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLXVzZWtleXdpdGgiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItdSIpID09IDApIHsKKwkJCWlmICgrK3BhcmFtQ291bnQgPj0gYXJnYyArIDEpIHsKKwkJCQlwcmludFJlZ2lzdGVyUmVxdWVzdFVzYWdlKCk7CisJCQkJZGVsZXRlIHJyOworCQkJCXJldHVybiBOVUxMOworCQkJfQorCQkJWEtNU1Byb3RvdHlwZUtleUJpbmRpbmcgKnBrYiA9IHJyLT5nZXRQcm90b3R5cGVLZXlCaW5kaW5nKCk7CisJCQlpZiAocGtiID09IE5VTEwpCisJCQkJcGtiID0gcnItPmFkZFByb3RvdHlwZUtleUJpbmRpbmcoKTsKKworCQkJcGtiLT5hcHBlbmRVc2VLZXlXaXRoSXRlbShNQUtFX1VOSUNPREVfU1RSSU5HKGFyZ3ZbcGFyYW1Db3VudF0pLCBNQUtFX1VOSUNPREVfU1RSSU5HKGFyZ3ZbcGFyYW1Db3VudCArIDFdKSk7CisJCQlwYXJhbUNvdW50ICs9IDI7CisJCX0KKyNpZiBkZWZpbmVkIChIQVZFX09QRU5TU0wpCisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLW91dHB1dC1wcml2YXRlLWtleSIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1wIikgPT0gMCkgeworCQkJaWYgKHBhcmFtQ291bnQgPj0gYXJnYyArIDIpIHsKKwkJCQlwcmludFJlZ2lzdGVyUmVxdWVzdFVzYWdlKCk7CisJCQkJZGVsZXRlIHJyOworCQkJCXJldHVybiBOVUxMOworCQkJfQorCQkJKytwYXJhbUNvdW50OworCQkJZ19wcml2YXRlS2V5RmlsZSA9IGFyZ3ZbcGFyYW1Db3VudCsrXTsKKwkJCWdfcHJpdmF0ZUtleVBhc3NQaHJhc2UgPSBhcmd2W3BhcmFtQ291bnQrK107CisJCX0KKyNlbmRpZgorCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1yZXZvY2F0aW9uIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXYiKSA9PSAwKSB7CisJCQlpZiAoKytwYXJhbUNvdW50ID49IGFyZ2MpIHsKKwkJCQlwcmludFJlZ2lzdGVyUmVxdWVzdFVzYWdlKCk7CisJCQkJZGVsZXRlIHJyOworCQkJCXJldHVybiBOVUxMOworCQkJfQorCQkJWEtNU1Byb3RvdHlwZUtleUJpbmRpbmcgKnBrYiA9IHJyLT5nZXRQcm90b3R5cGVLZXlCaW5kaW5nKCk7CisJCQlpZiAocGtiID09IE5VTEwpCisJCQkJcGtiID0gcnItPmFkZFByb3RvdHlwZUtleUJpbmRpbmcoKTsKKworCQkJLy8gQ3JlYXRlIHRoZSBSZXZvY2F0aW9uQ29kZUlkZW50aWZpZXIKKwkJCXVuc2lnbmVkIGNoYXIgcmNpQnVmW1hTRUNfTUFYX0hBU0hfU0laRV07CisJCQlpbnQgbGVuID0gQ2FsY3VsYXRlWEtNU1Jldm9jYXRpb25Db2RlSWRlbnRpZmllckVuY29kaW5nMigodW5zaWduZWQgY2hhciAqKSBhcmd2W3BhcmFtQ291bnRdLCAoaW50KSBzdHJsZW4oYXJndltwYXJhbUNvdW50XSksIHJjaUJ1ZiwgWFNFQ19NQVhfSEFTSF9TSVpFKTsKKworCQkJaWYgKGxlbiA8PSAwKSB7CisJCQkJY2VyciA8PCAiRXJyb3IgY3JlYXRpbmcgcmV2b2NhdGlvbiBjb2RlIVxuIjsKKwkJCQlkZWxldGUgcnI7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisKKwkJCS8vIENvbnZlcnQgdG8gYmFzZTY0CisJCQlYTUxDaCAqIHN0ciA9IEVuY29kZVRvQmFzZTY0WE1MQ2gocmNpQnVmLCBsZW4pOworCQkJcGtiLT5zZXRSZXZvY2F0aW9uQ29kZUlkZW50aWZpZXIoc3RyKTsKKwkJCVhTRUNfUkVMRUFTRV9YTUxDSChzdHIpOworCisJCQlwYXJhbUNvdW50Kys7OworCQl9CQkKKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYXV0aGVudGljYXRlIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLWEiKSA9PSAwKSB7CisJCQlpZiAoKytwYXJhbUNvdW50ID49IGFyZ2MgKyAxKSB7CisJCQkJcHJpbnRSZWdpc3RlclJlcXVlc3RVc2FnZSgpOworCQkJCWRlbGV0ZSBycjsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKworCQkJLy8gQ3JlYXRlIHRoZSBzaWduYXR1cmUKKworCQkJdW5zaWduZWQgY2hhciBrZXlCdWZbWFNFQ19NQVhfSEFTSF9TSVpFXTsKKwkJCWludCBsZW4gPSBDYWxjdWxhdGVYS01TQXV0aGVudGljYXRpb25LZXkoKHVuc2lnbmVkIGNoYXIgKikgYXJndltwYXJhbUNvdW50XSwgKGludCkgc3RybGVuKGFyZ3ZbcGFyYW1Db3VudF0pLCBrZXlCdWYsIFhTRUNfTUFYX0hBU0hfU0laRSk7CisJCQlpZiAobGVuIDw9IDApIHsKKwkJCQljb3V0IDw8ICJFcnJvciBjcmVhdGluZyBrZXkgZnJvbSBwYXNzIHBocmFzZSIgPDwgZW5kbDsKKwkJCQlkZWxldGUgcnI7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisKKwkJCVhTRUNDcnlwdG9LZXlITUFDICogayA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5rZXlITUFDKCk7CisJCQlrLT5zZXRLZXkoa2V5QnVmLCBsZW4pOworCisJCQkvLyBTZXQga2V5IGFuZCB2YWxpZGF0ZQorCQkJWEtNU0F1dGhlbnRpY2F0aW9uICogYSA9IHJyLT5hZGRBdXRoZW50aWNhdGlvbigpOworCQkJRFNJR1NpZ25hdHVyZSAqIHNpZyA9IGEtPmFkZEtleUJpbmRpbmdBdXRoZW50aWNhdGlvblNpZ25hdHVyZSgpOworCisJCQlzaWctPnNldFNpZ25pbmdLZXkoayk7CisJCQlzaWctPnNpZ24oKTsKKworCQkJcGFyYW1Db3VudCsrOworCisJCX0KKyNpZiBkZWZpbmVkIChIQVZFX09QRU5TU0wpCisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXNpZ24tZHNhIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXNkIikgPT0gMCB8fAorCQkJCV9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXNpZ24tcnNhIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXNyIikgPT0gMCkgeworCQkJaWYgKHBhcmFtQ291bnQgPj0gYXJnYyArIDIpIHsKKwkJCQlwcmludFJlZ2lzdGVyUmVxdWVzdFVzYWdlKCk7CisJCQkJZGVsZXRlIHJyOworCQkJCXJldHVybiBOVUxMOworCQkJfQorCisJCQkvLyBEU0Egb3IgUlNBIE9wZW5TU0wgS2V5CisJCQkvLyBGb3Igbm93IGp1c3QgcmVhZCBhIHBhcnRpY3VsYXIgZmlsZQorCisJCQlCSU8gKiBiaW9LZXk7CisJCQlpZiAoKGJpb0tleSA9IEJJT19uZXcoQklPX3NfZmlsZSgpKSkgPT0gTlVMTCkgeworCisJCQkJY2VyciA8PCAiRXJyb3Igb3BlbmluZyBwcml2YXRlIGtleSBmaWxlXG5cbiI7CisJCQkJcmV0dXJuIE5VTEw7CisKKwkJCX0KKworCQkJaWYgKEJJT19yZWFkX2ZpbGVuYW1lKGJpb0tleSwgYXJndltwYXJhbUNvdW50KzFdKSA8PSAwKSB7CisKKwkJCQljZXJyIDw8ICJFcnJvciBvcGVuaW5nIHByaXZhdGUga2V5IGZpbGUgOiAiIDw8IGFyZ3ZbcGFyYW1Db3VudCsxXSA8PCBlbmRsOworCQkJCXJldHVybiBOVUxMOworCisJCQl9CisKKwkJCUVWUF9QS0VZICogcGtleTsKKwkJCXBrZXkgPSBQRU1fcmVhZF9iaW9fUHJpdmF0ZUtleShiaW9LZXksTlVMTCxOVUxMLGFyZ3ZbcGFyYW1Db3VudCArIDJdKTsKKworCQkJaWYgKHBrZXkgPT0gTlVMTCkgeworCisJCQkJQklPICogYmlvX2VycjsKKwkKKwkJCQlpZiAoKGJpb19lcnI9QklPX25ldyhCSU9fc19maWxlKCkpKSAhPSBOVUxMKQorCQkJCQlCSU9fc2V0X2ZwKGJpb19lcnIsc3RkZXJyLEJJT19OT0NMT1NFfEJJT19GUF9URVhUKTsKKwkJCQljZXJyIDw8ICJFcnJvciBsb2FkaW5nIHByaXZhdGUga2V5XG5cbiI7CisJCQkJRVJSX3ByaW50X2Vycm9ycyhiaW9fZXJyKTsKKwkJCQlyZXR1cm4gTlVMTDsKKworCQkJfQorCQkJWFNFQ0NyeXB0b0tleSAqa2V5OworCQkJRFNJR1NpZ25hdHVyZSAqIHNpZzsKKwkJCWlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1zaWduLWRzYSIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1zZCIpID09IDApIHsKKworCQkJCS8vIENoZWNrIHR5cGUgaXMgY29ycmVjdAorCisJCQkJaWYgKHBrZXktPnR5cGUgIT0gRVZQX1BLRVlfRFNBKSB7CisJCQkJCWNlcnIgPDwgIkRTQSBLZXkgcmVxdWVzdGVkLCBidXQgT3BlblNTTCBsb2FkZWQgc29tZXRoaW5nIGVsc2VcbiI7CisJCQkJCXJldHVybiBOVUxMOworCQkJCX0KKworCQkJCXNpZyA9IHJyLT5hZGRTaWduYXR1cmUoQ0FOT05fQzE0Tl9OT0MsIFNJR05BVFVSRV9EU0EsIEhBU0hfU0hBMSk7CisJCQkJLy8gQ3JlYXRlIHRoZSBYU0VDIE9wZW5TU0wgaW50ZXJmYWNlCisJCQkJa2V5ID0gbmV3IE9wZW5TU0xDcnlwdG9LZXlEU0EocGtleSk7CisKKwkJCQlYTUxDaCAqIFAgPSBCTjJiNjQocGtleS0+cGtleS5kc2EtPnApOworCQkJCVhNTENoICogUSA9IEJOMmI2NChwa2V5LT5wa2V5LmRzYS0+cSk7CisJCQkJWE1MQ2ggKiBHID0gQk4yYjY0KHBrZXktPnBrZXkuZHNhLT5nKTsKKwkJCQlYTUxDaCAqIFkgPSBCTjJiNjQocGtleS0+cGtleS5kc2EtPnB1Yl9rZXkpOworCisJCQkJc2lnLT5hcHBlbmREU0FLZXlWYWx1ZShQLFEsRyxZKTsKKworCQkJCVhTRUNfUkVMRUFTRV9YTUxDSChQKTsKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0goUSk7CisJCQkJWFNFQ19SRUxFQVNFX1hNTENIKEcpOworCQkJCVhTRUNfUkVMRUFTRV9YTUxDSChZKTsKKwkJCX0KKwkJCWVsc2UgeworCQkJCWlmIChwa2V5LT50eXBlICE9IEVWUF9QS0VZX1JTQSkgeworCQkJCQljZXJyIDw8ICJSU0EgS2V5IHJlcXVlc3RlZCwgYnV0IE9wZW5TU0wgbG9hZGVkIHNvbWV0aGluZyBlbHNlXG4iOworCQkJCQlleGl0ICgxKTsKKwkJCQl9CisJCQkJc2lnID0gcnItPmFkZFNpZ25hdHVyZShDQU5PTl9DMTROX05PQywgU0lHTkFUVVJFX1JTQSwgSEFTSF9TSEExKTsKKwkJCQlrZXkgPSBuZXcgT3BlblNTTENyeXB0b0tleVJTQShwa2V5KTsKKworCQkJCVhNTENoICogbW9kID0gQk4yYjY0KHBrZXktPnBrZXkucnNhLT5uKTsKKwkJCQlYTUxDaCAqIGV4cCA9IEJOMmI2NChwa2V5LT5wa2V5LnJzYS0+ZSk7CisJCQkJc2lnLT5hcHBlbmRSU0FLZXlWYWx1ZShtb2QsIGV4cCk7CisJCQkJWFNFQ19SRUxFQVNFX1hNTENIKG1vZCk7CisJCQkJWFNFQ19SRUxFQVNFX1hNTENIKGV4cCk7CisKKwkJCX0KKworCQkJc2lnLT5zZXRTaWduaW5nS2V5KGtleSk7CisJCQlzaWctPnNpZ24oKTsKKworCQkJRVZQX1BLRVlfZnJlZShwa2V5KTsKKwkJCUJJT19mcmVlKGJpb0tleSk7CisKKwkJCXBhcmFtQ291bnQgKz0gMzsKKworCQkJCisJCX0gLyogYXJndlsxXSA9ICJzaWduIGRzYS9yc2EiICovCisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWFkZC12YWx1ZS1kc2EiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItdmQiKSA9PSAwIHx8CisJCQkJX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLXZhbHVlLXJzYSIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi12ciIpID09IDApIHsKKwkJCWlmIChwYXJhbUNvdW50ID49IGFyZ2MgKyAyKSB7CisJCQkJcHJpbnRSZWdpc3RlclJlcXVlc3RVc2FnZSgpOworCQkJCWRlbGV0ZSBycjsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKworCQkJLy8gRFNBIG9yIFJTQSBPcGVuU1NMIEtleQorCQkJLy8gRm9yIG5vdyBqdXN0IHJlYWQgYSBwYXJ0aWN1bGFyIGZpbGUKKworCQkJQklPICogYmlvS2V5OworCQkJaWYgKChiaW9LZXkgPSBCSU9fbmV3KEJJT19zX2ZpbGUoKSkpID09IE5VTEwpIHsKKworCQkJCWNlcnIgPDwgIkVycm9yIG9wZW5pbmcgcHJpdmF0ZSBrZXkgZmlsZVxuXG4iOworCQkJCXJldHVybiBOVUxMOworCisJCQl9CisKKwkJCWlmIChCSU9fcmVhZF9maWxlbmFtZShiaW9LZXksIGFyZ3ZbcGFyYW1Db3VudCsxXSkgPD0gMCkgeworCisJCQkJY2VyciA8PCAiRXJyb3Igb3BlbmluZyBwcml2YXRlIGtleSBmaWxlIDogIiA8PCBhcmd2W3BhcmFtQ291bnQrMV0gPDwgZW5kbDsKKwkJCQlyZXR1cm4gTlVMTDsKKworCQkJfQorCisJCQlFVlBfUEtFWSAqIHBrZXk7CisJCQlwa2V5ID0gUEVNX3JlYWRfYmlvX1ByaXZhdGVLZXkoYmlvS2V5LE5VTEwsTlVMTCxhcmd2W3BhcmFtQ291bnQgKyAyXSk7CisKKwkJCWlmIChwa2V5ID09IE5VTEwpIHsKKworCQkJCUJJTyAqIGJpb19lcnI7CisJCisJCQkJaWYgKChiaW9fZXJyPUJJT19uZXcoQklPX3NfZmlsZSgpKSkgIT0gTlVMTCkKKwkJCQkJQklPX3NldF9mcChiaW9fZXJyLHN0ZGVycixCSU9fTk9DTE9TRXxCSU9fRlBfVEVYVCk7CisJCQkJY2VyciA8PCAiRXJyb3IgbG9hZGluZyBwcml2YXRlIGtleVxuXG4iOworCQkJCUVSUl9wcmludF9lcnJvcnMoYmlvX2Vycik7CisJCQkJcmV0dXJuIE5VTEw7CisKKwkJCX0KKworCQkJWEtNU1Byb3RvdHlwZUtleUJpbmRpbmcgKiBwa2IgPSByci0+Z2V0UHJvdG90eXBlS2V5QmluZGluZygpOworCQkJaWYgKHBrYiA9PSBOVUxMKQorCQkJCXBrYiA9IHJyLT5hZGRQcm90b3R5cGVLZXlCaW5kaW5nKCk7CisKKworCQkJaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWFkZC12YWx1ZS1kc2EiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItdmQiKSA9PSAwKSB7CisKKwkJCQkvLyBDaGVjayB0eXBlIGlzIGNvcnJlY3QKKworCQkJCWlmIChwa2V5LT50eXBlICE9IEVWUF9QS0VZX0RTQSkgeworCQkJCQljZXJyIDw8ICJEU0EgS2V5IHJlcXVlc3RlZCwgYnV0IE9wZW5TU0wgbG9hZGVkIHNvbWV0aGluZyBlbHNlXG4iOworCQkJCQlyZXR1cm4gTlVMTDsKKwkJCQl9CisKKwkJCQlwcm9vZk9mUG9zc2Vzc2lvbktleSA9IG5ldyBPcGVuU1NMQ3J5cHRvS2V5RFNBKHBrZXkpOworCQkJCXByb29mT2ZQb3NzZXNzaW9uU20gPSBTSUdOQVRVUkVfRFNBOworCisJCQkJWE1MQ2ggKiBQID0gQk4yYjY0KHBrZXktPnBrZXkuZHNhLT5wKTsKKwkJCQlYTUxDaCAqIFEgPSBCTjJiNjQocGtleS0+cGtleS5kc2EtPnEpOworCQkJCVhNTENoICogRyA9IEJOMmI2NChwa2V5LT5wa2V5LmRzYS0+Zyk7CisJCQkJWE1MQ2ggKiBZID0gQk4yYjY0KHBrZXktPnBrZXkuZHNhLT5wdWJfa2V5KTsKKworCQkJCXBrYi0+YXBwZW5kRFNBS2V5VmFsdWUoUCxRLEcsWSk7CisKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0goUCk7CisJCQkJWFNFQ19SRUxFQVNFX1hNTENIKFEpOworCQkJCVhTRUNfUkVMRUFTRV9YTUxDSChHKTsKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0goWSk7CisJCQl9CisJCQllbHNlIHsKKwkJCQlpZiAocGtleS0+dHlwZSAhPSBFVlBfUEtFWV9SU0EpIHsKKwkJCQkJY2VyciA8PCAiUlNBIEtleSByZXF1ZXN0ZWQsIGJ1dCBPcGVuU1NMIGxvYWRlZCBzb21ldGhpbmcgZWxzZVxuIjsKKwkJCQkJZXhpdCAoMSk7CisJCQkJfQorCisJCQkJcHJvb2ZPZlBvc3Nlc3Npb25LZXkgPSBuZXcgT3BlblNTTENyeXB0b0tleVJTQShwa2V5KTsKKwkJCQlwcm9vZk9mUG9zc2Vzc2lvblNtID0gU0lHTkFUVVJFX1JTQTsKKworCQkJCVhNTENoICogbW9kID0gQk4yYjY0KHBrZXktPnBrZXkucnNhLT5uKTsKKwkJCQlYTUxDaCAqIGV4cCA9IEJOMmI2NChwa2V5LT5wa2V5LnJzYS0+ZSk7CisJCQkJcGtiLT5hcHBlbmRSU0FLZXlWYWx1ZShtb2QsIGV4cCk7CisJCQkJWFNFQ19SRUxFQVNFX1hNTENIKG1vZCk7CisJCQkJWFNFQ19SRUxFQVNFX1hNTENIKGV4cCk7CisKKwkJCX0KKworCQkJRVZQX1BLRVlfZnJlZShwa2V5KTsKKwkJCUJJT19mcmVlKGJpb0tleSk7CisKKwkJCXBhcmFtQ291bnQgKz0gMzsKKworCQkJCisJCX0gLyogYXJndlsxXSA9ICJ2YWx1ZSBkc2EvcnNhIiAqLworCisjZW5kaWYKKwkJZWxzZSB7CisJCQlwcmludFJlZ2lzdGVyUmVxdWVzdFVzYWdlKCk7CisJCQlkZWxldGUgcnI7CisJCQkoKmRvYyktPnJlbGVhc2UoKTsKKwkJCXJldHVybiBOVUxMOworCQl9CisJfQorCisJaWYgKHByb29mT2ZQb3NzZXNzaW9uS2V5ICE9IE5VTEwpIHsKKworCQkvLyBTZXQgdXAgdGhlIHByb29mIG9mIHBvc3Nlc3Npb24KKwkJRFNJR1NpZ25hdHVyZSAqIHMgPSAKKwkJCXJyLT5hZGRQcm9vZk9mUG9zc2Vzc2lvblNpZ25hdHVyZShDQU5PTl9DMTRORV9OT0MsIHByb29mT2ZQb3NzZXNzaW9uU20pOworCisJCXMtPnNldFNpZ25pbmdLZXkocHJvb2ZPZlBvc3Nlc3Npb25LZXkpOworCQlzLT5zaWduKCk7CisKKwl9CisKKwlyZXR1cm4gcnI7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ3JlYXRlIGEgUmV2b2tlUmVxdWVzdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBwcmludFJldm9rZVJlcXVlc3RVc2FnZSh2b2lkKSB7CisKKwljZXJyIDw8ICJcblVzYWdlIFJldm9rZVJlcXVlc3QgWy0taGVscHwtaF0gPHNlcnZpY2UgVVJJPiBbb3B0aW9uc11cbiI7CisJY2VyciA8PCAiICAgLS1oZWxwLy1oICAgICAgICAgICAgICAgIDogcHJpbnQgdGhpcyBzY3JlZW4gYW5kIGV4aXRcblxuIjsKKwljZXJyIDw8ICIgICAtLWFkZC1uYW1lLy1uIDxuYW1lPiAgICAgOiBBZGQgbmFtZSBhcyBhIEtleUluZm9OYW1lXG4iOworCWNlcnIgPDwgIiAgIC0tYWRkLW9wYXF1ZS8tbyA8ZGF0YT4gICA6IEFkZCBhbiBvcGFxdWUgZGF0YSBzdHJpbmdcbiI7CisJY2VyciA8PCAiICAgLS1hZGQtdXNhZ2Utc2lnLy11cyAgICAgIDogQWRkIFNpZ25hdHVyZSBLZXkgVXNhZ2VcbiI7CisJY2VyciA8PCAiICAgLS1hZGQtdXNhZ2UtZXhjLy11eCAgICAgIDogQWRkIEV4Y2hhbmdlIEtleSBVc2FnZVxuIjsKKwljZXJyIDw8ICIgICAtLWFkZC11c2FnZS1lbmMvLXVlICAgICAgOiBBZGQgRW5jcnlwdGlvbiBLZXkgVXNhZ2VcbiI7CisJY2VyciA8PCAiICAgLS1hZGQtdXNla2V5d2l0aC8tdSA8QXBwbGljYXRpb24gVVJJPiA8SWRlbnRpZmllcj5cbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogQWRkIGEgVXNlS2V5V2l0aCBlbGVtZW50XG4iOworCWNlcnIgPDwgIiAgIC0tYWRkLXJlc3BvbmR3aXRoLy1yIDxJZGVudGlmaWVyPlxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBBZGQgYSBSZXNwb25kV2l0aCBlbGVtZW50XG4iOworCWNlcnIgPDwgIiAgIC0tYWRkLXJlc3BvbnNlbWVjaGFuaXNtLy1tIDxJZGVudGlmaWVyPlxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBBZGQgYSBSZXNwb25zZU1lY2hhbmlzbSBlbGVtZW50XG4iOworCWNlcnIgPDwgIiAgIC0tc2lnbi1kc2EvLXNkIDxmaWxlbmFtZT4gPHBhc3NwaHJhc2U+XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgOiBTaWduIHVzaW5nIHRoZSBEU0Ega2V5IGluIGZpbGUgcHJvdGVjdGVkIGJ5IHBhc3NwaHJhc2VcbiI7CisJY2VyciA8PCAiICAgLS1hZGQtdmFsdWUtZHNhLy12ZCA8ZmlsZW5hbWU+IDxwYXNzcGhyYXNlPlxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgIDogQWRkIHRoZSBEU0Ega2V5IGFzIGEga2V5dmFsdWVcbiI7CisJY2VyciA8PCAiICAgLS1hZGQtdmFsdWUtcnNhLy12ciA8ZmlsZW5hbWU+IDxwYXNzcGhyYXNlPlxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgIDogQWRkIHRoZSBSU0Ega2V5IGFzIGEga2V5dmFsdWVcbiI7CisJY2VyciA8PCAiICAgLS1yZXZvY2F0aW9uLy12IDxwaHJhc2U+IDogU2V0IDxwaHJhc2U+IGFzIHJldm9jYXRpb24gY29kZVxuIjsKKwljZXJyIDw8ICIgICAtLWF1dGhlbnRpY2F0ZS8tYSA8cGhyYXNlPlxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgIDogVXNlIDxwaHJhc2U+IGFzIHRoZSBhdXRoZW50aWNhdGlvbiBrZXkgZm9yIHRoZSByZXF1ZXN0XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICBOT1RFIC0gVGhpcyBtdXN0IGNvbWUgKmFmdGVyKiBhZGRpbmcgb2YgS2V5SW5mbyBlbGVtZW50c1xuXG4iOworCit9CisKK1hLTVNNZXNzYWdlQWJzdHJhY3RUeXBlICogY3JlYXRlUmV2b2tlUmVxdWVzdChYU0VDUHJvdmlkZXIgJnByb3YsIERPTURvY3VtZW50ICoqZG9jLCBpbnQgYXJnYywgY2hhciAqKiBhcmd2LCBpbnQgJnBhcmFtQ291bnQsIFhLTVNDb21wb3VuZFJlcXVlc3QgKiBjciA9IE5VTEwpIHsKKworCWlmIChwYXJhbUNvdW50ID49IGFyZ2MgfHwgCisJCShfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1oZWxwIikgPT0gMCkgfHwKKwkJKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItaCIpID09IDApKSB7CisKKwkJcHJpbnRSZWdpc3RlclJlcXVlc3RVc2FnZSgpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwkvKiBGaXJzdCBjcmVhdGUgdGhlIGJhc2ljIHJlcXVlc3QgKi8KKwlYS01TTWVzc2FnZUZhY3RvcnkgKiBmYWN0b3J5ID0gCisJCXByb3YuZ2V0WEtNU01lc3NhZ2VGYWN0b3J5KCk7CisJWEtNU1Jldm9rZVJlcXVlc3QgKiBycjsKKworCWlmIChjciA9PSBOVUxMKQorCQlyciA9IGZhY3RvcnktPmNyZWF0ZVJldm9rZVJlcXVlc3QoTUFLRV9VTklDT0RFX1NUUklORyhhcmd2W3BhcmFtQ291bnQrK10pLCBkb2MpOworCWVsc2UKKwkJcnIgPSBjci0+Y3JlYXRlUmV2b2tlUmVxdWVzdChNQUtFX1VOSUNPREVfU1RSSU5HKGFyZ3ZbcGFyYW1Db3VudCsrXSkpOworCisJd2hpbGUgKHBhcmFtQ291bnQgPCBhcmdjICYmIF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLSIpICE9IDApIHsKKworCQlpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLW5hbWUiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItbiIpID09IDApIHsKKwkJCWlmICgrK3BhcmFtQ291bnQgPj0gYXJnYykgeworCQkJCXByaW50UmV2b2tlUmVxdWVzdFVzYWdlKCk7CisJCQkJZGVsZXRlIHJyOworCQkJCXJldHVybiBOVUxMOworCQkJfQorCisJCQlYS01TUmV2b2tlS2V5QmluZGluZyAqIHJrYiA9IHJyLT5nZXRSZXZva2VLZXlCaW5kaW5nKCk7CisJCQlpZiAocmtiID09IE5VTEwpCisJCQkJcmtiID0gcnItPmFkZFJldm9rZUtleUJpbmRpbmcoWEtNU1N0YXR1czo6SW5kZXRlcm1pbmF0ZSk7CisJCQlya2ItPmFwcGVuZEtleU5hbWUoTUFLRV9VTklDT0RFX1NUUklORyhhcmd2W3BhcmFtQ291bnRdKSk7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLW9wYXF1ZSIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1vIikgPT0gMCkgeworCQkJaWYgKCsrcGFyYW1Db3VudCA+PSBhcmdjKSB7CisJCQkJcHJpbnRSZXZva2VSZXF1ZXN0VXNhZ2UoKTsKKwkJCQlkZWxldGUgcnI7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisJCQlyci0+YXBwZW5kT3BhcXVlQ2xpZW50RGF0YUl0ZW0oTUFLRV9VTklDT0RFX1NUUklORyhhcmd2W3BhcmFtQ291bnRdKSk7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLXJlc3BvbmR3aXRoIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXIiKSA9PSAwKSB7CisJCQlpZiAoKytwYXJhbUNvdW50ID49IGFyZ2MpIHsKKwkJCQlwcmludFJldm9rZVJlcXVlc3RVc2FnZSgpOworCQkJCWRlbGV0ZSBycjsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKwkJCXJyLT5hcHBlbmRSZXNwb25kV2l0aEl0ZW0oTUFLRV9VTklDT0RFX1NUUklORyhhcmd2W3BhcmFtQ291bnRdKSk7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLXJlc3BvbnNlbWVjaGFuaXNtIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLW0iKSA9PSAwKSB7CisJCQlpZiAoKytwYXJhbUNvdW50ID49IGFyZ2MpIHsKKwkJCQlwcmludFJldm9rZVJlcXVlc3RVc2FnZSgpOworCQkJCWRlbGV0ZSBycjsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKwkJCXJyLT5hcHBlbmRSZXNwb25zZU1lY2hhbmlzbUl0ZW0oTUFLRV9VTklDT0RFX1NUUklORyhhcmd2W3BhcmFtQ291bnRdKSk7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLXVzYWdlLXNpZyIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi11cyIpID09IDApIHsKKwkJCVhLTVNSZXZva2VLZXlCaW5kaW5nICogcmtiID0gcnItPmdldFJldm9rZUtleUJpbmRpbmcoKTsKKwkJCWlmIChya2IgPT0gTlVMTCkKKwkJCQlya2IgPSByci0+YWRkUmV2b2tlS2V5QmluZGluZyhYS01TU3RhdHVzOjpJbmRldGVybWluYXRlKTsKKwkJCXJrYi0+c2V0U2lnbmF0dXJlS2V5VXNhZ2UoKTsKKwkJCXBhcmFtQ291bnQrKzsKKwkJfQorCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1hZGQtdXNhZ2UtZXhjIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXV4IikgPT0gMCkgeworCQkJWEtNU1Jldm9rZUtleUJpbmRpbmcgKiBya2IgPSByci0+Z2V0UmV2b2tlS2V5QmluZGluZygpOworCQkJaWYgKHJrYiA9PSBOVUxMKQorCQkJCXJrYiA9IHJyLT5hZGRSZXZva2VLZXlCaW5kaW5nKFhLTVNTdGF0dXM6OkluZGV0ZXJtaW5hdGUpOworCQkJcmtiLT5zZXRFeGNoYW5nZUtleVVzYWdlKCk7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLXVzYWdlLWVuYyIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi11ZSIpID09IDApIHsKKwkJCVhLTVNSZXZva2VLZXlCaW5kaW5nICogcmtiID0gcnItPmdldFJldm9rZUtleUJpbmRpbmcoKTsKKwkJCWlmIChya2IgPT0gTlVMTCkKKwkJCQlya2IgPSByci0+YWRkUmV2b2tlS2V5QmluZGluZyhYS01TU3RhdHVzOjpJbmRldGVybWluYXRlKTsKKwkJCXJrYi0+c2V0RW5jcnlwdGlvbktleVVzYWdlKCk7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLXVzZWtleXdpdGgiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItdSIpID09IDApIHsKKwkJCWlmICgrK3BhcmFtQ291bnQgPj0gYXJnYyArIDEpIHsKKwkJCQlwcmludFJldm9rZVJlcXVlc3RVc2FnZSgpOworCQkJCWRlbGV0ZSBycjsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKwkJCVhLTVNSZXZva2VLZXlCaW5kaW5nICpya2IgPSByci0+Z2V0UmV2b2tlS2V5QmluZGluZygpOworCQkJaWYgKHJrYiA9PSBOVUxMKQorCQkJCXJrYiA9IHJyLT5hZGRSZXZva2VLZXlCaW5kaW5nKFhLTVNTdGF0dXM6OkluZGV0ZXJtaW5hdGUpOworCisJCQlya2ItPmFwcGVuZFVzZUtleVdpdGhJdGVtKE1BS0VfVU5JQ09ERV9TVFJJTkcoYXJndltwYXJhbUNvdW50XSksIE1BS0VfVU5JQ09ERV9TVFJJTkcoYXJndltwYXJhbUNvdW50ICsgMV0pKTsKKwkJCXBhcmFtQ291bnQgKz0gMjsKKwkJfQorCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1yZXZvY2F0aW9uIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXYiKSA9PSAwKSB7CisJCQlpZiAoKytwYXJhbUNvdW50ID49IGFyZ2MpIHsKKwkJCQlwcmludFJldm9rZVJlcXVlc3RVc2FnZSgpOworCQkJCWRlbGV0ZSBycjsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKworCQkJLy8gQ3JlYXRlIHRoZSBSZXZvY2F0aW9uQ29kZSB2YWx1ZQorCQkJdW5zaWduZWQgY2hhciByY2lCdWZbWFNFQ19NQVhfSEFTSF9TSVpFXTsKKwkJCWludCBsZW4gPSBDYWxjdWxhdGVYS01TUmV2b2NhdGlvbkNvZGVJZGVudGlmaWVyRW5jb2RpbmcxKCh1bnNpZ25lZCBjaGFyICopIGFyZ3ZbcGFyYW1Db3VudF0sIChpbnQpIHN0cmxlbihhcmd2W3BhcmFtQ291bnRdKSwgcmNpQnVmLCBYU0VDX01BWF9IQVNIX1NJWkUpOworCisJCQlpZiAobGVuIDw9IDApIHsKKwkJCQljZXJyIDw8ICJFcnJvciBjcmVhdGluZyByZXZvY2F0aW9uIGNvZGUhXG4iOworCQkJCWRlbGV0ZSBycjsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKworCQkJLy8gQ29udmVydCB0byBiYXNlNjQKKwkJCVhNTENoICogc3RyID0gRW5jb2RlVG9CYXNlNjRYTUxDaChyY2lCdWYsIGxlbik7CisJCQlyci0+YWRkUmV2b2NhdGlvbkNvZGUoc3RyKTsKKwkJCVhTRUNfUkVMRUFTRV9YTUxDSChzdHIpOworCisJCQlwYXJhbUNvdW50Kys7OworCQl9CQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1hdXRoZW50aWNhdGUiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItYSIpID09IDApIHsKKwkJCWlmICgrK3BhcmFtQ291bnQgPj0gYXJnYyArIDEpIHsKKwkJCQlwcmludFJldm9rZVJlcXVlc3RVc2FnZSgpOworCQkJCWRlbGV0ZSBycjsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKworCQkJLy8gQ3JlYXRlIHRoZSBzaWduYXR1cmUKKworCQkJdW5zaWduZWQgY2hhciBrZXlCdWZbWFNFQ19NQVhfSEFTSF9TSVpFXTsKKwkJCWludCBsZW4gPSBDYWxjdWxhdGVYS01TQXV0aGVudGljYXRpb25LZXkoKHVuc2lnbmVkIGNoYXIgKikgYXJndltwYXJhbUNvdW50XSwgKGludCkgc3RybGVuKGFyZ3ZbcGFyYW1Db3VudF0pLCBrZXlCdWYsIFhTRUNfTUFYX0hBU0hfU0laRSk7CisJCQlpZiAobGVuIDw9IDApIHsKKwkJCQljb3V0IDw8ICJFcnJvciBjcmVhdGluZyBrZXkgZnJvbSBwYXNzIHBocmFzZSIgPDwgZW5kbDsKKwkJCQlkZWxldGUgcnI7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisKKwkJCVhTRUNDcnlwdG9LZXlITUFDICogayA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5rZXlITUFDKCk7CisJCQlrLT5zZXRLZXkoa2V5QnVmLCBsZW4pOworCisJCQkvLyBTZXQga2V5IGFuZCB2YWxpZGF0ZQorCQkJWEtNU0F1dGhlbnRpY2F0aW9uICogYSA9IHJyLT5hZGRBdXRoZW50aWNhdGlvbigpOworCQkJRFNJR1NpZ25hdHVyZSAqIHNpZyA9IGEtPmFkZEtleUJpbmRpbmdBdXRoZW50aWNhdGlvblNpZ25hdHVyZSgpOworCisJCQlzaWctPnNldFNpZ25pbmdLZXkoayk7CisJCQlzaWctPnNpZ24oKTsKKworCQkJcGFyYW1Db3VudCsrOworCisJCX0KKyNpZiBkZWZpbmVkIChIQVZFX09QRU5TU0wpCisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXNpZ24tZHNhIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXNkIikgPT0gMCB8fAorCQkJCV9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXNpZ24tcnNhIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXNyIikgPT0gMCkgeworCQkJaWYgKHBhcmFtQ291bnQgPj0gYXJnYyArIDIpIHsKKwkJCQlwcmludFJlZ2lzdGVyUmVxdWVzdFVzYWdlKCk7CisJCQkJZGVsZXRlIHJyOworCQkJCXJldHVybiBOVUxMOworCQkJfQorCisJCQkvLyBEU0Egb3IgUlNBIE9wZW5TU0wgS2V5CisJCQkvLyBGb3Igbm93IGp1c3QgcmVhZCBhIHBhcnRpY3VsYXIgZmlsZQorCisJCQlCSU8gKiBiaW9LZXk7CisJCQlpZiAoKGJpb0tleSA9IEJJT19uZXcoQklPX3NfZmlsZSgpKSkgPT0gTlVMTCkgeworCisJCQkJY2VyciA8PCAiRXJyb3Igb3BlbmluZyBwcml2YXRlIGtleSBmaWxlXG5cbiI7CisJCQkJcmV0dXJuIE5VTEw7CisKKwkJCX0KKworCQkJaWYgKEJJT19yZWFkX2ZpbGVuYW1lKGJpb0tleSwgYXJndltwYXJhbUNvdW50KzFdKSA8PSAwKSB7CisKKwkJCQljZXJyIDw8ICJFcnJvciBvcGVuaW5nIHByaXZhdGUga2V5IGZpbGUgOiAiIDw8IGFyZ3ZbcGFyYW1Db3VudCsxXSA8PCBlbmRsOworCQkJCXJldHVybiBOVUxMOworCisJCQl9CisKKwkJCUVWUF9QS0VZICogcGtleTsKKwkJCXBrZXkgPSBQRU1fcmVhZF9iaW9fUHJpdmF0ZUtleShiaW9LZXksTlVMTCxOVUxMLGFyZ3ZbcGFyYW1Db3VudCArIDJdKTsKKworCQkJaWYgKHBrZXkgPT0gTlVMTCkgeworCisJCQkJQklPICogYmlvX2VycjsKKwkKKwkJCQlpZiAoKGJpb19lcnI9QklPX25ldyhCSU9fc19maWxlKCkpKSAhPSBOVUxMKQorCQkJCQlCSU9fc2V0X2ZwKGJpb19lcnIsc3RkZXJyLEJJT19OT0NMT1NFfEJJT19GUF9URVhUKTsKKwkJCQljZXJyIDw8ICJFcnJvciBsb2FkaW5nIHByaXZhdGUga2V5XG5cbiI7CisJCQkJRVJSX3ByaW50X2Vycm9ycyhiaW9fZXJyKTsKKwkJCQlyZXR1cm4gTlVMTDsKKworCQkJfQorCQkJWFNFQ0NyeXB0b0tleSAqa2V5OworCQkJRFNJR1NpZ25hdHVyZSAqIHNpZzsKKwkJCWlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1zaWduLWRzYSIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1zZCIpID09IDApIHsKKworCQkJCS8vIENoZWNrIHR5cGUgaXMgY29ycmVjdAorCisJCQkJaWYgKHBrZXktPnR5cGUgIT0gRVZQX1BLRVlfRFNBKSB7CisJCQkJCWNlcnIgPDwgIkRTQSBLZXkgcmVxdWVzdGVkLCBidXQgT3BlblNTTCBsb2FkZWQgc29tZXRoaW5nIGVsc2VcbiI7CisJCQkJCXJldHVybiBOVUxMOworCQkJCX0KKworCQkJCXNpZyA9IHJyLT5hZGRTaWduYXR1cmUoQ0FOT05fQzE0Tl9OT0MsIFNJR05BVFVSRV9EU0EsIEhBU0hfU0hBMSk7CisJCQkJLy8gQ3JlYXRlIHRoZSBYU0VDIE9wZW5TU0wgaW50ZXJmYWNlCisJCQkJa2V5ID0gbmV3IE9wZW5TU0xDcnlwdG9LZXlEU0EocGtleSk7CisKKwkJCQlYTUxDaCAqIFAgPSBCTjJiNjQocGtleS0+cGtleS5kc2EtPnApOworCQkJCVhNTENoICogUSA9IEJOMmI2NChwa2V5LT5wa2V5LmRzYS0+cSk7CisJCQkJWE1MQ2ggKiBHID0gQk4yYjY0KHBrZXktPnBrZXkuZHNhLT5nKTsKKwkJCQlYTUxDaCAqIFkgPSBCTjJiNjQocGtleS0+cGtleS5kc2EtPnB1Yl9rZXkpOworCisJCQkJc2lnLT5hcHBlbmREU0FLZXlWYWx1ZShQLFEsRyxZKTsKKworCQkJCVhTRUNfUkVMRUFTRV9YTUxDSChQKTsKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0goUSk7CisJCQkJWFNFQ19SRUxFQVNFX1hNTENIKEcpOworCQkJCVhTRUNfUkVMRUFTRV9YTUxDSChZKTsKKwkJCX0KKwkJCWVsc2UgeworCQkJCWlmIChwa2V5LT50eXBlICE9IEVWUF9QS0VZX1JTQSkgeworCQkJCQljZXJyIDw8ICJSU0EgS2V5IHJlcXVlc3RlZCwgYnV0IE9wZW5TU0wgbG9hZGVkIHNvbWV0aGluZyBlbHNlXG4iOworCQkJCQlleGl0ICgxKTsKKwkJCQl9CisJCQkJc2lnID0gcnItPmFkZFNpZ25hdHVyZShDQU5PTl9DMTROX05PQywgU0lHTkFUVVJFX1JTQSwgSEFTSF9TSEExKTsKKwkJCQlrZXkgPSBuZXcgT3BlblNTTENyeXB0b0tleVJTQShwa2V5KTsKKworCQkJCVhNTENoICogbW9kID0gQk4yYjY0KHBrZXktPnBrZXkucnNhLT5uKTsKKwkJCQlYTUxDaCAqIGV4cCA9IEJOMmI2NChwa2V5LT5wa2V5LnJzYS0+ZSk7CisJCQkJc2lnLT5hcHBlbmRSU0FLZXlWYWx1ZShtb2QsIGV4cCk7CisJCQkJWFNFQ19SRUxFQVNFX1hNTENIKG1vZCk7CisJCQkJWFNFQ19SRUxFQVNFX1hNTENIKGV4cCk7CisKKwkJCX0KKworCQkJc2lnLT5zZXRTaWduaW5nS2V5KGtleSk7CisJCQlzaWctPnNpZ24oKTsKKworCQkJRVZQX1BLRVlfZnJlZShwa2V5KTsKKwkJCUJJT19mcmVlKGJpb0tleSk7CisKKwkJCXBhcmFtQ291bnQgKz0gMzsKKworCQkJCisJCX0gLyogYXJndlsxXSA9ICJzaWduIGRzYS9yc2EiICovCisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWFkZC12YWx1ZS1kc2EiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItdmQiKSA9PSAwIHx8CisJCQkJX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLXZhbHVlLXJzYSIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi12ciIpID09IDApIHsKKwkJCWlmIChwYXJhbUNvdW50ID49IGFyZ2MgKyAyKSB7CisJCQkJcHJpbnRSZWdpc3RlclJlcXVlc3RVc2FnZSgpOworCQkJCWRlbGV0ZSBycjsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKworCQkJLy8gRFNBIG9yIFJTQSBPcGVuU1NMIEtleQorCQkJLy8gRm9yIG5vdyBqdXN0IHJlYWQgYSBwYXJ0aWN1bGFyIGZpbGUKKworCQkJQklPICogYmlvS2V5OworCQkJaWYgKChiaW9LZXkgPSBCSU9fbmV3KEJJT19zX2ZpbGUoKSkpID09IE5VTEwpIHsKKworCQkJCWNlcnIgPDwgIkVycm9yIG9wZW5pbmcgcHJpdmF0ZSBrZXkgZmlsZVxuXG4iOworCQkJCXJldHVybiBOVUxMOworCisJCQl9CisKKwkJCWlmIChCSU9fcmVhZF9maWxlbmFtZShiaW9LZXksIGFyZ3ZbcGFyYW1Db3VudCsxXSkgPD0gMCkgeworCisJCQkJY2VyciA8PCAiRXJyb3Igb3BlbmluZyBwcml2YXRlIGtleSBmaWxlIDogIiA8PCBhcmd2W3BhcmFtQ291bnQrMV0gPDwgZW5kbDsKKwkJCQlyZXR1cm4gTlVMTDsKKworCQkJfQorCisJCQlFVlBfUEtFWSAqIHBrZXk7CisJCQlwa2V5ID0gUEVNX3JlYWRfYmlvX1ByaXZhdGVLZXkoYmlvS2V5LE5VTEwsTlVMTCxhcmd2W3BhcmFtQ291bnQgKyAyXSk7CisKKwkJCWlmIChwa2V5ID09IE5VTEwpIHsKKworCQkJCUJJTyAqIGJpb19lcnI7CisJCisJCQkJaWYgKChiaW9fZXJyPUJJT19uZXcoQklPX3NfZmlsZSgpKSkgIT0gTlVMTCkKKwkJCQkJQklPX3NldF9mcChiaW9fZXJyLHN0ZGVycixCSU9fTk9DTE9TRXxCSU9fRlBfVEVYVCk7CisJCQkJY2VyciA8PCAiRXJyb3IgbG9hZGluZyBwcml2YXRlIGtleVxuXG4iOworCQkJCUVSUl9wcmludF9lcnJvcnMoYmlvX2Vycik7CisJCQkJcmV0dXJuIE5VTEw7CisKKwkJCX0KKworCQkJWEtNU1Jldm9rZUtleUJpbmRpbmcgKiBya2IgPSByci0+Z2V0UmV2b2tlS2V5QmluZGluZygpOworCQkJaWYgKHJrYiA9PSBOVUxMKQorCQkJCXJrYiA9IHJyLT5hZGRSZXZva2VLZXlCaW5kaW5nKFhLTVNTdGF0dXM6OkluZGV0ZXJtaW5hdGUpOworCisKKwkJCWlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1hZGQtdmFsdWUtZHNhIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXZkIikgPT0gMCkgeworCisJCQkJLy8gQ2hlY2sgdHlwZSBpcyBjb3JyZWN0CisKKwkJCQlpZiAocGtleS0+dHlwZSAhPSBFVlBfUEtFWV9EU0EpIHsKKwkJCQkJY2VyciA8PCAiRFNBIEtleSByZXF1ZXN0ZWQsIGJ1dCBPcGVuU1NMIGxvYWRlZCBzb21ldGhpbmcgZWxzZVxuIjsKKwkJCQkJcmV0dXJuIE5VTEw7CisJCQkJfQorCisJCQkJWE1MQ2ggKiBQID0gQk4yYjY0KHBrZXktPnBrZXkuZHNhLT5wKTsKKwkJCQlYTUxDaCAqIFEgPSBCTjJiNjQocGtleS0+cGtleS5kc2EtPnEpOworCQkJCVhNTENoICogRyA9IEJOMmI2NChwa2V5LT5wa2V5LmRzYS0+Zyk7CisJCQkJWE1MQ2ggKiBZID0gQk4yYjY0KHBrZXktPnBrZXkuZHNhLT5wdWJfa2V5KTsKKworCQkJCXJrYi0+YXBwZW5kRFNBS2V5VmFsdWUoUCxRLEcsWSk7CisKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0goUCk7CisJCQkJWFNFQ19SRUxFQVNFX1hNTENIKFEpOworCQkJCVhTRUNfUkVMRUFTRV9YTUxDSChHKTsKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0goWSk7CisJCQl9CisJCQllbHNlIHsKKwkJCQlpZiAocGtleS0+dHlwZSAhPSBFVlBfUEtFWV9SU0EpIHsKKwkJCQkJY2VyciA8PCAiUlNBIEtleSByZXF1ZXN0ZWQsIGJ1dCBPcGVuU1NMIGxvYWRlZCBzb21ldGhpbmcgZWxzZVxuIjsKKwkJCQkJZXhpdCAoMSk7CisJCQkJfQorCisJCQkJWE1MQ2ggKiBtb2QgPSBCTjJiNjQocGtleS0+cGtleS5yc2EtPm4pOworCQkJCVhNTENoICogZXhwID0gQk4yYjY0KHBrZXktPnBrZXkucnNhLT5lKTsKKwkJCQlya2ItPmFwcGVuZFJTQUtleVZhbHVlKG1vZCwgZXhwKTsKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0gobW9kKTsKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0goZXhwKTsKKworCQkJfQorCisJCQlFVlBfUEtFWV9mcmVlKHBrZXkpOworCQkJQklPX2ZyZWUoYmlvS2V5KTsKKworCQkJcGFyYW1Db3VudCArPSAzOworCisJCQkKKwkJfSAvKiBhcmd2WzFdID0gInZhbHVlIGRzYS9yc2EiICovCisKKyNlbmRpZgorCQllbHNlIHsKKwkJCXByaW50UmV2b2tlUmVxdWVzdFVzYWdlKCk7CisJCQlkZWxldGUgcnI7CisJCQkoKmRvYyktPnJlbGVhc2UoKTsKKwkJCXJldHVybiBOVUxMOworCQl9CisJfQorCisJcmV0dXJuIHJyOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENyZWF0ZSBhIFJlaXNzdWVSZXF1ZXN0CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIHByaW50UmVpc3N1ZVJlcXVlc3RVc2FnZSh2b2lkKSB7CisKKwljZXJyIDw8ICJcblVzYWdlIFJlaXNzdWVSZXF1ZXN0IFstLWhlbHB8LWhdIDxzZXJ2aWNlIFVSST4gW29wdGlvbnNdXG4iOworCWNlcnIgPDwgIiAgIC0taGVscC8taCAgICAgICAgICAgICAgICA6IHByaW50IHRoaXMgc2NyZWVuIGFuZCBleGl0XG5cbiI7CisJY2VyciA8PCAiICAgLS1hZGQtbmFtZS8tbiA8bmFtZT4gICAgIDogQWRkIG5hbWUgYXMgYSBLZXlJbmZvTmFtZVxuIjsKKwljZXJyIDw8ICIgICAtLWFkZC1vcGFxdWUvLW8gPGRhdGE+ICAgOiBBZGQgYW4gb3BhcXVlIGRhdGEgc3RyaW5nXG4iOworCWNlcnIgPDwgIiAgIC0tYWRkLXVzYWdlLXNpZy8tdXMgICAgICA6IEFkZCBTaWduYXR1cmUgS2V5IFVzYWdlXG4iOworCWNlcnIgPDwgIiAgIC0tYWRkLXVzYWdlLWV4Yy8tdXggICAgICA6IEFkZCBFeGNoYW5nZSBLZXkgVXNhZ2VcbiI7CisJY2VyciA8PCAiICAgLS1hZGQtdXNhZ2UtZW5jLy11ZSAgICAgIDogQWRkIEVuY3J5cHRpb24gS2V5IFVzYWdlXG4iOworCWNlcnIgPDwgIiAgIC0tYWRkLXVzZWtleXdpdGgvLXUgPEFwcGxpY2F0aW9uIFVSST4gPElkZW50aWZpZXI+XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEFkZCBhIFVzZUtleVdpdGggZWxlbWVudFxuIjsKKwljZXJyIDw8ICIgICAtLWFkZC1yZXNwb25kd2l0aC8tciA8SWRlbnRpZmllcj5cbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogQWRkIGEgUmVzcG9uZFdpdGggZWxlbWVudFxuIjsKKwljZXJyIDw8ICIgICAtLWFkZC1yZXNwb25zZW1lY2hhbmlzbS8tbSA8SWRlbnRpZmllcj5cbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogQWRkIGEgUmVzcG9uc2VNZWNoYW5pc20gZWxlbWVudFxuIjsKKwljZXJyIDw8ICIgICAtLXNpZ24tZHNhLy1zZCA8ZmlsZW5hbWU+IDxwYXNzcGhyYXNlPlxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgIDogU2lnbiB1c2luZyB0aGUgRFNBIGtleSBpbiBmaWxlIHByb3RlY3RlZCBieSBwYXNzcGhyYXNlXG4iOworCWNlcnIgPDwgIiAgIC0tYWRkLXZhbHVlLWRzYS8tdmQgPGZpbGVuYW1lPiA8cGFzc3BocmFzZT5cbiI7CisJY2VyciA8PCAiICAgICAgICAgICA6IEFkZCB0aGUgRFNBIGtleSBhcyBhIGtleXZhbHVlIChhbmQgZG8gcHJvb2Ytb2YtcG9zc2Vzc2lvbiBzaWcpXG4iOworCWNlcnIgPDwgIiAgIC0tYWRkLXZhbHVlLXJzYS8tdnIgPGZpbGVuYW1lPiA8cGFzc3BocmFzZT5cbiI7CisJY2VyciA8PCAiICAgICAgICAgICA6IEFkZCB0aGUgUlNBIGtleSBhcyBhIGtleXZhbHVlIChhbmQgZG8gcHJvb2Ytb2YtcG9zc2Vzc2lvbiBzaWcpXG4iOworCWNlcnIgPDwgIiAgIC0tYXV0aGVudGljYXRlLy1hIDxwaHJhc2U+XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgOiBVc2UgPHBocmFzZT4gYXMgdGhlIGF1dGhlbnRpY2F0aW9uIGtleSBmb3IgdGhlIHJlcXVlc3RcbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgIE5PVEUgLSBUaGlzIG11c3QgY29tZSAqYWZ0ZXIqIGFkZGluZyBvZiBLZXlJbmZvIGVsZW1lbnRzXG5cbiI7CisKK30KKworWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGUgKiBjcmVhdGVSZWlzc3VlUmVxdWVzdChYU0VDUHJvdmlkZXIgJnByb3YsIERPTURvY3VtZW50ICoqZG9jLCBpbnQgYXJnYywgY2hhciAqKiBhcmd2LCBpbnQgJnBhcmFtQ291bnQsIFhLTVNDb21wb3VuZFJlcXVlc3QgKiBjciA9IE5VTEwpIHsKKworCVhTRUNDcnlwdG9LZXkgKnByb29mT2ZQb3NzZXNzaW9uS2V5ID0gTlVMTDsKKwlzaWduYXR1cmVNZXRob2QgcHJvb2ZPZlBvc3Nlc3Npb25TbSA9IFNJR05BVFVSRV9EU0E7CisKKwlpZiAocGFyYW1Db3VudCA+PSBhcmdjIHx8IAorCQkoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0taGVscCIpID09IDApIHx8CisJCShfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLWgiKSA9PSAwKSkgeworCisJCXByaW50UmVpc3N1ZVJlcXVlc3RVc2FnZSgpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwkvKiBGaXJzdCBjcmVhdGUgdGhlIGJhc2ljIHJlcXVlc3QgKi8KKwlYS01TTWVzc2FnZUZhY3RvcnkgKiBmYWN0b3J5ID0gCisJCXByb3YuZ2V0WEtNU01lc3NhZ2VGYWN0b3J5KCk7CisJWEtNU1JlaXNzdWVSZXF1ZXN0ICogcnI7CisKKwlpZiAoY3IgPT0gTlVMTCkKKwkJcnIgPSBmYWN0b3J5LT5jcmVhdGVSZWlzc3VlUmVxdWVzdChNQUtFX1VOSUNPREVfU1RSSU5HKGFyZ3ZbcGFyYW1Db3VudCsrXSksIGRvYyk7CisJZWxzZQorCQlyciA9IGNyLT5jcmVhdGVSZWlzc3VlUmVxdWVzdChNQUtFX1VOSUNPREVfU1RSSU5HKGFyZ3ZbcGFyYW1Db3VudCsrXSkpOworCisJd2hpbGUgKHBhcmFtQ291bnQgPCBhcmdjICYmIF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLSIpICE9IDApIHsKKworCQlpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLW5hbWUiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItbiIpID09IDApIHsKKwkJCWlmICgrK3BhcmFtQ291bnQgPj0gYXJnYykgeworCQkJCXByaW50UmVpc3N1ZVJlcXVlc3RVc2FnZSgpOworCQkJCWRlbGV0ZSBycjsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKworCQkJWEtNU1JlaXNzdWVLZXlCaW5kaW5nICogcGtiID0gcnItPmdldFJlaXNzdWVLZXlCaW5kaW5nKCk7CisJCQlpZiAocGtiID09IE5VTEwpCisJCQkJcGtiID0gcnItPmFkZFJlaXNzdWVLZXlCaW5kaW5nKFhLTVNTdGF0dXM6OkluZGV0ZXJtaW5hdGUpOworCQkJcGtiLT5hcHBlbmRLZXlOYW1lKE1BS0VfVU5JQ09ERV9TVFJJTkcoYXJndltwYXJhbUNvdW50XSkpOworCQkJcGFyYW1Db3VudCsrOworCQl9CisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWFkZC1vcGFxdWUiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItbyIpID09IDApIHsKKwkJCWlmICgrK3BhcmFtQ291bnQgPj0gYXJnYykgeworCQkJCXByaW50UmVpc3N1ZVJlcXVlc3RVc2FnZSgpOworCQkJCWRlbGV0ZSBycjsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKwkJCXJyLT5hcHBlbmRPcGFxdWVDbGllbnREYXRhSXRlbShNQUtFX1VOSUNPREVfU1RSSU5HKGFyZ3ZbcGFyYW1Db3VudF0pKTsKKwkJCXBhcmFtQ291bnQrKzsKKwkJfQorCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1hZGQtcmVzcG9uZHdpdGgiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItciIpID09IDApIHsKKwkJCWlmICgrK3BhcmFtQ291bnQgPj0gYXJnYykgeworCQkJCXByaW50UmVpc3N1ZVJlcXVlc3RVc2FnZSgpOworCQkJCWRlbGV0ZSBycjsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKwkJCXJyLT5hcHBlbmRSZXNwb25kV2l0aEl0ZW0oTUFLRV9VTklDT0RFX1NUUklORyhhcmd2W3BhcmFtQ291bnRdKSk7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLXJlc3BvbnNlbWVjaGFuaXNtIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLW0iKSA9PSAwKSB7CisJCQlpZiAoKytwYXJhbUNvdW50ID49IGFyZ2MpIHsKKwkJCQlwcmludFJlaXNzdWVSZXF1ZXN0VXNhZ2UoKTsKKwkJCQlkZWxldGUgcnI7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisJCQlyci0+YXBwZW5kUmVzcG9uc2VNZWNoYW5pc21JdGVtKE1BS0VfVU5JQ09ERV9TVFJJTkcoYXJndltwYXJhbUNvdW50XSkpOworCQkJcGFyYW1Db3VudCsrOworCQl9CisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWFkZC11c2FnZS1zaWciKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItdXMiKSA9PSAwKSB7CisJCQlYS01TUmVpc3N1ZUtleUJpbmRpbmcgKiBwa2IgPSByci0+Z2V0UmVpc3N1ZUtleUJpbmRpbmcoKTsKKwkJCWlmIChwa2IgPT0gTlVMTCkKKwkJCQlwa2IgPSByci0+YWRkUmVpc3N1ZUtleUJpbmRpbmcoWEtNU1N0YXR1czo6SW5kZXRlcm1pbmF0ZSk7CisJCQlwa2ItPnNldFNpZ25hdHVyZUtleVVzYWdlKCk7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLXVzYWdlLWV4YyIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi11eCIpID09IDApIHsKKwkJCVhLTVNSZWlzc3VlS2V5QmluZGluZyAqIHBrYiA9IHJyLT5nZXRSZWlzc3VlS2V5QmluZGluZygpOworCQkJaWYgKHBrYiA9PSBOVUxMKQorCQkJCXBrYiA9IHJyLT5hZGRSZWlzc3VlS2V5QmluZGluZyhYS01TU3RhdHVzOjpJbmRldGVybWluYXRlKTsKKwkJCXBrYi0+c2V0RXhjaGFuZ2VLZXlVc2FnZSgpOworCQkJcGFyYW1Db3VudCsrOworCQl9CisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWFkZC11c2FnZS1lbmMiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItdWUiKSA9PSAwKSB7CisJCQlYS01TUmVpc3N1ZUtleUJpbmRpbmcgKiBwa2IgPSByci0+Z2V0UmVpc3N1ZUtleUJpbmRpbmcoKTsKKwkJCWlmIChwa2IgPT0gTlVMTCkKKwkJCQlwa2IgPSByci0+YWRkUmVpc3N1ZUtleUJpbmRpbmcoWEtNU1N0YXR1czo6SW5kZXRlcm1pbmF0ZSk7CisJCQlwa2ItPnNldEVuY3J5cHRpb25LZXlVc2FnZSgpOworCQkJcGFyYW1Db3VudCsrOworCQl9CisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWFkZC11c2VrZXl3aXRoIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXUiKSA9PSAwKSB7CisJCQlpZiAoKytwYXJhbUNvdW50ID49IGFyZ2MgKyAxKSB7CisJCQkJcHJpbnRSZWlzc3VlUmVxdWVzdFVzYWdlKCk7CisJCQkJZGVsZXRlIHJyOworCQkJCXJldHVybiBOVUxMOworCQkJfQorCQkJWEtNU1JlaXNzdWVLZXlCaW5kaW5nICpwa2IgPSByci0+Z2V0UmVpc3N1ZUtleUJpbmRpbmcoKTsKKwkJCWlmIChwa2IgPT0gTlVMTCkKKwkJCQlwa2IgPSByci0+YWRkUmVpc3N1ZUtleUJpbmRpbmcoWEtNU1N0YXR1czo6SW5kZXRlcm1pbmF0ZSk7CisKKwkJCXBrYi0+YXBwZW5kVXNlS2V5V2l0aEl0ZW0oTUFLRV9VTklDT0RFX1NUUklORyhhcmd2W3BhcmFtQ291bnRdKSwgTUFLRV9VTklDT0RFX1NUUklORyhhcmd2W3BhcmFtQ291bnQgKyAxXSkpOworCQkJcGFyYW1Db3VudCArPSAyOworCQl9CisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWF1dGhlbnRpY2F0ZSIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1hIikgPT0gMCkgeworCQkJaWYgKCsrcGFyYW1Db3VudCA+PSBhcmdjICsgMSkgeworCQkJCXByaW50UmVpc3N1ZVJlcXVlc3RVc2FnZSgpOworCQkJCWRlbGV0ZSBycjsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKworCQkJLy8gQ3JlYXRlIHRoZSBzaWduYXR1cmUKKworCQkJdW5zaWduZWQgY2hhciBrZXlCdWZbWFNFQ19NQVhfSEFTSF9TSVpFXTsKKwkJCWludCBsZW4gPSBDYWxjdWxhdGVYS01TQXV0aGVudGljYXRpb25LZXkoKHVuc2lnbmVkIGNoYXIgKikgYXJndltwYXJhbUNvdW50XSwgKGludCkgc3RybGVuKGFyZ3ZbcGFyYW1Db3VudF0pLCBrZXlCdWYsIFhTRUNfTUFYX0hBU0hfU0laRSk7CisJCQlpZiAobGVuIDw9IDApIHsKKwkJCQljb3V0IDw8ICJFcnJvciBjcmVhdGluZyBrZXkgZnJvbSBwYXNzIHBocmFzZSIgPDwgZW5kbDsKKwkJCQlkZWxldGUgcnI7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisKKwkJCVhTRUNDcnlwdG9LZXlITUFDICogayA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5rZXlITUFDKCk7CisJCQlrLT5zZXRLZXkoa2V5QnVmLCBsZW4pOworCisJCQkvLyBTZXQga2V5IGFuZCB2YWxpZGF0ZQorCQkJWEtNU0F1dGhlbnRpY2F0aW9uICogYSA9IHJyLT5hZGRBdXRoZW50aWNhdGlvbigpOworCQkJRFNJR1NpZ25hdHVyZSAqIHNpZyA9IGEtPmFkZEtleUJpbmRpbmdBdXRoZW50aWNhdGlvblNpZ25hdHVyZSgpOworCisJCQlzaWctPnNldFNpZ25pbmdLZXkoayk7CisJCQlzaWctPnNpZ24oKTsKKworCQkJcGFyYW1Db3VudCsrOworCisJCX0KKyNpZiBkZWZpbmVkIChIQVZFX09QRU5TU0wpCisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXNpZ24tZHNhIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXNkIikgPT0gMCB8fAorCQkJCV9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXNpZ24tcnNhIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXNyIikgPT0gMCkgeworCQkJaWYgKHBhcmFtQ291bnQgPj0gYXJnYyArIDIpIHsKKwkJCQlwcmludFJlaXNzdWVSZXF1ZXN0VXNhZ2UoKTsKKwkJCQlkZWxldGUgcnI7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisKKwkJCS8vIERTQSBvciBSU0EgT3BlblNTTCBLZXkKKwkJCS8vIEZvciBub3cganVzdCByZWFkIGEgcGFydGljdWxhciBmaWxlCisKKwkJCUJJTyAqIGJpb0tleTsKKwkJCWlmICgoYmlvS2V5ID0gQklPX25ldyhCSU9fc19maWxlKCkpKSA9PSBOVUxMKSB7CisKKwkJCQljZXJyIDw8ICJFcnJvciBvcGVuaW5nIHByaXZhdGUga2V5IGZpbGVcblxuIjsKKwkJCQlyZXR1cm4gTlVMTDsKKworCQkJfQorCisJCQlpZiAoQklPX3JlYWRfZmlsZW5hbWUoYmlvS2V5LCBhcmd2W3BhcmFtQ291bnQrMV0pIDw9IDApIHsKKworCQkJCWNlcnIgPDwgIkVycm9yIG9wZW5pbmcgcHJpdmF0ZSBrZXkgZmlsZSA6ICIgPDwgYXJndltwYXJhbUNvdW50KzFdIDw8IGVuZGw7CisJCQkJcmV0dXJuIE5VTEw7CisKKwkJCX0KKworCQkJRVZQX1BLRVkgKiBwa2V5OworCQkJcGtleSA9IFBFTV9yZWFkX2Jpb19Qcml2YXRlS2V5KGJpb0tleSxOVUxMLE5VTEwsYXJndltwYXJhbUNvdW50ICsgMl0pOworCisJCQlpZiAocGtleSA9PSBOVUxMKSB7CisKKwkJCQlCSU8gKiBiaW9fZXJyOworCQorCQkJCWlmICgoYmlvX2Vycj1CSU9fbmV3KEJJT19zX2ZpbGUoKSkpICE9IE5VTEwpCisJCQkJCUJJT19zZXRfZnAoYmlvX2VycixzdGRlcnIsQklPX05PQ0xPU0V8QklPX0ZQX1RFWFQpOworCQkJCWNlcnIgPDwgIkVycm9yIGxvYWRpbmcgcHJpdmF0ZSBrZXlcblxuIjsKKwkJCQlFUlJfcHJpbnRfZXJyb3JzKGJpb19lcnIpOworCQkJCXJldHVybiBOVUxMOworCisJCQl9CisJCQlYU0VDQ3J5cHRvS2V5ICprZXk7CisJCQlEU0lHU2lnbmF0dXJlICogc2lnOworCQkJaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXNpZ24tZHNhIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXNkIikgPT0gMCkgeworCisJCQkJLy8gQ2hlY2sgdHlwZSBpcyBjb3JyZWN0CisKKwkJCQlpZiAocGtleS0+dHlwZSAhPSBFVlBfUEtFWV9EU0EpIHsKKwkJCQkJY2VyciA8PCAiRFNBIEtleSByZXF1ZXN0ZWQsIGJ1dCBPcGVuU1NMIGxvYWRlZCBzb21ldGhpbmcgZWxzZVxuIjsKKwkJCQkJcmV0dXJuIE5VTEw7CisJCQkJfQorCisJCQkJc2lnID0gcnItPmFkZFNpZ25hdHVyZShDQU5PTl9DMTROX05PQywgU0lHTkFUVVJFX0RTQSwgSEFTSF9TSEExKTsKKwkJCQkvLyBDcmVhdGUgdGhlIFhTRUMgT3BlblNTTCBpbnRlcmZhY2UKKwkJCQlrZXkgPSBuZXcgT3BlblNTTENyeXB0b0tleURTQShwa2V5KTsKKworCQkJCVhNTENoICogUCA9IEJOMmI2NChwa2V5LT5wa2V5LmRzYS0+cCk7CisJCQkJWE1MQ2ggKiBRID0gQk4yYjY0KHBrZXktPnBrZXkuZHNhLT5xKTsKKwkJCQlYTUxDaCAqIEcgPSBCTjJiNjQocGtleS0+cGtleS5kc2EtPmcpOworCQkJCVhNTENoICogWSA9IEJOMmI2NChwa2V5LT5wa2V5LmRzYS0+cHViX2tleSk7CisKKwkJCQlzaWctPmFwcGVuZERTQUtleVZhbHVlKFAsUSxHLFkpOworCisJCQkJWFNFQ19SRUxFQVNFX1hNTENIKFApOworCQkJCVhTRUNfUkVMRUFTRV9YTUxDSChRKTsKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0goRyk7CisJCQkJWFNFQ19SRUxFQVNFX1hNTENIKFkpOworCQkJfQorCQkJZWxzZSB7CisJCQkJaWYgKHBrZXktPnR5cGUgIT0gRVZQX1BLRVlfUlNBKSB7CisJCQkJCWNlcnIgPDwgIlJTQSBLZXkgcmVxdWVzdGVkLCBidXQgT3BlblNTTCBsb2FkZWQgc29tZXRoaW5nIGVsc2VcbiI7CisJCQkJCWV4aXQgKDEpOworCQkJCX0KKwkJCQlzaWcgPSByci0+YWRkU2lnbmF0dXJlKENBTk9OX0MxNE5fTk9DLCBTSUdOQVRVUkVfUlNBLCBIQVNIX1NIQTEpOworCQkJCWtleSA9IG5ldyBPcGVuU1NMQ3J5cHRvS2V5UlNBKHBrZXkpOworCisJCQkJWE1MQ2ggKiBtb2QgPSBCTjJiNjQocGtleS0+cGtleS5yc2EtPm4pOworCQkJCVhNTENoICogZXhwID0gQk4yYjY0KHBrZXktPnBrZXkucnNhLT5lKTsKKwkJCQlzaWctPmFwcGVuZFJTQUtleVZhbHVlKG1vZCwgZXhwKTsKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0gobW9kKTsKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0goZXhwKTsKKworCQkJfQorCisJCQlzaWctPnNldFNpZ25pbmdLZXkoa2V5KTsKKwkJCXNpZy0+c2lnbigpOworCisJCQlFVlBfUEtFWV9mcmVlKHBrZXkpOworCQkJQklPX2ZyZWUoYmlvS2V5KTsKKworCQkJcGFyYW1Db3VudCArPSAzOworCisJCQkKKwkJfSAvKiBhcmd2WzFdID0gInNpZ24gZHNhL3JzYSIgKi8KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLXZhbHVlLWRzYSIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi12ZCIpID09IDAgfHwKKwkJCQlfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1hZGQtdmFsdWUtcnNhIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXZyIikgPT0gMCkgeworCQkJaWYgKHBhcmFtQ291bnQgPj0gYXJnYyArIDIpIHsKKwkJCQlwcmludFJlaXNzdWVSZXF1ZXN0VXNhZ2UoKTsKKwkJCQlkZWxldGUgcnI7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisKKwkJCS8vIERTQSBvciBSU0EgT3BlblNTTCBLZXkKKwkJCS8vIEZvciBub3cganVzdCByZWFkIGEgcGFydGljdWxhciBmaWxlCisKKwkJCUJJTyAqIGJpb0tleTsKKwkJCWlmICgoYmlvS2V5ID0gQklPX25ldyhCSU9fc19maWxlKCkpKSA9PSBOVUxMKSB7CisKKwkJCQljZXJyIDw8ICJFcnJvciBvcGVuaW5nIHByaXZhdGUga2V5IGZpbGVcblxuIjsKKwkJCQlyZXR1cm4gTlVMTDsKKworCQkJfQorCisJCQlpZiAoQklPX3JlYWRfZmlsZW5hbWUoYmlvS2V5LCBhcmd2W3BhcmFtQ291bnQrMV0pIDw9IDApIHsKKworCQkJCWNlcnIgPDwgIkVycm9yIG9wZW5pbmcgcHJpdmF0ZSBrZXkgZmlsZSA6ICIgPDwgYXJndltwYXJhbUNvdW50KzFdIDw8IGVuZGw7CisJCQkJcmV0dXJuIE5VTEw7CisKKwkJCX0KKworCQkJRVZQX1BLRVkgKiBwa2V5OworCQkJcGtleSA9IFBFTV9yZWFkX2Jpb19Qcml2YXRlS2V5KGJpb0tleSxOVUxMLE5VTEwsYXJndltwYXJhbUNvdW50ICsgMl0pOworCisJCQlpZiAocGtleSA9PSBOVUxMKSB7CisKKwkJCQlCSU8gKiBiaW9fZXJyOworCQorCQkJCWlmICgoYmlvX2Vycj1CSU9fbmV3KEJJT19zX2ZpbGUoKSkpICE9IE5VTEwpCisJCQkJCUJJT19zZXRfZnAoYmlvX2VycixzdGRlcnIsQklPX05PQ0xPU0V8QklPX0ZQX1RFWFQpOworCQkJCWNlcnIgPDwgIkVycm9yIGxvYWRpbmcgcHJpdmF0ZSBrZXlcblxuIjsKKwkJCQlFUlJfcHJpbnRfZXJyb3JzKGJpb19lcnIpOworCQkJCXJldHVybiBOVUxMOworCisJCQl9CisKKwkJCVhLTVNSZWlzc3VlS2V5QmluZGluZyAqIHBrYiA9IHJyLT5nZXRSZWlzc3VlS2V5QmluZGluZygpOworCQkJaWYgKHBrYiA9PSBOVUxMKQorCQkJCXBrYiA9IHJyLT5hZGRSZWlzc3VlS2V5QmluZGluZyhYS01TU3RhdHVzOjpJbmRldGVybWluYXRlKTsKKworCisJCQlpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLXZhbHVlLWRzYSIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi12ZCIpID09IDApIHsKKworCQkJCS8vIENoZWNrIHR5cGUgaXMgY29ycmVjdAorCisJCQkJaWYgKHBrZXktPnR5cGUgIT0gRVZQX1BLRVlfRFNBKSB7CisJCQkJCWNlcnIgPDwgIkRTQSBLZXkgcmVxdWVzdGVkLCBidXQgT3BlblNTTCBsb2FkZWQgc29tZXRoaW5nIGVsc2VcbiI7CisJCQkJCXJldHVybiBOVUxMOworCQkJCX0KKworCQkJCXByb29mT2ZQb3NzZXNzaW9uS2V5ID0gbmV3IE9wZW5TU0xDcnlwdG9LZXlEU0EocGtleSk7CisJCQkJcHJvb2ZPZlBvc3Nlc3Npb25TbSA9IFNJR05BVFVSRV9EU0E7CisKKwkJCQlYTUxDaCAqIFAgPSBCTjJiNjQocGtleS0+cGtleS5kc2EtPnApOworCQkJCVhNTENoICogUSA9IEJOMmI2NChwa2V5LT5wa2V5LmRzYS0+cSk7CisJCQkJWE1MQ2ggKiBHID0gQk4yYjY0KHBrZXktPnBrZXkuZHNhLT5nKTsKKwkJCQlYTUxDaCAqIFkgPSBCTjJiNjQocGtleS0+cGtleS5kc2EtPnB1Yl9rZXkpOworCisJCQkJcGtiLT5hcHBlbmREU0FLZXlWYWx1ZShQLFEsRyxZKTsKKworCQkJCVhTRUNfUkVMRUFTRV9YTUxDSChQKTsKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0goUSk7CisJCQkJWFNFQ19SRUxFQVNFX1hNTENIKEcpOworCQkJCVhTRUNfUkVMRUFTRV9YTUxDSChZKTsKKwkJCX0KKwkJCWVsc2UgeworCQkJCWlmIChwa2V5LT50eXBlICE9IEVWUF9QS0VZX1JTQSkgeworCQkJCQljZXJyIDw8ICJSU0EgS2V5IHJlcXVlc3RlZCwgYnV0IE9wZW5TU0wgbG9hZGVkIHNvbWV0aGluZyBlbHNlXG4iOworCQkJCQlleGl0ICgxKTsKKwkJCQl9CisKKwkJCQlwcm9vZk9mUG9zc2Vzc2lvbktleSA9IG5ldyBPcGVuU1NMQ3J5cHRvS2V5UlNBKHBrZXkpOworCQkJCXByb29mT2ZQb3NzZXNzaW9uU20gPSBTSUdOQVRVUkVfUlNBOworCisJCQkJWE1MQ2ggKiBtb2QgPSBCTjJiNjQocGtleS0+cGtleS5yc2EtPm4pOworCQkJCVhNTENoICogZXhwID0gQk4yYjY0KHBrZXktPnBrZXkucnNhLT5lKTsKKwkJCQlwa2ItPmFwcGVuZFJTQUtleVZhbHVlKG1vZCwgZXhwKTsKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0gobW9kKTsKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0goZXhwKTsKKworCQkJfQorCisJCQlFVlBfUEtFWV9mcmVlKHBrZXkpOworCQkJQklPX2ZyZWUoYmlvS2V5KTsKKworCQkJcGFyYW1Db3VudCArPSAzOworCisJCQkKKwkJfSAvKiBhcmd2WzFdID0gInZhbHVlIGRzYS9yc2EiICovCisKKyNlbmRpZgorCQllbHNlIHsKKwkJCXByaW50UmVpc3N1ZVJlcXVlc3RVc2FnZSgpOworCQkJZGVsZXRlIHJyOworCQkJKCpkb2MpLT5yZWxlYXNlKCk7CisJCQlyZXR1cm4gTlVMTDsKKwkJfQorCX0KKworCWlmIChwcm9vZk9mUG9zc2Vzc2lvbktleSAhPSBOVUxMKSB7CisKKwkJLy8gU2V0IHVwIHRoZSBwcm9vZiBvZiBwb3NzZXNzaW9uCisJCURTSUdTaWduYXR1cmUgKiBzID0gCisJCQlyci0+YWRkUHJvb2ZPZlBvc3Nlc3Npb25TaWduYXR1cmUoQ0FOT05fQzE0TkVfTk9DLCBwcm9vZk9mUG9zc2Vzc2lvblNtKTsKKworCQlzLT5zZXRTaWduaW5nS2V5KHByb29mT2ZQb3NzZXNzaW9uS2V5KTsKKwkJcy0+c2lnbigpOworCisJfQorCisJcmV0dXJuIHJyOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENyZWF0ZSBhIFJlY292ZXJSZXF1ZXN0CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIHByaW50UmVjb3ZlclJlcXVlc3RVc2FnZSh2b2lkKSB7CisKKwljZXJyIDw8ICJcblVzYWdlIFJlY292ZXJSZXF1ZXN0IFstLWhlbHB8LWhdIDxzZXJ2aWNlIFVSST4gW29wdGlvbnNdXG4iOworCWNlcnIgPDwgIiAgIC0taGVscC8taCAgICAgICAgICAgICAgICA6IHByaW50IHRoaXMgc2NyZWVuIGFuZCBleGl0XG5cbiI7CisJY2VyciA8PCAiICAgLS1hZGQtbmFtZS8tbiA8bmFtZT4gICAgIDogQWRkIG5hbWUgYXMgYSBLZXlJbmZvTmFtZVxuIjsKKwljZXJyIDw8ICIgICAtLWFkZC1vcGFxdWUvLW8gPGRhdGE+ICAgOiBBZGQgYW4gb3BhcXVlIGRhdGEgc3RyaW5nXG4iOworCWNlcnIgPDwgIiAgIC0tYWRkLXVzYWdlLXNpZy8tdXMgICAgICA6IEFkZCBTaWduYXR1cmUgS2V5IFVzYWdlXG4iOworCWNlcnIgPDwgIiAgIC0tYWRkLXVzYWdlLWV4Yy8tdXggICAgICA6IEFkZCBFeGNoYW5nZSBLZXkgVXNhZ2VcbiI7CisJY2VyciA8PCAiICAgLS1hZGQtdXNhZ2UtZW5jLy11ZSAgICAgIDogQWRkIEVuY3J5cHRpb24gS2V5IFVzYWdlXG4iOworCWNlcnIgPDwgIiAgIC0tYWRkLXVzZWtleXdpdGgvLXUgPEFwcGxpY2F0aW9uIFVSST4gPElkZW50aWZpZXI+XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEFkZCBhIFVzZUtleVdpdGggZWxlbWVudFxuIjsKKwljZXJyIDw8ICIgICAtLWFkZC1yZXNwb25kd2l0aC8tciA8SWRlbnRpZmllcj5cbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogQWRkIGEgUmVzcG9uZFdpdGggZWxlbWVudFxuIjsKKwljZXJyIDw8ICIgICAtLWFkZC1yZXNwb25zZW1lY2hhbmlzbS8tbSA8SWRlbnRpZmllcj5cbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogQWRkIGEgUmVzcG9uc2VNZWNoYW5pc20gZWxlbWVudFxuIjsKKwljZXJyIDw8ICIgICAtLXNpZ24tZHNhLy1zZCA8ZmlsZW5hbWU+IDxwYXNzcGhyYXNlPlxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgIDogU2lnbiB1c2luZyB0aGUgRFNBIGtleSBpbiBmaWxlIHByb3RlY3RlZCBieSBwYXNzcGhyYXNlXG4iOworCWNlcnIgPDwgIiAgIC0tYWRkLXZhbHVlLWRzYS8tdmQgPGZpbGVuYW1lPiA8cGFzc3BocmFzZT5cbiI7CisJY2VyciA8PCAiICAgICAgICAgICA6IEFkZCB0aGUgRFNBIGtleSBhcyBhIGtleXZhbHVlXG4iOworCWNlcnIgPDwgIiAgIC0tYWRkLXZhbHVlLXJzYS8tdnIgPGZpbGVuYW1lPiA8cGFzc3BocmFzZT5cbiI7CisJY2VyciA8PCAiICAgICAgICAgICA6IEFkZCB0aGUgUlNBIGtleSBhcyBhIGtleXZhbHVlXG4iOworCWNlcnIgPDwgIiAgIC0ta2VrLy1rIDxwaHJhc2U+ICAgICAgICA6IEtleSBwaHJhc2UgdG8gdXNlIGZvciBQcml2YXRlS2V5IGRlY3J5cHRpb25cbiI7CisjaWYgZGVmaW5lZCAoSEFWRV9PUEVOU1NMKQorCWNlcnIgPDwgIiAgIC0tb3V0cHV0LXByaXZhdGUta2V5Ly1wIDxmaWxlPiA8cGFzcyBwaHJhc2U+XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFdyaXRlIFBFTSBlbmNvZGVkIHByaXZhdGUga2V5IHRvIGZpbGVcbiI7CisjZW5kaWYJCisJY2VyciA8PCAiICAgLS1hdXRoZW50aWNhdGUvLWEgPHBocmFzZT5cbiI7CisJY2VyciA8PCAiICAgICAgICAgICA6IFVzZSA8cGhyYXNlPiBhcyB0aGUgYXV0aGVudGljYXRpb24ga2V5IGZvciB0aGUgcmVxdWVzdFxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgICAgTk9URSAtIFRoaXMgbXVzdCBjb21lICphZnRlciogYWRkaW5nIG9mIEtleUluZm8gZWxlbWVudHNcblxuIjsKKworfQorCitYS01TTWVzc2FnZUFic3RyYWN0VHlwZSAqIGNyZWF0ZVJlY292ZXJSZXF1ZXN0KFhTRUNQcm92aWRlciAmcHJvdiwgRE9NRG9jdW1lbnQgKipkb2MsIGludCBhcmdjLCBjaGFyICoqIGFyZ3YsIGludCAmcGFyYW1Db3VudCwgWEtNU0NvbXBvdW5kUmVxdWVzdCAqIGNyID0gTlVMTCkgeworCisJaWYgKHBhcmFtQ291bnQgPj0gYXJnYyB8fCAKKwkJKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWhlbHAiKSA9PSAwKSB8fAorCQkoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1oIikgPT0gMCkpIHsKKworCQlwcmludFJlZ2lzdGVyUmVxdWVzdFVzYWdlKCk7CisJCXJldHVybiBOVUxMOworCX0KKworCS8qIEZpcnN0IGNyZWF0ZSB0aGUgYmFzaWMgcmVxdWVzdCAqLworCVhLTVNNZXNzYWdlRmFjdG9yeSAqIGZhY3RvcnkgPSAKKwkJcHJvdi5nZXRYS01TTWVzc2FnZUZhY3RvcnkoKTsKKwlYS01TUmVjb3ZlclJlcXVlc3QgKiBycjsKKworCWlmIChjciA9PSBOVUxMKQorCQlyciA9IGZhY3RvcnktPmNyZWF0ZVJlY292ZXJSZXF1ZXN0KE1BS0VfVU5JQ09ERV9TVFJJTkcoYXJndltwYXJhbUNvdW50KytdKSwgZG9jKTsKKwllbHNlCisJCXJyID0gY3ItPmNyZWF0ZVJlY292ZXJSZXF1ZXN0KE1BS0VfVU5JQ09ERV9TVFJJTkcoYXJndltwYXJhbUNvdW50KytdKSk7CisKKwl3aGlsZSAocGFyYW1Db3VudCA8IGFyZ2MgJiYgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tIikgIT0gMCkgeworCisJCWlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1hZGQtbmFtZSIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1uIikgPT0gMCkgeworCQkJaWYgKCsrcGFyYW1Db3VudCA+PSBhcmdjKSB7CisJCQkJcHJpbnRSZWNvdmVyUmVxdWVzdFVzYWdlKCk7CisJCQkJZGVsZXRlIHJyOworCQkJCXJldHVybiBOVUxMOworCQkJfQorCisJCQlYS01TUmVjb3ZlcktleUJpbmRpbmcgKiBya2IgPSByci0+Z2V0UmVjb3ZlcktleUJpbmRpbmcoKTsKKwkJCWlmIChya2IgPT0gTlVMTCkKKwkJCQlya2IgPSByci0+YWRkUmVjb3ZlcktleUJpbmRpbmcoWEtNU1N0YXR1czo6SW5kZXRlcm1pbmF0ZSk7CisJCQlya2ItPmFwcGVuZEtleU5hbWUoTUFLRV9VTklDT0RFX1NUUklORyhhcmd2W3BhcmFtQ291bnRdKSk7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLW9wYXF1ZSIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1vIikgPT0gMCkgeworCQkJaWYgKCsrcGFyYW1Db3VudCA+PSBhcmdjKSB7CisJCQkJcHJpbnRSZWNvdmVyUmVxdWVzdFVzYWdlKCk7CisJCQkJZGVsZXRlIHJyOworCQkJCXJldHVybiBOVUxMOworCQkJfQorCQkJcnItPmFwcGVuZE9wYXF1ZUNsaWVudERhdGFJdGVtKE1BS0VfVU5JQ09ERV9TVFJJTkcoYXJndltwYXJhbUNvdW50XSkpOworCQkJcGFyYW1Db3VudCsrOworCQl9CisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWFkZC1yZXNwb25kd2l0aCIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1yIikgPT0gMCkgeworCQkJaWYgKCsrcGFyYW1Db3VudCA+PSBhcmdjKSB7CisJCQkJcHJpbnRSZWNvdmVyUmVxdWVzdFVzYWdlKCk7CisJCQkJZGVsZXRlIHJyOworCQkJCXJldHVybiBOVUxMOworCQkJfQorCQkJcnItPmFwcGVuZFJlc3BvbmRXaXRoSXRlbShNQUtFX1VOSUNPREVfU1RSSU5HKGFyZ3ZbcGFyYW1Db3VudF0pKTsKKwkJCXBhcmFtQ291bnQrKzsKKwkJfQorCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1hZGQtcmVzcG9uc2VtZWNoYW5pc20iKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItbSIpID09IDApIHsKKwkJCWlmICgrK3BhcmFtQ291bnQgPj0gYXJnYykgeworCQkJCXByaW50UmVjb3ZlclJlcXVlc3RVc2FnZSgpOworCQkJCWRlbGV0ZSBycjsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKwkJCXJyLT5hcHBlbmRSZXNwb25zZU1lY2hhbmlzbUl0ZW0oTUFLRV9VTklDT0RFX1NUUklORyhhcmd2W3BhcmFtQ291bnRdKSk7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLXVzYWdlLXNpZyIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi11cyIpID09IDApIHsKKwkJCVhLTVNSZWNvdmVyS2V5QmluZGluZyAqIHJrYiA9IHJyLT5nZXRSZWNvdmVyS2V5QmluZGluZygpOworCQkJaWYgKHJrYiA9PSBOVUxMKQorCQkJCXJrYiA9IHJyLT5hZGRSZWNvdmVyS2V5QmluZGluZyhYS01TU3RhdHVzOjpJbmRldGVybWluYXRlKTsKKwkJCXJrYi0+c2V0U2lnbmF0dXJlS2V5VXNhZ2UoKTsKKwkJCXBhcmFtQ291bnQrKzsKKwkJfQorCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1hZGQtdXNhZ2UtZXhjIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXV4IikgPT0gMCkgeworCQkJWEtNU1JlY292ZXJLZXlCaW5kaW5nICogcmtiID0gcnItPmdldFJlY292ZXJLZXlCaW5kaW5nKCk7CisJCQlpZiAocmtiID09IE5VTEwpCisJCQkJcmtiID0gcnItPmFkZFJlY292ZXJLZXlCaW5kaW5nKFhLTVNTdGF0dXM6OkluZGV0ZXJtaW5hdGUpOworCQkJcmtiLT5zZXRFeGNoYW5nZUtleVVzYWdlKCk7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLXVzYWdlLWVuYyIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi11ZSIpID09IDApIHsKKwkJCVhLTVNSZWNvdmVyS2V5QmluZGluZyAqIHJrYiA9IHJyLT5nZXRSZWNvdmVyS2V5QmluZGluZygpOworCQkJaWYgKHJrYiA9PSBOVUxMKQorCQkJCXJrYiA9IHJyLT5hZGRSZWNvdmVyS2V5QmluZGluZyhYS01TU3RhdHVzOjpJbmRldGVybWluYXRlKTsKKwkJCXJrYi0+c2V0RW5jcnlwdGlvbktleVVzYWdlKCk7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLXVzZWtleXdpdGgiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItdSIpID09IDApIHsKKwkJCWlmICgrK3BhcmFtQ291bnQgPj0gYXJnYyArIDEpIHsKKwkJCQlwcmludFJlY292ZXJSZXF1ZXN0VXNhZ2UoKTsKKwkJCQlkZWxldGUgcnI7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisJCQlYS01TUmVjb3ZlcktleUJpbmRpbmcgKnJrYiA9IHJyLT5nZXRSZWNvdmVyS2V5QmluZGluZygpOworCQkJaWYgKHJrYiA9PSBOVUxMKQorCQkJCXJrYiA9IHJyLT5hZGRSZWNvdmVyS2V5QmluZGluZyhYS01TU3RhdHVzOjpJbmRldGVybWluYXRlKTsKKworCQkJcmtiLT5hcHBlbmRVc2VLZXlXaXRoSXRlbShNQUtFX1VOSUNPREVfU1RSSU5HKGFyZ3ZbcGFyYW1Db3VudF0pLCBNQUtFX1VOSUNPREVfU1RSSU5HKGFyZ3ZbcGFyYW1Db3VudCArIDFdKSk7CisJCQlwYXJhbUNvdW50ICs9IDI7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0ta2VrIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLWsiKSA9PSAwKSB7CisJCQlpZiAoKytwYXJhbUNvdW50ID49IGFyZ2MpIHsKKwkJCQlwcmludFJlY292ZXJSZXF1ZXN0VXNhZ2UoKTsKKwkJCQlkZWxldGUgcnI7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisJCQlnX2F1dGhQYXNzUGhyYXNlID0gYXJndltwYXJhbUNvdW50KytdOworCQl9CisjaWYgZGVmaW5lZCAoSEFWRV9PUEVOU1NMKQorCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1vdXRwdXQtcHJpdmF0ZS1rZXkiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItcCIpID09IDApIHsKKwkJCWlmIChwYXJhbUNvdW50ID49IGFyZ2MgKyAyKSB7CisJCQkJcHJpbnRSZWNvdmVyUmVxdWVzdFVzYWdlKCk7CisJCQkJZGVsZXRlIHJyOworCQkJCXJldHVybiBOVUxMOworCQkJfQorCQkJKytwYXJhbUNvdW50OworCQkJZ19wcml2YXRlS2V5RmlsZSA9IGFyZ3ZbcGFyYW1Db3VudCsrXTsKKwkJCWdfcHJpdmF0ZUtleVBhc3NQaHJhc2UgPSBhcmd2W3BhcmFtQ291bnQrK107CisJCX0KKyNlbmRpZgkJCisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWF1dGhlbnRpY2F0ZSIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1hIikgPT0gMCkgeworCQkJaWYgKCsrcGFyYW1Db3VudCA+PSBhcmdjICsgMSkgeworCQkJCXByaW50UmVjb3ZlclJlcXVlc3RVc2FnZSgpOworCQkJCWRlbGV0ZSBycjsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKworCQkJLy8gQ3JlYXRlIHRoZSBzaWduYXR1cmUKKworCQkJdW5zaWduZWQgY2hhciBrZXlCdWZbWFNFQ19NQVhfSEFTSF9TSVpFXTsKKwkJCWludCBsZW4gPSBDYWxjdWxhdGVYS01TQXV0aGVudGljYXRpb25LZXkoKHVuc2lnbmVkIGNoYXIgKikgYXJndltwYXJhbUNvdW50XSwgKGludCkgc3RybGVuKGFyZ3ZbcGFyYW1Db3VudF0pLCBrZXlCdWYsIFhTRUNfTUFYX0hBU0hfU0laRSk7CisJCQlpZiAobGVuIDw9IDApIHsKKwkJCQljb3V0IDw8ICJFcnJvciBjcmVhdGluZyBrZXkgZnJvbSBwYXNzIHBocmFzZSIgPDwgZW5kbDsKKwkJCQlkZWxldGUgcnI7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisKKwkJCVhTRUNDcnlwdG9LZXlITUFDICogayA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5rZXlITUFDKCk7CisJCQlrLT5zZXRLZXkoa2V5QnVmLCBsZW4pOworCisJCQkvLyBTZXQga2V5IGFuZCB2YWxpZGF0ZQorCQkJWEtNU0F1dGhlbnRpY2F0aW9uICogYSA9IHJyLT5hZGRBdXRoZW50aWNhdGlvbigpOworCQkJRFNJR1NpZ25hdHVyZSAqIHNpZyA9IGEtPmFkZEtleUJpbmRpbmdBdXRoZW50aWNhdGlvblNpZ25hdHVyZSgpOworCisJCQlzaWctPnNldFNpZ25pbmdLZXkoayk7CisJCQlzaWctPnNpZ24oKTsKKworCQkJcGFyYW1Db3VudCsrOworCisJCX0KKyNpZiBkZWZpbmVkIChIQVZFX09QRU5TU0wpCisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXNpZ24tZHNhIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXNkIikgPT0gMCB8fAorCQkJCV9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXNpZ24tcnNhIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXNyIikgPT0gMCkgeworCQkJaWYgKHBhcmFtQ291bnQgPj0gYXJnYyArIDIpIHsKKwkJCQlwcmludFJlZ2lzdGVyUmVxdWVzdFVzYWdlKCk7CisJCQkJZGVsZXRlIHJyOworCQkJCXJldHVybiBOVUxMOworCQkJfQorCisJCQkvLyBEU0Egb3IgUlNBIE9wZW5TU0wgS2V5CisJCQkvLyBGb3Igbm93IGp1c3QgcmVhZCBhIHBhcnRpY3VsYXIgZmlsZQorCisJCQlCSU8gKiBiaW9LZXk7CisJCQlpZiAoKGJpb0tleSA9IEJJT19uZXcoQklPX3NfZmlsZSgpKSkgPT0gTlVMTCkgeworCisJCQkJY2VyciA8PCAiRXJyb3Igb3BlbmluZyBwcml2YXRlIGtleSBmaWxlXG5cbiI7CisJCQkJcmV0dXJuIE5VTEw7CisKKwkJCX0KKworCQkJaWYgKEJJT19yZWFkX2ZpbGVuYW1lKGJpb0tleSwgYXJndltwYXJhbUNvdW50KzFdKSA8PSAwKSB7CisKKwkJCQljZXJyIDw8ICJFcnJvciBvcGVuaW5nIHByaXZhdGUga2V5IGZpbGUgOiAiIDw8IGFyZ3ZbcGFyYW1Db3VudCsxXSA8PCBlbmRsOworCQkJCXJldHVybiBOVUxMOworCisJCQl9CisKKwkJCUVWUF9QS0VZICogcGtleTsKKwkJCXBrZXkgPSBQRU1fcmVhZF9iaW9fUHJpdmF0ZUtleShiaW9LZXksTlVMTCxOVUxMLGFyZ3ZbcGFyYW1Db3VudCArIDJdKTsKKworCQkJaWYgKHBrZXkgPT0gTlVMTCkgeworCisJCQkJQklPICogYmlvX2VycjsKKwkKKwkJCQlpZiAoKGJpb19lcnI9QklPX25ldyhCSU9fc19maWxlKCkpKSAhPSBOVUxMKQorCQkJCQlCSU9fc2V0X2ZwKGJpb19lcnIsc3RkZXJyLEJJT19OT0NMT1NFfEJJT19GUF9URVhUKTsKKwkJCQljZXJyIDw8ICJFcnJvciBsb2FkaW5nIHByaXZhdGUga2V5XG5cbiI7CisJCQkJRVJSX3ByaW50X2Vycm9ycyhiaW9fZXJyKTsKKwkJCQlyZXR1cm4gTlVMTDsKKworCQkJfQorCQkJWFNFQ0NyeXB0b0tleSAqa2V5OworCQkJRFNJR1NpZ25hdHVyZSAqIHNpZzsKKwkJCWlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1zaWduLWRzYSIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1zZCIpID09IDApIHsKKworCQkJCS8vIENoZWNrIHR5cGUgaXMgY29ycmVjdAorCisJCQkJaWYgKHBrZXktPnR5cGUgIT0gRVZQX1BLRVlfRFNBKSB7CisJCQkJCWNlcnIgPDwgIkRTQSBLZXkgcmVxdWVzdGVkLCBidXQgT3BlblNTTCBsb2FkZWQgc29tZXRoaW5nIGVsc2VcbiI7CisJCQkJCXJldHVybiBOVUxMOworCQkJCX0KKworCQkJCXNpZyA9IHJyLT5hZGRTaWduYXR1cmUoQ0FOT05fQzE0Tl9OT0MsIFNJR05BVFVSRV9EU0EsIEhBU0hfU0hBMSk7CisJCQkJLy8gQ3JlYXRlIHRoZSBYU0VDIE9wZW5TU0wgaW50ZXJmYWNlCisJCQkJa2V5ID0gbmV3IE9wZW5TU0xDcnlwdG9LZXlEU0EocGtleSk7CisKKwkJCQlYTUxDaCAqIFAgPSBCTjJiNjQocGtleS0+cGtleS5kc2EtPnApOworCQkJCVhNTENoICogUSA9IEJOMmI2NChwa2V5LT5wa2V5LmRzYS0+cSk7CisJCQkJWE1MQ2ggKiBHID0gQk4yYjY0KHBrZXktPnBrZXkuZHNhLT5nKTsKKwkJCQlYTUxDaCAqIFkgPSBCTjJiNjQocGtleS0+cGtleS5kc2EtPnB1Yl9rZXkpOworCisJCQkJc2lnLT5hcHBlbmREU0FLZXlWYWx1ZShQLFEsRyxZKTsKKworCQkJCVhTRUNfUkVMRUFTRV9YTUxDSChQKTsKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0goUSk7CisJCQkJWFNFQ19SRUxFQVNFX1hNTENIKEcpOworCQkJCVhTRUNfUkVMRUFTRV9YTUxDSChZKTsKKwkJCX0KKwkJCWVsc2UgeworCQkJCWlmIChwa2V5LT50eXBlICE9IEVWUF9QS0VZX1JTQSkgeworCQkJCQljZXJyIDw8ICJSU0EgS2V5IHJlcXVlc3RlZCwgYnV0IE9wZW5TU0wgbG9hZGVkIHNvbWV0aGluZyBlbHNlXG4iOworCQkJCQlleGl0ICgxKTsKKwkJCQl9CisJCQkJc2lnID0gcnItPmFkZFNpZ25hdHVyZShDQU5PTl9DMTROX05PQywgU0lHTkFUVVJFX1JTQSwgSEFTSF9TSEExKTsKKwkJCQlrZXkgPSBuZXcgT3BlblNTTENyeXB0b0tleVJTQShwa2V5KTsKKworCQkJCVhNTENoICogbW9kID0gQk4yYjY0KHBrZXktPnBrZXkucnNhLT5uKTsKKwkJCQlYTUxDaCAqIGV4cCA9IEJOMmI2NChwa2V5LT5wa2V5LnJzYS0+ZSk7CisJCQkJc2lnLT5hcHBlbmRSU0FLZXlWYWx1ZShtb2QsIGV4cCk7CisJCQkJWFNFQ19SRUxFQVNFX1hNTENIKG1vZCk7CisJCQkJWFNFQ19SRUxFQVNFX1hNTENIKGV4cCk7CisKKwkJCX0KKworCQkJc2lnLT5zZXRTaWduaW5nS2V5KGtleSk7CisJCQlzaWctPnNpZ24oKTsKKworCQkJRVZQX1BLRVlfZnJlZShwa2V5KTsKKwkJCUJJT19mcmVlKGJpb0tleSk7CisKKwkJCXBhcmFtQ291bnQgKz0gMzsKKworCQkJCisJCX0gLyogYXJndlsxXSA9ICJzaWduIGRzYS9yc2EiICovCisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWFkZC12YWx1ZS1kc2EiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItdmQiKSA9PSAwIHx8CisJCQkJX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tYWRkLXZhbHVlLXJzYSIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi12ciIpID09IDApIHsKKwkJCWlmIChwYXJhbUNvdW50ID49IGFyZ2MgKyAyKSB7CisJCQkJcHJpbnRSZWdpc3RlclJlcXVlc3RVc2FnZSgpOworCQkJCWRlbGV0ZSBycjsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKworCQkJLy8gRFNBIG9yIFJTQSBPcGVuU1NMIEtleQorCQkJLy8gRm9yIG5vdyBqdXN0IHJlYWQgYSBwYXJ0aWN1bGFyIGZpbGUKKworCQkJQklPICogYmlvS2V5OworCQkJaWYgKChiaW9LZXkgPSBCSU9fbmV3KEJJT19zX2ZpbGUoKSkpID09IE5VTEwpIHsKKworCQkJCWNlcnIgPDwgIkVycm9yIG9wZW5pbmcgcHJpdmF0ZSBrZXkgZmlsZVxuXG4iOworCQkJCXJldHVybiBOVUxMOworCisJCQl9CisKKwkJCWlmIChCSU9fcmVhZF9maWxlbmFtZShiaW9LZXksIGFyZ3ZbcGFyYW1Db3VudCsxXSkgPD0gMCkgeworCisJCQkJY2VyciA8PCAiRXJyb3Igb3BlbmluZyBwcml2YXRlIGtleSBmaWxlIDogIiA8PCBhcmd2W3BhcmFtQ291bnQrMV0gPDwgZW5kbDsKKwkJCQlyZXR1cm4gTlVMTDsKKworCQkJfQorCisJCQlFVlBfUEtFWSAqIHBrZXk7CisJCQlwa2V5ID0gUEVNX3JlYWRfYmlvX1ByaXZhdGVLZXkoYmlvS2V5LE5VTEwsTlVMTCxhcmd2W3BhcmFtQ291bnQgKyAyXSk7CisKKwkJCWlmIChwa2V5ID09IE5VTEwpIHsKKworCQkJCUJJTyAqIGJpb19lcnI7CisJCisJCQkJaWYgKChiaW9fZXJyPUJJT19uZXcoQklPX3NfZmlsZSgpKSkgIT0gTlVMTCkKKwkJCQkJQklPX3NldF9mcChiaW9fZXJyLHN0ZGVycixCSU9fTk9DTE9TRXxCSU9fRlBfVEVYVCk7CisJCQkJY2VyciA8PCAiRXJyb3IgbG9hZGluZyBwcml2YXRlIGtleVxuXG4iOworCQkJCUVSUl9wcmludF9lcnJvcnMoYmlvX2Vycik7CisJCQkJcmV0dXJuIE5VTEw7CisKKwkJCX0KKworCQkJWEtNU1JlY292ZXJLZXlCaW5kaW5nICogcmtiID0gcnItPmdldFJlY292ZXJLZXlCaW5kaW5nKCk7CisJCQlpZiAocmtiID09IE5VTEwpCisJCQkJcmtiID0gcnItPmFkZFJlY292ZXJLZXlCaW5kaW5nKFhLTVNTdGF0dXM6OkluZGV0ZXJtaW5hdGUpOworCisKKwkJCWlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1hZGQtdmFsdWUtZHNhIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXZkIikgPT0gMCkgeworCisJCQkJLy8gQ2hlY2sgdHlwZSBpcyBjb3JyZWN0CisKKwkJCQlpZiAocGtleS0+dHlwZSAhPSBFVlBfUEtFWV9EU0EpIHsKKwkJCQkJY2VyciA8PCAiRFNBIEtleSByZXF1ZXN0ZWQsIGJ1dCBPcGVuU1NMIGxvYWRlZCBzb21ldGhpbmcgZWxzZVxuIjsKKwkJCQkJcmV0dXJuIE5VTEw7CisJCQkJfQorCisJCQkJWE1MQ2ggKiBQID0gQk4yYjY0KHBrZXktPnBrZXkuZHNhLT5wKTsKKwkJCQlYTUxDaCAqIFEgPSBCTjJiNjQocGtleS0+cGtleS5kc2EtPnEpOworCQkJCVhNTENoICogRyA9IEJOMmI2NChwa2V5LT5wa2V5LmRzYS0+Zyk7CisJCQkJWE1MQ2ggKiBZID0gQk4yYjY0KHBrZXktPnBrZXkuZHNhLT5wdWJfa2V5KTsKKworCQkJCXJrYi0+YXBwZW5kRFNBS2V5VmFsdWUoUCxRLEcsWSk7CisKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0goUCk7CisJCQkJWFNFQ19SRUxFQVNFX1hNTENIKFEpOworCQkJCVhTRUNfUkVMRUFTRV9YTUxDSChHKTsKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0goWSk7CisJCQl9CisJCQllbHNlIHsKKwkJCQlpZiAocGtleS0+dHlwZSAhPSBFVlBfUEtFWV9SU0EpIHsKKwkJCQkJY2VyciA8PCAiUlNBIEtleSByZXF1ZXN0ZWQsIGJ1dCBPcGVuU1NMIGxvYWRlZCBzb21ldGhpbmcgZWxzZVxuIjsKKwkJCQkJZXhpdCAoMSk7CisJCQkJfQorCisJCQkJWE1MQ2ggKiBtb2QgPSBCTjJiNjQocGtleS0+cGtleS5yc2EtPm4pOworCQkJCVhNTENoICogZXhwID0gQk4yYjY0KHBrZXktPnBrZXkucnNhLT5lKTsKKwkJCQlya2ItPmFwcGVuZFJTQUtleVZhbHVlKG1vZCwgZXhwKTsKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0gobW9kKTsKKwkJCQlYU0VDX1JFTEVBU0VfWE1MQ0goZXhwKTsKKworCQkJfQorCisJCQlFVlBfUEtFWV9mcmVlKHBrZXkpOworCQkJQklPX2ZyZWUoYmlvS2V5KTsKKworCQkJcGFyYW1Db3VudCArPSAzOworCisJCQkKKwkJfSAvKiBhcmd2WzFdID0gInZhbHVlIGRzYS9yc2EiICovCisKKyNlbmRpZgorCQllbHNlIHsKKwkJCXByaW50UmVjb3ZlclJlcXVlc3RVc2FnZSgpOworCQkJZGVsZXRlIHJyOworCQkJKCpkb2MpLT5yZWxlYXNlKCk7CisJCQlyZXR1cm4gTlVMTDsKKwkJfQorCX0KKworCXJldHVybiBycjsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDcmVhdGUgYSBQZW5kaW5nUmVxdWVzdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBwcmludFBlbmRpbmdSZXF1ZXN0VXNhZ2Uodm9pZCkgeworCisJY2VyciA8PCAiXG5Vc2FnZSBQZW5kaW5nUmVxdWVzdCBbLS1oZWxwfC1oXSA8c2VydmljZSBVUkk+IFtvcHRpb25zXVxuIjsKKwljZXJyIDw8ICIgICAtLWhlbHAvLWggICAgICAgICAgICAgICAgOiBwcmludCB0aGlzIHNjcmVlbiBhbmQgZXhpdFxuIjsKKwljZXJyIDw8ICIgICAtLW9yaWdpbmFsLXJlcXVlc3QtaWQvLW8gPGlkPlxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBTZXQgb3JpZ2luYWwgcmVxdWVzdCBJRFxuIjsKKwljZXJyIDw8ICIgICAtLXJlc3BvbnNlLWlkLy1yIDxpZD5cbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogU2V0IFJlc3BvbnNlIElEXG5cbiI7CisKK30KKworWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGUgKiBjcmVhdGVQZW5kaW5nUmVxdWVzdChYU0VDUHJvdmlkZXIgJnByb3YsIERPTURvY3VtZW50ICoqZG9jLCBpbnQgYXJnYywgY2hhciAqKiBhcmd2LCBpbnQgcGFyYW1Db3VudCkgeworCisJaWYgKHBhcmFtQ291bnQgID49IGFyZ2MgfHwgCisJCShfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1oZWxwIikgPT0gMCkgfHwKKwkJKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItaCIpID09IDApKSB7CisKKwkJcHJpbnRQZW5kaW5nUmVxdWVzdFVzYWdlKCk7CisJCXJldHVybiBOVUxMOworCX0KKworCS8qIEZpcnN0IGNyZWF0ZSB0aGUgYmFzaWMgcmVxdWVzdCAqLworCVhLTVNNZXNzYWdlRmFjdG9yeSAqIGZhY3RvcnkgPSAKKwkJcHJvdi5nZXRYS01TTWVzc2FnZUZhY3RvcnkoKTsKKwlYS01TUGVuZGluZ1JlcXVlc3QgKiBwciA9IAorCQlmYWN0b3J5LT5jcmVhdGVQZW5kaW5nUmVxdWVzdChNQUtFX1VOSUNPREVfU1RSSU5HKGFyZ3ZbcGFyYW1Db3VudCsrXSksIGRvYyk7CisKKwl3aGlsZSAocGFyYW1Db3VudCA8IGFyZ2MgJiYgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tIikgIT0gMCkgeworCisJCWlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1vcmlnaW5hbC1yZXF1ZXN0LWlkIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLW8iKSA9PSAwKSB7CisJCQlpZiAoKytwYXJhbUNvdW50ID49IGFyZ2MpIHsKKwkJCQlwcmludFBlbmRpbmdSZXF1ZXN0VXNhZ2UoKTsKKwkJCQlkZWxldGUgcHI7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisKKwkJCXByLT5zZXRPcmlnaW5hbFJlcXVlc3RJZChNQUtFX1VOSUNPREVfU1RSSU5HKGFyZ3ZbcGFyYW1Db3VudCsrXSkpOworCQl9CisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXJlc3BvbnNlLWlkIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXIiKSA9PSAwKSB7CisJCQlpZiAoKytwYXJhbUNvdW50ID49IGFyZ2MpIHsKKwkJCQlwcmludFBlbmRpbmdSZXF1ZXN0VXNhZ2UoKTsKKwkJCQlkZWxldGUgcHI7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisJCQlwci0+c2V0UmVzcG9uc2VJZChNQUtFX1VOSUNPREVfU1RSSU5HKGFyZ3ZbcGFyYW1Db3VudCsrXSkpOworCQl9CisJCWVsc2UgeworCQkJcHJpbnRQZW5kaW5nUmVxdWVzdFVzYWdlKCk7CisJCQlkZWxldGUgcHI7CisJCQlyZXR1cm4gTlVMTDsKKwkJfQorCX0KKworCXJldHVybiBwcjsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDcmVhdGUgYSBTdGF0dXNSZXF1ZXN0CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIHByaW50U3RhdHVzUmVxdWVzdFVzYWdlKHZvaWQpIHsKKworCWNlcnIgPDwgIlxuVXNhZ2UgU3RhdHVzUmVxdWVzdCBbLS1oZWxwfC1oXSA8c2VydmljZSBVUkk+IFtvcHRpb25zXVxuIjsKKwljZXJyIDw8ICIgICAtLWhlbHAvLWggICAgICAgICAgICAgICAgOiBwcmludCB0aGlzIHNjcmVlbiBhbmQgZXhpdFxuIjsKKwljZXJyIDw8ICIgICAtLW9yaWdpbmFsLXJlcXVlc3QtaWQvLW8gPGlkPlxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBTZXQgb3JpZ2luYWwgcmVxdWVzdCBJRFxuIjsKKwljZXJyIDw8ICIgICAtLXJlc3BvbnNlLWlkLy1yIDxpZD5cbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogU2V0IFJlc3BvbnNlIElEXG5cbiI7CisKK30KKworWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGUgKiBjcmVhdGVTdGF0dXNSZXF1ZXN0KFhTRUNQcm92aWRlciAmcHJvdiwgRE9NRG9jdW1lbnQgKipkb2MsIGludCBhcmdjLCBjaGFyICoqIGFyZ3YsIGludCBwYXJhbUNvdW50KSB7CisKKwlpZiAocGFyYW1Db3VudCAgPj0gYXJnYyB8fCAKKwkJKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWhlbHAiKSA9PSAwKSB8fAorCQkoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1oIikgPT0gMCkpIHsKKworCQlwcmludFN0YXR1c1JlcXVlc3RVc2FnZSgpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwkvKiBGaXJzdCBjcmVhdGUgdGhlIGJhc2ljIHJlcXVlc3QgKi8KKwlYS01TTWVzc2FnZUZhY3RvcnkgKiBmYWN0b3J5ID0gCisJCXByb3YuZ2V0WEtNU01lc3NhZ2VGYWN0b3J5KCk7CisJWEtNU1N0YXR1c1JlcXVlc3QgKiBzciA9IAorCQlmYWN0b3J5LT5jcmVhdGVTdGF0dXNSZXF1ZXN0KE1BS0VfVU5JQ09ERV9TVFJJTkcoYXJndltwYXJhbUNvdW50KytdKSwgZG9jKTsKKworCXdoaWxlIChwYXJhbUNvdW50IDwgYXJnYyAmJiBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS0iKSAhPSAwKSB7CisKKwkJaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLW9yaWdpbmFsLXJlcXVlc3QtaWQiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItbyIpID09IDApIHsKKwkJCWlmICgrK3BhcmFtQ291bnQgPj0gYXJnYykgeworCQkJCXByaW50U3RhdHVzUmVxdWVzdFVzYWdlKCk7CisJCQkJZGVsZXRlIHNyOworCQkJCXJldHVybiBOVUxMOworCQkJfQorCisJCQlzci0+c2V0T3JpZ2luYWxSZXF1ZXN0SWQoTUFLRV9VTklDT0RFX1NUUklORyhhcmd2W3BhcmFtQ291bnQrK10pKTsKKwkJfQorCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1yZXNwb25zZS1pZCIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1yIikgPT0gMCkgeworCQkJaWYgKCsrcGFyYW1Db3VudCA+PSBhcmdjKSB7CisJCQkJcHJpbnRTdGF0dXNSZXF1ZXN0VXNhZ2UoKTsKKwkJCQlkZWxldGUgc3I7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisJCQlzci0+c2V0UmVzcG9uc2VJZChNQUtFX1VOSUNPREVfU1RSSU5HKGFyZ3ZbcGFyYW1Db3VudCsrXSkpOworCQl9CisJCWVsc2UgeworCQkJcHJpbnRTdGF0dXNSZXF1ZXN0VXNhZ2UoKTsKKwkJCWRlbGV0ZSBzcjsKKwkJCXJldHVybiBOVUxMOworCQl9CisJfQorCisJcmV0dXJuIHNyOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENyZWF0ZSBhIENvbXBvdW5kUmVxdWVzdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBwcmludENvbXBvdW5kUmVxdWVzdFVzYWdlKHZvaWQpIHsKKworCWNlcnIgPDwgIlxuVXNhZ2UgQ29tcG91bmRSZXF1ZXN0IFstLWhlbHB8LWhdIDxzZXJ2aWNlIFVSST4gPExvY2F0ZVJlcXVlc3R8VmFsaWRhdGVSZXF1ZXN0PiAuLi4uIFstLSBMb2NhdGVSZXF1ZXN0fFZhbGlkYXRlUmVxdWVzdHxQZW5kaW5nUmVxdWVzdF0qXG4iOworCWNlcnIgPDwgIiAgIC0taGVscC8taCAgICAgICAgICAgICAgICA6IHByaW50IHRoaXMgc2NyZWVuIGFuZCBleGl0XG5cbiI7CisKK30KKworWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGUgKiBjcmVhdGVDb21wb3VuZFJlcXVlc3QoWFNFQ1Byb3ZpZGVyICZwcm92LCBET01Eb2N1bWVudCAqKmRvYywgaW50IGFyZ2MsIGNoYXIgKiogYXJndiwgaW50IHBhcmFtQ291bnQpIHsKKworCWlmIChwYXJhbUNvdW50ID49IGFyZ2MgfHwgCisJCShfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1oZWxwIikgPT0gMCkgfHwKKwkJKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItaCIpID09IDApKSB7CisKKwkJcHJpbnRDb21wb3VuZFJlcXVlc3RVc2FnZSgpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwkvKiBGaXJzdCBjcmVhdGUgdGhlIGJhc2ljIHJlcXVlc3QgKi8KKwlYS01TTWVzc2FnZUZhY3RvcnkgKiBmYWN0b3J5ID0gCisJCXByb3YuZ2V0WEtNU01lc3NhZ2VGYWN0b3J5KCk7CisJWEtNU0NvbXBvdW5kUmVxdWVzdCAqIGNyID0gCisJCWZhY3RvcnktPmNyZWF0ZUNvbXBvdW5kUmVxdWVzdChNQUtFX1VOSUNPREVfU1RSSU5HKGFyZ3ZbcGFyYW1Db3VudCsrXSksIGRvYyk7CisKKwl3aGlsZSAocGFyYW1Db3VudCA8IGFyZ2MpIHsKKworCQlpZiAoKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICJMb2NhdGVSZXF1ZXN0IikgPT0gMCkgfHwKKwkJCShfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAibHIiKSA9PSAwKSkgeworCisJCQlwYXJhbUNvdW50Kys7CisJCQlYS01TTG9jYXRlUmVxdWVzdCAqIHIgPSAKKwkJCQkoWEtNU0xvY2F0ZVJlcXVlc3QgKikgKGNyZWF0ZUxvY2F0ZVJlcXVlc3QocHJvdiwgTlVMTCwgYXJnYywgYXJndiwgcGFyYW1Db3VudCwgY3IpKTsKKworCQkJaWYgKHIgPT0gTlVMTCkgeworCQkJCWRlbGV0ZSBjcjsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKworCQl9CisJCWVsc2UgaWYgKChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiVmFsaWRhdGVSZXF1ZXN0IikgPT0gMCkgfHwKKwkJCShfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAidnIiKSA9PSAwKSkgeworCisJCQlwYXJhbUNvdW50Kys7CisJCQlYS01TVmFsaWRhdGVSZXF1ZXN0ICogciA9IAorCQkJCShYS01TVmFsaWRhdGVSZXF1ZXN0ICopIChjcmVhdGVWYWxpZGF0ZVJlcXVlc3QocHJvdiwgTlVMTCwgYXJnYywgYXJndiwgcGFyYW1Db3VudCwgY3IpKTsKKworCQkJaWYgKHIgPT0gTlVMTCkgeworCQkJCWRlbGV0ZSBjcjsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKwkJfQorCisJCWVsc2UgeworCQkJcHJpbnRDb21wb3VuZFJlcXVlc3RVc2FnZSgpOworCQkJZGVsZXRlIGNyOworCQkJKCpkb2MpLT5yZWxlYXNlKCk7CisJCQlyZXR1cm4gTlVMTDsKKwkJfQorCisJCWlmIChwYXJhbUNvdW50IDwgYXJnYyAmJiBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS0iKSA9PSAwKQorCQkJcGFyYW1Db3VudCsrOworCX0KKworCXJldHVybiBjcjsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBNc2dEdW1wCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIGRvTWVzc2FnZUFic3RyYWN0VHlwZUR1bXAoWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGUgKm1zZywgaW50IGxldmVsKSB7CisKKwljb3V0IDw8IGVuZGw7CisJbGV2ZWxTZXQobGV2ZWwpOworCWNvdXQgPDwgIkJhc2UgbWVzc2FnZSBpbmZvcm1hdGlvbiA6ICIgPDwgZW5kbCA8PCBlbmRsOworCisJY2hhciAqIHMgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShtc2ctPmdldElkKCkpOworCWxldmVsU2V0KGxldmVsKTsKKwljb3V0IDw8ICJJZCA9ICIgPDwgcyA8PCBlbmRsOworCVhTRUNfUkVMRUFTRV9YTUxDSChzKTsKKworCXMgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShtc2ctPmdldFNlcnZpY2UoKSk7CisJbGV2ZWxTZXQobGV2ZWwpOworCWNvdXQgPDwgIlNlcnZpY2UgVVJJID0gIiA8PCBzIDw8IGVuZGw7CisJWFNFQ19SRUxFQVNFX1hNTENIKHMpOworCisJcyA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKG1zZy0+Z2V0Tm9uY2UoKSk7CisJbGV2ZWxTZXQobGV2ZWwpOworCWlmIChzICE9IE5VTEwpIHsKKwkJY291dCA8PCAiTm9uY2UgPSAiIDw8IHMgPDwgZW5kbDsKKwkJWFNFQ19SRUxFQVNFX1hNTENIKHMpOworCX0KKwllbHNlCisJCWNvdXQgPDwgIk5vbmNlID0gPE5PTkUgU0VUPiIgPDwgZW5kbDsKKworCS8qIENoZWNrIGZvciBPcGFxdWVDbGllbnREYXRhICovCisJaWYgKG1zZy0+Z2V0T3BhcXVlQ2xpZW50RGF0YVNpemUoKSA+IDApIHsKKwkJbGV2ZWxTZXQobGV2ZWwpOworCQljb3V0IDw8ICJPcGFxdWUgQ2xpZW50IERhdGEgZm91bmQgOiAiIDw8IGVuZGw7CisJCWZvciAoaW50IGkgPSAwOyBpIDwgbXNnLT5nZXRPcGFxdWVDbGllbnREYXRhU2l6ZSgpOyArK2kpIHsKKwkJCXMgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShtc2ctPmdldE9wYXF1ZUNsaWVudERhdGFJdGVtU3RyKGkpKTsKKwkJCWlmIChzICE9IE5VTEwpIHsKKwkJCQlsZXZlbFNldChsZXZlbCArIDEpOworCQkJCWNvdXQgPDwgaSA8PCAiIDogIiA8PCBzIDw8IGVuZGw7CisJCQkJWFNFQ19SRUxFQVNFX1hNTENIKHMpOworCQkJfQorCQl9CisJfQorfQorCit2b2lkIGRvUmVxdWVzdEFic3RyYWN0VHlwZUR1bXAoWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGUgKm1zZywgaW50IGxldmVsKSB7CisKKwlsZXZlbFNldChsZXZlbCk7CisJaW50IGkgPSBtc2ctPmdldFJlc3BvbmRXaXRoU2l6ZSgpOworCisJY291dCA8PCAiUmVxdWVzdCBtZXNzYWdlIGhhcyAiIDw8IGkgPDwgIiBSZXNwb25kV2l0aCBlbGVtZW50cyIgPDwgZW5kbCA8PCBlbmRsOworCisJZm9yIChpbnQgaiA9IDA7IGogPCBpOyArK2opIHsKKwkJbGV2ZWxTZXQobGV2ZWwgKzEpOworCQljaGFyICogcyA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKG1zZy0+Z2V0UmVzcG9uZFdpdGhJdGVtU3RyKGopKTsKKwkJY291dCA8PCAiSXRlbSAiIDw8IGorMSA8PCAiIDogIiA8PCBzIDw8IGVuZGw7CisJCVhTRUNfUkVMRUFTRV9YTUxDSChzKTsKKwl9CisJCit9CisKK3ZvaWQgZG9SZXN1bHRUeXBlRHVtcChYS01TUmVzdWx0VHlwZSAqbXNnLCBpbnQgbGV2ZWwpIHsKKworCWNvbnN0IFhNTENoICogcmlkID0gbXNnLT5nZXRSZXF1ZXN0SWQoKTsKKwljaGFyICogczsKKworCWlmIChyaWQgIT0gTlVMTCkgeworCQlsZXZlbFNldChsZXZlbCk7CisJCWNvdXQgPDwgIlJlc3VsdCBpcyBpbiByZXNwb25zZSB0byBNc2dJRCA6ICI7CisJCXMgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShyaWQpOworCQljb3V0IDw8IHMgPDwgZW5kbDsKKwkJWFNFQ19SRUxFQVNFX1hNTENIKHMpOworCX0KKworCWxldmVsU2V0KGxldmVsKTsKKwljb3V0IDw8ICJSZXN1bHQgTWFqb3IgY29kZSA9ICI7CisJcyA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKFhLTVNDb25zdGFudHM6OnNfdGFnUmVzdWx0TWFqb3JDb2Rlc1ttc2ctPmdldFJlc3VsdE1ham9yKCldKTsKKwljb3V0IDw8IHMgPDwgZW5kbDsKKwlYU0VDX1JFTEVBU0VfWE1MQ0gocyk7CisKKwlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWlub3Igcm0gPSBtc2ctPmdldFJlc3VsdE1pbm9yKCk7CisJaWYgKHJtICE9IFhLTVNSZXN1bHRUeXBlOjpOb25lTWlub3IpIHsKKwkJbGV2ZWxTZXQobGV2ZWwpOworCQljb3V0IDw8ICJSZXN1bHQgTWlub3IgY29kZSA9ICI7CisJCWNoYXIgKiBzID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoWEtNU0NvbnN0YW50czo6c190YWdSZXN1bHRNaW5vckNvZGVzW3JtXSk7CisJCWNvdXQgPDwgcyA8PCBlbmRsOworCQlYU0VDX1JFTEVBU0VfWE1MQ0gocyk7CisJfQorCisJcmlkID0gbXNnLT5nZXRSZXF1ZXN0U2lnbmF0dXJlVmFsdWUoKTsKKwlpZiAocmlkICE9IE5VTEwpIHsKKwkJbGV2ZWxTZXQobGV2ZWwpOworCQljb3V0IDw8ICJSZXF1ZXN0U2lnbmF0dXJlVmFsdWUgPSAiOworCQlzID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUocmlkKTsKKwkJY291dCA8PCBzIDw8IGVuZGw7CisJCVhTRUNfUkVMRUFTRV9YTUxDSChzKTsKKwl9Cit9CisKK3ZvaWQgZG9LZXlJbmZvRHVtcChEU0lHS2V5SW5mb0xpc3QgKiBsLCBpbnQgbGV2ZWwpIHsKKworCisJaW50IHNpemUgPSAoaW50KSBsLT5nZXRTaXplKCk7CisKKwlmb3IgKGludCBpID0gMCA7IGkgPCBzaXplIDsgKysgaSkgeworCisJCURTSUdLZXlJbmZvVmFsdWUgKiBraXY7CisJCURTSUdLZXlJbmZvTmFtZSAqIGtuOworCQljaGFyICogYjsKKworCQlEU0lHS2V5SW5mbyAqIGtpID0gbC0+aXRlbShpKTsKKworCQlzd2l0Y2ggKGtpLT5nZXRLZXlJbmZvVHlwZSgpKSB7CisKKwkJY2FzZSBEU0lHS2V5SW5mbzo6S0VZSU5GT19WQUxVRV9SU0EgOgorCisJCQlraXYgPSAoRFNJR0tleUluZm9WYWx1ZSAqKSBraTsKKwkJCWxldmVsU2V0KGxldmVsKTsKKwkJCWNvdXQgPDwgIlJTQSBLZXkgVmFsdWUiIDw8IGVuZGw7CisKKwkJCWxldmVsU2V0KGxldmVsKzEpOworCQkJYiA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKGtpdi0+Z2V0UlNBRXhwb25lbnQoKSk7CisJCQljb3V0IDw8ICJCYXNlNjQgZW5jb2RlZCBleHBvbmVudCA9ICIgPDwgYiA8PCBlbmRsOworCQkJZGVsZXRlW10gYjsKKworCQkJbGV2ZWxTZXQobGV2ZWwrMSk7CisJCQliID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoa2l2LT5nZXRSU0FNb2R1bHVzKCkpOworCQkJY291dCA8PCAiQmFzZTY0IGVuY29kZWQgbW9kdWx1cyAgPSAiIDw8IGIgPDwgZW5kbDsKKwkJCWRlbGV0ZVtdIGI7CisKKwkJCWJyZWFrOworCisJCWNhc2UgRFNJR0tleUluZm86OktFWUlORk9fVkFMVUVfRFNBIDoKKworCQkJa2l2ID0gKERTSUdLZXlJbmZvVmFsdWUgKikga2k7CisJCQlsZXZlbFNldChsZXZlbCk7CisJCQljb3V0IDw8ICJEU0EgS2V5IFZhbHVlIiA8PCBlbmRsOworCisJCQlsZXZlbFNldChsZXZlbCsxKTsKKwkJCWIgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShraXYtPmdldERTQUcoKSk7CisJCQljb3V0IDw8ICJHID0gIiA8PCBiIDw8IGVuZGw7CisJCQlkZWxldGVbXSBiOworCisJCQlsZXZlbFNldChsZXZlbCsxKTsKKwkJCWIgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShraXYtPmdldERTQVAoKSk7CisJCQljb3V0IDw8ICJQID0gIiA8PCBiIDw8IGVuZGw7CisJCQlkZWxldGVbXSBiOworCisJCQlsZXZlbFNldChsZXZlbCsxKTsKKwkJCWIgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShraXYtPmdldERTQVEoKSk7CisJCQljb3V0IDw8ICJRID0gIiA8PCBiIDw8IGVuZGw7CisJCQlkZWxldGVbXSBiOworCisJCQlsZXZlbFNldChsZXZlbCsxKTsKKwkJCWIgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShraXYtPmdldERTQVkoKSk7CisJCQljb3V0IDw8ICJZID0gIiA8PCBiIDw8IGVuZGw7CisJCQlkZWxldGVbXSBiOworCisJCQlicmVhazsKKworCQljYXNlIERTSUdLZXlJbmZvOjpLRVlJTkZPX05BTUUgOgorCisJCQlrbiA9IChEU0lHS2V5SW5mb05hbWUgKikga2k7CisJCQlsZXZlbFNldChsZXZlbCk7CisJCQljb3V0IDw8ICJLZXkgTmFtZSIgPDwgZW5kbDsKKworCQkJbGV2ZWxTZXQobGV2ZWwrMSk7CisJCQliID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoa24tPmdldEtleU5hbWUoKSk7CisJCQljb3V0IDw8ICJOYW1lID0gIiA8PCBiIDw8IGVuZGw7CisJCQlkZWxldGVbXSBiOworCisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCisJCQlsZXZlbFNldChsZXZlbCk7CisJCQljb3V0IDw8ICJVbmtub3duIEtleUluZm8gdHlwZSIgPDwgZW5kbDsKKworCQl9CisKKwl9Cit9CisKKwordm9pZCBkb0tleUJpbmRpbmdBYnN0cmFjdER1bXAoWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGUgKiBtc2csIGludCBsZXZlbCkgeworCisJbGV2ZWxTZXQobGV2ZWwpOworCWNvdXQgPDwgIktleSBCaW5kaW5nIGZvdW5kLiIgPDwgZW5kbDsKKworCWxldmVsU2V0KGxldmVsKzEpOworCWNvdXQgPDwgIktleVVzYWdlIEVuY3J5cHRpb24gOiAiOworCWlmIChtc2ctPmdldEVuY3J5cHRpb25LZXlVc2FnZSgpKQorCQljb3V0IDw8ICJ5ZXMiIDw8IGVuZGw7CisJZWxzZQorCQljb3V0IDw8ICJubyIgPDwgZW5kbDsKKworCWxldmVsU2V0KGxldmVsKzEpOworCWNvdXQgPDwgIktleVVzYWdlIEV4Y2hhbmdlICAgOiAiOworCWlmIChtc2ctPmdldEV4Y2hhbmdlS2V5VXNhZ2UoKSkKKwkJY291dCA8PCAieWVzIiA8PCBlbmRsOworCWVsc2UKKwkJY291dCA8PCAibm8iIDw8IGVuZGw7CisKKwlsZXZlbFNldChsZXZlbCsxKTsKKwljb3V0IDw8ICJLZXlVc2FnZSBTaWduYXR1cmUgIDogIjsKKwlpZiAobXNnLT5nZXRTaWduYXR1cmVLZXlVc2FnZSgpKQorCQljb3V0IDw8ICJ5ZXMiIDw8IGVuZGw7CisJZWxzZQorCQljb3V0IDw8ICJubyIgPDwgZW5kbDsKKworCWludCBuID0gbXNnLT5nZXRVc2VLZXlXaXRoU2l6ZSgpOworCWxldmVsU2V0KGxldmVsKzEpOworCWlmIChuID09IDApIHsKKwkJY291dCA8PCAiTm8gVXNlS2V5V2l0aCBpdGVtcyBmb3VuZCIgPDwgZW5kbDsKKwl9CisJZWxzZSB7CisJCWNvdXQgPDwgIlVzZUtleVdpdGggaXRlbXMgOiBcbiI7CisJfQorCisJZm9yIChpbnQgaSA9IDA7IGkgPCBtc2ctPmdldFVzZUtleVdpdGhTaXplKCkgOyArK2kpIHsKKworCQlYS01TVXNlS2V5V2l0aCAqIHVrdyA9IG1zZy0+Z2V0VXNlS2V5V2l0aEl0ZW0oaSk7CisJCWxldmVsU2V0KGxldmVsKzIpOworCQljaGFyICogYSA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKHVrdy0+Z2V0QXBwbGljYXRpb24oKSk7CisJCWNoYXIgKiBpZCA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKHVrdy0+Z2V0SWRlbnRpZmllcigpKTsKKwkJY291dCA8PCAiQXBwbGljYXRpb24gOiBcIiIgPDwgYSA8PCAiXCJcbiI7CisJCWxldmVsU2V0KGxldmVsKzIpOworCQljb3V0IDw8ICJJZGVudGlmaWVyICA6IFwiIiA8PCBpZCA8PCAiXCIiIDw8IGVuZGw7CisJCVhTRUNfUkVMRUFTRV9YTUxDSChhKTsKKwkJWFNFQ19SRUxFQVNFX1hNTENIKGlkKTsKKworCX0KKworCS8vIE5vdyBkdW1wIGFueSBLZXlJbmZvCisJbGV2ZWxTZXQobGV2ZWwrMSk7CisJY291dCA8PCAiS2V5SW5mbyBpbmZvcm1hdGlvbjoiIDw8IGVuZGwgPDwgZW5kbDsKKworCWRvS2V5SW5mb0R1bXAobXNnLT5nZXRLZXlJbmZvTGlzdCgpLCBsZXZlbCArIDIpOworCit9CisKK3ZvaWQgZG9VbnZlcmlmaWVkS2V5QmluZGluZ0R1bXAoWEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nICogdWtiLCBpbnQgbGV2ZWwpIHsKKworCWRvS2V5QmluZGluZ0Fic3RyYWN0RHVtcCgoWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGUgKikgdWtiLCBsZXZlbCk7CisKK30KKwordm9pZCBkb1N0YXR1c1JlYXNvbkR1bXAoWEtNU1N0YXR1czo6U3RhdHVzVmFsdWUgdiwgWEtNU1N0YXR1cyAqcywgaW50IGxldmVsKSB7CisKKwljaGFyICogc3IgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShYS01TQ29uc3RhbnRzOjpzX3RhZ1N0YXR1c1ZhbHVlQ29kZXNbdl0pOworCWZvciAoWEtNU1N0YXR1czo6U3RhdHVzUmVhc29uIGkgPSBYS01TU3RhdHVzOjpTaWduYXR1cmU7IGkgPiBYS01TU3RhdHVzOjpSZWFzb25VbmRlZmluZWQ7IGkgPSAoWEtNU1N0YXR1czo6U3RhdHVzUmVhc29uKSAoaS0xKSkgeworCisJCWlmIChzLT5nZXRTdGF0dXNSZWFzb24odiwgaSkpIHsKKwkJCWxldmVsU2V0KGxldmVsKTsKKwkJCWNoYXIgKiByYyA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKFhLTVNDb25zdGFudHM6OnNfdGFnU3RhdHVzUmVhc29uQ29kZXNbaV0pOworCQkJY291dCA8PCBzciA8PCAiUmVhc29uID0gIiA8PCByYyA8PCBlbmRsOworCQkJWFNFQ19SRUxFQVNFX1hNTENIKHJjKTsKKwkJfQorCX0KKwlYU0VDX1JFTEVBU0VfWE1MQ0goc3IpOworCit9CisKK3ZvaWQgZG9LZXlCaW5kaW5nRHVtcChYS01TS2V5QmluZGluZyAqIGtiLCBpbnQgbGV2ZWwpIHsKKworCS8qIER1bXAgdGhlIHN0YXR1cyAqLworCisJWEtNU1N0YXR1cyAqIHMgPSBrYi0+Z2V0U3RhdHVzKCk7CisJaWYgKHMgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJY2hhciAqIHNyID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoWEtNU0NvbnN0YW50czo6c190YWdTdGF0dXNWYWx1ZUNvZGVzW3MtPmdldFN0YXR1c1ZhbHVlKCldKTsKKwlsZXZlbFNldChsZXZlbCk7CisJY291dCA8PCAiU3RhdHVzID0gIiA8PCBzciA8PCBlbmRsOworCVhTRUNfUkVMRUFTRV9YTUxDSChzcik7CisKKwkvKiBEdW1wIHRoZSBzdGF0dXMgcmVhc29ucyAqLworCWRvU3RhdHVzUmVhc29uRHVtcChYS01TU3RhdHVzOjpWYWxpZCwgcywgbGV2ZWwrMSk7CisJZG9TdGF0dXNSZWFzb25EdW1wKFhLTVNTdGF0dXM6OkludmFsaWQsIHMsIGxldmVsKzEpOworCWRvU3RhdHVzUmVhc29uRHVtcChYS01TU3RhdHVzOjpJbmRldGVybWluYXRlLCBzLCBsZXZlbCsxKTsKKworCS8qIE5vdyB0aGUgYWN0dWFsIGtleSAqLworCWRvS2V5QmluZGluZ0Fic3RyYWN0RHVtcCgoWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGUgKikga2IsIGxldmVsKTsKKworfQorCit2b2lkIGRvUmV2b2tlS2V5QmluZGluZ0R1bXAoWEtNU1Jldm9rZUtleUJpbmRpbmcgKiBrYiwgaW50IGxldmVsKSB7CisKKwkvKiBEdW1wIHRoZSBzdGF0dXMgKi8KKworCVhLTVNTdGF0dXMgKiBzID0ga2ItPmdldFN0YXR1cygpOworCWlmIChzID09IE5VTEwpCisJCXJldHVybjsKKworCWNoYXIgKiBzciA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKFhLTVNDb25zdGFudHM6OnNfdGFnU3RhdHVzVmFsdWVDb2Rlc1tzLT5nZXRTdGF0dXNWYWx1ZSgpXSk7CisJbGV2ZWxTZXQobGV2ZWwpOworCWNvdXQgPDwgIlN0YXR1cyA9ICIgPDwgc3IgPDwgZW5kbDsKKwlYU0VDX1JFTEVBU0VfWE1MQ0goc3IpOworCisJLyogRHVtcCB0aGUgc3RhdHVzIHJlYXNvbnMgKi8KKwlkb1N0YXR1c1JlYXNvbkR1bXAoWEtNU1N0YXR1czo6VmFsaWQsIHMsIGxldmVsKzEpOworCWRvU3RhdHVzUmVhc29uRHVtcChYS01TU3RhdHVzOjpJbnZhbGlkLCBzLCBsZXZlbCsxKTsKKwlkb1N0YXR1c1JlYXNvbkR1bXAoWEtNU1N0YXR1czo6SW5kZXRlcm1pbmF0ZSwgcywgbGV2ZWwrMSk7CisKKwkvKiBOb3cgdGhlIGFjdHVhbCBrZXkgKi8KKwlkb0tleUJpbmRpbmdBYnN0cmFjdER1bXAoKFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlICopIGtiLCBsZXZlbCk7CisKK30KKwordm9pZCBkb1JlY292ZXJLZXlCaW5kaW5nRHVtcChYS01TUmVjb3ZlcktleUJpbmRpbmcgKiBrYiwgaW50IGxldmVsKSB7CisKKwkvKiBEdW1wIHRoZSBzdGF0dXMgKi8KKworCVhLTVNTdGF0dXMgKiBzID0ga2ItPmdldFN0YXR1cygpOworCWlmIChzID09IE5VTEwpCisJCXJldHVybjsKKworCWNoYXIgKiBzciA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKFhLTVNDb25zdGFudHM6OnNfdGFnU3RhdHVzVmFsdWVDb2Rlc1tzLT5nZXRTdGF0dXNWYWx1ZSgpXSk7CisJbGV2ZWxTZXQobGV2ZWwpOworCWNvdXQgPDwgIlN0YXR1cyA9ICIgPDwgc3IgPDwgZW5kbDsKKwlYU0VDX1JFTEVBU0VfWE1MQ0goc3IpOworCisJLyogRHVtcCB0aGUgc3RhdHVzIHJlYXNvbnMgKi8KKwlkb1N0YXR1c1JlYXNvbkR1bXAoWEtNU1N0YXR1czo6VmFsaWQsIHMsIGxldmVsKzEpOworCWRvU3RhdHVzUmVhc29uRHVtcChYS01TU3RhdHVzOjpJbnZhbGlkLCBzLCBsZXZlbCsxKTsKKwlkb1N0YXR1c1JlYXNvbkR1bXAoWEtNU1N0YXR1czo6SW5kZXRlcm1pbmF0ZSwgcywgbGV2ZWwrMSk7CisKKwkvKiBOb3cgdGhlIGFjdHVhbCBrZXkgKi8KKwlkb0tleUJpbmRpbmdBYnN0cmFjdER1bXAoKFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlICopIGtiLCBsZXZlbCk7CisKK30KKwordm9pZCBkb1JlaXNzdWVLZXlCaW5kaW5nRHVtcChYS01TUmVpc3N1ZUtleUJpbmRpbmcgKiBrYiwgaW50IGxldmVsKSB7CisKKwkvKiBEdW1wIHRoZSBzdGF0dXMgKi8KKworCVhLTVNTdGF0dXMgKiBzID0ga2ItPmdldFN0YXR1cygpOworCWlmIChzID09IE5VTEwpCisJCXJldHVybjsKKworCWNoYXIgKiBzciA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKFhLTVNDb25zdGFudHM6OnNfdGFnU3RhdHVzVmFsdWVDb2Rlc1tzLT5nZXRTdGF0dXNWYWx1ZSgpXSk7CisJbGV2ZWxTZXQobGV2ZWwpOworCWNvdXQgPDwgIlN0YXR1cyA9ICIgPDwgc3IgPDwgZW5kbDsKKwlYU0VDX1JFTEVBU0VfWE1MQ0goc3IpOworCisJLyogRHVtcCB0aGUgc3RhdHVzIHJlYXNvbnMgKi8KKwlkb1N0YXR1c1JlYXNvbkR1bXAoWEtNU1N0YXR1czo6VmFsaWQsIHMsIGxldmVsKzEpOworCWRvU3RhdHVzUmVhc29uRHVtcChYS01TU3RhdHVzOjpJbnZhbGlkLCBzLCBsZXZlbCsxKTsKKwlkb1N0YXR1c1JlYXNvbkR1bXAoWEtNU1N0YXR1czo6SW5kZXRlcm1pbmF0ZSwgcywgbGV2ZWwrMSk7CisKKwkvKiBOb3cgdGhlIGFjdHVhbCBrZXkgKi8KKwlkb0tleUJpbmRpbmdBYnN0cmFjdER1bXAoKFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlICopIGtiLCBsZXZlbCk7CisKK30KKwordm9pZCBkb0F1dGhlbnRpY2F0aW9uRHVtcChYS01TQXV0aGVudGljYXRpb24gKmEsIGludCBsZXZlbCkgeworCisKKwlpZiAoYSA9PSBOVUxMKQorCQlyZXR1cm47CisKKwlEU0lHU2lnbmF0dXJlICogc2lnID0gYS0+Z2V0S2V5QmluZGluZ0F1dGhlbnRpY2F0aW9uU2lnbmF0dXJlKCk7CisJaWYgKHNpZyAhPSBOVUxMKSB7CisKKwkJbGV2ZWxTZXQobGV2ZWwpOworCQljb3V0IDw8ICJLZXlCaW5kaW5nQXV0aGVudGljYXRpb24gU2lnbmF0dXJlIGZvdW5kLiAgIjsKKwkJaWYgKGdfYXV0aFBhc3NQaHJhc2UgPT0gTlVMTCkgeworCQkJY291dCA8PCAiQ2Fubm90IGNoZWNrIC0gbm8gcGFzcyBwaHJhc2Ugc2V0IiA8PCBlbmRsOworCQkJcmV0dXJuOworCQl9CisJCQorCQljb3V0IDw8ICJDaGVja2luZy4uLi4gIjsKKworCQkvLyBDcmVhdGUgdGhlIGtleQorCQl1bnNpZ25lZCBjaGFyIGtleUJ1ZltYU0VDX01BWF9IQVNIX1NJWkVdOworCQlpbnQgbGVuID0gQ2FsY3VsYXRlWEtNU0F1dGhlbnRpY2F0aW9uS2V5KCh1bnNpZ25lZCBjaGFyICopIGdfYXV0aFBhc3NQaHJhc2UsIChpbnQpIHN0cmxlbihnX2F1dGhQYXNzUGhyYXNlKSwga2V5QnVmLCBYU0VDX01BWF9IQVNIX1NJWkUpOworCQlpZiAobGVuIDw9IDApIHsKKwkJCWNvdXQgPDwgIkVycm9yIGNyZWF0aW5nIGtleSBmcm9tIHBhc3MgcGhyYXNlIiA8PCBlbmRsOworCQkJcmV0dXJuOworCQl9CisKKwkJWFNFQ0NyeXB0b0tleUhNQUMgKiBrID0gWFNFQ1BsYXRmb3JtVXRpbHM6OmdfY3J5cHRvUHJvdmlkZXItPmtleUhNQUMoKTsKKwkJay0+c2V0S2V5KGtleUJ1ZiwgbGVuKTsKKwkJLy9rLT5zZXRLZXkoKHVuc2lnbmVkIGNoYXIgKikgZ19hdXRoUGFzc1BocmFzZSwgc3RybGVuKGdfYXV0aFBhc3NQaHJhc2UpKTsKKworCQkvLyBTZXQga2V5IGFuZCB2YWxpZGF0ZQorCQlzaWctPnNldFNpZ25pbmdLZXkoayk7CisJCWlmIChzaWctPnZlcmlmeSgpKQorCQkJY291dCA8PCAiT0shIiA8PCBlbmRsOworCQllbHNlIAorCQkJY291dCA8PCAiU2lnbmF0dXJlIEJBRCEiIDw8IGVuZGw7CisKKwl9CisKKwlyZXR1cm47CisKK30KKworaW50IGRvTG9jYXRlUmVxdWVzdER1bXAoWEtNU0xvY2F0ZVJlcXVlc3QgKm1zZykgeworCisJY291dCA8PCBlbmRsIDw8ICJUaGlzIGlzIGEgTG9jYXRlUmVxdWVzdCBNZXNzYWdlIiA8PCBlbmRsOworCWludCBsZXZlbCA9IDE7CisJCisJZG9NZXNzYWdlQWJzdHJhY3RUeXBlRHVtcChtc2csIGxldmVsKTsKKwlkb1JlcXVlc3RBYnN0cmFjdFR5cGVEdW1wKG1zZywgbGV2ZWwpOworCisJWEtNU1F1ZXJ5S2V5QmluZGluZyAqcWtiID0gbXNnLT5nZXRRdWVyeUtleUJpbmRpbmcoKTsKKwlpZiAocWtiICE9IE5VTEwpCisJCWRvS2V5QmluZGluZ0Fic3RyYWN0RHVtcChxa2IsIGxldmVsKTsKKworCXJldHVybiAwOworfQorCitpbnQgZG9TdGF0dXNSZXF1ZXN0RHVtcChYS01TU3RhdHVzUmVxdWVzdCAqbXNnKSB7CisKKwljb3V0IDw8IGVuZGwgPDwgIlRoaXMgaXMgYSBTdGF0dXNSZXF1ZXN0IE1lc3NhZ2UiIDw8IGVuZGw7CisJaW50IGxldmVsID0gMTsKKwkKKwlkb01lc3NhZ2VBYnN0cmFjdFR5cGVEdW1wKG1zZywgbGV2ZWwpOworCWRvUmVxdWVzdEFic3RyYWN0VHlwZUR1bXAobXNnLCBsZXZlbCk7CisKKwlyZXR1cm4gMDsKK30KKworaW50IGRvVmFsaWRhdGVSZXF1ZXN0RHVtcChYS01TVmFsaWRhdGVSZXF1ZXN0ICptc2cpIHsKKworCWNvdXQgPDwgZW5kbCA8PCAiVGhpcyBpcyBhIFZhbGlkYXRlUmVxdWVzdCBNZXNzYWdlIiA8PCBlbmRsOworCWludCBsZXZlbCA9IDE7CisJCisJZG9NZXNzYWdlQWJzdHJhY3RUeXBlRHVtcChtc2csIGxldmVsKTsKKwlkb1JlcXVlc3RBYnN0cmFjdFR5cGVEdW1wKG1zZywgbGV2ZWwpOworCisJWEtNU1F1ZXJ5S2V5QmluZGluZyAqcWtiID0gbXNnLT5nZXRRdWVyeUtleUJpbmRpbmcoKTsKKwlpZiAocWtiICE9IE5VTEwpCisJCWRvS2V5QmluZGluZ0Fic3RyYWN0RHVtcChxa2IsIGxldmVsKTsKKworCXJldHVybiAwOworfQorCitpbnQgZG9Mb2NhdGVSZXN1bHREdW1wKFhLTVNMb2NhdGVSZXN1bHQgKm1zZykgeworCisJY291dCA8PCBlbmRsIDw8ICJUaGlzIGlzIGEgTG9jYXRlUmVzdWx0IE1lc3NhZ2UiIDw8IGVuZGw7CisJaW50IGxldmVsID0gMTsKKwkKKwlkb01lc3NhZ2VBYnN0cmFjdFR5cGVEdW1wKG1zZywgbGV2ZWwpOworCWRvUmVzdWx0VHlwZUR1bXAobXNnLCBsZXZlbCk7CisKKwlpbnQgajsKKworCWlmICgoaiA9IG1zZy0+Z2V0VW52ZXJpZmllZEtleUJpbmRpbmdTaXplKCkpID4gMCkgeworCisJCWNvdXQgPDwgZW5kbDsKKwkJbGV2ZWxTZXQobGV2ZWwpOworCQljb3V0IDw8ICJVbnZlcmlmaWVkIEtleSBCaW5kaW5ncyIgPDwgZW5kbCA8PCBlbmRsOworCisJCWZvciAoaW50IGkgPSAwOyBpIDwgaiA7ICsraSkgeworCisJCQlkb1VudmVyaWZpZWRLZXlCaW5kaW5nRHVtcChtc2ctPmdldFVudmVyaWZpZWRLZXlCaW5kaW5nSXRlbShpKSwgbGV2ZWwgKyAxKTsKKworCQl9CisKKwl9CisKKwlyZXR1cm4gMDsKK30KKworaW50IGRvVmFsaWRhdGVSZXN1bHREdW1wKFhLTVNWYWxpZGF0ZVJlc3VsdCAqbXNnKSB7CisKKwljb3V0IDw8IGVuZGwgPDwgIlRoaXMgaXMgYSBWYWxpZGF0ZVJlc3VsdCBNZXNzYWdlIiA8PCBlbmRsOworCWludCBsZXZlbCA9IDE7CisJCisJZG9NZXNzYWdlQWJzdHJhY3RUeXBlRHVtcChtc2csIGxldmVsKTsKKwlkb1Jlc3VsdFR5cGVEdW1wKG1zZywgbGV2ZWwpOworCisJaW50IGo7CisKKwlpZiAoKGogPSBtc2ctPmdldEtleUJpbmRpbmdTaXplKCkpID4gMCkgeworCisJCWNvdXQgPDwgZW5kbDsKKwkJbGV2ZWxTZXQobGV2ZWwpOworCQljb3V0IDw8ICJLZXkgQmluZGluZ3MiIDw8IGVuZGwgPDwgZW5kbDsKKworCQlmb3IgKGludCBpID0gMDsgaSA8IGogOyArK2kpIHsKKworCQkJZG9LZXlCaW5kaW5nRHVtcChtc2ctPmdldEtleUJpbmRpbmdJdGVtKGkpLCBsZXZlbCArIDEpOworCisJCX0KKworCX0KKworCXJldHVybiAwOworfQorCitpbnQgZG9SZWdpc3RlclJlc3VsdER1bXAoWEtNU1JlZ2lzdGVyUmVzdWx0ICptc2cpIHsKKworCWNvdXQgPDwgZW5kbCA8PCAiVGhpcyBpcyBhIFJlZ2lzdGVyUmVzdWx0IE1lc3NhZ2UiIDw8IGVuZGw7CisJaW50IGxldmVsID0gMTsKKwkKKwlkb01lc3NhZ2VBYnN0cmFjdFR5cGVEdW1wKG1zZywgbGV2ZWwpOworCWRvUmVzdWx0VHlwZUR1bXAobXNnLCBsZXZlbCk7CisKKwlpbnQgajsKKworCWlmICgoaiA9IG1zZy0+Z2V0S2V5QmluZGluZ1NpemUoKSkgPiAwKSB7CisKKwkJY291dCA8PCBlbmRsOworCQlsZXZlbFNldChsZXZlbCk7CisJCWNvdXQgPDwgIktleSBCaW5kaW5ncyIgPDwgZW5kbCA8PCBlbmRsOworCisJCWZvciAoaW50IGkgPSAwOyBpIDwgaiA7ICsraSkgeworCisJCQlkb0tleUJpbmRpbmdEdW1wKG1zZy0+Z2V0S2V5QmluZGluZ0l0ZW0oaSksIGxldmVsICsgMSk7CisKKwkJfQorCisJfQorCisJLy8gQ2hlY2sgaWYgdGhlcmUgaXMgYSBwcml2YXRlIGtleQorCWlmIChnX2F1dGhQYXNzUGhyYXNlKSB7CisJCVhLTVNSU0FLZXlQYWlyICoga3AgPSBtc2ctPmdldFJTQUtleVBhaXIoZ19hdXRoUGFzc1BocmFzZSk7CisJCWlmIChrcCAhPSBOVUxMKSB7CisJCQljb3V0IDw8IGVuZGw7CisJCQlsZXZlbFNldChsZXZlbCk7CisJCQljb3V0IDw8ICJSU0FLZXlQYWlyIGZvdW5kIiA8PCBlbmRsIDw8IGVuZGw7CisJCQlsZXZlbCArPSAxOworCisJCQkvLyBUcmFuc2xhdGUgdGhlIHBhcmFtZXRlcnMgdG8gY2hhciBzdHJpbmdzCisJCQljaGFyICogc01vZHVsdXMgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShrcC0+Z2V0TW9kdWx1cygpKTsKKwkJCWNoYXIgKiBzRXhwb25lbnQgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShrcC0+Z2V0RXhwb25lbnQoKSk7CisJCQljaGFyICogc1AgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShrcC0+Z2V0UCgpKTsKKwkJCWNoYXIgKiBzUSA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKGtwLT5nZXRRKCkpOworCQkJY2hhciAqIHNEUCA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKGtwLT5nZXREUCgpKTsKKwkJCWNoYXIgKiBzRFEgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShrcC0+Z2V0RFEoKSk7CisJCQljaGFyICogc0ludmVyc2VRID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoa3AtPmdldEludmVyc2VRKCkpOworCQkJY2hhciAqIHNEID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoa3AtPmdldEQoKSk7CisKKyNpZiBkZWZpbmVkIChIQVZFX09QRU5TU0wpCisKKwkJCWlmIChnX3ByaXZhdGVLZXlGaWxlICE9IE5VTEwpIHsKKwkJCQlsZXZlbFNldChsZXZlbCk7CisJCQkJY291dCA8PCAiV3JpdGluZyBwcml2YXRlIGtleSB0byBmaWxlICIgPDwgZ19wcml2YXRlS2V5RmlsZTsKKworCQkJCS8vIENyZWF0ZSB0aGUgUlNBIGtleSBmaWxlCisJCQkJUlNBICogcnNhID0gUlNBX25ldygpOworCQkJCXJzYS0+biA9IE9wZW5TU0xDcnlwdG9CYXNlNjQ6OmI2NDJCTihzTW9kdWx1cywgKHVuc2lnbmVkIGludCkgc3RybGVuKHNNb2R1bHVzKSk7CisJCQkJcnNhLT5lID0gT3BlblNTTENyeXB0b0Jhc2U2NDo6YjY0MkJOKHNFeHBvbmVudCwgKHVuc2lnbmVkIGludCkgc3RybGVuKHNFeHBvbmVudCkpOworCQkJCXJzYS0+ZCA9IE9wZW5TU0xDcnlwdG9CYXNlNjQ6OmI2NDJCTihzRCwgKHVuc2lnbmVkIGludCkgc3RybGVuKHNEKSk7CisJCQkJcnNhLT5wID0gT3BlblNTTENyeXB0b0Jhc2U2NDo6YjY0MkJOKHNQLCAodW5zaWduZWQgaW50KSBzdHJsZW4oc1ApKTsKKwkJCQlyc2EtPnEgPSBPcGVuU1NMQ3J5cHRvQmFzZTY0OjpiNjQyQk4oc1EsICh1bnNpZ25lZCBpbnQpIHN0cmxlbihzUSkpOworCQkJCXJzYS0+ZG1wMSA9IE9wZW5TU0xDcnlwdG9CYXNlNjQ6OmI2NDJCTihzRFAsICh1bnNpZ25lZCBpbnQpIHN0cmxlbihzRFApKTsKKwkJCQlyc2EtPmRtcTEgPSBPcGVuU1NMQ3J5cHRvQmFzZTY0OjpiNjQyQk4oc0RRLCAodW5zaWduZWQgaW50KSBzdHJsZW4oc0RRKSk7CisJCQkJcnNhLT5pcW1wID0gT3BlblNTTENyeXB0b0Jhc2U2NDo6YjY0MkJOKHNJbnZlcnNlUSwgKHVuc2lnbmVkIGludCkgc3RybGVuKHNJbnZlcnNlUSkpOworCisJCQkJLy8gV3JpdGUgaXQgdG8gZGlzaworCQkJCUJJTyAqb3V0OworCQkJCW91dCA9IEJJT19uZXdfZmlsZShnX3ByaXZhdGVLZXlGaWxlLCAidyIpOworCQkJCWlmKCFvdXQpIGNvdXQgPDwgIkVycm9yIG9jY3VycmVkIGluIG9wZW5pbmcgZmlsZSEiIDw8IGVuZGwgPDwgZW5kbDsKKwkJCQlpZiAoIVBFTV93cml0ZV9iaW9fUlNBUHJpdmF0ZUtleShvdXQsIHJzYSwgRVZQX2Rlc19lZGUzX2NiYygpLCBOVUxMLCAwLCAwLCBnX3ByaXZhdGVLZXlQYXNzUGhyYXNlKSkgeworCQkJCQljb3V0IDw8ICJFcnJvciBjcmVhdGluZyBQRU0gb3V0cHV0IiA8PCBlbmRsIDw8IGVuZGw7CisJCQkJfQorCQkJCUJJT19mcmVlKG91dCk7CisJCQkJUlNBX2ZyZWUocnNhKTsKKworCQkJCWNvdXQgPDwgIiBkb25lIiA8PCBlbmRsIDw8IGVuZGw7CisKKwkJCX0KKyNlbmRpZgorCQkJLy8gTm93IG91dHB1dAorCQkJbGV2ZWxTZXQobGV2ZWwpOworCQkJY291dCA8PCAiTW9kdWx1cyA9ICIgPDwgc01vZHVsdXMgPDwgZW5kbDsKKwkJCVhTRUNfUkVMRUFTRV9YTUxDSChzTW9kdWx1cyk7CisJCQkKKwkJCWxldmVsU2V0KGxldmVsKTsKKwkJCWNvdXQgPDwgIkV4cG9uZW50ID0gIiA8PCBzRXhwb25lbnQgPDwgZW5kbDsKKwkJCVhTRUNfUkVMRUFTRV9YTUxDSChzRXhwb25lbnQpOworCisJCQlsZXZlbFNldChsZXZlbCk7CisJCQljb3V0IDw8ICJQID0gIiA8PCBzUCA8PCBlbmRsOworCQkJWFNFQ19SRUxFQVNFX1hNTENIKHNQKTsKKworCQkJbGV2ZWxTZXQobGV2ZWwpOworCQkJY291dCA8PCAiUSA9ICIgPDwgc1EgPDwgZW5kbDsKKwkJCVhTRUNfUkVMRUFTRV9YTUxDSChzUSk7CisKKwkJCWxldmVsU2V0KGxldmVsKTsKKwkJCWNvdXQgPDwgIkRQID0gIiA8PCBzRFAgPDwgZW5kbDsKKwkJCVhTRUNfUkVMRUFTRV9YTUxDSChzRFApOworCisJCQlsZXZlbFNldChsZXZlbCk7CisJCQljb3V0IDw8ICJEUSA9ICIgPDwgc0RRIDw8IGVuZGw7CisJCQlYU0VDX1JFTEVBU0VfWE1MQ0goc0RRKTsKKworCQkJbGV2ZWxTZXQobGV2ZWwpOworCQkJY291dCA8PCAiSW52ZXJzZSBRID0gIiA8PCBzSW52ZXJzZVEgPDwgZW5kbDsKKwkJCVhTRUNfUkVMRUFTRV9YTUxDSChzSW52ZXJzZVEpOworCisJCQlsZXZlbFNldChsZXZlbCk7CisJCQljb3V0IDw8ICJEID0gIiA8PCBzRCA8PCBlbmRsOworCQkJWFNFQ19SRUxFQVNFX1hNTENIKHNEKTsKKwkJfQorCX0KKwllbHNlIHsKKwkJbGV2ZWxTZXQobGV2ZWwpOworCQljb3V0IDw8ICJOb3QgY2hlY2tpbmcgZm9yIHByaXZhdGUga2V5IGFzIG5vIGRlY3J5cHRpb24gcGhyYXNlIHNldCI7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK2ludCBkb1JlY292ZXJSZXN1bHREdW1wKFhLTVNSZWNvdmVyUmVzdWx0ICptc2cpIHsKKworCWNvdXQgPDwgZW5kbCA8PCAiVGhpcyBpcyBhIFJlY292ZXJSZXN1bHQgTWVzc2FnZSIgPDwgZW5kbDsKKwlpbnQgbGV2ZWwgPSAxOworCQorCWRvTWVzc2FnZUFic3RyYWN0VHlwZUR1bXAobXNnLCBsZXZlbCk7CisJZG9SZXN1bHRUeXBlRHVtcChtc2csIGxldmVsKTsKKworCWludCBqOworCisJaWYgKChqID0gbXNnLT5nZXRLZXlCaW5kaW5nU2l6ZSgpKSA+IDApIHsKKworCQljb3V0IDw8IGVuZGw7CisJCWxldmVsU2V0KGxldmVsKTsKKwkJY291dCA8PCAiS2V5IEJpbmRpbmdzIiA8PCBlbmRsIDw8IGVuZGw7CisKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBqIDsgKytpKSB7CisKKwkJCWRvS2V5QmluZGluZ0R1bXAobXNnLT5nZXRLZXlCaW5kaW5nSXRlbShpKSwgbGV2ZWwgKyAxKTsKKworCQl9CisKKwl9CisKKwkvLyBDaGVjayBpZiB0aGVyZSBpcyBhIHByaXZhdGUga2V5CisJaWYgKGdfYXV0aFBhc3NQaHJhc2UpIHsKKwkJWEtNU1JTQUtleVBhaXIgKiBrcCA9IG1zZy0+Z2V0UlNBS2V5UGFpcihnX2F1dGhQYXNzUGhyYXNlKTsKKwkJaWYgKGtwICE9IE5VTEwpIHsKKwkJCWNvdXQgPDwgZW5kbDsKKwkJCWxldmVsU2V0KGxldmVsKTsKKwkJCWNvdXQgPDwgIlJTQUtleVBhaXIgZm91bmQiIDw8IGVuZGwgPDwgZW5kbDsKKwkJCWxldmVsICs9IDE7CisKKwkJCS8vIFRyYW5zbGF0ZSB0aGUgcGFyYW1ldGVycyB0byBjaGFyIHN0cmluZ3MKKwkJCWNoYXIgKiBzTW9kdWx1cyA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKGtwLT5nZXRNb2R1bHVzKCkpOworCQkJY2hhciAqIHNFeHBvbmVudCA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKGtwLT5nZXRFeHBvbmVudCgpKTsKKwkJCWNoYXIgKiBzUCA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKGtwLT5nZXRQKCkpOworCQkJY2hhciAqIHNRID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoa3AtPmdldFEoKSk7CisJCQljaGFyICogc0RQID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoa3AtPmdldERQKCkpOworCQkJY2hhciAqIHNEUSA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKGtwLT5nZXREUSgpKTsKKwkJCWNoYXIgKiBzSW52ZXJzZVEgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShrcC0+Z2V0SW52ZXJzZVEoKSk7CisJCQljaGFyICogc0QgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShrcC0+Z2V0RCgpKTsKKworI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKworCQkJaWYgKGdfcHJpdmF0ZUtleUZpbGUgIT0gTlVMTCkgeworCQkJCWxldmVsU2V0KGxldmVsKTsKKwkJCQljb3V0IDw8ICJXcml0aW5nIHByaXZhdGUga2V5IHRvIGZpbGUgIiA8PCBnX3ByaXZhdGVLZXlGaWxlOworCisJCQkJLy8gQ3JlYXRlIHRoZSBSU0Ega2V5IGZpbGUKKwkJCQlSU0EgKiByc2EgPSBSU0FfbmV3KCk7CisJCQkJcnNhLT5uID0gT3BlblNTTENyeXB0b0Jhc2U2NDo6YjY0MkJOKHNNb2R1bHVzLCAodW5zaWduZWQgaW50KSBzdHJsZW4oc01vZHVsdXMpKTsKKwkJCQlyc2EtPmUgPSBPcGVuU1NMQ3J5cHRvQmFzZTY0OjpiNjQyQk4oc0V4cG9uZW50LCAodW5zaWduZWQgaW50KSBzdHJsZW4oc0V4cG9uZW50KSk7CisJCQkJcnNhLT5kID0gT3BlblNTTENyeXB0b0Jhc2U2NDo6YjY0MkJOKHNELCAodW5zaWduZWQgaW50KSBzdHJsZW4oc0QpKTsKKwkJCQlyc2EtPnAgPSBPcGVuU1NMQ3J5cHRvQmFzZTY0OjpiNjQyQk4oc1AsICh1bnNpZ25lZCBpbnQpIHN0cmxlbihzUCkpOworCQkJCXJzYS0+cSA9IE9wZW5TU0xDcnlwdG9CYXNlNjQ6OmI2NDJCTihzUSwgKHVuc2lnbmVkIGludCkgc3RybGVuKHNRKSk7CisJCQkJcnNhLT5kbXAxID0gT3BlblNTTENyeXB0b0Jhc2U2NDo6YjY0MkJOKHNEUCwgKHVuc2lnbmVkIGludCkgc3RybGVuKHNEUCkpOworCQkJCXJzYS0+ZG1xMSA9IE9wZW5TU0xDcnlwdG9CYXNlNjQ6OmI2NDJCTihzRFEsICh1bnNpZ25lZCBpbnQpIHN0cmxlbihzRFEpKTsKKwkJCQlyc2EtPmlxbXAgPSBPcGVuU1NMQ3J5cHRvQmFzZTY0OjpiNjQyQk4oc0ludmVyc2VRLCAodW5zaWduZWQgaW50KSBzdHJsZW4oc0ludmVyc2VRKSk7CisKKwkJCQkvLyBXcml0ZSBpdCB0byBkaXNrCisJCQkJQklPICpvdXQ7CisJCQkJb3V0ID0gQklPX25ld19maWxlKGdfcHJpdmF0ZUtleUZpbGUsICJ3Iik7CisJCQkJaWYoIW91dCkgY291dCA8PCAiRXJyb3Igb2NjdXJyZWQgaW4gb3BlbmluZyBmaWxlISIgPDwgZW5kbCA8PCBlbmRsOworCQkJCWlmICghUEVNX3dyaXRlX2Jpb19SU0FQcml2YXRlS2V5KG91dCwgcnNhLCBFVlBfZGVzX2VkZTNfY2JjKCksIE5VTEwsIDAsIDAsIGdfcHJpdmF0ZUtleVBhc3NQaHJhc2UpKSB7CisJCQkJCWNvdXQgPDwgIkVycm9yIGNyZWF0aW5nIFBFTSBvdXRwdXQiIDw8IGVuZGwgPDwgZW5kbDsKKwkJCQl9CisJCQkJQklPX2ZyZWUob3V0KTsKKwkJCQlSU0FfZnJlZShyc2EpOworCisJCQkJY291dCA8PCAiIGRvbmUiIDw8IGVuZGwgPDwgZW5kbDsKKworCQkJfQorI2VuZGlmCisJCQkvLyBOb3cgb3V0cHV0CisJCQlsZXZlbFNldChsZXZlbCk7CisJCQljb3V0IDw8ICJNb2R1bHVzID0gIiA8PCBzTW9kdWx1cyA8PCBlbmRsOworCQkJWFNFQ19SRUxFQVNFX1hNTENIKHNNb2R1bHVzKTsKKwkJCQorCQkJbGV2ZWxTZXQobGV2ZWwpOworCQkJY291dCA8PCAiRXhwb25lbnQgPSAiIDw8IHNFeHBvbmVudCA8PCBlbmRsOworCQkJWFNFQ19SRUxFQVNFX1hNTENIKHNFeHBvbmVudCk7CisKKwkJCWxldmVsU2V0KGxldmVsKTsKKwkJCWNvdXQgPDwgIlAgPSAiIDw8IHNQIDw8IGVuZGw7CisJCQlYU0VDX1JFTEVBU0VfWE1MQ0goc1ApOworCisJCQlsZXZlbFNldChsZXZlbCk7CisJCQljb3V0IDw8ICJRID0gIiA8PCBzUSA8PCBlbmRsOworCQkJWFNFQ19SRUxFQVNFX1hNTENIKHNRKTsKKworCQkJbGV2ZWxTZXQobGV2ZWwpOworCQkJY291dCA8PCAiRFAgPSAiIDw8IHNEUCA8PCBlbmRsOworCQkJWFNFQ19SRUxFQVNFX1hNTENIKHNEUCk7CisKKwkJCWxldmVsU2V0KGxldmVsKTsKKwkJCWNvdXQgPDwgIkRRID0gIiA8PCBzRFEgPDwgZW5kbDsKKwkJCVhTRUNfUkVMRUFTRV9YTUxDSChzRFEpOworCisJCQlsZXZlbFNldChsZXZlbCk7CisJCQljb3V0IDw8ICJJbnZlcnNlIFEgPSAiIDw8IHNJbnZlcnNlUSA8PCBlbmRsOworCQkJWFNFQ19SRUxFQVNFX1hNTENIKHNJbnZlcnNlUSk7CisKKwkJCWxldmVsU2V0KGxldmVsKTsKKwkJCWNvdXQgPDwgIkQgPSAiIDw8IHNEIDw8IGVuZGw7CisJCQlYU0VDX1JFTEVBU0VfWE1MQ0goc0QpOworCQl9CisJfQorCWVsc2UgeworCQlsZXZlbFNldChsZXZlbCk7CisJCWNvdXQgPDwgIk5vdCBjaGVja2luZyBmb3IgcHJpdmF0ZSBrZXkgYXMgbm8gZGVjcnlwdGlvbiBwaHJhc2Ugc2V0IjsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworaW50IGRvUmV2b2tlUmVzdWx0RHVtcChYS01TUmV2b2tlUmVzdWx0ICptc2cpIHsKKworCWNvdXQgPDwgZW5kbCA8PCAiVGhpcyBpcyBhIFJldm9rZVJlc3VsdCBNZXNzYWdlIiA8PCBlbmRsOworCWludCBsZXZlbCA9IDE7CisJCisJZG9NZXNzYWdlQWJzdHJhY3RUeXBlRHVtcChtc2csIGxldmVsKTsKKwlkb1Jlc3VsdFR5cGVEdW1wKG1zZywgbGV2ZWwpOworCisJaW50IGo7CisKKwlpZiAoKGogPSBtc2ctPmdldEtleUJpbmRpbmdTaXplKCkpID4gMCkgeworCisJCWNvdXQgPDwgZW5kbDsKKwkJbGV2ZWxTZXQobGV2ZWwpOworCQljb3V0IDw8ICJLZXkgQmluZGluZ3MiIDw8IGVuZGwgPDwgZW5kbDsKKworCQlmb3IgKGludCBpID0gMDsgaSA8IGogOyArK2kpIHsKKworCQkJZG9LZXlCaW5kaW5nRHVtcChtc2ctPmdldEtleUJpbmRpbmdJdGVtKGkpLCBsZXZlbCArIDEpOworCisJCX0KKworCX0KKworCXJldHVybiAwOworfQorCitpbnQgZG9SZWlzc3VlUmVzdWx0RHVtcChYS01TUmVpc3N1ZVJlc3VsdCAqbXNnKSB7CisKKwljb3V0IDw8IGVuZGwgPDwgIlRoaXMgaXMgYSBSZWlzc3VlUmVzdWx0IE1lc3NhZ2UiIDw8IGVuZGw7CisJaW50IGxldmVsID0gMTsKKwkKKwlkb01lc3NhZ2VBYnN0cmFjdFR5cGVEdW1wKG1zZywgbGV2ZWwpOworCWRvUmVzdWx0VHlwZUR1bXAobXNnLCBsZXZlbCk7CisKKwlpbnQgajsKKworCWlmICgoaiA9IG1zZy0+Z2V0S2V5QmluZGluZ1NpemUoKSkgPiAwKSB7CisKKwkJY291dCA8PCBlbmRsOworCQlsZXZlbFNldChsZXZlbCk7CisJCWNvdXQgPDwgIktleSBCaW5kaW5ncyIgPDwgZW5kbCA8PCBlbmRsOworCisJCWZvciAoaW50IGkgPSAwOyBpIDwgaiA7ICsraSkgeworCisJCQlkb0tleUJpbmRpbmdEdW1wKG1zZy0+Z2V0S2V5QmluZGluZ0l0ZW0oaSksIGxldmVsICsgMSk7CisKKwkJfQorCisJfQorCisJcmV0dXJuIDA7Cit9CisKK2ludCBkb1N0YXR1c1Jlc3VsdER1bXAoWEtNU1N0YXR1c1Jlc3VsdCAqbXNnKSB7CisKKwljb3V0IDw8IGVuZGwgPDwgIlRoaXMgaXMgYSBTdGF0dXNSZXN1bHQgTWVzc2FnZSIgPDwgZW5kbDsKKwlpbnQgbGV2ZWwgPSAxOworCQorCWRvTWVzc2FnZUFic3RyYWN0VHlwZUR1bXAobXNnLCBsZXZlbCk7CisJZG9SZXN1bHRUeXBlRHVtcChtc2csIGxldmVsKTsKKworCXJldHVybiAwOworfQorCitpbnQgZG9SZXN1bHREdW1wKFhLTVNSZXN1bHQgKm1zZykgeworCisJY291dCA8PCBlbmRsIDw8ICJUaGlzIGlzIGEgUmVzdWx0IE1lc3NhZ2UiIDw8IGVuZGw7CisJaW50IGxldmVsID0gMTsKKwkKKwlkb01lc3NhZ2VBYnN0cmFjdFR5cGVEdW1wKG1zZywgbGV2ZWwpOworCWRvUmVzdWx0VHlwZUR1bXAobXNnLCBsZXZlbCk7CisKKwlyZXR1cm4gMDsKK30KKworaW50IGRvUmVnaXN0ZXJSZXF1ZXN0RHVtcChYS01TUmVnaXN0ZXJSZXF1ZXN0ICptc2cpIHsKKworCWNvdXQgPDwgZW5kbCA8PCAiVGhpcyBpcyBhIFJlZ2lzdGVyUmVxdWVzdCBNZXNzYWdlIiA8PCBlbmRsOworCWludCBsZXZlbCA9IDE7CisJCisJZG9NZXNzYWdlQWJzdHJhY3RUeXBlRHVtcChtc2csIGxldmVsKTsKKwlkb1JlcXVlc3RBYnN0cmFjdFR5cGVEdW1wKG1zZywgbGV2ZWwpOworCisJWEtNU1Byb3RvdHlwZUtleUJpbmRpbmcgKnBrYiA9IG1zZy0+Z2V0UHJvdG90eXBlS2V5QmluZGluZygpOworCWlmIChwa2IgIT0gTlVMTCkgeworCQljb25zdCBYTUxDaCAqIHJjaSA9IHBrYi0+Z2V0UmV2b2NhdGlvbkNvZGVJZGVudGlmaWVyKCk7CisJCWlmIChyY2kgIT0gTlVMTCkgeworCQkJbGV2ZWxTZXQoMSk7CisJCQljaGFyICogc3IgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShyY2kpOworCQkJY291dCA8PCAiUmV2b2NhdGlvbiBDb2RlIGZvdW5kID0gIiA8PCBzciA8PCBlbmRsOworCQkJWFNFQ19SRUxFQVNFX1hNTENIKHNyKTsKKwkJfQorCisJCWRvS2V5QmluZGluZ0Fic3RyYWN0RHVtcChwa2IsIGxldmVsKTsKKwl9CisKKwkvLyBDaGVjayBhdXRoZW50aWNhdGlvbgorCWRvQXV0aGVudGljYXRpb25EdW1wKG1zZy0+Z2V0QXV0aGVudGljYXRpb24oKSwgbGV2ZWwpOworCisJLy8gQ2hlY2sgUHJvb2ZPZlBvc3Nlc3Npb24KKwlsZXZlbFNldCgxKTsKKwlEU0lHU2lnbmF0dXJlICogc2lnID0gbXNnLT5nZXRQcm9vZk9mUG9zc2Vzc2lvblNpZ25hdHVyZSgpOworCWlmIChzaWcgIT0gTlVMTCkgeworCisJCWNvdXQgPDwgIlByb29mIG9mIFBvc3Nlc3Npb25TaWduYXR1cmUgc2lnbmF0dXJlIGZvdW5kLiBDaGVja2luZy4uLi4gIjsKKworCQkvLyBUcnkgdG8gZmluZCB0aGUga2V5CisJCVhTRUNLZXlJbmZvUmVzb2x2ZXJEZWZhdWx0IGtpcjsKKwkJWFNFQ0NyeXB0b0tleSAqIGsgPSBraXIucmVzb2x2ZUtleShwa2ItPmdldEtleUluZm9MaXN0KCkpOworCisJCWlmIChrICE9IE5VTEwpIHsKKworCQkJc2lnLT5zZXRTaWduaW5nS2V5KGspOworCQkJaWYgKHNpZy0+dmVyaWZ5KCkpCisJCQkJY291dCA8PCAiT0shIiA8PCBlbmRsOworCQkJZWxzZSAKKwkJCQljb3V0IDw8ICJTaWduYXR1cmUgQmFkISIgPDwgZW5kbDsKKwkJfQorCQllbHNlCisJCQljb3V0IDw8ICJDYW5ub3Qgb2J0YWluIGtleSBmcm9tIFByb3RvdHlwZUtleUJpbmRpbmciIDw8IGVuZGw7CisKKwl9CisJZWxzZSB7CisKKwkJY291dCA8PCAiTm8gUHJvb2ZPZlBvc3Nlc3Npb24gU2lnbmF0dXJlIGZvdW5kIiA8PCBlbmRsOworCisJfQorCisJcmV0dXJuIDA7CisKK30KKworaW50IGRvUmV2b2tlUmVxdWVzdER1bXAoWEtNU1Jldm9rZVJlcXVlc3QgKm1zZykgeworCisJY291dCA8PCBlbmRsIDw8ICJUaGlzIGlzIGEgUmV2b2tlUmVxdWVzdCBNZXNzYWdlIiA8PCBlbmRsOworCWludCBsZXZlbCA9IDE7CisJCisJZG9NZXNzYWdlQWJzdHJhY3RUeXBlRHVtcChtc2csIGxldmVsKTsKKwlkb1JlcXVlc3RBYnN0cmFjdFR5cGVEdW1wKG1zZywgbGV2ZWwpOworCisJWEtNU1Jldm9rZUtleUJpbmRpbmcgKnJrYiA9IG1zZy0+Z2V0UmV2b2tlS2V5QmluZGluZygpOworCWlmIChya2IgIT0gTlVMTCkgeworCQlkb1Jldm9rZUtleUJpbmRpbmdEdW1wKHJrYiwgbGV2ZWwpOworCX0KKworCS8vIENoZWNrIGF1dGhlbnRpY2F0aW9uCisJaWYgKG1zZy0+Z2V0QXV0aGVudGljYXRpb24oKSkKKwkJZG9BdXRoZW50aWNhdGlvbkR1bXAobXNnLT5nZXRBdXRoZW50aWNhdGlvbigpLCBsZXZlbCk7CisKKwlpZiAobXNnLT5nZXRSZXZvY2F0aW9uQ29kZSgpKSB7CisKKwkJbGV2ZWxTZXQoMSk7CisJCWNvdXQgPDwgIlJldm9jYXRpb25Db2RlIGZvdW5kID0gIjsKKwkJY2hhciAqIHNyID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUobXNnLT5nZXRSZXZvY2F0aW9uQ29kZSgpKTsKKwkJY291dCA8PCBzciA8PCBlbmRsOworCQlYU0VDX1JFTEVBU0VfWE1MQ0goc3IpOworCX0KKworCXJldHVybiAwOworCit9CisKK2ludCBkb1JlY292ZXJSZXF1ZXN0RHVtcChYS01TUmVjb3ZlclJlcXVlc3QgKm1zZykgeworCisJY291dCA8PCBlbmRsIDw8ICJUaGlzIGlzIGEgUmVjb3ZlclJlcXVlc3QgTWVzc2FnZSIgPDwgZW5kbDsKKwlpbnQgbGV2ZWwgPSAxOworCQorCWRvTWVzc2FnZUFic3RyYWN0VHlwZUR1bXAobXNnLCBsZXZlbCk7CisJZG9SZXF1ZXN0QWJzdHJhY3RUeXBlRHVtcChtc2csIGxldmVsKTsKKworCVhLTVNSZWNvdmVyS2V5QmluZGluZyAqcmtiID0gbXNnLT5nZXRSZWNvdmVyS2V5QmluZGluZygpOworCWlmIChya2IgIT0gTlVMTCkgeworCQlkb1JlY292ZXJLZXlCaW5kaW5nRHVtcChya2IsIGxldmVsKTsKKwl9CisKKwkvLyBDaGVjayBhdXRoZW50aWNhdGlvbgorCWlmIChtc2ctPmdldEF1dGhlbnRpY2F0aW9uKCkpCisJCWRvQXV0aGVudGljYXRpb25EdW1wKG1zZy0+Z2V0QXV0aGVudGljYXRpb24oKSwgbGV2ZWwpOworCisJcmV0dXJuIDA7CisKK30KKworaW50IGRvUmVpc3N1ZVJlcXVlc3REdW1wKFhLTVNSZWlzc3VlUmVxdWVzdCAqbXNnKSB7CisKKwljb3V0IDw8IGVuZGwgPDwgIlRoaXMgaXMgYSBSZWl1c3N1ZVJlcXVlc3QgTWVzc2FnZSIgPDwgZW5kbDsKKwlpbnQgbGV2ZWwgPSAxOworCQorCWRvTWVzc2FnZUFic3RyYWN0VHlwZUR1bXAobXNnLCBsZXZlbCk7CisJZG9SZXF1ZXN0QWJzdHJhY3RUeXBlRHVtcChtc2csIGxldmVsKTsKKworCVhLTVNSZWlzc3VlS2V5QmluZGluZyAqcmtiID0gbXNnLT5nZXRSZWlzc3VlS2V5QmluZGluZygpOworCWlmIChya2IgIT0gTlVMTCkgeworCQlkb1JlaXNzdWVLZXlCaW5kaW5nRHVtcChya2IsIGxldmVsKTsKKwl9CisKKwkvLyBDaGVjayBhdXRoZW50aWNhdGlvbgorCWRvQXV0aGVudGljYXRpb25EdW1wKG1zZy0+Z2V0QXV0aGVudGljYXRpb24oKSwgbGV2ZWwpOworCisJLy8gQ2hlY2sgUHJvb2ZPZlBvc3Nlc3Npb24KKwlsZXZlbFNldCgxKTsKKwlEU0lHU2lnbmF0dXJlICogc2lnID0gbXNnLT5nZXRQcm9vZk9mUG9zc2Vzc2lvblNpZ25hdHVyZSgpOworCWlmIChzaWcgIT0gTlVMTCkgeworCisJCWNvdXQgPDwgIlByb29mIG9mIFBvc3Nlc3Npb25TaWduYXR1cmUgc2lnbmF0dXJlIGZvdW5kLiBDaGVja2luZy4uLi4gIjsKKworCQkvLyBUcnkgdG8gZmluZCB0aGUga2V5CisJCVhTRUNLZXlJbmZvUmVzb2x2ZXJEZWZhdWx0IGtpcjsKKwkJWFNFQ0NyeXB0b0tleSAqIGsgPSBraXIucmVzb2x2ZUtleShya2ItPmdldEtleUluZm9MaXN0KCkpOworCisJCWlmIChrICE9IE5VTEwpIHsKKworCQkJc2lnLT5zZXRTaWduaW5nS2V5KGspOworCQkJaWYgKHNpZy0+dmVyaWZ5KCkpCisJCQkJY291dCA8PCAiT0shIiA8PCBlbmRsOworCQkJZWxzZSAKKwkJCQljb3V0IDw8ICJTaWduYXR1cmUgQmFkISIgPDwgZW5kbDsKKwkJfQorCQllbHNlCisJCQljb3V0IDw8ICJDYW5ub3Qgb2J0YWluIGtleSBmcm9tIFByb3RvdHlwZUtleUJpbmRpbmciIDw8IGVuZGw7CisKKwl9CisJZWxzZSB7CisKKwkJY291dCA8PCAiTm8gUHJvb2ZPZlBvc3Nlc3Npb24gU2lnbmF0dXJlIGZvdW5kIiA8PCBlbmRsOworCisJfQorCisJcmV0dXJuIDA7CisKK30KKworaW50IGRvTXNnRHVtcChYS01TTWVzc2FnZUFic3RyYWN0VHlwZSAqIG1zZykgeworCisJaWYgKG1zZy0+aXNTaWduZWQoKSkgeworCisJCWNvdXQgPDwgIk1lc3NhZ2UgaXMgc2lnbmVkLiAgQ2hlY2tpbmcgc2lnbmF0dXJlIC4uLiAiOworCQl0cnkgeworCisJCQlYU0VDS2V5SW5mb1Jlc29sdmVyRGVmYXVsdCB0aGVLZXlJbmZvUmVzb2x2ZXI7CisJCQlEU0lHU2lnbmF0dXJlICogc2lnID0gbXNnLT5nZXRTaWduYXR1cmUoKTsKKworCQkJLy8gVGhlIG9ubHkgd2F5IHdlIGNhbiB2ZXJpZnkgaXMgdXNpbmcga2V5cyByZWFkIGRpcmVjdGx5IGZyb20gdGhlIEtleUluZm8gbGlzdCwKKwkJCS8vIHNvIHdlIGFkZCBhIEtleUluZm9SZXNvbHZlckRlZmF1bHQgdG8gdGhlIFNpZ25hdHVyZS4KKworCQkJc2lnLT5zZXRLZXlJbmZvUmVzb2x2ZXIoJnRoZUtleUluZm9SZXNvbHZlcik7CisKKwkJCWlmIChzaWctPnZlcmlmeSgpKQorCQkJCWNvdXQgPDwgIk9LISIgPDwgZW5kbDsKKwkJCWVsc2UKKwkJCQljb3V0IDw8ICJCYWQhIiA8PCBlbmRsOworCisJCX0KKwkKKwkJY2F0Y2ggKFhTRUNFeGNlcHRpb24gJmUpIHsKKwkJCWNvdXQgPDwgIkJhZCEuICBDYXVnaHQgZXhjZXB0aW9uIDogIiA8PCBlbmRsOworCQkJY2hhciAqIG1zZyA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKGUuZ2V0TXNnKCkpOworCQkJY291dCA8PCBtc2cgPDwgZW5kbDsKKwkJCVhTRUNfUkVMRUFTRV9YTUxDSChtc2cpOworCQl9CisJfQorCisJaW50IGk7CisKKwlzd2l0Y2ggKG1zZy0+Z2V0TWVzc2FnZVR5cGUoKSkgeworCisJY2FzZSBYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6Q29tcG91bmRSZXF1ZXN0IDoKKworCQljb3V0IDw8ICJDb21wb3VuZCBSZXF1ZXN0XG5cbiI7CisKKwkJZm9yIChpID0gMCA7IGkgPCAoKFhLTVNDb21wb3VuZFJlcXVlc3QgKikgKG1zZykpLT5nZXRSZXF1ZXN0TGlzdFNpemUoKTsgKytpKSB7CisKKwkJCWNvdXQgPDwgIk1lc3NhZ2UgIiA8PCBpIDw8IGVuZGw7CisJCQlkb01zZ0R1bXAoKChYS01TQ29tcG91bmRSZXF1ZXN0ICopIG1zZyktPmdldFJlcXVlc3RMaXN0SXRlbShpKSk7CisKKwkJfQorCQlicmVhazsKKwkKKwljYXNlIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlOjpDb21wb3VuZFJlc3VsdCA6CisKKwkJY291dCA8PCAiQ29tcG91bmQgUmVzdWx0XG5cbiI7CisKKwkJZm9yIChpID0gMCA7IGkgPCAoKFhLTVNDb21wb3VuZFJlc3VsdCAqKShtc2cpKS0+Z2V0UmVzdWx0TGlzdFNpemUoKTsgKytpKSB7CisKKwkJCWNvdXQgPDwgIk1lc3NhZ2UgIiA8PCBpIDw8IGVuZGw7CisJCQlkb01zZ0R1bXAoKChYS01TQ29tcG91bmRSZXN1bHQgKikgbXNnKS0+Z2V0UmVzdWx0TGlzdEl0ZW0oaSkpOworCisJCX0KKwkJYnJlYWs7CisJCisJY2FzZSBYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6TG9jYXRlUmVxdWVzdCA6CisKKwkJZG9Mb2NhdGVSZXF1ZXN0RHVtcCgoWEtNU0xvY2F0ZVJlcXVlc3QgKikgbXNnKTsKKwkJYnJlYWs7CisKKwljYXNlIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlOjpMb2NhdGVSZXN1bHQgOgorCisJCWRvTG9jYXRlUmVzdWx0RHVtcCgoWEtNU0xvY2F0ZVJlc3VsdCAqKSBtc2cpOworCQlicmVhazsKKworCWNhc2UgWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGU6OlN0YXR1c1JlcXVlc3QgOgorCisJCWRvU3RhdHVzUmVxdWVzdER1bXAoKFhLTVNTdGF0dXNSZXF1ZXN0ICopIG1zZyk7CisJCWJyZWFrOworCisJY2FzZSBYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6U3RhdHVzUmVzdWx0IDoKKworCQlkb1N0YXR1c1Jlc3VsdER1bXAoKFhLTVNTdGF0dXNSZXN1bHQgKikgbXNnKTsKKwkJYnJlYWs7CisKKwljYXNlIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlOjpSZXN1bHQgOgorCisJCWRvUmVzdWx0RHVtcCgoWEtNU1Jlc3VsdCAqKSBtc2cpOworCQlicmVhazsKKworCWNhc2UgWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGU6OlZhbGlkYXRlUmVxdWVzdCA6CisKKwkJZG9WYWxpZGF0ZVJlcXVlc3REdW1wKChYS01TVmFsaWRhdGVSZXF1ZXN0ICopIG1zZyk7CisJCWJyZWFrOworCisJY2FzZSBYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6VmFsaWRhdGVSZXN1bHQgOgorCisJCWRvVmFsaWRhdGVSZXN1bHREdW1wKChYS01TVmFsaWRhdGVSZXN1bHQgKikgbXNnKTsKKwkJYnJlYWs7CisKKwljYXNlIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlOjpSZWdpc3RlclJlcXVlc3QgOgorCisJCWRvUmVnaXN0ZXJSZXF1ZXN0RHVtcCgoWEtNU1JlZ2lzdGVyUmVxdWVzdCAqKSBtc2cpOworCQlicmVhazsKKworCWNhc2UgWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGU6OlJlZ2lzdGVyUmVzdWx0IDoKKworCQlkb1JlZ2lzdGVyUmVzdWx0RHVtcCgoWEtNU1JlZ2lzdGVyUmVzdWx0ICopIG1zZyk7CisJCWJyZWFrOworCisJY2FzZSBYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6UmV2b2tlUmVxdWVzdCA6CisKKwkJZG9SZXZva2VSZXF1ZXN0RHVtcCgoWEtNU1Jldm9rZVJlcXVlc3QgKikgbXNnKTsKKwkJYnJlYWs7CisKKwljYXNlIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlOjpSZXZva2VSZXN1bHQgOgorCisJCWRvUmV2b2tlUmVzdWx0RHVtcCgoWEtNU1Jldm9rZVJlc3VsdCAqKSBtc2cpOworCQlicmVhazsKKworCWNhc2UgWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGU6OlJlY292ZXJSZXF1ZXN0IDoKKworCQlkb1JlY292ZXJSZXF1ZXN0RHVtcCgoWEtNU1JlY292ZXJSZXF1ZXN0ICopIG1zZyk7CisJCWJyZWFrOworCisJY2FzZSBYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6UmVjb3ZlclJlc3VsdCA6CisKKwkJZG9SZWNvdmVyUmVzdWx0RHVtcCgoWEtNU1JlY292ZXJSZXN1bHQgKikgbXNnKTsKKwkJYnJlYWs7CisKKwljYXNlIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlOjpSZWlzc3VlUmVxdWVzdCA6CisKKwkJZG9SZWlzc3VlUmVxdWVzdER1bXAoKFhLTVNSZWlzc3VlUmVxdWVzdCAqKSBtc2cpOworCQlicmVhazsKKworCWNhc2UgWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGU6OlJlaXNzdWVSZXN1bHQgOgorCisJCWRvUmVpc3N1ZVJlc3VsdER1bXAoKFhLTVNSZWlzc3VlUmVzdWx0ICopIG1zZyk7CisJCWJyZWFrOworCisJZGVmYXVsdCA6CisKKwkJY291dCA8PCAiVW5rbm93biBtZXNzYWdlIHR5cGUhIiA8PCBlbmRsOworCisJfQorCisJcmV0dXJuIDA7Cit9CisKK2ludCBkb1BhcnNlZE1zZ0R1bXAoRE9NRG9jdW1lbnQgKiBkb2MpIHsKKworCS8vIEdldCBhbiBYS01TIE1lc3NhZ2UgRmFjdG9yeQorCVhTRUNQcm92aWRlciBwcm92OworCVhLTVNNZXNzYWdlRmFjdG9yeSAqIGZhY3RvcnkgPSBwcm92LmdldFhLTVNNZXNzYWdlRmFjdG9yeSgpOworCWludCBlcnJvcnNPY2N1cmVkOworCisJdHJ5IHsKKworCQlYS01TTWVzc2FnZUFic3RyYWN0VHlwZSAqIG1zZyA9CisJCQlmYWN0b3J5LT5uZXdNZXNzYWdlRnJvbURPTShkb2MtPmdldERvY3VtZW50RWxlbWVudCgpKTsKKworCQlpZiAobXNnID09IE5VTEwpIHsKKwkJCWNlcnIgPDwgIlVuYWJsZSB0byBjcmVhdGUgWEtNUyBtc2cgZnJvbSBwYXJzZWQgRE9NXG4iIDw8IGVuZGw7CisJCQlyZXR1cm4gMjsKKwkJfQorCisJCUphbml0b3IgPFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlPiBqX21zZyhtc2cpOworCisJCXJldHVybiBkb01zZ0R1bXAobXNnKTsKKworCX0KKworCWNhdGNoIChYU0VDRXhjZXB0aW9uICZlKSB7CisJCWNoYXIgKiBtc2cgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShlLmdldE1zZygpKTsKKwkJY2VyciA8PCAiQW4gZXJyb3Igb2NjdXJlZCBkdXJpbmcgbWVzc2FnZSBsb2FkaW5nXG4gICBNZXNzYWdlOiAiCisJCTw8IG1zZyA8PCBlbmRsOworCQlYU0VDX1JFTEVBU0VfWE1MQ0gobXNnKTsKKwkJZXJyb3JzT2NjdXJlZCA9IHRydWU7CisJCXJldHVybiAyOworCX0KKwljYXRjaCAoWFNFQ0NyeXB0b0V4Y2VwdGlvbiAmZSkgeworCQljZXJyIDw8ICJBbiBlcnJvciBvY2N1cmVkIGR1cmluZyBlbmNyeXB0aW9uL3NpZ25hdHVyZSBwcm9jZXNzaW5nXG4gICBNZXNzYWdlOiAiCisJCTw8IGUuZ2V0TXNnKCkgPDwgZW5kbDsKKwkJZXJyb3JzT2NjdXJlZCA9IHRydWU7CisKKyNpZiBkZWZpbmVkIChIQVZFX09QRU5TU0wpCisJCUVSUl9sb2FkX2NyeXB0b19zdHJpbmdzKCk7CisJCUJJTyAqIGJpb19lcnI7CisJCWlmICgoYmlvX2Vycj1CSU9fbmV3KEJJT19zX2ZpbGUoKSkpICE9IE5VTEwpCisJCQlCSU9fc2V0X2ZwKGJpb19lcnIsc3RkZXJyLEJJT19OT0NMT1NFfEJJT19GUF9URVhUKTsKKworCQlFUlJfcHJpbnRfZXJyb3JzKGJpb19lcnIpOworI2VuZGlmCisKKwkJcmV0dXJuIDI7CisJfQorCWNhdGNoICguLi4pIHsKKworCQljZXJyIDw8ICJVbmtub3duIEV4Y2VwdGlvbiB0eXBlIG9jY3VyZWQuICBDbGVhbmluZyB1cCBhbmQgZXhpdHRpbmdcbiIgPDwgZW5kbDsKKwkJcmV0dXJuIDI7CisKKwl9CisKKwkvLyBDbGVhbiB1cAorCisJcmV0dXJuIDA7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQmFzZSBNZXNzYWdlQ3JlYXRlIG1vZHVsZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBwcmludE1zZ0NyZWF0ZVVzYWdlKHZvaWQpIHsKKworCWNlcnIgPDwgIlxuVXNhZ2UgbWVzc2FnZWNyZWF0ZSBbb3B0aW9uc10ge0xvY2F0ZVJlcXVlc3R9IFttc2cgc3BlY2lmaWMgb3B0aW9uc11cbiI7CisJY2VyciA8PCAiICAgLS1oZWxwLy1oICAgIDogcHJpbnQgdGhpcyBzY3JlZW4gYW5kIGV4aXRcblxuIjsKKworfQorCitpbnQgZG9Nc2dDcmVhdGUoaW50IGFyZ2MsIGNoYXIgKiogYXJndiwgaW50IHBhcmFtQ291bnQpIHsKKworCVhTRUNQcm92aWRlciBwcm92OworCURPTURvY3VtZW50ICogZG9jOworCVhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlICptc2c7CisKKwlpZiAocGFyYW1Db3VudCA+PSBhcmdjIHx8IAorCQkoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0taGVscCIpID09IDApIHx8CisJCShfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLWgiKSA9PSAwKSkgeworCQlwcmludE1zZ0NyZWF0ZVVzYWdlKCk7CisJCXJldHVybiAtMTsKKwl9CisKKwlpZiAoKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICJMb2NhdGVSZXF1ZXN0IikgPT0gMCkgfHwKKwkJKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICJsciIpID09IDApKSB7CisKKwkJcGFyYW1Db3VudCsrOworCQltc2cgPSBjcmVhdGVMb2NhdGVSZXF1ZXN0KHByb3YsICZkb2MsIGFyZ2MsIGFyZ3YsIHBhcmFtQ291bnQpOworCQlpZiAobXNnID09IE5VTEwpIHsKKwkJCXJldHVybiAtMTsKKwkJfQorCisJfQorCWVsc2UgeworCisJCXByaW50TXNnQ3JlYXRlVXNhZ2UoKTsKKwkJcmV0dXJuIC0xOworCisJfQorCisJb3V0cHV0RG9jKGRvYyk7CisJCisJLy8gQ2xlYW51cCBtZXNzYWdlIHN0dWZmCisJZGVsZXRlIG1zZzsKKwlkb2MtPnJlbGVhc2UoKTsKKworCXJldHVybiAwOworCit9CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBCYXNlIHJlcXVlc3QgbW9kdWxlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIHByaW50RG9SZXF1ZXN0VXNhZ2Uodm9pZCkgeworCisJY2VyciA8PCAiXG5Vc2FnZSByZXF1ZXN0IFtvcHRpb25zXSB7UmVxdWVzdFR5cGV9IFttc2cgc3BlY2lmaWMgb3B0aW9uc11cbiI7CisJY2VyciA8PCAiICAgLS1oZWxwLy1oICAgICAgIDogUHJpbnQgdGhpcyBzY3JlZW4gYW5kIGV4aXRcbiI7CisJY2VyciA8PCAiICAgLS10d28tcGhhc2UvLXQgIDogSW5kaWNhdGUgVHdvLVBoYXNlIHN1cHBvcnQgaW4gdGhlIHJlcXVlc3QgbWVzc2FnZVxuIjsKKwljZXJyIDw8ICIgICAtLW5vbmNlLy1uIFtub25jZV1cbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICAgIDogU2V0IHR3byBwaGFzZSBub25jZSB2YWx1ZVxuIjsKKwljZXJyIDw8ICIgICAtLW9yaWdpbmFsLXJlcXVlc3RpZC8tbyBbaWRdXG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICA6IHNldCBPcmlnaW5hbFJlcXVlc3RJZCBhdHRyaWJ1dGUgaW4gcmVxdWVzdFxuIjsKKwljZXJyIDw8ICIgICAtLWVudmVsb3BlLXR5cGUvLWUgW05PTkV8U09BUDExfFNPQVAxMl1cbiI7CisgICAgY2VyciA8PCAiICAgICAgICAgICAgICAgICAgIDogU2V0IGVudmVsb3BlIHdyYXBwZXIgZm9yIHJlcXVlc3RcbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICAgICAgICAgIE5PTkUgICA9IE5vIHdyYXBwZXIgLSBzdHJhaWdodCBIVFRQIHJlcXVlc3RcbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICAgICAgICAgIFNPQVAxMSA9IFVzZSBhIFNPQVAgMS4xIGVudmVsb3BlXG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgICAgICBTT0FQMTIgPSBVc2UgYSBTT0FQIDEuMiBlbnZlbG9wZVxuXG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgIFdoZXJlIFJlcXVlc3RUeXBlID0gb25lIG9mIDpcbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBvdW5kUmVxdWVzdCAoY3IpXG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGVSZXF1ZXN0ICAgKGxyKVxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVSZXF1ZXN0ICh2cilcbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdSZXF1ZXN0ICAocHIpXG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlclJlcXVlc3QgKHJyKVxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgICAgICAgICAgICAgICAgUmVpc3N1ZVJlcXVlc3QgIChpcilcbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICAgICAgICAgIFJlY292ZXJSZXF1ZXN0ICAob3IpXG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgICAgICAgICBSZXZva2VSZXF1ZXN0ICAgKGVyKVxuXG4iOworCit9CisKK2ludCBkb1JlcXVlc3QoaW50IGFyZ2MsIGNoYXIgKiogYXJndiwgaW50IHBhcmFtQ291bnQpIHsKKworCVhTRUNQcm92aWRlciBwcm92OworCURPTURvY3VtZW50ICogZG9jOworCVhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlICptc2cgPSBOVUxMOworCVhTRUNTT0FQUmVxdWVzdG9yU2ltcGxlOjplbnZlbG9wZVR5cGUgZXQgPSBYU0VDU09BUFJlcXVlc3RvclNpbXBsZTo6RU5WRUxPUEVfU09BUDExOworCisJYm9vbCB0d29QaGFzZSA9IGZhbHNlOworCWJvb2wgcGFybXNEb25lID0gZmFsc2U7CisKKwljaGFyICogbm9uY2UgPSBOVUxMOworCWNoYXIgKiBvcmlnaW5hbFJlcXVlc3RJZCA9IE5VTEw7CisKKwlpZiAocGFyYW1Db3VudCA+PSBhcmdjIHx8IAorCQkoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0taGVscCIpID09IDApIHx8CisJCShfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLWgiKSA9PSAwKSkgeworCQlwcmludERvUmVxdWVzdFVzYWdlKCk7CisJCXJldHVybiAtMTsKKwl9CisKKwl3aGlsZSAoIXBhcm1zRG9uZSkgeworCQlpZiAoKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXR3by1waGFzZSIpID09IDApIHx8CisJCQkoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi10IikgPT0gMCkpIHsKKworCQkJdHdvUGhhc2UgPSB0cnVlOworCQkJcGFyYW1Db3VudCsrOworCisJCX0KKwkJZWxzZSBpZiAoKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLW5vbmNlIikgPT0gMCkgfHwKKwkJCShfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLW4iKSA9PSAwKSkgeworCisJCQlwYXJhbUNvdW50Kys7CisJCQlpZiAocGFyYW1Db3VudCA9PSBhcmdjKSB7CisJCQkJcHJpbnREb1JlcXVlc3RVc2FnZSgpOworCQkJCXJldHVybiAtMTsKKwkJCX0KKworCQkJbm9uY2U9YXJndltwYXJhbUNvdW50KytdOworCQl9CisJCWVsc2UgaWYgKChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1vcmlnaW5hbC1yZXF1ZXN0aWQiKSA9PSAwKSB8fAorCQkJKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItbyIpID09IDApKSB7CisKKwkJCXBhcmFtQ291bnQrKzsKKwkJCWlmIChwYXJhbUNvdW50ID09IGFyZ2MpIHsKKwkJCQlwcmludERvUmVxdWVzdFVzYWdlKCk7CisJCQkJcmV0dXJuIC0xOworCQkJfQorCisJCQlvcmlnaW5hbFJlcXVlc3RJZD1hcmd2W3BhcmFtQ291bnQrK107CisJCX0JCQorCQllbHNlIGlmICgoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tZW52ZWxvcGUiKSA9PSAwKSB8fAorCQkJKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItZSIpID09IDApKSB7CisKKwkJCS8vIFNldCB0aGUgd3JhcHBlciBlbnZlbG9wZSB0eXBlCisKKwkJCXBhcmFtQ291bnQrKzsKKwkJCWlmIChwYXJhbUNvdW50ID09IGFyZ2MpIHsKKwkJCQlwcmludERvUmVxdWVzdFVzYWdlKCk7CisJCQkJcmV0dXJuIC0xOworCQkJfQorCisJCQlpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIk5PTkUiKSA9PSAwKSB7CisJCQkJZXQgPSBYU0VDU09BUFJlcXVlc3RvclNpbXBsZTo6RU5WRUxPUEVfTk9ORTsKKwkJCX0KKwkJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICJTT0FQMTEiKSA9PSAwKSB7CisJCQkJZXQgPSBYU0VDU09BUFJlcXVlc3RvclNpbXBsZTo6RU5WRUxPUEVfU09BUDExOworCQkJfQorCQkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIlNPQVAxMiIpID09IDApIHsKKwkJCQlldCA9IFhTRUNTT0FQUmVxdWVzdG9yU2ltcGxlOjpFTlZFTE9QRV9TT0FQMTI7CisJCQl9CisJCQllbHNlIHsKKwkJCQlwcmludERvUmVxdWVzdFVzYWdlKCk7CisJCQkJcmV0dXJuIC0xOworCQkJfQorCQkJcGFyYW1Db3VudCsrOworCQl9CisJCWVsc2UgaWYgKChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiTG9jYXRlUmVxdWVzdCIpID09IDApIHx8CisJCQkoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgImxyIikgPT0gMCkpIHsKKworCQkJcGFyYW1Db3VudCsrOworCQkJWEtNU0xvY2F0ZVJlcXVlc3QgKiByID0gCisJCQkJKFhLTVNMb2NhdGVSZXF1ZXN0ICopIChjcmVhdGVMb2NhdGVSZXF1ZXN0KHByb3YsICZkb2MsIGFyZ2MsIGFyZ3YsIHBhcmFtQ291bnQpKTsKKworCQkJaWYgKHIgPT0gTlVMTCkgeworCQkJCXJldHVybiAtMTsKKwkJCX0KKworCQkJaWYgKHR3b1BoYXNlKQorCQkJCXItPmFwcGVuZFJlc3BvbnNlTWVjaGFuaXNtSXRlbShYS01TQ29uc3RhbnRzOjpzX3RhZ1JlcHJlc2VudCk7CisKKwkJCW1zZyA9IHI7CisJCQlwYXJtc0RvbmUgPSB0cnVlOworCisJCX0KKwkJZWxzZSBpZiAoKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICJWYWxpZGF0ZVJlcXVlc3QiKSA9PSAwKSB8fAorCQkJKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICJ2ciIpID09IDApKSB7CisKKwkJCXBhcmFtQ291bnQrKzsKKwkJCVhLTVNWYWxpZGF0ZVJlcXVlc3QgKiByID0gCisJCQkJKFhLTVNWYWxpZGF0ZVJlcXVlc3QgKikgKGNyZWF0ZVZhbGlkYXRlUmVxdWVzdChwcm92LCAmZG9jLCBhcmdjLCBhcmd2LCBwYXJhbUNvdW50KSk7CisKKwkJCWlmIChyID09IE5VTEwpIHsKKwkJCQlyZXR1cm4gLTE7CisJCQl9CisJCQlpZiAodHdvUGhhc2UpCisJCQkJci0+YXBwZW5kUmVzcG9uc2VNZWNoYW5pc21JdGVtKFhLTVNDb25zdGFudHM6OnNfdGFnUmVwcmVzZW50KTsKKworCQkJbXNnID0gcjsKKwkJCXBhcm1zRG9uZSA9IHRydWU7CisKKwkJfQorCQllbHNlIGlmICgoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIlJlZ2lzdGVyUmVxdWVzdCIpID09IDApIHx8CisJCQkoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgInJyIikgPT0gMCkpIHsKKworCQkJcGFyYW1Db3VudCsrOworCQkJWEtNU1JlZ2lzdGVyUmVxdWVzdCAqIHIgPSAKKwkJCQkoWEtNU1JlZ2lzdGVyUmVxdWVzdCAqKSAoY3JlYXRlUmVnaXN0ZXJSZXF1ZXN0KHByb3YsICZkb2MsIGFyZ2MsIGFyZ3YsIHBhcmFtQ291bnQpKTsKKworCQkJaWYgKHIgPT0gTlVMTCkgeworCQkJCXJldHVybiAtMTsKKwkJCX0KKwkJCWlmICh0d29QaGFzZSkKKwkJCQlyLT5hcHBlbmRSZXNwb25zZU1lY2hhbmlzbUl0ZW0oWEtNU0NvbnN0YW50czo6c190YWdSZXByZXNlbnQpOworCisJCQltc2cgPSByOworCQkJcGFybXNEb25lID0gdHJ1ZTsKKworCQl9CisJCWVsc2UgaWYgKChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiUmV2b2tlUmVxdWVzdCIpID09IDApIHx8CisJCQkoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgImVyIikgPT0gMCkpIHsKKworCQkJcGFyYW1Db3VudCsrOworCQkJWEtNU1Jldm9rZVJlcXVlc3QgKiByID0gCisJCQkJKFhLTVNSZXZva2VSZXF1ZXN0ICopIChjcmVhdGVSZXZva2VSZXF1ZXN0KHByb3YsICZkb2MsIGFyZ2MsIGFyZ3YsIHBhcmFtQ291bnQpKTsKKworCQkJaWYgKHIgPT0gTlVMTCkgeworCQkJCXJldHVybiAtMTsKKwkJCX0KKwkJCWlmICh0d29QaGFzZSkKKwkJCQlyLT5hcHBlbmRSZXNwb25zZU1lY2hhbmlzbUl0ZW0oWEtNU0NvbnN0YW50czo6c190YWdSZXByZXNlbnQpOworCisJCQltc2cgPSByOworCQkJcGFybXNEb25lID0gdHJ1ZTsKKworCQl9CQkKKwkJZWxzZSBpZiAoKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICJSZWNvdmVyUmVxdWVzdCIpID09IDApIHx8CisJCQkoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIm9yIikgPT0gMCkpIHsKKworCQkJcGFyYW1Db3VudCsrOworCQkJWEtNU1JlY292ZXJSZXF1ZXN0ICogciA9IAorCQkJCShYS01TUmVjb3ZlclJlcXVlc3QgKikgKGNyZWF0ZVJlY292ZXJSZXF1ZXN0KHByb3YsICZkb2MsIGFyZ2MsIGFyZ3YsIHBhcmFtQ291bnQpKTsKKworCQkJaWYgKHIgPT0gTlVMTCkgeworCQkJCXJldHVybiAtMTsKKwkJCX0KKwkJCWlmICh0d29QaGFzZSkKKwkJCQlyLT5hcHBlbmRSZXNwb25zZU1lY2hhbmlzbUl0ZW0oWEtNU0NvbnN0YW50czo6c190YWdSZXByZXNlbnQpOworCisJCQltc2cgPSByOworCQkJcGFybXNEb25lID0gdHJ1ZTsKKworCQl9CisJCWVsc2UgaWYgKChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiUmVpc3N1ZVJlcXVlc3QiKSA9PSAwKSB8fAorCQkJKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICJpciIpID09IDApKSB7CisKKwkJCXBhcmFtQ291bnQrKzsKKwkJCVhLTVNSZWlzc3VlUmVxdWVzdCAqIHIgPSAKKwkJCQkoWEtNU1JlaXNzdWVSZXF1ZXN0ICopIChjcmVhdGVSZWlzc3VlUmVxdWVzdChwcm92LCAmZG9jLCBhcmdjLCBhcmd2LCBwYXJhbUNvdW50KSk7CisKKwkJCWlmIChyID09IE5VTEwpIHsKKwkJCQlyZXR1cm4gLTE7CisJCQl9CisJCQlpZiAodHdvUGhhc2UpCisJCQkJci0+YXBwZW5kUmVzcG9uc2VNZWNoYW5pc21JdGVtKFhLTVNDb25zdGFudHM6OnNfdGFnUmVwcmVzZW50KTsKKworCQkJbXNnID0gcjsKKwkJCXBhcm1zRG9uZSA9IHRydWU7CisKKwkJfQorCQllbHNlIGlmICgoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIlBlbmRpbmdSZXF1ZXN0IikgPT0gMCkgfHwKKwkJCShfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAicHIiKSA9PSAwKSkgeworCisJCQlwYXJhbUNvdW50Kys7CisJCQlYS01TUGVuZGluZ1JlcXVlc3QgKiByID0gCisJCQkJKFhLTVNQZW5kaW5nUmVxdWVzdCAqKSAoY3JlYXRlUGVuZGluZ1JlcXVlc3QocHJvdiwgJmRvYywgYXJnYywgYXJndiwgcGFyYW1Db3VudCkpOworCisJCQlpZiAociA9PSBOVUxMKSB7CisJCQkJcmV0dXJuIC0xOworCQkJfQorCQkJaWYgKHR3b1BoYXNlKQorCQkJCXItPmFwcGVuZFJlc3BvbnNlTWVjaGFuaXNtSXRlbShYS01TQ29uc3RhbnRzOjpzX3RhZ1JlcHJlc2VudCk7CisKKwkJCW1zZyA9IHI7CisJCQlwYXJtc0RvbmUgPSB0cnVlOworCisJCX0KKwkJZWxzZSBpZiAoKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICJTdGF0dXNSZXF1ZXN0IikgPT0gMCkgfHwKKwkJCShfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAic3IiKSA9PSAwKSkgeworCisJCQlwYXJhbUNvdW50Kys7CisJCQlYS01TU3RhdHVzUmVxdWVzdCAqIHIgPSAKKwkJCQkoWEtNU1N0YXR1c1JlcXVlc3QgKikgKGNyZWF0ZVN0YXR1c1JlcXVlc3QocHJvdiwgJmRvYywgYXJnYywgYXJndiwgcGFyYW1Db3VudCkpOworCisJCQlpZiAociA9PSBOVUxMKSB7CisJCQkJcmV0dXJuIC0xOworCQkJfQorCQkJaWYgKHR3b1BoYXNlKQorCQkJCXItPmFwcGVuZFJlc3BvbnNlTWVjaGFuaXNtSXRlbShYS01TQ29uc3RhbnRzOjpzX3RhZ1JlcHJlc2VudCk7CisKKwkJCW1zZyA9IHI7CisJCQlwYXJtc0RvbmUgPSB0cnVlOworCisJCX0KKwkJZWxzZSBpZiAoKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICJDb21wb3VuZFJlcXVlc3QiKSA9PSAwKSB8fAorCQkJKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICJjciIpID09IDApKSB7CisKKwkJCVhLTVNDb21wb3VuZFJlcXVlc3QgKiByID0gCisJCQkJKFhLTVNDb21wb3VuZFJlcXVlc3QgKikgKGNyZWF0ZUNvbXBvdW5kUmVxdWVzdChwcm92LCAmZG9jLCBhcmdjLCBhcmd2LCBwYXJhbUNvdW50ICsgMSkpOworCisJCQlpZiAociA9PSBOVUxMKSB7CisJCQkJcmV0dXJuIC0xOworCQkJfQorCQkJaWYgKHR3b1BoYXNlKQorCQkJCXItPmFwcGVuZFJlc3BvbnNlTWVjaGFuaXNtSXRlbShYS01TQ29uc3RhbnRzOjpzX3RhZ1JlcHJlc2VudCk7CisKKwkJCW1zZyA9IHI7CisJCQlwYXJtc0RvbmUgPSB0cnVlOworCisJCX0KKwkJZWxzZSB7CisKKwkJCXByaW50RG9SZXF1ZXN0VXNhZ2UoKTsKKwkJCXJldHVybiAtMTsKKworCQl9CisJfQorCisJWEtNU01lc3NhZ2VGYWN0b3J5ICogZiA9IHByb3YuZ2V0WEtNU01lc3NhZ2VGYWN0b3J5KCk7CisJWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGUgKiByZXF1ZXN0ID0gZi0+dG9SZXF1ZXN0QWJzdHJhY3RUeXBlKG1zZyk7CisKKwlpZiAobm9uY2UgIT0gTlVMTCkKKwkJcmVxdWVzdC0+c2V0Tm9uY2UoTUFLRV9VTklDT0RFX1NUUklORyhub25jZSkpOworCWlmIChvcmlnaW5hbFJlcXVlc3RJZCAhPSBOVUxMKQorCQlyZXF1ZXN0LT5zZXRPcmlnaW5hbFJlcXVlc3RJZChNQUtFX1VOSUNPREVfU1RSSU5HKG9yaWdpbmFsUmVxdWVzdElkKSk7CisKKwl0cnkgeworCQlpZiAoZ190eHRPdXQpIHsKKwkJCW91dHB1dERvYyhkb2MpOworCQl9CisJfQorCWNhdGNoICguLi4pIHsKKwkJZGVsZXRlIG1zZzsKKwkJZG9jLT5yZWxlYXNlKCk7CisJCXRocm93OworCX0KKworCURPTURvY3VtZW50ICogcmVzcG9uc2VEb2M7CisKKwl0cnkgeworCQlYU0VDU09BUFJlcXVlc3RvclNpbXBsZSByZXEobXNnLT5nZXRTZXJ2aWNlKCkpOworI2lmICFkZWZpbmVkKF9XSU4zMikKKwkJc3RydWN0IHRpbWV2YWwgdHYxLCB0djI7CisJCWdldHRpbWVvZmRheSgmdHYxLCBOVUxMKTsKKyNlbmRpZgorCQlyZXEuc2V0RW52ZWxvcGVUeXBlKGV0KTsKKworCQlyZXNwb25zZURvYyA9IHJlcS5kb1JlcXVlc3QoZG9jKTsKKyNpZiAhZGVmaW5lZChfV0lOMzIpCisJCWdldHRpbWVvZmRheSgmdHYyLCBOVUxMKTsKKwkJbG9uZyBzZWNvbmRzID0gdHYyLnR2X3NlYyAtIHR2MS50dl9zZWM7CisJCWxvbmcgdXNlY29uZHM7CisJCWlmIChzZWNvbmRzICE9IDApIHsKKwkJCXVzZWNvbmRzID0gMTAwMDAwMCAtIHR2MS50dl91c2VjICsgdHYyLnR2X3VzZWM7CisJCQlzZWNvbmRzLS07CisJCX0KKwkJZWxzZSB7CisJCQl1c2Vjb25kcyA9IHR2Mi50dl91c2VjIC0gdHYxLnR2X3VzZWM7CisJCX0KKwkJaWYgKHVzZWNvbmRzID49IDEwMDAwMDApIHsKKwkJCXVzZWNvbmRzIC09IDEwMDAwMDA7CisJCQlzZWNvbmRzKys7CisJCX0KKworCQljb3V0IDw8ICJUaW1lIHRha2VuIGZvciByZXF1ZXN0ID0gIiA8PCBzZWNvbmRzIDw8ICIgc2Vjb25kcywgIiA8PCB1c2Vjb25kcyA8PCAiIHVzZWNvbmRzIiA8PCBlbmRsOworI2VuZGlmCisJCS8qIElmIHR3by1waGFzZSAtIHJlLWRvIHRoZSByZXF1ZXN0ICovCisJCWlmICh0d29QaGFzZSkgeworCisJCQlYS01TUmVzdWx0VHlwZSAqIHIgPSBmLT50b1Jlc3VsdFR5cGUoZi0+bmV3TWVzc2FnZUZyb21ET00ocmVzcG9uc2VEb2MtPmdldERvY3VtZW50RWxlbWVudCgpKSk7CisJCQlpZiAoci0+Z2V0UmVzdWx0TWFqb3IoKSA9PSBYS01TUmVzdWx0VHlwZTo6UmVwcmVzZW50KSB7CisKKwkJCQljZXJyIDw8ICJJbnRlcm1lZGlhdGUgcmVzcG9uc2Ugb2YgYSB0d28gcGhhc2Ugc2VxdWVuY2UgcmVjZWl2ZWRcblxuIjsKKworCQkJCWlmIChnX3R4dE91dCkgeworCQkJCQlvdXRwdXREb2MocmVzcG9uc2VEb2MpOworCQkJCX0KKwkJCQlkb1BhcnNlZE1zZ0R1bXAocmVzcG9uc2VEb2MpOworCisJCQkJLy9YS01TUmVxdWVzdEFic3RyYWN0VHlwZSAqIHJlcXVlc3QgPSBmLT50b1JlcXVlc3RBYnN0cmFjdFR5cGUobXNnKTsKKwkJCQlmb3IgKGludCBrID0gMDsgayA8IHJlcXVlc3QtPmdldFJlc3BvbnNlTWVjaGFuaXNtU2l6ZSgpOyArK2spIHsKKwkJCQkJaWYgKHN0ckVxdWFscyhyZXF1ZXN0LT5nZXRSZXNwb25zZU1lY2hhbmlzbUl0ZW1TdHIoayksCisJCQkJCQkJCSAgWEtNU0NvbnN0YW50czo6c190YWdSZXByZXNlbnQpKSB7CisJCQkJCQlyZXF1ZXN0LT5yZW1vdmVSZXNwb25zZU1lY2hhbmlzbUl0ZW0oayk7CisJCQkJCQlicmVhazsKKwkJCQkJfQorCQkJCX0KKworCQkJCXJlcXVlc3QtPnNldE5vbmNlKHItPmdldE5vbmNlKCkpOworCQkJCXJlcXVlc3QtPnNldE9yaWdpbmFsUmVxdWVzdElkKHJlcXVlc3QtPmdldElkKCkpOworCQkJCVhNTENoICogbXlJZCA9IGdlbmVyYXRlSWQoKTsKKworCQkJCXJlcXVlc3QtPnNldElkKG15SWQpOworCQkJCVhTRUNfUkVMRUFTRV9YTUxDSChteUlkKTsKKworCQkJCXJlc3BvbnNlRG9jLT5yZWxlYXNlKCk7CisJCQkJcmVzcG9uc2VEb2MgPSByZXEuZG9SZXF1ZXN0KGRvYyk7CisKKwkJCX0KKwkJCWRlbGV0ZSByOworCQl9CisKKwl9CisJY2F0Y2ggKFhTRUNFeGNlcHRpb24gJmUpIHsKKworCQljaGFyICogbSA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKGUuZ2V0TXNnKCkpOworCQljZXJyIDw8ICJFcnJvciBzZW5kaW5nIHJlcXVlc3Q6ICIgPDwgbSA8PCBlbmRsOworCQlYU0VDX1JFTEVBU0VfWE1MQ0gobSk7CisKKwkJZGVsZXRlIG1zZzsKKwkJZG9jLT5yZWxlYXNlKCk7CisKKwkJcmV0dXJuIC0xOworCisJfQorCWNhdGNoICguLi4pIHsKKwkJZGVsZXRlIG1zZzsKKwkJZG9jLT5yZWxlYXNlKCk7CisKKwkJdGhyb3c7CisKKwl9CisKKwkvLyBDbGVhbnVwIHJlcXVlc3Qgc3R1ZmYKKwlkZWxldGUgbXNnOworCWRvYy0+cmVsZWFzZSgpOworCisJLy8gTm93IGxldHMgcHJvY2VzcyB0aGUgcmVzdWx0CisKKwlpbnQgcmV0OworCQorCXRyeSB7CisJCWlmIChnX3R4dE91dCkgeworCQkJb3V0cHV0RG9jKHJlc3BvbnNlRG9jKTsKKwkJfQorCQlyZXQgPSBkb1BhcnNlZE1zZ0R1bXAocmVzcG9uc2VEb2MpOworCX0KKwljYXRjaCAoLi4uKSB7CisJCXJlc3BvbnNlRG9jLT5yZWxlYXNlKCk7CisJCXRocm93OworCX0KKwkKKwlyZXNwb25zZURvYy0+cmVsZWFzZSgpOworCXJldHVybiByZXQ7CisKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEJhc2UgbXNnZHVtcCBtb2R1bGUKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworI2lmIDAKK2NsYXNzIFhNTFNjaGVtYURURFJlc29sdmVyIDogcHVibGljIEVudGl0eVJlc29sdmVyIHsgCisKK3B1YmxpYzogCisKKwlYTUxTY2hlbWFEVERSZXNvbHZlcigpIHt9CisJflhNTFNjaGVtYURURFJlc29sdmVyKCkge30KKwkKKwlJbnB1dFNvdXJjZSAqIHJlc29sdmVFbnRpdHkgKGNvbnN0IFhNTENoKiBjb25zdCBwdWJsaWNJZCwgY29uc3QgWE1MQ2gqIGNvbnN0IHN5c3RlbUlkKTsKKwkKK307CisKK0lucHV0U291cmNlICogWE1MU2NoZW1hRFREUmVzb2x2ZXI6OnJlc29sdmVFbnRpdHkgKGNvbnN0IFhNTENoKiBjb25zdCBwdWJsaWNJZCwgCisJCQkJCQkJCQkJCQkgICBjb25zdCBYTUxDaCogY29uc3Qgc3lzdGVtSWQpIHsgCisJCisKKwkKKwlpZiAoc3RyRXF1YWxzKHN5c3RlbUlkLCAiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiKSkgeyAJCisJCXJldHVybiBuZXcgTG9jYWxGaWxlSW5wdXRTb3VyY2UoTUFLRV9VTklDT0RFX1NUUklORygiQzpcXHByb2dcXFNSQ1xceG1sLXNlY3VyaXR5XFxjXFxCdWlsZFxcV2luMzJcXFZDNlxcRGVidWdcXFhNTFNjaGVtYS5kdGQiKSk7IAorCX0gCisJZWxzZSB7IAorCQlyZXR1cm4gTlVMTDsgCisJfQorCit9CisjZW5kaWYKK3ZvaWQgcHJpbnRNc2dEdW1wVXNhZ2Uodm9pZCkgeworCisJY2VyciA8PCAiXG5Vc2FnZSBtc2dkdW1wIFtvcHRpb25zXSA8ZmlsZW5hbWU+XG4iOworCWNlcnIgPDwgIiAgIC0taGVscC8taCAgICAgIDogcHJpbnQgdGhpcyBzY3JlZW4gYW5kIGV4aXRcbiI7CisJY2VyciA8PCAiICAgLS12YWxpZGF0ZS8tdiAgOiB2YWxpZGF0ZSB0aGUgaW5wdXQgbWVzc2FnZXNcbiI7CisJY2VyciA8PCAiICAgLS1hdXRoLXBocmFzZS8tYSA8cGhyYXNlPlxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgICAgICAgICA6IHVzZSA8cGhyYXNlPiBmb3IgYXV0aGVudGljYXRpb24vcHJpdmF0ZSBrZXkgaW4gWC1LUlNTIG1lc3NhZ2VzXG4iOworI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKwljZXJyIDw8ICIgICAtLW91dHB1dC1wcml2YXRlLWtleS8tcCA8ZmlsZW5hbWU+IDxwYXNzcGhyYXNlPlxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgICAgICAgICA6IFdyaXRlIHByaXZhdGUga2V5cyBmcm9tIFJlZ2lzdGVyIG9yIFJlY292ZXIgcmVxdWVzdHMgdG8gdGhlIGZpbGVcblxuIjsKKyNlbmRpZgorICAgIGNlcnIgPDwgIiAgIGZpbGVuYW1lID0gbmFtZSBvZiBmaWxlIGNvbnRhaW5pbmcgWEtNUyBtc2cgdG8gZHVtcFxuXG4iOworCit9CisKK2ludCBkb01zZ0R1bXAoaW50IGFyZ2MsIGNoYXIgKiogYXJndiwgaW50IHBhcmFtQ291bnQpIHsKKworCWNoYXIgKiBpbnB1dEZpbGUgPSBOVUxMOworCWJvb2wgZG9WYWxpZGF0ZSA9IGZhbHNlOworCisJaWYgKHBhcmFtQ291bnQgPj0gYXJnYyB8fCAKKwkJKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWhlbHAiKSA9PSAwKSB8fAorCQkoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1oIikgPT0gMCkpIHsKKwkJcHJpbnRNc2dEdW1wVXNhZ2UoKTsKKwkJcmV0dXJuIC0xOworCX0KKworCXdoaWxlIChwYXJhbUNvdW50IDwgYXJnYy0xKSB7CisJCWlmICgoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tdmFsaWRhdGUiKSA9PSAwKSB8fAorCQkJKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItdiIpID09IDApKSB7CisKKwkJCWRvVmFsaWRhdGUgPSB0cnVlOworCQkJcGFyYW1Db3VudCsrOworCisJCX0KKwkJZWxzZSBpZiAoKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWF1dGgtcGhyYXNlIikgPT0gMCkgfHwKKwkJCShfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLWEiKSA9PSAwKSkgeworCisJCQlwYXJhbUNvdW50Kys7CisJCQlnX2F1dGhQYXNzUGhyYXNlID0gYXJndltwYXJhbUNvdW50XTsKKwkJCXBhcmFtQ291bnQrKzsKKwkJfQorI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tb3V0cHV0LXByaXZhdGUta2V5IikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXAiKSA9PSAwKSB7CisJCQlpZiAocGFyYW1Db3VudCA+PSBhcmdjICsgMikgeworCQkJCXByaW50TXNnRHVtcFVzYWdlKCk7CisJCQkJcmV0dXJuIC0xOworCQkJfQorCQkJKytwYXJhbUNvdW50OworCQkJZ19wcml2YXRlS2V5RmlsZSA9IGFyZ3ZbcGFyYW1Db3VudCsrXTsKKwkJCWdfcHJpdmF0ZUtleVBhc3NQaHJhc2UgPSBhcmd2W3BhcmFtQ291bnQrK107CisJCX0KKyNlbmRpZgorCQllbHNlIHsKKworCQkJcHJpbnRNc2dEdW1wVXNhZ2UoKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCX0KKworCWlmIChwYXJhbUNvdW50ID49IGFyZ2MpIHsKKwkJcHJpbnRNc2dEdW1wVXNhZ2UoKTsKKwkJcmV0dXJuIC0xOworCX0KKworCWlucHV0RmlsZSA9IGFyZ3ZbcGFyYW1Db3VudF07CisKKwkvLyBEdW1wIHRoZSBkZXRhaWxzIG9mIGFuIFhLTVMgbWVzc2FnZSB0byB0aGUgY29uc29sZQorCWNvdXQgPDwgIkRlY29kaW5nIFhLTVMgTWVzc2FnZSBjb250YWluZWQgaW4gIiA8PCBpbnB1dEZpbGUgPDwgZW5kbDsKKwkKKwkvLyBDcmVhdGUgYW5kIHNldCB1cCB0aGUgcGFyc2VyCisKKwlYZXJjZXNET01QYXJzZXIgKiBwYXJzZXIgPSBuZXcgWGVyY2VzRE9NUGFyc2VyOworCUphbml0b3I8WGVyY2VzRE9NUGFyc2VyPiBqX3BhcnNlcihwYXJzZXIpOworCisJcGFyc2VyLT5zZXREb05hbWVzcGFjZXModHJ1ZSk7CisJcGFyc2VyLT5zZXRDcmVhdGVFbnRpdHlSZWZlcmVuY2VOb2Rlcyh0cnVlKTsKKworCS8vIEVycm9yIGhhbmRsaW5nCisJeGttc0Vycm9ySGFuZGxlciB4ZWg7CisJcGFyc2VyLT5zZXRFcnJvckhhbmRsZXIoJnhlaCk7CisKKyNpZiAwCisJLy8gTG9jYWwgbG9hZCBvZiBYTUxTY2hlbWEuZHRkCisJWE1MU2NoZW1hRFREUmVzb2x2ZXIgc2RyOworCXBhcnNlci0+c2V0RW50aXR5UmVzb2x2ZXIoJnNkcik7CisjZW5kaWYKKworCS8vIFNjaGVtYSBoYW5kbGluZworCWlmIChkb1ZhbGlkYXRlKSB7CisJCXBhcnNlci0+c2V0RG9TY2hlbWEodHJ1ZSk7CisJCXBhcnNlci0+c2V0RXh0ZXJuYWxTY2hlbWFMb2NhdGlvbigiaHR0cDovL3d3dy53My5vcmcvMjAwMi8wMy94a21zIyBodHRwOi8vd3d3LnczLm9yZy9UUi94a21zMi9TY2hlbWFzL3hrbXMueHNkIik7CisJfQorCisJYm9vbCBlcnJvcnNPY2N1cmVkID0gZmFsc2U7CisJeHNlY3NpemVfdCBlcnJvckNvdW50ID0gMDsKKyAgICB0cnkKKyAgICB7CisgICAgCXBhcnNlci0+cGFyc2UoaW5wdXRGaWxlKTsKKyAgICAgICAgZXJyb3JDb3VudCA9IHBhcnNlci0+Z2V0RXJyb3JDb3VudCgpOworICAgIH0KKworICAgIGNhdGNoIChjb25zdCBYTUxFeGNlcHRpb24mIGUpCisgICAgeworCQljaGFyICogbXNnID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoZS5nZXRNZXNzYWdlKCkpOworICAgICAgICBjZXJyIDw8ICJBbiBlcnJvciBvY2N1cmVkIGR1cmluZyBwYXJzaW5nXG4gICBNZXNzYWdlOiAiCisgICAgICAgICAgICAgPDwgbXNnIDw8IGVuZGw7CisJCVhTRUNfUkVMRUFTRV9YTUxDSChtc2cpOworICAgICAgICBlcnJvcnNPY2N1cmVkID0gdHJ1ZTsKKyAgICB9CisKKworICAgIGNhdGNoIChjb25zdCBET01FeGNlcHRpb24mIGUpCisgICAgeworICAgICAgIGNlcnIgPDwgIkEgRE9NIGVycm9yIG9jY3VyZWQgZHVyaW5nIHBhcnNpbmdcbiAgIERPTUV4Y2VwdGlvbiBjb2RlOiAiCisgICAgICAgICAgICAgPDwgZS5jb2RlIDw8IGVuZGw7CisgICAgICAgIGVycm9yc09jY3VyZWQgPSB0cnVlOworICAgIH0KKworCWlmIChlcnJvckNvdW50ID4gMCB8fCBlcnJvcnNPY2N1cmVkKSB7CisKKwkJY291dCA8PCAiRXJyb3JzIGR1cmluZyBwYXJzZSIgPDwgZW5kbDsKKwkJcmV0dXJuICgyKTsKKworCX0KKworCS8qCisKKwkJTm93IHRoYXQgd2UgaGF2ZSB0aGUgcGFyc2VkIGZpbGUsIGdldCB0aGUgRE9NIGRvY3VtZW50IGFuZCBzdGFydCBsb29raW5nIGF0IGl0CisKKwkqLworCQorCURPTURvY3VtZW50ICpkb2MgPSBwYXJzZXItPmdldERvY3VtZW50KCk7CisKKwlyZXR1cm4gZG9QYXJzZWRNc2dEdW1wKGRvYyk7Cit9CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBTdGFydHVwIGFuZCBtYWluCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIHByaW50VXNhZ2Uodm9pZCkgeworCisJY2VyciA8PCAiXG5Vc2FnZTogeGtsaWVudCBbYmFzZSBvcHRpb25zXSB7bXNnZHVtcHxtc2djcmVhdGV8ZG9yZXF1ZXN0fSBbY29tbWFuZCBzcGVjaWZpYyBvcHRpb25zXVxuXG4iOworCWNlcnIgPDwgIiAgICAgbXNnZHVtcCAgIDogUmVhZCBhbiBYS01TIG1lc3NhZ2UgYW5kIHByaW50IGRldGFpbHNcbiI7CisJY2VyciA8PCAiICAgICBtc2djcmVhdGUgOiBDcmVhdGUgYSBtZXNzYWdlIG9mIHR5cGUgOlxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgICAgICAgIExvY2F0ZVJlcXVlc3RcbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICBWYWxpZGF0ZVJlcXVlc3RcbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICBQZW5kaW5nUmVxdWVzdFxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgICAgICAgIFJlZ2lzdGVyUmVxdWVzdFxuIjsKKwljZXJyIDw8ICIgICAgICAgICAgICAgICAgIFJlY292ZXJSZXF1ZXN0XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgUmVpc3N1ZVJlcXVlc3RcbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICBSZXZva2VSZXF1ZXN0XG4iOworCWNlcnIgPDwgIiAgICAgICAgICAgICAgICAgUGVuZGluZ1JlcXVlc3RcbiI7CisJY2VyciA8PCAiICAgICAgICAgICAgICAgICBzZW5kIHRvIHNlcnZpY2UgVVJJIGFuZCBvdXRwdXQgcmVzdWx0XG5cbiI7CisJY2VyciA8PCAiICAgICBXaGVyZSBvcHRpb25zIGFyZSA6XG5cbiI7CisJY2VyciA8PCAiICAgICAtLXRleHQvLXRcbiI7CisJY2VyciA8PCAiICAgICAgICAgUHJpbnQgYW55IGNyZWF0ZWQgWE1MIHRvIHNjcmVlblxuIjsKKworfQorCitpbnQgZXZhbHVhdGUoaW50IGFyZ2MsIGNoYXIgKiogYXJndikgeworCQorCWlmIChhcmdjIDwgMikgeworCisJCXByaW50VXNhZ2UoKTsKKwkJcmV0dXJuIDI7CisJfQorCisJaW50IHBhcmFtQ291bnQgPSAxOworCisJLy8gUnVuIHRocm91Z2ggcGFyYW1ldGVycworCisJd2hpbGUgKHBhcmFtQ291bnQgPCBhcmdjKSB7CisKKwkJaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXRleHQiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItdCIpID09IDApIHsKKwkJCWdfdHh0T3V0ID0gdHJ1ZTsKKwkJCXBhcmFtQ291bnQrKzsKKwkJfQorCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiTXNnRHVtcCIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIm1kIikgPT0gMCkgeworCQkJCisJCQkvLyBQZXJmb3JtIGEgTXNnRHVtcCBvcGVyYXRpb24KKwkJCXJldHVybiBkb01zZ0R1bXAoYXJnYywgYXJndiwgcGFyYW1Db3VudCArMSk7CisKKwkJfQorCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiTXNnQ3JlYXRlIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAibWMiKSA9PSAwKSB7CisJCQkKKwkJCS8vIFBlcmZvcm0gYSBNc2dEdW1wIG9wZXJhdGlvbgorCQkJcmV0dXJuIGRvTXNnQ3JlYXRlKGFyZ2MsIGFyZ3YsIHBhcmFtQ291bnQgKzEpOworCisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIlJlcXVlc3QiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICJyZXEiKSA9PSAwKSB7CisJCQkKKwkJCS8vIFBlcmZvcm0gYSBNc2dEdW1wIG9wZXJhdGlvbgorCQkJcmV0dXJuIGRvUmVxdWVzdChhcmdjLCBhcmd2LCBwYXJhbUNvdW50ICsxKTsKKworCQl9CisJCWVsc2UgeworCQkJcHJpbnRVc2FnZSgpOworCQkJcmV0dXJuIDI7CisJCX0KKwl9CisKKwlyZXR1cm4gMTsKKworfQorCQorCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworCisJaW50IHJldFJlc3VsdDsKKworCS8qIFdlIG91dHB1dCBhIHZlcnNpb24gbnVtYmVyIHRvIG92ZXJjb21lIGEgImZlYXR1cmUiIGluIE1pY3Jvc29mdCdzIG1lbW9yeQorCSAgIGxlYWsgZGV0ZWN0aW9uICovCisKKwljb3V0IDw8ICJYS01TIENsaWVudCAoVXNpbmcgQXBhY2hlIFhNTC1TZWN1cml0eS1DIExpYnJhcnkgdiIgPDwgWFNFQ19WRVJTSU9OX01BSk9SIDw8CisJCSIuIiA8PCBYU0VDX1ZFUlNJT05fTUVESVVNIDw8ICIuIiA8PCBYU0VDX1ZFUlNJT05fTUlOT1IgPDwgIilcbiI7CisKKyNpZiBkZWZpbmVkIChfREVCVUcpICYmIGRlZmluZWQgKF9NU0NfVkVSKQorCisJLy8gRG8gc29tZSBtZW1vcnkgZGVidWdnaW5nIHVuZGVyIFZpc3VhbCBDKysKKworCV9DcnRNZW1TdGF0ZSBzMSwgczIsIHMzOworCisJLy8gQXQgdGhpcyBwb2ludCB3ZSBhcmUgYWJvdXQgdG8gc3RhcnQgcmVhbGx5IHVzaW5nIFhTRUMsIHNvCisJLy8gVGFrZSBhICJiZWZvcmUiIGNoZWNrcG9pbmcKKworCV9DcnRNZW1DaGVja3BvaW50KCAmczEgKTsKKworI2VuZGlmCisKKwkvLyBJbml0aWFsaXNlIHRoZSBYTUwgc3lzdGVtCisKKwl0cnkgeworCisJCVhNTFBsYXRmb3JtVXRpbHM6OkluaXRpYWxpemUoKTsKKyNpZm5kZWYgWFNFQ19OT19YQUxBTgorCQlYUGF0aEV2YWx1YXRvcjo6aW5pdGlhbGl6ZSgpOworCQlYYWxhblRyYW5zZm9ybWVyOjppbml0aWFsaXplKCk7CisjZW5kaWYKKwkJWFNFQ1BsYXRmb3JtVXRpbHM6OkluaXRpYWxpc2UoKTsKKworCX0KKwljYXRjaCAoY29uc3QgWE1MRXhjZXB0aW9uICZlKSB7CisKKwkJY2VyciA8PCAiRXJyb3IgZHVyaW5nIGluaXRpYWxpc2F0aW9uIG9mIFhlcmNlcyIgPDwgZW5kbDsKKwkJY2VyciA8PCAiRXJyb3IgTWVzc2FnZSA9IDogIgorCQkgICAgIDw8IGUuZ2V0TWVzc2FnZSgpIDw8IGVuZGw7CisKKwl9CisKKwlyZXRSZXN1bHQgPSBldmFsdWF0ZShhcmdjLCBhcmd2KTsKKworCVhTRUNQbGF0Zm9ybVV0aWxzOjpUZXJtaW5hdGUoKTsKKyNpZm5kZWYgWFNFQ19OT19YQUxBTgorCVhhbGFuVHJhbnNmb3JtZXI6OnRlcm1pbmF0ZSgpOworCVhQYXRoRXZhbHVhdG9yOjp0ZXJtaW5hdGUoKTsKKyNlbmRpZgorCVhNTFBsYXRmb3JtVXRpbHM6OlRlcm1pbmF0ZSgpOworCisjaWYgZGVmaW5lZCAoX0RFQlVHKSAmJiBkZWZpbmVkIChfTVNDX1ZFUikKKworCV9DcnRNZW1DaGVja3BvaW50KCAmczIgKTsKKworCWlmICggX0NydE1lbURpZmZlcmVuY2UoICZzMywgJnMxLCAmczIgKSAmJiBzMy5sQ291bnRzWzFdID4gMSkgeworCisJCXN0ZDo6Y2VyciA8PCAiVG90YWwgY291bnQgPSAiIDw8ICh1bnNpZ25lZCBpbnQpIHMzLmxUb3RhbENvdW50IDw8IGVuZGw7CisKKwkJLy8gU2VuZCBhbGwgcmVwb3J0cyB0byBTVERPVVQKKwkJX0NydFNldFJlcG9ydE1vZGUoIF9DUlRfV0FSTiwgX0NSVERCR19NT0RFX0ZJTEUgKTsKKwkJX0NydFNldFJlcG9ydEZpbGUoIF9DUlRfV0FSTiwgX0NSVERCR19GSUxFX1NURE9VVCApOworCQlfQ3J0U2V0UmVwb3J0TW9kZSggX0NSVF9FUlJPUiwgX0NSVERCR19NT0RFX0ZJTEUgKTsKKwkJX0NydFNldFJlcG9ydEZpbGUoIF9DUlRfRVJST1IsIF9DUlREQkdfRklMRV9TVERPVVQgKTsKKwkJX0NydFNldFJlcG9ydE1vZGUoIF9DUlRfQVNTRVJULCBfQ1JUREJHX01PREVfRklMRSApOworCQlfQ3J0U2V0UmVwb3J0RmlsZSggX0NSVF9BU1NFUlQsIF9DUlREQkdfRklMRV9TVERPVVQgKTsKKworCQkvLyBEdW1weSBtZW1vcnkgc3RhdHMKKworIAkJX0NydE1lbUR1bXBBbGxPYmplY3RzU2luY2UoICZzMyApOworCSAgICBfQ3J0TWVtRHVtcFN0YXRpc3RpY3MoICZzMyApOworCX0KKworCS8vIE5vdyB0dXJuIG9mZiBtZW1vcnkgbGVhayBjaGVja2luZyBhbmQgZW5kIGFzIHRoZXJlIGFyZSBzb21lIAorCS8vIEdsb2JhbHMgdGhhdCBhcmUgYWxsb2NhdGVkIHRoYXQgZ2V0IHNlZW4gYXMgbGVha3MgKFhhbGFuPykKKworCWludCBkYmdGbGFnID0gX0NydFNldERiZ0ZsYWcoX0NSVERCR19SRVBPUlRfRkxBRyk7CisJZGJnRmxhZyAmPSB+KF9DUlREQkdfTEVBS19DSEVDS19ERik7CisJX0NydFNldERiZ0ZsYWcoIGRiZ0ZsYWcgKTsKKworI2VuZGlmCisKKwlyZXR1cm4gcmV0UmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvYy9zcmMvdG9vbHMveHRlc3QveHRlc3QuY3BwIGIvYy9zcmMvdG9vbHMveHRlc3QveHRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljOWFjM2UKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy90b29scy94dGVzdC94dGVzdC5jcHAKQEAgLTAsMCArMSwyNzkxIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiB4dGVzdCA6PSBiYXNpYyB0ZXN0IGFwcGxpY2F0aW9uIHRvIHJ1biB0aHJvdWdoIGEgc2VyaWVzIG9mIHRlc3RzIG9mCisgKgkJCXRoZSBYU0VDIGxpYnJhcnkuCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPiAKKworI2luY2x1ZGUgPGNhc3NlcnQ+CisKKyNpbmNsdWRlIDxtZW1vcnkuaD4KKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9QbGF0Zm9ybVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MVW5pRGVmcy5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFN0cmluZy5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy9wYXJzZXJzL1hlcmNlc0RPTVBhcnNlci5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy9mcmFtZXdvcmsvWE1MRm9ybWF0dGVyLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL2ZyYW1ld29yay9TdGRPdXRGb3JtYXRUYXJnZXQuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvZnJhbWV3b3JrL01lbUJ1ZkZvcm1hdFRhcmdldC5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy9mcmFtZXdvcmsvTWVtQnVmSW5wdXRTb3VyY2UuaHBwPgorCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MRXhjZXB0aW9uLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvSmFuaXRvci5ocHA+CisKKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNT3V0cHV0RmlsZS5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdUcmFuc2Zvcm1YUGF0aC5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdUcmFuc2Zvcm1YUGF0aEZpbHRlci5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdUcmFuc2Zvcm1DMTRuLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR09iamVjdC5ocHA+CisKKy8vIFhBTEFOCisKKyNpZm5kZWYgWFNFQ19OT19YQUxBTgorCisjaW5jbHVkZSA8eGFsYW5jL1hQYXRoL1hQYXRoRXZhbHVhdG9yLmhwcD4KKyNpbmNsdWRlIDx4YWxhbmMvWGFsYW5UcmFuc2Zvcm1lci9YYWxhblRyYW5zZm9ybWVyLmhwcD4KKworWEFMQU5fVVNJTkdfWEFMQU4oWFBhdGhFdmFsdWF0b3IpCitYQUxBTl9VU0lOR19YQUxBTihYYWxhblRyYW5zZm9ybWVyKQorCisjZW5kaWYKKworLy8gWFNFQworCisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDUGxhdGZvcm1VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ1Byb3ZpZGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2Nhbm9uL1hTRUNDMTRuMjAwMTAzMTUuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHUmVmZXJlbmNlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHU2lnbmF0dXJlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNOYW1lU3BhY2VFeHBhbmRlci5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDRE9NVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0JpblRYRk1JbnB1dFN0cmVhbS5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b0V4Y2VwdGlvbi5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdLZXlJbmZvWDUwOS5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdLZXlJbmZvTmFtZS5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdLZXlJbmZvUEdQRGF0YS5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdLZXlJbmZvU1BLSURhdGEuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHS2V5SW5mb01nbXREYXRhLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hlbmMvWEVOQ0NpcGhlci5ocHA+CisjaW5jbHVkZSA8eHNlYy94ZW5jL1hFTkNFbmNyeXB0ZWREYXRhLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hlbmMvWEVOQ0VuY3J5cHRlZEtleS5ocHA+CisjaW5jbHVkZSA8eHNlYy94ZW5jL1hFTkNFbmNyeXB0aW9uTWV0aG9kLmhwcD4KKworI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9TeW1tZXRyaWNLZXkuaHBwPgorCisjaWYgZGVmaW5lZCAoSEFWRV9PUEVOU1NMKQorIwlpbmNsdWRlIDx4c2VjL2VuYy9PcGVuU1NML09wZW5TU0xDcnlwdG9LZXlITUFDLmhwcD4KKyMJaW5jbHVkZSA8eHNlYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvS2V5UlNBLmhwcD4KKyMJaW5jbHVkZSA8b3BlbnNzbC9yYW5kLmg+CisjCWluY2x1ZGUgPG9wZW5zc2wvZXZwLmg+CisjCWluY2x1ZGUgPG9wZW5zc2wvcGVtLmg+CisjZW5kaWYKKyNpZiBkZWZpbmVkIChIQVZFX1dJTkNBUEkpCisjCWluY2x1ZGUgPHhzZWMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b0tleUhNQUMuaHBwPgorIwlpbmNsdWRlIDx4c2VjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9LZXlSU0EuaHBwPgorIwlpbmNsdWRlIDx4c2VjL2VuYy9XaW5DQVBJL1dpbkNBUElDcnlwdG9Qcm92aWRlci5ocHA+CisjZW5kaWYKKyNpZiBkZWZpbmVkIChIQVZFX05TUykKKyMJaW5jbHVkZSA8eHNlYy9lbmMvTlNTL05TU0NyeXB0b0tleUhNQUMuaHBwPgorIwlpbmNsdWRlIDx4c2VjL2VuYy9OU1MvTlNTQ3J5cHRvS2V5UlNBLmhwcD4KKyMJaW5jbHVkZSA8eHNlYy9lbmMvTlNTL05TU0NyeXB0b1Byb3ZpZGVyLmhwcD4KKyNlbmRpZgorCit1c2luZyBzdGQ6Om9zdHJlYW07Cit1c2luZyBzdGQ6OmNvdXQ7Cit1c2luZyBzdGQ6OmNlcnI7Cit1c2luZyBzdGQ6OmVuZGw7Cit1c2luZyBzdGQ6OmZsdXNoOworCisKKy8qCisgKiBCZWNhdXNlIG9mIGFsbCB0aGUgY2hhcmFjdGVycywgaXQncyBlYXNpZXN0IHRvIGluamVjdCBlbnRpcmUgWGVyY2VzIG5hbWVzcGFjZQorICogaW50byBnbG9iYWwKKyAqLworCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBHbG9iYWwgdmFyaWFibGVzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitib29sCWdfcHJpbnREb2NzID0gZmFsc2U7Citib29sCWdfdXNlV2luQ0FQSSA9IGZhbHNlOworYm9vbAlnX3VzZU5TUyA9IGZhbHNlOworYm9vbCAgICBnX2hhdmVBRVMgPSB0cnVlOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEtub3duICJHb29kIiBWYWx1ZXMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3Vuc2lnbmVkIGNoYXIgY3JlYXRlZERvY1JlZnMgWzldWzIwXSA9IHsKKwl7IDB4NTEsIDB4M2MsIDB4YjUsIDB4ZGYsIDB4YjksIDB4MWUsIDB4OWQsIDB4YWYsIDB4ZDQsIDB4NGEsCisJICAweDk1LCAweDc5LCAweGYxLCAweGQ2LCAweDU0LCAweGUsIDB4YjAsIDB4YjAsIDB4MjksIDB4ZTMsIH0sCisJeyAweDUxLCAweDNjLCAweGI1LCAweGRmLCAweGI5LCAweDFlLCAweDlkLCAweGFmLCAweGQ0LCAweDRhLCAKKwkgIDB4OTUsIDB4NzksIDB4ZjEsIDB4ZDYsIDB4NTQsIDB4ZSwgMHhiMCwgMHhiMCwgMHgyOSwgMHhlMywgfSwKKwl7IDB4NTIsIDB4NzQsIDB4YzMsIDB4ZTQsIDB4YzUsIDB4ZjcsIDB4MjAsIDB4YjAsIDB4ZDksIDB4NTIsIAorCSAgMHhkYiwgMHhiMywgMHhlZSwgMHg0NiwgMHg2NiwgMHg4ZiwgMHhlMSwgMHhiNiwgMHgzMCwgMHg5ZCwgfSwKKwl7IDB4NWEsIDB4MTQsIDB4OWMsIDB4NWEsIDB4NDAsIDB4MzQsIDB4NTEsIDB4NGYsIDB4ZWYsIDB4MWQsIAorCSAgMHg4NSwgMHg0NCwgMHhjNywgMHgyYSwgMHhkMywgMHhkMiwgMHgyLCAweGVkLCAweDY3LCAweGI0LCB9LAorCXsgMHg4OCwgMHhkMSwgMHg2NSwgMHhlZCwgMHgyYSwgMHhlNywgMHhjMCwgMHhiZCwgMHhlYSwgMHgzZSwgCisJICAweGU2LCAweGYzLCAweGQ0LCAweDhjLCAweGY3LCAweGRkLCAweGM4LCAweDg1LCAweGE5LCAweDZkLCB9LAorCXsgMHg1MiwgMHg3NCwgMHhjMywgMHhlNCwgMHhjNSwgMHhmNywgMHgyMCwgMHhiMCwgMHhkOSwgMHg1MiwgCisJICAweGRiLCAweGIzLCAweGVlLCAweDQ2LCAweDY2LCAweDhmLCAweGUxLCAweGI2LCAweDMwLCAweDlkLCB9LAorCXsgMHg1MiwgMHg3NCwgMHhjMywgMHhlNCwgMHhjNSwgMHhmNywgMHgyMCwgMHhiMCwgMHhkOSwgMHg1MiwgCisJICAweGRiLCAweGIzLCAweGVlLCAweDQ2LCAweDY2LCAweDhmLCAweGUxLCAweGI2LCAweDMwLCAweDlkLCB9LAorCXsgMHg2OSwgMHhCQSwgMHhGMSwgMHg1MywgMHg3RCwgMHg4MSwgMHg3OCwgMHhDQSwgMHhDQSwgMHg2MCwKKyAgCSAgMHgzQiwgMHgyRiwgMHg1NSwgMHg5QywgMHg4RSwgMHg1RiwgMHhFQiwgMHgzNSwgMHgzOCwgMHgyNSwgfSwKKyAgCXsgMHg1MSwgMHgzYywgMHhiNSwgMHhkZiwgMHhiOSwgMHgxZSwgMHg5ZCwgMHhhZiwgMHhkNCwgMHg0YSwgCisJICAweDk1LCAweDc5LCAweGYxLCAweGQ2LCAweDU0LCAweGUsIDB4YjAsIDB4YjAsIDB4MjksIDB4ZTMsIH0KKworfTsKKwordW5zaWduZWQgY2hhciBsb25nU2hhUmVmcyBbNF1bNjRdID0geworCisJeyAweDdmLCAweGE0LCAweGFiLCAweGU4LCAweDA3LCAweDA2LCAweDM1LCAweGYzLCAweGEzLCAweDU2LAorCSAgMHhlOCwgMHg2NCwgMHgyZCwgMHhjNCwgMHg3YywgMHg4YywgMHgxZSwgMHg0OCwgMHg3NCwgMHhmMCwKKwkgIDB4NDgsIDB4NjMsIDB4MWIsIDB4ZWEsIDB4NTcsIDB4ZWMsIDB4OTYsIDB4YTYsIH0sCisJeyAweDc1LCAweGVjLCAweGJhLCAweDUxLCAweGRhLCAweGI3LCAweDQyLCAweDE2LCAweDM0LCAweDJkLAorCSAgMHhkNywgMHg0ZSwgMHg2YSwgMHgzMywgMHhiNiwgMHhiMywgMHhlMywgMHgyZCwgMHgyOCwgMHhmNiwgCisJICAweDdiLCAweDg3LCAweDIxLCAweGZkLCAweGQyLCAweDJlLCAweDUwLCAweGI5LCAweDU1LCAweDgxLCAKKwkgIDB4MjMsIDB4MDYsIH0sCisJeyAweDk5LCAweDI1LCAweDkyLCAweGEzLCAweGE5LCAweDQ0LCAweDEyLCAweDRkLCAweGExLCAweDg2LCAKKwkgIDB4M2YsIDB4ODEsIDB4ZDMsIDB4YTcsIDB4MzcsIDB4NjEsIDB4ZmYsIDB4ODYsIDB4OWYsIDB4MDIsIAorCSAgMHgxNiwgMHg0OCwgMHgxNiwgMHhhMCwgMHhlYywgMHg3YywgMHhkNSwgMHgzMywgMHgzMCwgMHhlYiwgCisJICAweGIyLCAweDlmLCAweDkzLCAweGI5LCAweDRhLCAweDMyLCAweDIwLCAweDJlLCAweDhhLCAweGZkLAorICAgICAgMHhhNiwgMHg2ZSwgMHg2NywgMHgxZCwgMHg5NiwgMHhjZCwgMHhmMSwgMHhjYiwgfSwKKwl7IDB4ZjgsIDB4ZjUsIDB4ZjMsIDB4YjYsIDB4YWIsIDB4N2MsIDB4MjUsIDB4NTIsIDB4MDYsIDB4MjMsIAorCSAgMHgyYywgMHg5ZiwgMHg0ZSwgMHgyNSwgMHgwZiwgMHgxNiwgMHg1OCwgMHhmMywgMHhjNiwgMHhkYywgCisJICAweGI0LCAweDg1LCAweDA0LCAweDNkLCAweDlmLCAweGVlLCAweDdkLCAweDVkLCAweDczLCAweDg2LCAKKwkgIDB4ZTMsIDB4ZDQsIDB4M2EsIDB4ZTAsIDB4ZDUsIDB4OGEsIDB4ZWMsIDB4N2YsIDB4ZDQsIDB4NjMsCisgICAgICAweDRmLCAweDlhLCAweGNmLCAweGZhLCAweDE1LCAweGRiLCAweDBmLCAweGU1LCAweDA5LCAweDZiLCAKKwkgIDB4ZjEsIDB4YTEsIDB4MzYsIDB4MDUsIDB4NDIsIDB4NjksIDB4NDksIDB4YzMsIDB4OWUsIDB4OGMsIAorCSAgMHg5OSwgMHhhNiwgMHg3NSwgMHhhZSwgfSwKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU29tZSB0ZXN0IGRhdGEKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vICJDTj08VGVzdCw+LE89WFNFQyAgIgorCitYTUxDaCBzX3RzdEROYW1lW10gPSB7CisKKwljaExhdGluX0MsCisJY2hMYXRpbl9OLAorCWNoRXF1YWwsCisJY2hPcGVuQW5nbGUsCisJY2hMYXRpbl9ULAorCWNoTGF0aW5fZSwKKwljaExhdGluX3MsCisJY2hMYXRpbl90LAorCWNoQ29tbWEsCisJY2hDbG9zZUFuZ2xlLAorCWNoQ29tbWEsCisJY2hMYXRpbl9PLAorCWNoRXF1YWwsCisJY2hMYXRpbl9YLAorCWNoTGF0aW5fUywKKwljaExhdGluX0UsCisJY2hMYXRpbl9DLAorCWNoU3BhY2UsCisJY2hTcGFjZSwKKwljaE51bGwKKworfTsKKworWE1MQ2ggc190c3RLZXlOYW1lW10gPSB7CisKKwljaExhdGluX0YsIGNoTGF0aW5fciwgY2hMYXRpbl9lLCBjaExhdGluX2QsIGNoU2luZ2xlUXVvdGUsCisJY2hMYXRpbl9zLCBjaFNwYWNlLCBjaExhdGluX24sIGNoTGF0aW5fYSwgY2hMYXRpbl9tLAorCWNoTGF0aW5fZSwgY2hOdWxsCit9OworCitYTUxDaCBzX3RzdFBHUEtleUlEW10gPSB7CisKKwljaExhdGluX0QsIGNoTGF0aW5fdSwgY2hMYXRpbl9tLCBjaExhdGluX20sIGNoTGF0aW5feSwgY2hTcGFjZSwKKwljaExhdGluX1AsIGNoTGF0aW5fRywgY2hMYXRpbl9QLCBjaFNwYWNlLAorCWNoTGF0aW5fSSwgY2hMYXRpbl9ELCBjaE51bGwKK307CisKK1hNTENoIHNfdHN0UEdQS2V5UGFja2V0W10gPSB7CisKKwljaExhdGluX0QsIGNoTGF0aW5fdSwgY2hMYXRpbl9tLCBjaExhdGluX20sIGNoTGF0aW5feSwgY2hTcGFjZSwKKwljaExhdGluX1AsIGNoTGF0aW5fRywgY2hMYXRpbl9QLCBjaFNwYWNlLAorCWNoTGF0aW5fUCwgY2hMYXRpbl9hLCBjaExhdGluX2MsIGNoTGF0aW5faywgY2hMYXRpbl9lLCBjaExhdGluX3QsIGNoTnVsbAorfTsKKworWE1MQ2ggc190c3RTZXhwMVtdID0geworCisJY2hMYXRpbl9ELCBjaExhdGluX3UsIGNoTGF0aW5fbSwgY2hMYXRpbl9tLCBjaExhdGluX3ksIGNoU3BhY2UsCisJY2hMYXRpbl9TLCBjaExhdGluX2UsIGNoTGF0aW5feCwgY2hMYXRpbl9wLCBjaERpZ2l0XzEsIGNoTnVsbAorfTsKKworWE1MQ2ggc190c3RTZXhwMltdID0geworCisJY2hMYXRpbl9ELCBjaExhdGluX3UsIGNoTGF0aW5fbSwgY2hMYXRpbl9tLCBjaExhdGluX3ksIGNoU3BhY2UsCisJY2hMYXRpbl9TLCBjaExhdGluX2UsIGNoTGF0aW5feCwgY2hMYXRpbl9wLCBjaERpZ2l0XzIsIGNoTnVsbAorfTsKKworWE1MQ2ggc190c3RNZ210RGF0YVtdID0geworCisJY2hMYXRpbl9ELCBjaExhdGluX3UsIGNoTGF0aW5fbSwgY2hMYXRpbl9tLCBjaExhdGluX3ksIGNoU3BhY2UsCisJY2hMYXRpbl9NLCBjaExhdGluX2csIGNoTGF0aW5fbSwgY2hMYXRpbl90LCBjaFNwYWNlLAorCWNoTGF0aW5fRCwgY2hMYXRpbl9hLCBjaExhdGluX3QsIGNoTGF0aW5fYSwgY2hOdWxsCisKK307CisKK1hNTENoIHNfdHN0Q2FycmllZEtleU5hbWVbXSA9IHsKKworCWNoTGF0aW5fRCwgY2hMYXRpbl91LCBjaExhdGluX20sIGNoTGF0aW5fbSwgY2hMYXRpbl95LCBjaFNwYWNlLAorCWNoTGF0aW5fQywgY2hMYXRpbl9hLCBjaExhdGluX3IsIGNoTGF0aW5fciwgY2hMYXRpbl95LCBjaE51bGwKKworfTsKKworWE1MQ2ggc190c3RSZWNpcGllbnRbXSA9IHsKKworCWNoTGF0aW5fRCwgY2hMYXRpbl91LCBjaExhdGluX20sIGNoTGF0aW5fbSwgY2hMYXRpbl95LCBjaFNwYWNlLAorCWNoTGF0aW5fUiwgY2hMYXRpbl9lLCBjaExhdGluX2MsIGNoTGF0aW5faSwgY2hMYXRpbl9wLAorCWNoTGF0aW5faSwgY2hMYXRpbl9lLCBjaExhdGluX24sIGNoTGF0aW5fdCwgY2hOdWxsCisKK307CisKK1hNTENoIHNfdHN0RW5jb2RpbmdbXSA9IHsKKwljaExhdGluX0IsIGNoTGF0aW5fYSwgY2hMYXRpbl9zLCBjaExhdGluX2UsIGNoRGlnaXRfNiwgY2hEaWdpdF80LCBjaE51bGwKK307CisKK1hNTENoIHNfdHN0TWltZVR5cGVbXSA9IHsKKwljaExhdGluX2ksIGNoTGF0aW5fbSwgY2hMYXRpbl9hLCBjaExhdGluX2csIGNoTGF0aW5fZSwKKwljaEZvcndhcmRTbGFzaCwgY2hMYXRpbl9wLCBjaExhdGluX24sIGNoTGF0aW5fZywgY2hOdWxsCit9OworCit1bnNpZ25lZCBjaGFyIHNfdHN0T0FFUHBhcmFtc1tdID0gIjEyMzQ1Njc4IjsKKwordW5zaWduZWQgY2hhciBzX3RzdEJhc2U2NEVuY29kZWRTdHJpbmdbXSA9ICJZbU5rWldabmFHbHFhMnh0Ym05d2NSclBYalExaHZoREZUK0VkZXNNQVBFNEY2dmxUK3kwSFBYZTArbkFHTFE4IjsKK2NoYXIgc190c3REZWNyeXB0ZWRTdHJpbmdbXSA9ICJBIHRlc3QgZW5jcnlwdGVkIHNlY3JldCI7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU29tZSB0ZXN0IGtleXMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIEEgUEtDUzggUEVNIGVuY29kZWQgUHJpdmF0ZUtleSBzdHJ1Y3R1cmUgKG5vdCBFbmNyeXB0ZWQpCisKK2NoYXIgc190c3RSU0FQcml2YXRlS2V5W10gPSAiXG5cCistLS0tLUJFR0lOIFJTQSBQUklWQVRFIEtFWS0tLS0tXG5cCitNSUlDWEFJQkFBS0JnUURRajNwa3RaY2tBendzaFJuZnZMaHozZGFOVTZ4cEF6b0hvM3FqQ2Z0eER3SDFSeW5QXG5cCitBNWV5Y0pWa1Y4bXdIMkMxUEZrdHBqdFFUWjJDdlBqdUttVVY1ekV2bVl6dUlvNlNXWWFWWk4vUEpqenNFWk1hXG5cCitWQStVOEdoZlgxWUYvcnN1RnpYQ2k4cjZGVmQzTE4vL3BYSEV3b0RHZEpVZGxwZFZFdVgxaUZLbE5RSURBUUFCXG5cCitBb0dBWVE3VWM3ZTZYYTBQdk53NFhWSHpPU0M4NzBwSVN4cVFUK3U1YjlSK2FuQUVoa1FXNWRzVEpweVVPWDFOXG5cCitSQ1JtR2hHNm9xN2duWTl4Uk4xeXIwdVZmSk50YzkvSG56Skw3TDFqZUpDOFViK3piRUJ2TnVQREwyUDIxQXJXXG5cCit0Y1hSeWNVbGZSQ1JCTG9wN3JmT1lQWHNqdGJvQUduUVkvNmhLNHJPRjRYR3JRVUNRUUQzRXVqKzBtWnFSUlo0XG5cCitNMXlOMndWUDBtS09NZzJpL0haWGFOZVZkOVgvd3lCZ0s2YjdCeEhmNm9uZi9tSUJXbkpuUkJsdmRDclNkaHVUXG5cCitsUEtFb1NndkFrRUEyQmhmV3dRaWhxRDRxSmNWNjVuZm9zanpPWkc0MXJIWDY5bklxSEk3RWp4NVpnZVFCeUg5XG5cCitZbTk2eVhvU3BaajlabEZzSllOb2dUQkJuVUJqcytqTDJ3SkFGanBWUzllUjd5MlgvK2hmQTBRWkRqMVhNSVBBXG5cCitSbEdBTkF6eW1EZlh3TkxGTHVHK2ZBYit6SzVGQ1NuUmwxMlR2VWFiSXpQSVJuYnB0RFZLUERSamNRSkJBTG44XG5cCiswQ1Z2KzU5UDhIUjZCUjNRUkJEQlQ4WGV5KzNOQjRBdzQybEhWOXdzUEhnNlRoWTFoUFl4Nk1aNzBJekNqbVovXG5cCis4Y3FmdlZSamlqV2o4NndtMHowQ1FGS2ZSZkJScmFPWnFmbU9pQUI0K0lMaGJKd0tCQk82YXZYOVRQZ01Za3lOXG5cCittV0tDeFMrOWZQaXkxaUkrRytCOXhrdzJnSjlpOFA4MXQ3ZnNPdmRUREZBPVxuXAorLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0iOworCitzdGF0aWMgY2hhciBzX2tleVN0cltdID0gImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6YWJjZGVmIjsKKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEZpbmQgYSBub2RlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitET01Ob2RlICogZmluZE5vZGUoRE9NTm9kZSAqIG4sIFhNTENoICogbmFtZSkgeworCisJaWYgKFhNTFN0cmluZzo6Y29tcGFyZVN0cmluZyhuYW1lLCBuLT5nZXROb2RlTmFtZSgpKSA9PSAwKQorCQlyZXR1cm4gbjsKKworCURPTU5vZGUgKiBjID0gbi0+Z2V0Rmlyc3RDaGlsZCgpOworCisJd2hpbGUgKGMgIT0gTlVMTCkgeworCisJCWlmIChjLT5nZXROb2RlVHlwZSgpID09IERPTU5vZGU6OkVMRU1FTlRfTk9ERSkgeworCisJCQlET01Ob2RlICogcyA9IGZpbmROb2RlKGMsIG5hbWUpOworCQkJaWYgKHMgIT0gTlVMTCkKKwkJCQlyZXR1cm4gczsKKworCQl9CisKKwkJYyA9IGMtPmdldE5leHRTaWJsaW5nKCk7CisKKwl9CisKKwlyZXR1cm4gTlVMTDsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENyZWF0ZSBhIGtleQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWFNFQ0NyeXB0b0tleUhNQUMgKiBjcmVhdGVITUFDS2V5KGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBzdHIpIHsKKworCS8vIENyZWF0ZSB0aGUgSE1BQyBrZXkKKwlYU0VDQ3J5cHRvS2V5SE1BQyAqIGhtYWNLZXkgPSBOVUxMOworCisjaWYgZGVmaW5lZChIQVZFX1dJTkNBUEkpCisKKwlpZiAoZ191c2VXaW5DQVBJID09IHRydWUpIHsKKwkJaG1hY0tleSA9IG5ldyBXaW5DQVBJQ3J5cHRvS2V5SE1BQygwKTsKKwl9CisjZW5kaWYKKworIyBpZiBkZWZpbmVkIChIQVZFX05TUykKKwlpZiAoZ191c2VOU1MgPT0gdHJ1ZSkgeworCQlobWFjS2V5ID0gbmV3IE5TU0NyeXB0b0tleUhNQUMoKTsKKwl9CisjZW5kaWYKKworI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKwlpZiAoaG1hY0tleSA9PSBOVUxMKQorCQlobWFjS2V5ID0gbmV3IE9wZW5TU0xDcnlwdG9LZXlITUFDKCk7CisjZW5kaWYKKworCWhtYWNLZXktPnNldEtleSgodW5zaWduZWQgY2hhciAqKSBzdHIsICh1bnNpZ25lZCBpbnQpIHN0cmxlbigoY2hhciAqKXN0cikpOworCisJcmV0dXJuIGhtYWNLZXk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBVdGlsaXR5IGZ1bmN0aW9uIGZvciBvdXRwdXR0aW5nIGhleCBkYXRhCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIG91dHB1dEhleCh1bnNpZ25lZCBjaGFyICogYnVmLCBpbnQgbGVuKSB7CisKKwljb3V0IDw8IHN0ZDo6aGV4OworCWZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKKwkJY291dCA8PCAiMHgiIDw8ICh1bnNpZ25lZCBpbnQpIGJ1ZltpXSA8PCAiLCAiOworCX0KKwljb3V0IDw8IHN0ZDo6aW9zOjpkZWMgPDwgZW5kbDsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENyZWF0ZSBhIGJhc2ljIGRvY3VtZW50CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitET01Eb2N1bWVudCAqIGNyZWF0ZVRlc3REb2MoRE9NSW1wbGVtZW50YXRpb24gKiBpbXBsKSB7CisKKwlET01Eb2N1bWVudCAqZG9jID0gaW1wbC0+Y3JlYXRlRG9jdW1lbnQoCisJCQkJMCwgICAgICAgICAgICAgICAgICAgIC8vIHJvb3QgZWxlbWVudCBuYW1lc3BhY2UgVVJJLgorCQkJCU1BS0VfVU5JQ09ERV9TVFJJTkcoIkFEb2MiKSwgICAgICAgICAgICAvLyByb290IGVsZW1lbnQgbmFtZQorCQkJCU5VTEwpOy8vIERPTURvY3VtZW50VHlwZSgpKTsgIC8vIGRvY3VtZW50IHR5cGUgb2JqZWN0IChEVEQpLgorCisJRE9NRWxlbWVudCAqcm9vdEVsZW0gPSBkb2MtPmdldERvY3VtZW50RWxlbWVudCgpOworCXJvb3RFbGVtLT5zZXRBdHRyaWJ1dGVOUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYTUxOUywgCisJCU1BS0VfVU5JQ09ERV9TVFJJTkcoInhtbG5zOmZvbyIpLCBNQUtFX1VOSUNPREVfU1RSSU5HKCJodHRwOi8vd3d3LmZvby5vcmciKSk7CisKKwlET01FbGVtZW50ICAqIHByb2RFbGVtID0gZG9jLT5jcmVhdGVFbGVtZW50KE1BS0VfVU5JQ09ERV9TVFJJTkcoInByb2R1Y3QiKSk7CisJcm9vdEVsZW0tPmFwcGVuZENoaWxkKHByb2RFbGVtKTsKKworCURPTVRleHQgICAgKiBwcm9kRGF0YVZhbCA9IGRvYy0+Y3JlYXRlVGV4dE5vZGUoTUFLRV9VTklDT0RFX1NUUklORygiWE1MU2VjdXJpdHlDIikpOworCXByb2RFbGVtLT5hcHBlbmRDaGlsZChwcm9kRGF0YVZhbCk7CisKKwlET01FbGVtZW50ICAqY2F0RWxlbSA9IGRvYy0+Y3JlYXRlRWxlbWVudChNQUtFX1VOSUNPREVfU1RSSU5HKCJjYXRlZ29yeSIpKTsKKwlyb290RWxlbS0+YXBwZW5kQ2hpbGQoY2F0RWxlbSk7CisJY2F0RWxlbS0+c2V0QXR0cmlidXRlTlMoTlVMTCxNQUtFX1VOSUNPREVfU1RSSU5HKCJpZGVhIiksIE1BS0VfVU5JQ09ERV9TVFJJTkcoImdyZWF0IikpOworCisJRE9NVGV4dCAgICAqY2F0RGF0YVZhbCA9IGRvYy0+Y3JlYXRlVGV4dE5vZGUoTUFLRV9VTklDT0RFX1NUUklORygiWE1MIFNlY3VyaXR5IFRvb2xzIikpOworCWNhdEVsZW0tPmFwcGVuZENoaWxkKGNhdERhdGFWYWwpOworCisJcmV0dXJuIGRvYzsKKworfQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBPdXRwdXQgYSBkb2N1bWVudCBpZiBzbyByZXF1aXJlZAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBvdXRwdXREb2MoRE9NSW1wbGVtZW50YXRpb24gKiBpbXBsLCBET01Eb2N1bWVudCAqIGRvYykgeworCisJaWYgKGdfcHJpbnREb2NzID09IGZhbHNlKQorCQlyZXR1cm47CisKKwlYTUxGb3JtYXRUYXJnZXQgKmZvcm1hdFRhcmdldCA9IG5ldyBTdGRPdXRGb3JtYXRUYXJnZXQoKTsKKworI2lmIGRlZmluZWQgKFhTRUNfWEVSQ0VTX0RPTUxTU0VSSUFMSVpFUikKKworICAgIC8vIERPTSBMMyB2ZXJzaW9uIGFzIHBlciBYZXJjZXMgMy4wIEFQSQorICAgIERPTUxTU2VyaWFsaXplciAgICp0aGVTZXJpYWxpemVyID0gKChET01JbXBsZW1lbnRhdGlvbkxTKilpbXBsKS0+Y3JlYXRlTFNTZXJpYWxpemVyKCk7CisKKyAgICAvLyBHZXQgdGhlIGNvbmZpZyBzbyB3ZSBjYW4gc2V0IHVwIHByZXR0eSBwcmludGluZworICAgIERPTUNvbmZpZ3VyYXRpb24gKmRjID0gdGhlU2VyaWFsaXplci0+Z2V0RG9tQ29uZmlnKCk7CisgICAgZGMtPnNldFBhcmFtZXRlcihYTUxVbmk6OmZnRE9NV1JURm9ybWF0UHJldHR5UHJpbnQsIGZhbHNlKTsKKworICAgIC8vIE5vdyBjcmVhdGUgYW4gb3V0cHV0IG9iamVjdCB0byBmb3JtYXQgdG8gVVRGLTgKKyAgICBET01MU091dHB1dCAqdGhlT3V0cHV0ID0gKChET01JbXBsZW1lbnRhdGlvbkxTKilpbXBsKS0+Y3JlYXRlTFNPdXRwdXQoKTsKKyAgICBKYW5pdG9yPERPTUxTT3V0cHV0PiBqX3RoZU91dHB1dCh0aGVPdXRwdXQpOworCisgICAgdGhlT3V0cHV0LT5zZXRFbmNvZGluZyhNQUtFX1VOSUNPREVfU1RSSU5HKCJVVEYtOCIpKTsKKyAgICB0aGVPdXRwdXQtPnNldEJ5dGVTdHJlYW0oZm9ybWF0VGFyZ2V0KTsKKworI2Vsc2UKKworCURPTVdyaXRlciAgICAgICAgICp0aGVTZXJpYWxpemVyID0gKChET01JbXBsZW1lbnRhdGlvbkxTKilpbXBsKS0+Y3JlYXRlRE9NV3JpdGVyKCk7CisKKwl0aGVTZXJpYWxpemVyLT5zZXRFbmNvZGluZyhNQUtFX1VOSUNPREVfU1RSSU5HKCJVVEYtOCIpKTsKKwlpZiAodGhlU2VyaWFsaXplci0+Y2FuU2V0RmVhdHVyZShYTUxVbmk6OmZnRE9NV1JURm9ybWF0UHJldHR5UHJpbnQsIGZhbHNlKSkKKwkJdGhlU2VyaWFsaXplci0+c2V0RmVhdHVyZShYTUxVbmk6OmZnRE9NV1JURm9ybWF0UHJldHR5UHJpbnQsIGZhbHNlKTsKKworI2VuZGlmCisKKwljZXJyIDw8IGVuZGw7CisKKyNpZiBkZWZpbmVkIChYU0VDX1hFUkNFU19ET01MU1NFUklBTElaRVIpCisgICAgdGhlU2VyaWFsaXplci0+d3JpdGUoZG9jLCB0aGVPdXRwdXQpOworI2Vsc2UKKwl0aGVTZXJpYWxpemVyLT53cml0ZU5vZGUoZm9ybWF0VGFyZ2V0LCAqZG9jKTsKKyNlbmRpZgorCQorCWNvdXQgPDwgZW5kbDsKKworCWNlcnIgPDwgZW5kbDsKKworCWRlbGV0ZSB0aGVTZXJpYWxpemVyOworCWRlbGV0ZSBmb3JtYXRUYXJnZXQ7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBVbml0IHRlc3QgaGVscGVyIGZ1bmN0aW9ucworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYm9vbCByZVZhbGlkYXRlU2lnKERPTUltcGxlbWVudGF0aW9uICppbXBsLCBET01Eb2N1bWVudCAqIGluRG9jLCBYU0VDQ3J5cHRvS2V5ICprKSB7CisKKwkvLyBUYWtlIGEgc2lnbmF0dXJlIGluIERPTSwgc2VyaWFsaXNlIGFuZCByZS12YWxpZGF0ZQorCisJdHJ5IHsKKworCQlNZW1CdWZGb3JtYXRUYXJnZXQgKmZvcm1hdFRhcmdldCA9IG5ldyBNZW1CdWZGb3JtYXRUYXJnZXQoKTsKKyNpZiBkZWZpbmVkIChYU0VDX1hFUkNFU19ET01MU1NFUklBTElaRVIpCisKKyAgICAgICAgLy8gRE9NIEwzIHZlcnNpb24gYXMgcGVyIFhlcmNlcyAzLjAgQVBJCisgICAgICAgIERPTUxTU2VyaWFsaXplciAgICp0aGVTZXJpYWxpemVyID0gKChET01JbXBsZW1lbnRhdGlvbkxTKilpbXBsKS0+Y3JlYXRlTFNTZXJpYWxpemVyKCk7CisKKyAgICAgICAgLy8gR2V0IHRoZSBjb25maWcgc28gd2UgY2FuIHNldCB1cCBwcmV0dHkgcHJpbnRpbmcKKyAgICAgICAgRE9NQ29uZmlndXJhdGlvbiAqZGMgPSB0aGVTZXJpYWxpemVyLT5nZXREb21Db25maWcoKTsKKyAgICAgICAgZGMtPnNldFBhcmFtZXRlcihYTUxVbmk6OmZnRE9NV1JURm9ybWF0UHJldHR5UHJpbnQsIGZhbHNlKTsKKyAgICAgICAgCisgICAgICAgIC8vIE5vdyBjcmVhdGUgYW4gb3V0cHV0IG9iamVjdCB0byBmb3JtYXQgdG8gVVRGLTgKKyAgICAgICAgRE9NTFNPdXRwdXQgKnRoZU91dHB1dCA9ICgoRE9NSW1wbGVtZW50YXRpb25MUyopaW1wbCktPmNyZWF0ZUxTT3V0cHV0KCk7CisgICAgICAgIEphbml0b3I8RE9NTFNPdXRwdXQ+IGpfdGhlT3V0cHV0KHRoZU91dHB1dCk7CisgICAgICAgIAorICAgICAgICB0aGVPdXRwdXQtPnNldEVuY29kaW5nKE1BS0VfVU5JQ09ERV9TVFJJTkcoIlVURi04IikpOworICAgICAgICB0aGVPdXRwdXQtPnNldEJ5dGVTdHJlYW0oZm9ybWF0VGFyZ2V0KTsKKworICAgICAgICB0aGVTZXJpYWxpemVyLT53cml0ZShpbkRvYyx0aGVPdXRwdXQpOworI2Vsc2UKKworCQlET01Xcml0ZXIgKnRoZVNlcmlhbGl6ZXIgPSAoKERPTUltcGxlbWVudGF0aW9uTFMqKWltcGwpLT5jcmVhdGVET01Xcml0ZXIoKTsKKworCQl0aGVTZXJpYWxpemVyLT5zZXRFbmNvZGluZyhNQUtFX1VOSUNPREVfU1RSSU5HKCJVVEYtOCIpKTsKKworCQlpZiAodGhlU2VyaWFsaXplci0+Y2FuU2V0RmVhdHVyZShYTUxVbmk6OmZnRE9NV1JURm9ybWF0UHJldHR5UHJpbnQsIGZhbHNlKSkKKwkJCXRoZVNlcmlhbGl6ZXItPnNldEZlYXR1cmUoWE1MVW5pOjpmZ0RPTVdSVEZvcm1hdFByZXR0eVByaW50LCBmYWxzZSk7CisKKworCQl0aGVTZXJpYWxpemVyLT53cml0ZU5vZGUoZm9ybWF0VGFyZ2V0LCAqaW5Eb2MpOworCisjZW5kaWYKKworCQkvLyBDb3B5IHRvIGEgbmV3IGJ1ZmZlcgorCQl4c2Vjc2l6ZV90IGxlbiA9IGZvcm1hdFRhcmdldC0+Z2V0TGVuKCk7CisJCWNoYXIgKiBtYnVmID0gbmV3IGNoYXIgW2xlbiArIDFdOworCQltZW1jcHkobWJ1ZiwgZm9ybWF0VGFyZ2V0LT5nZXRSYXdCdWZmZXIoKSwgbGVuKTsKKwkJbWJ1ZltsZW5dID0gJ1wwJzsKKworCQlkZWxldGUgdGhlU2VyaWFsaXplcjsKKwkJZGVsZXRlIGZvcm1hdFRhcmdldDsKKworCQkvKgorCQkgKiBSZS1wYXJzZQorCQkgKi8KKworCQlYZXJjZXNET01QYXJzZXIgcGFyc2VyOworCQkKKwkJcGFyc2VyLnNldERvTmFtZXNwYWNlcyh0cnVlKTsKKwkJcGFyc2VyLnNldENyZWF0ZUVudGl0eVJlZmVyZW5jZU5vZGVzKHRydWUpOworCisJCU1lbUJ1ZklucHV0U291cmNlKiBtZW1JUyA9IG5ldyBNZW1CdWZJbnB1dFNvdXJjZSAoKGNvbnN0IFhNTEJ5dGUqKSBtYnVmLCAKKwkJCQkJCQkJCQkJCQkJCQlsZW4sICJYU0VDTWVtIik7CisKKwkJcGFyc2VyLnBhcnNlKCptZW1JUyk7CisJCURPTURvY3VtZW50ICogZG9jID0gcGFyc2VyLmFkb3B0RG9jdW1lbnQoKTsKKworCisJCWRlbGV0ZShtZW1JUyk7CisJCWRlbGV0ZVtdIG1idWY7CisKKwkJLyoKKwkJICogVmFsaWRhdGUgc2lnbmF0dXJlCisJCSAqLworCisJCVhTRUNQcm92aWRlciBwcm92OworCQlEU0lHU2lnbmF0dXJlICogc2lnID0gcHJvdi5uZXdTaWduYXR1cmVGcm9tRE9NKGRvYyk7CisJCXNpZy0+bG9hZCgpOworCQlzaWctPnNldFNpZ25pbmdLZXkoayk7CisKKwkJYm9vbCByZXQgPSBzaWctPnZlcmlmeSgpOworCisJCWRvYy0+cmVsZWFzZSgpOworCisJCXJldHVybiByZXQ7CisKKwl9CisKKwljYXRjaCAoWFNFQ0V4Y2VwdGlvbiAmZSkKKwl7CisJCWNlcnIgPDwgIkFuIGVycm9yIG9jY3VyZWQgZHVyaW5nIHNpZ25hdHVyZSBwcm9jZXNzaW5nXG4gICBNZXNzYWdlOiAiOworCQljaGFyICogY2UgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShlLmdldE1zZygpKTsKKwkJY2VyciA8PCBjZSA8PCBlbmRsOworCQlkZWxldGUgY2U7CisJCWV4aXQoMSk7CisJCQorCX0JCisJY2F0Y2ggKFhTRUNDcnlwdG9FeGNlcHRpb24gJmUpCisJeworCQljZXJyIDw8ICJBIGNyeXB0b2dyYXBoaWMgZXJyb3Igb2NjdXJlZCBkdXJpbmcgc2lnbmF0dXJlIHByb2Nlc3NpbmdcbiAgIE1lc3NhZ2U6ICIKKwkJPDwgZS5nZXRNc2coKSA8PCBlbmRsOworCQlleGl0KDEpOworCX0KKworfQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBVbml0IHRlc3RzIGZvciBzaWduYXR1cmUKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwordm9pZCB1bml0VGVzdEVudmVsb3BpbmdTaWduYXR1cmUoRE9NSW1wbGVtZW50YXRpb24gKiBpbXBsKSB7CisJCisJLy8gVGhpcyB0ZXN0cyBhbiBlbnZlbG9waW5nIHNpZ25hdHVyZSBhcyB0aGUgcm9vdCBub2RlCisKKwljZXJyIDw8ICJDcmVhdGluZyBlbnZlbG9waW5nIHNpZ25hdHVyZSAuLi4gIjsKKwkKKwl0cnkgeworCQkKKwkJLy8gQ3JlYXRlIGEgZG9jdW1lbnQKKyAgICAKKwkJRE9NRG9jdW1lbnQgKiBkb2MgPSBpbXBsLT5jcmVhdGVEb2N1bWVudCgpOworCisJCS8vIENyZWF0ZSB0aGUgc2lnbmF0dXJlCisKKwkJWFNFQ1Byb3ZpZGVyIHByb3Y7CisJCURTSUdTaWduYXR1cmUgKnNpZzsKKwkJRE9NRWxlbWVudCAqc2lnTm9kZTsKKwkJCisJCXNpZyA9IHByb3YubmV3U2lnbmF0dXJlKCk7CisJCXNpZy0+c2V0RFNJR05TUHJlZml4KE1BS0VfVU5JQ09ERV9TVFJJTkcoImRzIikpOworCQlzaWctPnNldFByZXR0eVByaW50KHRydWUpOworCisJCXNpZ05vZGUgPSBzaWctPmNyZWF0ZUJsYW5rU2lnbmF0dXJlKGRvYywgCisJCQlEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklDMTROX0NPTSwKKwkJCURTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUhNQUNfU0hBMSk7CisKKwkJZG9jLT5hcHBlbmRDaGlsZChzaWdOb2RlKTsKKworCQkvLyBBZGQgYW4gb2JqZWN0CisJCURTSUdPYmplY3QgKiBvYmogPSBzaWctPmFwcGVuZE9iamVjdCgpOworCQlvYmotPnNldElkKE1BS0VfVU5JQ09ERV9TVFJJTkcoIk9iamVjdElkIikpOworCisJCS8vIENyZWF0ZSBhIHRleHQgbm9kZQorCQlET01UZXh0ICogdHh0PSBkb2MtPmNyZWF0ZVRleHROb2RlKE1BS0VfVU5JQ09ERV9TVFJJTkcoIkEgdGVzdCBzdHJpbmciKSk7CisJCW9iai0+YXBwZW5kQ2hpbGQodHh0KTsKKworCQkvLyBBZGQgYSBSZWZlcmVuY2UKKwkJc2lnLT5jcmVhdGVSZWZlcmVuY2UoTUFLRV9VTklDT0RFX1NUUklORygiI09iamVjdElkIiksIAorCQkJRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJU0hBMSk7CisKKwkJLy8gR2V0IGEga2V5CisJCWNlcnIgPDwgInNpZ25pbmcgLi4uICI7CisKKwkJc2lnLT5zZXRTaWduaW5nS2V5KGNyZWF0ZUhNQUNLZXkoKHVuc2lnbmVkIGNoYXIgKikgInNlY3JldCIpKTsKKwkJc2lnLT5zaWduKCk7CisKKwkJY2VyciA8PCAidmFsaWRhdGluZyAuLi4gIjsKKwkJaWYgKCFzaWctPnZlcmlmeSgpKSB7CisJCQljZXJyIDw8ICJiYWQgdmVyaWZ5ISIgPDwgZW5kbDsKKwkJCWV4aXQoMSk7CisJCX0KKworCQljZXJyIDw8ICJPSyAuLi4gc2VyaWFsaXNlIGFuZCByZS12ZXJpZnkgLi4uICI7CisJCWlmICghcmVWYWxpZGF0ZVNpZyhpbXBsLCBkb2MsIGNyZWF0ZUhNQUNLZXkoKHVuc2lnbmVkIGNoYXIgKikgInNlY3JldCIpKSkgeworCisJCQljZXJyIDw8ICJiYWQgdmVyaWZ5ISIgPDwgZW5kbDsKKwkJCWV4aXQoMSk7CisKKwkJfQorCisJCWNlcnIgPDwgIk9LIC4uLiAiOworCisJCS8vIE5vdyBzZXQgdG8gYmFkCisJCXR4dC0+c2V0Tm9kZVZhbHVlKE1BS0VfVU5JQ09ERV9TVFJJTkcoIkEgYmFkIHN0cmluZyIpKTsKKworCQljZXJyIDw8ICJ2ZXJpZnkgYmFkIGRhdGEgLi4uICI7CisJCWlmIChzaWctPnZlcmlmeSgpKSB7CisKKwkJCWNlcnIgPDwgImJhZCAtIHNob3VsZCBoYXZlIGZhaWxlZCEiIDw8IGVuZGw7CisJCQlleGl0KDEpOworCisJCX0KKworCQljZXJyIDw8ICJPSyAodmVyaWZ5IGZhbHNlKSAuLi4gc2VyaWFsaXNlIGFuZCByZS12ZXJpZnkgLi4uICI7CisJCWlmIChyZVZhbGlkYXRlU2lnKGltcGwsIGRvYywgY3JlYXRlSE1BQ0tleSgodW5zaWduZWQgY2hhciAqKSAic2VjcmV0IikpKSB7CisKKwkJCWNlcnIgPDwgImJhZCAtIHNob3VsZCBoYXZlIGZhaWxlZCIgPDwgZW5kbDsKKwkJCWV4aXQoMSk7CisKKwkJfQorCisJCWNlcnIgPDwgIk9LIiA8PCBlbmRsOworCQkvLyBSZXNldCB0byBPSworCQl0eHQtPnNldE5vZGVWYWx1ZShNQUtFX1VOSUNPREVfU1RSSU5HKCJBIHRlc3Qgc3RyaW5nIikpOworCQlvdXRwdXREb2MoaW1wbCwgZG9jKTsKKwkJZG9jLT5yZWxlYXNlKCk7CisJCQorCisJfQorCisJY2F0Y2ggKFhTRUNFeGNlcHRpb24gJmUpCisJeworCQljZXJyIDw8ICJBbiBlcnJvciBvY2N1cmVkIGR1cmluZyBzaWduYXR1cmUgcHJvY2Vzc2luZ1xuICAgTWVzc2FnZTogIjsKKwkJY2hhciAqIGNlID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoZS5nZXRNc2coKSk7CisJCWNlcnIgPDwgY2UgPDwgZW5kbDsKKwkJZGVsZXRlIGNlOworCQlleGl0KDEpOworCQkKKwl9CQorCWNhdGNoIChYU0VDQ3J5cHRvRXhjZXB0aW9uICZlKQorCXsKKwkJY2VyciA8PCAiQSBjcnlwdG9ncmFwaGljIGVycm9yIG9jY3VyZWQgZHVyaW5nIHNpZ25hdHVyZSBwcm9jZXNzaW5nXG4gICBNZXNzYWdlOiAiCisJCTw8IGUuZ2V0TXNnKCkgPDwgZW5kbDsKKwkJZXhpdCgxKTsKKwl9CisKKworfQorCit2b2lkIHVuaXRUZXN0QmFzZTY0Tm9kZVNpZ25hdHVyZShET01JbXBsZW1lbnRhdGlvbiAqIGltcGwpIHsKKwkKKwkvLyBUaGlzIHRlc3RzIGEgbm9ybWFsIHNpZ25hdHVyZSB3aXRoIGEgcmVmZXJlbmNlIHRvIGEgQmFzZTY0IGVsZW1lbnQKKworCWNlcnIgPDwgIkNyZWF0aW5nIGEgYmFzZTY0IEVsZW1lbnQgcmVmZXJlbmNlIC4uLiAiOworCQorCXRyeSB7CisJCQorCQkvLyBDcmVhdGUgYSBkb2N1bWVudAorICAgIAorCQlET01Eb2N1bWVudCAqIGRvYyA9IGltcGwtPmNyZWF0ZURvY3VtZW50KCk7CisKKwkJLy8gQ3JlYXRlIHRoZSBzaWduYXR1cmUKKworCQlYU0VDUHJvdmlkZXIgcHJvdjsKKwkJRFNJR1NpZ25hdHVyZSAqc2lnOworCQlET01FbGVtZW50ICpzaWdOb2RlOworCQkKKwkJc2lnID0gcHJvdi5uZXdTaWduYXR1cmUoKTsKKwkJc2lnLT5zZXREU0lHTlNQcmVmaXgoTUFLRV9VTklDT0RFX1NUUklORygiZHMiKSk7CisJCXNpZy0+c2V0UHJldHR5UHJpbnQodHJ1ZSk7CisjaWYgZGVmaW5lZCAoWFNFQ19YRVJDRVNfSEFTX1NFVElEQVRUUklCVVRFKQorCQlzaWctPnNldElkQnlBdHRyaWJ1dGVOYW1lKGZhbHNlKTsJCS8vIERvIG5vdCBzZWFyY2ggYnkgbmFtZQorI2VuZGlmCisJCXNpZ05vZGUgPSBzaWctPmNyZWF0ZUJsYW5rU2lnbmF0dXJlKGRvYywgCisJCQlEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklDMTROX0NPTSwKKwkJCURTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUhNQUNfU0hBMSk7CisKKwkJZG9jLT5hcHBlbmRDaGlsZChzaWdOb2RlKTsKKworCQkvLyBBZGQgYW4gb2JqZWN0CisJCURTSUdPYmplY3QgKiBvYmogPSBzaWctPmFwcGVuZE9iamVjdCgpOworCQlvYmotPnNldElkKE1BS0VfVU5JQ09ERV9TVFJJTkcoIk9iamVjdElkIikpOworCisJCS8vIENyZWF0ZSBhIHRleHQgbm9kZQorCQlET01UZXh0ICogdHh0PSBkb2MtPmNyZWF0ZVRleHROb2RlKE1BS0VfVU5JQ09ERV9TVFJJTkcoIlFTQjBaWE4wSUhOMGNtbHVadz09IikpOworCQlvYmotPmFwcGVuZENoaWxkKHR4dCk7CisKKwkJLy8gQWRkIGEgUmVmZXJlbmNlCisJCURTSUdSZWZlcmVuY2UgKiByZWYgPSBzaWctPmNyZWF0ZVJlZmVyZW5jZShNQUtFX1VOSUNPREVfU1RSSU5HKCIjT2JqZWN0SWQiKSwKKwkJCURTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVNIQTEpOworCQkvLyBBZGQgYSBCYXNlNjQgdHJhbnNmb3JtCisJCXJlZi0+YXBwZW5kQmFzZTY0VHJhbnNmb3JtKCk7CisKKwkJLy8gR2V0IGEga2V5CisJCWNlcnIgPDwgInNpZ25pbmcgLi4uICI7CisKKwkJc2lnLT5zZXRTaWduaW5nS2V5KGNyZWF0ZUhNQUNLZXkoKHVuc2lnbmVkIGNoYXIgKikgInNlY3JldCIpKTsKKwkJc2lnLT5zaWduKCk7CisKKwkJY2VyciA8PCAidmFsaWRhdGluZyAuLi4gIjsKKwkJaWYgKCFzaWctPnZlcmlmeSgpKSB7CisJCQljZXJyIDw8ICJiYWQgdmVyaWZ5ISIgPDwgZW5kbDsKKwkJCWV4aXQoMSk7CisJCX0KKworCQljZXJyIDw8ICJPSyAuLi4gc2VyaWFsaXNlIGFuZCByZS12ZXJpZnkgLi4uICI7CisJCWlmICghcmVWYWxpZGF0ZVNpZyhpbXBsLCBkb2MsIGNyZWF0ZUhNQUNLZXkoKHVuc2lnbmVkIGNoYXIgKikgInNlY3JldCIpKSkgeworCisJCQljZXJyIDw8ICJiYWQgdmVyaWZ5ISIgPDwgZW5kbDsKKwkJCWV4aXQoMSk7CisKKwkJfQorCisJCWNlcnIgPDwgIk9LIC4uLiAiOworCisJCS8vIE5vdyBzZXQgdG8gYmFkCisJCXR4dC0+c2V0Tm9kZVZhbHVlKE1BS0VfVU5JQ09ERV9TVFJJTkcoIlFTQXlibVFnZEdWemRDQnpkSEpwYm1jPSIpKTsKKworCQljZXJyIDw8ICJ2ZXJpZnkgYmFkIGRhdGEgLi4uICI7CisJCWlmIChzaWctPnZlcmlmeSgpKSB7CisKKwkJCWNlcnIgPDwgImJhZCAtIHNob3VsZCBoYXZlIGZhaWxlZCEiIDw8IGVuZGw7CisJCQlleGl0KDEpOworCisJCX0KKworCQljZXJyIDw8ICJPSyAodmVyaWZ5IGZhbHNlKSAuLi4gc2VyaWFsaXNlIGFuZCByZS12ZXJpZnkgLi4uICI7CisJCWlmIChyZVZhbGlkYXRlU2lnKGltcGwsIGRvYywgY3JlYXRlSE1BQ0tleSgodW5zaWduZWQgY2hhciAqKSAic2VjcmV0IikpKSB7CisKKwkJCWNlcnIgPDwgImJhZCAtIHNob3VsZCBoYXZlIGZhaWxlZCIgPDwgZW5kbDsKKwkJCWV4aXQoMSk7CisKKwkJfQorCisJCWNlcnIgPDwgIk9LIiA8PCBlbmRsOworCQkvLyBSZXNldCB0byBPSworCQl0eHQtPnNldE5vZGVWYWx1ZShNQUtFX1VOSUNPREVfU1RSSU5HKCJRU0IwWlhOMElITjBjbWx1Wnc9PSIpKTsKKwkJb3V0cHV0RG9jKGltcGwsIGRvYyk7CisJCWRvYy0+cmVsZWFzZSgpOworCQkKKworCX0KKworCWNhdGNoIChYU0VDRXhjZXB0aW9uICZlKQorCXsKKwkJY2VyciA8PCAiQW4gZXJyb3Igb2NjdXJlZCBkdXJpbmcgc2lnbmF0dXJlIHByb2Nlc3NpbmdcbiAgIE1lc3NhZ2U6ICI7CisJCWNoYXIgKiBjZSA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKGUuZ2V0TXNnKCkpOworCQljZXJyIDw8IGNlIDw8IGVuZGw7CisJCWRlbGV0ZSBjZTsKKwkJZXhpdCgxKTsKKwkJCisJfQkKKwljYXRjaCAoWFNFQ0NyeXB0b0V4Y2VwdGlvbiAmZSkKKwl7CisJCWNlcnIgPDwgIkEgY3J5cHRvZ3JhcGhpYyBlcnJvciBvY2N1cmVkIGR1cmluZyBzaWduYXR1cmUgcHJvY2Vzc2luZ1xuICAgTWVzc2FnZTogIgorCQk8PCBlLmdldE1zZygpIDw8IGVuZGw7CisJCWV4aXQoMSk7CisJfQorCisKK30KKworCit2b2lkIHVuaXRUZXN0TG9uZ1NIQShET01JbXBsZW1lbnRhdGlvbiAqIGltcGwpIHsKKwkKKwkvLyBUaGlzIHRlc3RzIGFuIGVudmVsb3Bpbmcgc2lnbmF0dXJlIGFzIHRoZSByb290IG5vZGUsIHVzaW5nIFNIQTIyNC8yNTYvMzg0LzUxMgorCisJY2VyciA8PCAiQ3JlYXRpbmcgbG9uZyBTSEEgcmVmZXJlbmNlcyB1c2luZyBTSEE1MTIgSE1BQy4uLiAiOworCQorCXRyeSB7CisJCQorCQkvLyBDcmVhdGUgYSBkb2N1bWVudAorICAgIAorCQlET01Eb2N1bWVudCAqIGRvYyA9IGltcGwtPmNyZWF0ZURvY3VtZW50KCk7CisKKwkJLy8gQ3JlYXRlIHRoZSBzaWduYXR1cmUKKworCQlYU0VDUHJvdmlkZXIgcHJvdjsKKwkJRFNJR1NpZ25hdHVyZSAqc2lnOworCQlET01FbGVtZW50ICpzaWdOb2RlOworCQlEU0lHUmVmZXJlbmNlICpyZWZbNF07CisJCQorCQlzaWcgPSBwcm92Lm5ld1NpZ25hdHVyZSgpOworCQlzaWctPnNldERTSUdOU1ByZWZpeChNQUtFX1VOSUNPREVfU1RSSU5HKCJkcyIpKTsKKwkJc2lnLT5zZXRQcmV0dHlQcmludCh0cnVlKTsKKworCQlzaWdOb2RlID0gc2lnLT5jcmVhdGVCbGFua1NpZ25hdHVyZShkb2MsIAorCQkJRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJQzE0Tl9DT00sCisJCQlEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklITUFDX1NIQTUxMik7CisKKwkJZG9jLT5hcHBlbmRDaGlsZChzaWdOb2RlKTsKKworCQkvLyBBZGQgYW4gb2JqZWN0CisJCURTSUdPYmplY3QgKiBvYmogPSBzaWctPmFwcGVuZE9iamVjdCgpOworCQlvYmotPnNldElkKE1BS0VfVU5JQ09ERV9TVFJJTkcoIk9iamVjdElkIikpOworCisJCS8vIENyZWF0ZSBhIHRleHQgbm9kZQorCQlET01UZXh0ICogdHh0PSBkb2MtPmNyZWF0ZVRleHROb2RlKE1BS0VfVU5JQ09ERV9TVFJJTkcoIkEgdGVzdCBzdHJpbmciKSk7CisJCW9iai0+YXBwZW5kQ2hpbGQodHh0KTsKKworCQkvLyBBZGQgYSBSZWZlcmVuY2UKKwkJaWYgKFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5hbGdvcml0aG1TdXBwb3J0ZWQoWFNFQ0NyeXB0b0hhc2g6OkhBU0hfU0hBMjI0KSkgeworCQkJY2VyciA8PCAiMjI0IC4uLiAiOworCQkJcmVmWzBdID0gc2lnLT5jcmVhdGVSZWZlcmVuY2UoTUFLRV9VTklDT0RFX1NUUklORygiI09iamVjdElkIiksIAorCQkJCURTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVNIQTIyNCk7CisJCX0KKwkJY2VyciA8PCAiMjU2IC4uLiAiOworCQlyZWZbMV0gPSBzaWctPmNyZWF0ZVJlZmVyZW5jZShNQUtFX1VOSUNPREVfU1RSSU5HKCIjT2JqZWN0SWQiKSwgCisJCQlEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklTSEEyNTYpOworCQljZXJyIDw8ICIzODQgLi4uICI7CisJCXJlZlsyXSA9IHNpZy0+Y3JlYXRlUmVmZXJlbmNlKE1BS0VfVU5JQ09ERV9TVFJJTkcoIiNPYmplY3RJZCIpLAorCQkJRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJU0hBMzg0KTsKKwkJY2VyciA8PCAiNTEyIC4uLiAiOworCQlyZWZbM10gPSBzaWctPmNyZWF0ZVJlZmVyZW5jZShNQUtFX1VOSUNPREVfU1RSSU5HKCIjT2JqZWN0SWQiKSwKKwkJCURTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVNIQTUxMik7CisKKwkJLy8gR2V0IGEga2V5CisJCWNlcnIgPDwgInNpZ25pbmcgLi4uICI7CisKKwkJc2lnLT5zZXRTaWduaW5nS2V5KGNyZWF0ZUhNQUNLZXkoKHVuc2lnbmVkIGNoYXIgKikgInNlY3JldCIpKTsKKwkJc2lnLT5zaWduKCk7CisKKwkJY2VyciA8PCAidmFsaWRhdGluZyAuLi4gIjsKKwkJaWYgKCFzaWctPnZlcmlmeSgpKSB7CisJCQljZXJyIDw8ICJiYWQgdmVyaWZ5ISIgPDwgZW5kbDsKKwkJCWV4aXQoMSk7CisJCX0KKworCQljZXJyIDw8ICJPSyAuLi4gc2VyaWFsaXNlIGFuZCByZS12ZXJpZnkgLi4uICI7CisJCWlmICghcmVWYWxpZGF0ZVNpZyhpbXBsLCBkb2MsIGNyZWF0ZUhNQUNLZXkoKHVuc2lnbmVkIGNoYXIgKikgInNlY3JldCIpKSkgeworCisJCQljZXJyIDw8ICJiYWQgdmVyaWZ5ISIgPDwgZW5kbDsKKwkJCWV4aXQoMSk7CisKKwkJfQorCisJCWNlcnIgPDwgIk9LIC4uLiAiOworCisJCS8vIE5vdyBzZXQgdG8gYmFkCisJCXR4dC0+c2V0Tm9kZVZhbHVlKE1BS0VfVU5JQ09ERV9TVFJJTkcoIkEgYmFkIHN0cmluZyIpKTsKKworCQljZXJyIDw8ICJ2ZXJpZnkgYmFkIGRhdGEgLi4uICI7CisJCWlmIChzaWctPnZlcmlmeSgpKSB7CisKKwkJCWNlcnIgPDwgImJhZCAtIHNob3VsZCBoYXZlIGZhaWxlZCEiIDw8IGVuZGw7CisJCQlleGl0KDEpOworCisJCX0KKworCQljZXJyIDw8ICJPSyAodmVyaWZ5IGZhbHNlKSAuLi4gc2VyaWFsaXNlIGFuZCByZS12ZXJpZnkgLi4uICI7CisJCWlmIChyZVZhbGlkYXRlU2lnKGltcGwsIGRvYywgY3JlYXRlSE1BQ0tleSgodW5zaWduZWQgY2hhciAqKSAic2VjcmV0IikpKSB7CisKKwkJCWNlcnIgPDwgImJhZCAtIHNob3VsZCBoYXZlIGZhaWxlZCIgPDwgZW5kbDsKKwkJCWV4aXQoMSk7CisKKwkJfQorCisJCWNlcnIgPDwgIk9LIiA8PCBlbmRsOworCQkvLyBSZXNldCB0byBPSworCQl0eHQtPnNldE5vZGVWYWx1ZShNQUtFX1VOSUNPREVfU1RSSU5HKCJBIHRlc3Qgc3RyaW5nIikpOworCisJCS8vIE5vdyBjaGVjayB0aGUgcmVmZXJlbmNlcworCQljZXJyIDw8ICIgIENoZWNraW5nIHJlZmVyZW5jZSB2YWx1ZXMgYWdhaW5zdCBrbm93biBnb29kIiA8PCBlbmRsOworCisJCXVuc2lnbmVkIGNoYXIgYnVmWzEyOF07CisJCWludCBsZW47CisKKwkJY29uc3QgY2hhciAqIHNoYXN0cmluZ3NbXSA9IHsKKwkJCSJTSEEyMjQiLAorCQkJIlNIQTI1NiIsCisJCQkiU0hBMzg0IiwKKwkJCSJTSEE1MTIiCisJCX07CisKKwkJLyoKKwkJICogVmFsaWRhdGUgdGhlIHJlZmVyZW5jZSBoYXNoIHZhbHVlcyBmcm9tIGtub3duIGdvb2QKKwkJICovCisKKwkJaW50IGk7CisJCWZvciAoaSA9IDA7IGkgPCA0OyArK2kpIHsKKworCQkJY2VyciA8PCAiICAgIENhbGN1bGF0aW5nIGhhc2ggZm9yIHJlZmVyZW5jZSAiIDw8IHNoYXN0cmluZ3NbaV0gPDwgIiAuLi4gIjsKKworCQkJbGVuID0gKGludCkgcmVmW2ldLT5jYWxjdWxhdGVIYXNoKGJ1ZiwgMTI4KTsKKworCQkJY2VyciA8PCAiIERvbmVcbiAgICAgIENoZWNraW5nIC0+ICI7CisKKwkJCWlmIChsZW4gPCAyMCkgeworCQkJCWNlcnIgPDwgIkJhZCAoTGVuZ3RoID0gIiA8PCBsZW4gPDwgIikiIDw8IGVuZGw7CisJCQkJZXhpdCAoMSk7CisJCQl9CisKKwkJCWZvciAoaW50IGogPSAwOyBqIDwgbGVuOyArK2opIHsKKworCQkJCWlmIChidWZbal0gIT0gbG9uZ1NoYVJlZnNbaV1bal0pIHsKKwkJCQkJY2VyciA8PCAiQmFkIGF0IGxvY2F0aW9uICIgPDwgaiA8PCBlbmRsOworCQkJCQlmb3IgKGogPSAwOyBqIDwgbGVuOyArK2opIHsKKwkJCQkJCWZwcmludGYoc3RkZXJyLCAiMHglMDJ4LCAiLCBidWZbal0pOworCQkJCQl9CisJCQkJCWV4aXQgKDEpOworCQkJCX0KKwkJCQorCQkJfQorCQkJY2VyciA8PCAiR29vZC5cbiI7CisKKwkJfQorCisJCW91dHB1dERvYyhpbXBsLCBkb2MpOworCQlkb2MtPnJlbGVhc2UoKTsKKwkJCisKKwl9CisKKwljYXRjaCAoWFNFQ0V4Y2VwdGlvbiAmZSkKKwl7CisJCWNlcnIgPDwgIkFuIGVycm9yIG9jY3VyZWQgZHVyaW5nIHNpZ25hdHVyZSBwcm9jZXNzaW5nXG4gICBNZXNzYWdlOiAiOworCQljaGFyICogY2UgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShlLmdldE1zZygpKTsKKwkJY2VyciA8PCBjZSA8PCBlbmRsOworCQlkZWxldGUgY2U7CisJCWV4aXQoMSk7CisJCQorCX0JCisJY2F0Y2ggKFhTRUNDcnlwdG9FeGNlcHRpb24gJmUpCisJeworCQljZXJyIDw8ICJBIGNyeXB0b2dyYXBoaWMgZXJyb3Igb2NjdXJlZCBkdXJpbmcgc2lnbmF0dXJlIHByb2Nlc3NpbmdcbiAgIE1lc3NhZ2U6ICIKKwkJPDwgZS5nZXRNc2coKSA8PCBlbmRsOworCQlleGl0KDEpOworCX0KKworfQorCit2b2lkIHVuaXRUZXN0UlNBU2lnKERPTUltcGxlbWVudGF0aW9uICogaW1wbCwgWFNFQ0NyeXB0b0tleVJTQSAqIGssIGNvbnN0IFhNTENoICogQWxnVVJJKSB7CisKKwkvLyBHaXZlbiBhIHNwZWNpZmljIFJTQSBrZXkgYW5kIHBhcnRpY3VsYXIgYWxnb3JpdGhtIFVSSSwgc2lnbiBhbmQgdmFsaWRhdGUgYSBkb2N1bWVudAorCisJdHJ5IHsKKwkJCisJCS8vIENyZWF0ZSBhIGRvY3VtZW50CisgICAgCisJCURPTURvY3VtZW50ICogZG9jID0gaW1wbC0+Y3JlYXRlRG9jdW1lbnQoKTsKKworCQkvLyBDcmVhdGUgdGhlIHNpZ25hdHVyZQorCisJCVhTRUNQcm92aWRlciBwcm92OworCQlEU0lHU2lnbmF0dXJlICpzaWc7CisJCURPTUVsZW1lbnQgKnNpZ05vZGU7CisJCURTSUdSZWZlcmVuY2UgKnJlZls0XTsKKwkJCisJCXNpZyA9IHByb3YubmV3U2lnbmF0dXJlKCk7CisJCXNpZy0+c2V0RFNJR05TUHJlZml4KE1BS0VfVU5JQ09ERV9TVFJJTkcoImRzIikpOworCQlzaWctPnNldFByZXR0eVByaW50KHRydWUpOworCisJCXNpZ05vZGUgPSBzaWctPmNyZWF0ZUJsYW5rU2lnbmF0dXJlKGRvYywgCisJCQlEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklDMTROX0NPTSwKKwkJCUFsZ1VSSSk7CisKKwkJZG9jLT5hcHBlbmRDaGlsZChzaWdOb2RlKTsKKworCQkvLyBBZGQgYW4gb2JqZWN0CisJCURTSUdPYmplY3QgKiBvYmogPSBzaWctPmFwcGVuZE9iamVjdCgpOworCQlvYmotPnNldElkKE1BS0VfVU5JQ09ERV9TVFJJTkcoIk9iamVjdElkIikpOworCisJCS8vIENyZWF0ZSBhIHRleHQgbm9kZQorCQlET01UZXh0ICogdHh0PSBkb2MtPmNyZWF0ZVRleHROb2RlKE1BS0VfVU5JQ09ERV9TVFJJTkcoIkEgdGVzdCBzdHJpbmciKSk7CisJCW9iai0+YXBwZW5kQ2hpbGQodHh0KTsKKworCQkvLyBBZGQgYSBSZWZlcmVuY2UKKwkJcmVmWzBdID0gc2lnLT5jcmVhdGVSZWZlcmVuY2UoTUFLRV9VTklDT0RFX1NUUklORygiI09iamVjdElkIiksIAorCQkJRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJU0hBMSk7CisKKwkJLy8gR2V0IGEga2V5CisJCWNlcnIgPDwgInNpZ25pbmcgLi4uICI7CisKKwkJc2lnLT5zZXRTaWduaW5nS2V5KGstPmNsb25lKCkpOworCQlzaWctPnNpZ24oKTsKKworCQljZXJyIDw8ICJPSyAuLi4gIjsKKworCQljZXJyIDw8ICJ2YWxpZGF0aW5nIC4uLiAiOworCQlpZiAoIXNpZy0+dmVyaWZ5KCkpIHsKKwkJCWNlcnIgPDwgImJhZCB2ZXJpZnkhIiA8PCBlbmRsOworCQkJZXhpdCgxKTsKKwkJfQorCisJCWNlcnIgPDwgIk9LIC4uLiBzZXJpYWxpc2UgYW5kIHJlLXZlcmlmeSAuLi4gIjsKKwkJaWYgKCFyZVZhbGlkYXRlU2lnKGltcGwsIGRvYywgaykpIHsKKworCQkJY2VyciA8PCAiYmFkIHZlcmlmeSEiIDw8IGVuZGw7CisJCQlleGl0KDEpOworCisJCX0KKworCQljZXJyIDw8ICJPSyI7CisKKyNpZiAwCisjaWYgZGVmaW5lZCBIQVZFX09QRU5TU0wKKworCQlpZiAoZ191c2VXaW5DQVBJIHx8IGdfdXNlTlNTKSB7CisKKwkJCWNlcnIgPDwgIiAuLi4gdmFsaWRhdGUgYWdhaW5zdCBPcGVuU1NMIiA8PCBlbmRsOworCisJCQlCSU8gKiBiaW9NZW0gPSBCSU9fbmV3KEJJT19zX21lbSgpKTsKKwkJCUJJT19wdXRzKGJpb01lbSwgc190c3RSU0FQcml2YXRlS2V5KTsKKwkJCUVWUF9QS0VZICogcGsgPSBQRU1fcmVhZF9iaW9fUHJpdmF0ZUtleShiaW9NZW0sIE5VTEwsIE5VTEwsIE5VTEwpOworCisJCQlPcGVuU1NMQ3J5cHRvS2V5UlNBICogcnNhS2V5ID0gbmV3IE9wZW5TU0xDcnlwdG9LZXlSU0EocGspOworCisJCQlzaWctPnNldFNpZ25pbmdLZXkocnNhS2V5KTsKKwkJCWlmICghc2lnLT52ZXJpZnkoKSkgeworCQkJCWNlcnIgPDwgImJhZCB2ZXJpZnkhIiA8PCBlbmRsOworCQkJCWV4aXQgKDEpOworCQkJfQorCisJCQljZXJyIDw8ICJPSyI7CisKKwkJCUJJT19mcmVlKGJpb01lbSk7CisJCQlFVlBfUEtFWV9mcmVlKHBrKTsKKwkJfQorI2VuZGlmCisjZW5kaWYKKworCQljZXJyIDw8ICJcbiI7CQorCisJCW91dHB1dERvYyhpbXBsLCBkb2MpOworCQlkb2MtPnJlbGVhc2UoKTsKKwkJCisKKwl9CisKKwljYXRjaCAoWFNFQ0V4Y2VwdGlvbiAmZSkKKwl7CisJCWNlcnIgPDwgIkFuIGVycm9yIG9jY3VyZWQgZHVyaW5nIHNpZ25hdHVyZSBwcm9jZXNzaW5nXG4gICBNZXNzYWdlOiAiOworCQljaGFyICogY2UgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShlLmdldE1zZygpKTsKKwkJY2VyciA8PCBjZSA8PCBlbmRsOworCQlkZWxldGUgY2U7CisJCWV4aXQoMSk7CisJCQorCX0JCisJY2F0Y2ggKFhTRUNDcnlwdG9FeGNlcHRpb24gJmUpCisJeworCQljZXJyIDw8ICJBIGNyeXB0b2dyYXBoaWMgZXJyb3Igb2NjdXJlZCBkdXJpbmcgc2lnbmF0dXJlIHByb2Nlc3NpbmdcbiAgIE1lc3NhZ2U6ICIKKwkJPDwgZS5nZXRNc2coKSA8PCBlbmRsOworCQlleGl0KDEpOworCX0KKworfQorCisKK3ZvaWQgdW5pdFRlc3RSU0EoRE9NSW1wbGVtZW50YXRpb24gKiBpbXBsKSB7CisKKwkvKiBGaXJzdCB3ZSBsb2FkIHNvbWUga2V5cyB0byB1c2UhICovCisKKwlYU0VDQ3J5cHRvS2V5UlNBICogcnNhS2V5OworCisjaWYgZGVmaW5lZCAoSEFWRV9PUEVOU1NMKQorCWlmICghZ191c2VXaW5DQVBJICYmICFnX3VzZU5TUykgeworCQkvLyBMb2FkIHRoZSBrZXkKKwkJQklPICogYmlvTWVtID0gQklPX25ldyhCSU9fc19tZW0oKSk7CisJCUJJT19wdXRzKGJpb01lbSwgc190c3RSU0FQcml2YXRlS2V5KTsKKwkJRVZQX1BLRVkgKiBwayA9IFBFTV9yZWFkX2Jpb19Qcml2YXRlS2V5KGJpb01lbSwgTlVMTCwgTlVMTCwgTlVMTCk7CisKKwkJcnNhS2V5ID0gbmV3IE9wZW5TU0xDcnlwdG9LZXlSU0EocGspOworCisJCUJJT19mcmVlKGJpb01lbSk7CisJCUVWUF9QS0VZX2ZyZWUocGspOworCX0KKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoSEFWRV9XSU5DQVBJKQorCWlmIChnX3VzZVdpbkNBUEkpIHsKKworCQkvLyBVc2UgdGhlIGludGVybmFsIGtleQorCQlXaW5DQVBJQ3J5cHRvUHJvdmlkZXIgKmNwID0gKFdpbkNBUElDcnlwdG9Qcm92aWRlciAqKSAoWFNFQ1BsYXRmb3JtVXRpbHM6OmdfY3J5cHRvUHJvdmlkZXIpOworCQlIQ1JZUFRQUk9WIHAgPSBjcC0+Z2V0QXBhY2hlS2V5U3RvcmUoKTsKKwkJCQorCQlyc2FLZXkgPSBuZXcgV2luQ0FQSUNyeXB0b0tleVJTQShwLCBBVF9LRVlFWENIQU5HRSwgdHJ1ZSk7CisJfQorCisjZW5kaWYKKworI2lmIGRlZmluZWQgKEhBVkVfTlNTKQorCWlmIChnX3VzZU5TUykgeworCQkvLyBVc2UgdGhlIGludGVybmFsIGtleQorCQlOU1NDcnlwdG9Qcm92aWRlciAqY3AgPSAoTlNTQ3J5cHRvUHJvdmlkZXIgKikgKFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyKTsKKwkJCisJCS8vIEhlYXZpbHkgYmFzZWQgb24gTW96aWxsYSBleGFtcGxlIGNvZGUKKwkJU0VDS0VZUHJpdmF0ZUtleSAqcHJ2S2V5ID0gMDsKKwkJU0VDS0VZUHVibGljS2V5ICpwdWJLZXkgPSAwOworCQlQSzExU2xvdEluZm8gKnNsb3QgPSAwOworCQlQSzExUlNBR2VuUGFyYW1zIHJzYVBhcmFtczsKKworCQkvLyBVc2UgYSBib2cgc3RhbmRhcmQga2V5IHNpemUKKwkJcnNhUGFyYW1zLmtleVNpemVJbkJpdHMgPSAxMDI0OworCQlyc2FQYXJhbXMucGUgPSA2NTUzNzsKKwkJCisJCS8vIFdlIG5lZWQgc29tZXdoZXJlIHRvIHRlbXBvcmFyaWx5IHN0b3JlIGEgZ2VuZXJhdGVkIGtleQorCQlzbG90ID0gUEsxMV9HZXRJbnRlcm5hbEtleVNsb3QoKTsKKwkJaWYgKCFzbG90KSB7IAorCQkJY2VyciA8PCAiRXJyb3IgZ2VuZXJhdGluZyBrZXkgLSBjYW4ndCBnZXQgTlNTIHNsb3RcbiI7CisJCQlleGl0ICgxKTsKKwkJfQorCQkKKwkJLy8gRG8gdGhlIGdlbmVyYXRlCisJCXBydktleSA9IFBLMTFfR2VuZXJhdGVLZXlQYWlyKHNsb3QsIENLTV9SU0FfUEtDU19LRVlfUEFJUl9HRU4sICZyc2FQYXJhbXMsCisJCQkmcHViS2V5LCBQUl9GQUxTRSwgUFJfVFJVRSwgMCk7CisJCQorCQlpZiAoIXBydktleSkgeworCQkJaWYgKHNsb3QpCisJCQkJUEsxMV9GcmVlU2xvdChzbG90KTsKKwkJCWNlcnIgPDwgIkVycm9yIGdlbmVyYXRpbmcga2V5IHdpdGhpbiBOU1NcbiI7CisJCQlleGl0ICgxKTsKKwkJfQorCQkKKwkJLy8gTm93IHVzZSB0aGUga2V5IQorCQlyc2FLZXkgPSBuZXcgTlNTQ3J5cHRvS2V5UlNBKHB1YktleSwgcHJ2S2V5KTsKKworCX0KKyNlbmRpZgorCisJY2VyciA8PCAiVW5pdCB0ZXN0aW5nIFJTQS1TSEExIHNpZ25hdHVyZSAuLi4gIjsKKwl1bml0VGVzdFJTQVNpZyhpbXBsLCAoWFNFQ0NyeXB0b0tleVJTQSAqKSByc2FLZXktPmNsb25lKCksIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVJTQV9TSEExKTsKKworCWlmIChYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+YWxnb3JpdGhtU3VwcG9ydGVkKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTUxMikpIHsKKwkJY2VyciA8PCAiVW5pdCB0ZXN0aW5nIFJTQS1TSEEyMjQgc2lnbmF0dXJlIC4uLiAiOworCQl1bml0VGVzdFJTQVNpZyhpbXBsLCAoWFNFQ0NyeXB0b0tleVJTQSAqKSByc2FLZXktPmNsb25lKCksIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVJTQV9TSEEyMjQpOworCQljZXJyIDw8ICJVbml0IHRlc3RpbmcgUlNBLVNIQTI1NiBzaWduYXR1cmUgLi4uICI7CisJCXVuaXRUZXN0UlNBU2lnKGltcGwsIChYU0VDQ3J5cHRvS2V5UlNBICopIHJzYUtleS0+Y2xvbmUoKSwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJUlNBX1NIQTI1Nik7CisJCWNlcnIgPDwgIlVuaXQgdGVzdGluZyBSU0EtU0hBMzg0IHNpZ25hdHVyZSAuLi4gIjsKKwkJdW5pdFRlc3RSU0FTaWcoaW1wbCwgKFhTRUNDcnlwdG9LZXlSU0EgKikgcnNhS2V5LT5jbG9uZSgpLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklSU0FfU0hBMzg0KTsKKwkJY2VyciA8PCAiVW5pdCB0ZXN0aW5nIFJTQS1TSEE1MTIgc2lnbmF0dXJlIC4uLiAiOworCQl1bml0VGVzdFJTQVNpZyhpbXBsLCAoWFNFQ0NyeXB0b0tleVJTQSAqKSByc2FLZXktPmNsb25lKCksIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVJTQV9TSEE1MTIpOworCX0KKwllbHNlCisJCWNlcnIgPDwgIlNraXBwaW5nIG5vbiBTSEEgMjI0LzI1Ni8zODQvNTEyIFJTQSBzaWduYXR1cmVzIiA8PCBlbmRsOworCisJY2VyciA8PCAiVW5pdCB0ZXN0aW5nIFJTQS1NRDUgc2lnbmF0dXJlIC4uLiAiOworCXVuaXRUZXN0UlNBU2lnKGltcGwsIHJzYUtleSwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJUlNBX01ENSk7CisJCisJCQorfQordm9pZCB1bml0VGVzdFNpZ25hdHVyZShET01JbXBsZW1lbnRhdGlvbiAqIGltcGwpIHsKKworCS8vIFRlc3QgYW4gZW52ZWxvcGluZyBzaWduYXR1cmUKKwl1bml0VGVzdEVudmVsb3BpbmdTaWduYXR1cmUoaW1wbCk7CisjaWZuZGVmIFhTRUNfTk9fWEFMQU4KKwl1bml0VGVzdEJhc2U2NE5vZGVTaWduYXR1cmUoaW1wbCk7CisjZWxzZQorCWNlcnIgPDwgIlNraXBwaW5nIGJhc2U2NCBub2RlIHRlc3QgKFJlcXVpcmVzIFhQYXRoKSIgPDwgZW5kbDsKKyNlbmRpZgorCisJLy8gVGVzdCAibG9uZyIgc2hhIGhhc2hlcworCWlmIChYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+YWxnb3JpdGhtU3VwcG9ydGVkKFhTRUNDcnlwdG9IYXNoOjpIQVNIX1NIQTUxMikpCisJCXVuaXRUZXN0TG9uZ1NIQShpbXBsKTsKKwllbHNlCisJCWNlcnIgPDwgIlNraXBwaW5nIGxvbmcgU0hBIGhhc2ggdGVzdHMgYXMgU0hBNTEyIG5vdCBzdXBwb3J0ZWQgYnkgY3J5cHRvIHByb3ZpZGVyIiA8PCBlbmRsOworCisJLy8gVGVzdCBSU0EgU2lnbmF0dXJlcworCXVuaXRUZXN0UlNBKGltcGwpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEJhc2ljIHRlc3RzIG9mIHNpZ25hdHVyZSBmdW5jdGlvbgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCB0ZXN0U2lnbmF0dXJlKERPTUltcGxlbWVudGF0aW9uICppbXBsKSB7CisKKwljZXJyIDw8ICJDcmVhdGluZyBhIGtub3duIGRvYyBhbmQgc2lnbmluZyAoSE1BQy1TSEExKSIgPDwgZW5kbDsKKwkKKwkvLyBDcmVhdGUgYSBkb2N1bWVudAorICAgIAorCURPTURvY3VtZW50ICogZG9jID0gY3JlYXRlVGVzdERvYyhpbXBsKTsKKworCS8vIENoZWNrIHNpZ25hdHVyZSBmdW5jdGlvbnMKKworCVhTRUNQcm92aWRlciBwcm92OworCURTSUdTaWduYXR1cmUgKnNpZzsKKwlEU0lHUmVmZXJlbmNlICpyZWZbMTBdOworCURPTUVsZW1lbnQgKnNpZ05vZGU7CisJaW50IHJlZkNvdW50OworCisJdHJ5IHsKKwkJCisJCS8qCisJCSAqIE5vdyB3ZSBoYXZlIGEgZG9jdW1lbnQsIGNyZWF0ZSBhIHNpZ25hdHVyZSBmb3IgaXQuCisJCSAqLworCQkKKwkJc2lnID0gcHJvdi5uZXdTaWduYXR1cmUoKTsKKwkJc2lnLT5zZXREU0lHTlNQcmVmaXgoTUFLRV9VTklDT0RFX1NUUklORygiZHMiKSk7CisJCXNpZy0+c2V0UHJldHR5UHJpbnQodHJ1ZSk7CisKKwkJc2lnTm9kZSA9IHNpZy0+Y3JlYXRlQmxhbmtTaWduYXR1cmUoZG9jLCAKKwkJCURTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUMxNE5fQ09NLAorCQkJRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJSE1BQ19TSEExKTsKKwkJRE9NRWxlbWVudCAqIHJvb3RFbGVtID0gZG9jLT5nZXREb2N1bWVudEVsZW1lbnQoKTsKKwkJRE9NTm9kZSAqIHByb2RFbGVtID0gcm9vdEVsZW0tPmdldEZpcnN0Q2hpbGQoKTsKKworCQlyb290RWxlbS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZShEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJOTCkpOworCQlyb290RWxlbS0+aW5zZXJ0QmVmb3JlKGRvYy0+Y3JlYXRlQ29tbWVudChNQUtFX1VOSUNPREVfU1RSSU5HKCIgYSBjb21tZW50ICIpKSwgcHJvZEVsZW0pOworCQlyb290RWxlbS0+YXBwZW5kQ2hpbGQoc2lnTm9kZSk7CisJCXJvb3RFbGVtLT5pbnNlcnRCZWZvcmUoZG9jLT5jcmVhdGVUZXh0Tm9kZShEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJOTCksIHByb2RFbGVtKTsKKworCQkvKgorCQkgKiBBZGQgc29tZSB0ZXN0IHJlZmVyZW5jZXMKKwkJICovCisKKwkJcmVmWzBdID0gc2lnLT5jcmVhdGVSZWZlcmVuY2UoTUFLRV9VTklDT0RFX1NUUklORygiIiksCisJCQlEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklTSEExKTsKKwkJcmVmWzBdLT5hcHBlbmRFbnZlbG9wZWRTaWduYXR1cmVUcmFuc2Zvcm0oKTsKKworCQlyZWZbMV0gPSBzaWctPmNyZWF0ZVJlZmVyZW5jZShNQUtFX1VOSUNPREVfU1RSSU5HKCIjeHBvaW50ZXIoLykiKSwKKwkJCURTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVNIQTEpOworCQlyZWZbMV0tPmFwcGVuZEVudmVsb3BlZFNpZ25hdHVyZVRyYW5zZm9ybSgpOworCQlyZWZbMV0tPmFwcGVuZENhbm9uaWNhbGl6YXRpb25UcmFuc2Zvcm0oRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJQzE0Tl9OT0MpOworCisJCXJlZlsyXSA9IHNpZy0+Y3JlYXRlUmVmZXJlbmNlKE1BS0VfVU5JQ09ERV9TVFJJTkcoIiN4cG9pbnRlcigvKSIpLAorCQkJRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJU0hBMSk7CisJCXJlZlsyXS0+YXBwZW5kRW52ZWxvcGVkU2lnbmF0dXJlVHJhbnNmb3JtKCk7CisJCXJlZlsyXS0+YXBwZW5kQ2Fub25pY2FsaXphdGlvblRyYW5zZm9ybShEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklDMTROX0NPTSk7CisKKwkJcmVmWzNdID0gc2lnLT5jcmVhdGVSZWZlcmVuY2UoTUFLRV9VTklDT0RFX1NUUklORygiI3hwb2ludGVyKC8pIiksCisJCQlEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklTSEExKTsKKwkJcmVmWzNdLT5hcHBlbmRFbnZlbG9wZWRTaWduYXR1cmVUcmFuc2Zvcm0oKTsKKwkJcmVmWzNdLT5hcHBlbmRDYW5vbmljYWxpemF0aW9uVHJhbnNmb3JtKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUVYQ19DMTROX05PQyk7CisKKwkJcmVmWzRdID0gc2lnLT5jcmVhdGVSZWZlcmVuY2UoTUFLRV9VTklDT0RFX1NUUklORygiI3hwb2ludGVyKC8pIiksCisJCQlEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklTSEExKTsKKwkJcmVmWzRdLT5hcHBlbmRFbnZlbG9wZWRTaWduYXR1cmVUcmFuc2Zvcm0oKTsKKwkJcmVmWzRdLT5hcHBlbmRDYW5vbmljYWxpemF0aW9uVHJhbnNmb3JtKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUVYQ19DMTROX0NPTSk7CisKKwkJcmVmWzVdID0gc2lnLT5jcmVhdGVSZWZlcmVuY2UoTUFLRV9VTklDT0RFX1NUUklORygiI3hwb2ludGVyKC8pIiksCisJCQlEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklTSEExKTsKKwkJcmVmWzVdLT5hcHBlbmRFbnZlbG9wZWRTaWduYXR1cmVUcmFuc2Zvcm0oKTsKKwkJRFNJR1RyYW5zZm9ybUMxNG4gKiBjZSA9IHJlZls1XS0+YXBwZW5kQ2Fub25pY2FsaXphdGlvblRyYW5zZm9ybSgKKwkJCURTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUVYQ19DMTROX0NPTSk7CisJCWNlLT5hZGRJbmNsdXNpdmVOYW1lc3BhY2UoImZvbyIpOworCisJCXNpZy0+c2V0RUNOU1ByZWZpeChNQUtFX1VOSUNPREVfU1RSSU5HKCJlYyIpKTsKKwkJcmVmWzZdID0gc2lnLT5jcmVhdGVSZWZlcmVuY2UoTUFLRV9VTklDT0RFX1NUUklORygiI3hwb2ludGVyKC8pIiksCisJCQlEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklTSEExKTsKKwkJcmVmWzZdLT5hcHBlbmRFbnZlbG9wZWRTaWduYXR1cmVUcmFuc2Zvcm0oKTsKKwkJY2UgPSByZWZbNl0tPmFwcGVuZENhbm9uaWNhbGl6YXRpb25UcmFuc2Zvcm0oCisJCQlEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklFWENfQzE0Tl9DT00pOworCQljZS0+YWRkSW5jbHVzaXZlTmFtZXNwYWNlKCJmb28iKTsKKworI2lmZGVmIFhTRUNfTk9fWEFMQU4KKworCQljZXJyIDw8ICJXQVJOSU5HIDogTm8gdGVzdGluZyBvZiBYUGF0aCBiZWluZyBwZXJmb3JtZWQgYXMgWGFsYW4gbm90IHByZXNlbnQiIDw8IGVuZGw7CisJCXJlZkNvdW50ID0gNzsKKworI2Vsc2UKKwkJLyoKKwkJICogQ3JlYXRlIHNvbWUgWFBhdGgvWFBhdGhGaWx0ZXIgcmVmZXJlbmNlcworCQkgKi8KKworCisJCXJlZls3XSA9IHNpZy0+Y3JlYXRlUmVmZXJlbmNlKE1BS0VfVU5JQ09ERV9TVFJJTkcoIiIpLAorCQkJRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJU0hBMSk7CisJCXNpZy0+c2V0WFBGTlNQcmVmaXgoTUFLRV9VTklDT0RFX1NUUklORygieHBmIikpOworCQlEU0lHVHJhbnNmb3JtWFBhdGhGaWx0ZXIgKiB4cGYgPSByZWZbN10tPmFwcGVuZFhQYXRoRmlsdGVyVHJhbnNmb3JtKCk7CisJCXhwZi0+YXBwZW5kRmlsdGVyKEZJTFRFUl9JTlRFUlNFQ1QsIE1BS0VfVU5JQ09ERV9TVFJJTkcoIi8vQURvYy9jYXRlZ29yeSIpKTsKKworCQlyZWZbOF0gPSBzaWctPmNyZWF0ZVJlZmVyZW5jZShNQUtFX1VOSUNPREVfU1RSSU5HKCIiKSwKKwkJCURTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVNIQTEpOworCQkvKgkJcmVmWzVdLT5hcHBlbmRYUGF0aFRyYW5zZm9ybSgiYW5jZXN0b3Itb3Itc2VsZjo6ZHNpZzpTaWduYXR1cmUiLCAKKwkJCQkieG1sbnM6ZHNpZz1odHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIik7ICovCisKKwkJRFNJR1RyYW5zZm9ybVhQYXRoICogeCA9IHJlZls4XS0+YXBwZW5kWFBhdGhUcmFuc2Zvcm0oImNvdW50KGFuY2VzdG9yLW9yLXNlbGY6OmRzaWc6U2lnbmF0dXJlIHwgXAoraGVyZSgpL2FuY2VzdG9yOjpkc2lnOlNpZ25hdHVyZVsxXSkgPiBcCitjb3VudChhbmNlc3Rvci1vci1zZWxmOjpkc2lnOlNpZ25hdHVyZSkiKTsKKwkJeC0+c2V0TmFtZXNwYWNlKCJkc2lnIiwgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiKTsKKworCQlyZWZDb3VudCA9IDk7CisKKyNlbmRpZgorCQorCQkvKgorCQkgKiBTaWduIHRoZSBkb2N1bWVudCwgdXNpbmcgYW4gSE1BQyBhbGdvcml0aG0gYW5kIHRoZSBrZXkgInNlY3JldCIKKwkJICovCisKKworCQlzaWctPmFwcGVuZEtleU5hbWUoTUFLRV9VTklDT0RFX1NUUklORygiVGhlIHNlY3JldCBrZXkgaXMgXCJzZWNyZXRcIiIpKTsKKworCQkvLyBBcHBlbmQgYSB0ZXN0IEROYW1lcworCisJCURTSUdLZXlJbmZvWDUwOSAqIHg1MDkgPSBzaWctPmFwcGVuZFg1MDlEYXRhKCk7CisJCXg1MDktPnNldFg1MDlTdWJqZWN0TmFtZShzX3RzdEROYW1lKTsKKworCQkvLyBBcHBlbmQgYSB0ZXN0IFBHUERhdGEgZWxlbWVudAorCQlzaWctPmFwcGVuZFBHUERhdGEoc190c3RQR1BLZXlJRCwgc190c3RQR1BLZXlQYWNrZXQpOworCisJCS8vIEFwcGVuZCBhbiBTUEtJRGF0YSBlbGVtZW50CisJCURTSUdLZXlJbmZvU1BLSURhdGEgKiBzcGtpID0gc2lnLT5hcHBlbmRTUEtJRGF0YShzX3RzdFNleHAxKTsKKwkJc3BraS0+YXBwZW5kU2V4cChzX3RzdFNleHAyKTsKKworCQkvLyBBcHBlbmQgYSBNZ210RGF0YSBlbGVtZW50CisJCXNpZy0+YXBwZW5kTWdtdERhdGEoc190c3RNZ210RGF0YSk7CisKKwkJc2lnLT5zZXRTaWduaW5nS2V5KGNyZWF0ZUhNQUNLZXkoKHVuc2lnbmVkIGNoYXIgKikgInNlY3JldCIpKTsKKwkJc2lnLT5zaWduKCk7CisKKwkJLy8gT3V0cHV0IHRoZSBkb2N1bWVudCBwb3N0IHNpZ25hdHVyZSBpZiBuZWNlc3NhcnkKKwkJb3V0cHV0RG9jKGltcGwsIGRvYyk7CisKKwkJY2VyciA8PCBlbmRsIDw8ICJEb2Mgc2lnbmVkIE9LIC0gQ2hlY2tpbmcgdmFsdWVzIGFnYWluc3QgS25vd24gR29vZCIgPDwgZW5kbDsKKworCQl1bnNpZ25lZCBjaGFyIGJ1ZlsxMjhdOworCQl4c2Vjc2l6ZV90IGxlbjsKKworCQkvKgorCQkgKiBWYWxpZGF0ZSB0aGUgcmVmZXJlbmNlIGhhc2ggdmFsdWVzIGZyb20ga25vd24gZ29vZAorCQkgKi8KKworCQlpbnQgaTsKKwkJZm9yIChpID0gMDsgaSA8IHJlZkNvdW50OyArK2kpIHsKKworCQkJY2VyciA8PCAiQ2FsY3VsYXRpbmcgaGFzaCBmb3IgcmVmZXJlbmNlICIgPDwgaSA8PCAiIC4uLiAiOworCisJCQlsZW4gPSAoaW50KSByZWZbaV0tPmNhbGN1bGF0ZUhhc2goYnVmLCAxMjgpOworCisJCQljZXJyIDw8ICIgRG9uZVxuQ2hlY2tpbmcgLT4gIjsKKworCQkJaWYgKGxlbiAhPSAyMCkgeworCQkJCWNlcnIgPDwgIkJhZCAoTGVuZ3RoID0gIiA8PCBsZW4gPDwgIikiIDw8IGVuZGw7CisJCQkJZXhpdCAoMSk7CisJCQl9CisKKwkJCWZvciAoaW50IGogPSAwOyBqIDwgMjA7ICsraikgeworCisJCQkJaWYgKGJ1ZltqXSAhPSBjcmVhdGVkRG9jUmVmc1tpXVtqXSkgeworCQkJCQljZXJyIDw8ICJCYWQgYXQgbG9jYXRpb24gIiA8PCBqIDw8IGVuZGw7CisJCQkJCWV4aXQgKDEpOworCQkJCX0KKwkJCQorCQkJfQorCQkJY2VyciA8PCAiR29vZC5cbiI7CisKKwkJfQorCisJCS8qCisJCSAqIFZlcmlmeSB0aGUgc2lnbmF0dXJlIGNoZWNrIHdvcmtzCisJCSAqLworCisJCWNlcnIgPDwgIlJ1bm5pbmcgXCJ2ZXJpZnlTaWduYXR1cmVPbmx5KClcIiBvbiBjYWxjdWxhdGVkIHNpZ25hdHVyZSAuLi4gIjsKKwkJaWYgKHNpZy0+dmVyaWZ5U2lnbmF0dXJlT25seSgpKSB7CisJCQljZXJyIDw8ICJPSyIgPDwgZW5kbDsKKwkJfQorCQllbHNlIHsKKwkJCWNlcnIgPDwgIkZhaWxlZCIgPDwgZW5kbDsKKwkJCWNoYXIgKiBlID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoc2lnLT5nZXRFcnJNc2dzKCkpOworCQkJY291dCA8PCBlIDw8IGVuZGw7CisJCQlYU0VDX1JFTEVBU0VfWE1MQ0goZSk7CisJCQlleGl0KDEpOworCQl9CisKKwkJLyoKKwkJICogQ2hhbmdlIHRoZSBkb2N1bWVudCBhbmQgZW5zdXJlIHRoZSBzaWduYXR1cmUgZmFpbHMuCisJCSAqLworCisJCWNlcnIgPDwgIlNldHRpbmcgaW5jb3JyZWN0IGtleSBpbiBTaWduYXR1cmUgb2JqZWN0IiA8PCBlbmRsOworCQlzaWctPnNldFNpZ25pbmdLZXkoY3JlYXRlSE1BQ0tleSgodW5zaWduZWQgY2hhciAqKSAiYmFkc2VjcmV0IikpOworCisJCWNlcnIgPDwgIlJ1bm5pbmcgXCJ2ZXJpZnlTaWduYXR1cmVPbmx5KClcIiBvbiBjYWxjdWxhdGVkIHNpZ25hdHVyZSAuLi4gIjsKKwkJaWYgKCFzaWctPnZlcmlmeVNpZ25hdHVyZU9ubHkoKSkgeworCQkJY2VyciA8PCAiT0sgKFNpZ25hdHVyZSBiYWQpIiA8PCBlbmRsOworCQl9CisJCWVsc2UgeworCQkJY2VyciA8PCAiRmFpbGVkIChzaWduYXR1cmUgT0sgYnV0IHNob3VsZCBiZSBiYWQpIiA8PCBlbmRsOworCQkJZXhpdCgxKTsKKwkJfQorCisJCS8vIERvbid0IG5lZWQgdGhlIHNpZ25hdHVyZSBub3cgdGhlIERPTSBzdHJ1Y3R1cmUgaXMgaW4gcGxhY2UKKwkJcHJvdi5yZWxlYXNlU2lnbmF0dXJlKHNpZyk7CisKKwkJLyoKKwkJICogTm93IHNlcmlhbGlzZSB0aGUgZG9jdW1lbnQgdG8gbWVtb3J5IHNvIHdlIGNhbiByZS1wYXJzZSBhbmQgY2hlY2sgZnJvbSBzY3JhdGNoCisJCSAqLworCisJCWNlcnIgPDwgIlNlcmlhbGlzaW5nIHRoZSBkb2N1bWVudCB0byBhIG1lbW9yeSBidWZmZXIgLi4uICI7CisKKwkJTWVtQnVmRm9ybWF0VGFyZ2V0ICpmb3JtYXRUYXJnZXQgPSBuZXcgTWVtQnVmRm9ybWF0VGFyZ2V0KCk7CisKKyNpZiBkZWZpbmVkIChYU0VDX1hFUkNFU19ET01MU1NFUklBTElaRVIpCisKKyAgICAgICAgLy8gRE9NIEwzIHZlcnNpb24gYXMgcGVyIFhlcmNlcyAzLjAgQVBJCisgICAgICAgIERPTUxTU2VyaWFsaXplciAgICp0aGVTZXJpYWxpemVyID0gKChET01JbXBsZW1lbnRhdGlvbkxTKilpbXBsKS0+Y3JlYXRlTFNTZXJpYWxpemVyKCk7CisKKyAgICAgICAgLy8gR2V0IHRoZSBjb25maWcgc28gd2UgY2FuIHNldCB1cCBwcmV0dHkgcHJpbnRpbmcKKyAgICAgICAgRE9NQ29uZmlndXJhdGlvbiAqZGMgPSB0aGVTZXJpYWxpemVyLT5nZXREb21Db25maWcoKTsKKyAgICAgICAgZGMtPnNldFBhcmFtZXRlcihYTUxVbmk6OmZnRE9NV1JURm9ybWF0UHJldHR5UHJpbnQsIGZhbHNlKTsKKyAgICAgICAgCisgICAgICAgIC8vIE5vdyBjcmVhdGUgYW4gb3V0cHV0IG9iamVjdCB0byBmb3JtYXQgdG8gVVRGLTgKKyAgICAgICAgRE9NTFNPdXRwdXQgKnRoZU91dHB1dCA9ICgoRE9NSW1wbGVtZW50YXRpb25MUyopaW1wbCktPmNyZWF0ZUxTT3V0cHV0KCk7CisgICAgICAgIEphbml0b3I8RE9NTFNPdXRwdXQ+IGpfdGhlT3V0cHV0KHRoZU91dHB1dCk7CisgICAgICAgIAorICAgICAgICB0aGVPdXRwdXQtPnNldEVuY29kaW5nKE1BS0VfVU5JQ09ERV9TVFJJTkcoIlVURi04IikpOworICAgICAgICB0aGVPdXRwdXQtPnNldEJ5dGVTdHJlYW0oZm9ybWF0VGFyZ2V0KTsKKworICAgICAgICB0aGVTZXJpYWxpemVyLT53cml0ZShkb2MsdGhlT3V0cHV0KTsKKyNlbHNlCisKKwkJRE9NV3JpdGVyICAgICAgICAgKnRoZVNlcmlhbGl6ZXIgPSAoKERPTUltcGxlbWVudGF0aW9uTFMqKWltcGwpLT5jcmVhdGVET01Xcml0ZXIoKTsKKworCQl0aGVTZXJpYWxpemVyLT5zZXRFbmNvZGluZyhNQUtFX1VOSUNPREVfU1RSSU5HKCJVVEYtOCIpKTsKKwkJaWYgKHRoZVNlcmlhbGl6ZXItPmNhblNldEZlYXR1cmUoWE1MVW5pOjpmZ0RPTVdSVEZvcm1hdFByZXR0eVByaW50LCBmYWxzZSkpCisJCQl0aGVTZXJpYWxpemVyLT5zZXRGZWF0dXJlKFhNTFVuaTo6ZmdET01XUlRGb3JtYXRQcmV0dHlQcmludCwgZmFsc2UpOworCisJCXRoZVNlcmlhbGl6ZXItPndyaXRlTm9kZShmb3JtYXRUYXJnZXQsICpkb2MpOworI2VuZGlmCisKKwkJLy8gQ29weSB0byBhIG5ldyBidWZmZXIKKwkJbGVuID0gZm9ybWF0VGFyZ2V0LT5nZXRMZW4oKTsKKwkJY2hhciAqIG1idWYgPSBuZXcgY2hhciBbbGVuICsgMV07CisJCW1lbWNweShtYnVmLCBmb3JtYXRUYXJnZXQtPmdldFJhd0J1ZmZlcigpLCBsZW4pOworCQltYnVmW2xlbl0gPSAnXDAnOworI2lmIDAKKwkJY291dCA8PCBtYnVmIDw8IGVuZGw7CisjZW5kaWYKKwkJZGVsZXRlIHRoZVNlcmlhbGl6ZXI7CisJCWRlbGV0ZSBmb3JtYXRUYXJnZXQ7CisKKwkJY2VyciA8PCAiZG9uZVxuUGFyc2luZyBtZW1vcnkgYnVmZmVyIGJhY2sgdG8gRE9NIC4uLiAiOworCisJCS8vIEFsc28gcmVsZWFzZSB0aGUgZG9jdW1lbnQgc28gdGhhdCB3ZSBjYW4gcmUtbG9hZCBmcm9tIHNjcmF0Y2gKKworCQlkb2MtPnJlbGVhc2UoKTsKKworCQkvKgorCQkgKiBSZS1wYXJzZQorCQkgKi8KKworCQlYZXJjZXNET01QYXJzZXIgcGFyc2VyOworCQkKKwkJcGFyc2VyLnNldERvTmFtZXNwYWNlcyh0cnVlKTsKKwkJcGFyc2VyLnNldENyZWF0ZUVudGl0eVJlZmVyZW5jZU5vZGVzKHRydWUpOworCisJCU1lbUJ1ZklucHV0U291cmNlKiBtZW1JUyA9IG5ldyBNZW1CdWZJbnB1dFNvdXJjZSAoKGNvbnN0IFhNTEJ5dGUqKSBtYnVmLCAKKwkJCQkJCQkJCQkJCQkJCQlsZW4sICJYU0VDTWVtIik7CisKKwkJcGFyc2VyLnBhcnNlKCptZW1JUyk7CisJCWRvYyA9IHBhcnNlci5hZG9wdERvY3VtZW50KCk7CisKKworCQlkZWxldGUobWVtSVMpOworCQlkZWxldGVbXSBtYnVmOworCisJCWNlcnIgPDwgImRvbmVcblZhbGlkYXRpbmcgc2lnbmF0dXJlIC4uLiI7CisKKwkJLyoKKwkJICogVmFsaWRhdGUgc2lnbmF0dXJlCisJCSAqLworCisJCXNpZyA9IHByb3YubmV3U2lnbmF0dXJlRnJvbURPTShkb2MpOworCQlzaWctPmxvYWQoKTsKKwkJc2lnLT5zZXRTaWduaW5nS2V5KGNyZWF0ZUhNQUNLZXkoKHVuc2lnbmVkIGNoYXIgKikgInNlY3JldCIpKTsKKworCQlpZiAoc2lnLT52ZXJpZnkoKSkgeworCQkJY2VyciA8PCAiT0siIDw8IGVuZGw7CisJCX0KKwkJZWxzZSB7CisJCQljZXJyIDw8ICJGYWlsZWRcbiIgPDwgZW5kbDsKKwkJCWNoYXIgKiBlID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoc2lnLT5nZXRFcnJNc2dzKCkpOworCQkJY2VyciA8PCBlIDw8IGVuZGw7CisJCQlYU0VDX1JFTEVBU0VfWE1MQ0goZSk7CisJCQlleGl0KDEpOworCQl9CisKKwkJLyoKKwkJICogRW5zdXJlIEROYW1lcyBhcmUgcmVhZCBiYWNrIGluIGFuZCBkZWNvZGVkIHByb3Blcmx5CisJCSAqLworCisJCURTSUdLZXlJbmZvTGlzdCAqIGtpbCA9IHNpZy0+Z2V0S2V5SW5mb0xpc3QoKTsKKwkJaW50IG5raSA9IChpbnQpIGtpbC0+Z2V0U2l6ZSgpOworCisJCWNlcnIgPDwgIkNoZWNraW5nIERpc3Rpbmd1aXNoZWQgbmFtZSBpcyBkZWNvZGVkIGNvcnJlY3RseSAuLi4gIjsKKwkJZm9yIChpID0gMDsgaSA8IG5raTsgKytpKSB7CisKKwkJCWlmIChraWwtPml0ZW0oaSktPmdldEtleUluZm9UeXBlKCkgPT0gRFNJR0tleUluZm86OktFWUlORk9fWDUwOSkgeworCisJCQkJaWYgKHN0ckVxdWFscyhzX3RzdEROYW1lLCAoKERTSUdLZXlJbmZvWDUwOSAqKSBraWwtPml0ZW0oaSkpLT5nZXRYNTA5U3ViamVjdE5hbWUoKSkpIHsKKwkJCQkJY2VyciA8PCAieWVzIiA8PCBlbmRsOworCQkJCX0KKwkJCQllbHNlIHsKKwkJCQkJY2VyciA8PCAiZGVjb2RlZCBpbmNvcnJlY3RseSIgPDwgZW5kbDs7CisJCQkJCWV4aXQgKDEpOworCQkJCX0KKwkJCX0KKwkJCWlmIChraWwtPml0ZW0oaSktPmdldEtleUluZm9UeXBlKCkgPT0gRFNJR0tleUluZm86OktFWUlORk9fUEdQREFUQSkgeworCQkJCQorCQkJCWNlcnIgPDwgIlZhbGlkYXRpbmcgUEdQRGF0YSByZWFkIGJhY2sgT0sgLi4uICI7CisKKwkJCQlEU0lHS2V5SW5mb1BHUERhdGEgKiBwID0gKERTSUdLZXlJbmZvUEdQRGF0YSAqKWtpbC0+aXRlbShpKTsKKworCQkJCWlmICghKHN0ckVxdWFscyhwLT5nZXRLZXlJRCgpLCBzX3RzdFBHUEtleUlEKSAmJgorCQkJCQlzdHJFcXVhbHMocC0+Z2V0S2V5UGFja2V0KCksIHNfdHN0UEdQS2V5UGFja2V0KSkpIHsKKworCQkJCQljZXJyIDw8ICJubyEiOworCQkJCQlleGl0KDEpOworCQkJCX0KKworCQkJCWNlcnIgPDwgInllc1xuIjsKKwkJCX0KKwkJCWlmIChraWwtPml0ZW0oaSktPmdldEtleUluZm9UeXBlKCkgPT0gRFNJR0tleUluZm86OktFWUlORk9fU1BLSURBVEEpIHsKKwkJCQkKKwkJCQljZXJyIDw8ICJWYWxpZGF0aW5nIFNQS0lEYXRhIHJlYWQgYmFjayBPSyAuLi4gIjsKKworCQkJCURTSUdLZXlJbmZvU1BLSURhdGEgKiBzID0gKERTSUdLZXlJbmZvU1BLSURhdGEgKilraWwtPml0ZW0oaSk7CisKKwkJCQlpZiAocy0+Z2V0U2V4cFNpemUoKSAhPSAyKSB7CisJCQkJCWNlcnIgPDwgIm5vIC0gZXhwZWN0ZWQgdHdvIFMtZXhwcmVzc2lvbnMiOworCQkJCQlleGl0KDEpOworCQkJCX0KKworCQkJCWlmICghKHN0ckVxdWFscyhzLT5nZXRTZXhwKDApLCBzX3RzdFNleHAxKSAmJgorCQkJCQlzdHJFcXVhbHMocy0+Z2V0U2V4cCgxKSwgc190c3RTZXhwMikpKSB7CisKKwkJCQkJY2VyciA8PCAibm8hIjsKKwkJCQkJZXhpdCgxKTsKKwkJCQl9CisKKwkJCQljZXJyIDw8ICJ5ZXNcbiI7CisJCQl9CisJCQlpZiAoa2lsLT5pdGVtKGkpLT5nZXRLZXlJbmZvVHlwZSgpID09IERTSUdLZXlJbmZvOjpLRVlJTkZPX01HTVREQVRBKSB7CisJCQkJCisJCQkJY2VyciA8PCAiVmFsaWRhdGluZyBNZ210RGF0YSByZWFkIGJhY2sgT0sgLi4uICI7CisKKwkJCQlEU0lHS2V5SW5mb01nbXREYXRhICogbSA9IChEU0lHS2V5SW5mb01nbXREYXRhICopa2lsLT5pdGVtKGkpOworCisJCQkJaWYgKCFzdHJFcXVhbHMobS0+Z2V0RGF0YSgpLCBzX3RzdE1nbXREYXRhKSkgeworCisJCQkJCWNlcnIgPDwgIm5vISI7CisJCQkJCWV4aXQoMSk7CisJCQkJfQorCisJCQkJY2VyciA8PCAieWVzXG4iOworCQkJfQorCQl9CisJfQorCisJY2F0Y2ggKFhTRUNFeGNlcHRpb24gJmUpCisJeworCQljZXJyIDw8ICJBbiBlcnJvciBvY2N1cmVkIGR1cmluZyBzaWduYXR1cmUgcHJvY2Vzc2luZ1xuICAgTWVzc2FnZTogIjsKKwkJY2hhciAqIGNlID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoZS5nZXRNc2coKSk7CisJCWNlcnIgPDwgY2UgPDwgZW5kbDsKKwkJZGVsZXRlIGNlOworCQlleGl0KDEpOworCQkKKwl9CQorCWNhdGNoIChYU0VDQ3J5cHRvRXhjZXB0aW9uICZlKQorCXsKKwkJY2VyciA8PCAiQSBjcnlwdG9ncmFwaGljIGVycm9yIG9jY3VyZWQgZHVyaW5nIHNpZ25hdHVyZSBwcm9jZXNzaW5nXG4gICBNZXNzYWdlOiAiCisJCTw8IGUuZ2V0TXNnKCkgPDwgZW5kbDsKKwkJZXhpdCgxKTsKKwl9CisKKwkvLyBPdXRwdXQgdGhlIGRvY3VtZW50IHBvc3Qgc2lnbmF0dXJlIGlmIG5lY2Vzc2FyeQorCW91dHB1dERvYyhpbXBsLCBkb2MpOworCisJZG9jLT5yZWxlYXNlKCk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBVbml0IHRlc3RzIGZvciB0ZXN0IGVuY3J5cHQvRGVjcnlwdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCB1bml0VGVzdENpcGhlclJlZmVyZW5jZShET01JbXBsZW1lbnRhdGlvbiAqIGltcGwpIHsKKworCURPTURvY3VtZW50ICpkb2MgPSBpbXBsLT5jcmVhdGVEb2N1bWVudCgKKwkJCQkwLCAgICAgICAgICAgICAgICAgICAgLy8gcm9vdCBlbGVtZW50IG5hbWVzcGFjZSBVUkkuCisJCQkJTUFLRV9VTklDT0RFX1NUUklORygiQURvYyIpLCAgICAgICAgICAgIC8vIHJvb3QgZWxlbWVudCBuYW1lCisJCQkJTlVMTCk7Ly8gRE9NRG9jdW1lbnRUeXBlKCkpOyAgLy8gZG9jdW1lbnQgdHlwZSBvYmplY3QgKERURCkuCisKKwlET01FbGVtZW50ICpyb290RWxlbSA9IGRvYy0+Z2V0RG9jdW1lbnRFbGVtZW50KCk7CisKKwkvLyBVc2Uga2V5IGsgdG8gd3JhcCBhIHRlc3Qga2V5LCBkZWNyeXB0IGl0IGFuZCBtYWtlIHN1cmUgaXQgaXMgc3RpbGwgT0sKKwlYU0VDUHJvdmlkZXIgcHJvdjsKKwlYRU5DQ2lwaGVyICogY2lwaGVyOworCisJdHJ5IHsKKworCQljaXBoZXIgPSBwcm92Lm5ld0NpcGhlcihkb2MpOworCisJCWNlcnIgPDwgIkNyZWF0aW5nIENpcGhlclJlZmVyZW5jZSAuLi4gIjsKKworCQlYRU5DRW5jcnlwdGVkRGF0YSAqIHhlbmMgPSAKKwkJCWNpcGhlci0+Y3JlYXRlRW5jcnlwdGVkRGF0YShYRU5DQ2lwaGVyRGF0YTo6UkVGRVJFTkNFX1RZUEUsIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUFFUzEyOF9DQkMsIE1BS0VfVU5JQ09ERV9TVFJJTkcoIiNDaXBoZXJUZXh0IikpOworCisJCXJvb3RFbGVtLT5hcHBlbmRDaGlsZCh4ZW5jLT5nZXRFbGVtZW50KCkpOworCisJCS8vIE5vdyBjcmVhdGUgdGhlIGRhdGEgdGhhdCBpcyByZWZlcmVuY2VkCisJCURPTUVsZW1lbnQgKiBjaXBoZXJWYWwgPSBkb2MtPmNyZWF0ZUVsZW1lbnQoTUFLRV9VTklDT0RFX1NUUklORygiTXlDaXBoZXJWYWx1ZSIpKTsKKwkJcm9vdEVsZW0tPmFwcGVuZENoaWxkKGNpcGhlclZhbCk7CisJCWNpcGhlclZhbC0+c2V0QXR0cmlidXRlTlMoTlVMTCwgTUFLRV9VTklDT0RFX1NUUklORygiSWQiKSwgTUFLRV9VTklDT0RFX1NUUklORygiQ2lwaGVyVGV4dCIpKTsKKyNpZiBkZWZpbmVkKFhTRUNfWEVSQ0VTX0hBU19TRVRJREFUVFJJQlVURSkKKwkJY2lwaGVyVmFsLT5zZXRJZEF0dHJpYnV0ZShNQUtFX1VOSUNPREVfU1RSSU5HKCJJZCIpKTsKKyNlbmRpZgorCisJCWNpcGhlclZhbC0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZShNQUtFX1VOSUNPREVfU1RSSU5HKChjaGFyICopIHNfdHN0QmFzZTY0RW5jb2RlZFN0cmluZykpKTsKKworCQkvLyBOb3cgYWRkIHRoZSB0cmFuc2Zvcm1zIG5lY2Vzc2FyeSB0byBkZWNyeXB0CisJCVhFTkNDaXBoZXJSZWZlcmVuY2UgKmNyZWYgPSB4ZW5jLT5nZXRDaXBoZXJEYXRhKCktPmdldENpcGhlclJlZmVyZW5jZSgpOworCisJCWlmIChjcmVmID09IE5VTEwpIHsKKwkJCWNlcnIgPDwgIkZhaWxlZCAtIG5vIENpcGhlclJlZmVyZW5jZSBvYmplY3QiIDw8IGVuZGw7CisJCQlleGl0KDEpOworCQl9CisKKwkJY2VyciA8PCAiZG9uZSAuLi4gYXBwZW5kaW5nIFhQYXRoIGFuZCBCYXNlNjQgdHJhbnNmb3JtcyAuLi4gIjsKKworCQkvL2NyZWYtPmFwcGVuZFhQYXRoVHJhbnNmb3JtKCJzZWxmOjp0ZXh0KClbcGFyZW50OjpyZXA6Q2lwaGVyVmFsdWVbQElkPSJleGFtcGxlMSJdXSIpOworCQljcmVmLT5hcHBlbmRYUGF0aFRyYW5zZm9ybSgic2VsZjo6dGV4dCgpW3BhcmVudDo6TXlDaXBoZXJWYWx1ZVtASWQ9XCJDaXBoZXJUZXh0XCJdXSIpOworCQljcmVmLT5hcHBlbmRCYXNlNjRUcmFuc2Zvcm0oKTsKKworCQljZXJyIDw8ICJkb25lIC4uLiBkZWNyeXB0aW5nIC4uLiAiOworCisJCS8vIENyZWF0ZSBhIGtleQorCQlYU0VDQ3J5cHRvU3ltbWV0cmljS2V5ICoga3MgPQorCQkJCVhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5rZXlTeW1tZXRyaWMoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZX0FFU18xMjgpOworCQlrcy0+c2V0S2V5KCh1bnNpZ25lZCBjaGFyICopIHNfa2V5U3RyLCAxNik7CisKKwkJY2lwaGVyLT5zZXRLZXkoa3MpOworCisJCS8vIE5vdyB0cnkgdG8gZGVjcnlwdAorCQlET01Ob2RlICogbiA9IGZpbmRYRU5DTm9kZShkb2MsICJFbmNyeXB0ZWREYXRhIik7CisKKwkJWFNFQ0JpblRYRk1JbnB1dFN0cmVhbSAqaXMgPSBjaXBoZXItPmRlY3J5cHRUb0JpbklucHV0U3RyZWFtKChET01FbGVtZW50ICopIG4pOworCQlKYW5pdG9yPFhTRUNCaW5UWEZNSW5wdXRTdHJlYW0+IGpfaXMoaXMpOworCisJCVhNTEJ5dGUgYnVmWzEwMjRdOworCisJCWNlcnIgPDwgImRvbmUgLi4uIGNvbXBhcmluZyB0byBrbm93biBnb29kIC4uLiAiOworCisJCXhzZWNzaXplX3QgYnl0ZXNSZWFkID0gaXMtPnJlYWRCeXRlcyhidWYsIDEwMjQpOworCQlidWZbYnl0ZXNSZWFkXSA9ICdcMCc7CisJCWlmIChzdHJjbXAoKGNoYXIgKikgYnVmLCBzX3RzdERlY3J5cHRlZFN0cmluZykgPT0gMCkgeworCQkJY2VyciA8PCAiT0siIDw8IGVuZGw7CisJCX0KKwkJZWxzZSB7CisJCQljZXJyIDw8ICJmYWlsZWQgLSBiYWQgY29tcGFyZSBvZiBkZWNyeXB0ZWQgZGF0YSIgPDwgZW5kbDsKKwkJfQorCisJfQorCisJY2F0Y2ggKFhTRUNFeGNlcHRpb24gJmUpCisJeworCQljZXJyIDw8ICJmYWlsZWRcbiI7CisJCWNlcnIgPDwgIkFuIGVycm9yIG9jY3VyZWQgZHVyaW5nIHNpZ25hdHVyZSBwcm9jZXNzaW5nXG4gICBNZXNzYWdlOiAiOworCQljaGFyICogY2UgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShlLmdldE1zZygpKTsKKwkJY2VyciA8PCBjZSA8PCBlbmRsOworCQlkZWxldGUgY2U7CisJCWV4aXQoMSk7CisJCQorCX0JCisJY2F0Y2ggKFhTRUNDcnlwdG9FeGNlcHRpb24gJmUpCisJeworCQljZXJyIDw8ICJmYWlsZWRcbiI7CisJCWNlcnIgPDwgIkEgY3J5cHRvZ3JhcGhpYyBlcnJvciBvY2N1cmVkIGR1cmluZyBzaWduYXR1cmUgcHJvY2Vzc2luZ1xuICAgTWVzc2FnZTogIgorCQk8PCBlLmdldE1zZygpIDw8IGVuZGw7CisJCWV4aXQoMSk7CisJfQorCisJb3V0cHV0RG9jKGltcGwsIGRvYyk7CisJZG9jLT5yZWxlYXNlKCk7CisKK30KKworCit2b2lkIHVuaXRUZXN0RWxlbWVudENvbnRlbnRFbmNyeXB0KERPTUltcGxlbWVudGF0aW9uICppbXBsLCBYU0VDQ3J5cHRvS2V5ICoga2V5LCBlbmNyeXB0aW9uTWV0aG9kIGVtLCBib29sIGRvRWxlbWVudENvbnRlbnQpIHsKKworCWlmIChkb0VsZW1lbnRDb250ZW50KQorCQljZXJyIDw8ICJFbmNyeXB0aW5nIEVsZW1lbnQgQ29udGVudCAuLi4gIjsKKwllbHNlCisJCWNlcnIgPDwgIkVuY3J5cHRpbmcgRWxlbWVudCAuLi4gIjsKKwkKKwkvLyBDcmVhdGUgYSBkb2N1bWVudAorICAgIAorCURPTURvY3VtZW50ICogZG9jID0gY3JlYXRlVGVzdERvYyhpbXBsKTsKKwlET01Ob2RlICogY2F0ZWdvcnlOb2RlID0gZmluZE5vZGUoZG9jLCBNQUtFX1VOSUNPREVfU1RSSU5HKCJjYXRlZ29yeSIpKTsKKwlpZiAoY2F0ZWdvcnlOb2RlID09IE5VTEwpIHsKKworCQljZXJyIDw8ICJFcnJvciBmaW5kaW5nIGNhdGVnb3J5IG5vZGUgZm9yIGVuY3J5cHRpb24gdGVzdCIgPDwgZW5kbDsKKwkJZXhpdCgxKTsKKworCX0KKworCS8vIENyZWF0ZSBhbmQgZXhlY3V0ZSBjaXBoZXIKKworCVhTRUNQcm92aWRlciBwcm92OworCVhFTkNDaXBoZXIgKiBjaXBoZXI7CisKKwl0cnkgeworCQkKKwkJLyoKKwkJICogTm93IHdlIGhhdmUgYSBkb2N1bWVudCwgZmluZCB0aGUgZGF0YSBub2RlLgorCQkgKi8KKworCQljaXBoZXIgPSBwcm92Lm5ld0NpcGhlcihkb2MpOworCQljaXBoZXItPnNldFhFTkNOU1ByZWZpeChNQUtFX1VOSUNPREVfU1RSSU5HKCJ4ZW5jIikpOworCQljaXBoZXItPnNldFByZXR0eVByaW50KHRydWUpOworCisJCS8vIFNldCBhIGtleQorCisJCWNpcGhlci0+c2V0S2V5KGtleS0+Y2xvbmUoKSk7CisJCisJCS8vIE5vdyBlbmNyeXB0IQorCQlpZiAoZG9FbGVtZW50Q29udGVudCkKKwkJCWNpcGhlci0+ZW5jcnlwdEVsZW1lbnRDb250ZW50KGRvYy0+Z2V0RG9jdW1lbnRFbGVtZW50KCksIGVtKTsKKwkJZWxzZQorCQkJY2lwaGVyLT5lbmNyeXB0RWxlbWVudCgoRE9NRWxlbWVudCAqKSBjYXRlZ29yeU5vZGUsIGVtKTsKKworCQljZXJyIDw8ICJkb25lIC4uLiBjaGVjayBlbmNyeXB0ZWQgLi4uICI7CisKKwkJRE9NTm9kZSAqIHQgPSBmaW5kTm9kZShkb2MsIE1BS0VfVU5JQ09ERV9TVFJJTkcoImNhdGVnb3J5IikpOworCQlpZiAodCAhPSBOVUxMKSB7CisKKwkJCWNlcnIgPDwgIm5vIC0gYSBjYXRlZ29yeSBjaGlsZCBzdGlsbCBleGlzdHMiIDw8IGVuZGw7CisJCQlleGl0KDEpOworCisJCX0KKwkJZWxzZQorCQkJY2VyciA8PCAieWVzIiA8PCBlbmRsOworCQkKKwkJb3V0cHV0RG9jKGltcGwsIGRvYyk7CisJCQorCQlpZiAoZG9FbGVtZW50Q29udGVudCkKKwkJCWNlcnIgPDwgIkRlY3J5cHRpbmcgRWxlbWVudCBjb250ZW50IC4uLiAiOworCQllbHNlCisJCQljZXJyIDw8ICJEZWNyeXB0aW5nIEVsZW1lbnQgLi4uICI7CisKKwkJLy8gT0sgLSBOb3cgd2UgdHJ5IHRvIGRlY3J5cHQKKwkJLy8gRmluZCB0aGUgRW5jcnlwdGVkRGF0YSBub2RlCisJCURPTU5vZGUgKiBuID0gZmluZFhFTkNOb2RlKGRvYywgIkVuY3J5cHRlZERhdGEiKTsKKworCQlYRU5DQ2lwaGVyICogY2lwaGVyMiA9IHByb3YubmV3Q2lwaGVyKGRvYyk7CisKKwkJY2lwaGVyMi0+c2V0S2V5KGtleSk7CisKKwkJY2lwaGVyMi0+ZGVjcnlwdEVsZW1lbnQoc3RhdGljX2Nhc3Q8RE9NRWxlbWVudCAqPihuKSk7CisKKwkJY2VyciA8PCAiZG9uZSAuLi4gY2hlY2sgZGVjcnlwdCAuLi4gIjsKKwkJdCA9IGZpbmROb2RlKGRvYywgTUFLRV9VTklDT0RFX1NUUklORygiY2F0ZWdvcnkiKSk7CisKKwkJaWYgKHQgPT0gTlVMTCkgeworCisJCQljZXJyIDw8ICIgZmFpbGVkIC0gY2F0ZWdvcnkgZGlkIG5vdCBkZWNyeXB0IHByb3Blcmx5IiA8PCBlbmRsOworCQkJZXhpdCgxKTsKKworCQl9CisJCWVsc2UKKwkJCWNlcnIgPDwgIk9LIiA8PCBlbmRsOworCisJCW91dHB1dERvYyhpbXBsLCBkb2MpOworCisJfQorCWNhdGNoIChYU0VDRXhjZXB0aW9uICZlKQorCXsKKwkJY2VyciA8PCAiQW4gZXJyb3Igb2NjdXJlZCBkdXJpbmcgZW5jcnlwdGlvbiBwcm9jZXNzaW5nXG4gICBNZXNzYWdlOiAiOworCQljaGFyICogY2UgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShlLmdldE1zZygpKTsKKwkJY2VyciA8PCBjZSA8PCBlbmRsOworCQlkZWxldGUgY2U7CisJCWV4aXQoMSk7CisJCQorCX0JCisJY2F0Y2ggKFhTRUNDcnlwdG9FeGNlcHRpb24gJmUpCisJeworCQljZXJyIDw8ICJBIGNyeXB0b2dyYXBoaWMgZXJyb3Igb2NjdXJlZCBkdXJpbmcgZW5jcnlwdGlvbiBwcm9jZXNzaW5nXG4gICBNZXNzYWdlOiAiCisJCTw8IGUuZ2V0TXNnKCkgPDwgZW5kbDsKKwkJZXhpdCgxKTsKKwl9CisKKwlkb2MtPnJlbGVhc2UoKTsKKworfQorCit2b2lkIHVuaXRUZXN0U21hbGxFbGVtZW50KERPTUltcGxlbWVudGF0aW9uICppbXBsKSB7CisJCisJY2VyciA8PCAiRW5jcnlwdCBzbWFsbCBpbnB1dC4uLiAiOworCisJLy8gQ3JlYXRlIGEgZG9jdW1lbnQKKyAgICAKKwlET01Eb2N1bWVudCAqIGRvYyA9IGNyZWF0ZVRlc3REb2MoaW1wbCk7CisJRE9NRWxlbWVudCAqIHByb2R1Y3ROb2RlID0gKERPTUVsZW1lbnQgKikgZmluZE5vZGUoZG9jLCBNQUtFX1VOSUNPREVfU1RSSU5HKCJwcm9kdWN0IikpOworCWlmIChwcm9kdWN0Tm9kZSA9PSBOVUxMKSB7CisKKwkJY2VyciA8PCAiRXJyb3IgZmluZGluZyBwcm9kdWN0IG5vZGUgZm9yIHNtYWxsIGlucHV0IGVuY3J5cHRpb24gdGVzdCIgPDwgZW5kbDsKKwkJZXhpdCgxKTsKKworCX0KKworCS8vIFNocmluayB0aGUgaW5wdXQgdGV4dAorCURPTU5vZGUgKiB0ZXh0Tm9kZSA9IHByb2R1Y3ROb2RlLT5nZXRGaXJzdENoaWxkKCk7CisJdGV4dE5vZGUtPnNldE5vZGVWYWx1ZShNQUtFX1VOSUNPREVfU1RSSU5HKCJzbSIpKTsKKworCS8vIENyZWF0ZSBhbmQgZXhlY3V0ZSBjaXBoZXIKKworCVhTRUNQcm92aWRlciBwcm92OworCVhFTkNDaXBoZXIgKiBjaXBoZXI7CisKKwl0cnkgeworCQkKKwkJLyoKKwkJICogTm93IHdlIGhhdmUgYSBkb2N1bWVudCwgZmluZCB0aGUgZGF0YSBub2RlLgorCQkgKi8KKworCQljaXBoZXIgPSBwcm92Lm5ld0NpcGhlcihkb2MpOworCQljaXBoZXItPnNldFhFTkNOU1ByZWZpeChNQUtFX1VOSUNPREVfU1RSSU5HKCJ4ZW5jIikpOworCQljaXBoZXItPnNldFByZXR0eVByaW50KHRydWUpOworCisJCS8vIFNldCBhIGtleQorCQlYU0VDQ3J5cHRvU3ltbWV0cmljS2V5ICoga3MgPSAKKwkJCVhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5rZXlTeW1tZXRyaWMoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZXzNERVNfMTkyKTsKKwkJa3MtPnNldEtleSgodW5zaWduZWQgY2hhciAqKSBzX2tleVN0ciwgMjQpOworCisJCWNpcGhlci0+c2V0S2V5KGtzLT5jbG9uZSgpKTsKKwkKKwkJLy8gTm93IGVuY3J5cHQhCisJCWNpcGhlci0+ZW5jcnlwdEVsZW1lbnRDb250ZW50KHByb2R1Y3ROb2RlLCBFTkNSWVBUXzNERVNfQ0JDKTsKKworCQljZXJyIDw8ICJkb25lIC4uLiBjaGVjayBlbmNyeXB0ZWQgLi4uICI7CisKKwkJRE9NTm9kZSAqIHQgPSBmaW5kTm9kZShkb2MsIE1BS0VfVU5JQ09ERV9TVFJJTkcoInByb2R1Y3QiKSk7CisJCXQgPSBmaW5kRmlyc3RDaGlsZE9mVHlwZSh0LCBET01Ob2RlOjpURVhUX05PREUpOworCQl3aGlsZSAodCAhPSBOVUxMICYmICEgc3RyRXF1YWxzKHQtPmdldE5vZGVWYWx1ZSgpLCAic20iKSkKKwkJCXQgPSBmaW5kTmV4dENoaWxkT2ZUeXBlKHQsIERPTU5vZGU6OlRFWFRfTk9ERSk7CisKKwkJaWYgKHQgIT0gTlVMTCkgeworCisJCQljZXJyIDw8ICJubyAtIHRleHQgY2hpbGQgc3RpbGwgZXhpc3RzIiA8PCBlbmRsOworCQkJZXhpdCgxKTsKKworCQl9CisJCWVsc2UKKwkJCWNlcnIgPDwgInllcyIgPDwgZW5kbDsKKwkJCisJCW91dHB1dERvYyhpbXBsLCBkb2MpOworCQkKKwkJY2VyciA8PCAiRGVjcnlwdGluZyBFbGVtZW50IGNvbnRlbnQgLi4uICI7CisKKwkJLy8gT0sgLSBOb3cgd2UgdHJ5IHRvIGRlY3J5cHQKKwkJLy8gRmluZCB0aGUgRW5jcnlwdGVkRGF0YSBub2RlCisJCURPTU5vZGUgKiBuID0gZmluZFhFTkNOb2RlKGRvYywgIkVuY3J5cHRlZERhdGEiKTsKKworCQlYRU5DQ2lwaGVyICogY2lwaGVyMiA9IHByb3YubmV3Q2lwaGVyKGRvYyk7CisKKwkJY2lwaGVyMi0+c2V0S2V5KGtzKTsKKworCQljaXBoZXIyLT5kZWNyeXB0RWxlbWVudChzdGF0aWNfY2FzdDxET01FbGVtZW50ICo+KG4pKTsKKworCQljZXJyIDw8ICJkb25lIC4uLiBjaGVjayBkZWNyeXB0IC4uLiAiOworCQl0ID0gZmluZE5vZGUoZG9jLCBNQUtFX1VOSUNPREVfU1RSSU5HKCJwcm9kdWN0IikpOworCQl0ID0gZmluZEZpcnN0Q2hpbGRPZlR5cGUodCwgRE9NTm9kZTo6VEVYVF9OT0RFKTsKKwkJaWYgKHQgPT0gTlVMTCB8fCAhc3RyRXF1YWxzKHQtPmdldE5vZGVWYWx1ZSgpLCAic20iKSkgeworCisJCQljZXJyIDw8ICIgZmFpbGVkIC0gc21hbGwgdGV4dCBkaWQgbm90IGRlY3J5cHQgcHJvcGVybHkiIDw8IGVuZGw7CisJCQlleGl0KDEpOworCisJCX0KKwkJZWxzZQorCQkJY2VyciA8PCAiT0siIDw8IGVuZGw7CisKKwkJb3V0cHV0RG9jKGltcGwsIGRvYyk7CisKKwl9CisJY2F0Y2ggKFhTRUNFeGNlcHRpb24gJmUpCisJeworCQljZXJyIDw8ICJBbiBlcnJvciBvY2N1cmVkIGR1cmluZyBlbmNyeXB0aW9uIHByb2Nlc3NpbmdcbiAgIE1lc3NhZ2U6ICI7CisJCWNoYXIgKiBjZSA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKGUuZ2V0TXNnKCkpOworCQljZXJyIDw8IGNlIDw8IGVuZGw7CisJCWRlbGV0ZSBjZTsKKwkJZXhpdCgxKTsKKwkJCisJfQkKKwljYXRjaCAoWFNFQ0NyeXB0b0V4Y2VwdGlvbiAmZSkKKwl7CisJCWNlcnIgPDwgIkEgY3J5cHRvZ3JhcGhpYyBlcnJvciBvY2N1cmVkIGR1cmluZyBlbmNyeXB0aW9uIHByb2Nlc3NpbmdcbiAgIE1lc3NhZ2U6ICIKKwkJPDwgZS5nZXRNc2coKSA8PCBlbmRsOworCQlleGl0KDEpOworCX0KKworCWRvYy0+cmVsZWFzZSgpOworCit9CisKKwordm9pZCB1bml0VGVzdEtleUVuY3J5cHQoRE9NSW1wbGVtZW50YXRpb24gKmltcGwsIFhTRUNDcnlwdG9LZXkgKiBrLCBlbmNyeXB0aW9uTWV0aG9kIGVtKSB7CisKKwkvLyBDcmVhdGUgYSBkb2N1bWVudCB0aGF0IHdlIHdpbGwgZW1iZWQgdGhlIGVuY3J5cHRlZCBrZXkgaW4KKwlET01Eb2N1bWVudCAqZG9jID0gaW1wbC0+Y3JlYXRlRG9jdW1lbnQoCisJCQkJMCwgICAgICAgICAgICAgICAgICAgIC8vIHJvb3QgZWxlbWVudCBuYW1lc3BhY2UgVVJJLgorCQkJCU1BS0VfVU5JQ09ERV9TVFJJTkcoIkFEb2MiKSwgICAgICAgICAgICAvLyByb290IGVsZW1lbnQgbmFtZQorCQkJCU5VTEwpOy8vIERPTURvY3VtZW50VHlwZSgpKTsgIC8vIGRvY3VtZW50IHR5cGUgb2JqZWN0IChEVEQpLgorCisJRE9NRWxlbWVudCAqcm9vdEVsZW0gPSBkb2MtPmdldERvY3VtZW50RWxlbWVudCgpOworCisJLy8gVXNlIGtleSBrIHRvIHdyYXAgYSB0ZXN0IGtleSwgZGVjcnlwdCBpdCBhbmQgbWFrZSBzdXJlIGl0IGlzIHN0aWxsIE9LCisJWFNFQ1Byb3ZpZGVyIHByb3Y7CisJWEVOQ0NpcGhlciAqIGNpcGhlcjsKKworCXRyeSB7CisJCQorCQkvLyBFbmNyeXB0IGEgZHVtbXkga2V5CisKKwkJY2VyciA8PCAiZW5jcnlwdCAuLi4gIjsKKworCQlzdGF0aWMgdW5zaWduZWQgY2hhciB0b0VuY3J5cHRTdHJbXSA9ICJBIHRlc3Qga2V5IHRvIHVzZSBmb3IgZGEiOworCisJCWNpcGhlciA9IHByb3YubmV3Q2lwaGVyKGRvYyk7CisJCWNpcGhlci0+c2V0WEVOQ05TUHJlZml4KE1BS0VfVU5JQ09ERV9TVFJJTkcoInhlbmMiKSk7CisJCWNpcGhlci0+c2V0UHJldHR5UHJpbnQodHJ1ZSk7CisKKwkJLy8gU2V0IGEga2V5CisKKwkJY2lwaGVyLT5zZXRLRUsoayk7CisKKwkJWEVOQ0VuY3J5cHRlZEtleSAqIGVuY3J5cHRlZEtleTsKKwkJZW5jcnlwdGVkS2V5ID0gY2lwaGVyLT5lbmNyeXB0S2V5KHRvRW5jcnlwdFN0ciwgKHVuc2lnbmVkIGludCkgc3RybGVuKChjaGFyICopIHRvRW5jcnlwdFN0ciksIGVtKTsKKwkJSmFuaXRvcjxYRU5DRW5jcnlwdGVkS2V5PiBqX2VuY3J5cHRlZEtleShlbmNyeXB0ZWRLZXkpOworCisJCXJvb3RFbGVtLT5hcHBlbmRDaGlsZChlbmNyeXB0ZWRLZXktPmdldEVsZW1lbnQoKSk7CisKKwkJLy8gRGVjcnlwdAorCQljZXJyIDw8ICJkZWNyeXB0IC4uLiAiOworCisJCVhNTEJ5dGUgZGVjQnVmWzY0XTsKKwkJY2lwaGVyLT5kZWNyeXB0S2V5KGVuY3J5cHRlZEtleSwgZGVjQnVmLCA2NCk7CisKKwkJLy8gQ2hlY2sKKwkJY2VyciA8PCAiY29tcGFyaW5nIC4uLiAiOworCQlpZiAobWVtY21wKGRlY0J1ZiwgdG9FbmNyeXB0U3RyLCBzdHJsZW4oKGNoYXIgKikgdG9FbmNyeXB0U3RyKSkgPT0gMCkgeworCQkJY2VyciA8PCAiT0sgLi4uICI7CisJCX0KKwkJZWxzZSB7CisJCQljZXJyIDw8ICJkaWZmZXJlbnQgPSBmYWlsZWQhIiA8PCBlbmRsOworCQkJZXhpdCgyKTsKKwkJfQorCQkKKwkJY2VyciA8PCAiZGVjcnlwdCBmcm9tIERPTSAuLi4gIjsKKwkJLy8gRGVjcnlwdCBmcm9tIERPTQorCQlET01Ob2RlICoga2V5Tm9kZSA9IGZpbmRYRU5DTm9kZShkb2MsICJFbmNyeXB0ZWRLZXkiKTsKKwkJaWYgKGtleU5vZGUgPT0gTlVMTCkgeworCQkJY2VyciA8PCAibm8ga2V5IC0gZmFpbGVkISIgPDwgZW5kbDsKKwkJCWV4aXQoMik7CisJCX0KKwkJbWVtc2V0KGRlY0J1ZiwgMCwgNjQpOworCQljaXBoZXItPmRlY3J5cHRLZXkoKERPTUVsZW1lbnQgKikga2V5Tm9kZSwgZGVjQnVmLCA2NCk7CisKKwkJY2VyciA8PCAiY29tcGFyaW5nIC4uLiAiOworCQlpZiAobWVtY21wKGRlY0J1ZiwgdG9FbmNyeXB0U3RyLCBzdHJsZW4oKGNoYXIgKikgdG9FbmNyeXB0U3RyKSkgPT0gMCkgeworCQkJY2VyciA8PCAiT0siIDw8IGVuZGw7CisJCX0KKwkJZWxzZSB7CisJCQljZXJyIDw8ICJkaWZmZXJlbnQgPSBmYWlsZWQhIiA8PCBlbmRsOworCQkJZXhpdCgyKTsKKwkJfQorCisJfQorCisJY2F0Y2ggKFhTRUNFeGNlcHRpb24gJmUpCisJeworCQljZXJyIDw8ICJmYWlsZWRcbiI7CisJCWNlcnIgPDwgIkFuIGVycm9yIG9jY3VyZWQgZHVyaW5nIHNpZ25hdHVyZSBwcm9jZXNzaW5nXG4gICBNZXNzYWdlOiAiOworCQljaGFyICogY2UgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShlLmdldE1zZygpKTsKKwkJY2VyciA8PCBjZSA8PCBlbmRsOworCQlkZWxldGUgY2U7CisJCWV4aXQoMSk7CisJCQorCX0JCisJY2F0Y2ggKFhTRUNDcnlwdG9FeGNlcHRpb24gJmUpCisJeworCQljZXJyIDw8ICJmYWlsZWRcbiI7CisJCWNlcnIgPDwgIkEgY3J5cHRvZ3JhcGhpYyBlcnJvciBvY2N1cmVkIGR1cmluZyBzaWduYXR1cmUgcHJvY2Vzc2luZ1xuICAgTWVzc2FnZTogIgorCQk8PCBlLmdldE1zZygpIDw8IGVuZGw7CisJCWV4aXQoMSk7CisJfQorCisJb3V0cHV0RG9jKGltcGwsIGRvYyk7CisJZG9jLT5yZWxlYXNlKCk7CisKK30KKworCisKK3ZvaWQgdW5pdFRlc3RFbmNyeXB0KERPTUltcGxlbWVudGF0aW9uICppbXBsKSB7CisKKwl0cnkgeworCQkvLyBLZXkgd3JhcHMKKwkJY2VyciA8PCAiUlNBIGtleSB3cmFwLi4uICI7CisKKyNpZiBkZWZpbmVkIChIQVZFX09QRU5TU0wpCisJCWlmICghZ191c2VXaW5DQVBJICYmICFnX3VzZU5TUykgeworCQkJLy8gTG9hZCB0aGUga2V5CisJCQlCSU8gKiBiaW9NZW0gPSBCSU9fbmV3KEJJT19zX21lbSgpKTsKKwkJCUJJT19wdXRzKGJpb01lbSwgc190c3RSU0FQcml2YXRlS2V5KTsKKwkJCUVWUF9QS0VZICogcGsgPSBQRU1fcmVhZF9iaW9fUHJpdmF0ZUtleShiaW9NZW0sIE5VTEwsIE5VTEwsIE5VTEwpOworCisJCQlPcGVuU1NMQ3J5cHRvS2V5UlNBICogayA9IG5ldyBPcGVuU1NMQ3J5cHRvS2V5UlNBKHBrKTsKKworCQkJdW5pdFRlc3RLZXlFbmNyeXB0KGltcGwsIGssIEVOQ1JZUFRfUlNBXzE1KTsKKworCQkJY2VyciA8PCAiUlNBIE9BRVAga2V5IHdyYXAuLi4gIjsKKwkJCWsgPSBuZXcgT3BlblNTTENyeXB0b0tleVJTQShwayk7CisJCQl1bml0VGVzdEtleUVuY3J5cHQoaW1wbCwgaywgRU5DUllQVF9SU0FfT0FFUF9NR0ZQMSk7CisKKwkJCWNlcnIgPDwgIlJTQSBPQUVQIGtleSB3cmFwICsgcGFyYW1zLi4uICI7CisJCQlrID0gbmV3IE9wZW5TU0xDcnlwdG9LZXlSU0EocGspOworCQkJay0+c2V0T0FFUHBhcmFtcyhzX3RzdE9BRVBwYXJhbXMsICh1bnNpZ25lZCBpbnQpIHN0cmxlbigoY2hhciAqKSBzX3RzdE9BRVBwYXJhbXMpKTsKKworCQkJdW5pdFRlc3RLZXlFbmNyeXB0KGltcGwsIGssIEVOQ1JZUFRfUlNBX09BRVBfTUdGUDEpOworCisJCQlCSU9fZnJlZShiaW9NZW0pOworCQkJRVZQX1BLRVlfZnJlZShwayk7CisJCX0KKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoSEFWRV9XSU5DQVBJKQorCQlpZiAoZ191c2VXaW5DQVBJKSB7CisKKwkJCS8vIFVzZSB0aGUgaW50ZXJuYWwga2V5CisJCQlXaW5DQVBJQ3J5cHRvUHJvdmlkZXIgKmNwID0gKFdpbkNBUElDcnlwdG9Qcm92aWRlciAqKSAoWFNFQ1BsYXRmb3JtVXRpbHM6OmdfY3J5cHRvUHJvdmlkZXIpOworCQkJSENSWVBUUFJPViBwID0gY3AtPmdldEFwYWNoZUtleVN0b3JlKCk7CisJCQkKKwkJCVdpbkNBUElDcnlwdG9LZXlSU0EgKiByc2FLZXkgPSBuZXcgV2luQ0FQSUNyeXB0b0tleVJTQShwLCBBVF9LRVlFWENIQU5HRSwgdHJ1ZSk7CisJCQl1bml0VGVzdEtleUVuY3J5cHQoaW1wbCwgcnNhS2V5LCBFTkNSWVBUX1JTQV8xNSk7CisKKwkJCWNlcnIgPDwgIlJTQSBPQUVQIGtleSB3cmFwLi4uICI7CisJCQlyc2FLZXkgPSBuZXcgV2luQ0FQSUNyeXB0b0tleVJTQShwLCBBVF9LRVlFWENIQU5HRSwgdHJ1ZSk7CisJCQl1bml0VGVzdEtleUVuY3J5cHQoaW1wbCwgcnNhS2V5LCBFTkNSWVBUX1JTQV9PQUVQX01HRlAxKTsKKwkJfQorCisjZW5kaWYKKworI2lmIGRlZmluZWQgKEhBVkVfTlNTKQorCQlpZiAoZ191c2VOU1MpIHsKKwkJCS8vIFVzZSB0aGUgaW50ZXJuYWwga2V5CisJCQlOU1NDcnlwdG9Qcm92aWRlciAqY3AgPSAoTlNTQ3J5cHRvUHJvdmlkZXIgKikgKFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyKTsKKworCQkJLy8gSGVhdmlseSBiYXNlZCBvbiBNb3ppbGxhIGV4YW1wbGUgY29kZQorCQkJU0VDS0VZUHJpdmF0ZUtleSAqcHJ2S2V5ID0gMDsKKwkJCVNFQ0tFWVB1YmxpY0tleSAqcHViS2V5ID0gMDsKKwkJCVBLMTFTbG90SW5mbyAqc2xvdCA9IDA7CisJCQlQSzExUlNBR2VuUGFyYW1zIHJzYVBhcmFtczsKKworCQkJLy8gVXNlIGEgYm9nIHN0YW5kYXJkIGtleSBzaXplCisJCQlyc2FQYXJhbXMua2V5U2l6ZUluQml0cyA9IDEwMjQ7CisJCQlyc2FQYXJhbXMucGUgPSA2NTUzNzsKKyAgCisJCQkvLyBXZSBuZWVkIHNvbWV3aGVyZSB0byB0ZW1wb3JhcmlseSBzdG9yZSBhIGdlbmVyYXRlZCBrZXkKKwkJICAgIHNsb3QgPSBQSzExX0dldEludGVybmFsS2V5U2xvdCgpOworCQkJaWYgKCFzbG90KSB7IAorCQkJCWNlcnIgPDwgIkVycm9yIGdlbmVyYXRpbmcga2V5IC0gY2FuJ3QgZ2V0IE5TUyBzbG90XG4iOworCQkJCWV4aXQgKDEpOworCQkJfQorCisJCQkvLyBEbyB0aGUgZ2VuZXJhdGUKKwkJCXBydktleSA9IFBLMTFfR2VuZXJhdGVLZXlQYWlyKHNsb3QsIENLTV9SU0FfUEtDU19LRVlfUEFJUl9HRU4sICZyc2FQYXJhbXMsCisgICAgICAgICAgICAgICAmcHViS2V5LCBQUl9GQUxTRSwgUFJfVFJVRSwgMCk7CisKKwkJCWlmICghcHJ2S2V5KSB7CisJCQkJaWYgKHNsb3QpCisJCQkJCVBLMTFfRnJlZVNsb3Qoc2xvdCk7CisJCQkJY2VyciA8PCAiRXJyb3IgZ2VuZXJhdGluZyBrZXkgd2l0aGluIE5TU1xuIjsKKwkJCQlleGl0ICgxKTsKKwkJCX0KKworCQkJLy8gTm93IHVzZSB0aGUga2V5IQorCQkJTlNTQ3J5cHRvS2V5UlNBICogcnNhS2V5ID0gbmV3IE5TU0NyeXB0b0tleVJTQShwdWJLZXksIHBydktleSk7CisJCQl1bml0VGVzdEtleUVuY3J5cHQoaW1wbCwgcnNhS2V5LCBFTkNSWVBUX1JTQV8xNSk7CisKKwkJCWlmIChzbG90KSAKKwkJCQkvLyBBY3R1YWwga2V5cyB3aWxsIGJlIGRlbGV0ZWQgYnkgdGhlIHByb3ZpZGVyCisJCQkJUEsxMV9GcmVlU2xvdChzbG90KTsKKwkJCQorCQkJY2VyciA8PCAiUlNBIE9BRVAga2V5IHdyYXAgc2tpcHBlZCAtIG5vdCB5ZXQgc3VwcG9ydGVkIGluIE5TUyBjcnlwdG8gcHJvdmlkZXJcbiI7CisJCQkKKwkJfQorI2VuZGlmCisKKwkJWFNFQ0NyeXB0b1N5bW1ldHJpY0tleSAqIGtzOworCisJCWlmIChnX2hhdmVBRVMpIHsKKwkJCWNlcnIgPDwgIkFFUyAxMjgga2V5IHdyYXAuLi4gIjsKKworCQkJa3MgPSBYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+a2V5U3ltbWV0cmljKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV9BRVNfMTI4KTsKKwkJCWtzLT5zZXRLZXkoKHVuc2lnbmVkIGNoYXIgKikgc19rZXlTdHIsIDE2KTsKKwkJCisJCQl1bml0VGVzdEtleUVuY3J5cHQoaW1wbCwga3MsIEVOQ1JZUFRfS1dfQUVTMTI4KTsKKworCQkJY2VyciA8PCAiQUVTIDE5MiBrZXkgd3JhcC4uLiAiOworCisJCQlrcyA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5rZXlTeW1tZXRyaWMoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZX0FFU18xOTIpOworCQkJa3MtPnNldEtleSgodW5zaWduZWQgY2hhciAqKSBzX2tleVN0ciwgMjQpOworCQkKKwkJCXVuaXRUZXN0S2V5RW5jcnlwdChpbXBsLCBrcywgRU5DUllQVF9LV19BRVMxOTIpOworCisJCQljZXJyIDw8ICJBRVMgMjU2IGtleSB3cmFwLi4uICI7CisKKwkJCWtzID0gWFNFQ1BsYXRmb3JtVXRpbHM6OmdfY3J5cHRvUHJvdmlkZXItPmtleVN5bW1ldHJpYyhYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfQUVTXzI1Nik7CisJCQlrcy0+c2V0S2V5KCh1bnNpZ25lZCBjaGFyICopIHNfa2V5U3RyLCAzMik7CisJCQorCQkJdW5pdFRlc3RLZXlFbmNyeXB0KGltcGwsIGtzLCBFTkNSWVBUX0tXX0FFUzI1Nik7CisJCX0KKworCQllbHNlIAorCQkJY2VyciA8PCAiU2tpcHBlZCBBRVMga2V5IHdyYXAgdGVzdHMiIDw8IGVuZGw7CisKKwkJY2VyciA8PCAiVHJpcGxlIERFUyBrZXkgd3JhcC4uLiAiOworCisJCWtzID0gWFNFQ1BsYXRmb3JtVXRpbHM6OmdfY3J5cHRvUHJvdmlkZXItPmtleVN5bW1ldHJpYyhYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfM0RFU18xOTIpOworCQlrcy0+c2V0S2V5KCh1bnNpZ25lZCBjaGFyICopIHNfa2V5U3RyLCAyNCk7CisJCQorCQl1bml0VGVzdEtleUVuY3J5cHQoaW1wbCwga3MsIEVOQ1JZUFRfS1dfM0RFUyk7CisKKwkJLy8gTm93IGRvIEVsZW1lbnQgZW5jcnlwdHMKKworCQlpZiAoZ19oYXZlQUVTKSB7CisJCQkvLyAxMjggQUVTCisJCQlrcyA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5rZXlTeW1tZXRyaWMoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZX0FFU18xMjgpOworCQkJa3MtPnNldEtleSgodW5zaWduZWQgY2hhciAqKSBzX2tleVN0ciwgMTYpOworCisJCQljZXJyIDw8ICJVbml0IHRlc3RpbmcgQUVTIDEyOCBiaXQgQ0JDIGVuY3J5cHRpb24iIDw8IGVuZGw7CisJCQl1bml0VGVzdEVsZW1lbnRDb250ZW50RW5jcnlwdChpbXBsLCBrcy0+Y2xvbmUoKSwgRU5DUllQVF9BRVMxMjhfQ0JDLCBmYWxzZSk7CisJCQl1bml0VGVzdEVsZW1lbnRDb250ZW50RW5jcnlwdChpbXBsLCBrcywgRU5DUllQVF9BRVMxMjhfQ0JDLCB0cnVlKTsKKworCQkJLy8xOTIgQUVTCisJCQlrcyA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5rZXlTeW1tZXRyaWMoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZX0FFU18xOTIpOworCQkJa3MtPnNldEtleSgodW5zaWduZWQgY2hhciAqKSBzX2tleVN0ciwgMjQpOworCisJCQljZXJyIDw8ICJVbml0IHRlc3RpbmcgQUVTIDE5MiBiaXQgQ0JDIGVuY3J5cHRpb24iIDw8IGVuZGw7CisJCQl1bml0VGVzdEVsZW1lbnRDb250ZW50RW5jcnlwdChpbXBsLCBrcy0+Y2xvbmUoKSwgRU5DUllQVF9BRVMxOTJfQ0JDLCBmYWxzZSk7CisJCQl1bml0VGVzdEVsZW1lbnRDb250ZW50RW5jcnlwdChpbXBsLCBrcywgRU5DUllQVF9BRVMxOTJfQ0JDLCB0cnVlKTsKKworCQkvLyAyNTYgQUVTCisJCQlrcyA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5rZXlTeW1tZXRyaWMoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZX0FFU18yNTYpOworCQkJa3MtPnNldEtleSgodW5zaWduZWQgY2hhciAqKSBzX2tleVN0ciwgMzIpOworCisJCQljZXJyIDw8ICJVbml0IHRlc3RpbmcgQUVTIDI1NiBiaXQgQ0JDIGVuY3J5cHRpb24iIDw8IGVuZGw7CisJCQl1bml0VGVzdEVsZW1lbnRDb250ZW50RW5jcnlwdChpbXBsLCBrcy0+Y2xvbmUoKSwgRU5DUllQVF9BRVMyNTZfQ0JDLCBmYWxzZSk7CisJCQl1bml0VGVzdEVsZW1lbnRDb250ZW50RW5jcnlwdChpbXBsLCBrcywgRU5DUllQVF9BRVMyNTZfQ0JDLCB0cnVlKTsKKwkJfQorCisJCWVsc2UKKwkJCWNlcnIgPDwgIlNraXBwZWQgQUVTIEVsZW1lbnQgdGVzdHMiIDw8IGVuZGw7CisKKwkJLy8gMTkyIDNERVMKKwkJa3MgPSBYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+a2V5U3ltbWV0cmljKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV8zREVTXzE5Mik7CisJCWtzLT5zZXRLZXkoKHVuc2lnbmVkIGNoYXIgKikgc19rZXlTdHIsIDI0KTsKKworCQljZXJyIDw8ICJVbml0IHRlc3RpbmcgM0RFUyBDQkMgZW5jcnlwdGlvbiIgPDwgZW5kbDsKKwkJdW5pdFRlc3RFbGVtZW50Q29udGVudEVuY3J5cHQoaW1wbCwga3MtPmNsb25lKCksIEVOQ1JZUFRfM0RFU19DQkMsIGZhbHNlKTsKKwkJdW5pdFRlc3RFbGVtZW50Q29udGVudEVuY3J5cHQoaW1wbCwga3MsIEVOQ1JZUFRfM0RFU19DQkMsIHRydWUpOworI2lmbmRlZiBYU0VDX05PX1hBTEFOCisJCWlmIChnX2hhdmVBRVMpIHsKKwkJCWNlcnIgPDwgIlVuaXQgdGVzdGluZyBDaXBoZXJSZWZlcmVuY2UgY3JlYXRpb24gYW5kIGRlY3J5cHRpb24iIDw8IGVuZGw7CisJCQl1bml0VGVzdENpcGhlclJlZmVyZW5jZShpbXBsKTsKKwkJfQorCQllbHNlIHsKKwkJCWNlcnIgPDwgIlNraXBwZWQgQ2lwaGVyIFJlZmVyZW5jZSBUZXN0ICh1c2VzIEFFUykiIDw8IGVuZGw7CisJCX0KKyNlbHNlCisJCWNlcnIgPDwgIlNraXBwZWQgQ2lwaGVyIFJlZmVyZW5jZSBUZXN0IChyZXF1aXJlcyBYUGF0aCkiIDw8IGVuZGw7CisjZW5kaWYKKwkJY2VyciA8PCAiTWlzYy4gZW5jcnlwdGlvbiB0ZXN0cyIgPDwgZW5kbDsKKwkJdW5pdFRlc3RTbWFsbEVsZW1lbnQoaW1wbCk7CisJfQorCWNhdGNoIChYU0VDQ3J5cHRvRXhjZXB0aW9uICZlKQorCXsKKwkJY2VyciA8PCAiZmFpbGVkXG4iOworCQljZXJyIDw8ICJBIGNyeXB0b2dyYXBoaWMgZXJyb3Igb2NjdXJlZCBkdXJpbmcgZW5jcnlwdGlvbiB1bml0IHRlc3RzXG4gICBNZXNzYWdlOiAiCisJCTw8IGUuZ2V0TXNnKCkgPDwgZW5kbDsKKwkJZXhpdCgxKTsKKwl9CisKK30KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgVGVzdCBlbmNyeXB0L0RlY3J5cHQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgdGVzdEVuY3J5cHQoRE9NSW1wbGVtZW50YXRpb24gKmltcGwpIHsKKworCWNlcnIgPDwgIkNyZWF0aW5nIGEga25vd24gZG9jIGVuY3J5cHRpbmcgYSBwb3J0aW9uIG9mIGl0IiA8PCBlbmRsOworCQorCS8vIENyZWF0ZSBhIGRvY3VtZW50CisgICAgCisJRE9NRG9jdW1lbnQgKiBkb2MgPSBjcmVhdGVUZXN0RG9jKGltcGwpOworCURPTU5vZGUgKiBjYXRlZ29yeU5vZGUgPSBmaW5kTm9kZShkb2MsIE1BS0VfVU5JQ09ERV9TVFJJTkcoImNhdGVnb3J5IikpOworCWlmIChjYXRlZ29yeU5vZGUgPT0gTlVMTCkgeworCisJCWNlcnIgPDwgIkVycm9yIGZpbmRpbmcgY2F0ZWdvcnkgbm9kZSBmb3IgZW5jcnlwdGlvbiB0ZXN0IiA8PCBlbmRsOworCQlleGl0KDEpOworCisJfQorCisJLy8gQ2hlY2sgc2lnbmF0dXJlIGZ1bmN0aW9ucworCisJWFNFQ1Byb3ZpZGVyIHByb3Y7CisJWEVOQ0NpcGhlciAqIGNpcGhlcjsKKworCXRyeSB7CisJCQorCQkvKgorCQkgKiBOb3cgd2UgaGF2ZSBhIGRvY3VtZW50LCBmaW5kIHRoZSBkYXRhIG5vZGUuCisJCSAqLworCisJCS8vIEdlbmVyYXRlIGEga2V5CisJCXVuc2lnbmVkIGNoYXIgcmFuZG9tQnVmZmVyWzI1Nl07CisKKwkJaWYgKFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5nZXRSYW5kb20ocmFuZG9tQnVmZmVyLCAyNTYpICE9IDI1NikgeworCisJCQljZXJyIDw8ICJVbmFibGUgdG8gb2J0YWluIGVub3VnaCByYW5kb20gYnl0ZXMgZnJvbSBDcnlwdG8gUHJvdmlkZXIiIDw8IGVuZGw7CisJCQlleGl0KDEpOworCQkKKwkJfQorCisJCWNpcGhlciA9IHByb3YubmV3Q2lwaGVyKGRvYyk7CisJCWNpcGhlci0+c2V0WEVOQ05TUHJlZml4KE1BS0VfVU5JQ09ERV9TVFJJTkcoInhlbmMiKSk7CisJCWNpcGhlci0+c2V0UHJldHR5UHJpbnQodHJ1ZSk7CisKKwkJLy8gU2V0IGEga2V5CisKKwkJWFNFQ0NyeXB0b1N5bW1ldHJpY0tleSAqIGsgPSAKKwkJCVhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5rZXlTeW1tZXRyaWMoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZXzNERVNfMTkyKTsKKwkJay0+c2V0S2V5KCh1bnNpZ25lZCBjaGFyICopIHJhbmRvbUJ1ZmZlciwgMjQpOworCQljaXBoZXItPnNldEtleShrKTsKKwkKKwkJLy8gTm93IGVuY3J5cHQhCisJCWNlcnIgPDwgIlBlcmZvcm1pbmcgM0RFUyBlbmNyeXB0aW9uIG9uIDxjYXRlZ29yeT4gZWxlbWVudCAuLi4gIjsKKwkJY2lwaGVyLT5lbmNyeXB0RWxlbWVudCgoRE9NRWxlbWVudCAqKSBjYXRlZ29yeU5vZGUsIEVOQ1JZUFRfM0RFU19DQkMpOworCisJCS8vIEFkZCBhIEtleUluZm8KKwkJY2VyciA8PCAiZG9uZVxuQXBwZW5kaW5nIGEgPEtleU5hbWU+IC4uLiAiOworCQlYRU5DRW5jcnlwdGVkRGF0YSAqIGVuY3J5cHRlZERhdGEgPSBjaXBoZXItPmdldEVuY3J5cHRlZERhdGEoKTsKKwkJZW5jcnlwdGVkRGF0YS0+YXBwZW5kS2V5TmFtZShzX3RzdEtleU5hbWUpOworCQljZXJyIDw8ICJkb25lXG5BZGRpbmcgRW5jb2RpbmcgYW5kIE1pbWVUeXBlIC4uLiAiOworCisJCS8vIEFkZCBNaW1lVHlwZSBhbmQgRW5jb2RpbmcKKwkJZW5jcnlwdGVkRGF0YS0+c2V0RW5jb2Rpbmcoc190c3RFbmNvZGluZyk7CisJCWVuY3J5cHRlZERhdGEtPnNldE1pbWVUeXBlKHNfdHN0TWltZVR5cGUpOworCisJCS8vIFNldCBhIEtleVNpemUKKwkJY2VyciA8PCAiZG9uZVxuU2V0dGluZyA8S2V5U2l6ZT4gLi4uICI7CisJCWVuY3J5cHRlZERhdGEtPmdldEVuY3J5cHRpb25NZXRob2QoKS0+c2V0S2V5U2l6ZSgxOTIpOworCisJCWNlcnIgPDwgImRvbmVcblNlYXJjaGluZyBmb3IgPGNhdGVnb3J5PiAuLi4gIjsKKworCQlET01Ob2RlICogdCA9IGZpbmROb2RlKGRvYywgTUFLRV9VTklDT0RFX1NUUklORygiY2F0ZWdvcnkiKSk7CisJCWlmICh0ICE9IE5VTEwpIHsKKworCQkJY2VyciA8PCAiZm91bmQhXG5FcnJvciAtIGNhdGVnb3J5IGlzIG5vdCBlbmNyeXB0ZWQiIDw8IGVuZGw7CisJCQlleGl0KDEpOworCisJCX0KKwkJZWxzZQorCQkJY2VyciA8PCAibm90IGZvdW5kIChPSyAtIG5vdyBlbmNyeXB0ZWQpIiA8PCBlbmRsOworCisJCS8vIE5vdyB0cnkgdG8gZW5jcnlwdCB0aGUgS2V5CisKKwkJY2VyciA8PCAiRW5jcnlwdGluZyBzeW1tZXRyaWMga2V5IC4uLiAiIDw8IGVuZGw7CisKKwkJWFNFQ0NyeXB0b1N5bW1ldHJpY0tleSAqIGtlazsKKwkJaWYgKGdfaGF2ZUFFUykgeworCisJCQlrZWsgPSBYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+a2V5U3ltbWV0cmljKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV9BRVNfMTI4KTsKKwkJCWtlay0+c2V0S2V5KCh1bnNpZ25lZCBjaGFyICopIHNfa2V5U3RyLCAxNik7CisJCX0KKwkJZWxzZSB7CisJCQlrZWsgPSBYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+a2V5U3ltbWV0cmljKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV8zREVTXzE5Mik7CisJCQlrZWstPnNldEtleSgodW5zaWduZWQgY2hhciAqKSBzX2tleVN0ciwgMjQpOworCisJCX0KKwkJCisJCWNpcGhlci0+c2V0S0VLKGtlayk7CisKKwkJWEVOQ0VuY3J5cHRlZEtleSAqIGVuY3J5cHRlZEtleTsKKwkJaWYgKGdfaGF2ZUFFUykKKwkJCWVuY3J5cHRlZEtleSA9IGNpcGhlci0+ZW5jcnlwdEtleShyYW5kb21CdWZmZXIsIDI0LCBFTkNSWVBUX0tXX0FFUzEyOCk7CisJCWVsc2UKKwkJCWVuY3J5cHRlZEtleSA9IGNpcGhlci0+ZW5jcnlwdEtleShyYW5kb21CdWZmZXIsIDI0LCBFTkNSWVBUX0tXXzNERVMpOworCQljZXJyIDw8ICJkb25lISIgPDwgZW5kbDsKKworCQljZXJyIDw8ICJBZGRpbmcgQ2FycmllZEtleU5hbWUgYW5kIFJlY2lwaWVudCB0byBlbmNyeXB0ZWRLZXkgLi4uICIgPDwgZW5kbDsKKwkJZW5jcnlwdGVkS2V5LT5zZXRDYXJyaWVkS2V5TmFtZShzX3RzdENhcnJpZWRLZXlOYW1lKTsKKwkJZW5jcnlwdGVkS2V5LT5zZXRSZWNpcGllbnQoc190c3RSZWNpcGllbnQpOworCQljZXJyIDw8ICJkb25lISIgPDwgZW5kbDsKKworCQllbmNyeXB0ZWREYXRhLT5hcHBlbmRFbmNyeXB0ZWRLZXkoZW5jcnlwdGVkS2V5KTsKKworCQlvdXRwdXREb2MoaW1wbCwgZG9jKTsKKworCQkvLyBPSyAtIE5vdyB3ZSB0cnkgdG8gZGVjcnlwdAorCQkvLyBGaW5kIHRoZSBFbmNyeXB0ZWREYXRhIG5vZGUKKwkJRE9NTm9kZSAqIG4gPSBmaW5kWEVOQ05vZGUoZG9jLCAiRW5jcnlwdGVkRGF0YSIpOworCisJCVhFTkNDaXBoZXIgKiBjaXBoZXIyID0gcHJvdi5uZXdDaXBoZXIoZG9jKTsKKworCQlYU0VDQ3J5cHRvU3ltbWV0cmljS2V5ICogazI7CisJCQorCQlpZiAoZ19oYXZlQUVTKSB7CisKKwkJCWsyID0gWFNFQ1BsYXRmb3JtVXRpbHM6OmdfY3J5cHRvUHJvdmlkZXItPmtleVN5bW1ldHJpYyhYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfQUVTXzEyOCk7CisJCQlrMi0+c2V0S2V5KCh1bnNpZ25lZCBjaGFyICopIHNfa2V5U3RyLCAxNik7CisJCX0KKwkJCisJCWVsc2UgeworCQkJazIgPSBYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+a2V5U3ltbWV0cmljKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV8zREVTXzE5Mik7CisJCQlrMi0+c2V0S2V5KCh1bnNpZ25lZCBjaGFyICopIHNfa2V5U3RyLCAyNCk7CisKKwkJfQorCisJCWNpcGhlcjItPnNldEtFSyhrMik7CisKKwkJY2VyciA8PCAiRGVjcnlwdGluZyAuLi4gIjsKKwkJY2lwaGVyMi0+ZGVjcnlwdEVsZW1lbnQoc3RhdGljX2Nhc3Q8RE9NRWxlbWVudCAqPihuKSk7CisJCWNlcnIgPDwgImRvbmUiIDw8IGVuZGw7CisKKwkJY2VyciA8PCAiQ2hlY2tpbmcgZm9yIDxjYXRlZ29yeT4gZWxlbWVudCAuLi4gIjsKKworCQl0ID0gZmluZE5vZGUoZG9jLCBNQUtFX1VOSUNPREVfU1RSSU5HKCJjYXRlZ29yeSIpKTsKKworCQlpZiAodCA9PSBOVUxMKSB7CisKKwkJCWNlcnIgPDwgIiBub3QgZm91bmQhXG5FcnJvciAtIGNhdGVnb3J5IGRpZCBub3QgZGVjcnlwdCBwcm9wZXJseSIgPDwgZW5kbDsKKwkJCWV4aXQoMSk7CisKKwkJfQorCQllbHNlCisJCQljZXJyIDw8ICJmb3VuZCIgPDwgZW5kbDsKKworCQljZXJyIDw8ICJDaGVja2luZyA8S2V5TmFtZT4gZWxlbWVudCBpcyBzZXQgY29ycmVjdGx5IC4uLiAiOworCisJCWVuY3J5cHRlZERhdGEgPSBjaXBoZXIyLT5nZXRFbmNyeXB0ZWREYXRhKCk7CisKKwkJaWYgKGVuY3J5cHRlZERhdGEgPT0gTlVMTCkgeworCQkJY2VyciA8PCAibm8gLSBjYW5ub3QgYWNjZXNzIEVuY3J5cHRlZERhdGEgZWxlbWVudCIgPDwgZW5kbDsKKwkJCWV4aXQoMSk7CisJCX0KKworCQlEU0lHS2V5SW5mb0xpc3QgKiBraWwgPSBlbmNyeXB0ZWREYXRhLT5nZXRLZXlJbmZvTGlzdCgpOworCQlpbnQgbmtpID0gKGludCkga2lsLT5nZXRTaXplKCk7CisJCWJvb2wgZm91bmROYW1lT0sgPSBmYWxzZTsKKworCQlpbnQgaTsKKwkJZm9yIChpID0gMDsgaSA8IG5raTsgKytpKSB7CisKKwkJCWlmIChraWwtPml0ZW0oaSktPmdldEtleUluZm9UeXBlKCkgPT0gRFNJR0tleUluZm86OktFWUlORk9fTkFNRSkgeworCisJCQkJRFNJR0tleUluZm9OYW1lICpuID0gKERTSUdLZXlJbmZvTmFtZSAqKSAoa2lsLT5pdGVtKGkpKTsKKwkJCQlpZiAoIXN0ckVxdWFscyhuLT5nZXRLZXlOYW1lKCksIHNfdHN0S2V5TmFtZSkpIHsKKwkJCQkJCisJCQkJCWNlcnIgPDwgIm5vISIgPDwgZW5kbDsKKwkJCQkJZXhpdCAoMSk7CisJCQkJfQorCQkJCWZvdW5kTmFtZU9LID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJCX0KKworCQl9CisKKwkJaWYgKGZvdW5kTmFtZU9LID09IGZhbHNlKSB7CisJCQljZXJyIDw8ICJubyEiIDw8IGVuZGw7CisJCQlleGl0KDEpOworCQl9CisJCWVsc2UKKwkJCWNlcnIgPDwgInllcy4iIDw8IGVuZGw7CisKKwkJY2VyciA8PCAiQ2hlY2tpbmcgQ2FycmllZEtleU5hbWUgYW5kIFJlY2lwaWVudCB2YWx1ZXMgLi4uICI7CisJCWJvb2wgZm91bmRDQ04gPSBmYWxzZTsKKwkJYm9vbCBmb3VuZFJlY2lwaWVudCA9IGZhbHNlOworCisJCWZvciAoaSA9IDA7IGkgPCBua2k7ICsraSkgeworCisJCQlpZiAoa2lsLT5pdGVtKGkpLT5nZXRLZXlJbmZvVHlwZSgpID09IERTSUdLZXlJbmZvOjpLRVlJTkZPX0VOQ1JZUFRFREtFWSkgeworCisJCQkJWEVOQ0VuY3J5cHRlZEtleSAqIHhlayA9IChYRU5DRW5jcnlwdGVkS2V5Kikoa2lsLT5pdGVtKGkpKTsKKworCQkJCWlmIChzdHJFcXVhbHMoeGVrLT5nZXRDYXJyaWVkS2V5TmFtZSgpLCBzX3RzdENhcnJpZWRLZXlOYW1lKSkgeworCisJCQkJCWZvdW5kQ0NOID0gdHJ1ZTsKKwkJCQl9CisJCQkJCisJCQkJaWYgKHN0ckVxdWFscyh4ZWstPmdldFJlY2lwaWVudCgpLCBzX3RzdFJlY2lwaWVudCkpIHsKKworCQkJCQlmb3VuZFJlY2lwaWVudCA9IHRydWU7CisJCQkJfQorCQkJfQorCQl9CisKKwkJaWYgKGZvdW5kQ0NOID09IGZhbHNlIHx8IGZvdW5kUmVjaXBpZW50ID09IGZhbHNlKSB7CisJCQljZXJyIDw8ICJubyEiIDw8IGVuZGw7CisJCQlleGl0KDEpOworCQl9CisJCWVsc2UgeworCQkJY2VyciA8PCAiT0siIDw8IGVuZGw7CisJCX0KKworCQljZXJyIDw8ICJDaGVja2luZyBNaW1lVHlwZSBhbmQgRW5jb2RpbmcgLi4uICI7CisJCWlmIChlbmNyeXB0ZWREYXRhLT5nZXRNaW1lVHlwZSgpID09IE5VTEwgfHwgIXN0ckVxdWFscyhlbmNyeXB0ZWREYXRhLT5nZXRNaW1lVHlwZSgpLCBzX3RzdE1pbWVUeXBlKSkgeworCQkJY2VyciA8PCAiQmFkIE1pbWVUeXBlIiA8PCBlbmRsOworCQkJZXhpdCgxKTsKKwkJfQorCQlpZiAoZW5jcnlwdGVkRGF0YS0+Z2V0RW5jb2RpbmcoKSA9PSBOVUxMIHx8ICFzdHJFcXVhbHMoZW5jcnlwdGVkRGF0YS0+Z2V0RW5jb2RpbmcoKSwgc190c3RFbmNvZGluZykpIHsKKwkJCWNlcnIgPDwgIkJhZCBFbmNvZGluZyIgPDwgZW5kbDsKKwkJCWV4aXQoMSk7CisJCX0KKworCQljZXJyIDw8ICJPSyIgPDwgZW5kbDsKKworCQljZXJyIDw8ICJDaGVja2luZyBLZXlTaXplIGluIEVuY3J5cHRpb25NZXRob2QgLi4uICI7CisJCWlmIChlbmNyeXB0ZWREYXRhLT5nZXRFbmNyeXB0aW9uTWV0aG9kKCkgPT0gTlVMTCB8fCBlbmNyeXB0ZWREYXRhLT5nZXRFbmNyeXB0aW9uTWV0aG9kKCktPmdldEtleVNpemUoKSAhPSAxOTIpIHsKKwkJCWNlcnIgPDwgIkJhZCBLZXlTaXplIiA8PCBlbmRsOworCQkJZXhpdCgxKTsKKwkJfQorCisJCWNlcnIgPDwgIk9LIiA8PCBlbmRsOworCisJfQorCWNhdGNoIChYU0VDRXhjZXB0aW9uICZlKQorCXsKKwkJY2VyciA8PCAiQW4gZXJyb3Igb2NjdXJlZCBkdXJpbmcgc2lnbmF0dXJlIHByb2Nlc3NpbmdcbiAgIE1lc3NhZ2U6ICI7CisJCWNoYXIgKiBjZSA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKGUuZ2V0TXNnKCkpOworCQljZXJyIDw8IGNlIDw8IGVuZGw7CisJCWRlbGV0ZSBjZTsKKwkJZXhpdCgxKTsKKwkJCisJfQkKKwljYXRjaCAoWFNFQ0NyeXB0b0V4Y2VwdGlvbiAmZSkKKwl7CisJCWNlcnIgPDwgIkEgY3J5cHRvZ3JhcGhpYyBlcnJvciBvY2N1cmVkIGR1cmluZyBzaWduYXR1cmUgcHJvY2Vzc2luZ1xuICAgTWVzc2FnZTogIgorCQk8PCBlLmdldE1zZygpIDw8IGVuZGw7CisJCWV4aXQoMSk7CisJfQorCisJb3V0cHV0RG9jKGltcGwsIGRvYyk7CisJZG9jLT5yZWxlYXNlKCk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBUZXN0IFhLTVMgYmFzaWNzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorI2lmIDAKK3ZvaWQgdGVzdFhLTVMoRE9NSW1wbGVtZW50YXRpb24gKmltcGwpIHsKKworCS8vIFRoaXMgaXMgcmVhbGx5IGEgcGxhY2UgaG9sZGVyCisKKwljZXJyIDw8ICJNYWtpbmcgUE9TVCBjYWxsIHRvIHNlcnZlciAuLi4gICIgPDwgZW5kbDsKKwkKKwkvLyBDcmVhdGUgYSBkb2N1bWVudAorICAgIAorCURPTURvY3VtZW50ICogZG9jID0gY3JlYXRlVGVzdERvYyhpbXBsKTsKKwlET01Ob2RlICogY2F0ZWdvcnlOb2RlID0gZmluZE5vZGUoZG9jLCBNQUtFX1VOSUNPREVfU1RSSU5HKCJjYXRlZ29yeSIpKTsKKworCS8qCisJWFNFQ1NPQVBSZXF1ZXN0b3JTaW1wbGVXaW4zMiByZXEoTUFLRV9VTklDT0RFX1NUUklORygiaHR0cDovL3pldXMvcG9zdC5waHAiKSk7CisKKwlyZXEuZG9SZXF1ZXN0KGRvYyk7CisJKi8KKworCWRvYy0+cmVsZWFzZSgpOworfQorI2VuZGlmCisJCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFByaW50IHVzYWdlIGluc3RydWN0aW9ucworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBwcmludFVzYWdlKHZvaWQpIHsKKworCWNlcnIgPDwgIlxuVXNhZ2U6IHh0ZXN0IFtvcHRpb25zXVxuXG4iOworCWNlcnIgPDwgIiAgICAgV2hlcmUgb3B0aW9ucyBhcmUgOlxuXG4iOworCWNlcnIgPDwgIiAgICAgLS1oZWxwLy1oXG4iOworCWNlcnIgPDwgIiAgICAgICAgIFRoaXMgaGVscCBtZXNzYWdlXG5cbiI7CisjaWYgZGVmaW5lZCAoSEFWRV9XSU5DQVBJKSAgJiYgZGVmaW5lZCAoSEFWRV9PUEVOU1NMKQorCWNlcnIgPDwgIiAgICAgLS13aW5jYXBpLy13XG4iOworCWNlcnIgPDwgIiAgICAgICAgIFVzZSBXaW5kb3dzIENyeXB0byBBUEkgZm9yIGNyeXB0byBmdW5jdGlvbmFsaXR5XG5cbiI7CisjZW5kaWYKKyNpZiBkZWZpbmVkIChIQVZFX05TUykKKwljZXJyIDw8ICIgICAgIC0tbnNzLy1uXG4iOworCWNlcnIgPDwgIiAgICAgICAgIFVzZSBOU1MgQ3J5cHRvIEFQSSBmb3IgY3J5cHRvIGZ1bmN0aW9uYWxpdHlcblxuIjsKKyNlbmRpZgorCWNlcnIgPDwgIiAgICAgLS1wcmludC1kb2NzLy1wXG4iOworCWNlcnIgPDwgIiAgICAgICAgIFByaW50IHRoZSB0ZXN0IGRvY3VtZW50c1xuXG4iOworCWNlcnIgPDwgIiAgICAgLS1zaWduYXR1cmUtb25seS8tc1xuIjsKKwljZXJyIDw8ICIgICAgICAgICBPbmx5IHJ1biBiYXNpYyBzaWduYXR1cmUgdGVzdFxuXG4iOworCWNlcnIgPDwgIiAgICAgLS1zaWduYXR1cmUtdW5pdC1vbmx5Ly10XG4iOworCWNlcnIgPDwgIiAgICAgICAgIE9ubHkgcnVuIHNpZ25hdHVyZSB1bml0IHRlc3RzXG5cbiI7CisJY2VyciA8PCAiICAgICAtLWVuY3J5cHRpb24tb25seS8tZVxuIjsKKwljZXJyIDw8ICIgICAgICAgICBPbmx5IHJ1biBiYXNpYyBlbmNyeXB0aW9uIHRlc3RcblxuIjsKKwljZXJyIDw8ICIgICAgIC0tZW5jcnlwdGlvbi11bml0LW9ubHkvLXVcbiI7CisJY2VyciA8PCAiICAgICAgICAgT25seSBydW4gZW5jcnlwdGlvbiB1bml0IHRlc3RzXG5cbiI7CisvLwljZXJyIDw8ICIgICAgIC0teGttcy1vbmx5Ly14XG4iOworLy8JY2VyciA8PCAiICAgICAgICAgT25seSBydW4gYmFzaWMgWEtNUyB0ZXN0XG5cbiI7CisKK30KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgTWFpbgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisKKwkvKiBXZSBvdXRwdXQgYSB2ZXJzaW9uIG51bWJlciB0byBvdmVyY29tZSBhICJmZWF0dXJlIiBpbiBNaWNyb3NvZnQncyBtZW1vcnkKKwkgICBsZWFrIGRldGVjdGlvbiAqLworCisJY2VyciA8PCAiRFNJRyBJbmZvIC0gVXNpbmcgQXBhY2hlIFhNTC1TZWN1cml0eS1DIExpYnJhcnkgdiIgPDwgCisgICAgICAgIFhTRUNfVkVSU0lPTl9NQUpPUiA8PAorCQkiLiIgPDwgWFNFQ19WRVJTSU9OX01FRElVTSA8PCAiLiIgPDwgWFNFQ19WRVJTSU9OX01JTk9SIDw8IAorICAgICAgICAiICgiIDw8IF9YU0VDX1ZFUlNJT05fRlVMTCA8PCAiKVxuIjsKKworCS8vIENoZWNrIHBhcmFtZXRlcnMKKwlib29sCQlkb0VuY3J5cHRpb25UZXN0ID0gdHJ1ZTsKKwlib29sCQlkb0VuY3J5cHRpb25Vbml0VGVzdHMgPSB0cnVlOworCWJvb2wJCWRvU2lnbmF0dXJlVGVzdCA9IHRydWU7CisJYm9vbAkJZG9TaWduYXR1cmVVbml0VGVzdHMgPSB0cnVlOworCWJvb2wJCWRvWEtNU1Rlc3QgPSB0cnVlOworCisJaW50IHBhcmFtQ291bnQgPSAxOworCisJd2hpbGUgKHBhcmFtQ291bnQgPCBhcmdjKSB7CisKKwkJaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLWhlbHAiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItaCIpID09IDApIHsKKwkJCXByaW50VXNhZ2UoKTsKKwkJCWV4aXQoMCk7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tcHJpbnQtZG9jcyIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi1wIikgPT0gMCkgeworCQkJZ19wcmludERvY3MgPSB0cnVlOworCQkJcGFyYW1Db3VudCsrOworCQl9CisjaWYgZGVmaW5lZChIQVZFX1dJTkNBUEkpICYmIGRlZmluZWQoSEFWRV9PUEVOU1NMKQorCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS13aW5jYXBpIikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXciKSA9PSAwKSB7CisJCQlnX3VzZVdpbkNBUEkgPSB0cnVlOworCQkJcGFyYW1Db3VudCsrOworCQl9CisjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfTlNTKQorCQllbHNlIGlmIChzdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLW5zcyIpID09IDAgfHwgc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLW4iKSA9PSAwKSB7CisJCQlnX3VzZU5TUyA9IHRydWU7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKyNlbmRpZgorCisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXNpZ25hdHVyZS1vbmx5IikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXMiKSA9PSAwKSB7CisJCQlkb0VuY3J5cHRpb25UZXN0ID0gZmFsc2U7CisJCQlkb0VuY3J5cHRpb25Vbml0VGVzdHMgPSBmYWxzZTsKKwkJCWRvU2lnbmF0dXJlVW5pdFRlc3RzID0gZmFsc2U7CisJCQlkb1hLTVNUZXN0ID0gZmFsc2U7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKwkJZWxzZSBpZiAoX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi0tZW5jcnlwdGlvbi1vbmx5IikgPT0gMCB8fCBfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLWUiKSA9PSAwKSB7CisJCQlkb1NpZ25hdHVyZVRlc3QgPSBmYWxzZTsKKwkJCWRvRW5jcnlwdGlvblVuaXRUZXN0cyA9IGZhbHNlOworCQkJZG9TaWduYXR1cmVVbml0VGVzdHMgPSBmYWxzZTsKKwkJCWRvWEtNU1Rlc3QgPSBmYWxzZTsKKwkJCXBhcmFtQ291bnQrKzsKKwkJfQorCQllbHNlIGlmIChfc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLS1lbmNyeXB0aW9uLXVuaXQtb25seSIpID09IDAgfHwgX3N0cmljbXAoYXJndltwYXJhbUNvdW50XSwgIi11IikgPT0gMCkgeworCQkJZG9FbmNyeXB0aW9uVGVzdCA9IGZhbHNlOworCQkJZG9TaWduYXR1cmVUZXN0ID0gZmFsc2U7CisJCQlkb1NpZ25hdHVyZVVuaXRUZXN0cyA9IGZhbHNlOworCQkJZG9YS01TVGVzdCA9IGZhbHNlOworCQkJcGFyYW1Db3VudCsrOworCQl9CisJCWVsc2UgaWYgKF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXNpZ25hdHVyZS11bml0LW9ubHkiKSA9PSAwIHx8IF9zdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItdCIpID09IDApIHsKKwkJCWRvRW5jcnlwdGlvblRlc3QgPSBmYWxzZTsKKwkJCWRvU2lnbmF0dXJlVGVzdCA9IGZhbHNlOworCQkJZG9FbmNyeXB0aW9uVW5pdFRlc3RzID0gZmFsc2U7CisJCQlkb1hLTVNUZXN0ID0gZmFsc2U7CisJCQlwYXJhbUNvdW50Kys7CisJCX0KKy8qCQllbHNlIGlmIChzdHJpY21wKGFyZ3ZbcGFyYW1Db3VudF0sICItLXhrbXMtb25seSIpID09IDAgfHwgc3RyaWNtcChhcmd2W3BhcmFtQ291bnRdLCAiLXgiKSA9PSAwKSB7CisJCQlkb0VuY3J5cHRpb25UZXN0ID0gZmFsc2U7CisJCQlkb1NpZ25hdHVyZVRlc3QgPSBmYWxzZTsKKwkJCWRvRW5jcnlwdGlvblVuaXRUZXN0cyA9IGZhbHNlOworCQkJZG9TaWduYXR1cmVVbml0VGVzdHMgPSBmYWxzZTsKKwkJCXBhcmFtQ291bnQrKzsKKyAgICAgICAgICAgIH0qLworCQllbHNlIHsKKwkJCXByaW50VXNhZ2UoKTsKKwkJCXJldHVybiAyOworCQl9CisJfQorCisKKyNpZiBkZWZpbmVkIChfREVCVUcpICYmIGRlZmluZWQgKF9NU0NfVkVSKSAmJiBkZWZpbmVkIChfWFNFQ19ET19NRU1ERUJVRykKKworCS8vIERvIHNvbWUgbWVtb3J5IGRlYnVnZ2luZyB1bmRlciBWaXN1YWwgQysrCisKKwlfQ3J0TWVtU3RhdGUgczEsIHMyLCBzMzsKKworCS8vIEF0IHRoaXMgcG9pbnQgd2UgYXJlIGFib3V0IHRvIHN0YXJ0IHJlYWxseSB1c2luZyBYU0VDLCBzbworCS8vIFRha2UgYSAiYmVmb3JlIiBjaGVja3BvaW5nCisKKwlfQ3J0TWVtQ2hlY2twb2ludCggJnMxICk7CisKKyNlbmRpZgorCisJLy8gRmlyc3QgaW5pdGlhbGlzZSB0aGUgWE1MIHN5c3RlbQorCisJdHJ5IHsKKworCQlYTUxQbGF0Zm9ybVV0aWxzOjpJbml0aWFsaXplKCk7CisjaWZuZGVmIFhTRUNfTk9fWEFMQU4KKwkJWFBhdGhFdmFsdWF0b3I6OmluaXRpYWxpemUoKTsKKwkJWGFsYW5UcmFuc2Zvcm1lcjo6aW5pdGlhbGl6ZSgpOworI2VuZGlmCisJCVhTRUNQbGF0Zm9ybVV0aWxzOjpJbml0aWFsaXNlKCk7CisKKyNpZiBkZWZpbmVkIChIQVZFX09QRU5TU0wpICYmIGRlZmluZWQgKEhBVkVfV0lOQ0FQSSkKKwkJaWYgKGdfdXNlV2luQ0FQSSkgeworCQkJLy8gU2V0dXAgZm9yIFdpbmRvd3MgQ3J5cHQgQVBJCisJCQlXaW5DQVBJQ3J5cHRvUHJvdmlkZXIgKiBjcDsKKwkJCS8vIEZpcnN0IHNldCB3aW5kb3dzIGFzIHRoZSBjcnlwdG8gcHJvdmlkZXIKKwkJCWNwID0gbmV3IFdpbkNBUElDcnlwdG9Qcm92aWRlcigpOworCQkJWFNFQ1BsYXRmb3JtVXRpbHM6OlNldENyeXB0b1Byb3ZpZGVyKGNwKTsKKwkJfQorI2VuZGlmCisjaWYgZGVmaW5lZCAoSEFWRV9OU1MpCisJCWlmIChnX3VzZU5TUykgeworCQkJLy8gU2V0dXAgZm9yIE5TUyBDcnlwdCBBUEkKKwkJCU5TU0NyeXB0b1Byb3ZpZGVyICogY3A7CisJCQkvLyBGaXJzdCBzZXQgd2luZG93cyBhcyB0aGUgY3J5cHRvIHByb3ZpZGVyCisJCQljcCA9IG5ldyBOU1NDcnlwdG9Qcm92aWRlcigpOworCQkJWFNFQ1BsYXRmb3JtVXRpbHM6OlNldENyeXB0b1Byb3ZpZGVyKGNwKTsKKwkJfQorI2VuZGlmCisKKworCX0KKwljYXRjaCAoY29uc3QgWE1MRXhjZXB0aW9uICZlKSB7CisKKwkJY2VyciA8PCAiRXJyb3IgZHVyaW5nIGluaXRpYWxpc2F0aW9uIG9mIFhlcmNlcyIgPDwgZW5kbDsKKwkJY2VyciA8PCAiRXJyb3IgTWVzc2FnZSA9IDogIgorCQkgICAgIDw8IGUuZ2V0TWVzc2FnZSgpIDw8IGVuZGw7CisKKwl9CisKKwl7CisKKwkJLy8gU2V0IHVwIGZvciB0ZXN0cworCisJCWdfaGF2ZUFFUyA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5hbGdvcml0aG1TdXBwb3J0ZWQoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZX0FFU18xMjgpOworCisJCS8vIFNldHVwIGZvciBidWlsZGluZyBkb2N1bWVudHMKKworCQlYTUxDaCB0ZW1wU3RyWzEwMF07CisJCVhNTFN0cmluZzo6dHJhbnNjb2RlKCJDb3JlIiwgdGVtcFN0ciwgOTkpOyAgICAKKwkJRE9NSW1wbGVtZW50YXRpb24gKmltcGwgPSBET01JbXBsZW1lbnRhdGlvblJlZ2lzdHJ5OjpnZXRET01JbXBsZW1lbnRhdGlvbih0ZW1wU3RyKTsKKworCQkvLyBPdXRwdXQgc29tZSBpbmZvCisJCWNoYXIgKiBwcm92TmFtZSA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5nZXRQcm92aWRlck5hbWUoKSk7CisJCWNlcnIgPDwgIkNyeXB0byBQcm92aWRlciBzdHJpbmcgOiAiIDw8IHByb3ZOYW1lIDw8IGVuZGw7CisJCVhTRUNfUkVMRUFTRV9YTUxDSChwcm92TmFtZSk7CisKKwkJLy8gVGVzdCBzaWduYXR1cmUgZnVuY3Rpb25zCisJCWlmIChkb1NpZ25hdHVyZVRlc3QpIHsKKwkJCWNlcnIgPDwgZW5kbCA8PCAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IjsKKwkJCWNlcnIgPDwgZW5kbCA8PCAiVGVzdGluZyBTaWduYXR1cmUgRnVuY3Rpb24iOworCQkJY2VyciA8PCBlbmRsIDw8ICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iOworCQkJY2VyciA8PCBlbmRsIDw8IGVuZGw7CisKKwkJCXRlc3RTaWduYXR1cmUoaW1wbCk7CisJCX0KKworCQkvLyBUZXN0IHNpZ25hdHVyZSBmdW5jdGlvbnMKKwkJaWYgKGRvU2lnbmF0dXJlVW5pdFRlc3RzKSB7CisJCQljZXJyIDw8IGVuZGwgPDwgIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSI7CisJCQljZXJyIDw8IGVuZGwgPDwgIlBlcmZvcm1pbmcgU2lnbmF0dXJlIFVuaXQgVGVzdHMiOworCQkJY2VyciA8PCBlbmRsIDw8ICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iOworCQkJY2VyciA8PCBlbmRsIDw8IGVuZGw7CisKKwkJCXVuaXRUZXN0U2lnbmF0dXJlKGltcGwpOworCQl9CisKKwkJLy8gVGVzdCBlbmNyeXB0IGZ1bmN0aW9uCisJCWlmIChkb0VuY3J5cHRpb25UZXN0KSB7CisJCQljZXJyIDw8IGVuZGwgPDwgIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSI7CisJCQljZXJyIDw8IGVuZGwgPDwgIlRlc3RpbmcgRW5jcnlwdGlvbiBGdW5jdGlvbiI7CisJCQljZXJyIDw8IGVuZGwgPDwgIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSI7CisJCQljZXJyIDw8IGVuZGwgPDwgZW5kbDsKKworCQkJdGVzdEVuY3J5cHQoaW1wbCk7CisJCX0KKworCQkvLyBSdW5uaW5nIEVuY3J5cHRpb24gVW5pdCB0ZXN0CisJCWlmIChkb0VuY3J5cHRpb25Vbml0VGVzdHMpIHsKKwkJCWNlcnIgPDwgZW5kbCA8PCAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IjsKKwkJCWNlcnIgPDwgZW5kbCA8PCAiUGVyZm9ybWluZyBFbmNyeXB0aW9uIFVuaXQgVGVzdHMiOworCQkJY2VyciA8PCBlbmRsIDw8ICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iOworCQkJY2VyciA8PCBlbmRsIDw8IGVuZGw7CisKKwkJCXVuaXRUZXN0RW5jcnlwdChpbXBsKTsKKwkJfQorLyoKKwkJLy8gUnVubmluZyBYS01TIEJhc2UgdGVzdAorCQlpZiAoZG9YS01TVGVzdCkgeworCQkJY2VyciA8PCBlbmRsIDw8ICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iOworCQkJY2VyciA8PCBlbmRsIDw8ICJQZXJmb3JtaW5nIFhLTVMgRnVuY3Rpb24iOworCQkJY2VyciA8PCBlbmRsIDw8ICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iOworCQkJY2VyciA8PCBlbmRsIDw8IGVuZGw7CisKKwkJCXRlc3RYS01TKGltcGwpOworCQl9CisqLworCQljZXJyIDw8IGVuZGwgPDwgIkFsbCB0ZXN0cyBwYXNzZWQiIDw8IGVuZGw7CisKKwl9CisKKwlYU0VDUGxhdGZvcm1VdGlsczo6VGVybWluYXRlKCk7CisjaWZuZGVmIFhTRUNfTk9fWEFMQU4KKwlYYWxhblRyYW5zZm9ybWVyOjp0ZXJtaW5hdGUoKTsKKwlYUGF0aEV2YWx1YXRvcjo6dGVybWluYXRlKCk7CisjZW5kaWYKKwlYTUxQbGF0Zm9ybVV0aWxzOjpUZXJtaW5hdGUoKTsKKworI2lmIGRlZmluZWQgKF9ERUJVRykgJiYgZGVmaW5lZCAoX01TQ19WRVIpICYmIGRlZmluZWQgKF9YU0VDX0RPX01FTURFQlVHKQorCisJX0NydE1lbUNoZWNrcG9pbnQoICZzMiApOworCisJaWYgKCBfQ3J0TWVtRGlmZmVyZW5jZSggJnMzLCAmczEsICZzMiApICYmICgKKwkJczMubENvdW50c1swXSA+IDAgfHwKKwkJczMubENvdW50c1sxXSA+IDEgfHwKKwkJLy8gczMubENvdW50c1syXSA+IDIgfHwgIFdlIGRvbid0IHdvcnJ5IGFib3V0IEMgUnVudGltZQorCQlzMy5sQ291bnRzWzNdID4gMCB8fAorCQlzMy5sQ291bnRzWzRdID4gMCkpIHsKKworCQkvLyBOb3RlIHRoYXQgdGhlcmUgaXMgZ2VuZXJhbGx5IDEgTm9ybWFsIGFuZCAxIENSVCBibG9jaworCQkvLyBzdGlsbCB0YWtlbi4gIDEgaXMgZnJvbSBYYWxhbiBhbmQgMSBmcm9tIHN0ZGlvCisKKwkJLy8gU2VuZCBhbGwgcmVwb3J0cyB0byBTVERPVVQKKwkJX0NydFNldFJlcG9ydE1vZGUoIF9DUlRfV0FSTiwgX0NSVERCR19NT0RFX0ZJTEUgKTsKKwkJX0NydFNldFJlcG9ydEZpbGUoIF9DUlRfV0FSTiwgX0NSVERCR19GSUxFX1NURE9VVCApOworCQlfQ3J0U2V0UmVwb3J0TW9kZSggX0NSVF9FUlJPUiwgX0NSVERCR19NT0RFX0ZJTEUgKTsKKwkJX0NydFNldFJlcG9ydEZpbGUoIF9DUlRfRVJST1IsIF9DUlREQkdfRklMRV9TVERPVVQgKTsKKwkJX0NydFNldFJlcG9ydE1vZGUoIF9DUlRfQVNTRVJULCBfQ1JUREJHX01PREVfRklMRSApOworCQlfQ3J0U2V0UmVwb3J0RmlsZSggX0NSVF9BU1NFUlQsIF9DUlREQkdfRklMRV9TVERPVVQgKTsKKworCQkvLyBEdW1weSBtZW1vcnkgc3RhdHMKKworIAkJX0NydE1lbUR1bXBBbGxPYmplY3RzU2luY2UoICZzMyApOworCSAgICBfQ3J0TWVtRHVtcFN0YXRpc3RpY3MoICZzMyApOworCX0KKworCS8vIE5vdyB0dXJuIG9mZiBtZW1vcnkgbGVhayBjaGVja2luZyBhbmQgZW5kIGFzIHRoZXJlIGFyZSBzb21lIAorCS8vIEdsb2JhbHMgdGhhdCBhcmUgYWxsb2NhdGVkIHRoYXQgZ2V0IHNlZW4gYXMgbGVha3MgKFhhbGFuPykKKworCWludCBkYmdGbGFnID0gX0NydFNldERiZ0ZsYWcoX0NSVERCR19SRVBPUlRfRkxBRyk7CisJZGJnRmxhZyAmPSB+KF9DUlREQkdfTEVBS19DSEVDS19ERik7CisJX0NydFNldERiZ0ZsYWcoIGRiZ0ZsYWcgKTsKKworI2VuZGlmCisKKworCXJldHVybiAwOworCit9CmRpZmYgLS1naXQgYS9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTUJhc2UuY3BwIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1CYXNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNmFhMTdmCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1CYXNlLmNwcApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogVFhGTUJhc2UgOj0gQmFzZSAodmlydHVhbCkgY2xhc3MgdGhhdCBkZWZpbmVzIGEgRFNJRyBUcmFuc2Zvcm1lcgorICogR2l2ZW4gdGhpcyBpcyBhIHB1cmUgdmlydHVhbCBjbGFzcywgdGhpcyBmaWxlIG9ubHkgaW1wbGVtZW50cyBmcmllbmQgZnVuY3Rpb25zCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTUJhc2UuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgRW5zdXJlIG5hbWUgc3BhY2VzIGFyZSByZXNldCB3aGVuIHRoaXMgaXMgZGVzdHJveWVkCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUWEZNQmFzZTo6flRYRk1CYXNlKCkgeworCisJaWYgKG1wX25zZSAhPSBOVUxMKSB7CisKKwkJbXBfbnNlLT5kZWxldGVBZGRlZE5hbWVzcGFjZXMoKTsKKwkJZGVsZXRlIG1wX25zZTsKKwkJbXBfbnNlID0gTlVMTDsKKworCX0KKworfQorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgRm9yIGV4cGFuZGluZyBuYW1lIHNwYWNlcyB3aGVuIG5lY2Vzc2FyeQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYm9vbCBUWEZNQmFzZTo6bmFtZVNwYWNlc0V4cGFuZGVkKHZvaWQpIHsKKworCWlmIChtcF9uc2UgIT0gTlVMTCkKKwkJcmV0dXJuIHRydWU7CisKKwlpZiAoaW5wdXQgIT0gTlVMTCkKKwkJcmV0dXJuIGlucHV0LT5uYW1lU3BhY2VzRXhwYW5kZWQoKTsKKworCXJldHVybiBmYWxzZTsKKworfQorCit2b2lkIFRYRk1CYXNlOjpleHBhbmROYW1lU3BhY2VzKHZvaWQpIHsKKworCWlmIChtcF9uc2UgIT0gTlVMTCB8fCAoaW5wdXQgIT0gTlVMTCAmJiBpbnB1dC0+bmFtZVNwYWNlc0V4cGFuZGVkKCkpKQorCQlyZXR1cm47CQkvLyBBbHJlYWR5IGRvbmUKKwkKKwlYU0VDbmV3KG1wX25zZSwgWFNFQ05hbWVTcGFjZUV4cGFuZGVyKG1wX2V4cGFuc2lvbkRvYykpOworCisJbXBfbnNlLT5leHBhbmROYW1lU3BhY2VzKCk7CisKK30KKwordm9pZCBUWEZNQmFzZTo6ZGVsZXRlRXhwYW5kZWROYW1lU3BhY2VzKHZvaWQpIHsKKworCWlmIChtcF9uc2UgIT0gTlVMTCkgeworCisJCW1wX25zZS0+ZGVsZXRlQWRkZWROYW1lc3BhY2VzKCk7CisJCWRlbGV0ZSBtcF9uc2U7CisJCW1wX25zZSA9IE5VTEw7CisKKwl9CisKKwlpZiAoaW5wdXQgIT0gTlVMTCkKKwkJaW5wdXQtPmRlbGV0ZUV4cGFuZGVkTmFtZVNwYWNlcygpOworCit9CQkKKwordm9pZCBUWEZNQmFzZTo6YWN0aXZhdGVDb21tZW50cyh2b2lkKSB7CisKKwlpZiAoaW5wdXQgICE9IE5VTEwpIHsKKworCQkvLyBPbmx5IGFjdGl2YXRlIHRoZW0gaWYgb3VyIGlucHV0IGhhZCB0aGVtCisKKwkJa2VlcENvbW1lbnRzID0gaW5wdXQtPmtlZXBDb21tZW50czsKKworCX0KKworCWVsc2UgCisJCQorCQlrZWVwQ29tbWVudHMgPSB0cnVlOworCit9CisKZGlmZiAtLWdpdCBhL2Mvc3JjL3RyYW5zZm9ybWVycy9UWEZNQmFzZS5ocHAgYi9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTUJhc2UuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhMWFjNTcKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTUJhc2UuaHBwCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBUWEZNQmFzZSA6PSBCYXNlICh2aXJ0dWFsKSBjbGFzcyB0aGF0IGRlZmluZXMgYSBEU0lHIFRyYW5zZm9ybWVyCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFRYRk1CQVNFX0lOQ0xVREUKKyNkZWZpbmUgVFhGTUJBU0VfSU5DTFVERQorCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2Nhbm9uL1hTRUNDMTRuMjAwMTAzMTUuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ05hbWVTcGFjZUV4cGFuZGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNYUGF0aE5vZGVMaXN0LmhwcD4KKworLy8gWGFsYW4KKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9CaW5JbnB1dFN0cmVhbS5ocHA+CisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworY2xhc3MgVFhGTUNoYWluOworCisvKiogQGRlZmdyb3VwIGludGVybmFsIEludGVybmFsIENsYXNzZXMKKyAqIENsYXNzZXMgbWFya2VkIGFzIDxiPmludGVybmFsPC9iPiBhcmUgdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSB4bWwtc2VjdXJpdHktYworICogbGlicmFyeS4gIEdlbmVyYWxseSB0aGVyZSBzaG91bGQgYmUgbm8gcmVxdWlyZW1lbnQgZm9yIHRoZXNlIGNsYXNzZXMKKyAqIHRvIGJlIG1hbmlwdWxhdGVkIGRpcmVjdGx5IGJ5IHRoZSBjYWxsaW5nIGFwcGxpY2F0YWlvbi4KKyAqIEB7CisgKi8KKworLyoqCisgKiBcYnJpZWYgQmFzZSBjbGFzcyBmb3IgdHJhbnNmb3JtZXJzCisgKgorICogVHJhbnNmb3JtZXJzIGFyZSBpbnRlcm5hbCBjbGFzc2VzIHdpdGhpbiB0aGUgeG1sLXNlY3VyaXR5LWMgbGlicmFyeQorICogdGhhdCBhY3R1YWxseSBwZXJmb3JtIHRoZSB0cmFuc2Zvcm1hdGlvbnMuCisgKgorICogVXNlcnMgaW50ZXJmYWNlIHdpdGggdGhlIGxpYnJhcnkgc2hvdWxkIHVzZSB0aGUgRFNJR1RyYW5zZm9ybSBjbGFzc2VzLAorICogd2hpY2ggZGVmaW5lIHRoZSBET00gbm9kZXMgYW5kIGFsbG93IHVzZXJzIHRvIG1hbmlwdWxhdGUgdGhlIGFjdHVhbAorICogdHJhbnNmb3JtIGRlZmluZWQuCisgKi8KKworCitjbGFzcyBEU0lHX0VYUE9SVCBUWEZNQmFzZSB7CisKK3Byb3RlY3RlZDoKKworCVRYRk1CYXNlCQkJCSppbnB1dDsJCQkvLyBUaGUgaW5wdXQgc291cmNlIHRoYXQgd2UgcmVhZCBmcm9tCisJYm9vbAkJCQkJa2VlcENvbW1lbnRzOwkvLyBFYWNoIHRyYW5zZm9ybSBuZWVkcyB0byB0ZWxsIHRoZSBuZXh0IHdoZXRoZXIgY29tbWVudHMgYXJlIHN0aWxsIGluCisJWFNFQ05hbWVTcGFjZUV4cGFuZGVyCSogbXBfbnNlOwkJLy8gRm9yIGV4cGFuZGluZyBkb2N1bWVudCBuYW1lIHNwYWNlcworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudAkJCQkKKwkJCQkJCQkqIG1wX2V4cGFuc2lvbkRvYzsJLy8gRm9yIGV4cGFuZGluZworCVhTRUNYUGF0aE5vZGVMaXN0CQltX1hQYXRoTWFwOwkJLy8gRm9yIG5vZGUgbGlzdHMgaWYgbmVjZXNzYXJ5CisKK3B1YmxpYzoKKworCVRYRk1CYXNlKFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqZG9jKSAKKwkJe2lucHV0ID0gTlVMTDsga2VlcENvbW1lbnRzID0gdHJ1ZTsgbXBfbnNlID0gTlVMTDsgbXBfZXhwYW5zaW9uRG9jID0gZG9jO30KKwl2aXJ0dWFsIH5UWEZNQmFzZSgpOworCisJLy8gRm9yIGdldHRpbmcvc2V0dGluZyBpbnB1dC9vdXRwdXQgdHlwZQorCisJZW51bSBpb1R5cGUgeworCisJCU5PTkUJCQk9IDEsCQkJLy8gRm9yIHdoZW4gdGhlcmUgaXMgbm8gSW5wdXQKKwkJQllURV9TVFJFQU0JCT0gMiwKKwkJRE9NX05PREVTCQk9IDMKKworCX07CisKKwllbnVtIG5vZGVUeXBlIHsKKworCQlET01fTk9ERV9OT05FCQkJCT0gMSwJCQkvLyBObyBub2RlcyBzZXQKKwkJRE9NX05PREVfRE9DVU1FTlQJCQk9IDIsCQkJLy8gVGhpcyBpcyBhIGRvbSBkb2N1bWVudAorCQlET01fTk9ERV9ET0NVTUVOVF9GUkFHTUVOVAk9IDMsCQkJLy8gVGhpcyBpcyBhIGZyYWdtZW50IG9ubHkKKwkJRE9NX05PREVfRE9DVU1FTlRfTk9ERQkJPSA0LAkJCS8vIFRoaXMgaXMgYSBmcmFnbWVudCBpZDtkIGJ5IERPTV9Ob2RlCisJCURPTV9OT0RFX1hQQVRIX05PREVTRVQJCT0gNSAJCQkvLyBUaGlzIGlzIGEgc2V0IG9mIG5vZGVzCisKKwl9OworCisKKwkvLyBNZXRob2RzIHRvIHNldCB0aGUgaW5wdXRzCisJLy8gTk9URTogIElmIHRoaXMgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgdGhlIGltcGxlbWVudGF0aW9uIGNsYXNzCisJLy8gTVVTVCBoYXZlIGFkZGVkIHRoZSBuZXdJbnB1dCB0byBpdCdzIGNoYWluIHRvIGVuc3VyZSB0aGF0CisJLy8gRGVsZXRpb24gb2YgdGhlIGNoYWluIHdpbGwgaW5jbHVkZSBldmVyeXRoaW5nLgorCisJdmlydHVhbCB2b2lkIHNldElucHV0KFRYRk1CYXNlICpuZXdJbnB1dCkgPSAwOworCisJLy8gTWV0aG9kcyB0byBnZXQgdHJhbmZvcm0gb3V0cHV0IHR5cGUgYW5kIGlucHV0IHJlcXVpcmVtZW50CisKKwl2aXJ0dWFsIGlvVHlwZSBnZXRJbnB1dFR5cGUodm9pZCkgPSAwOworCXZpcnR1YWwgaW9UeXBlIGdldE91dHB1dFR5cGUodm9pZCkgPSAwOworCXZpcnR1YWwgbm9kZVR5cGUgZ2V0Tm9kZVR5cGUodm9pZCkgPSAwOworCisJLy8gTmFtZSBzcGFjZSBleHBhbnNpb24gaGFuZGxpbmcKKwl2aXJ0dWFsIGJvb2wgbmFtZVNwYWNlc0V4cGFuZGVkKHZvaWQpOworCXZpcnR1YWwgdm9pZCBleHBhbmROYW1lU3BhY2VzKHZvaWQpOworCXZvaWQgZGVsZXRlRXhwYW5kZWROYW1lU3BhY2VzKHZvaWQpOworCisJLy8gQ29tbWVudCBoYW5kbGluZworCisJdmlydHVhbCB2b2lkIHN0cmlwQ29tbWVudHModm9pZCkgeyBrZWVwQ29tbWVudHMgPSBmYWxzZTt9CisJdmlydHVhbCB2b2lkIGFjdGl2YXRlQ29tbWVudHModm9pZCk7CisJdmlydHVhbCBib29sIGdldENvbW1lbnRzU3RhdHVzKHZvaWQpIHtyZXR1cm4ga2VlcENvbW1lbnRzO30KKworCS8vIE1ldGhvZHMgdG8gZ2V0IG91dHB1dCBkYXRhCisJCisJLy8gQmluSW5wdXRTdHJlYW0gbWV0aG9kczoKKworCXZpcnR1YWwgdW5zaWduZWQgaW50IHJlYWRCeXRlcyhYTUxCeXRlICogY29uc3QgdG9GaWxsLCBjb25zdCB1bnNpZ25lZCBpbnQgbWF4VG9GaWxsKSA9IDA7CisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKmdldERvY3VtZW50KCkgPSAwOworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUgKmdldEZyYWdtZW50Tm9kZSgpID0gMDsKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0RnJhZ21lbnRJZCgpID0gMDsKKwl2aXJ0dWFsIFhTRUNYUGF0aE5vZGVMaXN0ICYgZ2V0WFBhdGhOb2RlTGlzdCgpIHtyZXR1cm4gbV9YUGF0aE1hcDt9CisKKwkvLyBGcmllbmRzIGFuZCBTdGF0aWNzCisKKwlmcmllbmQgY2xhc3MgVFhGTUNoYWluOworCisKK3ByaXZhdGU6CisKKwlUWEZNQmFzZSgpOworfTsKKworLyoqIEB9ICovCisKKyNlbmRpZiAvKiAjZGVmaW5lIFRYRk1CQVNFX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL3RyYW5zZm9ybWVycy9UWEZNQmFzZTY0LmNwcCBiL2Mvc3JjL3RyYW5zZm9ybWVycy9UWEZNQmFzZTY0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjQ0ZDdkCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1CYXNlNjQuY3BwCkBAIC0wLDAgKzEsMjAyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBUWEZNQmFzZTY0IDo9IENsYXNzIHRoYXQgcGVyZm9ybXMgYSBCYXNlNjQgdHJhbnNmb3JtCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisvLyBYU0VDCisKKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNQmFzZTY0LmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNQbGF0Zm9ybVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXhjZXB0aW9uLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKK1RYRk1CYXNlNjQ6OlRYRk1CYXNlNjQoRE9NRG9jdW1lbnQgKmRvYywgYm9vbCBkZWNvZGUpIDogVFhGTUJhc2UoZG9jKSB7CisKKwltX2NvbXBsZXRlID0gZmFsc2U7CQkJCQkvLyBOb3RoaW5nIHlldCB0byBvdXRwdXQKKwltX3JlbWFpbmluZyA9IDA7CisJbV9kb0RlY29kZSA9IGRlY29kZTsKKworCW1wX2I2NCA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5iYXNlNjQoKTsKKwkKKwlpZiAoIW1wX2I2NCkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q3J5cHRvUHJvdmlkZXJFcnJvciwgCisJCQkJIkVycm9yIHJlcXVlc3RpbmcgQmFzZTY0IG9iamVjdCBmcm9tIENyeXB0byBQcm92aWRlciIpOworCisJfQorCWlmIChkZWNvZGUpCisJCW1wX2I2NC0+ZGVjb2RlSW5pdCgpOworCWVsc2UKKwkJbXBfYjY0LT5lbmNvZGVJbml0KCk7CisKK307CisKK1RYRk1CYXNlNjQ6On5UWEZNQmFzZTY0KCkgeworCisJaWYgKG1wX2I2NCAhPSBOVUxMKQorCQlkZWxldGUgbXBfYjY0OworCit9OworCisJLy8gTWV0aG9kcyB0byBzZXQgdGhlIGlucHV0cworCit2b2lkIFRYRk1CYXNlNjQ6OnNldElucHV0KFRYRk1CYXNlICpuZXdJbnB1dCkgeworCisJaW5wdXQgPSBuZXdJbnB1dDsKKworCS8vIFNldCB1cCBmb3IgY29tbWVudHMKKwlrZWVwQ29tbWVudHMgPSBpbnB1dC0+Z2V0Q29tbWVudHNTdGF0dXMoKTsKKworfQorCisJLy8gTWV0aG9kcyB0byBnZXQgdHJhbmZvcm0gb3V0cHV0IHR5cGUgYW5kIGlucHV0IHJlcXVpcmVtZW50CisKK1RYRk1CYXNlOjppb1R5cGUgVFhGTUJhc2U2NDo6Z2V0SW5wdXRUeXBlKHZvaWQpIHsKKworCXJldHVybiBUWEZNQmFzZTo6QllURV9TVFJFQU07CisKK30KK1RYRk1CYXNlOjppb1R5cGUgVFhGTUJhc2U2NDo6Z2V0T3V0cHV0VHlwZSh2b2lkKSB7CisKKwlyZXR1cm4gVFhGTUJhc2U6OkJZVEVfU1RSRUFNOworCit9CisKKworVFhGTUJhc2U6Om5vZGVUeXBlIFRYRk1CYXNlNjQ6OmdldE5vZGVUeXBlKHZvaWQpIHsKKworCXJldHVybiBUWEZNQmFzZTo6RE9NX05PREVfTk9ORTsKKworfQorCisJLy8gTWV0aG9kcyB0byBnZXQgb3V0cHV0IGRhdGEKKwordW5zaWduZWQgaW50IFRYRk1CYXNlNjQ6OnJlYWRCeXRlcyhYTUxCeXRlICogY29uc3QgdG9GaWxsLCB1bnNpZ25lZCBpbnQgbWF4VG9GaWxsKSB7CisJCisJdW5zaWduZWQgaW50IHJldCwgZmlsbCwgbGVmdFRvRmlsbDsKKworCXJldCA9IDA7CQkJCQkvLyBIb3cgbXVjaCBoYXZlIHdlIGNvcGllZD8KKwlsZWZ0VG9GaWxsID0gbWF4VG9GaWxsOwkJLy8gU3RpbGwgaGF2ZSB0byBjb3B5IGluIGVudGlyZSB0aGluZworCisJd2hpbGUgKHJldCAhPSBtYXhUb0ZpbGwgJiYgKG1fY29tcGxldGUgPT0gZmFsc2UgfHwgbV9yZW1haW5pbmcgPiAwKSkgeworCQorCQlpZiAobV9yZW1haW5pbmcgIT0gMCkgeworCisJCQkvLyBDb3B5IGFueXRoaW5nIHJlbWFpbmluZyBpbiB0aGUgYnVmZmVyIHRvIHRoZSBvdXRwdXQKKworCQkJZmlsbCA9IChsZWZ0VG9GaWxsID4gbV9yZW1haW5pbmcgPyBtX3JlbWFpbmluZyA6IGxlZnRUb0ZpbGwpOworCQkJbWVtY3B5KCZ0b0ZpbGxbcmV0XSwgbV9vdXRwdXRCdWZmZXIsIGZpbGwpOworCisJCQlpZiAoZmlsbCA8IG1fcmVtYWluaW5nKQorCQkJCW1lbW1vdmUobV9vdXRwdXRCdWZmZXIsIG1fb3V0cHV0QnVmZmVyICsgZmlsbCwgKG1fcmVtYWluaW5nIC0gZmlsbCkpOworCisJCQltX3JlbWFpbmluZyAtPSBmaWxsOworCQkJbGVmdFRvRmlsbCAtPSBmaWxsOworCQkJcmV0ICs9IGZpbGw7CisJCX0KKworCQkvLyBOb3cgZG8gc29tZSBjcnlwdGluZworCisJCWlmIChtX2NvbXBsZXRlID09IGZhbHNlICYmIG1fcmVtYWluaW5nID09IDApIHsKKworCQkJdW5zaWduZWQgaW50IHN6ID0gaW5wdXQtPnJlYWRCeXRlcyhtX2lucHV0QnVmZmVyLCAxMDI0KTsKKwkJCisJCQlpZiAobV9kb0RlY29kZSkgeworCQkJCQorCQkJCWlmIChzeiA9PSAwKSB7CisJCQkJCW1fY29tcGxldGUgPSB0cnVlOworCQkJCQltX3JlbWFpbmluZyA9IG1wX2I2NC0+ZGVjb2RlRmluaXNoKG1fb3V0cHV0QnVmZmVyLCAyMDQ4KTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCQltX3JlbWFpbmluZyA9IG1wX2I2NC0+ZGVjb2RlKG1faW5wdXRCdWZmZXIsIHN6LCBtX291dHB1dEJ1ZmZlciwgMjA0OCk7CisJCQl9CisJCQllbHNlIHsKKworCQkJCWlmIChzeiA9PSAwKSB7CisJCQkJCW1fY29tcGxldGUgPSB0cnVlOworCQkJCQltX3JlbWFpbmluZyA9IG1wX2I2NC0+ZW5jb2RlRmluaXNoKG1fb3V0cHV0QnVmZmVyLCAzMDcyKTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCQltX3JlbWFpbmluZyA9IG1wX2I2NC0+ZW5jb2RlKG1faW5wdXRCdWZmZXIsIHN6LCBtX291dHB1dEJ1ZmZlciwgMjA0OCk7CisJCQl9CisJCX0KKworCX0KKworCXJldHVybiByZXQ7CisjaWYgMAorCXVuc2lnbmVkIGludCByZXQsIGZpbGw7CisKKwlpZiAobV9jb21wbGV0ZSkKKwkJcmV0dXJuIDA7CisKKwlmaWxsID0gKG1heFRvRmlsbCA+IDIwMDAgPyAyMDAwIDogbWF4VG9GaWxsKTsKKwlyZXQgPSAwOworCXdoaWxlIChyZXQgPT0gMCAmJiAhbV9jb21wbGV0ZSkgeworCQorCQl1bnNpZ25lZCBpbnQgc3ogPSBpbnB1dC0+cmVhZEJ5dGVzKG1fYmFzZTY0QnVmZmVyLCBmaWxsIC8gMik7CisKKwkJaWYgKG1fZG9EZWNvZGUpIHsKKwkJCWlmIChzeiA9PSAwKQorCQkJCXJldCA9IG1wX2I2NC0+ZGVjb2RlRmluaXNoKCh1bnNpZ25lZCBjaGFyICopIHRvRmlsbCwgbWF4VG9GaWxsKTsKKwkJCWVsc2UKKwkJCQlyZXQgPSBtcF9iNjQtPmRlY29kZShtX2Jhc2U2NEJ1ZmZlciwgc3osICh1bnNpZ25lZCBjaGFyICopIHRvRmlsbCwgbWF4VG9GaWxsKTsKKworCQkJaWYgKHJldCA9PSAwKQorCQkJCW1fY29tcGxldGUgPSB0cnVlOworCQl9CisJCWVsc2UgeworCQkJaWYgKHN6ID09IDApIHsKKwkJCQlyZXQgPSBtcF9iNjQtPmVuY29kZUZpbmlzaCgodW5zaWduZWQgY2hhciAqKSB0b0ZpbGwsIG1heFRvRmlsbCk7CisJCQkJbV9jb21wbGV0ZSA9IHRydWU7CisJCQl9CisJCQllbHNlIAorCQkJCXJldCA9IG1wX2I2NC0+ZW5jb2RlKG1fYmFzZTY0QnVmZmVyLCBzeiwgKHVuc2lnbmVkIGNoYXIgKikgdG9GaWxsLCBtYXhUb0ZpbGwpOworCisJCX0KKwl9CisKKwlyZXR1cm4gcmV0OworI2VuZGlmCit9CisKK0RPTURvY3VtZW50ICpUWEZNQmFzZTY0OjpnZXREb2N1bWVudCgpIHsKKworCXJldHVybiBOVUxMOworCit9CisKK0RPTU5vZGUgKiBUWEZNQmFzZTY0OjpnZXRGcmFnbWVudE5vZGUoKSB7CisKKwlyZXR1cm4gTlVMTDsJCS8vIFJldHVybiBhIG51bGwgbm9kZQorCit9CisKK2NvbnN0IFhNTENoICogVFhGTUJhc2U2NDo6Z2V0RnJhZ21lbnRJZCgpIHsKKworCXJldHVybiBOVUxMOwkvLyBFbXB0eSBzdHJpbmcKKworfQpkaWZmIC0tZ2l0IGEvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1CYXNlNjQuaHBwIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1CYXNlNjQuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2NWRlOGUKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTUJhc2U2NC5ocHAKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogVFhGTUJhc2U2NCA6PSBDbGFzcyB0aGF0IHBlcmZvcm1zIGEgQmFzZTY0IHRyYW5zZm9ybXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1CYXNlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvQmFzZTY0LmhwcD4KKyAKKy8qKgorICogXGJyaWVmIFRyYW5zZm9ybWVyIHRvIGhhbmRsZSBiYXNlNjQgdHJhbnNmb3JtcworICogQGluZ3JvdXAgaW50ZXJuYWwKKyAqLworCitjbGFzcyBEU0lHX0VYUE9SVCBUWEZNQmFzZTY0IDogcHVibGljIFRYRk1CYXNlIHsKKworcHVibGljOgorCisJLy8gQ29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycworCisJVFhGTUJhc2U2NChYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKmRvYywgYm9vbCBkZWNvZGUgPSB0cnVlKTsKKwl+VFhGTUJhc2U2NCgpOworCisJLy8gTWV0aG9kcyB0byBnZXQgdHJhbmZvcm0gb3V0cHV0IHR5cGUgYW5kIGlucHV0IHJlcXVpcmVtZW50CisKKwl2aXJ0dWFsIFRYRk1CYXNlOjppb1R5cGUgZ2V0SW5wdXRUeXBlKHZvaWQpOworCXZpcnR1YWwgVFhGTUJhc2U6OmlvVHlwZSBnZXRPdXRwdXRUeXBlKHZvaWQpOworCXZpcnR1YWwgbm9kZVR5cGUgZ2V0Tm9kZVR5cGUodm9pZCk7CisKKwkvLyBNZXRob2RzIHRvIHNldCBpbnB1dCBkYXRhCisKKwl2aXJ0dWFsIHZvaWQgc2V0SW5wdXQoVFhGTUJhc2UgKiBuZXdJbnB1dCk7CisKKwkvLyBNZXRob2RzIHRvIGdldCBvdXRwdXQgZGF0YQorCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgcmVhZEJ5dGVzKFhNTEJ5dGUgKiBjb25zdCB0b0ZpbGwsIGNvbnN0IHVuc2lnbmVkIGludCBtYXhUb0ZpbGwpOworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICpnZXREb2N1bWVudCgpOworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUgKmdldEZyYWdtZW50Tm9kZSgpOworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRGcmFnbWVudElkKCk7CisJCitwcml2YXRlOgorCVRYRk1CYXNlNjQoKTsKKworCWJvb2wJCQkJbV9jb21wbGV0ZTsJCQkJCS8vIElzIHRoZSB3b3JrIGRvbmUKKwl1bnNpZ25lZCBjaGFyCQltX291dHB1dEJ1ZmZlclsyMDUwXTsJCS8vIEFsd2F5cyBrZWVwIDJLIG9mIGRhdGEKKwl1bnNpZ25lZCBjaGFyCQltX2lucHV0QnVmZmVyWzEwMjZdOwkJLy8gQWx3YXlzIHJlYWQgMTAyNiBieXRlcyAoZW5jb2RpbmcgZ3Jvd3MpCisJdW5zaWduZWQgaW50CQltX3JlbWFpbmluZzsJCQkJLy8gSG93IG11Y2ggZGF0YSBpcyBsZWZ0IGluIHRoZSBidWZmZXI/CisJWFNFQ0NyeXB0b0Jhc2U2NCAqCW1wX2I2NDsKKwlib29sCQkJCW1fZG9EZWNvZGU7CQkJCQkvLyBBcmUgd2UgZW5jb2Rpbmcgb3IgZGVjb2Rpbmc/Cit9OworCmRpZmYgLS1naXQgYS9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTUMxNG4uY3BwIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1DMTRuLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjM2OTZiCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1DMTRuLmNwcApAQCAtMCwwICsxLDE5NiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogVFhGTUMxNG4gOj0gQ2xhc3MgdGhhdCBwZXJmb3JtcyBDMTRuIGNhbm9uaWNhbGlzYXRpb24KKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNQzE0bi5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0V4Y2VwdGlvbi5ocHA+CisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTVBhcnNlci5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKK1RYRk1DMTRuOjpUWEZNQzE0bihET01Eb2N1bWVudCAqZG9jKSA6IFRYRk1CYXNlKGRvYykgeworCisJbXBfYzE0biA9IE5VTEw7CisKK30KK1RYRk1DMTRuOjp+VFhGTUMxNG4oKSB7CisKKwlpZiAobXBfYzE0biAhPSBOVUxMKSB7CisJCWRlbGV0ZSBtcF9jMTRuOworCX0KKworfQorCisvLyBNZXRob2RzIHRvIHNldCB0aGUgaW5wdXRzCisKK3ZvaWQgVFhGTUMxNG46OnNldElucHV0KFRYRk1CYXNlICpuZXdJbnB1dCkgeworCisJaWYgKG5ld0lucHV0LT5nZXRPdXRwdXRUeXBlKCkgPT0gVFhGTUJhc2U6OkJZVEVfU1RSRUFNKSB7CisKKwkJLy90aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlRyYW5zZm9ybUlucHV0T3V0cHV0RmFpbCwgIkMxNG4gY2Fub25pY2FsaXNhdGlvbiB0cmFuc2Zvcm0gcmVxdWlyZXMgRE9NX05PREVTIGlucHV0Iik7CisJCS8vIE5lZWQgdG8gcGFyc2UgaW50byBET01fTk9ERVMKKwkJVFhGTVBhcnNlciAqIHBhcnNlcjsKKwkJWFNFQ25ldyhwYXJzZXIsIFRYRk1QYXJzZXIobXBfZXhwYW5zaW9uRG9jKSk7CisJCXRyeXsKKwkJCXBhcnNlci0+c2V0SW5wdXQobmV3SW5wdXQpOworCQl9CisJCWNhdGNoICguLi4pIHsKKwkJCWRlbGV0ZSBwYXJzZXI7CisJCQlpbnB1dCA9IG5ld0lucHV0OwkJLy8gRW5zdXJlIGNoYWluIHdpbGwgYmUgZGVsZXRlZC4KKwkJCXRocm93OworCQl9CisKKwkJaW5wdXQgPSBwYXJzZXI7CisJfQorCWVsc2UKKwkJaW5wdXQgPSBuZXdJbnB1dDsKKworCS8vIFNldCB1cCBmb3IgY29tbWVudHMgIC0gYnkgZGVmYXVsdCB3ZSBBTFdBWVMgc3RyaXAgY29tbWVudHMKKworCWtlZXBDb21tZW50cyA9IGZhbHNlOworCisJVFhGTUJhc2U6Om5vZGVUeXBlIHR5cGUgPSBpbnB1dC0+Z2V0Tm9kZVR5cGUoKTsKKworCXN3aXRjaCAodHlwZSkgeworCisJY2FzZSBUWEZNQmFzZTo6RE9NX05PREVfRE9DVU1FTlQgOgorCisJCVhTRUNuZXcobXBfYzE0biwgWFNFQ0MxNG4yMDAxMDMxNShpbnB1dC0+Z2V0RG9jdW1lbnQoKSkpOworCQkvLyBFeHBhbmQgbmFtZSBzcGFjZXMKKwkJLy9pbnB1dC0+ZXhwYW5kTmFtZVNwYWNlcygpOworCisJCWJyZWFrOworCisJY2FzZSBUWEZNQmFzZTo6RE9NX05PREVfRE9DVU1FTlRfTk9ERSA6CisJY2FzZSBUWEZNQmFzZTo6RE9NX05PREVfRE9DVU1FTlRfRlJBR01FTlQgOgorCisJCVhTRUNuZXcobXBfYzE0biwgWFNFQ0MxNG4yMDAxMDMxNShpbnB1dC0+Z2V0RG9jdW1lbnQoKSwgaW5wdXQtPmdldEZyYWdtZW50Tm9kZSgpKSk7CisJCS8vaW5wdXQtPmV4cGFuZE5hbWVTcGFjZXMoKTsKKwkJYnJlYWs7CisKKwljYXNlIFRYRk1CYXNlOjpET01fTk9ERV9YUEFUSF9OT0RFU0VUIDoKKworCQlYU0VDbmV3KG1wX2MxNG4sIFhTRUNDMTRuMjAwMTAzMTUoaW5wdXQtPmdldERvY3VtZW50KCkpKTsKKwkJbXBfYzE0bi0+c2V0WFBhdGhNYXAoaW5wdXQtPmdldFhQYXRoTm9kZUxpc3QoKSk7CisJCWJyZWFrOworCisJZGVmYXVsdCA6CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYUGF0aEVycm9yKTsKKworCX0KKworCW1wX2MxNG4tPnNldENvbW1lbnRzUHJvY2Vzc2luZyhrZWVwQ29tbWVudHMpOwkJCS8vIEJ5IGRlZmF1bHQgd2Ugc3RyaXAgY29tbWVudHMKKwkvLyBEbyB3ZSB1c2UgdGhlIG5hbWVzcGFjZSBtYXA/CisJbXBfYzE0bi0+c2V0VXNlTmFtZXNwYWNlU3RhY2soIWlucHV0LT5uYW1lU3BhY2VzRXhwYW5kZWQoKSk7CisKK30KKwordm9pZCBUWEZNQzE0bjo6YWN0aXZhdGVDb21tZW50cyh2b2lkKSB7CisKKwlpZiAoaW5wdXQgIT0gTlVMTCkKKwkJa2VlcENvbW1lbnRzID0gaW5wdXQtPmdldENvbW1lbnRzU3RhdHVzKCk7CisJZWxzZQorCQlrZWVwQ29tbWVudHMgPSB0cnVlOworCisJaWYgKG1wX2MxNG4gIT0gTlVMTCkKKwkJbXBfYzE0bi0+c2V0Q29tbWVudHNQcm9jZXNzaW5nKGtlZXBDb21tZW50cyk7CisKK30KKwordm9pZCBUWEZNQzE0bjo6c2V0RXhjbHVzaXZlKCkgeworCisJaWYgKG1wX2MxNG4gIT0gTlVMTCkKKwkJbXBfYzE0bi0+c2V0RXhjbHVzaXZlKCk7CisKK30KKwordm9pZCBUWEZNQzE0bjo6c2V0RXhjbHVzaXZlKHNhZmVCdWZmZXIgJiBOU0xpc3QpIHsKKworCWlmIChtcF9jMTRuICE9IE5VTEwpCisJCW1wX2MxNG4tPnNldEV4Y2x1c2l2ZSgoY2hhciAqKSBOU0xpc3QucmF3QnVmZmVyKCkpOworCit9CisKK3ZvaWQgVFhGTUMxNG46OnNldEluY2x1c2l2ZTExKCkgeworCisgICAgaWYgKG1wX2MxNG4gIT0gTlVMTCkKKyAgICAgICAgbXBfYzE0bi0+c2V0SW5jbHVzaXZlMTEoKTsKKworfQorCisvLyBNZXRob2RzIHRvIGdldCB0cmFuZm9ybSBvdXRwdXQgdHlwZSBhbmQgaW5wdXQgcmVxdWlyZW1lbnQKKworVFhGTUJhc2U6OmlvVHlwZSBUWEZNQzE0bjo6Z2V0SW5wdXRUeXBlKHZvaWQpIHsKKworCXJldHVybiBUWEZNQmFzZTo6RE9NX05PREVTOworCit9CisKK1RYRk1CYXNlOjppb1R5cGUgVFhGTUMxNG46OmdldE91dHB1dFR5cGUodm9pZCkgeworCisJcmV0dXJuIFRYRk1CYXNlOjpCWVRFX1NUUkVBTTsKKworfQorCitUWEZNQmFzZTo6bm9kZVR5cGUgVFhGTUMxNG46OmdldE5vZGVUeXBlKHZvaWQpIHsKKworCXJldHVybiBUWEZNQmFzZTo6RE9NX05PREVfTk9ORTsKKworfQorCisvLyBNZXRob2RzIHRvIGdldCBvdXRwdXQgZGF0YQorCit1bnNpZ25lZCBpbnQgVFhGTUMxNG46OnJlYWRCeXRlcyhYTUxCeXRlICogY29uc3QgdG9GaWxsLCB1bnNpZ25lZCBpbnQgbWF4VG9GaWxsKSB7CisKKwlpZiAobXBfYzE0biA9PSBOVUxMKQorCisJCXJldHVybiAwOworCisJcmV0dXJuICh1bnNpZ25lZCBpbnQpIG1wX2MxNG4tPm91dHB1dEJ1ZmZlcih0b0ZpbGwsIG1heFRvRmlsbCk7CisKK30KKworRE9NRG9jdW1lbnQgKiBUWEZNQzE0bjo6Z2V0RG9jdW1lbnQoKSB7CisKKwlyZXR1cm4gTlVMTDsKKworfQorCitET01Ob2RlICogVFhGTUMxNG46OmdldEZyYWdtZW50Tm9kZSgpIHsKKworCXJldHVybiBOVUxMOworCit9CisKK2NvbnN0IFhNTENoICogVFhGTUMxNG46OmdldEZyYWdtZW50SWQoKSB7CisKKwlyZXR1cm4gTlVMTDsJLy8gRW1wdHkgc3RyaW5nCisKK30KKworCmRpZmYgLS1naXQgYS9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTUMxNG4uaHBwIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1DMTRuLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGYwN2VkCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1DMTRuLmhwcApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBUWEZNQmFzZUMxNG4gOj0gQ2xhc3MgdGhhdCBwZXJmb3JtcyBDMTRuIGNhbm9uaWNhbGlzYXRpb24KKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNQmFzZS5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDU2FmZUJ1ZmZlci5ocHA+CisjaW5jbHVkZSA8eHNlYy9jYW5vbi9YU0VDQzE0bjIwMDEwMzE1LmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNOYW1lU3BhY2VFeHBhbmRlci5ocHA+CisKKy8qKgorICogXGJyaWVmIFRyYW5zZm9ybWVyIHRvIGhhbmRsZSBjYW5vbmljYWxpc2F0aW9uIHRyYW5zZm9ybXMKKyAqIEBpbmdyb3VwIGludGVybmFsCisgKi8KKworY2xhc3MgRFNJR19FWFBPUlQgVFhGTUMxNG4gOiBwdWJsaWMgVFhGTUJhc2UgeworCitwcml2YXRlOgorCisJWFNFQ0MxNG4yMDAxMDMxNQkJKiBtcF9jMTRuOwkJCS8vIFRoZSBhY3R1YWwgY2Fub25pY2FsaXNlcgorCitwdWJsaWM6CisKKwlUWEZNQzE0bihYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKmRvYyk7CisJflRYRk1DMTRuKCk7CisKKwkvLyBNZXRob2RzIHRvIHNldCB0aGUgaW5wdXRzCisKKwl2b2lkIHNldElucHV0KFRYRk1CYXNlICpuZXdJbnB1dCk7CisKKwkvLyBNZXRob2RzIHRvIGdldCB0cmFuZm9ybSBvdXRwdXQgdHlwZSBhbmQgaW5wdXQgcmVxdWlyZW1lbnQKKworCXZpcnR1YWwgVFhGTUJhc2U6OmlvVHlwZSBnZXRJbnB1dFR5cGUodm9pZCk7CisJdmlydHVhbCBUWEZNQmFzZTo6aW9UeXBlIGdldE91dHB1dFR5cGUodm9pZCk7CisJdmlydHVhbCBUWEZNQmFzZTo6bm9kZVR5cGUgZ2V0Tm9kZVR5cGUodm9pZCk7CisKKwkvLyBPdmVycmlkIGNvbW1lbnQgYWNpdmF0aW9uCisJdmlydHVhbCB2b2lkIGFjdGl2YXRlQ29tbWVudHModm9pZCk7CisKKwkvLyBTZXQgZXhjbHVzaXZlCisJdmlydHVhbCB2b2lkIHNldEV4Y2x1c2l2ZSgpOworCXZpcnR1YWwgdm9pZCBzZXRFeGNsdXNpdmUoc2FmZUJ1ZmZlciAmIE5TTGlzdCk7CisKKwkvLyBTZXQgaW5jbHVzaXZlIDEuMQorCXZpcnR1YWwgdm9pZCBzZXRJbmNsdXNpdmUxMSgpOworCisJLy8gTWV0aG9kcyB0byBnZXQgb3V0cHV0IGRhdGEKKworCXZpcnR1YWwgdW5zaWduZWQgaW50IHJlYWRCeXRlcyhYTUxCeXRlICogY29uc3QgdG9GaWxsLCBjb25zdCB1bnNpZ25lZCBpbnQgbWF4VG9GaWxsKTsKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqZ2V0RG9jdW1lbnQoKTsKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICpnZXRGcmFnbWVudE5vZGUoKTsKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0RnJhZ21lbnRJZCgpOworCitwcml2YXRlOgorCVRYRk1DMTRuKCk7Cit9OworCmRpZmYgLS1naXQgYS9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTUNoYWluLmNwcCBiL2Mvc3JjL3RyYW5zZm9ybWVycy9UWEZNQ2hhaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhZjYzNGQKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTUNoYWluLmNwcApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBUWEZNQ2hhaW4gOj0gTGlzdCBjbGFzcyB0aGF0IGhvbGRzIGFuZCBtYW5pcHVsYXRlcyBhIGNoYWluIG9mIFRYRk0gCisgKiAgICAgICAgICAgICAgb2JqZWN0cy4KKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNQmFzZS5ocHA+CisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTUNoYWluLmhwcD4KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gIGRlbGV0ZVRyYW5zZm9ybUNoYWluID0gZWFzeSB3YXkgdG8gZGVsZXRlIGFuIGVudGlyZSBjaGFpbiBvZiB0cmFuc2Zvcm1zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK3ZvaWQgVFhGTUNoYWluOjpkZWxldGVUWEZNQ2hhaW4oVFhGTUJhc2UgKiB0b0RlbGV0ZSkgeworCisJaWYgKHRvRGVsZXRlICE9IE5VTEwpIHsKKwkJZGVsZXRlVFhGTUNoYWluKHRvRGVsZXRlLT5pbnB1dCk7CisJCWRlbGV0ZSB0b0RlbGV0ZTsKKwl9CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdHJ1Y3RvcnMvRGVzdHJ1Y3RvcnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RYRk1DaGFpbjo6VFhGTUNoYWluKFRYRk1CYXNlICogYmFzZVR4Zm0sIGJvb2wgZGVsZXRlQ2hhaW5XaGVuRG9uZSkgOgorbXBfY3VycmVudFR4Zm0oYmFzZVR4Zm0pLAorbV9kZWxldGVDaGFpbldoZW5Eb25lKGRlbGV0ZUNoYWluV2hlbkRvbmUpIHsKK30KKworVFhGTUNoYWluOjp+VFhGTUNoYWluKCkgeworCisJaWYgKG1fZGVsZXRlQ2hhaW5XaGVuRG9uZSkKKwkJZGVsZXRlVFhGTUNoYWluKG1wX2N1cnJlbnRUeGZtKTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFJlYWQgaGFzaAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBUWEZNQ2hhaW46OmFwcGVuZFR4Zm0oVFhGTUJhc2UgKiB0eGZtKSB7CisKKwlUWEZNQmFzZSAqIG9sZFR4Zm0gPSBtcF9jdXJyZW50VHhmbTsKKwltcF9jdXJyZW50VHhmbSA9IHR4Zm07CisKKwkvLyBUaGlzIG1heSB0aHJvdyBhbiBleGNlcHRpb24sIGJ1dCBpZiBpdCBkb2VzIGVhY2ggVFhGTSB0eXBlIAorCS8vIEd1YXJhbnRlZXMgdGhhdCBpdCB3aWxsIGhhdmUgbWFkZSB0aGUgaW5wdXQgcGFydCBvZiB0aGUgCisJLy8gY2hhaW4gYmVmb3JlIHN1Y2ggYW4gZXhjZXB0aW9uLiAgU28gdGhlIGNhbGxlciBjYW4gY2xlYXIgb3V0CisJLy8gdGhlIGVudGlyZSBjaGFpbiAtIGluY2x1ZGluZyB0aGUgbmV3IHR4Zm0gLSBieSBkZWxldGluZworCS8vICp0aGlzLgorCisJdHhmbS0+c2V0SW5wdXQob2xkVHhmbSk7CisKK30KKwpkaWZmIC0tZ2l0IGEvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1DaGFpbi5ocHAgYi9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTUNoYWluLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjA0YzI4Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1DaGFpbi5ocHAKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogVFhGTUNoYWluIDo9IExpc3QgY2xhc3MgdGhhdCBob2xkcyBhbmQgbWFuaXB1bGF0ZXMgYSBjaGFpbiBvZiBUWEZNIAorICogICAgICAgICAgICAgIG9iamVjdHMuCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFRYRk1DSEFJTl9JTkNMVURFCisjZGVmaW5lIFRYRk1DSEFJTl9JTkNMVURFCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisKK2NsYXNzIFRYRk1CYXNlOworCisKKy8qKgorICogXGJyaWVmIEEgaG9sZGVyIGNsYXNzIHRvIHRha2UgY2FyZSBvZiBhIGNoYWluIG9mIGludGVybmFsCisgKiB0cmFuc2Zvcm1lciBvYmplY3RzLgorICogQGluZ3JvdXAgaW50ZXJuYWwKKyAqLworCisKK2NsYXNzIERTSUdfRVhQT1JUIFRYRk1DaGFpbiB7CisKK3B1YmxpYzoKKworCS8vIENvbnN0cnVjdG9ycy9kZXN0cnVjdG9ycworCisJVFhGTUNoYWluKFRYRk1CYXNlICogYmFzZVR4Zm0sIGJvb2wgZGVsZXRlQ2hhaW5XaGVuRG9uZSA9IHRydWUpOworCX5UWEZNQ2hhaW4oKTsKKworCS8vIE1hbmlwdWxhdGUKKwl2b2lkIGFwcGVuZFR4Zm0oVFhGTUJhc2UgKiB0eGZtKTsKKwlUWEZNQmFzZSAqIGdldExhc3RUeGZtKHZvaWQpOworCitwcml2YXRlOgorCisJVFhGTUNoYWluKCk7CisJVFhGTUNoYWluKFRYRk1DaGFpbiAmdG9Db3B5KTsKKworCVRYRk1CYXNlCQkJCSogbXBfY3VycmVudFR4Zm07CisJYm9vbAkJCQkJbV9kZWxldGVDaGFpbldoZW5Eb25lOworCisJdm9pZCBkZWxldGVUWEZNQ2hhaW4oVFhGTUJhc2UgKiB0b0RlbGV0ZSk7CisKK307CisKK2lubGluZQorVFhGTUJhc2UgKiBUWEZNQ2hhaW46OmdldExhc3RUeGZtKHZvaWQpIHtyZXR1cm4gbXBfY3VycmVudFR4Zm07fQorCisKKworI2VuZGlmIC8qIFRYRk1DSEFJTl9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTUNpcGhlci5jcHAgYi9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTUNpcGhlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFhYTFkNgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3RyYW5zZm9ybWVycy9UWEZNQ2lwaGVyLmNwcApAQCAtMCwwICsxLDE4NCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogVFhGTUNpcGhlciA6PSBDbGFzcyB0aGF0IHBlcmZvcm1zIGVuY3J5cHRpb24gYW5kIGRlY3J5cHRpb24gdHJhbnNmb3JtcworICoKKyAqICRJZCQKKyAqCisgKi8KKworLy8gWFNFQworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1DaXBoZXIuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1BsYXRmb3JtVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFeGNlcHRpb24uaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworVFhGTUNpcGhlcjo6VFhGTUNpcGhlcihET01Eb2N1bWVudCAqZG9jLCAKKwkJCQkJICAgWFNFQ0NyeXB0b0tleSAqIGtleSwgCisJCQkJCSAgIGJvb2wgZW5jcnlwdCkgOiAKK1RYRk1CYXNlKGRvYyksCittX2RvRW5jcnlwdChlbmNyeXB0KSwKK21fcmVtYWluaW5nKDApIHsKKworCisJbXBfY2lwaGVyID0ga2V5LT5jbG9uZSgpOworCQorCWlmICghbXBfY2lwaGVyKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDcnlwdG9Qcm92aWRlckVycm9yLCAKKwkJCQkiRXJyb3IgY2xvbmluZyBrZXkiKTsKKworCX0KKworCW1fY29tcGxldGUgPSBmYWxzZTsKKworCXRyeSB7CisJCWlmIChtcF9jaXBoZXItPmdldEtleVR5cGUoKSA9PSBYU0VDQ3J5cHRvS2V5OjpLRVlfU1lNTUVUUklDICYmIG1fZG9FbmNyeXB0KQorCQkJKChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5ICopIChtcF9jaXBoZXIpKS0+ZW5jcnlwdEluaXQoKTsKKwkJZWxzZQorCQkJKChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5ICopIChtcF9jaXBoZXIpKS0+ZGVjcnlwdEluaXQoKTsKKwl9CisJY2F0Y2ggKC4uLikgeworCQlkZWxldGUgbXBfY2lwaGVyOworCQltcF9jaXBoZXIgPSBOVUxMOworCQl0aHJvdzsKKwl9CisKK307CisKK1RYRk1DaXBoZXI6On5UWEZNQ2lwaGVyKCkgeworCisJaWYgKG1wX2NpcGhlciAhPSBOVUxMKQorCQlkZWxldGUgbXBfY2lwaGVyOworCit9OworCisJLy8gTWV0aG9kcyB0byBzZXQgdGhlIGlucHV0cworCit2b2lkIFRYRk1DaXBoZXI6OnNldElucHV0KFRYRk1CYXNlICpuZXdJbnB1dCkgeworCisJaW5wdXQgPSBuZXdJbnB1dDsKKworCS8vIFNldCB1cCBmb3IgY29tbWVudHMKKwlrZWVwQ29tbWVudHMgPSBpbnB1dC0+Z2V0Q29tbWVudHNTdGF0dXMoKTsKKworfQorCisJLy8gTWV0aG9kcyB0byBnZXQgdHJhbmZvcm0gb3V0cHV0IHR5cGUgYW5kIGlucHV0IHJlcXVpcmVtZW50CisKK1RYRk1CYXNlOjppb1R5cGUgVFhGTUNpcGhlcjo6Z2V0SW5wdXRUeXBlKHZvaWQpIHsKKworCXJldHVybiBUWEZNQmFzZTo6QllURV9TVFJFQU07CisKK30KK1RYRk1CYXNlOjppb1R5cGUgVFhGTUNpcGhlcjo6Z2V0T3V0cHV0VHlwZSh2b2lkKSB7CisKKwlyZXR1cm4gVFhGTUJhc2U6OkJZVEVfU1RSRUFNOworCit9CisKKworVFhGTUJhc2U6Om5vZGVUeXBlIFRYRk1DaXBoZXI6OmdldE5vZGVUeXBlKHZvaWQpIHsKKworCXJldHVybiBUWEZNQmFzZTo6RE9NX05PREVfTk9ORTsKKworfQorCisvLyBNZXRob2RzIHRvIGdldCBvdXRwdXQgZGF0YQorCit1bnNpZ25lZCBpbnQgVFhGTUNpcGhlcjo6cmVhZEJ5dGVzKFhNTEJ5dGUgKiBjb25zdCB0b0ZpbGwsIHVuc2lnbmVkIGludCBtYXhUb0ZpbGwpIHsKKwkKKwl1bnNpZ25lZCBpbnQgcmV0LCBmaWxsLCBsZWZ0VG9GaWxsOworCisJcmV0ID0gMDsJCQkJCS8vIEhvdyBtdWNoIGhhdmUgd2UgY29waWVkPworCWxlZnRUb0ZpbGwgPSBtYXhUb0ZpbGw7CQkvLyBTdGlsbCBoYXZlIHRvIGNvcHkgaW4gZW50aXJlIHRoaW5nCisKKwl3aGlsZSAocmV0ICE9IG1heFRvRmlsbCAmJiAobV9jb21wbGV0ZSA9PSBmYWxzZSB8fCBtX3JlbWFpbmluZyA+IDApKSB7CisJCisJCWlmIChtX3JlbWFpbmluZyAhPSAwKSB7CisKKwkJCS8vIENvcHkgYW55dGhpbmcgcmVtYWluaW5nIGluIHRoZSBidWZmZXIgdG8gdGhlIG91dHB1dAorCisJCQlmaWxsID0gKGxlZnRUb0ZpbGwgPiBtX3JlbWFpbmluZyA/IG1fcmVtYWluaW5nIDogbGVmdFRvRmlsbCk7CisJCQltZW1jcHkoJnRvRmlsbFtyZXRdLCBtX291dHB1dEJ1ZmZlciwgZmlsbCk7CisKKwkJCWlmIChmaWxsIDwgbV9yZW1haW5pbmcpCisJCQkJbWVtbW92ZShtX291dHB1dEJ1ZmZlciwgbV9vdXRwdXRCdWZmZXIgKyBmaWxsLCAobV9yZW1haW5pbmcgLSBmaWxsKSk7CisKKwkJCW1fcmVtYWluaW5nIC09IGZpbGw7CisJCQlsZWZ0VG9GaWxsIC09IGZpbGw7CisJCQlyZXQgKz0gZmlsbDsKKwkJfQorCisJCS8vIE5vdyBkbyBzb21lIGNyeXB0aW5nCisKKwkJaWYgKG1fY29tcGxldGUgPT0gZmFsc2UgJiYgbV9yZW1haW5pbmcgPT0gMCkgeworCisJCQl1bnNpZ25lZCBpbnQgc3ogPSBpbnB1dC0+cmVhZEJ5dGVzKG1faW5wdXRCdWZmZXIsIDIwNDgpOworCQkKKwkJCWlmIChtcF9jaXBoZXItPmdldEtleVR5cGUoKSA9PSBYU0VDQ3J5cHRvS2V5OjpLRVlfU1lNTUVUUklDKSB7CisJCQkJWFNFQ0NyeXB0b1N5bW1ldHJpY0tleSAqIHN5bUNpcGhlciA9IAorCQkJCQkoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleSopIG1wX2NpcGhlcjsKKwkJCQlpZiAobV9kb0VuY3J5cHQpIHsKKwkJCQkJCisJCQkJCWlmIChzeiA9PSAwKSB7CisJCQkJCQltX2NvbXBsZXRlID0gdHJ1ZTsKKwkJCQkJCW1fcmVtYWluaW5nID0gc3ltQ2lwaGVyLT5lbmNyeXB0RmluaXNoKG1fb3V0cHV0QnVmZmVyLCAzMDcyKTsKKwkJCQkJfQorCQkJCQllbHNlCisJCQkJCQltX3JlbWFpbmluZyA9IHN5bUNpcGhlci0+ZW5jcnlwdChtX2lucHV0QnVmZmVyLCBtX291dHB1dEJ1ZmZlciwgc3osIDMwNzIpOworCQkJCX0KKwkJCQllbHNlIHsKKworCQkJCQlpZiAoc3ogPT0gMCkgeworCQkJCQkJbV9jb21wbGV0ZSA9IHRydWU7CisJCQkJCQltX3JlbWFpbmluZyA9IHN5bUNpcGhlci0+ZGVjcnlwdEZpbmlzaChtX291dHB1dEJ1ZmZlciwgMzA3Mik7CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQkJbV9yZW1haW5pbmcgPSBzeW1DaXBoZXItPmRlY3J5cHQobV9pbnB1dEJ1ZmZlciwgbV9vdXRwdXRCdWZmZXIsIHN6LCAzMDcyKTsKKwkJCQl9CisJCQl9CisJCX0KKworCX0KKworCXJldHVybiByZXQ7CisKK30KKworRE9NRG9jdW1lbnQgKlRYRk1DaXBoZXI6OmdldERvY3VtZW50KCkgeworCisJcmV0dXJuIE5VTEw7CisKK30KKworRE9NTm9kZSAqIFRYRk1DaXBoZXI6OmdldEZyYWdtZW50Tm9kZSgpIHsKKworCXJldHVybiBOVUxMOwkJLy8gUmV0dXJuIGEgbnVsbCBub2RlCisKK30KKworY29uc3QgWE1MQ2ggKiBUWEZNQ2lwaGVyOjpnZXRGcmFnbWVudElkKCkgeworCisJcmV0dXJuIE5VTEw7CS8vIEVtcHR5IHN0cmluZworCit9CmRpZmYgLS1naXQgYS9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTUNpcGhlci5ocHAgYi9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTUNpcGhlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc0YTI3OQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3RyYW5zZm9ybWVycy9UWEZNQ2lwaGVyLmhwcApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBUWEZNQ2lwaGVyIDo9IENsYXNzIHRoYXQgcGVyZm9ybXMgYSBzeW1tZXRyaWMgZW5jcnlwdC9kZWNyeXB0IHRyYW5zZm9ybQorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBUWEZNQ0lQSEVSX0lOQ0xVREUKKyNkZWZpbmUgVFhGTUNJUEhFUl9JTkNMVURFCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1CYXNlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvU3ltbWV0cmljS2V5LmhwcD4KKyAKKy8qKgorICogXGJyaWVmIFRyYW5zZm9ybWVyIHRvIGhhbmRsZSBzeW1tZXRyaWMgZW5jcnlwdGlvbi4KKyAqCisgKiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gcGFydGljdWxhciBYTUwgRFNJRy9YRU5DIHRyYW5zZm9ybSBhc3NvY2lhdGVkCisgKiB3aXRoIGVuY3J5cHRpb24sIGJ1dCB0aGlzIGlzIGEgY29udmVuaWVudCB3YXkgdG8gaGFuZGxlIHRoaXMgcHJvY2Vzcy4KKyAqIEBpbmdyb3VwIGludGVybmFsCisgKi8KKworY2xhc3MgRFNJR19FWFBPUlQgVFhGTUNpcGhlciA6IHB1YmxpYyBUWEZNQmFzZSB7CisKK3B1YmxpYzoKKworCS8vIENvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMKKworCVRYRk1DaXBoZXIoWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICpkb2MsIFhTRUNDcnlwdG9LZXkgKiBrZXksIGJvb2wgZW5jcnlwdCk7CisJflRYRk1DaXBoZXIoKTsKKworCS8vIE1ldGhvZHMgdG8gZ2V0IHRyYW5mb3JtIG91dHB1dCB0eXBlIGFuZCBpbnB1dCByZXF1aXJlbWVudAorCisJdmlydHVhbCBUWEZNQmFzZTo6aW9UeXBlIGdldElucHV0VHlwZSh2b2lkKTsKKwl2aXJ0dWFsIFRYRk1CYXNlOjppb1R5cGUgZ2V0T3V0cHV0VHlwZSh2b2lkKTsKKwl2aXJ0dWFsIG5vZGVUeXBlIGdldE5vZGVUeXBlKHZvaWQpOworCisJLy8gVFhGTUNpcGhlciBVbmlxdWUKKworCXZvaWQgc2V0S2V5KHVuc2lnbmVkIGNoYXIgKiBrZXksIHVuc2lnbmVkIGludCBrZXlMZW4pOworCisJLy8gTWV0aG9kcyB0byBzZXQgaW5wdXQgZGF0YQorCisJdmlydHVhbCB2b2lkIHNldElucHV0KFRYRk1CYXNlICogbmV3SW5wdXQpOworCisJLy8gTWV0aG9kcyB0byBnZXQgb3V0cHV0IGRhdGEKKworCXZpcnR1YWwgdW5zaWduZWQgaW50IHJlYWRCeXRlcyhYTUxCeXRlICogY29uc3QgdG9GaWxsLCBjb25zdCB1bnNpZ25lZCBpbnQgbWF4VG9GaWxsKTsKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqZ2V0RG9jdW1lbnQoKTsKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICpnZXRGcmFnbWVudE5vZGUoKTsKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0RnJhZ21lbnRJZCgpOworCQorcHJpdmF0ZToKKwlUWEZNQ2lwaGVyKCk7CisKKwlib29sCQkJCQltX2RvRW5jcnlwdDsJCS8vIEFyZSB3ZSBpbiBlbmNyeXB0IChvciBkZWNyeXB0KSBtb2RlCisJWFNFQ0NyeXB0b0tleQkJCSogbXBfY2lwaGVyOwkJLy8gQ3J5cHRvIGltcGxlbWVudGF0aW9uCisJYm9vbAkJCQkJbV9jb21wbGV0ZTsKKwl1bnNpZ25lZCBjaGFyCQkJbV9pbnB1dEJ1ZmZlclsyMDUwXTsKKwl1bnNpZ25lZCBjaGFyCQkJbV9vdXRwdXRCdWZmZXJbMzA3Ml07CS8vIEFsd2F5cyBrZWVwIDJLIG9mIGRhdGEKKwl1bnNpZ25lZCBpbnQJCQltX3JlbWFpbmluZzsJCS8vIEFtb3VudCByZW1haW5pbmcgaW4gb3V0cHV0CisKK307CisKKyNlbmRpZiAvKiBUWEZNQ0lQSEVSX0lOQ0xVREUgKi8KKwpkaWZmIC0tZ2l0IGEvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1Db25jYXRDaGFpbnMuY3BwIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1Db25jYXRDaGFpbnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyOTBiZGEKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTUNvbmNhdENoYWlucy5jcHAKQEAgLTAsMCArMSwxNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMy0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFRYRk1Db25jYXRDaGFpbiA6PSBUYWtlcyBtdWx0aXBsZSBpbnB1dCBjaGFpbnMgYW5kIHRoZW4gcHJvdmlkZXMKKyAqCQkJCQkgIEJZVEVfU1RSRUFNIG91dHB1dCBmb3IgZWFjaCBjaGFpbiBpbiBvcmRlci4KKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisKKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNQ2hhaW4uaHBwPgorI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1Db25jYXRDaGFpbnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCitUWEZNQ29uY2F0Q2hhaW5zOjpUWEZNQ29uY2F0Q2hhaW5zKERPTURvY3VtZW50ICpkb2MpIDogCitUWEZNQmFzZShkb2MpLAorbXBfY3VycmVudFR4Zm0oTlVMTCksCittX2N1cnJlbnRDaGFpbigwKSwKK21fY29tcGxldGUoZmFsc2UpIHsKKworfQorCitUWEZNQ29uY2F0Q2hhaW5zOjp+VFhGTUNvbmNhdENoYWlucygpIHsKKworCXNpemVfdHlwZSBpLCBzOworCXMgPSBtX2NoYWlucy5zaXplKCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgczsgKytpKQorCQlkZWxldGUgbV9jaGFpbnNbaV07CisKKwltX2NoYWlucy5jbGVhcigpOworCit9CisKK3ZvaWQgVFhGTUNvbmNhdENoYWluczo6c2V0SW5wdXQoVFhGTUJhc2UgKm5ld0lucHV0KSB7CisKKwlzaXplX3R5cGUgaSA9IG1fY2hhaW5zLnNpemUoKTsKKworCWlmIChpID09IDApIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpUcmFuc2Zvcm1JbnB1dE91dHB1dEZhaWwsCisJCQkiVFhGTUNvbmNhdENoYWluczo6c2V0SW5wdXQgLSBDYW5ub3QgY29uY2F0aW5hdGUgbmV3IGJhc2UgdHJhbnNmb3JtIHVudGlsIGF0IGxlYXN0IG9uZSBjaGFpbiBpcyBhZGRlZCIpOworCX0KKworCW1fY2hhaW5zW2ktMV0tPmdldExhc3RUeGZtKCktPnNldElucHV0KG5ld0lucHV0KTsKKworfQorCit2b2lkIFRYRk1Db25jYXRDaGFpbnM6OnNldElucHV0KFRYRk1DaGFpbiAqbmV3SW5wdXRDaGFpbikgeworCisJbV9jaGFpbnMucHVzaF9iYWNrKG5ld0lucHV0Q2hhaW4pOworCit9CisJCitUWEZNQmFzZTo6aW9UeXBlIFRYRk1Db25jYXRDaGFpbnM6OmdldElucHV0VHlwZSh2b2lkKSB7CisKKwlyZXR1cm4gVFhGTUJhc2U6OkJZVEVfU1RSRUFNOworCit9CisKK1RYRk1CYXNlOjppb1R5cGUgVFhGTUNvbmNhdENoYWluczo6Z2V0T3V0cHV0VHlwZSh2b2lkKSB7CisKKwlyZXR1cm4gVFhGTUJhc2U6OkJZVEVfU1RSRUFNOworCit9CisKK1RYRk1CYXNlOjpub2RlVHlwZSBUWEZNQ29uY2F0Q2hhaW5zOjpnZXROb2RlVHlwZSh2b2lkKSB7CisKKwlyZXR1cm4gVFhGTUJhc2U6OkRPTV9OT0RFX05PTkU7CisKK30KKworLy8gTWV0aG9kcyB0byBnZXQgb3V0cHV0IGRhdGEKKwordW5zaWduZWQgaW50IFRYRk1Db25jYXRDaGFpbnM6OnJlYWRCeXRlcyhYTUxCeXRlICogY29uc3QgdG9GaWxsLCBjb25zdCB1bnNpZ25lZCBpbnQgbWF4VG9GaWxsKSB7CisKKwlpZiAobV9jb21wbGV0ZSA9PSB0cnVlKQorCQlyZXR1cm4gMDsKKworCS8vIElzIHRoaXMgdGhlIGZpcnN0IG9uZT8KKwlpZiAobXBfY3VycmVudFR4Zm0gPT0gTlVMTCkgeworCisJCWlmIChtX2NoYWlucy5zaXplKCkgPT0gMCkgeworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpUcmFuc2Zvcm1JbnB1dE91dHB1dEZhaWwsCisJCQkJIlRYRk1Db25jYXRDaGFpbnM6OnJlYWRCeXRlcyAtIENhbm5vdCByZWFkIGJ5dGVzIHVudGlsIGNoYWlucyBhZGRlZCIpOworCQl9CisKKwkJbV9jdXJyZW50Q2hhaW4gPSAwOworCQltcF9jdXJyZW50VHhmbSA9IG1fY2hhaW5zW21fY3VycmVudENoYWluXS0+Z2V0TGFzdFR4Zm0oKTsKKworCX0KKworCXVuc2lnbmVkIGludCBieXRlc1JlYWQgPSAwOworCXVuc2lnbmVkIGludCBsYXN0Qnl0ZXNSZWFkID0gMDsKKworCXdoaWxlICghbV9jb21wbGV0ZSAmJiBieXRlc1JlYWQgPCBtYXhUb0ZpbGwpIHsKKworCQlsYXN0Qnl0ZXNSZWFkID0gbXBfY3VycmVudFR4Zm0tPnJlYWRCeXRlcygmdG9GaWxsW2J5dGVzUmVhZF0sIG1heFRvRmlsbCAtIGJ5dGVzUmVhZCk7CisJCWlmIChsYXN0Qnl0ZXNSZWFkID09IDApIHsKKworCQkJaWYgKCsrbV9jdXJyZW50Q2hhaW4gPT0gbV9jaGFpbnMuc2l6ZSgpKQorCQkJCW1fY29tcGxldGUgPSB0cnVlOworCQkJZWxzZQorCQkJCW1wX2N1cnJlbnRUeGZtID0gbV9jaGFpbnNbbV9jdXJyZW50Q2hhaW5dLT5nZXRMYXN0VHhmbSgpOworCisJCX0KKwkJZWxzZSB7CisJCQlieXRlc1JlYWQgKz0gbGFzdEJ5dGVzUmVhZDsKKwkJfQorCisJfQorCisJcmV0dXJuIGJ5dGVzUmVhZDsKKworfQorCitET01Eb2N1bWVudCAqVFhGTUNvbmNhdENoYWluczo6Z2V0RG9jdW1lbnQoKSB7CisKKwlyZXR1cm4gTlVMTDsKKworfQorRE9NTm9kZSAqVFhGTUNvbmNhdENoYWluczo6Z2V0RnJhZ21lbnROb2RlKCkgeworCisJcmV0dXJuIE5VTEw7CisKK30KKworY29uc3QgWE1MQ2ggKiBUWEZNQ29uY2F0Q2hhaW5zOjpnZXRGcmFnbWVudElkKCkgeworCisJcmV0dXJuIE5VTEw7CisKK30KKwkKZGlmZiAtLWdpdCBhL2Mvc3JjL3RyYW5zZm9ybWVycy9UWEZNQ29uY2F0Q2hhaW5zLmhwcCBiL2Mvc3JjL3RyYW5zZm9ybWVycy9UWEZNQ29uY2F0Q2hhaW5zLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTEyMTAwCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1Db25jYXRDaGFpbnMuaHBwCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMy0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFRYRk1Db25jYXRDaGFpbiA6PSBUYWtlcyBtdWx0aXBsZSBpbnB1dCBjaGFpbnMgYW5kIHRoZW4gcHJvdmlkZXMKKyAqCQkJCQkgIEJZVEVfU1RSRUFNIG91dHB1dCBmb3IgZWFjaCBjaGFpbiBpbiBvcmRlci4KKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTUJhc2UuaHBwPgorCitjbGFzcyBUWEZNQ2hhaW47CisKKy8qKgorICogXGJyaWVmIFRyYW5zZm9ybWVyIHRvIGhhbmRsZSBjb25jYXRpbmF0aW9uIG9mIHRyYW5zZm9ybSBjaGFpbnMKKyAqIEBpbmdyb3VwIGludGVybmFsCisgKi8KKworY2xhc3MgRFNJR19FWFBPUlQgVFhGTUNvbmNhdENoYWlucyA6IHB1YmxpYyBUWEZNQmFzZSB7CisKKwkjaWYgZGVmaW5lZChYU0VDX05PX05BTUVTUEFDRVMpCisJdHlwZWRlZiB2ZWN0b3I8VFhGTUNoYWluICo+CQkJVFhGTUNoYWluVmVjdG9yVHlwZQorI2Vsc2UKKwl0eXBlZGVmIHN0ZDo6dmVjdG9yPFRYRk1DaGFpbiAqPglUWEZNQ2hhaW5WZWN0b3JUeXBlOworI2VuZGlmCisKKyNpZiBkZWZpbmVkKFhTRUNfU0laRV9UX0lOX05BTUVTUEFDRV9TVEQpCisJdHlwZWRlZiBzdGQ6OnNpemVfdAkJc2l6ZV90eXBlOworI2Vsc2UKKwl0eXBlZGVmIHNpemVfdAkJCXNpemVfdHlwZTsKKyNlbmRpZgorCitwdWJsaWM6CisKKwlUWEZNQ29uY2F0Q2hhaW5zKFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqZG9jKTsKKwl+VFhGTUNvbmNhdENoYWlucygpOworCisJLy8gTWV0aG9kcyB0byBzZXQgdGhlIGlucHV0cy4gIEZvciB0aGUgY29uY2F0IGNsYXNzLCB0aGlzIHdpbGwKKwkvLyBhcHBlbmQgdGhlIGlucHV0IHRvIHRoZSBsYXN0IGFwcGVuZGVkIGNoYWluCisKKwl2b2lkIHNldElucHV0KFRYRk1CYXNlICpuZXdJbnB1dCk7CisJdm9pZCBzZXRJbnB1dChUWEZNQ2hhaW4gKm5ld0lucHV0Q2hhaW4pOworCQorCS8vIE1ldGhvZHMgdG8gZ2V0IHRyYW5mb3JtIG91dHB1dCB0eXBlIGFuZCBpbnB1dCByZXF1aXJlbWVudAorCisJdmlydHVhbCBUWEZNQmFzZTo6aW9UeXBlIGdldElucHV0VHlwZSh2b2lkKTsKKwl2aXJ0dWFsIFRYRk1CYXNlOjppb1R5cGUgZ2V0T3V0cHV0VHlwZSh2b2lkKTsKKwl2aXJ0dWFsIFRYRk1CYXNlOjpub2RlVHlwZSBnZXROb2RlVHlwZSh2b2lkKTsKKworCS8vIE1ldGhvZHMgdG8gZ2V0IG91dHB1dCBkYXRhCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCByZWFkQnl0ZXMoWE1MQnl0ZSAqIGNvbnN0IHRvRmlsbCwgY29uc3QgdW5zaWduZWQgaW50IG1heFRvRmlsbCk7CisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKmdldERvY3VtZW50KCk7CisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqZ2V0RnJhZ21lbnROb2RlKCk7CisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldEZyYWdtZW50SWQoKTsKKwkKK3ByaXZhdGU6CisJVFhGTUNvbmNhdENoYWlucygpOworCisJVFhGTUNoYWluVmVjdG9yVHlwZQkJCW1fY2hhaW5zOworCVRYRk1CYXNlCQkJCQkqIG1wX2N1cnJlbnRUeGZtOworCXNpemVfdHlwZQkJCQkJbV9jdXJyZW50Q2hhaW47CisJYm9vbAkJCQkJCW1fY29tcGxldGU7Cit9OwpkaWZmIC0tZ2l0IGEvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1Eb2NPYmplY3QuY3BwIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1Eb2NPYmplY3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2ZjI4NDAKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTURvY09iamVjdC5jcHAKQEAgLTAsMCArMSwyMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFRYRk1Eb2NPYmplY3QgOj0gQ2xhc3MgdGhhdCB0YWtlcyBhbiBpbnB1dCBEb2N1bWVudCBvYmplY3QgSUQgdG8gc3RhcnQgYSB0eGZtIHBpcGUKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNRG9jT2JqZWN0LmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXhjZXB0aW9uLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyBDb25zdHJ1Y3QvRGVzdHJ1Y3QKKworVFhGTURvY09iamVjdDo6VFhGTURvY09iamVjdChET01Eb2N1bWVudCAqZG9jKSA6IFRYRk1CYXNlKGRvYykgeworCisJaW5wdXQgPSBOVUxMOworCWZyYWdtZW50SWQgPSBOVUxMOworCXR5cGUgPSBUWEZNQmFzZTo6RE9NX05PREVfTk9ORTsJLy8gTm8gbm9kZXMgY3VycmVudGx5IGhlbGQKKwltcF9lbnYgPSBOVUxMOworCit9CisKK1RYRk1Eb2NPYmplY3Q6On5UWEZNRG9jT2JqZWN0KCkgeworCisJaWYgKGZyYWdtZW50SWQgIT0gTlVMTCkKKwkJWFNFQ19SRUxFQVNFX1hNTENIKGZyYWdtZW50SWQpOworCit9CisKKy8vIE1ldGhvZHMgdG8gc2V0IHRoZSBpbnB1dHMKKwordm9pZCBUWEZNRG9jT2JqZWN0OjpzZXRJbnB1dChUWEZNQmFzZSAqbmV3SW5wdXQpIHsKKworCS8vIFByb2JhYmx5IHNob3VsZCBlcnJvciwgYnV0IHdlIHN0b3JlIGl0IHNvIHdlIGNhbiBsYXRlciBjbGVhciBvdXQgcGlwZXMuCisKKwlpbnB1dCA9IG5ld0lucHV0OworCit9CisKK0RPTU5vZGUgKiBmaW5kRFNJR0lkKERPTU5vZGUgKmN1cnJlbnQsIGNvbnN0IFhNTENoICogbmV3RnJhZ21lbnRJZCwgY29uc3QgWFNFQ0VudiAqIGVudikgeworCisJRE9NTm9kZSAqdG1wLCAqcmV0OworCURPTU5hbWVkTm9kZU1hcCAqYXR0czsKKworCWlmIChjdXJyZW50LT5nZXROb2RlVHlwZSgpID09IERPTU5vZGU6OkVMRU1FTlRfTk9ERSkgeworCisJCWF0dHMgPSBjdXJyZW50LT5nZXRBdHRyaWJ1dGVzKCk7CisJCWlmIChhdHRzICE9IE5VTEwpIHsKKwkJCWludCBzeiA9IGVudi0+Z2V0SWRBdHRyaWJ1dGVOYW1lTGlzdFNpemUoKTsKKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgc3ogOyArK2kpIHsKKwkJCQlpZiAoZW52LT5nZXRJZEF0dHJpYnV0ZU5hbWVMaXN0SXRlbUlzTlMoaSkgPT0gZmFsc2UpIHsKKwkJCQkJdG1wID0gYXR0cy0+Z2V0TmFtZWRJdGVtKGVudi0+Z2V0SWRBdHRyaWJ1dGVOYW1lTGlzdEl0ZW0oaSkpOworCQkJCQlpZiAodG1wICE9IDAgJiYgc3RyRXF1YWxzKHRtcC0+Z2V0Tm9kZVZhbHVlKCksIG5ld0ZyYWdtZW50SWQpKSB7CisKKwkJCQkJCS8vIEZvdW5kIGl0IQorCisJCQkJCQlyZXR1cm4gY3VycmVudDsKKwkJCQkJfQorCQkJCX0KKworCQkJCWVsc2UgeworCQkJCQkvLyBUaGlzIGlzIGEgbmFtZXNwYWNlIGF3YXJlIElkCisJCQkJCXRtcCA9IGF0dHMtPmdldE5hbWVkSXRlbU5TKGVudi0+Z2V0SWRBdHRyaWJ1dGVOYW1lTGlzdEl0ZW1OUyhpKSwKKwkJCQkJCQkJCQkJICAgZW52LT5nZXRJZEF0dHJpYnV0ZU5hbWVMaXN0SXRlbShpKSk7CisJCQkJCWlmICh0bXAgIT0gMCAmJiBzdHJFcXVhbHModG1wLT5nZXROb2RlVmFsdWUoKSwgbmV3RnJhZ21lbnRJZCkpIHsKKwkJCQkJCXJldHVybiBjdXJyZW50OworCQkJCQl9CisKKwkJCQl9CisKKwkJCX0KKworCQl9CisKKwl9CisKKwkvLyBDaGVjayBjaGlsZHJlbgorCisJdG1wID0gY3VycmVudC0+Z2V0Rmlyc3RDaGlsZCgpOworCXdoaWxlICh0bXAgIT0gTlVMTCkgeworCisJCWlmICgocmV0ID0gZmluZERTSUdJZCh0bXAsIG5ld0ZyYWdtZW50SWQsIGVudikpICE9IDApCisJCQlyZXR1cm4gcmV0OworCisJCXRtcCA9IHRtcC0+Z2V0TmV4dFNpYmxpbmcoKTsKKworCX0KKworCXJldHVybiBOVUxMOworCit9CisKK3ZvaWQgVFhGTURvY09iamVjdDo6c2V0SW5wdXQoRE9NRG9jdW1lbnQgKmRvYywgY29uc3QgWE1MQ2ggKiBuZXdGcmFnbWVudElkKSB7CisKKwkvLyBXZSBoYXZlIGEgZG9jdW1lbnQgZnJhZ21lbnQgbWFya2VkIGJ5IGFuIG9iamVjdElEIHN0cmluZy4KKworCS8vIE5vdyB0cnkgdG8gZmluZCB0aGUgbm9kZSB0aGF0IHRoZSBvYmplY3RJZCBiZWxvbmdzIHRvCisKKwlmcmFnbWVudE9iamVjdCA9IGRvYy0+Z2V0RWxlbWVudEJ5SWQobmV3RnJhZ21lbnRJZCk7CisKKwlpZiAoKGZyYWdtZW50T2JqZWN0ID09IE5VTEwpICYmIChtcF9lbnYgIT0gTlVMTCkgJiYgKG1wX2Vudi0+Z2V0SWRCeUF0dHJpYnV0ZU5hbWUoKSkpIHsKKworCQkvLyBJdCBtaWdodCBiZSB0aGF0IG5vIERTSUcgRFREIHdhcyBhdHRhY2hlZCBhbmQgdGhhdCB0aGUgSUQgaXMgaW4gYQorCQkvLyBEU0lHIGVsZW1lbnQgYW5kIHRoZSBhcHBsaWNhdGlvbiBpcyBwZXJtaXR0aW5nIGF0dHJpYnV0ZSBuYW1lIGJhc2VkCisJCS8vIElkIHNlYXJjaGVzCisKKwkJZnJhZ21lbnRPYmplY3QgPSBmaW5kRFNJR0lkKGRvYywgbmV3RnJhZ21lbnRJZCwgbXBfZW52KTsKKworCX0KKworCWlmIChmcmFnbWVudE9iamVjdCA9PSAwKQorCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SUROb3RGb3VuZEluRE9NRG9jKTsKKworCWRvY3VtZW50ID0gZG9jOworCWZyYWdtZW50SWQgPSBYTUxTdHJpbmc6OnJlcGxpY2F0ZShuZXdGcmFnbWVudElkKTsKKwl0eXBlID0gVFhGTUJhc2U6OkRPTV9OT0RFX0RPQ1VNRU5UX0ZSQUdNRU5UOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgRW52IEhhbmRsaW5nCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIFRYRk1Eb2NPYmplY3Q6OnNldEVudihjb25zdCBYU0VDRW52ICogZW52KSB7CisKKwltcF9lbnYgPSBlbnY7CisKK30KKwordm9pZCBUWEZNRG9jT2JqZWN0OjpzZXRJbnB1dChET01Eb2N1bWVudCAqIGRvYywgRE9NTm9kZSAqIG5ld0ZyYWdtZW50T2JqZWN0KSB7CisKKwkvLyBIYXZlIGEgZG9jdW1lbnQgZnJhZ21lbnQgZGlyZWN0bHkgbm90aWZpZWQgYnkgYSBET01fTm9kZQorCisJZG9jdW1lbnQgPSBkb2M7CisJZnJhZ21lbnRPYmplY3QgPSBuZXdGcmFnbWVudE9iamVjdDsKKwl0eXBlID0gVFhGTUJhc2U6OkRPTV9OT0RFX0RPQ1VNRU5UX05PREU7CisKK30KKwordm9pZCBUWEZNRG9jT2JqZWN0OjpzZXRJbnB1dChET01Eb2N1bWVudCAqZG9jKSB7CisKKwlkb2N1bWVudCA9IGRvYzsKKwl0eXBlID0gVFhGTUJhc2U6OkRPTV9OT0RFX0RPQ1VNRU5UOworCit9CisKKwkvLyBNZXRob2RzIHRvIGdldCB0cmFuZm9ybSBvdXRwdXQgdHlwZSBhbmQgaW5wdXQgcmVxdWlyZW1lbnQKKworVFhGTUJhc2U6OmlvVHlwZSBUWEZNRG9jT2JqZWN0OjpnZXRJbnB1dFR5cGUodm9pZCkgeworCisJcmV0dXJuIFRYRk1CYXNlOjpOT05FOworCit9CisKK1RYRk1CYXNlOjppb1R5cGUgVFhGTURvY09iamVjdDo6Z2V0T3V0cHV0VHlwZSh2b2lkKSB7CisKKwlyZXR1cm4gVFhGTUJhc2U6OkRPTV9OT0RFUzsKKworfQorCitUWEZNQmFzZTo6bm9kZVR5cGUgVFhGTURvY09iamVjdDo6Z2V0Tm9kZVR5cGUodm9pZCkgeworCisJcmV0dXJuIHR5cGU7CisKK30KKworCS8vIE1ldGhvZHMgdG8gZ2V0IG91dHB1dCBkYXRhCisKK3Vuc2lnbmVkIGludCBUWEZNRG9jT2JqZWN0OjpyZWFkQnl0ZXMoWE1MQnl0ZSAqIGNvbnN0IHRvRmlsbCwgdW5zaWduZWQgaW50IG1heFRvRmlsbCkgeworCisJcmV0dXJuIDA7CQkvLyBDYW5ub3QgcmVhZCBhIGJ5dGVzdHJlYW0gZnJvbSBhIERPTV9OT0RFUyB0cmFuc2Zvcm0KKworfQorCitET01Eb2N1bWVudCAqIFRYRk1Eb2NPYmplY3Q6OmdldERvY3VtZW50KCkgeworCisJcmV0dXJuIGRvY3VtZW50OworCit9CisKK0RPTU5vZGUgKiBUWEZNRG9jT2JqZWN0OjpnZXRGcmFnbWVudE5vZGUoKSB7CisKKwlyZXR1cm4gZnJhZ21lbnRPYmplY3Q7CisKK30KKworY29uc3QgWE1MQ2ggKiBUWEZNRG9jT2JqZWN0OjpnZXRGcmFnbWVudElkKCkgeworCisJcmV0dXJuIGZyYWdtZW50SWQ7CQorCit9CmRpZmYgLS1naXQgYS9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTURvY09iamVjdC5ocHAgYi9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTURvY09iamVjdC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU0YmY4OQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3RyYW5zZm9ybWVycy9UWEZNRG9jT2JqZWN0LmhwcApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBUWEZNRG9jT2JqZWN0IDo9IENsYXNzIHRoYXQgdGFrZXMgYW4gaW5wdXQgRG9jdW1lbnQgb2JqZWN0IElEIHRvIHN0YXJ0IGEgdHhmbSBwaXBlCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFRYRk1ET0NPQkpFQ1RfSU5DTFVERQorI2RlZmluZSBUWEZNRE9DT0JKRUNUX0lOQ0xVREUKKworI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1CYXNlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNTYWZlQnVmZmVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRW52LmhwcD4KKworLy8gWGVyY2VzCisKKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPgorCisvKioKKyAqIFxicmllZiBUcmFuc2Zvcm1lciB0aGF0IGRlZmluZXMgYSBkb2N1bWVudCBzdGFydCB0byBhIHRyYW5zZm9ybSBjaGFpbgorICogQGluZ3JvdXAgaW50ZXJuYWwKKyAqLworCisKK2NsYXNzIERTSUdfRVhQT1JUIFRYRk1Eb2NPYmplY3QgOiBwdWJsaWMgVFhGTUJhc2UgeworCitwdWJsaWM6CisKKwlUWEZNRG9jT2JqZWN0KFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqZG9jKTsKKwl+VFhGTURvY09iamVjdCgpOworCisJLy8gTWV0aG9kcyB0byBzZXQgdGhlIGlucHV0cworCisJdm9pZCBzZXRJbnB1dChUWEZNQmFzZSAqbmV3SW5wdXQpOworCXZvaWQgc2V0SW5wdXQoCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqZG9jLCAKKwkJY29uc3QgWE1MQ2ggKiBuZXdGcmFnbWVudElkCisJKTsKKwl2b2lkIHNldElucHV0KAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKmRvYywgCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICpuZXdGcmFnbWVudE9iamVjdAorCSk7CisJdm9pZCBzZXRJbnB1dChYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKmRvYyk7CisKKwkvLyBFbnZpcm9ubWVudCAtIHdoZW4gc2VhcmNoaW5nIGZvciBJRHMgd2UgbmVlZCB0byBrbm93IGFib3V0IHRoZSB1c2VyCisJLy8gZW52aXJvbm1lbnQgKG5hbWVseSAtIGhvdyB0byBoYW5kbGUgSUQgYXR0cmlidXRlIG5hbWVzKQorCisJdm9pZCBzZXRFbnYoY29uc3QgWFNFQ0VudiAqIGVudik7CisKKwkvLyBNZXRob2RzIHRvIGdldCB0cmFuZm9ybSBvdXRwdXQgdHlwZSBhbmQgaW5wdXQgcmVxdWlyZW1lbnQKKworCVRYRk1CYXNlOjppb1R5cGUgZ2V0SW5wdXRUeXBlKHZvaWQpOworCVRYRk1CYXNlOjppb1R5cGUgZ2V0T3V0cHV0VHlwZSh2b2lkKTsKKwlUWEZNQmFzZTo6bm9kZVR5cGUgZ2V0Tm9kZVR5cGUodm9pZCk7CisKKwkvLyBNZXRob2RzIHRvIGdldCBvdXRwdXQgZGF0YQorCisJdW5zaWduZWQgaW50IHJlYWRCeXRlcyhYTUxCeXRlICogY29uc3QgdG9GaWxsLCBjb25zdCB1bnNpZ25lZCBpbnQgbWF4VG9GaWxsKTsKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGdldERvY3VtZW50KCk7CisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqIGdldEZyYWdtZW50Tm9kZSgpOworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRGcmFnbWVudElkKCk7CisJCitwcml2YXRlOgorCisJWE1MQ2gJKiBmcmFnbWVudElkOwkJCQkvLyBUaGUgaWRlbnRpZmllciBvZiB0aGUgb2JqZWN0CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50IAorCQkJKiBkb2N1bWVudDsJCQkJCS8vIFRoZSBET00gZG9jdW1lbnQgd2UgYXJlIHdvcmtpbmcgd2l0aAorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlIAorCQkJKiBmcmFnbWVudE9iamVjdDsJCQkvLyBUaGUgb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIGRvYyBmcmFnbWVudCB0byB1c2UKKwlUWEZNQmFzZTo6bm9kZVR5cGUgdHlwZTsJCQkvLyBUaGUgdHlwZSBvZiBub2RlcyB0aGlzIGhvbGRzCisKKwljb25zdCBYU0VDRW52ICogbXBfZW52OworCisJCisJVFhGTURvY09iamVjdCgpOworfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTUVudmVsb3BlLmNwcCBiL2Mvc3JjL3RyYW5zZm9ybWVycy9UWEZNRW52ZWxvcGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMmIxNGEKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTUVudmVsb3BlLmNwcApAQCAtMCwwICsxLDI1NyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogVFhGTUVudmVsb3BlIDo9IENsYXNzIHRoYXQgY2FsY3VsYXRlcyBhbiBFbnZlbG9wZSB3aXRoIGFuIFhQYXRoIGV2YWx1YXRvcgorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1FbnZlbG9wZS5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0V4Y2VwdGlvbi5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDRE9NVXRpbHMuaHBwPgorCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFN0cmluZy5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFVuaURlZnMuaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworCitUWEZNRW52ZWxvcGU6OlRYRk1FbnZlbG9wZShET01Eb2N1bWVudCAqZG9jKSA6CitUWEZNQmFzZShkb2MpIHsKKworCit9CisKK1RYRk1FbnZlbG9wZTo6flRYRk1FbnZlbG9wZSgpIHsKKworCit9CisKKy8vIE1ldGhvZHMgdG8gc2V0IHRoZSBpbnB1dHMKKwordm9pZCBUWEZNRW52ZWxvcGU6OnNldElucHV0KFRYRk1CYXNlICpuZXdJbnB1dCkgeworCisJaW5wdXQgPSBuZXdJbnB1dDsKKworCWlmIChuZXdJbnB1dC0+Z2V0T3V0cHV0VHlwZSgpICE9IFRYRk1CYXNlOjpET01fTk9ERVMpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlRyYW5zZm9ybUlucHV0T3V0cHV0RmFpbCwgIlhQYXRoIHJlcXVpcmVzIERPTV9OT0RFUyBpbnB1dCB0eXBlIik7CisKKwl9CisKKwkvLyBFeHBhbmQgaWYgbmVjZXNzYXJ5CisJLy90aGlzLT5leHBhbmROYW1lU3BhY2VzKCk7CisKKwlrZWVwQ29tbWVudHMgPSBpbnB1dC0+Z2V0Q29tbWVudHNTdGF0dXMoKTsKKworCS8vIFNldCB1cCBmb3IgdGhlIG5ldyBkb2N1bWVudAorCW1wX2RvY3VtZW50ID0gaW5wdXQtPmdldERvY3VtZW50KCk7CisKKwkvLyBOb3cgd29yayBvdXQgd2hhdCB3ZSBoYXZlIHRvIHNldCB1cCBpbiB0aGUgbmV3IHByb2Nlc3NpbmcKKworCVRYRk1CYXNlOjpub2RlVHlwZSBpbnB1dFR5cGUgPSBpbnB1dC0+Z2V0Tm9kZVR5cGUoKTsKKworCisJc3dpdGNoIChpbnB1dFR5cGUpIHsKKworCWNhc2UgRE9NX05PREVfRE9DVU1FTlQgOgorCisJCW1wX3N0YXJ0Tm9kZSA9IG1wX2RvY3VtZW50OworCQlicmVhazsKKworCWNhc2UgRE9NX05PREVfRE9DVU1FTlRfRlJBR01FTlQgOgorCisJCW1wX3N0YXJ0Tm9kZSA9IGlucHV0LT5nZXRGcmFnbWVudE5vZGUoKTsKKwkJYnJlYWs7CisKKwlkZWZhdWx0IDoKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkVudmVsb3BlRXJyb3IpOwkvLyBTaG91bGQgbmV2ZXIgZ2V0IGhlcmUKKworCX0KKworCS8vIFJlYWR5IHRvIGV2YWx1YXRlCisKK30KKworCisvLyBNZXRob2RzIHRvIGdldCB0cmFuZm9ybSBvdXRwdXQgdHlwZSBhbmQgaW5wdXQgcmVxdWlyZW1lbnQKKworVFhGTUJhc2U6OmlvVHlwZSBUWEZNRW52ZWxvcGU6OmdldElucHV0VHlwZSh2b2lkKSB7CisKKwlyZXR1cm4gVFhGTUJhc2U6OkRPTV9OT0RFUzsKKworfQorCitUWEZNQmFzZTo6aW9UeXBlIFRYRk1FbnZlbG9wZTo6Z2V0T3V0cHV0VHlwZSh2b2lkKSB7CisKKwlyZXR1cm4gVFhGTUJhc2U6OkRPTV9OT0RFUzsKKworfQorCitUWEZNQmFzZTo6bm9kZVR5cGUgVFhGTUVudmVsb3BlOjpnZXROb2RlVHlwZSh2b2lkKSB7CisKKwlyZXR1cm4gVFhGTUJhc2U6OkRPTV9OT0RFX1hQQVRIX05PREVTRVQ7CisKK30KKworLy8gRW52ZWxvcGUgKGFuZCBYUGF0aCkgdW5pcXVlCisKK3ZvaWQgYWRkRW52ZWxvcGVOb2RlKERPTU5vZGUgKnN0YXJ0Tm9kZSwgWFNFQ1hQYXRoTm9kZUxpc3QgJiBYUGF0aE1hcCwgRE9NTm9kZSAqIHNpZ05vZGUpIHsKKworCVhTRUNfVVNJTkdfWEVSQ0VTKERPTU5hbWVkTm9kZU1hcCk7CisJCisJRE9NTm9kZSAqdG1wOworCURPTU5hbWVkTm9kZU1hcCAqYXR0czsKKwlYTUxTaXplX3QgYXR0c1NpemUsIGk7CisJCisJaWYgKHN0YXJ0Tm9kZSA9PSBzaWdOb2RlKQorCQlyZXR1cm47CisKKwlYUGF0aE1hcC5hZGROb2RlKHN0YXJ0Tm9kZSk7CisKKwlpZiAoc3RhcnROb2RlLT5nZXROb2RlVHlwZSgpID09IERPTU5vZGU6OkVMRU1FTlRfTk9ERSkgeworCisJCWF0dHMgPSBzdGFydE5vZGUtPmdldEF0dHJpYnV0ZXMoKTsKKwkJaWYgKGF0dHMgIT0gTlVMTCkKKwkJCWF0dHNTaXplID0gYXR0cy0+Z2V0TGVuZ3RoKCk7CisJCWVsc2UKKwkJCWF0dHNTaXplID0gMDsKKworCQlmb3IgKGkgPSAwOyBpIDwgYXR0c1NpemU7ICsraSkgeworCisJCQl0bXAgPSBhdHRzLT5pdGVtKGkpOworCQkJWFBhdGhNYXAuYWRkTm9kZSh0bXApOworCisJCX0KKworCX0KKworCS8vIE5vdyBkbyBhbnkgY2hpbGRlcmVuCisJCisJdG1wID0gc3RhcnROb2RlLT5nZXRGaXJzdENoaWxkKCk7CisKKwl3aGlsZSAodG1wICE9IE5VTEwpIHsKKworCQlhZGRFbnZlbG9wZU5vZGUodG1wLCBYUGF0aE1hcCwgc2lnTm9kZSk7CisJCXRtcCA9IHRtcC0+Z2V0TmV4dFNpYmxpbmcoKTsKKworCX0KK30KKwordm9pZCBhZGRFbnZlbG9wZVBhcmVudE5TTm9kZXMoRE9NTm9kZSAqc3RhcnROb2RlLCBYU0VDWFBhdGhOb2RlTGlzdCAmIFhQYXRoTWFwKSB7CisKKwlYU0VDX1VTSU5HX1hFUkNFUyhET01OYW1lZE5vZGVNYXApOworCQorCURPTU5vZGUgKnRtcDsKKwlET01OYW1lZE5vZGVNYXAgKmF0dHM7CisJWE1MU2l6ZV90IGF0dHNTaXplLCBpOworCQorCWlmIChzdGFydE5vZGUgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJaWYgKHN0YXJ0Tm9kZS0+Z2V0Tm9kZVR5cGUoKSA9PSBET01Ob2RlOjpFTEVNRU5UX05PREUpIHsKKworCQlhdHRzID0gc3RhcnROb2RlLT5nZXRBdHRyaWJ1dGVzKCk7CisJCWlmIChhdHRzICE9IE5VTEwpCisJCQlhdHRzU2l6ZSA9IGF0dHMtPmdldExlbmd0aCgpOworCQllbHNlCisJCQlhdHRzU2l6ZSA9IDA7CisKKwkJZm9yIChpID0gMDsgaSA8IGF0dHNTaXplOyArK2kpIHsKKworCQkJdG1wID0gYXR0cy0+aXRlbShpKTsKKwkJCWlmIChYTUxTdHJpbmc6OmNvbXBhcmVOU3RyaW5nKHRtcC0+Z2V0Tm9kZU5hbWUoKSwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyWG1sbnMsIDUpID09IDAgJiYKKwkJCQkodG1wLT5nZXROb2RlTmFtZSgpWzVdID09IGNoTnVsbCB8fCB0bXAtPmdldE5vZGVOYW1lKClbNV0gPT0gY2hDb2xvbikpCisJCQkJWFBhdGhNYXAuYWRkTm9kZSh0bXApOworCisJCX0KKworCX0KKworCS8vIE5vdyBkbyBwYXJlbnQKKwlhZGRFbnZlbG9wZVBhcmVudE5TTm9kZXMoc3RhcnROb2RlLT5nZXRQYXJlbnROb2RlKCksIFhQYXRoTWFwKTsKKwkKK30KKwordm9pZCBUWEZNRW52ZWxvcGU6OmV2YWx1YXRlRW52ZWxvcGUoRE9NTm9kZSAqdCkgeworCisJRE9NTm9kZSAqc2lnTm9kZTsKKworCS8vIEZpbmQgdGhlIHNpZ25hdHVyZSBub2RlCisJc2lnTm9kZSA9IHQtPmdldFBhcmVudE5vZGUoKTsKKworCXdoaWxlIChzaWdOb2RlICE9IE5VTEwgJiYgIXN0ckVxdWFscyhnZXREU0lHTG9jYWxOYW1lKHNpZ05vZGUpLCAiU2lnbmF0dXJlIikpCisJCXNpZ05vZGUgPSBzaWdOb2RlLT5nZXRQYXJlbnROb2RlKCk7CisKKwlpZiAoc2lnTm9kZSA9PSBOVUxMKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFbnZlbG9wZUVycm9yLAorCQkJIlVuYWJsZSB0byBmaW5kIHNpZ25hdHVyZSBvd25lciBvZiBub2RlIHBhc3NlZCB0byBFbnZlbG9wZSBUcmFuc2Zvcm0iKTsKKworCX0KKworCS8vIENoZWNrIGlmIHNpZ05vZGUgaXMgYW4gYW5jZXN0b3Igb2YgbXBfc3RhcnROb2RlIC0gaWYgc28sIGp1c3QgcmV0dXJuCisJRE9NTm9kZSAqIGMgPSBtcF9zdGFydE5vZGU7CisJd2hpbGUgKGMgIT0gTlVMTCkgeworCisJCWlmIChjID09IHNpZ05vZGUpCisJCQlyZXR1cm47CisKKwkJYyA9IGMtPmdldFBhcmVudE5vZGUoKTsKKworCX0KKworCWFkZEVudmVsb3BlTm9kZShtcF9zdGFydE5vZGUsIG1fWFBhdGhNYXAsIHNpZ05vZGUpOworCWFkZEVudmVsb3BlUGFyZW50TlNOb2RlcyhtcF9zdGFydE5vZGUtPmdldFBhcmVudE5vZGUoKSwgbV9YUGF0aE1hcCk7CisKK30KKworLy8gTWV0aG9kcyB0byBnZXQgb3V0cHV0IGRhdGEKKwordW5zaWduZWQgaW50IFRYRk1FbnZlbG9wZTo6cmVhZEJ5dGVzKFhNTEJ5dGUgKiBjb25zdCB0b0ZpbGwsIHVuc2lnbmVkIGludCBtYXhUb0ZpbGwpIHsKKworCXJldHVybiAwOworCit9CisKK0RPTURvY3VtZW50ICpUWEZNRW52ZWxvcGU6OmdldERvY3VtZW50KCkgeworCisJcmV0dXJuIG1wX2RvY3VtZW50OworCit9CisKK0RPTU5vZGUgKlRYRk1FbnZlbG9wZTo6Z2V0RnJhZ21lbnROb2RlKCkgeworCisJcmV0dXJuIE5VTEw7CisKK30KKworY29uc3QgWE1MQ2ggKiBUWEZNRW52ZWxvcGU6OmdldEZyYWdtZW50SWQoKSB7CisKKwlyZXR1cm4gTlVMTDsJLy8gRW1wdHkgc3RyaW5nCisKK30KKworWFNFQ1hQYXRoTm9kZUxpc3QJJiBUWEZNRW52ZWxvcGU6OmdldFhQYXRoTm9kZUxpc3QoKSB7CisKKwlyZXR1cm4gbV9YUGF0aE1hcDsKKworfQpkaWZmIC0tZ2l0IGEvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1FbnZlbG9wZS5ocHAgYi9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTUVudmVsb3BlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDdmZWY2Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1FbnZlbG9wZS5ocHAKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogVFhGTUVudmVsb3BlIDo9IENsYXNzIHRoYXQgY2FsY3VsYXRlcyBhbiBFbnZlbG9wZSB3aXRoIGFuIFhQYXRoIGV2YWx1YXRvcgorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1CYXNlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNTYWZlQnVmZmVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2Nhbm9uL1hTRUNDMTRuMjAwMTAzMTUuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1NhZmVCdWZmZXJGb3JtYXR0ZXIuaHBwPgorCisvLyBYZXJjZXMKKworI2luY2x1ZGUgPHhlcmNlc2MvZG9tL0RPTS5ocHA+CisKKy8qKgorICogXGJyaWVmIFRyYW5zZm9ybWVyIHRvIGhhbmRsZSBlbnZlbG9wZSB0cmFuc2Zvcm1zCisgKiBAaW5ncm91cCBpbnRlcm5hbAorICovCisKK2NsYXNzIERTSUdfRVhQT1JUIFRYRk1FbnZlbG9wZSA6IHB1YmxpYyBUWEZNQmFzZSB7CisKK3ByaXZhdGU6CisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQJKiBtcF9kb2N1bWVudDsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZQkJKiBtcF9zdGFydE5vZGU7CisKK3B1YmxpYzoKKworCVRYRk1FbnZlbG9wZShYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKmRvYyk7CisJflRYRk1FbnZlbG9wZSgpOworCisJLy8gTWV0aG9kcyB0byBzZXQgdGhlIGlucHV0cworCisJdm9pZCBzZXRJbnB1dChUWEZNQmFzZSAqbmV3SW5wdXQpOworCQorCS8vIE1ldGhvZHMgdG8gZ2V0IHRyYW5mb3JtIG91dHB1dCB0eXBlIGFuZCBpbnB1dCByZXF1aXJlbWVudAorCisJdmlydHVhbCBUWEZNQmFzZTo6aW9UeXBlIGdldElucHV0VHlwZSh2b2lkKTsKKwl2aXJ0dWFsIFRYRk1CYXNlOjppb1R5cGUgZ2V0T3V0cHV0VHlwZSh2b2lkKTsKKwl2aXJ0dWFsIFRYRk1CYXNlOjpub2RlVHlwZSBnZXROb2RlVHlwZSh2b2lkKTsKKworCS8vIEVudmVsb3BlIHVuaXF1ZQorCisJdm9pZCBldmFsdWF0ZUVudmVsb3BlKFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICp0KTsKKworCS8vIE1ldGhvZHMgdG8gZ2V0IG91dHB1dCBkYXRhCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCByZWFkQnl0ZXMoWE1MQnl0ZSAqIGNvbnN0IHRvRmlsbCwgY29uc3QgdW5zaWduZWQgaW50IG1heFRvRmlsbCk7CisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKmdldERvY3VtZW50KCk7CisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqZ2V0RnJhZ21lbnROb2RlKCk7CisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldEZyYWdtZW50SWQoKTsKKwl2aXJ0dWFsIFhTRUNYUGF0aE5vZGVMaXN0CSYgZ2V0WFBhdGhOb2RlTGlzdCgpOworcHJpdmF0ZToKKwlUWEZNRW52ZWxvcGUoKTsKK307CisKZGlmZiAtLWdpdCBhL2Mvc3JjL3RyYW5zZm9ybWVycy9UWEZNTUQ1LmNwcCBiL2Mvc3JjL3RyYW5zZm9ybWVycy9UWEZNTUQ1LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2IyYTAxCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1NRDUuY3BwCkBAIC0wLDAgKzEsMTYyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBUWEZNTUQ1IDo9IENsYXNzIHRoYXQgcGVyZm9ybXMgYSBNRDUgdHJhbnNmb3JtCisgKgorICogJElkJAorICoKKyAqLworCisvLyBYU0VDCisKKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNTUQ1LmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNQbGF0Zm9ybVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXhjZXB0aW9uLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKy8vIFN0YW5kYXJhZCBpbmNsdWRlcyAKKworVFhGTU1ENTo6VFhGTU1ENShET01Eb2N1bWVudCAqZG9jLAorCQkJCQkJCQkJIFhTRUNDcnlwdG9LZXkgKiBrZXkpIDogVFhGTUJhc2UgKGRvYykgeworCisJdG9PdXRwdXQgPSAwOwkJCQkJLy8gTm90aGluZyB5ZXQgdG8gb3V0cHV0CisKKwlpZiAoa2V5ID09IE5VTEwpCisJCS8vIEdldCBhIE1ENSB3b3JrZXIKKwkJbXBfaCA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5oYXNoTUQ1KCk7CisJZWxzZSB7CisJCS8vIEdldCBhbiBITUFDIE1ENQorCQkKKwkJbXBfaCA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5oYXNoSE1BQ01ENSgpOworCQltcF9oLT5zZXRLZXkoa2V5KTsKKworCX0KKworCQorCWlmICghbXBfaCkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q3J5cHRvUHJvdmlkZXJFcnJvciwgCisJCQkJIkVycm9yIHJlcXVlc3RpbmcgTUQ1IG9iamVjdCBmcm9tIENyeXB0byBQcm92aWRlciIpOworCisJfQorCQkJCQkJCQkJCit9OworCitUWEZNTUQ1Ojp+VFhGTU1ENSgpIHsKKworCS8vIENsZWFuIHVwCisJaWYgKG1wX2gpCisJCWRlbGV0ZSBtcF9oOworCit9OworCisJLy8gTWV0aG9kcyB0byBzZXQgdGhlIGlucHV0cworCisvL3ZvaWQgVFhGTU1ENTo6c2V0SW5wdXQoVFhGTUJhc2UgKmlucHV0KTsKKworCS8vIE1ldGhvZHMgdG8gZ2V0IHRyYW5mb3JtIG91dHB1dCB0eXBlIGFuZCBpbnB1dCByZXF1aXJlbWVudAorCitUWEZNQmFzZTo6aW9UeXBlIFRYRk1NRDU6OmdldElucHV0VHlwZSh2b2lkKSB7CisKKwlyZXR1cm4gVFhGTUJhc2U6OkJZVEVfU1RSRUFNOworCit9CitUWEZNQmFzZTo6aW9UeXBlIFRYRk1NRDU6OmdldE91dHB1dFR5cGUodm9pZCkgeworCisJcmV0dXJuIFRYRk1CYXNlOjpCWVRFX1NUUkVBTTsKKworfQorCisKK1RYRk1CYXNlOjpub2RlVHlwZSBUWEZNTUQ1OjpnZXROb2RlVHlwZSh2b2lkKSB7CisKKwlyZXR1cm4gVFhGTUJhc2U6OkRPTV9OT0RFX05PTkU7CisKK30KKworCS8vIE1ldGhvZHMgdG8gc2V0IGlucHV0IGRhdGEKKwordm9pZCBUWEZNTUQ1OjpzZXRJbnB1dChUWEZNQmFzZSAqIGlucHV0VCkgeworCisJaW5wdXQgPSBpbnB1dFQ7CisKKwlrZWVwQ29tbWVudHMgPSBpbnB1dC0+Z2V0Q29tbWVudHNTdGF0dXMoKTsKKworCS8vIE5vdyBydW4gdGhyb3VnaCB0aGUgZGF0YQorCXVuc2lnbmVkIGNoYXIgYnVmZmVyWzEwMjRdOworCXVuc2lnbmVkIGludCBzaXplOworCisJd2hpbGUgKChzaXplID0gaW5wdXQtPnJlYWRCeXRlcygoWE1MQnl0ZSAqKSBidWZmZXIsIDEwMjQpKSAhPSAwKQorCQltcF9oLT5oYXNoKGJ1ZmZlciwgc2l6ZSk7CisJCisJLy8gRmluYWxpc2UKKworCW1kX2xlbiA9IG1wX2gtPmZpbmlzaChtZF92YWx1ZSwgQ1JZUFRPX01BWF9IQVNIX1NJWkUpOworCisJdG9PdXRwdXQgPSBtZF9sZW47CisKK30KKworCit1bnNpZ25lZCBpbnQgVFhGTU1ENTo6cmVhZEJ5dGVzKFhNTEJ5dGUgKiBjb25zdCB0b0ZpbGwsIHVuc2lnbmVkIGludCBtYXhUb0ZpbGwpIHsKKwkKKwl1bnNpZ25lZCBpbnQgcmV0OworCisJaWYgKHRvT3V0cHV0ID09IDApCisJCXJldHVybiAwOworCisJLy8gQ2hlY2sgaWYgd2UgY2FuIGp1c3Qgb3V0cHV0IGV2ZXJ5dGhpbmcgbGVmdAorCWlmICh0b091dHB1dCA8PSBtYXhUb0ZpbGwpIHsKKworCQltZW1jcHkoKGNoYXIgKikgdG9GaWxsLCAmbWRfdmFsdWVbbWRfbGVuIC0gdG9PdXRwdXRdLCB0b091dHB1dCk7CisJCXJldCA9IHRvT3V0cHV0OworCQl0b091dHB1dCA9IDA7CisKKwkJcmV0dXJuIHJldDsKKworCX0KKworCS8vIE91dHB1dCBqdXN0IHNvbWUKKworCW1lbWNweSgoY2hhciAqKSB0b0ZpbGwsICZtZF92YWx1ZVttZF9sZW4gLSB0b091dHB1dF0sIG1heFRvRmlsbCk7CisJcmV0ID0gbWF4VG9GaWxsOworCXRvT3V0cHV0IC09IG1heFRvRmlsbDsKKworCXJldHVybiByZXQ7CisKK30KKworRE9NRG9jdW1lbnQgKiBUWEZNTUQ1OjpnZXREb2N1bWVudCgpIHsKKworCXJldHVybiBOVUxMOworCit9CisKK0RPTU5vZGUgKiBUWEZNTUQ1OjpnZXRGcmFnbWVudE5vZGUoKSB7CisKKwlyZXR1cm4gTlVMTDsJCS8vIFJldHVybiBhIG51bGwgbm9kZQorCit9OworCitjb25zdCBYTUxDaCAqIFRYRk1NRDU6OmdldEZyYWdtZW50SWQoKSB7CisKKwlyZXR1cm4gTlVMTDsJLy8gRW1wdHkgc3RyaW5nCisKK30KZGlmZiAtLWdpdCBhL2Mvc3JjL3RyYW5zZm9ybWVycy9UWEZNTUQ1LmhwcCBiL2Mvc3JjL3RyYW5zZm9ybWVycy9UWEZNTUQ1LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGNhMjY4Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1NRDUuaHBwCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFRYRk1NRDUgOj0gQ2xhc3MgdGhhdCBwZXJmb3JtcyBhIE1ENSB0cmFuc2Zvcm0KKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgVFhGTU1ENV9JTkNMVURFCisjZGVmaW5lIFRYRk1NRDVfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNQmFzZS5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b1Byb3ZpZGVyLmhwcD4KKworLyoqCisgKiBcYnJpZWYgVHJhbnNmb3JtZXIgdG8gaGFuZGxlIGNyZWF0ZSBhIE1ENS0xIGhhc2ggZnJvbSBhIGNoYWluCisgKiBAaW5ncm91cCBpbnRlcm5hbAorICovCisKK2NsYXNzIERTSUdfRVhQT1JUIFRYRk1NRDUgOiBwdWJsaWMgVFhGTUJhc2UgeworCitwcml2YXRlOgorCisJWFNFQ0NyeXB0b0hhc2gJCSogbXBfaDsJCQkJCQkJLy8gVG8gaG9sZCB0aGUgaGFzaAorCXVuc2lnbmVkIGNoYXIJCW1kX3ZhbHVlW0NSWVBUT19NQVhfSEFTSF9TSVpFXTsJLy8gRmluYWwgb3V0cHV0CisJdW5zaWduZWQgaW50CQltZF9sZW47CQkJCQkJCS8vIExlbmd0aCBvZiBkaWdlc3QKKworCXVuc2lnbmVkIGludAkJdG9PdXRwdXQ7CQkJCQkJLy8gQW1vdW50IHN0aWxsIHRvIG91dHB1dAorCitwdWJsaWM6CisKKwlUWEZNTUQ1KFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqZG9jLCBYU0VDQ3J5cHRvS2V5ICoga2V5ID0gTlVMTCk7CisJflRYRk1NRDUoKTsKKworCS8vIE1ldGhvZHMgdG8gZ2V0IHRyYW5mb3JtIG91dHB1dCB0eXBlIGFuZCBpbnB1dCByZXF1aXJlbWVudAorCisJdmlydHVhbCBUWEZNQmFzZTo6aW9UeXBlIGdldElucHV0VHlwZSh2b2lkKTsKKwl2aXJ0dWFsIFRYRk1CYXNlOjppb1R5cGUgZ2V0T3V0cHV0VHlwZSh2b2lkKTsKKwl2aXJ0dWFsIG5vZGVUeXBlIGdldE5vZGVUeXBlKHZvaWQpOworCisJLy8gTWV0aG9kcyB0byBzZXQgaW5wdXQgZGF0YQorCisJdmlydHVhbCB2b2lkIHNldElucHV0KFRYRk1CYXNlICogaW5wdXRUKTsKKworCS8vIE1ldGhvZHMgdG8gZ2V0IG91dHB1dCBkYXRhCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCByZWFkQnl0ZXMoWE1MQnl0ZSAqIGNvbnN0IHRvRmlsbCwgY29uc3QgdW5zaWduZWQgaW50IG1heFRvRmlsbCk7CisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKmdldERvY3VtZW50KCk7CisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqZ2V0RnJhZ21lbnROb2RlKCk7CisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldEZyYWdtZW50SWQoKTsKKwkKK3ByaXZhdGU6CisJVFhGTU1ENSgpOworfTsKKworCisKKyNlbmRpZiAvKiBUWEZNTUQ1ICovCmRpZmYgLS1naXQgYS9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTU91dHB1dEZpbGUuY3BwIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1PdXRwdXRGaWxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzU2MzlhCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1PdXRwdXRGaWxlLmNwcApAQCAtMCwwICsxLDEzMCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogVFhGTU91dHB1dEZpbGUgOj0gVHJhbnNmb3JtIHRoYXQgb3V0cHV0cyB0aGUgYnl0ZSBzdHJlYW0gdG8gYSBmaWxlIHdpdGhvdXQgY2hhbmdpbmcKKyAqCQkJCQkJCSAgdGhlIGFjdHVhbCBkYXRhIGluIGFueSB3YXkKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNT3V0cHV0RmlsZS5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0V4Y2VwdGlvbi5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyBEZXN0cnVjdG9yCisKK1RYRk1PdXRwdXRGaWxlOjp+VFhGTU91dHB1dEZpbGUoKSB7CisKKyAgICBpZiAoZi5pc19vcGVuKCkpCisgICAgICAgIGYud3JpdGUoIlxuLS0tLS0gRU5EIC0tLS0tXG4iLCAxNyk7CisJZi5jbG9zZSgpOworCit9CisKKy8vIE1ldGhvZHMgdG8gc2V0IHRoZSBpbnB1dHMKKwordm9pZCBUWEZNT3V0cHV0RmlsZTo6c2V0SW5wdXQoVFhGTUJhc2UgKm5ld0lucHV0KSB7CisKKwlpbnB1dCA9IG5ld0lucHV0OworCisJaWYgKG5ld0lucHV0LT5nZXRPdXRwdXRUeXBlKCkgIT0gVFhGTUJhc2U6OkJZVEVfU1RSRUFNKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpUcmFuc2Zvcm1JbnB1dE91dHB1dEZhaWwsICJPdXRwdXRGaWxlIHRyYW5zZm9ybSByZXF1aXJlcyBCWVRFX1NUUkVBTSBpbnB1dCIpOworCisJfQorCisJa2VlcENvbW1lbnRzID0gaW5wdXQtPmdldENvbW1lbnRzU3RhdHVzKCk7CisKK30KKworYm9vbCBUWEZNT3V0cHV0RmlsZTo6c2V0RmlsZShjaGFyICogY29uc3QgZmlsZU5hbWUpIHsKKworCS8vIE9wZW4gYSBmaWxlIGZvciBvdXRwdXR0aW5nCisKKwl1c2luZyBzdGQ6OmlvczsKKworICAgIGYub3BlbihmaWxlTmFtZSwgaW9zOjpiaW5hcnl8aW9zOjpvdXR8aW9zOjphcHApOworCisJaWYgKGYuaXNfb3BlbigpKSB7CisgICAgICAgIGYud3JpdGUoIlxuLS0tLS0gQkVHSU4gLS0tLS1cbiIsIDE5KTsKKwkJcmV0dXJuIHRydWU7CisgICAgfQorCisJcmV0dXJuIGZhbHNlOworCit9CisKKworCisvLyBNZXRob2RzIHRvIGdldCB0cmFuZm9ybSBvdXRwdXQgdHlwZSBhbmQgaW5wdXQgcmVxdWlyZW1lbnQKKworVFhGTUJhc2U6OmlvVHlwZSBUWEZNT3V0cHV0RmlsZTo6Z2V0SW5wdXRUeXBlKHZvaWQpIHsKKworCXJldHVybiBUWEZNQmFzZTo6QllURV9TVFJFQU07CisKK30KKworVFhGTUJhc2U6OmlvVHlwZSBUWEZNT3V0cHV0RmlsZTo6Z2V0T3V0cHV0VHlwZSh2b2lkKSB7CisKKwlyZXR1cm4gVFhGTUJhc2U6OkJZVEVfU1RSRUFNOworCit9CisKKworVFhGTUJhc2U6Om5vZGVUeXBlIFRYRk1PdXRwdXRGaWxlOjpnZXROb2RlVHlwZSh2b2lkKSB7CisKKwlyZXR1cm4gVFhGTUJhc2U6OkRPTV9OT0RFX05PTkU7CisKK30KKworCisvLyBNZXRob2RzIHRvIGdldCBvdXRwdXQgZGF0YQorCit1bnNpZ25lZCBpbnQgVFhGTU91dHB1dEZpbGU6OnJlYWRCeXRlcyhYTUxCeXRlICogY29uc3QgdG9GaWxsLCB1bnNpZ25lZCBpbnQgbWF4VG9GaWxsKSB7CisKKwl1bnNpZ25lZCBpbnQgc3o7CisKKwlzeiA9IGlucHV0LT5yZWFkQnl0ZXModG9GaWxsLCBtYXhUb0ZpbGwpOworCisJaWYgKGYuaXNfb3BlbigpKQorCQlmLndyaXRlKChjaGFyICopIHRvRmlsbCwgc3opOworCisJcmV0dXJuIHN6OworCit9CisKK0RPTURvY3VtZW50ICogVFhGTU91dHB1dEZpbGU6OmdldERvY3VtZW50KCkgeworCisJcmV0dXJuIE5VTEw7CisKK30KKworRE9NTm9kZSAqIFRYRk1PdXRwdXRGaWxlOjpnZXRGcmFnbWVudE5vZGUoKSB7CisKKwlyZXR1cm4gTlVMTDsKKworfTsKKworY29uc3QgWE1MQ2ggKiBUWEZNT3V0cHV0RmlsZTo6Z2V0RnJhZ21lbnRJZCgpIHsKKworCXJldHVybiBOVUxMOwkvLyBFbXB0eSBzdHJpbmcKKworfQpkaWZmIC0tZ2l0IGEvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1PdXRwdXRGaWxlLmhwcCBiL2Mvc3JjL3RyYW5zZm9ybWVycy9UWEZNT3V0cHV0RmlsZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNiODkyNgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3RyYW5zZm9ybWVycy9UWEZNT3V0cHV0RmlsZS5ocHAKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogVFhGTU91dHB1dEZpbGUgOj0gVHJhbnNmb3JtIHRoYXQgb3V0cHV0cyB0aGUgYnl0ZSBzdHJlYW0gdG8gYSBmaWxlIHdpdGhvdXQgY2hhbmdpbmcKKyAqCQkJCQkJCSAgdGhlIGFjdHVhbCBkYXRhIGluIGFueSB3YXkKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgVFhGTU9VVFBVVEZJTEVfSU5DTFVERQorI2RlZmluZSBUWEZNT1VUUFVURklMRV9JTkNMVURFCisKKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNQmFzZS5ocHA+CisKKyNpbmNsdWRlIDxmc3RyZWFtPgorCit1c2luZyBzdGQ6Om9mc3RyZWFtOworCisvKioKKyAqIFxicmllZiBUcmFuc2Zvcm1lciB0byBoYW5kbGUgZmlsZSBvdXRwdXQgdHJhbnNmb3JtcworICogQGluZ3JvdXAgaW50ZXJuYWwKKyAqCisgKiBUaGlzIHRyYW5zZm9ybWVyIHNpbXBseSByZWFkcyBmcm9tIHRoZSBpbnB1dCB0cmFuc2Zvcm0gCisgKiBhbmQgcGFzc2VzIHRoZSBieXRlcyB0byB0aGUgdHJhbnNmb3JtZXIgdGhhdCByZWFkcyBmcm9tIGl0LgorICoKKyAqIE9uIHRoZSB3YXkgdGhyb3VnaCwgdGhlIHdyaXRlcyBhcmUgd3JpdHRlbiB0byBhbiBvdXRwdXQKKyAqIHN0cmVhbSAoYSBmaWxlKS4gIFRoaXMgaXMgcHJpbWFyaWx5IGEgZGVidWdnaW5nIHRvb2wuCisgKi8KKworCitjbGFzcyBEU0lHX0VYUE9SVCBUWEZNT3V0cHV0RmlsZSA6IHB1YmxpYyBUWEZNQmFzZSB7CisKK3ByaXZhdGU6CisKKwlvZnN0cmVhbSBmOworCitwdWJsaWM6CisKKwlUWEZNT3V0cHV0RmlsZShYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKmRvYykgOiAKKwkJVFhGTUJhc2UoZG9jKSB7aW5wdXQgPSBOVUxMO30KKwl+VFhGTU91dHB1dEZpbGUoKTsKKworCS8vIE1ldGhvZHMgdG8gc2V0IHRoZSBpbnB1dHMKKworCXZvaWQgc2V0SW5wdXQoVFhGTUJhc2UgKm5ld0lucHV0KTsKKworCS8vIE1ldGhvZHMgdG8gZ2V0IHRyYW5mb3JtIG91dHB1dCB0eXBlIGFuZCBpbnB1dCByZXF1aXJlbWVudAorCisJdmlydHVhbCBUWEZNQmFzZTo6aW9UeXBlIGdldElucHV0VHlwZSh2b2lkKTsKKwl2aXJ0dWFsIFRYRk1CYXNlOjppb1R5cGUgZ2V0T3V0cHV0VHlwZSh2b2lkKTsKKwl2aXJ0dWFsIFRYRk1CYXNlOjpub2RlVHlwZSBnZXROb2RlVHlwZSh2b2lkKTsKKworCS8vIFNldCBvdXRwdXQgZmlsZQorCisJYm9vbCBzZXRGaWxlKGNoYXIgKiBjb25zdCBmaWxlTmFtZSk7CisKKwkvLyBNZXRob2RzIHRvIGdldCBvdXRwdXQgZGF0YQorCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgcmVhZEJ5dGVzKFhNTEJ5dGUgKiBjb25zdCB0b0ZpbGwsIGNvbnN0IHVuc2lnbmVkIGludCBtYXhUb0ZpbGwpOworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICpnZXREb2N1bWVudCgpOworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUgKmdldEZyYWdtZW50Tm9kZSgpOworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRGcmFnbWVudElkKCk7CisJCitwcml2YXRlOgorCVRYRk1PdXRwdXRGaWxlKCk7Cit9OworCisKKyNlbmRpZiAvKiAjZGVmaW5lIFRYRk1PVVRQVVRGSUxFX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL3RyYW5zZm9ybWVycy9UWEZNUGFyc2VyLmNwcCBiL2Mvc3JjL3RyYW5zZm9ybWVycy9UWEZNUGFyc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGM3NThiCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1QYXJzZXIuY3BwCkBAIC0wLDAgKzEsMTc0IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBUWEZNUGFyc2VyIDo9IEEgdHJhbnNmb3JtZXIgdXNlZCB0byB0cmFuc2Zvcm0gYSBieXRlIHN0cmVhbSB0byBET00gTm9kZXMKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNUGFyc2VyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNQ2hhaW4uaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1BsYXRmb3JtVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDVFhGTUlucHV0U291cmNlLmhwcD4KKworI2luY2x1ZGUgPHhlcmNlc2MvcGFyc2Vycy9YZXJjZXNET01QYXJzZXIuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvZnJhbWV3b3JrL01lbUJ1ZklucHV0U291cmNlLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvSmFuaXRvci5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCitUWEZNUGFyc2VyOjpUWEZNUGFyc2VyKERPTURvY3VtZW50ICogZG9jKSA6IAorVFhGTUJhc2UoZG9jKSwKK21wX3BhcnNlZERvYyhOVUxMKSB7CisKKworfTsKKworVFhGTVBhcnNlcjo6flRYRk1QYXJzZXIoKSB7CisKKwlpZiAobXBfcGFyc2VkRG9jICE9IE5VTEwpIHsKKworCQlpZiAobXBfbnNlICE9IE5VTEwpIHsKKwkJCWRlbGV0ZSBtcF9uc2U7CS8vIERvbid0IGJvdGhlciBjb2xsYXBzaW5nCisJCQltcF9uc2UgPSBOVUxMOworCQl9CisKKwkJbXBfcGFyc2VkRG9jLT5yZWxlYXNlKCk7CisKKwl9CisKKwltcF9wYXJzZWREb2MgPSBOVUxMOworCisKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgRm9yIGV4cGFuZGluZyBuYW1lIHNwYWNlcyB3aGVuIG5lY2Vzc2FyeQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYm9vbCBUWEZNUGFyc2VyOjpuYW1lU3BhY2VzRXhwYW5kZWQodm9pZCkgeworCisJLy8gTk9URSA6IERvIG5vdCBjaGVjayBpbnB1dHMgYXMgdGhpcyBoYXMgaXRzIG93biBkb2N1bWVudAorCisJcmV0dXJuIChtcF9uc2UgIT0gTlVMTCk7CisKK30KKwordm9pZCBUWEZNUGFyc2VyOjpleHBhbmROYW1lU3BhY2VzKHZvaWQpIHsKKworCWlmIChtcF9uc2UgIT0gTlVMTCkKKwkJcmV0dXJuOwkJLy8gQWxyZWFkeSBkb25lCisJCisJaWYgKG1wX3BhcnNlZERvYyAhPSBOVUxMKSB7CisKKwkJWFNFQ25ldyhtcF9uc2UsIFhTRUNOYW1lU3BhY2VFeHBhbmRlcihtcF9wYXJzZWREb2MpKTsKKworCQltcF9uc2UtPmV4cGFuZE5hbWVTcGFjZXMoKTsKKworCX0KKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gIFdvcmtlciBmdW5jdGlvbgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBUWEZNUGFyc2VyOjpzZXRJbnB1dChUWEZNQmFzZSAqbmV3SW5wdXQpIHsKKworCS8vIFRoaXMgdHJhbnNmb3JtZXIgdGVybWluYXRlcyBhbGwgcHJldmlvdXMgaW5wdXRzIGFuZCBkZWxldGVzCisJLy8gdGhlIGNoYWluLgorCisJaW5wdXQgPSBuZXdJbnB1dDsKKworCS8vIENyZWF0ZSBhIElucHV0U3RyZWFtCisJVFhGTUNoYWluICogY2hhaW47CisJWFNFQ25ldyhjaGFpbiwgVFhGTUNoYWluKG5ld0lucHV0LCBmYWxzZSkpOworCUphbml0b3I8VFhGTUNoYWluPiBqX2NoYWluKGNoYWluKTsKKworCVhTRUNUWEZNSW5wdXRTb3VyY2UgaXMoY2hhaW4sIGZhbHNlKTsKKworCS8vIENyZWF0ZSBhIFhlcmNlc1BhcnNlciBhbmQgcGFyc2UhCisJWGVyY2VzRE9NUGFyc2VyIHBhcnNlcjsKKworCXBhcnNlci5zZXREb05hbWVzcGFjZXModHJ1ZSk7CisJcGFyc2VyLnNldENyZWF0ZUVudGl0eVJlZmVyZW5jZU5vZGVzKHRydWUpOworCXBhcnNlci5zZXREb1NjaGVtYSh0cnVlKTsKKworCXBhcnNlci5wYXJzZShpcyk7CisgICAgeHNlY3NpemVfdCBlcnJvckNvdW50ID0gcGFyc2VyLmdldEVycm9yQ291bnQoKTsKKyAgICBpZiAoZXJyb3JDb3VudCA+IDApCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WFNMRXJyb3IsICJFcnJvcnMgb2NjdXJlZCBwYXJzaW5nIEJZVEUgU1RSRUFNIik7CisKKyAgICBtcF9wYXJzZWREb2MgPSBwYXJzZXIuYWRvcHREb2N1bWVudCgpOworCisJLy8gQ2xlYW4gdXAKKworCWtlZXBDb21tZW50cyA9IG5ld0lucHV0LT5nZXRDb21tZW50c1N0YXR1cygpOworCit9CisKKwkvLyBNZXRob2RzIHRvIGdldCB0cmFuZm9ybSBvdXRwdXQgdHlwZSBhbmQgaW5wdXQgcmVxdWlyZW1lbnQKKworVFhGTUJhc2U6OmlvVHlwZSBUWEZNUGFyc2VyOjpnZXRJbnB1dFR5cGUodm9pZCkgeworCisJcmV0dXJuIFRYRk1CYXNlOjpCWVRFX1NUUkVBTTsKKworfQorVFhGTUJhc2U6OmlvVHlwZSBUWEZNUGFyc2VyOjpnZXRPdXRwdXRUeXBlKHZvaWQpIHsKKworCXJldHVybiBUWEZNQmFzZTo6RE9NX05PREVTOworCit9CisKKworVFhGTUJhc2U6Om5vZGVUeXBlIFRYRk1QYXJzZXI6OmdldE5vZGVUeXBlKHZvaWQpIHsKKworCXJldHVybiBUWEZNQmFzZTo6RE9NX05PREVfRE9DVU1FTlQ7CisKK30KKworCS8vIE1ldGhvZHMgdG8gZ2V0IG91dHB1dCBkYXRhCisKK3Vuc2lnbmVkIGludCBUWEZNUGFyc2VyOjpyZWFkQnl0ZXMoWE1MQnl0ZSAqIGNvbnN0IHRvRmlsbCwgdW5zaWduZWQgaW50IG1heFRvRmlsbCkgeworCQorCXJldHVybiAwOworCit9CisKK0RPTURvY3VtZW50ICpUWEZNUGFyc2VyOjpnZXREb2N1bWVudCgpIHsKKworCXJldHVybiBtcF9wYXJzZWREb2M7CisKK30KKworRE9NTm9kZSAqIFRYRk1QYXJzZXI6OmdldEZyYWdtZW50Tm9kZSgpIHsKKworCXJldHVybiBOVUxMOwkJLy8gUmV0dXJuIGEgbnVsbCBub2RlCisKK30KKworY29uc3QgWE1MQ2ggKiBUWEZNUGFyc2VyOjpnZXRGcmFnbWVudElkKCkgeworCisJcmV0dXJuIE5VTEw7CS8vIEVtcHR5IHN0cmluZworCit9CmRpZmYgLS1naXQgYS9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTVBhcnNlci5ocHAgYi9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTVBhcnNlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZhMDk4NgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3RyYW5zZm9ybWVycy9UWEZNUGFyc2VyLmhwcApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBUWEZNUGFyc2VyIDo9IEEgdHJhbnNmb3JtZXIgdXNlZCB0byB0cmFuc2Zvcm0gYSBieXRlIHN0cmVhbSB0byBET00gTm9kZXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgVFhGTVBBUlNFUl9JTkNMVURFCisjZGVmaW5lIFRYRk1QQVJTRVJfSU5DTFVERQorCisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTUJhc2UuaHBwPgorCisvKioKKyAqIFxicmllZiBUcmFuc2Zvcm1lciB0byBoYW5kbGUgbW92ZSBiZXR3ZWVuIGJ5dGVzIGFuZCBET00KKyAqIEBpbmdyb3VwIGludGVybmFsCisgKgorICogVEhlcmUgaXMgbm8gInBhcnNlciIgdHJhbnNmb3JtYXRpb24gZGVmaW5lZCBpbiBEU0lHLCBob3dldmVyIHRoZXJlCisgKiBpcyBhIHJlcXVpcmVtZW50IHRvIGJlIGFibGUgdG8gbW92ZSBiZXR3ZWVuIGEgYnl0ZSBzdHJlYW0gYW5kCisgKiBhIGxpc3Qgb2Ygbm9kZXMuICBGb3IgZXhhbXBsZSwgaWYgYSByZWYgVVJJIHBvaW50cyB0byBhbiBleHRlcm5hbAorICogZG9jdW1lbnQsIGFuZCB0aGUgZmlyc3QgdHJhbnNmb3JtYXRpb24gb24gdGhhdCBkb2N1bWVudCBpcyBhbiAKKyAqIFhQYXRoIGV4cHJlc3Npb24sIHRoZW4gdGhlIGxpYnJhcnkgdXNlcyB0aGlzIGNsYXNzIHRvIHRyYW5zbGF0ZSB0aGUKKyAqIEJZVEUgc3RyZWFtIHRvIGEgRE9NIGRvY3VtZW50LgorICovCisKKworY2xhc3MgRFNJR19FWFBPUlQgVFhGTVBhcnNlciA6IHB1YmxpYyBUWEZNQmFzZSB7CisKK3B1YmxpYzoKKworCS8vIENvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMKKworCVRYRk1QYXJzZXIoWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICopOworCX5UWEZNUGFyc2VyKCk7CisKKwkvLyBNZXRob2RzIHRvIGdldCB0cmFuZm9ybSBvdXRwdXQgdHlwZSBhbmQgaW5wdXQgcmVxdWlyZW1lbnQKKworCXZpcnR1YWwgVFhGTUJhc2U6OmlvVHlwZSBnZXRJbnB1dFR5cGUodm9pZCk7CisJdmlydHVhbCBUWEZNQmFzZTo6aW9UeXBlIGdldE91dHB1dFR5cGUodm9pZCk7CisJdmlydHVhbCBub2RlVHlwZSBnZXROb2RlVHlwZSh2b2lkKTsKKworCS8vIE1ldGhvZHMgdG8gc2V0IGlucHV0IGRhdGEKKworCXZpcnR1YWwgdm9pZCBzZXRJbnB1dChUWEZNQmFzZSAqIG5ld0lucHV0KTsKKworCS8vIE1ldGhvZHMgdG8gZ2V0IG91dHB1dCBkYXRhCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCByZWFkQnl0ZXMoWE1MQnl0ZSAqIGNvbnN0IHRvRmlsbCwgY29uc3QgdW5zaWduZWQgaW50IG1heFRvRmlsbCk7CisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKmdldERvY3VtZW50KCk7CisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqZ2V0RnJhZ21lbnROb2RlKCk7CisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldEZyYWdtZW50SWQoKTsKKworCS8vIE5hbWUgc3BhY2UgbWFuYWdlbWVudAorCXZpcnR1YWwgYm9vbCBuYW1lU3BhY2VzRXhwYW5kZWQodm9pZCk7CisJdmlydHVhbCB2b2lkIGV4cGFuZE5hbWVTcGFjZXModm9pZCk7CisKKwkKK3ByaXZhdGU6CisJCisJVFhGTVBhcnNlcigpOworCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50CSogbXBfcGFyc2VkRG9jOworCit9OworCisjZW5kaWYgLyogI2RlZmluZSBUWEZNUEFSU0VSX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL3RyYW5zZm9ybWVycy9UWEZNU0IuY3BwIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1TQi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk0NDgyMAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3RyYW5zZm9ybWVycy9UWEZNU0IuY3BwCkBAIC0wLDAgKzEsMTQ5IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBUWEZNU0IgOj0gQ2xhc3MgdGhhdCB0YWtlcyBhbiBpbnB1dCBzYWZlQnVmZmVyIHRvIHN0YXJ0IGEgdHJhbnNmb3JtIHBpcGUKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNU0IuaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworLy8gR2VuZXJhbCBpbmNsdWRlcyAKKworI2luY2x1ZGUgPG1lbW9yeS5oPgorCitUWEZNU0I6OlRYRk1TQihET01Eb2N1bWVudCAqZG9jKSA6IFRYRk1CYXNlKGRvYykgeworCisJdG9PdXRwdXQgPSAwOworCit9CisKKworVFhGTVNCOjp+VFhGTVNCKCkgeworCit9CisKKwkvLyBNZXRob2RzIHRvIHNldCB0aGUgaW5wdXRzCisKK3ZvaWQgVFhGTVNCOjpzZXRJbnB1dChUWEZNQmFzZSAqbmV3SW5wdXQpIHsKKworCS8vIE5vdCBwb3NzaWJsZSBhcyB0aGlzIG5lZWRzIHRvIGJlIHRoZSBzdGFydCBvZiBhIHRyYW5mb3JtIHBpcGUKKworCXJldHVybjsKKworfQorCit2b2lkIFRYRk1TQjo6c2V0SW5wdXQoY29uc3Qgc2FmZUJ1ZmZlciBzYkluKSB7CisKKwkvLyBBc3N1bWUgdGhpcyBpcyBhIHN0cmluZworCisJc2IgPSBzYkluOworCXRvT3V0cHV0ID0gc2Iuc2JTdHJsZW4oKTsKKwlzYnMgPSB0b091dHB1dDsKKworfQorCit2b2lkIFRYRk1TQjo6c2V0SW5wdXQoY29uc3Qgc2FmZUJ1ZmZlciBzYkluLCB1bnNpZ25lZCBpbnQgc2JTaXplKSB7CisKKwkvLyBBc3N1bWUgdGhpcyBpcyBhIHN0cmluZworCisJc2IgPSBzYkluOworCWlmIChzYlNpemUgPiBzYi5zYlJhd0J1ZmZlclNpemUoKSkKKwkJdG9PdXRwdXQgPSBzYi5zYlJhd0J1ZmZlclNpemUoKTsKKwllbHNlCisJCXRvT3V0cHV0ID0gc2JTaXplOworCXNicyA9IHRvT3V0cHV0OworCit9CisKKworCS8vIE1ldGhvZHMgdG8gZ2V0IHRyYW5mb3JtIG91dHB1dCB0eXBlIGFuZCBpbnB1dCByZXF1aXJlbWVudAorCitUWEZNQmFzZTo6aW9UeXBlIFRYRk1TQjo6Z2V0SW5wdXRUeXBlKHZvaWQpIHsKKworCXJldHVybiBUWEZNQmFzZTo6QllURV9TVFJFQU07CisKK30KKworVFhGTUJhc2U6OmlvVHlwZSBUWEZNU0I6OmdldE91dHB1dFR5cGUodm9pZCkgeworCisJcmV0dXJuIFRYRk1CYXNlOjpCWVRFX1NUUkVBTTsKKworfQorCisKK1RYRk1CYXNlOjpub2RlVHlwZSBUWEZNU0I6OmdldE5vZGVUeXBlKHZvaWQpIHsKKworCXJldHVybiBUWEZNQmFzZTo6RE9NX05PREVfTk9ORTsKKworfQorCisKKworCS8vIE1ldGhvZHMgdG8gZ2V0IG91dHB1dCBkYXRhCisKK3Vuc2lnbmVkIGludCBUWEZNU0I6OnJlYWRCeXRlcyhYTUxCeXRlICogY29uc3QgdG9GaWxsLCB1bnNpZ25lZCBpbnQgbWF4VG9GaWxsKSB7CisJCisJLy8gUmV0dXJuIGZyb20gdGhlIGJ1ZmZlcgorCQorCXVuc2lnbmVkIGludCByZXQ7CisKKwlpZiAodG9PdXRwdXQgPT0gMCkKKwkJcmV0dXJuIDA7CisKKwkvLyBDaGVjayBpZiB3ZSBjYW4ganVzdCBvdXRwdXQgZXZlcnl0aGluZyBsZWZ0CisJaWYgKHRvT3V0cHV0IDw9IG1heFRvRmlsbCkgeworCisJCW1lbWNweSgoY2hhciAqKSB0b0ZpbGwsICYoc2IucmF3QnVmZmVyKClbc2JzIC0gdG9PdXRwdXRdKSwgdG9PdXRwdXQpOworCQlyZXQgPSAodW5zaWduZWQgaW50KSB0b091dHB1dDsKKwkJdG9PdXRwdXQgPSAwOworCisJCXJldHVybiByZXQ7CisKKwl9CisKKwkvLyBPdXRwdXQganVzdCBzb21lCisKKwltZW1jcHkoKGNoYXIgKikgdG9GaWxsLCAmKHNiLnJhd0J1ZmZlcigpW3NicyAtIHRvT3V0cHV0XSksIG1heFRvRmlsbCk7CisJcmV0ID0gbWF4VG9GaWxsOworCXRvT3V0cHV0IC09IG1heFRvRmlsbDsKKworCXJldHVybiByZXQ7Cit9CisKK0RPTURvY3VtZW50ICpUWEZNU0I6OmdldERvY3VtZW50KCkgeworCisJcmV0dXJuIE5VTEw7CisKK307CisKK0RPTU5vZGUgKiBUWEZNU0I6OmdldEZyYWdtZW50Tm9kZSgpIHsKKworCXJldHVybiBOVUxMOworCit9OworCitjb25zdCBYTUxDaCAqIFRYRk1TQjo6Z2V0RnJhZ21lbnRJZCgpIHsKKworCXJldHVybiBOVUxMOwkvLyBFbXB0eSBzdHJpbmcKKworfQpkaWZmIC0tZ2l0IGEvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1TQi5ocHAgYi9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTVNCLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDQzOGEyCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1TQi5ocHAKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogVFhGTVNCIDo9IENsYXNzIHRoYXQgdGFrZXMgYW4gaW5wdXQgZnJvbSBhIHNhZmVCdWZmZXIgdG8gc3RhcnQgYSBwaXBlCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFRYRk1TQl9JTkNMVURFCisjZGVmaW5lIFRYRk1TQl9JTkNMVURFCisKKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNQmFzZS5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDU2FmZUJ1ZmZlci5ocHA+CisKKy8qKgorICogXGJyaWVmIEJhc2UgdHJhbnNmb3JtZXIgdG8gc3RhcnQgYSBjaGFpbiBmcm9tIGEgc2FmZUJ1ZmZlcgorICogQGluZ3JvdXAgaW50ZXJuYWwKKyAqLworCitjbGFzcyBEU0lHX0VYUE9SVCBUWEZNU0IgOiBwdWJsaWMgVFhGTUJhc2UgeworCitwcml2YXRlOgorCisJc2FmZUJ1ZmZlcglzYjsJCQkvLyBTYWZlQnVmZmVyIHRvIHVzZQorCXhzZWNzaXplX3QgdG9PdXRwdXQ7CS8vIEFtb3VudCBsZWZ0IHRvIG91dHB1dAorCXhzZWNzaXplX3Qgc2JzOwkJICAgIC8vIFNpemUgb2YgcmF3IGJ1ZmZlcgorCitwdWJsaWM6CisKKwlUWEZNU0IoWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICpkb2MpOworCX5UWEZNU0IoKTsKKworCS8vIE1ldGhvZHMgdG8gc2V0IHRoZSBpbnB1dHMKKworCXZpcnR1YWwgdm9pZCBzZXRJbnB1dChUWEZNQmFzZSAqbmV3SW5wdXQpOworCXZvaWQgc2V0SW5wdXQoY29uc3Qgc2FmZUJ1ZmZlciBzYkluKTsKKwl2b2lkIHNldElucHV0KGNvbnN0IHNhZmVCdWZmZXIgc2JJbiwgdW5zaWduZWQgaW50IHNiU2l6ZSk7IAorCisJLy8gTWV0aG9kcyB0byBnZXQgdHJhbmZvcm0gb3V0cHV0IHR5cGUgYW5kIGlucHV0IHJlcXVpcmVtZW50CisKKwl2aXJ0dWFsIFRYRk1CYXNlOjppb1R5cGUgZ2V0SW5wdXRUeXBlKHZvaWQpOworCXZpcnR1YWwgVFhGTUJhc2U6OmlvVHlwZSBnZXRPdXRwdXRUeXBlKHZvaWQpOworCXZpcnR1YWwgbm9kZVR5cGUgZ2V0Tm9kZVR5cGUodm9pZCk7CisKKwkvLyBNZXRob2RzIHRvIGdldCBvdXRwdXQgZGF0YQorCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgcmVhZEJ5dGVzKFhNTEJ5dGUgKiBjb25zdCB0b0ZpbGwsIGNvbnN0IHVuc2lnbmVkIGludCBtYXhUb0ZpbGwpOworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICpnZXREb2N1bWVudCgpOworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUgKmdldEZyYWdtZW50Tm9kZSgpOworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRGcmFnbWVudElkKCk7CisJCitwcml2YXRlOgorCVRYRk1TQigpOworfTsKKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL2Mvc3JjL3RyYW5zZm9ybWVycy9UWEZNU0hBMS5jcHAgYi9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTVNIQTEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljMzlmZTUKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTVNIQTEuY3BwCkBAIC0wLDAgKzEsMTkxIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBUWEZNU0hBMSA6PSBDbGFzcyB0aGF0IHBlcmZvcm1zIGEgU0hBMSB0cmFuc2Zvcm0KKyAqCisgKiAkSWQkCisgKgorICovCisKKy8vIFhTRUMKKworI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1TSEExLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNQbGF0Zm9ybVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXhjZXB0aW9uLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKK1RYRk1TSEExOjpUWEZNU0hBMShET01Eb2N1bWVudCAqZG9jLCBoYXNoTWV0aG9kIGhtLAorCQkJCQkJCQkJIFhTRUNDcnlwdG9LZXkgKiBrZXkpIDogVFhGTUJhc2UgKGRvYykgeworCisJdG9PdXRwdXQgPSAwOwkJCQkJLy8gTm90aGluZyB5ZXQgdG8gb3V0cHV0CisJaW50IGhhc2hMZW4gPSAwOworCisJc3dpdGNoIChobSkgeworCWNhc2UgSEFTSF9TSEEyMjQgOgorCQloYXNoTGVuID0gMjI0OworCQlicmVhazsKKwljYXNlIEhBU0hfU0hBMjU2IDoKKwkJaGFzaExlbiA9IDI1NjsKKwkJYnJlYWs7CisJY2FzZSBIQVNIX1NIQTM4NCA6CisJCWhhc2hMZW4gPSAzODQ7CisJCWJyZWFrOworCWNhc2UgSEFTSF9TSEE1MTIgOgorCQloYXNoTGVuID0gNTEyOworCQlicmVhazsKKwlkZWZhdWx0OgorCQloYXNoTGVuID0gMTYwOworCX0KKworCWlmIChrZXkgPT0gTlVMTCkKKwkJLy8gR2V0IGEgU0hBMSB3b3JrZXIKKwkJbXBfaCA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5oYXNoU0hBKGhhc2hMZW4pOworCWVsc2UgeworCQkvLyBHZXQgYW4gSE1BQyBTaGExCisJCQorCQltcF9oID0gWFNFQ1BsYXRmb3JtVXRpbHM6OmdfY3J5cHRvUHJvdmlkZXItPmhhc2hITUFDU0hBKGhhc2hMZW4pOworCQlpZiAoIW1wX2gpIHsKKworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDcnlwdG9Qcm92aWRlckVycm9yLCAKKwkJCQkJIkVycm9yIHJlcXVlc3RpbmcgU0hBMSBvYmplY3QgZnJvbSBDcnlwdG8gUHJvdmlkZXIiKTsKKworCQl9CisJCW1wX2gtPnNldEtleShrZXkpOworCisJfQorCisJCisJaWYgKCFtcF9oKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDcnlwdG9Qcm92aWRlckVycm9yLCAKKwkJCQkiRXJyb3IgcmVxdWVzdGluZyBTSEExIG9iamVjdCBmcm9tIENyeXB0byBQcm92aWRlciIpOworCisJfQorCQkJCQkJCQkJCit9OworCitUWEZNU0hBMTo6flRYRk1TSEExKCkgeworCisJLy8gQ2xlYW4gdXAKKwlpZiAobXBfaCkKKwkJZGVsZXRlIG1wX2g7CisKK307CisKKwkvLyBNZXRob2RzIHRvIHNldCB0aGUgaW5wdXRzCisKKy8vdm9pZCBUWEZNU0hBMTo6c2V0SW5wdXQoVFhGTUJhc2UgKmlucHV0KTsKKworCS8vIE1ldGhvZHMgdG8gZ2V0IHRyYW5mb3JtIG91dHB1dCB0eXBlIGFuZCBpbnB1dCByZXF1aXJlbWVudAorCitUWEZNQmFzZTo6aW9UeXBlIFRYRk1TSEExOjpnZXRJbnB1dFR5cGUodm9pZCkgeworCisJcmV0dXJuIFRYRk1CYXNlOjpCWVRFX1NUUkVBTTsKKworfQorVFhGTUJhc2U6OmlvVHlwZSBUWEZNU0hBMTo6Z2V0T3V0cHV0VHlwZSh2b2lkKSB7CisKKwlyZXR1cm4gVFhGTUJhc2U6OkJZVEVfU1RSRUFNOworCit9CisKKworVFhGTUJhc2U6Om5vZGVUeXBlIFRYRk1TSEExOjpnZXROb2RlVHlwZSh2b2lkKSB7CisKKwlyZXR1cm4gVFhGTUJhc2U6OkRPTV9OT0RFX05PTkU7CisKK30KKworCS8vIE1ldGhvZHMgdG8gc2V0IGlucHV0IGRhdGEKKwordm9pZCBUWEZNU0hBMTo6c2V0SW5wdXQoVFhGTUJhc2UgKiBpbnB1dFQpIHsKKworCWlucHV0ID0gaW5wdXRUOworCisJa2VlcENvbW1lbnRzID0gaW5wdXQtPmdldENvbW1lbnRzU3RhdHVzKCk7CisKKwkvLyBOb3cgcnVuIHRocm91Z2ggdGhlIGRhdGEKKwl1bnNpZ25lZCBjaGFyIGJ1ZmZlclsxMDI0XTsKKwl1bnNpZ25lZCBpbnQgc2l6ZTsKKworCXdoaWxlICgoc2l6ZSA9IGlucHV0LT5yZWFkQnl0ZXMoKFhNTEJ5dGUgKikgYnVmZmVyLCAxMDI0KSkgIT0gMCkgeworI2lmIDAKKwkJLy8gU29tZSB1c2VmdWwgZGViYnVnZ2luZyBjb2RlCisJCUZJTEUgKiBmID0gZm9wZW4oImRlYnVnLm91dCIsImErYiIpOworCQlmd3JpdGUoYnVmZmVyLCBzaXplLCAxLCBmKTsKKwkJZmNsb3NlKGYpOworI2VuZGlmCisJCW1wX2gtPmhhc2goYnVmZmVyLCBzaXplKTsKKwl9CisJCisJLy8gRmluYWxpc2UKKworCW1kX2xlbiA9IG1wX2gtPmZpbmlzaChtZF92YWx1ZSwgQ1JZUFRPX01BWF9IQVNIX1NJWkUpOworCisJdG9PdXRwdXQgPSBtZF9sZW47CisKK30KKworCit1bnNpZ25lZCBpbnQgVFhGTVNIQTE6OnJlYWRCeXRlcyhYTUxCeXRlICogY29uc3QgdG9GaWxsLCB1bnNpZ25lZCBpbnQgbWF4VG9GaWxsKSB7CisJCisJdW5zaWduZWQgaW50IHJldDsKKworCWlmICh0b091dHB1dCA9PSAwKQorCQlyZXR1cm4gMDsKKworCS8vIENoZWNrIGlmIHdlIGNhbiBqdXN0IG91dHB1dCBldmVyeXRoaW5nIGxlZnQKKwlpZiAodG9PdXRwdXQgPD0gbWF4VG9GaWxsKSB7CisKKwkJbWVtY3B5KChjaGFyICopIHRvRmlsbCwgJm1kX3ZhbHVlW21kX2xlbiAtIHRvT3V0cHV0XSwgdG9PdXRwdXQpOworCQlyZXQgPSB0b091dHB1dDsKKwkJdG9PdXRwdXQgPSAwOworCisJCXJldHVybiByZXQ7CisKKwl9CisKKwkvLyBPdXRwdXQganVzdCBzb21lCisKKwltZW1jcHkoKGNoYXIgKikgdG9GaWxsLCAmbWRfdmFsdWVbbWRfbGVuIC0gdG9PdXRwdXRdLCBtYXhUb0ZpbGwpOworCXJldCA9IG1heFRvRmlsbDsKKwl0b091dHB1dCAtPSBtYXhUb0ZpbGw7CisKKwlyZXR1cm4gcmV0OworCit9CisKK0RPTURvY3VtZW50ICogVFhGTVNIQTE6OmdldERvY3VtZW50KCkgeworCisJcmV0dXJuIE5VTEw7CisKK30KKworRE9NTm9kZSAqIFRYRk1TSEExOjpnZXRGcmFnbWVudE5vZGUoKSB7CisKKwlyZXR1cm4gTlVMTDsJCS8vIFJldHVybiBhIG51bGwgbm9kZQorCit9OworCitjb25zdCBYTUxDaCAqIFRYRk1TSEExOjpnZXRGcmFnbWVudElkKCkgeworCisJcmV0dXJuIE5VTEw7CS8vIEVtcHR5IHN0cmluZworCit9CmRpZmYgLS1naXQgYS9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTVNIQTEuaHBwIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1TSEExLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGRjOWQxCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1TSEExLmhwcApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBUWEZNU0hBMSA6PSBDbGFzcyB0aGF0IHBlcmZvcm1zIGEgU0hBMSB0cmFuc2Zvcm0KKyAqCisgKiAkSWQkCisgKgorICovCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1CYXNlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvUHJvdmlkZXIuaHBwPgorCisvKioKKyAqIFxicmllZiBUcmFuc2Zvcm1lciB0byBoYW5kbGUgY3JlYXRlIGEgU0hBLTEgaGFzaCBmcm9tIGEgY2hhaW4KKyAqIEBpbmdyb3VwIGludGVybmFsCisgKi8KKworY2xhc3MgRFNJR19FWFBPUlQgVFhGTVNIQTEgOiBwdWJsaWMgVFhGTUJhc2UgeworCitwcml2YXRlOgorCisJWFNFQ0NyeXB0b0hhc2gJCSogbXBfaDsJCQkJCQkJLy8gVG8gaG9sZCB0aGUgaGFzaAorCXVuc2lnbmVkIGNoYXIJCW1kX3ZhbHVlW0NSWVBUT19NQVhfSEFTSF9TSVpFXTsJLy8gRmluYWwgb3V0cHV0CisJdW5zaWduZWQgaW50CQltZF9sZW47CQkJCQkJCS8vIExlbmd0aCBvZiBkaWdlc3QKKworCXVuc2lnbmVkIGludAkJdG9PdXRwdXQ7CQkJCQkJLy8gQW1vdW50IHN0aWxsIHRvIG91dHB1dAorCitwdWJsaWM6CisKKwlUWEZNU0hBMShYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKmRvYywgaGFzaE1ldGhvZCBobSA9IEhBU0hfU0hBMSwgWFNFQ0NyeXB0b0tleSAqIGtleSA9IE5VTEwpOworCX5UWEZNU0hBMSgpOworCisJLy8gTWV0aG9kcyB0byBnZXQgdHJhbmZvcm0gb3V0cHV0IHR5cGUgYW5kIGlucHV0IHJlcXVpcmVtZW50CisKKwl2aXJ0dWFsIFRYRk1CYXNlOjppb1R5cGUgZ2V0SW5wdXRUeXBlKHZvaWQpOworCXZpcnR1YWwgVFhGTUJhc2U6OmlvVHlwZSBnZXRPdXRwdXRUeXBlKHZvaWQpOworCXZpcnR1YWwgbm9kZVR5cGUgZ2V0Tm9kZVR5cGUodm9pZCk7CisKKwkvLyBNZXRob2RzIHRvIHNldCBpbnB1dCBkYXRhCisKKwl2aXJ0dWFsIHZvaWQgc2V0SW5wdXQoVFhGTUJhc2UgKiBpbnB1dFQpOworCisJLy8gTWV0aG9kcyB0byBnZXQgb3V0cHV0IGRhdGEKKworCXZpcnR1YWwgdW5zaWduZWQgaW50IHJlYWRCeXRlcyhYTUxCeXRlICogY29uc3QgdG9GaWxsLCBjb25zdCB1bnNpZ25lZCBpbnQgbWF4VG9GaWxsKTsKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqZ2V0RG9jdW1lbnQoKTsKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICpnZXRGcmFnbWVudE5vZGUoKTsKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0RnJhZ21lbnRJZCgpOworCQorcHJpdmF0ZToKKwlUWEZNU0hBMSgpOworfTsKKworCmRpZmYgLS1naXQgYS9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTVVSTC5jcHAgYi9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTVVSTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRmZmU4NgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3RyYW5zZm9ybWVycy9UWEZNVVJMLmNwcApAQCAtMCwwICsxLDE1OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogVFhGTVVSTCA6PSBDbGFzcyB0aGF0IHRha2VzIGFuIGlucHV0IFVSTCB0byBzdGFydCBvZiBhIHRyYW5zZm9ybSBwaXBlCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTVVSTC5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKworLy8gVG8gY2F0Y2ggZXhjZXB0aW9ucworCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTE5ldEFjY2Vzc29yLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKy8vIEdlbmVyYWwgaW5jbHVkZXMgCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworVFhGTVVSTDo6VFhGTVVSTChET01Eb2N1bWVudCAqZG9jLCBYU0VDVVJJUmVzb2x2ZXIgKiByZXNvbHZlcikgOiBUWEZNQmFzZShkb2MpIHsKKworCWlzID0gTlVMTDsJCQkvLyBUbyBlbnN1cmUgbGF0ZXIgYWJsZSB0byBkZWxldGUgaWYgbm90IHVzZWQgcHJvcGVybHkKKworCW1wX3Jlc29sdmVyID0gcmVzb2x2ZXI7CisKKwlkb25lID0gZmFsc2U7Cit9CisKKworVFhGTVVSTDo6flRYRk1VUkwoKSB7CisKKwlpZiAoaXMgIT0gTlVMTCkKKwkJZGVsZXRlIGlzOworfQorCisJLy8gTWV0aG9kcyB0byBzZXQgdGhlIGlucHV0cworCit2b2lkIFRYRk1VUkw6OnNldElucHV0KFRYRk1CYXNlICpuZXdJbnB1dCkgeworCisJLy8gTm90IHBvc3NpYmxlIGFzIHRoaXMgbmVlZHMgdG8gYmUgdGhlIHN0YXJ0IG9mIGEgdHJhbmZvcm0gcGlwZQorCisJcmV0dXJuOworCit9CisKK3ZvaWQgVFhGTVVSTDo6c2V0SW5wdXQoY29uc3QgWE1MQ2ggKiBVUkwpIHsKKworCS8vIEFzc3VtZSB3ZSBoYXZlIGFscmVhZHkgY2hlY2tlZCB0aGF0IHRoaXMgaXMgYSB2YWxpZCBVUkwKKworCisJaWYgKG1wX3Jlc29sdmVyICE9IE5VTEwpCisJCWlzID0gbXBfcmVzb2x2ZXItPnJlc29sdmVVUkkoVVJMKTsKKworCWlmIChpcyA9PSBOVUxMKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFcnJvck9wZW5pbmdVUkksCisJCQkiQW4gZXJyb3Igb2NjdXJyZWQgaW4gVFhGTVVSTCB3aGVuIHJlc29sdmluZyBVUkwiKTsKKworCX0KKworfQorCit2b2lkIFRYRk1VUkw6OnNldElucHV0KEJpbklucHV0U3RyZWFtICogaW5wdXRTdHJlYW0pIHsKKworCWlmIChpcyAhPSBOVUxMKQorCQlkZWxldGUgaXM7CisKKwlpcyA9IGlucHV0U3RyZWFtOworCit9CisKKwkvLyBNZXRob2RzIHRvIGdldCB0cmFuZm9ybSBvdXRwdXQgdHlwZSBhbmQgaW5wdXQgcmVxdWlyZW1lbnQKKworVFhGTUJhc2U6OmlvVHlwZSBUWEZNVVJMOjpnZXRJbnB1dFR5cGUodm9pZCkgeworCisJcmV0dXJuIFRYRk1CYXNlOjpCWVRFX1NUUkVBTTsKKworfQorCitUWEZNQmFzZTo6aW9UeXBlIFRYRk1VUkw6OmdldE91dHB1dFR5cGUodm9pZCkgeworCisJcmV0dXJuIFRYRk1CYXNlOjpCWVRFX1NUUkVBTTsKKworfQorCitUWEZNQmFzZTo6bm9kZVR5cGUgVFhGTVVSTDo6Z2V0Tm9kZVR5cGUodm9pZCkgeworCisJcmV0dXJuIFRYRk1CYXNlOjpET01fTk9ERV9OT05FOworCit9CisKKworCS8vIE1ldGhvZHMgdG8gZ2V0IG91dHB1dCBkYXRhCisKK3Vuc2lnbmVkIGludCBUWEZNVVJMOjpyZWFkQnl0ZXMoWE1MQnl0ZSAqIGNvbnN0IHRvRmlsbCwgdW5zaWduZWQgaW50IG1heFRvRmlsbCkgeworCQorCVhTRUNfVVNJTkdfWEVSQ0VTKE5ldEFjY2Vzc29yRXhjZXB0aW9uKTsKKworCS8vIFNpbXBseSByZWFkIGluIGZyb20gdGhlIGlucHV0IHN0cmVhbQorCisJdW5zaWduZWQgaW50IHJldDsKKworCWlmIChkb25lIHx8IGlzID09IE5VTEwpIHJldHVybiAwOworCisJdHJ5IHsKKwkJcmV0ID0gKHVuc2lnbmVkIGludCkgaXMtPnJlYWRCeXRlcyh0b0ZpbGwsIG1heFRvRmlsbCk7CisJfQorCWNhdGNoIChOZXRBY2Nlc3NvckV4Y2VwdGlvbiBlKSB7CisKKwkJLy8gTmFpZXZlIC0gYnV0IGFzc3VtZSB0aGlzIG1lYW5zIHRoZSBzb2NrZXQgaGFzIGNsb3NlZCAoZW5kIG9mIHN0cmVhbSkKKwkJcmV0ID0gMDsKKworCX0KKworCS8vaWYgKHJldCA8IG1heFRvRmlsbCkKKwlpZiAocmV0IDw9IDApCisJCWRvbmUgPSB0cnVlOworCisJcmV0dXJuIHJldDsKKworfQorCitET01Eb2N1bWVudCAqVFhGTVVSTDo6Z2V0RG9jdW1lbnQoKSB7CisKKwlyZXR1cm4gTlVMTDsKKworfTsKKworRE9NTm9kZSAqVFhGTVVSTDo6Z2V0RnJhZ21lbnROb2RlKCkgeworCisJcmV0dXJuIE5VTEw7CisKK307CisKK2NvbnN0IFhNTENoICogVFhGTVVSTDo6Z2V0RnJhZ21lbnRJZCgpIHsKKworCXJldHVybiBOVUxMOwkvLyBFbXB0eSBzdHJpbmcKKworfQpkaWZmIC0tZ2l0IGEvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1VUkwuaHBwIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1VUkwuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkZjVkMzIKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTVVSTC5ocHAKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogVFhGTVVSTCA6PSBDbGFzcyB0aGF0IHRha2VzIGFuIGlucHV0IFVSTCB0byBzdGFydCBvZiBhIHRyYW5zZm9ybSBwaXBlCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTUJhc2UuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNVUklSZXNvbHZlci5ocHA+CisKKy8vIFhlcmNlcworCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL0JpbklucHV0U3RyZWFtLmhwcD4KKworLyoqCisgKiBcYnJpZWYgQmFzZSB0cmFuc2Zvcm1lciBmb3IgVVJMIGlucHV0cyB0byBjaGFpbnMuICBBbHNvIHVzZWQgdG8KKyAqIHByb3ZpZGUgYSBtZXRob2QgdG8gcHJvdmlkZSBhIEJpbklucHV0U3RyZWFtIGFzIGFuIGlucHV0IG1ldGhvZAorICoKKyAqIEBpbmdyb3VwIGludGVybmFsCisgKi8KKworY2xhc3MgRFNJR19FWFBPUlQgVFhGTVVSTCA6IHB1YmxpYyBUWEZNQmFzZSB7CisKK3ByaXZhdGU6CisKKwlYU0VDVVJJUmVzb2x2ZXIJCQkqIG1wX3Jlc29sdmVyOwkvLyBSZXNvbHZlciBwYXNzZWQgaW4KKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgQmluSW5wdXRTdHJlYW0JCQkKKwkJCQkJCQkqIGlzOwkJLy8gVG8gaGFuZGxlIHRoZSBhY3R1YWwgaW5wdXQKKworCWJvb2wJCQkJCWRvbmU7CisKKworcHVibGljOgorCisJVFhGTVVSTChYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKmRvYywgWFNFQ1VSSVJlc29sdmVyICogcmVzb2x2ZXIpOworCX5UWEZNVVJMKCk7CisKKwkvLyBNZXRob2RzIHRvIHNldCB0aGUgaW5wdXRzCisKKwl2aXJ0dWFsIHZvaWQgc2V0SW5wdXQoVFhGTUJhc2UgKm5ld0lucHV0KTsKKwl2b2lkIHNldElucHV0KGNvbnN0IFhNTENoICogVVJMKTsKKwl2b2lkIHNldElucHV0KFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBCaW5JbnB1dFN0cmVhbSAqIGlucHV0U3RyZWFtKTsKKworCS8vIE1ldGhvZHMgdG8gZ2V0IHRyYW5mb3JtIG91dHB1dCB0eXBlIGFuZCBpbnB1dCByZXF1aXJlbWVudAorCisJdmlydHVhbCBUWEZNQmFzZTo6aW9UeXBlIGdldElucHV0VHlwZSh2b2lkKTsKKwl2aXJ0dWFsIFRYRk1CYXNlOjppb1R5cGUgZ2V0T3V0cHV0VHlwZSh2b2lkKTsKKwl2aXJ0dWFsIG5vZGVUeXBlIGdldE5vZGVUeXBlKHZvaWQpOworCisJLy8gTWV0aG9kcyB0byBnZXQgb3V0cHV0IGRhdGEKKworCXZpcnR1YWwgdW5zaWduZWQgaW50IHJlYWRCeXRlcyhYTUxCeXRlICogY29uc3QgdG9GaWxsLCBjb25zdCB1bnNpZ25lZCBpbnQgbWF4VG9GaWxsKTsKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqZ2V0RG9jdW1lbnQoKTsKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICpnZXRGcmFnbWVudE5vZGUoKTsKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0RnJhZ21lbnRJZCgpOworCQorcHJpdmF0ZSA6CisJVFhGTVVSTCgpOworfTsKKwpkaWZmIC0tZ2l0IGEvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1YUGF0aC5jcHAgYi9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTVhQYXRoLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWYyN2I5Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1YUGF0aC5jcHAKQEAgLTAsMCArMSw1OTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFRYRk1YUGF0aCA6PSBDbGFzcyB0aGF0IHBlcmZvcm1zIFhQYXRoIHRyYW5zZm9ybXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKworI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1YUGF0aC5ocHA+CisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTVBhcnNlci5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdDb25zdGFudHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorCisjaWZuZGVmIFhTRUNfTk9fWEFMQU4KKworI2lmIGRlZmluZWQoX01TQ19WRVIpCisjCXByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQyNjcpCisjZW5kaWYKKworI2luY2x1ZGUgPHhhbGFuYy9YUGF0aC9YT2JqZWN0RmFjdG9yeURlZmF1bHQuaHBwPgorI2luY2x1ZGUgPHhhbGFuYy9YUGF0aC9YUGF0aEV4ZWN1dGlvbkNvbnRleHREZWZhdWx0LmhwcD4KKworI2lmIGRlZmluZWQoX01TQ19WRVIpCisjCXByYWdtYSB3YXJuaW5nKGRlZmF1bHQ6IDQyNjcpCisjZW5kaWYKKworLy8gWGFsYW4gbmFtZXNwYWNlIHVzYWdlCitYQUxBTl9VU0lOR19YQUxBTihYUGF0aFByb2Nlc3NvckltcGwpCitYQUxBTl9VU0lOR19YQUxBTihYZXJjZXNET01TdXBwb3J0KQorWEFMQU5fVVNJTkdfWEFMQU4oWGVyY2VzUGFyc2VyTGlhaXNvbikKK1hBTEFOX1VTSU5HX1hBTEFOKFhlcmNlc0RvY3VtZW50V3JhcHBlcikKK1hBTEFOX1VTSU5HX1hBTEFOKFhlcmNlc1dyYXBwZXJOYXZpZ2F0b3IpCitYQUxBTl9VU0lOR19YQUxBTihYUGF0aEV2YWx1YXRvcikKK1hBTEFOX1VTSU5HX1hBTEFOKFhQYXRoRmFjdG9yeURlZmF1bHQpCitYQUxBTl9VU0lOR19YQUxBTihYUGF0aENvbnN0cnVjdGlvbkNvbnRleHREZWZhdWx0KQorWEFMQU5fVVNJTkdfWEFMQU4oWGFsYW5Eb2N1bWVudCkKK1hBTEFOX1VTSU5HX1hBTEFOKFhhbGFuTm9kZSkKK1hBTEFOX1VTSU5HX1hBTEFOKFhhbGFuRE9NQ2hhcikKK1hBTEFOX1VTSU5HX1hBTEFOKFhQYXRoRW52U3VwcG9ydERlZmF1bHQpCitYQUxBTl9VU0lOR19YQUxBTihYT2JqZWN0RmFjdG9yeURlZmF1bHQpCitYQUxBTl9VU0lOR19YQUxBTihYUGF0aEV4ZWN1dGlvbkNvbnRleHREZWZhdWx0KQorWEFMQU5fVVNJTkdfWEFMQU4oRWxlbWVudFByZWZpeFJlc29sdmVyUHJveHkpCitYQUxBTl9VU0lOR19YQUxBTihYUGF0aCkKK1hBTEFOX1VTSU5HX1hBTEFOKE5vZGVSZWZMaXN0QmFzZSkKK1hBTEFOX1VTSU5HX1hBTEFOKFhTTFRSZXN1bHRUYXJnZXQpCitYQUxBTl9VU0lOR19YQUxBTihYU0xFeGNlcHRpb24pCisKKyNlbmRpZgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworI2lmICFkZWZpbmVkKFhTRUNfTk9fWFBBVEgpCisKKyNpbmNsdWRlIDxpb3N0cmVhbT4KKworI2RlZmluZSBLTFVER0VfUFJFRklYICJiZXJpbmRzaWciCisKKy8vIEhlbHBlciBmdW5jdGlvbgorCit2b2lkIHNldFhQYXRoTlMoRE9NRG9jdW1lbnQgKmQsIAorCQkJCURPTU5hbWVkTm9kZU1hcCAqeEF0dHMsIAorCQkJICAgIFhTRUNYUGF0aE5vZGVMaXN0ICZhZGRlZE5vZGVzLAorCQkJCVhTRUNTYWZlQnVmZmVyRm9ybWF0dGVyICpmb3JtYXR0ZXIsCisJCQkJWFNFQ05hbWVTcGFjZUV4cGFuZGVyICogbnNlKSB7CisKKwkvLyBpZiBzZXQgdGhlbiBzZXQgdGhlIG5hbWUgc3BhY2VzIGluIHRoZSBhdHRyaWJ1dGUgbGlzdCBlbHNlIGNsZWFyIHRoZW0KKworCURPTUVsZW1lbnQgKiBlID0gZC0+Z2V0RG9jdW1lbnRFbGVtZW50KCk7CisKKwlpZiAoZSA9PSBOVUxMKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYUGF0aEVycm9yLCAiRWxlbWVudCBub2RlIG5vdCBmb3VuZCBpbiBEb2N1bWVudCIpOworCisJfQorCisJaWYgKHhBdHRzICE9IDApIHsKKworCQlpbnQgeEF0dHNDb3VudCA9IHhBdHRzLT5nZXRMZW5ndGgoKTsJCisKKwkJLy8gQ2hlY2sgYWxsIGlzIE9LIHdpdGggdGhlIFhhbGFuIERvY3VtZW50IGFuZCBmaXJzdCBlbGVtZW50CisKKwkJaWYgKGQgPT0gTlVMTCkgeworCisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhQYXRoRXJyb3IsICJBdHRlbXB0IHRvIGRlZmluZSBYUGF0aCBOYW1lIFNwYWNlIGJlZm9yZSBzZXRJbnB1dCBjYWxsZWQiKTsKKworCQl9CisKKwkJLy8gUnVuIHRocm91Z2ggZWFjaCBhdHRyaWJ1dGUgbG9va2luZyBmb3IgbmFtZSBzcGFjZXMKKwkJY29uc3QgWE1MQ2ggKnhwTmFtZTsKKwkJc2FmZUJ1ZmZlciB4cE5hbWVTQjsKKwkJY29uc3QgWE1MQ2ggKnhwTG9jYWxOYW1lOworCQljb25zdCBYTUxDaCAqeHBWYWx1ZTsKKworCQlmb3IgKGludCB4Q291bnRlciA9IDA7IHhDb3VudGVyIDwgeEF0dHNDb3VudDsgKyt4Q291bnRlcikgeworCisJCQlpZiAobnNlID09IE5VTEwgfHwgIW5zZS0+bm9kZVdhc0FkZGVkKHhBdHRzLT5pdGVtKHhDb3VudGVyKSkpIHsKKwkJCQkKKwkJCQl4cE5hbWUgPSB4QXR0cy0+aXRlbSh4Q291bnRlciktPmdldE5vZGVOYW1lKCk7CisJCQkJeHBOYW1lU0IgPDwgKCpmb3JtYXR0ZXIgPDwgeHBOYW1lKTsKKwkJCQkKKwkJCQlpZiAoeHBOYW1lU0Iuc2JTdHJuY21wKCJ4bWxucyIsIDUpID09IDApIHsKKworCQkJCQkvLyBDaGVjayB3aGV0aGVyIGEgbm9kZSBvZiB0aGlzIG5hbWUgYWxyZWFkeSBleGlzdHMKKwkJCQkJeHBMb2NhbE5hbWUgPSB4QXR0cy0+aXRlbSh4Q291bnRlciktPmdldExvY2FsTmFtZSgpOworCQkJCQl4cFZhbHVlID0geEF0dHMtPml0ZW0oeENvdW50ZXIpLT5nZXROb2RlVmFsdWUoKTsKKwkJCQkJaWYgKGUtPmhhc0F0dHJpYnV0ZU5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhNTE5TLCB4cExvY2FsTmFtZSkgPT0gZmFsc2UpIHsKKworCQkJCQkJLy8gTm9wZQorCQorCQkJCQkJZS0+c2V0QXR0cmlidXRlTlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWE1MTlMsIHhwTmFtZSwgeHBWYWx1ZSk7CisJCQkJCQlhZGRlZE5vZGVzLmFkZE5vZGUoZS0+Z2V0QXR0cmlidXRlTm9kZU5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhNTE5TLCB4cExvY2FsTmFtZSkpOworCQkJCQl9CisKKwkJCQl9CisKKwkJCX0KKworCQl9CisKKwl9CisKKwkvLyBJbnNlcnQgdGhlIGtsdWRnZSBuYW1lc3BhY2UKKwlzYWZlQnVmZmVyIGsoInhtbG5zOiIpOworCWsuc2JTdHJjYXRJbihLTFVER0VfUFJFRklYKTsKKworCWUtPnNldEF0dHJpYnV0ZU5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhNTE5TLAorCQkJCQkgTUFLRV9VTklDT0RFX1NUUklORyhrLnJhd0NoYXJCdWZmZXIoKSksCisJCQkJCSBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklEU0lHKTsKK30KKwordm9pZCBjbGVhclhQYXRoTlMoRE9NRG9jdW1lbnQgKmQsIAorCQkJCSAgWFNFQ1hQYXRoTm9kZUxpc3QgJnRvUmVtb3ZlLAorCQkJCSAgWFNFQ1NhZmVCdWZmZXJGb3JtYXR0ZXIgKmZvcm1hdHRlciwKKwkJCQkgIFhTRUNOYW1lU3BhY2VFeHBhbmRlciAqIG5zZSkgeworCisJLy8gQ2xlYXIgdGhlIFhQYXRoIG5hbWUgc3BhY2VzIGluIHRoZSBkb2N1bWVudCBlbGVtZW50IGF0dHJpYnV0ZSBsaXN0CisKKwlET01FbGVtZW50ICogZSA9IGQtPmdldERvY3VtZW50RWxlbWVudCgpOworCisJaWYgKGUgPT0gTlVMTCkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WFBhdGhFcnJvciwgIkVsZW1lbnQgbm9kZSBub3QgZm91bmQgaW4gRG9jdW1lbnQiKTsKKworCX0KKworCS8vIFJ1biB0aHJvdWdoIGVhY2ggbm9kZSBpbiB0aGUgYWRkZWQgbm9kZXMKKworCWNvbnN0IERPTU5vZGUgKiByID0gdG9SZW1vdmUuZ2V0Rmlyc3ROb2RlKCk7CisJd2hpbGUgKHIgIT0gTlVMTCkgeworCQllLT5yZW1vdmVBdHRyaWJ1dGVOUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYTUxOUywgCisJCQkJCXItPmdldExvY2FsTmFtZSgpKTsKKwkJciA9IHRvUmVtb3ZlLmdldE5leHROb2RlKCk7CisJfQorCisJZS0+cmVtb3ZlQXR0cmlidXRlTlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWE1MTlMsCisJCQkJCSBNQUtFX1VOSUNPREVfU1RSSU5HKEtMVURHRV9QUkVGSVgpKTsKKworfQorCitUWEZNWFBhdGg6OlRYRk1YUGF0aChET01Eb2N1bWVudCAqZG9jKSA6IAorCVRYRk1CYXNlKGRvYykgeworCisJZG9jdW1lbnQgPSBOVUxMOworCVhQYXRoQXR0cyA9IE5VTEw7CisKKwkvLyBGb3JtYXR0ZXIgaXMgdXNlZCBmb3IgaGFuZGxpbmcgYXR0cmlidXRlIG5hbWUgc3BhY2UgaW5wdXRzCisKKwlYU0VDbmV3KGZvcm1hdHRlciwgWFNFQ1NhZmVCdWZmZXJGb3JtYXR0ZXIoIlVURi04IixYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcywgCisJCQkJCQkJCQkJCQlYTUxGb3JtYXR0ZXI6OlVuUmVwX0NoYXJSZWYpKTsKKworfQorCitUWEZNWFBhdGg6On5UWEZNWFBhdGgoKSB7CisKKwlpZiAoZm9ybWF0dGVyICE9IE5VTEwpIAorCQlkZWxldGUgZm9ybWF0dGVyOworCQorfQorCit2b2lkIFRYRk1YUGF0aDo6c2V0TmFtZVNwYWNlKERPTU5hbWVkTm9kZU1hcCAqeHBBdHRzKSB7CisKKwkvLyBBIG5hbWUgc3BhY2UgbmVlZHMgdG8gYmUgc2V0IG9uIHRoZSBkb2N1bWVudAorCisJWFBhdGhBdHRzID0geHBBdHRzOworCit9CisKKy8vIE1ldGhvZHMgdG8gc2V0IHRoZSBpbnB1dHMKKwordm9pZCBUWEZNWFBhdGg6OnNldElucHV0KFRYRk1CYXNlICpuZXdJbnB1dCkgeworCisJaWYgKG5ld0lucHV0LT5nZXRPdXRwdXRUeXBlKCkgPT0gVFhGTUJhc2U6OkJZVEVfU1RSRUFNKSB7CisKKwkJLy90aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlRyYW5zZm9ybUlucHV0T3V0cHV0RmFpbCwgIkMxNG4gY2Fub25pY2FsaXNhdGlvbiB0cmFuc2Zvcm0gcmVxdWlyZXMgRE9NX05PREVTIGlucHV0Iik7CisJCS8vIE5lZWQgdG8gcGFyc2UgaW50byBET01fTk9ERVMKKwkJVFhGTVBhcnNlciAqIHBhcnNlcjsKKwkJWFNFQ25ldyhwYXJzZXIsIFRYRk1QYXJzZXIobXBfZXhwYW5zaW9uRG9jKSk7CisJCXRyeXsKKwkJCXBhcnNlci0+c2V0SW5wdXQobmV3SW5wdXQpOworCQl9CisJCWNhdGNoICguLi4pIHsKKwkJCWRlbGV0ZSBwYXJzZXI7CisJCQlpbnB1dCA9IG5ld0lucHV0OworCQkJdGhyb3c7CisJCX0KKworCQlpbnB1dCA9IHBhcnNlcjsKKwkJcGFyc2VyLT5leHBhbmROYW1lU3BhY2VzKCk7CisJfQorCWVsc2UKKwkJaW5wdXQgPSBuZXdJbnB1dDsKKworCS8vIFNldCB1cCBmb3IgdGhlIG5ldyBkb2N1bWVudAorCWRvY3VtZW50ID0gaW5wdXQtPmdldERvY3VtZW50KCk7CisKKwkvLyBFeHBhbmQgaWYgbmVjZXNzYXJ5CisJdGhpcy0+ZXhwYW5kTmFtZVNwYWNlcygpOworCisJa2VlcENvbW1lbnRzID0gaW5wdXQtPmdldENvbW1lbnRzU3RhdHVzKCk7CisKK30KKworYm9vbCBzZXBhcmF0b3IodW5zaWduZWQgY2hhciBjKSB7CisKKwlpZiAoYyA+PSAnYScgJiYgYyA8PSAneicpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChjID49ICdBJyAmJiBjIDw9ICdaJykKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIHRydWU7CisKK30KKworWGFsYW5Ob2RlICogZmluZEhlcmVOb2RlRnJvbVhhbGFuKFhlcmNlc1dyYXBwZXJOYXZpZ2F0b3IgKiB4d24sIFhhbGFuTm9kZSAqIG4sIERPTU5vZGUgKmgpIHsKKwkKKwljb25zdCBET01Ob2RlICogbSA9IHh3bi0+bWFwTm9kZShuKTsKKwljb25zdCBYYWxhbk5vZGUgKiByZXQ7CisKKwlpZiAobSA9PSBoKQorCQlyZXR1cm4gbjsKKworCS8vIE5vdCB0aGlzIG9uZSAtIGNoZWNrIHRoZSBjaGlsZHJlbgorCisJWGFsYW5Ob2RlICogYyA9IG4tPmdldEZpcnN0Q2hpbGQoKTsKKworCXdoaWxlIChjICE9IDApIHsKKwkJcmV0ID0gZmluZEhlcmVOb2RlRnJvbVhhbGFuKHh3biwgYywgaCk7CisJCWlmIChyZXQgIT0gMCkKKwkJCXJldHVybiAoWGFsYW5Ob2RlICopIHJldDsKKwkJYyA9IGMtPmdldE5leHRTaWJsaW5nKCk7CisJfQorCisJcmV0dXJuIDA7Cit9CisJCQorCisKK3ZvaWQgVFhGTVhQYXRoOjpldmFsdWF0ZUV4cHIoRE9NTm9kZSAqaCwgc2FmZUJ1ZmZlciBpbmV4cHIpIHsKKworCS8vIFRlbXBvcmFyaWx5IGFkZCBhbnkgbmVjZXNzYXJ5IG5hbWUgc3BhY2VzIGludG8gdGhlIGRvY3VtZW50CisKKwlYU0VDWFBhdGhOb2RlTGlzdCBhZGRlZE5vZGVzOworCXNldFhQYXRoTlMoZG9jdW1lbnQsIFhQYXRoQXR0cywgYWRkZWROb2RlcywgZm9ybWF0dGVyLCBtcF9uc2UpOworCisJWFBhdGhQcm9jZXNzb3JJbXBsCXhwcGk7CQkJCQkvLyBUaGUgcHJvY2Vzc29yCisJWGVyY2VzUGFyc2VyTGlhaXNvbiB4cGw7CisjaWYgWEFMQU5fVkVSU0lPTl9NQUpPUiA9PSAxICYmIFhBTEFOX1ZFUlNJT05fTUlOT1IgPiAxMAorCVhlcmNlc0RPTVN1cHBvcnQJeGRzKHhwbCk7CisjZWxzZQorCVhlcmNlc0RPTVN1cHBvcnQJeGRzOworI2VuZGlmCisJWFBhdGhFdmFsdWF0b3IJCXhwZTsKKwlYUGF0aEZhY3RvcnlEZWZhdWx0IHhwZjsKKwlYUGF0aENvbnN0cnVjdGlvbkNvbnRleHREZWZhdWx0IHhwY2M7CisKKwlYYWxhbkRvY3VtZW50CQkqIHhkOworCVhhbGFuTm9kZQkJCSogY29udGV4dE5vZGU7CisKKwkvLyBYYWxhbiBjYW4gdGhyb3cgZXhjZXB0aW9ucyBpbiBhbGwgZnVuY3Rpb25zLCBzbyBkbyBvbmUgYnJvYWQgY2F0Y2ggcG9pbnQuCisKKwl0cnkgeworCQorCQkvLyBNYXAgdG8gWGFsYW4KKwkJeGQgPSB4cGwuY3JlYXRlRG9jdW1lbnQoZG9jdW1lbnQpOworCisJCS8vIEZvciBwZXJmb3JtaW5nIG1hcHBpbmcKKwkJWGVyY2VzRG9jdW1lbnRXcmFwcGVyICp4ZHcgPSB4cGwubWFwRG9jdW1lbnRUb1dyYXBwZXIoeGQpOworCQlYZXJjZXNXcmFwcGVyTmF2aWdhdG9yIHh3bih4ZHcpOworCisJCS8vIE1hcCB0aGUgImhlcmUiIG5vZGUgLSBidXQgb25seSBpZiBwYXJ0IG9mIGN1cnJlbnQgZG9jdW1lbnQKKworCQlYYWxhbk5vZGUgKiBoZXJlTm9kZSA9IE5VTEw7CisKKwkJaWYgKGgtPmdldE93bmVyRG9jdW1lbnQoKSA9PSBkb2N1bWVudCkgeworCQkJCisJCQloZXJlTm9kZSA9IHh3bi5tYXBOb2RlKGgpOworCisJCQlpZiAoaGVyZU5vZGUgPT0gTlVMTCkgeworCisJCQkJaGVyZU5vZGUgPSBmaW5kSGVyZU5vZGVGcm9tWGFsYW4oJnh3biwgeGQsIGgpOworCisJCQkJaWYgKGhlcmVOb2RlID09IE5VTEwpIHsKKworCQkJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhQYXRoRXJyb3IsCisJCQkJCSAgICJVbmFibGUgdG8gZmluZCBoZXJlIG5vZGUgaW4gWGFsYW4gV3JhcHBlciBtYXAiKTsKKwkJCQl9CisKKwkJCX0KKwkJfQorCisJCS8vIE5vdyB3b3JrIG91dCB3aGF0IHdlIGhhdmUgdG8gc2V0IHVwIGluIHRoZSBuZXcgcHJvY2Vzc2luZworCisJCVRYRk1CYXNlOjpub2RlVHlwZSBpbnB1dFR5cGUgPSBpbnB1dC0+Z2V0Tm9kZVR5cGUoKTsKKworCQlYYWxhbkRPTVN0cmluZyBjZDsJCS8vIEZvciB0aGUgbW9tZW50IGFzc3VtZSB0aGUgcm9vdCBpcyB0aGUgY29udGV4dAorCisJCWNvbnN0IFhhbGFuRE9NQ2hhciAqIGNleHByOworCisJCXNhZmVCdWZmZXIgY29udGV4dEV4cHI7CisKKwkJc3dpdGNoIChpbnB1dFR5cGUpIHsKKworCQljYXNlIERPTV9OT0RFX0RPQ1VNRU5UIDoKKwkJY2FzZSBET01fTk9ERV9YUEFUSF9OT0RFU0VUIDoKKwkJCS8vIGRvIFhQYXRoIG92ZXIgdGhlIHdob2xlIGRvY3VtZW50IGFuZCwgaWYgdGhlIGlucHV0IHdhcyBhbiAKKwkJCS8vIFhQYXRoIE5vZGVzZXQsIHRoZW4gbGF0ZXIgaW50ZXJzZWN0IHRoZSByZXN1bHQgd2l0aCB0aGUgaW5wdXQgbm9kZWxpc3QJCQkKKwkJCWNkID0gWGFsYW5ET01TdHJpbmcoIi8iKTsJCS8vIFJvb3Qgbm9kZQorCQkJY2V4cHIgPSBjZC5jX3N0cigpOworCisJCQkvLyBUaGUgY29udGV4dCBub2RlIGlzIHRoZSAicm9vdCIgbm9kZQorCQkJY29udGV4dE5vZGUgPQorCQkJCXhwZS5zZWxlY3RTaW5nbGVOb2RlKAorCQkJCXhkcywKKwkJCQl4ZCwKKwkJCQljZXhwciwKKwkJCQl4ZC0+Z2V0RG9jdW1lbnRFbGVtZW50KCkpOworCisJCQlicmVhazsKKworCQljYXNlIERPTV9OT0RFX0RPQ1VNRU5UX0ZSQUdNRU5UIDoKKwkJCXsKKworCQkJCS8vIE5lZWQgdG8gbWFwIHRoZSBET01fTm9kZSB0aGF0IHdlIGFyZSBnaXZlbiBmcm9tIHRoZSBpbnB1dCB0byB0aGUgYXBwcm9wcmlhdGUgWGFsYW5Ob2RlCisKKwkJCQkvLyBDcmVhdGUgdGhlIFhQYXRoIGV4cHJlc3Npb24gdG8gZmluZCB0aGUgbm9kZQorCisJCQkJaWYgKGlucHV0LT5nZXRGcmFnbWVudElkKCkgIT0gTlVMTCkgeworCisJCQkJCWNvbnRleHRFeHByLnNiVHJhbnNjb2RlSW4oIi8vZGVzY2VuZGFudC1vci1zZWxmOjpub2RlKClbYXR0cmlidXRlOjpJZD0nIik7CisJCQkJCWNvbnRleHRFeHByLnNiWE1MQ2hDYXQoaW5wdXQtPmdldEZyYWdtZW50SWQoKSk7CisJCQkJCWNvbnRleHRFeHByLnNiWE1MQ2hDYXQoIiddIik7CisKKwkJCQkJLy8gTWFwIHRoZSBub2RlCisKKwkJCQkJY29udGV4dE5vZGUgPSAKKwkJCQkJCXhwZS5zZWxlY3RTaW5nbGVOb2RlKAorCQkJCQkJeGRzLAorCQkJCQkJeGQsCisJCQkJCQljb250ZXh0RXhwci5yYXdYTUxDaEJ1ZmZlcigpLCAvL1hhbGFuRE9NU3RyaW5nKChjaGFyICopIGNvbnRleHRFeHByLnJhd0J1ZmZlcigpKS5jX3N0cigpLCAKKwkJCQkJCXhkLT5nZXREb2N1bWVudEVsZW1lbnQoKSk7CisKKworCQkJCQlpZiAoY29udGV4dE5vZGUgPT0gTlVMTCkgeworCQkJCQkJLy8gTGFzdCBEaXRjaAorCQkJCQkJY29udGV4dE5vZGUgPSB4d24ubWFwTm9kZShpbnB1dC0+Z2V0RnJhZ21lbnROb2RlKCkpOworCisJCQkJCX0KKworCQkJCX0KKwkJCQllbHNlCisJCQkJCWNvbnRleHROb2RlID0geHduLm1hcE5vZGUoaW5wdXQtPmdldEZyYWdtZW50Tm9kZSgpKTsKKworCQkJCWlmIChjb250ZXh0Tm9kZSA9PSBOVUxMKSB7CisKKwkJCQkJLy8gU29tZXRoaW5nIHdyb25nCisJCQkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WFBhdGhFcnJvciwgIkVycm9yIG1hcHBpbmcgY29udGV4dCBub2RlIik7CisKKwkJCQl9CisKKwkJCQlicmVhazsKKwkJCX0KKworCQlkZWZhdWx0IDoKKworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYUGF0aEVycm9yKTsJLy8gU2hvdWxkIG5ldmVyIGdldCBoZXJlCisKKwkJfQorCisJCXNhZmVCdWZmZXIgc3RyOworCQlYUGF0aEVudlN1cHBvcnREZWZhdWx0IHhwZXNkOworCQlYT2JqZWN0RmFjdG9yeURlZmF1bHQJCQl4b2Y7CisJCVhQYXRoRXhlY3V0aW9uQ29udGV4dERlZmF1bHQJeHBlYyh4cGVzZCwgeGRzLCB4b2YpOworCisJCUVsZW1lbnRQcmVmaXhSZXNvbHZlclByb3h5IHByKHhkLT5nZXREb2N1bWVudEVsZW1lbnQoKSwgeHBlc2QsIHhkcyk7CisKKwkJLy8gV29yayBhcm91bmQgdGhlIGZhY3QgdGhhdCB0aGUgWFBhdGggaW1wbGVtZW50YXRpb24gaXMgZGVzaWduZWQgZm9yIFhTTFQsIHNvIGRvZXMKKwkJLy8gbm90IGFsbG93IGhlcmUoKSBhcyBhIE5DTmFtZS4KKworCQkvLyBUSElTIElTIEEgS0xVREdFIEFORCBTSE9VTEQgQkUgRE9ORSBCRVRURVIKKworCQlpbnQgb2Zmc2V0ID0gMDsKKwkJc2FmZUJ1ZmZlciBrKEtMVURHRV9QUkVGSVgpOworCQlrLnNiU3RyY2F0SW4oIjoiKTsKKworCQlvZmZzZXQgPSBpbmV4cHIuc2JTdHJzdHIoImhlcmUoKSIpOworCisJCXdoaWxlIChvZmZzZXQgPj0gMCkgeworCisJCQlpZiAob2Zmc2V0ID09IDAgfHwgb2Zmc2V0ID09IDEgfHwgCisJCQkJKCEoaW5leHByW29mZnNldCAtIDFdID09ICc6JyAmJiBpbmV4cHJbb2Zmc2V0IC0gMl0gIT0gJzonKSAmJgorCQkJCXNlcGFyYXRvcihpbmV4cHJbb2Zmc2V0IC0gMV0pKSkgeworCisJCQkJaW5leHByLnNiU3RyaW5zSW4oay5yYXdDaGFyQnVmZmVyKCksIG9mZnNldCk7CisKKwkJCX0KKworCQkJb2Zmc2V0ID0gaW5leHByLnNiT2Zmc2V0U3Ryc3RyKCJoZXJlKCkiLCBvZmZzZXQgKyAxMSk7CisKKwkJfQorCisJCS8vIEluc3RhbGwgdGhlIEV4dGVybmFsIGZ1bmN0aW9uIGluIHRoZSBFbnZpcm9ubWVudCBoYW5kbGVyCisKKwkJaWYgKGhlcmVOb2RlICE9IE5VTEwpIHsKKworCQkJeHBlc2QuaW5zdGFsbEV4dGVybmFsRnVuY3Rpb25Mb2NhbChYYWxhbkRPTVN0cmluZyhVUklfSURfRFNJRyksIFhhbGFuRE9NU3RyaW5nKCJoZXJlIiksIERTSUdYUGF0aEhlcmUoaGVyZU5vZGUpKTsKKworCQl9CisKKwkJc3RyLnNiU3RyY3B5SW4oIihkZXNjZW5kYW50LW9yLXNlbGY6Om5vZGUoKSB8IGRlc2NlbmRhbnQtb3Itc2VsZjo6bm9kZSgpL2F0dHJpYnV0ZTo6KiB8IGRlc2NlbmRhbnQtb3Itc2VsZjo6bm9kZSgpL25hbWVzcGFjZTo6KilbIik7CisJCXN0ci5zYlN0cmNhdEluKGluZXhwcik7CisJCXN0ci5zYlN0cmNhdEluKCJdIik7CisKKwkJWFBhdGggKiB4cCA9IHhwZi5jcmVhdGUoKTsKKworCQlYYWxhbkRPTVN0cmluZyBYZXhwcigoY2hhciAqKSBzdHIucmF3QnVmZmVyKCkpOworCQl4cHBpLmluaXRYUGF0aCgqeHAsIHhwY2MsIFhleHByLCBwcik7CisJCQorCQkvLyBOb3cgcmVzb2x2ZQorCisJCVhPYmplY3RQdHIgeE9iaiA9IHhwLT5leGVjdXRlKGNvbnRleHROb2RlLCBwciwgeHBlYyk7CisKKwkJLy8gTm93IG1hcCB0byBhIGxpc3QgdGhhdCBvdGhlcnMgY2FuIHVzZSAobmFpZXZlIGxpc3QgYXQgdGhpcyB0aW1lKQorCisJCWNvbnN0IE5vZGVSZWZMaXN0QmFzZSYJbHN0ID0geE9iai0+bm9kZXNldCgpOworCQkKKwkJaW50IHNpemUgPSAoaW50KSBsc3QuZ2V0TGVuZ3RoKCk7CisJCWNvbnN0IERPTU5vZGUgKml0ZW07CisJCQorCQlmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsrIGkpIHsKKworCQkJaWYgKGxzdC5pdGVtKGkpID09IHhkKQorCQkJCW1fWFBhdGhNYXAuYWRkTm9kZShkb2N1bWVudCk7CisJCQllbHNlIHsKKwkJCQlpdGVtID0geHduLm1hcE5vZGUobHN0Lml0ZW0oaSkpOworCQkJCW1fWFBhdGhNYXAuYWRkTm9kZShpdGVtKTsKKwkJCX0KKwkJfQorCisJCWlmIChpbnB1dFR5cGUgPT0gRE9NX05PREVfWFBBVEhfTk9ERVNFVCkgeworCQkJLy90aGUgaW5wdXQgbGlzdCB3YXMgYSBYUEFUSCBub2Rlc2V0LCBzbyB3ZSBtdXN0IGludGVyc2VjdCB0aGUgCisJCQkvLyByZXN1bHRzIG9mIHRoZSBYUGF0aCBwcm9jZXNzaW5nIGRvbmUgYWJvdmUgd2l0aCB0aGUgaW5wdXQgbm9kZXNldAorCQkJbV9YUGF0aE1hcC5pbnRlcnNlY3QoaW5wdXQtPmdldFhQYXRoTm9kZUxpc3QoKSk7CisJCX0KKwl9CisKKwljYXRjaCAoWFNMRXhjZXB0aW9uICZlKSB7CisKKwkJc2FmZUJ1ZmZlciBtc2c7CisKKwkJLy8gV2hhdGV2ZXIgaGFwcGVucyAtIGZpeCBhbnkgY2hhbmdlcyB0byB0aGUgb3JpZ2luYWwgZG9jdW1lbnQKKwkJY2xlYXJYUGF0aE5TKGRvY3VtZW50LCBhZGRlZE5vZGVzLCBmb3JtYXR0ZXIsIG1wX25zZSk7CisJCisJCS8vIENvbGxhdGUgdGhlIGV4Y2VwdGlvbiBtZXNzYWdlIGludG8gYW4gWFNFQyBtZXNzYWdlLgkJCisJCW1zZy5zYlRyYW5zY29kZUluKCJYYWxhbiBFeGNlcHRpb24gOiAiKTsKKyNpZiBkZWZpbmVkIChYU0VDX1hTTEVYQ0VQVElPTl9SRVRVUk5TX0RPTVNUUklORykKKwkJbXNnLnNiWE1MQ2hDYXQoZS5nZXRUeXBlKCkuY19zdHIoKSk7CisjZWxzZQorCQltc2cuc2JYTUxDaENhdChlLmdldFR5cGUoKSk7CisjZW5kaWYKKwkJbXNnLnNiWE1MQ2hDYXQoIiBjYXVnaHQuICBNZXNzYWdlIDogIik7CisJCW1zZy5zYlhNTENoQ2F0KGUuZ2V0TWVzc2FnZSgpLmNfc3RyKCkpOworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WFBhdGhFcnJvciwKKwkJCW1zZy5yYXdYTUxDaEJ1ZmZlcigpKTsKKwl9CisJCisJY2xlYXJYUGF0aE5TKGRvY3VtZW50LCBhZGRlZE5vZGVzLCBmb3JtYXR0ZXIsIG1wX25zZSk7CisKK30KKwordm9pZCBUWEZNWFBhdGg6OmV2YWx1YXRlRW52ZWxvcGUoRE9NTm9kZSAqdCkgeworCisJLy8gQSBzcGVjaWFsIGNhc2Ugd2hlcmUgdGhlIFhQYXRoIGV4cHJlc3Npb24gaXMgYWxyZWFkeSBrbm93bgorCisJaWYgKGRvY3VtZW50ID09IE5VTEwpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhQYXRoRXJyb3IsIAorCQkgICAiQXR0ZW1wdCB0byBkZWZpbmUgWFBhdGggTmFtZSBTcGFjZSBiZWZvcmUgc2V0SW5wdXQgY2FsbGVkIik7CisKKwl9CisKKwlET01FbGVtZW50ICogZSA9IGRvY3VtZW50LT5nZXREb2N1bWVudEVsZW1lbnQoKTsKKworCWlmIChlID09IE5VTEwpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhQYXRoRXJyb3IsIAorICAgICAgICAgICAgICAiRWxlbWVudCBub2RlIG5vdCBmb3VuZCBpbiBEb2N1bWVudCIpOworCisJfQorCisJLy8gU2V0IHRoZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIgorCisJZS0+c2V0QXR0cmlidXRlTlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWE1MTlMsIE1BS0VfVU5JQ09ERV9TVFJJTkcoInhtbG5zOmRzaWciKSwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRFNJRyk7CisJCisJCisJLy8gRXZhbHVhdGUKKworCWV2YWx1YXRlRXhwcih0LCBYUEFUSF9FWFBSX0VOVkVMT1BFKTsKKworCS8vIE5vdyB3ZSBhcmUgZG9uZSwgcmVtb3ZlIHRoZSBuYW1lc3BhY2UKKwkKKwllLT5yZW1vdmVBdHRyaWJ1dGVOUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYTUxOUywgTUFLRV9VTklDT0RFX1NUUklORygiZHNpZyIpKTsKKworfQorCQorLy8gTWV0aG9kcyB0byBnZXQgdHJhbmZvcm0gb3V0cHV0IHR5cGUgYW5kIGlucHV0IHJlcXVpcmVtZW50CisKK1RYRk1CYXNlOjppb1R5cGUgVFhGTVhQYXRoOjpnZXRJbnB1dFR5cGUodm9pZCkgeworCisJcmV0dXJuIFRYRk1CYXNlOjpET01fTk9ERVM7CisKK30KK1RYRk1CYXNlOjppb1R5cGUgVFhGTVhQYXRoOjpnZXRPdXRwdXRUeXBlKHZvaWQpIHsKKworCXJldHVybiBUWEZNQmFzZTo6RE9NX05PREVTOworCit9CisKK1RYRk1CYXNlOjpub2RlVHlwZSBUWEZNWFBhdGg6OmdldE5vZGVUeXBlKHZvaWQpIHsKKworCXJldHVybiBUWEZNQmFzZTo6RE9NX05PREVfWFBBVEhfTk9ERVNFVDsKKworfQorCisvLyBNZXRob2RzIHRvIGdldCBvdXRwdXQgZGF0YQorCit1bnNpZ25lZCBpbnQgVFhGTVhQYXRoOjpyZWFkQnl0ZXMoWE1MQnl0ZSAqIGNvbnN0IHRvRmlsbCwgdW5zaWduZWQgaW50IG1heFRvRmlsbCkgeworCisJcmV0dXJuIDA7CisKK30KKworRE9NRG9jdW1lbnQgKlRYRk1YUGF0aDo6Z2V0RG9jdW1lbnQoKSB7CisKKwlyZXR1cm4gZG9jdW1lbnQ7CisKK30KKworRE9NTm9kZSAqVFhGTVhQYXRoOjpnZXRGcmFnbWVudE5vZGUoKSB7CisKKwlyZXR1cm4gTlVMTDsKKworfQorCitjb25zdCBYTUxDaCAqIFRYRk1YUGF0aDo6Z2V0RnJhZ21lbnRJZCgpIHsKKworCXJldHVybiBOVUxMOwkvLyBFbXB0eSBzdHJpbmcKKworfQorCitYU0VDWFBhdGhOb2RlTGlzdAkmIFRYRk1YUGF0aDo6Z2V0WFBhdGhOb2RlTGlzdCgpIHsKKworCXJldHVybiBtX1hQYXRoTWFwOworCit9CisKKyNlbmRpZiAvKiBOT19YUEFUSCAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1YUGF0aC5ocHAgYi9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTVhQYXRoLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZmEyZGJmCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1YUGF0aC5ocHAKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFRYRk1YUGF0aCA6PSBDbGFzcyB0aGF0IHBlcmZvcm1zIFhQYXRoIHRyYW5zZm9ybXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgVFhGTVhQQVRIX0lOQ0xVREUKKyNkZWZpbmUgVFhGTVhQQVRIX0lOQ0xVREUKKworI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1CYXNlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNTYWZlQnVmZmVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2Nhbm9uL1hTRUNDMTRuMjAwMTAzMTUuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHWFBhdGhIZXJlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNTYWZlQnVmZmVyRm9ybWF0dGVyLmhwcD4KKworLy8gWGVyY2VzCisKK1hTRUNfREVDTEFSRV9YRVJDRVNfQ0xBU1MoRE9NTm9kZSk7CitYU0VDX0RFQ0xBUkVfWEVSQ0VTX0NMQVNTKERPTU5hbWVkTm9kZU1hcCk7CisKKy8vIFhhbGFuCisKKyNpZm5kZWYgWFNFQ19OT19YQUxBTgorCisjaW5jbHVkZSA8eGFsYW5jL1hhbGFuRE9NL1hhbGFuRG9jdW1lbnQuaHBwPgorI2luY2x1ZGUgPHhhbGFuYy9YZXJjZXNQYXJzZXJMaWFpc29uL1hlcmNlc0RvY3VtZW50V3JhcHBlci5ocHA+CisjaW5jbHVkZSA8eGFsYW5jL1hlcmNlc1BhcnNlckxpYWlzb24vWGVyY2VzRE9NU3VwcG9ydC5ocHA+CisjaW5jbHVkZSA8eGFsYW5jL1hlcmNlc1BhcnNlckxpYWlzb24vWGVyY2VzUGFyc2VyTGlhaXNvbi5ocHA+CisjaW5jbHVkZSA8eGFsYW5jL1hQYXRoL1hQYXRoRXZhbHVhdG9yLmhwcD4KKyNpbmNsdWRlIDx4YWxhbmMvWFBhdGgvWFBhdGhQcm9jZXNzb3JJbXBsLmhwcD4KKyNpbmNsdWRlIDx4YWxhbmMvWFBhdGgvWFBhdGhGYWN0b3J5RGVmYXVsdC5ocHA+CisjaW5jbHVkZSA8eGFsYW5jL1hQYXRoL05vZGVSZWZMaXN0LmhwcD4KKyNpbmNsdWRlIDx4YWxhbmMvWFBhdGgvWFBhdGhFbnZTdXBwb3J0RGVmYXVsdC5ocHA+CisjaW5jbHVkZSA8eGFsYW5jL1hQYXRoL1hQYXRoQ29uc3RydWN0aW9uQ29udGV4dERlZmF1bHQuaHBwPgorI2luY2x1ZGUgPHhhbGFuYy9YUGF0aC9FbGVtZW50UHJlZml4UmVzb2x2ZXJQcm94eS5ocHA+CisKKyNlbmRpZgorCisjaWZuZGVmIFhTRUNfTk9fWFBBVEgKKworLyoqCisgKiBcYnJpZWYgVHJhbnNmb3JtZXIgdG8gaGFuZGxlIFhQYXRoIHRyYW5zZm9ybXMKKyAqIEBpbmdyb3VwIGludGVybmFsCisgKi8KKworCitjbGFzcyBEU0lHX0VYUE9SVCBUWEZNWFBhdGggOiBwdWJsaWMgVFhGTUJhc2UgeworCitwcml2YXRlOgorCisJc2FmZUJ1ZmZlciBleHByOwkJCQkJCQkvLyBUaGUgZXhwcmVzc2lvbiBiZWluZyB3b3JrZWQgd2l0aAorCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50CQkJKiBkb2N1bWVudDsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTmFtZWROb2RlTWFwCQkqIFhQYXRoQXR0czsJLy8gQXR0cmlidXRlcyB0aGF0IGNhbWUgdGhyb3VnaCBmcm9tIHRoZSBkb2MKKworCXN0YXRpYwlib29sCQlYUGF0aEluaXREb25lOworCisJRFNJR1hQYXRoSGVyZQkJKiBoZXJlOwkJCS8vIFRoZSBmdW5jdGlvbiB0byBpbXBsZW1lbnQgaGVyZSgpCisJWFNFQ1NhZmVCdWZmZXJGb3JtYXR0ZXIgKiBmb3JtYXR0ZXI7CisKK3B1YmxpYzoKKworCVRYRk1YUGF0aChYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKmRvYyk7CisJflRYRk1YUGF0aCgpOworCisJLy8gTWV0aG9kcyB0byBzZXQgdGhlIGlucHV0cworCisJdm9pZCBzZXRJbnB1dChUWEZNQmFzZSAqbmV3SW5wdXQpOworCQorCS8vIE1ldGhvZHMgdG8gZ2V0IHRyYW5mb3JtIG91dHB1dCB0eXBlIGFuZCBpbnB1dCByZXF1aXJlbWVudAorCisJdmlydHVhbCBUWEZNQmFzZTo6aW9UeXBlIGdldElucHV0VHlwZSh2b2lkKTsKKwl2aXJ0dWFsIFRYRk1CYXNlOjppb1R5cGUgZ2V0T3V0cHV0VHlwZSh2b2lkKTsKKwl2aXJ0dWFsIFRYRk1CYXNlOjpub2RlVHlwZSBnZXROb2RlVHlwZSh2b2lkKTsKKworCS8vIFhQYXRoIHVuaXF1ZQorCisJdm9pZCBzZXROYW1lU3BhY2UoWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5hbWVkTm9kZU1hcCAqeHBBdHRzKTsKKwl2b2lkIGV2YWx1YXRlRXhwcihYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqaCwgc2FmZUJ1ZmZlciBpbmV4cHIpOworCXZvaWQgZXZhbHVhdGVFbnZlbG9wZShYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqdCk7CisKKwkvLyBNZXRob2RzIHRvIGdldCBvdXRwdXQgZGF0YQorCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgcmVhZEJ5dGVzKFhNTEJ5dGUgKiBjb25zdCB0b0ZpbGwsIGNvbnN0IHVuc2lnbmVkIGludCBtYXhUb0ZpbGwpOworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICpnZXREb2N1bWVudCgpOworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUgKmdldEZyYWdtZW50Tm9kZSgpOworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRGcmFnbWVudElkKCk7CisJdmlydHVhbCBYU0VDWFBhdGhOb2RlTGlzdAkmIGdldFhQYXRoTm9kZUxpc3QoKTsKK3ByaXZhdGU6CisJVFhGTVhQYXRoKCk7Cit9OworCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTVhQYXRoRmlsdGVyLmNwcCBiL2Mvc3JjL3RyYW5zZm9ybWVycy9UWEZNWFBhdGhGaWx0ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5MTVkMzYKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTVhQYXRoRmlsdGVyLmNwcApAQCAtMCwwICsxLDc1NiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogVFhGTVhQYXRoRmlsdGVyIDo9IENsYXNzIHRoYXQgcGVyZm9ybXMgWFBhdGggdHJhbnNmb3JtcworICoKKyAqICRJZCQKKyAqCisgKi8KKworCisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTVhQYXRoRmlsdGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNUGFyc2VyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0NvbnN0YW50cy5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDRE9NVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdYUGF0aEZpbHRlckV4cHIuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHWFBhdGhIZXJlLmhwcD4KKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9KYW5pdG9yLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKyNpZm5kZWYgWFNFQ19OT19YQUxBTgorCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyMJcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDI2NykKKyNlbmRpZgorCisjaW5jbHVkZSA8eGFsYW5jL1hhbGFuRE9NL1hhbGFuRG9jdW1lbnQuaHBwPgorI2luY2x1ZGUgPHhhbGFuYy9YYWxhbkRPTS9YYWxhbkRPTVN0cmluZy5ocHA+CisjaW5jbHVkZSA8eGFsYW5jL1hlcmNlc1BhcnNlckxpYWlzb24vWGVyY2VzRG9jdW1lbnRXcmFwcGVyLmhwcD4KKyNpbmNsdWRlIDx4YWxhbmMvWGVyY2VzUGFyc2VyTGlhaXNvbi9YZXJjZXNET01TdXBwb3J0LmhwcD4KKyNpbmNsdWRlIDx4YWxhbmMvWGVyY2VzUGFyc2VyTGlhaXNvbi9YZXJjZXNQYXJzZXJMaWFpc29uLmhwcD4KKyNpbmNsdWRlIDx4YWxhbmMvWFBhdGgvWFBhdGhFdmFsdWF0b3IuaHBwPgorI2luY2x1ZGUgPHhhbGFuYy9YUGF0aC9YUGF0aFByb2Nlc3NvckltcGwuaHBwPgorI2luY2x1ZGUgPHhhbGFuYy9YUGF0aC9YUGF0aEZhY3RvcnlEZWZhdWx0LmhwcD4KKyNpbmNsdWRlIDx4YWxhbmMvWFBhdGgvTm9kZVJlZkxpc3QuaHBwPgorI2luY2x1ZGUgPHhhbGFuYy9YUGF0aC9YUGF0aEVudlN1cHBvcnREZWZhdWx0LmhwcD4KKyNpbmNsdWRlIDx4YWxhbmMvWFBhdGgvWFBhdGhDb25zdHJ1Y3Rpb25Db250ZXh0RGVmYXVsdC5ocHA+CisjaW5jbHVkZSA8eGFsYW5jL1hQYXRoL0VsZW1lbnRQcmVmaXhSZXNvbHZlclByb3h5LmhwcD4KKyNpbmNsdWRlIDx4YWxhbmMvWFBhdGgvWE9iamVjdEZhY3RvcnlEZWZhdWx0LmhwcD4KKyNpbmNsdWRlIDx4YWxhbmMvWFBhdGgvWFBhdGhFeGVjdXRpb25Db250ZXh0RGVmYXVsdC5ocHA+CisjaW5jbHVkZSA8eGFsYW5jL1hTTFQvWFNMVFJlc3VsdFRhcmdldC5ocHA+CisKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorIwlwcmFnbWEgd2FybmluZyhkZWZhdWx0OiA0MjY3KQorI2VuZGlmCisKKy8vIFhhbGFuIG5hbWVzcGFjZSB1c2FnZQorWEFMQU5fVVNJTkdfWEFMQU4oWFBhdGhQcm9jZXNzb3JJbXBsKQorWEFMQU5fVVNJTkdfWEFMQU4oWGFsYW5ET01TdHJpbmcpCitYQUxBTl9VU0lOR19YQUxBTihYZXJjZXNET01TdXBwb3J0KQorWEFMQU5fVVNJTkdfWEFMQU4oWGVyY2VzUGFyc2VyTGlhaXNvbikKK1hBTEFOX1VTSU5HX1hBTEFOKFhlcmNlc0RvY3VtZW50V3JhcHBlcikKK1hBTEFOX1VTSU5HX1hBTEFOKFhlcmNlc1dyYXBwZXJOYXZpZ2F0b3IpCitYQUxBTl9VU0lOR19YQUxBTihYUGF0aEV2YWx1YXRvcikKK1hBTEFOX1VTSU5HX1hBTEFOKFhQYXRoRmFjdG9yeURlZmF1bHQpCitYQUxBTl9VU0lOR19YQUxBTihYUGF0aENvbnN0cnVjdGlvbkNvbnRleHREZWZhdWx0KQorWEFMQU5fVVNJTkdfWEFMQU4oWGFsYW5Eb2N1bWVudCkKK1hBTEFOX1VTSU5HX1hBTEFOKFhhbGFuTm9kZSkKK1hBTEFOX1VTSU5HX1hBTEFOKFhhbGFuRE9NQ2hhcikKK1hBTEFOX1VTSU5HX1hBTEFOKFhQYXRoRW52U3VwcG9ydERlZmF1bHQpCitYQUxBTl9VU0lOR19YQUxBTihYT2JqZWN0RmFjdG9yeURlZmF1bHQpCitYQUxBTl9VU0lOR19YQUxBTihYT2JqZWN0UHRyKQorWEFMQU5fVVNJTkdfWEFMQU4oWFBhdGhFeGVjdXRpb25Db250ZXh0RGVmYXVsdCkKK1hBTEFOX1VTSU5HX1hBTEFOKEVsZW1lbnRQcmVmaXhSZXNvbHZlclByb3h5KQorWEFMQU5fVVNJTkdfWEFMQU4oWFBhdGgpCitYQUxBTl9VU0lOR19YQUxBTihOb2RlUmVmTGlzdEJhc2UpCitYQUxBTl9VU0lOR19YQUxBTihYU0xUUmVzdWx0VGFyZ2V0KQorWEFMQU5fVVNJTkdfWEFMQU4oWFNMRXhjZXB0aW9uKQorCisjZW5kaWYKKworI2lmICFkZWZpbmVkKFhTRUNfTk9fWFBBVEgpCisKKyNpbmNsdWRlIDxpb3N0cmVhbT4KKworI2RlZmluZSBLTFVER0VfUFJFRklYICJiZXJpbmRzaWciCisKKy8vIEhlbHBlciBmdW5jdGlvbnMgLSBjb21lIGZyb20gRFNJR1hQYXRoCisKK3ZvaWQgc2V0WFBhdGhOUyhET01Eb2N1bWVudCAqZCwgCisJCQkJRE9NTmFtZWROb2RlTWFwICp4QXR0cywgCisJCQkgICAgWFNFQ1hQYXRoTm9kZUxpc3QgJmFkZGVkTm9kZXMsCisJCQkJWFNFQ1NhZmVCdWZmZXJGb3JtYXR0ZXIgKmZvcm1hdHRlciwKKwkJCQlYU0VDTmFtZVNwYWNlRXhwYW5kZXIgKiBuc2UpOworCit2b2lkIGNsZWFyWFBhdGhOUyhET01Eb2N1bWVudCAqZCwgCisJCQkJICBYU0VDWFBhdGhOb2RlTGlzdCAmdG9SZW1vdmUsCisJCQkJICBYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlciAqZm9ybWF0dGVyLAorCQkJCSAgWFNFQ05hbWVTcGFjZUV4cGFuZGVyICogbnNlKTsKKworYm9vbCBzZXBhcmF0b3IodW5zaWduZWQgY2hhciBjKTsKK1hhbGFuTm9kZSAqIGZpbmRIZXJlTm9kZUZyb21YYWxhbihYZXJjZXNXcmFwcGVyTmF2aWdhdG9yICogeHduLCBYYWxhbk5vZGUgKiBuLCBET01Ob2RlICpoKTsKKworCisKK1RYRk1YUGF0aEZpbHRlcjo6VFhGTVhQYXRoRmlsdGVyKERPTURvY3VtZW50ICpkb2MpIDogCisJVFhGTUJhc2UoZG9jKSB7CisKKwlkb2N1bWVudCA9IE5VTEw7CisJWFNFQ25ldyhtcF9mb3JtYXR0ZXIsIFhTRUNTYWZlQnVmZmVyRm9ybWF0dGVyKCJVVEYtOCIsWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMsIAorCQkJCQkJCQkJCQkJWE1MRm9ybWF0dGVyOjpVblJlcF9DaGFyUmVmKSk7CisKK30KKworVFhGTVhQYXRoRmlsdGVyOjp+VFhGTVhQYXRoRmlsdGVyKCkgeworCisJbHN0c1ZlY3RvclR5cGU6Oml0ZXJhdG9yIGk7CisKKwlmb3IgKGkgPSBtX2xzdHMuYmVnaW4oKTsgaSA8IG1fbHN0cy5lbmQoKTsgKytpKSB7CisKKwkJaWYgKCgqaSktPmxzdCAhPSBOVUxMKQorCQkJZGVsZXRlICgoKmkpLT5sc3QpOworCisJCWRlbGV0ZSAoKmkpOworCisJfQorCisJaWYgKG1wX2Zvcm1hdHRlciAhPSBOVUxMKSAKKwkJZGVsZXRlIG1wX2Zvcm1hdHRlcjsKKworCQorfQorCisvLyBNZXRob2RzIHRvIHNldCB0aGUgaW5wdXRzCisKK3ZvaWQgVFhGTVhQYXRoRmlsdGVyOjpzZXRJbnB1dChUWEZNQmFzZSAqbmV3SW5wdXQpIHsKKworCWlmIChuZXdJbnB1dC0+Z2V0T3V0cHV0VHlwZSgpID09IFRYRk1CYXNlOjpCWVRFX1NUUkVBTSkgeworCisJCS8vIE5lZWQgdG8gcGFyc2UgaW50byBET01fTk9ERVMKKworCQlUWEZNUGFyc2VyICogcGFyc2VyOworCQlYU0VDbmV3KHBhcnNlciwgVFhGTVBhcnNlcihtcF9leHBhbnNpb25Eb2MpKTsKKwkJdHJ5eworCQkJcGFyc2VyLT5zZXRJbnB1dChuZXdJbnB1dCk7CisJCX0KKwkJY2F0Y2ggKC4uLikgeworCQkJZGVsZXRlIHBhcnNlcjsKKwkJCWlucHV0ID0gbmV3SW5wdXQ7CisJCQl0aHJvdzsKKwkJfQorCisJCWlucHV0ID0gcGFyc2VyOworCQlwYXJzZXItPmV4cGFuZE5hbWVTcGFjZXMoKTsKKwl9CisJZWxzZQorCQlpbnB1dCA9IG5ld0lucHV0OworCisJLy8gU2V0IHVwIGZvciB0aGUgbmV3IGRvY3VtZW50CisJZG9jdW1lbnQgPSBpbnB1dC0+Z2V0RG9jdW1lbnQoKTsKKworCS8vIEV4cGFuZCBpZiBuZWNlc3NhcnkKKwl0aGlzLT5leHBhbmROYW1lU3BhY2VzKCk7CisKKwlrZWVwQ29tbWVudHMgPSBpbnB1dC0+Z2V0Q29tbWVudHNTdGF0dXMoKTsKKworfQorCitYU0VDWFBhdGhOb2RlTGlzdCAqIFRYRk1YUGF0aEZpbHRlcjo6ZXZhbHVhdGVTaW5nbGVFeHByKERTSUdYUGF0aEZpbHRlckV4cHIgKmV4cHIpIHsKKworCS8vIEhhdmUgYSBzaW5nbGUgZXhwcmVzc2lvbiB0aGF0IHdlIHdpc2ggdG8gZmluZCB0aGUgcmVzdWx0YW50IG5vZGVzZXQKKwkvLyBmb3IKKworCVhTRUNYUGF0aE5vZGVMaXN0IGFkZGVkTm9kZXM7CisJc2V0WFBhdGhOUyhkb2N1bWVudCwgZXhwci0+bXBfTlNNYXAsIGFkZGVkTm9kZXMsIG1wX2Zvcm1hdHRlciwgbXBfbnNlKTsKKworCVhQYXRoUHJvY2Vzc29ySW1wbAl4cHBpOwkJCQkJLy8gVGhlIHByb2Nlc3NvcgorCVhlcmNlc1BhcnNlckxpYWlzb24geHBsOworI2lmIFhBTEFOX1ZFUlNJT05fTUFKT1IgPT0gMSAmJiBYQUxBTl9WRVJTSU9OX01JTk9SID4gMTAKKwlYZXJjZXNET01TdXBwb3J0CXhkcyh4cGwpOworI2Vsc2UKKwlYZXJjZXNET01TdXBwb3J0CXhkczsKKyNlbmRpZgorCVhQYXRoRXZhbHVhdG9yCQl4cGU7CisJWFBhdGhGYWN0b3J5RGVmYXVsdCB4cGY7CisJWFBhdGhDb25zdHJ1Y3Rpb25Db250ZXh0RGVmYXVsdCB4cGNjOworCisJWGFsYW5Eb2N1bWVudAkJKiB4ZDsKKwlYYWxhbk5vZGUJCQkqIGNvbnRleHROb2RlOworCisJLy8gWGFsYW4gY2FuIHRocm93IGV4Y2VwdGlvbnMgaW4gYWxsIGZ1bmN0aW9ucywgc28gZG8gb25lIGJyb2FkIGNhdGNoIHBvaW50LgorCisJdHJ5IHsKKwkKKwkJLy8gTWFwIHRvIFhhbGFuCisJCXhkID0geHBsLmNyZWF0ZURvY3VtZW50KGRvY3VtZW50KTsKKworCQkvLyBGb3IgcGVyZm9ybWluZyBtYXBwaW5nCisJCVhlcmNlc0RvY3VtZW50V3JhcHBlciAqeGR3ID0geHBsLm1hcERvY3VtZW50VG9XcmFwcGVyKHhkKTsKKwkJWGVyY2VzV3JhcHBlck5hdmlnYXRvciB4d24oeGR3KTsKKworCQkvLyBNYXAgdGhlICJoZXJlIiBub2RlCisKKwkJWGFsYW5Ob2RlICogaGVyZU5vZGUgPSBOVUxMOworCisJCWhlcmVOb2RlID0geHduLm1hcE5vZGUoZXhwci0+bXBfeHBhdGhGaWx0ZXJOb2RlKTsKKworCQlpZiAoaGVyZU5vZGUgPT0gTlVMTCkgeworCisJCQloZXJlTm9kZSA9IGZpbmRIZXJlTm9kZUZyb21YYWxhbigmeHduLCB4ZCwgZXhwci0+bXBfZXhwclRleHROb2RlKTsKKworCQkJaWYgKGhlcmVOb2RlID09IE5VTEwpIHsKKworCQkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WFBhdGhGaWx0ZXJFcnJvciwKKwkJCQkgICAiVW5hYmxlIHRvIGZpbmQgaGVyZSBub2RlIGluIFhhbGFuIFdyYXBwZXIgbWFwIik7CisJCQl9CisKKwkJfQorCisJCS8vIE5vdyB3b3JrIG91dCB3aGF0IHdlIGhhdmUgdG8gc2V0IHVwIGluIHRoZSBuZXcgcHJvY2Vzc2luZworCisJCVhhbGFuRE9NU3RyaW5nIGNkOwkJLy8gRm9yIFhQYXRoIEZpbHRlciwgdGhlIHJvb3QgaXMgYWx3YXlzIHRoZSBjb250ZXh0IG5vZGUKKworCQljZCA9IFhhbGFuRE9NU3RyaW5nKCIvIik7CQkvLyBSb290IG5vZGUKKworCQkvLyBUaGUgY29udGV4dCBub2RlIGlzIHRoZSAicm9vdCIgbm9kZQorCQljb250ZXh0Tm9kZSA9CisJCQl4cGUuc2VsZWN0U2luZ2xlTm9kZSgKKwkJCXhkcywKKwkJCXhkLAorCQkJY2QuY19zdHIoKSwKKwkJCXhkLT5nZXREb2N1bWVudEVsZW1lbnQoKSk7CisKKwkJWFBhdGhFbnZTdXBwb3J0RGVmYXVsdCB4cGVzZDsKKwkJWE9iamVjdEZhY3RvcnlEZWZhdWx0CQkJeG9mOworCQlYUGF0aEV4ZWN1dGlvbkNvbnRleHREZWZhdWx0CXhwZWMoeHBlc2QsIHhkcywgeG9mKTsKKworCQlFbGVtZW50UHJlZml4UmVzb2x2ZXJQcm94eSBwcih4ZC0+Z2V0RG9jdW1lbnRFbGVtZW50KCksIHhwZXNkLCB4ZHMpOworCisJCS8vIFdvcmsgYXJvdW5kIHRoZSBmYWN0IHRoYXQgdGhlIFhQYXRoIGltcGxlbWVudGF0aW9uIGlzIGRlc2lnbmVkIGZvciBYU0xULCBzbyBkb2VzCisJCS8vIG5vdCBhbGxvdyBoZXJlKCkgYXMgYSBOQ05hbWUuCisKKwkJLy8gVEhJUyBJUyBBIEtMVURHRSBBTkQgU0hPVUxEIEJFIERPTkUgQkVUVEVSCisKKwkJaW50IG9mZnNldCA9IDA7CisJCXNhZmVCdWZmZXIgayhLTFVER0VfUFJFRklYKTsKKwkJay5zYlN0cmNhdEluKCI6Iik7CisKKwkJLy8gTWFwIHRoZSBleHByZXNzaW9uIGludG8gYSBsb2NhbCBjb2RlIHBhZ2Ugc3RyaW5nIChzaWxseSAtIHNob3VsZCBiZSBYTUxDaCkKKwkJc2FmZUJ1ZmZlciBleHByU0I7CisJCWV4cHJTQiA8PCAoKm1wX2Zvcm1hdHRlciA8PCBleHByLT5tX2V4cHIucmF3WE1MQ2hCdWZmZXIoKSk7CisKKwkJb2Zmc2V0ID0gZXhwclNCLnNiU3Ryc3RyKCJoZXJlKCkiKTsKKworCQl3aGlsZSAob2Zmc2V0ID49IDApIHsKKworCQkJaWYgKG9mZnNldCA9PSAwIHx8IG9mZnNldCA9PSAxIHx8IAorCQkJCSghKGV4cHJTQltvZmZzZXQgLSAxXSA9PSAnOicgJiYgZXhwclNCW29mZnNldCAtIDJdICE9ICc6JykgJiYKKwkJCQlzZXBhcmF0b3IoZXhwclNCW29mZnNldCAtIDFdKSkpIHsKKworCQkJCWV4cHJTQi5zYlN0cmluc0luKGsucmF3Q2hhckJ1ZmZlcigpLCBvZmZzZXQpOworCisJCQl9CisKKwkJCW9mZnNldCA9IGV4cHJTQi5zYk9mZnNldFN0cnN0cigiaGVyZSgpIiwgb2Zmc2V0ICsgMTEpOworCisJCX0KKworCQkvLyBJbnN0YWxsIHRoZSBFeHRlcm5hbCBmdW5jdGlvbiBpbiB0aGUgRW52aXJvbm1lbnQgaGFuZGxlcgorCisJCWlmIChoZXJlTm9kZSAhPSBOVUxMKSB7CisKKwkJCXhwZXNkLmluc3RhbGxFeHRlcm5hbEZ1bmN0aW9uTG9jYWwoWGFsYW5ET01TdHJpbmcoVVJJX0lEX0RTSUcpLCBYYWxhbkRPTVN0cmluZygiaGVyZSIpLCBEU0lHWFBhdGhIZXJlKGhlcmVOb2RlKSk7CisKKwkJfQorCisJCVhQYXRoICogeHAgPSB4cGYuY3JlYXRlKCk7CisKKwkJWGFsYW5ET01TdHJpbmcgWGV4cHIoKGNoYXIgKikgZXhwclNCLnJhd0J1ZmZlcigpKTsKKwkJeHBwaS5pbml0WFBhdGgoKnhwLCB4cGNjLCBYZXhwciwgcHIpOworCQkKKwkJLy8gTm93IHJlc29sdmUKKworCQlYT2JqZWN0UHRyIHhPYmogPSB4cC0+ZXhlY3V0ZShjb250ZXh0Tm9kZSwgcHIsIHhwZWMpOworCisJCS8vIE5vdyBtYXAgdG8gYSBsaXN0IHRoYXQgb3RoZXJzIGNhbiB1c2UgKG5haWV2ZSBsaXN0IGF0IHRoaXMgdGltZSkKKworCQljb25zdCBOb2RlUmVmTGlzdEJhc2UmCWxzdCA9IHhPYmotPm5vZGVzZXQoKTsKKwkJCisJCWludCBzaXplID0gKGludCkgbHN0LmdldExlbmd0aCgpOworCQljb25zdCBET01Ob2RlICppdGVtOworCQkKKwkJWFNFQ1hQYXRoTm9kZUxpc3QgKiByZXQ7CisJCVhTRUNuZXcocmV0LCBYU0VDWFBhdGhOb2RlTGlzdCk7CisJCUphbml0b3I8WFNFQ1hQYXRoTm9kZUxpc3Q+IGpfcmV0KHJldCk7CisKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArKyBpKSB7CisKKwkJCWlmIChsc3QuaXRlbShpKSA9PSB4ZCkKKwkJCQlyZXQtPmFkZE5vZGUoZG9jdW1lbnQpOworCQkJZWxzZSB7CisJCQkJaXRlbSA9IHh3bi5tYXBOb2RlKGxzdC5pdGVtKGkpKTsKKwkJCQlyZXQtPmFkZE5vZGUoaXRlbSk7CisJCQl9CisJCX0KKworCQl4cGVzZC51bmluc3RhbGxFeHRlcm5hbEZ1bmN0aW9uR2xvYmFsKFhhbGFuRE9NU3RyaW5nKFVSSV9JRF9EU0lHKSwgWGFsYW5ET01TdHJpbmcoImhlcmUiKSk7CisKKwkJY2xlYXJYUGF0aE5TKGRvY3VtZW50LCBhZGRlZE5vZGVzLCBtcF9mb3JtYXR0ZXIsIG1wX25zZSk7CisKKwkJal9yZXQucmVsZWFzZSgpOworCQlyZXR1cm4gcmV0OworCisJfQorCisJY2F0Y2ggKFhTTEV4Y2VwdGlvbiAmZSkgeworCisJCXNhZmVCdWZmZXIgbXNnOworCisJCS8vIFdoYXRldmVyIGhhcHBlbnMgLSBmaXggYW55IGNoYW5nZXMgdG8gdGhlIG9yaWdpbmFsIGRvY3VtZW50CisJCWNsZWFyWFBhdGhOUyhkb2N1bWVudCwgYWRkZWROb2RlcywgbXBfZm9ybWF0dGVyLCBtcF9uc2UpOworCQorCQkvLyBDb2xsYXRlIHRoZSBleGNlcHRpb24gbWVzc2FnZSBpbnRvIGFuIFhTRUMgbWVzc2FnZS4JCQorCQltc2cuc2JUcmFuc2NvZGVJbigiWGFsYW4gRXhjZXB0aW9uIDogIik7CisjaWYgZGVmaW5lZCAoWFNFQ19YU0xFWENFUFRJT05fUkVUVVJOU19ET01TVFJJTkcpCisJCW1zZy5zYlhNTENoQ2F0KGUuZ2V0VHlwZSgpLmNfc3RyKCkpOworI2Vsc2UKKwkJbXNnLnNiWE1MQ2hDYXQoZS5nZXRUeXBlKCkpOworI2VuZGlmCisJCW1zZy5zYlhNTENoQ2F0KCIgY2F1Z2h0LiAgTWVzc2FnZSA6ICIpOworCQltc2cuc2JYTUxDaENhdChlLmdldE1lc3NhZ2UoKS5jX3N0cigpKTsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhQYXRoRmlsdGVyRXJyb3IsCisJCQltc2cucmF3WE1MQ2hCdWZmZXIoKSk7CisKKwl9CisKKwljYXRjaCAoLi4uKSB7CisJCWNsZWFyWFBhdGhOUyhkb2N1bWVudCwgYWRkZWROb2RlcywgbXBfZm9ybWF0dGVyLCBtcF9uc2UpOworCQl0aHJvdzsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworYm9vbCBUWEZNWFBhdGhGaWx0ZXI6OmNoZWNrTm9kZUluSW5wdXQoRE9NTm9kZSAqIG4sIERPTU5vZGUgKiBhdHRQYXJlbnQpIHsKKworCWlmIChtcF9mcmFnbWVudCAhPSBOVUxMKSB7CisKKwkJRE9NTm9kZSAqIHAgPSBuOworCisJCS8qIENoZWNrIGF0dFBhcmVudCBoZXJlIHRvIHJlZHVjZSBjeWNsZXMgKi8KKwkJaWYgKGF0dFBhcmVudCAhPSBOVUxMKSB7CisJCQlpZiAocCA9PSBtcF9mcmFnbWVudCkKKwkJCQlyZXR1cm4gdHJ1ZTsKKwkJCXAgPSBhdHRQYXJlbnQ7CisJCX0KKworCQl3aGlsZSAocCAhPSBOVUxMKSB7CisKKwkJCWlmIChwID09IG1wX2ZyYWdtZW50KQorCQkJCXJldHVybiB0cnVlOworCQkJCisJCQlwID0gcC0+Z2V0UGFyZW50Tm9kZSgpOworCisJCX0KKworCQlyZXR1cm4gZmFsc2U7CisKKwl9CisKKwlyZXR1cm4gbXBfaW5wdXRMaXN0LT5oYXNOb2RlKG4pOworCit9CisKK2Jvb2wgVFhGTVhQYXRoRmlsdGVyOjpjaGVja05vZGVJblNjb3BlKERPTU5vZGUgKiBuKSB7CisKKwkvLyBXYWxrIGJhY2t3YXJkcyB0aHJvdWdoIHRoZSBsaXN0cworCWxzdHNWZWN0b3JUeXBlOjppdGVyYXRvciBsc3RzSXRlcjsKKworCWxzdHNJdGVyID0gbV9sc3RzLmVuZCgpOworCWZpbHRlclNldEhvbGRlciAqc2g7CisKKwl3aGlsZSAobHN0c0l0ZXIgIT0gbV9sc3RzLmJlZ2luKCkpIHsKKworCQlsc3RzSXRlci0tOworCQlzaCA9ICpsc3RzSXRlcjsKKwkJaWYgKHNoLT5hbmNlc3RvckluU2NvcGUgIT0gTlVMTCkgeworCisJCQkvLyBIYXZlIGFuIGFuY2VzdG9yIGluIHNjb3BlLCBzbyB0aGlzIG5vZGUgaXMgaW4gdGhpcyBsaXN0CisJCQlpZiAoc2gtPnR5cGUgPT0gRklMVEVSX1VOSU9OKQorCQkJCS8vIEdvdCB0aGlzIGZhciwgbXVzdCBiZSBPSyEKKwkJCQlyZXR1cm4gdHJ1ZTsKKwkJCWlmIChzaC0+dHlwZSA9PSBGSUxURVJfU1VCVFJBQ1QpCisJCQkJcmV0dXJuIGZhbHNlOworCisJCX0KKwkJZWxzZSB7CisKKwkJCWlmIChzaC0+dHlwZSA9PSBGSUxURVJfSU5URVJTRUNUKQorCQkJCXJldHVybiBmYWxzZTsKKworCQl9CisKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKKworfQorI2lmIDEKK3ZvaWQgVFhGTVhQYXRoRmlsdGVyOjp3YWxrRG9jdW1lbnQoRE9NTm9kZSAqIG4pIHsKKworCS8vIE5vbi1yZWN1cnNpdmUgdmVyc2lvbgorCisJRE9NTm9kZSAqIGN1cnJlbnQgPSBuOworCURPTU5vZGUgKiBuZXh0OworCURPTU5vZGUgKiBhdHRQYXJlbnQgPSBOVUxMOyAJLyogQXNzaWduIE5VTEwgdG8gcmVtb3ZlIHNwdXJpb3VzIEZvcnRlIHdhcm5pbmcgKi8KKwlib29sIGRvbmUgPSBmYWxzZTsKKwlib29sIHRyZWVVcCA9IGZhbHNlOworCURPTU5hbWVkTm9kZU1hcCAqIGF0dHMgPSBuLT5nZXRBdHRyaWJ1dGVzKCk7CisJaW50IGF0dHNTaXplID0gLTE7CisJaW50IGN1cnJlbnRBdHQgPSAtMTsKKwlsc3RzVmVjdG9yVHlwZTo6aXRlcmF0b3IgbHN0c0l0ZXI7CisKKwl3aGlsZSAoZG9uZSA9PSBmYWxzZSAmJiBjdXJyZW50ICE9IE5VTEwpIHsKKworCQlpZiAodHJlZVVwID09IHRydWUpIHsKKworCQkJaWYgKGN1cnJlbnQgPT0gbikgeworCisJCQkJLy8gV2UgYXJlIGNvbXBsZXRlLgorCQkJCWRvbmUgPSB0cnVlOworCisJCQl9CisKKwkJCWVsc2UgeworCisJCQkJLy8gUmVtb3ZlIHRoaXMgbm9kZSBmcm9tIHRoZSBhbmNlc3RvciBsaXN0cworCQkJCWZvciAobHN0c0l0ZXIgPSBtX2xzdHMuYmVnaW4oKTsgbHN0c0l0ZXIgPCBtX2xzdHMuZW5kKCk7ICsrbHN0c0l0ZXIpIHsKKworCQkJCQlpZiAoKCpsc3RzSXRlciktPmFuY2VzdG9ySW5TY29wZSA9PSBjdXJyZW50KSB7CisJCQkJCQkoKmxzdHNJdGVyKS0+YW5jZXN0b3JJblNjb3BlID0gTlVMTDsKKwkJCQkJfQorCQkJCX0KKworCisJCQkJLy8gQ2hlY2sgZm9yIGFub3RoZXIgc2libGluZworCQkJCW5leHQgPSBjdXJyZW50LT5nZXROZXh0U2libGluZygpOworCisJCQkJaWYgKG5leHQgPT0gTlVMTCkgeworCisJCQkJCWN1cnJlbnQgPSBjdXJyZW50LT5nZXRQYXJlbnROb2RlKCk7CisJCQkJCXRyZWVVcCA9IHRydWU7CisJCQkJfQorCisJCQkJZWxzZSB7CisKKwkJCQkJY3VycmVudCA9IG5leHQ7CisJCQkJCXRyZWVVcCA9IGZhbHNlOworCisJCQkJfQorCisJCQl9CisKKwkJfSAvKiB0cmVlVXAgPT0gdHJ1ZSAqLworCisJCWVsc2UgeworCisJCQkvLyBDaGVjayBpZiB0aGUgY3VycmVudCBub2RlIGlzIGluIHRoZSByZXN1bHQgc2V0LiAgVGhlIHdhbGsgdGhlIGNoaWxkcmVuCisKKwkJCS8vIEZpcnN0IGNoZWNrIGlmIHRoaXMgbm9kZSBpcyBpbiBhbnkgbGlzdHMsIGFuZCBpZiBzbywKKwkJCS8vIHNldCB0aGUgYXBwcm9wcmlhdGUgYW5jZXN0b3Igbm9kZXMgKGlmIG5lY2Vzc2FyeSkKKworCQkJZm9yIChsc3RzSXRlciA9IG1fbHN0cy5iZWdpbigpOyBsc3RzSXRlciA8IG1fbHN0cy5lbmQoKTsgKytsc3RzSXRlcikgeworCisJCQkJaWYgKCgqbHN0c0l0ZXIpLT5hbmNlc3RvckluU2NvcGUgPT0gTlVMTCAmJgorCQkJCQkoKmxzdHNJdGVyKS0+bHN0LT5oYXNOb2RlKGN1cnJlbnQpKSB7CisKKwkJCQkJKCpsc3RzSXRlciktPmFuY2VzdG9ySW5TY29wZSA9IGN1cnJlbnQ7CisKKwkJCQl9CisKKwkJCQkvLyAKKwkJCX0KKworCQkJLy8gTm93IHRoYXQgdGhlIGFuY2VzdG9yIHNldHVwIGlzIGRvbmUsIGNoZWNrIHRvIHNlZSBpZiB0aGlzIG5vZGUgaXMgCisJCQkvLyBpbiBzY29wZS4KKworCQkJaWYgKGNoZWNrTm9kZUluU2NvcGUoY3VycmVudCkgJiYgCisJCQkJY2hlY2tOb2RlSW5JbnB1dChjdXJyZW50LCAoYXR0cyAhPSBOVUxMID8gYXR0UGFyZW50IDogTlVMTCkpKSB7CisKKwkJCQltX3hwYXRoRmlsdGVyTWFwLmFkZE5vZGUoY3VycmVudCk7CisKKwkJCX0KKworCQkJLy8gTm93IGZpbmQgdGhlIG5leHQgbm9kZSEKKworCQkJaWYgKGF0dHMgIT0gTlVMTCkgeworCisJCQkJLy8gV29ya2luZyBvbiBhbiBhdHRyaWJ1dGUgbGlzdAorCQkJCWN1cnJlbnRBdHQrKzsKKworCQkJCWlmIChjdXJyZW50QXR0ID09IGF0dHNTaXplKSB7CisKKwkJCQkJLy8gQXR0cmlidXRlIGxpc3QgY29tcGxldGUKKwkJCQkJYXR0cyA9IE5VTEw7CisJCQkJCWN1cnJlbnQgPSBhdHRQYXJlbnQ7CisJCQkJCW5leHQgPSBjdXJyZW50LT5nZXRGaXJzdENoaWxkKCk7CisJCQkJCWlmIChuZXh0ID09IE5VTEwpCisJCQkJCQl0cmVlVXAgPSB0cnVlOworCQkJCQllbHNlIHsKKwkJCQkJCWN1cnJlbnQgPSBuZXh0OworCQkJCQkJdHJlZVVwID0gZmFsc2U7CisJCQkJCX0KKworCQkJCX0KKworCQkJCWVsc2UgeworCisJCQkJCWN1cnJlbnQgPSBhdHRzLT5pdGVtKGN1cnJlbnRBdHQpOworCisJCQkJfQorCisJCQl9CisKKwkJCWVsc2UgeworCQkJCS8vIFdvcmtpbmcgb24gYW4gZWxlbWVudCBvciBvdGhlciBub24tYXR0cmlidXRlIG5vZGUKKwkJCQlhdHRzID0gY3VycmVudC0+Z2V0QXR0cmlidXRlcygpOworCisJCQkJaWYgKGF0dHMgIT0gTlVMTCAmJiAoKGF0dHNTaXplID0gYXR0cy0+Z2V0TGVuZ3RoKCkpID4gMCkpIHsKKworCQkJCQljdXJyZW50QXR0ID0gMDsKKwkJCQkJYXR0UGFyZW50ID0gY3VycmVudDsKKwkJCQkJY3VycmVudCA9IGF0dHMtPml0ZW0oMCk7CisJCQkJCXRyZWVVcCA9IGZhbHNlOworCisJCQkJfQorCisJCQkJZWxzZSB7CisKKwkJCQkJYXR0cyA9IE5VTEw7CisKKwkJCQkJbmV4dCA9IGN1cnJlbnQtPmdldEZpcnN0Q2hpbGQoKTsKKworCQkJCQlpZiAobmV4dCAhPSBOVUxMKSB7CisJCQkJCQljdXJyZW50ID0gbmV4dDsKKwkJCQkJCXRyZWVVcCA9IGZhbHNlOworCQkJCQl9CisKKwkJCQkJZWxzZSB7CisKKwkJCQkJCXRyZWVVcCA9IHRydWU7CisKKwkJCQkJfQorCisJCQkJfQorCQkJfSAvKiAhIGF0dHMgPT0gTlVMTCAqLworCQl9CisJfSAvKiB3aGlsZSAqLworfQorI2VuZGlmCisjaWYgMAorCit2b2lkIFRYRk1YUGF0aEZpbHRlcjo6d2Fsa0RvY3VtZW50KERPTU5vZGUgKiBuKSB7CisKKwkvLyBDaGVjayBpZiB0aGUgY3VycmVudCBub2RlIGlzIGluIHRoZSByZXN1bHQgc2V0LiAgVGhlIHdhbGsgdGhlIGNoaWxkcmVuCisJbHN0c1ZlY3RvclR5cGU6Oml0ZXJhdG9yIGxzdHNJdGVyOworCisJLy8gRmlyc3QgY2hlY2sgaWYgdGhpcyBub2RlIGlzIGluIGFueSBsaXN0cywgYW5kIGlmIHNvLAorCS8vIHNldCB0aGUgYXBwcm9wcmlhdGUgYW5jZXN0b3Igbm9kZXMgKGlmIG5lY2Vzc2FyeSkKKworCWZvciAobHN0c0l0ZXIgPSBtX2xzdHMuYmVnaW4oKTsgbHN0c0l0ZXIgPCBtX2xzdHMuZW5kKCk7ICsrbHN0c0l0ZXIpIHsKKworCQlpZiAoKCpsc3RzSXRlciktPmFuY2VzdG9ySW5TY29wZSA9PSBOVUxMICYmCisJCQkoKmxzdHNJdGVyKS0+bHN0LT5oYXNOb2RlKG4pKSB7CisKKwkJCSgqbHN0c0l0ZXIpLT5hbmNlc3RvckluU2NvcGUgPSBuOworCisJCX0KKwl9CisKKwkvLyBOb3cgdGhhdCB0aGUgYW5jZXN0b3Igc2V0dXAgaXMgZG9uZSwgY2hlY2sgdG8gc2VlIGlmIHRoaXMgbm9kZSBpcyAKKwkvLyBpbiBzY29wZS4KKworCWlmIChjaGVja05vZGVJblNjb3BlKG4pICYmIGNoZWNrTm9kZUluSW5wdXQobikpIHsKKworCQltX3hwYXRoRmlsdGVyTWFwLmFkZE5vZGUobik7CisKKwl9CisKKwkvLyBEbyBhbnkgYXR0cmlidXRlcworCisJRE9NTmFtZWROb2RlTWFwICogYXR0cyA9IG4tPmdldEF0dHJpYnV0ZXMoKTsKKwkKKwlpZiAoYXR0cyAhPSBOVUxMKSB7CisKKwkJdW5zaWduZWQgaW50IHMgPSBhdHRzLT5nZXRMZW5ndGgoKTsKKwkJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzOyArK2kpIHsKKworCQkJd2Fsa0RvY3VtZW50KGF0dHMtPml0ZW0oaSkpOworCisJCX0KKworCX0KKworCS8vIERvIGFueSBjaGlsZGVyZW4KKworCURPTU5vZGUgKiBjID0gbi0+Z2V0Rmlyc3RDaGlsZCgpOworCisJd2hpbGUgKGMgIT0gTlVMTCkgeworCisJCXdhbGtEb2N1bWVudChjKTsKKwkJYyA9IGMtPmdldE5leHRTaWJsaW5nKCk7CisKKwl9CisKKwkvLyBOb3cgcmVtb3ZlIGZyb20gYW5jZXN0b3IgbGlzdHMgaWYgd2UgYXJlIHRoYXQgYW5jZXN0b3IKKwlmb3IgKGxzdHNJdGVyID0gbV9sc3RzLmJlZ2luKCk7IGxzdHNJdGVyIDwgbV9sc3RzLmVuZCgpOyArK2xzdHNJdGVyKSB7CisKKwkJaWYgKCgqbHN0c0l0ZXIpLT5hbmNlc3RvckluU2NvcGUgPT0gbikgeworCQkJKCpsc3RzSXRlciktPmFuY2VzdG9ySW5TY29wZSA9IE5VTEw7CisJCX0KKwl9CisKK30KKyNlbmRpZgordm9pZCBUWEZNWFBhdGhGaWx0ZXI6OmV2YWx1YXRlRXhwcnMoRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyOjpleHByVmVjdG9yVHlwZSAqIGV4cHJzKSB7CisKKwlpZiAoZXhwcnMgPT0gTlVMTCB8fCBleHBycy0+c2l6ZSgpIDwgMSkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WFBhdGhGaWx0ZXJFcnJvciwKKwkJCSJUWEZNWFBhdGhGaWx0ZXI6OmV2YWx1YXRlRXhwciAtIG5vIGV4cHJlc3Npb24gbGlzdCBzZXQiKTsKKworCX0KKworCURTSUdUcmFuc2Zvcm1YUGF0aEZpbHRlcjo6ZXhwclZlY3RvclR5cGU6Oml0ZXJhdG9yIGk7CisKKwlmb3IgKGkgPSBleHBycy0+YmVnaW4oKTsgaSA8IGV4cHJzLT5lbmQoKTsgKytpKSB7CisKKwkJWFNFQ1hQYXRoTm9kZUxpc3QgKiBsc3QgPSBldmFsdWF0ZVNpbmdsZUV4cHIoKmkpOworCQlmaWx0ZXJTZXRIb2xkZXIgKiBzaDsKKwkJWFNFQ25ldyhzaCwgZmlsdGVyU2V0SG9sZGVyKTsKKworCQlzaC0+bHN0ID0gbHN0OworCQlzaC0+dHlwZSA9ICgqaSktPm1fZmlsdGVyVHlwZTsKKwkJc2gtPmFuY2VzdG9ySW5TY29wZSA9IE5VTEw7CisKKwkJaWYgKGxzdCAhPSBOVUxMKSB7CisKKwkJCW1fbHN0cy5wdXNoX2JhY2soc2gpOworCisJCX0KKworCX0KKworCS8vIFdlbGwgd2UgYXBwZWFyIHRvIGhhdmUgc3VjY2Vzc2Z1bGx5IHJ1biB0aHJvdWdoIGFsbCB0aGUgbm9kZWxpc3RzIQorCisJbXBfZnJhZ21lbnQgPSBOVUxMOworCW1wX2lucHV0TGlzdCA9IE5VTEw7CisKKwkvLyBGaW5kIHRoZSBpbnB1dCBub2Rlc2V0CisJVFhGTUJhc2U6Om5vZGVUeXBlIGlucHV0VHlwZSA9IGlucHV0LT5nZXROb2RlVHlwZSgpOworCXN3aXRjaCAoaW5wdXRUeXBlKSB7CisKKwljYXNlIERPTV9OT0RFX0RPQ1VNRU5UIDoKKworCQltcF9mcmFnbWVudCA9IGRvY3VtZW50OworCQlicmVhazsKKworCWNhc2UgRE9NX05PREVfRE9DVU1FTlRfRlJBR01FTlQgOgorCisJCW1wX2ZyYWdtZW50ID0gaW5wdXQtPmdldEZyYWdtZW50Tm9kZSgpOworCQlicmVhazsKKworCWNhc2UgRE9NX05PREVfWFBBVEhfTk9ERVNFVCA6CisKKwkJbXBfaW5wdXRMaXN0ID0gJihpbnB1dC0+Z2V0WFBhdGhOb2RlTGlzdCgpKTsKKwkJYnJlYWs7CisKKwlkZWZhdWx0IDoKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhQYXRoRmlsdGVyRXJyb3IsCisJCQkiVFhGTVhQYXRoRmlsdGVyOjpldmFsdWF0ZUV4cHJzIC0gdW5rbm93biBpbnB1dCB0eXBlIik7CisKKwl9CisKKwkvLyBOb3cganVzdCByZWN1cnNlIHRocm91Z2ggZWFjaCBub2RlIGluIHRoZSBkb2N1bWVudAorCXdhbGtEb2N1bWVudChkb2N1bWVudCk7CisKKworfQorCQorCQorLy8gTWV0aG9kcyB0byBnZXQgdHJhbmZvcm0gb3V0cHV0IHR5cGUgYW5kIGlucHV0IHJlcXVpcmVtZW50CisKK1RYRk1CYXNlOjppb1R5cGUgVFhGTVhQYXRoRmlsdGVyOjpnZXRJbnB1dFR5cGUodm9pZCkgeworCisJcmV0dXJuIFRYRk1CYXNlOjpET01fTk9ERVM7CisKK30KK1RYRk1CYXNlOjppb1R5cGUgVFhGTVhQYXRoRmlsdGVyOjpnZXRPdXRwdXRUeXBlKHZvaWQpIHsKKworCXJldHVybiBUWEZNQmFzZTo6RE9NX05PREVTOworCit9CisKK1RYRk1CYXNlOjpub2RlVHlwZSBUWEZNWFBhdGhGaWx0ZXI6OmdldE5vZGVUeXBlKHZvaWQpIHsKKworCXJldHVybiBUWEZNQmFzZTo6RE9NX05PREVfWFBBVEhfTk9ERVNFVDsKKworfQorCisvLyBNZXRob2RzIHRvIGdldCBvdXRwdXQgZGF0YQorCit1bnNpZ25lZCBpbnQgVFhGTVhQYXRoRmlsdGVyOjpyZWFkQnl0ZXMoWE1MQnl0ZSAqIGNvbnN0IHRvRmlsbCwgdW5zaWduZWQgaW50IG1heFRvRmlsbCkgeworCisJcmV0dXJuIDA7CisKK30KKworRE9NRG9jdW1lbnQgKlRYRk1YUGF0aEZpbHRlcjo6Z2V0RG9jdW1lbnQoKSB7CisKKwlyZXR1cm4gZG9jdW1lbnQ7CisKK30KKworRE9NTm9kZSAqVFhGTVhQYXRoRmlsdGVyOjpnZXRGcmFnbWVudE5vZGUoKSB7CisKKwlyZXR1cm4gTlVMTDsKKworfQorCitjb25zdCBYTUxDaCAqIFRYRk1YUGF0aEZpbHRlcjo6Z2V0RnJhZ21lbnRJZCgpIHsKKworCXJldHVybiBOVUxMOwkvLyBFbXB0eSBzdHJpbmcKKworfQorCitYU0VDWFBhdGhOb2RlTGlzdAkmIFRYRk1YUGF0aEZpbHRlcjo6Z2V0WFBhdGhOb2RlTGlzdCgpIHsKKworCXJldHVybiBtX3hwYXRoRmlsdGVyTWFwOworCit9CisKKyNlbmRpZiAvKiBOT19YUEFUSCAqLworCisKKwpkaWZmIC0tZ2l0IGEvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1YUGF0aEZpbHRlci5ocHAgYi9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTVhQYXRoRmlsdGVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWNhOGNhCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1YUGF0aEZpbHRlci5ocHAKQEAgLTAsMCArMSwxMTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDEwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFRYRk1YUGF0aCA6PSBDbGFzcyB0aGF0IHBlcmZvcm1zIFhQYXRoIHRyYW5zZm9ybXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZiAhZGVmaW5lZCAoVFhGTVhQQVRIRklMVEVSX0hFQURFUikKKyNkZWZpbmUgVFhGTVhQQVRIRklMVEVSX0hFQURFUgorCisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTUJhc2UuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1hQYXRoTm9kZUxpc3QuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHVHJhbnNmb3JtWFBhdGhGaWx0ZXIuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHQ29uc3RhbnRzLmhwcD4KKworLy8gWGVyY2VzCisKK1hTRUNfREVDTEFSRV9YRVJDRVNfQ0xBU1MoRE9NTm9kZSk7CitYU0VDX0RFQ0xBUkVfWEVSQ0VTX0NMQVNTKERPTU5hbWVkTm9kZU1hcCk7CisKK2NsYXNzIFRYRk1YUGF0aEZpbHRlckV4cHI7CitjbGFzcyBYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlcjsKKworc3RydWN0IGZpbHRlclNldEhvbGRlciB7CisKKwlYU0VDWFBhdGhOb2RlTGlzdAkqIGxzdDsKKwl4cGF0aEZpbHRlclR5cGUJCXR5cGU7CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUJCQkJCisJCQkJCQkqIGFuY2VzdG9ySW5TY29wZTsKKworfTsKKworCisjaWZuZGVmIFhTRUNfTk9fWFBBVEgKKworLyoqCisgKiBcYnJpZWYgVHJhbnNmb3JtZXIgdG8gaGFuZGxlIFhQYXRoIHRyYW5zZm9ybXMKKyAqIEBpbmdyb3VwIGludGVybmFsCisgKi8KKworCitjbGFzcyBEU0lHX0VYUE9SVCBUWEZNWFBhdGhGaWx0ZXIgOiBwdWJsaWMgVFhGTUJhc2UgeworCitwdWJsaWM6CisKKwlUWEZNWFBhdGhGaWx0ZXIoWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICpkb2MpOworCX5UWEZNWFBhdGhGaWx0ZXIoKTsKKworCS8vIE1ldGhvZHMgdG8gc2V0IHRoZSBpbnB1dHMKKworCXZvaWQgc2V0SW5wdXQoVFhGTUJhc2UgKm5ld0lucHV0KTsKKwkKKwkvLyBNZXRob2RzIHRvIGdldCB0cmFuZm9ybSBvdXRwdXQgdHlwZSBhbmQgaW5wdXQgcmVxdWlyZW1lbnQKKworCXZpcnR1YWwgVFhGTUJhc2U6OmlvVHlwZSBnZXRJbnB1dFR5cGUodm9pZCk7CisJdmlydHVhbCBUWEZNQmFzZTo6aW9UeXBlIGdldE91dHB1dFR5cGUodm9pZCk7CisJdmlydHVhbCBUWEZNQmFzZTo6bm9kZVR5cGUgZ2V0Tm9kZVR5cGUodm9pZCk7CisKKwkvLyBYUGF0aEZpbHRlciB1bmlxdWUKKworCXZvaWQgZXZhbHVhdGVFeHBycyhEU0lHVHJhbnNmb3JtWFBhdGhGaWx0ZXI6OmV4cHJWZWN0b3JUeXBlICogZXhwcnMpOworCVhTRUNYUGF0aE5vZGVMaXN0ICogZXZhbHVhdGVTaW5nbGVFeHByKERTSUdYUGF0aEZpbHRlckV4cHIgKmV4cHIpOworCisJLy8gTWV0aG9kcyB0byBnZXQgb3V0cHV0IGRhdGEKKworCXZpcnR1YWwgdW5zaWduZWQgaW50IHJlYWRCeXRlcyhYTUxCeXRlICogY29uc3QgdG9GaWxsLCBjb25zdCB1bnNpZ25lZCBpbnQgbWF4VG9GaWxsKTsKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqZ2V0RG9jdW1lbnQoKTsKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICpnZXRGcmFnbWVudE5vZGUoKTsKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0RnJhZ21lbnRJZCgpOworCXZpcnR1YWwgWFNFQ1hQYXRoTm9kZUxpc3QJJiBnZXRYUGF0aE5vZGVMaXN0KCk7CisKK3ByaXZhdGU6CisKKwl0eXBlZGVmIHN0ZDo6dmVjdG9yPGZpbHRlclNldEhvbGRlciAqPiBsc3RzVmVjdG9yVHlwZTsKKwlUWEZNWFBhdGhGaWx0ZXIoKTsKKwl2b2lkIHdhbGtEb2N1bWVudChYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqIG4pOworCWJvb2wgY2hlY2tOb2RlSW5TY29wZShYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqIG4pOworCWJvb2wgY2hlY2tOb2RlSW5JbnB1dChYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqIG4sIAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqIGF0dFBhcmVudCk7CisKKworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudAkJCQorCQkJCQkJKiBkb2N1bWVudDsKKwlYU0VDWFBhdGhOb2RlTGlzdAltX3hwYXRoRmlsdGVyTWFwOworCWxzdHNWZWN0b3JUeXBlCQltX2xzdHM7CisKKwlYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlciAqIG1wX2Zvcm1hdHRlcjsKKworCS8qIFVzZWQgdG8gaG9sZCBkZXRhaWxzIGR1cmluZyB0cmVlLXdhbGsgKi8KKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZQkJCQkKKwkJCQkJCSogbXBfZnJhZ21lbnQ7CisJWFNFQ1hQYXRoTm9kZUxpc3QJKiBtcF9pbnB1dExpc3Q7CisKK307CisKKyNlbmRpZgorCisjZW5kaWYgLyogWFBBVEhGSUxURVJfSEVBREVSICovCmRpZmYgLS1naXQgYS9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTVhTTC5jcHAgYi9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTVhTTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZhMWU1OQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3RyYW5zZm9ybWVycy9UWEZNWFNMLmNwcApAQCAtMCwwICsxLDI1MiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogVFhGTVhTTCA6PSBDbGFzcyB0aGF0IHBlcmZvcm1zIFhQYXRoIHRyYW5zZm9ybXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNWFNMLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0NvbnN0YW50cy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKworI2lmbmRlZiBYU0VDX05PX1hTTFQKKworLy8gWGVyY2VzCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NSW1wbGVtZW50YXRpb25MUy5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy9wYXJzZXJzL1hlcmNlc0RPTVBhcnNlci5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy9mcmFtZXdvcmsvTWVtQnVmSW5wdXRTb3VyY2UuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9KYW5pdG9yLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDxzdHJzdHJlYW0+CisjaW5jbHVkZSA8ZnN0cmVhbT4KKworWEFMQU5fVVNJTkdfWEFMQU4oWFNMVFJlc3VsdFRhcmdldCkKKworLy8gRnVuY3Rpb24gdXNlZCB0byBvdXRwdXQgZGF0YSB0byBhIHNhZmVCdWZmZXIKK2V4dGVybiAiQyIgeworCit0eXBlZGVmIHN0cnVjdCBUcmFuc2Zvcm1YU0xPdXRwdXRIb2xkZXJTdHJ1Y3QgeworCisJc2FmZUJ1ZmZlcglidWZmZXI7CisJaW50CQkJb2Zmc2V0OworCit9IFRyYW5zZm9ybVhTTE91dHB1dEhvbGRlcjsKKworQ2FsbGJhY2tTaXplVHlwZSBUcmFuc2Zvcm1YU0xPdXRwdXRGbihjb25zdCBjaGFyICogcywgQ2FsbGJhY2tTaXplVHlwZSBzeiwgdm9pZCAqIGRhdGEpIHsKKworCVRyYW5zZm9ybVhTTE91dHB1dEhvbGRlciAqIG91dHB1dCA9IChUcmFuc2Zvcm1YU0xPdXRwdXRIb2xkZXIgKikgZGF0YTsKKworCW91dHB1dC0+YnVmZmVyLnNiTWVtY3B5SW4ob3V0cHV0LT5vZmZzZXQsIHMsIChpbnQpIHN6KTsKKwlvdXRwdXQtPm9mZnNldCArPSAoaW50KSBzejsKKwlvdXRwdXQtPmJ1ZmZlcltvdXRwdXQtPm9mZnNldF0gPSAnXDAnOworCisJcmV0dXJuIHN6OworCit9Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgRm9yIGV4cGFuZGluZyBuYW1lIHNwYWNlcyB3aGVuIG5lY2Vzc2FyeQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYm9vbCBUWEZNWFNMOjpuYW1lU3BhY2VzRXhwYW5kZWQodm9pZCkgeworCisJLy8gTk9URSA6IERvIG5vdCBjaGVjayBpbnB1dHMgYXMgdGhpcyBoYXMgaXRzIG93biBkb2N1bWVudAorCisJcmV0dXJuIChtcF9uc2UgIT0gTlVMTCk7CisKK30KKwordm9pZCBUWEZNWFNMOjpleHBhbmROYW1lU3BhY2VzKHZvaWQpIHsKKworCWlmIChtcF9uc2UgIT0gTlVMTCkKKwkJcmV0dXJuOwkJLy8gQWxyZWFkeSBkb25lCisJCisJaWYgKGRvY091dCAhPSBOVUxMKSB7CisKKwkJWFNFQ25ldyhtcF9uc2UsIFhTRUNOYW1lU3BhY2VFeHBhbmRlcihkb2NPdXQpKTsKKworCQltcF9uc2UtPmV4cGFuZE5hbWVTcGFjZXMoKTsKKworCX0KKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gIFRyYW5zZm9ybSBmdW5jdGlvbnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworVFhGTVhTTDo6VFhGTVhTTChET01Eb2N1bWVudCAqZG9jKSA6IAorCVRYRk1CYXNlKGRvYyksCisjaWYgWEFMQU5fVkVSU0lPTl9NQUpPUiA9PSAxICYmIFhBTEFOX1ZFUlNJT05fTUlOT1IgPiAxMAoreGRzKHhwbCkKKyNlbHNlCisjaWYgZGVmaW5lZCBYU0VDX1hFUkNFU1BBUlNFUkxJQUlTT05fUkVRU19ET01TVVBQT1JUCit4cGwoeGRzKSAKKyNlbHNlCit4cGwoKQorI2VuZGlmCisjZW5kaWYKK3sKKworCS8vIFplcm9pc2UgYWxsIHRoZSBwb2ludGVycworCisJeGQgPSBOVUxMOworCit9CisKK1RYRk1YU0w6On5UWEZNWFNMKCkgeworCisJaWYgKGRvY091dCAhPSBOVUxMKSB7CisJCWlmIChtcF9uc2UgIT0gTlVMTCkgeworCQkJZGVsZXRlIG1wX25zZTsJLy8gRG9uJ3QgYm90aGVyIGNvbGxhcHNpbmcKKwkJCW1wX25zZSA9IE5VTEw7CisJCX0KKwkJZG9jT3V0LT5yZWxlYXNlKCk7CQorCX0KK30KKworLy8gTWV0aG9kcyB0byBzZXQgdGhlIGlucHV0cworCit2b2lkIFRYRk1YU0w6OnNldElucHV0KFRYRk1CYXNlICpuZXdJbnB1dCkgeworCisJaW5wdXQgPSBuZXdJbnB1dDsKKworCWlmIChuZXdJbnB1dC0+Z2V0T3V0cHV0VHlwZSgpICE9IFRYRk1CYXNlOjpCWVRFX1NUUkVBTSkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6VHJhbnNmb3JtSW5wdXRPdXRwdXRGYWlsLCAiWFNMIHJlcXVpcmVzIERPTV9OT0RFUyBpbnB1dCB0eXBlIik7CisKKwl9CisKKwkvLyBTaG91bGQgaGF2ZSBhIG1ldGhvZCB0byBjaGVjayBpZiB0aGUgaW5wdXQgaXMgYSBzdHJhaWdodCBVUkwgLSBpZiBpdCBpcywganVzdCByZWFkIHRoZQorCS8vIFVSTCBuYW1lIGFuZCBjcmVhdGUgYW4gWFNMVElucHV0U291cmNlIHdpdGggdGhpcyBhcyB0aGUgaW5wdXQgSUQuCisKKwlpbnQgc2l6ZSA9IDA7CisJaW50IGNvdW50ID0gMDsKKwl1bnNpZ25lZCBjaGFyIGJ1Zls1MTJdOworCisJd2hpbGUgKChjb3VudCA9IGlucHV0LT5yZWFkQnl0ZXMoKFhNTEJ5dGUgKikgYnVmLCA1MTIpKSAhPSAwKSB7CisKKwkJc2JJbkRvYy5zYk1lbWNweUluKHNpemUsIGJ1ZiwgY291bnQpOworCQlzaXplICs9IGNvdW50OworCisJfQorCisJc2JJbkRvY1tzaXplXSA9ICdcMCc7CisKK30KKwordm9pZCBUWEZNWFNMOjpldmFsdWF0ZVN0eWxlU2hlZXQoY29uc3Qgc2FmZUJ1ZmZlciAmc2JTdHlsZVNoZWV0KSB7CisKKwkvLyBTZXQgdXAgaW9zdHJlYW1zIGZvciBpbnB1dAorCXN0ZDo6aXN0cnN0cmVhbQl0aGVYTUxTdHJlYW0oKGNoYXIgKikgc2JJbkRvYy5yYXdCdWZmZXIoKSwgKGludCkgc3RybGVuKChjaGFyICopIHNiSW5Eb2MucmF3QnVmZmVyKCkpKTsKKwlzdGQ6OmlzdHJzdHJlYW0JdGhlWFNMU3RyZWFtKChjaGFyICopIHNiU3R5bGVTaGVldC5yYXdCdWZmZXIoKSwgKGludCkgc3RybGVuKChjaGFyICopIHNiU3R5bGVTaGVldC5yYXdCdWZmZXIoKSkpOworCisJLy8gTm93IHJlc29sdmUKKworCVhhbGFuVHJhbnNmb3JtZXIgeHQ7CisJVHJhbnNmb3JtWFNMT3V0cHV0SG9sZGVyIHR4b2g7CisJdHhvaC5idWZmZXIuc2JTdHJjcHlJbigiIik7CisJdHhvaC5vZmZzZXQgPSAwOworCQorCS8qaW50IHJlcyA9ICovCisJeHQudHJhbnNmb3JtKCZ0aGVYTUxTdHJlYW0sICZ0aGVYU0xTdHJlYW0sICh2b2lkICopICYgdHhvaCwgVHJhbnNmb3JtWFNMT3V0cHV0Rm4pOworCisJLy8gU2hvdWxkIGNoZWNrIHJlcworCisJLy8gTm93IHVzZSB4ZXJjZXMgdG8gInJlIHBhcnNlIiB0aGlzIGJhY2sgaW50byBhIERPTV9Ob2RlcyBkb2N1bWVudAorCVhlcmNlc0RPTVBhcnNlciAqIHBhcnNlciA9IG5ldyBYZXJjZXNET01QYXJzZXI7CisJSmFuaXRvcjxYZXJjZXNET01QYXJzZXI+IGpfcGFyc2VyKHBhcnNlcik7CisKKwlwYXJzZXItPnNldERvTmFtZXNwYWNlcyh0cnVlKTsKKwlwYXJzZXItPnNldENyZWF0ZUVudGl0eVJlZmVyZW5jZU5vZGVzKHRydWUpOworCXBhcnNlci0+c2V0RG9TY2hlbWEodHJ1ZSk7CisKKwkvLyBDcmVhdGUgYW4gaW5wdXQgc291cmNlCisKKwlNZW1CdWZJbnB1dFNvdXJjZSogbWVtSVMgPSBuZXcgTWVtQnVmSW5wdXRTb3VyY2UgKChjb25zdCBYTUxCeXRlKikgdHhvaC5idWZmZXIucmF3QnVmZmVyKCksIHR4b2gub2Zmc2V0LCAiWFNFQ01lbSIpOworCUphbml0b3I8TWVtQnVmSW5wdXRTb3VyY2U+IGpfbWVtSVMobWVtSVMpOworCisJaW50IGVycm9yQ291bnQgPSAwOworCisJcGFyc2VyLT5wYXJzZSgqbWVtSVMpOworICAgIGVycm9yQ291bnQgPSBwYXJzZXItPmdldEVycm9yQ291bnQoKTsKKyAgICBpZiAoZXJyb3JDb3VudCA+IDApCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WFNMRXJyb3IsICJFcnJvcnMgb2NjdXJlZCB3aGVuIFhTTCByZXN1bHQgd2FzIHBhcnNlZCBiYWNrIHRvIERPTV9Ob2RlcyIpOworCisgICAgZG9jT3V0ID0gcGFyc2VyLT5hZG9wdERvY3VtZW50KCk7CisKKwkvLyBKYW5pdG9ycyBjbGVhbiB1cAorCit9CisKKy8vIE1ldGhvZHMgdG8gZ2V0IHRyYW5mb3JtIG91dHB1dCB0eXBlIGFuZCBpbnB1dCByZXF1aXJlbWVudAorCitUWEZNQmFzZTo6aW9UeXBlIFRYRk1YU0w6OmdldElucHV0VHlwZSh2b2lkKSB7CisKKwlyZXR1cm4gVFhGTUJhc2U6OkRPTV9OT0RFUzsKKworfQorVFhGTUJhc2U6OmlvVHlwZSBUWEZNWFNMOjpnZXRPdXRwdXRUeXBlKHZvaWQpIHsKKworCXJldHVybiBUWEZNQmFzZTo6RE9NX05PREVTOworCit9CisKK1RYRk1CYXNlOjpub2RlVHlwZSBUWEZNWFNMOjpnZXROb2RlVHlwZSh2b2lkKSB7CisKKwlyZXR1cm4gVFhGTUJhc2U6OkRPTV9OT0RFX0RPQ1VNRU5UOworCit9CisKKy8vIE1ldGhvZHMgdG8gZ2V0IG91dHB1dCBkYXRhCisKK3Vuc2lnbmVkIGludCBUWEZNWFNMOjpyZWFkQnl0ZXMoWE1MQnl0ZSAqIGNvbnN0IHRvRmlsbCwgdW5zaWduZWQgaW50IG1heFRvRmlsbCkgeworCisJcmV0dXJuIDA7CisKK30KKworRE9NRG9jdW1lbnQgKiBUWEZNWFNMOjpnZXREb2N1bWVudCgpIHsKKworCXJldHVybiBkb2NPdXQ7CisKK30KKworRE9NTm9kZSAqIFRYRk1YU0w6OmdldEZyYWdtZW50Tm9kZSgpIHsKKworCXJldHVybiBOVUxMOworCit9CisKK2NvbnN0IFhNTENoICogVFhGTVhTTDo6Z2V0RnJhZ21lbnRJZCgpIHsKKworCXJldHVybiBOVUxMOwkvLyBFbXB0eSBzdHJpbmcKKworfQorCisjZW5kaWYgLyogTk9fWFNMVCAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1YU0wuaHBwIGIvYy9zcmMvdHJhbnNmb3JtZXJzL1RYRk1YU0wuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmNzg1NDAKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy90cmFuc2Zvcm1lcnMvVFhGTVhTTC5ocHAKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFRYRk1YU0wgOj0gQ2xhc3MgdGhhdCBwZXJmb3JtcyBYTUwgU3R5bGVzaGVldCBMYW5ndWFnZSB0cmFuc2Zvcm1zCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTUJhc2UuaHBwPgorCisvLyBYZXJjZXMKKworI2luY2x1ZGUgPHhlcmNlc2MvZG9tL0RPTS5ocHA+CisKKy8vIFhhbGFuCisKKyNpZm5kZWYgWFNFQ19OT19YUEFUSAorCisjaW5jbHVkZSA8eGFsYW5jL1hhbGFuRE9NL1hhbGFuRG9jdW1lbnQuaHBwPgorI2luY2x1ZGUgPHhhbGFuYy9YZXJjZXNQYXJzZXJMaWFpc29uL1hlcmNlc0RPTVN1cHBvcnQuaHBwPgorI2luY2x1ZGUgPHhhbGFuYy9YZXJjZXNQYXJzZXJMaWFpc29uL1hlcmNlc1BhcnNlckxpYWlzb24uaHBwPgorI2luY2x1ZGUgPHhhbGFuYy9YUGF0aC9Ob2RlUmVmTGlzdC5ocHA+CisjaW5jbHVkZSA8eGFsYW5jL1hQYXRoL0VsZW1lbnRQcmVmaXhSZXNvbHZlclByb3h5LmhwcD4KKyNpbmNsdWRlIDx4YWxhbmMvWGFsYW5UcmFuc2Zvcm1lci9YYWxhblRyYW5zZm9ybWVyLmhwcD4KKworLy8gWGFsYW4gTmFtZXNwYWNlIHVzYWdlCitYQUxBTl9VU0lOR19YQUxBTihYZXJjZXNET01TdXBwb3J0KQorWEFMQU5fVVNJTkdfWEFMQU4oWGVyY2VzUGFyc2VyTGlhaXNvbikKK1hBTEFOX1VTSU5HX1hBTEFOKFhhbGFuRG9jdW1lbnQpCitYQUxBTl9VU0lOR19YQUxBTihYYWxhblRyYW5zZm9ybWVyKQorCisjZW5kaWYKKworI2lmbmRlZiBYU0VDX05PX1hTTFQKKworLyoqCisgKiBcYnJpZWYgVHJhbnNmb3JtZXIgdG8gaGFuZGxlIFhTTFQgdHJhbnNmb3JtcworICogQGluZ3JvdXAgaW50ZXJuYWwKKyAqLworCitjbGFzcyBEU0lHX0VYUE9SVCBUWEZNWFNMIDogcHVibGljIFRYRk1CYXNlIHsKKworcHJpdmF0ZToKKworCXNhZmVCdWZmZXIgZXhwcjsJCQkJCQkJLy8gVGhlIGV4cHJlc3Npb24gYmVpbmcgd29ya2VkIHdpdGgKKworCVhlcmNlc0RPTVN1cHBvcnQJeGRzOworCVhlcmNlc1BhcnNlckxpYWlzb24geHBsOworCisJWGFsYW5Eb2N1bWVudAkJKiB4ZDsKKworCXNhZmVCdWZmZXIJCQlzYkluRG9jOworCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50CQkKKwkJCQkJCSogZG9jdW1lbnQ7CisJCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50CQkKKwkJCQkJCSogZG9jT3V0OwkJCS8vIFRoZSBvdXRwdXQgZnJvbSB0aGUgdHJhbnNmb3JtYXRpb24KKworcHVibGljOgorCisJVFhGTVhTTChYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKmRvYyk7CisJflRYRk1YU0woKTsKKworCS8vIE1ldGhvZHMgdG8gc2V0IHRoZSBpbnB1dHMKKworCXZvaWQgc2V0SW5wdXQoVFhGTUJhc2UgKm5ld0lucHV0KTsKKwkKKwkvLyBNZXRob2RzIHRvIGdldCB0cmFuZm9ybSBvdXRwdXQgdHlwZSBhbmQgaW5wdXQgcmVxdWlyZW1lbnQKKworCXZpcnR1YWwgVFhGTUJhc2U6OmlvVHlwZSBnZXRJbnB1dFR5cGUodm9pZCk7CisJdmlydHVhbCBUWEZNQmFzZTo6aW9UeXBlIGdldE91dHB1dFR5cGUodm9pZCk7CisJdmlydHVhbCBub2RlVHlwZSBnZXROb2RlVHlwZSh2b2lkKTsKKworCS8vIFdlIGRvIG91ciBvd24gbmFtZSBzcGFjZXMgLSB3ZSBoYXZlIGEgbmV3IGRvY3VtZW50IQorCQorCXZpcnR1YWwgYm9vbCBuYW1lU3BhY2VzRXhwYW5kZWQodm9pZCk7CisJdmlydHVhbCB2b2lkIGV4cGFuZE5hbWVTcGFjZXModm9pZCk7CisKKworCS8vIFhTTCBVbmlxdWUKKworCXZvaWQgZXZhbHVhdGVTdHlsZVNoZWV0KGNvbnN0IHNhZmVCdWZmZXIgJnNiU3R5bGVTaGVldCk7CisKKwkvLyBNZXRob2RzIHRvIGdldCBvdXRwdXQgZGF0YQorCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgcmVhZEJ5dGVzKFhNTEJ5dGUgKiBjb25zdCB0b0ZpbGwsIGNvbnN0IHVuc2lnbmVkIGludCBtYXhUb0ZpbGwpOworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICpnZXREb2N1bWVudCgpOworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUgKmdldEZyYWdtZW50Tm9kZSgpOworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRGcmFnbWVudElkKCk7CisJCitwcml2YXRlOgorCVRYRk1YU0woKTsKKworfTsKKworCisjZW5kaWYgLyogTm8gWFNMVCAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvdXRpbHMvWFNFQ0F1dG9QdHIuaHBwIGIvYy9zcmMvdXRpbHMvWFNFQ0F1dG9QdHIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2ZGE1ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy91dGlscy9YU0VDQXV0b1B0ci5ocHAKQEAgLTAsMCArMSwxMTkgQEAKKy8qDQorICogQ29weXJpZ2h0IDIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qDQorICogWFNFQw0KKyAqDQorICogWFNFQ0F1dG9QdHIgOj0gaW50ZXJuYWwgY2xhc3NlcyBmb3IgUkFJSSBoYW5kbGluZyBvZiB0cmFuc2NvZGVkIGRhdGENCisgKg0KKyAqIEF1dGhvcihzKTogU2NvdHQgQ2FudG9yDQorICoNCisgKiAkSWQ6JA0KKyAqDQorICovDQorDQorDQorI2lmbmRlZiBYU0VDQVVUT1BUUl9JTkNMVURFDQorI2RlZmluZSBYU0VDQVVUT1BUUl9JTkNMVURFDQorDQorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4NCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFN0cmluZy5ocHA+DQorDQorWFNFQ19VU0lOR19YRVJDRVMoWE1MU3RyaW5nKTsNCisNCisvKioNCisgKiBcYWRkdG9ncm91cCBpbnRlcm5hbA0KKyAqIEB7DQorICovDQorDQorIC8qKg0KKyAgKiBBIG1pbmltYWwgYXV0b19wdHItbGlrZSBjbGFzcyB0aGF0IGNhbiBjb3B5IG9yIHRyYW5zY29kZSBhIGJ1ZmZlciBpbnRvDQorICAqIHRoZSBsb2NhbCBjb2RlIHBhZ2UgYW5kIGZyZWUgdGhlIHJlc3VsdCBhdXRvbWF0aWNhbGx5Lg0KKyAgKg0KKyAgKiBOZWVkZWQgYmVjYXVzZSBhIHN0YW5kYXJkIGF1dG9fcHRyIHdvdWxkIHVzZSBkZWxldGUgb24gdGhlIHJlc3VsdGluZw0KKyAgKiBwb2ludGVyLg0KKyAgKi8NCitjbGFzcyBYU0VDQXV0b1B0ckNoYXINCit7DQorICAgIFhTRUNBdXRvUHRyQ2hhcihjb25zdCBYU0VDQXV0b1B0ckNoYXImKTsNCisgICAgWFNFQ0F1dG9QdHJDaGFyJiBvcGVyYXRvcj0oY29uc3QgWFNFQ0F1dG9QdHJDaGFyJik7DQorcHVibGljOg0KKyAgICBYU0VDQXV0b1B0ckNoYXIoKSA6IG1fYnVmKE5VTEwpIHsNCisgICAgfQ0KKw0KKyAgICBYU0VDQXV0b1B0ckNoYXIoY29uc3QgWE1MQ2gqIHNyYykgOiBtX2J1Zih4ZXJjZXNjOjpYTUxTdHJpbmc6OnRyYW5zY29kZShzcmMpKSB7DQorICAgIH0NCisNCisgICAgWFNFQ0F1dG9QdHJDaGFyKGNvbnN0IGNoYXIqIHNyYykgOiBtX2J1Zih4ZXJjZXNjOjpYTUxTdHJpbmc6OnJlcGxpY2F0ZShzcmMpKSB7DQorICAgIH0NCisNCisgICAgflhTRUNBdXRvUHRyQ2hhcigpIHsNCisgICAgICAgIFhTRUNfUkVMRUFTRV9YTUxDSChtX2J1Zik7DQorICAgIH0NCisNCisgICAgY29uc3QgY2hhciogZ2V0KCkgY29uc3Qgew0KKyAgICAgICAgcmV0dXJuIG1fYnVmOw0KKyAgICB9DQorDQorICAgIGNoYXIqIHJlbGVhc2UoKSB7DQorICAgICAgICBjaGFyKiB0ZW1wPW1fYnVmOyBtX2J1Zj1OVUxMOyByZXR1cm4gdGVtcDsNCisgICAgfQ0KKw0KK3ByaXZhdGU6DQorICAgIGNoYXIqIG1fYnVmOw0KK307DQorDQorLyoqDQorICogQSBtaW5pbWFsIGF1dG9fcHRyLWxpa2UgY2xhc3MgdGhhdCBjYW4gY29weSBvciB0cmFuc2NvZGUgYSBidWZmZXIgaW50bw0KKyAqIDE2LWJpdCBVbmljb2RlIGFuZCBmcmVlIHRoZSByZXN1bHQgYXV0b21hdGljYWxseS4NCisgKg0KKyAqIE5lZWRlZCBiZWNhdXNlIGEgc3RhbmRhcmQgYXV0b19wdHIgd291bGQgdXNlIGRlbGV0ZSBvbiB0aGUgcmVzdWx0aW5nDQorICogcG9pbnRlci4NCisgKi8NCitjbGFzcyBYU0VDQXV0b1B0clhNTENoDQorew0KKyAgICBYU0VDQXV0b1B0clhNTENoKGNvbnN0IFhTRUNBdXRvUHRyWE1MQ2gmKTsNCisgICAgWFNFQ0F1dG9QdHJYTUxDaCYgb3BlcmF0b3I9KGNvbnN0IFhTRUNBdXRvUHRyWE1MQ2gmKTsNCitwdWJsaWM6DQorICAgIFhTRUNBdXRvUHRyWE1MQ2goKSA6IG1fYnVmKE5VTEwpIHsNCisgICAgfQ0KKw0KKyAgICBYU0VDQXV0b1B0clhNTENoKGNvbnN0IGNoYXIqIHNyYykgOiBtX2J1Zih4ZXJjZXNjOjpYTUxTdHJpbmc6OnRyYW5zY29kZShzcmMpKSB7DQorICAgIH0NCisNCisgICAgWFNFQ0F1dG9QdHJYTUxDaChjb25zdCBYTUxDaCogc3JjKSA6IG1fYnVmKHhlcmNlc2M6OlhNTFN0cmluZzo6cmVwbGljYXRlKHNyYykpIHsNCisgICAgfQ0KKw0KKyAgICB+WFNFQ0F1dG9QdHJYTUxDaCgpIHsNCisgICAgICAgIFhTRUNfUkVMRUFTRV9YTUxDSChtX2J1Zik7DQorICAgIH0NCisNCisgICAgY29uc3QgWE1MQ2gqIGdldCgpIGNvbnN0IHsNCisgICAgICAgIHJldHVybiBtX2J1ZjsNCisgICAgfQ0KKw0KKyAgICBYTUxDaCogcmVsZWFzZSgpIHsNCisgICAgICAgIFhNTENoKiB0ZW1wPW1fYnVmOyBtX2J1Zj1OVUxMOyByZXR1cm4gdGVtcDsNCisgICAgfQ0KKw0KK3ByaXZhdGU6DQorICAgIFhNTENoKiBtX2J1ZjsNCit9Ow0KKw0KKy8qKiBAfSAqLw0KKw0KKyNlbmRpZiAvKiBYU0VDQVVUT1BUUl9JTkNMVURFICovDQorDQpkaWZmIC0tZ2l0IGEvYy9zcmMvdXRpbHMvWFNFQ0JpblRYRk1JbnB1dFN0cmVhbS5jcHAgYi9jL3NyYy91dGlscy9YU0VDQmluVFhGTUlucHV0U3RyZWFtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGMxNDZmCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdXRpbHMvWFNFQ0JpblRYRk1JbnB1dFN0cmVhbS5jcHAKQEAgLTAsMCArMSwxMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNCaW5UWEZNSW5wdXRTdHJlYW0gOj0gSW1wbGVtZW50IHRoZSBCaW5JbnB1dFN0cmVhbSBhcm91bmQgVHJhbnNmb3Jtcy4KKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSUQkCisgKgorICogJExPRyQKKyAqCisgKi8KKworCisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDQmluVFhGTUlucHV0U3RyZWFtLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNQmFzZS5ocHA+CisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTUNoYWluLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICBDb25zdHJ1Y3RvcnMvRGVzdHJ1Y3RvcnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK1hTRUNCaW5UWEZNSW5wdXRTdHJlYW06OlhTRUNCaW5UWEZNSW5wdXRTdHJlYW0oVFhGTUNoYWluICogbHN0LCBib29sIGRlbGV0ZVdoZW5Eb25lKSA6CittcF90eGZtKGxzdC0+Z2V0TGFzdFR4Zm0oKSksCittcF9jaGFpbihsc3QpLAorbV9kZWxldGVXaGVuRG9uZShkZWxldGVXaGVuRG9uZSksCittX2RlbGV0ZWQoZmFsc2UpLAorbV9kb25lKGZhbHNlKSwKK21fY3VycmVudEluZGV4KDApIHsKKworCWlmIChtcF90eGZtLT5nZXRPdXRwdXRUeXBlKCkgIT0gVFhGTUJhc2U6OkJZVEVfU1RSRUFNKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpUcmFuc2Zvcm1FcnJvciwKKwkJCSJDYW5ub3Qgd3JhcHBlciBhIG5vbiBCWVRFX1NUUkVBTSBUWEZNIHdpdGggWFNFQ0JpblRYRk1JbnB1dFN0cmVhbSIpOworCisJfQorCit9CisKK1hTRUNCaW5UWEZNSW5wdXRTdHJlYW06On5YU0VDQmluVFhGTUlucHV0U3RyZWFtKCkgeworCisJaWYgKG1fZGVsZXRlV2hlbkRvbmUgPT0gdHJ1ZSAmJiBtX2RlbGV0ZWQgPT0gZmFsc2UpIHsKKworCQlkZWxldGUgbXBfY2hhaW47CisJCW1fZGVsZXRlZCA9IHRydWU7CisKKwl9CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgU3RyZWFtIG1ldGhvZHMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIFhTRUNCaW5UWEZNSW5wdXRTdHJlYW06OnJlc2V0KHZvaWQpIHt9CisKKyNpZmRlZiBYU0VDX1hFUkNFU182NEJJVFNBRkUKK1hNTEZpbGVQb3MKKyNlbHNlCit1bnNpZ25lZCBpbnQKKyNlbmRpZgorWFNFQ0JpblRYRk1JbnB1dFN0cmVhbTo6Y3VyUG9zKCkgY29uc3QgeworCXJldHVybiBtX2N1cnJlbnRJbmRleDsKK30KKworeHNlY3NpemVfdCBYU0VDQmluVFhGTUlucHV0U3RyZWFtOjpyZWFkQnl0ZXMoWE1MQnl0ZSogY29uc3QgIHRvRmlsbCwKKwkJCQkJICAgY29uc3QgeHNlY3NpemVfdCBtYXhUb1JlYWQpIHsKKworCWlmIChtX2RvbmUgPT0gdHJ1ZSkKKwkJcmV0dXJuIDA7CisKKwl4c2Vjc2l6ZV90IGJ5dGVzUmVhZCA9IG1wX3R4Zm0tPnJlYWRCeXRlcyh0b0ZpbGwsIG1heFRvUmVhZCk7CisKKwlpZiAoYnl0ZXNSZWFkID09IDApIHsKKworCQlpZiAobV9kZWxldGVXaGVuRG9uZSkgeworCisJCQlkZWxldGUgbXBfY2hhaW47CisJCQltcF90eGZtID0gMDsKKwkJCW1wX2NoYWluID0gMDsKKwkJCW1fZGVsZXRlZCA9IHRydWU7CisKKwkJfQorCisJCW1fZG9uZSA9IHRydWU7CisKKwl9CisKKwltX2N1cnJlbnRJbmRleCArPSBieXRlc1JlYWQ7CisKKwlyZXR1cm4gYnl0ZXNSZWFkOworCit9CisKKyNpZmRlZiBYU0VDX1hFUkNFU19JTlBVVFNUUkVBTV9IQVNfQ09OVEVOVFRZUEUKK2NvbnN0IFhNTENoKiBYU0VDQmluVFhGTUlucHV0U3RyZWFtOjpnZXRDb250ZW50VHlwZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYy9zcmMvdXRpbHMvWFNFQ0JpblRYRk1JbnB1dFN0cmVhbS5ocHAgYi9jL3NyYy91dGlscy9YU0VDQmluVFhGTUlucHV0U3RyZWFtLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGE0OWM4Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdXRpbHMvWFNFQ0JpblRYRk1JbnB1dFN0cmVhbS5ocHAKQEAgLTAsMCArMSwxNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNCaW5UWEZNSW5wdXRTdHJlYW0gOj0gSW1wbGVtZW50IHRoZSBCaW5JbnB1dFN0cmVhbSBhcm91bmQgVHJhbnNmb3Jtcy4KKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSUQkCisgKgorICogJExPRyQKKyAqCisgKi8KKworCisjaWZuZGVmIFhTRUNCSU5UWEZNSU5QVVRTVFJFQU1fSU5DTFVERQorI2RlZmluZSBYU0VDQklOVFhGTUlOUFVUU1RSRUFNX0lOQ0xVREUKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvQmluSW5wdXRTdHJlYW0uaHBwPgorCitjbGFzcyBUWEZNQ2hhaW47CitjbGFzcyBUWEZNQmFzZTsKKworLyoqCisgKiBAZGVmZ3JvdXAgaW50ZXJmYWNlcyBDbGFzc2VzIHRoYXQgaW50ZXJmYWNlIGFwcGxpY2F0aW9ucyB0byBYTUwgU2VjdXJpdHkgQy4KKyAqCisgKiBUaGVzZSBjbGFzc2VzIGFuZCBmaWxlcyBwcm92aWRlIGludGVyZmFjZXMgdG8gYWxsb3cgdGhlIFhTRUMgbGlicmFyeSB0byBsaW5rCisgKiB0byBvdGhlciBsaWJyYXJpZXMgb3IgdG8gYWxsb3cgb3RoZXIgbGlicmFyaWVzL2FwcGxpY2F0aW9ucyB0byBpbnRlcmZhY2UKKyAqIHRvIFhTRUMuCisgKiBAeworICovCisKKy8qKgorICogQGJyaWVmIEJpbklucHV0U291cmNlIHdyYXBwZXIgZm9yIGEgVFhGTUNoYWluLgorICoKKyAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSB3cmFwcGVyIGZvciBhIFRYRk1DaGFpbi4gIEl0IGNhbiBiZSB1c2VkIHRvIGVpdGhlciBwcm92aWRlCisgKiBhIG5pY2UgaW50ZXJmYWNlIHRvIGFwcGxpY2F0aW9ucyB3aXNoaW5nIHRvIHJlYWQgdGhlIEJZVEVTVFJFQU0gb3V0cHV0IG9mIGEKKyAqIFRYRk0gY2hhaW4sIG9yLCBhcyBpdCBpcyBkZXJpdmVkIGZyb20gQmluSW5wdXRTdHJlYW0sIHByb3ZpZGUgYW4gaW5wdXQgdG8gdGhlCisgKiBYZXJjZXMgUGFyc2VyLgorICoKKyAqLworCisKK2NsYXNzIERTSUdfRVhQT1JUIFhTRUNCaW5UWEZNSW5wdXRTdHJlYW0gOiBwdWJsaWMgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIEJpbklucHV0U3RyZWFtCit7CisKK3B1YmxpYyA6CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBDb25zdHJ1Y3QgYXJvdW5kIGFuIGV4aXN0aW5nIHRyYW5zZm9ybSBsaXN0CisJICoKKwkgKiBAcGFyYW0gbHN0IFRoZSBpbnB1dCBUWEZNIGNoYWluLgorCSAqIEBwYXJhbSBkZWxldGVXaGVuRG9uZSBGbGFnIHRvIGluc3RydWN0IHRoZSBjbGFzcyB0byBkZWxldGUgdGhlIGNoYWluIHdoZW4KKwkgKiBkb25lLiAgQnkgZGVmYXVsdCBzZXQgdG8gdHJ1ZS4KKwkgKi8KKworICAgIFhTRUNCaW5UWEZNSW5wdXRTdHJlYW0oVFhGTUNoYWluICogbHN0LCBib29sIGRlbGV0ZVdoZW5Eb25lID0gdHJ1ZSk7CisKKwkvKioKKwkgKiBcYnJpZWYgRGVzdHJ1Y3RvcgorCSAqCisJICogRGVsZXRlIHRoZSBvYmplY3QuICBJZiBkZWxldGVXaGVuRG9uZSB3YXMgc2V0IGR1cmluZyBjb25zdHJ1Y3Rpb24sIHdpbGwKKwkgKiBkZWxldGUgdGhlIGNoYWluIGlmIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIGRvbmUuCisJICovCisKKyAgICB2aXJ0dWFsIH5YU0VDQmluVFhGTUlucHV0U3RyZWFtKCk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgU3RyZWFtIG1hbmFnZW1lbnQgbWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBSZXNldCB0aGUgc3RyZWFtLgorCSAqCisJICogQG5vdGUgQXQgdGhpcyB0aW1lIHNpbXBseSBkZWxldGVzIHRoZSBUWEZNIGNoYWluIC0gbWFueSBUWEZNcyBkbyBub3QKKwkgKiBoYXZlIGFuIGFiaWxpdHkgdG8gcmVzZXQuCisJICovCisKKyAgICB2b2lkIHJlc2V0KCk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgSW50ZXJmYWNlICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIEN1cnJlbnQgcG9zaXRpb24gaW4gc3RyZWFtLgorCSAqCisJICogQHJldHVybnMgQnl0ZXMgYWxyZWFkeSByZXR1cm5lZC4KKwkgKi8KKworI2lmZGVmIFhTRUNfWEVSQ0VTXzY0QklUU0FGRQorICAgIHZpcnR1YWwgWE1MRmlsZVBvcyBjdXJQb3MoKSBjb25zdDsKKyNlbHNlCisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgY3VyUG9zKCkgY29uc3Q7CisjZW5kaWYKKworCS8qKgorCSAqIFxicmllZiBSZXRyaWV2ZSB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGJ5dGVzIGFuZCByZXR1cm4KKwkgKgorCSAqIFJldHJpZXZlIHVwIHRvIHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9mIGJ5dGVzLiAgRG9lcyBub3QgYWx3YXlzCisJICogcmV0cmlldmUgYXMgbXVjaCBhcyByZXF1ZXN0ZWQsIGJ1dCB3aWxsIGFsd2F5cyByZXRyaWV2ZSBzb21ldGhpbmcKKwkgKiB1bnRpbCBjb21wbGV0ZWQuCisJICoKKwkgKiBAbm90ZSBXaGVuIGNvbXBsZXRlLCB3aWxsIHJldHVybiAwIGFuZCBkZWxldGUgdGhlIFRYRk0gY2hhaW4gaWYKKwkgKiByZXF1ZXN0ZWQgdG8gZG8gc28gaW4gdGhlIGNvbnN0cnVjdG9yLgorCSAqIEBwYXJhbSB0b0ZpbGwgVGhlIGJ1ZmZlciB0aGF0IHdpbGwgYmUgcmVhZCBpbnRvLgorCSAqIEBwYXJhbSBtYXhUb1JlYWQgTWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG8gcmV0dXJuCisJICogQHJldHVybnMgVGhlIG51bWJlciBvZiBieXRlcyByZWFkIG9yIDAgaWYgY29tcGxldGUuCisJICovCisKKyAgICB2aXJ0dWFsIHhzZWNzaXplX3QgcmVhZEJ5dGVzKFhNTEJ5dGUqIGNvbnN0ICB0b0ZpbGwsCisJCWNvbnN0IHhzZWNzaXplX3QgbWF4VG9SZWFkKTsKKworCisjaWZkZWYgWFNFQ19YRVJDRVNfSU5QVVRTVFJFQU1fSEFTX0NPTlRFTlRUWVBFCisgICAgY29uc3QgWE1MQ2gqIGdldENvbnRlbnRUeXBlKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZSA6CisKKwlUWEZNQmFzZQkJCQkJKiBtcF90eGZtOwkJCS8vIEVuZCBwb2ludCBvZiBsaXN0CisJVFhGTUNoYWluCQkJCQkqIG1wX2NoYWluOwkJCS8vIFRoZSBhY3R1YWwgY2hhaW4KKwlib29sCQkJCQkJbV9kZWxldGVXaGVuRG9uZTsJLy8gRG8gd2UgZGVsZXRlPworCWJvb2wJCQkJCQltX2RlbGV0ZWQ7CQkJLy8gSGF2ZSB3ZSBkZWxldGVkPworCWJvb2wJCQkJCQltX2RvbmU7CQkJCS8vIEFyZSB3ZSBkb25lPworICAgIHhzZWNzaXplX3QJCQkJICAgIG1fY3VycmVudEluZGV4OwkJLy8gSG93IG11Y2ggcmVhZD8KKworfTsKKworCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYy9zcmMvdXRpbHMvWFNFQ0RPTVV0aWxzLmNwcCBiL2Mvc3JjL3V0aWxzL1hTRUNET01VdGlscy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdhODVlMQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3V0aWxzL1hTRUNET01VdGlscy5jcHAKQEAgLTAsMCArMSw4MDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDEwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNET01VdGlsczo9IFV0aWxpdGllcyB0byBtYW5pcHVsYXRlIERPTSB3aXRoaW4gWE1MLVNFQ1VSSVRZCisgKgorICogJElkJAorICoKKyAqLworCisvLyBYU0VDCisKKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0NvbnN0YW50cy5ocHA+CisKKy8vIFhlcmNlcworCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFVuaURlZnMuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9KYW5pdG9yLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvUGxhdGZvcm1VdGlscy5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1RyYW5zU2VydmljZS5ocHA+CisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgVXRpbGl0aWVzIHRvIG1hbmlwdWxhdGUgRFNJRyBuYW1lc3BhY2VzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjb25zdCBYTUxDaCAqIGdldERTSUdMb2NhbE5hbWUoY29uc3QgRE9NTm9kZSAqbm9kZSkgeworCisJaWYgKCFzdHJFcXVhbHMobm9kZS0+Z2V0TmFtZXNwYWNlVVJJKCksIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSURTSUcpKQorCQlyZXR1cm4gTlVMTDsgLy9ET01TdHJpbmcoIiIpOworCWVsc2UKKwkJcmV0dXJuIG5vZGUtPmdldExvY2FsTmFtZSgpOworCit9CisKK2NvbnN0IFhNTENoICogZ2V0RFNJRzExTG9jYWxOYW1lKGNvbnN0IERPTU5vZGUgKm5vZGUpIHsKKworCWlmICghc3RyRXF1YWxzKG5vZGUtPmdldE5hbWVzcGFjZVVSSSgpLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklEU0lHMTEpKQorCQlyZXR1cm4gTlVMTDsgLy9ET01TdHJpbmcoIiIpOworCWVsc2UKKwkJcmV0dXJuIG5vZGUtPmdldExvY2FsTmFtZSgpOworCit9CisKK2NvbnN0IFhNTENoICogZ2V0RUNMb2NhbE5hbWUoY29uc3QgRE9NTm9kZSAqIG5vZGUpIHsKKworCS8vIEV4Y2x1c2l2ZSBDYW5vbmljYWxpc2F0aW9uIG5hbWVzcGFjZQorCS8vIFByb2JhYmx5IHNob3VsZCBoYXZlIGEgZ2VuZXJpYyBmdW5jdGlvbgorCisJaWYgKCFzdHJFcXVhbHMobm9kZS0+Z2V0TmFtZXNwYWNlVVJJKCksIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUVDKSkKKwkJcmV0dXJuIE5VTEw7CisJZWxzZQorCQlyZXR1cm4gbm9kZS0+Z2V0TG9jYWxOYW1lKCk7CisKK30KKworY29uc3QgWE1MQ2ggKiBnZXRYUEZMb2NhbE5hbWUoY29uc3QgRE9NTm9kZSAqIG5vZGUpIHsKKworCS8vIFhQYXRoIEZpbHRlciBuYW1lc3BhY2UKKworCWlmICghc3RyRXF1YWxzKG5vZGUtPmdldE5hbWVzcGFjZVVSSSgpLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYUEYpKQorCQlyZXR1cm4gTlVMTDsKKwllbHNlCisJCXJldHVybiBub2RlLT5nZXRMb2NhbE5hbWUoKTsKKworfQorCitjb25zdCBYTUxDaCBEU0lHX0VYUE9SVCAqIGdldFhFTkNMb2NhbE5hbWUoY29uc3QgRE9NTm9kZSAqbm9kZSkgeworCisJLy8gWE1MIEVuY3J5cHRpb24gbmFtZXNwYWNlIG5vZGUKKworCWlmICghc3RyRXF1YWxzKG5vZGUtPmdldE5hbWVzcGFjZVVSSSgpLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYRU5DKSkKKwkJcmV0dXJuIE5VTEw7CisJZWxzZQorCQlyZXR1cm4gbm9kZS0+Z2V0TG9jYWxOYW1lKCk7CisKK30KKworY29uc3QgWE1MQ2ggRFNJR19FWFBPUlQgKiBnZXRYS01TTG9jYWxOYW1lKGNvbnN0IERPTU5vZGUgKm5vZGUpIHsKKworCS8vIFhLTVMgbmFtZXNwYWNlIG5vZGUKKworCWlmICghc3RyRXF1YWxzKG5vZGUtPmdldE5hbWVzcGFjZVVSSSgpLCBYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TKSkKKwkJcmV0dXJuIE5VTEw7CisJZWxzZQorCQlyZXR1cm4gbm9kZS0+Z2V0TG9jYWxOYW1lKCk7CisKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEZpbmQgYSBub21pbmF0ZWQgRFNJRyBub2RlIGluIGEgZG9jdW1lbnQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RPTU5vZGUgKmZpbmREU0lHTm9kZShET01Ob2RlICpuLCBjb25zdCBjaGFyICogbm9kZU5hbWUpIHsKKworCWNvbnN0IFhNTENoICogbmFtZSA9IGdldERTSUdMb2NhbE5hbWUobik7CisKKwlpZiAoc3RyRXF1YWxzKG5hbWUsIG5vZGVOYW1lKSkgeworCisJCXJldHVybiBuOworCisJfQorCisJRE9NTm9kZSAqY2hpbGQgPSBuLT5nZXRGaXJzdENoaWxkKCk7CisKKwl3aGlsZSAoY2hpbGQgIT0gTlVMTCkgeworCisJCURPTU5vZGUgKnJldCA9IGZpbmREU0lHTm9kZShjaGlsZCwgbm9kZU5hbWUpOworCQlpZiAocmV0ICE9IE5VTEwpCisJCQlyZXR1cm4gcmV0OworCQljaGlsZCA9IGNoaWxkLT5nZXROZXh0U2libGluZygpOworCisJfQorCisJcmV0dXJuIGNoaWxkOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgRmluZCBhIG5vbWluYXRlZCBYRU5DIG5vZGUgaW4gYSBkb2N1bWVudAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRE9NTm9kZSAqZmluZFhFTkNOb2RlKERPTU5vZGUgKm4sIGNvbnN0IGNoYXIgKiBub2RlTmFtZSkgeworCisJY29uc3QgWE1MQ2ggKiBuYW1lID0gZ2V0WEVOQ0xvY2FsTmFtZShuKTsKKworCWlmIChzdHJFcXVhbHMobmFtZSwgbm9kZU5hbWUpKSB7CisKKwkJcmV0dXJuIG47CisKKwl9CisKKwlET01Ob2RlICpjaGlsZCA9IG4tPmdldEZpcnN0Q2hpbGQoKTsKKworCXdoaWxlIChjaGlsZCAhPSBOVUxMKSB7CisKKwkJRE9NTm9kZSAqcmV0ID0gZmluZFhFTkNOb2RlKGNoaWxkLCBub2RlTmFtZSk7CisJCWlmIChyZXQgIT0gTlVMTCkKKwkJCXJldHVybiByZXQ7CisJCWNoaWxkID0gY2hpbGQtPmdldE5leHRTaWJsaW5nKCk7CisKKwl9CisKKwlyZXR1cm4gY2hpbGQ7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBGaW5kIHBhcnRpY3VsYXIgdHlwZSBvZiBub2RlIGNoaWxkCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitET01Ob2RlICpmaW5kRmlyc3RDaGlsZE9mVHlwZShET01Ob2RlICpuLCBET01Ob2RlOjpOb2RlVHlwZSB0KSB7CisKKwlET01Ob2RlICpjOworCisJaWYgKG4gPT0gTlVMTCkKKwkJcmV0dXJuIG47CisKKwljID0gbi0+Z2V0Rmlyc3RDaGlsZCgpOworCisJd2hpbGUgKGMgIT0gTlVMTCAmJiBjLT5nZXROb2RlVHlwZSgpICE9IHQpCisJCWMgPSBjLT5nZXROZXh0U2libGluZygpOworCisJcmV0dXJuIGM7CisKK30KKworRE9NTm9kZSAqIGZpbmROZXh0Q2hpbGRPZlR5cGUoRE9NTm9kZSAqbiwgRE9NTm9kZTo6Tm9kZVR5cGUgdCkgeworCisJRE9NTm9kZSAqIHMgPSBuOworCisJaWYgKHMgPT0gTlVMTCkKKwkJcmV0dXJuIHM7CisKKwlkbyB7CisJCXMgPSBzLT5nZXROZXh0U2libGluZygpOworCX0gd2hpbGUgKHMgIT0gTlVMTCAmJiBzLT5nZXROb2RlVHlwZSgpICE9IHQpOworCisJcmV0dXJuIHM7CisKK30KKworRE9NRWxlbWVudCAqZmluZEZpcnN0RWxlbWVudENoaWxkKERPTU5vZGUgKm4pIHsKKworCURPTU5vZGUgKmM7CisKKwlpZiAobiA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCWMgPSBuLT5nZXRGaXJzdENoaWxkKCk7CisKKwl3aGlsZSAoYyAhPSBOVUxMICYmIGMtPmdldE5vZGVUeXBlKCkgIT0gRE9NTm9kZTo6RUxFTUVOVF9OT0RFKQorCQljID0gYy0+Z2V0TmV4dFNpYmxpbmcoKTsKKworCXJldHVybiAoRE9NRWxlbWVudCAqKSBjOworCit9CisKK0RPTUVsZW1lbnQgKiBmaW5kTmV4dEVsZW1lbnRDaGlsZChET01Ob2RlICpuKSB7CisKKwlET01Ob2RlICogcyA9IG47CisKKwlpZiAocyA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCWRvIHsKKwkJcyA9IHMtPmdldE5leHRTaWJsaW5nKCk7CisJfSB3aGlsZSAocyAhPSBOVUxMICYmIHMtPmdldE5vZGVUeXBlKCkgIT0gRE9NTm9kZTo6RUxFTUVOVF9OT0RFKTsKKworCXJldHVybiAoRE9NRWxlbWVudCAqKSBzOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgTWFrZSBhIFFOYW1lCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzYWZlQnVmZmVyICZtYWtlUU5hbWUoc2FmZUJ1ZmZlciAmIHFuYW1lLCBzYWZlQnVmZmVyICZwcmVmaXgsIGNvbnN0IGNoYXIgKiBsb2NhbE5hbWUpIHsKKworCWlmIChwcmVmaXhbMF0gPT0gJ1wwJykgeworCQlxbmFtZSA9IGxvY2FsTmFtZTsKKwl9CisJZWxzZSB7CisJCXFuYW1lID0gcHJlZml4OworCQlxbmFtZS5zYlN0cmNhdEluKCI6Iik7CisJCXFuYW1lLnNiU3RyY2F0SW4obG9jYWxOYW1lKTsKKwl9CisKKwlyZXR1cm4gcW5hbWU7CisKK30KK3NhZmVCdWZmZXIgJm1ha2VRTmFtZShzYWZlQnVmZmVyICYgcW5hbWUsIGNvbnN0IFhNTENoICpwcmVmaXgsIGNvbnN0IGNoYXIgKiBsb2NhbE5hbWUpIHsKKworCWlmIChwcmVmaXggPT0gTlVMTCB8fCBwcmVmaXhbMF0gPT0gMCkgeworCQlxbmFtZS5zYlRyYW5zY29kZUluKGxvY2FsTmFtZSk7CisJfQorCWVsc2UgeworCQlxbmFtZS5zYlhNTENoSW4ocHJlZml4KTsKKwkJcW5hbWUuc2JYTUxDaEFwcGVuZENoKFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBjaENvbG9uKTsKKwkJcW5hbWUuc2JYTUxDaENhdChsb2NhbE5hbWUpOwkvLyBXaWxsIHRyYW5zY29kZQorCX0KKworCXJldHVybiBxbmFtZTsKK30KKworc2FmZUJ1ZmZlciAmbWFrZVFOYW1lKHNhZmVCdWZmZXIgJiBxbmFtZSwgY29uc3QgWE1MQ2ggKnByZWZpeCwgY29uc3QgWE1MQ2ggKiBsb2NhbE5hbWUpIHsKKworCWlmIChwcmVmaXggPT0gTlVMTCB8fCBwcmVmaXhbMF0gPT0gMCkgeworCQlxbmFtZS5zYlhNTENoSW4obG9jYWxOYW1lKTsKKwl9CisJZWxzZSB7CisJCXFuYW1lLnNiWE1MQ2hJbihwcmVmaXgpOworCQlxbmFtZS5zYlhNTENoQXBwZW5kQ2goWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoQ29sb24pOworCQlxbmFtZS5zYlhNTENoQ2F0KGxvY2FsTmFtZSk7CisJfQorCisJcmV0dXJuIHFuYW1lOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgICJRdWljayIgVHJhbnNjb2RlIChsb3cgcGVyZm9ybWFuY2UpCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKKworWE1MVDo6WE1MVChjb25zdCBjaGFyICogc3RyKSB7CisKKwltcF91bmljb2RlU3RyID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoc3RyKTsKKworfQorCitYTUxUOjp+WE1MVCAodm9pZCkgeworCisJWFNFQ19SRUxFQVNFX1hNTENIKG1wX3VuaWNvZGVTdHIpOworCit9CisKK1hNTENoICogWE1MVDo6Z2V0VW5pY29kZVN0cih2b2lkKSB7CisKKwlyZXR1cm4gbXBfdW5pY29kZVN0cjsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdhdGhlciB0ZXh0IGZyb20gY2hpbGRyZW4KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgZ2F0aGVyQ2hpbGRyZW5UZXh0KERPTU5vZGUgKiBwYXJlbnQsIHNhZmVCdWZmZXIgJm91dHB1dCkgeworCisJRE9NTm9kZSAqIGMgPSBwYXJlbnQtPmdldEZpcnN0Q2hpbGQoKTsKKworCW91dHB1dC5zYlhNTENoSW4oRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyRW1wdHkpOworCisJd2hpbGUgKGMgIT0gTlVMTCkgeworCisJCWlmIChjLT5nZXROb2RlVHlwZSgpID09IERPTU5vZGU6OlRFWFRfTk9ERSkKKwkJCW91dHB1dC5zYlhNTENoQ2F0KGMtPmdldE5vZGVWYWx1ZSgpKTsKKworCQljID0gYy0+Z2V0TmV4dFNpYmxpbmcoKTsKKworCX0KKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFNvbWUgVVRGOCB1dGlsaXRpZXMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hNTENoICogdHJhbnNjb2RlRnJvbVVURjgoY29uc3QgdW5zaWduZWQgY2hhciAqIHNyYykgeworCisJLy8gVGFrZSBhIFVURi04IGJ1ZmZlciBhbmQgdHJhbnNjb2RlIHRvIFVURi0xNgorCisJc2FmZUJ1ZmZlciBmdWxsRGVzdDsKKwlmdWxsRGVzdC5zYlhNTENoSW4oRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyRW1wdHkpOworCVhNTENoIG91dHB1dEJ1ZlsyMDUwXTsKKworCS8vIFVzZWQgdG8gcmVjb3JkIGJ5dGUgc2l6ZXMKKwl1bnNpZ25lZCBjaGFyIGNoYXJTaXplc1syMDUwXTsKKworCS8vIEdyYWIgYSB0cmFuc2NvZGVyCisJWE1MVHJhbnNTZXJ2aWNlOjpDb2RlcyBmYWlsUmVhc29uOworCisjaWYgZGVmaW5lZChYU0VDX1hFUkNFU19SRVFVSVJFU19NRU1NR1IpCisJWE1MVHJhbnNjb2RlciogdCA9CisJCVhNTFBsYXRmb3JtVXRpbHM6OmZnVHJhbnNTZXJ2aWNlLT5tYWtlTmV3VHJhbnNjb2RlckZvcigiVVRGLTgiLAorCQkJCQkJCQkJCQkJCQkJICAgZmFpbFJlYXNvbiwKKwkJCQkJCQkJCQkJCQkJCSAgIDIqMTAyNCwKKwkJCQkJCQkJCQkJCQkJCSAgIFhNTFBsYXRmb3JtVXRpbHM6OmZnTWVtb3J5TWFuYWdlcik7CisjZWxzZQorCVhNTFRyYW5zY29kZXIqIHQgPQorCQlYTUxQbGF0Zm9ybVV0aWxzOjpmZ1RyYW5zU2VydmljZS0+bWFrZU5ld1RyYW5zY29kZXJGb3IoIlVURi04IiwKKwkJCQkJCQkJCQkJCQkJCSAgIGZhaWxSZWFzb24sCisJCQkJCQkJCQkJCQkJCQkgICAyKjEwMjQpOworI2VuZGlmCisJSmFuaXRvcjxYTUxUcmFuc2NvZGVyPiBqX3QodCk7CisKKwkvLyBOZWVkIHRvIGxvb3AgdGhyb3VnaCwgMksgYXQgYSB0aW1lCisJeHNlY3NpemVfdCBieXRlc0VhdGVuLCBieXRlc0VhdGVuQ291bnRlcjsKKyAgICB4c2Vjc2l6ZV90IGNoYXJhY3RlcnNFYXRlbjsKKwl4c2Vjc2l6ZV90IHRvdGFsQnl0ZXNFYXRlbiA9IDA7CisJeHNlY3NpemVfdCBieXRlc1RvRWF0ID0gWE1MU3RyaW5nOjpzdHJpbmdMZW4oKGNoYXIgKikgc3JjKTsKKworCXdoaWxlICh0b3RhbEJ5dGVzRWF0ZW4gPCBieXRlc1RvRWF0KSB7CisKKwkgICAgeHNlY3NpemVfdCB0b0VhdCA9IGJ5dGVzVG9FYXQgLSB0b3RhbEJ5dGVzRWF0ZW47CisKKworCQlpZiAodG9FYXQgPiAyMDQ4KQorCQkJdG9FYXQgPSAyMDQ4OworCisJCXQtPnRyYW5zY29kZUZyb20oJnNyY1t0b3RhbEJ5dGVzRWF0ZW5dLAorCQkJCQkJdG9FYXQsCisJCQkJCQlvdXRwdXRCdWYsCisJCQkJCQkyMDQ4LAorCQkJCQkJYnl0ZXNFYXRlbiwKKwkJCQkJCWNoYXJTaXplcyk7CisKKwkJLy8gRGV0ZXJtaW5lIGhvdyBtYW55IGNoYXJhY3RlcnMgd2VyZSB1c2VkCisJCWJ5dGVzRWF0ZW5Db3VudGVyID0gMDsKKwkJY2hhcmFjdGVyc0VhdGVuID0gMDsKKwkJd2hpbGUgKGJ5dGVzRWF0ZW5Db3VudGVyIDwgYnl0ZXNFYXRlbikgeworCQkJYnl0ZXNFYXRlbkNvdW50ZXIgKz0gY2hhclNpemVzW2NoYXJhY3RlcnNFYXRlbisrXTsKKwkJfQorCisJCW91dHB1dEJ1ZltjaGFyYWN0ZXJzRWF0ZW5dID0gY2hOdWxsOworCQlmdWxsRGVzdC5zYlhNTENoQ2F0KG91dHB1dEJ1Zik7CisJCXRvdGFsQnl0ZXNFYXRlbiArPSBieXRlc0VhdGVuOworCX0KKworCS8vIER1cCBhbmQgb3V0cHV0CisJcmV0dXJuIFhNTFN0cmluZzo6cmVwbGljYXRlKGZ1bGxEZXN0LnJhd1hNTENoQnVmZmVyKCkpOworCit9CisKK2NoYXIgRFNJR19FWFBPUlQgKiB0cmFuc2NvZGVUb1VURjgoY29uc3QgWE1MQ2ggKiBzcmMpIHsKKworCS8vIFRha2UgYSBVVEYtMTYgYnVmZmVyIGFuZCB0cmFuc2NvZGUgdG8gVVRGLTgKKworCXNhZmVCdWZmZXIgZnVsbERlc3QoIiIpOworCXVuc2lnbmVkIGNoYXIgb3V0cHV0QnVmWzIwNTBdOworCisJLy8gR3JhYiBhIHRyYW5zY29kZXIKKwlYTUxUcmFuc1NlcnZpY2U6OkNvZGVzIGZhaWxSZWFzb247CisKKyNpZiBkZWZpbmVkKFhTRUNfWEVSQ0VTX1JFUVVJUkVTX01FTU1HUikKKwlYTUxUcmFuc2NvZGVyKiB0ID0KKwkJWE1MUGxhdGZvcm1VdGlsczo6ZmdUcmFuc1NlcnZpY2UtPm1ha2VOZXdUcmFuc2NvZGVyRm9yKCJVVEYtOCIsCisJCQkJCQkJCQkJCQkJCQkgICBmYWlsUmVhc29uLAorCQkJCQkJCQkJCQkJCQkJICAgMioxMDI0LAorCQkJCQkJCQkJCQkJCQkJICAgWE1MUGxhdGZvcm1VdGlsczo6ZmdNZW1vcnlNYW5hZ2VyKTsKKyNlbHNlCisJWE1MVHJhbnNjb2RlciogdCA9CisJCVhNTFBsYXRmb3JtVXRpbHM6OmZnVHJhbnNTZXJ2aWNlLT5tYWtlTmV3VHJhbnNjb2RlckZvcigiVVRGLTgiLAorCQkJCQkJCQkJCQkJCQkJICAgZmFpbFJlYXNvbiwKKwkJCQkJCQkJCQkJCQkJCSAgIDIqMTAyNCk7CisjZW5kaWYKKwlKYW5pdG9yPFhNTFRyYW5zY29kZXI+IGpfdCh0KTsKKworCS8vIE5lZWQgdG8gbG9vcCB0aHJvdWdoLCAySyBhdCBhIHRpbWUKKwl4c2Vjc2l6ZV90IGNoYXJhY3RlcnNFYXRlbiwgY2hhcmFjdGVyc091dHB1dDsKKwl4c2Vjc2l6ZV90IHRvdGFsQ2hhcnNFYXRlbiA9IDA7CisJeHNlY3NpemVfdCBjaGFyc1RvRWF0ID0gWE1MU3RyaW5nOjpzdHJpbmdMZW4oc3JjKTsKKworCXdoaWxlICh0b3RhbENoYXJzRWF0ZW4gPCBjaGFyc1RvRWF0KSB7CisKKwkgICAgeHNlY3NpemVfdCB0b0VhdCA9IGNoYXJzVG9FYXQgLSB0b3RhbENoYXJzRWF0ZW47CisKKwkJaWYgKHRvRWF0ID4gMjA0OCkKKwkJCXRvRWF0ID0gMjA0ODsKKworCQljaGFyYWN0ZXJzT3V0cHV0ID0gdC0+dHJhbnNjb2RlVG8oJnNyY1t0b3RhbENoYXJzRWF0ZW5dLAorCQkJCQkJdG9FYXQsCisJCQkJCQkodW5zaWduZWQgY2hhciAqIGNvbnN0KSBvdXRwdXRCdWYsCisJCQkJCQkyMDQ4LAorCQkJCQkJY2hhcmFjdGVyc0VhdGVuLAorCQkJCQkJWE1MVHJhbnNjb2Rlcjo6VW5SZXBfUmVwQ2hhcik7CisKKwkJb3V0cHV0QnVmW2NoYXJhY3RlcnNPdXRwdXRdID0gJ1wwJzsKKwkJZnVsbERlc3Quc2JTdHJjYXRJbigoY2hhciAqKSBvdXRwdXRCdWYpOworCQl0b3RhbENoYXJzRWF0ZW4gKz0gY2hhcmFjdGVyc0VhdGVuOworCX0KKworCS8vIER1cCBhbmQgb3V0cHV0CisJcmV0dXJuIFhNTFN0cmluZzo6cmVwbGljYXRlKGZ1bGxEZXN0LnJhd0NoYXJCdWZmZXIoKSk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBTdHJpbmcgZGVjb2RlL2VuY29kZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLyoKKyAqIERpc3Rpbmd1aXNoZWQgbmFtZXMgaGF2ZSBhIHBhcnRpY3VsYXIgZW5jb2RpbmcgdGhhdCBuZWVkcyB0byBiZSBwZXJmb3JtZWQgcHJpb3IKKyAqIHRvIGVuY2x1c2lvbiBpbiB0aGUgRE9NCisgKi8KKworWE1MQ2ggKiBlbmNvZGVETmFtZShjb25zdCBYTUxDaCAqIHRvRW5jb2RlKSB7CisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0U7CisKKwlzYWZlQnVmZmVyIHJlc3VsdDsKKworCXN0YXRpYyBYTUxDaCBzX3N0ckVuY29kZWRTcGFjZVtdID0geworCQljaEJhY2tTbGFzaCwKKwkJY2hEaWdpdF8yLAorCQljaERpZ2l0XzAsCisJCWNoTnVsbAorCX07CisKKwlyZXN1bHQuc2JYTUxDaEluKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ckVtcHR5KTsKKworCWlmICh0b0VuY29kZSA9PSBOVUxMKSB7CisJCXJldHVybiBOVUxMOworCX0KKworCisJLy8gRmluZCB3aGVyZSB0aGUgdHJhaWxpbmcgd2hpdGVzcGFjZSBzdGFydHMKKwljb25zdCBYTUxDaCAqIHdzID0gJnRvRW5jb2RlW1hNTFN0cmluZzo6c3RyaW5nTGVuKHRvRW5jb2RlKV07CisKKwkqd3MtLTsKKwl3aGlsZSAod3MgIT0gdG9FbmNvZGUgJiYKKwkJKCp3cyA9PSAnXHQnIHx8ICp3cyA9PSAnXHInIHx8ICp3cyA9PScgJyB8fCAqd3MgPT0gJ1xuJykpCisJCSp3cy0tOworCisJLy8gU2V0IHRvIGZpcnN0IHdoaXRlIHNwYWNlIGNoYXJhY3RlciwgaWYgd2UgZGlkbid0IGdldCBiYWNrIHRvIHRoZSBzdGFydAorCWlmICh0b0VuY29kZSAhPSB3cykKKwkJKndzKys7CisKKwkvLyBOb3cgcnVuIHRocm91Z2ggZWFjaCBjaGFyYWN0ZXIgYW5kIGVuY29kZSBpZiBuZWNlc3NhcnkKKworCWNvbnN0IFhNTENoICogaSA9IHRvRW5jb2RlOworCisJaWYgKCppID09IGNoUG91bmQpIHsKKwkJLy8gIiMiIENoYXJhY3RlcnMgZXNjYXBlZCBhdCB0aGUgc3RhcnQgb2YgYSBzdHJpbmcKKwkJcmVzdWx0LnNiWE1MQ2hBcHBlbmRDaChjaEJhY2tTbGFzaCk7CisJfQorCisJd2hpbGUgKCppICE9IGNoTnVsbCAmJiBpICE9IHdzKSB7CisKKwkJaWYgKCppIDw9IDB4MDkpIHsKKwkJCXJlc3VsdC5zYlhNTENoQXBwZW5kQ2goY2hCYWNrU2xhc2gpOworCQkJcmVzdWx0LnNiWE1MQ2hBcHBlbmRDaChjaERpZ2l0XzApOworCQkJcmVzdWx0LnNiWE1MQ2hBcHBlbmRDaChjaERpZ2l0XzAgKyAqaSk7CisJCX0KKwkJZWxzZSBpZiAoKmkgPD0gMHgwZikgeworCQkJcmVzdWx0LnNiWE1MQ2hBcHBlbmRDaChjaEJhY2tTbGFzaCk7CisJCQlyZXN1bHQuc2JYTUxDaEFwcGVuZENoKGNoRGlnaXRfMCk7CisJCQlyZXN1bHQuc2JYTUxDaEFwcGVuZENoKGNoTGF0aW5fQSArICppKTsKKwkJfQorCQllbHNlIGlmICgqaSA8PSAweDE5KSB7CisJCQlyZXN1bHQuc2JYTUxDaEFwcGVuZENoKGNoQmFja1NsYXNoKTsKKwkJCXJlc3VsdC5zYlhNTENoQXBwZW5kQ2goY2hEaWdpdF8xKTsKKwkJCXJlc3VsdC5zYlhNTENoQXBwZW5kQ2goY2hEaWdpdF8wICsgKmkpOworCQl9CisJCWVsc2UgaWYgKCppIDw9IDB4MWYpIHsKKwkJCXJlc3VsdC5zYlhNTENoQXBwZW5kQ2goY2hCYWNrU2xhc2gpOworCQkJcmVzdWx0LnNiWE1MQ2hBcHBlbmRDaChjaERpZ2l0XzEpOworCQkJcmVzdWx0LnNiWE1MQ2hBcHBlbmRDaChjaExhdGluX0EgKyAqaSk7CisJCX0KKworCQllbHNlIGlmICgqaSA9PSBjaENvbW1hKSB7CisKKwkJCS8vIERldGVybWluZSBpZiB0aGlzIGlzIGFuIFJETiBzZXBhcmF0b3IKKwkJCWNvbnN0IFhNTENoICpqID0gaTsKKwkJCSpqKys7CisJCQl3aGlsZSAoKmogIT0gY2hDb21tYSAmJiAqaiAhPSBjaEVxdWFsICYmICpqICE9IGNoTnVsbCkKKwkJCQkqaisrOworCisJCQlpZiAoKmogIT0gY2hFcXVhbCkKKwkJCQlyZXN1bHQuc2JYTUxDaEFwcGVuZENoKGNoQmFja1NsYXNoKTsKKworCQkJcmVzdWx0LnNiWE1MQ2hBcHBlbmRDaCgqaSk7CisKKwkJfQorCisJCWVsc2UgeworCisJCQlpZiAoKmkgPT0gY2hQbHVzIHx8CisJCQkJKmkgPT0gY2hEb3VibGVRdW90ZSB8fAorCQkJCSppID09IGNoQmFja1NsYXNoIHx8CisJCQkJKmkgPT0gY2hPcGVuQW5nbGUgfHwKKwkJCQkqaSA9PSBjaENsb3NlQW5nbGUgfHwKKwkJCQkqaSA9PSBjaFNlbWlDb2xvbikgeworCisJCQkJcmVzdWx0LnNiWE1MQ2hBcHBlbmRDaChjaEJhY2tTbGFzaCk7CisJCQl9CisKKwkJCXJlc3VsdC5zYlhNTENoQXBwZW5kQ2goKmkpOworCisJCX0KKworCQkqaSsrOworCisJfQorCisJLy8gTm93IGVuY29kZSB0cmFpbGluZyB3aGl0ZSBzcGFjZQorCXdoaWxlICgqaSAhPSBjaE51bGwpIHsKKworCQlpZiAoKmkgPT0gJyAnKQorCQkJcmVzdWx0LnNiWE1MQ2hDYXQoc19zdHJFbmNvZGVkU3BhY2UpOworCQllbHNlCisJCQlyZXN1bHQuc2JYTUxDaEFwcGVuZENoKCppKTsKKworCQkqaSsrOworCisJfQorCisJcmV0dXJuIFhNTFN0cmluZzo6cmVwbGljYXRlKHJlc3VsdC5yYXdYTUxDaEJ1ZmZlcigpKTsKKworfQorCitYTUxDaCAqIGRlY29kZUROYW1lKGNvbnN0IFhNTENoICogdG9EZWNvZGUpIHsKKworCS8vIFRha2UgYW4gZW5jb2RlZCBuYW1lIGFuZCBkZWNvZGUgdG8gYSBub3JtYWwgWE1MQ2ggc3RyaW5nCisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0U7CisKKwlzYWZlQnVmZmVyIHJlc3VsdDsKKworCXJlc3VsdC5zYlhNTENoSW4oRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyRW1wdHkpOworCisJaWYgKHRvRGVjb2RlID09IE5VTEwpIHsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJY29uc3QgWE1MQ2ggKiBpID0gdG9EZWNvZGU7CisKKwlpZiAoKmkgPT0gY2hCYWNrU2xhc2ggJiYgaVsxXSA9PSBjaFBvdW5kKSB7CisKKwkJcmVzdWx0LnNiWE1MQ2hBcHBlbmRDaChjaFBvdW5kKTsKKwkJKmkrKzsKKwkJKmkrKzsKKworCX0KKworCXdoaWxlICgqaSAhPSBjaE51bGwpIHsKKworCQlpZiAoKmkgPT0gY2hCYWNrU2xhc2gpIHsKKworCQkJKmkrKzsKKworCQkJaWYgKCppID09IGNoRGlnaXRfMCkgeworCisJCQkJKmkrKzsKKworCQkJCWlmICgqaSA+PSBjaERpZ2l0XzAgJiYgKmkgPD0gY2hEaWdpdF85KSB7CisJCQkJCXJlc3VsdC5zYlhNTENoQXBwZW5kQ2goKmkgLSBjaERpZ2l0XzApOworCQkJCX0KKwkJCQllbHNlIGlmICgqaSA+PSBjaExhdGluX0EgJiYgKmkgPD0gY2hMYXRpbl9GKSB7CisJCQkJCXJlc3VsdC5zYlhNTENoQXBwZW5kQ2goMTAgKyAqaSAtIGNoTGF0aW5fQSk7CisJCQkJfQorCQkJCWVsc2UgaWYgKCppID49IGNoTGF0aW5fYSAmJiAqaSA8PSBjaExhdGluX2YpIHsKKwkJCQkJcmVzdWx0LnNiWE1MQ2hBcHBlbmRDaCgxMCArICppIC0gY2hMYXRpbl9hKTsKKwkJCQl9CisJCQkJZWxzZSB7CisJCQkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RE5hbWVEZWNvZGVFcnJvciwKKwkJCQkJCSJVbmV4cGVjdGVkIGVzY2FwZWQgY2hhcmFjdGVyIGluIERpc3Rpbmd1aXNoZWQgbmFtZSIpOworCQkJCX0KKwkJCX0KKworCQkJZWxzZSBpZiAoKmkgPT0gY2hEaWdpdF8xKSB7CisKKwkJCQkqaSsrOworCisJCQkJaWYgKCppID49IGNoRGlnaXRfMCAmJiAqaSA8PSBjaERpZ2l0XzkpIHsKKwkJCQkJcmVzdWx0LnNiWE1MQ2hBcHBlbmRDaCgxNiArICppIC0gY2hEaWdpdF8wKTsKKwkJCQl9CisJCQkJZWxzZSBpZiAoKmkgPj0gY2hMYXRpbl9BICYmICppIDw9IGNoTGF0aW5fRikgeworCQkJCQlyZXN1bHQuc2JYTUxDaEFwcGVuZENoKDI2ICsgKmkgLSBjaExhdGluX0EpOworCQkJCX0KKwkJCQllbHNlIGlmICgqaSA+PSBjaExhdGluX2EgJiYgKmkgPD0gY2hMYXRpbl9mKSB7CisJCQkJCXJlc3VsdC5zYlhNTENoQXBwZW5kQ2goMjYgKyAqaSAtIGNoTGF0aW5fYSk7CisJCQkJfQorCQkJCWVsc2UgeworCQkJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkROYW1lRGVjb2RlRXJyb3IsCisJCQkJCQkiVW5leHBlY3RlZCBlc2NhcGVkIGNoYXJhY3RlciBpbiBEaXN0aW5ndWlzaGVkIG5hbWUiKTsKKwkJCQl9CisJCQl9CisKKwkJCWVsc2UgaWYgKCppID09IGNoRGlnaXRfMikgeworCisJCQkJKmkrKzsKKworCQkJCWlmICgqaSA9PSAnMCcpIHsKKwkJCQkJcmVzdWx0LnNiWE1MQ2hBcHBlbmRDaCgnICcpOworCQkJCX0KKworCQkJCWVsc2UgeworCQkJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkROYW1lRGVjb2RlRXJyb3IsCisJCQkJCQkiVW5leHBlY3RlZCBlc2NhcGVkIGNoYXJhY3RlciBpbiBEaXN0aW5ndWlzaGVkIG5hbWUiKTsKKwkJCQl9CisKKwkJCX0KKworCQkJZWxzZSBpZiAoKmkgPT0gY2hDb21tYSB8fAorCQkJCQkgKmkgPT0gY2hQbHVzIHx8CisJCQkJCSAqaSA9PSBjaERvdWJsZVF1b3RlIHx8CisJCQkJCSAqaSA9PSBjaEJhY2tTbGFzaCB8fAorCQkJCQkgKmkgPT0gY2hPcGVuQW5nbGUgfHwKKwkJCQkJICppID09IGNoQ2xvc2VBbmdsZSB8fAorCQkJCQkgKmkgPT0gY2hTZW1pQ29sb24pIHsKKworCQkJCXJlc3VsdC5zYlhNTENoQXBwZW5kQ2goKmkpOworCQkJfQorCisJCQllbHNlIHsKKworCQkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RE5hbWVEZWNvZGVFcnJvciwKKwkJCQkJIlVuZXhwZWN0ZWQgZXNjYXBlZCBjaGFyYWN0ZXIgaW4gRGlzdGluZ3Vpc2hlZCBuYW1lIik7CisKKwkJCX0KKworCQkJKmkrKzsKKworCQl9CisKKwkJZWxzZSB7CisKKwkJCXJlc3VsdC5zYlhNTENoQXBwZW5kQ2goKmkrKyk7CisKKwkJfQorCisJfQorCisJcmV0dXJuIFhNTFN0cmluZzo6cmVwbGljYXRlKHJlc3VsdC5yYXdYTUxDaEJ1ZmZlcigpKTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIE1pc2Mgc3RyaW5nIGZ1bmN0aW9ucworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gVGhlc2UgdGhyZWUgZnVuY3Rpb25zIGFyZSBwcmV0dHkgbXVjaCBsaWZ0ZWQgZnJvbSBYTUxVUkwuY3BwIGluIFhlcmNlcworCitzdGF0aWMgYm9vbCBpc0hleERpZ2l0KGNvbnN0IFhNTENoIHRvQ2hlY2spCit7CisgICAgaWYgKCh0b0NoZWNrID49IGNoRGlnaXRfMCkgJiYgKHRvQ2hlY2sgPD0gY2hEaWdpdF85KQorICAgIHx8ICAodG9DaGVjayA+PSBjaExhdGluX0EpICYmICh0b0NoZWNrIDw9IGNoTGF0aW5fWikKKyAgICB8fCAgKHRvQ2hlY2sgPj0gY2hMYXRpbl9hKSAmJiAodG9DaGVjayA8PSBjaExhdGluX3opKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIHVuc2lnbmVkIGludCB4bGF0SGV4RGlnaXQoY29uc3QgWE1MQ2ggdG9YbGF0KQoreworICAgIGlmICgodG9YbGF0ID49IGNoRGlnaXRfMCkgJiYgKHRvWGxhdCA8PSBjaERpZ2l0XzkpKQorICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGludCkodG9YbGF0IC0gY2hEaWdpdF8wKTsKKworICAgIGlmICgodG9YbGF0ID49IGNoTGF0aW5fQSkgJiYgKHRvWGxhdCA8PSBjaExhdGluX1opKQorICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGludCkodG9YbGF0IC0gY2hMYXRpbl9BKSArIDEwOworCisgICAgcmV0dXJuICh1bnNpZ25lZCBpbnQpKHRvWGxhdCAtIGNoTGF0aW5fYSkgKyAxMDsKK30KKworWE1MQ2ggKiBjbGVhblVSSUVzY2FwZXMoY29uc3QgWE1MQ2ggKiBzdHIpIHsKKworCS8vIFRha2VuIGZyb20gWGVyY2VzIFhNTFVSSS5jcHAKKworCVhNTENoICogcmV0UGF0aCA9IFhNTFN0cmluZzo6cmVwbGljYXRlKHN0cik7CisKKwl4c2Vjc2l6ZV90IGxlbiA9IFhNTFN0cmluZzo6c3RyaW5nTGVuKHJldFBhdGgpOworCWludCBwZXJjZW50SW5kZXggPSBYTUxTdHJpbmc6OmluZGV4T2YocmV0UGF0aCwgY2hQZXJjZW50LCAwKTsKKworCXdoaWxlIChwZXJjZW50SW5kZXggIT0gLTEpIHsKKworCQlpZiAocGVyY2VudEluZGV4KzIgPj0gbGVuIHx8CisJCQkhaXNIZXhEaWdpdChyZXRQYXRoW3BlcmNlbnRJbmRleCsxXSkgfHwKKwkJCSFpc0hleERpZ2l0KHJldFBhdGhbcGVyY2VudEluZGV4KzJdKSkKKwkJICAgIFhTRUNfUkVMRUFTRV9YTUxDSChyZXRQYXRoKTsKKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXJyb3JPcGVuaW5nVVJJLAorCQkJCQkiQmFkIGVzY2FwZSBzZXF1ZW5jZSBpbiBVUkkiKTsKKworCQl1bnNpZ25lZCBpbnQgdmFsdWUgPSAoeGxhdEhleERpZ2l0KHJldFBhdGhbcGVyY2VudEluZGV4KzFdKSAqIDE2KSArCisJCQkJCQkgICAgICh4bGF0SGV4RGlnaXQocmV0UGF0aFtwZXJjZW50SW5kZXgrMl0pKTsKKworCQlyZXRQYXRoW3BlcmNlbnRJbmRleF0gPSBYTUxDaCh2YWx1ZSk7CisJCWludCBpID0gMDsKKwkJZm9yIChpID0gcGVyY2VudEluZGV4KzEgOyBpIDwgbGVuIC0gMjsgKytpKQorCQkJcmV0UGF0aFtpXSA9IHJldFBhdGhbaSsyXTsKKwkJcmV0UGF0aFtpXSA9IGNoTnVsbDsKKwkJbGVuID0gaTsKKworCQlwZXJjZW50SW5kZXggPSBYTUxTdHJpbmc6OmluZGV4T2YocmV0UGF0aCwgY2hQZXJjZW50LCArK3BlcmNlbnRJbmRleCk7CisKKwl9CisKKwlyZXR1cm4gcmV0UGF0aDsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdlbmVyYXRlIElkcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBtYWtlSGV4Qnl0ZShYTUxDaCAqIGgsIHVuc2lnbmVkIGNoYXIgYikgeworCisJdW5zaWduZWQgY2hhciB0b0NvbnZlcnQgPSAgKGIgJiAweGYwKTsKKwl0b0NvbnZlcnQgPSAodG9Db252ZXJ0ID4+IDQpOworCisJaWYgKHRvQ29udmVydCA8IDEwKQorCQloWzBdID0gY2hEaWdpdF8wICsgdG9Db252ZXJ0OworCWVsc2UKKwkJaFswXSA9IGNoTGF0aW5fYSArIHRvQ29udmVydCAtIDEwOworCisJdG9Db252ZXJ0ID0gIChiICYgMHhmKTsKKworCWlmICh0b0NvbnZlcnQgPCAxMCkKKwkJaFsxXSA9IGNoRGlnaXRfMCArIHRvQ29udmVydDsKKwllbHNlCisJCWhbMV0gPSBjaExhdGluX2EgKyB0b0NvbnZlcnQgLSAxMDsKKworfQorCisKK1hNTENoICogZ2VuZXJhdGVJZCh1bnNpZ25lZCBpbnQgYnl0ZXMpIHsKKworCXVuc2lnbmVkIGNoYXIgYlsxMjhdOworCVhNTENoIGlkWzI1OF07CisJdW5zaWduZWQgaW50IHRvR2VuID0gKGJ5dGVzID4gMTI4ID8gMTYgOiBieXRlcyk7CisKKwkvLyBHZXQgdGhlIGFwcHJvcHJpYXRlIGFtb3VudCBvZiByYW5kb20gZGF0YQorCS8vIE5lZWQgdG8gemVyb2lzZSB0byBlbnN1cmUgdmFsZ3JpbmQgaXMgaGFwcHkKKwltZW1zZXQoYiwgMCwgMTI4KTsKKwltZW1zZXQoaWQsIDAsIHNpemVvZihpZCkpOworCWlmIChYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+Z2V0UmFuZG9tKGIsIHRvR2VuKSAhPSB0b0dlbikgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q3J5cHRvUHJvdmlkZXJFcnJvciwKKwkJCSJnZW5lcmF0ZUlkIC0gY291bGQgbm90IG9idGFpbiBlbm91Z2ggcmFuZG9tIik7CisKKwl9CisKKwlpZFswXSA9IGNoTGF0aW5fSTsKKworCXVuc2lnbmVkIGludCBpOworCWZvciAoaSA9IDA7IGkgPCB0b0dlbjsgKytpKSB7CisKKwkJbWFrZUhleEJ5dGUoJmlkWzErKGkqMildLCBiW2ldKTsKKworCX0KKworCWlkWzErKGkqMildID0gY2hOdWxsOworCisJcmV0dXJuIFhNTFN0cmluZzo6cmVwbGljYXRlKGlkKTsKKworfQorCmRpZmYgLS1naXQgYS9jL3NyYy91dGlscy9YU0VDRE9NVXRpbHMuaHBwIGIvYy9zcmMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNGE3OTY0Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcApAQCAtMCwwICsxLDE5NiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ0RPTVV0aWxzOj0gVXRpbGl0aWVzIHRvIG1hbmlwdWxhdGUgRE9NIHdpdGhpbiBYTUwtU0VDVVJJVFkKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWFNFQ0RPTVVUSUxTX0hFQURFUgorI2RlZmluZSBYU0VDRE9NVVRJTFNfSEVBREVSCisKKy8vIFhTRUMKKworI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1BsYXRmb3JtVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1NhZmVCdWZmZXIuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHQ29uc3RhbnRzLmhwcD4KKworLy8gWGVyY2VzCisKKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxTdHJpbmcuaHBwPgorCisjZGVmaW5lIENPTVBBUkVfU1RSSU5HX0xFTkdUSAkyNTYKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICAiUXVpY2siIFRyYW5zY29kZSBDbGFzcyAobG93IHBlcmZvcm1hbmNlKQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitjbGFzcyBEU0lHX0VYUE9SVCBYTUxUIHsKKworcHVibGljOgorCisJWE1MVChjb25zdCBjaGFyICogc3RyKTsKKwl+WE1MVCh2b2lkKTsKKworCVhNTENoICogZ2V0VW5pY29kZVN0cih2b2lkKTsKKworcHJpdmF0ZToKKworCVhNTENoICogbXBfdW5pY29kZVN0cjsKKwlYTUxUKCk7CisKK307CisKKyNkZWZpbmUgTUFLRV9VTklDT0RFX1NUUklORyhzdHIpIFhNTFQoc3RyKS5nZXRVbmljb2RlU3RyKCkKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBVdGlsaXRpZXMgdG8gbWFuaXB1bGF0ZSBuYW1lc3BhY2VzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjb25zdCBYTUxDaCBEU0lHX0VYUE9SVCAqIGdldERTSUdMb2NhbE5hbWUoY29uc3QgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUgKm5vZGUpOworY29uc3QgWE1MQ2ggRFNJR19FWFBPUlQgKiBnZXREU0lHMTFMb2NhbE5hbWUoY29uc3QgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUgKm5vZGUpOworY29uc3QgWE1MQ2ggRFNJR19FWFBPUlQgKiBnZXRFQ0xvY2FsTmFtZShjb25zdCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqbm9kZSk7Citjb25zdCBYTUxDaCBEU0lHX0VYUE9SVCAqIGdldFhQRkxvY2FsTmFtZShjb25zdCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqbm9kZSk7Citjb25zdCBYTUxDaCBEU0lHX0VYUE9SVCAqIGdldFhFTkNMb2NhbE5hbWUoY29uc3QgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUgKm5vZGUpOworY29uc3QgWE1MQ2ggRFNJR19FWFBPUlQgKiBnZXRYS01TTG9jYWxOYW1lKGNvbnN0IFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICpub2RlKTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBEbyBVVEYtOCA8LT4gVVRGLTE2IHRyYW5zY29kaW5nCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYTUxDaCBEU0lHX0VYUE9SVCAqIHRyYW5zY29kZUZyb21VVEY4KGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBzcmMpOworY2hhciBEU0lHX0VYUE9SVCAqIHRyYW5zY29kZVRvVVRGOChjb25zdCBYTUxDaCAqIHNyYyk7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgRmluZCBhIG5vbWluYXRlZCBEU0lHL1hFTkMgbm9kZSBpbiBhIGRvY3VtZW50CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSBEU0lHX0VYUE9SVCAqIGZpbmREU0lHTm9kZShYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqbiwgY29uc3QgY2hhciAqIG5vZGVOYW1lKTsKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlIERTSUdfRVhQT1JUICogZmluZFhFTkNOb2RlKFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICpuLCBjb25zdCBjaGFyICogbm9kZU5hbWUpOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEZpbmQgcGFydGljdWxhciB0eXBlIG9mIG5vZGUgY2hpbGQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlIERTSUdfRVhQT1JUICogZmluZEZpcnN0Q2hpbGRPZlR5cGUoWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUgKm4sIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlOjpOb2RlVHlwZSB0KTsKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlIERTSUdfRVhQT1JUICogZmluZE5leHRDaGlsZE9mVHlwZShYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqbiwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGU6Ok5vZGVUeXBlIHQpOworCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCBEU0lHX0VYUE9SVCAqIGZpbmRGaXJzdEVsZW1lbnRDaGlsZChYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqbik7CitYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCBEU0lHX0VYUE9SVCAqIGZpbmROZXh0RWxlbWVudENoaWxkKFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICpuKTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBNYWtlIGEgUU5hbWUKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3NhZmVCdWZmZXIgRFNJR19FWFBPUlQgJm1ha2VRTmFtZShzYWZlQnVmZmVyICYgcW5hbWUsIHNhZmVCdWZmZXIgJnByZWZpeCwgY29uc3QgY2hhciAqIGxvY2FsTmFtZSk7CitzYWZlQnVmZmVyIERTSUdfRVhQT1JUICZtYWtlUU5hbWUoc2FmZUJ1ZmZlciAmIHFuYW1lLCBjb25zdCBYTUxDaCAqcHJlZml4LCBjb25zdCBjaGFyICogbG9jYWxOYW1lKTsKK3NhZmVCdWZmZXIgRFNJR19FWFBPUlQgJm1ha2VRTmFtZShzYWZlQnVmZmVyICYgcW5hbWUsIGNvbnN0IFhNTENoICpwcmVmaXgsIGNvbnN0IFhNTENoICogbG9jYWxOYW1lKTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBHYXRoZXIgdGV4dCBmcm9tIGNoaWxkcmVuCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIERTSUdfRVhQT1JUIGdhdGhlckNoaWxkcmVuVGV4dChYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqIHBhcmVudCwgc2FmZUJ1ZmZlciAmb3V0cHV0KTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBTdHJpbmcgZGVjb2RlL2VuY29kZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLyoKKyAqIERpc3Rpbmd1aXNoZWQgbmFtZXMgaGF2ZSBhIHBhcnRpY3VsYXIgZW5jb2RpbmcgdGhhdCBuZWVkcyB0byBiZSBwZXJmb3JtZWQgcHJpb3IKKyAqIHRvIGVuY2x1c2lvbiBpbiB0aGUgRE9NCisgKi8KKworWE1MQ2ggKiBlbmNvZGVETmFtZShjb25zdCBYTUxDaCAqIHRvRW5jb2RlKTsKK1hNTENoICogZGVjb2RlRE5hbWUoY29uc3QgWE1MQ2ggKiB0b0RlY29kZSk7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgR2VuZXJhdGUgSWRzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYTUxDaCBEU0lHX0VYUE9SVCAqIGdlbmVyYXRlSWQodW5zaWduZWQgaW50IGJ5dGVzID0gMTYpOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFN0cmluZyBGdW5jdGlvbnMgCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBSZW1vdmUgZXNjYXBlICglWFgpIGNoYXJhY3RlcnMgZnJvbSBVUklzIGFuZCByZXR1cm4gYSBuZXcgYnVmZmVyIGNvbnRhaW5pbmcgdGhlCisvLyAiY2xlYW5lZCIgc3RyaW5nCisKK1hNTENoICogY2xlYW5VUklFc2NhcGVzKGNvbnN0IFhNTENoICogc3RyKTsKKworaW5saW5lCitib29sIHN0ckVxdWFscyAoY29uc3QgWE1MQ2ggKiBzdHIxLCBjb25zdCBYTUxDaCAqc3RyMikgeworCisJcmV0dXJuIChYTUxTdHJpbmc6OmNvbXBhcmVTdHJpbmcoc3RyMSwgc3RyMikgPT0gMCk7CisKK30KKworaW5saW5lCitib29sIHN0ckVxdWFscyAoY29uc3QgY2hhciAqIHN0cjEsIGNvbnN0IGNoYXIgKnN0cjIpIHsKKworCXJldHVybiAoWE1MU3RyaW5nOjpjb21wYXJlU3RyaW5nKHN0cjEsIHN0cjIpID09IDApOworCit9CisKK2lubGluZSAKK2Jvb2wgc3RyRXF1YWxzIChjb25zdCBjaGFyICogc3RyMSwgY29uc3QgWE1MQ2ggKiBzdHIyKSB7CisKKwlib29sIHJldDsKKwlYTUxDaCAqIHN0cjFYTUxDaCA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKHN0cjEpOworCisJaWYgKHN0cjFYTUxDaCAhPSBOVUxMKSB7CisKKwkJcmV0ID0gKFhNTFN0cmluZzo6Y29tcGFyZVN0cmluZyhzdHIxWE1MQ2gsIHN0cjIpID09IDApOworCQlYU0VDX1JFTEVBU0VfWE1MQ0goc3RyMVhNTENoKTsKKworCX0KKwllbHNlCisJCXJldCA9IGZhbHNlOworCisJcmV0dXJuIHJldDsKKworfQorCitpbmxpbmUgCitib29sIHN0ckVxdWFscyAoY29uc3QgWE1MQ2ggKiBzdHIxLCBjb25zdCBjaGFyICogc3RyMikgeworCisJYm9vbCByZXQ7CisJWE1MQ2ggKiBzdHIyWE1MQ2ggPSBYTUxTdHJpbmc6OnRyYW5zY29kZShzdHIyKTsKKworCWlmIChzdHIyWE1MQ2ggIT0gTlVMTCkgeworCisJCXJldCA9IChYTUxTdHJpbmc6OmNvbXBhcmVTdHJpbmcoc3RyMSwgc3RyMlhNTENoKSA9PSAwKTsKKwkJWFNFQ19SRUxFQVNFX1hNTENIKHN0cjJYTUxDaCk7CisKKwl9CisJZWxzZQorCQlyZXQgPSBmYWxzZTsKKworCXJldHVybiByZXQ7CisKK30KKworI2VuZGlmIC8qIFhTRUNET01VVElMU19IRUFERVIgKi8KKwpkaWZmIC0tZ2l0IGEvYy9zcmMvdXRpbHMvWFNFQ05hbWVTcGFjZUV4cGFuZGVyLmNwcCBiL2Mvc3JjL3V0aWxzL1hTRUNOYW1lU3BhY2VFeHBhbmRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTMwNDg0NAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3V0aWxzL1hTRUNOYW1lU3BhY2VFeHBhbmRlci5jcHAKQEAgLTAsMCArMSwyMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNOYW1lU3BhY2VFeGFuZGVyIDo9IENsYXNzIGZvciBleHBhbmRpbmcgb3V0IGEgZG9jdW1lbnQncyBuYW1lIHNwYWNlIGF4aXMKKyAqCQkJCQkJCWFuZCB0aGVuIHNocmlua2luZyBhZ2FpbgorICoKKyAqICRJZCQKKyAqCisgKi8KKworLy8gWFNFQyBJbmNsdWRlcworI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ05hbWVTcGFjZUV4cGFuZGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0NvbnN0YW50cy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCitYU0VDTmFtZVNwYWNlRXhwYW5kZXI6OlhTRUNOYW1lU3BhY2VFeHBhbmRlcihET01Eb2N1bWVudCAqZCkgeworCisJbXBfZG9jID0gZDsKKwltcF9mcmFnbWVudCA9IGQtPmdldERvY3VtZW50RWxlbWVudCgpOworCVhTRUNuZXcobXBfZm9ybWF0dGVyLCBYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlcigiVVRGLTgiLFhNTEZvcm1hdHRlcjo6Tm9Fc2NhcGVzLCAKKwkJCQkJCQkJCQkJCVhNTEZvcm1hdHRlcjo6VW5SZXBfQ2hhclJlZikpOworCisJbV9leHBhbmRlZCA9IGZhbHNlOworCQorfQorCitYU0VDTmFtZVNwYWNlRXhwYW5kZXI6OlhTRUNOYW1lU3BhY2VFeHBhbmRlcihET01FbGVtZW50ICpmKSB7CisKKwltcF9kb2MgPSBOVUxMOworCW1wX2ZyYWdtZW50ID0gZjsKKwlYU0VDbmV3KG1wX2Zvcm1hdHRlciwgWFNFQ1NhZmVCdWZmZXJGb3JtYXR0ZXIoIlVURi04IixYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcywgCisJCQkJCQkJCQkJCQlYTUxGb3JtYXR0ZXI6OlVuUmVwX0NoYXJSZWYpKTsKKworCW1fZXhwYW5kZWQgPSBmYWxzZTsKKwkKK30KKworWFNFQ05hbWVTcGFjZUV4cGFuZGVyOjp+WFNFQ05hbWVTcGFjZUV4cGFuZGVyKCkgeworCisJaWYgKG1wX2Zvcm1hdHRlciAhPSBOVUxMKQorCQlkZWxldGUgbXBfZm9ybWF0dGVyOworCit9CisKK3ZvaWQgWFNFQ05hbWVTcGFjZUV4cGFuZGVyOjpyZWN1cnNlKERPTUVsZW1lbnQgKm4pIHsKKworCS8vIFJlY3Vyc2l2ZWx5IGdvIGRvd24gdGhlIHRyZWUgYWRkaW5nIG5hbWVzcGFjZXMKKworCURPTU5vZGUgKnAgPSBuLT5nZXRQYXJlbnROb2RlKCk7CisJaWYgKHAtPmdldE5vZGVUeXBlKCkgIT0gRE9NTm9kZTo6RUxFTUVOVF9OT0RFKQorCQlyZXR1cm47CisKKwlET01OYW1lZE5vZGVNYXAgKnBtYXAgPSBwLT5nZXRBdHRyaWJ1dGVzKCk7CisJWE1MU2l6ZV90IHBzaXplID0gcG1hcC0+Z2V0TGVuZ3RoKCk7CisKKwlET01OYW1lZE5vZGVNYXAgKm5tYXAgPSBuLT5nZXRBdHRyaWJ1dGVzKCk7CisKKwlzYWZlQnVmZmVyIHBuYW1lLCBwVVJJLCBuVVJJOworCURPTU5vZGUgKmZpbmRlcjsKKworCVhTRUNOYW1lU3BhY2VFbnRyeSAqIHRtcEVudDsKKworCWZvciAoWE1MU2l6ZV90IGkgPSAwOyBpIDwgcHNpemU7IGkrKykgeworCisJCS8vIFJ1biB0aHJvdWdoIGVhY2ggcGFyZW50IG5vZGUgdG8gZmluZCBuYW1lc3BhY2VzCisJCXBuYW1lIDw8ICgqbXBfZm9ybWF0dGVyIDw8IHBtYXAtPml0ZW0oaSktPmdldE5vZGVOYW1lKCkpOworCisJCS8vIFNlZSBpZiB0aGlzIGlzIGFuIHhtbG5zIG5vZGUKKwkJCisJCWlmIChwbmFtZS5zYlN0cm5jbXAoInhtbG5zIiwgNSkgPT0gMCkgeworCisJCQkvLyBJdCBpcyAtIHNlZSBpZiBpdCBhbHJlYWR5IGV4aXN0cworCQkJZmluZGVyID0gbm1hcC0+Z2V0TmFtZWRJdGVtKHBuYW1lLnNiU3RyVG9YTUxDaCgpKTsKKwkJCWlmIChmaW5kZXIgPT0gMCkgeworCisJCQkJLy8gTmVlZCB0byBhZGQKKwkJCQluLT5zZXRBdHRyaWJ1dGVOUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYTUxOUywgCisJCQkJCXBtYXAtPml0ZW0oaSktPmdldE5vZGVOYW1lKCksCisJCQkJCXBtYXAtPml0ZW0oaSktPmdldE5vZGVWYWx1ZSgpKTsKKworCQkJCS8vIEFkZCBpdCB0byB0aGUgbGlzdCBzbyBpdCBjYW4gYmUgcmVtb3ZlZCBsYXRlcgorCQkJCVhTRUNuZXcodG1wRW50LCBYU0VDTmFtZVNwYWNlRW50cnkpOworCQkJCXRtcEVudC0+bV9uYW1lLnNiU3RyY3B5SW4ocG5hbWUpOworCQkJCXRtcEVudC0+bXBfbm9kZSA9IG47CisJCQkJdG1wRW50LT5tcF9hdHQgPSBubWFwLT5nZXROYW1lZEl0ZW0ocG5hbWUuc2JTdHJUb1hNTENoKCkpOworCQkJCW1fbHN0LnB1c2hfYmFjayh0bXBFbnQpOworCisJCQl9CisKKwkJfQorCisJfQorCisJLy8gRG8gdGhlIGNoaWxkcmVuCisKKwlET01Ob2RlICpjOworCisJYyA9IG4tPmdldEZpcnN0Q2hpbGQoKTsKKworCXdoaWxlIChjICE9IE5VTEwpIHsKKwkJaWYgKGMtPmdldE5vZGVUeXBlKCkgPT0gRE9NTm9kZTo6RUxFTUVOVF9OT0RFKQorCQkJcmVjdXJzZSgoRE9NRWxlbWVudCAqKSBjKTsKKwkJYyA9IGMtPmdldE5leHRTaWJsaW5nKCk7CisJfQorCit9CisKK2ludCBhdHROb2RlQ291bnQoRE9NRWxlbWVudCAqIGQpIHsKKworCVhNTFNpemVfdCByZXQ7CisKKwlyZXQgPSBkLT5nZXRBdHRyaWJ1dGVzKCktPmdldExlbmd0aCgpOworCisJRE9NTm9kZSAqYzsKKworCWMgPSBkLT5nZXRGaXJzdENoaWxkKCk7CisKKwl3aGlsZSAoYyAhPSBOVUxMKSB7CisKKwkJaWYgKGMtPmdldE5vZGVUeXBlKCkgPT0gRE9NTm9kZTo6RUxFTUVOVF9OT0RFKQorCQkJcmV0ICs9IGF0dE5vZGVDb3VudCgoRE9NRWxlbWVudCAqKSBjKTsKKworCQljID0gYy0+Z2V0TmV4dFNpYmxpbmcoKTsKKworCX0KKworCXJldHVybiAoaW50KSByZXQ7CisKK30KKwordm9pZCBYU0VDTmFtZVNwYWNlRXhwYW5kZXI6OmV4cGFuZE5hbWVTcGFjZXModm9pZCkgeworCisJaWYgKG1fZXhwYW5kZWQpCisJCXJldHVybjsJCQkJLy8gRG9uJ3QgZG8gdGhpcyB0d2ljZSEKKworCURPTUVsZW1lbnQJKmRvY0VsdDsJCS8vIFRoZSBkb2N1bWVudCBlbGVtZW50IC0gZG8gbm90IGV4cGFuZCBpdCdzIG5hbWVzcGFjZXMKKwkKKwlkb2NFbHQgPSBtcF9mcmFnbWVudDsgLy9tcF9kb2MtPmdldERvY3VtZW50RWxlbWVudCgpOworCWludCBjb3VudCA9IGF0dE5vZGVDb3VudChkb2NFbHQpOworCisJRE9NTm9kZSAqYzsKKworCWMgPSBkb2NFbHQtPmdldEZpcnN0Q2hpbGQoKTsKKworCXdoaWxlIChjICE9IE5VTEwpIHsKKwkJaWYgKGMtPmdldE5vZGVUeXBlKCkgPT0gRE9NTm9kZTo6RUxFTUVOVF9OT0RFKQorCQkJcmVjdXJzZSgoRE9NRWxlbWVudCAqKSBjKTsKKwkJYyA9IGMtPmdldE5leHRTaWJsaW5nKCk7CisJfQorCisJbV9leHBhbmRlZCA9IHRydWU7CisKKwljb3VudCA9IGF0dE5vZGVDb3VudChkb2NFbHQpOworCit9CisKKwordm9pZCBYU0VDTmFtZVNwYWNlRXhwYW5kZXI6OmRlbGV0ZUFkZGVkTmFtZXNwYWNlcyh2b2lkKSB7CisKKwlOYW1lU3BhY2VFbnRyeUxpc3RWZWN0b3JUeXBlOjpzaXplX3R5cGUgc2l6ZSA9IG1fbHN0LnNpemUoKTsKKwlYU0VDTmFtZVNwYWNlRW50cnkgKmU7CisKKwlET01FbGVtZW50ICpkb2NFbHQgPSBtcF9mcmFnbWVudDsgLy9tcF9kb2MtPmdldERvY3VtZW50RWxlbWVudCgpOworCWludCAJY291bnQgPSBhdHROb2RlQ291bnQoZG9jRWx0KTsKKworCU5hbWVTcGFjZUVudHJ5TGlzdFZlY3RvclR5cGU6OnNpemVfdHlwZSBpOworCisJZm9yIChpID0gMDsgaSA8IHNpemU7ICsraSkgeworCisJCS8vIERlbGV0ZSB0aGUgZWxlbWVudCBhdHRyaWJ1dGUsIGFuZCB0aGVuIHRoaXMgbm9kZQorCQllID0gbV9sc3RbaV07CisJCWlmIChlLT5tX25hbWVbNV0gPT0gJzonKQorCQkJZS0+bXBfbm9kZS0+cmVtb3ZlQXR0cmlidXRlTlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWE1MTlMsCisJCQkJCQkJCQkJTUFLRV9VTklDT0RFX1NUUklORygoY2hhciAqKSAmKChlLT5tX25hbWUucmF3QnVmZmVyKCkpWzZdKSkpOworCQllbHNlCisJCQllLT5tcF9ub2RlLT5yZW1vdmVBdHRyaWJ1dGVOUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYTUxOUywKKwkJCQkJCQkJCQlNQUtFX1VOSUNPREVfU1RSSU5HKChjaGFyICopIGUtPm1fbmFtZS5yYXdCdWZmZXIoKSkpOworCisJCS8vIERlbGV0ZSB0aGUgZW50cnkKKwkJZGVsZXRlIGU7CisKKwl9CisKKwkvLyBOb3cgZG9uZSAtIGVtcHR5IGV2ZXJ5dGhpbmcKKwltX2xzdC5jbGVhcigpOworCW1fZXhwYW5kZWQgPSBmYWxzZTsKKwljb3VudCA9IGF0dE5vZGVDb3VudChkb2NFbHQpOworCit9CisKK2Jvb2wgWFNFQ05hbWVTcGFjZUV4cGFuZGVyOjpub2RlV2FzQWRkZWQoRE9NTm9kZSAqbikgeworCisJTmFtZVNwYWNlRW50cnlMaXN0VmVjdG9yVHlwZTo6c2l6ZV90eXBlIHNpemUgPSBtX2xzdC5zaXplKCk7CisJWFNFQ05hbWVTcGFjZUVudHJ5ICplOworCisJTmFtZVNwYWNlRW50cnlMaXN0VmVjdG9yVHlwZTo6c2l6ZV90eXBlIGk7CisJZm9yIChpID0gMDsgaSA8IHNpemU7ICsraSkgeworCisJCS8vIERlbGV0ZSB0aGUgZWxlbWVudCBhdHRyaWJ1dGUsIGFuZCB0aGVuIHRoaXMgbm9kZQorCQllID0gbV9sc3RbaV07CisJCQorCQlpZiAoZS0+bXBfYXR0ID09IG4pCisJCQlyZXR1cm4gdHJ1ZTsKKworCX0KKworCXJldHVybiBmYWxzZTsKKworfQpkaWZmIC0tZ2l0IGEvYy9zcmMvdXRpbHMvWFNFQ05hbWVTcGFjZUV4cGFuZGVyLmhwcCBiL2Mvc3JjL3V0aWxzL1hTRUNOYW1lU3BhY2VFeHBhbmRlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRjMzJmNwotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3V0aWxzL1hTRUNOYW1lU3BhY2VFeHBhbmRlci5ocHAKQEAgLTAsMCArMSwxNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNOYW1lU3BhY2VIb2xkZXIgOj0gQ29udGFpbmVyIGNsYXNzIGZvciBob2xkaW5nIGFuZCBtYW5hZ2luZyB0aGUgbmFtZSBzcGFjZSBzdGFjaworICoJCQkJCQkgIFVzZWQgd2hlbiBydW5uaW5nIHRocm91Z2ggYSBET00gZG9jdW1lbnQKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWFNFQ05BTUVTUEFDRUVYUEFOREVSX0hFQURFUgorI2RlZmluZSBYU0VDTkFNRVNQQUNFRVhQQU5ERVJfSEVBREVSCisKKy8vIFhTRUMgSW5jbHVkZXMKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDU2FmZUJ1ZmZlci5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDU2FmZUJ1ZmZlckZvcm1hdHRlci5ocHA+CisKKy8vIFhlcmNlcyBJbmNsdWRlcworWFNFQ19ERUNMQVJFX1hFUkNFU19DTEFTUyhET01Eb2N1bWVudCk7CitYU0VDX0RFQ0xBUkVfWEVSQ0VTX0NMQVNTKERPTU5vZGUpOworWFNFQ19ERUNMQVJFX1hFUkNFU19DTEFTUyhET01FbGVtZW50KTsKKworI2luY2x1ZGUgPHZlY3Rvcj4KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBTdHJ1Y3R1cmUgRGVmaW5pdGlvbiBmb3IgdGhlIG5vZGVzIHdpdGhpbiB0aGUgbGlzdCBvZiBub2RlcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RydWN0IFhTRUNOYW1lU3BhY2VFbnRyeSB7CisKKwkvLyBWYXJpYWJsZXMKKwlzYWZlQnVmZmVyCQkJCQkJCQkJbV9uYW1lOwkJCS8vIFRoZSBuYW1lIGZvciB0aGlzIG5hbWUgc3BhY2UKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudAkqIG1wX25vZGU7CQkvLyBUaGUgRWxlbWVudCBOb2RlIG93bmVyCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUJCSogbXBfYXR0OwkJLy8gVGhlIGFkZGVkIGF0dHJpYnV0ZSBub2RlCisJCQkKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ2xhc3MgZGVmaW5pdGlvbiBmb3IgdGhlIGxpc3QKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8qKgorICogQGluZ3JvdXAgcHVic2lnCisgKi8KKy8qXEB7Ki8KKworLyoqCisgKiBAYnJpZWYgQ2xhc3MgdG8gImV4cGFuZCIgbmFtZSBzcGFjZXMKKyAqCisgKiBGb3IgbW9zdCB0aGluZ3MsIGEgRE9NIG1vZGVsIGludGVyb3BlcmF0ZXMgd2VsbCB3aXRoIFhQYXRoLiAgVW5mb3J0dW5hdGVseSwKKyAqIG5hbWUtc3BhY2VzIGFyZSB0aGUgb25lIG1haW4gcHJvYmxlbS4gIEluIHBhcnRpY3VsYXIsIHRoZSBYUGF0aCBzcGVjCisgKiBzdGF0ZXMgdGhhdCBldmVyeSBlbGVtZW50IG5vZGUgaGFzIGFuIGF0dHJpYnV0ZSBub2RlIGZvciBpdHMgb3duIAorICogbmFtZXNwYWNlcywgYW5kIG9uZSBmb3IgbmFtZXNwYWNlcyBhYm92ZSB0aGF0IGFyZSBpbiBzY29wZS4KKyAqCisgKiBJbiB0aGUgRE9NIHNjaGVtZSBvZiB0aGluZ3MsIGEgbmFtZXNwYWNlIGlzIG9ubHkgYXZhaWxhYmxlIGluIHRoZSBub2RlIGluCisgKiB3aGljaCBpdCBpcyBkZWZpbmVkLiAgTm9ybWFsbHkgdGhpcyBpcyBub3QgYSBwcm9ibGVtLCB5b3UgY2FuIGp1c3QganVzdAorICogcmVmZXIgYmFja3dhcmRzIHVudGlsIHlvdSBmaW5kIHRoZSBuYW1lc3BhY2UgeW91IG5lZWQuICBIb3dldmVyLCBmb3IgWFBhdGgKKyAqIGV4cHJlc3Npb25zIHRoYXQgc2VsZWN0IG5hbWVzcGFjZSBub2Rlcywgd2UgbmVlZCB0byBhY3R1YWxseSBwcm9tdWxnYXRlCisgKiB0aGUgbmFtZS1zcGFjZXMgZG93biB0byBldmVyeSBub2RlIHdoZXJlIHRoZXkgYXJlIHZpc2libGUgc28gdGhhdCB0aGUgWFBhdGgKKyAqIHNlbGVjdGlvbiB3aWxsIHdvcmsgcHJvcGVybHkuCisgKgorICogVGhpcyBpcyBpbXBvcnRhbnQgZm9yIENhbm9uaWNhbGlzYXRpb24gb2YgdGhlIGZvdW5kIG5vZGVzLCBidXQgd2UgY2Fubm90CisgKiBkbyB0aGlzIG9ubHkgaW4gdGhlIGNhbm9uaWNhbGlzZXIgYXMgaXQgZG9lcyBub3QgaW50ZXJuYWxseSB1bmRlcnN0YW5kIGhvdworICogdG8gZG8gRFNJRyBzdHlsZSBYUGF0aC4gIFNvIHRoZSBYUGF0aCBpcyBkb25lIGV4dGVybmFsbHksIGFuZCB0aGUgCisgKiByZXN1bHRhbnQgbm9kZSBzZXQgKGluY2x1ZGluZyBhbnkgc2VsZWN0ZWQgIkV4cGFuZGVkIiBhdHRyaWJ1dGUgbm9kZXMpLgorICogYXJlIHBhc3NlZCBpbi4KKyAqCisgKiBUaGUgZXhwYW5kZXIgdGhlcmVmb3JlIGhhbmRsZXMgdGhlIHByb3BvZ2F0aW9uIG9mIHRoZSBuYW1lc3BhY2Ugbm9kZXMsIGFuZAorICogcmVtb3ZlcyB0aGUgcHJvcG9nYXRlZCBub2RlcyB3aGVuIGl0IGdvZXMgb3V0IG9mIHNjb3BlIChvciB3aGVuCisgKiBkZWxldGVBZGRlZE5hbWVzcGFjZXMoKSBpcyBjYWxsZWQpLgorICoKKyAqLworCisKK2NsYXNzIENBTk9OX0VYUE9SVCBYU0VDTmFtZVNwYWNlRXhwYW5kZXIgeworCisKKyNpZiBkZWZpbmVkKFhBTEFOX05PX05BTUVTUEFDRVMpCisJdHlwZWRlZiB2ZWN0b3I8WFNFQ05hbWVTcGFjZUVudHJ5ICo+CQkJTmFtZVNwYWNlRW50cnlMaXN0VmVjdG9yVHlwZTsKKyNlbHNlCisJdHlwZWRlZiBzdGQ6OnZlY3RvcjxYU0VDTmFtZVNwYWNlRW50cnkgKj4JCU5hbWVTcGFjZUVudHJ5TGlzdFZlY3RvclR5cGU7CisjZW5kaWYKKworCitwdWJsaWM6CisKKyAgICAvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworICAgIC8vQHsKKwkKKyAgICAvKioKKwkgKiBcYnJpZWYgTWFpbiBjb25zdHJ1Y3R1cmUKKwkgKgorCSAqIFVzZSB0aGlzIGNvbnN0cnVjdG9yIHRvIGV4cGFuZCBuYW1lc3BhY2VzIHRocm91Z2ggYW4gZW50aXJlIGRvY3VtZW50LgorCSAqCisJICogQHBhcmFtIGQgVGhlIERPTSBkb2N1bWVudCB0byBiZSBleHBhbmRlZC4KKwkgKi8KKworCVhTRUNOYW1lU3BhY2VFeHBhbmRlcihYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKmQpOwkJCS8vIENvbnN0cnVjdG9yCisKKyAgICAvKioKKwkgKiBcYnJpZWYgRnJhZ21lbnQgY29uc3RydWN0b3IKKwkgKgorCSAqIFVzZSB0aGlzIGNvbnN0cnVjdG9yIHRvIGV4cGFuZCBuYW1lc3BhY2VzIGluIGEgZ2l2ZW4gZnJhZ21lbnQgb25seS4KKwkgKiBAbm90ZSBUaGUgZnJhZ21lbnQgZG9lcyBub3QgbmVlZCB0byBiZSByb290ZWQgaW4gYW4gYWN0dWFsIGRvY3VtZW50LgorCSAqCisJICogQHBhcmFtIGYgVGhlIHN0YXJ0aW5nIGVsZW1lbnQgb2YgdGhlIGZyYWdtZW50IHRvIGJlIGV4cGFuZGVkLgorCSAqLworCisJWFNFQ05hbWVTcGFjZUV4cGFuZGVyKFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICpmKTsJCSAgICAvLyBmcmFnIENvbnN0cnVjdG9yCisKKwl+WFNFQ05hbWVTcGFjZUV4cGFuZGVyKCk7CQkJCQkJLy8gRGVmYXVsdCBkZXN0cnVjdG9yCisKKwkvL0B9CisKKwkvLyBPcGVyYXRlIAorCisJLyoqCisJICogXGJyaWVmIEV4cGFuZCBuYW1lc3BhY2VzLgorCSAqCisJICogUGVyZm9ybSB0aGUgZXhwYW5zaW9uIG9wZXJhdGlvbiBhbmQgY3JlYXRlIGEgbGlzdCBvZiBhbGwgYWRkZWQgbm9kZXMuCisJICovCisKKwl2b2lkIGV4cGFuZE5hbWVTcGFjZXModm9pZCk7CisKKwkvKioKKwkgKiBcYnJpZWYgQ29sbGFwc2UgbmFtZS1zcGFjZXMKKwkgKgorCSAqIERlbGV0ZSBhbGwgbmFtZXNwYWNlcyBhZGRlZCBpbiBleGFuZE5hbWVTcGFjZXMoKSAodXNpbmcgdGhlIGxpc3QgdGhhdAorCSAqIHdhcyBjcmVhdGVkIGF0IHRoYXQgdGltZQorCSAqLworCisJdm9pZCBkZWxldGVBZGRlZE5hbWVzcGFjZXModm9pZCk7CisKKwkvLyBDaGVjayBpZiBhIG5vZGUgaXMgYW4gYWRkZWQgbm9kZQorCWJvb2wgbm9kZVdhc0FkZGVkKFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICpuKTsKKworcHJpdmF0ZTogIC8vIEZ1bmN0aW9ucworCisJWFNFQ05hbWVTcGFjZUV4cGFuZGVyKHZvaWQpOwkJCQkJLy8gTm8gZGVmYXVsdCBjb25zdHJ1Y3RvcgorCXZvaWQgcmVjdXJzZShYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqbik7CisKKwkvLyBkYXRhCisJCisJTmFtZVNwYWNlRW50cnlMaXN0VmVjdG9yVHlwZQltX2xzdDsJCQkvLyBMaXN0IG9mIGFkZGVkIG5hbWUgc3BhY2VzCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50CQkJCQkJCisJCQkJCQkJCQkqIG1wX2RvYzsJCS8vIFRoZSBvd25lciBkb2N1bWVudAorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICAgICAgICAgICAgICAgICAgICAgIAorCQkJCQkJCQkJKiBtcF9mcmFnbWVudDsgIC8vIElmIHdlIGFyZSBkb2luZyBhIGZyYWdtZW50CisJYm9vbAkJCQkJCQltX2V4cGFuZGVkOwkJLy8gSGF2ZSB3ZSBleHBhbmRlZCBhbHJlYWR5PworCVhTRUNTYWZlQnVmZmVyRm9ybWF0dGVyCQkJKiBtcF9mb3JtYXR0ZXI7CisKK307CisKKyNlbmRpZiAvKiBYU0VDTkFNRVNQQUNFRVhQQU5ERVJfSEVBREVSICovCisKZGlmZiAtLWdpdCBhL2Mvc3JjL3V0aWxzL1hTRUNQbGF0Zm9ybVV0aWxzLmNwcCBiL2Mvc3JjL3V0aWxzL1hTRUNQbGF0Zm9ybVV0aWxzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWMyZDM1Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdXRpbHMvWFNFQ1BsYXRmb3JtVXRpbHMuY3BwCkBAIC0wLDAgKzEsMTg4IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYU0VDUGxhdGZvcm1VdGlsczo9IFRvIHN1cHBvcnQgdGhlIHBsYXRmb3JtIHdlIHJ1biBpbgorICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKi8KKworLy8gWFNFQworCisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDUGxhdGZvcm1VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0NvbnN0YW50cy5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdTaWduYXR1cmUuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TQ29uc3RhbnRzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDQWxnb3JpdGhtTWFwcGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNT3V0cHV0RmlsZS5ocHA+CisKKyNpbmNsdWRlICIuLi94ZW5jL2ltcGwvWEVOQ0NpcGhlckltcGwuaHBwIgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworI2lmIGRlZmluZWQoX1dJTjMyKQorI2luY2x1ZGUgPHhzZWMvdXRpbHMvd2ludXRpbHMvWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbS5ocHA+CisjZW5kaWYKKworI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKyMJaW5jbHVkZSA8eHNlYy9lbmMvT3BlblNTTC9PcGVuU1NMQ3J5cHRvUHJvdmlkZXIuaHBwPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkIChIQVZFX1dJTkNBUEkpCisjCWluY2x1ZGUgPHhzZWMvZW5jL1dpbkNBUEkvV2luQ0FQSUNyeXB0b1Byb3ZpZGVyLmhwcD4KKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoSEFWRV9OU1MpCisjCWluY2x1ZGUgPHhzZWMvZW5jL05TUy9OU1NDcnlwdG9Qcm92aWRlci5ocHA+CisjZW5kaWYKKworLy8gU3RhdGljIGRhdGEgdXNlZCBieSBhbGwgb2YgWFNFQworaW50IFhTRUNQbGF0Zm9ybVV0aWxzOjppbml0Q291bnQgPSAwOworWFNFQ0NyeXB0b1Byb3ZpZGVyICogWFNFQ1BsYXRmb3JtVXRpbHM6OmdfY3J5cHRvUHJvdmlkZXIgPSBOVUxMOworCisvLyBIYXZlIGEgY29uc3QgY29weSBmb3IgZXh0ZXJuYWwgdXNhZ2UKK2NvbnN0IFhTRUNBbGdvcml0aG1NYXBwZXIgKiBYU0VDUGxhdGZvcm1VdGlsczo6Z19hbGdvcml0aG1NYXBwZXIgPSBOVUxMOworCitYU0VDQWxnb3JpdGhtTWFwcGVyICogaW50ZXJuYWxNYXBwZXIgPSBOVUxMOworCitYU0VDUGxhdGZvcm1VdGlsczo6VHJhbnNmb3JtRmFjdG9yeSogWFNFQ1BsYXRmb3JtVXRpbHM6OmdfbG9nZ2luZ1NpbmsgPSBOVUxMOworCisvLyBEZXRlcm1pbmUgZGVmYXVsdCBjcnlwdG8gcHJvdmlkZXIKKworI2lmIGRlZmluZWQgKEhBVkVfT1BFTlNTTCkKKyMJZGVmaW5lIFhTRUNfREVGQVVMVF9QUk9WSURFUglPcGVuU1NMQ3J5cHRvUHJvdmlkZXIoKQorI2Vsc2UKKyMJaWYgZGVmaW5lZCAoSEFWRV9XSU5DQVBJKQorIwkJZGVmaW5lIFhTRUNfREVGQVVMVF9QUk9WSURFUglXaW5DQVBJQ3J5cHRvUHJvdmlkZXIoKQorIwllbHNlIAorIwkJaWYgZGVmaW5lZCAoSEFWRV9OU1MpCisjCQkJZGVmaW5lIFhTRUNfREVGQVVMVF9QUk9WSURFUglOU1NDcnlwdG9Qcm92aWRlcigpCisjCQllbmRpZgorIwllbmRpZgorI2VuZGlmCisKK1RYRk1CYXNlKiBUWEZNT3V0cHV0RmlsZUZhY3RvcnkoRE9NRG9jdW1lbnQqIGRvYykgeworCisgICAgVFhGTU91dHB1dEZpbGUqIHNpbmsgPSBuZXcgVFhGTU91dHB1dEZpbGUoZG9jKTsKKyAgICBpZiAoc2luaykKKyAgICAgICAgc2luay0+c2V0RmlsZShnZXRlbnYoIlhTRUNfREVCVUdfRklMRSIpKTsKKyAgICByZXR1cm4gc2luazsKKworfQorCit2b2lkIFhTRUNQbGF0Zm9ybVV0aWxzOjpJbml0aWFsaXNlKFhTRUNDcnlwdG9Qcm92aWRlciAqIHApIHsKKworCWlmICgrK2luaXRDb3VudCA+IDEpCisJCXJldHVybjsKKworCWlmIChwICE9IE5VTEwpCisJCWdfY3J5cHRvUHJvdmlkZXIgPSBwOworCWVsc2UKKyNpZiBkZWZpbmVkIFhTRUNfREVGQVVMVF9QUk9WSURFUgorCQlYU0VDbmV3KGdfY3J5cHRvUHJvdmlkZXIsIFhTRUNfREVGQVVMVF9QUk9WSURFUik7CisjZWxzZQorCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q3J5cHRvUHJvdmlkZXJFcnJvciwKKwkJIlhTRUNQbGF0Zm9ybVV0aWxzOjpJbml0aWFsaXNlKCkgY2FsbGVkIHdpdGggTlVMTCBwcm92aWRlciwgYnV0IG5vIGRlZmF1bHQgZGVmaW5lZCIpOworI2VuZGlmCisKKwkvLyBTZXQgdXAgbmVjZXNzYXJ5IGNvbnN0YW50cworCURTSUdDb25zdGFudHM6OmNyZWF0ZSgpOworCVhLTVNDb25zdGFudHM6OmNyZWF0ZSgpOworCisJLy8gSW5pdGlhbGlzZSB0aGUgc2FmZUJ1ZmZlciBzeXN0ZW0KKwlzYWZlQnVmZmVyOjppbml0KCk7CisKKwkvLyBJbml0aWFsaXNlIEFsZ29yaXRobSBNYXBwZXIKKwlYU0VDbmV3KGludGVybmFsTWFwcGVyLCBYU0VDQWxnb3JpdGhtTWFwcGVyKTsKKwlnX2FsZ29yaXRobU1hcHBlciA9IGludGVybmFsTWFwcGVyOworCisJLy8gSW5pdGlhbGlzZSB0aGUgWEVOQ0NpcGhlckltcGwgY2xhc3MKKwlYRU5DQ2lwaGVySW1wbDo6SW5pdGlhbGlzZSgpOworCisJLy8gSW5pdGlhbGlzZSB0aGUgRFNJR1NpZ25hdHVyZSBjbGFzcworCURTSUdTaWduYXR1cmU6OkluaXRpYWxpc2UoKTsKKworCWNvbnN0IGNoYXIqIHNpbmsgPSBnZXRlbnYoIlhTRUNfREVCVUdfRklMRSIpOworCWlmIChzaW5rICYmICpzaW5rKQorCSAgICBnX2xvZ2dpbmdTaW5rID0gVFhGTU91dHB1dEZpbGVGYWN0b3J5OworfTsKKwordm9pZCBYU0VDUGxhdGZvcm1VdGlsczo6U2V0Q3J5cHRvUHJvdmlkZXIoWFNFQ0NyeXB0b1Byb3ZpZGVyICogcCkgeworCisJaWYgKGdfY3J5cHRvUHJvdmlkZXIgIT0gTlVMTCkKKwkJZGVsZXRlIGdfY3J5cHRvUHJvdmlkZXI7CisKKwlnX2NyeXB0b1Byb3ZpZGVyID0gcDsKKworfQorCit2b2lkIFhTRUNQbGF0Zm9ybVV0aWxzOjpTZXRSZWZlcmVuY2VMb2dnaW5nU2luayhUcmFuc2Zvcm1GYWN0b3J5KiBmYWN0b3J5KSB7CisKKyAgICBnX2xvZ2dpbmdTaW5rID0gZmFjdG9yeTsKKworfQorCitUWEZNQmFzZSogWFNFQ1BsYXRmb3JtVXRpbHM6OkdldFJlZmVyZW5jZUxvZ2dpbmdTaW5rKERPTURvY3VtZW50KiBkb2MpIHsKKworICAgIHJldHVybiAoZ19sb2dnaW5nU2luayA/IGdfbG9nZ2luZ1NpbmsoZG9jKSA6IE5VTEwpOworfQorCit2b2lkIFhTRUNQbGF0Zm9ybVV0aWxzOjpUZXJtaW5hdGUodm9pZCkgeworCisJaWYgKC0taW5pdENvdW50ID4gMCkKKwkJcmV0dXJuOworCisJLy8gQ2xlYW4gb3V0IHRoZSBhbGdvcml0aG0gbWFwcGVyCisJZGVsZXRlIGludGVybmFsTWFwcGVyOworCisJaWYgKGdfY3J5cHRvUHJvdmlkZXIgIT0gTlVMTCkKKwkJZGVsZXRlIGdfY3J5cHRvUHJvdmlkZXI7CisKKwlEU0lHQ29uc3RhbnRzOjpkZXN0cm95KCk7CisJWEtNU0NvbnN0YW50czo6ZGVzdHJveSgpOworCisJLy8gRGVzdHJveSBhbnl0aGluZyBwbGF0Zm9ybSBzcGVjaWZpYworI2lmIGRlZmluZWQoX1dJTjMyKQorCVhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW06OkNsZWFudXAoKTsKKyNlbmRpZgorCit9CisKK3ZvaWQgWFNFQ1BsYXRmb3JtVXRpbHM6OnJlZ2lzdGVyQWxnb3JpdGhtSGFuZGxlcigKKwkJY29uc3QgWE1MQ2ggKiB1cmksIAorCQljb25zdCBYU0VDQWxnb3JpdGhtSGFuZGxlciAmIGhhbmRsZXIpIHsKKworCWludGVybmFsTWFwcGVyLT5yZWdpc3RlckhhbmRsZXIodXJpLCBoYW5kbGVyKTsKKworfQorCit2b2lkIFhTRUNQbGF0Zm9ybVV0aWxzOjp3aGl0ZWxpc3RBbGdvcml0aG0oY29uc3QgWE1MQ2gqIHVyaSkgeworCisgICAgaW50ZXJuYWxNYXBwZXItPndoaXRlbGlzdEFsZ29yaXRobSh1cmkpOworCit9CisKK3ZvaWQgWFNFQ1BsYXRmb3JtVXRpbHM6OmJsYWNrbGlzdEFsZ29yaXRobShjb25zdCBYTUxDaCogdXJpKSB7CisKKyAgICBpbnRlcm5hbE1hcHBlci0+YmxhY2tsaXN0QWxnb3JpdGhtKHVyaSk7CisKK30KZGlmZiAtLWdpdCBhL2Mvc3JjL3V0aWxzL1hTRUNQbGF0Zm9ybVV0aWxzLmhwcCBiL2Mvc3JjL3V0aWxzL1hTRUNQbGF0Zm9ybVV0aWxzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzAwMDgxCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdXRpbHMvWFNFQ1BsYXRmb3JtVXRpbHMuaHBwCkBAIC0wLDAgKzEsMjIyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYU0VDUGxhdGZvcm1VdGlsczo9IFRvIHN1cHBvcnQgdGhlIHBsYXRmb3JtIHdlIHJ1biBpbgorICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCQkJCQkgCisgKi8KKworI2lmbmRlZiBYU0VDUExBVEZPUk1VVElMU19JTkNMVURFCisjZGVmaW5lIFhTRUNQTEFURk9STVVUSUxTX0lOQ0xVREUKKworI2luY2x1ZGUgPHhlcmNlc2MvZG9tL0RPTS5ocHA+CisKKy8vIFhTRUMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvUHJvdmlkZXIuaHBwPgorCitjbGFzcyBUWEZNQmFzZTsKK2NsYXNzIFhTRUNBbGdvcml0aG1NYXBwZXI7CitjbGFzcyBYU0VDQWxnb3JpdGhtSGFuZGxlcjsKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisKKy8qKgorICogXGJyaWVmIEhpZ2ggbGV2ZWwgbGlicmFyeSBpbnRlcmZhY2UgY2xhc3MuCisgKiBAaW5ncm91cCBpbnRlcm5hbAorICoKKyAqIFRoaXMgY2xhc3MgaXMgdXNlZCBwcmltYXJpbHkgdG8gaW5pdGlhbGlzZSB0aGUgbGlicmFyeSBhbmQKKyAqIGNvbW11bmljYXRlIGhpZ2ggbGV2ZWwgcGFyYW1ldGVycyB0aGF0IHdpbGwgYmUgY29tbW9uIHRvIGFsbAorICogb2JqZWN0cyBmcm9tIHRoZSBjbGFzcyBpbiBhbnkgZ2l2ZW4gc2Vzc2lvbi4KKyAqCisgKiBJdCBpcyBwcmltYXJpbHkgYSBzdGF0aWMgY2xhc3MuCisgKi8KKworY2xhc3MgRFNJR19FWFBPUlQgWFNFQ1BsYXRmb3JtVXRpbHMgeworCitwdWJsaWMgOgorCisJLyoqCisJICogXGJyaWVmIE51bWJlciBvZiB0aW1lcyBpbml0aWFsaXNlIGhhcyBiZWVuIGNhbGxlZCAKKwkgKgorCSAqIGluaXRDb3VudCBjYW4gYmUgcmVhZCBieSBhbnkgY2xhc3Mgb3IgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGhvdworCSAqIG1hbnkgdGltZXMgdGhlIGxpYnJhcnkgaGFzIGJlZW4gaW5pdGlhbGlzZWQuCisJICovCisKKwlzdGF0aWMgaW50IGluaXRDb3VudDsKKworCS8qKgorCSAqIFxicmllZiBUaGUgbWFpbiBjcnlwdG9ncmFwaGljIHByb3ZpZGVyCisJICoKKwkgKiBUaGlzIHBvaW50ZXIgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBwcmltYXJ5IGNyeXB0bworCSAqIHByb3ZpZGVyIHJlZ2lzdGVyZWQgaW4gdGhlIGxpYnJhcnkuCisJICoKKwkgKiBJbmRpdmlkdWFsIHNpZ25hdHVyZXMgY2FuIG92ZXItcmlkZSB0aGlzIGRlZmF1bHQuCisJICoKKwkgKi8KKworCXN0YXRpYyBYU0VDQ3J5cHRvUHJvdmlkZXIgKiBnX2NyeXB0b1Byb3ZpZGVyOworCisJLyoqCisJICogXGJyaWVmIFRoZSBnbG9iYWwgQWxnb3JpdGhtIE1hcHBlcgorCSAqCisJICogVGhlIGFsZ29yaXRobSBtYXBwZXIgaXMgdXNlZCB0byBtYXAgYWxnb3JpdGhtIHR5cGUgVVJJIHN0cmluZ3MKKwkgKiB0byBhbGdvcml0aG0gaW1wbGVtZW50YXRpb25zLiAgTm90ZSB0aGF0IHRoaXMgaXMgYSBsZXZlbCBvZgorCSAqIGluZGlyZWN0aW9uIGFib3ZlIGFjdHVhbCBjcnlwdG9ncmFwaGljIGFsZ29yaXRobXMuICBGb3IgZXhhbXBsZToKKwkgKgorCSAqIFVSSSA9IGh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3RyaXBsZWRlcy1jYmMKKwkgKgorCSAqIGlzIHRoZSBVUkkgZm9yIDNERVMgaW4gQ0JDIG1vZGUuICBUaGUgbWFwcGVyIHdpbGwgcmV0dXJuIGFuCisJICogYWxnb3JpdGhtIGhhbmRsZXIgdGhhdCB1bmRlcnN0YW5kcyB3aGF0IHRoaXMgbWVhbnMgaW4gdGVybXMgb2YKKwkgKiBJVnMgYW5kIGhvdyB0byBjYWxsIHRoZSBYU0VDQ3J5cHRvS2V5IGludGVyZmFjZS4gIEl0IHRoZW4gdXNlcyB0aGUKKwkgKiBjcnlwdG9ncmFwaGljIHByb3ZpZGVyIHRvIGFjdHVhbGx5IHBlcmZvcm0gdGhlIGVuY3J5cHRpb24uCisJICoKKwkgKiBUaGlzIGFsbG93cyBhcHBsaWNhdGlvbnMgdG8gcHJvdmlkZSBuZXcgYWxnb3JpdGhtIHR5cGVzLiAgVGhlCisJICogbWFwcGVyIGlzIHVzZWQgdG8gbWFwIHRoZSB0eXBlIHN0cmluZyB0byB0aGUgbWVhbnMgb2YgZG9pbmcgdGhlCisJICogZW5jcnlwdGlvbiwgYW5kIGEgbmV3IFhTRUNDcnlwdG9LZXkgZGVyaXZhdGl2ZSBjYW4gYmUgcHJvdmlkZWQKKwkgKiB0byBwZXJmb3JtIHRoZSBhY3R1YWwgY3J5cG8gd29yay4KKwkgKgorCSAqIEBub3RlIFRoZSBwcm92aWRlciBzaG91bGQgb25seSBiZSBhZGRlZCB0byB2aWEgdGhlCisJICogWFNFQ1BsYXRmb3JtVXRpbHM6OnJlZ2lzdGVyQWxnb3JpdGhtSGFuZGxlcigpIGNhbGwuCisJICoKKwkgKiBAc2VlICNhZGRBbGdvcml0aG1IYW5kbGVyKCkKKwkgKi8KKworCXN0YXRpYyBjb25zdCBYU0VDQWxnb3JpdGhtTWFwcGVyICogZ19hbGdvcml0aG1NYXBwZXI7CisKKwkvKioKKwkgKiBcYnJpZWYgSW5pdGlhbGlzZSB0aGUgbGlicmFyeQorCSAqCisJICogPGI+TXVzdDwvYj4gYmUgY2FsbGVkIHByaW9yIHRvIHVzaW5nIGFueSBmdW5jdGlvbnMgaW4gdGhlIGxpYnJhcnkuCisJICoKKwkgKiBQcmltYXJpbHkgc2V0cyB1cCBzdGF0aWMgdmFyaWFibGVzIHVzZWQgYnkgYWxsIGNsYXNzZXMgaW4gdGhlCisJICogbGlicmFyeS4KKwkgKgorCSAqIEBwYXJhbSBwIEEgcG9pbnRlciB0byBhIFhTRUNDcnlwdG9Qcm92aWRlciBvYmplY3QgdGhhdCB0aGUgbGlicmFyeSAKKwkgKiBzaG91bGQgdXNlIGZvciBjcnlwdG9ncmFwaGljIGZ1bmN0aW9ucy4gIElmIHAgPT0gTlVMTCwgdGhlIGxpYnJhcnkKKwkgKiB3aWxsIGluc3RhbnRpYXRlIGFuIE9wZW5TU0xDcnlwdG9Qcm92aWRlciBvYmplY3QuCisJICovCisKKwlzdGF0aWMgdm9pZCBJbml0aWFsaXNlKFhTRUNDcnlwdG9Qcm92aWRlciAqIHAgPSBOVUxMKTsKKworCS8qKgorCSAqIFxicmllZiBTZXQgYSBuZXcgY3J5cHRvIHByb3ZpZGVyCisJICogCisJICogU2V0IHRoZSBjcnlwdG8gcHJvdmlkZXIgdG8gdGhlIHZhbHVlIHBhc3NlZCBpbi4gIEFueSBjdXJyZW50IHByb3ZpZGVyCisJICogaXMgZGVsZXRlZC4KKwkgKgorCSAqIEBub3RlIFRoaXMgaXMgbm90IHRocmVhZC1zYWZlLiAgSXQgc2hvdWxkIGJlIGNhbGxlZCBwcmlvciB0byBhbnkgcmVhbAorCSAqIHVzYWdlIG9mIHRoZSBsaWJyYXJ5LgorCSAqCisJICogQHBhcmFtIHAgQSBwb2ludGVyIHRvIGEgWFNFQ0NyeXB0b1Byb3ZpZGVyIG9iamVjdCB0aGF0IHRoZSBsaWJyYXJ5IAorCSAqIHNob3VsZCB1c2UgZm9yIGNyeXB0b2dyYXBoaWMgZnVuY3Rpb25zLiAgCisJICogQG5vdGUgT3duZXJzaGlwIG9mIHRoZSBwcm92aWRlciBpcyBwYXNzZWQgdG8gdGhlIGxpYnJhcnksIHdoaWNoIHdpbGwKKwkgKiBkZWxldGUgaXQgYXQgVGVybWluYXRpb24uCisJICovCisKKwlzdGF0aWMgdm9pZCBTZXRDcnlwdG9Qcm92aWRlcihYU0VDQ3J5cHRvUHJvdmlkZXIgKiBwKTsKKworCS8qKgorCSAqIFxicmllZiBBZGQgYSBuZXcgYWxnb3JpdGhtIEhhbmRsZXIKKwkgKgorCSAqIEFwcGxpY2F0aW9uIGRldmVsb3BlcnMgY2FuIGV4dGVuZCB0aGUgWFNFQ0FsZ29yaXRobUhhbmRsZXIgY2xhc3MgdG8KKwkgKiBpbXBsZW1lbnQgbmV3IGNyeXB0b2dyYXBoaWMgYWxnb3JpdGhtcy4gIFRoaXMgd2lsbCB0aGVuIGFsbG93IHRoZQorCSAqIGxpYnJhcnkgdG8gY2FsbCB0aGUgcHJvdmlkZWQgaGFuZGxlciB3aGVuZXZlciB0cnlpbmcgdG8gcHJvY2VzcyBhCisJICogdHlwZSBpdCBkb2Vzbid0IHVuZGVyc3RhbmQuCisJICoKKwkgKiBBbnkgaGFuZGxlciBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgZm9yIHRoaXMgVVJJIHdpbGwgYmUgb3ZlcndyaXR0ZW4sCisJICogYWxsb3dpbmcgY2FsbGVycyB0byBvdmVyd3JpdGUgdGhlIGhhbmRsZXJzIGZvciBkZWZhdWx0IFVSSXMuCisJICoKKwkgKiBAc2VlIFhTRUNBbGdvcml0aG1IYW5kbGVyCisJICogQG5vdGUgVGhpcyBpcyA8Yj5ub3Q8L2I+IHRocmVhZCBzYWZlLiAgQWxnb3JpdGhtIGhhbmRsZXJzIHNob3VsZAorCSAqIGJlIGFkZGVkIHByaW9yIHRvIGFueSBwcm9jZXNzaW5nIG9mIHNpZ25hdHVyZXMgZXRjLgorCSAqIEBwYXJhbSB1cmkgVHlwZSBVUkkgdGhhdCBtYXBzIHRvIHRoaXMgaGFuZGxlcgorCSAqIEBwYXJhbSBoYW5kbGVyIFRoZSBoYW5kbGVyIHRvIGJlIHVzZWQgd2hlbmV2ZXIgdGhpcyBVUkkgaXMgc2VlbiBieQorCSAqIHRoZSBsaWJyYXJ5LgorCSAqLworCisJc3RhdGljIHZvaWQgcmVnaXN0ZXJBbGdvcml0aG1IYW5kbGVyKGNvbnN0IFhNTENoICogdXJpLCBjb25zdCBYU0VDQWxnb3JpdGhtSGFuZGxlciAmIGhhbmRsZXIpOworCisgICAgLyoqCisgICAgICogXGJyaWVmIEluZGljYXRlIGFuIGFsZ29yaXRobSBpcyBhcHByb3ZlZCBmb3IgdXNlLCBpbXBseWluZyBvdGhlcnMgYXJlIG5vdC4KKyAgICAgKgorICAgICAqIEBzZWUgWFNFQ0FsZ29yaXRobUhhbmRsZXIKKyAgICAgKiBAbm90ZSBUaGlzIGlzIDxiPm5vdDwvYj4gdGhyZWFkIHNhZmUuICBBbGdvcml0aG1zIHNob3VsZAorICAgICAqIGJlIHdoaXRlbGlzdGVkIHByaW9yIHRvIGFueSBwcm9jZXNzaW5nIG9mIHNpZ25hdHVyZXMgZXRjLgorICAgICAqIEBwYXJhbSBVUkkgYWxnb3JpdGhtIHRvIHdoaXRlbGlzdAorICAgICAqLworCisJc3RhdGljIHZvaWQgd2hpdGVsaXN0QWxnb3JpdGhtKGNvbnN0IFhNTENoKiBVUkkpOworCisgICAgLyoqCisgICAgICogXGJyaWVmIEluZGljYXRlIGFuIGFsZ29yaXRobSBpcyBub3QgYXBwcm92ZWQgZm9yIHVzZSwgaW1wbHlpbmcgb3RoZXJzIGFyZS4KKyAgICAgKgorICAgICAqIEBzZWUgWFNFQ0FsZ29yaXRobUhhbmRsZXIKKyAgICAgKiBAbm90ZSBUaGlzIGlzIDxiPm5vdDwvYj4gdGhyZWFkIHNhZmUuICBBbGdvcml0aG1zIHNob3VsZAorICAgICAqIGJlIGJsYWNrbGlzdGVkIHByaW9yIHRvIGFueSBwcm9jZXNzaW5nIG9mIHNpZ25hdHVyZXMgZXRjLgorICAgICAqIEBwYXJhbSBVUkkgYWxnb3JpdGhtIHRvIGJsYWNrbGlzdAorICAgICAqLworCisgICAgc3RhdGljIHZvaWQgYmxhY2tsaXN0QWxnb3JpdGhtKGNvbnN0IFhNTENoKiBVUkkpOworCisgICAgdHlwZWRlZiBUWEZNQmFzZSogVHJhbnNmb3JtRmFjdG9yeShYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQqKTsKKworICAgIC8qKgorICAgICAqIFxicmllZiBJbnN0YWxscyBsb2dnaW5nIHN1cHBvcnQgZHVyaW5nIFJlZmVyZW5jZSBwcm9jZXNzaW5nCisgICAgICoKKyAgICAgKiBUaGUgZnVuY3Rpb24gcHJvdmlkZWQgd2lsbCBiZSBjYWxsZWQgZHVyaW5nIFJlZmVyZW5jZSBjb21wdXRhdGlvbgorICAgICAqIHRvIG9idGFpbiBhIHRyYW5zZm9ybSBpbnRlcmZhY2UgdG8gcGxhY2UgYXQgdGhlIGVuZCBvZiB0aGUKKyAgICAgKiB0cmFuc2Zvcm0gY2hhaW4uIEl0IHdpbGwgYmUgZ2l2ZW4gdGhlIGNoYW5jZSB0byBsb2cgb3IgcHJlc2VydmUKKyAgICAgKiB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIHRyYW5zZm9ybXMgdG8gUmVmZXJlbmNlcyBkdXJpbmcgc2lnbmluZworICAgICAqIGFuZCB2ZXJpZmljYXRpb24gb3BlcmF0aW9ucy4KKyAgICAgKi8KKyAgICBzdGF0aWMgdm9pZCBTZXRSZWZlcmVuY2VMb2dnaW5nU2luayhUcmFuc2Zvcm1GYWN0b3J5KiBmYWN0b3J5KTsKKworICAgIC8qKgorICAgICAqIFxicmllZiBSZXR1cm5zIGEgdHJhbnNmb3JtIGZvciBsb2dnaW5nIG9mIFJlZmVyZW5jZSBwcm9jZXNzaW5nCisgICAgICoKKyAgICAgKiBAcGFyYW0gZG9jICAgdGhlIERPTSBkb2N1bWVudCBjb250YWluaW5nIHRoZSBkYXRhIGJlaW5nIHByb2Nlc3NlZAorICAgICAqIEByZXR1cm4gIGEgdHJhbnNmb3JtIHRvIGluc3RhbGwgZm9yIGxvZ2dpbmcgb2YgUmVmZXJlbmNlIGRhdGEsIG9yIE5VTEwKKyAgICAgKi8KKyAgICBzdGF0aWMgVFhGTUJhc2UqIEdldFJlZmVyZW5jZUxvZ2dpbmdTaW5rKFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCogZG9jKTsKKworCS8qKgorCSAqIFxicmllZiBUZXJtaW5hdGUKKwkgKgorCSAqIFNob3VsZCBiZSBjYWxsZWQgcHJpb3IgdG8gYW55IHByb2dyYW0gZXhpc3QgdG8gYWxsb3cgdGhlIGxpYnJhcnkKKwkgKiB0byBjbGVhbmx5IGRlbGV0ZSBhbnkgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCB0aGUgbGlicmFyeSBhcyBhIHdob2xlLgorCSAqCisJICogQG5vdGUgRG8gbm90IGNhbGwgdGhpcyBmdW5jdGlvbiB3aGlsZSBhbnkgeG1sLXNlY3VyaXR5LWMgb2JqZWN0CisJICogcmVtYWluIGluc3RhbnRpYXRlZC4gIFRoZSByZXN1bHRzIG9mIGRvaW5nIHNvIGlzIHVuZGVmaW5lZCwgYW5kIGNvdWxkCisJICogY2F1c2UgYmFkIHJlc3VsdHMuCisJICovCisKKwlzdGF0aWMgdm9pZCBUZXJtaW5hdGUodm9pZCk7CisKK3ByaXZhdGU6CisJc3RhdGljIFRyYW5zZm9ybUZhY3RvcnkqIGdfbG9nZ2luZ1Npbms7Cit9OworCisKKyNlbmRpZiAvKiBYU0VDUExBVEZPUk1VVElMU19JTkNMVURFICovCisKZGlmZiAtLWdpdCBhL2Mvc3JjL3V0aWxzL1hTRUNTT0FQUmVxdWVzdG9yLmhwcCBiL2Mvc3JjL3V0aWxzL1hTRUNTT0FQUmVxdWVzdG9yLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTVjYWI0Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdXRpbHMvWFNFQ1NPQVBSZXF1ZXN0b3IuaHBwCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNTT0FQUmVxdWVzdG9yOj0gSW50ZXJmYWNlIGNsYXNzIHVzZWQgYnkgdGhlIFhLTVMgY2xpZW50IGNvZGUgdG8KKyAqICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybSBhIFNPQVAgcmVxdWVzdCBhbmQgcmVjZWl2ZSByZXNwb25zZS4KKyAqCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhTRUNTT0FQUkVRVUVTVE9SX0lOQ0xVREUKKyNkZWZpbmUgWFNFQ1NPQVBSRVFVRVNUT1JfSU5DTFVERQorCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorCitYU0VDX0RFQ0xBUkVfWEVSQ0VTX0NMQVNTKERPTURvY3VtZW50KTsKKworLyoqCisgKiBAYnJpZWYgSW50ZXJmYWNlIGZvciBTT0FQIFJlcXVlc3RzCisgKiBAaW5ncm91cCBpbnRlcmZhY2VzCisgKgorICogVGhlIFhLTVMgY2xpZW50IGNvZGUgbmVlZHMgdG8gYmUgYWJsZSB0byBjYWxsIG9uIGEgU09BUCByZXF1ZXN0b3IKKyAqIGltcGxlbWVudGF0aW9uIHRoYXQgd2lsbCBoYW5kbGUgd3JhcHBpbmcgdGhlIHJlcXVlc3QgaW4gYSBTT0FQIG1zZworICogYW5kIHRyYW5zcG9ydGluZyBpdCB0byB0aGUgU09BUCBzZXJ2ZXIuICBUaGlzIGNsYXNzIGRlZmluZXMgdGhlCisgKiBpbnRlcmZhY2UgdXNlZCBieSB0aGUgY2xpZW50IGNvZGUgdG8gbWFrZSB0aGlzIGhhcHBlbi4KKyAqCisgKiBJbXBsZW1lbnRvcnMgbmVlZCB0byB3cmFwIHRoZSBwYXNzZWQgaW4gRE9NIGRvY3VtZW50IGluIGEgU09BUCAxLjEKKyAqIG9yIFNPQVAgMS4yIG1zZy4gIEUuZy4gKFNPQVAgMS4yKQorICogXHZlcmJhdGltCisgICA8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSJ1dGYtOCI/PgorICAgPGVudjpFbnZlbG9wZSB4bWxuczplbnY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDYvc29hcC1lbnZlbG9wZSI+IAorICAgIDxlbnY6SGVhZGVyPgorICAgICA8ZW52OkJvZHk+CisgICAgICAgWEtNUyBSZXF1ZXN0IE1lc3NhZ2UgZWxlbWVudCAKKyAgICAgPC9lbnY6Qm9keT4KKyAgICA8L2VudjpIZWFkZXI+CisgICA8L2VudjpFbnZlbG9wZT4KK1xlbmR2ZXJiYXRpbQorICogCisgKiBTT0FQIGltcGxlbnRvcnMgbWF5IHdhbnQvbmVlZCB0byBhZGQgb3RoZXIgaGVhZGVycy4KKyAqCisgKi8KKworCitjbGFzcyBEU0lHX0VYUE9SVCBYU0VDU09BUFJlcXVlc3RvciB7CisKK3B1YmxpYyA6CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworCVhTRUNTT0FQUmVxdWVzdG9yKCkge30KKwl2aXJ0dWFsIH5YU0VDU09BUFJlcXVlc3RvcigpIHt9CisKKwkvL0B9CisKKwkvKiogQG5hbWUgSW50ZXJmYWNlIG1ldGhvZHMgKi8KKworCS8qKgorCSAqIFxicmllZiBEbyBhIFNPQVAgcmVxdWVzdAorCSAqCisJICogUGVyZm9ybXMgYSByZXF1ZXN0IGJhc2VkIG9uIHRoZSBwYXNzZWQgaW4gRE9NIGRvY3VtZW50IGFuZAorCSAqIHRoZSBpbmRpY2F0ZWQgVVJJLiAgVGhlIGZ1bmN0aW9uIGlzIGV4cGVjdGVkIHRvIHJldHVybiBhIHBvaW50ZXIKKwkgKiB0byB0aGUgcGFyc2VkIHJlc3VsdCBtZXNzYWdlICh3aXRoIHRoZSBTT0FQIGVudmVsb3BlIHJlbW92ZWQpCisJICoKKwkgKiBUaGUgaW1wbGVtZW50aW5nIG9iamVjdCBpcyBleHBlY3RlZCB0byBrbm93IGhvdyB0byBnZXQgdGhlCisJICogd3JhcHBlZCBtZXNzYWdlIHRvIHRoZSBzZXJ2ZXIgdGhhdCB3aWxsIHByb2Nlc3MgdGhlIHJlcXVlc3QKKwkgKgorCSAqIEBwYXJhbSByZXF1ZXN0IFRoZSBET00gZG9jdW1lbnQgY29udGFpbmluZyB0aGUgbWVzc2FnZSB0byBiZSAKKwkgKiB3cmFwcGVkIGFuZCBzZW50LgorCSAqIEByZXR1cm5zIFRoZSBET00gZG9jdW1lbnQgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQsIHdpdGggYWxsCisJICogU09BUCBoZWFkZXJzIHJlbW92ZWQKKwkgKi8KKworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICoKKwkJZG9SZXF1ZXN0KFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIHJlcXVlc3QpID0gMDsKKworfTsKKworCisjZW5kaWYgLyogWFNFQ1NPQVBSRVFVRVNUT1JfSU5DTFVERSAqLworCmRpZmYgLS1naXQgYS9jL3NyYy91dGlscy9YU0VDU09BUFJlcXVlc3RvclNpbXBsZS5jcHAgYi9jL3NyYy91dGlscy9YU0VDU09BUFJlcXVlc3RvclNpbXBsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWIwMGJjNAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3V0aWxzL1hTRUNTT0FQUmVxdWVzdG9yU2ltcGxlLmNwcApAQCAtMCwwICsxLDMzNCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ1NPQVBSZXF1ZXN0b3JTaW1wbGUgOj0gKFZlcnkpIEJhc2ljIGltcGxlbWVudGF0aW9uIG9mIGEgU09BUAorICogICAgICAgICAgICAgICAgICAgICAgICAgSFRUUCB3cmFwcGVyIGZvciB0ZXN0aW5nIHRoZSBjbGllbnQgY29kZS4KKyAqCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNTYWZlQnVmZmVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDU09BUFJlcXVlc3RvclNpbXBsZS5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNDb25zdGFudHMuaHBwPgorCisjaW5jbHVkZSAiLi4vdXRpbHMvWFNFQ0F1dG9QdHIuaHBwIgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2luY2x1ZGUgPHhlcmNlc2MvZG9tL0RPTS5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy9wYXJzZXJzL1hlcmNlc0RPTVBhcnNlci5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy9mcmFtZXdvcmsvWE1MRm9ybWF0dGVyLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL2ZyYW1ld29yay9NZW1CdWZGb3JtYXRUYXJnZXQuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9QbGF0Zm9ybVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MTmV0QWNjZXNzb3IuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxTdHJpbmcuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxFeGNlcHRNc2dzLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvSmFuaXRvci5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFVuaURlZnMuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvZnJhbWV3b3JrL01lbUJ1ZklucHV0U291cmNlLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU3RyaW5ncyBmb3IgY29uc3RydWN0aW5nIFNPQVAgZW52ZWxvcGVzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0aWMgWE1MQ2ggc19wcmVmaXhbXSA9IHsKKworCWNoTGF0aW5fZSwKKwljaExhdGluX24sCisJY2hMYXRpbl92LAorCWNoTnVsbAorfTsKKworc3RhdGljIFhNTENoIHNfRW52ZWxvcGVbXSA9IHsKKworCWNoTGF0aW5fRSwKKwljaExhdGluX24sCisJY2hMYXRpbl92LAorCWNoTGF0aW5fZSwKKwljaExhdGluX2wsCisJY2hMYXRpbl9vLAorCWNoTGF0aW5fcCwKKwljaExhdGluX2UsCisJY2hOdWxsCit9OworCitzdGF0aWMgWE1MQ2ggc19Cb2R5W10gPSB7CisKKwljaExhdGluX0IsCisJY2hMYXRpbl9vLAorCWNoTGF0aW5fZCwKKwljaExhdGluX3ksCisJY2hOdWxsCit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworLyogTk9URTogVGhpcyBpcyBpbml0aWFsaXNlZCB2aWEgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgKi8KKworWFNFQ1NPQVBSZXF1ZXN0b3JTaW1wbGU6On5YU0VDU09BUFJlcXVlc3RvclNpbXBsZSgpIHsKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFdyYXAgYW5kIHNlcmlhbGlzZSB0aGUgcmVxdWVzdCBtZXNzYWdlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjaGFyICogWFNFQ1NPQVBSZXF1ZXN0b3JTaW1wbGU6OndyYXBBbmRTZXJpYWxpc2UoRE9NRG9jdW1lbnQgKiByZXF1ZXN0KSB7CisKKwkvLyBQcmVwYXJlIHRoZSBzZXJpYWxpc2VyCisKKwlYTUxDaCB0ZW1wU3RyWzEwMF07CisJWE1MU3RyaW5nOjp0cmFuc2NvZGUoIkNvcmUiLCB0ZW1wU3RyLCA5OSk7ICAgIAorCURPTUltcGxlbWVudGF0aW9uICppbXBsID0gRE9NSW1wbGVtZW50YXRpb25SZWdpc3RyeTo6Z2V0RE9NSW1wbGVtZW50YXRpb24odGVtcFN0cik7CisjaWYgZGVmaW5lZCAoWFNFQ19YRVJDRVNfRE9NTFNTRVJJQUxJWkVSKQorICAgIC8vIERPTSBMMyB2ZXJzaW9uIGFzIHBlciBYZXJjZXMgMy4wIEFQSQorICAgIERPTUxTU2VyaWFsaXplciAgICp0aGVTZXJpYWxpemVyID0gKChET01JbXBsZW1lbnRhdGlvbkxTKilpbXBsKS0+Y3JlYXRlTFNTZXJpYWxpemVyKCk7CisgICAgSmFuaXRvcjxET01MU1NlcmlhbGl6ZXI+IGpfdGhlU2VyaWFsaXplcih0aGVTZXJpYWxpemVyKTsKKworICAgIC8vIEdldCB0aGUgY29uZmlnIHNvIHdlIGNhbiBzZXQgdXAgcHJldHR5IHByaW50aW5nCisgICAgRE9NQ29uZmlndXJhdGlvbiAqZGMgPSB0aGVTZXJpYWxpemVyLT5nZXREb21Db25maWcoKTsKKyAgICBkYy0+c2V0UGFyYW1ldGVyKFhNTFVuaTo6ZmdET01XUlRGb3JtYXRQcmV0dHlQcmludCwgZmFsc2UpOworCisgICAgLy8gTm93IGNyZWF0ZSBhbiBvdXRwdXQgb2JqZWN0IHRvIGZvcm1hdCB0byBVVEYtOAorICAgIERPTUxTT3V0cHV0ICp0aGVPdXRwdXQgPSAoKERPTUltcGxlbWVudGF0aW9uTFMqKWltcGwpLT5jcmVhdGVMU091dHB1dCgpOworICAgIEphbml0b3I8RE9NTFNPdXRwdXQ+IGpfdGhlT3V0cHV0KHRoZU91dHB1dCk7CisJTWVtQnVmRm9ybWF0VGFyZ2V0ICpmb3JtYXRUYXJnZXQgPSBuZXcgTWVtQnVmRm9ybWF0VGFyZ2V0OworCUphbml0b3I8TWVtQnVmRm9ybWF0VGFyZ2V0PiBqX2Zvcm1hdFRhcmdldChmb3JtYXRUYXJnZXQpOworCisgICAgdGhlT3V0cHV0LT5zZXRFbmNvZGluZyhNQUtFX1VOSUNPREVfU1RSSU5HKCJVVEYtOCIpKTsKKyAgICB0aGVPdXRwdXQtPnNldEJ5dGVTdHJlYW0oZm9ybWF0VGFyZ2V0KTsKKworI2Vsc2UKKwlET01Xcml0ZXIgICAgICAgICAqdGhlU2VyaWFsaXplciA9ICgoRE9NSW1wbGVtZW50YXRpb25MUyopaW1wbCktPmNyZWF0ZURPTVdyaXRlcigpOworCUphbml0b3I8RE9NV3JpdGVyPiBqX3RoZVNlcmlhbGl6ZXIodGhlU2VyaWFsaXplcik7CisKKwl0aGVTZXJpYWxpemVyLT5zZXRFbmNvZGluZyhNQUtFX1VOSUNPREVfU1RSSU5HKCJVVEYtOCIpKTsKKwlpZiAodGhlU2VyaWFsaXplci0+Y2FuU2V0RmVhdHVyZShYTUxVbmk6OmZnRE9NV1JURm9ybWF0UHJldHR5UHJpbnQsIGZhbHNlKSkKKwkJdGhlU2VyaWFsaXplci0+c2V0RmVhdHVyZShYTUxVbmk6OmZnRE9NV1JURm9ybWF0UHJldHR5UHJpbnQsIGZhbHNlKTsKKworCU1lbUJ1ZkZvcm1hdFRhcmdldCAqZm9ybWF0VGFyZ2V0ID0gbmV3IE1lbUJ1ZkZvcm1hdFRhcmdldDsKKwlKYW5pdG9yPE1lbUJ1ZkZvcm1hdFRhcmdldD4gal9mb3JtYXRUYXJnZXQoZm9ybWF0VGFyZ2V0KTsKKworI2VuZGlmCisKKwlpZiAobV9lbnZlbG9wZVR5cGUgIT0gRU5WRUxPUEVfTk9ORSkgeworCisJCS8vIENyZWF0ZSBhIG5ldyBkb2N1bWVudCB0byB3cmFwIHRoZSByZXF1ZXN0IGluCisJCXNhZmVCdWZmZXIgc3RyOworCisJCW1ha2VRTmFtZShzdHIsIHNfcHJlZml4LCBzX0VudmVsb3BlKTsKKworCQlET01Eb2N1bWVudCAqZG9jOworCQkKKwkJaWYgKG1fZW52ZWxvcGVUeXBlID09IEVOVkVMT1BFX1NPQVAxMSkgeworCQkJZG9jID0gaW1wbC0+Y3JlYXRlRG9jdW1lbnQoCisJCQkJWEtNU0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJU09BUDExLAorCQkJCQkJc3RyLnJhd1hNTENoQnVmZmVyKCksCisJCQkJCQlOVUxMKTsKKwkJCURPTUVsZW1lbnQgKnJvb3RFbGVtID0gZG9jLT5nZXREb2N1bWVudEVsZW1lbnQoKTsKKworCQkJbWFrZVFOYW1lKHN0ciwgc19wcmVmaXgsIHNfQm9keSk7CisJCQlET01FbGVtZW50ICpib2R5ID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoCisJCQkJCVhLTVNDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVNPQVAxMSwKKwkJCQkJc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCisJCQlyb290RWxlbS0+YXBwZW5kQ2hpbGQoYm9keSk7CisKKwkJCS8vIE5vdyByZXBsaWNhdGUgdGhlIHJlcXVlc3QgaW50byB0aGUgZG9jdW1lbnQKKwkJCURPTUVsZW1lbnQgKiByZXFFbGVtZW50ID0gKERPTUVsZW1lbnQgKikgZG9jLT5pbXBvcnROb2RlKHJlcXVlc3QtPmdldERvY3VtZW50RWxlbWVudCgpLCB0cnVlKTsKKwkJCWJvZHktPmFwcGVuZENoaWxkKHJlcUVsZW1lbnQpOworCQl9CisJCWVsc2UgeworCQkJZG9jID0gaW1wbC0+Y3JlYXRlRG9jdW1lbnQoCisJCQkJWEtNU0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJU09BUDEyLAorCQkJCQkJc3RyLnJhd1hNTENoQnVmZmVyKCksCisJCQkJCQlOVUxMKTsKKwkJCURPTUVsZW1lbnQgKnJvb3RFbGVtID0gZG9jLT5nZXREb2N1bWVudEVsZW1lbnQoKTsKKworCQkJbWFrZVFOYW1lKHN0ciwgc19wcmVmaXgsIHNfQm9keSk7CisJCQlET01FbGVtZW50ICpib2R5ID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoCisJCQkJCVhLTVNDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVNPQVAxMiwKKwkJCQkJc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCisJCQlyb290RWxlbS0+YXBwZW5kQ2hpbGQoYm9keSk7CisKKwkJCS8vIE5vdyByZXBsaWNhdGUgdGhlIHJlcXVlc3QgaW50byB0aGUgZG9jdW1lbnQKKwkJCURPTUVsZW1lbnQgKiByZXFFbGVtZW50ID0gKERPTUVsZW1lbnQgKikgZG9jLT5pbXBvcnROb2RlKHJlcXVlc3QtPmdldERvY3VtZW50RWxlbWVudCgpLCB0cnVlKTsKKwkJCWJvZHktPmFwcGVuZENoaWxkKHJlcUVsZW1lbnQpOworCQl9CisKKworCQkvLyBPSyAtIE5vdyB3ZSBoYXZlIHRoZSBTT0FQIHJlcXVlc3QgYXMgYSBkb2N1bWVudCwgd2Ugc2VyaWFsaXNlIHRvIGEgc3RyaW5nIGJ1ZmZlcgorCQkvLyBhbmQgcmV0dXJuCisKKyNpZiBkZWZpbmVkIChYU0VDX1hFUkNFU19ET01MU1NFUklBTElaRVIpCisgICAgICAgIHRoZVNlcmlhbGl6ZXItPndyaXRlKGRvYywgdGhlT3V0cHV0KTsKKyNlbHNlCisJCXRoZVNlcmlhbGl6ZXItPndyaXRlTm9kZShmb3JtYXRUYXJnZXQsICpkb2MpOworI2VuZGlmCisJCWRvYy0+cmVsZWFzZSgpOworCisJfQorCWVsc2UgeworI2lmIGRlZmluZWQgKFhTRUNfWEVSQ0VTX0RPTUxTU0VSSUFMSVpFUikKKyAgICAgICAgdGhlU2VyaWFsaXplci0+d3JpdGUocmVxdWVzdCwgdGhlT3V0cHV0KTsKKyNlbHNlCisJCXRoZVNlcmlhbGl6ZXItPndyaXRlTm9kZShmb3JtYXRUYXJnZXQsICpyZXF1ZXN0KTsKKyNlbmRpZgorCX0KKworCS8vIE5vdyByZXBsaWNhdGUgdGhlIGJ1ZmZlcgorCXJldHVybiBYTUxTdHJpbmc6OnJlcGxpY2F0ZSgoY29uc3QgY2hhciAqKSBmb3JtYXRUYXJnZXQtPmdldFJhd0J1ZmZlcigpKTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFVuV3JhcCBhbmQgZGUtc2VyaWFsaXNlIHRoZSByZXNwb25zZSBtZXNzYWdlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitET01Eb2N1bWVudCAqIFhTRUNTT0FQUmVxdWVzdG9yU2ltcGxlOjpwYXJzZUFuZFVud3JhcChjb25zdCBjaGFyICogYnVmLCB1bnNpZ25lZCBpbnQgbGVuKSB7CisKKwlYZXJjZXNET01QYXJzZXIgKiBwYXJzZXIgPSBuZXcgWGVyY2VzRE9NUGFyc2VyOworCUphbml0b3I8WGVyY2VzRE9NUGFyc2VyPiBqX3BhcnNlcihwYXJzZXIpOworCisJcGFyc2VyLT5zZXREb05hbWVzcGFjZXModHJ1ZSk7CisJcGFyc2VyLT5zZXRDcmVhdGVFbnRpdHlSZWZlcmVuY2VOb2Rlcyh0cnVlKTsKKwlwYXJzZXItPnNldERvU2NoZW1hKHRydWUpOworCisJLy8gQ3JlYXRlIGFuIGlucHV0IHNvdXJjZQorCisJTWVtQnVmSW5wdXRTb3VyY2UqIG1lbUlTID0gbmV3IE1lbUJ1ZklucHV0U291cmNlICgoY29uc3QgWE1MQnl0ZSopIGJ1ZiwgbGVuLCAiWFNFQ01lbSIpOworCUphbml0b3I8TWVtQnVmSW5wdXRTb3VyY2U+IGpfbWVtSVMobWVtSVMpOworCisJcGFyc2VyLT5wYXJzZSgqbWVtSVMpOworICAgIHhzZWNzaXplX3QgZXJyb3JDb3VudCA9IHBhcnNlci0+Z2V0RXJyb3JDb3VudCgpOworICAgIGlmIChlcnJvckNvdW50ID4gMCkKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpIVFRQVVJJSW5wdXRTdHJlYW1FcnJvciwKKwkJCQkJCQkiRXJyb3IgcGFyc2luZyByZXNwb25zZSBtZXNzYWdlIik7CisKKwlpZiAobV9lbnZlbG9wZVR5cGUgPT0gRU5WRUxPUEVfTk9ORSkgeworCisJCXJldHVybiBwYXJzZXItPmFkb3B0RG9jdW1lbnQoKTsKKworCX0KKworICAgIERPTURvY3VtZW50ICogcmVzcG9uc2VEb2MgPSBwYXJzZXItPmdldERvY3VtZW50KCk7CisKKwkvLyBNdXN0IGJlIGEgU09BUCBtZXNzYWdlIG9mIHNvbWUga2luZCAtIHNvIGxldHMgcmVtb3ZlIHRoZSB3cmFwcGVyLgorCS8vIEZpcnN0IGNyZWF0ZSBhIG5ldyBkb2N1bWVudCBmb3IgdGhlIFJlc3BvbnNlIG1lc3NhZ2UKKworCVhNTENoIHRlbXBTdHJbMTAwXTsKKwlYTUxTdHJpbmc6OnRyYW5zY29kZSgiQ29yZSIsIHRlbXBTdHIsIDk5KTsgICAgCisJRE9NSW1wbGVtZW50YXRpb24gKmltcGwgPSBET01JbXBsZW1lbnRhdGlvblJlZ2lzdHJ5OjpnZXRET01JbXBsZW1lbnRhdGlvbih0ZW1wU3RyKTsKKworCURPTURvY3VtZW50ICogcmV0RG9jID0gaW1wbC0+Y3JlYXRlRG9jdW1lbnQoKTsKKworCS8vIEZpbmQgdGhlIGJhc2Ugb2YgdGhlIHJlc3BvbnNlCisKKworCURPTU5vZGUgKiBlID0gcmVzcG9uc2VEb2MtPmdldERvY3VtZW50RWxlbWVudCgpOworCisJZSA9IGUtPmdldEZpcnN0Q2hpbGQoKTsKKworCXdoaWxlIChlICE9IE5VTEwgJiYgKGUtPmdldE5vZGVUeXBlKCkgIT0gRE9NTm9kZTo6RUxFTUVOVF9OT0RFIHx8ICFzdHJFcXVhbHMoZS0+Z2V0TG9jYWxOYW1lKCksICJCb2R5IikpKQorCQllID0gZS0+Z2V0TmV4dFNpYmxpbmcoKTsKKworCWlmIChlID09IE5VTEwpCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SFRUUFVSSUlucHV0U3RyZWFtRXJyb3IsCisJCQkJCQkJIkNvdWxkIG5vdCBmaW5kIFNPQVAgYm9keSIpOworCisJZSA9IGZpbmRGaXJzdENoaWxkT2ZUeXBlKGUsIERPTU5vZGU6OkVMRU1FTlRfTk9ERSk7CisKKwlpZiAoZSA9PSBOVUxMKQorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkhUVFBVUklJbnB1dFN0cmVhbUVycm9yLAorCQkJCQkJCSJDb3VsZCBub3QgZmluZCBtZXNzYWdlIHdpdGhpbiBTT0FQIGJvZHkiKTsKKworCS8qIFNlZSBpZiB0aGlzIGlzIGEgc29hcCBmYXVsdCAqLworCWlmIChzdHJFcXVhbHMoZS0+Z2V0TG9jYWxOYW1lKCksICJGYXVsdCIpKSB7CisKKwkJLy8gU29tZXRoaW5nIGhhcyBnb25lIHdyb25nIHNvbWV3aGVyZSEKKwkJc2FmZUJ1ZmZlciBzYjsKKwkJc2Iuc2JUcmFuc2NvZGVJbigiU09BUCBGYXVsdCA6ICIpOworCisJCS8vIEZpbmQgdGhlIGZhdWx0IGNvZGUKKworCQllID0gZmluZEZpcnN0RWxlbWVudENoaWxkKGUpOworCQl3aGlsZSAoZSAhPSBOVUxMICYmICFzdHJFcXVhbHMoZS0+Z2V0TG9jYWxOYW1lKCksICJDb2RlIikpCisJCQllID0gZmluZE5leHRFbGVtZW50Q2hpbGQoZSk7CisJCQorCQlpZiAoZSAhPSBOVUxMKSB7CisJCQlET01Ob2RlICogYyA9IGZpbmRGaXJzdEVsZW1lbnRDaGlsZChlKTsKKwkJCXdoaWxlIChjICE9IE5VTEwgJiYgIXN0ckVxdWFscyhjLT5nZXRMb2NhbE5hbWUoKSwgIlZhbHVlIikpCisJCQkJYyA9IGZpbmROZXh0RWxlbWVudENoaWxkKGMpOworCQkJaWYgKGMgIT0gTlVMTCkgeworCQkJCURPTU5vZGUgKiB0ID0gZmluZEZpcnN0Q2hpbGRPZlR5cGUoYywgRE9NTm9kZTo6VEVYVF9OT0RFKTsKKwkJCQlpZiAodCAhPSBOVUxMKSB7CisJCQkJCXNiLnNiWE1MQ2hDYXQodC0+Z2V0Tm9kZVZhbHVlKCkpOworCQkJCQlzYi5zYlhNTENoQ2F0KCIgOiAiKTsKKwkJCQl9CisJCQl9CisJCX0KKworCQkvLyBGaW5kIHRoZSByZWFzb24KKwkJd2hpbGUgKGUgIT0gTlVMTCAmJiAhc3RyRXF1YWxzKGUtPmdldExvY2FsTmFtZSgpLCAiUmVhc29uIikpCisJCQllID0gZmluZE5leHRFbGVtZW50Q2hpbGQoZSk7CisKKwkJaWYgKGUgIT0gTlVMTCkgeworCQkJRE9NTm9kZSAqIHQgPSBmaW5kRmlyc3RDaGlsZE9mVHlwZShlLCBET01Ob2RlOjpURVhUX05PREUpOworCQkJaWYgKHQgIT0gTlVMTCkgeworCQkJCXNiLnNiWE1MQ2hDYXQodC0+Z2V0Tm9kZVZhbHVlKCkpOworCQkJfQorCisJCX0KKworCQlyZXREb2MtPnJlbGVhc2UoKTsKKworCQlYU0VDQXV0b1B0ckNoYXIgbXNnKHNiLnJhd1hNTENoQnVmZmVyKCkpOworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SFRUUFVSSUlucHV0U3RyZWFtRXJyb3IsCisJCQkJCQkJbXNnLmdldCgpKTsKKwl9CisKKworCXJldERvYy0+YXBwZW5kQ2hpbGQocmV0RG9jLT5pbXBvcnROb2RlKGUsIHRydWUpKTsKKworCXJldHVybiByZXREb2M7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBFbnZlbG9wZSBUeXBlIGhhbmRsaW5nCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIFhTRUNTT0FQUmVxdWVzdG9yU2ltcGxlOjpzZXRFbnZlbG9wZVR5cGUoZW52ZWxvcGVUeXBlIGV0KSB7CisKKwltX2VudmVsb3BlVHlwZSA9IGV0OworCit9CmRpZmYgLS1naXQgYS9jL3NyYy91dGlscy9YU0VDU09BUFJlcXVlc3RvclNpbXBsZS5ocHAgYi9jL3NyYy91dGlscy9YU0VDU09BUFJlcXVlc3RvclNpbXBsZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY3NWIwYgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3V0aWxzL1hTRUNTT0FQUmVxdWVzdG9yU2ltcGxlLmhwcApAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ1NPQVBSZXF1ZXN0b3JTaW1wbGUgOj0gKFZlcnkpIEJhc2ljIGltcGxlbWVudGF0aW9uIG9mIGEgU09BUAorICogICAgICAgICAgICAgICAgICAgICAgICAgSFRUUCB3cmFwcGVyIGZvciB0ZXN0aW5nIHRoZSBjbGllbnQgY29kZS4KKyAqCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhTRUNTT0FQUkVRVUVTVE9SU0lNUExFX0lOQ0xVREUKKyNkZWZpbmUgWFNFQ1NPQVBSRVFVRVNUT1JTSU1QTEVfSU5DTFVERQorCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1NPQVBSZXF1ZXN0b3IuaHBwPgorCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFVyaS5ocHA+CisKK1hTRUNfREVDTEFSRV9YRVJDRVNfQ0xBU1MoRE9NRG9jdW1lbnQpOworCisvKioKKyAqIEBpbmdyb3VwIHhrbXMKKyAqLworLypcQHsqLworCisvKioKKyAqIEBicmllZiBCYXNpYyBIVFRQIGltcGxlbWVudGF0aW9uIGZvciBTT0FQIFJlcXVlc3RzCisgKgorICogVGhlIFhLTVMgY2xpZW50IGNvZGUgbmVlZHMgdG8gYmUgYWJsZSB0byBjYWxsIG9uIGEgU09BUCByZXF1ZXN0b3IKKyAqIGltcGxlbWVudGF0aW9uIHRoYXQgd2lsbCBoYW5kbGUgd3JhcHBpbmcgdGhlIHJlcXVlc3QgaW4gYSBTT0FQIG1zZworICogYW5kIHRyYW5zcG9ydGluZyBpdCB0byB0aGUgU09BUCBzZXJ2ZXIuICBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgdmVyeQorICogbmFpZXZlIGltcGxlbWVudGF0aW9uIHRoYXQgd3JhcHMgdGhlIG1lc3NhZ2UgYW5kIGRvZXMgYSBiYXNpYworICogSFRUUCBQT1NUIHRvIGdldCB0aGUgbWVzc2FnZSB0byB0aGUgZW5kIHNlcnZlci4KKyAqCisgKi8KKworCitjbGFzcyBEU0lHX0VYUE9SVCBYU0VDU09BUFJlcXVlc3RvclNpbXBsZSA6IHB1YmxpYyBYU0VDU09BUFJlcXVlc3RvciB7CisKK3B1YmxpYyA6CisKKwkvKioKKwkgKiBFbnZlbG9wZSBFbnVtZXJhdGlvbgorCSAqLworCisJZW51bSBlbnZlbG9wZVR5cGUgeworCisJCUVOVkVMT1BFX05PTkUsCQkvKiogTm8gZW52ZWxvcGUgLSBzdHJhaWdodCBIVFRQIHJlcXVlc3QgKi8KKwkJRU5WRUxPUEVfU09BUDExLAkvKiogU09BUCAxLjEgZW52ZWxvcGUgKGRlZmF1bHQpICovCisJCUVOVkVMT1BFX1NPQVAxMgkJLyoqIFNPQVAgMS4yIGVudmVsb3BlICovCisKKwl9OworCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgQ29uc3RydWN0b3IKKwkgKgorCSAqIENyZWF0ZSBhIFNPQVAgcmVxdWVzdG9yIHRoYXQgY2FuIGJlIHVzZWQgdG8gYWNjZXNzIGEgc3BlY2lmaWMKKwkgKiBzZXJ2ZXIKKwkgKgorCSAqIEBwYXJhbSB1cmkgVGhlIFVSSSBvZiB0aGUgc2VydmVyIHRoYXQgd2lsbCBiZSBhY2Nlc3NlZC4KKwkgKiBAbm90ZSBUaGUgVVJJIG11c3QgYmUgaHR0cDovLy4uLgorCSAqLworCisJWFNFQ1NPQVBSZXF1ZXN0b3JTaW1wbGUoY29uc3QgWE1MQ2ggKiB1cmkpOworCXZpcnR1YWwgflhTRUNTT0FQUmVxdWVzdG9yU2ltcGxlKCk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgSW50ZXJmYWNlIG1ldGhvZHMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgRG8gYSBTT0FQIHJlcXVlc3QKKwkgKgorCSAqIFBlcmZvcm1zIGEgcmVxdWVzdCBiYXNlZCBvbiB0aGUgcGFzc2VkIGluIERPTSBkb2N1bWVudCBhbmQKKwkgKiB0aGUgaW5kaWNhdGVkIFVSSS4gIFRoZSBmdW5jdGlvbiBpcyByZXR1cm5zIGEgcG9pbnRlcgorCSAqIHRvIHRoZSBwYXJzZWQgcmVzdWx0IG1lc3NhZ2UgKHdpdGggdGhlIFNPQVAgZW52ZWxvcGUgcmVtb3ZlZCkKKwkgKgorCSAqIEBwYXJhbSByZXF1ZXN0IFRoZSBET00gZG9jdW1lbnQgY29udGFpbmluZyB0aGUgbWVzc2FnZSB0byBiZSAKKwkgKiB3cmFwcGVkIGFuZCBzZW50LgorCSAqIEByZXR1cm5zIFRoZSBET00gZG9jdW1lbnQgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQsIHdpdGggYWxsCisJICogU09BUCBoZWFkZXJzIHJlbW92ZWQKKwkgKi8KKworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICoKKwkJZG9SZXF1ZXN0KFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIHJlcXVlc3QpOworCisJLy9AfQorCisJLyoqIEBuYW1lIENvbmZpZ3VyYXRpb24gbWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBTZXQgdGhlIGVudmVsb3BlIHR5cGUKKwkgKgorCSAqIFRoZSByZXF1ZXN0b3IgY2FuIGRvIGEgU09BUCAxLjEsIFNPQVAgMS4yIG9yIG5vIGVudmVsb3BlIGFyb3VuZCB0aGUKKwkgKiBtZXNzYWdlLiAgVGhpcyBjYWxsIGFsbG93cyB0aGUgYXBsbGljYXRpb24gdG8gc2V0IHRoZSB0eXBlLgorCSAqCisJICogQnkgZGVmYXVsdCwgdGhlIHJlcXVlc3RvciB1c2VzIGEgU09BUCAxLjEgZW52ZWxvcGUKKwkgKgorCSAqIEBwYXJhbSBldCAtIHRoZSB0eXBlIG9mIGVudmVsb3BlIHRvIHVzZQorCSAqLworCisJdm9pZCBzZXRFbnZlbG9wZVR5cGUoZW52ZWxvcGVUeXBlIGV0KTsKKworCitwcml2YXRlOgorCisJY2hhciAqIHdyYXBBbmRTZXJpYWxpc2UoWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogcmVxdWVzdCk7CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICoKKwkJcGFyc2VBbmRVbndyYXAoY29uc3QgY2hhciAqIGJ1ZiwgdW5zaWduZWQgaW50IGxlbik7CisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgWE1MVXJpCQkJCisJCQkJCQltX3VyaTsKKworCWVudmVsb3BlVHlwZQkJbV9lbnZlbG9wZVR5cGU7CisKK307CisKKworI2VuZGlmIC8qIFhTRUNTT0FQUkVRVUVTVE9SU0lNUExFX0lOQ0xVREUgKi8KKwpkaWZmIC0tZ2l0IGEvYy9zcmMvdXRpbHMvWFNFQ1NhZmVCdWZmZXIuY3BwIGIvYy9zcmMvdXRpbHMvWFNFQ1NhZmVCdWZmZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwZmM1OTQKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy91dGlscy9YU0VDU2FmZUJ1ZmZlci5jcHAKQEAgLTAsMCArMSw3MDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDEwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNTYWZlQnVmZmVyIDo9IGEgY2xhc3MgZm9yIHN0b3JpbmcgZXhwYW5kaW5nIGFtb3VudHMgb2YgaW5mb3JtYXRpb24uCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisvLyBYU0VDIGluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNTYWZlQnVmZmVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNQmFzZS5ocHA+CisKKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MVW5pRGVmcy5ocHA+CisKK1hTRUNfVVNJTkdfWEVSQ0VTKFhNTFN0cmluZyk7CisKKy8vIFN0YW5kYXJkIGluY2x1ZGVzCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworc2l6ZV90IHNhZmVCdWZmZXI6OnNpemVfWE1MQ2g7CisKKyNpZiBkZWZpbmVkIChfTVNDX1ZFUikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MzExKQorI2VuZGlmCisKK3ZvaWQgc2FmZUJ1ZmZlcjo6Y2hlY2tBbmRFeHBhbmQoeHNlY3NpemVfdCBzaXplKSB7CisKKwkvLyBGb3IgYSBnaXZlbiBzaXplLCBjaGVjayBpdCB3aWxsIGZpdCAod2l0aCBvbmUgYnl0ZSBzcGFyZSkKKwkvLyBhbmQgZXhwYW5kIGlmIG5lY2Vzc2FyeQorCisJaWYgKHNpemUgKyAxIDwgYnVmZmVyU2l6ZSkKKwkJcmV0dXJuOworCisJLy8gTWFrZSB0aGUgbmV3IHNpemUgdHdpY2UgdGhlIHNpemUgb2YgdGhlIG5ldyBzdHJpbmcgcmVxdWlyZW1lbnQKKwl4c2Vjc2l6ZV90IG5ld0J1ZmZlclNpemUgPSBzaXplICogMjsKKworCXVuc2lnbmVkIGNoYXIgKiBuZXdCdWZmZXIgPSBuZXcgdW5zaWduZWQgY2hhcltuZXdCdWZmZXJTaXplXTsKKwltZW1zZXQoKHZvaWQgKikgbmV3QnVmZmVyLCAwLCBuZXdCdWZmZXJTaXplKTsKKwltZW1jcHkobmV3QnVmZmVyLCBidWZmZXIsIGJ1ZmZlclNpemUpOworCisJLy8gSWYgd2UgYXJlIHNlbnNpdGl2ZSwgY2xlYW4gdGhlIG9sZCBidWZmZXIKKwlpZiAobV9pc1NlbnNpdGl2ZSA9PSB0cnVlKQorCQljbGVhbnNlQnVmZmVyKCk7CisKKwkvLyBjbGVhbiB1cAorCWJ1ZmZlclNpemUgPSBuZXdCdWZmZXJTaXplOworCWRlbGV0ZVtdIGJ1ZmZlcjsKKwlidWZmZXIgPSBuZXdCdWZmZXI7CisKK30KKwordm9pZCBzYWZlQnVmZmVyOjpjaGVja0J1ZmZlclR5cGUoYnVmZmVyVHlwZSBidCkgY29uc3QgeworCisJaWYgKGJ0ICE9IG1fYnVmZmVyVHlwZSkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6U2FmZUJ1ZmZlckVycm9yLAorCQkJIkF0dGVtcHQgdG8gcGVyZm9ybSBhbiBvcGVyYXRpb24gb24gYSBidWZmZXIgb2YgaW5jb3JyZWN0IHR5cGUiKTsKKwl9CisKK30KKworCit2b2lkIHNhZmVCdWZmZXI6OnNldEJ1ZmZlclR5cGUoYnVmZmVyVHlwZSBidCkgeworCisJbV9idWZmZXJUeXBlID0gYnQ7CisKK30KKwordm9pZCBzYWZlQnVmZmVyOjpyZXNpemUoeHNlY3NpemVfdCBzeikgeworCisJY2hlY2tBbmRFeHBhbmQoc3opOworCit9CisKK3NhZmVCdWZmZXI6OnNhZmVCdWZmZXIoeHNlY3NpemVfdCBpbml0aWFsU2l6ZSkgeworCisJLy8gSW5pdGlhbGlzZSB0aGUgYnVmZmVyIHdpdGggYSBzZXQgc2l6ZSBzdHJpbmcKKworCWJ1ZmZlclNpemUgPSBpbml0aWFsU2l6ZTsKKwlidWZmZXIgPSBuZXcgdW5zaWduZWQgY2hhcltpbml0aWFsU2l6ZV07CisJbWVtc2V0KCh2b2lkICopIGJ1ZmZlciwgMCwgYnVmZmVyU2l6ZSk7CisJbXBfWE1MQ2ggPSBOVUxMOworCW1faXNTZW5zaXRpdmUgPSBmYWxzZTsKKworfQorCitzYWZlQnVmZmVyOjpzYWZlQnVmZmVyKCkgeworCisJYnVmZmVyU2l6ZSA9IERFRkFVTFRfU0FGRV9CVUZGRVJfU0laRTsKKwlidWZmZXIgPSBuZXcgdW5zaWduZWQgY2hhcltidWZmZXJTaXplXTsKKwltZW1zZXQoKHZvaWQgKikgYnVmZmVyLCAwLCBidWZmZXJTaXplKTsKKwltcF9YTUxDaCA9IE5VTEw7CisJbV9idWZmZXJUeXBlID0gQlVGRkVSX1VOS05PV047CisJbV9pc1NlbnNpdGl2ZSA9IGZhbHNlOworCit9CisKK3NhZmVCdWZmZXI6OnNhZmVCdWZmZXIoY29uc3QgY2hhciAqIGluU3RyLCB4c2Vjc2l6ZV90IGluaXRpYWxTaXplKSB7CisgICAgLy8gSW5pdGlhbGlzZSB3aXRoIGEgc3RyaW5nCisgICAgYnVmZmVyU2l6ZSA9ICgoeHNlY3NpemVfdCkgc3RybGVuKGluU3RyKSA+IGluaXRpYWxTaXplID8gKHhzZWNzaXplX3QpIChzdHJsZW4oaW5TdHIpICogMikgOiBpbml0aWFsU2l6ZSk7CisKKwlidWZmZXIgPSBuZXcgdW5zaWduZWQgY2hhcltidWZmZXJTaXplXTsKKwltZW1zZXQoKHZvaWQgKikgYnVmZmVyLCAwLCBidWZmZXJTaXplKTsKKwlzdHJjcHkoKGNoYXIgKikgYnVmZmVyLCBpblN0cik7CisJbXBfWE1MQ2ggPSBOVUxMOworCW1fYnVmZmVyVHlwZSA9IEJVRkZFUl9DSEFSOworCW1faXNTZW5zaXRpdmUgPSBmYWxzZTsKKworfQorCitzYWZlQnVmZmVyOjpzYWZlQnVmZmVyKGNvbnN0IHNhZmVCdWZmZXIgJiBvdGhlcikgeworCisJLy8gQ29weSBjb25zdHJ1Y3RvcgorCisJYnVmZmVyU2l6ZSA9IG90aGVyLmJ1ZmZlclNpemU7CisJYnVmZmVyID0gbmV3IHVuc2lnbmVkIGNoYXIgW2J1ZmZlclNpemVdOworCisJbWVtY3B5KGJ1ZmZlciwgb3RoZXIuYnVmZmVyLCBidWZmZXJTaXplKTsKKworCWlmIChvdGhlci5tcF9YTUxDaCAhPSBOVUxMKSB7CisKKwkJbXBfWE1MQ2ggPSBYTUxTdHJpbmc6OnJlcGxpY2F0ZShvdGhlci5tcF9YTUxDaCk7CisKKwl9CisJZWxzZSB7CisKKwkJbXBfWE1MQ2ggPSBOVUxMOworCisJfQorCisJbV9idWZmZXJUeXBlID0gb3RoZXIubV9idWZmZXJUeXBlOworCW1faXNTZW5zaXRpdmUgPSBvdGhlci5tX2lzU2Vuc2l0aXZlOworCit9CisKK3NhZmVCdWZmZXI6On5zYWZlQnVmZmVyKCkgeworCisKKwlpZiAoYnVmZmVyICE9IE5VTEwpIHsKKwkJaWYgKG1faXNTZW5zaXRpdmUgPT0gdHJ1ZSkKKwkJCWNsZWFuc2VCdWZmZXIoKTsKKwkJZGVsZXRlW10gYnVmZmVyOworCX0KKworCWlmIChtcF9YTUxDaCAhPSBOVUxMKQorCQlYU0VDX1JFTEVBU0VfWE1MQ0gobXBfWE1MQ2gpOworCit9CisKK3ZvaWQgc2FmZUJ1ZmZlcjo6aW5pdCAodm9pZCkgeworCisJc2l6ZV9YTUxDaCA9IHNpemVvZihYTUxDaCk7CisKK30KKworLy8gIklOIiBmdW5jdGlvbnMgLSB0aGVzZSByZWFkIGluIGluZm9ybWF0aW9uIHRvIHRoZSBidWZmZXIKKwordm9pZCBzYWZlQnVmZmVyOjpzYlN0cmNweUluKGNvbnN0IGNoYXIgKiBpblN0cikgeworCisJLy8gQ29weSBhIHN0cmluZyBpbnRvIHRoZSBzYWZlIGJ1ZmZlcgorICAgIGNoZWNrQW5kRXhwYW5kKCh4c2Vjc2l6ZV90KSBzdHJsZW4oaW5TdHIpKTsKKwlzdHJjcHkoKGNoYXIgKikgYnVmZmVyLCBpblN0cik7CisJbV9idWZmZXJUeXBlID0gQlVGRkVSX0NIQVI7CisKK30KKwordm9pZCBzYWZlQnVmZmVyOjpzYlN0cmNweUluKGNvbnN0IHNhZmVCdWZmZXIgJiBpblN0cikgeworCisJaW5TdHIuY2hlY2tCdWZmZXJUeXBlKEJVRkZFUl9DSEFSKTsKKyAgICBjaGVja0FuZEV4cGFuZCgoeHNlY3NpemVfdCkgc3RybGVuKChjaGFyICopIGluU3RyLmJ1ZmZlcikpOworCXN0cmNweSgoY2hhciAqKSBidWZmZXIsIChjaGFyICopIGluU3RyLmJ1ZmZlcik7CisJbV9idWZmZXJUeXBlID0gQlVGRkVSX0NIQVI7CisKK30KKworCit2b2lkIHNhZmVCdWZmZXI6OnNiU3RybmNweUluKGNvbnN0IGNoYXIgKiBpblN0ciwgeHNlY3NpemVfdCBuKSB7CisgICAgeHNlY3NpemVfdCBsZW4gPSAoeHNlY3NpemVfdCkgc3RybGVuKGluU3RyKTsKKwljaGVja0FuZEV4cGFuZCgobiA8IGxlbikgPyBuIDogbGVuKTsKKwlzdHJuY3B5KChjaGFyICopIGJ1ZmZlciwgaW5TdHIsIG4pOworCW1fYnVmZmVyVHlwZSA9IEJVRkZFUl9DSEFSOworCit9CisKK3ZvaWQgc2FmZUJ1ZmZlcjo6c2JTdHJuY3B5SW4oY29uc3Qgc2FmZUJ1ZmZlciAmIGluU3RyLCB4c2Vjc2l6ZV90IG4pIHsKKworCWluU3RyLmNoZWNrQnVmZmVyVHlwZShCVUZGRVJfQ0hBUik7CisJY2hlY2tBbmRFeHBhbmQobik7CisJc3RybmNweSgoY2hhciAqKSBidWZmZXIsIChjaGFyICopIGluU3RyLmJ1ZmZlciwgbik7CisJYnVmZmVyW25dID0gJ1wwJzsKKwltX2J1ZmZlclR5cGUgPSBCVUZGRVJfQ0hBUjsKKworCit9CisKKwordm9pZCBzYWZlQnVmZmVyOjpzYlN0cmNhdEluKGNvbnN0IGNoYXIgKiBpblN0cikgeworCisJY2hlY2tCdWZmZXJUeXBlKEJVRkZFUl9DSEFSKTsKKyAgICBjaGVja0FuZEV4cGFuZCgoeHNlY3NpemVfdCkgKHN0cmxlbigoY2hhciAqKSBidWZmZXIpICsgc3RybGVuKGluU3RyKSkpOworCXN0cmNhdCgoY2hhciAqKSBidWZmZXIsIGluU3RyKTsKKworfQorCit2b2lkIHNhZmVCdWZmZXI6OnNiU3RyY2F0SW4oY29uc3Qgc2FmZUJ1ZmZlciAmIGluU3RyKSB7CisKKwljaGVja0J1ZmZlclR5cGUoQlVGRkVSX0NIQVIpOworICAgIGNoZWNrQW5kRXhwYW5kKCh4c2Vjc2l6ZV90KSAoc3RybGVuKChjaGFyICopIGJ1ZmZlcikgKyBzdHJsZW4oKGNoYXIgKikgaW5TdHIuYnVmZmVyKSArIDIpKTsKKwlzdHJjYXQoKGNoYXIgKikgYnVmZmVyLCAoY2hhciAqKSBpblN0ci5idWZmZXIpOworCit9CisKK3ZvaWQgc2FmZUJ1ZmZlcjo6c2JTdHJuY2F0SW4oY29uc3QgY2hhciAqIGluU3RyLCB4c2Vjc2l6ZV90IG4pIHsKKyAgICBjaGVja0J1ZmZlclR5cGUoQlVGRkVSX0NIQVIpOworICAgIHhzZWNzaXplX3QgbGVuID0gKHhzZWNzaXplX3QpIHN0cmxlbihpblN0cik7CisgICAgY2hlY2tBbmRFeHBhbmQoKChuIDwgbGVuKSA/IG4gOiBsZW4pICsgKHhzZWNzaXplX3QpIHN0cmxlbigoY2hhciAqKSBidWZmZXIpICsgMik7CisJc3RybmNhdCgoY2hhciAqKSBidWZmZXIsIGluU3RyLCBuKTsKKworfQorCit2b2lkIHNhZmVCdWZmZXI6OnNiTWVtY3B5SW4oY29uc3Qgdm9pZCAqIGluQnVmLCB4c2Vjc2l6ZV90IG4pIHsKKworCWNoZWNrQW5kRXhwYW5kKG4pOworCW1lbWNweShidWZmZXIsIGluQnVmLCBuKTsKKwltX2J1ZmZlclR5cGUgPSBCVUZGRVJfVU5LTk9XTjsKKworfQorCit2b2lkIHNhZmVCdWZmZXI6OnNiTWVtY3B5SW4oeHNlY3NpemVfdCBvZmZzZXQsIGNvbnN0IHZvaWQgKiBpbkJ1ZiwgeHNlY3NpemVfdCBuKSB7CisKKwljaGVja0FuZEV4cGFuZChuICsgb2Zmc2V0KTsKKwltZW1jcHkoJmJ1ZmZlcltvZmZzZXRdLCBpbkJ1Ziwgbik7CisJbV9idWZmZXJUeXBlID0gQlVGRkVSX1VOS05PV047Cit9CisKK3ZvaWQgc2FmZUJ1ZmZlcjo6c2JTdHJpbnNJbihjb25zdCBjaGFyICogaW5TdHIsIHhzZWNzaXplX3Qgb2Zmc2V0KSB7CisKKyAgICBjaGVja0J1ZmZlclR5cGUoQlVGRkVSX0NIQVIpOworCisgICAgeHNlY3NpemVfdCBibCA9ICh4c2Vjc2l6ZV90KSBzdHJsZW4oKGNoYXIgKikgYnVmZmVyKTsKKyAgICB4c2Vjc2l6ZV90IGlsID0gKHhzZWNzaXplX3QpIHN0cmxlbigoY2hhciAqKSBpblN0cik7CisKKwlpZiAob2Zmc2V0ID4gYmwpIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpTYWZlQnVmZmVyRXJyb3IsCisJCQkiQXR0ZW1wdCB0byBpbnNlcnQgc3RyaW5nIGFmdGVyIHRlcm1pbmF0aW9uIHBvaW50Iik7CisJfQorCisJY2hlY2tBbmRFeHBhbmQoYmwgKyBpbCk7CisKKwltZW1tb3ZlKCZidWZmZXJbb2Zmc2V0ICsgaWxdLCAmYnVmZmVyW29mZnNldF0sIGJsIC0gb2Zmc2V0ICsgMSk7CisJbWVtY3B5KCZidWZmZXJbb2Zmc2V0XSwgaW5TdHIsIGlsKTsKKworfQorCit2b2lkIHNhZmVCdWZmZXI6OnNiU3RyaW5zSW4oY29uc3QgWE1MQ2ggKiBpblN0ciwgeHNlY3NpemVfdCBvZmZzZXQpIHsKKworICAgIGNoZWNrQnVmZmVyVHlwZShCVUZGRVJfVU5JQ09ERSk7CisKKyAgICB4c2Vjc2l6ZV90IGJsID0gWE1MU3RyaW5nOjpzdHJpbmdMZW4oKFhNTENoICopIGJ1ZmZlcikgKiBzaXplX1hNTENoOworICAgIHhzZWNzaXplX3QgaWwgPSBYTUxTdHJpbmc6OnN0cmluZ0xlbigoWE1MQ2ggKikgaW5TdHIpICogc2l6ZV9YTUxDaDsKKworICAgIHhzZWNzaXplX3QgeG9mZnNldCA9IG9mZnNldCAqIHNpemVfWE1MQ2g7CisJaWYgKHhvZmZzZXQgPiBibCkgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlNhZmVCdWZmZXJFcnJvciwKKwkJCSJBdHRlbXB0IHRvIGluc2VydCBzdHJpbmcgYWZ0ZXIgdGVybWluYXRpb24gcG9pbnQiKTsKKwl9CisKKwljaGVja0FuZEV4cGFuZChibCArIGlsKTsKKworCW1lbW1vdmUoJmJ1ZmZlclt4b2Zmc2V0ICsgaWxdLCAmYnVmZmVyW3hvZmZzZXRdLCBibCAtIHhvZmZzZXQgKyBzaXplX1hNTENoKTsKKwltZW1jcHkoJmJ1ZmZlclt4b2Zmc2V0XSwgaW5TdHIsIGlsKTsKKworfQorCisKK3ZvaWQgc2FmZUJ1ZmZlcjo6c2JNZW1jcHlPdXQodm9pZCAqb3V0QnVmLCB4c2Vjc2l6ZV90IG4pIGNvbnN0IHsKKworCS8vIFdBUk5JTkcgLSBKVVNUIEFTU1VNRVMgT1VUUFVUIEJVRkZFUiBMT05HIEVOT1VHSAorCS8vIEFMU08gTUFLRVMgTk8gQVNTVU1QVElPTiBPRiBUSEUgQlVGRkVSIFRZUEUKKworCW1lbWNweShvdXRCdWYsIGJ1ZmZlciwgbik7CisKK30KKwordm9pZCBzYWZlQnVmZmVyOjpzYk1lbXNoaWZ0KHhzZWNzaXplX3QgdG9PZmZzZXQsIHhzZWNzaXplX3QgZnJvbU9mZnNldCwgeHNlY3NpemVfdCBsZW4pIHsKKworCS8vIE1vdmUgZGF0YSBpbiB0aGUgYnVmZmVyIGFyb3VuZAorCWNoZWNrQW5kRXhwYW5kKGxlbiArICh0b09mZnNldCA+IGZyb21PZmZzZXQgPyB0b09mZnNldCA6IGZyb21PZmZzZXQpKTsKKworCW1lbW1vdmUoJmJ1ZmZlclt0b09mZnNldF0sICZidWZmZXJbZnJvbU9mZnNldF0sIGxlbik7CisKK30KKworCisvLyBDb21wYXJpc29ucworCitpbnQgc2FmZUJ1ZmZlcjo6c2JTdHJuY21wKGNvbnN0IGNoYXIgKmluU3RyLCB4c2Vjc2l6ZV90IG4pIGNvbnN0IHsKKworCWNoZWNrQnVmZmVyVHlwZShCVUZGRVJfQ0hBUik7CisJcmV0dXJuIChzdHJuY21wKChjaGFyICopIGJ1ZmZlciwgaW5TdHIsIG4pKTsKKworfQorCitpbnQgc2FmZUJ1ZmZlcjo6c2JTdHJjbXAoY29uc3QgY2hhciAqaW5TdHIpIGNvbnN0IHsKKworCWNoZWNrQnVmZmVyVHlwZShCVUZGRVJfQ0hBUik7CisJcmV0dXJuIChzdHJjbXAoKGNoYXIgKikgYnVmZmVyLCBpblN0cikpOworCit9CisKK2ludCBzYWZlQnVmZmVyOjpzYlN0cmNtcChjb25zdCBzYWZlQnVmZmVyICYgaW5TdHIpIGNvbnN0IHsKKworCWNoZWNrQnVmZmVyVHlwZShCVUZGRVJfQ0hBUik7CisJcmV0dXJuIChzdHJjbXAoKGNoYXIgKikgYnVmZmVyLCAoY2hhciAqKSBpblN0ci5idWZmZXIpKTsKKworfQorCitpbnQgc2FmZUJ1ZmZlcjo6c2JPZmZzZXRTdHJjbXAoY29uc3QgY2hhciAqIGluU3RyLCB4c2Vjc2l6ZV90IG9mZnNldCkgY29uc3QgeworCisgICAgY2hlY2tCdWZmZXJUeXBlKEJVRkZFUl9DSEFSKTsKKyAgICB4c2Vjc2l6ZV90IGJsID0gKHhzZWNzaXplX3QpIHN0cmxlbigoY2hhciAqKSBidWZmZXIpOworCisJaWYgKG9mZnNldCA+IGJsKQorCQlyZXR1cm4gLTE7CisKKwlyZXR1cm4gKHN0cmNtcCgoY2hhciAqKSAmYnVmZmVyW29mZnNldF0sIGluU3RyKSk7CisKK30KKworaW50IHNhZmVCdWZmZXI6OnNiT2Zmc2V0U3RybmNtcChjb25zdCBjaGFyICogaW5TdHIsIHhzZWNzaXplX3Qgb2Zmc2V0LCB4c2Vjc2l6ZV90IG4pIGNvbnN0IHsKKworICAgIGNoZWNrQnVmZmVyVHlwZShCVUZGRVJfQ0hBUik7CisgICAgeHNlY3NpemVfdCBibCA9ICh4c2Vjc2l6ZV90KSBzdHJsZW4oKGNoYXIgKikgYnVmZmVyKTsKKwlpZiAob2Zmc2V0ID4gYmwpCisJCXJldHVybiAtMTsKKworCXJldHVybiAoc3RybmNtcCgoY2hhciAqKSAmYnVmZmVyW29mZnNldF0sIGluU3RyLCBuKSk7CisKK30KKworI2lmZGVmIFhTRUNfWEVSQ0VTXzY0QklUU0FGRQorbG9uZyBzYWZlQnVmZmVyOjpzYlN0cnN0cihjb25zdCBjaGFyICogaW5TdHIpIGNvbnN0IHsKKyNlbHNlCitpbnQgc2FmZUJ1ZmZlcjo6c2JTdHJzdHIoY29uc3QgY2hhciAqIGluU3RyKSBjb25zdCB7CisjZW5kaWYKKworCWNoZWNrQnVmZmVyVHlwZShCVUZGRVJfQ0hBUik7CisJY2hhciogcCA9IHN0cnN0cigoY2hhciAqKSBidWZmZXIsIGluU3RyKTsKKworCWlmIChwID09IE5VTEwpCisJCXJldHVybiAtMTsKKworCWxvbmcgZCA9ICh1bnNpZ25lZCBsb25nKSBwIC0gKHVuc2lnbmVkIGxvbmcpIGJ1ZmZlcjsKKwlpZiAoZCA8IDAgfHwgZCA+IGJ1ZmZlclNpemUpCisJCXJldHVybiAtMTsKKworCXJldHVybiBkOworCit9CisKKyNpZmRlZiBYU0VDX1hFUkNFU182NEJJVFNBRkUKK2xvbmcgc2FmZUJ1ZmZlcjo6c2JTdHJzdHIoY29uc3QgWE1MQ2ggKiBpblN0cikgY29uc3QgeworI2Vsc2UKK2ludCBzYWZlQnVmZmVyOjpzYlN0cnN0cihjb25zdCBYTUxDaCAqIGluU3RyKSBjb25zdCB7CisjZW5kaWYKKworCWNoZWNrQnVmZmVyVHlwZShCVUZGRVJfVU5JQ09ERSk7CisJWE1MQ2gqIHAgPSBYTUxTdHJpbmc6OmZpbmRBbnkoKFhNTENoICopIGJ1ZmZlciwgaW5TdHIpOworCisJaWYgKHAgPT0gTlVMTCkKKwkJcmV0dXJuIC0xOworCisJbG9uZyBkID0gKCh1bnNpZ25lZCBsb25nKSAoKHAgLSAodW5zaWduZWQgbG9uZykgYnVmZmVyKSkgLyBzaXplX1hNTENoKTsKKwlpZiAoZCA8IDAgfHwgZCA+IGJ1ZmZlclNpemUpCisJCXJldHVybiAtMTsKKworCXJldHVybiBkOworCit9CisKKyNpZmRlZiBYU0VDX1hFUkNFU182NEJJVFNBRkUKK2xvbmcgc2FmZUJ1ZmZlcjo6c2JPZmZzZXRTdHJzdHIoY29uc3QgY2hhciAqIGluU3RyLCB4c2Vjc2l6ZV90IG9mZnNldCkgY29uc3QgeworI2Vsc2UKK2ludCBzYWZlQnVmZmVyOjpzYk9mZnNldFN0cnN0cihjb25zdCBjaGFyICogaW5TdHIsIHhzZWNzaXplX3Qgb2Zmc2V0KSBjb25zdCB7CisjZW5kaWYKKworCWNoZWNrQnVmZmVyVHlwZShCVUZGRVJfQ0hBUik7CisJeHNlY3NpemVfdCBibCA9ICh4c2Vjc2l6ZV90KSBzdHJsZW4oKGNoYXIgKikgYnVmZmVyKTsKKworCWlmIChvZmZzZXQgPiBibCkKKwkJcmV0dXJuIC0xOworCisJY2hhciogcCA9IHN0cnN0cigoY2hhciAqKSAmYnVmZmVyW29mZnNldF0sIGluU3RyKTsKKworCWlmIChwID09IE5VTEwpCisJCXJldHVybiAtMTsKKworCWxvbmcgZCA9ICh1bnNpZ25lZCBsb25nKSBwIC0gKHVuc2lnbmVkIGxvbmcpIGJ1ZmZlcjsKKwlpZiAoZCA8IDAgfHwgZCA+IGJ1ZmZlclNpemUpCisJCXJldHVybiAtMTsKKworCXJldHVybiBkOworCit9CisKKy8vIFhNTENoIGFuZCBjaGFyIGNvbW1vbiBmdW5jdGlvbnMKKwordm9pZCBzYWZlQnVmZmVyOjpzYlN0cmx3cih2b2lkKSB7CisKKwlpZiAobV9idWZmZXJUeXBlID09IEJVRkZFUl9VTktOT1dOKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpTYWZlQnVmZmVyRXJyb3IsCisJCQkiQXR0ZW1wdCB0byBwZXJmb3JtIGFuIG9wZXJhdGlvbiBvbiBhIGJ1ZmZlciBvZiBpbmNvcnJlY3QgdHlwZSIpOworCisJfQorCisJaWYgKG1fYnVmZmVyVHlwZSA9PSBCVUZGRVJfQ0hBUikgeworCisJICAgIHhzZWNzaXplX3QgaSwgbCA9ICh4c2Vjc2l6ZV90KSBzdHJsZW4oKGNoYXIgKikgYnVmZmVyKTsKKworCQlmb3IgKGkgPSAwOyBpIDwgbDsgKytpKSB7CisJCQlpZiAoYnVmZmVyW2ldID49ICdBJyAmJiBidWZmZXJbaV0gPD0gJ1onKQorCQkJCWJ1ZmZlcltpXSA9IChidWZmZXJbaV0gLSAnQScpICsgJ2EnOworCQl9CisKKwl9CisKKwllbHNlIHsKKworCQlYTUxDaCAqIGIgPSAoWE1MQ2ggKikgYnVmZmVyOworCQl4c2Vjc2l6ZV90IGksIGwgPSBYTUxTdHJpbmc6OnN0cmluZ0xlbihiKTsKKworCQlmb3IgKGkgPSAwOyBpIDwgbDsgKytpKSB7CisJCQlpZiAoYltpXSA+PSBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgY2hMYXRpbl9BICYmIGJbaV0gPD0gWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoTGF0aW5fWikKKwkJCQliW2ldID0gKGJbaV0gLSBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgY2hMYXRpbl9BKSArIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBjaExhdGluX2E7CisJCX0KKworCX0KKworfQorLy8gT3BlcmF0b3JzCisKK3Vuc2lnbmVkIGNoYXIgJiBzYWZlQnVmZmVyOjpvcGVyYXRvcltdKHhzZWNzaXplX3QgbikgeworCisJLy8gSWYgdGhlIGNoYXJhY3RlciBpcyBvdXRzaWRlIG91ciByYW5nZSAoYnV0ICt2ZSksIHRoZW4gc2ltcGx5IGluY3JlYXNlCisJLy8gdGhlIGJ1ZmZlciBzaXplIC0gTk9URTogaXQgaXMgbm90IG91ciBwcm9ibGVtIGlmIHRoZSBjYWxsZXIgZG9lcworCS8vIG5vdCByZWFsaXNlIHRoZXkgYXJlIG91dHNpZGUgdGhlIGJ1ZmZlciwgd2UgYXJlIHNpbXBseSB0cnlpbmcgdG8gZW5zdXJlCisJLy8gdGhlIGNhbGwgaXMgInNhZmUiCisKKwljaGVja0FuZEV4cGFuZChuKTsKKworCXJldHVybiBidWZmZXJbbl07CisKK30KKworc2FmZUJ1ZmZlciAmIHNhZmVCdWZmZXI6Om9wZXJhdG9yPSAoY29uc3Qgc2FmZUJ1ZmZlciAmIGNweSkgeworCisJaWYgKGJ1ZmZlclNpemUgIT0gY3B5LmJ1ZmZlclNpemUpIHsKKworCQlpZiAoYnVmZmVyU2l6ZSAhPSAwKSB7CisKKwkJCWlmIChtX2lzU2Vuc2l0aXZlID09IHRydWUpCisJCQkJY2xlYW5zZUJ1ZmZlcigpOworCisJCQlkZWxldGUgW10gYnVmZmVyOworCQl9CisKKwkJYnVmZmVyID0gbmV3IHVuc2lnbmVkIGNoYXIgW2NweS5idWZmZXJTaXplXTsKKwkJYnVmZmVyU2l6ZSA9IGNweS5idWZmZXJTaXplOworCisJfQorCisJbWVtY3B5KGJ1ZmZlciwgY3B5LmJ1ZmZlciwgYnVmZmVyU2l6ZSk7CisJbV9idWZmZXJUeXBlID0gY3B5Lm1fYnVmZmVyVHlwZTsKKwkvLyBPbmNlIHdlIGFyZSBzZW5zaXRpdmUsIHdlIGFyZSBhbHdheXMgc2Vuc2l0aXZlCisJbV9pc1NlbnNpdGl2ZSA9IG1faXNTZW5zaXRpdmUgfHwgY3B5Lm1faXNTZW5zaXRpdmU7CisKKwlyZXR1cm4gKnRoaXM7Cit9CisKK3NhZmVCdWZmZXIgJiBzYWZlQnVmZmVyOjpvcGVyYXRvcj0gKGNvbnN0IFhNTENoICogaW5TdHIpIHsKKworCWNoZWNrQW5kRXhwYW5kKFhNTFN0cmluZzo6c3RyaW5nTGVuKGluU3RyKSAqIHNpemVfWE1MQ2gpOworCVhNTFN0cmluZzo6Y29weVN0cmluZygoWE1MQ2ggKikgYnVmZmVyLCBpblN0cik7CisJbV9idWZmZXJUeXBlID0gQlVGRkVSX1VOSUNPREU7CisJcmV0dXJuICp0aGlzOworCit9CisKK3NhZmVCdWZmZXIgJiBzYWZlQnVmZmVyOjpvcGVyYXRvciA8PCAoVFhGTUJhc2UgKiB0KSB7CisKKwkvLyBSZWFkIGludG8gYnVmZmVyIHRoZSBvdXRwdXQgb2YgdGhlIHRyYW5zZm9ybQorCXhzZWNzaXplX3Qgb2Zmc2V0ID0gMDsKKwl1bnNpZ25lZCBjaGFyIGluQnVmWzIwNDhdOworCXhzZWNzaXplX3QgYnl0ZXNSZWFkOworCisJd2hpbGUgKChieXRlc1JlYWQgPSB0LT5yZWFkQnl0ZXMoaW5CdWYsIDIwMDApKSA+IDApIHsKKworCQljaGVja0FuZEV4cGFuZChvZmZzZXQgKyBieXRlc1JlYWQgKyAxKTsKKwkJbWVtY3B5KCZidWZmZXJbb2Zmc2V0XSwgaW5CdWYsIGJ5dGVzUmVhZCk7CisJCW9mZnNldCArPSBieXRlc1JlYWQ7CisKKwl9CisKKwltX2J1ZmZlclR5cGUgPSBCVUZGRVJfQ0hBUjsKKwlidWZmZXJbb2Zmc2V0XSA9ICdcMCc7CisKKwlyZXR1cm4gKnRoaXM7Cit9CisKKworLy8gVW5pY29kZSBGdW5jdGlvbnMKKworY29uc3QgWE1MQ2ggKiBzYWZlQnVmZmVyOjpzYlN0clRvWE1MQ2godm9pZCkgY29uc3QgeworCisJY2hlY2tCdWZmZXJUeXBlKEJVRkZFUl9DSEFSKTsKKwlpZiAobXBfWE1MQ2ggIT0gTlVMTCkKKwkJWFNFQ19SRUxFQVNFX1hNTENIKG1wX1hNTENoKTsKKworCW1wX1hNTENoID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoKGNoYXIgKikgYnVmZmVyKTsKKworCXJldHVybiBtcF9YTUxDaDsKKworfQorCit2b2lkIHNhZmVCdWZmZXI6OnNiVHJhbnNjb2RlSW4oY29uc3QgWE1MQ2ggKiBpblN0cikgeworCisJLy8gVHJhbnNjb2RlIHRoZSBzdHJpbmcgdG8gdGhlIGxvY2FsIGNvZGUgcGFnZSBhbmQgc3RvcmUgaW4gdGhlIGJ1ZmZlcgorCWNoYXIgKiB0OworCisJdCA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKGluU3RyKTsKKworCWFzc2VydCAodCAhPSAwKTsKKworCisJLy8gTm93IGNvcHkgaW50byBvdXIgbG9jYWwgYnVmZmVyIC0gYSBiaXQgaW5lZmZpY2llbnQgYnV0IGJldHRlciBpbiB0aGUgbG9uZyBydW4KKwkvLyBhcyBhIGJ1ZmZlciB0aGF0IGlzIHRoZSBleGFjdCBzaXplIGlzIGxpa2VseSB0byBiZSBkZWxldGVkIGFueXdheSBkdXJpbmcgYQorCS8vIGNvbmNhdCBvcGVyYXRpb24KKworCXhzZWNzaXplX3QgbGVuID0gKHhzZWNzaXplX3QpIHN0cmxlbih0KSArIDE7CisJY2hlY2tBbmRFeHBhbmQobGVuKTsKKwlzdHJjcHkoKGNoYXIgKikgYnVmZmVyLCB0KTsKKwltX2J1ZmZlclR5cGUgPSBCVUZGRVJfQ0hBUjsKKworCVhTRUNfUkVMRUFTRV9YTUxDSCh0KTsKKworfQorCit2b2lkIHNhZmVCdWZmZXI6OnNiVHJhbnNjb2RlSW4oY29uc3QgY2hhciAqIGluU3RyKSB7CisKKwkvLyBUcmFuc2NvZGUgdGhlIHN0cmluZyB0byB0aGUgbG9jYWwgY29kZSBwYWdlIGFuZCBzdG9yZSBpbiB0aGUgYnVmZmVyCisJWE1MQ2ggKiB0OworCisJdCA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKGluU3RyKTsKKworCWFzc2VydCAodCAhPSAwKTsKKworCS8vIENvcHkgaW50byBsb2NhbCBidWZmZXIKKworCXhzZWNzaXplX3QgbGVuID0gWE1MU3RyaW5nOjpzdHJpbmdMZW4odCkgKyAxOworICAgIGxlbiAqPSAoeHNlY3NpemVfdCkgc2l6ZV9YTUxDaDsKKwljaGVja0FuZEV4cGFuZChsZW4pOworCisJWE1MU3RyaW5nOjpjb3B5U3RyaW5nKChYTUxDaCAqKSBidWZmZXIsIHQpOworCW1fYnVmZmVyVHlwZSA9IEJVRkZFUl9VTklDT0RFOworCisJWFNFQ19SRUxFQVNFX1hNTENIKHQpOworCit9CisKKwordm9pZCBzYWZlQnVmZmVyOjpzYlhNTENoSW4oY29uc3QgWE1MQ2ggKiBpbikgeworCisJY2hlY2tBbmRFeHBhbmQoKFhNTFN0cmluZzo6c3RyaW5nTGVuKGluKSArIDEpICogc2l6ZV9YTUxDaCk7CisKKwlYTUxTdHJpbmc6OmNvcHlTdHJpbmcoKFhNTENoICopIGJ1ZmZlciwgaW4pOworCW1fYnVmZmVyVHlwZSA9IEJVRkZFUl9VTklDT0RFOworCit9CisKK3ZvaWQgc2FmZUJ1ZmZlcjo6c2JYTUxDaEFwcGVuZENoKGNvbnN0IFhNTENoIGMpIHsKKworCWNoZWNrQnVmZmVyVHlwZShCVUZGRVJfVU5JQ09ERSk7CisJeHNlY3NpemVfdCBsZW4gPSBYTUxTdHJpbmc6OnN0cmluZ0xlbigoWE1MQ2ggKikgYnVmZmVyKTsKKworCWNoZWNrQW5kRXhwYW5kKChsZW4gKyAyKSAqIHNpemVfWE1MQ2gpOworCisJKChYTUxDaCAqKSBidWZmZXIpW2xlbisrXSA9IGM7CisJKChYTUxDaCAqKSBidWZmZXIpW2xlbl0gPSAwOworCit9CisKK3ZvaWQgc2FmZUJ1ZmZlcjo6c2JYTUxDaENhdChjb25zdCBYTUxDaCAqc3RyKSB7CisKKwljaGVja0J1ZmZlclR5cGUoQlVGRkVSX1VOSUNPREUpOworCXhzZWNzaXplX3QgbGVuID0gWE1MU3RyaW5nOjpzdHJpbmdMZW4oKFhNTENoICopIGJ1ZmZlcikgKiBzaXplX1hNTENoOworCWxlbiArPSBYTUxTdHJpbmc6OnN0cmluZ0xlbihzdHIpICogc2l6ZV9YTUxDaDsKKwlsZW4gKz0gKDIgKiAoKHhzZWNzaXplX3QpIHNpemVfWE1MQ2gpKTsKKworCWNoZWNrQW5kRXhwYW5kKGxlbik7CisKKwlYTUxTdHJpbmc6OmNhdFN0cmluZygoWE1MQ2ggKikgYnVmZmVyLCBzdHIpOworCit9CisKK3ZvaWQgc2FmZUJ1ZmZlcjo6c2JYTUxDaENhdChjb25zdCBjaGFyICogc3RyKSB7CisKKwljaGVja0J1ZmZlclR5cGUoQlVGRkVSX1VOSUNPREUpOworCXhzZWNzaXplX3QgbGVuID0gWE1MU3RyaW5nOjpzdHJpbmdMZW4oKFhNTENoICopIGJ1ZmZlcikgKiBzaXplX1hNTENoOworCisJWE1MQ2ggKiB0ID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoc3RyKTsKKworCWFzc2VydCAodCAhPSBOVUxMKTsKKworCWxlbiArPSBYTUxTdHJpbmc6OnN0cmluZ0xlbih0KTsKKwlsZW4gKz0gKHhzZWNzaXplX3QpICgyICogc2l6ZV9YTUxDaCk7CisKKwljaGVja0FuZEV4cGFuZChsZW4pOworCisJWE1MU3RyaW5nOjpjYXRTdHJpbmcoKFhNTENoICopIGJ1ZmZlciwgdCk7CisKKwlYU0VDX1JFTEVBU0VfWE1MQ0godCk7Cit9CisKK3ZvaWQgc2FmZUJ1ZmZlcjo6c2JYTUxDaENhdDgoY29uc3QgY2hhciAqIHN0cikgeworCisJY2hlY2tCdWZmZXJUeXBlKEJVRkZFUl9VTklDT0RFKTsKKworCVhNTENoICogdG9BZGQgPSB0cmFuc2NvZGVGcm9tVVRGOCgoY29uc3QgdW5zaWduZWQgY2hhciAqKSBzdHIpOworCXNiWE1MQ2hDYXQodG9BZGQpOworCVhTRUNfUkVMRUFTRV9YTUxDSCh0b0FkZCk7CisKK30KKworLy8gR2V0IGZ1bmN0aW9ucworCit4c2Vjc2l6ZV90IHNhZmVCdWZmZXI6OnNiU3RybGVuKHZvaWQpIGNvbnN0IHsKKworICAgIGNoZWNrQnVmZmVyVHlwZShCVUZGRVJfQ0hBUik7CisgICAgcmV0dXJuICh4c2Vjc2l6ZV90KSAoc3RybGVuICgoY2hhciAqKSBidWZmZXIpKTsKKworfQorCit4c2Vjc2l6ZV90IHNhZmVCdWZmZXI6OnNiUmF3QnVmZmVyU2l6ZSh2b2lkKSBjb25zdCB7CisKKyAgICByZXR1cm4gYnVmZmVyU2l6ZTsKKworfQorCisKKy8vIHJhdyBidWZmZXIgbWFuaXB1bGF0aW9uCisKK2NvbnN0IHVuc2lnbmVkIGNoYXIgKiBzYWZlQnVmZmVyOjpyYXdCdWZmZXIoKSBjb25zdCB7CisKKwlyZXR1cm4gYnVmZmVyOworCit9CisKK2NvbnN0IGNoYXIgKiBzYWZlQnVmZmVyOjpyYXdDaGFyQnVmZmVyKCkgY29uc3QgeworCisJcmV0dXJuIChjaGFyICopIGJ1ZmZlcjsKKworfQorCitjb25zdCBYTUxDaCAqIHNhZmVCdWZmZXI6OnJhd1hNTENoQnVmZmVyKCkgY29uc3QgeworCisJcmV0dXJuIChYTUxDaCAqKSBidWZmZXI7CisKK30KKworLy8gU2Vuc2l0aXZlIGRhdGEgZnVuY3Rpb25zCisKK3ZvaWQgc2FmZUJ1ZmZlcjo6aXNTZW5zaXRpdmUodm9pZCkgeworCisJbV9pc1NlbnNpdGl2ZSA9IHRydWU7CisKK30KKwordm9pZCBzYWZlQnVmZmVyOjpjbGVhbnNlQnVmZmVyKHZvaWQpIHsKKworCS8vIENsZWFuc2UgdGhlIG1haW4gYnVmZmVyCisJZm9yICh4c2Vjc2l6ZV90IGkgPSAwOyBpIDwgYnVmZmVyU2l6ZTsgKytpKQorCQlidWZmZXJbaV0gPSAwOworCit9CmRpZmYgLS1naXQgYS9jL3NyYy91dGlscy9YU0VDU2FmZUJ1ZmZlci5ocHAgYi9jL3NyYy91dGlscy9YU0VDU2FmZUJ1ZmZlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjMxNDVlOQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3V0aWxzL1hTRUNTYWZlQnVmZmVyLmhwcApAQCAtMCwwICsxLDE4MSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ1NhZmVCdWZmZXIgOj0gYSBjbGFzcyBmb3Igc3RvcmluZyBleHBhbmRpbmcgYW1vdW50cyBvZiBpbmZvcm1hdGlvbi4KKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICovCisKKworI2lmbmRlZiBYU0VDU0FGRUJVRkZFUl9JTkNMVURFCisjZGVmaW5lIFhTRUNTQUZFQlVGRkVSX0lOQ0xVREUKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MU3RyaW5nLmhwcD4KKworY2xhc3MgVFhGTUJhc2U7CisKKy8qKgorICogXGFkZHRvZ3JvdXAgaW50ZXJuYWwKKyAqIEB7CisgKi8KKworCisjZGVmaW5lIERFRkFVTFRfU0FGRV9CVUZGRVJfU0laRQkJMTAyNAkJLy8gRGVmYXVsdCBzaXplIGZvciBhIHNhZmUgQnVmZmVyCisKKyAvKioKKyAqXGJyaWVmIE1hbmFnZSBidWZmZXJzIG9mIGFyYml0cmFyeSBzaXplCisgKgorICogVGhlIHNhZmVCdWZmZXIgY2xhc3MgaXMgdXNlZCBpbnRlcm5hbGx5IGluIHRoZSBsaWJyYXJ5CisgKiB0byBtYW5hZ2UgYnVmZmVycyBvZiBieXRlcyBvciBVVEYtMTYgY2hhcmFjdGVycy4KKyAqCisgKiBJdCdzIGEgZmFpcmx5IGlubmVmZmljaWVudCBjbGFzcywgYXMgYnVmZmVycyBhcmUgY29udGludWFsbHkKKyAqIGJlaW5nIHdyYXBwZWQsIGNvcHBpZWQgYW5kIGVubGFyZ2VkLCBidXQgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUKKyAqIGxpYnJhcnksIGEgc2luZ2xlIGNsYXNzIHRoYXQgbWFuaXB1bGF0ZXMgYnVmZmVycyBvZiB2YXJpYWJsZQorICogc2l6ZSB3YXMgZmVsdCB0byBiZSBwcmVmZXJhYmxlLAorICoKKyAqIFRoZSBzYWZlQnVmZmVyIGlzIG5vdCBleHBvc2VkIHRocm91Z2ggaW50ZXJmYWNlIGNsYXNzZXMgdGhhdAorICogbWlnaHQgYmUgdXNlZCBieSBleHRlcm5hbCBmdW5jdGlvbnMuICBJbiB0aGVzZSBjYXNlcywgYQorICogcG9pbnRlciB0byBhIFhNTENoICogYnVmZmVyIGlzIHVzZWQgYnkgcHJlZmVyZW5jZS4KKyAqLworCitjbGFzcyBDQU5PTl9FWFBPUlQgc2FmZUJ1ZmZlciB7CisKK3B1YmxpYzoKKworCS8vIEZvciBjaGVja2luZyB3ZSBhcmUgb3BlcmF0aW5nIG9uIHRoZSBidWZmZXIgY29ycmVjdGx5CisJZW51bSBidWZmZXJUeXBlIHsKKworCQlCVUZGRVJfVU5LTk9XTgkJPSAwLAorCQlCVUZGRVJfQ0hBUgkJCT0gMSwKKwkJQlVGRkVSX1VOSUNPREUJCT0gMgorCX07CisKKworCXNhZmVCdWZmZXIoKTsKKyAgICBzYWZlQnVmZmVyKGNvbnN0IHNhZmVCdWZmZXIgJiBvdGhlcik7CisJc2FmZUJ1ZmZlcih4c2Vjc2l6ZV90IGluaXRpYWxTaXplKTsKKwlzYWZlQnVmZmVyKGNvbnN0IGNoYXIgKiBpblN0ciwgeHNlY3NpemVfdCBpbml0aWFsU2l6ZSA9IERFRkFVTFRfU0FGRV9CVUZGRVJfU0laRSk7CisJfnNhZmVCdWZmZXIoKTsKKworCXN0YXRpYyB2b2lkIGluaXQodm9pZCk7CisKKwkvLyAiSU4iIGZ1bmN0aW9ucyAtIHRoZXNlIHJlYWQgaW4gaW5mb3JtYXRpb24gdG8gdGhlIGJ1ZmZlcgorCisJdm9pZCBzYlN0cmNweUluKGNvbnN0IGNoYXIgKiBpblN0cik7CisJdm9pZCBzYlN0cmNweUluKGNvbnN0IHNhZmVCdWZmZXIgJiBpblN0cik7CisgICAgdm9pZCBzYlN0cm5jcHlJbihjb25zdCBjaGFyICogaW5TdHIsIHhzZWNzaXplX3Qgbik7CisgICAgdm9pZCBzYlN0cm5jcHlJbihjb25zdCBzYWZlQnVmZmVyICYgaW5TdHIsIHhzZWNzaXplX3Qgbik7CisKKwl2b2lkIHNiU3RyY2F0SW4oY29uc3QgY2hhciAqIGluU3RyKTsKKwl2b2lkIHNiU3RyY2F0SW4oY29uc3Qgc2FmZUJ1ZmZlciAmIGluU3RyKTsKKyAgICB2b2lkIHNiU3RybmNhdEluKGNvbnN0IGNoYXIgKiBpblN0ciwgeHNlY3NpemVfdCBuKTsKKyAgICB2b2lkIHNiU3RyaW5zSW4oY29uc3QgY2hhciAqIGluU3RyLCB4c2Vjc2l6ZV90IG9mZnNldCk7CisKKyAgICB2b2lkIHNiTWVtY3B5SW4oY29uc3Qgdm9pZCAqIGluQnVmLCB4c2Vjc2l6ZV90IG4pOworICAgIHZvaWQgc2JNZW1jcHlJbih4c2Vjc2l6ZV90IG9mZnNldCwgY29uc3Qgdm9pZCAqIGluQnVmLCB4c2Vjc2l6ZV90IG4pOworCisgICAgdm9pZCBzYk1lbWNweU91dCh2b2lkICogb3V0QnVmLCB4c2Vjc2l6ZV90IG4pIGNvbnN0OworICAgIHZvaWQgc2JNZW1zaGlmdCh4c2Vjc2l6ZV90IHRvT2Zmc2V0LCB4c2Vjc2l6ZV90IGZyb21PZmZzZXQsIHhzZWNzaXplX3QgbGVuKTsKKworCS8vIENvbXBhcmlzb24gZnVuY3Rpb25zCisKKyAgICBpbnQgc2JTdHJuY21wKGNvbnN0IGNoYXIgKiBpblN0ciwgeHNlY3NpemVfdCBuKSBjb25zdDsKKyAgICBpbnQgc2JPZmZzZXRTdHJjbXAoY29uc3QgY2hhciAqIGluU3RyLCB4c2Vjc2l6ZV90IG9mZnNldCkgY29uc3Q7CisgICAgaW50IHNiT2Zmc2V0U3RybmNtcChjb25zdCBjaGFyICogaW5TdHIsIHhzZWNzaXplX3Qgb2Zmc2V0LCB4c2Vjc2l6ZV90IG4pIGNvbnN0OworCWludCBzYlN0cmNtcChjb25zdCBjaGFyICogaW5TdHIpIGNvbnN0OworCWludCBzYlN0cmNtcChjb25zdCBzYWZlQnVmZmVyICYgaW5TdHIpIGNvbnN0OworCisjaWZkZWYgWFNFQ19YRVJDRVNfNjRCSVRTQUZFCisJbG9uZyBzYlN0cnN0cihjb25zdCBjaGFyICogaW5TdHIpIGNvbnN0OworCWxvbmcgc2JPZmZzZXRTdHJzdHIoY29uc3QgY2hhciAqIGluU3RyLCB4c2Vjc2l6ZV90IG9mZnNldCkgY29uc3Q7CisJLy8gWE1MQ2ggdmVyc2lvbnMKKwlsb25nIHNiU3Ryc3RyKGNvbnN0IFhNTENoICogaW5TdHIpIGNvbnN0OworI2Vsc2UKKyAgICBpbnQgc2JTdHJzdHIoY29uc3QgY2hhciAqIGluU3RyKSBjb25zdDsKKyAgICBpbnQgc2JPZmZzZXRTdHJzdHIoY29uc3QgY2hhciAqIGluU3RyLCB4c2Vjc2l6ZV90IG9mZnNldCkgY29uc3Q7CisgICAgLy8gWE1MQ2ggdmVyc2lvbnMKKyAgICBpbnQgc2JTdHJzdHIoY29uc3QgWE1MQ2ggKiBpblN0cikgY29uc3Q7CisjZW5kaWYKKyAgICB2b2lkIHNiU3RyaW5zSW4oY29uc3QgWE1MQ2ggKiBpblN0ciwgeHNlY3NpemVfdCBvZmZzZXQpOworCisJLy8gWE1MQ2ggYW5kIGNoYXIgY29tbW9uIGZ1bmN0aW9ucworCXZvaWQgc2JTdHJsd3Iodm9pZCk7CQkvLyBMb3dlcmNhc2UgdGhlIHN0cmluZworCisJLy8gT3BlcmF0b3JzCisKKyAgICB1bnNpZ25lZCBjaGFyICYgb3BlcmF0b3JbXSh4c2Vjc2l6ZV90IG4pOworCXNhZmVCdWZmZXIgJiBvcGVyYXRvcj0gKGNvbnN0IHNhZmVCdWZmZXIgJiBjcHkpOworCXNhZmVCdWZmZXIgJiBvcGVyYXRvcj0gKGNvbnN0IFhNTENoICogaW5TdHIpOworCXNhZmVCdWZmZXIgJiBvcGVyYXRvciA8PCAoVFhGTUJhc2UgKiB0KTsKKworCS8vIEdldCBmdW5jdGlvbnMKKworCXhzZWNzaXplX3Qgc2JTdHJsZW4odm9pZCkgY29uc3Q7CisJeHNlY3NpemVfdCBzYlJhd0J1ZmZlclNpemUodm9pZCkgY29uc3Q7CisKKwkvLyByYXcgYnVmZmVyIG1hbmlwdWxhdGlvbgorCisJY29uc3QgdW5zaWduZWQgY2hhciAqIHJhd0J1ZmZlcigpIGNvbnN0OworCWNvbnN0IGNoYXIgKiByYXdDaGFyQnVmZmVyKCkgY29uc3Q7CisJY29uc3QgWE1MQ2ggKiByYXdYTUxDaEJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQgcmVzaXplKHhzZWNzaXplX3Qgc3opOyAgICAgICAgICAgICAgICAgLy8gTk9URSA6IE9ubHkgZ3Jvd3MKKwl2b2lkIHNldEJ1ZmZlclR5cGUoYnVmZmVyVHlwZSBidCk7CQkgICAgLy8gVXNlIHdpdGggY2FyZQorCisJLy8gVW5pY29kZSAoVVRGLTE2IG1hbmlwdWxhdGlvbikKKwljb25zdCBYTUxDaCAqIHNiU3RyVG9YTUxDaCh2b2lkKSBjb25zdDsJCS8vIE5vdGUgZG9lcyBub3QgYWZmZWN0IGludGVybmFsIGJ1ZmZlcgorCXZvaWQgc2JUcmFuc2NvZGVJbihjb25zdCBYTUxDaCAqIGluU3RyKTsJLy8gQ3JlYXRlIGEgbG9jYWwgc3RyaW5nIGZyb20gVVRGLTE2CisJdm9pZCBzYlRyYW5zY29kZUluKGNvbnN0IGNoYXIgKiBpblN0cik7CQkvLyBDcmVhdGUgYSBVVEYtMTYgc3RyaW5nIGZyb20gbG9jYWwKKwl2b2lkIHNiWE1MQ2hJbihjb25zdCBYTUxDaCAqIGluKTsJCQkvLyBCdWZmZXIgaG9sZHMgWE1MQ2ggKgorCXZvaWQgc2JYTUxDaEFwcGVuZENoKGNvbnN0IFhNTENoIGMpOwkJLy8gQXBwZW5kIGEgVW5pY29kZSBjaGFyYWN0ZXIgdG8gdGhlIGJ1ZmZlcgorCXZvaWQgc2JYTUxDaENhdChjb25zdCBYTUxDaCAqc3RyKTsJCQkvLyBBcHBlbmQgYSBVVEYtMTYgc3RyaW5nIHRvIHRoZSBidWZmZXIKKwl2b2lkIHNiWE1MQ2hDYXQoY29uc3QgY2hhciAqIHN0cik7CQkJLy8gQXBwZW5kIGEgKHRyYW5zY29kZWQpIGxvY2FsIHN0cmluZyB0byB0aGUgYnVmZmVyCisJdm9pZCBzYlhNTENoQ2F0OChjb25zdCBjaGFyICogc3RyKTsJCQkvLyBBcHBlbmQgYSAodHJhbnNjb2RlZCkgVVRGLTggc3RyaW5nIHRvIHRoZSBidWZmZXIKKworCS8vIFNlbnNpdGl2ZSBkYXRhIGZ1bmN0aW9ucworCXZvaWQgaXNTZW5zaXRpdmUodm9pZCk7CisJdm9pZCBjbGVhbnNlQnVmZmVyKHZvaWQpOworCitwcml2YXRlOgorCisJLy8gSW50ZXJuYWwgZnVuY3Rpb24gdGhhdCBpcyB1c2VkIHRvIGdldCBhIHN0cmluZyBzaXplIGFuZAorCS8vIHRoZW4gcmUtYWxsb2NhdGUgaWYgbmVjZXNzYXJ5CisKKyAgICB2b2lkIGNoZWNrQW5kRXhwYW5kKHhzZWNzaXplX3Qgc2l6ZSk7CisJdm9pZCBjaGVja0J1ZmZlclR5cGUoYnVmZmVyVHlwZSBidCkgY29uc3Q7CisKKwl1bnNpZ25lZCBjaGFyICogYnVmZmVyOworCXhzZWNzaXplX3QgICAgICBidWZmZXJTaXplOworCW11dGFibGUgWE1MQ2ggICAqIG1wX1hNTENoOworCWJ1ZmZlclR5cGUJCW1fYnVmZmVyVHlwZTsKKworCS8vIEZvciBYTUxDaCBtYW5pcHVsYXRpb24KKwlzdGF0aWMgc2l6ZV90CXNpemVfWE1MQ2g7CisKKwkvLyBGb3Igc2Vuc2l0aXZlIGRhdGEKKwlib29sCQkJbV9pc1NlbnNpdGl2ZTsKK307CisKKy8qKiBAfSAqLworCisjZW5kaWYgLyogWFNFQ1NBRkVCVUZGRVJfSU5DTFVERSAqLworCmRpZmYgLS1naXQgYS9jL3NyYy91dGlscy9YU0VDU2FmZUJ1ZmZlckZvcm1hdHRlci5jcHAgYi9jL3NyYy91dGlscy9YU0VDU2FmZUJ1ZmZlckZvcm1hdHRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ0ZDJiNQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3V0aWxzL1hTRUNTYWZlQnVmZmVyRm9ybWF0dGVyLmNwcApAQCAtMCwwICsxLDE2OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ1NhZmVCdWZmZXJGb3JtYXR0ZXIgOj0gQ2xhc3MgZm9yIGZvcm1hdHRpbmcgRE9NU3RyaW5ncyBpbnRvIFNhZmVCdWZmZXJzCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDU2FmZUJ1ZmZlckZvcm1hdHRlci5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFN0cmluZy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKy8vIENvbnN0cnVjdG9yCisKK1hTRUNTYWZlQnVmZmVyRm9ybWF0dGVyOjpYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlcigKKwkJCQkJCWNvbnN0IFhNTENoICogY29uc3QJCQlvdXRFbmNvZGluZywKKwkJCQkJCWNvbnN0IFhNTEZvcm1hdHRlcjo6RXNjYXBlRmxhZ3MJZXNjYXBlRmxhZ3MsCisJCQkJCQljb25zdCBYTUxGb3JtYXR0ZXI6OlVuUmVwRmxhZ3MgdW5yZXBGbGFncykgeworCisKKwlzYmYgPSBuZXcgc2JGb3JtYXRUYXJnZXQoKTsKKwlzYmYtPnNldEJ1ZmZlcigmZm9ybWF0QnVmZmVyKTsKKworI2lmIGRlZmluZWQoWFNFQ19YRVJDRVNfRk9STUFUVEVSX1JFUVVJUkVTX1ZFUlNJT04pCisJZm9ybWF0dGVyID0gbmV3IFhNTEZvcm1hdHRlcihvdXRFbmNvZGluZywKKwkJCQkJCQkJCTAsCisJCQkJCQkJCQlzYmYsCisJCQkJCQkJCQllc2NhcGVGbGFncywKKwkJCQkJCQkJCXVucmVwRmxhZ3MpOworI2Vsc2UKKwlYU0VDbmV3KGZvcm1hdHRlciwgWE1MRm9ybWF0dGVyKG91dEVuY29kaW5nLAorCQkJCQkJCQkJc2JmLAorCQkJCQkJCQkJZXNjYXBlRmxhZ3MsCisJCQkJCQkJCQl1bnJlcEZsYWdzKSk7CisjZW5kaWYKK30KKworCisKKworCitYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlcjo6WFNFQ1NhZmVCdWZmZXJGb3JtYXR0ZXIoCisJCQkJCQljb25zdCBjaGFyICogY29uc3QJCQlvdXRFbmNvZGluZywKKwkJCQkJCWNvbnN0IFhNTEZvcm1hdHRlcjo6RXNjYXBlRmxhZ3MJZXNjYXBlRmxhZ3MsCisJCQkJCQljb25zdCBYTUxGb3JtYXR0ZXI6OlVuUmVwRmxhZ3MgdW5yZXBGbGFncykgeworCisJc2JmID0gbmV3IHNiRm9ybWF0VGFyZ2V0KCk7CisJc2JmLT5zZXRCdWZmZXIoJmZvcm1hdEJ1ZmZlcik7CisKKyNpZiBkZWZpbmVkKFhTRUNfWEVSQ0VTX0ZPUk1BVFRFUl9SRVFVSVJFU19WRVJTSU9OKQorCWZvcm1hdHRlciA9IG5ldyBYTUxGb3JtYXR0ZXIob3V0RW5jb2RpbmcsCisJCQkJCQkJCQkwLAorCQkJCQkJCQkJc2JmLAorCQkJCQkJCQkJZXNjYXBlRmxhZ3MsCisJCQkJCQkJCQl1bnJlcEZsYWdzKTsKKyNlbHNlCisJWFNFQ25ldyhmb3JtYXR0ZXIsIFhNTEZvcm1hdHRlcihvdXRFbmNvZGluZywKKwkJCQkJCQkJCXNiZiwKKwkJCQkJCQkJCWVzY2FwZUZsYWdzLAorCQkJCQkJCQkJdW5yZXBGbGFncykpOworI2VuZGlmCisKK30KKworLy8gRGVzdHJ1Y3RvcgorCitYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlcjo6flhTRUNTYWZlQnVmZmVyRm9ybWF0dGVyKCkgeworCisJaWYgKGZvcm1hdHRlciAhPSBOVUxMKQorCQlkZWxldGUgZm9ybWF0dGVyOworCisJaWYgKHNiZiAhPSBOVUxMKQorCQlkZWxldGUgc2JmOworCit9CisKKy8vIFJlaW1wbGVtZW50YXRpb24gb2YgWE1MRm9ybWF0dGVyIGZ1bmN0aW9ucworCit2b2lkICBYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlcjo6Zm9ybWF0QnVmICgKKwkJCQkgY29uc3QgWE1MQ2ggKmNvbnN0IHRvRm9ybWF0LAorCQkJCSBjb25zdCB4c2Vjc2l6ZV90IGNvdW50LAorCQkJCSBjb25zdCBYTUxGb3JtYXR0ZXI6OkVzY2FwZUZsYWdzIGVzY2FwZUZsYWdzLAorCQkJCSBjb25zdCBYTUxGb3JtYXR0ZXI6OlVuUmVwRmxhZ3MgdW5yZXBGbGFncykgeworCisKKwlmb3JtYXR0ZXItPmZvcm1hdEJ1Zih0b0Zvcm1hdCwgY291bnQsIGVzY2FwZUZsYWdzLCB1bnJlcEZsYWdzKTsKKworfQorCitYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlciYgIFhTRUNTYWZlQnVmZmVyRm9ybWF0dGVyOjpvcGVyYXRvcjw8IChjb25zdCBYTUxDaCAqY29uc3QgdG9Gb3JtYXQpIHsKKworCXNiZi0+cmVzZXQoKTsKKwkqZm9ybWF0dGVyIDw8IHRvRm9ybWF0OworCisJcmV0dXJuICp0aGlzOworCit9CisKK1hTRUNTYWZlQnVmZmVyRm9ybWF0dGVyJgorICAgICBYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlcjo6b3BlcmF0b3I8PCAoY29uc3QgWE1MQ2ggdG9Gb3JtYXQpIHsKKworCXNiZi0+cmVzZXQoKTsKKwkqZm9ybWF0dGVyIDw8IHRvRm9ybWF0OworCXJldHVybiAqdGhpczsKKworfQorCitjb25zdCBYTUxDaCogIFhTRUNTYWZlQnVmZmVyRm9ybWF0dGVyOjpnZXRFbmNvZGluZ05hbWUgKCljb25zdCB7CisKKwlyZXR1cm4gZm9ybWF0dGVyLT5nZXRFbmNvZGluZ05hbWUoKTsKKworfQorCit2b2lkICBYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlcjo6c2V0RXNjYXBlRmxhZ3MgKGNvbnN0IFhNTEZvcm1hdHRlcjo6RXNjYXBlRmxhZ3MgbmV3RmxhZ3MpIHsKKworCWZvcm1hdHRlci0+c2V0RXNjYXBlRmxhZ3MobmV3RmxhZ3MpOworCit9Cit2b2lkICBYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlcjo6c2V0VW5SZXBGbGFncyAoY29uc3QgWE1MRm9ybWF0dGVyOjpVblJlcEZsYWdzIG5ld0ZsYWdzKSB7CisKKwlmb3JtYXR0ZXItPnNldFVuUmVwRmxhZ3MobmV3RmxhZ3MpOworCit9CisKK1hTRUNTYWZlQnVmZmVyRm9ybWF0dGVyJiAgWFNFQ1NhZmVCdWZmZXJGb3JtYXR0ZXI6Om9wZXJhdG9yPDwgKGNvbnN0IFhNTEZvcm1hdHRlcjo6RXNjYXBlRmxhZ3MgbmV3RmxhZ3MpIHsKKworCSpmb3JtYXR0ZXIgPDwgbmV3RmxhZ3M7CisJcmV0dXJuICp0aGlzOworCit9CisKK1hTRUNTYWZlQnVmZmVyRm9ybWF0dGVyJiAgWFNFQ1NhZmVCdWZmZXJGb3JtYXR0ZXI6Om9wZXJhdG9yPDwgKGNvbnN0IFhNTEZvcm1hdHRlcjo6VW5SZXBGbGFncyBuZXdGbGFncykgeworCisJKmZvcm1hdHRlciA8PCBuZXdGbGFnczsKKwlyZXR1cm4gKnRoaXM7CisKK30KKworLy8gRnJpZW5kcyBmb3Igd29ya2luZyB3aXRoIHNhZmVzdHJpbmdzCisKK3NhZmVCdWZmZXImIG9wZXJhdG9yPDwgKHNhZmVCdWZmZXIgJnRvLCBjb25zdCBYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlciAmIGZyb20pIHsKKworCS8vIFNpbXBseSBjb3B5IG91dCB0aGUgZm9ybWF0IGJ1ZmZlciwgYnV0IHplcm9pc2UgdGhlIG9yaWdpbmFsIGZpcnN0CisKKwl0byA9IGZyb20uZm9ybWF0QnVmZmVyOworCXJldHVybiB0bzsKKworfQorCmRpZmYgLS1naXQgYS9jL3NyYy91dGlscy9YU0VDU2FmZUJ1ZmZlckZvcm1hdHRlci5ocHAgYi9jL3NyYy91dGlscy9YU0VDU2FmZUJ1ZmZlckZvcm1hdHRlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJmNTE1YwotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3V0aWxzL1hTRUNTYWZlQnVmZmVyRm9ybWF0dGVyLmhwcApAQCAtMCwwICsxLDE1OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ1NhZmVCdWZmZXJGb3JtYXR0ZXIgOj0gQ2xhc3MgZm9yIGZvcm1hdHRpbmcgRE9NU3RyaW5ncyBpbnRvIFNhZmVCdWZmZXJzCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhTRUNTQUZFQlVGRkVSRk9STUFUVEVSX0lOQ0xVREUKKyNkZWZpbmUgWFNFQ1NBRkVCVUZGRVJGT1JNQVRURVJfSU5DTFVERQorCisvLyBYU0VDIGluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNTYWZlQnVmZmVyLmhwcD4KKworLy8gWGVyY2VzIGluY2x1ZGVzCisKKyNpbmNsdWRlIDx4ZXJjZXNjL2ZyYW1ld29yay9YTUxGb3JtYXR0ZXIuaHBwPgorCisvKiogQGFkZHRvZ3JvdXAgaW50ZXJuYWwKKyAgKiBAeworICAqLworCitjbGFzcyBzYkZvcm1hdFRhcmdldCA6IHB1YmxpYyBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgWE1MRm9ybWF0VGFyZ2V0Cit7CitwdWJsaWM6CisKKwlzYkZvcm1hdFRhcmdldCgpICB7bV9vZmZzZXQgPSAwO30KKyAgICB+c2JGb3JtYXRUYXJnZXQoKSB7fQorCisJdm9pZCBzZXRCdWZmZXIgKHNhZmVCdWZmZXIgKiB0b1NldCkge21fYnVmZmVyID0gdG9TZXQ7fTsKKworCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyAgSW1wbGVtZW50YXRpb25zIG9mIHRoZSBmb3JtYXQgdGFyZ2V0IGludGVyZmFjZQorCS8vICBCYXNlZCBvbiBYZXJjZXMvWGFsYW4gZXhhbXBsZSBjb2RlCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIHZvaWQgd3JpdGVDaGFycyhjb25zdCAgIFhNTEJ5dGUqIGNvbnN0ICB0b1dyaXRlLAorICAgICAgICAgICAgICAgICAgICBjb25zdCB4c2Vjc2l6ZV90ICAgIGNvdW50LAorICAgICAgICAgICAgICAgICAgICBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgWE1MRm9ybWF0dGVyICogY29uc3QgZm9ybWF0dGVyKQorICAgIHsKKyAgICAgICAgIG1fYnVmZmVyLT5zYk1lbWNweUluKG1fb2Zmc2V0LCAoY2hhciAqKSB0b1dyaXRlLCBjb3VudCk7CisJCSBtX2J1ZmZlci0+c2V0QnVmZmVyVHlwZShzYWZlQnVmZmVyOjpCVUZGRVJfQ0hBUik7CisJCSBtX29mZnNldCArPSBjb3VudDsKKwkJKCptX2J1ZmZlcilbbV9vZmZzZXRdID0gJ1wwJzsKKyAgICB9OworCisJdm9pZCByZXNldCh2b2lkKSB7bV9vZmZzZXQgPSAwOygqbV9idWZmZXIpWzBdID0gJ1wwJzt9CisKK3ByaXZhdGU6CisKKyAgICBzYkZvcm1hdFRhcmdldChjb25zdCBzYkZvcm1hdFRhcmdldCYgb3RoZXIpOworICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IHNiRm9ybWF0VGFyZ2V0JiByaHMpOworCisJc2FmZUJ1ZmZlcgkJCQkJKiBtX2J1ZmZlcjsJCS8vIEJ1ZmZlciB0byB3cml0ZSB0bworCXhzZWNzaXplX3QJCQkJICAgICAgbV9vZmZzZXQ7Cit9OworCisvKioKKyAqIFxicmllZiBGb3JtYXR0ZXIgZm9yIG91dHB1dHRpbmcgdG8gYSBzYWZlQnVmZmVyCisgKgorICogVGhlIFhTRUNTYWZlQnVmZmVyRm9ybWF0dGVyIGNsYXNzIGlzIHVzZWQgYXMgYW4gaW50ZXJuYWwgY2xhc3MKKyAqIHRvIHBlcmZvcm0gZW5jb2RpbmcgdHJhbnNsYXRpb25zIHdpdGggYSBzYWZlQnVmZmVyIGFzIGEgdGFyZ2V0CisgKi8KKworCitjbGFzcyBYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlciB7CisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgWE1MRm9ybWF0dGVyCisJCQkJCQkqIGZvcm1hdHRlcjsJCS8vIFRvIGFjdHVhbGx5IHBlcmZvcm0gdGhlIGZvcm1hdHRpbmcKKwlzYWZlQnVmZmVyCQkJZm9ybWF0QnVmZmVyOwkJLy8gU3RvcmFnZSBvZiB0cmFuc2xhdGVkIHN0cmluZ3MKKwlzYkZvcm1hdFRhcmdldAkJKiBzYmY7CQkJCS8vIEZvcm1hdCB0YXJnZXQgdXNlZCBieSBYTUxGb3JtYXR0ZXIKKworcHVibGljOgorCisJLy8gQ29uc3RydWN0b3IKKworCVhTRUNTYWZlQnVmZmVyRm9ybWF0dGVyKAorCQljb25zdCBYTUxDaCAqIGNvbnN0CQkJCQkJb3V0RW5jb2RpbmcsCisJCWNvbnN0IFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBYTUxGb3JtYXR0ZXI6OkVzY2FwZUZsYWdzCisJCQkJZXNjYXBlRmxhZ3M9WEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIFhNTEZvcm1hdHRlcjo6Tm9Fc2NhcGVzLAorCQljb25zdCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgWE1MRm9ybWF0dGVyOjpVblJlcEZsYWdzCisJCQkJdW5yZXBGbGFncz1YRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgWE1MRm9ybWF0dGVyOjpVblJlcF9GYWlsCisJKTsKKworCVhTRUNTYWZlQnVmZmVyRm9ybWF0dGVyKAorCQljb25zdCBjaGFyICogY29uc3QJCQkJCQlvdXRFbmNvZGluZywKKwkJY29uc3QgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIFhNTEZvcm1hdHRlcjo6RXNjYXBlRmxhZ3MKKwkJCQllc2NhcGVGbGFncz1YRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgWE1MRm9ybWF0dGVyOjpOb0VzY2FwZXMsCisJCWNvbnN0IFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBYTUxGb3JtYXR0ZXI6OlVuUmVwRmxhZ3MKKwkJCQl1bnJlcEZsYWdzPVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBYTUxGb3JtYXR0ZXI6OlVuUmVwX0ZhaWwKKwkpOworCisJLy8gRGVzdHJ1Y3RvcgorCisJflhTRUNTYWZlQnVmZmVyRm9ybWF0dGVyKCk7CisKKwkvLyBSZWltcGxlbWVudGF0aW9uIG9mIFhNTEZvcm1hdHRlciBmdW5jdGlvbnMKKworCXZvaWQgIGZvcm1hdEJ1ZiAoCisJCWNvbnN0IFhNTENoICpjb25zdCB0b0Zvcm1hdCwKKwkJY29uc3QgeHNlY3NpemVfdCBjb3VudCwKKwkJY29uc3QgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIFhNTEZvcm1hdHRlcjo6RXNjYXBlRmxhZ3MKKwkJCQllc2NhcGVGbGFncz1YRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgWE1MRm9ybWF0dGVyOjpEZWZhdWx0RXNjYXBlLAorCQljb25zdCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgWE1MRm9ybWF0dGVyOjpVblJlcEZsYWdzCisJCQkJdW5yZXBGbGFncz1YRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgWE1MRm9ybWF0dGVyOjpEZWZhdWx0VW5SZXAKKwkpOwkJLy8gRm9ybWF0IGEgYnVmZmVyCisKKwlYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlciYgIG9wZXJhdG9yPDwgKAorCQljb25zdCBYTUxDaCAqY29uc3QgdG9Gb3JtYXQpOwkJCQkJLy8gRm9ybWF0IGEgYnVmZmVyCisKKwlYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlciYgIG9wZXJhdG9yPDwgKAorCQljb25zdCBYTUxDaCB0b0Zvcm1hdCk7CQkJCQkJCS8vIEZvcm1hdCBhIGNoYXJhY3RlcgorCisJY29uc3QgWE1MQ2gqICBnZXRFbmNvZGluZ05hbWUgKCljb25zdDsJCQkJLy8gR2V0IGN1cnJlbnQgZW5jb2RpbmcKKworCXZvaWQgIHNldEVzY2FwZUZsYWdzIChjb25zdCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgWE1MRm9ybWF0dGVyOjpFc2NhcGVGbGFncyBuZXdGbGFncyk7CisJdm9pZCAgc2V0VW5SZXBGbGFncyAoY29uc3QgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIFhNTEZvcm1hdHRlcjo6VW5SZXBGbGFncyBuZXdGbGFncyk7CisKKwlYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlciYgIG9wZXJhdG9yPDwgKGNvbnN0IFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBYTUxGb3JtYXR0ZXI6OkVzY2FwZUZsYWdzIG5ld0ZsYWdzKTsKKwlYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlciYgIG9wZXJhdG9yPDwgKGNvbnN0IFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBYTUxGb3JtYXR0ZXI6OlVuUmVwRmxhZ3MgbmV3RmxhZ3MpOworCisJLy8gRnJpZW5kcyBmb3Igd29ya2luZyB3aXRoIHNhZmVzdHJpbmdzCisKKwlmcmllbmQgc2FmZUJ1ZmZlciYgb3BlcmF0b3I8PCAoc2FmZUJ1ZmZlciAmdG8sIGNvbnN0IFhTRUNTYWZlQnVmZmVyRm9ybWF0dGVyICYgZnJvbSk7CisKK3ByaXZhdGU6CisKKwkvLyBVbmltcGxlbWVudGVkCisKKwlYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlcigpIHt9OworCisKK307CisKKy8qKiBAfSAqLworCisjZW5kaWYgLyogWFNFQ1NBRkVCVUZGRVJGT1JNQVRURVJfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvdXRpbHMvWFNFQ1RYRk1JbnB1dFNvdXJjZS5jcHAgYi9jL3NyYy91dGlscy9YU0VDVFhGTUlucHV0U291cmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Mzk5Y2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdXRpbHMvWFNFQ1RYRk1JbnB1dFNvdXJjZS5jcHAKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ1RYRk1JbnB1dFNvdXJjZSA6PSBUcmFuc2ZvbWVyIElucHV0U291cmNlIGZvciBYZXJjZXMgUGFyc2VyLgorICoKKyAqICRJZCQKKyAqCisgKgkJCQkJIAorICovCisKKworI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1CYXNlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNCaW5UWEZNSW5wdXRTdHJlYW0uaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1RYRk1JbnB1dFNvdXJjZS5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9CaW5JbnB1dFN0cmVhbS5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdC9EZXN0cnVjdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWFNFQ1RYRk1JbnB1dFNvdXJjZTo6WFNFQ1RYRk1JbnB1dFNvdXJjZShUWEZNQ2hhaW4gKiBjaGFpbiwgYm9vbCBkZWxldGVXaGVuRG9uZSkgOgorCittcF9jaGFpbihjaGFpbiksCittX2RlbGV0ZVdoZW5Eb25lKGRlbGV0ZVdoZW5Eb25lKSB7Cit9CisKKworWFNFQ1RYRk1JbnB1dFNvdXJjZTo6flhTRUNUWEZNSW5wdXRTb3VyY2UoKSB7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ3JlYXRlIHRoZSBzdHJlYW0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworQmluSW5wdXRTdHJlYW0qIFhTRUNUWEZNSW5wdXRTb3VyY2U6Om1ha2VTdHJlYW0oKSBjb25zdCB7CisKKwlYU0VDQmluVFhGTUlucHV0U3RyZWFtICogcmV0OworCisJLy8gSGF2ZSB0byBkbyBkaXJlY3QgZHVlIHRvIHN0cmFuZ2UgaXNzdWVzIHdpdGggTVNWQysrIGFuZCBERUJVR19ORVcKKwlyZXQgPSBuZXcgWFNFQ0JpblRYRk1JbnB1dFN0cmVhbShtcF9jaGFpbiwgbV9kZWxldGVXaGVuRG9uZSk7CisKKwlyZXR1cm4gcmV0OworCit9CisKZGlmZiAtLWdpdCBhL2Mvc3JjL3V0aWxzL1hTRUNUWEZNSW5wdXRTb3VyY2UuaHBwIGIvYy9zcmMvdXRpbHMvWFNFQ1RYRk1JbnB1dFNvdXJjZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ3NzFjYQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3V0aWxzL1hTRUNUWEZNSW5wdXRTb3VyY2UuaHBwCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYU0VDVFhGTUlucHV0U291cmNlIDo9IFRyYW5zZm9tZXIgSW5wdXRTb3VyY2UgZm9yIFhlcmNlcyBQYXJzZXIuCisgKgorICogJElkJAorICoJCQkJCSAKKyAqLworCisKKyNpZm5kZWYgWFNFQ1RYRk1JTlBVVFNPVVJDRV9JTkNMVURFCisjZGVmaW5lIFhTRUNUWEZNSU5QVVRTT1VSQ0VfSU5DTFVERQorCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2Mvc2F4L0lucHV0U291cmNlLmhwcD4KKworY2xhc3MgVFhGTUNoYWluOworCitYU0VDX0RFQ0xBUkVfWEVSQ0VTX0NMQVNTKEJpbklucHV0U3RyZWFtKTsKKworLyoqCisgKiBAYnJpZWYgSW5wdXRTb3VyY2Ugd3JhcHBlciBmb3IgYSBUWEZNTGlzdC4KKyAqIEBpbmdyb3VwIGludGVyZmFjZXMKKyAqCisgKiBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgd3JhcHBlciBmb3IgYSBUWEZNTGlzdC4gIEl0IGlzIHVzZWQgdG8gcHJvdmlkZSAKKyAqIGFuIGlucHV0IHRvIHRoZSBYZXJjZXMgUGFyc2VyLgorICoKKyAqIEBub3RlIFRoaXMgaXMgYSBvbmUtb2ZmIHVzZSBjbGFzcy4gIEluIHRoZSBwcm9jZXNzIG9mIHByb3ZpZGluZyBieXRlcyB0bworICogdGhlIHBhcnNlciwgaXQgcnVucyB0aHJvdWdoIHRoZSB0cmFuc2Zvcm1zLCB3aGljaCAoY3VycmVudGx5KSBjYW5ub3QgYmUKKyAqIHJlc2V0LgorICoKKyAqLworCisKK2NsYXNzIERTSUdfRVhQT1JUIFhTRUNUWEZNSW5wdXRTb3VyY2UgOiBwdWJsaWMgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIElucHV0U291cmNlCit7CisKK3B1YmxpYyA6CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBDb25zdHJ1Y3QgYXJvdW5kIGFuIGV4aXN0aW5nIHRyYW5zZm9ybSBsaXN0CisJICoKKwkgKiBAcGFyYW0gbHN0IFRoZSBmaW5hbCBUWEZNIGVsZW1lbnQgaW4gdGhlIGlucHV0IGNoYWluLgorCSAqIEBwYXJhbSBkZWxldGVXaGVuRG9uZSBGbGFnIHRvIGluc3RydWN0IHRoZSBjbGFzcyB0byBkZWxldGUgdGhlIGNoYWluIHdoZW4KKwkgKiBkb25lLiAgQnkgZGVmYXVsdCBzZXQgdG8gdHJ1ZS4KKwkgKi8KKworICAgIFhTRUNUWEZNSW5wdXRTb3VyY2UoVFhGTUNoYWluICogbHN0LCBib29sIGRlbGV0ZVdoZW5Eb25lID0gdHJ1ZSk7CisKKwkvKioKKwkgKiBcYnJpZWYgRGVzdHJ1Y3RvcgorCSAqCisJICogRGVsZXRlIHRoZSBvYmplY3QuICBJZiBkZWxldGVXaGVuRG9uZSB3YXMgc2V0IGR1cmluZyBjb25zdHJ1Y3Rpb24sIHdpbGwKKwkgKiBkZWxldGUgdGhlIGNoYWluIGlmIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIGRvbmUuCisJICovCisKKyAgICB2aXJ0dWFsIH5YU0VDVFhGTUlucHV0U291cmNlKCk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgU3RyZWFtIG1hbmFnZW1lbnQgbWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBJbnRlcmZhY2UgbWV0aG9kCisJICoKKwkgKiBSZXR1cm5zIGFuIElucHV0U3RyZWFtIHRoYXQgY2FuIGJlIHJlYWQgYnkgdGhlIHBhcnNlcgorCSAqLworCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIEJpbklucHV0U3RyZWFtKiBtYWtlU3RyZWFtKCkgY29uc3Q7CisKKwkvL0B9CisKK3ByaXZhdGUgOgorCisJbXV0YWJsZSBUWEZNQ2hhaW4JCQkqIG1wX2NoYWluOwkJCS8vIEVuZCBwb2ludCBvZiBsaXN0CisJYm9vbAkJCQkJCW1fZGVsZXRlV2hlbkRvbmU7CS8vIERvIHdlIGRlbGV0ZT8KKworfTsKKworCisjZW5kaWYgLyogWFNFQ1RYRk1JTlBVVFNPVVJDRV9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy91dGlscy9YU0VDWFBhdGhOb2RlTGlzdC5jcHAgYi9jL3NyYy91dGlscy9YU0VDWFBhdGhOb2RlTGlzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg0YmI5NgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3V0aWxzL1hTRUNYUGF0aE5vZGVMaXN0LmNwcApAQCAtMCwwICsxLDcxNiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ1hQYXRoTm9kZUxpc3QgOj0gQSBzdHJ1Y3R1cmUgdG8gaG9sZCBub2RlIGxpc3RzIGZyb20gWFBhdGggCisgKiBldmFsdWF0aW9ucworICoKKyAqICRJZCQKKyAqCisgKi8KKworLy8gWFNFQworCisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDWFBhdGhOb2RlTGlzdC5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKworI2luY2x1ZGUgPHN0cmluZy5oPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzLgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWFNFQ1hQYXRoTm9kZUxpc3Q6OlhTRUNYUGF0aE5vZGVMaXN0KHVuc2lnbmVkIGludCBpbml0aWFsU2l6ZSkgeworCisJbV9udW0gPSAwOworCW1wX3RyZWUgPSBOVUxMOworCit9CisKK1hTRUNYUGF0aE5vZGVMaXN0OjpYU0VDWFBhdGhOb2RlTGlzdChjb25zdCBYU0VDWFBhdGhOb2RlTGlzdCAmb3RoZXIpIHsKKworCW1fbnVtID0gb3RoZXIubV9udW07CisJbXBfdHJlZSA9IGNvcHlfdHJlZShvdGhlci5tcF90cmVlKTsKKwltcF9jdXJyZW50ID0gTlVMTDsKKworfQorCitYU0VDWFBhdGhOb2RlTGlzdDo6flhTRUNYUGF0aE5vZGVMaXN0KCkgeworCisJLy8gRGVsZXRlIGFsbCB0aGUgZWxlbWVudHMgaW4gdGhlIG5vZGUgbGlzdAorCWRlbGV0ZV90cmVlKG1wX3RyZWUpOworCit9CisKK1hTRUNYUGF0aE5vZGVMaXN0ICYgWFNFQ1hQYXRoTm9kZUxpc3Q6Om9wZXJhdG9yPSAoY29uc3QgWFNFQ1hQYXRoTm9kZUxpc3QgJiB0b0NvcHkpIHsKKworCS8vIEZvciBub3cgc2ltcGx5IGRlbGV0ZSB0aGUgb2xkIGxpc3QgYW5kIHNldCB3aXRoIHRoZSBuZXcKKwkvLyBMYXJnZSBvdmVyaGVhZCBhcyB3ZSBjYWxsIG90aGVyIGZ1bmN0aW9ucywgYnV0IHNpbXBsZXN0IHdheSB0bworCS8vIGltcGxlbWVudCBmb3Igbm93CisKKwltcF90cmVlID0gY29weV90cmVlKHRvQ29weS5tcF90cmVlKTsKKwltX251bSA9IHRvQ29weS5tX251bTsKKwltcF9jdXJyZW50ID0gTlVMTDsKKwlyZXR1cm4gKnRoaXM7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBVdGlsaXR5IEZ1bmN0aW9ucy4KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hTRUNYUGF0aE5vZGVMaXN0OjpidG4gKiBYU0VDWFBhdGhOb2RlTGlzdDo6ZmluZE5vZGVJbmRleChjb25zdCBET01Ob2RlICpuKSBjb25zdCB7CisKKwlidG4gKiB0ID0gbXBfdHJlZTsKKworCXdoaWxlICh0ICE9IE5VTEwgJiYgdC0+diAhPSBuKSB7CisKKwkJaWYgKG4gPiB0LT52KQorCQkJdCA9IHQtPnI7CisJCWVsc2UKKwkJCXQgPSB0LT5sOworCX0KKworCXJldHVybiB0OworCit9CisKK3ZvaWQgWFNFQ1hQYXRoTm9kZUxpc3Q6OmRlbGV0ZV90cmVlKGJ0biAqIHQpIHsKKworCWlmICh0ID09IE5VTEwpCisJCXJldHVybjsKKworCWJ0biAqIHBhcmVudCwgKiBuOworCisJbiA9IHQ7CisJd2hpbGUgKG4gIT0gTlVMTCkgeworCisJCWlmIChuLT5sKQorCQkJbiA9IG4tPmw7CisJCWVsc2UgaWYgKG4tPnIpCisJCQluID0gbi0+cjsKKworCQllbHNlIHsKKwkJCXBhcmVudCA9IG4tPnA7CisJCQlpZiAocGFyZW50ICE9IE5VTEwpIHsKKwkJCQlpZiAocGFyZW50LT5sID09IG4pCisJCQkJCXBhcmVudC0+bCA9IE5VTEw7CisJCQkJZWxzZSAKKwkJCQkJcGFyZW50LT5yID0gTlVMTDsKKwkJCX0KKwkJCS8vIERlbGV0ZSB0aGlzIG5vZGUKKwkJCWRlbGV0ZSBuOworCQkJbiA9IHBhcmVudDsKKwkJfQorCX0KKworfQorCitYU0VDWFBhdGhOb2RlTGlzdDo6YnRuICogWFNFQ1hQYXRoTm9kZUxpc3Q6OmNvcHlfdHJlZShidG4gKiB0KSBjb25zdCB7CisKKwlpZiAodCA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCWJ0biAqIG4sICpjLCAqY3AsICpyZXQ7CisgICAgYyA9IGNwID0gTlVMTDsKKworCW4gPSB0OworCWJvb2wgY3JlYXRlID0gdHJ1ZTsKKwlyZXQgPSBOVUxMOworCXdoaWxlIChuICE9IE5VTEwpIHsKKworCQlpZiAoY3JlYXRlKSB7CisJCQlYU0VDbmV3KGMsIGJ0bik7CisJCQljLT5sID0gTlVMTDsKKwkJCWMtPnIgPSBOVUxMOworCQkJYy0+diA9IG4tPnY7CisKKwkJCS8vIFIgd2UgYXQgdG9wPworCQkJaWYgKHJldCA9PSBOVUxMKSB7CisJCQkJcmV0ID0gYzsKKwkJCQljLT5wID0gTlVMTDsKKwkJCQljcCA9IE5VTEw7CisJCQl9CisKKwkJCWVsc2UgeworCQkJCWMtPnAgPSBjcDsKKwkJCQlpZiAoY3AgIT0gTlVMTCkgeworCQkJCQlpZiAobi0+cC0+bCA9PSBuKQorCQkJCQkJY3AtPmwgPSBjOworCQkJCQllbHNlCisJCQkJCQljcC0+ciA9IGM7CisJCQkJfQorCQkJfQorCQl9CisKKwkJLy8gR28gZG93biEKKwkJaWYgKGMtPmwgPT0gTlVMTCAmJiBuLT5sICE9IE5VTEwpIHsKKwkJCWNwID0gYzsKKwkJCW4gPSBuLT5sOworCQkJY3JlYXRlID0gdHJ1ZTsKKwkJfQorCQllbHNlIGlmIChjLT5yID09IE5VTEwgJiYgbi0+ciAhPSBOVUxMKSB7CisJCQljcCA9IGM7CisJCQluID0gbi0+cjsKKwkJCWNyZWF0ZSA9IHRydWU7CisJCX0KKwkJZWxzZSB7CisKKwkJCS8vIEdvIEJhY2sgVXAhCisJCQluID0gbi0+cDsKKwkJCWMgPSBjcDsKKwkJCWlmIChjcCAhPSBOVUxMKQorCQkJCWNwID0gY3AtPnA7CisJCQljcmVhdGUgPSBmYWxzZTsKKwkJfQorCX0KKworCXJldHVybiByZXQ7Cit9CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBBZGRpbmcgYW5kIERlbGV0aW5nIE5vZGVzLgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbG9uZyBYU0VDWFBhdGhOb2RlTGlzdDo6YmFsYW5jZV9jb3VudChidG4gKiB0KSBjb25zdCB7CisKKwlpZiAodCA9PSBOVUxMKQorCQlyZXR1cm4gMDsKKworCWxvbmcgciA9ICh0LT5yID09IE5VTEwgPyAwIDogdC0+ci0+aCk7CisJbG9uZyBsID0gKHQtPmwgPT0gTlVMTCA/IDAgOiB0LT5sLT5oKTsKKworCXJldHVybiByIC0gbDsKKworfQorCitsb25nIFhTRUNYUGF0aE5vZGVMaXN0OjpjYWxjX2hlaWdodChidG4gKiB0KSB7CisKKwlpZiAodCA9PSBOVUxMKQorCQlyZXR1cm4gMDsKKwlpZiAodC0+bCA9PSBOVUxMKSB7CisJCWlmICh0LT5yID09IE5VTEwpCisJCQlyZXR1cm4gMTsKKwkJcmV0dXJuIHQtPnItPmggKyAxOworCX0KKwllbHNlIHsKKwkJaWYgKHQtPnIgPT0gTlVMTCkKKwkJCXJldHVybiB0LT5sLT5oICsgMTsKKwl9CisKKwlyZXR1cm4gKCh0LT5sLT5oID4gdC0+ci0+aCA/IHQtPmwtPmggOiB0LT5yLT5oKSArIDEpOworfQorCit2b2lkIFhTRUNYUGF0aE5vZGVMaXN0Ojpyb3RhdGVfcmlnaHQoYnRuICogdCkgeworCisJLy8gUm90YXRlIG1lIHJpZ2h0IQorCWJ0biAqIGxjID0gdC0+bDsKKworCS8vIEZpcnN0IC0gYXJlIHdlIGF0IHRoZSByb290PworCWlmICh0ID09IG1wX3RyZWUpIHsKKwkJbGMtPnAgPSBOVUxMOworCQltcF90cmVlID0gbGM7CisJfQorCWVsc2UgeworCQlpZiAodC0+cC0+bCA9PSB0KSB7CisJCQl0LT5wLT5sID0gbGM7CisJCX0KKwkJZWxzZSB7CisJCQl0LT5wLT5yID0gbGM7CisJCX0KKworCQlsYy0+cCA9IHQtPnA7CisJfQorCisJLy8gRG8gdGhlIHJvdGF0ZQorCXQtPmwgPSBsYy0+cjsKKwlpZiAodC0+bCkKKwkJdC0+bC0+cCA9IHQ7CisJbGMtPnIgPSB0OworCXQtPnAgPSBsYzsKKworCS8vIFJlY2FsY3VsYXRlIGhlaWdodHMKKwlsYyA9IHQ7CisJd2hpbGUgKGxjICE9IE5VTEwpIHsKKwkJbGMtPmggPSBjYWxjX2hlaWdodChsYyk7CisJCWxjID0gbGMtPnA7CisJfQorCit9CisKKwordm9pZCBYU0VDWFBhdGhOb2RlTGlzdDo6cm90YXRlX2xlZnQoYnRuICogdCkgeworCisJLy8gUm90YXRlIG1lIGxlZnQhCisJYnRuICogcmMgPSB0LT5yOworCisJLy8gRmlyc3QgLSBhcmUgd2UgYXQgdGhlIHJvb3Q/CisJaWYgKHQgPT0gbXBfdHJlZSkgeworCQlyYy0+cCA9IE5VTEw7CisJCW1wX3RyZWUgPSByYzsKKwl9CisJZWxzZSB7CisJCWlmICh0LT5wLT5yID09IHQpIHsKKwkJCXQtPnAtPnIgPSByYzsKKwkJfQorCQllbHNlIHsKKwkJCXQtPnAtPmwgPSByYzsKKwkJfQorCisJCXJjLT5wID0gdC0+cDsKKwl9CisKKwkvLyBEbyB0aGUgcm90YXRlCisJdC0+ciA9IHJjLT5sOworCWlmICh0LT5yKQorCQl0LT5yLT5wID0gdDsKKwlyYy0+bCA9IHQ7CisJdC0+cCA9IHJjOworCisJLy8gUmVjYWxjdWxhdGUgaGVpZ2h0cworCXJjID0gdDsKKwl3aGlsZSAocmMgIT0gTlVMTCkgeworCQlyYy0+aCA9IGNhbGNfaGVpZ2h0KHJjKTsKKwkJcmMgPSByYy0+cDsKKwl9CisKK30KKwordm9pZCBYU0VDWFBhdGhOb2RlTGlzdDo6YWRkTm9kZShjb25zdCBET01Ob2RlICpuKSB7CisKKwlidG4gKiB2OworCisJaWYgKG1fbnVtID09IDApIHsKKwkJWFNFQ25ldyhtcF90cmVlLCBidG4pOworCQltcF90cmVlLT5sID0gbXBfdHJlZS0+ciA9IE5VTEw7CisJCW1wX3RyZWUtPnYgPSBuOworCQltcF90cmVlLT5wID0gTlVMTDsKKwkJbXBfdHJlZS0+aCA9IDE7CisJCW1fbnVtID0gMTsKKwkJcmV0dXJuOworCX0KKworCS8vIEZpbmQgdGhlIG5vZGUKKwlidG4gKiB0ID0gbXBfdHJlZTsKKwlidG4gKiBsYXN0ID0gTlVMTDsKKworCXdoaWxlICh0ICE9IE5VTEwgJiYgdC0+diAhPSBuKSB7CisJCWxhc3QgPSB0OworCQlpZiAobiA+IHQtPnYpCisJCQl0ID0gdC0+cjsKKwkJZWxzZQorCQkJdCA9IHQtPmw7CisJfQorCisJaWYgKHQgIT0gTlVMTCkKKwkJLy8gTm9kZSBhbHJlYWR5IGV4aXN0cyBpbiB0cmVlIQorCQlyZXR1cm47CisKKwkvLyBXb3JrIG91dCB0aGUgaW5zZXJ0aW9uLgorCVhTRUNuZXcodiwgYnRuKTsKKwl2LT52ID0gbjsKKwl2LT5yID0gdi0+bCA9IE5VTEw7CisJdi0+aCA9IDE7CisJdi0+cCA9IGxhc3Q7CisKKwkvLyBEZXRlcm1pbmUgb24gd2hpY2ggbGVnIHRvIHBsYWNlIHRoZSBuZXcgdmFsdWUKKwlpZiAobiA+IGxhc3QtPnYpCisJCWxhc3QtPnIgPSB2OworCWVsc2UKKwkJbGFzdC0+bCA9IHY7CisKKwkvLyBSZWNhbGN1bGF0ZSBoZWlnaHRzCisJdCA9IGxhc3Q7CisJbG9uZyBuZXdoOworCXdoaWxlICh0ICE9IE5VTEwpIHsKKwkJbmV3aCA9IGNhbGNfaGVpZ2h0KHQpOworCQlpZiAobmV3aCA+IHQtPmgpIHsKKwkJCXQtPmggPSBuZXdoOworCQkJdCA9IHQtPnA7CisJCX0KKwkJZWxzZQorCQkJLy8gSWYgdGhlIGhlaWdodCBpcyB0aGUgc2FtZSBoZXJlLCB0aGVuIG5vdGhpbmcgd2lsbCBoYXZlIGNoYW5nZWQgYWJvdmUKKwkJCXQgPSBOVUxMOworCX0KKworCS8vIFJlYmFsYW5jZSEKKwkKKwl0ID0gbGFzdDsKKwl3aGlsZSAodCAhPSBOVUxMKSB7CQkKKwkJbG9uZyBiYWwgPSBiYWxhbmNlX2NvdW50KHQpOworCQlsb25nIGJhbHJjID0gYmFsYW5jZV9jb3VudCh0LT5yKTsKKwkJbG9uZyBiYWxsYyA9IGJhbGFuY2VfY291bnQodC0+bCk7CisKKwkJLy8gQ2FzZSAxIC0gQmFsYW5jZSBpcyBPSworCQlpZiAoYmFsIDw9IDEgJiYgYmFsID49IC0xKSB7CisJCQkvLyBEbyBub3RoaW5nIQorCQl9CisKKwkJLy8gQ2FzZSAyYSAtIEJhbGFuY2UgaXMgLTIgYW5kIExDID0gLTEKKwkJZWxzZSBpZiAoYmFsID09IC0yICYmIGJhbGxjID09IC0xKSB7CisKKwkJCS8vIFJvdGF0ZSBjdXJyZW50IG5vZGUgcmlnaHQKKwkJCXJvdGF0ZV9yaWdodCh0KTsKKwkJfQorCQkvLyBPciBiYWxhbmNlIGlzICsyIGFuZCBSQyA9ICsxCisJCWVsc2UgaWYgKGJhbCA9PSAyICYmIGJhbHJjICA9PSAxKSB7CisKKwkJCS8vIFJvdGF0ZSBjdXJyZW50IG5vZGUgbGVmdAorCQkJcm90YXRlX2xlZnQodCk7CisJCX0KKwkJLy8gQ2FzZSAyYiA9IEJhbGFuY2UgaXMgLTIgYW5kIExDID0gKzEKKwkJZWxzZSBpZiAoYmFsID09IC0yICYmIGJhbGxjID09IDEpIHsKKworCQkJLy8gRG91YmxlIFJpZ2h0IHJvdGF0aW9uCisJCQlyb3RhdGVfbGVmdCh0LT5sKTsKKwkJCXJvdGF0ZV9yaWdodCh0KTsKKwkJfQorCisJCWVsc2UgeworCQkJcm90YXRlX3JpZ2h0KHQtPnIpOworCQkJcm90YXRlX2xlZnQodCk7CisKKwkJfQorCisJCXQgPSB0LT5wOworCisJfQorCit9CisKK3ZvaWQgWFNFQ1hQYXRoTm9kZUxpc3Q6OnJlbW92ZU5vZGUoY29uc3QgRE9NTm9kZSAqbikgeworCisJYnRuICogdCwgKiBsYXN0OworICAgIGxhc3QgPSBOVUxMOworCWJ0biAqIGkgPSBmaW5kTm9kZUluZGV4KG4pOworCisJaWYgKGkgPT0gTlVMTCkKKwkJLy8gTm90IGZvdW5kIQorCQlyZXR1cm47CisKKwkvLyBEZWxldGUgZnJvbSB0cmVlCisJaWYgKGkgPT0gbXBfdHJlZSkgeworCQkvLyBCdWdnZXIgLSB3ZSBhcmUgYXQgdGhlIHRvcCBvZiB0aGUgdHJlZQorCisJCS8vIE9LIC0gTm8gY2hpbGRyZW4/CisJCWlmIChpLT5sID09IE5VTEwgJiYgaS0+ciA9PSBOVUxMKSB7CisJCQkvLyBXb29Ib28hICBFYXN5IQorCQkJZGVsZXRlIG1wX3RyZWU7CisJCQltcF90cmVlID0gTlVMTDsKKwkJfQorCisJCS8vIE9uZSBDaGlsZD8KKwkJaWYgKGktPmwgIT0gTlVMTCAmJiBpLT5yID09IE5VTEwpIHsKKworCQkJLy8gV29vSG9vISBFYXN5IQorCQkJbXBfdHJlZSA9IGktPmw7CisJCQltcF90cmVlLT5wID0gTlVMTDsKKwkJCWRlbGV0ZSBpOworCQl9CisJCWlmIChpLT5yICE9IE5VTEwgJiYgaS0+bCA9PSBOVUxMKSB7CisKKwkJCS8vIFdvb0hvbyEgRWFzeSEKKwkJCW1wX3RyZWUgPSBpLT5yOworCQkJbXBfdHJlZS0+cCA9IE5VTEw7CisJCQlkZWxldGUgaTsKKwkJfQorCisJCS8vIE9oIGRlYXIgPSB3ZSBoYXZlIHR3byBjaGlsZHJlbiBhbmQgbm93IHNvbWUgaGVhcnRhY2hlCisJCWlmIChpLT5yLT5sID09IE5VTEwgJiYgaS0+ci0+ciA9PSBOVUxMKSB7CisKKwkJCS8vIE5vIHN1YnRyZWUgb24gcmlnaHQgaGFuZCBzaWRlLgorCQkJbXBfdHJlZSA9IG1wX3RyZWUtPmw7CisJCQltcF90cmVlLT5wID0gTlVMTDsKKwkJCXQgPSBtcF90cmVlLT5yOworCQkJbGFzdCA9IG1wX3RyZWU7CisJCQl3aGlsZSAodCAhPSBOVUxMKSB7CisJCQkJbGFzdCA9IHQ7CisJCQkJaWYgKGktPnItPnYgPCB0LT52KQorCQkJCQl0ID0gdC0+bDsKKwkJCQllbHNlCisJCQkJCXQgPSB0LT5yOworCQkJfQorCisJCQlpZiAoaS0+ci0+diA8IGxhc3QtPnYpIHsKKwkJCQlsYXN0LT5sID0gaS0+cjsKKwkJCQlpLT5yLT5wID0gbGFzdDsKKwkJCX0KKwkJCWVsc2UgeworCQkJCWxhc3QtPnIgPSBpLT5yOworCQkJCWktPnItPnAgPSBsYXN0OworCQkJfQorCQl9CisKKwkJZWxzZSB7CisKKwkJCS8vIE5lZWQgdG8gZmluZCB0aGUgImluLW9yZGVyIiBzdWNjZXNzb3IKKwkJCXQgPSBpLT5yOworCisJCQl3aGlsZSAodCAhPSBOVUxMKSB7CisJCQkJbGFzdCA9IHQ7CisJCQkJdD10LT5sOworCQkJfQorCisJCQlpZiAobGFzdCA9PSBpLT5yKSB7CisJCQkJLy8gY2FuJ3QgaGF2ZSBiZWVuIGEgbGVmdCBoYW5kIGxlZyBvbiB0aGUgbmV4dCBub2RlISkKKwkJCQlsYXN0LT5sID0gaS0+bDsKKwkJCQlpZiAobGFzdC0+bCAhPSBOVUxMKQorCQkJCQlsYXN0LT5sLT5wID0gbGFzdDsKKworCQkJCW1wX3RyZWUgPSBsYXN0OworCQkJCWxhc3QtPnAgPSBOVUxMOworCisJCQkJZGVsZXRlIGk7CisJCQl9CisJCQllbHNlIHsKKwkJCQorCQkJCS8vIE9LIC0gTGFzdCBpcyBub3cgdGhlIG5leHQgYmlnZ2VzdCBub2RlLCBhbmQgaXQgZG9lc247dAorCQkJCS8vIGhhdmUgYW55dGhpbmcgb24gaXQncyBsZWZ0IChvdGhlcndpc2UgdGhlcmUgd291bGQgYmUgc29tZXRoaW5nIHNtYWxsZXIpCisKKwkJCQlsYXN0LT5wLT5sID0gbGFzdC0+cjsKKwkJCQlsYXN0LT5yLT5wID0gbGFzdC0+cDsKKwkJCQlsYXN0LT5sID0gaS0+bDsKKwkJCQlsYXN0LT5yID0gaS0+cjsKKwkJCQlpZiAobGFzdC0+ciAhPSBOVUxMKQorCQkJCQlsYXN0LT5yLT5wID0gbGFzdDsKKwkJCQlpZiAobGFzdC0+bCAhPSBOVUxMKQorCQkJCQlsYXN0LT5sLT5wID0gbGFzdDsKKworCQkJCW1wX3RyZWUgPSBsYXN0OworCQkJCWxhc3QtPnAgPSBOVUxMOworCQkJCQorCQkJCWRlbGV0ZSBpOworCisJCQl9CisJCX0KKwl9CisKKwllbHNlIHsgCisJCQorCQkvKiBpICE9IG1wX3RyZWUgKi8KKwkJLy8gT0sgLSBObyBjaGlsZHJlbj8KKwkJaWYgKGktPmwgPT0gTlVMTCAmJiBpLT5yID09IE5VTEwpIHsKKwkJCS8vIFdvb0hvbyEgIEVhc3khCisJCQlpZiAoaS0+cC0+bCA9PSBpKQorCQkJCWktPnAtPmwgPSBOVUxMOworCQkJZWxzZQorCQkJCWktPnAtPnIgPSBOVUxMOworCisJCQlkZWxldGUgaTsKKwkJfQorCisJCS8vIE9uZSBDaGlsZD8KKwkJaWYgKGktPmwgIT0gTlVMTCAmJiBpLT5yID09IE5VTEwpIHsKKworCQkJLy8gV29vSG9vISBFYXN5IQorCQkJaWYgKGktPnAtPmwgPT0gaSkgeworCQkJCWktPnAtPmwgPSBpLT5sOworCQkJCWktPmwtPnAgPSBpLT5wOworCQkJfQorCQkJZWxzZSB7CisJCQkJaS0+cC0+ciA9IGktPmw7CisJCQkJaS0+ci0+cCA9IGktPnA7CisJCQl9CisJCQlkZWxldGUgaTsKKwkJfQorCQlpZiAoaS0+ciAhPSBOVUxMICYmIGktPmwgPT0gTlVMTCkgeworCisJCQkvLyBXb29Ib28hIEVhc3khCisJCQlpZiAoaS0+cC0+bCA9PSBpKSB7CisJCQkJaS0+cC0+bCA9IGktPnI7CisJCQkJaS0+ci0+cCA9IGktPnA7CisJCQl9CisJCQllbHNlIHsKKwkJCQlpLT5wLT5yID0gaS0+cjsKKwkJCQlpLT5yLT5wID0gaS0+cDsKKwkJCX0KKwkJCWRlbGV0ZSBpOworCQl9CisKKwkJLy8gT2ggZGVhciA9IHdlIGhhdmUgdHdvIGNoaWxkcmVuIGFuZCBub3cgc29tZSBoZWFydGFjaGUKKwkJaWYgKGktPnItPmwgPT0gTlVMTCAmJiBpLT5yLT5yID09IE5VTEwpIHsKKworCQkJLy8gTm8gc3VidHJlZSBvbiByaWdodCBoYW5kIHNpZGUuCisJCQlpZiAoaS0+cC0+bCA9PSBpKSB7CisJCQkJLy8gV2FzIGxlZnQgaGFuZCBjaGlsZAorCQkJCWktPnAtPmwgPSBpLT5sOworCQkJCWktPmwtPnAgPSBpLT5wOworCQkJCXQgPSBpLT5sOworCisJCQkJLy8gRmluZCBpbnNlcnRpb24gcG9pbnQgZm9yIGRhbmdsaW5nIG5vZGUKKwkJCQl3aGlsZSAodCAhPSBOVUxMKSB7CisJCQkJCWxhc3QgPSB0OworCQkJCQl0ID0gdC0+cjsKKwkJCQl9CisKKwkJCQlsYXN0LT5yID0gaS0+cjsKKwkJCQlpLT5yLT5wID0gbGFzdDsKKwkJCX0KKwkJCWVsc2UgeworCQkJCS8vIFdhcyByaWdodCBoYW5kIGNoaWxkCisJCQkJaS0+cC0+ciA9IGktPmw7CisJCQkJaS0+bC0+cCA9IGktPnA7CisJCQkJdCA9IGktPmw7CisKKwkJCQkvLyBGaW5kIGluc2VydGlvbiBwb2ludCBmb3IgZGFuZ2xpbmcgbm9kZQorCQkJCXdoaWxlICh0ICE9IE5VTEwpIHsKKwkJCQkJbGFzdCA9IHQ7CisJCQkJCXQgPSB0LT5yOworCQkJCX0KKworCQkJCWxhc3QtPnIgPSBpLT5yOworCQkJCWktPnItPnAgPSBsYXN0OworCQkJfQorCisKKwkJfQorCisJCWVsc2UgeworCisJCQkvLyBTdWJ0cmVlIC0gc28gbmVlZCB0byBmaW5kIHRoZSAiaW4tb3JkZXIiIHN1Y2Nlc3NvcgorCQkJdCA9IGktPnI7CisKKwkJCXdoaWxlICh0ICE9IE5VTEwpIHsKKwkJCQlsYXN0ID0gdDsKKwkJCQl0PXQtPmw7CisJCQl9CisKKwkJCS8vIE9LIC0gTGFzdCBpcyBub3cgdGhlIG5leHQgYmlnZ2VzdCBub2RlLCBhbmQgaXQgZG9lc247dAorCQkJLy8gaGF2ZSBhbnl0aGluZyBvbiBpdCdzIGxlZnQgKG90aGVyd2lzZSB0aGVyZSB3b3VsZCBiZSBzb21ldGhpbmcgc21hbGxlcikKKworCQkJbGFzdC0+cC0+bCA9IGxhc3QtPnI7CisJCQlsYXN0LT5yLT5wID0gbGFzdC0+cDsKKwkJCWxhc3QtPmwgPSBpLT5sOworCQkJbGFzdC0+ciA9IGktPnI7CisJCQlpZiAobGFzdC0+ciAhPSBOVUxMKQorCQkJCWxhc3QtPnItPnAgPSBsYXN0OworCQkJaWYgKGxhc3QtPmwgIT0gTlVMTCkKKwkJCQlsYXN0LT5sLT5wID0gbGFzdDsKKworCQkJbXBfdHJlZSA9IGxhc3Q7CisJCQlsYXN0LT5wID0gTlVMTDsKKwkJCQorCQkJZGVsZXRlIGk7CisKKwkJfQorCX0KKworCW1fbnVtLS07Cit9CisKK3ZvaWQgWFNFQ1hQYXRoTm9kZUxpc3Q6OmNsZWFyKCkgeworCisJbV9udW0gPSAwOworCWRlbGV0ZV90cmVlKG1wX3RyZWUpOworCW1wX3RyZWUgPSBOVUxMOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgSW5mb3JtYXRpb24gZnVuY3Rpb25zLgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitib29sIFhTRUNYUGF0aE5vZGVMaXN0OjpoYXNOb2RlKGNvbnN0IERPTU5vZGUgKm4pIGNvbnN0IHsKKworCWJ0biAqIGkgPSBmaW5kTm9kZUluZGV4KG4pOworCisJcmV0dXJuIChpICE9IE5VTEwpOworCit9CisKK2NvbnN0IERPTU5vZGUgKlhTRUNYUGF0aE5vZGVMaXN0OjpnZXRGaXJzdE5vZGUodm9pZCkgY29uc3QgeworCisKKwlpZiAobXBfdHJlZSA9PSBOVUxMKSAKKwkJcmV0dXJuIE5VTEw7CisKKwkvLyBGaW5kIHRoZSBzbWFsbGVzdCBub2RlCisJbXBfY3VycmVudCA9IG1wX3RyZWU7CisJd2hpbGUgKG1wX2N1cnJlbnQtPmwgIT0gTlVMTCkKKwkJbXBfY3VycmVudCA9IG1wX2N1cnJlbnQtPmw7CisKKwlyZXR1cm4gbXBfY3VycmVudC0+djsKKworfQorCitjb25zdCBET01Ob2RlICpYU0VDWFBhdGhOb2RlTGlzdDo6Z2V0TmV4dE5vZGUodm9pZCkgY29uc3QgeworCisJaWYgKG1wX2N1cnJlbnQgPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisKKwlidG4gKiB0ID0gbXBfY3VycmVudDsKKworCWlmICh0LT5yICE9IE5VTEwpIHsKKwkJLy8gRmluZCBuZXh0IGJpZ2dlc3Qgbm9kZQorCQl0ID0gdC0+cjsKKwkJd2hpbGUgKHQtPmwgIT0gTlVMTCkKKwkJCXQgPSB0LT5sOworCQltcF9jdXJyZW50ID0gdDsKKwl9CisJZWxzZSB7CisJCS8vIEdvIGJhY2t3YXJkcyEKKwkJdCA9IG1wX2N1cnJlbnQtPnA7CisJCXdoaWxlICh0ICE9IE5VTEwgJiYgdC0+ciA9PSBtcF9jdXJyZW50KSB7CisJCQltcF9jdXJyZW50ID0gdDsKKwkJCXQgPSB0LT5wOworCQl9CisKKwkJaWYgKHQgPT0gTlVMTCkgeworCQkJbXBfY3VycmVudCA9IE5VTEw7CisJCQlyZXR1cm4gTlVMTDsKKwkJfQorCQltcF9jdXJyZW50ID0gdDsKKwl9CisKKwlyZXR1cm4gdC0+djsKKworfQorCQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBJbnRlcnNlY3Qgd2l0aCBhbm90aGVyIGxpc3QKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgWFNFQ1hQYXRoTm9kZUxpc3Q6OmludGVyc2VjdChjb25zdCBYU0VDWFBhdGhOb2RlTGlzdCAmdG9JbnRlcnNlY3QpIHsKKworCS8vIENyZWF0ZSBhIG5ldyBsaXN0CisJWFNFQ1hQYXRoTm9kZUxpc3QgcmV0OworCisJY29uc3QgRE9NTm9kZSAqIG4gPSBnZXRGaXJzdE5vZGUoKTsKKwl3aGlsZSAobiAhPSBOVUxMKSB7CisKKwkJaWYgKHRvSW50ZXJzZWN0Lmhhc05vZGUobikpCisJCQlyZXQuYWRkTm9kZShuKTsKKworCQluID0gZ2V0TmV4dE5vZGUoKTsKKworCX0KKworCS8vIFN3YXAgbGlzdHMKKwlidG4gKiB0ID0gbXBfdHJlZTsKKwltcF90cmVlID0gcmV0Lm1wX3RyZWU7CisJcmV0Lm1wX3RyZWUgPSB0OworCW1fbnVtID0gcmV0Lm1fbnVtOworCisJcmV0dXJuOworCit9CisKZGlmZiAtLWdpdCBhL2Mvc3JjL3V0aWxzL1hTRUNYUGF0aE5vZGVMaXN0LmhwcCBiL2Mvc3JjL3V0aWxzL1hTRUNYUGF0aE5vZGVMaXN0LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGU2OGY0Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdXRpbHMvWFNFQ1hQYXRoTm9kZUxpc3QuaHBwCkBAIC0wLDAgKzEsMjA4IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYU0VDWFBhdGhOb2RlTGlzdCA6PSBBIHN0cnVjdHVyZSB0byBob2xkIG5vZGUgbGlzdHMgZnJvbSBYUGF0aCAKKyAqIGV2YWx1YXRpb25zCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhTRUNYUEFUSE5PREVMSVNUX0lOQ0xVREUKKyNkZWZpbmUgWFNFQ1hQQVRITk9ERUxJU1RfSU5DTFVERQorCisvLyBYU0VDCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorCisvLyBYZXJjZXMKKworWFNFQ19ERUNMQVJFX1hFUkNFU19DTEFTUyhET01Ob2RlKQorCisjZGVmaW5lIF9YU0VDX05PREVMSVNUX0RFRkFVTFRfU0laRQkxMDAKKworLyoqCisgKiBAaW5ncm91cCBpbnRlcm5hbAorICovCisKKy8qKgorICogXGJyaWVmIENsYXNzIGZvciBob2xkaW5nIGxpc3RzIG9mIERPTU5vZGVzLgorICoKKyAqIFRoaXMgY2xhc3MgaXMgdXNlZCBwcmltYXJpbHkgZm9yIGhvbGRpbmcgbGlzdHMgb2Ygbm9kZXMgZm91bmQgZHVyaW5nIFhQYXRoCisgKiBwcm9jZXNzaW5nLiAgSXQgaXMgYWxzbyB1c2VkIGZvciB4cGF0aC1maWx0ZXIgd2hpY2ggcmVxdWlyZXMgbXVsdGlwbGUgbGlzdAorICogY29tcGFyaXNvbnMuCisgKgorICogSXQgaXMgbm90IGltcGxlbWVudGVkIHVzaW5nIG9uZSBvZiB0aGUgY29udGFpbmVyIGNsYXNzZXMgYXMgaXQgaGFzIHRoZQorICogcG90ZW50aWFsIHRvIGJlY29tZSBhIHJlYWwgYm90dGxlbmVjay4gIEl0IGNvdWxkIHBvdGVudGlhbGx5IGJlIGltcGxlbWVudGVkCisgKiBhcyBhIGhhc2ggbGlzdCBiYXNlZCBvbiBuYW1lcyBvZiBub2RlcyAob3IgZXZlbiBwb2ludGVycykuCisgKgorICovCisKK2NsYXNzIERTSUdfRVhQT1JUIFhTRUNYUGF0aE5vZGVMaXN0IHsKKworcHVibGljOgorCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycywgRGVzdHJ1Y3RvcnMgYW5kIG9wZXJhdG9ycyAqLworCS8vQHsKKworCVhTRUNYUGF0aE5vZGVMaXN0KHVuc2lnbmVkIGludCBpbml0aWFsU2l6ZSA9IF9YU0VDX05PREVMSVNUX0RFRkFVTFRfU0laRSk7CisKKwkvKioKKwkgKiBcYnJpZWYgQ29weSBDb25zdHJ1Y3RvcgorCSAqCisJICogQG5vdGUgVGhlIFhTRUMgTGlicmFyeSBnZW5lcmFsbHkgcGFzc2VzIE5vZGVMaXN0cyBhcm91bmQgYXMgcG9pbnRlcnMuCisJICogVGhlcmUgaXMgYSBMQVJHRSBvdmVyaGVhZCBhc3NvY2lhdGVkIHdpdGggcmUtY3JlYXRpbmcgbGlzdHMsIHNvIHdlCisJICogdHJ5IHRvIGF2b2lkIGRvaW5nIGl0IHVubGVzcyBuZWNlc3NhcnkuCisJICovCisKKwlYU0VDWFBhdGhOb2RlTGlzdChjb25zdCBYU0VDWFBhdGhOb2RlTGlzdCAmb3RoZXIpOworCisJflhTRUNYUGF0aE5vZGVMaXN0KCk7CisKKwkvKioKKwkgKiBcYnJpZWYgQXNzaWdubWVudCBPcGVyYXRvci4KKwkgKgorCSAqIFNldCBvbmUgbm9kZSBsaXN0IGVxdWFsIHRvIGFub3RoZXIuCisJICoKKwkgKiBAbm90ZSBEbyBub3QgZG8gdGhpcyBmcmVxdWVudGx5LCBwYXJ0aWN1bGFybHkgZm9yIGxhcmdlIGxpc3RzCisJICogYXMgaXQgd2lsbCByZXBsaWNhdGUgdGhlIGVudGlyZSBsaXN0IGFuZCBpcyBhIGZhaXJseSBleHBlbnNpdmUKKwkgKiBvcGVyYXRpb24KKwkgKgorCSAqIEBwYXJhbSB0b0NvcHkgVGhlIGxpc3QgdG8gYmUgY29waWVkIGZyb20KKwkgKi8KKworCVhTRUNYUGF0aE5vZGVMaXN0ICYgb3BlcmF0b3I9IChjb25zdCBYU0VDWFBhdGhOb2RlTGlzdCAmIHRvQ29weSk7CisKKworCS8vQH0KKworCisJLyoqIEBuYW1lIEFkZGluZyBhbmQgRGVsZXRpbmcgbm9kZXMgKi8KKwkvL0B7CisKKwkvKioKKwkgKlxicmllZiBBZGQgYSBub2RlIHRvIHRoZSBsaXN0LgorCSAqCisJICogQ2hlY2tzIHRvIHNlZSB3aGV0aGVyIHRoZSBub2RlIGlzIGFscmVhZHkgaW4gdGhlIGxpc3QsIGFuZCBpZiBub3QKKwkgKiBhZGRzIGl0LgorCSAqCisJICogQHBhcmFtIG4gVGhlIG5vZGUgdG8gYWRkLgorCSAqLworCisJdm9pZCBhZGROb2RlKGNvbnN0IFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICpuKTsKKworCS8qKgorCSAqIFxicmllZiBSZW1vdmUgYSBub2RlIGZyb20gdGhlIGxpc3QuCisJICoKKwkgKiBHaXZlbiBhIG5vZGUsIGZpbmQgaXQgaW4gdGhlIGxpc3QgYW5kIChpZiBpdCBleGlzdHMpIGRlbGV0ZSBpdCBmcm9tIHRoZSBsaXN0LgorCSAqCisJICogQHBhcmFtIG4gVGhlIG5vZGUgdG8gYmUgcmVtb3ZlZC4KKwkgKi8KKworCXZvaWQgcmVtb3ZlTm9kZShjb25zdCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqbik7CisKKwkvKioKKwkgKiBcYnJpZWYgQ2xlYXIgb3V0IHRoZSBlbnRpcmUgbGlzdCwgZGVsZXRpbmcgYWxsIGVudHJpZXMuCisJICoKKwkgKi8KKworCXZvaWQgY2xlYXIodm9pZCk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgUmVhZGluZyBMaXN0IEZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBDaGVjayBpZiBhIG5vZGUgZXhpc3RzIGluIHRoZSBsaXN0LgorCSAqCisJICogQHBhcmFtIG4gVGhlIG5vZGUgdG8gZmluZCBpbiB0aGUgbGlzdC4KKwkgKi8KKworCWJvb2wgaGFzTm9kZShjb25zdCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqbikgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBmaXJzdCBub2RlIGluIHRoZSBsaXN0LgorCSAqCisJICogUmV0dXJucyB0aGUgZmlyc3Qgbm9kZSBpbiB0aGUgbGlzdCBvZiBub2RlcyBhbmQgcmVzZXRzIHRoZSBzZWFyY2ggbGlzdC4KKwkgKgorCSAqIEByZXR1cm5zIFRoZSBmaXJzdCBub2RlIGluIHRoZSBsaXN0IG9yIE5VTEwgaWYgbm9uZSBleGlzdAorCSAqLworCisJY29uc3QgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUgKiBnZXRGaXJzdE5vZGUodm9pZCkgY29uc3Q7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBuZXh0IG5vZGUgaW4gdGhlIGxpc3QKKwkgKgorCSAqIFJldHVybnMgdGhlIG5leHQgbm9kZSBpbiB0aGUgbGlzdC4KKwkgKgorCSAqIEByZXR1cm5zIFRoZSBuZXh0IG5vZGUgaW4gdGhlIGxpc3Qgb2YgTlVMTCBpZiBub25lIGV4aXN0CisJICovCisKKwljb25zdCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqZ2V0TmV4dE5vZGUodm9pZCkgY29uc3Q7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgTWFuaXB1bGF0aW5nIE5vZGVzZXRzICovCisJLy9AeworCisJLyoqCisJICpcYnJpZWYgSW50ZXJzZWN0IHdpdGggbm9kZXNldAorCSAqCisJICogRGVsZXRlIGFueSBub2RlcyBpbiBteSBsaXN0IHRoYXQgYXJlIG5vdCBpbiB0aGUgaW50ZXJzZWN0IGxpc3QKKwkgKgorCSAqIEBwYXJhbSB0b0ludGVyc2VjdCBUaGUgbGlzdCB0byBpbnRlcnNlY3Qgd2l0aC4KKwkgKi8KKworCXZvaWQgaW50ZXJzZWN0KGNvbnN0IFhTRUNYUGF0aE5vZGVMaXN0ICZ0b0ludGVyc2VjdCk7CisKKwkvL0B9CisKK3ByaXZhdGU6CisKKwkvKiBJbXBsZW1lbnQgYW4gdW5iYWxhbmNlZCBiaW5hcnkgc2VhcmNoIHRyZWUgKi8KKwl0eXBlZGVmIHN0cnVjdCBzX2J0biB7CisJCXN0cnVjdCBzX2J0biAqIGw7CQkvLyBMZWZ0CisJCXN0cnVjdCBzX2J0biAqIHI7CQkvLyBSaWdodAorCQlzdHJ1Y3Qgc19idG4gKiBwOwkJLy8gUGFyZW50CisJCWNvbnN0IFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlCisJCQkJCSAqIHY7CQkvLyBWYWx1ZQorCQlsb25nICAgICAgICAgICBoOwkJLy8gSGVpZ2h0CisJfSBidG47CisKKwkvLyBJbnRlcm5hbCBmdW5jdGlvbnMKKwlidG4gKiBmaW5kTm9kZUluZGV4KGNvbnN0IFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICogbikgY29uc3Q7CisJdm9pZCBkZWxldGVfdHJlZShidG4gKiB0KTsKKwlidG4gKiBjb3B5X3RyZWUoYnRuICogdCkgY29uc3QgOworCWxvbmcgYmFsYW5jZV9jb3VudChidG4gKiB0KSBjb25zdDsKKwl2b2lkIHJvdGF0ZV9sZWZ0KGJ0biAqIHQpOworCXZvaWQgcm90YXRlX3JpZ2h0KGJ0biAqIHQpOworCWxvbmcgY2FsY19oZWlnaHQoYnRuICogdCk7CisKKwlidG4JCQkJCQkJCSogbXBfdHJlZTsJCQkvLyBUaGUgdHJlZQorCXVuc2lnbmVkIGludAkJCQkJbV9udW07CQkJCS8vIE51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgdHJlZQorCisJbXV0YWJsZSBidG4JCQkJCQkqIG1wX2N1cnJlbnQ7CQkvLyBjdXJyZW50IHBvaW50IGluIGxpc3QgZm9yIGdldE5leHROb2RlCit9OworCisKKworI2VuZGlmIC8qIFhTRUNYUEFUSE5PREVMSVNUX0lOQ0xVREUgKi8KKwpkaWZmIC0tZ2l0IGEvYy9zcmMvdXRpbHMvdW5peHV0aWxzL1hTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0uY3BwIGIvYy9zcmMvdXRpbHMvdW5peHV0aWxzL1hTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZGI3ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy91dGlscy91bml4dXRpbHMvWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbS5jcHAKQEAgLTAsMCArMSwzNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDEwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0gOj0gUmUtaW1wbGVtZW50YXRpb24gb2YgWGVyY2VzIEJpbkhUVFBJbnB1dFN0cmVhbQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd3MgdXMgdG8gbW9kaWZ5IGFuZCBjcmVhdGUgYW4gaW5wdXQKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtIHRoYXQgZm9sbG93cyByZS1kaXJlY3RzIHdoaWNoIGlzCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lY2Vzc2FyeSB0byBmdWxseSBzdXBwb3J0IFhNTC1EU0lHIGludGVyb3AKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICogJExvZyQKKyAqIFJldmlzaW9uIDEuOCAgMjAwNS8wMi8wMyAxMzo1NTowOCAgbWlsYW4KKyAqIEFwYWNoZSBsaWNlbmNlIGZpeC4KKyAqCisgKiBSZXZpc2lvbiAxLjcgIDIwMDQvMDIvMDggMTA6NTA6MjIgIGJsYXV0ZW5iCisgKiBVcGRhdGUgdG8gQXBhY2hlIDIuMCBsaWNlbnNlCisgKgorICogUmV2aXNpb24gMS42ICAyMDAzLzA5LzExIDExOjI5OjEyICBibGF1dGVuYgorICogRml4IFhlcmNlcyBuYW1lc3BhY2UgdXNhZ2UgaW4gKk5JWCBidWlsZAorICoKKyAqIFJldmlzaW9uIDEuNSAgMjAwMy8wNy8wNSAxMDozMDozNyAgYmxhdXRlbmIKKyAqIENvcHlyaWdodCB1cGRhdGUKKyAqCisgKiBSZXZpc2lvbiAxLjQgIDIwMDMvMDUvMTkgMTI6MzE6MDAgIGJsYXV0ZW5iCisgKiBDbGVhbmVkIHVwIGNvbnN0YW50cyBzbyBjYW4gY29tcGlsZSB1bmRlciBJTlRFTCBjb21waWxlcgorICoKKyAqIFJldmlzaW9uIDEuMyAgMjAwMy8wMy8yMyAwOTo0OTo0OSAgYmxhdXRlbmIKKyAqIFNpbGx5IG1pc3R5cGUgaW4gPT0KKyAqCisgKiBSZXZpc2lvbiAxLjIgIDIwMDMvMDMvMTUgMjI6NDE6NDYgIGJsYXV0ZW5iCisgKiBBZGQgMzAxIChwZXJtYW5lbnRseSBtb3ZlZCkgc3VwcG9ydAorICoKKyAqIFJldmlzaW9uIDEuMSAgMjAwMy8wMi8xMiAxMToyMTowMyAgYmxhdXRlbmIKKyAqIFVOSVggZ2VuZXJpYyBVUkkgcmVzb2x2ZXIKKyAqCisgKgorICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNpbmNsdWRlIDxuZXRkYi5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvdW5peHV0aWxzL1hTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0uaHBwPgorCisjaW5jbHVkZSAiLi4vLi4vdXRpbHMvWFNFQ0F1dG9QdHIuaHBwIgorCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTE5ldEFjY2Vzc29yLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MU3RyaW5nLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MRXhjZXB0TXNncy5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL0phbml0b3IuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxVbmlEZWZzLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKK2ludCBYU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtOjpnZXRTb2NrZXRIYW5kbGUoY29uc3QgWE1MVXJpJiAgdXJsU291cmNlKSB7CisKKyAgICAvLworICAgIC8vIFB1bGwgYWxsIG9mIHRoZSBwYXJ0cyBvZiB0aGUgVVJMIG91dCBvZiB0aCB1cmxTb3VyY2Ugb2JqZWN0LCBhbmQgdHJhbnNjb2RlIHRoZW0KKyAgICAvLyAgIGFuZCB0cmFuc2NvZGUgdGhlbSBiYWNrIHRvIEFTQ0lJLgorICAgIC8vCisgICAgY29uc3QgWE1MQ2gqICAgICAgICBob3N0TmFtZSA9IHVybFNvdXJjZS5nZXRIb3N0KCk7CisgICAgWFNFQ0F1dG9QdHJDaGFyICAgICBob3N0TmFtZUFzQ2hhclN0YXIoaG9zdE5hbWUpOworCisgICAgY29uc3QgWE1MQ2gqICAgICAgICBwYXRoID0gdXJsU291cmNlLmdldFBhdGgoKTsKKyAgICBYU0VDQXV0b1B0ckNoYXIgICAgIHBhdGhBc0NoYXJTdGFyKHBhdGgpOworCisgICAgY29uc3QgWE1MQ2gqICAgICAgICBmcmFnbWVudCA9IHVybFNvdXJjZS5nZXRGcmFnbWVudCgpOworICAgIFhTRUNBdXRvUHRyQ2hhciAgICAgZnJhZ21lbnRBc0NoYXJTdGFyKGZyYWdtZW50KTsKKworICAgIGNvbnN0IFhNTENoKiAgICAgICAgcXVlcnkgPSB1cmxTb3VyY2UuZ2V0UXVlcnlTdHJpbmcoKTsKKyAgICBYU0VDQXV0b1B0ckNoYXIgICAgIHF1ZXJ5QXNDaGFyU3RhcihxdWVyeSk7CisKKyAgICB1bnNpZ25lZCBzaG9ydCAgICAgIHBvcnROdW1iZXIgPSAodW5zaWduZWQgc2hvcnQpIHVybFNvdXJjZS5nZXRQb3J0KCk7CisJaWYgKHBvcnROdW1iZXIgPT0gVVNIUlRfTUFYKQorCQlwb3J0TnVtYmVyID0gODA7CisKKyAgICAvLworICAgIC8vIFNldCB1cCBhIHNvY2tldC4KKyAgICAvLworICAgIHN0cnVjdCBob3N0ZW50KiAgICAgaG9zdEVudFB0ciA9IDA7CisgICAgc3RydWN0IHNvY2thZGRyX2luICBzYTsKKworCisgICAgaWYgKChob3N0RW50UHRyID0gZ2V0aG9zdGJ5bmFtZShob3N0TmFtZUFzQ2hhclN0YXIuZ2V0KCkpKSA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbG9uZyAgbnVtQWRkcmVzcyA9IGluZXRfYWRkcihob3N0TmFtZUFzQ2hhclN0YXIuZ2V0KCkpOworICAgICAgICBpZiAobnVtQWRkcmVzcyA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBUaHJvd1hNTChOZXRBY2Nlc3NvckV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgIFhNTEV4Y2VwdHM6Ok5ldEFjY19UYXJnZXRSZXNvbHV0aW9uKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKGhvc3RFbnRQdHIgPQorICAgICAgICAgICAgICAgIGdldGhvc3RieWFkZHIoKGNoYXIgKikgJm51bUFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodW5zaWduZWQgbG9uZyksIEFGX0lORVQpKSA9PSBOVUxMKQorICAgICAgICB7CisgICAgICAgICAgICBUaHJvd1hNTChOZXRBY2Nlc3NvckV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgIFhNTEV4Y2VwdHM6Ok5ldEFjY19UYXJnZXRSZXNvbHV0aW9uKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1lbWNweSgodm9pZCAqKSAmc2Euc2luX2FkZHIsCisgICAgICAgICAgIChjb25zdCB2b2lkICopIGhvc3RFbnRQdHItPmhfYWRkciwgaG9zdEVudFB0ci0+aF9sZW5ndGgpOworICAgIHNhLnNpbl9mYW1pbHkgPSBob3N0RW50UHRyLT5oX2FkZHJ0eXBlOworICAgIHNhLnNpbl9wb3J0ID0gaHRvbnMocG9ydE51bWJlcik7CisKKyAgICBpbnQgcyA9IHNvY2tldChob3N0RW50UHRyLT5oX2FkZHJ0eXBlLCBTT0NLX1NUUkVBTSwgMCk7CisgICAgaWYgKHMgPCAwKQorICAgIHsKKyAgICAgICAgdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpIVFRQVVJJSW5wdXRTdHJlYW1FcnJvciwKKwkJCQkJCQkiRXJyb3IgY3JlYXRpbmcgc29ja2V0Iik7CisKKyAgICB9CisKKyAgICBpZiAoY29ubmVjdChzLCAoc3RydWN0IHNvY2thZGRyICopICZzYSwgc2l6ZW9mKHNhKSkgPCAwKQorICAgIHsKKyAgICAgICAgdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpIVFRQVVJJSW5wdXRTdHJlYW1FcnJvciwKKwkJCQkJCQkiRXJyb3IgY29ubmVjdGluZyB0byBlbmQgc2VydmVyIik7CisgICAgfQorCisgICAgLy8gVGhlIHBvcnQgaXMgb3BlbiBhbmQgcmVhZHkgdG8gZ28uCisgICAgLy8gQnVpbGQgdXAgdGhlIGh0dHAgR0VUIGNvbW1hbmQgdG8gc2VuZCB0byB0aGUgc2VydmVyLgorICAgIC8vIFRvIGRvOiAgV2Ugc2hvdWxkIHJlYWxseSBzdXBwb3J0IGh0dHAgMS4xLiAgVGhpcyBpbXBsZW1lbnRhdGlvbgorICAgIC8vICAgICAgICAgaXMgd2Vhay4KKyAgICBzdHJjcHkoZkJ1ZmZlciwgIkdFVCAiKTsKKyAgICBzdHJjYXQoZkJ1ZmZlciwgcGF0aEFzQ2hhclN0YXIuZ2V0KCkpOworCisgICAgaWYgKHF1ZXJ5QXNDaGFyU3Rhci5nZXQoKSAhPSAwKQorICAgIHsKKyAgICAgICAgc2l6ZV90IG4gPSBzdHJsZW4oZkJ1ZmZlcik7CisgICAgICAgIGZCdWZmZXJbbl0gPSBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgY2hRdWVzdGlvbjsKKyAgICAgICAgZkJ1ZmZlcltuKzFdID0gWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoTnVsbDsKKyAgICAgICAgc3RyY2F0KGZCdWZmZXIsIHF1ZXJ5QXNDaGFyU3Rhci5nZXQoKSk7CisgICAgfQorCisgICAgaWYgKGZyYWdtZW50QXNDaGFyU3Rhci5nZXQoKSAhPSAwKQorICAgIHsKKyAgICAgICAgc3RyY2F0KGZCdWZmZXIsIGZyYWdtZW50QXNDaGFyU3Rhci5nZXQoKSk7CisgICAgfQorICAgIHN0cmNhdChmQnVmZmVyLCAiIEhUVFAvMS4wXHJcbiIpOworCisKKyAgICBzdHJjYXQoZkJ1ZmZlciwgIkhvc3Q6ICIpOworICAgIHN0cmNhdChmQnVmZmVyLCBob3N0TmFtZUFzQ2hhclN0YXIuZ2V0KCkpOworICAgIGlmIChwb3J0TnVtYmVyICE9IDgwKQorICAgIHsKKyAgICAgICAgaW50IGkgPSBzdHJsZW4oZkJ1ZmZlcik7CisJCXNwcmludGYoZkJ1ZmZlcitpLCAiOiVkIiwgcG9ydE51bWJlcik7CisgICAgICAgIC8vIF9pdG9hKHBvcnROdW1iZXIsIGZCdWZmZXIraSwgMTApOworICAgIH0KKyAgICBzdHJjYXQoZkJ1ZmZlciwgIlxyXG5cclxuIik7CisKKyAgICAvLyBTZW5kIHRoZSBodHRwIHJlcXVlc3QKKyAgICBpbnQgbGVudCA9IHN0cmxlbihmQnVmZmVyKTsKKyAgICBpbnQgIGFMZW50ID0gMDsKKyAgICBpZiAoKGFMZW50ID0gd3JpdGUocywgKHZvaWQgKikgZkJ1ZmZlciwgbGVudCkpICE9IGxlbnQpCisgICAgeworICAgICAgICB0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkhUVFBVUklJbnB1dFN0cmVhbUVycm9yLAorCQkJCQkJCSJFcnJvciB3cml0aW5nIHRvIHNvY2tldCIpOworICAgIH0KKworICAgIC8vCisgICAgLy8gZ2V0IHRoZSByZXNwb25zZSwgY2hlY2sgdGhlIGh0dHAgaGVhZGVyIGZvciBlcnJvcnMgZnJvbSB0aGUgc2VydmVyLgorICAgIC8vCisgICAgYUxlbnQgPSByZWFkKHMsICh2b2lkICopZkJ1ZmZlciwgc2l6ZW9mKGZCdWZmZXIpLTEpOworICAgIGlmIChhTGVudCA8PSAwKQorICAgIHsKKyAgICAgICAgdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpIVFRQVVJJSW5wdXRTdHJlYW1FcnJvciwKKwkJCQkJCQkiRXJyb3IgcmVwb3J0ZWQgcmVhZGluZyBzb2NrZXQiKTsKKyAgICB9CisKKyAgICBmQnVmZmVyRW5kID0gZkJ1ZmZlcithTGVudDsKKyAgICAqZkJ1ZmZlckVuZCA9IDA7CisKKyAgICAvLyBGaW5kIHRoZSBicmVhayBiZXR3ZWVuIHRoZSByZXR1cm5lZCBodHRwIGhlYWRlciBhbmQgYW55IGRhdGEuCisgICAgLy8gIChEZWxpbWl0ZWQgYnkgYSBibGFuayBsaW5lKQorICAgIC8vIEhhbmcgb24gdG8gYW55IGRhdGEgZm9yIHVzZSBieSB0aGUgZmlyc3QgcmVhZCBmcm9tIHRoaXMgQmluSFRUUFVSTElucHV0U3RyZWFtLgorICAgIC8vCisgICAgZkJ1ZmZlclBvcyA9IHN0cnN0cihmQnVmZmVyLCAiXHJcblxyXG4iKTsKKyAgICBpZiAoZkJ1ZmZlclBvcyAhPSAwKQorICAgIHsKKyAgICAgICAgZkJ1ZmZlclBvcyArPSA0OworICAgICAgICAqKGZCdWZmZXJQb3MtMikgPSAwOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBmQnVmZmVyUG9zID0gc3Ryc3RyKGZCdWZmZXIsICJcblxuIik7CisgICAgICAgIGlmIChmQnVmZmVyUG9zICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGZCdWZmZXJQb3MgKz0gMjsKKyAgICAgICAgICAgICooZkJ1ZmZlclBvcy0xKSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZkJ1ZmZlclBvcyA9IGZCdWZmZXJFbmQ7CisgICAgfQorCisgICAgLy8gTWFrZSBzdXJlIHRoZSBoZWFkZXIgaW5jbHVkZXMgYW4gSFRUUCAyMDAgT0sgcmVzcG9uc2UuCisgICAgLy8KKyAgICBjaGFyICpwID0gc3Ryc3RyKGZCdWZmZXIsICJIVFRQIik7CisgICAgaWYgKHAgPT0gMCkKKyAgICB7CisgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SFRUUFVSSUlucHV0U3RyZWFtRXJyb3IsCisJCQkJCQkJIkVycm9yIHJlcG9ydGVkIHJlYWRpbmcgc29ja2V0Iik7CisgICAgfQorCisgICAgcCA9IHN0cmNocihwLCAnICcpOworICAgIGlmIChwID09IDApCisgICAgeworICAgICAgICB0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkhUVFBVUklJbnB1dFN0cmVhbUVycm9yLAorCQkJCQkJCSJFcnJvciByZXBvcnRlZCByZWFkaW5nIHNvY2tldCIpOworICAgIH0KKworICAgIGludCBodHRwUmVzcG9uc2UgPSBhdG9pKHApOworCisJaWYgKGh0dHBSZXNwb25zZSA9PSAzMDIgfHwgaHR0cFJlc3BvbnNlID09IDMwMSkgeworCQkvL09uY2UgZ3Jvd3MsIHNob3VsZCB1c2UgYSBzd2l0Y2gKKwkJY2hhciByZWRpcmVjdEJ1ZlsyNTZdOworCQlpbnQgcTsKKworCQkvLyBGaW5kIHRoZSAiTG9jYXRpb246IiBzdHJpbmcKKwkJcCA9IHN0cnN0cihwLCAiTG9jYXRpb246Iik7CisJCWlmIChwID09IDApCisgICAgICAgIHsKKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SFRUUFVSSUlucHV0U3RyZWFtRXJyb3IsCisJCQkJCQkJIkVycm9yIHJlcG9ydGVkIHJlYWRpbmcgc29ja2V0Iik7CisJCX0KKwkJcCA9IHN0cmNocihwLCAnICcpOworCQlpZiAocCA9PSAwKQorCQl7CisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkhUVFBVUklJbnB1dFN0cmVhbUVycm9yLAorCQkJCQkJCSJFcnJvciByZXBvcnRlZCByZWFkaW5nIHNvY2tldCIpOworCQl9CisKKwkJLy8gTm93IHJlYWQKKwkJcCsrOworCQlmb3IgKHE9MDsgcSA8IDI1NSAmJiBwW3FdICE9ICdccicgJiYgcFtxXSAhPSdcbic7ICsrcSkKKwkJCXJlZGlyZWN0QnVmW3FdID0gcFtxXTsKKworCQlyZWRpcmVjdEJ1ZltxXSA9ICdcMCc7CisKKwkJLy8gVHJ5IHRvIGZpbmQgdGhpcyBsb2NhdGlvbgorICAgICAgICBYU0VDQXV0b1B0clhNTENoIHJlZGlyZWN0QnVmVHJhbnMocmVkaXJlY3RCdWYpOworCisJCXJldHVybiBnZXRTb2NrZXRIYW5kbGUoWE1MVXJpKHJlZGlyZWN0QnVmVHJhbnMuZ2V0KCkpKTsKKwl9CisKKyAgICBlbHNlIGlmIChodHRwUmVzcG9uc2UgIT0gMjAwKQorICAgIHsKKyAgICAgICAgLy8gTW9zdCBsaWtlbHkgYSA0MDQgTm90IEZvdW5kIGVycm9yLgorICAgICAgICAvLyAgIFNob3VsZCByZWNvZ25pemUgYW5kIGhhbmRsZSB0aGUgZm9yd2FyZGluZyByZXNwb25zZXMuCisgICAgICAgIC8vCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SFRUUFVSSUlucHV0U3RyZWFtRXJyb3IsCisJCQkJCQkiVW5rbm93biBIVFRQIFJlc3BvbnNlIik7CisgICAgfQorCisJcmV0dXJuIHM7Cit9CisKKworWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbTo6WFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbShjb25zdCBYTUxVcmkmIHVybFNvdXJjZSkKKyAgICAgIDogZlNvY2tldCgwKQorICAgICAgLCBmQnl0ZXNQcm9jZXNzZWQoMCkKK3sKKworICAgIGZTb2NrZXQgPSBnZXRTb2NrZXRIYW5kbGUodXJsU291cmNlKTsKKworfQorCisKKworWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbTo6flhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0oKQoreworICAgIHNodXRkb3duKGZTb2NrZXQsIDIpOworICAgIGNsb3NlKGZTb2NrZXQpOworfQorCisKK3hzZWNzaXplX3QgWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbTo6cmVhZEJ5dGVzKFhNTEJ5dGUqIGNvbnN0ICAgIHRvRmlsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIGNvbnN0IHhzZWNzaXplX3QgICAgbWF4VG9SZWFkKQoreworICAgIHhzZWNzaXplX3QgbGVuID0gZkJ1ZmZlckVuZCAtIGZCdWZmZXJQb3M7CisgICAgaWYgKGxlbiA+IDApCisgICAgeworICAgICAgICAvLyBJZiB0aGVyZSdzIGFueSBkYXRhIGxlZnQgb3ZlciBpbiB0aGUgYnVmZmVyIGludG8gd2hpY2ggd2UgZmlyc3QKKyAgICAgICAgLy8gICByZWFkIGZyb20gdGhlIHNlcnZlciAodG8gZ2V0IHRoZSBodHRwIGhlYWRlciksIHJldHVybiB0aGF0LgorICAgICAgICBpZiAobGVuID4gbWF4VG9SZWFkKQorICAgICAgICAgICAgbGVuID0gbWF4VG9SZWFkOworICAgICAgICBtZW1jcHkodG9GaWxsLCBmQnVmZmVyUG9zLCBsZW4pOworICAgICAgICBmQnVmZmVyUG9zICs9IGxlbjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgLy8gVGhlcmUgd2FzIG5vIGRhdGEgaW4gdGhlIGxvY2FsIGJ1ZmZlci4KKyAgICAgICAgLy8gUmVhZCBzb21lIGZyb20gdGhlIHNvY2tldCwgc3RyYWlnaHQgaW50byBvdXIgY2FsbGVyJ3MgYnVmZmVyLgorICAgICAgICAvLworICAgICAgICBsZW4gPSByZWFkKGZTb2NrZXQsICh2b2lkICopIHRvRmlsbCwgbWF4VG9SZWFkKTsKKyAgICAgICAgaWYgKGxlbiA9PSBVSU5UX01BWCkKKyAgICAgICAgeworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpIVFRQVVJJSW5wdXRTdHJlYW1FcnJvciwKKwkJCQkJCSJFcnJvciByZWFkaW5nIGZyb20gU29ja2V0Iik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmQnl0ZXNQcm9jZXNzZWQgKz0gbGVuOworICAgIHJldHVybiBsZW47Cit9CisKKyNpZmRlZiBYU0VDX1hFUkNFU19JTlBVVFNUUkVBTV9IQVNfQ09OVEVOVFRZUEUKK2NvbnN0IFhNTENoKiBYU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtOjpnZXRDb250ZW50VHlwZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYy9zcmMvdXRpbHMvdW5peHV0aWxzL1hTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0uaHBwIGIvYy9zcmMvdXRpbHMvdW5peHV0aWxzL1hTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0uaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5Yzc1N2MKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy91dGlscy91bml4dXRpbHMvWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbS5ocHAKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0gOj0gUmUtaW1wbGVtZW50YXRpb24gb2YgWGVyY2VzIEJpbkhUVFBJbnB1dFN0cmVhbQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd3MgdXMgdG8gbW9kaWZ5IGFuZCBjcmVhdGUgYW4gaW5wdXQKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtIHRoYXQgZm9sbG93cyByZS1kaXJlY3RzIHdoaWNoIGlzCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lY2Vzc2FyeSB0byBmdWxseSBzdXBwb3J0IFhNTC1EU0lHIGludGVyb3AKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICogJExvZyQKKyAqIFJldmlzaW9uIDEuNSAgMjAwNS8wMi8wMyAxMzo1NTowOCAgbWlsYW4KKyAqIEFwYWNoZSBsaWNlbmNlIGZpeC4KKyAqCisgKiBSZXZpc2lvbiAxLjQgIDIwMDQvMDIvMDggMTA6NTA6MjIgIGJsYXV0ZW5iCisgKiBVcGRhdGUgdG8gQXBhY2hlIDIuMCBsaWNlbnNlCisgKgorICogUmV2aXNpb24gMS4zICAyMDAzLzA5LzExIDExOjI5OjEyICBibGF1dGVuYgorICogRml4IFhlcmNlcyBuYW1lc3BhY2UgdXNhZ2UgaW4gKk5JWCBidWlsZAorICoKKyAqIFJldmlzaW9uIDEuMiAgMjAwMy8wNy8wNSAxMDozMDozOCAgYmxhdXRlbmIKKyAqIENvcHlyaWdodCB1cGRhdGUKKyAqCisgKiBSZXZpc2lvbiAxLjEgIDIwMDMvMDIvMTIgMTE6MjE6MDMgIGJsYXV0ZW5iCisgKiBVTklYIGdlbmVyaWMgVVJJIHJlc29sdmVyCisgKgorICoKKyAqLworCisjaWZuZGVmIFVOSVhYU0VDQklOSFRUUFVSSUlOUFVUU1RSRUFNX0hFQURFUgorI2RlZmluZSBVTklYWFNFQ0JJTkhUVFBVUklJTlBVVFNUUkVBTV9IRUFERVIKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxVcmkuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxFeGNlcHRNc2dzLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvQmluSW5wdXRTdHJlYW0uaHBwPgorCisvLworLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBCaW5JbnB1dFN0cmVhbSBpbnRlcmZhY2Ugc3BlY2lmaWVkIGJ5IHRoZSBYTUwKKy8vIHBhcnNlci4KKy8vCisKK2NsYXNzIERTSUdfRVhQT1JUIFhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0gOiBwdWJsaWMgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIEJpbklucHV0U3RyZWFtCit7CitwdWJsaWMgOgorICAgIFhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0oY29uc3QgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIFhNTFVyaSYgIHVybFNvdXJjZSk7CisgICAgflhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0oKTsKKworI2lmZGVmIFhTRUNfWEVSQ0VTXzY0QklUU0FGRQorICAgIFhNTEZpbGVQb3MgY3VyUG9zKCkgY29uc3Q7CisjZWxzZQorICAgIHVuc2lnbmVkIGludCBjdXJQb3MoKSBjb25zdDsKKyNlbmRpZgorICAgIHhzZWNzaXplX3QgcmVhZEJ5dGVzCisgICAgKAorICAgICAgICAgICAgICAgIFhNTEJ5dGUqIGNvbnN0ICB0b0ZpbGwKKyAgICAgICAgLCBjb25zdCB4c2Vjc2l6ZV90ICAgIG1heFRvUmVhZAorICAgICk7CisKKyNpZmRlZiBYU0VDX1hFUkNFU19JTlBVVFNUUkVBTV9IQVNfQ09OVEVOVFRZUEUKKyAgICBjb25zdCBYTUxDaCogZ2V0Q29udGVudFR5cGUoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlIDoKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vICBQcml2YXRlIGRhdGEgbWVtYmVycworICAgIC8vCisgICAgLy8gIGZTb2NrZXQKKyAgICAvLyAgICAgIFRoZSBzb2NrZXQgcmVwcmVzZW50aW5nIHRoZSBjb25uZWN0aW9uIHRvIHRoZSByZW1vdGUgZmlsZS4KKyAgICAvLyAgZkJ5dGVzUHJvY2Vzc2VkCisgICAgLy8gICAgICBJdHMgYSByb2xsaW5nIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgYnl0ZXMgcHJvY2Vzc2VkIG9mZiB0aGlzCisgICAgLy8gICAgICBpbnB1dCBzdHJlYW0uCisgICAgLy8gIGZCdWZmZXIKKyAgICAvLyAgICAgIEhvbGRzIHRoZSBodHRwIGhlYWRlciwgcGx1cyB0aGUgZmlyc3QgcGFydCBvZiB0aGUgYWN0dWFsCisgICAgLy8gICAgICBkYXRhLiAgRmlsbGVkIGF0IHRoZSB0aW1lIHRoZSBzdHJlYW0gaXMgb3BlbmVkLCBkYXRhIGdvZXMKKyAgICAvLyAgICAgIG91dCB0byB1c2VyIGluIHJlc3BvbnNlIHRvIHJlYWRCeXRlcygpLgorICAgIC8vICBmQnVmZmVyUG9zLCBmQnVmZmVyRW5kCisgICAgLy8gICAgICBQb2ludGVycyBpbnRvIGZCdWZmZXIsIHNob3dpbmcgc3RhcnQgYW5kIGVuZCsxIG9mIGNvbnRlbnQKKyAgICAvLyAgICAgIHRoYXQgcmVhZEJ5dGVzIG11c3QgcmV0dXJuLgorICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlpbnQgZ2V0U29ja2V0SGFuZGxlKGNvbnN0IFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBYTUxVcmkmICB1cmxTb3VyY2UpOworCisgICAgaW50ICAgICAgICAgICAgICAgICBmU29ja2V0OworICAgIHhzZWNzaXplX3QgICAgICAgICAgZkJ5dGVzUHJvY2Vzc2VkOworICAgIGNoYXIgICAgICAgICAgICAgICAgZkJ1ZmZlcls0MDAwXTsKKyAgICBjaGFyICogICAgICAgICAgICAgIGZCdWZmZXJFbmQ7CisgICAgY2hhciAqICAgICAgICAgICAgICBmQnVmZmVyUG9zOworCit9OworCisKK2lubGluZQorI2lmZGVmIFhTRUNfWEVSQ0VTXzY0QklUU0FGRQorWE1MRmlsZVBvcworI2Vsc2UKK3Vuc2lnbmVkIGludAorI2VuZGlmCitYU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtOjpjdXJQb3MoKSBjb25zdAoreworICAgIHJldHVybiBmQnl0ZXNQcm9jZXNzZWQ7Cit9CisKKworI2VuZGlmIC8vIFVOSVhYU0VDQklOSFRUUFVSSUlOUFVUU1RSRUFNX0hFQURFUgpkaWZmIC0tZ2l0IGEvYy9zcmMvdXRpbHMvdW5peHV0aWxzL1hTRUNTT0FQUmVxdWVzdG9yU2ltcGxlVW5peC5jcHAgYi9jL3NyYy91dGlscy91bml4dXRpbHMvWFNFQ1NPQVBSZXF1ZXN0b3JTaW1wbGVVbml4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWIwZGZjCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdXRpbHMvdW5peHV0aWxzL1hTRUNTT0FQUmVxdWVzdG9yU2ltcGxlVW5peC5jcHAKQEAgLTAsMCArMSwzODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDEwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNTT0FQUmVxdWVzdG9yU2ltcGxlIDo9IChWZXJ5KSBCYXNpYyBpbXBsZW1lbnRhdGlvbiBvZiBhIFNPQVAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgIEhUVFAgd3JhcHBlciBmb3IgdGVzdGluZyB0aGUgY2xpZW50IGNvZGUuCisgKgorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorI2luY2x1ZGUgPG5ldGRiLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKworI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1NPQVBSZXF1ZXN0b3JTaW1wbGUuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ1NhZmVCdWZmZXIuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisKKyNpbmNsdWRlICIuLi8uLi91dGlscy9YU0VDQXV0b1B0ci5ocHAiCisKKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxOZXRBY2Nlc3Nvci5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFN0cmluZy5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTEV4Y2VwdE1zZ3MuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9KYW5pdG9yLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MVW5pRGVmcy5ocHA+CisjaW5jbHVkZSA8aW9zdHJlYW0+CitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBQbGF0Zm9ybSBzcGVjaWZpYyBjb25zdHJ1Y3RvcgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitYU0VDU09BUFJlcXVlc3RvclNpbXBsZTo6WFNFQ1NPQVBSZXF1ZXN0b3JTaW1wbGUoY29uc3QgWE1MQ2ggKiB1cmkpIDogbV91cmkodXJpKSB7CisKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEludGVyZmFjZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitET01Eb2N1bWVudCAqIFhTRUNTT0FQUmVxdWVzdG9yU2ltcGxlOjpkb1JlcXVlc3QoRE9NRG9jdW1lbnQgKiByZXF1ZXN0KSB7CisKKworCWNoYXIgKiBjb250ZW50ID0gd3JhcEFuZFNlcmlhbGlzZShyZXF1ZXN0KTsKKworCS8vIEZpcnN0IHdlIG5lZWQgdG8gc2VyaWFsaXNlCisKKyAgICBjaGFyICAgICAgICAgICAgICAgIGZCdWZmZXJbNDAwMF07CisgICAgY2hhciAqICAgICAgICAgICAgICBmQnVmZmVyRW5kOworICAgIGNoYXIgKiAgICAgICAgICAgICAgZkJ1ZmZlclBvczsKKworICAgIC8vCisgICAgLy8gUHVsbCBhbGwgb2YgdGhlIHBhcnRzIG9mIHRoZSBVUkwgb3V0IG9mIHRoIG1fdXJpIG9iamVjdCwgYW5kIHRyYW5zY29kZSB0aGVtCisgICAgLy8gICBhbmQgdHJhbnNjb2RlIHRoZW0gYmFjayB0byBBU0NJSS4KKyAgICAvLworICAgIGNvbnN0IFhNTENoKiAgICAgICAgaG9zdE5hbWUgPSBtX3VyaS5nZXRIb3N0KCk7CisgICAgWFNFQ0F1dG9QdHJDaGFyICAgICBob3N0TmFtZUFzQ2hhclN0YXIoaG9zdE5hbWUpOworCisgICAgY29uc3QgWE1MQ2gqICAgICAgICBwYXRoID0gbV91cmkuZ2V0UGF0aCgpOworICAgIFhTRUNBdXRvUHRyQ2hhciAgICAgcGF0aEFzQ2hhclN0YXIocGF0aCk7CisKKyAgICBjb25zdCBYTUxDaCogICAgICAgIGZyYWdtZW50ID0gbV91cmkuZ2V0RnJhZ21lbnQoKTsKKyAgICBYU0VDQXV0b1B0ckNoYXIgICAgIGZyYWdtZW50QXNDaGFyU3RhcihmcmFnbWVudCk7CisKKyAgICBjb25zdCBYTUxDaCogICAgICAgIHF1ZXJ5ID0gbV91cmkuZ2V0UXVlcnlTdHJpbmcoKTsKKyAgICBYU0VDQXV0b1B0ckNoYXIgICAgIHF1ZXJ5QXNDaGFyU3RhcihxdWVyeSk7CisKKyAgICB1bnNpZ25lZCBzaG9ydCAgICAgIHBvcnROdW1iZXIgPSAodW5zaWduZWQgc2hvcnQpIG1fdXJpLmdldFBvcnQoKTsKKworCS8vIElmIG5vIG51bWJlciBpcyBzZXQsIGdvIHdpdGggcG9ydCA4MAorCWlmIChwb3J0TnVtYmVyID09IFVTSFJUX01BWCkKKwkJcG9ydE51bWJlciA9IDgwOworCisgICAgLy8KKyAgICAvLyBTZXQgdXAgYSBzb2NrZXQuCisgICAgLy8KKyAgICBzdHJ1Y3QgaG9zdGVudCogICAgIGhvc3RFbnRQdHIgPSAwOworICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAgc2E7CisKKworICAgIGlmICgoaG9zdEVudFB0ciA9IGdldGhvc3RieW5hbWUoaG9zdE5hbWVBc0NoYXJTdGFyLmdldCgpKSkgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgIG51bUFkZHJlc3MgPSBpbmV0X2FkZHIoaG9zdE5hbWVBc0NoYXJTdGFyLmdldCgpKTsKKyAgICAgICAgaWYgKG51bUFkZHJlc3MgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgVGhyb3dYTUwoTmV0QWNjZXNzb3JFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICBYTUxFeGNlcHRzOjpOZXRBY2NfVGFyZ2V0UmVzb2x1dGlvbik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKChob3N0RW50UHRyID0KKyAgICAgICAgICAgICAgICBnZXRob3N0YnlhZGRyKChjaGFyICopICZudW1BZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpLCBBRl9JTkVUKSkgPT0gTlVMTCkKKyAgICAgICAgeworICAgICAgICAgICAgVGhyb3dYTUwoTmV0QWNjZXNzb3JFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICBYTUxFeGNlcHRzOjpOZXRBY2NfVGFyZ2V0UmVzb2x1dGlvbik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtZW1jcHkoKHZvaWQgKikgJnNhLnNpbl9hZGRyLAorICAgICAgICAgICAoY29uc3Qgdm9pZCAqKSBob3N0RW50UHRyLT5oX2FkZHIsIGhvc3RFbnRQdHItPmhfbGVuZ3RoKTsKKyAgICBzYS5zaW5fZmFtaWx5ID0gaG9zdEVudFB0ci0+aF9hZGRydHlwZTsKKyAgICBzYS5zaW5fcG9ydCA9IGh0b25zKHBvcnROdW1iZXIpOworCisgICAgaW50IHMgPSBzb2NrZXQoaG9zdEVudFB0ci0+aF9hZGRydHlwZSwgU09DS19TVFJFQU0sIDApOworICAgIGlmIChzIDwgMCkKKyAgICB7CisgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SFRUUFVSSUlucHV0U3RyZWFtRXJyb3IsCisJCQkJCQkJIkVycm9yIGNyZWF0aW5nIHNvY2tldCIpOworCisgICAgfQorCisgICAgaWYgKGNvbm5lY3QocywgKHN0cnVjdCBzb2NrYWRkciAqKSAmc2EsIHNpemVvZihzYSkpIDwgMCkKKyAgICB7CisgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SFRUUFVSSUlucHV0U3RyZWFtRXJyb3IsCisJCQkJCQkJIkVycm9yIGNvbm5lY3RpbmcgdG8gZW5kIHNlcnZlciIpOworICAgIH0KKworICAgIC8vIFRoZSBwb3J0IGlzIG9wZW4gYW5kIHJlYWR5IHRvIGdvLgorICAgIC8vIEJ1aWxkIHVwIHRoZSBodHRwIEdFVCBjb21tYW5kIHRvIHNlbmQgdG8gdGhlIHNlcnZlci4KKyAgICAvLyBUbyBkbzogIFdlIHNob3VsZCByZWFsbHkgc3VwcG9ydCBodHRwIDEuMS4gIFRoaXMgaW1wbGVtZW50YXRpb24KKyAgICAvLyAgICAgICAgIGlzIHdlYWsuCisKKyAgICBtZW1zZXQoZkJ1ZmZlciwgMCwgc2l6ZW9mKGZCdWZmZXIpKTsKKworICAgIHN0cmNweShmQnVmZmVyLCAiUE9TVCAiKTsKKyAgICBzdHJjYXQoZkJ1ZmZlciwgcGF0aEFzQ2hhclN0YXIuZ2V0KCkpOworCisgICAgaWYgKHF1ZXJ5QXNDaGFyU3Rhci5nZXQoKSAhPSAwKQorICAgIHsKKyAgICAgICAgLy8gVGFjayBvbiBhID8gYmVmb3JlIHRoZSBmcmFnbWVudAorICAgICAgICBzdHJjYXQoZkJ1ZmZlciwiPyIpOworICAgICAgICBzdHJjYXQoZkJ1ZmZlciwgcXVlcnlBc0NoYXJTdGFyLmdldCgpKTsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnRBc0NoYXJTdGFyLmdldCgpICE9IDApCisgICAgeworICAgICAgICBzdHJjYXQoZkJ1ZmZlciwgZnJhZ21lbnRBc0NoYXJTdGFyLmdldCgpKTsKKyAgICB9CisgICAgc3RyY2F0KGZCdWZmZXIsICIgSFRUUC8xLjBcclxuIik7CisKKwlzdHJjYXQoZkJ1ZmZlciwgIkNvbnRlbnQtVHlwZTogdGV4dC94bWw7IGNoYXJzZXQ9dXRmLThcclxuIik7CisKKworICAgIHN0cmNhdChmQnVmZmVyLCAiSG9zdDogIik7CisgICAgc3RyY2F0KGZCdWZmZXIsIGhvc3ROYW1lQXNDaGFyU3Rhci5nZXQoKSk7CisgICAgaWYgKHBvcnROdW1iZXIgIT0gODApCisgICAgeworICAgICAgICBpbnQgaSA9IHN0cmxlbihmQnVmZmVyKTsKKwkJc3ByaW50ZihmQnVmZmVyK2ksICI6JWQiLCBwb3J0TnVtYmVyKTsKKyAgICB9CisJc3RyY2F0KGZCdWZmZXIsICJcclxuIik7CisKKwlzdHJjYXQoZkJ1ZmZlciwgIkNvbnRlbnQtTGVuZ3RoOiAiKTsKKyAgICBpbnQgaSA9IChpbnQpIHN0cmxlbihmQnVmZmVyKTsKKwlzcHJpbnRmKGZCdWZmZXIraSwgIiVkIiwgc3RybGVuKGNvbnRlbnQpKTsKKwlzdHJjYXQoZkJ1ZmZlciwgIlxyXG4iKTsKKwlzdHJjYXQoZkJ1ZmZlciwgIlNPQVBBY3Rpb246IFwiXCJcclxuIik7CisKKy8qCXN0cmNhdChmQnVmZmVyLCAiQ29ubmVjdGlvbjogQ2xvc2VcclxuIik7CisJc3RyY2F0KGZCdWZmZXIsICJDYWNoZS1Db250cm9sOiBuby1jYWNoZVxyXG4iKTsqLworICAgIHN0cmNhdChmQnVmZmVyLCAiXHJcbiIpOworCisJLy8gTm93IHRoZSBjb250ZW50CisJc3RyY2F0KGZCdWZmZXIsIGNvbnRlbnQpOworCisgICAgLy8gU2VuZCB0aGUgaHR0cCByZXF1ZXN0CisgICAgaW50IGxlbnQgPSBzdHJsZW4oZkJ1ZmZlcik7CisgICAgaW50ICBhTGVudCA9IDA7CisgICAgaWYgKChhTGVudCA9IHdyaXRlKHMsICh2b2lkICopIGZCdWZmZXIsIGxlbnQpKSAhPSBsZW50KQorICAgIHsKKyAgICAgICAgdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpIVFRQVVJJSW5wdXRTdHJlYW1FcnJvciwKKwkJCQkJCQkiRXJyb3Igd3JpdGluZyB0byBzb2NrZXQiKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIGdldCB0aGUgcmVzcG9uc2UsIGNoZWNrIHRoZSBodHRwIGhlYWRlciBmb3IgZXJyb3JzIGZyb20gdGhlIHNlcnZlci4KKyAgICAvLworICAgIGFMZW50ID0gcmVhZChzLCAodm9pZCAqKWZCdWZmZXIsIHNpemVvZihmQnVmZmVyKS0xKTsKKwkvKgorCWZCdWZmZXJbYUxlbnRdID0gJ1wwJzsKKwlwcmludGYoZkJ1ZmZlcik7CisJKi8KKyAgICBpZiAoYUxlbnQgPD0gMCkKKyAgICB7CisgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SFRUUFVSSUlucHV0U3RyZWFtRXJyb3IsCisJCQkJCQkJIkVycm9yIHJlcG9ydGVkIHJlYWRpbmcgc29ja2V0Iik7CisgICAgfQorCisgICAgZkJ1ZmZlckVuZCA9IGZCdWZmZXIrYUxlbnQ7CisgICAgKmZCdWZmZXJFbmQgPSAwOworCisgICAgLy8gRmluZCB0aGUgYnJlYWsgYmV0d2VlbiB0aGUgcmV0dXJuZWQgaHR0cCBoZWFkZXIgYW5kIGFueSBkYXRhLgorICAgIC8vICAoRGVsaW1pdGVkIGJ5IGEgYmxhbmsgbGluZSkKKyAgICAvLyBIYW5nIG9uIHRvIGFueSBkYXRhIGZvciB1c2UgYnkgdGhlIGZpcnN0IHJlYWQgZnJvbSB0aGlzIEJpbkhUVFBVUkxJbnB1dFN0cmVhbS4KKyAgICAvLworCWJvb2wgaGVhZGVyUmVhZCA9IGZhbHNlOworCWRvIHsKKwkJZkJ1ZmZlclBvcyA9IHN0cnN0cihmQnVmZmVyLCAiXHJcblxyXG4iKTsKKwkJaWYgKGZCdWZmZXJQb3MgIT0gMCkgeworCQkJZkJ1ZmZlclBvcyArPSA0OworCQkJKihmQnVmZmVyUG9zLTIpID0gMDsKKwkJCWhlYWRlclJlYWQgPSB0cnVlOworCQl9CisJCWVsc2UgeworCQkJZkJ1ZmZlclBvcyA9IHN0cnN0cihmQnVmZmVyLCAiXG5cbiIpOworCQkJaWYgKGZCdWZmZXJQb3MgIT0gMCkgeworCQkJCWZCdWZmZXJQb3MgKz0gMjsKKwkJCQkqKGZCdWZmZXJQb3MtMSkgPSAwOworCQkJCWhlYWRlclJlYWQgPSB0cnVlOworCQkJfQorCQkJZWxzZSB7CisJCQkJLy8KKwkJCQkvLyBIZWFkZXIgaXMgbm90IHlldCByZWFkLCBkbyBhbm90aGVyIHJlY3YoKSB0byBnZXQgbW9yZSBkYXRhLi4uCisJCQkJYUxlbnQgPSByZWFkKHMsIAorCQkJCQkJCSBmQnVmZmVyRW5kLCAKKwkJCQkJCQkgKHNpemVvZihmQnVmZmVyKSAtIDEpIC0gKGZCdWZmZXJFbmQgLSBmQnVmZmVyKSk7CisJCQkJaWYgKGFMZW50IDw9IDApIHsKKwkJCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpIVFRQVVJJSW5wdXRTdHJlYW1FcnJvciwKKwkJCQkJCQkJCQkiRXJyb3IgcmVwb3J0ZWQgcmVhZGluZyBzb2NrZXQiKTsKKwkJCQl9CisJCQkJZkJ1ZmZlckVuZCA9IGZCdWZmZXJFbmQgKyBhTGVudDsKKwkJCQkqZkJ1ZmZlckVuZCA9IDA7CisJCQl9CisJCX0KKyAgICB9IHdoaWxlKGhlYWRlclJlYWQgPT0gZmFsc2UpOworCisgICAgLy8gTWFrZSBzdXJlIHRoZSBoZWFkZXIgaW5jbHVkZXMgYW4gSFRUUCAyMDAgT0sgcmVzcG9uc2UuCisgICAgLy8KKyAgICBjaGFyICpwID0gc3Ryc3RyKGZCdWZmZXIsICJIVFRQIik7CisgICAgaWYgKHAgPT0gMCkKKyAgICB7CisgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SFRUUFVSSUlucHV0U3RyZWFtRXJyb3IsCisJCQkJCQkJIkVycm9yIHJlcG9ydGVkIHJlYWRpbmcgc29ja2V0Iik7CisgICAgfQorCisgICAgcCA9IHN0cmNocihwLCAnICcpOworICAgIGlmIChwID09IDApCisgICAgeworICAgICAgICB0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkhUVFBVUklJbnB1dFN0cmVhbUVycm9yLAorCQkJCQkJCSJFcnJvciByZXBvcnRlZCByZWFkaW5nIHNvY2tldCIpOworICAgIH0KKworICAgIGludCBodHRwUmVzcG9uc2UgPSBhdG9pKHApOworCisJaWYgKGh0dHBSZXNwb25zZSA9PSAzMDIgfHwgaHR0cFJlc3BvbnNlID09IDMwMSkgeworCQkvL09uY2UgZ3Jvd3MsIHNob3VsZCB1c2UgYSBzd2l0Y2gKKwkJY2hhciByZWRpcmVjdEJ1ZlsyNTZdOworCQlpbnQgcTsKKworCQkvLyBGaW5kIHRoZSAiTG9jYXRpb246IiBzdHJpbmcKKwkJcCA9IHN0cnN0cihwLCAiTG9jYXRpb246Iik7CisJCWlmIChwID09IDApCisgICAgICAgIHsKKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SFRUUFVSSUlucHV0U3RyZWFtRXJyb3IsCisJCQkJCQkJIkVycm9yIHJlcG9ydGVkIHJlYWRpbmcgc29ja2V0Iik7CisJCX0KKwkJcCA9IHN0cmNocihwLCAnICcpOworCQlpZiAocCA9PSAwKQorCQl7CisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkhUVFBVUklJbnB1dFN0cmVhbUVycm9yLAorCQkJCQkJCSJFcnJvciByZXBvcnRlZCByZWFkaW5nIHNvY2tldCIpOworCQl9CisKKwkJLy8gTm93IHJlYWQgCisJCXArKzsKKwkJZm9yIChxPTA7IHEgPCAyNTUgJiYgcFtxXSAhPSAnXHInICYmIHBbcV0gIT0nXG4nOyArK3EpCisJCQlyZWRpcmVjdEJ1ZltxXSA9IHBbcV07CisKKwkJcmVkaXJlY3RCdWZbcV0gPSAnXDAnOworCQkKKwkJLy8gVHJ5IHRvIGZpbmQgdGhpcyBsb2NhdGlvbgorI2lmIDAKKwkJLy8gRG9lcyBub3Qgd29yayBpbiBYZXJjZXMgMi4xIGFzIHRoZXJlIGlzIG5vIFhNTFVyaTo6b3BlcmF0b3I9CisJCW1fdXJpID0gWE1MVXJpKFhNTFN0cmluZzo6dHJhbnNjb2RlKHJlZGlyZWN0QnVmKSk7CisKKwkJcmV0dXJuIGRvUmVxdWVzdChyZXF1ZXN0KTsKKyNlbmRpZgorCQlYTUxDaCAqIHJlY1N0cmluZyA9IFhNTFN0cmluZzo6dHJhbnNjb2RlKHJlZGlyZWN0QnVmKTsKKworCQlYU0VDU09BUFJlcXVlc3RvclNpbXBsZSByZWN1cnNlKHJlY1N0cmluZyk7CisJCVhTRUNfUkVMRUFTRV9YTUxDSChyZWNTdHJpbmcpOworCQlyZXR1cm4gcmVjdXJzZS5kb1JlcXVlc3QocmVxdWVzdCk7CisKKwl9CisKKyAgICBlbHNlIGlmIChodHRwUmVzcG9uc2UgIT0gMjAwKQorICAgIHsKKyAgICAgICAgLy8gTW9zdCBsaWtlbHkgYSA0MDQgTm90IEZvdW5kIGVycm9yLgorICAgICAgICAvLyAgIFNob3VsZCByZWNvZ25pemUgYW5kIGhhbmRsZSB0aGUgZm9yd2FyZGluZyByZXNwb25zZXMuCisgICAgICAgIC8vCisJCWNoYXIgKiBxID0gc3Ryc3RyKHAsICJcbiIpOworCQlpZiAocSA9PSBOVUxMKQorCQkJcSA9IHN0cnN0cihwLCAiXHIiKTsKKwkJaWYgKHEgIT0gTlVMTCkKKwkJCSpxID0gJ1wwJzsKKwkJc2FmZUJ1ZmZlciBzYjsKKwkJc2Iuc2JTdHJjcHlJbigiU09BUFJlcXVlc3RvclNpbXBsZSBIVFRQIEVycm9yIDogIik7CisJCWlmIChzdHJsZW4ocCkgPCAyNTYpCisJCQlzYi5zYlN0cmNhdEluKHApOworICAgICAgICB0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkhUVFBVUklJbnB1dFN0cmVhbUVycm9yLCBzYi5yYXdDaGFyQnVmZmVyKCkpOworCisgICAgfQorCisJLyogTm93IGZpbmQgb3V0IGhvdyBsb25nIHRoZSByZXR1cm4gaXMgKi8KKworCXAgPSBzdHJzdHIoZkJ1ZmZlciwgIkNvbnRlbnQtTGVuZ3RoOiIpOworCWludCByZXNwb25zZUxlbmd0aDsKKworCWlmIChwID09IE5VTEwpIHsKKwkJLy8gTmVlZCB0byB3b3JrIGl0IG91dCBmcm9tIHRoZSBhbW91bnQgb2YgZGF0YSByZXR1cm5lZAorCQlyZXNwb25zZUxlbmd0aCA9IC0xOworCX0KKwllbHNlIHsKKworCQlwID0gc3RyY2hyKHAsICcgJyk7CisJCXArKzsKKworCQlyZXNwb25zZUxlbmd0aCA9IGF0b2kocCk7CisJfQorCisJc2FmZUJ1ZmZlciByZXNwb25zZUJ1ZmZlcjsKKwlsZW50ID0gZkJ1ZmZlckVuZCAtIGZCdWZmZXJQb3M7CisJcmVzcG9uc2VCdWZmZXIuc2JNZW1jcHlJbihmQnVmZmVyUG9zLCBsZW50KTsKKworCXdoaWxlIChyZXNwb25zZUxlbmd0aCA9PSAtMSB8fCBsZW50IDwgcmVzcG9uc2VMZW5ndGgpIHsKKwkJYUxlbnQgPSByZWFkKHMsICh2b2lkICopZkJ1ZmZlciwgc2l6ZW9mKGZCdWZmZXIpLTEpOworCQlpZiAoYUxlbnQgPiAwKSB7CisJCQlyZXNwb25zZUJ1ZmZlci5zYk1lbWNweUluKGxlbnQsIGZCdWZmZXIsIGFMZW50KTsKKwkJCWxlbnQgKz0gYUxlbnQ7CisJCX0KKwkJZWxzZSB7CisJCQlyZXNwb25zZUxlbmd0aCA9IDA7CisJCX0KKwl9CisKKwlyZXR1cm4gcGFyc2VBbmRVbndyYXAocmVzcG9uc2VCdWZmZXIucmF3Q2hhckJ1ZmZlcigpLCBsZW50KTsKKworI2lmIDAKKworCWNoYXIgKiByZXNwb25zZUJ1ZmZlcjsKKwlYU0VDbmV3KHJlc3BvbnNlQnVmZmVyLCBjaGFyW3Jlc3BvbnNlTGVuZ3RoXSk7CisJQXJyYXlKYW5pdG9yPGNoYXI+IGpfcmVzcG9uc2VCdWZmZXIocmVzcG9uc2VCdWZmZXIpOworCisJbGVudCA9IGZCdWZmZXJFbmQgLSBmQnVmZmVyUG9zOworCW1lbWNweShyZXNwb25zZUJ1ZmZlciwgZkJ1ZmZlclBvcywgbGVudCk7CisJd2hpbGUgKGxlbnQgPCByZXNwb25zZUxlbmd0aCkgeworCSAgICBhTGVudCA9IHJlYWQocywgJnJlc3BvbnNlQnVmZmVyW2xlbnRdLCByZXNwb25zZUxlbmd0aCAtIGxlbnQpOworCQlsZW50ICs9IGFMZW50OworCX0KKwkKKyAgICByZXR1cm4gcGFyc2VBbmRVbndyYXAocmVzcG9uc2VCdWZmZXIsIHJlc3BvbnNlTGVuZ3RoKTsKKyNlbmRpZgorfQorCisKZGlmZiAtLWdpdCBhL2Mvc3JjL3V0aWxzL3VuaXh1dGlscy9YU0VDVVJJUmVzb2x2ZXJHZW5lcmljVW5peC5jcHAgYi9jL3NyYy91dGlscy91bml4dXRpbHMvWFNFQ1VSSVJlc29sdmVyR2VuZXJpY1VuaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyNjVkMTgKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy91dGlscy91bml4dXRpbHMvWFNFQ1VSSVJlc29sdmVyR2VuZXJpY1VuaXguY3BwCkBAIC0wLDAgKzEsMjc4IEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYU0VDVVJJUmVzb2x2ZXJHZW5lcmljVW5peCA6PSBBIFVSSSBSZXNvbHZlciB0aGF0IHdpbGwgd29yayAib3V0IG9mCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJveCIgd2l0aCBVTklYLiAgUmUtaW1wbGVtZW50cworICoJCQkJCQkJCSAgbXVjaCBYZXJjZXMgY29kZSwgYnV0IGFsbG93cyB1cyB0bworICoJCQkJCQkJCSAgaGFuZGxlIEhUVFAgcmVkaXJlY3RzIGFzIGlzIHJlcXVpcmVkIGJ5CisgKgkJCQkJCQkJICB0aGUgRFNJRyBTdGFuZGFyZAorICoKKyAqIEF1dGhvcihzKTogQmVyaW4gTGF1dGVuYmFjaAorICoKKyAqICRJZCQKKyAqCisgKiAkTG9nJAorICogUmV2aXNpb24gMS4xMSAgMjAwNS8wMi8wMyAxMzo1NTowOCAgbWlsYW4KKyAqIEFwYWNoZSBsaWNlbmNlIGZpeC4KKyAqCisgKiBSZXZpc2lvbiAxLjEwICAyMDA0LzEwLzEwIDA3OjAwOjM0ICBibGF1dGVuYgorICogQ29tcGlsZSB3aXRoIFhlcmNlcyAyLjEKKyAqCisgKiBSZXZpc2lvbiAxLjkgIDIwMDQvMDIvMjEgMDg6MjY6NTQgIGJsYXV0ZW5iCisgKiBVc2UgWE1MU3RyaW5nOjpyZWxlYXNlIHJhdGhlciB0aGFuIGRlbGV0ZVtdIGZvciBhbGwgWGVyY2VzIHN0cmluZ3MKKyAqCisgKiBSZXZpc2lvbiAxLjggIDIwMDQvMDIvMDggMTA6NTA6MjIgIGJsYXV0ZW5iCisgKiBVcGRhdGUgdG8gQXBhY2hlIDIuMCBsaWNlbnNlCisgKgorICogUmV2aXNpb24gMS43ICAyMDA0LzAyLzAzIDExOjAwOjAzICBibGF1dGVuYgorICogQWRkIFNwYWNlIGhhbmRsaW5nIHRvIFVOSVggVVJMIGhhbmRsaW5nCisgKgorICogUmV2aXNpb24gMS42ICAyMDA0LzAxLzI2IDAwOjI5OjQ4ICBibGF1dGVuYgorICogQ2hlY2sgZm9yIFhlcmNlcyBuZXcgd2F5IG9mIGhhbmRsaW5nIE5VTEwgaG9zdG5hbWVzIGluIFVSSXMKKyAqCisgKiBSZXZpc2lvbiAxLjUgIDIwMDMvMDkvMTEgMTE6Mjk6MTIgIGJsYXV0ZW5iCisgKiBGaXggWGVyY2VzIG5hbWVzcGFjZSB1c2FnZSBpbiAqTklYIGJ1aWxkCisgKgorICogUmV2aXNpb24gMS40ICAyMDAzLzA3LzA1IDEwOjMwOjM4ICBibGF1dGVuYgorICogQ29weXJpZ2h0IHVwZGF0ZQorICoKKyAqIFJldmlzaW9uIDEuMyAgMjAwMy8wNS8xMCAwNzoyMzozNiAgYmxhdXRlbmIKKyAqIFVwZGF0ZXMgdG8gc3VwcG9ydCBhbm9ueW1vdXMgcmVmZXJlbmNlcworICoKKyAqIFJldmlzaW9uIDEuMiAgMjAwMy8wMi8yMCAxMDozNToxMCAgYmxhdXRlbmIKKyAqIEZpeCBmb3IgYnJva2VuIFhlcmNlcyBYTUxVcmkKKyAqCisgKiBSZXZpc2lvbiAxLjEgIDIwMDMvMDIvMTIgMTE6MjE6MDMgIGJsYXV0ZW5iCisgKiBVTklYIGdlbmVyaWMgVVJJIHJlc29sdmVyCisgKgorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy91dGlscy91bml4dXRpbHMvWFNFQ1VSSVJlc29sdmVyR2VuZXJpY1VuaXguaHBwPgorCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFVuaURlZnMuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxVcmkuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxVbmkuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9KYW5pdG9yLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MU3RyaW5nLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvQmluRmlsZUlucHV0U3RyZWFtLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL3VuaXh1dGlscy9YU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtLmhwcD4KKworI2luY2x1ZGUgIi4uLy4uL3V0aWxzL1hTRUNBdXRvUHRyLmhwcCIKKworc3RhdGljIGNvbnN0IFhNTENoIGdGaWxlU2NoZW1lW10gPSB7CisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgY2hMYXRpbl9mLAorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBjaExhdGluX2ksCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoTGF0aW5fbCwKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgY2hMYXRpbl9lLAorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBjaE51bGwKKworfTsKKworc3RhdGljIGNvbnN0IFhNTENoIGdIdHRwU2NoZW1lW10gPSB7CisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgY2hMYXRpbl9oLAorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBjaExhdGluX3QsCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoTGF0aW5fdCwKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgY2hMYXRpbl9wLAorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBjaE51bGwKKworfTsKKworCisjaWYgWEVSQ0VTX1ZFUlNJT05fTUFKT1IgPT0gMiAmJiBYRVJDRVNfVkVSU0lPTl9NSU5PUiA8IDMKKworCitzdGF0aWMgY29uc3QgWE1MQ2ggRE9URE9UX1NMQVNIW10gPSB7CisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgY2hQZXJpb2QsCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoUGVyaW9kLAorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBjaEZvcndhcmRTbGFzaCwKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgY2hOdWxsCisKK307CisKKyNlbmRpZgorCisKKworWFNFQ1VSSVJlc29sdmVyR2VuZXJpY1VuaXg6OlhTRUNVUklSZXNvbHZlckdlbmVyaWNVbml4KCkgOgorbXBfYmFzZVVSSShOVUxMKSB7CisKK307CisKK1hTRUNVUklSZXNvbHZlckdlbmVyaWNVbml4Ojp+WFNFQ1VSSVJlc29sdmVyR2VuZXJpY1VuaXgoKSB7CisKKwlpZiAobXBfYmFzZVVSSSAhPSBOVUxMKQorCQlYU0VDX1JFTEVBU0VfWE1MQ0gobXBfYmFzZVVSSSk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICBSZXNvbHZlIGEgVVJJIHRoYXQgaXMgcGFzc2VkIGluCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitCaW5JbnB1dFN0cmVhbSAqIFhTRUNVUklSZXNvbHZlckdlbmVyaWNVbml4OjpyZXNvbHZlVVJJKGNvbnN0IFhNTENoICogdXJpKSB7CisKKwlYU0VDX1VTSU5HX1hFUkNFUyhCaW5JbnB1dFN0cmVhbSk7CisJWFNFQ19VU0lOR19YRVJDRVMoWE1MVXJpKTsKKwlYU0VDX1VTSU5HX1hFUkNFUyhYTUxVbmkpOworCVhTRUNfVVNJTkdfWEVSQ0VTKEphbml0b3IpOworCVhTRUNfVVNJTkdfWEVSQ0VTKEJpbkZpbGVJbnB1dFN0cmVhbSk7CisKKwlYTUxVcmkJCQkJCSogeG1sdXJpOworCisJaWYgKHVyaSA9PSBOVUxMKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXJyb3JPcGVuaW5nVVJJLAorCQkJIlhTRUNVUklSZXNvbHZlckdlbmVyaWNVbml4IC0gYW5vbnltb3VzIHJlZmVyZW5jZXMgbm90IHN1cHBvcnRlZCBpbiBkZWZhdWx0IFVSSSBSZXNvbHZlcnMiKTsKKwl9CisKKwkvLyBDcmVhdGUgdGhlIGFwcHJvcHJpYXRlIFhNTFVyaSBvYmplY3RzCisKKwlpZiAobXBfYmFzZVVSSSAhPSBOVUxMKSB7CisJCVhNTFVyaQkqIHR1cmk7CisKKyNpZiBYRVJDRVNfVkVSU0lPTl9NQUpPUiA9PSAyICYmIFhFUkNFU19WRVJTSU9OX01JTk9SIDwgMworCisJCS8vIFhNTFVyaSByZWxhdGl2ZSBwYXRocyBhcmUgYnJva2VuLCBzbyB3ZSBuZWVkIHRvIHN0cmlwIG91dCAiLi4iCisgICAgICAgIFhTRUNBdXRvUHRyWE1MQ2ggYihtcF9iYXNlVVJJKTsKKyAgICAgICAgWFNFQ0F1dG9QdHJYTUxDaCByKHVyaSk7CisKKwkJaW50IGluZGV4ID0gMDsKKwkJd2hpbGUgKFhNTFN0cmluZzo6c3RhcnRzV2l0aCgmKHIuZ2V0KClbaW5kZXhdKSwgRE9URE9UX1NMQVNIKSkgeworCisJCQkvLyBTdHJpcCB0aGUgbGFzdCBzZWdtZW50IG9mIHRoZSBiYXNlCisKKwkJCWludCBsYXN0SW5kZXggPSBYTUxTdHJpbmc6Omxhc3RJbmRleE9mKGIuZ2V0KCksIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBjaEZvcndhcmRTbGFzaCk7CisJCQlpZiAobGFzdEluZGV4ID4gMCkKKwkJCSAgICBjb25zdF9jYXN0PFhNTENoKj4oYi5nZXQoKSlbbGFzdEluZGV4XSA9IDA7CisKKwkJCWluZGV4ICs9IDM7CisKKwkJfQorCisJCVhTRUNuZXcodHVyaSwgWE1MVXJpKGIuZ2V0KCkpKTsKKwkJSmFuaXRvcjxYTUxVcmk+IGpfdHVyaSh0dXJpKTsKKwkJWFNFQ25ldyh4bWx1cmksIFhNTFVyaSh0dXJpLCAmKHIuZ2V0KClbaW5kZXhdKSkpOworCisjZWxzZQorCQlYU0VDbmV3KHR1cmksIFhNTFVyaShtcF9iYXNlVVJJKSk7CisJCUphbml0b3I8WE1MVXJpPiBqX3R1cmkodHVyaSk7CisKKwkJWFNFQ25ldyh4bWx1cmksIFhNTFVyaSh0dXJpLCB1cmkpKTsKKyNlbmRpZgorCisJfQorCWVsc2UgeworCQlYU0VDbmV3KHhtbHVyaSwgWE1MVXJpKHVyaSkpOworCX0KKwkKKwlKYW5pdG9yPFhNTFVyaT4gal94bWx1cmkoeG1sdXJpKTsKKworCS8vIERldGVybWluZSB3aGF0IGtpbmQgb2YgVVJJIHRoaXMgaXMgYW5kIGhvdyB0byBoYW5kbGUgaXQuCisJCisJaWYgKCFYTUxTdHJpbmc6OmNvbXBhcmVJU3RyaW5nKHhtbHVyaS0+Z2V0U2NoZW1lKCksIGdGaWxlU2NoZW1lKSkgeworCisJCS8vIFRoaXMgaXMgYSBmaWxlLiAgV2Ugb25seSByZWFsbHkgdW5kZXJzdGFuZCBpZiB0aGlzIGlzIGxvY2FsaG9zdAorCQkvLyBYTUxVcmkgaGFzIGFscmVhZHkgY2xlYW5lZCBvZiBlc2NhcGUgY2hhcmFjdGVycyAoJXh4KQorICAgICAgICAKKwkJaWYgKHhtbHVyaS0+Z2V0SG9zdCgpID09IE5VTEwgfHwgeG1sdXJpLT5nZXRIb3N0KClbMF0gPT0gY2hOdWxsIHx8CisJCQkhWE1MU3RyaW5nOjpjb21wYXJlSVN0cmluZyh4bWx1cmktPmdldEhvc3QoKSwgWE1MVW5pOjpmZ0xvY2FsSG9zdFN0cmluZykpIHsKKworCQkJLy8gQ2xlYW4gaGV4IGVzY2FwZXMKKwkJCVhNTENoICogcmVhbFBhdGggPSBjbGVhblVSSUVzY2FwZXMoeG1sdXJpLT5nZXRQYXRoKCkpOworCisJCQkvLyBMb2NhbGhvc3QKKworICAgICAgICAgICAgQmluRmlsZUlucHV0U3RyZWFtKiByZXRTdHJtID0gbmV3IEJpbkZpbGVJbnB1dFN0cmVhbShyZWFsUGF0aCk7CisgICAgICAgICAgICBYU0VDX1JFTEVBU0VfWE1MQ0gocmVhbFBhdGgpOworCisgICAgICAgICAgICBpZiAoIXJldFN0cm0tPmdldElzT3BlbigpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlbGV0ZSByZXRTdHJtOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHJldFN0cm07CisKKwkJfQorCisJCWVsc2UgeworCisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkVycm9yT3BlbmluZ1VSSSwKKwkJCQkiWFNFQ1VSSVJlc29sdmVyR2VuZXJpY1VuaXggLSB1bmFibGUgdG8gb3BlbiBub24tbG9jYWxob3N0IGZpbGUiKTsKKwkJCisJCX0KKworCX0KKworCS8vIElzIHRoZSBzY2hlbWUgYSBIVFRQPworCWlmICghWE1MU3RyaW5nOjpjb21wYXJlSVN0cmluZyh4bWx1cmktPmdldFNjaGVtZSgpLCBnSHR0cFNjaGVtZSkpIHsKKworCQkvLyBQYXNzIHN0cmFpZ2h0IHRvIG91ciBsb2NhbCBYU0VDQmluSFRUUFVyaUlucHV0U3RyZWFtCisJCVhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0gKnJldDsKKworCQlYU0VDbmV3KHJldCwgWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbSgqeG1sdXJpKSk7CisKKwkJcmV0dXJuIHJldDsKKwkJCisJfQorCisJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFcnJvck9wZW5pbmdVUkksCisJCSJYU0VDVVJJUmVzb2x2ZXJHZW5lcmljVW5peCAtIHVua25vd24gVVJJIHNjaGVtZSIpOworCQorfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gIENsb25lIG1lCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK1hTRUNVUklSZXNvbHZlciAqIFhTRUNVUklSZXNvbHZlckdlbmVyaWNVbml4OjpjbG9uZSh2b2lkKSB7CisKKwlYU0VDVVJJUmVzb2x2ZXJHZW5lcmljVW5peCAqIHJldDsKKworCXJldCA9IG5ldyBYU0VDVVJJUmVzb2x2ZXJHZW5lcmljVW5peCgpOworCisJaWYgKHRoaXMtPm1wX2Jhc2VVUkkgIT0gTlVMTCkKKwkJcmV0LT5tcF9iYXNlVVJJID0gWE1MU3RyaW5nOjpyZXBsaWNhdGUodGhpcy0+bXBfYmFzZVVSSSk7CisJZWxzZQorCQlyZXQtPm1wX2Jhc2VVUkkgPSBOVUxMOworCisJcmV0dXJuIHJldDsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gIFNldCBhIGJhc2UgVVJJIHRvIG1hcCBhbnkgaW5jb21pbmcgZmlsZXMgYWdhaW5zdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBYU0VDVVJJUmVzb2x2ZXJHZW5lcmljVW5peDo6c2V0QmFzZVVSSShjb25zdCBYTUxDaCAqIHVyaSkgeworCisJaWYgKG1wX2Jhc2VVUkkgIT0gTlVMTCkKKwkJWFNFQ19SRUxFQVNFX1hNTENIKG1wX2Jhc2VVUkkpOworCisJbXBfYmFzZVVSSSA9IFhNTFN0cmluZzo6cmVwbGljYXRlKHVyaSk7CisKK30KZGlmZiAtLWdpdCBhL2Mvc3JjL3V0aWxzL3VuaXh1dGlscy9YU0VDVVJJUmVzb2x2ZXJHZW5lcmljVW5peC5ocHAgYi9jL3NyYy91dGlscy91bml4dXRpbHMvWFNFQ1VSSVJlc29sdmVyR2VuZXJpY1VuaXguaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyZDY2NGYKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy91dGlscy91bml4dXRpbHMvWFNFQ1VSSVJlc29sdmVyR2VuZXJpY1VuaXguaHBwCkBAIC0wLDAgKzEsMTQxIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYU0VDVVJJUmVzb2x2ZXJHZW5lcmljV2luMzIgOj0gQSBVUkkgUmVzb2x2ZXIgdGhhdCB3aWxsIHdvcmsgIm91dCBvZgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBib3giIHdpdGggVU5JWC4gIFJlLWltcGxlbWVudHMKKyAqCQkJCQkJCQkgIG11Y2ggWGVyY2VzIGNvZGUsIGJ1dCBhbGxvd3MgdXMgdG8KKyAqCQkJCQkJCQkgIGhhbmRsZSBIVFRQIHJlZGlyZWN0cyBhcyBpcyByZXF1aXJlZCBieQorICoJCQkJCQkJCSAgdGhlIERTSUcgU3RhbmRhcmQKKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICogJExvZyQKKyAqIFJldmlzaW9uIDEuNSAgMjAwNS8wMi8wMyAxMzo1NTowOCAgbWlsYW4KKyAqIEFwYWNoZSBsaWNlbmNlIGZpeC4KKyAqCisgKiBSZXZpc2lvbiAxLjQgIDIwMDQvMDIvMDggMTA6NTA6MjIgIGJsYXV0ZW5iCisgKiBVcGRhdGUgdG8gQXBhY2hlIDIuMCBsaWNlbnNlCisgKgorICogUmV2aXNpb24gMS4zICAyMDAzLzA5LzExIDExOjI5OjEyICBibGF1dGVuYgorICogRml4IFhlcmNlcyBuYW1lc3BhY2UgdXNhZ2UgaW4gKk5JWCBidWlsZAorICoKKyAqIFJldmlzaW9uIDEuMiAgMjAwMy8wNy8wNSAxMDozMDozOCAgYmxhdXRlbmIKKyAqIENvcHlyaWdodCB1cGRhdGUKKyAqCisgKiBSZXZpc2lvbiAxLjEgIDIwMDMvMDIvMTIgMTE6MjE6MDQgIGJsYXV0ZW5iCisgKiBVTklYIGdlbmVyaWMgVVJJIHJlc29sdmVyCisgKgorICoKKyAqLworCisjaWZuZGVmIFhTRUNVUklSRVNPTFZFUkdFTkVSSUNVTklYX0lOQ0xVREUKKyNkZWZpbmUgWFNFQ1VSSVJFU09MVkVSR0VORVJJQ1VOSVhfSU5DTFVERQorCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNVUklSZXNvbHZlci5ocHA+CisKKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MU3RyaW5nLmhwcD4KKworLyoqCisgKiBAaW5ncm91cCBwdWJzaWcKKyAqLworLypcQHsqLworCisvKioKKyAqIEBicmllZiBHZW5lcmljIFVOSVggVVJJIFJlc29sdmVyLgorICoKKyAqIFRoZSBYTUwgRGlnaXRhbCBTaWduYXR1cmUgc3RhbmRhcmQgbWFrZXMgaGVhdnkgdXNlIG9mIFVSSXMgdG8KKyAqIGlkZW50aWZ5IGluZm9ybWF0aW9uIHRvIGJlIHJlZmVyZW5jZWQgYW5kIHNpZ25lZC4KKyAqCisgKiBUaGlzIGNsYXNzIGltcGxlbWVudHMgdGhlIFhTRUNVUklSZXNvbHZlciBmb3IgVU5JWCwgcmUtdXNpbmcKKyAqIG11Y2ggb2YgdGhlIFhlcmNlcyBjb2RlLgorICoKKyAqIEB0b2RvIEltcGxlbWVudCBhICJwbHVnZ2FibGUiIFVSSSByZXNvbHZlciB0aGF0IGFsbG93cyBkZXZlbG9wZXJzCisgKiB0byBwbHVnIGluIGRpZmZlcmVudCBjbGFzc2VzIGZvciBkaWZmZXJlbnQgc2NoZW1lcworICovCisKK2NsYXNzIERTSUdfRVhQT1JUIFhTRUNVUklSZXNvbHZlckdlbmVyaWNVbml4IDogcHVibGljIFhTRUNVUklSZXNvbHZlciB7CisKK3B1YmxpYzoKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCisJWFNFQ1VSSVJlc29sdmVyR2VuZXJpY1VuaXgoKTsKKwl2aXJ0dWFsIH5YU0VDVVJJUmVzb2x2ZXJHZW5lcmljVW5peCgpOworCisJLy9AfQorCisJLyoqIEBuYW1lIEludGVyZmFjZSBNZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIEJZVEVfU1RSRUFNIGZyb20gYSBVUkkuCisJICoKKwkgKiBUaGUgcmVzb2x2ZXIgaXMgcmVxdWlyZWQgdG8gdGFrZSB0aGUgaW5wdXQgVVJJIGFuZAorCSAqIGRlcmVmZXJlbmNlIGl0IHRvIGFuIGFjdHVhbCBzdHJlYW0gb2Ygb2N0ZXRzLgorCSAqCisJICogVGhlIG9jdGV0cyBhcmUgcHJvdmlkZWQgYmFjayB0byB0aGUgbGlicmFyeSB1c2luZworCSAqIHRoZSBYZXJjZXMgQmluSW5wdXRTdHJlYW0gY2xhc3MuCisJICoKKwkgKiBAbm90ZSBUaGUgcmV0dXJuZWQgc3RyZWFtIGlzICJvd25lZCIgYnkgdGhlIGNhbGxlciwgd2hpY2gKKwkgKiB3aWxsIGRlbGV0ZSBpdCB3aGVuIHByb2Nlc3NpbmcgaXMgY29tcGxldGUuCisJICogQHBhcmFtIHVyaSBUaGUgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIFVSSSB0byBiZSBkZS1yZWZlcmVuY2VkLgorCSAqIEByZXR1cm5zIFRoZSBvY3RldCBzdHJlYW0gY29ycmVzcG9uZGluZyB0byB0aGUgVVJJLgorCSAqLworCisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgQmluSW5wdXRTdHJlYW0gKiAKKwkgICAgcmVzb2x2ZVVSSShjb25zdCBYTUxDaCAqIHVyaSk7CisKKwkvKioKKwkgKiBcYnJpZWYgQ2xvbmUgdGhlIHJlc29sdmVyIHRvIGJlIGluc3RhbGxlZCBpbiBhIG5ldyBvYmplY3QuCisJICoKKwkgKiBXaGVuIFVSSVJlc29sdmVycyBhcmUgcGFzc2VkIGludG8gc2lnbmF0dXJlcyBhbmQgb3RoZXIKKwkgKiBvYmplY3RzLCB0aGV5IGFyZSBjbG9uZWQgYW5kIGNvbnRyb2wgb2YgdGhlIG9yaWdpbmFsIG9iamVjdAorCSAqIGlzIGxlZnQgd2l0aCB0aGUgY2FsbGVyLgorCSAqCisJICovCisKKwl2aXJ0dWFsIFhTRUNVUklSZXNvbHZlciAqIGNsb25lKHZvaWQpOworCisJLy9AfQorCisJLyoqIEBuYW1lIENsYXNzIHNwZWNpZmljIGZ1bmN0aW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBTZXQgdGhlIGJhc2UgVVJJIGZvciByZWxhdGl2ZSBVUklzLgorCSAqCisJICovCisKKwl2b2lkIHNldEJhc2VVUkkoY29uc3QgWE1MQ2ggKiB1cmkpOworCisJLy9AfQorCitwcml2YXRlOgorCisJWE1MQ2gJCQkqIG1wX2Jhc2VVUkk7CisKKworfTsKKworCisjZW5kaWYgLyogWFNFQ1VSSVJFU09MVkVSR0VORVJJQ1VOSVhfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMvdXRpbHMvd2ludXRpbHMvWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbS5jcHAgYi9jL3NyYy91dGlscy93aW51dGlscy9YU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjVmNGY2Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdXRpbHMvd2ludXRpbHMvWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbS5jcHAKQEAgLTAsMCArMSw1NTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDEwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0gOj0gUmUtaW1wbGVtZW50YXRpb24gb2YgdGhlIFhlcmNlcworICoJCQkJCQkJICAgIEJpbkhUVFBVUkxJbnB1dFN0cmVhbS4gIEFsbG93cyB1cyB0byBtYWtlCisgKgkJCQkJCQkJc29tZSBzbWFsbCBjaGFuZ2VzIHRvIHN1cHBvcnQgdGhlIHJlcXVpcmVtZW50cworICoJCQkJCQkJCW9mIFhNTERTSUcgKG5vdGFibHkgcmUtZGlyZWN0cykKKyAqCisgKiBOT1RFOiBNdWNoIGNvZGUgdGFrZW4gZnJvbSBYZXJjZXMsIGFuZCB0aGUgY3Jvc3MgcGxhdGZvcm0gaW50ZXJmYWNpbmcgaXMKKyAqIG5vLXdoZXJlIG5lYXIgYXMgbmljZS4KKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL3V0aWxzL3dpbnV0aWxzL1hTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0uaHBwPgorCisjZGVmaW5lIF9XSU5TT0NLQVBJXworCisjZGVmaW5lIElOQ0xfV0lOU09DS19BUElfVFlQRURFRlMgMQorI2luY2x1ZGUgPHdpbnNvY2syLmg+CisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHRjaGFyLmg+CisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisKKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvUGxhdGZvcm1VdGlscy5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTE5ldEFjY2Vzc29yLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MU3RyaW5nLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MRXhjZXB0TXNncy5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFVuaURlZnMuaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworI2luY2x1ZGUgPHhzZWMvdXRpbHMvd2ludXRpbHMvWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbS5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKworI2luY2x1ZGUgIi4uLy4uL3V0aWxzL1hTRUNBdXRvUHRyLmhwcCIKKworc3RhdGljIEhNT0RVTEUgZ1dpbnNvY2tMaWIgPSBOVUxMOworc3RhdGljIExQRk5fR0VUSE9TVEJZTkFNRSBnV1NnZXRob3N0YnluYW1lID0gTlVMTDsKK3N0YXRpYyBMUEZOX0lORVRfQUREUiBnV1NpbmV0X2FkZHIgPSBOVUxMOworc3RhdGljIExQRk5fR0VUSE9TVEJZQUREUiBnV1NnZXRob3N0YnlhZGRyID0gTlVMTDsKK3N0YXRpYyBMUEZOX0hUT05TIGdXU2h0b25zID0gTlVMTDsKK3N0YXRpYyBMUEZOX1NPQ0tFVCBnV1Nzb2NrZXQgPSBOVUxMOworc3RhdGljIExQRk5fQ09OTkVDVCBnV1Njb25uZWN0ID0gTlVMTDsKK3N0YXRpYyBMUEZOX1NFTkQgZ1dTc2VuZCA9IE5VTEw7CitzdGF0aWMgTFBGTl9SRUNWIGdXU3JlY3YgPSBOVUxMOworc3RhdGljIExQRk5fU0hVVERPV04gZ1dTc2h1dGRvd24gPSBOVUxMOworc3RhdGljIExQRk5fQ0xPU0VTT0NLRVQgZ1dTY2xvc2Vzb2NrZXQgPSBOVUxMOworc3RhdGljIExQRk5fV1NBQ0xFQU5VUCBnV1NBQ2xlYW51cCA9IE5VTEw7CisKK2Jvb2wgWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbTo6ZkluaXRpYWxpemVkID0gZmFsc2U7CitYTUxNdXRleCogWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbTo6ZkluaXRNdXRleCA9IDA7CisKKy8vIFBvcnRlZCBmcm9tIFhlcmNlcyAyLngsIG5vdyBtaXNzaW5nIG9uIDMueCwgc28gSSdtIGlubGluaW5nIGl0Lgorc3RhdGljIHZvaWQqIGNvbXBhcmVBbmRTd2FwKHZvaWQqKiB0b0ZpbGwsIGNvbnN0IHZvaWQqIGNvbnN0IG5ld1ZhbHVlLCBjb25zdCB2b2lkKiBjb25zdCB0b0NvbXBhcmUpIHsKKyNpZiBkZWZpbmVkIF9XSU42NAorICAgIHJldHVybiA6OkludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlUG9pbnRlcih0b0ZpbGwsICh2b2lkKiluZXdWYWx1ZSwgKHZvaWQqKXRvQ29tcGFyZSk7CisjZWxzZQorICAgIHZvaWQqICAgcmVzdWx0OworICAgIF9fYXNtCisgICAgeworICAgICAgICBtb3YgICAgICAgICAgICAgZWF4LCB0b0NvbXBhcmU7CisgICAgICAgIG1vdiAgICAgICAgICAgICBlYngsIG5ld1ZhbHVlOworICAgICAgICBtb3YgICAgICAgICAgICAgZWN4LCB0b0ZpbGwKKyAgICAgICAgbG9jayBjbXB4Y2hnICAgIFtlY3hdLCBlYng7CisgICAgICAgIG1vdiAgICAgICAgICAgICByZXN1bHQsIGVheDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyNlbmRpZgorfQorCit2b2lkIFhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW06OkluaXRpYWxpemUoKSB7CisgICAgLy8KKyAgICAvLyBJbml0aWFsaXplIHRoZSBXaW5Tb2NrIGxpYnJhcnkgaGVyZS4KKyAgICAvLworICAgIFdPUkQgICAgICAgIHdWZXJzaW9uUmVxdWVzdGVkOworICAgIFdTQURBVEEgICAgIHdzYURhdGE7CisKKwlMUEZOX1dTQVNUQVJUVVAgc3RhcnR1cCA9IE5VTEw7CisJaWYoZ1dpbnNvY2tMaWIgPT0gTlVMTCkgeworCQlnV2luc29ja0xpYiA9IExvYWRMaWJyYXJ5KF9UKCJXU09DSzMyIikpOworCQlpZihnV2luc29ja0xpYiA9PSBOVUxMKSB7CisJCQlUaHJvd1hNTChOZXRBY2Nlc3NvckV4Y2VwdGlvbiwgWE1MRXhjZXB0czo6TmV0QWNjX0luaXRGYWlsZWQpOworCQl9CisJCWVsc2UgeworCQkJc3RhcnR1cCA9IChMUEZOX1dTQVNUQVJUVVApIEdldFByb2NBZGRyZXNzKGdXaW5zb2NrTGliLF9UKCJXU0FTdGFydHVwIikpOworCQkJZ1dTQUNsZWFudXAgPSAoTFBGTl9XU0FDTEVBTlVQKSBHZXRQcm9jQWRkcmVzcyhnV2luc29ja0xpYixfVCgiV1NBQ2xlYW51cCIpKTsKKwkJCWdXU2dldGhvc3RieW5hbWUgPSAoTFBGTl9HRVRIT1NUQllOQU1FKSBHZXRQcm9jQWRkcmVzcyhnV2luc29ja0xpYixfVCgiZ2V0aG9zdGJ5bmFtZSIpKTsKKwkJCWdXU2luZXRfYWRkciA9IChMUEZOX0lORVRfQUREUikgR2V0UHJvY0FkZHJlc3MoZ1dpbnNvY2tMaWIsX1QoImluZXRfYWRkciIpKTsKKwkJCWdXU2dldGhvc3RieWFkZHIgPSAoTFBGTl9HRVRIT1NUQllBRERSKSBHZXRQcm9jQWRkcmVzcyhnV2luc29ja0xpYixfVCgiZ2V0aG9zdGJ5YWRkciIpKTsKKwkJCWdXU2h0b25zID0gKExQRk5fSFRPTlMpIEdldFByb2NBZGRyZXNzKGdXaW5zb2NrTGliLF9UKCJodG9ucyIpKTsKKwkJCWdXU3NvY2tldCA9IChMUEZOX1NPQ0tFVCkgR2V0UHJvY0FkZHJlc3MoZ1dpbnNvY2tMaWIsX1QoInNvY2tldCIpKTsKKwkJCWdXU2Nvbm5lY3QgPSAoTFBGTl9DT05ORUNUKSBHZXRQcm9jQWRkcmVzcyhnV2luc29ja0xpYixfVCgiY29ubmVjdCIpKTsKKwkJCWdXU3NlbmQgPSAoTFBGTl9TRU5EKSBHZXRQcm9jQWRkcmVzcyhnV2luc29ja0xpYixfVCgic2VuZCIpKTsKKwkJCWdXU3JlY3YgPSAoTFBGTl9SRUNWKSBHZXRQcm9jQWRkcmVzcyhnV2luc29ja0xpYixfVCgicmVjdiIpKTsKKwkJCWdXU3NodXRkb3duID0gKExQRk5fU0hVVERPV04pIEdldFByb2NBZGRyZXNzKGdXaW5zb2NrTGliLF9UKCJzaHV0ZG93biIpKTsKKwkJCWdXU2Nsb3Nlc29ja2V0ID0gKExQRk5fQ0xPU0VTT0NLRVQpIEdldFByb2NBZGRyZXNzKGdXaW5zb2NrTGliLF9UKCJjbG9zZXNvY2tldCIpKTsKKworCQkJaWYoc3RhcnR1cCA9PSBOVUxMIHx8CisJCQkJZ1dTQUNsZWFudXAgPT0gTlVMTCB8fAorCQkJCWdXU2dldGhvc3RieW5hbWUgPT0gTlVMTCB8fAorCQkJCWdXU2luZXRfYWRkciA9PSBOVUxMIHx8CisJCQkJZ1dTZ2V0aG9zdGJ5YWRkciA9PSBOVUxMIHx8CisJCQkJZ1dTaHRvbnMgPT0gTlVMTCB8fAorCQkJCWdXU3NvY2tldCA9PSBOVUxMIHx8CisJCQkJZ1dTY29ubmVjdCA9PSBOVUxMIHx8CisJCQkJZ1dTc2VuZCA9PSBOVUxMIHx8CisJCQkJZ1dTcmVjdiA9PSBOVUxMIHx8CisJCQkJZ1dTc2h1dGRvd24gPT0gTlVMTCB8fAorCQkJCWdXU2Nsb3Nlc29ja2V0ID09IE5VTEwpCisJCQl7CisJCQkJZ1dTQUNsZWFudXAgPSBOVUxMOworCQkJCUNsZWFudXAoKTsKKwkJCQlUaHJvd1hNTChOZXRBY2Nlc3NvckV4Y2VwdGlvbiwgWE1MRXhjZXB0czo6TmV0QWNjX0luaXRGYWlsZWQpOworCQkJfQorCQl9CisJfQorICAgIHdWZXJzaW9uUmVxdWVzdGVkID0gTUFLRVdPUkQoIDIsIDIgKTsKKyAgICBpbnQgZXJyID0gKCpzdGFydHVwKSh3VmVyc2lvblJlcXVlc3RlZCwgJndzYURhdGEpOworICAgIGlmIChlcnIgIT0gMCkKKyAgICB7CisgICAgICAgIC8vIENhbGwgV1NBR2V0TGFzdEVycm9yKCkgdG8gZ2V0IHRoZSBsYXN0IGVycm9yLgorICAgICAgICBUaHJvd1hNTChOZXRBY2Nlc3NvckV4Y2VwdGlvbiwgWE1MRXhjZXB0czo6TmV0QWNjX0luaXRGYWlsZWQpOworICAgIH0KKyAgICBmSW5pdGlhbGl6ZWQgPSB0cnVlOworfQorCit2b2lkIFhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW06OkNsZWFudXAoKSB7CisJaWYoZkluaXRpYWxpemVkKQorCXsKKwkJaWYoZ1dTQUNsZWFudXApICgqZ1dTQUNsZWFudXApKCk7CisJCWdXU0FDbGVhbnVwID0gTlVMTDsKKwkJRnJlZUxpYnJhcnkoZ1dpbnNvY2tMaWIpOworCQlnV2luc29ja0xpYiA9IE5VTEw7CisJCWdXU2dldGhvc3RieW5hbWUgPSBOVUxMOworCQlnV1NpbmV0X2FkZHIgPSBOVUxMOworCQlnV1NnZXRob3N0YnlhZGRyID0gTlVMTDsKKwkJZ1dTaHRvbnMgPSBOVUxMOworCQlnV1Nzb2NrZXQgPSBOVUxMOworCQlnV1Njb25uZWN0ID0gTlVMTDsKKwkJZ1dTc2VuZCA9IE5VTEw7CisJCWdXU3JlY3YgPSBOVUxMOworCQlnV1NzaHV0ZG93biA9IE5VTEw7CisJCWdXU2Nsb3Nlc29ja2V0ID0gTlVMTDsKKworICAgICAgZkluaXRpYWxpemVkID0gZmFsc2U7CisgICAgICBkZWxldGUgZkluaXRNdXRleDsKKyAgICAgIGZJbml0TXV0ZXggPSAwOworCX0KK30KKworCitob3N0ZW50KiBYU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtOjpnZXRob3N0YnluYW1lKGNvbnN0IGNoYXIqIG5hbWUpCit7CisJcmV0dXJuICgqZ1dTZ2V0aG9zdGJ5bmFtZSkobmFtZSk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbTo6aW5ldF9hZGRyKGNvbnN0IGNoYXIqIGNwKQoreworCXJldHVybiAoKmdXU2luZXRfYWRkcikoY3ApOworfQorCitob3N0ZW50KiBYU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtOjpnZXRob3N0YnlhZGRyKGNvbnN0IGNoYXIqIGFkZHIsaW50IGxlbixpbnQgdHlwZSkKK3sKKwlyZXR1cm4gKCpnV1NnZXRob3N0YnlhZGRyKShhZGRyLGxlbix0eXBlKTsKK30KKwordW5zaWduZWQgc2hvcnQgWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbTo6aHRvbnModW5zaWduZWQgc2hvcnQgaG9zdHNob3J0KQoreworCXJldHVybiAoKmdXU2h0b25zKShob3N0c2hvcnQpOworfQorCit1bnNpZ25lZCBzaG9ydCBYU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtOjpzb2NrZXQoaW50IGFmLGludCB0eXBlLGludCBwcm90b2NvbCkKK3sKKwlyZXR1cm4gKHVuc2lnbmVkIHNob3J0KSAoKmdXU3NvY2tldCkoYWYsdHlwZSxwcm90b2NvbCk7Cit9CisKK2ludCBYU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtOjpjb25uZWN0KHVuc2lnbmVkIHNob3J0IHMsY29uc3Qgc29ja2FkZHIqIG5hbWUsaW50IG5hbWVsZW4pCit7CisJcmV0dXJuICgqZ1dTY29ubmVjdCkocyxuYW1lLG5hbWVsZW4pOworfQorCitpbnQgWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbTo6c2VuZCh1bnNpZ25lZCBzaG9ydCBzLGNvbnN0IGNoYXIqIGJ1ZixpbnQgbGVuLGludCBmbGFncykKK3sKKwlyZXR1cm4gKCpnV1NzZW5kKShzLGJ1ZixsZW4sZmxhZ3MpOworfQorCitpbnQgWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbTo6cmVjdih1bnNpZ25lZCBzaG9ydCBzLGNoYXIqIGJ1ZixpbnQgbGVuLGludCBmbGFncykKK3sKKwlyZXR1cm4gKCpnV1NyZWN2KShzLGJ1ZixsZW4sZmxhZ3MpOworfQorCitpbnQgWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbTo6c2h1dGRvd24odW5zaWduZWQgaW50IHMsaW50IGhvdykKK3sKKwlyZXR1cm4gKCpnV1NzaHV0ZG93bikocyxob3cpOworfQorCitpbnQgWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbTo6Y2xvc2Vzb2NrZXQodW5zaWduZWQgaW50IHNvY2tldCkKK3sKKwlyZXR1cm4gKCpnV1NjbG9zZXNvY2tldCkoc29ja2V0KTsKK30KKwordW5zaWduZWQgaW50IFhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW06OmdldFNvY2tldEhhbmRsZShjb25zdCBYTUxVcmkmICB1cmxTb3VyY2UpIHsKKworICAgIC8vCisgICAgLy8gUHVsbCBhbGwgb2YgdGhlIHBhcnRzIG9mIHRoZSBVUkwgb3V0IG9mIHRoIHVybFNvdXJjZSBvYmplY3QsIGFuZCB0cmFuc2NvZGUgdGhlbQorICAgIC8vICAgYW5kIHRyYW5zY29kZSB0aGVtIGJhY2sgdG8gQVNDSUkuCisgICAgLy8KKyAgICBjb25zdCBYTUxDaCogICAgICAgIGhvc3ROYW1lID0gdXJsU291cmNlLmdldEhvc3QoKTsKKyAgICBYU0VDQXV0b1B0ckNoYXIgICAgIGhvc3ROYW1lQXNDaGFyU3Rhcihob3N0TmFtZSk7CisKKyAgICBjb25zdCBYTUxDaCogICAgICAgIHBhdGggPSB1cmxTb3VyY2UuZ2V0UGF0aCgpOworICAgIFhTRUNBdXRvUHRyQ2hhciAgICAgcGF0aEFzQ2hhclN0YXIocGF0aCk7CisKKyAgICBjb25zdCBYTUxDaCogICAgICAgIGZyYWdtZW50ID0gdXJsU291cmNlLmdldEZyYWdtZW50KCk7CisgICAgWFNFQ0F1dG9QdHJDaGFyICAgICBmcmFnbWVudEFzQ2hhclN0YXIoZnJhZ21lbnQpOworCisgICAgY29uc3QgWE1MQ2gqICAgICAgICBxdWVyeSA9IHVybFNvdXJjZS5nZXRRdWVyeVN0cmluZygpOworICAgIFhTRUNBdXRvUHRyQ2hhciAgICAgcXVlcnlBc0NoYXJTdGFyKHF1ZXJ5KTsKKworICAgIHVuc2lnbmVkIHNob3J0ICAgICAgcG9ydE51bWJlciA9ICh1bnNpZ25lZCBzaG9ydCkgdXJsU291cmNlLmdldFBvcnQoKTsKKworCS8vIElmIG5vIG51bWJlciBpcyBzZXQsIGdvIHdpdGggcG9ydCA4MAorCWlmIChwb3J0TnVtYmVyID09IFVTSFJUX01BWCkKKwkJcG9ydE51bWJlciA9IDgwOworCisgICAgLy8KKyAgICAvLyBTZXQgdXAgYSBzb2NrZXQuCisgICAgLy8KKyAgICBzdHJ1Y3QgaG9zdGVudCogICAgIGhvc3RFbnRQdHIgPSAwOworICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAgc2E7CisKKworICAgIGlmICgoaG9zdEVudFB0ciA9IGdldGhvc3RieW5hbWUoaG9zdE5hbWVBc0NoYXJTdGFyLmdldCgpKSkgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgIG51bUFkZHJlc3MgPSBpbmV0X2FkZHIoaG9zdE5hbWVBc0NoYXJTdGFyLmdldCgpKTsKKyAgICAgICAgaWYgKG51bUFkZHJlc3MgPT0gSU5BRERSX05PTkUpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIENhbGwgV1NBR2V0TGFzdEVycm9yKCkgdG8gZ2V0IHRoZSBlcnJvciBudW1iZXIuCisJICAgICAgICB0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkhUVFBVUklJbnB1dFN0cmVhbUVycm9yLAorCQkJCQkJCSJFcnJvciByZXBvcnRlZCByZXNvbHZpbmcgSVAgYWRkcmVzcyIpOworICAgICAgICB9CisgICAgICAgIGlmICgoaG9zdEVudFB0ciA9CisgICAgICAgICAgICAgICAgZ2V0aG9zdGJ5YWRkcigoY29uc3QgY2hhciAqKSAmbnVtQWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih1bnNpZ25lZCBsb25nKSwgQUZfSU5FVCkpID09IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIENhbGwgV1NBR2V0TGFzdEVycm9yKCkgdG8gZ2V0IHRoZSBlcnJvciBudW1iZXIuCisJICAgICAgICB0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkhUVFBVUklJbnB1dFN0cmVhbUVycm9yLAorCQkJCQkJCSJFcnJvciByZXBvcnRlZCByZXNvbHZpbmcgSVAgYWRkcmVzcyIpOworICAgICAgICB9CisgICAgfQorCisgICAgbWVtY3B5KCh2b2lkICopICZzYS5zaW5fYWRkciwKKyAgICAgICAgICAgKGNvbnN0IHZvaWQgKikgaG9zdEVudFB0ci0+aF9hZGRyLCBob3N0RW50UHRyLT5oX2xlbmd0aCk7CisgICAgc2Euc2luX2ZhbWlseSA9IGhvc3RFbnRQdHItPmhfYWRkcnR5cGU7CisgICAgc2Euc2luX3BvcnQgPSBodG9ucyhwb3J0TnVtYmVyKTsKKworICAgIFNPQ0tFVCBzID0gc29ja2V0KGhvc3RFbnRQdHItPmhfYWRkcnR5cGUsIFNPQ0tfU1RSRUFNLCAwKTsKKyAgICBpZiAocyA9PSBJTlZBTElEX1NPQ0tFVCkKKyAgICB7CisgICAgICAgIC8vIENhbGwgV1NBR2V0TGFzdEVycm9yKCkgdG8gZ2V0IHRoZSBlcnJvciBudW1iZXIuCisgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SFRUUFVSSUlucHV0U3RyZWFtRXJyb3IsCisJCQkJCQkJIkVycm9yIHJlcG9ydGVkIGNyZWF0aW5nIHNvY2tldCIpOworICAgIH0KKworICAgIGlmIChjb25uZWN0KCh1bnNpZ25lZCBzaG9ydCkgcywgKHN0cnVjdCBzb2NrYWRkciAqKSAmc2EsIHNpemVvZihzYSkpID09IFNPQ0tFVF9FUlJPUikKKyAgICB7CisgICAgICAgIC8vIENhbGwgV1NBR2V0TGFzdEVycm9yKCkgdG8gZ2V0IHRoZSBlcnJvciBudW1iZXIuCisgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SFRUUFVSSUlucHV0U3RyZWFtRXJyb3IsCisJCQkJCQkJIkVycm9yIHJlcG9ydGVkIGNvbm5lY3RpbmcgdG8gc29ja2V0Iik7CisgICAgfQorCisKKyAgICAvLyBTZXQgYSBmbGFnIHNvIHdlIGtub3cgdGhhdCB0aGUgaGVhZGVycyBoYXZlIG5vdCBiZWVuIHJlYWQgeWV0LgorICAgIGJvb2wgZkhlYWRlclJlYWQgPSBmYWxzZTsKKworICAgIC8vIFRoZSBwb3J0IGlzIG9wZW4gYW5kIHJlYWR5IHRvIGdvLgorICAgIC8vIEJ1aWxkIHVwIHRoZSBodHRwIEdFVCBjb21tYW5kIHRvIHNlbmQgdG8gdGhlIHNlcnZlci4KKyAgICAvLyBUbyBkbzogIFdlIHNob3VsZCByZWFsbHkgc3VwcG9ydCBodHRwIDEuMS4gIFRoaXMgaW1wbGVtZW50YXRpb24KKyAgICAvLyAgICAgICAgIGlzIHdlYWsuCisKKyAgICBtZW1zZXQoZkJ1ZmZlciwgMCwgc2l6ZW9mKGZCdWZmZXIpKTsKKworICAgIHN0cmNweShmQnVmZmVyLCAiR0VUICIpOworICAgIHN0cmNhdChmQnVmZmVyLCBwYXRoQXNDaGFyU3Rhci5nZXQoKSk7CisKKyAgICBpZiAocXVlcnlBc0NoYXJTdGFyLmdldCgpICE9IDApCisgICAgeworICAgICAgICAvLyBUYWNrIG9uIGEgPyBiZWZvcmUgdGhlIGZyYWdtZW50CisgICAgICAgIHN0cmNhdChmQnVmZmVyLCI/Iik7CisgICAgICAgIHN0cmNhdChmQnVmZmVyLCBxdWVyeUFzQ2hhclN0YXIuZ2V0KCkpOworICAgIH0KKworICAgIGlmIChmcmFnbWVudEFzQ2hhclN0YXIuZ2V0KCkgIT0gMCkKKyAgICB7CisgICAgICAgIHN0cmNhdChmQnVmZmVyLCBmcmFnbWVudEFzQ2hhclN0YXIuZ2V0KCkpOworICAgIH0KKyAgICBzdHJjYXQoZkJ1ZmZlciwgIiBIVFRQLzEuMFxyXG4iKTsKKworCisgICAgc3RyY2F0KGZCdWZmZXIsICJIb3N0OiAiKTsKKyAgICBzdHJjYXQoZkJ1ZmZlciwgaG9zdE5hbWVBc0NoYXJTdGFyLmdldCgpKTsKKyAgICBpZiAocG9ydE51bWJlciAhPSA4MCkKKyAgICB7CisgICAgICAgIHN0cmNhdChmQnVmZmVyLCAiOiIpOworICAgICAgICBpbnQgaSA9IChpbnQpIHN0cmxlbihmQnVmZmVyKTsKKyAgICAgICAgX2l0b2EocG9ydE51bWJlciwgZkJ1ZmZlcitpLCAxMCk7CisgICAgfQorICAgIHN0cmNhdChmQnVmZmVyLCAiXHJcblxyXG4iKTsKKworICAgIC8vIFNlbmQgdGhlIGh0dHAgcmVxdWVzdAorICAgIGludCBsZW50ID0gKGludCkgc3RybGVuKGZCdWZmZXIpOworICAgIGludCAgYUxlbnQgPSAwOworICAgIGlmICgoYUxlbnQgPSBzZW5kKCh1bnNpZ25lZCBzaG9ydCkgcywgZkJ1ZmZlciwgbGVudCwgMCkpICE9IGxlbnQpCisgICAgeworICAgICAgICAvLyBDYWxsIFdTQUdldExhc3RFcnJvcigpIHRvIGdldCB0aGUgZXJyb3IgbnVtYmVyLgorICAgICAgICB0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkhUVFBVUklJbnB1dFN0cmVhbUVycm9yLAorCQkJCQkJCSJFcnJvciByZXBvcnRlZCB3cml0aW5nIHRvIHNvY2tldCIpOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBnZXQgdGhlIHJlc3BvbnNlLCBjaGVjayB0aGUgaHR0cCBoZWFkZXIgZm9yIGVycm9ycyBmcm9tIHRoZSBzZXJ2ZXIuCisgICAgLy8KKyAgICBtZW1zZXQoZkJ1ZmZlciwgMCwgc2l6ZW9mKGZCdWZmZXIpKTsKKyAgICBhTGVudCA9IHJlY3YoKHVuc2lnbmVkIHNob3J0KSBzLCBmQnVmZmVyLCBzaXplb2YoZkJ1ZmZlciktMSwgMCk7CisgICAgaWYgKGFMZW50ID09IFNPQ0tFVF9FUlJPUiB8fCBhTGVudCA9PSAwKQorICAgIHsKKyAgICAgICAgLy8gQ2FsbCBXU0FHZXRMYXN0RXJyb3IoKSB0byBnZXQgdGhlIGVycm9yIG51bWJlci4KKyAgICAgICAgdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpIVFRQVVJJSW5wdXRTdHJlYW1FcnJvciwKKwkJCQkJCQkiRXJyb3IgcmVwb3J0ZWQgcmVhZGluZyBzb2NrZXQiKTsKKyAgICB9CisKKyAgICBmQnVmZmVyRW5kID0gZkJ1ZmZlcithTGVudDsKKyAgICAqZkJ1ZmZlckVuZCA9IDA7CisKKyAgICBkbyB7CisgICAgICAgIC8vIEZpbmQgdGhlIGJyZWFrIGJldHdlZW4gdGhlIHJldHVybmVkIGh0dHAgaGVhZGVyIGFuZCBhbnkgZGF0YS4KKyAgICAgICAgLy8gIChEZWxpbWl0ZWQgYnkgYSBibGFuayBsaW5lKQorICAgICAgICAvLyBIYW5nIG9uIHRvIGFueSBkYXRhIGZvciB1c2UgYnkgdGhlIGZpcnN0IHJlYWQgZnJvbSB0aGlzIFhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0uCisgICAgICAgIC8vCisgICAgICAgIGZCdWZmZXJQb3MgPSBzdHJzdHIoZkJ1ZmZlciwgIlxyXG5cclxuIik7CisgICAgICAgIGlmIChmQnVmZmVyUG9zICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGZCdWZmZXJQb3MgKz0gNDsKKyAgICAgICAgICAgICooZkJ1ZmZlclBvcy0yKSA9IDA7CisgICAgICAgICAgICBmSGVhZGVyUmVhZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBmQnVmZmVyUG9zID0gc3Ryc3RyKGZCdWZmZXIsICJcblxuIik7CisgICAgICAgICAgICBpZiAoZkJ1ZmZlclBvcyAhPSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZCdWZmZXJQb3MgKz0gMjsKKyAgICAgICAgICAgICAgICAqKGZCdWZmZXJQb3MtMSkgPSAwOworICAgICAgICAgICAgICAgIGZIZWFkZXJSZWFkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAgIC8vIEhlYWRlciBpcyBub3QgeWV0IHJlYWQsIGRvIGFub3RoZXIgcmVjdigpIHRvIGdldCBtb3JlIGRhdGEuLi4KKyAgICAgICAgICAgICAgICBhTGVudCA9ICh1bnNpZ25lZCBpbnQpIHJlY3YoKHVuc2lnbmVkIHNob3J0KSBzLCBmQnVmZmVyRW5kLCAoKGludCkgc2l6ZW9mKGZCdWZmZXIpIC0gMSkgLSAoaW50KSAoZkJ1ZmZlckVuZCAtIGZCdWZmZXIpLCAwKTsKKyAgICAgICAgICAgICAgICBpZiAoYUxlbnQgPT0gU09DS0VUX0VSUk9SIHx8IGFMZW50ID09IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvLyBDYWxsIFdTQUdldExhc3RFcnJvcigpIHRvIGdldCB0aGUgZXJyb3IgbnVtYmVyLgorCQkJICAgICAgICB0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkhUVFBVUklJbnB1dFN0cmVhbUVycm9yLAorCQkJCQkJCSJFcnJvciByZXBvcnRlZCByZWFkaW5nIHNvY2tldCIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmQnVmZmVyRW5kID0gZkJ1ZmZlckVuZCArIGFMZW50OworICAgICAgICAgICAgICAgICpmQnVmZmVyRW5kID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gd2hpbGUoZkhlYWRlclJlYWQgPT0gZmFsc2UpOworCisgICAgLy8gTWFrZSBzdXJlIHRoZSBoZWFkZXIgaW5jbHVkZXMgYW4gSFRUUCAyMDAgT0sgcmVzcG9uc2UuCisgICAgLy8KKyAgICBjaGFyICpwID0gc3Ryc3RyKGZCdWZmZXIsICJIVFRQIik7CisgICAgaWYgKHAgPT0gMCkKKyAgICB7CisgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SFRUUFVSSUlucHV0U3RyZWFtRXJyb3IsCisJCQkJCQkJIkVycm9yIHJlcG9ydGVkIHJlYWRpbmcgc29ja2V0Iik7CisgICAgfQorCisgICAgcCA9IHN0cmNocihwLCAnICcpOworICAgIGlmIChwID09IDApCisgICAgeworICAgICAgICB0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkhUVFBVUklJbnB1dFN0cmVhbUVycm9yLAorCQkJCQkJCSJFcnJvciByZXBvcnRlZCByZWFkaW5nIHNvY2tldCIpOworICAgIH0KKworICAgIGludCBodHRwUmVzcG9uc2UgPSBhdG9pKHApOworCisgICAgLy8gQ2hlY2sgZm9yIHJlZGlyZWN0IG9yIHBlcm1hbmVudGx5IG1vdmVkCisgICAgaWYgKGh0dHBSZXNwb25zZSA9PSAzMDIgfHwgaHR0cFJlc3BvbnNlID09IDMwMSkKKyAgICB7CisgICAgICAgIC8vT25jZSBncm93cywgc2hvdWxkIHVzZSBhIHN3aXRjaAorICAgICAgICBjaGFyIHJlZGlyZWN0QnVmWzI1Nl07CisgICAgICAgIGludCBxOworCisgICAgICAgIC8vIEZpbmQgdGhlICJMb2NhdGlvbjoiIHN0cmluZworICAgICAgICBwID0gc3Ryc3RyKHAsICJMb2NhdGlvbjoiKTsKKyAgICAgICAgaWYgKHAgPT0gMCkKKyAgICAgICAgeworCSAgICAgICAgdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpIVFRQVVJJSW5wdXRTdHJlYW1FcnJvciwKKwkJCQkJCQkiRXJyb3IgcmVwb3J0ZWQgcmVhZGluZyBzb2NrZXQiKTsKKyAgICAgICAgfQorICAgICAgICBwID0gc3RyY2hyKHAsICcgJyk7CisJCWlmIChwID09IDApCisJCXsKKwkgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SFRUUFVSSUlucHV0U3RyZWFtRXJyb3IsCisJCQkJCQkJIkVycm9yIHJlcG9ydGVkIHJlYWRpbmcgc29ja2V0Iik7CisJCX0KKworCQkvLyBOb3cgcmVhZAorCQlwKys7CisJCWZvciAocT0wOyBxIDwgMjU1ICYmIHBbcV0gIT0gJ1xyJyAmJiBwW3FdICE9J1xuJzsgKytxKQorCQkJcmVkaXJlY3RCdWZbcV0gPSBwW3FdOworCisJCXJlZGlyZWN0QnVmW3FdID0gJ1wwJzsKKworCQkvLyBUcnkgdG8gZmluZCB0aGlzIGxvY2F0aW9uCisJCVhTRUNBdXRvUHRyWE1MQ2ggcmVkaXJlY3RCdWZUcmFucyhyZWRpcmVjdEJ1Zik7CisKKwkJcmV0dXJuIGdldFNvY2tldEhhbmRsZShYTUxVcmkocmVkaXJlY3RCdWZUcmFucy5nZXQoKSkpOworCX0KKyAgICBlbHNlIGlmIChodHRwUmVzcG9uc2UgIT0gMjAwKQorICAgIHsKKyAgICAgICAgLy8gTW9zdCBsaWtlbHkgYSA0MDQgTm90IEZvdW5kIGVycm9yLgorICAgICAgICAvLyAgIFNob3VsZCByZWNvZ25pemUgYW5kIGhhbmRsZSB0aGUgZm9yd2FyZGluZyByZXNwb25zZXMuCisgICAgICAgIC8vCisgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SFRUUFVSSUlucHV0U3RyZWFtRXJyb3IsCisJCQkJCQkJIlVua25vd24gSFRUUCByZXNwb25zZSByZWNlaXZlZCIpOworICAgIH0KKworICAgIHJldHVybiAodW5zaWduZWQgaW50KSBzOworfQorCisKK1hTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW06OlhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0oY29uc3QgWE1MVXJpJiB1cmxTb3VyY2UpCisgICAgICA6IGZTb2NrZXRIYW5kbGUoMCkKKyAgICAgICwgZkJ5dGVzUHJvY2Vzc2VkKDApCit7CisgICAgaWYoIWZJbml0aWFsaXplZCkKKyAgICB7CisgICAgICAgIGlmICghZkluaXRNdXRleCkKKyAgICAgICAgeworICAgICAgICAgICAgWE1MTXV0ZXgqIHRtcE11dGV4ID0gbmV3IFhNTE11dGV4OworICAgICAgICAgICAgaWYgKGNvbXBhcmVBbmRTd2FwKCh2b2lkKiopJmZJbml0TXV0ZXgsIHRtcE11dGV4LCAwKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBTb21lb25lIGJlYXQgdXMgdG8gaXQsIHNvIGxldCdzIGNsZWFuIHVwIG91cnMKKyAgICAgICAgICAgICAgICBkZWxldGUgdG1wTXV0ZXg7CisgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICAgICBYTUxNdXRleExvY2sgbG9jayhmSW5pdE11dGV4KTsKKyAgICAgICAgIGlmICghZkluaXRpYWxpemVkKQorICAgICAgICAgeworICAgICAgICAgICAgIEluaXRpYWxpemUoKTsKKyAgICAgICAgIH0KKyAgICB9CisKKwlmU29ja2V0SGFuZGxlID0gZ2V0U29ja2V0SGFuZGxlKHVybFNvdXJjZSk7CisKK30KKwordm9pZCBYU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtOjpFeHRlcm5hbEluaXRpYWxpemUodm9pZCkgeworCisgICAgaWYoIWZJbml0aWFsaXplZCkKKyAgICB7CisgICAgICAgIGlmICghZkluaXRNdXRleCkKKyAgICAgICAgeworICAgICAgICAgICAgWE1MTXV0ZXgqIHRtcE11dGV4ID0gbmV3IFhNTE11dGV4OworICAgICAgICAgICAgaWYgKGNvbXBhcmVBbmRTd2FwKCh2b2lkKiopJmZJbml0TXV0ZXgsIHRtcE11dGV4LCAwKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBTb21lb25lIGJlYXQgdXMgdG8gaXQsIHNvIGxldCdzIGNsZWFuIHVwIG91cnMKKyAgICAgICAgICAgICAgICBkZWxldGUgdG1wTXV0ZXg7CisgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICAgICBYTUxNdXRleExvY2sgbG9jayhmSW5pdE11dGV4KTsKKyAgICAgICAgIGlmICghZkluaXRpYWxpemVkKQorICAgICAgICAgeworICAgICAgICAgICAgIEluaXRpYWxpemUoKTsKKyAgICAgICAgIH0KKyAgICB9Cit9CisKKworWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbTo6flhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0oKQoreworICAgIHNodXRkb3duKGZTb2NrZXRIYW5kbGUsIFNEX0JPVEgpOworICAgIGNsb3Nlc29ja2V0KGZTb2NrZXRIYW5kbGUpOworfQorCisKKy8vCisvLyAgcmVhZEJ5dGVzCisvLworeHNlY3NpemVfdCBYU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtOjpyZWFkQnl0ZXMoWE1MQnl0ZSogY29uc3QgICAgdG9GaWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIGNvbnN0IHhzZWNzaXplX3QgICAgbWF4VG9SZWFkKQoreworCisgICAgeHNlY3NpemVfdCBsZW4gPSAoeHNlY3NpemVfdCkgKGZCdWZmZXJFbmQgLSBmQnVmZmVyUG9zKTsKKyAgICBpZiAobGVuID4gMCkKKyAgICB7CisgICAgICAgIC8vIElmIHRoZXJlJ3MgYW55IGRhdGEgbGVmdCBvdmVyIGluIHRoZSBidWZmZXIgaW50byB3aGljaCB3ZSBmaXJzdAorICAgICAgICAvLyAgIHJlYWQgZnJvbSB0aGUgc2VydmVyICh0byBnZXQgdGhlIGh0dHAgaGVhZGVyKSwgcmV0dXJuIHRoYXQuCisgICAgICAgIGlmIChsZW4gPiBtYXhUb1JlYWQpCisgICAgICAgICAgICBsZW4gPSBtYXhUb1JlYWQ7CisgICAgICAgIG1lbWNweSh0b0ZpbGwsIGZCdWZmZXJQb3MsIGxlbik7CisgICAgICAgIGZCdWZmZXJQb3MgKz0gbGVuOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAvLyBUaGVyZSB3YXMgbm8gZGF0YSBpbiB0aGUgbG9jYWwgYnVmZmVyLgorICAgICAgICAvLyBSZWFkIHNvbWUgZnJvbSB0aGUgc29ja2V0LCBzdHJhaWdodCBpbnRvIG91ciBjYWxsZXIncyBidWZmZXIuCisgICAgICAgIC8vCisgICAgICAgIGxlbiA9IHJlY3YoZlNvY2tldEhhbmRsZSwgKGNoYXIgKikgdG9GaWxsLCBtYXhUb1JlYWQsIDApOworICAgICAgICBpZiAobGVuID09IFNPQ0tFVF9FUlJPUikKKyAgICAgICAgeworICAgICAgICAgICAgLy8gQ2FsbCBXU0FHZXRMYXN0RXJyb3IoKSB0byBnZXQgdGhlIGVycm9yIG51bWJlci4KKwkgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SFRUUFVSSUlucHV0U3RyZWFtRXJyb3IsCisJCQkJCQkJIkVycm9yIHJlcG9ydGVkIHJlYWRpbmcgc29ja2V0Iik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmQnl0ZXNQcm9jZXNzZWQgKz0gbGVuOworICAgIHJldHVybiBsZW47Cit9CisKKyNpZmRlZiBYU0VDX1hFUkNFU19JTlBVVFNUUkVBTV9IQVNfQ09OVEVOVFRZUEUKK2NvbnN0IFhNTENoKiBYU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtOjpnZXRDb250ZW50VHlwZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYy9zcmMvdXRpbHMvd2ludXRpbHMvWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbS5ocHAgYi9jL3NyYy91dGlscy93aW51dGlscy9YU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGJjNGRkCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdXRpbHMvd2ludXRpbHMvWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbS5ocHAKQEAgLTAsMCArMSwxNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0gOj0gUmUtaW1wbGVtZW50YXRpb24gb2YgdGhlIFhlcmNlcworICoJCQkJCQkJICAgIEJpbkhUVFBVUkxJbnB1dFN0cmVhbS4gIEFsbG93cyB1cyB0byBtYWtlCisgKgkJCQkJCQkJc29tZSBzbWFsbCBjaGFuZ2VzIHRvIHN1cHBvcnQgdGhlIHJlcXVpcmVtZW50cworICoJCQkJCQkJCW9mIFhNTERTSUcgKG5vdGFibHkgcmUtZGlyZWN0cykKKyAqCisgKiBOT1RFOiBNdWNoIGNvZGUgdGFrZW4gZnJvbSBYZXJjZXMsIGFuZCB0aGUgY3Jvc3MgcGxhdGZvcm0gaW50ZXJmYWNpbmcgaXMKKyAqIG5vLXdoZXJlIG5lYXIgYXMgbmljZS4KKyAqCisgKiBBdXRob3Iocyk6IEJlcmluIExhdXRlbmJhY2gKKyAqCisgKiAkSWQkCisgKgorICogJExvZyQKKyAqIFJldmlzaW9uIDEuNyAgMjAwNS8wMi8wMyAxMzo1NjoyMiAgbWlsYW4KKyAqIEFwYWNoZSBsaWNlbmNlIGZpeC4KKyAqCisgKiBSZXZpc2lvbiAxLjYgIDIwMDQvMDQvMjEgMTA6MTQ6NDkgIGJsYXV0ZW5iCisgKiBDbGVhbiB3aW5kb3dzIGJ1aWxkIHdpdGggb3ZlcmFyY2hpbmcgU2ltcGxlU09BUFJlcXVlc3RvcgorICoKKyAqIFJldmlzaW9uIDEuNSAgMjAwNC8wNC8xNiAxMjowNzoyMyAgYmxhdXRlbmIKKyAqIFNrZWxldG9uIGNvZGUgZm9yIFhLTVMgTWVzc2FnZUZhY3RvcnkKKyAqCisgKiBSZXZpc2lvbiAxLjQgIDIwMDQvMDIvMDggMTA6MjU6NDAgIGJsYXV0ZW5iCisgKiBDb252ZXJ0IHRvIEFwYWNoZSAyLjAgbGljZW5zZQorICoKKyAqIFJldmlzaW9uIDEuMyAgMjAwMy8wOS8xMSAxMToxMTowNSAgYmxhdXRlbmIKKyAqIENsZWFuZWQgdXAgdXNhZ2Ugb2YgWGVyY2VzIG5hbWVzcGFjZSAtIG5vIGxvbmdlciBpbmplY3QgaW50byBnbG9iYWwgbmFtZXNwYWNlIGluIGhlYWRlcnMKKyAqCisgKiBSZXZpc2lvbiAxLjIgIDIwMDMvMDcvMDUgMTA6MzA6MzggIGJsYXV0ZW5iCisgKiBDb3B5cmlnaHQgdXBkYXRlCisgKgorICogUmV2aXNpb24gMS4xICAyMDAzLzAyLzEyIDA5OjQ1OjI5ICBibGF1dGVuYgorICogV2luMzIgUmUtaW1wbGVtZW50YXRpb24gb2YgWGVyY2VzIFVSSVJlc29sdmVyIHRvIHN1cHBvcnQgcmUtZGlyZWN0cworICoKKyAqCisgKi8KKworCisjaWZuZGVmIFhTRUNCSU5IVFRQVVJJSU5QVVRTVFJFQU1fSEVBREVSCisjZGVmaW5lIFhTRUNCSU5IVFRQVVJJSU5QVVRTVFJFQU1fSEVBREVSCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisKKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MVXJpLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MRXhjZXB0TXNncy5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL0JpbklucHV0U3RyZWFtLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvTXV0ZXhlcy5ocHA+CisKKy8vCisvLyBUaGlzIGNsYXNzIGltcGxlbWVudHMgdGhlIEJpbklucHV0U3RyZWFtIGludGVyZmFjZSBzcGVjaWZpZWQgYnkgdGhlIFhNTAorLy8gcGFyc2VyLgorLy8KKworc3RydWN0IGhvc3RlbnQ7CitzdHJ1Y3Qgc29ja2FkZHI7CisKK2NsYXNzIFhTRUNTT0FQUmVxdWVzdG9yU2ltcGxlOworCitjbGFzcyBEU0lHX0VYUE9SVCBYU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtIDogcHVibGljIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBCaW5JbnB1dFN0cmVhbQoreworcHVibGljIDoKKworICAgIFhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0oY29uc3QgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIFhNTFVyaSYgIHVybFNvdXJjZSk7CisgICAgflhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0oKTsKKworI2lmZGVmIFhTRUNfWEVSQ0VTXzY0QklUU0FGRQorICAgIFhNTEZpbGVQb3MgY3VyUG9zKCkgY29uc3Q7CisjZWxzZQorICAgIHVuc2lnbmVkIGludCBjdXJQb3MoKSBjb25zdDsKKyNlbmRpZgorICAgIHhzZWNzaXplX3QgcmVhZEJ5dGVzKFhNTEJ5dGUqIGNvbnN0ICB0b0ZpbGwsIGNvbnN0IHhzZWNzaXplX3QgICAgbWF4VG9SZWFkKTsKKworI2lmZGVmIFhTRUNfWEVSQ0VTX0lOUFVUU1RSRUFNX0hBU19DT05URU5UVFlQRQorICAgIGNvbnN0IFhNTENoKiBnZXRDb250ZW50VHlwZSgpIGNvbnN0OworI2VuZGlmCisKKwlzdGF0aWMgdm9pZCBDbGVhbnVwKCk7CisKKwlmcmllbmQgY2xhc3MgWFNFQ1NPQVBSZXF1ZXN0b3JTaW1wbGU7CisKK3Byb3RlY3RlZDoKKworCS8qCisJICogVGhlc2UgYXJlIGNhbGxlZCBieSBvdGhlciBjbGFzc2VzIHRoYXQgdXNlIHRoZSBsb2FkZWQgRExMCisJICoKKwkgKiBBY3R1YWxseSAtIHRoaXMgaXMgY2hlYXRpbmcgb2YgdGhlIHdvcnN0IGtpbmQsIGJ1dCBpdAorCSAqIHByb3ZpZGVzIGEgcXVpY2sgd2F5IHRvIG1ha2UgdGhlc2UgY2FsbHMgYXZhaWxhYmxlIG91dHNpZGUgdGhlIGxpYnJhcnkKKwkgKi8KKworCXN0YXRpYyB2b2lkIEV4dGVybmFsSW5pdGlhbGl6ZSh2b2lkKTsKKworCXN0YXRpYyBob3N0ZW50KiBnZXRob3N0YnluYW1lKGNvbnN0IGNoYXIqIG5hbWUpOworCXN0YXRpYyB1bnNpZ25lZCBsb25nIGluZXRfYWRkcihjb25zdCBjaGFyKiBjcCk7CisJc3RhdGljIGhvc3RlbnQqIGdldGhvc3RieWFkZHIoY29uc3QgY2hhciogYWRkcixpbnQgbGVuLGludCB0eXBlKTsKKwlzdGF0aWMgdW5zaWduZWQgc2hvcnQgaHRvbnModW5zaWduZWQgc2hvcnQgaG9zdHNob3J0KTsKKwlzdGF0aWMgdW5zaWduZWQgc2hvcnQgc29ja2V0KGludCBhZixpbnQgdHlwZSxpbnQgcHJvdG9jb2wpOworCXN0YXRpYyBpbnQgY29ubmVjdCh1bnNpZ25lZCBzaG9ydCBzLGNvbnN0IHNvY2thZGRyKiBuYW1lLGludCBuYW1lbGVuKTsKKwlzdGF0aWMgaW50IHNlbmQodW5zaWduZWQgc2hvcnQgcyxjb25zdCBjaGFyKiBidWYsaW50IGxlbixpbnQgZmxhZ3MpOworCXN0YXRpYyBpbnQgcmVjdih1bnNpZ25lZCBzaG9ydCBzLGNoYXIqIGJ1ZixpbnQgbGVuLGludCBmbGFncyk7CisJc3RhdGljIGludCBzaHV0ZG93bih1bnNpZ25lZCBpbnQgcyxpbnQgaG93KTsKKwlzdGF0aWMgaW50IGNsb3Nlc29ja2V0KHVuc2lnbmVkIGludCBzb2NrZXQpOworCisKK3ByaXZhdGUgOgorICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gIFByaXZhdGUgZGF0YSBtZW1iZXJzCisgICAgLy8KKyAgICAvLyAgZlNvY2tldEhhbmRsZQorICAgIC8vICAgICAgVGhlIHNvY2tldCByZXByZXNlbnRpbmcgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHJlbW90ZSBmaWxlLgorICAgIC8vICAgICAgV2UgZGVsaWJlcmF0ZWx5IGRpZCBub3QgZGVmaW5lIHRoZSB0eXBlIHRvIGJlIFNPQ0tFVCwgc28gYXMgdG8KKyAgICAvLyAgICAgIGF2b2lkIGJyaW5naW5nIGluIGFueSBXaW5kb3dzIGhlYWRlciBpbnRvIHRoaXMgZmlsZS4KKyAgICAvLyAgZkJ5dGVzUHJvY2Vzc2VkCisgICAgLy8gICAgICBJdHMgYSByb2xsaW5nIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgYnl0ZXMgcHJvY2Vzc2VkIG9mZiB0aGlzCisgICAgLy8gICAgICBpbnB1dCBzdHJlYW0uCisgICAgLy8gIGZCdWZmZXIKKyAgICAvLyAgICAgIEhvbGRzIHRoZSBodHRwIGhlYWRlciwgcGx1cyB0aGUgZmlyc3QgcGFydCBvZiB0aGUgYWN0dWFsCisgICAgLy8gICAgICBkYXRhLiAgRmlsbGVkIGF0IHRoZSB0aW1lIHRoZSBzdHJlYW0gaXMgb3BlbmVkLCBkYXRhIGdvZXMKKyAgICAvLyAgICAgIG91dCB0byB1c2VyIGluIHJlc3BvbnNlIHRvIHJlYWRCeXRlcygpLgorICAgIC8vICBmQnVmZmVyUG9zLCBmQnVmZmVyRW5kCisgICAgLy8gICAgICBQb2ludGVycyBpbnRvIGZCdWZmZXIsIHNob3dpbmcgc3RhcnQgYW5kIGVuZCsxIG9mIGNvbnRlbnQKKyAgICAvLyAgICAgIHRoYXQgcmVhZEJ5dGVzIG11c3QgcmV0dXJuLgorICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICB1bnNpZ25lZCBpbnQgICAgICAgIGZTb2NrZXRIYW5kbGU7CisgICAgeHNlY3NpemVfdCAgICAgICAgICBmQnl0ZXNQcm9jZXNzZWQ7CisgICAgY2hhciAgICAgICAgICAgICAgICBmQnVmZmVyWzQwMDBdOworICAgIGNoYXIgKiAgICAgICAgICAgICAgZkJ1ZmZlckVuZDsKKyAgICBjaGFyICogICAgICAgICAgICAgIGZCdWZmZXJQb3M7CisgICAgc3RhdGljIGJvb2wgICAgICAgICBmSW5pdGlhbGl6ZWQ7CisgICAgc3RhdGljIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBYTUxNdXRleCogICAgZkluaXRNdXRleDsKKworCXN0YXRpYyB2b2lkIEluaXRpYWxpemUoKTsKKwl1bnNpZ25lZCBpbnQgZ2V0U29ja2V0SGFuZGxlKGNvbnN0IFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBYTUxVcmkmICB1cmxTb3VyY2UpOworCit9OworCisKK2lubGluZQorI2lmZGVmIFhTRUNfWEVSQ0VTXzY0QklUU0FGRQorWE1MRmlsZVBvcworI2Vsc2UKK3Vuc2lnbmVkIGludAorI2VuZGlmCitYU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtOjpjdXJQb3MoKSBjb25zdAoreworICAgIHJldHVybiBmQnl0ZXNQcm9jZXNzZWQ7Cit9CisKKworI2VuZGlmIC8vIFhTRUNCSU5IVFRQVVJJSU5QVVRTVFJFQU1fSEVBREVSCmRpZmYgLS1naXQgYS9jL3NyYy91dGlscy93aW51dGlscy9YU0VDU09BUFJlcXVlc3RvclNpbXBsZVdpbjMyLmNwcCBiL2Mvc3JjL3V0aWxzL3dpbnV0aWxzL1hTRUNTT0FQUmVxdWVzdG9yU2ltcGxlV2luMzIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1NzIyNTMKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy91dGlscy93aW51dGlscy9YU0VDU09BUFJlcXVlc3RvclNpbXBsZVdpbjMyLmNwcApAQCAtMCwwICsxLDQzMiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ1NPQVBSZXF1ZXN0b3JTaW1wbGVXaW4zMiA6PSAoVmVyeSkgQmFzaWMgaW1wbGVtZW50YXRpb24gb2YgYSBTT0FQCisgKiAgICAgICAgICAgICAgICAgICAgICAgICBIVFRQIHdyYXBwZXIgZm9yIHRlc3RpbmcgdGhlIGNsaWVudCBjb2RlLgorICoKKyAqCisgKiAkSWQkCisgKgorICovCisKKworI2luY2x1ZGUgPHhzZWMvdXRpbHMvd2ludXRpbHMvWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbS5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNTYWZlQnVmZmVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNTT0FQUmVxdWVzdG9yU2ltcGxlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNDb25zdGFudHMuaHBwPgorCisjaW5jbHVkZSAiLi4vLi4vdXRpbHMvWFNFQ0F1dG9QdHIuaHBwIgorCisjZGVmaW5lIF9XSU5TT0NLQVBJXworCisjZGVmaW5lIElOQ0xfV0lOU09DS19BUElfVFlQRURFRlMgMQorI2luY2x1ZGUgPHdpbnNvY2syLmg+CisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHRjaGFyLmg+CisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3BhcnNlcnMvWGVyY2VzRE9NUGFyc2VyLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL2ZyYW1ld29yay9YTUxGb3JtYXR0ZXIuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvZnJhbWV3b3JrL01lbUJ1ZkZvcm1hdFRhcmdldC5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1BsYXRmb3JtVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxOZXRBY2Nlc3Nvci5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFN0cmluZy5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTEV4Y2VwdE1zZ3MuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxVbmlEZWZzLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitYU0VDU09BUFJlcXVlc3RvclNpbXBsZTo6WFNFQ1NPQVBSZXF1ZXN0b3JTaW1wbGUoY29uc3QgWE1MQ2ggKiB1cmkpIDogbV91cmkodXJpKSB7CisKKwlYU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtOjpFeHRlcm5hbEluaXRpYWxpemUoKTsKKwltX2VudmVsb3BlVHlwZSA9IEVOVkVMT1BFX1NPQVAxMTsKKworfQorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgSW50ZXJmYWNlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK0RPTURvY3VtZW50ICogWFNFQ1NPQVBSZXF1ZXN0b3JTaW1wbGU6OmRvUmVxdWVzdChET01Eb2N1bWVudCAqIHJlcXVlc3QpIHsKKworCisJY2hhciAqIGNvbnRlbnQgPSB3cmFwQW5kU2VyaWFsaXNlKHJlcXVlc3QpOworCisJLy8gRmlyc3Qgd2UgbmVlZCB0byBzZXJpYWxpc2UKKworICAgIGNoYXIgICAgICAgICAgICAgICAgZkJ1ZmZlcls0MDAwXTsKKyAgICBjaGFyICogICAgICAgICAgICAgIGZCdWZmZXJFbmQ7CisgICAgY2hhciAqICAgICAgICAgICAgICBmQnVmZmVyUG9zOworCisgICAgLy8KKyAgICAvLyBQdWxsIGFsbCBvZiB0aGUgcGFydHMgb2YgdGhlIFVSTCBvdXQgb2YgdGggbV91cmkgb2JqZWN0LCBhbmQgdHJhbnNjb2RlIHRoZW0KKyAgICAvLyAgIGFuZCB0cmFuc2NvZGUgdGhlbSBiYWNrIHRvIEFTQ0lJLgorICAgIC8vCisgICAgY29uc3QgWE1MQ2gqICAgICAgICBob3N0TmFtZSA9IG1fdXJpLmdldEhvc3QoKTsKKyAgICBYU0VDQXV0b1B0ckNoYXIgICAgIGhvc3ROYW1lQXNDaGFyU3Rhcihob3N0TmFtZSk7CisKKyAgICBjb25zdCBYTUxDaCogICAgICAgIHBhdGggPSBtX3VyaS5nZXRQYXRoKCk7CisgICAgWFNFQ0F1dG9QdHJDaGFyICAgICBwYXRoQXNDaGFyU3RhcihwYXRoKTsKKworICAgIGNvbnN0IFhNTENoKiAgICAgICAgZnJhZ21lbnQgPSBtX3VyaS5nZXRGcmFnbWVudCgpOworICAgIFhTRUNBdXRvUHRyQ2hhciAgICAgZnJhZ21lbnRBc0NoYXJTdGFyKGZyYWdtZW50KTsKKworICAgIGNvbnN0IFhNTENoKiAgICAgICAgcXVlcnkgPSBtX3VyaS5nZXRRdWVyeVN0cmluZygpOworICAgIFhTRUNBdXRvUHRyQ2hhciAgICAgcXVlcnlBc0NoYXJTdGFyKHF1ZXJ5KTsKKworICAgIHVuc2lnbmVkIHNob3J0ICAgICAgcG9ydE51bWJlciA9ICh1bnNpZ25lZCBzaG9ydCkgbV91cmkuZ2V0UG9ydCgpOworCisJLy8gSWYgbm8gbnVtYmVyIGlzIHNldCwgZ28gd2l0aCBwb3J0IDgwCisJaWYgKHBvcnROdW1iZXIgPT0gVVNIUlRfTUFYKQorCQlwb3J0TnVtYmVyID0gODA7CisKKyAgICAvLworICAgIC8vIFNldCB1cCBhIHNvY2tldC4KKyAgICAvLworICAgIHN0cnVjdCBob3N0ZW50KiAgICAgaG9zdEVudFB0ciA9IDA7CisgICAgc3RydWN0IHNvY2thZGRyX2luICBzYTsKKworCisgICAgaWYgKChob3N0RW50UHRyID0gWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbTo6Z2V0aG9zdGJ5bmFtZShob3N0TmFtZUFzQ2hhclN0YXIuZ2V0KCkpKSA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbG9uZyAgbnVtQWRkcmVzcyA9IFhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW06OmluZXRfYWRkcihob3N0TmFtZUFzQ2hhclN0YXIuZ2V0KCkpOworICAgICAgICBpZiAobnVtQWRkcmVzcyA9PSBJTkFERFJfTk9ORSkKKyAgICAgICAgeworICAgICAgICAgICAgWFNFQ19SRUxFQVNFX1hNTENIKGNvbnRlbnQpOworICAgICAgICAgICAgLy8gQ2FsbCBXU0FHZXRMYXN0RXJyb3IoKSB0byBnZXQgdGhlIGVycm9yIG51bWJlci4KKwkgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SFRUUFVSSUlucHV0U3RyZWFtRXJyb3IsCisJCQkJCQkJIkVycm9yIHJlcG9ydGVkIHJlc29sdmluZyBJUCBhZGRyZXNzIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKChob3N0RW50UHRyID0KKyAgICAgICAgICAgICAgICBYU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtOjpnZXRob3N0YnlhZGRyKChjb25zdCBjaGFyICopICZudW1BZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpLCBBRl9JTkVUKSkgPT0gTlVMTCkKKyAgICAgICAgeworICAgICAgICAgICAgWFNFQ19SRUxFQVNFX1hNTENIKGNvbnRlbnQpOworICAgICAgICAgICAgLy8gQ2FsbCBXU0FHZXRMYXN0RXJyb3IoKSB0byBnZXQgdGhlIGVycm9yIG51bWJlci4KKwkgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SFRUUFVSSUlucHV0U3RyZWFtRXJyb3IsCisJCQkJCQkJIkVycm9yIHJlcG9ydGVkIHJlc29sdmluZyBJUCBhZGRyZXNzIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtZW1jcHkoKHZvaWQgKikgJnNhLnNpbl9hZGRyLAorICAgICAgICAgICAoY29uc3Qgdm9pZCAqKSBob3N0RW50UHRyLT5oX2FkZHIsIGhvc3RFbnRQdHItPmhfbGVuZ3RoKTsKKyAgICBzYS5zaW5fZmFtaWx5ID0gaG9zdEVudFB0ci0+aF9hZGRydHlwZTsKKyAgICBzYS5zaW5fcG9ydCA9IFhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW06Omh0b25zKHBvcnROdW1iZXIpOworCisgICAgU09DS0VUIHMgPSBYU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtOjpzb2NrZXQoaG9zdEVudFB0ci0+aF9hZGRydHlwZSwgU09DS19TVFJFQU0sIDApOworICAgIGlmIChzID09IElOVkFMSURfU09DS0VUKQorICAgIHsKKyAgICAgICAgWFNFQ19SRUxFQVNFX1hNTENIKGNvbnRlbnQpOworICAgICAgICAvLyBDYWxsIFdTQUdldExhc3RFcnJvcigpIHRvIGdldCB0aGUgZXJyb3IgbnVtYmVyLgorICAgICAgICB0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkhUVFBVUklJbnB1dFN0cmVhbUVycm9yLAorCQkJCQkJCSJFcnJvciByZXBvcnRlZCBjcmVhdGluZyBzb2NrZXQiKTsKKyAgICB9CisKKyAgICBpZiAoWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbTo6Y29ubmVjdCgodW5zaWduZWQgc2hvcnQpIHMsIAorCQkoc3RydWN0IHNvY2thZGRyICopICZzYSwgc2l6ZW9mKHNhKSkgPT0gU09DS0VUX0VSUk9SKQorICAgIHsKKyAgICAgICAgWFNFQ19SRUxFQVNFX1hNTENIKGNvbnRlbnQpOworICAgICAgICAvLyBDYWxsIFdTQUdldExhc3RFcnJvcigpIHRvIGdldCB0aGUgZXJyb3IgbnVtYmVyLgorICAgICAgICB0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkhUVFBVUklJbnB1dFN0cmVhbUVycm9yLAorCQkJCQkJCSJFcnJvciByZXBvcnRlZCBjb25uZWN0aW5nIHRvIHNvY2tldCIpOworICAgIH0KKworCisgICAgLy8gU2V0IGEgZmxhZyBzbyB3ZSBrbm93IHRoYXQgdGhlIGhlYWRlcnMgaGF2ZSBub3QgYmVlbiByZWFkIHlldC4KKyAgICBib29sIGZIZWFkZXJSZWFkID0gZmFsc2U7CisKKyAgICAvLyBUaGUgcG9ydCBpcyBvcGVuIGFuZCByZWFkeSB0byBnby4KKyAgICAvLyBCdWlsZCB1cCB0aGUgaHR0cCBQT1NUIGNvbW1hbmQgdG8gc2VuZCB0byB0aGUgc2VydmVyLgorICAgIC8vIFRvIGRvOiAgV2Ugc2hvdWxkIHJlYWxseSBzdXBwb3J0IGh0dHAgMS4xLiAgVGhpcyBpbXBsZW1lbnRhdGlvbgorICAgIC8vICAgICAgICAgaXMgd2Vhay4KKworICAgIG1lbXNldChmQnVmZmVyLCAwLCBzaXplb2YoZkJ1ZmZlcikpOworCisgICAgc3RyY3B5KGZCdWZmZXIsICJQT1NUICIpOworICAgIHN0cmNhdChmQnVmZmVyLCBwYXRoQXNDaGFyU3Rhci5nZXQoKSk7CisKKyAgICBpZiAocXVlcnlBc0NoYXJTdGFyLmdldCgpICE9IDApCisgICAgeworICAgICAgICAvLyBUYWNrIG9uIGEgPyBiZWZvcmUgdGhlIGZyYWdtZW50CisgICAgICAgIHN0cmNhdChmQnVmZmVyLCI/Iik7CisgICAgICAgIHN0cmNhdChmQnVmZmVyLCBxdWVyeUFzQ2hhclN0YXIuZ2V0KCkpOworICAgIH0KKworICAgIGlmIChmcmFnbWVudEFzQ2hhclN0YXIuZ2V0KCkgIT0gMCkKKyAgICB7CisgICAgICAgIHN0cmNhdChmQnVmZmVyLCBmcmFnbWVudEFzQ2hhclN0YXIuZ2V0KCkpOworICAgIH0KKyAgICBzdHJjYXQoZkJ1ZmZlciwgIiBIVFRQLzEuMFxyXG4iKTsKKworCXN0cmNhdChmQnVmZmVyLCAiQ29udGVudC1UeXBlOiB0ZXh0L3htbDsgY2hhcnNldD11dGYtOFxyXG4iKTsKKworCisgICAgc3RyY2F0KGZCdWZmZXIsICJIb3N0OiAiKTsKKyAgICBzdHJjYXQoZkJ1ZmZlciwgaG9zdE5hbWVBc0NoYXJTdGFyLmdldCgpKTsKKyAgICBpZiAocG9ydE51bWJlciAhPSA4MCkKKyAgICB7CisgICAgICAgIHN0cmNhdChmQnVmZmVyLCAiOiIpOworICAgICAgICBpbnQgaSA9IChpbnQpIHN0cmxlbihmQnVmZmVyKTsKKyAgICAgICAgX2l0b2EocG9ydE51bWJlciwgZkJ1ZmZlcitpLCAxMCk7CisgICAgfQorCXN0cmNhdChmQnVmZmVyLCAiXHJcbiIpOworCisJc3RyY2F0KGZCdWZmZXIsICJDb250ZW50LUxlbmd0aDogIik7CisgICAgaW50IGkgPSAoaW50KSBzdHJsZW4oZkJ1ZmZlcik7CisgICAgX2l0b2EoKGludCkgc3RybGVuKGNvbnRlbnQpLCBmQnVmZmVyK2ksIDEwKTsKKwlzdHJjYXQoZkJ1ZmZlciwgIlxyXG4iKTsKKwlzdHJjYXQoZkJ1ZmZlciwgIlNPQVBBY3Rpb246IFwiXCJcclxuIik7CisKKy8qCXN0cmNhdChmQnVmZmVyLCAiQ29ubmVjdGlvbjogQ2xvc2VcclxuIik7CisJc3RyY2F0KGZCdWZmZXIsICJDYWNoZS1Db250cm9sOiBuby1jYWNoZVxyXG4iKTsqLworICAgIHN0cmNhdChmQnVmZmVyLCAiXHJcbiIpOworCisJLy8gTm93IHRoZSBjb250ZW50CisvLwlzdHJjYXQoZkJ1ZmZlciwgY29udGVudCk7CisKKyAgICAvLyBTZW5kIHRoZSBodHRwIHJlcXVlc3QKKyAgICBpbnQgbGVudCA9IChpbnQpIHN0cmxlbihmQnVmZmVyKTsKKyAgICBpbnQgIGFMZW50ID0gMDsKKyAgICBpZiAoKGFMZW50ID0gWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbTo6c2VuZCgodW5zaWduZWQgc2hvcnQpIHMsIAorCQlmQnVmZmVyLCBsZW50LCAwKSkgIT0gbGVudCkKKyAgICB7CisgICAgICAgIFhTRUNfUkVMRUFTRV9YTUxDSChjb250ZW50KTsKKyAgICAgICAgLy8gQ2FsbCBXU0FHZXRMYXN0RXJyb3IoKSB0byBnZXQgdGhlIGVycm9yIG51bWJlci4KKyAgICAgICAgdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpIVFRQVVJJSW5wdXRTdHJlYW1FcnJvciwKKwkJCQkJCQkiRXJyb3IgcmVwb3J0ZWQgd3JpdGluZyB0byBzb2NrZXQiKTsKKyAgICB9CisKKwkvLyBOb3cgdGhlIGNvbnRlbnQKKyAgICBsZW50ID0gKGludCkgc3RybGVuKGNvbnRlbnQpOworICAgIGFMZW50ID0gMDsKKyAgICBpZiAoKGFMZW50ID0gWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbTo6c2VuZCgodW5zaWduZWQgc2hvcnQpIHMsIAorCQljb250ZW50LCBsZW50LCAwKSkgIT0gbGVudCkKKyAgICB7CisgICAgICAgIFhTRUNfUkVMRUFTRV9YTUxDSChjb250ZW50KTsKKyAgICAgICAgLy8gQ2FsbCBXU0FHZXRMYXN0RXJyb3IoKSB0byBnZXQgdGhlIGVycm9yIG51bWJlci4KKyAgICAgICAgdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpIVFRQVVJJSW5wdXRTdHJlYW1FcnJvciwKKwkJCQkJCQkiRXJyb3IgcmVwb3J0ZWQgd3JpdGluZyB0byBzb2NrZXQiKTsKKyAgICB9CisgICAgWFNFQ19SRUxFQVNFX1hNTENIKGNvbnRlbnQpOworCisgICAgLy8KKyAgICAvLyBnZXQgdGhlIHJlc3BvbnNlLCBjaGVjayB0aGUgaHR0cCBoZWFkZXIgZm9yIGVycm9ycyBmcm9tIHRoZSBzZXJ2ZXIuCisgICAgLy8KKyAgICBtZW1zZXQoZkJ1ZmZlciwgMCwgc2l6ZW9mKGZCdWZmZXIpKTsKKyAgICBhTGVudCA9IFhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW06OnJlY3YoKHVuc2lnbmVkIHNob3J0KSBzLCBmQnVmZmVyLCBzaXplb2YoZkJ1ZmZlciktMSwgMCk7CisJaWYgKGFMZW50ID09IFNPQ0tFVF9FUlJPUiB8fCBhTGVudCA9PSAwKQorICAgIHsKKyAgICAgICAgLy8gQ2FsbCBXU0FHZXRMYXN0RXJyb3IoKSB0byBnZXQgdGhlIGVycm9yIG51bWJlci4KKyAgICAgICAgdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpIVFRQVVJJSW5wdXRTdHJlYW1FcnJvciwKKwkJCQkJCQkiRXJyb3IgcmVwb3J0ZWQgcmVhZGluZyBzb2NrZXQiKTsKKyAgICB9CisKKyAgICBmQnVmZmVyRW5kID0gZkJ1ZmZlcithTGVudDsKKyAgICAqZkJ1ZmZlckVuZCA9IDA7CisKKyAgICBkbyB7CisgICAgICAgIC8vIEZpbmQgdGhlIGJyZWFrIGJldHdlZW4gdGhlIHJldHVybmVkIGh0dHAgaGVhZGVyIGFuZCBhbnkgZGF0YS4KKyAgICAgICAgLy8gIChEZWxpbWl0ZWQgYnkgYSBibGFuayBsaW5lKQorICAgICAgICAvLyBIYW5nIG9uIHRvIGFueSBkYXRhIGZvciB1c2UgYnkgdGhlIGZpcnN0IHJlYWQgZnJvbSB0aGlzIFhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0uCisgICAgICAgIC8vCisgICAgICAgIGZCdWZmZXJQb3MgPSBzdHJzdHIoZkJ1ZmZlciwgIlxyXG5cclxuIik7CisgICAgICAgIGlmIChmQnVmZmVyUG9zICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGZCdWZmZXJQb3MgKz0gNDsKKyAgICAgICAgICAgICooZkJ1ZmZlclBvcy0yKSA9IDA7CisgICAgICAgICAgICBmSGVhZGVyUmVhZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBmQnVmZmVyUG9zID0gc3Ryc3RyKGZCdWZmZXIsICJcblxuIik7CisgICAgICAgICAgICBpZiAoZkJ1ZmZlclBvcyAhPSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZCdWZmZXJQb3MgKz0gMjsKKyAgICAgICAgICAgICAgICAqKGZCdWZmZXJQb3MtMSkgPSAwOworICAgICAgICAgICAgICAgIGZIZWFkZXJSZWFkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAgIC8vIEhlYWRlciBpcyBub3QgeWV0IHJlYWQsIGRvIGFub3RoZXIgcmVjdigpIHRvIGdldCBtb3JlIGRhdGEuLi4KKyAgICAgICAgICAgICAgICBhTGVudCA9IFhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW06OnJlY3YoKHVuc2lnbmVkIHNob3J0KSBzLCBmQnVmZmVyRW5kLCAoKGludCkgc2l6ZW9mKGZCdWZmZXIpIC0gMSkgLSAoaW50KShmQnVmZmVyRW5kIC0gZkJ1ZmZlciksIDApOworICAgICAgICAgICAgICAgIGlmIChhTGVudCA9PSBTT0NLRVRfRVJST1IgfHwgYUxlbnQgPT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIENhbGwgV1NBR2V0TGFzdEVycm9yKCkgdG8gZ2V0IHRoZSBlcnJvciBudW1iZXIuCisJCQkgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SFRUUFVSSUlucHV0U3RyZWFtRXJyb3IsCisJCQkJCQkJIkVycm9yIHJlcG9ydGVkIHJlYWRpbmcgc29ja2V0Iik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZCdWZmZXJFbmQgPSBmQnVmZmVyRW5kICsgYUxlbnQ7CisgICAgICAgICAgICAgICAgKmZCdWZmZXJFbmQgPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSB3aGlsZShmSGVhZGVyUmVhZCA9PSBmYWxzZSk7CisKKyAgICAvLyBNYWtlIHN1cmUgdGhlIGhlYWRlciBpbmNsdWRlcyBhbiBIVFRQIDIwMCBPSyByZXNwb25zZS4KKyAgICAvLworICAgIGNoYXIgKnAgPSBzdHJzdHIoZkJ1ZmZlciwgIkhUVFAiKTsKKyAgICBpZiAocCA9PSAwKQorICAgIHsKKyAgICAgICAgdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpIVFRQVVJJSW5wdXRTdHJlYW1FcnJvciwKKwkJCQkJCQkiRXJyb3IgcmVwb3J0ZWQgcmVhZGluZyBzb2NrZXQiKTsKKyAgICB9CisKKyAgICBwID0gc3RyY2hyKHAsICcgJyk7CisgICAgaWYgKHAgPT0gMCkKKyAgICB7CisgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SFRUUFVSSUlucHV0U3RyZWFtRXJyb3IsCisJCQkJCQkJIlhTRUNTT0FQUmVxdWVzdG9yU2ltcGxlIC0gRXJyb3IgcmVwb3J0ZWQgcmVhZGluZyBzb2NrZXQiKTsKKyAgICB9CisKKyAgICBpbnQgaHR0cFJlc3BvbnNlID0gYXRvaShwKTsKKworICAgIC8vIENoZWNrIGZvciByZWRpcmVjdCBvciBwZXJtYW5lbnRseSBtb3ZlZAorICAgIGlmIChodHRwUmVzcG9uc2UgPT0gMzAyIHx8IGh0dHBSZXNwb25zZSA9PSAzMDEpCisgICAgeworICAgICAgICAvL09uY2UgZ3Jvd3MsIHNob3VsZCB1c2UgYSBzd2l0Y2gKKyAgICAgICAgY2hhciByZWRpcmVjdEJ1ZlsyNTZdOworICAgICAgICBpbnQgcTsKKworICAgICAgICAvLyBGaW5kIHRoZSAiTG9jYXRpb246IiBzdHJpbmcKKyAgICAgICAgcCA9IHN0cnN0cihwLCAiTG9jYXRpb246Iik7CisgICAgICAgIGlmIChwID09IDApCisgICAgICAgIHsKKwkgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SFRUUFVSSUlucHV0U3RyZWFtRXJyb3IsCisJCQkJCQkJIkVycm9yIHJlcG9ydGVkIHJlYWRpbmcgc29ja2V0Iik7CisgICAgICAgIH0KKyAgICAgICAgcCA9IHN0cmNocihwLCAnICcpOworCQlpZiAocCA9PSAwKQorCQl7CisJICAgICAgICB0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkhUVFBVUklJbnB1dFN0cmVhbUVycm9yLAorCQkJCQkJCSJFcnJvciByZXBvcnRlZCByZWFkaW5nIHNvY2tldCIpOworCQl9CisJCQorCQkvLyBOb3cgcmVhZAorCQlwKys7CisJCWZvciAocT0wOyBxIDwgMjU1ICYmIHBbcV0gIT0gJ1xyJyAmJiBwW3FdICE9J1xuJzsgKytxKQorCQkJcmVkaXJlY3RCdWZbcV0gPSBwW3FdOworCQkKKwkJcmVkaXJlY3RCdWZbcV0gPSAnXDAnOworCQkKKwkJLy8gVHJ5IHRvIGZpbmQgdGhpcyBsb2NhdGlvbgorCQltX3VyaSA9IFhNTFVyaShYTUxTdHJpbmc6OnRyYW5zY29kZShyZWRpcmVjdEJ1ZikpOworCisJCXJldHVybiBkb1JlcXVlc3QocmVxdWVzdCk7CisKKwl9CisgICAgZWxzZSBpZiAoaHR0cFJlc3BvbnNlICE9IDIwMCkKKyAgICB7CisgICAgICAgIC8vIE1vc3QgbGlrZWx5IGEgNDA0IE5vdCBGb3VuZCBlcnJvci4KKyAgICAgICAgLy8gICBTaG91bGQgcmVjb2duaXplIGFuZCBoYW5kbGUgdGhlIGZvcndhcmRpbmcgcmVzcG9uc2VzLgorICAgICAgICAvLworCQljaGFyICogcSA9IHN0cnN0cihwLCAiXG4iKTsKKwkJaWYgKHEgPT0gTlVMTCkKKwkJCXEgPSBzdHJzdHIocCwgIlxyIik7CisJCWlmIChxICE9IE5VTEwpCisJCQkqcSA9ICdcMCc7CisJCXNhZmVCdWZmZXIgc2I7CisJCXNiLnNiU3RyY3B5SW4oIlNPQVBSZXF1ZXN0b3JTaW1wbGUgSFRUUCBFcnJvciA6ICIpOworCQlpZiAoc3RybGVuKHApIDwgMjU2KQorCQkJc2Iuc2JTdHJjYXRJbihwKTsKKyAgICAgICAgdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpIVFRQVVJJSW5wdXRTdHJlYW1FcnJvciwgc2IucmF3Q2hhckJ1ZmZlcigpKTsKKyAgICB9CisKKwkvKiBOb3cgZmluZCBvdXQgaG93IGxvbmcgdGhlIHJldHVybiBpcyAqLworCisJcCA9IHN0cnN0cihmQnVmZmVyLCAiQ29udGVudC1MZW5ndGg6Iik7CisJaW50IHJlc3BvbnNlTGVuZ3RoOworCisJaWYgKHAgPT0gTlVMTCkgeworCQkvLyBOZWVkIHRvIHdvcmsgaXQgb3V0IGZyb20gdGhlIGFtb3VudCBvZiBkYXRhIHJldHVybmVkCisJCXJlc3BvbnNlTGVuZ3RoID0gLTE7CisJfQorCWVsc2UgeworCisJCXAgPSBzdHJjaHIocCwgJyAnKTsKKwkJcCsrOworCisJCXJlc3BvbnNlTGVuZ3RoID0gYXRvaShwKTsKKwl9CisKKwlzYWZlQnVmZmVyIHJlc3BvbnNlQnVmZmVyOworCWxlbnQgPSAoaW50KSAoZkJ1ZmZlckVuZCAtIGZCdWZmZXJQb3MpOworCXJlc3BvbnNlQnVmZmVyLnNiTWVtY3B5SW4oZkJ1ZmZlclBvcywgbGVudCk7CisKKwl3aGlsZSAocmVzcG9uc2VMZW5ndGggPT0gLTEgfHwgbGVudCA8IHJlc3BvbnNlTGVuZ3RoKSB7CisJCWFMZW50ID0gWFNFQ0JpbkhUVFBVUklJbnB1dFN0cmVhbTo6cmVjdigodW5zaWduZWQgc2hvcnQpcywgZkJ1ZmZlciwgc2l6ZW9mKGZCdWZmZXIpLTEsIDApOworCQlpZiAoYUxlbnQgPiAwKSB7CisJCQlyZXNwb25zZUJ1ZmZlci5zYk1lbWNweUluKGxlbnQsIGZCdWZmZXIsIGFMZW50KTsKKwkJCWxlbnQgKz0gYUxlbnQ7CisJCX0KKwkJZWxzZSB7CisJCQlyZXNwb25zZUxlbmd0aCA9IDA7CisJCX0KKwl9CisKKwlpZiAobGVudCA8PSAwKSB7CisgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SFRUUFVSSUlucHV0U3RyZWFtRXJyb3IsCisJCQkiWFNFQ1NPQVBSZXF1ZXN0b3JTaW1wbGUgLSBaZXJvIGxlbmd0aCByZXNwb25zZSBmcm9tIHNlcnZlciIpOworCX0KKworCXJldHVybiBwYXJzZUFuZFVud3JhcChyZXNwb25zZUJ1ZmZlci5yYXdDaGFyQnVmZmVyKCksIGxlbnQpOworCisKKyMgaWYgMAorCisJcCA9IHN0cnN0cihmQnVmZmVyLCAiQ29udGVudC1MZW5ndGg6Iik7CisJaWYgKHAgPT0gTlVMTCkgeworICAgICAgICB0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkhUVFBVUklJbnB1dFN0cmVhbUVycm9yLAorCQkJCQkJCSJDb250ZW50LUxlbmd0aCByZXF1aXJlZCBpbiBTT0FQIEhUVFAgUmVzcG9uc2UiKTsKKwl9CisKKwlwID0gc3RyY2hyKHAsICcgJyk7CisJcCsrOworCisJaW50IHJlc3BvbnNlTGVuZ3RoID0gYXRvaShwKTsKKworCWNoYXIgKiByZXNwb25zZUJ1ZmZlcjsKKwlYU0VDbmV3KHJlc3BvbnNlQnVmZmVyLCBjaGFyW3Jlc3BvbnNlTGVuZ3RoXSk7CisJQXJyYXlKYW5pdG9yPGNoYXI+IGpfcmVzcG9uc2VCdWZmZXIocmVzcG9uc2VCdWZmZXIpOworCisJbGVudCA9IGZCdWZmZXJFbmQgLSBmQnVmZmVyUG9zOworCW1lbWNweShyZXNwb25zZUJ1ZmZlciwgZkJ1ZmZlclBvcywgbGVudCk7CisJd2hpbGUgKGxlbnQgPCByZXNwb25zZUxlbmd0aCkgeworCSAgICBhTGVudCA9IFhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW06OnJlY3YoKHVuc2lnbmVkIHNob3J0KSBzLCAmcmVzcG9uc2VCdWZmZXJbbGVudF0sIHJlc3BvbnNlTGVuZ3RoIC0gbGVudCwgMCk7CisJCWxlbnQgKz0gYUxlbnQ7CisJfQorCQorICAgIHJldHVybiBwYXJzZUFuZFVud3JhcChyZXNwb25zZUJ1ZmZlciwgcmVzcG9uc2VMZW5ndGgpOworI2VuZGlmCit9CisKKworCmRpZmYgLS1naXQgYS9jL3NyYy91dGlscy93aW51dGlscy9YU0VDVVJJUmVzb2x2ZXJHZW5lcmljV2luMzIuY3BwIGIvYy9zcmMvdXRpbHMvd2ludXRpbHMvWFNFQ1VSSVJlc29sdmVyR2VuZXJpY1dpbjMyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWM5ZjgzCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMvdXRpbHMvd2ludXRpbHMvWFNFQ1VSSVJlc29sdmVyR2VuZXJpY1dpbjMyLmNwcApAQCAtMCwwICsxLDI4MCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAyLTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ1VSSVJlc29sdmVyR2VuZXJpY1dpbjMyIDo9IEEgVVJJIFJlc29sdmVyIHRoYXQgd2lsbCB3b3JrICJvdXQgb2YKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYm94IiB3aXRoIFdpbmRvd3MuICBSZS1pbXBsZW1lbnRzCisgKgkJCQkJCQkJICBtdWNoIFhlcmNlcyBjb2RlLCBidXQgYWxsb3dzIHVzIHRvCisgKgkJCQkJCQkJICBoYW5kbGUgSFRUUCByZWRpcmVjdHMgYXMgaXMgcmVxdWlyZWQgYnkKKyAqCQkJCQkJCQkgIHRoZSBEU0lHIFN0YW5kYXJkCisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqICRMb2ckCisgKiBSZXZpc2lvbiAxLjEyICAyMDA1LzA1LzI5IDAwOjA2OjU1ICBibGF1dGVuYgorICogVXBkYXRlIGxvY2FsaG9zdCBjaGVjayB0byBpbmNsdWRlIGFuIGVtcHR5IGhvc3RuYW1lIC0gcmVwb3J0ZWQgYnkgVmluY2VudCBGaW5uIDx2aW5jZW50LmZpbm5AYXV0b21zb2Z0LmNvbT4gb24gc2VjdXJpdHktZGV2QHhtbCAyNy81LzIwMDUKKyAqCisgKiBSZXZpc2lvbiAxLjExICAyMDA1LzAyLzAzIDEzOjU2OjIyICBtaWxhbgorICogQXBhY2hlIGxpY2VuY2UgZml4LgorICoKKyAqIFJldmlzaW9uIDEuMTAgIDIwMDQvMDIvMjEgMDg6MjY6NTQgIGJsYXV0ZW5iCisgKiBVc2UgWE1MU3RyaW5nOjpyZWxlYXNlIHJhdGhlciB0aGFuIGRlbGV0ZVtdIGZvciBhbGwgWGVyY2VzIHN0cmluZ3MKKyAqCisgKiBSZXZpc2lvbiAxLjkgIDIwMDQvMDIvMDggMTA6MjU6NDAgIGJsYXV0ZW5iCisgKiBDb252ZXJ0IHRvIEFwYWNoZSAyLjAgbGljZW5zZQorICoKKyAqIFJldmlzaW9uIDEuOCAgMjAwNC8wMS8yNiAwMDoxNjowNCAgYmxhdXRlbmIKKyAqIFJlbW92ZSBlc2NhcGVzIGZyb20gVVJJIGJlZm9yZSByZXRyaWV2aW5nIGEgcGF0aCBvbiB0aGUgZmlsZSBzeXN0ZW0KKyAqCisgKiBSZXZpc2lvbiAxLjcgIDIwMDMvMDkvMTEgMTE6MTE6MDUgIGJsYXV0ZW5iCisgKiBDbGVhbmVkIHVwIHVzYWdlIG9mIFhlcmNlcyBuYW1lc3BhY2UgLSBubyBsb25nZXIgaW5qZWN0IGludG8gZ2xvYmFsIG5hbWVzcGFjZSBpbiBoZWFkZXJzCisgKgorICogUmV2aXNpb24gMS42ICAyMDAzLzA3LzI4IDEyOjUyOjQ2ICBibGF1dGVuYgorICogRml4ZWQgYSBidWcgd2l0aCBERUJVR19ORVcgd2hlbiBjb21waWxpbmcgd2l0aCBYYWxhbiAxLjYKKyAqCisgKiBSZXZpc2lvbiAxLjUgIDIwMDMvMDcvMDUgMTA6MzA6MzggIGJsYXV0ZW5iCisgKiBDb3B5cmlnaHQgdXBkYXRlCisgKgorICogUmV2aXNpb24gMS40ICAyMDAzLzA1LzIyIDExOjQyOjA2ICBibGF1dGVuYgorICogVXBkYXRlcyBzbyBXaW5kb3dzIHZlcnNpb24gd2lsbCBjb21waWxlIHdpdGggWGVyY2VzIDIuMworICoKKyAqIFJldmlzaW9uIDEuMyAgMjAwMy8wNS8xMCAwNzoyMzozNiAgYmxhdXRlbmIKKyAqIFVwZGF0ZXMgdG8gc3VwcG9ydCBhbm9ueW1vdXMgcmVmZXJlbmNlcworICoKKyAqIFJldmlzaW9uIDEuMiAgMjAwMy8wMi8xNyAxMToyMTo0NSAgYmxhdXRlbmIKKyAqIFdvcmsgYXJvdW5kIGZvciBYZXJjZXMgWE1MVXJpIGJ1ZworICoKKyAqIFJldmlzaW9uIDEuMSAgMjAwMy8wMi8xMiAwOTo0NToyOSAgYmxhdXRlbmIKKyAqIFdpbjMyIFJlLWltcGxlbWVudGF0aW9uIG9mIFhlcmNlcyBVUklSZXNvbHZlciB0byBzdXBwb3J0IHJlLWRpcmVjdHMKKyAqCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL3V0aWxzL3dpbnV0aWxzL1hTRUNVUklSZXNvbHZlckdlbmVyaWNXaW4zMi5ocHA+CisKKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MVW5pRGVmcy5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFVyaS5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFVuaS5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL0phbml0b3IuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxTdHJpbmcuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9CaW5GaWxlSW5wdXRTdHJlYW0uaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy93aW51dGlscy9YU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisKKyNpbmNsdWRlICIuLi8uLi91dGlscy9YU0VDQXV0b1B0ci5ocHAiCisKK3N0YXRpYyBjb25zdCBYTUxDaCBnRmlsZVNjaGVtZVtdID0geworCisJY2hMYXRpbl9mLAorCWNoTGF0aW5faSwKKwljaExhdGluX2wsCisJY2hMYXRpbl9lLAorCWNoTnVsbAorCit9OworCitzdGF0aWMgY29uc3QgWE1MQ2ggZ0h0dHBTY2hlbWVbXSA9IHsKKworCWNoTGF0aW5faCwKKwljaExhdGluX3QsCisJY2hMYXRpbl90LAorCWNoTGF0aW5fcCwKKwljaE51bGwKKworfTsKKworI2lmIFhFUkNFU19WRVJTSU9OX01BSk9SID09IDIgJiYgWEVSQ0VTX1ZFUlNJT05fTUlOT1IgPCAzCisKKworc3RhdGljIGNvbnN0IFhNTENoIERPVERPVF9TTEFTSFtdID0geworCisJY2hQZXJpb2QsCisJY2hQZXJpb2QsCisJY2hGb3J3YXJkU2xhc2gsCisJY2hOdWxsCisKK307CisKKyNlbmRpZgorCitYU0VDVVJJUmVzb2x2ZXJHZW5lcmljV2luMzI6OlhTRUNVUklSZXNvbHZlckdlbmVyaWNXaW4zMigpIDoKK21wX2Jhc2VVUkkoTlVMTCkgeworCit9OworCisKK1hTRUNVUklSZXNvbHZlckdlbmVyaWNXaW4zMjo6flhTRUNVUklSZXNvbHZlckdlbmVyaWNXaW4zMigpIHsKKworCWlmIChtcF9iYXNlVVJJICE9IE5VTEwpCisJICAgIFhTRUNfUkVMRUFTRV9YTUxDSChtcF9iYXNlVVJJKTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gIFJlc29sdmUgYSBVUkkgdGhhdCBpcyBwYXNzZWQgaW4KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JpbklucHV0U3RyZWFtICogWFNFQ1VSSVJlc29sdmVyR2VuZXJpY1dpbjMyOjpyZXNvbHZlVVJJKGNvbnN0IFhNTENoICogdXJpKSB7CisKKwlYU0VDX1VTSU5HX1hFUkNFUyhCaW5JbnB1dFN0cmVhbSk7CisJWFNFQ19VU0lOR19YRVJDRVMoWE1MVXJpKTsKKwlYU0VDX1VTSU5HX1hFUkNFUyhYTUxVbmkpOworCVhTRUNfVVNJTkdfWEVSQ0VTKEphbml0b3IpOworCVhTRUNfVVNJTkdfWEVSQ0VTKEJpbkZpbGVJbnB1dFN0cmVhbSk7CisKKwlYTUxVcmkJCQkJCSogeG1sdXJpOworCisJaWYgKHVyaSA9PSBOVUxMKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXJyb3JPcGVuaW5nVVJJLAorCQkJIlhTRUNVUklSZXNvbHZlckdlbmVyaWNXaW4zMiAtIGFub255bW91cyByZWZlcmVuY2VzIG5vdCBzdXBwb3J0ZWQgaW4gZGVmYXVsdCBVUkkgUmVzb2x2ZXJzIik7CisJfQorCisJLy8gQ3JlYXRlIHRoZSBhcHByb3ByaWF0ZSBYTUxVcmkgb2JqZWN0cworCWlmIChtcF9iYXNlVVJJICE9IE5VTEwpIHsKKwkJWE1MVXJpCSogdHVyaTsKKworI2lmIGRlZmluZWQoWFNFQ19YRVJDRVNfQlJPS0VOX1hNTFVSSSkKKworCQkvLyBYTUxVcmkgcmVsYXRpdmUgcGF0aHMgYXJlIGJyb2tlbiwgc28gd2UgbmVlZCB0byBzdHJpcCBvdXQgIi4uIgorCQkvLyBEb2Vzbid0IGZpeCB0aGUgd2hvbGUgcHJvYmxlbSwgYnV0IGdldHMgdXMgc29tZXdoZXJlCisKKwkJWFNFQ0F1dG9QdHJYTUxDaCBiKG1wX2Jhc2VVUkkpOworCQlYU0VDQXV0b1B0clhNTENoIHIodXJpKTsKKworCQlpbnQgaW5kZXggPSAwOworCQl3aGlsZSAoWE1MU3RyaW5nOjpzdGFydHNXaXRoKCYoci5nZXQoKVtpbmRleF0pLCBET1RET1RfU0xBU0gpKSB7CisKKwkJCS8vIFN0cmlwIHRoZSBsYXN0IHNlZ21lbnQgb2YgdGhlIGJhc2UKKworCQkJaW50IGxhc3RJbmRleCA9IFhNTFN0cmluZzo6bGFzdEluZGV4T2YoYi5nZXQoKSwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoRm9yd2FyZFNsYXNoKTsKKwkJCWlmIChsYXN0SW5kZXggPiAwKQorCQkJCWNvbnN0X2Nhc3Q8WE1MQ2gqPihiLmdldCgpKVtsYXN0SW5kZXhdID0gMDsKKworCQkJaW5kZXggKz0gMzsKKworCQl9CisKKwkJWFNFQ25ldyh0dXJpLCBYTUxVcmkoYi5nZXQoKSkpOworCQlKYW5pdG9yPFhNTFVyaT4gal90dXJpKHR1cmkpOworCQlYU0VDbmV3KHhtbHVyaSwgWE1MVXJpKHR1cmksICYoci5nZXQoKVtpbmRleF0pKSk7CisKKyNlbHNlCisJCXR1cmkgPSBuZXcgWE1MVXJpKG1wX2Jhc2VVUkkpOworCQlKYW5pdG9yPFhNTFVyaT4gal90dXJpKHR1cmkpOworCisJCXhtbHVyaSA9IG5ldyBYTUxVcmkodHVyaSwgdXJpKTsKKyNlbmRpZgorCisJfQorCWVsc2UgeworCQl4bWx1cmkgPSBuZXcgWE1MVXJpKHVyaSk7CisJfQorCQorCUphbml0b3I8WE1MVXJpPiBqX3htbHVyaSh4bWx1cmkpOworCisJLy8gRGV0ZXJtaW5lIHdoYXQga2luZCBvZiBVUkkgdGhpcyBpcyBhbmQgaG93IHRvIGhhbmRsZSBpdC4KKwkKKwlpZiAoIVhNTFN0cmluZzo6Y29tcGFyZUlTdHJpbmcoeG1sdXJpLT5nZXRTY2hlbWUoKSwgZ0ZpbGVTY2hlbWUpKSB7CisKKwkJLy8gVGhpcyBpcyBhIGZpbGUuICBXZSBvbmx5IHJlYWxseSB1bmRlcnN0YW5kIGlmIHRoaXMgaXMgbG9jYWxob3N0CisgICAgICAgIAorCQlpZiAoeG1sdXJpLT5nZXRIb3N0KCkgPT0gTlVMTCB8fCB4bWx1cmktPmdldEhvc3QoKVswXSA9PSBjaE51bGwgfHwKKwkJCSFYTUxTdHJpbmc6OmNvbXBhcmVJU3RyaW5nKHhtbHVyaS0+Z2V0SG9zdCgpLCBYTUxVbmk6OmZnTG9jYWxIb3N0U3RyaW5nKSB8fAorCQkJIVhNTFN0cmluZzo6Y29tcGFyZUlTdHJpbmcoeG1sdXJpLT5nZXRIb3N0KCksIFhNTFVuaTo6ZmdFbXB0eVN0cmluZykpIHsKKworCQkJLy8gQ2xlYW4gaGV4IGVzY2FwZXMKKwkJCVhNTENoICogcmVhbFBhdGggPSBjbGVhblVSSUVzY2FwZXMoeG1sdXJpLT5nZXRQYXRoKCkpOworCisJCQkvLyBMb2NhbGhvc3QKKworICAgICAgICAgICAgQmluRmlsZUlucHV0U3RyZWFtKiByZXRTdHJtID0gbmV3IEJpbkZpbGVJbnB1dFN0cmVhbShyZWFsUGF0aCk7CisgICAgICAgICAgICBYU0VDX1JFTEVBU0VfWE1MQ0gocmVhbFBhdGgpOworCisgICAgICAgICAgICBpZiAoIXJldFN0cm0tPmdldElzT3BlbigpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlbGV0ZSByZXRTdHJtOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHJldFN0cm07CisKKwkJfQorCisJCWVsc2UgeworCisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkVycm9yT3BlbmluZ1VSSSwKKwkJCQkiWFNFQ1VSSVJlc29sdmVyR2VuZXJpY1dpbjMyIC0gdW5hYmxlIHRvIG9wZW4gbm9uLWxvY2FsaG9zdCBmaWxlIik7CisJCQorCQl9CisKKwl9CisKKwkvLyBJcyB0aGUgc2NoZW1lIGEgSFRUUD8KKwlpZiAoIVhNTFN0cmluZzo6Y29tcGFyZUlTdHJpbmcoeG1sdXJpLT5nZXRTY2hlbWUoKSwgZ0h0dHBTY2hlbWUpKSB7CisKKwkJLy8gUGFzcyBzdHJhaWdodCB0byBvdXIgbG9jYWwgWFNFQ0JpbkhUVFBVcmlJbnB1dFN0cmVhbQorCQlYU0VDQmluSFRUUFVSSUlucHV0U3RyZWFtICpyZXQ7CisKKwkJcmV0ID0gbmV3IFhTRUNCaW5IVFRQVVJJSW5wdXRTdHJlYW0oKnhtbHVyaSk7CisKKwkJcmV0dXJuIHJldDsKKwkJCisJfQorCisJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFcnJvck9wZW5pbmdVUkksCisJCSJYU0VDVVJJUmVzb2x2ZXJHZW5lcmljV2luMzIgLSB1bmtub3duIFVSSSBzY2hlbWUiKTsKKwkKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICBDbG9uZSBtZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitYU0VDVVJJUmVzb2x2ZXIgKiBYU0VDVVJJUmVzb2x2ZXJHZW5lcmljV2luMzI6OmNsb25lKHZvaWQpIHsKKworCVhTRUNVUklSZXNvbHZlckdlbmVyaWNXaW4zMiAqIHJldDsKKworCXJldCA9IG5ldyBYU0VDVVJJUmVzb2x2ZXJHZW5lcmljV2luMzIoKTsKKworCWlmICh0aGlzLT5tcF9iYXNlVVJJICE9IE5VTEwpCisJCXJldC0+bXBfYmFzZVVSSSA9IFhNTFN0cmluZzo6cmVwbGljYXRlKHRoaXMtPm1wX2Jhc2VVUkkpOworCWVsc2UKKwkJcmV0LT5tcF9iYXNlVVJJID0gTlVMTDsKKworCXJldHVybiByZXQ7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICBTZXQgYSBiYXNlIFVSSSB0byBtYXAgYW55IGluY29taW5nIGZpbGVzIGFnYWluc3QKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgWFNFQ1VSSVJlc29sdmVyR2VuZXJpY1dpbjMyOjpzZXRCYXNlVVJJKGNvbnN0IFhNTENoICogdXJpKSB7CisKKwlpZiAobXBfYmFzZVVSSSAhPSBOVUxMKQorCSAgICBYU0VDX1JFTEVBU0VfWE1MQ0gobXBfYmFzZVVSSSk7CisKKwltcF9iYXNlVVJJID0gWE1MU3RyaW5nOjpyZXBsaWNhdGUodXJpKTsKKworfQpkaWZmIC0tZ2l0IGEvYy9zcmMvdXRpbHMvd2ludXRpbHMvWFNFQ1VSSVJlc29sdmVyR2VuZXJpY1dpbjMyLmhwcCBiL2Mvc3JjL3V0aWxzL3dpbnV0aWxzL1hTRUNVUklSZXNvbHZlckdlbmVyaWNXaW4zMi5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThkZWQzMgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3V0aWxzL3dpbnV0aWxzL1hTRUNVUklSZXNvbHZlckdlbmVyaWNXaW4zMi5ocHAKQEAgLTAsMCArMSwxNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhTRUNVUklSZXNvbHZlckdlbmVyaWNXaW4zMiA6PSBBIFVSSSBSZXNvbHZlciB0aGF0IHdpbGwgd29yayAib3V0IG9mCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJveCIgd2l0aCBXaW5kb3dzLiAgUmUtaW1wbGVtZW50cworICoJCQkJCQkJCSAgbXVjaCBYZXJjZXMgY29kZSwgYnV0IGFsbG93cyB1cyB0bworICoJCQkJCQkJCSAgaGFuZGxlIEhUVFAgcmVkaXJlY3RzIGFzIGlzIHJlcXVpcmVkIGJ5CisgKgkJCQkJCQkJICB0aGUgRFNJRyBTdGFuZGFyZAorICoKKyAqICRJZCQKKyAqCisgKiAkTG9nJAorICogUmV2aXNpb24gMS42ICAyMDA1LzAyLzAzIDEzOjU2OjIyICBtaWxhbgorICogQXBhY2hlIGxpY2VuY2UgZml4LgorICoKKyAqIFJldmlzaW9uIDEuNSAgMjAwNC8wMi8wOCAxMDoyNTo0MCAgYmxhdXRlbmIKKyAqIENvbnZlcnQgdG8gQXBhY2hlIDIuMCBsaWNlbnNlCisgKgorICogUmV2aXNpb24gMS40ICAyMDAzLzA5LzExIDExOjExOjA1ICBibGF1dGVuYgorICogQ2xlYW5lZCB1cCB1c2FnZSBvZiBYZXJjZXMgbmFtZXNwYWNlIC0gbm8gbG9uZ2VyIGluamVjdCBpbnRvIGdsb2JhbCBuYW1lc3BhY2UgaW4gaGVhZGVycworICoKKyAqIFJldmlzaW9uIDEuMyAgMjAwMy8wNy8wNSAxMDozMDozOCAgYmxhdXRlbmIKKyAqIENvcHlyaWdodCB1cGRhdGUKKyAqCisgKiBSZXZpc2lvbiAxLjIgIDIwMDMvMDIvMTMgMTA6MTk6NDMgIGJsYXV0ZW5iCisgKiBVcGRhdGVkIFhlcmNlcyBleGNlcHRpb25zIHRvIFhzZWMgZXhjZXB0aW9uCisgKgorICogUmV2aXNpb24gMS4xICAyMDAzLzAyLzEyIDA5OjQ1OjI5ICBibGF1dGVuYgorICogV2luMzIgUmUtaW1wbGVtZW50YXRpb24gb2YgWGVyY2VzIFVSSVJlc29sdmVyIHRvIHN1cHBvcnQgcmUtZGlyZWN0cworICoKKyAqCisgKi8KKworI2lmbmRlZiBYU0VDVVJJUkVTT0xWRVJHRU5FUklDV0lOMzJfSU5DTFVERQorI2RlZmluZSBYU0VDVVJJUkVTT0xWRVJHRU5FUklDV0lOMzJfSU5DTFVERQorCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNVUklSZXNvbHZlci5ocHA+CisKKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MU3RyaW5nLmhwcD4KKworI2luY2x1ZGUgPG1hcD4KKworCisvKioKKyAqIEBpbmdyb3VwIHB1YnNpZworICovCisvKlxAeyovCisKKy8qKgorICogQGJyaWVmIEdlbmVyaWMgV2luZG93cyBVUkkgUmVzb2x2ZXIuCisgKgorICogVGhlIFhNTCBEaWdpdGFsIFNpZ25hdHVyZSBzdGFuZGFyZCBtYWtlcyBoZWF2eSB1c2Ugb2YgVVJJcyB0bworICogaWRlbnRpZnkgaW5mb3JtYXRpb24gdG8gYmUgcmVmZXJlbmNlZCBhbmQgc2lnbmVkLgorICoKKyAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUgWFNFQ1VSSVJlc29sdmVyIGZvciBXaW5kb3dzMzIsIHJlLXVzaW5nCisgKiBtdWNoIG9mIHRoZSBYZXJjZXMgY29kZS4KKyAqCisgKiBAdG9kbyBSZS1pbXBsZW1lbnQgdXNpbmcgdGhlIFdpbmRvd3MgSW50ZXJuZXQgQVBJCisgKi8KKworY2xhc3MgRFNJR19FWFBPUlQgWFNFQ1VSSVJlc29sdmVyR2VuZXJpY1dpbjMyIDogcHVibGljIFhTRUNVUklSZXNvbHZlciB7CisKK3B1YmxpYzoKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCisJWFNFQ1VSSVJlc29sdmVyR2VuZXJpY1dpbjMyKCk7CisJdmlydHVhbCB+WFNFQ1VSSVJlc29sdmVyR2VuZXJpY1dpbjMyKCk7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgSW50ZXJmYWNlIE1ldGhvZHMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIGEgQllURV9TVFJFQU0gZnJvbSBhIFVSSS4KKwkgKgorCSAqIFRoZSByZXNvbHZlciBpcyByZXF1aXJlZCB0byB0YWtlIHRoZSBpbnB1dCBVUkkgYW5kCisJICogZGVyZWZlcmVuY2UgaXQgdG8gYW4gYWN0dWFsIHN0cmVhbSBvZiBvY3RldHMuCisJICoKKwkgKiBUaGUgb2N0ZXRzIGFyZSBwcm92aWRlZCBiYWNrIHRvIHRoZSBsaWJyYXJ5IHVzaW5nCisJICogdGhlIFhlcmNlcyBCaW5JbnB1dFN0cmVhbSBjbGFzcy4KKwkgKgorCSAqIEBub3RlIFRoZSByZXR1cm5lZCBzdHJlYW0gaXMgIm93bmVkIiBieSB0aGUgY2FsbGVyLCB3aGljaAorCSAqIHdpbGwgZGVsZXRlIGl0IHdoZW4gcHJvY2Vzc2luZyBpcyBjb21wbGV0ZS4KKwkgKiBAcGFyYW0gdXJpIFRoZSBzdHJpbmcgY29udGFpbmluZyB0aGUgVVJJIHRvIGJlIGRlLXJlZmVyZW5jZWQuCisJICogQHJldHVybnMgVGhlIG9jdGV0IHN0cmVhbSBjb3JyZXNwb25kaW5nIHRvIHRoZSBVUkkuCisJICovCisKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBCaW5JbnB1dFN0cmVhbSAqIHJlc29sdmVVUkkoY29uc3QgWE1MQ2ggKiB1cmkpOworCisJLyoqCisJICogXGJyaWVmIENsb25lIHRoZSByZXNvbHZlciB0byBiZSBpbnN0YWxsZWQgaW4gYSBuZXcgb2JqZWN0LgorCSAqCisJICogV2hlbiBVUklSZXNvbHZlcnMgYXJlIHBhc3NlZCBpbnRvIHNpZ25hdHVyZXMgYW5kIG90aGVyCisJICogb2JqZWN0cywgdGhleSBhcmUgY2xvbmVkIGFuZCBjb250cm9sIG9mIHRoZSBvcmlnaW5hbCBvYmplY3QKKwkgKiBpcyBsZWZ0IHdpdGggdGhlIGNhbGxlci4KKwkgKgorCSAqLworCisJdmlydHVhbCBYU0VDVVJJUmVzb2x2ZXIgKiBjbG9uZSh2b2lkKTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBDbGFzcyBzcGVjaWZpYyBmdW5jdGlvbnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgU2V0IHRoZSBiYXNlIFVSSSBmb3IgcmVsYXRpdmUgVVJJcy4KKwkgKgorCSAqLworCisJdm9pZCBzZXRCYXNlVVJJKGNvbnN0IFhNTENoICogdXJpKTsKKworCS8vQH0KKworcHJpdmF0ZToKKworCVhNTENoCQkJKiBtcF9iYXNlVVJJOworCisKK307CisKKworI2VuZGlmIC8qIFhTRUNVUklSRVNPTFZFUkdFTkVSSUNXSU4zMl9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy94ZW5jL1hFTkNDaXBoZXIuaHBwIGIvYy9zcmMveGVuYy9YRU5DQ2lwaGVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTc3YjFiCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGVuYy9YRU5DQ2lwaGVyLmhwcApAQCAtMCwwICsxLDYxOCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAzLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEVOQ0NpcGhlciA6PSBJbnRlcmZhY2UgZGVmaW5pdGlvbiBmb3IgbWFpbiBlbmNyeXB0aW9uIHdvcmtlciBjbGFzcworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYRU5DQ0lQSEVSX0lOQ0xVREUKKyNkZWZpbmUgWEVOQ0NJUEhFUl9JTkNMVURFCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hlbmMvWEVOQ0NpcGhlckRhdGEuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHQ29uc3RhbnRzLmhwcD4KKworLy8gWGVyY2VzCisKK1hTRUNfREVDTEFSRV9YRVJDRVNfQ0xBU1MoRE9NRWxlbWVudCk7CitYU0VDX0RFQ0xBUkVfWEVSQ0VTX0NMQVNTKERPTURvY3VtZW50KTsKK1hTRUNfREVDTEFSRV9YRVJDRVNfQ0xBU1MoQmluSW5wdXRTdHJlYW0pOworCitjbGFzcyBYU0VDQ3J5cHRvS2V5OworY2xhc3MgWEVOQ0VuY3J5cHRlZERhdGE7CitjbGFzcyBYRU5DRW5jcnlwdGVkS2V5OworY2xhc3MgWFNFQ0tleUluZm9SZXNvbHZlcjsKK2NsYXNzIFhTRUNCaW5UWEZNSW5wdXRTdHJlYW07CitjbGFzcyBUWEZNQ2hhaW47CisKKy8qKgorICogQGRlZmdyb3VwIHhlbmMgWE1MIEVuY3J5cHRpb24gSW1wbGVtZW50YXRpb24KKyAqCisgKiA8cD5UaGUgY2xhc3NlcyBpbiB0aGlzIGdyb3VwIGltcGxlbWVudCB0aGUgWE1MIEVuY3J5cHRpb24KKyAqIHN0YW5kYXJkLiAgSW4gbW9zdCBjYXNlcywgdXNlcnMgc2hvdWxkIGludGVyYWN0IHdpdGggdGhlc2UKKyAqIGZ1bmN0aW9ucyB2aWEgdGhlIFhFTkNDaXBoZXIgY2xhc3M8L3A+CisgKgorICpcQHsqLworCisKKworLyoqCisgKiBAYnJpZWYgTWFpbiB3b3JrZXIgY2xhc3MgZm9yIHRoZSBYU0VDIGltcGxlbWVudGF0aW9uIG9mIFhNTAorICogRW5jcnlwdGlvbi4KKyAqCisgKiBUaGUgWEVOQ0NpcGhlciBjbGFzcyBub3Qgc29tZXRoaW5nIHRoYXQgaXMgZGlyZWN0bHkgZGVmaW5lZCBpbgorICogdGhlIFhNTCBFbmNyeXB0aW9uIHN0YW5kYXJkLiAgSXQgaXMgYSBjb250cm9sIGNsYXNzIHVzZWQgYnkgdGhlCisgKiBsaWJyYXJ5IHRvIGdlbmVyYXRlIGVuY3J5cHRlZCBYTUwgaW5mb3JtYXRpb24gYW5kIHRvIGRlY3J5cHQKKyAqIGluZm9ybWF0aW9uIGhlbGQgaW4gWE1MIEVuY3J5cHRpb24gc3RydWN0dXJlcy4KKyAqCisgKiBBbGwgZW5jcnlwdGlvbiBhbmQgZGVjcnlwdGlvbiB3b3JrIHBlcmZvcm1lZCBieSB0aGUgbGlicmFyeSBpcworICogaGFuZGxlZCB3aXRoaW4gdGhpcyBjbGFzcy4gIFRoZSBvdGhlciBYRU5DIGNsYXNzZXMgc2ltcGx5CisgKiBoYW5kbGUgbWFyc2hhbGxpbmcgYW5kIHVubWFyc2hhbGxpbmcgb2YgdGhlIERPTSBkYXRhLgorICoKKyAqLworCisKK2NsYXNzIFhFTkNDaXBoZXIgeworCitwdWJsaWM6CisJCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisJCisJdmlydHVhbCB+WEVOQ0NpcGhlcigpIHt9OworCisJLy9AfQorCisJLyoqIEBuYW1lIERlY3J5cHRpb24gRnVuY3Rpb25zICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIERlY3J5cHQgdGhlIG5vbWluYXRlZCBlbGVtZW50LgorCSAqCisJICogRGVjcnlwdHMgdGhlIHBhc3NlZCBpbiBlbGVtZW50LCB3aGljaCBtdXN0IGJlIHRoZSByb290CisJICogbm9kZSBvZiBhIFw8RW5jcnlwdGVkRGF0YVw+IG1ldGhvZCB3aXRoIGEgdHlwZSBvZiAiI0VsZW1lbnQiLgorCSAqIElmIG5vdCwgdGhlIGxpYnJhcnkgd2lsbCB0aHJvdyBhbiBYU0VDRXhjZXB0aW9uIGV4Y2VwdGlvbi4KKwkgKgorCSAqIFRoaXMgaXMgYW4gImFsbCBpbiBvbmUgbWV0aG9kIi4gIFRoZSBsaWJyYXJ5IHdpbGwgcmVwbGFjZQorCSAqIHRoZSBwYXNzZWQgaW4gRWxlbWVudCAoaS5lLiB0aGUgZW5jcnlwdGVkIFhNTCBkYXRhKSB3aXRoCisJICogdGhlIHJlc3VsdGFudCBwbGFpbiB0ZXh0LCBhZnRlciBpdCBoYXMgYmVlbiBwYXJzZWQgYmFjayBpbnRvCisJICogRE9NIG5vZGVzCisJICoKKwkgKiBAcGFyYW0gZWxlbWVudCBSb290IG9mIEVuY3J5cHRlZERhdGEgRE9NIHN0cnVjdHlyZSB0byBkZWNyeXB0CisJICogQHJldHVybnMgVGhlIG93bmluZyBkb2N1bWVudCB3aXRoIHRoZSBlbGVtZW50IHJlcGxhY2VkLCBvciBOVUxMCisJICogaWYgdGhlIGRlY3J5cHRpb24gZmFpbHMgZm9yIHNvbWUgcmVhc29uIChub3JtYWxseSBhbiBleGNlcHRpb24pLgorCSAqIEB0aHJvd3MgWFNFQ0V4Y2VwdGlvbiBpZiB0aGUgZGVjcnlwdGlvbiBmYWlscywgb3IgaWYgdGhpcyBpcworCSAqIG5vdCBhIHZhbGlkIEVuY3J5cHRlZERhdGEgRE9NIHN0cnVjdHVyZS4KKwkgKi8KKworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogZGVjcnlwdEVsZW1lbnQoCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogZWxlbWVudAorCSkgPSAwOworCisJLyoqCisJICogXGJyaWVmIERlY3J5cHQgdGhlIG5vbWluYXRlZCBlbGVtZW50IHdpdGhvdXQgcmVwbGFjaW5nIGl0LgorCSAqCisJICogRGVjcnlwdHMgdGhlIHBhc3NlZCBpbiBlbGVtZW50LCB3aGljaCBtdXN0IGJlIHRoZSByb290CisJICogbm9kZSBvZiBhIFw8RW5jcnlwdGVkRGF0YVw+IG1ldGhvZCB3aXRoIGEgdHlwZSBvZiAiI0VsZW1lbnQiLgorCSAqIElmIG5vdCwgdGhlIGxpYnJhcnkgd2lsbCB0aHJvdyBhbiBYU0VDRXhjZXB0aW9uIGV4Y2VwdGlvbi4gIFJhdGhlcgorCSAqIHRoYW4gcmVwbGFjaW5nIHRoZSBlbGVtZW50IHdpdGggdGhlIGRlY3J5cHRlZCBjb250ZW50LCB0aGUKKwkgKiByZXN1bHQgaXMgcGFzc2VkIHRvIHRoZSBjYWxsZXIgYXMgYW4gb3JwaGFuZWQgZG9jdW1lbnQgZnJhZ21lbnQuCisJICoKKwkgKiBAcGFyYW0gZWxlbWVudCBSb290IG9mIEVuY3J5cHRlZERhdGEgRE9NIHN0cnVjdHlyZSB0byBkZWNyeXB0CisJICogQHJldHVybnMgVGhlIGRvY3VtZW50IGZyYWdtZW50IGNvbnRhaW5pbmcgdGhlIGRlY3J5cHRlZCBub2RlLXNldC4KKwkgKiBAdGhyb3dzIFhTRUNFeGNlcHRpb24gaWYgdGhlIGRlY3J5cHRpb24gZmFpbHMsIG9yIGlmIHRoaXMgaXMKKwkgKiBub3QgYSB2YWxpZCBFbmNyeXB0ZWREYXRhIERPTSBzdHJ1Y3R1cmUuCisJICovCisKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICogZGVjcnlwdEVsZW1lbnREZXRhY2hlZCgKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBlbGVtZW50CisJKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgRGVjcnlwdCBjdXJyZW50bHkgbG9hZGVkIGVsZW1lbnQuCisJICoKKwkgKiBEZWNyeXB0cyB0aGUgYW4gZWxlbWVudCB0aGF0IHdhcyBwcmV2aW91c2x5IHBhc3NlZCBpbiB2aWEgCisJICogbG9hZEVuY3J5cHRlZERhdGEgd2l0aCBhIHR5cGUgb2YgIiNFbGVtZW50Ii4KKwkgKiBJZiBub3QsIHRoZSBsaWJyYXJ5IHdpbGwgdGhyb3cgYW4gWFNFQ0V4Y2VwdGlvbiBleGNlcHRpb24uCisJICoKKwkgKiBUaGlzIGlzIGFuICJhbGwgaW4gb25lIG1ldGhvZCIuICBUaGUgbGlicmFyeSB3aWxsIHJlcGxhY2UKKwkgKiB0aGUgcGFzc2VkIGluIEVsZW1lbnQgKGkuZS4gdGhlIGVuY3J5cHRlZCBYTUwgZGF0YSkgd2l0aAorCSAqIHRoZSByZXN1bHRhbnQgcGxhaW4gdGV4dCwgYWZ0ZXIgaXQgaGFzIGJlZW4gcGFyc2VkIGJhY2sgaW50bworCSAqIERPTSBub2RlcworCSAqCisJICogQHBhcmFtIGVsZW1lbnQgUm9vdCBvZiBFbmNyeXB0ZWREYXRhIERPTSBzdHJ1Y3R5cmUgdG8gZGVjcnlwdAorCSAqIEByZXR1cm5zIFRoZSBvd25pbmcgZG9jdW1lbnQgd2l0aCB0aGUgZWxlbWVudCByZXBsYWNlZCwgb3IgTlVMTAorCSAqIGlmIHRoZSBkZWNyeXB0aW9uIGZhaWxzIGZvciBzb21lIHJlYXNvbiAobm9ybWFsbHkgYW4gZXhjZXB0aW9uKS4KKwkgKiBAdGhyb3dzIFhTRUNFeGNlcHRpb24gaWYgdGhlIGRlY3J5cHRpb24gZmFpbHMsIG9yIGlmIHRoaXMgaXMKKwkgKiBub3QgYSB2YWxpZCBFbmNyeXB0ZWREYXRhIERPTSBzdHJ1Y3R1cmUuCisJICovCisKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGRlY3J5cHRFbGVtZW50KHZvaWQpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBEZWNyeXB0IGN1cnJlbnRseSBsb2FkZWQgZWxlbWVudCB3aXRob3V0IHJlcGxhY2luZyBpdC4KKwkgKgorCSAqIERlY3J5cHRzIHRoZSBhbiBlbGVtZW50IHRoYXQgd2FzIHByZXZpb3VzbHkgcGFzc2VkIGluIHZpYSAKKwkgKiBsb2FkRW5jcnlwdGVkRGF0YSB3aXRoIGEgdHlwZSBvZiAiI0VsZW1lbnQiLgorCSAqIElmIG5vdCwgdGhlIGxpYnJhcnkgd2lsbCB0aHJvdyBhbiBYU0VDRXhjZXB0aW9uIGV4Y2VwdGlvbi4KKwkgKgorCSAqIFRoaXMgZG9lcyBub3QgcmVwbGFjZSB0aGUgY3VycmVudGx5IGV4aXN0aW5nIERPTSBkb2N1bWVudC4gIEl0IHJldHVybnMKKwkgKiBhbiAib3JwaGFuZWQiIGRvY3VtZW50IGZyYWdtZW50IGNvbnRhaW5pbmcgdGhlIHNlcmlhbGlzZWQgdmVyc2lvbiBvZiB0aGUKKwkgKiBkZWNyeXB0ZWQgZGF0YS4KKwkgKgorCSAqIEBwYXJhbSBlbGVtZW50IFJvb3Qgb2YgRW5jcnlwdGVkRGF0YSBET00gc3RydWN0eXJlIHRvIGRlY3J5cHQKKwkgKiBAcmV0dXJucyBUaGUgb3duaW5nIGRvY3VtZW50IHdpdGggdGhlIGVsZW1lbnQgcmVwbGFjZWQsIG9yIE5VTEwKKwkgKiBpZiB0aGUgZGVjcnlwdGlvbiBmYWlscyBmb3Igc29tZSByZWFzb24gKG5vcm1hbGx5IGFuIGV4Y2VwdGlvbikuCisJICogQHRocm93cyBYU0VDRXhjZXB0aW9uIGlmIHRoZSBkZWNyeXB0aW9uIGZhaWxzLCBvciBpZiB0aGlzIGlzCisJICogbm90IGEgdmFsaWQgRW5jcnlwdGVkRGF0YSBET00gc3RydWN0dXJlLgorCSAqLworCisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqIGRlY3J5cHRFbGVtZW50RGV0YWNoZWQodm9pZCkgPSAwOworCQorCS8qKgorCSAqIFxicmllZiBEZWNyeXB0IHRoZSBub21pbmF0ZWQgZWxlbWVudCBhbmQgcHV0IHRoZSBvdXRwdXQgdG8gYW4gSW5wdXRTdHJlYW0uCisJICoKKwkgKiBEZWNyeXB0cyB0aGUgcGFzc2VkIGluIGVsZW1lbnQsIHdoaWNoIG11c3QgYmUgdGhlIHJvb3QKKwkgKiBub2RlIG9mIGEgXDxFbmNyeXB0ZWREYXRhXD4gbWV0aG9kLgorCSAqCisJICogVGhpcyBjYWxsIGRvZXMgbm90IGNoYW5nZSB0aGUgc291cmNlIERPTSBpbiBhbnkgd2F5LiAgSXQgc2ltcGx5CisJICogcHJvY2Vzc2VzIHRoZSBlbmNyeXB0ZWQgZGF0YSBhbmQgcHJvdmlkZXMgYW4gSW5wdXRTdHJlYW0gdGhhdCB0aGUKKwkgKiBjYWxsZXIgY2FuIHJlYWQgZnJvbSB0byByZWFkIHRoZSBwbGFpbiB0ZXh0IGRhdGEuCisJICoKKwkgKiBAcGFyYW0gZWxlbWVudCBSb290IG9mIEVuY3J5cHRlZERhdGEgRE9NIHN0cnVjdHlyZSB0byBkZWNyeXB0CisJICogQHJldHVybnMgQSBCaW5JbnB1dFN0cmVhbSBvYmplY3QgdGhhdCB0aGUgYXBwbGljYXRpb24gY2FuIHVzZSB0bworCSAqIHJlYWQgdGhlIGRlY3J5cHRlZCBkYXRhLgorCSAqIEB0aHJvd3MgWFNFQ0V4Y2VwdGlvbiBpZiB0aGUgZGVjcnlwdGlvbiBmYWlscywgb3IgaWYgdGhpcyBpcworCSAqIG5vdCBhIHZhbGlkIEVuY3J5cHRlZERhdGEgRE9NIHN0cnVjdHVyZS4KKwkgKi8KKworCXZpcnR1YWwgWFNFQ0JpblRYRk1JbnB1dFN0cmVhbSAqIGRlY3J5cHRUb0JpbklucHV0U3RyZWFtKAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGVsZW1lbnQKKwkpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBEZWNyeXB0IGEga2V5CisJICoKKwkgKiBSZWFkcyBpbiB0aGUgcGFzc2VkIGluIEtleUluZm8gc3RydWN0dXJlIGZvciBhbiBFbmNyeXB0ZWRLZXkgYW5kIAorCSAqIGRlY3J5cHRzIHRoZSBrZXkgdG8gYSBidWZmZXIuCisJICoKKwkgKiBAcGFyYW0gZW5jcnlwdGVkS2V5IHRoZSBhbHJlYWR5IGxvYWRlZCBlbmNyeXB0ZWRLZXkgc3RydWN0dXJlCisJICogQHBhcmFtIHJhd0tleSBCdWZmZXIgdG8gcGxhY2UgdGhlIGRlY3J5cHRlZCBrZXkgaW50bworCSAqIEBwYXJhbSBtYXhLZXlTaXplIE1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvIHBsYWNlIGluIHRoZSBidWZmZXIKKwkgKi8KKworCXZpcnR1YWwgaW50IGRlY3J5cHRLZXkoCisJCVhFTkNFbmNyeXB0ZWRLZXkgKiBlbmNyeXB0ZWRLZXksCisJCVhNTEJ5dGUgKiByYXdLZXksCisJCWludCBtYXhLZXlTaXplCisJKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgRGVjcnlwdCBhIGtleSBkaXJlY3RseSBmcm9tIERPTQorCSAqCisJICogTG9hZHMgYW4gRW5jcnlwdGVkS2V5IGZyb20gRE9NIGFuZCB0aGVuIGRlY3J5cHRzIHRoZSBrZXkuCisJICogSWYgYSBOVUxMIGJ1ZmZlciBpcyBwYXNzZWQgaW4sIHdpbGwgc2ltcGx5IGxvYWQgdGhlIGtleSBhbmQgcmV0dXJuCisJICoKKwkgKiBAcGFyYW0ga2V5Tm9kZSBOb2RlIHRvIGxvYWQgZnJvbQorCSAqIEBwYXJhbSByYXdLZXkgQnVmZmVyIHRvIGRlY3J5cHQgdG8KKwkgKiBAcGFyYW0gbWF4S2V5U2l6ZSBMZW5ndGggb2YgcmF3S2V5IGJ1ZmZlcgorCSAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgYnl0ZXMgZGVjcnlwdGVkCisJICovCisKKwl2aXJ0dWFsIGludCBkZWNyeXB0S2V5KAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGtleU5vZGUsCisJCVhNTEJ5dGUgKiByYXdLZXksCisJCWludCBtYXhLZXlTaXplCisJKSA9IDA7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgRW5jcnlwdGlvbiBGdW5jdGlvbnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgRW5jcnlwdCB0aGUgbm9taW5hdGVkIGVsZW1lbnQuCisJICogCisJICogRW5jcnlwdHMgdGhlIHBhc3NlZCBpbiBlbGVtZW50IGFuZCBhbGwgY2hpbGRyZW4uICBUaGUgZWxlbWVudAorCSAqIGlzIHJlcGxhY2VkIHdpdGggYW4gRW5jcnlwdGVkRGF0YSBlbGVtZW50CisJICoKKwkgKiBAcGFyYW0gZWxlbWVudCBFbGVtZW50IChhbmQgY2hpbGRyZW4pIHRvIGVuY3J5cHQKKwkgKiBAcGFyYW0gZW0gVGhlIGVuY3J5cHRpb25NZXRob2QgdG8gdXNlIGZvciB0aGlzIGVuY3J5cHRpb24uICBVc2UKKwkgKiBFTkNSWVBUX05PTkUgaWYgYSB1c2VyIGRlZmluZWQgdHlwZSBpcyByZXF1aXJlZC4KKwkgKiBAcGFyYW0gYWxnb3JpdGhtVVJJIElmIEVOQ1JZUFRfTk9ORSBpcyBwYXNzZWQgaW4sIHRoaXMgd2lsbCBiZQorCSAqIHVzZWQgdG8gc2V0IHRoZSBhbGdvcml0aG0gVVJJLiAgSWYgdGhpcyBpcyBhbHNvIE5VTEwgLSBubworCSAqIEVuY3J5cHRpb25NZXRob2Qgd2lsbCBiZSBzZXQuICA8Yj5OVUxMIFZhbHVlIFVuc3VwcG9ydGVkIGlmIGVtIG5vdAorCSAqIHNldCEgIEl0J3MgdXNlIGNvdWxkIGNhdXNlIHByb2JsZW1zITwvYj4KKwkgKgorCSAqIEByZXR1cm5zIFRoZSBvd25pbmcgZG9jdW1lbnQgd2l0aCB0aGUgZWxlbWVudCByZXBsYWNlZCwgb3IgTlVMTAorCSAqIGlmIHRoZSBkZWNyeXB0aW9uIGZhaWxzIGZvciBzb21lIHJlYXNvbiAobm9ybWFsbHkgYW4gZXhjZXB0aW9uKS4KKwkgKiBAdGhyb3dzIFhTRUNFeGNlcHRpb24gaWYgdGhlIGVuY3J5cHRpb24gZmFpbHMuCisJICovCisKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGVuY3J5cHRFbGVtZW50KAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGVsZW1lbnQsCisJCWVuY3J5cHRpb25NZXRob2QgZW0sCisJCWNvbnN0IFhNTENoICogYWxnb3JpdGhtVVJJID0gTlVMTAorCSkgPSAwOworCisJLyoqCisJICogXGJyaWVmIEVuY3J5cHQgdGhlIG5vbWluYXRlZCBlbGVtZW50IHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBjdXJyZW50IGRvY3VtZW50LgorCSAqIAorCSAqIEVuY3J5cHRzIHRoZSBwYXNzZWQgaW4gZWxlbWVudCBhbmQgYWxsIGNoaWxkcmVuLiAgVGhlIGVsZW1lbnQKKwkgKiBpcyBub3QgcmVwbGFjZWQgLSB0aGUgcmV0dXJuIG5vZGUgaXMgYW4gIm9ycGhhbmVkIiBzdWJ0cmVlIGZyb20KKwkgKiB0aGUgcGFzc2VkIGluIGRvY3VtZW50IGFuZCB0aGUgb3JpZ2luYWwgZG9jdW1lbnQgaXMgdW50b3VjaGVkLgorCSAqCisJICogQHBhcmFtIGVsZW1lbnQgRWxlbWVudCAoYW5kIGNoaWxkcmVuKSB0byBlbmNyeXB0CisJICogQHBhcmFtIGVtIFRoZSBlbmNyeXB0aW9uTWV0aG9kIHRvIHVzZSBmb3IgdGhpcyBlbmNyeXB0aW9uLiAgVXNlCisJICogRU5DUllQVF9OT05FIGlmIGEgdXNlciBkZWZpbmVkIHR5cGUgaXMgcmVxdWlyZWQuCisJICogQHBhcmFtIGFsZ29yaXRobVVSSSBJZiBFTkNSWVBUX05PTkUgaXMgcGFzc2VkIGluLCB0aGlzIHdpbGwgYmUKKwkgKiB1c2VkIHRvIHNldCB0aGUgYWxnb3JpdGhtIFVSSS4gIElmIHRoaXMgaXMgYWxzbyBOVUxMIC0gbm8KKwkgKiBFbmNyeXB0aW9uTWV0aG9kIHdpbGwgYmUgc2V0LiAgPGI+TlVMTCBWYWx1ZSBVbnN1cHBvcnRlZCBpZiBlbSBub3QKKwkgKiBzZXQhICBJdCdzIHVzZSBjb3VsZCBjYXVzZSBwcm9ibGVtcyE8L2I+CisJICoKKwkgKiBAcmV0dXJucyBUaGUgcmVzdWx0aW5nIGRvY3VtZW50IGZyYWdtZW50IGNvbnRhaW5pbmcgdGhlIGVuY3J5cHRlZCBkYXRhLgorCSAqIEB0aHJvd3MgWFNFQ0V4Y2VwdGlvbiBpZiB0aGUgZW5jcnlwdGlvbiBmYWlscy4KKwkgKi8KKworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUgKiBlbmNyeXB0RWxlbWVudERldGFjaGVkKAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGVsZW1lbnQsCisJCWVuY3J5cHRpb25NZXRob2QgZW0sCisJCWNvbnN0IFhNTENoICogYWxnb3JpdGhtVVJJID0gTlVMTAorCSkgPSAwOworCQorCS8qKgorCSAqIFxicmllZiBFbmNyeXB0IHRoZSBjaGlsZHJlbiBvZiB0aGUgbm9taW5hdGVkIGVsZW1lbnQKKwkgKiAKKwkgKiBFbmNyeXB0cyB0aGUgYWxsIGNoaWxkcmVuIG9mIHRoZSBwYXNzZWQgaW4gZWxlbWVudCwgYnV0CisJICogbGVhdmVzIHRoZSBlbGVtZW50IGl0c2VsZiBpbiBwbGFjZSwgd2l0aCBvbmUgbmV3IGNoaWxkIC0gYW4KKwkgKiBFbmNyeXB0ZWREYXRhIG5vZGUgb2YgdHlwZSAjY29udGVudAorCSAqCisJICogQHBhcmFtIGVsZW1lbnQgRWxlbWVudCB3aG9zZSBjaGlsZHJlbiBhcmUgdG8gYmUgZW5jcnlwdGVkCisJICogQHBhcmFtIGVtIFRoZSBlbmNyeXB0aW9uTWV0aG9kIHRvIHVzZSBmb3IgdGhpcyBlbmNyeXB0aW9uLiAgVXNlCisJICogRU5DUllQVF9OT05FIGlmIGEgdXNlciBkZWZpbmVkIHR5cGUgaXMgcmVxdWlyZWQuCisJICogQHBhcmFtIGFsZ29yaXRobVVSSSBJZiBFTkNSWVBUX05PTkUgaXMgcGFzc2VkIGluLCB0aGlzIHdpbGwgYmUKKwkgKiB1c2VkIHRvIHNldCB0aGUgYWxnb3JpdGhtIFVSSS4gIElmIHRoaXMgaXMgYWxzbyBOVUxMIC0gbm8KKwkgKiBFbmNyeXB0aW9uTWV0aG9kIHdpbGwgYmUgc2V0LiAgPGI+TlVMTCBWYWx1ZSBVbnN1cHBvcnRlZCBpZiBlbSBub3QKKwkgKiBzZXQhICBJdCdzIHVzZSBjb3VsZCBjYXVzZSBwcm9ibGVtcyE8L2I+CisJICoKKwkgKiBAcmV0dXJucyBUaGUgb3duaW5nIGRvY3VtZW50IHdpdGggdGhlIGVsZW1lbnQncyBjaGlsZHJlbiByZXBsYWNlZCwgb3IgTlVMTAorCSAqIGlmIHRoZSBkZWNyeXB0aW9uIGZhaWxzIGZvciBzb21lIHJlYXNvbiAobm9ybWFsbHkgYW4gZXhjZXB0aW9uKS4KKwkgKiBAdGhyb3dzIFhTRUNFeGNlcHRpb24gaWYgdGhlIGVuY3J5cHRpb24gZmFpbHMuCisJICovCisKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGVuY3J5cHRFbGVtZW50Q29udGVudCgKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBlbGVtZW50LAorCQllbmNyeXB0aW9uTWV0aG9kIGVtLAorCQljb25zdCBYTUxDaCAqIGFsZ29yaXRobVVSSSA9IE5VTEwKKwkpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBFbmNyeXB0IHRoZSBjaGlsZHJlbiBvZiB0aGUgbm9taW5hdGVkIGVsZW1lbnQKKwkgKiAKKwkgKiBFbmNyeXB0cyB0aGUgYWxsIGNoaWxkcmVuIG9mIHRoZSBwYXNzZWQgaW4gZWxlbWVudC4gIFRoZSBpbnB1dAorCSAqIERPTSBub2RlIHNldCBpcyB1bnRvdWNoZWQsIGJ1dCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhbiBvcnBoYW5lZAorCSAqIHN1Yi10cmVlIG93bmVkIGJ5IHRoZSBwYXNzZWQgaW4gZG9jdW1lbnQgY29udGFpbmluZyB0aGUgZW5jcnlwdGVkCisJICogZGF0YS4KKwkgKgorCSAqIEBwYXJhbSBlbGVtZW50IEVsZW1lbnQgd2hvc2UgY2hpbGRyZW4gYXJlIHRvIGJlIGVuY3J5cHRlZAorCSAqIEBwYXJhbSBlbSBUaGUgZW5jcnlwdGlvbk1ldGhvZCB0byB1c2UgZm9yIHRoaXMgZW5jcnlwdGlvbi4gIFVzZQorCSAqIEVOQ1JZUFRfTk9ORSBpZiBhIHVzZXIgZGVmaW5lZCB0eXBlIGlzIHJlcXVpcmVkLgorCSAqIEBwYXJhbSBhbGdvcml0aG1VUkkgSWYgRU5DUllQVF9OT05FIGlzIHBhc3NlZCBpbiwgdGhpcyB3aWxsIGJlCisJICogdXNlZCB0byBzZXQgdGhlIGFsZ29yaXRobSBVUkkuICBJZiB0aGlzIGlzIGFsc28gTlVMTCAtIG5vCisJICogRW5jcnlwdGlvbk1ldGhvZCB3aWxsIGJlIHNldC4gIDxiPk5VTEwgVmFsdWUgVW5zdXBwb3J0ZWQgaWYgZW0gbm90CisJICogc2V0ISAgSXQncyB1c2UgY291bGQgY2F1c2UgcHJvYmxlbXMhPC9iPgorCSAqCisJICogQHJldHVybnMgVGhlIHJlc3VsdGluZyAob3JwaGFuZWQpIHN1Yi10cmVlIGZyb20gdGhlIHBhc3NlZCBpbiBkb2N1bWVudAorCSAqIGNvbnRhaW5pbmcgdGhlIGVuY3J5cHRlZCBkYXRhLgorCSAqIEB0aHJvd3MgWFNFQ0V4Y2VwdGlvbiBpZiB0aGUgZW5jcnlwdGlvbiBmYWlscy4KKwkgKi8KKworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUgKiBlbmNyeXB0RWxlbWVudENvbnRlbnREZXRhY2hlZCgKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBlbGVtZW50LAorCQllbmNyeXB0aW9uTWV0aG9kIGVtLAorCQljb25zdCBYTUxDaCAqIGFsZ29yaXRobVVSSSA9IE5VTEwKKwkpID0gMDsKKwkKKwkvKioKKwkgKiBcYnJpZWYgRW5jcnlwdCBhIGJ1ZmZlciBvZiBkYXRhIGFzIGEga2V5CisJICoKKwkgKiBFbmNyeXB0cyB0aGUgcGFzc2VkIGluIGRhdGEgYW5kIGNyZWF0ZXMgYW4gRW5jcnlwdGVkS2V5IGVsZW1lbnQKKwkgKgorCSAqIEBwYXJhbSBrZXlCdWZmZXIgVGhlIGtleSBkYXRhIHRvIGVuY3J5cHQKKwkgKiBAcGFyYW0ga2V5TGVuIEJ5dGVzIHRvIGVuY3J5cHQKKwkgKiBAcGFyYW0gZW0gVGhlIGVuY3J5cHRpb25NZXRob2QgdG8gdXNlIGZvciB0aGlzIGVuY3J5cHRpb24uICBVc2UKKwkgKiBFTkNSWVBUX05PTkUgaWYgYSB1c2VyIGRlZmluZWQgdHlwZSBpcyByZXF1aXJlZC4KKwkgKiBAcGFyYW0gYWxnb3JpdGhtVVJJIElmIEVOQ1JZUFRfTk9ORSBpcyB1c2VkIGZvciBlbSwgdGhpcyB3aWxsIGJlCisJICogdXNlZCBhcyB0aGUgYWxnb3JpdGhtIFVSSS4KKwkgKgorCSAqIEByZXR1cm5zIFRoZSBFbmNyeXB0ZWRLZXkgZWxlbWVudAorCSAqLworCisJdmlydHVhbCBYRU5DRW5jcnlwdGVkS2V5ICogZW5jcnlwdEtleSgKKwkJY29uc3QgdW5zaWduZWQgY2hhciAqIGtleUJ1ZmZlciwKKwkJdW5zaWduZWQgaW50IGtleUxlbiwKKwkJZW5jcnlwdGlvbk1ldGhvZCBlbSwKKwkJY29uc3QgWE1MQ2ggKiBhbGdvcml0aG1VUkkgPSBOVUxMCisJKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgRW5jcnlwdCBhbiBpbnB1dCBzdHJlYW0gdG8gYSBDaXBoZXJWYWx1ZQorCSAqCisJICogRW5jcnlwdHMgdGhlIGRhdGEgcGFzc2VkIGluIHZpYSBhIFhlcmNlcyBCaW5JbnB1dFN0cmVhbSBhbmQgcGxhY2VzIGl0CisJICogZGlyZWN0bHkgaW50byBhIG5ldyBFbmNyeXB0ZWREYXRhIGVsZW1lbnQgdGhhdCBjb250YWlucyBhIENpcGhlclZhbHVlCisJICoKKwkgKiBAcGFyYW0gcGxhaW5UZXh0IFRoZSBJbnB1dFN0cmVhbSB0byByZWFkIHRoZSBwbGFpbiB0ZXh0IGZyb20KKwkgKiBAcGFyYW0gZW0gVGhlIGVuY3J5cHRpb25NZXRob2QgdG8gdXNlIGZvciB0aGlzIGVuY3J5cHRpb24uICBVc2UKKwkgKiBFTkNSWVBUX05PTkUgaWYgYSB1c2VyIGRlZmluZWQgdHlwZSBpcyByZXF1aXJlZC4KKwkgKiBAcGFyYW0gYWxnb3JpdGhtVVJJIGlmIEVOQ1JZUFRfTk9ORSBpcyB1c2VkIGZvciBlbSwgdGhpcyB3aWxsIGJlIHVzZWQKKwkgKiBhcyB0aGUgYWxnb3JpdGhtIFVSSQorCSAqCisJICogQHJldHVybnMgdGhlIEVuY3J5cHRlZERhdGEgZWxlbWVudCBjb250YWluaW5nIHRoZSBDaXBoZXJWYWx1ZSBvZiB0aGUgZGF0YQorCSAqLworCisJdmlydHVhbCBYRU5DRW5jcnlwdGVkRGF0YSAqIGVuY3J5cHRCaW5JbnB1dFN0cmVhbSgKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIEJpbklucHV0U3RyZWFtICogcGxhaW5UZXh0LAorCQllbmNyeXB0aW9uTWV0aG9kIGVtLAorCQljb25zdCBYTUxDaCAqIGFsZ29yaXRobVVSSSA9IE5VTEwKKwkpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBFbmNyeXB0IGEgVFhGTUNoYWluIHRvIGEgQ2lwaGVyVmFsdWUKKwkgKgorCSAqIEVuY3J5cHRzIHRoZSBkYXRhIHBhc3NlZCBpbiB2aWEgYSBUWEZNQ2hhaW4gYW5kIHBsYWNlcyBpdAorCSAqIGRpcmVjdGx5IGludG8gYSBuZXcgRW5jcnlwdGVkRGF0YSBlbGVtZW50IHRoYXQgY29udGFpbnMgYSBDaXBoZXJWYWx1ZS4KKwkgKgorCSAqIEBub3RlIFRoaXMgaXMgbm90IHJlYWxseSBpbnRlbmRlZCBmb3IgY2xpZW50IGFwcHMsIGJ1dCBpcyB1c2VkIGludGVybmFsbHkKKwkgKiBhbmQgaXMgcHJvdmlkZWQgZm9yIGZsZXhpYmlsaXR5LiAgVGhlICJmb3JtYWwiIG1ldGhvZCBpcyBlbmNyeXB0QmluSW5wdXRTdHJlYW0KKwkgKgorCSAqIEBwYXJhbSBwbGFpblRleHQgVGhlIFRYRk1DaGFpbiB0byByZWFkIHRoZSBwbGFpbiB0ZXh0IGZyb20KKwkgKiBAcGFyYW0gZW0gVGhlIGVuY3J5cHRpb25NZXRob2QgdG8gdXNlIGZvciB0aGlzIGVuY3J5cHRpb24uICBVc2UKKwkgKiBFTkNSWVBUX05PTkUgaWYgYSB1c2VyIGRlZmluZWQgdHlwZSBpcyByZXF1aXJlZC4KKwkgKiBAcGFyYW0gYWxnb3JpdGhtVVJJIGlmIEVOQ1JZUFRfTk9ORSBpcyB1c2VkIGZvciBlbSwgdGhpcyB3aWxsIGJlIHVzZWQKKwkgKiBhcyB0aGUgYWxnb3JpdGhtIFVSSQorCSAqCisJICogQHJldHVybnMgdGhlIEVuY3J5cHRlZERhdGEgZWxlbWVudCBjb250YWluaW5nIHRoZSBDaXBoZXJWYWx1ZSBvZiB0aGUgZGF0YQorCSAqLworCisJdmlydHVhbCBYRU5DRW5jcnlwdGVkRGF0YSAqIGVuY3J5cHRUWEZNQ2hhaW4oCisJCVRYRk1DaGFpbiAqIHBsYWluVGV4dCwKKwkJZW5jcnlwdGlvbk1ldGhvZCBlbSwKKwkJY29uc3QgWE1MQ2ggKiBhbGdvcml0aG1VUkkgPSBOVUxMCisJKSA9IDA7CisKKwkvL0B9CisJLyoqIEBuYW1lIEdldHRlciBGdW5jdGlvbnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IG93bmluZyBkb2N1bWVudAorCSAqCisJICogRXZlcnkgQ2lwaGVyIG9iamVjdCBpcyBhc3NvY2lhdGVkIHdpdGggYW4gb3duaW5nIGRvY3VtZW50IChmb3IgZ2VuZXJhdGlvbiBvZgorCSAqIG5vZGVzIGV0Yy4pICBUaGlzIGFsbG93cyBjYWxsZXJzIHRvIHJldHJpZXZlIHRoaXMgdmFsdWUuCisJICoKKwkgKiBAcmV0dXJucyBUaGUgRE9NRG9jdW1lbnQgdGhhdCBpcyB1c2VkIGJ5IHRoaXMgb2JqZWN0CisJICovCisKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGdldERvY3VtZW50KHZvaWQpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBHZXQgbmFtZXNwYWNlIHByZWZpeCBmb3IgWEVOQyBub2RlcworCSAqCisJICogRmluZCB0aGUgc3RyaW5nIGJlaW5nIHVzZWQgYnkgdGhlIGxpYnJhcnkgdG8gcHJlZml4IG5vZGVzIGluIHRoZSAKKwkgKiB4ZW5jOiBuYW1lc3BhY2UuCisJICoKKwkgKiBAcmV0dXJucyBYRU5DIG5hbWVzcGFjZSBwcmVmaXgKKwkgKi8KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRYRU5DTlNQcmVmaXgodm9pZCkgY29uc3QgPSAwOworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgRW5jcnlwdGVkRGF0YSBlbGVtZW50CisJICoKKwkgKiBBbGxvd3MgdGhlIHVzZXIgdG8gZ2V0IHRoZSBFbmNyeXB0ZWREYXRhIGVsZW1lbnQgdGhhdCB3YXMgbGFzdCBwcm9jZXNzZWQvCisJICogY3JlYXRlZCBieSB0aGlzIFhFTkNDaXBoZXIgb2JqZWN0LgorCSAqCisJICogQHJldHVybnMgVGhlIGxhc3QgdXNlZCBFbmNyeXB0ZWREYXRhCisJICovCisKKwl2aXJ0dWFsIFhFTkNFbmNyeXB0ZWREYXRhICogZ2V0RW5jcnlwdGVkRGF0YSh2b2lkKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgVGVsbCBjYWxsZXIgd2hldGhlciBQcmV0dHlQcmludGluZyBpcyBhY3RpdmUKKwkgKgorCSAqIEByZXR1cm5zIFRydWUgaWYgUHJldHR5IFByaW50aW5nIGlzIGFjdGl2ZSwgZmFsc2UgaWYgbm90CisJICovCisKKwl2aXJ0dWFsIGJvb2wgZ2V0UHJldHR5UHJpbnQodm9pZCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIFRlbGwgY2FsbGVyIHdoZXRoZXIgdGhlIHNlcmlhbGlzYXRpb24gcm91dGluZXMgd2lsbAorCSAqIHVzZSBleGNsdXNpdmUgb3Igbm9ybWFsIGNhbm9uaWNhbGlzYXRpb24uCisJICoKKwkgKiBXaGVuIHNlcmlhbGlzaW5nIGFuIGVsZW1lbnQgcHJpb3IgdG8gZW5jcnlwdGlvbiwgdGhlIGMxNG4KKwkgKiBjYW5vbmljYWxpc2F0aW9uIHJvdXRpbmVzIGFyZSB1c2VkLiAgQnkgZGVmYXVsdCwgZXhjbHVzaXZlCisJICogYzE0biBpcyB1c2VkLCBob3dldmVyIHRoaXMgY2FuIGJlIHR1cm5lZCBvZmYgdXNpbmcgdGhlCisJICogc2V0RXhjbHVzaXZlQzE0blNlcmlhbGlzYXRpb24gY2FsbC4gIFRoaXMgZnVuY3Rpb24gcmV0dXJucyAKKwkgKiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgYXNzb2NpYXRlZCBmbGFnLgorCSAqCisJICogQHJldHVybnMgVHJ1ZSBpZiBFeGNsdXNpdmUgYzE0biB3aWxsIGJlIHVzZWQsIGZhbHNlIGlmIHN0YW5kYXJkCisJICovCisKKwl2aXJ0dWFsIGJvb2wgZ2V0RXhjbHVzaXZlQzE0blNlcmlhbGlzYXRpb24odm9pZCkgPSAwOworCisJLy9AfQorCisJLyoqIEBuYW1lIFNldHRlciBGdW5jdGlvbnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgU2V0IGRlY3J5cHRpb24ga2V5IGZvciBuZXh0IG9wZXJhdGlvbgorCSAqCisJICogU2V0IHRoZSBwYXNzZWQgaW4ga2V5IGZvciB0aGUgbmV4dCBkZWNyeXB0aW9uL2VuY3J5cHRpb24KKwkgKiBvcGVyYXRpb24uCisJICoKKwkgKiBAcGFyYW0ga2V5IEtleSB0byB1c2UKKwkgKiBAbm90ZSBUaGlzIGZ1bmN0aW9uIHdpbGwgdGFrZSBvd25lcnNoaXAgb2YgdGhlIGtleSBhbmQgZGVsZXRlIGl0IHdoZW4gZG9uZS4KKwkgKi8KKworCXZpcnR1YWwgdm9pZCBzZXRLZXkoWFNFQ0NyeXB0b0tleSAqIGtleSkgPSAwOworCisJLyoqCisJICogXGJyaWVmIFNldCBLZXkgRW5jcnlwdGlvbiBLZXkgZm9yIG5leHQgb3BlcmF0aW9uCisJICoKKwkgKiBTZXQgdGhlIHBhc3NlZCBpbiBrZXkgZm9yIHRoZSBuZXh0IGtleSBkZWNyeXB0aW9uL2VuY3J5cHRpb24KKwkgKiBvcGVyYXRpb24uCisJICoKKwkgKiBAbm90ZSBUaGlzIGtleSB3aWxsIG9ubHkgYmUgdXNlZCB0byBkZWNyeXB0IEVuY3J5cHRlZEtleSBlbGVtZW50cy4KKwkgKiBUbyBzZXQgYSBrZXkgZm9yIGRlY3J5cHRpbmcgYW4gRW5jcnlwdGVkRGF0YSB1c2UgI3NldEtleSBpbnN0ZWFkLgorCSAqCisJICogQHBhcmFtIGtleSBLZXkgdG8gdXNlCisJICogQG5vdGUgVGhpcyBmdW5jdGlvbiB3aWxsIHRha2Ugb3duZXJzaGlwIG9mIHRoZSBrZXkgYW5kIGRlbGV0ZSBpdCB3aGVuIGRvbmUuCisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0S0VLKFhTRUNDcnlwdG9LZXkgKiBrZXkpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBSZWdpc3RlciBhIEtleUluZm9SZXNvbHZlciAKKwkgKgorCSAqIFJlZ2lzdGVycyBhIEtleUluZm9SZXNvbHZlciB0byBiZSB1c2VkIGJ5IHRoZSBjaXBoZXIgd2hlbiAKKwkgKiBpdCBuZWVkcyB0byBmaW5kIGEga2V5IHRvIGJlIHVzZWQgdG8gZGVjcnlwdCBzb21lIGNpcGVyIHRleHQKKwkgKgorCSAqIEBub3RlIFRoZSBsaWJyYXJ5IHdpbGwgdXNlIHRoZSAjY2xvbmUoKSBmdW5jdGlvbiBmcm9tIHRoZSByZXNvbHZlcgorCSAqIHRvIGdldCBhIGNvcHkuICBUaGUgcGFzc2VkIGluIHJlc29sdmVyIHJlbWFpbnMgdGhlIHByb3BlcnR5IG9mCisJICogdGhlIGNhbGxpbmcgZnVuY3Rpb24KKwkgKgorCSAqIEBwYXJhbSByZXNvbHZlciBSZXNvbHZlciB0byBjbG9uZSBhbmQgdXNlIGZvciByZXNvbHZpbmcga2V5cworCSAqCisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0S2V5SW5mb1Jlc29sdmVyKGNvbnN0IFhTRUNLZXlJbmZvUmVzb2x2ZXIgKiByZXNvbHZlcikgPSAwOworCisJLyoqCisJICogXGJyaWVmIFNldCBwcmVmaXggZm9yIFhFTkMgbm9kZXMKKwkgKgorCSAqIFNldCB0aGUgbmFtZXNwYWNlIHByZWZpeCB0aGUgbGlicmFyeSB3aWxsIHVzZSB3aGVuIGNyZWF0aW5nCisJICogbm9kZXMgaW4gdGhlIFhFTkMgbmFtZXNwYWNlCisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0WEVOQ05TUHJlZml4KGNvbnN0IFhNTENoICogcHJlZml4KSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgU2V0IFByZXR0eSBQcmludAorCSAqCisJICogVGhlIHByZXR0eSBwcmludCBmdW5jdGlvbnMgY29udHJvbHMgd2hldGhlciB0aGUgbGlicmFyeSB3aWxsIG91dHB1dAorCSAqIENSL0xGIGFmdGVyIHRoZSBlbGVtZW50cyBpdCBhZGRzIHRvIGEgZG9jdW1lbnQKKwkgKgorCSAqIEJ5IGRlZmF1bHQgdGhlIGxpYnJhcnkgd2lsbCBkbyBwcmV0dHkgcHJpbnRpbmcgKGZsYWcgaXMgdHJ1ZSkKKwkgKgorCSAqIEBwYXJhbSBmbGFnIFZhbHVlIHRvIHNldCBmb3IgUHJldHR5IFByaW50aW5nICh0cnVlID0gZG8gcHJldHR5IHByaW50aW5nKQorCSAqLworCisJdmlydHVhbCB2b2lkIHNldFByZXR0eVByaW50KGJvb2wgZmxhZykgPSAwOworCisJLyoqCisJICogXGJyaWVmIFNldCB3aGV0aGVyIHRoZSBzZXJpYWxpc2F0aW9uIHJvdXRpbmVzIHdpbGwKKwkgKiB1c2UgZXhjbHVzaXZlIG9yIG5vcm1hbCBjYW5vbmljYWxpc2F0aW9uLgorCSAqCisJICogV2hlbiBzZXJpYWxpc2luZyBhbiBlbGVtZW50IHByaW9yIHRvIGVuY3J5cHRpb24sIHRoZSBjMTRuCisJICogY2Fub25pY2FsaXNhdGlvbiByb3V0aW5lcyBhcmUgdXNlZC4gIEJ5IGRlZmF1bHQsIGV4Y2x1c2l2ZQorCSAqIGMxNG4gaXMgdXNlZCwgaG93ZXZlciB0aGlzIGNhbiBiZSB0dXJuZWQgb2ZmIHVzaW5nIHRoZQorCSAqIHNldEV4Y2x1c2l2ZUMxNG5TZXJpYWxpc2F0aW9uIGNhbGwuCisJICoKKwkgKiBAcGFyYW0gZmxhZyBTZXQgZm9yIHRydWUgaWYgRXhjbHVzaXZlIGMxNG4gd2lsbCBiZSB1c2VkLCAKKwkgKiBmYWxzZSBvdGhlcndpc2UKKwkgKi8KKworCXZpcnR1YWwgdm9pZCBzZXRFeGNsdXNpdmVDMTRuU2VyaWFsaXNhdGlvbihib29sIGZsYWcpID0gMDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBDcmVhdGlvbiBhbmQgbG9hZGluZyBGdW5jdGlvbnMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIGEgbmV3IEVuY3J5cHRlZERhdGEgZWxlbWVudAorCSAqCisJICogTWV0aG9kIGZvciBjcmVhdGluZyBhIGJhc2ljIEVuY3J5cHRlZCBEYXRhIGVsZW1lbnQuICBDYW4gYmUgdXNlZAorCSAqIGluIGNhc2VzIHdoZXJlIGFuIGFwcGxpY2F0aW9uIG5lZWRzIHRvIGJ1aWxkIHRoaXMgZnJvbSBzY3JhdGNoLgorCSAqCisJICogSW4gZ2VuZXJhbCwgYXBwbGljYXRpb25zIHNob3VsZCB1c2UgdGhlIGhpZ2hlciBsZXZlbCBtZXRob2RzIHN1Y2gKKwkgKiBhcyAjZW5jcnlwdEVsZW1lbnQgb3IgI2VuY3J5cHRFbGVtZW50Q29udGVudC4KKwkgKgorCSAqIEBub3RlIFRoZSBDaXBoZXIgb2JqZWN0IHdpbGwgdGFrZSBvbiB0aGlzIG5ldyBvYmplY3QgYXMgdGhlIGN1cnJlbnQKKwkgKiBFbmNyeXB0ZWREYXRhIGFuZCBkZWxldGUgYW55IGN1cnJlbnRseSBiZWluZyBoZWxkLgorCSAqCisJICogQHBhcmFtIHR5cGUgU2hvdWxkIHRoaXMgc2V0IHVwIGEgQ2lwaGVyUmVmZXJlbmNlIG9yIGEgQ2lwaGVyVmFsdWUKKwkgKiBAcGFyYW0gYWxnb3JpdGhtIFVSSSBzdHJpbmcgdG8gdXNlIGZvciB0aGUgQWxnb3JpdGhtIGF0dHJpYnV0ZSBpbiBFbmNyeXB0aW9uTWV0aG9kLgorCSAqIFNldCB0byBOVUxMIGZvciBubyBkZWZpbmVkIGFsZ29yaXRobS4KKwkgKiBAcGFyYW0gdmFsdWUgU3RyaW5nIHRvIHNldCB0aGUgY2lwaGVyIGRhdGEgdG8gaWYgdGhlIHR5cGUgaXMgVkFMVUVfVFlQRS4KKwkgKiBmb3IgUkVGRVJFTkNFX1RZUEUgQ2lwaGVyRGF0YSBlbGVtZW50cywgdGhpcyBzaG91bGQgYmUgdGhlIFVSSSB2YWx1ZS4KKwkgKiBAcmV0dXJucyBBbiBYRU5DRW5jcnlwdGVkRGF0YSBvYmplY3QKKwkgKi8KKworCXZpcnR1YWwgWEVOQ0VuY3J5cHRlZERhdGEgKiBjcmVhdGVFbmNyeXB0ZWREYXRhKFhFTkNDaXBoZXJEYXRhOjpYRU5DQ2lwaGVyRGF0YVR5cGUgdHlwZSwKKwkJCQkJCQkJCQkJCQljb25zdCBYTUxDaCAqIGFsZ29yaXRobSwKKwkJCQkJCQkJCQkJCQljb25zdCBYTUxDaCAqIHZhbHVlKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgTG9hZCBhbiBFbmNyeXB0ZWRLZXkgZWxlbWVudAorCSAqCisJICogVGFrZSBhIHBhc3NlZCBpbiBFbmNyeXB0ZWRLZXkgRE9NTm9kZSBhbmQgcmV0dXJuIGEgbG9hZGVkIFhFTkNFbmNyeXB0ZWRLZXkKKwkgKiBvYmplY3QgYmFzZWQgb24gdGhlIERPTU5vZGUgZnJvbSB0aGUgcGFzc2VkIGluIGVsZW1lbnQuCisJICoKKwkgKiBAcGFyYW0ga2V5Tm9kZSBFbGVtZW50IG5vZGUgdG8gbG9hZCBFbmNyeXB0ZWRLZXkgZnJvbQorCSAqIEByZXR1cm5zIEFuIFhFTkNFbmNyeXB0ZWRLZXkgc3RydWN0dXJlIChvd25lZCBieSB0aGUgY2FsbGVyKSBiYXNlZCBvbiB0aGUgCisJICogbm9kZS4KKwkgKi8KKworCXZpcnR1YWwgWEVOQ0VuY3J5cHRlZEtleSAqIGxvYWRFbmNyeXB0ZWRLZXkoCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICoga2V5Tm9kZQorCQkpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBMb2FkIGFuIEVuY3J5cHRlZERhdGEgZWxlbWVudAorCSAqCisJICogVGFrZSBhIHBhc3NlZCBpbiBFbmNyeXB0ZWREYXRhIERPTU5vZGUgYW5kIHJldHVybiBhIGxvYWRlZCBYRU5DRW5jcnlwdGVkRGF0YQorCSAqIG9iamVjdCBiYXNlZCBvbiB0aGUgRE9NTm9kZSBmcm9tIHRoZSBwYXNzZWQgaW4gZWxlbWVudC4KKwkgKgorCSAqIEBub3RlIFRoZSBDaXBoZXIgb2JqZWN0IHdpbGwgdGFrZSBvbiB0aGlzIG5ldyBvYmplY3QgYXMgdGhlIGN1cnJlbnQKKwkgKiBFbmNyeXB0ZWREYXRhIGFuZCBkZWxldGUgYW55IGN1cnJlbnRseSBiZWluZyBoZWxkLgorCSAqCisJICogQHBhcmFtIGRhdGFOb2RlIEVsZW1lbnQgbm9kZSB0byBsb2FkIEVuY3J5cHRlZERhdGEgZnJvbQorCSAqIEByZXR1cm5zIEFuIFhFTkNFbmNyeXB0ZWREYXRhIHN0cnVjdHVyZSAob3duZWQgYnkgdGhlIGNhbGxlcikgYmFzZWQgb24gdGhlIAorCSAqIG5vZGUuCisJICovCisKKwl2aXJ0dWFsIFhFTkNFbmNyeXB0ZWREYXRhICogbG9hZEVuY3J5cHRlZERhdGEoCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogZGF0YU5vZGUKKwkJKSA9IDA7CisKKworCS8vQH0KKworfTsKKworLypcQH0qLworCisjZW5kaWYgLyogWEVOQ0NJUEhFUl9JTkNMVURFICovCisKZGlmZiAtLWdpdCBhL2Mvc3JjL3hlbmMvWEVOQ0NpcGhlckRhdGEuaHBwIGIvYy9zcmMveGVuYy9YRU5DQ2lwaGVyRGF0YS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ1ZWM4MAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hlbmMvWEVOQ0NpcGhlckRhdGEuaHBwCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICogQ29weXJpZ2h0IDIwMDMtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYRU5DQ2lwaGVyRGF0YSA6PSBJbnRlcmZhY2UgZm9yIENpcGhlckRhdGEgZWxlbWVudHMgCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhTRUNDSVBIRVJEQVRBX0lOQ0xVREUKKyNkZWZpbmUgWFNFQ0NJUEhFUkRBVEFfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisKKyNpbmNsdWRlIDx4c2VjL3hlbmMvWEVOQ0NpcGhlclZhbHVlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hlbmMvWEVOQ0NpcGhlclJlZmVyZW5jZS5ocHA+CisKKy8qKgorICogQGluZ3JvdXAgeGVuYworICovCisKKy8qKgorICogQGJyaWVmIEludGVyZmFjZSBkZWZpbml0aW9uIGZvciB0aGUgQ2lwaGVyRGF0YSBvYmplY3QKKyAqCisgKiBUaGUgXDxDaXBoZXJEYXRhXD4gZWxlbWVudCBlaXRoZXIgaG9sZHMgdGhlIGVuY3J5cHRlZCBkYXRhICh2aWEKKyAqIGEgQ2lwaGVyVmFsdWUgZWxlbWVudCkgb3IgYSByZWZlcmVuY2UgdG8gdGhlIGVuY3J5cHRlZCBkYXRhLgorICoKKyAqIFdpdGhpbiB0aGUgbGlicmFyeSwgdGhlIENpcGhlckRhdGEgZWxlbWVudCBjYW4gb25seSBiZSB1c2VkIHRvCisgKiBob2xkIGFuZCByZWFkIHRoZSBlbmNyeXB0ZWQgZGF0YS4gIFRvIGFjdHVhbGx5IGRlY3J5cHQvZW5jcnlwdAorICogZGF0YSwgYW4gWEVOQ0VuY3J5cHRlZFR5cGUgZGVyaXZhdGl2ZSBvYmplY3Qgb2YgWEVOQ0NpcGhlciBvYmplY3QgCisgKiBzaG91bGQgYmUgdXNlZC4KKyAqCisgKiBUaGUgc2NoZW1hIGZvciBDaXBoZXJEYXRhIGlzIGFzIGZvbGxvd3M6CisgKgorICogXHZlcmJhdGltCis8ZWxlbWVudCBuYW1lPSdDaXBoZXJEYXRhJyB0eXBlPSd4ZW5jOkNpcGhlckRhdGFUeXBlJy8+CisgIDxjb21wbGV4VHlwZSBuYW1lPSdDaXBoZXJEYXRhVHlwZSc+CisgICAgIDxjaG9pY2U+CisgICAgICAgPGVsZW1lbnQgbmFtZT0nQ2lwaGVyVmFsdWUnIHR5cGU9J2Jhc2U2NEJpbmFyeScvPgorICAgICAgIDxlbGVtZW50IHJlZj0neGVuYzpDaXBoZXJSZWZlcmVuY2UnLz4KKyAgICAgPC9jaG9pY2U+CisgICA8L2NvbXBsZXhUeXBlPgorXGVuZHZlcmJhdGltCisgKi8KKworCitjbGFzcyBYRU5DQ2lwaGVyRGF0YSB7CisKK3B1YmxpYzoKKworCS8qKgorCSAqIENpcGhlckRhdGFUeXBlCisJICovCisKKwllbnVtIFhFTkNDaXBoZXJEYXRhVHlwZSB7CisKKwkJTk9fVFlQRQkJCT0gMCwgICAgLyoqIE5vdCBTZXQgKi8KKwkJVkFMVUVfVFlQRQkJPSAxLAorCQlSRUZFUkVOQ0VfVFlQRQk9IDIKKworCX07CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworcHJvdGVjdGVkOgorCisJWEVOQ0NpcGhlckRhdGEoKSB7fTsKKworcHVibGljOgorCisJdmlydHVhbCB+WEVOQ0NpcGhlckRhdGEoKSB7fTsKKworCS8qKiBAbmFtZSBHZXQgSW50ZXJmYWNlIE1ldGhvZHMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgRmluZCB0aGUgdHlwZSBvZiBDaXBoZXIgRGF0YSBoZWxkCisJICoKKwkgKiBDaXBoZXJEYXRhIGVsZW1lbnRzIGNhbiBob2xkIGVpdGhlciBhIENpcGhlclZhbHVlIGVsZW1lbnQgKHdob3NlCisJICogdGV4dCBpcyB0aGUgZW5jcnlwdGVkIGRhdGEpIG9yIGEgQ2lwaGVyUmVmZXJlbmNlIGVsZW1lbnQsIHdoZXJlIHRoZQorCSAqIGNvbnRlbnRzIHRlbGwgdGhlIGxpYnJhcnkgaG93IHRvIHJldHJpZXZlIHRoZSBlbmNyeXB0ZWQgZGF0YSBmcm9tCisJICogZWxzZXdoZXJlLgorCSAqCisJICogQHJldHVybnMgVGhlIHR5cGUgb2YgQ2lwaGVyRGF0YQorCSAqLworCisJdmlydHVhbCBYRU5DQ2lwaGVyRGF0YVR5cGUgZ2V0Q2lwaGVyRGF0YVR5cGUodm9pZCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgQ2lwaGVyVmFsdWUgZWxlbWVudAorCSAqCisJICogQHJldHVybnMgdGhlIENpcGhlclZhbHVlIGVsZW1lbnQsIG9yIE5VTEwgaWYgb25lIGlzIG5vdCBoZWxkCisJICovCisKKwl2aXJ0dWFsIFhFTkNDaXBoZXJWYWx1ZSAqIGdldENpcGhlclZhbHVlKHZvaWQpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIENpcGhlclJlZmVyZW5jZSBlbGVtZW50CisJICoKKwkgKiBAcmV0dXJucyB0aGUgQ2lwaGVyUmVmZXJlbmNlIGVsZW1lbnQsIG9yIE5VTEwgaWYgb25lIGlzIG5vdCBoZWxkCisJICovCisKKwl2aXJ0dWFsIFhFTkNDaXBoZXJSZWZlcmVuY2UgKiBnZXRDaXBoZXJSZWZlcmVuY2Uodm9pZCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgRE9NIE5vZGUgb2YgdGhpcyBzdHJ1Y3R1cmUKKwkgKgorCSAqIEByZXR1cm5zIHRoZSBET00gTm9kZSByZXByZXNlbnRpbmcgdGhlIFw8Q2lwaGVyRGF0YVw+IGVsZW1lbnQKKwkgKi8KKworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBnZXRFbGVtZW50KHZvaWQpID0gMDsKKworCS8vQH0KKworcHJpdmF0ZToKKworCS8vIFVuaW1wbGVtZW50ZWQKKwlYRU5DQ2lwaGVyRGF0YShjb25zdCBYRU5DQ2lwaGVyRGF0YSAmKTsKKwlYRU5DQ2lwaGVyRGF0YSAmIG9wZXJhdG9yID0gKGNvbnN0IFhFTkNDaXBoZXJEYXRhICYpOworCit9OworCisjZW5kaWYgLyogWEVOQ0NJUEhFUkRBVEFfSU5DTFVERSAqLworCmRpZmYgLS1naXQgYS9jL3NyYy94ZW5jL1hFTkNDaXBoZXJSZWZlcmVuY2UuaHBwIGIvYy9zcmMveGVuYy9YRU5DQ2lwaGVyUmVmZXJlbmNlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWQ0YjNiCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGVuYy9YRU5DQ2lwaGVyUmVmZXJlbmNlLmhwcApAQCAtMCwwICsxLDIwMSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAzLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEVOQ0NpcGhlclJlZmVyZW5jZSA6PSBJbnRlcmZhY2UgZGVmaW5pdGlvbiBmb3IgQ2lwaGVyUmVmZXJlbmNlIGVsZW1lbnQKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEVOQ0NJUEhFUlJFRkVSRU5DRV9JTkNMVURFCisjZGVmaW5lIFhFTkNDSVBIRVJSRUZFUkVOQ0VfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdDb25zdGFudHMuaHBwPgorCitjbGFzcyBEU0lHVHJhbnNmb3JtTGlzdDsKK2NsYXNzIERTSUdUcmFuc2Zvcm1CYXNlNjQ7CitjbGFzcyBEU0lHVHJhbnNmb3JtWFBhdGg7CitjbGFzcyBEU0lHVHJhbnNmb3JtWFBhdGhGaWx0ZXI7CitjbGFzcyBEU0lHVHJhbnNmb3JtWFNMOworY2xhc3MgRFNJR1RyYW5zZm9ybUMxNG47CisKK1hTRUNfREVDTEFSRV9YRVJDRVNfQ0xBU1MoRE9NRWxlbWVudCk7CitYU0VDX0RFQ0xBUkVfWEVSQ0VTX0NMQVNTKERPTU5vZGUpOworCisvKioKKyAqIEBpbmdyb3VwIHhlbmMKKyAqLworCisvKioKKyAqIEBicmllZiBJbnRlcmZhY2UgZGVmaW5pdGlvbiBmb3IgdGhlIENpcGhlclJlZmVyZW5jZSBvYmplY3QKKyAqCisgKiBUaGUgXDxDaXBoZXJSZWZlcmVuY2VcPiBlbGVtZW50IHByb3ZpZGVzIHRoZSBpbmZvcm1hdGlvbiBuZWNlc3NhcnkgZm9yCisgKiBhbiBhcHBsaWNhdGlvbiB0byBmaW5kIHRoZSBkYXRhIGJlaW5nIHJlZmVyZW5jZWQuICBMaWtlIGEgUmVmZXJlbmNlIGluCisgKiBYTUwtRFNJRywgdGhlIENpcGhlclJlZmVyZW5jZSBzdGFydHMgd2l0aCBhIFVSSSB0aGF0IHByb3ZpZGVzIHRoZSBiYXNlCisgKiBsb2NhdGlvbiBvZiB0aGUgZGF0YSBpbiBxdWVzdGlvbi4KKyAqCisgKiBBIGxpc3Qgb2YgdHJhbnNmb3JtcyBtYXkgdGhlbiBiZSBwcm92aWRlZCwgd2hpY2ggdGhlIGxpYnJhcnkgd2lsbCBhcHBseQorICogdG8gdGhlIGRhdGEgZm91bmQgYXQgdGhlIHByb3ZpZGVkIFVSSS4gIEl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlIHJlc3VsdCBvZgorICogdGhlc2UgdHJhbnNmb3JtcyB3aWxsIGJlIHRoZSByYXcgZW5jcnlwdGVkIG9jdGV0cywKKyAqCisgKiBUaGUgc2NoZW1hIGZvciBDaXBoZXJSZWZlcmVuY2UgaXMgYXMgZm9sbG93czoKKyAqCisgKiBcdmVyYmF0aW0KKyAgPGVsZW1lbnQgbmFtZT0nQ2lwaGVyUmVmZXJlbmNlJyB0eXBlPSd4ZW5jOkNpcGhlclJlZmVyZW5jZVR5cGUnLz4KKyAgIDxjb21wbGV4VHlwZSBuYW1lPSdDaXBoZXJSZWZlcmVuY2VUeXBlJz4KKyAgICAgICA8c2VxdWVuY2U+CisgICAgICAgICA8ZWxlbWVudCBuYW1lPSdUcmFuc2Zvcm1zJyB0eXBlPSd4ZW5jOlRyYW5zZm9ybXNUeXBlJyBtaW5PY2N1cnM9JzAnLz4KKyAgICAgICA8L3NlcXVlbmNlPgorICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0nVVJJJyB0eXBlPSdhbnlVUkknIHVzZT0ncmVxdWlyZWQnLz4KKyAgIDwvY29tcGxleFR5cGU+CisKKyAgICA8Y29tcGxleFR5cGUgbmFtZT0nVHJhbnNmb3Jtc1R5cGUnPgorICAgICAgIDxzZXF1ZW5jZT4KKyAgICAgICAgIDxlbGVtZW50IHJlZj0nZHM6VHJhbnNmb3JtJyBtYXhPY2N1cnM9J3VuYm91bmRlZCcvPiAKKyAgICAgICA8L3NlcXVlbmNlPgorICAgICA8L2NvbXBsZXhUeXBlPgorXGVuZHZlcmJhdGltCisgKi8KKworCitjbGFzcyBYRU5DQ2lwaGVyUmVmZXJlbmNlIHsKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCitwcm90ZWN0ZWQ6CisKKwlYRU5DQ2lwaGVyUmVmZXJlbmNlKCkge307CisKK3B1YmxpYzoKKworCXZpcnR1YWwgflhFTkNDaXBoZXJSZWZlcmVuY2UoKSB7fTsKKworCS8qKiBAbmFtZSBHZXQgSW50ZXJmYWNlIE1ldGhvZHMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgT2J0YWluIHRoZSB0cmFuc2Zvcm1zIGZvciB0aGlzIENpcGhlclJlZmVyZW5jZQorCSAqCisJICogR2V0IHRoZSBEU0lHVHJhbnNmb3JtTGlzdCBvYmplY3QgZm9yIHRoaXMgQ2lwaGVyUmVmZXJlbmNlLiAgQ2FuIGJlIHVzZWQgdG8KKwkgKiBvYnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRyYW5zZm9ybXMgYW5kIGFsc28gY2hhbmdlIHRoZSB0aGUgdHJhbnNmb3JtcworCSAqLworCisJdmlydHVhbCBEU0lHVHJhbnNmb3JtTGlzdCAqIGdldFRyYW5zZm9ybXModm9pZCkgY29uc3QgPSAwOworCisJLyoqCisJICogXGJyaWVmIE9idGFpbiB0aGUgVVJJIGZvciB0aGlzIENpcGhlclJlZmVyZW5jZQorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBVUkkgc3RyaW5nIGZvciB0aGlzIENpcGhlclJlZmVyZW5jZQorCSAqLworCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldFVSSSAodm9pZCkgY29uc3QgPSAwOworCQorCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIERPTSBOb2RlIG9mIHRoaXMgc3RydWN0dXJlCisJICoKKwkgKiBAcmV0dXJucyB0aGUgRE9NIE5vZGUgcmVwcmVzZW50aW5nIHRoZSBcPENpcGhlclZhbHVlXD4gZWxlbWVudAorCSAqLworCisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGdldEVsZW1lbnQodm9pZCkgY29uc3QgPSAwOworCisJLy9AfQorCisJLyoqIEBuYW1lIFNldCBJbnRlcmZhY2UgTWV0aG9kcyAqLworCS8vQHsKKwkKKwkvKioKKwkgKiBcYnJpZWYgQXBwZW5kIGEgQmFzZTY0IFRyYW5zZm9ybSB0byB0aGUgUmVmZXJlbmNlLgorCSAqCisJICogQHJldHVybnMgVGhlIG5ld2x5IGNyZWF0ZWQgQmFzZTY0IHRyYW5zZm9ybS4KKwkgKiBAdG9kbyBNb3ZlIHRvIERTSUdUcmFuc2Zvcm1MaXN0IHJhdGhlciB0aGFuIHJlLWltcGxlbWVudCBpbiBib3RoIERTSUdSZWZlcmVuY2UKKwkgKiBhbmQgWEVOQ0NpcGhlclJlZmVyZW5jZQorCSAqLworCisJdmlydHVhbCBEU0lHVHJhbnNmb3JtQmFzZTY0ICogYXBwZW5kQmFzZTY0VHJhbnNmb3JtKCkgPSAwOworCQorCS8qKgorCSAqIFxicmllZiBBcHBlbmQgYW4gWFBhdGggVHJhbnNmb3JtIHRvIHRoZSBSZWZlcmVuY2UuCisJICoKKwkgKiA8cD4gQXBwZW5kIGFuIFhQYXRoIHRyYW5zZm9ybS4gIE5hbWVzcGFjZXMgY2FuIGJlIGFkZGVkIHRvIHRoZSAKKwkgKiB0cmFuc2Zvcm0gZGlyZWN0bHkgdXNpbmcgdGhlIHJldHVybmVkIDxlbT5EU0lHVHJhbnNmb3JtWFBhdGg8L2VtPgorCSAqIHN0cnVjdHVyZTwvcD4KKwkgKgorCSAqIEBwYXJhbSBleHByIFRoZSBYUGF0aCBleHByZXNzaW9uIHRvIGJlIHBsYWNlZCBpbiB0aGUgdHJhbnNmb3JtLgorCSAqIEByZXR1cm5zIFRoZSBuZXdseSBjcmVhdGVkIFhQYXRoIHRyYW5zZm9ybQorCSAqIEB0b2RvIE1vdmUgdG8gRFNJR1RyYW5zZm9ybUxpc3QgcmF0aGVyIHRoYW4gcmUtaW1wbGVtZW50IGluIGJvdGggRFNJR1JlZmVyZW5jZQorCSAqIGFuZCBYRU5DQ2lwaGVyUmVmZXJlbmNlCisJICovCisKKwl2aXJ0dWFsIERTSUdUcmFuc2Zvcm1YUGF0aCAqIGFwcGVuZFhQYXRoVHJhbnNmb3JtKGNvbnN0IGNoYXIgKiBleHByKSA9IDA7CisJCisJLyoqCisJICogXGJyaWVmIEFwcGVuZCBhbiBYUGF0aC1GaWx0ZXIyIFRyYW5zZm9ybSB0byB0aGUgUmVmZXJlbmNlLgorCSAqCisJICogVGhlIHJldHVybmVkIERTSUdUcmFuc2Zvcm1YUGF0aEZpbHRlciB3aWxsIGhhdmUgbm8gYWN0dWFsIGZpbHRlcgorCSAqIGV4cHJlc3Npb25zIGxvYWRlZCwgYnV0IGNhbGxzIGNhbiBiZSBtYWRlIHRvCisJICogRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyOjphcHBlbmRUcmFuc2Zvcm0gdG8gYWRkIHRoZW0uCisJICoKKwkgKiBAcmV0dXJucyBUaGUgbmV3bHkgY3JlYXRlZCBYUGF0aCBGaWx0ZXIgdHJhbnNmb3JtCisJICogQHRvZG8gTW92ZSB0byBEU0lHVHJhbnNmb3JtTGlzdCByYXRoZXIgdGhhbiByZS1pbXBsZW1lbnQgaW4gYm90aCBEU0lHUmVmZXJlbmNlCisJICogYW5kIFhFTkNDaXBoZXJSZWZlcmVuY2UKKwkgKi8KKworCXZpcnR1YWwgRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyICogYXBwZW5kWFBhdGhGaWx0ZXJUcmFuc2Zvcm0odm9pZCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIEFwcGVuZCBhbiBYU0xUIFRyYW5zZm9ybSB0byB0aGUgUmVmZXJlbmNlLgorCSAqCisJICogPHA+VGhlIGNhbGxlciBtdXN0IGhhdmUgYWxyZWFkeSBjcmVhdGUgdGhlIHN0eWxlc2hlZXQgYW5kIHR1cm5lZCBpdCBpbnRvCisJICogYSBET00gc3RydWN0dXJlIHRoYXQgaXMgcGFzc2VkIGluIGFzIHRoZSBzdHlsZXNoZWV0IHBhcmFtZXRlci48L3A+CisJICoKKwkgKiBAcGFyYW0gc3R5bGVzaGVldCBUaGUgc3R5bGVzaGVldCBET00gc3RydWN0dXJlIHRvIGJlIHBsYWNlZCBpbiB0aGUgcmVmZXJlbmNlLgorCSAqIEByZXR1cm5zIFRoZSBuZXdseSBjcmVhdGUgWFNMVCB0cmFuc2Zvcm0KKwkgKiBAdG9kbyBNb3ZlIHRvIERTSUdUcmFuc2Zvcm1MaXN0IHJhdGhlciB0aGFuIHJlLWltcGxlbWVudCBpbiBib3RoIERTSUdSZWZlcmVuY2UKKwkgKiBhbmQgWEVOQ0NpcGhlclJlZmVyZW5jZQorCSAqLworCisJdmlydHVhbCBEU0lHVHJhbnNmb3JtWFNMICogYXBwZW5kWFNMVHJhbnNmb3JtKFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICpzdHlsZXNoZWV0KSA9IDA7CisJCisJLyoqCisJICogXGJyaWVmIEFwcGVuZCBhIENhbm9uaWNhbGl6YXRpb24gVHJhbnNmb3JtIHRvIHRoZSBSZWZlcmVuY2UuCisJICoKKwkgKiBAcGFyYW0gY20gVGhlIHR5cGUgb2YgY2Fub25pY2FsaXNhdGlvbiB0byBiZSBhZGRlZC4KKwkgKiBAcmV0dXJucyBUaGUgbmV3bHkgY3JlYXRlIGNhbm9uaWNhbGlzYXRpb24gdHJhbnNmb3JtCisJICogQHRvZG8gTW92ZSB0byBEU0lHVHJhbnNmb3JtTGlzdCByYXRoZXIgdGhhbiByZS1pbXBsZW1lbnQgaW4gYm90aCBEU0lHUmVmZXJlbmNlCisJICogYW5kIFhFTkNDaXBoZXJSZWZlcmVuY2UKKwkgKi8KKworCXZpcnR1YWwgRFNJR1RyYW5zZm9ybUMxNG4gKiBhcHBlbmRDYW5vbmljYWxpemF0aW9uVHJhbnNmb3JtKGNhbm9uaWNhbGl6YXRpb25NZXRob2QgY20pID0gMDsKKworCS8vQH0KKworcHJpdmF0ZToKKworCS8vIFVuaW1wbGVtZW50ZWQKKwlYRU5DQ2lwaGVyUmVmZXJlbmNlKGNvbnN0IFhFTkNDaXBoZXJSZWZlcmVuY2UgJik7CisJWEVOQ0NpcGhlclJlZmVyZW5jZSAmIG9wZXJhdG9yID0gKGNvbnN0IFhFTkNDaXBoZXJSZWZlcmVuY2UgJik7CisKK307CisKKyNlbmRpZiAvKiBYRU5DQ0lQSEVSUkVGRVJFTkNFX0lOQ0xVREUgKi8KKwpkaWZmIC0tZ2l0IGEvYy9zcmMveGVuYy9YRU5DQ2lwaGVyVmFsdWUuaHBwIGIvYy9zcmMveGVuYy9YRU5DQ2lwaGVyVmFsdWUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjYzJiMDkKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94ZW5jL1hFTkNDaXBoZXJWYWx1ZS5ocHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMy0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhFTkNDaXBoZXJWYWx1ZSA6PSBJbnRlcmZhY2UgZGVmaW5pdGlvbiBmb3IgQ2lwaGVyVmFsdWUgZWxlbWVudAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYRU5DQ0lQSEVSVkFMVUVfSU5DTFVERQorI2RlZmluZSBYRU5DQ0lQSEVSVkFMVUVfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisKK1hTRUNfREVDTEFSRV9YRVJDRVNfQ0xBU1MoRE9NRWxlbWVudCk7CisKKy8qKgorICogQGluZ3JvdXAgeGVuYworICovCisKKy8qKgorICogQGJyaWVmIEludGVyZmFjZSBkZWZpbml0aW9uIGZvciB0aGUgQ2lwaGVyVmFsdWUgb2JqZWN0CisgKgorICogVGhlIFw8Q2lwaGVyVmFsdWVcPiBlbGVtZW50IGhvbGRzIHRoZSBiYXNlNjQgZW5jb2RlZCwgZW5jcnlwdGVkIGRhdGEuCisgKiBUaGlzIGlzIGEgdmVyeSBzaW1wbGUgY2xhc3MgdGhhdCBhY3RzIHB1cmVseSBhcyBhIGhvbGRlciBvZiBkYXRhLgorICoKKyAqLworCisKK2NsYXNzIFhFTkNDaXBoZXJWYWx1ZSB7CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworcHJvdGVjdGVkOgorCisJWEVOQ0NpcGhlclZhbHVlKCkge307CisKK3B1YmxpYzoKKworCXZpcnR1YWwgflhFTkNDaXBoZXJWYWx1ZSgpIHt9OworCisJLyoqIEBuYW1lIEdldCBJbnRlcmZhY2UgTWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIGVuY3J5cHRlZCBpbmZvcm1hdGlvbgorCSAqCisJICogQ2lwaGVyVmFsdWUgbm9kZXMgY29udGFpbiBhIHRleHQgY2hpbGQgdGhhdCBob2xkcyB0aGUgYmFzZTY0IGVuY29kZWQKKwkgKiBjaXBoZXIgdGV4dCB0aGF0IG5lZWRzIHRvIGJlIGRlY3J5cHRlZC4gIFRoaXMgY2FsbCB3aWxsIHJldHVybiB0aGUKKwkgKiBiYXNlNjQgZW5jb2RlZCBzdHJpbmcuCisJICoKKwkgKiBAcmV0dXJucyBUaGUgRW5jcnlwdGVkIGluZm9ybWF0aW9uIGluIGEgYmFzZTY0IGVuY29kZWQgc3RyaW5nCisJICovCisKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0Q2lwaGVyU3RyaW5nKHZvaWQpIGNvbnN0ID0gMDsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIERPTSBOb2RlIG9mIHRoaXMgc3RydWN0dXJlCisJICoKKwkgKiBAcmV0dXJucyB0aGUgRE9NIE5vZGUgcmVwcmVzZW50aW5nIHRoZSBcPENpcGhlclZhbHVlXD4gZWxlbWVudAorCSAqLworCisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGdldEVsZW1lbnQodm9pZCkgY29uc3QgPSAwOworCisJLy9AfQorCisJLyoqIEBuYW1lIFNldCBJbnRlcmZhY2UgTWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBTZXQgdGhlIGVuY3J5cHRlZCB2YWx1ZQorCSAqCisJICogU2V0cyB0aGUgYmFzZTY0IGVuY29kZWQgc3RyaW5nIGhlbGQgaW4gdGhlIENpcGhlclZhbHVlLgorCSAqCisJICogQG5vdGUgVGhpcyBzaG91bGQgbm90IG5vcm1hbGx5IGJlIGNhbGxlZCBkaXJlY3RseSAtIHVzZSB0aGUgWEVOQ0NpcGhlcgorCSAqIGludGVyZmFjZSBmb3Igbm9ybWFsIG9wZXJhdGlvbgorCSAqCisJICogQHBhcmFtIHZhbHVlIFRoZSBzdHJpbmcgdG8gc2V0CisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0Q2lwaGVyU3RyaW5nKGNvbnN0IFhNTENoICogdmFsdWUpID0gMDsKKworCS8vQH0KKworcHJpdmF0ZToKKworCS8vIFVuaW1wbGVtZW50ZWQKKwlYRU5DQ2lwaGVyVmFsdWUoY29uc3QgWEVOQ0NpcGhlclZhbHVlICYpOworCVhFTkNDaXBoZXJWYWx1ZSAmIG9wZXJhdG9yID0gKGNvbnN0IFhFTkNDaXBoZXJWYWx1ZSAmKTsKKworfTsKKworI2VuZGlmIC8qIFhFTkNDSVBIRVJWQUxVRV9JTkNMVURFICovCisKZGlmZiAtLWdpdCBhL2Mvc3JjL3hlbmMvWEVOQ0VuY3J5cHRlZERhdGEuaHBwIGIvYy9zcmMveGVuYy9YRU5DRW5jcnlwdGVkRGF0YS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDUwYjU2NwotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hlbmMvWEVOQ0VuY3J5cHRlZERhdGEuaHBwCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMy0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhFTkNFbmNyeXB0ZWREYXRhIDo9IERlZmluaXRpb24gZm9yIGhvbGRlciBvYmplY3QgZm9yIEVuY3J5cHRlZERhdGEgCisgKiBlbGVtZW50CisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhFTkNFTkNSWVBURUREQVRBX0lOQ0xVREUKKyNkZWZpbmUgWEVOQ0VOQ1JZUFRFRERBVEFfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy94ZW5jL1hFTkNFbmNyeXB0ZWRUeXBlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hlbmMvWEVOQ0NpcGhlckRhdGEuaHBwPgorCisvKioKKyAqIEBpbmdyb3VwIHhlbmMKKyAqLworCisvKioKKyAqIEBicmllZiBJbnRlcmZhY2UgZGVmaW5pdGlvbiBmb3IgdGhlIEVuY3J5cHRlZERhdGEgb2JqZWN0CisgKgorICogVGhlIFw8RW5jcnlwdGVkRGF0YVw+IGVsZW1lbnQgaXMgYW4gYWJzdHJhY3QgdHlwZSB3aGljaCBidWlsZHMKKyAqIG9uIHRoZSBFbmNyeXB0ZWRUeXBlIGVsZW1lbnQgZm9yIGVuY3J5cHRlZCBkYXRhIChhcyBvcHBvc2VkIHRvCisgKiBlbmNyeXB0ZWQga2V5cykuCisgKgorICogSW4gZ2VuZXJhbCwgdGhpcyBjbGFzcyBzaG91bGQgbm90IGJlIHVzZWQgZGlyZWN0bHkuICBGb3IgbW9zdAorICogYXBwbGljYXRpb25zLCBjYWxsZXJzIHdpbGwgd2FudCB0byB1c2UgdGhlIFhFTkNDaXBoZXIgY2xhc3MKKyAqIGluc3RlYWQuCisgKgorICogVGhlIHNjaGVtYSBmb3IgRW5jcnlwdGVkRGF0YSBpcyBhcyBmb2xsb3dzOgorICogCisgKiBcdmVyYmF0aW0KKyAgPGVsZW1lbnQgbmFtZT0nRW5jcnlwdGVkRGF0YScgdHlwZT0neGVuYzpFbmNyeXB0ZWREYXRhVHlwZScvPgorICA8Y29tcGxleFR5cGUgbmFtZT0nRW5jcnlwdGVkRGF0YVR5cGUnPgorICAgIDxjb21wbGV4Q29udGVudD4KKyAgICAgPGV4dGVuc2lvbiBiYXNlPSd4ZW5jOkVuY3J5cHRlZFR5cGUnPgorICAgICA8L2V4dGVuc2lvbj4KKyAgICA8L2NvbXBsZXhDb250ZW50PgorICA8L2NvbXBsZXhUeXBlPgorXGVuZHZlcmJhdGltCisgKi8KKworCitjbGFzcyBYRU5DRW5jcnlwdGVkRGF0YSA6IHB1YmxpYyBYRU5DRW5jcnlwdGVkVHlwZSB7CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworcHJvdGVjdGVkOgorCisJWEVOQ0VuY3J5cHRlZERhdGEoKSB7fTsKKworcHVibGljOgorCisJdmlydHVhbCB+WEVOQ0VuY3J5cHRlZERhdGEoKSB7fTsKKworCS8qKiBAbmFtZSBHZXQgSW50ZXJmYWNlIE1ldGhvZHMgKi8KKwkvL0B7CisKKworCS8vQH0KKworcHJpdmF0ZToKKworCS8vIFVuaW1wbGVtZW50ZWQKKwlYRU5DRW5jcnlwdGVkRGF0YShjb25zdCBYRU5DRW5jcnlwdGVkRGF0YSAmKTsKKwlYRU5DRW5jcnlwdGVkRGF0YSAmIG9wZXJhdG9yID0gKGNvbnN0IFhFTkNFbmNyeXB0ZWREYXRhICYpOworCisKK307CisKKyNlbmRpZiAvKiBYRU5DRU5DUllQVEVEREFUQV9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy94ZW5jL1hFTkNFbmNyeXB0ZWRLZXkuaHBwIGIvYy9zcmMveGVuYy9YRU5DRW5jcnlwdGVkS2V5LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDcyMmY2Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGVuYy9YRU5DRW5jcnlwdGVkS2V5LmhwcApAQCAtMCwwICsxLDE2NSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAzLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEVOQ0VuY3J5cHRlZEtleSA6PSBEZWZpbml0aW9uIGZvciBob2xkZXIgb2JqZWN0IGZvciBFbmNyeXB0ZWRLZXkgCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhFTkNFTkNSWVBURURLRVlfSU5DTFVERQorI2RlZmluZSBYRU5DRU5DUllQVEVES0VZX0lOQ0xVREUKKworLy8gWFNFQyBJbmNsdWRlcworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHS2V5SW5mby5ocHA+CisjaW5jbHVkZSA8eHNlYy94ZW5jL1hFTkNFbmNyeXB0ZWRUeXBlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hlbmMvWEVOQ0NpcGhlckRhdGEuaHBwPgorCisvKioKKyAqIEBpbmdyb3VwIHhlbmMKKyAqLworCisvKioKKyAqIEBicmllZiBJbnRlcmZhY2UgZGVmaW5pdGlvbiBmb3IgdGhlIEVuY3J5cHRlZEtleSBvYmplY3QKKyAqCisgKiBUaGUgXDxFbmNyeXB0ZWRLZXlcPiBlbGVtZW50IGlzIGFuIGFic3RyYWN0IHR5cGUgd2hpY2ggYnVpbGRzCisgKiBvbiB0aGUgRW5jcnlwdGVkVHlwZSBlbGVtZW50IGZvciBlbmNyeXB0ZWQgZGF0YSAoYXMgb3Bwb3NlZCB0bworICogZW5jcnlwdGVkIGRhdGEpLgorICoKKyAqIEluIGdlbmVyYWwsIHRoaXMgY2xhc3Mgc2hvdWxkIG5vdCBiZSB1c2VkIGRpcmVjdGx5LiAgRm9yIG1vc3QKKyAqIGFwcGxpY2F0aW9ucywgY2FsbGVycyB3aWxsIHdhbnQgdG8gdXNlIHRoZSBYRU5DQ2lwaGVyIGNsYXNzCisgKiBpbnN0ZWFkLgorICoKKyAqIFRoZSBzY2hlbWEgZGVmaW5pdGlvbiBmb3IgRW5jcnlwdGVkS2V5IGlzIGFzIGZvbGxvd3M6CisgKgorICogXHZlcmJhdGltCisgIDxlbGVtZW50IG5hbWU9J0VuY3J5cHRlZEtleScgdHlwZT0neGVuYzpFbmNyeXB0ZWRLZXlUeXBlJy8+CisgIDxjb21wbGV4VHlwZSBuYW1lPSdFbmNyeXB0ZWRLZXlUeXBlJz4KKyAgICA8Y29tcGxleENvbnRlbnQ+CisgICAgICA8ZXh0ZW5zaW9uIGJhc2U9J3hlbmM6RW5jcnlwdGVkVHlwZSc+CisgICAgICAgIDxzZXF1ZW5jZT4KKyAgICAgICAgICA8ZWxlbWVudCByZWY9J3hlbmM6UmVmZXJlbmNlTGlzdCcgbWluT2NjdXJzPScwJy8+CisgICAgICAgICAgPGVsZW1lbnQgbmFtZT0nQ2FycmllZEtleU5hbWUnIHR5cGU9J3N0cmluZycgbWluT2NjdXJzPScwJy8+CisgICAgICAgIDwvc2VxdWVuY2U+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0nUmVjaXBpZW50JyB0eXBlPSdzdHJpbmcnIHVzZT0nb3B0aW9uYWwnLz4KKyAgICAgIDwvZXh0ZW5zaW9uPgorICAgIDwvY29tcGxleENvbnRlbnQ+ICAgCisgIDwvY29tcGxleFR5cGU+CitcZW5kdmVyYmF0aW0KKyAqLworCisKK2NsYXNzIFhFTkNFbmNyeXB0ZWRLZXkgOiBwdWJsaWMgWEVOQ0VuY3J5cHRlZFR5cGUsIHB1YmxpYyBEU0lHS2V5SW5mbyB7CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworcHJvdGVjdGVkOgorCisJLy8gQmVjYXVzZSB3ZSBpbmhlcml0IGZyb20gS2V5SW5mbywgd2UgbmVlZCB0byBpbXBsZW1lbnQgYSBzbGlnaHRseSBkaWZmZXJlbnQgCisJLy8gY29uc3RydWN0b3IuCisKKwlYRU5DRW5jcnlwdGVkS2V5KGNvbnN0IFhTRUNFbnYgKiBlbnYpIDogRFNJR0tleUluZm8oZW52KSB7fTsKKworcHVibGljOgorCisJdmlydHVhbCB+WEVOQ0VuY3J5cHRlZEtleSgpIHt9OworCisJLyoqIEBuYW1lIEVuY3J5cHRlZEtleSBTcGVjaWZpYyBHZXR0ZXIgTWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIENhcnJpZWRLZXlOYW1lCisJICoKKwkgKiBFbmNyeXB0ZWRLZXkgZWxlbWVudHMgTUFZIGhhdmUgYSBDYXJyaWVkS2V5TmFtZSBlbGVtZW50IHRoYXQgbGlua3MKKwkgKiB0aGUgRW5jcnlwdGVkS2V5IHRvIGEgS2V5TmFtZSBLZXlJbmZvIGVsZW1lbnQgaW4gYW5vdGhlciBFbmNyeXB0ZWRLZXkKKwkgKiBvciBFbmNyeXB0ZWREYXRhIGVsZW1lbnQuCisJICogCisJICogVGhpcyBtZXRob2QgYWxsb3dzIGFwcGxpY2F0aW9ucyB0byByZXRyaWV2ZSB0aGUgQ2FycmllZCBLZXkgTmFtZSBmb3IKKwkgKiB0aGUgcGFydGljdWxhciBFbmNyeXB0ZWRLZXkKKwkgKgorCSAqIEByZXR1cm5zIEEgcG9pbnRlciAob3duZWQgYnkgdGhlIGxpYnJhcnkpIHRvIHRoZSBDYXJyaWVkS2V5TmFtZSBzdHJpbmcgCisJICogKG9yIE5VTEwgaWYgbm9uZSkKKwkgKi8KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRDYXJyaWVkS2V5TmFtZSh2b2lkKSBjb25zdCA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBSZWNpcGllbnQgbmFtZQorCSAqCisJICogRW5jcnlwdGVkS2V5IGVsZW1lbnRzIE1BWSBoYXZlIGEgUmVjaXBpZW50IEF0dHJpYnV0ZSBvbiB0aGUgbWFpbgorCSAqIEVuY3J5cHRlZEtleSBlbGVtZW50IHRoYXQgcHJvdmlkZSBhIGhpbnQgdG8gdGhlIGFwcGxpY2F0aW9uIGFzIHRvIHdobworCSAqIHRoZSByZWNpcGllbnQgb2YgdGhlIGtleSBpcy4KKwkgKgorCSAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhpcyBzdHJpbmcgaW4gY2FzZXMgd2hlcmUgaXQgaGFzIGJlZW4gcHJvdmlkZWQKKwkgKgorCSAqIEByZXR1cm5zIEEgcG9pbnRlciAob3duZWQgYnkgdGhlIGxpYnJhcnkpIHRvIHRoZSBSZWNpcGllbnQgc3RyaW5nCisJICogKG9yIE5VTEwgaWYgbm9uZSBwcm92aWRlZCkuCisJICovCisKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0UmVjaXBpZW50KHZvaWQpIGNvbnN0ID0gMDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBFbmNyeXB0ZWRLZXkgU3BlY2lmaWMgU2V0dGVyIE1ldGhvZHMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgU2V0IHRoZSBDYXJyaWVkS2V5TmFtZQorCSAqCisJICogRW5jcnlwdGVkS2V5IGVsZW1lbnRzIE1BWSBoYXZlIGEgQ2FycmllZEtleU5hbWUgZWxlbWVudCB0aGF0IGxpbmtzCisJICogdGhlIEVuY3J5cHRlZEtleSB0byBhIEtleU5hbWUgS2V5SW5mbyBlbGVtZW50IGluIGFub3RoZXIgRW5jcnlwdGVkS2V5CisJICogb3IgRW5jcnlwdGVkRGF0YSBlbGVtZW50LgorCSAqIAorCSAqIFRoaXMgbWV0aG9kIGFsbG93cyBhcHBsaWNhdGlvbnMgdG8gc2V0IHRoZSBDYXJyaWVkIEtleSBOYW1lIGZvcgorCSAqIHRoZSBwYXJ0aWN1bGFyIEVuY3J5cHRlZEtleQorCSAqCisJICogQHBhcmFtIG5hbWUgU3RyaW5nIHRvIHNldCBpbiB0aGUgQ2FycmllZEtleU5hbWUgZWxlbWVudAorCSAqLworCisJdmlydHVhbCB2b2lkIHNldENhcnJpZWRLZXlOYW1lKGNvbnN0IFhNTENoICogbmFtZSkgPSAwOworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUgUmVjaXBpZW50IG5hbWUKKwkgKgorCSAqIEVuY3J5cHRlZEtleSBlbGVtZW50cyBNQVkgaGF2ZSBhIFJlY2lwaWVudCBBdHRyaWJ1dGUgb24gdGhlIG1haW4KKwkgKiBFbmNyeXB0ZWRLZXkgZWxlbWVudCB0aGF0IHByb3ZpZGUgYSBoaW50IHRvIHRoZSBhcHBsaWNhdGlvbiBhcyB0byB3aG8KKwkgKiB0aGUgcmVjaXBpZW50IG9mIHRoZSBrZXkgaXMuCisJICoKKwkgKiBUaGlzIG1ldGhvZCBzZXRzIHRoZSBSZWNpcGllbnQgc3RyaW5nCisJICoKKwkgKiBAcGFyYW0gcmVjaXBpZW50IFN0cmluZyB0byBzZXQgaW4gdGhlIFJlY2lwaWVudCBhdHRyaWJ1dGUKKwkgKi8KKworCXZpcnR1YWwgdm9pZCBzZXRSZWNpcGllbnQoY29uc3QgWE1MQ2ggKiByZWNpcGllbnQpID0gMDsKKworCS8vQH0KKworcHJpdmF0ZToKKworCS8vIFVuaW1wbGVtZW50ZWQKKwlYRU5DRW5jcnlwdGVkS2V5KGNvbnN0IFhFTkNFbmNyeXB0ZWRLZXkgJik7CisJWEVOQ0VuY3J5cHRlZEtleSAmIG9wZXJhdG9yID0gKGNvbnN0IFhFTkNFbmNyeXB0ZWRLZXkgJik7CisKKworfTsKKworI2VuZGlmIC8qIFhFTkNFTkNSWVBURURLRVlfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMveGVuYy9YRU5DRW5jcnlwdGVkVHlwZS5ocHAgYi9jL3NyYy94ZW5jL1hFTkNFbmNyeXB0ZWRUeXBlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTk1NjllCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGVuYy9YRU5DRW5jcnlwdGVkVHlwZS5ocHAKQEAgLTAsMCArMSwzNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMy0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhFTkNFbmNyeXB0ZWRUeXBlIDo9IERlZmluaXRpb24gZm9yIGhvbGRlciBvYmplY3QgZm9yIEVuY3J5cHRlZFR5cGUgCisgKiBlbGVtZW50CisgKgorICogQXV0aG9yKHMpOiBCZXJpbiBMYXV0ZW5iYWNoCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhFTkNFTkNSWVBURURUWVBFX0lOQ0xVREUKKyNkZWZpbmUgWEVOQ0VOQ1JZUFRFRFRZUEVfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisKK2NsYXNzIFhFTkNDaXBoZXJEYXRhOworY2xhc3MgRFNJR0tleUluZm9MaXN0OworY2xhc3MgRFNJR0tleUluZm9OYW1lOworY2xhc3MgRFNJR0tleUluZm9WYWx1ZTsKK2NsYXNzIERTSUdLZXlJbmZvWDUwOTsKK2NsYXNzIFhFTkNFbmNyeXB0aW9uTWV0aG9kOworY2xhc3MgWEVOQ0VuY3J5cHRlZEtleTsKKworLyoqCisgKiBAaW5ncm91cCB4ZW5jCisgKi8KKworLyoqCisgKiBAYnJpZWYgSW50ZXJmYWNlIGRlZmluaXRpb24gZm9yIHRoZSBFbmNyeXB0ZWRUeXBlIG9iamVjdAorICoKKyAqIFRoZSBcPEVuY3J5cHRlZFR5cGVcPiBlbGVtZW50IGlzIGFuIGFic3RyYWN0IHR5cGUgb24gd2hpY2gKKyAqIEVuY3J5cHRlZERhdGEgYW5kIEVuY3J5cHRlZEtleSBvYmplY3RzIGFyZSBidWlsdC4KKyAqCisgKiBUaGlzIGlzIHRoZSBiYXNlIGNsYXNzIG9uIHdoaWNoIG1vc3Qgb2YgdGhlIFhNTCBFbmNyeXB0aW9uCisgKiBzdGFuZGFyZCBpcyBidWlsdC4gIFVzaW5nIGNsYXNzZXMgZGVyaXZlZCBmcm9tIHRoaXMsIAorICogY2FsbGluZyBwcm9ncmFtcyBjYW4gZGVjcnlwdCB0aGUgY29udGVudCwgZGV0ZXJtaW5lIEtleUluZm8KKyAqIHJlZmVyZW5jZXMgZXRjLgorICoKKyAqIEluIGdlbmVyYWwgZGVyaXZlZCBvYmplY3RzIHNob3VsZCBub3QgYmUgdXNlZCBkaXJlY3RseS4KKyAqIFRoZSBYRU5DQ2lwaGVyIGNsYXNzIHNob3VsZCBiZSB1c2VkIHRvIG9wZXJhdGUgb24gdGhlbS4KKyAqCisgKiBUaGUgc2NoZW1hIGRlZmluaXRpb24gZm9yIEVuY3J5cHRlZFR5cGUgaXMgYXMgZm9sbG93cyA6CisgKgorICogXHZlcmJhdGltCisgIDxjb21wbGV4VHlwZSBuYW1lPSdFbmNyeXB0ZWRUeXBlJyBhYnN0cmFjdD0ndHJ1ZSc+CisgICAgPHNlcXVlbmNlPgorICAgICAgPGVsZW1lbnQgbmFtZT0nRW5jcnlwdGlvbk1ldGhvZCcgdHlwZT0neGVuYzpFbmNyeXB0aW9uTWV0aG9kVHlwZScgCisgICAgICAgICAgICAgICBtaW5PY2N1cnM9JzAnLz4KKyAgICAgIDxlbGVtZW50IHJlZj0nZHM6S2V5SW5mbycgbWluT2NjdXJzPScwJy8+CisgICAgICA8ZWxlbWVudCByZWY9J3hlbmM6Q2lwaGVyRGF0YScvPgorICAgICAgPGVsZW1lbnQgcmVmPSd4ZW5jOkVuY3J5cHRpb25Qcm9wZXJ0aWVzJyBtaW5PY2N1cnM9JzAnLz4KKyAgICA8L3NlcXVlbmNlPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0nSWQnIHR5cGU9J0lEJyB1c2U9J29wdGlvbmFsJy8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSdUeXBlJyB0eXBlPSdhbnlVUkknIHVzZT0nb3B0aW9uYWwnLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9J01pbWVUeXBlJyB0eXBlPSdzdHJpbmcnIHVzZT0nb3B0aW9uYWwnLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9J0VuY29kaW5nJyB0eXBlPSdhbnlVUkknIHVzZT0nb3B0aW9uYWwnLz4gCisgICA8L2NvbXBsZXhUeXBlPgorICBcZW5kdmVyYmF0aW0KKyAqLworCisKK2NsYXNzIFhFTkNFbmNyeXB0ZWRUeXBlIHsKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCitwcm90ZWN0ZWQ6CisKKwlYRU5DRW5jcnlwdGVkVHlwZSgpIHt9OworCitwdWJsaWM6CisKKwl2aXJ0dWFsIH5YRU5DRW5jcnlwdGVkVHlwZSgpIHt9OworCisJLyoqIEBuYW1lIEJhc2ljIEludGVyZmFjZSBNZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFJldHJpZXZlIHRoZSBDaXBoZXJEYXRhIGVsZW1lbnQKKwkgKgorCSAqIENpcGhlckRhdGEgZWxlbWVudHMgYXJlIHRoZSBzdWIgcGFydCBvZiB0aGUgRW5jcnlwdGVkRGF0YQorCSAqIHRoYXQgaG9sZCB0aGUgYWN0dWFsIGVuY2lwaGVyZWQgaW5mb3JtYXRpb24uCisJICoKKwkgKiBAcmV0dXJucyBUaGUgQ2lwaGVyRGF0YSBvYmplY3QKKwkgKi8KKworCXZpcnR1YWwgWEVOQ0NpcGhlckRhdGEgKiBnZXRDaXBoZXJEYXRhKHZvaWQpIGNvbnN0ID0gMDsKKworCS8qKgorCSAqIFxicmllZiBSZXRyaWV2ZSB0aGUgRW5jcnlwdGlvbk1ldGhvZCBlbGVtZW50CisJICoKKwkgKiBUaGUgRW5jcnlwdGlvbk1ldGhvZCBlbGVtZW50IGhvbGRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSAKKwkgKiBlbmNyeXB0aW9uIGFsZ29yaXRobSB0byBiZSB1c2VkIHRvIGVuY3J5cHQvZGVjcnlwdCB0aGUgZGF0YQorCSAqCisJICogVGhpcyBtZXRob2QgcHJvdmlkZXMgYSBtZWFucyB0byBleHRyYWN0IHRoZSBFbmNyeXB0aW9uTWV0aG9kCisJICogZWxlbWVudCBmcm9tIHRoZSBFbmNyeXB0ZWRUeXBlCisJICoKKwkgKiBAcmV0dXJucyBUaGUgRW5jcnlwdGlvbk1ldGhvZCBlbGVtZW50CisJICovCisKKwl2aXJ0dWFsIFhFTkNFbmNyeXB0aW9uTWV0aG9kICogZ2V0RW5jcnlwdGlvbk1ldGhvZCh2b2lkKSBjb25zdCA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBET00gRWxlbWVudCBOb2RlIG9mIHRoaXMgc3RydWN0dXJlCisJICoKKwkgKiBAcmV0dXJucyB0aGUgRE9NIEVsZW1lbnQgTm9kZSByZXByZXNlbnRpbmcgdGhlIFw8RW5jcnlwdGlvblR5cGVcPiBlbGVtZW50CisJICovCisKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogZ2V0RWxlbWVudCh2b2lkKSBjb25zdCA9IDA7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgR2V0dGVyIGludGVyZmFjZSBNZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgVHlwZSBVUkkgZm9yIHRoZSBFbmNyeXB0ZWRUeXBlCisJICoKKwkgKiBJZiB0aGlzIG9iamVjdCBpcyBhbiBFbmNyeXB0ZWREYXRhLCBpdCA8ZW0+bWF5PC9lbT4gaGF2ZSBhIAorCSAqIFR5cGUgYXR0cmlidXRlIHRoYXQgZGVmaW5lcyB3aGV0aGVyIGl0IGlzIGFuIGVuY3J5cHRlZAorCSAqIEVsZW1lbnQgb3IgRWxlbWVudCBDb250ZW50LiAgVGhpcyBtZXRob2QgYWxsb3dzIHRoZSBjYWxsZXIKKwkgKiB0byBzZWUgdGhpcyB0eXBlIFVSSS4KKwkgKgorCSAqIEByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgVVJJIHN0cmluZyAob3duZWQgYnkgdGhlIGxpYnJhcnkpCisJICogb3IgTlVMTCBpZiBubyB0eXBlIGlzIHNldAorCSAqLworCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldFR5cGUodm9pZCkgY29uc3QgPSAwOworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgTWltZVR5cGUgb2YgdGhlIEVuY3J5cHRlZFR5cGUKKwkgKgorCSAqIElmIHRoaXMgb2JqZWN0IGlzIGFuIEVuY3J5cHRlZERhdGEsIGl0IDxlbT5tYXk8L2VtPiBoYXZlIGEgCisJICogTWltZVR5cGUgYXR0cmlidXRlIHRoYXQgImRlc2NyaWJlcyB0aGUgbWVkaWEgdHlwZSBvZiB0aGUgCisJICogZGF0YSB3aGljaCBoYXMgYmVlbiBlbmNyeXB0ZWQiIChmcm9tIHRoZSBYTUwgRW5jcnlwdGlvbiBzcGVjKS4KKwkgKgorCSAqIFRoZSBYTUwtU2VjdXJpdHktQyBsaWJyYXJ5IG1ha2VzIG5vIHVzZSBvZiB0aGlzIGF0dHJpYnV0ZSwgYnV0CisJICogaXQgcHJvdmlkZXMgdGhlc2UgZnVuY3Rpb25zIHRvIGFsbG93IGFwcGxpY2F0aW9ucyB0byBzZXQgYW5kIGdldC4KKwkgKgorCSAqIEByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgTWltZVR5cGUgc3RyaW5nIChvd25lZCBieSB0aGUgbGlicmFyeSkKKwkgKiBvciBOVUxMIGlmIG5vIE1pbWVUeXBlIGlzIHNldAorCSAqLworCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldE1pbWVUeXBlKHZvaWQpIGNvbnN0ID0gMDsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIEVuY29kaW5nIG9mIHRoZSBFbmNyeXB0ZWRUeXBlCisJICoKKwkgKiBJZiB0aGlzIG9iamVjdCBpcyBhbiBFbmNyeXB0ZWREYXRhLCBpdCA8ZW0+bWF5PC9lbT4gaGF2ZSBhbgorCSAqIGVuY29kaW5nIGF0dHJpYnV0ZSB0aGF0IGRlc2NyaWJlcyBob3cgdGhlIGRhdGEgaGFzIGJlZW4gZW5jb2RlZAorCSAqIHByaW9yIHRvIGVuY3J5cHRpb24uICAoRS5nLiBodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjYmFzZTY0KQorCSAqCisJICogVGhlIFhNTC1TZWN1cml0eS1DIGxpYnJhcnkgbWFrZXMgbm8gdXNlIG9mIHRoaXMgYXR0cmlidXRlLCBidXQKKwkgKiBpdCBwcm92aWRlcyB0aGVzZSBmdW5jdGlvbnMgdG8gYWxsb3cgYXBwbGljYXRpb25zIHRvIHNldCBhbmQgZ2V0LgorCSAqCisJICogQHJldHVybnMgQSBzdHJpbmcgKG93bmVkIGJ5IHRoZSBsaWJyYXJ5KSBwcm92aWRpbmcgdGhlIGVuY29kaW5nIFVSSQorCSAqLworCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldEVuY29kaW5nKHZvaWQpIGNvbnN0ID0gMDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBTZXR0ZXIgaW50ZXJmYWNlIG1ldGhvZHMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgU2V0IHRoZSBUeXBlIFVSSSBmb3IgdGhlIEVuY3J5cHRlZFR5cGUKKwkgKgorCSAqIEFsbG93cyBhIGNhbGxpbmcgYXBwbGljYXRpb24gdG8gc2V0IGEgcGFydGljdWxhciBUeXBlIFVSSSBmb3IKKwkgKiB0aGUgRW5jcnlwdGVkVHlwZS4KKwkgKiAKKwkgKiBAbm90ZSBjYWxscyB0byBlbmNyeXB0RWxlbWVudCBhbmQgZW5jcnlwdEVsZW1lbnRDb250ZW50CisJICogYXV0b21hdGljYWxseSBzZXQgdGhlIGFwcHJvcHJpYXRlIFR5cGUgVVJJLgorCSAqCisJICogQHBhcmFtIHVyaSBUaGUgVVJJIHRvIHNldAorCSAqLworCisJdmlydHVhbCB2b2lkIHNldFR5cGUoY29uc3QgWE1MQ2ggKiB1cmkpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBTZXQgdGhlIE1pbWVUeXBlIG9mIHRoZSBFbmNyeXB0ZWRUeXBlCisJICoKKwkgKiBJZiB0aGlzIG9iamVjdCBpcyBhbiBFbmNyeXB0ZWREYXRhLCBpdCA8ZW0+bWF5PC9lbT4gaGF2ZSBhIAorCSAqIE1pbWVUeXBlIGF0dHJpYnV0ZSB0aGF0ICJkZXNjcmliZXMgdGhlIG1lZGlhIHR5cGUgb2YgdGhlIAorCSAqIGRhdGEgd2hpY2ggaGFzIGJlZW4gZW5jcnlwdGVkIiAoZnJvbSB0aGUgWE1MIEVuY3J5cHRpb24gc3BlYykuCisJICoKKwkgKiBUaGUgWE1MLVNlY3VyaXR5LUMgbGlicmFyeSBtYWtlcyBubyB1c2Ugb2YgdGhpcyBhdHRyaWJ1dGUsIGJ1dAorCSAqIGl0IHByb3ZpZGVzIHRoZXNlIGZ1bmN0aW9ucyB0byBhbGxvdyBhcHBsaWNhdGlvbnMgdG8gc2V0IGFuZCBnZXQuCisJICoKKwkgKiBAcGFyYW0gbWltZVR5cGUgU3RyaW5nIHRvIHNldCBpbiB0aGUgTWltZVR5cGUgYXR0cmlidXRlLgorCSAqIEBub3RlIG5vIGNoZWNraW5nIG9mIHRoaXMgc3RyaW5nIGlzIGRvbmUgYnkgdGhlIGxpYnJhcnkgLSBpdAorCSAqIHNpbXBseSBzZXRzIHRoZSB2YWx1ZSBvZiB0aGUgTWltZVR5cGUgYXR0cmlidXRlIHRvIHRoaXMgdmFsdWUuCisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0TWltZVR5cGUoY29uc3QgWE1MQ2ggKiBtaW1lVHlwZSkgPSAwOworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUgRW5jb2Rpbmcgb2YgdGhlIEVuY3J5cHRlZFR5cGUKKwkgKgorCSAqIElmIHRoaXMgb2JqZWN0IGlzIGFuIEVuY3J5cHRlZERhdGEsIGl0IDxlbT5tYXk8L2VtPiBoYXZlIGFuCisJICogZW5jb2RpbmcgYXR0cmlidXRlIHRoYXQgZGVzY3JpYmVzIGhvdyB0aGUgZGF0YSBoYXMgYmVlbiBlbmNvZGVkCisJICogcHJpb3IgdG8gZW5jcnlwdGlvbi4gIChFLmcuIGh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNiYXNlNjQpCisJICoKKwkgKiBUaGUgWE1MLVNlY3VyaXR5LUMgbGlicmFyeSBtYWtlcyBubyB1c2Ugb2YgdGhpcyBhdHRyaWJ1dGUsIGJ1dAorCSAqIGl0IHByb3ZpZGVzIHRoZXNlIGZ1bmN0aW9ucyB0byBhbGxvdyBhcHBsaWNhdGlvbnMgdG8gc2V0IGFuZCBnZXQuCisJICoKKwkgKiBAcGFyYW0gdXJpIFN0cmluZyAoVVJJKSB0byBzZXQgaW4gdGhlIEVuY29kaW5nIGF0dHJpYnV0ZS4KKwkgKiBAbm90ZSBubyBjaGVja2luZyBvZiB0aGlzIHN0cmluZyBpcyBkb25lIGJ5IHRoZSBsaWJyYXJ5IC0gaXQKKwkgKiBzaW1wbHkgc2V0cyB0aGUgdmFsdWUgb2YgdGhlIEVuY29kaW5nIGF0dHJpYnV0ZSB0byB0aGlzIHZhbHVlLgorCSAqLworCisJdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFhNTENoICogdXJpKSA9IDA7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgS2V5SW5mbyBFbGVtZW50IE1hbmlwdWxhdGlvbiAqLworCQorCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIGxpc3Qgb2YgXDxLZXlJbmZvXD4gZWxlbWVudHMuCisJICoKKwkgKiA8cD5UaGlzIGZ1bmN0aW9uIHJlY292ZXJzIGxpc3QgdGhhdCBjb250YWlucyB0aGUgS2V5SW5mbyBlbGVtZW50cworCSAqIHJlYWQgaW4gZnJvbSB0aGUgRE9NIGRvY3VtZW50LjwvcD4KKwkgKgorCSAqIDxwPlRoaXMgbGlzdCBzaG91bGQgYmUgdXNlZCBieSBjYWxsaW5nIGFwcGxpY2F0aW9ucyB0byBkZXRlcm1pbmUgd2hhdCBrZXkKKwkgKiBpcyBhcHByb3ByaWF0ZSBmb3IgZGVjcnlwdGluZyB0aGUgZG9jdW1lbnQuPC9wPgorCSAqCisJICogQG5vdGUgVGhlIGxpc3Qgc2hvdWxkIG5ldmVyIGJlIG1vZGlmaWVkIGRpcmVjdGx5LiAgSWYgeW91IG5lZWQgdG8KKwkgKiBhZGQga2V5SW5mbyBlbGVtZW50cywgY2FsbCB0aGUgYXBwcm9wcmlhdGUgZnVuY3Rpb25zIGluIEVuY3J5cHRlZFR5cGUKKwkgKgorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgRFNJR0tleUluZm9MaXN0IG9iamVjdCBoZWxkIGJ5IHRoZSBYRU5DQ2lwaGVyCisJICovCisJCisJdmlydHVhbCBEU0lHS2V5SW5mb0xpc3QgKiBnZXRLZXlJbmZvTGlzdCh2b2lkKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgQ2xlYXIgb3V0IGFsbCBLZXlJbmZvIGVsZW1lbnRzIGluIHRoZSBzaWduYXR1cmUuCisJICoKKwkgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgZGVsZXRlIGFsbCBLZXlJbmZvIGVsZW1lbnRzIGZyb20gYm90aCB0aGUgRW5jcnlwdGVkVHlwZQorCSAqIG9iamVjdCA8ZW0+YW5kIHRoZSBhc3NvY2lhdGVkIERPTTwvZW0+LgorCSAqCisJICovCisKKwl2aXJ0dWFsIHZvaWQgY2xlYXJLZXlJbmZvKHZvaWQpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBBcHBlbmQgYSBEU0EgS2V5VmFsdWUgZWxlbWVudCAKKwkgKgorCSAqIEFkZCBhIG5ldyBLZXlJbmZvIGVsZW1lbnQgZm9yIGEgRFNBIFZhbHVlCisJICoKKwkgKiBAcGFyYW0gUCBCYXNlNjQgZW5jb2RlZCB2YWx1ZSBvZiBQCisJICogQHBhcmFtIFEgQmFzZTY0IGVuY29kZWQgdmFsdWUgb2YgUQorCSAqIEBwYXJhbSBHIEJhc2U2NCBlbmNvZGVkIHZhbHVlIG9mIEcKKwkgKiBAcGFyYW0gWSBCYXNlNjQgZW5jb2RlZCB2YWx1ZSBvZiBZCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBjcmVhdGVkIG9iamVjdC4KKwkgKi8KKworCXZpcnR1YWwgRFNJR0tleUluZm9WYWx1ZSAqIGFwcGVuZERTQUtleVZhbHVlKGNvbnN0IFhNTENoICogUCwgCisJCQkJCQkgICBjb25zdCBYTUxDaCAqIFEsIAorCQkJCQkJICAgY29uc3QgWE1MQ2ggKiBHLCAKKwkJCQkJCSAgIGNvbnN0IFhNTENoICogWSkgPSAwOworCisJLyoqCisJICogXGJyaWVmIEFwcGVuZCBhIFJTQSBLZXlWYWx1ZSBlbGVtZW50IAorCSAqCisJICogQWRkIGEgbmV3IEtleUluZm8gZWxlbWVudCBmb3IgYSBSU0EgVmFsdWUKKwkgKgorCSAqIEBwYXJhbSBtb2R1bHVzIEJhc2U2NCBlbmNvZGVkIHZhbHVlIG9mIHRoZSBtb2R1bHVzCisJICogQHBhcmFtIGV4cG9uZW50IEJhc2U2NCBlbmNvZGVkIHZhbHVlIG9mIGV4cG9uZW50CisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBjcmVhdGVkIG9iamVjdC4KKwkgKi8KKworCXZpcnR1YWwgRFNJR0tleUluZm9WYWx1ZSAqIGFwcGVuZFJTQUtleVZhbHVlKGNvbnN0IFhNTENoICogbW9kdWx1cywgCisJCQkJCQkgICBjb25zdCBYTUxDaCAqIGV4cG9uZW50KSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgQXBwZW5kIGEgWDUwOURhdGEgZWxlbWVudC4KKwkgKgorCSAqIEFkZCBhIG5ldyBLZXlJbmZvIGVsZW1lbnQgZm9yIFg1MDkgZGF0YS4KKwkgKgorCSAqIEBub3RlIFRoZSBhZGRlZCBlbGVtZW50IGlzIGVtcHR5LiAgVGhlIGNhbGxlciBtdXN0IG1ha2UgdXNlIG9mIHRoZQorCSAqIHJldHVybmVkIG9iamVjdCB0byBzZXQgdGhlIHJlcXVpcmVkIHZhbHVlcy4KKwkgKgorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgY3JlYXRlZCBvYmplY3QuCisJICovCisKKwl2aXJ0dWFsIERTSUdLZXlJbmZvWDUwOSAqIGFwcGVuZFg1MDlEYXRhKHZvaWQpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBBcHBlbmQgYSBLZXlOYW1lIGVsZW1lbnQuCisJICoKKwkgKiBBZGQgYSBuZXcgS2V5SW5mbyBlbGVtZW50IGZvciBhIGtleSBuYW1lLgorCSAqCisJICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGtleSB0byBzZXQgaW4gdGhlIFhNTAorCSAqIEBwYXJhbSBpc0ROYW1lIFRyZWF0IHRoZSBuYW1lIGFzIGEgRGlzdGluZ3Vpc2hlZCBuYW1lIGFuZCBlbmNvZGUgYWNjb3JkaW5nbHkKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0CisJICovCisKKwl2aXJ0dWFsIERTSUdLZXlJbmZvTmFtZSAqIGFwcGVuZEtleU5hbWUoY29uc3QgWE1MQ2ggKiBuYW1lLCBib29sIGlzRE5hbWUgPSBmYWxzZSkgPSAwOworCisJLyoqCisJICogXGJyaWVmIEFwcGVuZCBhbiBhbHJlYWR5IGNyZWF0ZWQgRW5jcnlwdGVkS2V5LgorCSAqCisJICogQWRkIGFuIGFscmVhZHkgY3JlYXRlZCBFbmNyeXB0ZWRLZXkuCisJICoKKwkgKiBAbm90ZSBUaGUgZW5jcnlwdGVkS2V5IGJlY29tZXMgdGhlIHByb3BlcnR5IG9mIHRoZSBvd25pbmcgRW5jcnlwdGVkVHlwZQorCSAqIG9iamVjdCBhbmQgd2lsbCBiZSBkZWxldGVkIHVwb24gaXRzIGRlc3RydWN0aW9uLgorCSAqCisJICogQHBhcmFtIGVuY3J5cHRlZEtleSBBIHBvaW50ZXIgdG8gdGhlIGVuY3J5cHRlZCBLZXkKKwkgKi8KKworCXZpcnR1YWwgdm9pZCBhcHBlbmRFbmNyeXB0ZWRLZXkoWEVOQ0VuY3J5cHRlZEtleSAqIGVuY3J5cHRlZEtleSkgPSAwOworCS8vQH0KKworcHJpdmF0ZToKKworCS8vIFVuaW1wbGVtZW50ZWQKKwlYRU5DRW5jcnlwdGVkVHlwZShjb25zdCBYRU5DRW5jcnlwdGVkVHlwZSAmKTsKKwlYRU5DRW5jcnlwdGVkVHlwZSAmIG9wZXJhdG9yID0gKGNvbnN0IFhFTkNFbmNyeXB0ZWRUeXBlICYpOworCit9OworCisjZW5kaWYgLyogWEVOQ0VOQ1JZUFRFRFRZUEVfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMveGVuYy9YRU5DRW5jcnlwdGlvbk1ldGhvZC5ocHAgYi9jL3NyYy94ZW5jL1hFTkNFbmNyeXB0aW9uTWV0aG9kLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTc2YjE4Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGVuYy9YRU5DRW5jcnlwdGlvbk1ldGhvZC5ocHAKQEAgLTAsMCArMSwxNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMy0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhFTkNFbmNyeXB0aW9uTWV0aG9kIDo9IEludGVyZmFjZSBkZWZpbml0aW9uIGZvciBFbmNyeXB0aW9uTWV0aG9kIGVsZW1lbnQKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEVOQ0VOQ1JZUFRJT05NRVRIT0RfSU5DTFVERQorI2RlZmluZSBYRU5DRU5DUllQVElPTk1FVEhPRF9JTkNMVURFCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKworLyoqCisgKiBAaW5ncm91cCB4ZW5jCisgKi8KKworLyoqCisgKiBAYnJpZWYgSW50ZXJmYWNlIGRlZmluaXRpb24gZm9yIHRoZSBFbmNyeXB0aW9uTWV0aG9kIG9iamVjdAorICoKKyAqIFRoZSBcPEVuY3J5cHRpb25NZXRob2RcPiBlbGVtZW50IGhvbGRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSAKKyAqIGVuY3J5cHRpb24gYWxnb3JpdGhtIGJlaW5nIHVzZWQuCisgKgorICogVGhpcyBlbGVtZW50IGlzIG9wdGlvbmFsIHdpdGhpbiBhbiBFbmNyeXB0ZWRUeXBlIGRlcml2YXRpdmUsCisgKiBidXQgYXBwbGljYXRpb25zIG5vdCBtYWtpbmcgdXNlIG9mIHRoaXMgbmVlZCB0byBrbm93IHRoZSAKKyAqIHRoaXMgaW5mb3JtYXRpb24sIG90aGVyd2lzZSB0aGUgbGlicmFyeSB3aWxsIG5vdCBiZSBhYmxlIHRvCisgKiBkZWNyeXB0IHRoZSBkYXRhLgorICoKKyAqIEl0IGlzIGRlZmluZWQgYXMgOgorICogXHZlcmJhdGltCisgIDxjb21wbGV4VHlwZSBuYW1lPSdFbmNyeXB0aW9uTWV0aG9kVHlwZScgbWl4ZWQ9J3RydWUnPgorICAgIDxzZXF1ZW5jZT4KKyAgICAgIDxlbGVtZW50IG5hbWU9J0tleVNpemUnIG1pbk9jY3Vycz0nMCcgdHlwZT0neGVuYzpLZXlTaXplVHlwZScvPgorICAgICAgPGVsZW1lbnQgbmFtZT0nT0FFUHBhcmFtcycgbWluT2NjdXJzPScwJyB0eXBlPSdiYXNlNjRCaW5hcnknLz4KKyAgICAgIDxhbnkgbmFtZXNwYWNlPScjI290aGVyJyBtaW5PY2N1cnM9JzAnIG1heE9jY3Vycz0ndW5ib3VuZGVkJy8+CisgICAgPC9zZXF1ZW5jZT4KKyAgICA8YXR0cmlidXRlIG5hbWU9J0FsZ29yaXRobScgdHlwZT0nYW55VVJJJyB1c2U9J3JlcXVpcmVkJy8+CisgIDwvY29tcGxleFR5cGU+CisgIFxlbmR2ZXJiYXRpbQorICovCisKKworY2xhc3MgWEVOQ0VuY3J5cHRpb25NZXRob2QgeworCitwdWJsaWM6CisKKwlYRU5DRW5jcnlwdGlvbk1ldGhvZCgpIHt9OworCisJdmlydHVhbCB+WEVOQ0VuY3J5cHRpb25NZXRob2QoKSB7fTsKKworCS8qKiBAbmFtZSBHZXR0ZXIgTWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIGFsZ29yaXRobQorCSAqCisJICogUmV0dXJuIHRoZSBBbGdvcml0aG0gVVJJIHJlcHJlc2VudGluZyB0aGUgZW5jcnlwdGlvbiB0eXBlIGZvciB0aGlzCisJICogZW5jcnlwdGVkIGRhdGEKKwkgKgorCSAqIEByZXR1cm5zIHRoZSBVUkkgcmVwcmVzZW50aW5nIHRoZSBhbGdvcml0aG0KKwkgKi8KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRBbGdvcml0aG0odm9pZCkgY29uc3QgPSAwOworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgZGlnZXN0IG1ldGhvZCBVUkkKKwkgKgorCSAqIFJldHVybiB0aGUgQWxnb3JpdGhtIFVSSSByZXByZXN0ZW50aW5nIHRoZSBEaWdlc3QgTWV0aG9kIGZvciB0aG9zZQorCSAqIGVuY3J5cHRpb24gYWxnb3JpdGhtcyB0aGF0IHJlcXVpcmUgaXQgKHN1Y2ggYXMgUlNBIHdpdGggT0FFUCBwYWRkaW5nKQorCSAqCisJICogQHJldHVybnMgdGhlIFVSSSByZXByZXNlbnRpbmcgdGhlIGRpZ2VzdCBtZXRob2QgYWxnb3JpdGhtCisJICovCisKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0RGlnZXN0TWV0aG9kKHZvaWQpIGNvbnN0ID0gMDsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIHZhbHVlIG9mIHRoZSBPQUVQcGFyYW1zIHN0cmluZworCSAqCisJICogVGhlIE9BRVAgUlNBIHBhZGRpbmcgbWV0aG9kIGFsbG93cyBhIHVzZXIgdG8gc2V0IGFuIG9wdGlvbmFsCisJICogcGFyYW1zIHN0cmluZyAodGhhdCB3aWxsIGJlIHVzZWQgYXMgaW5wdXQgdG8gdGhlIERpZ2VzdCBhbGdvcml0aG0pLgorCSAqCisJICogQHJldHVybnMgVGhlIHN0cmluZyAoYmFzZTY0IGVuY29kZWQgdmFsdWUpIHJlcHJlc2VudGluZyB0aGUgT0FFUCBwYXJhbXMKKwkgKi8KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRPQUVQcGFyYW1zKHZvaWQpIGNvbnN0ID0gMDsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIEtleVNpemUgdGhhdCB3YXMgc2V0IGluIHRoaXMgRW5jcnlwdGlvbk1ldGhvZC4KKwkgKgorCSAqIFRoaXMgZmllbGQgd291bGQgbm90IG5vcm1hbGx5IGJlIHVzZWQgZm9yIHRoZSBlbmNyeXB0aW9uIGFsZ29yaXRobXMKKwkgKiBleHBsaWNpdGx5IHJlZmVyZW5jZWQgaW4gdGhlIFhNTCBFbmNyeXB0aW9uIHN0YW5kYXJkLiAgSXQgaXMgcHJvdmlkZWQKKwkgKiBtYWlubHkgZm9yIHN0cmVhbSBjaXBoZXJzIHRoYXQgaGF2ZSBhIHZhcmlhYmxlIGtleSBsZW5ndGgKKwkgKi8KKworCXZpcnR1YWwgaW50IGdldEtleVNpemUodm9pZCkgY29uc3QgPSAwOworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgRE9NIEVsZW1lbnQgTm9kZSBvZiB0aGlzIHN0cnVjdHVyZQorCSAqCisJICogQHJldHVybnMgdGhlIERPTSBFbGVtZW50IE5vZGUgcmVwcmVzZW50aW5nIHRoZSBcPEVuY3J5cHRpb25NZXRob2RcPiBlbGVtZW50CisJICovCisKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogZ2V0RWxlbWVudCh2b2lkKSBjb25zdCA9IDA7CisKKworCS8vQH0KKworCS8qKiBAbmFtZSBTZXR0ZXIgTWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBTZXQgdGhlIHZhbHVlIG9mIHRoZSBEaWdlc3RNZXRob2QKKwkgKgorCSAqIFNldHMgdGhlIERpZ2VzdE1ldGhvZCBlbGVtZW50J3MgQWxnb3JpdGhtIGF0dHJpYnV0ZSB0byB0aGUgcGFzc2VkIGluCisJICogdmFsdWUgLSBzaG91bGQgYmUgYSBVUkkgc3RyaW5nCisJICoKKwkgKiBAcGFyYW0gbWV0aG9kIFN0cmluZyB0byBzZXQgaW4gdGhlIEFsZ29yaXRobSBhdHRyaWJ1dGUuICBXaWxsIGNyZWF0ZSBhCisJICogXDxEaWdlc3RNZXRob2RcPiBlbGVtZW50IGlmIG9uZSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0CisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0RGlnZXN0TWV0aG9kKGNvbnN0IFhNTENoICogbWV0aG9kKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgU2V0IHRoZSB2YWx1ZSBvZiB0aGUgT0FFUHBhcmFtcyBzdHJpbmcKKwkgKgorCSAqIFNldHMgdGhlIE9BRVBwYXJhbXMgZWxlbWVudCdzIFRleHQgbm9kZSBjaGlsZCB0byB0aGUgcGFzc2VkIGluCisJICogdmFsdWUgLSBzaG91bGQgYmUgYSBiYXNlNjQgZW5jb2RlZCB2YWx1ZQorCSAqCisJICogQHBhcmFtIHBhcmFtcyBTdHJpbmcgdG8gc2V0IGluIHRoZSBPQUVQcGFyYW1zIHRleHQgbm9kZS4gIFdpbGwgY3JlYXRlIGEKKwkgKiBcPE9BRVBwYXJhbXNcPiBlbGVtZW50IGlmIG9uZSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0CisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0T0FFUHBhcmFtcyhjb25zdCBYTUxDaCAqIHBhcmFtcykgPSAwOworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUgS2V5U2l6ZSB0aGF0IGluIHRoaXMgRW5jcnlwdGlvbk1ldGhvZC4KKwkgKgorCSAqIFRoaXMgZmllbGQgd291bGQgbm90IG5vcm1hbGx5IGJlIHVzZWQgZm9yIHRoZSBlbmNyeXB0aW9uIGFsZ29yaXRobXMKKwkgKiBleHBsaWNpdGx5IHJlZmVyZW5jZWQgaW4gdGhlIFhNTCBFbmNyeXB0aW9uIHN0YW5kYXJkLiAgSXQgaXMgcHJvdmlkZWQKKwkgKiBtYWlubHkgZm9yIHN0cmVhbSBjaXBoZXJzIHRoYXQgaGF2ZSBhIHZhcmlhYmxlIGtleSBsZW5ndGgKKwkgKi8KKworCXZpcnR1YWwgdm9pZCBzZXRLZXlTaXplKGludCBzaXplKSA9IDA7CisKKwkvL0B9CisKK3ByaXZhdGU6CisKKwkvLyBVbmltcGxlbWVudGVkCisJWEVOQ0VuY3J5cHRpb25NZXRob2QoY29uc3QgWEVOQ0VuY3J5cHRpb25NZXRob2QgJik7CisJWEVOQ0VuY3J5cHRpb25NZXRob2QgJiBvcGVyYXRvciA9IChjb25zdCBYRU5DRW5jcnlwdGlvbk1ldGhvZCAmKTsKKworfTsKKworI2VuZGlmIC8qIFhFTkNFTkNSWVBUSU9OTUVUSE9EX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL3hlbmMvaW1wbC9YRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQuY3BwIGIvYy9zcmMveGVuYy9pbXBsL1hFTkNBbGdvcml0aG1IYW5kbGVyRGVmYXVsdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZkZDhmYwotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hlbmMvaW1wbC9YRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQuY3BwCkBAIC0wLDAgKzEsMTAxOSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAzLTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWFNFQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0IDo9IEludGVyZmFjZSBjbGFzcyB0byBkZWZpbmUgaGFuZGxpbmcgb2YKKyAqCQkJCQkJCQkgIGRlZmF1bHQgZW5jcnlwdGlvbiBhbGdvcml0aG1zCisgKgorICogJElkJAorICoKKyAqLworCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTUNoYWluLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNQ2lwaGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNQmFzZTY0LmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hlbmMvWEVOQ0VuY3J5cHRpb25NZXRob2QuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9LZXkuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9TeW1tZXRyaWNLZXkuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDRE9NVXRpbHMuaHBwPgorCisjaW5jbHVkZSAiLi4vLi4vdXRpbHMvWFNFQ0F1dG9QdHIuaHBwIgorCisjaW5jbHVkZSAiWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0LmhwcCIKKworI2luY2x1ZGUgPHhlcmNlc2MvZG9tL0RPTS5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL0phbml0b3IuaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworI2RlZmluZSBfTVlfTUFYX0tFWV9TSVpFIDIwNDgKKwordW5zaWduZWQgY2hhciBzXzNERVNfQ01TX0lWIFtdID0geworCTB4NGEsCisJMHhkZCwKKwkweGEyLAorCTB4MmMsCisJMHg3OSwKKwkweGU4LAorCTB4MjEsCisJMHgwNQorfTsKKwordW5zaWduZWQgY2hhciBzX0FFU19JViBbXSA9IHsKKworCTB4QTYsCisJMHhBNiwKKwkweEE2LAorCTB4QTYsCisJMHhBNiwKKwkweEE2LAorCTB4QTYsCisJMHhBNgorCit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlDb21wYXJlIFVSSSB0byBrZXkgdHlwZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBYRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQ6Om1hcFVSSVRvS2V5KGNvbnN0IFhNTENoICogdXJpLCAKKwkJCQkJCQkJCQkJICBYU0VDQ3J5cHRvS2V5ICoga2V5LAorCQkJCQkJCQkJCQkgIFhTRUNDcnlwdG9LZXk6OktleVR5cGUgJmt0LAorCQkJCQkJCQkJCQkgIFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OlN5bW1ldHJpY0tleVR5cGUgJnNrdCwKKwkJCQkJCQkJCQkJICBib29sICZpc1N5bW1ldHJpY0tleVdyYXApIHsKKworCWlmIChrZXkgPT0gTlVMTCkgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkNpcGhlckVycm9yLCAKKwkJCSJYRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQ6Om1hcFVSSVRvS2V5IC0gdHJ5aW5nIHRvIHByb2Nlc3MgYSBOVUxMIGtleSIpOworCX0KKworCVhTRUNDcnlwdG9TeW1tZXRyaWNLZXkgKiBrZXlTeW1tZXRyaWM7CisJYm9vbCBrZXlPSyA9IGZhbHNlOworCisJa3QgPSBrZXktPmdldEtleVR5cGUoKTsKKwlza3QgPSBYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfTk9ORTsKKwlpc1N5bW1ldHJpY0tleVdyYXAgPSBmYWxzZTsKKwkKKwlzd2l0Y2ggKGt0KSB7CisKKwljYXNlIFhTRUNDcnlwdG9LZXk6OktFWV9SU0FfUFVCTElDIDoKKwljYXNlIFhTRUNDcnlwdG9LZXk6OktFWV9SU0FfUEFJUiA6CisJY2FzZSBYU0VDQ3J5cHRvS2V5OjpLRVlfUlNBX1BSSVZBVEUgOgorCisJCWtleU9LID0gc3RyRXF1YWxzKHVyaSwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJUlNBXzFfNSkgfHwKKwkJCXN0ckVxdWFscyh1cmksIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVJTQV9PQUVQX01HRlAxKTsKKwkJYnJlYWs7CisKKwljYXNlIFhTRUNDcnlwdG9LZXk6OktFWV9TWU1NRVRSSUMgOgorCisJCWtleVN5bW1ldHJpYyA9IChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5ICopIGtleTsKKwkJaWYgKGtleVN5bW1ldHJpYyAhPSBOVUxMKSB7CisJCQlza3QgPSBrZXlTeW1tZXRyaWMtPmdldFN5bW1ldHJpY0tleVR5cGUoKTsKKworCQkJc3dpdGNoIChza3QpIHsKKworCQkJY2FzZSBYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfM0RFU18xOTIgOgorCQkJCWlzU3ltbWV0cmljS2V5V3JhcCA9IHN0ckVxdWFscyh1cmksIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUtXXzNERVMpOworCQkJCWtleU9LID0gaXNTeW1tZXRyaWNLZXlXcmFwIHx8IHN0ckVxdWFscyh1cmksIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSTNERVNfQ0JDKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZX0FFU18xMjggOgorCQkJCWlzU3ltbWV0cmljS2V5V3JhcCA9IHN0ckVxdWFscyh1cmksIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUtXX0FFUzEyOCk7CisJCQkJa2V5T0sgPSAgaXNTeW1tZXRyaWNLZXlXcmFwIHx8IHN0ckVxdWFscyh1cmksIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUFFUzEyOF9DQkMpOworCQkJCWJyZWFrOworCQkJY2FzZSBYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfQUVTXzE5MiA6CisJCQkJaXNTeW1tZXRyaWNLZXlXcmFwID0gc3RyRXF1YWxzKHVyaSwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJS1dfQUVTMTkyKTsKKwkJCQlrZXlPSyA9ICBpc1N5bW1ldHJpY0tleVdyYXAgfHwgc3RyRXF1YWxzKHVyaSwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJQUVTMTkyX0NCQyk7CisJCQkJYnJlYWs7CisJCQljYXNlIFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV9BRVNfMjU2IDoKKwkJCQlpc1N5bW1ldHJpY0tleVdyYXAgPSBzdHJFcXVhbHModXJpLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklLV19BRVMyNTYpOworCQkJCWtleU9LID0gIGlzU3ltbWV0cmljS2V5V3JhcCB8fCBzdHJFcXVhbHModXJpLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklBRVMyNTZfQ0JDKTsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQkgYnJlYWs7CisJfQorCisJaWYgKGtleU9LID09IGZhbHNlKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q2lwaGVyRXJyb3IsIAorCQkJIlhFTkNBbGdvcml0aG1IYW5kbGVyRGVmYXVsdDo6bWFwVVJJVG9LZXkgLSBrZXkgaW5hcHByb3ByaWF0ZSBmb3IgVVJJIik7CisJfQorCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCUFFUyBLZXkgd3JhcC91bndyYXAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3Vuc2lnbmVkIGludCBYRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQ6OnVud3JhcEtleUFFUygKKyAgIAkJVFhGTUNoYWluICogY2lwaGVyVGV4dCwKKwkJWFNFQ0NyeXB0b0tleSAqIGtleSwKKwkJc2FmZUJ1ZmZlciAmIHJlc3VsdCkgeworCisJLy8gQ2F0IHRoZSBlbmNyeXB0ZWQga2V5CisJWE1MQnl0ZSBidWZbX01ZX01BWF9LRVlfU0laRV07CisJWE1MQnl0ZSBhZXNCdWZbMTZdOworCVhNTEJ5dGUgYWVzT3V0QnVmWzE2XTsKKwlUWEZNQmFzZSAqIGIgPSBjaXBoZXJUZXh0LT5nZXRMYXN0VHhmbSgpOworCXVuc2lnbmVkIGludCBzeiA9ICh1bnNpZ25lZCBpbnQpIGItPnJlYWRCeXRlcyhidWYsIF9NWV9NQVhfS0VZX1NJWkUpOworCisJaWYgKHN6IDw9IDApIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDaXBoZXJFcnJvciwgCisJCQkiWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0IC0gQUVTIFdyYXBwZWQgS2V5IG5vdCBmb3VuZCIpOworCX0KKworCWlmIChzeiA9PSBfTVlfTUFYX0tFWV9TSVpFKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q2lwaGVyRXJyb3IsIAorCQkJIlhFTkNBbGdvcml0aG1IYW5kbGVyRGVmYXVsdCAtIEtleSB0byBkZWNyeXB0IHRvbyBiaWchIik7CisJfQorCisJLy8gRmluZCBudW1iZXIgb2YgYmxvY2tzLCBhbmQgZW5zdXJlIHdlIGFyZSBhIG11bHRpcGxlIG9mIDY0IGJpdHMKKwlpZiAoc3ogJSA4ICE9IDApIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDaXBoZXJFcnJvciwgCisJCQkiWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0IC0gQUVTIHdyYXBwZWQga2V5IG5vdCBhIG11bHRpcGxlIG9mIDY0Iik7CisJfQorCisJLy8gRG8gdGhlIGRlY3J5cHQgLSB0aGlzIGNhc3Qgd2lsbCB0aHJvdyBpZiB3cm9uZywgYnV0IHdlIHNob3VsZAorCS8vIG5vdCBoYXZlIGJlZW4gYWJsZSB0byBnZXQgdGhyb3VnaCBhbGdvcml0aG0gY2hlY2tzIG90aGVyd2lzZQorCVhTRUNDcnlwdG9TeW1tZXRyaWNLZXkgKiBzayA9IChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5ICopIGtleTsKKworCWludCBibG9ja3MgPSBzeiAvIDg7CisJaW50IG4gPSBibG9ja3MgLSAxOworCWZvciAoaW50IGogPSA1OyBqID49IDA7IGotLSkgeworCQlmb3IgKGludCBpID0gbiA7IGkgPiAwIDsgLS1pKSB7CisKKwkJCS8vIEdhdGhlciBibG9ja3MgdG8gZGVjcnlwdAorCQkJLy8gQQorCQkJbWVtY3B5KGFlc0J1ZiwgYnVmLCA4KTsKKwkJCS8vIFJpCisJCQltZW1jcHkoJmFlc0J1Zls4XSwgJmJ1Zls4ICogaV0sIDgpOworCQkJLy8gQSBtb2QgdAorCQkJYWVzQnVmWzddIF49ICgobiAqIGopICsgaSk7CisKKwkJCS8vIGRvIGRlY3J5cHQKKwkJCXNrLT5kZWNyeXB0SW5pdChmYWxzZSwgWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6TU9ERV9FQ0IpOwkJLy8gTm8gcGFkZGluZworCQkJaW50IHN6ID0gc2stPmRlY3J5cHQoYWVzQnVmLCBhZXNPdXRCdWYsIDE2LCAxNik7CisJCQlzeiArPSBzay0+ZGVjcnlwdEZpbmlzaCgmYWVzT3V0QnVmW3N6XSwgMTYgLSBzeik7CisKKwkJCWlmIChzeiAhPSAxNikgeworCQkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q2lwaGVyRXJyb3IsIAorCQkJCQkiWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0IC0gRXJyb3IgcGVyZm9ybWluZyBkZWNyeXB0IGluIEFFUyBVbndyYXAiKTsKKwkJCX0KKworCQkJLy8gQ29weSBiYWNrIHRvIHdoZXJlIHdlIGFyZQorCQkJLy8gQQorCQkJbWVtY3B5KGJ1ZiwgYWVzT3V0QnVmLCA4KTsKKwkJCS8vIFJpCisJCQltZW1jcHkoJmJ1Zls4ICogaV0sICZhZXNPdXRCdWZbOF0sIDgpOworCisJCX0KKwl9CisKKwkvLyBDaGVjayBpcyB2YWxpZAorCWlmIChtZW1jbXAoYnVmLCBzX0FFU19JViwgOCkgIT0gMCkgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkNpcGhlckVycm9yLCAKKwkJCSJYRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQgLSBkZWNyeXB0IGZhaWxlZCAtIEFFUyBJViBpcyBub3QgY29ycmVjdCIpOworCX0KKworCS8vIENvcHkgdG8gc2FmZWJ1ZmZlcgorCXJlc3VsdC5zYk1lbWNweUluKCZidWZbOF0sIG4gKiA4KTsKKworCXJldHVybiBuICogODsKK30KKworYm9vbCBYRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQ6OndyYXBLZXlBRVMoCisgICAJCVRYRk1DaGFpbiAqIGNpcGhlclRleHQsCisJCVhTRUNDcnlwdG9LZXkgKiBrZXksCisJCXNhZmVCdWZmZXIgJiByZXN1bHQpIHsKKworCS8vIGdldCB0aGUgcmF3IGtleQorCVhNTEJ5dGUgYnVmW19NWV9NQVhfS0VZX1NJWkUgKyA4XTsKKwltZW1jcHkoYnVmLCBzX0FFU19JViwgOCk7CisJWE1MQnl0ZSBhZXNCdWZbMTZdOworCVhNTEJ5dGUgYWVzT3V0QnVmWzMyXTsgIC8vIEdpdmUgdGhpcyBhbiBleHRyYSBibG9jayBmb3IgV2luQ0FQSQorCVRYRk1CYXNlICogYiA9IGNpcGhlclRleHQtPmdldExhc3RUeGZtKCk7CisJdW5zaWduZWQgaW50IHN6ID0gKHVuc2lnbmVkIGludCkgYi0+cmVhZEJ5dGVzKCZidWZbOF0sIF9NWV9NQVhfS0VZX1NJWkUpOworCisJaWYgKHN6IDw9IDApIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDaXBoZXJFcnJvciwgCisJCQkiWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0IC0gS2V5IG5vdCBmb3VuZCIpOworCX0KKworCWlmIChzeiA9PSBfTVlfTUFYX0tFWV9TSVpFKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q2lwaGVyRXJyb3IsIAorCQkJIlhFTkNBbGdvcml0aG1IYW5kbGVyRGVmYXVsdCAtIEtleSB0byBlbmNyeXB0IHRvbyBiaWchIik7CisJfQorCisJLy8gRmluZCBudW1iZXIgb2YgYmxvY2tzLCBhbmQgZW5zdXJlIHdlIGFyZSBhIG11bHRpcGxlIG9mIDY0IGJpdHMKKwlpZiAoc3ogJSA4ICE9IDApIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDaXBoZXJFcnJvciwgCisJCQkiWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0IC0gQUVTIHdyYXBwZWQga2V5IG5vdCBhIG11bHRpcGxlIG9mIDY0Iik7CisJfQorCisJLy8gRG8gdGhlIGRlY3J5cHQgLSB0aGlzIGNhc3Qgd2lsbCB0aHJvdyBpZiB3cm9uZywgYnV0IHdlIHNob3VsZAorCS8vIG5vdCBoYXZlIGJlZW4gYWJsZSB0byBnZXQgdGhyb3VnaCBhbGdvcml0aG0gY2hlY2tzIG90aGVyd2lzZQorCVhTRUNDcnlwdG9TeW1tZXRyaWNLZXkgKiBzayA9IChYU0VDQ3J5cHRvU3ltbWV0cmljS2V5ICopIGtleTsKKworCWludCBuID0gc3ogLyA4OworCisJZm9yIChpbnQgaiA9IDA7IGogPD0gNTsgKytqKSB7CisJCWZvciAoaW50IGkgPSAxIDsgaSA8PSBuIDsgKytpKSB7CisKKwkJCS8vIEdhdGhlciBibG9ja3MgdG8gZGVjcnlwdAorCQkJLy8gQQorCQkJbWVtY3B5KGFlc0J1ZiwgYnVmLCA4KTsKKwkJCS8vIFJpCisJCQltZW1jcHkoJmFlc0J1Zls4XSwgJmJ1Zls4ICogaV0sIDgpOworCisJCQkvLyBkbyBlbmNyeXB0CisJCQlzay0+ZW5jcnlwdEluaXQoZmFsc2UsIFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6Ok1PREVfRUNCKTsKKwkJCWludCBzeiA9IHNrLT5lbmNyeXB0KGFlc0J1ZiwgYWVzT3V0QnVmLCAxNiwgMzIpOworCQkJc3ogKz0gc2stPmVuY3J5cHRGaW5pc2goJmFlc091dEJ1Zltzel0sIDMyIC0gc3opOworCisJCQlpZiAoc3ogIT0gMTYpIHsKKwkJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkNpcGhlckVycm9yLCAKKwkJCQkJIlhFTkNBbGdvcml0aG1IYW5kbGVyRGVmYXVsdCAtIEVycm9yIHBlcmZvcm1pbmcgZW5jcnlwdCBpbiBBRVMgd3JhcCIpOworCQkJfQorCisJCQkvLyBDb3B5IGJhY2sgdG8gd2hlcmUgd2UgYXJlCisJCQkvLyBBCisJCQltZW1jcHkoYnVmLCBhZXNPdXRCdWYsIDgpOworCQkJLy8gQSBtb2QgdAorCQkJYnVmWzddIF49ICgobiAqIGopICsgaSk7CisJCQkvLyBSaQorCQkJbWVtY3B5KCZidWZbOCAqIGldLCAmYWVzT3V0QnVmWzhdLCA4KTsKKworCQl9CisJfQorCisJLy8gTm93IHdlIGhhdmUgdG8gYmFzZTY0IGVuY29kZQorCVhTRUNDcnlwdG9CYXNlNjQgKiBiNjQgPSBYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+YmFzZTY0KCk7CisKKwlpZiAoIWI2NCkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q3J5cHRvUHJvdmlkZXJFcnJvciwgCisJCQkJIlhFTkNBbGdvcml0aG1IYW5kbGVyRGVmYXVsdCAtIEVycm9yIGdldHRpbmcgYmFzZTY0IGVuY29kZXIgaW4gQUVTIHdyYXAiKTsKKworCX0KKworCUphbml0b3I8WFNFQ0NyeXB0b0Jhc2U2ND4gal9iNjQoYjY0KTsKKwl1bnNpZ25lZCBjaGFyICogYjY0QnVmZmVyOworCWludCBidWZMZW4gPSAoKG4gKyAxKSAqIDgpICogMzsKKwlYU0VDbmV3KGI2NEJ1ZmZlciwgdW5zaWduZWQgY2hhcltidWZMZW4gKyAxXSk7Ly8gT3ZlcmtpbGwKKwlBcnJheUphbml0b3I8dW5zaWduZWQgY2hhcj4gal9iNjRCdWZmZXIoYjY0QnVmZmVyKTsKKworCWI2NC0+ZW5jb2RlSW5pdCgpOworCWludCBvdXRwdXRMZW4gPSBiNjQtPmVuY29kZSAoYnVmLCAobisxKSAqIDgsIGI2NEJ1ZmZlciwgYnVmTGVuKTsKKwlvdXRwdXRMZW4gKz0gYjY0LT5lbmNvZGVGaW5pc2goJmI2NEJ1ZmZlcltvdXRwdXRMZW5dLCBidWZMZW4gLSBvdXRwdXRMZW4pOworCWI2NEJ1ZmZlcltvdXRwdXRMZW5dID0gJ1wwJzsKKworCS8vIENvcHkgdG8gc2FmZWJ1ZmZlcgorCXJlc3VsdC5zYlN0cmNweUluKChjb25zdCBjaGFyICopIGI2NEJ1ZmZlcik7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCQkJREVTIENNUyBLZXkgd3JhcC91bndyYXAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3Vuc2lnbmVkIGludCBYRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQ6OnVud3JhcEtleTNERVMoCisgICAJCVRYRk1DaGFpbiAqIGNpcGhlclRleHQsCisJCVhTRUNDcnlwdG9LZXkgKiBrZXksCisJCXNhZmVCdWZmZXIgJiByZXN1bHQpIHsKKworCS8vIFBlcmZvcm0gYW4gdW53cmFwIG9uIHRoZSBrZXkKKwlzYWZlQnVmZmVyIGNpcGhlclNCOworCisJLy8gQ2F0IHRoZSBlbmNyeXB0ZWQga2V5CisJWE1MQnl0ZSBidWZbX01ZX01BWF9LRVlfU0laRV07CisJVFhGTUJhc2UgKiBiID0gY2lwaGVyVGV4dC0+Z2V0TGFzdFR4Zm0oKTsKKwl1bnNpZ25lZCBpbnQgb2Zmc2V0ID0gMDsKKwl1bnNpZ25lZCBpbnQgc3ogPSAodW5zaWduZWQgaW50KSBiLT5yZWFkQnl0ZXMoYnVmLCBfTVlfTUFYX0tFWV9TSVpFKTsKKworCXdoaWxlIChzeiA+IDApIHsKKwkJY2lwaGVyU0Iuc2JNZW1jcHlJbihvZmZzZXQsIGJ1Ziwgc3opOworCQlvZmZzZXQgKz0gc3o7CisJCXN6ID0gKHVuc2lnbmVkIGludCkgYi0+cmVhZEJ5dGVzKGJ1ZiwgX01ZX01BWF9LRVlfU0laRSk7CisJfQorCisJaWYgKG9mZnNldCA+IF9NWV9NQVhfS0VZX1NJWkUpIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDaXBoZXJFcnJvciwgCisJCQkiWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0IC0gS2V5IHRvIGRlY3J5cHQgdG9vIGJpZyEiKTsKKwl9CisKKwkvLyBEbyB0aGUgZGVjcnlwdCAtIHRoaXMgY2FzdCB3aWxsIHRocm93IGlmIHdyb25nLCBidXQgd2Ugc2hvdWxkCisJLy8gbm90IGhhdmUgYmVlbiBhYmxlIHRvIGdldCB0aHJvdWdoIGFsZ29yaXRobSBjaGVja3Mgb3RoZXJ3aXNlCisJWFNFQ0NyeXB0b1N5bW1ldHJpY0tleSAqIHNrID0gKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXkgKikga2V5OworCisJc2stPmRlY3J5cHRJbml0KGZhbHNlLCBYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpNT0RFX0NCQywgc18zREVTX0NNU19JVik7CisJLy8gSWYga2V5IGlzIGJpZ2dlciB0aGFuIHRoaXMsIHRoZW4gd2UgaGF2ZSBhIHByb2JsZW0KKwlzeiA9IHNrLT5kZWNyeXB0KGNpcGhlclNCLnJhd0J1ZmZlcigpLCBidWYsIG9mZnNldCwgX01ZX01BWF9LRVlfU0laRSk7CisKKwlzeiArPSBzay0+ZGVjcnlwdEZpbmlzaCgmYnVmW3N6XSwgX01ZX01BWF9LRVlfU0laRSAtIHN6KTsKKworCWlmIChzeiA8PSAwKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q2lwaGVyRXJyb3IsIAorCQkJIlhFTkNBbGdvcml0aG1IYW5kbGVyRGVmYXVsdCAtIEVycm9yIGRlY3J5cHRpbmcga2V5ISIpOworCX0KKworCS8vIFdlIG5vdyBoYXZlIHRoZSBmaXJzdCBjdXQsIHJldmVyc2UgdGhlIGNpcGhlciB0ZXh0CisJWE1MQnl0ZSBidWYyW19NWV9NQVhfS0VZX1NJWkVdOworCWZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc3o7ICsrIGkpIHsKKwkJYnVmMltzeiAtIGkgLSAxXSA9IGJ1ZltpXTsKKwl9CisKKwkvLyBkZWNyeXB0IGFnYWluCisJc2stPmRlY3J5cHRJbml0KGZhbHNlKTsKKwlvZmZzZXQgPSBzay0+ZGVjcnlwdChidWYyLCBidWYsIHN6LCBfTVlfTUFYX0tFWV9TSVpFKTsKKwlvZmZzZXQgKz0gc2stPmRlY3J5cHRGaW5pc2goJmJ1ZltvZmZzZXRdLCBfTVlfTUFYX0tFWV9TSVpFIC0gb2Zmc2V0KTsKKworCS8vIENhbGN1bGF0ZSB0aGUgQ01TIEtleSBDaGVja3N1bQorCVhTRUNDcnlwdG9IYXNoICogc2hhMSA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5oYXNoU0hBMSgpOworCWlmICghc2hhMSkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q3J5cHRvUHJvdmlkZXJFcnJvciwgCisJCQkJIlhFTkNBbGdvcml0aG1IYW5kbGVyRGVmYXVsdCAtIEVycm9yIGdldHRpbmcgU0hBLTEgb2JqZWN0IGluIDNERVMgdW53cmFwIik7CisKKwl9CisJSmFuaXRvcjxYU0VDQ3J5cHRvSGFzaD4gal9zaGExKHNoYTEpOworCXNoYTEtPnJlc2V0KCk7CisJc2hhMS0+aGFzaChidWYsIG9mZnNldCAtIDgpOworCXNoYTEtPmZpbmlzaChidWYyLCBfTVlfTUFYX0tFWV9TSVpFKTsKKworCS8vIENvbXBhcmUKKwlmb3IgKHVuc2lnbmVkIGludCBqID0gMDsgaiA8IDg7ICsraikgeworCisJCWlmIChidWZbb2Zmc2V0IC0gOCArIGpdICE9IGJ1ZjJbal0pIHsKKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q2lwaGVyRXJyb3IsIAorCQkJCSJYRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQ6OnVud3JhcEtleTNERVMgLSBDTVMgS2V5IENoZWNrc3VtIGRvZXMgbm90IG1hdGNoIik7CisJCX0KKwl9CisKKwlyZXN1bHQuc2JNZW1jcHlJbihidWYsIG9mZnNldCAtIDgpOworCisJcmV0dXJuIG9mZnNldCAtIDg7CisKK30KKworYm9vbCBYRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQ6OndyYXBLZXkzREVTKAorICAgCQlUWEZNQ2hhaW4gKiBjaXBoZXJUZXh0LAorCQlYU0VDQ3J5cHRvS2V5ICoga2V5LAorCQlzYWZlQnVmZmVyICYgcmVzdWx0KSB7CisKKwkvLyBDYXQgdGhlIHBsYWludGV4dCBrZXkKKwlYTUxCeXRlIGJ1ZltfTVlfTUFYX0tFWV9TSVpFICsgMTZdOworCVRYRk1CYXNlICogYiA9IGNpcGhlclRleHQtPmdldExhc3RUeGZtKCk7CisJaW50IG9mZnNldCA9IDA7CisJdW5zaWduZWQgaW50IHN6ID0gKHVuc2lnbmVkIGludCkgYi0+cmVhZEJ5dGVzKGJ1ZiwgX01ZX01BWF9LRVlfU0laRSk7CisKKwlpZiAoc3ogPD0gMCkgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkNpcGhlckVycm9yLCAKKwkJCSJYRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQ6OndyYXBLZXkzREVTIC0gVW5hYmxlIHRvIHJlYWQga2V5Iik7CisJfQorCisJaWYgKHN6ID49IF9NWV9NQVhfS0VZX1NJWkUpIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDaXBoZXJFcnJvciwgCisJCQkiWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0Ojp3cmFwS2V5M0RFUyAtIEtleSB0byBkZWNyeXB0IHRvbyBiaWchIik7CisJfQorCisJaWYgKHN6ICUgOCAhPSAwKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q2lwaGVyRXJyb3IsIAorCQkJIlhFTkNBbGdvcml0aG1IYW5kbGVyRGVmYXVsdDo6d3JhcEtleTNERVMgLSBLZXkgdG8gZW5jcnlwdCBub3QgYSBtdWx0aXBsZSBvZiA4IGJ5dGVzIik7CisJfQorCisJLy8gQ2FsY3VsYXRlIHRoZSBDTVMgS2V5IENoZWNrc3VtCisKKwkvLyBEbyB0aGUgZmlyc3QgZW5jcnlwdAorCVhNTEJ5dGUgYnVmMltfTVlfTUFYX0tFWV9TSVpFICsgMTZdOworCisJWFNFQ0NyeXB0b0hhc2ggKiBzaGExID0gWFNFQ1BsYXRmb3JtVXRpbHM6OmdfY3J5cHRvUHJvdmlkZXItPmhhc2hTSEExKCk7CisJaWYgKCFzaGExKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDcnlwdG9Qcm92aWRlckVycm9yLCAKKwkJCQkiWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0IC0gRXJyb3IgZ2V0dGluZyBTSEEtMSBvYmplY3QgaW4gM0RFUyB3cmFwIik7CisKKwl9CisJSmFuaXRvcjxYU0VDQ3J5cHRvSGFzaD4gal9zaGExKHNoYTEpOworCXNoYTEtPnJlc2V0KCk7CisJc2hhMS0+aGFzaChidWYsIHN6KTsKKwlzaGExLT5maW5pc2goYnVmMiwgX01ZX01BWF9LRVlfU0laRSk7CisKKwlmb3IgKGludCBqID0gMDsgaiA8IDggOyArK2opCisJCWJ1ZltzeisrXSA9IGJ1ZjJbal07CisKKwkvLyBEbyB0aGUgZmlyc3QgZW5jcnlwdCAtIHRoaXMgY2FzdCB3aWxsIHRocm93IGlmIHdyb25nLCBidXQgd2Ugc2hvdWxkCisJLy8gbm90IGhhdmUgYmVlbiBhYmxlIHRvIGdldCB0aHJvdWdoIGFsZ29yaXRobSBjaGVja3Mgb3RoZXJ3aXNlCisJWFNFQ0NyeXB0b1N5bW1ldHJpY0tleSAqIHNrID0gKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXkgKikga2V5OworCisJc2stPmVuY3J5cHRJbml0KGZhbHNlKTsKKwkvLyBJZiBrZXkgaXMgYmlnZ2VyIHRoYW4gdGhpcywgdGhlbiB3ZSBoYXZlIGEgcHJvYmxlbQorCXN6ID0gc2stPmVuY3J5cHQoYnVmLCBidWYyLCBzeiwgX01ZX01BWF9LRVlfU0laRSk7CisJc3ogKz0gc2stPmVuY3J5cHRGaW5pc2goJmJ1ZjJbc3pdLCBfTVlfTUFYX0tFWV9TSVpFIC0gc3opOworCisJaWYgKHN6IDw9IDApIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDaXBoZXJFcnJvciwgCisJCQkiWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0Ojp3cmFwS2V5M0RFUyAtIEVycm9yIGVuY3J5cHRpbmcga2V5ISIpOworCX0KKworCS8vIFdlIG5vdyBoYXZlIHRoZSBmaXJzdCBjdXQsIHJldmVyc2UgdGhlIGNpcGhlciB0ZXh0CisJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzejsgKysgaSkgeworCQlidWZbc3ogLSBpIC0gMV0gPSBidWYyW2ldOworCX0KKworCS8vIGVuY3J5cHQgYWdhaW4KKwlzay0+ZW5jcnlwdEluaXQoZmFsc2UsIFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6Ok1PREVfQ0JDLCBzXzNERVNfQ01TX0lWKTsKKwlvZmZzZXQgPSBzay0+ZW5jcnlwdChidWYsIGJ1ZjIsIHN6LCBfTVlfTUFYX0tFWV9TSVpFKTsKKwlvZmZzZXQgKz0gc2stPmVuY3J5cHRGaW5pc2goJmJ1ZjJbb2Zmc2V0XSwgX01ZX01BWF9LRVlfU0laRSAtIG9mZnNldCk7CisKKwkvLyBCYXNlNjQgZW5jb2RlCisJWFNFQ0NyeXB0b0Jhc2U2NCAqIGI2NCA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5iYXNlNjQoKTsKKworCWlmICghYjY0KSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDcnlwdG9Qcm92aWRlckVycm9yLCAKKwkJCQkiWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0IC0gRXJyb3IgZ2V0dGluZyBiYXNlNjQgZW5jb2RlciBpbiAzREVTIHdyYXAiKTsKKworCX0KKworCUphbml0b3I8WFNFQ0NyeXB0b0Jhc2U2ND4gal9iNjQoYjY0KTsKKwl1bnNpZ25lZCBjaGFyICogYjY0QnVmZmVyOworCWludCBidWZMZW4gPSAob2Zmc2V0ICsgOSkgKiAzOworCVhTRUNuZXcoYjY0QnVmZmVyLCB1bnNpZ25lZCBjaGFyW2J1ZkxlbiArIDFdKTsvLyBPdmVya2lsbAorCUFycmF5SmFuaXRvcjx1bnNpZ25lZCBjaGFyPiBqX2I2NEJ1ZmZlcihiNjRCdWZmZXIpOworCisJYjY0LT5lbmNvZGVJbml0KCk7CisJaW50IG91dHB1dExlbiA9IGI2NC0+ZW5jb2RlICgmYnVmMls4XSwgb2Zmc2V0LTgsIGI2NEJ1ZmZlciwgYnVmTGVuKTsKKwlvdXRwdXRMZW4gKz0gYjY0LT5lbmNvZGVGaW5pc2goJmI2NEJ1ZmZlcltvdXRwdXRMZW5dLCBidWZMZW4gLSBvdXRwdXRMZW4pOworCWI2NEJ1ZmZlcltvdXRwdXRMZW5dID0gJ1wwJzsKKworCS8vIENvcHkgdG8gc2FmZWJ1ZmZlcgorCXJlc3VsdC5zYlN0cmNweUluKChjb25zdCBjaGFyICopIGI2NEJ1ZmZlcik7CisKKwlyZXR1cm4gdHJ1ZTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlJbnB1dFN0cmVhbSBkZWNyeXB0aW9uCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQorYm9vbCBYRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQ6OmFwcGVuZERlY3J5cHRDaXBoZXJUWEZNKAorCQlUWEZNQ2hhaW4gKiBjaXBoZXJUZXh0LAorCQlYRU5DRW5jcnlwdGlvbk1ldGhvZCAqIGVuY3J5cHRpb25NZXRob2QsCisJCVhTRUNDcnlwdG9LZXkgKiBrZXksCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGRvYworCQkpIHsKKworCS8vIFdlIG9ubHkgc3VwcG9ydCB0aGlzIGZvciBidWxrIFN5bW1ldHJpYyBrZXkgYWxnb3JpdGhtcworCisJWFNFQ0NyeXB0b0tleTo6S2V5VHlwZSBrdDsKKwlYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpTeW1tZXRyaWNLZXlUeXBlIHNrdDsKKwlib29sIGlzS2V5V3JhcCA9IGZhbHNlOworCisJbWFwVVJJVG9LZXkoZW5jcnlwdGlvbk1ldGhvZC0+Z2V0QWxnb3JpdGhtKCksIGtleSwga3QsIHNrdCwgaXNLZXlXcmFwKTsKKwlpZiAoa3QgIT0gWFNFQ0NyeXB0b0tleTo6S0VZX1NZTU1FVFJJQyB8fCBpc0tleVdyYXAgPT0gdHJ1ZSkgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkNpcGhlckVycm9yLCAKKwkJCSJYRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQ6OmFwcGVuZERlY3J5cHRDaXBoZXJUWEZNIC0gb25seSBzdXBwb3J0cyBidWxrIHN5bW1ldHJpYyBhbGdvcml0aG1zIik7CisJfQorCisJLy8gQWRkIHRoZSBkZWNyeXB0aW9uIFRYRk0KKworCVRYRk1DaXBoZXIgKiB0Y2lwaGVyOworCVhTRUNuZXcodGNpcGhlciwgVFhGTUNpcGhlcihkb2MsIGtleSwgZmFsc2UpKTsKKworCWNpcGhlclRleHQtPmFwcGVuZFR4Zm0odGNpcGhlcik7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlSU0EgU2FmZUJ1ZmZlciBkZWNyeXB0aW9uCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit1bnNpZ25lZCBpbnQgWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0Ojpkb1JTQURlY3J5cHRUb1NhZmVCdWZmZXIoCisJCVRYRk1DaGFpbiAqIGNpcGhlclRleHQsCisJCVhFTkNFbmNyeXB0aW9uTWV0aG9kICogZW5jcnlwdGlvbk1ldGhvZCwKKwkJWFNFQ0NyeXB0b0tleSAqIGtleSwKKwkJRE9NRG9jdW1lbnQgKiBkb2MsCisJCXNhZmVCdWZmZXIgJiByZXN1bHQpIHsKKworCS8vIE9ubHkgd29ya3Mgd2l0aCBSU0FfUFJJVkFURSBvciBQQUlSCisJaWYgKGtleS0+Z2V0S2V5VHlwZSgpID09IFhTRUNDcnlwdG9LZXk6OktFWV9SU0FfUFVCTElDKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q2lwaGVyRXJyb3IsIAorCQkJIlhFTkNBbGdvcml0aG1IYW5kbGVyRGVmYXVsdCAtIFJTQSBEZWNyeXB0IG11c3QgdXNlIHByaXZhdGUga2V5Iik7CisJfQorCisJLy8gS25vdyB0aGlzIGlzIGFuIFJTQSBrZXksIHNvIGp1c3QgY2FzdAorCisJWFNFQ0NyeXB0b0tleVJTQSAqIHJzYSA9IChYU0VDQ3J5cHRvS2V5UlNBICopIGtleTsKKworCS8vIEFsbG9jYXRlIGFuIG91dHB1dCBidWZmZXIKKwl1bnNpZ25lZCBjaGFyICogZGVjQnVmOworCVhTRUNuZXcoZGVjQnVmLCB1bnNpZ25lZCBjaGFyW3JzYS0+Z2V0TGVuZ3RoKCldKTsKKwlBcnJheUphbml0b3I8dW5zaWduZWQgY2hhcj4gal9kZWNCdWYoZGVjQnVmKTsKKworCS8vIElucHV0CisJVFhGTUJhc2UgKiBiID0gY2lwaGVyVGV4dC0+Z2V0TGFzdFR4Zm0oKTsKKwlzYWZlQnVmZmVyIGNpcGhlclNCOworCVhNTEJ5dGUgYnVmWzEwMjRdOworCXVuc2lnbmVkIGludCBvZmZzZXQgPSAwOworCisJdW5zaWduZWQgaW50IGJ5dGVzUmVhZCA9ICh1bnNpZ25lZCBpbnQpIGItPnJlYWRCeXRlcyhidWYsIDEwMjQpOworCXdoaWxlIChieXRlc1JlYWQgPiAwKSB7CisJCWNpcGhlclNCLnNiTWVtY3B5SW4ob2Zmc2V0LCBidWYsIGJ5dGVzUmVhZCk7CisJCW9mZnNldCArPSBieXRlc1JlYWQ7CisJCWJ5dGVzUmVhZCA9ICh1bnNpZ25lZCBpbnQpIGItPnJlYWRCeXRlcyhidWYsIDEwMjQpOworCX0KKworCXVuc2lnbmVkIGludCBkZWNyeXB0TGVuOworCisJLy8gTm93IHdlIGZpbmQgb3V0IHdoYXQga2luZCBvZiBwYWRkaW5nCisJaWYgKHN0ckVxdWFscyhlbmNyeXB0aW9uTWV0aG9kLT5nZXRBbGdvcml0aG0oKSwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJUlNBXzFfNSkpIHsKKworCQkvLyBEbyBkZWNyeXB0CisJCWRlY3J5cHRMZW4gPSByc2EtPnByaXZhdGVEZWNyeXB0KGNpcGhlclNCLnJhd0J1ZmZlcigpLCAKKwkJCQkJCQkJCQkJCSAgZGVjQnVmLCAKKwkJCQkJCQkJCQkJCSAgb2Zmc2V0LCAKKwkJCQkJCQkJCQkJCSAgcnNhLT5nZXRMZW5ndGgoKSwgCisJCQkJCQkJCQkJCQkgIFhTRUNDcnlwdG9LZXlSU0E6OlBBRF9QS0NTXzFfNSwgCisJCQkJCQkJCQkJCQkgIEhBU0hfTk9ORSk7CisJfQorCWVsc2UgaWYgKHN0ckVxdWFscyhlbmNyeXB0aW9uTWV0aG9kLT5nZXRBbGdvcml0aG0oKSwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJUlNBX09BRVBfTUdGUDEpKSB7CisKKwkgICAgY29uc3QgWE1MQ2gqIGRpZ21ldGggPSBlbmNyeXB0aW9uTWV0aG9kLT5nZXREaWdlc3RNZXRob2QoKTsKKwkJaWYgKGRpZ21ldGggJiYgKmRpZ21ldGggJiYgIXN0ckVxdWFscyhkaWdtZXRoLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklTSEExKSkgeworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDaXBoZXJFcnJvciwgCisJCQkJIlhFTkNBbGdvcml0aG1IYW5kbGVyRGVmYXVsdDo6ZG9SU0FEZWNyeXB0VG9TYWZlQnVmZmVyIC0gQ3VycmVudGx5IG9ubHkgU0hBLTEgaXMgc3VwcG9ydGVkIGZvciBPQUVQIik7CisJCX0KKworCQkvLyBSZWFkIG91dCBhbnkgT0FFUCBwYXJhbXMKKwkJdW5zaWduZWQgY2hhciAqIG9hZXBQYXJhbXNCdWYgPSBOVUxMOworCQljb25zdCBYTUxDaCAqIG9hZXBQYXJhbXMgPSBlbmNyeXB0aW9uTWV0aG9kLT5nZXRPQUVQcGFyYW1zKCk7CisJCXVuc2lnbmVkIGludCBzeiA9IDA7CisJCWlmIChvYWVwUGFyYW1zICE9IE5VTEwpIHsKKworCQkJWFNFQ0F1dG9QdHJDaGFyIG9hZXBQYXJhbXNTdHIob2FlcFBhcmFtcyk7CisKKwkJCXVuc2lnbmVkIGludCBidWZMZW4gPSAodW5zaWduZWQgaW50KSBzdHJsZW4ob2FlcFBhcmFtc1N0ci5nZXQoKSk7CisJCQlvYWVwUGFyYW1zQnVmID0gbmV3IHVuc2lnbmVkIGNoYXJbYnVmTGVuXTsKKwkJCUFycmF5SmFuaXRvcjx1bnNpZ25lZCBjaGFyPiBqX29hZXBQYXJhbXNCdWYob2FlcFBhcmFtc0J1Zik7CisKKwkJCVhTRUNDcnlwdG9CYXNlNjQgKiBiNjQgPSAKKwkJCQlYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+YmFzZTY0KCk7CisJCQlKYW5pdG9yPFhTRUNDcnlwdG9CYXNlNjQ+IGpfYjY0KGI2NCk7CisKKwkJCWI2NC0+ZGVjb2RlSW5pdCgpOworCQkJc3ogPSBiNjQtPmRlY29kZSgodW5zaWduZWQgY2hhciAqKSBvYWVwUGFyYW1zU3RyLmdldCgpLCBidWZMZW4sIG9hZXBQYXJhbXNCdWYsIGJ1Zkxlbik7CisJCQlzeiArPSBiNjQtPmRlY29kZUZpbmlzaCgmb2FlcFBhcmFtc0J1Zltzel0sIGJ1ZkxlbiAtIHN6KTsKKworCQkJcnNhLT5zZXRPQUVQcGFyYW1zKG9hZXBQYXJhbXNCdWYsIHN6KTsKKworCQl9CisJCWVsc2UKKwkJCXJzYS0+c2V0T0FFUHBhcmFtcyhOVUxMLCAwKTsKKworCQlkZWNyeXB0TGVuID0gcnNhLT5wcml2YXRlRGVjcnlwdChjaXBoZXJTQi5yYXdCdWZmZXIoKSwgCisJCQkJCQkJCQkJCQkgIGRlY0J1ZiwgCisJCQkJCQkJCQkJCQkgIG9mZnNldCwgCisJCQkJCQkJCQkJCQkgIHJzYS0+Z2V0TGVuZ3RoKCksIAorCQkJCQkJCQkJCQkJICBYU0VDQ3J5cHRvS2V5UlNBOjpQQURfT0FFUF9NR0ZQMSwgCisJCQkJCQkJCQkJCQkgIEhBU0hfU0hBMSk7CisKKwl9CisKKwllbHNlIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDaXBoZXJFcnJvciwgCisJCQkiWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0Ojpkb1JTQURlY3J5cHRUb1NhZmVCdWZmZXIgLSBVbmtub3duIHBhZGRpbmcgdHlwZSIpOworCX0KKwkvLyBDb3B5IHRvIG91dHB1dAorCXJlc3VsdC5zYk1lbWNweUluKGRlY0J1ZiwgZGVjcnlwdExlbik7CisJCisJbWVtc2V0KGRlY0J1ZiwgMCwgZGVjcnlwdExlbik7CisKKwlyZXR1cm4gZGVjcnlwdExlbjsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlTYWZlQnVmZmVyIGRlY3J5cHRpb24KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3Vuc2lnbmVkIGludCBYRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQ6OmRlY3J5cHRUb1NhZmVCdWZmZXIoCisJCVRYRk1DaGFpbiAqIGNpcGhlclRleHQsCisJCVhFTkNFbmNyeXB0aW9uTWV0aG9kICogZW5jcnlwdGlvbk1ldGhvZCwKKwkJWFNFQ0NyeXB0b0tleSAqIGtleSwKKwkJRE9NRG9jdW1lbnQgKiBkb2MsCisJCXNhZmVCdWZmZXIgJiByZXN1bHQKKwkJKSB7CisKKwlYU0VDQ3J5cHRvS2V5OjpLZXlUeXBlIGt0OworCVhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OlN5bW1ldHJpY0tleVR5cGUgc2t0OworCWJvb2wgaXNLZXlXcmFwID0gZmFsc2U7CisKKwlpZiAoZW5jcnlwdGlvbk1ldGhvZCA9PSBOVUxMKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q2lwaGVyRXJyb3IsCisJCQkiWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0OjpkZWNyeXB0VG9TYWZlQnVmZmVyIC0gQ2Fubm90IG9wZXJhdGUgd2l0aCBOVUxMIGVuY3J5cHRpb24gTWV0aG9kIik7CisJfQorCisKKwkvLyBDaGVjayB0aGUgdXJpIGFnYWluc3QgdGhlIGtleSB0eXBlCisJbWFwVVJJVG9LZXkoZW5jcnlwdGlvbk1ldGhvZC0+Z2V0QWxnb3JpdGhtKCksIGtleSwga3QsIHNrdCwgaXNLZXlXcmFwKTsKKworCS8vIFJTQT8KKwlpZiAoa3QgPT0gWFNFQ0NyeXB0b0tleTo6S0VZX1JTQV9QQUlSIHx8IAorCQlrdCA9PSBYU0VDQ3J5cHRvS2V5OjpLRVlfUlNBX1BVQkxJQyB8fCAKKwkJa3QgPT0gWFNFQ0NyeXB0b0tleTo6S0VZX1JTQV9QUklWQVRFKSB7CisKKwkJcmV0dXJuIGRvUlNBRGVjcnlwdFRvU2FmZUJ1ZmZlcihjaXBoZXJUZXh0LCBlbmNyeXB0aW9uTWV0aG9kLCBrZXksIGRvYywgcmVzdWx0KTsKKworCX0KKworCS8vIEVuc3VyZSBpcyBzeW1tZXRyaWMgYmVmb3JlIHdlIGNvbnRpbnVlCisJaWYgKGt0ICE9IFhTRUNDcnlwdG9LZXk6OktFWV9TWU1NRVRSSUMpIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDaXBoZXJFcnJvciwKKwkJCSJYRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQ6OmRlY3J5cHRUb1NhZmVCdWZmZXIgLSBOb3QgYW4gUlNBIGtleSwgYnV0IG5vdCBzeW1tZXRyaWMiKTsKKwl9CisKKwkvLyBLZXkgd3JhcD8KKworCWlmIChpc0tleVdyYXAgPT0gdHJ1ZSkgeworCisJCWlmIChza3QgPT0gWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZX0FFU18xMjggfHwKKwkJCXNrdCA9PSBYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfQUVTXzE5MiB8fAorCQkJc2t0ID09IFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV9BRVNfMjU2KSB7CisKKwkJCXJldHVybiB1bndyYXBLZXlBRVMoY2lwaGVyVGV4dCwga2V5LCByZXN1bHQpOworCisJCX0KKworCQllbHNlIGlmIChza3QgPT0gWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZXzNERVNfMTkyKSB7CisJCQlyZXR1cm4gdW53cmFwS2V5M0RFUyhjaXBoZXJUZXh0LCBrZXksIHJlc3VsdCk7CisJCX0KKworCQllbHNlIHsKKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q2lwaGVyRXJyb3IsCisJCQkJIlhFTkNBbGdvcml0aG1IYW5kbGVyRGVmYXVsdDo6ZGVjcnlwdFRvU2FmZUJ1ZmZlciAtIGRvbid0IGtub3cgaG93IHRvIGRvIGtleSB3cmFwIGZvciBhbGdvcml0aG0iKTsKKwkJfQorCisJfQorCisJLy8gSXQncyBzeW1tZXRyaWMgYW5kIGl0J3Mgbm90IGEga2V5IHdyYXAsIHNvIGp1c3QgdHJlYXQgYXMgYSBibG9jayBhbGdvcml0aG0KKworCVRYRk1DaXBoZXIgKiB0Y2lwaGVyOworCVhTRUNuZXcodGNpcGhlciwgVFhGTUNpcGhlcihkb2MsIGtleSwgZmFsc2UpKTsKKworCWNpcGhlclRleHQtPmFwcGVuZFR4Zm0odGNpcGhlcik7CisKKwkvLyBEbyB0aGUgZGVjcnlwdCB0byB0aGUgc2FmZUJ1ZmZlcgorCisJcmVzdWx0LnNiU3RyY3B5SW4oIiIpOworCXVuc2lnbmVkIGludCBvZmZzZXQgPSAwOworCVhNTEJ5dGUgYnVmWzEwMjRdOworCVRYRk1CYXNlICogYiA9IGNpcGhlclRleHQtPmdldExhc3RUeGZtKCk7CisKKwl1bnNpZ25lZCBpbnQgYnl0ZXNSZWFkID0gKHVuc2lnbmVkIGludCkgYi0+cmVhZEJ5dGVzKGJ1ZiwgMTAyNCk7CisJd2hpbGUgKGJ5dGVzUmVhZCA+IDApIHsKKwkJcmVzdWx0LnNiTWVtY3B5SW4ob2Zmc2V0LCBidWYsIGJ5dGVzUmVhZCk7CisJCW9mZnNldCArPSBieXRlc1JlYWQ7CisJCWJ5dGVzUmVhZCA9ICh1bnNpZ25lZCBpbnQpIGItPnJlYWRCeXRlcyhidWYsIDEwMjQpOworCX0KKworCXJlc3VsdFtvZmZzZXRdID0gJ1wwJzsgCisKKwlyZXR1cm4gb2Zmc2V0OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCVJTQSBTYWZlQnVmZmVyIGVuY3J5cHRpb24KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Jvb2wgWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0Ojpkb1JTQUVuY3J5cHRUb1NhZmVCdWZmZXIoCisJCVRYRk1DaGFpbiAqIHBsYWluVGV4dCwKKwkJWEVOQ0VuY3J5cHRpb25NZXRob2QgKiBlbmNyeXB0aW9uTWV0aG9kLAorCQlYU0VDQ3J5cHRvS2V5ICoga2V5LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBkb2MsCisJCXNhZmVCdWZmZXIgJiByZXN1bHQKKwkJKSB7CisKKwkvLyBPbmx5IHdvcmtzIHdpdGggUlNBX1BSSVZBVEUgb3IgUEFJUgorCWlmIChrZXktPmdldEtleVR5cGUoKSA9PSBYU0VDQ3J5cHRvS2V5OjpLRVlfUlNBX1BSSVZBVEUpIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDaXBoZXJFcnJvciwgCisJCQkiWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0IC0gUlNBIEVuY3J5cHQgbXVzdCB1c2UgcHVibGljIGtleSIpOworCX0KKworCVhTRUNDcnlwdG9LZXlSU0EgKiByc2EgPSAoWFNFQ0NyeXB0b0tleVJTQSAqKSBrZXk7CisJCisJLy8gQWxsb2NhdGUgYW4gb3V0cHV0IGJ1ZmZlcgorCXVuc2lnbmVkIGNoYXIgKiBlbmNCdWY7CisJWFNFQ25ldyhlbmNCdWYsIHVuc2lnbmVkIGNoYXJbcnNhLT5nZXRMZW5ndGgoKV0pOworCUFycmF5SmFuaXRvcjx1bnNpZ25lZCBjaGFyPiBqX2VuY0J1ZihlbmNCdWYpOworCisJLy8gSW5wdXQKKwlUWEZNQmFzZSAqIGIgPSBwbGFpblRleHQtPmdldExhc3RUeGZtKCk7CisJc2FmZUJ1ZmZlciBwbGFpblNCOworCXBsYWluU0IuaXNTZW5zaXRpdmUoKTsKKworCVhNTEJ5dGUgYnVmWzEwMjRdOworCXVuc2lnbmVkIGludCBvZmZzZXQgPSAwOworCisJdW5zaWduZWQgaW50IGJ5dGVzUmVhZCA9ICh1bnNpZ25lZCBpbnQpIGItPnJlYWRCeXRlcyhidWYsIDEwMjQpOworCXdoaWxlIChieXRlc1JlYWQgPiAwKSB7CisJCXBsYWluU0Iuc2JNZW1jcHlJbihvZmZzZXQsIGJ1ZiwgYnl0ZXNSZWFkKTsKKwkJb2Zmc2V0ICs9IGJ5dGVzUmVhZDsKKwkJYnl0ZXNSZWFkID0gKHVuc2lnbmVkIGludCkgYi0+cmVhZEJ5dGVzKGJ1ZiwgMTAyNCk7CisJfQorCisJdW5zaWduZWQgaW50IGVuY3J5cHRMZW47CisKKwkvLyBEbyBkZWNyeXB0CisJaWYgKHN0ckVxdWFscyhlbmNyeXB0aW9uTWV0aG9kLT5nZXRBbGdvcml0aG0oKSwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJUlNBXzFfNSkpIHsKKwkJZW5jcnlwdExlbiA9IHJzYS0+cHVibGljRW5jcnlwdChwbGFpblNCLnJhd0J1ZmZlcigpLCAKKwkJCQkJCQkJCQkJCSAgZW5jQnVmLCAKKwkJCQkJCQkJCQkJCSAgb2Zmc2V0LCAKKwkJCQkJCQkJCQkJCSAgcnNhLT5nZXRMZW5ndGgoKSwgCisJCQkJCQkJCQkJCQkgIFhTRUNDcnlwdG9LZXlSU0E6OlBBRF9QS0NTXzFfNSwgCisJCQkJCQkJCQkJCQkgIEhBU0hfTk9ORSk7CisJfQorCisJZWxzZSBpZiAoc3RyRXF1YWxzKGVuY3J5cHRpb25NZXRob2QtPmdldEFsZ29yaXRobSgpLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklSU0FfT0FFUF9NR0ZQMSkpIHsKKworCQllbmNyeXB0aW9uTWV0aG9kLT5zZXREaWdlc3RNZXRob2QoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJU0hBMSk7CisKKwkJLy8gQ2hlY2sgZm9yIE9BRVAgcGFyYW1zCisJCWludCBvYWVwUGFyYW1zTGVuID0gcnNhLT5nZXRPQUVQcGFyYW1zTGVuKCk7CisJCWlmIChvYWVwUGFyYW1zTGVuID4gMCkgeworCQkJdW5zaWduZWQgY2hhciAqIG9hZXBQYXJhbXNCNjQ7CisJCQlYU0VDbmV3KG9hZXBQYXJhbXNCNjQsIHVuc2lnbmVkIGNoYXJbb2FlcFBhcmFtc0xlbiAqIDJdKTsKKwkJCUFycmF5SmFuaXRvcjx1bnNpZ25lZCBjaGFyPiBqX29hZXBQYXJhbXNCNjQob2FlcFBhcmFtc0I2NCk7CisKKwkJCVhTRUNDcnlwdG9CYXNlNjQgKiBiNjQgPSAKKwkJCQlYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+YmFzZTY0KCk7CisJCQlKYW5pdG9yPFhTRUNDcnlwdG9CYXNlNjQ+IGpfYjY0KGI2NCk7CisKKwkJCWI2NC0+ZW5jb2RlSW5pdCgpOworCQkJaW50IHN6ID0gYjY0LT5lbmNvZGUocnNhLT5nZXRPQUVQcGFyYW1zKCksIG9hZXBQYXJhbXNMZW4sIG9hZXBQYXJhbXNCNjQsIG9hZXBQYXJhbXNMZW4gKjIpOworCQkJc3ogKz0gYjY0LT5lbmNvZGVGaW5pc2goJm9hZXBQYXJhbXNCNjRbc3pdLCAob2FlcFBhcmFtc0xlbiAqIDIpICAtIHN6KTsKKwkJCW9hZXBQYXJhbXNCNjRbc3pdID0gJ1wwJzsKKworCQkJWFNFQ0F1dG9QdHJYTUxDaCB4QnVmKChjaGFyICopIG9hZXBQYXJhbXNCNjQpOworCisJCQllbmNyeXB0aW9uTWV0aG9kLT5zZXRPQUVQcGFyYW1zKHhCdWYuZ2V0KCkpOworCisJCX0KKworCQllbmNyeXB0TGVuID0gcnNhLT5wdWJsaWNFbmNyeXB0KHBsYWluU0IucmF3QnVmZmVyKCksIAorCQkJCQkJCQkJCSAgZW5jQnVmLCAKKwkJCQkJCQkJCQkgIG9mZnNldCwgCisJCQkJCQkJCQkJICByc2EtPmdldExlbmd0aCgpLCAKKwkJCQkJCQkJCQkgIFhTRUNDcnlwdG9LZXlSU0E6OlBBRF9PQUVQX01HRlAxLCAKKwkJCQkJCQkJCQkgIEhBU0hfU0hBMSk7CisKKwl9CisJZWxzZSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q2lwaGVyRXJyb3IsIAorCQkJIlhFTkNBbGdvcml0aG1IYW5kbGVyRGVmYXVsdDo6ZG9SU0FFbmNyeXB0VG9TYWZlQnVmZmVyIC0gVW5rbm93biBwYWRkaW5nIHR5cGUiKTsKKwl9CisKKwkvLyBOb3cgbmVlZCB0byBiYXNlNjQgZW5jb2RlCisJWFNFQ0NyeXB0b0Jhc2U2NCAqIGI2NCA9IAorCQlYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+YmFzZTY0KCk7CisJSmFuaXRvcjxYU0VDQ3J5cHRvQmFzZTY0PiBqX2I2NChiNjQpOworCisJYjY0LT5lbmNvZGVJbml0KCk7CisJZW5jcnlwdExlbiA9IGI2NC0+ZW5jb2RlKGVuY0J1ZiwgZW5jcnlwdExlbiwgYnVmLCAxMDI0KTsKKwlyZXN1bHQuc2JNZW1jcHlJbihidWYsIGVuY3J5cHRMZW4pOworCXVuc2lnbmVkIGludCBmaW5hbExlbiA9IGI2NC0+ZW5jb2RlRmluaXNoKGJ1ZiwgMTAyNCk7CisJcmVzdWx0LnNiTWVtY3B5SW4oZW5jcnlwdExlbiwgYnVmLCBmaW5hbExlbik7CisJcmVzdWx0W2VuY3J5cHRMZW4gKyBmaW5hbExlbl0gPSAnXDAnOworCisJLy8gVGhpcyBpcyBhIHN0cmluZywgc28gc2V0IHRoZSBidWZmZXIgY29ycmVjdGx5CisJcmVzdWx0LnNldEJ1ZmZlclR5cGUoc2FmZUJ1ZmZlcjo6QlVGRkVSX0NIQVIpOworCisJcmV0dXJuIHRydWU7CisKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlTYWZlQnVmZmVyIGVuY3J5cHRpb24KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Jvb2wgWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0OjplbmNyeXB0VG9TYWZlQnVmZmVyKAorCQlUWEZNQ2hhaW4gKiBwbGFpblRleHQsCisJCVhFTkNFbmNyeXB0aW9uTWV0aG9kICogZW5jcnlwdGlvbk1ldGhvZCwKKwkJWFNFQ0NyeXB0b0tleSAqIGtleSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogZG9jLAorCQlzYWZlQnVmZmVyICYgcmVzdWx0CisJCSkgeworCisJWFNFQ0NyeXB0b0tleTo6S2V5VHlwZSBrdDsKKwlYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpTeW1tZXRyaWNLZXlUeXBlIHNrdDsKKwlib29sIGlzS2V5V3JhcCA9IGZhbHNlOworCisJaWYgKGVuY3J5cHRpb25NZXRob2QgPT0gTlVMTCkgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkNpcGhlckVycm9yLAorCQkJIlhFTkNBbGdvcml0aG1IYW5kbGVyRGVmYXVsdDo6ZW5jcnlwdFRvU2FmZUJ1ZmZlciAtIENhbm5vdCBvcGVyYXRlIHdpdGggTlVMTCBlbmNyeXB0aW9uIE1ldGhvZCIpOworCX0KKworCisJLy8gQ2hlY2sgdGhlIHVyaSBhZ2FpbnN0IHRoZSBrZXkgdHlwZQorCW1hcFVSSVRvS2V5KGVuY3J5cHRpb25NZXRob2QtPmdldEFsZ29yaXRobSgpLCBrZXksIGt0LCBza3QsIGlzS2V5V3JhcCk7CisKKwkvLyBSU0E/CisJaWYgKGt0ID09IFhTRUNDcnlwdG9LZXk6OktFWV9SU0FfUFJJVkFURSB8fCAKKwkJa3QgPT0gWFNFQ0NyeXB0b0tleTo6S0VZX1JTQV9QVUJMSUMgfHwgCisJCWt0ID09IFhTRUNDcnlwdG9LZXk6OktFWV9SU0FfUEFJUikgeworCisJCXJldHVybiBkb1JTQUVuY3J5cHRUb1NhZmVCdWZmZXIocGxhaW5UZXh0LCBlbmNyeXB0aW9uTWV0aG9kLCBrZXksIGRvYywgcmVzdWx0KTsKKworCX0KKworCS8vIEVuc3VyZSBpcyBzeW1tZXRyaWMgYmVmb3JlIHdlIGNvbnRpbnVlCisJaWYgKGt0ICE9IFhTRUNDcnlwdG9LZXk6OktFWV9TWU1NRVRSSUMpIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDaXBoZXJFcnJvciwKKwkJCSJYRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQ6OmVuY3J5cHRUb1NhZmVCdWZmZXIgLSBOb3QgYW4gUlNBIGtleSwgYnV0IG5vdCBzeW1tZXRyaWMiKTsKKwl9CisKKwlpZiAoaXNLZXlXcmFwID09IHRydWUpIHsKKworCQlpZiAoc2t0ID09IFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV9BRVNfMTI4IHx8CisJCQlza3QgPT0gWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZX0FFU18xOTIgfHwKKwkJCXNrdCA9PSBYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfQUVTXzI1NikgeworCisJCQlyZXR1cm4gd3JhcEtleUFFUyhwbGFpblRleHQsIGtleSwgcmVzdWx0KTsKKworCQl9CisKKwkJaWYgKHNrdCA9PSBYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfM0RFU18xOTIpIHsKKwkJCXJldHVybiB3cmFwS2V5M0RFUyhwbGFpblRleHQsIGtleSwgcmVzdWx0KTsKKwkJfQorCisJCWVsc2UgeworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDaXBoZXJFcnJvciwKKwkJCQkiWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0OjpkZWNyeXB0VG9TYWZlQnVmZmVyIC0gZG9uJ3Qga25vdyBob3cgdG8gZG8ga2V5IHdyYXAgZm9yIGFsZ29yaXRobSIpOworCQl9CisKKwl9CisJCisJLy8gTXVzdCBiZSBidWxrIHN5bW1ldHJpYyAtIGRvIHRoZSBlbmNyeXB0aW9uCisKKwlUWEZNQ2lwaGVyICp0Y2lwaGVyOworCVhTRUNuZXcodGNpcGhlciwgVFhGTUNpcGhlcihkb2MsIGtleSwgdHJ1ZSkpOworCXBsYWluVGV4dC0+YXBwZW5kVHhmbSh0Y2lwaGVyKTsKKworCS8vIFRyYW5zZm9ybSB0byBCYXNlNjQKKwlUWEZNQmFzZTY0ICogdGI2NDsKKwlYU0VDbmV3KHRiNjQsIFRYRk1CYXNlNjQoZG9jLCBmYWxzZSkpOworCXBsYWluVGV4dC0+YXBwZW5kVHhmbSh0YjY0KTsKKworCS8vIFJlYWQgaW50byB0aGUgc2FmZUJ1ZmZlcgorCXJlc3VsdCA9ICIiOworCisJcmVzdWx0IDw8IHBsYWluVGV4dC0+Z2V0TGFzdFR4Zm0oKTsKKworCXJldHVybiB0cnVlOworCit9CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlLZXkgQ3JlYXRpb24KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hTRUNDcnlwdG9LZXkgKiBYRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQ6OmNyZWF0ZUtleUZvclVSSSgKKwkJY29uc3QgWE1MQ2ggKiB1cmksCisJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKiBrZXlCdWZmZXIsCisJCXVuc2lnbmVkIGludCBrZXlMZW4KKwkJKSB7CisKKwlYU0VDQ3J5cHRvU3ltbWV0cmljS2V5ICogc2sgPSBOVUxMOworCisJaWYgKHN0ckVxdWFscyh1cmksIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSTNERVNfQ0JDKSkgeworCQlzayA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2NyeXB0b1Byb3ZpZGVyLT5rZXlTeW1tZXRyaWMoWFNFQ0NyeXB0b1N5bW1ldHJpY0tleTo6S0VZXzNERVNfMTkyKTsKKwl9CisJZWxzZSBpZiAoc3RyRXF1YWxzKHVyaSwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJQUVTMTI4X0NCQykpIHsKKwkJc2sgPSBYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+a2V5U3ltbWV0cmljKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV9BRVNfMTI4KTsKKwl9CisJZWxzZSBpZiAoc3RyRXF1YWxzKHVyaSwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJQUVTMTkyX0NCQykpIHsKKwkJc2sgPSBYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+a2V5U3ltbWV0cmljKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV9BRVNfMTkyKTsKKwl9CisJZWxzZSBpZiAoc3RyRXF1YWxzKHVyaSwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJQUVTMjU2X0NCQykpIHsKKwkJc2sgPSBYU0VDUGxhdGZvcm1VdGlsczo6Z19jcnlwdG9Qcm92aWRlci0+a2V5U3ltbWV0cmljKFhTRUNDcnlwdG9TeW1tZXRyaWNLZXk6OktFWV9BRVNfMjU2KTsKKwl9CisKKwlpZiAoc2sgIT0gTlVMTCkgeworCQlzay0+c2V0S2V5KGtleUJ1ZmZlciwga2V5TGVuKTsKKwkJcmV0dXJuIHNrOworCX0KKworCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q2lwaGVyRXJyb3IsIAorCQkiWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0IC0gVVJJIFByb3ZpZGVkLCBidXQgY2Fubm90IGNyZWF0ZSBhc3NvY2lhdGVkIGtleSIpOworCit9CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCQkJQ2xvbmUKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hTRUNBbGdvcml0aG1IYW5kbGVyICogWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0OjpjbG9uZSh2b2lkKSBjb25zdCB7CisKKwlYRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQgKiByZXQ7CisJWFNFQ25ldyhyZXQsIFhFTkNBbGdvcml0aG1IYW5kbGVyRGVmYXVsdCk7CisKKwlyZXR1cm4gcmV0OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCVVuc3VwcG9ydGVkIG9wZXJhdGlvbnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3Vuc2lnbmVkIGludCBYRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQ6OnNpZ25Ub1NhZmVCdWZmZXIoCisJCVRYRk1DaGFpbiAqIGlucHV0Qnl0ZXMsCisJCWNvbnN0IFhNTENoICogVVJJLAorCQlYU0VDQ3J5cHRvS2V5ICoga2V5LAorCQl1bnNpZ25lZCBpbnQgb3V0cHV0TGVuZ3RoLAorCQlzYWZlQnVmZmVyICYgcmVzdWx0KSB7CisKKwl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkFsZ29yaXRobU1hcHBlckVycm9yLCAKKwkJCSJYRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQgLSBTaWduYXR1cmUgb3BlcmF0aW9ucyBub3Qgc3VwcG9ydGVkIik7CisKK30KKworCitib29sIFhFTkNBbGdvcml0aG1IYW5kbGVyRGVmYXVsdDo6YXBwZW5kU2lnbmF0dXJlSGFzaFR4Zm0oCisJCVRYRk1DaGFpbiAqIGlucHV0Qnl0ZXMsCisJCWNvbnN0IFhNTENoICogVVJJLAorCQlYU0VDQ3J5cHRvS2V5ICoga2V5KSB7CisKKwl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkFsZ29yaXRobU1hcHBlckVycm9yLCAKKwkJCSJYRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQgLSBTaWduYXR1cmUgb3BlcmF0aW9ucyBub3Qgc3VwcG9ydGVkIik7CisKK30KKworYm9vbCBYRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQ6OnZlcmlmeUJhc2U2NFNpZ25hdHVyZSgKKwkJVFhGTUNoYWluICogaW5wdXRCeXRlcywKKwkJY29uc3QgWE1MQ2ggKiBVUkksCisJCWNvbnN0IGNoYXIgKiBzaWcsCisJCXVuc2lnbmVkIGludCBvdXRwdXRMZW5ndGgsCisJCVhTRUNDcnlwdG9LZXkgKiBrZXkpIHsKKworCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6QWxnb3JpdGhtTWFwcGVyRXJyb3IsIAorCQkJIlhFTkNBbGdvcml0aG1IYW5kbGVyRGVmYXVsdCAtIFNpZ25hdHVyZSBvcGVyYXRpb25zIG5vdCBzdXBwb3J0ZWQiKTsKKworfQorCitib29sIFhFTkNBbGdvcml0aG1IYW5kbGVyRGVmYXVsdDo6YXBwZW5kSGFzaFR4Zm0oCisJCVRYRk1DaGFpbiAqIGlucHV0Qnl0ZXMsCisJCWNvbnN0IFhNTENoICogVVJJKSB7CisKKwl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkFsZ29yaXRobU1hcHBlckVycm9yLCAKKwkJCSJYRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQgLSBIYXNoIG9wZXJhdGlvbnMgbm90IHN1cHBvcnRlZCIpOworCit9CisKZGlmZiAtLWdpdCBhL2Mvc3JjL3hlbmMvaW1wbC9YRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQuaHBwIGIvYy9zcmMveGVuYy9pbXBsL1hFTkNBbGdvcml0aG1IYW5kbGVyRGVmYXVsdC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNiZTU5MAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hlbmMvaW1wbC9YRU5DQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQuaHBwCkBAIC0wLDAgKzEsMTUyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDMtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYU0VDQWxnb3JpdGhtSGFuZGxlckRlZmF1bHQgOj0gSW50ZXJmYWNlIGNsYXNzIHRvIGRlZmluZSBoYW5kbGluZyBvZgorICoJCQkJCQkJCSAgZGVmYXVsdCBlbmNyeXB0aW9uIGFsZ29yaXRobXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEVOQ0FMR0hBTkRMRVJERUZBVUxUX0lOQ0xVREUKKyNkZWZpbmUgWEVOQ0FMR0hBTkRMRVJERUZBVUxUX0lOQ0xVREUKKworLy8gWFNFQyBJbmNsdWRlcworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNBbGdvcml0aG1IYW5kbGVyLmhwcD4KKworY2xhc3MgVFhGTUNoYWluOworY2xhc3MgWEVOQ0VuY3J5cHRpb25NZXRob2Q7CitjbGFzcyBYU0VDQ3J5cHRvS2V5OworCisvLyBYZXJjZXMKKworY2xhc3MgWEVOQ0FsZ29yaXRobUhhbmRsZXJEZWZhdWx0IDogcHVibGljIFhTRUNBbGdvcml0aG1IYW5kbGVyIHsKKworcHVibGljOgorCQorCQorCXZpcnR1YWwgflhFTkNBbGdvcml0aG1IYW5kbGVyRGVmYXVsdCgpIHt9OworCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCBkZWNyeXB0VG9TYWZlQnVmZmVyKAorCQlUWEZNQ2hhaW4gKiBjaXBoZXJUZXh0LAorCQlYRU5DRW5jcnlwdGlvbk1ldGhvZCAqIGVuY3J5cHRpb25NZXRob2QsCisJCVhTRUNDcnlwdG9LZXkgKiBrZXksCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGRvYywKKwkJc2FmZUJ1ZmZlciAmIHJlc3VsdAorCSk7CisKKwl2aXJ0dWFsIGJvb2wgYXBwZW5kRGVjcnlwdENpcGhlclRYRk0oCisJCVRYRk1DaGFpbiAqIGNpcGhlclRleHQsCisJCVhFTkNFbmNyeXB0aW9uTWV0aG9kICogZW5jcnlwdGlvbk1ldGhvZCwKKwkJWFNFQ0NyeXB0b0tleSAqIGtleSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogZG9jCisJKTsKKworCXZpcnR1YWwgYm9vbCBlbmNyeXB0VG9TYWZlQnVmZmVyKAorCQlUWEZNQ2hhaW4gKiBwbGFpblRleHQsCisJCVhFTkNFbmNyeXB0aW9uTWV0aG9kICogZW5jcnlwdGlvbk1ldGhvZCwKKwkJWFNFQ0NyeXB0b0tleSAqIGtleSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogZG9jLAorCQlzYWZlQnVmZmVyICYgcmVzdWx0CisJKTsKKworCXZpcnR1YWwgWFNFQ0NyeXB0b0tleSAqIGNyZWF0ZUtleUZvclVSSSgKKwkJY29uc3QgWE1MQ2ggKiB1cmksCisJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKiBrZXlCdWZmZXIsCisJCXVuc2lnbmVkIGludCBrZXlMZW4KKwkpOworCisJdmlydHVhbCBYU0VDQWxnb3JpdGhtSGFuZGxlciAqIGNsb25lKHZvaWQpIGNvbnN0OworCisJLy8gVW5zdXBwb3J0ZWQgU2lnbmF0dXJlIG9wcworCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgc2lnblRvU2FmZUJ1ZmZlcigKKwkJVFhGTUNoYWluICogaW5wdXRCeXRlcywKKwkJY29uc3QgWE1MQ2ggKiBVUkksCisJCVhTRUNDcnlwdG9LZXkgKiBrZXksCisJCXVuc2lnbmVkIGludCBvdXRwdXRMZW5ndGgsCisJCXNhZmVCdWZmZXIgJiByZXN1bHQKKwkpOworCisJdmlydHVhbCBib29sIGFwcGVuZFNpZ25hdHVyZUhhc2hUeGZtKAorCQlUWEZNQ2hhaW4gKiBpbnB1dEJ5dGVzLAorCQljb25zdCBYTUxDaCAqIFVSSSwKKwkJWFNFQ0NyeXB0b0tleSAqIGtleQorCSk7CisKKwl2aXJ0dWFsIGJvb2wgdmVyaWZ5QmFzZTY0U2lnbmF0dXJlKAorCQlUWEZNQ2hhaW4gKiBpbnB1dEJ5dGVzLAorCQljb25zdCBYTUxDaCAqIFVSSSwKKwkJY29uc3QgY2hhciAqIHNpZywKKwkJdW5zaWduZWQgaW50IG91dHB1dExlbmd0aCwKKwkJWFNFQ0NyeXB0b0tleSAqIGtleQorCSk7CisKKwl2aXJ0dWFsIGJvb2wgYXBwZW5kSGFzaFR4Zm0oCisJCVRYRk1DaGFpbiAqIGlucHV0Qnl0ZXMsCisJCWNvbnN0IFhNTENoICogVVJJCisJKTsKKworCisJCitwcml2YXRlOgorCisJdm9pZCBtYXBVUklUb0tleShjb25zdCBYTUxDaCAqIHVyaSwgCisJCVhTRUNDcnlwdG9LZXkgKiBrZXksCisJCVhTRUNDcnlwdG9LZXk6OktleVR5cGUgJmt0LAorCQlYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpTeW1tZXRyaWNLZXlUeXBlICZza3QsCisJCWJvb2wgJmlzU3ltbWV0cmljS2V5V3JhcCk7CisJdW5zaWduZWQgaW50IGRvUlNBRGVjcnlwdFRvU2FmZUJ1ZmZlcigKKwkJVFhGTUNoYWluICogY2lwaGVyVGV4dCwKKwkJWEVOQ0VuY3J5cHRpb25NZXRob2QgKiBlbmNyeXB0aW9uTWV0aG9kLAorCQlYU0VDQ3J5cHRvS2V5ICoga2V5LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBkb2MsCisJCXNhZmVCdWZmZXIgJiByZXN1bHQpOworCWJvb2wgZG9SU0FFbmNyeXB0VG9TYWZlQnVmZmVyKAorCQlUWEZNQ2hhaW4gKiBwbGFpblRleHQsCisJCVhFTkNFbmNyeXB0aW9uTWV0aG9kICogZW5jcnlwdGlvbk1ldGhvZCwKKwkJWFNFQ0NyeXB0b0tleSAqIGtleSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogZG9jLAorCQlzYWZlQnVmZmVyICYgcmVzdWx0KTsKKwl1bnNpZ25lZCBpbnQgdW53cmFwS2V5QUVTKAorICAgCQlUWEZNQ2hhaW4gKiBjaXBoZXJUZXh0LAorCQlYU0VDQ3J5cHRvS2V5ICoga2V5LAorCQlzYWZlQnVmZmVyICYgcmVzdWx0KTsKKwl1bnNpZ25lZCBpbnQgdW53cmFwS2V5M0RFUygKKyAgIAkJVFhGTUNoYWluICogY2lwaGVyVGV4dCwKKwkJWFNFQ0NyeXB0b0tleSAqIGtleSwKKwkJc2FmZUJ1ZmZlciAmIHJlc3VsdCk7CisJYm9vbCB3cmFwS2V5QUVTKAorICAgCQlUWEZNQ2hhaW4gKiBjaXBoZXJUZXh0LAorCQlYU0VDQ3J5cHRvS2V5ICoga2V5LAorCQlzYWZlQnVmZmVyICYgcmVzdWx0KTsKKwlib29sIHdyYXBLZXkzREVTKAorICAgCQlUWEZNQ2hhaW4gKiBjaXBoZXJUZXh0LAorCQlYU0VDQ3J5cHRvS2V5ICoga2V5LAorCQlzYWZlQnVmZmVyICYgcmVzdWx0KTsKKworfTsKKworLypcQH0qLworCisjZW5kaWYgLyogWEVOQ0FMR0hBTkRMRVJERUZBVUxUX0lOQ0xVREUgKi8KKwpkaWZmIC0tZ2l0IGEvYy9zcmMveGVuYy9pbXBsL1hFTkNDaXBoZXJEYXRhSW1wbC5jcHAgYi9jL3NyYy94ZW5jL2ltcGwvWEVOQ0NpcGhlckRhdGFJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2I2ZmVjCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGVuYy9pbXBsL1hFTkNDaXBoZXJEYXRhSW1wbC5jcHAKQEAgLTAsMCArMSwyNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMy0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhFTkNDaXBoZXJEYXRhSW1wbCA6PSBJbXBsZW1lbnRhdGlvbiBvZiBDaXBoZXJEYXRhIGVsZW1lbnRzIAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKworI2luY2x1ZGUgIlhFTkNDaXBoZXJEYXRhSW1wbC5ocHAiCisjaW5jbHVkZSAiWEVOQ0NpcGhlclZhbHVlSW1wbC5ocHAiCisjaW5jbHVkZSAiWEVOQ0NpcGhlclJlZmVyZW5jZUltcGwuaHBwIgorCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vudi5ocHA+CisKKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MVW5pRGVmcy5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlTdHJpbmcgQ29uc3RhbnRzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0aWMgWE1MQ2ggc19DaXBoZXJEYXRhW10gPSB7CisKKwljaExhdGluX0MsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fcCwKKwljaExhdGluX2gsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fciwKKwljaExhdGluX0QsCisJY2hMYXRpbl9hLAorCWNoTGF0aW5fdCwKKwljaExhdGluX2EsCisJY2hOdWxsLAorfTsKKworc3RhdGljIFhNTENoIHNfQ2lwaGVyVmFsdWVbXSA9IHsKKworCWNoTGF0aW5fQywKKwljaExhdGluX2ksCisJY2hMYXRpbl9wLAorCWNoTGF0aW5faCwKKwljaExhdGluX2UsCisJY2hMYXRpbl9yLAorCWNoTGF0aW5fViwKKwljaExhdGluX2EsCisJY2hMYXRpbl9sLAorCWNoTGF0aW5fdSwKKwljaExhdGluX2UsCisJY2hOdWxsLAorfTsKKworc3RhdGljIFhNTENoIHNfQ2lwaGVyUmVmZXJlbmNlW10gPSB7CisKKwljaExhdGluX0MsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fcCwKKwljaExhdGluX2gsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fciwKKwljaExhdGluX1IsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fZiwKKwljaExhdGluX2UsCisJY2hMYXRpbl9yLAorCWNoTGF0aW5fZSwKKwljaExhdGluX24sCisJY2hMYXRpbl9jLAorCWNoTGF0aW5fZSwKKwljaE51bGwsCit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYRU5DQ2lwaGVyRGF0YUltcGw6OlhFTkNDaXBoZXJEYXRhSW1wbChjb25zdCBYU0VDRW52ICogZW52KSA6CittcF9lbnYoZW52KSwKK21wX2NpcGhlckRhdGFFbGVtZW50KE5VTEwpLAorbXBfY2lwaGVyVmFsdWUoTlVMTCksCittcF9jaXBoZXJSZWZlcmVuY2UoTlVMTCkgeworCit9CisKKworWEVOQ0NpcGhlckRhdGFJbXBsOjpYRU5DQ2lwaGVyRGF0YUltcGwoY29uc3QgWFNFQ0VudiAqIGVudiwgRE9NRWxlbWVudCAqIG5vZGUpIDoKK21wX2VudihlbnYpLAorbXBfY2lwaGVyRGF0YUVsZW1lbnQobm9kZSksCittcF9jaXBoZXJWYWx1ZShOVUxMKSwKK21wX2NpcGhlclJlZmVyZW5jZShOVUxMKSB7CisKK30KKworWEVOQ0NpcGhlckRhdGFJbXBsOjp+WEVOQ0NpcGhlckRhdGFJbXBsKCkgeworCisJaWYgKG1wX2NpcGhlclZhbHVlICE9IE5VTEwpCisJCWRlbGV0ZSBtcF9jaXBoZXJWYWx1ZTsKKwlpZiAobXBfY2lwaGVyUmVmZXJlbmNlICE9IE5VTEwpCisJCWRlbGV0ZSBtcF9jaXBoZXJSZWZlcmVuY2U7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCQkJTG9hZCBET00KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgWEVOQ0NpcGhlckRhdGFJbXBsOjpsb2FkKCkgeworCisJaWYgKG1wX2NpcGhlckRhdGFFbGVtZW50ID09IE5VTEwpIHsKKworCQkvLyBBdHRlbXB0IHRvIGxvYWQgYW4gZW1wdHkgZW5jcnlwdGVkVHlwZSBlbGVtZW50CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q2lwaGVyRGF0YUVycm9yLAorCQkJIlhFTkNDaXBoZXJEYXRhOjpsb2FkIC0gY2FsbGVkIG9uIGVtcHR5IERPTSIpOworCisJfQorCisJaWYgKCFzdHJFcXVhbHMoZ2V0WEVOQ0xvY2FsTmFtZShtcF9jaXBoZXJEYXRhRWxlbWVudCksIHNfQ2lwaGVyRGF0YSkpIHsKKwkKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDaXBoZXJEYXRhRXJyb3IsCisJCQkiWEVOQ0NpcGhlckRhdGE6OmxvYWQgLSBjYWxsZWQgaW5jb3JyZWN0IG5vZGUiKTsKKwkKKwl9CisKKwkvLyBGaW5kIG91dCB3aGV0aGVyIHRoaXMgaXMgYSBDaXBoZXJWYWx1ZSBvciBDaXBoZXJSZWZlcmVuY2UgYW5kIGxvYWQKKwkvLyBhcHByb3ByaWF0ZWx5CisKKwlET01FbGVtZW50ICp0bXBFbHQgPSBmaW5kRmlyc3RFbGVtZW50Q2hpbGQobXBfY2lwaGVyRGF0YUVsZW1lbnQpOworCisJaWYgKHRtcEVsdCAhPSBOVUxMICYmIHN0ckVxdWFscyhnZXRYRU5DTG9jYWxOYW1lKHRtcEVsdCksIHNfQ2lwaGVyVmFsdWUpKSB7CisKKwkJbV9jaXBoZXJEYXRhVHlwZSA9IFZBTFVFX1RZUEU7CisJCVhTRUNuZXcobXBfY2lwaGVyVmFsdWUsIFhFTkNDaXBoZXJWYWx1ZUltcGwobXBfZW52LCB0bXBFbHQpKTsKKwkJbXBfY2lwaGVyVmFsdWUtPmxvYWQoKTsKKworCX0KKworCWVsc2UgaWYgKHRtcEVsdCAhPSBOVUxMICYmIHN0ckVxdWFscyhnZXRYRU5DTG9jYWxOYW1lKHRtcEVsdCksIHNfQ2lwaGVyUmVmZXJlbmNlKSkgeworCisJCW1fY2lwaGVyRGF0YVR5cGUgPSBSRUZFUkVOQ0VfVFlQRTsKKwkJWFNFQ25ldyhtcF9jaXBoZXJSZWZlcmVuY2UsIFhFTkNDaXBoZXJSZWZlcmVuY2VJbXBsKG1wX2VudiwgdG1wRWx0KSk7CisJCW1wX2NpcGhlclJlZmVyZW5jZS0+bG9hZCgpOworCisJfQorCisJZWxzZSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZFhFTkNDaGlsZE5vdEZvdW5kLAorCQkJIlhFTkNDaXBoZXJEYXRhOjpsb2FkIC0gZXhwZWN0ZWQgPENpcGhlclZhbHVlPiBvciA8Q2lwaGVyUmVmZXJlbmNlPiIpOworCisJfQorCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCUNyZWF0ZSBhIGJsYW5rIHN0cnVjdHVyZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRE9NRWxlbWVudCAqIFhFTkNDaXBoZXJEYXRhSW1wbDo6Y3JlYXRlQmxhbmtDaXBoZXJEYXRhKAorCQkJCQkJWEVOQ0NpcGhlckRhdGE6OlhFTkNDaXBoZXJEYXRhVHlwZSB0eXBlLCAKKwkJCQkJCWNvbnN0IFhNTENoICogdmFsdWUpIHsKKworCS8vIFJlc2V0CisJaWYgKG1wX2NpcGhlclZhbHVlICE9IE5VTEwpIHsKKwkJZGVsZXRlIG1wX2NpcGhlclZhbHVlOworCQltcF9jaXBoZXJWYWx1ZSA9IE5VTEw7CisJfQorCisJbV9jaXBoZXJEYXRhVHlwZSA9IE5PX1RZUEU7CisKKwkvLyBHZXQgc29tZSBzZXR1cCB2YWx1ZXMKKwlzYWZlQnVmZmVyIHN0cjsKKwlET01Eb2N1bWVudCAqZG9jID0gbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpOworCWNvbnN0IFhNTENoICogcHJlZml4ID0gbXBfZW52LT5nZXRYRU5DTlNQcmVmaXgoKTsKKworCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgc19DaXBoZXJEYXRhKTsKKworCURPTUVsZW1lbnQgKnJldCA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhFTkMsIHN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKwltcF9jaXBoZXJEYXRhRWxlbWVudCA9IHJldDsKKworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChyZXQpOworCisJLy8gU2V0IHRoZSB0eXBlCisJaWYgKHR5cGUgPT0gVkFMVUVfVFlQRSkgeworCQkKKwkJLy8gU2hvdWxkIGFsc28gc2V0IGluIHRoZSBET00KKwkJbV9jaXBoZXJEYXRhVHlwZSA9IFZBTFVFX1RZUEU7CisKKwkJLy8gQ3JlYXRlIHRoZSBDaXBoZXIgVmFsdWUKKwkJWFNFQ25ldyhtcF9jaXBoZXJWYWx1ZSwgWEVOQ0NpcGhlclZhbHVlSW1wbChtcF9lbnYpKTsKKwkJRE9NTm9kZSAqIGNpcGhlclZhbHVlTm9kZSA9IG1wX2NpcGhlclZhbHVlLT5jcmVhdGVCbGFua0NpcGhlclZhbHVlKHZhbHVlKTsKKworCQlyZXQtPmFwcGVuZENoaWxkKGNpcGhlclZhbHVlTm9kZSk7CisKKwkJbXBfZW52LT5kb1ByZXR0eVByaW50KHJldCk7CisKKwl9CisKKwllbHNlIGlmICh0eXBlID09IFJFRkVSRU5DRV9UWVBFKSB7CisKKwkJbV9jaXBoZXJEYXRhVHlwZSA9IFJFRkVSRU5DRV9UWVBFOworCisJCS8vIENyZWF0ZSB0aGUgQ2lwaGVyIFJlZmVyZW5jZQorCQlYU0VDbmV3KG1wX2NpcGhlclJlZmVyZW5jZSwgWEVOQ0NpcGhlclJlZmVyZW5jZUltcGwobXBfZW52KSk7CisJCURPTU5vZGUgKiBjaXBoZXJSZWZlcmVuY2VOb2RlID0gbXBfY2lwaGVyUmVmZXJlbmNlLT5jcmVhdGVCbGFua0NpcGhlclJlZmVyZW5jZSh2YWx1ZSk7CisKKwkJcmV0LT5hcHBlbmRDaGlsZChjaXBoZXJSZWZlcmVuY2VOb2RlKTsKKwkJbXBfZW52LT5kb1ByZXR0eVByaW50KHJldCk7CisKKwl9CisKKwlyZXR1cm4gcmV0OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCUNvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwkvLyBJbnRlcmZhY2UgbWV0aG9kcworWEVOQ0NpcGhlckRhdGFJbXBsOjpYRU5DQ2lwaGVyRGF0YVR5cGUgWEVOQ0NpcGhlckRhdGFJbXBsOjpnZXRDaXBoZXJEYXRhVHlwZSh2b2lkKSB7CisKKwlyZXR1cm4gbV9jaXBoZXJEYXRhVHlwZTsKKworfQorCitYRU5DQ2lwaGVyVmFsdWUgKiBYRU5DQ2lwaGVyRGF0YUltcGw6OmdldENpcGhlclZhbHVlKHZvaWQpIHsKKworCXJldHVybiBtcF9jaXBoZXJWYWx1ZTsKKworfQorCitYRU5DQ2lwaGVyUmVmZXJlbmNlICogWEVOQ0NpcGhlckRhdGFJbXBsOjpnZXRDaXBoZXJSZWZlcmVuY2Uodm9pZCkgeworCisJcmV0dXJuIG1wX2NpcGhlclJlZmVyZW5jZTsKKworfQorCmRpZmYgLS1naXQgYS9jL3NyYy94ZW5jL2ltcGwvWEVOQ0NpcGhlckRhdGFJbXBsLmhwcCBiL2Mvc3JjL3hlbmMvaW1wbC9YRU5DQ2lwaGVyRGF0YUltcGwuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiOGUxMjcKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94ZW5jL2ltcGwvWEVOQ0NpcGhlckRhdGFJbXBsLmhwcApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IDIwMDMtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYRU5DQ2lwaGVyRGF0YUltcGwgOj0gSW1wbGVtZW50YXRpb24gb2YgQ2lwaGVyRGF0YSBlbGVtZW50cyAKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWFNFQ0NJUEhFUkRBVEFJTVBMX0lOQ0xVREUKKyNkZWZpbmUgWFNFQ0NJUEhFUkRBVEFJTVBMX0lOQ0xVREUKKworLy8gWFNFQyBJbmNsdWRlcworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMveGVuYy9YRU5DQ2lwaGVyRGF0YS5ocHA+CisKKyNpbmNsdWRlICJYRU5DQ2lwaGVySW1wbC5ocHAiCisKK2NsYXNzIFhFTkNDaXBoZXJWYWx1ZUltcGw7CitjbGFzcyBYRU5DQ2lwaGVyUmVmZXJlbmNlSW1wbDsKKworWFNFQ19ERUNMQVJFX1hFUkNFU19DTEFTUyhET01Ob2RlKTsKKworY2xhc3MgWEVOQ0NpcGhlckRhdGFJbXBsIDogcHVibGljIFhFTkNDaXBoZXJEYXRhIHsKKworcHVibGljOgorCisJWEVOQ0NpcGhlckRhdGFJbXBsKGNvbnN0IFhTRUNFbnYgKiBlbnYpOworCVhFTkNDaXBoZXJEYXRhSW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudiwgCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogbm9kZQorCSk7CisKKwl2aXJ0dWFsIH5YRU5DQ2lwaGVyRGF0YUltcGwoKTsKKworCS8vIExvYWQgZWxlbWVudHMKKwl2b2lkIGxvYWQoKTsKKwkvLyBDcmVhdGUKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIAorCQljcmVhdGVCbGFua0NpcGhlckRhdGEoWEVOQ0NpcGhlckRhdGE6OlhFTkNDaXBoZXJEYXRhVHlwZSB0eXBlLCBjb25zdCBYTUxDaCAqIHZhbHVlKTsKKworCisJLy8gSW50ZXJmYWNlIG1ldGhvZHMKKwl2aXJ0dWFsIFhFTkNDaXBoZXJEYXRhVHlwZSBnZXRDaXBoZXJEYXRhVHlwZSh2b2lkKTsKKwl2aXJ0dWFsIFhFTkNDaXBoZXJWYWx1ZSAqIGdldENpcGhlclZhbHVlKHZvaWQpOworCXZpcnR1YWwgWEVOQ0NpcGhlclJlZmVyZW5jZSAqIGdldENpcGhlclJlZmVyZW5jZSh2b2lkKTsKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogZ2V0RWxlbWVudCh2b2lkKQorCQl7cmV0dXJuIG1wX2NpcGhlckRhdGFFbGVtZW50O30KKworCitwcml2YXRlOgorCisJLy8gVW5pbXBsZW1lbnRlZCBjb25zdHJ1Y3RvcgorCVhFTkNDaXBoZXJEYXRhSW1wbCgpOworCisJY29uc3QgWFNFQ0VudgkJCSogbXBfZW52OworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50CQkJCQkKKwkJCQkJCQkqIG1wX2NpcGhlckRhdGFFbGVtZW50OwkJLy8gTm9kZSBhdCBoZWFkIG9mIHN0cnVjdHVyZQorCisJWEVOQ0NpcGhlckRhdGFUeXBlCQltX2NpcGhlckRhdGFUeXBlOwkJCS8vIElzIHRoaXMgYSB2YWx1ZSBvciBhIHJlZmVyZW5jZT8KKwlYRU5DQ2lwaGVyVmFsdWVJbXBsCQkqIG1wX2NpcGhlclZhbHVlOwkJCS8vIENpcGhlciB2YWx1ZSBub2RlCisJWEVOQ0NpcGhlclJlZmVyZW5jZUltcGwJCSogbXBfY2lwaGVyUmVmZXJlbmNlOwkJCS8vIENpcGhlciBSZWZlcmVuY2Ugbm9kZQorfTsKKworI2VuZGlmIC8qIFhFTkNDSVBIRVJEQVRBSU1QTF9JTkNMVURFICovCisKZGlmZiAtLWdpdCBhL2Mvc3JjL3hlbmMvaW1wbC9YRU5DQ2lwaGVySW1wbC5jcHAgYi9jL3NyYy94ZW5jL2ltcGwvWEVOQ0NpcGhlckltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhZWM0ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94ZW5jL2ltcGwvWEVOQ0NpcGhlckltcGwuY3BwCkBAIC0wLDAgKzEsMTEzNSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAzLTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEVOQ0NpcGhlckltcGwgOj0gSW1wbGVtZW50YXRpb24gb2YgdGhlIG1haW4gZW5jcnlwdGlvbiB3b3JrZXIgY2xhc3MKKyAqCisgKiAkSWQkCisgKgorICovCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9LZXkuaHBwPgorI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1DaGFpbi5ocHA+CisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTUJhc2UuaHBwPgorI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1DMTRuLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNU0IuaHBwPgorI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1VUkwuaHBwPgorI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1Eb2NPYmplY3QuaHBwPgorI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1Db25jYXRDaGFpbnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRW52LmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDS2V5SW5mb1Jlc29sdmVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvRXhjZXB0aW9uLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDQWxnb3JpdGhtTWFwcGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDQWxnb3JpdGhtSGFuZGxlci5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDUGxhdGZvcm1VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDQmluVFhGTUlucHV0U3RyZWFtLmhwcD4KKworI2luY2x1ZGUgIlhFTkNDaXBoZXJJbXBsLmhwcCIKKyNpbmNsdWRlICJYRU5DRW5jcnlwdGVkRGF0YUltcGwuaHBwIgorI2luY2x1ZGUgIlhFTkNFbmNyeXB0ZWRLZXlJbXBsLmhwcCIKKyNpbmNsdWRlICJYRU5DRW5jcnlwdGlvbk1ldGhvZEltcGwuaHBwIgorI2luY2x1ZGUgIlhFTkNBbGdvcml0aG1IYW5kbGVyRGVmYXVsdC5ocHAiCisKKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET01Ob2RlLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET01FbGVtZW50LmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MVW5pRGVmcy5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy9wYXJzZXJzL1hlcmNlc0RPTVBhcnNlci5ocHA+CisjaW5jbHVkZSA8eGVyY2VzYy9mcmFtZXdvcmsvTWVtQnVmSW5wdXRTb3VyY2UuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9KYW5pdG9yLmhwcD4KKworLy8gV2l0aCBhbGwgdGhlIGNoYXJhY3RlcnMgLSBqdXN0IHVwbGlmdCBlbnRpcmUgdGhpbmcKKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKyNpbmNsdWRlIDxpb3N0cmVhbT4KK3VzaW5nIHN0ZDo6Y291dDsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCQkJQ29uc3RhbnQgU3RyaW5ncworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitjb25zdCBYTUxDaCBzX3RhZ25hbWVbXSA9IHsKKworY2hMYXRpbl9mLCBjaExhdGluX3IsIGNoTGF0aW5fYSwgY2hMYXRpbl9nLCBjaExhdGluX20sIGNoTGF0aW5fZSwgY2hMYXRpbl9uLCBjaExhdGluX3QsIGNoTnVsbCB9OworCitjb25zdCBYTUxDaCBzX25vRGF0YVtdID0geyBjaExhdGluX24sIGNoTGF0aW5fbywgY2hMYXRpbl9ELCBjaExhdGluX2EsIGNoTGF0aW5fdCwgY2hMYXRpbl9hLCBjaE51bGwgfTsKKworY29uc3QgWE1MQ2ggc19kc1tdID0geyBjaExhdGluX2QsIGNoTGF0aW5fcywgY2hOdWxsIH07CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCUNvbnN0cnVjdG9ycworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWEVOQ0NpcGhlckltcGw6OlhFTkNDaXBoZXJJbXBsKERPTURvY3VtZW50ICogZG9jKSA6CisgICAgbXBfZG9jKGRvYyksIG1wX2VuY3J5cHRlZERhdGEoTlVMTCksIG1wX2tleShOVUxMKSwgbXBfa2VrKE5VTEwpLCBtcF9rZXlJbmZvUmVzb2x2ZXIoTlVMTCkgeworCisgICAgWFNFQ25ldyhtcF9lbnYsIFhTRUNFbnYoZG9jKSk7CisgICAgbXBfZW52LT5zZXREU0lHTlNQcmVmaXgoc19kcyk7CisgICAgbV9rZXlEZXJpdmVkID0gZmFsc2U7CisgICAgbV9rZWtEZXJpdmVkID0gZmFsc2U7CisgICAgbV91c2VFeGNDMTRuU2VyaWFsaXNhdGlvbiA9IHRydWU7CisKK30KKworWEVOQ0NpcGhlckltcGw6On5YRU5DQ2lwaGVySW1wbCgpIHsKKworICAgIGlmIChtcF9lbmNyeXB0ZWREYXRhICE9IE5VTEwpCisgICAgICAgIGRlbGV0ZSBtcF9lbmNyeXB0ZWREYXRhOworCisgICAgaWYgKG1wX2tleSAhPSBOVUxMKQorICAgICAgICBkZWxldGUgbXBfa2V5OworCisgICAgaWYgKG1wX2tlayAhPSBOVUxMKQorICAgICAgICBkZWxldGUgbXBfa2VrOworCisgICAgaWYgKG1wX2VudiAhPSBOVUxMKQorICAgICAgICBkZWxldGUgbXBfZW52OworCisgICAgaWYgKG1wX2tleUluZm9SZXNvbHZlciAhPSBOVUxMKQorICAgICAgICBkZWxldGUgbXBfa2V5SW5mb1Jlc29sdmVyOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCUluaXRpYWxpc2VyCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIFhFTkNDaXBoZXJJbXBsOjpJbml0aWFsaXNlKHZvaWQpIHsKKworICAgIFhFTkNBbGdvcml0aG1IYW5kbGVyRGVmYXVsdCBkZWY7CisKKyAgICAvLyBSZWdpc3RlciBkZWZhdWx0IGVuY3J5cHRpb24gYWxnb3JpdGhtIGhhbmRsZXJzCisKKyAgICBYU0VDUGxhdGZvcm1VdGlsczo6cmVnaXN0ZXJBbGdvcml0aG1IYW5kbGVyKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSTNERVNfQ0JDLCBkZWYpOworICAgIFhTRUNQbGF0Zm9ybVV0aWxzOjpyZWdpc3RlckFsZ29yaXRobUhhbmRsZXIoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJQUVTMTI4X0NCQywgZGVmKTsKKyAgICBYU0VDUGxhdGZvcm1VdGlsczo6cmVnaXN0ZXJBbGdvcml0aG1IYW5kbGVyKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSUFFUzE5Ml9DQkMsIGRlZik7CisgICAgWFNFQ1BsYXRmb3JtVXRpbHM6OnJlZ2lzdGVyQWxnb3JpdGhtSGFuZGxlcihEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklBRVMyNTZfQ0JDLCBkZWYpOworICAgIFhTRUNQbGF0Zm9ybVV0aWxzOjpyZWdpc3RlckFsZ29yaXRobUhhbmRsZXIoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJS1dfQUVTMTI4LCBkZWYpOworICAgIFhTRUNQbGF0Zm9ybVV0aWxzOjpyZWdpc3RlckFsZ29yaXRobUhhbmRsZXIoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJS1dfQUVTMTkyLCBkZWYpOworICAgIFhTRUNQbGF0Zm9ybVV0aWxzOjpyZWdpc3RlckFsZ29yaXRobUhhbmRsZXIoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJS1dfQUVTMjU2LCBkZWYpOworICAgIFhTRUNQbGF0Zm9ybVV0aWxzOjpyZWdpc3RlckFsZ29yaXRobUhhbmRsZXIoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJS1dfM0RFUywgZGVmKTsKKyAgICBYU0VDUGxhdGZvcm1VdGlsczo6cmVnaXN0ZXJBbGdvcml0aG1IYW5kbGVyKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVJTQV8xXzUsIGRlZik7CisgICAgWFNFQ1BsYXRmb3JtVXRpbHM6OnJlZ2lzdGVyQWxnb3JpdGhtSGFuZGxlcihEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklSU0FfT0FFUF9NR0ZQMSwgZGVmKTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlTZXQvZ2V0IHRoZSBuYW1lc3BhY2UgcHJlZml4IHRvIGJlIHVzZWQgd2hlbiBjcmVhdGluZyBub2RlcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBYRU5DQ2lwaGVySW1wbDo6c2V0WEVOQ05TUHJlZml4KGNvbnN0IFhNTENoICogcHJlZml4KSB7CisKKyAgICBtcF9lbnYtPnNldFhFTkNOU1ByZWZpeChwcmVmaXgpOworCit9CisKK2NvbnN0IFhNTENoICogWEVOQ0NpcGhlckltcGw6OmdldFhFTkNOU1ByZWZpeCh2b2lkKSBjb25zdCB7CisKKyAgICByZXR1cm4gbXBfZW52LT5nZXRYRU5DTlNQcmVmaXgoKTsKKworfQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCQkJS2V5IEluZm8gcmVzb2x2ZXJzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIFhFTkNDaXBoZXJJbXBsOjpzZXRLZXlJbmZvUmVzb2x2ZXIoY29uc3QgWFNFQ0tleUluZm9SZXNvbHZlciAqIHJlc29sdmVyKSB7CisKKyAgICBpZiAobXBfa2V5SW5mb1Jlc29sdmVyICE9IE5VTEwpCisgICAgICAgIGRlbGV0ZSBtcF9rZXlJbmZvUmVzb2x2ZXI7CisKKyAgICBtcF9rZXlJbmZvUmVzb2x2ZXIgPSByZXNvbHZlci0+Y2xvbmUoKTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlLZXkgSW5mbyByZXNvbHZlcnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hFTkNFbmNyeXB0ZWREYXRhICogWEVOQ0NpcGhlckltcGw6OmdldEVuY3J5cHRlZERhdGEodm9pZCkgeworCisgICAgcmV0dXJuIG1wX2VuY3J5cHRlZERhdGE7CisKK30KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCUtleXMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgWEVOQ0NpcGhlckltcGw6OnNldEtleShYU0VDQ3J5cHRvS2V5ICoga2V5KSB7CisKKyAgICBpZiAobXBfa2V5ICE9IE5VTEwpCisgICAgICAgIGRlbGV0ZSBtcF9rZXk7CisKKyAgICBtcF9rZXkgPSBrZXk7CisgICAgbV9rZXlEZXJpdmVkID0gZmFsc2U7CisKK30KKwordm9pZCBYRU5DQ2lwaGVySW1wbDo6c2V0S0VLKFhTRUNDcnlwdG9LZXkgKiBrZXkpIHsKKworICAgIGlmIChtcF9rZWsgIT0gTlVMTCkKKyAgICAgICAgZGVsZXRlIG1wX2tlazsKKworICAgIG1wX2tlayA9IGtleTsKKyAgICBtX2tla0Rlcml2ZWQgPSBmYWxzZTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlTZXJpYWxpc2UvRGVzZXJpYWxpc2UgYW4gZWxlbWVudAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRE9NRG9jdW1lbnRGcmFnbWVudCAqIFhFTkNDaXBoZXJJbXBsOjpkZVNlcmlhbGlzZShzYWZlQnVmZmVyICZjb250ZW50LCBET01Ob2RlICogY3R4KSB7CisKKyAgICBET01Eb2N1bWVudEZyYWdtZW50ICogcmVzdWx0OworCisgICAgLy8gQ3JlYXRlIHRoZSBjb250ZXh0IHRvIHBhcnNlIHRoZSBkb2N1bWVudCBhZ2FpbnN0CisgICAgc2FmZUJ1ZmZlciBzYiwgc2J0OworICAgIHNiLnNiWE1MQ2hJbihEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJFbXB0eSk7CisgICAgLy9zYi5zYlhNTENoQXBwZW5kQ2goY2hVbmljb2RlTWFya2VyKTsKKyAgICAvL3NiLnNiWE1MQ2hDYXQ4KCI8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtMTZcIj8+PCIpOworICAgIHNiLnNiWE1MQ2hBcHBlbmRDaChjaE9wZW5BbmdsZSk7CisgICAgc2Iuc2JYTUxDaENhdChzX3RhZ25hbWUpOworCisgICAgLy8gUnVuIHRocm91Z2ggZWFjaCBub2RlIHVwIHRvIHRoZSBkb2N1bWVudCBub2RlIGFuZCBmaW5kIGFueQorICAgIC8vIHhtbG5zOiBub2RlcyB0aGF0IG1heSBiZSBuZWVkZWQgZHVyaW5nIHRoZSBwYXJzZSBvZiB0aGUgZGVjcnlwdGVkIGNvbnRlbnQKKworICAgIERPTU5vZGUgKiBjdHhQYXJlbnQgPSBjdHgtPmdldFBhcmVudE5vZGUoKTsKKyAgICBET01Ob2RlICogd2sgPSBjdHhQYXJlbnQ7CisKKyAgICB3aGlsZSAod2sgIT0gTlVMTCkgeworCisgICAgICAgIERPTU5hbWVkTm9kZU1hcCAqIGF0dHMgPSB3ay0+Z2V0QXR0cmlidXRlcygpOworICAgICAgICBYTUxTaXplX3QgbGVuZ3RoOworICAgICAgICBpZiAoYXR0cyAhPSBOVUxMKQorICAgICAgICAgICAgbGVuZ3RoID0gYXR0cy0+Z2V0TGVuZ3RoKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxlbmd0aCA9IDA7CisKKyAgICAgICAgZm9yIChYTUxTaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgRE9NTm9kZSAqIGF0dCA9IGF0dHMtPml0ZW0oaSk7CisgICAgICAgICAgICBpZiAoc3RyRXF1YWxzKGF0dC0+Z2V0Tm9kZU5hbWUoKSwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyWG1sbnMpIHx8IChYTUxTdHJpbmc6OmNvbXBhcmVOU3RyaW5nKAorICAgICAgICAgICAgICAgIGF0dC0+Z2V0Tm9kZU5hbWUoKSwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyWG1sbnMsIDUpICYmIGF0dC0+Z2V0Tm9kZU5hbWUoKVs1XSA9PSBjaENvbG9uKSkgeworCisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoaXMgbm9kZSBoYXMgYWxyZWFkeSBiZWVuIGZvdW5kCisgICAgICAgICAgICAgICAgRE9NTm9kZSAqIHAgPSBjdHhQYXJlbnQ7CisgICAgICAgICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIHdoaWxlIChwICE9IHdrKSB7CisgICAgICAgICAgICAgICAgICAgIERPTU5hbWVkTm9kZU1hcCAqIHRzdEF0dHMgPSBwLT5nZXRBdHRyaWJ1dGVzKCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh0c3RBdHRzICE9IE5VTEwgJiYgdHN0QXR0cy0+Z2V0TmFtZWRJdGVtKGF0dC0+Z2V0Tm9kZU5hbWUoKSkgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcCA9IHAtPmdldFBhcmVudE5vZGUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGZvdW5kID09IGZhbHNlKSB7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBhdHRyaWJ1dGUgbm9kZSB0aGF0IG5lZWRzIHRvIGJlIGFkZGVkCisgICAgICAgICAgICAgICAgICAgIHNiLnNiWE1MQ2hBcHBlbmRDaChjaFNwYWNlKTsKKyAgICAgICAgICAgICAgICAgICAgc2Iuc2JYTUxDaENhdChhdHQtPmdldE5vZGVOYW1lKCkpOworICAgICAgICAgICAgICAgICAgICBzYi5zYlhNTENoQXBwZW5kQ2goY2hFcXVhbCk7CisgICAgICAgICAgICAgICAgICAgIHNiLnNiWE1MQ2hBcHBlbmRDaChjaERvdWJsZVF1b3RlKTsKKyAgICAgICAgICAgICAgICAgICAgc2Iuc2JYTUxDaENhdChhdHQtPmdldE5vZGVWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgc2Iuc2JYTUxDaEFwcGVuZENoKGNoRG91YmxlUXVvdGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB3ayA9IHdrLT5nZXRQYXJlbnROb2RlKCk7CisgICAgfQorICAgIHNiLnNiWE1MQ2hBcHBlbmRDaChjaENsb3NlQW5nbGUpOworCisgICAgY2hhciogcHJlZml4ID0gdHJhbnNjb2RlVG9VVEY4KHNiLnJhd1hNTENoQnVmZmVyKCkpOworCisgICAgc2J0ID0gcHJlZml4OworICAgIGNvbnN0IGNoYXIgKiBjcmNiID0gY29udGVudC5yYXdDaGFyQnVmZmVyKCk7CisgICAgaW50IG9mZnNldCA9IDA7CisgICAgaWYgKGNyY2JbMF0gPT0gJzwnICYmIGNyY2JbMV0gPT0gJz8nKSB7CisgICAgICAgIC8vIEhhdmUgYSBQSSBwcmVmaXggLSBnZXQgcmlkIG9mIGl0CisgICAgICAgIGludCBpID0gMjsKKyAgICAgICAgd2hpbGUgKGNyY2JbaV0gIT0gJ1wwJyAmJiBjcmNiW2ldICE9ICc+JykKKyAgICAgICAgICAgICsraTsKKworICAgICAgICBpZiAoY3JjYltpXSA9PSAnPicpCisgICAgICAgICAgICBvZmZzZXQgPSBpICsgMTsKKyAgICB9CisKKyAgICBzYnQuc2JTdHJjYXRJbigmY3JjYltvZmZzZXRdKTsKKworICAgIC8vIE5vdyB0cmFuc2Zvcm0gdGhlIGNvbnRlbnQgdG8gVVRGLTgKKyAgICAvL3NiLnNiWE1MQ2hDYXQ4KGNvbnRlbnQucmF3Q2hhckJ1ZmZlcigpKTsKKworICAgIC8vIFRlcm1pbmF0ZSB0aGUgc3RyaW5nCisgICAgc2Iuc2JYTUxDaEluKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ckVtcHR5KTsKKyAgICBzYi5zYlhNTENoQXBwZW5kQ2goY2hPcGVuQW5nbGUpOworICAgIHNiLnNiWE1MQ2hBcHBlbmRDaChjaEZvcndhcmRTbGFzaCk7CisgICAgc2Iuc2JYTUxDaENhdChzX3RhZ25hbWUpOworICAgIHNiLnNiWE1MQ2hBcHBlbmRDaChjaENsb3NlQW5nbGUpOworCisgICAgY2hhciogdHJhaWxlciA9IHRyYW5zY29kZVRvVVRGOChzYi5yYXdYTUxDaEJ1ZmZlcigpKTsKKyAgICBzYnQuc2JTdHJjYXRJbih0cmFpbGVyKTsKKyAgICBYU0VDX1JFTEVBU0VfWE1MQ0godHJhaWxlcik7CisKKyAgICAvLyBOb3cgd2UgbmVlZCB0byBwYXJzZSB0aGUgZG9jdW1lbnQKKyAgICBYZXJjZXNET01QYXJzZXIqIHBhcnNlciA9IE5VTEw7CisgICAgTWVtQnVmSW5wdXRTb3VyY2UqIG1lbUlTID0gTlVMTDsKKyAgICB0cnkgeworICAgICAgICBwYXJzZXIgPSBuZXcgWGVyY2VzRE9NUGFyc2VyOworCisgICAgICAgIHBhcnNlci0+c2V0RG9OYW1lc3BhY2VzKHRydWUpOworICAgICAgICBwYXJzZXItPnNldENyZWF0ZUVudGl0eVJlZmVyZW5jZU5vZGVzKHRydWUpOworICAgICAgICBwYXJzZXItPnNldERvU2NoZW1hKGZhbHNlKTsKKworICAgICAgICAvLyBDcmVhdGUgYW4gaW5wdXQgc291cmNlCisgICAgICAgIHhzZWNzaXplX3QgYnl0ZXMgPSBYTUxTdHJpbmc6OnN0cmluZ0xlbihzYnQucmF3Q2hhckJ1ZmZlcigpKTsKKyAgICAgICAgbWVtSVMgPSBuZXcgTWVtQnVmSW5wdXRTb3VyY2UoKGNvbnN0IFhNTEJ5dGUqKSBzYnQucmF3QnVmZmVyKCksIGJ5dGVzLCAiWFNFQ01lbSIpOworICAgIH0KKyAgICBjYXRjaCAoLi4uKSB7CisgICAgICAgIGRlbGV0ZSBtZW1JUzsKKyAgICAgICAgZGVsZXRlIHBhcnNlcjsKKyAgICAgICAgWFNFQ19SRUxFQVNFX1hNTENIKHByZWZpeCk7CisgICAgICAgIHRocm93OworICAgIH0KKworICAgIFhTRUNfUkVMRUFTRV9YTUxDSChwcmVmaXgpOworICAgIEphbml0b3I8WGVyY2VzRE9NUGFyc2VyPiBqX3BhcnNlcihwYXJzZXIpOworICAgIEphbml0b3I8TWVtQnVmSW5wdXRTb3VyY2U+IGpfbWVtSVMobWVtSVMpOworCisgICAgcGFyc2VyLT5wYXJzZSgqbWVtSVMpOworICAgIHhzZWNzaXplX3QgZXJyb3JDb3VudCA9IHBhcnNlci0+Z2V0RXJyb3JDb3VudCgpOworICAgIGlmIChlcnJvckNvdW50ID4gMCkKKyAgICAgICAgdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDaXBoZXJFcnJvciwgIkVycm9ycyBvY2N1cmVkIGR1cmluZyBkZS1zZXJpYWxpc2F0aW9uIG9mIGRlY3J5cHRlZCBlbGVtZW50IGNvbnRlbnQiKTsKKworICAgIERPTURvY3VtZW50ICogZG9jID0gcGFyc2VyLT5nZXREb2N1bWVudCgpOworCisgICAgLy8gQ3JlYXRlIGEgRG9jdW1lbnRGcmFnbWVudCB0byBob2xkIHRoZSBjaGlsZHJlbiBvZiB0aGUgcGFyc2VkIGRvYyBlbGVtZW50CisgICAgRE9NRG9jdW1lbnQgKmN0eERvY3VtZW50ID0gY3R4LT5nZXRPd25lckRvY3VtZW50KCk7CisgICAgcmVzdWx0ID0gY3R4RG9jdW1lbnQtPmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyAgICBKYW5pdG9yPERPTURvY3VtZW50RnJhZ21lbnQ+IGpfcmVzdWx0KHJlc3VsdCk7CisKKyAgICAvLyBOb3cgZ2V0IHRoZSBjaGlsZHJlbiBvZiB0aGUgZG9jdW1lbnQgaW50byBhIERPQyBmcmFnbWVudAorICAgIERPTU5vZGUgKiBmcmFnRWx0ID0gZG9jLT5nZXREb2N1bWVudEVsZW1lbnQoKTsKKyAgICBET01Ob2RlICogY2hpbGQ7CisKKyAgICBpZiAoZnJhZ0VsdCAhPSBOVUxMKSB7CisgICAgICAgIGNoaWxkID0gZnJhZ0VsdC0+Z2V0Rmlyc3RDaGlsZCgpOworICAgIH0gZWxzZSB7CisKKyAgICAgICAgdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDaXBoZXJFcnJvciwgIlhFTkNDaXBoZXI6OmRlU2VyaWFsc2UgLSByZS1wYXJzZWQgZG9jdW1lbnQgdW5leHBlY3RlZGx5IGVtcHR5Iik7CisgICAgfQorCisgICAgd2hpbGUgKGNoaWxkICE9IE5VTEwpIHsKKyAgICAgICAgcmVzdWx0LT5hcHBlbmRDaGlsZChjdHhEb2N1bWVudC0+aW1wb3J0Tm9kZShjaGlsZCwgdHJ1ZSkpOworICAgICAgICBjaGlsZCA9IGNoaWxkLT5nZXROZXh0U2libGluZygpOworICAgIH0KKworICAgIC8vIERvbmUhCisKKyAgICBqX3Jlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCQkJRGVjcnlwdCBhbiBFbGVtZW50IGFuZCByZXBsYWNlIGluIG9yaWdpbmFsIGRvY3VtZW50CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYU0VDQ3J5cHRvS2V5ICogWEVOQ0NpcGhlckltcGw6OmRlY3J5cHRLZXlGcm9tS2V5SW5mb0xpc3QoRFNJR0tleUluZm9MaXN0ICoga2lsKSB7CisKKyAgICBYU0VDQ3J5cHRvS2V5ICogcmV0ID0gTlVMTDsKKyAgICBYU0VDQWxnb3JpdGhtSGFuZGxlciAqaGFuZGxlcjsKKworICAgIGludCBrTGVuID0gKGludCkga2lsLT5nZXRTaXplKCk7CisKKyAgICBmb3IgKGludCBpID0gMDsgcmV0ID09IE5VTEwgJiYgaSA8IGtMZW47ICsraSkgeworCisgICAgICAgIGlmIChraWwtPml0ZW0oaSktPmdldEtleUluZm9UeXBlKCkgPT0gRFNJR0tleUluZm86OktFWUlORk9fRU5DUllQVEVES0VZKSB7CisKKyAgICAgICAgICAgIFhFTkNFbmNyeXB0ZWRLZXkgKiBlayA9IChYRU5DRW5jcnlwdGVkS2V5KikgKGtpbC0+aXRlbShpKSk7CisgICAgICAgICAgICB2b2xhdGlsZSBYTUxCeXRlIGJ1ZmZlclsxMDI0XTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgLy8gSGF2ZSB0byBjYXN0IG9mZiB2b2xhdGlsZQorICAgICAgICAgICAgICAgIGludCBrZXlTaXplID0gZGVjcnlwdEtleShlaywgKFhNTEJ5dGUgKikgYnVmZmVyLCAxMDI0KTsKKworICAgICAgICAgICAgICAgIGlmIChrZXlTaXplID4gMCkgeworICAgICAgICAgICAgICAgICAgICAvLyBUcnkgdG8gbWFwIHRoZSBrZXkKKworICAgICAgICAgICAgICAgICAgICBYRU5DRW5jcnlwdGlvbk1ldGhvZCAqIGVuY3J5cHRpb25NZXRob2QgPSBtcF9lbmNyeXB0ZWREYXRhLT5nZXRFbmNyeXB0aW9uTWV0aG9kKCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVuY3J5cHRpb25NZXRob2QgIT0gTlVMTCkgeworCisgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyID0gWFNFQ1BsYXRmb3JtVXRpbHM6OmdfYWxnb3JpdGhtTWFwcGVyLT5tYXBVUklUb0hhbmRsZXIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBfZW5jcnlwdGVkRGF0YS0+Z2V0RW5jcnlwdGlvbk1ldGhvZCgpLT5nZXRBbGdvcml0aG0oKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYW5kbGVyICE9IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gaGFuZGxlci0+Y3JlYXRlS2V5Rm9yVVJJKG1wX2VuY3J5cHRlZERhdGEtPmdldEVuY3J5cHRpb25NZXRob2QoKS0+Z2V0QWxnb3JpdGhtKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChYTUxCeXRlICopIGJ1ZmZlciwga2V5U2l6ZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhdGNoIChYU0VDQ3J5cHRvRXhjZXB0aW9uICYpIHsKKyAgICAgICAgICAgICAgICAvKiBEbyBub3RoaW5nIC0gdGhpcyBpcyBsaWtlbHkgdG8gYmUgYSBiYWQgZGVjcnlwdCBvbiBhIHB1YmxpYyBrZXkgKi8KKyAgICAgICAgICAgIH0gY2F0Y2ggKC4uLikgeworICAgICAgICAgICAgICAgIG1lbXNldCgodm9pZCAqKSBidWZmZXIsIDAsIDEwMjQpOworICAgICAgICAgICAgICAgIHRocm93OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBDbGVhciBvdXQgdGhlIGtleSBidWZmZXIKKyAgICAgICAgICAgIG1lbXNldCgodm9pZCAqKSBidWZmZXIsIDAsIDEwMjQpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJldDsKK30KKworWEVOQ0VuY3J5cHRlZERhdGEgKiBYRU5DQ2lwaGVySW1wbDo6bG9hZEVuY3J5cHRlZERhdGEoRE9NRWxlbWVudCAqIGVsZW1lbnQpIHsKKworICAgIC8vIEZpcnN0IG9mIGFsbCBsb2FkIHRoZSBlbGVtZW50CisgICAgaWYgKG1wX2VuY3J5cHRlZERhdGEgIT0gTlVMTCkKKyAgICAgICAgZGVsZXRlIG1wX2VuY3J5cHRlZERhdGE7CisKKyAgICBYU0VDbmV3KG1wX2VuY3J5cHRlZERhdGEsIFhFTkNFbmNyeXB0ZWREYXRhSW1wbChtcF9lbnYsIGVsZW1lbnQpKTsKKworICAgIC8vIExvYWQKKyAgICBtcF9lbmNyeXB0ZWREYXRhLT5sb2FkKCk7CisKKyAgICByZXR1cm4gbXBfZW5jcnlwdGVkRGF0YTsKKworfQorCitET01Eb2N1bWVudCAqIFhFTkNDaXBoZXJJbXBsOjpkZWNyeXB0RWxlbWVudChET01FbGVtZW50ICogZWxlbWVudCkgeworCisgICAgLy8gRmlyc3Qgb2YgYWxsIGxvYWQgdGhlIGVsZW1lbnQKKyAgICBpZiAobXBfZW5jcnlwdGVkRGF0YSAhPSBOVUxMKQorICAgICAgICBkZWxldGUgbXBfZW5jcnlwdGVkRGF0YTsKKworICAgIFhTRUNuZXcobXBfZW5jcnlwdGVkRGF0YSwgWEVOQ0VuY3J5cHRlZERhdGFJbXBsKG1wX2VudiwgZWxlbWVudCkpOworCisgICAgLy8gTG9hZAorICAgIG1wX2VuY3J5cHRlZERhdGEtPmxvYWQoKTsKKworICAgIHJldHVybiBkZWNyeXB0RWxlbWVudCgpOworCit9CisKK0RPTU5vZGUgKiBYRU5DQ2lwaGVySW1wbDo6ZGVjcnlwdEVsZW1lbnREZXRhY2hlZChET01FbGVtZW50ICogZWxlbWVudCkgeworCisgICAgLy8gRmlyc3Qgb2YgYWxsIGxvYWQgdGhlIGVsZW1lbnQKKyAgICBpZiAobXBfZW5jcnlwdGVkRGF0YSAhPSBOVUxMKQorICAgICAgICBkZWxldGUgbXBfZW5jcnlwdGVkRGF0YTsKKworICAgIFhTRUNuZXcobXBfZW5jcnlwdGVkRGF0YSwgWEVOQ0VuY3J5cHRlZERhdGFJbXBsKG1wX2VudiwgZWxlbWVudCkpOworCisgICAgLy8gTG9hZAorICAgIG1wX2VuY3J5cHRlZERhdGEtPmxvYWQoKTsKKworICAgIHJldHVybiBkZWNyeXB0RWxlbWVudERldGFjaGVkKCk7CisKK30KKworRE9NTm9kZSAqIFhFTkNDaXBoZXJJbXBsOjpkZWNyeXB0RWxlbWVudERldGFjaGVkKHZvaWQpIHsKKworICAgIFhTRUNBbGdvcml0aG1IYW5kbGVyICpoYW5kbGVyOworCisgICAgaWYgKG1wX2VuY3J5cHRlZERhdGEgPT0gTlVMTCkgeworCisgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q2lwaGVyRXJyb3IsICJYRU5DQ2lwaGVySW1wbDo6ZGVjcnlwdEVsZW1lbnQgLSBubyBlbGVtZW50IGxvYWRlZCBmb3IgZGVjcnlwdGlvbiIpOworCisgICAgfQorCisgICAgLy8gQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHlwZQorICAgIGNvbnN0IFhNTENoICogdHlwZVVSSSA9IG1wX2VuY3J5cHRlZERhdGEtPmdldFR5cGUoKTsKKworICAgIGlmICh0eXBlVVJJICE9IE5VTEwgJiYgIXN0ckVxdWFscyh0eXBlVVJJLCBEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYRU5DX0VMRU1FTlQpICYmICFzdHJFcXVhbHModHlwZVVSSSwKKyAgICAgICAgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWEVOQ19DT05URU5UKSkgeworCisgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q2lwaGVyRXJyb3IsICJYRU5DQ2lwaGVySW1wbDo6ZGVjcnlwdEVsZW1lbnQgLSBUeXBlIG5vdCBFbGVtZW50IG9yIENvbnRlbnQiKTsKKworICAgIH0KKworICAgIGlmIChtX2tleURlcml2ZWQgJiYgbXBfa2V5KSB7CisgICAgICAgIGRlbGV0ZSBtcF9rZXk7CisgICAgICAgIG1wX2tleSA9IE5VTEw7CisgICAgfQorCisgICAgLy8gTWFrZSBzdXJlIHdlIGhhdmUgYSBrZXkgYmVmb3JlIHdlIGRvIGFueXRoaW5nIGVsc2UgdG9vIGRyYXN0aWMKKyAgICBpZiAobXBfa2V5ID09IE5VTEwpIHsKKworICAgICAgICBpZiAobXBfa2V5SW5mb1Jlc29sdmVyICE9IE5VTEwpCisgICAgICAgICAgICBtcF9rZXkgPSBtcF9rZXlJbmZvUmVzb2x2ZXItPnJlc29sdmVLZXkobXBfZW5jcnlwdGVkRGF0YS0+Z2V0S2V5SW5mb0xpc3QoKSk7CisKKyAgICAgICAgaWYgKG1wX2tleSA9PSBOVUxMKSB7CisKKyAgICAgICAgICAgIG1wX2tleSA9IGRlY3J5cHRLZXlGcm9tS2V5SW5mb0xpc3QobXBfZW5jcnlwdGVkRGF0YS0+Z2V0S2V5SW5mb0xpc3QoKSk7CisKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtcF9rZXkgPT0gTlVMTCkgeworCisgICAgICAgICAgICB0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkNpcGhlckVycm9yLCAiWEVOQ0NpcGhlckltcGw6OmRlY3J5cHRFbGVtZW50IC0gTm8ga2V5IHNldCBhbmQgY2Fubm90IHJlc29sdmUiKTsKKyAgICAgICAgfQorCisgICAgICAgIG1fa2V5RGVyaXZlZCA9IHRydWU7CisgICAgfQorCisgICAgLy8gR2V0IHRoZSByYXcgZW5jcnlwdGVkIGRhdGEKKyAgICBUWEZNQ2hhaW4gKiBjID0gbXBfZW5jcnlwdGVkRGF0YS0+Y3JlYXRlQ2lwaGVyVFhGTUNoYWluKCk7CisgICAgSmFuaXRvcjxUWEZNQ2hhaW4+IGpfYyhjKTsKKworICAgIC8vIEdldCB0aGUgQWxnb3JpdGhtIGhhbmRsZXIgZm9yIHRoZSBhbGdvcml0aG0KKyAgICBYRU5DRW5jcnlwdGlvbk1ldGhvZCAqIGVuY3J5cHRpb25NZXRob2QgPSBtcF9lbmNyeXB0ZWREYXRhLT5nZXRFbmNyeXB0aW9uTWV0aG9kKCk7CisKKyAgICBpZiAoZW5jcnlwdGlvbk1ldGhvZCAhPSBOVUxMKSB7CisKKyAgICAgICAgaGFuZGxlcgorICAgICAgICAgICAgPSBYU0VDUGxhdGZvcm1VdGlsczo6Z19hbGdvcml0aG1NYXBwZXItPm1hcFVSSVRvSGFuZGxlcihtcF9lbmNyeXB0ZWREYXRhLT5nZXRFbmNyeXB0aW9uTWV0aG9kKCktPmdldEFsZ29yaXRobSgpKTsKKworICAgIH0KKworICAgIGVsc2UgeworCisgICAgICAgIGhhbmRsZXIgPSBYU0VDUGxhdGZvcm1VdGlsczo6Z19hbGdvcml0aG1NYXBwZXItPm1hcFVSSVRvSGFuZGxlcihYU0VDQWxnb3JpdGhtTWFwcGVyOjpzX2RlZmF1bHRFbmNyeXB0aW9uTWFwcGluZyk7CisKKyAgICB9CisKKyAgICBzYWZlQnVmZmVyIHNiKCIiKTsKKyAgICB1bnNpZ25lZCBpbnQgZGVjcnlwdExlbjsKKworICAgIGlmIChoYW5kbGVyICE9IE5VTEwpIHsKKworICAgICAgICBkZWNyeXB0TGVuID0gaGFuZGxlci0+ZGVjcnlwdFRvU2FmZUJ1ZmZlcihjLCBtcF9lbmNyeXB0ZWREYXRhLT5nZXRFbmNyeXB0aW9uTWV0aG9kKCksIG1wX2tleSwKKyAgICAgICAgICAgIG1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKSwgc2IpOworICAgIH0gZWxzZSB7CisKKyAgICAgICAgLy8gVmVyeSBzdHJhbmdlIGlmIHdlIGdldCBoZXJlIC0gYW55IHByb2JsZW1zIHNob3VsZCB0aHJvdyBhbgorICAgICAgICAvLyBleGNlcHRpb24gaW4gdGhlIEFsZ29yaXRobU1hcHBlci4KKworICAgICAgICB0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkNpcGhlckVycm9yLAorICAgICAgICAgICAgIlhFTkNDaXBoZXJJbXBsOjpkZWNyeXB0RWxlbWVudCAtIEVycm9yIHJldHJpZXZpbmcgYSBoYW5kbGVyIGZvciBhbGdvcml0aG0iKTsKKworICAgIH0KKworICAgIHNiW2RlY3J5cHRMZW5dID0gJ1wwJzsKKworICAgIC8vIE5vdyBkZS1zZXJpYWxpc2UKKyAgICBET01FbGVtZW50ICogZWxlbWVudCA9IG1wX2VuY3J5cHRlZERhdGEtPmdldEVsZW1lbnQoKTsKKyAgICBET01Eb2N1bWVudEZyYWdtZW50ICogZnJhZyA9IGRlU2VyaWFsaXNlKHNiLCBlbGVtZW50KTsKKworICAgIHJldHVybiBmcmFnOworCit9CisKK0RPTURvY3VtZW50ICogWEVOQ0NpcGhlckltcGw6OmRlY3J5cHRFbGVtZW50KHZvaWQpIHsKKworICAgIC8vIENhbGwgdGhlIHdvcmtlcgorICAgIERPTUVsZW1lbnQgKiBlbGVtZW50ID0gbXBfZW5jcnlwdGVkRGF0YS0+Z2V0RWxlbWVudCgpOworICAgIERPTURvY3VtZW50RnJhZ21lbnQgKiBmcmFnID0gKERPTURvY3VtZW50RnJhZ21lbnQgKikgZGVjcnlwdEVsZW1lbnREZXRhY2hlZCgpOworCisgICAgaWYgKGZyYWcgIT0gTlVMTCkgeworCisgICAgICAgIC8vIEhhdmUgc29tZXRoaW5nIHRvIHJlcGxhY2UgY3VycmVudCBlbGVtZW50IHdpdGgKKyAgICAgICAgRE9NTm9kZSAqIHAgPSBlbGVtZW50LT5nZXRQYXJlbnROb2RlKCk7CisKKyAgICAgICAgLy8gQnkgaW5zZXJ0aW5nIHRoZSBEb2N1bWVudEZyYWdtZW50LCB3ZSBlZmZlY3RpdmVseSBpbnNlcnQgdGhlIGNoaWxkcmVuCisgICAgICAgIHAtPnJlcGxhY2VDaGlsZChmcmFnLCBlbGVtZW50KTsKKworICAgICAgICAvLyBEZWxldGUgdGhlIGZyYWcgYW5kIHRoZSBvbGQgZWxlbWVudAorICAgICAgICBmcmFnLT5yZWxlYXNlKCk7CisgICAgICAgIGVsZW1lbnQtPnJlbGVhc2UoKTsKKworICAgIH0KKworICAgIHJldHVybiBtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCQkJRGVjcnlwdCBkYXRhIHRvIGFuIGlucHV0IHN0cmVhbQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWFNFQ0JpblRYRk1JbnB1dFN0cmVhbSAqIFhFTkNDaXBoZXJJbXBsOjpkZWNyeXB0VG9CaW5JbnB1dFN0cmVhbSgKKyAgICBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGVsZW1lbnQKKykgeworCisgICAgWFNFQ0FsZ29yaXRobUhhbmRsZXIgKmhhbmRsZXI7CisKKyAgICAvLyBGaXJzdCBvZiBhbGwgbG9hZCB0aGUgZWxlbWVudAorICAgIGlmIChtcF9lbmNyeXB0ZWREYXRhICE9IE5VTEwpCisgICAgZGVsZXRlIG1wX2VuY3J5cHRlZERhdGE7CisKKyAgICBYU0VDbmV3KG1wX2VuY3J5cHRlZERhdGEsCisgICAgICAgIFhFTkNFbmNyeXB0ZWREYXRhSW1wbChtcF9lbnYsIGVsZW1lbnQpKTsKKworICAgIC8vIExvYWQKKyAgICBtcF9lbmNyeXB0ZWREYXRhLT5sb2FkKCk7CisKKyAgICAvLyBDaGVjayBrZXkgaXMgdmFsaWQKKyAgICBpZiAobV9rZXlEZXJpdmVkICYmIG1wX2tleSkgeworICAgICAgICBkZWxldGUgbXBfa2V5OworICAgICAgICBtcF9rZXkgPSBOVUxMOworICAgIH0KKworICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIGEga2V5IGJlZm9yZSB3ZSBkbyBhbnl0aGluZyBlbHNlIHRvbyBkcmFzdGljCisgICAgaWYgKG1wX2tleSA9PSBOVUxMKSB7CisKKyAgICAgICAgaWYgKG1wX2tleUluZm9SZXNvbHZlciAhPSBOVUxMKQorICAgICAgICBtcF9rZXkgPSBtcF9rZXlJbmZvUmVzb2x2ZXItPnJlc29sdmVLZXkobXBfZW5jcnlwdGVkRGF0YS0+Z2V0S2V5SW5mb0xpc3QoKSk7CisKKyAgICAgICAgaWYgKG1wX2tleSA9PSBOVUxMKSB7CisKKyAgICAgICAgICAgIG1wX2tleSA9IGRlY3J5cHRLZXlGcm9tS2V5SW5mb0xpc3QobXBfZW5jcnlwdGVkRGF0YS0+Z2V0S2V5SW5mb0xpc3QoKSk7CisKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtcF9rZXkgPT0gTlVMTCkgeworCisgICAgICAgICAgICB0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkNpcGhlckVycm9yLAorICAgICAgICAgICAgICAgICJYRU5DQ2lwaGVySW1wbDo6ZGVjcnlwdFRvQmluSW5wdXRTdHJlYW0gLSBObyBrZXkgc2V0IGFuZCBjYW5ub3QgcmVzb2x2ZSIpOworICAgICAgICB9CisKKyAgICAgICAgbV9rZXlEZXJpdmVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBHZXQgdGhlIHJhdyBlbmNyeXB0ZWQgZGF0YQorICAgIFRYRk1DaGFpbiAqIGMgPSBtcF9lbmNyeXB0ZWREYXRhLT5jcmVhdGVDaXBoZXJUWEZNQ2hhaW4oKTsKKyAgICBKYW5pdG9yPFRYRk1DaGFpbj4gal9jKGMpOworCisgICAgLy8gR2V0IHRoZSBBbGdvcml0aG0gaGFuZGxlciBmb3IgdGhlIGFsZ29yaXRobQorICAgIFhFTkNFbmNyeXB0aW9uTWV0aG9kICogZW5jcnlwdGlvbk1ldGhvZCA9IG1wX2VuY3J5cHRlZERhdGEtPmdldEVuY3J5cHRpb25NZXRob2QoKTsKKworICAgIGlmIChlbmNyeXB0aW9uTWV0aG9kICE9IE5VTEwpIHsKKworICAgICAgICBoYW5kbGVyID0KKyAgICAgICAgWFNFQ1BsYXRmb3JtVXRpbHM6OmdfYWxnb3JpdGhtTWFwcGVyLT5tYXBVUklUb0hhbmRsZXIoCisgICAgICAgICAgICBtcF9lbmNyeXB0ZWREYXRhLT5nZXRFbmNyeXB0aW9uTWV0aG9kKCktPmdldEFsZ29yaXRobSgpKTsKKworICAgIH0KKworICAgIGVsc2UgeworCisgICAgICAgIGhhbmRsZXIgPQorICAgICAgICBYU0VDUGxhdGZvcm1VdGlsczo6Z19hbGdvcml0aG1NYXBwZXItPm1hcFVSSVRvSGFuZGxlcigKKyAgICAgICAgICAgIFhTRUNBbGdvcml0aG1NYXBwZXI6OnNfZGVmYXVsdEVuY3J5cHRpb25NYXBwaW5nKTsKKworICAgIH0KKworICAgIHNhZmVCdWZmZXIgc2IoIiIpOworCisgICAgaWYgKGhhbmRsZXIgIT0gTlVMTCkgeworCisgICAgICAgIGlmIChoYW5kbGVyLT5hcHBlbmREZWNyeXB0Q2lwaGVyVFhGTShjLAorICAgICAgICAgICAgICAgIG1wX2VuY3J5cHRlZERhdGEtPmdldEVuY3J5cHRpb25NZXRob2QoKSwKKyAgICAgICAgICAgICAgICBtcF9rZXksCisgICAgICAgICAgICAgICAgbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpKSAhPSB0cnVlKSB7CisgICAgICAgICAgICB0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkNpcGhlckVycm9yLAorICAgICAgICAgICAgICAgICJYRU5DQ2lwaGVySW1wbDo6ZGVjcnlwdFRvQmluSW5wdXRTdHJlYW0gLSBlcnJvciBhcHBlbmRpbmcgZmluYWwgdHJhbnNmb3JtIik7CisgICAgICAgIH0KKworICAgIH0KKyAgICBlbHNlIHsKKworICAgICAgICAvLyBWZXJ5IHN0cmFuZ2UgaWYgd2UgZ2V0IGhlcmUgLSBhbnkgcHJvYmxlbXMgc2hvdWxkIHRocm93IGFuCisgICAgICAgIC8vIGV4Y2VwdGlvbiBpbiB0aGUgQWxnb3JpdGhtTWFwcGVyLgorCisgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q2lwaGVyRXJyb3IsCisgICAgICAgICAgICAiWEVOQ0NpcGhlckltcGw6OmRlY3J5cHRFbGVtZW50IC0gRXJyb3IgcmV0cmlldmluZyBhIGhhbmRsZXIgZm9yIGFsZ29yaXRobSIpOworCisgICAgfQorCisgICAgLy8gV3JhcCBpbiBhIEJpbiBpbnB1dCBzdHJlYW0KKyAgICBYU0VDQmluVFhGTUlucHV0U3RyZWFtICogcmV0OworICAgIHJldCA9IG5ldyBYU0VDQmluVFhGTUlucHV0U3RyZWFtKGMpOyAvLyBQcm9icyB3aXRoIE1TVkMrKyBtZWFuIG5vIFhTRUNuZXcKKyAgICBqX2MucmVsZWFzZSgpOyAvLyBOb3cgb3duZWQgYnkgInJldCIKKworICAgIHJldHVybiByZXQ7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCQkJRGVjcnlwdCBhIGtleSBpbiBhbiBYRU5DRW5jcnlwdGVkS2V5IGVsZW1lbnQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2ludCBYRU5DQ2lwaGVySW1wbDo6ZGVjcnlwdEtleShYRU5DRW5jcnlwdGVkS2V5ICogZW5jcnlwdGVkS2V5LCBYTUxCeXRlICogcmF3S2V5LCBpbnQgbWF4S2V5U2l6ZSkgeworCisgICAgLy8gQ2hlY2sgS0VLIGlzIHZhbGlkCisgICAgaWYgKG1fa2VrRGVyaXZlZCAmJiBtcF9rZWspIHsKKyAgICAgICAgZGVsZXRlIG1wX2tlazsKKyAgICAgICAgbXBfa2VrID0gTlVMTDsKKyAgICB9CisKKyAgICAvLyBNYWtlIHN1cmUgd2UgaGF2ZSBhIGtleSBiZWZvcmUgd2UgZG8gYW55dGhpbmcgZWxzZSB0b28gZHJhc3RpYworICAgIGlmIChtcF9rZWsgPT0gTlVMTCkgeworCisgICAgICAgIGlmIChtcF9rZXlJbmZvUmVzb2x2ZXIgIT0gTlVMTCkKKyAgICAgICAgICAgIG1wX2tlayA9IG1wX2tleUluZm9SZXNvbHZlci0+cmVzb2x2ZUtleShlbmNyeXB0ZWRLZXktPmdldEtleUluZm9MaXN0KCkpOworCisgICAgICAgIGlmIChtcF9rZWsgPT0gTlVMTCkgeworCisgICAgICAgICAgICB0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkNpcGhlckVycm9yLCAiWEVOQ0NpcGhlckltcGw6OmRlY3J5cHRLZXkgLSBObyBLRUsgc2V0IGFuZCBjYW5ub3QgcmVzb2x2ZSIpOworICAgICAgICB9CisgICAgICAgIG1fa2VrRGVyaXZlZCA9IHRydWU7CisgICAgfQorCisgICAgLy8gR2V0IHRoZSByYXcgZW5jcnlwdGVkIGRhdGEKKyAgICBUWEZNQ2hhaW4gKiBjID0gKChYRU5DRW5jcnlwdGVkS2V5SW1wbCAqKSBlbmNyeXB0ZWRLZXkpLT5jcmVhdGVDaXBoZXJUWEZNQ2hhaW4oKTsKKyAgICBKYW5pdG9yPFRYRk1DaGFpbj4gal9jKGMpOworCisgICAgLy8gR2V0IHRoZSBBbGdvcml0aG0gaGFuZGxlciBmb3IgdGhlIGFsZ29yaXRobQorICAgIFhFTkNFbmNyeXB0aW9uTWV0aG9kICogZW5jcnlwdGlvbk1ldGhvZCA9IGVuY3J5cHRlZEtleS0+Z2V0RW5jcnlwdGlvbk1ldGhvZCgpOworICAgIFhTRUNBbGdvcml0aG1IYW5kbGVyICpoYW5kbGVyOworCisgICAgaWYgKGVuY3J5cHRpb25NZXRob2QgIT0gTlVMTCkgeworCisgICAgICAgIGhhbmRsZXIgPSBYU0VDUGxhdGZvcm1VdGlsczo6Z19hbGdvcml0aG1NYXBwZXItPm1hcFVSSVRvSGFuZGxlcihlbmNyeXB0ZWRLZXktPmdldEVuY3J5cHRpb25NZXRob2QoKS0+Z2V0QWxnb3JpdGhtKCkpOworCisgICAgfQorCisgICAgZWxzZSB7CisKKyAgICAgICAgaGFuZGxlciA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2FsZ29yaXRobU1hcHBlci0+bWFwVVJJVG9IYW5kbGVyKFhTRUNBbGdvcml0aG1NYXBwZXI6OnNfZGVmYXVsdEVuY3J5cHRpb25NYXBwaW5nKTsKKworICAgIH0KKworICAgIHNhZmVCdWZmZXIgc2IoIiIpOworICAgIHVuc2lnbmVkIGludCBrZXlTaXplOworCisgICAgaWYgKGhhbmRsZXIgIT0gTlVMTCkgeworCisgICAgICAgIGtleVNpemUgPSBoYW5kbGVyLT5kZWNyeXB0VG9TYWZlQnVmZmVyKGMsIGVuY3J5cHRlZEtleS0+Z2V0RW5jcnlwdGlvbk1ldGhvZCgpLCBtcF9rZWssIG1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKSwgc2IpOworICAgIH0gZWxzZSB7CisKKyAgICAgICAgLy8gVmVyeSBzdHJhbmdlIGlmIHdlIGdldCBoZXJlIC0gYW55IHByb2JsZW1zIHNob3VsZCB0aHJvdyBhbgorICAgICAgICAvLyBleGNlcHRpb24gaW4gdGhlIEFsZ29yaXRobU1hcHBlci4KKworICAgICAgICB0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkNpcGhlckVycm9yLAorICAgICAgICAgICAgIlhFTkNDaXBoZXJJbXBsOjpkZWNyeXB0RWxlbWVudCAtIEVycm9yIHJldHJpZXZpbmcgYSBoYW5kbGVyIGZvciBhbGdvcml0aG0iKTsKKworICAgIH0KKworICAgIGtleVNpemUgPSAoa2V5U2l6ZSA8ICh1bnNpZ25lZCBpbnQpIG1heEtleVNpemUgPyBrZXlTaXplIDogKHVuc2lnbmVkIGludCkgbWF4S2V5U2l6ZSk7CisgICAgbWVtY3B5KHJhd0tleSwgc2IucmF3QnVmZmVyKCksIGtleVNpemUpOworCisgICAgcmV0dXJuIGtleVNpemU7Cit9CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlEZWNyeXB0IGEga2V5IGZyb20gYSBET00gc3RydWN0dXJlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitpbnQgWEVOQ0NpcGhlckltcGw6OmRlY3J5cHRLZXkoRE9NRWxlbWVudCAqIGtleU5vZGUsIFhNTEJ5dGUgKiByYXdLZXksIGludCBtYXhLZXlTaXplKSB7CisKKyAgICBYRU5DRW5jcnlwdGVkS2V5ICogZW5jcnlwdGVkS2V5ID0gbG9hZEVuY3J5cHRlZEtleShrZXlOb2RlKTsKKyAgICBKYW5pdG9yPFhFTkNFbmNyeXB0ZWRLZXk+IGpfZW5jcnlwdGVkS2V5KGVuY3J5cHRlZEtleSk7CisKKyAgICAvLyBOb3cgZGVjcnlwdCEKKyAgICByZXR1cm4gZGVjcnlwdEtleShlbmNyeXB0ZWRLZXksIHJhd0tleSwgbWF4S2V5U2l6ZSk7CisKK30KKworWEVOQ0VuY3J5cHRlZEtleSAqIFhFTkNDaXBoZXJJbXBsOjpsb2FkRW5jcnlwdGVkS2V5KERPTUVsZW1lbnQgKiBrZXlOb2RlKSB7CisKKyAgICBYRU5DRW5jcnlwdGVkS2V5SW1wbCAqIGVuY3J5cHRlZEtleTsKKyAgICBYU0VDbmV3KGVuY3J5cHRlZEtleSwgWEVOQ0VuY3J5cHRlZEtleUltcGwobXBfZW52LCBrZXlOb2RlKSk7CisgICAgSmFuaXRvcjxYRU5DRW5jcnlwdGVkS2V5SW1wbD4gal9lbmNyeXB0ZWRLZXkoZW5jcnlwdGVkS2V5KTsKKworICAgIC8vIExvYWQKKyAgICBlbmNyeXB0ZWRLZXktPmxvYWQoKTsKKworICAgIGpfZW5jcnlwdGVkS2V5LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gZW5jcnlwdGVkS2V5OworCit9CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlFbmNyeXB0IGEgQmluSW5wdXRTdHJlYW0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hFTkNFbmNyeXB0ZWREYXRhICogWEVOQ0NpcGhlckltcGw6OmVuY3J5cHRCaW5JbnB1dFN0cmVhbSgKKyAgICBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgQmluSW5wdXRTdHJlYW0gKiBwbGFpblRleHQsCisgICAgZW5jcnlwdGlvbk1ldGhvZCBlbSwKKyAgICBjb25zdCBYTUxDaCAqIGFsZ29yaXRobVVSSSkgeworCisgICAgVFhGTVVSTCAqIHVyaTsKKyAgICBYU0VDbmV3KHVyaSwgVFhGTVVSTChtcF9kb2MsIE5VTEwpKTsKKworICAgIHVyaS0+c2V0SW5wdXQocGxhaW5UZXh0KTsKKyAgICBUWEZNQ2hhaW4gYyh1cmkpOworCisgICAgcmV0dXJuIGVuY3J5cHRUWEZNQ2hhaW4oJmMsIGVtLCBhbGdvcml0aG1VUkkpOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCUVuY3J5cHQgYSBUWEZNQ2hhaW4KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hFTkNFbmNyeXB0ZWREYXRhICogWEVOQ0NpcGhlckltcGw6OmVuY3J5cHRUWEZNQ2hhaW4oVFhGTUNoYWluICogcGxhaW5UZXh0LCBlbmNyeXB0aW9uTWV0aG9kIGVtLCBjb25zdCBYTUxDaCAqIGFsZ29yaXRobVVSSSkgeworCisgICAgLy8gTWFrZSBzdXJlIHdlIGhhdmUgYSBrZXkgYmVmb3JlIHdlIGRvIGFueXRoaW5nIHRvbyBkcmFzdGljCisgICAgaWYgKG1wX2tleSA9PSBOVUxMKSB7CisgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q2lwaGVyRXJyb3IsICJYRU5DQ2lwaGVySW1wbDo6ZW5jcnlwdEVsZW1lbnQgLSBObyBrZXkgc2V0Iik7CisgICAgfQorCisgICAgLy8gTWFwIHRoZSBlbmNyeXB0aW9uIG1ldGhvZCB0byBhIFVSSQorICAgIHNhZmVCdWZmZXIgYWxnb3JpdGhtU0I7CisgICAgY29uc3QgWE1MQ2ggKiBhbGdvcml0aG07CisKKyAgICBpZiAoZW0gPT0gRU5DUllQVF9OT05FKSB7CisgICAgICAgIGFsZ29yaXRobSA9IGFsZ29yaXRobVVSSTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZW5jcnlwdGlvbk1ldGhvZDJVUkkoYWxnb3JpdGhtU0IsIGVtKSAhPSB0cnVlKSB7CisgICAgICAgICAgICB0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkNpcGhlckVycm9yLCAiWEVOQ0NpcGhlckltcGw6OmVuY3J5cHRFbGVtZW50IC0gVW5rbm93biBlbmNyeXB0aW9uIG1ldGhvZCIpOworICAgICAgICB9CisgICAgICAgIGFsZ29yaXRobSA9IGFsZ29yaXRobVNCLnNiU3RyVG9YTUxDaCgpOworICAgIH0KKworICAgIC8vIENyZWF0ZSB0aGUgZWxlbWVudCB3aXRoIGEgZHVtbXkgZW5jcnlwdGVkIHZhbHVlCisKKyAgICBpZiAobXBfZW5jcnlwdGVkRGF0YSAhPSBOVUxMKSB7CisgICAgICAgIGRlbGV0ZSBtcF9lbmNyeXB0ZWREYXRhOworICAgICAgICBtcF9lbmNyeXB0ZWREYXRhID0gTlVMTDsKKyAgICB9CisKKyAgICBYU0VDbmV3KG1wX2VuY3J5cHRlZERhdGEsIFhFTkNFbmNyeXB0ZWREYXRhSW1wbChtcF9lbnYpKTsKKyAgICBtcF9lbmNyeXB0ZWREYXRhLT5jcmVhdGVCbGFua0VuY3J5cHRlZERhdGEoWEVOQ0NpcGhlckRhdGE6OlZBTFVFX1RZUEUsIGFsZ29yaXRobSwgc19ub0RhdGEpOworCisgICAgLy8gUGVyZm9ybSB0aGUgZW5jcnlwdGlvbgorICAgIFhTRUNBbGdvcml0aG1IYW5kbGVyICpoYW5kbGVyOworCisgICAgaWYgKGFsZ29yaXRobSAhPSBOVUxMKSB7CisKKyAgICAgICAgaGFuZGxlciA9IFhTRUNQbGF0Zm9ybVV0aWxzOjpnX2FsZ29yaXRobU1hcHBlci0+bWFwVVJJVG9IYW5kbGVyKGFsZ29yaXRobSk7CisKKyAgICB9CisKKyAgICBlbHNlIHsKKworICAgICAgICBoYW5kbGVyID0gWFNFQ1BsYXRmb3JtVXRpbHM6OmdfYWxnb3JpdGhtTWFwcGVyLT5tYXBVUklUb0hhbmRsZXIoWFNFQ0FsZ29yaXRobU1hcHBlcjo6c19kZWZhdWx0RW5jcnlwdGlvbk1hcHBpbmcpOworCisgICAgfQorCisgICAgc2FmZUJ1ZmZlciBzYjsKKworICAgIGlmIChoYW5kbGVyICE9IE5VTEwpIHsKKworICAgICAgICBoYW5kbGVyLT5lbmNyeXB0VG9TYWZlQnVmZmVyKHBsYWluVGV4dCwgbXBfZW5jcnlwdGVkRGF0YS0+Z2V0RW5jcnlwdGlvbk1ldGhvZCgpLCBtcF9rZXksIG1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKSwKKyAgICAgICAgICAgIHNiKTsKKyAgICB9IGVsc2UgeworCisgICAgICAgIC8vIFZlcnkgc3RyYW5nZSBpZiB3ZSBnZXQgaGVyZSAtIGFueSBwcm9ibGVtcyBzaG91bGQgdGhyb3cgYW4KKyAgICAgICAgLy8gZXhjZXB0aW9uIGluIHRoZSBBbGdvcml0aG1NYXBwZXIuCisKKyAgICAgICAgdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDaXBoZXJFcnJvciwKKyAgICAgICAgICAgICJYRU5DQ2lwaGVySW1wbDo6ZW5jcnlwdFRYRk1DaGFpbiAtIEVycm9yIHJldHJpZXZpbmcgYSBoYW5kbGVyIGZvciBhbGdvcml0aG0iKTsKKworICAgIH0KKworICAgIC8vIFNldCB0aGUgdmFsdWUKKyAgICBYRU5DQ2lwaGVyVmFsdWUgKiB2YWwgPSBtcF9lbmNyeXB0ZWREYXRhLT5nZXRDaXBoZXJEYXRhKCktPmdldENpcGhlclZhbHVlKCk7CisKKyAgICB2YWwtPnNldENpcGhlclN0cmluZyhzYi5zYlN0clRvWE1MQ2goKSk7CisKKyAgICByZXR1cm4gbXBfZW5jcnlwdGVkRGF0YTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlFbmNyeXB0IGEga2V5CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYRU5DRW5jcnlwdGVkS2V5ICogWEVOQ0NpcGhlckltcGw6OmVuY3J5cHRLZXkoY29uc3QgdW5zaWduZWQgY2hhciAqIGtleUJ1ZmZlciwgdW5zaWduZWQgaW50IGtleUxlbiwgZW5jcnlwdGlvbk1ldGhvZCBlbSwKKyAgICBjb25zdCBYTUxDaCAqIGFsZ29yaXRobVVSSSkgeworCisgICAgaWYgKG1wX2tlayA9PSBOVUxMKSB7CisgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q2lwaGVyRXJyb3IsICJYRU5DQ2lwaGVySW1wbDo6ZW5jcnlwdEtleSAtIE5vIEtFSyBzZXQiKTsKKyAgICB9CisKKyAgICAvLyBNYXAgdGhlIGVuY3J5cHRpb24gbWV0aG9kIHRvIGEgVVJJCisgICAgc2FmZUJ1ZmZlciBhbGdvcml0aG1TQjsKKyAgICBjb25zdCBYTUxDaCAqIGFsZ29yaXRobTsKKworICAgIGlmIChlbSA9PSBFTkNSWVBUX05PTkUpIHsKKyAgICAgICAgYWxnb3JpdGhtID0gYWxnb3JpdGhtVVJJOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChlbmNyeXB0aW9uTWV0aG9kMlVSSShhbGdvcml0aG1TQiwgZW0pICE9IHRydWUpIHsKKyAgICAgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q2lwaGVyRXJyb3IsICJYRU5DQ2lwaGVySW1wbDo6ZW5jcnlwdEtleSAtIFVua25vd24gZW5jcnlwdGlvbiBtZXRob2QiKTsKKyAgICAgICAgfQorICAgICAgICBhbGdvcml0aG0gPSBhbGdvcml0aG1TQi5zYlN0clRvWE1MQ2goKTsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUgdGhlIGVsZW1lbnQgd2l0aCBhIGR1bW15IGVuY3J5cHRlZCB2YWx1ZQorCisgICAgWEVOQ0VuY3J5cHRlZEtleUltcGwgKiBlbmNyeXB0ZWRLZXk7CisKKyAgICBYU0VDbmV3KGVuY3J5cHRlZEtleSwgWEVOQ0VuY3J5cHRlZEtleUltcGwobXBfZW52KSk7CisgICAgSmFuaXRvcjxYRU5DRW5jcnlwdGVkS2V5SW1wbD4gal9lbmNyeXB0ZWRLZXkoZW5jcnlwdGVkS2V5KTsKKworICAgIGVuY3J5cHRlZEtleS0+Y3JlYXRlQmxhbmtFbmNyeXB0ZWRLZXkoWEVOQ0NpcGhlckRhdGE6OlZBTFVFX1RZUEUsIGFsZ29yaXRobSwgc19ub0RhdGEpOworCisgICAgLy8gQ3JlYXRlIGEgdHJhbnNmb3JtIGNoYWluIHRvIGRvIHBhc3MgdGhlIGtleSB0byB0aGUgZW5jcnlwdG8KKworICAgIHNhZmVCdWZmZXIgcmF3S2V5OworICAgIHJhd0tleS5pc1NlbnNpdGl2ZSgpOworICAgIHJhd0tleS5zYk1lbWNweUluKGtleUJ1ZmZlciwga2V5TGVuKTsKKworICAgIFRYRk1TQiAqIHRzYjsKKyAgICBYU0VDbmV3KHRzYiwgVFhGTVNCKG1wX2RvYykpOworCisgICAgVFhGTUNoYWluICogYzsKKyAgICBYU0VDbmV3KGMsIFRYRk1DaGFpbih0c2IpKTsKKyAgICBKYW5pdG9yPFRYRk1DaGFpbj4gal9jKGMpOworCisgICAgdHNiLT5zZXRJbnB1dChyYXdLZXksIGtleUxlbik7CisKKyAgICAvLyBQZXJmb3JtIHRoZSBlbmNyeXB0aW9uCisgICAgWFNFQ0FsZ29yaXRobUhhbmRsZXIgKmhhbmRsZXI7CisKKyAgICBpZiAoYWxnb3JpdGhtICE9IE5VTEwpIHsKKworICAgICAgICBoYW5kbGVyID0gWFNFQ1BsYXRmb3JtVXRpbHM6OmdfYWxnb3JpdGhtTWFwcGVyLT5tYXBVUklUb0hhbmRsZXIoYWxnb3JpdGhtKTsKKworICAgIH0KKworICAgIGVsc2UgeworCisgICAgICAgIGhhbmRsZXIgPSBYU0VDUGxhdGZvcm1VdGlsczo6Z19hbGdvcml0aG1NYXBwZXItPm1hcFVSSVRvSGFuZGxlcihYU0VDQWxnb3JpdGhtTWFwcGVyOjpzX2RlZmF1bHRFbmNyeXB0aW9uTWFwcGluZyk7CisKKyAgICB9CisKKyAgICBzYWZlQnVmZmVyIHNiOworCisgICAgaWYgKGhhbmRsZXIgIT0gTlVMTCkgeworCisgICAgICAgIGhhbmRsZXItPmVuY3J5cHRUb1NhZmVCdWZmZXIoYywgZW5jcnlwdGVkS2V5LT5nZXRFbmNyeXB0aW9uTWV0aG9kKCksIG1wX2tlaywgbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpLCBzYik7CisgICAgfSBlbHNlIHsKKworICAgICAgICAvLyBWZXJ5IHN0cmFuZ2UgaWYgd2UgZ2V0IGhlcmUgLSBhbnkgcHJvYmxlbXMgc2hvdWxkIHRocm93IGFuCisgICAgICAgIC8vIGV4Y2VwdGlvbiBpbiB0aGUgQWxnb3JpdGhtTWFwcGVyLgorCisgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q2lwaGVyRXJyb3IsICJYRU5DQ2lwaGVySW1wbDo6ZW5jcnlwdEtleSAtIEVycm9yIHJldHJpZXZpbmcgYSBoYW5kbGVyIGZvciBhbGdvcml0aG0iKTsKKworICAgIH0KKworICAgIC8vIFNldCB0aGUgdmFsdWUKKyAgICBYRU5DQ2lwaGVyVmFsdWUgKiB2YWwgPSBlbmNyeXB0ZWRLZXktPmdldENpcGhlckRhdGEoKS0+Z2V0Q2lwaGVyVmFsdWUoKTsKKworICAgIHZhbC0+c2V0Q2lwaGVyU3RyaW5nKHNiLnNiU3RyVG9YTUxDaCgpKTsKKworICAgIGpfZW5jcnlwdGVkS2V5LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gZW5jcnlwdGVkS2V5OworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlDcmVhdGUgYW4gRW5jcnlwdGVkRGF0YSBlbGVtZW50CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYRU5DRW5jcnlwdGVkRGF0YSAqIFhFTkNDaXBoZXJJbXBsOjpjcmVhdGVFbmNyeXB0ZWREYXRhKFhFTkNDaXBoZXJEYXRhOjpYRU5DQ2lwaGVyRGF0YVR5cGUgdHlwZSwgY29uc3QgWE1MQ2ggKiBhbGdvcml0aG0sCisgICAgY29uc3QgWE1MQ2ggKiB2YWx1ZSkgeworCisgICAgLy8gQ2xlYW4gb3V0IGFueXRoaW5nIGN1cnJlbnRseSBiZWluZyB1c2VkCisgICAgaWYgKG1wX2VuY3J5cHRlZERhdGEgIT0gTlVMTCkgeworICAgICAgICBkZWxldGUgbXBfZW5jcnlwdGVkRGF0YTsKKyAgICAgICAgbXBfZW5jcnlwdGVkRGF0YSA9IE5VTEw7CisgICAgfQorICAgIC8vIENyZWF0ZSBhIG5ldyBFbmNyeXB0ZWREYXRhIGVsZW1lbnQKKworICAgIFhTRUNuZXcobXBfZW5jcnlwdGVkRGF0YSwgWEVOQ0VuY3J5cHRlZERhdGFJbXBsKG1wX2VudikpOworICAgIG1wX2VuY3J5cHRlZERhdGEtPmNyZWF0ZUJsYW5rRW5jcnlwdGVkRGF0YSh0eXBlLCBhbGdvcml0aG0sIHZhbHVlKTsKKworICAgIHJldHVybiBtcF9lbmNyeXB0ZWREYXRhOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlFbmNyeXB0IGFuIGVsZW1lbnQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RPTU5vZGUgKiBYRU5DQ2lwaGVySW1wbDo6ZW5jcnlwdEVsZW1lbnREZXRhY2hlZChET01FbGVtZW50ICogZWxlbWVudCwgZW5jcnlwdGlvbk1ldGhvZCBlbSwgY29uc3QgWE1MQ2ggKiBhbGdvcml0aG1VUkkpIHsKKworICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIGEga2V5IGJlZm9yZSB3ZSBkbyBhbnl0aGluZyB0b28gZHJhc3RpYworICAgIGlmIChtcF9rZXkgPT0gTlVMTCkgeworICAgICAgICB0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkNpcGhlckVycm9yLCAiWEVOQ0NpcGhlckltcGw6OmVuY3J5cHRFbGVtZW50IC0gTm8ga2V5IHNldCIpOworICAgIH0KKworICAgIC8vIENyZWF0ZSBhIHRyYW5zZm9ybSBjaGFpbiB0byBkbyB0aGUgZW5jcnlwdGlvbgorICAgIFRYRk1Eb2NPYmplY3QgKiB0ZG9jT2JqOworICAgIFhTRUNuZXcodGRvY09iaiwgVFhGTURvY09iamVjdChtcF9kb2MpKTsKKyAgICBUWEZNQ2hhaW4gKiBjOworICAgIFhTRUNuZXcoYywgVFhGTUNoYWluKHRkb2NPYmopKTsKKworICAgIEphbml0b3I8VFhGTUNoYWluPiBqX2MoYyk7CisKKyAgICB0ZG9jT2JqLT5zZXRJbnB1dChtcF9kb2MsIGVsZW1lbnQpOworCisgICAgLy8gTm93IG5lZWQgdG8gc2VyaWFsaXNlIHRoZSBlbGVtZW50IC0gZWFzaWVzdCB0byBqdXN0IHVzZSBhIGNhbm9uaWNhbGlzZXIKKyAgICBUWEZNQzE0biAqdGMxNG47CisgICAgWFNFQ25ldyh0YzE0biwgVFhGTUMxNG4obXBfZG9jKSk7CisgICAgYy0+YXBwZW5kVHhmbSh0YzE0bik7CisKKyAgICB0YzE0bi0+YWN0aXZhdGVDb21tZW50cygpOworICAgIGlmIChtX3VzZUV4Y0MxNG5TZXJpYWxpc2F0aW9uKQorICAgICAgICB0YzE0bi0+c2V0RXhjbHVzaXZlKCk7CisKKyAgICAvLyBEbyB0aGUgaGFyZCB3b3JrCisKKyAgICBlbmNyeXB0VFhGTUNoYWluKGMsIGVtLCBhbGdvcml0aG1VUkkpOworCisgICAgbXBfZW5jcnlwdGVkRGF0YS0+c2V0VHlwZShEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYRU5DX0VMRU1FTlQpOworICAgIHJldHVybiBtcF9lbmNyeXB0ZWREYXRhLT5nZXRFbGVtZW50KCk7CisKK30KKworRE9NRG9jdW1lbnQgKiBYRU5DQ2lwaGVySW1wbDo6ZW5jcnlwdEVsZW1lbnQoRE9NRWxlbWVudCAqIGVsZW1lbnQsIGVuY3J5cHRpb25NZXRob2QgZW0sIGNvbnN0IFhNTENoICogYWxnb3JpdGhtVVJJKSB7CisKKyAgICAvLyBEbyB0aGUgYWN0dWFsIGVuY3J5cHRpb24gd29yaworICAgIGVuY3J5cHRFbGVtZW50RGV0YWNoZWQoZWxlbWVudCwgZW0sIGFsZ29yaXRobVVSSSk7CisKKyAgICAvLyBSZXBsYWNlIG9yaWdpbmFsIGVsZW1lbnQKKyAgICBET01Ob2RlICogcCA9IGVsZW1lbnQtPmdldFBhcmVudE5vZGUoKTsKKworICAgIGlmIChwID09IE5VTEwpIHsKKyAgICAgICAgdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDaXBoZXJFcnJvciwgIlhFTkNDaXBoZXJJbXBsOjplbmNyeXB0RWxlbWVudCAtIFBhc3NlZCBpbiBlbGVtZW50IGhhcyBubyBwYXJlbnQiKTsKKyAgICB9CisKKyAgICBwLT5yZXBsYWNlQ2hpbGQobXBfZW5jcnlwdGVkRGF0YS0+Z2V0RWxlbWVudCgpLCBlbGVtZW50KTsKKworICAgIC8vIENsZWFyIHVwIHRoZSBvbGQgY2hpbGQKKyAgICBlbGVtZW50LT5yZWxlYXNlKCk7CisKKyAgICByZXR1cm4gbXBfZG9jOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCUVuY3J5cHQgYW4gZWxlbWVudCdzIGNoaWxkcmVuCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitET01Eb2N1bWVudCAqIFhFTkNDaXBoZXJJbXBsOjplbmNyeXB0RWxlbWVudENvbnRlbnQoCisgICAgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBlbGVtZW50LAorICAgIGVuY3J5cHRpb25NZXRob2QgZW0sCisgICAgY29uc3QgWE1MQ2ggKiBhbGdvcml0aG1VUkkpIHsKKworICAgIC8vIERvIHRoZSB3b3JrCisgICAgZW5jcnlwdEVsZW1lbnRDb250ZW50RGV0YWNoZWQoZWxlbWVudCwgZW0sIGFsZ29yaXRobVVSSSk7CisKKyAgICAvLyBEZWxldGUgY3VycmVudCBjaGlsZHJlbgorICAgIERPTU5vZGUgKiBuID0gZWxlbWVudC0+Z2V0Rmlyc3RDaGlsZCgpOworICAgIHdoaWxlIChuICE9IE5VTEwpIHsKKworICAgICAgICBlbGVtZW50LT5yZW1vdmVDaGlsZChuKTsKKyAgICAgICAgbi0+cmVsZWFzZSgpOworCisgICAgICAgIG4gPSBlbGVtZW50LT5nZXRGaXJzdENoaWxkKCk7CisKKyAgICB9CisKKyAgICAvLyBOb3cgYWRkIHRoZSBFbmNyeXB0ZWREYXRhCisgICAgZWxlbWVudC0+YXBwZW5kQ2hpbGQobXBfZW5jcnlwdGVkRGF0YS0+Z2V0RWxlbWVudCgpKTsKKworICAgIHJldHVybiBtcF9kb2M7CisKK30KKworRE9NTm9kZSAqIFhFTkNDaXBoZXJJbXBsOjplbmNyeXB0RWxlbWVudENvbnRlbnREZXRhY2hlZCgKKyAgICBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGVsZW1lbnQsCisgICAgZW5jcnlwdGlvbk1ldGhvZCBlbSwKKyAgICBjb25zdCBYTUxDaCAqIGFsZ29yaXRobVVSSSkgeworCisgICAgLy8gTWFrZSBzdXJlIHdlIGhhdmUgYSBrZXkgYmVmb3JlIHdlIGRvIGFueXRoaW5nIHRvbyBkcmFzdGljCisgICAgaWYgKG1wX2tleSA9PSBOVUxMKSB7CisgICAgICAgIHRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6Q2lwaGVyRXJyb3IsCisgICAgICAgICAgICAiWEVOQ0NpcGhlckltcGw6OmVuY3J5cHRFbGVtZW50IC0gTm8ga2V5IHNldCIpOworICAgIH0KKworICAgIC8vIENyZWF0ZSBhIHRyYW5zZm9ybSBjaGFpbiB0byBkbyB0aGUgZW5jcnlwdGlvbgorICAgIC8vIFdlIHVzZSBhIGNvbmNhdCB0cmFuc2Zvcm1lciBzbyB3ZSBjYW4gY29uY2F0aW5hdGUgdGhlIGJ5dGVzdHJlYW1zCisgICAgLy8gZnJvbSB0aGUgc2VyaWFsaXNhdGlvbiBvZiBlYWNoIGNoaWxkIGluIHR1cm4KKworICAgIFRYRk1Db25jYXRDaGFpbnMgKiB0Y2F0OworICAgIFhTRUNuZXcodGNhdCwgVFhGTUNvbmNhdENoYWlucyhtcF9kb2MpKTsKKyAgICBUWEZNQ2hhaW4gKiBjOworICAgIFhTRUNuZXcoYywgVFhGTUNoYWluKHRjYXQpKTsKKyAgICBKYW5pdG9yPFRYRk1DaGFpbj4gal9jKGMpOworCisgICAgRE9NTm9kZSAqbiA9IGVsZW1lbnQtPmdldEZpcnN0Q2hpbGQoKTsKKworICAgIHdoaWxlIChuICE9IE5VTEwpIHsKKworICAgICAgICBUWEZNRG9jT2JqZWN0ICogdGRvY09iajsKKyAgICAgICAgWFNFQ25ldyh0ZG9jT2JqLCBUWEZNRG9jT2JqZWN0KG1wX2RvYykpOworICAgICAgICBUWEZNQ2hhaW4gKiB0YzsKKyAgICAgICAgWFNFQ25ldyh0YywgVFhGTUNoYWluKHRkb2NPYmopKTsKKworICAgICAgICAvLyBBZGQgdG8gdGhlIGNvbmNhdCBvYmplY3QsIHdoaWNoIHdpbGwgb3duIGl0LCBzbyBpZiBhbnl0aGluZyB0aHJvd3MKKyAgICAgICAgLy8gdGhlIG1lbW9yeSB3aWxsIGJlIHJlbGVhc2VkLgorCisgICAgICAgIHRjYXQtPnNldElucHV0KHRjKTsKKyAgICAgICAgdGRvY09iai0+c2V0SW5wdXQobXBfZG9jLCBuKTsKKworICAgICAgICAvLyBOb3cgbmVlZCB0byBzZXJpYWxpc2UgdGhlIGVsZW1lbnQgLSBlYXNpZXN0IHRvIGp1c3QgdXNlIGEgY2Fub25pY2FsaXNlcgorICAgICAgICBUWEZNQzE0biAqdGMxNG47CisgICAgICAgIFhTRUNuZXcodGMxNG4sIFRYRk1DMTRuKG1wX2RvYykpOworICAgICAgICB0Yy0+YXBwZW5kVHhmbSh0YzE0bik7CisKKyAgICAgICAgdGMxNG4tPmFjdGl2YXRlQ29tbWVudHMoKTsKKyAgICAgICAgaWYgKG1fdXNlRXhjQzE0blNlcmlhbGlzYXRpb24pCisgICAgICAgIHRjMTRuLT5zZXRFeGNsdXNpdmUoKTsKKworICAgICAgICBuID0gbi0+Z2V0TmV4dFNpYmxpbmcoKTsKKworICAgIH0KKworICAgIGVuY3J5cHRUWEZNQ2hhaW4oYywgZW0sIGFsZ29yaXRobVVSSSk7CisKKyAgICBtcF9lbmNyeXB0ZWREYXRhLT5zZXRUeXBlKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhFTkNfQ09OVEVOVCk7CisKKyAgICByZXR1cm4gbXBfZW5jcnlwdGVkRGF0YS0+Z2V0RWxlbWVudCgpOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCVByZXR0eSBQcmludCBmdW5jdGlvbnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgWEVOQ0NpcGhlckltcGw6OnNldEV4Y2x1c2l2ZUMxNG5TZXJpYWxpc2F0aW9uKGJvb2wgZmxhZykgeworCisgICAgbV91c2VFeGNDMTRuU2VyaWFsaXNhdGlvbiA9IGZsYWc7Cit9CisKK2Jvb2wgWEVOQ0NpcGhlckltcGw6OmdldEV4Y2x1c2l2ZUMxNG5TZXJpYWxpc2F0aW9uKHZvaWQpIHsKKworICAgIHJldHVybiBtX3VzZUV4Y0MxNG5TZXJpYWxpc2F0aW9uOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCUV4Y2x1c2l2ZSBDMTRuIHNlcmlhbGlzYXRpb24gc2V0dGluZworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBYRU5DQ2lwaGVySW1wbDo6c2V0UHJldHR5UHJpbnQoYm9vbCBmbGFnKSB7CisKKyAgICBtcF9lbnYtPnNldFByZXR0eVByaW50RmxhZyhmbGFnKTsKKworfQorCitib29sIFhFTkNDaXBoZXJJbXBsOjpnZXRQcmV0dHlQcmludCh2b2lkKSB7CisKKyAgICByZXR1cm4gbXBfZW52LT5nZXRQcmV0dHlQcmludEZsYWcoKTsKKworfQpkaWZmIC0tZ2l0IGEvYy9zcmMveGVuYy9pbXBsL1hFTkNDaXBoZXJJbXBsLmhwcCBiL2Mvc3JjL3hlbmMvaW1wbC9YRU5DQ2lwaGVySW1wbC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JlYjViNwotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hlbmMvaW1wbC9YRU5DQ2lwaGVySW1wbC5ocHAKQEAgLTAsMCArMSwxOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMy0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhFTkNDaXBoZXJJbXBsIDo9IEltcGxlbWVudGF0aW9uIG9mIHRoZSBtYWluIGVuY3J5cHRpb24gd29ya2VyIGNsYXNzCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhFTkNDSVBIRVJJTVBMX0lOQ0xVREUKKyNkZWZpbmUgWEVOQ0NJUEhFUklNUExfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy94ZW5jL1hFTkNDaXBoZXIuaHBwPgorCitjbGFzcyBzYWZlQnVmZmVyOworY2xhc3MgWFNFQ1Byb3ZpZGVyOworY2xhc3MgWEVOQ0VuY3J5cHRlZERhdGFJbXBsOworY2xhc3MgVFhGTUNoYWluOworY2xhc3MgWFNFQ0VudjsKK2NsYXNzIFhTRUNLZXlJbmZvUmVzb2x2ZXI7CitjbGFzcyBYU0VDUGxhdGZvcm1VdGlsczsKK2NsYXNzIERTSUdLZXlJbmZvTGlzdDsKKworWFNFQ19ERUNMQVJFX1hFUkNFU19DTEFTUyhET01Ob2RlKTsKK1hTRUNfREVDTEFSRV9YRVJDRVNfQ0xBU1MoRE9NRG9jdW1lbnRGcmFnbWVudCk7CisKK2NsYXNzIFhFTkNDaXBoZXJJbXBsIDogcHVibGljICBYRU5DQ2lwaGVyIHsKKworcHVibGljOgorCisJdmlydHVhbCB+WEVOQ0NpcGhlckltcGwoKTsKKworCS8vIEltcGxlbWVudGF0aW9uIGZvciBkZWNyeXB0aW5nIGVsZW1lbnRzCisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiAKKwkJZGVjcnlwdEVsZW1lbnQoWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBlbGVtZW50KTsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqIAorCQlkZWNyeXB0RWxlbWVudERldGFjaGVkKFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogZWxlbWVudCk7CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogCisJCWRlY3J5cHRFbGVtZW50KHZvaWQpOworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICogCisJCWRlY3J5cHRFbGVtZW50RGV0YWNoZWQodm9pZCk7CisJWFNFQ0JpblRYRk1JbnB1dFN0cmVhbSAqIGRlY3J5cHRUb0JpbklucHV0U3RyZWFtKAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGVsZW1lbnQKKwkpOworCisJLy8gRGVjcnlwdGluZyBLZXlzCisJdmlydHVhbCBpbnQgZGVjcnlwdEtleShYRU5DRW5jcnlwdGVkS2V5ICogZW5jcnlwdGVkS2V5LCAKKwkJWE1MQnl0ZSAqIHJhd0tleSwKKwkJaW50IG1heEtleVNpemUpOworCXZpcnR1YWwgaW50IGRlY3J5cHRLZXkoCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICoga2V5Tm9kZSwKKwkJWE1MQnl0ZSAqIHJhd0tleSwKKwkJaW50IG1heEtleVNpemUKKwkpOworCisKKwkvLyBJbXBsZW1lbnRhdGlvbiBmb3IgZW5jcnlwdGlvbiBFbGVtZW50cworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGVuY3J5cHRFbGVtZW50KAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGVsZW1lbnQsCisJCWVuY3J5cHRpb25NZXRob2QgZW0sCisJCWNvbnN0IFhNTENoICogdXJpID0gTlVMTCk7CisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBlbmNyeXB0RWxlbWVudENvbnRlbnQoCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogZWxlbWVudCwKKwkJZW5jcnlwdGlvbk1ldGhvZCBlbSwKKwkJY29uc3QgWE1MQ2ggKiBhbGdvcml0aG1VUkkgPSBOVUxMKTsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZSAqIGVuY3J5cHRFbGVtZW50RGV0YWNoZWQoCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogZWxlbWVudCwKKwkJZW5jcnlwdGlvbk1ldGhvZCBlbSwKKwkJY29uc3QgWE1MQ2ggKiB1cmkgPSBOVUxMKTsKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICogZW5jcnlwdEVsZW1lbnRDb250ZW50RGV0YWNoZWQoCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogZWxlbWVudCwKKwkJZW5jcnlwdGlvbk1ldGhvZCBlbSwKKwkJY29uc3QgWE1MQ2ggKiBhbGdvcml0aG1VUkkgPSBOVUxMKTsKKworCS8vIEVuY3J5cHQgYSBrZXkKKwl2aXJ0dWFsIFhFTkNFbmNyeXB0ZWRLZXkgKiBlbmNyeXB0S2V5KAorCQljb25zdCB1bnNpZ25lZCBjaGFyICoga2V5QnVmZmVyLAorCQl1bnNpZ25lZCBpbnQga2V5TGVuLAorCQllbmNyeXB0aW9uTWV0aG9kIGVtLAorCQljb25zdCBYTUxDaCAqIGFsZ29yaXRobVVSSSA9IE5VTEwKKwkpOworCS8vIEVuY3J5cHQgb2N0ZXQgc3RyZWFtcworCXZpcnR1YWwgWEVOQ0VuY3J5cHRlZERhdGEgKiBlbmNyeXB0QmluSW5wdXRTdHJlYW0oCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBCaW5JbnB1dFN0cmVhbSAqIHBsYWluVGV4dCwKKwkJZW5jcnlwdGlvbk1ldGhvZCBlbSwKKwkJY29uc3QgWE1MQ2ggKiBhbGdvcml0aG1VUkkgPSBOVUxMCisJKTsKKwl2aXJ0dWFsIFhFTkNFbmNyeXB0ZWREYXRhICogZW5jcnlwdFRYRk1DaGFpbigKKwkJVFhGTUNoYWluICogcGxhaW5UZXh0LAorCQllbmNyeXB0aW9uTWV0aG9kIGVtLAorCQljb25zdCBYTUxDaCAqIGFsZ29yaXRobVVSSSA9IE5VTEwKKwkpOworCisJLy8gR2V0dGVyIG1ldGhvZHMKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBnZXREb2N1bWVudCh2b2lkKSAKKwkJe3JldHVybiBtcF9kb2M7fQorCWNvbnN0IFhNTENoICogZ2V0WEVOQ05TUHJlZml4KHZvaWQpIGNvbnN0OworCXZpcnR1YWwgWEVOQ0VuY3J5cHRlZERhdGEgKiBnZXRFbmNyeXB0ZWREYXRhKHZvaWQpOworCWJvb2wgZ2V0UHJldHR5UHJpbnQodm9pZCk7CisJYm9vbCBnZXRFeGNsdXNpdmVDMTRuU2VyaWFsaXNhdGlvbih2b2lkKTsKKworCS8vIFNldHRlciBtZXRob2RzCisJdm9pZCBzZXRLZXkoWFNFQ0NyeXB0b0tleSAqIGtleSk7CisJdm9pZCBzZXRLRUsoWFNFQ0NyeXB0b0tleSAqIGtleSk7CisJdm9pZCBzZXRLZXlJbmZvUmVzb2x2ZXIoY29uc3QgWFNFQ0tleUluZm9SZXNvbHZlciAqIHJlc29sdmVyKTsKKworCXZvaWQgc2V0WEVOQ05TUHJlZml4KGNvbnN0IFhNTENoICogcHJlZml4KTsKKwl2b2lkIHNldFByZXR0eVByaW50KGJvb2wgZmxhZyk7CisJdm9pZCBzZXRFeGNsdXNpdmVDMTRuU2VyaWFsaXNhdGlvbihib29sIGZsYWcpOworCisJLy8gQ3JlYXRpb24gbWV0aG9kcworCVhFTkNFbmNyeXB0ZWREYXRhICogY3JlYXRlRW5jcnlwdGVkRGF0YShYRU5DQ2lwaGVyRGF0YTo6WEVOQ0NpcGhlckRhdGFUeXBlIHR5cGUsCisJCQkJCQkJCQkJCWNvbnN0IFhNTENoICogYWxnb3JpdGhtLAorCQkJCQkJCQkJCQljb25zdCBYTUxDaCAqIHZhbHVlKTsKKwl2aXJ0dWFsIFhFTkNFbmNyeXB0ZWRLZXkgKiBsb2FkRW5jcnlwdGVkS2V5KAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGtleU5vZGUKKwkJKTsKKwl2aXJ0dWFsIFhFTkNFbmNyeXB0ZWREYXRhICogbG9hZEVuY3J5cHRlZERhdGEoCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogZGF0YU5vZGUKKwkJKTsKKworcHJvdGVjdGVkOgorCisJLy8gSW5pdGlhbGlzYXRpb24KKwlzdGF0aWMgdm9pZCBJbml0aWFsaXNlKHZvaWQpOworCitwcm90ZWN0ZWQ6CisKKwkvLyBQcm90ZWN0ZWQgdG8gcHJldmVudCBkaXJlY3QgY3JlYXRpb24gb2Ygb2JqZWN0cworCVhFTkNDaXBoZXJJbXBsKFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGRvYyk7CisKK3ByaXZhdGU6CisKKwkvLyBJbnRlcm5hbCBmdW5jdGlvbnMKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnRGcmFnbWVudCAKKwkJCQkJCQkqIGRlU2VyaWFsaXNlKAorCQkJCQkJCQlzYWZlQnVmZmVyICZjb250ZW50LCAKKwkJCQkJCQkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUgKiBjdHgKKwkJCQkJCQkpOworCVhTRUNDcnlwdG9LZXkgKiBkZWNyeXB0S2V5RnJvbUtleUluZm9MaXN0KERTSUdLZXlJbmZvTGlzdCAqIGtpbCk7CisKKwkvLyBVbmltcGxlbWVudGVkIGNvbnN0cnVjdG9yCisJWEVOQ0NpcGhlckltcGwoKTsKKworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudAkJCQkKKwkJCQkJCQkqIG1wX2RvYzsJCQkvLyBEb2N1bWVudCBhZ2FpbnN0IHdoaWNoIHRoaXMgd2lsbCBvcGVyYXRlCisKKwkvLyBDdXJyZW50IHdvcmtpbmcgb2JqZWN0CisJWEVOQ0VuY3J5cHRlZERhdGFJbXBsCSogbXBfZW5jcnlwdGVkRGF0YTsKKworCS8vIEtleQorCVhTRUNDcnlwdG9LZXkJCQkqIG1wX2tleTsKKwlib29sCQkJCQltX2tleURlcml2ZWQ7CQkvLyBXYXMgdGhpcyBkZXJpdmVkIG9yIGxvYWRlZD8KKworCS8vIEtFSworCVhTRUNDcnlwdG9LZXkJCQkqIG1wX2tlazsKKwlib29sCQkJCQltX2tla0Rlcml2ZWQ7CQkvLyBXYXMgdGhpcyBkZXJpdmVkIG9yIGxvYWRlZD8KKworCS8vIEVudmlyb25tZW50CisJWFNFQ0VudgkJCQkJKiBtcF9lbnY7CisKKwkvLyBSZXNvbHZlcnMKKwlYU0VDS2V5SW5mb1Jlc29sdmVyCQkqIG1wX2tleUluZm9SZXNvbHZlcjsKKworCS8vIFVzZSBleGNsdXNpdmUgY2Fub25pY2FsaXNhdGlvbj8KKwlib29sCQkJCQltX3VzZUV4Y0MxNG5TZXJpYWxpc2F0aW9uOworCisJZnJpZW5kIGNsYXNzIFhTRUNQcm92aWRlcjsKKwlmcmllbmQgY2xhc3MgWFNFQ1BsYXRmb3JtVXRpbHM7CisKK307CisKKyNlbmRpZiAvKiBYRU5DQ0lQSEVSSU1QTF9JTkNMVURFICovCisKZGlmZiAtLWdpdCBhL2Mvc3JjL3hlbmMvaW1wbC9YRU5DQ2lwaGVyUmVmZXJlbmNlSW1wbC5jcHAgYi9jL3NyYy94ZW5jL2ltcGwvWEVOQ0NpcGhlclJlZmVyZW5jZUltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4MGU5OTQKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94ZW5jL2ltcGwvWEVOQ0NpcGhlclJlZmVyZW5jZUltcGwuY3BwCkBAIC0wLDAgKzEsMzQ5IEBACisvKgorICogQ29weXJpZ2h0IDIwMDMtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYRU5DQ2lwaGVyUmVmZXJlbmNlIDo9IEltcGxlbWVudGF0aW9uIGZvciBDaXBoZXJSZWZlcmVuY2UgZWxlbWVudAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1RyYW5zZm9ybUxpc3QuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHUmVmZXJlbmNlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1RyYW5zZm9ybUxpc3QuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHVHJhbnNmb3JtQmFzZTY0LmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1RyYW5zZm9ybVhQYXRoLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1RyYW5zZm9ybVhTTC5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdUcmFuc2Zvcm1DMTRuLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNTYWZlQnVmZmVyRm9ybWF0dGVyLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRW52LmhwcD4KKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxVbmlEZWZzLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvSmFuaXRvci5ocHA+CisKKyNpbmNsdWRlICJYRU5DQ2lwaGVyUmVmZXJlbmNlSW1wbC5ocHAiCisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlTdHJpbmcgQ29uc3RhbnRzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0aWMgWE1MQ2ggc19DaXBoZXJSZWZlcmVuY2VbXSA9IHsKKworCWNoTGF0aW5fQywKKwljaExhdGluX2ksCisJY2hMYXRpbl9wLAorCWNoTGF0aW5faCwKKwljaExhdGluX2UsCisJY2hMYXRpbl9yLAorCWNoTGF0aW5fUiwKKwljaExhdGluX2UsCisJY2hMYXRpbl9mLAorCWNoTGF0aW5fZSwKKwljaExhdGluX3IsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fbiwKKwljaExhdGluX2MsCisJY2hMYXRpbl9lLAorCWNoTnVsbAorfTsKKworc3RhdGljIFhNTENoIHNfVHJhbnNmb3Jtc1tdID0geworCisJY2hMYXRpbl9ULAorCWNoTGF0aW5fciwKKwljaExhdGluX2EsCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fcywKKwljaExhdGluX2YsCisJY2hMYXRpbl9vLAorCWNoTGF0aW5fciwKKwljaExhdGluX20sCisJY2hMYXRpbl9zLAorCWNoTnVsbAorfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCQkJQ29uc3RydWN0b3JzL0Rlc3RydWN0b3JzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYRU5DQ2lwaGVyUmVmZXJlbmNlSW1wbDo6WEVOQ0NpcGhlclJlZmVyZW5jZUltcGwoY29uc3QgWFNFQ0VudiAqIGVudikgOgorbXBfZW52KGVudiksCittcF9jaXBoZXJSZWZlcmVuY2VFbGVtZW50KE5VTEwpLAorbXBfdXJpQXR0cihOVUxMKSwKK21wX3RyYW5zZm9ybXNFbGVtZW50KE5VTEwpLAorbXBfdHJhbnNmb3JtTGlzdChOVUxMKSB7CisKK30KKworWEVOQ0NpcGhlclJlZmVyZW5jZUltcGw6OlhFTkNDaXBoZXJSZWZlcmVuY2VJbXBsKGNvbnN0IFhTRUNFbnYgKiBlbnYsIERPTUVsZW1lbnQgKiBub2RlKSA6CittcF9lbnYoZW52KSwKK21wX2NpcGhlclJlZmVyZW5jZUVsZW1lbnQobm9kZSksCittcF91cmlBdHRyKE5VTEwpLAorbXBfdHJhbnNmb3Jtc0VsZW1lbnQoTlVMTCksCittcF90cmFuc2Zvcm1MaXN0KE5VTEwpIHsKKworfQorCisKK1hFTkNDaXBoZXJSZWZlcmVuY2VJbXBsOjp+WEVOQ0NpcGhlclJlZmVyZW5jZUltcGwoKSB7CisKKwlpZiAobXBfdHJhbnNmb3JtTGlzdCAhPSBOVUxMKQorCQlkZWxldGUgbXBfdHJhbnNmb3JtTGlzdDsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENyZWF0aW9uIG9mIFRyYW5zZm9ybXMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgWEVOQ0NpcGhlclJlZmVyZW5jZUltcGw6OmNyZWF0ZVRyYW5zZm9ybUxpc3Qodm9pZCkgeworCisJLy8gQ3JlYXRlcyB0aGUgdHJhbnNmb3JtcyBsaXN0CisJc2FmZUJ1ZmZlciBzdHI7CisJY29uc3QgWE1MQ2ggKiBwcmVmaXg7CisJRE9NRG9jdW1lbnQgKmRvYyA9IG1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKTsKKworCXByZWZpeCA9IG1wX2Vudi0+Z2V0WEVOQ05TUHJlZml4KCk7CisJCisJaWYgKG1wX3RyYW5zZm9ybXNFbGVtZW50ID09IE5VTEwpIHsKKworCQkvLyBOZWVkIHRvIGNyZWF0ZSBhIHRyYW5zZm9ybXMgbm9kZQorCQltYWtlUU5hbWUoc3RyLCBwcmVmaXgsICJUcmFuc2Zvcm1zIik7CisJCW1wX3RyYW5zZm9ybXNFbGVtZW50ID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWEVOQywgc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCQltcF9lbnYtPmRvUHJldHR5UHJpbnQobXBfY2lwaGVyUmVmZXJlbmNlRWxlbWVudCk7CisJCW1wX2NpcGhlclJlZmVyZW5jZUVsZW1lbnQtPmFwcGVuZENoaWxkKG1wX3RyYW5zZm9ybXNFbGVtZW50KTsKKwkJbXBfZW52LT5kb1ByZXR0eVByaW50KG1wX3RyYW5zZm9ybXNFbGVtZW50KTsKKwkJbXBfZW52LT5kb1ByZXR0eVByaW50KG1wX2NpcGhlclJlZmVyZW5jZUVsZW1lbnQpOworCisJCS8vIENyZWF0ZSB0aGUgbGlzdAorCQlYU0VDbmV3KG1wX3RyYW5zZm9ybUxpc3QsIERTSUdUcmFuc2Zvcm1MaXN0KCkpOworCX0KKworfQorCit2b2lkIFhFTkNDaXBoZXJSZWZlcmVuY2VJbXBsOjphZGRUcmFuc2Zvcm0oRFNJR1RyYW5zZm9ybSAqIHR4Zm0sIERPTUVsZW1lbnQgKiB0eGZtRWx0KSB7CisKKwlpZiAobXBfdHJhbnNmb3JtTGlzdCA9PSBOVUxMKQorCQljcmVhdGVUcmFuc2Zvcm1MaXN0KCk7CisKKwltcF90cmFuc2Zvcm1zRWxlbWVudC0+YXBwZW5kQ2hpbGQodHhmbUVsdCk7CisJbXBfZW52LT5kb1ByZXR0eVByaW50KG1wX3RyYW5zZm9ybXNFbGVtZW50KTsKKworCW1wX3RyYW5zZm9ybUxpc3QtPmFkZFRyYW5zZm9ybSh0eGZtKTsKK30KKworCitEU0lHVHJhbnNmb3JtQmFzZTY0ICogWEVOQ0NpcGhlclJlZmVyZW5jZUltcGw6OmFwcGVuZEJhc2U2NFRyYW5zZm9ybSgpIHsKKworCURPTUVsZW1lbnQgKnR4Zm1FbHQ7CisJRFNJR1RyYW5zZm9ybUJhc2U2NCAqIHR4Zm07CisKKwlYU0VDbmV3KHR4Zm0sIERTSUdUcmFuc2Zvcm1CYXNlNjQobXBfZW52KSk7CisJdHhmbUVsdCA9IHR4Zm0tPmNyZWF0ZUJsYW5rVHJhbnNmb3JtKG1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKSk7CisKKwlhZGRUcmFuc2Zvcm0odHhmbSwgdHhmbUVsdCk7CisKKwlyZXR1cm4gdHhmbTsKKworfQorCitEU0lHVHJhbnNmb3JtWFNMICogWEVOQ0NpcGhlclJlZmVyZW5jZUltcGw6OmFwcGVuZFhTTFRyYW5zZm9ybShET01Ob2RlICogc3R5bGVzaGVldCkgeworCisJRE9NRWxlbWVudCAqdHhmbUVsdDsKKwlEU0lHVHJhbnNmb3JtWFNMICogdHhmbTsKKworCVhTRUNuZXcodHhmbSwgRFNJR1RyYW5zZm9ybVhTTChtcF9lbnYpKTsKKwl0eGZtRWx0ID0gdHhmbS0+Y3JlYXRlQmxhbmtUcmFuc2Zvcm0obXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpKTsKKwl0eGZtLT5zZXRTdHlsZXNoZWV0KHN0eWxlc2hlZXQpOworCisJYWRkVHJhbnNmb3JtKHR4Zm0sIHR4Zm1FbHQpOworCisJcmV0dXJuIHR4Zm07CisKK30KKworRFNJR1RyYW5zZm9ybUMxNG4gKiBYRU5DQ2lwaGVyUmVmZXJlbmNlSW1wbDo6YXBwZW5kQ2Fub25pY2FsaXphdGlvblRyYW5zZm9ybShjYW5vbmljYWxpemF0aW9uTWV0aG9kIGNtKSB7CisKKwlET01FbGVtZW50ICp0eGZtRWx0OworCURTSUdUcmFuc2Zvcm1DMTRuICogdHhmbTsKKworCVhTRUNuZXcodHhmbSwgRFNJR1RyYW5zZm9ybUMxNG4obXBfZW52KSk7CisJdHhmbUVsdCA9IHR4Zm0tPmNyZWF0ZUJsYW5rVHJhbnNmb3JtKG1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKSk7CisJdHhmbS0+c2V0Q2Fub25pY2FsaXphdGlvbk1ldGhvZChjbSk7CisKKwlhZGRUcmFuc2Zvcm0odHhmbSwgdHhmbUVsdCk7CisKKwlyZXR1cm4gdHhmbTsKKworfQkKKworRFNJR1RyYW5zZm9ybVhQYXRoICogWEVOQ0NpcGhlclJlZmVyZW5jZUltcGw6OmFwcGVuZFhQYXRoVHJhbnNmb3JtKGNvbnN0IGNoYXIgKiBleHByKSB7CisKKwlET01FbGVtZW50ICp0eGZtRWx0OworCURTSUdUcmFuc2Zvcm1YUGF0aCAqIHR4Zm07CisKKwlYU0VDbmV3KHR4Zm0sIERTSUdUcmFuc2Zvcm1YUGF0aChtcF9lbnYpKTsKKwl0eGZtRWx0ID0gdHhmbS0+Y3JlYXRlQmxhbmtUcmFuc2Zvcm0obXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpKTsKKwl0eGZtLT5zZXRFeHByZXNzaW9uKGV4cHIpOworCisJYWRkVHJhbnNmb3JtKHR4Zm0sIHR4Zm1FbHQpOworCisJcmV0dXJuIHR4Zm07Cit9CisKK0RTSUdUcmFuc2Zvcm1YUGF0aEZpbHRlciAqIFhFTkNDaXBoZXJSZWZlcmVuY2VJbXBsOjphcHBlbmRYUGF0aEZpbHRlclRyYW5zZm9ybSh2b2lkKSB7CisKKwlET01FbGVtZW50ICp0eGZtRWx0OworCURTSUdUcmFuc2Zvcm1YUGF0aEZpbHRlciAqIHR4Zm07CisKKwlYU0VDbmV3KHR4Zm0sIERTSUdUcmFuc2Zvcm1YUGF0aEZpbHRlcihtcF9lbnYpKTsKKwl0eGZtRWx0ID0gdHhmbS0+Y3JlYXRlQmxhbmtUcmFuc2Zvcm0obXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpKTsKKworCWFkZFRyYW5zZm9ybSh0eGZtLCB0eGZtRWx0KTsKKwltcF9lbnYtPmRvUHJldHR5UHJpbnQodHhmbUVsdCk7CisKKwlyZXR1cm4gdHhmbTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCQkJTG9hZAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBYRU5DQ2lwaGVyUmVmZXJlbmNlSW1wbDo6bG9hZCh2b2lkKSB7CisKKwlpZiAobXBfY2lwaGVyUmVmZXJlbmNlRWxlbWVudCA9PSBOVUxMKSB7CisKKwkJLy8gQXR0ZW1wdCB0byBsb2FkIGFuIGVtcHR5IGVuY3J5cHRlZFR5cGUgZWxlbWVudAorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkNpcGhlclJlZmVyZW5jZUVycm9yLAorCQkJIlhFTkNDaXBoZXJSZWZlcmVuY2U6OmxvYWQgLSBjYWxsZWQgb24gZW1wdHkgRE9NIik7CisKKwl9CisKKwlpZiAoIXN0ckVxdWFscyhnZXRYRU5DTG9jYWxOYW1lKG1wX2NpcGhlclJlZmVyZW5jZUVsZW1lbnQpLCBzX0NpcGhlclJlZmVyZW5jZSkpIHsKKwkKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDaXBoZXJSZWZlcmVuY2VFcnJvciwKKwkJCSJYRU5DQ2lwaGVyUmVmZXJlbmNlOjpsb2FkIC0gY2FsbGVkIGluY29ycmVjdCBub2RlIik7CisJCisJfQorCisJLy8gRmluZCB0aGUgVVJJIGF0dHJpYnV0ZQorCW1wX3VyaUF0dHIgPSBtcF9jaXBoZXJSZWZlcmVuY2VFbGVtZW50LT5nZXRBdHRyaWJ1dGVOb2RlTlMoTlVMTCwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJKTsKKworCWlmIChtcF91cmlBdHRyID09IE5VTEwpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkNpcGhlclJlZmVyZW5jZUVycm9yLAorCQkJIlhFTkNDaXBoZXJSZWZlcmVuY2U6OmxvYWQgLSBVUkkgYXR0cmlidXRlIG5vdCBmb3VuZCIpOworCQorCX0KKworCS8vIFNlZSBpZiB0aGVyZSBhcmUgYW55IHRyYW5zZm9ybXMKKwlET01FbGVtZW50ICogYyA9IGZpbmRGaXJzdEVsZW1lbnRDaGlsZChtcF9jaXBoZXJSZWZlcmVuY2VFbGVtZW50KTsKKwlpZiAoYyAhPSBOVUxMKSB7CisKKwkJaWYgKCFzdHJFcXVhbHMoZ2V0WEVOQ0xvY2FsTmFtZShjKSwgc19UcmFuc2Zvcm1zKSkgeworCisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkNpcGhlclJlZmVyZW5jZUVycm9yLAorCQkJCSJYRU5DQ2lwaGVyUmVmZXJlbmNlOjpsb2FkIC0gRXhwZWN0ZWQgVHJhbnNmb3JtcywgZm91bmQgc29tZXRoaW5nIGVsc2UiKTsKKworCQl9CisKKwkJbXBfdHJhbnNmb3Jtc0VsZW1lbnQgPSBjOworCisJCVhTRUNTYWZlQnVmZmVyRm9ybWF0dGVyICogZm9ybWF0dGVyOworCQlYU0VDbmV3KGZvcm1hdHRlciwgWFNFQ1NhZmVCdWZmZXJGb3JtYXR0ZXIoIlVURi04IixYTUxGb3JtYXR0ZXI6Ok5vRXNjYXBlcywgCisJCQkJCQkJCQkJCQlYTUxGb3JtYXR0ZXI6OlVuUmVwX0NoYXJSZWYpKTsKKwkJSmFuaXRvcjxYU0VDU2FmZUJ1ZmZlckZvcm1hdHRlcj4gal9mb3JtYXR0ZXIoZm9ybWF0dGVyKTsKKworCQltcF90cmFuc2Zvcm1MaXN0ID0gRFNJR1JlZmVyZW5jZTo6bG9hZFRyYW5zZm9ybXMoYywgZm9ybWF0dGVyLCBtcF9lbnYpOworCisJfQorCisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCQkJQ3JlYXRlIGEgYmxhbmsgc3RydWN0dXJlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitET01FbGVtZW50ICogWEVOQ0NpcGhlclJlZmVyZW5jZUltcGw6OmNyZWF0ZUJsYW5rQ2lwaGVyUmVmZXJlbmNlKAorCQkJCQkJY29uc3QgWE1MQ2ggKiBVUkkpIHsKKworCS8vIENsZWFuIHVwCisJaWYgKG1wX3RyYW5zZm9ybUxpc3QgIT0gTlVMTCkgeworCQlkZWxldGUgbXBfdHJhbnNmb3JtTGlzdDsKKwkJbXBfdHJhbnNmb3JtTGlzdCA9IE5VTEw7CisJfQorCisJbXBfdXJpQXR0ciA9IE5VTEw7CisKKwkvLyBHZXQgc29tZSBzZXR1cCB2YWx1ZXMKKwlzYWZlQnVmZmVyIHN0cjsKKwlET01Eb2N1bWVudCAqZG9jID0gbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpOworCWNvbnN0IFhNTENoICogcHJlZml4ID0gbXBfZW52LT5nZXRYRU5DTlNQcmVmaXgoKTsKKworCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgc19DaXBoZXJSZWZlcmVuY2UpOworCisJbXBfY2lwaGVyUmVmZXJlbmNlRWxlbWVudCA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhFTkMsIHN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKworCS8vIFNldCB0aGUgVVJJIEF0dHJpYnV0ZQorCW1wX2NpcGhlclJlZmVyZW5jZUVsZW1lbnQtPnNldEF0dHJpYnV0ZU5TKE5VTEwsIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSSwgVVJJKTsKKworCS8vIEZpbmQgdGhlIFVSSQorCW1wX3VyaUF0dHIgPSBtcF9jaXBoZXJSZWZlcmVuY2VFbGVtZW50LT5nZXRBdHRyaWJ1dGVOb2RlTlMoTlVMTCwgRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJKTsKKworCWlmIChtcF91cmlBdHRyID09IE5VTEwpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkNpcGhlclJlZmVyZW5jZUVycm9yLAorCQkJIlhFTkNDaXBoZXJSZWZlcmVuY2U6OmNyZWF0ZUJsYW5rUmVmZXJlbmNlIC0gVVJJIGF0dHJpYnV0ZSBub3QgZm91bmQgYWZ0ZXIgY3JlYXRpb24iKTsKKwkKKwl9CisKKwlyZXR1cm4gbXBfY2lwaGVyUmVmZXJlbmNlRWxlbWVudDsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlHZXQgSW50ZXJmYWNlIG1ldGhvZHMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RTSUdUcmFuc2Zvcm1MaXN0ICogWEVOQ0NpcGhlclJlZmVyZW5jZUltcGw6OmdldFRyYW5zZm9ybXModm9pZCkgY29uc3QgeworCisJcmV0dXJuIG1wX3RyYW5zZm9ybUxpc3Q7CisKK30KKworY29uc3QgWE1MQ2ggKiBYRU5DQ2lwaGVyUmVmZXJlbmNlSW1wbDo6Z2V0VVJJICh2b2lkKSBjb25zdCB7CisKKwlpZiAobXBfdXJpQXR0ciAhPSBOVUxMKQorCQlyZXR1cm4gbXBfdXJpQXR0ci0+Z2V0Tm9kZVZhbHVlKCk7CisKKwlyZXR1cm4gTlVMTDsKKworfQorCitET01FbGVtZW50ICogWEVOQ0NpcGhlclJlZmVyZW5jZUltcGw6OmdldEVsZW1lbnQodm9pZCkgY29uc3QgeworCisJcmV0dXJuIG1wX2NpcGhlclJlZmVyZW5jZUVsZW1lbnQ7CisKK30KZGlmZiAtLWdpdCBhL2Mvc3JjL3hlbmMvaW1wbC9YRU5DQ2lwaGVyUmVmZXJlbmNlSW1wbC5ocHAgYi9jL3NyYy94ZW5jL2ltcGwvWEVOQ0NpcGhlclJlZmVyZW5jZUltcGwuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxMDkwNTEKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94ZW5jL2ltcGwvWEVOQ0NpcGhlclJlZmVyZW5jZUltcGwuaHBwCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMy0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhFTkNDaXBoZXJSZWZlcmVuY2UgOj0gSW1wbGVtZW50YXRpb24gZm9yIENpcGhlclJlZmVyZW5jZSBlbGVtZW50CisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhFTkNDSVBIRVJSRUZFUkVOQ0VJTVBMX0lOQ0xVREUKKyNkZWZpbmUgWEVOQ0NJUEhFUlJFRkVSRU5DRUlNUExfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy94ZW5jL1hFTkNDaXBoZXJSZWZlcmVuY2UuaHBwPgorCitYU0VDX0RFQ0xBUkVfWEVSQ0VTX0NMQVNTKERPTU5vZGUpOworCitjbGFzcyBEU0lHVHJhbnNmb3JtTGlzdDsKK2NsYXNzIFhTRUNFbnY7CitjbGFzcyBEU0lHVHJhbnNmb3JtOworCitjbGFzcyBYRU5DQ2lwaGVyUmVmZXJlbmNlSW1wbCA6IHB1YmxpYyBYRU5DQ2lwaGVyUmVmZXJlbmNlIHsKKworcHVibGljOiAKKworCVhFTkNDaXBoZXJSZWZlcmVuY2VJbXBsKGNvbnN0IFhTRUNFbnYgKiBlbnYpOworCVhFTkNDaXBoZXJSZWZlcmVuY2VJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52LCAKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBub2RlCisJKTsKKworCXZpcnR1YWwgflhFTkNDaXBoZXJSZWZlcmVuY2VJbXBsKCk7CisKKwkvLyBMb2FkCisJdm9pZCBsb2FkKHZvaWQpOworCS8vIENyZWF0ZQorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogCisJCWNyZWF0ZUJsYW5rQ2lwaGVyUmVmZXJlbmNlKGNvbnN0IFhNTENoICogVVJJKTsKKworCS8vIEdldCBtZXRob2RzCisJdmlydHVhbCBEU0lHVHJhbnNmb3JtTGlzdCAqIGdldFRyYW5zZm9ybXModm9pZCkgY29uc3Q7CisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldFVSSSAodm9pZCkgY29uc3Q7CisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGdldEVsZW1lbnQodm9pZCkgY29uc3Q7CisKKwkvLyBTZXQgbWV0aG9kcworCXZpcnR1YWwgRFNJR1RyYW5zZm9ybUJhc2U2NCAqIGFwcGVuZEJhc2U2NFRyYW5zZm9ybSgpOworCXZpcnR1YWwgRFNJR1RyYW5zZm9ybVhQYXRoICogYXBwZW5kWFBhdGhUcmFuc2Zvcm0oY29uc3QgY2hhciAqIGV4cHIpOworCXZpcnR1YWwgRFNJR1RyYW5zZm9ybVhQYXRoRmlsdGVyICogYXBwZW5kWFBhdGhGaWx0ZXJUcmFuc2Zvcm0odm9pZCk7CisJdmlydHVhbCBEU0lHVHJhbnNmb3JtWFNMICogYXBwZW5kWFNMVHJhbnNmb3JtKFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlICpzdHlsZXNoZWV0KTsKKwl2aXJ0dWFsIERTSUdUcmFuc2Zvcm1DMTRuICogYXBwZW5kQ2Fub25pY2FsaXphdGlvblRyYW5zZm9ybShjYW5vbmljYWxpemF0aW9uTWV0aG9kIGNtKTsKKworCitwcml2YXRlOgorCisJLy8gVW5pbXBsZW1lbnRlZAorCVhFTkNDaXBoZXJSZWZlcmVuY2VJbXBsKGNvbnN0IFhFTkNDaXBoZXJSZWZlcmVuY2UgJik7CisJWEVOQ0NpcGhlclJlZmVyZW5jZUltcGwgJiBvcGVyYXRvciA9IChjb25zdCBYRU5DQ2lwaGVyUmVmZXJlbmNlICYpOworCisJLy8gUHJpdmF0ZSBmdW5jdGlvbnMKKwl2b2lkIGNyZWF0ZVRyYW5zZm9ybUxpc3Qodm9pZCk7CisJdm9pZCBhZGRUcmFuc2Zvcm0oRFNJR1RyYW5zZm9ybSAqIHR4Zm0sIAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIHR4Zm1FbHQpOworCisKKwljb25zdCBYU0VDRW52CQkJKiBtcF9lbnY7CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQJCQkJCQorCQkJCQkJCSogbXBfY2lwaGVyUmVmZXJlbmNlRWxlbWVudDsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZQorCQkJCQkJCSogbXBfdXJpQXR0cjsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudAorCQkJCQkJCSogbXBfdHJhbnNmb3Jtc0VsZW1lbnQ7CisKKwlEU0lHVHJhbnNmb3JtTGlzdAkJKiBtcF90cmFuc2Zvcm1MaXN0OworCisKK307CisKKyNlbmRpZiAvKiBYRU5DQ0lQSEVSUkVGRVJFTkNFX0lOQ0xVREUgKi8KKwpkaWZmIC0tZ2l0IGEvYy9zcmMveGVuYy9pbXBsL1hFTkNDaXBoZXJWYWx1ZUltcGwuY3BwIGIvYy9zcmMveGVuYy9pbXBsL1hFTkNDaXBoZXJWYWx1ZUltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlZmQ3NDgKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94ZW5jL2ltcGwvWEVOQ0NpcGhlclZhbHVlSW1wbC5jcHAKQEAgLTAsMCArMSwxODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMy0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhFTkNDaXBoZXJWYWx1ZUltcGwgOj0gSW1wbGVtZW50YXRpb24gZm9yIENpcGhlclZhbHVlIGVsZW1lbnRzCisgKgorICogJElkJAorICoKKyAqLworCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisKKyNpbmNsdWRlICJYRU5DQ2lwaGVyVmFsdWVJbXBsLmhwcCIKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDRE9NVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPgorCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFVuaURlZnMuaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCQkJU3RyaW5nIENvbnN0YW50cworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljIFhNTENoIHNfQ2lwaGVyVmFsdWVbXSA9IHsKKworCWNoTGF0aW5fQywKKwljaExhdGluX2ksCisJY2hMYXRpbl9wLAorCWNoTGF0aW5faCwKKwljaExhdGluX2UsCisJY2hMYXRpbl9yLAorCWNoTGF0aW5fViwKKwljaExhdGluX2EsCisJY2hMYXRpbl9sLAorCWNoTGF0aW5fdSwKKwljaExhdGluX2UsCisJY2hOdWxsLAorfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCQkJQ29uc3RydWN0b3JzL0Rlc3RydWN0b3JzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYRU5DQ2lwaGVyVmFsdWVJbXBsOjpYRU5DQ2lwaGVyVmFsdWVJbXBsKGNvbnN0IFhTRUNFbnYgKiBlbnYpIDoKK21wX2VudihlbnYpLAorbXBfY2lwaGVyVmFsdWVFbGVtZW50KE5VTEwpLAorbXBfY2lwaGVyU3RyaW5nKE5VTEwpIHsKKworfQorCitYRU5DQ2lwaGVyVmFsdWVJbXBsOjpYRU5DQ2lwaGVyVmFsdWVJbXBsKGNvbnN0IFhTRUNFbnYgKiBlbnYsIERPTUVsZW1lbnQgKiBub2RlKSA6CittcF9lbnYoZW52KSwKK21wX2NpcGhlclZhbHVlRWxlbWVudChub2RlKSwKK21wX2NpcGhlclN0cmluZyhOVUxMKSB7CisKK30KKworCitYRU5DQ2lwaGVyVmFsdWVJbXBsOjp+WEVOQ0NpcGhlclZhbHVlSW1wbCgpIHsKKworCWlmIChtcF9jaXBoZXJTdHJpbmcgIT0gTlVMTCkKKwkJWFNFQ19SRUxFQVNFX1hNTENIKG1wX2NpcGhlclN0cmluZyk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCQkJTG9hZAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBYRU5DQ2lwaGVyVmFsdWVJbXBsOjpsb2FkKHZvaWQpIHsKKworCWlmIChtcF9jaXBoZXJWYWx1ZUVsZW1lbnQgPT0gTlVMTCkgeworCisJCS8vIEF0dGVtcHQgdG8gbG9hZCBhbiBlbXB0eSBlbmNyeXB0ZWRUeXBlIGVsZW1lbnQKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDaXBoZXJWYWx1ZUVycm9yLAorCQkJIlhFTkNDaXBoZXJEYXRhOjpsb2FkIC0gY2FsbGVkIG9uIGVtcHR5IERPTSIpOworCisJfQorCisJaWYgKCFzdHJFcXVhbHMoZ2V0WEVOQ0xvY2FsTmFtZShtcF9jaXBoZXJWYWx1ZUVsZW1lbnQpLCBzX0NpcGhlclZhbHVlKSkgeworCQorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkNpcGhlclZhbHVlRXJyb3IsCisJCQkiWEVOQ0NpcGhlckRhdGE6OmxvYWQgLSBjYWxsZWQgaW5jb3JyZWN0IG5vZGUiKTsKKwkKKwl9CisKKwkvLyBKdXN0IGdhdGhlciB0aGUgdGV4dCBjaGlsZHJlbiBhbmQgY29udGludWUKKwlzYWZlQnVmZmVyIHR4dDsKKworCWdhdGhlckNoaWxkcmVuVGV4dChtcF9jaXBoZXJWYWx1ZUVsZW1lbnQsIHR4dCk7CisKKwkvLyBHZXQgYSBjb3B5CisJbXBfY2lwaGVyU3RyaW5nID0gWE1MU3RyaW5nOjpyZXBsaWNhdGUodHh0LnJhd1hNTENoQnVmZmVyKCkpOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCUNyZWF0ZSBhIGJsYW5rIHN0cnVjdHVyZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRE9NRWxlbWVudCAqIFhFTkNDaXBoZXJWYWx1ZUltcGw6OmNyZWF0ZUJsYW5rQ2lwaGVyVmFsdWUoCisJCQkJCQljb25zdCBYTUxDaCAqIHZhbHVlKSB7CisKKwkvLyBSZXN0CisJaWYgKG1wX2NpcGhlclN0cmluZyAhPSBOVUxMKSB7CisJCVhTRUNfUkVMRUFTRV9YTUxDSChtcF9jaXBoZXJTdHJpbmcpOworCQltcF9jaXBoZXJTdHJpbmcgPSBOVUxMOworCX0KKworCS8vIEdldCBzb21lIHNldHVwIHZhbHVlcworCXNhZmVCdWZmZXIgc3RyOworCURPTURvY3VtZW50ICpkb2MgPSBtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCk7CisJY29uc3QgWE1MQ2ggKiBwcmVmaXggPSBtcF9lbnYtPmdldFhFTkNOU1ByZWZpeCgpOworCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCBzX0NpcGhlclZhbHVlKTsKKworCURPTUVsZW1lbnQgKnJldCA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhFTkMsIHN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKwltcF9jaXBoZXJWYWx1ZUVsZW1lbnQgPSByZXQ7CisKKwkvLyBBcHBlbmQgdGhlIHZhbHVlCisJcmV0LT5hcHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKHZhbHVlKSk7CisJCisJbXBfY2lwaGVyU3RyaW5nID0gWE1MU3RyaW5nOjpyZXBsaWNhdGUodmFsdWUpOzsKKworCXJldHVybiByZXQ7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCQkJSW50ZXJmYWNlIE1ldGhvZHMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NvbnN0IFhNTENoICogWEVOQ0NpcGhlclZhbHVlSW1wbDo6Z2V0Q2lwaGVyU3RyaW5nKHZvaWQpIGNvbnN0IHsKKworCXJldHVybiBtcF9jaXBoZXJTdHJpbmc7CisKK30KKwordm9pZCBYRU5DQ2lwaGVyVmFsdWVJbXBsOjpzZXRDaXBoZXJTdHJpbmcoY29uc3QgWE1MQ2ggKiB2YWx1ZSkgeworCisJaWYgKG1wX2NpcGhlclZhbHVlRWxlbWVudCA9PSBOVUxMKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpDaXBoZXJWYWx1ZUVycm9yLAorCQkJIlhFTkNDaXBoZXJEYXRhOjpzZXRDaXBoZXJTdHJpbmcgLSBjYWxsZWQgb24gZW1wdHkgRE9NIik7CisKKwl9CisKKwkvLyBGaW5kIGZpcnN0IHRleHQgY2hpbGQKKwlET01Ob2RlICogdHh0ID0gZmluZEZpcnN0Q2hpbGRPZlR5cGUobXBfY2lwaGVyVmFsdWVFbGVtZW50LCBET01Ob2RlOjpURVhUX05PREUpOworCQorCWlmICh0eHQgPT0gTlVMTCkgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkNpcGhlclZhbHVlRXJyb3IsCisJCQkiWEVOQ0NpcGhlckRhdGE6OnNldENpcGhlclN0cmluZyAtIEVycm9yIGZpbmRpbmcgdGV4dCBub2RlIik7CisJfQorCisJdHh0LT5zZXROb2RlVmFsdWUodmFsdWUpOworCisJaWYgKG1wX2NpcGhlclN0cmluZyAhPSBOVUxMKQorCQlYU0VDX1JFTEVBU0VfWE1MQ0gobXBfY2lwaGVyU3RyaW5nKTsKKworCW1wX2NpcGhlclN0cmluZyA9IFhNTFN0cmluZzo6cmVwbGljYXRlKHZhbHVlKTsKKworfQpkaWZmIC0tZ2l0IGEvYy9zcmMveGVuYy9pbXBsL1hFTkNDaXBoZXJWYWx1ZUltcGwuaHBwIGIvYy9zcmMveGVuYy9pbXBsL1hFTkNDaXBoZXJWYWx1ZUltcGwuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlNzZjZTMKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94ZW5jL2ltcGwvWEVOQ0NpcGhlclZhbHVlSW1wbC5ocHAKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAzLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEVOQ0NpcGhlclZhbHVlSW1wbCA6PSBJbXBsZW1lbnRhdGlvbiBmb3IgQ2lwaGVyVmFsdWUgZWxlbWVudHMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEVOQ0NJUEhFUlZBTFVFSU1QTF9JTkNMVURFCisjZGVmaW5lIFhFTkNDSVBIRVJWQUxVRUlNUExfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisKKyNpbmNsdWRlIDx4c2VjL3hlbmMvWEVOQ0NpcGhlclZhbHVlLmhwcD4KKworI2luY2x1ZGUgIlhFTkNDaXBoZXJJbXBsLmhwcCIKKworWFNFQ19ERUNMQVJFX1hFUkNFU19DTEFTUyhET01Ob2RlKTsKKworY2xhc3MgWFNFQ0VudjsKKworY2xhc3MgWEVOQ0NpcGhlclZhbHVlSW1wbCA6IHB1YmxpYyBYRU5DQ2lwaGVyVmFsdWUgeworCitwdWJsaWM6CisKKwlYRU5DQ2lwaGVyVmFsdWVJbXBsKGNvbnN0IFhTRUNFbnYgKiBlbnYpOworCVhFTkNDaXBoZXJWYWx1ZUltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYsIAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIG5vZGUKKwkpOworCisJdmlydHVhbCB+WEVOQ0NpcGhlclZhbHVlSW1wbCgpOworCisJLy8gTG9hZAorCXZvaWQgbG9hZCh2b2lkKTsKKwkvLyBDcmVhdGUKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIAorCQljcmVhdGVCbGFua0NpcGhlclZhbHVlKGNvbnN0IFhNTENoICogdmFsdWUpOworCisJLy8gSW50ZXJmYWNlIG1ldGhvZHMKKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRDaXBoZXJTdHJpbmcodm9pZCkgY29uc3Q7CisJdmlydHVhbCB2b2lkIHNldENpcGhlclN0cmluZyhjb25zdCBYTUxDaCAqIHZhbHVlKTsKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogZ2V0RWxlbWVudCh2b2lkKSBjb25zdAorCQl7cmV0dXJuIG1wX2NpcGhlclZhbHVlRWxlbWVudDt9CisKK3ByaXZhdGU6CisKKwkvLyBVbmltcGxlbWVudGVkIGNvbnN0cnVjdG9ycworCVhFTkNDaXBoZXJWYWx1ZUltcGwoY29uc3QgWEVOQ0NpcGhlclZhbHVlSW1wbCAmKTsKKwlYRU5DQ2lwaGVyVmFsdWVJbXBsICYgb3BlcmF0b3IgPSAoY29uc3QgWEVOQ0NpcGhlclZhbHVlSW1wbCAmKTsKKworCWNvbnN0IFhTRUNFbnYJCQkqIG1wX2VudjsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudAkJCQkJCisJCQkJCQkJKiBtcF9jaXBoZXJWYWx1ZUVsZW1lbnQ7CisJCisJLy8gVGhpcyBpcyBoZWxkIGFzIGEgc3RyaW5nLCBub3QgYSBub2RlIGFzIHdlIG1pZ2h0IGhhdmUgbXVsdGlwbGUgdGV4dAorCS8vIG5vZGVzIG1ha2luZyB1cCB0aGUgc3RyaW5nCisKKwlYTUxDaCAJCQkJCSogbXBfY2lwaGVyU3RyaW5nOworfTsKKworI2VuZGlmIC8qIFhFTkNDSVBIRVJWQUxVRUlNUExfSU5DTFVERSAqLworCmRpZmYgLS1naXQgYS9jL3NyYy94ZW5jL2ltcGwvWEVOQ0VuY3J5cHRlZERhdGFJbXBsLmNwcCBiL2Mvc3JjL3hlbmMvaW1wbC9YRU5DRW5jcnlwdGVkRGF0YUltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhNTJlNzYKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94ZW5jL2ltcGwvWEVOQ0VuY3J5cHRlZERhdGFJbXBsLmNwcApAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAzLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEVOQ0VuY3J5cHRlZERhdGFJbXBsIDo9IEltcGxlbWVudGF0aW9uIGZvciBob2xkZXIgb2JqZWN0IGZvciBFbmNyeXB0ZWREYXRhIAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKworI2luY2x1ZGUgIlhFTkNDaXBoZXJJbXBsLmhwcCIKKyNpbmNsdWRlICJYRU5DRW5jcnlwdGVkRGF0YUltcGwuaHBwIgorI2luY2x1ZGUgIlhFTkNDaXBoZXJEYXRhSW1wbC5ocHAiCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4KKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxVbmlEZWZzLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCVVOSUNPREUgU3RyaW5ncworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljIFhNTENoIHNfRW5jcnlwdGVkRGF0YVtdID0geworCisJY2hMYXRpbl9FLAorCWNoTGF0aW5fbiwKKwljaExhdGluX2MsCisJY2hMYXRpbl9yLAorCWNoTGF0aW5feSwKKwljaExhdGluX3AsCisJY2hMYXRpbl90LAorCWNoTGF0aW5fZSwKKwljaExhdGluX2QsCisJY2hMYXRpbl9ELAorCWNoTGF0aW5fYSwKKwljaExhdGluX3QsCisJY2hMYXRpbl9hLAorCWNoTnVsbCwKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCUNvbnN0cnVjdC9EZXN0cnVjdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitYRU5DRW5jcnlwdGVkRGF0YUltcGw6OlhFTkNFbmNyeXB0ZWREYXRhSW1wbChjb25zdCBYU0VDRW52ICogZW52KSA6CitYRU5DRW5jcnlwdGVkVHlwZUltcGwoZW52KSB7CisJCit9CisKK1hFTkNFbmNyeXB0ZWREYXRhSW1wbDo6WEVOQ0VuY3J5cHRlZERhdGFJbXBsKGNvbnN0IFhTRUNFbnYgKiBlbnYsIERPTUVsZW1lbnQgKiBub2RlKSA6CitYRU5DRW5jcnlwdGVkVHlwZUltcGwoZW52LCBub2RlKSB7CisKK30KKworWEVOQ0VuY3J5cHRlZERhdGFJbXBsOjp+WEVOQ0VuY3J5cHRlZERhdGFJbXBsKCkgeworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCUxvYWQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgWEVOQ0VuY3J5cHRlZERhdGFJbXBsOjpsb2FkKHZvaWQpIHsKKworCWlmIChtcF9lbmNyeXB0ZWRUeXBlRWxlbWVudCA9PSBOVUxMKSB7CisKKwkJLy8gQXR0ZW1wdCB0byBsb2FkIGFuIGVtcHR5IGVuY3J5cHRlZERhdGEgZWxlbWVudAorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkVuY3J5cHRlZFR5cGVFcnJvciwKKwkJCSJYRU5DRW5jcnlwdGVkRGF0YTo6bG9hZCAtIGNhbGxlZCBvbiBlbXB0eSBET00iKTsKKworCX0KKworCWlmICghc3RyRXF1YWxzKGdldFhFTkNMb2NhbE5hbWUobXBfZW5jcnlwdGVkVHlwZUVsZW1lbnQpLCBzX0VuY3J5cHRlZERhdGEpKSB7CisKKwkJLy8gQXR0ZW1wdCB0byBsb2FkIGFuIGVtcHR5IGVuY3J5cHRlZERhdGEgZWxlbWVudAorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkVuY3J5cHRlZFR5cGVFcnJvciwKKwkJCSJYRU5DRW5jcnlwdGVkRGF0YTo6bG9hZCAtIGNhbGxlZCBvbiBub24gRW5jcnlwdGVkRGF0YSBub2RlIik7CisKKwl9CisKKwkvLyBOb3cgY2FsbCB0aGUgdmlydHVhbCBmdW5jdGlvbiB3ZSBvdmVybG9hZGVkIHRvIGdldCBoZXJlLgorCVhFTkNFbmNyeXB0ZWRUeXBlSW1wbDo6bG9hZCgpOworCit9CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlDcmVhdGUgZnJvbSBzY3JhdGNoCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitET01FbGVtZW50ICogWEVOQ0VuY3J5cHRlZERhdGFJbXBsOjpjcmVhdGVCbGFua0VuY3J5cHRlZERhdGEoCisJCQkJCQkJCQlYRU5DQ2lwaGVyRGF0YTo6WEVOQ0NpcGhlckRhdGFUeXBlIHR5cGUsIAorCQkJCQkJCQkJY29uc3QgWE1MQ2ggKiBhbGdvcml0aG0sCisJCQkJCQkJCQljb25zdCBYTUxDaCAqIHZhbHVlKSB7CisKKwlyZXR1cm4gY3JlYXRlQmxhbmtFbmNyeXB0ZWRUeXBlKHNfRW5jcnlwdGVkRGF0YSwgdHlwZSwgYWxnb3JpdGhtLCB2YWx1ZSk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCQkJSW50ZXJmYWNlIE1ldGhvZHMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwpkaWZmIC0tZ2l0IGEvYy9zcmMveGVuYy9pbXBsL1hFTkNFbmNyeXB0ZWREYXRhSW1wbC5ocHAgYi9jL3NyYy94ZW5jL2ltcGwvWEVOQ0VuY3J5cHRlZERhdGFJbXBsLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWVhZGU1Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGVuYy9pbXBsL1hFTkNFbmNyeXB0ZWREYXRhSW1wbC5ocHAKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMy0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhFTkNFbmNyeXB0ZWREYXRhSW1wbCA6PSBJbXBsZW1lbnRhdGlvbiBmb3IgaG9sZGVyIG9iamVjdCBmb3IgRW5jcnlwdGVkRGF0YSAKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEVOQ0VOQ1JZUFRFRERBVEFJTVBMX0lOQ0xVREUKKyNkZWZpbmUgWEVOQ0VOQ1JZUFRFRERBVEFJTVBMX0lOQ0xVREUKKworLy8gWFNFQyBJbmNsdWRlcworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMveGVuYy9YRU5DRW5jcnlwdGVkRGF0YS5ocHA+CisKKyNpbmNsdWRlICJYRU5DQ2lwaGVySW1wbC5ocHAiCisjaW5jbHVkZSAiWEVOQ0VuY3J5cHRlZFR5cGVJbXBsLmhwcCIKKworWFNFQ19ERUNMQVJFX1hFUkNFU19DTEFTUyhET01Ob2RlKTsKKworY2xhc3MgWEVOQ0VuY3J5cHRlZERhdGFJbXBsIDogcHVibGljIFhFTkNFbmNyeXB0ZWREYXRhLCBwdWJsaWMgWEVOQ0VuY3J5cHRlZFR5cGVJbXBsIHsKKworcHVibGljOgorCisJWEVOQ0VuY3J5cHRlZERhdGFJbXBsKGNvbnN0IFhTRUNFbnYgKiBlbnYpOworCVhFTkNFbmNyeXB0ZWREYXRhSW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudiwgCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogbm9kZQorCSk7CisJdmlydHVhbCB+WEVOQ0VuY3J5cHRlZERhdGFJbXBsKCk7CisKKwl2b2lkIGxvYWQodm9pZCk7CisKKwkvLyBDcmVhdGUgYSBibGFuayBFbmNyeXB0ZWREYXRhIERPTSBzdHJ1Y3R1cmUKKworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogCisJCWNyZWF0ZUJsYW5rRW5jcnlwdGVkRGF0YShYRU5DQ2lwaGVyRGF0YTo6WEVOQ0NpcGhlckRhdGFUeXBlIHR5cGUsIAorCQkJCQkJCQkgY29uc3QgWE1MQ2ggKiBhbGdvcml0aG0sCisJCQkJCQkJCSBjb25zdCBYTUxDaCAqIHZhbHVlKTsKKworCS8vIEludGVyZmFjZSBtZXRob2RzCisKKwkvLyBJbmhlcml0ZWQgZnJvbSBYRU5DRW5jcnlwdGVkRGF0YSAtIG5lZWQgdG8gcmUtaW1wbGVtZW50CisJdmlydHVhbCBYRU5DQ2lwaGVyRGF0YSAqIGdldENpcGhlckRhdGEodm9pZCkgY29uc3QKKwkJe3JldHVybiBYRU5DRW5jcnlwdGVkVHlwZUltcGw6OmdldENpcGhlckRhdGEoKTt9CisJdmlydHVhbCBEU0lHS2V5SW5mb0xpc3QgKiBnZXRLZXlJbmZvTGlzdCh2b2lkKQorCQl7cmV0dXJuIFhFTkNFbmNyeXB0ZWRUeXBlSW1wbDo6Z2V0S2V5SW5mb0xpc3QoKTt9CisJdmlydHVhbCBYRU5DRW5jcnlwdGlvbk1ldGhvZCAqIGdldEVuY3J5cHRpb25NZXRob2Qodm9pZCkgY29uc3QKKwkJe3JldHVybiBYRU5DRW5jcnlwdGVkVHlwZUltcGw6OmdldEVuY3J5cHRpb25NZXRob2QoKTt9CisJdmlydHVhbCB2b2lkIGNsZWFyS2V5SW5mbyh2b2lkKQorCQl7WEVOQ0VuY3J5cHRlZFR5cGVJbXBsOjpjbGVhcktleUluZm8oKTt9CisJdmlydHVhbCBEU0lHS2V5SW5mb1ZhbHVlICogYXBwZW5kRFNBS2V5VmFsdWUoY29uc3QgWE1MQ2ggKiBQLCAKKwkJCQkJCSAgIGNvbnN0IFhNTENoICogUSwgCisJCQkJCQkgICBjb25zdCBYTUxDaCAqIEcsIAorCQkJCQkJICAgY29uc3QgWE1MQ2ggKiBZKQorCSAgICB7cmV0dXJuIFhFTkNFbmNyeXB0ZWRUeXBlSW1wbDo6YXBwZW5kRFNBS2V5VmFsdWUoUCwgUSwgRywgWSk7fQorCXZpcnR1YWwgRFNJR0tleUluZm9WYWx1ZSAqIGFwcGVuZFJTQUtleVZhbHVlKGNvbnN0IFhNTENoICogbW9kdWx1cywgCisJCQkJCQkgICBjb25zdCBYTUxDaCAqIGV4cG9uZW50KQorCSAgICB7cmV0dXJuIFhFTkNFbmNyeXB0ZWRUeXBlSW1wbDo6YXBwZW5kUlNBS2V5VmFsdWUobW9kdWx1cywgZXhwb25lbnQpO30KKwl2aXJ0dWFsIERTSUdLZXlJbmZvWDUwOSAqIGFwcGVuZFg1MDlEYXRhKHZvaWQpCisJICAgIHtyZXR1cm4gWEVOQ0VuY3J5cHRlZFR5cGVJbXBsOjphcHBlbmRYNTA5RGF0YSgpO30KKwl2aXJ0dWFsIERTSUdLZXlJbmZvTmFtZSAqIGFwcGVuZEtleU5hbWUoY29uc3QgWE1MQ2ggKiBuYW1lLCBib29sIGlzRE5hbWUgPSBmYWxzZSkKKwkJe3JldHVybiBYRU5DRW5jcnlwdGVkVHlwZUltcGw6OmFwcGVuZEtleU5hbWUobmFtZSwgaXNETmFtZSk7fQorCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBnZXRFbGVtZW50KHZvaWQpIGNvbnN0CisJCXtyZXR1cm4gWEVOQ0VuY3J5cHRlZFR5cGVJbXBsOjpnZXRFbGVtZW50KCk7fQorCXZpcnR1YWwgdm9pZCBhcHBlbmRFbmNyeXB0ZWRLZXkoWEVOQ0VuY3J5cHRlZEtleSAqIGVuY3J5cHRlZEtleSkKKwkJe1hFTkNFbmNyeXB0ZWRUeXBlSW1wbDo6YXBwZW5kRW5jcnlwdGVkS2V5KGVuY3J5cHRlZEtleSk7fQorCisJLy8gR2V0IG1ldGhvZHMKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0VHlwZSh2b2lkKSBjb25zdAorCQl7cmV0dXJuIFhFTkNFbmNyeXB0ZWRUeXBlSW1wbDo6Z2V0VHlwZSgpO30KKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0TWltZVR5cGUodm9pZCkgY29uc3QKKwkJe3JldHVybiBYRU5DRW5jcnlwdGVkVHlwZUltcGw6OmdldE1pbWVUeXBlKCk7fQorCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRFbmNvZGluZyh2b2lkKSBjb25zdAorCQl7cmV0dXJuIFhFTkNFbmNyeXB0ZWRUeXBlSW1wbDo6Z2V0RW5jb2RpbmcoKTt9CisKKwkvLyBTZXQgbWV0aG9kcworCXZpcnR1YWwgdm9pZCBzZXRUeXBlKGNvbnN0IFhNTENoICogdXJpKQorCQl7WEVOQ0VuY3J5cHRlZFR5cGVJbXBsOjpzZXRUeXBlKHVyaSk7fQorCXZpcnR1YWwgdm9pZCBzZXRNaW1lVHlwZShjb25zdCBYTUxDaCAqIG1pbWVUeXBlKQorCQl7WEVOQ0VuY3J5cHRlZFR5cGVJbXBsOjpzZXRNaW1lVHlwZShtaW1lVHlwZSk7fQorCXZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBYTUxDaCAqIHVyaSkKKwkJe1hFTkNFbmNyeXB0ZWRUeXBlSW1wbDo6c2V0RW5jb2RpbmcodXJpKTt9CisKK3ByaXZhdGU6CisKKwkvLyBVbmltcGxlbWVudGVkCisJWEVOQ0VuY3J5cHRlZERhdGFJbXBsKHZvaWQpOworCVhFTkNFbmNyeXB0ZWREYXRhSW1wbChjb25zdCBYRU5DRW5jcnlwdGVkRGF0YUltcGwgJik7CisJWEVOQ0VuY3J5cHRlZERhdGFJbXBsICYgb3BlcmF0b3IgPSAoY29uc3QgWEVOQ0VuY3J5cHRlZERhdGFJbXBsICYpOworCit9OworCisjZW5kaWYgLyogWEVOQ0VOQ1JZUFRFRERBVEFJTVBMX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL3hlbmMvaW1wbC9YRU5DRW5jcnlwdGVkS2V5SW1wbC5jcHAgYi9jL3NyYy94ZW5jL2ltcGwvWEVOQ0VuY3J5cHRlZEtleUltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3MTVmZDMKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94ZW5jL2ltcGwvWEVOQ0VuY3J5cHRlZEtleUltcGwuY3BwCkBAIC0wLDAgKzEsMjY1IEBACisvKgorICogQ29weXJpZ2h0IDIwMDMtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYRU5DRW5jcnlwdGVkS2V5SW1wbCA6PSBJbXBsZW1lbnRhdGlvbiBmb3IgaG9sZGVyIG9iamVjdCBmb3IgRW5jcnlwdGVkS2V5cworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKworI2luY2x1ZGUgIlhFTkNDaXBoZXJJbXBsLmhwcCIKKyNpbmNsdWRlICJYRU5DRW5jcnlwdGVkS2V5SW1wbC5ocHAiCisjaW5jbHVkZSAiWEVOQ0NpcGhlckRhdGFJbXBsLmhwcCIKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vudi5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDRE9NVXRpbHMuaHBwPgorCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFVuaURlZnMuaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCQkJVU5JQ09ERSBTdHJpbmdzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0aWMgWE1MQ2ggc19FbmNyeXB0ZWRLZXlbXSA9IHsKKworCWNoTGF0aW5fRSwKKwljaExhdGluX24sCisJY2hMYXRpbl9jLAorCWNoTGF0aW5fciwKKwljaExhdGluX3ksCisJY2hMYXRpbl9wLAorCWNoTGF0aW5fdCwKKwljaExhdGluX2UsCisJY2hMYXRpbl9kLAorCWNoTGF0aW5fSywKKwljaExhdGluX2UsCisJY2hMYXRpbl95LAorCWNoTnVsbAorfTsKKworc3RhdGljIFhNTENoIHNfQ2FycmllZEtleU5hbWVbXSA9IHsKKworCWNoTGF0aW5fQywKKwljaExhdGluX2EsCisJY2hMYXRpbl9yLAorCWNoTGF0aW5fciwKKwljaExhdGluX2ksCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fZCwKKwljaExhdGluX0ssCisJY2hMYXRpbl9lLAorCWNoTGF0aW5feSwKKwljaExhdGluX04sCisJY2hMYXRpbl9hLAorCWNoTGF0aW5fbSwKKwljaExhdGluX2UsCisJY2hOdWxsCit9OworCitzdGF0aWMgWE1MQ2ggc19SZWNpcGllbnRbXSA9IHsKKworCWNoTGF0aW5fUiwKKwljaExhdGluX2UsCisJY2hMYXRpbl9jLAorCWNoTGF0aW5faSwKKwljaExhdGluX3AsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fZSwKKwljaExhdGluX24sCisJY2hMYXRpbl90LAorCWNoTnVsbAorfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCQkJQ29uc3RydWN0L0Rlc3RydWN0CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK1hFTkNFbmNyeXB0ZWRLZXlJbXBsOjpYRU5DRW5jcnlwdGVkS2V5SW1wbChjb25zdCBYU0VDRW52ICogZW52KSA6CitYRU5DRW5jcnlwdGVkS2V5KGVudiksCitYRU5DRW5jcnlwdGVkVHlwZUltcGwoZW52KSwKK21wX2NhcnJpZWRLZXlOYW1lVGV4dE5vZGUoTlVMTCksCittcF9yZWNpcGllbnRBdHRyKE5VTEwpIHsKKwkKK30KKworWEVOQ0VuY3J5cHRlZEtleUltcGw6OlhFTkNFbmNyeXB0ZWRLZXlJbXBsKGNvbnN0IFhTRUNFbnYgKiBlbnYsIERPTUVsZW1lbnQgKiBub2RlKSA6CitYRU5DRW5jcnlwdGVkS2V5KGVudiksCitYRU5DRW5jcnlwdGVkVHlwZUltcGwoZW52LCBub2RlKSwKK21wX2NhcnJpZWRLZXlOYW1lVGV4dE5vZGUoTlVMTCksCittcF9yZWNpcGllbnRBdHRyKE5VTEwpIHsKKworfQorCitYRU5DRW5jcnlwdGVkS2V5SW1wbDo6flhFTkNFbmNyeXB0ZWRLZXlJbXBsKCkgeworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCUxvYWQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgWEVOQ0VuY3J5cHRlZEtleUltcGw6OmxvYWQodm9pZCkgeworCisJaWYgKG1wX2VuY3J5cHRlZFR5cGVFbGVtZW50ID09IE5VTEwpIHsKKworCQkvLyBBdHRlbXB0IHRvIGxvYWQgYW4gZW1wdHkgZW5jcnlwdGVkRGF0YSBlbGVtZW50CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RW5jcnlwdGVkVHlwZUVycm9yLAorCQkJIlhFTkNFbmNyeXB0ZWRLZXk6OmxvYWQgLSBjYWxsZWQgb24gZW1wdHkgRE9NIik7CisKKwl9CisKKwlpZiAoIXN0ckVxdWFscyhnZXRYRU5DTG9jYWxOYW1lKG1wX2VuY3J5cHRlZFR5cGVFbGVtZW50KSwgc19FbmNyeXB0ZWRLZXkpKSB7CisKKwkJLy8gQXR0ZW1wdCB0byBsb2FkIGFuIGVtcHR5IGVuY3J5cHRlZEtleSBlbGVtZW50CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RW5jcnlwdGVkVHlwZUVycm9yLAorCQkJIlhFTkNFbmNyeXB0ZWRLZXk6OmxvYWQgLSBjYWxsZWQgb24gbm9uIEVuY3J5cHRlZERhdGEgbm9kZSIpOworCisJfQorCisJLy8gTm93IGNhbGwgdGhlIHZpcnR1YWwgZnVuY3Rpb24gd2Ugb3ZlcmxvYWRlZCB0byBnZXQgaGVyZS4KKwlYRU5DRW5jcnlwdGVkVHlwZUltcGw6OmxvYWQoKTsKKworCS8vIFNldCB1cCB0aGUga2V5SW5mbyBub2RlCisJbXBfa2V5SW5mb0RPTU5vZGUgPSBtcF9lbmNyeXB0ZWRUeXBlRWxlbWVudDsKKworCS8vIEZpbmQgdGhlIFJlY2lwaWVudCBBdHRyaWJ1dGUKKwltcF9yZWNpcGllbnRBdHRyID0gbXBfZW5jcnlwdGVkVHlwZUVsZW1lbnQtPmdldEF0dHJpYnV0ZU5vZGVOUyhOVUxMLCBzX1JlY2lwaWVudCk7CisKKwkvLyBOb3cgbG9hZCBzcGVjaWZpYyBFbmNyeXB0ZWRLZXkgZWxlbWVudHMKKwlET01Ob2RlICogYyA9IGZpbmRGaXJzdENoaWxkT2ZUeXBlKG1wX2VuY3J5cHRlZFR5cGVFbGVtZW50LCBET01Ob2RlOjpFTEVNRU5UX05PREUpOworCisJd2hpbGUgKGMgIT0gTlVMTCkgeworCisJCWlmIChzdHJFcXVhbHMoZ2V0WEVOQ0xvY2FsTmFtZShjKSwgc19DYXJyaWVkS2V5TmFtZSkpIHsKKworCQkJLy8gSGF2ZSBhIENhcnJpZWRLZXlOYW1lIG5vZGUKKwkJCW1wX2NhcnJpZWRLZXlOYW1lVGV4dE5vZGUgPSBmaW5kRmlyc3RDaGlsZE9mVHlwZShjLCBET01Ob2RlOjpURVhUX05PREUpOworCisJCX0KKworCQljID0gZmluZE5leHRFbGVtZW50Q2hpbGQoYyk7CisKKwl9CisKK30KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCUNyZWF0ZSBmcm9tIHNjcmF0Y2gKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RPTUVsZW1lbnQgKiBYRU5DRW5jcnlwdGVkS2V5SW1wbDo6Y3JlYXRlQmxhbmtFbmNyeXB0ZWRLZXkoCisJCQkJCQkJCQlYRU5DQ2lwaGVyRGF0YTo6WEVOQ0NpcGhlckRhdGFUeXBlIHR5cGUsIAorCQkJCQkJCQkJY29uc3QgWE1MQ2ggKiBhbGdvcml0aG0sCisJCQkJCQkJCQljb25zdCBYTUxDaCAqIHZhbHVlKSB7CisKKwlET01FbGVtZW50ICogcmV0ID0gY3JlYXRlQmxhbmtFbmNyeXB0ZWRUeXBlKHNfRW5jcnlwdGVkS2V5LCB0eXBlLCBhbGdvcml0aG0sIHZhbHVlKTsKKworCS8vIFNldCB1cCB0aGUgS2V5SW5mbyBpbmZvcm1hdGlvbgorCW1wX2tleUluZm9ET01Ob2RlID0gbXBfZW5jcnlwdGVkVHlwZUVsZW1lbnQ7CisKKwlyZXR1cm4gcmV0OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCUludGVyZmFjZSBNZXRob2RzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK2NvbnN0IFhNTENoICogWEVOQ0VuY3J5cHRlZEtleUltcGw6OmdldENhcnJpZWRLZXlOYW1lKHZvaWQpIGNvbnN0IHsKKworCWlmIChtcF9jYXJyaWVkS2V5TmFtZVRleHROb2RlICE9IE5VTEwpCisJCXJldHVybiBtcF9jYXJyaWVkS2V5TmFtZVRleHROb2RlLT5nZXROb2RlVmFsdWUoKTsKKworCXJldHVybiBOVUxMOworCit9CisKK2NvbnN0IFhNTENoICogWEVOQ0VuY3J5cHRlZEtleUltcGw6OmdldFJlY2lwaWVudCh2b2lkKSBjb25zdCB7CisKKwlpZiAobXBfcmVjaXBpZW50QXR0ciAhPSBOVUxMKQorCQlyZXR1cm4gbXBfcmVjaXBpZW50QXR0ci0+Z2V0Tm9kZVZhbHVlKCk7CisKKwlyZXR1cm4gTlVMTDsKKworfQorCit2b2lkIFhFTkNFbmNyeXB0ZWRLZXlJbXBsOjpzZXRDYXJyaWVkS2V5TmFtZShjb25zdCBYTUxDaCAqIG5hbWUpIHsKKworCWlmIChtcF9jYXJyaWVkS2V5TmFtZVRleHROb2RlID09IE5VTEwpIHsKKworCQkvLyBHZXQgc29tZSBzZXR1cCB2YWx1ZXMKKwkJc2FmZUJ1ZmZlciBzdHI7CisJCURPTURvY3VtZW50ICpkb2MgPSBYRU5DRW5jcnlwdGVkVHlwZUltcGw6Om1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKTsKKwkJY29uc3QgWE1MQ2ggKiBwcmVmaXggPSBYRU5DRW5jcnlwdGVkVHlwZUltcGw6Om1wX2Vudi0+Z2V0WEVOQ05TUHJlZml4KCk7CisKKwkJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCBzX0NhcnJpZWRLZXlOYW1lKTsKKworCQlET01FbGVtZW50ICplID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWEVOQywgc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCisJCW1wX2VuY3J5cHRlZFR5cGVFbGVtZW50LT5hcHBlbmRDaGlsZChlKTsKKwkJWEVOQ0VuY3J5cHRlZFR5cGVJbXBsOjptcF9lbnYtPmRvUHJldHR5UHJpbnQobXBfZW5jcnlwdGVkVHlwZUVsZW1lbnQpOworCisJCW1wX2NhcnJpZWRLZXlOYW1lVGV4dE5vZGUgPSBkb2MtPmNyZWF0ZVRleHROb2RlKG5hbWUpOworCQllLT5hcHBlbmRDaGlsZChtcF9jYXJyaWVkS2V5TmFtZVRleHROb2RlKTsKKworCX0gCisJCisJZWxzZSB7CisKKwkJbXBfY2FycmllZEtleU5hbWVUZXh0Tm9kZS0+c2V0Tm9kZVZhbHVlKG5hbWUpOworCisJfQorfQorCit2b2lkIFhFTkNFbmNyeXB0ZWRLZXlJbXBsOjpzZXRSZWNpcGllbnQoY29uc3QgWE1MQ2ggKiByZWNpcGllbnQpIHsKKworCWlmIChtcF9yZWNpcGllbnRBdHRyID09IE5VTEwpIHsKKworCQlpZiAobXBfZW5jcnlwdGVkVHlwZUVsZW1lbnQtPmdldE5vZGVUeXBlKCkgIT0gRE9NTm9kZTo6RUxFTUVOVF9OT0RFKSB7CisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkVuY3J5cHRlZFR5cGVFcnJvciwKKwkJCQkiWEVOQ0VuY3J5cHRlZEtleUltcGw6OnNldFJlY2lwaWVudCAtIGVuY3J5cHRlZFR5cGVOb2RlIGlzIG5vdCBhbiBFbGVtZW50Iik7CisJCX0KKworCQltcF9lbmNyeXB0ZWRUeXBlRWxlbWVudC0+c2V0QXR0cmlidXRlTlMoTlVMTCwgCisJCQkJCQkJCQkJCSBzX1JlY2lwaWVudCwKKwkJCQkJCQkJCQkJIHJlY2lwaWVudCk7CisJCS8vIE5vdyByZXRyaWV2ZSBmb3IgbGF0ZXIgdXNlCisJCW1wX3JlY2lwaWVudEF0dHIgPSBtcF9lbmNyeXB0ZWRUeXBlRWxlbWVudC0+Z2V0QXR0cmlidXRlTm9kZU5TKE5VTEwsIHNfUmVjaXBpZW50KTsKKworCQlpZiAobXBfcmVjaXBpZW50QXR0ciA9PSBOVUxMKSB7CisKKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RW5jcnlwdGlvbk1ldGhvZEVycm9yLAorCQkJCSJYRU5DRW5jcnlwdGlvbktleTo6c2V0UmVjaXBpZW50IC0gRXJyb3IgY3JlYXRpbmcgUmVjaXBpZW50IEF0dHJpYnV0ZSIpOworCQl9CisJfSAKKwkKKwllbHNlIHsKKworCQltcF9yZWNpcGllbnRBdHRyLT5zZXROb2RlVmFsdWUocmVjaXBpZW50KTsKKworCX0KKworfQorCmRpZmYgLS1naXQgYS9jL3NyYy94ZW5jL2ltcGwvWEVOQ0VuY3J5cHRlZEtleUltcGwuaHBwIGIvYy9zcmMveGVuYy9pbXBsL1hFTkNFbmNyeXB0ZWRLZXlJbXBsLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTFkMWUyCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGVuYy9pbXBsL1hFTkNFbmNyeXB0ZWRLZXlJbXBsLmhwcApAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAzLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEVOQ0VuY3J5cHRlZEtleUltcGwgOj0gSW1wbGVtZW50YXRpb24gZm9yIGhvbGRlciBvYmplY3QgZm9yIEVuY3J5cHRlZEtleSAKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEVOQ0VOQ1JZUFRFREtFWUlNUExfSU5DTFVERQorI2RlZmluZSBYRU5DRU5DUllQVEVES0VZSU1QTF9JTkNMVURFCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hlbmMvWEVOQ0VuY3J5cHRlZEtleS5ocHA+CisKKyNpbmNsdWRlICJYRU5DQ2lwaGVySW1wbC5ocHAiCisjaW5jbHVkZSAiWEVOQ0VuY3J5cHRlZFR5cGVJbXBsLmhwcCIKKworWFNFQ19ERUNMQVJFX1hFUkNFU19DTEFTUyhET01Ob2RlKTsKKworY2xhc3MgWEVOQ0VuY3J5cHRlZEtleUltcGwgOiBwdWJsaWMgWEVOQ0VuY3J5cHRlZEtleSwgcHVibGljIFhFTkNFbmNyeXB0ZWRUeXBlSW1wbCB7CisKK3B1YmxpYzoKKworCVhFTkNFbmNyeXB0ZWRLZXlJbXBsKGNvbnN0IFhTRUNFbnYgKiBlbnYpOworCVhFTkNFbmNyeXB0ZWRLZXlJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52LCAKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBub2RlCisJKTsKKwl2aXJ0dWFsIH5YRU5DRW5jcnlwdGVkS2V5SW1wbCgpOworCisJdm9pZCBsb2FkKHZvaWQpOworCisJLy8gQ3JlYXRlIGEgYmxhbmsgRW5jcnlwdGVkS2V5IERPTSBzdHJ1Y3R1cmUKKworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogCisJCWNyZWF0ZUJsYW5rRW5jcnlwdGVkS2V5KFhFTkNDaXBoZXJEYXRhOjpYRU5DQ2lwaGVyRGF0YVR5cGUgdHlwZSwgCisJCQkJCQkJCSBjb25zdCBYTUxDaCAqIGFsZ29yaXRobSwKKwkJCQkJCQkJIGNvbnN0IFhNTENoICogdmFsdWUpOworCisJLy8gS2V5SW5mbyBJbnRlcmZhY2UgbWV0aG9kcworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRLZXlOYW1lKHZvaWQpIGNvbnN0IHtyZXR1cm4gTlVMTDt9CisJdmlydHVhbCBrZXlJbmZvVHlwZSBnZXRLZXlJbmZvVHlwZSh2b2lkKSBjb25zdCB7cmV0dXJuIERTSUdLZXlJbmZvOjpLRVlJTkZPX0VOQ1JZUFRFREtFWTt9CisKKworCS8vIEluaGVyaXRlZCBmcm9tIFhFTkNFbmNyeXB0ZWREYXRhIC0gbmVlZCB0byByZS1pbXBsZW1lbnQKKwl2aXJ0dWFsIFhFTkNDaXBoZXJEYXRhICogZ2V0Q2lwaGVyRGF0YSh2b2lkKSBjb25zdAorCQl7cmV0dXJuIFhFTkNFbmNyeXB0ZWRUeXBlSW1wbDo6Z2V0Q2lwaGVyRGF0YSgpO30KKwl2aXJ0dWFsIERTSUdLZXlJbmZvTGlzdCAqIGdldEtleUluZm9MaXN0KHZvaWQpCisJCXtyZXR1cm4gWEVOQ0VuY3J5cHRlZFR5cGVJbXBsOjpnZXRLZXlJbmZvTGlzdCgpO30KKwl2aXJ0dWFsIFhFTkNFbmNyeXB0aW9uTWV0aG9kICogZ2V0RW5jcnlwdGlvbk1ldGhvZCh2b2lkKSBjb25zdAorCQl7cmV0dXJuIFhFTkNFbmNyeXB0ZWRUeXBlSW1wbDo6Z2V0RW5jcnlwdGlvbk1ldGhvZCgpO30KKwl2aXJ0dWFsIHZvaWQgY2xlYXJLZXlJbmZvKHZvaWQpCisJCXtYRU5DRW5jcnlwdGVkVHlwZUltcGw6OmNsZWFyS2V5SW5mbygpO30KKwl2aXJ0dWFsIERTSUdLZXlJbmZvVmFsdWUgKiBhcHBlbmREU0FLZXlWYWx1ZShjb25zdCBYTUxDaCAqIFAsIAorCQkJCQkJCSAgIGNvbnN0IFhNTENoICogUSwgCisJCQkJCQkJICAgY29uc3QgWE1MQ2ggKiBHLCAKKwkJCQkJCQkgICBjb25zdCBYTUxDaCAqIFkpCisJICAgIHtyZXR1cm4gWEVOQ0VuY3J5cHRlZFR5cGVJbXBsOjphcHBlbmREU0FLZXlWYWx1ZShQLCBRLCBHLCBZKTt9CisJdmlydHVhbCBEU0lHS2V5SW5mb1ZhbHVlICogYXBwZW5kUlNBS2V5VmFsdWUoY29uc3QgWE1MQ2ggKiBtb2R1bHVzLCAKKwkJCQkJCQkgICBjb25zdCBYTUxDaCAqIGV4cG9uZW50KQorCSAgICB7cmV0dXJuIFhFTkNFbmNyeXB0ZWRUeXBlSW1wbDo6YXBwZW5kUlNBS2V5VmFsdWUobW9kdWx1cywgZXhwb25lbnQpO30KKwl2aXJ0dWFsIERTSUdLZXlJbmZvWDUwOSAqIGFwcGVuZFg1MDlEYXRhKHZvaWQpCisJICAgIHtyZXR1cm4gWEVOQ0VuY3J5cHRlZFR5cGVJbXBsOjphcHBlbmRYNTA5RGF0YSgpO30KKwl2aXJ0dWFsIERTSUdLZXlJbmZvTmFtZSAqIGFwcGVuZEtleU5hbWUoY29uc3QgWE1MQ2ggKiBuYW1lLCBib29sIGlzRE5hbWUgPSBmYWxzZSkKKwkJe3JldHVybiBYRU5DRW5jcnlwdGVkVHlwZUltcGw6OmFwcGVuZEtleU5hbWUobmFtZSwgaXNETmFtZSk7fQorCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBnZXRFbGVtZW50KHZvaWQpIGNvbnN0CisJCXtyZXR1cm4gWEVOQ0VuY3J5cHRlZFR5cGVJbXBsOjpnZXRFbGVtZW50KCk7fQorCXZpcnR1YWwgdm9pZCBhcHBlbmRFbmNyeXB0ZWRLZXkoWEVOQ0VuY3J5cHRlZEtleSAqIGVuY3J5cHRlZEtleSkKKwkJe1hFTkNFbmNyeXB0ZWRUeXBlSW1wbDo6YXBwZW5kRW5jcnlwdGVkS2V5KGVuY3J5cHRlZEtleSk7fQorCisJLy8gR2V0IG1ldGhvZHMKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0VHlwZSh2b2lkKSBjb25zdAorCQl7cmV0dXJuIFhFTkNFbmNyeXB0ZWRUeXBlSW1wbDo6Z2V0VHlwZSgpO30KKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0TWltZVR5cGUodm9pZCkgY29uc3QKKwkJe3JldHVybiBYRU5DRW5jcnlwdGVkVHlwZUltcGw6OmdldE1pbWVUeXBlKCk7fQorCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRFbmNvZGluZyh2b2lkKSBjb25zdAorCQl7cmV0dXJuIFhFTkNFbmNyeXB0ZWRUeXBlSW1wbDo6Z2V0RW5jb2RpbmcoKTt9CisKKwkvLyBTZXQgbWV0aG9kcworCXZpcnR1YWwgdm9pZCBzZXRUeXBlKGNvbnN0IFhNTENoICogdXJpKQorCQl7WEVOQ0VuY3J5cHRlZFR5cGVJbXBsOjpzZXRUeXBlKHVyaSk7fQorCXZpcnR1YWwgdm9pZCBzZXRNaW1lVHlwZShjb25zdCBYTUxDaCAqIG1pbWVUeXBlKQorCQl7WEVOQ0VuY3J5cHRlZFR5cGVJbXBsOjpzZXRNaW1lVHlwZShtaW1lVHlwZSk7fQorCXZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBYTUxDaCAqIHVyaSkKKwkJe1hFTkNFbmNyeXB0ZWRUeXBlSW1wbDo6c2V0RW5jb2RpbmcodXJpKTt9CisKKwkvLyBFbmNyeXB0ZWRLZXkgc3BlY2lmaWMgR2V0dGVyIE1ldGhvZHMKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0Q2FycmllZEtleU5hbWUodm9pZCkgY29uc3Q7CisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldFJlY2lwaWVudCh2b2lkKSBjb25zdDsKKworCS8vIEVuY3J5cHRlZEtleSBzcGVjaWZpYyBzZXR0ZXIgbWV0aG9kcworCXZpcnR1YWwgdm9pZCBzZXRDYXJyaWVkS2V5TmFtZShjb25zdCBYTUxDaCAqIG5hbWUpOworCXZpcnR1YWwgdm9pZCBzZXRSZWNpcGllbnQoY29uc3QgWE1MQ2ggKiByZWNpcGllbnQpOworCisKK3ByaXZhdGU6CisKKwkvLyBVbmltcGxlbWVudGVkCisJWEVOQ0VuY3J5cHRlZEtleUltcGwodm9pZCk7CisJWEVOQ0VuY3J5cHRlZEtleUltcGwoY29uc3QgWEVOQ0VuY3J5cHRlZEtleUltcGwgJik7CisJWEVOQ0VuY3J5cHRlZEtleUltcGwgJiBvcGVyYXRvciA9IChjb25zdCBYRU5DRW5jcnlwdGVkS2V5SW1wbCAmKTsKKworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlCisJCQkJCQkJCSogbXBfY2FycmllZEtleU5hbWVUZXh0Tm9kZTsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZQorCQkJCQkJCQkqIG1wX3JlY2lwaWVudEF0dHI7CisKK307CisKKyNlbmRpZiAvKiBYRU5DRU5DUllQVEVES0VZSU1QTF9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy94ZW5jL2ltcGwvWEVOQ0VuY3J5cHRlZFR5cGVJbXBsLmNwcCBiL2Mvc3JjL3hlbmMvaW1wbC9YRU5DRW5jcnlwdGVkVHlwZUltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1ZmI4MTcKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94ZW5jL2ltcGwvWEVOQ0VuY3J5cHRlZFR5cGVJbXBsLmNwcApAQCAtMCwwICsxLDYwMyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAzLTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEVOQ0VuY3J5cHRlZFR5cGVJbXBsIDo9IEltcGxlbWVudGF0aW9uIG9mIHRoZSBFbmNyeXB0ZWRUeXBlIGludGVyZmFjZQorICogZWxlbWVudAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKworI2luY2x1ZGUgIlhFTkNDaXBoZXJJbXBsLmhwcCIKKyNpbmNsdWRlICJYRU5DQ2lwaGVyRGF0YUltcGwuaHBwIgorI2luY2x1ZGUgIlhFTkNFbmNyeXB0ZWRUeXBlSW1wbC5ocHAiCisjaW5jbHVkZSAiWEVOQ0VuY3J5cHRpb25NZXRob2RJbXBsLmhwcCIKKyNpbmNsdWRlICIuLi8uLi91dGlscy9YU0VDQXV0b1B0ci5ocHAiCisKKyNpbmNsdWRlIDx4c2VjL3hlbmMvWEVOQ0VuY3J5cHRlZEtleS5ocHA+CisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNQmFzZTY0LmhwcD4KKyNpbmNsdWRlIDx4c2VjL3RyYW5zZm9ybWVycy9UWEZNQ2hhaW4uaHBwPgorI2luY2x1ZGUgPHhzZWMvdHJhbnNmb3JtZXJzL1RYRk1TQi5ocHA+CisjaW5jbHVkZSA8eHNlYy90cmFuc2Zvcm1lcnMvVFhGTUMxNG4uaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHUmVmZXJlbmNlLmhwcD4KKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxVbmlEZWZzLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvSmFuaXRvci5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlVTklDT0RFIFN0cmluZ3MKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0YXRpYyBYTUxDaCBzX0VuY3J5cHRpb25NZXRob2RbXSA9IHsKKworCWNoTGF0aW5fRSwKKwljaExhdGluX24sCisJY2hMYXRpbl9jLAorCWNoTGF0aW5fciwKKwljaExhdGluX3ksCisJY2hMYXRpbl9wLAorCWNoTGF0aW5fdCwKKwljaExhdGluX2ksCisJY2hMYXRpbl9vLAorCWNoTGF0aW5fbiwKKwljaExhdGluX00sCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fdCwKKwljaExhdGluX2gsCisJY2hMYXRpbl9vLAorCWNoTGF0aW5fZCwKKwljaE51bGwsCit9OworCitzdGF0aWMgWE1MQ2ggc19LZXlJbmZvW10gPSB7CisKKwljaExhdGluX0ssCisJY2hMYXRpbl9lLAorCWNoTGF0aW5feSwKKwljaExhdGluX0ksCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fZiwKKwljaExhdGluX28sCisJY2hOdWxsLAorfTsKKworc3RhdGljIFhNTENoIHNfQ2lwaGVyRGF0YVtdID0geworCisJY2hMYXRpbl9DLAorCWNoTGF0aW5faSwKKwljaExhdGluX3AsCisJY2hMYXRpbl9oLAorCWNoTGF0aW5fZSwKKwljaExhdGluX3IsCisJY2hMYXRpbl9ELAorCWNoTGF0aW5fYSwKKwljaExhdGluX3QsCisJY2hMYXRpbl9hLAorCWNoTnVsbCwKK307CisKK3N0YXRpYyBYTUxDaCBzX1R5cGVbXSA9IHsKKwkKKwljaExhdGluX1QsCisJY2hMYXRpbl95LAorCWNoTGF0aW5fcCwKKwljaExhdGluX2UsCisJY2hOdWxsCit9OworCitzdGF0aWMgWE1MQ2ggc19NaW1lVHlwZVtdID0geworCQorCWNoTGF0aW5fTSwKKwljaExhdGluX2ksCisJY2hMYXRpbl9tLAorCWNoTGF0aW5fZSwKKwljaExhdGluX1QsCisJY2hMYXRpbl95LAorCWNoTGF0aW5fcCwKKwljaExhdGluX2UsCisJY2hOdWxsCit9OworCisKK3N0YXRpYyBYTUxDaCBzX0VuY29kaW5nW10gPSB7CisJCisJY2hMYXRpbl9FLAorCWNoTGF0aW5fbiwKKwljaExhdGluX2MsCisJY2hMYXRpbl9vLAorCWNoTGF0aW5fZCwKKwljaExhdGluX2ksCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fZywKKwljaE51bGwKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCUNvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hFTkNFbmNyeXB0ZWRUeXBlSW1wbDo6WEVOQ0VuY3J5cHRlZFR5cGVJbXBsKGNvbnN0IFhTRUNFbnYgKiBlbnYpIDoKK21wX2VudihlbnYpLAorbXBfZW5jcnlwdGVkVHlwZUVsZW1lbnQoTlVMTCksCittcF9rZXlJbmZvRWxlbWVudChOVUxMKSwKK21wX2NpcGhlckRhdGFFbGVtZW50KE5VTEwpLAorbXBfY2lwaGVyRGF0YShOVUxMKSwKK21wX2VuY3J5cHRpb25NZXRob2QoTlVMTCksCittX2tleUluZm9MaXN0KGVudiksCittcF90eXBlQXR0cihOVUxMKSwKK21wX21pbWVUeXBlQXR0cihOVUxMKSwKK21wX2VuY29kaW5nQXR0cihOVUxMKSB7CisKK30KKworCitYRU5DRW5jcnlwdGVkVHlwZUltcGw6OlhFTkNFbmNyeXB0ZWRUeXBlSW1wbChjb25zdCBYU0VDRW52ICogZW52LCBET01FbGVtZW50ICogbm9kZSkgOgorbXBfZW52KGVudiksCittcF9lbmNyeXB0ZWRUeXBlRWxlbWVudChub2RlKSwKK21wX2tleUluZm9FbGVtZW50KE5VTEwpLAorbXBfY2lwaGVyRGF0YUVsZW1lbnQoTlVMTCksCittcF9jaXBoZXJEYXRhKE5VTEwpLAorbXBfZW5jcnlwdGlvbk1ldGhvZChOVUxMKSwKK21fa2V5SW5mb0xpc3QoZW52KSwKK21wX3R5cGVBdHRyKE5VTEwpLAorbXBfbWltZVR5cGVBdHRyKE5VTEwpLAorbXBfZW5jb2RpbmdBdHRyKE5VTEwpIHsKKworfQorCitYRU5DRW5jcnlwdGVkVHlwZUltcGw6On5YRU5DRW5jcnlwdGVkVHlwZUltcGwoKSB7CisKKwlpZiAobXBfY2lwaGVyRGF0YSAhPSBOVUxMKQorCQlkZWxldGUgbXBfY2lwaGVyRGF0YTsKKworCWlmIChtcF9lbmNyeXB0aW9uTWV0aG9kICE9IE5VTEwpCisJCWRlbGV0ZSBtcF9lbmNyeXB0aW9uTWV0aG9kOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCUxvYWQgRE9NIFN0cnVjdHVyZXMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgWEVOQ0VuY3J5cHRlZFR5cGVJbXBsOjpsb2FkKCkgeworCisJaWYgKG1wX2VuY3J5cHRlZFR5cGVFbGVtZW50ID09IE5VTEwpIHsKKworCQkvLyBBdHRlbXB0IHRvIGxvYWQgYW4gZW1wdHkgZW5jcnlwdGVkVHlwZSBlbGVtZW50CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RW5jcnlwdGVkVHlwZUVycm9yLAorCQkJIlhFTkNFbmNyeXB0ZWRUeXBlOjpsb2FkIC0gY2FsbGVkIG9uIGVtcHR5IERPTSIpOworCisJfQorCisJLy8gVHlwZQorCW1wX3R5cGVBdHRyID0gbXBfZW5jcnlwdGVkVHlwZUVsZW1lbnQtPmdldEF0dHJpYnV0ZU5vZGVOUyhOVUxMLCBzX1R5cGUpOworCS8vIE1pbWVUeXBlCisJbXBfbWltZVR5cGVBdHRyID0gbXBfZW5jcnlwdGVkVHlwZUVsZW1lbnQtPmdldEF0dHJpYnV0ZU5vZGVOUyhOVUxMLCBzX01pbWVUeXBlKTsKKwkvLyBFbmNvZGluZworCW1wX2VuY29kaW5nQXR0ciA9IG1wX2VuY3J5cHRlZFR5cGVFbGVtZW50LT5nZXRBdHRyaWJ1dGVOb2RlTlMoTlVMTCwgc19FbmNvZGluZyk7CisKKwkvLyBEb24ndCBrbm93IHdoYXQgdGhlIG5vZGUgbmFtZSBzaG91bGQgYmUgKGhlbGQgYnkgc3VwZXIgY2xhc3MpLCAKKwkvLyBzbyBnbyBzdHJhaWdodCB0byB0aGUgY2hpbGRyZW4KKwkKKwlET01FbGVtZW50ICp0bXBFbHQgPSAoRE9NRWxlbWVudCAqKSBmaW5kRmlyc3RDaGlsZE9mVHlwZShtcF9lbmNyeXB0ZWRUeXBlRWxlbWVudCwgRE9NTm9kZTo6RUxFTUVOVF9OT0RFKTsKKworCWlmICh0bXBFbHQgIT0gTlVMTCAmJiBzdHJFcXVhbHMoZ2V0WEVOQ0xvY2FsTmFtZSh0bXBFbHQpLCBzX0VuY3J5cHRpb25NZXRob2QpKSB7CisKKwkJWFNFQ25ldyhtcF9lbmNyeXB0aW9uTWV0aG9kLCBYRU5DRW5jcnlwdGlvbk1ldGhvZEltcGwobXBfZW52LCB0bXBFbHQpKTsKKwkJbXBfZW5jcnlwdGlvbk1ldGhvZC0+bG9hZCgpOworCisJCXRtcEVsdCA9IGZpbmROZXh0RWxlbWVudENoaWxkKHRtcEVsdCk7CisKKwl9CisKKwlpZiAodG1wRWx0ICE9IE5VTEwgJiYgc3RyRXF1YWxzKGdldERTSUdMb2NhbE5hbWUodG1wRWx0KSwgc19LZXlJbmZvKSkgeworCisJCS8vIExvYWQKKwkJbXBfa2V5SW5mb0VsZW1lbnQgPSB0bXBFbHQ7CisJCW1fa2V5SW5mb0xpc3QubG9hZExpc3RGcm9tWE1MKHRtcEVsdCk7CisKKwkJLy8gRmluZCB0aGUgbmV4dCBub2RlCisKKwkJdG1wRWx0ID0gZmluZE5leHRFbGVtZW50Q2hpbGQodG1wRWx0KTsKKworCX0KKworCWlmICh0bXBFbHQgIT0gTlVMTCAmJiBzdHJFcXVhbHMoZ2V0WEVOQ0xvY2FsTmFtZSh0bXBFbHQpLCBzX0NpcGhlckRhdGEpKSB7CisKKwkJbXBfY2lwaGVyRGF0YUVsZW1lbnQgPSB0bXBFbHQ7CisKKwkJWFNFQ25ldyhtcF9jaXBoZXJEYXRhLCBYRU5DQ2lwaGVyRGF0YUltcGwobXBfZW52LCB0bXBFbHQpKTsKKwkJbXBfY2lwaGVyRGF0YS0+bG9hZCgpOworCQl0bXBFbHQgPSBmaW5kTmV4dEVsZW1lbnRDaGlsZCh0bXBFbHQpOworCisJfQorCisJZWxzZSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZFhFTkNDaGlsZE5vdEZvdW5kLAorCQkJIkV4cGVjdGVkIDxDaXBoZXJEYXRhPiBjaGlsZCBvZiA8RW5jcnlwdGVkVHlwZT4iKTsKKworCX0KKworCS8vIFNob3VsZCBjaGVjayBmb3IgRW5jcnlwdGlvblByb3BlcnRpZXMKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlDcmVhdGUgYSBibGFuayBzdHJ1Y3R1cmUKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RPTUVsZW1lbnQgKiBYRU5DRW5jcnlwdGVkVHlwZUltcGw6OmNyZWF0ZUJsYW5rRW5jcnlwdGVkVHlwZSgKKwkJCQkJCVhNTENoICogbG9jYWxOYW1lLAorCQkJCQkJWEVOQ0NpcGhlckRhdGE6OlhFTkNDaXBoZXJEYXRhVHlwZSB0eXBlLCAKKwkJCQkJCWNvbnN0IFhNTENoICogYWxnb3JpdGhtLAorCQkJCQkJY29uc3QgWE1MQ2ggKiB2YWx1ZSkgeworCisJLy8gUmVzZXQKKwltcF9jaXBoZXJEYXRhID0gTlVMTDsKKwltcF9lbmNyeXB0aW9uTWV0aG9kID0gTlVMTDsKKworCS8vIEdldCBzb21lIHNldHVwIHZhbHVlcworCXNhZmVCdWZmZXIgc3RyOworCURPTURvY3VtZW50ICpkb2MgPSBtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCk7CisJY29uc3QgWE1MQ2ggKiBwcmVmaXggPSBtcF9lbnYtPmdldFhFTkNOU1ByZWZpeCgpOworCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCBsb2NhbE5hbWUpOworCisJbXBfZW5jcnlwdGVkVHlwZUVsZW1lbnQgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYRU5DLCBzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisKKwkvLyBTZXQgbmFtZXNwYWNlCisJaWYgKHByZWZpeFswXSA9PSBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgY2hOdWxsKSB7CisJCXN0ci5zYlRyYW5zY29kZUluKCJ4bWxucyIpOworCX0KKwllbHNlIHsKKwkJc3RyLnNiVHJhbnNjb2RlSW4oInhtbG5zOiIpOworCQlzdHIuc2JYTUxDaENhdChwcmVmaXgpOworCX0KKworCW1wX2VuY3J5cHRlZFR5cGVFbGVtZW50LT5zZXRBdHRyaWJ1dGVOUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYTUxOUywgCisJCQkJCQkJc3RyLnJhd1hNTENoQnVmZmVyKCksIAorCQkJCQkJCURTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhFTkMpOworCisJbXBfZW52LT5kb1ByZXR0eVByaW50KG1wX2VuY3J5cHRlZFR5cGVFbGVtZW50KTsKKworCS8vIENyZWF0ZSB0aGUgRW5jcnlwdGlvbk1ldGhvZAorCWlmIChhbGdvcml0aG0gIT0gTlVMTCkgeworCisJCVhTRUNuZXcobXBfZW5jcnlwdGlvbk1ldGhvZCwgWEVOQ0VuY3J5cHRpb25NZXRob2RJbXBsKG1wX2VudikpOworCQlET01Ob2RlICogZW5jcnlwdGlvbk1ldGhvZE5vZGUgPSAKKwkJCW1wX2VuY3J5cHRpb25NZXRob2QtPmNyZWF0ZUJsYW5rRW5jcnlwdGVkTWV0aG9kKGFsZ29yaXRobSk7CisKKwkJbXBfZW5jcnlwdGVkVHlwZUVsZW1lbnQtPmFwcGVuZENoaWxkKGVuY3J5cHRpb25NZXRob2ROb2RlKTsKKworCQltcF9lbnYtPmRvUHJldHR5UHJpbnQobXBfZW5jcnlwdGVkVHlwZUVsZW1lbnQpOworCisJfQorCisJLy8gQ3JlYXRlIHRoZSBjaXBoZXIgRGF0YQorCVhTRUNuZXcobXBfY2lwaGVyRGF0YSwgWEVOQ0NpcGhlckRhdGFJbXBsKG1wX2VudikpOworCW1wX2NpcGhlckRhdGFFbGVtZW50ID0gbXBfY2lwaGVyRGF0YS0+Y3JlYXRlQmxhbmtDaXBoZXJEYXRhKHR5cGUsIHZhbHVlKTsKKworCS8vIEFkZCB0byBFbmNyeXB0ZWRUeXBlCisJbXBfZW5jcnlwdGVkVHlwZUVsZW1lbnQtPmFwcGVuZENoaWxkKG1wX2NpcGhlckRhdGFFbGVtZW50KTsKKworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChtcF9lbmNyeXB0ZWRUeXBlRWxlbWVudCk7CisKKwlyZXR1cm4gbXBfZW5jcnlwdGVkVHlwZUVsZW1lbnQ7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCQkJQ3JlYXRlIGEgdHhmbSBjaGFpbiBmb3IgdGhpcyB0cmFuc2Zvcm0gbGlzdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVFhGTUNoYWluICogWEVOQ0VuY3J5cHRlZFR5cGVJbXBsOjpjcmVhdGVDaXBoZXJUWEZNQ2hhaW4odm9pZCkgeworCisJaWYgKG1wX2NpcGhlckRhdGEtPmdldENpcGhlckRhdGFUeXBlKCkgPT0gWEVOQ0NpcGhlckRhdGE6OlZBTFVFX1RZUEUpIHsKKworCQlUWEZNQ2hhaW4gKiBjaGFpbjsKKworCQkvLyBHaXZlbiB3ZSBhbHJlYWR5IGhhdmUgdGhpcyBpbiBtZW1vcnksIHdlIHRyYW5zY29kZSB0bworCQkvLyBsb2NhbCBjb2RlIHBhZ2UgYW5kIHRoZW4gdHJhbnNmb3JtCisKKwkJWFNFQ0F1dG9QdHJDaGFyIGI2NChtcF9jaXBoZXJEYXRhLT5nZXRDaXBoZXJWYWx1ZSgpLT5nZXRDaXBoZXJTdHJpbmcoKSk7CisKKwkJdHJ5IHsKKyAgICAgICAgICAgIFRYRk1TQiAqc2I7CisgICAgICAgICAgICBYU0VDbmV3KHNiLCBUWEZNU0IobXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpKSk7CisKKyAgICAgICAgICAgIHNiLT5zZXRJbnB1dChzYWZlQnVmZmVyKGI2NC5nZXQoKSkpOworCisgICAgICAgICAgICAvLyBDcmVhdGUgYSBjaGFpbgorICAgICAgICAgICAgWFNFQ25ldyhjaGFpbiwgVFhGTUNoYWluKHNiKSk7CisKKyAgICAgICAgICAgIC8vIENyZWF0ZSBhIGJhc2U2NCBkZWNvZGVyCisgICAgICAgICAgICBUWEZNQmFzZTY0ICogdGI2NDsKKyAgICAgICAgICAgIFhTRUNuZXcodGI2NCwgVFhGTUJhc2U2NChtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCkpKTsKKworICAgICAgICAgICAgY2hhaW4tPmFwcGVuZFR4Zm0odGI2NCk7CisKKyAgICAgICAgICAgIHJldHVybiBjaGFpbjsKKwkJfQorICAgICAgICBjYXRjaCAoLi4uKSB7CisgICAgICAgICAgICB0aHJvdzsKKwkJfQorCX0KKworCWVsc2UgaWYgKG1wX2NpcGhlckRhdGEtPmdldENpcGhlckRhdGFUeXBlKCkgPT0gWEVOQ0NpcGhlckRhdGE6OlJFRkVSRU5DRV9UWVBFKSB7CisKKwkJVFhGTUNoYWluICogY2hhaW47CisJCVRYRk1CYXNlICogYiA9IERTSUdSZWZlcmVuY2U6OmdldFVSSUJhc2VUWEZNKG1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKSwgbXBfY2lwaGVyRGF0YS0+Z2V0Q2lwaGVyUmVmZXJlbmNlKCktPmdldFVSSSgpLCBtcF9lbnYpOworCisJCWNoYWluID0gRFNJR1JlZmVyZW5jZTo6Y3JlYXRlVFhGTUNoYWluRnJvbUxpc3QoYiwgbXBfY2lwaGVyRGF0YS0+Z2V0Q2lwaGVyUmVmZXJlbmNlKCktPmdldFRyYW5zZm9ybXMoKSk7CisJCUphbml0b3I8VFhGTUNoYWluPiBqX2NoYWluKGNoYWluKTsKKworCQlpZiAoY2hhaW4tPmdldExhc3RUeGZtKCktPmdldE91dHB1dFR5cGUoKSA9PSBUWEZNQmFzZTo6RE9NX05PREVTKSB7CisKKwkJCVRYRk1DMTRuICogYzE0bjsKKwkJCVhTRUNuZXcoYzE0biwgVFhGTUMxNG4obXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpKSk7CisJCQljaGFpbi0+YXBwZW5kVHhmbShjMTRuKTsKKworCQl9CisKKwkJal9jaGFpbi5yZWxlYXNlKCk7CisJCXJldHVybiBjaGFpbjsKKworCX0KKworCWVsc2UgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RW5jcnlwdGVkVHlwZUVycm9yLAorCQkJIlhFTkNFbmNyeXB0ZWRUeXBlOjpjcmVhdGVEZWNyeXB0aW9uVFhGTUNoYWluIC0gVW5rbm93biB0eXBlIG9mIENpcGhlckRhdGEiKTsKKworCX0KKworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCUdldCBNZXRob2RzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYRU5DQ2lwaGVyRGF0YSAqIFhFTkNFbmNyeXB0ZWRUeXBlSW1wbDo6Z2V0Q2lwaGVyRGF0YSh2b2lkKSBjb25zdCB7CisKKwlyZXR1cm4gbXBfY2lwaGVyRGF0YTsKKworfQorCitYRU5DRW5jcnlwdGlvbk1ldGhvZCAqIFhFTkNFbmNyeXB0ZWRUeXBlSW1wbDo6Z2V0RW5jcnlwdGlvbk1ldGhvZCh2b2lkKSBjb25zdCB7CisJCisJcmV0dXJuIG1wX2VuY3J5cHRpb25NZXRob2Q7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCQkJS2V5SW5mbyBlbGVtZW50cworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBYRU5DRW5jcnlwdGVkVHlwZUltcGw6OmNsZWFyS2V5SW5mbyh2b2lkKSB7CisKKwlpZiAobXBfa2V5SW5mb0VsZW1lbnQgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJaWYgKG1wX2VuY3J5cHRlZFR5cGVFbGVtZW50LT5yZW1vdmVDaGlsZChtcF9rZXlJbmZvRWxlbWVudCkgIT0gbXBfa2V5SW5mb0VsZW1lbnQpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkRFNJR0NoaWxkTm90Rm91bmQsCisJCQkiQXR0ZW1wdGVkIHRvIHJlbW92ZSBLZXlJbmZvIG5vZGUgYnV0IGl0IGlzIG5vIGxvbmdlciBhIGNoaWxkIG9mIDxFbmNyeXB0ZWRUeXBlPiIpOworCisJfQorCisJbXBfa2V5SW5mb0VsZW1lbnQtPnJlbGVhc2UoKTsJCS8vIE5vIGxvbmdlciByZXF1aXJlZAorCisJbXBfa2V5SW5mb0VsZW1lbnQgPSBOVUxMOworCisJLy8gQ2xlYXIgb3V0IHRoZSBsaXN0CisJbV9rZXlJbmZvTGlzdC5lbXB0eSgpOworCit9CisKK3ZvaWQgWEVOQ0VuY3J5cHRlZFR5cGVJbXBsOjpjcmVhdGVLZXlJbmZvRWxlbWVudCh2b2lkKSB7CisKKwlpZiAobXBfa2V5SW5mb0VsZW1lbnQgIT0gTlVMTCkKKwkJcmV0dXJuOworCisJc2FmZUJ1ZmZlciBzdHI7CisKKwljb25zdCBYTUxDaCAqIHByZWZpeE5TID0gbXBfZW52LT5nZXREU0lHTlNQcmVmaXgoKTsKKwltYWtlUU5hbWUoc3RyLCBwcmVmaXhOUywgIktleUluZm8iKTsKKworCW1wX2tleUluZm9FbGVtZW50ID0gbV9rZXlJbmZvTGlzdC5jcmVhdGVLZXlJbmZvKCk7CisKKwkvLyBQbGFjZSB0aGUgbm9kZSBiZWZvcmUgdGhlIENpcGhlckRhdGEgbm9kZQorCWlmIChtcF9jaXBoZXJEYXRhRWxlbWVudCA9PSBOVUxMKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFbmNyeXB0ZWRUeXBlRXJyb3IsCisJCQkiWEVOQ0VuY3J5cHRlZFR5cGVJbXBsOjpjcmVhdGVLZXlJbmZvRWxlbWVudCAtIHVuYWJsZSB0byBmaW5kIENpcGhlckRhdGEgbm9kZSIpOworCisJfQorCisJbXBfZW5jcnlwdGVkVHlwZUVsZW1lbnQtPmluc2VydEJlZm9yZShtcF9rZXlJbmZvRWxlbWVudCwgbXBfY2lwaGVyRGF0YUVsZW1lbnQpOworCisJaWYgKG1wX2Vudi0+Z2V0UHJldHR5UHJpbnRGbGFnKCkgPT0gdHJ1ZSkKKwkJbXBfZW5jcnlwdGVkVHlwZUVsZW1lbnQtPmluc2VydEJlZm9yZShtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCktPmNyZWF0ZVRleHROb2RlKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ck5MKSwgbXBfY2lwaGVyRGF0YUVsZW1lbnQpOworCQorCS8vIE5lZWQgdG8gYWRkIHRoZSBEUyBuYW1lc3BhY2UKKworCWlmIChwcmVmaXhOU1swXSA9PSAnXDAnKSB7CisJCXN0ci5zYlRyYW5zY29kZUluKCJ4bWxucyIpOworCX0KKwllbHNlIHsKKwkJc3RyLnNiVHJhbnNjb2RlSW4oInhtbG5zOiIpOworCQlzdHIuc2JYTUxDaENhdChwcmVmaXhOUyk7CisJfQorCisJbXBfa2V5SW5mb0VsZW1lbnQtPnNldEF0dHJpYnV0ZU5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhNTE5TLCAKKwkJCQkJCQlzdHIucmF3WE1MQ2hCdWZmZXIoKSwgCisJCQkJCQkJRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRFNJRyk7CisKK30KKworRFNJR0tleUluZm9WYWx1ZSAqIFhFTkNFbmNyeXB0ZWRUeXBlSW1wbDo6YXBwZW5kRFNBS2V5VmFsdWUoY29uc3QgWE1MQ2ggKiBQLCAKKwkJCQkJCSAgIGNvbnN0IFhNTENoICogUSwgCisJCQkJCQkgICBjb25zdCBYTUxDaCAqIEcsIAorCQkJCQkJICAgY29uc3QgWE1MQ2ggKiBZKSB7CisKKwljcmVhdGVLZXlJbmZvRWxlbWVudCgpOworCXJldHVybiBtX2tleUluZm9MaXN0LmFwcGVuZERTQUtleVZhbHVlKFAsIFEsIEcsIFkpOworCit9CisKK0RTSUdLZXlJbmZvVmFsdWUgKiBYRU5DRW5jcnlwdGVkVHlwZUltcGw6OmFwcGVuZFJTQUtleVZhbHVlKGNvbnN0IFhNTENoICogbW9kdWx1cywgCisJCQkJCQkgICBjb25zdCBYTUxDaCAqIGV4cG9uZW50KSB7CisKKwljcmVhdGVLZXlJbmZvRWxlbWVudCgpOworCXJldHVybiBtX2tleUluZm9MaXN0LmFwcGVuZFJTQUtleVZhbHVlKG1vZHVsdXMsIGV4cG9uZW50KTsKKworfQorCisKK0RTSUdLZXlJbmZvWDUwOSAqIFhFTkNFbmNyeXB0ZWRUeXBlSW1wbDo6YXBwZW5kWDUwOURhdGEodm9pZCkgeworCisJY3JlYXRlS2V5SW5mb0VsZW1lbnQoKTsKKwlyZXR1cm4gbV9rZXlJbmZvTGlzdC5hcHBlbmRYNTA5RGF0YSgpOworCit9CisKK0RTSUdLZXlJbmZvTmFtZSAqIFhFTkNFbmNyeXB0ZWRUeXBlSW1wbDo6YXBwZW5kS2V5TmFtZShjb25zdCBYTUxDaCAqIG5hbWUsIGJvb2wgaXNETmFtZSkgeworCisJY3JlYXRlS2V5SW5mb0VsZW1lbnQoKTsKKwlyZXR1cm4gbV9rZXlJbmZvTGlzdC5hcHBlbmRLZXlOYW1lKG5hbWUsIGlzRE5hbWUpOworCit9CisKK3ZvaWQgWEVOQ0VuY3J5cHRlZFR5cGVJbXBsOjphcHBlbmRFbmNyeXB0ZWRLZXkoWEVOQ0VuY3J5cHRlZEtleSAqIGVuY3J5cHRlZEtleSkgeworCisJY3JlYXRlS2V5SW5mb0VsZW1lbnQoKTsKKwltX2tleUluZm9MaXN0LmFkZEFuZEluc2VydEtleUluZm8oZW5jcnlwdGVkS2V5KTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlUeXBlIFVSSSBoYW5kbGluZworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY29uc3QgWE1MQ2ggKiBYRU5DRW5jcnlwdGVkVHlwZUltcGw6OmdldFR5cGUodm9pZCkgY29uc3QgeworCisJaWYgKG1wX3R5cGVBdHRyICE9IE5VTEwpCisJCXJldHVybiBtcF90eXBlQXR0ci0+Z2V0Tm9kZVZhbHVlKCk7CisKKwlyZXR1cm4gTlVMTDsKKworfQorCit2b2lkIFhFTkNFbmNyeXB0ZWRUeXBlSW1wbDo6c2V0VHlwZShjb25zdCBYTUxDaCAqIHVyaSkgeworCisJaWYgKG1wX3R5cGVBdHRyICE9IE5VTEwpIHsKKwkJbXBfdHlwZUF0dHItPnNldE5vZGVWYWx1ZSh1cmkpOworCX0KKwllbHNlIHsKKworCQkvLyBOZWVkIHRvIGNyZWF0ZSB0aGUgbm9kZQorCQltcF9lbmNyeXB0ZWRUeXBlRWxlbWVudC0+c2V0QXR0cmlidXRlTlMoTlVMTCwgc19UeXBlLCB1cmkpOworCQltcF90eXBlQXR0ciA9IG1wX2VuY3J5cHRlZFR5cGVFbGVtZW50LT5nZXRBdHRyaWJ1dGVOb2RlTlMoTlVMTCwgc19UeXBlKTsKKworCQlpZiAobXBfdHlwZUF0dHIgPT0gTlVMTCkgeworCisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkludGVybmFsRXJyb3IsCisJCQkJIlhFTkNFbmNyeXB0ZWRUeXBlSW1wbDo6c2V0VHlwZVVSSSAtIENhbm5vdCBmaW5kIHRoZSBhdHRyaWJ1dGUgSSBqdXN0IGFkZGVkIik7CisKKwkJfQorCisJfQorfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlNaW1lVHlwZSBoYW5kbGluZworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY29uc3QgWE1MQ2ggKiBYRU5DRW5jcnlwdGVkVHlwZUltcGw6OmdldE1pbWVUeXBlKHZvaWQpIGNvbnN0IHsKKworCWlmIChtcF9taW1lVHlwZUF0dHIgIT0gTlVMTCkKKwkJcmV0dXJuIG1wX21pbWVUeXBlQXR0ci0+Z2V0Tm9kZVZhbHVlKCk7CisKKwlyZXR1cm4gTlVMTDsKKworfQorCit2b2lkIFhFTkNFbmNyeXB0ZWRUeXBlSW1wbDo6c2V0TWltZVR5cGUoY29uc3QgWE1MQ2ggKiBtaW1lVHlwZSkgeworCisJaWYgKG1wX21pbWVUeXBlQXR0ciAhPSBOVUxMKSB7CisJCW1wX21pbWVUeXBlQXR0ci0+c2V0Tm9kZVZhbHVlKG1pbWVUeXBlKTsKKwl9CisJZWxzZSB7CisKKwkJLy8gTmVlZCB0byBjcmVhdGUgdGhlIG5vZGUKKwkJbXBfZW5jcnlwdGVkVHlwZUVsZW1lbnQtPnNldEF0dHJpYnV0ZU5TKE5VTEwsIHNfTWltZVR5cGUsIG1pbWVUeXBlKTsKKwkJbXBfbWltZVR5cGVBdHRyID0gbXBfZW5jcnlwdGVkVHlwZUVsZW1lbnQtPmdldEF0dHJpYnV0ZU5vZGVOUyhOVUxMLCBzX01pbWVUeXBlKTsKKwkJaWYgKG1wX21pbWVUeXBlQXR0ciA9PSBOVUxMKSB7CisKKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6SW50ZXJuYWxFcnJvciwKKwkJCQkiWEVOQ0VuY3J5cHRlZFR5cGVJbXBsOjpzZXRNaW1lVHlwZSAtIENhbm5vdCBmaW5kIHRoZSBhdHRyaWJ1dGUgSSBqdXN0IGFkZGVkIik7CisKKwkJfQorCisJfQorfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlFbmNvZGluZyBoYW5kbGluZworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY29uc3QgWE1MQ2ggKiBYRU5DRW5jcnlwdGVkVHlwZUltcGw6OmdldEVuY29kaW5nKHZvaWQpIGNvbnN0IHsKKworCWlmIChtcF9lbmNvZGluZ0F0dHIgIT0gTlVMTCkKKwkJcmV0dXJuIG1wX2VuY29kaW5nQXR0ci0+Z2V0Tm9kZVZhbHVlKCk7CisKKwlyZXR1cm4gTlVMTDsKKworfQorCit2b2lkIFhFTkNFbmNyeXB0ZWRUeXBlSW1wbDo6c2V0RW5jb2RpbmcoY29uc3QgWE1MQ2ggKiB1cmkpIHsKKworCWlmIChtcF9lbmNvZGluZ0F0dHIgIT0gTlVMTCkgeworCQltcF9lbmNvZGluZ0F0dHItPnNldE5vZGVWYWx1ZSh1cmkpOworCX0KKwllbHNlIHsKKworCQkvLyBOZWVkIHRvIGNyZWF0ZSB0aGUgbm9kZQorCQltcF9lbmNyeXB0ZWRUeXBlRWxlbWVudC0+c2V0QXR0cmlidXRlTlMoTlVMTCwgc19FbmNvZGluZywgdXJpKTsKKwkJbXBfZW5jb2RpbmdBdHRyID0gbXBfZW5jcnlwdGVkVHlwZUVsZW1lbnQtPmdldEF0dHJpYnV0ZU5vZGVOUyhOVUxMLCBzX0VuY29kaW5nKTsKKworCQlpZiAobXBfZW5jb2RpbmdBdHRyID09IE5VTEwpIHsKKworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpJbnRlcm5hbEVycm9yLAorCQkJCSJYRU5DRW5jcnlwdGVkVHlwZUltcGw6OnNldEVuY29kaW5nVVJJIC0gQ2Fubm90IGZpbmQgdGhlIGF0dHJpYnV0ZSBJIGp1c3QgYWRkZWQiKTsKKworCQl9CisKKwl9Cit9CmRpZmYgLS1naXQgYS9jL3NyYy94ZW5jL2ltcGwvWEVOQ0VuY3J5cHRlZFR5cGVJbXBsLmhwcCBiL2Mvc3JjL3hlbmMvaW1wbC9YRU5DRW5jcnlwdGVkVHlwZUltcGwuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2ZmYxODgKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94ZW5jL2ltcGwvWEVOQ0VuY3J5cHRlZFR5cGVJbXBsLmhwcApAQCAtMCwwICsxLDE3MiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAzLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEVOQ0VuY3J5cHRlZFR5cGVJbXBsIDo9IEltcGxlbWVudGF0aW9uIG9mIHRoZSBFbmNyeXB0ZWRUeXBlIGludGVyZmFjZQorICogZWxlbWVudAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYRU5DRU5DUllQVEVEVFlQRUlNUExfSU5DTFVERQorI2RlZmluZSBYRU5DRU5DUllQVEVEVFlQRUlNUExfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy94ZW5jL1hFTkNFbmNyeXB0ZWRUeXBlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0tleUluZm9MaXN0LmhwcD4KKworLy8gRm9yd2FyZCBkZWNsYXJhdGlvbnMKKworWFNFQ19ERUNMQVJFX1hFUkNFU19DTEFTUyhET01Ob2RlKTsKKworY2xhc3MgWEVOQ0NpcGhlckRhdGFJbXBsOworY2xhc3MgWEVOQ0VuY3J5cHRpb25NZXRob2RJbXBsOworY2xhc3MgVFhGTUNoYWluOworY2xhc3MgWFNFQ0VudjsKKworY2xhc3MgWEVOQ0VuY3J5cHRlZFR5cGVJbXBsIDogcHVibGljIFhFTkNFbmNyeXB0ZWRUeXBlIHsKKworcHVibGljOgorCisJWEVOQ0VuY3J5cHRlZFR5cGVJbXBsKGNvbnN0IFhTRUNFbnYgKiBlbnYpOworCVhFTkNFbmNyeXB0ZWRUeXBlSW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudiwgCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogbm9kZQorCSk7CisKKwl2aXJ0dWFsIH5YRU5DRW5jcnlwdGVkVHlwZUltcGwoKTsKKworCS8vIExvYWQgZWxlbWVudHMKKwl2b2lkIGxvYWQoKTsKKworCS8vIENyZWF0ZSBmcm9tIHNjcmF0Y2guICBMb2NhbE5hbWUgaXMgdGhlIG5hbWUgb2YgdGhlIG93bmluZyBlbGVtZW50CisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGNyZWF0ZUJsYW5rRW5jcnlwdGVkVHlwZSgKKwkJCQkJCVhNTENoICogbG9jYWxOYW1lLAorCQkJCQkJWEVOQ0NpcGhlckRhdGE6OlhFTkNDaXBoZXJEYXRhVHlwZSB0eXBlLCAKKwkJCQkJCWNvbnN0IFhNTENoICogYWxnb3JpdGhtLAorCQkJCQkJY29uc3QgWE1MQ2ggKiB2YWx1ZSk7CisKKwkvLyBJbnRlcmZhY2UgTWV0aG9kcworCXZpcnR1YWwgWEVOQ0NpcGhlckRhdGEgKiBnZXRDaXBoZXJEYXRhKHZvaWQpIGNvbnN0OworCXZpcnR1YWwgRFNJR0tleUluZm9MaXN0ICogZ2V0S2V5SW5mb0xpc3Qodm9pZCkge3JldHVybiAmbV9rZXlJbmZvTGlzdDt9CisJdmlydHVhbCBYRU5DRW5jcnlwdGlvbk1ldGhvZCAqIGdldEVuY3J5cHRpb25NZXRob2Qodm9pZCkgY29uc3Q7CisJdmlydHVhbCB2b2lkIGNsZWFyS2V5SW5mbyh2b2lkKTsKKwkvKioKKwkgKiBcYnJpZWYgQXBwZW5kIGEgRFNBIEtleVZhbHVlIGVsZW1lbnQgCisJICoKKwkgKiBBZGQgYSBuZXcgS2V5SW5mbyBlbGVtZW50IGZvciBhIERTQSBWYWx1ZQorCSAqCisJICogQHBhcmFtIFAgQmFzZTY0IGVuY29kZWQgdmFsdWUgb2YgUAorCSAqIEBwYXJhbSBRIEJhc2U2NCBlbmNvZGVkIHZhbHVlIG9mIFEKKwkgKiBAcGFyYW0gRyBCYXNlNjQgZW5jb2RlZCB2YWx1ZSBvZiBHCisJICogQHBhcmFtIFkgQmFzZTY0IGVuY29kZWQgdmFsdWUgb2YgWQorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgY3JlYXRlZCBvYmplY3QuCisJICovCisKKwl2aXJ0dWFsIERTSUdLZXlJbmZvVmFsdWUgKiBhcHBlbmREU0FLZXlWYWx1ZShjb25zdCBYTUxDaCAqIFAsIAorCQkJCQkJICAgY29uc3QgWE1MQ2ggKiBRLCAKKwkJCQkJCSAgIGNvbnN0IFhNTENoICogRywgCisJCQkJCQkgICBjb25zdCBYTUxDaCAqIFkpOworCisJLyoqCisJICogXGJyaWVmIEFwcGVuZCBhIFJTQSBLZXlWYWx1ZSBlbGVtZW50IAorCSAqCisJICogQWRkIGEgbmV3IEtleUluZm8gZWxlbWVudCBmb3IgYSBSU0EgVmFsdWUKKwkgKgorCSAqIEBwYXJhbSBtb2R1bHVzIEJhc2U2NCBlbmNvZGVkIHZhbHVlIG9mIHRoZSBtb2R1bHVzCisJICogQHBhcmFtIGV4cG9uZW50IEJhc2U2NCBlbmNvZGVkIHZhbHVlIG9mIGV4cG9uZW50CisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBjcmVhdGVkIG9iamVjdC4KKwkgKi8KKworCXZpcnR1YWwgRFNJR0tleUluZm9WYWx1ZSAqIGFwcGVuZFJTQUtleVZhbHVlKGNvbnN0IFhNTENoICogbW9kdWx1cywgCisJCQkJCQkgICBjb25zdCBYTUxDaCAqIGV4cG9uZW50KTsKKworCS8qKgorCSAqIFxicmllZiBBcHBlbmQgYSBYNTA5RGF0YSBlbGVtZW50LgorCSAqCisJICogQWRkIGEgbmV3IEtleUluZm8gZWxlbWVudCBmb3IgWDUwOSBkYXRhLgorCSAqCisJICogQG5vdGUgVGhlIGFkZGVkIGVsZW1lbnQgaXMgZW1wdHkuICBUaGUgY2FsbGVyIG11c3QgbWFrZSB1c2Ugb2YgdGhlCisJICogcmV0dXJuZWQgb2JqZWN0IHRvIHNldCB0aGUgcmVxdWlyZWQgdmFsdWVzLgorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBjcmVhdGVkIG9iamVjdC4KKwkgKi8KKworCXZpcnR1YWwgRFNJR0tleUluZm9YNTA5ICogYXBwZW5kWDUwOURhdGEodm9pZCk7CisJdmlydHVhbCBEU0lHS2V5SW5mb05hbWUgKiBhcHBlbmRLZXlOYW1lKGNvbnN0IFhNTENoICogbmFtZSwgYm9vbCBpc0ROYW1lID0gZmFsc2UpOworCXZpcnR1YWwgdm9pZCBhcHBlbmRFbmNyeXB0ZWRLZXkoWEVOQ0VuY3J5cHRlZEtleSAqIGVuY3J5cHRlZEtleSk7CisKKwkvLyBHZXQgbWV0aG9kcworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRUeXBlKHZvaWQpIGNvbnN0OworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRNaW1lVHlwZSh2b2lkKSBjb25zdDsKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0RW5jb2Rpbmcodm9pZCkgY29uc3Q7CisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGdldEVsZW1lbnQodm9pZCkgY29uc3QKKwkJe3JldHVybiBtcF9lbmNyeXB0ZWRUeXBlRWxlbWVudDt9OworCisJLy8gU2V0IG1ldGhvZHMKKwl2aXJ0dWFsIHZvaWQgc2V0VHlwZShjb25zdCBYTUxDaCAqIHVyaSk7CisJdmlydHVhbCB2b2lkIHNldE1pbWVUeXBlKGNvbnN0IFhNTENoICogbWltZVR5cGUpOworCXZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBYTUxDaCAqIHVyaSk7CisKK3Byb3RlY3RlZDoKKworCS8vIENyZWF0ZSB0aGUgdHhmbSBsaXN0IC0gZ2l2ZXMgYXMgb3V0cHV0IGEgVFhGTSBjaGFpbiB3aXRoCisJLy8gdGhlIG91dHB1dCBiZWluZyB0aGUgcmF3IGVuY3J5cHRlZCBkYXRhCisKKwlUWEZNQ2hhaW4gKiBjcmVhdGVDaXBoZXJUWEZNQ2hhaW4odm9pZCk7CisKKwkvLyBXb3JrZXIgZnVuY3Rpb24gdG8gc3RhcnQgYnVpbGRpbmcgdGhlIEtleUluZm8gbGlzdAorCXZvaWQgY3JlYXRlS2V5SW5mb0VsZW1lbnQodm9pZCk7CisKKwljb25zdCBYU0VDRW52CQkJCSogbXBfZW52OworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50CQkJCQkKKwkJCQkJCQkJKiBtcF9lbmNyeXB0ZWRUeXBlRWxlbWVudDsJLy8gTm9kZSBhdCBoZWFkIG9mIHN0cnVjdHVyZQorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50CisJCQkJCQkJCSogbXBfa2V5SW5mb0VsZW1lbnQ7CQkvLyBBbnkgdW5kZXJseWluZyBLZXlJbmZvCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUKKwkJCQkJCQkJKiBtcF9jaXBoZXJEYXRhRWxlbWVudDsJCS8vIENpcGhlckRhdGEgc3RydWN0dXJlCisJWEVOQ0NpcGhlckRhdGFJbXBsCQkJKiBtcF9jaXBoZXJEYXRhOworCVhFTkNFbmNyeXB0aW9uTWV0aG9kSW1wbAkqIG1wX2VuY3J5cHRpb25NZXRob2Q7CisKKwkvLyBIb2xkIHRoZSBYTUwgRGlnaXRhbCBTaWduYXR1cmUgS2V5SW5mbyBsaXN0CisJRFNJR0tleUluZm9MaXN0CQkJbV9rZXlJbmZvTGlzdDsKKworCS8vIFR5cGUgVVJJCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUKKwkJCQkJCQkJKiBtcF90eXBlQXR0cjsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZQorCQkJCQkJCQkqIG1wX21pbWVUeXBlQXR0cjsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZQorCQkJCQkJCQkqIG1wX2VuY29kaW5nQXR0cjsKKworCWZyaWVuZCBjbGFzcyBYRU5DQ2lwaGVySW1wbDsKKworcHJpdmF0ZToKKworCS8vIFVuLWltcGxlbWVudGVkCisKKwlYRU5DRW5jcnlwdGVkVHlwZUltcGwoKTsKKwlYRU5DRW5jcnlwdGVkVHlwZUltcGwoY29uc3QgWEVOQ0VuY3J5cHRlZFR5cGVJbXBsICYpOworCVhFTkNFbmNyeXB0ZWRUeXBlSW1wbCAmIG9wZXJhdG9yID0gKGNvbnN0IFhFTkNFbmNyeXB0ZWRUeXBlSW1wbCAmKTsKK307CisKKyNlbmRpZiAvKiBYRU5DRU5DUllQVEVEVFlQRUlNUExfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMveGVuYy9pbXBsL1hFTkNFbmNyeXB0aW9uTWV0aG9kSW1wbC5jcHAgYi9jL3NyYy94ZW5jL2ltcGwvWEVOQ0VuY3J5cHRpb25NZXRob2RJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Yjg0ZDUxCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGVuYy9pbXBsL1hFTkNFbmNyeXB0aW9uTWV0aG9kSW1wbC5jcHAKQEAgLTAsMCArMSw0MzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMy0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhFTkNFbmNyeXB0aW9uTWV0aG9kIDo9IEludGVyZmFjZSBkZWZpbml0aW9uIGZvciBFbmNyeXB0aW9uTWV0aG9kIGVsZW1lbnQKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vudi5ocHA+CisKKyNpbmNsdWRlICJYRU5DRW5jcnlwdGlvbk1ldGhvZEltcGwuaHBwIgorCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFVuaURlZnMuaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvZG9tL0RPTS5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlVTklDT0RFIFN0cmluZ3MKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0YXRpYyBYTUxDaCBzX0VuY3J5cHRpb25NZXRob2RbXSA9IHsKKworCWNoTGF0aW5fRSwKKwljaExhdGluX24sCisJY2hMYXRpbl9jLAorCWNoTGF0aW5fciwKKwljaExhdGluX3ksCisJY2hMYXRpbl9wLAorCWNoTGF0aW5fdCwKKwljaExhdGluX2ksCisJY2hMYXRpbl9vLAorCWNoTGF0aW5fbiwKKwljaExhdGluX00sCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fdCwKKwljaExhdGluX2gsCisJY2hMYXRpbl9vLAorCWNoTGF0aW5fZCwKKwljaE51bGwsCit9OworCitzdGF0aWMgWE1MQ2ggc19EaWdlc3RNZXRob2RbXSA9IHsKKworCWNoTGF0aW5fRCwKKwljaExhdGluX2ksCisJY2hMYXRpbl9nLAorCWNoTGF0aW5fZSwKKwljaExhdGluX3MsCisJY2hMYXRpbl90LAorCWNoTGF0aW5fTSwKKwljaExhdGluX2UsCisJY2hMYXRpbl90LAorCWNoTGF0aW5faCwKKwljaExhdGluX28sCisJY2hMYXRpbl9kLAorCWNoTnVsbAorfTsKKworc3RhdGljIFhNTENoIHNfT0FFUHBhcmFtcyBbXSA9IHsKKworCWNoTGF0aW5fTywKKwljaExhdGluX0EsCisJY2hMYXRpbl9FLAorCWNoTGF0aW5fUCwKKwljaExhdGluX3AsCisJY2hMYXRpbl9hLAorCWNoTGF0aW5fciwKKwljaExhdGluX2EsCisJY2hMYXRpbl9tLAorCWNoTGF0aW5fcywKKwljaE51bGwKK307CisKK3N0YXRpYyBYTUxDaCBzX0tleVNpemUgW10gPSB7CisKKwljaExhdGluX0ssCisJY2hMYXRpbl9lLAorCWNoTGF0aW5feSwKKwljaExhdGluX1MsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5feiwKKwljaExhdGluX2UsCisJY2hOdWxsCit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYRU5DRW5jcnlwdGlvbk1ldGhvZEltcGw6OlhFTkNFbmNyeXB0aW9uTWV0aG9kSW1wbChjb25zdCBYU0VDRW52ICogZW52KSA6CittcF9lbnYoZW52KSwKK21wX2VuY3J5cHRpb25NZXRob2RFbGVtZW50KE5VTEwpLAorbXBfYWxnb3JpdGhtQXR0cihOVUxMKSwKK21wX2RpZ2VzdEFsZ29yaXRobUF0dHIoTlVMTCksCittcF9vYWVwUGFyYW1zVGV4dE5vZGUoTlVMTCksCittcF9rZXlTaXplVGV4dE5vZGUoTlVMTCkgeworCit9CisKK1hFTkNFbmNyeXB0aW9uTWV0aG9kSW1wbDo6WEVOQ0VuY3J5cHRpb25NZXRob2RJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52LCAKKwkJRE9NRWxlbWVudCAqIGVsZW1lbnQpIDoKK21wX2VudihlbnYpLAorbXBfZW5jcnlwdGlvbk1ldGhvZEVsZW1lbnQoZWxlbWVudCksCittcF9hbGdvcml0aG1BdHRyKE5VTEwpLAorbXBfZGlnZXN0QWxnb3JpdGhtQXR0cihOVUxMKSwKK21wX29hZXBQYXJhbXNUZXh0Tm9kZShOVUxMKSwKK21wX2tleVNpemVUZXh0Tm9kZShOVUxMKSB7CisKK30KKworWEVOQ0VuY3J5cHRpb25NZXRob2RJbXBsOjp+WEVOQ0VuY3J5cHRpb25NZXRob2RJbXBsKCkgeworCisKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlMb2FkIGZyb20gRE9NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK3ZvaWQgWEVOQ0VuY3J5cHRpb25NZXRob2RJbXBsOjpsb2FkKCkgeworCisJaWYgKG1wX2VuY3J5cHRpb25NZXRob2RFbGVtZW50ID09IE5VTEwpIHsKKworCQkvLyBBdHRlbXB0IHRvIGxvYWQgYW4gZW1wdHkgZW5jcnlwdGVkVHlwZSBlbGVtZW50CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RW5jcnlwdGlvbk1ldGhvZEVycm9yLAorCQkJIlhFTkNFbmNyeXB0aW9uTWV0aG9kOjpsb2FkIC0gY2FsbGVkIG9uIGVtcHR5IERPTSIpOworCisJfQorCisJaWYgKCFzdHJFcXVhbHMoZ2V0WEVOQ0xvY2FsTmFtZShtcF9lbmNyeXB0aW9uTWV0aG9kRWxlbWVudCksIHNfRW5jcnlwdGlvbk1ldGhvZCkpIHsKKworCQkvLyBBdHRlbXB0IHRvIGxvYWQgYW4gZW1wdHkgZW5jcnlwdGVkRGF0YSBlbGVtZW50CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RW5jcnlwdGlvbk1ldGhvZEVycm9yLAorCQkJIlhFTkNFbmNyeXB0aW9uTWV0aG9kOjpsb2FkIC0gY2FsbGVkIG9uIG5vbiBFbmNyeXB0aW9uTWV0aG9kIG5vZGUiKTsKKworCX0KKworCS8vIEZpbmQgdGhlIHR5cGUKKwltcF9hbGdvcml0aG1BdHRyID0gCisJCW1wX2VuY3J5cHRpb25NZXRob2RFbGVtZW50LT5nZXRBdHRyaWJ1dGVOb2RlTlMoTlVMTCwgCisJCQlEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJBbGdvcml0aG0pOworCisJLy8gQ2hlY2sgZm9yIGtub3duIGNoaWxkcmVuCisJRE9NRWxlbWVudCAqIGMgPSBmaW5kRmlyc3RFbGVtZW50Q2hpbGQobXBfZW5jcnlwdGlvbk1ldGhvZEVsZW1lbnQpOworCisJd2hpbGUgKGMgIT0gTlVMTCkgeworCisJCWlmIChzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZShjKSwgc19EaWdlc3RNZXRob2QpKSB7CisKKwkJCW1wX2RpZ2VzdEFsZ29yaXRobUF0dHIgPSBjLT5nZXRBdHRyaWJ1dGVOb2RlTlMoTlVMTCwgCisJCQkJRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyQWxnb3JpdGhtKTsKKworCQkJaWYgKG1wX2RpZ2VzdEFsZ29yaXRobUF0dHIgPT0gTlVMTCkgeworCQkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RW5jcnlwdGlvbk1ldGhvZEVycm9yLAorCQkJCQkiWEVOQ0VuY3J5cHRpb25NZXRob2Q6OmxvYWQgLSBDYW5ub3QgZmluZCBBbGdvcml0aG0gQXR0cmlidXRlIGluIERpZ2VzdE1ldGhvZCBlbGVtZW50Iik7CisJCQl9CisJCX0KKworCQllbHNlIGlmIChzdHJFcXVhbHMoZ2V0WEVOQ0xvY2FsTmFtZShjKSwgc19PQUVQcGFyYW1zKSkgeworCisJCQltcF9vYWVwUGFyYW1zVGV4dE5vZGUgPSBOVUxMOworCQkJbXBfb2FlcFBhcmFtc1RleHROb2RlID0gZmluZEZpcnN0Q2hpbGRPZlR5cGUoYywgRE9NTm9kZTo6VEVYVF9OT0RFKTsKKworCQkJaWYgKG1wX29hZXBQYXJhbXNUZXh0Tm9kZSA9PSBOVUxMKSB7CisJCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFbmNyeXB0aW9uTWV0aG9kRXJyb3IsCisJCQkJCSJYRU5DRW5jcnlwdGlvbk1ldGhvZDo6bG9hZCAtIENhbm5vdCBmaW5kIHRleHQgdmFsdWUgb2YgT0FFUHBhcmFtcyBub2RlIik7CisJCQl9CisKKwkJfQorCisJCWVsc2UgaWYgKHN0ckVxdWFscyhnZXRYRU5DTG9jYWxOYW1lKGMpLCBzX0tleVNpemUpKSB7CisKKwkJCW1wX2tleVNpemVUZXh0Tm9kZSA9IE5VTEw7CisJCQltcF9rZXlTaXplVGV4dE5vZGUgPSBmaW5kRmlyc3RDaGlsZE9mVHlwZShjLCBET01Ob2RlOjpURVhUX05PREUpOworCisJCQlpZiAobXBfa2V5U2l6ZVRleHROb2RlID09IE5VTEwpIHsKKwkJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkVuY3J5cHRpb25NZXRob2RFcnJvciwKKwkJCQkJIlhFTkNFbmNyeXB0aW9uTWV0aG9kOjpsb2FkIC0gQ2Fubm90IGZpbmQgdGV4dCB2YWx1ZSBvZiBLZXlTaXplIG5vZGUiKTsKKwkJCX0KKworCQl9CisJCWMgPSBmaW5kTmV4dEVsZW1lbnRDaGlsZChjKTsKKwl9Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCUNyZWF0ZSBmcm9tIHNjcmF0Y2gKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RPTUVsZW1lbnQgKiBYRU5DRW5jcnlwdGlvbk1ldGhvZEltcGw6OmNyZWF0ZUJsYW5rRW5jcnlwdGVkTWV0aG9kKGNvbnN0IFhNTENoICogYWxnb3JpdGhtKSB7CisKKwkvLyBHZXQgc29tZSBzZXR1cCB2YWx1ZXMKKwlzYWZlQnVmZmVyIHN0cjsKKwlET01Eb2N1bWVudCAqZG9jID0gbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpOworCWNvbnN0IFhNTENoICogcHJlZml4ID0gbXBfZW52LT5nZXRYRU5DTlNQcmVmaXgoKTsKKworCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgc19FbmNyeXB0aW9uTWV0aG9kKTsKKworCW1wX2VuY3J5cHRpb25NZXRob2RFbGVtZW50ID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWEVOQywgc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCisJLy8gU2V0IHRoZSBhbGdvcml0aG0gYXR0cmlidXRlCisKKwlpZiAoYWxnb3JpdGhtICE9IE5VTEwpIHsKKwkJbXBfZW5jcnlwdGlvbk1ldGhvZEVsZW1lbnQtPnNldEF0dHJpYnV0ZU5TKE5VTEwsCisJCQkJCQkJRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyQWxnb3JpdGhtLAorCQkJCQkJCWFsZ29yaXRobSk7CisJCW1wX2FsZ29yaXRobUF0dHIgPSAKKwkJCW1wX2VuY3J5cHRpb25NZXRob2RFbGVtZW50LT5nZXRBdHRyaWJ1dGVOb2RlTlMoTlVMTCwgCisJCQkJCQkJCQkJCQkJCSAgIERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ckFsZ29yaXRobSk7CisKKwl9CisKKwlyZXR1cm4gbXBfZW5jcnlwdGlvbk1ldGhvZEVsZW1lbnQ7CisKK30KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCUdldHRlciBmdW5jdGlvbnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NvbnN0IFhNTENoICogWEVOQ0VuY3J5cHRpb25NZXRob2RJbXBsOjpnZXREaWdlc3RNZXRob2Qodm9pZCkgY29uc3QgeworCisJaWYgKG1wX2RpZ2VzdEFsZ29yaXRobUF0dHIgIT0gTlVMTCkKKwkJcmV0dXJuIG1wX2RpZ2VzdEFsZ29yaXRobUF0dHItPmdldE5vZGVWYWx1ZSgpOworCisJcmV0dXJuIE5VTEw7CisKK30KKworY29uc3QgWE1MQ2ggKiBYRU5DRW5jcnlwdGlvbk1ldGhvZEltcGw6OmdldE9BRVBwYXJhbXModm9pZCkgY29uc3QgeworCisJaWYgKG1wX29hZXBQYXJhbXNUZXh0Tm9kZSAhPSBOVUxMKSB7CisJCXJldHVybiBtcF9vYWVwUGFyYW1zVGV4dE5vZGUtPmdldE5vZGVWYWx1ZSgpOworCX0KKworCXJldHVybiBOVUxMOworCit9CisKK2NvbnN0IFhNTENoICogWEVOQ0VuY3J5cHRpb25NZXRob2RJbXBsOjpnZXRBbGdvcml0aG0odm9pZCkgY29uc3QgeworCisJaWYgKG1wX2FsZ29yaXRobUF0dHIgIT0gTlVMTCkgeworCQlyZXR1cm4gbXBfYWxnb3JpdGhtQXR0ci0+Z2V0Tm9kZVZhbHVlKCk7CisJfQorCisJcmV0dXJuIE5VTEw7CisKK30KKworaW50IFhFTkNFbmNyeXB0aW9uTWV0aG9kSW1wbDo6Z2V0S2V5U2l6ZSh2b2lkKSBjb25zdCB7CisKKwlpZihtcF9rZXlTaXplVGV4dE5vZGUgIT0gTlVMTCkgeworCisJCWNvbnN0IFhNTENoICoga2V5VmFsID0gbXBfa2V5U2l6ZVRleHROb2RlLT5nZXROb2RlVmFsdWUoKTsKKwkJdW5zaWduZWQgaW50IHJlcyA9IDA7CisJCWlmICghWE1MU3RyaW5nOjp0ZXh0VG9CaW4oa2V5VmFsLCByZXMpKSB7CisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkVuY3J5cHRpb25NZXRob2RFcnJvciwKKwkJCQkiWEVOQ0VuY3J5cHRpb25NZXRob2Q6OmdldEtleVNpemUgLSBDYW5ub3QgY29udmVydCBLZXlTaXplIHRvIGludGVnZXIiKTsKKwkJfQorCisJCXJldHVybiAoaW50KSByZXM7CisKKwl9CisKKwlyZXR1cm4gMDsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlTZXR0ZXIgZnVuY3Rpb25zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIFhFTkNFbmNyeXB0aW9uTWV0aG9kSW1wbDo6c2V0RGlnZXN0TWV0aG9kKGNvbnN0IFhNTENoICogbWV0aG9kKSB7CisKKwlpZiAobXBfZGlnZXN0QWxnb3JpdGhtQXR0ciA9PSBOVUxMKSB7CisKKwkJLy8gTmVlZCB0byBjcmVhdGUKKwkJaWYgKG1wX29hZXBQYXJhbXNUZXh0Tm9kZSA9PSBOVUxMKSB7CisJCQltcF9lbnYtPmRvUHJldHR5UHJpbnQobXBfZW5jcnlwdGlvbk1ldGhvZEVsZW1lbnQpOworCQl9CisKKwkJLy8gR2V0IHNvbWUgc2V0dXAgdmFsdWVzCisJCXNhZmVCdWZmZXIgc3RyOworCQlET01Eb2N1bWVudCAqZG9jID0gbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpOworCQljb25zdCBYTUxDaCAqIHByZWZpeCA9IG1wX2Vudi0+Z2V0RFNJR05TUHJlZml4KCk7CisKKwkJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCBzX0RpZ2VzdE1ldGhvZCk7CisKKwkJRE9NRWxlbWVudCAqZSA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSURTSUcsIHN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKwkJaWYgKG1wX29hZXBQYXJhbXNUZXh0Tm9kZSAhPSBOVUxMKSB7CisJCQltcF9lbmNyeXB0aW9uTWV0aG9kRWxlbWVudC0+aW5zZXJ0QmVmb3JlKGUsIG1wX29hZXBQYXJhbXNUZXh0Tm9kZS0+Z2V0UGFyZW50Tm9kZSgpKTsKKwkJCWlmIChtcF9lbnYtPmdldFByZXR0eVByaW50RmxhZygpKQorCQkJCW1wX2VuY3J5cHRpb25NZXRob2RFbGVtZW50LT5pbnNlcnRCZWZvcmUoZG9jLT5jcmVhdGVUZXh0Tm9kZShEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJOTCksIG1wX29hZXBQYXJhbXNUZXh0Tm9kZS0+Z2V0UGFyZW50Tm9kZSgpKTsKKwkJfQorCQllbHNlIHsKKwkJCW1wX2VuY3J5cHRpb25NZXRob2RFbGVtZW50LT5hcHBlbmRDaGlsZChlKTsKKwkJCW1wX2Vudi0+ZG9QcmV0dHlQcmludChtcF9lbmNyeXB0aW9uTWV0aG9kRWxlbWVudCk7CisJCX0KKworCQllLT5zZXRBdHRyaWJ1dGVOUyhOVUxMLAorCQkJCQlEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJBbGdvcml0aG0sCisJCQkJCW1ldGhvZCk7CisKKwkJLy8gU2V0IG5hbWVzcGFjZQorCisJCWlmIChwcmVmaXhbMF0gPT0gWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIGNoTnVsbCkgeworCQkJc3RyLnNiVHJhbnNjb2RlSW4oInhtbG5zIik7CisJCX0KKwkJZWxzZSB7CisJCQlzdHIuc2JUcmFuc2NvZGVJbigieG1sbnM6Iik7CisJCQlzdHIuc2JYTUxDaENhdChwcmVmaXgpOworCQl9CisKKwkJZS0+c2V0QXR0cmlidXRlTlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWE1MTlMsIAorCQkJCQkJCQlzdHIucmF3WE1MQ2hCdWZmZXIoKSwgCisJCQkJCQkJCURTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhFTkMpOworCisJCS8vIE5vdyByZXRyaWV2ZSBmb3IgbGF0ZXIgdXNlCisJCW1wX2RpZ2VzdEFsZ29yaXRobUF0dHIgPQorCQkJZS0+Z2V0QXR0cmlidXRlTm9kZU5TKE5VTEwsIAorCQkJCURTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ckFsZ29yaXRobSk7CisKKwkJaWYgKG1wX2RpZ2VzdEFsZ29yaXRobUF0dHIgPT0gTlVMTCkgeworCisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkVuY3J5cHRpb25NZXRob2RFcnJvciwKKwkJCQkiWEVOQ0VuY3J5cHRpb25NZXRob2Q6OnNldERpZ2VzdE1ldGhvZCAtIEVycm9yIGNyZWF0aW5nIEFsZ29yaXRobSBBdHRyaWJ1dGUiKTsKKwkJfQorCX0gCisJCisJZWxzZSB7CisKKwkJbXBfZGlnZXN0QWxnb3JpdGhtQXR0ci0+c2V0Tm9kZVZhbHVlKG1ldGhvZCk7CisKKwl9CisKK30KKwordm9pZCBYRU5DRW5jcnlwdGlvbk1ldGhvZEltcGw6OnNldE9BRVBwYXJhbXMoY29uc3QgWE1MQ2ggKiBwYXJhbXMpIHsKKworCWlmIChtcF9vYWVwUGFyYW1zVGV4dE5vZGUgPT0gTlVMTCkgeworCisJCS8vIE5lZWQgdG8gY3JlYXRlCisJCWlmIChtcF9kaWdlc3RBbGdvcml0aG1BdHRyID09IE5VTEwpIHsKKwkJCW1wX2Vudi0+ZG9QcmV0dHlQcmludChtcF9lbmNyeXB0aW9uTWV0aG9kRWxlbWVudCk7CisJCX0KKworCQkvLyBHZXQgc29tZSBzZXR1cCB2YWx1ZXMKKwkJc2FmZUJ1ZmZlciBzdHI7CisJCURPTURvY3VtZW50ICpkb2MgPSBtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCk7CisJCWNvbnN0IFhNTENoICogcHJlZml4ID0gbXBfZW52LT5nZXRYRU5DTlNQcmVmaXgoKTsKKworCQltYWtlUU5hbWUoc3RyLCBwcmVmaXgsIHNfT0FFUHBhcmFtcyk7CisKKwkJRE9NRWxlbWVudCAqZSA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhFTkMsIHN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKwkJbXBfZW5jcnlwdGlvbk1ldGhvZEVsZW1lbnQtPmFwcGVuZENoaWxkKGUpOworCQltcF9lbnYtPmRvUHJldHR5UHJpbnQobXBfZW5jcnlwdGlvbk1ldGhvZEVsZW1lbnQpOworCisJCW1wX29hZXBQYXJhbXNUZXh0Tm9kZSA9IGRvYy0+Y3JlYXRlVGV4dE5vZGUocGFyYW1zKTsKKwkJZS0+YXBwZW5kQ2hpbGQobXBfb2FlcFBhcmFtc1RleHROb2RlKTsKKworCX0gCisJCisJZWxzZSB7CisKKwkJbXBfb2FlcFBhcmFtc1RleHROb2RlLT5zZXROb2RlVmFsdWUocGFyYW1zKTsKKworCX0KKworfQorCisKK3ZvaWQgWEVOQ0VuY3J5cHRpb25NZXRob2RJbXBsOjpzZXRLZXlTaXplKGludCBzaXplKSB7CisKKwkvLyBGaXJzdCBtYXAgdGhlIGludCB0byBhbiBYTUxDaCBzdHJpbmcKKwlYTUxDaCBzaXplWE1MQ2hbMTBdOworCVhNTFN0cmluZzo6YmluVG9UZXh0KCh1bnNpZ25lZCBpbnQpIHNpemUsIHNpemVYTUxDaCwgOSwgMTApOworCisJaWYgKG1wX2tleVNpemVUZXh0Tm9kZSA9PSBOVUxMKSB7CisKKwkJLy8gR2V0IHNvbWUgc2V0dXAgdmFsdWVzCisJCXNhZmVCdWZmZXIgc3RyOworCQlET01Eb2N1bWVudCAqZG9jID0gbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpOworCQljb25zdCBYTUxDaCAqIHByZWZpeCA9IG1wX2Vudi0+Z2V0WEVOQ05TUHJlZml4KCk7CisKKwkJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCBzX0tleVNpemUpOworCisJCURPTUVsZW1lbnQgKmUgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYRU5DLCBzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisJCWlmIChtcF9vYWVwUGFyYW1zVGV4dE5vZGUgIT0gTlVMTCkgeworCQkJLy8gTmVlZCB0byBpbnNlcnQgYmVmb3JlCisJCQlET01Ob2RlICogb2FlcE5vZGUgPSBtcF9vYWVwUGFyYW1zVGV4dE5vZGUtPmdldFBhcmVudE5vZGUoKTsKKwkJCW1wX2VuY3J5cHRpb25NZXRob2RFbGVtZW50LT5pbnNlcnRCZWZvcmUoZSwgb2FlcE5vZGUpOworCQkJaWYgKG1wX2Vudi0+Z2V0UHJldHR5UHJpbnRGbGFnKCkpIHsKKwkJCQltcF9lbmNyeXB0aW9uTWV0aG9kRWxlbWVudC0+aW5zZXJ0QmVmb3JlKGRvYy0+Y3JlYXRlVGV4dE5vZGUoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyTkwpLAorCQkJCQkJCQkJCQkJCQkgb2FlcE5vZGUpOworCQkJfQorCQl9CisJCWVsc2UgeworCQkJbXBfZW52LT5kb1ByZXR0eVByaW50KG1wX2VuY3J5cHRpb25NZXRob2RFbGVtZW50KTsKKwkJCW1wX2VuY3J5cHRpb25NZXRob2RFbGVtZW50LT5hcHBlbmRDaGlsZChlKTsKKwkJCW1wX2Vudi0+ZG9QcmV0dHlQcmludChtcF9lbmNyeXB0aW9uTWV0aG9kRWxlbWVudCk7CisJCX0KKworCQllLT5hcHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKHNpemVYTUxDaCkpOworCX0gCisJCisJZWxzZSB7CisKKwkJbXBfa2V5U2l6ZVRleHROb2RlLT5zZXROb2RlVmFsdWUoc2l6ZVhNTENoKTsKKworCX0KKworfQpkaWZmIC0tZ2l0IGEvYy9zcmMveGVuYy9pbXBsL1hFTkNFbmNyeXB0aW9uTWV0aG9kSW1wbC5ocHAgYi9jL3NyYy94ZW5jL2ltcGwvWEVOQ0VuY3J5cHRpb25NZXRob2RJbXBsLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTM5MDkxCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGVuYy9pbXBsL1hFTkNFbmNyeXB0aW9uTWV0aG9kSW1wbC5ocHAKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAzLTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEVOQ0VuY3J5cHRpb25NZXRob2QgOj0gSW50ZXJmYWNlIGRlZmluaXRpb24gZm9yIEVuY3J5cHRpb25NZXRob2QgZWxlbWVudAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYRU5DRU5DUllQVElPTk1FVEhPRElNUExfSU5DTFVERQorI2RlZmluZSBYRU5DRU5DUllQVElPTk1FVEhPRElNUExfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy94ZW5jL1hFTkNFbmNyeXB0aW9uTWV0aG9kLmhwcD4KKworY2xhc3MgWFNFQ0VudjsKKworWFNFQ19ERUNMQVJFX1hFUkNFU19DTEFTUyhET01Ob2RlKTsKKworY2xhc3MgWEVOQ0VuY3J5cHRpb25NZXRob2RJbXBsIDogcHVibGljIFhFTkNFbmNyeXB0aW9uTWV0aG9kIHsKKworcHVibGljOgorCisJWEVOQ0VuY3J5cHRpb25NZXRob2RJbXBsKGNvbnN0IFhTRUNFbnYgKiBlbnYpOworCVhFTkNFbmNyeXB0aW9uTWV0aG9kSW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudiwgCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogZWxlbWVudAorCSk7CisJdmlydHVhbCB+WEVOQ0VuY3J5cHRpb25NZXRob2RJbXBsKCk7CisKKwkvLyBMb2FkIGVsZW1lbnRzCisJdm9pZCBsb2FkKCk7CisKKwkvLyBDcmVhdGUgZnJvbSBzY3JhdGNoCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBjcmVhdGVCbGFua0VuY3J5cHRlZE1ldGhvZCgKKwkJCQkJCWNvbnN0IFhNTENoICogYWxnb3JpdGhtKTsKKworCS8vIEludGVyZmFjZQorCWNvbnN0IFhNTENoICogZ2V0QWxnb3JpdGhtKHZvaWQpIGNvbnN0OworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBnZXRFbGVtZW50KHZvaWQpIGNvbnN0CisJCXtyZXR1cm4gbXBfZW5jcnlwdGlvbk1ldGhvZEVsZW1lbnQ7fQorCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXREaWdlc3RNZXRob2Qodm9pZCkgY29uc3Q7CisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldE9BRVBwYXJhbXModm9pZCkgY29uc3Q7CisJdmlydHVhbCBpbnQgZ2V0S2V5U2l6ZSh2b2lkKSBjb25zdDsKKwl2aXJ0dWFsIHZvaWQgc2V0RGlnZXN0TWV0aG9kKGNvbnN0IFhNTENoICogbWV0aG9kKTsKKwl2aXJ0dWFsIHZvaWQgc2V0T0FFUHBhcmFtcyhjb25zdCBYTUxDaCAqIHBhcmFtcyk7CisJdmlydHVhbCB2b2lkIHNldEtleVNpemUoaW50IHNpemUpOworCisKKworcHJpdmF0ZToKKworCS8vIFVuaW1wbGVtZW50ZWQKKwlYRU5DRW5jcnlwdGlvbk1ldGhvZEltcGwoKTsKKwlYRU5DRW5jcnlwdGlvbk1ldGhvZEltcGwoY29uc3QgWEVOQ0VuY3J5cHRpb25NZXRob2RJbXBsICYpOworCVhFTkNFbmNyeXB0aW9uTWV0aG9kSW1wbCAmIG9wZXJhdG9yID0gKGNvbnN0IFhFTkNFbmNyeXB0aW9uTWV0aG9kSW1wbCAmKTsKKworCWNvbnN0IFhTRUNFbnYJCQkJKiBtcF9lbnY7CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQJCQkJCQorCQkJCQkJCQkqIG1wX2VuY3J5cHRpb25NZXRob2RFbGVtZW50OwkvLyBOb2RlIGF0IGhlYWQgb2Ygc3RydWN0dXJlCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUKKwkJCQkJCQkJKiBtcF9hbGdvcml0aG1BdHRyOworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlCQkJCQkKKwkJCQkJCQkJKiBtcF9kaWdlc3RBbGdvcml0aG1BdHRyOworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlCisJCQkJCQkJCSogbXBfb2FlcFBhcmFtc1RleHROb2RlOworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlCisJCQkJCQkJCSogbXBfa2V5U2l6ZVRleHROb2RlOworfTsKKworI2VuZGlmIC8qIFhFTkNFTkNSWVBUSU9OTUVUSE9ESU1QTF9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL1hLTVNBdXRoZW50aWNhdGlvbi5ocHAgYi9jL3NyYy94a21zL1hLTVNBdXRoZW50aWNhdGlvbi5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ2MDQ2NwotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvWEtNU0F1dGhlbnRpY2F0aW9uLmhwcApAQCAtMCwwICsxLDE1MiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU0F1dGhlbnRpY2F0aW9uIDo9IEludGVyZmFjZSBmb3IgVmFsaWRpdHlJbnRlcnZhbCBlbGVtZW50cworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYS01TQVVUSEVOVElDQVRJT05fSU5DTFVERQorI2RlZmluZSBYS01TQVVUSEVOVElDQVRJT05fSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdDb25zdGFudHMuaHBwPgorCitjbGFzcyBEU0lHU2lnbmF0dXJlOworY2xhc3MgWEtNU05vdEJvdW5kQXV0aGVudGljYXRpb247CisKKy8qKgorICogQGluZ3JvdXAgeGttcworICovCisKKy8qKgorICogQGJyaWVmIEludGVyZmFjZSBkZWZpbml0aW9uIGZvciB0aGUgQXV0aGVudGljYXRpb24gZWxlbWVudHMKKyAqCisgKiBUaGUgXDxBdXRoZW50aWNhdGlvblw+IEVsZW1lbnQgdXNlZCB3aXRoaW4gYSBudW1iZXIgb2YgWC1LUlNTIHJlcXVlc3RzCisgKiBhcyB0aGUgbWVjaGFuaXNtIGZvciBhdXRoZW50aWNhdGlvbiBhIHJlcXVlc3QgZnJvbSBhIGNsaWVudCB0byB0aGUgc2VydmVyCisgKgorICogSXQgY2FuIGNvbnRhaW4gZWl0aGVyIGEgc3RhbmRhcmQgWE1MLVNpZ25hdHVyZSBlbGVtZW50ICh2aWEgYSAKKyAqIEtleUJpbmRpbmdBdXRoZW50aWNhdGlvbiBlbGVtZW50KSBvciBhIHN0cmFpZ2h0IHBhc3N3b3JkIChub3Qgb3RoZXJ3aXNlCisgKiBwcm90ZWN0ZWQpLgorICoKKyAqIFRoZSBzY2hlbWEgZGVmaW5pdGlvbiBmb3IgVmFsaWRpdHlJbnRlcnZhbCBpcyBhcyBmb2xsb3dzIDoKKyAqCisgKiBcdmVyYmF0aW0KKyAgIDwhLS0gQXV0aGVudGljYXRpb24gLS0+CisgICA8ZWxlbWVudCBuYW1lPSJBdXRoZW50aWNhdGlvbiIgdHlwZT0ieGttczpBdXRoZW50aWNhdGlvblR5cGUiLz4KKyAgIDxjb21wbGV4VHlwZSBuYW1lPSJBdXRoZW50aWNhdGlvblR5cGUiPgorICAgICAgPHNlcXVlbmNlPgorICAgICAgICAgPGVsZW1lbnQgcmVmPSJ4a21zOktleUJpbmRpbmdBdXRoZW50aWNhdGlvbiIgbWluT2NjdXJzPSIwIi8+CisgICAgICAgICA8ZWxlbWVudCByZWY9InhrbXM6Tm90Qm91bmRBdXRoZW50aWNhdGlvbiIgbWluT2NjdXJzPSIwIi8+CisgICAgICA8L3NlcXVlbmNlPgorICAgPC9jb21wbGV4VHlwZT4KKyAgIDwhLS0gL0F1dGhlbnRpY2F0aW9uIC0tPgorXGVuZHZlcmJhdGltCisgKi8KKworY2xhc3MgWEtNU0F1dGhlbnRpY2F0aW9uIHsKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCitwcm90ZWN0ZWQ6CisKKwlYS01TQXV0aGVudGljYXRpb24oKSB7fTsKKworcHVibGljOgorCisJdmlydHVhbCB+WEtNU0F1dGhlbnRpY2F0aW9uKCkge307CisKKwkvL0B9CisKKwkvKiogQG5hbWUgR2V0IE1ldGhvZHMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IEtleUJpbmRpbmdBdXRoZW50aWNhdGlvbiBzaWduYXR1cmUgY29uc3RydWN0CisJICoKKwkgKiBBIFw8WEtNU0F1dGhlbnRpY2F0aW9uXD4gY2FuIGhhdmUgYSBcPEtleUJpbmRpbmdBdXRoZW50aWNhdGlvblw+CisJICogZWxlbWVudCBhcyBhbiBpbW1lZGlhdGUgY2hpbGQuICBUaGlzIGVsZW1lbnQgaXMgdXNlZCB0byBob2xkIGEgCisJICogWE1MLVNpZ25hdHVyZSBvdmVyIHRoZSBQcm90b3R5cGVLZXlCaW5kaW5nLgorCSAqCisJICogQHJldHVybiBUaGUgc2lnbmF0dXJlIGhlbGQgaW4gdGhlIEtleUJpbmRpbmdBdXRoZW50aWNhdGlvbiAtIG9yIE5VTEwKKwkgKiBpZiBub25lIGlzIHNldC4KKwkgKi8KKworCXZpcnR1YWwgRFNJR1NpZ25hdHVyZSAqIGdldEtleUJpbmRpbmdBdXRoZW50aWNhdGlvblNpZ25hdHVyZSh2b2lkKSBjb25zdCA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBOb3RCb3VuZEF1dGhlbnRpY2F0aW9uIHN0cnVjdHVyZQorCSAqCisJICogVGhlIE5vdEJvdW5kQXV0aGVudGljYXRpb24gZWxlbWVudCBpcyB1c2VkIHRvIHBhc3MgYSBwbGFpbnRleHQga2V5CisJICogYWxvbmcgd2l0aCB0aGUgcmVxdWVzdCBtZXNzYWdlIGFzIHRoZSBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc20uCisJICoKKwkgKiBAbm90ZSBUaGUgWEtNUyBTcGVjIGluZGljYXRlcyB0aGF0IHRoaXMgZWxlbWVudCBNVVNUIE5PVCBiZSB1c2VkIHVubGVzcworCSAqIHRoZXJlIGlzIGFub3RoZXIgZm9ybSBvZiBzZWN1cml0eSBiZWluZyB1c2VkIHRvIHdyYXAgdGhlIHJlcXVlc3RzIC0KKwkgKiBlLmcuIGF1dGhlbnRpY2F0ZWQgU1NMLgorCSAqCisJICogQHJldHVybiBUaGUgTm90Qm91bmRBdXRoZW50aWNhdGlvbiBzdHJ1Y3R1cmUgKG9yIE5VTEwgaWYgbm9uZSBpcyBkZWZpbmVkKQorCSAqLworCisJdmlydHVhbCBYS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbiAqIGdldE5vdEJvdW5kQXV0aGVudGljYXRpb24odm9pZCkgY29uc3QgPSAwOworCisJLy9AfQorCisJLyoqIEBuYW1lIFNldCBNZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIEFkZCBhIEtleUJpbmRpbmdBdXRoZW50aWNhdGlvbiBzaWduYXR1cmUgdG8gdGhlIG1lc3NhZ2UKKwkgKgorCSAqIEFsbG93cyB0aGUgYXBwbGljYXRpb24gdG8gYWRkIGEgbmV3IHNpZ25hdHVyZSBpbnRvIGEgCisJICogS2V5QmluZGluZ0F1dGhlbnRpY2F0aW9uIGVsZW1lbnQKKwkgKgorCSAqIEByZXR1cm5zIHRoZSBuZXcgU2lnbmF0dXJlIHN0cnVjdHVyZQorCSAqLworCisJdmlydHVhbCBEU0lHU2lnbmF0dXJlICogYWRkS2V5QmluZGluZ0F1dGhlbnRpY2F0aW9uU2lnbmF0dXJlKAorCQljYW5vbmljYWxpemF0aW9uTWV0aG9kIGNtID0gQ0FOT05fQzE0TkVfTk9DLAorCQlzaWduYXR1cmVNZXRob2QJc20gPSBTSUdOQVRVUkVfSE1BQywKKwkJaGFzaE1ldGhvZCBobSA9IEhBU0hfU0hBMSkgPSAwOworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUgTm90Qm91bmRBdXRoZW50aWNhdGlvbiB2YWx1ZQorCSAqCisJICogQWxsb3dzIGFwcGxpY2F0aW9ucyB0byBzZXQgYSBhdXRoZW50aWNhdGlvbiB2YWx1ZQorCSAqCisJICogQHBhcmFtIHVyaSBVUkkgZGVmaW5pbmcgdGhlIGF1dGhlbnRpY2F0aW9uIHByb3RvY29sCisJICogQHBhcmFtIHZhbHVlIEJhc2U2NCBlbmNvZGVkIHZhbHVlIHRvIHNldCBhcyB0aGUgYXV0aGVudGljYXRpb24gdmFsdWUKKwkgKi8KKworCXZpcnR1YWwgdm9pZCBzZXROb3RCb3VuZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFhNTENoICogdXJpLCBjb25zdCBYTUxDaCAqIHZhbHVlKSA9IDA7CisKKwkvL0B9CisKK3ByaXZhdGU6CisKKwkvLyBVbmltcGxlbWVudGVkCisJWEtNU0F1dGhlbnRpY2F0aW9uKGNvbnN0IFhLTVNBdXRoZW50aWNhdGlvbiAmKTsKKwlYS01TQXV0aGVudGljYXRpb24gJiBvcGVyYXRvciA9IChjb25zdCBYS01TQXV0aGVudGljYXRpb24gJik7CisKK307CisKKyNlbmRpZiAvKiBYS01TQVVUSEVOVElDQVRJT05fSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9YS01TQ29tcG91bmRSZXF1ZXN0LmhwcCBiL2Mvc3JjL3hrbXMvWEtNU0NvbXBvdW5kUmVxdWVzdC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTVlNWUxNQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvWEtNU0NvbXBvdW5kUmVxdWVzdC5ocHAKQEAgLTAsMCArMSwyMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNDb21wb3VuZFJlcXVlc3QgOj0gSW50ZXJmYWNlIGZvciBDb21wb3VuZFJlcXVlc3QgTWVzc2FnZXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEtNU0NPTVBPVU5EUkVRVUVTVF9JTkNMVURFCisjZGVmaW5lIFhLTVNDT01QT1VORFJFUVVFU1RfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlLmhwcD4KKworY2xhc3MgWEtNU0xvY2F0ZVJlcXVlc3Q7CitjbGFzcyBYS01TVmFsaWRhdGVSZXF1ZXN0OworY2xhc3MgWEtNU1JlZ2lzdGVyUmVxdWVzdDsKK2NsYXNzIFhLTVNSZXZva2VSZXF1ZXN0OworY2xhc3MgWEtNU1JlaXNzdWVSZXF1ZXN0OworY2xhc3MgWEtNU1JlY292ZXJSZXF1ZXN0OworCisvKioKKyAqIEBpbmdyb3VwIHhrbXMKKyAqLworCisvKioKKyAqIEBicmllZiBJbnRlcmZhY2UgZGVmaW5pdGlvbiBmb3IgdGhlIENvbXBvdW5kUmVxdWVzdCBlbGVtZW50cworICoKKyAqIFRoZSBcPENvbXBvdW5kUmVxdWVzdFw+IGlzIHVzZWQgdG8gbWVyZ2UgYSBudW1iZXIgb2Ygc2VwYXJhdGUgcmVxdWVzdHMKKyAqIGludG8gYSBzaW5nbGUgbWVzc2FnZS4gIEl0IGlzIGEgdmVyeSBzaW1wbGUgdHlwZSAtIHNpbXBseSBhIGhvbGRpbmcKKyAqIFJlcXVlc3QgdGhhdCBoYXMgYWxsIHRoZSBzdWItcmVxdWVzdHMgaGVsZCB3aXRoaW4gaXQuCisgKgorICogVGhlIHNjaGVtYSBkZWZpbml0aW9uIGZvciBDb21wb3VuZFJlcXVlc3QgaXMgYXMgZm9sbG93cyA6CisgKgorICogXHZlcmJhdGltCisgICA8IS0tIENvbXBvdW5kUmVxdWVzdCAtLT4KKyAgIDxlbGVtZW50IG5hbWU9IkNvbXBvdW5kUmVxdWVzdCIgdHlwZT0ieGttczpDb21wb3VuZFJlcXVlc3RUeXBlIi8+CisgICA8Y29tcGxleFR5cGUgbmFtZT0iQ29tcG91bmRSZXF1ZXN0VHlwZSI+CisgICAgICA8Y29tcGxleENvbnRlbnQ+CisgICAgICAgICA8ZXh0ZW5zaW9uIGJhc2U9InhrbXM6UmVxdWVzdEFic3RyYWN0VHlwZSI+CisgICAgICAgICAgICA8Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KKyAgICAgICAgICAgICAgIDxlbGVtZW50IHJlZj0ieGttczpMb2NhdGVSZXF1ZXN0Ii8+CisgICAgICAgICAgICAgICA8ZWxlbWVudCByZWY9InhrbXM6VmFsaWRhdGVSZXF1ZXN0Ii8+CisgICAgICAgICAgICAgICA8ZWxlbWVudCByZWY9InhrbXM6UmVnaXN0ZXJSZXF1ZXN0Ii8+CisgICAgICAgICAgICAgICA8ZWxlbWVudCByZWY9InhrbXM6UmVpc3N1ZVJlcXVlc3QiLz4KKyAgICAgICAgICAgICAgIDxlbGVtZW50IHJlZj0ieGttczpSZWNvdmVyUmVxdWVzdCIvPgorICAgICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJ4a21zOlJldm9rZVJlcXVlc3QiLz4KKyAgICAgICAgICAgIDwvY2hvaWNlPgorICAgICAgICAgPC9leHRlbnNpb24+CisgICAgICA8L2NvbXBsZXhDb250ZW50PgorICAgPC9jb21wbGV4VHlwZT4KKyAgIDwhLS0gL0NvbXBvdW5kUmVxdWVzdCAtLT4KK1xlbmR2ZXJiYXRpbQorICovCisKK2NsYXNzIFhLTVNDb21wb3VuZFJlcXVlc3QgOiBwdWJsaWMgWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGUgeworCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisKK3Byb3RlY3RlZDoKKworCVhLTVNDb21wb3VuZFJlcXVlc3QoKSB7fTsKKworcHVibGljOgorCisJdmlydHVhbCB+WEtNU0NvbXBvdW5kUmVxdWVzdCgpIHt9OworCisJLyoqIEBuYW1lIEdldHRlciBJbnRlcmZhY2UgTWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gdGhlIGVsZW1lbnQgYXQgdGhlIGJhc2Ugb2YgdGhlIG1lc3NhZ2UKKwkgKi8KKworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBnZXRFbGVtZW50KHZvaWQpIGNvbnN0ID0gMDsKKworCS8qKgorCSAqIFxicmllZiBPYnRhaW4gdGhlIG51bWJlciBvZiByZXF1ZXN0cyB3aXRoaW4gdGhlIGNvbXBvdW5kIHJlcXVlc3QKKwkgKgorCSAqIFRoaXMgY2xhc3MgaG9sZHMgYSBsaXN0IG9mIHJlcXVlc3RzIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIHVzaW5nIHRoZQorCSAqIGdldFJlcXVlc3RMaXN0SXRlbSBtZXRob2QuICBUaGlzIG1ldGhvZCBhbGxvd3MgYW4gYXBwbGljYXRpb24gdG8gZGV0ZXJtaW5lCisJICogaG93IG1hbnkgcmVxdWVzdCBpdGVtcyB0aGVyZSBhcmUuCisJICoKKwkgKiBAcmV0dXJucyBUaGUgc2l6ZSBvZiB0aGUgcmVxdWVzdCBsaXN0CisJICovCisKKwl2aXJ0dWFsIGludCBnZXRSZXF1ZXN0TGlzdFNpemUodm9pZCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIE9idGFpbiBhIHJlcXVlc3QgaXRlbQorCSAqIAorCSAqIE9idGFpbiBhIHBhcnRpY3VsYXIgcmVxdWVzdCBmcm9tIHRoZSBsaXN0IG9mIHJlcXVlc3RzIGhlbGQgaW4gdGhpcworCSAqIGNvbXBvdW5kIG9iamVjdAorCSAqCisJICogQHJldHVybnMgVGhlIG5vbWluYXRlZCBpdGVtCisJICovCisJIAorCSB2aXJ0dWFsIFhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlICogZ2V0UmVxdWVzdExpc3RJdGVtKGludCBpdGVtKSA9IDA7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgU2V0dGVyIEludGVyZmFjZSBNZXRob2RzICovCisJLy9AeworCisJLyoqIFxicmllZiBBZGQgYSBMb2NhdGVSZXF1ZXN0IGl0ZW0KKwkgKgorCSAqIEFwcGVuZHMgYSBMb2NhdGVSZXF1ZXN0IHRvIHRoZSBDb21wb3VuZFJlcXVlc3Qgb2JqZWN0IGFuZCByZXR1cm5zIHRoZSBuZXdseQorCSAqIGNyZWF0ZWQgb2JqZWN0CisJICoKKwkgKiBAcGFyYW0gc2VydmljZSBVUkkKKwkgKiBAcGFyYW0gaWQgVmFsdWUgdG8gc2V0IGluIHRoZSBJZCBmaWVsZC4gIElmIE5VTEwsIHRoZSBsaWJyYXJ5IHdpbGwKKwkgKiBnZW5lcmF0ZSBhIG5ldyBVbmlxdWUgSWQgdmFsdWUuCisJICogQHJldHVybnMgdGhlIG5ldyBYS01TTG9jYXRlUmVxdWVzdCBzdHJ1Y3R1cmUKKwkgKi8KKworCXZpcnR1YWwgWEtNU0xvY2F0ZVJlcXVlc3QgKiBjcmVhdGVMb2NhdGVSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKSA9IDA7CisKKwkvKiogXGJyaWVmIEFkZCBhIFZhbGlkYXRlUmVxdWVzdCBpdGVtCisJICoKKwkgKiBBcHBlbmRzIGEgVmFsaWRhdGVSZXF1ZXN0IHRvIHRoZSBDb21wb3VuZFJlcXVlc3Qgb2JqZWN0IGFuZCByZXR1cm5zIHRoZSBuZXdseQorCSAqIGNyZWF0ZWQgb2JqZWN0CisJICoKKwkgKiBAcGFyYW0gc2VydmljZSBVUkkKKwkgKiBAcGFyYW0gaWQgVmFsdWUgdG8gc2V0IGluIHRoZSBJZCBmaWVsZC4gIElmIE5VTEwsIHRoZSBsaWJyYXJ5IHdpbGwKKwkgKiBnZW5lcmF0ZSBhIG5ldyBVbmlxdWUgSWQgdmFsdWUuCisJICogQHJldHVybnMgdGhlIG5ldyBYS01TVmFsaWRhdGVSZXF1ZXN0IHN0cnVjdHVyZQorCSAqLworCisJdmlydHVhbCBYS01TVmFsaWRhdGVSZXF1ZXN0ICogY3JlYXRlVmFsaWRhdGVSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKSA9IDA7CisJIAorCS8qKiBcYnJpZWYgQWRkIGEgUmVnaXN0ZXJSZXF1ZXN0IGl0ZW0KKwkgKgorCSAqIEFwcGVuZHMgYSBSZWdpc3RlclJlcXVlc3QgdG8gdGhlIENvbXBvdW5kUmVxdWVzdCBvYmplY3QgYW5kIHJldHVybnMgdGhlIG5ld2x5CisJICogY3JlYXRlZCBvYmplY3QKKwkgKgorCSAqIEBwYXJhbSBzZXJ2aWNlIFVSSQorCSAqIEBwYXJhbSBpZCBWYWx1ZSB0byBzZXQgaW4gdGhlIElkIGZpZWxkLiAgSWYgTlVMTCwgdGhlIGxpYnJhcnkgd2lsbAorCSAqIGdlbmVyYXRlIGEgbmV3IFVuaXF1ZSBJZCB2YWx1ZS4KKwkgKiBAcmV0dXJucyB0aGUgbmV3IFhLTVNWYWxpZGF0ZVJlcXVlc3Qgc3RydWN0dXJlCisJICovCisKKwl2aXJ0dWFsIFhLTVNSZWdpc3RlclJlcXVlc3QgKiBjcmVhdGVSZWdpc3RlclJlcXVlc3QoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpID0gMDsKKworCS8qKiBcYnJpZWYgQWRkIGEgUmV2b2tlUmVxdWVzdCBpdGVtCisJICoKKwkgKiBBcHBlbmRzIGEgUmV2b2tlUmVxdWVzdCB0byB0aGUgQ29tcG91bmRSZXF1ZXN0IG9iamVjdCBhbmQgcmV0dXJucyB0aGUgbmV3bHkKKwkgKiBjcmVhdGVkIG9iamVjdAorCSAqCisJICogQHBhcmFtIHNlcnZpY2UgVVJJCisJICogQHBhcmFtIGlkIFZhbHVlIHRvIHNldCBpbiB0aGUgSWQgZmllbGQuICBJZiBOVUxMLCB0aGUgbGlicmFyeSB3aWxsCisJICogZ2VuZXJhdGUgYSBuZXcgVW5pcXVlIElkIHZhbHVlLgorCSAqIEByZXR1cm5zIHRoZSBuZXcgWEtNU1Jldm9rZVJlcXVlc3Qgc3RydWN0dXJlCisJICovCisKKwl2aXJ0dWFsIFhLTVNSZXZva2VSZXF1ZXN0ICogY3JlYXRlUmV2b2tlUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCkgPSAwOworCisJLyoqIFxicmllZiBBZGQgYSBSZWNvdmVyUmVxdWVzdCBpdGVtCisJICoKKwkgKiBBcHBlbmRzIGEgUmVjb3ZlclJlcXVlc3QgdG8gdGhlIENvbXBvdW5kUmVxdWVzdCBvYmplY3QgYW5kIHJldHVybnMgdGhlIG5ld2x5CisJICogY3JlYXRlZCBvYmplY3QKKwkgKgorCSAqIEBwYXJhbSBzZXJ2aWNlIFVSSQorCSAqIEBwYXJhbSBpZCBWYWx1ZSB0byBzZXQgaW4gdGhlIElkIGZpZWxkLiAgSWYgTlVMTCwgdGhlIGxpYnJhcnkgd2lsbAorCSAqIGdlbmVyYXRlIGEgbmV3IFVuaXF1ZSBJZCB2YWx1ZS4KKwkgKiBAcmV0dXJucyB0aGUgbmV3IFhLTVNSZWNvdmVyUmVxdWVzdCBzdHJ1Y3R1cmUKKwkgKi8KKworCXZpcnR1YWwgWEtNU1JlY292ZXJSZXF1ZXN0ICogY3JlYXRlUmVjb3ZlclJlcXVlc3QoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpID0gMDsKKworCS8qKiBcYnJpZWYgQWRkIGEgUmVpc3N1ZVJlcXVlc3QgaXRlbQorCSAqCisJICogQXBwZW5kcyBhIFJlaXNzdWVSZXF1ZXN0IHRvIHRoZSBDb21wb3VuZFJlcXVlc3Qgb2JqZWN0IGFuZCByZXR1cm5zIHRoZSBuZXdseQorCSAqIGNyZWF0ZWQgb2JqZWN0CisJICoKKwkgKiBAcGFyYW0gc2VydmljZSBVUkkKKwkgKiBAcGFyYW0gaWQgVmFsdWUgdG8gc2V0IGluIHRoZSBJZCBmaWVsZC4gIElmIE5VTEwsIHRoZSBsaWJyYXJ5IHdpbGwKKwkgKiBnZW5lcmF0ZSBhIG5ldyBVbmlxdWUgSWQgdmFsdWUuCisJICogQHJldHVybnMgdGhlIG5ldyBYS01TUmVpc3N1ZVJlcXVlc3Qgc3RydWN0dXJlCisJICovCisKKwl2aXJ0dWFsIFhLTVNSZWlzc3VlUmVxdWVzdCAqIGNyZWF0ZVJlaXNzdWVSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKSA9IDA7CisKKwkvL0B9CisKK3ByaXZhdGU6CisKKwkvLyBVbmltcGxlbWVudGVkCisJWEtNU0NvbXBvdW5kUmVxdWVzdChjb25zdCBYS01TQ29tcG91bmRSZXF1ZXN0ICYpOworCVhLTVNDb21wb3VuZFJlcXVlc3QgJiBvcGVyYXRvciA9IChjb25zdCBYS01TQ29tcG91bmRSZXF1ZXN0ICYpOworCit9OworCisjZW5kaWYgLyogWEtNU0NPTVBPVU5EUkVRVUVTVF9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL1hLTVNDb21wb3VuZFJlc3VsdC5ocHAgYi9jL3NyYy94a21zL1hLTVNDb21wb3VuZFJlc3VsdC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBjYzIyNAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvWEtNU0NvbXBvdW5kUmVzdWx0LmhwcApAQCAtMCwwICsxLDMxNCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU0NvbXBvdW5kUmVzdWx0IDo9IEludGVyZmFjZSBmb3IgQ29tcG91bmRSZXN1bHQgTWVzc2FnZXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEtNU0NPTVBPVU5EUkVTVUxUX0lOQ0xVREUKKyNkZWZpbmUgWEtNU0NPTVBPVU5EUkVTVUxUX0lOQ0xVREUKKworLy8gWFNFQyBJbmNsdWRlcworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TUmVzdWx0VHlwZS5ocHA+CisKK2NsYXNzIFhLTVNMb2NhdGVSZXN1bHQ7CitjbGFzcyBYS01TTG9jYXRlUmVxdWVzdDsKK2NsYXNzIFhLTVNWYWxpZGF0ZVJlc3VsdDsKK2NsYXNzIFhLTVNTdGF0dXNSZXN1bHQ7CitjbGFzcyBYS01TU3RhdHVzUmVxdWVzdDsKK2NsYXNzIFhLTVNWYWxpZGF0ZVJlcXVlc3Q7CitjbGFzcyBYS01TUmVnaXN0ZXJSZXF1ZXN0OworY2xhc3MgWEtNU1JlZ2lzdGVyUmVzdWx0OworY2xhc3MgWEtNU1Jldm9rZVJlcXVlc3Q7CitjbGFzcyBYS01TUmV2b2tlUmVzdWx0OworY2xhc3MgWEtNU1JlaXNzdWVSZXF1ZXN0OworY2xhc3MgWEtNU1JlaXNzdWVSZXN1bHQ7CitjbGFzcyBYS01TUmVjb3ZlclJlcXVlc3Q7CitjbGFzcyBYS01TUmVjb3ZlclJlc3VsdDsKK2NsYXNzIFhLTVNSZXN1bHQ7CitjbGFzcyBYS01TUmVxdWVzdEFic3RyYWN0VHlwZTsKKworLyoqCisgKiBAaW5ncm91cCB4a21zCisgKi8KKworLyoqCisgKiBAYnJpZWYgSW50ZXJmYWNlIGRlZmluaXRpb24gZm9yIHRoZSBDb21wb3VuZFJlc3VsdCBlbGVtZW50cworICoKKyAqIFRoZSBcPENvbXBvdW5kUmVzdWx0XD4gaXMgdXNlZCB0byBtZXJnZSBhIG51bWJlciBvZiBzZXBhcmF0ZSByZXF1ZXN0cworICogaW50byBhIHNpbmdsZSBtZXNzYWdlLiAgSXQgaXMgYSB2ZXJ5IHNpbXBsZSB0eXBlIC0gc2ltcGx5IGEgaG9sZGluZworICogUmVzdWx0IHRoYXQgaGFzIGFsbCB0aGUgc3ViLVJlc3VsdHMgaGVsZCB3aXRoaW4gaXQuCisgKgorICogVGhlIHNjaGVtYSBkZWZpbml0aW9uIGZvciBDb21wb3VuZFJlc3VsdCBpcyBhcyBmb2xsb3dzIDoKKyAqCisgKiBcdmVyYmF0aW0KKyAgIDwhLS0gQ29tcG91bmRSZXN1bHQgLS0+CisgICA8ZWxlbWVudCBuYW1lPSJDb21wb3VuZFJlc3VsdCIgdHlwZT0ieGttczpDb21wb3VuZFJlc3VsdFR5cGUiLz4KKyAgIDxjb21wbGV4VHlwZSBuYW1lPSJDb21wb3VuZFJlc3VsdFR5cGUiPgorICAgICAgPGNvbXBsZXhDb250ZW50PgorICAgICAgICAgPGV4dGVuc2lvbiBiYXNlPSJ4a21zOlJlc3VsdFR5cGUiPgorICAgICAgICAgICAgPGNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KKyAgICAgICAgICAgICAgIDxlbGVtZW50IHJlZj0ieGttczpMb2NhdGVSZXN1bHQiLz4KKyAgICAgICAgICAgICAgIDxlbGVtZW50IHJlZj0ieGttczpWYWxpZGF0ZVJlc3VsdCIvPgorICAgICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJ4a21zOlJlZ2lzdGVyUmVzdWx0Ii8+CisgICAgICAgICAgICAgICA8ZWxlbWVudCByZWY9InhrbXM6UmVpc3N1ZVJlc3VsdCIvPgorICAgICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJ4a21zOlJlY292ZXJSZXN1bHQiLz4KKyAgICAgICAgICAgICAgIDxlbGVtZW50IHJlZj0ieGttczpSZXZva2VSZXN1bHQiLz4KKyAgICAgICAgICAgIDwvY2hvaWNlPgorICAgICAgICAgPC9leHRlbnNpb24+CisgICAgICA8L2NvbXBsZXhDb250ZW50PgorICAgPC9jb21wbGV4VHlwZT4KKyAgIDwhLS0gL0NvbXBvdW5kUmVzdWx0IC0tPgorXGVuZHZlcmJhdGltCisgKi8KKworY2xhc3MgWEtNU0NvbXBvdW5kUmVzdWx0IDogcHVibGljIFhLTVNSZXN1bHRUeXBlIHsKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCitwcm90ZWN0ZWQ6CisKKwlYS01TQ29tcG91bmRSZXN1bHQoKSB7fTsKKworcHVibGljOgorCisJdmlydHVhbCB+WEtNU0NvbXBvdW5kUmVzdWx0KCkge307CisKKwkvKiogQG5hbWUgR2V0dGVyIEludGVyZmFjZSBNZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFJldHVybiB0aGUgZWxlbWVudCBhdCB0aGUgYmFzZSBvZiB0aGUgbWVzc2FnZQorCSAqLworCisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGdldEVsZW1lbnQodm9pZCkgY29uc3QgPSAwOworCisJLyoqCisJICogXGJyaWVmIE9idGFpbiB0aGUgbnVtYmVyIG9mIHJlc3VsdHMgd2l0aGluIHRoZSBjb21wb3VuZCByZXN1bHQKKwkgKgorCSAqIFRoaXMgY2xhc3MgaG9sZHMgYSBsaXN0IG9mIHJlc3VsdHMgdGhhdCBjYW4gYmUgYWNjZXNzZWQgdXNpbmcgdGhlCisJICogZ2V0UmVzdWx0TGlzdEl0ZW0gbWV0aG9kLiAgVGhpcyBtZXRob2QgYWxsb3dzIGFuIGFwcGxpY2F0aW9uIHRvIGRldGVybWluZQorCSAqIGhvdyBtYW55IHJlc3VsdCBpdGVtcyB0aGVyZSBhcmUuCisJICoKKwkgKiBAcmV0dXJucyBUaGUgc2l6ZSBvZiB0aGUgUmVzdWx0IGxpc3QKKwkgKi8KKworCXZpcnR1YWwgaW50IGdldFJlc3VsdExpc3RTaXplKHZvaWQpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBPYnRhaW4gYSBSZXN1bHQgaXRlbQorCSAqIAorCSAqIE9idGFpbiBhIHBhcnRpY3VsYXIgUmVzdWx0IGZyb20gdGhlIGxpc3Qgb2YgUmVzdWx0cyBoZWxkIGluIHRoaXMKKwkgKiBjb21wb3VuZCBvYmplY3QKKwkgKgorCSAqIEByZXR1cm5zIFRoZSBub21pbmF0ZWQgaXRlbQorCSAqLworCSAKKwkgdmlydHVhbCBYS01TUmVzdWx0VHlwZSAqIGdldFJlc3VsdExpc3RJdGVtKGludCBpdGVtKSA9IDA7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgU2V0dGVyIEludGVyZmFjZSBNZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIG5ldyBcPExvY2F0ZVJlc3VsdFw+IG1lc3NhZ2UuCisJICogCisJICogR2VuZXJhdGVzIGEgbmV3IExvY2F0ZVJlc3VsdCBtZXNzYWdlIGZyb20gc2NyYXRjaCwgYnVpbGRpbmcgdGhlIERPTQorCSAqIGFzIGl0IGdvZXMuICBUaGUgcmVzcG9uc2Ugd2lsbCBiZSBiYXNlZCBvbiBhIGlucHV0IExvY2F0ZVJlcXVlc3QgbWVzc2FnZQorCSAqIHdoaWNoIGlzIHVzZWQgdG8gcHJvdmlkZSBJZCBldGMuCisJICoKKwkgKiBAcGFyYW0gcmVxdWVzdCBSZXF1ZXN0IHRvIGJhc2UgcmVzcG9uc2Ugb24KKwkgKiBAcGFyYW0gaWQgVmFsdWUgdG8gc2V0IGluIHRoZSBJZCBmaWVsZC4gIElmIE5VTEwsIHRoZSBsaWJyYXJ5IHdpbGwKKyAgICAgKiBAcGFyYW0gcm1haiBNYWpvciByZXN1bHQgY29kZQorICAgICAqIEBwYXJhbSBybWluIE1pbm9yIHJlc3VsdCBjb2RlCisJICogZ2VuZXJhdGUgYSBuZXcgVW5pcXVlIElkIHZhbHVlLgorCSAqIEByZXR1cm5zIHRoZSBuZXcgWEtNU0xvY2F0ZVJlc3BvbnNlIHN0cnVjdHVyZQorCSAqLworCisJdmlydHVhbCBYS01TTG9jYXRlUmVzdWx0ICogY3JlYXRlTG9jYXRlUmVzdWx0KAorCQlYS01TTG9jYXRlUmVxdWVzdCAqIHJlcXVlc3QsCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNYWpvciBybWFqLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWlub3Igcm1pbiA9IFhLTVNSZXN1bHRUeXBlOjpOb25lTWlub3IsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIGEgbmV3IFw8VmFsaWRhdGVSZXN1bHRcPiBtZXNzYWdlLgorCSAqIAorCSAqIEdlbmVyYXRlcyBhIG5ldyBWYWxpZGF0ZVJlc3VsdCBtZXNzYWdlIGZyb20gc2NyYXRjaCwgYnVpbGRpbmcgdGhlIERPTQorCSAqIGFzIGl0IGdvZXMuICBUaGUgcmVzcG9uc2Ugd2lsbCBiZSBiYXNlZCBvbiBhIGlucHV0IFZhbGlkYXRlUmVxdWVzdCBtZXNzYWdlCisJICogd2hpY2ggaXMgdXNlZCB0byBwcm92aWRlIElkIGV0Yy4KKwkgKgorCSAqIEBwYXJhbSByZXF1ZXN0IFJlcXVlc3QgdG8gYmFzZSByZXNwb25zZSBvbgorCSAqIEBwYXJhbSBpZCBWYWx1ZSB0byBzZXQgaW4gdGhlIElkIGZpZWxkLiAgSWYgTlVMTCwgdGhlIGxpYnJhcnkgd2lsbAorICAgICAqIEBwYXJhbSBybWFqIE1ham9yIHJlc3VsdCBjb2RlCisgICAgICogQHBhcmFtIHJtaW4gTWlub3IgcmVzdWx0IGNvZGUKKwkgKiBnZW5lcmF0ZSBhIG5ldyBVbmlxdWUgSWQgdmFsdWUuCisJICogQHJldHVybnMgdGhlIG5ldyBYS01TTG9jYXRlUmVzcG9uc2Ugc3RydWN0dXJlCisJICovCisKKwl2aXJ0dWFsIFhLTVNWYWxpZGF0ZVJlc3VsdCAqIGNyZWF0ZVZhbGlkYXRlUmVzdWx0KAorCQlYS01TVmFsaWRhdGVSZXF1ZXN0ICogcmVxdWVzdCwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1ham9yIHJtYWosCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNaW5vciBybWluID0gWEtNU1Jlc3VsdFR5cGU6Ok5vbmVNaW5vciwKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBDcmVhdGUgYSBuZXcgXDxTdGF0dXNSZXN1bHRcPiBtZXNzYWdlLgorCSAqIAorCSAqIEdlbmVyYXRlcyBhIG5ldyBTdGF0dXNSZXN1bHQgbWVzc2FnZSBmcm9tIHNjcmF0Y2gsIGJ1aWxkaW5nIHRoZSBET00KKwkgKiBhcyBpdCBnb2VzLiAgVGhlIHJlc3BvbnNlIHdpbGwgYmUgYmFzZWQgb24gYSBpbnB1dCBTdGF0dXNSZXF1ZXN0IG1lc3NhZ2UKKwkgKiB3aGljaCBpcyB1c2VkIHRvIHByb3ZpZGUgSWQgZXRjLgorCSAqCisJICogQHBhcmFtIHJlcXVlc3QgUmVxdWVzdCB0byBiYXNlIHJlc3BvbnNlIG9uCisJICogQHBhcmFtIGlkIFZhbHVlIHRvIHNldCBpbiB0aGUgSWQgZmllbGQuICBJZiBOVUxMLCB0aGUgbGlicmFyeSB3aWxsCisgICAgICogQHBhcmFtIHJtYWogTWFqb3IgcmVzdWx0IGNvZGUKKyAgICAgKiBAcGFyYW0gcm1pbiBNaW5vciByZXN1bHQgY29kZQorCSAqIGdlbmVyYXRlIGEgbmV3IFVuaXF1ZSBJZCB2YWx1ZS4KKwkgKiBAcmV0dXJucyB0aGUgbmV3IFhLTVNTdGF0dXNSZXNwb25zZSBzdHJ1Y3R1cmUKKwkgKi8KKworCXZpcnR1YWwgWEtNU1N0YXR1c1Jlc3VsdCAqIGNyZWF0ZVN0YXR1c1Jlc3VsdCgKKwkJWEtNU1N0YXR1c1JlcXVlc3QgKiByZXF1ZXN0LAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWFqb3Igcm1haiwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIHJtaW4gPSBYS01TUmVzdWx0VHlwZTo6Tm9uZU1pbm9yLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCkgPSAwOworCQkKKworCS8qKgorCSAqIFxicmllZiBDcmVhdGUgYSBuZXcgXDxSZWdpc3RlclJlc3VsdFw+IG1lc3NhZ2UuCisJICogCisJICogR2VuZXJhdGVzIGEgbmV3IFJlZ2lzdGVyUmVzdWx0IG1lc3NhZ2UgZnJvbSBzY3JhdGNoLCBidWlsZGluZyB0aGUgRE9NCisJICogYXMgaXQgZ29lcy4gIFRoZSByZXNwb25zZSB3aWxsIGJlIGJhc2VkIG9uIGEgaW5wdXQgUmVnaXN0ZXJSZXF1ZXN0IG1lc3NhZ2UKKwkgKiB3aGljaCBpcyB1c2VkIHRvIHByb3ZpZGUgSWQgZXRjLgorCSAqCisJICogQHBhcmFtIHJlcXVlc3QgUmVxdWVzdCB0byBiYXNlIHJlc3BvbnNlIG9uCisJICogQHBhcmFtIGlkIFZhbHVlIHRvIHNldCBpbiB0aGUgSWQgZmllbGQuICBJZiBOVUxMLCB0aGUgbGlicmFyeSB3aWxsCisgICAgICogQHBhcmFtIHJtYWogTWFqb3IgcmVzdWx0IGNvZGUKKyAgICAgKiBAcGFyYW0gcm1pbiBNaW5vciByZXN1bHQgY29kZQorCSAqIGdlbmVyYXRlIGEgbmV3IFVuaXF1ZSBJZCB2YWx1ZS4KKwkgKiBAcmV0dXJucyB0aGUgbmV3IFhLTVNSZWdpc3RlclJlc3VsdCBzdHJ1Y3R1cmUKKwkgKi8KKworCXZpcnR1YWwgWEtNU1JlZ2lzdGVyUmVzdWx0ICogY3JlYXRlUmVnaXN0ZXJSZXN1bHQoCisJCVhLTVNSZWdpc3RlclJlcXVlc3QgKiByZXF1ZXN0LAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWFqb3Igcm1haiwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIHJtaW4gPSBYS01TUmVzdWx0VHlwZTo6Tm9uZU1pbm9yLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIG5ldyBcPFJldm9rZVJlc3VsdFw+IG1lc3NhZ2UuCisJICogCisJICogR2VuZXJhdGVzIGEgbmV3IFJldm9rZVJlc3VsdCBtZXNzYWdlIGZyb20gc2NyYXRjaCwgYnVpbGRpbmcgdGhlIERPTQorCSAqIGFzIGl0IGdvZXMuICBUaGUgcmVzcG9uc2Ugd2lsbCBiZSBiYXNlZCBvbiBhIGlucHV0IFJldm9rZVJlcXVlc3QgbWVzc2FnZQorCSAqIHdoaWNoIGlzIHVzZWQgdG8gcHJvdmlkZSBJZCBldGMuCisJICoKKwkgKiBAcGFyYW0gcmVxdWVzdCBSZXF1ZXN0IHRvIGJhc2UgcmVzcG9uc2Ugb24KKwkgKiBAcGFyYW0gaWQgVmFsdWUgdG8gc2V0IGluIHRoZSBJZCBmaWVsZC4gIElmIE5VTEwsIHRoZSBsaWJyYXJ5IHdpbGwKKyAgICAgKiBAcGFyYW0gcm1haiBNYWpvciByZXN1bHQgY29kZQorICAgICAqIEBwYXJhbSBybWluIE1pbm9yIHJlc3VsdCBjb2RlCisJICogZ2VuZXJhdGUgYSBuZXcgVW5pcXVlIElkIHZhbHVlLgorCSAqIEByZXR1cm5zIHRoZSBuZXcgWEtNU1Jldm9rZVJlc3VsdCBzdHJ1Y3R1cmUKKwkgKi8KKworCXZpcnR1YWwgWEtNU1Jldm9rZVJlc3VsdCAqIGNyZWF0ZVJldm9rZVJlc3VsdCgKKwkJWEtNU1Jldm9rZVJlcXVlc3QgKiByZXF1ZXN0LAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWFqb3Igcm1haiwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIHJtaW4gPSBYS01TUmVzdWx0VHlwZTo6Tm9uZU1pbm9yLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIG5ldyBcPFJlY292ZXJSZXN1bHRcPiBtZXNzYWdlLgorCSAqIAorCSAqIEdlbmVyYXRlcyBhIG5ldyBSZWNvdmVyUmVzdWx0IG1lc3NhZ2UgZnJvbSBzY3JhdGNoLCBidWlsZGluZyB0aGUgRE9NCisJICogYXMgaXQgZ29lcy4gIFRoZSByZXNwb25zZSB3aWxsIGJlIGJhc2VkIG9uIGEgaW5wdXQgUmV2b2tlUmVxdWVzdCBtZXNzYWdlCisJICogd2hpY2ggaXMgdXNlZCB0byBwcm92aWRlIElkIGV0Yy4KKwkgKgorCSAqIEBwYXJhbSByZXF1ZXN0IFJlcXVlc3QgdG8gYmFzZSByZXNwb25zZSBvbgorCSAqIEBwYXJhbSBpZCBWYWx1ZSB0byBzZXQgaW4gdGhlIElkIGZpZWxkLiAgSWYgTlVMTCwgdGhlIGxpYnJhcnkgd2lsbAorICAgICAqIEBwYXJhbSBybWFqIE1ham9yIHJlc3VsdCBjb2RlCisgICAgICogQHBhcmFtIHJtaW4gTWlub3IgcmVzdWx0IGNvZGUKKwkgKiBnZW5lcmF0ZSBhIG5ldyBVbmlxdWUgSWQgdmFsdWUuCisJICogQHJldHVybnMgdGhlIG5ldyBYS01TUmVjb3ZlclJlc3VsdCBzdHJ1Y3R1cmUKKwkgKi8KKworCXZpcnR1YWwgWEtNU1JlY292ZXJSZXN1bHQgKiBjcmVhdGVSZWNvdmVyUmVzdWx0KAorCQlYS01TUmVjb3ZlclJlcXVlc3QgKiByZXF1ZXN0LAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWFqb3Igcm1haiwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIHJtaW4gPSBYS01TUmVzdWx0VHlwZTo6Tm9uZU1pbm9yLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIG5ldyBcPFJlaXNzdWVSZXN1bHRcPiBtZXNzYWdlLgorCSAqIAorCSAqIEdlbmVyYXRlcyBhIG5ldyBSZWlzc3VlUmVzdWx0IG1lc3NhZ2UgZnJvbSBzY3JhdGNoLCBidWlsZGluZyB0aGUgRE9NCisJICogYXMgaXQgZ29lcy4gIFRoZSByZXNwb25zZSB3aWxsIGJlIGJhc2VkIG9uIGEgaW5wdXQgUmV2b2tlUmVxdWVzdCBtZXNzYWdlCisJICogd2hpY2ggaXMgdXNlZCB0byBwcm92aWRlIElkIGV0Yy4KKwkgKgorCSAqIEBwYXJhbSByZXF1ZXN0IFJlcXVlc3QgdG8gYmFzZSByZXNwb25zZSBvbgorCSAqIEBwYXJhbSBpZCBWYWx1ZSB0byBzZXQgaW4gdGhlIElkIGZpZWxkLiAgSWYgTlVMTCwgdGhlIGxpYnJhcnkgd2lsbAorICAgICAqIEBwYXJhbSBybWFqIE1ham9yIHJlc3VsdCBjb2RlCisgICAgICogQHBhcmFtIHJtaW4gTWlub3IgcmVzdWx0IGNvZGUKKwkgKiBnZW5lcmF0ZSBhIG5ldyBVbmlxdWUgSWQgdmFsdWUuCisJICogQHJldHVybnMgdGhlIG5ldyBYS01TUmVpc3N1ZVJlc3VsdCBzdHJ1Y3R1cmUKKwkgKi8KKworCXZpcnR1YWwgWEtNU1JlaXNzdWVSZXN1bHQgKiBjcmVhdGVSZWlzc3VlUmVzdWx0KAorCQlYS01TUmVpc3N1ZVJlcXVlc3QgKiByZXF1ZXN0LAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWFqb3Igcm1haiwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIHJtaW4gPSBYS01TUmVzdWx0VHlwZTo6Tm9uZU1pbm9yLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIG5ldyBcPFJlc3VsdFw+IG1lc3NhZ2UuCisJICogCisJICogR2VuZXJhdGVzIGEgbmV3IFJlc3VsdCBtZXNzYWdlIGZyb20gc2NyYXRjaCwgYnVpbGRpbmcgdGhlIERPTQorCSAqIGFzIGl0IGdvZXMuICBUaGUgcmVzcG9uc2Ugd2lsbCBiZSBiYXNlZCBvbiBhbiBpbnB1dCBSZXF1ZXN0IG1lc3NhZ2UKKwkgKiB3aGljaCBpcyB1c2VkIHRvIHByb3ZpZGUgSWQgZXRjLgorCSAqCisJICogQHBhcmFtIHJlcXVlc3QgUmVxdWVzdCB0byBiYXNlIHJlc3BvbnNlIG9uCisJICogQHBhcmFtIGlkIFZhbHVlIHRvIHNldCBpbiB0aGUgSWQgZmllbGQuICBJZiBOVUxMLCB0aGUgbGlicmFyeSB3aWxsCisgICAgICogQHBhcmFtIHJtYWogTWFqb3IgcmVzdWx0IGNvZGUKKyAgICAgKiBAcGFyYW0gcm1pbiBNaW5vciByZXN1bHQgY29kZQorCSAqIGdlbmVyYXRlIGEgbmV3IFVuaXF1ZSBJZCB2YWx1ZS4KKwkgKiBAcmV0dXJucyB0aGUgbmV3IFhLTVNSZXN1bHQgc3RydWN0dXJlCisJICovCisKKwl2aXJ0dWFsIFhLTVNSZXN1bHQgKiBjcmVhdGVSZXN1bHQoCisJCVhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlICogcmVxdWVzdCwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1ham9yIHJtYWosCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNaW5vciBybWluID0gWEtNU1Jlc3VsdFR5cGU6Ok5vbmVNaW5vciwKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpID0gMDsKKwkgCisJIC8vQH0KKworcHJpdmF0ZToKKworCS8vIFVuaW1wbGVtZW50ZWQKKwlYS01TQ29tcG91bmRSZXN1bHQoY29uc3QgWEtNU0NvbXBvdW5kUmVzdWx0ICYpOworCVhLTVNDb21wb3VuZFJlc3VsdCAmIG9wZXJhdG9yID0gKGNvbnN0IFhLTVNDb21wb3VuZFJlc3VsdCAmKTsKKworfTsKKworI2VuZGlmIC8qIFhLTVNDT01QT1VORFJFU1VMVF9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL1hLTVNDb25zdGFudHMuY3BwIGIvYy9zcmMveGttcy9YS01TQ29uc3RhbnRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjM5MzY4Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9YS01TQ29uc3RhbnRzLmNwcApAQCAtMCwwICsxLDE4MjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMi0yMDEwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNDb25zdGFudHMgOj0gRGVmaW5pdGlvbnMgb2YgdmFyaXVzIFhLTVNjb25zdGFudHMgKG1haW5seSBzdHJpbmdzKQorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMveGttcy9YS01TQ29uc3RhbnRzLmhwcD4KKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxVbmlEZWZzLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MU3RyaW5nLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdGFudCBTdHJpbmdzIFN0b3JhZ2UKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NvbnN0IFhNTENoICogWEtNU0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWEtNUzsKK2NvbnN0IFhNTENoICogWEtNU0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJU09BUDExOworY29uc3QgWE1MQ2ggKiBYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklTT0FQMTI7CisKKy8vIE5PVEUgQWxsIHRhZ3MgYXJlIHVuaWNvZGUgKFVURi0xNikgLSBidXQgYXJlIG5vdCBtYXJrZWQgYXMgc3VjaAorCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ0FwcGxpY2F0aW9uW10gPSB7CisKKwljaExhdGluX0EsCisJY2hMYXRpbl9wLAorCWNoTGF0aW5fcCwKKwljaExhdGluX2wsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fYywKKwljaExhdGluX2EsCisJY2hMYXRpbl90LAorCWNoTGF0aW5faSwKKwljaExhdGluX28sCisJY2hMYXRpbl9uLAorCWNoTnVsbAorfTsKKworY29uc3QgWE1MQ2ggWEtNU0NvbnN0YW50czo6c190YWdBdXRoZW50aWNhdGlvbltdID0geworCisJY2hMYXRpbl9BLAorCWNoTGF0aW5fdSwKKwljaExhdGluX3QsCisJY2hMYXRpbl9oLAorCWNoTGF0aW5fZSwKKwljaExhdGluX24sCisJY2hMYXRpbl90LAorCWNoTGF0aW5faSwKKwljaExhdGluX2MsCisJY2hMYXRpbl9hLAorCWNoTGF0aW5fdCwKKwljaExhdGluX2ksCisJY2hMYXRpbl9vLAorCWNoTGF0aW5fbiwKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnQ29tcG91bmRSZXF1ZXN0W10gPSB7CisKKwljaExhdGluX0MsCisJY2hMYXRpbl9vLAorCWNoTGF0aW5fbSwKKwljaExhdGluX3AsCisJY2hMYXRpbl9vLAorCWNoTGF0aW5fdSwKKwljaExhdGluX24sCisJY2hMYXRpbl9kLAorCWNoTGF0aW5fUiwKKwljaExhdGluX2UsCisJY2hMYXRpbl9xLAorCWNoTGF0aW5fdSwKKwljaExhdGluX2UsCisJY2hMYXRpbl9zLAorCWNoTGF0aW5fdCwKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnQ29tcG91bmRSZXN1bHRbXSA9IHsKKworCWNoTGF0aW5fQywKKwljaExhdGluX28sCisJY2hMYXRpbl9tLAorCWNoTGF0aW5fcCwKKwljaExhdGluX28sCisJY2hMYXRpbl91LAorCWNoTGF0aW5fbiwKKwljaExhdGluX2QsCisJY2hMYXRpbl9SLAorCWNoTGF0aW5fZSwKKwljaExhdGluX3MsCisJY2hMYXRpbl91LAorCWNoTGF0aW5fbCwKKwljaExhdGluX3QsCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ0RbXSA9IHsKKworCWNoTGF0aW5fRCwKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnRFBbXSA9IHsKKworCWNoTGF0aW5fRCwKKwljaExhdGluX1AsCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ0RRW10gPSB7CisKKwljaExhdGluX0QsCisJY2hMYXRpbl9RLAorCWNoTnVsbAorfTsKKworY29uc3QgWE1MQ2ggWEtNU0NvbnN0YW50czo6c190YWdFbmNyeXB0aW9uW10gPSB7CisKKwljaExhdGluX0UsCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fYywKKwljaExhdGluX3IsCisJY2hMYXRpbl95LAorCWNoTGF0aW5fcCwKKwljaExhdGluX3QsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fbywKKwljaExhdGluX24sCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ0V4Y2hhbmdlW10gPSB7CisKKwljaExhdGluX0UsCisJY2hMYXRpbl94LAorCWNoTGF0aW5fYywKKwljaExhdGluX2gsCisJY2hMYXRpbl9hLAorCWNoTGF0aW5fbiwKKwljaExhdGluX2csCisJY2hMYXRpbl9lLAorCWNoTnVsbAorfTsKKworY29uc3QgWE1MQ2ggWEtNU0NvbnN0YW50czo6c190YWdFeHBvbmVudFtdID0geworCisJY2hMYXRpbl9FLAorCWNoTGF0aW5feCwKKwljaExhdGluX3AsCisJY2hMYXRpbl9vLAorCWNoTGF0aW5fbiwKKwljaExhdGluX2UsCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fdCwKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnRmFpbHVyZVtdID0geworCisJY2hMYXRpbl9GLAorCWNoTGF0aW5fYSwKKwljaExhdGluX2ksCisJY2hMYXRpbl9sLAorCWNoTGF0aW5fdSwKKwljaExhdGluX3IsCisJY2hMYXRpbl9lLAorCWNoTnVsbAorfTsKKworY29uc3QgWE1MQ2ggWEtNU0NvbnN0YW50czo6c190YWdJZFtdID0geworCisJY2hMYXRpbl9JLAorCWNoTGF0aW5fZCwKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnSWRlbnRpZmllcltdID0geworCisJY2hMYXRpbl9JLAorCWNoTGF0aW5fZCwKKwljaExhdGluX2UsCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fdCwKKwljaExhdGluX2ksCisJY2hMYXRpbl9mLAorCWNoTGF0aW5faSwKKwljaExhdGluX2UsCisJY2hMYXRpbl9yLAorCWNoTnVsbAorfTsKKworY29uc3QgWE1MQ2ggWEtNU0NvbnN0YW50czo6c190YWdJbnZhbGlkUmVhc29uW10gPSB7CisKKwljaExhdGluX0ksCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fdiwKKwljaExhdGluX2EsCisJY2hMYXRpbl9sLAorCWNoTGF0aW5faSwKKwljaExhdGluX2QsCisJY2hMYXRpbl9SLAorCWNoTGF0aW5fZSwKKwljaExhdGluX2EsCisJY2hMYXRpbl9zLAorCWNoTGF0aW5fbywKKwljaExhdGluX24sCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ0ludmVyc2VRW10gPSB7CisKKwljaExhdGluX0ksCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fdiwKKwljaExhdGluX2UsCisJY2hMYXRpbl9yLAorCWNoTGF0aW5fcywKKwljaExhdGluX2UsCisJY2hMYXRpbl9RLAorCWNoTnVsbAorfTsKKworY29uc3QgWE1MQ2ggWEtNU0NvbnN0YW50czo6c190YWdJbmRldGVybWluYXRlUmVhc29uW10gPSB7CisKKwljaExhdGluX0ksCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fZCwKKwljaExhdGluX2UsCisJY2hMYXRpbl90LAorCWNoTGF0aW5fZSwKKwljaExhdGluX3IsCisJY2hMYXRpbl9tLAorCWNoTGF0aW5faSwKKwljaExhdGluX24sCisJY2hMYXRpbl9hLAorCWNoTGF0aW5fdCwKKwljaExhdGluX2UsCisJY2hMYXRpbl9SLAorCWNoTGF0aW5fZSwKKwljaExhdGluX2EsCisJY2hMYXRpbl9zLAorCWNoTGF0aW5fbywKKwljaExhdGluX24sCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ0tleUJpbmRpbmdbXSA9IHsKKworCWNoTGF0aW5fSywKKwljaExhdGluX2UsCisJY2hMYXRpbl95LAorCWNoTGF0aW5fQiwKKwljaExhdGluX2ksCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fZCwKKwljaExhdGluX2ksCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fZywKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnS2V5QmluZGluZ0F1dGhlbnRpY2F0aW9uW10gPSB7CisKKwljaExhdGluX0ssCisJY2hMYXRpbl9lLAorCWNoTGF0aW5feSwKKwljaExhdGluX0IsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fbiwKKwljaExhdGluX2QsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fbiwKKwljaExhdGluX2csCisJY2hMYXRpbl9BLAorCWNoTGF0aW5fdSwKKwljaExhdGluX3QsCisJY2hMYXRpbl9oLAorCWNoTGF0aW5fZSwKKwljaExhdGluX24sCisJY2hMYXRpbl90LAorCWNoTGF0aW5faSwKKwljaExhdGluX2MsCisJY2hMYXRpbl9hLAorCWNoTGF0aW5fdCwKKwljaExhdGluX2ksCisJY2hMYXRpbl9vLAorCWNoTGF0aW5fbiwKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnS2V5SW5mb1tdID0geworCisJY2hMYXRpbl9LLAorCWNoTGF0aW5fZSwKKwljaExhdGluX3ksCisJY2hMYXRpbl9JLAorCWNoTGF0aW5fbiwKKwljaExhdGluX2YsCisJY2hMYXRpbl9vLAorCWNoTnVsbAorfTsKKworY29uc3QgWE1MQ2ggWEtNU0NvbnN0YW50czo6c190YWdLZXlOYW1lW10gPSB7CisKKwljaExhdGluX0ssCisJY2hMYXRpbl9lLAorCWNoTGF0aW5feSwKKwljaExhdGluX04sCisJY2hMYXRpbl9hLAorCWNoTGF0aW5fbSwKKwljaExhdGluX2UsCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ0tleVVzYWdlW10gPSB7CisKKwljaExhdGluX0ssCisJY2hMYXRpbl9lLAorCWNoTGF0aW5feSwKKwljaExhdGluX1UsCisJY2hMYXRpbl9zLAorCWNoTGF0aW5fYSwKKwljaExhdGluX2csCisJY2hMYXRpbl9lLAorCWNoTnVsbAorfTsKKworY29uc3QgWE1MQ2ggWEtNU0NvbnN0YW50czo6c190YWdLZXlWYWx1ZVtdID0geworCisJY2hMYXRpbl9LLAorCWNoTGF0aW5fZSwKKwljaExhdGluX3ksCisJY2hMYXRpbl9WLAorCWNoTGF0aW5fYSwKKwljaExhdGluX2wsCisJY2hMYXRpbl91LAorCWNoTGF0aW5fZSwKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnTG9jYXRlUmVxdWVzdFtdID0geworCisJY2hMYXRpbl9MLAorCWNoTGF0aW5fbywKKwljaExhdGluX2MsCisJY2hMYXRpbl9hLAorCWNoTGF0aW5fdCwKKwljaExhdGluX2UsCisJY2hMYXRpbl9SLAorCWNoTGF0aW5fZSwKKwljaExhdGluX3EsCisJY2hMYXRpbl91LAorCWNoTGF0aW5fZSwKKwljaExhdGluX3MsCisJY2hMYXRpbl90LAorCWNoTnVsbAorfTsKKworY29uc3QgWE1MQ2ggWEtNU0NvbnN0YW50czo6c190YWdMb2NhdGVSZXN1bHRbXSA9IHsKKworCWNoTGF0aW5fTCwKKwljaExhdGluX28sCisJY2hMYXRpbl9jLAorCWNoTGF0aW5fYSwKKwljaExhdGluX3QsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fUiwKKwljaExhdGluX2UsCisJY2hMYXRpbl9zLAorCWNoTGF0aW5fdSwKKwljaExhdGluX2wsCisJY2hMYXRpbl90LAorCWNoTnVsbAorfTsKKworY29uc3QgWE1MQ2ggWEtNU0NvbnN0YW50czo6c190YWdNZXNzYWdlRXh0ZW5zaW9uW10gPSB7CisKKwljaExhdGluX00sCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fcywKKwljaExhdGluX3MsCisJY2hMYXRpbl9hLAorCWNoTGF0aW5fZywKKwljaExhdGluX2UsCisJY2hMYXRpbl9FLAorCWNoTGF0aW5feCwKKwljaExhdGluX3QsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fbiwKKwljaExhdGluX3MsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fbywKKwljaExhdGluX24sCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ01vZHVsdXNbXSA9IHsKKworCWNoTGF0aW5fTSwKKwljaExhdGluX28sCisJY2hMYXRpbl9kLAorCWNoTGF0aW5fdSwKKwljaExhdGluX2wsCisJY2hMYXRpbl91LAorCWNoTGF0aW5fcywKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnTm9uY2VbXSA9IHsKKworCWNoTGF0aW5fTiwKKwljaExhdGluX28sCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fYywKKwljaExhdGluX2UsCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ05vdEJvdW5kQXV0aGVudGljYXRpb25bXSA9IHsKKworCWNoTGF0aW5fTiwKKwljaExhdGluX28sCisJY2hMYXRpbl90LAorCWNoTGF0aW5fQiwKKwljaExhdGluX28sCisJY2hMYXRpbl91LAorCWNoTGF0aW5fbiwKKwljaExhdGluX2QsCisJY2hMYXRpbl9BLAorCWNoTGF0aW5fdSwKKwljaExhdGluX3QsCisJY2hMYXRpbl9oLAorCWNoTGF0aW5fZSwKKwljaExhdGluX24sCisJY2hMYXRpbl90LAorCWNoTGF0aW5faSwKKwljaExhdGluX2MsCisJY2hMYXRpbl9hLAorCWNoTGF0aW5fdCwKKwljaExhdGluX2ksCisJY2hMYXRpbl9vLAorCWNoTGF0aW5fbiwKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnTm90QmVmb3JlW10gPSB7CisKKwljaExhdGluX04sCisJY2hMYXRpbl9vLAorCWNoTGF0aW5fdCwKKwljaExhdGluX0IsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fZiwKKwljaExhdGluX28sCisJY2hMYXRpbl9yLAorCWNoTGF0aW5fZSwKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnTm90T25PckFmdGVyW10gPSB7CisKKwljaExhdGluX04sCisJY2hMYXRpbl9vLAorCWNoTGF0aW5fdCwKKwljaExhdGluX08sCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fTywKKwljaExhdGluX3IsCisJY2hMYXRpbl9BLAorCWNoTGF0aW5fZiwKKwljaExhdGluX3QsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fciwKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnT3BhcXVlQ2xpZW50RGF0YVtdID0geworCisJY2hMYXRpbl9PLAorCWNoTGF0aW5fcCwKKwljaExhdGluX2EsCisJY2hMYXRpbl9xLAorCWNoTGF0aW5fdSwKKwljaExhdGluX2UsCisJY2hMYXRpbl9DLAorCWNoTGF0aW5fbCwKKwljaExhdGluX2ksCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fbiwKKwljaExhdGluX3QsCisJY2hMYXRpbl9ELAorCWNoTGF0aW5fYSwKKwljaExhdGluX3QsCisJY2hMYXRpbl9hLAorCWNoTnVsbAorfTsKKworY29uc3QgWE1MQ2ggWEtNU0NvbnN0YW50czo6c190YWdPcGFxdWVEYXRhW10gPSB7CisKKwljaExhdGluX08sCisJY2hMYXRpbl9wLAorCWNoTGF0aW5fYSwKKwljaExhdGluX3EsCisJY2hMYXRpbl91LAorCWNoTGF0aW5fZSwKKwljaExhdGluX0QsCisJY2hMYXRpbl9hLAorCWNoTGF0aW5fdCwKKwljaExhdGluX2EsCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ09yaWdpbmFsUmVxdWVzdElkW10gPSB7CisKKwljaExhdGluX08sCisJY2hMYXRpbl9yLAorCWNoTGF0aW5faSwKKwljaExhdGluX2csCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fbiwKKwljaExhdGluX2EsCisJY2hMYXRpbl9sLAorCWNoTGF0aW5fUiwKKwljaExhdGluX2UsCisJY2hMYXRpbl9xLAorCWNoTGF0aW5fdSwKKwljaExhdGluX2UsCisJY2hMYXRpbl9zLAorCWNoTGF0aW5fdCwKKwljaExhdGluX0ksCisJY2hMYXRpbl9kLAorCWNoTnVsbAorfTsKKworY29uc3QgWE1MQ2ggWEtNU0NvbnN0YW50czo6c190YWdQW10gPSB7CisKKwljaExhdGluX1AsCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ1BlbmRpbmdbXSA9IHsKKworCWNoTGF0aW5fUCwKKwljaExhdGluX2UsCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fZCwKKwljaExhdGluX2ksCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fZywKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnUGVuZGluZ1JlcXVlc3RbXSA9IHsKKworCWNoTGF0aW5fUCwKKwljaExhdGluX2UsCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fZCwKKwljaExhdGluX2ksCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fZywKKwljaExhdGluX1IsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fcSwKKwljaExhdGluX3UsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fcywKKwljaExhdGluX3QsCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ1ByaXZhdGVLZXlbXSA9IHsKKworCWNoTGF0aW5fUCwKKwljaExhdGluX3IsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fdiwKKwljaExhdGluX2EsCisJY2hMYXRpbl90LAorCWNoTGF0aW5fZSwKKwljaExhdGluX0ssCisJY2hMYXRpbl9lLAorCWNoTGF0aW5feSwKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnUHJvb2ZPZlBvc3Nlc3Npb25bXSA9IHsKKworCWNoTGF0aW5fUCwKKwljaExhdGluX3IsCisJY2hMYXRpbl9vLAorCWNoTGF0aW5fbywKKwljaExhdGluX2YsCisJY2hMYXRpbl9PLAorCWNoTGF0aW5fZiwKKwljaExhdGluX1AsCisJY2hMYXRpbl9vLAorCWNoTGF0aW5fcywKKwljaExhdGluX3MsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fcywKKwljaExhdGluX3MsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fbywKKwljaExhdGluX24sCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ1Byb3RvY29sW10gPSB7CisKKwljaExhdGluX1AsCisJY2hMYXRpbl9yLAorCWNoTGF0aW5fbywKKwljaExhdGluX3QsCisJY2hMYXRpbl9vLAorCWNoTGF0aW5fYywKKwljaExhdGluX28sCisJY2hMYXRpbl9sLAorCWNoTnVsbAorfTsKKworY29uc3QgWE1MQ2ggWEtNU0NvbnN0YW50czo6c190YWdQcm90b3R5cGVLZXlCaW5kaW5nW10gPSB7CisKKwljaExhdGluX1AsCisJY2hMYXRpbl9yLAorCWNoTGF0aW5fbywKKwljaExhdGluX3QsCisJY2hMYXRpbl9vLAorCWNoTGF0aW5fdCwKKwljaExhdGluX3ksCisJY2hMYXRpbl9wLAorCWNoTGF0aW5fZSwKKwljaExhdGluX0ssCisJY2hMYXRpbl9lLAorCWNoTGF0aW5feSwKKwljaExhdGluX0IsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fbiwKKwljaExhdGluX2QsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fbiwKKwljaExhdGluX2csCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ1FbXSA9IHsKKworCWNoTGF0aW5fUSwKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnUXVlcnlLZXlCaW5kaW5nW10gPSB7CisKKwljaExhdGluX1EsCisJY2hMYXRpbl91LAorCWNoTGF0aW5fZSwKKwljaExhdGluX3IsCisJY2hMYXRpbl95LAorCWNoTGF0aW5fSywKKwljaExhdGluX2UsCisJY2hMYXRpbl95LAorCWNoTGF0aW5fQiwKKwljaExhdGluX2ksCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fZCwKKwljaExhdGluX2ksCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fZywKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnUmVjb3ZlcktleUJpbmRpbmdbXSA9IHsKKworCWNoTGF0aW5fUiwKKwljaExhdGluX2UsCisJY2hMYXRpbl9jLAorCWNoTGF0aW5fbywKKwljaExhdGluX3YsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fciwKKwljaExhdGluX0ssCisJY2hMYXRpbl9lLAorCWNoTGF0aW5feSwKKwljaExhdGluX0IsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fbiwKKwljaExhdGluX2QsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fbiwKKwljaExhdGluX2csCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ1JlY292ZXJSZXF1ZXN0W10gPSB7CisKKwljaExhdGluX1IsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fYywKKwljaExhdGluX28sCisJY2hMYXRpbl92LAorCWNoTGF0aW5fZSwKKwljaExhdGluX3IsCisJY2hMYXRpbl9SLAorCWNoTGF0aW5fZSwKKwljaExhdGluX3EsCisJY2hMYXRpbl91LAorCWNoTGF0aW5fZSwKKwljaExhdGluX3MsCisJY2hMYXRpbl90LAorCWNoTnVsbAorfTsKKworY29uc3QgWE1MQ2ggWEtNU0NvbnN0YW50czo6c190YWdSZWNvdmVyUmVzdWx0W10gPSB7CisKKwljaExhdGluX1IsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fYywKKwljaExhdGluX28sCisJY2hMYXRpbl92LAorCWNoTGF0aW5fZSwKKwljaExhdGluX3IsCisJY2hMYXRpbl9SLAorCWNoTGF0aW5fZSwKKwljaExhdGluX3MsCisJY2hMYXRpbl91LAorCWNoTGF0aW5fbCwKKwljaExhdGluX3QsCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ1JlZ2lzdGVyUmVxdWVzdFtdID0geworCisJY2hMYXRpbl9SLAorCWNoTGF0aW5fZSwKKwljaExhdGluX2csCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fcywKKwljaExhdGluX3QsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fciwKKwljaExhdGluX1IsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fcSwKKwljaExhdGluX3UsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fcywKKwljaExhdGluX3QsCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ1JlZ2lzdGVyUmVzdWx0W10gPSB7CisKKwljaExhdGluX1IsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fZywKKwljaExhdGluX2ksCisJY2hMYXRpbl9zLAorCWNoTGF0aW5fdCwKKwljaExhdGluX2UsCisJY2hMYXRpbl9yLAorCWNoTGF0aW5fUiwKKwljaExhdGluX2UsCisJY2hMYXRpbl9zLAorCWNoTGF0aW5fdSwKKwljaExhdGluX2wsCisJY2hMYXRpbl90LAorCWNoTnVsbAorfTsKKworY29uc3QgWE1MQ2ggWEtNU0NvbnN0YW50czo6c190YWdSZWlzc3VlS2V5QmluZGluZ1tdID0geworCisJY2hMYXRpbl9SLAorCWNoTGF0aW5fZSwKKwljaExhdGluX2ksCisJY2hMYXRpbl9zLAorCWNoTGF0aW5fcywKKwljaExhdGluX3UsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fSywKKwljaExhdGluX2UsCisJY2hMYXRpbl95LAorCWNoTGF0aW5fQiwKKwljaExhdGluX2ksCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fZCwKKwljaExhdGluX2ksCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fZywKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnUmVpc3N1ZVJlcXVlc3RbXSA9IHsKKworCWNoTGF0aW5fUiwKKwljaExhdGluX2UsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fcywKKwljaExhdGluX3MsCisJY2hMYXRpbl91LAorCWNoTGF0aW5fZSwKKwljaExhdGluX1IsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fcSwKKwljaExhdGluX3UsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fcywKKwljaExhdGluX3QsCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ1JlaXNzdWVSZXN1bHRbXSA9IHsKKworCWNoTGF0aW5fUiwKKwljaExhdGluX2UsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fcywKKwljaExhdGluX3MsCisJY2hMYXRpbl91LAorCWNoTGF0aW5fZSwKKwljaExhdGluX1IsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fcywKKwljaExhdGluX3UsCisJY2hMYXRpbl9sLAorCWNoTGF0aW5fdCwKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnUmVwcmVzZW50W10gPSB7CisKKwljaExhdGluX1IsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fcCwKKwljaExhdGluX3IsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fcywKKwljaExhdGluX2UsCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fdCwKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnUmVxdWVzdElkW10gPSB7CisKKwljaExhdGluX1IsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fcSwKKwljaExhdGluX3UsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fcywKKwljaExhdGluX3QsCisJY2hMYXRpbl9JLAorCWNoTGF0aW5fZCwKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnUmVxdWVzdFNpZ25hdHVyZVZhbHVlW10gPSB7CisKKwljaExhdGluX1IsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fcSwKKwljaExhdGluX3UsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fcywKKwljaExhdGluX3QsCisJY2hMYXRpbl9TLAorCWNoTGF0aW5faSwKKwljaExhdGluX2csCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fYSwKKwljaExhdGluX3QsCisJY2hMYXRpbl91LAorCWNoTGF0aW5fciwKKwljaExhdGluX2UsCisJY2hMYXRpbl9WLAorCWNoTGF0aW5fYSwKKwljaExhdGluX2wsCisJY2hMYXRpbl91LAorCWNoTGF0aW5fZSwKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnUmVzcG9uZFdpdGhbXSA9IHsKKworCWNoTGF0aW5fUiwKKwljaExhdGluX2UsCisJY2hMYXRpbl9zLAorCWNoTGF0aW5fcCwKKwljaExhdGluX28sCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fZCwKKwljaExhdGluX1csCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fdCwKKwljaExhdGluX2gsCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ1Jlc3BvbnNlSWRbXSA9IHsKKworCWNoTGF0aW5fUiwKKwljaExhdGluX2UsCisJY2hMYXRpbl9zLAorCWNoTGF0aW5fcCwKKwljaExhdGluX28sCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fcywKKwljaExhdGluX2UsCisJY2hMYXRpbl9JLAorCWNoTGF0aW5fZCwKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnUmVzcG9uc2VMaW1pdFtdID0geworCisJY2hMYXRpbl9SLAorCWNoTGF0aW5fZSwKKwljaExhdGluX3MsCisJY2hMYXRpbl9wLAorCWNoTGF0aW5fbywKKwljaExhdGluX24sCisJY2hMYXRpbl9zLAorCWNoTGF0aW5fZSwKKwljaExhdGluX0wsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fbSwKKwljaExhdGluX2ksCisJY2hMYXRpbl90LAorCWNoTnVsbAorfTsKKworY29uc3QgWE1MQ2ggWEtNU0NvbnN0YW50czo6c190YWdSZXNwb25zZU1lY2hhbmlzbVtdID0geworCisJY2hMYXRpbl9SLAorCWNoTGF0aW5fZSwKKwljaExhdGluX3MsCisJY2hMYXRpbl9wLAorCWNoTGF0aW5fbywKKwljaExhdGluX24sCisJY2hMYXRpbl9zLAorCWNoTGF0aW5fZSwKKwljaExhdGluX00sCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fYywKKwljaExhdGluX2gsCisJY2hMYXRpbl9hLAorCWNoTGF0aW5fbiwKKwljaExhdGluX2ksCisJY2hMYXRpbl9zLAorCWNoTGF0aW5fbSwKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnUmVzdWx0W10gPSB7CisKKwljaExhdGluX1IsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fcywKKwljaExhdGluX3UsCisJY2hMYXRpbl9sLAorCWNoTGF0aW5fdCwKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnUmVzdWx0TWFqb3JbXSA9IHsKKworCWNoTGF0aW5fUiwKKwljaExhdGluX2UsCisJY2hMYXRpbl9zLAorCWNoTGF0aW5fdSwKKwljaExhdGluX2wsCisJY2hMYXRpbl90LAorCWNoTGF0aW5fTSwKKwljaExhdGluX2EsCisJY2hMYXRpbl9qLAorCWNoTGF0aW5fbywKKwljaExhdGluX3IsCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ1Jlc3VsdE1pbm9yW10gPSB7CisKKwljaExhdGluX1IsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fcywKKwljaExhdGluX3UsCisJY2hMYXRpbl9sLAorCWNoTGF0aW5fdCwKKwljaExhdGluX00sCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fbiwKKwljaExhdGluX28sCisJY2hMYXRpbl9yLAorCWNoTnVsbAorfTsKKworY29uc3QgWE1MQ2ggWEtNU0NvbnN0YW50czo6c190YWdSZXZvY2F0aW9uQ29kZVtdID0geworCisJY2hMYXRpbl9SLAorCWNoTGF0aW5fZSwKKwljaExhdGluX3YsCisJY2hMYXRpbl9vLAorCWNoTGF0aW5fYywKKwljaExhdGluX2EsCisJY2hMYXRpbl90LAorCWNoTGF0aW5faSwKKwljaExhdGluX28sCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fQywKKwljaExhdGluX28sCisJY2hMYXRpbl9kLAorCWNoTGF0aW5fZSwKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnUmV2b2NhdGlvbkNvZGVJZGVudGlmaWVyW10gPSB7CisKKwljaExhdGluX1IsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fdiwKKwljaExhdGluX28sCisJY2hMYXRpbl9jLAorCWNoTGF0aW5fYSwKKwljaExhdGluX3QsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fbywKKwljaExhdGluX24sCisJY2hMYXRpbl9DLAorCWNoTGF0aW5fbywKKwljaExhdGluX2QsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fSSwKKwljaExhdGluX2QsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fbiwKKwljaExhdGluX3QsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fZiwKKwljaExhdGluX2ksCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fciwKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnUmV2b2tlS2V5QmluZGluZ1tdID0geworCisJY2hMYXRpbl9SLAorCWNoTGF0aW5fZSwKKwljaExhdGluX3YsCisJY2hMYXRpbl9vLAorCWNoTGF0aW5faywKKwljaExhdGluX2UsCisJY2hMYXRpbl9LLAorCWNoTGF0aW5fZSwKKwljaExhdGluX3ksCisJY2hMYXRpbl9CLAorCWNoTGF0aW5faSwKKwljaExhdGluX24sCisJY2hMYXRpbl9kLAorCWNoTGF0aW5faSwKKwljaExhdGluX24sCisJY2hMYXRpbl9nLAorCWNoTnVsbAorfTsKKworY29uc3QgWE1MQ2ggWEtNU0NvbnN0YW50czo6c190YWdSZXZva2VSZXF1ZXN0W10gPSB7CisKKwljaExhdGluX1IsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fdiwKKwljaExhdGluX28sCisJY2hMYXRpbl9rLAorCWNoTGF0aW5fZSwKKwljaExhdGluX1IsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fcSwKKwljaExhdGluX3UsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fcywKKwljaExhdGluX3QsCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ1Jldm9rZVJlc3VsdFtdID0geworCisJY2hMYXRpbl9SLAorCWNoTGF0aW5fZSwKKwljaExhdGluX3YsCisJY2hMYXRpbl9vLAorCWNoTGF0aW5faywKKwljaExhdGluX2UsCisJY2hMYXRpbl9SLAorCWNoTGF0aW5fZSwKKwljaExhdGluX3MsCisJY2hMYXRpbl91LAorCWNoTGF0aW5fbCwKKwljaExhdGluX3QsCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ1JTQUtleVBhaXJbXSA9IHsKKworCWNoTGF0aW5fUiwKKwljaExhdGluX1MsCisJY2hMYXRpbl9BLAorCWNoTGF0aW5fSywKKwljaExhdGluX2UsCisJY2hMYXRpbl95LAorCWNoTGF0aW5fUCwKKwljaExhdGluX2EsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fciwKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnU2VydmljZVtdID0geworCisJY2hMYXRpbl9TLAorCWNoTGF0aW5fZSwKKwljaExhdGluX3IsCisJY2hMYXRpbl92LAorCWNoTGF0aW5faSwKKwljaExhdGluX2MsCisJY2hMYXRpbl9lLAorCWNoTnVsbAorfTsKKworY29uc3QgWE1MQ2ggWEtNU0NvbnN0YW50czo6c190YWdTaWduYXR1cmVbXSA9IHsKKworCWNoTGF0aW5fUywKKwljaExhdGluX2ksCisJY2hMYXRpbl9nLAorCWNoTGF0aW5fbiwKKwljaExhdGluX2EsCisJY2hMYXRpbl90LAorCWNoTGF0aW5fdSwKKwljaExhdGluX3IsCisJY2hMYXRpbl9lLAorCWNoTnVsbAorfTsKKworY29uc3QgWE1MQ2ggWEtNU0NvbnN0YW50czo6c190YWdTdGF0dXNbXSA9IHsKKworCWNoTGF0aW5fUywKKwljaExhdGluX3QsCisJY2hMYXRpbl9hLAorCWNoTGF0aW5fdCwKKwljaExhdGluX3UsCisJY2hMYXRpbl9zLAorCWNoTnVsbAorfTsKKworY29uc3QgWE1MQ2ggWEtNU0NvbnN0YW50czo6c190YWdTdGF0dXNSZXF1ZXN0W10gPSB7CisKKwljaExhdGluX1MsCisJY2hMYXRpbl90LAorCWNoTGF0aW5fYSwKKwljaExhdGluX3QsCisJY2hMYXRpbl91LAorCWNoTGF0aW5fcywKKwljaExhdGluX1IsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fcSwKKwljaExhdGluX3UsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fcywKKwljaExhdGluX3QsCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ1N0YXR1c1Jlc3VsdFtdID0geworCisJY2hMYXRpbl9TLAorCWNoTGF0aW5fdCwKKwljaExhdGluX2EsCisJY2hMYXRpbl90LAorCWNoTGF0aW5fdSwKKwljaExhdGluX3MsCisJY2hMYXRpbl9SLAorCWNoTGF0aW5fZSwKKwljaExhdGluX3MsCisJY2hMYXRpbl91LAorCWNoTGF0aW5fbCwKKwljaExhdGluX3QsCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ1N0YXR1c1ZhbHVlW10gPSB7CisKKwljaExhdGluX1MsCisJY2hMYXRpbl90LAorCWNoTGF0aW5fYSwKKwljaExhdGluX3QsCisJY2hMYXRpbl91LAorCWNoTGF0aW5fcywKKwljaExhdGluX1YsCisJY2hMYXRpbl9hLAorCWNoTGF0aW5fbCwKKwljaExhdGluX3UsCisJY2hMYXRpbl9lLAorCWNoTnVsbAorfTsKKworY29uc3QgWE1MQ2ggWEtNU0NvbnN0YW50czo6c190YWdTdWNjZXNzW10gPSB7CisKKwljaExhdGluX1MsCisJY2hMYXRpbl91LAorCWNoTGF0aW5fYywKKwljaExhdGluX2MsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fcywKKwljaExhdGluX3MsCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ1VudmVyaWZpZWRLZXlCaW5kaW5nW10gPSB7CisKKwljaExhdGluX1UsCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fdiwKKwljaExhdGluX2UsCisJY2hMYXRpbl9yLAorCWNoTGF0aW5faSwKKwljaExhdGluX2YsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fZSwKKwljaExhdGluX2QsCisJY2hMYXRpbl9LLAorCWNoTGF0aW5fZSwKKwljaExhdGluX3ksCisJY2hMYXRpbl9CLAorCWNoTGF0aW5faSwKKwljaExhdGluX24sCisJY2hMYXRpbl9kLAorCWNoTGF0aW5faSwKKwljaExhdGluX24sCisJY2hMYXRpbl9nLAorCWNoTnVsbAorfTsKKworY29uc3QgWE1MQ2ggWEtNU0NvbnN0YW50czo6c190YWdVc2VLZXlXaXRoW10gPSB7CisKKwljaExhdGluX1UsCisJY2hMYXRpbl9zLAorCWNoTGF0aW5fZSwKKwljaExhdGluX0ssCisJY2hMYXRpbl9lLAorCWNoTGF0aW5feSwKKwljaExhdGluX1csCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fdCwKKwljaExhdGluX2gsCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ1ZhbGlkYXRlUmVxdWVzdFtdID0geworCisJY2hMYXRpbl9WLAorCWNoTGF0aW5fYSwKKwljaExhdGluX2wsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fZCwKKwljaExhdGluX2EsCisJY2hMYXRpbl90LAorCWNoTGF0aW5fZSwKKwljaExhdGluX1IsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fcSwKKwljaExhdGluX3UsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fcywKKwljaExhdGluX3QsCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ1ZhbGlkYXRlUmVzdWx0W10gPSB7CisKKwljaExhdGluX1YsCisJY2hMYXRpbl9hLAorCWNoTGF0aW5fbCwKKwljaExhdGluX2ksCisJY2hMYXRpbl9kLAorCWNoTGF0aW5fYSwKKwljaExhdGluX3QsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fUiwKKwljaExhdGluX2UsCisJY2hMYXRpbl9zLAorCWNoTGF0aW5fdSwKKwljaExhdGluX2wsCisJY2hMYXRpbl90LAorCWNoTnVsbAorfTsKKworY29uc3QgWE1MQ2ggWEtNU0NvbnN0YW50czo6c190YWdWYWxpZFJlYXNvbltdID0geworCisJY2hMYXRpbl9WLAorCWNoTGF0aW5fYSwKKwljaExhdGluX2wsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fZCwKKwljaExhdGluX1IsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fYSwKKwljaExhdGluX3MsCisJY2hMYXRpbl9vLAorCWNoTGF0aW5fbiwKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnVmFsaWRpdHlJbnRlcnZhbFtdID0geworCisJY2hMYXRpbl9WLAorCWNoTGF0aW5fYSwKKwljaExhdGluX2wsCisJY2hMYXRpbl9pLAorCWNoTGF0aW5fZCwKKwljaExhdGluX2ksCisJY2hMYXRpbl90LAorCWNoTGF0aW5feSwKKwljaExhdGluX0ksCisJY2hMYXRpbl9uLAorCWNoTGF0aW5fdCwKKwljaExhdGluX2UsCisJY2hMYXRpbl9yLAorCWNoTGF0aW5fdiwKKwljaExhdGluX2EsCisJY2hMYXRpbl9sLAorCWNoTnVsbAorfTsKKworY29uc3QgWE1MQ2ggWEtNU0NvbnN0YW50czo6c190YWdWYWx1ZVtdID0geworCisJY2hMYXRpbl9WLAorCWNoTGF0aW5fYSwKKwljaExhdGluX2wsCisJY2hMYXRpbl91LAorCWNoTGF0aW5fZSwKKwljaE51bGwKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnWDUwOUNlcnRbXSA9IHsKKworCWNoTGF0aW5fWCwKKwljaERpZ2l0XzUsCisJY2hEaWdpdF8wLAorCWNoRGlnaXRfOSwKKwljaExhdGluX0MsCisJY2hMYXRpbl9lLAorCWNoTGF0aW5fciwKKwljaExhdGluX3QsCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ1g1MDlDaGFpbltdID0geworCisJY2hMYXRpbl9YLAorCWNoRGlnaXRfNSwKKwljaERpZ2l0XzAsCisJY2hEaWdpdF85LAorCWNoTGF0aW5fQywKKwljaExhdGluX2gsCisJY2hMYXRpbl9hLAorCWNoTGF0aW5faSwKKwljaExhdGluX24sCisJY2hOdWxsCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ1Jlc3VsdE1ham9yQ29kZXNbXVsxNl0gPSB7CisKKwl7CisJCWNoTGF0aW5fTiwKKwkJY2hMYXRpbl9vLAorCQljaExhdGluX24sCisJCWNoTGF0aW5fZSwKKwkJY2hOdWxsCisJfSwKKworCXsJCQkKKwkJY2hMYXRpbl9TLAorCQljaExhdGluX3UsCisJCWNoTGF0aW5fYywKKwkJY2hMYXRpbl9jLAorCQljaExhdGluX2UsCisJCWNoTGF0aW5fcywKKwkJY2hMYXRpbl9zLAorCQljaE51bGwKKwl9LAorCisJeworCQljaExhdGluX1YsCisJCWNoTGF0aW5fZSwKKwkJY2hMYXRpbl9yLAorCQljaExhdGluX3MsCisJCWNoTGF0aW5faSwKKwkJY2hMYXRpbl9vLAorCQljaExhdGluX24sCisJCWNoTGF0aW5fTSwKKwkJY2hMYXRpbl9pLAorCQljaExhdGluX3MsCisJCWNoTGF0aW5fbSwKKwkJY2hMYXRpbl9hLAorCQljaExhdGluX3QsCisJCWNoTGF0aW5fYywKKwkJY2hMYXRpbl9oLAorCQljaE51bGwKKwl9LAorCisJeworCQljaExhdGluX1MsCisJCWNoTGF0aW5fZSwKKwkJY2hMYXRpbl9uLAorCQljaExhdGluX2QsCisJCWNoTGF0aW5fZSwKKwkJY2hMYXRpbl9yLAorCQljaE51bGwKKwl9LAorCisJeworCQljaExhdGluX1IsCisJCWNoTGF0aW5fZSwKKwkJY2hMYXRpbl9jLAorCQljaExhdGluX2UsCisJCWNoTGF0aW5faSwKKwkJY2hMYXRpbl92LAorCQljaExhdGluX2UsCisJCWNoTGF0aW5fciwKKwkJY2hOdWxsCisJfSwKKworCXsKKwkJY2hMYXRpbl9SLAorCQljaExhdGluX2UsCisJCWNoTGF0aW5fcCwKKwkJY2hMYXRpbl9yLAorCQljaExhdGluX2UsCisJCWNoTGF0aW5fcywKKwkJY2hMYXRpbl9lLAorCQljaExhdGluX24sCisJCWNoTGF0aW5fdCwKKwkJY2hOdWxsCisJfSwKKworCXsKKwkJY2hMYXRpbl9QLAorCQljaExhdGluX2UsCisJCWNoTGF0aW5fbiwKKwkJY2hMYXRpbl9kLAorCQljaExhdGluX2ksCisJCWNoTGF0aW5fbiwKKwkJY2hMYXRpbl9nLAorCQljaE51bGwKKwl9LAorCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ1Jlc3VsdE1pbm9yQ29kZXNbXVsyMF0gPSB7CisKKwl7CisKKwkJY2hMYXRpbl9OLAorCQljaExhdGluX28sCisJCWNoTGF0aW5fbiwKKwkJY2hMYXRpbl9lLAorCQljaE51bGwKKwl9LAorCisJeworCQljaExhdGluX04sCisJCWNoTGF0aW5fbywKKwkJY2hMYXRpbl9NLAorCQljaExhdGluX2EsCisJCWNoTGF0aW5fdCwKKwkJY2hMYXRpbl9jLAorCQljaExhdGluX2gsCisJCWNoTnVsbAorCX0sCisKKwl7CisJCWNoTGF0aW5fVCwKKwkJY2hMYXRpbl9vLAorCQljaExhdGluX28sCisJCWNoTGF0aW5fTSwKKwkJY2hMYXRpbl9hLAorCQljaExhdGluX24sCisJCWNoTGF0aW5feSwKKwkJY2hMYXRpbl9SLAorCQljaExhdGluX2UsCisJCWNoTGF0aW5fcywKKwkJY2hMYXRpbl9wLAorCQljaExhdGluX28sCisJCWNoTGF0aW5fbiwKKwkJY2hMYXRpbl9zLAorCQljaExhdGluX2UsCisJCWNoTGF0aW5fcywKKwkJY2hOdWxsCisJfSwKKworCXsKKwkJY2hMYXRpbl9JLAorCQljaExhdGluX24sCisJCWNoTGF0aW5fYywKKwkJY2hMYXRpbl9vLAorCQljaExhdGluX20sCisJCWNoTGF0aW5fcCwKKwkJY2hMYXRpbl9sLAorCQljaExhdGluX2UsCisJCWNoTGF0aW5fdCwKKwkJY2hMYXRpbl9lLAorCQljaE51bGwKKwl9LAorCisJeworCQljaExhdGluX0YsCisJCWNoTGF0aW5fYSwKKwkJY2hMYXRpbl9pLAorCQljaExhdGluX2wsCisJCWNoTGF0aW5fdSwKKwkJY2hMYXRpbl9yLAorCQljaExhdGluX2UsCisJCWNoTnVsbAorCX0sCisKKwl7CisJCWNoTGF0aW5fUiwKKwkJY2hMYXRpbl9lLAorCQljaExhdGluX2YsCisJCWNoTGF0aW5fdSwKKwkJY2hMYXRpbl9zLAorCQljaExhdGluX2UsCisJCWNoTGF0aW5fZCwKKwkJY2hOdWxsCisJfSwKKworCXsKKwkJY2hMYXRpbl9OLAorCQljaExhdGluX28sCisJCWNoTGF0aW5fQSwKKwkJY2hMYXRpbl91LAorCQljaExhdGluX3QsCisJCWNoTGF0aW5faCwKKwkJY2hMYXRpbl9lLAorCQljaExhdGluX24sCisJCWNoTGF0aW5fdCwKKwkJY2hMYXRpbl9pLAorCQljaExhdGluX2MsCisJCWNoTGF0aW5fYSwKKwkJY2hMYXRpbl90LAorCQljaExhdGluX2ksCisJCWNoTGF0aW5fbywKKwkJY2hMYXRpbl9uLAorCQljaE51bGwKKwl9LAorCisJeworCQljaExhdGluX00sCisJCWNoTGF0aW5fZSwKKwkJY2hMYXRpbl9zLAorCQljaExhdGluX3MsCisJCWNoTGF0aW5fYSwKKwkJY2hMYXRpbl9nLAorCQljaExhdGluX2UsCisJCWNoTGF0aW5fTiwKKwkJY2hMYXRpbl9vLAorCQljaExhdGluX3QsCisJCWNoTGF0aW5fUywKKwkJY2hMYXRpbl91LAorCQljaExhdGluX3AsCisJCWNoTGF0aW5fcCwKKwkJY2hMYXRpbl9vLAorCQljaExhdGluX3IsCisJCWNoTGF0aW5fdCwKKwkJY2hMYXRpbl9lLAorCQljaExhdGluX2QsCisJCWNoTnVsbAorCX0sCisKKwl7CisJCWNoTGF0aW5fVSwKKwkJY2hMYXRpbl9uLAorCQljaExhdGluX2ssCisJCWNoTGF0aW5fbiwKKwkJY2hMYXRpbl9vLAorCQljaExhdGluX3csCisJCWNoTGF0aW5fbiwKKwkJY2hMYXRpbl9SLAorCQljaExhdGluX2UsCisJCWNoTGF0aW5fcywKKwkJY2hMYXRpbl9wLAorCQljaExhdGluX28sCisJCWNoTGF0aW5fbiwKKwkJY2hMYXRpbl9zLAorCQljaExhdGluX2UsCisJCWNoTGF0aW5fSSwKKwkJY2hMYXRpbl9kLAorCQljaE51bGwKKwl9LAorCisJeworCQljaExhdGluX1IsCisJCWNoTGF0aW5fZSwKKwkJY2hMYXRpbl9wLAorCQljaExhdGluX3IsCisJCWNoTGF0aW5fZSwKKwkJY2hMYXRpbl9zLAorCQljaExhdGluX2UsCisJCWNoTGF0aW5fbiwKKwkJY2hMYXRpbl90LAorCQljaExhdGluX1IsCisJCWNoTGF0aW5fZSwKKwkJY2hMYXRpbl9xLAorCQljaExhdGluX3UsCisJCWNoTGF0aW5faSwKKwkJY2hMYXRpbl9yLAorCQljaExhdGluX2UsCisJCWNoTGF0aW5fZCwKKwkJY2hOdWxsCisJfSwKKworCXsKKwkJY2hMYXRpbl9OLAorCQljaExhdGluX28sCisJCWNoTGF0aW5fdCwKKwkJY2hMYXRpbl9TLAorCQljaExhdGluX3ksCisJCWNoTGF0aW5fbiwKKwkJY2hMYXRpbl9jLAorCQljaExhdGluX2gsCisJCWNoTGF0aW5fciwKKwkJY2hMYXRpbl9vLAorCQljaExhdGluX24sCisJCWNoTGF0aW5fbywKKwkJY2hMYXRpbl91LAorCQljaExhdGluX3MsCisJCWNoTnVsbAorCX0sCisKK307CisKK2NvbnN0IFhNTENoIFhLTVNDb25zdGFudHM6OnNfdGFnU3RhdHVzVmFsdWVDb2Rlc1tdWzE1XSA9IHsKKworCXsKKwkJY2hMYXRpbl9VLAorCQljaExhdGluX24sCisJCWNoTGF0aW5fZCwKKwkJY2hMYXRpbl9lLAorCQljaExhdGluX2YsCisJCWNoTGF0aW5faSwKKwkJY2hMYXRpbl9uLAorCQljaExhdGluX2UsCisJCWNoTGF0aW5fZCwKKwkJY2hOdWxsCisJfSwKKworCXsJCQkKKwkJY2hMYXRpbl9WLAorCQljaExhdGluX2EsCisJCWNoTGF0aW5fbCwKKwkJY2hMYXRpbl9pLAorCQljaExhdGluX2QsCisJCWNoTnVsbAorCX0sCisKKwl7CisJCWNoTGF0aW5fSSwKKwkJY2hMYXRpbl9uLAorCQljaExhdGluX3YsCisJCWNoTGF0aW5fYSwKKwkJY2hMYXRpbl9sLAorCQljaExhdGluX2ksCisJCWNoTGF0aW5fZCwKKwkJY2hOdWxsCisJfSwKKworCXsKKwkJY2hMYXRpbl9JLAorCQljaExhdGluX24sCisJCWNoTGF0aW5fZCwKKwkJY2hMYXRpbl9lLAorCQljaExhdGluX3QsCisJCWNoTGF0aW5fZSwKKwkJY2hMYXRpbl9yLAorCQljaExhdGluX20sCisJCWNoTGF0aW5faSwKKwkJY2hMYXRpbl9uLAorCQljaExhdGluX2EsCisJCWNoTGF0aW5fdCwKKwkJY2hMYXRpbl9lLAorCQljaE51bGwKKwl9LAorCit9OworCitjb25zdCBYTUxDaCBYS01TQ29uc3RhbnRzOjpzX3RhZ1N0YXR1c1JlYXNvbkNvZGVzW11bMTddID0geworCisJeworCQljaExhdGluX1UsCisJCWNoTGF0aW5fbiwKKwkJY2hMYXRpbl9kLAorCQljaExhdGluX2UsCisJCWNoTGF0aW5fZiwKKwkJY2hMYXRpbl9pLAorCQljaExhdGluX24sCisJCWNoTGF0aW5fZSwKKwkJY2hMYXRpbl9kLAorCQljaE51bGwKKwl9LAorCisJeworCQljaExhdGluX0ksCisJCWNoTGF0aW5fcywKKwkJY2hMYXRpbl9zLAorCQljaExhdGluX3UsCisJCWNoTGF0aW5fZSwKKwkJY2hMYXRpbl9yLAorCQljaExhdGluX1QsCisJCWNoTGF0aW5fciwKKwkJY2hMYXRpbl91LAorCQljaExhdGluX3MsCisJCWNoTGF0aW5fdCwKKwkJY2hOdWxsCisJfSwKKworCXsJCQkKKwkJY2hMYXRpbl9SLAorCQljaExhdGluX2UsCisJCWNoTGF0aW5fdiwKKwkJY2hMYXRpbl9vLAorCQljaExhdGluX2MsCisJCWNoTGF0aW5fYSwKKwkJY2hMYXRpbl90LAorCQljaExhdGluX2ksCisJCWNoTGF0aW5fbywKKwkJY2hMYXRpbl9uLAorCQljaExhdGluX1MsCisJCWNoTGF0aW5fdCwKKwkJY2hMYXRpbl9hLAorCQljaExhdGluX3QsCisJCWNoTGF0aW5fdSwKKwkJY2hMYXRpbl9zLAorCQljaE51bGwKKwl9LAorCisJeworCQljaExhdGluX1YsCisJCWNoTGF0aW5fYSwKKwkJY2hMYXRpbl9sLAorCQljaExhdGluX2ksCisJCWNoTGF0aW5fZCwKKwkJY2hMYXRpbl9pLAorCQljaExhdGluX3QsCisJCWNoTGF0aW5feSwKKwkJY2hMYXRpbl9JLAorCQljaExhdGluX24sCisJCWNoTGF0aW5fdCwKKwkJY2hMYXRpbl9lLAorCQljaExhdGluX3IsCisJCWNoTGF0aW5fdiwKKwkJY2hMYXRpbl9hLAorCQljaExhdGluX2wsCisJCWNoTnVsbAorCX0sCisKKwl7CisJCWNoTGF0aW5fUywKKwkJY2hMYXRpbl9pLAorCQljaExhdGluX2csCisJCWNoTGF0aW5fbiwKKwkJY2hMYXRpbl9hLAorCQljaExhdGluX3QsCisJCWNoTGF0aW5fdSwKKwkJY2hMYXRpbl9yLAorCQljaExhdGluX2UsCisJCWNoTnVsbAorCX0sCisKK307CisKKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0YW50IFN0cmluZ3MgQ3JlYXRpb24gYW5kIERlbGV0aW9uCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIFhLTVNDb25zdGFudHM6OmNyZWF0ZSgpIHsKKworCS8vIFNldCB1cCB0aGUgc3RhdGljIHN0cmluZ3MKKworCXNfdW5pY29kZVN0clVSSVhLTVMgPSBYTUxTdHJpbmc6OnRyYW5zY29kZShVUklfSURfWEtNUyk7CisJc191bmljb2RlU3RyVVJJU09BUDExID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoVVJJX0lEX1NPQVAxMSk7CisJc191bmljb2RlU3RyVVJJU09BUDEyID0gWE1MU3RyaW5nOjp0cmFuc2NvZGUoVVJJX0lEX1NPQVAxMik7CisKK30KKwordm9pZCBYS01TQ29uc3RhbnRzOjpkZXN0cm95KCkgeworCisgICAgWE1MQ2gqIHRlbXAxID0gY29uc3RfY2FzdDxYTUxDaCo+KHNfdW5pY29kZVN0clVSSVhLTVMpOworICAgIFhNTENoKiB0ZW1wMiA9IGNvbnN0X2Nhc3Q8WE1MQ2gqPihzX3VuaWNvZGVTdHJVUklTT0FQMTEpOworICAgIFhNTENoKiB0ZW1wMyA9IGNvbnN0X2Nhc3Q8WE1MQ2gqPihzX3VuaWNvZGVTdHJVUklTT0FQMTIpOworCVhTRUNfUkVMRUFTRV9YTUxDSCh0ZW1wMSk7CisJWFNFQ19SRUxFQVNFX1hNTENIKHRlbXAyKTsKKwlYU0VDX1JFTEVBU0VfWE1MQ0godGVtcDMpOworICAgIHNfdW5pY29kZVN0clVSSVhLTVMgPSBOVUxMOworICAgIHNfdW5pY29kZVN0clVSSVNPQVAxMSA9IE5VTEw7CisgICAgc191bmljb2RlU3RyVVJJU09BUDEyID0gTlVMTDsKK30KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvWEtNU0NvbnN0YW50cy5ocHAgYi9jL3NyYy94a21zL1hLTVNDb25zdGFudHMuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2OTY1YjcKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL1hLTVNDb25zdGFudHMuaHBwCkBAIC0wLDAgKzEsMTUyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDItMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TQ29uc3RhbnRzIDo9IERlZmluaXRpb25zIG9mIHZhcml1cyBYS01TIGNvbnN0YW50cyAobWFpbmx5IHN0cmluZ3MpCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhLTVNDT05TVEFOVFNfSEVBREVSCisjZGVmaW5lIFhLTVNDT05TVEFOVFNfSEVBREVSCisKKy8vIFhlcmNlcworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKworLy8gTmFtZSBTcGFjZXMKKworI2RlZmluZSBVUklfSURfWEtNUwkJImh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDMveGttcyMiCisvLyNkZWZpbmUgVVJJX0lEX1hLTVMJCSJodHRwOi8vd3d3LnczLm9yZy8yMDA0LzA3L3hrbXMjIgorI2RlZmluZSBVUklfSURfU09BUDExICAgImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUvIgorI2RlZmluZSBVUklfSURfU09BUDEyICAgImh0dHA6Ly93d3cudzMub3JnLzIwMDMvMDUvc29hcC1lbnZlbG9wZSIKKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0YW50IFN0cmluZ3MgQ2xhc3MKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIERTSUdfRVhQT1JUIFhLTVNDb25zdGFudHMgeworCitwdWJsaWM6CisKKwkvLyBVUklfSURzCisJc3RhdGljIGNvbnN0IFhNTENoICogc191bmljb2RlU3RyVVJJWEtNUzsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggKiBzX3VuaWNvZGVTdHJVUklTT0FQMTE7CisJc3RhdGljIGNvbnN0IFhNTENoICogc191bmljb2RlU3RyVVJJU09BUDEyOworCisJLy8gVGFncyAtIG5vdGUgYWxsIGFyZSBVVEYtMTYsIGJ1dCBub3QgbWFya2VkIGFzIHN1Y2gKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdBcHBsaWNhdGlvbltdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ0F1dGhlbnRpY2F0aW9uW107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnQ29tcG91bmRSZXF1ZXN0W107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnQ29tcG91bmRSZXN1bHRbXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdEW107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnRFBbXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdEUVtdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ0VuY3J5cHRpb25bXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdFeGNoYW5nZVtdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ0V4cG9uZW50W107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnRmFpbHVyZVtdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ0lkW107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnSWRlbnRpZmllcltdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ0luZGV0ZXJtaW5hdGVSZWFzb25bXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdJbnZhbGlkUmVhc29uW107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnSW52ZXJzZVFbXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdLZXlCaW5kaW5nW107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnS2V5QmluZGluZ0F1dGhlbnRpY2F0aW9uW107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnS2V5SW5mb1tdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ0tleU5hbWVbXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdLZXlVc2FnZVtdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ0tleVZhbHVlW107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnTG9jYXRlUmVxdWVzdFtdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ0xvY2F0ZVJlc3VsdFtdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ01lc3NhZ2VFeHRlbnNpb25bXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdNb2R1bHVzW107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnTm9uY2VbXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdOb3RCb3VuZEF1dGhlbnRpY2F0aW9uW107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnTm90QmVmb3JlW107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnTm90T25PckFmdGVyW107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnT3BhcXVlQ2xpZW50RGF0YVtdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ09wYXF1ZURhdGFbXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdPcmlnaW5hbFJlcXVlc3RJZFtdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ1BbXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdQZW5kaW5nW107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnUGVuZGluZ1JlcXVlc3RbXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdQcml2YXRlS2V5W107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnUHJvb2ZPZlBvc3Nlc3Npb25bXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdQcm90b2NvbFtdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ1Byb3RvdHlwZUtleUJpbmRpbmdbXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdRW107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnUXVlcnlLZXlCaW5kaW5nW107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnUmVjb3ZlcktleUJpbmRpbmdbXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdSZWNvdmVyUmVxdWVzdFtdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ1JlY292ZXJSZXN1bHRbXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdSZWdpc3RlclJlcXVlc3RbXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdSZWdpc3RlclJlc3VsdFtdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ1JlaXNzdWVLZXlCaW5kaW5nW107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnUmVpc3N1ZVJlcXVlc3RbXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdSZWlzc3VlUmVzdWx0W107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnUmVwcmVzZW50W107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnUmVxdWVzdElkW107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnUmVxdWVzdFNpZ25hdHVyZVZhbHVlW107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnUmVzcG9uZFdpdGhbXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdSZXNwb25zZUlkW107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnUmVzcG9uc2VMaW1pdFtdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ1Jlc3BvbnNlTWVjaGFuaXNtW107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnUmVzdWx0W107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnUmVzdWx0TWFqb3JbXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdSZXN1bHRNaW5vcltdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ1Jldm9jYXRpb25Db2RlSWRlbnRpZmllcltdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ1Jldm9jYXRpb25Db2RlW107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnUmV2b2tlS2V5QmluZGluZ1tdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ1Jldm9rZVJlcXVlc3RbXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdSZXZva2VSZXN1bHRbXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdSU0FLZXlQYWlyW107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnU2VydmljZVtdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ1NpZ25hdHVyZVtdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ1N0YXR1c1tdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ1N0YXR1c1JlcXVlc3RbXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdTdGF0dXNSZXN1bHRbXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdTdGF0dXNWYWx1ZVtdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ1N1Y2Nlc3NbXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdVbnZlcmlmaWVkS2V5QmluZGluZ1tdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ1VzZUtleVdpdGhbXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdWYWxpZGF0ZVJlcXVlc3RbXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdWYWxpZGF0ZVJlc3VsdFtdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ1ZhbGlkUmVhc29uW107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnVmFsaWRpdHlJbnRlcnZhbFtdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ1ZhbHVlW107CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnWDUwOUNlcnRbXTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdYNTA5Q2hhaW5bXTsKKworCS8vIFJlc3VsdE1ham9yIGNvZGVzCisKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdSZXN1bHRNYWpvckNvZGVzW11bMTZdOworCXN0YXRpYyBjb25zdCBYTUxDaCBzX3RhZ1Jlc3VsdE1pbm9yQ29kZXNbXVsyMF07CisJc3RhdGljIGNvbnN0IFhNTENoIHNfdGFnU3RhdHVzVmFsdWVDb2Rlc1tdWzE1XTsKKwlzdGF0aWMgY29uc3QgWE1MQ2ggc190YWdTdGF0dXNSZWFzb25Db2Rlc1tdWzE3XTsKKworCVhLTVNDb25zdGFudHMoKTsKKworCXN0YXRpYyB2b2lkIGNyZWF0ZSgpOworCXN0YXRpYyB2b2lkIGRlc3Ryb3koKTsKKworfTsKKworI2VuZGlmIC8qIFhLTVNDT05TVEFOVFNfSEVBREVSICovCisKZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvWEtNU0tleUJpbmRpbmcuaHBwIGIvYy9zcmMveGttcy9YS01TS2V5QmluZGluZy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFkYjdhMAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvWEtNU0tleUJpbmRpbmcuaHBwCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TS2V5QmluZGluZyA6PSBJbnRlcmZhY2UgZm9yIEtleUJpbmRpbmcgZWxlbWVudHMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEtNU0tFWUJJTkRJTkdfSU5DTFVERQorI2RlZmluZSBYS01TS0VZQklORElOR19JTkNMVURFCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGUuaHBwPgorCisvKioKKyAqIEBpbmdyb3VwIHhrbXMKKyAqLworCisvKioKKyAqIEBicmllZiBJbnRlcmZhY2UgZGVmaW5pdGlvbiBmb3IgdGhlIEtleUJpbmRpbmcgZWxlbWVudHMKKyAqCisgKiBUaGUgXDxLZXlCaW5kaW5nXD4gRWxlbWVudCBpcyB1c2VkIGluIGEgcmVzdWx0IG1lc3NhZ2UgdG8gYSBjbGllbnQKKyAqIHRvIHByb3ZpZGUgaW5mb3JtYXRpb24gb24gYSBwYXJ0aWN1bGFyIGtleS4KKyAqCisgKiBUaGUgc2NoZW1hIGRlZmluaXRpb24gZm9yIEtleUJpbmRpbmcgaXMgYXMgZm9sbG93cyA6CisgKgorICogXHZlcmJhdGltCisgICA8IS0tIEtleUJpbmRpbmcgLS0+CisgICA8ZWxlbWVudCBuYW1lPSJLZXlCaW5kaW5nIiB0eXBlPSJ4a21zOktleUJpbmRpbmdUeXBlIi8+CisgICA8Y29tcGxleFR5cGUgbmFtZT0iS2V5QmluZGluZ1R5cGUiPgorICAgICAgPGNvbXBsZXhDb250ZW50PgorICAgICAgICAgPGV4dGVuc2lvbiBiYXNlPSJ4a21zOlVudmVyaWZpZWRLZXlCaW5kaW5nVHlwZSI+CisgICAgICAgICAgICA8c2VxdWVuY2U+CisgICAgICAgICAgICAgICA8ZWxlbWVudCByZWY9InhrbXM6U3RhdHVzIi8+CisgICAgICAgICAgICA8L3NlcXVlbmNlPgorICAgICAgICAgPC9leHRlbnNpb24+CisgICAgICA8L2NvbXBsZXhDb250ZW50PgorICAgPC9jb21wbGV4VHlwZT4KKyAgIDwhLS0gL0tleUJpbmRpbmcgLS0+XGVuZHZlcmJhdGltCisgKi8KKworY2xhc3MgWEtNU1N0YXR1czsKKworY2xhc3MgWEtNU0tleUJpbmRpbmcgOiBwdWJsaWMgWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGUgeworCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisKK3Byb3RlY3RlZDoKKworCVhLTVNLZXlCaW5kaW5nKCkge307CisKK3B1YmxpYzoKKworCXZpcnR1YWwgflhLTVNLZXlCaW5kaW5nKCkge307CisKKwkvL0B9CisKKwkvKiogQG5hbWUgU3RhdHVzIGhhbmRsaW5nICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIE9idGFpbiB0aGUgc3RhdHVzIGVsZW1lbnQgZm9yIHRoaXMgS2V5QmluZGluZworCSAqCisJICogVGhlIFw8U3RhdHVzXD4gZWxlbWVudCBpcyB1c2VkIHRvIGRlc2NyaWJlIHRvIHRoZSBjYWxsZXIgdGhlCisJICogdmFsaWRpdHkgb2YgdGhleSBrZXkgYmVpbmcgZGVzY3JpYmVkLiAgVGhpcyBjYWxsIGlzIHVzZWQgdG8KKwkgKiBvYnRhaW4gdGhlIHN0YXR1cyBlbGVtZW50CisJICoKKwkgKiBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgWEtNU1N0YXR1cyBlbGVtZW50CisJICovCisKKwl2aXJ0dWFsIFhLTVNTdGF0dXMgKiBnZXRTdGF0dXModm9pZCkgY29uc3QgPSAwOworCisJLy9AfQorCitwcml2YXRlOgorCisJLy8gVW5pbXBsZW1lbnRlZAorCVhLTVNLZXlCaW5kaW5nKGNvbnN0IFhLTVNLZXlCaW5kaW5nICYpOworCVhLTVNLZXlCaW5kaW5nICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU0tleUJpbmRpbmcgJik7CisKK307CisKKyNlbmRpZiAvKiBYS01TS0VZQklORElOR19JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL1hLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlLmhwcCBiL2Mvc3JjL3hrbXMvWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjMjdlYTIKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL1hLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlLmhwcApAQCAtMCwwICsxLDM2OSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGUgOj0gSW50ZXJmYWNlIGZvciBiYXNlIHNjaGVtYSBvZiBYS01TIG1lc3NhZ2VzCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhLTVNLRVlCSU5ESU5HQUJTVFJBQ1RUWVBFX0lOQ0xVREUKKyNkZWZpbmUgWEtNU0tFWUJJTkRJTkdBQlNUUkFDVFRZUEVfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisKK2NsYXNzIERTSUdLZXlJbmZvTGlzdDsKK2NsYXNzIERTSUdLZXlJbmZvTWdtdERhdGE7CitjbGFzcyBEU0lHS2V5SW5mb05hbWU7CitjbGFzcyBEU0lHS2V5SW5mb1BHUERhdGE7CitjbGFzcyBEU0lHS2V5SW5mb1NQS0lEYXRhOworY2xhc3MgRFNJR0tleUluZm9WYWx1ZTsKK2NsYXNzIERTSUdLZXlJbmZvWDUwOTsKK2NsYXNzIFhLTVNVc2VLZXlXaXRoOworCitYU0VDX0RFQ0xBUkVfWEVSQ0VTX0NMQVNTKERPTUVsZW1lbnQpOworCisvKioKKyAqIEBpbmdyb3VwIHhrbXMKKyAqLworCisvKioKKyAqIEBicmllZiBJbnRlcmZhY2UgZGVmaW5pdGlvbiBmb3IgdGhlIEtleUJpbmRpbmdBYnN0cmFjdFR5cGUKKyAqCisgKiBUaGUgXDxLZXlCaW5kaW5nQWJzdHJhY3RUeXBlXD4gaXMgYW4gYWJzdHJhY3QgdHlwZSBvbiB3aGljaCBhbGwKKyAqIEtleUJpbmRpbmcgY29tcG9uZW50cyBhcmUgYnVpbGQuCisgKgorICogVGhlIHNjaGVtYSBkZWZpbml0aW9uIGZvciBLZXlCaW5kaW5nQWJzdHJhY3RUeXBlIGlzIGFzIGZvbGxvd3MgOgorICoKKyAqIFx2ZXJiYXRpbQorICAgPCEtLSBLZXlCaW5kaW5nQWJzdHJhY3RUeXBlLS0+CisgICA8Y29tcGxleFR5cGUgbmFtZT0iS2V5QmluZGluZ0Fic3RyYWN0VHlwZSIgYWJzdHJhY3Q9InRydWUiPgorICAgICAgPHNlcXVlbmNlPgorICAgICAgICAgPGVsZW1lbnQgcmVmPSJkczpLZXlJbmZvIiBtaW5PY2N1cnM9IjAiLz4KKyAgICAgICAgIDxlbGVtZW50IHJlZj0ieGttczpLZXlVc2FnZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9IjMiLz4KKyAgICAgICAgIDxlbGVtZW50IHJlZj0ieGttczpVc2VLZXlXaXRoIiBtaW5PY2N1cnM9IjAiIAorICAgICAgICAgICAgICAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KKyAgICAgIDwvc2VxdWVuY2U+CisgICAgICA8YXR0cmlidXRlIG5hbWU9IklkIiB0eXBlPSJJRCIgdXNlPSJvcHRpb25hbCIvPgorICAgPC9jb21wbGV4VHlwZT4KKyAgIDwhLS0gL0tleUJpbmRpbmdBYnN0cmFjdFR5cGUtLT4KK1xlbmR2ZXJiYXRpbQorICovCisKKworY2xhc3MgWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGUgeworCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisKK3Byb3RlY3RlZDoKKworCVhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlKCkge307CisKK3B1YmxpYzoKKworCXZpcnR1YWwgflhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlKCkge307CisKKwkvKiogQG5hbWUgR2V0dGVyIEludGVyZmFjZSBNZXRob2RzICovCisJLy9AeworCisJLyoKKwkgKiBcYnJpZWYgT2J0YWluIHRoZSBiYXNlIEVsZW1lbnQgZm9yIHRoaXMgc3RydWN0dXJlCisJICoKKwkgKiBAcmV0dXJucyB0aGUgRWxlbWVudCBub2RlIGF0IHRoZSBoZWFkIG9mIHRoZSBET00gc3RydWN0dXJlCisJICovCisKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogZ2V0RWxlbWVudCh2b2lkKSBjb25zdCA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBJZCBmb3IgdGhlIEtleUJpbmRpbmcKKwkgKgorCSAqIEFsbCBLZXlCaW5kaW5nIGVsZW1lbnRzIE1BWSBoYXZlIGFuIElkIGF0dHJpYnV0ZSB0aGF0IAorCSAqIGlkZW50aWZpZXMgdGhlIGJpbmRpbmcuICBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIHJldHJpZXZlIGEgcG9pbnRlcgorCSAqIHRvIHRoZSBJZCBzdHJpbmcuCisJICoKKwkgKiBAcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIElkIHN0cmluZyAob3duZWQgYnkgdGhlIGxpYnJhcnkpCisJICovCisKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0SWQodm9pZCkgY29uc3QgPSAwOworCisJLyoqCisJICogXGJyaWVmIE9idGFpbiB0aGUgS2V5SW5mbyBlbGVtZW50cyBmb3IgdGhpcyBLZXlCaW5kaW5nCisJICoKKwkgKiBLZXlCaW5kaW5nIGVsZW1lbnRzIG1heSBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBrZXlzIHRoYXQgYXJlIGJlaW5nCisJICogYm91bmQuCisJICoKKwkgKiBAcmV0dXJucyBBIEtleUluZm9MaXN0IG9iamVjdCBjb250YWluaW5nIGFsbCB0aGUgS2V5SW5mbyBlbGVtZW50cworCSAqLworCisJdmlydHVhbCBEU0lHS2V5SW5mb0xpc3QgKiBnZXRLZXlJbmZvTGlzdCh2b2lkKSBjb25zdCA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgRGV0ZXJtaW5lIGlmIGFuIEVuY3J5cHRpb24ga2V5IHVzYWdlIGlzIHNldAorCSAqCisJICogS2V5QmluZGluZyBlbGVtZW50cyBtYXkgZGVmaW5lIEVuY3J5cHRpb24sIFNpZ25hdHVyZSBvZiBFeGNoYW5nZSBhcyBiZWluZworCSAqIHBlcm1pdHRlZCBmb3IgYSBwYXJ0aWN1bGFyIGtleS4KKwkgKgorCSAqIEByZXR1cm5zIHdoZXRoZXIgdGhlIEVuY3J5cHRpb24gS2V5VXNhZ2UgZWxlbWVudCBpcyBzZXQKKwkgKi8KKworCXZpcnR1YWwgYm9vbCBnZXRFbmNyeXB0aW9uS2V5VXNhZ2Uodm9pZCkgY29uc3QgPSAwOworCisJLyoqCisJICogXGJyaWVmIERldGVybWluZSBpZiBhbiBTaWduYXR1cmUga2V5IHVzYWdlIGlzIHNldAorCSAqCisJICogS2V5QmluZGluZyBlbGVtZW50cyBtYXkgZGVmaW5lIEVuY3J5cHRpb24sIFNpZ25hdHVyZSBvZiBFeGNoYW5nZSBhcyBiZWluZworCSAqIHBlcm1pdHRlZCBmb3IgYSBwYXJ0aWN1bGFyIGtleS4KKwkgKgorCSAqIEByZXR1cm5zIHdoZXRoZXIgdGhlIFNpZ25hdHVyZSBLZXlVc2FnZSBlbGVtZW50IGlzIHNldAorCSAqLworCisJdmlydHVhbCBib29sIGdldFNpZ25hdHVyZUtleVVzYWdlKHZvaWQpIGNvbnN0ID0gMDsKKworCS8qKgorCSAqIFxicmllZiBEZXRlcm1pbmUgaWYgYW4gRXhjaGFuZ2Uga2V5IHVzYWdlIGlzIHNldAorCSAqCisJICogS2V5QmluZGluZyBlbGVtZW50cyBtYXkgZGVmaW5lIEVuY3J5cHRpb24sIFNpZ25hdHVyZSBvZiBFeGNoYW5nZSBhcyBiZWluZworCSAqIHBlcm1pdHRlZCBmb3IgYSBwYXJ0aWN1bGFyIGtleS4KKwkgKgorCSAqIEByZXR1cm5zIHdoZXRoZXIgdGhlIEV4Y2hhbmdlIEtleVVzYWdlIGVsZW1lbnQgaXMgc2V0CisJICovCisKKwl2aXJ0dWFsIGJvb2wgZ2V0RXhjaGFuZ2VLZXlVc2FnZSh2b2lkKSBjb25zdCA9IDA7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgU2V0dGVyIGludGVyZmFjZSBtZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUgSWQgVVJJIGZvciB0aGUgTWVzc2FnZQorCSAqCisJICogQWxsb3dzIGEgY2FsbGluZyBhcHBsaWNhdGlvbiB0byBzZXQgYSBuZXcgSWQgZm9yIHRoZQorCSAqIEtleUJpbmRpbmcKKwkgKgorCSAqIEBwYXJhbSBpZCBUaGUgSWQgdG8gc2V0IC0gaWYgTlVMTCwgdGhlIGxpYnJhcnkgd2lsbCBnZW5lcmF0ZSBhIHJhbmRvbSBJZAorCSAqLworCisJdmlydHVhbCB2b2lkIHNldElkKGNvbnN0IFhNTENoICogaWQgPSBOVUxMKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgU2V0IEVuY3J5cHRpb24ga2V5IHVzYWdlIG9uCisJICoKKwkgKiBLZXlCaW5kaW5nIGVsZW1lbnRzIG1heSBkZWZpbmUgRW5jcnlwdGlvbiwgU2lnbmF0dXJlIG9mIEV4Y2hhbmdlIGFzIGJlaW5nCisJICogcGVybWl0dGVkIGZvciBhIHBhcnRpY3VsYXIga2V5LiAgV2hlbiBmaXJzdCBjcmVhdGVkLCBhbGwgdGhlc2UgZWxlbWVudHMKKwkgKiBhcmUgb2ZmICh3aGljaCBpbmRpY2F0ZXMgdGhhdCBhbGwgYXJlIHBlcm1pdHRlZCkuCisJICoKKwkgKiBUaGlzIGNhbGwgYWN0aXZhdGVzIHRoZSBFbmNyeXB0aW9uIGtleSB1c2FnZSBmb3IgdGhpcyBLZXlCaW5kaW5nCisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0RW5jcnlwdGlvbktleVVzYWdlKHZvaWQpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBTZXQgU2lnbmF0dXJlIGtleSB1c2FnZSBvbgorCSAqCisJICogS2V5QmluZGluZyBlbGVtZW50cyBtYXkgZGVmaW5lIEVuY3J5cHRpb24sIFNpZ25hdHVyZSBvZiBFeGNoYW5nZSBhcyBiZWluZworCSAqIHBlcm1pdHRlZCBmb3IgYSBwYXJ0aWN1bGFyIGtleS4gIFdoZW4gZmlyc3QgY3JlYXRlZCwgYWxsIHRoZXNlIGVsZW1lbnRzCisJICogYXJlIG9mZiAod2hpY2ggaW5kaWNhdGVzIHRoYXQgYWxsIGFyZSBwZXJtaXR0ZWQpLgorCSAqCisJICogVGhpcyBjYWxsIGFjdGl2YXRlcyB0aGUgU2lnbmF0dXJlIGtleSB1c2FnZSBmb3IgdGhpcyBLZXlCaW5kaW5nCisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0U2lnbmF0dXJlS2V5VXNhZ2Uodm9pZCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIFNldCBFeGNoYW5nZSBrZXkgdXNhZ2Ugb24KKwkgKgorCSAqIEtleUJpbmRpbmcgZWxlbWVudHMgbWF5IGRlZmluZSBFbmNyeXB0aW9uLCBTaWduYXR1cmUgb2YgRXhjaGFuZ2UgYXMgYmVpbmcKKwkgKiBwZXJtaXR0ZWQgZm9yIGEgcGFydGljdWxhciBrZXkuICBXaGVuIGZpcnN0IGNyZWF0ZWQsIGFsbCB0aGVzZSBlbGVtZW50cworCSAqIGFyZSBvZmYgKHdoaWNoIGluZGljYXRlcyB0aGF0IGFsbCBhcmUgcGVybWl0dGVkKS4KKwkgKgorCSAqIFRoaXMgY2FsbCBhY3RpdmF0ZXMgdGhlIEV4Y2hhbmdlIGtleSB1c2FnZSBmb3IgdGhpcyBLZXlCaW5kaW5nCisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0RXhjaGFuZ2VLZXlVc2FnZSh2b2lkKSA9IDA7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgS2V5SW5mbyBFbGVtZW50IE1hbmlwdWxhdGlvbiAqLworCQorCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIGxpc3Qgb2YgXDxLZXlJbmZvXD4gZWxlbWVudHMuCisJICoKKwkgKiA8cD5UaGlzIGZ1bmN0aW9uIHJlY292ZXJzIGxpc3QgdGhhdCBjb250YWlucyB0aGUgS2V5SW5mbyBlbGVtZW50cworCSAqIHJlYWQgaW4gZnJvbSB0aGUgRE9NIGRvY3VtZW50LjwvcD4KKwkgKgorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgKGxpYnJhcnkgb3duZWQpIEtleUluZm8gbGlzdCwgb3IgTlVMTAorCSAqIGlmIG5vbmUgZXhpc3RzIGluIHRoZSBLZXlCaW5kaW5nLgorCSAqLworCQorCXZpcnR1YWwgRFNJR0tleUluZm9MaXN0ICogZ2V0S2V5SW5mb0xpc3Qodm9pZCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIENsZWFyIG91dCBhbGwgS2V5SW5mbyBlbGVtZW50cyBpbiB0aGUgS2V5QmluZGluZy4KKwkgKgorCSAqIFRoaXMgZnVuY3Rpb24gd2lsbCBkZWxldGUgYWxsIEtleUluZm8gZWxlbWVudHMgZnJvbSBib3RoIHRoZSBLZXlCaW5kaW5nCisJICogb2JqZWN0IDxlbT5hbmQgdGhlIGFzc29jaWF0ZWQgRE9NPC9lbT4uCisJICoKKwkgKi8KKworCXZpcnR1YWwgdm9pZCBjbGVhcktleUluZm8odm9pZCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIEFwcGVuZCBhIERTQSBLZXlWYWx1ZSBlbGVtZW50IAorCSAqCisJICogQWRkIGEgbmV3IEtleUluZm8gZWxlbWVudCBmb3IgYSBEU0EgVmFsdWUKKwkgKgorCSAqIEBwYXJhbSBQIEJhc2U2NCBlbmNvZGVkIHZhbHVlIG9mIFAKKwkgKiBAcGFyYW0gUSBCYXNlNjQgZW5jb2RlZCB2YWx1ZSBvZiBRCisJICogQHBhcmFtIEcgQmFzZTY0IGVuY29kZWQgdmFsdWUgb2YgRworCSAqIEBwYXJhbSBZIEJhc2U2NCBlbmNvZGVkIHZhbHVlIG9mIFkKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0LgorCSAqLworCisJdmlydHVhbCBEU0lHS2V5SW5mb1ZhbHVlICogYXBwZW5kRFNBS2V5VmFsdWUoY29uc3QgWE1MQ2ggKiBQLCAKKwkJCQkJCSAgIGNvbnN0IFhNTENoICogUSwgCisJCQkJCQkgICBjb25zdCBYTUxDaCAqIEcsIAorCQkJCQkJICAgY29uc3QgWE1MQ2ggKiBZKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgQXBwZW5kIGEgUlNBIEtleVZhbHVlIGVsZW1lbnQgCisJICoKKwkgKiBBZGQgYSBuZXcgS2V5SW5mbyBlbGVtZW50IGZvciBhIFJTQSBWYWx1ZQorCSAqCisJICogQHBhcmFtIG1vZHVsdXMgQmFzZTY0IGVuY29kZWQgdmFsdWUgb2YgdGhlIG1vZHVsdXMKKwkgKiBAcGFyYW0gZXhwb25lbnQgQmFzZTY0IGVuY29kZWQgdmFsdWUgb2YgZXhwb25lbnQKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0LgorCSAqLworCisJdmlydHVhbCBEU0lHS2V5SW5mb1ZhbHVlICogYXBwZW5kUlNBS2V5VmFsdWUoY29uc3QgWE1MQ2ggKiBtb2R1bHVzLCAKKwkJCQkJCSAgIGNvbnN0IFhNTENoICogZXhwb25lbnQpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBBcHBlbmQgYSBYNTA5RGF0YSBlbGVtZW50LgorCSAqCisJICogQWRkIGEgbmV3IEtleUluZm8gZWxlbWVudCBmb3IgWDUwOSBkYXRhLgorCSAqCisJICogQG5vdGUgVGhlIGFkZGVkIGVsZW1lbnQgaXMgZW1wdHkuICBUaGUgY2FsbGVyIG11c3QgbWFrZSB1c2Ugb2YgdGhlCisJICogcmV0dXJuZWQgb2JqZWN0IHRvIHNldCB0aGUgcmVxdWlyZWQgdmFsdWVzLgorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBjcmVhdGVkIG9iamVjdC4KKwkgKi8KKworCXZpcnR1YWwgRFNJR0tleUluZm9YNTA5ICogYXBwZW5kWDUwOURhdGEodm9pZCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIEFwcGVuZCBhIEtleU5hbWUgZWxlbWVudC4KKwkgKgorCSAqIEFkZCBhIG5ldyBLZXlJbmZvIGVsZW1lbnQgZm9yIGEga2V5IG5hbWUuCisJICoKKwkgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUga2V5IHRvIHNldCBpbiB0aGUgWE1MCisJICogQHBhcmFtIGlzRE5hbWUgVHJlYXQgdGhlIG5hbWUgYXMgYSBEaXN0aW5ndWlzaGVkIG5hbWUgYW5kIGVuY29kZSBhY2NvcmRpbmdseQorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgY3JlYXRlZCBvYmplY3QKKwkgKi8KKworCXZpcnR1YWwgRFNJR0tleUluZm9OYW1lICogYXBwZW5kS2V5TmFtZShjb25zdCBYTUxDaCAqIG5hbWUsIGJvb2wgaXNETmFtZSA9IGZhbHNlKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgQXBwZW5kIGEgUEdQRGF0YSBlbGVtZW50LgorCSAqCisJICogQWRkIGEgbmV3IEtleUluZm8gZWxlbWVudCBmb3IgYSBQR1Aga2V5LgorCSAqCisJICogQHBhcmFtIGlkIFRoZSBJRCBvZiB0aGUga2V5IHRvIHNldCBpbiB0aGUgWE1MIChiYXNlNjQgZW5jb2RlZCAtIE5VTEwgaWYgbm9uZSkKKwkgKiBAcGFyYW0gcGFja2V0IFRoZSBQYWNrZXQgaW5mb3JtYXRpb24gdG8gc2V0IGluIHRoZSBYTUwgKGJhc2U2NCBlbmNvZGVkIC0KKwkgKiBOVUxMIGlmIG5vbmUpCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBjcmVhdGVkIG9iamVjdAorCSAqLworCisJdmlydHVhbCBEU0lHS2V5SW5mb1BHUERhdGEgKiBhcHBlbmRQR1BEYXRhKGNvbnN0IFhNTENoICogaWQsIGNvbnN0IFhNTENoICogcGFja2V0KSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgQXBwZW5kIGEgU1BLSURhdGEgZWxlbWVudAorCSAqCisJICogQWRkIGEgbmV3IEtleUluZm8gZWxlbWVudCBmb3IgYSBzZXQgb2YgU1BLSSBTLWV4cHJlc3Npb25zCisJICoKKwkgKiBAcGFyYW0gc2V4cCBUaGUgaW5pdGlhbCBTLWV4cHJlc3Npb24gdG8gc2V0IGluIHRoZSBTUEtJRGF0YSBlbGVtZW50CisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBjcmVhdGVkIG9iamVjdAorCSAqLworCisJdmlydHVhbCBEU0lHS2V5SW5mb1NQS0lEYXRhICogYXBwZW5kU1BLSURhdGEoY29uc3QgWE1MQ2ggKiBzZXhwKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgQXBwZW5kIGEgTWdtdERhdGEgZWxlbWVudAorCSAqCisJICogQWRkIGEgbmV3IEtleUluZm8gZWxlbWVudCBmb3IgTWFuYWdlbWVudCBEYXRhCisJICoKKwkgKiBAcGFyYW0gZGF0YSBUaGUgc3RyaW5nIHRvIHNldCBpbiB0aGUgTWdtdERhdGEgZWxlbWVudAorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgY3JlYXRlZCBvYmplY3QKKwkgKi8KKworCXZpcnR1YWwgRFNJR0tleUluZm9NZ210RGF0YSAqIGFwcGVuZE1nbXREYXRhKGNvbnN0IFhNTENoICogZGF0YSkgPSAwOworCisJLy9AfQorCisJLyoqIEBuYW1lIFVzZUtleVdpdGggaGFuZGxpbmcgICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIEZpbmQgbnVtYmVyIG9mIFVzZUtleVdpdGggZWxlbWVudHMKKwkgKgorCSAqIEByZXR1cm5zIHRoZSBudW1iZXIgb2YgVXNlS2V5V2l0aCBpdGVtcyB3aXRoaW4gdGhlIEtleUJpbmRpbmcKKwkgKi8KKworCXZpcnR1YWwgaW50IGdldFVzZUtleVdpdGhTaXplKHZvaWQpIGNvbnN0ID0gMDsKKworCS8qCisJICogXGJyaWVmIE9idGFpbiBhbiBVc2VLZXlXaXRoIGl0ZW0KKwkgKgorCSAqIEBwYXJhbSBpdGVtIEluZGV4IG9mIHRoZSBpdGVtIHRvIHJldHVybiAoMCA9IGZpcnN0IGVsZW1lbnQpCisJICogQHJldHVybnMgdGhlIFVzZUtleVdpdGggcmVmZXJlbmNlZCBieSAiaXRlbSIKKwkgKi8KKworCXZpcnR1YWwgWEtNU1VzZUtleVdpdGggKiBnZXRVc2VLZXlXaXRoSXRlbShpbnQgaXRlbSkgY29uc3QgPSAwOworCisJLyoKKwkgKiBcYnJpZWYgQXBwZW5kIGEgbmV3IFVudmVyaWZpZWRLZXlCaW5kaW5nIGVsZW1lbnQKKwkgKgorCSAqIEFsbG93cyBjYWxsZXJzIHRvIGFwcGVuZCBhIG5ldyBVbnZlcmlmaWVkS2V5QmluZGluZyBpdGVtLgorCSAqIFRoZSBpdGVtIGlzIGluaXRpYWxseSBlbXB0eSBvZiBLZXlJbmZvIGVsZW1lbnRzIC0gdGhlc2UgbXVzdCBiZSBhZGRlZAorCSAqIGJ5IHRoZSBjYWxsZXIuCisJICoKKwkgKiBAcmV0dXJucyB0aGUgbmV3bHkgY3JlYXRlZCBVbnZlcmlmaWVkS2V5QmluZGluZyBvYmplY3QgKGFscmVhZHkgaW5zZXJ0ZWQKKwkgKiBpbiB0aGUgTG9jYXRlUmVzdWx0CisJICovCisKKwl2aXJ0dWFsIFhLTVNVc2VLZXlXaXRoICogYXBwZW5kVXNlS2V5V2l0aEl0ZW0oCisJCQljb25zdCBYTUxDaCAqIGFwcGxpY2F0aW9uLCAgCisJCQljb25zdCBYTUxDaCAqIGlkZW50aWZpZXIpID0gMDsKKworCS8vQH0KKworcHJpdmF0ZToKKworCS8vIFVuaW1wbGVtZW50ZWQKKwlYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZShjb25zdCBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZSAmKTsKKwlYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZSAmIG9wZXJhdG9yID0gKGNvbnN0IFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlICYpOworCit9OworCisjZW5kaWYgLyogWEtNU0tFWUJJTkRJTkdBQlNUUkFDVFRZUEVfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9YS01TTG9jYXRlUmVxdWVzdC5ocHAgYi9jL3NyYy94a21zL1hLTVNMb2NhdGVSZXF1ZXN0LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGUzMDc3Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9YS01TTG9jYXRlUmVxdWVzdC5ocHAKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNMb2NhdGVSZXF1ZXN0IDo9IEludGVyZmFjZSBmb3IgTG9jYXRlUmVxdWVzdCBNZXNzYWdlcworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYS01TTE9DQVRFUkVRVUVTVF9JTkNMVURFCisjZGVmaW5lIFhLTVNMT0NBVEVSRVFVRVNUX0lOQ0xVREUKKworLy8gWFNFQyBJbmNsdWRlcworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TUmVxdWVzdEFic3RyYWN0VHlwZS5ocHA+CisKK2NsYXNzIFhLTVNRdWVyeUtleUJpbmRpbmc7CisKKy8qKgorICogQGluZ3JvdXAgeGttcworICovCisKKy8qKgorICogQGJyaWVmIEludGVyZmFjZSBkZWZpbml0aW9uIGZvciB0aGUgTG9jYXRlUmVxdWVzdCBlbGVtZW50cworICoKKyAqIFRoZSBcPExvY2F0ZVJlcXVlc3RcPiBpcyBvbmUgb2YgdGhlIGZ1bmRhbWVudGFsIG1lc3NhZ2UgdHlwZXMgb2YKKyAqIHRoZSBYS0lTUyBzZXJ2aWNlLiAgSXQgaXMgdXNlZCBieSB0aGUgTG9jYXRlIHNlcnZpY2UgdG8gZmluZCBhIGtleQorICogYW5kIHJldHVybiBhIHNldCBvZiBrZXkgYmluZGluZ3MgZm9yIHRoYXQga2V5LgorICoKKyAqIFRoZSBzY2hlbWEgZGVmaW5pdGlvbiBmb3IgTG9jYXRlUmVxdWVzdCBpcyBhcyBmb2xsb3dzIDoKKyAqCisgKiBcdmVyYmF0aW0KKyAgIDwhLS0gTG9jYXRlUmVxdWVzdCAtLT4KKyAgIDxlbGVtZW50IG5hbWU9IkxvY2F0ZVJlcXVlc3QiIHR5cGU9InhrbXM6TG9jYXRlUmVxdWVzdFR5cGUiLz4KKyAgIDxjb21wbGV4VHlwZSBuYW1lPSJMb2NhdGVSZXF1ZXN0VHlwZSI+CisgICAgICA8Y29tcGxleENvbnRlbnQ+CisgICAgICAgICA8ZXh0ZW5zaW9uIGJhc2U9InhrbXM6UmVxdWVzdEFic3RyYWN0VHlwZSI+CisgICAgICAgICAgICA8c2VxdWVuY2U+CisgICAgICAgICAgICAgICA8ZWxlbWVudCByZWY9InhrbXM6UXVlcnlLZXlCaW5kaW5nIi8+CisgICAgICAgICAgICA8L3NlcXVlbmNlPgorICAgICAgICAgPC9leHRlbnNpb24+CisgICAgICA8L2NvbXBsZXhDb250ZW50PgorICAgPC9jb21wbGV4VHlwZT4KKyAgIDwhLS0gL0xvY2F0ZVJlcXVlc3QgLS0+CitcZW5kdmVyYmF0aW0KKyAqLworCitjbGFzcyBYS01TTG9jYXRlUmVxdWVzdCA6IHB1YmxpYyBYS01TUmVxdWVzdEFic3RyYWN0VHlwZSB7CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworcHJvdGVjdGVkOgorCisJWEtNU0xvY2F0ZVJlcXVlc3QoKSB7fTsKKworcHVibGljOgorCisJdmlydHVhbCB+WEtNU0xvY2F0ZVJlcXVlc3QoKSB7fTsKKworCS8qKiBAbmFtZSBHZXR0ZXIgSW50ZXJmYWNlIE1ldGhvZHMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIHRoZSBlbGVtZW50IGF0IHRoZSBiYXNlIG9mIHRoZSBtZXNzYWdlCisJICovCisKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogZ2V0RWxlbWVudCh2b2lkKSBjb25zdCA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgT2J0YWluIHRoZSBRdWVyeUtleUJpbmRpbmcgZWxlbWVudAorCSAqCisJICogVGhlIFF1ZXJ5S2V5QmluZGluZyBlbGVtZW50IGlzIHRoZSBjb3JlIG9mIHRoZSBMb2NhdGVSZXF1ZXN0IG1lc3NhZ2UsIGFuZAorCSAqIGRlZmluZXMgdGhlIHB1YmxpYyBrZXkgaW5mb3JtYXRpb24gdGhhdCB3aWxsIGJlIHNlbnQgdG8gdGhlIHNlcnZlci4KKwkgKgorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgWEtNU1F1ZXJ5S2V5QmluZGluZyBlbGVtZW50CisJICovCisKKwl2aXJ0dWFsIFhLTVNRdWVyeUtleUJpbmRpbmcgKiBnZXRRdWVyeUtleUJpbmRpbmcodm9pZCkgPSAwOworCisJLy9AfQorCisJLyoqIEBuYW1lIFNldHRlciBJbnRlcmZhY2UgTWV0aG9kcyAqLworCS8vQHsKKworCS8qKiBcYnJpZWYgQWRkIGEgUXVlcnlLZXlCaW5kaW5nIGVsZW1lbnQKKwkgKgorCSAqIFNldCBhIFF1ZXJ5S2V5QmluZGluZyBlbGVtZW50IGluIHRoZSBMb2NhdGVSZXF1ZXN0IG1lc3NhZ2UuICBUaGUgcmV0dXJuZWQKKwkgKiBvYmplY3QgY2FuIGJlIG1hbmlwdWxhdGVkIHRvIGFkZCBLZXlJbmZvIGVsZW1lbnRzIHRvIHRoZSBMb2NhdGVSZXF1ZXN0LgorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBuZXdseSBjcmVhdGVkIFF1ZXJ5S2V5QmluZGluZyBvYmplY3QsIG9yCisJICogdGhlIHBvaW50ZXIgdG8gZXh0YW50IG9iamVjdCBpZiBvbmUgYWxyZWFkeSBleGlzdGVkLgorCSAqLworCisJdmlydHVhbCBYS01TUXVlcnlLZXlCaW5kaW5nICogYWRkUXVlcnlLZXlCaW5kaW5nKHZvaWQpID0gMDsKKworCS8vQH0KKworcHJpdmF0ZToKKworCS8vIFVuaW1wbGVtZW50ZWQKKwlYS01TTG9jYXRlUmVxdWVzdChjb25zdCBYS01TTG9jYXRlUmVxdWVzdCAmKTsKKwlYS01TTG9jYXRlUmVxdWVzdCAmIG9wZXJhdG9yID0gKGNvbnN0IFhLTVNMb2NhdGVSZXF1ZXN0ICYpOworCit9OworCisjZW5kaWYgLyogWEtNU0xPQ0FURVJFUVVFU1RfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9YS01TTG9jYXRlUmVzdWx0LmhwcCBiL2Mvc3JjL3hrbXMvWEtNU0xvY2F0ZVJlc3VsdC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVmMTA4MAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvWEtNU0xvY2F0ZVJlc3VsdC5ocHAKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNMb2NhdGVSZXN1bHQgOj0gSW50ZXJmYWNlIGZvciBMb2NhdGVSZXN1bHQgTWVzc2FnZXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEtNU0xPQ0FURVJFU1VMVF9JTkNMVURFCisjZGVmaW5lIFhLTVNMT0NBVEVSRVNVTFRfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNSZXN1bHRUeXBlLmhwcD4KKworY2xhc3MgWEtNU1F1ZXJ5S2V5QmluZGluZzsKK2NsYXNzIFhLTVNVbnZlcmlmaWVkS2V5QmluZGluZzsKKworLyoqCisgKiBAaW5ncm91cCB4a21zCisgKi8KKworLyoqCisgKiBAYnJpZWYgSW50ZXJmYWNlIGRlZmluaXRpb24gZm9yIHRoZSBMb2NhdGVSZXN1bHQgZWxlbWVudHMKKyAqCisgKiBUaGUgXDxMb2NhdGVSZXN1bHRcPiBpcyBvbmUgb2YgdGhlIGZ1bmRhbWVudGFsIG1lc3NhZ2UgdHlwZXMgb2YKKyAqIHRoZSBYS0lTUyBzZXJ2aWNlLiAgSXQgaXMgdXNlZCBieSB0aGUgTG9jYXRlIHNlcnZpY2UgdG8gcmV0dXJuIGEga2V5CisgKiBhbmQgdGhlIGJpbmRpbmdzIGZvciB0aGF0IGtleS4KKyAqCisgKiBUaGUgc2NoZW1hIGRlZmluaXRpb24gZm9yIExvY2F0ZVJlc3BvbnNlIGlzIGFzIGZvbGxvd3MgOgorICoKKyAqIFx2ZXJiYXRpbQorICAgPCEtLSBMb2NhdGVSZXN1bHQgLS0+CisgICA8ZWxlbWVudCBuYW1lPSJMb2NhdGVSZXN1bHQiIHR5cGU9InhrbXM6TG9jYXRlUmVzdWx0VHlwZSIvPgorICAgPGNvbXBsZXhUeXBlIG5hbWU9IkxvY2F0ZVJlc3VsdFR5cGUiPgorICAgICAgPGNvbXBsZXhDb250ZW50PgorICAgICAgICAgPGV4dGVuc2lvbiBiYXNlPSJ4a21zOlJlc3VsdFR5cGUiPgorICAgICAgICAgICAgPHNlcXVlbmNlPgorICAgICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJ4a21zOlVudmVyaWZpZWRLZXlCaW5kaW5nIiBtaW5PY2N1cnM9IjAiIAorICAgICAgICAgICAgICAgICAgICAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KKyAgICAgICAgICAgIDwvc2VxdWVuY2U+CisgICAgICAgICA8L2V4dGVuc2lvbj4KKyAgICAgIDwvY29tcGxleENvbnRlbnQ+CisgICA8L2NvbXBsZXhUeXBlPgorICAgPCEtLSAvTG9jYXRlUmVzdWx0IC0tPgorXGVuZHZlcmJhdGltCisgKi8KKworY2xhc3MgWEtNU0xvY2F0ZVJlc3VsdCA6IHB1YmxpYyBYS01TUmVzdWx0VHlwZSB7CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworcHJvdGVjdGVkOgorCisJWEtNU0xvY2F0ZVJlc3VsdCgpIHt9OworCitwdWJsaWM6CisKKwl2aXJ0dWFsIH5YS01TTG9jYXRlUmVzdWx0KCkge307CisKKwkvKiogQG5hbWUgR2V0dGVyIEludGVyZmFjZSBNZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFJldHVybiB0aGUgZWxlbWVudCBhdCB0aGUgYmFzZSBvZiB0aGUgbWVzc2FnZQorCSAqLworCisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGdldEVsZW1lbnQodm9pZCkgY29uc3QgPSAwOworCisJLy9AfQorCisJLyoqIEBuYW1lIFVudmVyaWZpZWRLZXlCaW5kaW5nIGhhbmRsaW5nICAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBGaW5kIG51bWJlciBvZiBVbnZlcmlmaWVkS2V5QmluZGluZyBlbGVtZW50cworCSAqCisJICogQHJldHVybnMgdGhlIG51bWJlciBvZiBVbnZlcmlmaWVkS2V5QmluZGluZyBpdGVtcyB3aXRoaW4gdGhlIExvY2F0ZVJlc3VsdAorCSAqLworCisJdmlydHVhbCBpbnQgZ2V0VW52ZXJpZmllZEtleUJpbmRpbmdTaXplKHZvaWQpIGNvbnN0ID0gMDsKKworCS8qCisJICogXGJyaWVmIE9idGFpbiBhbiBVbnZlcmlmaWVkS2V5QmluZGluZyBpdGVtCisJICoKKwkgKiBAcGFyYW0gaXRlbSBJbmRleCBvZiB0aGUgaXRlbSB0byByZXR1cm4gKDAgPSBmaXJzdCBlbGVtZW50KQorCSAqIEByZXR1cm5zIHRoZSBVbnZlcmlmaWVkS2V5QmluZGluZyByZWZlcmVuY2VkIGJ5ICJpdGVtIgorCSAqLworCisJdmlydHVhbCBYS01TVW52ZXJpZmllZEtleUJpbmRpbmcgKiBnZXRVbnZlcmlmaWVkS2V5QmluZGluZ0l0ZW0oaW50IGl0ZW0pIGNvbnN0ID0gMDsKKworCS8qCisJICogXGJyaWVmIEFwcGVuZCBhIG5ldyBVbnZlcmlmaWVkS2V5QmluZGluZyBlbGVtZW50CisJICoKKwkgKiBBbGxvd3MgY2FsbGVycyB0byBhcHBlbmQgYSBuZXcgVW52ZXJpZmllZEtleUJpbmRpbmcgaXRlbS4KKwkgKiBUaGUgaXRlbSBpcyBpbml0aWFsbHkgZW1wdHkgb2YgS2V5SW5mbyBlbGVtZW50cyAtIHRoZXNlIG11c3QgYmUgYWRkZWQKKwkgKiBieSB0aGUgY2FsbGVyLgorCSAqCisJICogQHJldHVybnMgdGhlIG5ld2x5IGNyZWF0ZWQgVW52ZXJpZmllZEtleUJpbmRpbmcgb2JqZWN0IChhbHJlYWR5IGluc2VydGVkCisJICogaW4gdGhlIExvY2F0ZVJlc3VsdAorCSAqLworCisJdmlydHVhbCBYS01TVW52ZXJpZmllZEtleUJpbmRpbmcgKiBhcHBlbmRVbnZlcmlmaWVkS2V5QmluZGluZ0l0ZW0odm9pZCApID0gMDsKKworCS8vQH0KKworcHJpdmF0ZToKKworCS8vIFVuaW1wbGVtZW50ZWQKKwlYS01TTG9jYXRlUmVzdWx0KGNvbnN0IFhLTVNMb2NhdGVSZXN1bHQgJik7CisJWEtNU0xvY2F0ZVJlc3VsdCAmIG9wZXJhdG9yID0gKGNvbnN0IFhLTVNMb2NhdGVSZXN1bHQgJik7CisKK307CisKKyNlbmRpZiAvKiBYS01TTE9DQVRFUkVTVUxUX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGUuaHBwIGIvYy9zcmMveGttcy9YS01TTWVzc2FnZUFic3RyYWN0VHlwZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M4N2M4NAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGUuaHBwCkBAIC0wLDAgKzEsMzA0IEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TTWVzc2FnZUFic3RyYWN0VHlwZSA6PSBJbnRlcmZhY2UgZm9yIGJhc2Ugc2NoZW1hIG9mIFhLTVMgbWVzc2FnZXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEtNU01FU1NBR0VBQlNUUkFDVFRZUEVfSU5DTFVERQorI2RlZmluZSBYS01TTUVTU0FHRUFCU1RSQUNUVFlQRV9JTkNMVURFCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR0NvbnN0YW50cy5ocHA+CisKK2NsYXNzIERTSUdTaWduYXR1cmU7CisKK1hTRUNfREVDTEFSRV9YRVJDRVNfQ0xBU1MoRE9NRWxlbWVudCk7CisKKy8qKgorICogQGluZ3JvdXAgeGttcworICovCisKKy8qKgorICogQGJyaWVmIEludGVyZmFjZSBkZWZpbml0aW9uIGZvciB0aGUgTWVzc2FnZUFic3RyYWN0VHlwZQorICoKKyAqIFRoZSBcPE1lc3NhZ2VBYnN0cmFjdFR5cGVcPiBpcyBhbiBhYnN0cmFjdCB0eXBlIG9uIHdoaWNoIGFsbAorICogb3RoZXIgWEtNUyBtZXNzYWdlcyBhcmUgYnVpbHQuICBBbGwgcmVxdWVzdC9yZXNwb25zZSBtZXNzYWdlcworICogaGF2ZSA6CisgKiA8dWw+CisgKiAgPGxpPjxiPklkPC9iPiBUaGUgdW5pcXVlIElEIG9mIHRoaXMgbWVzc2FnZTwvbGk+CisgKiAgPGxpPjxiPlNlcnZpY2U8L2I+IFRoZSBVUkkgb2YgdGhlIHNlcnZpY2UgZm9yIHdoaWNoIHRoaXMgbWVzc2FnZSBpcworICogZGVzdGluZWQgb3IgY29tZXMgZnJvbS48L2xpPgorICogIDxsaT48Yj5Ob25jZTwvYj4gKE9wdGlvbmFsKSBSYW5kb20gZGF0YSB1c2VkIHRvIGRlZmVuZCBhZ2FpbnN0IHJlcGxheSBhdHRhY2tzLgorICogPC91bD4KKyAqCisgKiBJbiBhZGRpdGlvbiwgc3VjaCBtZXNzYWdlcyBtYXkgaGF2ZSA6CisgKgorICogPHVsPgorICogIDxsaT48Yj5TaWduYXR1cmU8L2I+IFZhbGlkYXRpbmcgYXV0aGVudGljaXR5IG9mIHRoaXMgbWVzc2FnZTwvbGk+CisgKiAgPGxpPjxiPk1lc3NhZ2VFeHRlbnNpb248L2I+IFVzZWQgZm9yIGV4dGVuc2liaWxpdHk8L2xpPgorICogIDxsaT48Yj5PcGFxdWVDbGllbnREYXRhPC9iPiBVc2VkIGZvciBhcHBsaWNhdGlvbiBzcGVjaWZpYyBpbmZvPC9saT4KKyAqIDwvdWw+CisgKgorICogVGhlIHNjaGVtYSBkZWZpbml0aW9uIGZvciBNZXNzYWdlQWJzdHJhY3RUeXBlIGlzIGFzIGZvbGxvd3MgOgorICoKKyAqIFx2ZXJiYXRpbQorICAgPCEtLSBNZXNzYWdlQWJzdHJhY3RUeXBlIC0tPgorICAgPGNvbXBsZXhUeXBlIG5hbWU9Ik1lc3NhZ2VBYnN0cmFjdFR5cGUiIGFic3RyYWN0PSJ0cnVlIj4KKyAgICAgIDxzZXF1ZW5jZT4KKyAgICAgICAgIDxlbGVtZW50IHJlZj0iZHM6U2lnbmF0dXJlIiBtaW5PY2N1cnM9IjAiLz4KKyAgICAgICAgIDxlbGVtZW50IHJlZj0ieGttczpNZXNzYWdlRXh0ZW5zaW9uIiBtaW5PY2N1cnM9IjAiIAorICAgICAgICAgICAgICAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KKyAgICAgICAgIDxlbGVtZW50IHJlZj0ieGttczpPcGFxdWVDbGllbnREYXRhIiBtaW5PY2N1cnM9IjAiLz4KKyAgICAgIDwvc2VxdWVuY2U+CisgICAgICA8YXR0cmlidXRlIG5hbWU9IklkIiB0eXBlPSJJRCIgdXNlPSJyZXF1aXJlZCIvPgorICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJTZXJ2aWNlIiB0eXBlPSJhbnlVUkkiIHVzZT0icmVxdWlyZWQiLz4KKyAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iTm9uY2UiIHR5cGU9ImJhc2U2NEJpbmFyeSIgdXNlPSJvcHRpb25hbCIvPgorICAgPC9jb21wbGV4VHlwZT4KKyAgIDwhLS0gL01lc3NhZ2VBYnN0cmFjdFR5cGUgLS0+CisKKyAgXGVuZHZlcmJhdGltCisgKi8KKworCitjbGFzcyBYS01TTWVzc2FnZUFic3RyYWN0VHlwZSB7CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworcHJvdGVjdGVkOgorCisJWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGUoKSB7fTsKKworcHVibGljOgorCisJZW51bSBtZXNzYWdlVHlwZSB7CisKKwkJTm9uZSwJCQkJCS8qKiBBIGRlZmF1bHQgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgc29tZXRoaW5nIGhhc24ndCBiZWVuIHNldCAqLworCisJCS8qIFgtS0lTUyBtZXNzYWdlcyAqLworCisJCUNvbXBvdW5kUmVxdWVzdCwJCS8qKiBBIENvbXBvdW5kUmVxdWVzdCBtZXNzYWdlIC0gaG9sZGluZyBtdWx0aXBsZSByZXF1ZXN0cyAqLworCQlDb21wb3VuZFJlc3VsdCwJCQkvKiogQSBDb21wb3VuZFJlc3VsdCBtZXNzYWdlIC0gaG9sZGluZyBtdWx0aXBsZSByZXN1bHRzICovCisJCUxvY2F0ZVJlcXVlc3QsCQkJLyoqIEEgTG9jYXRlUmVxdWVzdCBtZXNzYWdlICovCisJCUxvY2F0ZVJlc3VsdCwJCQkvKiogQSBMb2NhdGVSZXN1bHQgbWVzc2FnZSAqLworCQlWYWxpZGF0ZVJlcXVlc3QsCQkvKiogQSBWYWxpZGF0ZVJlcXVlc3QgbWVzc2FnZSAqLworCQlWYWxpZGF0ZVJlc3VsdCwJCQkvKiogQSBWYWxpZGF0ZVJlc3VsdCBtZXNzYWdlICovCisJCVBlbmRpbmdSZXF1ZXN0LAkJCS8qKiBBIFBlbmRpbmdSZXF1ZXN0IG1lc3NhZ2UgKEFzeW5jaHJvbm91cyBwcm90b2NvbCkgKi8KKwkJU3RhdHVzUmVxdWVzdCwgICAgICAgICAgLyoqIEEgU3RhdHVzUmVxdWVzdCBtZXNzYWdlIChBc3luY2hyb25vdXMgcHJvdG9jb2wpICovCisJCVN0YXR1c1Jlc3VsdCwgICAgICAgICAgIC8qKiBBIFN0YXR1c1Jlc3VsdCBtZXNzYWdlIChBc3luY2hyb25vdXMgcHJvdG9jb2wpICovCisJCVJlc3VsdCwJCQkJCS8qKiBBIG5vbi1zcGVjaWZpYyByZXN1bHQgbWVzc2FnZSAqLworCisJCS8qIFgtS1JTUyBtZXNzYWdlcyAqLworCisJCVJlZ2lzdGVyUmVxdWVzdCwJCS8qKiBBIFJlZ2lzdGVyUmVxZXVzdCBtZXNzYWdlICovCisJCVJlZ2lzdGVyUmVzdWx0LAkJCS8qKiBBIFJlZ2lzdGVyUmVzdWx0IG1lc3NhZ2UgKi8KKwkJUmV2b2tlUmVxdWVzdCwJCQkvKiogQSBSZXZva2VSZXF1ZXN0IG1lc3NhZ2UgKi8KKwkJUmV2b2tlUmVzdWx0LAkJCS8qKiBBIFJldm9rZVJlc3VsdCBtZXNzYWdlICovCisJCVJlY292ZXJSZXF1ZXN0LAkJCS8qKiBBIFJlY292ZXJSZXF1ZXN0IG1lc3NhZ2UgKi8KKwkJUmVjb3ZlclJlc3VsdCwJCQkvKiogQSBSZWNvdmVyUmVzdWx0IG1lc3NhZ2UgKi8KKwkJUmVpc3N1ZVJlcXVlc3QsCQkJLyoqIEEgUmVpc3N1ZVJlcXVlc3QgbWVzc2FnZSAqLworCQlSZWlzc3VlUmVzdWx0CQkJLyoqIEEgUmVpc3N1ZVJlc3VsdCBtZXNzYWdlICovCisKKwl9OworCisJdmlydHVhbCB+WEtNU01lc3NhZ2VBYnN0cmFjdFR5cGUoKSB7fTsKKworCS8qKiBAbmFtZSBNZXNzYWdlIE1hbmlwdWxhdGlvbiBNZXRob2RzICovCisJLy9AeworCisJdmlydHVhbCBtZXNzYWdlVHlwZSBnZXRNZXNzYWdlVHlwZSh2b2lkKSA9IDA7CisKKwkvKiogQG5hbWUgR2V0dGVyIEludGVyZmFjZSBNZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIEZpbmQgb3V0IHdoZXRoZXIgdGhpcyBpcyBhIHNpZ25lZCBNZXNzYWdlCisJICoKKwkgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBtZXNzYWdlIGlzIHNpZ25lZAorCSAqLworCisJdmlydHVhbCBib29sIGlzU2lnbmVkKHZvaWQpIGNvbnN0ID0gMDsKKworCS8qKgorCSAqIFxicmllZiBSZXRyaWV2ZSB0aGUgU2lnbmF0dXJlIGluZm9ybWF0aW9uIChpZiBhbnkgaXMgYXR0YWNoZWQpCisJICoKKwkgKiBBbGwgWEtNUyBtZXNzYWdlcyBNQVkgaGF2ZSBhIFw8U2lnbmF0dXJlXD4gbm9kZSB0aGF0IGlzIHVzZWQKKwkgKiB0byBhdHRlc3QgdG8gdGhlIHZhbGlkaXR5IG9mIHRoZSBtZXNzYWdlLgorCSAqCisJICogQHJldHVybnMgVGhlIERTSUdTaWduYXR1cmUgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIE1lc3NhZ2UsCisJICogb3IgTlVMTCBpZiBub25lIGlzIGRlZmluZWQKKwkgKi8KKworCXZpcnR1YWwgRFNJR1NpZ25hdHVyZSAqIGdldFNpZ25hdHVyZSh2b2lkKSBjb25zdCA9IDA7CisKKwkvKgorCSAqIFxicmllZiBPYnRhaW4gdGhlIGJhc2UgRWxlbWVudCBmb3IgdGhpcyBzdHJ1Y3R1cmUKKwkgKgorCSAqIEByZXR1cm5zIHRoZSBFbGVtZW50IG5vZGUgYXQgdGhlIGhlYWQgb2YgdGhlIERPTSBzdHJ1Y3R1cmUKKwkgKi8KKworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBnZXRFbGVtZW50KHZvaWQpIGNvbnN0ID0gMDsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIElkIGZvciB0aGUgTWVzc2FnZQorCSAqCisJICogQWxsIG1lc3NhZ2VzIGFyZSByZXF1aXJlZCB0byBoYXZlIGFuIElkIGF0dHJpYnV0ZSB0aGF0IHVuaXF1ZWx5CisJICogaWRlbnRpZmllcyB0aGUgbWVzc2FnZS4gIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gcmV0cmlldmUgYSBwb2ludGVyCisJICogdG8gdGhlIElkIHN0cmluZy4KKwkgKgorCSAqIEByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgSWQgc3RyaW5nIChvd25lZCBieSB0aGUgbGlicmFyeSkKKwkgKi8KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRJZCh2b2lkKSBjb25zdCA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBTZXJ2aWNlIGlkZW50aWZpZXIgZm9yIHRoaXMgbWVzc2FnZQorCSAqCisJICogQWxsIE1lc3NhZ2VzIGFyZSBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFyIFhLTVMgc2VydmljZS4gIFRoaXMKKwkgKiBtZXRob2QgY2FuIGJlIHVzZWQgdG8gcmV0cmlldmUgdGhlIFNlcnZpY2UgVVJJIGZvciBhIHBhcnRpY3VsYXIKKwkgKiBtZXNzYWdlLgorCSAqCisJICogQHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBTZXJ2aWNlIFVSSSBzdHJpbmcgKG93bmVkIGJ5IHRoZSBsaWJyYXJ5KQorCSAqCisJICovCisKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0U2VydmljZSh2b2lkKSBjb25zdCA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBOb25jZSBvZiB0aGUgbWVzc2FnZQorCSAqCisJICogQWxsIG1lc3NhZ2VzIE1BWSBoYXZlIGEgbm9uY2UsIHVzZWQgdG8gcHJvdmlkZSBjcnlwdG9ncmFwaGljYWxseQorCSAqIHJhbmRvbSBkYXRhIHRoYXQgd2lsbCBoZWxwIGRlZmVuZCBhZ2FpbnN0IGEgcmVwbGF5IGF0dGFjay4KKwkgKgorCSAqIEByZXR1cm5zIEEgc3RyaW5nIChvd25lZCBieSB0aGUgbGlicmFyeSkgcHJvdmlkaW5nIHRoZSBub25jZSBkYXRhIGluCisJICogYmFzZTY0IGVuY29kZWQgZm9ybS4gIElmIG5vIE5vbmNlIGlzIHNldCwgTlVMTCBpcyByZXR1cm5lZC4KKwkgKi8KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXROb25jZSh2b2lkKSBjb25zdCA9IDA7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgU2V0dGVyIGludGVyZmFjZSBtZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUgSWQgVVJJIGZvciB0aGUgTWVzc2FnZQorCSAqCisJICogQWxsb3dzIGEgY2FsbGluZyBhcHBsaWNhdGlvbiB0byBzZXQgYSBuZXcgSWQgZm9yIHRoZQorCSAqIG1lc3NhZ2UKKwkgKiAKKwkgKiBOb3RlOiBHcmVhdCBjYXJlIHNob3VsZCBiZSB0YWtlbiBvbiByZXNldHRpbmcgSWQgYXR0cmlidXRlcywgYXMKKwkgKiB0aGV5IGFyZSB1c2VkIHRvIHRyYWNrIGEgcGFydGljdWxhciB0cmFuc2FjdGlvbiB0aHJvdWdoIGl0cworCSAqIGxpZWZjeWNsZS4KKwkgKgorCSAqIEBwYXJhbSBpZCBUaGUgSWQgdG8gc2V0CisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0SWQoY29uc3QgWE1MQ2ggKiBpZCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUgU2VydmljZSBmb3IgdGhlIE1lc3NhZ2UKKwkgKgorCSAqIFVzZWQgdG8gc2V0IGEgbmV3IHNlcnZpY2UgVVJJIGZvciBhIHBhcnRpY3VsYXIgbWVzc2FnZS4gIEluIGdlbmVyYWwsCisJICogdGhlIHNlcnZpY2UgYXR0cmlidXRlIHdvdWxkIG5vdCBiZSBleHBlY3RlZCB0byBjaGFuZ2UuCisJICoKKwkgKgorCSAqIEBwYXJhbSBzZXJ2aWNlIFN0cmluZyB0byBzZXQgaW4gdGhlIFNlcnZpY2UgYXR0cmlidXRlLgorCSAqLworCisJdmlydHVhbCB2b2lkIHNldFNlcnZpY2UoY29uc3QgWE1MQ2ggKiBzZXJ2aWNlKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgU2V0IHRoZSBOb25jZSB2YWx1ZQorCSAqCisJICogQWxsb3dzIHRoZSBhcHBsaWNhdGlvbiB0byBzZXQgYSBuZXcgTm9uY2UgdmFsdWUgKG92ZXJ3cml0aW5nIGFueQorCSAqIHRoYXQgaXMgY3VycmVudGx5IHNldCkuCisJICoKKwkgKiBAcGFyYW0gdXJpIFN0cmluZyAoYmFzZTY0IGVuY29kZWQgZGF0YSkgdG8gc2V0IGluIHRoZSBOb25jZSBhdHRyaWJ1dGUuCisJICogQG5vdGUgbm8gY2hlY2tpbmcgb2YgdGhpcyBzdHJpbmcgaXMgZG9uZSBieSB0aGUgbGlicmFyeSAtIGl0CisJICogaXMgYXNzdW1lZCB0aGF0IGl0IGlzIGEgdmFsaWQgYmFzZTY0IGVuY29kaW5nLgorCSAqLworCisJdmlydHVhbCB2b2lkIHNldE5vbmNlKGNvbnN0IFhNTENoICogdXJpKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgQWRkIGEgc2lnbmF0dXJlIHRvIHRoZSBtZXNzYWdlCisJICoKKwkgKiBBbGxvd3MgYW4gYXBwbGljYXRpb24gdG8gc2lnbiB0aGUgbWVzc2FnZQorCSAqCisJICogQHJldHVybnMgdGhlIG5ldyBTaWduYXR1cmUgc3RydWN0dXJlCisJICovCisKKwl2aXJ0dWFsIERTSUdTaWduYXR1cmUgKiBhZGRTaWduYXR1cmUoCisJCWNhbm9uaWNhbGl6YXRpb25NZXRob2QgY20gPSBDQU5PTl9DMTROX05PQywKKwkJc2lnbmF0dXJlTWV0aG9kCXNtID0gU0lHTkFUVVJFX0RTQSwKKwkJaGFzaE1ldGhvZCBobSA9IEhBU0hfU0hBMSkgPSAwOworCisJLy9AfQorCisJLyoqIEBuYW1lIE9wYXF1ZSBjbGllbnQgZGF0YSBoYW5kbGluZyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBGaW5kIHRoZSBudW1iZXIgb2YgXDxPcGFxdWVEYXRhXD4gZWxlbWVudHMKKwkgKgorCSAqIFRoZSBcPE9wYXF1ZUNsaWVudERhdGFcPiBlbGVtZW50IGNhbiBoYXZlIG11bHRpcGxlCisJICogXDxPcGFxdWVEYXRhXD4gY2hpbGRyZW4uICBUaGlzIG1ldGhvZCBhbGxvd3MgYW4gYXBwbGljYXRpb24KKwkgKiB0byBkZXRlcm1pbmUgaG93IG1hbnkgc3VjaCBjaGlsZHJlbiBleGlzdAorCSAqCisJICogQHJldHVybiBOdW1iZXIgb2YgXDxPcGFxdWVEYXRhXD4gZWxlbWVudHMKKwkgKi8KKworCXZpcnR1YWwgaW50IGdldE9wYXF1ZUNsaWVudERhdGFTaXplKHZvaWQpID0gMDsKKworCS8qCisJICogXGJyaWVmIEdldCB0aGUgbnRoIGl0ZW0gaW4gdGhlIE9wYXF1ZUNsaWVudERhdGEgbGlzdAorCSAqCisJICogQHBhcmFtIGl0ZW0gVGhlIGl0ZW0gdG8gcmV0dXJuCisJICogQHJldHVybnMgdGhlIHN0cmluZyBvZiB0aGUgbnRoIGl0ZW0gaW4gdGhlIE9wYXF1ZUNsaWVudERhdGEgbGlzdC4KKwkgKgorCSAqLworCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldE9wYXF1ZUNsaWVudERhdGFJdGVtU3RyKGludCBpdGVtKSA9IDA7CisKKwkvKgorCSAqIFxicmllZiBBcHBlbmQgYW4gaXRlbSB0byB0aGUgT3BhcXVlQ2xpZW50RGF0YSBsaXN0CisJICoKKwkgKiBAcGFyYW0gaXRlbSBCYXNlNjQgc3RyaW5nIHRvIGFwcGVuZCB0byB0aGUgbGlzdC4gIFdpbGwgYmUKKwkgKiB3cmFwcGVkIGluIGEgT3BhcXVlRGF0YSBlbGVtZW50LgorCSAqLworCisJdmlydHVhbCB2b2lkIGFwcGVuZE9wYXF1ZUNsaWVudERhdGFJdGVtKGNvbnN0IFhNTENoICogaXRlbSkgPSAwOworCisJLy9AfQorCitwcml2YXRlOgorCisJLy8gVW5pbXBsZW1lbnRlZAorCVhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlKGNvbnN0IFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlICYpOworCVhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGUgJik7CisKK307CisKKyNlbmRpZiAvKiBYS01TTUVTU0FHRUFCU1RSQUNUVFlQRV9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL1hLTVNNZXNzYWdlRmFjdG9yeS5ocHAgYi9jL3NyYy94a21zL1hLTVNNZXNzYWdlRmFjdG9yeS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAzYzA4MgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvWEtNU01lc3NhZ2VGYWN0b3J5LmhwcApAQCAtMCwwICsxLDEwMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNNZXNzYWdlRmFjdG9yeSA6PSBJbnRlcmZhY2UgZm9yIHRoZSBmYWN0b3J5IHVzZWQgdG8gcHJvZHVjZSBYS01TIG1zZ3MKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEtNU01FU1NBR0VGQUNUT1JZX0lOQ0xVREUKKyNkZWZpbmUgWEtNU01FU1NBR0VGQUNUT1JZX0lOQ0xVREUKKworLy8gWFNFQyBJbmNsdWRlcworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TTWVzc2FnZUFic3RyYWN0VHlwZS5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNSZXN1bHRUeXBlLmhwcD4KKworY2xhc3MgRFNJR1NpZ25hdHVyZTsKK2NsYXNzIFhLTVNDb21wb3VuZFJlcXVlc3Q7CitjbGFzcyBYS01TQ29tcG91bmRSZXN1bHQ7CitjbGFzcyBYS01TTG9jYXRlUmVxdWVzdDsKK2NsYXNzIFhLTVNMb2NhdGVSZXN1bHQ7CitjbGFzcyBYS01TUmVxdWVzdEFic3RyYWN0VHlwZTsKK2NsYXNzIFhLTVNSZXN1bHQ7CitjbGFzcyBYS01TVmFsaWRhdGVSZXF1ZXN0OworY2xhc3MgWEtNU1ZhbGlkYXRlUmVzdWx0OworY2xhc3MgWEtNU1BlbmRpbmdSZXF1ZXN0OworY2xhc3MgWEtNU1N0YXR1c1JlcXVlc3Q7CitjbGFzcyBYS01TU3RhdHVzUmVzdWx0OworY2xhc3MgWEtNU1JlZ2lzdGVyUmVxdWVzdDsKK2NsYXNzIFhLTVNSZWdpc3RlclJlc3VsdDsKK2NsYXNzIFhLTVNSZXZva2VSZXN1bHQ7CitjbGFzcyBYS01TUmV2b2tlUmVxdWVzdDsKK2NsYXNzIFhLTVNSZWNvdmVyUmVzdWx0OworY2xhc3MgWEtNU1JlY292ZXJSZXF1ZXN0OworY2xhc3MgWEtNU1JlaXNzdWVSZXN1bHQ7CitjbGFzcyBYS01TUmVpc3N1ZVJlcXVlc3Q7CisKK1hTRUNfREVDTEFSRV9YRVJDRVNfQ0xBU1MoRE9NRWxlbWVudCk7CisKKy8qKgorICogQGRlZmdyb3VwIHhrbXMgWE1MIEtleSBNYW5hZ2VtZW50IFN5c3RlbSBJbXBsZW1lbnRhdGlvbgorICoKKyAqIDxwPlRoZSBjbGFzc2VzIGluIHRoaXMgZ3JvdXAgaW1wbGVtZW50IHRoZSBXM0MgWEtNUyAyLjAKKyAqIHNwZWNpZmljYXRpb24uICBVc2VycyBzaG91bGQgaW50ZXJhY3Qgd2l0aCB0aGVzZSBjbGFzc2VzCisgKiB2aWEgdGhlIFhLTVNNZXNzYWdlRmFjdG9yeSBjbGFzcyAoZm9yIGNvbnN1bWluZyBhbmQgcHJvZHVjaW5nCisgKiBYS01TIG1lc3NhZ2VzKSBhbmQgdGhlIFhLTVNDbGllbnQgY2xhc3MgKGZvciBhY3R1YWxseQorICogcGVyZm9ybWluZyBYS01TIGNhbGxzIHRvIGEgc2VydmVyKTwvcD4KKyAqCisgKi8KKy8qQHsqLworCisvKioKKyAqIEBicmllZiBJbnRlcmZhY2UgZGVmaW5pdGlvbiBmb3IgdGhlIFhLTVNNZXNzYWdlRmFjdG9yeSBjbGFzcworICoKKyAqIFRoZSBYS01TTWVzc2FnZUZhY3RvcnkgY2xhc3NlcyBhcmUgdXNlZCB0byBwcm92aWRlIGFuIGludGVyZmFjZQorICogdG8gYXBwbGljYXRhaW9ucyB0byBwcm9kdWNlIGFuZCBjb25zdW1lIFhLTVMgbWVzc2FnZXMuICBObyBsb2dpYworICogaXMgZGVmaW5lZCB3aXRoaW4gdGhlIGNsYXNzLCBvdGhlciB0aGFuIHRoYXQgbmVjZXNzYXJ5IHRvIChmb3IKKyAqIGV4YW1wbGUpIGdlbmVyYXRlIGEgcmVzcG9uc2UgbWVzc2FnZSB1c2luZyBhIHJlcXVlc3QgbWVzc2FnZSBhcworICogYSBiYXNlLgorICoKKyAqIENsaWVudCBhcHBzIHRoYXQgd2lzaCB0byBtYWtlIHVzZSBvZiBYS01TIHNob3VsZCBnZW5lcmFsbHkgdXNlCisgKiB0aGUgWEtNU0NsaWVudCBjbGFzcy4KKyAqLworCisKK2NsYXNzIFhLTVNNZXNzYWdlRmFjdG9yeSB7CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworcHJvdGVjdGVkOgorCisJWEtNU01lc3NhZ2VGYWN0b3J5KCkge307CisKK3B1YmxpYzoKKworCXZpcnR1YWwgflhLTVNNZXNzYWdlRmFjdG9yeSgpIHt9OworCisJLyoqIEBuYW1lIE1ldGhvZHMgdG8gYnVpbGQgWEtNUyBtZXNzYWdlIG9iamVjdHMgZnJvbSBleGlzdGluZyBYTUwgICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIExvYWQgYSBtZXNzYWdlIGZyb20gYW4gZXhpc3RpbmcgWE1MIGRvY3VtZW50CisJICoKKwkgKiBSZWFkcyBpbiB0aGUgWE1MIGRvY3VtZW50IGFuZCBwcm9kdWNlcyB0aGUgY29ycmVzcG9uZGluZyBYS01TCisJICogbWVzc2FnZSBvYmplY3QuICBDYWxsZXJzIHNob3VsZCBtYWtlIHVzZSBvZiB0aGUgOjpnZXRNZXNzYWdlVHlwZQorCSAqIG1ldGhvZCB0byBkZXRlcm1pbmUgd2hhdCB0eXBlIG9mIG1lc3NhZ2UgdGhleSBhcmUgYWN0dWFsbHkKKwkgKiB3b3JraW5nIHdpdGguCisJICoKKwkgKiBAcGFyYW0gZWx0IFRoZSBlbGVtZW50IGF0IHRoZSBoZWFkIG9mIHRoZSBYS01TIHN0cnVjdHVyZQorCSAqLworCisJdmlydHVhbCBYS01TTWVzc2FnZUFic3RyYWN0VHlwZSAqIG5ld01lc3NhZ2VGcm9tRE9NKAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGVsdCkgPSAwOworCisKKwkvL0B9CisKKwkvKiogQG5hbWUgTWV0aG9kcyBmb3IgYnVpbGRpbmcgbmV3IFgtS0lTUyBtZXNzYWdlcyBmcm9tIHNjcmF0Y2ggKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIGEgbmV3IFw8Q29tcG91bmRSZXF1ZXN0XD4gbWVzc2FnZS4KKwkgKiAKKwkgKiBHZW5lcmF0ZXMgYSBuZXcgQ29tcG91bmRSZXF1ZXN0IG1lc3NhZ2UgZnJvbSBzY3JhdGNoLCBidWlsZGluZyB0aGUgRE9NCisJICogYXMgaXQgZ29lcy4KKwkgKgorCSAqIEBwYXJhbSBzZXJ2aWNlIFVSSQorCSAqIEBwYXJhbSBkb2MgRG9jdW1lbnQgdG8gY3JlYXRlIHRoZSBET00gc3RydWN0dXJlIHdpdGhpbi4gIFRoZSBjYWxsZXIKKwkgKiB3aWxsIG5lZWQgdG8gZW1iZWQgdGhlIERPTSBzdHJ1Y3R1cmUgYXQgdGhlIGFwcHJvcHJpYXRlIHBsYWNlIGluIHRoZQorCSAqIGRvY3VtZW50ICh1c2luZyBhIGNhbGwgdG8gZ2V0RWxlbWVudCB0byBmaW5kIHRoZSB0b3AgbGV2ZWwgZWxlbWVudCkKKwkgKiBAcGFyYW0gaWQgVmFsdWUgdG8gc2V0IGluIHRoZSBJZCBmaWVsZC4gIElmIE5VTEwsIHRoZSBsaWJyYXJ5IHdpbGwKKwkgKiBnZW5lcmF0ZSBhIG5ldyBVbmlxdWUgSWQgdmFsdWUuCisJICogQHJldHVybnMgdGhlIG5ldyBYS01TQ29tcG91bmRSZXF1ZXN0IHN0cnVjdHVyZQorCSAqLworCisJdmlydHVhbCBYS01TQ29tcG91bmRSZXF1ZXN0ICogY3JlYXRlQ29tcG91bmRSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGRvYywKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpID0gMDsKKwkJCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIG5ldyBcPENvbXBvdW5kUmVxdWVzdFw+IG1lc3NhZ2UgYW5kIHN1cnJvdW5kaW5nIGRvY3VtZW50CisJICogCisJICogR2VuZXJhdGVzIGEgbmV3IENvbXBvdW5kUmVxdWVzdCBtZXNzYWdlIGZyb20gc2NyYXRjaCwgYnVpbGRpbmcgdGhlIERPTQorCSAqIGFzIGl0IGdvZXMuCisJICoKKwkgKiBAcGFyYW0gc2VydmljZSBVUkkKKwkgKiBAcGFyYW0gZG9jIFdpbGwgYmUgdXNlZCB0byByZXR1cm4gdGhlIG5ld2x5IGNyZWF0ZWQgZG9jdW1lbnQgZWxlbWVudCBpbi4KKwkgKiBAcGFyYW0gaWQgVmFsdWUgdG8gc2V0IGluIHRoZSBJZCBmaWVsZC4gIElmIE5VTEwsIHRoZSBsaWJyYXJ5IHdpbGwKKwkgKiBnZW5lcmF0ZSBhIG5ldyBVbmlxdWUgSWQgdmFsdWUuCisJICogQHJldHVybnMgdGhlIG5ldyBYS01TQ29tcG91bmRSZXF1ZXN0IHN0cnVjdHVyZQorCSAqIEBub3RlIExpa2UgYWxsIHRoZSB4c2VjIGxpYnJhcnkgZnVuY3Rpb25zLCB0aGUgZG9jdW1lbnQgaXMgb3duZWQgYnkKKwkgKiB0aGUgY2FsbGluZyBhcHBsaWNhdGlvbi4gIERlbGV0ZWluZyB0aGUgQ29tcG91bmRSZXF1ZXN0IG9iamVjdCB3aWxsIG5vdAorCSAqIGRlbGV0ZSB0aGUgRE9NIGRvY3VtZW50IGFzIHdlbGwuCisJICovCisKKwl2aXJ0dWFsIFhLTVNDb21wb3VuZFJlcXVlc3QgKiBjcmVhdGVDb21wb3VuZFJlcXVlc3QoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICoqZG9jLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIG5ldyBcPExvY2F0ZVJlcXVlc3RcPiBtZXNzYWdlLgorCSAqIAorCSAqIEdlbmVyYXRlcyBhIG5ldyBMb2NhdGVSZXF1ZXN0IG1lc3NhZ2UgZnJvbSBzY3JhdGNoLCBidWlsZGluZyB0aGUgRE9NCisJICogYXMgaXQgZ29lcy4KKwkgKgorCSAqIEBwYXJhbSBzZXJ2aWNlIFVSSQorCSAqIEBwYXJhbSBkb2MgRG9jdW1lbnQgdG8gY3JlYXRlIHRoZSBET00gc3RydWN0dXJlIHdpdGhpbi4gIFRoZSBjYWxsZXIKKwkgKiB3aWxsIG5lZWQgdG8gZW1iZWQgdGhlIERPTSBzdHJ1Y3R1cmUgYXQgdGhlIGFwcHJvcHJpYXRlIHBsYWNlIGluIHRoZQorCSAqIGRvY3VtZW50ICh1c2luZyBhIGNhbGwgdG8gZ2V0RWxlbWVudCB0byBmaW5kIHRoZSB0b3AgbGV2ZWwgZWxlbWVudCkKKwkgKiBAcGFyYW0gaWQgVmFsdWUgdG8gc2V0IGluIHRoZSBJZCBmaWVsZC4gIElmIE5VTEwsIHRoZSBsaWJyYXJ5IHdpbGwKKwkgKiBnZW5lcmF0ZSBhIG5ldyBVbmlxdWUgSWQgdmFsdWUuCisJICogQHJldHVybnMgdGhlIG5ldyBYS01TTG9jYXRlUmVxdWVzdCBzdHJ1Y3R1cmUKKwkgKi8KKworCXZpcnR1YWwgWEtNU0xvY2F0ZVJlcXVlc3QgKiBjcmVhdGVMb2NhdGVSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGRvYywKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpID0gMDsKKwkJCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIG5ldyBcPExvY2F0ZVJlcXVlc3RcPiBtZXNzYWdlIGFuZCBzdXJyb3VuZGluZyBkb2N1bWVudAorCSAqIAorCSAqIEdlbmVyYXRlcyBhIG5ldyBMb2NhdGVSZXF1ZXN0IG1lc3NhZ2UgZnJvbSBzY3JhdGNoLCBidWlsZGluZyB0aGUgRE9NCisJICogYXMgaXQgZ29lcy4KKwkgKgorCSAqIEBwYXJhbSBzZXJ2aWNlIFVSSQorCSAqIEBwYXJhbSBkb2MgV2lsbCBiZSB1c2VkIHRvIHJldHVybiB0aGUgbmV3bHkgY3JlYXRlZCBkb2N1bWVudCBlbGVtZW50IGluLgorCSAqIEBwYXJhbSBpZCBWYWx1ZSB0byBzZXQgaW4gdGhlIElkIGZpZWxkLiAgSWYgTlVMTCwgdGhlIGxpYnJhcnkgd2lsbAorCSAqIGdlbmVyYXRlIGEgbmV3IFVuaXF1ZSBJZCB2YWx1ZS4KKwkgKiBAcmV0dXJucyB0aGUgbmV3IFhLTVNMb2NhdGVSZXF1ZXN0IHN0cnVjdHVyZQorCSAqIEBub3RlIExpa2UgYWxsIHRoZSB4c2VjIGxpYnJhcnkgZnVuY3Rpb25zLCB0aGUgZG9jdW1lbnQgaXMgb3duZWQgYnkKKwkgKiB0aGUgY2FsbGluZyBhcHBsaWNhdGlvbi4gIERlbGV0ZWluZyB0aGUgTG9jYXRlUmVxdWVzdCBvYmplY3Qgd2lsbCBub3QKKwkgKiBkZWxldGUgdGhlIERPTSBkb2N1bWVudCBhcyB3ZWxsLgorCSAqLworCisJdmlydHVhbCBYS01TTG9jYXRlUmVxdWVzdCAqIGNyZWF0ZUxvY2F0ZVJlcXVlc3QoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICoqZG9jLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIG5ldyBcPFZhbGlkYXRlUmVxdWVzdFw+IG1lc3NhZ2UuCisJICogCisJICogR2VuZXJhdGVzIGEgbmV3IFZhbGlkYXRlUmVxdWVzdCBtZXNzYWdlIGZyb20gc2NyYXRjaCwgYnVpbGRpbmcgdGhlIERPTQorCSAqIGFzIGl0IGdvZXMuCisJICoKKwkgKiBAcGFyYW0gc2VydmljZSBVUkkKKwkgKiBAcGFyYW0gZG9jIERvY3VtZW50IHRvIGNyZWF0ZSB0aGUgRE9NIHN0cnVjdHVyZSB3aXRoaW4uICBUaGUgY2FsbGVyCisJICogd2lsbCBuZWVkIHRvIGVtYmVkIHRoZSBET00gc3RydWN0dXJlIGF0IHRoZSBhcHByb3ByaWF0ZSBwbGFjZSBpbiB0aGUKKwkgKiBkb2N1bWVudCAodXNpbmcgYSBjYWxsIHRvIGdldEVsZW1lbnQgdG8gZmluZCB0aGUgdG9wIGxldmVsIGVsZW1lbnQpCisJICogQHBhcmFtIGlkIFZhbHVlIHRvIHNldCBpbiB0aGUgSWQgZmllbGQuICBJZiBOVUxMLCB0aGUgbGlicmFyeSB3aWxsCisJICogZ2VuZXJhdGUgYSBuZXcgVW5pcXVlIElkIHZhbHVlLgorCSAqIEByZXR1cm5zIHRoZSBuZXcgWEtNU1ZhbGlkYXRlUmVxdWVzdCBzdHJ1Y3R1cmUKKwkgKi8KKworCXZpcnR1YWwgWEtNU1ZhbGlkYXRlUmVxdWVzdCAqIGNyZWF0ZVZhbGlkYXRlUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBkb2MsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKSA9IDA7CisJCQorCS8qKgorCSAqIFxicmllZiBDcmVhdGUgYSBuZXcgXDxWYWxpZGF0ZVJlcXVlc3RcPiBtZXNzYWdlIGFuZCBzdXJyb3VuZGluZyBkb2N1bWVudAorCSAqIAorCSAqIEdlbmVyYXRlcyBhIG5ldyBWYWxpZGF0ZVJlcXVlc3QgbWVzc2FnZSBmcm9tIHNjcmF0Y2gsIGJ1aWxkaW5nIHRoZSBET00KKwkgKiBhcyBpdCBnb2VzLgorCSAqCisJICogQHBhcmFtIHNlcnZpY2UgVVJJCisJICogQHBhcmFtIGRvYyBXaWxsIGJlIHVzZWQgdG8gcmV0dXJuIHRoZSBuZXdseSBjcmVhdGVkIGRvY3VtZW50IGVsZW1lbnQgaW4uCisJICogQHBhcmFtIGlkIFZhbHVlIHRvIHNldCBpbiB0aGUgSWQgZmllbGQuICBJZiBOVUxMLCB0aGUgbGlicmFyeSB3aWxsCisJICogZ2VuZXJhdGUgYSBuZXcgVW5pcXVlIElkIHZhbHVlLgorCSAqIEByZXR1cm5zIHRoZSBuZXcgWEtNU1ZhbGlkYXRlUmVxdWVzdCBzdHJ1Y3R1cmUKKwkgKiBAbm90ZSBMaWtlIGFsbCB0aGUgeHNlYyBsaWJyYXJ5IGZ1bmN0aW9ucywgdGhlIGRvY3VtZW50IGlzIG93bmVkIGJ5CisJICogdGhlIGNhbGxpbmcgYXBwbGljYXRpb24uICBEZWxldGluZyB0aGUgTG9jYXRlUmVxdWVzdCBvYmplY3Qgd2lsbCBub3QKKwkgKiBkZWxldGUgdGhlIERPTSBkb2N1bWVudCBhcyB3ZWxsLgorCSAqLworCisJdmlydHVhbCBYS01TVmFsaWRhdGVSZXF1ZXN0ICogY3JlYXRlVmFsaWRhdGVSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqKmRvYywKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBDcmVhdGUgYSBuZXcgXDxQZW5kaW5nUmVxdWVzdFw+IG1lc3NhZ2UuCisJICogCisJICogR2VuZXJhdGVzIGEgbmV3IFBlbmRpbmdSZXF1ZXN0IG1lc3NhZ2UgZnJvbSBzY3JhdGNoLCBidWlsZGluZyB0aGUgRE9NCisJICogYXMgaXQgZ29lcy4KKwkgKgorCSAqIEBwYXJhbSBzZXJ2aWNlIFVSSQorCSAqIEBwYXJhbSBkb2MgRG9jdW1lbnQgdG8gY3JlYXRlIHRoZSBET00gc3RydWN0dXJlIHdpdGhpbi4gIFRoZSBjYWxsZXIKKwkgKiB3aWxsIG5lZWQgdG8gZW1iZWQgdGhlIERPTSBzdHJ1Y3R1cmUgYXQgdGhlIGFwcHJvcHJpYXRlIHBsYWNlIGluIHRoZQorCSAqIGRvY3VtZW50ICh1c2luZyBhIGNhbGwgdG8gZ2V0RWxlbWVudCB0byBmaW5kIHRoZSB0b3AgbGV2ZWwgZWxlbWVudCkKKwkgKiBAcGFyYW0gaWQgVmFsdWUgdG8gc2V0IGluIHRoZSBJZCBmaWVsZC4gIElmIE5VTEwsIHRoZSBsaWJyYXJ5IHdpbGwKKwkgKiBnZW5lcmF0ZSBhIG5ldyBVbmlxdWUgSWQgdmFsdWUuCisJICogQHJldHVybnMgdGhlIG5ldyBYS01TUGVuZGluZ1JlcXVlc3Qgc3RydWN0dXJlCisJICovCisKKwl2aXJ0dWFsIFhLTVNQZW5kaW5nUmVxdWVzdCAqIGNyZWF0ZVBlbmRpbmdSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGRvYywKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpID0gMDsKKwkJCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIG5ldyBcPFBlbmRpbmdSZXF1ZXN0XD4gbWVzc2FnZSBhbmQgc3Vycm91bmRpbmcgZG9jdW1lbnQKKwkgKiAKKwkgKiBHZW5lcmF0ZXMgYSBuZXcgUGVuZGluZ1JlcXVlc3QgbWVzc2FnZSBmcm9tIHNjcmF0Y2gsIGJ1aWxkaW5nIHRoZSBET00KKwkgKiBhcyBpdCBnb2VzLgorCSAqCisJICogQHBhcmFtIHNlcnZpY2UgVVJJCisJICogQHBhcmFtIGRvYyBXaWxsIGJlIHVzZWQgdG8gcmV0dXJuIHRoZSBuZXdseSBjcmVhdGVkIGRvY3VtZW50IGVsZW1lbnQgaW4uCisJICogQHBhcmFtIGlkIFZhbHVlIHRvIHNldCBpbiB0aGUgSWQgZmllbGQuICBJZiBOVUxMLCB0aGUgbGlicmFyeSB3aWxsCisJICogZ2VuZXJhdGUgYSBuZXcgVW5pcXVlIElkIHZhbHVlLgorCSAqIEByZXR1cm5zIHRoZSBuZXcgWEtNU1BlbmRpbmdSZXF1ZXN0IHN0cnVjdHVyZQorCSAqIEBub3RlIExpa2UgYWxsIHRoZSB4c2VjIGxpYnJhcnkgZnVuY3Rpb25zLCB0aGUgZG9jdW1lbnQgaXMgb3duZWQgYnkKKwkgKiB0aGUgY2FsbGluZyBhcHBsaWNhdGlvbi4gIERlbGV0aW5nIHRoZSBQZW5kaW5nUmVxdWVzdCBvYmplY3Qgd2lsbCBub3QKKwkgKiBkZWxldGUgdGhlIERPTSBkb2N1bWVudCBhcyB3ZWxsLgorCSAqLworCisJdmlydHVhbCBYS01TUGVuZGluZ1JlcXVlc3QgKiBjcmVhdGVQZW5kaW5nUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKipkb2MsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIGEgbmV3IFw8U3RhdHVzUmVxdWVzdFw+IG1lc3NhZ2UuCisJICogCisJICogR2VuZXJhdGVzIGEgbmV3IFN0YXR1c1JlcXVlc3QgbWVzc2FnZSBmcm9tIHNjcmF0Y2gsIGJ1aWxkaW5nIHRoZSBET00KKwkgKiBhcyBpdCBnb2VzLgorCSAqCisJICogQHBhcmFtIHNlcnZpY2UgVVJJCisJICogQHBhcmFtIGRvYyBEb2N1bWVudCB0byBjcmVhdGUgdGhlIERPTSBzdHJ1Y3R1cmUgd2l0aGluLiAgVGhlIGNhbGxlcgorCSAqIHdpbGwgbmVlZCB0byBlbWJlZCB0aGUgRE9NIHN0cnVjdHVyZSBhdCB0aGUgYXBwcm9wcmlhdGUgcGxhY2UgaW4gdGhlCisJICogZG9jdW1lbnQgKHVzaW5nIGEgY2FsbCB0byBnZXRFbGVtZW50IHRvIGZpbmQgdGhlIHRvcCBsZXZlbCBlbGVtZW50KQorCSAqIEBwYXJhbSBpZCBWYWx1ZSB0byBzZXQgaW4gdGhlIElkIGZpZWxkLiAgSWYgTlVMTCwgdGhlIGxpYnJhcnkgd2lsbAorCSAqIGdlbmVyYXRlIGEgbmV3IFVuaXF1ZSBJZCB2YWx1ZS4KKwkgKiBAcmV0dXJucyB0aGUgbmV3IFhLTVNTdGF0dXNSZXF1ZXN0IHN0cnVjdHVyZQorCSAqLworCisJdmlydHVhbCBYS01TU3RhdHVzUmVxdWVzdCAqIGNyZWF0ZVN0YXR1c1JlcXVlc3QoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogZG9jLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCkgPSAwOworCQkKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIGEgbmV3IFw8U3RhdHVzUmVxdWVzdFw+IG1lc3NhZ2UgYW5kIHN1cnJvdW5kaW5nIGRvY3VtZW50CisJICogCisJICogR2VuZXJhdGVzIGEgbmV3IFN0YXR1c1JlcXVlc3QgbWVzc2FnZSBmcm9tIHNjcmF0Y2gsIGJ1aWxkaW5nIHRoZSBET00KKwkgKiBhcyBpdCBnb2VzLgorCSAqCisJICogQHBhcmFtIHNlcnZpY2UgVVJJCisJICogQHBhcmFtIGRvYyBXaWxsIGJlIHVzZWQgdG8gcmV0dXJuIHRoZSBuZXdseSBjcmVhdGVkIGRvY3VtZW50IGVsZW1lbnQgaW4uCisJICogQHBhcmFtIGlkIFZhbHVlIHRvIHNldCBpbiB0aGUgSWQgZmllbGQuICBJZiBOVUxMLCB0aGUgbGlicmFyeSB3aWxsCisJICogZ2VuZXJhdGUgYSBuZXcgVW5pcXVlIElkIHZhbHVlLgorCSAqIEByZXR1cm5zIHRoZSBuZXcgWEtNU1N0YXR1c1JlcXVlc3Qgc3RydWN0dXJlCisJICogQG5vdGUgTGlrZSBhbGwgdGhlIHhzZWMgbGlicmFyeSBmdW5jdGlvbnMsIHRoZSBkb2N1bWVudCBpcyBvd25lZCBieQorCSAqIHRoZSBjYWxsaW5nIGFwcGxpY2F0aW9uLiAgRGVsZXRpbmcgdGhlIFN0YXR1c1JlcXVlc3Qgb2JqZWN0IHdpbGwgbm90CisJICogZGVsZXRlIHRoZSBET00gZG9jdW1lbnQgYXMgd2VsbC4KKwkgKi8KKworCXZpcnR1YWwgWEtNU1N0YXR1c1JlcXVlc3QgKiBjcmVhdGVTdGF0dXNSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqKmRvYywKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBDcmVhdGUgYSBuZXcgXDxMb2NhdGVSZXN1bHRcPiBtZXNzYWdlLgorCSAqIAorCSAqIEdlbmVyYXRlcyBhIG5ldyBMb2NhdGVSZXN1bHQgbWVzc2FnZSBmcm9tIHNjcmF0Y2gsIGJ1aWxkaW5nIHRoZSBET00KKwkgKiBhcyBpdCBnb2VzLiAgVGhlIHJlc3BvbnNlIHdpbGwgYmUgYmFzZWQgb24gYSBpbnB1dCBMb2NhdGVSZXF1ZXN0IG1lc3NhZ2UKKwkgKiB3aGljaCBpcyB1c2VkIHRvIHByb3ZpZGUgSWQgZXRjLgorCSAqCisJICogQHBhcmFtIHJlcXVlc3QgUmVxdWVzdCB0byBiYXNlIHJlc3BvbnNlIG9uCisJICogQHBhcmFtIGRvYyBXaWxsIGJlIHVzZWQgdG8gcmV0dXJuIHRoZSBuZXdseSBjcmVhdGVkIGRvY3VtZW50IGVsZW1lbnQgaW4uCisJICogQHBhcmFtIGlkIFZhbHVlIHRvIHNldCBpbiB0aGUgSWQgZmllbGQuICBJZiBOVUxMLCB0aGUgbGlicmFyeSB3aWxsCisJICogZ2VuZXJhdGUgYSBuZXcgVW5pcXVlIElkIHZhbHVlLgorICAgICAqIEBwYXJhbSBybWFqIE1ham9yIHJlc3VsdCBjb2RlCisgICAgICogQHBhcmFtIHJtaW4gTWlub3IgcmVzdWx0IGNvZGUKKwkgKiBAcmV0dXJucyB0aGUgbmV3IFhLTVNMb2NhdGVSZXNwb25zZSBzdHJ1Y3R1cmUKKwkgKi8KKworCXZpcnR1YWwgWEtNU0xvY2F0ZVJlc3VsdCAqIGNyZWF0ZUxvY2F0ZVJlc3VsdCgKKwkJWEtNU0xvY2F0ZVJlcXVlc3QgKiByZXF1ZXN0LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBkb2MsCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNYWpvciBybWFqLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWlub3Igcm1pbiA9IFhLTVNSZXN1bHRUeXBlOjpOb25lTWlub3IsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIGEgbmV3IFw8TG9jYXRlUmVzdWx0XD4gbWVzc2FnZSBhbmQgc3Vycm91bmRpbmcgZG9jdW1lbnQKKwkgKiAKKwkgKiBHZW5lcmF0ZXMgYSBuZXcgTG9jYXRlUmVzdWx0IG1lc3NhZ2UgZnJvbSBzY3JhdGNoLCBidWlsZGluZyB0aGUgRE9NCisJICogYXMgaXQgZ29lcy4gIFRoZSByZXNwb25zZSB3aWxsIGJlIGJhc2VkIG9uIGEgaW5wdXQgTG9jYXRlUmVxdWVzdCBtZXNzYWdlCisJICogd2hpY2ggaXMgdXNlZCB0byBwcm92aWRlIElkIGV0Yy4KKwkgKgorCSAqIEBwYXJhbSByZXF1ZXN0IFJlcXVlc3QgdG8gYmFzZSByZXNwb25zZSBvbgorCSAqIEBwYXJhbSBkb2MgV2lsbCBiZSB1c2VkIHRvIHJldHVybiB0aGUgbmV3bHkgY3JlYXRlZCBkb2N1bWVudCBlbGVtZW50IGluLgorCSAqIEBwYXJhbSBpZCBWYWx1ZSB0byBzZXQgaW4gdGhlIElkIGZpZWxkLiAgSWYgTlVMTCwgdGhlIGxpYnJhcnkgd2lsbAorCSAqIGdlbmVyYXRlIGEgbmV3IFVuaXF1ZSBJZCB2YWx1ZS4KKyAgICAgKiBAcGFyYW0gcm1haiBNYWpvciByZXN1bHQgY29kZQorICAgICAqIEBwYXJhbSBybWluIE1pbm9yIHJlc3VsdCBjb2RlCisJICogQHJldHVybnMgdGhlIG5ldyBYS01TTG9jYXRlUmVzcG9uc2Ugc3RydWN0dXJlCisJICogQG5vdGUgTGlrZSBhbGwgdGhlIHhzZWMgbGlicmFyeSBmdW5jdGlvbnMsIHRoZSBkb2N1bWVudCBpcyBvd25lZCBieQorCSAqIHRoZSBjYWxsaW5nIGFwcGxpY2F0aW9uLiAgRGVsZXRlaW5nIHRoZSBMb2NhdGVSZXF1ZXN0IG9iamVjdCB3aWxsIG5vdAorCSAqIGRlbGV0ZSB0aGUgRE9NIGRvY3VtZW50IGFzIHdlbGwuCisJICovCisKKwl2aXJ0dWFsIFhLTVNMb2NhdGVSZXN1bHQgKiBjcmVhdGVMb2NhdGVSZXN1bHQoCisJCVhLTVNMb2NhdGVSZXF1ZXN0ICogcmVxdWVzdCwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICoqZG9jLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWFqb3Igcm1haiwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIHJtaW4gPSBYS01TUmVzdWx0VHlwZTo6Tm9uZU1pbm9yLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIG5ldyBcPFZhbGlkYXRlUmVzdWx0XD4gbWVzc2FnZS4KKwkgKiAKKwkgKiBHZW5lcmF0ZXMgYSBuZXcgVmFsaWRhdGVSZXN1bHQgbWVzc2FnZSBmcm9tIHNjcmF0Y2gsIGJ1aWxkaW5nIHRoZSBET00KKwkgKiBhcyBpdCBnb2VzLiAgVGhlIHJlc3BvbnNlIHdpbGwgYmUgYmFzZWQgb24gYSBpbnB1dCBWYWxpZGF0ZVJlcXVlc3QgbWVzc2FnZQorCSAqIHdoaWNoIGlzIHVzZWQgdG8gcHJvdmlkZSBJZCBldGMuCisJICoKKwkgKiBAcGFyYW0gcmVxdWVzdCBSZXF1ZXN0IHRvIGJhc2UgcmVzcG9uc2Ugb24KKwkgKiBAcGFyYW0gZG9jIFdpbGwgYmUgdXNlZCB0byByZXR1cm4gdGhlIG5ld2x5IGNyZWF0ZWQgZG9jdW1lbnQgZWxlbWVudCBpbi4KKwkgKiBAcGFyYW0gaWQgVmFsdWUgdG8gc2V0IGluIHRoZSBJZCBmaWVsZC4gIElmIE5VTEwsIHRoZSBsaWJyYXJ5IHdpbGwKKwkgKiBnZW5lcmF0ZSBhIG5ldyBVbmlxdWUgSWQgdmFsdWUuCisgICAgICogQHBhcmFtIHJtYWogTWFqb3IgcmVzdWx0IGNvZGUKKyAgICAgKiBAcGFyYW0gcm1pbiBNaW5vciByZXN1bHQgY29kZQorCSAqIEByZXR1cm5zIHRoZSBuZXcgWEtNU0xvY2F0ZVJlc3BvbnNlIHN0cnVjdHVyZQorCSAqLworCisJdmlydHVhbCBYS01TVmFsaWRhdGVSZXN1bHQgKiBjcmVhdGVWYWxpZGF0ZVJlc3VsdCgKKwkJWEtNU1ZhbGlkYXRlUmVxdWVzdCAqIHJlcXVlc3QsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGRvYywKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1ham9yIHJtYWosCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNaW5vciBybWluID0gWEtNU1Jlc3VsdFR5cGU6Ok5vbmVNaW5vciwKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBDcmVhdGUgYSBuZXcgXDxWYWxpZGF0ZVJlc3VsdFw+IG1lc3NhZ2UgYW5kIHN1cnJvdW5kaW5nIGRvY3VtZW50CisJICogCisJICogR2VuZXJhdGVzIGEgbmV3IFZhbGlkYXRlUmVzdWx0IG1lc3NhZ2UgZnJvbSBzY3JhdGNoLCBidWlsZGluZyB0aGUgRE9NCisJICogYXMgaXQgZ29lcy4gIFRoZSByZXNwb25zZSB3aWxsIGJlIGJhc2VkIG9uIGEgaW5wdXQgVmFsaWRhdGVSZXF1ZXN0IG1lc3NhZ2UKKwkgKiB3aGljaCBpcyB1c2VkIHRvIHByb3ZpZGUgSWQgZXRjLgorCSAqCisJICogQHBhcmFtIHJlcXVlc3QgUmVxdWVzdCB0byBiYXNlIHJlc3BvbnNlIG9uCisJICogQHBhcmFtIGRvYyBXaWxsIGJlIHVzZWQgdG8gcmV0dXJuIHRoZSBuZXdseSBjcmVhdGVkIGRvY3VtZW50IGVsZW1lbnQgaW4uCisJICogQHBhcmFtIGlkIFZhbHVlIHRvIHNldCBpbiB0aGUgSWQgZmllbGQuICBJZiBOVUxMLCB0aGUgbGlicmFyeSB3aWxsCisJICogZ2VuZXJhdGUgYSBuZXcgVW5pcXVlIElkIHZhbHVlLgorICAgICAqIEBwYXJhbSBybWFqIE1ham9yIHJlc3VsdCBjb2RlCisgICAgICogQHBhcmFtIHJtaW4gTWlub3IgcmVzdWx0IGNvZGUKKwkgKiBAcmV0dXJucyB0aGUgbmV3IFhLTVNWYWxpZGF0ZVJlc3BvbnNlIHN0cnVjdHVyZQorCSAqIEBub3RlIExpa2UgYWxsIHRoZSB4c2VjIGxpYnJhcnkgZnVuY3Rpb25zLCB0aGUgZG9jdW1lbnQgaXMgb3duZWQgYnkKKwkgKiB0aGUgY2FsbGluZyBhcHBsaWNhdGlvbi4gIERlbGV0ZWluZyB0aGUgVmFsaWRhdGVSZXF1ZXN0IG9iamVjdCB3aWxsIG5vdAorCSAqIGRlbGV0ZSB0aGUgRE9NIGRvY3VtZW50IGFzIHdlbGwuCisJICovCisKKwl2aXJ0dWFsIFhLTVNWYWxpZGF0ZVJlc3VsdCAqIGNyZWF0ZVZhbGlkYXRlUmVzdWx0KAorCQlYS01TVmFsaWRhdGVSZXF1ZXN0ICogcmVxdWVzdCwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICoqZG9jLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWFqb3Igcm1haiwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIHJtaW4gPSBYS01TUmVzdWx0VHlwZTo6Tm9uZU1pbm9yLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIG5ldyBcPENvbXBvdW5kUmVzdWx0XD4gbWVzc2FnZS4KKwkgKiAKKwkgKiBHZW5lcmF0ZXMgYSBuZXcgQ29tcG91bmRSZXN1bHQgbWVzc2FnZSBmcm9tIHNjcmF0Y2gsIGJ1aWxkaW5nIHRoZSBET00KKwkgKiBhcyBpdCBnb2VzLiAgVGhlIHJlc3BvbnNlIHdpbGwgYmUgYmFzZWQgb24gYSBpbnB1dCBDb21wb3VuZFJlcXVlc3QgbWVzc2FnZQorCSAqIHdoaWNoIGlzIHVzZWQgdG8gcHJvdmlkZSBJZCBldGMuCisJICoKKwkgKiBAcGFyYW0gcmVxdWVzdCBSZXF1ZXN0IHRvIGJhc2UgcmVzcG9uc2Ugb24KKwkgKiBAcGFyYW0gZG9jIFdpbGwgYmUgdXNlZCB0byByZXR1cm4gdGhlIG5ld2x5IGNyZWF0ZWQgZG9jdW1lbnQgZWxlbWVudCBpbi4KKwkgKiBAcGFyYW0gaWQgVmFsdWUgdG8gc2V0IGluIHRoZSBJZCBmaWVsZC4gIElmIE5VTEwsIHRoZSBsaWJyYXJ5IHdpbGwKKwkgKiBnZW5lcmF0ZSBhIG5ldyBVbmlxdWUgSWQgdmFsdWUuCisgICAgICogQHBhcmFtIHJtYWogTWFqb3IgcmVzdWx0IGNvZGUKKyAgICAgKiBAcGFyYW0gcm1pbiBNaW5vciByZXN1bHQgY29kZQorCSAqIEByZXR1cm5zIHRoZSBuZXcgWEtNU0xvY2F0ZVJlc3BvbnNlIHN0cnVjdHVyZQorCSAqLworCisJdmlydHVhbCBYS01TQ29tcG91bmRSZXN1bHQgKiBjcmVhdGVDb21wb3VuZFJlc3VsdCgKKwkJWEtNU0NvbXBvdW5kUmVxdWVzdCAqIHJlcXVlc3QsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGRvYywKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1ham9yIHJtYWosCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNaW5vciBybWluID0gWEtNU1Jlc3VsdFR5cGU6Ok5vbmVNaW5vciwKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBDcmVhdGUgYSBuZXcgXDxDb21wb3VuZFJlc3VsdFw+IG1lc3NhZ2UgYW5kIHN1cnJvdW5kaW5nIGRvY3VtZW50CisJICogCisJICogR2VuZXJhdGVzIGEgbmV3IENvbXBvdW5kUmVzdWx0IG1lc3NhZ2UgZnJvbSBzY3JhdGNoLCBidWlsZGluZyB0aGUgRE9NCisJICogYXMgaXQgZ29lcy4gIFRoZSByZXNwb25zZSB3aWxsIGJlIGJhc2VkIG9uIGEgaW5wdXQgVmFsaWRhdGVSZXF1ZXN0IG1lc3NhZ2UKKwkgKiB3aGljaCBpcyB1c2VkIHRvIHByb3ZpZGUgSWQgZXRjLgorCSAqCisJICogQHBhcmFtIHJlcXVlc3QgUmVxdWVzdCB0byBiYXNlIHJlc3BvbnNlIG9uCisJICogQHBhcmFtIGRvYyBXaWxsIGJlIHVzZWQgdG8gcmV0dXJuIHRoZSBuZXdseSBjcmVhdGVkIGRvY3VtZW50IGVsZW1lbnQgaW4uCisJICogQHBhcmFtIGlkIFZhbHVlIHRvIHNldCBpbiB0aGUgSWQgZmllbGQuICBJZiBOVUxMLCB0aGUgbGlicmFyeSB3aWxsCisJICogZ2VuZXJhdGUgYSBuZXcgVW5pcXVlIElkIHZhbHVlLgorICAgICAqIEBwYXJhbSBybWFqIE1ham9yIHJlc3VsdCBjb2RlCisgICAgICogQHBhcmFtIHJtaW4gTWlub3IgcmVzdWx0IGNvZGUKKwkgKiBAcmV0dXJucyB0aGUgbmV3IFhLTVNDb21wb3VuZFJlc3BvbnNlIHN0cnVjdHVyZQorCSAqIEBub3RlIExpa2UgYWxsIHRoZSB4c2VjIGxpYnJhcnkgZnVuY3Rpb25zLCB0aGUgZG9jdW1lbnQgaXMgb3duZWQgYnkKKwkgKiB0aGUgY2FsbGluZyBhcHBsaWNhdGlvbi4gIERlbGV0ZWluZyB0aGUgVmFsaWRhdGVSZXF1ZXN0IG9iamVjdCB3aWxsIG5vdAorCSAqIGRlbGV0ZSB0aGUgRE9NIGRvY3VtZW50IGFzIHdlbGwuCisJICovCisKKwl2aXJ0dWFsIFhLTVNDb21wb3VuZFJlc3VsdCAqIGNyZWF0ZUNvbXBvdW5kUmVzdWx0KAorCQlYS01TQ29tcG91bmRSZXF1ZXN0ICogcmVxdWVzdCwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICoqZG9jLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWFqb3Igcm1haiwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIHJtaW4gPSBYS01TUmVzdWx0VHlwZTo6Tm9uZU1pbm9yLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIG5ldyBcPFJlc3VsdFw+IG1lc3NhZ2UuCisJICogCisJICogR2VuZXJhdGVzIGEgbmV3IFJlc3VsdCBtZXNzYWdlIGZyb20gc2NyYXRjaCwgYnVpbGRpbmcgdGhlIERPTQorCSAqIGFzIGl0IGdvZXMuICBUaGUgcmVzcG9uc2Ugd2lsbCBiZSBiYXNlZCBvbiBhbiBpbnB1dCBSZXF1ZXN0IG1lc3NhZ2UKKwkgKiB3aGljaCBpcyB1c2VkIHRvIHByb3ZpZGUgSWQgZXRjLgorCSAqCisJICogQHBhcmFtIHJlcXVlc3QgUmVxdWVzdCB0byBiYXNlIHJlc3BvbnNlIG9uCisJICogQHBhcmFtIGRvYyBXaWxsIGJlIHVzZWQgdG8gcmV0dXJuIHRoZSBuZXdseSBjcmVhdGVkIGRvY3VtZW50IGVsZW1lbnQgaW4uCisJICogQHBhcmFtIGlkIFZhbHVlIHRvIHNldCBpbiB0aGUgSWQgZmllbGQuICBJZiBOVUxMLCB0aGUgbGlicmFyeSB3aWxsCisJICogZ2VuZXJhdGUgYSBuZXcgVW5pcXVlIElkIHZhbHVlLgorICAgICAqIEBwYXJhbSBybWFqIE1ham9yIHJlc3VsdCBjb2RlCisgICAgICogQHBhcmFtIHJtaW4gTWlub3IgcmVzdWx0IGNvZGUKKwkgKiBAcmV0dXJucyB0aGUgbmV3IFhLTVNSZXN1bHQgc3RydWN0dXJlCisJICovCisKKwl2aXJ0dWFsIFhLTVNSZXN1bHQgKiBjcmVhdGVSZXN1bHQoCisJCVhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlICogcmVxdWVzdCwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogZG9jLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWFqb3Igcm1haiwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIHJtaW4gPSBYS01TUmVzdWx0VHlwZTo6Tm9uZU1pbm9yLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIG5ldyBcPFJlc3VsdFw+IG1lc3NhZ2UgYW5kIHN1cnJvdW5kaW5nIGRvY3VtZW50CisJICogCisJICogR2VuZXJhdGVzIGEgbmV3IFJlc3VsdCBtZXNzYWdlIGZyb20gc2NyYXRjaCwgYnVpbGRpbmcgdGhlIERPTQorCSAqIGFzIGl0IGdvZXMuICBUaGUgcmVzcG9uc2Ugd2lsbCBiZSBiYXNlZCBvbiBhIGlucHV0IFJlcXVlc3QgbWVzc2FnZQorCSAqIHdoaWNoIGlzIHVzZWQgdG8gcHJvdmlkZSBJZCBldGMuCisJICoKKwkgKiBAcGFyYW0gcmVxdWVzdCBSZXF1ZXN0IHRvIGJhc2UgcmVzcG9uc2Ugb24KKwkgKiBAcGFyYW0gZG9jIFdpbGwgYmUgdXNlZCB0byByZXR1cm4gdGhlIG5ld2x5IGNyZWF0ZWQgZG9jdW1lbnQgZWxlbWVudCBpbi4KKwkgKiBAcGFyYW0gaWQgVmFsdWUgdG8gc2V0IGluIHRoZSBJZCBmaWVsZC4gIElmIE5VTEwsIHRoZSBsaWJyYXJ5IHdpbGwKKwkgKiBnZW5lcmF0ZSBhIG5ldyBVbmlxdWUgSWQgdmFsdWUuCisgICAgICogQHBhcmFtIHJtYWogTWFqb3IgcmVzdWx0IGNvZGUKKyAgICAgKiBAcGFyYW0gcm1pbiBNaW5vciByZXN1bHQgY29kZQorCSAqIEByZXR1cm5zIHRoZSBuZXcgUmVzcG9uc2Ugc3RydWN0dXJlCisJICogQG5vdGUgTGlrZSBhbGwgdGhlIHhzZWMgbGlicmFyeSBmdW5jdGlvbnMsIHRoZSBkb2N1bWVudCBpcyBvd25lZCBieQorCSAqIHRoZSBjYWxsaW5nIGFwcGxpY2F0aW9uLiAgRGVsZXRpbmcgdGhlIFJlcXVlc3Qgb2JqZWN0IHdpbGwgbm90CisJICogZGVsZXRlIHRoZSBET00gZG9jdW1lbnQgYXMgd2VsbC4KKwkgKi8KKworCXZpcnR1YWwgWEtNU1Jlc3VsdCAqIGNyZWF0ZVJlc3VsdCgKKwkJWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGUgKiByZXF1ZXN0LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKipkb2MsCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNYWpvciBybWFqLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWlub3Igcm1pbiA9IFhLTVNSZXN1bHRUeXBlOjpOb25lTWlub3IsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIGEgbmV3IFw8U3RhdHVzUmVzdWx0XD4gbWVzc2FnZS4KKwkgKiAKKwkgKiBHZW5lcmF0ZXMgYSBuZXcgU3RhdHVzUmVzdWx0IG1lc3NhZ2UgZnJvbSBzY3JhdGNoLCBidWlsZGluZyB0aGUgRE9NCisJICogYXMgaXQgZ29lcy4gIFRoZSByZXNwb25zZSB3aWxsIGJlIGJhc2VkIG9uIGEgaW5wdXQgU3RhdHVzUmVxdWVzdCBtZXNzYWdlCisJICogd2hpY2ggaXMgdXNlZCB0byBwcm92aWRlIElkIGV0Yy4KKwkgKgorCSAqIEBwYXJhbSByZXF1ZXN0IFJlcXVlc3QgdG8gYmFzZSByZXNwb25zZSBvbgorCSAqIEBwYXJhbSBkb2MgV2lsbCBiZSB1c2VkIHRvIHJldHVybiB0aGUgbmV3bHkgY3JlYXRlZCBkb2N1bWVudCBlbGVtZW50IGluLgorCSAqIEBwYXJhbSBpZCBWYWx1ZSB0byBzZXQgaW4gdGhlIElkIGZpZWxkLiAgSWYgTlVMTCwgdGhlIGxpYnJhcnkgd2lsbAorCSAqIGdlbmVyYXRlIGEgbmV3IFVuaXF1ZSBJZCB2YWx1ZS4KKyAgICAgKiBAcGFyYW0gcm1haiBNYWpvciByZXN1bHQgY29kZQorICAgICAqIEBwYXJhbSBybWluIE1pbm9yIHJlc3VsdCBjb2RlCisJICogQHJldHVybnMgdGhlIG5ldyBYS01TU3RhdHVzUmVzc3VsdCBzdHJ1Y3R1cmUKKwkgKi8KKworCXZpcnR1YWwgWEtNU1N0YXR1c1Jlc3VsdCAqIGNyZWF0ZVN0YXR1c1Jlc3VsdCgKKwkJWEtNU1N0YXR1c1JlcXVlc3QgKiByZXF1ZXN0LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBkb2MsCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNYWpvciBybWFqLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWlub3Igcm1pbiA9IFhLTVNSZXN1bHRUeXBlOjpOb25lTWlub3IsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIGEgbmV3IFw8U3RhdHVzUmVzdWx0XD4gbWVzc2FnZSBhbmQgc3Vycm91bmRpbmcgZG9jdW1lbnQKKwkgKiAKKwkgKiBHZW5lcmF0ZXMgYSBuZXcgU3RhdHVzUmVzdWx0IG1lc3NhZ2UgZnJvbSBzY3JhdGNoLCBidWlsZGluZyB0aGUgRE9NCisJICogYXMgaXQgZ29lcy4gIFRoZSByZXNwb25zZSB3aWxsIGJlIGJhc2VkIG9uIGEgaW5wdXQgU3RhdHVzUmVxdWVzdCBtZXNzYWdlCisJICogd2hpY2ggaXMgdXNlZCB0byBwcm92aWRlIElkIGV0Yy4KKwkgKgorCSAqIEBwYXJhbSByZXF1ZXN0IFJlcXVlc3QgdG8gYmFzZSByZXNwb25zZSBvbgorCSAqIEBwYXJhbSBkb2MgV2lsbCBiZSB1c2VkIHRvIHJldHVybiB0aGUgbmV3bHkgY3JlYXRlZCBkb2N1bWVudCBlbGVtZW50IGluLgorCSAqIEBwYXJhbSBpZCBWYWx1ZSB0byBzZXQgaW4gdGhlIElkIGZpZWxkLiAgSWYgTlVMTCwgdGhlIGxpYnJhcnkgd2lsbAorCSAqIGdlbmVyYXRlIGEgbmV3IFVuaXF1ZSBJZCB2YWx1ZS4KKyAgICAgKiBAcGFyYW0gcm1haiBNYWpvciByZXN1bHQgY29kZQorICAgICAqIEBwYXJhbSBybWluIE1pbm9yIHJlc3VsdCBjb2RlCisJICogQHJldHVybnMgdGhlIG5ldyBYS01TU3RhdHVzUmVzdWx0IHN0cnVjdHVyZQorCSAqIEBub3RlIExpa2UgYWxsIHRoZSB4c2VjIGxpYnJhcnkgZnVuY3Rpb25zLCB0aGUgZG9jdW1lbnQgaXMgb3duZWQgYnkKKwkgKiB0aGUgY2FsbGluZyBhcHBsaWNhdGlvbi4gIERlbGV0aW5nIHRoZSBTdGF0dXNSZXN1bHQgb2JqZWN0IHdpbGwgbm90CisJICogZGVsZXRlIHRoZSBET00gZG9jdW1lbnQgYXMgd2VsbC4KKwkgKi8KKworCXZpcnR1YWwgWEtNU1N0YXR1c1Jlc3VsdCAqIGNyZWF0ZVN0YXR1c1Jlc3VsdCgKKwkJWEtNU1N0YXR1c1JlcXVlc3QgKiByZXF1ZXN0LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKipkb2MsCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNYWpvciBybWFqLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWlub3Igcm1pbiA9IFhLTVNSZXN1bHRUeXBlOjpOb25lTWlub3IsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKSA9IDA7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgTWV0aG9kcyBmb3IgYnVpbGRpbmcgbmV3IFgtS1JTUyBtZXNzYWdlcyBmcm9tIHNjcmF0Y2ggKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIGEgbmV3IFw8UmVnaXN0ZXJSZXF1ZXN0XD4gbWVzc2FnZS4KKwkgKiAKKwkgKiBHZW5lcmF0ZXMgYSBuZXcgUmVnaXN0ZXJSZXF1ZXN0IG1lc3NhZ2UgZnJvbSBzY3JhdGNoLCBidWlsZGluZyB0aGUgRE9NCisJICogYXMgaXQgZ29lcy4KKwkgKgorCSAqIEBwYXJhbSBzZXJ2aWNlIFVSSQorCSAqIEBwYXJhbSBkb2MgRG9jdW1lbnQgdG8gY3JlYXRlIHRoZSBET00gc3RydWN0dXJlIHdpdGhpbi4gIFRoZSBjYWxsZXIKKwkgKiB3aWxsIG5lZWQgdG8gZW1iZWQgdGhlIERPTSBzdHJ1Y3R1cmUgYXQgdGhlIGFwcHJvcHJpYXRlIHBsYWNlIGluIHRoZQorCSAqIGRvY3VtZW50ICh1c2luZyBhIGNhbGwgdG8gZ2V0RWxlbWVudCB0byBmaW5kIHRoZSB0b3AgbGV2ZWwgZWxlbWVudCkKKwkgKiBAcGFyYW0gaWQgVmFsdWUgdG8gc2V0IGluIHRoZSBJZCBmaWVsZC4gIElmIE5VTEwsIHRoZSBsaWJyYXJ5IHdpbGwKKwkgKiBnZW5lcmF0ZSBhIG5ldyBVbmlxdWUgSWQgdmFsdWUuCisJICogQHJldHVybnMgdGhlIG5ldyBYS01TUmVnaXN0ZXJSZXF1ZXN0IHN0cnVjdHVyZQorCSAqLworCisJdmlydHVhbCBYS01TUmVnaXN0ZXJSZXF1ZXN0ICogY3JlYXRlUmVnaXN0ZXJSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGRvYywKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpID0gMDsKKwkJCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIG5ldyBcPFJlZ2lzdGVyUmVxdWVzdFw+IG1lc3NhZ2UgYW5kIHN1cnJvdW5kaW5nIGRvY3VtZW50CisJICogCisJICogR2VuZXJhdGVzIGEgbmV3IFJlZ2lzdGVyUmVxdWVzdCBtZXNzYWdlIGZyb20gc2NyYXRjaCwgYnVpbGRpbmcgdGhlIERPTQorCSAqIGFzIGl0IGdvZXMuCisJICoKKwkgKiBAcGFyYW0gc2VydmljZSBVUkkKKwkgKiBAcGFyYW0gZG9jIFdpbGwgYmUgdXNlZCB0byByZXR1cm4gdGhlIG5ld2x5IGNyZWF0ZWQgZG9jdW1lbnQgZWxlbWVudCBpbi4KKwkgKiBAcGFyYW0gaWQgVmFsdWUgdG8gc2V0IGluIHRoZSBJZCBmaWVsZC4gIElmIE5VTEwsIHRoZSBsaWJyYXJ5IHdpbGwKKwkgKiBnZW5lcmF0ZSBhIG5ldyBVbmlxdWUgSWQgdmFsdWUuCisJICogQHJldHVybnMgdGhlIG5ldyBYS01TUmVnaXN0ZXJSZXF1ZXN0IHN0cnVjdHVyZQorCSAqIEBub3RlIExpa2UgYWxsIHRoZSB4c2VjIGxpYnJhcnkgZnVuY3Rpb25zLCB0aGUgZG9jdW1lbnQgaXMgb3duZWQgYnkKKwkgKiB0aGUgY2FsbGluZyBhcHBsaWNhdGlvbi4gIERlbGV0aW5nIHRoZSBSZWdpc3RlclJlcXVlc3Qgb2JqZWN0IHdpbGwgbm90CisJICogZGVsZXRlIHRoZSBET00gZG9jdW1lbnQgYXMgd2VsbC4KKwkgKi8KKworCXZpcnR1YWwgWEtNU1JlZ2lzdGVyUmVxdWVzdCAqIGNyZWF0ZVJlZ2lzdGVyUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKipkb2MsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIGEgbmV3IFw8UmVnaXN0ZXJSZXN1bHRcPiBtZXNzYWdlLgorCSAqIAorCSAqIEdlbmVyYXRlcyBhIG5ldyBSZWdpc3RlclJlc3VsdCBtZXNzYWdlIGZyb20gc2NyYXRjaCwgYnVpbGRpbmcgdGhlIERPTQorCSAqIGFzIGl0IGdvZXMuICBUaGUgcmVzcG9uc2Ugd2lsbCBiZSBiYXNlZCBvbiBhIGlucHV0IFZhbGlkYXRlUmVxdWVzdCBtZXNzYWdlCisJICogd2hpY2ggaXMgdXNlZCB0byBwcm92aWRlIElkIGV0Yy4KKwkgKgorCSAqIEBwYXJhbSByZXF1ZXN0IFJlcXVlc3QgdG8gYmFzZSByZXNwb25zZSBvbgorCSAqIEBwYXJhbSBkb2MgV2lsbCBiZSB1c2VkIHRvIHJldHVybiB0aGUgbmV3bHkgY3JlYXRlZCBkb2N1bWVudCBlbGVtZW50IGluLgorCSAqIEBwYXJhbSBpZCBWYWx1ZSB0byBzZXQgaW4gdGhlIElkIGZpZWxkLiAgSWYgTlVMTCwgdGhlIGxpYnJhcnkgd2lsbAorCSAqIGdlbmVyYXRlIGEgbmV3IFVuaXF1ZSBJZCB2YWx1ZS4KKyAgICAgKiBAcGFyYW0gcm1haiBNYWpvciByZXN1bHQgY29kZQorICAgICAqIEBwYXJhbSBybWluIE1pbm9yIHJlc3VsdCBjb2RlCisJICogQHJldHVybnMgdGhlIG5ldyBYS01TUmVnaXN0ZXJSZXNwb25zZSBzdHJ1Y3R1cmUKKwkgKi8KKworCXZpcnR1YWwgWEtNU1JlZ2lzdGVyUmVzdWx0ICogY3JlYXRlUmVnaXN0ZXJSZXN1bHQoCisJCVhLTVNSZWdpc3RlclJlcXVlc3QgKiByZXF1ZXN0LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBkb2MsCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNYWpvciBybWFqLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWlub3Igcm1pbiA9IFhLTVNSZXN1bHRUeXBlOjpOb25lTWlub3IsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIGEgbmV3IFw8UmVnaXN0ZXJSZXN1bHRcPiBtZXNzYWdlIGFuZCBzdXJyb3VuZGluZyBkb2N1bWVudAorCSAqIAorCSAqIEdlbmVyYXRlcyBhIG5ldyBSZWdpc3RlclJlc3VsdCBtZXNzYWdlIGZyb20gc2NyYXRjaCwgYnVpbGRpbmcgdGhlIERPTQorCSAqIGFzIGl0IGdvZXMuICBUaGUgcmVzcG9uc2Ugd2lsbCBiZSBiYXNlZCBvbiBhIGlucHV0IFZhbGlkYXRlUmVxdWVzdCBtZXNzYWdlCisJICogd2hpY2ggaXMgdXNlZCB0byBwcm92aWRlIElkIGV0Yy4KKwkgKgorCSAqIEBwYXJhbSByZXF1ZXN0IFJlcXVlc3QgdG8gYmFzZSByZXNwb25zZSBvbgorCSAqIEBwYXJhbSBkb2MgV2lsbCBiZSB1c2VkIHRvIHJldHVybiB0aGUgbmV3bHkgY3JlYXRlZCBkb2N1bWVudCBlbGVtZW50IGluLgorCSAqIEBwYXJhbSBpZCBWYWx1ZSB0byBzZXQgaW4gdGhlIElkIGZpZWxkLiAgSWYgTlVMTCwgdGhlIGxpYnJhcnkgd2lsbAorCSAqIGdlbmVyYXRlIGEgbmV3IFVuaXF1ZSBJZCB2YWx1ZS4KKyAgICAgKiBAcGFyYW0gcm1haiBNYWpvciByZXN1bHQgY29kZQorICAgICAqIEBwYXJhbSBybWluIE1pbm9yIHJlc3VsdCBjb2RlCisJICogQHJldHVybnMgdGhlIG5ldyBYS01TUmVnaXN0ZXJSZXNwb25zZSBzdHJ1Y3R1cmUKKwkgKiBAbm90ZSBMaWtlIGFsbCB0aGUgeHNlYyBsaWJyYXJ5IGZ1bmN0aW9ucywgdGhlIGRvY3VtZW50IGlzIG93bmVkIGJ5CisJICogdGhlIGNhbGxpbmcgYXBwbGljYXRpb24uICBEZWxldGluZyB0aGUgUmVnaXN0ZXJSZXF1ZXN0IG9iamVjdCB3aWxsIG5vdAorCSAqIGRlbGV0ZSB0aGUgRE9NIGRvY3VtZW50IGFzIHdlbGwuCisJICovCisKKwl2aXJ0dWFsIFhLTVNSZWdpc3RlclJlc3VsdCAqIGNyZWF0ZVJlZ2lzdGVyUmVzdWx0KAorCQlYS01TUmVnaXN0ZXJSZXF1ZXN0ICogcmVxdWVzdCwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICoqZG9jLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWFqb3Igcm1haiwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIHJtaW4gPSBYS01TUmVzdWx0VHlwZTo6Tm9uZU1pbm9yLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIG5ldyBcPFJldm9rZVJlcXVlc3RcPiBtZXNzYWdlLgorCSAqIAorCSAqIEdlbmVyYXRlcyBhIG5ldyBSZXZva2VSZXF1ZXN0IG1lc3NhZ2UgZnJvbSBzY3JhdGNoLCBidWlsZGluZyB0aGUgRE9NCisJICogYXMgaXQgZ29lcy4KKwkgKgorCSAqIEBwYXJhbSBzZXJ2aWNlIFVSSQorCSAqIEBwYXJhbSBkb2MgRG9jdW1lbnQgdG8gY3JlYXRlIHRoZSBET00gc3RydWN0dXJlIHdpdGhpbi4gIFRoZSBjYWxsZXIKKwkgKiB3aWxsIG5lZWQgdG8gZW1iZWQgdGhlIERPTSBzdHJ1Y3R1cmUgYXQgdGhlIGFwcHJvcHJpYXRlIHBsYWNlIGluIHRoZQorCSAqIGRvY3VtZW50ICh1c2luZyBhIGNhbGwgdG8gZ2V0RWxlbWVudCB0byBmaW5kIHRoZSB0b3AgbGV2ZWwgZWxlbWVudCkKKwkgKiBAcGFyYW0gaWQgVmFsdWUgdG8gc2V0IGluIHRoZSBJZCBmaWVsZC4gIElmIE5VTEwsIHRoZSBsaWJyYXJ5IHdpbGwKKwkgKiBnZW5lcmF0ZSBhIG5ldyBVbmlxdWUgSWQgdmFsdWUuCisJICogQHJldHVybnMgdGhlIG5ldyBYS01TUmV2b2tlUmVxdWVzdCBzdHJ1Y3R1cmUKKwkgKi8KKworCXZpcnR1YWwgWEtNU1Jldm9rZVJlcXVlc3QgKiBjcmVhdGVSZXZva2VSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGRvYywKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpID0gMDsKKwkJCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIG5ldyBcPFJldm9rZVJlcXVlc3RcPiBtZXNzYWdlIGFuZCBzdXJyb3VuZGluZyBkb2N1bWVudAorCSAqIAorCSAqIEdlbmVyYXRlcyBhIG5ldyBSZXZva2VSZXF1ZXN0IG1lc3NhZ2UgZnJvbSBzY3JhdGNoLCBidWlsZGluZyB0aGUgRE9NCisJICogYXMgaXQgZ29lcy4KKwkgKgorCSAqIEBwYXJhbSBzZXJ2aWNlIFVSSQorCSAqIEBwYXJhbSBkb2MgV2lsbCBiZSB1c2VkIHRvIHJldHVybiB0aGUgbmV3bHkgY3JlYXRlZCBkb2N1bWVudCBlbGVtZW50IGluLgorCSAqIEBwYXJhbSBpZCBWYWx1ZSB0byBzZXQgaW4gdGhlIElkIGZpZWxkLiAgSWYgTlVMTCwgdGhlIGxpYnJhcnkgd2lsbAorCSAqIGdlbmVyYXRlIGEgbmV3IFVuaXF1ZSBJZCB2YWx1ZS4KKwkgKiBAcmV0dXJucyB0aGUgbmV3IFhLTVNSZXZva2VSZXF1ZXN0IHN0cnVjdHVyZQorCSAqIEBub3RlIExpa2UgYWxsIHRoZSB4c2VjIGxpYnJhcnkgZnVuY3Rpb25zLCB0aGUgZG9jdW1lbnQgaXMgb3duZWQgYnkKKwkgKiB0aGUgY2FsbGluZyBhcHBsaWNhdGlvbi4gIERlbGV0aW5nIHRoZSBSZXZva2VSZXF1ZXN0IG9iamVjdCB3aWxsIG5vdAorCSAqIGRlbGV0ZSB0aGUgRE9NIGRvY3VtZW50IGFzIHdlbGwuCisJICovCisKKwl2aXJ0dWFsIFhLTVNSZXZva2VSZXF1ZXN0ICogY3JlYXRlUmV2b2tlUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKipkb2MsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIGEgbmV3IFw8UmV2b2tlUmVzdWx0XD4gbWVzc2FnZS4KKwkgKiAKKwkgKiBHZW5lcmF0ZXMgYSBuZXcgUmV2b2tlUmVzdWx0IG1lc3NhZ2UgZnJvbSBzY3JhdGNoLCBidWlsZGluZyB0aGUgRE9NCisJICogYXMgaXQgZ29lcy4gIFRoZSByZXNwb25zZSB3aWxsIGJlIGJhc2VkIG9uIGEgaW5wdXQgUmV2b2tlUmVxdWVzdCBtZXNzYWdlCisJICogd2hpY2ggaXMgdXNlZCB0byBwcm92aWRlIElkIGV0Yy4KKwkgKgorCSAqIEBwYXJhbSByZXF1ZXN0IFJlcXVlc3QgdG8gYmFzZSByZXNwb25zZSBvbgorCSAqIEBwYXJhbSBkb2MgV2lsbCBiZSB1c2VkIHRvIHJldHVybiB0aGUgbmV3bHkgY3JlYXRlZCBkb2N1bWVudCBlbGVtZW50IGluLgorCSAqIEBwYXJhbSBpZCBWYWx1ZSB0byBzZXQgaW4gdGhlIElkIGZpZWxkLiAgSWYgTlVMTCwgdGhlIGxpYnJhcnkgd2lsbAorCSAqIGdlbmVyYXRlIGEgbmV3IFVuaXF1ZSBJZCB2YWx1ZS4KKyAgICAgKiBAcGFyYW0gcm1haiBNYWpvciByZXN1bHQgY29kZQorICAgICAqIEBwYXJhbSBybWluIE1pbm9yIHJlc3VsdCBjb2RlCisJICogQHJldHVybnMgdGhlIG5ldyBYS01TUmV2b2tlUmVzcG9uc2Ugc3RydWN0dXJlCisJICovCisKKwl2aXJ0dWFsIFhLTVNSZXZva2VSZXN1bHQgKiBjcmVhdGVSZXZva2VSZXN1bHQoCisJCVhLTVNSZXZva2VSZXF1ZXN0ICogcmVxdWVzdCwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogZG9jLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWFqb3Igcm1haiwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIHJtaW4gPSBYS01TUmVzdWx0VHlwZTo6Tm9uZU1pbm9yLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIG5ldyBcPFJldm9rZVJlc3VsdFw+IG1lc3NhZ2UgYW5kIHN1cnJvdW5kaW5nIGRvY3VtZW50CisJICogCisJICogR2VuZXJhdGVzIGEgbmV3IFJldm9rZVJlc3VsdCBtZXNzYWdlIGZyb20gc2NyYXRjaCwgYnVpbGRpbmcgdGhlIERPTQorCSAqIGFzIGl0IGdvZXMuICBUaGUgcmVzcG9uc2Ugd2lsbCBiZSBiYXNlZCBvbiBhIGlucHV0IFJldm9rZVJlcXVlc3QgbWVzc2FnZQorCSAqIHdoaWNoIGlzIHVzZWQgdG8gcHJvdmlkZSBJZCBldGMuCisJICoKKwkgKiBAcGFyYW0gcmVxdWVzdCBSZXF1ZXN0IHRvIGJhc2UgcmVzcG9uc2Ugb24KKwkgKiBAcGFyYW0gZG9jIFdpbGwgYmUgdXNlZCB0byByZXR1cm4gdGhlIG5ld2x5IGNyZWF0ZWQgZG9jdW1lbnQgZWxlbWVudCBpbi4KKwkgKiBAcGFyYW0gaWQgVmFsdWUgdG8gc2V0IGluIHRoZSBJZCBmaWVsZC4gIElmIE5VTEwsIHRoZSBsaWJyYXJ5IHdpbGwKKwkgKiBnZW5lcmF0ZSBhIG5ldyBVbmlxdWUgSWQgdmFsdWUuCisgICAgICogQHBhcmFtIHJtYWogTWFqb3IgcmVzdWx0IGNvZGUKKyAgICAgKiBAcGFyYW0gcm1pbiBNaW5vciByZXN1bHQgY29kZQorCSAqIEByZXR1cm5zIHRoZSBuZXcgWEtNU1Jldm9rZVJlc3BvbnNlIHN0cnVjdHVyZQorCSAqIEBub3RlIExpa2UgYWxsIHRoZSB4c2VjIGxpYnJhcnkgZnVuY3Rpb25zLCB0aGUgZG9jdW1lbnQgaXMgb3duZWQgYnkKKwkgKiB0aGUgY2FsbGluZyBhcHBsaWNhdGlvbi4gIERlbGV0aW5nIHRoZSBSZXZva2VSZXF1ZXN0IG9iamVjdCB3aWxsIG5vdAorCSAqIGRlbGV0ZSB0aGUgRE9NIGRvY3VtZW50IGFzIHdlbGwuCisJICovCisKKwl2aXJ0dWFsIFhLTVNSZXZva2VSZXN1bHQgKiBjcmVhdGVSZXZva2VSZXN1bHQoCisJCVhLTVNSZXZva2VSZXF1ZXN0ICogcmVxdWVzdCwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICoqZG9jLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWFqb3Igcm1haiwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIHJtaW4gPSBYS01TUmVzdWx0VHlwZTo6Tm9uZU1pbm9yLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIG5ldyBcPFJlY292ZXJSZXF1ZXN0XD4gbWVzc2FnZS4KKwkgKiAKKwkgKiBHZW5lcmF0ZXMgYSBuZXcgUmVjb3ZlclJlcXVlc3QgbWVzc2FnZSBmcm9tIHNjcmF0Y2gsIGJ1aWxkaW5nIHRoZSBET00KKwkgKiBhcyBpdCBnb2VzLgorCSAqCisJICogQHBhcmFtIHNlcnZpY2UgVVJJCisJICogQHBhcmFtIGRvYyBEb2N1bWVudCB0byBjcmVhdGUgdGhlIERPTSBzdHJ1Y3R1cmUgd2l0aGluLiAgVGhlIGNhbGxlcgorCSAqIHdpbGwgbmVlZCB0byBlbWJlZCB0aGUgRE9NIHN0cnVjdHVyZSBhdCB0aGUgYXBwcm9wcmlhdGUgcGxhY2UgaW4gdGhlCisJICogZG9jdW1lbnQgKHVzaW5nIGEgY2FsbCB0byBnZXRFbGVtZW50IHRvIGZpbmQgdGhlIHRvcCBsZXZlbCBlbGVtZW50KQorCSAqIEBwYXJhbSBpZCBWYWx1ZSB0byBzZXQgaW4gdGhlIElkIGZpZWxkLiAgSWYgTlVMTCwgdGhlIGxpYnJhcnkgd2lsbAorCSAqIGdlbmVyYXRlIGEgbmV3IFVuaXF1ZSBJZCB2YWx1ZS4KKwkgKiBAcmV0dXJucyB0aGUgbmV3IFhLTVNSZWNvdmVyUmVxdWVzdCBzdHJ1Y3R1cmUKKwkgKi8KKworCXZpcnR1YWwgWEtNU1JlY292ZXJSZXF1ZXN0ICogY3JlYXRlUmVjb3ZlclJlcXVlc3QoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogZG9jLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCkgPSAwOworCQkKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIGEgbmV3IFw8UmVjb3ZlclJlcXVlc3RcPiBtZXNzYWdlIGFuZCBzdXJyb3VuZGluZyBkb2N1bWVudAorCSAqIAorCSAqIEdlbmVyYXRlcyBhIG5ldyBSZWNvdmVyUmVxdWVzdCBtZXNzYWdlIGZyb20gc2NyYXRjaCwgYnVpbGRpbmcgdGhlIERPTQorCSAqIGFzIGl0IGdvZXMuCisJICoKKwkgKiBAcGFyYW0gc2VydmljZSBVUkkKKwkgKiBAcGFyYW0gZG9jIFdpbGwgYmUgdXNlZCB0byByZXR1cm4gdGhlIG5ld2x5IGNyZWF0ZWQgZG9jdW1lbnQgZWxlbWVudCBpbi4KKwkgKiBAcGFyYW0gaWQgVmFsdWUgdG8gc2V0IGluIHRoZSBJZCBmaWVsZC4gIElmIE5VTEwsIHRoZSBsaWJyYXJ5IHdpbGwKKwkgKiBnZW5lcmF0ZSBhIG5ldyBVbmlxdWUgSWQgdmFsdWUuCisJICogQHJldHVybnMgdGhlIG5ldyBYS01TUmVjb3ZlclJlcXVlc3Qgc3RydWN0dXJlCisJICogQG5vdGUgTGlrZSBhbGwgdGhlIHhzZWMgbGlicmFyeSBmdW5jdGlvbnMsIHRoZSBkb2N1bWVudCBpcyBvd25lZCBieQorCSAqIHRoZSBjYWxsaW5nIGFwcGxpY2F0aW9uLiAgRGVsZXRpbmcgdGhlIFJlY292ZXJSZXF1ZXN0IG9iamVjdCB3aWxsIG5vdAorCSAqIGRlbGV0ZSB0aGUgRE9NIGRvY3VtZW50IGFzIHdlbGwuCisJICovCisKKwl2aXJ0dWFsIFhLTVNSZWNvdmVyUmVxdWVzdCAqIGNyZWF0ZVJlY292ZXJSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqKmRvYywKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBDcmVhdGUgYSBuZXcgXDxSZWNvdmVyUmVzdWx0XD4gbWVzc2FnZS4KKwkgKiAKKwkgKiBHZW5lcmF0ZXMgYSBuZXcgUmVjb3ZlclJlc3VsdCBtZXNzYWdlIGZyb20gc2NyYXRjaCwgYnVpbGRpbmcgdGhlIERPTQorCSAqIGFzIGl0IGdvZXMuICBUaGUgcmVzcG9uc2Ugd2lsbCBiZSBiYXNlZCBvbiBhIGlucHV0IFJlY292ZXJSZXF1ZXN0IG1lc3NhZ2UKKwkgKiB3aGljaCBpcyB1c2VkIHRvIHByb3ZpZGUgSWQgZXRjLgorCSAqCisJICogQHBhcmFtIHJlcXVlc3QgUmVxdWVzdCB0byBiYXNlIHJlc3BvbnNlIG9uCisJICogQHBhcmFtIGRvYyBXaWxsIGJlIHVzZWQgdG8gcmV0dXJuIHRoZSBuZXdseSBjcmVhdGVkIGRvY3VtZW50IGVsZW1lbnQgaW4uCisJICogQHBhcmFtIGlkIFZhbHVlIHRvIHNldCBpbiB0aGUgSWQgZmllbGQuICBJZiBOVUxMLCB0aGUgbGlicmFyeSB3aWxsCisJICogZ2VuZXJhdGUgYSBuZXcgVW5pcXVlIElkIHZhbHVlLgorICAgICAqIEBwYXJhbSBybWFqIE1ham9yIHJlc3VsdCBjb2RlCisgICAgICogQHBhcmFtIHJtaW4gTWlub3IgcmVzdWx0IGNvZGUKKwkgKiBAcmV0dXJucyB0aGUgbmV3IFhLTVNSZWNvdmVyUmVzcG9uc2Ugc3RydWN0dXJlCisJICovCisKKwl2aXJ0dWFsIFhLTVNSZWNvdmVyUmVzdWx0ICogY3JlYXRlUmVjb3ZlclJlc3VsdCgKKwkJWEtNU1JlY292ZXJSZXF1ZXN0ICogcmVxdWVzdCwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogZG9jLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWFqb3Igcm1haiwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIHJtaW4gPSBYS01TUmVzdWx0VHlwZTo6Tm9uZU1pbm9yLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIG5ldyBcPFJlY292ZXJSZXN1bHRcPiBtZXNzYWdlIGFuZCBzdXJyb3VuZGluZyBkb2N1bWVudAorCSAqIAorCSAqIEdlbmVyYXRlcyBhIG5ldyBSZWNvdmVyUmVzdWx0IG1lc3NhZ2UgZnJvbSBzY3JhdGNoLCBidWlsZGluZyB0aGUgRE9NCisJICogYXMgaXQgZ29lcy4gIFRoZSByZXNwb25zZSB3aWxsIGJlIGJhc2VkIG9uIGEgaW5wdXQgUmVjb3ZlclJlcXVlc3QgbWVzc2FnZQorCSAqIHdoaWNoIGlzIHVzZWQgdG8gcHJvdmlkZSBJZCBldGMuCisJICoKKwkgKiBAcGFyYW0gcmVxdWVzdCBSZXF1ZXN0IHRvIGJhc2UgcmVzcG9uc2Ugb24KKwkgKiBAcGFyYW0gZG9jIFdpbGwgYmUgdXNlZCB0byByZXR1cm4gdGhlIG5ld2x5IGNyZWF0ZWQgZG9jdW1lbnQgZWxlbWVudCBpbi4KKwkgKiBAcGFyYW0gaWQgVmFsdWUgdG8gc2V0IGluIHRoZSBJZCBmaWVsZC4gIElmIE5VTEwsIHRoZSBsaWJyYXJ5IHdpbGwKKwkgKiBnZW5lcmF0ZSBhIG5ldyBVbmlxdWUgSWQgdmFsdWUuCisgICAgICogQHBhcmFtIHJtYWogTWFqb3IgcmVzdWx0IGNvZGUKKyAgICAgKiBAcGFyYW0gcm1pbiBNaW5vciByZXN1bHQgY29kZQorCSAqIEByZXR1cm5zIHRoZSBuZXcgWEtNU1JlY292ZXJSZXNwb25zZSBzdHJ1Y3R1cmUKKwkgKiBAbm90ZSBMaWtlIGFsbCB0aGUgeHNlYyBsaWJyYXJ5IGZ1bmN0aW9ucywgdGhlIGRvY3VtZW50IGlzIG93bmVkIGJ5CisJICogdGhlIGNhbGxpbmcgYXBwbGljYXRpb24uICBEZWxldGluZyB0aGUgUmVjb3ZlclJlcXVlc3Qgb2JqZWN0IHdpbGwgbm90CisJICogZGVsZXRlIHRoZSBET00gZG9jdW1lbnQgYXMgd2VsbC4KKwkgKi8KKworCXZpcnR1YWwgWEtNU1JlY292ZXJSZXN1bHQgKiBjcmVhdGVSZWNvdmVyUmVzdWx0KAorCQlYS01TUmVjb3ZlclJlcXVlc3QgKiByZXF1ZXN0LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKipkb2MsCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNYWpvciBybWFqLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWlub3Igcm1pbiA9IFhLTVNSZXN1bHRUeXBlOjpOb25lTWlub3IsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIGEgbmV3IFw8UmVpc3N1ZVJlcXVlc3RcPiBtZXNzYWdlLgorCSAqIAorCSAqIEdlbmVyYXRlcyBhIG5ldyBSZWlzc3VlUmVxdWVzdCBtZXNzYWdlIGZyb20gc2NyYXRjaCwgYnVpbGRpbmcgdGhlIERPTQorCSAqIGFzIGl0IGdvZXMuCisJICoKKwkgKiBAcGFyYW0gc2VydmljZSBVUkkKKwkgKiBAcGFyYW0gZG9jIERvY3VtZW50IHRvIGNyZWF0ZSB0aGUgRE9NIHN0cnVjdHVyZSB3aXRoaW4uICBUaGUgY2FsbGVyCisJICogd2lsbCBuZWVkIHRvIGVtYmVkIHRoZSBET00gc3RydWN0dXJlIGF0IHRoZSBhcHByb3ByaWF0ZSBwbGFjZSBpbiB0aGUKKwkgKiBkb2N1bWVudCAodXNpbmcgYSBjYWxsIHRvIGdldEVsZW1lbnQgdG8gZmluZCB0aGUgdG9wIGxldmVsIGVsZW1lbnQpCisJICogQHBhcmFtIGlkIFZhbHVlIHRvIHNldCBpbiB0aGUgSWQgZmllbGQuICBJZiBOVUxMLCB0aGUgbGlicmFyeSB3aWxsCisJICogZ2VuZXJhdGUgYSBuZXcgVW5pcXVlIElkIHZhbHVlLgorCSAqIEByZXR1cm5zIHRoZSBuZXcgWEtNU1JlaXNzdWVSZXF1ZXN0IHN0cnVjdHVyZQorCSAqLworCisJdmlydHVhbCBYS01TUmVpc3N1ZVJlcXVlc3QgKiBjcmVhdGVSZWlzc3VlUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBkb2MsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKSA9IDA7CisJCQorCS8qKgorCSAqIFxicmllZiBDcmVhdGUgYSBuZXcgXDxSZWlzc3VlUmVxdWVzdFw+IG1lc3NhZ2UgYW5kIHN1cnJvdW5kaW5nIGRvY3VtZW50CisJICogCisJICogR2VuZXJhdGVzIGEgbmV3IFJlaXNzdWVSZXF1ZXN0IG1lc3NhZ2UgZnJvbSBzY3JhdGNoLCBidWlsZGluZyB0aGUgRE9NCisJICogYXMgaXQgZ29lcy4KKwkgKgorCSAqIEBwYXJhbSBzZXJ2aWNlIFVSSQorCSAqIEBwYXJhbSBkb2MgV2lsbCBiZSB1c2VkIHRvIHJldHVybiB0aGUgbmV3bHkgY3JlYXRlZCBkb2N1bWVudCBlbGVtZW50IGluLgorCSAqIEBwYXJhbSBpZCBWYWx1ZSB0byBzZXQgaW4gdGhlIElkIGZpZWxkLiAgSWYgTlVMTCwgdGhlIGxpYnJhcnkgd2lsbAorCSAqIGdlbmVyYXRlIGEgbmV3IFVuaXF1ZSBJZCB2YWx1ZS4KKwkgKiBAcmV0dXJucyB0aGUgbmV3IFhLTVNSZWlzc3VlUmVxdWVzdCBzdHJ1Y3R1cmUKKwkgKiBAbm90ZSBMaWtlIGFsbCB0aGUgeHNlYyBsaWJyYXJ5IGZ1bmN0aW9ucywgdGhlIGRvY3VtZW50IGlzIG93bmVkIGJ5CisJICogdGhlIGNhbGxpbmcgYXBwbGljYXRpb24uICBEZWxldGluZyB0aGUgUmVpc3N1ZVJlcXVlc3Qgb2JqZWN0IHdpbGwgbm90CisJICogZGVsZXRlIHRoZSBET00gZG9jdW1lbnQgYXMgd2VsbC4KKwkgKi8KKworCXZpcnR1YWwgWEtNU1JlaXNzdWVSZXF1ZXN0ICogY3JlYXRlUmVpc3N1ZVJlcXVlc3QoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICoqZG9jLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIENyZWF0ZSBhIG5ldyBcPFJlaXNzdWVSZXN1bHRcPiBtZXNzYWdlLgorCSAqIAorCSAqIEdlbmVyYXRlcyBhIG5ldyBSZWlzc3VlUmVzdWx0IG1lc3NhZ2UgZnJvbSBzY3JhdGNoLCBidWlsZGluZyB0aGUgRE9NCisJICogYXMgaXQgZ29lcy4gIFRoZSByZXNwb25zZSB3aWxsIGJlIGJhc2VkIG9uIGEgaW5wdXQgUmVpc3N1ZVJlcXVlc3QgbWVzc2FnZQorCSAqIHdoaWNoIGlzIHVzZWQgdG8gcHJvdmlkZSBJZCBldGMuCisJICoKKwkgKiBAcGFyYW0gcmVxdWVzdCBSZXF1ZXN0IHRvIGJhc2UgcmVzcG9uc2Ugb24KKwkgKiBAcGFyYW0gZG9jIFdpbGwgYmUgdXNlZCB0byByZXR1cm4gdGhlIG5ld2x5IGNyZWF0ZWQgZG9jdW1lbnQgZWxlbWVudCBpbi4KKwkgKiBAcGFyYW0gaWQgVmFsdWUgdG8gc2V0IGluIHRoZSBJZCBmaWVsZC4gIElmIE5VTEwsIHRoZSBsaWJyYXJ5IHdpbGwKKwkgKiBnZW5lcmF0ZSBhIG5ldyBVbmlxdWUgSWQgdmFsdWUuCisgICAgICogQHBhcmFtIHJtYWogTWFqb3IgcmVzdWx0IGNvZGUKKyAgICAgKiBAcGFyYW0gcm1pbiBNaW5vciByZXN1bHQgY29kZQorCSAqIEByZXR1cm5zIHRoZSBuZXcgWEtNU1JlaXNzdWVSZXNwb25zZSBzdHJ1Y3R1cmUKKwkgKi8KKworCXZpcnR1YWwgWEtNU1JlaXNzdWVSZXN1bHQgKiBjcmVhdGVSZWlzc3VlUmVzdWx0KAorCQlYS01TUmVpc3N1ZVJlcXVlc3QgKiByZXF1ZXN0LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBkb2MsCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNYWpvciBybWFqLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWlub3Igcm1pbiA9IFhLTVNSZXN1bHRUeXBlOjpOb25lTWlub3IsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgQ3JlYXRlIGEgbmV3IFw8UmVpc3N1ZVJlc3VsdFw+IG1lc3NhZ2UgYW5kIHN1cnJvdW5kaW5nIGRvY3VtZW50CisJICogCisJICogR2VuZXJhdGVzIGEgbmV3IFJlaXNzdWVSZXN1bHQgbWVzc2FnZSBmcm9tIHNjcmF0Y2gsIGJ1aWxkaW5nIHRoZSBET00KKwkgKiBhcyBpdCBnb2VzLiAgVGhlIHJlc3BvbnNlIHdpbGwgYmUgYmFzZWQgb24gYSBpbnB1dCBSZWlzc3VlUmVxdWVzdCBtZXNzYWdlCisJICogd2hpY2ggaXMgdXNlZCB0byBwcm92aWRlIElkIGV0Yy4KKwkgKgorCSAqIEBwYXJhbSByZXF1ZXN0IFJlcXVlc3QgdG8gYmFzZSByZXNwb25zZSBvbgorCSAqIEBwYXJhbSBkb2MgV2lsbCBiZSB1c2VkIHRvIHJldHVybiB0aGUgbmV3bHkgY3JlYXRlZCBkb2N1bWVudCBlbGVtZW50IGluLgorCSAqIEBwYXJhbSBpZCBWYWx1ZSB0byBzZXQgaW4gdGhlIElkIGZpZWxkLiAgSWYgTlVMTCwgdGhlIGxpYnJhcnkgd2lsbAorCSAqIGdlbmVyYXRlIGEgbmV3IFVuaXF1ZSBJZCB2YWx1ZS4KKyAgICAgKiBAcGFyYW0gcm1haiBNYWpvciByZXN1bHQgY29kZQorICAgICAqIEBwYXJhbSBybWluIE1pbm9yIHJlc3VsdCBjb2RlCisJICogQHJldHVybnMgdGhlIG5ldyBYS01TUmVpc3N1ZVJlc3BvbnNlIHN0cnVjdHVyZQorCSAqIEBub3RlIExpa2UgYWxsIHRoZSB4c2VjIGxpYnJhcnkgZnVuY3Rpb25zLCB0aGUgZG9jdW1lbnQgaXMgb3duZWQgYnkKKwkgKiB0aGUgY2FsbGluZyBhcHBsaWNhdGlvbi4gIERlbGV0aW5nIHRoZSBSZWlzc3VlUmVxdWVzdCBvYmplY3Qgd2lsbCBub3QKKwkgKiBkZWxldGUgdGhlIERPTSBkb2N1bWVudCBhcyB3ZWxsLgorCSAqLworCisJdmlydHVhbCBYS01TUmVpc3N1ZVJlc3VsdCAqIGNyZWF0ZVJlaXNzdWVSZXN1bHQoCisJCVhLTVNSZWlzc3VlUmVxdWVzdCAqIHJlcXVlc3QsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqKmRvYywKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1ham9yIHJtYWosCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNaW5vciBybWluID0gWEtNU1Jlc3VsdFR5cGU6Ok5vbmVNaW5vciwKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpID0gMDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBFbnZpcm9ubWVudCBNYW5pcHVsYXRpb24gRnVuY3Rpb25zICovCisJLy9AeworCisJLyoqCisJICAqIFxicmllZiBTZXQgdGhlIHByZWZpeCBiZSB1c2VkIGZvciB0aGUgRFNJRyBuYW1lc3BhY2UuCisJICAqCisJICAqIEBwYXJhbSBwcmVmaXggVGhlIFVURi0xNiBlbmNvaWRlZCBOUyBwcmVmaXggdG8gdXNlIGZvciB0aGUgWE1MIAorCSAgKiBEaWdpdGFsIFNpZ25hdHVyZSBub2RlcworCSAgKi8KKworCXZpcnR1YWwgdm9pZCBzZXREU0lHTlNQcmVmaXgoY29uc3QgWE1MQ2ggKiBwcmVmaXgpID0gMDsKKworCS8qKgorCSAgKiBcYnJpZWYgU2V0IHRoZSBwcmVmaXggYmUgdXNlZCBmb3IgdGhlIEV4Y2x1c2l2ZSBDYW5vbmljYWxpc2F0aW9uIG5hbWVzcGFjZS4KKwkgICoKKwkgICogVGhlIEV4Y2x1c2l2ZSBDYW5vbmljYWxpc2F0aW9uIHNwZWNpZmljYXRpb24gZGVmaW5lcyBhIG5ldyBuYW1lc3BhY2UgZm9yIHRoZQorCSAgKiBJbmNsdXNpdmVOYW1lc3BhY2VzIG5vZGUuICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgcHJlZml4CisJICAqIHRoYXQgdGhlIGxpYnJhcnkgd2lsbCB1c2Ugd2hlbiBjcmVhdGluZyBub2RlcyB3aXRoaW4gdGhpcyBuYW1lc3BhY2UuCisJICAqCisJICAqIDxwPnhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9wPgorCSAgKgorCSAgKiBJZiBubyBwcmVmaXggaXMgc2V0LCB0aGUgZGVmYXVsdCBuYW1lc3BhY2Ugd2lsbCBiZSB1c2VkCisJICAqCisJICAqIEBwYXJhbSBwcmVmaXggVGhlIFVURi0xNiBlbmNvaWRlZCBOUyBwcmVmaXggdG8gdXNlIGZvciB0aGUgWE1MIAorCSAgKiBFeGNsdXNpdmUgQ2Fub25pY2FsaXNhdGlvbiBub2RlcworCSAgKi8KKworCXZpcnR1YWwgdm9pZCBzZXRFQ05TUHJlZml4KGNvbnN0IFhNTENoICogcHJlZml4KSA9IDA7CisKKwkvKioKKwkgICogXGJyaWVmIFNldCB0aGUgcHJlZml4IGJlIHVzZWQgZm9yIHRoZSBYUGF0aC1GaWx0ZXIyIG5hbWVzcGFjZS4KKwkgICoKKwkgICogVGhlIFhQYXRoRmlsdGVyIGRlZmluaXRpb24gdXNlcyBpdHMgb3duIG5hbWVzcGFjZS4gIFRoaXMKKwkgICogbWV0aG9kIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgcHJlZml4IHRoYXQgdGhlIGxpYnJhcnkgd2lsbCB1c2UKKwkgICogd2hlbiBjcmVhdGluZyBlbGVtZW50cyBpbiB0aGlzIG5hbWVzcGFjZQorCSAgKgorCSAgKiA8cD54bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNi94bWxkc2lnLWZpbHRlcjIiPC9wPgorCSAgKgorCSAgKiBJZiBubyBwcmVmaXggaXMgc2V0LCB0aGUgZGVmYXVsdCBuYW1lc3BhY2Ugd2lsbCBiZSB1c2VkCisJICAqCisJICAqIEBwYXJhbSBwcmVmaXggVGhlIFVURi0xNiBlbmNvaWRlZCBOUyBwcmVmaXggdG8gdXNlIGZvciB0aGUgWFBhdGgKKwkgICogZmlsdGVyIG5vZGVzCisJICAqLworCisJdmlydHVhbCB2b2lkIHNldFhQRk5TUHJlZml4KGNvbnN0IFhNTENoICogcHJlZml4KSA9IDA7CisKKwkvKioKKwkgICogXGJyaWVmIFNldCB0aGUgcHJlZml4IGJlIHVzZWQgZm9yIHRoZSBYTUwgRW5jcnlwdGlvbiBuYW1lc3BhY2UuCisJICAqCisJICAqIEBwYXJhbSBwcmVmaXggVGhlIFVURi0xNiBlbmNvaWRlZCBOUyBwcmVmaXggdG8gdXNlIGZvciB0aGUgWE1MCisJICAqIEVuY3J5cHRpb24gbm9kZXMKKwkgICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0WEVOQ05TUHJlZml4KGNvbnN0IFhNTENoICogcHJlZml4KSA9IDA7CisKKwkvKioKKwkgICogXGJyaWVmIFNldCB0aGUgcHJlZml4IGJlIHVzZWQgZm9yIHRoZSBYS01TIE5hbWVzcGFjZQorCSAgKgorCSAgKiBAcGFyYW0gcHJlZml4IFRoZSBVVEYtMTYgZW5jb2lkZWQgTlMgcHJlZml4IHRvIHVzZSBmb3IgdGhlIFhLTVMKKwkgICogbm9kZXMKKwkgICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0WEtNU05TUHJlZml4KGNvbnN0IFhNTENoICogcHJlZml4KSA9IDA7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgTWVzc2FnZSBDb252ZXJzaW9ucyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBDb252ZXJ0IHRvIGEgUmVxdWVzdCB0eXBlCisJICoKKwkgKiBVc2VkIHRvIGNvbnZlcnQgYSBNZXNzYWdlQWJzdHJhY3RUeXBlIHRvIGEgUmVxdWVzdEFic3RyYWN0VHlwZQorCSAqCisJICogQHBhcmFtIG1zZyBUaGUgbWVzc2FnZSB0byBjb252ZXJ0CisJICogQHJldHVybiB0aGUgc2FtZSBtZXNzYWdlIHR5cGVjYXN0IHRvIGEgUmVxdWVzdEFic3RyYWN0VHlwZSAoaWYgTlVMTCBvdGhlcndpc2UpCisJICogb3RoZXJ3aXNlCisJICovCisKKwl2aXJ0dWFsIFhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlICogdG9SZXF1ZXN0QWJzdHJhY3RUeXBlKFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlICptc2cpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBDb252ZXJ0IHRvIGEgUmVzdWx0IHR5cGUKKwkgKgorCSAqIFVzZWQgdG8gY29udmVydCBhIE1lc3NhZ2VBYnN0cmFjdFR5cGUgdG8gYSBSZXN1bHRUeXBlCisJICoKKwkgKiBAcGFyYW0gbXNnIFRoZSBtZXNzYWdlIHRvIGNvbnZlcnQKKwkgKiBAcmV0dXJuIHRoZSBzYW1lIG1lc3NhZ2UgdHlwZWNhc3QgdG8gYSBSZXN1bHRUeXBlIChpZiBPSyAtIE5VTEwgb3RoZXJ3aXNlKQorCSAqIG90aGVyd2lzZQorCSAqLworCisJdmlydHVhbCBYS01TUmVzdWx0VHlwZSAqIHRvUmVzdWx0VHlwZShYS01TTWVzc2FnZUFic3RyYWN0VHlwZSAqbXNnKSA9IDA7CisKKwkvL0B9Citwcml2YXRlOgorCisJLy8gVW5pbXBsZW1lbnRlZAorCVhLTVNNZXNzYWdlRmFjdG9yeShjb25zdCBYS01TTWVzc2FnZUZhY3RvcnkgJik7CisJWEtNU01lc3NhZ2VGYWN0b3J5ICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU01lc3NhZ2VGYWN0b3J5ICYpOworCit9OworCisjZW5kaWYgLyogWEtNU01FU1NBR0VGQUNUT1JZX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvWEtNU05vdEJvdW5kQXV0aGVudGljYXRpb24uaHBwIGIvYy9zcmMveGttcy9YS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbi5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdjYTFhZAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvWEtNU05vdEJvdW5kQXV0aGVudGljYXRpb24uaHBwCkBAIC0wLDAgKzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbiA6PSBJbnRlcmZhY2UgZm9yIFZhbGlkaXR5SW50ZXJ2YWwgZWxlbWVudHMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEtNU05PVEJPVU5EQVVUSEVOVElDQVRJT05fSU5DTFVERQorI2RlZmluZSBYS01TTk9UQk9VTkRBVVRIRU5USUNBVElPTl9JTkNMVURFCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKworCisvKioKKyAqIEBpbmdyb3VwIHhrbXMKKyAqLworCisvKioKKyAqIEBicmllZiBJbnRlcmZhY2UgZGVmaW5pdGlvbiBmb3IgdGhlIE5vdEJvdW5kQXV0aGVudGljYXRpb24gZWxlbWVudHMKKyAqCisgKiBUaGUgXDxOb3RCb3VuZEF1dGhlbnRpY2F0aW9uXD4gRWxlbWVudCB1c2VkIHdpdGhpbiBhbiBcPEF1dGhlbnRpY2F0aW9uXD4KKyAqIGVsZW1lbnQgdG8gcGFzcyBhIHBhc3MgcGhyYXNlIG9mIHNvbWUga2luZCB0aGF0IGF1dGhlbnRpY2F0ZXMgdGhlIFgtS1JTUworICogcmVxdWVzdC4KKyAqCisgKiBUaGUgc2NoZW1hIGRlZmluaXRpb24gZm9yIE5vdEJvdW5kQXV0aGVudGljYXRpb24gaXMgYXMgZm9sbG93cyA6CisgKgorICogXHZlcmJhdGltCisgICA8IS0tIE5vdEJvdW5kQXV0aGVudGljYXRpb24gLS0+CisgICA8ZWxlbWVudCBuYW1lPSJOb3RCb3VuZEF1dGhlbnRpY2F0aW9uIiAKKyAgICAgICAgIHR5cGU9InhrbXM6Tm90Qm91bmRBdXRoZW50aWNhdGlvblR5cGUiLz4KKyAgIDxjb21wbGV4VHlwZSBuYW1lPSJOb3RCb3VuZEF1dGhlbnRpY2F0aW9uVHlwZSI+CisgICAgICA8YXR0cmlidXRlIG5hbWU9IlByb3RvY29sIiB0eXBlPSJhbnlVUkkiIHVzZT0icmVxdWlyZWQiLz4KKyAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iVmFsdWUiIHR5cGU9ImJhc2U2NEJpbmFyeSIgdXNlPSJyZXF1aXJlZCIvPgorICAgPC9jb21wbGV4VHlwZT4KKyAgIDwhLS0gL05vdEJvdW5kQXV0aGVudGljYXRpb24gLS0+CitcZW5kdmVyYmF0aW0KKyAqLworCitjbGFzcyBYS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbiB7CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworcHJvdGVjdGVkOgorCisJWEtNU05vdEJvdW5kQXV0aGVudGljYXRpb24oKSB7fTsKKworcHVibGljOgorCisJdmlydHVhbCB+WEtNU05vdEJvdW5kQXV0aGVudGljYXRpb24oKSB7fTsKKworCS8vQH0KKworCS8qKiBAbmFtZSBHZXQgTWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIHByb3RvY29sIFVSSQorCSAqCisJICogQSBcPFhLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uXD4gaGFzIGEgcHJvdG9jb2wgYXR0cmlidXRlIGRlZmluaW5nIHRoZQorCSAqIHByb3RvY29sIGJlaW5nIHVzZWQgdG8gYXV0aGVudGljYXRlIHRoZSByZXF1ZXN0LgorCSAqCisJICogQHJldHVybiBUaGUgc3RyaW5nIGhvbGRpbmcgdGhlIFVSSSBvZiB0aGUgcHJvdG9jb2wKKwkgKi8KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRQcm90b2NvbCh2b2lkKSBjb25zdCA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSB2YWx1ZQorCSAqCisJICogUmV0dXJucyB0aGUgYXV0aGVudGljYXRpb24gdmFsdWUuCisJICoKKwkgKiBAcmV0dXJuIEEgc3RyaW5nIGhvbGRpbmcgdGhlIGJhc2U2NCBlbmNvZGVkIGF1dGhlbnRpY2F0aW9uIHZhbHVlCisJICovCisKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0VmFsdWUodm9pZCkgY29uc3QgPSAwOworCisJLy9AfQorCisJLyoqIEBuYW1lIFNldCBNZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUgcHJvdG9jb2wKKwkgKgorCSAqIEBwYXJhbSB1cmkgU3RyaW5nIGNvbnRhaW5pbmcgdGhlIFVSSSB0byBzZXQgYXMgdGhlIHByb3RvY29sCisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0UHJvdG9jb2woY29uc3QgWE1MQ2ggKiB1cmkpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBTZXQgdGhlIGF1dGhlbnRpY2F0aW9uIHZhbHVlCisJICoKKwkgKiBAcGFyYW0gdmFsdWUgQmFzZTY0IGVuY29kZWQgdmFsdWUgdG8gc2V0IGFzIHRoZSBhdXRoZW50aWNhdGlvbiB2YWx1ZQorCSAqLworCisJdmlydHVhbCB2b2lkIHNldFZhbHVlKGNvbnN0IFhNTENoICogdmFsdWUpID0gMDsKKworCS8vQH0KKworcHJpdmF0ZToKKworCS8vIFVuaW1wbGVtZW50ZWQKKwlYS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbihjb25zdCBYS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbiAmKTsKKwlYS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbiAmIG9wZXJhdG9yID0gKGNvbnN0IFhLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uICYpOworCit9OworCisjZW5kaWYgLyogWEtNU05PVEJPVU5EQVVUSEVOVElDQVRJT05fSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9YS01TUGVuZGluZ1JlcXVlc3QuaHBwIGIvYy9zcmMveGttcy9YS01TUGVuZGluZ1JlcXVlc3QuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0MmE0OTYKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL1hLTVNQZW5kaW5nUmVxdWVzdC5ocHAKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNQZW5kaW5nUmVxdWVzdCA6PSBJbnRlcmZhY2UgZm9yIFBlbmRpbmdSZXF1ZXN0IE1lc3NhZ2VzCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhLTVNQRU5ESU5HUkVRVUVTVF9JTkNMVURFCisjZGVmaW5lIFhLTVNQRU5ESU5HUkVRVUVTVF9JTkNMVURFCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGUuaHBwPgorCitjbGFzcyBYS01TUXVlcnlLZXlCaW5kaW5nOworCisvKioKKyAqIEBpbmdyb3VwIHhrbXMKKyAqLworCisvKioKKyAqIEBicmllZiBJbnRlcmZhY2UgZGVmaW5pdGlvbiBmb3IgdGhlIFBlbmRpbmdSZXF1ZXN0IGVsZW1lbnRzCisgKgorICogVGhlIFw8UGVuZGluZ1JlcXVlc3RcPiBpcyB1c2VkIGluIEFzeW5jaHJvbm91cyBwcm9jZXNzaW5nLiAgQSBjbGllbnQKKyAqIHVzZXMgdGhlIFBlbmRpbmdSZXF1ZXN0IGVsZW1lbnQgdG8gcmVxdWVzdCBhIHJlc3BvbnNlIHRvIGEgcmVxdWVzdCB0aGF0CisgKiB3YXMgcGxhY2VkIGluIHRoZSBwYXN0LCBhbmQgdG8gd2hpY2ggdGhlIHNlcnZpY2Ugb3JpZ2luYWxseSBwcm92aWRlZAorICogYSAiUGVuZGluZyIgcmVzcG9uc2UgLSBpLmUuIHdvcmsgeWV0IHRvIGJlIGRvbmUuCisgKgorICogVGhlIHNjaGVtYSBkZWZpbml0aW9uIGZvciBQZW5kaW5nUmVxdWVzdCBpcyBhcyBmb2xsb3dzIDoKKyAqCisgKiBcdmVyYmF0aW0KKyAgIDwhLS0gUGVuZGluZ1JlcXVlc3QgLS0+CisgICA8ZWxlbWVudCBuYW1lPSJQZW5kaW5nUmVxdWVzdCIgdHlwZT0ieGttczpQZW5kaW5nUmVxdWVzdFR5cGUiLz4KKyAgIDxjb21wbGV4VHlwZSBuYW1lPSJQZW5kaW5nUmVxdWVzdFR5cGUiPgorICAgICAgPGNvbXBsZXhDb250ZW50PgorICAgICAgICAgPGV4dGVuc2lvbiBiYXNlPSJ4a21zOlJlcXVlc3RBYnN0cmFjdFR5cGUiPgorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJSZXNwb25zZUlkIiB0eXBlPSJOQ05hbWUiIHVzZT0icmVxdWlyZWQiLz4KKyAgICAgICAgIDwvZXh0ZW5zaW9uPgorICAgICAgPC9jb21wbGV4Q29udGVudD4KKyAgIDwvY29tcGxleFR5cGU+CisgICA8IS0tIC9QZW5kaW5nUmVxdWVzdCAtLT4KK1xlbmR2ZXJiYXRpbQorICovCisKK2NsYXNzIFhLTVNQZW5kaW5nUmVxdWVzdCA6IHB1YmxpYyBYS01TUmVxdWVzdEFic3RyYWN0VHlwZSB7CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworcHJvdGVjdGVkOgorCisJWEtNU1BlbmRpbmdSZXF1ZXN0KCkge307CisKK3B1YmxpYzoKKworCXZpcnR1YWwgflhLTVNQZW5kaW5nUmVxdWVzdCgpIHt9OworCisJLyoqIEBuYW1lIEdldHRlciBJbnRlcmZhY2UgTWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gdGhlIGVsZW1lbnQgYXQgdGhlIGJhc2Ugb2YgdGhlIG1lc3NhZ2UKKwkgKi8KKworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBnZXRFbGVtZW50KHZvaWQpIGNvbnN0ID0gMDsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gdGhlIFJlc3BvbnNlSWQKKwkgKgorCSAqIFRoZSBSZXNwb25zZUlkIGVxdWF0ZXMgdG8gdGhlIElkIG9mIHRoZSBmaXJzdCByZXNwb25zZSB0aGUgc2VydmljZSByZXR1cm5lZCwKKwkgKiB3aGljaCBtdXN0IChieSBkZWZpbml0aW9uKSBoYXZlIGhhZCBhIHJlc3BvbnNlIGNvZGUgb2YgIlBlbmRpbmciLiAgVG9nZXRoZXIKKwkgKiB3aXRoIHRoZSBPcmlnaW5hbFJlcXVlc3RJZCwgdGhpcyBjYW4gYmUgdXNlZCBieSB0aGUgc2VydmljZSB0byB1bmlxdWxleQorCSAqIGlkZW50aWZ5IHRoZSBvcmlnaW5hbCByZXF1ZXN0IGZvciB3aGljaCB0aGlzIFBlbmRpbmdSZXF1ZXN0IHJlZmVycy4KKwkgKgorCSAqIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBYTUxDaCBzdHJpbmcgaG9sZGluZyB0aGUgUmVzcG9uc2VJZAorCSAqLworCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldFJlc3BvbnNlSWQodm9pZCkgY29uc3QgPSAwOworCisJLy9AfQorCisJLyoqIEBuYW1lIFNldHRlciBJbnRlcmZhY2UgTWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBTZXQgdGhlIFJlc3BvbnNlSWQKKwkgKgorCSAqIEFsbG93cyBhIGNhbGxpbmcgYXBwbGljYXRpb24gdG8gb3Zlci1yaWRlIHRoZSBjb25maWd1cmVkIHJlc3BvbnNlSWQKKwkgKgorCSAqIEBwYXJhbSByZXNwb25zZUlkIFRoZSBuZXcgcmVzcG9uc2VJZCBmb3IgdGhpcyBlbGVtZW50CisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0UmVzcG9uc2VJZChjb25zdCBYTUxDaCAqIHJlc3BvbnNlSWQpID0gMDsKKworCS8vQH0KKworcHJpdmF0ZToKKworCS8vIFVuaW1wbGVtZW50ZWQKKwlYS01TUGVuZGluZ1JlcXVlc3QoY29uc3QgWEtNU1BlbmRpbmdSZXF1ZXN0ICYpOworCVhLTVNQZW5kaW5nUmVxdWVzdCAmIG9wZXJhdG9yID0gKGNvbnN0IFhLTVNQZW5kaW5nUmVxdWVzdCAmKTsKKworfTsKKworI2VuZGlmIC8qIFhLTVNQRU5ESU5HUkVRVUVTVF9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL1hLTVNQcm90b3R5cGVLZXlCaW5kaW5nLmhwcCBiL2Mvc3JjL3hrbXMvWEtNU1Byb3RvdHlwZUtleUJpbmRpbmcuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyMDgyOTkKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL1hLTVNQcm90b3R5cGVLZXlCaW5kaW5nLmhwcApAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU1Byb3RvdHlwZUtleUJpbmRpbmcgOj0gSW50ZXJmYWNlIGZvciBLZXlCaW5kaW5nIGVsZW1lbnRzCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhLTVNQUk9UT1RZUEVLRVlCSU5ESU5HX0lOQ0xVREUKKyNkZWZpbmUgWEtNU1BST1RPVFlQRUtFWUJJTkRJTkdfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlLmhwcD4KKworY2xhc3MgWEtNU1ZhbGlkaXR5SW50ZXJ2YWw7CisKKy8qKgorICogQGluZ3JvdXAgeGttcworICovCisKKy8qKgorICogQGJyaWVmIEludGVyZmFjZSBkZWZpbml0aW9uIGZvciB0aGUgS2V5QmluZGluZyBlbGVtZW50cworICoKKyAqIFRoZSBcPEtleUJpbmRpbmdcPiBFbGVtZW50IGlzIHVzZWQgaW4gYSByZXN1bHQgbWVzc2FnZSB0byBhIGNsaWVudAorICogdG8gcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBhIHBhcnRpY3VsYXIga2V5LgorICoKKyAqIFRoZSBzY2hlbWEgZGVmaW5pdGlvbiBmb3IgS2V5QmluZGluZyBpcyBhcyBmb2xsb3dzIDoKKyAqCisgKiBcdmVyYmF0aW0KKyAgIDwhLS0gUHJvdG90eXBlS2V5QmluZGluZyAtLT4KKyAgIDxlbGVtZW50IG5hbWU9IlByb3RvdHlwZUtleUJpbmRpbmciIHR5cGU9InhrbXM6UHJvdG90eXBlS2V5QmluZGluZ1R5cGUiLz4KKyAgIDxjb21wbGV4VHlwZSBuYW1lPSJQcm90b3R5cGVLZXlCaW5kaW5nVHlwZSI+CisgICAgICA8Y29tcGxleENvbnRlbnQ+CisgICAgICAgICA8ZXh0ZW5zaW9uIGJhc2U9InhrbXM6S2V5QmluZGluZ0Fic3RyYWN0VHlwZSI+CisgICAgICAgICAgICA8c2VxdWVuY2U+CisgICAgICAgICAgICAgICA8ZWxlbWVudCByZWY9InhrbXM6VmFsaWRpdHlJbnRlcnZhbCIgbWluT2NjdXJzPSIwIi8+CisgICAgICAgICAgICAgICA8ZWxlbWVudCByZWY9InhrbXM6UmV2b2NhdGlvbkNvZGVJZGVudGlmaWVyIiBtaW5PY2N1cnM9IjAiLz4KKyAgICAgICAgICAgIDwvc2VxdWVuY2U+CisgICAgICAgICA8L2V4dGVuc2lvbj4KKyAgICAgIDwvY29tcGxleENvbnRlbnQ+CisgICA8L2NvbXBsZXhUeXBlPgorICAgPCEtLSAvUHJvdG90eXBlS2V5QmluZGluZyAtLT4KK1xlbmR2ZXJiYXRpbQorICovCisKK2NsYXNzIFhLTVNTdGF0dXM7CisKK2NsYXNzIFhLTVNQcm90b3R5cGVLZXlCaW5kaW5nIDogcHVibGljIFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlIHsKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCitwcm90ZWN0ZWQ6CisKKwlYS01TUHJvdG90eXBlS2V5QmluZGluZygpIHt9OworCitwdWJsaWM6CisKKwl2aXJ0dWFsIH5YS01TUHJvdG90eXBlS2V5QmluZGluZygpIHt9OworCisJLy9AfQorCisJLyoqIEBuYW1lIEdldCBNZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgc3VnZ2VzdGVkIFZhbGlkaXR5SW50ZXJ2YWwgZm9yIHRoaXMga2V5CisJICoKKwkgKiBDbGllbnRzIGNhbiBzdWdnZXN0IGEgVmFsaWRpdHkgcGVyaW9kIGZvciBhIGtleSB1c2luZyB0aGlzIGVsZW1lbnQuCisJICogU3VjaCByZXF1ZXN0cyBjYW4gKG9mIGNvdXJzZSkgYmUgaWdub3JlZCBieSB0aGUgc2VydmVyCisJICoKKwkgKiBAcmV0dXJuIFRoZSBWYWxkaXRpdHlJbnRlcnZhbCBvYmplY3Qgb3IgTlVMTCBpZiBub25lIHdhcyBkZWZpbmVkCisJICovCisKKwl2aXJ0dWFsIFhLTVNWYWxpZGl0eUludGVydmFsICogZ2V0VmFsaWRpdHlJbnRlcnZhbCh2b2lkKSBjb25zdCA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgT2J0YWluIHRoZSBSZXZvY2F0aW9uQ29kZUlkZW50aWZpZXIgdG8gYmUgdXNlZCBmb3IgdGhpcyBrZXkKKwkgKgorCSAqIFRoZSBjbGllbnQgY2FuIHByb3ZpZGUgYSByZXZvY2F0aW9uIGNvZGUgd2hlbiByZWdpc3RlcmluZyBhIG5ldyBrZXkuCisJICogVGhlIGNvZGUgcHJvdmlkZWQgaW5pdGlhbGx5IGlzIGEgZG91YmxlIE1BQ2QgdmVyc2lvbiBvZiB0aGUgY2xpZW50J3MgCisJICogcmV2b2NhdGlvbiBwYXNzIHBocmFzZS4gIAorCSAqCisJICogU2hvdWxkIHRoZSBjbGllbnQgbGF0ZXIgd2lzaCB0byBsYXRlciByZXZva2UgdGhlaXIga2V5LCB0aGV5IHNob3VsZCBwcm92ZGUKKwkgKiB0aGUgc2luZ2xlIE1BQ2QgdmVyc2lvbiB3aGljaCBjYW4gdGhlbiBiZSBjb252ZXJ0ZWQgdG8gdGhlIGRvdWJsZSBNQUMgYnkKKwkgKiB0aGUgc2VydmVyIC0gdGh1cyB2YWxpZGF0aW5nIHRoZSBjb2RlIHdpdGhvdXQgZXZlciBwYXNzaW5nIGFueXRoaW5nIG92ZXIKKwkgKiB0aGUgd2lyZSB0aGF0IHdpbGwgZGlyZWN0bHkgY29tcHJvbWlzZSB0aGUga2V5IHVudGlsIHRoZSBmaW5hbCByZXZva2UgcmVxdWVzdAorCSAqCisJICogQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIGJhc2U2NCBlbmNvZGVkIEhNQUMgb3V0cHV0CisJICovCisKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0UmV2b2NhdGlvbkNvZGVJZGVudGlmaWVyKHZvaWQpIGNvbnN0ID0gMDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBTZXQgTWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBTZXQgdGhlIFZhbGlkaXR5IEludGVydmFsIGZvciB0aGlzIGtleQorCSAqCisJICogQHBhcmFtIG5vdEJlZm9yZSAtIGRhdGVUaW1lIHN0cmluZyB0byBzZXQgdGhlIE5vdEJlZm9yZSBpdGVtIGFzIChOVUxMIHRvIGNsZWFyKQorCSAqIEBwYXJhbSBub3RPbk9yQWZ0ZXIgLSBkYXRlVGltZSBzdHJpbmcgdG8gc2V0IHRoZSBOb3RPbk9yQWZ0ZXIgaXRlbSBhcyAoTlVMTCB0byBjbGVhcikKKwkgKi8KKworCXZpcnR1YWwgdm9pZCBzZXRWYWxpZGl0eUludGVydmFsKGNvbnN0IFhNTENoICogbm90QmVmb3JlLCBjb25zdCBYTUxDaCAqIG5vdE9uT3JBZnRlcikgPSAwOworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUgUmV2b2NhdGlvbkNvZGVJZGVudGlmaWVyCisJICoKKwkgKiBTZXRzIHRoZSByZXZvY2F0aW9uIGNvZGUgaWRlbnRpZmVyCisJICoKKwkgKiBAcGFyYW0gaWRlbnRpZmllciBzdHJpbmcgY29udGFpbmluZyBiYXNlNjQgZW5jb2RlZCBITUFDIHZhbHVlCisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0UmV2b2NhdGlvbkNvZGVJZGVudGlmaWVyKGNvbnN0IFhNTENoICogaWRlbnRpZmllcikgPSAwOworCisJLy9AfQorCitwcml2YXRlOgorCisJLy8gVW5pbXBsZW1lbnRlZAorCVhLTVNQcm90b3R5cGVLZXlCaW5kaW5nKGNvbnN0IFhLTVNQcm90b3R5cGVLZXlCaW5kaW5nICYpOworCVhLTVNQcm90b3R5cGVLZXlCaW5kaW5nICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU1Byb3RvdHlwZUtleUJpbmRpbmcgJik7CisKK307CisKKyNlbmRpZiAvKiBYS01TUFJPVE9UWVBFS0VZQklORElOR19JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL1hLTVNRdWVyeUtleUJpbmRpbmcuaHBwIGIvYy9zcmMveGttcy9YS01TUXVlcnlLZXlCaW5kaW5nLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2Y1OWYzCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9YS01TUXVlcnlLZXlCaW5kaW5nLmhwcApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TUXVlcnlLZXlCaW5kaW5nIDo9IEludGVyZmFjZSBmb3IgUXVlcnlLZXlCaW5kaW5nIGVsZW1lbnRzCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhLTVNRVUVSWUtFWUJJTkRJTkdfSU5DTFVERQorI2RlZmluZSBYS01TUVVFUllLRVlCSU5ESU5HX0lOQ0xVREUKKworLy8gWFNFQyBJbmNsdWRlcworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZS5ocHA+CisKKy8qKgorICogQGluZ3JvdXAgeGttcworICovCisKKy8qKgorICogQGJyaWVmIEludGVyZmFjZSBkZWZpbml0aW9uIGZvciB0aGUgUXVlcnlLZXlCaW5kaW5nIGVsZW1lbnRzCisgKgorICogVGhlIFw8UXVlcnlLZXlCaW5kaW5nXD4gRWxlbWVudCBpcyB1c2VkIGluIGEgcmVxdWVzdCBtZXNzYWdlIHRvIGEgc2VydmVyCisgKiB0byBhc2sgdGhlIHNlcnZlciBhcyB0byB3aGV0aGVyIHBhcnRpY3VsYXIga2V5IGJpbmRpbmdzIGFyZSBwZXJtaXR0ZWQgZm9yCisgKiBhIGdpdmVuIGtleS4KKyAqCisgKiBUaGUgc2NoZW1hIGRlZmluaXRpb24gZm9yIFF1ZXJ5S2V5QmluZGluZyBpcyBhcyBmb2xsb3dzIDoKKyAqCisgKiBcdmVyYmF0aW0KKyAgIDwhLS0gUXVlcnlLZXlCaW5kaW5nIC0tPgorICAgPGVsZW1lbnQgbmFtZT0iUXVlcnlLZXlCaW5kaW5nIiB0eXBlPSJ4a21zOlF1ZXJ5S2V5QmluZGluZ1R5cGUiLz4KKyAgIDxjb21wbGV4VHlwZSBuYW1lPSJRdWVyeUtleUJpbmRpbmdUeXBlIj4KKyAgICAgIDxjb21wbGV4Q29udGVudD4KKyAgICAgICAgIDxleHRlbnNpb24gYmFzZT0ieGttczpLZXlCaW5kaW5nQWJzdHJhY3RUeXBlIj4KKyAgICAgICAgICAgIDxzZXF1ZW5jZT4KKyAgICAgICAgICAgICAgIDxlbGVtZW50IHJlZj0ieGttczpUaW1lSW5zdGFudCIgbWluT2NjdXJzPSIwIi8+CisgICAgICAgICAgICA8L3NlcXVlbmNlPgorICAgICAgICAgPC9leHRlbnNpb24+CisgICAgICA8L2NvbXBsZXhDb250ZW50PgorICAgPC9jb21wbGV4VHlwZT4KKyAgIDwhLS0gL1F1ZXJ5S2V5QmluZGluZyAtLT4KK1xlbmR2ZXJiYXRpbQorICovCisKKworY2xhc3MgWEtNU1F1ZXJ5S2V5QmluZGluZyA6IHB1YmxpYyBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZSB7CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworcHJvdGVjdGVkOgorCisJWEtNU1F1ZXJ5S2V5QmluZGluZygpIHt9OworCitwdWJsaWM6CisKKwl2aXJ0dWFsIH5YS01TUXVlcnlLZXlCaW5kaW5nKCkge307CisKKworcHJpdmF0ZToKKworCS8vIFVuaW1wbGVtZW50ZWQKKwlYS01TUXVlcnlLZXlCaW5kaW5nKGNvbnN0IFhLTVNRdWVyeUtleUJpbmRpbmcgJik7CisJWEtNU1F1ZXJ5S2V5QmluZGluZyAmIG9wZXJhdG9yID0gKGNvbnN0IFhLTVNRdWVyeUtleUJpbmRpbmcgJik7CisKK307CisKKyNlbmRpZiAvKiBYS01TUVVFUllLRVlCSU5ESU5HX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvWEtNU1JTQUtleVBhaXIuaHBwIGIvYy9zcmMveGttcy9YS01TUlNBS2V5UGFpci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMzZGVmNQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvWEtNU1JTQUtleVBhaXIuaHBwCkBAIC0wLDAgKzEsMTc2IEBACisvKg0KKyAqIENvcHlyaWdodCAyMDA2IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKg0KKyAqIFhTRUMNCisgKg0KKyAqIFhLTVNSU0FLZXlQYWlyIDo9IEludGVyZmFjZSBmb3IgUlNBS2V5UGFpciBlbGVtZW50cw0KKyAqDQorICogJElkOiQNCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgWEtNU1JTQUtFWVBBSVJfSU5DTFVERQ0KKyNkZWZpbmUgWEtNU1JTQUtFWVBBSVJfSU5DTFVERQ0KKw0KKy8vIFhTRUMgSW5jbHVkZXMNCisNCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPg0KKw0KKy8qKg0KKyAqIEBpbmdyb3VwIHhrbXMNCisgKi8NCisNCisvKioNCisgKiBAYnJpZWYgSW50ZXJmYWNlIGRlZmluaXRpb24gZm9yIHRoZSBSU0FLZXlQYWlyDQorICoNCisgKiBUaGUgXDxSU0FLZXlQYWlyXD4gaXMgb25lIG9mIHRoZSBmZXcgWEtNUyBlbGVtZW50cyB0aGF0IGlzIG5vdA0KKyAqIGRpcmVjdGx5IHBhcnQgb2YgYW4gWEtNUyBNZXNzYWdlLiAgSXQgaXMgc2VudCBpbiBSZWdpc3RlclJlc3VsdA0KKyAqIGFuZCBSZWNvdmVyUmVzdWx0IG1lc3NhZ2VzIGFzIGEgQ2lwaGVyRGF0YS4NCisgKg0KKyAqIFRoaXMgZWxlbWVudCBhbGxvd3MgdGhlIHNlcnZpY2UgdG8gcHJvdmlkZSBiYWNrIHRvIHRoZSB1c2VyDQorICogYSBjb21wbGV0ZSBSU0Ega2V5IC0gaW5jbHVkaW5nIHRoZSBwcml2YXRlIGNvbXBvbmVudHMuICBUaGUgdmFyaW91cw0KKyAqIGNvbXBvbmVudHMgdGhhdCBtYWtlIHVwIGFuIFJTQSBrZXkgYXJlIGFsbCBwcm92aWRlZCBpbiBCYXNlNjQgZm9ybWF0DQorICogKENyeXB0b0JpbmFyeSB0eXBlKQ0KKyAqDQorICogVGhlIHNjaGVtYSBkZWZpbml0aW9uIGZvciBSU0FLZXlQYWlyIGlzIGFzIGZvbGxvd3MgOg0KKyAqDQorICogXHZlcmJhdGltDQorICAgPCEtLSBSU0FLZXlQYWlyIC0tPg0KKyAgIDxlbGVtZW50IG5hbWU9IlJTQUtleVBhaXIiIHR5cGU9InhrbXM6UlNBS2V5UGFpclR5cGUiLz4NCisgICA8Y29tcGxleFR5cGUgbmFtZT0iUlNBS2V5UGFpclR5cGUiPg0KKyAgICAgIDxzZXF1ZW5jZT4NCisgICAgICAgICA8ZWxlbWVudCByZWY9InhrbXM6TW9kdWx1cyIvPg0KKyAgICAgICAgIDxlbGVtZW50IHJlZj0ieGttczpFeHBvbmVudCIvPg0KKyAgICAgICAgIDxlbGVtZW50IHJlZj0ieGttczpQIi8+DQorICAgICAgICAgPGVsZW1lbnQgcmVmPSJ4a21zOlEiLz4NCisgICAgICAgICA8ZWxlbWVudCByZWY9InhrbXM6RFAiLz4NCisgICAgICAgICA8ZWxlbWVudCByZWY9InhrbXM6RFEiLz4NCisgICAgICAgICA8ZWxlbWVudCByZWY9InhrbXM6SW52ZXJzZVEiLz4NCisgICAgICAgICA8ZWxlbWVudCByZWY9InhrbXM6RCIvPg0KKyAgICAgIDwvc2VxdWVuY2U+DQorICAgPC9jb21wbGV4VHlwZT4NCisgICA8ZWxlbWVudCBuYW1lPSJNb2R1bHVzIiB0eXBlPSJkczpDcnlwdG9CaW5hcnkiLz4NCisgICA8ZWxlbWVudCBuYW1lPSJFeHBvbmVudCIgdHlwZT0iZHM6Q3J5cHRvQmluYXJ5Ii8+DQorICAgPGVsZW1lbnQgbmFtZT0iUCIgdHlwZT0iZHM6Q3J5cHRvQmluYXJ5Ii8+DQorICAgPGVsZW1lbnQgbmFtZT0iUSIgdHlwZT0iZHM6Q3J5cHRvQmluYXJ5Ii8+DQorICAgPGVsZW1lbnQgbmFtZT0iRFAiIHR5cGU9ImRzOkNyeXB0b0JpbmFyeSIvPg0KKyAgIDxlbGVtZW50IG5hbWU9IkRRIiB0eXBlPSJkczpDcnlwdG9CaW5hcnkiLz4NCisgICA8ZWxlbWVudCBuYW1lPSJJbnZlcnNlUSIgdHlwZT0iZHM6Q3J5cHRvQmluYXJ5Ii8+DQorICAgPGVsZW1lbnQgbmFtZT0iRCIgdHlwZT0iZHM6Q3J5cHRvQmluYXJ5Ii8+DQorICAgPCEtLSAvUlNBS2V5UGFpciAtLT4NCitcZW5kdmVyYmF0aW0NCisgKg0KKyAqIEBub3RlIFRoZXJlIGFyZSBubyAic2V0IiBtZXRob2RzIGZvciB0aGlzIGNsYXNzLiAgSXQgaXMgZGVzaWduZWQNCisgKiB0byBiZSBjcmVhdGVkICJhdG9taWNhbGx5IiB2aWEgdGhlIFhLTVNNZXNzYWdlRmFjdG9yeSBjbGFzcyBhbmQgbm90DQorICogYWx0ZXJlZC4NCisgKi8NCisNCisNCitjbGFzcyBYS01TUlNBS2V5UGFpciB7DQorDQorcHVibGljOg0KKw0KKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLw0KKwkvL0B7DQorDQorcHJvdGVjdGVkOg0KKw0KKwlYS01TUlNBS2V5UGFpcigpIHt9Ow0KKw0KK3B1YmxpYzoNCisNCisJdmlydHVhbCB+WEtNU1JTQUtleVBhaXIoKSB7fTsNCisNCisJLyoqIEBuYW1lIEdldHRlciBJbnRlcmZhY2UgTWV0aG9kcyAqLw0KKwkvL0B7DQorDQorCS8qKg0KKwkgKiBcYnJpZWYgR2V0IHRoZSBNb2R1bHVzIG9mIHRoZSBrZXkgcGFpcg0KKwkgKg0KKwkgKiBAcmV0dXJucyBUaGUgTW9kdWx1cyBpbiBiYXNlNjQgZW5jb2RpbmcNCisJICovDQorDQorCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRNb2R1bHVzKHZvaWQpIGNvbnN0ID0gMDsNCisNCisJLyoqDQorCSAqIFxicmllZiBHZXQgdGhlIEV4cG9uZW50IG9mIHRoZSBrZXkgcGFpcg0KKwkgKg0KKwkgKiBAcmV0dXJucyBUaGUgRXhwb25lbnQgaW4gYmFzZTY0IGVuY29kaW5nDQorCSAqLw0KKw0KKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0RXhwb25lbnQodm9pZCkgY29uc3QgPSAwOw0KKw0KKwkvKioNCisJICogXGJyaWVmIEdldCB0aGUgUCBvZiB0aGUga2V5IHBhaXINCisJICoNCisJICogQHJldHVybnMgVGhlIFAgaW4gYmFzZTY0IGVuY29kaW5nDQorCSAqLw0KKw0KKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0UCh2b2lkKSBjb25zdCA9IDA7DQorDQorCS8qKg0KKwkgKiBcYnJpZWYgR2V0IHRoZSBRIG9mIHRoZSBrZXkgcGFpcg0KKwkgKg0KKwkgKiBAcmV0dXJucyBUaGUgUSBpbiBiYXNlNjQgZW5jb2RpbmcNCisJICovDQorDQorCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRRKHZvaWQpIGNvbnN0ID0gMDsNCisNCisJLyoqDQorCSAqIFxicmllZiBHZXQgdGhlIERQIG9mIHRoZSBrZXkgcGFpcg0KKwkgKg0KKwkgKiBAcmV0dXJucyBUaGUgRFAgaW4gYmFzZTY0IGVuY29kaW5nDQorCSAqLw0KKw0KKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0RFAodm9pZCkgY29uc3QgPSAwOw0KKw0KKwkvKioNCisJICogXGJyaWVmIEdldCB0aGUgRFEgb2YgdGhlIGtleSBwYWlyDQorCSAqDQorCSAqIEByZXR1cm5zIFRoZSBEUSBpbiBiYXNlNjQgZW5jb2RpbmcNCisJICovDQorDQorCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXREUSh2b2lkKSBjb25zdCA9IDA7DQorDQorCS8qKg0KKwkgKiBcYnJpZWYgR2V0IHRoZSBJbnZlcnNlUSBvZiB0aGUga2V5IHBhaXINCisJICoNCisJICogQHJldHVybnMgVGhlIEludmVyc2VRIGluIGJhc2U2NCBlbmNvZGluZw0KKwkgKi8NCisNCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldEludmVyc2VRKHZvaWQpIGNvbnN0ID0gMDsNCisNCisJLyoqDQorCSAqIFxicmllZiBHZXQgdGhlIEQgb2YgdGhlIGtleSBwYWlyDQorCSAqDQorCSAqIEByZXR1cm5zIFRoZSBEIGluIGJhc2U2NCBlbmNvZGluZw0KKwkgKi8NCisNCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldEQodm9pZCkgY29uc3QgPSAwOw0KKw0KKw0KKwkvL0B9DQorDQorcHJpdmF0ZToNCisNCisJLy8gVW5pbXBsZW1lbnRlZA0KKwlYS01TUlNBS2V5UGFpcihjb25zdCBYS01TUlNBS2V5UGFpciAmKTsNCisJWEtNU1JTQUtleVBhaXIgJiBvcGVyYXRvciA9IChjb25zdCBYS01TUlNBS2V5UGFpciAmKTsNCisNCit9Ow0KKw0KKyNlbmRpZiAvKiBYS01TUlNBS0VZUEFJUl9JTkNMVURFICovDQpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9YS01TUmVjb3ZlcktleUJpbmRpbmcuaHBwIGIvYy9zcmMveGttcy9YS01TUmVjb3ZlcktleUJpbmRpbmcuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhOTAwYmYKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL1hLTVNSZWNvdmVyS2V5QmluZGluZy5ocHAKQEAgLTAsMCArMSw5NSBAQAorLyoNCisgKiBDb3B5cmlnaHQgMjAwNiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoNCisgKiBYU0VDDQorICoNCisgKiBYS01TUmVjb3ZlcktleUJpbmRpbmcgOj0gSW50ZXJmYWNlIGZvciBLZXlCaW5kaW5nIGVsZW1lbnRzDQorICoNCisgKiAkSWQkDQorICoNCisgKi8NCisNCisjaWZuZGVmIFhLTVNSRUNPVkVSS0VZQklORElOR19JTkNMVURFDQorI2RlZmluZSBYS01TUkVDT1ZFUktFWUJJTkRJTkdfSU5DTFVERQ0KKw0KKy8vIFhTRUMgSW5jbHVkZXMNCisNCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGUuaHBwPg0KKw0KKy8qKg0KKyAqIEBpbmdyb3VwIHhrbXMNCisgKi8NCisNCisvKioNCisgKiBAYnJpZWYgSW50ZXJmYWNlIGRlZmluaXRpb24gZm9yIHRoZSBSZWNvdmVyS2V5QmluZGluZyBlbGVtZW50cw0KKyAqDQorICogVGhlIFw8UmVjb3ZlcktleUJpbmRpbmdcPiBFbGVtZW50IGlzIHVzZWQgaW4gYSByZXF1ZXN0IHRvIFJlY292ZXINCisgKiBhIHBhcnRpY3VsYXIga2V5IGZyb20gYW4gWEtSUyBzZXJ2aWNlDQorICoNCisgKiBUaGUgc2NoZW1hIGRlZmluaXRpb24gZm9yIFJlY292ZXJLZXlCaW5kaW5nIGlzIGFzIGZvbGxvd3MgOg0KKyAqDQorICogXHZlcmJhdGltDQorICAgPCEtLSBSZWNvdmVyS2V5QmluZGluZyAtLT4NCisJPGVsZW1lbnQgbmFtZT0iUmVjb3ZlcktleUJpbmRpbmciIHR5cGU9InhrbXM6S2V5QmluZGluZ1R5cGUiLz4NCisgICA8IS0tIC9SZWNvdmVyS2V5QmluZGluZyAtLT4NCisgXGVuZHZlcmJhdGltDQorICovDQorDQorY2xhc3MgWEtNU1N0YXR1czsNCisNCitjbGFzcyBYS01TUmVjb3ZlcktleUJpbmRpbmcgOiBwdWJsaWMgWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGUgew0KKw0KKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLw0KKwkvL0B7DQorDQorcHJvdGVjdGVkOg0KKw0KKwlYS01TUmVjb3ZlcktleUJpbmRpbmcoKSB7fTsNCisNCitwdWJsaWM6DQorDQorCXZpcnR1YWwgflhLTVNSZWNvdmVyS2V5QmluZGluZygpIHt9Ow0KKw0KKwkvL0B9DQorDQorCS8qKiBAbmFtZSBTdGF0dXMgaGFuZGxpbmcgKi8NCisJLy9Aew0KKw0KKwkvKioNCisJICogXGJyaWVmIE9idGFpbiB0aGUgc3RhdHVzIGVsZW1lbnQgZm9yIHRoaXMgS2V5QmluZGluZw0KKwkgKg0KKwkgKiBUaGUgXDxTdGF0dXNcPiBlbGVtZW50IGlzIHVzZWQgdG8gZGVzY3JpYmUgdG8gdGhlIGNhbGxlciB0aGUNCisJICogdmFsaWRpdHkgb2YgdGhleSBrZXkgYmVpbmcgZGVzY3JpYmVkLiAgVGhpcyBjYWxsIGlzIHVzZWQgdG8NCisJICogb2J0YWluIHRoZSBzdGF0dXMgZWxlbWVudA0KKwkgKg0KKwkgKiBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgWEtNU1N0YXR1cyBlbGVtZW50DQorCSAqLw0KKw0KKwl2aXJ0dWFsIFhLTVNTdGF0dXMgKiBnZXRTdGF0dXModm9pZCkgY29uc3QgPSAwOw0KKw0KKwkvL0B9DQorDQorcHJpdmF0ZToNCisNCisJLy8gVW5pbXBsZW1lbnRlZA0KKwlYS01TUmVjb3ZlcktleUJpbmRpbmcoY29uc3QgWEtNU1JlY292ZXJLZXlCaW5kaW5nICYpOw0KKwlYS01TUmVjb3ZlcktleUJpbmRpbmcgJiBvcGVyYXRvciA9IChjb25zdCBYS01TUmVjb3ZlcktleUJpbmRpbmcgJik7DQorDQorfTsNCisNCisjZW5kaWYgLyogWEtNU1JFQ09WRVJLRVlCSU5ESU5HX0lOQ0xVREUgKi8NCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL1hLTVNSZWNvdmVyUmVxdWVzdC5ocHAgYi9jL3NyYy94a21zL1hLTVNSZWNvdmVyUmVxdWVzdC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThmYzA1MwotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvWEtNU1JlY292ZXJSZXF1ZXN0LmhwcApAQCAtMCwwICsxLDE1MiBAQAorLyoNCisgKiBDb3B5cmlnaHQgMjAwNiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoNCisgKiBYU0VDDQorICoNCisgKiBYS01TUmVjb3ZlclJlcXVlc3QgOj0gSW50ZXJmYWNlIGZvciBSZWdpc3RlclJlcXVlc3QgTWVzc2FnZXMNCisgKg0KKyAqICRJZCQNCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgWEtNU1JFQ09WRVJSRVFVRVNUX0lOQ0xVREUgDQorI2RlZmluZSBYS01TUkVDT1ZFUlJFUVVFU1RfSU5DTFVERSANCisNCisvLyBYU0VDIEluY2x1ZGVzDQorDQorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4NCisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlLmhwcD4NCisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNTdGF0dXMuaHBwPg0KKw0KK2NsYXNzIERTSUdTaWduYXR1cmU7DQorY2xhc3MgWEtNU0F1dGhlbnRpY2F0aW9uOw0KK2NsYXNzIFhLTVNSZWNvdmVyS2V5QmluZGluZzsNCisNCisvKioNCisgKiBAaW5ncm91cCB4a21zDQorICovDQorDQorLyoqDQorICogQGJyaWVmIEludGVyZmFjZSBkZWZpbml0aW9uIGZvciB0aGUgUmVjb3ZlclJlcXVlc3QgZWxlbWVudHMNCisgKg0KKyAqIFRoZSBcPFJlY292ZXJSZXF1ZXN0XD4gaXMgb25lIG9mIHRoZSBtZXNzYWdlIHR5cGVzIG9mDQorICogdGhlIFgtS1JNUyBzZXJ2aWNlLiAgSXQgaXMgdXNlZCB3aGVuIGEgY2xpZW50IHdpc2hlcyB0byByZWNvdmVyDQorICogYSBwcml2YXRlIGtleSBrbm93biB0byB0aGUgc2VydmljZS4NCisgKg0KKyAqIFRoZSBzY2hlbWEgZGVmaW5pdGlvbiBmb3IgUmVjb3ZlclJlcXVlc3QgaXMgYXMgZm9sbG93cyA6DQorICoNCisgKiBcdmVyYmF0aW0NCisgICAgPCEtLSBSZWNvdmVyUmVxdWVzdCAtLT4NCisgICA8ZWxlbWVudCBuYW1lPSJSZWNvdmVyUmVxdWVzdCIgdHlwZT0ieGttczpSZWNvdmVyUmVxdWVzdFR5cGUiLz4NCisgICA8Y29tcGxleFR5cGUgbmFtZT0iUmVjb3ZlclJlcXVlc3RUeXBlIj4NCisgICAgICA8Y29tcGxleENvbnRlbnQ+DQorICAgICAgICAgPGV4dGVuc2lvbiBiYXNlPSJ4a21zOlJlcXVlc3RBYnN0cmFjdFR5cGUiPg0KKyAgICAgICAgICAgIDxzZXF1ZW5jZT4NCisgICAgICAgICAgICAgICA8ZWxlbWVudCByZWY9InhrbXM6UmVjb3ZlcktleUJpbmRpbmciLz4NCisgICAgICAgICAgICAgICA8ZWxlbWVudCByZWY9InhrbXM6QXV0aGVudGljYXRpb24iLz4NCisgICAgICAgICAgICA8L3NlcXVlbmNlPg0KKyAgICAgICAgIDwvZXh0ZW5zaW9uPg0KKyAgICAgIDwvY29tcGxleENvbnRlbnQ+DQorICAgPC9jb21wbGV4VHlwZT4NCisgICA8ZWxlbWVudCBuYW1lPSJSZWNvdmVyS2V5QmluZGluZyIgdHlwZT0ieGttczpLZXlCaW5kaW5nVHlwZSIvPg0KKyAgIDwhLS0gL1JlY292ZXJSZXF1ZXN0IC0tPg0KK1xlbmR2ZXJiYXRpbQ0KKyAqLw0KKw0KK2NsYXNzIFhLTVNSZWNvdmVyUmVxdWVzdCA6IHB1YmxpYyBYS01TUmVxdWVzdEFic3RyYWN0VHlwZSB7DQorDQorCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovDQorCS8vQHsNCisNCitwcm90ZWN0ZWQ6DQorDQorCVhLTVNSZWNvdmVyUmVxdWVzdCgpIHt9Ow0KKw0KK3B1YmxpYzoNCisNCisJdmlydHVhbCB+WEtNU1JlY292ZXJSZXF1ZXN0KCkge307DQorDQorCS8qKiBAbmFtZSBHZXR0ZXIgSW50ZXJmYWNlIE1ldGhvZHMgKi8NCisJLy9Aew0KKw0KKwkvKioNCisJICogXGJyaWVmIFJldHVybiB0aGUgZWxlbWVudCBhdCB0aGUgYmFzZSBvZiB0aGUgbWVzc2FnZQ0KKwkgKi8NCisNCisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGdldEVsZW1lbnQodm9pZCkgY29uc3QgPSAwOw0KKw0KKwkvKioNCisJICogXGJyaWVmIE9idGFpbiB0aGUgUmVjb3ZlcktleUJpbmRpbmcgZWxlbWVudA0KKwkgKg0KKwkgKiBUaGUgUmVjb3ZlcktleUJpbmRpbmcgZWxlbWVudCBpcyB0aGUgY29yZSBvZiB0aGUgUmVjb3ZlclJlcXVlc3QgbWVzc2FnZSwgYW5kDQorCSAqIGRlZmluZXMgdGhlIGtleSBpbmZvcm1hdGlvbiB0aGF0IGEgcmVjb3ZlciBpcyByZXF1aXJlZCBmb3IuDQorCSAqDQorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgWEtNU1Byb3RvdHlwZUtleUJpbmRpbmcgZWxlbWVudA0KKwkgKi8NCisNCisJdmlydHVhbCBYS01TUmVjb3ZlcktleUJpbmRpbmcgKiBnZXRSZWNvdmVyS2V5QmluZGluZyh2b2lkKSBjb25zdCA9IDA7DQorDQorCS8qKg0KKwkgKiBcYnJpZWYgR2V0IHRoZSBBdXRoZW50aWNhdGlvbiBlbGVtZW50DQorCSAqDQorCSAqIFRoZSBBdXRoZW50aWNhdGlvbiBlbGVtZW50IG9mIHRoZSBSZWNvdmVyUmVxdWVzdCBpcyB1c2VkIGJ5IHRoZSBjbGllbnQgdG8NCisJICogYXV0aGVudGljYXRlIHRoZSByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIuDQorCSAqDQorCSAqIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBBdXRoZW50aWNhdGlvbiBzdHJ1Y3R1cmUgDQorCSAqLw0KKw0KKwl2aXJ0dWFsIFhLTVNBdXRoZW50aWNhdGlvbiAqIGdldEF1dGhlbnRpY2F0aW9uICh2b2lkKSBjb25zdCA9IDA7DQorDQorCS8vQH0NCisNCisJLyoqIEBuYW1lIFNldHRlciBJbnRlcmZhY2UgTWV0aG9kcyAqLw0KKwkvL0B7DQorDQorCS8qKiBcYnJpZWYgQWRkIGEgUmVjb3ZlcktleUJpbmRpbmcgZWxlbWVudA0KKwkgKg0KKwkgKiBTZXQgYSBSZWNvdmVyS2V5QmluZGluZyBlbGVtZW50IGluIHRoZSBSZXF1ZXN0IG1lc3NhZ2UuICBUaGUgcmV0dXJuZWQNCisJICogb2JqZWN0IGNhbiBiZSBtYW5pcHVsYXRlZCB0byBhZGQgS2V5SW5mbyBlbGVtZW50cyB0byB0aGUgUmVxdWVzdC4NCisJICoNCisJICogQHBhcmFtIHN0YXR1cyBUaGUgc3RhdHVzIHZhbHVlIHRvIGFkZCBpbnRvIHRoZSBSZWNvdmVyS2V5QmluZGluZyBzdHJ1Y3R1cmUNCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBuZXdseSBjcmVhdGVkIFJlY292ZXJLZXlCaW5kaW5nIG9iamVjdCwgb3INCisJICogdGhlIHBvaW50ZXIgdG8gZXh0YW50IG9iamVjdCBpZiBvbmUgYWxyZWFkeSBleGlzdGVkLg0KKwkgKi8NCisNCisJdmlydHVhbCBYS01TUmVjb3ZlcktleUJpbmRpbmcgKiBhZGRSZWNvdmVyS2V5QmluZGluZyhYS01TU3RhdHVzOjpTdGF0dXNWYWx1ZSBzdGF0dXMpID0gMDsNCisNCisJLyoqIFxicmllZiBBZGQgYW4gQXV0aGVudGljYXRpb24gZWxlbWVudA0KKwkgKg0KKwkgKiBTZXQgYSBBdXRoZW50aWNhdGlvbiBlbGVtZW50IGluIHRoZSBSZXF1ZXN0IG1lc3NhZ2UuICBUaGUgcmV0dXJuZWQNCisJICogb2JqZWN0IGNhbiBiZSBtYW5pcHVsYXRlZCB0byBhZGQgQXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24gdG8gdGhlIHJlcXVlc3QuDQorCSAqDQorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgbmV3bHkgY3JlYXRlZCBBdXRoZW50aWNhdG9uIG9iamVjdCwgb3INCisJICogdGhlIHBvaW50ZXIgdG8gZXh0YW50IG9iamVjdCBpZiBvbmUgYWxyZWFkeSBleGlzdGVkLg0KKwkgKi8NCisNCisJdmlydHVhbCBYS01TQXV0aGVudGljYXRpb24gKiBhZGRBdXRoZW50aWNhdGlvbih2b2lkKSA9IDA7DQorDQorCS8vQH0NCisNCitwcml2YXRlOg0KKw0KKwkvLyBVbmltcGxlbWVudGVkDQorCVhLTVNSZWNvdmVyUmVxdWVzdChjb25zdCBYS01TUmVjb3ZlclJlcXVlc3QgJik7DQorCVhLTVNSZWNvdmVyUmVxdWVzdCAmIG9wZXJhdG9yID0gKGNvbnN0IFhLTVNSZWNvdmVyUmVxdWVzdCAmKTsNCisNCit9Ow0KKw0KKyNlbmRpZiAvKiBYS01TUkVDT1ZFUlJFUVVFU1RfSU5DTFVERSAqLw0KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvWEtNU1JlY292ZXJSZXN1bHQuaHBwIGIvYy9zcmMveGttcy9YS01TUmVjb3ZlclJlc3VsdC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I2YmNkOQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvWEtNU1JlY292ZXJSZXN1bHQuaHBwCkBAIC0wLDAgKzEsMjA0IEBACisvKg0KKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qDQorICogWFNFQw0KKyAqDQorICogWEtNU1JlY292ZXJSZXN1bHQgOj0gSW50ZXJmYWNlIGZvciBSZWNvdmVyUmVzdWx0IE1lc3NhZ2VzDQorICoNCisgKiAkSWQkDQorICoNCisgKi8NCisNCisjaWZuZGVmIFhLTVNSRUNPVkVSUkVTVUxUX0lOQ0xVREUNCisjZGVmaW5lIFhLTVNSRUNPVkVSUkVTVUxUX0lOQ0xVREUNCisNCisvLyBYU0VDIEluY2x1ZGVzDQorDQorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4NCisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNSZXN1bHRUeXBlLmhwcD4NCisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNTdGF0dXMuaHBwPg0KKw0KK2NsYXNzIFhLTVNLZXlCaW5kaW5nOw0KK2NsYXNzIFhLTVNVbnZlcmlmaWVkS2V5QmluZGluZzsNCitjbGFzcyBYS01TUlNBS2V5UGFpcjsNCitjbGFzcyBYRU5DQ2lwaGVyRGF0YTsNCisNCisvKioNCisgKiBAaW5ncm91cCB4a21zDQorICovDQorDQorLyoqDQorICogQGJyaWVmIEludGVyZmFjZSBkZWZpbml0aW9uIGZvciB0aGUgUmVjb3ZlclJlc3VsdCBlbGVtZW50cw0KKyAqDQorICogVGhlIFw8UmVjb3ZlclJlc3VsdFw+IGlzIHVzZWQgYnkgdGhlIFgtS1JTUyBzZXJ2aWNlIHRvIHJlc3BvbnNlIHRvDQorICogYSB1c2VyIHJlcXVlc3QgdG8gUmVjb3ZlciBhIG5ldyBrZXkgd2l0aCB0aGUgc2VydmljZS4NCisgKg0KKyAqIFRoZSBzY2hlbWEgZGVmaW5pdGlvbiBmb3IgUmVjb3ZlclJlc3VsdCBpcyBhcyBmb2xsb3dzIDoNCisgKg0KKyAqIFx2ZXJiYXRpbQ0KKyAgIDwhLS0gUmVjb3ZlclJlc3VsdCAtLT4NCisgICA8ZWxlbWVudCBuYW1lPSJSZWNvdmVyUmVzdWx0IiB0eXBlPSJ4a21zOlJlY292ZXJSZXN1bHRUeXBlIi8+DQorICAgPGNvbXBsZXhUeXBlIG5hbWU9IlJlY292ZXJSZXN1bHRUeXBlIj4NCisgICAgICA8Y29tcGxleENvbnRlbnQ+DQorICAgICAgICAgPGV4dGVuc2lvbiBiYXNlPSJ4a21zOlJlc3VsdFR5cGUiPg0KKyAgICAgICAgICAgIDxzZXF1ZW5jZT4NCisgICAgICAgICAgICAgICA8ZWxlbWVudCByZWY9InhrbXM6S2V5QmluZGluZyIgbWluT2NjdXJzPSIwIiANCisgICAgICAgICAgICAgICAgICAgICBtYXhPY2N1cnM9InVuYm91bmRlZCIvPg0KKyAgICAgICAgICAgICAgIDxlbGVtZW50IHJlZj0ieGttczpQcml2YXRlS2V5IiBtaW5PY2N1cnM9IjAiLz4NCisgICAgICAgICAgICA8L3NlcXVlbmNlPg0KKyAgICAgICAgIDwvZXh0ZW5zaW9uPg0KKyAgICAgIDwvY29tcGxleENvbnRlbnQ+DQorICAgPC9jb21wbGV4VHlwZT4NCisgICA8IS0tIC9SZWNvdmVyUmVzdWx0IC0tPg0KK1xlbmR2ZXJiYXRpbQ0KKyAqLw0KKw0KK2NsYXNzIFhLTVNSZWNvdmVyUmVzdWx0IDogcHVibGljIFhLTVNSZXN1bHRUeXBlIHsNCisNCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8NCisJLy9Aew0KKw0KK3Byb3RlY3RlZDoNCisNCisJWEtNU1JlY292ZXJSZXN1bHQoKSB7fTsNCisNCitwdWJsaWM6DQorDQorCXZpcnR1YWwgflhLTVNSZWNvdmVyUmVzdWx0KCkge307DQorDQorCS8qKiBAbmFtZSBHZXR0ZXIgSW50ZXJmYWNlIE1ldGhvZHMgKi8NCisJLy9Aew0KKw0KKwkvKioNCisJICogXGJyaWVmIFJldHVybiB0aGUgZWxlbWVudCBhdCB0aGUgYmFzZSBvZiB0aGUgbWVzc2FnZQ0KKwkgKi8NCisNCisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGdldEVsZW1lbnQodm9pZCkgY29uc3QgPSAwOw0KKw0KKwkvL0B9DQorDQorCS8qKiBAbmFtZSBLZXlCaW5kaW5nIGhhbmRsaW5nICAqLw0KKwkvL0B7DQorDQorCS8qKg0KKwkgKiBcYnJpZWYgRmluZCBudW1iZXIgb2YgS2V5QmluZGluZyBlbGVtZW50cw0KKwkgKg0KKwkgKiBAcmV0dXJucyB0aGUgbnVtYmVyIG9mIEtleUJpbmRpbmcgaXRlbXMgd2l0aGluIHRoZSBSZWNvdmVyUmVzdWx0DQorCSAqLw0KKw0KKwl2aXJ0dWFsIGludCBnZXRLZXlCaW5kaW5nU2l6ZSh2b2lkKSBjb25zdCA9IDA7DQorDQorCS8qDQorCSAqIFxicmllZiBPYnRhaW4gYW4gS2V5QmluZGluZyBpdGVtDQorCSAqDQorCSAqIEBwYXJhbSBpdGVtIEluZGV4IG9mIHRoZSBpdGVtIHRvIHJldHVybiAoMCA9IGZpcnN0IGVsZW1lbnQpDQorCSAqIEByZXR1cm5zIHRoZSBLZXlCaW5kaW5nIHJlZmVyZW5jZWQgYnkgIml0ZW0iDQorCSAqLw0KKw0KKwl2aXJ0dWFsIFhLTVNLZXlCaW5kaW5nICogZ2V0S2V5QmluZGluZ0l0ZW0oaW50IGl0ZW0pIGNvbnN0ID0gMDsNCisNCisJLyoNCisJICogXGJyaWVmIEFwcGVuZCBhIG5ldyBLZXlCaW5kaW5nIGVsZW1lbnQNCisJICoNCisJICogQWxsb3dzIGNhbGxlcnMgdG8gYXBwZW5kIGEgbmV3IEtleUJpbmRpbmcgaXRlbS4NCisJICogVGhlIGl0ZW0gaXMgaW5pdGlhbGx5IGVtcHR5IG9mIEtleUluZm8gZWxlbWVudHMgLSB0aGVzZSBtdXN0IGJlIGFkZGVkDQorCSAqIGJ5IHRoZSBjYWxsZXIuDQorCSAqDQorCSAqIEBwYXJhbSBzdGF0dXMgVGhlIHN0YXR1cyAoVmFsaWQsIEludmFsaWQgb3IgSW5kZXRlcm1pbmF0ZSkgb2YgdGhpcw0KKwkgKiBrZXkNCisJICogQHJldHVybnMgdGhlIG5ld2x5IGNyZWF0ZWQgS2V5QmluZGluZyBvYmplY3QgKGFscmVhZHkgaW5zZXJ0ZWQNCisJICogaW4gdGhlIFJlY292ZXJSZXN1bHQNCisJICovDQorDQorCXZpcnR1YWwgWEtNU0tleUJpbmRpbmcgKiBhcHBlbmRLZXlCaW5kaW5nSXRlbShYS01TU3RhdHVzOjpTdGF0dXNWYWx1ZSBzdGF0dXMpID0gMDsNCisNCisJLy9AfQ0KKw0KKwkvKiogQG5hbWUgUHJpdmF0ZUtleSBoYW5kbGluZyAgKi8NCisJLy9Aew0KKw0KKwkvKioNCisJICogXGJyaWVmIFJldHVybiB0aGUgUlNBS2V5UGFpcg0KKwkgKg0KKwkgKiBUaGlzIGNhbGwgcmVxdWlyZXMgdGhlIHBhc3NwaHJhc2UgdXNlZCB0byBlbmNyeXB0IHRoZSBwcml2YXRlIGtleS4NCisJICogVGhlIGltcGxlbWVudGF0aW9uIGRlY3J5cHRzIHRoZSBQcml2YXRlS2V5IGVsZW1lbnQgaW4gdGhlDQorCSAqIFJlY292ZXJSZXN1bHQgYW5kIHJldHVybnMgdGhlIHJlc3VsdGluZyBSU0FLZXlQYWlyLg0KKwkgKg0KKwkgKiBAbm90ZSBUaGUgZGVjcnlwdGlvbiBpcyBwZXJmb3JtZWQgKmluc2lkZSogdGhlIFJlY292ZXJSZXN1bHQsIHNvDQorCSAqIHRoaXMgYWN0dWFsbHkgbW9kaWZpZWQgdGhlIGNvbnRlbnRzIG9mIHRoZSBYTUwuICBJdCBzaG91bGQgbmV2ZXINCisJICogYmUgY2FsbGVkIHR3aWNlIQ0KKwkgKg0KKwkgKiBAcGFyYW0gcGFzc1BocmFzZSBUaGUgbG9jYWwgY29kZSBwYWdlIHZlcnNpb24gb2YgdGhlIHBhc3MgcGhyYXNlDQorCSAqIEByZXR1cm5zIHRoZSBudW1iZXIgb2YgS2V5QmluZGluZyBpdGVtcyB3aXRoaW4gdGhlIFJlY292ZXJSZXN1bHQNCisJICovDQorDQorCXZpcnR1YWwgWEtNU1JTQUtleVBhaXIgKiBnZXRSU0FLZXlQYWlyKGNvbnN0IGNoYXIgKiBwYXNzUGhyYXNlKSA9IDA7DQorDQorCS8qKg0KKwkgKiBcYnJpZWYgQWRkIHRoZSBSU0FLZXlQYWlyIGluIGFuIGVuY3J5cHRlZCBQcml2YXRlS2V5DQorCSAqDQorCSAqIFRoaXMgY2FsbCByZXF1aXJlcyB0aGUgcGFzc3BocmFzZSB0byBlbmNyeXB0IHRoZSBwcml2YXRlIGtleS4NCisJICogVGhlIGltcGxlbWVudGF0aW9uIGVuY3J5cHRzIHRoZSBSU0FLZXlQYWlyIGFuZCBhZGRzIHRoZSByZXN1bHQNCisJICogdG8gdGhlIHJlc3VsdGluZyBSU0FLZXkgUGFpci4gIEl0IHJldHVybnMgdGhlIENpcGhlckRhdGEgZWxlbWVudA0KKwkgKiB0byB0aGUgY2FsbGVyIChub3QgYSBzdHJ1Y3R1cmUgZm9yIHRoZSBQcml2YXRlS2V5KQ0KKwkgKg0KKwkgKiBAbm90ZSBUaGUgZW5jcnlwdGlvbiBpcyBwZXJmb3JtZWQgKmluc2lkZSogdGhlIFJlY292ZXJSZXN1bHQsIHNvDQorCSAqIHRoaXMgYWN0dWFsbHkgbW9kaWZpZWQgdGhlIGNvbnRlbnRzIG9mIHRoZSBYTUwuICBJdCBzaG91bGQgbmV2ZXINCisJICogYmUgY2FsbGVkIHR3aWNlIQ0KKwkgKg0KKwkgKiBAcGFyYW0gcGFzc1BocmFzZSBUaGUgbG9jYWwgY29kZSBwYWdlIHZlcnNpb24gb2YgdGhlIHBhc3MgcGhyYXNlDQorCSAqIEBwYXJhbSBNb2R1bHVzIEJhc2U2NCBlbmNvZGVkIHN0cmluZyB3aXRoIHRoZSBtb2R1bHVzDQorCSAqIEBwYXJhbSBFeHBvbmVudCBCYXNlNjQgZW5jb2RlZCBzdHJpbmcgd2l0aCB0aGUgZXhwb25lbnQNCisJICogQHBhcmFtIFAgQmFzZTY0IGVuY29kZWQgc3RyaW5nIHdpdGggcA0KKwkgKiBAcGFyYW0gUSBCYXNlNjQgZW5jb2RlZCBzdHJpbmcgd2l0aCBxDQorCSAqIEBwYXJhbSBEUCBCYXNlNjQgZW5jb2RlZCBzdHJpbmcgd2l0aCBkcA0KKwkgKiBAcGFyYW0gRFEgQmFzZTY0IGVuY29kZWQgc3RyaW5nIHdpdGggZHENCisJICogQHBhcmFtIEludmVyc2VRIEJhc2U2NCBlbmNvZGVkIHN0cmluZyB3aXRoIGludmVyc2VxDQorCSAqIEBwYXJhbSBEIEJhc2U2NCBlbmNvZGVkIHN0cmluZyB3aXRoIGQNCisJICogQHBhcmFtIGVtIFRoZSBlbmNyeXB0aW9uTWV0aG9kIHRvIHVzZSBmb3IgdGhpcyBlbmNyeXB0aW9uLiAgVXNlDQorCSAqIEVOQ1JZUFRfTk9ORSBpZiBhIHVzZXIgZGVmaW5lZCB0eXBlIGlzIHJlcXVpcmVkLg0KKwkgKiBAcGFyYW0gYWxnb3JpdGhtVVJJIElmIEVOQ1JZUFRfTk9ORSBpcyBwYXNzZWQgaW4sIHRoaXMgd2lsbCBiZQ0KKwkgKiB1c2VkIHRvIHNldCB0aGUgYWxnb3JpdGhtIFVSSS4gIElmIHRoaXMgaXMgYWxzbyBOVUxMIC0gbm8NCisJICogRW5jcnlwdGlvbk1ldGhvZCB3aWxsIGJlIHNldC4gIDxiPk5VTEwgVmFsdWUgVW5zdXBwb3J0ZWQgaWYgZW0gbm90DQorCSAqIHNldCEgIEl0J3MgdXNlIGNvdWxkIGNhdXNlIHByb2JsZW1zITwvYj4NCisJICogQHJldHVybnMgVGhlIGVuY3J5cHRlZCByZXN1bHQgb2YgYWRkaW5nIHRoZSBpbmZvDQorCSAqLw0KKw0KKwl2aXJ0dWFsIFhFTkNFbmNyeXB0ZWREYXRhICogc2V0UlNBS2V5UGFpcihjb25zdCBjaGFyICogcGFzc1BocmFzZSwNCisJCVhNTENoICogTW9kdWx1cywNCisJCVhNTENoICogRXhwb25lbnQsDQorCQlYTUxDaCAqIFAsDQorCQlYTUxDaCAqIFEsDQorCQlYTUxDaCAqIERQLA0KKwkJWE1MQ2ggKiBEUSwNCisJCVhNTENoICogSW52ZXJzZVEsDQorCQlYTUxDaCAqIEQsDQorCQllbmNyeXB0aW9uTWV0aG9kIGVtLA0KKwkJY29uc3QgWE1MQ2ggKiBhbGdvcml0aG1VUkkgPSBOVUxMKSA9IDA7DQorDQorCS8vQH0NCisNCisNCitwcml2YXRlOg0KKw0KKwkvLyBVbmltcGxlbWVudGVkDQorCVhLTVNSZWNvdmVyUmVzdWx0KGNvbnN0IFhLTVNSZWNvdmVyUmVzdWx0ICYpOw0KKwlYS01TUmVjb3ZlclJlc3VsdCAmIG9wZXJhdG9yID0gKGNvbnN0IFhLTVNSZWNvdmVyUmVzdWx0ICYpOw0KKw0KK307DQorDQorI2VuZGlmIC8qIFhLTVNSRUNPVkVSUkVTVUxUX0lOQ0xVREUgKi8NCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL1hLTVNSZWdpc3RlclJlcXVlc3QuaHBwIGIvYy9zcmMveGttcy9YS01TUmVnaXN0ZXJSZXF1ZXN0LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNGI1YzI1Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9YS01TUmVnaXN0ZXJSZXF1ZXN0LmhwcApAQCAtMCwwICsxLDE4MiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU1JlZ2lzdGVyUmVxdWVzdCA6PSBJbnRlcmZhY2UgZm9yIFJlZ2lzdGVyUmVxdWVzdCBNZXNzYWdlcworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYS01TUkVHSVNURVJSRVFVRVNUX0lOQ0xVREUKKyNkZWZpbmUgWEtNU1JFR0lTVEVSUkVRVUVTVF9JTkNMVURFCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGUuaHBwPgorCitjbGFzcyBEU0lHU2lnbmF0dXJlOworY2xhc3MgWEtNU0F1dGhlbnRpY2F0aW9uOworY2xhc3MgWEtNU1Byb3RvdHlwZUtleUJpbmRpbmc7CisKKy8qKgorICogQGluZ3JvdXAgeGttcworICovCisKKy8qKgorICogQGJyaWVmIEludGVyZmFjZSBkZWZpbml0aW9uIGZvciB0aGUgUmVnaXN0ZXJSZXF1ZXN0IGVsZW1lbnRzCisgKgorICogVGhlIFw8UmVnaXN0ZXJSZXF1ZXN0XD4gaXMgb25lIG9mIHRoZSBmdW5kYW1lbnRhbCBtZXNzYWdlIHR5cGVzIG9mCisgKiB0aGUgWC1LUk1TIHNlcnZpY2UuICBJdCBpcyB1c2VkIGJ5IGEgY2xpZW50IHdpc2hpbmcgdG8gcmVnaXN0ZXIgYQorICoga2V5IHdpdGggYSBzZXJ2aWNlLgorICoKKyAqIFRoZSBzY2hlbWEgZGVmaW5pdGlvbiBmb3IgUmVnaXN0ZXJSZXF1ZXN0IGlzIGFzIGZvbGxvd3MgOgorICoKKyAqIFx2ZXJiYXRpbQorICAgPCEtLSBSZWdpc3RlclJlcXVlc3QgLS0+CisgICA8ZWxlbWVudCBuYW1lPSJSZWdpc3RlclJlcXVlc3QiIHR5cGU9InhrbXM6UmVnaXN0ZXJSZXF1ZXN0VHlwZSIvPgorICAgPGNvbXBsZXhUeXBlIG5hbWU9IlJlZ2lzdGVyUmVxdWVzdFR5cGUiPgorICAgICAgPGNvbXBsZXhDb250ZW50PgorICAgICAgICAgPGV4dGVuc2lvbiBiYXNlPSJ4a21zOlJlcXVlc3RBYnN0cmFjdFR5cGUiPgorICAgICAgICAgICAgPHNlcXVlbmNlPgorICAgICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJ4a21zOlByb3RvdHlwZUtleUJpbmRpbmciLz4KKyAgICAgICAgICAgICAgIDxlbGVtZW50IHJlZj0ieGttczpBdXRoZW50aWNhdGlvbiIvPgorICAgICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJ4a21zOlByb29mT2ZQb3NzZXNzaW9uIiBtaW5PY2N1cnM9IjAiLz4KKyAgICAgICAgICAgIDwvc2VxdWVuY2U+CisgICAgICAgICA8L2V4dGVuc2lvbj4KKyAgICAgIDwvY29tcGxleENvbnRlbnQ+CisgICA8L2NvbXBsZXhUeXBlPgorICAgPCEtLSAvUmVnaXN0ZXJSZXF1ZXN0IC0tPgorXGVuZHZlcmJhdGltCisgKi8KKworY2xhc3MgWEtNU1JlZ2lzdGVyUmVxdWVzdCA6IHB1YmxpYyBYS01TUmVxdWVzdEFic3RyYWN0VHlwZSB7CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworcHJvdGVjdGVkOgorCisJWEtNU1JlZ2lzdGVyUmVxdWVzdCgpIHt9OworCitwdWJsaWM6CisKKwl2aXJ0dWFsIH5YS01TUmVnaXN0ZXJSZXF1ZXN0KCkge307CisKKwkvKiogQG5hbWUgR2V0dGVyIEludGVyZmFjZSBNZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFJldHVybiB0aGUgZWxlbWVudCBhdCB0aGUgYmFzZSBvZiB0aGUgbWVzc2FnZQorCSAqLworCisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGdldEVsZW1lbnQodm9pZCkgY29uc3QgPSAwOworCisJLyoqCisJICogXGJyaWVmIE9idGFpbiB0aGUgUHJvdG90eXBLZXlCaW5kaW5nIGVsZW1lbnQKKwkgKgorCSAqIFRoZSBQcm90b3R5cGVLZXlCaW5kaW5nIGVsZW1lbnQgaXMgdGhlIGNvcmUgb2YgdGhlIFJlZ2lzdGVyUmVxdWVzdCBtZXNzYWdlLCBhbmQKKwkgKiBkZWZpbmVzIHRoZSBrZXkgaW5mb3JtYXRpb24gdGhhdCB3aWxsIGJlIHNlbnQgdG8gdGhlIHNlcnZlciBmb3IgcmVnaXN0cmF0aW9uLgorCSAqCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBYS01TUHJvdG90eXBlS2V5QmluZGluZyBlbGVtZW50CisJICovCisKKwl2aXJ0dWFsIFhLTVNQcm90b3R5cGVLZXlCaW5kaW5nICogZ2V0UHJvdG90eXBlS2V5QmluZGluZyh2b2lkKSBjb25zdCA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBBdXRoZW50aWNhdGlvbiBlbGVtZW50CisJICoKKwkgKiBUaGUgQXV0aGVudGljYXRpb24gZWxlbWVudCBvZiB0aGUgUmVnaXN0ZXJSZXF1ZXN0IGlzIHVzZWQgYnkgdGhlIGNsaWVudCB0bworCSAqIGF1dGhlbnRpY2F0ZSB0aGUgcmVxdWVzdCB0byB0aGUgc2VydmVyLgorCSAqCisJICogQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIEF1dGhlbnRpY2F0aW9uIHN0cnVjdHVyZSAKKwkgKi8KKworCXZpcnR1YWwgWEtNU0F1dGhlbnRpY2F0aW9uICogZ2V0QXV0aGVudGljYXRpb24gKHZvaWQpIGNvbnN0ID0gMDsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIHNpZ25hdHVyZSB1c2VkIHRvIHByb3ZlIHBvc3Nlc3Npb24gb2YgdGhlIHByaXZhdGUga2V5CisJICoKKwkgKiBXaGVuIHRoZSBjbGllbnQgcHJlc2VudHMgYSByZXF1ZXN0IGZvciBhIGtleSBnZW5lcmF0ZWQgYnkgdGhlbSwgdGhpcyBlbGVtZW50CisJICogaXMgdXNlZCB0byBzaG93IHRoYXQgdGhlIGNsaWVudCBpcyBhdXRob3Jpc2VkIHRvIG1ha2UgdGhpcyByZXF1ZXN0IHVzaW5nIHRoaXMKKwkgKiBrZXkuCisJICoKKwkgKiBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgcHJvb2Ygb2YgcG9zc2Vzc2lvbiBTaWduYXR1cmUgb2JqZWN0IChvciBOVUxMIGlmIG5vbmUKKwkgKiB3YXMgZGVmaW5lZAorCSAqLworCisJdmlydHVhbCBEU0lHU2lnbmF0dXJlICogZ2V0UHJvb2ZPZlBvc3Nlc3Npb25TaWduYXR1cmUodm9pZCkgY29uc3QgPSAwOworCisJLy9AfQorCisJLyoqIEBuYW1lIFNldHRlciBJbnRlcmZhY2UgTWV0aG9kcyAqLworCS8vQHsKKworCS8qKiBcYnJpZWYgQWRkIGEgUHJvdG90eXBlS2V5QmluZGluZyBlbGVtZW50CisJICoKKwkgKiBTZXQgYSBQcm90b3R5cGVLZXlCaW5kaW5nIGVsZW1lbnQgaW4gdGhlIFJlcXVlc3QgbWVzc2FnZS4gIFRoZSByZXR1cm5lZAorCSAqIG9iamVjdCBjYW4gYmUgbWFuaXB1bGF0ZWQgdG8gYWRkIEtleUluZm8gZWxlbWVudHMgdG8gdGhlIFJlcXVlc3QuCisJICoKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgUHJvdG90eXBlS2V5QmluZGluZyBvYmplY3QsIG9yCisJICogdGhlIHBvaW50ZXIgdG8gZXh0YW50IG9iamVjdCBpZiBvbmUgYWxyZWFkeSBleGlzdGVkLgorCSAqLworCisJdmlydHVhbCBYS01TUHJvdG90eXBlS2V5QmluZGluZyAqIGFkZFByb3RvdHlwZUtleUJpbmRpbmcodm9pZCkgPSAwOworCisJLyoqIFxicmllZiBBZGQgYW4gQXV0aGVudGljYXRpb24gZWxlbWVudAorCSAqCisJICogU2V0IGEgQXV0aGVudGljYXRpb24gZWxlbWVudCBpbiB0aGUgUmVxdWVzdCBtZXNzYWdlLiAgVGhlIHJldHVybmVkCisJICogb2JqZWN0IGNhbiBiZSBtYW5pcHVsYXRlZCB0byBhZGQgQXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24gdG8gdGhlIHJlcXVlc3QuCisJICoKKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgQXV0aGVudGljYXRvbiBvYmplY3QsIG9yCisJICogdGhlIHBvaW50ZXIgdG8gZXh0YW50IG9iamVjdCBpZiBvbmUgYWxyZWFkeSBleGlzdGVkLgorCSAqLworCisJdmlydHVhbCBYS01TQXV0aGVudGljYXRpb24gKiBhZGRBdXRoZW50aWNhdGlvbih2b2lkKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgQWRkIGEgUHJvb2ZPZlBvc3Nlc3Npb24gc2lnbmF0dXJlIHRvIHRoZSBtZXNzYWdlCisJICoKKwkgKiBBbGxvd3MgdGhlIGFwcGxpY2F0aW9uIHRvIGFkZCBhIG5ldyBQcm9vZk9mUG9zc2Vzc2lvbiBzaWduYXR1cmUgaW50byBhIAorCSAqIFJlZ2lzdGVyUmVxdWVzdCBlbGVtZW50CisJICoKKwkgKiBAbm90ZSB0aGUgY2xpZW50IGFwcGxpY2F0aW9uIHdpbGwgbmVlZCB0byBzZXQgdGhlIGtleSBhbmQgc2lnbiB0aGUKKwkgKiBtZXNzYWdlIC0gaG93ZXZlciB0aGUgYXBwcm9wcmlhdGUgcmVmZXJlbmNlICh0byB0aGUgUHJvdG90eXBlS2V5QmluZGluZworCSAqIGVsZW1lbnQpIHdpbGwgYmUgc2V0LiAgVGhpcyBpbXBsaWVzIHRoYXQgdGhlIFByb3RvdHlwZUtleUJpbmRpbmcgKm11c3QqCisJICogYmUgYWRkZWQgcHJpb3IgdG8gdGhlIGNhbGwgdG8gdGhpcyBtZXRob2QuCisJICoKKwkgKiBAcmV0dXJucyB0aGUgbmV3IFNpZ25hdHVyZSBzdHJ1Y3R1cmUKKwkgKi8KKworCXZpcnR1YWwgRFNJR1NpZ25hdHVyZSAqIGFkZFByb29mT2ZQb3NzZXNzaW9uU2lnbmF0dXJlKAorCQljYW5vbmljYWxpemF0aW9uTWV0aG9kIGNtID0gQ0FOT05fQzE0Tl9OT0MsCisJCXNpZ25hdHVyZU1ldGhvZAlzbSA9IFNJR05BVFVSRV9EU0EsCisJCWhhc2hNZXRob2QgaG0gPSBIQVNIX1NIQTEpID0gMDsKKwkKKwkvL0B9CisKK3ByaXZhdGU6CisKKwkvLyBVbmltcGxlbWVudGVkCisJWEtNU1JlZ2lzdGVyUmVxdWVzdChjb25zdCBYS01TUmVnaXN0ZXJSZXF1ZXN0ICYpOworCVhLTVNSZWdpc3RlclJlcXVlc3QgJiBvcGVyYXRvciA9IChjb25zdCBYS01TUmVnaXN0ZXJSZXF1ZXN0ICYpOworCit9OworCisjZW5kaWYgLyogWEtNU1JFR0lTVEVSUkVRVUVTVF9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL1hLTVNSZWdpc3RlclJlc3VsdC5ocHAgYi9jL3NyYy94a21zL1hLTVNSZWdpc3RlclJlc3VsdC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY0NmNjOAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvWEtNU1JlZ2lzdGVyUmVzdWx0LmhwcApAQCAtMCwwICsxLDIwNCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU1JlZ2lzdGVyUmVzdWx0IDo9IEludGVyZmFjZSBmb3IgUmVnaXN0ZXJSZXN1bHQgTWVzc2FnZXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEtNU1JFR0lTVEVSUkVTVUxUX0lOQ0xVREUKKyNkZWZpbmUgWEtNU1JFR0lTVEVSUkVTVUxUX0lOQ0xVREUKKworLy8gWFNFQyBJbmNsdWRlcworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TUmVzdWx0VHlwZS5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNTdGF0dXMuaHBwPgorCitjbGFzcyBYS01TS2V5QmluZGluZzsKK2NsYXNzIFhLTVNVbnZlcmlmaWVkS2V5QmluZGluZzsKK2NsYXNzIFhLTVNSU0FLZXlQYWlyOworY2xhc3MgWEVOQ0NpcGhlckRhdGE7CisKKy8qKgorICogQGluZ3JvdXAgeGttcworICovCisKKy8qKgorICogQGJyaWVmIEludGVyZmFjZSBkZWZpbml0aW9uIGZvciB0aGUgUmVnaXN0ZXJSZXN1bHQgZWxlbWVudHMKKyAqCisgKiBUaGUgXDxSZWdpc3RlclJlc3VsdFw+IGlzIHVzZWQgYnkgdGhlIFgtS1JTUyBzZXJ2aWNlIHRvIHJlc3BvbnNlIHRvCisgKiBhIHVzZXIgcmVxdWVzdCB0byByZWdpc3RlciBhIG5ldyBrZXkgd2l0aCB0aGUgc2VydmljZS4KKyAqCisgKiBUaGUgc2NoZW1hIGRlZmluaXRpb24gZm9yIFJlZ2lzdGVyUmVzdWx0IGlzIGFzIGZvbGxvd3MgOgorICoKKyAqIFx2ZXJiYXRpbQorICAgPCEtLSBSZWdpc3RlclJlc3VsdCAtLT4KKyAgIDxlbGVtZW50IG5hbWU9IlJlZ2lzdGVyUmVzdWx0IiB0eXBlPSJ4a21zOlJlZ2lzdGVyUmVzdWx0VHlwZSIvPgorICAgPGNvbXBsZXhUeXBlIG5hbWU9IlJlZ2lzdGVyUmVzdWx0VHlwZSI+CisgICAgICA8Y29tcGxleENvbnRlbnQ+CisgICAgICAgICA8ZXh0ZW5zaW9uIGJhc2U9InhrbXM6UmVzdWx0VHlwZSI+CisgICAgICAgICAgICA8c2VxdWVuY2U+CisgICAgICAgICAgICAgICA8ZWxlbWVudCByZWY9InhrbXM6S2V5QmluZGluZyIgbWluT2NjdXJzPSIwIiAKKyAgICAgICAgICAgICAgICAgICAgIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CisgICAgICAgICAgICAgICA8ZWxlbWVudCByZWY9InhrbXM6UHJpdmF0ZUtleSIgbWluT2NjdXJzPSIwIi8+CisgICAgICAgICAgICA8L3NlcXVlbmNlPgorICAgICAgICAgPC9leHRlbnNpb24+CisgICAgICA8L2NvbXBsZXhDb250ZW50PgorICAgPC9jb21wbGV4VHlwZT4KKyAgIDwhLS0gL1JlZ2lzdGVyUmVzdWx0IC0tPgorXGVuZHZlcmJhdGltCisgKi8KKworY2xhc3MgWEtNU1JlZ2lzdGVyUmVzdWx0IDogcHVibGljIFhLTVNSZXN1bHRUeXBlIHsKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCitwcm90ZWN0ZWQ6CisKKwlYS01TUmVnaXN0ZXJSZXN1bHQoKSB7fTsKKworcHVibGljOgorCisJdmlydHVhbCB+WEtNU1JlZ2lzdGVyUmVzdWx0KCkge307CisKKwkvKiogQG5hbWUgR2V0dGVyIEludGVyZmFjZSBNZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFJldHVybiB0aGUgZWxlbWVudCBhdCB0aGUgYmFzZSBvZiB0aGUgbWVzc2FnZQorCSAqLworCisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGdldEVsZW1lbnQodm9pZCkgY29uc3QgPSAwOworCisJLy9AfQorCisJLyoqIEBuYW1lIEtleUJpbmRpbmcgaGFuZGxpbmcgICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIEZpbmQgbnVtYmVyIG9mIEtleUJpbmRpbmcgZWxlbWVudHMKKwkgKgorCSAqIEByZXR1cm5zIHRoZSBudW1iZXIgb2YgS2V5QmluZGluZyBpdGVtcyB3aXRoaW4gdGhlIFJlZ2lzdGVyUmVzdWx0CisJICovCisKKwl2aXJ0dWFsIGludCBnZXRLZXlCaW5kaW5nU2l6ZSh2b2lkKSBjb25zdCA9IDA7CisKKwkvKgorCSAqIFxicmllZiBPYnRhaW4gYW4gS2V5QmluZGluZyBpdGVtCisJICoKKwkgKiBAcGFyYW0gaXRlbSBJbmRleCBvZiB0aGUgaXRlbSB0byByZXR1cm4gKDAgPSBmaXJzdCBlbGVtZW50KQorCSAqIEByZXR1cm5zIHRoZSBLZXlCaW5kaW5nIHJlZmVyZW5jZWQgYnkgIml0ZW0iCisJICovCisKKwl2aXJ0dWFsIFhLTVNLZXlCaW5kaW5nICogZ2V0S2V5QmluZGluZ0l0ZW0oaW50IGl0ZW0pIGNvbnN0ID0gMDsKKworCS8qCisJICogXGJyaWVmIEFwcGVuZCBhIG5ldyBLZXlCaW5kaW5nIGVsZW1lbnQKKwkgKgorCSAqIEFsbG93cyBjYWxsZXJzIHRvIGFwcGVuZCBhIG5ldyBLZXlCaW5kaW5nIGl0ZW0uCisJICogVGhlIGl0ZW0gaXMgaW5pdGlhbGx5IGVtcHR5IG9mIEtleUluZm8gZWxlbWVudHMgLSB0aGVzZSBtdXN0IGJlIGFkZGVkCisJICogYnkgdGhlIGNhbGxlci4KKwkgKgorCSAqIEBwYXJhbSBzdGF0dXMgVGhlIHN0YXR1cyAoVmFsaWQsIEludmFsaWQgb3IgSW5kZXRlcm1pbmF0ZSkgb2YgdGhpcworCSAqIGtleQorCSAqIEByZXR1cm5zIHRoZSBuZXdseSBjcmVhdGVkIEtleUJpbmRpbmcgb2JqZWN0IChhbHJlYWR5IGluc2VydGVkCisJICogaW4gdGhlIFJlZ2lzdGVyUmVzdWx0CisJICovCisKKwl2aXJ0dWFsIFhLTVNLZXlCaW5kaW5nICogYXBwZW5kS2V5QmluZGluZ0l0ZW0oWEtNU1N0YXR1czo6U3RhdHVzVmFsdWUgc3RhdHVzKSA9IDA7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgUHJpdmF0ZUtleSBoYW5kbGluZyAgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgUmV0dXJuIHRoZSBSU0FLZXlQYWlyCisJICoKKwkgKiBUaGlzIGNhbGwgcmVxdWlyZXMgdGhlIHBhc3NwaHJhc2UgdXNlZCB0byBlbmNyeXB0IHRoZSBwcml2YXRlIGtleS4KKwkgKiBUaGUgaW1wbGVtZW50YXRpb24gZGVjcnlwdHMgdGhlIFByaXZhdGVLZXkgZWxlbWVudCBpbiB0aGUKKwkgKiBSZWdpc3RlclJlc3VsdCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0aW5nIFJTQUtleVBhaXIuCisJICoKKwkgKiBAbm90ZSBUaGUgZGVjcnlwdGlvbiBpcyBwZXJmb3JtZWQgKmluc2lkZSogdGhlIFJlZ2lzdGVyUmVzdWx0LCBzbworCSAqIHRoaXMgYWN0dWFsbHkgbW9kaWZpZWQgdGhlIGNvbnRlbnRzIG9mIHRoZSBYTUwuICBJdCBzaG91bGQgbmV2ZXIKKwkgKiBiZSBjYWxsZWQgdHdpY2UhCisJICoKKwkgKiBAcGFyYW0gcGFzc1BocmFzZSBUaGUgbG9jYWwgY29kZSBwYWdlIHZlcnNpb24gb2YgdGhlIHBhc3MgcGhyYXNlCisJICogQHJldHVybnMgdGhlIG51bWJlciBvZiBLZXlCaW5kaW5nIGl0ZW1zIHdpdGhpbiB0aGUgUmVnaXN0ZXJSZXN1bHQKKwkgKi8KKworCXZpcnR1YWwgWEtNU1JTQUtleVBhaXIgKiBnZXRSU0FLZXlQYWlyKGNvbnN0IGNoYXIgKiBwYXNzUGhyYXNlKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgQWRkIHRoZSBSU0FLZXlQYWlyIGluIGFuIGVuY3J5cHRlZCBQcml2YXRlS2V5CisJICoKKwkgKiBUaGlzIGNhbGwgcmVxdWlyZXMgdGhlIHBhc3NwaHJhc2UgdG8gZW5jcnlwdCB0aGUgcHJpdmF0ZSBrZXkuCisJICogVGhlIGltcGxlbWVudGF0aW9uIGVuY3J5cHRzIHRoZSBSU0FLZXlQYWlyIGFuZCBhZGRzIHRoZSByZXN1bHQKKwkgKiB0byB0aGUgcmVzdWx0aW5nIFJTQUtleSBQYWlyLiAgSXQgcmV0dXJucyB0aGUgQ2lwaGVyRGF0YSBlbGVtZW50CisJICogdG8gdGhlIGNhbGxlciAobm90IGEgc3RydWN0dXJlIGZvciB0aGUgUHJpdmF0ZUtleSkKKwkgKgorCSAqIEBub3RlIFRoZSBlbmNyeXB0aW9uIGlzIHBlcmZvcm1lZCAqaW5zaWRlKiB0aGUgUmVnaXN0ZXJSZXN1bHQsIHNvCisJICogdGhpcyBhY3R1YWxseSBtb2RpZmllZCB0aGUgY29udGVudHMgb2YgdGhlIFhNTC4gIEl0IHNob3VsZCBuZXZlcgorCSAqIGJlIGNhbGxlZCB0d2ljZSEKKwkgKgorCSAqIEBwYXJhbSBwYXNzUGhyYXNlIFRoZSBsb2NhbCBjb2RlIHBhZ2UgdmVyc2lvbiBvZiB0aGUgcGFzcyBwaHJhc2UKKwkgKiBAcGFyYW0gTW9kdWx1cyBCYXNlNjQgZW5jb2RlZCBzdHJpbmcgd2l0aCB0aGUgbW9kdWx1cworCSAqIEBwYXJhbSBFeHBvbmVudCBCYXNlNjQgZW5jb2RlZCBzdHJpbmcgd2l0aCB0aGUgZXhwb25lbnQKKwkgKiBAcGFyYW0gUCBCYXNlNjQgZW5jb2RlZCBzdHJpbmcgd2l0aCBwCisJICogQHBhcmFtIFEgQmFzZTY0IGVuY29kZWQgc3RyaW5nIHdpdGggcQorCSAqIEBwYXJhbSBEUCBCYXNlNjQgZW5jb2RlZCBzdHJpbmcgd2l0aCBkcAorCSAqIEBwYXJhbSBEUSBCYXNlNjQgZW5jb2RlZCBzdHJpbmcgd2l0aCBkcQorCSAqIEBwYXJhbSBJbnZlcnNlUSBCYXNlNjQgZW5jb2RlZCBzdHJpbmcgd2l0aCBpbnZlcnNlcQorCSAqIEBwYXJhbSBEIEJhc2U2NCBlbmNvZGVkIHN0cmluZyB3aXRoIGQKKwkgKiBAcGFyYW0gZW0gVGhlIGVuY3J5cHRpb25NZXRob2QgdG8gdXNlIGZvciB0aGlzIGVuY3J5cHRpb24uICBVc2UKKwkgKiBFTkNSWVBUX05PTkUgaWYgYSB1c2VyIGRlZmluZWQgdHlwZSBpcyByZXF1aXJlZC4KKwkgKiBAcGFyYW0gYWxnb3JpdGhtVVJJIElmIEVOQ1JZUFRfTk9ORSBpcyBwYXNzZWQgaW4sIHRoaXMgd2lsbCBiZQorCSAqIHVzZWQgdG8gc2V0IHRoZSBhbGdvcml0aG0gVVJJLiAgSWYgdGhpcyBpcyBhbHNvIE5VTEwgLSBubworCSAqIEVuY3J5cHRpb25NZXRob2Qgd2lsbCBiZSBzZXQuICA8Yj5OVUxMIFZhbHVlIFVuc3VwcG9ydGVkIGlmIGVtIG5vdAorCSAqIHNldCEgIEl0J3MgdXNlIGNvdWxkIGNhdXNlIHByb2JsZW1zITwvYj4KKwkgKiBAcmV0dXJucyBUaGUgZW5jcnlwdGVkIHJlc3VsdCBvZiBhZGRpbmcgdGhlIGluZm8KKwkgKi8KKworCXZpcnR1YWwgWEVOQ0VuY3J5cHRlZERhdGEgKiBzZXRSU0FLZXlQYWlyKGNvbnN0IGNoYXIgKiBwYXNzUGhyYXNlLAorCQlYTUxDaCAqIE1vZHVsdXMsCisJCVhNTENoICogRXhwb25lbnQsCisJCVhNTENoICogUCwKKwkJWE1MQ2ggKiBRLAorCQlYTUxDaCAqIERQLAorCQlYTUxDaCAqIERRLAorCQlYTUxDaCAqIEludmVyc2VRLAorCQlYTUxDaCAqIEQsCisJCWVuY3J5cHRpb25NZXRob2QgZW0sCisJCWNvbnN0IFhNTENoICogYWxnb3JpdGhtVVJJID0gTlVMTCkgPSAwOworCisJLy9AfQorCisKK3ByaXZhdGU6CisKKwkvLyBVbmltcGxlbWVudGVkCisJWEtNU1JlZ2lzdGVyUmVzdWx0KGNvbnN0IFhLTVNSZWdpc3RlclJlc3VsdCAmKTsKKwlYS01TUmVnaXN0ZXJSZXN1bHQgJiBvcGVyYXRvciA9IChjb25zdCBYS01TUmVnaXN0ZXJSZXN1bHQgJik7CisKK307CisKKyNlbmRpZiAvKiBYS01TUkVHSVNURVJSRVNVTFRfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9YS01TUmVpc3N1ZUtleUJpbmRpbmcuaHBwIGIvYy9zcmMveGttcy9YS01TUmVpc3N1ZUtleUJpbmRpbmcuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwODM4OGEKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL1hLTVNSZWlzc3VlS2V5QmluZGluZy5ocHAKQEAgLTAsMCArMSw5NSBAQAorLyoNCisgKiBDb3B5cmlnaHQgMjAwNiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoNCisgKiBYU0VDDQorICoNCisgKiBYS01TUmV2b2tlS2V5QmluZGluZyA6PSBJbnRlcmZhY2UgZm9yIEtleUJpbmRpbmcgZWxlbWVudHMNCisgKg0KKyAqICRJZCQNCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgWEtNU1JFSVNTVUVLRVlCSU5ESU5HX0lOQ0xVREUNCisjZGVmaW5lIFhLTVNSRUlTU1VFS0VZQklORElOR19JTkNMVURFDQorDQorLy8gWFNFQyBJbmNsdWRlcw0KKw0KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+DQorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZS5ocHA+DQorDQorLyoqDQorICogQGluZ3JvdXAgeGttcw0KKyAqLw0KKw0KKy8qKg0KKyAqIEBicmllZiBJbnRlcmZhY2UgZGVmaW5pdGlvbiBmb3IgdGhlIFJlaXNzdWVLZXlCaW5kaW5nIGVsZW1lbnRzDQorICoNCisgKiBUaGUgXDxSZWlzc3VlS2V5QmluZGluZ1w+IEVsZW1lbnQgaXMgdXNlZCBpbiBhIHJlcXVlc3QgdG8gcmVpc3N1ZQ0KKyAqIGEgcGFydGljdWxhciBrZXkgZnJvbSBhbiBYS1JTIHNlcnZpY2UNCisgKg0KKyAqIFRoZSBzY2hlbWEgZGVmaW5pdGlvbiBmb3IgUmVpc3N1ZUtleUJpbmRpbmcgaXMgYXMgZm9sbG93cyA6DQorICoNCisgKiBcdmVyYmF0aW0NCisgICA8IS0tIFJlaXNzdWVLZXlCaW5kaW5nIC0tPg0KKwk8ZWxlbWVudCBuYW1lPSJSZWlzc3VlS2V5QmluZGluZyIgdHlwZT0ieGttczpLZXlCaW5kaW5nVHlwZSIvPg0KKyAgIDwhLS0gL1JlaXNzdWVLZXlCaW5kaW5nIC0tPg0KKyBcZW5kdmVyYmF0aW0NCisgKi8NCisNCitjbGFzcyBYS01TU3RhdHVzOw0KKw0KK2NsYXNzIFhLTVNSZWlzc3VlS2V5QmluZGluZyA6IHB1YmxpYyBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZSB7DQorDQorCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovDQorCS8vQHsNCisNCitwcm90ZWN0ZWQ6DQorDQorCVhLTVNSZWlzc3VlS2V5QmluZGluZygpIHt9Ow0KKw0KK3B1YmxpYzoNCisNCisJdmlydHVhbCB+WEtNU1JlaXNzdWVLZXlCaW5kaW5nKCkge307DQorDQorCS8vQH0NCisNCisJLyoqIEBuYW1lIFN0YXR1cyBoYW5kbGluZyAqLw0KKwkvL0B7DQorDQorCS8qKg0KKwkgKiBcYnJpZWYgT2J0YWluIHRoZSBzdGF0dXMgZWxlbWVudCBmb3IgdGhpcyBLZXlCaW5kaW5nDQorCSAqDQorCSAqIFRoZSBcPFN0YXR1c1w+IGVsZW1lbnQgaXMgdXNlZCB0byBkZXNjcmliZSB0byB0aGUgY2FsbGVyIHRoZQ0KKwkgKiB2YWxpZGl0eSBvZiB0aGV5IGtleSBiZWluZyBkZXNjcmliZWQuICBUaGlzIGNhbGwgaXMgdXNlZCB0bw0KKwkgKiBvYnRhaW4gdGhlIHN0YXR1cyBlbGVtZW50DQorCSAqDQorCSAqIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBYS01TU3RhdHVzIGVsZW1lbnQNCisJICovDQorDQorCXZpcnR1YWwgWEtNU1N0YXR1cyAqIGdldFN0YXR1cyh2b2lkKSBjb25zdCA9IDA7DQorDQorCS8vQH0NCisNCitwcml2YXRlOg0KKw0KKwkvLyBVbmltcGxlbWVudGVkDQorCVhLTVNSZWlzc3VlS2V5QmluZGluZyhjb25zdCBYS01TUmVpc3N1ZUtleUJpbmRpbmcgJik7DQorCVhLTVNSZWlzc3VlS2V5QmluZGluZyAmIG9wZXJhdG9yID0gKGNvbnN0IFhLTVNSZWlzc3VlS2V5QmluZGluZyAmKTsNCisNCit9Ow0KKw0KKyNlbmRpZiAvKiBYS01TUkVJU1NVRUtFWUJJTkRJTkdfSU5DTFVERSAqLw0KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvWEtNU1JlaXNzdWVSZXF1ZXN0LmhwcCBiL2Mvc3JjL3hrbXMvWEtNU1JlaXNzdWVSZXF1ZXN0LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWQ1MzVjCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9YS01TUmVpc3N1ZVJlcXVlc3QuaHBwCkBAIC0wLDAgKzEsMTg2IEBACisvKg0KKyAqIENvcHlyaWdodCAyMDA2IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKg0KKyAqIFhTRUMNCisgKg0KKyAqIFhLTVNSZWlzc3VlUmVxdWVzdCA6PSBJbnRlcmZhY2UgZm9yIFJlZ2lzdGVyUmVxdWVzdCBNZXNzYWdlcw0KKyAqDQorICogJElkJA0KKyAqDQorICovDQorDQorI2lmbmRlZiBYS01TUkVJU1NVRVJFUVVFU1RfSU5DTFVERSANCisjZGVmaW5lIFhLTVNSRUlTU1VFUkVRVUVTVF9JTkNMVURFIA0KKw0KKy8vIFhTRUMgSW5jbHVkZXMNCisNCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGUuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1N0YXR1cy5ocHA+DQorDQorY2xhc3MgRFNJR1NpZ25hdHVyZTsNCitjbGFzcyBYS01TQXV0aGVudGljYXRpb247DQorY2xhc3MgWEtNU1JlaXNzdWVLZXlCaW5kaW5nOw0KKw0KKy8qKg0KKyAqIEBpbmdyb3VwIHhrbXMNCisgKi8NCisNCisvKioNCisgKiBAYnJpZWYgSW50ZXJmYWNlIGRlZmluaXRpb24gZm9yIHRoZSBSZWlzc3VlUmVxdWVzdCBlbGVtZW50cw0KKyAqDQorICogVGhlIFw8UmVpc3N1ZVJlcXVlc3RcPiBpcyBvbmUgb2YgdGhlIG1lc3NhZ2UgdHlwZXMgb2YNCisgKiB0aGUgWC1LUk1TIHNlcnZpY2UuICBJdCBpcyB1c2VkIHdoZW4gYSBjbGllbnQgd2lzaGVzIHRvIHJlcXVlc3QNCisgKiB0aGUgc2VydmljZSByZWlzc3VlIGEga2V5IGJpbmRpbmcgKGUuZy4gYSBjZXJ0KS4NCisgKg0KKyAqIFRoZSBzY2hlbWEgZGVmaW5pdGlvbiBmb3IgUmVpc3N1ZVJlcXVlc3QgaXMgYXMgZm9sbG93cyA6DQorICoNCisgKiBcdmVyYmF0aW0NCisgICA8IS0tIFJlaXNzdWVSZXF1ZXN0IC0tPg0KKyAgIDxlbGVtZW50IG5hbWU9IlJlaXNzdWVSZXF1ZXN0IiB0eXBlPSJ4a21zOlJlaXNzdWVSZXF1ZXN0VHlwZSIvPg0KKyAgIDxjb21wbGV4VHlwZSBuYW1lPSJSZWlzc3VlUmVxdWVzdFR5cGUiPg0KKyAgICAgIDxjb21wbGV4Q29udGVudD4NCisgICAgICAgICA8ZXh0ZW5zaW9uIGJhc2U9InhrbXM6UmVxdWVzdEFic3RyYWN0VHlwZSI+DQorICAgICAgICAgICAgPHNlcXVlbmNlPg0KKyAgICAgICAgICAgICAgIDxlbGVtZW50IHJlZj0ieGttczpSZWlzc3VlS2V5QmluZGluZyIvPg0KKyAgICAgICAgICAgICAgIDxlbGVtZW50IHJlZj0ieGttczpBdXRoZW50aWNhdGlvbiIvPg0KKyAgICAgICAgICAgICAgIDxlbGVtZW50IHJlZj0ieGttczpQcm9vZk9mUG9zc2Vzc2lvbiIgbWluT2NjdXJzPSIwIi8+DQorICAgICAgICAgICAgPC9zZXF1ZW5jZT4NCisgICAgICAgICA8L2V4dGVuc2lvbj4NCisgICAgICA8L2NvbXBsZXhDb250ZW50Pg0KKyAgIDwvY29tcGxleFR5cGU+DQorICAgPGVsZW1lbnQgbmFtZT0iUmVpc3N1ZUtleUJpbmRpbmciIHR5cGU9InhrbXM6S2V5QmluZGluZ1R5cGUiLz4NCisgICA8IS0tIC9SZWlzc3VlUmVxdWVzdCAtLT4NCitcZW5kdmVyYmF0aW0NCisgKi8NCisNCitjbGFzcyBYS01TUmVpc3N1ZVJlcXVlc3QgOiBwdWJsaWMgWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGUgew0KKw0KKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLw0KKwkvL0B7DQorDQorcHJvdGVjdGVkOg0KKw0KKwlYS01TUmVpc3N1ZVJlcXVlc3QoKSB7fTsNCisNCitwdWJsaWM6DQorDQorCXZpcnR1YWwgflhLTVNSZWlzc3VlUmVxdWVzdCgpIHt9Ow0KKw0KKwkvKiogQG5hbWUgR2V0dGVyIEludGVyZmFjZSBNZXRob2RzICovDQorCS8vQHsNCisNCisJLyoqDQorCSAqIFxicmllZiBSZXR1cm4gdGhlIGVsZW1lbnQgYXQgdGhlIGJhc2Ugb2YgdGhlIG1lc3NhZ2UNCisJICovDQorDQorCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBnZXRFbGVtZW50KHZvaWQpIGNvbnN0ID0gMDsNCisNCisJLyoqDQorCSAqIFxicmllZiBPYnRhaW4gdGhlIFJlaXNzdWVLZXlCaW5kaW5nIGVsZW1lbnQNCisJICoNCisJICogVGhlIFJlaXNzdWVLZXlCaW5kaW5nIGVsZW1lbnQgaXMgdGhlIGNvcmUgb2YgdGhlIFJlaXNzdWVSZXF1ZXN0IG1lc3NhZ2UsIGFuZA0KKwkgKiBkZWZpbmVzIHRoZSBrZXkgaW5mb3JtYXRpb24gdGhhdCBhIFJlaXNzdWUgaXMgcmVxdWlyZWQgZm9yLg0KKwkgKg0KKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIFhLTVNQcm90b3R5cGVLZXlCaW5kaW5nIGVsZW1lbnQNCisJICovDQorDQorCXZpcnR1YWwgWEtNU1JlaXNzdWVLZXlCaW5kaW5nICogZ2V0UmVpc3N1ZUtleUJpbmRpbmcodm9pZCkgY29uc3QgPSAwOw0KKw0KKwkvKioNCisJICogXGJyaWVmIEdldCB0aGUgQXV0aGVudGljYXRpb24gZWxlbWVudA0KKwkgKg0KKwkgKiBUaGUgQXV0aGVudGljYXRpb24gZWxlbWVudCBvZiB0aGUgUmVpc3N1ZVJlcXVlc3QgaXMgdXNlZCBieSB0aGUgY2xpZW50IHRvDQorCSAqIGF1dGhlbnRpY2F0ZSB0aGUgcmVxdWVzdCB0byB0aGUgc2VydmVyLg0KKwkgKg0KKwkgKiBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgQXV0aGVudGljYXRpb24gc3RydWN0dXJlIA0KKwkgKi8NCisNCisJdmlydHVhbCBYS01TQXV0aGVudGljYXRpb24gKiBnZXRBdXRoZW50aWNhdGlvbiAodm9pZCkgY29uc3QgPSAwOw0KKw0KKwkvKioNCisJICogXGJyaWVmIEdldCB0aGUgc2lnbmF0dXJlIHVzZWQgdG8gcHJvdmUgcG9zc2Vzc2lvbiBvZiB0aGUgcHJpdmF0ZSBrZXkNCisJICoNCisJICogV2hlbiB0aGUgY2xpZW50IHByZXNlbnRzIGEgcmVxdWVzdCBmb3IgYSBrZXkgZ2VuZXJhdGVkIGJ5IHRoZW0sIHRoaXMgZWxlbWVudA0KKwkgKiBpcyB1c2VkIHRvIHNob3cgdGhhdCB0aGUgY2xpZW50IGlzIGF1dGhvcmlzZWQgdG8gbWFrZSB0aGlzIHJlcXVlc3QgdXNpbmcgdGhpcw0KKwkgKiBrZXkuDQorCSAqDQorCSAqIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBwcm9vZiBvZiBwb3NzZXNzaW9uIFNpZ25hdHVyZSBvYmplY3QgKG9yIE5VTEwgaWYgbm9uZQ0KKwkgKiB3YXMgZGVmaW5lZA0KKwkgKi8NCisNCisJdmlydHVhbCBEU0lHU2lnbmF0dXJlICogZ2V0UHJvb2ZPZlBvc3Nlc3Npb25TaWduYXR1cmUodm9pZCkgY29uc3QgPSAwOw0KKw0KKwkvL0B9DQorDQorCS8qKiBAbmFtZSBTZXR0ZXIgSW50ZXJmYWNlIE1ldGhvZHMgKi8NCisJLy9Aew0KKw0KKwkvKiogXGJyaWVmIEFkZCBhIFJlaXNzdWVLZXlCaW5kaW5nIGVsZW1lbnQNCisJICoNCisJICogU2V0IGEgUmVpc3N1ZUtleUJpbmRpbmcgZWxlbWVudCBpbiB0aGUgUmVxdWVzdCBtZXNzYWdlLiAgVGhlIHJldHVybmVkDQorCSAqIG9iamVjdCBjYW4gYmUgbWFuaXB1bGF0ZWQgdG8gYWRkIEtleUluZm8gZWxlbWVudHMgdG8gdGhlIFJlcXVlc3QuDQorCSAqDQorCSAqIEBwYXJhbSBzdGF0dXMgVGhlIHN0YXR1cyB2YWx1ZSB0byBhZGQgaW50byB0aGUgUmVpc3N1ZUtleUJpbmRpbmcgc3RydWN0dXJlDQorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgbmV3bHkgY3JlYXRlZCBSZWlzc3VlS2V5QmluZGluZyBvYmplY3QsIG9yDQorCSAqIHRoZSBwb2ludGVyIHRvIGV4dGFudCBvYmplY3QgaWYgb25lIGFscmVhZHkgZXhpc3RlZC4NCisJICovDQorDQorCXZpcnR1YWwgWEtNU1JlaXNzdWVLZXlCaW5kaW5nICogYWRkUmVpc3N1ZUtleUJpbmRpbmcoWEtNU1N0YXR1czo6U3RhdHVzVmFsdWUgc3RhdHVzKSA9IDA7DQorDQorCS8qKiBcYnJpZWYgQWRkIGFuIEF1dGhlbnRpY2F0aW9uIGVsZW1lbnQNCisJICoNCisJICogU2V0IGEgQXV0aGVudGljYXRpb24gZWxlbWVudCBpbiB0aGUgUmVxdWVzdCBtZXNzYWdlLiAgVGhlIHJldHVybmVkDQorCSAqIG9iamVjdCBjYW4gYmUgbWFuaXB1bGF0ZWQgdG8gYWRkIEF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9uIHRvIHRoZSByZXF1ZXN0Lg0KKwkgKg0KKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgQXV0aGVudGljYXRvbiBvYmplY3QsIG9yDQorCSAqIHRoZSBwb2ludGVyIHRvIGV4dGFudCBvYmplY3QgaWYgb25lIGFscmVhZHkgZXhpc3RlZC4NCisJICovDQorDQorCXZpcnR1YWwgWEtNU0F1dGhlbnRpY2F0aW9uICogYWRkQXV0aGVudGljYXRpb24odm9pZCkgPSAwOw0KKw0KKw0KKwkvKioNCisJICogXGJyaWVmIEFkZCBhIFByb29mT2ZQb3NzZXNzaW9uIHNpZ25hdHVyZSB0byB0aGUgbWVzc2FnZQ0KKwkgKg0KKwkgKiBBbGxvd3MgdGhlIGFwcGxpY2F0aW9uIHRvIGFkZCBhIG5ldyBQcm9vZk9mUG9zc2Vzc2lvbiBzaWduYXR1cmUgaW50byBhIA0KKwkgKiBSZWlzc3VlUmVxdWVzdCBlbGVtZW50DQorCSAqDQorCSAqIEBub3RlIHRoZSBjbGllbnQgYXBwbGljYXRpb24gd2lsbCBuZWVkIHRvIHNldCB0aGUga2V5IGFuZCBzaWduIHRoZQ0KKwkgKiBtZXNzYWdlIC0gaG93ZXZlciB0aGUgYXBwcm9wcmlhdGUgcmVmZXJlbmNlICh0byB0aGUgUmVpc3N1ZUtleUJpbmRpbmcNCisJICogZWxlbWVudCkgd2lsbCBiZSBzZXQuICBUaGlzIGltcGxpZXMgdGhhdCB0aGUgUmVpc3N1ZUtleUJpbmRpbmcgKm11c3QqDQorCSAqIGJlIGFkZGVkIHByaW9yIHRvIHRoZSBjYWxsIHRvIHRoaXMgbWV0aG9kLg0KKwkgKg0KKwkgKiBAcmV0dXJucyB0aGUgbmV3IFNpZ25hdHVyZSBzdHJ1Y3R1cmUNCisJICovDQorDQorCXZpcnR1YWwgRFNJR1NpZ25hdHVyZSAqIGFkZFByb29mT2ZQb3NzZXNzaW9uU2lnbmF0dXJlKA0KKwkJY2Fub25pY2FsaXphdGlvbk1ldGhvZCBjbSA9IENBTk9OX0MxNE5fTk9DLA0KKwkJc2lnbmF0dXJlTWV0aG9kCXNtID0gU0lHTkFUVVJFX0RTQSwNCisJCWhhc2hNZXRob2QgaG0gPSBIQVNIX1NIQTEpID0gMDsNCisJDQorCS8vQH0NCisNCitwcml2YXRlOg0KKw0KKwkvLyBVbmltcGxlbWVudGVkDQorCVhLTVNSZWlzc3VlUmVxdWVzdChjb25zdCBYS01TUmVpc3N1ZVJlcXVlc3QgJik7DQorCVhLTVNSZWlzc3VlUmVxdWVzdCAmIG9wZXJhdG9yID0gKGNvbnN0IFhLTVNSZWlzc3VlUmVxdWVzdCAmKTsNCisNCit9Ow0KKw0KKyNlbmRpZiAvKiBYS01TUkVJU1NVRVJFUVVFU1RfSU5DTFVERSAqLw0KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvWEtNU1JlaXNzdWVSZXN1bHQuaHBwIGIvYy9zcmMveGttcy9YS01TUmVpc3N1ZVJlc3VsdC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWIxZjFhYgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvWEtNU1JlaXNzdWVSZXN1bHQuaHBwCkBAIC0wLDAgKzEsMTM2IEBACisvKg0KKyAqIENvcHlyaWdodCAyMDA2IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKg0KKyAqIFhTRUMNCisgKg0KKyAqIFhLTVNSZWlzc3VlUmVzdWx0IDo9IEludGVyZmFjZSBmb3IgUmVnaXN0ZXJSZXN1bHQgTWVzc2FnZXMNCisgKg0KKyAqICRJZCQNCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgWEtNU1JFSVNTVUVSRVNVTFRfSU5DTFVERQ0KKyNkZWZpbmUgWEtNU1JFSVNTVUVSRVNVTFRfSU5DTFVERQ0KKw0KKy8vIFhTRUMgSW5jbHVkZXMNCisNCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1Jlc3VsdFR5cGUuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1N0YXR1cy5ocHA+DQorDQorY2xhc3MgWEtNU0tleUJpbmRpbmc7DQorDQorLyoqDQorICogQGluZ3JvdXAgeGttcw0KKyAqLw0KKw0KKy8qKg0KKyAqIEBicmllZiBJbnRlcmZhY2UgZGVmaW5pdGlvbiBmb3IgdGhlIFJlaXNzdWVSZXN1bHQgZWxlbWVudHMNCisgKg0KKyAqIFRoZSBcPFJlaXNzdWVSZXN1bHRcPiBpcyB1c2VkIGJ5IHRoZSBYLUtSU1Mgc2VydmljZSB0byByZXNwb25zZSB0bw0KKyAqIGEgdXNlciByZXF1ZXN0IHRvIHJlaXNzdWUgYSBrZXkgZnJvbSB0aGUgc2VydmljZSAtIGUuZy4gZm9yIGEgbmV3DQorICogY2VydA0KKyAqDQorICogVGhlIHNjaGVtYSBkZWZpbml0aW9uIGZvciBSZWlzc3VlUmVzdWx0IGlzIGFzIGZvbGxvd3MgOg0KKyAqDQorICogXHZlcmJhdGltDQorICAgPCEtLSBSZWlzc3VlUmVzdWx0IC0tPg0KKyAgIDxlbGVtZW50IG5hbWU9IlJlaXNzdWVSZXN1bHQiIHR5cGU9InhrbXM6UmVpc3N1ZVJlc3VsdFR5cGUiLz4NCisgICA8Y29tcGxleFR5cGUgbmFtZT0iUmVpc3N1ZVJlc3VsdFR5cGUiPg0KKyAgICAgIDxjb21wbGV4Q29udGVudD4NCisgICAgICAgICA8ZXh0ZW5zaW9uIGJhc2U9InhrbXM6UmVzdWx0VHlwZSI+DQorICAgICAgICAgICAgPHNlcXVlbmNlPg0KKyAgICAgICAgICAgICAgIDxlbGVtZW50IHJlZj0ieGttczpLZXlCaW5kaW5nIiBtaW5PY2N1cnM9IjAiIA0KKyAgICAgICAgICAgICAgICAgICAgIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+DQorICAgICAgICAgICAgPC9zZXF1ZW5jZT4NCisgICAgICAgICA8L2V4dGVuc2lvbj4NCisgICAgICA8L2NvbXBsZXhDb250ZW50Pg0KKyAgIDwvY29tcGxleFR5cGU+DQorICAgPCEtLSAvUmVpc3N1ZVJlc3VsdCAtLT4NCitcZW5kdmVyYmF0aW0NCisgKi8NCisNCitjbGFzcyBYS01TUmVpc3N1ZVJlc3VsdCA6IHB1YmxpYyBYS01TUmVzdWx0VHlwZSB7DQorDQorCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovDQorCS8vQHsNCisNCitwcm90ZWN0ZWQ6DQorDQorCVhLTVNSZWlzc3VlUmVzdWx0KCkge307DQorDQorcHVibGljOg0KKw0KKwl2aXJ0dWFsIH5YS01TUmVpc3N1ZVJlc3VsdCgpIHt9Ow0KKw0KKwkvKiogQG5hbWUgR2V0dGVyIEludGVyZmFjZSBNZXRob2RzICovDQorCS8vQHsNCisNCisJLyoqDQorCSAqIFxicmllZiBSZXR1cm4gdGhlIGVsZW1lbnQgYXQgdGhlIGJhc2Ugb2YgdGhlIG1lc3NhZ2UNCisJICovDQorDQorCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBnZXRFbGVtZW50KHZvaWQpIGNvbnN0ID0gMDsNCisNCisJLy9AfQ0KKw0KKwkvKiogQG5hbWUgS2V5QmluZGluZyBoYW5kbGluZyAgKi8NCisJLy9Aew0KKw0KKwkvKioNCisJICogXGJyaWVmIEZpbmQgbnVtYmVyIG9mIEtleUJpbmRpbmcgZWxlbWVudHMNCisJICoNCisJICogQHJldHVybnMgdGhlIG51bWJlciBvZiBLZXlCaW5kaW5nIGl0ZW1zIHdpdGhpbiB0aGUgUmVpc3N1ZVJlc3VsdA0KKwkgKi8NCisNCisJdmlydHVhbCBpbnQgZ2V0S2V5QmluZGluZ1NpemUodm9pZCkgY29uc3QgPSAwOw0KKw0KKwkvKg0KKwkgKiBcYnJpZWYgT2J0YWluIGFuIEtleUJpbmRpbmcgaXRlbQ0KKwkgKg0KKwkgKiBAcGFyYW0gaXRlbSBJbmRleCBvZiB0aGUgaXRlbSB0byByZXR1cm4gKDAgPSBmaXJzdCBlbGVtZW50KQ0KKwkgKiBAcmV0dXJucyB0aGUgS2V5QmluZGluZyByZWZlcmVuY2VkIGJ5ICJpdGVtIg0KKwkgKi8NCisNCisJdmlydHVhbCBYS01TS2V5QmluZGluZyAqIGdldEtleUJpbmRpbmdJdGVtKGludCBpdGVtKSBjb25zdCA9IDA7DQorDQorCS8qDQorCSAqIFxicmllZiBBcHBlbmQgYSBuZXcgS2V5QmluZGluZyBlbGVtZW50DQorCSAqDQorCSAqIEFsbG93cyBjYWxsZXJzIHRvIGFwcGVuZCBhIG5ldyBLZXlCaW5kaW5nIGl0ZW0uDQorCSAqIFRoZSBpdGVtIGlzIGluaXRpYWxseSBlbXB0eSBvZiBLZXlJbmZvIGVsZW1lbnRzIC0gdGhlc2UgbXVzdCBiZSBhZGRlZA0KKwkgKiBieSB0aGUgY2FsbGVyLg0KKwkgKg0KKwkgKiBAcGFyYW0gc3RhdHVzIFRoZSBzdGF0dXMgKFZhbGlkLCBJbnZhbGlkIG9yIEluZGV0ZXJtaW5hdGUpIG9mIHRoaXMNCisJICoga2V5DQorCSAqIEByZXR1cm5zIHRoZSBuZXdseSBjcmVhdGVkIEtleUJpbmRpbmcgb2JqZWN0IChhbHJlYWR5IGluc2VydGVkDQorCSAqIGluIHRoZSBSZWlzc3VlUmVzdWx0DQorCSAqLw0KKw0KKwl2aXJ0dWFsIFhLTVNLZXlCaW5kaW5nICogYXBwZW5kS2V5QmluZGluZ0l0ZW0oWEtNU1N0YXR1czo6U3RhdHVzVmFsdWUgc3RhdHVzKSA9IDA7DQorDQorCS8vQH0NCisNCitwcml2YXRlOg0KKw0KKwkvLyBVbmltcGxlbWVudGVkDQorCVhLTVNSZWlzc3VlUmVzdWx0KGNvbnN0IFhLTVNSZWlzc3VlUmVzdWx0ICYpOw0KKwlYS01TUmVpc3N1ZVJlc3VsdCAmIG9wZXJhdG9yID0gKGNvbnN0IFhLTVNSZWlzc3VlUmVzdWx0ICYpOw0KKw0KK307DQorDQorI2VuZGlmIC8qIFhLTVNSRUlTU1VFUkVTVUxUX0lOQ0xVREUgKi8NCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL1hLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlLmhwcCBiL2Mvc3JjL3hrbXMvWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiYjJmN2MKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL1hLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlLmhwcApAQCAtMCwwICsxLDI2NiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGUgOj0gSW50ZXJmYWNlIGZvciBiYXNlIHNjaGVtYSBvZiBYS01TIFJlcXVlc3QgbWVzc2FnZXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEtNU1JFUVVFU1RBQlNUUkFDVFRZUEVfSU5DTFVERQorI2RlZmluZSBYS01TUkVRVUVTVEFCU1RSQUNUVFlQRV9JTkNMVURFCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGUuaHBwPgorCitjbGFzcyBYS01TUmVzcG9uZFdpdGg7CitjbGFzcyBYS01TUmVzcG9uc2VNZWNoYW5pc207CisKKy8qKgorICogQGluZ3JvdXAgeGttcworICovCisKKy8qKgorICogQGJyaWVmIEludGVyZmFjZSBkZWZpbml0aW9uIGZvciB0aGUgUmVxdWVzdEFic3RyYWN0VHlwZQorICoKKyAqIFRoZSBcPFJlcXVlc3RBYnN0cmFjdFR5cGVcPiBpcyBhbiBhYnN0cmFjdCB0eXBlIG9uIHdoaWNoIGFsbAorICogWEtNUyBSZXF1ZXN0IG1lc3NhZ2VzIGFyZSBidWlsdC4gIAorICoKKyAqIFRoZSBzY2hlbWEgZGVmaW5pdGlvbiBmb3IgUmVxdWVzdEFic3RyYWN0VHlwZSBpcyBhcyBmb2xsb3dzIDoKKyAqCisgKiBcdmVyYmF0aW0KKyAgIDwhLS0gUmVxdWVzdEFic3RyYWN0VHlwZSAtLT4KKyAgIDxjb21wbGV4VHlwZSBuYW1lPSJSZXF1ZXN0QWJzdHJhY3RUeXBlIiBhYnN0cmFjdD0idHJ1ZSI+CisgICAgICA8Y29tcGxleENvbnRlbnQ+CisgICAgICAgICA8ZXh0ZW5zaW9uIGJhc2U9InhrbXM6TWVzc2FnZUFic3RyYWN0VHlwZSI+CisgICAgICAgICAgICA8c2VxdWVuY2U+CisgICAgICAgICAgICAgICA8ZWxlbWVudCByZWY9InhrbXM6UmVzcG9uc2VNZWNoYW5pc20iIG1pbk9jY3Vycz0iMCIgCisgICAgICAgICAgICAgICAgICAgICBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgorICAgICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJ4a21zOlJlc3BvbmRXaXRoIiBtaW5PY2N1cnM9IjAiIAorICAgICAgICAgICAgICAgICAgICAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KKyAgICAgICAgICAgICAgIDxlbGVtZW50IHJlZj0ieGttczpQZW5kaW5nTm90aWZpY2F0aW9uIiBtaW5PY2N1cnM9IjAiLz4KKyAgICAgICAgICAgIDwvc2VxdWVuY2U+CisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9Ik9yaWdpbmFsUmVxdWVzdElkIiB0eXBlPSJOQ05hbWUiIAorICAgICAgICAgICAgICAgICAgdXNlPSJvcHRpb25hbCIvPgorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJSZXNwb25zZUxpbWl0IiB0eXBlPSJpbnRlZ2VyIiB1c2U9Im9wdGlvbmFsIi8+CisgICAgICAgICA8L2V4dGVuc2lvbj4KKyAgICAgIDwvY29tcGxleENvbnRlbnQ+CisgICA8L2NvbXBsZXhUeXBlPgorICAgPCEtLSAvUmVxdWVzdEFic3RyYWN0VHlwZSAtLT4KK1xlbmR2ZXJiYXRpbQorICovCisKKworY2xhc3MgWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGUgOiBwdWJsaWMgWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGUgeworCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisKK3Byb3RlY3RlZDoKKworCVhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlKCkge307CisKK3B1YmxpYzoKKworCXZpcnR1YWwgflhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlKCkge307CisKKwkvKiogQG5hbWUgR2V0dGVyIEludGVyZmFjZSBNZXRob2RzICovCisJLy9AeworCisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGdldEVsZW1lbnQodm9pZCkgY29uc3QgPSAwOworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgT3JpZ2luYWwgUmVxdWVzdCBJZCBmb3IgdGhlIE1lc3NhZ2UKKwkgKgorCSAqIEZvciB0cmFuc2FjdGlvbnMgdGhhdCB1c2UgbXVsdGlwdCByZXF1ZXN0L3Jlc3BvbnNlIHNlc3Npb25zIChlLmcuCisJICogdHdvIHN0YWdlIGNvbW1pdCBvciBhc3luY3Jvbm91cyBwcm9jZXNzaW5nKSwgdGhpcyBhdHRyaWJ1dGUgY2FuIGJlCisJICogdXNlZCB0byBpZGVudGlmeSB0aGUgaWQgb2YgdGhlIG9yaWdpbmFsIG1lc3NhZ2UgdGhhdCB3YXMgcHJvY2Vzc2VkLgorCSAqCisJICogQHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBPcmlnaW5hbCBSZXF1ZXN0IElkIHN0cmluZyAob3duZWQgYnkgdGhlIGxpYnJhcnkpCisJICovCisKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0T3JpZ2luYWxSZXF1ZXN0SWQodm9pZCkgY29uc3QgPSAwOworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgUmVzcG9uc2VMaW1pdCBzaXplCisJICoKKwkgKiBBIGNsaWVudCBjYW4gbGltaXQgdGhlIG51bWJlciBvZiBrZXlzIHRvIGJlIHJldHVybmVkIGJ5IHRoZSBzZXJ2aWNlIGJ5CisJICogc2V0dGluZyB0aGlzIHZhbHVlIHRvIHRoZSByZXF1aXJlZCBsaW1pdC4KKwkgKgorCSAqIEByZXR1cm5zIFZhbHVlIG9mIHRoZSBSZXNwb25zZUxpbWl0IHdpdGhpbiB0aGUgbWVzc2FnZS4gIDAgaWYgbm9uZSB3YXMgc2V0CisJICovCisKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRSZXNwb25zZUxpbWl0KHZvaWQpIGNvbnN0ID0gMDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBTZXR0ZXIgaW50ZXJmYWNlIG1ldGhvZHMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgU2V0IHRoZSBPcmlnaW5hbCBSZXFldXN0IElkIGZvciB0aGUgTWVzc2FnZQorCSAqCisJICogQWxsb3dzIGEgY2FsbGluZyBhcHBsaWNhdGlvbiB0byBzZXQgYSBuZXcgb3JpZ2luYWwgcmVxdWVzdCBJZCBmb3IgdGhlCisJICogbWVzc2FnZQorCSAqIAorCSAqIEBwYXJhbSBpZCBUaGUgSWQgdG8gc2V0IGFzIHRoZSBPcmlnaW5hbFJlcXVlc3RJZAorCSAqLworCisJdmlydHVhbCB2b2lkIHNldE9yaWdpbmFsUmVxdWVzdElkKGNvbnN0IFhNTENoICogaWQpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBTZXQgdGhlIFJlc3BvbnNlTGltaXQgc2l6ZQorCSAqCisJICogQSBjbGllbnQgY2FuIGxpbWl0IHRoZSBudW1iZXIgb2Yga2V5cyB0byBiZSByZXR1cm5lZCBieSB0aGUgc2VydmljZSBieQorCSAqIHNldHRpbmcgdGhpcyB2YWx1ZSB0byB0aGUgcmVxdWlyZWQgbGltaXQuCisJICoKKwkgKiBAcGFyYW0gbGltaXQgVmFsdWUgdG8gc2V0IHRoZSBSZXNwb25zZUxpbWl0IHdpdGhpbiB0aGUgbWVzc2FnZQorCSAqLworCisJdmlydHVhbCB2b2lkIHNldFJlc3BvbnNlTGltaXQodW5zaWduZWQgaW50IGxpbWl0KSA9IDA7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgXDxSZXNwb25kV2l0aFw+IGhhbmRsaW5nICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIE51bWJlciBvZiBSZXNwb25kV2l0aCBlbGVtZW50cyBpbiB0aGlzIFJlcXVlc3QKKwkgKgorCSAqIFJldHVybnMgdGhlIG51bWJlciBvZiBSZXNwb25kV2l0aCBlbGVtZW50cyBoZWxkIHdpdGhpbiB0aGlzIHJlcXVlc3QKKwkgKgorCSAqIEByZXR1cm5zIE51bWJlciBvZiBSZXNwb25kV2l0aCBlbGVtZW50cworCSAqLworCisJdmlydHVhbCBpbnQgZ2V0UmVzcG9uZFdpdGhTaXplKHZvaWQpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIG50aCBpdGVtIGluIHRoZSBSZXNwb25kV2l0aCBsaXN0CisJICoKKwkgKiBAcGFyYW0gaXRlbSBUaGUgaXRlbSB0byByZXR1cm4KKwkgKiBAcmV0dXJucyB0aGUgbnRoIGl0ZW0gaW4gdGhlIFJlc3BvbmRXaXRoIGxpc3QuCisJICoKKwkgKi8KKworCXZpcnR1YWwgWEtNU1Jlc3BvbmRXaXRoICogZ2V0UmVzcG9uZFdpdGhJdGVtKGludCBpdGVtKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBzdHJpbmcgb2YgdGhlIG50aCBpdGVtIGluIHRoZSBSZXNwb25kV2l0aCBsaXN0CisJICoKKwkgKiBAcGFyYW0gaXRlbSBUaGUgaXRlbSB3aG9zZSBzdHJpbmcgaXMgdG8gYmUgcmV0dXJuZWQKKwkgKiBAcmV0dXJucyB0aGUgc3RyaW5nIG9mIHRoZSBudGggaXRlbSBpbiB0aGUgUmVzcG9uZFdpdGggbGlzdC4KKwkgKgorCSAqLworCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldFJlc3BvbmRXaXRoSXRlbVN0cihpbnQgaXRlbSkgPSAwOworCisJLyoqCisJICogXGJyaWVmIEFwcGVuZCBhbiBpdGVtIHRvIHRoZSBSZXNwb25kV2l0aCBsaXN0CisJICoKKwkgKiBAcGFyYW0gaXRlbSBYS01TUmVzcG9uZFdpdGggb2JqZWN0IHRvIGFwcGVuZCB0byB0aGUgbGlzdC4KKwkgKiBAbm90ZSBPbmNlIHBhc3NlZCBpbiwgdGhpcyBpdGVtIHdpbGwgYmUgb3duZWQgYnkgdGhlIGxpYnJhcnkuCisJICovCisKKwl2aXJ0dWFsIHZvaWQgYXBwZW5kUmVzcG9uZFdpdGhJdGVtKFhLTVNSZXNwb25kV2l0aCAqIGl0ZW0pID0gMDsKKworCS8qKgorCSAqIFxicmllZiBTaG9ydGN1dCBmb3IgYXBwZW5kaW5nIGFuIGl0ZW0gdG8gdGhlIFJlc3BvbmRXaXRoIGxpc3QKKwkgKgorCSAqIEBwYXJhbSBpdGVtIFN0cmluZyB0byBjcmVhdGUgYSBSZXNwb25kV2l0aCBlbGVtZW50IGFyb3VuZCBhbmQgCisJICogYXBwZW5kIHRvIHRoZSBsaXN0LgorCSAqLworCisJdmlydHVhbCB2b2lkIGFwcGVuZFJlc3BvbmRXaXRoSXRlbShjb25zdCBYTUxDaCAqIGl0ZW0pID0gMDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBcPFJlc3BvbnNlTWVjaGFuaXNtXD4gaGFuZGxpbmcgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgTnVtYmVyIG9mIFJlc3BvbnNlTWVjaGFuaXNtIGVsZW1lbnRzIGluIHRoaXMgUmVxdWVzdAorCSAqCisJICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIFJlc3BvbnNlTWVjaGFuaXNtIGVsZW1lbnRzIGhlbGQgd2l0aGluIHRoaXMgcmVxdWVzdAorCSAqCisJICogQHJldHVybnMgTnVtYmVyIG9mIFJlc3BvbnNlTWVjaGFuaXNtIGVsZW1lbnRzCisJICovCisKKwl2aXJ0dWFsIGludCBnZXRSZXNwb25zZU1lY2hhbmlzbVNpemUodm9pZCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgbnRoIGl0ZW0gaW4gdGhlIFJlc3BvbnNlTWVjaGFuaXNtIGxpc3QKKwkgKgorCSAqIEBwYXJhbSBpdGVtIFRoZSBpdGVtIHRvIHJldHVybgorCSAqIEByZXR1cm5zIHRoZSBudGggaXRlbSBpbiB0aGUgUmVzcG9uc2VNZWNoYW5pc20gbGlzdC4KKwkgKgorCSAqLworCisJdmlydHVhbCBYS01TUmVzcG9uc2VNZWNoYW5pc20gKiBnZXRSZXNwb25zZU1lY2hhbmlzbUl0ZW0oaW50IGl0ZW0pID0gMDsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIHN0cmluZyBvZiB0aGUgbnRoIGl0ZW0gaW4gdGhlIFJlc3BvbnNlTWVjaGFuaXNtIGxpc3QKKwkgKgorCSAqIEBwYXJhbSBpdGVtIFRoZSBpdGVtIHdob3NlIHN0cmluZyBpcyB0byBiZSByZXR1cm5lZAorCSAqIEByZXR1cm5zIHRoZSBzdHJpbmcgb2YgdGhlIG50aCBpdGVtIGluIHRoZSBSZXNwb25kV2l0aCBsaXN0LgorCSAqCisJICovCisKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0UmVzcG9uc2VNZWNoYW5pc21JdGVtU3RyKGludCBpdGVtKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgQXBwZW5kIGFuIGl0ZW0gdG8gdGhlIFJlc3BvbnNlTWVjaGFuaXNtIGxpc3QKKwkgKgorCSAqIEBwYXJhbSBpdGVtIFhLTVNSZXNwb25zZU1lY2hhbmlzbSBvYmplY3QgdG8gYXBwZW5kIHRvIHRoZSBsaXN0LgorCSAqIEBub3RlIE9uY2UgcGFzc2VkIGluLCB0aGlzIGl0ZW0gd2lsbCBiZSBvd25lZCBieSB0aGUgbGlicmFyeS4KKwkgKi8KKworCXZpcnR1YWwgdm9pZCBhcHBlbmRSZXNwb25zZU1lY2hhbmlzbUl0ZW0oWEtNU1Jlc3BvbnNlTWVjaGFuaXNtICogaXRlbSkgPSAwOworCisJLyoqCisJICogXGJyaWVmIFNob3J0Y3V0IGZvciBhcHBlbmRpbmcgYW4gaXRlbSB0byB0aGUgUmVzcG9uc2VNZWNoYW5pc20gbGlzdAorCSAqCisJICogQHBhcmFtIGl0ZW0gU3RyaW5nIHRvIGNyZWF0ZSBhIFJlc3BvbnNlTWVjaGFuaXNtIGVsZW1lbnQgYXJvdW5kIGFuZCAKKwkgKiBhcHBlbmQgdG8gdGhlIGxpc3QuCisJICovCisKKwl2aXJ0dWFsIHZvaWQgYXBwZW5kUmVzcG9uc2VNZWNoYW5pc21JdGVtKGNvbnN0IFhNTENoICogaXRlbSkgPSAwOworCisJLyoqCisJICogXGJyaWVmIFJlbW92ZSBhIFJlc3BvbnNlTWVjaGFuaXNtCisJICoKKwkgKiBSZW1vdmVzIHRoZSBpZGVudGlmaWVkIFJlc3BvbnNlTWVjaGFuaXNtIGZyb20gdGhlIGl0ZW0KKwkgKgorCSAqIEBwYXJhbSBpdGVtIEl0ZW0gdG8gcmVtb3ZlCisJICovCisKKwl2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVzcG9uc2VNZWNoYW5pc21JdGVtKGludCBpdGVtKSA9IDA7CisKKwkvL0B9CisKK3ByaXZhdGU6CisKKwkvLyBVbmltcGxlbWVudGVkCisJWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGUoY29uc3QgWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGUgJik7CisJWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGUgJiBvcGVyYXRvciA9IChjb25zdCBYS01TUmVxdWVzdEFic3RyYWN0VHlwZSAmKTsKKworfTsKKworI2VuZGlmIC8qIFhLTVNSRVFVRVNUQUJTVFJBQ1RUWVBFX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvWEtNU1Jlc3BvbmRXaXRoLmhwcCBiL2Mvc3JjL3hrbXMvWEtNU1Jlc3BvbmRXaXRoLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2IxNTk3Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9YS01TUmVzcG9uZFdpdGguaHBwCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TUmVzcG9uZFdpdGg6PSBJbnRlcmZhY2UgZm9yIFJlc3BvbmRXaXRoIGVsZW1lbnRzCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhLTVNSRVNQT05EV0lUSF9JTkNMVURFCisjZGVmaW5lIFhLTVNSRVNQT05EV0lUSF9JTkNMVURFCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGUuaHBwPgorCisvKioKKyAqIEBpbmdyb3VwIHhrbXMKKyAqLworCisvKioKKyAqIEBicmllZiBJbnRlcmZhY2UgZGVmaW5pdGlvbiBmb3IgdGhlIFJlc3BvbmRXaXRoIGVsZW1lbnQKKyAqCisgKiBUaGUgXDxSZXNwb25kV2l0aFw+IGlzIGEgdmVyeSBzaW1wbGUgZWxlbWVudCBzdHJ1Y3R1cmUgdGhhdAorICogYWxsb3dzIGEgcmVxdWVzdG9yIHRvIGluc3RydWN0IHRoZSBzZXJ2aWNlIG9uIHdoYXQga2luZCBvZiBpbmZvcm1hdGlvbgorICogaXMgdG8gYmUgcHJlc2VudGVkIGJhY2sgdG8gdGhlIGNhbGxlci4KKyAqCisgKiBUaGUgc2NoZW1hIGRlZmluaXRpb24gZm9yIFJlc3BvbmRXaXRoIGlzIGFzIGZvbGxvd3MgOgorICoKKyAqIFx2ZXJiYXRpbQorICAgPCEtLSBSZXNwb25kV2l0aCAtLT4KKyAgIDxlbGVtZW50IG5hbWU9IlJlc3BvbmRXaXRoIiB0eXBlPSJRTmFtZSIvPgorICAgPCEtLSAvUmVzcG9uZFdpdGggLS0+CitcZW5kdmVyYmF0aW0KKyAqLworCisKK2NsYXNzIFhLTVNSZXNwb25kV2l0aCB7CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworcHJvdGVjdGVkOgorCisJWEtNU1Jlc3BvbmRXaXRoKCkge307CisKK3B1YmxpYzoKKworCXZpcnR1YWwgflhLTVNSZXNwb25kV2l0aCgpIHt9OworCisJLyoqIEBuYW1lIEdldHRlciBJbnRlcmZhY2UgTWV0aG9kcyAqLworCS8vQHsKKworCS8qCisJICogXGJyaWVmIE9idGFpbiB0aGUgZWxlbWVudCBhdCB0aGUgaGVhZCBvZiB0aGlzIHN0cnVjdHVyZQorCSAqCisJICogQHJldHVybnMgdGhlIG93bmluZyBFbGVtZW50IGZvciB0aGlzIHN0cnVjdHVyZQorCSAqLworCisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGdldEVsZW1lbnQodm9pZCkgY29uc3QgPSAwOworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgUmVzcG9uZFdpdGggc3RyaW5nIGZvciB0aGlzIGVsZW1lbnQKKwkgKgorCSAqIEVhY2ggUmVzcG9uZFdpdGggZWxlbWVudCBoYXMgYSB0ZXh0IG5vZGUgdGhhdCBkZWZpbmVzIHRoZSBLZXkgdHlwZSB0bworCSAqIGJlIHJldHVybmVkLgorCSAqCisJICogQHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBSZXNwb25kV2l0aCBzdHJpbmcgZm9yIHRoaXMgZWxlbWVudCAtIG5vdGUgdGhhdCB0aGUKKwkgKiB4a21zIG5hbWVzcGFjZSBwYXJ0IG9mIHRoZSBRTmFtZSAoaWYgYW55KSBpcyBzdHJpcHBlZCBhd2F5LgorCSAqLworCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldFJlc3BvbmRXaXRoU3RyaW5nKHZvaWQpIGNvbnN0ID0gMDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBTZXR0ZXIgaW50ZXJmYWNlIG1ldGhvZHMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgU2V0IHRoZSBTdHJpbmcgd2l0aGluIHRoZSBSZXNwb25kV2l0aCBlbGVtZW50CisJICoKKwkgKiBBbGxvd3MgYSBjYWxsaW5nIGFwcGxpY2F0aW9uIHRvIHNldCBhIG5ldyBSZXNwb25kV2l0aCBzdHJpbmcKKwkgKiAKKwkgKiBAcGFyYW0gc3RyIFRoZSBzdHJpbmcgdG8gc2V0IChvdmVyd3JpdGluZyBhbnkgcHJldmlvdXMgdmFsdWUpLiAgRG8gbm90IGFkZAorCSAqIGFueSBsb2NhbCBuYW1lIHBhcnQgLSB0aGlzIHdpbGwgYmUgYWRkZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uLgorCSAqIEBub3RlIFRoZSBsaWJyYXJ5IGRvZXMgbm90IGNoZWNrIHRoYXQgdGhlIHN0cmluZyBpcyBhIHZhbHVlIFJlc3BvbmRXaXRoIHN0cmluZy4KKwkgKi8KKworCXZpcnR1YWwgdm9pZCBzZXRSZXNwb25kV2l0aFN0cmluZyhjb25zdCBYTUxDaCAqIHN0cikgPSAwOworCisJLy9AfQorCisKK3ByaXZhdGU6CisKKwkvLyBVbmltcGxlbWVudGVkCisJWEtNU1Jlc3BvbmRXaXRoKGNvbnN0IFhLTVNSZXNwb25kV2l0aCAmKTsKKwlYS01TUmVzcG9uZFdpdGggJiBvcGVyYXRvciA9IChjb25zdCBYS01TUmVzcG9uZFdpdGggJik7CisKK307CisKKyNlbmRpZiAvKiBYS01TUkVTUE9ORFdJVEhfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9YS01TUmVzcG9uc2VNZWNoYW5pc20uaHBwIGIvYy9zcmMveGttcy9YS01TUmVzcG9uc2VNZWNoYW5pc20uaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyMTQ5MWYKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL1hLTVNSZXNwb25zZU1lY2hhbmlzbS5ocHAKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNSZXNwb25zZU1lY2hhbmlzbTo9IEludGVyZmFjZSBmb3IgUmVzcG9uc2VNZWNoYW5pc20gZWxlbWVudHMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEtNU1JFU1BPTlNFTUVDSEFOSVNNX0lOQ0xVREUKKyNkZWZpbmUgWEtNU1JFU1BPTlNFTUVDSEFOSVNNX0lOQ0xVREUKKworLy8gWFNFQyBJbmNsdWRlcworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TTWVzc2FnZUFic3RyYWN0VHlwZS5ocHA+CisKKy8qKgorICogQGluZ3JvdXAgeGttcworICovCisKKy8qKgorICogQGJyaWVmIEludGVyZmFjZSBkZWZpbml0aW9uIGZvciB0aGUgUmVzcG9uc2VNZWNoYW5pc20gZWxlbWVudAorICoKKyAqIFRoZSBcPFJlc3BvbnNlTWVjaGFuaXNtXD4gaXMgYSB2ZXJ5IHNpbXBsZSBlbGVtZW50IHN0cnVjdHVyZSB0aGF0CisgKiBhbGxvd3MgYSByZXF1ZXN0b3IgdG8gcGFzcyBleHRlbmRlZCBwcm90b2NvbCBpbmZvcm1hdGlvbgorICoKKyAqIFRoZSBzY2hlbWEgZGVmaW5pdGlvbiBmb3IgUmVzcG9uc2VNZWNoYW5pc20gaXMgYXMgZm9sbG93cyA6CisgKgorICogXHZlcmJhdGltCisgICA8IS0tIFJlc3BvbnNlTWVjaGFuaXNtIC0tPgorICAgPGVsZW1lbnQgbmFtZT0iUmVzcG9uc2VNZWNoYW5pc20iIHR5cGU9IlFOYW1lIi8+CisgICA8IS0tIC9SZXNwb25zZU1lY2hhbmlzbSAtLT4KK1xlbmR2ZXJiYXRpbQorICovCisKKworY2xhc3MgWEtNU1Jlc3BvbnNlTWVjaGFuaXNtIHsKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCitwcm90ZWN0ZWQ6CisKKwlYS01TUmVzcG9uc2VNZWNoYW5pc20oKSB7fTsKKworcHVibGljOgorCisJdmlydHVhbCB+WEtNU1Jlc3BvbnNlTWVjaGFuaXNtKCkge307CisKKwkvKiogQG5hbWUgR2V0dGVyIEludGVyZmFjZSBNZXRob2RzICovCisJLy9AeworCisJLyoKKwkgKiBcYnJpZWYgT2J0YWluIHRoZSBlbGVtZW50IGF0IHRoZSBoZWFkIG9mIHRoaXMgc3RydWN0dXJlCisJICoKKwkgKiBAcmV0dXJucyB0aGUgb3duaW5nIEVsZW1lbnQgZm9yIHRoaXMgc3RydWN0dXJlCisJICovCisKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogZ2V0RWxlbWVudCh2b2lkKSBjb25zdCA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBSZXNwb25zZU1lY2hhbmlzbSBzdHJpbmcgZm9yIHRoaXMgZWxlbWVudAorCSAqCisJICogRWFjaCBSZXNwb25zZU1lY2hhbmlzbSBlbGVtZW50IGhhcyBhIHRleHQgbm9kZSB0aGF0IGRlZmluZXMgdGhlIEtleSB0eXBlIHRvCisJICogYmUgcmV0dXJuZWQuCisJICoKKwkgKiBAcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIFJlc3BvbnNlTWVjaGFuaXNtIHN0cmluZyBmb3IgdGhpcyBlbGVtZW50IC0gbm90ZSB0aGF0IHRoZQorCSAqIHhrbXMgbmFtZXNwYWNlIHBhcnQgb2YgdGhlIFFOYW1lIChpZiBhbnkpIGlzIHN0cmlwcGVkIGF3YXkuCisJICovCisKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0UmVzcG9uc2VNZWNoYW5pc21TdHJpbmcodm9pZCkgY29uc3QgPSAwOworCisJLy9AfQorCisJLyoqIEBuYW1lIFNldHRlciBpbnRlcmZhY2UgbWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBTZXQgdGhlIFN0cmluZyB3aXRoaW4gdGhlIFJlc3BvbnNlTWVjaGFuaXNtIGVsZW1lbnQKKwkgKgorCSAqIEFsbG93cyBhIGNhbGxpbmcgYXBwbGljYXRpb24gdG8gc2V0IGEgbmV3IFJlc3BvbnNlTWVjaGFuaXNtIHN0cmluZworCSAqIAorCSAqIEBwYXJhbSBzdHIgVGhlIHN0cmluZyB0byBzZXQgKG92ZXJ3cml0aW5nIGFueSBwcmV2aW91cyB2YWx1ZSkuICBEbyBub3QgYWRkCisJICogYW55IGxvY2FsIG5hbWUgcGFydCAtIHRoaXMgd2lsbCBiZSBhZGRlZCBieSB0aGUgbGlicmFyeS4KKwkgKiBAbm90ZSBUaGUgbGlicmFyeSBkb2VzIG5vdCBjaGVjayB0aGF0IHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBSZXNwb25zZU1lY2hhbmlzbSBzdHJpbmcuCisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0UmVzcG9uc2VNZWNoYW5pc21TdHJpbmcoY29uc3QgWE1MQ2ggKiBzdHIpID0gMDsKKworCS8vQH0KKworCitwcml2YXRlOgorCisJLy8gVW5pbXBsZW1lbnRlZAorCVhLTVNSZXNwb25zZU1lY2hhbmlzbShjb25zdCBYS01TUmVzcG9uc2VNZWNoYW5pc20gJik7CisJWEtNU1Jlc3BvbnNlTWVjaGFuaXNtICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU1Jlc3BvbnNlTWVjaGFuaXNtICYpOworCit9OworCisjZW5kaWYgLyogWEtNU1JFU1BPTlNFTUVDSEFOSVNNX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvWEtNU1Jlc3VsdC5ocHAgYi9jL3NyYy94a21zL1hLTVNSZXN1bHQuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0MWViNTYKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL1hLTVNSZXN1bHQuaHBwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNSZXN1bHQgOj0gSW50ZXJmYWNlIGZvciBSZXN1bHQgTWVzc2FnZXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEtNU1JFU1VMVF9JTkNMVURFCisjZGVmaW5lIFhLTVNSRVNVTFRfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNSZXN1bHRUeXBlLmhwcD4KKworLyoqCisgKiBAaW5ncm91cCB4a21zCisgKi8KKworLyoqCisgKiBAYnJpZWYgSW50ZXJmYWNlIGRlZmluaXRpb24gZm9yIHRoZSBSZXN1bHQgZWxlbWVudHMKKyAqCisgKiBUaGUgXDxSZXN1bHRcPiBpcyB1c2VkIHdoZW4gYW4gWEtNUyBzZXJ2aWNlIGNhbm5vdCByZXR1cm4gYSByZXN1bHQKKyAqIG9mIGEgbW9yZSBzcGVjaWZpYyB0eXBlIC0gZS5nLiB3aGVuIGEgcGVuZGluZyByZXF1ZXN0IGNvbWVzIGluIGZvciB3aGljaAorICogdGhlcmUgaXMgbm8gcmVzdWx0LiAgSXQgaXMgYSBzdHJhaWdodCBpbnN0YW50aWF0aW9uIG9mIHRoZSBSZXN1bHRUeXBlCisgKi8KKworY2xhc3MgWEtNU1Jlc3VsdCA6IHB1YmxpYyBYS01TUmVzdWx0VHlwZSB7CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworcHJvdGVjdGVkOgorCisJWEtNU1Jlc3VsdCgpIHt9OworCitwdWJsaWM6CisKKwl2aXJ0dWFsIH5YS01TUmVzdWx0KCkge307CisKKwkvKiogQG5hbWUgR2V0dGVyIEludGVyZmFjZSBNZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFJldHVybiB0aGUgZWxlbWVudCBhdCB0aGUgYmFzZSBvZiB0aGUgbWVzc2FnZQorCSAqLworCisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGdldEVsZW1lbnQodm9pZCkgY29uc3QgPSAwOworCisJLy9AfQorCitwcml2YXRlOgorCisJLy8gVW5pbXBsZW1lbnRlZAorCVhLTVNSZXN1bHQoY29uc3QgWEtNU1Jlc3VsdCAmKTsKKwlYS01TUmVzdWx0ICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU1Jlc3VsdCAmKTsKKworfTsKKworI2VuZGlmIC8qIFhLTVNSRVNVTFRfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9YS01TUmVzdWx0VHlwZS5ocHAgYi9jL3NyYy94a21zL1hLTVNSZXN1bHRUeXBlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGY5YmRjCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9YS01TUmVzdWx0VHlwZS5ocHAKQEAgLTAsMCArMSwyMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNSZXN1bHRUeXBlIDo9IEludGVyZmFjZSBmb3IgYmFzZSBzY2hlbWEgb2YgWEtNUyBSZXF1ZXN0IG1lc3NhZ2VzCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhLTVNSRVNVTFRUWVBFX0lOQ0xVREUKKyNkZWZpbmUgWEtNU1JFU1VMVFRZUEVfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNNZXNzYWdlQWJzdHJhY3RUeXBlLmhwcD4KKworLyoqCisgKiBAaW5ncm91cCB4a21zCisgKi8KKworLyoqCisgKiBAYnJpZWYgSW50ZXJmYWNlIGRlZmluaXRpb24gZm9yIHRoZSBSZXN1bHRUeXBlCisgKgorICogVGhlIFw8UmVzdWx0VHlwZVw+IGlzIHRoZSBiYXNlIHR5cGUgb24gd2hpY2ggUmVzdWx0IG1lc3NhZ2VzCisgKiBhcmUgYnVpbHQuICAoVGhlIFw8UmVzdWx0XD4gZWxlbWVudCBpcyBhIGRpcmVjdCBpbXBsZW1lbnRhdGlvbikKKyAqCisgKiBUaGUgc2NoZW1hIGRlZmluaXRpb24gZm9yIFJlc3VsdFR5cGUgaXMgYXMgZm9sbG93cyA6CisgKgorICogXHZlcmJhdGltCisgICA8IS0tIFJlc3VsdFR5cGUgLS0+CisgICA8ZWxlbWVudCBuYW1lPSJSZXN1bHQiIHR5cGU9InhrbXM6UmVzdWx0VHlwZSIvPgorICAgPGNvbXBsZXhUeXBlIG5hbWU9IlJlc3VsdFR5cGUiPgorICAgICAgPGNvbXBsZXhDb250ZW50PgorICAgICAgICAgPGV4dGVuc2lvbiBiYXNlPSJ4a21zOk1lc3NhZ2VBYnN0cmFjdFR5cGUiPgorICAgICAgICAgICAgPHNlcXVlbmNlPgorICAgICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJ4a21zOlJlcXVlc3RTaWduYXR1cmVWYWx1ZSIgbWluT2NjdXJzPSIwIi8+CisgICAgICAgICAgICA8L3NlcXVlbmNlPgorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJSZXN1bHRNYWpvciIgdHlwZT0iUU5hbWUiIHVzZT0icmVxdWlyZWQiLz4KKyAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iUmVzdWx0TWlub3IiIHR5cGU9IlFOYW1lIiB1c2U9Im9wdGlvbmFsIi8+CisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9IlJlcXVlc3RJZCIgdHlwZT0iTkNOYW1lIiB1c2U9Im9wdGlvbmFsIi8+CisgICAgICAgICA8L2V4dGVuc2lvbj4KKyAgICAgIDwvY29tcGxleENvbnRlbnQ+CisgICA8L2NvbXBsZXhUeXBlPgorICAgPCEtLSAvUmVzdWx0VHlwZSAtLT4KK1xlbmR2ZXJiYXRpbQorICovCisKKworY2xhc3MgWEtNU1Jlc3VsdFR5cGUgOiBwdWJsaWMgWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGUgeworCitwdWJsaWM6CisKKwkvKioKKwkgKiBcYnJpZWYgRGVmaW5pdGlvbiBvZiBNYWpvciBSZXN1bHQgY29kZXMKKwkgKi8KKworCWVudW0gUmVzdWx0TWFqb3IgeworCQlOb25lTWFqb3I9MCwJCS8qKiBObyBjb2RlIC0gZXJyb3IhICovCisJCVN1Y2Nlc3MsICAgCQkJLyoqIEZpbmFsIC0gVGhlIG9wZXJhdGlvbiBzdWNjZWVkZWQuICovCisJCVZlcnNpb25NaXNtYXRjaCwgCS8qKiBGaW5hbCAtIFRoZSBzZXJ2aWNlIGRvZXMgbm90IHN1cHBvcnQgdGhlIHByb3RvY29sIHZlcnNpb24gc3BlY2lmaWVkIGluIHRoZSByZXF1ZXN0LiovCisJCVNlbmRlciwJCQkJLyoqIEZpbmFsIC0gQW4gZXJyb3Igb2NjdXJyZWQgdGhhdCB3YXMgZHVlIHRvIHRoZSBtZXNzYWdlIHNlbnQgYnkgdGhlIHNlbmRlci4gKi8KKwkJUmVjZWl2ZXIsIAkJCS8qKiBGaW5hbCAtIEFuIGVycm9yIG9jY3VycmVkIGF0IHRoZSByZWNlaXZlci4gKi8KKwkJUmVwcmVzZW50LCAJCQkvKiogTm90IEZpbmFsIC0gVGhlIHNlcnZpY2UgaGFzIG5vdCBhY3RlZCBvbiB0aGUgcmVxdWVzdC4gSW4gb3JkZXIgZm9yIHRoZSByZXF1ZXN0IHRvIGJlIGFjdGVkIHVwb24gdGhlIHJlcXVlc3QgTVVTVCBiZSByZXByZXNlbnRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgbm9uY2UgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0d28gcGhhc2UgcHJvdG9jb2wgKi8KKwkJUGVuZGluZwkJCQkvKiogVGhlIHJlcXVlc3QgaGFzIGJlZW4gYWNjZXB0ZWQgZm9yIHByb2Nlc3NpbmcgYW5kIHRoZSBzZXJ2aWNlIHdpbGwgcmV0dXJuIHRoZSByZXN1bHQgYXN5bmNocm9ub3VzbHkgKi8KKwl9OworCisJZW51bSBSZXN1bHRNaW5vciB7CisJCU5vbmVNaW5vcj0wLAkJLyoqIE5vIGNvZGUgLSBubyBjb2RlIHdhcyByZXR1cm5lZCAqLworCQlOb01hdGNoLCAgIAkgICAJICAgIC8qKiBObyBtYXRjaCB3YXMgZm91bmQgZm9yIHRoZSBzZWFyY2ggcHJvdG90eXBlIHByb3ZpZGVkLgorCQkJCQkJCSAgICBTdWNjZXNzIAlUaGUgcmVzdWx0IGNvZGUgU3VjY2Vzcy5Ob01hdGNoIGluZGljYXRlcyB0aGF0IHRoZSBzZXJ2aWNlIGlzIGF1dGhvcml0YXRpdmUgZm9yIHRoZSBzZWFyY2ggcHJvdG90eXBlIHNwZWNpZmllZCBhbmQgdGhhdCB0aGUgc2VydmljZSBwb3NpdGl2ZWx5IGFzc2VydHMgdGhhdCBubyBtYXRjaGVzIGV4aXN0LgorCQkJCQkJCQlSZWNlaXZlciAJVGhlIHJlc3VsdCBjb2RlIFJlY2VpdmVyLk5vTWF0Y2ggaW5kaWNhdGVzIHRoYXQgdGhlIHNlcnZpY2UgaXMgbm90IGF1dGhvcml0YXRpdmUgZm9yIHRoZSBzZWFyY2ggcHJvdG90eXBlIHByb3ZpZGVkLiovCisJCVRvb01hbnlSZXNwb25zZXMsIAkvKiogVGhlIHJlcXVlc3QgcmVzdWx0ZWQgaW4gdGhlIG51bWJlciBvZiByZXNwb25zZXMgdGhhdCBleGNlZWRlZCBlaXRoZXIgIHRoZSBSZXNwb25zZUxpbWl0IHZhbHVlIHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdCBvciBzb21lIG90aGVyIGxpbWl0IGRldGVybWluZWQgYnkgdGhlIHNlcnZpY2UuIFRoZSBzZXJ2aWNlIE1BWSBlaXRoZXIgcmV0dXJuIGEgc3Vic2V0IG9mIHRoZSBwb3NzaWJsZSByZXNwb25zZXMgb3Igbm9uZSBhdCBhbGwuCisJCQkJCQkJCVN1Y2Nlc3MgCVRoZSBzZXJ2aWNlIGhhcyByZXR1cm5lZCBvbmUgb3IgbW9yZSByZXNwb25zZXMgdGhhdCByZXByZXNlbnQgYSBzdWJzZXQgb2YgdGhlIHBvc3NpYmxlIHJlc3BvbnNlcy4KKwkJCQkJCQkJUmVjZWl2ZXIgCVRoZSBzZXJ2aWNlIGhhcyByZXR1cm5lZCBubyByZXNwb25zZXMuICovCisJCUluY29tcGxldGUsIAkJLyoqIFN1Y2Nlc3MgCU9ubHkgcGFydCBvZiB0aGUgaW5mb3JtYXRpb24gcmVxdWVzdGVkIGNvdWxkIGJlIHByb3ZpZGVkLiAqLworCQlGYWlsdXJlLCAJICAJCS8qKiBUaGUgc2VydmljZSBhdHRlbXB0ZWQgdG8gcGVyZm9ybSB0aGUgcmVxdWVzdCBidXQgdGhlIG9wZXJhdGlvbiBmYWlsZWQgZm9yIHVuc3BlY2lmaWVkIHJlYXNvbnMuCisJCQkJCQkJCVNlbmRlciAJVGhlIHJlYXNvbiBmb3IgZmFpbHVyZSBpcyBhdHRyaWJ1dGVkIHRvIHRoZSBzZW5kZXIgKGUuZy4gdGhlIHJlcXVlc3QgZmFpbGVkIHNjaGVtYSB2YWxpZGF0aW9uKS4KKwkJCQkJCQkJUmVjZWl2ZXIgCVRoZSByZWFzb24gZm9yIGZhaWx1cmUgaXMgYXR0cmlidXRlZCB0byB0aGUgcmVjZWl2ZXIgKGUuZy4gYSBkYXRhYmFzZSBsb29rdXAgZmFpbGVkKS4qLworCQlSZWZ1c2VkLCAJICAJCS8qKiBUaGUgb3BlcmF0aW9uIHdhcyByZWZ1c2VkLiBUaGUgc2VydmljZSBkaWQgbm90IGF0dGVtcHQgdG8gcGVyZm9ybSB0aGUgcmVxdWVzdC4KKwkJCQkJCQkJU2VuZGVyIAlUaGUgc2VuZGVyIGZhaWxlZCB0byBwcm92aWRlIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24gdG8gYXV0aGVudGljYXRlIG9yIGF1dGhvcml6ZSB0aGUgcmVxdWVzdCAoZS5nLiBwYXltZW50IG5vdCBzdXBwbGllZCkKKwkJCQkJCQkJUmVjZWl2ZXIgCVRoZSByZWNlaXZlciBpcyBjdXJyZW50bHkgcmVmdXNpbmcgY2VydGFpbiByZXF1ZXN0cyBmb3IgdW5zcGVjaWZpZWQgcmVhc29ucy4gKi8KKwkJTm9BdXRoZW50aWNhdGlvbiwgCS8qKiBTZW5kZXIgCVRoZSBvcGVyYXRpb24gd2FzIHJlZnVzZWQgYmVjYXVzZSB0aGUgbmVjZXNzYXJ5IGF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9uIHdhcyBpbmNvcnJlY3Qgb3IgbWlzc2luZy4qLworCQlNZXNzYWdlTm90U3VwcG9ydGVkLC8qKiBTZW5kZXIgCVRoZSByZWNlaXZlciBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIHNwZWNpZmllZCBvcGVyYXRpb24uICovCisJCVVua25vd25SZXNwb25zZUlkLCAJLyoqIFNlbmRlciAJVGhlIFJlc3BvbnNlSWQgZm9yIHdoaWNoIHBlbmRpbmcgc3RhdHVzIHdhcyByZXF1ZXN0ZWQgaXMgdW5rbm93biB0byB0aGUgc2VydmljZS4qLworCQlSZXByZXNlbnRSZXF1aXJlZCwgCS8qKiBTZW5kZXIgCVRoZSByZXNwb25kZXIgcmVxdWlyZXMgdGhhdCB0aGUgc2VuZGVyIG9mZmVyIHRoZSByZXByZXNlbnQgcHJvdG9jb2wgb3B0aW9uIGluIG9yZGVyIHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QuKi8KKwkJTm90U3luY2hyb25vdXMgCQkvKiogUmVjZWl2ZXIgCVRoZSByZWNlaXZlciBkb2VzIG5vdCBzdXBwb3J0IHN5bmNocm9ub3VzIHByb2Nlc3Npbmcgb2YgdGhpcyB0eXBlIG9mIHJlcXVlc3QgKi8KKwl9OworCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisKK3Byb3RlY3RlZDoKKworCVhLTVNSZXN1bHRUeXBlKCkge307CisKK3B1YmxpYzoKKworCXZpcnR1YWwgflhLTVNSZXN1bHRUeXBlKCkge307CisKKwkvKiogQG5hbWUgR2V0dGVyIEludGVyZmFjZSBNZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIEdldCB0aGUgUmVzdWx0TWFqb3IgY29kZSBmb3IgdGhlIG1lc3NhZ2UKKwkgKgorCSAqIEFsbCByZXN1bHQgbWVzc2FnZXMgY29udGFpbiBhIE1ham9yIFJlc3VsdCBjb2RlIGRlZmluaW5nIHRoZSBvdmVyYWxsCisJICogc3RhdHVzIG9mIHRoZSByZXF1ZXN0IHBlcmZvcm1lZCBieSB0aGUgY2xpZW50CisJICoKKwkgKiBAcmV0dXJucyBUaGUgUmVzdWx0TWFqb3IgY29kZQorCSAqLworCisJdmlydHVhbCBSZXN1bHRNYWpvciBnZXRSZXN1bHRNYWpvcih2b2lkKSBjb25zdCA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBSZXN1bHRNaW5vciBjb2RlIGZvciB0aGUgbWVzc2FnZQorCSAqCisJICogTWVzc2FnZXMgbWF5IGNvbnRhaW4gYSBtaW5vciByZXN1bHQgY29kZSB0aGF0IGJldHRlciBkZWZpbmVzIHRoZSByZXN1bHQKKwkgKiByZXR1cm5lZCBpbiB0aGUgUmVzdWx0TWFqb3IgY29kZQorCSAqCisJICogQHJldHVybnMgVGhlIFJlc3VsdE1pbm9yIGNvZGUKKwkgKi8KKworCXZpcnR1YWwgUmVzdWx0TWlub3IgZ2V0UmVzdWx0TWlub3Iodm9pZCkgY29uc3QgPSAwOworCisJLyoqCisJICogXGJyaWVmIE9idGFpbiB0aGUgUmVxdWVzdElkIGF0dHJpYnV0ZQorCSAqCisJICogVGhlIFJlcXVlc3RJZCBhdHRyaWJ1dGUgbWF0Y2hlcyB0aGUgSWQgb2YgdGhlIHJlcXVlc3QgbWVzc2FnZSB0byB3aGljaAorCSAqIHRoaXMgcmVzcG9uc2UgaXMgcmVsYXRlZC4KKwkgKgorCSAqIEByZXR1cm5zIHRoZSBSZXF1ZXN0SWQgc3RyaW5nCisJICovCisKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0UmVxdWVzdElkKHZvaWQpIGNvbnN0ID0gMDsKKworCS8qKgorCSAqIFxicmllZiBPYnRhaW4gdGhlIHZhbHVlIG9mIHRoZSBSZXF1ZXN0U2lnbmF0dXJlVmFsdWUgZWxlbWVudAorCSAqCisJICogQSByZXF1ZXN0IGNhbiBoYXZlIGEgUmVzcG9uc2VNZWNoYW5pc20gb2YgUmVxdWVzdFNpZ25hdHVyZVZhbHVlLiAgV2hlbiB0aGlzCisJICogaXMgc2V0LCB0aGUgc2VydmljZSBjYW4gcGxhY2UgdGhlIHRleHQgd2l0aGluIHRoZSBTaWduYXR1cmVWYWx1ZSBlbGVtZW50IGludG8KKwkgKiB0aGUgUmVzdWx0LiAgVGhpcyBjYWxsIGFsbG93cyBhIGNvbnN1bWVyIG9mIHRoZSByZXN1bHQgdG8gZmluZCB0aGUgdmFsdWUKKwkgKgorCSAqIEByZXR1cm5zIFRoZSBvcmlnaW5hbCBzaWduYXR1cmUgdGhhdCB3YXMgb24gdGhlIHJlcXVlc3QgbWVzc2FnZQorCSAqLworCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldFJlcXVlc3RTaWduYXR1cmVWYWx1ZSh2b2lkKSBjb25zdCA9IDA7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgU2V0dGVyIGludGVyZmFjZSBtZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFNldCBhIG5ldyB2YWx1ZSBmb3IgdGhlIFJlc3VsdE1ham9yIG9mIHRoaXMgcmVzcG9uc2UKKwkgKgorCSAqIEBwYXJhbSBybWFqIE5ldyB2YWx1ZSBmb3IgUmVzdWx0TWFqb3IgZm9yIHRoaXMgbWVzc2FnCisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0UmVzdWx0TWFqb3IoUmVzdWx0TWFqb3Igcm1haikgPSAwOworCisJLyoqCisJICogXGJyaWVmIFNldCBhIG5ldyB2YWx1ZSBmb3IgdGhlIFJlc3VsdE1pbm9yIG9mIHRoaXMgcmVzcG9uc2UKKwkgKgorCSAqIEBwYXJhbSBybWluIE5ldyB2YWx1ZSBmb3IgUmVzdWx0TWFqb3IgZm9yIHRoaXMgbWVzc2FnZQorCSAqLworCisJdmlydHVhbCB2b2lkIHNldFJlc3VsdE1pbm9yKFJlc3VsdE1pbm9yIHJtaW4pID0gMDsKKworCS8qKgorCSAqIFxicmllZiBTZXQgdGhlIFJlcXVlc3QgSWQgZm9yIHRoZSBNZXNzYWdlCisJICoKKwkgKiBBbGxvd3MgYSBjYWxsaW5nIGFwcGxpY2F0aW9uIHRvIHNldCBhIG5ldyByZXF1ZXN0IElkIGZvciB0aGUKKwkgKiBtZXNzYWdlCisJICogCisJICogQHBhcmFtIGlkIFRoZSBJZCB0byBzZXQgYXMgdGhlIFJlcXVlc3RJZAorCSAqLworCisJdmlydHVhbCB2b2lkIHNldFJlcXVlc3RJZChjb25zdCBYTUxDaCAqIGlkKSA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgU2V0IHRoZSB2YWx1ZSBvZiB0aGUgUmVxdWVzdFNpZ25hdHVyZVZhbHVlIGVsZW1lbnQKKwkgKgorCSAqIEEgcmVxdWVzdCBjYW4gaGF2ZSBhIFJlc3BvbnNlTWVjaGFuaXNtIG9mIFJlcXVlc3RTaWduYXR1cmVWYWx1ZS4gIFdoZW4gdGhpcworCSAqIGlzIHNldCwgdGhlIHNlcnZpY2UgY2FuIHBsYWNlIHRoZSB0ZXh0IHdpdGhpbiB0aGUgU2lnbmF0dXJlVmFsdWUgZWxlbWVudCBpbnRvCisJICogdGhlIFJlc3VsdC4gIFRoaXMgY2FsbCBhbGxvd3MgYSBzZXJ2aWNlIHRvIHNldCB0aGlzIHZhbHVlIGluIGEgcmVzcG9uc2UKKwkgKgorCSAqIEBwYXJhbSB2YWx1ZSBUaGUgYmFzZTY0IGVuY29kZWQgc2lnbmF0dXJlIHZhbHVlIG9mIHRoZSBvcmlnaW5hbCByZXF1ZXN0CisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0UmVxdWVzdFNpZ25hdHVyZVZhbHVlKGNvbnN0IFhNTENoICogdmFsdWUpID0gMDsKKworCS8vQH0KKworCitwcml2YXRlOgorCisJLy8gVW5pbXBsZW1lbnRlZAorCVhLTVNSZXN1bHRUeXBlKGNvbnN0IFhLTVNSZXN1bHRUeXBlICYpOworCVhLTVNSZXN1bHRUeXBlICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU1Jlc3VsdFR5cGUgJik7CisKK307CisKKyNlbmRpZiAvKiBYS01TUkVTVUxUVFlQRV9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL1hLTVNSZXZva2VLZXlCaW5kaW5nLmhwcCBiL2Mvc3JjL3hrbXMvWEtNU1Jldm9rZUtleUJpbmRpbmcuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmZTQ2ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL1hLTVNSZXZva2VLZXlCaW5kaW5nLmhwcApAQCAtMCwwICsxLDk0IEBACisvKg0KKyAqIENvcHlyaWdodCAyMDA2IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKg0KKyAqIFhTRUMNCisgKg0KKyAqIFhLTVNSZXZva2VLZXlCaW5kaW5nIDo9IEludGVyZmFjZSBmb3IgS2V5QmluZGluZyBlbGVtZW50cw0KKyAqDQorICogJElkOiQNCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgWEtNU1JFVk9LRUtFWUJJTkRJTkdfSU5DTFVERQ0KKyNkZWZpbmUgWEtNU1JFVk9LRUtFWUJJTkRJTkdfSU5DTFVERQ0KKw0KKy8vIFhTRUMgSW5jbHVkZXMNCisNCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGUuaHBwPg0KKw0KKy8qKg0KKyAqIEBpbmdyb3VwIHhrbXMNCisgKi8NCisNCisvKioNCisgKiBAYnJpZWYgSW50ZXJmYWNlIGRlZmluaXRpb24gZm9yIHRoZSBSZXZva2VLZXlCaW5kaW5nIGVsZW1lbnRzDQorICoNCisgKiBUaGUgXDxSZXZva2VLZXlCaW5kaW5nXD4gRWxlbWVudCBpcyB1c2VkIGluIGEgcmVxdWVzdCB0byByZXZva2UNCisgKiBhIHBhcnRpY3VsYXIga2V5IGZyb20gYW4gWEtSUyBzZXJ2aWNlDQorICoNCisgKiBUaGUgc2NoZW1hIGRlZmluaXRpb24gZm9yIFJldm9rZUtleUJpbmRpbmcgaXMgYXMgZm9sbG93cyA6DQorICoNCisgKiBcdmVyYmF0aW0NCisgICA8IS0tIFJldm9rZUtleUJpbmRpbmcgLS0+DQorICAgPGVsZW1lbnQgbmFtZT0iUmV2b2tlS2V5QmluZGluZyIgdHlwZT0ieGttczpLZXlCaW5kaW5nVHlwZSIvPg0KKyAgIDwhLS0gL1Jldm9rZUtleUJpbmRpbmcgLS0+XGVuZHZlcmJhdGltDQorICovDQorDQorY2xhc3MgWEtNU1N0YXR1czsNCisNCitjbGFzcyBYS01TUmV2b2tlS2V5QmluZGluZyA6IHB1YmxpYyBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZSB7DQorDQorCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovDQorCS8vQHsNCisNCitwcm90ZWN0ZWQ6DQorDQorCVhLTVNSZXZva2VLZXlCaW5kaW5nKCkge307DQorDQorcHVibGljOg0KKw0KKwl2aXJ0dWFsIH5YS01TUmV2b2tlS2V5QmluZGluZygpIHt9Ow0KKw0KKwkvL0B9DQorDQorCS8qKiBAbmFtZSBTdGF0dXMgaGFuZGxpbmcgKi8NCisJLy9Aew0KKw0KKwkvKioNCisJICogXGJyaWVmIE9idGFpbiB0aGUgc3RhdHVzIGVsZW1lbnQgZm9yIHRoaXMgS2V5QmluZGluZw0KKwkgKg0KKwkgKiBUaGUgXDxTdGF0dXNcPiBlbGVtZW50IGlzIHVzZWQgdG8gZGVzY3JpYmUgdG8gdGhlIGNhbGxlciB0aGUNCisJICogdmFsaWRpdHkgb2YgdGhleSBrZXkgYmVpbmcgZGVzY3JpYmVkLiAgVGhpcyBjYWxsIGlzIHVzZWQgdG8NCisJICogb2J0YWluIHRoZSBzdGF0dXMgZWxlbWVudA0KKwkgKg0KKwkgKiBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgWEtNU1N0YXR1cyBlbGVtZW50DQorCSAqLw0KKw0KKwl2aXJ0dWFsIFhLTVNTdGF0dXMgKiBnZXRTdGF0dXModm9pZCkgY29uc3QgPSAwOw0KKw0KKwkvL0B9DQorDQorcHJpdmF0ZToNCisNCisJLy8gVW5pbXBsZW1lbnRlZA0KKwlYS01TUmV2b2tlS2V5QmluZGluZyhjb25zdCBYS01TUmV2b2tlS2V5QmluZGluZyAmKTsNCisJWEtNU1Jldm9rZUtleUJpbmRpbmcgJiBvcGVyYXRvciA9IChjb25zdCBYS01TUmV2b2tlS2V5QmluZGluZyAmKTsNCisNCit9Ow0KKw0KKyNlbmRpZiAvKiBYS01TUkVWT0tFS0VZQklORElOR19JTkNMVURFICovDQpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9YS01TUmV2b2tlUmVxdWVzdC5ocHAgYi9jL3NyYy94a21zL1hLTVNSZXZva2VSZXF1ZXN0LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDU0Y2EzCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9YS01TUmV2b2tlUmVxdWVzdC5ocHAKQEAgLTAsMCArMSwxNzkgQEAKKy8qDQorICogQ29weXJpZ2h0IDIwMDYgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qDQorICogWFNFQw0KKyAqDQorICogWEtNU1Jldm9rZVJlcXVlc3QgOj0gSW50ZXJmYWNlIGZvciBSZWdpc3RlclJlcXVlc3QgTWVzc2FnZXMNCisgKg0KKyAqICRJZCQNCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgWEtNU1JFVk9LRVJFUVVFU1RfSU5DTFVERQ0KKyNkZWZpbmUgWEtNU1JFVk9LRVJFUVVFU1RfSU5DTFVERQ0KKw0KKy8vIFhTRUMgSW5jbHVkZXMNCisNCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGUuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1N0YXR1cy5ocHA+DQorDQorY2xhc3MgRFNJR1NpZ25hdHVyZTsNCitjbGFzcyBYS01TQXV0aGVudGljYXRpb247DQorY2xhc3MgWEtNU1Jldm9rZUtleUJpbmRpbmc7DQorDQorLyoqDQorICogQGluZ3JvdXAgeGttcw0KKyAqLw0KKw0KKy8qKg0KKyAqIEBicmllZiBJbnRlcmZhY2UgZGVmaW5pdGlvbiBmb3IgdGhlIFJldm9rZVJlcXVlc3QgZWxlbWVudHMNCisgKg0KKyAqIFRoZSBcPFJldm9rZVJlcXVlc3RcPiBpcyBvbmUgb2YgdGhlIG1lc3NhZ2UgdHlwZXMgb2YNCisgKiB0aGUgWC1LUk1TIHNlcnZpY2UuICBJdCBpcyB1c2VkIHdoZW4gYSBjbGllbnQgd2lzaGVzIHRvIHJldm9rZQ0KKyAqIGEga2V5IGtub3duIHRvIHRoZSBzZXJ2aWNlLg0KKyAqDQorICogVGhlIHNjaGVtYSBkZWZpbml0aW9uIGZvciBSZXZva2VSZXF1ZXN0IGlzIGFzIGZvbGxvd3MgOg0KKyAqDQorICogXHZlcmJhdGltDQorICAgPCEtLSBSZXZva2VSZXF1ZXN0IC0tPg0KKyAgIDxlbGVtZW50IG5hbWU9IlJldm9rZVJlcXVlc3QiIHR5cGU9InhrbXM6UmV2b2tlUmVxdWVzdFR5cGUiLz4NCisgICA8Y29tcGxleFR5cGUgbmFtZT0iUmV2b2tlUmVxdWVzdFR5cGUiPg0KKyAgICAgIDxjb21wbGV4Q29udGVudD4NCisgICAgICAgICA8ZXh0ZW5zaW9uIGJhc2U9InhrbXM6UmVxdWVzdEFic3RyYWN0VHlwZSI+DQorICAgICAgICAgICAgPHNlcXVlbmNlPg0KKyAgICAgICAgICAgICAgIDxlbGVtZW50IHJlZj0ieGttczpSZXZva2VLZXlCaW5kaW5nIi8+DQorICAgICAgICAgICAgICAgPGNob2ljZT4NCisgICAgICAgICAgICAgICAgICA8ZWxlbWVudCByZWY9InhrbXM6QXV0aGVudGljYXRpb24iLz4NCisgICAgICAgICAgICAgICAgICA8ZWxlbWVudCByZWY9InhrbXM6UmV2b2NhdGlvbkNvZGUiLz4NCisgICAgICAgICAgICAgICA8L2Nob2ljZT4NCisgICAgICAgICAgICA8L3NlcXVlbmNlPg0KKyAgICAgICAgIDwvZXh0ZW5zaW9uPg0KKyAgICAgIDwvY29tcGxleENvbnRlbnQ+DQorICAgPC9jb21wbGV4VHlwZT4NCisgICA8ZWxlbWVudCBuYW1lPSJSZXZva2VLZXlCaW5kaW5nIiB0eXBlPSJ4a21zOktleUJpbmRpbmdUeXBlIi8+DQorICAgPCEtLSAvUmV2b2tlUmVxdWVzdCAtLT4NCitcZW5kdmVyYmF0aW0NCisgKi8NCisNCitjbGFzcyBYS01TUmV2b2tlUmVxdWVzdCA6IHB1YmxpYyBYS01TUmVxdWVzdEFic3RyYWN0VHlwZSB7DQorDQorCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovDQorCS8vQHsNCisNCitwcm90ZWN0ZWQ6DQorDQorCVhLTVNSZXZva2VSZXF1ZXN0KCkge307DQorDQorcHVibGljOg0KKw0KKwl2aXJ0dWFsIH5YS01TUmV2b2tlUmVxdWVzdCgpIHt9Ow0KKw0KKwkvKiogQG5hbWUgR2V0dGVyIEludGVyZmFjZSBNZXRob2RzICovDQorCS8vQHsNCisNCisJLyoqDQorCSAqIFxicmllZiBSZXR1cm4gdGhlIGVsZW1lbnQgYXQgdGhlIGJhc2Ugb2YgdGhlIG1lc3NhZ2UNCisJICovDQorDQorCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBnZXRFbGVtZW50KHZvaWQpIGNvbnN0ID0gMDsNCisNCisJLyoqDQorCSAqIFxicmllZiBPYnRhaW4gdGhlIFByb3RvdHlwS2V5QmluZGluZyBlbGVtZW50DQorCSAqDQorCSAqIFRoZSBQcm90b3R5cGVLZXlCaW5kaW5nIGVsZW1lbnQgaXMgdGhlIGNvcmUgb2YgdGhlIFJlZ2lzdGVyUmVxdWVzdCBtZXNzYWdlLCBhbmQNCisJICogZGVmaW5lcyB0aGUga2V5IGluZm9ybWF0aW9uIHRoYXQgd2lsbCBiZSBzZW50IHRvIHRoZSBzZXJ2ZXIgZm9yIHJlZ2lzdHJhdGlvbi4NCisJICoNCisJICogQHJldHVybnMgQSBwb2ludGVyIHRvIHRoZSBYS01TUHJvdG90eXBlS2V5QmluZGluZyBlbGVtZW50DQorCSAqLw0KKw0KKwl2aXJ0dWFsIFhLTVNSZXZva2VLZXlCaW5kaW5nICogZ2V0UmV2b2tlS2V5QmluZGluZyh2b2lkKSBjb25zdCA9IDA7DQorDQorCS8qKg0KKwkgKiBcYnJpZWYgR2V0IHRoZSBBdXRoZW50aWNhdGlvbiBlbGVtZW50DQorCSAqDQorCSAqIFRoZSBBdXRoZW50aWNhdGlvbiBlbGVtZW50IG9mIHRoZSBSZWdpc3RlclJlcXVlc3QgaXMgdXNlZCBieSB0aGUgY2xpZW50IHRvDQorCSAqIGF1dGhlbnRpY2F0ZSB0aGUgcmVxdWVzdCB0byB0aGUgc2VydmVyLg0KKwkgKg0KKwkgKiBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgQXV0aGVudGljYXRpb24gc3RydWN0dXJlIA0KKwkgKi8NCisNCisJdmlydHVhbCBYS01TQXV0aGVudGljYXRpb24gKiBnZXRBdXRoZW50aWNhdGlvbiAodm9pZCkgY29uc3QgPSAwOw0KKw0KKwkvKioNCisJICogXGJyaWVmIEdldCB0aGUgcmV2b2NhdGlvbiBjb2RlIGZvciB0aGUgcmVxdWVzdA0KKwkgKg0KKwkgKiBUaGlzIGVsZW1lbnQgaXMgdXNlZCBieSB0aGUgY2xpZW50IHRvIHByb3ZpZGUgYSBNQUMgb2YgYSBwYXNzIHBocmFzZSB0aGF0DQorCSAqIHByb3ZlcyB0byB0aGUgc2VydmljZSB0aGEgdGhlIGNsaWVudCBoYXMgdGhlIGF1dGhvcml0eSB0byByZXZva2UgdGhpcw0KKwkgKiBrZXkuDQorCSAqDQorCSAqIEByZXR1cm4gQSBwb2ludGVyIHRvIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGJhc2U2NCBlbmNvZGVkDQorCSAqIHJldm9jYXRpb24gY29kZSwgb3IgTlVMTCBpZiBub25lIHdhcyBkZWZpbmVkDQorCSAqLw0KKw0KKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0UmV2b2NhdGlvbkNvZGUodm9pZCkgY29uc3QgPSAwOw0KKw0KKwkvL0B9DQorDQorCS8qKiBAbmFtZSBTZXR0ZXIgSW50ZXJmYWNlIE1ldGhvZHMgKi8NCisJLy9Aew0KKw0KKwkvKiogXGJyaWVmIEFkZCBhIFJldm9rZUtleUJpbmRpbmcgZWxlbWVudA0KKwkgKg0KKwkgKiBTZXQgYSBSZXZva2VLZXlCaW5kaW5nIGVsZW1lbnQgaW4gdGhlIFJlcXVlc3QgbWVzc2FnZS4gIFRoZSByZXR1cm5lZA0KKwkgKiBvYmplY3QgY2FuIGJlIG1hbmlwdWxhdGVkIHRvIGFkZCBLZXlJbmZvIGVsZW1lbnRzIHRvIHRoZSBSZXF1ZXN0Lg0KKwkgKg0KKwkgKiBAcGFyYW0gc3RhdHVzIFRoZSBzdGF0dXMgdmFsdWUgdG8gYWRkIGludG8gdGhlIFJldm9rZUtleUJpbmRpbmcgc3RydWN0dXJlDQorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgbmV3bHkgY3JlYXRlZCBSZXZva2VLZXlCaW5kaW5nIG9iamVjdCwgb3INCisJICogdGhlIHBvaW50ZXIgdG8gZXh0YW50IG9iamVjdCBpZiBvbmUgYWxyZWFkeSBleGlzdGVkLg0KKwkgKi8NCisNCisJdmlydHVhbCBYS01TUmV2b2tlS2V5QmluZGluZyAqIGFkZFJldm9rZUtleUJpbmRpbmcoWEtNU1N0YXR1czo6U3RhdHVzVmFsdWUgc3RhdHVzKSA9IDA7DQorDQorCS8qKiBcYnJpZWYgQWRkIGFuIEF1dGhlbnRpY2F0aW9uIGVsZW1lbnQNCisJICoNCisJICogU2V0IGEgQXV0aGVudGljYXRpb24gZWxlbWVudCBpbiB0aGUgUmVxdWVzdCBtZXNzYWdlLiAgVGhlIHJldHVybmVkDQorCSAqIG9iamVjdCBjYW4gYmUgbWFuaXB1bGF0ZWQgdG8gYWRkIEF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9uIHRvIHRoZSByZXF1ZXN0Lg0KKwkgKg0KKwkgKiBAcmV0dXJucyBBIHBvaW50ZXIgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgQXV0aGVudGljYXRvbiBvYmplY3QsIG9yDQorCSAqIHRoZSBwb2ludGVyIHRvIGV4dGFudCBvYmplY3QgaWYgb25lIGFscmVhZHkgZXhpc3RlZC4NCisJICovDQorDQorCXZpcnR1YWwgWEtNU0F1dGhlbnRpY2F0aW9uICogYWRkQXV0aGVudGljYXRpb24odm9pZCkgPSAwOw0KKw0KKwkvKioNCisJICogXGJyaWVmIEFkZCBhIFJldm9jYXRpb25Db2RlIHRvIHRoZSBtZXNzYWdlDQorCSAqDQorCSAqIEFsbG93cyB0aGUgY2xpZW50IHRvIGFkZCBhIG5ldyBSZXZvY2F0aW9uIENvZGUgc3RyaW5nDQorCSAqIFJldm9rZVJlcXVlc3QgZWxlbWVudA0KKwkgKg0KKwkgKiBAcGFyYW0gY29kZSB0aGUgYmFzZTY0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZXZvY2F0aW9uIGNvZGUNCisJICovDQorDQorCXZpcnR1YWwgdm9pZCBhZGRSZXZvY2F0aW9uQ29kZShjb25zdCBYTUxDaCAqIGNvZGUpID0gMDsNCisJDQorCS8vQH0NCisNCitwcml2YXRlOg0KKw0KKwkvLyBVbmltcGxlbWVudGVkDQorCVhLTVNSZXZva2VSZXF1ZXN0KGNvbnN0IFhLTVNSZXZva2VSZXF1ZXN0ICYpOw0KKwlYS01TUmV2b2tlUmVxdWVzdCAmIG9wZXJhdG9yID0gKGNvbnN0IFhLTVNSZXZva2VSZXF1ZXN0ICYpOw0KKw0KK307DQorDQorI2VuZGlmIC8qIFhLTVNSRVZPS0VSRVFVRVNUX0lOQ0xVREUgKi8NCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL1hLTVNSZXZva2VSZXN1bHQuaHBwIGIvYy9zcmMveGttcy9YS01TUmV2b2tlUmVzdWx0LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzcwM2MzCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9YS01TUmV2b2tlUmVzdWx0LmhwcApAQCAtMCwwICsxLDEzNSBAQAorLyoNCisgKiBDb3B5cmlnaHQgMjAwNiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoNCisgKiBYU0VDDQorICoNCisgKiBYS01TUmV2b2tlUmVzdWx0IDo9IEludGVyZmFjZSBmb3IgUmVnaXN0ZXJSZXN1bHQgTWVzc2FnZXMNCisgKg0KKyAqICRJZDokDQorICoNCisgKi8NCisNCisjaWZuZGVmIFhLTVNSRVZPS0VSRVNVTFRfSU5DTFVERQ0KKyNkZWZpbmUgWEtNU1JFVk9LRVJFU1VMVF9JTkNMVURFDQorDQorLy8gWFNFQyBJbmNsdWRlcw0KKw0KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+DQorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TUmVzdWx0VHlwZS5ocHA+DQorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TU3RhdHVzLmhwcD4NCisNCitjbGFzcyBYS01TS2V5QmluZGluZzsNCisNCisvKioNCisgKiBAaW5ncm91cCB4a21zDQorICovDQorDQorLyoqDQorICogQGJyaWVmIEludGVyZmFjZSBkZWZpbml0aW9uIGZvciB0aGUgUmVnaXN0ZXJSZXN1bHQgZWxlbWVudHMNCisgKg0KKyAqIFRoZSBcPFJlZ2lzdGVyUmVzdWx0XD4gaXMgdXNlZCBieSB0aGUgWC1LUlNTIHNlcnZpY2UgdG8gcmVzcG9uc2UgdG8NCisgKiBhIHVzZXIgcmVxdWVzdCB0byByZWdpc3RlciBhIG5ldyBrZXkgd2l0aCB0aGUgc2VydmljZS4NCisgKg0KKyAqIFRoZSBzY2hlbWEgZGVmaW5pdGlvbiBmb3IgUmVnaXN0ZXJSZXN1bHQgaXMgYXMgZm9sbG93cyA6DQorICoNCisgKiBcdmVyYmF0aW0NCisgICA8IS0tIFJldm9rZVJlc3VsdCAtLT4NCisgICA8ZWxlbWVudCBuYW1lPSJSZXZva2VSZXN1bHQiIHR5cGU9InhrbXM6UmV2b2tlUmVzdWx0VHlwZSIvPg0KKyAgIDxjb21wbGV4VHlwZSBuYW1lPSJSZXZva2VSZXN1bHRUeXBlIj4NCisgICAgICA8Y29tcGxleENvbnRlbnQ+DQorICAgICAgICAgPGV4dGVuc2lvbiBiYXNlPSJ4a21zOlJlc3VsdFR5cGUiPg0KKyAgICAgICAgICAgIDxzZXF1ZW5jZT4NCisgICAgICAgICAgICAgICA8ZWxlbWVudCByZWY9InhrbXM6S2V5QmluZGluZyIgbWluT2NjdXJzPSIwIg0KKyAgICAgICAgICAgICAgICAgICAgIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+DQorICAgICAgICAgICAgPC9zZXF1ZW5jZT4NCisgICAgICAgICA8L2V4dGVuc2lvbj4NCisgICAgICA8L2NvbXBsZXhDb250ZW50Pg0KKyAgIDwvY29tcGxleFR5cGU+DQorICAgPCEtLSAvUmV2b2tlUmVzdWx0IC0tPg0KK1xlbmR2ZXJiYXRpbQ0KKyAqLw0KKw0KK2NsYXNzIFhLTVNSZXZva2VSZXN1bHQgOiBwdWJsaWMgWEtNU1Jlc3VsdFR5cGUgew0KKw0KKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLw0KKwkvL0B7DQorDQorcHJvdGVjdGVkOg0KKw0KKwlYS01TUmV2b2tlUmVzdWx0KCkge307DQorDQorcHVibGljOg0KKw0KKwl2aXJ0dWFsIH5YS01TUmV2b2tlUmVzdWx0KCkge307DQorDQorCS8qKiBAbmFtZSBHZXR0ZXIgSW50ZXJmYWNlIE1ldGhvZHMgKi8NCisJLy9Aew0KKw0KKwkvKioNCisJICogXGJyaWVmIFJldHVybiB0aGUgZWxlbWVudCBhdCB0aGUgYmFzZSBvZiB0aGUgbWVzc2FnZQ0KKwkgKi8NCisNCisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGdldEVsZW1lbnQodm9pZCkgY29uc3QgPSAwOw0KKw0KKwkvL0B9DQorDQorCS8qKiBAbmFtZSBLZXlCaW5kaW5nIGhhbmRsaW5nICAqLw0KKwkvL0B7DQorDQorCS8qKg0KKwkgKiBcYnJpZWYgRmluZCBudW1iZXIgb2YgS2V5QmluZGluZyBlbGVtZW50cw0KKwkgKg0KKwkgKiBAcmV0dXJucyB0aGUgbnVtYmVyIG9mIEtleUJpbmRpbmcgaXRlbXMgd2l0aGluIHRoZSBSZWdpc3RlclJlc3VsdA0KKwkgKi8NCisNCisJdmlydHVhbCBpbnQgZ2V0S2V5QmluZGluZ1NpemUodm9pZCkgY29uc3QgPSAwOw0KKw0KKwkvKg0KKwkgKiBcYnJpZWYgT2J0YWluIGFuIEtleUJpbmRpbmcgaXRlbQ0KKwkgKg0KKwkgKiBAcGFyYW0gaXRlbSBJbmRleCBvZiB0aGUgaXRlbSB0byByZXR1cm4gKDAgPSBmaXJzdCBlbGVtZW50KQ0KKwkgKiBAcmV0dXJucyB0aGUgS2V5QmluZGluZyByZWZlcmVuY2VkIGJ5ICJpdGVtIg0KKwkgKi8NCisNCisJdmlydHVhbCBYS01TS2V5QmluZGluZyAqIGdldEtleUJpbmRpbmdJdGVtKGludCBpdGVtKSBjb25zdCA9IDA7DQorDQorCS8qDQorCSAqIFxicmllZiBBcHBlbmQgYSBuZXcgS2V5QmluZGluZyBlbGVtZW50DQorCSAqDQorCSAqIEFsbG93cyBjYWxsZXJzIHRvIGFwcGVuZCBhIG5ldyBLZXlCaW5kaW5nIGl0ZW0uDQorCSAqIFRoZSBpdGVtIGlzIGluaXRpYWxseSBlbXB0eSBvZiBLZXlJbmZvIGVsZW1lbnRzIC0gdGhlc2UgbXVzdCBiZSBhZGRlZA0KKwkgKiBieSB0aGUgY2FsbGVyLg0KKwkgKg0KKwkgKiBAcGFyYW0gc3RhdHVzIFRoZSBzdGF0dXMgKFZhbGlkLCBJbnZhbGlkIG9yIEluZGV0ZXJtaW5hdGUpIG9mIHRoaXMNCisJICoga2V5DQorCSAqIEByZXR1cm5zIHRoZSBuZXdseSBjcmVhdGVkIEtleUJpbmRpbmcgb2JqZWN0IChhbHJlYWR5IGluc2VydGVkDQorCSAqIGluIHRoZSBSZWdpc3RlclJlc3VsdA0KKwkgKi8NCisNCisJdmlydHVhbCBYS01TS2V5QmluZGluZyAqIGFwcGVuZEtleUJpbmRpbmdJdGVtKFhLTVNTdGF0dXM6OlN0YXR1c1ZhbHVlIHN0YXR1cykgPSAwOw0KKw0KKwkvL0B9DQorDQorcHJpdmF0ZToNCisNCisJLy8gVW5pbXBsZW1lbnRlZA0KKwlYS01TUmV2b2tlUmVzdWx0KGNvbnN0IFhLTVNSZXZva2VSZXN1bHQgJik7DQorCVhLTVNSZXZva2VSZXN1bHQgJiBvcGVyYXRvciA9IChjb25zdCBYS01TUmV2b2tlUmVzdWx0ICYpOw0KKw0KK307DQorDQorI2VuZGlmIC8qIFhLTVNSRVZPS0VSRVNVTFRfSU5DTFVERSAqLw0KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvWEtNU1N0YXR1cy5ocHAgYi9jL3NyYy94a21zL1hLTVNTdGF0dXMuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwOTIyMDYKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL1hLTVNTdGF0dXMuaHBwCkBAIC0wLDAgKzEsMTcwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TU3RhdHVzIDo9IEludGVyZmFjZSBmb3IgU3RhdHVzIGVsZW1lbnRzIChpbiBLZXlCaW5kaW5nKQorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYS01TU1RBVFVTX0lOQ0xVREUKKyNkZWZpbmUgWEtNU1NUQVRVU19JTkNMVURFCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKworLyoqCisgKiBAaW5ncm91cCB4a21zCisgKi8KKworLyoqCisgKiBAYnJpZWYgSW50ZXJmYWNlIGRlZmluaXRpb24gZm9yIHRoZSBTdGF0dXMgZWxlbWVudHMKKyAqCisgKiBUaGUgXDxTdGF0dXNcPiBFbGVtZW50IGlzIHVzZWQgaW4gYSBLZXlCaW5kaW5nIG1lc3NhZ2UgdG8gYSBjbGllbnQKKyAqIHRvIHByb3ZpZGUgc3RhdHVzIGluZm9ybWF0aW9uIGZvciBrZXlzIHRoYXQgYXJlIHJldHVybmVkIGluIGEKKyAqIFZhbGlkYXRlUmVzdWx0IG1lc3NhZ2UKKyAqCisgKiBUaGUgc2NoZW1hIGRlZmluaXRpb24gZm9yIEtleUJpbmRpbmcgaXMgYXMgZm9sbG93cyA6CisgKgorICogXHZlcmJhdGltCisgICA8IS0tIFN0YXR1cyAtLT4KKyAgIDxlbGVtZW50IG5hbWU9IlN0YXR1cyIgdHlwZT0ieGttczpTdGF0dXNUeXBlIi8+CisgICA8Y29tcGxleFR5cGUgbmFtZT0iU3RhdHVzVHlwZSI+CisgICAgICA8c2VxdWVuY2U+CisgICAgICAgICA8ZWxlbWVudCByZWY9InhrbXM6VmFsaWRSZWFzb24iIG1pbk9jY3Vycz0iMCIgCisgICAgICAgICAgICAgICBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgorICAgICAgICAgPGVsZW1lbnQgcmVmPSJ4a21zOkluZGV0ZXJtaW5hdGVSZWFzb24iIG1pbk9jY3Vycz0iMCIgCisgICAgICAgICAgICAgICBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgorICAgICAgICAgPGVsZW1lbnQgcmVmPSJ4a21zOkludmFsaWRSZWFzb24iIG1pbk9jY3Vycz0iMCIgCisgICAgICAgICAgICAgICBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgorICAgICAgPC9zZXF1ZW5jZT4KKyAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iU3RhdHVzVmFsdWUiIHR5cGU9InhrbXM6S2V5QmluZGluZ1N0YXR1cyIgCisgICAgICAgICAgICB1c2U9InJlcXVpcmVkIi8+CisgICA8L2NvbXBsZXhUeXBlPgorICAgPHNpbXBsZVR5cGUgbmFtZT0iS2V5QmluZGluZ1N0YXR1cyI+CisgICAgICA8cmVzdHJpY3Rpb24gYmFzZT0iUU5hbWUiPgorICAgICAgICAgPGVudW1lcmF0aW9uIHZhbHVlPSJ4a21zOlZhbGlkIi8+CisgICAgICAgICA8ZW51bWVyYXRpb24gdmFsdWU9InhrbXM6SW52YWxpZCIvPgorICAgICAgICAgPGVudW1lcmF0aW9uIHZhbHVlPSJ4a21zOkluZGV0ZXJtaW5hdGUiLz4KKyAgICAgIDwvcmVzdHJpY3Rpb24+CisgICA8L3NpbXBsZVR5cGU+CisgICA8IS0tIC9TdGF0dXMgLS0+CisgXGVuZHZlcmJhdGltCisgKi8KKworCitjbGFzcyBYS01TU3RhdHVzIHsKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCitwcm90ZWN0ZWQ6CisKKwlYS01TU3RhdHVzKCkge307CisKK3B1YmxpYzoKKworCXZpcnR1YWwgflhLTVNTdGF0dXMoKSB7fTsKKworCS8vQH0KKworCWVudW0gU3RhdHVzVmFsdWUgeworCisJCVN0YXR1c1VuZGVmaW5lZCA9IDAsCS8qKiBFcnJvciAtIHRoZSBzdGF0dXMgdmFsdWUgaXMgdW5kZWZpbmVkICovCisJCVZhbGlkID0gMSwJCQkJLyoqIEdvb2Qga2V5ISAqLworCQlJbnZhbGlkID0gMiwJCQkvKiogQmFkIGtleSEgKi8KKwkJSW5kZXRlcm1pbmF0ZSA9IDMJCS8qKiBTbWFybXkga2V5ISAqLworCisJfTsKKworCWVudW0gU3RhdHVzUmVhc29uIHsKKworCQlSZWFzb25VbmRlZmluZWQgPSAwLCAgICAvKiogVGhlIHJlYXNvbiBpcyB1bmRlZmluZWQgb3IgdW5rbm93biAqLworCQlJc3N1ZXJUcnVzdCA9IDEsCQkvKiogVGhlIGlzc3VlciBvZiB0aGUgaW5mbyBpcyBjb25zaWRlcmVkIGdvb2QgKi8KKwkJUmV2b2NhdGlvblN0YXR1cyA9IDIsCS8qKiBLZXkgaXMvaXMgbm90IHJldm9rZWQgKi8KKwkJVmFsaWRpdHlJbnRlcnZhbCA9IDMsCS8qKiBLZXkgbm90IGV4cGlyZWQgKi8KKwkJU2lnbmF0dXJlID0gNAkJCS8qKiBTaWduYXR1cmUgb24gdGhlIHByb3ZpZGVkIGRhdGEgaXMgZ29vZCAqLworCisJfTsKKworCS8qKiBAbmFtZSBHZXR0ZXIgbWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBHZXQgdGhlIEtleUJpbmRpbmcgc3RhdHVzIGFzc2VydGlvbgorCSAqCisJICogVGhlIFN0YXR1cyBlbGVtZW50IGhhcyBhIFN0YXR1c1ZhbHVlIGF0dHJpYnV0ZSB0aGF0IGRlZmluZXMKKwkgKiB0aGUgdmFsaWRpdHkgb2YgdGhlIGtleSBpbiBxdWVzdGlvbgorCSAqCisJICogQHJldHVybiB0aGUgc3RhdHVzIGFzc2VydGlvbgorCSAqLworCisJdmlydHVhbCBTdGF0dXNWYWx1ZSBnZXRTdGF0dXNWYWx1ZSh2b2lkKSBjb25zdCA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgRmluZCB0aGUgUmVhc29uIGZvciBhIHBhcnRpY3VsYXIgZmFjZXQgb2Ygc3RhdHVzIGNvZGVzCisJICoKKwkgKiBGb3IgZWFjaCBzdGF0dXMgcmVhc29uLCBhIFN0YXR1cyBjYW4gZGVmaW5lIGEgbnVtYmVyIG9mIHJlYXNvbnMKKwkgKiB0byByZXR1cm4gdG8gYSBjbGllbnQuICBUaGVyZSBhcmUgc29tZSBjb250cm9scyBvbiB0aGlzIChlLmcuIHlvdSBjYW5ub3QKKwkgKiBoYXZlIGFuIEludmFsaWRSZWFzb24gaWYgdGhlIGFjdHVhbCBLZXlCaW5kaW5nU3RhdHVzIGlzIFZhbGlkKSwgYnV0CisJICogeW91IGNhbiBoYXZlIHRoaW5ncyBpbiBWYWxpZFJlYXNvbiBhbmQgSW5kZXRlcm1pbmF0ZVJlYXNvbiBmb3IgYW4gSW52YWxpZAorCSAqIHJlc3VsdC4gIFRoaXMgY2FsbCBhbGxvd3MgeW91IHRvIGZpbmQgb3V0IGFib3V0IGFueSBmYWNldCBvZiBhIHJlYXNvbgorCSAqCisJICogQHBhcmFtIHN0YXR1cyBUaGUgcGFydGljdWxhciBzdGF0dXMgdmFsdWUgeW91IHdhbnQgdG8gZmluZCBhIHJlYXNvbiBmb3IKKwkgKiBAcGFyYW0gcmVhc29uIFRoZSBwYXJ0aWN1bGFyIHJlYXNvbiB0aGF0IHlvdSB3YW50IHRvIGRldGVybWluZSBpcyBvciBpcyBub3QKKwkgKiBzZXQKKwkgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHBhcnRpY3VsYXIgcmVhc29uIGlzIHNldCBmb3IgdGhlIGdpdmVuIHN0YXR1cywgZmFsc2UKKwkgKiBvdGhlcndpc2UKKwkgKi8KKworCXZpcnR1YWwgYm9vbCBnZXRTdGF0dXNSZWFzb24oU3RhdHVzVmFsdWUgc3RhdHVzLCBTdGF0dXNSZWFzb24gcmVhc29uKSBjb25zdCA9IDA7CisKKwkvL0B9CisKKwkvKiogQG5hbWUgU2V0dGVyIE1ldGhvZHMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgQWN0aXZhdGUgb3IgZGUtYWN0aXZhdGUgYSBwYXJ0aWN1bGFyIHJlYXNvbiBpbiB0aGUgc3RhdHVzIHJlc3VsdAorCSAqCisJICogRm9yIGVhY2ggc3RhdHVzIHJlYXNvbiwgYSBTdGF0dXMgY2FuIGRlZmluZSBhIG51bWJlciBvZiByZWFzb25zCisJICogdG8gcmV0dXJuIHRvIGEgY2xpZW50LiAgVGhlcmUgYXJlIHNvbWUgY29udHJvbHMgb24gdGhpcyAoZS5nLiB5b3UgY2Fubm90CisJICogaGF2ZSBhbiBJbnZhbGlkUmVhc29uIGlmIHRoZSBhY3R1YWwgS2V5QmluZGluZ1N0YXR1cyBpcyBWYWxpZCksIGJ1dAorCSAqIHlvdSBjYW4gaGF2ZSB0aGluZ3MgaW4gVmFsaWRSZWFzb24gYW5kIEluZGV0ZXJtaW5hdGVSZWFzb24gZm9yIGFuIEludmFsaWQKKwkgKiByZXN1bHQuICBUaGlzIGNhbGwgYWxsb3dzIHlvdSB0byBzZXQgYW55IGZhY2V0IG9mIGEgcmVhc29uCisJICoKKwkgKiBAcGFyYW0gc3RhdHVzIFRoZSBwYXJ0aWN1bGFyIHN0YXR1cyB2YWx1ZSB5b3Ugd2FudCB0byBzZXQgYSByZWFzb24gZm9yCisJICogQHBhcmFtIHJlYXNvbiBUaGUgcGFydGljdWxhciByZWFzb24gdGhhdCB5b3Ugd2FudCB0byBzZXQKKwkgKiBAcGFyYW0gdmFsdWUgdHJ1ZSB0byB0dXJuIG9uIHRoZSByZWFzb24sIGZhbHNlIHRvIHR1cm4gaXQgb2ZmCisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0U3RhdHVzUmVhc29uKFN0YXR1c1ZhbHVlIHN0YXR1cywgU3RhdHVzUmVhc29uIHJlYXNvbiwgYm9vbCB2YWx1ZSkgPSAwOworCisJLy9AfQorCitwcml2YXRlOgorCisJLy8gVW5pbXBsZW1lbnRlZAorCVhLTVNTdGF0dXMoY29uc3QgWEtNU1N0YXR1cyAmKTsKKwlYS01TU3RhdHVzICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU1N0YXR1cyAmKTsKKworfTsKKworI2VuZGlmIC8qIFhLTVNTVEFUVVNfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9YS01TU3RhdHVzUmVxdWVzdC5ocHAgYi9jL3NyYy94a21zL1hLTVNTdGF0dXNSZXF1ZXN0LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTQ0ODM5Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9YS01TU3RhdHVzUmVxdWVzdC5ocHAKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNTdGF0dXNSZXF1ZXN0IDo9IEludGVyZmFjZSBmb3IgU3RhdHVzUmVxdWVzdCBNZXNzYWdlcworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYS01TU1RBVFVTUkVRVUVTVF9JTkNMVURFCisjZGVmaW5lIFhLTVNTVEFUVVNSRVFVRVNUX0lOQ0xVREUKKworLy8gWFNFQyBJbmNsdWRlcworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TUmVxdWVzdEFic3RyYWN0VHlwZS5ocHA+CisKK2NsYXNzIFhLTVNRdWVyeUtleUJpbmRpbmc7CisKKy8qKgorICogQGluZ3JvdXAgeGttcworICovCisKKy8qKgorICogQGJyaWVmIEludGVyZmFjZSBkZWZpbml0aW9uIGZvciB0aGUgU3RhdHVzUmVxdWVzdCBlbGVtZW50cworICoKKyAqIFRoZSBcPFN0YXR1c1JlcXVlc3RcPiBpcyB1c2VkIGluIEFzeW5jaHJvbm91cyBwcm9jZXNzaW5nLiAgQSBjbGllbnQKKyAqIHVzZXMgdGhlIFN0YXR1c1JlcXVlc3QgZWxlbWVudCB0byByZXF1ZXN0IGEgZGV0ZXJtaW5lIHdoZXRoZXIgYQorICogcmVxdWVzdCBmb3Igd2hpY2ggdGhlIG9yaWdpbmFsIHJlc3BvbnNlIHdhcyAiUGVuZGluZyIgaXMgbm93IHJlYWR5LgorICoKKyAqIFRoZSBzY2hlbWEgZGVmaW5pdGlvbiBmb3IgU3RhdHVzUmVxdWVzdCBpcyBhcyBmb2xsb3dzIDoKKyAqCisgKiBcdmVyYmF0aW0KKyAgIDwhLS0gU3RhdHVzUmVxdWVzdCAtLT4KKyAgIDxlbGVtZW50IG5hbWU9IlN0YXR1c1JlcXVlc3QiIHR5cGU9InhrbXM6U3RhdHVzUmVxdWVzdFR5cGUiLz4KKyAgIDxjb21wbGV4VHlwZSBuYW1lPSJTdGF0dXNSZXF1ZXN0VHlwZSI+CisgICAgICA8Y29tcGxleENvbnRlbnQ+CisgICAgICAgICA8ZXh0ZW5zaW9uIGJhc2U9InhrbXM6UGVuZGluZ1JlcXVlc3RUeXBlIi8+CisgICAgICA8L2NvbXBsZXhDb250ZW50PgorICAgPC9jb21wbGV4VHlwZT4KKyAgIDwhLS0gL1N0YXR1c1JlcXVlc3QgLS0+XGVuZHZlcmJhdGltCisgKi8KKworY2xhc3MgWEtNU1N0YXR1c1JlcXVlc3QgOiBwdWJsaWMgWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGUgeworCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisKK3Byb3RlY3RlZDoKKworCVhLTVNTdGF0dXNSZXF1ZXN0KCkge307CisKK3B1YmxpYzoKKworCXZpcnR1YWwgflhLTVNTdGF0dXNSZXF1ZXN0KCkge307CisKKwkvKiogQG5hbWUgR2V0dGVyIEludGVyZmFjZSBNZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFJldHVybiB0aGUgZWxlbWVudCBhdCB0aGUgYmFzZSBvZiB0aGUgbWVzc2FnZQorCSAqLworCisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGdldEVsZW1lbnQodm9pZCkgY29uc3QgPSAwOworCisJLyoqCisJICogXGJyaWVmIFJldHVybiB0aGUgUmVzcG9uc2VJZAorCSAqCisJICogVGhlIFJlc3BvbnNlSWQgZXF1YXRlcyB0byB0aGUgSWQgb2YgdGhlIGZpcnN0IHJlc3BvbnNlIHRoZSBzZXJ2aWNlIHJldHVybmVkLAorCSAqIHdoaWNoIG11c3QgKGJ5IGRlZmluaXRpb24pIGhhdmUgaGFkIGEgcmVzcG9uc2UgY29kZSBvZiAiUGVuZGluZyIuICBUb2dldGhlcgorCSAqIHdpdGggdGhlIE9yaWdpbmFsUmVxdWVzdElkLCB0aGlzIGNhbiBiZSB1c2VkIGJ5IHRoZSBzZXJ2aWNlIHRvIHVuaXF1bGV5CisJICogaWRlbnRpZnkgdGhlIG9yaWdpbmFsIHJlcXVlc3QgZm9yIHdoaWNoIHRoaXMgU3RhdHVzUmVxdWVzdCByZWZlcnMuCisJICoKKwkgKiBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgWE1MQ2ggc3RyaW5nIGhvbGRpbmcgdGhlIFJlc3BvbnNlSWQKKwkgKi8KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRSZXNwb25zZUlkKHZvaWQpIGNvbnN0ID0gMDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBTZXR0ZXIgSW50ZXJmYWNlIE1ldGhvZHMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgU2V0IHRoZSBSZXNwb25zZUlkCisJICoKKwkgKiBBbGxvd3MgYSBjYWxsaW5nIGFwcGxpY2F0aW9uIHRvIG92ZXItcmlkZSB0aGUgY29uZmlndXJlZCByZXNwb25zZUlkCisJICoKKwkgKiBAcGFyYW0gcmVzcG9uc2VJZCBUaGUgbmV3IHJlc3BvbnNlSWQgZm9yIHRoaXMgZWxlbWVudAorCSAqLworCisJdmlydHVhbCB2b2lkIHNldFJlc3BvbnNlSWQoY29uc3QgWE1MQ2ggKiByZXNwb25zZUlkKSA9IDA7CisKKwkvL0B9CisKK3ByaXZhdGU6CisKKwkvLyBVbmltcGxlbWVudGVkCisJWEtNU1N0YXR1c1JlcXVlc3QoY29uc3QgWEtNU1N0YXR1c1JlcXVlc3QgJik7CisJWEtNU1N0YXR1c1JlcXVlc3QgJiBvcGVyYXRvciA9IChjb25zdCBYS01TU3RhdHVzUmVxdWVzdCAmKTsKKworfTsKKworI2VuZGlmIC8qIFhLTVNTVEFUVVNSRVFVRVNUX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvWEtNU1N0YXR1c1Jlc3VsdC5ocHAgYi9jL3NyYy94a21zL1hLTVNTdGF0dXNSZXN1bHQuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmMTE2OGQKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL1hLTVNTdGF0dXNSZXN1bHQuaHBwCkBAIC0wLDAgKzEsMTY4IEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TU3RhdHVzUmVzdWx0IDo9IEludGVyZmFjZSBmb3IgU3RhdHVzUmVzdWx0IE1lc3NhZ2VzCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhLTVNTVEFUVVNSRVNVTFRfSU5DTFVERQorI2RlZmluZSBYS01TU1RBVFVTUkVTVUxUX0lOQ0xVREUKKworLy8gWFNFQyBJbmNsdWRlcworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TUmVzdWx0VHlwZS5ocHA+CisKK2NsYXNzIFhLTVNRdWVyeUtleUJpbmRpbmc7CitjbGFzcyBYS01TVW52ZXJpZmllZEtleUJpbmRpbmc7CisKKy8qKgorICogQGluZ3JvdXAgeGttcworICovCisKKy8qKgorICogQGJyaWVmIEludGVyZmFjZSBkZWZpbml0aW9uIGZvciB0aGUgU3RhdHVzUmVzdWx0IGVsZW1lbnRzCisgKgorICogVGhlIFw8U3RhdHVzUmVzdWx0XD4gaXMgdXNlZCBmb3IgQXN5bmNocm9ub3VzIHByb2Nlc3NpbmcgYW5kCisgKiBhbGxvd3MgYSBjbGllbnQgdG8gZGV0ZXJtaW5nIHdoZXRoZXIgYSBQZW5kaW5nIHJlc3BvbnNlIGlzIHJlYWR5CisgKiBmb3IgcmV0dXJuLgorICoKKyAqIFRoZSBzY2hlbWEgZGVmaW5pdGlvbiBmb3IgU3RhdHVzUmVzcG9uc2UgaXMgYXMgZm9sbG93cyA6CisgKgorICogXHZlcmJhdGltCisgICA8IS0tIFN0YXR1c1Jlc3VsdCAtLT4KKyAgIDxlbGVtZW50IG5hbWU9IlN0YXR1c1Jlc3VsdCIgdHlwZT0ieGttczpTdGF0dXNSZXN1bHRUeXBlIi8+CisgICA8Y29tcGxleFR5cGUgbmFtZT0iU3RhdHVzUmVzdWx0VHlwZSI+CisgICAgICA8Y29tcGxleENvbnRlbnQ+CisgICAgICAgICA8ZXh0ZW5zaW9uIGJhc2U9InhrbXM6UmVzdWx0VHlwZSI+CisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9IlN1Y2Nlc3MiIHR5cGU9ImludGVnZXIiIHVzZT0ib3B0aW9uYWwiLz4KKyAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iRmFpbHVyZSIgdHlwZT0iaW50ZWdlciIgdXNlPSJvcHRpb25hbCIvPgorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJQZW5kaW5nIiB0eXBlPSJpbnRlZ2VyIiB1c2U9Im9wdGlvbmFsIi8+CisgICAgICAgICA8L2V4dGVuc2lvbj4KKyAgICAgIDwvY29tcGxleENvbnRlbnQ+CisgICA8L2NvbXBsZXhUeXBlPgorICAgPCEtLSAvU3RhdHVzUmVzdWx0IC0tPlxlbmR2ZXJiYXRpbQorICovCisKK2NsYXNzIFhLTVNTdGF0dXNSZXN1bHQgOiBwdWJsaWMgWEtNU1Jlc3VsdFR5cGUgeworCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisKK3Byb3RlY3RlZDoKKworCVhLTVNTdGF0dXNSZXN1bHQoKSB7fTsKKworcHVibGljOgorCisJdmlydHVhbCB+WEtNU1N0YXR1c1Jlc3VsdCgpIHt9OworCisJLyoqIEBuYW1lIEdldHRlciBJbnRlcmZhY2UgTWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gdGhlIGVsZW1lbnQgYXQgdGhlIGJhc2Ugb2YgdGhlIG1lc3NhZ2UKKwkgKi8KKworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBnZXRFbGVtZW50KHZvaWQpIGNvbnN0ID0gMDsKKworCS8vQH0KKworCS8qKiBAbmFtZSBDb3VudCBoYW5kbGluZyAgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgRmluZCBudW1iZXIgb2YgU3VjY2VzcyBtZXNzYWdlcworCSAqCisJICogQSBTdGF0dXNSZXN1bHQgY2FuIGhhdmUgYSBjb3VudCBvZiBtZXNzYWdlcyB3aXRoaW4gYSBwZW5kaW5nIENvbXBvdW5kUmVzcG9uc2UKKwkgKiB3aXRoIGEgU3VjY2VzcyByZXN1bHQgY29kZS4KKwkgKgorCSAqIEByZXR1cm5zIHRoZSBudW1iZXIgb2YgU3VjY2VzcyBtZXNzYWdlcyBpbiBhIHBlbmRpbmcgQ29tcG91bmRSZXNwb25zZQorCSAqLworCisJdmlydHVhbCBpbnQgZ2V0U3VjY2Vzc0NvdW50KHZvaWQpIGNvbnN0ID0gMDsKKworCS8qKgorCSAqIFxicmllZiBGaW5kIG51bWJlciBvZiBGYWlsZWQgbWVzc2FnZXMKKwkgKgorCSAqIEEgU3RhdHVzUmVzdWx0IGNhbiBoYXZlIGEgY291bnQgb2YgbWVzc2FnZXMgd2l0aGluIGEgcGVuZGluZyBDb21wb3VuZFJlc3BvbnNlCisJICogd2l0aCBhIEZhaWx1cmUgcmVzdWx0IHR5cGUuCisJICoKKwkgKiBAcmV0dXJucyB0aGUgbnVtYmVyIG9mIEZhaWxlZCBtZXNzYWdlcyBpbiBhIHBlbmRpbmcgQ29tcG91bmRSZXNwb25zZQorCSAqLworCisJdmlydHVhbCBpbnQgZ2V0RmFpbHVyZUNvdW50KHZvaWQpIGNvbnN0ID0gMDsKKworCS8qKgorCSAqIFxicmllZiBGaW5kIG51bWJlciBvZiBQZW5kaW5nIG1lc3NhZ2VzCisJICoKKwkgKiBBIFN0YXR1c1Jlc3VsdCBjYW4gaGF2ZSBhIGNvdW50IG9mIG1lc3NhZ2VzIHdpdGhpbiBhIHBlbmRpbmcgQ29tcG91bmRSZXNwb25zZQorCSAqIHdpdGggYSBQZW5kaW5nIHJlc3VsdCBjb2RlLgorCSAqCisJICogQHJldHVybnMgdGhlIG51bWJlciBvZiBQZW5kaW5nIG1lc3NhZ2VzIGluIGEgcGVuZGluZyBDb21wb3VuZFJlc3BvbnNlCisJICovCisKKwl2aXJ0dWFsIGludCBnZXRQZW5kaW5nQ291bnQodm9pZCkgY29uc3QgPSAwOworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUgbnVtYmVyIG9mIFN1Y2Nlc3MgbWVzc2FnZXMKKwkgKgorCSAqIEEgU3RhdHVzUmVzdWx0IGNhbiBoYXZlIGEgY291bnQgb2YgbWVzc2FnZXMgd2l0aGluIGEgcGVuZGluZyBDb21wb3VuZFJlc3BvbnNlCisJICogd2l0aCBhIFN1Y2Nlc3MgcmVzdWx0IGNvZGUuCisJICoKKwkgKiBAcGFyYW0gY291bnQgdGhlIG51bWJlciBvZiBTdWNjZXNzIG1lc3NhZ2VzIGluIGEgcGVuZGluZyBDb21wb3VuZFJlc3BvbnNlCisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0U3VjY2Vzc0NvdW50KGludCBjb3VudCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUgbnVtYmVyIG9mIEZhaWxlZCBtZXNzYWdlcworCSAqCisJICogQSBTdGF0dXNSZXN1bHQgY2FuIGhhdmUgYSBjb3VudCBvZiBtZXNzYWdlcyB3aXRoaW4gYSBwZW5kaW5nIENvbXBvdW5kUmVzcG9uc2UKKwkgKiB3aXRoIGEgRmFpbGVkIHJlc3VsdCBjb2RlLgorCSAqCisJICogQHBhcmFtIGNvdW50IHRoZSBudW1iZXIgb2YgRmFpbGVkIG1lc3NhZ2VzIGluIGEgcGVuZGluZyBDb21wb3VuZFJlc3BvbnNlCisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0RmFpbHVyZUNvdW50KGludCBjb3VudCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUgbnVtYmVyIG9mIFBlbmRpbmcgbWVzc2FnZXMKKwkgKgorCSAqIEEgU3RhdHVzUmVzdWx0IGNhbiBoYXZlIGEgY291bnQgb2YgbWVzc2FnZXMgd2l0aGluIGEgcGVuZGluZyBDb21wb3VuZFJlc3BvbnNlCisJICogd2l0aCBhIFBlbmRpbmcgcmVzdWx0IGNvZGUuCisJICoKKwkgKiBAcGFyYW0gY291bnQgdGhlIG51bWJlciBvZiBQZW5kaW5nIG1lc3NhZ2VzIGluIGEgcGVuZGluZyBDb21wb3VuZFJlc3BvbnNlCisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0UGVuZGluZ0NvdW50KGludCBjb3VudCkgPSAwOworCisJLy9AfQorCitwcml2YXRlOgorCisJLy8gVW5pbXBsZW1lbnRlZAorCVhLTVNTdGF0dXNSZXN1bHQoY29uc3QgWEtNU1N0YXR1c1Jlc3VsdCAmKTsKKwlYS01TU3RhdHVzUmVzdWx0ICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU1N0YXR1c1Jlc3VsdCAmKTsKKworfTsKKworI2VuZGlmIC8qIFhLTVNTVEFUVVNSRVNVTFRfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9YS01TVW52ZXJpZmllZEtleUJpbmRpbmcuaHBwIGIvYy9zcmMveGttcy9YS01TVW52ZXJpZmllZEtleUJpbmRpbmcuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3Y2JmN2YKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL1hLTVNVbnZlcmlmaWVkS2V5QmluZGluZy5ocHAKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nIDo9IEludGVyZmFjZSBmb3IgVW52ZXJpZmllZEtleUJpbmRpbmcgZWxlbWVudHMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEtNU1VOVkVSSUZJRURLRVlCSU5ESU5HX0lOQ0xVREUKKyNkZWZpbmUgWEtNU1VOVkVSSUZJRURLRVlCSU5ESU5HX0lOQ0xVREUKKworLy8gWFNFQyBJbmNsdWRlcworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZS5ocHA+CisKKy8qKgorICogQGluZ3JvdXAgeGttcworICovCisKKy8qKgorICogQGJyaWVmIEludGVyZmFjZSBkZWZpbml0aW9uIGZvciB0aGUgVW52ZXJpZmllZEtleUJpbmRpbmcgZWxlbWVudHMKKyAqCisgKiBUaGUgXDxVbnZlcmlmaWVkS2V5QmluZGluZ1w+IEVsZW1lbnQgaXMgdXNlZCBpbiBhIExvY2F0ZVJlc3VsdCBtZXNzYWdlIHRvIAorICogcHJvdmlkZSByZXN1bHRzIHRvIGEgY2xpZW50LiAgU3VjaCByZXN1bHRzIHNob3VsZCBiZSB0cmVhdGVkIGJ5IHRoZSBjbGllbnQKKyAqIHdpdGhvdXQgYW55IHRydXN0IC0gdGhleSBhcmUgbGl0ZXJhbGx5ICJ1bnZlcmlmaWVkIgorICoKKyAqIFRoZSBzY2hlbWEgZGVmaW5pdGlvbiBmb3IgVW52ZXJpZmllZEtleUJpbmRpbmcgaXMgYXMgZm9sbG93cyA6CisgKgorICogXHZlcmJhdGltCisgICA8IS0tIFVudmVyaWZpZWRLZXlCaW5kaW5nIC0tPgorICAgPGVsZW1lbnQgbmFtZT0iVW52ZXJpZmllZEtleUJpbmRpbmciIAorICAgICAgICAgdHlwZT0ieGttczpVbnZlcmlmaWVkS2V5QmluZGluZ1R5cGUiLz4KKyAgIDxjb21wbGV4VHlwZSBuYW1lPSJVbnZlcmlmaWVkS2V5QmluZGluZ1R5cGUiPgorICAgICAgPGNvbXBsZXhDb250ZW50PgorICAgICAgICAgPGV4dGVuc2lvbiBiYXNlPSJ4a21zOktleUJpbmRpbmdBYnN0cmFjdFR5cGUiPgorICAgICAgICAgICAgPHNlcXVlbmNlPgorICAgICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSJ4a21zOlZhbGlkaXR5SW50ZXJ2YWwiIG1pbk9jY3Vycz0iMCIvPgorICAgICAgICAgICAgPC9zZXF1ZW5jZT4KKyAgICAgICAgIDwvZXh0ZW5zaW9uPgorICAgICAgPC9jb21wbGV4Q29udGVudD4KKyAgIDwvY29tcGxleFR5cGU+CisgICA8IS0tIC9VbnZlcmlmaWVkS2V5QmluZGluZyAtLT5cZW5kdmVyYmF0aW0KKyAqLworCisKK2NsYXNzIFhLTVNVbnZlcmlmaWVkS2V5QmluZGluZyA6IHB1YmxpYyBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZSB7CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworcHJvdGVjdGVkOgorCisJWEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nKCkge307CisKK3B1YmxpYzoKKworCXZpcnR1YWwgflhLTVNVbnZlcmlmaWVkS2V5QmluZGluZygpIHt9OworCitwcml2YXRlOgorCisJLy8gVW5pbXBsZW1lbnRlZAorCVhLTVNVbnZlcmlmaWVkS2V5QmluZGluZyhjb25zdCBYS01TVW52ZXJpZmllZEtleUJpbmRpbmcgJik7CisJWEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nICYpOworCit9OworCisjZW5kaWYgLyogWEtNU1VOVkVSSUZJRURLRVlCSU5ESU5HX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvWEtNU1VzZUtleVdpdGguaHBwIGIvYy9zcmMveGttcy9YS01TVXNlS2V5V2l0aC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDc2NWU0NgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvWEtNU1VzZUtleVdpdGguaHBwCkBAIC0wLDAgKzEsMTMwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TVXNlS2V5V2l0aCA6PSBJbnRlcmZhY2UgZm9yIFVzZUtleVdpdGggTWVzc2FnZXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEtNU1VTRUtFWVdJVEhfSU5DTFVERQorI2RlZmluZSBYS01TVVNFS0VZV0lUSF9JTkNMVURFCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKworLyoqCisgKiBAaW5ncm91cCB4a21zCisgKi8KKworLyoqCisgKiBAYnJpZWYgSW50ZXJmYWNlIGRlZmluaXRpb24gVXNlS2V5V2l0aCBlbGVtZW50cworICoKKyAqIFw8VXNlS2V5V2l0aFw+IGVsZW1lbnRzIGFyZSBwbGF5ZWQgaW5zaWVkIEtleUJpbmRpbmcgZWxlbWVudHMgYW5kIGlkZW50aWZ5CisgKiBhcHBsaWNhdGlvbnMgYW5kIGFwcGxpY2F0aW9uIGlkZW50aWZpZXJzIHRoYXQgY29ycmVzcG9uZCB3aXRoIHRoZSBrZXlzIGJlaW5nCisgKiBmb3VuZC4KKyAqCisgKiBUaGUgc2NoZW1hIGRlZmluaXRpb24gZm9yIFVzZUtleVdpdGggaXMgYXMgZm9sbG93cyA6CisgKgorICogXHZlcmJhdGltCisgICA8IS0tIFVzZUtleVdpdGggLS0+CisgICA8ZWxlbWVudCBuYW1lPSJVc2VLZXlXaXRoIiB0eXBlPSJ4a21zOlVzZUtleVdpdGhUeXBlIi8+CisgICA8Y29tcGxleFR5cGUgbmFtZT0iVXNlS2V5V2l0aFR5cGUiPgorICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJBcHBsaWNhdGlvbiIgdHlwZT0iYW55VVJJIiB1c2U9InJlcXVpcmVkIi8+CisgICAgICA8YXR0cmlidXRlIG5hbWU9IklkZW50aWZpZXIiIHR5cGU9InN0cmluZyIgdXNlPSJyZXF1aXJlZCIvPgorICAgPC9jb21wbGV4VHlwZT4KKyAgIDwhLS0gL1VzZUtleVdpdGggLS0+CisKK1xlbmR2ZXJiYXRpbQorICovCisKK2NsYXNzIFhLTVNVc2VLZXlXaXRoIHsKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCitwcm90ZWN0ZWQ6CisKKwlYS01TVXNlS2V5V2l0aCgpIHt9OworCitwdWJsaWM6CisKKwl2aXJ0dWFsIH5YS01TVXNlS2V5V2l0aCgpIHt9OworCisJLyoqIEBuYW1lIEdldHRlciBJbnRlcmZhY2UgTWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBSZXR1cm4gdGhlIGVsZW1lbnQgYXQgdGhlIGJhc2Ugb2YgdGhlIG1lc3NhZ2UKKwkgKi8KKworCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBnZXRFbGVtZW50KHZvaWQpIGNvbnN0ID0gMDsKKworCS8qKgorCSAqIFxicmllZiBPYnRhaW4gdGhlIFVSSSBhc3NvY2lhdGVkIHdpdGggdGhlIGFwcGxpY2F0aW9uIGZvciB3aGljaCB0aGlzCisJICogaWRlbnRpZmllciBhcHBsaWVzCisJICoKKwkgKiBAcmV0dXJucyBhIGxpYnJhcnkgb3duZWQgWE1MQ2ggc3RyaW5nIGNvbnRhaW5pbmcgdGhlIFVSSQorCSAqLworCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldEFwcGxpY2F0aW9uKHZvaWQpIGNvbnN0ID0gMDsKKworCS8qKgorCSAqIFxicmllZiBPYnRhaW4gdGhlIGlkZW50aWZpZXIgc3RyaW5nIHRoYXQgc2hvdWxkIGJlIHVzZWQgdG8gbG9jYXRlIGEga2V5CisJICoKKwkgKiBAcmV0dXJucyBhIGxpYnJhcnkgb3duZWQgWE1MQ2ggc3RyaW5nIGNvbnRhaW5pbmcgdGhlIFVSSQorCSAqLworCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldElkZW50aWZpZXIodm9pZCkgY29uc3QgPSAwOworCisJLy9AfQorCisJLyoqIEBuYW1lIFNldHRlciBJbnRlcmZhY2UgTWV0aG9kcyAqLworCS8vQHsKKworCS8qKgorCSAqIFxicmllZiBTZXQgdGhlIEFwcGxpY2F0aW9uIHN0cmluZworCSAqCisJICogcGFyYW0gdXJpIFVSSSBTdHJpbmcgaWRlbnRpZnlpbmcgdGhlIGFwcGxpY2F0aW9uCisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0QXBwbGljYXRpb24oY29uc3QgWE1MQ2ggKiB1cmkpID0gMDsKKworCS8qKgorCSAqIFxicmllZiBTZXQgdGhlIElkZW50aWZpZXIgc3RyaW5nCisJICoKKwkgKiBwYXJhbSBpZGVudGlmaWVyIFN0cmluZyBpZGVudGlmeWluZyB0aGUga2V5CisJICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0SWRlbnRpZmllcihjb25zdCBYTUxDaCAqIGlkZW50aWZpZXIpID0gMDsKKworCS8vQH0KKworCQorCitwcml2YXRlOgorCisJLy8gVW5pbXBsZW1lbnRlZAorCVhLTVNVc2VLZXlXaXRoKGNvbnN0IFhLTVNVc2VLZXlXaXRoICYpOworCVhLTVNVc2VLZXlXaXRoICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU1VzZUtleVdpdGggJik7CisKK307CisKKyNlbmRpZiAvKiBYS01TVVNFS0VZV0lUSF9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL1hLTVNWYWxpZGF0ZVJlcXVlc3QuaHBwIGIvYy9zcmMveGttcy9YS01TVmFsaWRhdGVSZXF1ZXN0LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWE3NTZjCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9YS01TVmFsaWRhdGVSZXF1ZXN0LmhwcApAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU1ZhbGlkYXRlUmVxdWVzdCA6PSBJbnRlcmZhY2UgZm9yIFZhbGlkYXRlUmVxdWVzdCBNZXNzYWdlcworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYS01TVkFMSURBVEVSRVFVRVRTX0lOQ0xVREUKKyNkZWZpbmUgWEtNU1ZBTElEQVRFUkVRVUVUU19JTkNMVURFCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGUuaHBwPgorCitjbGFzcyBYS01TUXVlcnlLZXlCaW5kaW5nOworCisvKioKKyAqIEBpbmdyb3VwIHhrbXMKKyAqLworCisvKioKKyAqIEBicmllZiBJbnRlcmZhY2UgZGVmaW5pdGlvbiBmb3IgdGhlIFZhbGlkYXRlUmVxdWVzdCBlbGVtZW50cworICoKKyAqIFRoZSBcPFZhbGlkYXRlUmVxdWVzdFw+IGlzIG9uZSBvZiB0aGUgZnVuZGFtZW50YWwgbWVzc2FnZSB0eXBlcyBvZgorICogdGhlIFhLSVNTIHNlcnZpY2UuICBJdCBpcyB1c2VkIGJ5IHRoZSBWYWxpZGF0ZSBzZXJ2aWNlIHRvIGZpbmQgYSBrZXkKKyAqIGFuZCByZXR1cm4gYSBzZXQgb2Yga2V5IGJpbmRpbmdzIGZvciB0aGF0IGtleS4KKyAqCisgKiBUaGUgc2NoZW1hIGRlZmluaXRpb24gZm9yIFZhbGlkYXRlUmVxdWVzdCBpcyBhcyBmb2xsb3dzIDoKKyAqCisgKiBcdmVyYmF0aW0KKyAgIDwhLS0gVmFsaWRhdGVSZXF1ZXN0IC0tPgorICAgPGVsZW1lbnQgbmFtZT0iVmFsaWRhdGVSZXF1ZXN0IiB0eXBlPSJ4a21zOlZhbGlkYXRlUmVxdWVzdFR5cGUiLz4KKyAgIDxjb21wbGV4VHlwZSBuYW1lPSJWYWxpZGF0ZVJlcXVlc3RUeXBlIj4KKyAgICAgIDxjb21wbGV4Q29udGVudD4KKyAgICAgICAgIDxleHRlbnNpb24gYmFzZT0ieGttczpSZXF1ZXN0QWJzdHJhY3RUeXBlIj4KKyAgICAgICAgICAgIDxzZXF1ZW5jZT4KKyAgICAgICAgICAgICAgIDxlbGVtZW50IHJlZj0ieGttczpRdWVyeUtleUJpbmRpbmciLz4KKyAgICAgICAgICAgIDwvc2VxdWVuY2U+CisgICAgICAgICA8L2V4dGVuc2lvbj4KKyAgICAgIDwvY29tcGxleENvbnRlbnQ+CisgICA8L2NvbXBsZXhUeXBlPgorICAgPCEtLSAvVmFsaWRhdGVSZXF1ZXN0IC0tPgorXGVuZHZlcmJhdGltCisgKi8KKworY2xhc3MgWEtNU1ZhbGlkYXRlUmVxdWVzdCA6IHB1YmxpYyBYS01TUmVxdWVzdEFic3RyYWN0VHlwZSB7CisKKwkvKiogQG5hbWUgQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCS8vQHsKKworcHJvdGVjdGVkOgorCisJWEtNU1ZhbGlkYXRlUmVxdWVzdCgpIHt9OworCitwdWJsaWM6CisKKwl2aXJ0dWFsIH5YS01TVmFsaWRhdGVSZXF1ZXN0KCkge307CisKKwkvKiogQG5hbWUgR2V0dGVyIEludGVyZmFjZSBNZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFJldHVybiB0aGUgZWxlbWVudCBhdCB0aGUgYmFzZSBvZiB0aGUgbWVzc2FnZQorCSAqLworCisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGdldEVsZW1lbnQodm9pZCkgY29uc3QgPSAwOworCisJLyoqCisJICogXGJyaWVmIE9idGFpbiB0aGUgUXVlcnlLZXlCaW5kaW5nIGVsZW1lbnQKKwkgKgorCSAqIFRoZSBRdWVyeUtleUJpbmRpbmcgZWxlbWVudCBpcyB0aGUgY29yZSBvZiB0aGUgVmFsaWRhdGVSZXF1ZXN0IG1lc3NhZ2UsIGFuZAorCSAqIGRlZmluZXMgdGhlIHB1YmxpYyBrZXkgaW5mb3JtYXRpb24gdGhhdCB3aWxsIGJlIHNlbnQgdG8gdGhlIHNlcnZlci4KKwkgKgorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgWEtNU1F1ZXJ5S2V5QmluZGluZyBlbGVtZW50CisJICovCisKKwl2aXJ0dWFsIFhLTVNRdWVyeUtleUJpbmRpbmcgKiBnZXRRdWVyeUtleUJpbmRpbmcodm9pZCkgPSAwOworCisJLy9AfQorCisJLyoqIEBuYW1lIFNldHRlciBJbnRlcmZhY2UgTWV0aG9kcyAqLworCS8vQHsKKworCS8qKiBcYnJpZWYgQWRkIGEgUXVlcnlLZXlCaW5kaW5nIGVsZW1lbnQKKwkgKgorCSAqIFNldCBhIFF1ZXJ5S2V5QmluZGluZyBlbGVtZW50IGluIHRoZSBWYWxpZGF0ZVJlcXVlc3QgbWVzc2FnZS4gIFRoZSByZXR1cm5lZAorCSAqIG9iamVjdCBjYW4gYmUgbWFuaXB1bGF0ZWQgdG8gYWRkIEtleUluZm8gZWxlbWVudHMgdG8gdGhlIFZhbGlkYXRlUmVxdWVzdC4KKwkgKgorCSAqIEByZXR1cm5zIEEgcG9pbnRlciB0byB0aGUgbmV3bHkgY3JlYXRlZCBRdWVyeUtleUJpbmRpbmcgb2JqZWN0LCBvcgorCSAqIHRoZSBwb2ludGVyIHRvIGV4dGFudCBvYmplY3QgaWYgb25lIGFscmVhZHkgZXhpc3RlZC4KKwkgKi8KKworCXZpcnR1YWwgWEtNU1F1ZXJ5S2V5QmluZGluZyAqIGFkZFF1ZXJ5S2V5QmluZGluZyh2b2lkKSA9IDA7CisKKwkvL0B9CisKK3ByaXZhdGU6CisKKwkvLyBVbmltcGxlbWVudGVkCisJWEtNU1ZhbGlkYXRlUmVxdWVzdChjb25zdCBYS01TVmFsaWRhdGVSZXF1ZXN0ICYpOworCVhLTVNWYWxpZGF0ZVJlcXVlc3QgJiBvcGVyYXRvciA9IChjb25zdCBYS01TVmFsaWRhdGVSZXF1ZXN0ICYpOworCit9OworCisjZW5kaWYgLyogWEtNU1ZBTElEQVRFUkVRVUVUU19JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL1hLTVNWYWxpZGF0ZVJlc3VsdC5ocHAgYi9jL3NyYy94a21zL1hLTVNWYWxpZGF0ZVJlc3VsdC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI3YjFiOAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvWEtNU1ZhbGlkYXRlUmVzdWx0LmhwcApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU1ZhbGlkYXRlUmVzdWx0IDo9IEludGVyZmFjZSBmb3IgVmFsaWRhdGVSZXN1bHQgTWVzc2FnZXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEtNU1ZBTElEQVRFUkVTVUxUX0lOQ0xVREUKKyNkZWZpbmUgWEtNU1ZBTElEQVRFUkVTVUxUX0lOQ0xVREUKKworLy8gWFNFQyBJbmNsdWRlcworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TUmVzdWx0VHlwZS5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNTdGF0dXMuaHBwPgorCitjbGFzcyBYS01TS2V5QmluZGluZzsKK2NsYXNzIFhLTVNVbnZlcmlmaWVkS2V5QmluZGluZzsKKworLyoqCisgKiBAaW5ncm91cCB4a21zCisgKi8KKworLyoqCisgKiBAYnJpZWYgSW50ZXJmYWNlIGRlZmluaXRpb24gZm9yIHRoZSBWYWxpZGF0ZVJlc3VsdCBlbGVtZW50cworICoKKyAqIFRoZSBcPFZhbGlkYXRlUmVzdWx0XD4gaXMgb25lIG9mIHRoZSBmdW5kYW1lbnRhbCBtZXNzYWdlIHR5cGVzIG9mCisgKiB0aGUgWEtJU1Mgc2VydmljZS4gIEl0IGlzIHVzZWQgYnkgdGhlIFZhbGlkYXRlIHNlcnZpY2UgdG8gcmV0dXJuIGEga2V5CisgKiBhbmQgdGhlIGJpbmRpbmdzIGZvciB0aGF0IGtleS4KKyAqCisgKiBUaGUgc2NoZW1hIGRlZmluaXRpb24gZm9yIFZhbGlkYXRlUmVzdWx0IGlzIGFzIGZvbGxvd3MgOgorICoKKyAqIFx2ZXJiYXRpbQorICAgPCEtLSBWYWxpZGF0ZVJlc3VsdCAtLT4KKyAgIDxlbGVtZW50IG5hbWU9IlZhbGlkYXRlUmVzdWx0IiB0eXBlPSJ4a21zOlZhbGlkYXRlUmVzdWx0VHlwZSIvPgorICAgPGNvbXBsZXhUeXBlIG5hbWU9IlZhbGlkYXRlUmVzdWx0VHlwZSI+CisgICAgICA8Y29tcGxleENvbnRlbnQ+CisgICAgICAgICA8ZXh0ZW5zaW9uIGJhc2U9InhrbXM6UmVzdWx0VHlwZSI+CisgICAgICAgICAgICA8c2VxdWVuY2U+CisgICAgICAgICAgICAgICA8ZWxlbWVudCByZWY9InhrbXM6S2V5QmluZGluZyIgbWluT2NjdXJzPSIwIiAKKyAgICAgICAgICAgICAgICAgICAgIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CisgICAgICAgICAgICA8L3NlcXVlbmNlPgorICAgICAgICAgPC9leHRlbnNpb24+CisgICAgICA8L2NvbXBsZXhDb250ZW50PgorICAgPC9jb21wbGV4VHlwZT4KKyAgIDwhLS0gL1ZhbGlkYXRlUmVzdWx0IC0tPgorXGVuZHZlcmJhdGltCisgKi8KKworY2xhc3MgWEtNU1ZhbGlkYXRlUmVzdWx0IDogcHVibGljIFhLTVNSZXN1bHRUeXBlIHsKKworCS8qKiBAbmFtZSBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJLy9AeworCitwcm90ZWN0ZWQ6CisKKwlYS01TVmFsaWRhdGVSZXN1bHQoKSB7fTsKKworcHVibGljOgorCisJdmlydHVhbCB+WEtNU1ZhbGlkYXRlUmVzdWx0KCkge307CisKKwkvKiogQG5hbWUgR2V0dGVyIEludGVyZmFjZSBNZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFJldHVybiB0aGUgZWxlbWVudCBhdCB0aGUgYmFzZSBvZiB0aGUgbWVzc2FnZQorCSAqLworCisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGdldEVsZW1lbnQodm9pZCkgY29uc3QgPSAwOworCisJLy9AfQorCisJLyoqIEBuYW1lIEtleUJpbmRpbmcgaGFuZGxpbmcgICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIEZpbmQgbnVtYmVyIG9mIEtleUJpbmRpbmcgZWxlbWVudHMKKwkgKgorCSAqIEByZXR1cm5zIHRoZSBudW1iZXIgb2YgS2V5QmluZGluZyBpdGVtcyB3aXRoaW4gdGhlIFZhbGlkYXRlUmVzdWx0CisJICovCisKKwl2aXJ0dWFsIGludCBnZXRLZXlCaW5kaW5nU2l6ZSh2b2lkKSBjb25zdCA9IDA7CisKKwkvKgorCSAqIFxicmllZiBPYnRhaW4gYW4gS2V5QmluZGluZyBpdGVtCisJICoKKwkgKiBAcGFyYW0gaXRlbSBJbmRleCBvZiB0aGUgaXRlbSB0byByZXR1cm4gKDAgPSBmaXJzdCBlbGVtZW50KQorCSAqIEByZXR1cm5zIHRoZSBLZXlCaW5kaW5nIHJlZmVyZW5jZWQgYnkgIml0ZW0iCisJICovCisKKwl2aXJ0dWFsIFhLTVNLZXlCaW5kaW5nICogZ2V0S2V5QmluZGluZ0l0ZW0oaW50IGl0ZW0pIGNvbnN0ID0gMDsKKworCS8qCisJICogXGJyaWVmIEFwcGVuZCBhIG5ldyBLZXlCaW5kaW5nIGVsZW1lbnQKKwkgKgorCSAqIEFsbG93cyBjYWxsZXJzIHRvIGFwcGVuZCBhIG5ldyBLZXlCaW5kaW5nIGl0ZW0uCisJICogVGhlIGl0ZW0gaXMgaW5pdGlhbGx5IGVtcHR5IG9mIEtleUluZm8gZWxlbWVudHMgLSB0aGVzZSBtdXN0IGJlIGFkZGVkCisJICogYnkgdGhlIGNhbGxlci4KKwkgKgorCSAqIEBwYXJhbSBzdGF0dXMgVGhlIHN0YXR1cyAoVmFsaWQsIEludmFsaWQgb3IgSW5kZXRlcm1pbmF0ZSkgb2YgdGhpcworCSAqIGtleQorCSAqIEByZXR1cm5zIHRoZSBuZXdseSBjcmVhdGVkIEtleUJpbmRpbmcgb2JqZWN0IChhbHJlYWR5IGluc2VydGVkCisJICogaW4gdGhlIFZhbGlkYXRlUmVzdWx0CisJICovCisKKwl2aXJ0dWFsIFhLTVNLZXlCaW5kaW5nICogYXBwZW5kS2V5QmluZGluZ0l0ZW0oWEtNU1N0YXR1czo6U3RhdHVzVmFsdWUgc3RhdHVzKSA9IDA7CisKKwkvL0B9CisKK3ByaXZhdGU6CisKKwkvLyBVbmltcGxlbWVudGVkCisJWEtNU1ZhbGlkYXRlUmVzdWx0KGNvbnN0IFhLTVNWYWxpZGF0ZVJlc3VsdCAmKTsKKwlYS01TVmFsaWRhdGVSZXN1bHQgJiBvcGVyYXRvciA9IChjb25zdCBYS01TVmFsaWRhdGVSZXN1bHQgJik7CisKK307CisKKyNlbmRpZiAvKiBYS01TVkFMSURBVEVSRVNVTFRfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9YS01TVmFsaWRpdHlJbnRlcnZhbC5ocHAgYi9jL3NyYy94a21zL1hLTVNWYWxpZGl0eUludGVydmFsLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzU4N2E5Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9YS01TVmFsaWRpdHlJbnRlcnZhbC5ocHAKQEAgLTAsMCArMSwxMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNWYWxpZGl0eUludGVydmFsIDo9IEludGVyZmFjZSBmb3IgVmFsaWRpdHlJbnRlcnZhbCBlbGVtZW50cworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYS01TVkFMSURJVFlJTlRFUlZBTF9JTkNMVURFCisjZGVmaW5lIFhLTVNWQUxJRElUWUlOVEVSVkFMX0lOQ0xVREUKKworLy8gWFNFQyBJbmNsdWRlcworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorCisvKioKKyAqIEBpbmdyb3VwIHhrbXMKKyAqLworCisvKioKKyAqIEBicmllZiBJbnRlcmZhY2UgZGVmaW5pdGlvbiBmb3IgdGhlIFZhbGlkaXR5SW50ZXJ2YWwgZWxlbWVudHMKKyAqCisgKiBUaGUgXDxWYWxpZGl0eUludGVydmFsXD4gRWxlbWVudCBpcyB1c2VkIHRvIGRlZmluZSB0aGUgZGF0ZXMgd2l0aGluIHdoaWNoCisgKiBhIGtleSBpcyB2YWxpZC4KKyAqCisgKiBUaGUgc2NoZW1hIGRlZmluaXRpb24gZm9yIFZhbGlkaXR5SW50ZXJ2YWwgaXMgYXMgZm9sbG93cyA6CisgKgorICogXHZlcmJhdGltCisgICA8IS0tIFZhbGlkaXR5SW50ZXJ2YWwgLS0+CisgICA8ZWxlbWVudCBuYW1lPSJWYWxpZGl0eUludGVydmFsIiB0eXBlPSJ4a21zOlZhbGlkaXR5SW50ZXJ2YWxUeXBlIi8+CisgICA8Y29tcGxleFR5cGUgbmFtZT0iVmFsaWRpdHlJbnRlcnZhbFR5cGUiPgorICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJOb3RCZWZvcmUiIHR5cGU9ImRhdGVUaW1lIiB1c2U9Im9wdGlvbmFsIi8+CisgICAgICA8YXR0cmlidXRlIG5hbWU9Ik5vdE9uT3JBZnRlciIgdHlwZT0iZGF0ZVRpbWUiIHVzZT0ib3B0aW9uYWwiLz4KKyAgIDwvY29tcGxleFR5cGU+CisgICA8IS0tIC9WYWxpZGl0eUludGVydmFsIC0tPgorXGVuZHZlcmJhdGltCisgKi8KKworY2xhc3MgWEtNU1ZhbGlkaXR5SW50ZXJ2YWwgeworCisJLyoqIEBuYW1lIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKwkvL0B7CisKK3Byb3RlY3RlZDoKKworCVhLTVNWYWxpZGl0eUludGVydmFsKCkge307CisKK3B1YmxpYzoKKworCXZpcnR1YWwgflhLTVNWYWxpZGl0eUludGVydmFsKCkge307CisKKwkvL0B9CisKKwkvKiogQG5hbWUgR2V0IE1ldGhvZHMgKi8KKwkvL0B7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBzdGFydCBkYXRlIGZvciB0aGUga2V5CisJICoKKwkgKiBEZWZpbmVzIHRoZSBmaXJzdCBpbnN0YW5jZSBpbiB0aW1lIGZyb20gd2hpY2ggdGhlIGtleSBpcyB2YWxpZC4gIEF0IGFueSB0aW1lCisJICogYmVmb3JlIHRoaXMsIHRoZSBrZXkgaXMgaW52YWxpZC4KKwkgKgorCSAqIEByZXR1cm4gVGhlIE5vdEJlZm9yZSB2YWx1ZSAob3IgTlVMTCBpZiBub25lIHdhcyBkZWZpbmVkKQorCSAqLworCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldE5vdEJlZm9yZSh2b2lkKSBjb25zdCA9IDA7CisKKwkvKioKKwkgKiBcYnJpZWYgR2V0IHRoZSBlbmQgZGF0ZSBmb3IgdGhlIGtleQorCSAqCisJICogRGVmaW5lcyB0aGUgZmlyc3QgaW5zdGFuY2UgaW4gdGltZSBmcm9tIHdoaWNoIHRoZSBrZXkgaXMgaW52YWxpZC4gIEF0IHRoaXMgdGltZQorCSAqIG9yIGFmdGVyLCB0aGUga2V5IGlzIGludmFsaWQuCisJICoKKwkgKiBAcmV0dXJuIFRoZSBOb3RPbk9yQWZ0ZXIgdmFsdWUgKG9yIE5VTEwgaWYgbm9uZSB3YXMgZGVmaW5lZCkKKwkgKi8KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXROb3RPbk9yQWZ0ZXIodm9pZCkgY29uc3QgPSAwOworCisJLy9AfQorCisJLyoqIEBuYW1lIFNldCBNZXRob2RzICovCisJLy9AeworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUgc3RhcnQgZGF0ZSBmb3IgdGhlIGtleQorCSAqCisJICogRGVmaW5lcyB0aGUgZmlyc3QgaW5zdGFuY2UgaW4gdGltZSBmcm9tIHdoaWNoIHRoZSBrZXkgaXMgdmFsaWQuICBBdCBhbnkgdGltZQorCSAqIGJlZm9yZSB0aGlzLCB0aGUga2V5IGlzIGludmFsaWQuCisJICoKKwkgKiBAcGFyYW0gdmFsIHZhbHVlIHRvIHNldAorCSAqLworCisJdmlydHVhbCB2b2lkIHNldE5vdEJlZm9yZShjb25zdCBYTUxDaCAqIHZhbCkgPSAwOworCisJLyoqCisJICogXGJyaWVmIFNldCB0aGUgZW5kIGRhdGUgZm9yIHRoZSBrZXkKKwkgKgorCSAqIERlZmluZXMgdGhlIGZpcnN0IGluc3RhbmNlIGluIHRpbWUgZnJvbSB3aGljaCB0aGUga2V5IGlzIGludmFsaWQuICBBdCB0aGlzIHRpbWUKKwkgKiBvciBhZnRlciwgdGhlIGtleSBpcyBpbnZhbGlkLgorCSAqCisJICogQHBhcmFtIHZhbCB2YWx1ZSB0byBzZXQKKwkgKi8KKworCXZpcnR1YWwgdm9pZCBzZXROb3RPbk9yQWZ0ZXIoY29uc3QgWE1MQ2ggKiB2YWwpID0gMDsKKworCS8vQH0KKworcHJpdmF0ZToKKworCS8vIFVuaW1wbGVtZW50ZWQKKwlYS01TVmFsaWRpdHlJbnRlcnZhbChjb25zdCBYS01TVmFsaWRpdHlJbnRlcnZhbCAmKTsKKwlYS01TVmFsaWRpdHlJbnRlcnZhbCAmIG9wZXJhdG9yID0gKGNvbnN0IFhLTVNWYWxpZGl0eUludGVydmFsICYpOworCit9OworCisjZW5kaWYgLyogWEtNU1ZBTElESVRZSU5URVJWQUxfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNBdXRoZW50aWNhdGlvbkltcGwuY3BwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNBdXRoZW50aWNhdGlvbkltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlYTQ1N2YKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU0F1dGhlbnRpY2F0aW9uSW1wbC5jcHAKQEAgLTAsMCArMSwyNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNBdXRoZW50aWNhdGlvbkltcGwgOj0gSW1wbGVtZW50YXRpb24gb2YgQXV0aGVudGljYXRpb24gZWxlbWVudHMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vudi5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0NvbnN0YW50cy5ocHA+CisKKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1JlZmVyZW5jZS5ocHA+CisKKyNpbmNsdWRlICJYS01TQXV0aGVudGljYXRpb25JbXBsLmhwcCIKKyNpbmNsdWRlICJYS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbkltcGwuaHBwIgorCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MVW5pRGVmcy5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdG9yL0Rlc3RydWN0b3IKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hLTVNBdXRoZW50aWNhdGlvbkltcGw6OlhLTVNBdXRoZW50aWNhdGlvbkltcGwoY29uc3QgWFNFQ0VudiAqIGVudikgOgorbXBfZW52KGVudiksCittcF9hdXRoZW50aWNhdGlvbkVsZW1lbnQoTlVMTCksCittcF9rZXlCaW5kaW5nQXV0aGVudGljYXRpb25TaWduYXR1cmVFbGVtZW50KE5VTEwpLAorbXBfa2V5QmluZGluZ0F1dGhlbnRpY2F0aW9uU2lnbmF0dXJlKE5VTEwpLAorbXBfbm90Qm91bmRBdXRoZW50aWNhdGlvbihOVUxMKQoreworfQorCitYS01TQXV0aGVudGljYXRpb25JbXBsOjpYS01TQXV0aGVudGljYXRpb25JbXBsKGNvbnN0IFhTRUNFbnYgKiBlbnYsIERPTUVsZW1lbnQgKiBub2RlKSA6CittcF9lbnYoZW52KSwKK21wX2F1dGhlbnRpY2F0aW9uRWxlbWVudChub2RlKSwKK21wX2tleUJpbmRpbmdBdXRoZW50aWNhdGlvblNpZ25hdHVyZUVsZW1lbnQoTlVMTCksCittcF9rZXlCaW5kaW5nQXV0aGVudGljYXRpb25TaWduYXR1cmUoTlVMTCksCittcF9ub3RCb3VuZEF1dGhlbnRpY2F0aW9uKE5VTEwpCit7Cit9CisKK1hLTVNBdXRoZW50aWNhdGlvbkltcGw6On5YS01TQXV0aGVudGljYXRpb25JbXBsKCkgeworCisJaWYgKG1wX25vdEJvdW5kQXV0aGVudGljYXRpb24gIT0gTlVMTCkKKwkJZGVsZXRlIG1wX25vdEJvdW5kQXV0aGVudGljYXRpb247Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgTG9hZAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBYS01TQXV0aGVudGljYXRpb25JbXBsOjpsb2FkKGNvbnN0IFhNTENoICogaWQpIHsKKworCWlmIChtcF9hdXRoZW50aWNhdGlvbkVsZW1lbnQgPT0gTlVMTCkgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkWEtNU0NoaWxkTm90Rm91bmQsCisJCQkiWEtNU0F1dGhlbnRpY2F0aW9uSW1wbDo6bG9hZCAtIGNhbGxlZCBvbiBlbXB0eSBET00iKTsKKwl9CisKKwkvLyBTdG9yZSBmb3IgbGF0ZXIgdXNlCisJbXBfa2V5QmluZGluZ0lkID0gaWQ7CisKKwlET01FbGVtZW50ICogdG1wRWx0ID0gZmluZEZpcnN0RWxlbWVudENoaWxkKG1wX2F1dGhlbnRpY2F0aW9uRWxlbWVudCk7CisKKwlpZiAodG1wRWx0ICE9IE5VTEwgJiYgc3RyRXF1YWxzKGdldFhLTVNMb2NhbE5hbWUodG1wRWx0KSwgCisJCQkJCQkJCQlYS01TQ29uc3RhbnRzOjpzX3RhZ0tleUJpbmRpbmdBdXRoZW50aWNhdGlvbikpIHsKKworCQkvLyBGaW5kIHRoZSBzaWduYXR1cmUKKwkJbXBfa2V5QmluZGluZ0F1dGhlbnRpY2F0aW9uU2lnbmF0dXJlRWxlbWVudCA9IAorCQkJKERPTUVsZW1lbnQgKikgZmluZEZpcnN0RWxlbWVudENoaWxkKHRtcEVsdCk7CisKKwkJd2hpbGUgKG1wX2tleUJpbmRpbmdBdXRoZW50aWNhdGlvblNpZ25hdHVyZUVsZW1lbnQgIT0gTlVMTCAmJiAKKwkJCSFzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZShtcF9rZXlCaW5kaW5nQXV0aGVudGljYXRpb25TaWduYXR1cmVFbGVtZW50KSwgCisJCQkJCQlYS01TQ29uc3RhbnRzOjpzX3RhZ1NpZ25hdHVyZSkpIHsKKworCQkJbXBfa2V5QmluZGluZ0F1dGhlbnRpY2F0aW9uU2lnbmF0dXJlRWxlbWVudD0gCisJCQkJZmluZE5leHRFbGVtZW50Q2hpbGQobXBfa2V5QmluZGluZ0F1dGhlbnRpY2F0aW9uU2lnbmF0dXJlRWxlbWVudCk7CisKKwkJfQorCisJCS8vIFRoZSBwcm92aWRlciB3aWxsIHRha2UgY2FyZSBvZiBjbGVhbmluZyB0aGlzIHVwIGxhdGVyLgorCisJCWlmIChtcF9rZXlCaW5kaW5nQXV0aGVudGljYXRpb25TaWduYXR1cmVFbGVtZW50ICE9IE5VTEwpIHsKKworCQkJbXBfa2V5QmluZGluZ0F1dGhlbnRpY2F0aW9uU2lnbmF0dXJlID0gbV9wcm92Lm5ld1NpZ25hdHVyZUZyb21ET00oCisJCQkJCQkJCQkJCQkJICBtcF9rZXlCaW5kaW5nQXV0aGVudGljYXRpb25TaWduYXR1cmVFbGVtZW50LT5nZXRPd25lckRvY3VtZW50KCksIAorCQkJCQkJCQkJCQkJCSAgbXBfa2V5QmluZGluZ0F1dGhlbnRpY2F0aW9uU2lnbmF0dXJlRWxlbWVudCk7CisJCQltcF9rZXlCaW5kaW5nQXV0aGVudGljYXRpb25TaWduYXR1cmUtPmxvYWQoKTsKKworCQkJLy8gQ2hlY2sgdGhlIHNpZ25hdHVyZSBpcyBhY3Jvc3MgdGhlIGNvcnJlY3QgaW5wdXQKKwkJCQorCQkJRFNJR1JlZmVyZW5jZUxpc3QgKiBybCA9IAorCQkJCW1wX2tleUJpbmRpbmdBdXRoZW50aWNhdGlvblNpZ25hdHVyZS0+Z2V0UmVmZXJlbmNlTGlzdCgpOworCisJCQlpZiAocmwtPmdldFNpemUoKSAhPSAxKSB7CisJCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsCisJCQkJCSJYS01TQXV0aGVudGljYXRpb25JbXBsOjpsb2FkIC0gS2V5QmluZGluZ0F1dGhlbnRpY2F0aW9uIFNpZ25hdHVyZSB3aXRoIGluY29ycmVjdCBudW1iZXIgb2YgcmVmZXJlbmNlcyBmb3VuZCAoc2hvdWxkIGJlIDEpIik7CisJCQl9CisKKwkJCXNhZmVCdWZmZXIgc2I7CisJCQlzYi5zYlhNTENoSW4oRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyRW1wdHkpOworCQkJc2Iuc2JYTUxDaEFwcGVuZENoKGNoUG91bmQpOworCQkJc2Iuc2JYTUxDaENhdChtcF9rZXlCaW5kaW5nSWQpOworCisJCQlpZiAoIXN0ckVxdWFscyhybC0+aXRlbSgwKS0+Z2V0VVJJKCksIHNiLnJhd1hNTENoQnVmZmVyKCkpKSB7CisJCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsCisJCQkJCSJYS01TQXV0aGVudGljYXRpb25JbXBsOjpsb2FkIC0gS2V5QmluZGluZ0F1dGhlbnRpY2F0aW9uIFNpZ25hdHVyZSByZWZlcnMgdG8gaW5jb3JyZWN0IElkIChzaG91bGQgYmUgZm9yIEtleUJpbmRpbmcpIik7CisJCQl9CisKKwkJCS8vIFdlIGRvbid0IGFjdHVhbGx5IGNoZWNrIHRoZSBzaWduYXR1cmUgYXMgd2UgaGF2ZSBubyBrZXkgbWF0ZXJpYWwgdG8gZG8gc28hCisJCX0KKworCQl0bXBFbHQgPSBmaW5kTmV4dEVsZW1lbnRDaGlsZCh0bXBFbHQpOworCisJfQorCisJaWYgKHRtcEVsdCAhPSBOVUxMICYmIHN0ckVxdWFscyhnZXRYS01TTG9jYWxOYW1lKHRtcEVsdCksIAorCQkJCQkJCQkJWEtNU0NvbnN0YW50czo6c190YWdOb3RCb3VuZEF1dGhlbnRpY2F0aW9uKSkgeworCisJCVhTRUNuZXcobXBfbm90Qm91bmRBdXRoZW50aWNhdGlvbiwgWEtNU05vdEJvdW5kQXV0aGVudGljYXRpb25JbXBsKG1wX2VudiwgdG1wRWx0KSk7CisJCW1wX25vdEJvdW5kQXV0aGVudGljYXRpb24tPmxvYWQoKTsKKworCX0KKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENyZWF0ZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRE9NRWxlbWVudCAqIFhLTVNBdXRoZW50aWNhdGlvbkltcGw6OmNyZWF0ZUJsYW5rQXV0aGVudGljYXRpb24oY29uc3QgWE1MQ2ggKiBpZCkgeworCisJLy8gR2V0IHNvbWUgc2V0dXAgdmFsdWVzCisJc2FmZUJ1ZmZlciBzdHI7CisJRE9NRG9jdW1lbnQgKmRvYyA9IG1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKTsKKwljb25zdCBYTUxDaCAqIHByZWZpeCA9IG1wX2Vudi0+Z2V0WEtNU05TUHJlZml4KCk7CisKKwltYWtlUU5hbWUoc3RyLCBwcmVmaXgsIFhLTVNDb25zdGFudHM6OnNfdGFnQXV0aGVudGljYXRpb24pOworCisJbXBfYXV0aGVudGljYXRpb25FbGVtZW50ID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoWEtNU0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWEtNUywgCisJCQkJCQkJCQkJCQlzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisKKwltcF9lbnYtPmRvUHJldHR5UHJpbnQobXBfYXV0aGVudGljYXRpb25FbGVtZW50KTsKKworCS8vIFRoaXMgaXNuJ3QgdXNlZCBpbW1lZGlhdGVseSAtIGl0IGlzIHNpbXBseSBoZWxkIGZvciB3aGVuIHdlIGNyZWF0ZSBhIHNpZ25hdHVyZQorCW1wX2tleUJpbmRpbmdJZCA9IGlkOworCisJcmV0dXJuIG1wX2F1dGhlbnRpY2F0aW9uRWxlbWVudDsKKworfQorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgSW50ZXJmYWNldCAtIEdldAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRFNJR1NpZ25hdHVyZSAqIFhLTVNBdXRoZW50aWNhdGlvbkltcGw6OmdldEtleUJpbmRpbmdBdXRoZW50aWNhdGlvblNpZ25hdHVyZSh2b2lkKSBjb25zdCB7CisKKwlyZXR1cm4gbXBfa2V5QmluZGluZ0F1dGhlbnRpY2F0aW9uU2lnbmF0dXJlOworCit9CisKK1hLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uICogWEtNU0F1dGhlbnRpY2F0aW9uSW1wbDo6Z2V0Tm90Qm91bmRBdXRoZW50aWNhdGlvbih2b2lkKSBjb25zdCB7CisKKwlyZXR1cm4gbXBfbm90Qm91bmRBdXRoZW50aWNhdGlvbjsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEludGVyZmFjZSAtIFNldAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRFNJR1NpZ25hdHVyZSAqIFhLTVNBdXRoZW50aWNhdGlvbkltcGw6OmFkZEtleUJpbmRpbmdBdXRoZW50aWNhdGlvblNpZ25hdHVyZSgKKwkJY2Fub25pY2FsaXphdGlvbk1ldGhvZCBjbSwKKwkJc2lnbmF0dXJlTWV0aG9kCXNtLAorCQloYXNoTWV0aG9kIGhtKSB7CisKKwlpZiAobXBfa2V5QmluZGluZ0lkID09IE5VTEwpIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsCisJCQkiWEtNU0F1dGhlbnRpY2F0aW9uSW1wbDo6YWRkS2V5QmluZGluZ0F1dGhlbnRpY2F0aW9uU2lnbmF0dXJlIC0gY2FsbGVkIHByaW9yIHRvIGtleSBpbmZvcyBiZWluZyBhZGRlZCIpOworCX0KKworCURTSUdTaWduYXR1cmUgKiByZXQgPSBtX3Byb3YubmV3U2lnbmF0dXJlKCk7CisJRE9NRWxlbWVudCAqIGVsdCA9IHJldC0+Y3JlYXRlQmxhbmtTaWduYXR1cmUobXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpLCBjbSwgc20sIGhtKTsKKworCS8qIENyZWF0ZSB0aGUgZW52ZWxvcGluZyByZWZlcmVuY2UgKi8KKwlzYWZlQnVmZmVyIHNiOworCXNiLnNiWE1MQ2hJbihEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJFbXB0eSk7CisJc2Iuc2JYTUxDaEFwcGVuZENoKGNoUG91bmQpOworCXNiLnNiWE1MQ2hDYXQobXBfa2V5QmluZGluZ0lkKTsKKworCURTSUdSZWZlcmVuY2UgKnJlZiA9IHJldC0+Y3JlYXRlUmVmZXJlbmNlKHNiLnJhd1hNTENoQnVmZmVyKCkpOworCXJlZi0+YXBwZW5kQ2Fub25pY2FsaXphdGlvblRyYW5zZm9ybShDQU5PTl9DMTRORV9DT00pOworCisJLyogRW1iZWQgdGhlIHNpZ25hdHVyZSBpbiB0aGUgZG9jdW1lbnQgaW5zaWRlIGEgS2V5QmluZGluZ0F1dGhlbnRpY2F0aW9uIGVsZW1lbnQgKi8KKwlzYWZlQnVmZmVyIHN0cjsKKwlET01Eb2N1bWVudCAqZG9jID0gbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpOworCWNvbnN0IFhNTENoICogcHJlZml4ID0gbXBfZW52LT5nZXRYS01TTlNQcmVmaXgoKTsKKworCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgWEtNU0NvbnN0YW50czo6c190YWdLZXlCaW5kaW5nQXV0aGVudGljYXRpb24pOworCisJRE9NRWxlbWVudCAqIHQgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TLCAKKwkJCQkJCQkJCQkJCXN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKworCW1wX2Vudi0+ZG9QcmV0dHlQcmludCh0KTsKKwl0LT5hcHBlbmRDaGlsZChlbHQpOworCW1wX2Vudi0+ZG9QcmV0dHlQcmludCh0KTsKKworCW1wX2F1dGhlbnRpY2F0aW9uRWxlbWVudC0+YXBwZW5kQ2hpbGQodCk7CisJbXBfZW52LT5kb1ByZXR0eVByaW50KG1wX2F1dGhlbnRpY2F0aW9uRWxlbWVudCk7CisKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIFhLTVNBdXRoZW50aWNhdGlvbkltcGw6OnNldE5vdEJvdW5kQXV0aGVudGljYXRpb24oCisJCWNvbnN0IFhNTENoICogdXJpLCAKKwkJY29uc3QgWE1MQ2ggKiB2YWx1ZSkgeworCisJWFNFQ25ldyhtcF9ub3RCb3VuZEF1dGhlbnRpY2F0aW9uLCBYS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbkltcGwobXBfZW52KSk7CisJbXBfYXV0aGVudGljYXRpb25FbGVtZW50LT5hcHBlbmRDaGlsZChtcF9ub3RCb3VuZEF1dGhlbnRpY2F0aW9uLT5jcmVhdGVCbGFua05vdEJvdW5kQXV0aGVudGljYXRpb24odXJpLCB2YWx1ZSkpOworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChtcF9hdXRoZW50aWNhdGlvbkVsZW1lbnQpOworCit9CisKZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvaW1wbC9YS01TQXV0aGVudGljYXRpb25JbXBsLmhwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TQXV0aGVudGljYXRpb25JbXBsLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGU5MjA1Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9pbXBsL1hLTVNBdXRoZW50aWNhdGlvbkltcGwuaHBwCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TQXV0aGVudGljYXRpb25JbXBsIDo9IEltcGxlbWVudGF0aW9uIG9mIEF1dGhlbnRpY2F0aW9uIGVsZW1lbnRzCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhLTVNBVVRIRU5USUNBVElPTklNUExfSU5DTFVERQorI2RlZmluZSBYS01TQVVUSEVOVElDQVRJT05JTVBMX0lOQ0xVREUKKworLy8gWFNFQyBJbmNsdWRlcworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNQcm92aWRlci5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNBdXRoZW50aWNhdGlvbi5ocHA+CisKK2NsYXNzIFhLTVNLZXlCaW5kaW5nQXV0aGVudGljYXRpb25JbXBsOworY2xhc3MgWEtNU05vdEJvdW5kQXV0aGVudGljYXRpb25JbXBsOworY2xhc3MgWFNFQ0VudjsKKworWFNFQ19ERUNMQVJFX1hFUkNFU19DTEFTUyhET01FbGVtZW50KTsKKworY2xhc3MgWEtNU0F1dGhlbnRpY2F0aW9uSW1wbCA6IHB1YmxpYyBYS01TQXV0aGVudGljYXRpb24geworCitwdWJsaWM6CisKKwkvKiBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisKKwlYS01TQXV0aGVudGljYXRpb25JbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52CisJKTsKKworCVhLTVNBdXRoZW50aWNhdGlvbkltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYsIAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIG5vZGUKKwkpOworCisJdmlydHVhbCB+WEtNU0F1dGhlbnRpY2F0aW9uSW1wbCgpIDsKKworCS8vIExvYWQKKwkvLyBUaGUgQXV0aGVudGljYXRpb24gbG9hZCBpcyBhIGJpdCBkaWZmZXJlbnQgdG8gb3RoZXJzLCBhcyBpdCBuZWVkcworCS8vIHRvIGtub3cgdGhlIElkIG9mIHRoZSBLZXlCaW5kaW5nIHRoYXQgaXQgaXMgYXV0aGVudGljYXRpb24gc28gdGhhdCBpdAorCS8vIGNhbiBjaGVjayBpdCBpcyB2YWxpZCBpbiB0aGUgc2lnbmF0dXJlCisKKwl2b2lkIGxvYWQoY29uc3QgWE1MQ2ggKiBpZCk7CisKKwkvLyBDcmVhdGUKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqCisJCWNyZWF0ZUJsYW5rQXV0aGVudGljYXRpb24oY29uc3QgWE1MQ2ggKiBpZCk7CisKKwkvLyBJbnRlcmZhY2UgR0VUIG1ldGhvZHMKKworCXZpcnR1YWwgRFNJR1NpZ25hdHVyZSAqIGdldEtleUJpbmRpbmdBdXRoZW50aWNhdGlvblNpZ25hdHVyZSh2b2lkKSBjb25zdDsKKwl2aXJ0dWFsIFhLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uICogZ2V0Tm90Qm91bmRBdXRoZW50aWNhdGlvbih2b2lkKSBjb25zdDsKKworCS8vIEludGVyZmFjZSBTZXQgbWV0aG9kcworCisJdmlydHVhbCBEU0lHU2lnbmF0dXJlICogYWRkS2V5QmluZGluZ0F1dGhlbnRpY2F0aW9uU2lnbmF0dXJlKAorCQljYW5vbmljYWxpemF0aW9uTWV0aG9kIGNtID0gQ0FOT05fQzE0TkVfTk9DLAorCQlzaWduYXR1cmVNZXRob2QJc20gPSBTSUdOQVRVUkVfSE1BQywKKwkJaGFzaE1ldGhvZCBobSA9IEhBU0hfU0hBMSk7CisJdmlydHVhbCB2b2lkIHNldE5vdEJvdW5kQXV0aGVudGljYXRpb24oY29uc3QgWE1MQ2ggKiB1cmksIGNvbnN0IFhNTENoICogdmFsdWUpOworCitwcml2YXRlOgorCisJY29uc3QgWFNFQ0VudgkJKiBtcF9lbnY7CisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudAorCQkJCQkqIG1wX2F1dGhlbnRpY2F0aW9uRWxlbWVudDsKKworCVhTRUNQcm92aWRlcgltX3Byb3Y7CisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudAorCQkJCQkqIG1wX2tleUJpbmRpbmdBdXRoZW50aWNhdGlvblNpZ25hdHVyZUVsZW1lbnQ7CisJRFNJR1NpZ25hdHVyZQkJCQkJKiBtcF9rZXlCaW5kaW5nQXV0aGVudGljYXRpb25TaWduYXR1cmU7CisJWEtNU05vdEJvdW5kQXV0aGVudGljYXRpb25JbXBsCSogbXBfbm90Qm91bmRBdXRoZW50aWNhdGlvbjsKKworCWNvbnN0IFhNTENoCQkqIG1wX2tleUJpbmRpbmdJZDsKKworCS8vIFVuaW1wbGVtZW50ZWQKKwlYS01TQXV0aGVudGljYXRpb25JbXBsKHZvaWQpOworCVhLTVNBdXRoZW50aWNhdGlvbkltcGwoY29uc3QgWEtNU0F1dGhlbnRpY2F0aW9uSW1wbCAmKTsKKwlYS01TQXV0aGVudGljYXRpb25JbXBsICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU0F1dGhlbnRpY2F0aW9uSW1wbCAmKTsKKworfTsKKworI2VuZGlmIC8qIFhLTVNBVVRIRU5USUNBVElPTklNUExfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNDb21wb3VuZFJlcXVlc3RJbXBsLmNwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TQ29tcG91bmRSZXF1ZXN0SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNkMTYwNgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TQ29tcG91bmRSZXF1ZXN0SW1wbC5jcHAKQEAgLTAsMCArMSwyNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNDb21wb3VuZFJlcXVlc3RJbXBsIDo9IEltcGxlbWVudGF0aW9uIG9mIENvbXBvdW5kUmVxdWVzdCBNZXNzYWdlcworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0NvbnN0YW50cy5ocHA+CisKKyNpbmNsdWRlICJYS01TQ29tcG91bmRSZXF1ZXN0SW1wbC5ocHAiCisjaW5jbHVkZSAiWEtNU0xvY2F0ZVJlcXVlc3RJbXBsLmhwcCIKKyNpbmNsdWRlICJYS01TVmFsaWRhdGVSZXF1ZXN0SW1wbC5ocHAiCisjaW5jbHVkZSAiWEtNU1JlZ2lzdGVyUmVxdWVzdEltcGwuaHBwIgorI2luY2x1ZGUgIlhLTVNSZXZva2VSZXF1ZXN0SW1wbC5ocHAiCisjaW5jbHVkZSAiWEtNU1JlaXNzdWVSZXF1ZXN0SW1wbC5ocHAiCisjaW5jbHVkZSAiWEtNU1JlY292ZXJSZXF1ZXN0SW1wbC5ocHAiCisKKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdHJ1Y3QvRGVzdHJ1Y3QKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hLTVNDb21wb3VuZFJlcXVlc3RJbXBsOjpYS01TQ29tcG91bmRSZXF1ZXN0SW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudikgOgorbV9yZXF1ZXN0KGVudiksCittX21zZyhtX3JlcXVlc3QubV9tc2cpIHsKKworfQorCitYS01TQ29tcG91bmRSZXF1ZXN0SW1wbDo6WEtNU0NvbXBvdW5kUmVxdWVzdEltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYsIAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIG5vZGUpIDoKK21fcmVxdWVzdChlbnYsIG5vZGUpLAorbV9tc2cobV9yZXF1ZXN0Lm1fbXNnKSB7CisKK30KKworWEtNU0NvbXBvdW5kUmVxdWVzdEltcGw6On5YS01TQ29tcG91bmRSZXF1ZXN0SW1wbCgpIHsKKworCVJlcXVlc3RMaXN0VmVjdG9yVHlwZTo6aXRlcmF0b3IgaTsKKworCWZvciAoaSA9IG1fcmVxdWVzdExpc3QuYmVnaW4oKSA7IGkgPCBtX3JlcXVlc3RMaXN0LmVuZCgpOyBpKyspIHsKKworCQlkZWxldGUgKCppKTsKKworCX0KKworCit9CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBMb2FkIGZyb20gRE9NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBMb2FkIGVsZW1lbnRzCit2b2lkIFhLTVNDb21wb3VuZFJlcXVlc3RJbXBsOjpsb2FkKCkgeworCisJaWYgKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50ID09IE5VTEwpIHsKKworCQkvLyBBdHRlbXB0IHRvIGxvYWQgYW4gZW1wdHkgZWxlbWVudAorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwKKwkJCSJYS01TQ29tcG91bmRSZXF1ZXN0Ojpsb2FkIC0gY2FsbGVkIG9uIGVtcHR5IERPTSIpOworCisJfQorCisJaWYgKCFzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZShtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCksIAorCQkJCQkJCQkJWEtNU0NvbnN0YW50czo6c190YWdDb21wb3VuZFJlcXVlc3QpKSB7CisJCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLAorCQkJIlhLTVNDb21wb3VuZFJlcXVlc3Q6OmxvYWQgLSBjYWxsZWQgaW5jb3JyZWN0IG5vZGUiKTsKKwkKKwl9CisKKwkvLyBMb2FkIHRoZSBiYXNlIG1lc3NhZ2UKKwltX3JlcXVlc3QubG9hZCgpOworCisJLy8gTm93IGZpbmQgYWxsIFJlcXVlc3QgZWxlbWVudHMKKwlET01FbGVtZW50ICogZSA9IGZpbmRGaXJzdEVsZW1lbnRDaGlsZChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCk7CisKKwl3aGlsZSAoZSAhPSBOVUxMKSB7CisKKwkJaWYgKHN0ckVxdWFscyhnZXRYS01TTG9jYWxOYW1lKGUpLCBYS01TQ29uc3RhbnRzOjpzX3RhZ0xvY2F0ZVJlcXVlc3QpIHx8CisJCQlzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZShlKSwgWEtNU0NvbnN0YW50czo6c190YWdWYWxpZGF0ZVJlcXVlc3QpKSB7CisKKwkJCS8vIEhhdmUgYSBsZWdpdGltYXRlIHJlcXVlc3QgdG8gbG9hZAorCQkJWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsICogbSA9IAorCQkJCShYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGwgKikgbV9mYWN0b3J5Lm5ld01lc3NhZ2VGcm9tRE9NKGUpOworCQkJbV9yZXF1ZXN0TGlzdC5wdXNoX2JhY2soKFhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbCAqKSBtKTsKKworCQl9CisKKwkJZSA9IGZpbmROZXh0RWxlbWVudENoaWxkKGUpOworCisJfQorCQorCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ3JlYXRlIGEgYmxhbmsgb25lCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRE9NRWxlbWVudCAqIFhLTVNDb21wb3VuZFJlcXVlc3RJbXBsOjpjcmVhdGVCbGFua0NvbXBvdW5kUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQljb25zdCBYTUxDaCAqIGlkKSB7CisKKwlyZXR1cm4gbV9yZXF1ZXN0LmNyZWF0ZUJsYW5rUmVxdWVzdEFic3RyYWN0VHlwZSgKKwkJWEtNU0NvbnN0YW50czo6c190YWdDb21wb3VuZFJlcXVlc3QsIHNlcnZpY2UsIGlkKTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdldCBpbnRlcmZhY2UgbWV0aG9kcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGU6Om1lc3NhZ2VUeXBlIFhLTVNDb21wb3VuZFJlcXVlc3RJbXBsOjpnZXRNZXNzYWdlVHlwZSh2b2lkKSB7CisKKwlyZXR1cm4gWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsOjpDb21wb3VuZFJlcXVlc3Q7CisKK30KKworaW50IFhLTVNDb21wb3VuZFJlcXVlc3RJbXBsOjpnZXRSZXF1ZXN0TGlzdFNpemUodm9pZCkgeworCisJcmV0dXJuIChpbnQpIG1fcmVxdWVzdExpc3Quc2l6ZSgpOworCit9CisKK1hLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlICogWEtNU0NvbXBvdW5kUmVxdWVzdEltcGw6OmdldFJlcXVlc3RMaXN0SXRlbShpbnQgaXRlbSkgeworCisJaWYgKGl0ZW0gPCAwIHx8IGl0ZW0gPj0gKGludCkgbV9yZXF1ZXN0TGlzdC5zaXplKCkpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwKKwkJCSJYS01TQ29tcG91bmRSZXF1ZXN0OjpnZXRSZXF1ZXN0TGlzdEl0ZW0gLSBpdGVtIG91dCBvZiByYW5nZSIpOworCX0KKworCXJldHVybiBtX3JlcXVlc3RMaXN0W2l0ZW1dOworCisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBTZXR0ZXIgbWV0aG9kcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWEtNU0xvY2F0ZVJlcXVlc3QgKiBYS01TQ29tcG91bmRSZXF1ZXN0SW1wbDo6Y3JlYXRlTG9jYXRlUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQljb25zdCBYTUxDaCAqIGlkKSB7CisKKwlYS01TTG9jYXRlUmVxdWVzdCAqIHIgPSBtX2ZhY3RvcnkuY3JlYXRlTG9jYXRlUmVxdWVzdChzZXJ2aWNlLCBtX21zZy5tcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCksIGlkKTsKKwltX3JlcXVlc3RMaXN0LnB1c2hfYmFjaygoWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsKikgcik7CisKKwltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+YXBwZW5kQ2hpbGQoci0+Z2V0RWxlbWVudCgpKTsKKwltX21zZy5tcF9lbnYtPmRvUHJldHR5UHJpbnQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOworCisJcmV0dXJuIHI7CisKK30KKworWEtNU1ZhbGlkYXRlUmVxdWVzdCAqIFhLTVNDb21wb3VuZFJlcXVlc3RJbXBsOjpjcmVhdGVWYWxpZGF0ZVJlcXVlc3QoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJY29uc3QgWE1MQ2ggKiBpZCkgeworCisJWEtNU1ZhbGlkYXRlUmVxdWVzdCAqIHIgPSBtX2ZhY3RvcnkuY3JlYXRlVmFsaWRhdGVSZXF1ZXN0KHNlcnZpY2UsIG1fbXNnLm1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKSwgaWQpOworCW1fcmVxdWVzdExpc3QucHVzaF9iYWNrKChYS01TUmVxdWVzdEFic3RyYWN0VHlwZUltcGwqKSByKTsKKworCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5hcHBlbmRDaGlsZChyLT5nZXRFbGVtZW50KCkpOworCW1fbXNnLm1wX2Vudi0+ZG9QcmV0dHlQcmludChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCk7CisKKwlyZXR1cm4gcjsKK30KKworWEtNU1JlZ2lzdGVyUmVxdWVzdCAqIFhLTVNDb21wb3VuZFJlcXVlc3RJbXBsOjpjcmVhdGVSZWdpc3RlclJlcXVlc3QoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJY29uc3QgWE1MQ2ggKiBpZCkgeworCisJWEtNU1JlZ2lzdGVyUmVxdWVzdCAqIHIgPSBtX2ZhY3RvcnkuY3JlYXRlUmVnaXN0ZXJSZXF1ZXN0KHNlcnZpY2UsIG1fbXNnLm1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKSwgaWQpOworCW1fcmVxdWVzdExpc3QucHVzaF9iYWNrKChYS01TUmVxdWVzdEFic3RyYWN0VHlwZUltcGwqKSByKTsKKworCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5hcHBlbmRDaGlsZChyLT5nZXRFbGVtZW50KCkpOworCW1fbXNnLm1wX2Vudi0+ZG9QcmV0dHlQcmludChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCk7CisKKwlyZXR1cm4gcjsKK30KKworWEtNU1Jldm9rZVJlcXVlc3QgKiBYS01TQ29tcG91bmRSZXF1ZXN0SW1wbDo6Y3JlYXRlUmV2b2tlUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQljb25zdCBYTUxDaCAqIGlkKSB7CisKKwlYS01TUmV2b2tlUmVxdWVzdCAqIHIgPSBtX2ZhY3RvcnkuY3JlYXRlUmV2b2tlUmVxdWVzdChzZXJ2aWNlLCBtX21zZy5tcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCksIGlkKTsKKwltX3JlcXVlc3RMaXN0LnB1c2hfYmFjaygoWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsKikgcik7CisKKwltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+YXBwZW5kQ2hpbGQoci0+Z2V0RWxlbWVudCgpKTsKKwltX21zZy5tcF9lbnYtPmRvUHJldHR5UHJpbnQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOworCisJcmV0dXJuIHI7Cit9CisKK1hLTVNSZWlzc3VlUmVxdWVzdCAqIFhLTVNDb21wb3VuZFJlcXVlc3RJbXBsOjpjcmVhdGVSZWlzc3VlUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQljb25zdCBYTUxDaCAqIGlkKSB7CisKKwlYS01TUmVpc3N1ZVJlcXVlc3QgKiByID0gbV9mYWN0b3J5LmNyZWF0ZVJlaXNzdWVSZXF1ZXN0KHNlcnZpY2UsIG1fbXNnLm1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKSwgaWQpOworCW1fcmVxdWVzdExpc3QucHVzaF9iYWNrKChYS01TUmVxdWVzdEFic3RyYWN0VHlwZUltcGwqKSByKTsKKworCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5hcHBlbmRDaGlsZChyLT5nZXRFbGVtZW50KCkpOworCW1fbXNnLm1wX2Vudi0+ZG9QcmV0dHlQcmludChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCk7CisKKwlyZXR1cm4gcjsKK30KKworWEtNU1JlY292ZXJSZXF1ZXN0ICogWEtNU0NvbXBvdW5kUmVxdWVzdEltcGw6OmNyZWF0ZVJlY292ZXJSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCWNvbnN0IFhNTENoICogaWQpIHsKKworCVhLTVNSZWNvdmVyUmVxdWVzdCAqIHIgPSBtX2ZhY3RvcnkuY3JlYXRlUmVjb3ZlclJlcXVlc3Qoc2VydmljZSwgbV9tc2cubXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpLCBpZCk7CisJbV9yZXF1ZXN0TGlzdC5wdXNoX2JhY2soKFhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbCopIHIpOworCisJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmFwcGVuZENoaWxkKHItPmdldEVsZW1lbnQoKSk7CisJbV9tc2cubXBfZW52LT5kb1ByZXR0eVByaW50KG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KTsKKworCXJldHVybiByOworfQorCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU0NvbXBvdW5kUmVxdWVzdEltcGwuaHBwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNDb21wb3VuZFJlcXVlc3RJbXBsLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2ViOWIwCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9pbXBsL1hLTVNDb21wb3VuZFJlcXVlc3RJbXBsLmhwcApAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU0NvbXBvdW5kUmVxdWVzdEltcGwgOj0gSW1wbGVtZW50YXRpb24gb2YgQ29tcG91bmRSZXF1ZXN0IE1lc3NhZ2VzCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhLTVNDT01QT1VORFJFUVVFU1RJTVBMX0lOQ0xVREUKKyNkZWZpbmUgWEtNU0NPTVBPVU5EUkVRVUVTVElNUExfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNDb21wb3VuZFJlcXVlc3QuaHBwPgorCisjaW5jbHVkZSAiWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsLmhwcCIKKyNpbmNsdWRlICJYS01TTWVzc2FnZUZhY3RvcnlJbXBsLmhwcCIKKworY2xhc3MgWEtNU1F1ZXJ5S2V5UmVxdWVzdEltcGw7CisKK2NsYXNzIFhLTVNDb21wb3VuZFJlcXVlc3RJbXBsIDogcHVibGljIFhLTVNDb21wb3VuZFJlcXVlc3QgeworCitwdWJsaWM6CisKKwlYS01TUmVxdWVzdEFic3RyYWN0VHlwZUltcGwgbV9yZXF1ZXN0OworCVhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbCAmbV9tc2c7CisKK3B1YmxpYzoKKworCVhLTVNDb21wb3VuZFJlcXVlc3RJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52CisJKTsKKworCVhLTVNDb21wb3VuZFJlcXVlc3RJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52LCAKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBub2RlCisJKTsKKworCXZpcnR1YWwgflhLTVNDb21wb3VuZFJlcXVlc3RJbXBsKCk7CisKKwkvLyBMb2FkIGVsZW1lbnRzCisJdm9pZCBsb2FkKCk7CisKKwkvLyBDcmVhdGlvbgorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogCisJCWNyZWF0ZUJsYW5rQ29tcG91bmRSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKTsKKworCS8vIEdldHRlciBtZXRob2RzCisKKwl2aXJ0dWFsIGludCBnZXRSZXF1ZXN0TGlzdFNpemUodm9pZCk7CisJdmlydHVhbCBYS01TUmVxdWVzdEFic3RyYWN0VHlwZSAqIGdldFJlcXVlc3RMaXN0SXRlbShpbnQgaXRlbSk7CisKKwkvKiBJbXBsZW1lbnRlZCBmcm9tIE1lc3NhZ2VBYnN0cmFjdFR5cGUgKi8KKwl2aXJ0dWFsIG1lc3NhZ2VUeXBlIGdldE1lc3NhZ2VUeXBlKHZvaWQpOworCisJLy8gU2V0dGVyIE1ldGhvZHMKKworCXZpcnR1YWwgWEtNU0xvY2F0ZVJlcXVlc3QgKiBjcmVhdGVMb2NhdGVSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKTsKKworCXZpcnR1YWwgWEtNU1ZhbGlkYXRlUmVxdWVzdCAqIGNyZWF0ZVZhbGlkYXRlUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCk7CisJdmlydHVhbCBYS01TUmVnaXN0ZXJSZXF1ZXN0ICogY3JlYXRlUmVnaXN0ZXJSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKTsKKwl2aXJ0dWFsIFhLTVNSZXZva2VSZXF1ZXN0ICogY3JlYXRlUmV2b2tlUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCk7CisJdmlydHVhbCBYS01TUmVjb3ZlclJlcXVlc3QgKiBjcmVhdGVSZWNvdmVyUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCk7CisJdmlydHVhbCBYS01TUmVpc3N1ZVJlcXVlc3QgKiBjcmVhdGVSZWlzc3VlUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCk7CisKKwkvKiBGb3JjZWQgaW5oZXJpdGFuY2UgZnJvbSBYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGwgKi8KKwlYS01TX01FU1NBR0VBQlNUUkFDVFlQRV9JTVBMX01FVEhPRFMgCisKKwkvKiBGb3JjZWQgaW5oZXJpdGFuY2UgZnJvbSBSZXF1ZXN0QWJzdHJhY3RUeXBlICovCisJWEtNU19SRVFVRVNUQUJTVFJBQ1RZUEVfSU1QTF9NRVRIT0RTCisKK3ByaXZhdGU6CisKKyNpZiBkZWZpbmVkKFhTRUNfTk9fTkFNRVNQQUNFUykKKwl0eXBlZGVmIHZlY3RvcjxYS01TUmVxdWVzdEFic3RyYWN0VHlwZUltcGwgKj4JCVJlcXVlc3RMaXN0VmVjdG9yVHlwZTsKKyNlbHNlCisJdHlwZWRlZiBzdGQ6OnZlY3RvcjxYS01TUmVxdWVzdEFic3RyYWN0VHlwZUltcGwgKj4JUmVxdWVzdExpc3RWZWN0b3JUeXBlOworI2VuZGlmCisKKwlSZXF1ZXN0TGlzdFZlY3RvclR5cGUJbV9yZXF1ZXN0TGlzdDsKKworCS8qIFVzZWQgdG8gY29uc3VtZSBhbmQgcHJvZHVjZSBtZXNzYWdlcyBpbiB0aGUgbGlzdCAqLworCVhLTVNNZXNzYWdlRmFjdG9yeUltcGwJbV9mYWN0b3J5OworCisJLy8gVW5pbXBsZW1lbnRlZAorCVhLTVNDb21wb3VuZFJlcXVlc3RJbXBsKGNvbnN0IFhLTVNDb21wb3VuZFJlcXVlc3RJbXBsICYpOworCVhLTVNDb21wb3VuZFJlcXVlc3RJbXBsICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU0NvbXBvdW5kUmVxdWVzdEltcGwgJik7CisKK307CisKKyNlbmRpZiAvKiBYS01TQ09NUE9VTkRSRVFVRVNUSU1QTF9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU0NvbXBvdW5kUmVzdWx0SW1wbC5jcHAgYi9jL3NyYy94a21zL2ltcGwvWEtNU0NvbXBvdW5kUmVzdWx0SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNmMmVmNQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TQ29tcG91bmRSZXN1bHRJbXBsLmNwcApAQCAtMCwwICsxLDMwMiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU0NvbXBvdW5kUmVzdWx0SW1wbCA6PSBJbXBsZW1lbnRhdGlvbiBvZiBDb21wb3VuZFJlc3VsdCBNZXNzYWdlcworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0NvbnN0YW50cy5ocHA+CisKKyNpbmNsdWRlICJYS01TQ29tcG91bmRSZXN1bHRJbXBsLmhwcCIKKyNpbmNsdWRlICJYS01TTG9jYXRlUmVzdWx0SW1wbC5ocHAiCisjaW5jbHVkZSAiWEtNU1N0YXR1c1Jlc3VsdEltcGwuaHBwIgorI2luY2x1ZGUgIlhLTVNWYWxpZGF0ZVJlc3VsdEltcGwuaHBwIgorI2luY2x1ZGUgIlhLTVNSZWdpc3RlclJlc3VsdEltcGwuaHBwIgorI2luY2x1ZGUgIlhLTVNSZXZva2VSZXN1bHRJbXBsLmhwcCIKKyNpbmNsdWRlICJYS01TUmVpc3N1ZVJlc3VsdEltcGwuaHBwIgorI2luY2x1ZGUgIlhLTVNSZWNvdmVyUmVzdWx0SW1wbC5ocHAiCisjaW5jbHVkZSAiWEtNU1Jlc3VsdEltcGwuaHBwIgorCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ29uc3RydWN0L0Rlc3RydWN0CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYS01TQ29tcG91bmRSZXN1bHRJbXBsOjpYS01TQ29tcG91bmRSZXN1bHRJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52KSA6CittX3Jlc3VsdChlbnYpLAorbV9tc2cobV9yZXN1bHQubV9tc2cpIHsKKworfQorCitYS01TQ29tcG91bmRSZXN1bHRJbXBsOjpYS01TQ29tcG91bmRSZXN1bHRJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52LCAKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBub2RlKSA6CittX3Jlc3VsdChlbnYsIG5vZGUpLAorbV9tc2cobV9yZXN1bHQubV9tc2cpeworCit9CisKK1hLTVNDb21wb3VuZFJlc3VsdEltcGw6On5YS01TQ29tcG91bmRSZXN1bHRJbXBsKCkgeworCisJUmVzdWx0TGlzdFZlY3RvclR5cGU6Oml0ZXJhdG9yIGk7CisKKwlmb3IgKGkgPSBtX3Jlc3VsdExpc3QuYmVnaW4oKSA7IGkgPCBtX3Jlc3VsdExpc3QuZW5kKCk7IGkrKykgeworCisJCWRlbGV0ZSAoKmkpOworCisJfQorCisKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIExvYWQgZnJvbSBET00KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIExvYWQgZWxlbWVudHMKK3ZvaWQgWEtNU0NvbXBvdW5kUmVzdWx0SW1wbDo6bG9hZCgpIHsKKworCWlmIChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCA9PSBOVUxMKSB7CisKKwkJLy8gQXR0ZW1wdCB0byBsb2FkIGFuIGVtcHR5IGVsZW1lbnQKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsCisJCQkiWEtNU0NvbXBvdW5kUmVzdWx0Ojpsb2FkIC0gY2FsbGVkIG9uIGVtcHR5IERPTSIpOworCisJfQorCisJaWYgKCFzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZShtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCksIAorCQkJCQkJCQkJWEtNU0NvbnN0YW50czo6c190YWdDb21wb3VuZFJlc3VsdCkpIHsKKwkKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsCisJCQkiWEtNU0NvbXBvdW5kUmVzdWx0Ojpsb2FkIC0gY2FsbGVkIGluY29ycmVjdCBub2RlIik7CisJCisJfQorCisJLy8gTG9hZCB0aGUgYmFzZSBtZXNzYWdlCisJbV9yZXN1bHQubG9hZCgpOworCisJLy8gTm93IGZpbmQgYWxsIFJlc3VsdCBlbGVtZW50cworCURPTUVsZW1lbnQgKiBlID0gZmluZEZpcnN0RWxlbWVudENoaWxkKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KTsKKworCXdoaWxlIChlICE9IE5VTEwpIHsKKworCQlpZiAoc3RyRXF1YWxzKGdldFhLTVNMb2NhbE5hbWUoZSksIFhLTVNDb25zdGFudHM6OnNfdGFnTG9jYXRlUmVzdWx0KSB8fAorCQkJc3RyRXF1YWxzKGdldFhLTVNMb2NhbE5hbWUoZSksIFhLTVNDb25zdGFudHM6OnNfdGFnVmFsaWRhdGVSZXN1bHQpKSB7CisKKwkJCS8vIEhhdmUgYSBsZWdpdGltYXRlIFJlc3VsdCB0byBsb2FkCisJCQlYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGwgKiBtID0gCisJCQkJKFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbCAqKSBtX2ZhY3RvcnkubmV3TWVzc2FnZUZyb21ET00oZSk7CisJCQltX3Jlc3VsdExpc3QucHVzaF9iYWNrKChYS01TUmVzdWx0VHlwZUltcGwgKikgbSk7CisKKwkJfQorCisJCWUgPSBmaW5kTmV4dEVsZW1lbnRDaGlsZChlKTsKKworCX0KKwkKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENyZWF0ZSBhIGJsYW5rIG9uZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0RPTUVsZW1lbnQgKiBYS01TQ29tcG91bmRSZXN1bHRJbXBsOjpjcmVhdGVCbGFua0NvbXBvdW5kUmVzdWx0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCWNvbnN0IFhNTENoICogaWQsCisJCVJlc3VsdE1ham9yIHJtYWosCisJCVJlc3VsdE1pbm9yIHJtaW4pIHsKKworCXJldHVybiBtX3Jlc3VsdC5jcmVhdGVCbGFua1Jlc3VsdFR5cGUoCisJCVhLTVNDb25zdGFudHM6OnNfdGFnQ29tcG91bmRSZXN1bHQsIHNlcnZpY2UsIGlkLCBybWFqLCBybWluKTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdldCBpbnRlcmZhY2UgbWV0aG9kcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGU6Om1lc3NhZ2VUeXBlIFhLTVNDb21wb3VuZFJlc3VsdEltcGw6OmdldE1lc3NhZ2VUeXBlKHZvaWQpIHsKKworCXJldHVybiBYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGw6OkNvbXBvdW5kUmVzdWx0OworCit9CisKK2ludCBYS01TQ29tcG91bmRSZXN1bHRJbXBsOjpnZXRSZXN1bHRMaXN0U2l6ZSh2b2lkKSB7CisKKwlyZXR1cm4gKGludCkgbV9yZXN1bHRMaXN0LnNpemUoKTsKKworfQorCitYS01TUmVzdWx0VHlwZSAqIFhLTVNDb21wb3VuZFJlc3VsdEltcGw6OmdldFJlc3VsdExpc3RJdGVtKGludCBpdGVtKSB7CisKKwlpZiAoaXRlbSA8IDAgfHwgaXRlbSA+PSAoaW50KSBtX3Jlc3VsdExpc3Quc2l6ZSgpKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsCisJCQkiWEtNU0NvbXBvdW5kUmVzdWx0OjpnZXRSZXN1bHRMaXN0SXRlbSAtIGl0ZW0gb3V0IG9mIHJhbmdlIik7CisJfQorCisJcmV0dXJuIG1fcmVzdWx0TGlzdFtpdGVtXTsKKworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU2V0dGVyIG1ldGhvZHMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hLTVNMb2NhdGVSZXN1bHQgKiBYS01TQ29tcG91bmRSZXN1bHRJbXBsOjpjcmVhdGVMb2NhdGVSZXN1bHQoCisJCVhLTVNMb2NhdGVSZXF1ZXN0ICogcmVxdWVzdCwKKwkJUmVzdWx0TWFqb3Igcm1haiwKKwkJUmVzdWx0TWlub3Igcm1pbiwKKwkJY29uc3QgWE1MQ2ggKiBpZCkgeworCisJWEtNU0xvY2F0ZVJlc3VsdCAqIHIgPSBtX2ZhY3RvcnkuY3JlYXRlTG9jYXRlUmVzdWx0KHJlcXVlc3QsIG1fbXNnLm1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKSwgcm1haiwgcm1pbiwgaWQpOworCW1fcmVzdWx0TGlzdC5wdXNoX2JhY2soKFhLTVNSZXN1bHRUeXBlSW1wbCopIHIpOworCisJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmFwcGVuZENoaWxkKHItPmdldEVsZW1lbnQoKSk7CisJbV9tc2cubXBfZW52LT5kb1ByZXR0eVByaW50KG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KTsKKworCXJldHVybiByOworCit9CisKK1hLTVNWYWxpZGF0ZVJlc3VsdCAqIFhLTVNDb21wb3VuZFJlc3VsdEltcGw6OmNyZWF0ZVZhbGlkYXRlUmVzdWx0KAorCQlYS01TVmFsaWRhdGVSZXF1ZXN0ICogcmVxdWVzdCwKKwkJUmVzdWx0TWFqb3Igcm1haiwKKwkJUmVzdWx0TWlub3Igcm1pbiwKKwkJY29uc3QgWE1MQ2ggKiBpZCkgeworCisJWEtNU1ZhbGlkYXRlUmVzdWx0ICogciA9IG1fZmFjdG9yeS5jcmVhdGVWYWxpZGF0ZVJlc3VsdChyZXF1ZXN0LCBtX21zZy5tcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCksIHJtYWosIHJtaW4sIGlkKTsKKwltX3Jlc3VsdExpc3QucHVzaF9iYWNrKChYS01TUmVzdWx0VHlwZUltcGwqKSByKTsKKworCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5hcHBlbmRDaGlsZChyLT5nZXRFbGVtZW50KCkpOworCW1fbXNnLm1wX2Vudi0+ZG9QcmV0dHlQcmludChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCk7CisKKwlyZXR1cm4gcjsKKworfQorCitYS01TU3RhdHVzUmVzdWx0ICogWEtNU0NvbXBvdW5kUmVzdWx0SW1wbDo6Y3JlYXRlU3RhdHVzUmVzdWx0KAorCQlYS01TU3RhdHVzUmVxdWVzdCAqIHJlcXVlc3QsCisJCVJlc3VsdE1ham9yIHJtYWosCisJCVJlc3VsdE1pbm9yIHJtaW4sCisJCWNvbnN0IFhNTENoICogaWQpIHsKKworCVhLTVNTdGF0dXNSZXN1bHQgKiByID0gbV9mYWN0b3J5LmNyZWF0ZVN0YXR1c1Jlc3VsdChyZXF1ZXN0LCBtX21zZy5tcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCksIHJtYWosIHJtaW4sIGlkKTsKKwltX3Jlc3VsdExpc3QucHVzaF9iYWNrKChYS01TUmVzdWx0VHlwZUltcGwqKSByKTsKKworCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5hcHBlbmRDaGlsZChyLT5nZXRFbGVtZW50KCkpOworCW1fbXNnLm1wX2Vudi0+ZG9QcmV0dHlQcmludChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCk7CisKKwlyZXR1cm4gcjsKKworfQorCitYS01TUmVnaXN0ZXJSZXN1bHQgKiBYS01TQ29tcG91bmRSZXN1bHRJbXBsOjpjcmVhdGVSZWdpc3RlclJlc3VsdCgKKwkJWEtNU1JlZ2lzdGVyUmVxdWVzdCAqIHJlcXVlc3QsCisJCVJlc3VsdE1ham9yIHJtYWosCisJCVJlc3VsdE1pbm9yIHJtaW4sCisJCWNvbnN0IFhNTENoICogaWQpIHsKKworCVhLTVNSZWdpc3RlclJlc3VsdCAqIHIgPSBtX2ZhY3RvcnkuY3JlYXRlUmVnaXN0ZXJSZXN1bHQocmVxdWVzdCwgbV9tc2cubXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpLCBybWFqLCBybWluLCBpZCk7CisJbV9yZXN1bHRMaXN0LnB1c2hfYmFjaygoWEtNU1Jlc3VsdFR5cGVJbXBsKikgcik7CisKKwltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+YXBwZW5kQ2hpbGQoci0+Z2V0RWxlbWVudCgpKTsKKwltX21zZy5tcF9lbnYtPmRvUHJldHR5UHJpbnQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOworCisJcmV0dXJuIHI7CisKK30KKworWEtNU1Jldm9rZVJlc3VsdCAqIFhLTVNDb21wb3VuZFJlc3VsdEltcGw6OmNyZWF0ZVJldm9rZVJlc3VsdCgKKwkJWEtNU1Jldm9rZVJlcXVlc3QgKiByZXF1ZXN0LAorCQlSZXN1bHRNYWpvciBybWFqLAorCQlSZXN1bHRNaW5vciBybWluLAorCQljb25zdCBYTUxDaCAqIGlkKSB7CisKKwlYS01TUmV2b2tlUmVzdWx0ICogciA9IG1fZmFjdG9yeS5jcmVhdGVSZXZva2VSZXN1bHQocmVxdWVzdCwgbV9tc2cubXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpLCBybWFqLCBybWluLCBpZCk7CisJbV9yZXN1bHRMaXN0LnB1c2hfYmFjaygoWEtNU1Jlc3VsdFR5cGVJbXBsKikgcik7CisKKwltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+YXBwZW5kQ2hpbGQoci0+Z2V0RWxlbWVudCgpKTsKKwltX21zZy5tcF9lbnYtPmRvUHJldHR5UHJpbnQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOworCisJcmV0dXJuIHI7CisKK30KKworWEtNU1JlY292ZXJSZXN1bHQgKiBYS01TQ29tcG91bmRSZXN1bHRJbXBsOjpjcmVhdGVSZWNvdmVyUmVzdWx0KAorCQlYS01TUmVjb3ZlclJlcXVlc3QgKiByZXF1ZXN0LAorCQlSZXN1bHRNYWpvciBybWFqLAorCQlSZXN1bHRNaW5vciBybWluLAorCQljb25zdCBYTUxDaCAqIGlkKSB7CisKKwlYS01TUmVjb3ZlclJlc3VsdCAqIHIgPSBtX2ZhY3RvcnkuY3JlYXRlUmVjb3ZlclJlc3VsdChyZXF1ZXN0LCBtX21zZy5tcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCksIHJtYWosIHJtaW4sIGlkKTsKKwltX3Jlc3VsdExpc3QucHVzaF9iYWNrKChYS01TUmVzdWx0VHlwZUltcGwqKSByKTsKKworCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5hcHBlbmRDaGlsZChyLT5nZXRFbGVtZW50KCkpOworCW1fbXNnLm1wX2Vudi0+ZG9QcmV0dHlQcmludChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCk7CisKKwlyZXR1cm4gcjsKKworfQorCitYS01TUmVpc3N1ZVJlc3VsdCAqIFhLTVNDb21wb3VuZFJlc3VsdEltcGw6OmNyZWF0ZVJlaXNzdWVSZXN1bHQoCisJCVhLTVNSZWlzc3VlUmVxdWVzdCAqIHJlcXVlc3QsCisJCVJlc3VsdE1ham9yIHJtYWosCisJCVJlc3VsdE1pbm9yIHJtaW4sCisJCWNvbnN0IFhNTENoICogaWQpIHsKKworCVhLTVNSZWlzc3VlUmVzdWx0ICogciA9IG1fZmFjdG9yeS5jcmVhdGVSZWlzc3VlUmVzdWx0KHJlcXVlc3QsIG1fbXNnLm1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKSwgcm1haiwgcm1pbiwgaWQpOworCW1fcmVzdWx0TGlzdC5wdXNoX2JhY2soKFhLTVNSZXN1bHRUeXBlSW1wbCopIHIpOworCisJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmFwcGVuZENoaWxkKHItPmdldEVsZW1lbnQoKSk7CisJbV9tc2cubXBfZW52LT5kb1ByZXR0eVByaW50KG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KTsKKworCXJldHVybiByOworCit9CisKKworWEtNU1Jlc3VsdCAqIFhLTVNDb21wb3VuZFJlc3VsdEltcGw6OmNyZWF0ZVJlc3VsdCgKKwkJWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGUgKiByZXF1ZXN0LAorCQlSZXN1bHRNYWpvciBybWFqLAorCQlSZXN1bHRNaW5vciBybWluLAorCQljb25zdCBYTUxDaCAqIGlkKSB7CisKKwlYS01TUmVzdWx0ICogciA9IG1fZmFjdG9yeS5jcmVhdGVSZXN1bHQocmVxdWVzdCwgbV9tc2cubXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpLCBybWFqLCBybWluLCBpZCk7CisJbV9yZXN1bHRMaXN0LnB1c2hfYmFjaygoWEtNU1Jlc3VsdFR5cGVJbXBsKikgcik7CisKKwltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+YXBwZW5kQ2hpbGQoci0+Z2V0RWxlbWVudCgpKTsKKwltX21zZy5tcF9lbnYtPmRvUHJldHR5UHJpbnQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOworCisJcmV0dXJuIHI7CisKK30KKwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNDb21wb3VuZFJlc3VsdEltcGwuaHBwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNDb21wb3VuZFJlc3VsdEltcGwuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5NDc1MjgKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU0NvbXBvdW5kUmVzdWx0SW1wbC5ocHAKQEAgLTAsMCArMSwxNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNDb21wb3VuZFJlc3VsdEltcGwgOj0gSW1wbGVtZW50YXRpb24gb2YgQ29tcG91bmRSZXN1bHQgTWVzc2FnZXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEtNU0NPTVBPVU5EUkVTVUxUSU1QTF9JTkNMVURFCisjZGVmaW5lIFhLTVNDT01QT1VORFJFU1VMVElNUExfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNDb21wb3VuZFJlc3VsdC5ocHA+CisKKyNpbmNsdWRlICJYS01TUmVzdWx0VHlwZUltcGwuaHBwIgorI2luY2x1ZGUgIlhLTVNNZXNzYWdlRmFjdG9yeUltcGwuaHBwIgorCitjbGFzcyBYS01TQ29tcG91bmRSZXN1bHRJbXBsIDogcHVibGljIFhLTVNDb21wb3VuZFJlc3VsdCB7CisKK3B1YmxpYzoKKworCVhLTVNSZXN1bHRUeXBlSW1wbCBtX3Jlc3VsdDsKKwlYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGwgJm1fbXNnOworCitwdWJsaWM6CisKKwlYS01TQ29tcG91bmRSZXN1bHRJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52CisJKTsKKworCVhLTVNDb21wb3VuZFJlc3VsdEltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYsIAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIG5vZGUKKwkpOworCisJdmlydHVhbCB+WEtNU0NvbXBvdW5kUmVzdWx0SW1wbCgpOworCisJLy8gTG9hZCBlbGVtZW50cworCXZvaWQgbG9hZCgpOworCisJLy8gQ3JlYXRpb24KKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIAorCQljcmVhdGVCbGFua0NvbXBvdW5kUmVzdWx0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCWNvbnN0IFhNTENoICogaWQsCisJCVJlc3VsdE1ham9yIHJtYWosCisJCVJlc3VsdE1pbm9yIHJtaW4pOworCisJLy8gR2V0dGVyIG1ldGhvZHMKKworCXZpcnR1YWwgaW50IGdldFJlc3VsdExpc3RTaXplKHZvaWQpOworCXZpcnR1YWwgWEtNU1Jlc3VsdFR5cGUgKiBnZXRSZXN1bHRMaXN0SXRlbShpbnQgaXRlbSk7CisKKwkvLyBTZXR0ZXIgTWV0aG9kcworCisJdmlydHVhbCBYS01TTG9jYXRlUmVzdWx0ICogY3JlYXRlTG9jYXRlUmVzdWx0KAorCQlYS01TTG9jYXRlUmVxdWVzdCAqIHJlcXVlc3QsCisJCVJlc3VsdE1ham9yIHJtYWosCisJCVJlc3VsdE1pbm9yIHJtaW4gPSBYS01TUmVzdWx0VHlwZUltcGw6Ok5vbmVNaW5vciwKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpOworCXZpcnR1YWwgWEtNU1ZhbGlkYXRlUmVzdWx0ICogY3JlYXRlVmFsaWRhdGVSZXN1bHQoCisJCVhLTVNWYWxpZGF0ZVJlcXVlc3QgKiByZXF1ZXN0LAorCQlSZXN1bHRNYWpvciBybWFqLAorCQlSZXN1bHRNaW5vciBybWluID0gWEtNU1Jlc3VsdFR5cGVJbXBsOjpOb25lTWlub3IsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKTsKKwl2aXJ0dWFsIFhLTVNTdGF0dXNSZXN1bHQgKiBjcmVhdGVTdGF0dXNSZXN1bHQoCisJCVhLTVNTdGF0dXNSZXF1ZXN0ICogcmVxdWVzdCwKKwkJUmVzdWx0TWFqb3Igcm1haiwKKwkJUmVzdWx0TWlub3Igcm1pbiA9IFhLTVNSZXN1bHRUeXBlSW1wbDo6Tm9uZU1pbm9yLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCk7CisJdmlydHVhbCBYS01TUmVzdWx0ICogY3JlYXRlUmVzdWx0KAorCQlYS01TUmVxdWVzdEFic3RyYWN0VHlwZSAqIHJlcXVlc3QsCisJCVJlc3VsdE1ham9yIHJtYWosCisJCVJlc3VsdE1pbm9yIHJtaW4gPSBYS01TUmVzdWx0VHlwZUltcGw6Ok5vbmVNaW5vciwKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpOworCXZpcnR1YWwgWEtNU1JlZ2lzdGVyUmVzdWx0ICogY3JlYXRlUmVnaXN0ZXJSZXN1bHQoCisJCVhLTVNSZWdpc3RlclJlcXVlc3QgKiByZXF1ZXN0LAorCQlSZXN1bHRNYWpvciBybWFqLAorCQlSZXN1bHRNaW5vciBybWluID0gWEtNU1Jlc3VsdFR5cGVJbXBsOjpOb25lTWlub3IsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKTsKKwl2aXJ0dWFsIFhLTVNSZXZva2VSZXN1bHQgKiBjcmVhdGVSZXZva2VSZXN1bHQoCisJCVhLTVNSZXZva2VSZXF1ZXN0ICogcmVxdWVzdCwKKwkJUmVzdWx0TWFqb3Igcm1haiwKKwkJUmVzdWx0TWlub3Igcm1pbiA9IFhLTVNSZXN1bHRUeXBlSW1wbDo6Tm9uZU1pbm9yLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCk7CisJdmlydHVhbCBYS01TUmVjb3ZlclJlc3VsdCAqIGNyZWF0ZVJlY292ZXJSZXN1bHQoCisJCVhLTVNSZWNvdmVyUmVxdWVzdCAqIHJlcXVlc3QsCisJCVJlc3VsdE1ham9yIHJtYWosCisJCVJlc3VsdE1pbm9yIHJtaW4gPSBYS01TUmVzdWx0VHlwZUltcGw6Ok5vbmVNaW5vciwKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpOworCXZpcnR1YWwgWEtNU1JlaXNzdWVSZXN1bHQgKiBjcmVhdGVSZWlzc3VlUmVzdWx0KAorCQlYS01TUmVpc3N1ZVJlcXVlc3QgKiByZXF1ZXN0LAorCQlSZXN1bHRNYWpvciBybWFqLAorCQlSZXN1bHRNaW5vciBybWluID0gWEtNU1Jlc3VsdFR5cGVJbXBsOjpOb25lTWlub3IsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKTsKKworCS8qIEltcGxlbWVudGVkIGZyb20gTWVzc2FnZUFic3RyYWN0VHlwZSAqLworCXZpcnR1YWwgbWVzc2FnZVR5cGUgZ2V0TWVzc2FnZVR5cGUodm9pZCk7CisKKwkvKiBGb3JjZWQgaW5oZXJpdGFuY2UgZnJvbSBYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGwgKi8KKwlYS01TX01FU1NBR0VBQlNUUkFDVFlQRV9JTVBMX01FVEhPRFMKKworCS8qIEZvcmNlZCBpbmhlcml0YW5jZSBmcm9tIFhLTVNSZXN1bHRUeXBlSW1wbCAqLworCVhLTVNfUkVTVUxUVFlQRV9JTVBMX01FVEhPRFMKKworcHJpdmF0ZToKKworI2lmIGRlZmluZWQoWFNFQ19OT19OQU1FU1BBQ0VTKQorCXR5cGVkZWYgdmVjdG9yPFhLTVNSZXN1bHRUeXBlSW1wbCAqPgkJUmVzdWx0TGlzdFZlY3RvclR5cGU7CisjZWxzZQorCXR5cGVkZWYgc3RkOjp2ZWN0b3I8WEtNU1Jlc3VsdFR5cGVJbXBsICo+CVJlc3VsdExpc3RWZWN0b3JUeXBlOworI2VuZGlmCisKKwlSZXN1bHRMaXN0VmVjdG9yVHlwZQltX3Jlc3VsdExpc3Q7CisKKwkvKiBVc2VkIHRvIGNvbnN1bWUgYW5kIHByb2R1Y2UgbWVzc2FnZXMgaW4gdGhlIGxpc3QgKi8KKwlYS01TTWVzc2FnZUZhY3RvcnlJbXBsCW1fZmFjdG9yeTsKKworCS8vIFVuaW1wbGVtZW50ZWQKKwlYS01TQ29tcG91bmRSZXN1bHRJbXBsKGNvbnN0IFhLTVNDb21wb3VuZFJlc3VsdEltcGwgJik7CisJWEtNU0NvbXBvdW5kUmVzdWx0SW1wbCAmIG9wZXJhdG9yID0gKGNvbnN0IFhLTVNDb21wb3VuZFJlc3VsdEltcGwgJik7CisKK307CisKKyNlbmRpZiAvKiBYS01TQ09NUE9VTkRSRVNVTFRJTVBMX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvaW1wbC9YS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGwuY3BwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODczZDVjNAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGwuY3BwCkBAIC0wLDAgKzEsNTE1IEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGwgOj0gSW1wbGVtZW50YXRpb24gb2YgYmFzZSBmb3IgS2V5QmluZGluZyBlbGVtZW50cworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TQ29uc3RhbnRzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdLZXlJbmZvTGlzdC5ocHA+CisKKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxVbmlEZWZzLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvSmFuaXRvci5ocHA+CisKKyNpbmNsdWRlICJYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGwuaHBwIgorI2luY2x1ZGUgIlhLTVNVc2VLZXlXaXRoSW1wbC5ocHAiCisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdG9yL0Rlc3RydWN0b3IKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6WEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52KSA6CittcF9rZXlCaW5kaW5nQWJzdHJhY3RUeXBlRWxlbWVudChOVUxMKSwKK21wX2VudihlbnYpLAorbXBfaWRBdHRyKE5VTEwpLAorbXBfa2V5VXNhZ2VTaWduYXR1cmVFbGVtZW50KE5VTEwpLAorbXBfa2V5VXNhZ2VFbmNyeXB0aW9uRWxlbWVudChOVUxMKSwKK21wX2tleVVzYWdlRXhjaGFuZ2VFbGVtZW50KE5VTEwpLAorbXBfa2V5SW5mb0VsZW1lbnQoTlVMTCkgeworCisJWFNFQ25ldyhtcF9rZXlJbmZvTGlzdCwgRFNJR0tleUluZm9MaXN0KG1wX2VudikpOworCit9CisKK1hLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6WEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52LCAKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBub2RlKSA6CittcF9rZXlCaW5kaW5nQWJzdHJhY3RUeXBlRWxlbWVudChub2RlKSwKK21wX2VudihlbnYpLAorbXBfaWRBdHRyKE5VTEwpLAorbXBfa2V5VXNhZ2VTaWduYXR1cmVFbGVtZW50KE5VTEwpLAorbXBfa2V5VXNhZ2VFbmNyeXB0aW9uRWxlbWVudChOVUxMKSwKK21wX2tleVVzYWdlRXhjaGFuZ2VFbGVtZW50KE5VTEwpLAorbXBfa2V5SW5mb0VsZW1lbnQoTlVMTCkgeworCisJWFNFQ25ldyhtcF9rZXlJbmZvTGlzdCwgRFNJR0tleUluZm9MaXN0KG1wX2VudikpOworCit9CisKK1hLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6flhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbCgpIHsKKworCWlmIChtcF9rZXlJbmZvTGlzdCAhPSBOVUxMKQorCQlkZWxldGUgbXBfa2V5SW5mb0xpc3Q7CisKKwlVc2VLZXlXaXRoVmVjdG9yVHlwZTo6aXRlcmF0b3IgaTsKKwlmb3IgKGkgPSBtX3VzZUtleVdpdGhMaXN0LmJlZ2luKCk7IGkgPCBtX3VzZUtleVdpdGhMaXN0LmVuZCgpOyArK2kpCisJCWRlbGV0ZSAoKmkpOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgTG9hZCBmcm9tIERPTQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGw6OmxvYWQodm9pZCkgeworCisJaWYgKG1wX2tleUJpbmRpbmdBYnN0cmFjdFR5cGVFbGVtZW50ID09IE5VTEwpIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZFhLTVNDaGlsZE5vdEZvdW5kLAorCQkJIlhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6bG9hZCAtIGNhbGxlZCBvbiBlbXB0eSBET00iKTsKKwl9CisKKwkvLyBJZAorCW1wX2lkQXR0ciA9IAorCQltcF9rZXlCaW5kaW5nQWJzdHJhY3RUeXBlRWxlbWVudC0+Z2V0QXR0cmlidXRlTm9kZU5TKE5VTEwsIFhLTVNDb25zdGFudHM6OnNfdGFnSWQpOworCisJRE9NRWxlbWVudCAqIHRtcEVsdCA9IGZpbmRGaXJzdEVsZW1lbnRDaGlsZChtcF9rZXlCaW5kaW5nQWJzdHJhY3RUeXBlRWxlbWVudCk7CisKKwlpZiAodG1wRWx0ICE9IE5VTEwgJiYgc3RyRXF1YWxzKGdldERTSUdMb2NhbE5hbWUodG1wRWx0KSwgWEtNU0NvbnN0YW50czo6c190YWdLZXlJbmZvKSkgeworCisJCWlmIChtcF9rZXlJbmZvTGlzdCAhPSBOVUxMKQorCQkJZGVsZXRlIG1wX2tleUluZm9MaXN0OworCisJCVhTRUNuZXcobXBfa2V5SW5mb0xpc3QsIERTSUdLZXlJbmZvTGlzdChtcF9lbnYpKTsKKworCQltcF9rZXlJbmZvTGlzdC0+bG9hZExpc3RGcm9tWE1MKHRtcEVsdCk7CisJCW1wX2tleUluZm9FbGVtZW50ID0gdG1wRWx0OworCisJCXRtcEVsdCA9IGZpbmROZXh0RWxlbWVudENoaWxkKHRtcEVsdCk7CisKKwl9CisKKwl3aGlsZSAodG1wRWx0ICE9IE5VTEwgJiYgc3RyRXF1YWxzKGdldFhLTVNMb2NhbE5hbWUodG1wRWx0KSwgWEtNU0NvbnN0YW50czo6c190YWdLZXlVc2FnZSkpIHsKKworCQlET01Ob2RlICogdHh0ID0gZmluZEZpcnN0Q2hpbGRPZlR5cGUodG1wRWx0LCBET01Ob2RlOjpURVhUX05PREUpOworCisJCWlmICh0eHQgPT0gTlVMTCkgeworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZFhLTVNDaGlsZE5vdEZvdW5kLAorCQkJCSJYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGw6OmxvYWQgLSBSZXF1aXJlIHRleHQgbm9kZSBiZW5lYXRoIDxLZXlVc2FnZT4iKTsKKwkJfQorCisJCWNvbnN0IFhNTENoICogdXNhZ2VTdHIgPSB0eHQtPmdldE5vZGVWYWx1ZSgpOworCQlpbnQgaW5kZXggPSBYTUxTdHJpbmc6OmluZGV4T2YodXNhZ2VTdHIsIGNoUG91bmQpOworCQlpZiAoaW5kZXggPT0gLTEgfHwgWE1MU3RyaW5nOjpjb21wYXJlTlN0cmluZyh1c2FnZVN0ciwgWEtNU0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWEtNUywgaW5kZXgpKSB7CisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwKKwkJCQkiWEtNU1Jlc3VsdFR5cGU6OmxvYWQgLSBLZXlVc2FnZSBub3QgaW4gWEtNUyBOYW1lIFNwYWNlIik7CisJCX0KKworCQl1c2FnZVN0ciA9ICZ1c2FnZVN0cltpbmRleCsxXTsKKworCisJCWlmIChzdHJFcXVhbHModXNhZ2VTdHIsIFhLTVNDb25zdGFudHM6OnNfdGFnRW5jcnlwdGlvbikpIHsKKwkJCW1wX2tleVVzYWdlRW5jcnlwdGlvbkVsZW1lbnQgPSB0bXBFbHQ7CisJCX0gZWxzZSAJaWYgKHN0ckVxdWFscyh1c2FnZVN0ciwgWEtNU0NvbnN0YW50czo6c190YWdFeGNoYW5nZSkpIHsKKwkJCW1wX2tleVVzYWdlRXhjaGFuZ2VFbGVtZW50ID0gdG1wRWx0OworCQl9IGVsc2UgaWYgKHN0ckVxdWFscyh1c2FnZVN0ciwgWEtNU0NvbnN0YW50czo6c190YWdTaWduYXR1cmUpKSB7CisJCQltcF9rZXlVc2FnZVNpZ25hdHVyZUVsZW1lbnQgPSB0bXBFbHQ7CisJCX0gZWxzZSB7CisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkWEtNU0NoaWxkTm90Rm91bmQsCisJCQkJIlhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6bG9hZCAtIHJlcXVpcmUgRW5jcnlwdGlvbiwgRXhjaGFuZ2Ugb3IgU2lnbmF0dXJlIHRleHQgbm9kZSBiZW5lYXRoIDxLZXlVc2FnZT4iKTsKKwkJfQorCisJCXRtcEVsdCA9IGZpbmROZXh0RWxlbWVudENoaWxkKHRtcEVsdCk7CisJfQorCisJd2hpbGUgKHRtcEVsdCAhPSBOVUxMICYmIHN0ckVxdWFscyhnZXRYS01TTG9jYWxOYW1lKHRtcEVsdCksIFhLTVNDb25zdGFudHM6OnNfdGFnVXNlS2V5V2l0aCkpIHsKKworCQlYS01TVXNlS2V5V2l0aEltcGwgKnVrdzsKKwkJWFNFQ25ldyh1a3csIFhLTVNVc2VLZXlXaXRoSW1wbChtcF9lbnYsIHRtcEVsdCkpOworCisJCW1fdXNlS2V5V2l0aExpc3QucHVzaF9iYWNrKHVrdyk7CisJCXVrdy0+bG9hZCgpOworCisJCXRtcEVsdCA9IGZpbmROZXh0RWxlbWVudENoaWxkKHRtcEVsdCk7CisJfQorfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENyZWF0ZSBCbGFuaworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRE9NRWxlbWVudCAqIFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6Y3JlYXRlQmxhbmtLZXlCaW5kaW5nQWJzdHJhY3RUeXBlKGNvbnN0IFhNTENoICogdGFnKSB7CisKKwkvLyBHZXQgc29tZSBzZXR1cCB2YWx1ZXMKKwlzYWZlQnVmZmVyIHN0cjsKKwlET01Eb2N1bWVudCAqZG9jID0gbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpOworCWNvbnN0IFhNTENoICogcHJlZml4ID0gbXBfZW52LT5nZXRYS01TTlNQcmVmaXgoKTsKKworCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgdGFnKTsKKworCW1wX2tleUJpbmRpbmdBYnN0cmFjdFR5cGVFbGVtZW50ID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoWEtNU0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWEtNUywgCisJCQkJCQkJCQkJCQlzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisKKwltcF9lbnYtPmRvUHJldHR5UHJpbnQobXBfa2V5QmluZGluZ0Fic3RyYWN0VHlwZUVsZW1lbnQpOworCisJcmV0dXJuIG1wX2tleUJpbmRpbmdBYnN0cmFjdFR5cGVFbGVtZW50OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgR2V0dGVyIG1ldGhvZHMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RPTUVsZW1lbnQgKiBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGw6OmdldEVsZW1lbnQodm9pZCkgY29uc3QgeworCisJcmV0dXJuIG1wX2tleUJpbmRpbmdBYnN0cmFjdFR5cGVFbGVtZW50OworCit9CisKK2NvbnN0IFhNTENoICogWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsOjpnZXRJZCh2b2lkKSBjb25zdCB7CisKKwlyZXR1cm4gKG1wX2lkQXR0ciAhPSBOVUxMID8gbXBfaWRBdHRyLT5nZXROb2RlVmFsdWUoKSA6IE5VTEwpOworCit9CisKK0RTSUdLZXlJbmZvTGlzdCAqIFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6Z2V0S2V5SW5mb0xpc3Qodm9pZCkgY29uc3QgeworCisJcmV0dXJuIG1wX2tleUluZm9MaXN0OworCit9CisKK2Jvb2wgWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsOjpnZXRFbmNyeXB0aW9uS2V5VXNhZ2Uodm9pZCkgY29uc3QgeworCisJcmV0dXJuIChtcF9rZXlVc2FnZUVuY3J5cHRpb25FbGVtZW50ICE9IE5VTEwgfHwgCisJCShtcF9rZXlVc2FnZUV4Y2hhbmdlRWxlbWVudCA9PSBOVUxMICYmIG1wX2tleVVzYWdlU2lnbmF0dXJlRWxlbWVudCA9PSBOVUxMKSk7CisKK30KKworYm9vbCBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGw6OmdldFNpZ25hdHVyZUtleVVzYWdlKHZvaWQpIGNvbnN0IHsKKworCXJldHVybiAobXBfa2V5VXNhZ2VTaWduYXR1cmVFbGVtZW50ICE9IE5VTEwgfHwgCisJCShtcF9rZXlVc2FnZUV4Y2hhbmdlRWxlbWVudCA9PSBOVUxMICYmIG1wX2tleVVzYWdlRW5jcnlwdGlvbkVsZW1lbnQgPT0gTlVMTCkpOworCit9CisKK2Jvb2wgWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsOjpnZXRFeGNoYW5nZUtleVVzYWdlKHZvaWQpIGNvbnN0IHsKKworCXJldHVybiAobXBfa2V5VXNhZ2VFeGNoYW5nZUVsZW1lbnQgIT0gTlVMTCB8fCAKKwkJKG1wX2tleVVzYWdlRW5jcnlwdGlvbkVsZW1lbnQgPT0gTlVMTCAmJiBtcF9rZXlVc2FnZVNpZ25hdHVyZUVsZW1lbnQgPT0gTlVMTCkpOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCUtleUluZm8gZWxlbWVudHMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RTSUdLZXlJbmZvTGlzdCAqIFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6Z2V0S2V5SW5mb0xpc3QoKSB7CisKKwlyZXR1cm4gbXBfa2V5SW5mb0xpc3Q7CisKK30KKwordm9pZCBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGw6OmNsZWFyS2V5SW5mbyh2b2lkKSB7CisKKwlpZiAobXBfa2V5SW5mb0VsZW1lbnQgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJaWYgKG1wX2tleUJpbmRpbmdBYnN0cmFjdFR5cGVFbGVtZW50LT5yZW1vdmVDaGlsZChtcF9rZXlJbmZvRWxlbWVudCkgIT0gbXBfa2V5SW5mb0VsZW1lbnQpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkRFNJR0NoaWxkTm90Rm91bmQsCisJCQkiQXR0ZW1wdGVkIHRvIHJlbW92ZSBLZXlJbmZvIG5vZGUgYnV0IGl0IGlzIG5vIGxvbmdlciBhIGNoaWxkIG9mIDxLZXlCaW5kaW5nQWJzdHJhY3RUeXBlPiIpOworCisJfQorCisJbXBfa2V5SW5mb0VsZW1lbnQtPnJlbGVhc2UoKTsJCS8vIE5vIGxvbmdlciByZXF1aXJlZAorCisJbXBfa2V5SW5mb0VsZW1lbnQgPSBOVUxMOworCisJLy8gQ2xlYXIgb3V0IHRoZSBsaXN0CisJbXBfa2V5SW5mb0xpc3QtPmVtcHR5KCk7CisKK30KKwordm9pZCBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGw6OmNyZWF0ZUtleUluZm9FbGVtZW50KHZvaWQpIHsKKworCWlmIChtcF9rZXlJbmZvRWxlbWVudCAhPSBOVUxMKQorCQlyZXR1cm47CisKKwlzYWZlQnVmZmVyIHN0cjsKKworCWNvbnN0IFhNTENoICogcHJlZml4TlMgPSBtcF9lbnYtPmdldERTSUdOU1ByZWZpeCgpOworCW1ha2VRTmFtZShzdHIsIHByZWZpeE5TLCAiS2V5SW5mbyIpOworCisJbXBfa2V5SW5mb0VsZW1lbnQgPSBtcF9rZXlJbmZvTGlzdC0+Y3JlYXRlS2V5SW5mbygpOworCisJLy8gTmVlZHMgdG8gYmUgZmlyc3QgZWxlbWVudAorCURPTU5vZGUgKiBpbnNlcnRCZWZvcmUgPSBtcF9rZXlCaW5kaW5nQWJzdHJhY3RUeXBlRWxlbWVudC0+Z2V0Rmlyc3RDaGlsZCgpOworCisJaWYgKGluc2VydEJlZm9yZSAhPSBOVUxMKSB7CisKKwkJaWYgKG1wX2Vudi0+Z2V0UHJldHR5UHJpbnRGbGFnKCkgPT0gdHJ1ZSkKKwkJCW1wX2tleUJpbmRpbmdBYnN0cmFjdFR5cGVFbGVtZW50LT5pbnNlcnRCZWZvcmUobXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpLT5jcmVhdGVUZXh0Tm9kZShEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJOTCksIGluc2VydEJlZm9yZSk7CisJCW1wX2tleUJpbmRpbmdBYnN0cmFjdFR5cGVFbGVtZW50LT5pbnNlcnRCZWZvcmUobXBfa2V5SW5mb0VsZW1lbnQsIGluc2VydEJlZm9yZSk7CisKKwl9CisKKwllbHNlIHsKKworCQltcF9rZXlCaW5kaW5nQWJzdHJhY3RUeXBlRWxlbWVudC0+YXBwZW5kQ2hpbGQobXBfa2V5SW5mb0VsZW1lbnQpOworCQltcF9lbnYtPmRvUHJldHR5UHJpbnQobXBfa2V5QmluZGluZ0Fic3RyYWN0VHlwZUVsZW1lbnQpOworCisJfQorCQorCS8vIE5lZWQgdG8gYWRkIHRoZSBEUyBuYW1lc3BhY2UKKworCWlmIChwcmVmaXhOU1swXSA9PSAnXDAnKSB7CisJCXN0ci5zYlRyYW5zY29kZUluKCJ4bWxucyIpOworCX0KKwllbHNlIHsKKwkJc3RyLnNiVHJhbnNjb2RlSW4oInhtbG5zOiIpOworCQlzdHIuc2JYTUxDaENhdChwcmVmaXhOUyk7CisJfQorCisJbXBfa2V5SW5mb0VsZW1lbnQtPnNldEF0dHJpYnV0ZU5TKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhNTE5TLCAKKwkJCQkJCQlzdHIucmF3WE1MQ2hCdWZmZXIoKSwgCisJCQkJCQkJRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJRFNJRyk7CisKK30KKworCitEU0lHS2V5SW5mb05hbWUgKiBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGw6OmFwcGVuZEtleU5hbWUoY29uc3QgWE1MQ2ggKiBuYW1lLCBib29sIGlzRE5hbWUpIHsKKworCWNyZWF0ZUtleUluZm9FbGVtZW50KCk7CisJcmV0dXJuIG1wX2tleUluZm9MaXN0LT5hcHBlbmRLZXlOYW1lKG5hbWUsIGlzRE5hbWUpOworCit9CisKKworRFNJR0tleUluZm9WYWx1ZSAqIFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6YXBwZW5kRFNBS2V5VmFsdWUoY29uc3QgWE1MQ2ggKiBQLCAKKwkJCQkJCSAgIGNvbnN0IFhNTENoICogUSwgCisJCQkJCQkgICBjb25zdCBYTUxDaCAqIEcsIAorCQkJCQkJICAgY29uc3QgWE1MQ2ggKiBZKSB7CisKKwljcmVhdGVLZXlJbmZvRWxlbWVudCgpOworCXJldHVybiBtcF9rZXlJbmZvTGlzdC0+YXBwZW5kRFNBS2V5VmFsdWUoUCwgUSwgRywgWSk7CisKK30KKworRFNJR0tleUluZm9WYWx1ZSAqIFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6YXBwZW5kUlNBS2V5VmFsdWUoY29uc3QgWE1MQ2ggKiBtb2R1bHVzLCAKKwkJCQkJCSAgIGNvbnN0IFhNTENoICogZXhwb25lbnQpIHsKKworCWNyZWF0ZUtleUluZm9FbGVtZW50KCk7CisJcmV0dXJuIG1wX2tleUluZm9MaXN0LT5hcHBlbmRSU0FLZXlWYWx1ZShtb2R1bHVzLCBleHBvbmVudCk7CisKK30KKworCitEU0lHS2V5SW5mb1g1MDkgKiBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGw6OmFwcGVuZFg1MDlEYXRhKHZvaWQpIHsKKworCWNyZWF0ZUtleUluZm9FbGVtZW50KCk7CisJcmV0dXJuIG1wX2tleUluZm9MaXN0LT5hcHBlbmRYNTA5RGF0YSgpOworCit9CisKK0RTSUdLZXlJbmZvUEdQRGF0YSAqIFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6YXBwZW5kUEdQRGF0YShjb25zdCBYTUxDaCAqIGlkLCBjb25zdCBYTUxDaCAqIHBhY2tldCkgeworCisJY3JlYXRlS2V5SW5mb0VsZW1lbnQoKTsKKwlyZXR1cm4gbXBfa2V5SW5mb0xpc3QtPmFwcGVuZFBHUERhdGEoaWQsIHBhY2tldCk7CisKK30KKworRFNJR0tleUluZm9TUEtJRGF0YSAqIFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6YXBwZW5kU1BLSURhdGEoY29uc3QgWE1MQ2ggKiBzZXhwKSB7CisKKwljcmVhdGVLZXlJbmZvRWxlbWVudCgpOworCXJldHVybiBtcF9rZXlJbmZvTGlzdC0+YXBwZW5kU1BLSURhdGEoc2V4cCk7CisKK30KKworRFNJR0tleUluZm9NZ210RGF0YSAqIFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6YXBwZW5kTWdtdERhdGEoY29uc3QgWE1MQ2ggKiBkYXRhKSB7CisKKwljcmVhdGVLZXlJbmZvRWxlbWVudCgpOworCXJldHVybiBtcF9rZXlJbmZvTGlzdC0+YXBwZW5kTWdtdERhdGEoZGF0YSk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBTZXR0ZXIgbWV0aG9kcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGw6OnNldElkKGNvbnN0IFhNTENoICogaWQpIHsKKworCS8vIFNldHVwIHRoZSBpZAorCVhNTENoICogbXlJZDsKKworCWlmIChpZCA9PSBOVUxMKQorCQlteUlkID0gZ2VuZXJhdGVJZCgpOworCisJbXBfa2V5QmluZGluZ0Fic3RyYWN0VHlwZUVsZW1lbnQtPnNldEF0dHJpYnV0ZU5TKE5VTEwsIFhLTVNDb25zdGFudHM6OnNfdGFnSWQsIGlkID8gaWQgOiBteUlkKTsKKwlpZiAoaWQgPT0gTlVMTCkKKwkgICAgWFNFQ19SRUxFQVNFX1hNTENIKG15SWQpOworI2lmIGRlZmluZWQgKFhTRUNfWEVSQ0VTX0hBU19TRVRJREFUVFJJQlVURSkKKwltcF9rZXlCaW5kaW5nQWJzdHJhY3RUeXBlRWxlbWVudC0+c2V0SWRBdHRyaWJ1dGVOUyhOVUxMLCBYS01TQ29uc3RhbnRzOjpzX3RhZ0lkKTsKKyNlbmRpZgorCW1wX2lkQXR0ciA9IAorCQltcF9rZXlCaW5kaW5nQWJzdHJhY3RUeXBlRWxlbWVudC0+Z2V0QXR0cmlidXRlTm9kZU5TKE5VTEwsIFhLTVNDb25zdGFudHM6OnNfdGFnSWQpOworCit9CisKK0RPTUVsZW1lbnQgKiBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGw6OnNldEtleVVzYWdlKGNvbnN0IFhNTENoICogdXNhZ2UpIHsKKworCS8qIENyZWF0ZSB0aGUgZWxlbWVudCBhbmQgc3RyaW5nKi8KKwlzYWZlQnVmZmVyIHN0cjsKKwlET01Eb2N1bWVudCAqZG9jID0gbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpOworCWNvbnN0IFhNTENoICogcHJlZml4ID0gbXBfZW52LT5nZXRYS01TTlNQcmVmaXgoKTsKKworCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgWEtNU0NvbnN0YW50czo6c190YWdLZXlVc2FnZSk7CisKKwkvKiBDcmVhdGUgdGhlIGVsZW1lbnQgKi8KKwlET01FbGVtZW50ICogZSA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKFhLTVNDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhLTVMsIAorCQlzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisKKwlzdHIuc2JYTUxDaEluKFhLTVNDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhLTVMpOworCXN0ci5zYlhNTENoQ2F0KHVzYWdlKTsKKwllLT5hcHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKHN0ci5yYXdYTUxDaEJ1ZmZlcigpKSk7CisKKwkvKiBOb3cgZmluZCB3aGVyZSBpdCBnb2VzICovCisKKwlET01FbGVtZW50ICogdCA9IGZpbmRGaXJzdEVsZW1lbnRDaGlsZChtcF9rZXlCaW5kaW5nQWJzdHJhY3RUeXBlRWxlbWVudCk7CisJd2hpbGUgKHQgIT0gTlVMTCkgeworCQlpZiAoIXN0ckVxdWFscyhnZXREU0lHTG9jYWxOYW1lKHQpLCBYS01TQ29uc3RhbnRzOjpzX3RhZ0tleUluZm8pICYmCisJCQkhc3RyRXF1YWxzKGdldFhLTVNMb2NhbE5hbWUodCksIFhLTVNDb25zdGFudHM6OnNfdGFnS2V5VXNhZ2UpKQorCQkJYnJlYWs7CisKKwkJdCA9IGZpbmROZXh0RWxlbWVudENoaWxkKHQpOworCX0KKworCS8vIEFwcGVuZCB0aGUgZWxlbWVudAorCWlmICh0ID09IE5VTEwpIHsKKwkJbXBfa2V5QmluZGluZ0Fic3RyYWN0VHlwZUVsZW1lbnQtPmFwcGVuZENoaWxkKGUpOworCQltcF9lbnYtPmRvUHJldHR5UHJpbnQobXBfa2V5QmluZGluZ0Fic3RyYWN0VHlwZUVsZW1lbnQpOworCX0KKwllbHNlIHsKKwkJbXBfa2V5QmluZGluZ0Fic3RyYWN0VHlwZUVsZW1lbnQtPmluc2VydEJlZm9yZShlLCB0KTsKKwkJaWYgKG1wX2Vudi0+Z2V0UHJldHR5UHJpbnRGbGFnKCkpIHsKKwkJCW1wX2tleUJpbmRpbmdBYnN0cmFjdFR5cGVFbGVtZW50LT5pbnNlcnRCZWZvcmUoCisJCQkJbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpLT5jcmVhdGVUZXh0Tm9kZShEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJOTCksCisJCQkJdCk7CisJCX0KKwl9CisKKwlyZXR1cm4gZTsKKworfQorCit2b2lkIFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6c2V0RW5jcnlwdGlvbktleVVzYWdlKHZvaWQpIHsKKworCWlmIChtcF9rZXlVc2FnZUVuY3J5cHRpb25FbGVtZW50ICE9IE5VTEwpCisJCXJldHVybjsKKworCW1wX2tleVVzYWdlRW5jcnlwdGlvbkVsZW1lbnQgPSBzZXRLZXlVc2FnZShYS01TQ29uc3RhbnRzOjpzX3RhZ0VuY3J5cHRpb24pOworCit9Cit2b2lkIFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6c2V0U2lnbmF0dXJlS2V5VXNhZ2Uodm9pZCkgeworCisJaWYgKG1wX2tleVVzYWdlU2lnbmF0dXJlRWxlbWVudCAhPSBOVUxMKQorCQlyZXR1cm47CisKKwltcF9rZXlVc2FnZVNpZ25hdHVyZUVsZW1lbnQgPSBzZXRLZXlVc2FnZShYS01TQ29uc3RhbnRzOjpzX3RhZ1NpZ25hdHVyZSk7CisKK30KK3ZvaWQgWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsOjpzZXRFeGNoYW5nZUtleVVzYWdlKHZvaWQpIHsKKworCWlmIChtcF9rZXlVc2FnZUV4Y2hhbmdlRWxlbWVudCAhPSBOVUxMKQorCQlyZXR1cm47CisKKwltcF9rZXlVc2FnZUV4Y2hhbmdlRWxlbWVudCA9IHNldEtleVVzYWdlKFhLTVNDb25zdGFudHM6OnNfdGFnRXhjaGFuZ2UpOworCit9CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBVc2VLZXlXaXRoIGhhbmRsaW5nCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitpbnQgWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsOjpnZXRVc2VLZXlXaXRoU2l6ZSh2b2lkKSBjb25zdCB7CisKKwlyZXR1cm4gKGludCkgbV91c2VLZXlXaXRoTGlzdC5zaXplKCk7CisKK30KKworWEtNU1VzZUtleVdpdGggKiBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGw6OmdldFVzZUtleVdpdGhJdGVtKGludCBpdGVtKSBjb25zdCB7CisKKwlpZiAoaXRlbSA8IDAgfHwgaXRlbSA+PSAoaW50KSBtX3VzZUtleVdpdGhMaXN0LnNpemUoKSkgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwKKwkJCSJYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZTo6Z2V0VXNlS2V5V2l0aEl0ZW0gLSBpdGVtIG91dCBvZiByYW5nZSIpOworCX0KKworCXJldHVybiBtX3VzZUtleVdpdGhMaXN0W2l0ZW1dOworCit9CisKK1hLTVNVc2VLZXlXaXRoICogWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsOjphcHBlbmRVc2VLZXlXaXRoSXRlbSgKKwkJCWNvbnN0IFhNTENoICogYXBwbGljYXRpb24sICAKKwkJCWNvbnN0IFhNTENoICogaWRlbnRpZmllcikgeworCisJWEtNU1VzZUtleVdpdGhJbXBsICogdTsKKworCVhTRUNuZXcodSwgWEtNU1VzZUtleVdpdGhJbXBsKG1wX2VudikpOworCisJbV91c2VLZXlXaXRoTGlzdC5wdXNoX2JhY2sodSk7CisKKwlET01FbGVtZW50ICogZSA9IHUtPmNyZWF0ZUJsYW5rVXNlS2V5V2l0aChhcHBsaWNhdGlvbiwgaWRlbnRpZmllcik7CisKKwkvLyBGaW5kIHdoZXJlIHRvIGFwcGVuZCB0aGUgZWxlbWVudAorCURPTUVsZW1lbnQgKiB0ID0gZmluZEZpcnN0RWxlbWVudENoaWxkKG1wX2tleUJpbmRpbmdBYnN0cmFjdFR5cGVFbGVtZW50KTsKKwl3aGlsZSAodCAhPSBOVUxMKSB7CisJCWlmICghc3RyRXF1YWxzKGdldERTSUdMb2NhbE5hbWUodCksIFhLTVNDb25zdGFudHM6OnNfdGFnS2V5SW5mbykgJiYKKwkJCSFzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZSh0KSwgWEtNU0NvbnN0YW50czo6c190YWdLZXlVc2FnZSkgJiYKKwkJCSFzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZSh0KSwgWEtNU0NvbnN0YW50czo6c190YWdVc2VLZXlXaXRoKSkKKwkJCWJyZWFrOworCisJCXQgPSBmaW5kTmV4dEVsZW1lbnRDaGlsZCh0KTsKKwl9CisKKwkvLyBBcHBlbmQgdGhlIGVsZW1lbnQKKwlpZiAodCA9PSBOVUxMKSB7CisJCW1wX2tleUJpbmRpbmdBYnN0cmFjdFR5cGVFbGVtZW50LT5hcHBlbmRDaGlsZChlKTsKKwkJbXBfZW52LT5kb1ByZXR0eVByaW50KG1wX2tleUJpbmRpbmdBYnN0cmFjdFR5cGVFbGVtZW50KTsKKwl9CisJZWxzZSB7CisJCW1wX2tleUJpbmRpbmdBYnN0cmFjdFR5cGVFbGVtZW50LT5pbnNlcnRCZWZvcmUoZSwgdCk7CisJCWlmIChtcF9lbnYtPmdldFByZXR0eVByaW50RmxhZygpKSB7CisJCQltcF9rZXlCaW5kaW5nQWJzdHJhY3RUeXBlRWxlbWVudC0+aW5zZXJ0QmVmb3JlKAorCQkJCW1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKS0+Y3JlYXRlVGV4dE5vZGUoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyTkwpLAorCQkJCXQpOworCQl9CisJfQorCisJcmV0dXJuIHU7CisKK30KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvaW1wbC9YS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGwuaHBwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk5N2NjNgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGwuaHBwCkBAIC0wLDAgKzEsMjAyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGwgOj0gSW1wbGVtZW50YXRpb24gb2YgYmFzZSBmb3IgS2V5QmluZGluZyBlbGVtZW50cworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYS01TS0VZQklORElOR0FCU1RSQUNUVFlQRUlNUExfSU5DTFVERQorI2RlZmluZSBYS01TS0VZQklORElOR0FCU1RSQUNUVFlQRUlNUExfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlLmhwcD4KKworI2luY2x1ZGUgPHZlY3Rvcj4KKworWFNFQ19ERUNMQVJFX1hFUkNFU19DTEFTUyhET01Ob2RlKTsKKworY2xhc3MgWFNFQ0VudjsKK2NsYXNzIERTSUdLZXlJbmZvTGlzdDsKK2NsYXNzIFhLTVNVc2VLZXlXaXRoSW1wbDsKKworY2xhc3MgWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsIDogcHVibGljIFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlIHsKKworcHVibGljOgorCisJLyogQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCisJWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52CisJKTsKKworCVhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudiwgCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogbm9kZQorCSk7CisKKwl2aXJ0dWFsIH5YS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGwoKSA7CisKKwkvLyBMb2FkCisJdm9pZCBsb2FkKHZvaWQpOworCisJLy8gQ3JlYXRlCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKgorCQljcmVhdGVCbGFua0tleUJpbmRpbmdBYnN0cmFjdFR5cGUoY29uc3QgWE1MQ2ggKiB0YWcpOworCisJLyogR2V0dGVyIEludGVyZmFjZSBNZXRob2RzICovCisKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogZ2V0RWxlbWVudCh2b2lkKSBjb25zdDsKKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRJZCh2b2lkKSBjb25zdDsKKwl2aXJ0dWFsIERTSUdLZXlJbmZvTGlzdCAqIGdldEtleUluZm9MaXN0KHZvaWQpIGNvbnN0OworCXZpcnR1YWwgYm9vbCBnZXRFbmNyeXB0aW9uS2V5VXNhZ2Uodm9pZCkgY29uc3Q7CisJdmlydHVhbCBib29sIGdldFNpZ25hdHVyZUtleVVzYWdlKHZvaWQpIGNvbnN0OworCXZpcnR1YWwgYm9vbCBnZXRFeGNoYW5nZUtleVVzYWdlKHZvaWQpIGNvbnN0OworCisJLyogU2V0dGVyIGludGVyZmFjZSBtZXRob2RzICovCisKKwl2aXJ0dWFsIHZvaWQgc2V0SWQoY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpOworCXZpcnR1YWwgdm9pZCBzZXRFbmNyeXB0aW9uS2V5VXNhZ2Uodm9pZCk7CisJdmlydHVhbCB2b2lkIHNldFNpZ25hdHVyZUtleVVzYWdlKHZvaWQpOworCXZpcnR1YWwgdm9pZCBzZXRFeGNoYW5nZUtleVVzYWdlKHZvaWQpOworCisJLyogS2V5IEluZm8gbWV0aG9kcyAqLworCXZpcnR1YWwgRFNJR0tleUluZm9MaXN0ICogZ2V0S2V5SW5mb0xpc3QoKTsKKwl2aXJ0dWFsIHZvaWQgY2xlYXJLZXlJbmZvKHZvaWQpOworCXZpcnR1YWwgRFNJR0tleUluZm9WYWx1ZSAqIGFwcGVuZERTQUtleVZhbHVlKGNvbnN0IFhNTENoICogUCwgCisJCQkJCQkgICBjb25zdCBYTUxDaCAqIFEsIAorCQkJCQkJICAgY29uc3QgWE1MQ2ggKiBHLCAKKwkJCQkJCSAgIGNvbnN0IFhNTENoICogWSk7CisJdmlydHVhbCBEU0lHS2V5SW5mb1ZhbHVlICogYXBwZW5kUlNBS2V5VmFsdWUoY29uc3QgWE1MQ2ggKiBtb2R1bHVzLCAKKwkJCQkJCSAgIGNvbnN0IFhNTENoICogZXhwb25lbnQpOworCXZpcnR1YWwgRFNJR0tleUluZm9YNTA5ICogYXBwZW5kWDUwOURhdGEodm9pZCk7CisJdmlydHVhbCBEU0lHS2V5SW5mb05hbWUgKiBhcHBlbmRLZXlOYW1lKGNvbnN0IFhNTENoICogbmFtZSwgYm9vbCBpc0ROYW1lID0gZmFsc2UpOworCXZpcnR1YWwgRFNJR0tleUluZm9QR1BEYXRhICogYXBwZW5kUEdQRGF0YShjb25zdCBYTUxDaCAqIGlkLCBjb25zdCBYTUxDaCAqIHBhY2tldCk7CisJdmlydHVhbCBEU0lHS2V5SW5mb1NQS0lEYXRhICogYXBwZW5kU1BLSURhdGEoY29uc3QgWE1MQ2ggKiBzZXhwKTsKKwl2aXJ0dWFsIERTSUdLZXlJbmZvTWdtdERhdGEgKiBhcHBlbmRNZ210RGF0YShjb25zdCBYTUxDaCAqIGRhdGEpOworCisJLyogVXNlS2V5V2l0aCBoYW5kbGluZyAqLworCisJdmlydHVhbCBpbnQgZ2V0VXNlS2V5V2l0aFNpemUodm9pZCkgY29uc3Q7CisJdmlydHVhbCBYS01TVXNlS2V5V2l0aCAqIGdldFVzZUtleVdpdGhJdGVtKGludCBpdGVtKSBjb25zdDsKKwl2aXJ0dWFsIFhLTVNVc2VLZXlXaXRoICogYXBwZW5kVXNlS2V5V2l0aEl0ZW0oCisJCQljb25zdCBYTUxDaCAqIGFwcGxpY2F0aW9uLCAgCisJCQljb25zdCBYTUxDaCAqIGlkZW50aWZpZXIpOworCitwcm90ZWN0ZWQ6CisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudAorCQkJCQkqIG1wX2tleUJpbmRpbmdBYnN0cmFjdFR5cGVFbGVtZW50OworCWNvbnN0IFhTRUNFbnYJKiBtcF9lbnY7CisKK3ByaXZhdGU6CisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqCisJCXNldEtleVVzYWdlKGNvbnN0IFhNTENoICogdXNhZ2UpOworCisjaWYgZGVmaW5lZChYU0VDX05PX05BTUVTUEFDRVMpCisJdHlwZWRlZiB2ZWN0b3I8WEtNU1VzZUtleVdpdGhJbXBsICo+CQlVc2VLZXlXaXRoVmVjdG9yVHlwZTsKKyNlbHNlCisJdHlwZWRlZiBzdGQ6OnZlY3RvcjxYS01TVXNlS2V5V2l0aEltcGwgKj4JVXNlS2V5V2l0aFZlY3RvclR5cGU7CisjZW5kaWYKKworCVVzZUtleVdpdGhWZWN0b3JUeXBlCW1fdXNlS2V5V2l0aExpc3Q7CisJCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUKKwkJCQkJKiBtcF9pZEF0dHI7CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQKKwkJCQkJKiBtcF9rZXlVc2FnZVNpZ25hdHVyZUVsZW1lbnQ7CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQKKwkJCQkJKiBtcF9rZXlVc2FnZUVuY3J5cHRpb25FbGVtZW50OworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50CisJCQkJCSogbXBfa2V5VXNhZ2VFeGNoYW5nZUVsZW1lbnQ7CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQKKwkJCQkJKiBtcF9rZXlJbmZvRWxlbWVudDsKKwlEU0lHS2V5SW5mb0xpc3QgKiBtcF9rZXlJbmZvTGlzdDsKKworCXZvaWQgY3JlYXRlS2V5SW5mb0VsZW1lbnQodm9pZCk7CisKKwkvLyBVbmltcGxlbWVudGVkCisJWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsKHZvaWQpOworCVhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbChjb25zdCBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGwgJik7CisJWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsICYpOworCit9OworCisvLyBEZWZpbmUgaW1wb3J0ZWQgbWV0aG9kcyBmb3IgY2xhc3NlcyB0aGF0IGluaGVyaXQgdGhlbSAobWFrZXMgdGhpbmdzIGVhc2llcikKKworI2RlZmluZSBYS01TX0tFWUJJTkRJTkdBQlNUUkFDVFlQRV9JTVBMX01FVEhPRFMgXAorCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBnZXRFbGVtZW50KHZvaWQpIGNvbnN0IFwKKwkJe3JldHVybiBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGw6OmdldEVsZW1lbnQoKTt9IFwKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0SWQodm9pZCkgY29uc3QgXAorCQl7cmV0dXJuIFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6Z2V0SWQoKTt9IFwKKwl2aXJ0dWFsIERTSUdLZXlJbmZvTGlzdCAqIGdldEtleUluZm9MaXN0KHZvaWQpIGNvbnN0IFwKKwkJe3JldHVybiBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGw6OmdldEtleUluZm9MaXN0KCk7fSBcCisJdmlydHVhbCBib29sIGdldEVuY3J5cHRpb25LZXlVc2FnZSh2b2lkKSBjb25zdCBcCisJCXtyZXR1cm4gWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsOjpnZXRFbmNyeXB0aW9uS2V5VXNhZ2UoKTt9IFwKKwl2aXJ0dWFsIGJvb2wgZ2V0U2lnbmF0dXJlS2V5VXNhZ2Uodm9pZCkgY29uc3QgXAorCQl7cmV0dXJuIFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6Z2V0U2lnbmF0dXJlS2V5VXNhZ2UoKTt9IFwKKwl2aXJ0dWFsIGJvb2wgZ2V0RXhjaGFuZ2VLZXlVc2FnZSh2b2lkKSBjb25zdCBcCisJCXtyZXR1cm4gWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsOjpnZXRFeGNoYW5nZUtleVVzYWdlKCk7fSBcCisJdmlydHVhbCB2b2lkIHNldElkKGNvbnN0IFhNTENoICogaWQpIFwKKwkJe1hLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6c2V0SWQoaWQpO30gXAorCXZpcnR1YWwgdm9pZCBzZXRFbmNyeXB0aW9uS2V5VXNhZ2Uodm9pZCkgXAorCQl7WEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsOjpzZXRFbmNyeXB0aW9uS2V5VXNhZ2UoKTt9IFwKKwl2aXJ0dWFsIHZvaWQgc2V0U2lnbmF0dXJlS2V5VXNhZ2Uodm9pZCkgXAorCQl7WEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsOjpzZXRTaWduYXR1cmVLZXlVc2FnZSgpO30gXAorCXZpcnR1YWwgdm9pZCBzZXRFeGNoYW5nZUtleVVzYWdlKHZvaWQpIFwKKwkJe1hLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6c2V0RXhjaGFuZ2VLZXlVc2FnZSgpO30gXAorCXZpcnR1YWwgRFNJR0tleUluZm9MaXN0ICogZ2V0S2V5SW5mb0xpc3QoKSBcCisJCXtyZXR1cm4gWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsOjpnZXRLZXlJbmZvTGlzdCgpO30gXAorCXZpcnR1YWwgdm9pZCBjbGVhcktleUluZm8odm9pZCkgXAorCQl7WEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsOjpjbGVhcktleUluZm8oKTt9IFwKKwl2aXJ0dWFsIERTSUdLZXlJbmZvVmFsdWUgKiBhcHBlbmREU0FLZXlWYWx1ZShjb25zdCBYTUxDaCAqIFAsICBcCisJCQkJCQkgICBjb25zdCBYTUxDaCAqIFEsICBcCisJCQkJCQkgICBjb25zdCBYTUxDaCAqIEcsICBcCisJCQkJCQkgICBjb25zdCBYTUxDaCAqIFkpIFwKKwkJe3JldHVybiBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGw6OmFwcGVuZERTQUtleVZhbHVlKFAsUSxHLFkpO30gXAorCXZpcnR1YWwgRFNJR0tleUluZm9WYWx1ZSAqIGFwcGVuZFJTQUtleVZhbHVlKGNvbnN0IFhNTENoICogbW9kdWx1cywgIFwKKwkJCQkJCSAgIGNvbnN0IFhNTENoICogZXhwb25lbnQpIFwKKwkJe3JldHVybiBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGw6OmFwcGVuZFJTQUtleVZhbHVlKG1vZHVsdXMsZXhwb25lbnQpO30gXAorCXZpcnR1YWwgRFNJR0tleUluZm9YNTA5ICogYXBwZW5kWDUwOURhdGEodm9pZCkgXAorCQl7cmV0dXJuIFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6YXBwZW5kWDUwOURhdGEoKTt9IFwKKwl2aXJ0dWFsIERTSUdLZXlJbmZvTmFtZSAqIGFwcGVuZEtleU5hbWUoY29uc3QgWE1MQ2ggKiBuYW1lLCBib29sIGlzRE5hbWUgPSBmYWxzZSkgXAorCQl7cmV0dXJuIFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6YXBwZW5kS2V5TmFtZShuYW1lLGlzRE5hbWUpO30gXAorCXZpcnR1YWwgRFNJR0tleUluZm9QR1BEYXRhICogYXBwZW5kUEdQRGF0YShjb25zdCBYTUxDaCAqIGlkLCBjb25zdCBYTUxDaCAqIHBhY2tldCkgXAorCQl7cmV0dXJuIFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6YXBwZW5kUEdQRGF0YShpZCxwYWNrZXQpO30gXAorCXZpcnR1YWwgRFNJR0tleUluZm9TUEtJRGF0YSAqIGFwcGVuZFNQS0lEYXRhKGNvbnN0IFhNTENoICogc2V4cCkgXAorCQl7cmV0dXJuIFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6YXBwZW5kU1BLSURhdGEoc2V4cCk7fSBcCisJdmlydHVhbCBEU0lHS2V5SW5mb01nbXREYXRhICogYXBwZW5kTWdtdERhdGEoY29uc3QgWE1MQ2ggKiBkYXRhKSBcCisJCXtyZXR1cm4gWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsOjphcHBlbmRNZ210RGF0YShkYXRhKTt9IFwKKwl2aXJ0dWFsIGludCBnZXRVc2VLZXlXaXRoU2l6ZSh2b2lkKSBjb25zdCBcCisJCXtyZXR1cm4gWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsOjpnZXRVc2VLZXlXaXRoU2l6ZSgpO30gXAorCXZpcnR1YWwgWEtNU1VzZUtleVdpdGggKiBnZXRVc2VLZXlXaXRoSXRlbShpbnQgaXRlbSkgY29uc3QgXAorCQl7cmV0dXJuIFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6Z2V0VXNlS2V5V2l0aEl0ZW0oaXRlbSk7fSBcCisJdmlydHVhbCBYS01TVXNlS2V5V2l0aCAqIGFwcGVuZFVzZUtleVdpdGhJdGVtKCBcCisJCQljb25zdCBYTUxDaCAqIGFwcGxpY2F0aW9uLCAgXAorCQkJY29uc3QgWE1MQ2ggKiBpZGVudGlmaWVyKSBcCisJCXtyZXR1cm4gWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsOjphcHBlbmRVc2VLZXlXaXRoSXRlbShhcHBsaWNhdGlvbiwgaWRlbnRpZmllcik7fQorCisKKworI2VuZGlmIC8qIFhLTVNLRVlCSU5ESU5HQUJTVFJBQ1RUWVBFSU1QTF9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU0tleUJpbmRpbmdJbXBsLmNwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TS2V5QmluZGluZ0ltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4ZTdjNGIKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU0tleUJpbmRpbmdJbXBsLmNwcApAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU0tleUJpbmRpbmdJbXBsIDo9IEltcGxlbWVudGF0aW9uIGZvciBLZXlCaW5kaW5nCisgKgorICogJElkJAorICoKKyAqLworCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRW52LmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0NvbnN0YW50cy5ocHA+CisKKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPgorCisjaW5jbHVkZSAiWEtNU0tleUJpbmRpbmdJbXBsLmhwcCIKKyNpbmNsdWRlICJYS01TU3RhdHVzSW1wbC5ocHAiCisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdC9EZXN0cnVjdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWEtNU0tleUJpbmRpbmdJbXBsOjpYS01TS2V5QmluZGluZ0ltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYgCisJCSkgOgorWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsKGVudikgeworCW1wX3N0YXR1cyA9IE5VTEw7Cit9CisKK1hLTVNLZXlCaW5kaW5nSW1wbDo6WEtNU0tleUJpbmRpbmdJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52LCAKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBub2RlCisJCSkgOgorWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsKGVudiwgbm9kZSkgeworCisJbXBfc3RhdHVzID0gTlVMTDsKK30KKworWEtNU0tleUJpbmRpbmdJbXBsOjp+WEtNU0tleUJpbmRpbmdJbXBsKCkgeworCisJaWYgKG1wX3N0YXR1cyAhPSBOVUxMKQorCQlkZWxldGUgbXBfc3RhdHVzOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgTG9hZCBmcm9tIERPTQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBYS01TS2V5QmluZGluZ0ltcGw6OmxvYWQodm9pZCkgeworCisJaWYgKG1wX2tleUJpbmRpbmdBYnN0cmFjdFR5cGVFbGVtZW50ID09IE5VTEwpIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZFhLTVNDaGlsZE5vdEZvdW5kLAorCQkJIlhLTVNLZXlCaW5kaW5nSW1wbDo6bG9hZCAtIGNhbGxlZCBvbiBlbXB0eSBET00iKTsKKwl9CisKKwlYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGw6OmxvYWQoKTsKKworCS8qIEZpbmQgdGhlIHN0YXR1cyBlbGVtZW50ICovCisJRE9NTm9kZUxpc3QgKiBubCA9IG1wX2tleUJpbmRpbmdBYnN0cmFjdFR5cGVFbGVtZW50LT5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKAorCQlYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TLAorCQlYS01TQ29uc3RhbnRzOjpzX3RhZ1N0YXR1cyk7CisKKwlpZiAobmwgPT0gTlVMTCB8fCBubC0+Z2V0TGVuZ3RoKCkgIT0gMSkgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkWEtNU0NoaWxkTm90Rm91bmQsCisJCQkiWEtNU0tleUJpbmRpbmc6OmxvYWQgLSBTdGF0dXMgdmFsdWUgbm90IGZvdW5kIik7CisJfQorCisJWFNFQ25ldyhtcF9zdGF0dXMsIFhLTVNTdGF0dXNJbXBsKG1wX2VudiwgKERPTUVsZW1lbnQqKSBubC0+aXRlbSgwKSkpOworCW1wX3N0YXR1cy0+bG9hZCgpOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ3JlYXRlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitET01FbGVtZW50ICogWEtNU0tleUJpbmRpbmdJbXBsOjpjcmVhdGVCbGFua0tleUJpbmRpbmcoWEtNU1N0YXR1czo6U3RhdHVzVmFsdWUgc3RhdHVzKSB7CisKKwlET01FbGVtZW50ICogcmV0ID0gWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsOjoKKwkJCQljcmVhdGVCbGFua0tleUJpbmRpbmdBYnN0cmFjdFR5cGUoWEtNU0NvbnN0YW50czo6c190YWdLZXlCaW5kaW5nKTsKKworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChyZXQpOworCisJLy8gQ3JlYXRlIHRoZSBzdGF0dXMgZWxlbWVudAorCVhTRUNuZXcobXBfc3RhdHVzLCBYS01TU3RhdHVzSW1wbChtcF9lbnYpKTsKKwlyZXQtPmFwcGVuZENoaWxkKG1wX3N0YXR1cy0+Y3JlYXRlQmxhbmtTdGF0dXMoc3RhdHVzKSk7CisJbXBfZW52LT5kb1ByZXR0eVByaW50KHJldCk7CisKKwlyZXR1cm4gcmV0OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU3RhdHVzIGhhbmRsaW5nCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYS01TU3RhdHVzICogWEtNU0tleUJpbmRpbmdJbXBsOjpnZXRTdGF0dXModm9pZCkgY29uc3QgeworCisJcmV0dXJuIG1wX3N0YXR1czsKKworfQorCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU0tleUJpbmRpbmdJbXBsLmhwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TS2V5QmluZGluZ0ltcGwuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmZWQ3NGIKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU0tleUJpbmRpbmdJbXBsLmhwcApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TS2V5QmluZGluZ0ltcGwgOj0gSW1wbGVtZW50YXRpb24gZm9yIEtleUJpbmRpbmcKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEtNU0tFWUJJTkRJTkdJTVBMX0lOQ0xVREUKKyNkZWZpbmUgWEtNU0tFWUJJTkRJTkdJTVBMX0lOQ0xVREUKKworLy8gWFNFQyBJbmNsdWRlcworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TS2V5QmluZGluZy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNTdGF0dXMuaHBwPgorCisjaW5jbHVkZSAiWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsLmhwcCIKKworY2xhc3MgWEtNU1N0YXR1c0ltcGw7CisKK2NsYXNzIFhLTVNLZXlCaW5kaW5nSW1wbCA6IHB1YmxpYyBYS01TS2V5QmluZGluZywgcHVibGljIFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbCB7CisKK3B1YmxpYzoKKworCVhLTVNLZXlCaW5kaW5nSW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudgorCSk7CisKKwlYS01TS2V5QmluZGluZ0ltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYsIAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIG5vZGUKKwkpOworCisJdmlydHVhbCB+WEtNU0tleUJpbmRpbmdJbXBsKCkgOworCisJLy8gTG9hZAorCXZvaWQgbG9hZCh2b2lkKTsKKworCS8vIENyZWF0ZQorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICoKKwkJY3JlYXRlQmxhbmtLZXlCaW5kaW5nKFhLTVNTdGF0dXM6OlN0YXR1c1ZhbHVlIHN0YXR1cyk7CisKKwkvLyBJbnRlcmZhY2UKKwl2aXJ0dWFsIFhLTVNTdGF0dXMgKiBnZXRTdGF0dXModm9pZCkgY29uc3Q7CisKKwkvLyBJbXBvcnQgbWV0aG9kcyBmcm9tIFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlCisJWEtNU19LRVlCSU5ESU5HQUJTVFJBQ1RZUEVfSU1QTF9NRVRIT0RTCisKK3ByaXZhdGU6CisKKwlYS01TU3RhdHVzSW1wbAkJKiBtcF9zdGF0dXM7CisKKwkvLyBVbmltcGxlbWVudGVkCisJWEtNU0tleUJpbmRpbmdJbXBsKHZvaWQpOworCVhLTVNLZXlCaW5kaW5nSW1wbChjb25zdCBYS01TS2V5QmluZGluZ0ltcGwgJik7CisJWEtNU0tleUJpbmRpbmdJbXBsICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU0tleUJpbmRpbmdJbXBsICYpOworCit9OworCisjZW5kaWYgLyogWEtNU0tFWUJJTkRJTkdJTVBMX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvaW1wbC9YS01TTG9jYXRlUmVxdWVzdEltcGwuY3BwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNMb2NhdGVSZXF1ZXN0SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE5Y2E2NAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TTG9jYXRlUmVxdWVzdEltcGwuY3BwCkBAIC0wLDAgKzEsMTY0IEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TTG9jYXRlUmVxdWVzdEltcGwgOj0gSW1wbGVtZW50YXRpb24gb2YgTG9jYXRlUmVxdWVzdCBNZXNzYWdlcworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0NvbnN0YW50cy5ocHA+CisKKyNpbmNsdWRlICJYS01TTG9jYXRlUmVxdWVzdEltcGwuaHBwIgorCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ29uc3RydWN0L0Rlc3RydWN0CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYS01TTG9jYXRlUmVxdWVzdEltcGw6OlhLTVNMb2NhdGVSZXF1ZXN0SW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudikgOgorbV9yZXF1ZXN0KGVudiksCittX21zZyhtX3JlcXVlc3QubV9tc2cpLAorbXBfcXVlcnlLZXlCaW5kaW5nRWxlbWVudChOVUxMKSwKK21wX3F1ZXJ5S2V5QmluZGluZyhOVUxMKSB7CisKK30KKworWEtNU0xvY2F0ZVJlcXVlc3RJbXBsOjpYS01TTG9jYXRlUmVxdWVzdEltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYsIAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIG5vZGUpIDoKK21fcmVxdWVzdChlbnYsIG5vZGUpLAorbV9tc2cobV9yZXF1ZXN0Lm1fbXNnKSwKK21wX3F1ZXJ5S2V5QmluZGluZyhOVUxMKSB7CisKK30KKworWEtNU0xvY2F0ZVJlcXVlc3RJbXBsOjp+WEtNU0xvY2F0ZVJlcXVlc3RJbXBsKCkgeworCisJaWYgKG1wX3F1ZXJ5S2V5QmluZGluZyAhPSBOVUxMKQorCQlkZWxldGUgbXBfcXVlcnlLZXlCaW5kaW5nOworCit9CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBMb2FkIGZyb20gRE9NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBMb2FkIGVsZW1lbnRzCit2b2lkIFhLTVNMb2NhdGVSZXF1ZXN0SW1wbDo6bG9hZCgpIHsKKworCWlmIChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCA9PSBOVUxMKSB7CisKKwkJLy8gQXR0ZW1wdCB0byBsb2FkIGFuIGVtcHR5IGVsZW1lbnQKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsCisJCQkiWEtNU0xvY2F0ZVJlcXVlc3Q6OmxvYWQgLSBjYWxsZWQgb24gZW1wdHkgRE9NIik7CisKKwl9CisKKwlpZiAoIXN0ckVxdWFscyhnZXRYS01TTG9jYWxOYW1lKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KSwgCisJCQkJCQkJCQlYS01TQ29uc3RhbnRzOjpzX3RhZ0xvY2F0ZVJlcXVlc3QpKSB7CisJCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLAorCQkJIlhLTVNMb2NhdGVSZXF1ZXN0Ojpsb2FkIC0gY2FsbGVkIGluY29ycmVjdCBub2RlIik7CisJCisJfQorCisJLy8gTG9hZCB0aGUgYmFzZSBtZXNzYWdlCisJbV9yZXF1ZXN0LmxvYWQoKTsKKworCS8vIE5vdyBjaGVjayBmb3IgYW55IFF1ZXJ5S2V5QmluZGluZyBlbGVtZW50cworCURPTUVsZW1lbnQgKiB0bXBFbHQgPSBmaW5kRmlyc3RFbGVtZW50Q2hpbGQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOworCXdoaWxlICh0bXBFbHQgIT0gTlVMTCAmJiAKKwkJIXN0ckVxdWFscyhnZXRYS01TTG9jYWxOYW1lKHRtcEVsdCksIFhLTVNDb25zdGFudHM6OnNfdGFnUXVlcnlLZXlCaW5kaW5nKSkgCisJCXRtcEVsdCA9IGZpbmROZXh0RWxlbWVudENoaWxkKHRtcEVsdCk7CisKKwlpZiAodG1wRWx0ICE9IE5VTEwpIHsKKworCQlYU0VDbmV3KG1wX3F1ZXJ5S2V5QmluZGluZywgWEtNU1F1ZXJ5S2V5QmluZGluZ0ltcGwobV9tc2cubXBfZW52LCB0bXBFbHQpKTsKKwkJbXBfcXVlcnlLZXlCaW5kaW5nLT5sb2FkKCk7CisJCW1wX3F1ZXJ5S2V5QmluZGluZ0VsZW1lbnQgPSB0bXBFbHQ7CisKKwl9CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDcmVhdGUgYSBibGFuayBvbmUKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitET01FbGVtZW50ICogWEtNU0xvY2F0ZVJlcXVlc3RJbXBsOjpjcmVhdGVCbGFua0xvY2F0ZVJlcXVlc3QoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJY29uc3QgWE1MQ2ggKiBpZCkgeworCisJcmV0dXJuIG1fcmVxdWVzdC5jcmVhdGVCbGFua1JlcXVlc3RBYnN0cmFjdFR5cGUoCisJCVhLTVNDb25zdGFudHM6OnNfdGFnTG9jYXRlUmVxdWVzdCwgc2VydmljZSwgaWQpOworLy8JcmV0dXJuIFhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbDo6Y3JlYXRlQmxhbmtNZXNzYWdlQWJzdHJhY3RUeXBlKAorLy8JCU1BS0VfVU5JQ09ERV9TVFJJTkcoIlZhbGlkYXRlUmVxdWVzdCIpLCBzZXJ2aWNlLCBpZCk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBHZXQgaW50ZXJmYWNlIG1ldGhvZHMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hLTVNNZXNzYWdlQWJzdHJhY3RUeXBlOjptZXNzYWdlVHlwZSBYS01TTG9jYXRlUmVxdWVzdEltcGw6OmdldE1lc3NhZ2VUeXBlKHZvaWQpIHsKKworCXJldHVybiBYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGw6OkxvY2F0ZVJlcXVlc3Q7CisKK30KKworCitYS01TUXVlcnlLZXlCaW5kaW5nICogWEtNU0xvY2F0ZVJlcXVlc3RJbXBsOjpnZXRRdWVyeUtleUJpbmRpbmcodm9pZCkgeworCisJcmV0dXJuIG1wX3F1ZXJ5S2V5QmluZGluZzsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFNldHRlciBtZXRob2RzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYS01TUXVlcnlLZXlCaW5kaW5nICogWEtNU0xvY2F0ZVJlcXVlc3RJbXBsOjphZGRRdWVyeUtleUJpbmRpbmcodm9pZCkgeworCisJaWYgKG1wX3F1ZXJ5S2V5QmluZGluZyAhPSBOVUxMKQorCQlyZXR1cm4gbXBfcXVlcnlLZXlCaW5kaW5nOworCisKKwkvLyBPSyAtIE5vdGhpbmcgZXhpc3RzLCBzbyB3ZSBuZWVkIHRvIGNyZWF0ZSBmcm9tIHNjcmF0Y2gKKworCVhTRUNuZXcobXBfcXVlcnlLZXlCaW5kaW5nLCBYS01TUXVlcnlLZXlCaW5kaW5nSW1wbChtX21zZy5tcF9lbnYpKTsKKwltcF9xdWVyeUtleUJpbmRpbmdFbGVtZW50ID0gbXBfcXVlcnlLZXlCaW5kaW5nLT5jcmVhdGVCbGFua1F1ZXJ5S2V5QmluZGluZygpOworCisJaWYgKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5nZXRGaXJzdENoaWxkKCkgPT0gTlVMTCkgeworCQltX21zZy5tcF9lbnYtPmRvUHJldHR5UHJpbnQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOworCX0KKwltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+YXBwZW5kQ2hpbGQobXBfcXVlcnlLZXlCaW5kaW5nRWxlbWVudCk7CisJbV9tc2cubXBfZW52LT5kb1ByZXR0eVByaW50KG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KTsKKworCXJldHVybiBtcF9xdWVyeUtleUJpbmRpbmc7CisKK30KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvaW1wbC9YS01TTG9jYXRlUmVxdWVzdEltcGwuaHBwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNMb2NhdGVSZXF1ZXN0SW1wbC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI0OGQwNwotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TTG9jYXRlUmVxdWVzdEltcGwuaHBwCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNMb2NhdGVSZXF1ZXN0SW1wbCA6PSBJbXBsZW1lbnRhdGlvbiBvZiBMb2NhdGVSZXF1ZXN0IE1lc3NhZ2VzCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhLTVNMT0NBVEVSRVFVRVNUSU1QTF9JTkNMVURFCisjZGVmaW5lIFhLTVNMT0NBVEVSRVFVRVNUSU1QTF9JTkNMVURFCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0xvY2F0ZVJlcXVlc3QuaHBwPgorCisjaW5jbHVkZSAiWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsLmhwcCIKKyNpbmNsdWRlICJYS01TUXVlcnlLZXlCaW5kaW5nSW1wbC5ocHAiCisKK2NsYXNzIFhLTVNRdWVyeUtleVJlcXVlc3RJbXBsOworCitjbGFzcyBYS01TTG9jYXRlUmVxdWVzdEltcGwgOiBwdWJsaWMgWEtNU0xvY2F0ZVJlcXVlc3QgeworCitwdWJsaWM6IAorCVhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbCBtX3JlcXVlc3Q7CisJWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsICZtX21zZzsKK3B1YmxpYzoKKworCVhLTVNMb2NhdGVSZXF1ZXN0SW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudgorCSk7CisKKwlYS01TTG9jYXRlUmVxdWVzdEltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYsIAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIG5vZGUKKwkpOworCisJdmlydHVhbCB+WEtNU0xvY2F0ZVJlcXVlc3RJbXBsKCk7CisKKwkvLyBMb2FkIGVsZW1lbnRzCisJdm9pZCBsb2FkKCk7CisKKwkvLyBDcmVhdGlvbgorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogCisJCWNyZWF0ZUJsYW5rTG9jYXRlUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCk7CisKKworCS8qIEdldHRlciBJbnRlcmZhY2UgTWV0aG9kcyAqLworCisJdmlydHVhbCBYS01TUXVlcnlLZXlCaW5kaW5nICogZ2V0UXVlcnlLZXlCaW5kaW5nKHZvaWQpOworCisJLyogU2V0dGVyIGludGVyZmFjZSBtZXRob2RzICovCisJdmlydHVhbCBYS01TUXVlcnlLZXlCaW5kaW5nICogYWRkUXVlcnlLZXlCaW5kaW5nKHZvaWQpOworCisJLyogSW1wbGVtZW50ZWQgZnJvbSBNZXNzYWdlQWJzdHJhY3RUeXBlICovCisJdmlydHVhbCBtZXNzYWdlVHlwZSBnZXRNZXNzYWdlVHlwZSh2b2lkKTsKKworCS8qIEZvcmNlZCBpbmhlcml0YW5jZSBmcm9tIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbCAqLworCVhLTVNfTUVTU0FHRUFCU1RSQUNUWVBFX0lNUExfTUVUSE9EUworCisJLyogRm9yY2VkIGluaGVyaXRhbmNlIGZyb20gUmVxdWVzdEFic3RyYWN0VHlwZSAqLworCVhLTVNfUkVRVUVTVEFCU1RSQUNUWVBFX0lNUExfTUVUSE9EUworCitwcml2YXRlOgorCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQKKwkJCQkqIG1wX3F1ZXJ5S2V5QmluZGluZ0VsZW1lbnQ7CisJWEtNU1F1ZXJ5S2V5QmluZGluZ0ltcGwgKiBtcF9xdWVyeUtleUJpbmRpbmc7CisKKwkvLyBVbmltcGxlbWVudGVkCisJWEtNU0xvY2F0ZVJlcXVlc3RJbXBsKGNvbnN0IFhLTVNMb2NhdGVSZXF1ZXN0SW1wbCAmKTsKKwlYS01TTG9jYXRlUmVxdWVzdEltcGwgJiBvcGVyYXRvciA9IChjb25zdCBYS01TTG9jYXRlUmVxdWVzdEltcGwgJik7CisKK307CisKKyNlbmRpZiAvKiBYS01TTE9DQVRFUkVRVUVTVElNUExfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNMb2NhdGVSZXN1bHRJbXBsLmNwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TTG9jYXRlUmVzdWx0SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZjYjVmNwotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TTG9jYXRlUmVzdWx0SW1wbC5jcHAKQEAgLTAsMCArMSwxODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNMb2NhdGVSZXN1bHRJbXBsIDo9IEltcGxlbWVudGF0aW9uIG9mIExvY2F0ZVJlc3VsdCBNZXNzYWdlcworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0NvbnN0YW50cy5ocHA+CisKKyNpbmNsdWRlICJYS01TTG9jYXRlUmVzdWx0SW1wbC5ocHAiCisjaW5jbHVkZSAiWEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nSW1wbC5ocHAiCisKKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdHJ1Y3QvRGVzdHJ1Y3QKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hLTVNMb2NhdGVSZXN1bHRJbXBsOjpYS01TTG9jYXRlUmVzdWx0SW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudikgOgorbV9yZXN1bHQoZW52KSwKK21fbXNnKG1fcmVzdWx0Lm1fbXNnKSB7CisKK30KKworWEtNU0xvY2F0ZVJlc3VsdEltcGw6OlhLTVNMb2NhdGVSZXN1bHRJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52LCAKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBub2RlKSA6CittX3Jlc3VsdChlbnYsIG5vZGUpLAorbV9tc2cobV9yZXN1bHQubV9tc2cpIHsKKworfQorCitYS01TTG9jYXRlUmVzdWx0SW1wbDo6flhLTVNMb2NhdGVSZXN1bHRJbXBsKCkgeworCisJWEtNU0xvY2F0ZVJlc3VsdEltcGw6OlVudmVyaWZpZWRLZXlCaW5kaW5nVmVjdG9yVHlwZTo6aXRlcmF0b3IgaTsKKworCWZvciAoaSA9IG1fdW52ZXJpZmllZEtleUJpbmRpbmdMaXN0LmJlZ2luKCkgOyBpIDwgbV91bnZlcmlmaWVkS2V5QmluZGluZ0xpc3QuZW5kKCk7IGkrKykgeworCisJCWRlbGV0ZSAoKmkpOworCisJfQorCit9CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBMb2FkIGZyb20gRE9NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBMb2FkIGVsZW1lbnRzCit2b2lkIFhLTVNMb2NhdGVSZXN1bHRJbXBsOjpsb2FkKCkgeworCisJaWYgKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50ID09IE5VTEwpIHsKKworCQkvLyBBdHRlbXB0IHRvIGxvYWQgYW4gZW1wdHkgZWxlbWVudAorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwKKwkJCSJYS01TTG9jYXRlUmVzdWx0Ojpsb2FkIC0gY2FsbGVkIG9uIGVtcHR5IERPTSIpOworCisJfQorCisJaWYgKCFzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZShtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCksIAorCQkJCQkJCQkJWEtNU0NvbnN0YW50czo6c190YWdMb2NhdGVSZXN1bHQpKSB7CisJCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLAorCQkJIlhLTVNMb2NhdGVSZXN1bHQ6OmxvYWQgLSBjYWxsZWQgaW5jb3JyZWN0IG5vZGUiKTsKKwkKKwl9CisKKwkvLyBHZXQgYW55IFVudmVyaWZpZWRLZXlCaW5kaW5nIGVsZW1lbnRzCisJRE9NTm9kZUxpc3QgKiBubCA9IG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKAorCQlYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TLAorCQlYS01TQ29uc3RhbnRzOjpzX3RhZ1VudmVyaWZpZWRLZXlCaW5kaW5nKTsKKworCWlmIChubCAhPSBOVUxMKSB7CisKKwkJWEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nSW1wbCAqIHVrYjsKKwkJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBubC0+Z2V0TGVuZ3RoKCkgOyArKyBpKSB7CisKKwkJCVhTRUNuZXcodWtiLCBYS01TVW52ZXJpZmllZEtleUJpbmRpbmdJbXBsKG1fbXNnLm1wX2VudiwgKERPTUVsZW1lbnQgKikgbmwtPml0ZW0oaSkpKTsKKwkJCW1fdW52ZXJpZmllZEtleUJpbmRpbmdMaXN0LnB1c2hfYmFjayh1a2IpOworCQkJdWtiLT5sb2FkKCk7CisKKwkJfQorCisJfQorCisKKwkvLyBMb2FkIHRoZSBiYXNlIG1lc3NhZ2UKKwltX3Jlc3VsdC5sb2FkKCk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDcmVhdGUgYSBibGFuayBvbmUKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitET01FbGVtZW50ICogWEtNU0xvY2F0ZVJlc3VsdEltcGw6OmNyZWF0ZUJsYW5rTG9jYXRlUmVzdWx0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCWNvbnN0IFhNTENoICogaWQsCisJCVJlc3VsdE1ham9yIHJtYWosCisJCVJlc3VsdE1pbm9yIHJtaW4pIHsKKworCXJldHVybiBtX3Jlc3VsdC5jcmVhdGVCbGFua1Jlc3VsdFR5cGUoCisJCVhLTVNDb25zdGFudHM6OnNfdGFnTG9jYXRlUmVzdWx0LCBzZXJ2aWNlLCBpZCwgcm1haiwgcm1pbik7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBHZXQgaW50ZXJmYWNlIG1ldGhvZHMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hLTVNNZXNzYWdlQWJzdHJhY3RUeXBlOjptZXNzYWdlVHlwZSBYS01TTG9jYXRlUmVzdWx0SW1wbDo6Z2V0TWVzc2FnZVR5cGUodm9pZCkgeworCisJcmV0dXJuIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbDo6TG9jYXRlUmVzdWx0OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgVW52ZXJpZmllZEtleUJpbmRpbmcgaGFuZGxpbmcKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworaW50IFhLTVNMb2NhdGVSZXN1bHRJbXBsOjpnZXRVbnZlcmlmaWVkS2V5QmluZGluZ1NpemUodm9pZCkgY29uc3QgeworCisJcmV0dXJuIChpbnQpIG1fdW52ZXJpZmllZEtleUJpbmRpbmdMaXN0LnNpemUoKTsKKworfQorCitYS01TVW52ZXJpZmllZEtleUJpbmRpbmcgKiBYS01TTG9jYXRlUmVzdWx0SW1wbDo6Z2V0VW52ZXJpZmllZEtleUJpbmRpbmdJdGVtKGludCBpdGVtKSBjb25zdCB7CisKKwlpZiAoaXRlbSA8IDAgfHwgaXRlbSA+PSAoaW50KSBtX3VudmVyaWZpZWRLZXlCaW5kaW5nTGlzdC5zaXplKCkpIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsCisJCQkiWEtNU0xvY2F0ZVJlc3VsdDo6Z2V0VW52ZXJpZmllZEtleUJpbmRpbmdJdGVtIC0gaXRlbSBvdXQgb2YgcmFuZ2UiKTsKKwl9CisKKwlyZXR1cm4gbV91bnZlcmlmaWVkS2V5QmluZGluZ0xpc3RbaXRlbV07CisKK30KKworWEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nICogWEtNU0xvY2F0ZVJlc3VsdEltcGw6OmFwcGVuZFVudmVyaWZpZWRLZXlCaW5kaW5nSXRlbSh2b2lkKSB7CisKKwlYS01TVW52ZXJpZmllZEtleUJpbmRpbmdJbXBsICogdTsKKworCVhTRUNuZXcodSwgWEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nSW1wbChtX21zZy5tcF9lbnYpKTsKKworCW1fdW52ZXJpZmllZEtleUJpbmRpbmdMaXN0LnB1c2hfYmFjayh1KTsKKworCURPTUVsZW1lbnQgKiBlID0gdS0+Y3JlYXRlQmxhbmtVbnZlcmlmaWVkS2V5QmluZGluZygpOworCisJLy8gQXBwZW5kIHRoZSBlbGVtZW50CisKKwltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+YXBwZW5kQ2hpbGQoZSk7CisJbV9tc2cubXBfZW52LT5kb1ByZXR0eVByaW50KG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KTsKKworCXJldHVybiB1OworCit9CmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU0xvY2F0ZVJlc3VsdEltcGwuaHBwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNMb2NhdGVSZXN1bHRJbXBsLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTYzMzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9pbXBsL1hLTVNMb2NhdGVSZXN1bHRJbXBsLmhwcApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU0xvY2F0ZVJlc3VsdEltcGwgOj0gSW1wbGVtZW50YXRpb24gb2YgTG9jYXRlUmVzdWx0IE1lc3NhZ2VzCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhLTVNMT0NBVEVSRVNVTFRJTVBMX0lOQ0xVREUKKyNkZWZpbmUgWEtNU0xPQ0FURVJFU1VMVElNUExfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNMb2NhdGVSZXN1bHQuaHBwPgorCisjaW5jbHVkZSAiWEtNU1Jlc3VsdFR5cGVJbXBsLmhwcCIKKworI2luY2x1ZGUgPHZlY3Rvcj4KKworY2xhc3MgWEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nSW1wbDsKKworCitjbGFzcyBYS01TTG9jYXRlUmVzdWx0SW1wbCA6IHB1YmxpYyBYS01TTG9jYXRlUmVzdWx0IHsKKworcHVibGljOgorCVhLTVNSZXN1bHRUeXBlSW1wbCBtX3Jlc3VsdDsKKwlYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGwgJm1fbXNnOworcHVibGljOgorCisJWEtNU0xvY2F0ZVJlc3VsdEltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYKKwkpOworCisJWEtNU0xvY2F0ZVJlc3VsdEltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYsIAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIG5vZGUKKwkpOworCisJdmlydHVhbCB+WEtNU0xvY2F0ZVJlc3VsdEltcGwoKTsKKworCS8vIExvYWQgZWxlbWVudHMKKwl2b2lkIGxvYWQoKTsKKworCS8vIENyZWF0aW9uCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiAKKwkJY3JlYXRlQmxhbmtMb2NhdGVSZXN1bHQoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJY29uc3QgWE1MQ2ggKiBpZCwKKwkJUmVzdWx0TWFqb3Igcm1haiwKKwkJUmVzdWx0TWlub3Igcm1pbik7CisKKwkvLyBJbnRlcmZhY2UgbWV0aG9kcworCXZpcnR1YWwgaW50IGdldFVudmVyaWZpZWRLZXlCaW5kaW5nU2l6ZSh2b2lkKSBjb25zdDsKKwl2aXJ0dWFsIFhLTVNVbnZlcmlmaWVkS2V5QmluZGluZyAqIGdldFVudmVyaWZpZWRLZXlCaW5kaW5nSXRlbShpbnQgaXRlbSkgY29uc3Q7CisJdmlydHVhbCBYS01TVW52ZXJpZmllZEtleUJpbmRpbmcgKiBhcHBlbmRVbnZlcmlmaWVkS2V5QmluZGluZ0l0ZW0odm9pZCk7CisKKworCS8qIEltcGxlbWVudGVkIGZyb20gTWVzc2FnZUFic3RyYWN0VHlwZSAqLworCXZpcnR1YWwgbWVzc2FnZVR5cGUgZ2V0TWVzc2FnZVR5cGUodm9pZCk7CisKKwkvKiBGb3JjZWQgaW5oZXJpdGFuY2UgZnJvbSBYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGwgKi8KKwlYS01TX01FU1NBR0VBQlNUUkFDVFlQRV9JTVBMX01FVEhPRFMKKworCS8qIEZvcmNlZCBpbmhlcml0YW5jZSBmcm9tIFhLTVNSZXN1bHRUeXBlSW1wbCAqLworCVhLTVNfUkVTVUxUVFlQRV9JTVBMX01FVEhPRFMKKworcHJpdmF0ZToKKworI2lmIGRlZmluZWQoWFNFQ19OT19OQU1FU1BBQ0VTKQorCXR5cGVkZWYgdmVjdG9yPFhLTVNVbnZlcmlmaWVkS2V5QmluZGluZ0ltcGwgKj4JCVVudmVyaWZpZWRLZXlCaW5kaW5nVmVjdG9yVHlwZTsKKyNlbHNlCisJdHlwZWRlZiBzdGQ6OnZlY3RvcjxYS01TVW52ZXJpZmllZEtleUJpbmRpbmdJbXBsICo+CVVudmVyaWZpZWRLZXlCaW5kaW5nVmVjdG9yVHlwZTsKKyNlbmRpZgorCisJVW52ZXJpZmllZEtleUJpbmRpbmdWZWN0b3JUeXBlCW1fdW52ZXJpZmllZEtleUJpbmRpbmdMaXN0OworCisJLy8gVW5pbXBsZW1lbnRlZAorCVhLTVNMb2NhdGVSZXN1bHRJbXBsKGNvbnN0IFhLTVNMb2NhdGVSZXN1bHRJbXBsICYpOworCVhLTVNMb2NhdGVSZXN1bHRJbXBsICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU0xvY2F0ZVJlc3VsdEltcGwgJik7CisKK307CisKKyNlbmRpZiAvKiBYS01TTE9DQVRFUkVTVUxUSU1QTF9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsLmNwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjYzU0MzQKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsLmNwcApAQCAtMCwwICsxLDQ0OSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsIDo9IEltcGxlbWVudGF0aW9uIGNsYXNzIGZvciBiYXNlIFhLTVMgbWVzc2FnZXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vudi5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdTaWduYXR1cmUuaHBwPgorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHUmVmZXJlbmNlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0NvbnN0YW50cy5ocHA+CisKKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxVbmlEZWZzLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvSmFuaXRvci5ocHA+CisKKyNpbmNsdWRlICJYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGwuaHBwIgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdHJ1Y3QvRGVzdHJ1Y3QKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbDo6WEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52KSA6CisKK21wX2VudihlbnYpLAorbXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQoTlVMTCksCittcF9pZEF0dHIoTlVMTCksCittcF9zZXJ2aWNlQXR0cihOVUxMKSwKK21wX25vbmNlQXR0cihOVUxMKSwKK21wX3NpZ25hdHVyZUVsZW1lbnQoTlVMTCksCittcF9vcGFxdWVDbGllbnREYXRhRWxlbWVudChOVUxMKSwKK21wX3NpZ25hdHVyZShOVUxMKSB7CisKKwltX29wYXF1ZUNsaWVudERhdGFTaXplID0gMDsKK30KKworWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsOjpYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYsIAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIG5vZGUpIDoKKworbXBfZW52KGVudiksCittcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudChub2RlKSwKK21wX2lkQXR0cihOVUxMKSwKK21wX3NlcnZpY2VBdHRyKE5VTEwpLAorbXBfbm9uY2VBdHRyKE5VTEwpLAorbXBfc2lnbmF0dXJlRWxlbWVudChOVUxMKSwKK21wX29wYXF1ZUNsaWVudERhdGFFbGVtZW50KE5VTEwpLAorbXBfc2lnbmF0dXJlKE5VTEwpIHsKKworCW1fb3BhcXVlQ2xpZW50RGF0YVNpemUgPSAwOworfQorCitYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGw6On5YS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGwoKSB7CisKKwkvLyBXZSBvd24gdGhlIGVudmlyb25tZW50LCBzbyB3ZSBkZWxldGUgaXQuCisKKwlkZWxldGUgbXBfZW52OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgTG9hZAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGw6OmxvYWQodm9pZCkgeworCisJaWYgKG1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50ID09IE5VTEwpIHsKKworCQkvLyBBdHRlbXB0IHRvIGxvYWQgYW4gZW1wdHkgZWxlbWVudAorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246Ok1lc3NhZ2VBYnN0cmFjdFR5cGVFcnJvciwKKwkJCSJYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6bG9hZCAtIGNhbGxlZCBvbiBlbXB0eSBET00iKTsKKworCX0KKworCS8vIElkCisJbXBfaWRBdHRyID0gCisJCW1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5nZXRBdHRyaWJ1dGVOb2RlTlMoTlVMTCwgWEtNU0NvbnN0YW50czo6c190YWdJZCk7CisJLy8gU2VydmljZQorCW1wX3NlcnZpY2VBdHRyID0gCisJCW1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5nZXRBdHRyaWJ1dGVOb2RlTlMoTlVMTCwgWEtNU0NvbnN0YW50czo6c190YWdTZXJ2aWNlKTsKKwkvLyBOb25jZQorCW1wX25vbmNlQXR0ciA9IAorCQltcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+Z2V0QXR0cmlidXRlTm9kZU5TKE5VTEwsIFhLTVNDb25zdGFudHM6OnNfdGFnTm9uY2UpOworCisJLy8gSWQgYW5kIFNlcnZpY2UgTVVTVCBiZSBzZXQgZm9yIGEgbWVzc2FnZSB0byBiZSBPSworCisJaWYgKG1wX2lkQXR0ciA9PSBOVUxMKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWRYS01TQ2hpbGROb3RGb3VuZCwKKwkJCSJYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6bG9hZCAtIElkIGF0dHJpYnV0ZSBub3QgZm91bmQiKTsKKwl9CisKKwlpZiAobXBfc2VydmljZUF0dHIgPT0gTlVMTCkgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkWEtNU0NoaWxkTm90Rm91bmQsCisJCQkiWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGU6OmxvYWQgLSBTZXJ2aWNlIGF0dHJpYnV0ZSBub3QgZm91bmQiKTsKKwl9CisKKwkvLyBDaGVjayBmb3IgPFNpZ25hdHVyZT4gbm9kZQorCW1wX3NpZ25hdHVyZUVsZW1lbnQgPSAoRE9NRWxlbWVudCAqKSBmaW5kRmlyc3RDaGlsZE9mVHlwZShtcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCwgRE9NTm9kZTo6RUxFTUVOVF9OT0RFKTsKKworCXdoaWxlIChtcF9zaWduYXR1cmVFbGVtZW50ICE9IE5VTEwgJiYgCisJCSFzdHJFcXVhbHMoZ2V0RFNJR0xvY2FsTmFtZShtcF9zaWduYXR1cmVFbGVtZW50KSwgWEtNU0NvbnN0YW50czo6c190YWdTaWduYXR1cmUpKSB7CisKKwkJbXBfc2lnbmF0dXJlRWxlbWVudCA9IGZpbmROZXh0RWxlbWVudENoaWxkKG1wX3NpZ25hdHVyZUVsZW1lbnQpOworCisJfQorCisJLy8gVGhlIHByb3ZpZGVyIHdpbGwgdGFrZSBjYXJlIG9mIGNsZWFuaW5nIHRoaXMgdXAgbGF0ZXIuCisKKwlpZiAobXBfc2lnbmF0dXJlRWxlbWVudCAhPSBOVUxMKSB7CisKKwkJbXBfc2lnbmF0dXJlID0gbV9wcm92Lm5ld1NpZ25hdHVyZUZyb21ET00obXBfc2lnbmF0dXJlRWxlbWVudC0+Z2V0T3duZXJEb2N1bWVudCgpLCAKKwkJCQkJCQkJCQkJCSAgbXBfc2lnbmF0dXJlRWxlbWVudCk7CisJCW1wX3NpZ25hdHVyZS0+bG9hZCgpOworCisJfQorCisJLy8gQ2hlcXVlIGZvciBPcGFxdWVDbGllbnREYXRhCisJbXBfb3BhcXVlQ2xpZW50RGF0YUVsZW1lbnQgPSAoRE9NRWxlbWVudCAqKSBmaW5kRmlyc3RDaGlsZE9mVHlwZShtcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCwgRE9NTm9kZTo6RUxFTUVOVF9OT0RFKTsKKwl3aGlsZSAobXBfb3BhcXVlQ2xpZW50RGF0YUVsZW1lbnQgIT0gTlVMTCAmJiAKKwkJIXN0ckVxdWFscyhnZXRYS01TTG9jYWxOYW1lKG1wX29wYXF1ZUNsaWVudERhdGFFbGVtZW50KSwgWEtNU0NvbnN0YW50czo6c190YWdPcGFxdWVDbGllbnREYXRhKSkgeworCisJCW1wX29wYXF1ZUNsaWVudERhdGFFbGVtZW50ID0gZmluZE5leHRFbGVtZW50Q2hpbGQobXBfb3BhcXVlQ2xpZW50RGF0YUVsZW1lbnQpOworCisJfQorCisJaWYgKG1wX29wYXF1ZUNsaWVudERhdGFFbGVtZW50ICE9IE5VTEwpIHsKKworCQlET01FbGVtZW50ICogYyA9IGZpbmRGaXJzdEVsZW1lbnRDaGlsZChtcF9vcGFxdWVDbGllbnREYXRhRWxlbWVudCk7CisJCXdoaWxlIChjICE9IE5VTEwpIHsKKworCQkJaWYgKCFzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZShjKSwgWEtNU0NvbnN0YW50czo6c190YWdPcGFxdWVEYXRhKSkgeworCQkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWRYS01TQ2hpbGROb3RGb3VuZCwKKwkJCQkJIlhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlOjpsb2FkIC0gT25seSA8T3BhcXVlRGF0YT4gY2hpbGRyZW4gYWxsb3dlZCBmb3IgPE9wYXF1ZUNsaWVudERhdGE+Iik7CisJCQl9CisKKwkJCWlmIChmaW5kRmlyc3RDaGlsZE9mVHlwZShjLCBET01Ob2RlOjpURVhUX05PREUpID09IE5VTEwpIHsKKwkJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkWEtNU0NoaWxkTm90Rm91bmQsCisJCQkJCSJYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6bG9hZCAtIE9wYXF1ZURhdGEgZWxlbWVudHMgcmVxdWlyZSBhIHRleHQgY2hpbGQgY29udGFpbmluZyBCYXNlNjQgZGF0YSIpOworCQkJfQorCisJCQkrK21fb3BhcXVlQ2xpZW50RGF0YVNpemU7CisKKwkJCWMgPSBmaW5kTmV4dEVsZW1lbnRDaGlsZChjKTsKKworCQl9CisKKwl9Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ3JlYXRlIGJsYW5rCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitET01FbGVtZW50ICogWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsOjpjcmVhdGVCbGFua01lc3NhZ2VBYnN0cmFjdFR5cGUoCisJCWNvbnN0IFhNTENoICogdGFnLAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCWNvbnN0IFhNTENoICogaWQpIHsKKworCS8vIEdldCBzb21lIHNldHVwIHZhbHVlcworCXNhZmVCdWZmZXIgc3RyOworCURPTURvY3VtZW50ICpkb2MgPSBtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCk7CisJY29uc3QgWE1MQ2ggKiBwcmVmaXggPSBtcF9lbnYtPmdldFhLTVNOU1ByZWZpeCgpOworCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCB0YWcpOworCisJbXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TLCAKKwkJCQkJCQkJCQkJCXN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKworCS8vIFNldCBuYW1lc3BhY2UKKwlpZiAocHJlZml4WzBdID09IGNoTnVsbCkgeworCQlzdHIuc2JUcmFuc2NvZGVJbigieG1sbnMiKTsKKwl9CisJZWxzZSB7CisJCXN0ci5zYlRyYW5zY29kZUluKCJ4bWxuczoiKTsKKwkJc3RyLnNiWE1MQ2hDYXQocHJlZml4KTsKKwl9CisKKwltcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+c2V0QXR0cmlidXRlTlMoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWE1MTlMsIAorCQkJCQkJCXN0ci5yYXdYTUxDaEJ1ZmZlcigpLCAKKwkJCQkJCQlYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TKTsKKworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChtcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCk7CisKKwkvLyBTZXR1cCB0aGUgc2VydmljZSBVUkkKKwltcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+c2V0QXR0cmlidXRlTlMoTlVMTCwgCisJCQkJCQkJWEtNU0NvbnN0YW50czo6c190YWdTZXJ2aWNlLAorCQkJCQkJCXNlcnZpY2UpOworCW1wX3NlcnZpY2VBdHRyID0gCisJCW1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5nZXRBdHRyaWJ1dGVOb2RlTlMoTlVMTCwgWEtNU0NvbnN0YW50czo6c190YWdTZXJ2aWNlKTsKKworCisJLy8gU2V0dXAgdGhlIGlkCisJWE1MQ2ggKiBteUlkOworCisJaWYgKGlkID09IE5VTEwpCisJCW15SWQgPSBnZW5lcmF0ZUlkKCk7CisKKwltcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+c2V0QXR0cmlidXRlTlMoTlVMTCwgWEtNU0NvbnN0YW50czo6c190YWdJZCwgaWQgPyBpZCA6IG15SWQpOworCWlmIChpZCA9PSBOVUxMKQorCSAgICBYU0VDX1JFTEVBU0VfWE1MQ0gobXlJZCk7CisjaWYgZGVmaW5lZCAoWFNFQ19YRVJDRVNfSEFTX1NFVElEQVRUUklCVVRFKQorCW1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5zZXRJZEF0dHJpYnV0ZU5TKE5VTEwsIFhLTVNDb25zdGFudHM6OnNfdGFnSWQpOworI2VuZGlmCisJbXBfaWRBdHRyID0gCisJCW1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5nZXRBdHRyaWJ1dGVOb2RlTlMoTlVMTCwgWEtNU0NvbnN0YW50czo6c190YWdJZCk7CisKKwkvLyBOb25jZSBpcyBibGFuayBhdCBzdGFydAorCW1wX25vbmNlQXR0ciA9IE5VTEw7CisKKwlyZXR1cm4gbXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQ7CisKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdldHRlciBpbnRlcmZhY2VzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitib29sIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbDo6aXNTaWduZWQodm9pZCkgY29uc3QgeworCisJcmV0dXJuIG1wX3NpZ25hdHVyZSAhPSBOVUxMOworCit9CisKK0RTSUdTaWduYXR1cmUgKiBYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGw6OmdldFNpZ25hdHVyZSh2b2lkKSBjb25zdCB7CisKKwlyZXR1cm4gbXBfc2lnbmF0dXJlOworCit9CisKKworRE9NRWxlbWVudCAqIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbDo6Z2V0RWxlbWVudCh2b2lkKSBjb25zdCB7CisKKwlyZXR1cm4gbXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQ7CisKK30KKworY29uc3QgWE1MQ2ggKiBYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGw6OmdldElkKHZvaWQpIGNvbnN0IHsKKworCXJldHVybiAobXBfaWRBdHRyICE9IE5VTEwgPyBtcF9pZEF0dHItPmdldE5vZGVWYWx1ZSgpIDogTlVMTCk7CisKK30KKworY29uc3QgWE1MQ2ggKiBYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGw6OmdldFNlcnZpY2Uodm9pZCkgY29uc3QgeworCisJcmV0dXJuIChtcF9zZXJ2aWNlQXR0ciAhPSBOVUxMID8gbXBfc2VydmljZUF0dHItPmdldE5vZGVWYWx1ZSgpIDogTlVMTCk7CisKK30KKworY29uc3QgWE1MQ2ggKiBYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGw6OmdldE5vbmNlKHZvaWQpIGNvbnN0IHsKKworCXJldHVybiAobXBfbm9uY2VBdHRyICE9IE5VTEwgPyBtcF9ub25jZUF0dHItPmdldE5vZGVWYWx1ZSgpIDogTlVMTCk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBTZXR0ZXIgSW50ZXJmYWNlcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGw6OnNldElkKGNvbnN0IFhNTENoICogaWQpIHsKKworCWlmIChtcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCA9PSBOVUxMKSB7CisKKwkJLy8gQXR0ZW1wdCB1cGRhdGUgd2hlbiBub3QgaW5pdGlhbGlzZWQKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpNZXNzYWdlQWJzdHJhY3RUeXBlRXJyb3IsCisJCQkiWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGU6OnNldElkIC0gY2FsbGVkIG9uIG5vbi1pbml0aWFsaXNlZCBzdHJ1Y3R1cmUiKTsKKworCX0KKworCW1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5zZXRBdHRyaWJ1dGVOUyhOVUxMLCBYS01TQ29uc3RhbnRzOjpzX3RhZ0lkLCBpZCk7CisjaWYgZGVmaW5lZCAoWFNFQ19YRVJDRVNfSEFTX1NFVElEQVRUUklCVVRFKQkKKwltcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+c2V0SWRBdHRyaWJ1dGVOUyhOVUxMLCBYS01TQ29uc3RhbnRzOjpzX3RhZ0lkKTsKKyNlbmRpZgorCW1wX2lkQXR0ciA9IAorCQltcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+Z2V0QXR0cmlidXRlTm9kZU5TKE5VTEwsIFhLTVNDb25zdGFudHM6OnNfdGFnSWQpOworCit9CisKK3ZvaWQgWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsOjpzZXRTZXJ2aWNlKGNvbnN0IFhNTENoICogc2VydmljZSkgeworCisJaWYgKG1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50ID09IE5VTEwpIHsKKworCQkvLyBBdHRlbXB0IHVwZGF0ZSB3aGVuIG5vdCBpbml0aWFsaXNlZAorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246Ok1lc3NhZ2VBYnN0cmFjdFR5cGVFcnJvciwKKwkJCSJYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6c2V0U2VydmljZSAtIGNhbGxlZCBvbiBub24taW5pdGlhbGlzZWQgc3RydWN0dXJlIik7CisKKwl9CisKKwltcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+c2V0QXR0cmlidXRlTlMoTlVMTCwgWEtNU0NvbnN0YW50czo6c190YWdTZXJ2aWNlLCBzZXJ2aWNlKTsKKwltcF9zZXJ2aWNlQXR0ciA9IAorCQltcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+Z2V0QXR0cmlidXRlTm9kZU5TKE5VTEwsIFhLTVNDb25zdGFudHM6OnNfdGFnU2VydmljZSk7CisKK30KKwordm9pZCBYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGw6OnNldE5vbmNlKGNvbnN0IFhNTENoICogdXJpKSB7CisJCisJaWYgKG1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50ID09IE5VTEwpIHsKKworCQkvLyBBdHRlbXB0IHVwZGF0ZSB3aGVuIG5vdCBpbml0aWFsaXNlZAorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246Ok1lc3NhZ2VBYnN0cmFjdFR5cGVFcnJvciwKKwkJCSJYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6c2V0Tm9uY2UgLSBjYWxsZWQgb24gbm9uLWluaXRpYWxpc2VkIHN0cnVjdHVyZSIpOworCisJfQorCisJbXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPnNldEF0dHJpYnV0ZU5TKE5VTEwsIFhLTVNDb25zdGFudHM6OnNfdGFnTm9uY2UsIHVyaSk7CisJbXBfbm9uY2VBdHRyID0gCisJCW1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5nZXRBdHRyaWJ1dGVOb2RlTlMoTlVMTCwgWEtNU0NvbnN0YW50czo6c190YWdOb25jZSk7CisKK30KKworRFNJR1NpZ25hdHVyZSAqIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbDo6YWRkU2lnbmF0dXJlKAorCQljYW5vbmljYWxpemF0aW9uTWV0aG9kIGNtLAorCQlzaWduYXR1cmVNZXRob2QJc20sCisJCWhhc2hNZXRob2QgaG0pIHsKKworCURTSUdTaWduYXR1cmUgKiByZXQgPSBtX3Byb3YubmV3U2lnbmF0dXJlKCk7CisJRE9NRWxlbWVudCAqIGVsdCA9IHJldC0+Y3JlYXRlQmxhbmtTaWduYXR1cmUobXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpLCBjbSwgc20sIGhtKTsKKworCS8qIENyZWF0ZSB0aGUgZW52ZWxvcGluZyByZWZlcmVuY2UgKi8KKwlzYWZlQnVmZmVyIHNiOworCXNiLnNiWE1MQ2hJbihEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJFbXB0eSk7CisJc2Iuc2JYTUxDaEFwcGVuZENoKGNoUG91bmQpOworCXNiLnNiWE1MQ2hDYXQoZ2V0SWQoKSk7CisKKwlEU0lHUmVmZXJlbmNlICpyZWYgPSByZXQtPmNyZWF0ZVJlZmVyZW5jZShzYi5yYXdYTUxDaEJ1ZmZlcigpKTsKKwlyZWYtPmFwcGVuZEVudmVsb3BlZFNpZ25hdHVyZVRyYW5zZm9ybSgpOworCXJlZi0+YXBwZW5kQ2Fub25pY2FsaXphdGlvblRyYW5zZm9ybShDQU5PTl9DMTRORV9DT00pOworCisJLyogRW1iZWQgdGhlIHNpZ25hdHVyZSBpbiB0aGUgZG9jdW1lbnQgKi8KKwlET01Ob2RlICogYyA9IG1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5nZXRGaXJzdENoaWxkKCk7CisJaWYgKGMgIT0gTlVMTCkgeworCQlpZiAobXBfZW52LT5nZXRQcmV0dHlQcmludEZsYWcoKSA9PSB0cnVlKSB7CisJCQltcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+aW5zZXJ0QmVmb3JlKAorCQkJCW1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKS0+Y3JlYXRlVGV4dE5vZGUoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyTkwpLAorCQkJCWMpOworCQl9CisJCW1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5pbnNlcnRCZWZvcmUoZWx0LCBjKTsKKwl9CisJZWxzZQorCQltcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+YXBwZW5kQ2hpbGQoZWx0KTsKKworCW1wX3NpZ25hdHVyZSA9IHJldDsKKworCXJldHVybiByZXQ7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgT3BhcXVlIENsaWVudCBEYXRhIGludGVyZmFjZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaW50IFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbDo6Z2V0T3BhcXVlQ2xpZW50RGF0YVNpemUodm9pZCkgeworCisJcmV0dXJuIG1fb3BhcXVlQ2xpZW50RGF0YVNpemU7CisKK30KK2NvbnN0IFhNTENoICogWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsOjpnZXRPcGFxdWVDbGllbnREYXRhSXRlbVN0cihpbnQgaXRlbSkgeworCisJaWYgKGl0ZW0gPCAwIHx8IGl0ZW0gPiBtX29wYXF1ZUNsaWVudERhdGFTaXplKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpNZXNzYWdlQWJzdHJhY3RUeXBlRXJyb3IsCisJCQkiWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGU6OmdldE9wYXF1ZUNsaWVudERhdGFJdGVtU3RyIC0gaW5kZXggb3V0IG9mIHJhbmdlIik7CisJfQorCisJRE9NRWxlbWVudCAqIGMgPSBmaW5kRmlyc3RFbGVtZW50Q2hpbGQobXBfb3BhcXVlQ2xpZW50RGF0YUVsZW1lbnQpOworCWludCBpID0gMDsKKworCXdoaWxlIChpIDwgaXRlbSkgeworCisJCWMgPSBmaW5kTmV4dEVsZW1lbnRDaGlsZChjKTsKKwkJaWYgKGMgPT0gTlVMTCkgeworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpNZXNzYWdlQWJzdHJhY3RUeXBlRXJyb3IsCisJCQkJIlhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlOjpnZXRPcGFxdWVDbGllbnREYXRhSXRlbVN0ciAtIGluZGV4IHVuZXhwZWN0ZWRseSBvdXQgb2YgcmFuZ2UiKTsKKwkJfQorCQkrK2k7CisJfQorCisJcmV0dXJuIGZpbmRGaXJzdENoaWxkT2ZUeXBlKGMsIERPTU5vZGU6OlRFWFRfTk9ERSktPmdldE5vZGVWYWx1ZSgpOworCit9CisKK3ZvaWQgWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsOjphcHBlbmRPcGFxdWVDbGllbnREYXRhSXRlbShjb25zdCBYTUxDaCAqIGl0ZW0pIHsKKworCXNhZmVCdWZmZXIgc3RyOworCURPTURvY3VtZW50ICpkb2MgPSBtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCk7CisJY29uc3QgWE1MQ2ggKiBwcmVmaXggPSBtcF9lbnYtPmdldFhLTVNOU1ByZWZpeCgpOworCisJaWYgKG1wX29wYXF1ZUNsaWVudERhdGFFbGVtZW50ID09IE5VTEwpIHsKKworCQltYWtlUU5hbWUoc3RyLCBwcmVmaXgsIFhLTVNDb25zdGFudHM6OnNfdGFnT3BhcXVlQ2xpZW50RGF0YSk7CisKKwkJbXBfb3BhcXVlQ2xpZW50RGF0YUVsZW1lbnQgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TLCAKKwkJCQkJCQkJCQkJCXN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKwkJbXBfZW52LT5kb1ByZXR0eVByaW50KG1wX29wYXF1ZUNsaWVudERhdGFFbGVtZW50KTsKKworCQkvKiBIYXZlIHRvIGluc2VydCBiZWZvcmUgYW55dGhpbmcgZWxzZSBpbiB0aGUgbWVzc2FnZSAqLworCQlET01FbGVtZW50ICogdGU7CisJCXRlID0gZmluZEZpcnN0RWxlbWVudENoaWxkKG1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KTsKKwkJd2hpbGUgKHRlICE9IE5VTEwgJiYgCisJCQkgICBzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZSh0ZSksIFhLTVNDb25zdGFudHM6OnNfdGFnU2lnbmF0dXJlKSkKKwkJCXRlID0gZmluZE5leHRFbGVtZW50Q2hpbGQodGUpOworCisJCWlmICh0ZSA9PSBOVUxMKSB7CisJCQkJCisJCQltcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+YXBwZW5kQ2hpbGQobXBfb3BhcXVlQ2xpZW50RGF0YUVsZW1lbnQpOworCQkJbXBfZW52LT5kb1ByZXR0eVByaW50KG1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KTsKKwkJfQorCQllbHNlIHsKKwkJCW1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5pbnNlcnRCZWZvcmUobXBfb3BhcXVlQ2xpZW50RGF0YUVsZW1lbnQsIHRlKTsKKwkJCWlmIChtcF9lbnYtPmdldFByZXR0eVByaW50RmxhZygpKSB7CisJCQkJbXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmluc2VydEJlZm9yZSgKKwkJCQkJbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpLT5jcmVhdGVUZXh0Tm9kZShEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJOTCksIHRlKTsKKwkJCX0KKwkJfQorCX0KKworCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgWEtNU0NvbnN0YW50czo6c190YWdPcGFxdWVEYXRhKTsKKwlET01FbGVtZW50ICogZSA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKFhLTVNDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhLTVMsCisJCQkJCQkJCQlzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisJZS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZShpdGVtKSk7CisJbXBfb3BhcXVlQ2xpZW50RGF0YUVsZW1lbnQtPmFwcGVuZENoaWxkKGUpOworCW1wX2Vudi0+ZG9QcmV0dHlQcmludChtcF9vcGFxdWVDbGllbnREYXRhRWxlbWVudCk7CisKKwltX29wYXF1ZUNsaWVudERhdGFTaXplKys7CisKK30KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvaW1wbC9YS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGwuaHBwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFmZDJkMQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGwuaHBwCkBAIC0wLDAgKzEsMTYyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGwgOj0gSW1wbGVtZW50YXRpb24gY2xhc3MgZm9yIGJhc2UgWEtNUyBtZXNzYWdlcworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYS01TTUVTU0FHRUFCU1RSQUNUVFlQRUlNUExfSU5DTFVERQorI2RlZmluZSBYS01TTUVTU0FHRUFCU1RSQUNUVFlQRUlNUExfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNNZXNzYWdlQWJzdHJhY3RUeXBlLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDUHJvdmlkZXIuaHBwPgorCitjbGFzcyBYU0VDRW52OworY2xhc3MgRFNJR1NpZ25hdHVyZTsKKworWFNFQ19ERUNMQVJFX1hFUkNFU19DTEFTUyhET01FbGVtZW50KTsKK1hTRUNfREVDTEFSRV9YRVJDRVNfQ0xBU1MoRE9NQXR0cik7CisKK2NsYXNzIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbCA6IHB1YmxpYyBYS01TTWVzc2FnZUFic3RyYWN0VHlwZSB7CisKK3B1YmxpYzogCisKKwkvKiBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisKKwlYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYKKwkpOworCisJWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52LCAKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBub2RlCisJKTsKKworCXZpcnR1YWwgflhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbCgpIDsKKworCS8vIGxvYWQKKwl2b2lkIGxvYWQodm9pZCk7CisKKwkvLyBDcmVhdGUgZnJvbSBzY3JhdGNoIC0gdGFnIGlzIHRoZSBlbGVtZW50IG5hbWUgdG8gY3JlYXRlCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiAKKwkJY3JlYXRlQmxhbmtNZXNzYWdlQWJzdHJhY3RUeXBlKAorCQljb25zdCBYTUxDaCAqIHRhZywKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCk7CisKKwkvKiBNZXNzYWdlIE1hbmlwdWxhdGlvbiBNZXRob2RzICovCisKKwl2aXJ0dWFsIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlOjptZXNzYWdlVHlwZSBnZXRNZXNzYWdlVHlwZSh2b2lkKSB7CisJCXJldHVybiBYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6Tm9uZTsKKwl9CisKKwkvKiBHZXR0ZXIgSW50ZXJmYWNlIE1ldGhvZHMgKi8KKworCXZpcnR1YWwgYm9vbCBpc1NpZ25lZCh2b2lkKSBjb25zdDsKKwl2aXJ0dWFsIERTSUdTaWduYXR1cmUgKiBnZXRTaWduYXR1cmUodm9pZCkgY29uc3Q7CisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGdldEVsZW1lbnQodm9pZCkgY29uc3Q7CisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldElkKHZvaWQpIGNvbnN0OworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRTZXJ2aWNlKHZvaWQpIGNvbnN0OworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXROb25jZSh2b2lkKSBjb25zdDsKKworCS8qIFNldHRlciBpbnRlcmZhY2UgbWV0aG9kcyAqLworCisJdmlydHVhbCB2b2lkIHNldElkKGNvbnN0IFhNTENoICogaWQpOworCXZpcnR1YWwgdm9pZCBzZXRTZXJ2aWNlKGNvbnN0IFhNTENoICogc2VydmljZSk7CisJdmlydHVhbCB2b2lkIHNldE5vbmNlKGNvbnN0IFhNTENoICogdXJpKTsKKwl2aXJ0dWFsIERTSUdTaWduYXR1cmUgKiBhZGRTaWduYXR1cmUoCisJCWNhbm9uaWNhbGl6YXRpb25NZXRob2QgY20gPSBDQU5PTl9DMTROX05PQywKKwkJc2lnbmF0dXJlTWV0aG9kCXNtID0gU0lHTkFUVVJFX0RTQSwKKwkJaGFzaE1ldGhvZCBobSA9IEhBU0hfU0hBMSk7CisKKwkvKiBPcGFxdWUgQ2xpZW50IERhdGEgaW50ZXJmYWNlICovCisJdmlydHVhbCBpbnQgZ2V0T3BhcXVlQ2xpZW50RGF0YVNpemUodm9pZCk7CisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldE9wYXF1ZUNsaWVudERhdGFJdGVtU3RyKGludCBpdGVtKTsKKwl2aXJ0dWFsIHZvaWQgYXBwZW5kT3BhcXVlQ2xpZW50RGF0YUl0ZW0oY29uc3QgWE1MQ2ggKiBpdGVtKTsKKworcHVibGljOgorCisJY29uc3QgWFNFQ0VudgkJKiBtcF9lbnY7CQkvLyBOT1RFOiBPd25lZCBieSB0aGUgYmFzZSBtZXNzYWdlIGNsYXNzCisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudAorCQkJCQkJKiBtcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudDsKKworcHJpdmF0ZToKKworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiAgRE9NQXR0cgorCQkJCQkJKiBtcF9pZEF0dHI7CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSICBET01BdHRyCisJCQkJCQkqIG1wX3NlcnZpY2VBdHRyOworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiAgRE9NQXR0cgorCQkJCQkJKiBtcF9ub25jZUF0dHI7CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSICBET01FbGVtZW50CisJCQkJCQkqIG1wX3NpZ25hdHVyZUVsZW1lbnQ7CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSICBET01FbGVtZW50CisJCQkJCQkqIG1wX29wYXF1ZUNsaWVudERhdGFFbGVtZW50OworCisJWFNFQ1Byb3ZpZGVyCQltX3Byb3Y7CisJRFNJR1NpZ25hdHVyZQkJKiBtcF9zaWduYXR1cmU7CisKKwlpbnQJCQkJCW1fb3BhcXVlQ2xpZW50RGF0YVNpemU7CisKKwkvLyBVbmltcGxlbWVudGVkCisJWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsKHZvaWQpOworCVhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbChjb25zdCBYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGwgJik7CisJWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsICYpOworCit9OworCisjZGVmaW5lIFhLTVNfTUVTU0FHRUFCU1RSQUNUWVBFX0lNUExfTUVUSE9EUyBcCisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIFwKKwkJZ2V0RWxlbWVudCh2b2lkKSBjb25zdCBcCisJCXtyZXR1cm4gbV9tc2cuZ2V0RWxlbWVudCgpO30gXAorCXZpcnR1YWwgYm9vbCBpc1NpZ25lZCh2b2lkKSBjb25zdCBcCisJCXtyZXR1cm4gbV9tc2cuaXNTaWduZWQoKTt9IFwKKwl2aXJ0dWFsIERTSUdTaWduYXR1cmUgKiBnZXRTaWduYXR1cmUodm9pZCkgY29uc3QgXAorCQl7cmV0dXJuIG1fbXNnLmdldFNpZ25hdHVyZSgpO30gXAorCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRJZCh2b2lkKSBjb25zdCBcCisJCXtyZXR1cm4gbV9tc2cuZ2V0SWQoKTt9IFwKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0U2VydmljZSh2b2lkKSBjb25zdCBcCisJCXtyZXR1cm4gbV9tc2cuZ2V0U2VydmljZSgpO30gXAorCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXROb25jZSh2b2lkKSBjb25zdCBcCisJCXtyZXR1cm4gbV9tc2cuZ2V0Tm9uY2UoKTt9IFwKKwl2aXJ0dWFsIHZvaWQgc2V0SWQoY29uc3QgWE1MQ2ggKiBpZCkgXAorCQl7bV9tc2cuc2V0SWQoaWQpO30gXAorCXZpcnR1YWwgdm9pZCBzZXRTZXJ2aWNlKGNvbnN0IFhNTENoICogc2VydmljZSkgXAorCQl7bV9tc2cuc2V0U2VydmljZShzZXJ2aWNlKTt9IFwKKwl2aXJ0dWFsIHZvaWQgc2V0Tm9uY2UoY29uc3QgWE1MQ2ggKiB1cmkpIFwKKwkJe21fbXNnLnNldE5vbmNlKHVyaSk7fSBcCisJdmlydHVhbCBEU0lHU2lnbmF0dXJlICogYWRkU2lnbmF0dXJlKCBcCisJCWNhbm9uaWNhbGl6YXRpb25NZXRob2QgY20gPSBDQU5PTl9DMTROX05PQywgXAorCQlzaWduYXR1cmVNZXRob2QJc20gPSBTSUdOQVRVUkVfRFNBLCBcCisJCWhhc2hNZXRob2QgaG0gPSBIQVNIX1NIQTEpIFwKKwkJe3JldHVybiBtX21zZy5hZGRTaWduYXR1cmUoY20sc20saG0pO30gXAorCXZpcnR1YWwgaW50IGdldE9wYXF1ZUNsaWVudERhdGFTaXplKHZvaWQpIFwKKwkJe3JldHVybiBtX21zZy5nZXRPcGFxdWVDbGllbnREYXRhU2l6ZSgpO30gXAorCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRPcGFxdWVDbGllbnREYXRhSXRlbVN0cihpbnQgaXRlbSkgXAorCQl7cmV0dXJuIG1fbXNnLmdldE9wYXF1ZUNsaWVudERhdGFJdGVtU3RyKGl0ZW0pO30gXAorCXZpcnR1YWwgdm9pZCBhcHBlbmRPcGFxdWVDbGllbnREYXRhSXRlbShjb25zdCBYTUxDaCAqIGl0ZW0pIFwKKwkJe21fbXNnLmFwcGVuZE9wYXF1ZUNsaWVudERhdGFJdGVtKGl0ZW0pO30KKworI2VuZGlmIC8qIFhLTVNNRVNTQUdFQUJTVFJBQ1RUWVBFSU1QTF9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU01lc3NhZ2VGYWN0b3J5SW1wbC5jcHAgYi9jL3NyYy94a21zL2ltcGwvWEtNU01lc3NhZ2VGYWN0b3J5SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc5ZjQ2OQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TTWVzc2FnZUZhY3RvcnlJbXBsLmNwcApAQCAtMCwwICsxLDEyMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNNZXNzYWdlRmFjdG9yeUltcGwgOj0gSW1wbGVtZW50YXRpb24gb2YgdGhlIFhLTVNNZXNzYWdlRmFjdG9yeSBjbGFzcworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRW52LmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0NvbnN0YW50cy5ocHA+CisKKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9KYW5pdG9yLmhwcD4KKworI2luY2x1ZGUgIlhLTVNDb21wb3VuZFJlcXVlc3RJbXBsLmhwcCIKKyNpbmNsdWRlICJYS01TQ29tcG91bmRSZXN1bHRJbXBsLmhwcCIKKyNpbmNsdWRlICJYS01TTWVzc2FnZUZhY3RvcnlJbXBsLmhwcCIKKyNpbmNsdWRlICJYS01TTG9jYXRlUmVxdWVzdEltcGwuaHBwIgorI2luY2x1ZGUgIlhLTVNMb2NhdGVSZXN1bHRJbXBsLmhwcCIKKyNpbmNsdWRlICJYS01TU3RhdHVzUmVxdWVzdEltcGwuaHBwIgorI2luY2x1ZGUgIlhLTVNTdGF0dXNSZXN1bHRJbXBsLmhwcCIKKyNpbmNsdWRlICJYS01TUmVzdWx0SW1wbC5ocHAiCisjaW5jbHVkZSAiWEtNU1ZhbGlkYXRlUmVxdWVzdEltcGwuaHBwIgorI2luY2x1ZGUgIlhLTVNWYWxpZGF0ZVJlc3VsdEltcGwuaHBwIgorI2luY2x1ZGUgIlhLTVNQZW5kaW5nUmVxdWVzdEltcGwuaHBwIgorI2luY2x1ZGUgIlhLTVNSZWdpc3RlclJlcXVlc3RJbXBsLmhwcCIKKyNpbmNsdWRlICJYS01TUmVnaXN0ZXJSZXN1bHRJbXBsLmhwcCIKKyNpbmNsdWRlICJYS01TUmV2b2tlUmVzdWx0SW1wbC5ocHAiCisjaW5jbHVkZSAiWEtNU1Jldm9rZVJlcXVlc3RJbXBsLmhwcCIKKyNpbmNsdWRlICJYS01TUmVjb3ZlclJlc3VsdEltcGwuaHBwIgorI2luY2x1ZGUgIlhLTVNSZWNvdmVyUmVxdWVzdEltcGwuaHBwIgorI2luY2x1ZGUgIlhLTVNSZWlzc3VlUmVzdWx0SW1wbC5ocHAiCisjaW5jbHVkZSAiWEtNU1JlaXNzdWVSZXF1ZXN0SW1wbC5ocHAiCisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdC9EZXN0cnVjdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWEtNU01lc3NhZ2VGYWN0b3J5SW1wbDo6WEtNU01lc3NhZ2VGYWN0b3J5SW1wbCh2b2lkKSB7CisKKwkvLyBGYWN0b3J5IGlzbid0IHRpZWQgdG8gYSBwYXJ0aWN1bGFyIGRvY3VtZW50CisKKwlYU0VDbmV3KG1wX2VudiwgWFNFQ0VudihOVUxMKSk7CisJbXBfZW52LT5zZXREU0lHTlNQcmVmaXgoTUFLRV9VTklDT0RFX1NUUklORygiZHMiKSk7CisKK307CisKK1hLTVNNZXNzYWdlRmFjdG9yeUltcGw6On5YS01TTWVzc2FnZUZhY3RvcnlJbXBsKHZvaWQpIHsKKworCWRlbGV0ZSBtcF9lbnY7CisKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwkJCUludGVybmFsIG1ldGhvZHMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgWEtNU01lc3NhZ2VGYWN0b3J5SW1wbDo6Y29weVJlcXVlc3RUb1Jlc3VsdChYS01TUmVxdWVzdEFic3RyYWN0VHlwZSAqIHJlcSwgCisJCQkJCQkJCQkJCQkgWEtNU1Jlc3VsdFR5cGUgKiByZXMpIHsKKworCisJLyogU2V0IHRoZSByZXF1ZXN0SWQgKi8KKwlyZXMtPnNldFJlcXVlc3RJZChyZXEtPmdldElkKCkpOworCisJLyogQ29weSBhbnkgT3BhcXVlIERhdGEgKi8KKworCWludCBpOworCWludCBzeiA9IHJlcS0+Z2V0T3BhcXVlQ2xpZW50RGF0YVNpemUoKTsKKwlmb3IgKGkgPSAwOyBpIDwgc3o7ICsraSkgeworCQlyZXMtPmFwcGVuZE9wYXF1ZUNsaWVudERhdGFJdGVtKHJlcS0+Z2V0T3BhcXVlQ2xpZW50RGF0YUl0ZW1TdHIoaSkpOworCX0KKworCS8qIFNldCBSZXF1ZXN0U2lnbmF0dXJlVmFsdWUgZGF0YSBpZiBuZWNlc3NhcnkgKi8KKwlzeiA9IHJlcS0+Z2V0UmVzcG9uc2VNZWNoYW5pc21TaXplKCk7CisJZm9yIChpID0gMDsgaSA8IHN6OyArK2kpIHsKKwkJaWYgKHN0ckVxdWFscyhyZXEtPmdldFJlc3BvbnNlTWVjaGFuaXNtSXRlbVN0cihpKSwgWEtNU0NvbnN0YW50czo6c190YWdSZXF1ZXN0U2lnbmF0dXJlVmFsdWUpKSB7CisJCQlEU0lHU2lnbmF0dXJlICpzID0gcmVxLT5nZXRTaWduYXR1cmUoKTsKKwkJCWlmIChzICE9IE5VTEwgJiYgcmVzLT5nZXRSZXN1bHRNaW5vcigpICE9IFhLTVNSZXN1bHRUeXBlOjpOb0F1dGhlbnRpY2F0aW9uKSB7CisKKwkJCQlyZXMtPnNldFJlcXVlc3RTaWduYXR1cmVWYWx1ZShzLT5nZXRTaWduYXR1cmVWYWx1ZSgpKTsKKworCQkJfQorCisJCQlicmVhazsKKwkJfQorCX0KKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8JCQlTZXQvZ2V0IHRoZSBuYW1lc3BhY2UgcHJlZml4IHRvIGJlIHVzZWQgd2hlbiBjcmVhdGluZyBub2RlcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBYS01TTWVzc2FnZUZhY3RvcnlJbXBsOjpzZXREU0lHTlNQcmVmaXgoY29uc3QgWE1MQ2ggKiBwcmVmaXgpIHsKKworCW1wX2Vudi0+c2V0RFNJR05TUHJlZml4KHByZWZpeCk7CisKK30KK3ZvaWQgWEtNU01lc3NhZ2VGYWN0b3J5SW1wbDo6c2V0RUNOU1ByZWZpeChjb25zdCBYTUxDaCAqIHByZWZpeCkgeworCisJbXBfZW52LT5zZXRFQ05TUHJlZml4KHByZWZpeCk7CisKK30KK3ZvaWQgWEtNU01lc3NhZ2VGYWN0b3J5SW1wbDo6c2V0WFBGTlNQcmVmaXgoY29uc3QgWE1MQ2ggKiBwcmVmaXgpIHsKKworCW1wX2Vudi0+c2V0WFBGTlNQcmVmaXgocHJlZml4KTsKKworfQordm9pZCBYS01TTWVzc2FnZUZhY3RvcnlJbXBsOjpzZXRYRU5DTlNQcmVmaXgoY29uc3QgWE1MQ2ggKiBwcmVmaXgpIHsKKworCW1wX2Vudi0+c2V0WEVOQ05TUHJlZml4KHByZWZpeCk7CisKK30KK3ZvaWQgWEtNU01lc3NhZ2VGYWN0b3J5SW1wbDo6c2V0WEtNU05TUHJlZml4KGNvbnN0IFhNTENoICogcHJlZml4KSB7CisKKwltcF9lbnYtPnNldFhLTVNOU1ByZWZpeChwcmVmaXgpOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgRE9NIEJhc2VkIGNvbnN0cnVjdGlvbgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGUgKiBYS01TTWVzc2FnZUZhY3RvcnlJbXBsOjpuZXdNZXNzYWdlRnJvbURPTSgKKwkJCQkJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogZWx0KSB7CisKKworCVhTRUNFbnYgKiBlbnY7CisJWFNFQ25ldyhlbnYsIFhTRUNFbnYoKm1wX2VudikpOworCisJZW52LT5zZXRQYXJlbnREb2N1bWVudChlbHQtPmdldE93bmVyRG9jdW1lbnQoKSk7CisKKwlpZiAoZWx0ID09IE5VTEwpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwKKwkJCSJYS01TTWVzc2FnZUZhY3Rvcnk6Om5ld01lc3NhZ2VGcm9tRE9NIC0gY2FsbGVkIG9uIGVtcHR5IERPTSIpOworCisJfQorCisJLy8gU2VlIGlmIHRoaXMgaXMgYSBrbm93biBlbGVtZW50CisJY29uc3QgWE1MQ2ggKiBuYW1lID0gZ2V0WEtNU0xvY2FsTmFtZShlbHQpOworCisJaWYgKHN0ckVxdWFscyhuYW1lLCBYS01TQ29uc3RhbnRzOjpzX3RhZ0NvbXBvdW5kUmVxdWVzdCkpIHsKKworCQkvLyBUaGlzIGlzIGEgPENvbXBvdW5kUmVxdWVzdD4gbWVzc2FnZQorCQlYS01TQ29tcG91bmRSZXF1ZXN0SW1wbCAqIHJldDsKKwkJWFNFQ25ldyhyZXQsIFhLTVNDb21wb3VuZFJlcXVlc3RJbXBsKGVudiwgZWx0KSk7CisKKwkJcmV0LT5sb2FkKCk7CisKKwkJcmV0dXJuIChYS01TQ29tcG91bmRSZXF1ZXN0KikgcmV0OworCisJfQorCisJaWYgKHN0ckVxdWFscyhuYW1lLCBYS01TQ29uc3RhbnRzOjpzX3RhZ0NvbXBvdW5kUmVzdWx0KSkgeworCisJCS8vIFRoaXMgaXMgYSA8Q29tcG91bmRSZXN1bHQ+IG1lc3NhZ2UKKwkJWEtNU0NvbXBvdW5kUmVzdWx0SW1wbCAqIHJldDsKKwkJWFNFQ25ldyhyZXQsIFhLTVNDb21wb3VuZFJlc3VsdEltcGwoZW52LCBlbHQpKTsKKworCQlyZXQtPmxvYWQoKTsKKworCQlyZXR1cm4gKFhLTVNDb21wb3VuZFJlcXVlc3QqKSByZXQ7CisKKwl9CisKKwlpZiAoc3RyRXF1YWxzKG5hbWUsIFhLTVNDb25zdGFudHM6OnNfdGFnTG9jYXRlUmVxdWVzdCkpIHsKKworCQkvLyBUaGlzIGlzIGEgPExvY2F0ZVJlcXVlc3Q+IG1lc3NhZ2UKKwkJWEtNU0xvY2F0ZVJlcXVlc3RJbXBsICogcmV0OworCQlYU0VDbmV3KHJldCwgWEtNU0xvY2F0ZVJlcXVlc3RJbXBsKGVudiwgZWx0KSk7CisKKwkJcmV0LT5sb2FkKCk7CisKKwkJcmV0dXJuIChYS01TTG9jYXRlUmVxdWVzdCAqKSByZXQ7CisKKwl9CisKKwlpZiAoc3RyRXF1YWxzKG5hbWUsIFhLTVNDb25zdGFudHM6OnNfdGFnVmFsaWRhdGVSZXF1ZXN0KSkgeworCisJCS8vIFRoaXMgaXMgYSA8VmFsaWRhdGVSZXF1ZXN0PiBtZXNzYWdlCisJCVhLTVNWYWxpZGF0ZVJlcXVlc3RJbXBsICogcmV0OworCQlYU0VDbmV3KHJldCwgWEtNU1ZhbGlkYXRlUmVxdWVzdEltcGwoZW52LCBlbHQpKTsKKworCQlyZXQtPmxvYWQoKTsKKworCQlyZXR1cm4gKFhLTVNWYWxpZGF0ZVJlcXVlc3QgKikgcmV0OworCisJfQorCisJZWxzZSBpZiAoc3RyRXF1YWxzKG5hbWUsIFhLTVNDb25zdGFudHM6OnNfdGFnTG9jYXRlUmVzdWx0KSkgeworCisJCS8vIFRoaXMgaXMgYSA8TG9jYXRlUmVxdWVzdD4gbWVzc2FnZQorCQlYS01TTG9jYXRlUmVzdWx0SW1wbCAqIHJldDsKKwkJWFNFQ25ldyhyZXQsIFhLTVNMb2NhdGVSZXN1bHRJbXBsKGVudiwgZWx0KSk7CisJCUphbml0b3I8WEtNU0xvY2F0ZVJlc3VsdEltcGw+IGpfcmV0KHJldCk7CisKKwkJcmV0LT5sb2FkKCk7CisJCQorCQlqX3JldC5yZWxlYXNlKCk7CisJCXJldHVybiAoWEtNU0xvY2F0ZVJlc3VsdCAqKSByZXQ7CisKKwl9CisKKwllbHNlIGlmIChzdHJFcXVhbHMobmFtZSwgWEtNU0NvbnN0YW50czo6c190YWdWYWxpZGF0ZVJlc3VsdCkpIHsKKworCQkvLyBUaGlzIGlzIGEgPExvY2F0ZVJlcXVlc3Q+IG1lc3NhZ2UKKwkJWEtNU1ZhbGlkYXRlUmVzdWx0SW1wbCAqIHJldDsKKwkJWFNFQ25ldyhyZXQsIFhLTVNWYWxpZGF0ZVJlc3VsdEltcGwoZW52LCBlbHQpKTsKKwkJSmFuaXRvcjxYS01TVmFsaWRhdGVSZXN1bHRJbXBsPiBqX3JldChyZXQpOworCisJCXJldC0+bG9hZCgpOworCQkKKwkJal9yZXQucmVsZWFzZSgpOworCQlyZXR1cm4gKFhLTVNWYWxpZGF0ZVJlc3VsdCAqKSByZXQ7CisKKwl9CisKKwllbHNlIGlmIChzdHJFcXVhbHMobmFtZSwgWEtNU0NvbnN0YW50czo6c190YWdSZXN1bHQpKSB7CisKKwkJLy8gVGhpcyBpcyBhIDxMb2NhdGVSZXF1ZXN0PiBtZXNzYWdlCisJCVhLTVNSZXN1bHRJbXBsICogcmV0OworCQlYU0VDbmV3KHJldCwgWEtNU1Jlc3VsdEltcGwoZW52LCBlbHQpKTsKKwkJSmFuaXRvcjxYS01TUmVzdWx0SW1wbD4gal9yZXQocmV0KTsKKworCQlyZXQtPmxvYWQoKTsKKwkJCisJCWpfcmV0LnJlbGVhc2UoKTsKKwkJcmV0dXJuIChYS01TUmVzdWx0ICopIHJldDsKKworCX0KKworCWVsc2UgaWYgKHN0ckVxdWFscyhuYW1lLCBYS01TQ29uc3RhbnRzOjpzX3RhZ1BlbmRpbmdSZXF1ZXN0KSkgeworCisJCS8vIFRoaXMgaXMgYSA8UGVuZGluZ1JlcXVlc3Q+IG1lc3NhZ2UKKwkJWEtNU1BlbmRpbmdSZXF1ZXN0SW1wbCAqIHJldDsKKwkJWFNFQ25ldyhyZXQsIFhLTVNQZW5kaW5nUmVxdWVzdEltcGwoZW52LCBlbHQpKTsKKwkJSmFuaXRvcjxYS01TUGVuZGluZ1JlcXVlc3RJbXBsPiBqX3JldChyZXQpOworCisJCXJldC0+bG9hZCgpOworCQkKKwkJal9yZXQucmVsZWFzZSgpOworCQlyZXR1cm4gKFhLTVNQZW5kaW5nUmVxdWVzdCAqKSByZXQ7CisKKwl9CisKKwllbHNlIGlmIChzdHJFcXVhbHMobmFtZSwgWEtNU0NvbnN0YW50czo6c190YWdTdGF0dXNSZXF1ZXN0KSkgeworCisJCS8vIFRoaXMgaXMgYSA8U3RhdHVzUmVxdWVzdD4gbWVzc2FnZQorCQlYS01TU3RhdHVzUmVxdWVzdEltcGwgKiByZXQ7CisJCVhTRUNuZXcocmV0LCBYS01TU3RhdHVzUmVxdWVzdEltcGwoZW52LCBlbHQpKTsKKwkJSmFuaXRvcjxYS01TU3RhdHVzUmVxdWVzdEltcGw+IGpfcmV0KHJldCk7CisKKwkJcmV0LT5sb2FkKCk7CisJCQorCQlqX3JldC5yZWxlYXNlKCk7CisJCXJldHVybiAoWEtNU1N0YXR1c1JlcXVlc3QgKikgcmV0OworCisJfQorCisJZWxzZSBpZiAoc3RyRXF1YWxzKG5hbWUsIFhLTVNDb25zdGFudHM6OnNfdGFnU3RhdHVzUmVzdWx0KSkgeworCisJCS8vIFRoaXMgaXMgYSA8U3RhdHVzUmVxdWVzdD4gbWVzc2FnZQorCQlYS01TU3RhdHVzUmVzdWx0SW1wbCAqIHJldDsKKwkJWFNFQ25ldyhyZXQsIFhLTVNTdGF0dXNSZXN1bHRJbXBsKGVudiwgZWx0KSk7CisJCUphbml0b3I8WEtNU1N0YXR1c1Jlc3VsdEltcGw+IGpfcmV0KHJldCk7CisKKwkJcmV0LT5sb2FkKCk7CisJCQorCQlqX3JldC5yZWxlYXNlKCk7CisJCXJldHVybiAoWEtNU1N0YXR1c1Jlc3VsdCAqKSByZXQ7CisKKwl9CisKKwllbHNlIGlmIChzdHJFcXVhbHMobmFtZSwgWEtNU0NvbnN0YW50czo6c190YWdSZWdpc3RlclJlcXVlc3QpKSB7CisKKwkJLy8gVGhpcyBpcyBhIDxQZW5kaW5nUmVxdWVzdD4gbWVzc2FnZQorCQlYS01TUmVnaXN0ZXJSZXF1ZXN0SW1wbCAqIHJldDsKKwkJWFNFQ25ldyhyZXQsIFhLTVNSZWdpc3RlclJlcXVlc3RJbXBsKGVudiwgZWx0KSk7CisJCUphbml0b3I8WEtNU1JlZ2lzdGVyUmVxdWVzdEltcGw+IGpfcmV0KHJldCk7CisKKwkJcmV0LT5sb2FkKCk7CisJCQorCQlqX3JldC5yZWxlYXNlKCk7CisJCXJldHVybiAoWEtNU1JlZ2lzdGVyUmVxdWVzdCAqKSByZXQ7CisKKwl9CisKKwllbHNlIGlmIChzdHJFcXVhbHMobmFtZSwgWEtNU0NvbnN0YW50czo6c190YWdSZWdpc3RlclJlc3VsdCkpIHsKKworCQkvLyBUaGlzIGlzIGEgPFJlZ2lzdGVyUmVzdWx0PiBtZXNzYWdlCisJCVhLTVNSZWdpc3RlclJlc3VsdEltcGwgKiByZXQ7CisJCVhTRUNuZXcocmV0LCBYS01TUmVnaXN0ZXJSZXN1bHRJbXBsKGVudiwgZWx0KSk7CisJCUphbml0b3I8WEtNU1JlZ2lzdGVyUmVzdWx0SW1wbD4gal9yZXQocmV0KTsKKworCQlyZXQtPmxvYWQoKTsKKwkJCisJCWpfcmV0LnJlbGVhc2UoKTsKKwkJcmV0dXJuIChYS01TUmVnaXN0ZXJSZXN1bHQgKikgcmV0OworCisJfQorCWVsc2UgaWYgKHN0ckVxdWFscyhuYW1lLCBYS01TQ29uc3RhbnRzOjpzX3RhZ1Jldm9rZVJlcXVlc3QpKSB7CisKKwkJLy8gVGhpcyBpcyBhIDxSZXZva2VSZXF1ZXN0PiBtZXNzYWdlCisJCVhLTVNSZXZva2VSZXF1ZXN0SW1wbCAqIHJldDsKKwkJWFNFQ25ldyhyZXQsIFhLTVNSZXZva2VSZXF1ZXN0SW1wbChlbnYsIGVsdCkpOworCQlKYW5pdG9yPFhLTVNSZXZva2VSZXF1ZXN0SW1wbD4gal9yZXQocmV0KTsKKworCQlyZXQtPmxvYWQoKTsKKwkJCisJCWpfcmV0LnJlbGVhc2UoKTsKKwkJcmV0dXJuIChYS01TUmV2b2tlUmVxdWVzdCAqKSByZXQ7CisKKwl9CisKKwllbHNlIGlmIChzdHJFcXVhbHMobmFtZSwgWEtNU0NvbnN0YW50czo6c190YWdSZXZva2VSZXN1bHQpKSB7CisKKwkJLy8gVGhpcyBpcyBhIDxSZXZva2VSZXN1bHQ+IG1lc3NhZ2UKKwkJWEtNU1Jldm9rZVJlc3VsdEltcGwgKiByZXQ7CisJCVhTRUNuZXcocmV0LCBYS01TUmV2b2tlUmVzdWx0SW1wbChlbnYsIGVsdCkpOworCQlKYW5pdG9yPFhLTVNSZXZva2VSZXN1bHRJbXBsPiBqX3JldChyZXQpOworCisJCXJldC0+bG9hZCgpOworCQkKKwkJal9yZXQucmVsZWFzZSgpOworCQlyZXR1cm4gKFhLTVNSZXZva2VSZXN1bHQgKikgcmV0OworCisJfQorCisJZWxzZSBpZiAoc3RyRXF1YWxzKG5hbWUsIFhLTVNDb25zdGFudHM6OnNfdGFnUmVjb3ZlclJlcXVlc3QpKSB7CisKKwkJLy8gVGhpcyBpcyBhIDxSZXZva2VSZXF1ZXN0PiBtZXNzYWdlCisJCVhLTVNSZWNvdmVyUmVxdWVzdEltcGwgKiByZXQ7CisJCVhTRUNuZXcocmV0LCBYS01TUmVjb3ZlclJlcXVlc3RJbXBsKGVudiwgZWx0KSk7CisJCUphbml0b3I8WEtNU1JlY292ZXJSZXF1ZXN0SW1wbD4gal9yZXQocmV0KTsKKworCQlyZXQtPmxvYWQoKTsKKwkJCisJCWpfcmV0LnJlbGVhc2UoKTsKKwkJcmV0dXJuIChYS01TUmVjb3ZlclJlcXVlc3QgKikgcmV0OworCisJfQorCisJZWxzZSBpZiAoc3RyRXF1YWxzKG5hbWUsIFhLTVNDb25zdGFudHM6OnNfdGFnUmVjb3ZlclJlc3VsdCkpIHsKKworCQkvLyBUaGlzIGlzIGEgPFJlY292ZXJSZXN1bHQ+IG1lc3NhZ2UKKwkJWEtNU1JlY292ZXJSZXN1bHRJbXBsICogcmV0OworCQlYU0VDbmV3KHJldCwgWEtNU1JlY292ZXJSZXN1bHRJbXBsKGVudiwgZWx0KSk7CisJCUphbml0b3I8WEtNU1JlY292ZXJSZXN1bHRJbXBsPiBqX3JldChyZXQpOworCisJCXJldC0+bG9hZCgpOworCQkKKwkJal9yZXQucmVsZWFzZSgpOworCQlyZXR1cm4gKFhLTVNSZWNvdmVyUmVzdWx0ICopIHJldDsKKworCX0KKworCWVsc2UgaWYgKHN0ckVxdWFscyhuYW1lLCBYS01TQ29uc3RhbnRzOjpzX3RhZ1JlaXNzdWVSZXF1ZXN0KSkgeworCisJCS8vIFRoaXMgaXMgYSA8UmVpc3N1ZVJlcXVlc3Q+IG1lc3NhZ2UKKwkJWEtNU1JlaXNzdWVSZXF1ZXN0SW1wbCAqIHJldDsKKwkJWFNFQ25ldyhyZXQsIFhLTVNSZWlzc3VlUmVxdWVzdEltcGwoZW52LCBlbHQpKTsKKwkJSmFuaXRvcjxYS01TUmVpc3N1ZVJlcXVlc3RJbXBsPiBqX3JldChyZXQpOworCisJCXJldC0+bG9hZCgpOworCQkKKwkJal9yZXQucmVsZWFzZSgpOworCQlyZXR1cm4gKFhLTVNSZWlzc3VlUmVxdWVzdCAqKSByZXQ7CisKKwl9CisKKwllbHNlIGlmIChzdHJFcXVhbHMobmFtZSwgWEtNU0NvbnN0YW50czo6c190YWdSZWlzc3VlUmVzdWx0KSkgeworCisJCS8vIFRoaXMgaXMgYSA8UmV2b2tlUmVzdWx0PiBtZXNzYWdlCisJCVhLTVNSZWlzc3VlUmVzdWx0SW1wbCAqIHJldDsKKwkJWFNFQ25ldyhyZXQsIFhLTVNSZWlzc3VlUmVzdWx0SW1wbChlbnYsIGVsdCkpOworCQlKYW5pdG9yPFhLTVNSZWlzc3VlUmVzdWx0SW1wbD4gal9yZXQocmV0KTsKKworCQlyZXQtPmxvYWQoKTsKKwkJCisJCWpfcmV0LnJlbGVhc2UoKTsKKwkJcmV0dXJuIChYS01TUmVpc3N1ZVJlc3VsdCAqKSByZXQ7CisKKwl9CisKKwlkZWxldGUgZW52OworCXJldHVybiBOVUxMOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ29uc3RydWN0aW9uIGZyb20gc2NyYXRjaAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWEtNU0NvbXBvdW5kUmVxdWVzdCAqIFhLTVNNZXNzYWdlRmFjdG9yeUltcGw6OmNyZWF0ZUNvbXBvdW5kUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQlET01Eb2N1bWVudCAqIGRvYywKKwkJY29uc3QgWE1MQ2ggKiBpZCkgeworCisJWEtNU0NvbXBvdW5kUmVxdWVzdEltcGwgKiBjcmk7CisKKwlYU0VDRW52ICogdGVudjsKKwlYU0VDbmV3KHRlbnYsIFhTRUNFbnYoKm1wX2VudikpOworCXRlbnYtPnNldFBhcmVudERvY3VtZW50KGRvYyk7CisKKwlYU0VDbmV3KGNyaSwgWEtNU0NvbXBvdW5kUmVxdWVzdEltcGwodGVudikpOworCWNyaS0+Y3JlYXRlQmxhbmtDb21wb3VuZFJlcXVlc3Qoc2VydmljZSwgaWQpOworCisJcmV0dXJuIGNyaTsKKworfQorCitYS01TQ29tcG91bmRSZXF1ZXN0ICogWEtNU01lc3NhZ2VGYWN0b3J5SW1wbDo6Y3JlYXRlQ29tcG91bmRSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCURPTURvY3VtZW50ICoqZG9jLAorCQljb25zdCBYTUxDaCAqIGlkKSB7CisKKwkvLyBDcmVhdGUgYSBkb2N1bWVudCB0byBwdXQgdGhlIGVsZW1lbnQgaW4KKworCVhNTENoIHRlbXBTdHJbMTAwXTsKKwlYTUxTdHJpbmc6OnRyYW5zY29kZSgiQ29yZSIsIHRlbXBTdHIsIDk5KTsgICAgCisJRE9NSW1wbGVtZW50YXRpb24gKmltcGwgPSBET01JbXBsZW1lbnRhdGlvblJlZ2lzdHJ5OjpnZXRET01JbXBsZW1lbnRhdGlvbih0ZW1wU3RyKTsKKworCSpkb2MgPSBpbXBsLT5jcmVhdGVEb2N1bWVudCgpOworCisJLy8gRW1iZWQgdGhlIG5ldyBzdHJ1Y3R1cmUgaW4gdGhlIGRvY3VtZW50CisJWEtNU0NvbXBvdW5kUmVxdWVzdCAqIGNyaSA9IGNyZWF0ZUNvbXBvdW5kUmVxdWVzdChzZXJ2aWNlLCAqZG9jLCBpZCk7CisJKCpkb2MpLT5hcHBlbmRDaGlsZChjcmktPmdldEVsZW1lbnQoKSk7CisKKwlyZXR1cm4gY3JpOworfQorCQorWEtNU0xvY2F0ZVJlcXVlc3QgKiBYS01TTWVzc2FnZUZhY3RvcnlJbXBsOjpjcmVhdGVMb2NhdGVSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGRvYywKKwkJY29uc3QgWE1MQ2ggKiBpZCkgeworCQorCVhLTVNMb2NhdGVSZXF1ZXN0SW1wbCAqIGxyaTsKKworCVhTRUNFbnYgKiB0ZW52OworCVhTRUNuZXcodGVudiwgWFNFQ0VudigqbXBfZW52KSk7CisJdGVudi0+c2V0UGFyZW50RG9jdW1lbnQoZG9jKTsKKworCVhTRUNuZXcobHJpLCBYS01TTG9jYXRlUmVxdWVzdEltcGwodGVudikpOworCWxyaS0+Y3JlYXRlQmxhbmtMb2NhdGVSZXF1ZXN0KHNlcnZpY2UsIGlkKTsKKworCXJldHVybiBscmk7CisKK30KKworCitYS01TTG9jYXRlUmVxdWVzdCAqIFhLTVNNZXNzYWdlRmFjdG9yeUltcGw6OmNyZWF0ZUxvY2F0ZVJlcXVlc3QoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICoqZG9jLAorCQljb25zdCBYTUxDaCAqIGlkKSB7CisKKworCS8vIENyZWF0ZSBhIGRvY3VtZW50IHRvIHB1dCB0aGUgZWxlbWVudCBpbgorCisJWE1MQ2ggdGVtcFN0clsxMDBdOworCVhNTFN0cmluZzo6dHJhbnNjb2RlKCJDb3JlIiwgdGVtcFN0ciwgOTkpOyAgICAKKwlET01JbXBsZW1lbnRhdGlvbiAqaW1wbCA9IERPTUltcGxlbWVudGF0aW9uUmVnaXN0cnk6OmdldERPTUltcGxlbWVudGF0aW9uKHRlbXBTdHIpOworCisJKmRvYyA9IGltcGwtPmNyZWF0ZURvY3VtZW50KCk7CisKKwkvLyBFbWJlZCB0aGUgbmV3IHN0cnVjdHVyZSBpbiB0aGUgZG9jdW1lbnQKKwlYS01TTG9jYXRlUmVxdWVzdCAqIGxyaSA9IGNyZWF0ZUxvY2F0ZVJlcXVlc3Qoc2VydmljZSwgKmRvYywgaWQpOworCSgqZG9jKS0+YXBwZW5kQ2hpbGQobHJpLT5nZXRFbGVtZW50KCkpOworCisJcmV0dXJuIGxyaTsKK30KKworWEtNU1ZhbGlkYXRlUmVxdWVzdCAqIFhLTVNNZXNzYWdlRmFjdG9yeUltcGw6OmNyZWF0ZVZhbGlkYXRlUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBkb2MsCisJCWNvbnN0IFhNTENoICogaWQpIHsKKwkKKwlYS01TVmFsaWRhdGVSZXF1ZXN0SW1wbCAqIHZyaTsKKworCVhTRUNFbnYgKiB0ZW52OworCVhTRUNuZXcodGVudiwgWFNFQ0VudigqbXBfZW52KSk7CisJdGVudi0+c2V0UGFyZW50RG9jdW1lbnQoZG9jKTsKKworCVhTRUNuZXcodnJpLCBYS01TVmFsaWRhdGVSZXF1ZXN0SW1wbCh0ZW52KSk7CisJdnJpLT5jcmVhdGVCbGFua1ZhbGlkYXRlUmVxdWVzdChzZXJ2aWNlLCBpZCk7CisKKwlyZXR1cm4gdnJpOworCit9CisKKworWEtNU1ZhbGlkYXRlUmVxdWVzdCAqIFhLTVNNZXNzYWdlRmFjdG9yeUltcGw6OmNyZWF0ZVZhbGlkYXRlUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKipkb2MsCisJCWNvbnN0IFhNTENoICogaWQpIHsKKworCisJLy8gQ3JlYXRlIGEgZG9jdW1lbnQgdG8gcHV0IHRoZSBlbGVtZW50IGluCisKKwlYTUxDaCB0ZW1wU3RyWzEwMF07CisJWE1MU3RyaW5nOjp0cmFuc2NvZGUoIkNvcmUiLCB0ZW1wU3RyLCA5OSk7ICAgIAorCURPTUltcGxlbWVudGF0aW9uICppbXBsID0gRE9NSW1wbGVtZW50YXRpb25SZWdpc3RyeTo6Z2V0RE9NSW1wbGVtZW50YXRpb24odGVtcFN0cik7CisKKwkqZG9jID0gaW1wbC0+Y3JlYXRlRG9jdW1lbnQoKTsKKworCS8vIEVtYmVkIHRoZSBuZXcgc3RydWN0dXJlIGluIHRoZSBkb2N1bWVudAorCVhLTVNWYWxpZGF0ZVJlcXVlc3QgKiB2cmkgPSBjcmVhdGVWYWxpZGF0ZVJlcXVlc3Qoc2VydmljZSwgKmRvYywgaWQpOworCSgqZG9jKS0+YXBwZW5kQ2hpbGQodnJpLT5nZXRFbGVtZW50KCkpOworCisJcmV0dXJuIHZyaTsKK30KKworWEtNU1BlbmRpbmdSZXF1ZXN0ICogWEtNU01lc3NhZ2VGYWN0b3J5SW1wbDo6Y3JlYXRlUGVuZGluZ1JlcXVlc3QoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogZG9jLAorCQljb25zdCBYTUxDaCAqIGlkKSB7CisJCisJWEtNU1BlbmRpbmdSZXF1ZXN0SW1wbCAqIHByaTsKKworCVhTRUNFbnYgKiB0ZW52OworCVhTRUNuZXcodGVudiwgWFNFQ0VudigqbXBfZW52KSk7CisJdGVudi0+c2V0UGFyZW50RG9jdW1lbnQoZG9jKTsKKworCVhTRUNuZXcocHJpLCBYS01TUGVuZGluZ1JlcXVlc3RJbXBsKHRlbnYpKTsKKwlwcmktPmNyZWF0ZUJsYW5rUGVuZGluZ1JlcXVlc3Qoc2VydmljZSwgaWQpOworCisJcmV0dXJuIHByaTsKKworfQorCisKK1hLTVNQZW5kaW5nUmVxdWVzdCAqIFhLTVNNZXNzYWdlRmFjdG9yeUltcGw6OmNyZWF0ZVBlbmRpbmdSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqKmRvYywKKwkJY29uc3QgWE1MQ2ggKiBpZCkgeworCisKKwkvLyBDcmVhdGUgYSBkb2N1bWVudCB0byBwdXQgdGhlIGVsZW1lbnQgaW4KKworCVhNTENoIHRlbXBTdHJbMTAwXTsKKwlYTUxTdHJpbmc6OnRyYW5zY29kZSgiQ29yZSIsIHRlbXBTdHIsIDk5KTsgICAgCisJRE9NSW1wbGVtZW50YXRpb24gKmltcGwgPSBET01JbXBsZW1lbnRhdGlvblJlZ2lzdHJ5OjpnZXRET01JbXBsZW1lbnRhdGlvbih0ZW1wU3RyKTsKKworCSpkb2MgPSBpbXBsLT5jcmVhdGVEb2N1bWVudCgpOworCisJLy8gRW1iZWQgdGhlIG5ldyBzdHJ1Y3R1cmUgaW4gdGhlIGRvY3VtZW50CisJWEtNU1BlbmRpbmdSZXF1ZXN0ICogcHJpID0gY3JlYXRlUGVuZGluZ1JlcXVlc3Qoc2VydmljZSwgKmRvYywgaWQpOworCSgqZG9jKS0+YXBwZW5kQ2hpbGQocHJpLT5nZXRFbGVtZW50KCkpOworCisJcmV0dXJuIHByaTsKK30KKworWEtNU1N0YXR1c1JlcXVlc3QgKiBYS01TTWVzc2FnZUZhY3RvcnlJbXBsOjpjcmVhdGVTdGF0dXNSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGRvYywKKwkJY29uc3QgWE1MQ2ggKiBpZCkgeworCQorCVhLTVNTdGF0dXNSZXF1ZXN0SW1wbCogc3JpOworCisJWFNFQ0VudiAqIHRlbnY7CisJWFNFQ25ldyh0ZW52LCBYU0VDRW52KCptcF9lbnYpKTsKKwl0ZW52LT5zZXRQYXJlbnREb2N1bWVudChkb2MpOworCisJWFNFQ25ldyhzcmksIFhLTVNTdGF0dXNSZXF1ZXN0SW1wbCh0ZW52KSk7CisJc3JpLT5jcmVhdGVCbGFua1N0YXR1c1JlcXVlc3Qoc2VydmljZSwgaWQpOworCisJcmV0dXJuIHNyaTsKKworfQorCitYS01TU3RhdHVzUmVxdWVzdCAqIFhLTVNNZXNzYWdlRmFjdG9yeUltcGw6OmNyZWF0ZVN0YXR1c1JlcXVlc3QoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICoqZG9jLAorCQljb25zdCBYTUxDaCAqIGlkKSB7CisKKworCS8vIENyZWF0ZSBhIGRvY3VtZW50IHRvIHB1dCB0aGUgZWxlbWVudCBpbgorCisJWE1MQ2ggdGVtcFN0clsxMDBdOworCVhNTFN0cmluZzo6dHJhbnNjb2RlKCJDb3JlIiwgdGVtcFN0ciwgOTkpOyAgICAKKwlET01JbXBsZW1lbnRhdGlvbiAqaW1wbCA9IERPTUltcGxlbWVudGF0aW9uUmVnaXN0cnk6OmdldERPTUltcGxlbWVudGF0aW9uKHRlbXBTdHIpOworCisJKmRvYyA9IGltcGwtPmNyZWF0ZURvY3VtZW50KCk7CisKKwkvLyBFbWJlZCB0aGUgbmV3IHN0cnVjdHVyZSBpbiB0aGUgZG9jdW1lbnQKKwlYS01TU3RhdHVzUmVxdWVzdCAqIHNyaSA9IGNyZWF0ZVN0YXR1c1JlcXVlc3Qoc2VydmljZSwgKmRvYywgaWQpOworCSgqZG9jKS0+YXBwZW5kQ2hpbGQoc3JpLT5nZXRFbGVtZW50KCkpOworCisJcmV0dXJuIHNyaTsKK30KKworWEtNU1JlZ2lzdGVyUmVxdWVzdCAqIFhLTVNNZXNzYWdlRmFjdG9yeUltcGw6OmNyZWF0ZVJlZ2lzdGVyUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBkb2MsCisJCWNvbnN0IFhNTENoICogaWQpIHsKKwkKKwlYS01TUmVnaXN0ZXJSZXF1ZXN0SW1wbCAqIHJyaTsKKworCVhTRUNFbnYgKiB0ZW52OworCVhTRUNuZXcodGVudiwgWFNFQ0VudigqbXBfZW52KSk7CisJdGVudi0+c2V0UGFyZW50RG9jdW1lbnQoZG9jKTsKKworCVhTRUNuZXcocnJpLCBYS01TUmVnaXN0ZXJSZXF1ZXN0SW1wbCh0ZW52KSk7CisJcnJpLT5jcmVhdGVCbGFua1JlZ2lzdGVyUmVxdWVzdChzZXJ2aWNlLCBpZCk7CisKKwlyZXR1cm4gcnJpOworCit9CisKKworWEtNU1JlZ2lzdGVyUmVxdWVzdCAqIFhLTVNNZXNzYWdlRmFjdG9yeUltcGw6OmNyZWF0ZVJlZ2lzdGVyUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKipkb2MsCisJCWNvbnN0IFhNTENoICogaWQpIHsKKworCisJLy8gQ3JlYXRlIGEgZG9jdW1lbnQgdG8gcHV0IHRoZSBlbGVtZW50IGluCisKKwlYTUxDaCB0ZW1wU3RyWzEwMF07CisJWE1MU3RyaW5nOjp0cmFuc2NvZGUoIkNvcmUiLCB0ZW1wU3RyLCA5OSk7ICAgIAorCURPTUltcGxlbWVudGF0aW9uICppbXBsID0gRE9NSW1wbGVtZW50YXRpb25SZWdpc3RyeTo6Z2V0RE9NSW1wbGVtZW50YXRpb24odGVtcFN0cik7CisKKwkqZG9jID0gaW1wbC0+Y3JlYXRlRG9jdW1lbnQoKTsKKworCS8vIEVtYmVkIHRoZSBuZXcgc3RydWN0dXJlIGluIHRoZSBkb2N1bWVudAorCVhLTVNSZWdpc3RlclJlcXVlc3QgKiBycmkgPSBjcmVhdGVSZWdpc3RlclJlcXVlc3Qoc2VydmljZSwgKmRvYywgaWQpOworCSgqZG9jKS0+YXBwZW5kQ2hpbGQocnJpLT5nZXRFbGVtZW50KCkpOworCisJcmV0dXJuIHJyaTsKK30KKworWEtNU1Jldm9rZVJlcXVlc3QgKiBYS01TTWVzc2FnZUZhY3RvcnlJbXBsOjpjcmVhdGVSZXZva2VSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGRvYywKKwkJY29uc3QgWE1MQ2ggKiBpZCkgeworCQorCVhLTVNSZXZva2VSZXF1ZXN0SW1wbCAqIHJyaTsKKworCVhTRUNFbnYgKiB0ZW52OworCVhTRUNuZXcodGVudiwgWFNFQ0VudigqbXBfZW52KSk7CisJdGVudi0+c2V0UGFyZW50RG9jdW1lbnQoZG9jKTsKKworCVhTRUNuZXcocnJpLCBYS01TUmV2b2tlUmVxdWVzdEltcGwodGVudikpOworCXJyaS0+Y3JlYXRlQmxhbmtSZXZva2VSZXF1ZXN0KHNlcnZpY2UsIGlkKTsKKworCXJldHVybiBycmk7CisKK30KKworCitYS01TUmV2b2tlUmVxdWVzdCAqIFhLTVNNZXNzYWdlRmFjdG9yeUltcGw6OmNyZWF0ZVJldm9rZVJlcXVlc3QoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICoqZG9jLAorCQljb25zdCBYTUxDaCAqIGlkKSB7CisKKworCS8vIENyZWF0ZSBhIGRvY3VtZW50IHRvIHB1dCB0aGUgZWxlbWVudCBpbgorCisJWE1MQ2ggdGVtcFN0clsxMDBdOworCVhNTFN0cmluZzo6dHJhbnNjb2RlKCJDb3JlIiwgdGVtcFN0ciwgOTkpOyAgICAKKwlET01JbXBsZW1lbnRhdGlvbiAqaW1wbCA9IERPTUltcGxlbWVudGF0aW9uUmVnaXN0cnk6OmdldERPTUltcGxlbWVudGF0aW9uKHRlbXBTdHIpOworCisJKmRvYyA9IGltcGwtPmNyZWF0ZURvY3VtZW50KCk7CisKKwkvLyBFbWJlZCB0aGUgbmV3IHN0cnVjdHVyZSBpbiB0aGUgZG9jdW1lbnQKKwlYS01TUmV2b2tlUmVxdWVzdCAqIHJyaSA9IGNyZWF0ZVJldm9rZVJlcXVlc3Qoc2VydmljZSwgKmRvYywgaWQpOworCSgqZG9jKS0+YXBwZW5kQ2hpbGQocnJpLT5nZXRFbGVtZW50KCkpOworCisJcmV0dXJuIHJyaTsKK30KKworWEtNU1JlY292ZXJSZXF1ZXN0ICogWEtNU01lc3NhZ2VGYWN0b3J5SW1wbDo6Y3JlYXRlUmVjb3ZlclJlcXVlc3QoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogZG9jLAorCQljb25zdCBYTUxDaCAqIGlkKSB7CisJCisJWEtNU1JlY292ZXJSZXF1ZXN0SW1wbCAqIHJyaTsKKworCVhTRUNFbnYgKiB0ZW52OworCVhTRUNuZXcodGVudiwgWFNFQ0VudigqbXBfZW52KSk7CisJdGVudi0+c2V0UGFyZW50RG9jdW1lbnQoZG9jKTsKKworCVhTRUNuZXcocnJpLCBYS01TUmVjb3ZlclJlcXVlc3RJbXBsKHRlbnYpKTsKKwlycmktPmNyZWF0ZUJsYW5rUmVjb3ZlclJlcXVlc3Qoc2VydmljZSwgaWQpOworCisJcmV0dXJuIHJyaTsKKworfQorCisKK1hLTVNSZWNvdmVyUmVxdWVzdCAqIFhLTVNNZXNzYWdlRmFjdG9yeUltcGw6OmNyZWF0ZVJlY292ZXJSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqKmRvYywKKwkJY29uc3QgWE1MQ2ggKiBpZCkgeworCisKKwkvLyBDcmVhdGUgYSBkb2N1bWVudCB0byBwdXQgdGhlIGVsZW1lbnQgaW4KKworCVhNTENoIHRlbXBTdHJbMTAwXTsKKwlYTUxTdHJpbmc6OnRyYW5zY29kZSgiQ29yZSIsIHRlbXBTdHIsIDk5KTsgICAgCisJRE9NSW1wbGVtZW50YXRpb24gKmltcGwgPSBET01JbXBsZW1lbnRhdGlvblJlZ2lzdHJ5OjpnZXRET01JbXBsZW1lbnRhdGlvbih0ZW1wU3RyKTsKKworCSpkb2MgPSBpbXBsLT5jcmVhdGVEb2N1bWVudCgpOworCisJLy8gRW1iZWQgdGhlIG5ldyBzdHJ1Y3R1cmUgaW4gdGhlIGRvY3VtZW50CisJWEtNU1JlY292ZXJSZXF1ZXN0ICogcnJpID0gY3JlYXRlUmVjb3ZlclJlcXVlc3Qoc2VydmljZSwgKmRvYywgaWQpOworCSgqZG9jKS0+YXBwZW5kQ2hpbGQocnJpLT5nZXRFbGVtZW50KCkpOworCisJcmV0dXJuIHJyaTsKK30KKworWEtNU1JlaXNzdWVSZXF1ZXN0ICogWEtNU01lc3NhZ2VGYWN0b3J5SW1wbDo6Y3JlYXRlUmVpc3N1ZVJlcXVlc3QoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogZG9jLAorCQljb25zdCBYTUxDaCAqIGlkKSB7CisJCisJWEtNU1JlaXNzdWVSZXF1ZXN0SW1wbCAqIHJyaTsKKworCVhTRUNFbnYgKiB0ZW52OworCVhTRUNuZXcodGVudiwgWFNFQ0VudigqbXBfZW52KSk7CisJdGVudi0+c2V0UGFyZW50RG9jdW1lbnQoZG9jKTsKKworCVhTRUNuZXcocnJpLCBYS01TUmVpc3N1ZVJlcXVlc3RJbXBsKHRlbnYpKTsKKwlycmktPmNyZWF0ZUJsYW5rUmVpc3N1ZVJlcXVlc3Qoc2VydmljZSwgaWQpOworCisJcmV0dXJuIHJyaTsKKworfQorCisKK1hLTVNSZWlzc3VlUmVxdWVzdCAqIFhLTVNNZXNzYWdlRmFjdG9yeUltcGw6OmNyZWF0ZVJlaXNzdWVSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqKmRvYywKKwkJY29uc3QgWE1MQ2ggKiBpZCkgeworCisKKwkvLyBDcmVhdGUgYSBkb2N1bWVudCB0byBwdXQgdGhlIGVsZW1lbnQgaW4KKworCVhNTENoIHRlbXBTdHJbMTAwXTsKKwlYTUxTdHJpbmc6OnRyYW5zY29kZSgiQ29yZSIsIHRlbXBTdHIsIDk5KTsgICAgCisJRE9NSW1wbGVtZW50YXRpb24gKmltcGwgPSBET01JbXBsZW1lbnRhdGlvblJlZ2lzdHJ5OjpnZXRET01JbXBsZW1lbnRhdGlvbih0ZW1wU3RyKTsKKworCSpkb2MgPSBpbXBsLT5jcmVhdGVEb2N1bWVudCgpOworCisJLy8gRW1iZWQgdGhlIG5ldyBzdHJ1Y3R1cmUgaW4gdGhlIGRvY3VtZW50CisJWEtNU1JlaXNzdWVSZXF1ZXN0ICogcnJpID0gY3JlYXRlUmVpc3N1ZVJlcXVlc3Qoc2VydmljZSwgKmRvYywgaWQpOworCSgqZG9jKS0+YXBwZW5kQ2hpbGQocnJpLT5nZXRFbGVtZW50KCkpOworCisJcmV0dXJuIHJyaTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDcmVhdGUgYSByZXN1bHQgYmFzZWQgb24gYSByZXF1ZXN0CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYS01TTG9jYXRlUmVzdWx0ICogWEtNU01lc3NhZ2VGYWN0b3J5SW1wbDo6Y3JlYXRlTG9jYXRlUmVzdWx0KAorCQlYS01TTG9jYXRlUmVxdWVzdCAqIHJlcXVlc3QsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqZG9jLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWFqb3Igcm1haiwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIHJtaW4sCisJCWNvbnN0IFhNTENoICogaWQpIHsKKworCVhLTVNMb2NhdGVSZXN1bHRJbXBsICogbHJpOworCisJWFNFQ0VudiAqIHRlbnY7CisJWFNFQ25ldyh0ZW52LCBYU0VDRW52KCptcF9lbnYpKTsKKwl0ZW52LT5zZXRQYXJlbnREb2N1bWVudChkb2MpOworCisJWFNFQ25ldyhscmksIFhLTVNMb2NhdGVSZXN1bHRJbXBsKHRlbnYpKTsKKwlscmktPmNyZWF0ZUJsYW5rTG9jYXRlUmVzdWx0KHJlcXVlc3QtPmdldFNlcnZpY2UoKSwgaWQsIHJtYWosIHJtaW4pOworCisJY29weVJlcXVlc3RUb1Jlc3VsdChyZXF1ZXN0LCAoWEtNU1Jlc3VsdFR5cGVJbXBsKikgbHJpKTsKKworCXJldHVybiBscmk7CisKK30KKworWEtNU0xvY2F0ZVJlc3VsdCAqIFhLTVNNZXNzYWdlRmFjdG9yeUltcGw6OmNyZWF0ZUxvY2F0ZVJlc3VsdCgKKwkJWEtNU0xvY2F0ZVJlcXVlc3QgKiByZXF1ZXN0LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKipkb2MsCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNYWpvciBybWFqLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWlub3Igcm1pbiwKKwkJY29uc3QgWE1MQ2ggKiBpZCkgeworCisJLy8gQ3JlYXRlIGEgZG9jdW1lbnQgdG8gcHV0IHRoZSBlbGVtZW50IGluCisKKwlYTUxDaCB0ZW1wU3RyWzEwMF07CisJWE1MU3RyaW5nOjp0cmFuc2NvZGUoIkNvcmUiLCB0ZW1wU3RyLCA5OSk7ICAgIAorCURPTUltcGxlbWVudGF0aW9uICppbXBsID0gRE9NSW1wbGVtZW50YXRpb25SZWdpc3RyeTo6Z2V0RE9NSW1wbGVtZW50YXRpb24odGVtcFN0cik7CisKKwkqZG9jID0gaW1wbC0+Y3JlYXRlRG9jdW1lbnQoKTsKKworCS8vIEVtYmVkIHRoZSBuZXcgc3RydWN0dXJlIGluIHRoZSBkb2N1bWVudAorCVhLTVNMb2NhdGVSZXN1bHQgKiBsciA9IGNyZWF0ZUxvY2F0ZVJlc3VsdChyZXF1ZXN0LCAqZG9jLCBybWFqLCBybWluLCBpZCk7CisJKCpkb2MpLT5hcHBlbmRDaGlsZChsci0+Z2V0RWxlbWVudCgpKTsKKworCXJldHVybiBscjsKK30KKworWEtNU1N0YXR1c1Jlc3VsdCAqIFhLTVNNZXNzYWdlRmFjdG9yeUltcGw6OmNyZWF0ZVN0YXR1c1Jlc3VsdCgKKwkJWEtNU1N0YXR1c1JlcXVlc3QgKiByZXF1ZXN0LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKmRvYywKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1ham9yIHJtYWosCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNaW5vciBybWluLAorCQljb25zdCBYTUxDaCAqIGlkKSB7CisKKwlYS01TU3RhdHVzUmVzdWx0SW1wbCAqIHNyaTsKKworCVhTRUNFbnYgKiB0ZW52OworCVhTRUNuZXcodGVudiwgWFNFQ0VudigqbXBfZW52KSk7CisJdGVudi0+c2V0UGFyZW50RG9jdW1lbnQoZG9jKTsKKworCVhTRUNuZXcoc3JpLCBYS01TU3RhdHVzUmVzdWx0SW1wbCh0ZW52KSk7CisJc3JpLT5jcmVhdGVCbGFua1N0YXR1c1Jlc3VsdChyZXF1ZXN0LT5nZXRTZXJ2aWNlKCksIGlkLCBybWFqLCBybWluKTsKKworCWNvcHlSZXF1ZXN0VG9SZXN1bHQocmVxdWVzdCwgKFhLTVNSZXN1bHRUeXBlSW1wbCopIHNyaSk7CisKKwlyZXR1cm4gc3JpOworCit9CisKK1hLTVNTdGF0dXNSZXN1bHQgKiBYS01TTWVzc2FnZUZhY3RvcnlJbXBsOjpjcmVhdGVTdGF0dXNSZXN1bHQoCisJCVhLTVNTdGF0dXNSZXF1ZXN0ICogcmVxdWVzdCwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICoqZG9jLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWFqb3Igcm1haiwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIHJtaW4sCisJCWNvbnN0IFhNTENoICogaWQpIHsKKworCS8vIENyZWF0ZSBhIGRvY3VtZW50IHRvIHB1dCB0aGUgZWxlbWVudCBpbgorCisJWE1MQ2ggdGVtcFN0clsxMDBdOworCVhNTFN0cmluZzo6dHJhbnNjb2RlKCJDb3JlIiwgdGVtcFN0ciwgOTkpOyAgICAKKwlET01JbXBsZW1lbnRhdGlvbiAqaW1wbCA9IERPTUltcGxlbWVudGF0aW9uUmVnaXN0cnk6OmdldERPTUltcGxlbWVudGF0aW9uKHRlbXBTdHIpOworCisJKmRvYyA9IGltcGwtPmNyZWF0ZURvY3VtZW50KCk7CisKKwkvLyBFbWJlZCB0aGUgbmV3IHN0cnVjdHVyZSBpbiB0aGUgZG9jdW1lbnQKKwlYS01TU3RhdHVzUmVzdWx0ICogc3IgPSBjcmVhdGVTdGF0dXNSZXN1bHQocmVxdWVzdCwgKmRvYywgcm1haiwgcm1pbiwgaWQpOworCSgqZG9jKS0+YXBwZW5kQ2hpbGQoc3ItPmdldEVsZW1lbnQoKSk7CisKKwlyZXR1cm4gc3I7Cit9CisKK1hLTVNSZXN1bHQgKiBYS01TTWVzc2FnZUZhY3RvcnlJbXBsOjpjcmVhdGVSZXN1bHQoCisJCVhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlICogcmVxdWVzdCwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICpkb2MsCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNYWpvciBybWFqLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWlub3Igcm1pbiwKKwkJY29uc3QgWE1MQ2ggKiBpZCkgeworCisJWEtNU1Jlc3VsdEltcGwgKiByaTsKKworCVhTRUNFbnYgKiB0ZW52OworCVhTRUNuZXcodGVudiwgWFNFQ0VudigqbXBfZW52KSk7CisJdGVudi0+c2V0UGFyZW50RG9jdW1lbnQoZG9jKTsKKworCVhTRUNuZXcocmksIFhLTVNSZXN1bHRJbXBsKHRlbnYpKTsKKwlyaS0+Y3JlYXRlQmxhbmtSZXN1bHQocmVxdWVzdC0+Z2V0U2VydmljZSgpLCBpZCwgcm1haiwgcm1pbik7CisKKwljb3B5UmVxdWVzdFRvUmVzdWx0KHJlcXVlc3QsIChYS01TUmVzdWx0VHlwZUltcGwqKSByaSk7CisKKwlyZXR1cm4gcmk7CisKK30KKworWEtNU1Jlc3VsdCAqIFhLTVNNZXNzYWdlRmFjdG9yeUltcGw6OmNyZWF0ZVJlc3VsdCgKKwkJWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGUgKiByZXF1ZXN0LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKipkb2MsCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNYWpvciBybWFqLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWlub3Igcm1pbiwKKwkJY29uc3QgWE1MQ2ggKiBpZCkgeworCisJLy8gQ3JlYXRlIGEgZG9jdW1lbnQgdG8gcHV0IHRoZSBlbGVtZW50IGluCisKKwlYTUxDaCB0ZW1wU3RyWzEwMF07CisJWE1MU3RyaW5nOjp0cmFuc2NvZGUoIkNvcmUiLCB0ZW1wU3RyLCA5OSk7ICAgIAorCURPTUltcGxlbWVudGF0aW9uICppbXBsID0gRE9NSW1wbGVtZW50YXRpb25SZWdpc3RyeTo6Z2V0RE9NSW1wbGVtZW50YXRpb24odGVtcFN0cik7CisKKwkqZG9jID0gaW1wbC0+Y3JlYXRlRG9jdW1lbnQoKTsKKworCS8vIEVtYmVkIHRoZSBuZXcgc3RydWN0dXJlIGluIHRoZSBkb2N1bWVudAorCVhLTVNSZXN1bHQgKiByID0gY3JlYXRlUmVzdWx0KHJlcXVlc3QsICpkb2MsIHJtYWosIHJtaW4sIGlkKTsKKwkoKmRvYyktPmFwcGVuZENoaWxkKHItPmdldEVsZW1lbnQoKSk7CisKKwlyZXR1cm4gcjsKK30KKworWEtNU1ZhbGlkYXRlUmVzdWx0ICogWEtNU01lc3NhZ2VGYWN0b3J5SW1wbDo6Y3JlYXRlVmFsaWRhdGVSZXN1bHQoCisJCVhLTVNWYWxpZGF0ZVJlcXVlc3QgKiByZXF1ZXN0LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKmRvYywKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1ham9yIHJtYWosCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNaW5vciBybWluLAorCQljb25zdCBYTUxDaCAqIGlkKSB7CisKKwlYS01TVmFsaWRhdGVSZXN1bHRJbXBsICogdnJpOworCisJWFNFQ0VudiAqIHRlbnY7CisJWFNFQ25ldyh0ZW52LCBYU0VDRW52KCptcF9lbnYpKTsKKwl0ZW52LT5zZXRQYXJlbnREb2N1bWVudChkb2MpOworCisJWFNFQ25ldyh2cmksIFhLTVNWYWxpZGF0ZVJlc3VsdEltcGwodGVudikpOworCXZyaS0+Y3JlYXRlQmxhbmtWYWxpZGF0ZVJlc3VsdChyZXF1ZXN0LT5nZXRTZXJ2aWNlKCksIGlkLCBybWFqLCBybWluKTsKKworCWNvcHlSZXF1ZXN0VG9SZXN1bHQocmVxdWVzdCwgKFhLTVNSZXN1bHRUeXBlSW1wbCopIHZyaSk7CisKKwlyZXR1cm4gdnJpOworCit9CisKK1hLTVNWYWxpZGF0ZVJlc3VsdCAqIFhLTVNNZXNzYWdlRmFjdG9yeUltcGw6OmNyZWF0ZVZhbGlkYXRlUmVzdWx0KAorCQlYS01TVmFsaWRhdGVSZXF1ZXN0ICogcmVxdWVzdCwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICoqZG9jLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWFqb3Igcm1haiwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIHJtaW4sCisJCWNvbnN0IFhNTENoICogaWQpIHsKKworCS8vIENyZWF0ZSBhIGRvY3VtZW50IHRvIHB1dCB0aGUgZWxlbWVudCBpbgorCisJWE1MQ2ggdGVtcFN0clsxMDBdOworCVhNTFN0cmluZzo6dHJhbnNjb2RlKCJDb3JlIiwgdGVtcFN0ciwgOTkpOyAgICAKKwlET01JbXBsZW1lbnRhdGlvbiAqaW1wbCA9IERPTUltcGxlbWVudGF0aW9uUmVnaXN0cnk6OmdldERPTUltcGxlbWVudGF0aW9uKHRlbXBTdHIpOworCisJKmRvYyA9IGltcGwtPmNyZWF0ZURvY3VtZW50KCk7CisKKwkvLyBFbWJlZCB0aGUgbmV3IHN0cnVjdHVyZSBpbiB0aGUgZG9jdW1lbnQKKwlYS01TVmFsaWRhdGVSZXN1bHQgKiB2ciA9IGNyZWF0ZVZhbGlkYXRlUmVzdWx0KHJlcXVlc3QsICpkb2MsIHJtYWosIHJtaW4sIGlkKTsKKwkoKmRvYyktPmFwcGVuZENoaWxkKHZyLT5nZXRFbGVtZW50KCkpOworCisJcmV0dXJuIHZyOworfQorCitYS01TQ29tcG91bmRSZXN1bHQgKiBYS01TTWVzc2FnZUZhY3RvcnlJbXBsOjpjcmVhdGVDb21wb3VuZFJlc3VsdCgKKwkJWEtNU0NvbXBvdW5kUmVxdWVzdCAqIHJlcXVlc3QsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqZG9jLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWFqb3Igcm1haiwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIHJtaW4sCisJCWNvbnN0IFhNTENoICogaWQpIHsKKworCVhLTVNDb21wb3VuZFJlc3VsdEltcGwgKiBjcmk7CisKKwlYU0VDRW52ICogdGVudjsKKwlYU0VDbmV3KHRlbnYsIFhTRUNFbnYoKm1wX2VudikpOworCXRlbnYtPnNldFBhcmVudERvY3VtZW50KGRvYyk7CisKKwlYU0VDbmV3KGNyaSwgWEtNU0NvbXBvdW5kUmVzdWx0SW1wbCh0ZW52KSk7CisJY3JpLT5jcmVhdGVCbGFua0NvbXBvdW5kUmVzdWx0KHJlcXVlc3QtPmdldFNlcnZpY2UoKSwgaWQsIHJtYWosIHJtaW4pOworCisJY29weVJlcXVlc3RUb1Jlc3VsdChyZXF1ZXN0LCAoWEtNU1Jlc3VsdFR5cGVJbXBsKikgY3JpKTsKKworCXJldHVybiBjcmk7CisKK30KKworWEtNU0NvbXBvdW5kUmVzdWx0ICogWEtNU01lc3NhZ2VGYWN0b3J5SW1wbDo6Y3JlYXRlQ29tcG91bmRSZXN1bHQoCisJCVhLTVNDb21wb3VuZFJlcXVlc3QgKiByZXF1ZXN0LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKipkb2MsCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNYWpvciBybWFqLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWlub3Igcm1pbiwKKwkJY29uc3QgWE1MQ2ggKiBpZCkgeworCisJLy8gQ3JlYXRlIGEgZG9jdW1lbnQgdG8gcHV0IHRoZSBlbGVtZW50IGluCisKKwlYTUxDaCB0ZW1wU3RyWzEwMF07CisJWE1MU3RyaW5nOjp0cmFuc2NvZGUoIkNvcmUiLCB0ZW1wU3RyLCA5OSk7ICAgIAorCURPTUltcGxlbWVudGF0aW9uICppbXBsID0gRE9NSW1wbGVtZW50YXRpb25SZWdpc3RyeTo6Z2V0RE9NSW1wbGVtZW50YXRpb24odGVtcFN0cik7CisKKwkqZG9jID0gaW1wbC0+Y3JlYXRlRG9jdW1lbnQoKTsKKworCS8vIEVtYmVkIHRoZSBuZXcgc3RydWN0dXJlIGluIHRoZSBkb2N1bWVudAorCVhLTVNDb21wb3VuZFJlc3VsdCAqIGNyID0gY3JlYXRlQ29tcG91bmRSZXN1bHQocmVxdWVzdCwgKmRvYywgcm1haiwgcm1pbiwgaWQpOworCSgqZG9jKS0+YXBwZW5kQ2hpbGQoY3ItPmdldEVsZW1lbnQoKSk7CisKKwlyZXR1cm4gY3I7Cit9CisKK1hLTVNSZWdpc3RlclJlc3VsdCAqIFhLTVNNZXNzYWdlRmFjdG9yeUltcGw6OmNyZWF0ZVJlZ2lzdGVyUmVzdWx0KAorCQlYS01TUmVnaXN0ZXJSZXF1ZXN0ICogcmVxdWVzdCwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICpkb2MsCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNYWpvciBybWFqLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWlub3Igcm1pbiwKKwkJY29uc3QgWE1MQ2ggKiBpZCkgeworCisJWEtNU1JlZ2lzdGVyUmVzdWx0SW1wbCAqIHJyaTsKKworCVhTRUNFbnYgKiB0ZW52OworCVhTRUNuZXcodGVudiwgWFNFQ0VudigqbXBfZW52KSk7CisJdGVudi0+c2V0UGFyZW50RG9jdW1lbnQoZG9jKTsKKworCVhTRUNuZXcocnJpLCBYS01TUmVnaXN0ZXJSZXN1bHRJbXBsKHRlbnYpKTsKKwlycmktPmNyZWF0ZUJsYW5rUmVnaXN0ZXJSZXN1bHQocmVxdWVzdC0+Z2V0U2VydmljZSgpLCBpZCwgcm1haiwgcm1pbik7CisKKwljb3B5UmVxdWVzdFRvUmVzdWx0KHJlcXVlc3QsIChYS01TUmVzdWx0VHlwZUltcGwqKSBycmkpOworCisJcmV0dXJuIHJyaTsKKworfQorCitYS01TUmVnaXN0ZXJSZXN1bHQgKiBYS01TTWVzc2FnZUZhY3RvcnlJbXBsOjpjcmVhdGVSZWdpc3RlclJlc3VsdCgKKwkJWEtNU1JlZ2lzdGVyUmVxdWVzdCAqIHJlcXVlc3QsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqKmRvYywKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1ham9yIHJtYWosCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNaW5vciBybWluLAorCQljb25zdCBYTUxDaCAqIGlkKSB7CisKKwkvLyBDcmVhdGUgYSBkb2N1bWVudCB0byBwdXQgdGhlIGVsZW1lbnQgaW4KKworCVhNTENoIHRlbXBTdHJbMTAwXTsKKwlYTUxTdHJpbmc6OnRyYW5zY29kZSgiQ29yZSIsIHRlbXBTdHIsIDk5KTsgICAgCisJRE9NSW1wbGVtZW50YXRpb24gKmltcGwgPSBET01JbXBsZW1lbnRhdGlvblJlZ2lzdHJ5OjpnZXRET01JbXBsZW1lbnRhdGlvbih0ZW1wU3RyKTsKKworCSpkb2MgPSBpbXBsLT5jcmVhdGVEb2N1bWVudCgpOworCisJLy8gRW1iZWQgdGhlIG5ldyBzdHJ1Y3R1cmUgaW4gdGhlIGRvY3VtZW50CisJWEtNU1JlZ2lzdGVyUmVzdWx0ICogcnIgPSBjcmVhdGVSZWdpc3RlclJlc3VsdChyZXF1ZXN0LCAqZG9jLCBybWFqLCBybWluLCBpZCk7CisJKCpkb2MpLT5hcHBlbmRDaGlsZChyci0+Z2V0RWxlbWVudCgpKTsKKworCXJldHVybiBycjsKK30KKworCitYS01TUmV2b2tlUmVzdWx0ICogWEtNU01lc3NhZ2VGYWN0b3J5SW1wbDo6Y3JlYXRlUmV2b2tlUmVzdWx0KAorCQlYS01TUmV2b2tlUmVxdWVzdCAqIHJlcXVlc3QsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqZG9jLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWFqb3Igcm1haiwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIHJtaW4sCisJCWNvbnN0IFhNTENoICogaWQpIHsKKworCVhLTVNSZXZva2VSZXN1bHRJbXBsICogcnJpOworCisJWFNFQ0VudiAqIHRlbnY7CisJWFNFQ25ldyh0ZW52LCBYU0VDRW52KCptcF9lbnYpKTsKKwl0ZW52LT5zZXRQYXJlbnREb2N1bWVudChkb2MpOworCisJWFNFQ25ldyhycmksIFhLTVNSZXZva2VSZXN1bHRJbXBsKHRlbnYpKTsKKwlycmktPmNyZWF0ZUJsYW5rUmV2b2tlUmVzdWx0KHJlcXVlc3QtPmdldFNlcnZpY2UoKSwgaWQsIHJtYWosIHJtaW4pOworCisJY29weVJlcXVlc3RUb1Jlc3VsdChyZXF1ZXN0LCAoWEtNU1Jlc3VsdFR5cGVJbXBsKikgcnJpKTsKKworCXJldHVybiBycmk7IAorCit9CisKKworWEtNU1Jldm9rZVJlc3VsdCAqIFhLTVNNZXNzYWdlRmFjdG9yeUltcGw6OmNyZWF0ZVJldm9rZVJlc3VsdCgKKwkJWEtNU1Jldm9rZVJlcXVlc3QgKiByZXF1ZXN0LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKipkb2MsCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNYWpvciBybWFqLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWlub3Igcm1pbiwKKwkJY29uc3QgWE1MQ2ggKiBpZCkgeworCisJLy8gQ3JlYXRlIGEgZG9jdW1lbnQgdG8gcHV0IHRoZSBlbGVtZW50IGluCisKKwlYTUxDaCB0ZW1wU3RyWzEwMF07CisJWE1MU3RyaW5nOjp0cmFuc2NvZGUoIkNvcmUiLCB0ZW1wU3RyLCA5OSk7ICAgIAorCURPTUltcGxlbWVudGF0aW9uICppbXBsID0gRE9NSW1wbGVtZW50YXRpb25SZWdpc3RyeTo6Z2V0RE9NSW1wbGVtZW50YXRpb24odGVtcFN0cik7CisKKwkqZG9jID0gaW1wbC0+Y3JlYXRlRG9jdW1lbnQoKTsKKworCS8vIEVtYmVkIHRoZSBuZXcgc3RydWN0dXJlIGluIHRoZSBkb2N1bWVudAorCVhLTVNSZXZva2VSZXN1bHQgKiByciA9IGNyZWF0ZVJldm9rZVJlc3VsdChyZXF1ZXN0LCAqZG9jLCBybWFqLCBybWluLCBpZCk7CisJKCpkb2MpLT5hcHBlbmRDaGlsZChyci0+Z2V0RWxlbWVudCgpKTsKKworCXJldHVybiBycjsKK30KKworWEtNU1JlaXNzdWVSZXN1bHQgKiBYS01TTWVzc2FnZUZhY3RvcnlJbXBsOjpjcmVhdGVSZWlzc3VlUmVzdWx0KAorCQlYS01TUmVpc3N1ZVJlcXVlc3QgKiByZXF1ZXN0LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKmRvYywKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1ham9yIHJtYWosCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNaW5vciBybWluLAorCQljb25zdCBYTUxDaCAqIGlkKSB7CisKKwlYS01TUmVpc3N1ZVJlc3VsdEltcGwgKiBycmk7CisKKwlYU0VDRW52ICogdGVudjsKKwlYU0VDbmV3KHRlbnYsIFhTRUNFbnYoKm1wX2VudikpOworCXRlbnYtPnNldFBhcmVudERvY3VtZW50KGRvYyk7CisKKwlYU0VDbmV3KHJyaSwgWEtNU1JlaXNzdWVSZXN1bHRJbXBsKHRlbnYpKTsKKwlycmktPmNyZWF0ZUJsYW5rUmVpc3N1ZVJlc3VsdChyZXF1ZXN0LT5nZXRTZXJ2aWNlKCksIGlkLCBybWFqLCBybWluKTsKKworCWNvcHlSZXF1ZXN0VG9SZXN1bHQocmVxdWVzdCwgKFhLTVNSZXN1bHRUeXBlSW1wbCopIHJyaSk7CisKKwlyZXR1cm4gcnJpOyAKKworfQorCitYS01TUmVpc3N1ZVJlc3VsdCAqIFhLTVNNZXNzYWdlRmFjdG9yeUltcGw6OmNyZWF0ZVJlaXNzdWVSZXN1bHQoCisJCVhLTVNSZWlzc3VlUmVxdWVzdCAqIHJlcXVlc3QsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqKmRvYywKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1ham9yIHJtYWosCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNaW5vciBybWluLAorCQljb25zdCBYTUxDaCAqIGlkKSB7CisKKwkvLyBDcmVhdGUgYSBkb2N1bWVudCB0byBwdXQgdGhlIGVsZW1lbnQgaW4KKworCVhNTENoIHRlbXBTdHJbMTAwXTsKKwlYTUxTdHJpbmc6OnRyYW5zY29kZSgiQ29yZSIsIHRlbXBTdHIsIDk5KTsgICAgCisJRE9NSW1wbGVtZW50YXRpb24gKmltcGwgPSBET01JbXBsZW1lbnRhdGlvblJlZ2lzdHJ5OjpnZXRET01JbXBsZW1lbnRhdGlvbih0ZW1wU3RyKTsKKworCSpkb2MgPSBpbXBsLT5jcmVhdGVEb2N1bWVudCgpOworCisJLy8gRW1iZWQgdGhlIG5ldyBzdHJ1Y3R1cmUgaW4gdGhlIGRvY3VtZW50CisJWEtNU1JlaXNzdWVSZXN1bHQgKiByciA9IGNyZWF0ZVJlaXNzdWVSZXN1bHQocmVxdWVzdCwgKmRvYywgcm1haiwgcm1pbiwgaWQpOworCSgqZG9jKS0+YXBwZW5kQ2hpbGQocnItPmdldEVsZW1lbnQoKSk7CisKKwlyZXR1cm4gcnI7Cit9CisKK1hLTVNSZWNvdmVyUmVzdWx0ICogWEtNU01lc3NhZ2VGYWN0b3J5SW1wbDo6Y3JlYXRlUmVjb3ZlclJlc3VsdCgKKwkJWEtNU1JlY292ZXJSZXF1ZXN0ICogcmVxdWVzdCwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICpkb2MsCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNYWpvciBybWFqLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWlub3Igcm1pbiwKKwkJY29uc3QgWE1MQ2ggKiBpZCkgeworCisJWEtNU1JlY292ZXJSZXN1bHRJbXBsICogcnJpOworCisJWFNFQ0VudiAqIHRlbnY7CisJWFNFQ25ldyh0ZW52LCBYU0VDRW52KCptcF9lbnYpKTsKKwl0ZW52LT5zZXRQYXJlbnREb2N1bWVudChkb2MpOworCisJWFNFQ25ldyhycmksIFhLTVNSZWNvdmVyUmVzdWx0SW1wbCh0ZW52KSk7CisJcnJpLT5jcmVhdGVCbGFua1JlY292ZXJSZXN1bHQocmVxdWVzdC0+Z2V0U2VydmljZSgpLCBpZCwgcm1haiwgcm1pbik7CisKKwljb3B5UmVxdWVzdFRvUmVzdWx0KHJlcXVlc3QsIChYS01TUmVzdWx0VHlwZUltcGwqKSBycmkpOworCisJcmV0dXJuIHJyaTsgCisKK30KKworWEtNU1JlY292ZXJSZXN1bHQgKiBYS01TTWVzc2FnZUZhY3RvcnlJbXBsOjpjcmVhdGVSZWNvdmVyUmVzdWx0KAorCQlYS01TUmVjb3ZlclJlcXVlc3QgKiByZXF1ZXN0LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKipkb2MsCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNYWpvciBybWFqLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWlub3Igcm1pbiwKKwkJY29uc3QgWE1MQ2ggKiBpZCkgeworCisJLy8gQ3JlYXRlIGEgZG9jdW1lbnQgdG8gcHV0IHRoZSBlbGVtZW50IGluCisKKwlYTUxDaCB0ZW1wU3RyWzEwMF07CisJWE1MU3RyaW5nOjp0cmFuc2NvZGUoIkNvcmUiLCB0ZW1wU3RyLCA5OSk7ICAgIAorCURPTUltcGxlbWVudGF0aW9uICppbXBsID0gRE9NSW1wbGVtZW50YXRpb25SZWdpc3RyeTo6Z2V0RE9NSW1wbGVtZW50YXRpb24odGVtcFN0cik7CisKKwkqZG9jID0gaW1wbC0+Y3JlYXRlRG9jdW1lbnQoKTsKKworCS8vIEVtYmVkIHRoZSBuZXcgc3RydWN0dXJlIGluIHRoZSBkb2N1bWVudAorCVhLTVNSZWNvdmVyUmVzdWx0ICogcnIgPSBjcmVhdGVSZWNvdmVyUmVzdWx0KHJlcXVlc3QsICpkb2MsIHJtYWosIHJtaW4sIGlkKTsKKwkoKmRvYyktPmFwcGVuZENoaWxkKHJyLT5nZXRFbGVtZW50KCkpOworCisJcmV0dXJuIHJyOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIE1lc3NhZ2UgQ29udmVyc2lvbnMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGUgKiBYS01TTWVzc2FnZUZhY3RvcnlJbXBsOjp0b1JlcXVlc3RBYnN0cmFjdFR5cGUoWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGUgKm1zZykgeworCisKKwlzd2l0Y2ggKG1zZy0+Z2V0TWVzc2FnZVR5cGUoKSkgeworCisJY2FzZSBYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6TG9jYXRlUmVxdWVzdCA6CisJY2FzZSBYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6VmFsaWRhdGVSZXF1ZXN0IDoKKwljYXNlIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlOjpDb21wb3VuZFJlcXVlc3QgOgorCWNhc2UgWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGU6OlBlbmRpbmdSZXF1ZXN0IDoKKwljYXNlIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlOjpSZWdpc3RlclJlcXVlc3QgOgorCWNhc2UgWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGU6OlJldm9rZVJlcXVlc3QgOgorCWNhc2UgWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGU6OlJlY292ZXJSZXF1ZXN0IDoKKwljYXNlIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlOjpSZWlzc3VlUmVxdWVzdCA6CisJY2FzZSBYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6U3RhdHVzUmVxdWVzdCA6CisKKwkJcmV0dXJuIChYS01TUmVxdWVzdEFic3RyYWN0VHlwZSAqKSBtc2c7CisKKwlkZWZhdWx0OgorCisJCXJldHVybiBOVUxMOworCX0KKworCXJldHVybiBOVUxMOworCit9CisKK1hLTVNSZXN1bHRUeXBlICogWEtNU01lc3NhZ2VGYWN0b3J5SW1wbDo6dG9SZXN1bHRUeXBlKFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlICptc2cpIHsKKworCXN3aXRjaCAobXNnLT5nZXRNZXNzYWdlVHlwZSgpKSB7CisKKwljYXNlIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlOjpMb2NhdGVSZXN1bHQgOgorCWNhc2UgWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGU6OlZhbGlkYXRlUmVzdWx0IDoKKwljYXNlIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlOjpDb21wb3VuZFJlc3VsdCA6CisJY2FzZSBYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6UmVnaXN0ZXJSZXN1bHQgOgorCWNhc2UgWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGU6OlJldm9rZVJlc3VsdCA6CisJY2FzZSBYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6UmVjb3ZlclJlc3VsdCA6CisJY2FzZSBYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6UmVpc3N1ZVJlc3VsdCA6CisJY2FzZSBYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6U3RhdHVzUmVzdWx0IDoKKwljYXNlIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlOjpSZXN1bHQgOgorCisJCXJldHVybiAoWEtNU1Jlc3VsdFR5cGUgKikgbXNnOworCisJZGVmYXVsdDoKKwkJcmV0dXJuIE5VTEw7CisJfQorCXJldHVybiBOVUxMOworfQpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNNZXNzYWdlRmFjdG9yeUltcGwuaHBwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNNZXNzYWdlRmFjdG9yeUltcGwuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhMDBmZDYKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU01lc3NhZ2VGYWN0b3J5SW1wbC5ocHAKQEAgLTAsMCArMSwyODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNNZXNzYWdlRmFjdG9yeUltcGwgOj0gSW1wbGVtZW50YXRpb24gb2YgdGhlIFhLTVNNZXNzYWdlRmFjdG9yeSBjbGFzcworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYS01TTUVTU0FHRUZBQ1RPUllJTVBMX0lOQ0xVREUKKyNkZWZpbmUgWEtNU01FU1NBR0VGQUNUT1JZSU1QTF9JTkNMVURFCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU01lc3NhZ2VGYWN0b3J5LmhwcD4KKworY2xhc3MgWFNFQ1Byb3ZpZGVyOworY2xhc3MgWEtNU0NvbXBvdW5kUmVxdWVzdDsKK2NsYXNzIFhLTVNDb21wb3VuZFJlc3VsdDsKK2NsYXNzIFhTRUNFbnY7CisKK2NsYXNzIFhLTVNNZXNzYWdlRmFjdG9yeUltcGwgOiBwdWJsaWMgWEtNU01lc3NhZ2VGYWN0b3J5IHsKKworcHJvdGVjdGVkOgorCisJWEtNU01lc3NhZ2VGYWN0b3J5SW1wbCh2b2lkKTsKKworcHVibGljOgorCisJdmlydHVhbCB+WEtNU01lc3NhZ2VGYWN0b3J5SW1wbCgpOworCisJLyogRE9NIGJhc2VkIGNvbnN0cnVjdGlvbiBtZXRob2RzICovCisKKwl2aXJ0dWFsIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlICogbmV3TWVzc2FnZUZyb21ET00oCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogZWx0KTsKKworCS8qIENvbnN0cnVjdGlvbiBmcm9tIHNjcmF0Y2ggKi8KKwl2aXJ0dWFsIFhLTVNMb2NhdGVSZXF1ZXN0ICogY3JlYXRlTG9jYXRlUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBkb2MsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKTsJCQorCXZpcnR1YWwgWEtNU0xvY2F0ZVJlcXVlc3QgKiBjcmVhdGVMb2NhdGVSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqKmRvYywKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpOworCXZpcnR1YWwgWEtNU1ZhbGlkYXRlUmVxdWVzdCAqIGNyZWF0ZVZhbGlkYXRlUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBkb2MsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKTsJCQorCXZpcnR1YWwgWEtNU1ZhbGlkYXRlUmVxdWVzdCAqIGNyZWF0ZVZhbGlkYXRlUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKipkb2MsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKTsKKwl2aXJ0dWFsIFhLTVNDb21wb3VuZFJlcXVlc3QgKiBjcmVhdGVDb21wb3VuZFJlcXVlc3QoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogZG9jLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCk7CisJdmlydHVhbCBYS01TQ29tcG91bmRSZXF1ZXN0ICogY3JlYXRlQ29tcG91bmRSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqKmRvYywKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpOworCXZpcnR1YWwgWEtNU1BlbmRpbmdSZXF1ZXN0ICogY3JlYXRlUGVuZGluZ1JlcXVlc3QoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICpkb2MsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKTsKKwl2aXJ0dWFsIFhLTVNQZW5kaW5nUmVxdWVzdCAqIGNyZWF0ZVBlbmRpbmdSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqKmRvYywKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpOworCXZpcnR1YWwgWEtNU1N0YXR1c1JlcXVlc3QgKiBjcmVhdGVTdGF0dXNSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGRvYywKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpOworCXZpcnR1YWwgWEtNU1N0YXR1c1JlcXVlc3QgKiBjcmVhdGVTdGF0dXNSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqKmRvYywKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpOworCisKKwl2aXJ0dWFsIFhLTVNMb2NhdGVSZXN1bHQgKiBjcmVhdGVMb2NhdGVSZXN1bHQoCisJCVhLTVNMb2NhdGVSZXF1ZXN0ICogcmVxdWVzdCwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogZG9jLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWFqb3Igcm1haiwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIHJtaW4gPSBYS01TUmVzdWx0VHlwZTo6Tm9uZU1pbm9yLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCk7CisJdmlydHVhbCBYS01TTG9jYXRlUmVzdWx0ICogY3JlYXRlTG9jYXRlUmVzdWx0KAorCQlYS01TTG9jYXRlUmVxdWVzdCAqIHJlcXVlc3QsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqKmRvYywKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1ham9yIHJtYWosCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNaW5vciBybWluID0gWEtNU1Jlc3VsdFR5cGU6Ok5vbmVNaW5vciwKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpOworCXZpcnR1YWwgWEtNU1Jlc3VsdCAqIGNyZWF0ZVJlc3VsdCgKKwkJWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGUgKiByZXF1ZXN0LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBkb2MsCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNYWpvciBybWFqLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWlub3Igcm1pbiA9IFhLTVNSZXN1bHRUeXBlOjpOb25lTWlub3IsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKTsKKwl2aXJ0dWFsIFhLTVNSZXN1bHQgKiBjcmVhdGVSZXN1bHQoCisJCVhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlICogcmVxdWVzdCwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICoqZG9jLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWFqb3Igcm1haiwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIHJtaW4gPSBYS01TUmVzdWx0VHlwZTo6Tm9uZU1pbm9yLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCk7CisJdmlydHVhbCBYS01TVmFsaWRhdGVSZXN1bHQgKiBjcmVhdGVWYWxpZGF0ZVJlc3VsdCgKKwkJWEtNU1ZhbGlkYXRlUmVxdWVzdCAqIHJlcXVlc3QsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGRvYywKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1ham9yIHJtYWosCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNaW5vciBybWluID0gWEtNU1Jlc3VsdFR5cGU6Ok5vbmVNaW5vciwKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpOworCXZpcnR1YWwgWEtNU1ZhbGlkYXRlUmVzdWx0ICogY3JlYXRlVmFsaWRhdGVSZXN1bHQoCisJCVhLTVNWYWxpZGF0ZVJlcXVlc3QgKiByZXF1ZXN0LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKipkb2MsCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNYWpvciBybWFqLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWlub3Igcm1pbiA9IFhLTVNSZXN1bHRUeXBlOjpOb25lTWlub3IsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKTsKKwl2aXJ0dWFsIFhLTVNDb21wb3VuZFJlc3VsdCAqIGNyZWF0ZUNvbXBvdW5kUmVzdWx0KAorCQlYS01TQ29tcG91bmRSZXF1ZXN0ICogcmVxdWVzdCwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogZG9jLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWFqb3Igcm1haiwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIHJtaW4gPSBYS01TUmVzdWx0VHlwZTo6Tm9uZU1pbm9yLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCk7CisJdmlydHVhbCBYS01TQ29tcG91bmRSZXN1bHQgKiBjcmVhdGVDb21wb3VuZFJlc3VsdCgKKwkJWEtNU0NvbXBvdW5kUmVxdWVzdCAqIHJlcXVlc3QsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqKmRvYywKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1ham9yIHJtYWosCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNaW5vciBybWluID0gWEtNU1Jlc3VsdFR5cGU6Ok5vbmVNaW5vciwKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpOworCXZpcnR1YWwgWEtNU1N0YXR1c1Jlc3VsdCAqIGNyZWF0ZVN0YXR1c1Jlc3VsdCgKKwkJWEtNU1N0YXR1c1JlcXVlc3QgKiByZXF1ZXN0LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBkb2MsCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNYWpvciBybWFqLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWlub3Igcm1pbiA9IFhLTVNSZXN1bHRUeXBlOjpOb25lTWlub3IsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKTsKKwl2aXJ0dWFsIFhLTVNTdGF0dXNSZXN1bHQgKiBjcmVhdGVTdGF0dXNSZXN1bHQoCisJCVhLTVNTdGF0dXNSZXF1ZXN0ICogcmVxdWVzdCwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICoqZG9jLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWFqb3Igcm1haiwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIHJtaW4gPSBYS01TUmVzdWx0VHlwZTo6Tm9uZU1pbm9yLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCk7CisKKwkvKiBYLUtSU1MgQ29uc3RydWN0aW9uIGZyb20gU2NyYXRjaCAqLworCisJdmlydHVhbCBYS01TUmVnaXN0ZXJSZXF1ZXN0ICogY3JlYXRlUmVnaXN0ZXJSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGRvYywKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpOworCXZpcnR1YWwgWEtNU1JlZ2lzdGVyUmVxdWVzdCAqIGNyZWF0ZVJlZ2lzdGVyUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKipkb2MsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKTsKKworCXZpcnR1YWwgWEtNU1JlZ2lzdGVyUmVzdWx0ICogY3JlYXRlUmVnaXN0ZXJSZXN1bHQoCisJCVhLTVNSZWdpc3RlclJlcXVlc3QgKiByZXF1ZXN0LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBkb2MsCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNYWpvciBybWFqLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWlub3Igcm1pbiA9IFhLTVNSZXN1bHRUeXBlOjpOb25lTWlub3IsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKTsKKwl2aXJ0dWFsIFhLTVNSZWdpc3RlclJlc3VsdCAqIGNyZWF0ZVJlZ2lzdGVyUmVzdWx0KAorCQlYS01TUmVnaXN0ZXJSZXF1ZXN0ICogcmVxdWVzdCwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICoqZG9jLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWFqb3Igcm1haiwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIHJtaW4gPSBYS01TUmVzdWx0VHlwZTo6Tm9uZU1pbm9yLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCk7CisKKworCXZpcnR1YWwgWEtNU1Jldm9rZVJlcXVlc3QgKiBjcmVhdGVSZXZva2VSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGRvYywKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpOworCXZpcnR1YWwgWEtNU1Jldm9rZVJlcXVlc3QgKiBjcmVhdGVSZXZva2VSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqKmRvYywKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpOworCisJdmlydHVhbCBYS01TUmV2b2tlUmVzdWx0ICogY3JlYXRlUmV2b2tlUmVzdWx0KAorCQlYS01TUmV2b2tlUmVxdWVzdCAqIHJlcXVlc3QsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGRvYywKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1ham9yIHJtYWosCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNaW5vciBybWluID0gWEtNU1Jlc3VsdFR5cGU6Ok5vbmVNaW5vciwKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpOworCXZpcnR1YWwgWEtNU1Jldm9rZVJlc3VsdCAqIGNyZWF0ZVJldm9rZVJlc3VsdCgKKwkJWEtNU1Jldm9rZVJlcXVlc3QgKiByZXF1ZXN0LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKipkb2MsCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNYWpvciBybWFqLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWlub3Igcm1pbiA9IFhLTVNSZXN1bHRUeXBlOjpOb25lTWlub3IsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKTsKKworCXZpcnR1YWwgWEtNU1JlY292ZXJSZXF1ZXN0ICogY3JlYXRlUmVjb3ZlclJlcXVlc3QoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogZG9jLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCk7CisJdmlydHVhbCBYS01TUmVjb3ZlclJlcXVlc3QgKiBjcmVhdGVSZWNvdmVyUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKipkb2MsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKTsKKworCXZpcnR1YWwgWEtNU1JlY292ZXJSZXN1bHQgKiBjcmVhdGVSZWNvdmVyUmVzdWx0KAorCQlYS01TUmVjb3ZlclJlcXVlc3QgKiByZXF1ZXN0LAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRG9jdW1lbnQgKiBkb2MsCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNYWpvciBybWFqLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWlub3Igcm1pbiA9IFhLTVNSZXN1bHRUeXBlOjpOb25lTWlub3IsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKTsKKwl2aXJ0dWFsIFhLTVNSZWNvdmVyUmVzdWx0ICogY3JlYXRlUmVjb3ZlclJlc3VsdCgKKwkJWEtNU1JlY292ZXJSZXF1ZXN0ICogcmVxdWVzdCwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICoqZG9jLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWFqb3Igcm1haiwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIHJtaW4gPSBYS01TUmVzdWx0VHlwZTo6Tm9uZU1pbm9yLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCk7CisKKwl2aXJ0dWFsIFhLTVNSZWlzc3VlUmVxdWVzdCAqIGNyZWF0ZVJlaXNzdWVSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqIGRvYywKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpOworCXZpcnR1YWwgWEtNU1JlaXNzdWVSZXF1ZXN0ICogY3JlYXRlUmVpc3N1ZVJlcXVlc3QoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICoqZG9jLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCk7CisKKwl2aXJ0dWFsIFhLTVNSZWlzc3VlUmVzdWx0ICogY3JlYXRlUmVpc3N1ZVJlc3VsdCgKKwkJWEtNU1JlaXNzdWVSZXF1ZXN0ICogcmVxdWVzdCwKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTURvY3VtZW50ICogZG9jLAorCQlYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWFqb3Igcm1haiwKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIHJtaW4gPSBYS01TUmVzdWx0VHlwZTo6Tm9uZU1pbm9yLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCk7CisJdmlydHVhbCBYS01TUmVpc3N1ZVJlc3VsdCAqIGNyZWF0ZVJlaXNzdWVSZXN1bHQoCisJCVhLTVNSZWlzc3VlUmVxdWVzdCAqIHJlcXVlc3QsCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Eb2N1bWVudCAqKmRvYywKKwkJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1ham9yIHJtYWosCisJCVhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNaW5vciBybWluID0gWEtNU1Jlc3VsdFR5cGU6Ok5vbmVNaW5vciwKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpOworCisJLyogQ29udmVyc2lvbnMgKi8KKwl2aXJ0dWFsIFhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlICogdG9SZXF1ZXN0QWJzdHJhY3RUeXBlKFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlICptc2cpOworCXZpcnR1YWwgWEtNU1Jlc3VsdFR5cGUgKiB0b1Jlc3VsdFR5cGUoWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGUgKm1zZyk7CisKKworCisJLyogRW52aXJvbm1lbnQgTWFuaXB1bGF0aW9uICovCisJdmlydHVhbCB2b2lkIHNldERTSUdOU1ByZWZpeChjb25zdCBYTUxDaCAqIHByZWZpeCk7CisJdmlydHVhbCB2b2lkIHNldEVDTlNQcmVmaXgoY29uc3QgWE1MQ2ggKiBwcmVmaXgpOworCXZpcnR1YWwgdm9pZCBzZXRYUEZOU1ByZWZpeChjb25zdCBYTUxDaCAqIHByZWZpeCk7CisJdmlydHVhbCB2b2lkIHNldFhFTkNOU1ByZWZpeChjb25zdCBYTUxDaCAqIHByZWZpeCk7CisJdmlydHVhbCB2b2lkIHNldFhLTVNOU1ByZWZpeChjb25zdCBYTUxDaCAqIHByZWZpeCk7CisKKworCWZyaWVuZCBjbGFzcyBYU0VDUHJvdmlkZXI7CisJZnJpZW5kIGNsYXNzIFhLTVNDb21wb3VuZFJlcXVlc3RJbXBsOworCWZyaWVuZCBjbGFzcyBYS01TQ29tcG91bmRSZXN1bHRJbXBsOworCitwcml2YXRlOgorCisJLy8gSW50ZXJuYWwgbWV0aG9kcworCXZvaWQgY29weVJlcXVlc3RUb1Jlc3VsdChYS01TUmVxdWVzdEFic3RyYWN0VHlwZSAqIHJlcSwgWEtNU1Jlc3VsdFR5cGUgKiByZXMpOworCS8vIEVudmlyb25tZW50CisJWFNFQ0VudgkJCQkJKiBtcF9lbnY7CisKKwkvLyBVbmltcGxlbWVudGVkCisJWEtNU01lc3NhZ2VGYWN0b3J5SW1wbChjb25zdCBYS01TTWVzc2FnZUZhY3RvcnlJbXBsICYpOworCVhLTVNNZXNzYWdlRmFjdG9yeUltcGwgJiBvcGVyYXRvciA9IChjb25zdCBYS01TTWVzc2FnZUZhY3RvcnlJbXBsICYpOworCit9OworCisjZW5kaWYgLyogWEtNU01FU1NBR0VGQUNUT1JZSU1QTF9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU05vdEJvdW5kQXV0aGVudGljYXRpb24uY3BwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDkyNTIxCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9pbXBsL1hLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uLmNwcApAQCAtMCwwICsxLDE3OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU05vdEJvdW5kQXV0aGVudGljYXRpb25JbXBsIDo9IEltcGxlbWVudGF0aW9uIGZvciBOb3RCb3VuZEF1dGhlbnRpY2F0aW9uIGVsZW1lbnRzCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDRE9NVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TQ29uc3RhbnRzLmhwcD4KKworI2luY2x1ZGUgIlhLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uSW1wbC5ocHAiCisKKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdHJ1Y3QvRGVzdHJ1Y3QKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uSW1wbDo6WEtNU05vdEJvdW5kQXV0aGVudGljYXRpb25JbXBsKGNvbnN0IFhTRUNFbnYgKiBlbnYpIDoKK21wX2VudihlbnYpLAorbXBfbm90Qm91bmRBdXRoZW50aWNhdGlvbkVsZW1lbnQoTlVMTCksCittcF9wcm90b2NvbEF0dHIoTlVMTCksCittcF92YWx1ZUF0dHIoTlVMTCkKK3sKKworfQorCitYS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbkltcGw6OlhLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uSW1wbChjb25zdCBYU0VDRW52ICogZW52LCAKKwkJCQkJCQkJCQkJCQkJCSAgIERPTUVsZW1lbnQgKiBub2RlKSA6CittcF9lbnYoZW52KSwKK21wX25vdEJvdW5kQXV0aGVudGljYXRpb25FbGVtZW50KG5vZGUpLAorbXBfcHJvdG9jb2xBdHRyKE5VTEwpLAorbXBfdmFsdWVBdHRyKE5VTEwpCit7CisKK30KKworWEtNU05vdEJvdW5kQXV0aGVudGljYXRpb25JbXBsOjp+WEtNU05vdEJvdW5kQXV0aGVudGljYXRpb25JbXBsKCkgeworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgTG9hZAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBYS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbkltcGw6OmxvYWQodm9pZCkgeworCisJaWYgKG1wX25vdEJvdW5kQXV0aGVudGljYXRpb25FbGVtZW50ID09IE5VTEwpIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZFhLTVNDaGlsZE5vdEZvdW5kLAorCQkJIlhLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uSW1wbDo6bG9hZCAtIGNhbGxlZCBvbiBlbXB0eSBET00iKTsKKwl9CisKKwltcF9wcm90b2NvbEF0dHIgPSAKKwkJbXBfbm90Qm91bmRBdXRoZW50aWNhdGlvbkVsZW1lbnQtPmdldEF0dHJpYnV0ZU5vZGVOUyhOVUxMLCBYS01TQ29uc3RhbnRzOjpzX3RhZ1Byb3RvY29sKTsKKwltcF92YWx1ZUF0dHIgPSAKKwkJbXBfbm90Qm91bmRBdXRoZW50aWNhdGlvbkVsZW1lbnQtPmdldEF0dHJpYnV0ZU5vZGVOUyhOVUxMLCBYS01TQ29uc3RhbnRzOjpzX3RhZ1ZhbHVlKTsKKworCS8vIFByb3RvY29sIGFuZCBWYWx1ZSAqbXVzdCogYmUgc2V0CisKKwlpZiAobXBfcHJvdG9jb2xBdHRyID09IE5VTEwpIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZFhLTVNDaGlsZE5vdEZvdW5kLAorCQkJIlhLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uOjpsb2FkIC0gUHJvdG9jb2wgYXR0cmlidXRlIG5vdCBmb3VuZCIpOworCX0KKwlpZiAobXBfdmFsdWVBdHRyID09IE5VTEwpIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZFhLTVNDaGlsZE5vdEZvdW5kLAorCQkJIlhLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uOjpsb2FkIC0gVmFsdWUgYXR0cmlidXRlIG5vdCBmb3VuZCIpOworCX0KKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENyZWF0ZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRE9NRWxlbWVudCAqIFhLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uSW1wbDo6Y3JlYXRlQmxhbmtOb3RCb3VuZEF1dGhlbnRpY2F0aW9uKAorCQljb25zdCBYTUxDaCAqIHByb3RvY29sLCBjb25zdCBYTUxDaCAqIHZhbHVlKSB7CisKKwkvLyBHZXQgc29tZSBzZXR1cCB2YWx1ZXMKKwlzYWZlQnVmZmVyIHN0cjsKKwlET01Eb2N1bWVudCAqZG9jID0gbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpOworCWNvbnN0IFhNTENoICogcHJlZml4ID0gbXBfZW52LT5nZXRYS01TTlNQcmVmaXgoKTsKKworCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgWEtNU0NvbnN0YW50czo6c190YWdOb3RCb3VuZEF1dGhlbnRpY2F0aW9uKTsKKworCW1wX25vdEJvdW5kQXV0aGVudGljYXRpb25FbGVtZW50ID0gCisJCWRvYy0+Y3JlYXRlRWxlbWVudE5TKFhLTVNDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhLTVMsIAorCQkJCQkJCQkJCQkJc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCisKKwkvLyBTZXQgVVJJIGFuZCB2YWx1ZQorCW1wX25vdEJvdW5kQXV0aGVudGljYXRpb25FbGVtZW50LT5zZXRBdHRyaWJ1dGVOUyhOVUxMLCAKKwkJWEtNU0NvbnN0YW50czo6c190YWdQcm90b2NvbCwgCisJCXByb3RvY29sKTsKKwltcF9ub3RCb3VuZEF1dGhlbnRpY2F0aW9uRWxlbWVudC0+c2V0QXR0cmlidXRlTlMoTlVMTCwgCisJCVhLTVNDb25zdGFudHM6OnNfdGFnVmFsdWUsIAorCQl2YWx1ZSk7CisKKwltcF9lbnYtPmRvUHJldHR5UHJpbnQobXBfbm90Qm91bmRBdXRoZW50aWNhdGlvbkVsZW1lbnQpOworCisJbXBfcHJvdG9jb2xBdHRyID0gCisJCW1wX25vdEJvdW5kQXV0aGVudGljYXRpb25FbGVtZW50LT5nZXRBdHRyaWJ1dGVOb2RlTlMoTlVMTCwgWEtNU0NvbnN0YW50czo6c190YWdQcm90b2NvbCk7CisJbXBfdmFsdWVBdHRyID0gCisJCW1wX25vdEJvdW5kQXV0aGVudGljYXRpb25FbGVtZW50LT5nZXRBdHRyaWJ1dGVOb2RlTlMoTlVMTCwgWEtNU0NvbnN0YW50czo6c190YWdWYWx1ZSk7CisKKwlyZXR1cm4gbXBfbm90Qm91bmRBdXRoZW50aWNhdGlvbkVsZW1lbnQ7Cit9CisJCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdldCBpbnRlcmZhY2VzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjb25zdCBYTUxDaCAqIFhLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uSW1wbDo6Z2V0UHJvdG9jb2wodm9pZCkgY29uc3QgeworCisJaWYgKG1wX3Byb3RvY29sQXR0ciA9PSBOVUxMKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWRYS01TQ2hpbGROb3RGb3VuZCwKKwkJCSJYS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbkltcGw6OmdldFByb3RvY29sLSBjYWxsZWQgb24gZW1wdHkgRE9NIik7CisJfQorCisJcmV0dXJuIG1wX3Byb3RvY29sQXR0ci0+Z2V0Tm9kZVZhbHVlKCk7CisKK30KKworCitjb25zdCBYTUxDaCAqIFhLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uSW1wbDo6Z2V0VmFsdWUodm9pZCkgY29uc3QgeworCisJaWYgKG1wX3ZhbHVlQXR0ciA9PSBOVUxMKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWRYS01TQ2hpbGROb3RGb3VuZCwKKwkJCSJYS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbkltcGw6OmdldFZhbHVlLSBjYWxsZWQgb24gZW1wdHkgRE9NIik7CisJfQorCisJcmV0dXJuIG1wX3ZhbHVlQXR0ci0+Z2V0Tm9kZVZhbHVlKCk7Cit9CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFNldCBJbnRlcmZhY2VzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIFhLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uSW1wbDo6c2V0UHJvdG9jb2woY29uc3QgWE1MQ2ggKiB1cmkpIHsKKworCW1wX25vdEJvdW5kQXV0aGVudGljYXRpb25FbGVtZW50LT5zZXRBdHRyaWJ1dGVOUyhOVUxMLCAKKwkJWEtNU0NvbnN0YW50czo6c190YWdQcm90b2NvbCwgCisJCXVyaSk7CisJbXBfcHJvdG9jb2xBdHRyID0gCisJCW1wX25vdEJvdW5kQXV0aGVudGljYXRpb25FbGVtZW50LT5nZXRBdHRyaWJ1dGVOb2RlTlMoTlVMTCwgWEtNU0NvbnN0YW50czo6c190YWdQcm90b2NvbCk7CisKK30KKwordm9pZCBYS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbkltcGw6OnNldFZhbHVlKGNvbnN0IFhNTENoICogdmFsdWUpIHsKKworCW1wX25vdEJvdW5kQXV0aGVudGljYXRpb25FbGVtZW50LT5zZXRBdHRyaWJ1dGVOUyhOVUxMLCAKKwkJWEtNU0NvbnN0YW50czo6c190YWdWYWx1ZSwgCisJCXZhbHVlKTsKKwltcF92YWx1ZUF0dHIgPSAKKwkJbXBfbm90Qm91bmRBdXRoZW50aWNhdGlvbkVsZW1lbnQtPmdldEF0dHJpYnV0ZU5vZGVOUyhOVUxMLCBYS01TQ29uc3RhbnRzOjpzX3RhZ1ZhbHVlKTsKK30KKwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uSW1wbC5ocHAgYi9jL3NyYy94a21zL2ltcGwvWEtNU05vdEJvdW5kQXV0aGVudGljYXRpb25JbXBsLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzJkMzYwCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9pbXBsL1hLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uSW1wbC5ocHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU05vdEJvdW5kQXV0aGVudGljYXRpb25JbXBsIDo9IEludGVyZmFjZSBmb3IgTm90Qm91bmRBdXRoZW50aWNhdGlvbiBlbGVtZW50cworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYS01TTk9UQk9VTkRBVVRIRU5USUNBVElPTklNUExfSU5DTFVERQorI2RlZmluZSBYS01TTk9UQk9VTkRBVVRIRU5USUNBVElPTklNUExfSU5DTFVERQorCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorCisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uLmhwcD4KKworY2xhc3MgWEtNU05vdEJvdW5kQXV0aGVudGljYXRpb25JbXBsIDogcHVibGljIFhLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uIHsKKworcHVibGljOgorCisJLyogQ29uc3RydWN0b3JzIGFuZCBEZXN0cnVjdG9ycyAqLworCisJWEtNU05vdEJvdW5kQXV0aGVudGljYXRpb25JbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52CisJKTsKKworCVhLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uSW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudiwgCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogbm9kZQorCSk7CisKKwl2aXJ0dWFsIH5YS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbkltcGwoKTsKKworCS8vIExvYWQKKwl2b2lkIGxvYWQodm9pZCk7CisKKwkvLyBDcmVhdGUKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqCisJCWNyZWF0ZUJsYW5rTm90Qm91bmRBdXRoZW50aWNhdGlvbihjb25zdCBYTUxDaCAqIHByb3RvY29sLCBjb25zdCBYTUxDaCAqIHZhbHVlKTsKKwkKKwkvLyBHZXQgaW50ZXJmYWNlcworCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldFByb3RvY29sKHZvaWQpIGNvbnN0OworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRWYWx1ZSh2b2lkKSBjb25zdDsKKworCS8vIFNldCBNZXRob2RzCisKKwl2aXJ0dWFsIHZvaWQgc2V0UHJvdG9jb2woY29uc3QgWE1MQ2ggKiB1cmkpOworCXZpcnR1YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBYTUxDaCAqIHZhbHVlKTsKKworCS8vQH0KKworcHJpdmF0ZToKKworCWNvbnN0IFhTRUNFbnYgKiBtcF9lbnY7CisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAKKwkJCQkJCSogbXBfbm90Qm91bmRBdXRoZW50aWNhdGlvbkVsZW1lbnQ7CisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZQorCQkJCQkJKiBtcF9wcm90b2NvbEF0dHI7CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTU5vZGUKKwkJCQkJCSogbXBfdmFsdWVBdHRyOworCisJLy8gVW5pbXBsZW1lbnRlZAorCVhLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uSW1wbCh2b2lkKTsKKwlYS01TTm90Qm91bmRBdXRoZW50aWNhdGlvbkltcGwoY29uc3QgWEtNU05vdEJvdW5kQXV0aGVudGljYXRpb25JbXBsICYpOworCVhLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uSW1wbCAmIG9wZXJhdG9yID0gKGNvbnN0IFhLTVNOb3RCb3VuZEF1dGhlbnRpY2F0aW9uSW1wbCAmKTsKKworfTsKKworI2VuZGlmIC8qIFhLTVNOT1RCT1VOREFVVEhFTlRJQ0FUSU9OSU1QTF9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU1BlbmRpbmdSZXF1ZXN0SW1wbC5jcHAgYi9jL3NyYy94a21zL2ltcGwvWEtNU1BlbmRpbmdSZXF1ZXN0SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY1ODExZgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUGVuZGluZ1JlcXVlc3RJbXBsLmNwcApAQCAtMCwwICsxLDE1OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU1BlbmRpbmdSZXF1ZXN0SW1wbCA6PSBJbXBsZW1lbnRhdGlvbiBvZiBQZW5kaW5nUmVxdWVzdCBNZXNzYWdlcworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0NvbnN0YW50cy5ocHA+CisKKyNpbmNsdWRlICJYS01TUGVuZGluZ1JlcXVlc3RJbXBsLmhwcCIKKworI2luY2x1ZGUgPHhlcmNlc2MvZG9tL0RPTS5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdC9EZXN0cnVjdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWEtNU1BlbmRpbmdSZXF1ZXN0SW1wbDo6WEtNU1BlbmRpbmdSZXF1ZXN0SW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudikgOgorbV9yZXF1ZXN0KGVudiksCittX21zZyhtX3JlcXVlc3QubV9tc2cpLAorbXBfcmVzcG9uc2VJZEF0dHIoTlVMTCkgeworfQorCitYS01TUGVuZGluZ1JlcXVlc3RJbXBsOjpYS01TUGVuZGluZ1JlcXVlc3RJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52LCAKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBub2RlKSA6CittX3JlcXVlc3QoZW52LCBub2RlKSwKK21fbXNnKG1fcmVxdWVzdC5tX21zZyksCittcF9yZXNwb25zZUlkQXR0cihOVUxMKSB7CisKK30KKworWEtNU1BlbmRpbmdSZXF1ZXN0SW1wbDo6flhLTVNQZW5kaW5nUmVxdWVzdEltcGwoKSB7CisKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIExvYWQgZnJvbSBET00KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIExvYWQgZWxlbWVudHMKK3ZvaWQgWEtNU1BlbmRpbmdSZXF1ZXN0SW1wbDo6bG9hZCgpIHsKKworCWlmIChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCA9PSBOVUxMKSB7CisKKwkJLy8gQXR0ZW1wdCB0byBsb2FkIGFuIGVtcHR5IGVsZW1lbnQKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsCisJCQkiWEtNU1BlbmRpbmdSZXF1ZXN0Ojpsb2FkIC0gY2FsbGVkIG9uIGVtcHR5IERPTSIpOworCisJfQorCisJaWYgKCFzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZShtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCksIAorCQkJCQkJCQkJWEtNU0NvbnN0YW50czo6c190YWdQZW5kaW5nUmVxdWVzdCkpIHsKKwkKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsCisJCQkiWEtNU1BlbmRpbmdSZXF1ZXN0Ojpsb2FkIC0gY2FsbGVkIGluY29ycmVjdCBub2RlIik7CisJCisJfQorCisJLy8gTG9hZCB0aGUgYmFzZSBtZXNzYWdlCisJbV9yZXF1ZXN0LmxvYWQoKTsKKworCS8vIE5vdyBjaGVjayBmb3IgUmVzcG9uc2VJZCBhdHRyaWJ1dGUKKwltcF9yZXNwb25zZUlkQXR0ciA9IAorCQltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+Z2V0QXR0cmlidXRlTm9kZU5TKE5VTEwsIFhLTVNDb25zdGFudHM6OnNfdGFnUmVzcG9uc2VJZCk7CisKKwlpZiAobXBfcmVzcG9uc2VJZEF0dHIgPT0gTlVMTCkgeworCQkvLyBBdHRlbXB0IHRvIGxvYWQgYW4gZW1wdHkgZWxlbWVudAorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkWEtNU0NoaWxkTm90Rm91bmQsCisJCQkiWEtNU1BlbmRpbmdSZXF1ZXN0Ojpsb2FkIC0gTm8gUmVzcG9uc2VJZCBhdHRyaWJ1dGUgZm91bmQiKTsKKwl9Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ3JlYXRlIGEgYmxhbmsgb25lCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRE9NRWxlbWVudCAqIFhLTVNQZW5kaW5nUmVxdWVzdEltcGw6OmNyZWF0ZUJsYW5rUGVuZGluZ1JlcXVlc3QoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJY29uc3QgWE1MQ2ggKiBpZCkgeworCisJcmV0dXJuIG1fcmVxdWVzdC5jcmVhdGVCbGFua1JlcXVlc3RBYnN0cmFjdFR5cGUoCisJCVhLTVNDb25zdGFudHM6OnNfdGFnUGVuZGluZ1JlcXVlc3QsIHNlcnZpY2UsIGlkKTsKKy8vCXJldHVybiBYS01TUmVxdWVzdEFic3RyYWN0VHlwZUltcGw6OmNyZWF0ZUJsYW5rTWVzc2FnZUFic3RyYWN0VHlwZSgKKy8vCQlNQUtFX1VOSUNPREVfU1RSSU5HKCJWYWxpZGF0ZVJlcXVlc3QiKSwgc2VydmljZSwgaWQpOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgR2V0IGludGVyZmFjZSBtZXRob2RzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6bWVzc2FnZVR5cGUgWEtNU1BlbmRpbmdSZXF1ZXN0SW1wbDo6Z2V0TWVzc2FnZVR5cGUodm9pZCkgeworCisJcmV0dXJuIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbDo6UGVuZGluZ1JlcXVlc3Q7CisKK30KKworCitjb25zdCBYTUxDaCAqIFhLTVNQZW5kaW5nUmVxdWVzdEltcGw6OmdldFJlc3BvbnNlSWQodm9pZCkgY29uc3QgeworCisJaWYgKG1wX3Jlc3BvbnNlSWRBdHRyID09IE5VTEwpIHsKKworCQkvLyBBdHRlbXB0IHJlYWQgd2hlbiBub3QgaW5pdGlhbGlzZWQKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpNZXNzYWdlQWJzdHJhY3RUeXBlRXJyb3IsCisJCQkiWEtNU1BlbmRpbmdSZXF1ZXN0OjpnZXRSZXNwb25zZUlkIC0gY2FsbGVkIG9uIG5vbi1pbml0aWFsaXNlZCBzdHJ1Y3R1cmUiKTsKKworCX0KKworCXJldHVybiAJbXBfcmVzcG9uc2VJZEF0dHItPmdldE5vZGVWYWx1ZSgpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFNldHRlciBtZXRob2RzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIFhLTVNQZW5kaW5nUmVxdWVzdEltcGw6OnNldFJlc3BvbnNlSWQoY29uc3QgWE1MQ2ggKiByZXNwb25zZUlkKSB7CisKKwlpZiAobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQgPT0gTlVMTCkgeworCisJCS8vIEF0dGVtcHQgdXBkYXRlIHdoZW4gbm90IGluaXRpYWxpc2VkCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6TWVzc2FnZUFic3RyYWN0VHlwZUVycm9yLAorCQkJIlhLTVNQZW5kaW5nUmVxdWVzdDo6c2V0UmVzcG9uc2VJZCAtIGNhbGxlZCBvbiBub24taW5pdGlhbGlzZWQgc3RydWN0dXJlIik7CisKKwl9CisKKwltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+c2V0QXR0cmlidXRlTlMoTlVMTCwgWEtNU0NvbnN0YW50czo6c190YWdSZXNwb25zZUlkLCByZXNwb25zZUlkKTsKKwltcF9yZXNwb25zZUlkQXR0ciA9IAorCQltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+Z2V0QXR0cmlidXRlTm9kZU5TKE5VTEwsIFhLTVNDb25zdGFudHM6OnNfdGFnUmVzcG9uc2VJZCk7CisKK30KKworCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU1BlbmRpbmdSZXF1ZXN0SW1wbC5ocHAgYi9jL3NyYy94a21zL2ltcGwvWEtNU1BlbmRpbmdSZXF1ZXN0SW1wbC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQxODc4ZAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUGVuZGluZ1JlcXVlc3RJbXBsLmhwcApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TUGVuZGluZ1JlcXVlc3RJbXBsIDo9IEltcGxlbWVudGF0aW9uIG9mIFBlbmRpbmdSZXF1ZXN0IE1lc3NhZ2VzCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhLTVNQRU5ESU5HUkVRVUVTVElNUExfSU5DTFVERQorI2RlZmluZSBYS01TUEVORElOR1JFUVVFU1RJTVBMX0lOQ0xVREUKKworLy8gWFNFQyBJbmNsdWRlcworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TUGVuZGluZ1JlcXVlc3QuaHBwPgorCisjaW5jbHVkZSAiWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsLmhwcCIKKworY2xhc3MgWEtNU1BlbmRpbmdSZXF1ZXN0SW1wbCA6IHB1YmxpYyBYS01TUGVuZGluZ1JlcXVlc3QgeworCitwdWJsaWM6IAorCVhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbCBtX3JlcXVlc3Q7CisJWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsICZtX21zZzsKK3B1YmxpYzoKKworCVhLTVNQZW5kaW5nUmVxdWVzdEltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYKKwkpOworCisJWEtNU1BlbmRpbmdSZXF1ZXN0SW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudiwgCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogbm9kZQorCSk7CisKKwl2aXJ0dWFsIH5YS01TUGVuZGluZ1JlcXVlc3RJbXBsKCk7CisKKwkvLyBMb2FkIGVsZW1lbnRzCisJdm9pZCBsb2FkKCk7CisKKwkvLyBDcmVhdGlvbgorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogCisJCWNyZWF0ZUJsYW5rUGVuZGluZ1JlcXVlc3QoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpOworCisKKwkvKiBHZXR0ZXIgSW50ZXJmYWNlIE1ldGhvZHMgKi8KKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0UmVzcG9uc2VJZCh2b2lkKSBjb25zdDsKKworCS8qIFNldHRlciBpbnRlcmZhY2UgbWV0aG9kcyAqLworCXZpcnR1YWwgdm9pZCBzZXRSZXNwb25zZUlkKGNvbnN0IFhNTENoICogcmVzcG9uc2VJZCk7CisKKwkvKiBJbXBsZW1lbnRlZCBmcm9tIE1lc3NhZ2VBYnN0cmFjdFR5cGUgKi8KKwl2aXJ0dWFsIG1lc3NhZ2VUeXBlIGdldE1lc3NhZ2VUeXBlKHZvaWQpOworCisJLyogRm9yY2VkIGluaGVyaXRhbmNlIGZyb20gWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsICovCisJWEtNU19NRVNTQUdFQUJTVFJBQ1RZUEVfSU1QTF9NRVRIT0RTCisKKwkvKiBGb3JjZWQgaW5oZXJpdGFuY2UgZnJvbSBSZXF1ZXN0QWJzdHJhY3RUeXBlICovCisJWEtNU19SRVFVRVNUQUJTVFJBQ1RZUEVfSU1QTF9NRVRIT0RTCisKK3ByaXZhdGU6CisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgIERPTUF0dHIKKwkJCQkJCSogbXBfcmVzcG9uc2VJZEF0dHI7CisKKwkvLyBVbmltcGxlbWVudGVkCisJWEtNU1BlbmRpbmdSZXF1ZXN0SW1wbChjb25zdCBYS01TUGVuZGluZ1JlcXVlc3RJbXBsICYpOworCVhLTVNQZW5kaW5nUmVxdWVzdEltcGwgJiBvcGVyYXRvciA9IChjb25zdCBYS01TUGVuZGluZ1JlcXVlc3RJbXBsICYpOworCit9OworCisjZW5kaWYgLyogWEtNU1BFTkRJTkdSRVFVRVNUSU1QTF9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU1Byb3RvdHlwZUtleUJpbmRpbmdJbXBsLmNwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUHJvdG90eXBlS2V5QmluZGluZ0ltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhZGRhZjIKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU1Byb3RvdHlwZUtleUJpbmRpbmdJbXBsLmNwcApAQCAtMCwwICsxLDE4OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU1Byb3RvdHlwZUtleUJpbmRpbmdJbXBsIDo9IEltcGxlbWVudGF0aW9uIG9mIFByb3RvdHlwZUtleUJpbmRpbmcgZWxlbWVudHMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vudi5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNDb25zdGFudHMuaHBwPgorCisjaW5jbHVkZSAiWEtNU1Byb3RvdHlwZUtleUJpbmRpbmdJbXBsLmhwcCIKKyNpbmNsdWRlICJYS01TVmFsaWRpdHlJbnRlcnZhbEltcGwuaHBwIgorCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ29uc3RydWN0L0Rlc3RydWN0CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYS01TUHJvdG90eXBlS2V5QmluZGluZ0ltcGw6OlhLTVNQcm90b3R5cGVLZXlCaW5kaW5nSW1wbChjb25zdCBYU0VDRW52ICogZW52KSA6CitYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGwoZW52KSwKK21wX3ZhbGlkaXR5SW50ZXJ2YWwoTlVMTCksCittcF9yZXZvY2F0aW9uQ29kZUlkZW50aWZpZXJFbGVtZW50KE5VTEwpIHsKKworfQorCitYS01TUHJvdG90eXBlS2V5QmluZGluZ0ltcGw6OlhLTVNQcm90b3R5cGVLZXlCaW5kaW5nSW1wbChjb25zdCBYU0VDRW52ICogZW52LCBET01FbGVtZW50ICogbm9kZSkgOgorWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsKGVudiwgbm9kZSksCittcF92YWxpZGl0eUludGVydmFsKE5VTEwpLAorbXBfcmV2b2NhdGlvbkNvZGVJZGVudGlmaWVyRWxlbWVudChOVUxMKSB7CisKK30KKworWEtNU1Byb3RvdHlwZUtleUJpbmRpbmdJbXBsOjp+WEtNU1Byb3RvdHlwZUtleUJpbmRpbmdJbXBsKCkgeworCisJaWYgKG1wX3ZhbGlkaXR5SW50ZXJ2YWwgIT0gTlVMTCkKKwkJZGVsZXRlIG1wX3ZhbGlkaXR5SW50ZXJ2YWw7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgTG9hZAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBYS01TUHJvdG90eXBlS2V5QmluZGluZ0ltcGw6OmxvYWQodm9pZCkgeworCisJaWYgKG1wX2tleUJpbmRpbmdBYnN0cmFjdFR5cGVFbGVtZW50ID09IE5VTEwpIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZFhLTVNDaGlsZE5vdEZvdW5kLAorCQkJIlhLTVNQcm90b3R5cGVLZXlCaW5kaW5nSW1wbDo6bG9hZCAtIGNhbGxlZCBvbiBlbXB0eSBET00iKTsKKwl9CisKKworCURPTUVsZW1lbnQgKiB0bXBFbHQgPSBmaW5kRmlyc3RFbGVtZW50Q2hpbGQobXBfa2V5QmluZGluZ0Fic3RyYWN0VHlwZUVsZW1lbnQpOworCisJd2hpbGUgKHRtcEVsdCAhPSBOVUxMICYmICFzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZSh0bXBFbHQpLCAKKwkJCQkJCQkJCVhLTVNDb25zdGFudHM6OnNfdGFnVmFsaWRpdHlJbnRlcnZhbCkgJiYKKwkJCQkJCSAgIXN0ckVxdWFscyhnZXRYS01TTG9jYWxOYW1lKHRtcEVsdCksIAorCQkJCQkJCQkJWEtNU0NvbnN0YW50czo6c190YWdSZXZvY2F0aW9uQ29kZUlkZW50aWZpZXIpKQorCQl0bXBFbHQgPSBmaW5kTmV4dEVsZW1lbnRDaGlsZCh0bXBFbHQpOworCQkJCQkJICAKKworCWlmICh0bXBFbHQgIT0gTlVMTCAmJiBzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZSh0bXBFbHQpLCAKKwkJCQkJCQkJCVhLTVNDb25zdGFudHM6OnNfdGFnVmFsaWRpdHlJbnRlcnZhbCkpIHsKKworCQlYU0VDbmV3KG1wX3ZhbGlkaXR5SW50ZXJ2YWwsIFhLTVNWYWxpZGl0eUludGVydmFsSW1wbChtcF9lbnYsIHRtcEVsdCkpOworCQltcF92YWxpZGl0eUludGVydmFsLT5sb2FkKCk7CisKKwkJdG1wRWx0ID0gZmluZE5leHRFbGVtZW50Q2hpbGQodG1wRWx0KTsKKworCX0KKworCWlmICh0bXBFbHQgIT0gTlVMTCAmJiBzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZSh0bXBFbHQpLCAKKwkJCQkJCQkJCVhLTVNDb25zdGFudHM6OnNfdGFnUmV2b2NhdGlvbkNvZGVJZGVudGlmaWVyKSkgeworCisJCW1wX3Jldm9jYXRpb25Db2RlSWRlbnRpZmllckVsZW1lbnQgPSB0bXBFbHQ7CisKKwl9CisKKwlYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGw6OmxvYWQoKTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENyZWF0ZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRE9NRWxlbWVudCAqIFhLTVNQcm90b3R5cGVLZXlCaW5kaW5nSW1wbDo6Y3JlYXRlQmxhbmtQcm90b3R5cGVLZXlCaW5kaW5nKHZvaWQpIHsKKworCURPTUVsZW1lbnQgKiByZXQgPSBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGw6OgorCQkJCWNyZWF0ZUJsYW5rS2V5QmluZGluZ0Fic3RyYWN0VHlwZShYS01TQ29uc3RhbnRzOjpzX3RhZ1Byb3RvdHlwZUtleUJpbmRpbmcpOworCisJLy8gTXVzdCBoYXZlIGFuIElkCisKKwlYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGw6OnNldElkKCk7CisKKwlyZXR1cm4gcmV0OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgR2V0IG1ldGhvZHMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hLTVNWYWxpZGl0eUludGVydmFsICogWEtNU1Byb3RvdHlwZUtleUJpbmRpbmdJbXBsOjpnZXRWYWxpZGl0eUludGVydmFsKHZvaWQpIGNvbnN0IHsKKworCXJldHVybiBtcF92YWxpZGl0eUludGVydmFsOworCit9CisKK2NvbnN0IFhNTENoICogWEtNU1Byb3RvdHlwZUtleUJpbmRpbmdJbXBsOjpnZXRSZXZvY2F0aW9uQ29kZUlkZW50aWZpZXIodm9pZCkgY29uc3QgeworCisJaWYgKG1wX3Jldm9jYXRpb25Db2RlSWRlbnRpZmllckVsZW1lbnQgPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisKKwlET01Ob2RlICogdCA9IGZpbmRGaXJzdENoaWxkT2ZUeXBlKG1wX3Jldm9jYXRpb25Db2RlSWRlbnRpZmllckVsZW1lbnQsIERPTU5vZGU6OlRFWFRfTk9ERSk7CisJaWYgKHQgPT0gTlVMTCkgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkWEtNU0NoaWxkTm90Rm91bmQsCisJCQkiWEtNU1Byb3RvdHlwZUtleUJpbmRpbmdJbXBsOjpnZXRSZXZvY2F0aW9uQ29kZUlkZW50aWZpZXIgLSBleHBlY3RlZCBURVhUIG5vZGUiKTsKKwl9CisJCisJcmV0dXJuIHQtPmdldE5vZGVWYWx1ZSgpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFNldCBNZXRob2RzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIFhLTVNQcm90b3R5cGVLZXlCaW5kaW5nSW1wbDo6c2V0VmFsaWRpdHlJbnRlcnZhbChjb25zdCBYTUxDaCAqIG5vdEJlZm9yZSwgY29uc3QgWE1MQ2ggKiBub3RPbk9yQWZ0ZXIpIHsKKworCVhTRUNuZXcobXBfdmFsaWRpdHlJbnRlcnZhbCwgWEtNU1ZhbGlkaXR5SW50ZXJ2YWxJbXBsKG1wX2VudikpOworCURPTUVsZW1lbnQgKiBlID0gbXBfdmFsaWRpdHlJbnRlcnZhbC0+Y3JlYXRlQmxhbmtWYWxpZGl0eUludGVydmFsKG5vdEJlZm9yZSwgbm90T25PckFmdGVyKTsKKworCS8vIE5vdyBpbnNlcnQKKwlpZiAobXBfcmV2b2NhdGlvbkNvZGVJZGVudGlmaWVyRWxlbWVudCAhPSBOVUxMKSB7CisJCW1wX2tleUJpbmRpbmdBYnN0cmFjdFR5cGVFbGVtZW50LT5pbnNlcnRCZWZvcmUoZSwgbXBfcmV2b2NhdGlvbkNvZGVJZGVudGlmaWVyRWxlbWVudCk7CisJCWlmIChtcF9lbnYtPmdldFByZXR0eVByaW50RmxhZygpID09IHRydWUpIHsKKwkJCW1wX2tleUJpbmRpbmdBYnN0cmFjdFR5cGVFbGVtZW50LT5pbnNlcnRCZWZvcmUoCisJCQkJbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpLT5jcmVhdGVUZXh0Tm9kZShEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJOTCksCisJCQkJbXBfcmV2b2NhdGlvbkNvZGVJZGVudGlmaWVyRWxlbWVudCk7CisJCX0KKwl9CisJZWxzZQorCQltcF9rZXlCaW5kaW5nQWJzdHJhY3RUeXBlRWxlbWVudC0+YXBwZW5kQ2hpbGQoZSk7CisKK30KKwordm9pZCBYS01TUHJvdG90eXBlS2V5QmluZGluZ0ltcGw6OnNldFJldm9jYXRpb25Db2RlSWRlbnRpZmllcihjb25zdCBYTUxDaCAqIGlkZW50aWZpZXIpIHsKKworCXNhZmVCdWZmZXIgc3RyOworCURPTURvY3VtZW50ICpkb2MgPSBtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCk7CisJY29uc3QgWE1MQ2ggKiBwcmVmaXggPSBtcF9lbnYtPmdldFhLTVNOU1ByZWZpeCgpOworCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCBYS01TQ29uc3RhbnRzOjpzX3RhZ1Jldm9jYXRpb25Db2RlSWRlbnRpZmllcik7CisKKwltcF9yZXZvY2F0aW9uQ29kZUlkZW50aWZpZXJFbGVtZW50ID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoWEtNU0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWEtNUywgCisJCQkJCQkJCQkJCQlzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisKKwltcF9rZXlCaW5kaW5nQWJzdHJhY3RUeXBlRWxlbWVudC0+YXBwZW5kQ2hpbGQobXBfcmV2b2NhdGlvbkNvZGVJZGVudGlmaWVyRWxlbWVudCk7CisJbXBfZW52LT5kb1ByZXR0eVByaW50KG1wX2tleUJpbmRpbmdBYnN0cmFjdFR5cGVFbGVtZW50KTsKKworCW1wX3Jldm9jYXRpb25Db2RlSWRlbnRpZmllckVsZW1lbnQtPmFwcGVuZENoaWxkKAorCQltcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCktPmNyZWF0ZVRleHROb2RlKGlkZW50aWZpZXIpKTsKKworfQorCisKZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvaW1wbC9YS01TUHJvdG90eXBlS2V5QmluZGluZ0ltcGwuaHBwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNQcm90b3R5cGVLZXlCaW5kaW5nSW1wbC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM5MGFjOQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUHJvdG90eXBlS2V5QmluZGluZ0ltcGwuaHBwCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNQcm90b3R5cGVLZXlCaW5kaW5nSW1wbCA6PSBJbXBsZW1lbnRhdGlvbiBvZiBQcm90b3R5cGVLZXlCaW5kaW5nIGVsZW1lbnRzCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhLTVNQUk9UT1RZUEVLRVlCSU5ESU5HSU1QTF9JTkNMVURFCisjZGVmaW5lIFhLTVNQUk9UT1RZUEVLRVlCSU5ESU5HSU1QTF9JTkNMVURFCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1Byb3RvdHlwZUtleUJpbmRpbmcuaHBwPgorCisjaW5jbHVkZSAiWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsLmhwcCIKKworY2xhc3MgWEtNU1ZhbGlkaXR5SW50ZXJ2YWxJbXBsOworCitjbGFzcyBYS01TUHJvdG90eXBlS2V5QmluZGluZ0ltcGwgOiBwdWJsaWMgWEtNU1Byb3RvdHlwZUtleUJpbmRpbmcsIHB1YmxpYyBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGwgeworCitwdWJsaWM6CisKKwkvKiBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisKKwlYS01TUHJvdG90eXBlS2V5QmluZGluZ0ltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYKKwkpOworCisJWEtNU1Byb3RvdHlwZUtleUJpbmRpbmdJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52LCAKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBub2RlCisJKTsKKworCXZpcnR1YWwgflhLTVNQcm90b3R5cGVLZXlCaW5kaW5nSW1wbCgpOworCisJLy8gTG9hZAorCXZvaWQgbG9hZCh2b2lkKTsKKworCS8vIENyZWF0ZQorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICoKKwkJY3JlYXRlQmxhbmtQcm90b3R5cGVLZXlCaW5kaW5nKHZvaWQpOworCisJLy8gR2V0IG1ldGhvZHMKKworCXZpcnR1YWwgWEtNU1ZhbGlkaXR5SW50ZXJ2YWwgKiBnZXRWYWxpZGl0eUludGVydmFsKHZvaWQpIGNvbnN0OworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRSZXZvY2F0aW9uQ29kZUlkZW50aWZpZXIodm9pZCkgY29uc3Q7CisKKwkvLyBzZXQgbWV0aG9kcworCisJdmlydHVhbCB2b2lkIHNldFZhbGlkaXR5SW50ZXJ2YWwoY29uc3QgWE1MQ2ggKiBub3RCZWZvcmUsIGNvbnN0IFhNTENoICogbm90T25PckFmdGVyKTsKKwl2aXJ0dWFsIHZvaWQgc2V0UmV2b2NhdGlvbkNvZGVJZGVudGlmaWVyKGNvbnN0IFhNTENoICogaWRlbnRpZmllcik7CisKKwkvLyBJbXBvcnQgbWV0aG9kcyBmcm9tIFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlCisJWEtNU19LRVlCSU5ESU5HQUJTVFJBQ1RZUEVfSU1QTF9NRVRIT0RTCisKK3ByaXZhdGU6CisKKwlYS01TVmFsaWRpdHlJbnRlcnZhbEltcGwKKwkJCQkqIG1wX3ZhbGlkaXR5SW50ZXJ2YWw7CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgCisJCQkJKiBtcF9yZXZvY2F0aW9uQ29kZUlkZW50aWZpZXJFbGVtZW50OworCisJLy8gVW5pbXBsZW1lbnRlZAorCVhLTVNQcm90b3R5cGVLZXlCaW5kaW5nSW1wbCh2b2lkKTsKKwlYS01TUHJvdG90eXBlS2V5QmluZGluZ0ltcGwoY29uc3QgWEtNU1Byb3RvdHlwZUtleUJpbmRpbmdJbXBsICYpOworCVhLTVNQcm90b3R5cGVLZXlCaW5kaW5nSW1wbCAmIG9wZXJhdG9yID0gKGNvbnN0IFhLTVNQcm90b3R5cGVLZXlCaW5kaW5nSW1wbCAmKTsKKworfTsKKworI2VuZGlmIC8qIFhLTVNQUk9UT1RZUEVLRVlCSU5ESU5HSU1QTF9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU1F1ZXJ5S2V5QmluZGluZ0ltcGwuY3BwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNRdWVyeUtleUJpbmRpbmdJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzIyNjNiCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9pbXBsL1hLTVNRdWVyeUtleUJpbmRpbmdJbXBsLmNwcApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TUXVlcnlLZXlCaW5kaW5nSW1wbCA6PSBJbXBsZW1lbnRhdGlvbiBmb3IgUXVlcnlLZXlCaW5kaW5nCisgKgorICogJElkJAorICoKKyAqLworCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0NvbnN0YW50cy5ocHA+CisKKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPgorCisjaW5jbHVkZSAiWEtNU1F1ZXJ5S2V5QmluZGluZ0ltcGwuaHBwIgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdHJ1Y3QvRGVzdHJ1Y3QKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hLTVNRdWVyeUtleUJpbmRpbmdJbXBsOjpYS01TUXVlcnlLZXlCaW5kaW5nSW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudiAKKwkJKSA6CitYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGwoZW52KSB7CisKK30KKworWEtNU1F1ZXJ5S2V5QmluZGluZ0ltcGw6OlhLTVNRdWVyeUtleUJpbmRpbmdJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52LCAKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBub2RlCisJCSkgOgorWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsKGVudiwgbm9kZSkgeworCit9CisKK1hLTVNRdWVyeUtleUJpbmRpbmdJbXBsOjp+WEtNU1F1ZXJ5S2V5QmluZGluZ0ltcGwoKSB7fQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIExvYWQgZnJvbSBET00KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgWEtNU1F1ZXJ5S2V5QmluZGluZ0ltcGw6OmxvYWQodm9pZCkgeworCisJaWYgKG1wX2tleUJpbmRpbmdBYnN0cmFjdFR5cGVFbGVtZW50ID09IE5VTEwpIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZFhLTVNDaGlsZE5vdEZvdW5kLAorCQkJIlhLTVNRdWVyeUtleUJpbmRpbmdJbXBsOjpsb2FkIC0gY2FsbGVkIG9uIGVtcHR5IERPTSIpOworCX0KKworCVhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6bG9hZCgpOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ3JlYXRlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitET01FbGVtZW50ICogWEtNU1F1ZXJ5S2V5QmluZGluZ0ltcGw6OmNyZWF0ZUJsYW5rUXVlcnlLZXlCaW5kaW5nKHZvaWQpIHsKKworCXJldHVybiBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGw6OgorCQkJCWNyZWF0ZUJsYW5rS2V5QmluZGluZ0Fic3RyYWN0VHlwZShYS01TQ29uc3RhbnRzOjpzX3RhZ1F1ZXJ5S2V5QmluZGluZyk7CisKK30KKwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNRdWVyeUtleUJpbmRpbmdJbXBsLmhwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUXVlcnlLZXlCaW5kaW5nSW1wbC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVjY2YzYQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUXVlcnlLZXlCaW5kaW5nSW1wbC5ocHAKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU1F1ZXJ5S2V5QmluZGluZ0ltcGwgOj0gSW1wbGVtZW50YXRpb24gZm9yIFF1ZXJ5S2V5QmluZGluZworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYS01TUVVFUllLRVlCSU5ESU5HSU1QTF9JTkNMVURFCisjZGVmaW5lIFhLTVNRVUVSWUtFWUJJTkRJTkdJTVBMX0lOQ0xVREUKKworLy8gWFNFQyBJbmNsdWRlcworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TUXVlcnlLZXlCaW5kaW5nLmhwcD4KKworI2luY2x1ZGUgIlhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbC5ocHAiCisKK2NsYXNzIFhLTVNRdWVyeUtleUJpbmRpbmdJbXBsIDogcHVibGljIFhLTVNRdWVyeUtleUJpbmRpbmcsIHB1YmxpYyBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGwgeworCitwdWJsaWM6CisKKwlYS01TUXVlcnlLZXlCaW5kaW5nSW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudgorCSk7CisKKwlYS01TUXVlcnlLZXlCaW5kaW5nSW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudiwgCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogbm9kZQorCSk7CisKKwl2aXJ0dWFsIH5YS01TUXVlcnlLZXlCaW5kaW5nSW1wbCgpIDsKKworCS8vIExvYWQKKwl2b2lkIGxvYWQodm9pZCk7CisKKwkvLyBDcmVhdGUKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqCisJCWNyZWF0ZUJsYW5rUXVlcnlLZXlCaW5kaW5nKHZvaWQpOworCisJLy8gSW1wb3J0IG1ldGhvZHMgZnJvbSBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZQorCVhLTVNfS0VZQklORElOR0FCU1RSQUNUWVBFX0lNUExfTUVUSE9EUworCitwcml2YXRlOgorCisJLy8gVW5pbXBsZW1lbnRlZAorCVhLTVNRdWVyeUtleUJpbmRpbmdJbXBsKHZvaWQpOworCVhLTVNRdWVyeUtleUJpbmRpbmdJbXBsKGNvbnN0IFhLTVNRdWVyeUtleUJpbmRpbmdJbXBsICYpOworCVhLTVNRdWVyeUtleUJpbmRpbmdJbXBsICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU1F1ZXJ5S2V5QmluZGluZ0ltcGwgJik7CisKK307CisKKyNlbmRpZiAvKiBYS01TUVVFUllLRVlCSU5ESU5HX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvaW1wbC9YS01TUlNBS2V5UGFpckltcGwuY3BwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNSU0FLZXlQYWlySW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg4OGRmMQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUlNBS2V5UGFpckltcGwuY3BwCkBAIC0wLDAgKzEsMTc4IEBACisvKg0KKyAqIENvcHlyaWdodCAyMDA2IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKg0KKyAqIFhTRUMNCisgKg0KKyAqIFhLTVNSU0FLZXlQYWlySW1wbCA6PSBJbXBsZW1lbnRhdGlvbiBjbGFzcyBmb3IgUlNBS2V5UGFpciBlbGVtZW50cw0KKyAqDQorICogJElkOiQNCisgKg0KKyAqLw0KKw0KKy8vIFhTRUMgSW5jbHVkZXMNCisNCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+DQorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+DQorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0NvbnN0YW50cy5ocHA+DQorDQorDQorI2luY2x1ZGUgIlhLTVNSU0FLZXlQYWlySW1wbC5ocHAiDQorDQorI2luY2x1ZGUgPHhlcmNlc2MvZG9tL0RPTS5ocHA+DQorI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxVbmlEZWZzLmhwcD4NCisNCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UNCisNCisjZGVmaW5lIFhLTVNfR0VUX1JTQV9WQUwoWFZBTCkgZSA9IChET01FbGVtZW50ICopIGZpbmROZXh0RWxlbWVudENoaWxkKGUpOyBcDQorCWlmIChlID09IE5VTEwgfHwgIXN0ckVxdWFscyhnZXRYS01TTG9jYWxOYW1lKGUpLCBYS01TQ29uc3RhbnRzOjpzX3RhZyMjWFZBTCkgfHwgXA0KKwkJKCh0ID0gZmluZEZpcnN0Q2hpbGRPZlR5cGUoZSwgRE9NTm9kZTo6VEVYVF9OT0RFKSkgPT0gTlVMTCkpIHsgXA0KKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZFhLTVNDaGlsZE5vdEZvdW5kLCBcDQorCQkJIlhLTVNSU0FLZXlQYWlyOjpsb2FkIC0gRXhwZWN0ZWQgPFhWQUw+IG5vZGUiKTsgXA0KKwl9IFwNCisJbXBfIyNYVkFMID0gdC0+Z2V0Tm9kZVZhbHVlKCk7DQorDQorI2RlZmluZSBYS01TX1NFVF9SU0FfVkFMKFhWQUwpIG1ha2VRTmFtZShzdHIsIHByZWZpeCwgWEtNU0NvbnN0YW50czo6c190YWcjI1hWQUwpOyBcDQorCWUgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TLCBcDQorCQkJCQkJCQkJCQkJc3RyLnJhd1hNTENoQnVmZmVyKCkpO1wNCisJZS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZShYVkFMKSk7XA0KKwltcF9SU0FLZXlQYWlyRWxlbWVudC0+YXBwZW5kQ2hpbGQoZSk7XA0KKwltcF9lbnYtPmRvUHJldHR5UHJpbnQobXBfUlNBS2V5UGFpckVsZW1lbnQpOw0KKw0KKyNkZWZpbmUgWEtNU19SRVRfUlNBX1ZBTChYVkFMKSBjb25zdCBYTUxDaCAqIFhLTVNSU0FLZXlQYWlySW1wbDo6Z2V0IyNYVkFMICh2b2lkKSBjb25zdCB7XA0KKwlyZXR1cm4gbXBfIyNYVkFMO30NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vICAgICAgICAgICBDb25zdHJ1Y3QvRGVzdHJ1Y3QNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK1hLTVNSU0FLZXlQYWlySW1wbDo6WEtNU1JTQUtleVBhaXJJbXBsKGNvbnN0IFhTRUNFbnYgKiBlbnYpIDoNCittcF9lbnYoZW52KSwNCittcF9SU0FLZXlQYWlyRWxlbWVudChOVUxMKSwNCittcF9Nb2R1bHVzKE5VTEwpLA0KK21wX0V4cG9uZW50KE5VTEwpLA0KK21wX1AoTlVMTCksDQorbXBfUShOVUxMKSwNCittcF9EUChOVUxMKSwNCittcF9EUShOVUxMKSwNCittcF9JbnZlcnNlUShOVUxMKSwNCittcF9EKE5VTEwpIHt9DQorDQorWEtNU1JTQUtleVBhaXJJbXBsOjpYS01TUlNBS2V5UGFpckltcGwoY29uc3QgWFNFQ0VudiAqIGVudiwgRE9NRWxlbWVudCAqIG5vZGUpIDoNCittcF9lbnYoZW52KSwNCittcF9SU0FLZXlQYWlyRWxlbWVudChub2RlKSwNCittcF9Nb2R1bHVzKE5VTEwpLA0KK21wX0V4cG9uZW50KE5VTEwpLA0KK21wX1AoTlVMTCksDQorbXBfUShOVUxMKSwNCittcF9EUChOVUxMKSwNCittcF9EUShOVUxMKSwNCittcF9JbnZlcnNlUShOVUxMKSwNCittcF9EKE5VTEwpIHt9DQorDQorDQorWEtNU1JTQUtleVBhaXJJbXBsOjp+WEtNU1JTQUtleVBhaXJJbXBsKCkge30NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vICAgICAgICAgICBsb2FkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCit2b2lkIFhLTVNSU0FLZXlQYWlySW1wbDo6bG9hZCh2b2lkKSB7DQorDQorCWlmIChtcF9SU0FLZXlQYWlyRWxlbWVudCA9PSBOVUxMKSB7DQorDQorCQkvLyBBdHRlbXB0IHRvIGxvYWQgYW4gZW1wdHkgZWxlbWVudA0KKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsDQorCQkJIlhLTVNSU0FLZXlQYWlyOjpsb2FkIC0gY2FsbGVkIG9uIGVtcHR5IERPTSIpOw0KKw0KKwl9DQorDQorCURPTUVsZW1lbnQgKiBlOw0KKwlET01Ob2RlICogdDsNCisJLy8gQ2hlY2sgZm9yIE1vZHVsdXMgbm9kZQ0KKwllID0gKERPTUVsZW1lbnQgKikgZmluZEZpcnN0RWxlbWVudENoaWxkKG1wX1JTQUtleVBhaXJFbGVtZW50KTsNCisJaWYgKGUgPT0gTlVMTCB8fCAhc3RyRXF1YWxzKGdldFhLTVNMb2NhbE5hbWUoZSksIFhLTVNDb25zdGFudHM6OnNfdGFnTW9kdWx1cykgfHwNCisJCSgodCA9IGZpbmRGaXJzdENoaWxkT2ZUeXBlKGUsIERPTU5vZGU6OlRFWFRfTk9ERSkpID09IE5VTEwpKSB7DQorDQorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkWEtNU0NoaWxkTm90Rm91bmQsDQorCQkJIlhLTVNSU0FLZXlQYWlyOjpsb2FkIC0gRXhwZWN0ZWQgPE1vZHVsdXM+IG5vZGUiKTsNCisNCisJfQ0KKwltcF9Nb2R1bHVzID0gdC0+Z2V0Tm9kZVZhbHVlKCk7DQorDQorCVhLTVNfR0VUX1JTQV9WQUwoRXhwb25lbnQpOw0KKwlYS01TX0dFVF9SU0FfVkFMKFApOw0KKwlYS01TX0dFVF9SU0FfVkFMKFEpOw0KKwlYS01TX0dFVF9SU0FfVkFMKERQKTsNCisJWEtNU19HRVRfUlNBX1ZBTChEUSk7DQorCVhLTVNfR0VUX1JTQV9WQUwoSW52ZXJzZVEpOw0KKwlYS01TX0dFVF9SU0FfVkFMKEQpOw0KKw0KK30NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vICAgICAgICAgICBCdWlsZCBmcm9tIFNjcmF0Y2gNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK0RPTUVsZW1lbnQgKiBYS01TUlNBS2V5UGFpckltcGw6OmNyZWF0ZUJsYW5rWEtNU1JTQUtleVBhaXJJbXBsKA0KKwkJCWNvbnN0IFhNTENoICogTW9kdWx1cywgDQorCQkJY29uc3QgWE1MQ2ggKiBFeHBvbmVudCwgDQorCQkJY29uc3QgWE1MQ2ggKiBQLCANCisJCQljb25zdCBYTUxDaCAqIFEsIA0KKwkJCWNvbnN0IFhNTENoICogRFAsIA0KKwkJCWNvbnN0IFhNTENoICogRFEsIA0KKwkJCWNvbnN0IFhNTENoICogSW52ZXJzZVEsIA0KKwkJCWNvbnN0IFhNTENoICogRCkgew0KKw0KKwkvLyBHZXQgc29tZSBzZXR1cCB2YWx1ZXMNCisJc2FmZUJ1ZmZlciBzdHI7DQorCURPTURvY3VtZW50ICpkb2MgPSBtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCk7DQorCWNvbnN0IFhNTENoICogcHJlZml4ID0gbXBfZW52LT5nZXRYS01TTlNQcmVmaXgoKTsNCisNCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCBYS01TQ29uc3RhbnRzOjpzX3RhZ1JTQUtleVBhaXIpOw0KKw0KKwltcF9SU0FLZXlQYWlyRWxlbWVudCA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKFhLTVNDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhLTVMsIA0KKwkJCQkJCQkJCQkJCXN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsNCisNCisJbXBfZW52LT5kb1ByZXR0eVByaW50KG1wX1JTQUtleVBhaXJFbGVtZW50KTsNCisNCisJLyogTm93IGFkZCB0aGUgVmFsdWVzIGVsZW1lbnQgKi8NCisJRE9NRWxlbWVudCAqIGU7DQorCVhLTVNfU0VUX1JTQV9WQUwoTW9kdWx1cykNCisJWEtNU19TRVRfUlNBX1ZBTChFeHBvbmVudCkNCisJWEtNU19TRVRfUlNBX1ZBTChQKQ0KKwlYS01TX1NFVF9SU0FfVkFMKFEpDQorCVhLTVNfU0VUX1JTQV9WQUwoRFApDQorCVhLTVNfU0VUX1JTQV9WQUwoRFEpDQorCVhLTVNfU0VUX1JTQV9WQUwoSW52ZXJzZVEpDQorCVhLTVNfU0VUX1JTQV9WQUwoRCkNCisNCisJcmV0dXJuIG1wX1JTQUtleVBhaXJFbGVtZW50Ow0KKw0KK30NCisNCitYS01TX1JFVF9SU0FfVkFMKE1vZHVsdXMpDQorWEtNU19SRVRfUlNBX1ZBTChFeHBvbmVudCkNCitYS01TX1JFVF9SU0FfVkFMKFApDQorWEtNU19SRVRfUlNBX1ZBTChRKQ0KK1hLTVNfUkVUX1JTQV9WQUwoRFApDQorWEtNU19SRVRfUlNBX1ZBTChEUSkNCitYS01TX1JFVF9SU0FfVkFMKEludmVyc2VRKQ0KK1hLTVNfUkVUX1JTQV9WQUwoRCkNCisNCisNCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU1JTQUtleVBhaXJJbXBsLmhwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUlNBS2V5UGFpckltcGwuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmM2M1M2YKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU1JTQUtleVBhaXJJbXBsLmhwcApAQCAtMCwwICsxLDEwMSBAQAorLyoNCisgKiBDb3B5cmlnaHQgMjAwNiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoNCisgKiBYU0VDDQorICoNCisgKiBYS01TUlNBS2V5UGFpckltcGwgOj0gSW1wbGVtZW50YXRpb24gY2xhc3MgZm9yIFJTQUtleVBhaXIgZWxlbWVudHMNCisgKg0KKyAqICRJZDokDQorICoNCisgKi8NCisNCisjaWZuZGVmIFhLTVNSU0FLRVlQQUlSSU1QTF9JTkNMVURFDQorI2RlZmluZSBYS01TUlNBS0VZUEFJUklNUExfSU5DTFVERQ0KKw0KKy8vIFhTRUMgSW5jbHVkZXMNCisNCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1JTQUtleVBhaXIuaHBwPg0KKw0KK2NsYXNzIFhTRUNFbnY7DQorDQorY2xhc3MgWEtNU1JTQUtleVBhaXJJbXBsIDogcHVibGljIFhLTVNSU0FLZXlQYWlyIHsNCisNCitwdWJsaWM6DQorDQorCS8qIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8NCisNCisJWEtNU1JTQUtleVBhaXJJbXBsKA0KKwkJY29uc3QgWFNFQ0VudiAqIGVudg0KKwkpOw0KKw0KKwlYS01TUlNBS2V5UGFpckltcGwoDQorCQljb25zdCBYU0VDRW52ICogZW52LCANCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogbm9kZQ0KKwkpOw0KKw0KKwl2aXJ0dWFsIH5YS01TUlNBS2V5UGFpckltcGwoKSA7DQorDQorCS8vIGxvYWQNCisJdm9pZCBsb2FkKHZvaWQpOw0KKw0KKwkvLyBDcmVhdGUgZnJvbSBzY3JhdGNoIC0gdGFnIGlzIHRoZSBlbGVtZW50IG5hbWUgdG8gY3JlYXRlDQorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogDQorCQljcmVhdGVCbGFua1hLTVNSU0FLZXlQYWlySW1wbCgNCisJCQljb25zdCBYTUxDaCAqIE1vZHVsdXMsIA0KKwkJCWNvbnN0IFhNTENoICogRXhwb25lbnQsIA0KKwkJCWNvbnN0IFhNTENoICogUCwgDQorCQkJY29uc3QgWE1MQ2ggKiBRLCANCisJCQljb25zdCBYTUxDaCAqIERPLCANCisJCQljb25zdCBYTUxDaCAqIERRLCANCisJCQljb25zdCBYTUxDaCAqIEludmVyc2VRLCANCisJCQljb25zdCBYTUxDaCAqIEQpOw0KKw0KKwkvLyBJbnRlcmZhY2UgbWV0aG9kcw0KKw0KKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0TW9kdWx1cyh2b2lkKSBjb25zdDsNCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldEV4cG9uZW50KHZvaWQpIGNvbnN0Ow0KKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0UCh2b2lkKSBjb25zdDsNCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldFEodm9pZCkgY29uc3Q7DQorCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXREUCh2b2lkKSBjb25zdDsNCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldERRKHZvaWQpIGNvbnN0Ow0KKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0SW52ZXJzZVEodm9pZCkgY29uc3Q7DQorCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXREKHZvaWQpIGNvbnN0Ow0KKw0KK3ByaXZhdGU6DQorDQorCWNvbnN0IFhTRUNFbnYJCSogbXBfZW52Ow0KKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCANCisJCQkJCQkJKiBtcF9SU0FLZXlQYWlyRWxlbWVudDsNCisNCisJY29uc3QgWE1MQ2ggKiBtcF9Nb2R1bHVzOw0KKwljb25zdCBYTUxDaCAqIG1wX0V4cG9uZW50Ow0KKwljb25zdCBYTUxDaCAqIG1wX1A7DQorCWNvbnN0IFhNTENoICogbXBfUTsNCisJY29uc3QgWE1MQ2ggKiBtcF9EUDsNCisJY29uc3QgWE1MQ2ggKiBtcF9EUTsNCisJY29uc3QgWE1MQ2ggKiBtcF9JbnZlcnNlUTsNCisJY29uc3QgWE1MQ2ggKiBtcF9EOw0KKw0KKwkvLyBVbmltcGxlbWVudGVkDQorCVhLTVNSU0FLZXlQYWlySW1wbCgpOw0KKwlYS01TUlNBS2V5UGFpckltcGwoY29uc3QgWEtNU1JTQUtleVBhaXJJbXBsICYpOw0KKwlYS01TUlNBS2V5UGFpckltcGwgJiBvcGVyYXRvciA9IChjb25zdCBYS01TUlNBS2V5UGFpckltcGwgJik7DQorDQorfTsNCisNCisjZW5kaWYgLyogWEtNU1JTQUtFWVBBSVJJTVBMX0lOQ0xVREUgKi8NCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU1JlY292ZXJLZXlCaW5kaW5nSW1wbC5jcHAgYi9jL3NyYy94a21zL2ltcGwvWEtNU1JlY292ZXJLZXlCaW5kaW5nSW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRjNGM2ZQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUmVjb3ZlcktleUJpbmRpbmdJbXBsLmNwcApAQCAtMCwwICsxLDEyNyBAQAorLyoNCisgKiBDb3B5cmlnaHQgMjAwNiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoNCisgKiBYU0VDDQorICoNCisgKiBYS01TUmVjb3ZlcktleUJpbmRpbmdJbXBsIDo9IEltcGxlbWVudGF0aW9uIGZvciBSZWNvdmVyS2V5QmluZGluZw0KKyAqDQorICogJElkJA0KKyAqDQorICovDQorDQorLy8gWFNFQyBJbmNsdWRlcw0KKw0KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+DQorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+DQorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0NvbnN0YW50cy5ocHA+DQorDQorI2luY2x1ZGUgPHhlcmNlc2MvZG9tL0RPTS5ocHA+DQorDQorI2luY2x1ZGUgIlhLTVNSZWNvdmVyS2V5QmluZGluZ0ltcGwuaHBwIg0KKyNpbmNsdWRlICJYS01TU3RhdHVzSW1wbC5ocHAiDQorDQorWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyAgICAgICAgICAgQ29uc3RydWN0L0Rlc3RydWN0DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitYS01TUmVjb3ZlcktleUJpbmRpbmdJbXBsOjpYS01TUmVjb3ZlcktleUJpbmRpbmdJbXBsKA0KKwkJY29uc3QgWFNFQ0VudiAqIGVudiANCisJCSkgOg0KK1hLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbChlbnYpIHsNCisJbXBfc3RhdHVzID0gTlVMTDsNCit9DQorDQorWEtNU1JlY292ZXJLZXlCaW5kaW5nSW1wbDo6WEtNU1JlY292ZXJLZXlCaW5kaW5nSW1wbCgNCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYsIA0KKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBub2RlDQorCQkpIDoNCitYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGwoZW52LCBub2RlKSB7DQorDQorCW1wX3N0YXR1cyA9IE5VTEw7DQorfQ0KKw0KK1hLTVNSZWNvdmVyS2V5QmluZGluZ0ltcGw6On5YS01TUmVjb3ZlcktleUJpbmRpbmdJbXBsKCkgew0KKw0KKwlpZiAobXBfc3RhdHVzICE9IE5VTEwpDQorCQlkZWxldGUgbXBfc3RhdHVzOw0KKw0KK30NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vICAgICAgICAgICBMb2FkIGZyb20gRE9NDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCit2b2lkIFhLTVNSZWNvdmVyS2V5QmluZGluZ0ltcGw6OmxvYWQodm9pZCkgew0KKw0KKwlpZiAobXBfa2V5QmluZGluZ0Fic3RyYWN0VHlwZUVsZW1lbnQgPT0gTlVMTCkgew0KKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZFhLTVNDaGlsZE5vdEZvdW5kLA0KKwkJCSJYS01TUmVjb3ZlcktleUJpbmRpbmdJbXBsOjpsb2FkIC0gY2FsbGVkIG9uIGVtcHR5IERPTSIpOw0KKwl9DQorDQorCVhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6bG9hZCgpOw0KKw0KKwkvKiBGaW5kIHRoZSBzdGF0dXMgZWxlbWVudCAqLw0KKwlET01Ob2RlTGlzdCAqIG5sID0gbXBfa2V5QmluZGluZ0Fic3RyYWN0VHlwZUVsZW1lbnQtPmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoDQorCQlYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TLA0KKwkJWEtNU0NvbnN0YW50czo6c190YWdTdGF0dXMpOw0KKw0KKwlpZiAobmwgPT0gTlVMTCB8fCBubC0+Z2V0TGVuZ3RoKCkgIT0gMSkgew0KKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZFhLTVNDaGlsZE5vdEZvdW5kLA0KKwkJCSJYS01TUmVjb3ZlcktleUJpbmRpbmc6OmxvYWQgLSBTdGF0dXMgdmFsdWUgbm90IGZvdW5kIik7DQorCX0NCisNCisJWFNFQ25ldyhtcF9zdGF0dXMsIFhLTVNTdGF0dXNJbXBsKG1wX2VudiwgKERPTUVsZW1lbnQqKSBubC0+aXRlbSgwKSkpOw0KKwltcF9zdGF0dXMtPmxvYWQoKTsNCisNCit9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyAgICAgICAgICAgQ3JlYXRlDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitET01FbGVtZW50ICogWEtNU1JlY292ZXJLZXlCaW5kaW5nSW1wbDo6Y3JlYXRlQmxhbmtSZWNvdmVyS2V5QmluZGluZyhYS01TU3RhdHVzOjpTdGF0dXNWYWx1ZSBzdGF0dXMpIHsNCisNCisJRE9NRWxlbWVudCAqIHJldCA9IFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6DQorCQkJCWNyZWF0ZUJsYW5rS2V5QmluZGluZ0Fic3RyYWN0VHlwZShYS01TQ29uc3RhbnRzOjpzX3RhZ1JlY292ZXJLZXlCaW5kaW5nKTsNCisNCisJbXBfZW52LT5kb1ByZXR0eVByaW50KHJldCk7DQorDQorCS8vIENyZWF0ZSB0aGUgc3RhdHVzIGVsZW1lbnQNCisJWFNFQ25ldyhtcF9zdGF0dXMsIFhLTVNTdGF0dXNJbXBsKG1wX2VudikpOw0KKwlyZXQtPmFwcGVuZENoaWxkKG1wX3N0YXR1cy0+Y3JlYXRlQmxhbmtTdGF0dXMoc3RhdHVzKSk7DQorCW1wX2Vudi0+ZG9QcmV0dHlQcmludChyZXQpOw0KKw0KKwkvLyBNdXN0IGhhdmUgYW4gSWQNCisJWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsOjpzZXRJZCgpOw0KKw0KKwlyZXR1cm4gcmV0Ow0KKw0KK30NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vICAgICAgICAgICBTdGF0dXMgaGFuZGxpbmcNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK1hLTVNTdGF0dXMgKiBYS01TUmVjb3ZlcktleUJpbmRpbmdJbXBsOjpnZXRTdGF0dXModm9pZCkgY29uc3Qgew0KKw0KKwlyZXR1cm4gbXBfc3RhdHVzOw0KKw0KK30NCisNCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU1JlY292ZXJLZXlCaW5kaW5nSW1wbC5ocHAgYi9jL3NyYy94a21zL2ltcGwvWEtNU1JlY292ZXJLZXlCaW5kaW5nSW1wbC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTkzMzA5ZQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUmVjb3ZlcktleUJpbmRpbmdJbXBsLmhwcApAQCAtMCwwICsxLDc4IEBACisvKg0KKyAqIENvcHlyaWdodCAyMDA2IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKg0KKyAqIFhTRUMNCisgKg0KKyAqIFhLTVNSZWNvdmVyS2V5QmluZGluZyA6PSBJbXBsZW1lbnRhdGlvbiBmb3IgUmVjb3ZlcktleUJpbmRpbmcNCisgKg0KKyAqICRJZCQNCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgWEtNU1JFQ09WRVJLRVlCSU5ESU5HSU1QTF9JTkNMVURFIA0KKyNkZWZpbmUgWEtNU1JFQ09WRVJLRVlCSU5ESU5HSU1QTF9JTkNMVURFIA0KKw0KKy8vIFhTRUMgSW5jbHVkZXMNCisNCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1JlY292ZXJLZXlCaW5kaW5nLmhwcD4NCisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNTdGF0dXMuaHBwPg0KKw0KKyNpbmNsdWRlICJYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGwuaHBwIg0KKw0KK2NsYXNzIFhLTVNTdGF0dXNJbXBsOw0KKw0KK2NsYXNzIFhLTVNSZWNvdmVyS2V5QmluZGluZ0ltcGwgOiBwdWJsaWMgWEtNU1JlY292ZXJLZXlCaW5kaW5nLCBwdWJsaWMgWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsIHsNCisNCitwdWJsaWM6DQorDQorCVhLTVNSZWNvdmVyS2V5QmluZGluZ0ltcGwoDQorCQljb25zdCBYU0VDRW52ICogZW52DQorCSk7DQorDQorCVhLTVNSZWNvdmVyS2V5QmluZGluZ0ltcGwoDQorCQljb25zdCBYU0VDRW52ICogZW52LCANCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogbm9kZQ0KKwkpOw0KKw0KKwl2aXJ0dWFsIH5YS01TUmVjb3ZlcktleUJpbmRpbmdJbXBsKCkgOw0KKw0KKwkvLyBMb2FkDQorCXZvaWQgbG9hZCh2b2lkKTsNCisNCisJLy8gQ3JlYXRlDQorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICoNCisJCWNyZWF0ZUJsYW5rUmVjb3ZlcktleUJpbmRpbmcoWEtNU1N0YXR1czo6U3RhdHVzVmFsdWUgc3RhdHVzKTsNCisNCisJLy8gSW50ZXJmYWNlDQorCXZpcnR1YWwgWEtNU1N0YXR1cyAqIGdldFN0YXR1cyh2b2lkKSBjb25zdDsNCisNCisJLy8gSW1wb3J0IG1ldGhvZHMgZnJvbSBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZQ0KKwlYS01TX0tFWUJJTkRJTkdBQlNUUkFDVFlQRV9JTVBMX01FVEhPRFMNCisNCitwcml2YXRlOg0KKw0KKwlYS01TU3RhdHVzSW1wbAkJKiBtcF9zdGF0dXM7DQorDQorCS8vIFVuaW1wbGVtZW50ZWQNCisJWEtNU1JlY292ZXJLZXlCaW5kaW5nSW1wbCh2b2lkKTsNCisJWEtNU1JlY292ZXJLZXlCaW5kaW5nSW1wbChjb25zdCBYS01TUmVjb3ZlcktleUJpbmRpbmdJbXBsICYpOw0KKwlYS01TUmVjb3ZlcktleUJpbmRpbmdJbXBsICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU1JlY292ZXJLZXlCaW5kaW5nSW1wbCAmKTsNCisNCit9Ow0KKw0KKyNlbmRpZiAvKiBYS01TUkVDT1ZFUktFWUJJTkRJTkdJTVBMX0lOQ0xVREUgKi8NCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU1JlY292ZXJSZXF1ZXN0SW1wbC5jcHAgYi9jL3NyYy94a21zL2ltcGwvWEtNU1JlY292ZXJSZXF1ZXN0SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI0NmNiOQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUmVjb3ZlclJlcXVlc3RJbXBsLmNwcApAQCAtMCwwICsxLDI1NSBAQAorLyoNCisgKiBDb3B5cmlnaHQgMjAwNiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoNCisgKiBYU0VDDQorICoNCisgKiBYS01TUmVjb3ZlclJlcXVlc3RJbXBsIDo9IEltcGxlbWVudGF0aW9uIGZvciBSZWdpc3RlclJlcXVlc3QgTWVzc2FnZXMNCisgKg0KKyAqICRJZCQNCisgKg0KKyAqLw0KKw0KKy8vIFhTRUMgSW5jbHVkZXMNCisNCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPg0KKw0KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1JlZmVyZW5jZS5ocHA+DQorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+DQorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TQ29uc3RhbnRzLmhwcD4NCisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNTdGF0dXMuaHBwPg0KKw0KKyNpbmNsdWRlICJYS01TUmVjb3ZlclJlcXVlc3RJbXBsLmhwcCINCisjaW5jbHVkZSAiWEtNU1JlY292ZXJLZXlCaW5kaW5nSW1wbC5ocHAiDQorI2luY2x1ZGUgIlhLTVNBdXRoZW50aWNhdGlvbkltcGwuaHBwIg0KKw0KKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPg0KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MVW5pRGVmcy5ocHA+DQorDQorWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyAgICAgICAgICAgQ29uc3RydWN0L0Rlc3RydWN0DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitYS01TUmVjb3ZlclJlcXVlc3RJbXBsOjpYS01TUmVjb3ZlclJlcXVlc3RJbXBsKGNvbnN0IFhTRUNFbnYgKiBlbnYpIDoNCittX3JlcXVlc3QoZW52KSwNCittX21zZyhtX3JlcXVlc3QubV9tc2cpLA0KK21wX2F1dGhlbnRpY2F0aW9uKE5VTEwpLA0KK21wX3JlY292ZXJLZXlCaW5kaW5nKE5VTEwpIHsNCit9DQorDQorWEtNU1JlY292ZXJSZXF1ZXN0SW1wbDo6WEtNU1JlY292ZXJSZXF1ZXN0SW1wbChjb25zdCBYU0VDRW52ICogZW52LCBET01FbGVtZW50ICogbm9kZSkgOg0KK21fcmVxdWVzdChlbnYsIG5vZGUpLA0KK21fbXNnKG1fcmVxdWVzdC5tX21zZyksDQorbXBfYXV0aGVudGljYXRpb24oTlVMTCksDQorbXBfcmVjb3ZlcktleUJpbmRpbmcoTlVMTCkgew0KK30NCisNCitYS01TUmVjb3ZlclJlcXVlc3RJbXBsOjp+WEtNU1JlY292ZXJSZXF1ZXN0SW1wbCgpIHsNCisNCisJaWYgKG1wX2F1dGhlbnRpY2F0aW9uICE9IE5VTEwpDQorCQlkZWxldGUgbXBfYXV0aGVudGljYXRpb247DQorCWlmIChtcF9yZWNvdmVyS2V5QmluZGluZyAhPSBOVUxMKQ0KKwkJZGVsZXRlIG1wX3JlY292ZXJLZXlCaW5kaW5nOw0KKw0KK30NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vICAgICAgICAgICBMb2FkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCit2b2lkIFhLTVNSZWNvdmVyUmVxdWVzdEltcGw6OmxvYWQodm9pZCkgew0KKw0KKwlpZiAobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQgPT0gTlVMTCkgew0KKw0KKwkJLy8gQXR0ZW1wdCB0byBsb2FkIGFuIGVtcHR5IGVsZW1lbnQNCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLA0KKwkJCSJYS01TUmVjb3ZlclJlcXVlc3Q6OmxvYWQgLSBjYWxsZWQgb24gZW1wdHkgRE9NIik7DQorDQorCX0NCisNCisJaWYgKCFzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZShtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCksIA0KKwkJCQkJCQkJCVhLTVNDb25zdGFudHM6OnNfdGFnUmVjb3ZlclJlcXVlc3QpKSB7DQorCQ0KKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsDQorCQkJIlhLTVNSZWNvdmVyUmVxdWVzdDo6bG9hZCAtIGNhbGxlZCBvbiBpbmNvcnJlY3Qgbm9kZSIpOw0KKwkNCisJfQ0KKw0KKwkvLyBMb2FkIHRoZSBiYXNlIG1lc3NhZ2UNCisJbV9yZXF1ZXN0LmxvYWQoKTsNCisNCisJLy8gTm93IGNoZWNrIGZvciBhbnkgUmVjb3ZlcktleUJpbmRpbmcgZWxlbWVudHMNCisJRE9NRWxlbWVudCAqIHRtcEVsdCA9IGZpbmRGaXJzdEVsZW1lbnRDaGlsZChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCk7DQorCXdoaWxlICh0bXBFbHQgIT0gTlVMTCAmJiAhc3RyRXF1YWxzKGdldFhLTVNMb2NhbE5hbWUodG1wRWx0KSwgWEtNU0NvbnN0YW50czo6c190YWdSZWNvdmVyS2V5QmluZGluZykpIHsNCisJCXRtcEVsdCA9IGZpbmROZXh0RWxlbWVudENoaWxkKHRtcEVsdCk7DQorCX0NCisNCisJaWYgKHRtcEVsdCAhPSBOVUxMKSB7DQorDQorCQlYU0VDbmV3KG1wX3JlY292ZXJLZXlCaW5kaW5nLCBYS01TUmVjb3ZlcktleUJpbmRpbmdJbXBsKG1fbXNnLm1wX2VudiwgdG1wRWx0KSk7DQorCQltcF9yZWNvdmVyS2V5QmluZGluZy0+bG9hZCgpOw0KKw0KKwkJdG1wRWx0ID0gZmluZE5leHRFbGVtZW50Q2hpbGQodG1wRWx0KTsNCisNCisJfQ0KKwllbHNlIHsNCisNCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWRYS01TQ2hpbGROb3RGb3VuZCwNCisJCQkiWEtNU1JlY292ZXJSZXF1ZXN0Ojpsb2FkIC0gRXhwZWN0ZWQgUmVjb3ZlcktleUJpbmRpbmcgbm9kZSIpOw0KKwkNCisJfQ0KKw0KKwkvLyBBdXRoZW50aWNhdGlvbiBFbGVtZW50IA0KKw0KKwlpZiAodG1wRWx0ICE9IE5VTEwgJiYgc3RyRXF1YWxzKGdldFhLTVNMb2NhbE5hbWUodG1wRWx0KSwgWEtNU0NvbnN0YW50czo6c190YWdBdXRoZW50aWNhdGlvbikpIHsNCisNCisJCVhTRUNuZXcobXBfYXV0aGVudGljYXRpb24sIFhLTVNBdXRoZW50aWNhdGlvbkltcGwobV9tc2cubXBfZW52LCB0bXBFbHQpKTsNCisJCW1wX2F1dGhlbnRpY2F0aW9uLT5sb2FkKG1wX3JlY292ZXJLZXlCaW5kaW5nLT5nZXRJZCgpKTsNCisNCisJfQ0KKwllbHNlIHsNCisNCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWRYS01TQ2hpbGROb3RGb3VuZCwNCisJCQkiWEtNU1JlY292ZXJSZXF1ZXN0Ojpsb2FkIC0gRXhwZWN0ZWQgQXV0aGVudGljYXRpb24gbm9kZSIpOw0KKwkNCisJfQ0KKw0KK30NCisJDQorCQ0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gICAgICAgICAgIENyZWF0ZQ0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorRE9NRWxlbWVudCAqIFhLTVNSZWNvdmVyUmVxdWVzdEltcGw6Og0KKwljcmVhdGVCbGFua1JlY292ZXJSZXF1ZXN0KGNvbnN0IFhNTENoICogc2VydmljZSwgY29uc3QgWE1MQ2ggKiBpZCkgew0KKw0KKwlyZXR1cm4gbV9yZXF1ZXN0LmNyZWF0ZUJsYW5rUmVxdWVzdEFic3RyYWN0VHlwZSgNCisJCVhLTVNDb25zdGFudHM6OnNfdGFnUmVjb3ZlclJlcXVlc3QsIHNlcnZpY2UsIGlkKTsNCisNCit9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyAgICAgICAgICAgTWVzc2FnZVR5cGUgDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6bWVzc2FnZVR5cGUgWEtNU1JlY292ZXJSZXF1ZXN0SW1wbDo6Z2V0TWVzc2FnZVR5cGUodm9pZCkgew0KKw0KKwlyZXR1cm4gWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsOjpSZWNvdmVyUmVxdWVzdDsNCisNCit9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyAgICAgICAgICAgR2V0IE1ldGhvZHMNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK1hLTVNSZWNvdmVyS2V5QmluZGluZyAqIFhLTVNSZWNvdmVyUmVxdWVzdEltcGw6OmdldFJlY292ZXJLZXlCaW5kaW5nKHZvaWQpIGNvbnN0IHsNCisNCisJcmV0dXJuIG1wX3JlY292ZXJLZXlCaW5kaW5nOw0KKw0KK30NCisNCitYS01TQXV0aGVudGljYXRpb24gKiBYS01TUmVjb3ZlclJlcXVlc3RJbXBsOjpnZXRBdXRoZW50aWNhdGlvbiAodm9pZCkgY29uc3Qgew0KKw0KKwlyZXR1cm4gbXBfYXV0aGVudGljYXRpb247DQorDQorfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gICAgICAgICAgIFNldCBNZXRob2RzDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitYS01TUmVjb3ZlcktleUJpbmRpbmcgKiBYS01TUmVjb3ZlclJlcXVlc3RJbXBsOjphZGRSZWNvdmVyS2V5QmluZGluZyhYS01TU3RhdHVzOjpTdGF0dXNWYWx1ZSBzdGF0dXMpIHsNCisNCisJaWYgKG1wX3JlY292ZXJLZXlCaW5kaW5nICE9IE5VTEwpDQorCQlyZXR1cm4gbXBfcmVjb3ZlcktleUJpbmRpbmc7DQorDQorDQorCS8vIE9LIC0gTm90aGluZyBleGlzdHMsIHNvIHdlIG5lZWQgdG8gY3JlYXRlIGZyb20gc2NyYXRjaA0KKw0KKwlYU0VDbmV3KG1wX3JlY292ZXJLZXlCaW5kaW5nLCBYS01TUmVjb3ZlcktleUJpbmRpbmdJbXBsKG1fbXNnLm1wX2VudikpOw0KKwlET01FbGVtZW50ICogZWx0ID0gbXBfcmVjb3ZlcktleUJpbmRpbmctPmNyZWF0ZUJsYW5rUmVjb3ZlcktleUJpbmRpbmcoc3RhdHVzKTsNCisNCisJLy8gSW5zZXJ0DQorDQorCURPTUVsZW1lbnQgKiBiZSA9IGZpbmRGaXJzdEVsZW1lbnRDaGlsZChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCk7DQorDQorCXdoaWxlIChiZSAhPSBOVUxMICYmIA0KKwkJIXN0ckVxdWFscyhnZXRYS01TTG9jYWxOYW1lKGJlKSwgWEtNU0NvbnN0YW50czo6c190YWdBdXRoZW50aWNhdGlvbikgJiYNCisJCSFzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZShiZSksIFhLTVNDb25zdGFudHM6OnNfdGFnUmV2b2NhdGlvbkNvZGUpKSB7DQorCQliZSA9IGZpbmROZXh0RWxlbWVudENoaWxkKGJlKTsNCisJfQ0KKw0KKwlpZiAoYmUgPT0gTlVMTCkgew0KKwkJbV9tc2cubXBfZW52LT5kb1ByZXR0eVByaW50KG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KTsNCisJCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5hcHBlbmRDaGlsZChlbHQpOw0KKwkJbV9tc2cubXBfZW52LT5kb1ByZXR0eVByaW50KG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KTsNCisJCXJldHVybiBtcF9yZWNvdmVyS2V5QmluZGluZzsNCisJfQ0KKw0KKwltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+aW5zZXJ0QmVmb3JlKGVsdCwgYmUpOw0KKwlpZiAobV9tc2cubXBfZW52LT5nZXRQcmV0dHlQcmludEZsYWcoKSA9PSB0cnVlKSB7DQorCQltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+aW5zZXJ0QmVmb3JlKA0KKwkJCW1fbXNnLm1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKS0+Y3JlYXRlVGV4dE5vZGUoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyTkwpLA0KKwkJCWJlKTsNCisJfQ0KKw0KKwlyZXR1cm4gbXBfcmVjb3ZlcktleUJpbmRpbmc7DQorDQorfQ0KKw0KK1hLTVNBdXRoZW50aWNhdGlvbiAqIFhLTVNSZWNvdmVyUmVxdWVzdEltcGw6OmFkZEF1dGhlbnRpY2F0aW9uKHZvaWQpIHsNCisNCisJaWYgKG1wX2F1dGhlbnRpY2F0aW9uICE9IE5VTEwpDQorCQlyZXR1cm4gbXBfYXV0aGVudGljYXRpb247DQorDQorCWlmIChtcF9yZWNvdmVyS2V5QmluZGluZyA9PSBOVUxMKSB7DQorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwNCisJCQkiWEtNU1JlY292ZXJSZXF1ZXN0SW1wbDo6YWRkQXV0aGVudGljYXRpb24gLSBjYWxsZWQgcHJpb3IgdG8ga2V5IGluZm9zIGJlaW5nIGFkZGVkIik7DQorCX0NCisNCisJWFNFQ25ldyhtcF9hdXRoZW50aWNhdGlvbiwgWEtNU0F1dGhlbnRpY2F0aW9uSW1wbChtX21zZy5tcF9lbnYpKTsNCisJRE9NRWxlbWVudCAqIGUgPSANCisJCW1wX2F1dGhlbnRpY2F0aW9uLT5jcmVhdGVCbGFua0F1dGhlbnRpY2F0aW9uKG1wX3JlY292ZXJLZXlCaW5kaW5nLT5nZXRJZCgpKTsNCisNCisJRE9NRWxlbWVudCAqIGJlID0gZmluZEZpcnN0RWxlbWVudENoaWxkKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KTsNCisNCisJd2hpbGUgKGJlICE9IE5VTEwgJiYgIXN0ckVxdWFscyhnZXRYS01TTG9jYWxOYW1lKGJlKSwgWEtNU0NvbnN0YW50czo6c190YWdSZXZvY2F0aW9uQ29kZSkpDQorCQliZSA9IGZpbmROZXh0RWxlbWVudENoaWxkKGJlKTsNCisNCisJaWYgKGJlID09IE5VTEwpIHsNCisJCW1fbXNnLm1wX2Vudi0+ZG9QcmV0dHlQcmludChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCk7DQorCQltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+YXBwZW5kQ2hpbGQoZSk7DQorCQltX21zZy5tcF9lbnYtPmRvUHJldHR5UHJpbnQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOw0KKwkJcmV0dXJuIG1wX2F1dGhlbnRpY2F0aW9uOw0KKwl9DQorDQorCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5pbnNlcnRCZWZvcmUoZSwgYmUpOw0KKwlpZiAobV9tc2cubXBfZW52LT5nZXRQcmV0dHlQcmludEZsYWcoKSA9PSB0cnVlKSB7DQorCQltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+aW5zZXJ0QmVmb3JlKA0KKwkJCW1fbXNnLm1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKS0+Y3JlYXRlVGV4dE5vZGUoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyTkwpLA0KKwkJCWJlKTsNCisJfQ0KKw0KKwlyZXR1cm4gbXBfYXV0aGVudGljYXRpb247DQorDQorfQ0KKw0KKw0KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvaW1wbC9YS01TUmVjb3ZlclJlcXVlc3RJbXBsLmhwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUmVjb3ZlclJlcXVlc3RJbXBsLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWQxZDAyCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9pbXBsL1hLTVNSZWNvdmVyUmVxdWVzdEltcGwuaHBwCkBAIC0wLDAgKzEsMTAxIEBACisvKg0KKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qDQorICogWFNFQw0KKyAqDQorICogWEtNU1JlY292ZXJSZXF1ZXN0SW1wbCA6PSBJbXBsZW1lbnRhdGlvbiBmb3IgUmVjb3ZlclJlcXVlc3QgTWVzc2FnZXMNCisgKg0KKyAqICRJZCQNCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgWEtNU1JFQ09WRVJSRVFVRVNUSU1QTF9JTkNMVURFDQorI2RlZmluZSBYS01TUkVDT1ZFUlJFUVVFU1RJTVBMX0lOQ0xVREUNCisNCisvLyBYU0VDIEluY2x1ZGVzDQorDQorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4NCisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNSZWNvdmVyUmVxdWVzdC5ocHA+DQorI2luY2x1ZGUgIlhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbC5ocHAiDQorDQorY2xhc3MgWEtNU0F1dGhlbnRpY2F0aW9uSW1wbDsNCitjbGFzcyBEU0lHU2lnbmF0dXJlOw0KK2NsYXNzIFhLTVNSZWNvdmVyS2V5QmluZGluZ0ltcGw7DQorDQorY2xhc3MgWEtNU1JlY292ZXJSZXF1ZXN0SW1wbCA6IHB1YmxpYyBYS01TUmVjb3ZlclJlcXVlc3Qgew0KKw0KK3B1YmxpYzogDQorCVhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbCBtX3JlcXVlc3Q7DQorCVhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbCAmbV9tc2c7DQorcHVibGljOg0KKw0KKwlYS01TUmVjb3ZlclJlcXVlc3RJbXBsKA0KKwkJY29uc3QgWFNFQ0VudiAqIGVudg0KKwkpOw0KKw0KKwlYS01TUmVjb3ZlclJlcXVlc3RJbXBsKA0KKwkJY29uc3QgWFNFQ0VudiAqIGVudiwgDQorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIG5vZGUNCisJKTsNCisNCisJdmlydHVhbCB+WEtNU1JlY292ZXJSZXF1ZXN0SW1wbCgpOw0KKw0KKwkvLyBMb2FkIGVsZW1lbnRzDQorCXZvaWQgbG9hZCgpOw0KKw0KKwkvLyBDcmVhdGlvbg0KKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIA0KKwkJY3JlYXRlQmxhbmtSZWNvdmVyUmVxdWVzdCgNCisJCWNvbnN0IFhNTENoICogc2VydmljZSwNCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKTsNCisNCisNCisJLyogR2V0dGVyIEludGVyZmFjZSBNZXRob2RzICovDQorCXZpcnR1YWwgWEtNU1JlY292ZXJLZXlCaW5kaW5nICogZ2V0UmVjb3ZlcktleUJpbmRpbmcodm9pZCkgY29uc3Q7DQorCXZpcnR1YWwgWEtNU0F1dGhlbnRpY2F0aW9uICogZ2V0QXV0aGVudGljYXRpb24gKHZvaWQpIGNvbnN0Ow0KKw0KKwkvKiBTZXR0ZXIgSW50ZXJmYWNlIE1ldGhvZHMgKi8NCisNCisJdmlydHVhbCBYS01TUmVjb3ZlcktleUJpbmRpbmcgKiBhZGRSZWNvdmVyS2V5QmluZGluZyhYS01TU3RhdHVzOjpTdGF0dXNWYWx1ZSBzdGF0dXMpOw0KKwl2aXJ0dWFsIFhLTVNBdXRoZW50aWNhdGlvbiAqIGFkZEF1dGhlbnRpY2F0aW9uKHZvaWQpOw0KKw0KKwkvKiBJbXBsZW1lbnRlZCBmcm9tIE1lc3NhZ2VBYnN0cmFjdFR5cGUgKi8NCisJdmlydHVhbCBtZXNzYWdlVHlwZSBnZXRNZXNzYWdlVHlwZSh2b2lkKTsNCisNCisJLyogRm9yY2VkIGluaGVyaXRhbmNlIGZyb20gWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsICovDQorCVhLTVNfTUVTU0FHRUFCU1RSQUNUWVBFX0lNUExfTUVUSE9EUw0KKw0KKwkvKiBGb3JjZWQgaW5oZXJpdGFuY2UgZnJvbSBSZXF1ZXN0QWJzdHJhY3RUeXBlICovDQorCVhLTVNfUkVRVUVTVEFCU1RSQUNUWVBFX0lNUExfTUVUSE9EUw0KKw0KKw0KK3ByaXZhdGU6DQorDQorCVhLTVNBdXRoZW50aWNhdGlvbkltcGwJCSogbXBfYXV0aGVudGljYXRpb247DQorCVhLTVNSZWNvdmVyS2V5QmluZGluZ0ltcGwJKiBtcF9yZWNvdmVyS2V5QmluZGluZzsNCisNCisJWFNFQ1Byb3ZpZGVyCQkJCW1fcHJvdjsJCS8vIEZvciBjcmVhdGluZyB0aGUgc2lnbmF0dXJlDQorDQorCS8vIFVuaW1wbGVtZW50ZWQNCisJWEtNU1JlY292ZXJSZXF1ZXN0SW1wbCh2b2lkKTsNCisJWEtNU1JlY292ZXJSZXF1ZXN0SW1wbChjb25zdCBYS01TUmVjb3ZlclJlcXVlc3RJbXBsICYpOw0KKwlYS01TUmVjb3ZlclJlcXVlc3RJbXBsICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU1JlY292ZXJSZXF1ZXN0SW1wbCAmKTsNCisNCit9Ow0KKw0KKyNlbmRpZiAvKiBYS01TUkVDT1ZFUlJFUVVFU1RJTVBMX0lOQ0xVREUgKi8NCisNCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU1JlY292ZXJSZXN1bHRJbXBsLmNwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUmVjb3ZlclJlc3VsdEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlNTZkNWIKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU1JlY292ZXJSZXN1bHRJbXBsLmNwcApAQCAtMCwwICsxLDM5MSBAQAorLyoNCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKg0KKyAqIFhTRUMNCisgKg0KKyAqIFhLTVNSZWNvdmVyUmVzdWx0SW1wbCA6PSBJbXBsZW1lbnRhdGlvbiBvZiBSZWNvdmVyUmVzdWx0IE1lc3NhZ2VzDQorICoNCisgKiAkSWQkDQorICoNCisgKi8NCisNCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRW52LmhwcD4NCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0FsZ29yaXRobU1hcHBlci5ocHA+DQorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNBbGdvcml0aG1IYW5kbGVyLmhwcD4NCisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDRE9NVXRpbHMuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0NvbnN0YW50cy5ocHA+DQorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9VdGlscy5ocHA+DQorI2luY2x1ZGUgPHhzZWMvZW5jL1hTRUNDcnlwdG9LZXkuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL3hlbmMvWEVOQ0VuY3J5cHRlZERhdGEuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL3hlbmMvWEVOQ0VuY3J5cHRpb25NZXRob2QuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL3hlbmMvWEVOQ0NpcGhlci5ocHA+DQorDQorI2luY2x1ZGUgIlhLTVNSZWNvdmVyUmVzdWx0SW1wbC5ocHAiDQorI2luY2x1ZGUgIlhLTVNLZXlCaW5kaW5nSW1wbC5ocHAiDQorI2luY2x1ZGUgIlhLTVNSU0FLZXlQYWlySW1wbC5ocHAiDQorDQorI2luY2x1ZGUgPHhlcmNlc2MvZG9tL0RPTS5ocHA+DQorDQorWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyAgICAgICAgICAgQ29uc3RydWN0L0Rlc3RydWN0DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitYS01TUmVjb3ZlclJlc3VsdEltcGw6OlhLTVNSZWNvdmVyUmVzdWx0SW1wbCgNCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYpIDoNCittX3Jlc3VsdChlbnYpLA0KK21fbXNnKG1fcmVzdWx0Lm1fbXNnKSwNCittcF9SU0FLZXlQYWlyKE5VTEwpLA0KK21wX3ByaXZhdGVLZXlFbGVtZW50KE5VTEwpIHsNCisNCit9DQorDQorWEtNU1JlY292ZXJSZXN1bHRJbXBsOjpYS01TUmVjb3ZlclJlc3VsdEltcGwoDQorCQljb25zdCBYU0VDRW52ICogZW52LCANCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogbm9kZSkgOg0KK21fcmVzdWx0KGVudiwgbm9kZSksDQorbV9tc2cobV9yZXN1bHQubV9tc2cpLA0KK21wX1JTQUtleVBhaXIoTlVMTCksDQorbXBfcHJpdmF0ZUtleUVsZW1lbnQoTlVMTCkgew0KKw0KK30NCisNCitYS01TUmVjb3ZlclJlc3VsdEltcGw6On5YS01TUmVjb3ZlclJlc3VsdEltcGwoKSB7DQorDQorCVhLTVNSZWNvdmVyUmVzdWx0SW1wbDo6S2V5QmluZGluZ1ZlY3RvclR5cGU6Oml0ZXJhdG9yIGk7DQorDQorCWZvciAoaSA9IG1fa2V5QmluZGluZ0xpc3QuYmVnaW4oKSA7IGkgPCBtX2tleUJpbmRpbmdMaXN0LmVuZCgpOyBpKyspIHsNCisNCisJCWRlbGV0ZSAoKmkpOw0KKw0KKwl9DQorDQorCWlmIChtcF9SU0FLZXlQYWlyICE9IE5VTEwpDQorCQlkZWxldGUgbXBfUlNBS2V5UGFpcjsNCisNCit9DQorDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyAgICAgICAgICAgTG9hZCBmcm9tIERPTQ0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorLy8gTG9hZCBlbGVtZW50cw0KK3ZvaWQgWEtNU1JlY292ZXJSZXN1bHRJbXBsOjpsb2FkKCkgew0KKw0KKwlpZiAobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQgPT0gTlVMTCkgew0KKw0KKwkJLy8gQXR0ZW1wdCB0byBsb2FkIGFuIGVtcHR5IGVsZW1lbnQNCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLA0KKwkJCSJYS01TUmVjb3ZlclJlc3VsdDo6bG9hZCAtIGNhbGxlZCBvbiBlbXB0eSBET00iKTsNCisNCisJfQ0KKw0KKwlpZiAoIXN0ckVxdWFscyhnZXRYS01TTG9jYWxOYW1lKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KSwgDQorCQkJCQkJCQkJWEtNU0NvbnN0YW50czo6c190YWdSZWNvdmVyUmVzdWx0KSkgew0KKwkNCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLA0KKwkJCSJYS01TUmVjb3ZlclJlc3VsdDo6bG9hZCAtIGNhbGxlZCBpbmNvcnJlY3Qgbm9kZSIpOw0KKwkNCisJfQ0KKw0KKwkvLyBHZXQgYW55IFVudmVyaWZpZWRLZXlCaW5kaW5nIGVsZW1lbnRzDQorCURPTU5vZGVMaXN0ICogbmwgPSBtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+Z2V0RWxlbWVudHNCeVRhZ05hbWVOUygNCisJCVhLTVNDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhLTVMsDQorCQlYS01TQ29uc3RhbnRzOjpzX3RhZ0tleUJpbmRpbmcpOw0KKw0KKwlpZiAobmwgIT0gTlVMTCkgew0KKw0KKwkJWEtNU0tleUJpbmRpbmdJbXBsICoga2I7DQorCQlmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG5sLT5nZXRMZW5ndGgoKSA7ICsrIGkpIHsNCisNCisJCQlYU0VDbmV3KGtiLCBYS01TS2V5QmluZGluZ0ltcGwobV9tc2cubXBfZW52LCAoRE9NRWxlbWVudCAqKSBubC0+aXRlbShpKSkpOw0KKwkJCW1fa2V5QmluZGluZ0xpc3QucHVzaF9iYWNrKGtiKTsNCisJCQlrYi0+bG9hZCgpOw0KKw0KKwkJfQ0KKw0KKwl9DQorDQorCW5sID0gbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoDQorCQlYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TLA0KKwkJWEtNU0NvbnN0YW50czo6c190YWdQcml2YXRlS2V5KTsNCisNCisJaWYgKG5sICE9IE5VTEwpDQorCQltcF9wcml2YXRlS2V5RWxlbWVudCA9IChET01FbGVtZW50ICopIG5sLT5pdGVtKDApOw0KKw0KKwkvLyBMb2FkIHRoZSBiYXNlIG1lc3NhZ2UNCisJbV9yZXN1bHQubG9hZCgpOw0KKw0KK30NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vICAgICAgICAgICBDcmVhdGUgYSBibGFuayBvbmUNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0RPTUVsZW1lbnQgKiBYS01TUmVjb3ZlclJlc3VsdEltcGw6OmNyZWF0ZUJsYW5rUmVjb3ZlclJlc3VsdCgNCisJCWNvbnN0IFhNTENoICogc2VydmljZSwNCisJCWNvbnN0IFhNTENoICogaWQsDQorCQlSZXN1bHRNYWpvciBybWFqLA0KKwkJUmVzdWx0TWlub3Igcm1pbikgew0KKw0KKwlyZXR1cm4gbV9yZXN1bHQuY3JlYXRlQmxhbmtSZXN1bHRUeXBlKA0KKwkJWEtNU0NvbnN0YW50czo6c190YWdSZWNvdmVyUmVzdWx0LCBzZXJ2aWNlLCBpZCwgcm1haiwgcm1pbik7DQorDQorfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gICAgICAgICAgIEdldCBpbnRlcmZhY2UgbWV0aG9kcw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGU6Om1lc3NhZ2VUeXBlIFhLTVNSZWNvdmVyUmVzdWx0SW1wbDo6Z2V0TWVzc2FnZVR5cGUodm9pZCkgew0KKw0KKwlyZXR1cm4gWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsOjpSZWNvdmVyUmVzdWx0Ow0KKw0KK30NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vICAgICAgICAgICBVbnZlcmlmaWVkS2V5QmluZGluZyBoYW5kbGluZw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorDQoraW50IFhLTVNSZWNvdmVyUmVzdWx0SW1wbDo6Z2V0S2V5QmluZGluZ1NpemUodm9pZCkgY29uc3Qgew0KKw0KKwlyZXR1cm4gKGludCkgbV9rZXlCaW5kaW5nTGlzdC5zaXplKCk7DQorDQorfQ0KKw0KK1hLTVNLZXlCaW5kaW5nICogWEtNU1JlY292ZXJSZXN1bHRJbXBsOjpnZXRLZXlCaW5kaW5nSXRlbShpbnQgaXRlbSkgY29uc3Qgew0KKw0KKwlpZiAoaXRlbSA8IDAgfHwgaXRlbSA+PSAoaW50KSBtX2tleUJpbmRpbmdMaXN0LnNpemUoKSkgew0KKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsDQorCQkJIlhLTVNSZWNvdmVyUmVzdWx0OjpnZXRLZXlCaW5kaW5nSXRlbSAtIGl0ZW0gb3V0IG9mIHJhbmdlIik7DQorCX0NCisNCisJcmV0dXJuIG1fa2V5QmluZGluZ0xpc3RbaXRlbV07DQorDQorfQ0KKw0KK1hLTVNLZXlCaW5kaW5nICogWEtNU1JlY292ZXJSZXN1bHRJbXBsOjphcHBlbmRLZXlCaW5kaW5nSXRlbShYS01TU3RhdHVzOjpTdGF0dXNWYWx1ZSBzdGF0dXMpIHsNCisNCisJWEtNU0tleUJpbmRpbmdJbXBsICogdTsNCisNCisJWFNFQ25ldyh1LCBYS01TS2V5QmluZGluZ0ltcGwobV9tc2cubXBfZW52KSk7DQorDQorCW1fa2V5QmluZGluZ0xpc3QucHVzaF9iYWNrKHUpOw0KKw0KKwlET01FbGVtZW50ICogZSA9IHUtPmNyZWF0ZUJsYW5rS2V5QmluZGluZyhzdGF0dXMpOw0KKw0KKwkvLyBBcHBlbmQgdGhlIGVsZW1lbnQNCisJRE9NRWxlbWVudCAqIGMgPSBmaW5kRmlyc3RFbGVtZW50Q2hpbGQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOw0KKwl3aGlsZSAoYyAhPSBOVUxMKSB7DQorDQorCQlpZiAoc3RyRXF1YWxzKGdldFhLTVNMb2NhbE5hbWUoYyksIFhLTVNDb25zdGFudHM6OnNfdGFnUHJpdmF0ZUtleSkpDQorCQkJYnJlYWs7DQorDQorCX0NCisNCisJaWYgKGMgIT0gTlVMTCkgew0KKwkJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmluc2VydEJlZm9yZShlLCBjKTsNCisJCWlmIChtX21zZy5tcF9lbnYtPmdldFByZXR0eVByaW50RmxhZygpKSB7DQorCQkJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmluc2VydEJlZm9yZSgNCisJCQkJbV9tc2cubXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpLT5jcmVhdGVUZXh0Tm9kZShEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJOTCksIGMpOw0KKwkJfQ0KKwl9DQorCWVsc2Ugew0KKwkJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmFwcGVuZENoaWxkKGUpOw0KKwkJbV9tc2cubXBfZW52LT5kb1ByZXR0eVByaW50KG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KTsNCisJfQ0KKw0KKwlyZXR1cm4gdTsNCisNCit9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyAgICAgICAgICAgUlNBS2V5UGFpciBoYW5kbGluZw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorWEtNU1JTQUtleVBhaXIgKiBYS01TUmVjb3ZlclJlc3VsdEltcGw6OmdldFJTQUtleVBhaXIoY29uc3QgY2hhciAqIHBhc3NQaHJhc2UpIHsNCisNCisJLy8gQWxyZWFkeSBkb25lPw0KKwlpZiAobXBfUlNBS2V5UGFpciAhPSBOVUxMKQ0KKwkJcmV0dXJuIG1wX1JTQUtleVBhaXI7DQorDQorCS8vIE5vcGUgLSBjYW4gd2UgZG8gaXQ/DQorCWlmIChtcF9wcml2YXRlS2V5RWxlbWVudCA9PSBOVUxMKQ0KKwkJcmV0dXJuIE5VTEw7DQorDQorCS8vIFllcCEgIExvYWQgdGhlIGtleQ0KKwl1bnNpZ25lZCBjaGFyIGtidWZbWFNFQ19NQVhfSEFTSF9TSVpFXTsNCisJdW5zaWduZWQgaW50IGxlbiA9IENhbGN1bGF0ZVhLTVNLRUsoKHVuc2lnbmVkIGNoYXIgKikgcGFzc1BocmFzZSwgKGludCkgc3RybGVuKHBhc3NQaHJhc2UpLCBrYnVmLCBYU0VDX01BWF9IQVNIX1NJWkUpOw0KKw0KKyAgICBpZiAobGVuID09IDApIHsNCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLA0KKwkJCSJYS01TUmVjb3ZlclJlc3VsdDo6Z2V0UlNBS2V5UGFpciAtIGVycm9yIGRlcml2aW5nIEtFSyIpOw0KKyAgICB9DQorDQorCVhTRUNQcm92aWRlciBwcm92Ow0KKwlYRU5DQ2lwaGVyICogY2lwaGVyID0gcHJvdi5uZXdDaXBoZXIobV9tc2cubXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpKTsNCisNCisJLy8gRmluZCB0aGUgZW5jcnlwdGVkIGluZm8NCisJRE9NTm9kZSAqIG4gPSBmaW5kWEVOQ05vZGUobXBfcHJpdmF0ZUtleUVsZW1lbnQsICJFbmNyeXB0ZWREYXRhIik7DQorDQorCS8vIExvYWQgaW50byB0aGUgQ2lwaGVyIGNsYXNzDQorCVhFTkNFbmNyeXB0ZWREYXRhICogeGVkID0gY2lwaGVyLT5sb2FkRW5jcnlwdGVkRGF0YSgoRE9NRWxlbWVudCAqKSBuKTsNCisJaWYgKHhlZCA9PSBOVUxMKSB7DQorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwNCisJCQkiWEtNU1JlY292ZXJSZXN1bHQ6OmdldFJTQUtleVBhaXIgLSBlcnJvciBsb2FkaW5nIGVuY3J5cHRlZCBkYXRhIik7DQorCX0NCisNCisJLy8gU2V0dXAgdGhlIGFwcHJvcHJpYXRlIGtleQ0KKwlpZiAoeGVkLT5nZXRFbmNyeXB0aW9uTWV0aG9kKCkgPT0gTlVMTCkgew0KKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsDQorCQkJIlhLTVNSZWNvdmVyUmVzdWx0OjpnZXRSU0FLZXlQYWlyIC0gbm8gPEVuY3J5cHRpb25NZXRob2Q+IGluIEVuY3J5cHRlZERhdGEiKTsNCisJfQ0KKw0KKwkvLyBOb3cgZmluZCBpZiB3ZSBjYW4gZ2V0IGFuIGFsZ29yaXRobSBmb3IgdGhpcyBVUkkNCisJWFNFQ0FsZ29yaXRobUhhbmRsZXIgKmhhbmRsZXI7DQorDQorCWhhbmRsZXIgPSANCisJCVhTRUNQbGF0Zm9ybVV0aWxzOjpnX2FsZ29yaXRobU1hcHBlci0+bWFwVVJJVG9IYW5kbGVyKA0KKwkJCXhlZC0+Z2V0RW5jcnlwdGlvbk1ldGhvZCgpLT5nZXRBbGdvcml0aG0oKSk7DQorDQorCWlmIChoYW5kbGVyID09IE5VTEwpIHsNCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLA0KKwkJCSJYS01TUmVjb3ZlclJlc3VsdDo6Z2V0UlNBS2V5UGFpciAtIHVuYWJsZSB0byBoYW5kbGUgYWxnb3JpdGhtIGluIEVuY3J5cHRlZERhdGEiKTsNCisJfQ0KKw0KKwlYU0VDQ3J5cHRvS2V5ICogc2sgPSBoYW5kbGVyLT5jcmVhdGVLZXlGb3JVUkkoDQorCQkJCQl4ZWQtPmdldEVuY3J5cHRpb25NZXRob2QoKS0+Z2V0QWxnb3JpdGhtKCksDQorCQkJCQkoWE1MQnl0ZSAqKSBrYnVmLA0KKwkJCQkJWFNFQ19NQVhfSEFTSF9TSVpFKTsNCisNCisJbWVtc2V0KGtidWYsIDAsIFhTRUNfTUFYX0hBU0hfU0laRSk7DQorDQorCWNpcGhlci0+c2V0S2V5KHNrKTsNCisJY2lwaGVyLT5kZWNyeXB0RWxlbWVudCgpOw0KKw0KKwkvLyBXb29Ib28gLSBpZiB3ZSBnZXQgdGhpcyBmYXIgdGhpbmdzIGFyZSBsb29raW5nIGdvb2QhDQorCURPTUVsZW1lbnQgKiBrcCA9IGZpbmRGaXJzdEVsZW1lbnRDaGlsZChtcF9wcml2YXRlS2V5RWxlbWVudCk7DQorCWlmIChrcCA9PSBOVUxMIHx8ICFzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZShrcCksIFhLTVNDb25zdGFudHM6OnNfdGFnUlNBS2V5UGFpcikpIHsNCisJDQorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwNCisJCQkiWEtNU1JlY292ZXJSZXN1bHQ6OmdldFJTQUtleVBhaXIgLSBwcml2YXRlIGtleSBkaWQgbm90IGRlY3J5cHQgdG8gUlNBS2V5UGFpciIpOw0KKwkNCisJfQ0KKw0KKwlYU0VDbmV3KG1wX1JTQUtleVBhaXIsIFhLTVNSU0FLZXlQYWlySW1wbChtX21zZy5tcF9lbnYsIGtwKSk7DQorCW1wX1JTQUtleVBhaXItPmxvYWQoKTsNCisNCisJcmV0dXJuIG1wX1JTQUtleVBhaXI7DQorfQ0KKw0KK1hFTkNFbmNyeXB0ZWREYXRhICogWEtNU1JlY292ZXJSZXN1bHRJbXBsOjpzZXRSU0FLZXlQYWlyKGNvbnN0IGNoYXIgKiBwYXNzUGhyYXNlLA0KKwkJWE1MQ2ggKiBNb2R1bHVzLA0KKwkJWE1MQ2ggKiBFeHBvbmVudCwNCisJCVhNTENoICogUCwNCisJCVhNTENoICogUSwNCisJCVhNTENoICogRFAsDQorCQlYTUxDaCAqIERRLA0KKwkJWE1MQ2ggKiBJbnZlcnNlUSwNCisJCVhNTENoICogRCwNCisJCWVuY3J5cHRpb25NZXRob2QgZW0sDQorCQljb25zdCBYTUxDaCAqIGFsZ29yaXRobVVSSSkgew0KKw0KKwkvLyBUcnkgdG8gc2V0IHVwIHRoZSBrZXkgZmlyc3QgLSBpZiB0aGlzIGZhaWxzLCBkb24ndCB3YW50IHRvIGhhdmUgYWRkZWQgdGhlDQorCS8vIFhNTA0KKw0KKwljb25zdCBYTUxDaCAqIHVyaTsNCisJc2FmZUJ1ZmZlciBhbGdvcml0aG1TQjsNCisNCisJaWYgKGVtICE9IEVOQ1JZUFRfTk9ORSkgew0KKwkJaWYgKGVuY3J5cHRpb25NZXRob2QyVVJJKGFsZ29yaXRobVNCLCBlbSkgIT0gdHJ1ZSkgew0KKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLCANCisJCQkJIlhLTVNSZWNvdmVyUmVzdWx0OjpzZXRSU0FLZXlQYWlyIC0gVW5rbm93biBlbmNyeXB0aW9uIG1ldGhvZCIpOw0KKwkJfQ0KKwkJdXJpID0gYWxnb3JpdGhtU0Iuc2JTdHJUb1hNTENoKCk7DQorCX0NCisgICAgZWxzZQ0KKyAgICAgICAgdXJpID0gYWxnb3JpdGhtVVJJOw0KKw0KKwkvLyBGaW5kIGlmIHdlIGNhbiBnZXQgYW4gYWxnb3JpdGhtIGZvciB0aGlzIFVSSQ0KKwlYU0VDQWxnb3JpdGhtSGFuZGxlciAqaGFuZGxlcjsNCisNCisJaGFuZGxlciA9IA0KKwkJWFNFQ1BsYXRmb3JtVXRpbHM6OmdfYWxnb3JpdGhtTWFwcGVyLT5tYXBVUklUb0hhbmRsZXIoDQorCQkJdXJpKTsNCisNCisJaWYgKGhhbmRsZXIgPT0gTlVMTCkgew0KKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsDQorCQkJIlhLTVNSZWNvdmVyUmVzdWx0OjpzZXRSU0FLZXlQYWlyIC0gdW5hYmxlIHRvIGhhbmRsZSBhbGdvcml0aG0iKTsNCisJfQ0KKw0KKwl1bnNpZ25lZCBjaGFyIGtidWZbWFNFQ19NQVhfSEFTSF9TSVpFXTsNCisJdW5zaWduZWQgaW50IGxlbiA9IENhbGN1bGF0ZVhLTVNLRUsoKHVuc2lnbmVkIGNoYXIgKikgcGFzc1BocmFzZSwgKGludCkgc3RybGVuKHBhc3NQaHJhc2UpLCBrYnVmLCBYU0VDX01BWF9IQVNIX1NJWkUpOw0KKw0KKyAgICBpZiAobGVuID09IDApIHsNCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLA0KKwkJCSJYS01TUmVjb3ZlclJlc3VsdDo6c2V0UlNBS2V5UGFpciAtIGVycm9yIGRlcml2aW5nIEtFSyIpOw0KKyAgICB9DQorDQorCVhTRUNDcnlwdG9LZXkgKiBzayA9IGhhbmRsZXItPmNyZWF0ZUtleUZvclVSSSgNCisJCQkJCXVyaSwNCisJCQkJCShYTUxCeXRlICopIGtidWYsDQorCQkJCQlYU0VDX01BWF9IQVNIX1NJWkUpOw0KKw0KKwltZW1zZXQoa2J1ZiwgMCwgWFNFQ19NQVhfSEFTSF9TSVpFKTsNCisNCisJLy8gR2V0IHNvbWUgc2V0dXAgdmFsdWVzDQorCXNhZmVCdWZmZXIgc3RyOw0KKwlET01Eb2N1bWVudCAqZG9jID0gbV9tc2cubXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpOw0KKwljb25zdCBYTUxDaCAqIHByZWZpeCA9IG1fbXNnLm1wX2Vudi0+Z2V0WEtNU05TUHJlZml4KCk7DQorDQorCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgWEtNU0NvbnN0YW50czo6c190YWdQcml2YXRlS2V5KTsNCisNCisJLy8gQ3JlYXRlIGEgUHJpdmF0ZUtleSB0byBhZGQgdGhpcyB0bw0KKwlET01FbGVtZW50ICogcGsgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TLCANCisJCQkJCQkJCQkJCQlzdHIucmF3WE1MQ2hCdWZmZXIoKSk7DQorDQorCW1fbXNnLm1wX2Vudi0+ZG9QcmV0dHlQcmludChwayk7DQorDQorCS8vIEFkZCBpdCB0byB0aGUgcmVxdWVzdCBkb2MNCisJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmFwcGVuZENoaWxkKHBrKTsNCisJbV9tc2cubXBfZW52LT5kb1ByZXR0eVByaW50KG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KTsNCisNCisJLy8gTm93IGNyZWF0ZSB0aGUgUlNBIHN0cnVjdHVyZQ0KKwlYS01TUlNBS2V5UGFpckltcGwgKiByc2E7DQorCVhTRUNuZXcocnNhLCBYS01TUlNBS2V5UGFpckltcGwobV9tc2cubXBfZW52KSk7DQorDQorCURPTUVsZW1lbnQgKiBlID0gDQorCQlyc2EtPmNyZWF0ZUJsYW5rWEtNU1JTQUtleVBhaXJJbXBsKE1vZHVsdXMsIEV4cG9uZW50LCBQLCBRLCBEUCwgRFEsIEludmVyc2VRLCBEKTsNCisNCisJLy8gQWRkIGl0IHRvIHRoZSBQcml2YXRlS2V5DQorCXBrLT5hcHBlbmRDaGlsZChlKTsNCisJbV9tc2cubXBfZW52LT5kb1ByZXR0eVByaW50KHBrKTsNCisNCisJLy8gRW5jcnlwdCBhbGwgb2YgdGhpcyBmb3IgZnV0dXJlIHVzZQ0KKwlYRU5DQ2lwaGVyICogY2lwaGVyID0gbV9wcm92Lm5ld0NpcGhlcihtX21zZy5tcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCkpOw0KKwljaXBoZXItPnNldEtleShzayk7DQorCWNpcGhlci0+ZW5jcnlwdEVsZW1lbnRDb250ZW50KHBrLCBFTkNSWVBUX05PTkUsIHVyaSk7DQorDQorCS8vIE5vdyBsb2FkIHRoZSBlbmNyeXB0ZWQgZGF0YSBiYWNrIGluDQorCXJldHVybiBjaXBoZXItPmxvYWRFbmNyeXB0ZWREYXRhKGZpbmRGaXJzdEVsZW1lbnRDaGlsZChwaykpOw0KKw0KK30JDQorDQpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNSZWNvdmVyUmVzdWx0SW1wbC5ocHAgYi9jL3NyYy94a21zL2ltcGwvWEtNU1JlY292ZXJSZXN1bHRJbXBsLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGNkMTU2Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9pbXBsL1hLTVNSZWNvdmVyUmVzdWx0SW1wbC5ocHAKQEAgLTAsMCArMSwxMjQgQEAKKy8qDQorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoNCisgKiBYU0VDDQorICoNCisgKiBYS01TUmVjb3ZlclJlc3VsdEltcGwgOj0gSW1wbGVtZW50YXRpb24gb2YgUmVjb3ZlclJlc3VsdCBNZXNzYWdlcw0KKyAqDQorICogJElkJA0KKyAqDQorICovDQorDQorI2lmbmRlZiBYS01TUkVDT1ZFUlJFU1VMVElNUExfSU5DTFVERQ0KKyNkZWZpbmUgWEtNU1JFQ09WRVJSRVNVTFRJTVBMX0lOQ0xVREUNCisNCisvLyBYU0VDIEluY2x1ZGVzDQorDQorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4NCisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNSZWNvdmVyUmVzdWx0LmhwcD4NCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ1Byb3ZpZGVyLmhwcD4NCisNCisjaW5jbHVkZSAiWEtNU1Jlc3VsdFR5cGVJbXBsLmhwcCINCisNCisjaW5jbHVkZSA8dmVjdG9yPg0KKw0KK2NsYXNzIFhLTVNLZXlCaW5kaW5nSW1wbDsNCitjbGFzcyBYS01TUlNBS2V5UGFpckltcGw7DQorY2xhc3MgWEVOQ0NpcGhlckltcGw7DQorDQorY2xhc3MgWEtNU1JlY292ZXJSZXN1bHRJbXBsIDogcHVibGljIFhLTVNSZWNvdmVyUmVzdWx0IHsNCisNCitwdWJsaWM6DQorCVhLTVNSZXN1bHRUeXBlSW1wbCBtX3Jlc3VsdDsNCisJWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsICZtX21zZzsNCitwdWJsaWM6DQorDQorCVhLTVNSZWNvdmVyUmVzdWx0SW1wbCgNCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYNCisJKTsNCisNCisJWEtNU1JlY292ZXJSZXN1bHRJbXBsKA0KKwkJY29uc3QgWFNFQ0VudiAqIGVudiwgDQorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIG5vZGUNCisJKTsNCisNCisJdmlydHVhbCB+WEtNU1JlY292ZXJSZXN1bHRJbXBsKCk7DQorDQorCS8vIExvYWQgZWxlbWVudHMNCisJdm9pZCBsb2FkKCk7DQorDQorCS8vIENyZWF0aW9uDQorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogDQorCQljcmVhdGVCbGFua1JlY292ZXJSZXN1bHQoDQorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsDQorCQljb25zdCBYTUxDaCAqIGlkLA0KKwkJUmVzdWx0TWFqb3Igcm1haiwNCisJCVJlc3VsdE1pbm9yIHJtaW4pOw0KKw0KKwkvLyBJbnRlcmZhY2UgbWV0aG9kcw0KKwl2aXJ0dWFsIGludCBnZXRLZXlCaW5kaW5nU2l6ZSh2b2lkKSBjb25zdDsNCisJdmlydHVhbCBYS01TS2V5QmluZGluZyAqIGdldEtleUJpbmRpbmdJdGVtKGludCBpdGVtKSBjb25zdDsNCisJdmlydHVhbCBYS01TS2V5QmluZGluZyAqIGFwcGVuZEtleUJpbmRpbmdJdGVtKFhLTVNTdGF0dXM6OlN0YXR1c1ZhbHVlIHN0YXR1cyk7DQorCXZpcnR1YWwgWEtNU1JTQUtleVBhaXIgKiBnZXRSU0FLZXlQYWlyKGNvbnN0IGNoYXIgKiBwYXNzUGhyYXNlKTsNCisJdmlydHVhbCBYRU5DRW5jcnlwdGVkRGF0YSAqIHNldFJTQUtleVBhaXIoY29uc3QgY2hhciAqIHBhc3NQaHJhc2UsDQorCQlYTUxDaCAqIE1vZHVsdXMsDQorCQlYTUxDaCAqIEV4cG9uZW50LA0KKwkJWE1MQ2ggKiBQLA0KKwkJWE1MQ2ggKiBRLA0KKwkJWE1MQ2ggKiBEUCwNCisJCVhNTENoICogRFEsDQorCQlYTUxDaCAqIEludmVyc2VRLA0KKwkJWE1MQ2ggKiBELAkJDQorCQllbmNyeXB0aW9uTWV0aG9kIGVtLA0KKwkJY29uc3QgWE1MQ2ggKiBhbGdvcml0aG1VUkkgPSBOVUxMKTsNCisNCisNCisNCisJLyogSW1wbGVtZW50ZWQgZnJvbSBNZXNzYWdlQWJzdHJhY3RUeXBlICovDQorCXZpcnR1YWwgbWVzc2FnZVR5cGUgZ2V0TWVzc2FnZVR5cGUodm9pZCk7DQorDQorCS8qIEZvcmNlZCBpbmhlcml0YW5jZSBmcm9tIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbCAqLw0KKwlYS01TX01FU1NBR0VBQlNUUkFDVFlQRV9JTVBMX01FVEhPRFMNCisNCisJLyogRm9yY2VkIGluaGVyaXRhbmNlIGZyb20gWEtNU1Jlc3VsdFR5cGVJbXBsICovDQorCVhLTVNfUkVTVUxUVFlQRV9JTVBMX01FVEhPRFMNCisNCitwcml2YXRlOg0KKw0KKyNpZiBkZWZpbmVkKFhTRUNfTk9fTkFNRVNQQUNFUykNCisJdHlwZWRlZiB2ZWN0b3I8WEtNU0tleUJpbmRpbmdJbXBsICo+CQlLZXlCaW5kaW5nVmVjdG9yVHlwZTsNCisjZWxzZQ0KKwl0eXBlZGVmIHN0ZDo6dmVjdG9yPFhLTVNLZXlCaW5kaW5nSW1wbCAqPglLZXlCaW5kaW5nVmVjdG9yVHlwZTsNCisjZW5kaWYNCisNCisJS2V5QmluZGluZ1ZlY3RvclR5cGUJbV9rZXlCaW5kaW5nTGlzdDsNCisJWEtNU1JTQUtleVBhaXJJbXBsCQkqIG1wX1JTQUtleVBhaXI7DQorDQorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiAgRE9NRWxlbWVudA0KKwkJCQkJCSogbXBfcHJpdmF0ZUtleUVsZW1lbnQ7DQorDQorCS8vIFRvIGhhbmRsZSB0aGUgY2lwaGVyDQorCVhTRUNQcm92aWRlcgltX3Byb3Y7DQorDQorCS8vIFVuaW1wbGVtZW50ZWQNCisJWEtNU1JlY292ZXJSZXN1bHRJbXBsKHZvaWQpOw0KKwlYS01TUmVjb3ZlclJlc3VsdEltcGwoY29uc3QgWEtNU1JlY292ZXJSZXN1bHRJbXBsICYpOw0KKwlYS01TUmVjb3ZlclJlc3VsdEltcGwgJiBvcGVyYXRvciA9IChjb25zdCBYS01TUmVjb3ZlclJlc3VsdEltcGwgJik7DQorDQorfTsNCisNCisjZW5kaWYgLyogWEtNU1JFQ09WRVJSRVNVTFRJTVBMX0lOQ0xVREUgKi8NCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU1JlZ2lzdGVyUmVxdWVzdEltcGwuY3BwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNSZWdpc3RlclJlcXVlc3RJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Y2EyOGU1Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9pbXBsL1hLTVNSZWdpc3RlclJlcXVlc3RJbXBsLmNwcApAQCAtMCwwICsxLDM0NSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU1JlZ2lzdGVyUmVxdWVzdEltcGwgOj0gSW1wbGVtZW50YXRpb24gZm9yIFJlZ2lzdGVyUmVxdWVzdCBNZXNzYWdlcworICoKKyAqICRJZCQKKyAqCisgKi8KKworLy8gWFNFQyBJbmNsdWRlcworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorCisjaW5jbHVkZSA8eHNlYy9kc2lnL0RTSUdSZWZlcmVuY2UuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDRE9NVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TQ29uc3RhbnRzLmhwcD4KKworI2luY2x1ZGUgIlhLTVNSZWdpc3RlclJlcXVlc3RJbXBsLmhwcCIKKyNpbmNsdWRlICJYS01TQXV0aGVudGljYXRpb25JbXBsLmhwcCIKKyNpbmNsdWRlICJYS01TUHJvdG90eXBlS2V5QmluZGluZ0ltcGwuaHBwIgorCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MVW5pRGVmcy5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdC9EZXN0cnVjdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWEtNU1JlZ2lzdGVyUmVxdWVzdEltcGw6OlhLTVNSZWdpc3RlclJlcXVlc3RJbXBsKGNvbnN0IFhTRUNFbnYgKiBlbnYpIDoKK21fcmVxdWVzdChlbnYpLAorbV9tc2cobV9yZXF1ZXN0Lm1fbXNnKSwKK21wX2F1dGhlbnRpY2F0aW9uKE5VTEwpLAorbXBfcHJvdG90eXBlS2V5QmluZGluZyhOVUxMKSwKK21wX3Byb29mT2ZQb3NzZXNzaW9uU2lnbmF0dXJlKE5VTEwpIHsKK30KKworWEtNU1JlZ2lzdGVyUmVxdWVzdEltcGw6OlhLTVNSZWdpc3RlclJlcXVlc3RJbXBsKGNvbnN0IFhTRUNFbnYgKiBlbnYsIERPTUVsZW1lbnQgKiBub2RlKSA6CittX3JlcXVlc3QoZW52LCBub2RlKSwKK21fbXNnKG1fcmVxdWVzdC5tX21zZyksCittcF9hdXRoZW50aWNhdGlvbihOVUxMKSwKK21wX3Byb3RvdHlwZUtleUJpbmRpbmcoTlVMTCksCittcF9wcm9vZk9mUG9zc2Vzc2lvblNpZ25hdHVyZShOVUxMKSB7Cit9CisKK1hLTVNSZWdpc3RlclJlcXVlc3RJbXBsOjp+WEtNU1JlZ2lzdGVyUmVxdWVzdEltcGwoKSB7CisKKwlpZiAobXBfYXV0aGVudGljYXRpb24gIT0gTlVMTCkKKwkJZGVsZXRlIG1wX2F1dGhlbnRpY2F0aW9uOworCWlmIChtcF9wcm90b3R5cGVLZXlCaW5kaW5nICE9IE5VTEwpCisJCWRlbGV0ZSBtcF9wcm90b3R5cGVLZXlCaW5kaW5nOworCS8vIFByb3ZpZGVyIHdpbGwgdGFrZSBjYXJlIG9mIHRoZSBwcm9vZk9mUG9zc2Vzc2lvbiBzaWduYXR1cmUKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIExvYWQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgWEtNU1JlZ2lzdGVyUmVxdWVzdEltcGw6OmxvYWQodm9pZCkgeworCisJaWYgKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50ID09IE5VTEwpIHsKKworCQkvLyBBdHRlbXB0IHRvIGxvYWQgYW4gZW1wdHkgZWxlbWVudAorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwKKwkJCSJYS01TUmVnaXN0ZXJSZXF1ZXN0Ojpsb2FkIC0gY2FsbGVkIG9uIGVtcHR5IERPTSIpOworCisJfQorCisJaWYgKCFzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZShtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCksIAorCQkJCQkJCQkJWEtNU0NvbnN0YW50czo6c190YWdSZWdpc3RlclJlcXVlc3QpKSB7CisJCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLAorCQkJIlhLTVNSZWdpc3RlclJlcXVlc3Q6OmxvYWQgLSBjYWxsZWQgb24gaW5jb3JyZWN0IG5vZGUiKTsKKwkKKwl9CisKKwkvLyBMb2FkIHRoZSBiYXNlIG1lc3NhZ2UKKwltX3JlcXVlc3QubG9hZCgpOworCisJLy8gTm93IGNoZWNrIGZvciBhbnkgUHJvdG90eXBlS2V5QmluZGluZyBlbGVtZW50cworCURPTUVsZW1lbnQgKiB0bXBFbHQgPSBmaW5kRmlyc3RFbGVtZW50Q2hpbGQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOworCXdoaWxlICh0bXBFbHQgIT0gTlVMTCAmJiAhc3RyRXF1YWxzKGdldFhLTVNMb2NhbE5hbWUodG1wRWx0KSwgWEtNU0NvbnN0YW50czo6c190YWdQcm90b3R5cGVLZXlCaW5kaW5nKSkgeworCQl0bXBFbHQgPSBmaW5kTmV4dEVsZW1lbnRDaGlsZCh0bXBFbHQpOworCX0KKworCWlmICh0bXBFbHQgIT0gTlVMTCkgeworCisJCVhTRUNuZXcobXBfcHJvdG90eXBlS2V5QmluZGluZywgWEtNU1Byb3RvdHlwZUtleUJpbmRpbmdJbXBsKG1fbXNnLm1wX2VudiwgdG1wRWx0KSk7CisJCW1wX3Byb3RvdHlwZUtleUJpbmRpbmctPmxvYWQoKTsKKworCQl0bXBFbHQgPSBmaW5kTmV4dEVsZW1lbnRDaGlsZCh0bXBFbHQpOworCisJfQorCWVsc2UgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWRYS01TQ2hpbGROb3RGb3VuZCwKKwkJCSJYS01TUmVnaXN0ZXJSZXF1ZXN0Ojpsb2FkIC0gRXhwZWN0ZWQgUHJvdG90eXBlS2V5QmluZGluZyBub2RlIik7CisJCisJfQorCisJLy8gQXV0aGVudGljYXRpb24gRWxlbWVudAorCisJaWYgKHRtcEVsdCAhPSBOVUxMICYmIHN0ckVxdWFscyhnZXRYS01TTG9jYWxOYW1lKHRtcEVsdCksIFhLTVNDb25zdGFudHM6OnNfdGFnQXV0aGVudGljYXRpb24pKSB7CisKKwkJWFNFQ25ldyhtcF9hdXRoZW50aWNhdGlvbiwgWEtNU0F1dGhlbnRpY2F0aW9uSW1wbChtX21zZy5tcF9lbnYsIHRtcEVsdCkpOworCQltcF9hdXRoZW50aWNhdGlvbi0+bG9hZChtcF9wcm90b3R5cGVLZXlCaW5kaW5nLT5nZXRJZCgpKTsKKworCQl0bXBFbHQgPSBmaW5kTmV4dEVsZW1lbnRDaGlsZCh0bXBFbHQpOworCisJfQorCWVsc2UgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWRYS01TQ2hpbGROb3RGb3VuZCwKKwkJCSJYS01TUmVnaXN0ZXJSZXF1ZXN0Ojpsb2FkIC0gRXhwZWN0ZWQgQXV0aGVudGljYXRpb24gbm9kZSIpOworCQorCX0KKworCWlmICh0bXBFbHQgIT0gTlVMTCAmJiBzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZSh0bXBFbHQpLCBYS01TQ29uc3RhbnRzOjpzX3RhZ1Byb29mT2ZQb3NzZXNzaW9uKSkgeworCisJCS8vIEZpbmQgdGhlIHNpZ25hdHVyZQorCisJCURPTUVsZW1lbnQgKiBzaWdFbHQgPSAoRE9NRWxlbWVudCAqKSBmaW5kRmlyc3RFbGVtZW50Q2hpbGQodG1wRWx0KTsKKworCQlpZiAoc2lnRWx0ID09IE5VTEwgfHwgIXN0ckVxdWFscyhnZXREU0lHTG9jYWxOYW1lKHNpZ0VsdCksIAorCQkJWEtNU0NvbnN0YW50czo6c190YWdTaWduYXR1cmUpKSB7CisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkWEtNU0NoaWxkTm90Rm91bmQsCisJCQkJIlhLTVNSZWdpc3RlclJlcXVlc3Q6OmxvYWQgLSBFeHBlY3RlZCBTaWduYXR1cmUgY2hpbGQgb2YgUHJvb2ZPZlBvc3Nlc3Npb24iKTsKKworCQl9CisKKwkJLy8gVGhlIHByb3ZpZGVyIHdpbGwgdGFrZSBjYXJlIG9mIGNsZWFuaW5nIHRoaXMgdXAgbGF0ZXIuCisKKwkJbXBfcHJvb2ZPZlBvc3Nlc3Npb25TaWduYXR1cmUgPSBtX3Byb3YubmV3U2lnbmF0dXJlRnJvbURPTShtX21zZy5tcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCksIAorCQkJCQkJCQkJCQkJCSAgc2lnRWx0KTsKKwkJbXBfcHJvb2ZPZlBvc3Nlc3Npb25TaWduYXR1cmUtPmxvYWQoKTsKKworCQkvLyBDaGVjayB0aGUgc2lnbmF0dXJlIGlzIGFjcm9zcyB0aGUgY29ycmVjdCBpbnB1dAorCQkJCisJCURTSUdSZWZlcmVuY2VMaXN0ICogcmwgPSAKKwkJCW1wX3Byb29mT2ZQb3NzZXNzaW9uU2lnbmF0dXJlLT5nZXRSZWZlcmVuY2VMaXN0KCk7CisKKwkJaWYgKHJsLT5nZXRTaXplKCkgIT0gMSkgeworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsCisJCQkJIlhLTVNSZWdpc3RlclJlcXVlc3RJbXBsOjpsb2FkIC0gUHJvb2ZPZlBvc3Nlc3Npb24gU2lnbmF0dXJlIHdpdGggaW5jb3JyZWN0IG51bWJlciBvZiByZWZlcmVuY2VzIGZvdW5kIChzaG91bGQgYmUgMSkiKTsKKwkJfQorCisJCXNhZmVCdWZmZXIgc2I7CisJCXNiLnNiWE1MQ2hJbihEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJFbXB0eSk7CisJCXNiLnNiWE1MQ2hBcHBlbmRDaChjaFBvdW5kKTsKKwkJc2Iuc2JYTUxDaENhdChtcF9wcm90b3R5cGVLZXlCaW5kaW5nLT5nZXRJZCgpKTsKKworCQlpZiAoIXN0ckVxdWFscyhybC0+aXRlbSgwKS0+Z2V0VVJJKCksIHNiLnJhd1hNTENoQnVmZmVyKCkpKSB7CisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwKKwkJCQkiWEtNU1JlZ2lzdGVyUmVxdWVzdEltcGw6OmxvYWQgLSBQcm9vZk9mUG9zc2Vzc2lvbiBTaWduYXR1cmUgcmVmZXJzIHRvIGluY29ycmVjdCBJZCAoc2hvdWxkIGJlIGZvciBQcm90b3R5cGVLZXlCaW5kaW5nKSIpOworCQl9CisKKwkJLy8gV2UgZG9uJ3QgYWN0dWFsbHkgY2hlY2sgdGhlIHNpZ25hdHVyZSBhcyB3ZSBoYXZlIG5vIGtleSBtYXRlcmlhbCB0byBkbyBzbyEKKwl9Cit9CisJCisJCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENyZWF0ZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRE9NRWxlbWVudCAqIFhLTVNSZWdpc3RlclJlcXVlc3RJbXBsOjoKKwljcmVhdGVCbGFua1JlZ2lzdGVyUmVxdWVzdChjb25zdCBYTUxDaCAqIHNlcnZpY2UsIGNvbnN0IFhNTENoICogaWQpIHsKKworCXJldHVybiBtX3JlcXVlc3QuY3JlYXRlQmxhbmtSZXF1ZXN0QWJzdHJhY3RUeXBlKAorCQlYS01TQ29uc3RhbnRzOjpzX3RhZ1JlZ2lzdGVyUmVxdWVzdCwgc2VydmljZSwgaWQpOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgTWVzc2FnZVR5cGUgCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6bWVzc2FnZVR5cGUgWEtNU1JlZ2lzdGVyUmVxdWVzdEltcGw6OmdldE1lc3NhZ2VUeXBlKHZvaWQpIHsKKworCXJldHVybiBYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGw6OlJlZ2lzdGVyUmVxdWVzdDsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdldCBNZXRob2RzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYS01TUHJvdG90eXBlS2V5QmluZGluZyAqIFhLTVNSZWdpc3RlclJlcXVlc3RJbXBsOjpnZXRQcm90b3R5cGVLZXlCaW5kaW5nKHZvaWQpIGNvbnN0IHsKKworCXJldHVybiBtcF9wcm90b3R5cGVLZXlCaW5kaW5nOworCit9CisKK1hLTVNBdXRoZW50aWNhdGlvbiAqIFhLTVNSZWdpc3RlclJlcXVlc3RJbXBsOjpnZXRBdXRoZW50aWNhdGlvbiAodm9pZCkgY29uc3QgeworCisJcmV0dXJuIG1wX2F1dGhlbnRpY2F0aW9uOworCit9CisKK0RTSUdTaWduYXR1cmUgKiBYS01TUmVnaXN0ZXJSZXF1ZXN0SW1wbDo6Z2V0UHJvb2ZPZlBvc3Nlc3Npb25TaWduYXR1cmUodm9pZCkgY29uc3QgeworCisJcmV0dXJuIG1wX3Byb29mT2ZQb3NzZXNzaW9uU2lnbmF0dXJlOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU2V0IE1ldGhvZHMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hLTVNQcm90b3R5cGVLZXlCaW5kaW5nICogWEtNU1JlZ2lzdGVyUmVxdWVzdEltcGw6OmFkZFByb3RvdHlwZUtleUJpbmRpbmcodm9pZCkgeworCisJaWYgKG1wX3Byb3RvdHlwZUtleUJpbmRpbmcgIT0gTlVMTCkKKwkJcmV0dXJuIG1wX3Byb3RvdHlwZUtleUJpbmRpbmc7CisKKworCS8vIE9LIC0gTm90aGluZyBleGlzdHMsIHNvIHdlIG5lZWQgdG8gY3JlYXRlIGZyb20gc2NyYXRjaAorCisJWFNFQ25ldyhtcF9wcm90b3R5cGVLZXlCaW5kaW5nLCBYS01TUHJvdG90eXBlS2V5QmluZGluZ0ltcGwobV9tc2cubXBfZW52KSk7CisJRE9NRWxlbWVudCAqIGVsdCA9IG1wX3Byb3RvdHlwZUtleUJpbmRpbmctPmNyZWF0ZUJsYW5rUHJvdG90eXBlS2V5QmluZGluZygpOworCisJLy8gSW5zZXJ0CisKKwlET01FbGVtZW50ICogYmUgPSBmaW5kRmlyc3RFbGVtZW50Q2hpbGQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOworCisJd2hpbGUgKGJlICE9IE5VTEwgJiYgCisJCSFzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZShiZSksIFhLTVNDb25zdGFudHM6OnNfdGFnQXV0aGVudGljYXRpb24pICYmCisJCSFzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZShiZSksIFhLTVNDb25zdGFudHM6OnNfdGFnUHJvb2ZPZlBvc3Nlc3Npb24pKSB7CisJCWJlID0gZmluZE5leHRFbGVtZW50Q2hpbGQoYmUpOworCX0KKworCWlmIChiZSA9PSBOVUxMKSB7CisJCW1fbXNnLm1wX2Vudi0+ZG9QcmV0dHlQcmludChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCk7CisJCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5hcHBlbmRDaGlsZChlbHQpOworCQltX21zZy5tcF9lbnYtPmRvUHJldHR5UHJpbnQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOworCQlyZXR1cm4gbXBfcHJvdG90eXBlS2V5QmluZGluZzsKKwl9CisKKwltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+aW5zZXJ0QmVmb3JlKGVsdCwgYmUpOworCWlmIChtX21zZy5tcF9lbnYtPmdldFByZXR0eVByaW50RmxhZygpID09IHRydWUpIHsKKwkJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmluc2VydEJlZm9yZSgKKwkJCW1fbXNnLm1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKS0+Y3JlYXRlVGV4dE5vZGUoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyTkwpLAorCQkJYmUpOworCX0KKworCXJldHVybiBtcF9wcm90b3R5cGVLZXlCaW5kaW5nOworCit9CisKK1hLTVNBdXRoZW50aWNhdGlvbiAqIFhLTVNSZWdpc3RlclJlcXVlc3RJbXBsOjphZGRBdXRoZW50aWNhdGlvbih2b2lkKSB7CisKKwlpZiAobXBfYXV0aGVudGljYXRpb24gIT0gTlVMTCkKKwkJcmV0dXJuIG1wX2F1dGhlbnRpY2F0aW9uOworCisJaWYgKG1wX3Byb3RvdHlwZUtleUJpbmRpbmcgPT0gTlVMTCkgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwKKwkJCSJYS01TUmVnaXN0ZXJSZXF1ZXN0SW1wbDo6YWRkQXV0aGVudGljYXRpb24gLSBjYWxsZWQgcHJpb3IgdG8ga2V5IGluZm9zIGJlaW5nIGFkZGVkIik7CisJfQorCisJWFNFQ25ldyhtcF9hdXRoZW50aWNhdGlvbiwgWEtNU0F1dGhlbnRpY2F0aW9uSW1wbChtX21zZy5tcF9lbnYpKTsKKwlET01FbGVtZW50ICogZSA9IAorCQltcF9hdXRoZW50aWNhdGlvbi0+Y3JlYXRlQmxhbmtBdXRoZW50aWNhdGlvbihtcF9wcm90b3R5cGVLZXlCaW5kaW5nLT5nZXRJZCgpKTsKKworCURPTUVsZW1lbnQgKiBiZSA9IGZpbmRGaXJzdEVsZW1lbnRDaGlsZChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCk7CisKKwl3aGlsZSAoYmUgIT0gTlVMTCAmJiAhc3RyRXF1YWxzKGdldFhLTVNMb2NhbE5hbWUoYmUpLCBYS01TQ29uc3RhbnRzOjpzX3RhZ1Byb29mT2ZQb3NzZXNzaW9uKSkKKwkJYmUgPSBmaW5kTmV4dEVsZW1lbnRDaGlsZChiZSk7CisKKwlpZiAoYmUgPT0gTlVMTCkgeworCQltX21zZy5tcF9lbnYtPmRvUHJldHR5UHJpbnQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOworCQltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+YXBwZW5kQ2hpbGQoZSk7CisJCW1fbXNnLm1wX2Vudi0+ZG9QcmV0dHlQcmludChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCk7CisJCXJldHVybiBtcF9hdXRoZW50aWNhdGlvbjsKKwl9CisKKwltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+aW5zZXJ0QmVmb3JlKGUsIGJlKTsKKwlpZiAobV9tc2cubXBfZW52LT5nZXRQcmV0dHlQcmludEZsYWcoKSA9PSB0cnVlKSB7CisJCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5pbnNlcnRCZWZvcmUoCisJCQltX21zZy5tcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCktPmNyZWF0ZVRleHROb2RlKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ck5MKSwKKwkJCWJlKTsKKwl9CisKKwlyZXR1cm4gbXBfYXV0aGVudGljYXRpb247CisKK30KKworRFNJR1NpZ25hdHVyZSAqIFhLTVNSZWdpc3RlclJlcXVlc3RJbXBsOjphZGRQcm9vZk9mUG9zc2Vzc2lvblNpZ25hdHVyZSgKKwkJY2Fub25pY2FsaXphdGlvbk1ldGhvZCBjbSwKKwkJc2lnbmF0dXJlTWV0aG9kCXNtLAorCQloYXNoTWV0aG9kIGhtKSB7CisKKwlEU0lHU2lnbmF0dXJlICogcmV0ID0gbV9wcm92Lm5ld1NpZ25hdHVyZSgpOworCURPTUVsZW1lbnQgKiBlbHQgPSByZXQtPmNyZWF0ZUJsYW5rU2lnbmF0dXJlKG1fbXNnLm1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKSwgY20sIHNtLCBobSk7CisKKwkvKiBDcmVhdGUgdGhlIGVudmVsb3BpbmcgcmVmZXJlbmNlICovCisJc2FmZUJ1ZmZlciBzYjsKKwlzYi5zYlhNTENoSW4oRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyRW1wdHkpOworCXNiLnNiWE1MQ2hBcHBlbmRDaChjaFBvdW5kKTsKKwlzYi5zYlhNTENoQ2F0KG1wX3Byb3RvdHlwZUtleUJpbmRpbmctPmdldElkKCkpOworCisJRFNJR1JlZmVyZW5jZSAqcmVmID0gcmV0LT5jcmVhdGVSZWZlcmVuY2Uoc2IucmF3WE1MQ2hCdWZmZXIoKSk7CisJcmVmLT5hcHBlbmRDYW5vbmljYWxpemF0aW9uVHJhbnNmb3JtKENBTk9OX0MxNE5FX0NPTSk7CisKKwkvKiBFbWJlZCB0aGUgc2lnbmF0dXJlIGluIHRoZSBkb2N1bWVudCBpbnNpZGUgYSBLZXlCaW5kaW5nQXV0aGVudGljYXRpb24gZWxlbWVudCAqLworCXNhZmVCdWZmZXIgc3RyOworCURPTURvY3VtZW50ICpkb2MgPSBtX21zZy5tcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCk7CisJY29uc3QgWE1MQ2ggKiBwcmVmaXggPSBtX21zZy5tcF9lbnYtPmdldFhLTVNOU1ByZWZpeCgpOworCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCBYS01TQ29uc3RhbnRzOjpzX3RhZ1Byb29mT2ZQb3NzZXNzaW9uKTsKKworCURPTUVsZW1lbnQgKiB0ID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoWEtNU0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWEtNUywgCisJCQkJCQkJCQkJCQlzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisKKwltX21zZy5tcF9lbnYtPmRvUHJldHR5UHJpbnQodCk7CisJdC0+YXBwZW5kQ2hpbGQoZWx0KTsKKwltX21zZy5tcF9lbnYtPmRvUHJldHR5UHJpbnQodCk7CisKKwkvLyBOb3cgYXBwZW5kIGludG8gdGhlIFJlZ2lzdGVyUmVxdWVzdAorCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5hcHBlbmRDaGlsZCh0KTsKKwltX21zZy5tcF9lbnYtPmRvUHJldHR5UHJpbnQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOworCisJcmV0dXJuIHJldDsKK30KKworCisKZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvaW1wbC9YS01TUmVnaXN0ZXJSZXF1ZXN0SW1wbC5ocHAgYi9jL3NyYy94a21zL2ltcGwvWEtNU1JlZ2lzdGVyUmVxdWVzdEltcGwuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNTc0OTMKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU1JlZ2lzdGVyUmVxdWVzdEltcGwuaHBwCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TUmVnaXN0ZXJSZXF1ZXN0SW1wbCA6PSBJbXBsZW1lbnRhdGlvbiBmb3IgUmVnaXN0ZXJSZXF1ZXN0IE1lc3NhZ2VzCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhLTVNSRUdJU1RFUlJFUVVFU1RJTVBMX0lOQ0xVREUKKyNkZWZpbmUgWEtNU1JFR0lTVEVSUkVRVUVTVElNUExfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNSZWdpc3RlclJlcXVlc3QuaHBwPgorI2luY2x1ZGUgIlhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbC5ocHAiCisKK2NsYXNzIFhLTVNBdXRoZW50aWNhdGlvbkltcGw7CitjbGFzcyBYS01TUHJvdG90eXBlS2V5QmluZGluZ0ltcGw7CitjbGFzcyBEU0lHU2lnbmF0dXJlOworCitjbGFzcyBYS01TUmVnaXN0ZXJSZXF1ZXN0SW1wbCA6IHB1YmxpYyBYS01TUmVnaXN0ZXJSZXF1ZXN0IHsKKworcHVibGljOiAKKwlYS01TUmVxdWVzdEFic3RyYWN0VHlwZUltcGwgbV9yZXF1ZXN0OworCVhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbCAmbV9tc2c7CitwdWJsaWM6CisKKwlYS01TUmVnaXN0ZXJSZXF1ZXN0SW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudgorCSk7CisKKwlYS01TUmVnaXN0ZXJSZXF1ZXN0SW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudiwgCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogbm9kZQorCSk7CisKKwl2aXJ0dWFsIH5YS01TUmVnaXN0ZXJSZXF1ZXN0SW1wbCgpOworCisJLy8gTG9hZCBlbGVtZW50cworCXZvaWQgbG9hZCgpOworCisJLy8gQ3JlYXRpb24KKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIAorCQljcmVhdGVCbGFua1JlZ2lzdGVyUmVxdWVzdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCk7CisKKworCS8qIEdldHRlciBJbnRlcmZhY2UgTWV0aG9kcyAqLworCXZpcnR1YWwgWEtNU1Byb3RvdHlwZUtleUJpbmRpbmcgKiBnZXRQcm90b3R5cGVLZXlCaW5kaW5nKHZvaWQpIGNvbnN0OworCXZpcnR1YWwgWEtNU0F1dGhlbnRpY2F0aW9uICogZ2V0QXV0aGVudGljYXRpb24gKHZvaWQpIGNvbnN0OworCXZpcnR1YWwgRFNJR1NpZ25hdHVyZSAqIGdldFByb29mT2ZQb3NzZXNzaW9uU2lnbmF0dXJlKHZvaWQpIGNvbnN0OworCisJLyogU2V0dGVyIEludGVyZmFjZSBNZXRob2RzICovCisKKwl2aXJ0dWFsIFhLTVNQcm90b3R5cGVLZXlCaW5kaW5nICogYWRkUHJvdG90eXBlS2V5QmluZGluZyh2b2lkKTsKKwl2aXJ0dWFsIFhLTVNBdXRoZW50aWNhdGlvbiAqIGFkZEF1dGhlbnRpY2F0aW9uKHZvaWQpOworCXZpcnR1YWwgRFNJR1NpZ25hdHVyZSAqIGFkZFByb29mT2ZQb3NzZXNzaW9uU2lnbmF0dXJlKAorCQljYW5vbmljYWxpemF0aW9uTWV0aG9kIGNtID0gQ0FOT05fQzE0Tl9OT0MsCisJCXNpZ25hdHVyZU1ldGhvZAlzbSA9IFNJR05BVFVSRV9EU0EsCisJCWhhc2hNZXRob2QgaG0gPSBIQVNIX1NIQTEpOworCisJLyogSW1wbGVtZW50ZWQgZnJvbSBNZXNzYWdlQWJzdHJhY3RUeXBlICovCisJdmlydHVhbCBtZXNzYWdlVHlwZSBnZXRNZXNzYWdlVHlwZSh2b2lkKTsKKworCS8qIEZvcmNlZCBpbmhlcml0YW5jZSBmcm9tIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbCAqLworCVhLTVNfTUVTU0FHRUFCU1RSQUNUWVBFX0lNUExfTUVUSE9EUworCisJLyogRm9yY2VkIGluaGVyaXRhbmNlIGZyb20gUmVxdWVzdEFic3RyYWN0VHlwZSAqLworCVhLTVNfUkVRVUVTVEFCU1RSQUNUWVBFX0lNUExfTUVUSE9EUworCisKK3ByaXZhdGU6CisKKwlYS01TQXV0aGVudGljYXRpb25JbXBsCQkqIG1wX2F1dGhlbnRpY2F0aW9uOworCVhLTVNQcm90b3R5cGVLZXlCaW5kaW5nSW1wbAkqIG1wX3Byb3RvdHlwZUtleUJpbmRpbmc7CisJRFNJR1NpZ25hdHVyZQkJCQkqIG1wX3Byb29mT2ZQb3NzZXNzaW9uU2lnbmF0dXJlOworCisJWFNFQ1Byb3ZpZGVyCQkJCW1fcHJvdjsJCS8vIEZvciBjcmVhdGluZyB0aGUgc2lnbmF0dXJlCisKKwkvLyBVbmltcGxlbWVudGVkCisJWEtNU1JlZ2lzdGVyUmVxdWVzdEltcGwodm9pZCk7CisJWEtNU1JlZ2lzdGVyUmVxdWVzdEltcGwoY29uc3QgWEtNU1JlZ2lzdGVyUmVxdWVzdEltcGwgJik7CisJWEtNU1JlZ2lzdGVyUmVxdWVzdEltcGwgJiBvcGVyYXRvciA9IChjb25zdCBYS01TUmVnaXN0ZXJSZXF1ZXN0SW1wbCAmKTsKKworfTsKKworI2VuZGlmIC8qIFhLTVNSRUdJU1RFUlJFUVVFU1RJTVBMX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvaW1wbC9YS01TUmVnaXN0ZXJSZXN1bHRJbXBsLmNwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUmVnaXN0ZXJSZXN1bHRJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmMyZDA4Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9pbXBsL1hLTVNSZWdpc3RlclJlc3VsdEltcGwuY3BwCkBAIC0wLDAgKzEsMzkyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TUmVnaXN0ZXJSZXN1bHRJbXBsIDo9IEltcGxlbWVudGF0aW9uIG9mIFJlZ2lzdGVyUmVzdWx0IE1lc3NhZ2VzCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vudi5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0FsZ29yaXRobU1hcHBlci5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0FsZ29yaXRobUhhbmRsZXIuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0NvbnN0YW50cy5ocHA+CisjaW5jbHVkZSA8eHNlYy9lbmMvWFNFQ0NyeXB0b1V0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2VuYy9YU0VDQ3J5cHRvS2V5LmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hlbmMvWEVOQ0VuY3J5cHRlZERhdGEuaHBwPgorI2luY2x1ZGUgPHhzZWMveGVuYy9YRU5DRW5jcnlwdGlvbk1ldGhvZC5ocHA+CisjaW5jbHVkZSA8eHNlYy94ZW5jL1hFTkNDaXBoZXIuaHBwPgorCisjaW5jbHVkZSAiWEtNU1JlZ2lzdGVyUmVzdWx0SW1wbC5ocHAiCisjaW5jbHVkZSAiWEtNU0tleUJpbmRpbmdJbXBsLmhwcCIKKyNpbmNsdWRlICJYS01TUlNBS2V5UGFpckltcGwuaHBwIgorCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ29uc3RydWN0L0Rlc3RydWN0CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYS01TUmVnaXN0ZXJSZXN1bHRJbXBsOjpYS01TUmVnaXN0ZXJSZXN1bHRJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52KSA6CittX3Jlc3VsdChlbnYpLAorbV9tc2cobV9yZXN1bHQubV9tc2cpLAorbXBfUlNBS2V5UGFpcihOVUxMKSwKK21wX3ByaXZhdGVLZXlFbGVtZW50KE5VTEwpIHsKKworfQorCitYS01TUmVnaXN0ZXJSZXN1bHRJbXBsOjpYS01TUmVnaXN0ZXJSZXN1bHRJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52LCAKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBub2RlKSA6CittX3Jlc3VsdChlbnYsIG5vZGUpLAorbV9tc2cobV9yZXN1bHQubV9tc2cpLAorbXBfUlNBS2V5UGFpcihOVUxMKSwKK21wX3ByaXZhdGVLZXlFbGVtZW50KE5VTEwpIHsKKworfQorCitYS01TUmVnaXN0ZXJSZXN1bHRJbXBsOjp+WEtNU1JlZ2lzdGVyUmVzdWx0SW1wbCgpIHsKKworCVhLTVNSZWdpc3RlclJlc3VsdEltcGw6OktleUJpbmRpbmdWZWN0b3JUeXBlOjppdGVyYXRvciBpOworCisJZm9yIChpID0gbV9rZXlCaW5kaW5nTGlzdC5iZWdpbigpIDsgaSA8IG1fa2V5QmluZGluZ0xpc3QuZW5kKCk7IGkrKykgeworCisJCWRlbGV0ZSAoKmkpOworCisJfQorCisJaWYgKG1wX1JTQUtleVBhaXIgIT0gTlVMTCkKKwkJZGVsZXRlIG1wX1JTQUtleVBhaXI7CisKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIExvYWQgZnJvbSBET00KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIExvYWQgZWxlbWVudHMKK3ZvaWQgWEtNU1JlZ2lzdGVyUmVzdWx0SW1wbDo6bG9hZCgpIHsKKworCWlmIChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCA9PSBOVUxMKSB7CisKKwkJLy8gQXR0ZW1wdCB0byBsb2FkIGFuIGVtcHR5IGVsZW1lbnQKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsCisJCQkiWEtNU1JlZ2lzdGVyUmVzdWx0Ojpsb2FkIC0gY2FsbGVkIG9uIGVtcHR5IERPTSIpOworCisJfQorCisJaWYgKCFzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZShtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCksIAorCQkJCQkJCQkJWEtNU0NvbnN0YW50czo6c190YWdSZWdpc3RlclJlc3VsdCkpIHsKKwkKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsCisJCQkiWEtNU1JlZ2lzdGVyUmVzdWx0Ojpsb2FkIC0gY2FsbGVkIGluY29ycmVjdCBub2RlIik7CisJCisJfQorCisJLy8gR2V0IGFueSBVbnZlcmlmaWVkS2V5QmluZGluZyBlbGVtZW50cworCURPTU5vZGVMaXN0ICogbmwgPSBtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+Z2V0RWxlbWVudHNCeVRhZ05hbWVOUygKKwkJWEtNU0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWEtNUywKKwkJWEtNU0NvbnN0YW50czo6c190YWdLZXlCaW5kaW5nKTsKKworCWlmIChubCAhPSBOVUxMKSB7CisKKwkJWEtNU0tleUJpbmRpbmdJbXBsICoga2I7CisJCWZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbmwtPmdldExlbmd0aCgpIDsgKysgaSkgeworCisJCQlYU0VDbmV3KGtiLCBYS01TS2V5QmluZGluZ0ltcGwobV9tc2cubXBfZW52LCAoRE9NRWxlbWVudCAqKSBubC0+aXRlbShpKSkpOworCQkJbV9rZXlCaW5kaW5nTGlzdC5wdXNoX2JhY2soa2IpOworCQkJa2ItPmxvYWQoKTsKKworCQl9CisKKwl9CisKKwlubCA9IG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKAorCQlYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TLAorCQlYS01TQ29uc3RhbnRzOjpzX3RhZ1ByaXZhdGVLZXkpOworCisJaWYgKG5sICE9IE5VTEwpCisJCW1wX3ByaXZhdGVLZXlFbGVtZW50ID0gKERPTUVsZW1lbnQgKikgbmwtPml0ZW0oMCk7CisKKwkvLyBMb2FkIHRoZSBiYXNlIG1lc3NhZ2UKKwltX3Jlc3VsdC5sb2FkKCk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDcmVhdGUgYSBibGFuayBvbmUKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitET01FbGVtZW50ICogWEtNU1JlZ2lzdGVyUmVzdWx0SW1wbDo6Y3JlYXRlQmxhbmtSZWdpc3RlclJlc3VsdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQljb25zdCBYTUxDaCAqIGlkLAorCQlSZXN1bHRNYWpvciBybWFqLAorCQlSZXN1bHRNaW5vciBybWluKSB7CisKKwlyZXR1cm4gbV9yZXN1bHQuY3JlYXRlQmxhbmtSZXN1bHRUeXBlKAorCQlYS01TQ29uc3RhbnRzOjpzX3RhZ1JlZ2lzdGVyUmVzdWx0LCBzZXJ2aWNlLCBpZCwgcm1haiwgcm1pbik7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBHZXQgaW50ZXJmYWNlIG1ldGhvZHMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hLTVNNZXNzYWdlQWJzdHJhY3RUeXBlOjptZXNzYWdlVHlwZSBYS01TUmVnaXN0ZXJSZXN1bHRJbXBsOjpnZXRNZXNzYWdlVHlwZSh2b2lkKSB7CisKKwlyZXR1cm4gWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsOjpSZWdpc3RlclJlc3VsdDsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFVudmVyaWZpZWRLZXlCaW5kaW5nIGhhbmRsaW5nCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK2ludCBYS01TUmVnaXN0ZXJSZXN1bHRJbXBsOjpnZXRLZXlCaW5kaW5nU2l6ZSh2b2lkKSBjb25zdCB7CisKKwlyZXR1cm4gKGludCkgbV9rZXlCaW5kaW5nTGlzdC5zaXplKCk7CisKK30KKworWEtNU0tleUJpbmRpbmcgKiBYS01TUmVnaXN0ZXJSZXN1bHRJbXBsOjpnZXRLZXlCaW5kaW5nSXRlbShpbnQgaXRlbSkgY29uc3QgeworCisJaWYgKGl0ZW0gPCAwIHx8IGl0ZW0gPj0gKGludCkgbV9rZXlCaW5kaW5nTGlzdC5zaXplKCkpIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsCisJCQkiWEtNU1JlZ2lzdGVyUmVzdWx0OjpnZXRLZXlCaW5kaW5nSXRlbSAtIGl0ZW0gb3V0IG9mIHJhbmdlIik7CisJfQorCisJcmV0dXJuIG1fa2V5QmluZGluZ0xpc3RbaXRlbV07CisKK30KKworWEtNU0tleUJpbmRpbmcgKiBYS01TUmVnaXN0ZXJSZXN1bHRJbXBsOjphcHBlbmRLZXlCaW5kaW5nSXRlbShYS01TU3RhdHVzOjpTdGF0dXNWYWx1ZSBzdGF0dXMpIHsKKworCVhLTVNLZXlCaW5kaW5nSW1wbCAqIHU7CisKKwlYU0VDbmV3KHUsIFhLTVNLZXlCaW5kaW5nSW1wbChtX21zZy5tcF9lbnYpKTsKKworCW1fa2V5QmluZGluZ0xpc3QucHVzaF9iYWNrKHUpOworCisJRE9NRWxlbWVudCAqIGUgPSB1LT5jcmVhdGVCbGFua0tleUJpbmRpbmcoc3RhdHVzKTsKKworCS8vIEFwcGVuZCB0aGUgZWxlbWVudAorCURPTUVsZW1lbnQgKiBjID0gZmluZEZpcnN0RWxlbWVudENoaWxkKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KTsKKwl3aGlsZSAoYyAhPSBOVUxMKSB7CisKKwkJaWYgKHN0ckVxdWFscyhnZXRYS01TTG9jYWxOYW1lKGMpLCBYS01TQ29uc3RhbnRzOjpzX3RhZ1ByaXZhdGVLZXkpKQorCQkJYnJlYWs7CisKKwl9CisKKwlpZiAoYyAhPSBOVUxMKSB7CisJCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5pbnNlcnRCZWZvcmUoZSwgYyk7CisJCWlmIChtX21zZy5tcF9lbnYtPmdldFByZXR0eVByaW50RmxhZygpKSB7CisJCQltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+aW5zZXJ0QmVmb3JlKAorCQkJCW1fbXNnLm1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKS0+Y3JlYXRlVGV4dE5vZGUoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyTkwpLCBjKTsKKwkJfQorCX0KKwllbHNlIHsKKwkJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmFwcGVuZENoaWxkKGUpOworCQltX21zZy5tcF9lbnYtPmRvUHJldHR5UHJpbnQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOworCX0KKworCXJldHVybiB1OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgUlNBS2V5UGFpciBoYW5kbGluZworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWEtNU1JTQUtleVBhaXIgKiBYS01TUmVnaXN0ZXJSZXN1bHRJbXBsOjpnZXRSU0FLZXlQYWlyKGNvbnN0IGNoYXIgKiBwYXNzUGhyYXNlKSB7CisKKwkvLyBBbHJlYWR5IGRvbmU/CisJaWYgKG1wX1JTQUtleVBhaXIgIT0gTlVMTCkKKwkJcmV0dXJuIG1wX1JTQUtleVBhaXI7CisKKwkvLyBOb3BlIC0gY2FuIHdlIGRvIGl0PworCWlmIChtcF9wcml2YXRlS2V5RWxlbWVudCA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCS8vIFllcCEgIExvYWQgdGhlIGtleQorCXVuc2lnbmVkIGNoYXIga2J1ZltYU0VDX01BWF9IQVNIX1NJWkVdOworCXVuc2lnbmVkIGludCBsZW4gPSBDYWxjdWxhdGVYS01TS0VLKCh1bnNpZ25lZCBjaGFyICopIHBhc3NQaHJhc2UsIChpbnQpIHN0cmxlbihwYXNzUGhyYXNlKSwga2J1ZiwgWFNFQ19NQVhfSEFTSF9TSVpFKTsKKworICAgIGlmIChsZW4gPT0gMCkgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwKKwkJCSJYS01TUmVnaXN0ZXJSZXN1bHQ6OmdldFJTQUtleVBhaXIgLSBlcnJvciBkZXJpdmluZyBLRUsiKTsKKyAgICB9CisKKwlYU0VDUHJvdmlkZXIgcHJvdjsKKwlYRU5DQ2lwaGVyICogY2lwaGVyID0gcHJvdi5uZXdDaXBoZXIobV9tc2cubXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpKTsKKworCS8vIEZpbmQgdGhlIGVuY3J5cHRlZCBpbmZvCisJRE9NTm9kZSAqIG4gPSBmaW5kWEVOQ05vZGUobXBfcHJpdmF0ZUtleUVsZW1lbnQsICJFbmNyeXB0ZWREYXRhIik7CisKKwkvLyBMb2FkIGludG8gdGhlIENpcGhlciBjbGFzcworCVhFTkNFbmNyeXB0ZWREYXRhICogeGVkID0gY2lwaGVyLT5sb2FkRW5jcnlwdGVkRGF0YSgoRE9NRWxlbWVudCAqKSBuKTsKKwlpZiAoeGVkID09IE5VTEwpIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsCisJCQkiWEtNU1JlZ2lzdGVyUmVzdWx0OjpnZXRSU0FLZXlQYWlyIC0gZXJyb3IgbG9hZGluZyBlbmNyeXB0ZWQgZGF0YSIpOworCX0KKworCS8vIFNldHVwIHRoZSBhcHByb3ByaWF0ZSBrZXkKKwlpZiAoeGVkLT5nZXRFbmNyeXB0aW9uTWV0aG9kKCkgPT0gTlVMTCkgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwKKwkJCSJYS01TUmVnaXN0ZXJSZXN1bHQ6OmdldFJTQUtleVBhaXIgLSBubyA8RW5jcnlwdGlvbk1ldGhvZD4gaW4gRW5jcnlwdGVkRGF0YSIpOworCX0KKworCS8vIE5vdyBmaW5kIGlmIHdlIGNhbiBnZXQgYW4gYWxnb3JpdGhtIGZvciB0aGlzIFVSSQorCVhTRUNBbGdvcml0aG1IYW5kbGVyICpoYW5kbGVyOworCisJaGFuZGxlciA9IAorCQlYU0VDUGxhdGZvcm1VdGlsczo6Z19hbGdvcml0aG1NYXBwZXItPm1hcFVSSVRvSGFuZGxlcigKKwkJCXhlZC0+Z2V0RW5jcnlwdGlvbk1ldGhvZCgpLT5nZXRBbGdvcml0aG0oKSk7CisKKwlpZiAoaGFuZGxlciA9PSBOVUxMKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLAorCQkJIlhLTVNSZWdpc3RlclJlc3VsdDo6Z2V0UlNBS2V5UGFpciAtIHVuYWJsZSB0byBoYW5kbGUgYWxnb3JpdGhtIGluIEVuY3J5cHRlZERhdGEiKTsKKwl9CisKKwlYU0VDQ3J5cHRvS2V5ICogc2sgPSBoYW5kbGVyLT5jcmVhdGVLZXlGb3JVUkkoCisJCQkJCXhlZC0+Z2V0RW5jcnlwdGlvbk1ldGhvZCgpLT5nZXRBbGdvcml0aG0oKSwKKwkJCQkJKFhNTEJ5dGUgKikga2J1ZiwKKwkJCQkJWFNFQ19NQVhfSEFTSF9TSVpFKTsKKworCW1lbXNldChrYnVmLCAwLCBYU0VDX01BWF9IQVNIX1NJWkUpOworCisJY2lwaGVyLT5zZXRLZXkoc2spOworCWNpcGhlci0+ZGVjcnlwdEVsZW1lbnQoKTsKKworCS8vIFdvb0hvbyAtIGlmIHdlIGdldCB0aGlzIGZhciB0aGluZ3MgYXJlIGxvb2tpbmcgZ29vZCEKKwlET01FbGVtZW50ICoga3AgPSBmaW5kRmlyc3RFbGVtZW50Q2hpbGQobXBfcHJpdmF0ZUtleUVsZW1lbnQpOworCWlmIChrcCA9PSBOVUxMIHx8ICFzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZShrcCksIFhLTVNDb25zdGFudHM6OnNfdGFnUlNBS2V5UGFpcikpIHsKKwkKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsCisJCQkiWEtNU1JlZ2lzdGVyUmVzdWx0OjpnZXRSU0FLZXlQYWlyIC0gcHJpdmF0ZSBrZXkgZGlkIG5vdCBkZWNyeXB0IHRvIFJTQUtleVBhaXIiKTsKKwkKKwl9CisKKwlYU0VDbmV3KG1wX1JTQUtleVBhaXIsIFhLTVNSU0FLZXlQYWlySW1wbChtX21zZy5tcF9lbnYsIGtwKSk7CisJbXBfUlNBS2V5UGFpci0+bG9hZCgpOworCisJcmV0dXJuIG1wX1JTQUtleVBhaXI7Cit9CisKK1hFTkNFbmNyeXB0ZWREYXRhICogWEtNU1JlZ2lzdGVyUmVzdWx0SW1wbDo6c2V0UlNBS2V5UGFpcihjb25zdCBjaGFyICogcGFzc1BocmFzZSwKKwkJWE1MQ2ggKiBNb2R1bHVzLAorCQlYTUxDaCAqIEV4cG9uZW50LAorCQlYTUxDaCAqIFAsCisJCVhNTENoICogUSwKKwkJWE1MQ2ggKiBEUCwKKwkJWE1MQ2ggKiBEUSwKKwkJWE1MQ2ggKiBJbnZlcnNlUSwKKwkJWE1MQ2ggKiBELAorCQllbmNyeXB0aW9uTWV0aG9kIGVtLAorCQljb25zdCBYTUxDaCAqIGFsZ29yaXRobVVSSSkgeworCisJLy8gVHJ5IHRvIHNldCB1cCB0aGUga2V5IGZpcnN0IC0gaWYgdGhpcyBmYWlscywgZG9uJ3Qgd2FudCB0byBoYXZlIGFkZGVkIHRoZQorCS8vIFhNTAorCisJY29uc3QgWE1MQ2ggKiB1cmk7CisJc2FmZUJ1ZmZlciBhbGdvcml0aG1TQjsKKworCWlmIChlbSAhPSBFTkNSWVBUX05PTkUpIHsKKwkJaWYgKGVuY3J5cHRpb25NZXRob2QyVVJJKGFsZ29yaXRobVNCLCBlbSkgIT0gdHJ1ZSkgeworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsIAorCQkJCSJYS01TUmVnaXN0ZXJSZXN1bHQ6OnNldFJTQUtleVBhaXIgLSBVbmtub3duIGVuY3J5cHRpb24gbWV0aG9kIik7CisJCX0KKwkJdXJpID0gYWxnb3JpdGhtU0Iuc2JTdHJUb1hNTENoKCk7CisJfQorICAgIGVsc2UKKyAgICAgICAgdXJpID0gYWxnb3JpdGhtVVJJOworCisJLy8gRmluZCBpZiB3ZSBjYW4gZ2V0IGFuIGFsZ29yaXRobSBmb3IgdGhpcyBVUkkKKwlYU0VDQWxnb3JpdGhtSGFuZGxlciAqaGFuZGxlcjsKKworCWhhbmRsZXIgPSAKKwkJWFNFQ1BsYXRmb3JtVXRpbHM6OmdfYWxnb3JpdGhtTWFwcGVyLT5tYXBVUklUb0hhbmRsZXIoCisJCQl1cmkpOworCisJaWYgKGhhbmRsZXIgPT0gTlVMTCkgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwKKwkJCSJYS01TUmVnaXN0ZXJSZXN1bHQ6OnNldFJTQUtleVBhaXIgLSB1bmFibGUgdG8gaGFuZGxlIGFsZ29yaXRobSIpOworCX0KKworCXVuc2lnbmVkIGNoYXIga2J1ZltYU0VDX01BWF9IQVNIX1NJWkVdOworCXVuc2lnbmVkIGludCBsZW4gPSBDYWxjdWxhdGVYS01TS0VLKCh1bnNpZ25lZCBjaGFyICopIHBhc3NQaHJhc2UsIChpbnQpIHN0cmxlbihwYXNzUGhyYXNlKSwga2J1ZiwgWFNFQ19NQVhfSEFTSF9TSVpFKTsKKworICAgIGlmIChsZW4gPT0gMCkgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwKKwkJCSJYS01TUmVnaXN0ZXJSZXN1bHQ6OnNldFJTQUtleVBhaXIgLSBlcnJvciBkZXJpdmluZyBLRUsiKTsKKyAgICB9CisKKworCVhTRUNDcnlwdG9LZXkgKiBzayA9IGhhbmRsZXItPmNyZWF0ZUtleUZvclVSSSgKKwkJCQkJdXJpLAorCQkJCQkoWE1MQnl0ZSAqKSBrYnVmLAorCQkJCQlYU0VDX01BWF9IQVNIX1NJWkUpOworCisJbWVtc2V0KGtidWYsIDAsIFhTRUNfTUFYX0hBU0hfU0laRSk7CisKKwkvLyBHZXQgc29tZSBzZXR1cCB2YWx1ZXMKKwlzYWZlQnVmZmVyIHN0cjsKKwlET01Eb2N1bWVudCAqZG9jID0gbV9tc2cubXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpOworCWNvbnN0IFhNTENoICogcHJlZml4ID0gbV9tc2cubXBfZW52LT5nZXRYS01TTlNQcmVmaXgoKTsKKworCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgWEtNU0NvbnN0YW50czo6c190YWdQcml2YXRlS2V5KTsKKworCS8vIENyZWF0ZSBhIFByaXZhdGVLZXkgdG8gYWRkIHRoaXMgdG8KKwlET01FbGVtZW50ICogcGsgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TLCAKKwkJCQkJCQkJCQkJCXN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKworCW1fbXNnLm1wX2Vudi0+ZG9QcmV0dHlQcmludChwayk7CisKKwkvLyBBZGQgaXQgdG8gdGhlIHJlcXVlc3QgZG9jCisJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmFwcGVuZENoaWxkKHBrKTsKKwltX21zZy5tcF9lbnYtPmRvUHJldHR5UHJpbnQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOworCisJLy8gTm93IGNyZWF0ZSB0aGUgUlNBIHN0cnVjdHVyZQorCVhLTVNSU0FLZXlQYWlySW1wbCAqIHJzYTsKKwlYU0VDbmV3KHJzYSwgWEtNU1JTQUtleVBhaXJJbXBsKG1fbXNnLm1wX2VudikpOworCisJRE9NRWxlbWVudCAqIGUgPSAKKwkJcnNhLT5jcmVhdGVCbGFua1hLTVNSU0FLZXlQYWlySW1wbChNb2R1bHVzLCBFeHBvbmVudCwgUCwgUSwgRFAsIERRLCBJbnZlcnNlUSwgRCk7CisKKwkvLyBBZGQgaXQgdG8gdGhlIFByaXZhdGVLZXkKKwlway0+YXBwZW5kQ2hpbGQoZSk7CisJbV9tc2cubXBfZW52LT5kb1ByZXR0eVByaW50KHBrKTsKKworCS8vIEVuY3J5cHQgYWxsIG9mIHRoaXMgZm9yIGZ1dHVyZSB1c2UKKwlYRU5DQ2lwaGVyICogY2lwaGVyID0gbV9wcm92Lm5ld0NpcGhlcihtX21zZy5tcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCkpOworCWNpcGhlci0+c2V0S2V5KHNrKTsKKwljaXBoZXItPmVuY3J5cHRFbGVtZW50Q29udGVudChwaywgRU5DUllQVF9OT05FLCB1cmkpOworCisJLy8gTm93IGxvYWQgdGhlIGVuY3J5cHRlZCBkYXRhIGJhY2sgaW4KKwlyZXR1cm4gY2lwaGVyLT5sb2FkRW5jcnlwdGVkRGF0YShmaW5kRmlyc3RFbGVtZW50Q2hpbGQocGspKTsKKworfQkKKwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNSZWdpc3RlclJlc3VsdEltcGwuaHBwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNSZWdpc3RlclJlc3VsdEltcGwuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzMGE3Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU1JlZ2lzdGVyUmVzdWx0SW1wbC5ocHAKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNSZWdpc3RlclJlc3VsdEltcGwgOj0gSW1wbGVtZW50YXRpb24gb2YgUmVnaXN0ZXJSZXN1bHQgTWVzc2FnZXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEtNU1JFR0lTVEVSUkVTVUxUSU1QTF9JTkNMVURFCisjZGVmaW5lIFhLTVNSRUdJU1RFUlJFU1VMVElNUExfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNSZWdpc3RlclJlc3VsdC5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ1Byb3ZpZGVyLmhwcD4KKworI2luY2x1ZGUgIlhLTVNSZXN1bHRUeXBlSW1wbC5ocHAiCisKKyNpbmNsdWRlIDx2ZWN0b3I+CisKK2NsYXNzIFhLTVNLZXlCaW5kaW5nSW1wbDsKK2NsYXNzIFhLTVNSU0FLZXlQYWlySW1wbDsKK2NsYXNzIFhFTkNDaXBoZXJJbXBsOworCitjbGFzcyBYS01TUmVnaXN0ZXJSZXN1bHRJbXBsIDogcHVibGljIFhLTVNSZWdpc3RlclJlc3VsdCB7CisKK3B1YmxpYzoKKwlYS01TUmVzdWx0VHlwZUltcGwgbV9yZXN1bHQ7CisJWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsICZtX21zZzsKK3B1YmxpYzoKKworCVhLTVNSZWdpc3RlclJlc3VsdEltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYKKwkpOworCisJWEtNU1JlZ2lzdGVyUmVzdWx0SW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudiwgCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogbm9kZQorCSk7CisKKwl2aXJ0dWFsIH5YS01TUmVnaXN0ZXJSZXN1bHRJbXBsKCk7CisKKwkvLyBMb2FkIGVsZW1lbnRzCisJdm9pZCBsb2FkKCk7CisKKwkvLyBDcmVhdGlvbgorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogCisJCWNyZWF0ZUJsYW5rUmVnaXN0ZXJSZXN1bHQoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJY29uc3QgWE1MQ2ggKiBpZCwKKwkJUmVzdWx0TWFqb3Igcm1haiwKKwkJUmVzdWx0TWlub3Igcm1pbik7CisKKwkvLyBJbnRlcmZhY2UgbWV0aG9kcworCXZpcnR1YWwgaW50IGdldEtleUJpbmRpbmdTaXplKHZvaWQpIGNvbnN0OworCXZpcnR1YWwgWEtNU0tleUJpbmRpbmcgKiBnZXRLZXlCaW5kaW5nSXRlbShpbnQgaXRlbSkgY29uc3Q7CisJdmlydHVhbCBYS01TS2V5QmluZGluZyAqIGFwcGVuZEtleUJpbmRpbmdJdGVtKFhLTVNTdGF0dXM6OlN0YXR1c1ZhbHVlIHN0YXR1cyk7CisJdmlydHVhbCBYS01TUlNBS2V5UGFpciAqIGdldFJTQUtleVBhaXIoY29uc3QgY2hhciAqIHBhc3NQaHJhc2UpOworCXZpcnR1YWwgWEVOQ0VuY3J5cHRlZERhdGEgKiBzZXRSU0FLZXlQYWlyKGNvbnN0IGNoYXIgKiBwYXNzUGhyYXNlLAorCQlYTUxDaCAqIE1vZHVsdXMsCisJCVhNTENoICogRXhwb25lbnQsCisJCVhNTENoICogUCwKKwkJWE1MQ2ggKiBRLAorCQlYTUxDaCAqIERQLAorCQlYTUxDaCAqIERRLAorCQlYTUxDaCAqIEludmVyc2VRLAorCQlYTUxDaCAqIEQsCQkKKwkJZW5jcnlwdGlvbk1ldGhvZCBlbSwKKwkJY29uc3QgWE1MQ2ggKiBhbGdvcml0aG1VUkkgPSBOVUxMKTsKKworCisKKwkvKiBJbXBsZW1lbnRlZCBmcm9tIE1lc3NhZ2VBYnN0cmFjdFR5cGUgKi8KKwl2aXJ0dWFsIG1lc3NhZ2VUeXBlIGdldE1lc3NhZ2VUeXBlKHZvaWQpOworCisJLyogRm9yY2VkIGluaGVyaXRhbmNlIGZyb20gWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsICovCisJWEtNU19NRVNTQUdFQUJTVFJBQ1RZUEVfSU1QTF9NRVRIT0RTCisKKwkvKiBGb3JjZWQgaW5oZXJpdGFuY2UgZnJvbSBYS01TUmVzdWx0VHlwZUltcGwgKi8KKwlYS01TX1JFU1VMVFRZUEVfSU1QTF9NRVRIT0RTCisKK3ByaXZhdGU6CisKKyNpZiBkZWZpbmVkKFhTRUNfTk9fTkFNRVNQQUNFUykKKwl0eXBlZGVmIHZlY3RvcjxYS01TS2V5QmluZGluZ0ltcGwgKj4JCUtleUJpbmRpbmdWZWN0b3JUeXBlOworI2Vsc2UKKwl0eXBlZGVmIHN0ZDo6dmVjdG9yPFhLTVNLZXlCaW5kaW5nSW1wbCAqPglLZXlCaW5kaW5nVmVjdG9yVHlwZTsKKyNlbmRpZgorCisJS2V5QmluZGluZ1ZlY3RvclR5cGUJbV9rZXlCaW5kaW5nTGlzdDsKKwlYS01TUlNBS2V5UGFpckltcGwJCSogbXBfUlNBS2V5UGFpcjsKKworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiAgRE9NRWxlbWVudAorCQkJCQkJKiBtcF9wcml2YXRlS2V5RWxlbWVudDsKKworCS8vIFRvIGhhbmRsZSB0aGUgY2lwaGVyCisJWFNFQ1Byb3ZpZGVyCW1fcHJvdjsKKworCS8vIFVuaW1wbGVtZW50ZWQKKwlYS01TUmVnaXN0ZXJSZXN1bHRJbXBsKHZvaWQpOworCVhLTVNSZWdpc3RlclJlc3VsdEltcGwoY29uc3QgWEtNU1JlZ2lzdGVyUmVzdWx0SW1wbCAmKTsKKwlYS01TUmVnaXN0ZXJSZXN1bHRJbXBsICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU1JlZ2lzdGVyUmVzdWx0SW1wbCAmKTsKKworfTsKKworI2VuZGlmIC8qIFhLTVNSRUdJU1RFUlJFU1VMVElNUExfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNSZWlzc3VlS2V5QmluZGluZ0ltcGwuY3BwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNSZWlzc3VlS2V5QmluZGluZ0ltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwODYwZjkKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU1JlaXNzdWVLZXlCaW5kaW5nSW1wbC5jcHAKQEAgLTAsMCArMSwxMjcgQEAKKy8qDQorICogQ29weXJpZ2h0IDIwMDYgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qDQorICogWFNFQw0KKyAqDQorICogWEtNU1JlaXNzdWVLZXlCaW5kaW5nSW1wbCA6PSBJbXBsZW1lbnRhdGlvbiBmb3IgUmVpc3N1ZUtleUJpbmRpbmcNCisgKg0KKyAqICRJZCQNCisgKg0KKyAqLw0KKw0KKy8vIFhTRUMgSW5jbHVkZXMNCisNCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRW52LmhwcD4NCisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNDb25zdGFudHMuaHBwPg0KKw0KKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPg0KKw0KKyNpbmNsdWRlICJYS01TUmVpc3N1ZUtleUJpbmRpbmdJbXBsLmhwcCINCisjaW5jbHVkZSAiWEtNU1N0YXR1c0ltcGwuaHBwIg0KKw0KK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gICAgICAgICAgIENvbnN0cnVjdC9EZXN0cnVjdA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorWEtNU1JlaXNzdWVLZXlCaW5kaW5nSW1wbDo6WEtNU1JlaXNzdWVLZXlCaW5kaW5nSW1wbCgNCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYgDQorCQkpIDoNCitYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGwoZW52KSB7DQorCW1wX3N0YXR1cyA9IE5VTEw7DQorfQ0KKw0KK1hLTVNSZWlzc3VlS2V5QmluZGluZ0ltcGw6OlhLTVNSZWlzc3VlS2V5QmluZGluZ0ltcGwoDQorCQljb25zdCBYU0VDRW52ICogZW52LCANCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogbm9kZQ0KKwkJKSA6DQorWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsKGVudiwgbm9kZSkgew0KKw0KKwltcF9zdGF0dXMgPSBOVUxMOw0KK30NCisNCitYS01TUmVpc3N1ZUtleUJpbmRpbmdJbXBsOjp+WEtNU1JlaXNzdWVLZXlCaW5kaW5nSW1wbCgpIHsNCisNCisJaWYgKG1wX3N0YXR1cyAhPSBOVUxMKQ0KKwkJZGVsZXRlIG1wX3N0YXR1czsNCisNCit9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyAgICAgICAgICAgTG9hZCBmcm9tIERPTQ0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQordm9pZCBYS01TUmVpc3N1ZUtleUJpbmRpbmdJbXBsOjpsb2FkKHZvaWQpIHsNCisNCisJaWYgKG1wX2tleUJpbmRpbmdBYnN0cmFjdFR5cGVFbGVtZW50ID09IE5VTEwpIHsNCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWRYS01TQ2hpbGROb3RGb3VuZCwNCisJCQkiWEtNU1JlaXNzdWVLZXlCaW5kaW5nSW1wbDo6bG9hZCAtIGNhbGxlZCBvbiBlbXB0eSBET00iKTsNCisJfQ0KKw0KKwlYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGw6OmxvYWQoKTsNCisNCisJLyogRmluZCB0aGUgc3RhdHVzIGVsZW1lbnQgKi8NCisJRE9NTm9kZUxpc3QgKiBubCA9IG1wX2tleUJpbmRpbmdBYnN0cmFjdFR5cGVFbGVtZW50LT5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKA0KKwkJWEtNU0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWEtNUywNCisJCVhLTVNDb25zdGFudHM6OnNfdGFnU3RhdHVzKTsNCisNCisJaWYgKG5sID09IE5VTEwgfHwgbmwtPmdldExlbmd0aCgpICE9IDEpIHsNCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWRYS01TQ2hpbGROb3RGb3VuZCwNCisJCQkiWEtNU1JlaXNzdWVLZXlCaW5kaW5nOjpsb2FkIC0gU3RhdHVzIHZhbHVlIG5vdCBmb3VuZCIpOw0KKwl9DQorDQorCVhTRUNuZXcobXBfc3RhdHVzLCBYS01TU3RhdHVzSW1wbChtcF9lbnYsIChET01FbGVtZW50KikgbmwtPml0ZW0oMCkpKTsNCisJbXBfc3RhdHVzLT5sb2FkKCk7DQorDQorfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gICAgICAgICAgIENyZWF0ZQ0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorRE9NRWxlbWVudCAqIFhLTVNSZWlzc3VlS2V5QmluZGluZ0ltcGw6OmNyZWF0ZUJsYW5rUmVpc3N1ZUtleUJpbmRpbmcoWEtNU1N0YXR1czo6U3RhdHVzVmFsdWUgc3RhdHVzKSB7DQorDQorCURPTUVsZW1lbnQgKiByZXQgPSBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGw6Og0KKwkJCQljcmVhdGVCbGFua0tleUJpbmRpbmdBYnN0cmFjdFR5cGUoWEtNU0NvbnN0YW50czo6c190YWdSZWlzc3VlS2V5QmluZGluZyk7DQorDQorCW1wX2Vudi0+ZG9QcmV0dHlQcmludChyZXQpOw0KKw0KKwkvLyBDcmVhdGUgdGhlIHN0YXR1cyBlbGVtZW50DQorCVhTRUNuZXcobXBfc3RhdHVzLCBYS01TU3RhdHVzSW1wbChtcF9lbnYpKTsNCisJcmV0LT5hcHBlbmRDaGlsZChtcF9zdGF0dXMtPmNyZWF0ZUJsYW5rU3RhdHVzKHN0YXR1cykpOw0KKwltcF9lbnYtPmRvUHJldHR5UHJpbnQocmV0KTsNCisNCisJLy8gTXVzdCBoYXZlIGFuIElkDQorCVhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6c2V0SWQoKTsNCisNCisJcmV0dXJuIHJldDsNCisNCit9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyAgICAgICAgICAgU3RhdHVzIGhhbmRsaW5nDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitYS01TU3RhdHVzICogWEtNU1JlaXNzdWVLZXlCaW5kaW5nSW1wbDo6Z2V0U3RhdHVzKHZvaWQpIGNvbnN0IHsNCisNCisJcmV0dXJuIG1wX3N0YXR1czsNCisNCit9DQorDQpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNSZWlzc3VlS2V5QmluZGluZ0ltcGwuaHBwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNSZWlzc3VlS2V5QmluZGluZ0ltcGwuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmZmZiYjAKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU1JlaXNzdWVLZXlCaW5kaW5nSW1wbC5ocHAKQEAgLTAsMCArMSw3OCBAQAorLyoNCisgKiBDb3B5cmlnaHQgMjAwNiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoNCisgKiBYU0VDDQorICoNCisgKiBYS01TUmVpc3N1ZUtleUJpbmRpbmcgOj0gSW1wbGVtZW50YXRpb24gZm9yIFJlaXNzdWVLZXlCaW5kaW5nDQorICoNCisgKiAkSWQkDQorICoNCisgKi8NCisNCisjaWZuZGVmIFhLTVNSRUlTU1VFS0VZQklORElOR0lNUExfSU5DTFVERSANCisjZGVmaW5lIFhLTVNSRUlTU1VFS0VZQklORElOR0lNUExfSU5DTFVERSANCisNCisvLyBYU0VDIEluY2x1ZGVzDQorDQorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4NCisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNSZWlzc3VlS2V5QmluZGluZy5ocHA+DQorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TU3RhdHVzLmhwcD4NCisNCisjaW5jbHVkZSAiWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsLmhwcCINCisNCitjbGFzcyBYS01TU3RhdHVzSW1wbDsNCisNCitjbGFzcyBYS01TUmVpc3N1ZUtleUJpbmRpbmdJbXBsIDogcHVibGljIFhLTVNSZWlzc3VlS2V5QmluZGluZywgcHVibGljIFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbCB7DQorDQorcHVibGljOg0KKw0KKwlYS01TUmVpc3N1ZUtleUJpbmRpbmdJbXBsKA0KKwkJY29uc3QgWFNFQ0VudiAqIGVudg0KKwkpOw0KKw0KKwlYS01TUmVpc3N1ZUtleUJpbmRpbmdJbXBsKA0KKwkJY29uc3QgWFNFQ0VudiAqIGVudiwgDQorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIG5vZGUNCisJKTsNCisNCisJdmlydHVhbCB+WEtNU1JlaXNzdWVLZXlCaW5kaW5nSW1wbCgpIDsNCisNCisJLy8gTG9hZA0KKwl2b2lkIGxvYWQodm9pZCk7DQorDQorCS8vIENyZWF0ZQ0KKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqDQorCQljcmVhdGVCbGFua1JlaXNzdWVLZXlCaW5kaW5nKFhLTVNTdGF0dXM6OlN0YXR1c1ZhbHVlIHN0YXR1cyk7DQorDQorCS8vIEludGVyZmFjZQ0KKwl2aXJ0dWFsIFhLTVNTdGF0dXMgKiBnZXRTdGF0dXModm9pZCkgY29uc3Q7DQorDQorCS8vIEltcG9ydCBtZXRob2RzIGZyb20gWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGUNCisJWEtNU19LRVlCSU5ESU5HQUJTVFJBQ1RZUEVfSU1QTF9NRVRIT0RTDQorDQorcHJpdmF0ZToNCisNCisJWEtNU1N0YXR1c0ltcGwJCSogbXBfc3RhdHVzOw0KKw0KKwkvLyBVbmltcGxlbWVudGVkDQorCVhLTVNSZWlzc3VlS2V5QmluZGluZ0ltcGwodm9pZCk7DQorCVhLTVNSZWlzc3VlS2V5QmluZGluZ0ltcGwoY29uc3QgWEtNU1JlaXNzdWVLZXlCaW5kaW5nSW1wbCAmKTsNCisJWEtNU1JlaXNzdWVLZXlCaW5kaW5nSW1wbCAmIG9wZXJhdG9yID0gKGNvbnN0IFhLTVNSZWlzc3VlS2V5QmluZGluZ0ltcGwgJik7DQorDQorfTsNCisNCisjZW5kaWYgLyogWEtNU1JFSVNTVUVLRVlCSU5ESU5HSU1QTF9JTkNMVURFICovDQpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNSZWlzc3VlUmVxdWVzdEltcGwuY3BwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNSZWlzc3VlUmVxdWVzdEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMWEzZDEKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU1JlaXNzdWVSZXF1ZXN0SW1wbC5jcHAKQEAgLTAsMCArMSwzNDUgQEAKKy8qDQorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoNCisgKiBYU0VDDQorICoNCisgKiBYS01TUmVpc3N1ZVJlcXVlc3RJbXBsIDo9IEltcGxlbWVudGF0aW9uIGZvciBSZWlzc3VlUmVxdWVzdCBNZXNzYWdlcw0KKyAqDQorICogJElkOiBYS01TUmVpc3N1ZVJlcXVlc3RJbXBsLmNwcCAzNTEzNjYgMjAwNS0wNi0wNCAxMTo0NDo1NVogYmxhdXRlbmIgJA0KKyAqDQorICovDQorDQorLy8gWFNFQyBJbmNsdWRlcw0KKw0KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+DQorDQorI2luY2x1ZGUgPHhzZWMvZHNpZy9EU0lHUmVmZXJlbmNlLmhwcD4NCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vudi5ocHA+DQorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+DQorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4NCisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNDb25zdGFudHMuaHBwPg0KKw0KKyNpbmNsdWRlICJYS01TUmVpc3N1ZVJlcXVlc3RJbXBsLmhwcCINCisjaW5jbHVkZSAiWEtNU0F1dGhlbnRpY2F0aW9uSW1wbC5ocHAiDQorI2luY2x1ZGUgIlhLTVNSZWlzc3VlS2V5QmluZGluZ0ltcGwuaHBwIg0KKw0KKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPg0KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MVW5pRGVmcy5ocHA+DQorDQorWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyAgICAgICAgICAgQ29uc3RydWN0L0Rlc3RydWN0DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitYS01TUmVpc3N1ZVJlcXVlc3RJbXBsOjpYS01TUmVpc3N1ZVJlcXVlc3RJbXBsKGNvbnN0IFhTRUNFbnYgKiBlbnYpIDoNCittX3JlcXVlc3QoZW52KSwNCittX21zZyhtX3JlcXVlc3QubV9tc2cpLA0KK21wX2F1dGhlbnRpY2F0aW9uKE5VTEwpLA0KK21wX3JlaXNzdWVLZXlCaW5kaW5nKE5VTEwpLA0KK21wX3Byb29mT2ZQb3NzZXNzaW9uU2lnbmF0dXJlKE5VTEwpIHsNCit9DQorDQorWEtNU1JlaXNzdWVSZXF1ZXN0SW1wbDo6WEtNU1JlaXNzdWVSZXF1ZXN0SW1wbChjb25zdCBYU0VDRW52ICogZW52LCBET01FbGVtZW50ICogbm9kZSkgOg0KK21fcmVxdWVzdChlbnYsIG5vZGUpLA0KK21fbXNnKG1fcmVxdWVzdC5tX21zZyksDQorbXBfYXV0aGVudGljYXRpb24oTlVMTCksDQorbXBfcmVpc3N1ZUtleUJpbmRpbmcoTlVMTCksDQorbXBfcHJvb2ZPZlBvc3Nlc3Npb25TaWduYXR1cmUoTlVMTCkgew0KK30NCisNCitYS01TUmVpc3N1ZVJlcXVlc3RJbXBsOjp+WEtNU1JlaXNzdWVSZXF1ZXN0SW1wbCgpIHsNCisNCisJaWYgKG1wX2F1dGhlbnRpY2F0aW9uICE9IE5VTEwpDQorCQlkZWxldGUgbXBfYXV0aGVudGljYXRpb247DQorCWlmIChtcF9yZWlzc3VlS2V5QmluZGluZyAhPSBOVUxMKQ0KKwkJZGVsZXRlIG1wX3JlaXNzdWVLZXlCaW5kaW5nOw0KKwkvLyBQcm92aWRlciB3aWxsIHRha2UgY2FyZSBvZiB0aGUgcHJvb2ZPZlBvc3Nlc3Npb24gc2lnbmF0dXJlDQorDQorfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gICAgICAgICAgIExvYWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK3ZvaWQgWEtNU1JlaXNzdWVSZXF1ZXN0SW1wbDo6bG9hZCh2b2lkKSB7DQorDQorCWlmIChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCA9PSBOVUxMKSB7DQorDQorCQkvLyBBdHRlbXB0IHRvIGxvYWQgYW4gZW1wdHkgZWxlbWVudA0KKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsDQorCQkJIlhLTVNSZWlzc3VlUmVxdWVzdDo6bG9hZCAtIGNhbGxlZCBvbiBlbXB0eSBET00iKTsNCisNCisJfQ0KKw0KKwlpZiAoIXN0ckVxdWFscyhnZXRYS01TTG9jYWxOYW1lKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KSwgDQorCQkJCQkJCQkJWEtNU0NvbnN0YW50czo6c190YWdSZWlzc3VlUmVxdWVzdCkpIHsNCisJDQorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwNCisJCQkiWEtNU1JlaXNzdWVSZXF1ZXN0Ojpsb2FkIC0gY2FsbGVkIG9uIGluY29ycmVjdCBub2RlIik7DQorCQ0KKwl9DQorDQorCS8vIExvYWQgdGhlIGJhc2UgbWVzc2FnZQ0KKwltX3JlcXVlc3QubG9hZCgpOw0KKw0KKwkvLyBOb3cgY2hlY2sgZm9yIGFueSBSZWlzc3VlS2V5QmluZGluZyBlbGVtZW50cw0KKwlET01FbGVtZW50ICogdG1wRWx0ID0gZmluZEZpcnN0RWxlbWVudENoaWxkKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KTsNCisJd2hpbGUgKHRtcEVsdCAhPSBOVUxMICYmICFzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZSh0bXBFbHQpLCBYS01TQ29uc3RhbnRzOjpzX3RhZ1JlaXNzdWVLZXlCaW5kaW5nKSkgew0KKwkJdG1wRWx0ID0gZmluZE5leHRFbGVtZW50Q2hpbGQodG1wRWx0KTsNCisJfQ0KKw0KKwlpZiAodG1wRWx0ICE9IE5VTEwpIHsNCisNCisJCVhTRUNuZXcobXBfcmVpc3N1ZUtleUJpbmRpbmcsIFhLTVNSZWlzc3VlS2V5QmluZGluZ0ltcGwobV9tc2cubXBfZW52LCB0bXBFbHQpKTsNCisJCW1wX3JlaXNzdWVLZXlCaW5kaW5nLT5sb2FkKCk7DQorDQorCQl0bXBFbHQgPSBmaW5kTmV4dEVsZW1lbnRDaGlsZCh0bXBFbHQpOw0KKw0KKwl9DQorCWVsc2Ugew0KKw0KKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZFhLTVNDaGlsZE5vdEZvdW5kLA0KKwkJCSJYS01TUmVpc3N1ZVJlcXVlc3Q6OmxvYWQgLSBFeHBlY3RlZCBSZWlzc3VlS2V5QmluZGluZyBub2RlIik7DQorCQ0KKwl9DQorDQorCS8vIEF1dGhlbnRpY2F0aW9uIEVsZW1lbnQNCisNCisJaWYgKHRtcEVsdCAhPSBOVUxMICYmIHN0ckVxdWFscyhnZXRYS01TTG9jYWxOYW1lKHRtcEVsdCksIFhLTVNDb25zdGFudHM6OnNfdGFnQXV0aGVudGljYXRpb24pKSB7DQorDQorCQlYU0VDbmV3KG1wX2F1dGhlbnRpY2F0aW9uLCBYS01TQXV0aGVudGljYXRpb25JbXBsKG1fbXNnLm1wX2VudiwgdG1wRWx0KSk7DQorCQltcF9hdXRoZW50aWNhdGlvbi0+bG9hZChtcF9yZWlzc3VlS2V5QmluZGluZy0+Z2V0SWQoKSk7DQorDQorCQl0bXBFbHQgPSBmaW5kTmV4dEVsZW1lbnRDaGlsZCh0bXBFbHQpOw0KKw0KKwl9DQorCWVsc2Ugew0KKw0KKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZFhLTVNDaGlsZE5vdEZvdW5kLA0KKwkJCSJYS01TUmVpc3N1ZVJlcXVlc3Q6OmxvYWQgLSBFeHBlY3RlZCBBdXRoZW50aWNhdGlvbiBub2RlIik7DQorCQ0KKwl9DQorDQorCWlmICh0bXBFbHQgIT0gTlVMTCAmJiBzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZSh0bXBFbHQpLCBYS01TQ29uc3RhbnRzOjpzX3RhZ1Byb29mT2ZQb3NzZXNzaW9uKSkgew0KKw0KKwkJLy8gRmluZCB0aGUgc2lnbmF0dXJlDQorDQorCQlET01FbGVtZW50ICogc2lnRWx0ID0gKERPTUVsZW1lbnQgKikgZmluZEZpcnN0RWxlbWVudENoaWxkKHRtcEVsdCk7DQorDQorCQlpZiAoc2lnRWx0ID09IE5VTEwgfHwgIXN0ckVxdWFscyhnZXREU0lHTG9jYWxOYW1lKHNpZ0VsdCksIA0KKwkJCVhLTVNDb25zdGFudHM6OnNfdGFnU2lnbmF0dXJlKSkgew0KKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWRYS01TQ2hpbGROb3RGb3VuZCwNCisJCQkJIlhLTVNSZWlzc3VlUmVxdWVzdDo6bG9hZCAtIEV4cGVjdGVkIFNpZ25hdHVyZSBjaGlsZCBvZiBQcm9vZk9mUG9zc2Vzc2lvbiIpOw0KKw0KKwkJfQ0KKw0KKwkJLy8gVGhlIHByb3ZpZGVyIHdpbGwgdGFrZSBjYXJlIG9mIGNsZWFuaW5nIHRoaXMgdXAgbGF0ZXIuDQorDQorCQltcF9wcm9vZk9mUG9zc2Vzc2lvblNpZ25hdHVyZSA9IG1fcHJvdi5uZXdTaWduYXR1cmVGcm9tRE9NKG1fbXNnLm1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKSwgDQorCQkJCQkJCQkJCQkJCSAgc2lnRWx0KTsNCisJCW1wX3Byb29mT2ZQb3NzZXNzaW9uU2lnbmF0dXJlLT5sb2FkKCk7DQorDQorCQkvLyBDaGVjayB0aGUgc2lnbmF0dXJlIGlzIGFjcm9zcyB0aGUgY29ycmVjdCBpbnB1dA0KKwkJCQ0KKwkJRFNJR1JlZmVyZW5jZUxpc3QgKiBybCA9IA0KKwkJCW1wX3Byb29mT2ZQb3NzZXNzaW9uU2lnbmF0dXJlLT5nZXRSZWZlcmVuY2VMaXN0KCk7DQorDQorCQlpZiAocmwtPmdldFNpemUoKSAhPSAxKSB7DQorCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsDQorCQkJCSJYS01TUmVpc3N1ZVJlcXVlc3RJbXBsOjpsb2FkIC0gUHJvb2ZPZlBvc3Nlc3Npb24gU2lnbmF0dXJlIHdpdGggaW5jb3JyZWN0IG51bWJlciBvZiByZWZlcmVuY2VzIGZvdW5kIChzaG91bGQgYmUgMSkiKTsNCisJCX0NCisNCisJCXNhZmVCdWZmZXIgc2I7DQorCQlzYi5zYlhNTENoSW4oRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyRW1wdHkpOw0KKwkJc2Iuc2JYTUxDaEFwcGVuZENoKGNoUG91bmQpOw0KKwkJc2Iuc2JYTUxDaENhdChtcF9yZWlzc3VlS2V5QmluZGluZy0+Z2V0SWQoKSk7DQorDQorCQlpZiAoIXN0ckVxdWFscyhybC0+aXRlbSgwKS0+Z2V0VVJJKCksIHNiLnJhd1hNTENoQnVmZmVyKCkpKSB7DQorCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsDQorCQkJCSJYS01TUmVpc3N1ZVJlcXVlc3RJbXBsOjpsb2FkIC0gUHJvb2ZPZlBvc3Nlc3Npb24gU2lnbmF0dXJlIHJlZmVycyB0byBpbmNvcnJlY3QgSWQgKHNob3VsZCBiZSBmb3IgUmVpc3N1ZUtleUJpbmRpbmcpIik7DQorCQl9DQorDQorCQkvLyBXZSBkb24ndCBhY3R1YWxseSBjaGVjayB0aGUgc2lnbmF0dXJlIGFzIHdlIGhhdmUgbm8ga2V5IG1hdGVyaWFsIHRvIGRvIHNvIQ0KKwl9DQorfQ0KKwkNCisJDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyAgICAgICAgICAgQ3JlYXRlDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitET01FbGVtZW50ICogWEtNU1JlaXNzdWVSZXF1ZXN0SW1wbDo6DQorCWNyZWF0ZUJsYW5rUmVpc3N1ZVJlcXVlc3QoY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLCBjb25zdCBYTUxDaCAqIGlkKSB7DQorDQorCXJldHVybiBtX3JlcXVlc3QuY3JlYXRlQmxhbmtSZXF1ZXN0QWJzdHJhY3RUeXBlKA0KKwkJWEtNU0NvbnN0YW50czo6c190YWdSZWlzc3VlUmVxdWVzdCwgc2VydmljZSwgaWQpOw0KKw0KK30NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vICAgICAgICAgICBNZXNzYWdlVHlwZSANCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK1hLTVNNZXNzYWdlQWJzdHJhY3RUeXBlOjptZXNzYWdlVHlwZSBYS01TUmVpc3N1ZVJlcXVlc3RJbXBsOjpnZXRNZXNzYWdlVHlwZSh2b2lkKSB7DQorDQorCXJldHVybiBYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGw6OlJlaXNzdWVSZXF1ZXN0Ow0KKw0KK30NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vICAgICAgICAgICBHZXQgTWV0aG9kcw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorWEtNU1JlaXNzdWVLZXlCaW5kaW5nICogWEtNU1JlaXNzdWVSZXF1ZXN0SW1wbDo6Z2V0UmVpc3N1ZUtleUJpbmRpbmcodm9pZCkgY29uc3Qgew0KKw0KKwlyZXR1cm4gbXBfcmVpc3N1ZUtleUJpbmRpbmc7DQorDQorfQ0KKw0KK1hLTVNBdXRoZW50aWNhdGlvbiAqIFhLTVNSZWlzc3VlUmVxdWVzdEltcGw6OmdldEF1dGhlbnRpY2F0aW9uICh2b2lkKSBjb25zdCB7DQorDQorCXJldHVybiBtcF9hdXRoZW50aWNhdGlvbjsNCisNCit9DQorDQorRFNJR1NpZ25hdHVyZSAqIFhLTVNSZWlzc3VlUmVxdWVzdEltcGw6OmdldFByb29mT2ZQb3NzZXNzaW9uU2lnbmF0dXJlKHZvaWQpIGNvbnN0IHsNCisNCisJcmV0dXJuIG1wX3Byb29mT2ZQb3NzZXNzaW9uU2lnbmF0dXJlOw0KKw0KK30NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vICAgICAgICAgICBTZXQgTWV0aG9kcw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorWEtNU1JlaXNzdWVLZXlCaW5kaW5nICogWEtNU1JlaXNzdWVSZXF1ZXN0SW1wbDo6YWRkUmVpc3N1ZUtleUJpbmRpbmcoWEtNU1N0YXR1czo6U3RhdHVzVmFsdWUgc3RhdHVzKSB7DQorDQorCWlmIChtcF9yZWlzc3VlS2V5QmluZGluZyAhPSBOVUxMKQ0KKwkJcmV0dXJuIG1wX3JlaXNzdWVLZXlCaW5kaW5nOw0KKw0KKw0KKwkvLyBPSyAtIE5vdGhpbmcgZXhpc3RzLCBzbyB3ZSBuZWVkIHRvIGNyZWF0ZSBmcm9tIHNjcmF0Y2gNCisNCisJWFNFQ25ldyhtcF9yZWlzc3VlS2V5QmluZGluZywgWEtNU1JlaXNzdWVLZXlCaW5kaW5nSW1wbChtX21zZy5tcF9lbnYpKTsNCisJRE9NRWxlbWVudCAqIGVsdCA9IG1wX3JlaXNzdWVLZXlCaW5kaW5nLT5jcmVhdGVCbGFua1JlaXNzdWVLZXlCaW5kaW5nKHN0YXR1cyk7DQorDQorCS8vIEluc2VydA0KKw0KKwlET01FbGVtZW50ICogYmUgPSBmaW5kRmlyc3RFbGVtZW50Q2hpbGQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOw0KKw0KKwl3aGlsZSAoYmUgIT0gTlVMTCAmJiANCisJCSFzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZShiZSksIFhLTVNDb25zdGFudHM6OnNfdGFnQXV0aGVudGljYXRpb24pICYmDQorCQkhc3RyRXF1YWxzKGdldFhLTVNMb2NhbE5hbWUoYmUpLCBYS01TQ29uc3RhbnRzOjpzX3RhZ1Byb29mT2ZQb3NzZXNzaW9uKSkgew0KKwkJYmUgPSBmaW5kTmV4dEVsZW1lbnRDaGlsZChiZSk7DQorCX0NCisNCisJaWYgKGJlID09IE5VTEwpIHsNCisJCW1fbXNnLm1wX2Vudi0+ZG9QcmV0dHlQcmludChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCk7DQorCQltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+YXBwZW5kQ2hpbGQoZWx0KTsNCisJCW1fbXNnLm1wX2Vudi0+ZG9QcmV0dHlQcmludChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCk7DQorCQlyZXR1cm4gbXBfcmVpc3N1ZUtleUJpbmRpbmc7DQorCX0NCisNCisJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmluc2VydEJlZm9yZShlbHQsIGJlKTsNCisJaWYgKG1fbXNnLm1wX2Vudi0+Z2V0UHJldHR5UHJpbnRGbGFnKCkgPT0gdHJ1ZSkgew0KKwkJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmluc2VydEJlZm9yZSgNCisJCQltX21zZy5tcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCktPmNyZWF0ZVRleHROb2RlKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ck5MKSwNCisJCQliZSk7DQorCX0NCisNCisJcmV0dXJuIG1wX3JlaXNzdWVLZXlCaW5kaW5nOw0KKw0KK30NCisNCitYS01TQXV0aGVudGljYXRpb24gKiBYS01TUmVpc3N1ZVJlcXVlc3RJbXBsOjphZGRBdXRoZW50aWNhdGlvbih2b2lkKSB7DQorDQorCWlmIChtcF9hdXRoZW50aWNhdGlvbiAhPSBOVUxMKQ0KKwkJcmV0dXJuIG1wX2F1dGhlbnRpY2F0aW9uOw0KKw0KKwlpZiAobXBfcmVpc3N1ZUtleUJpbmRpbmcgPT0gTlVMTCkgew0KKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsDQorCQkJIlhLTVNSZWlzc3VlUmVxdWVzdEltcGw6OmFkZEF1dGhlbnRpY2F0aW9uIC0gY2FsbGVkIHByaW9yIHRvIGtleSBpbmZvcyBiZWluZyBhZGRlZCIpOw0KKwl9DQorDQorCVhTRUNuZXcobXBfYXV0aGVudGljYXRpb24sIFhLTVNBdXRoZW50aWNhdGlvbkltcGwobV9tc2cubXBfZW52KSk7DQorCURPTUVsZW1lbnQgKiBlID0gDQorCQltcF9hdXRoZW50aWNhdGlvbi0+Y3JlYXRlQmxhbmtBdXRoZW50aWNhdGlvbihtcF9yZWlzc3VlS2V5QmluZGluZy0+Z2V0SWQoKSk7DQorDQorCURPTUVsZW1lbnQgKiBiZSA9IGZpbmRGaXJzdEVsZW1lbnRDaGlsZChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCk7DQorDQorCXdoaWxlIChiZSAhPSBOVUxMICYmICFzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZShiZSksIFhLTVNDb25zdGFudHM6OnNfdGFnUHJvb2ZPZlBvc3Nlc3Npb24pKQ0KKwkJYmUgPSBmaW5kTmV4dEVsZW1lbnRDaGlsZChiZSk7DQorDQorCWlmIChiZSA9PSBOVUxMKSB7DQorCQltX21zZy5tcF9lbnYtPmRvUHJldHR5UHJpbnQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOw0KKwkJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmFwcGVuZENoaWxkKGUpOw0KKwkJbV9tc2cubXBfZW52LT5kb1ByZXR0eVByaW50KG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KTsNCisJCXJldHVybiBtcF9hdXRoZW50aWNhdGlvbjsNCisJfQ0KKw0KKwltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+aW5zZXJ0QmVmb3JlKGUsIGJlKTsNCisJaWYgKG1fbXNnLm1wX2Vudi0+Z2V0UHJldHR5UHJpbnRGbGFnKCkgPT0gdHJ1ZSkgew0KKwkJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmluc2VydEJlZm9yZSgNCisJCQltX21zZy5tcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCktPmNyZWF0ZVRleHROb2RlKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ck5MKSwNCisJCQliZSk7DQorCX0NCisNCisJcmV0dXJuIG1wX2F1dGhlbnRpY2F0aW9uOw0KKw0KK30NCisNCitEU0lHU2lnbmF0dXJlICogWEtNU1JlaXNzdWVSZXF1ZXN0SW1wbDo6YWRkUHJvb2ZPZlBvc3Nlc3Npb25TaWduYXR1cmUoDQorCQljYW5vbmljYWxpemF0aW9uTWV0aG9kIGNtLA0KKwkJc2lnbmF0dXJlTWV0aG9kCXNtLA0KKwkJaGFzaE1ldGhvZCBobSkgew0KKw0KKwlEU0lHU2lnbmF0dXJlICogcmV0ID0gbV9wcm92Lm5ld1NpZ25hdHVyZSgpOw0KKwlET01FbGVtZW50ICogZWx0ID0gcmV0LT5jcmVhdGVCbGFua1NpZ25hdHVyZShtX21zZy5tcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCksIGNtLCBzbSwgaG0pOw0KKw0KKwkvKiBDcmVhdGUgdGhlIGVudmVsb3BpbmcgcmVmZXJlbmNlICovDQorCXNhZmVCdWZmZXIgc2I7DQorCXNiLnNiWE1MQ2hJbihEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJFbXB0eSk7DQorCXNiLnNiWE1MQ2hBcHBlbmRDaChjaFBvdW5kKTsNCisJc2Iuc2JYTUxDaENhdChtcF9yZWlzc3VlS2V5QmluZGluZy0+Z2V0SWQoKSk7DQorDQorCURTSUdSZWZlcmVuY2UgKnJlZiA9IHJldC0+Y3JlYXRlUmVmZXJlbmNlKHNiLnJhd1hNTENoQnVmZmVyKCkpOw0KKwlyZWYtPmFwcGVuZENhbm9uaWNhbGl6YXRpb25UcmFuc2Zvcm0oQ0FOT05fQzE0TkVfQ09NKTsNCisNCisJLyogRW1iZWQgdGhlIHNpZ25hdHVyZSBpbiB0aGUgZG9jdW1lbnQgaW5zaWRlIGEgS2V5QmluZGluZ0F1dGhlbnRpY2F0aW9uIGVsZW1lbnQgKi8NCisJc2FmZUJ1ZmZlciBzdHI7DQorCURPTURvY3VtZW50ICpkb2MgPSBtX21zZy5tcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCk7DQorCWNvbnN0IFhNTENoICogcHJlZml4ID0gbV9tc2cubXBfZW52LT5nZXRYS01TTlNQcmVmaXgoKTsNCisNCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCBYS01TQ29uc3RhbnRzOjpzX3RhZ1Byb29mT2ZQb3NzZXNzaW9uKTsNCisNCisJRE9NRWxlbWVudCAqIHQgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TLCANCisJCQkJCQkJCQkJCQlzdHIucmF3WE1MQ2hCdWZmZXIoKSk7DQorDQorCW1fbXNnLm1wX2Vudi0+ZG9QcmV0dHlQcmludCh0KTsNCisJdC0+YXBwZW5kQ2hpbGQoZWx0KTsNCisJbV9tc2cubXBfZW52LT5kb1ByZXR0eVByaW50KHQpOw0KKw0KKwkvLyBOb3cgYXBwZW5kIGludG8gdGhlIFJlaXNzdWVSZXF1ZXN0DQorCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5hcHBlbmRDaGlsZCh0KTsNCisJbV9tc2cubXBfZW52LT5kb1ByZXR0eVByaW50KG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KTsNCisNCisJcmV0dXJuIHJldDsNCit9DQorDQorDQorDQpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNSZWlzc3VlUmVxdWVzdEltcGwuaHBwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNSZWlzc3VlUmVxdWVzdEltcGwuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3MTc1MjEKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU1JlaXNzdWVSZXF1ZXN0SW1wbC5ocHAKQEAgLTAsMCArMSwxMDYgQEAKKy8qDQorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoNCisgKiBYU0VDDQorICoNCisgKiBYS01TUmVpc3N1ZVJlcXVlc3RJbXBsIDo9IEltcGxlbWVudGF0aW9uIGZvciBSZWlzc3VlUmVxdWVzdCBNZXNzYWdlcw0KKyAqDQorICogJElkJA0KKyAqDQorICovDQorDQorI2lmbmRlZiBYS01TUkVJU1NVRVJFUVVFU1RJTVBMX0lOQ0xVREUNCisjZGVmaW5lIFhLTVNSRUlTU1VFUkVRVUVTVElNUExfSU5DTFVERQ0KKw0KKy8vIFhTRUMgSW5jbHVkZXMNCisNCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1JlaXNzdWVSZXF1ZXN0LmhwcD4NCisjaW5jbHVkZSAiWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsLmhwcCINCisNCitjbGFzcyBYS01TQXV0aGVudGljYXRpb25JbXBsOw0KK2NsYXNzIFhLTVNSZWlzc3VlS2V5QmluZGluZ0ltcGw7DQorY2xhc3MgRFNJR1NpZ25hdHVyZTsNCisNCitjbGFzcyBYS01TUmVpc3N1ZVJlcXVlc3RJbXBsIDogcHVibGljIFhLTVNSZWlzc3VlUmVxdWVzdCB7DQorDQorcHVibGljOiANCisJWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsIG1fcmVxdWVzdDsNCisJWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsICZtX21zZzsNCitwdWJsaWM6DQorDQorCVhLTVNSZWlzc3VlUmVxdWVzdEltcGwoDQorCQljb25zdCBYU0VDRW52ICogZW52DQorCSk7DQorDQorCVhLTVNSZWlzc3VlUmVxdWVzdEltcGwoDQorCQljb25zdCBYU0VDRW52ICogZW52LCANCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogbm9kZQ0KKwkpOw0KKw0KKwl2aXJ0dWFsIH5YS01TUmVpc3N1ZVJlcXVlc3RJbXBsKCk7DQorDQorCS8vIExvYWQgZWxlbWVudHMNCisJdm9pZCBsb2FkKCk7DQorDQorCS8vIENyZWF0aW9uDQorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogDQorCQljcmVhdGVCbGFua1JlaXNzdWVSZXF1ZXN0KA0KKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLA0KKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpOw0KKw0KKw0KKwkvKiBHZXR0ZXIgSW50ZXJmYWNlIE1ldGhvZHMgKi8NCisJdmlydHVhbCBYS01TUmVpc3N1ZUtleUJpbmRpbmcgKiBnZXRSZWlzc3VlS2V5QmluZGluZyh2b2lkKSBjb25zdDsNCisJdmlydHVhbCBYS01TQXV0aGVudGljYXRpb24gKiBnZXRBdXRoZW50aWNhdGlvbiAodm9pZCkgY29uc3Q7DQorCXZpcnR1YWwgRFNJR1NpZ25hdHVyZSAqIGdldFByb29mT2ZQb3NzZXNzaW9uU2lnbmF0dXJlKHZvaWQpIGNvbnN0Ow0KKw0KKwkvKiBTZXR0ZXIgSW50ZXJmYWNlIE1ldGhvZHMgKi8NCisNCisJdmlydHVhbCBYS01TUmVpc3N1ZUtleUJpbmRpbmcgKiBhZGRSZWlzc3VlS2V5QmluZGluZyhYS01TU3RhdHVzOjpTdGF0dXNWYWx1ZSBzdGF0dXMpOw0KKwl2aXJ0dWFsIFhLTVNBdXRoZW50aWNhdGlvbiAqIGFkZEF1dGhlbnRpY2F0aW9uKHZvaWQpOw0KKwl2aXJ0dWFsIERTSUdTaWduYXR1cmUgKiBhZGRQcm9vZk9mUG9zc2Vzc2lvblNpZ25hdHVyZSgNCisJCWNhbm9uaWNhbGl6YXRpb25NZXRob2QgY20gPSBDQU5PTl9DMTROX05PQywNCisJCXNpZ25hdHVyZU1ldGhvZAlzbSA9IFNJR05BVFVSRV9EU0EsDQorCQloYXNoTWV0aG9kIGhtID0gSEFTSF9TSEExKTsNCisNCisJLyogSW1wbGVtZW50ZWQgZnJvbSBNZXNzYWdlQWJzdHJhY3RUeXBlICovDQorCXZpcnR1YWwgbWVzc2FnZVR5cGUgZ2V0TWVzc2FnZVR5cGUodm9pZCk7DQorDQorCS8qIEZvcmNlZCBpbmhlcml0YW5jZSBmcm9tIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbCAqLw0KKwlYS01TX01FU1NBR0VBQlNUUkFDVFlQRV9JTVBMX01FVEhPRFMNCisNCisJLyogRm9yY2VkIGluaGVyaXRhbmNlIGZyb20gUmVxdWVzdEFic3RyYWN0VHlwZSAqLw0KKwlYS01TX1JFUVVFU1RBQlNUUkFDVFlQRV9JTVBMX01FVEhPRFMNCisNCisNCitwcml2YXRlOg0KKw0KKwlYS01TQXV0aGVudGljYXRpb25JbXBsCQkqIG1wX2F1dGhlbnRpY2F0aW9uOw0KKwlYS01TUmVpc3N1ZUtleUJpbmRpbmdJbXBsCSogbXBfcmVpc3N1ZUtleUJpbmRpbmc7DQorCURTSUdTaWduYXR1cmUJCQkJKiBtcF9wcm9vZk9mUG9zc2Vzc2lvblNpZ25hdHVyZTsNCisNCisJWFNFQ1Byb3ZpZGVyCQkJCW1fcHJvdjsJCS8vIEZvciBjcmVhdGluZyB0aGUgc2lnbmF0dXJlDQorDQorCS8vIFVuaW1wbGVtZW50ZWQNCisJWEtNU1JlaXNzdWVSZXF1ZXN0SW1wbCh2b2lkKTsNCisJWEtNU1JlaXNzdWVSZXF1ZXN0SW1wbChjb25zdCBYS01TUmVpc3N1ZVJlcXVlc3RJbXBsICYpOw0KKwlYS01TUmVpc3N1ZVJlcXVlc3RJbXBsICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU1JlaXNzdWVSZXF1ZXN0SW1wbCAmKTsNCisNCit9Ow0KKw0KKyNlbmRpZiAvKiBYS01TUkVJU1NVRVJFUVVFU1RJTVBMX0lOQ0xVREUgKi8NCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU1JlaXNzdWVSZXN1bHRJbXBsLmNwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUmVpc3N1ZVJlc3VsdEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1OGI4YTAKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU1JlaXNzdWVSZXN1bHRJbXBsLmNwcApAQCAtMCwwICsxLDE4MiBAQAorLyoNCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKg0KKyAqIFhTRUMNCisgKg0KKyAqIFhLTVNSZWlzc3VlUmVzdWx0SW1wbCA6PSBJbXBsZW1lbnRhdGlvbiBvZiBSZWdpc3RlclJlc3VsdCBNZXNzYWdlcw0KKyAqDQorICogJElkJA0KKyAqDQorICovDQorDQorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4NCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4NCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vudi5ocHA+DQorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4NCisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNDb25zdGFudHMuaHBwPg0KKw0KKyNpbmNsdWRlICJYS01TUmVpc3N1ZVJlc3VsdEltcGwuaHBwIg0KKyNpbmNsdWRlICJYS01TS2V5QmluZGluZ0ltcGwuaHBwIg0KKw0KKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPg0KKw0KK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gICAgICAgICAgIENvbnN0cnVjdC9EZXN0cnVjdA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorWEtNU1JlaXNzdWVSZXN1bHRJbXBsOjpYS01TUmVpc3N1ZVJlc3VsdEltcGwoDQorCQljb25zdCBYU0VDRW52ICogZW52KSA6DQorbV9yZXN1bHQoZW52KSwNCittX21zZyhtX3Jlc3VsdC5tX21zZykgew0KKw0KK30NCisNCitYS01TUmVpc3N1ZVJlc3VsdEltcGw6OlhLTVNSZWlzc3VlUmVzdWx0SW1wbCgNCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYsIA0KKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBub2RlKSA6DQorbV9yZXN1bHQoZW52LCBub2RlKSwNCittX21zZyhtX3Jlc3VsdC5tX21zZykgew0KKw0KK30NCisNCitYS01TUmVpc3N1ZVJlc3VsdEltcGw6On5YS01TUmVpc3N1ZVJlc3VsdEltcGwoKSB7DQorDQorCVhLTVNSZWlzc3VlUmVzdWx0SW1wbDo6S2V5QmluZGluZ1ZlY3RvclR5cGU6Oml0ZXJhdG9yIGk7DQorDQorCWZvciAoaSA9IG1fa2V5QmluZGluZ0xpc3QuYmVnaW4oKSA7IGkgPCBtX2tleUJpbmRpbmdMaXN0LmVuZCgpOyBpKyspIHsNCisNCisJCWRlbGV0ZSAoKmkpOw0KKw0KKwl9DQorDQorfQ0KKw0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gICAgICAgICAgIExvYWQgZnJvbSBET00NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KKy8vIExvYWQgZWxlbWVudHMNCit2b2lkIFhLTVNSZWlzc3VlUmVzdWx0SW1wbDo6bG9hZCgpIHsNCisNCisJaWYgKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50ID09IE5VTEwpIHsNCisNCisJCS8vIEF0dGVtcHQgdG8gbG9hZCBhbiBlbXB0eSBlbGVtZW50DQorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwNCisJCQkiWEtNU1JlaXNzdWVSZXN1bHQ6OmxvYWQgLSBjYWxsZWQgb24gZW1wdHkgRE9NIik7DQorDQorCX0NCisNCisJaWYgKCFzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZShtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCksIA0KKwkJCQkJCQkJCVhLTVNDb25zdGFudHM6OnNfdGFnUmVpc3N1ZVJlc3VsdCkpIHsNCisJDQorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwNCisJCQkiWEtNU1JlaXNzdWVSZXN1bHQ6OmxvYWQgLSBjYWxsZWQgaW5jb3JyZWN0IG5vZGUiKTsNCisJDQorCX0NCisNCisJLy8gR2V0IGFueSBVbnZlcmlmaWVkS2V5QmluZGluZyBlbGVtZW50cw0KKwlET01Ob2RlTGlzdCAqIG5sID0gbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoDQorCQlYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TLA0KKwkJWEtNU0NvbnN0YW50czo6c190YWdLZXlCaW5kaW5nKTsNCisNCisJaWYgKG5sICE9IE5VTEwpIHsNCisNCisJCVhLTVNLZXlCaW5kaW5nSW1wbCAqIGtiOw0KKwkJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBubC0+Z2V0TGVuZ3RoKCkgOyArKyBpKSB7DQorDQorCQkJWFNFQ25ldyhrYiwgWEtNU0tleUJpbmRpbmdJbXBsKG1fbXNnLm1wX2VudiwgKERPTUVsZW1lbnQgKikgbmwtPml0ZW0oaSkpKTsNCisJCQltX2tleUJpbmRpbmdMaXN0LnB1c2hfYmFjayhrYik7DQorCQkJa2ItPmxvYWQoKTsNCisNCisJCX0NCisNCisJfQ0KKw0KKw0KKwkvLyBMb2FkIHRoZSBiYXNlIG1lc3NhZ2UNCisJbV9yZXN1bHQubG9hZCgpOw0KKw0KK30NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vICAgICAgICAgICBDcmVhdGUgYSBibGFuayBvbmUNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0RPTUVsZW1lbnQgKiBYS01TUmVpc3N1ZVJlc3VsdEltcGw6OmNyZWF0ZUJsYW5rUmVpc3N1ZVJlc3VsdCgNCisJCWNvbnN0IFhNTENoICogc2VydmljZSwNCisJCWNvbnN0IFhNTENoICogaWQsDQorCQlSZXN1bHRNYWpvciBybWFqLA0KKwkJUmVzdWx0TWlub3Igcm1pbikgew0KKw0KKwlyZXR1cm4gbV9yZXN1bHQuY3JlYXRlQmxhbmtSZXN1bHRUeXBlKA0KKwkJWEtNU0NvbnN0YW50czo6c190YWdSZWlzc3VlUmVzdWx0LCBzZXJ2aWNlLCBpZCwgcm1haiwgcm1pbik7DQorDQorfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gICAgICAgICAgIEdldCBpbnRlcmZhY2UgbWV0aG9kcw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGU6Om1lc3NhZ2VUeXBlIFhLTVNSZWlzc3VlUmVzdWx0SW1wbDo6Z2V0TWVzc2FnZVR5cGUodm9pZCkgew0KKw0KKwlyZXR1cm4gWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsOjpSZWlzc3VlUmVzdWx0Ow0KKw0KK30NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vICAgICAgICAgICBVbnZlcmlmaWVkS2V5QmluZGluZyBoYW5kbGluZw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorDQoraW50IFhLTVNSZWlzc3VlUmVzdWx0SW1wbDo6Z2V0S2V5QmluZGluZ1NpemUodm9pZCkgY29uc3Qgew0KKw0KKwlyZXR1cm4gKGludCkgbV9rZXlCaW5kaW5nTGlzdC5zaXplKCk7DQorDQorfQ0KKw0KK1hLTVNLZXlCaW5kaW5nICogWEtNU1JlaXNzdWVSZXN1bHRJbXBsOjpnZXRLZXlCaW5kaW5nSXRlbShpbnQgaXRlbSkgY29uc3Qgew0KKw0KKwlpZiAoaXRlbSA8IDAgfHwgaXRlbSA+PSAoaW50KSBtX2tleUJpbmRpbmdMaXN0LnNpemUoKSkgew0KKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsDQorCQkJIlhLTVNSZWlzc3VlUmVzdWx0OjpnZXRLZXlCaW5kaW5nSXRlbSAtIGl0ZW0gb3V0IG9mIHJhbmdlIik7DQorCX0NCisNCisJcmV0dXJuIG1fa2V5QmluZGluZ0xpc3RbaXRlbV07DQorDQorfQ0KKw0KK1hLTVNLZXlCaW5kaW5nICogWEtNU1JlaXNzdWVSZXN1bHRJbXBsOjphcHBlbmRLZXlCaW5kaW5nSXRlbShYS01TU3RhdHVzOjpTdGF0dXNWYWx1ZSBzdGF0dXMpIHsNCisNCisJWEtNU0tleUJpbmRpbmdJbXBsICogdTsNCisNCisJWFNFQ25ldyh1LCBYS01TS2V5QmluZGluZ0ltcGwobV9tc2cubXBfZW52KSk7DQorDQorCW1fa2V5QmluZGluZ0xpc3QucHVzaF9iYWNrKHUpOw0KKw0KKwlET01FbGVtZW50ICogZSA9IHUtPmNyZWF0ZUJsYW5rS2V5QmluZGluZyhzdGF0dXMpOw0KKw0KKwkvLyBBcHBlbmQgdGhlIGVsZW1lbnQNCisNCisJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmFwcGVuZENoaWxkKGUpOw0KKwltX21zZy5tcF9lbnYtPmRvUHJldHR5UHJpbnQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOw0KKw0KKwlyZXR1cm4gdTsNCisNCit9DQorDQpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNSZWlzc3VlUmVzdWx0SW1wbC5ocHAgYi9jL3NyYy94a21zL2ltcGwvWEtNU1JlaXNzdWVSZXN1bHRJbXBsLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzRmMWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9pbXBsL1hLTVNSZWlzc3VlUmVzdWx0SW1wbC5ocHAKQEAgLTAsMCArMSwxMDEgQEAKKy8qDQorICogQ29weXJpZ2h0IDIwMDYgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qDQorICogWFNFQw0KKyAqDQorICogWEtNU1JlaXNzdWVSZXN1bHRJbXBsIDo9IEltcGxlbWVudGF0aW9uIG9mIFJlZ2lzdGVyUmVzdWx0IE1lc3NhZ2VzDQorICoNCisgKiAkSWQkDQorICoNCisgKi8NCisNCisjaWZuZGVmIFhLTVNSRUlTU1VFUkVTVUxUSU1QTF9JTkNMVURFDQorI2RlZmluZSBYS01TUkVJU1NVRVJFU1VMVElNUExfSU5DTFVERQ0KKw0KKy8vIFhTRUMgSW5jbHVkZXMNCisNCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1JlaXNzdWVSZXN1bHQuaHBwPg0KKw0KKyNpbmNsdWRlICJYS01TUmVzdWx0VHlwZUltcGwuaHBwIg0KKw0KKyNpbmNsdWRlIDx2ZWN0b3I+DQorDQorY2xhc3MgWEtNU0tleUJpbmRpbmdJbXBsOw0KKw0KK2NsYXNzIFhLTVNSZWlzc3VlUmVzdWx0SW1wbCA6IHB1YmxpYyBYS01TUmVpc3N1ZVJlc3VsdCB7DQorDQorcHVibGljOg0KKwlYS01TUmVzdWx0VHlwZUltcGwgbV9yZXN1bHQ7DQorCVhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbCAmbV9tc2c7DQorcHVibGljOg0KKw0KKwlYS01TUmVpc3N1ZVJlc3VsdEltcGwoDQorCQljb25zdCBYU0VDRW52ICogZW52DQorCSk7DQorDQorCVhLTVNSZWlzc3VlUmVzdWx0SW1wbCgNCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYsIA0KKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBub2RlDQorCSk7DQorDQorCXZpcnR1YWwgflhLTVNSZWlzc3VlUmVzdWx0SW1wbCgpOw0KKw0KKwkvLyBMb2FkIGVsZW1lbnRzDQorCXZvaWQgbG9hZCgpOw0KKw0KKwkvLyBDcmVhdGlvbg0KKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIA0KKwkJY3JlYXRlQmxhbmtSZWlzc3VlUmVzdWx0KA0KKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLA0KKwkJY29uc3QgWE1MQ2ggKiBpZCwNCisJCVJlc3VsdE1ham9yIHJtYWosDQorCQlSZXN1bHRNaW5vciBybWluKTsNCisNCisJLy8gSW50ZXJmYWNlIG1ldGhvZHMNCisJdmlydHVhbCBpbnQgZ2V0S2V5QmluZGluZ1NpemUodm9pZCkgY29uc3Q7DQorCXZpcnR1YWwgWEtNU0tleUJpbmRpbmcgKiBnZXRLZXlCaW5kaW5nSXRlbShpbnQgaXRlbSkgY29uc3Q7DQorCXZpcnR1YWwgWEtNU0tleUJpbmRpbmcgKiBhcHBlbmRLZXlCaW5kaW5nSXRlbShYS01TU3RhdHVzOjpTdGF0dXNWYWx1ZSBzdGF0dXMpOw0KKw0KKw0KKwkvKiBJbXBsZW1lbnRlZCBmcm9tIE1lc3NhZ2VBYnN0cmFjdFR5cGUgKi8NCisJdmlydHVhbCBtZXNzYWdlVHlwZSBnZXRNZXNzYWdlVHlwZSh2b2lkKTsNCisNCisJLyogRm9yY2VkIGluaGVyaXRhbmNlIGZyb20gWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsICovDQorCVhLTVNfTUVTU0FHRUFCU1RSQUNUWVBFX0lNUExfTUVUSE9EUw0KKw0KKwkvKiBGb3JjZWQgaW5oZXJpdGFuY2UgZnJvbSBYS01TUmVzdWx0VHlwZUltcGwgKi8NCisJWEtNU19SRVNVTFRUWVBFX0lNUExfTUVUSE9EUw0KKw0KK3ByaXZhdGU6DQorDQorI2lmIGRlZmluZWQoWFNFQ19OT19OQU1FU1BBQ0VTKQ0KKwl0eXBlZGVmIHZlY3RvcjxYS01TS2V5QmluZGluZ0ltcGwgKj4JCUtleUJpbmRpbmdWZWN0b3JUeXBlOw0KKyNlbHNlDQorCXR5cGVkZWYgc3RkOjp2ZWN0b3I8WEtNU0tleUJpbmRpbmdJbXBsICo+CUtleUJpbmRpbmdWZWN0b3JUeXBlOw0KKyNlbmRpZg0KKw0KKwlLZXlCaW5kaW5nVmVjdG9yVHlwZQltX2tleUJpbmRpbmdMaXN0Ow0KKw0KKwkvLyBVbmltcGxlbWVudGVkDQorCVhLTVNSZWlzc3VlUmVzdWx0SW1wbCh2b2lkKTsNCisJWEtNU1JlaXNzdWVSZXN1bHRJbXBsKGNvbnN0IFhLTVNSZWlzc3VlUmVzdWx0SW1wbCAmKTsNCisJWEtNU1JlaXNzdWVSZXN1bHRJbXBsICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU1JlaXNzdWVSZXN1bHRJbXBsICYpOw0KKw0KK307DQorDQorI2VuZGlmIC8qIFhLTVNSRUlTU1VFUkVTVUxUSU1QTF9JTkNMVURFICovDQpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbC5jcHAgYi9jL3NyYy94a21zL2ltcGwvWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWQ4MjYwCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9pbXBsL1hLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbC5jcHAKQEAgLTAsMCArMSwzOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbCA6PSBJbXBsZW1lbnRhdGlvbiBjbGFzcyBmb3IgWEtNUyBSZXF1ZXN0IG1lc3NhZ2VzCisgKgorICogJElkJAorICoKKyAqLworCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRW52LmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0NvbnN0YW50cy5ocHA+CisKKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPgorI2luY2x1ZGUgPHhlcmNlc2MvZG9tL0RPTU5vZGVMaXN0LmhwcD4KKworI2luY2x1ZGUgIlhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbC5ocHAiCisjaW5jbHVkZSAiWEtNU1Jlc3BvbmRXaXRoSW1wbC5ocHAiCisjaW5jbHVkZSAiWEtNU1Jlc3BvbnNlTWVjaGFuaXNtSW1wbC5ocHAiCisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdC9EZXN0cnVjdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsOjpYS01TUmVxdWVzdEFic3RyYWN0VHlwZUltcGwoCisJY29uc3QgWFNFQ0VudiAqIGVudikgOgorbV9tc2coZW52KQoreworCW1wX29yaWdpbmFsUmVxdWVzdElkQXR0ciA9IE5VTEw7CisJbXBfcmVzcG9uc2VMaW1pdEF0dHIgPSBOVUxMOworfQorCitYS01TUmVxdWVzdEFic3RyYWN0VHlwZUltcGw6OlhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbCgKKwljb25zdCBYU0VDRW52ICogZW52LCAKKwlET01FbGVtZW50ICogbm9kZSkgOgorbV9tc2coZW52LCBub2RlKQoreworCW1wX29yaWdpbmFsUmVxdWVzdElkQXR0ciA9IE5VTEw7CisJbXBfcmVzcG9uc2VMaW1pdEF0dHIgPSBOVUxMOworfQorCitYS01TUmVxdWVzdEFic3RyYWN0VHlwZUltcGw6On5YS01TUmVxdWVzdEFic3RyYWN0VHlwZUltcGwoKSB7CisKKwlSZXNwb25kV2l0aFZlY3RvclR5cGU6Oml0ZXJhdG9yIGk7CisKKwlmb3IgKGkgPSBtX3Jlc3BvbmRXaXRoTGlzdC5iZWdpbigpOyBpIDwgbV9yZXNwb25kV2l0aExpc3QuZW5kKCk7ICsraSkgeworCQlkZWxldGUgKCppKTsKKwl9CisKKwlSZXNwb25zZU1lY2hhbmlzbVZlY3RvclR5cGU6Oml0ZXJhdG9yIGo7CisKKwlmb3IgKGogPSBtX3Jlc3BvbnNlTWVjaGFuaXNtTGlzdC5iZWdpbigpOyBqIDwgbV9yZXNwb25zZU1lY2hhbmlzbUxpc3QuZW5kKCk7ICsraikgeworCQlkZWxldGUgKCpqKTsKKwl9Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIExvYWQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsOjpsb2FkKHZvaWQpIHsKKworCWlmIChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCA9PSBOVUxMKSB7CisKKwkJLy8gQXR0ZW1wdCB0byBsb2FkIGFuIGVtcHR5IGVsZW1lbnQKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpSZXF1ZXN0QWJzdHJhY3RUeXBlRXJyb3IsCisJCQkiWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGU6OmxvYWQgLSBjYWxsZWQgb24gZW1wdHkgRE9NIik7CisKKwl9CisKKwkvLyBHZXQgYW55IHJlc3BvbmQgd2l0aCBlbGVtZW50cworCURPTU5vZGVMaXN0ICogbmwgPSBtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+Z2V0RWxlbWVudHNCeVRhZ05hbWVOUygKKwkJWEtNU0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWEtNUywKKwkJWEtNU0NvbnN0YW50czo6c190YWdSZXNwb25kV2l0aCk7CisKKwlpZiAobmwgIT0gTlVMTCkgeworCisJCVhLTVNSZXNwb25kV2l0aEltcGwgKiBydzsKKwkJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBubC0+Z2V0TGVuZ3RoKCkgOyArKyBpKSB7CisKKwkJCVhTRUNuZXcocncsIFhLTVNSZXNwb25kV2l0aEltcGwobV9tc2cubXBfZW52LCAoRE9NRWxlbWVudCAqKSBubC0+aXRlbShpKSkpOworCQkJcnctPmxvYWQoKTsKKwkJCW1fcmVzcG9uZFdpdGhMaXN0LnB1c2hfYmFjayhydyk7CisKKwkJfQorCisJfQorCisJLy8gR2V0IGFueSBSZXNwb25zZU1lY2hhbmlzbSBlbGVtZW50cworCW5sID0gbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoCisJCVhLTVNDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhLTVMsCisJCVhLTVNDb25zdGFudHM6OnNfdGFnUmVzcG9uc2VNZWNoYW5pc20pOworCisJaWYgKG5sICE9IE5VTEwpIHsKKworCQlYS01TUmVzcG9uc2VNZWNoYW5pc21JbXBsICogcm07CisJCWZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbmwtPmdldExlbmd0aCgpIDsgKysgaSkgeworCisJCQlYU0VDbmV3KHJtLCBYS01TUmVzcG9uc2VNZWNoYW5pc21JbXBsKG1fbXNnLm1wX2VudiwgKERPTUVsZW1lbnQgKikgbmwtPml0ZW0oaSkpKTsKKwkJCXJtLT5sb2FkKCk7CisJCQltX3Jlc3BvbnNlTWVjaGFuaXNtTGlzdC5wdXNoX2JhY2socm0pOworCisJCX0KKworCX0KKworCW1wX29yaWdpbmFsUmVxdWVzdElkQXR0ciA9IAorCQltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+Z2V0QXR0cmlidXRlTm9kZU5TKE5VTEwsIFhLTVNDb25zdGFudHM6OnNfdGFnT3JpZ2luYWxSZXF1ZXN0SWQpOworCisJbXBfcmVzcG9uc2VMaW1pdEF0dHIgPSAKKwkJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmdldEF0dHJpYnV0ZU5vZGVOUyhOVUxMLCBYS01TQ29uc3RhbnRzOjpzX3RhZ1Jlc3BvbnNlTGltaXQpOworCQorCQkKKwltX21zZy5sb2FkKCk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDcmVhdGUgZnJvbSBzY3JhdGNoCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitET01FbGVtZW50ICogWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsOjpjcmVhdGVCbGFua1JlcXVlc3RBYnN0cmFjdFR5cGUoCisJCWNvbnN0IFhNTENoICogdGFnLAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCWNvbnN0IFhNTENoICogaWQpIHsKKworCXJldHVybiBtX21zZy5jcmVhdGVCbGFua01lc3NhZ2VBYnN0cmFjdFR5cGUodGFnLCBzZXJ2aWNlLCBpZCk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBHZXQvU2V0IGludGVyZmFjZSBtZXRob2RzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjb25zdCBYTUxDaCAqIFhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbDo6Z2V0T3JpZ2luYWxSZXF1ZXN0SWQodm9pZCkgY29uc3QgeworCisJaWYgKG1wX29yaWdpbmFsUmVxdWVzdElkQXR0ciAhPSBOVUxMKQorCQlyZXR1cm4gbXBfb3JpZ2luYWxSZXF1ZXN0SWRBdHRyLT5nZXROb2RlVmFsdWUoKTsKKworCXJldHVybiBOVUxMOworfQorCit2b2lkIFhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbDo6c2V0T3JpZ2luYWxSZXF1ZXN0SWQoY29uc3QgWE1MQ2ggKiBpZCkgeworCQorCWlmIChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCA9PSBOVUxMKSB7CisKKwkJLy8gQXR0ZW1wdCB1cGRhdGUgd2hlbiBub3QgaW5pdGlhbGlzZWQKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpNZXNzYWdlQWJzdHJhY3RUeXBlRXJyb3IsCisJCQkiWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGU6OnNldE9yaWdpbmFsUmVxdWVzdElkIC0gY2FsbGVkIG9uIG5vbi1pbml0aWFsaXNlZCBzdHJ1Y3R1cmUiKTsKKworCX0KKworCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5zZXRBdHRyaWJ1dGVOUyhOVUxMLCBYS01TQ29uc3RhbnRzOjpzX3RhZ09yaWdpbmFsUmVxdWVzdElkLCBpZCk7CisJbXBfb3JpZ2luYWxSZXF1ZXN0SWRBdHRyID0gCisJCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5nZXRBdHRyaWJ1dGVOb2RlTlMoTlVMTCwgWEtNU0NvbnN0YW50czo6c190YWdPcmlnaW5hbFJlcXVlc3RJZCk7CisKK30KKwordW5zaWduZWQgaW50IFhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbDo6Z2V0UmVzcG9uc2VMaW1pdCh2b2lkKSBjb25zdCB7CisKKwlpZiAobXBfcmVzcG9uc2VMaW1pdEF0dHIgPT0gTlVMTCkKKwkJcmV0dXJuIDA7CisKKwl1bnNpZ25lZCBpbnQgcmV0OworCisJaWYgKCFYTUxTdHJpbmc6OnRleHRUb0JpbihtcF9yZXNwb25zZUxpbWl0QXR0ci0+Z2V0VmFsdWUoKSwgcmV0KSkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIFhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbDo6c2V0UmVzcG9uc2VMaW1pdCh1bnNpZ25lZCBpbnQgbGltaXQpIHsKKworCWlmIChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCA9PSBOVUxMKSB7CisKKwkJLy8gQXR0ZW1wdCB1cGRhdGUgd2hlbiBub3QgaW5pdGlhbGlzZWQKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpNZXNzYWdlQWJzdHJhY3RUeXBlRXJyb3IsCisJCQkiWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGU6OnNldFJlc3BvbnNlTGltaXQgLSBjYWxsZWQgb24gbm9uLWluaXRpYWxpc2VkIHN0cnVjdHVyZSIpOworCisJfQorCisJLyogQ29udmVydCB0aGUgbnVtYmVyIHRvIGEgc3RyaW5nICovCisJWE1MQ2ggbGltaXRTdHJbMTBdOworCVhNTFN0cmluZzo6YmluVG9UZXh0KGxpbWl0LCBsaW1pdFN0ciwgOSwgMTApOworCisJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPnNldEF0dHJpYnV0ZU5TKE5VTEwsIFhLTVNDb25zdGFudHM6OnNfdGFnUmVzcG9uc2VMaW1pdCwgbGltaXRTdHIpOworCW1wX3Jlc3BvbnNlTGltaXRBdHRyID0gCisJCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5nZXRBdHRyaWJ1dGVOb2RlTlMoTlVMTCwgWEtNU0NvbnN0YW50czo6c190YWdSZXNwb25zZUxpbWl0KTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFJlc3BvbmRXaXRoIGhhbmRsaW5nCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitpbnQgWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsOjpnZXRSZXNwb25kV2l0aFNpemUodm9pZCkgeworCisJcmV0dXJuIChpbnQpIG1fcmVzcG9uZFdpdGhMaXN0LnNpemUoKTsKKworfQorCitYS01TUmVzcG9uZFdpdGggKiBYS01TUmVxdWVzdEFic3RyYWN0VHlwZUltcGw6OmdldFJlc3BvbmRXaXRoSXRlbShpbnQgaXRlbSkgeworCisJaWYgKGl0ZW0gPCAwIHx8IGl0ZW0gPj0gKGludCkgbV9yZXNwb25kV2l0aExpc3Quc2l6ZSgpKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpSZXF1ZXN0QWJzdHJhY3RUeXBlRXJyb3IsCisJCQkiWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsOjpnZXRSZXNwb25kV2l0aEl0ZW0gLSBpdGVtIG91dCBvZiByYW5nZSIpOworCisJfQorCisJcmV0dXJuIG1fcmVzcG9uZFdpdGhMaXN0W2l0ZW1dOworCit9CisKK2NvbnN0IFhNTENoICogWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsOjpnZXRSZXNwb25kV2l0aEl0ZW1TdHIoaW50IGl0ZW0pIHsKKworCWlmIChpdGVtIDwgMCB8fCBpdGVtID49IChpbnQpIG1fcmVzcG9uZFdpdGhMaXN0LnNpemUoKSkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6UmVxdWVzdEFic3RyYWN0VHlwZUVycm9yLAorCQkJIlhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbDo6Z2V0UmVzcG9uZFdpdGhJdGVtIC0gaXRlbSBvdXQgb2YgcmFuZ2UiKTsKKworCX0KKworCXJldHVybiBtX3Jlc3BvbmRXaXRoTGlzdFtpdGVtXS0+Z2V0UmVzcG9uZFdpdGhTdHJpbmcoKTsKKworfQorCit2b2lkIFhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbDo6YXBwZW5kUmVzcG9uZFdpdGhJdGVtKFhLTVNSZXNwb25kV2l0aCAqIGl0ZW0pIHsKKworfQorCit2b2lkIFhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbDo6YXBwZW5kUmVzcG9uZFdpdGhJdGVtKGNvbnN0IFhNTENoICogaXRlbSkgeworCisJWEtNU1Jlc3BvbmRXaXRoSW1wbCAqIHJ3OworCVhTRUNuZXcocncsIFhLTVNSZXNwb25kV2l0aEltcGwobV9tc2cubXBfZW52KSk7CisKKwkvLyBDcmVhdGUgdGhlIFJlc3BvbmRXaXRoIG9iamVjdAorCURPTUVsZW1lbnQgKiBlbHQgPSBydy0+Y3JlYXRlQmxhbmtSZXNwb25kV2l0aChpdGVtKTsKKworCS8vIEFkZCB0byB0aGUgaXRlbQorCURPTUVsZW1lbnQgKiBjID0gZmluZEZpcnN0RWxlbWVudENoaWxkKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KTsKKwl3aGlsZSAoYyAhPSBOVUxMKSB7CisKKwkJaWYgKCFzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZShjKSwgWEtNU0NvbnN0YW50czo6c190YWdSZXNwb25zZU1lY2hhbmlzbSkpCisJCQlicmVhazsKKworCX0KKworCWlmIChjICE9IE5VTEwpIHsKKwkJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmluc2VydEJlZm9yZShlbHQsIGMpOworCQlpZiAobV9tc2cubXBfZW52LT5nZXRQcmV0dHlQcmludEZsYWcoKSkgeworCQkJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmluc2VydEJlZm9yZSgKKwkJCQltX21zZy5tcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCktPmNyZWF0ZVRleHROb2RlKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ck5MKSwgYyk7CisJCX0KKwl9CisJZWxzZSB7CisJCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5hcHBlbmRDaGlsZChlbHQpOworCQltX21zZy5tcF9lbnYtPmRvUHJldHR5UHJpbnQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOworCX0KKworCS8vIEFkZCB0byB0aGUgbGlzdAorCW1fcmVzcG9uZFdpdGhMaXN0LnB1c2hfYmFjayhydyk7CisKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFJlc3BvbnNlTWVjaGFuaXNtIGhhbmRsaW5nCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitpbnQgWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsOjpnZXRSZXNwb25zZU1lY2hhbmlzbVNpemUodm9pZCkgeworCisJcmV0dXJuIChpbnQpIG1fcmVzcG9uc2VNZWNoYW5pc21MaXN0LnNpemUoKTsKKworfQorCitYS01TUmVzcG9uc2VNZWNoYW5pc20gKiBYS01TUmVxdWVzdEFic3RyYWN0VHlwZUltcGw6OmdldFJlc3BvbnNlTWVjaGFuaXNtSXRlbShpbnQgaXRlbSkgeworCisJaWYgKGl0ZW0gPCAwIHx8IGl0ZW0gPj0gKGludCkgbV9yZXNwb25zZU1lY2hhbmlzbUxpc3Quc2l6ZSgpKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpSZXF1ZXN0QWJzdHJhY3RUeXBlRXJyb3IsCisJCQkiWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsOjpnZXRSZXNwb25zZU1lY2hhbmlzbUl0ZW0gLSBpdGVtIG91dCBvZiByYW5nZSIpOworCisJfQorCisJcmV0dXJuIG1fcmVzcG9uc2VNZWNoYW5pc21MaXN0W2l0ZW1dOworCit9CisKK2NvbnN0IFhNTENoICogWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsOjpnZXRSZXNwb25zZU1lY2hhbmlzbUl0ZW1TdHIoaW50IGl0ZW0pIHsKKworCWlmIChpdGVtIDwgMCB8fCBpdGVtID49IChpbnQpIG1fcmVzcG9uc2VNZWNoYW5pc21MaXN0LnNpemUoKSkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6UmVxdWVzdEFic3RyYWN0VHlwZUVycm9yLAorCQkJIlhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbDo6Z2V0UmVzcG9uc2VNZWNoYW5pc21JdGVtIC0gaXRlbSBvdXQgb2YgcmFuZ2UiKTsKKworCX0KKworCXJldHVybiBtX3Jlc3BvbnNlTWVjaGFuaXNtTGlzdFtpdGVtXS0+Z2V0UmVzcG9uc2VNZWNoYW5pc21TdHJpbmcoKTsKKworfQorCit2b2lkIFhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbDo6YXBwZW5kUmVzcG9uc2VNZWNoYW5pc21JdGVtKFhLTVNSZXNwb25zZU1lY2hhbmlzbSAqIGl0ZW0pIHsKKworfQorCit2b2lkIFhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbDo6YXBwZW5kUmVzcG9uc2VNZWNoYW5pc21JdGVtKGNvbnN0IFhNTENoICogaXRlbSkgeworCisJWEtNU1Jlc3BvbnNlTWVjaGFuaXNtSW1wbCAqIHJ3OworCVhTRUNuZXcocncsIFhLTVNSZXNwb25zZU1lY2hhbmlzbUltcGwobV9tc2cubXBfZW52KSk7CisKKwkvLyBDcmVhdGUgdGhlIFJlc3BvbnNlTWVjaGFuaXNtIG9iamVjdAorCURPTUVsZW1lbnQgKiBlbHQgPSBydy0+Y3JlYXRlQmxhbmtSZXNwb25zZU1lY2hhbmlzbShpdGVtKTsKKworCS8vIEFkZCB0byB0aGUgaXRlbQorCURPTUVsZW1lbnQgKiBjID0gZmluZEZpcnN0RWxlbWVudENoaWxkKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KTsKKwl3aGlsZSAoYyAhPSBOVUxMKSB7CisKKwkJaWYgKCFzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZShjKSwgWEtNU0NvbnN0YW50czo6c190YWdSZXNwb25zZU1lY2hhbmlzbSkpCisJCQlicmVhazsKKworCQljID0gZmluZE5leHRFbGVtZW50Q2hpbGQoYyk7CisKKwl9CisKKwlpZiAoYyAhPSBOVUxMKSB7CisJCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5pbnNlcnRCZWZvcmUoZWx0LCBjKTsKKwkJaWYgKG1fbXNnLm1wX2Vudi0+Z2V0UHJldHR5UHJpbnRGbGFnKCkpIHsKKwkJCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5pbnNlcnRCZWZvcmUoCisJCQkJbV9tc2cubXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpLT5jcmVhdGVUZXh0Tm9kZShEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJOTCksIGMpOworCQl9CisJfQorCWVsc2UgeworCQltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+YXBwZW5kQ2hpbGQoZWx0KTsKKwkJbV9tc2cubXBfZW52LT5kb1ByZXR0eVByaW50KG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KTsKKwl9CisKKwkvLyBBZGQgdG8gdGhlIGxpc3QKKwltX3Jlc3BvbnNlTWVjaGFuaXNtTGlzdC5wdXNoX2JhY2socncpOworCit9CisKK3ZvaWQgWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsOjpyZW1vdmVSZXNwb25zZU1lY2hhbmlzbUl0ZW0oaW50IGl0ZW0pIHsKKworCWlmIChpdGVtIDwgMCB8fCBpdGVtID49IChpbnQpIG1fcmVzcG9uc2VNZWNoYW5pc21MaXN0LnNpemUoKSkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6UmVxdWVzdEFic3RyYWN0VHlwZUVycm9yLAorCQkJIlhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbDo6Z2V0UmVzcG9uc2VNZWNoYW5pc21JdGVtIC0gaXRlbSBvdXQgb2YgcmFuZ2UiKTsKKworCX0KKworCVhLTVNSZXNwb25zZU1lY2hhbmlzbSAqcm0gPSBtX3Jlc3BvbnNlTWVjaGFuaXNtTGlzdFtpdGVtXTsKKwlET01Ob2RlICogbSA9IHJtLT5nZXRFbGVtZW50KCk7CisJbS0+Z2V0UGFyZW50Tm9kZSgpLT5yZW1vdmVDaGlsZChtKTsKKwltLT5yZWxlYXNlKCk7CisKKwkvLyBOb3cgY2xlYW4gdXAgb3VyIHN0cnVjdHVyZS4KKwlSZXNwb25zZU1lY2hhbmlzbVZlY3RvclR5cGU6Oml0ZXJhdG9yIGk7CisJaW50IGogPSAwOworCWkgPSBtX3Jlc3BvbnNlTWVjaGFuaXNtTGlzdC5iZWdpbigpOworCXdoaWxlIChqIDwgaXRlbSkgeworCQlqKys7CisJCWkrKzsKKwl9CisJbV9yZXNwb25zZU1lY2hhbmlzbUxpc3QuZXJhc2UoaSk7CisKK30KKworCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsLmhwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUmVxdWVzdEFic3RyYWN0VHlwZUltcGwuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhZDJjOTUKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsLmhwcApAQCAtMCwwICsxLDE4NCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsIDo9IEltcGxlbWVudGF0aW9uIGNsYXNzIGZvciBYS01TIFJlcXVlc3QgbWVzc2FnZXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEtNU1JFUVVFU1RBQlNUUkFDVFRZUEVJTVBMX0lOQ0xVREUKKyNkZWZpbmUgWEtNU1JFUVVFU1RBQlNUUkFDVFRZUEVJTVBMX0lOQ0xVREUKKworLy8gWFNFQyBJbmNsdWRlcworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TUmVxdWVzdEFic3RyYWN0VHlwZS5ocHA+CisKKyNpbmNsdWRlICJYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGwuaHBwIgorCisjaW5jbHVkZSA8dmVjdG9yPgorCitjbGFzcyBYS01TUmVzcG9uZFdpdGhJbXBsOworY2xhc3MgWEtNU1Jlc3BvbnNlTWVjaGFuaXNtSW1wbDsKKworY2xhc3MgWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsIDogcHVibGljIFhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlIHsKKworcHVibGljOgorCisJWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsIG1fbXNnOworCitwdWJsaWM6CisKKwkvKiBDb25zdHJ1Y3RvcnMgYW5kIERlc3RydWN0b3JzICovCisJWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52CisJKTsKKwlYS01TUmVxdWVzdEFic3RyYWN0VHlwZUltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYsIAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIG5vZGUKKwkpOworCisJdmlydHVhbCB+WEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsKCk7CisKKwl2aXJ0dWFsIHZvaWQgbG9hZCh2b2lkKTsKKworCS8vIENyZWF0ZSBmcm9tIHNjcmF0Y2ggLSB0YWcgaXMgdGhlIGVsZW1lbnQgbmFtZSB0byBjcmVhdGUKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIAorCQljcmVhdGVCbGFua1JlcXVlc3RBYnN0cmFjdFR5cGUoCisJCWNvbnN0IFhNTENoICogdGFnLAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKTsKKworCS8qIEdldHRlciBJbnRlcmZhY2UgTWV0aG9kcyAqLworCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldE9yaWdpbmFsUmVxdWVzdElkKHZvaWQpIGNvbnN0OworCXZpcnR1YWwgdm9pZCBzZXRPcmlnaW5hbFJlcXVlc3RJZChjb25zdCBYTUxDaCAqIGlkKTsKKwl2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRSZXNwb25zZUxpbWl0KHZvaWQpIGNvbnN0OworCisJLyogU2V0IGludGVyZmFjZSBtZXRob2RzICovCisJdmlydHVhbCB2b2lkIHNldFJlc3BvbnNlTGltaXQodW5zaWduZWQgaW50IGxpbWl0KTsKKworCS8qIFJlc3BvbmRXaXRoIGhhbmRsaW5nICovCisKKwl2aXJ0dWFsIGludCBnZXRSZXNwb25kV2l0aFNpemUodm9pZCk7CisJdmlydHVhbCBYS01TUmVzcG9uZFdpdGggKiBnZXRSZXNwb25kV2l0aEl0ZW0oaW50IGl0ZW0pOworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRSZXNwb25kV2l0aEl0ZW1TdHIoaW50IGl0ZW0pOworCXZpcnR1YWwgdm9pZCBhcHBlbmRSZXNwb25kV2l0aEl0ZW0oWEtNU1Jlc3BvbmRXaXRoICogaXRlbSk7CisJdmlydHVhbCB2b2lkIGFwcGVuZFJlc3BvbmRXaXRoSXRlbShjb25zdCBYTUxDaCAqIGl0ZW0pOworCisJLyogUmVzcG9uc2VNZWNoYW5pc20gaGFuZGxpbmcgKi8KKwl2aXJ0dWFsIGludCBnZXRSZXNwb25zZU1lY2hhbmlzbVNpemUodm9pZCk7CisJdmlydHVhbCBYS01TUmVzcG9uc2VNZWNoYW5pc20gKiBnZXRSZXNwb25zZU1lY2hhbmlzbUl0ZW0oaW50IGl0ZW0pOworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRSZXNwb25zZU1lY2hhbmlzbUl0ZW1TdHIoaW50IGl0ZW0pOworCXZpcnR1YWwgdm9pZCBhcHBlbmRSZXNwb25zZU1lY2hhbmlzbUl0ZW0oWEtNU1Jlc3BvbnNlTWVjaGFuaXNtICogaXRlbSk7CisJdmlydHVhbCB2b2lkIGFwcGVuZFJlc3BvbnNlTWVjaGFuaXNtSXRlbShjb25zdCBYTUxDaCAqIGl0ZW0pOworCXZpcnR1YWwgdm9pZCByZW1vdmVSZXNwb25zZU1lY2hhbmlzbUl0ZW0oaW50IGl0ZW0pOworCisKKwkvKiBJbmhlcml0ZWQgZnJvbSBYS01TTWVzc2FnZVR5cGUgKi8KKwl2aXJ0dWFsIG1lc3NhZ2VUeXBlIGdldE1lc3NhZ2VUeXBlKHZvaWQpIHtyZXR1cm4gWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGU6Ok5vbmU7fQorCisJLyogRm9yY2VkIGluaGVyaXRhbmNlIGZyb20gWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsICovCisJWEtNU19NRVNTQUdFQUJTVFJBQ1RZUEVfSU1QTF9NRVRIT0RTCisjaWYgMAorCXZpcnR1YWwgWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBnZXRFbGVtZW50KHZvaWQpIGNvbnN0CisJCXtyZXR1cm4gWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsOjpnZXRFbGVtZW50KCk7fQorCisJdmlydHVhbCBib29sIGlzU2lnbmVkKHZvaWQpIGNvbnN0CisJCXtyZXR1cm4gWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsOjppc1NpZ25lZCgpO30KKwl2aXJ0dWFsIERTSUdTaWduYXR1cmUgKiBnZXRTaWduYXR1cmUodm9pZCkgY29uc3QKKwkJe3JldHVybiBYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGw6OmdldFNpZ25hdHVyZSgpO30KKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0SWQodm9pZCkgY29uc3QKKwkJe3JldHVybiBYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGw6OmdldElkKCk7fQorCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRTZXJ2aWNlKHZvaWQpIGNvbnN0CisJCXtyZXR1cm4gWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsOjpnZXRTZXJ2aWNlKCk7fQorCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXROb25jZSh2b2lkKSBjb25zdAorCQl7cmV0dXJuIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbDo6Z2V0Tm9uY2UoKTt9CisJdmlydHVhbCB2b2lkIHNldElkKGNvbnN0IFhNTENoICogaWQpCisJCXtYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGw6OnNldElkKGlkKTt9CisJdmlydHVhbCB2b2lkIHNldFNlcnZpY2UoY29uc3QgWE1MQ2ggKiBzZXJ2aWNlKQorCQl7WEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsOjpzZXRTZXJ2aWNlKHNlcnZpY2UpO30KKwl2aXJ0dWFsIHZvaWQgc2V0Tm9uY2UoY29uc3QgWE1MQ2ggKiB1cmkpCisJCXtYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGw6OnNldE5vbmNlKHVyaSk7fQorI2VuZGlmCisKK3ByaXZhdGU6CisKKyNpZiBkZWZpbmVkKFhTRUNfTk9fTkFNRVNQQUNFUykKKwl0eXBlZGVmIHZlY3RvcjxYS01TUmVzcG9uZFdpdGhJbXBsICo+CQlSZXNwb25kV2l0aFZlY3RvclR5cGU7CisjZWxzZQorCXR5cGVkZWYgc3RkOjp2ZWN0b3I8WEtNU1Jlc3BvbmRXaXRoSW1wbCAqPglSZXNwb25kV2l0aFZlY3RvclR5cGU7CisjZW5kaWYKKworI2lmIGRlZmluZWQoWFNFQ19OT19OQU1FU1BBQ0VTKQorCXR5cGVkZWYgdmVjdG9yPFhLTVNSZXNwb25zZU1lY2hhbmlzbUltcGwgKj4JCVJlc3BvbnNlTWVjaGFuaXNtVmVjdG9yVHlwZTsKKyNlbHNlCisJdHlwZWRlZiBzdGQ6OnZlY3RvcjxYS01TUmVzcG9uc2VNZWNoYW5pc21JbXBsICo+CVJlc3BvbnNlTWVjaGFuaXNtVmVjdG9yVHlwZTsKKyNlbmRpZgorCisJUmVzcG9uZFdpdGhWZWN0b3JUeXBlCQltX3Jlc3BvbmRXaXRoTGlzdDsJCS8vIExpc3Qgb2YgbV9yZXNwb25kV2l0aCBlbGVtZW50cworCVJlc3BvbnNlTWVjaGFuaXNtVmVjdG9yVHlwZQltX3Jlc3BvbnNlTWVjaGFuaXNtTGlzdDsvLyBMaXN0IG9mIHJlc3BvbnNlTWVjaGFuaXNtIGVsZW1lbnRzCisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgIERPTUF0dHIKKwkJCQkJCSogbXBfb3JpZ2luYWxSZXF1ZXN0SWRBdHRyOworCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSICBET01BdHRyCisJCQkJCQkqIG1wX3Jlc3BvbnNlTGltaXRBdHRyOworCisJLy8gVW5pbXBsZW1lbnRlZAorCVhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbCh2b2lkKTsKKwlYS01TUmVxdWVzdEFic3RyYWN0VHlwZUltcGwoY29uc3QgWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsICYpOworCVhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbCAmIG9wZXJhdG9yID0gKGNvbnN0IFhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbCAmKTsKKworfTsKKworI2RlZmluZQlYS01TX1JFUVVFU1RBQlNUUkFDVFlQRV9JTVBMX01FVEhPRFMgXAorCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRPcmlnaW5hbFJlcXVlc3RJZCh2b2lkKSBjb25zdCBcCisJCXtyZXR1cm4gbV9yZXF1ZXN0LmdldE9yaWdpbmFsUmVxdWVzdElkKCk7fSBcCisJdmlydHVhbCB2b2lkIHNldE9yaWdpbmFsUmVxdWVzdElkKGNvbnN0IFhNTENoICogaWQpIFwKKwkJe21fcmVxdWVzdC5zZXRPcmlnaW5hbFJlcXVlc3RJZChpZCk7fSBcCisJdmlydHVhbCBpbnQgZ2V0UmVzcG9uZFdpdGhTaXplKHZvaWQpIFwKKwkJe3JldHVybiBtX3JlcXVlc3QuZ2V0UmVzcG9uZFdpdGhTaXplKCk7fQlcCisJdmlydHVhbCBYS01TUmVzcG9uZFdpdGggKiBnZXRSZXNwb25kV2l0aEl0ZW0oaW50IGl0ZW0pIFwKKwkJe3JldHVybiBtX3JlcXVlc3QuZ2V0UmVzcG9uZFdpdGhJdGVtKGl0ZW0pO30JXAorCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRSZXNwb25kV2l0aEl0ZW1TdHIoaW50IGl0ZW0pIFwKKwkJe3JldHVybiBtX3JlcXVlc3QuZ2V0UmVzcG9uZFdpdGhJdGVtU3RyKGl0ZW0pO30JXAorCXZpcnR1YWwgdm9pZCBhcHBlbmRSZXNwb25kV2l0aEl0ZW0oWEtNU1Jlc3BvbmRXaXRoICogaXRlbSkgXAorCQl7bV9yZXF1ZXN0LmFwcGVuZFJlc3BvbmRXaXRoSXRlbShpdGVtKTt9IFwKKwl2aXJ0dWFsIHZvaWQgYXBwZW5kUmVzcG9uZFdpdGhJdGVtKGNvbnN0IFhNTENoICogaXRlbSkgXAorCQl7bV9yZXF1ZXN0LmFwcGVuZFJlc3BvbmRXaXRoSXRlbShpdGVtKTt9IFwKKwl2aXJ0dWFsIGludCBnZXRSZXNwb25zZU1lY2hhbmlzbVNpemUodm9pZCkgXAorCQl7cmV0dXJuIG1fcmVxdWVzdC5nZXRSZXNwb25zZU1lY2hhbmlzbVNpemUoKTt9CVwKKwl2aXJ0dWFsIFhLTVNSZXNwb25zZU1lY2hhbmlzbSAqIGdldFJlc3BvbnNlTWVjaGFuaXNtSXRlbShpbnQgaXRlbSkgXAorCQl7cmV0dXJuIG1fcmVxdWVzdC5nZXRSZXNwb25zZU1lY2hhbmlzbUl0ZW0oaXRlbSk7fQlcCisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldFJlc3BvbnNlTWVjaGFuaXNtSXRlbVN0cihpbnQgaXRlbSkgXAorCQl7cmV0dXJuIG1fcmVxdWVzdC5nZXRSZXNwb25zZU1lY2hhbmlzbUl0ZW1TdHIoaXRlbSk7fQlcCisJdmlydHVhbCB2b2lkIGFwcGVuZFJlc3BvbnNlTWVjaGFuaXNtSXRlbShYS01TUmVzcG9uc2VNZWNoYW5pc20gKiBpdGVtKSBcCisJCXttX3JlcXVlc3QuYXBwZW5kUmVzcG9uc2VNZWNoYW5pc21JdGVtKGl0ZW0pO30gXAorCXZpcnR1YWwgdm9pZCBhcHBlbmRSZXNwb25zZU1lY2hhbmlzbUl0ZW0oY29uc3QgWE1MQ2ggKiBpdGVtKSBcCisJCXttX3JlcXVlc3QuYXBwZW5kUmVzcG9uc2VNZWNoYW5pc21JdGVtKGl0ZW0pO30gXAorCXZpcnR1YWwgdm9pZCByZW1vdmVSZXNwb25zZU1lY2hhbmlzbUl0ZW0oaW50IGl0ZW0pIFwKKwkJe21fcmVxdWVzdC5yZW1vdmVSZXNwb25zZU1lY2hhbmlzbUl0ZW0oaXRlbSk7fSBcCisJdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0UmVzcG9uc2VMaW1pdCh2b2lkKSBjb25zdCBcCisJCXtyZXR1cm4gbV9yZXF1ZXN0LmdldFJlc3BvbnNlTGltaXQoKTt9IFwKKwl2aXJ0dWFsIHZvaWQgc2V0UmVzcG9uc2VMaW1pdCh1bnNpZ25lZCBpbnQgbGltaXQpIFwKKwkJe21fcmVxdWVzdC5zZXRSZXNwb25zZUxpbWl0KGxpbWl0KTt9CisKKyNlbmRpZiAvKiBYS01TUkVRVUVTVEFCU1RSQUNUVFlQRUlNUExfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNSZXNwb25kV2l0aEltcGwuY3BwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNSZXNwb25kV2l0aEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2YWYyMjIKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU1Jlc3BvbmRXaXRoSW1wbC5jcHAKQEAgLTAsMCArMSwxNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNSZXNwb25kV2l0aEltcGwgOj0gSW1wbGVtZW50YXRpb24gb2YgWEtNU1Jlc3BvbmRXaXRoCisgKgorICogJElkJAorICoKKyAqLworCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vudi5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNDb25zdGFudHMuaHBwPgorCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFVuaURlZnMuaHBwPgorCisjaW5jbHVkZSAiWEtNU1Jlc3BvbmRXaXRoSW1wbC5ocHAiCisKKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdC9EZXN0cnVjdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitYS01TUmVzcG9uZFdpdGhJbXBsOjpYS01TUmVzcG9uZFdpdGhJbXBsKGNvbnN0IFhTRUNFbnYgKiBlbnYpIDoKK21wX2VudihlbnYpLAorbXBfcmVzcG9uZFdpdGhUZXh0Tm9kZShOVUxMKQore30KKworWEtNU1Jlc3BvbmRXaXRoSW1wbDo6WEtNU1Jlc3BvbmRXaXRoSW1wbCgJCQorCQljb25zdCBYU0VDRW52ICogZW52LCAKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBub2RlKSA6CittcF9lbnYoZW52KSwKK21wX3Jlc3BvbmRXaXRoRWxlbWVudChub2RlKSwKK21wX3Jlc3BvbmRXaXRoVGV4dE5vZGUoTlVMTCkgeworCit9CisKK1hLTVNSZXNwb25kV2l0aEltcGw6On5YS01TUmVzcG9uZFdpdGhJbXBsKCkge30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBMb2FkCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIFhLTVNSZXNwb25kV2l0aEltcGw6OmxvYWQodm9pZCkgeworCisJaWYgKG1wX3Jlc3BvbmRXaXRoRWxlbWVudCA9PSBOVUxMKSB7CisKKwkJLy8gQXR0ZW1wdCB0byBsb2FkIGFuIGVtcHR5IGVsZW1lbnQKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsCisJCQkiWEtNU1Jlc3BvbmRXaXRoOjpsb2FkIC0gY2FsbGVkIG9uIGVtcHR5IERPTSIpOworCisJfQorCisJbXBfcmVzcG9uZFdpdGhUZXh0Tm9kZSA9IGZpbmRGaXJzdENoaWxkT2ZUeXBlKG1wX3Jlc3BvbmRXaXRoRWxlbWVudCwgRE9NTm9kZTo6VEVYVF9OT0RFKTsKKworCWlmIChtcF9yZXNwb25kV2l0aFRleHROb2RlID09IE5VTEwpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkWEtNU0NoaWxkTm90Rm91bmQsCisJCQkiWEtNU1Jlc3BvbmRXaXRoOjpsb2FkIC0gRXhwZWN0ZWQgVEVYVCBub2RlIGJlbmVhdGggPFJlc3BvbmRXaXRoPiBlbGVtZW50Iik7CisKKwl9CisKK30KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ3JlYXRlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitET01FbGVtZW50ICogWEtNU1Jlc3BvbmRXaXRoSW1wbDo6Y3JlYXRlQmxhbmtSZXNwb25kV2l0aChjb25zdCBYTUxDaCAqIGl0ZW0pIHsKKworCS8vIEdldCBzb21lIHNldHVwIHZhbHVlcworCXNhZmVCdWZmZXIgc3RyOworCURPTURvY3VtZW50ICpkb2MgPSBtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCk7CisJY29uc3QgWE1MQ2ggKiBwcmVmaXggPSBtcF9lbnYtPmdldFhLTVNOU1ByZWZpeCgpOworCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCBYS01TQ29uc3RhbnRzOjpzX3RhZ1Jlc3BvbmRXaXRoKTsKKworCW1wX3Jlc3BvbmRXaXRoRWxlbWVudCA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKFhLTVNDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhLTVMsIAorCQkJCQkJCQkJCQkJc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCisJLy8gQ3JlYXRlIHRoZSBSZXNwb25kV2l0aCBpdGVtCisJc3RyLnNiWE1MQ2hJbihYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TKTsKKwlzdHIuc2JYTUxDaENhdChpdGVtKTsKKworCW1wX3Jlc3BvbmRXaXRoVGV4dE5vZGUgPSBkb2MtPmNyZWF0ZVRleHROb2RlKHN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKwltcF9yZXNwb25kV2l0aEVsZW1lbnQtPmFwcGVuZENoaWxkKG1wX3Jlc3BvbmRXaXRoVGV4dE5vZGUpOworCisJcmV0dXJuIG1wX3Jlc3BvbmRXaXRoRWxlbWVudDsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBHZXQgaW50ZXJmYWNlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjb25zdCBYTUxDaCAqIFhLTVNSZXNwb25kV2l0aEltcGw6OmdldFJlc3BvbmRXaXRoU3RyaW5nKHZvaWQpIGNvbnN0IHsKKworCWlmIChtcF9yZXNwb25kV2l0aFRleHROb2RlID09IE5VTEwpIHsKKworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwKKwkJCSJYS01TUmVzcG9uZFdpdGg6OmdldFJlc3BvbmRXaXRoU3RyaW5nIC0gQXR0ZW1wdCB0byBnZXQgcHJpb3IgdG8gaW5pdGlhbGlzYXRpb24iKTsKKwl9CisJY29uc3QgWE1MQ2ggKiByID0gbXBfcmVzcG9uZFdpdGhUZXh0Tm9kZS0+Z2V0Tm9kZVZhbHVlKCk7CisKKwlpbnQgaW5kZXggPSBYTUxTdHJpbmc6OmluZGV4T2YociwgY2hQb3VuZCk7CisKKwlpZiAoaW5kZXggPT0gLTEgfHwgWE1MU3RyaW5nOjpjb21wYXJlTlN0cmluZyhyLCBYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TLCBpbmRleCkpIHsKKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLAorCQkJCSJYS01TUmVzcG9uZFdpdGg6OmdldFJlc3BvbmRXaXRoU3RyaW5nIC0gSXRlbSBub3QgaW4gWEtNUyBOYW1lIFNwYWNlIik7CisJfQorCisJcmV0dXJuICZyW2luZGV4KzFdOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU2V0IGludGVyZmFjZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBYS01TUmVzcG9uZFdpdGhJbXBsOjpzZXRSZXNwb25kV2l0aFN0cmluZyhjb25zdCBYTUxDaCAqIHN0cikgeworCisJaWYgKG1wX3Jlc3BvbmRXaXRoVGV4dE5vZGUgPT0gTlVMTCkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLAorCQkJIlhLTVNSZXNwb25kV2l0aDo6c2V0UmVzcG9uZFdpdGhTdHJpbmcgLSBBdHRlbXB0IHRvIHNldCBwcmlvciB0byBpbml0aWFsaXNhdGlvbiIpOworCX0KKworCXNhZmVCdWZmZXIgc2I7CisJc2Iuc2JYTUxDaEluKFhLTVNDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhLTVMpOworCXNiLnNiWE1MQ2hDYXQoc3RyKTsKKworCW1wX3Jlc3BvbmRXaXRoVGV4dE5vZGUtPnNldE5vZGVWYWx1ZShzYi5yYXdYTUxDaEJ1ZmZlcigpKTsKKworfQorCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU1Jlc3BvbmRXaXRoSW1wbC5ocHAgYi9jL3NyYy94a21zL2ltcGwvWEtNU1Jlc3BvbmRXaXRoSW1wbC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDE4MDE1ZgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUmVzcG9uZFdpdGhJbXBsLmhwcApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TUmVzcG9uZFdpdGhJbXBsIDo9IEltcGxlbWVudGF0aW9uIG9mIFhLTVNSZXNwb25kV2l0aAorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYS01TUkVTUE9ORFdJVEhJTVBMX0lOQ0xVREUKKyNkZWZpbmUgWEtNU1JFU1BPTkRXSVRISU1QTF9JTkNMVURFCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1Jlc3BvbmRXaXRoLmhwcD4KKworY2xhc3MgWFNFQ0VudjsKKworY2xhc3MgWEtNU1Jlc3BvbmRXaXRoSW1wbCA6IHB1YmxpYyBYS01TUmVzcG9uZFdpdGggeworCitwdWJsaWM6CisKKwlYS01TUmVzcG9uZFdpdGhJbXBsKGNvbnN0IFhTRUNFbnYgKiBlbnYpOworCVhLTVNSZXNwb25kV2l0aEltcGwoCQkKKwkJY29uc3QgWFNFQ0VudiAqIGVudiwgCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogbm9kZQorCSk7CisKKwl2aXJ0dWFsIH5YS01TUmVzcG9uZFdpdGhJbXBsKCk7CisKKwkvLyBsb2FkCisJdm9pZCBsb2FkKHZvaWQpOworCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiAKKwkJY3JlYXRlQmxhbmtSZXNwb25kV2l0aCgKKwkJY29uc3QgWE1MQ2ggKiBpdGVtKTsKKworCS8qIEdldHRlciBJbnRlcmZhY2UgTWV0aG9kcyAqLworCisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGdldEVsZW1lbnQodm9pZCkgY29uc3QgeworCQlyZXR1cm4gbXBfcmVzcG9uZFdpdGhFbGVtZW50OworCX0KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRSZXNwb25kV2l0aFN0cmluZyh2b2lkKSBjb25zdDsKKworCS8qIFNldHRlciBpbnRlcmZhY2UgbWV0aG9kcyAqLworCisJdmlydHVhbCB2b2lkIHNldFJlc3BvbmRXaXRoU3RyaW5nKGNvbnN0IFhNTENoICogc3RyKTsKKworCS8vQH0KKworCitwcml2YXRlOgorCisJY29uc3QgWFNFQ0VudgkJCSogbXBfZW52OworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50IAorCQkJCQkJCSogbXBfcmVzcG9uZFdpdGhFbGVtZW50OworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlCisJCQkJCQkJKiBtcF9yZXNwb25kV2l0aFRleHROb2RlOworCisJLy8gVW5pbXBsZW1lbnRlZAorCVhLTVNSZXNwb25kV2l0aEltcGwoY29uc3QgWEtNU1Jlc3BvbmRXaXRoSW1wbCAmKTsKKwlYS01TUmVzcG9uZFdpdGhJbXBsICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU1Jlc3BvbmRXaXRoSW1wbCAmKTsKKworfTsKKworI2VuZGlmIC8qIFhLTVNSRVNQT05EV0lUSElNUExfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNSZXNwb25zZU1lY2hhbmlzbUltcGwuY3BwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNSZXNwb25zZU1lY2hhbmlzbUltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhYTVmMTgKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU1Jlc3BvbnNlTWVjaGFuaXNtSW1wbC5jcHAKQEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TUmVzcG9uc2VNZWNoYW5pc21JbXBsIDo9IEltcGxlbWVudGF0aW9uIG9mIFhLTVNSZXNwb25zZU1lY2hhbmlzbQorICoKKyAqICRJZCQKKyAqCisgKi8KKworLy8gWFNFQyBJbmNsdWRlcworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDRE9NVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TQ29uc3RhbnRzLmhwcD4KKworI2luY2x1ZGUgPHhlcmNlc2MvdXRpbC9YTUxVbmlEZWZzLmhwcD4KKworI2luY2x1ZGUgIlhLTVNSZXNwb25zZU1lY2hhbmlzbUltcGwuaHBwIgorCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdHJ1Y3QvRGVzdHJ1Y3QKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworWEtNU1Jlc3BvbnNlTWVjaGFuaXNtSW1wbDo6WEtNU1Jlc3BvbnNlTWVjaGFuaXNtSW1wbChjb25zdCBYU0VDRW52ICogZW52KSA6CittcF9lbnYoZW52KSwKK21wX3Jlc3BvbnNlTWVjaGFuaXNtVGV4dE5vZGUoTlVMTCkKK3t9CisKK1hLTVNSZXNwb25zZU1lY2hhbmlzbUltcGw6OlhLTVNSZXNwb25zZU1lY2hhbmlzbUltcGwoCQkKKwkJY29uc3QgWFNFQ0VudiAqIGVudiwgCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogbm9kZSkgOgorbXBfZW52KGVudiksCittcF9yZXNwb25zZU1lY2hhbmlzbUVsZW1lbnQobm9kZSksCittcF9yZXNwb25zZU1lY2hhbmlzbVRleHROb2RlKE5VTEwpIHsKKworfQorCitYS01TUmVzcG9uc2VNZWNoYW5pc21JbXBsOjp+WEtNU1Jlc3BvbnNlTWVjaGFuaXNtSW1wbCgpIHt9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgTG9hZAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBYS01TUmVzcG9uc2VNZWNoYW5pc21JbXBsOjpsb2FkKHZvaWQpIHsKKworCWlmIChtcF9yZXNwb25zZU1lY2hhbmlzbUVsZW1lbnQgPT0gTlVMTCkgeworCisJCS8vIEF0dGVtcHQgdG8gbG9hZCBhbiBlbXB0eSBlbGVtZW50CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLAorCQkJIlhLTVNSZXNwb25zZU1lY2hhbmlzbTo6bG9hZCAtIGNhbGxlZCBvbiBlbXB0eSBET00iKTsKKworCX0KKworCW1wX3Jlc3BvbnNlTWVjaGFuaXNtVGV4dE5vZGUgPSBmaW5kRmlyc3RDaGlsZE9mVHlwZShtcF9yZXNwb25zZU1lY2hhbmlzbUVsZW1lbnQsIERPTU5vZGU6OlRFWFRfTk9ERSk7CisKKwlpZiAobXBfcmVzcG9uc2VNZWNoYW5pc21UZXh0Tm9kZSA9PSBOVUxMKSB7CisKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZFhLTVNDaGlsZE5vdEZvdW5kLAorCQkJIlhLTVNSZXNwb25zZU1lY2hhbmlzbTo6bG9hZCAtIEV4cGVjdGVkIFRFWFQgbm9kZSBiZW5lYXRoIDxSZXNwb25zZU1lY2hhbmlzbT4gZWxlbWVudCIpOworCisJfQorCit9CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENyZWF0ZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRE9NRWxlbWVudCAqIFhLTVNSZXNwb25zZU1lY2hhbmlzbUltcGw6OmNyZWF0ZUJsYW5rUmVzcG9uc2VNZWNoYW5pc20oY29uc3QgWE1MQ2ggKiBpdGVtKSB7CisKKwkvLyBHZXQgc29tZSBzZXR1cCB2YWx1ZXMKKwlzYWZlQnVmZmVyIHN0cjsKKwlET01Eb2N1bWVudCAqZG9jID0gbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpOworCWNvbnN0IFhNTENoICogcHJlZml4ID0gbXBfZW52LT5nZXRYS01TTlNQcmVmaXgoKTsKKworCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgWEtNU0NvbnN0YW50czo6c190YWdSZXNwb25zZU1lY2hhbmlzbSk7CisKKwltcF9yZXNwb25zZU1lY2hhbmlzbUVsZW1lbnQgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TLCAKKwkJCQkJCQkJCQkJCXN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKworCS8vIENyZWF0ZSB0aGUgUmVzcG9uc2VNZWNoYW5pc20gaXRlbQorCXN0ci5zYlhNTENoSW4oWEtNU0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWEtNUyk7CisJc3RyLnNiWE1MQ2hDYXQoaXRlbSk7CisJbXBfcmVzcG9uc2VNZWNoYW5pc21UZXh0Tm9kZSA9IGRvYy0+Y3JlYXRlVGV4dE5vZGUoc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCW1wX3Jlc3BvbnNlTWVjaGFuaXNtRWxlbWVudC0+YXBwZW5kQ2hpbGQobXBfcmVzcG9uc2VNZWNoYW5pc21UZXh0Tm9kZSk7CisKKwlyZXR1cm4gbXBfcmVzcG9uc2VNZWNoYW5pc21FbGVtZW50OworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdldCBpbnRlcmZhY2UKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NvbnN0IFhNTENoICogWEtNU1Jlc3BvbnNlTWVjaGFuaXNtSW1wbDo6Z2V0UmVzcG9uc2VNZWNoYW5pc21TdHJpbmcodm9pZCkgY29uc3QgeworCisJaWYgKG1wX3Jlc3BvbnNlTWVjaGFuaXNtVGV4dE5vZGUgPT0gTlVMTCkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLAorCQkJIlhLTVNSZXNwb25zZU1lY2hhbmlzbTo6Z2V0UmVzcG9uc2VNZWNoYW5pc21TdHJpbmcgLSBBdHRlbXB0IHRvIGdldCBwcmlvciB0byBpbml0aWFsaXNhdGlvbiIpOworCX0KKwljb25zdCBYTUxDaCAqIHIgPSBtcF9yZXNwb25zZU1lY2hhbmlzbVRleHROb2RlLT5nZXROb2RlVmFsdWUoKTsKKworCWludCBpbmRleCA9IFhNTFN0cmluZzo6aW5kZXhPZihyLCBjaFBvdW5kKTsKKwlpZiAoaW5kZXggPT0gLTEgfHwgWE1MU3RyaW5nOjpjb21wYXJlTlN0cmluZyhyLCBYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TLCBpbmRleCkpIHsKKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLAorCQkJCSJYS01TUmVzcG9uc2VNZWNoYW5pc206OmdldFJlc3BvbnNlTWVjaGFuaXNtU3RyaW5nIC0gSXRlbSBub3QgaW4gWEtNUyBOYW1lIFNwYWNlIik7CisJfQorCisJcmV0dXJuICZyW2luZGV4KzFdOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU2V0IGludGVyZmFjZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBYS01TUmVzcG9uc2VNZWNoYW5pc21JbXBsOjpzZXRSZXNwb25zZU1lY2hhbmlzbVN0cmluZyhjb25zdCBYTUxDaCAqIHN0cikgeworCisJaWYgKG1wX3Jlc3BvbnNlTWVjaGFuaXNtVGV4dE5vZGUgPT0gTlVMTCkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLAorCQkJIlhLTVNSZXNwb25zZU1lY2hhbmlzbTo6c2V0UmVzcG9uc2VNZWNoYW5pc21TdHJpbmcgLSBBdHRlbXB0IHRvIHNldCBwcmlvciB0byBpbml0aWFsaXNhdGlvbiIpOworCX0KKworCXNhZmVCdWZmZXIgc2I7CisJc2Iuc2JYTUxDaEluKFhLTVNDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhLTVMpOworCXNiLnNiWE1MQ2hDYXQoc3RyKTsKKworCW1wX3Jlc3BvbnNlTWVjaGFuaXNtVGV4dE5vZGUtPnNldE5vZGVWYWx1ZShzYi5yYXdYTUxDaEJ1ZmZlcigpKTsKKworfQorCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU1Jlc3BvbnNlTWVjaGFuaXNtSW1wbC5ocHAgYi9jL3NyYy94a21zL2ltcGwvWEtNU1Jlc3BvbnNlTWVjaGFuaXNtSW1wbC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdiZGEwYgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUmVzcG9uc2VNZWNoYW5pc21JbXBsLmhwcApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TUmVzcG9uc2VNZWNoYW5pc21JbXBsIDo9IEltcGxlbWVudGF0aW9uIG9mIFhLTVNSZXNwb25zZU1lY2hhbmlzbQorICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYS01TUkVTUE9OU0VNRUNIQU5JU01JTVBMX0lOQ0xVREUKKyNkZWZpbmUgWEtNU1JFU1BPTlNFTUVDSEFOSVNNSU1QTF9JTkNMVURFCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1Jlc3BvbnNlTWVjaGFuaXNtLmhwcD4KKworY2xhc3MgWFNFQ0VudjsKKworY2xhc3MgWEtNU1Jlc3BvbnNlTWVjaGFuaXNtSW1wbCA6IHB1YmxpYyBYS01TUmVzcG9uc2VNZWNoYW5pc20geworCitwdWJsaWM6CisKKwlYS01TUmVzcG9uc2VNZWNoYW5pc21JbXBsKGNvbnN0IFhTRUNFbnYgKiBlbnYpOworCVhLTVNSZXNwb25zZU1lY2hhbmlzbUltcGwoCQkKKwkJY29uc3QgWFNFQ0VudiAqIGVudiwgCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogbm9kZQorCSk7CisKKwl2aXJ0dWFsIH5YS01TUmVzcG9uc2VNZWNoYW5pc21JbXBsKCk7CisKKwkvLyBsb2FkCisJdm9pZCBsb2FkKHZvaWQpOworCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiAKKwkJY3JlYXRlQmxhbmtSZXNwb25zZU1lY2hhbmlzbSgKKwkJY29uc3QgWE1MQ2ggKiBpdGVtKTsKKworCS8qIEdldHRlciBJbnRlcmZhY2UgTWV0aG9kcyAqLworCisJdmlydHVhbCBYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIGdldEVsZW1lbnQodm9pZCkgY29uc3QgeworCQlyZXR1cm4gbXBfcmVzcG9uc2VNZWNoYW5pc21FbGVtZW50OworCX0KKworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRSZXNwb25zZU1lY2hhbmlzbVN0cmluZyh2b2lkKSBjb25zdDsKKworCS8qIFNldHRlciBpbnRlcmZhY2UgbWV0aG9kcyAqLworCisJdmlydHVhbCB2b2lkIHNldFJlc3BvbnNlTWVjaGFuaXNtU3RyaW5nKGNvbnN0IFhNTENoICogc3RyKTsKKworCS8vQH0KKworCitwcml2YXRlOgorCisJY29uc3QgWFNFQ0VudgkJCSogbXBfZW52OworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50IAorCQkJCQkJCSogbXBfcmVzcG9uc2VNZWNoYW5pc21FbGVtZW50OworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlCisJCQkJCQkJKiBtcF9yZXNwb25zZU1lY2hhbmlzbVRleHROb2RlOworCisJLy8gVW5pbXBsZW1lbnRlZAorCVhLTVNSZXNwb25zZU1lY2hhbmlzbUltcGwoY29uc3QgWEtNU1Jlc3BvbnNlTWVjaGFuaXNtSW1wbCAmKTsKKwlYS01TUmVzcG9uc2VNZWNoYW5pc21JbXBsICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU1Jlc3BvbnNlTWVjaGFuaXNtSW1wbCAmKTsKKworfTsKKworI2VuZGlmIC8qIFhLTVNSRVNQT05TRU1FQ0hBTklTTUlNUExfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNSZXN1bHRJbXBsLmNwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUmVzdWx0SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmUxMjczMwotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUmVzdWx0SW1wbC5jcHAKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNSZXN1bHRJbXBsIDo9IEltcGxlbWVudGF0aW9uIG9mIFJlc3VsdCBNZXNzYWdlcworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0NvbnN0YW50cy5ocHA+CisKKyNpbmNsdWRlICJYS01TUmVzdWx0SW1wbC5ocHAiCisKKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdHJ1Y3QvRGVzdHJ1Y3QKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hLTVNSZXN1bHRJbXBsOjpYS01TUmVzdWx0SW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudikgOgorbV9yZXN1bHQoZW52KSwKK21fbXNnKG1fcmVzdWx0Lm1fbXNnKSB7CisKK30KKworWEtNU1Jlc3VsdEltcGw6OlhLTVNSZXN1bHRJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52LCAKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBub2RlKSA6CittX3Jlc3VsdChlbnYsIG5vZGUpLAorbV9tc2cobV9yZXN1bHQubV9tc2cpIHsKKworfQorCitYS01TUmVzdWx0SW1wbDo6flhLTVNSZXN1bHRJbXBsKCkgeworCisKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIExvYWQgZnJvbSBET00KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIExvYWQgZWxlbWVudHMKK3ZvaWQgWEtNU1Jlc3VsdEltcGw6OmxvYWQoKSB7CisKKwlpZiAobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQgPT0gTlVMTCkgeworCisJCS8vIEF0dGVtcHQgdG8gbG9hZCBhbiBlbXB0eSBlbGVtZW50CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLAorCQkJIlhLTVNSZXN1bHQ6OmxvYWQgLSBjYWxsZWQgb24gZW1wdHkgRE9NIik7CisKKwl9CisKKwlpZiAoIXN0ckVxdWFscyhnZXRYS01TTG9jYWxOYW1lKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KSwgCisJCQkJCQkJCQlYS01TQ29uc3RhbnRzOjpzX3RhZ1Jlc3VsdCkpIHsKKwkKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsCisJCQkiWEtNU1Jlc3VsdDo6bG9hZCAtIGNhbGxlZCBpbmNvcnJlY3Qgbm9kZSIpOworCQorCX0KKworCS8vIExvYWQgdGhlIGJhc2UgbWVzc2FnZQorCW1fcmVzdWx0LmxvYWQoKTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENyZWF0ZSBhIGJsYW5rIG9uZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0RPTUVsZW1lbnQgKiBYS01TUmVzdWx0SW1wbDo6Y3JlYXRlQmxhbmtSZXN1bHQoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJY29uc3QgWE1MQ2ggKiBpZCwKKwkJUmVzdWx0TWFqb3Igcm1haiwKKwkJUmVzdWx0TWlub3Igcm1pbikgeworCisJcmV0dXJuIG1fcmVzdWx0LmNyZWF0ZUJsYW5rUmVzdWx0VHlwZSgKKwkJWEtNU0NvbnN0YW50czo6c190YWdSZXN1bHQsIHNlcnZpY2UsIGlkLCBybWFqLCBybWluKTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdldCBpbnRlcmZhY2UgbWV0aG9kcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGU6Om1lc3NhZ2VUeXBlIFhLTVNSZXN1bHRJbXBsOjpnZXRNZXNzYWdlVHlwZSh2b2lkKSB7CisKKwlyZXR1cm4gWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsOjpSZXN1bHQ7CisKK30KKwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNSZXN1bHRJbXBsLmhwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUmVzdWx0SW1wbC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFiNWQxNgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUmVzdWx0SW1wbC5ocHAKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU1Jlc3VsdEltcGwgOj0gSW1wbGVtZW50YXRpb24gb2YgUmVzdWx0IE1lc3NhZ2VzCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhLTVNSRVNVTFRJTVBMX0lOQ0xVREUKKyNkZWZpbmUgWEtNU1JFU1VMVElNUExfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNSZXN1bHQuaHBwPgorCisjaW5jbHVkZSAiWEtNU1Jlc3VsdFR5cGVJbXBsLmhwcCIKKworY2xhc3MgWEtNU1Jlc3VsdEltcGwgOiBwdWJsaWMgWEtNU1Jlc3VsdCB7CisKK3B1YmxpYzoKKwlYS01TUmVzdWx0VHlwZUltcGwgbV9yZXN1bHQ7CisJWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsICZtX21zZzsKK3B1YmxpYzoKKworCVhLTVNSZXN1bHRJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52CisJKTsKKworCVhLTVNSZXN1bHRJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52LCAKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBub2RlCisJKTsKKworCXZpcnR1YWwgflhLTVNSZXN1bHRJbXBsKCk7CisKKwkvLyBMb2FkIGVsZW1lbnRzCisJdm9pZCBsb2FkKCk7CisKKwkvLyBDcmVhdGlvbgorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogCisJCWNyZWF0ZUJsYW5rUmVzdWx0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCWNvbnN0IFhNTENoICogaWQsCisJCVJlc3VsdE1ham9yIHJtYWosCisJCVJlc3VsdE1pbm9yIHJtaW4pOworCisJLyogSW1wbGVtZW50ZWQgZnJvbSBNZXNzYWdlQWJzdHJhY3RUeXBlICovCisJdmlydHVhbCBtZXNzYWdlVHlwZSBnZXRNZXNzYWdlVHlwZSh2b2lkKTsKKworCS8qIEZvcmNlZCBpbmhlcml0YW5jZSBmcm9tIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbCAqLworCVhLTVNfTUVTU0FHRUFCU1RSQUNUWVBFX0lNUExfTUVUSE9EUworCisJLyogRm9yY2VkIGluaGVyaXRhbmNlIGZyb20gWEtNU1Jlc3VsdFR5cGVJbXBsICovCisJWEtNU19SRVNVTFRUWVBFX0lNUExfTUVUSE9EUworCitwcml2YXRlOgorCisJLy8gVW5pbXBsZW1lbnRlZAorCVhLTVNSZXN1bHRJbXBsKGNvbnN0IFhLTVNSZXN1bHRJbXBsICYpOworCVhLTVNSZXN1bHRJbXBsICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU1Jlc3VsdEltcGwgJik7CisKK307CisKKyNlbmRpZiAvKiBYS01TUkVTVUxUSU1QTF9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU1Jlc3VsdFR5cGVJbXBsLmNwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUmVzdWx0VHlwZUltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkNmEwZjMKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU1Jlc3VsdFR5cGVJbXBsLmNwcApAQCAtMCwwICsxLDMwOSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU1Jlc3VsdFR5cGVJbXBsIDo9IEltcGxlbWVudGF0aW9uIG9mIGJhc2Ugc2NoZW1hIG9mIFhLTVMgUmVxdWVzdCBtZXNzYWdlcworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXhjZXB0aW9uLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRW52LmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0NvbnN0YW50cy5ocHA+CisKKyNpbmNsdWRlICJYS01TUmVzdWx0VHlwZUltcGwuaHBwIgorCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MVW5pRGVmcy5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdG9yIERlc3RydWN0b3IKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hLTVNSZXN1bHRUeXBlSW1wbDo6WEtNU1Jlc3VsdFR5cGVJbXBsKAorCWNvbnN0IFhTRUNFbnYgKiBlbnYpIDoKK21fbXNnKGVudiksCittcF9yZXN1bHRNYWpvckF0dHIoTlVMTCksCittcF9yZXN1bHRNaW5vckF0dHIoTlVMTCksCittcF9yZXF1ZXN0U2lnbmF0dXJlVmFsdWVFbGVtZW50KE5VTEwpCit7CisKK30KKworWEtNU1Jlc3VsdFR5cGVJbXBsOjpYS01TUmVzdWx0VHlwZUltcGwoCisJY29uc3QgWFNFQ0VudiAqIGVudiwgCisJRE9NRWxlbWVudCAqIG5vZGUpIDoKK21fbXNnKGVudiwgbm9kZSksCittcF9yZXF1ZXN0U2lnbmF0dXJlVmFsdWVFbGVtZW50KE5VTEwpCit7CisKK30KKworWEtNU1Jlc3VsdFR5cGVJbXBsOjp+WEtNU1Jlc3VsdFR5cGVJbXBsKCkgeworCit9CisJCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIExvYWQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgWEtNU1Jlc3VsdFR5cGVJbXBsOjpsb2FkKHZvaWQpIHsKKworCWlmIChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCA9PSBOVUxMKSB7CisKKwkJLy8gQXR0ZW1wdCB0byBsb2FkIGFuIGVtcHR5IGVsZW1lbnQKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpSZXN1bHRUeXBlRXJyb3IsCisJCQkiWEtNU1Jlc3VsdFR5cGU6OmxvYWQgLSBjYWxsZWQgb24gZW1wdHkgRE9NIik7CisKKwl9CisKKwltX21zZy5sb2FkKCk7CisKKwkvKiBOb3cgbG9hZCB0aGUgcmVzdWx0IGF0dHJpYnV0ZXMgKi8KKworCW1wX3Jlc3VsdE1ham9yQXR0ciA9IAorCQltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+Z2V0QXR0cmlidXRlTm9kZU5TKE5VTEwsIFhLTVNDb25zdGFudHM6OnNfdGFnUmVzdWx0TWFqb3IpOworCW1wX3Jlc3VsdE1pbm9yQXR0ciA9IAorCQltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+Z2V0QXR0cmlidXRlTm9kZU5TKE5VTEwsIFhLTVNDb25zdGFudHM6OnNfdGFnUmVzdWx0TWlub3IpOworCW1wX3JlcXVlc3RJZEF0dHIgPQorCQltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+Z2V0QXR0cmlidXRlTm9kZU5TKE5VTEwsIFhLTVNDb25zdGFudHM6OnNfdGFnUmVxdWVzdElkKTsKKworCS8qIERlY29kZSByZXNwb25zZXMgKi8KKwlpZiAobXBfcmVzdWx0TWFqb3JBdHRyID09IE5VTEwpIHsKKwkJLy8gQXR0ZW1wdCB0byBsb2FkIGFuIGVtcHR5IGVsZW1lbnQKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpSZXN1bHRUeXBlRXJyb3IsCisJCQkiWEtNU1Jlc3VsdFR5cGU6OmxvYWQgLSBObyBNYWpvciBSZXNwb25zZSBjb2RlIGZvdW5kIik7CisJfQorCisJY29uc3QgWE1MQ2ggKiByZXMgPSBtcF9yZXN1bHRNYWpvckF0dHItPmdldE5vZGVWYWx1ZSgpOworCisJLy8gUmVzdWx0IHR5cGVzIGhhdmUgbm93IGJlZW4gdXBkYXRlZCwgYW5kIGFyZSBVUklzIHdpdGggdGhlIFhLTVMgbmFtZXNwYWNlIHByZXBlbmRlZAorCS8vIHRvIHRoZSBhY3R1YWwgcmVzdWx0IHZhbHVlCisKKwlpbnQgcmVzMiA9IFhNTFN0cmluZzo6aW5kZXhPZihyZXMsIGNoUG91bmQpOworCWlmIChyZXMyID09IC0xIHx8IFhNTFN0cmluZzo6Y29tcGFyZU5TdHJpbmcocmVzLCBYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TLCByZXMyKSkgeworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpSZXN1bHRUeXBlRXJyb3IsCisJCQkJIlhLTVNSZXN1bHRUeXBlOjpsb2FkIC0gUmVzdWx0VHlwZSBub3QgaW4gWEtNUyBOYW1lIFNwYWNlIik7CisJfQorCisJcmVzID0gJnJlc1tyZXMyKzFdOworCWZvciAobV9yZXN1bHRNYWpvciA9IFhLTVNSZXN1bHRUeXBlOjpQZW5kaW5nOyAKKwkJbV9yZXN1bHRNYWpvciA+IFhLTVNSZXN1bHRUeXBlOjpOb25lTWFqb3I7IAorCQltX3Jlc3VsdE1ham9yID0gKFhLTVNSZXN1bHRUeXBlOjpSZXN1bHRNYWpvcikgKG1fcmVzdWx0TWFqb3ItMSkpIHsKKworCQlpZiAoc3RyRXF1YWxzKFhLTVNDb25zdGFudHM6OnNfdGFnUmVzdWx0TWFqb3JDb2Rlc1ttX3Jlc3VsdE1ham9yXSwgcmVzKSkKKwkJCWJyZWFrOworCisJfQorCisJaWYgKG1wX3Jlc3VsdE1pbm9yQXR0ciAhPSBOVUxMKSB7CisKKwkJcmVzID0gbXBfcmVzdWx0TWlub3JBdHRyLT5nZXROb2RlVmFsdWUoKTsKKwkJaW50IHJlczIgPSBYTUxTdHJpbmc6OmluZGV4T2YocmVzLCBjaFBvdW5kKTsKKwkJaWYgKHJlczIgPT0gLTEgfHwKKwkJCVhNTFN0cmluZzo6Y29tcGFyZU5TdHJpbmcocmVzLCBYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TLCByZXMyKSkgeworCisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlJlc3VsdFR5cGVFcnJvciwKKwkJCQkiWEtNU1Jlc3VsdFR5cGU6OmxvYWQgLSBSZXN1bHRUeXBlIG5vdCBpbiBYS01TIE5hbWUgU3BhY2UiKTsKKwkJfQorCisJCXJlcyA9ICZyZXNbcmVzMisxXTsKKworCQlmb3IgKG1fcmVzdWx0TWlub3IgPSBYS01TUmVzdWx0VHlwZTo6Tm90U3luY2hyb25vdXM7IAorCQkJbV9yZXN1bHRNaW5vciA+IFhLTVNSZXN1bHRUeXBlOjpOb25lTWlub3I7IAorCQkJbV9yZXN1bHRNaW5vciA9IChYS01TUmVzdWx0VHlwZTo6UmVzdWx0TWlub3IpIChtX3Jlc3VsdE1pbm9yLTEpKSB7CisKKwkJCWlmIChzdHJFcXVhbHMoWEtNU0NvbnN0YW50czo6c190YWdSZXN1bHRNaW5vckNvZGVzW21fcmVzdWx0TWlub3JdLCByZXMpKQorCQkJCWJyZWFrOworCisJCX0KKwl9CisKKwllbHNlCisJCW1fcmVzdWx0TWlub3IgPSBYS01TUmVzdWx0VHlwZTo6Tm9uZU1pbm9yOworCisJLyogQ2hlY2sgdG8gc2VlIGlmIHRoZXJlIGlzIGEgUmVxdWVzdFNpZ25hdHVyZVZhbHVlIG5vZGUgKi8KKwltcF9yZXF1ZXN0U2lnbmF0dXJlVmFsdWVFbGVtZW50ID0gKERPTUVsZW1lbnQgKikgZmluZEZpcnN0Q2hpbGRPZlR5cGUobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQsIERPTU5vZGU6OkVMRU1FTlRfTk9ERSk7CisJd2hpbGUgKG1wX3JlcXVlc3RTaWduYXR1cmVWYWx1ZUVsZW1lbnQgIT0gTlVMTCAmJiAKKwkJIXN0ckVxdWFscyhnZXRYS01TTG9jYWxOYW1lKG1wX3JlcXVlc3RTaWduYXR1cmVWYWx1ZUVsZW1lbnQpLCBYS01TQ29uc3RhbnRzOjpzX3RhZ1JlcXVlc3RTaWduYXR1cmVWYWx1ZSkpIHsKKworCQltcF9yZXF1ZXN0U2lnbmF0dXJlVmFsdWVFbGVtZW50ID0gZmluZE5leHRFbGVtZW50Q2hpbGQobXBfcmVxdWVzdFNpZ25hdHVyZVZhbHVlRWxlbWVudCk7CisKKwl9CisKKwlpZiAobXBfcmVxdWVzdFNpZ25hdHVyZVZhbHVlRWxlbWVudCAhPSBOVUxMKSB7CisKKwkJaWYgKGZpbmRGaXJzdENoaWxkT2ZUeXBlKG1wX3JlcXVlc3RTaWduYXR1cmVWYWx1ZUVsZW1lbnQsIERPTU5vZGU6OlRFWFRfTk9ERSkgPT0gTlVMTCkgeworCQkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpSZXN1bHRUeXBlRXJyb3IsCisJCQkJIlhLTVNSZXN1bHRUeXBlOjpsb2FkIC0gUmVxdWVzdFNpZ25hdHVyZVZhbHVlIG11c3QgaGF2ZSB0ZXh0IG5vZGUgYXMgY2hpbGQiKTsKKwkJfQorCX0KKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENyZWF0ZSBmcm9tIHNjcmF0Y2gKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RPTUVsZW1lbnQgKiBYS01TUmVzdWx0VHlwZUltcGw6OmNyZWF0ZUJsYW5rUmVzdWx0VHlwZSgKKwkJY29uc3QgWE1MQ2ggKiB0YWcsCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJY29uc3QgWE1MQ2ggKiBpZCwKKwkJUmVzdWx0TWFqb3Igcm1haiwKKwkJUmVzdWx0TWlub3Igcm1pbikgeworCisJRE9NRWxlbWVudCAqIHJldCA9IAorCQltX21zZy5jcmVhdGVCbGFua01lc3NhZ2VBYnN0cmFjdFR5cGUodGFnLCBzZXJ2aWNlLCBpZCk7CisKKwlzYWZlQnVmZmVyIHM7CisKKwlzLnNiWE1MQ2hJbihYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TKTsKKwlzLnNiWE1MQ2hDYXQoWEtNU0NvbnN0YW50czo6c190YWdSZXN1bHRNYWpvckNvZGVzW3JtYWpdKTsKKworCXJldC0+c2V0QXR0cmlidXRlTlMoTlVMTCwgCisJCVhLTVNDb25zdGFudHM6OnNfdGFnUmVzdWx0TWFqb3IsCisJCXMucmF3WE1MQ2hCdWZmZXIoKSk7CisKKwlpZiAocm1pbiAhPSBYS01TUmVzdWx0VHlwZTo6Tm9uZU1pbm9yKSB7CisKKwkJcy5zYlhNTENoSW4oWEtNU0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWEtNUyk7CisJCXMuc2JYTUxDaENhdChYS01TQ29uc3RhbnRzOjpzX3RhZ1Jlc3VsdE1pbm9yQ29kZXNbcm1pbl0pOworCQorCQlyZXQtPnNldEF0dHJpYnV0ZU5TKE5VTEwsIAorCQkJWEtNU0NvbnN0YW50czo6c190YWdSZXN1bHRNaW5vciwKKwkJCXMucmF3WE1MQ2hCdWZmZXIoKSk7CisJfQorCisJbV9yZXN1bHRNYWpvciA9IHJtYWo7CisJbV9yZXN1bHRNaW5vciA9IHJtaW47CisKKwltcF9yZXN1bHRNYWpvckF0dHIgPSAKKwkJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmdldEF0dHJpYnV0ZU5vZGVOUyhOVUxMLCBYS01TQ29uc3RhbnRzOjpzX3RhZ1Jlc3VsdE1ham9yKTsKKwltcF9yZXN1bHRNaW5vckF0dHIgPSAKKwkJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmdldEF0dHJpYnV0ZU5vZGVOUyhOVUxMLCBYS01TQ29uc3RhbnRzOjpzX3RhZ1Jlc3VsdE1pbm9yKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgR2V0dGVyIGludGVyZmFjZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1ham9yIFhLTVNSZXN1bHRUeXBlSW1wbDo6Z2V0UmVzdWx0TWFqb3Iodm9pZCkgY29uc3QgeworCisJcmV0dXJuIG1fcmVzdWx0TWFqb3I7CisKK30KKworWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIFhLTVNSZXN1bHRUeXBlSW1wbDo6Z2V0UmVzdWx0TWlub3Iodm9pZCkgY29uc3QgeworCisJcmV0dXJuIG1fcmVzdWx0TWlub3I7CisKK30KKworY29uc3QgWE1MQ2ggKiBYS01TUmVzdWx0VHlwZUltcGw6OmdldFJlcXVlc3RJZCh2b2lkKSBjb25zdCB7CisKKwlpZiAobXBfcmVxdWVzdElkQXR0ciAhPSBOVUxMKQorCQlyZXR1cm4gbXBfcmVxdWVzdElkQXR0ci0+Z2V0Tm9kZVZhbHVlKCk7CisJCisJcmV0dXJuIE5VTEw7CisKK30KKworY29uc3QgWE1MQ2ggKiBYS01TUmVzdWx0VHlwZUltcGw6OmdldFJlcXVlc3RTaWduYXR1cmVWYWx1ZSh2b2lkKSBjb25zdCB7CisKKwlpZiAobXBfcmVxdWVzdFNpZ25hdHVyZVZhbHVlRWxlbWVudCAhPSBOVUxMKQorCQlyZXR1cm4gZmluZEZpcnN0Q2hpbGRPZlR5cGUobXBfcmVxdWVzdFNpZ25hdHVyZVZhbHVlRWxlbWVudCwgCisJCQkJCQkJCQlET01Ob2RlOjpURVhUX05PREUpLT5nZXROb2RlVmFsdWUoKTsKKworCXJldHVybiBOVUxMOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU2V0dGVyIGludGVyZmFjZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBYS01TUmVzdWx0VHlwZUltcGw6OnNldFJlc3VsdE1ham9yKFJlc3VsdE1ham9yKSB7fQordm9pZCBYS01TUmVzdWx0VHlwZUltcGw6OnNldFJlc3VsdE1pbm9yKFJlc3VsdE1pbm9yKSB7fQorCit2b2lkIFhLTVNSZXN1bHRUeXBlSW1wbDo6c2V0UmVxdWVzdElkKGNvbnN0IFhNTENoICogaWQpIHsKKworCWlmIChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCA9PSBOVUxMKSB7CisKKwkJLy8gQXR0ZW1wdCB1cGRhdGUgd2hlbiBub3QgaW5pdGlhbGlzZWQKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpNZXNzYWdlQWJzdHJhY3RUeXBlRXJyb3IsCisJCQkiWEtNU1Jlc3VsdFR5cGU6OnNldFJlcXVlc3RJZCAtIGNhbGxlZCBvbiBub24taW5pdGlhbGlzZWQgc3RydWN0dXJlIik7CisKKwl9CisKKwltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+c2V0QXR0cmlidXRlTlMoTlVMTCwgWEtNU0NvbnN0YW50czo6c190YWdSZXF1ZXN0SWQsIGlkKTsKKwltcF9yZXF1ZXN0SWRBdHRyID0gCisJCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5nZXRBdHRyaWJ1dGVOb2RlTlMoTlVMTCwgWEtNU0NvbnN0YW50czo6c190YWdSZXF1ZXN0SWQpOworCit9CisKK3ZvaWQgWEtNU1Jlc3VsdFR5cGVJbXBsOjpzZXRSZXF1ZXN0U2lnbmF0dXJlVmFsdWUoY29uc3QgWE1MQ2ggKiB2YWx1ZSkgeworCisJaWYgKG1wX3JlcXVlc3RTaWduYXR1cmVWYWx1ZUVsZW1lbnQgIT0gTlVMTCkgeworCQlmaW5kRmlyc3RDaGlsZE9mVHlwZShtcF9yZXF1ZXN0U2lnbmF0dXJlVmFsdWVFbGVtZW50LCBET01Ob2RlOjpURVhUX05PREUpLT5zZXROb2RlVmFsdWUodmFsdWUpOworCQlyZXR1cm47CisJfQorCisJLy8gR2V0IHNvbWUgc2V0dXAgdmFsdWVzCisJc2FmZUJ1ZmZlciBzdHI7CisJRE9NRG9jdW1lbnQgKmRvYyA9IG1fbXNnLm1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKTsKKwljb25zdCBYTUxDaCAqIHByZWZpeCA9IG1fbXNnLm1wX2Vudi0+Z2V0WEtNU05TUHJlZml4KCk7CisKKwltYWtlUU5hbWUoc3RyLCBwcmVmaXgsIFhLTVNDb25zdGFudHM6OnNfdGFnUmVxdWVzdFNpZ25hdHVyZVZhbHVlKTsKKworCW1wX3JlcXVlc3RTaWduYXR1cmVWYWx1ZUVsZW1lbnQgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TLCAKKwkJCQkJCQkJCQkJCXN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKworCW1wX3JlcXVlc3RTaWduYXR1cmVWYWx1ZUVsZW1lbnQtPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUodmFsdWUpKTsKKworCS8qIEZpbmQgd2hlcmUgdGhpcyBzaXRzLCBhbmQgaW5zZXJ0ICovCisJRE9NRWxlbWVudCAqIGMgPSBmaW5kRmlyc3RFbGVtZW50Q2hpbGQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOworCXdoaWxlIChjICE9IE5VTEwpIHsKKworCQlpZiAoIShzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZShjKSwgWEtNU0NvbnN0YW50czo6c190YWdNZXNzYWdlRXh0ZW5zaW9uKSB8fAorCQkJc3RyRXF1YWxzKGdldERTSUdMb2NhbE5hbWUoYyksIFhLTVNDb25zdGFudHM6OnNfdGFnU2lnbmF0dXJlKSB8fAorCQkJc3RyRXF1YWxzKGdldFhLTVNMb2NhbE5hbWUoYyksIFhLTVNDb25zdGFudHM6OnNfdGFnT3BhcXVlQ2xpZW50RGF0YSkpKQorCQkJCisJCQlicmVhazsKKworCX0KKworCWlmIChjICE9IE5VTEwpIHsKKwkJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmluc2VydEJlZm9yZShtcF9yZXF1ZXN0U2lnbmF0dXJlVmFsdWVFbGVtZW50LCBjKTsKKwkJaWYgKG1fbXNnLm1wX2Vudi0+Z2V0UHJldHR5UHJpbnRGbGFnKCkpIHsKKwkJCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5pbnNlcnRCZWZvcmUoCisJCQkJbV9tc2cubXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpLT5jcmVhdGVUZXh0Tm9kZShEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJOTCksIGMpOworCQl9CisJfQorCWVsc2UgeworCQltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+YXBwZW5kQ2hpbGQobXBfcmVxdWVzdFNpZ25hdHVyZVZhbHVlRWxlbWVudCk7CisJCW1fbXNnLm1wX2Vudi0+ZG9QcmV0dHlQcmludChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCk7CisJfQorCit9CisKZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvaW1wbC9YS01TUmVzdWx0VHlwZUltcGwuaHBwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNSZXN1bHRUeXBlSW1wbC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRhYjhiOQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUmVzdWx0VHlwZUltcGwuaHBwCkBAIC0wLDAgKzEsMTI0IEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TUmVzdWx0VHlwZUltcGwgOj0gSW1wbGVtZW50YXRpb24gb2YgYmFzZSBzY2hlbWEgb2YgWEtNUyBSZXF1ZXN0IG1lc3NhZ2VzCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhLTVNSRVNVTFRUWVBFSU1QTF9JTkNMVURFCisjZGVmaW5lIFhLTVNSRVNVTFRUWVBFSU1QTF9JTkNMVURFCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1Jlc3VsdFR5cGUuaHBwPgorCisjaW5jbHVkZSAiWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsLmhwcCIKKworWFNFQ19ERUNMQVJFX1hFUkNFU19DTEFTUyhET01FbGVtZW50KTsKK1hTRUNfREVDTEFSRV9YRVJDRVNfQ0xBU1MoRE9NQXR0cik7CisKK2NsYXNzIFhLTVNSZXN1bHRUeXBlSW1wbCA6IHB1YmxpYyBYS01TUmVzdWx0VHlwZSB7CisKK3B1YmxpYzoKKwlYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGwgbV9tc2c7CitwdWJsaWM6CisKKwlYS01TUmVzdWx0VHlwZUltcGwoY29uc3QgWFNFQ0VudiAqIGVudik7CisJWEtNU1Jlc3VsdFR5cGVJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52LCAKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBub2RlKTsKKworCXZpcnR1YWwgflhLTVNSZXN1bHRUeXBlSW1wbCgpOworCisJLy8gbG9hZAorCXZvaWQgbG9hZCh2b2lkKTsKKworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogCisJCWNyZWF0ZUJsYW5rUmVzdWx0VHlwZSgKKwkJY29uc3QgWE1MQ2ggKiB0YWcsCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJY29uc3QgWE1MQ2ggKiBpZCwKKwkJUmVzdWx0TWFqb3Igcm1haiwKKwkJUmVzdWx0TWlub3Igcm1pbik7CisKKworCS8qIE5vdGUgeWV0IGltcGxlbWVudGVkIGZyb20gTWVzc2FnZUFic3RyYWN0VHlwZSAqLworCXZpcnR1YWwgbWVzc2FnZVR5cGUgZ2V0TWVzc2FnZVR5cGUodm9pZCkge3JldHVybiBYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6Tm9uZTt9CisJCisJLy8gR2V0dGVyIGludGVyZmFjZQorCisJdmlydHVhbCBSZXN1bHRNYWpvciBnZXRSZXN1bHRNYWpvcih2b2lkKSBjb25zdDsKKwl2aXJ0dWFsIFJlc3VsdE1pbm9yIGdldFJlc3VsdE1pbm9yKHZvaWQpIGNvbnN0OworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRSZXF1ZXN0SWQodm9pZCkgY29uc3Q7CisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldFJlcXVlc3RTaWduYXR1cmVWYWx1ZSh2b2lkKSBjb25zdDsKKworCS8vIFNldHRlciBpbnRlcmZhY2UKKwl2aXJ0dWFsIHZvaWQgc2V0UmVzdWx0TWFqb3IoUmVzdWx0TWFqb3Igcik7CisJdmlydHVhbCB2b2lkIHNldFJlc3VsdE1pbm9yKFJlc3VsdE1pbm9yIHIpOworCXZpcnR1YWwgdm9pZCBzZXRSZXF1ZXN0SWQoY29uc3QgWE1MQ2ggKiBpZCk7CisJdmlydHVhbCB2b2lkIHNldFJlcXVlc3RTaWduYXR1cmVWYWx1ZShjb25zdCBYTUxDaCAqIHZhbHVlKTsKKworCS8qIEZvcmNlZCBpbmhlcml0YW5jZSBmcm9tIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbCAqLworCVhLTVNfTUVTU0FHRUFCU1RSQUNUWVBFX0lNUExfTUVUSE9EUworCitwcml2YXRlOgorCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSICBET01BdHRyCisJCQkJCQkqIG1wX3Jlc3VsdE1ham9yQXR0cjsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgIERPTUF0dHIKKwkJCQkJCSogbXBfcmVzdWx0TWlub3JBdHRyOworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiAgRE9NQXR0cgorCQkJCQkJKiBtcF9yZXF1ZXN0SWRBdHRyOworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiAgRE9NRWxlbWVudAorCQkJCQkJKiBtcF9yZXF1ZXN0U2lnbmF0dXJlVmFsdWVFbGVtZW50OworCisJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1ham9yIG1fcmVzdWx0TWFqb3I7CisJWEtNU1Jlc3VsdFR5cGU6OlJlc3VsdE1pbm9yIG1fcmVzdWx0TWlub3I7CisKKwkvLyBVbmltcGxlbWVudGVkCisJWEtNU1Jlc3VsdFR5cGVJbXBsKCk7CisJWEtNU1Jlc3VsdFR5cGVJbXBsKGNvbnN0IFhLTVNSZXN1bHRUeXBlSW1wbCAmKTsKKwlYS01TUmVzdWx0VHlwZUltcGwgJiBvcGVyYXRvciA9IChjb25zdCBYS01TUmVzdWx0VHlwZUltcGwgJik7CisKK307CisKKyNkZWZpbmUgWEtNU19SRVNVTFRUWVBFX0lNUExfTUVUSE9EUyBcCit2aXJ0dWFsIFJlc3VsdE1ham9yIGdldFJlc3VsdE1ham9yKHZvaWQpIGNvbnN0IFwKKwl7cmV0dXJuIG1fcmVzdWx0LmdldFJlc3VsdE1ham9yKCk7fSBcCit2aXJ0dWFsIFJlc3VsdE1pbm9yIGdldFJlc3VsdE1pbm9yKHZvaWQpIGNvbnN0IFwKKwl7cmV0dXJuIG1fcmVzdWx0LmdldFJlc3VsdE1pbm9yKCk7fSBcCit2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0UmVxdWVzdElkKHZvaWQpIGNvbnN0IFwKKwl7cmV0dXJuIG1fcmVzdWx0LmdldFJlcXVlc3RJZCgpO30gXAordmlydHVhbCBjb25zdCBYTUxDaCAqIGdldFJlcXVlc3RTaWduYXR1cmVWYWx1ZSh2b2lkKSBjb25zdCBcCisJe3JldHVybiBtX3Jlc3VsdC5nZXRSZXF1ZXN0U2lnbmF0dXJlVmFsdWUoKTt9IFwKK3ZpcnR1YWwgdm9pZCBzZXRSZXN1bHRNYWpvcihSZXN1bHRNYWpvciByKSBcCisJe21fcmVzdWx0LnNldFJlc3VsdE1ham9yKHIpO30gXAordmlydHVhbCB2b2lkIHNldFJlc3VsdE1pbm9yKFJlc3VsdE1pbm9yIHIpIFwKKwl7bV9yZXN1bHQuc2V0UmVzdWx0TWlub3Iocik7fSBcCit2aXJ0dWFsIHZvaWQgc2V0UmVxdWVzdElkKGNvbnN0IFhNTENoICogaWQpIFwKKwl7bV9yZXN1bHQuc2V0UmVxdWVzdElkKGlkKTt9IFwKK3ZpcnR1YWwgdm9pZCBzZXRSZXF1ZXN0U2lnbmF0dXJlVmFsdWUoY29uc3QgWE1MQ2ggKiB2YWx1ZSkgXAorCXttX3Jlc3VsdC5zZXRSZXF1ZXN0U2lnbmF0dXJlVmFsdWUodmFsdWUpO30KKworCisKKyNlbmRpZiAvKiBYS01TUkVTVUxUVFlQRUlNUExfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNSZXZva2VLZXlCaW5kaW5nSW1wbC5jcHAgYi9jL3NyYy94a21zL2ltcGwvWEtNU1Jldm9rZUtleUJpbmRpbmdJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGViZGJmCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9pbXBsL1hLTVNSZXZva2VLZXlCaW5kaW5nSW1wbC5jcHAKQEAgLTAsMCArMSwxMjcgQEAKKy8qDQorICogQ29weXJpZ2h0IDIwMDYgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qDQorICogWFNFQw0KKyAqDQorICogWEtNU1Jldm9rZUtleUJpbmRpbmdJbXBsIDo9IEltcGxlbWVudGF0aW9uIGZvciBSZXZva2VLZXlCaW5kaW5nDQorICoNCisgKiAkSWQ6JA0KKyAqDQorICovDQorDQorLy8gWFNFQyBJbmNsdWRlcw0KKw0KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+DQorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+DQorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0NvbnN0YW50cy5ocHA+DQorDQorI2luY2x1ZGUgPHhlcmNlc2MvZG9tL0RPTS5ocHA+DQorDQorI2luY2x1ZGUgIlhLTVNSZXZva2VLZXlCaW5kaW5nSW1wbC5ocHAiDQorI2luY2x1ZGUgIlhLTVNTdGF0dXNJbXBsLmhwcCINCisNCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UNCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vICAgICAgICAgICBDb25zdHJ1Y3QvRGVzdHJ1Y3QNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK1hLTVNSZXZva2VLZXlCaW5kaW5nSW1wbDo6WEtNU1Jldm9rZUtleUJpbmRpbmdJbXBsKA0KKwkJY29uc3QgWFNFQ0VudiAqIGVudiANCisJCSkgOg0KK1hLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbChlbnYpIHsNCisJbXBfc3RhdHVzID0gTlVMTDsNCit9DQorDQorWEtNU1Jldm9rZUtleUJpbmRpbmdJbXBsOjpYS01TUmV2b2tlS2V5QmluZGluZ0ltcGwoDQorCQljb25zdCBYU0VDRW52ICogZW52LCANCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogbm9kZQ0KKwkJKSA6DQorWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsKGVudiwgbm9kZSkgew0KKw0KKwltcF9zdGF0dXMgPSBOVUxMOw0KK30NCisNCitYS01TUmV2b2tlS2V5QmluZGluZ0ltcGw6On5YS01TUmV2b2tlS2V5QmluZGluZ0ltcGwoKSB7DQorDQorCWlmIChtcF9zdGF0dXMgIT0gTlVMTCkNCisJCWRlbGV0ZSBtcF9zdGF0dXM7DQorDQorfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gICAgICAgICAgIExvYWQgZnJvbSBET00NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK3ZvaWQgWEtNU1Jldm9rZUtleUJpbmRpbmdJbXBsOjpsb2FkKHZvaWQpIHsNCisNCisJaWYgKG1wX2tleUJpbmRpbmdBYnN0cmFjdFR5cGVFbGVtZW50ID09IE5VTEwpIHsNCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWRYS01TQ2hpbGROb3RGb3VuZCwNCisJCQkiWEtNU1Jldm9rZUtleUJpbmRpbmdJbXBsOjpsb2FkIC0gY2FsbGVkIG9uIGVtcHR5IERPTSIpOw0KKwl9DQorDQorCVhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6bG9hZCgpOw0KKw0KKwkvKiBGaW5kIHRoZSBzdGF0dXMgZWxlbWVudCAqLw0KKwlET01Ob2RlTGlzdCAqIG5sID0gbXBfa2V5QmluZGluZ0Fic3RyYWN0VHlwZUVsZW1lbnQtPmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoDQorCQlYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TLA0KKwkJWEtNU0NvbnN0YW50czo6c190YWdTdGF0dXMpOw0KKw0KKwlpZiAobmwgPT0gTlVMTCB8fCBubC0+Z2V0TGVuZ3RoKCkgIT0gMSkgew0KKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZFhLTVNDaGlsZE5vdEZvdW5kLA0KKwkJCSJYS01TUmV2b2tlS2V5QmluZGluZzo6bG9hZCAtIFN0YXR1cyB2YWx1ZSBub3QgZm91bmQiKTsNCisJfQ0KKw0KKwlYU0VDbmV3KG1wX3N0YXR1cywgWEtNU1N0YXR1c0ltcGwobXBfZW52LCAoRE9NRWxlbWVudCopIG5sLT5pdGVtKDApKSk7DQorCW1wX3N0YXR1cy0+bG9hZCgpOw0KKw0KK30NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vICAgICAgICAgICBDcmVhdGUNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK0RPTUVsZW1lbnQgKiBYS01TUmV2b2tlS2V5QmluZGluZ0ltcGw6OmNyZWF0ZUJsYW5rUmV2b2tlS2V5QmluZGluZyhYS01TU3RhdHVzOjpTdGF0dXNWYWx1ZSBzdGF0dXMpIHsNCisNCisJRE9NRWxlbWVudCAqIHJldCA9IFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6DQorCQkJCWNyZWF0ZUJsYW5rS2V5QmluZGluZ0Fic3RyYWN0VHlwZShYS01TQ29uc3RhbnRzOjpzX3RhZ1Jldm9rZUtleUJpbmRpbmcpOw0KKw0KKwltcF9lbnYtPmRvUHJldHR5UHJpbnQocmV0KTsNCisNCisJLy8gQ3JlYXRlIHRoZSBzdGF0dXMgZWxlbWVudA0KKwlYU0VDbmV3KG1wX3N0YXR1cywgWEtNU1N0YXR1c0ltcGwobXBfZW52KSk7DQorCXJldC0+YXBwZW5kQ2hpbGQobXBfc3RhdHVzLT5jcmVhdGVCbGFua1N0YXR1cyhzdGF0dXMpKTsNCisJbXBfZW52LT5kb1ByZXR0eVByaW50KHJldCk7DQorDQorCS8vIE11c3QgaGF2ZSBhbiBJZA0KKwlYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGw6OnNldElkKCk7DQorDQorCXJldHVybiByZXQ7DQorDQorfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gICAgICAgICAgIFN0YXR1cyBoYW5kbGluZw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorWEtNU1N0YXR1cyAqIFhLTVNSZXZva2VLZXlCaW5kaW5nSW1wbDo6Z2V0U3RhdHVzKHZvaWQpIGNvbnN0IHsNCisNCisJcmV0dXJuIG1wX3N0YXR1czsNCisNCit9DQorDQpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNSZXZva2VLZXlCaW5kaW5nSW1wbC5ocHAgYi9jL3NyYy94a21zL2ltcGwvWEtNU1Jldm9rZUtleUJpbmRpbmdJbXBsLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTUzOTdiCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9pbXBsL1hLTVNSZXZva2VLZXlCaW5kaW5nSW1wbC5ocHAKQEAgLTAsMCArMSw3OCBAQAorLyoNCisgKiBDb3B5cmlnaHQgMjAwNiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoNCisgKiBYU0VDDQorICoNCisgKiBYS01TUmV2b2tlS2V5QmluZGluZyA6PSBJbXBsZW1lbnRhdGlvbiBmb3IgUmV2b2tlS2V5QmluZGluZw0KKyAqDQorICogJElkOiQNCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgWEtNU1JFVk9LRUtFWUJJTkRJTkdJTVBMX0lOQ0xVREUgDQorI2RlZmluZSBYS01TUkVWT0tFS0VZQklORElOR0lNUExfSU5DTFVERSANCisNCisvLyBYU0VDIEluY2x1ZGVzDQorDQorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4NCisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNSZXZva2VLZXlCaW5kaW5nLmhwcD4NCisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNTdGF0dXMuaHBwPg0KKw0KKyNpbmNsdWRlICJYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGwuaHBwIg0KKw0KK2NsYXNzIFhLTVNTdGF0dXNJbXBsOw0KKw0KK2NsYXNzIFhLTVNSZXZva2VLZXlCaW5kaW5nSW1wbCA6IHB1YmxpYyBYS01TUmV2b2tlS2V5QmluZGluZywgcHVibGljIFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbCB7DQorDQorcHVibGljOg0KKw0KKwlYS01TUmV2b2tlS2V5QmluZGluZ0ltcGwoDQorCQljb25zdCBYU0VDRW52ICogZW52DQorCSk7DQorDQorCVhLTVNSZXZva2VLZXlCaW5kaW5nSW1wbCgNCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYsIA0KKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBub2RlDQorCSk7DQorDQorCXZpcnR1YWwgflhLTVNSZXZva2VLZXlCaW5kaW5nSW1wbCgpIDsNCisNCisJLy8gTG9hZA0KKwl2b2lkIGxvYWQodm9pZCk7DQorDQorCS8vIENyZWF0ZQ0KKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqDQorCQljcmVhdGVCbGFua1Jldm9rZUtleUJpbmRpbmcoWEtNU1N0YXR1czo6U3RhdHVzVmFsdWUgc3RhdHVzKTsNCisNCisJLy8gSW50ZXJmYWNlDQorCXZpcnR1YWwgWEtNU1N0YXR1cyAqIGdldFN0YXR1cyh2b2lkKSBjb25zdDsNCisNCisJLy8gSW1wb3J0IG1ldGhvZHMgZnJvbSBYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZQ0KKwlYS01TX0tFWUJJTkRJTkdBQlNUUkFDVFlQRV9JTVBMX01FVEhPRFMNCisNCitwcml2YXRlOg0KKw0KKwlYS01TU3RhdHVzSW1wbAkJKiBtcF9zdGF0dXM7DQorDQorCS8vIFVuaW1wbGVtZW50ZWQNCisJWEtNU1Jldm9rZUtleUJpbmRpbmdJbXBsKHZvaWQpOw0KKwlYS01TUmV2b2tlS2V5QmluZGluZ0ltcGwoY29uc3QgWEtNU1Jldm9rZUtleUJpbmRpbmdJbXBsICYpOw0KKwlYS01TUmV2b2tlS2V5QmluZGluZ0ltcGwgJiBvcGVyYXRvciA9IChjb25zdCBYS01TUmV2b2tlS2V5QmluZGluZ0ltcGwgJik7DQorDQorfTsNCisNCisjZW5kaWYgLyogWEtNU1JFVk9LRUtFWUJJTkRJTkdJTVBMX0lOQ0xVREUgKi8NCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU1Jldm9rZVJlcXVlc3RJbXBsLmNwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUmV2b2tlUmVxdWVzdEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiYmVlOGIKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU1Jldm9rZVJlcXVlc3RJbXBsLmNwcApAQCAtMCwwICsxLDI5NiBAQAorLyoNCisgKiBDb3B5cmlnaHQgMjAwNiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoNCisgKiBYU0VDDQorICoNCisgKiBYS01TUmV2b2tlUmVxdWVzdEltcGwgOj0gSW1wbGVtZW50YXRpb24gZm9yIFJlZ2lzdGVyUmVxdWVzdCBNZXNzYWdlcw0KKyAqDQorICogJElkOiQNCisgKg0KKyAqLw0KKw0KKy8vIFhTRUMgSW5jbHVkZXMNCisNCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPg0KKw0KKyNpbmNsdWRlIDx4c2VjL2RzaWcvRFNJR1JlZmVyZW5jZS5ocHA+DQorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPg0KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+DQorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TQ29uc3RhbnRzLmhwcD4NCisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNTdGF0dXMuaHBwPg0KKw0KKyNpbmNsdWRlICJYS01TUmV2b2tlUmVxdWVzdEltcGwuaHBwIg0KKyNpbmNsdWRlICJYS01TUmV2b2tlS2V5QmluZGluZ0ltcGwuaHBwIg0KKyNpbmNsdWRlICJYS01TQXV0aGVudGljYXRpb25JbXBsLmhwcCINCisNCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD4NCisjaW5jbHVkZSA8eGVyY2VzYy91dGlsL1hNTFVuaURlZnMuaHBwPg0KKw0KK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gICAgICAgICAgIENvbnN0cnVjdC9EZXN0cnVjdA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorWEtNU1Jldm9rZVJlcXVlc3RJbXBsOjpYS01TUmV2b2tlUmVxdWVzdEltcGwoY29uc3QgWFNFQ0VudiAqIGVudikgOg0KK21fcmVxdWVzdChlbnYpLA0KK21fbXNnKG1fcmVxdWVzdC5tX21zZyksDQorbXBfYXV0aGVudGljYXRpb24oTlVMTCksDQorbXBfcmV2b2tlS2V5QmluZGluZyhOVUxMKSwNCittcF9yZXZvY2F0aW9uQ29kZUVsZW1lbnQoTlVMTCkgew0KK30NCisNCitYS01TUmV2b2tlUmVxdWVzdEltcGw6OlhLTVNSZXZva2VSZXF1ZXN0SW1wbChjb25zdCBYU0VDRW52ICogZW52LCBET01FbGVtZW50ICogbm9kZSkgOg0KK21fcmVxdWVzdChlbnYsIG5vZGUpLA0KK21fbXNnKG1fcmVxdWVzdC5tX21zZyksDQorbXBfYXV0aGVudGljYXRpb24oTlVMTCksDQorbXBfcmV2b2tlS2V5QmluZGluZyhOVUxMKSwNCittcF9yZXZvY2F0aW9uQ29kZUVsZW1lbnQoTlVMTCkgew0KK30NCisNCitYS01TUmV2b2tlUmVxdWVzdEltcGw6On5YS01TUmV2b2tlUmVxdWVzdEltcGwoKSB7DQorDQorCWlmIChtcF9hdXRoZW50aWNhdGlvbiAhPSBOVUxMKQ0KKwkJZGVsZXRlIG1wX2F1dGhlbnRpY2F0aW9uOw0KKwlpZiAobXBfcmV2b2tlS2V5QmluZGluZyAhPSBOVUxMKQ0KKwkJZGVsZXRlIG1wX3Jldm9rZUtleUJpbmRpbmc7DQorDQorfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gICAgICAgICAgIExvYWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK3ZvaWQgWEtNU1Jldm9rZVJlcXVlc3RJbXBsOjpsb2FkKHZvaWQpIHsNCisNCisJaWYgKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50ID09IE5VTEwpIHsNCisNCisJCS8vIEF0dGVtcHQgdG8gbG9hZCBhbiBlbXB0eSBlbGVtZW50DQorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwNCisJCQkiWEtNU1Jldm9rZVJlcXVlc3Q6OmxvYWQgLSBjYWxsZWQgb24gZW1wdHkgRE9NIik7DQorDQorCX0NCisNCisJaWYgKCFzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZShtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCksIA0KKwkJCQkJCQkJCVhLTVNDb25zdGFudHM6OnNfdGFnUmV2b2tlUmVxdWVzdCkpIHsNCisJDQorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwNCisJCQkiWEtNU1Jldm9rZVJlcXVlc3Q6OmxvYWQgLSBjYWxsZWQgb24gaW5jb3JyZWN0IG5vZGUiKTsNCisJDQorCX0NCisNCisJLy8gTG9hZCB0aGUgYmFzZSBtZXNzYWdlDQorCW1fcmVxdWVzdC5sb2FkKCk7DQorDQorCS8vIE5vdyBjaGVjayBmb3IgYW55IFJldm9rZUtleUJpbmRpbmcgZWxlbWVudHMNCisJRE9NRWxlbWVudCAqIHRtcEVsdCA9IGZpbmRGaXJzdEVsZW1lbnRDaGlsZChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCk7DQorCXdoaWxlICh0bXBFbHQgIT0gTlVMTCAmJiAhc3RyRXF1YWxzKGdldFhLTVNMb2NhbE5hbWUodG1wRWx0KSwgWEtNU0NvbnN0YW50czo6c190YWdSZXZva2VLZXlCaW5kaW5nKSkgew0KKwkJdG1wRWx0ID0gZmluZE5leHRFbGVtZW50Q2hpbGQodG1wRWx0KTsNCisJfQ0KKw0KKwlpZiAodG1wRWx0ICE9IE5VTEwpIHsNCisNCisJCVhTRUNuZXcobXBfcmV2b2tlS2V5QmluZGluZywgWEtNU1Jldm9rZUtleUJpbmRpbmdJbXBsKG1fbXNnLm1wX2VudiwgdG1wRWx0KSk7DQorCQltcF9yZXZva2VLZXlCaW5kaW5nLT5sb2FkKCk7DQorDQorCQl0bXBFbHQgPSBmaW5kTmV4dEVsZW1lbnRDaGlsZCh0bXBFbHQpOw0KKw0KKwl9DQorCWVsc2Ugew0KKw0KKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZFhLTVNDaGlsZE5vdEZvdW5kLA0KKwkJCSJYS01TUmV2b2tlUmVxdWVzdDo6bG9hZCAtIEV4cGVjdGVkIFJldm9rZUtleUJpbmRpbmcgbm9kZSIpOw0KKwkNCisJfQ0KKw0KKwkvLyBBdXRoZW50aWNhdGlvbiBFbGVtZW50IHwgUmV2b2NhdGlvbkNvZGUgRWxlbWVudA0KKw0KKwlpZiAodG1wRWx0ICE9IE5VTEwgJiYgc3RyRXF1YWxzKGdldFhLTVNMb2NhbE5hbWUodG1wRWx0KSwgWEtNU0NvbnN0YW50czo6c190YWdBdXRoZW50aWNhdGlvbikpIHsNCisNCisJCVhTRUNuZXcobXBfYXV0aGVudGljYXRpb24sIFhLTVNBdXRoZW50aWNhdGlvbkltcGwobV9tc2cubXBfZW52LCB0bXBFbHQpKTsNCisJCW1wX2F1dGhlbnRpY2F0aW9uLT5sb2FkKG1wX3Jldm9rZUtleUJpbmRpbmctPmdldElkKCkpOw0KKw0KKwl9DQorCWVsc2UgaWYgKHRtcEVsdCAhPSBOVUxMICYmIHN0ckVxdWFscyhnZXRYS01TTG9jYWxOYW1lKHRtcEVsdCksIFhLTVNDb25zdGFudHM6OnNfdGFnUmV2b2NhdGlvbkNvZGUpKSB7DQorDQorCQltcF9yZXZvY2F0aW9uQ29kZUVsZW1lbnQgPSB0bXBFbHQ7DQorDQorCX0NCisJZWxzZSB7DQorDQorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkWEtNU0NoaWxkTm90Rm91bmQsDQorCQkJIlhLTVNSZXZva2VSZXF1ZXN0Ojpsb2FkIC0gRXhwZWN0ZWQgQXV0aGVudGljYXRpb24gb3IgUmV2b2NhdGlvbkNvZGUgbm9kZXMiKTsNCisJDQorCX0NCisNCit9DQorCQ0KKwkNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vICAgICAgICAgICBDcmVhdGUNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK0RPTUVsZW1lbnQgKiBYS01TUmV2b2tlUmVxdWVzdEltcGw6Og0KKwljcmVhdGVCbGFua1Jldm9rZVJlcXVlc3QoY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLCBjb25zdCBYTUxDaCAqIGlkKSB7DQorDQorCXJldHVybiBtX3JlcXVlc3QuY3JlYXRlQmxhbmtSZXF1ZXN0QWJzdHJhY3RUeXBlKA0KKwkJWEtNU0NvbnN0YW50czo6c190YWdSZXZva2VSZXF1ZXN0LCBzZXJ2aWNlLCBpZCk7DQorDQorfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gICAgICAgICAgIE1lc3NhZ2VUeXBlIA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGU6Om1lc3NhZ2VUeXBlIFhLTVNSZXZva2VSZXF1ZXN0SW1wbDo6Z2V0TWVzc2FnZVR5cGUodm9pZCkgew0KKw0KKwlyZXR1cm4gWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsOjpSZXZva2VSZXF1ZXN0Ow0KKw0KK30NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vICAgICAgICAgICBHZXQgTWV0aG9kcw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorWEtNU1Jldm9rZUtleUJpbmRpbmcgKiBYS01TUmV2b2tlUmVxdWVzdEltcGw6OmdldFJldm9rZUtleUJpbmRpbmcodm9pZCkgY29uc3Qgew0KKw0KKwlyZXR1cm4gbXBfcmV2b2tlS2V5QmluZGluZzsNCisNCit9DQorDQorWEtNU0F1dGhlbnRpY2F0aW9uICogWEtNU1Jldm9rZVJlcXVlc3RJbXBsOjpnZXRBdXRoZW50aWNhdGlvbiAodm9pZCkgY29uc3Qgew0KKw0KKwlyZXR1cm4gbXBfYXV0aGVudGljYXRpb247DQorDQorfQ0KKw0KK2NvbnN0IFhNTENoICogWEtNU1Jldm9rZVJlcXVlc3RJbXBsOjpnZXRSZXZvY2F0aW9uQ29kZSh2b2lkKSBjb25zdCB7DQorDQorCWlmIChtcF9yZXZvY2F0aW9uQ29kZUVsZW1lbnQgPT0gTlVMTCkNCisJCXJldHVybiBOVUxMOw0KKw0KKwlET01Ob2RlICogdCA9IGZpbmRGaXJzdENoaWxkT2ZUeXBlKG1wX3Jldm9jYXRpb25Db2RlRWxlbWVudCwgRE9NTm9kZTo6VEVYVF9OT0RFKTsNCisNCisJaWYgKHQgPT0gTlVMTCkgew0KKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZFhLTVNDaGlsZE5vdEZvdW5kLA0KKwkJCSJYS01TUmV2b2tlUmVxdWVzdEltcGw6OmdldFJldm9jYXRpb25Db2RlIC0gZXhwZWN0ZWQgVEVYVCBub2RlIik7DQorCX0NCisJDQorCXJldHVybiB0LT5nZXROb2RlVmFsdWUoKTsNCit9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyAgICAgICAgICAgU2V0IE1ldGhvZHMNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK1hLTVNSZXZva2VLZXlCaW5kaW5nICogWEtNU1Jldm9rZVJlcXVlc3RJbXBsOjphZGRSZXZva2VLZXlCaW5kaW5nKFhLTVNTdGF0dXM6OlN0YXR1c1ZhbHVlIHN0YXR1cykgew0KKw0KKwlpZiAobXBfcmV2b2tlS2V5QmluZGluZyAhPSBOVUxMKQ0KKwkJcmV0dXJuIG1wX3Jldm9rZUtleUJpbmRpbmc7DQorDQorDQorCS8vIE9LIC0gTm90aGluZyBleGlzdHMsIHNvIHdlIG5lZWQgdG8gY3JlYXRlIGZyb20gc2NyYXRjaA0KKw0KKwlYU0VDbmV3KG1wX3Jldm9rZUtleUJpbmRpbmcsIFhLTVNSZXZva2VLZXlCaW5kaW5nSW1wbChtX21zZy5tcF9lbnYpKTsNCisJRE9NRWxlbWVudCAqIGVsdCA9IG1wX3Jldm9rZUtleUJpbmRpbmctPmNyZWF0ZUJsYW5rUmV2b2tlS2V5QmluZGluZyhzdGF0dXMpOw0KKw0KKwkvLyBJbnNlcnQNCisNCisJRE9NRWxlbWVudCAqIGJlID0gZmluZEZpcnN0RWxlbWVudENoaWxkKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KTsNCisNCisJd2hpbGUgKGJlICE9IE5VTEwgJiYgDQorCQkhc3RyRXF1YWxzKGdldFhLTVNMb2NhbE5hbWUoYmUpLCBYS01TQ29uc3RhbnRzOjpzX3RhZ0F1dGhlbnRpY2F0aW9uKSAmJg0KKwkJIXN0ckVxdWFscyhnZXRYS01TTG9jYWxOYW1lKGJlKSwgWEtNU0NvbnN0YW50czo6c190YWdSZXZvY2F0aW9uQ29kZSkpIHsNCisJCWJlID0gZmluZE5leHRFbGVtZW50Q2hpbGQoYmUpOw0KKwl9DQorDQorCWlmIChiZSA9PSBOVUxMKSB7DQorCQltX21zZy5tcF9lbnYtPmRvUHJldHR5UHJpbnQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOw0KKwkJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmFwcGVuZENoaWxkKGVsdCk7DQorCQltX21zZy5tcF9lbnYtPmRvUHJldHR5UHJpbnQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOw0KKwkJcmV0dXJuIG1wX3Jldm9rZUtleUJpbmRpbmc7DQorCX0NCisNCisJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmluc2VydEJlZm9yZShlbHQsIGJlKTsNCisJaWYgKG1fbXNnLm1wX2Vudi0+Z2V0UHJldHR5UHJpbnRGbGFnKCkgPT0gdHJ1ZSkgew0KKwkJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmluc2VydEJlZm9yZSgNCisJCQltX21zZy5tcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCktPmNyZWF0ZVRleHROb2RlKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ck5MKSwNCisJCQliZSk7DQorCX0NCisNCisJcmV0dXJuIG1wX3Jldm9rZUtleUJpbmRpbmc7DQorDQorfQ0KKw0KK1hLTVNBdXRoZW50aWNhdGlvbiAqIFhLTVNSZXZva2VSZXF1ZXN0SW1wbDo6YWRkQXV0aGVudGljYXRpb24odm9pZCkgew0KKw0KKwlpZiAobXBfYXV0aGVudGljYXRpb24gIT0gTlVMTCkNCisJCXJldHVybiBtcF9hdXRoZW50aWNhdGlvbjsNCisNCisJaWYgKG1wX3Jldm9rZUtleUJpbmRpbmcgPT0gTlVMTCkgew0KKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsDQorCQkJIlhLTVNSZXZva2VSZXF1ZXN0SW1wbDo6YWRkQXV0aGVudGljYXRpb24gLSBjYWxsZWQgcHJpb3IgdG8ga2V5IGluZm9zIGJlaW5nIGFkZGVkIik7DQorCX0NCisNCisJWFNFQ25ldyhtcF9hdXRoZW50aWNhdGlvbiwgWEtNU0F1dGhlbnRpY2F0aW9uSW1wbChtX21zZy5tcF9lbnYpKTsNCisJRE9NRWxlbWVudCAqIGUgPSANCisJCW1wX2F1dGhlbnRpY2F0aW9uLT5jcmVhdGVCbGFua0F1dGhlbnRpY2F0aW9uKG1wX3Jldm9rZUtleUJpbmRpbmctPmdldElkKCkpOw0KKw0KKwlET01FbGVtZW50ICogYmUgPSBmaW5kRmlyc3RFbGVtZW50Q2hpbGQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOw0KKw0KKwl3aGlsZSAoYmUgIT0gTlVMTCAmJiAhc3RyRXF1YWxzKGdldFhLTVNMb2NhbE5hbWUoYmUpLCBYS01TQ29uc3RhbnRzOjpzX3RhZ1Jldm9jYXRpb25Db2RlKSkNCisJCWJlID0gZmluZE5leHRFbGVtZW50Q2hpbGQoYmUpOw0KKw0KKwlpZiAoYmUgPT0gTlVMTCkgew0KKwkJbV9tc2cubXBfZW52LT5kb1ByZXR0eVByaW50KG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KTsNCisJCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5hcHBlbmRDaGlsZChlKTsNCisJCW1fbXNnLm1wX2Vudi0+ZG9QcmV0dHlQcmludChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCk7DQorCQlyZXR1cm4gbXBfYXV0aGVudGljYXRpb247DQorCX0NCisNCisJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmluc2VydEJlZm9yZShlLCBiZSk7DQorCWlmIChtX21zZy5tcF9lbnYtPmdldFByZXR0eVByaW50RmxhZygpID09IHRydWUpIHsNCisJCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5pbnNlcnRCZWZvcmUoDQorCQkJbV9tc2cubXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpLT5jcmVhdGVUZXh0Tm9kZShEU0lHQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJOTCksDQorCQkJYmUpOw0KKwl9DQorDQorCXJldHVybiBtcF9hdXRoZW50aWNhdGlvbjsNCisNCit9DQorDQordm9pZCBYS01TUmV2b2tlUmVxdWVzdEltcGw6OmFkZFJldm9jYXRpb25Db2RlKGNvbnN0IFhNTENoICogY29kZSkgew0KKw0KKwlzYWZlQnVmZmVyIHN0cjsNCisJRE9NRG9jdW1lbnQgKmRvYyA9IG1fbXNnLm1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKTsNCisJY29uc3QgWE1MQ2ggKiBwcmVmaXggPSBtX21zZy5tcF9lbnYtPmdldFhLTVNOU1ByZWZpeCgpOw0KKw0KKwltYWtlUU5hbWUoc3RyLCBwcmVmaXgsIFhLTVNDb25zdGFudHM6OnNfdGFnUmV2b2NhdGlvbkNvZGUpOw0KKw0KKwltcF9yZXZvY2F0aW9uQ29kZUVsZW1lbnQgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TLCANCisJCQkJCQkJCQkJCQlzdHIucmF3WE1MQ2hCdWZmZXIoKSk7DQorDQorCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5hcHBlbmRDaGlsZChtcF9yZXZvY2F0aW9uQ29kZUVsZW1lbnQpOw0KKwltX21zZy5tcF9lbnYtPmRvUHJldHR5UHJpbnQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOw0KKw0KKwltcF9yZXZvY2F0aW9uQ29kZUVsZW1lbnQtPmFwcGVuZENoaWxkKA0KKwkJbV9tc2cubXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpLT5jcmVhdGVUZXh0Tm9kZShjb2RlKSk7DQorDQorfQ0KKw0KKw0KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvaW1wbC9YS01TUmV2b2tlUmVxdWVzdEltcGwuaHBwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNSZXZva2VSZXF1ZXN0SW1wbC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRiYWFlMQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUmV2b2tlUmVxdWVzdEltcGwuaHBwCkBAIC0wLDAgKzEsMTA2IEBACisvKg0KKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qDQorICogWFNFQw0KKyAqDQorICogWEtNU1Jldm9rZVJlcXVlc3RJbXBsIDo9IEltcGxlbWVudGF0aW9uIGZvciBSZXZva2VSZXF1ZXN0IE1lc3NhZ2VzDQorICoNCisgKiAkSWQ6JA0KKyAqDQorICovDQorDQorI2lmbmRlZiBYS01TUkVWT0tFUkVRVUVTVElNUExfSU5DTFVERQ0KKyNkZWZpbmUgWEtNU1JFVk9LRVJFUVVFU1RJTVBMX0lOQ0xVREUNCisNCisvLyBYU0VDIEluY2x1ZGVzDQorDQorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4NCisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNSZXZva2VSZXF1ZXN0LmhwcD4NCisjaW5jbHVkZSAiWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsLmhwcCINCisNCitjbGFzcyBYS01TQXV0aGVudGljYXRpb25JbXBsOw0KK2NsYXNzIERTSUdTaWduYXR1cmU7DQorY2xhc3MgWEtNU1Jldm9rZUtleUJpbmRpbmdJbXBsOw0KKw0KK2NsYXNzIFhLTVNSZXZva2VSZXF1ZXN0SW1wbCA6IHB1YmxpYyBYS01TUmV2b2tlUmVxdWVzdCB7DQorDQorcHVibGljOiANCisJWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsIG1fcmVxdWVzdDsNCisJWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsICZtX21zZzsNCitwdWJsaWM6DQorDQorCVhLTVNSZXZva2VSZXF1ZXN0SW1wbCgNCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYNCisJKTsNCisNCisJWEtNU1Jldm9rZVJlcXVlc3RJbXBsKA0KKwkJY29uc3QgWFNFQ0VudiAqIGVudiwgDQorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIG5vZGUNCisJKTsNCisNCisJdmlydHVhbCB+WEtNU1Jldm9rZVJlcXVlc3RJbXBsKCk7DQorDQorCS8vIExvYWQgZWxlbWVudHMNCisJdm9pZCBsb2FkKCk7DQorDQorCS8vIENyZWF0aW9uDQorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogDQorCQljcmVhdGVCbGFua1Jldm9rZVJlcXVlc3QoDQorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsDQorCQljb25zdCBYTUxDaCAqIGlkID0gTlVMTCk7DQorDQorDQorCS8qIEdldHRlciBJbnRlcmZhY2UgTWV0aG9kcyAqLw0KKwl2aXJ0dWFsIFhLTVNSZXZva2VLZXlCaW5kaW5nICogZ2V0UmV2b2tlS2V5QmluZGluZyh2b2lkKSBjb25zdDsNCisJdmlydHVhbCBYS01TQXV0aGVudGljYXRpb24gKiBnZXRBdXRoZW50aWNhdGlvbiAodm9pZCkgY29uc3Q7DQorCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXRSZXZvY2F0aW9uQ29kZSh2b2lkKSBjb25zdDsNCisNCisJLyogU2V0dGVyIEludGVyZmFjZSBNZXRob2RzICovDQorDQorCXZpcnR1YWwgWEtNU1Jldm9rZUtleUJpbmRpbmcgKiBhZGRSZXZva2VLZXlCaW5kaW5nKFhLTVNTdGF0dXM6OlN0YXR1c1ZhbHVlIHN0YXR1cyk7DQorCXZpcnR1YWwgWEtNU0F1dGhlbnRpY2F0aW9uICogYWRkQXV0aGVudGljYXRpb24odm9pZCk7DQorCXZpcnR1YWwgdm9pZCBhZGRSZXZvY2F0aW9uQ29kZShjb25zdCBYTUxDaCAqIGNvZGUpOw0KKw0KKw0KKwkvKiBJbXBsZW1lbnRlZCBmcm9tIE1lc3NhZ2VBYnN0cmFjdFR5cGUgKi8NCisJdmlydHVhbCBtZXNzYWdlVHlwZSBnZXRNZXNzYWdlVHlwZSh2b2lkKTsNCisNCisJLyogRm9yY2VkIGluaGVyaXRhbmNlIGZyb20gWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsICovDQorCVhLTVNfTUVTU0FHRUFCU1RSQUNUWVBFX0lNUExfTUVUSE9EUw0KKw0KKwkvKiBGb3JjZWQgaW5oZXJpdGFuY2UgZnJvbSBSZXF1ZXN0QWJzdHJhY3RUeXBlICovDQorCVhLTVNfUkVRVUVTVEFCU1RSQUNUWVBFX0lNUExfTUVUSE9EUw0KKw0KKw0KK3ByaXZhdGU6DQorDQorCVhLTVNBdXRoZW50aWNhdGlvbkltcGwJCSogbXBfYXV0aGVudGljYXRpb247DQorCVhLTVNSZXZva2VLZXlCaW5kaW5nSW1wbAkqIG1wX3Jldm9rZUtleUJpbmRpbmc7DQorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUg0KKwkJRE9NRWxlbWVudAkJCQkqIG1wX3Jldm9jYXRpb25Db2RlRWxlbWVudDsNCisNCisJWFNFQ1Byb3ZpZGVyCQkJCW1fcHJvdjsJCS8vIEZvciBjcmVhdGluZyB0aGUgc2lnbmF0dXJlDQorDQorCS8vIFVuaW1wbGVtZW50ZWQNCisJWEtNU1Jldm9rZVJlcXVlc3RJbXBsKHZvaWQpOw0KKwlYS01TUmV2b2tlUmVxdWVzdEltcGwoY29uc3QgWEtNU1Jldm9rZVJlcXVlc3RJbXBsICYpOw0KKwlYS01TUmV2b2tlUmVxdWVzdEltcGwgJiBvcGVyYXRvciA9IChjb25zdCBYS01TUmV2b2tlUmVxdWVzdEltcGwgJik7DQorDQorfTsNCisNCisjZW5kaWYgLyogWEtNU1JFVk9LRVJFUVVFU1RJTVBMX0lOQ0xVREUgKi8NCisNCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU1Jldm9rZVJlc3VsdEltcGwuY3BwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNSZXZva2VSZXN1bHRJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzQ1MzU5Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9pbXBsL1hLTVNSZXZva2VSZXN1bHRJbXBsLmNwcApAQCAtMCwwICsxLDE4MiBAQAorLyoNCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKg0KKyAqIFhTRUMNCisgKg0KKyAqIFhLTVNSZXZva2VSZXN1bHRJbXBsIDo9IEltcGxlbWVudGF0aW9uIG9mIFJlZ2lzdGVyUmVzdWx0IE1lc3NhZ2VzDQorICoNCisgKiAkSWQ6JA0KKyAqDQorICovDQorDQorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4NCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4NCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vudi5ocHA+DQorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4NCisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNDb25zdGFudHMuaHBwPg0KKw0KKyNpbmNsdWRlICJYS01TUmV2b2tlUmVzdWx0SW1wbC5ocHAiDQorI2luY2x1ZGUgIlhLTVNLZXlCaW5kaW5nSW1wbC5ocHAiDQorDQorI2luY2x1ZGUgPHhlcmNlc2MvZG9tL0RPTS5ocHA+DQorDQorWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyAgICAgICAgICAgQ29uc3RydWN0L0Rlc3RydWN0DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitYS01TUmV2b2tlUmVzdWx0SW1wbDo6WEtNU1Jldm9rZVJlc3VsdEltcGwoDQorCQljb25zdCBYU0VDRW52ICogZW52KSA6DQorbV9yZXN1bHQoZW52KSwNCittX21zZyhtX3Jlc3VsdC5tX21zZykgew0KKw0KK30NCisNCitYS01TUmV2b2tlUmVzdWx0SW1wbDo6WEtNU1Jldm9rZVJlc3VsdEltcGwoDQorCQljb25zdCBYU0VDRW52ICogZW52LCANCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogbm9kZSkgOg0KK21fcmVzdWx0KGVudiwgbm9kZSksDQorbV9tc2cobV9yZXN1bHQubV9tc2cpIHsNCisNCit9DQorDQorWEtNU1Jldm9rZVJlc3VsdEltcGw6On5YS01TUmV2b2tlUmVzdWx0SW1wbCgpIHsNCisNCisJWEtNU1Jldm9rZVJlc3VsdEltcGw6OktleUJpbmRpbmdWZWN0b3JUeXBlOjppdGVyYXRvciBpOw0KKw0KKwlmb3IgKGkgPSBtX2tleUJpbmRpbmdMaXN0LmJlZ2luKCkgOyBpIDwgbV9rZXlCaW5kaW5nTGlzdC5lbmQoKTsgaSsrKSB7DQorDQorCQlkZWxldGUgKCppKTsNCisNCisJfQ0KKw0KK30NCisNCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vICAgICAgICAgICBMb2FkIGZyb20gRE9NDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCisvLyBMb2FkIGVsZW1lbnRzDQordm9pZCBYS01TUmV2b2tlUmVzdWx0SW1wbDo6bG9hZCgpIHsNCisNCisJaWYgKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50ID09IE5VTEwpIHsNCisNCisJCS8vIEF0dGVtcHQgdG8gbG9hZCBhbiBlbXB0eSBlbGVtZW50DQorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwNCisJCQkiWEtNU1Jldm9rZVJlc3VsdDo6bG9hZCAtIGNhbGxlZCBvbiBlbXB0eSBET00iKTsNCisNCisJfQ0KKw0KKwlpZiAoIXN0ckVxdWFscyhnZXRYS01TTG9jYWxOYW1lKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KSwgDQorCQkJCQkJCQkJWEtNU0NvbnN0YW50czo6c190YWdSZXZva2VSZXN1bHQpKSB7DQorCQ0KKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsDQorCQkJIlhLTVNSZXZva2VSZXN1bHQ6OmxvYWQgLSBjYWxsZWQgaW5jb3JyZWN0IG5vZGUiKTsNCisJDQorCX0NCisNCisJLy8gR2V0IGFueSBVbnZlcmlmaWVkS2V5QmluZGluZyBlbGVtZW50cw0KKwlET01Ob2RlTGlzdCAqIG5sID0gbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoDQorCQlYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TLA0KKwkJWEtNU0NvbnN0YW50czo6c190YWdLZXlCaW5kaW5nKTsNCisNCisJaWYgKG5sICE9IE5VTEwpIHsNCisNCisJCVhLTVNLZXlCaW5kaW5nSW1wbCAqIGtiOw0KKwkJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBubC0+Z2V0TGVuZ3RoKCkgOyArKyBpKSB7DQorDQorCQkJWFNFQ25ldyhrYiwgWEtNU0tleUJpbmRpbmdJbXBsKG1fbXNnLm1wX2VudiwgKERPTUVsZW1lbnQgKikgbmwtPml0ZW0oaSkpKTsNCisJCQltX2tleUJpbmRpbmdMaXN0LnB1c2hfYmFjayhrYik7DQorCQkJa2ItPmxvYWQoKTsNCisNCisJCX0NCisNCisJfQ0KKw0KKw0KKwkvLyBMb2FkIHRoZSBiYXNlIG1lc3NhZ2UNCisJbV9yZXN1bHQubG9hZCgpOw0KKw0KK30NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vICAgICAgICAgICBDcmVhdGUgYSBibGFuayBvbmUNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0RPTUVsZW1lbnQgKiBYS01TUmV2b2tlUmVzdWx0SW1wbDo6Y3JlYXRlQmxhbmtSZXZva2VSZXN1bHQoDQorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsDQorCQljb25zdCBYTUxDaCAqIGlkLA0KKwkJUmVzdWx0TWFqb3Igcm1haiwNCisJCVJlc3VsdE1pbm9yIHJtaW4pIHsNCisNCisJcmV0dXJuIG1fcmVzdWx0LmNyZWF0ZUJsYW5rUmVzdWx0VHlwZSgNCisJCVhLTVNDb25zdGFudHM6OnNfdGFnUmV2b2tlUmVzdWx0LCBzZXJ2aWNlLCBpZCwgcm1haiwgcm1pbik7DQorDQorfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gICAgICAgICAgIEdldCBpbnRlcmZhY2UgbWV0aG9kcw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGU6Om1lc3NhZ2VUeXBlIFhLTVNSZXZva2VSZXN1bHRJbXBsOjpnZXRNZXNzYWdlVHlwZSh2b2lkKSB7DQorDQorCXJldHVybiBYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGw6OlJldm9rZVJlc3VsdDsNCisNCit9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyAgICAgICAgICAgVW52ZXJpZmllZEtleUJpbmRpbmcgaGFuZGxpbmcNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KKw0KK2ludCBYS01TUmV2b2tlUmVzdWx0SW1wbDo6Z2V0S2V5QmluZGluZ1NpemUodm9pZCkgY29uc3Qgew0KKw0KKwlyZXR1cm4gKGludCkgbV9rZXlCaW5kaW5nTGlzdC5zaXplKCk7DQorDQorfQ0KKw0KK1hLTVNLZXlCaW5kaW5nICogWEtNU1Jldm9rZVJlc3VsdEltcGw6OmdldEtleUJpbmRpbmdJdGVtKGludCBpdGVtKSBjb25zdCB7DQorDQorCWlmIChpdGVtIDwgMCB8fCBpdGVtID49IChpbnQpIG1fa2V5QmluZGluZ0xpc3Quc2l6ZSgpKSB7DQorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwNCisJCQkiWEtNU1Jldm9rZVJlc3VsdDo6Z2V0S2V5QmluZGluZ0l0ZW0gLSBpdGVtIG91dCBvZiByYW5nZSIpOw0KKwl9DQorDQorCXJldHVybiBtX2tleUJpbmRpbmdMaXN0W2l0ZW1dOw0KKw0KK30NCisNCitYS01TS2V5QmluZGluZyAqIFhLTVNSZXZva2VSZXN1bHRJbXBsOjphcHBlbmRLZXlCaW5kaW5nSXRlbShYS01TU3RhdHVzOjpTdGF0dXNWYWx1ZSBzdGF0dXMpIHsNCisNCisJWEtNU0tleUJpbmRpbmdJbXBsICogdTsNCisNCisJWFNFQ25ldyh1LCBYS01TS2V5QmluZGluZ0ltcGwobV9tc2cubXBfZW52KSk7DQorDQorCW1fa2V5QmluZGluZ0xpc3QucHVzaF9iYWNrKHUpOw0KKw0KKwlET01FbGVtZW50ICogZSA9IHUtPmNyZWF0ZUJsYW5rS2V5QmluZGluZyhzdGF0dXMpOw0KKw0KKwkvLyBBcHBlbmQgdGhlIGVsZW1lbnQNCisNCisJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmFwcGVuZENoaWxkKGUpOw0KKwltX21zZy5tcF9lbnYtPmRvUHJldHR5UHJpbnQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOw0KKw0KKwlyZXR1cm4gdTsNCisNCit9DQorDQpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNSZXZva2VSZXN1bHRJbXBsLmhwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUmV2b2tlUmVzdWx0SW1wbC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZmYjA0YQotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TUmV2b2tlUmVzdWx0SW1wbC5ocHAKQEAgLTAsMCArMSwxMDEgQEAKKy8qDQorICogQ29weXJpZ2h0IDIwMDYgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qDQorICogWFNFQw0KKyAqDQorICogWEtNU1Jldm9rZVJlc3VsdEltcGwgOj0gSW1wbGVtZW50YXRpb24gb2YgUmVnaXN0ZXJSZXN1bHQgTWVzc2FnZXMNCisgKg0KKyAqICRJZDogWEtNU1Jldm9rZVJlc3VsdEltcGwuaHBwIDM1MTM2NiAyMDA1LTA2LTA0IDExOjQ0OjU1WiBibGF1dGVuYiAkDQorICoNCisgKi8NCisNCisjaWZuZGVmIFhLTVNSRVZPS0VSRVNVTFRJTVBMX0lOQ0xVREUNCisjZGVmaW5lIFhLTVNSRVZPS0VSRVNVTFRJTVBMX0lOQ0xVREUNCisNCisvLyBYU0VDIEluY2x1ZGVzDQorDQorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4NCisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNSZXZva2VSZXN1bHQuaHBwPg0KKw0KKyNpbmNsdWRlICJYS01TUmVzdWx0VHlwZUltcGwuaHBwIg0KKw0KKyNpbmNsdWRlIDx2ZWN0b3I+DQorDQorY2xhc3MgWEtNU0tleUJpbmRpbmdJbXBsOw0KKw0KK2NsYXNzIFhLTVNSZXZva2VSZXN1bHRJbXBsIDogcHVibGljIFhLTVNSZXZva2VSZXN1bHQgew0KKw0KK3B1YmxpYzoNCisJWEtNU1Jlc3VsdFR5cGVJbXBsIG1fcmVzdWx0Ow0KKwlYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGwgJm1fbXNnOw0KK3B1YmxpYzoNCisNCisJWEtNU1Jldm9rZVJlc3VsdEltcGwoDQorCQljb25zdCBYU0VDRW52ICogZW52DQorCSk7DQorDQorCVhLTVNSZXZva2VSZXN1bHRJbXBsKA0KKwkJY29uc3QgWFNFQ0VudiAqIGVudiwgDQorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIG5vZGUNCisJKTsNCisNCisJdmlydHVhbCB+WEtNU1Jldm9rZVJlc3VsdEltcGwoKTsNCisNCisJLy8gTG9hZCBlbGVtZW50cw0KKwl2b2lkIGxvYWQoKTsNCisNCisJLy8gQ3JlYXRpb24NCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiANCisJCWNyZWF0ZUJsYW5rUmV2b2tlUmVzdWx0KA0KKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLA0KKwkJY29uc3QgWE1MQ2ggKiBpZCwNCisJCVJlc3VsdE1ham9yIHJtYWosDQorCQlSZXN1bHRNaW5vciBybWluKTsNCisNCisJLy8gSW50ZXJmYWNlIG1ldGhvZHMNCisJdmlydHVhbCBpbnQgZ2V0S2V5QmluZGluZ1NpemUodm9pZCkgY29uc3Q7DQorCXZpcnR1YWwgWEtNU0tleUJpbmRpbmcgKiBnZXRLZXlCaW5kaW5nSXRlbShpbnQgaXRlbSkgY29uc3Q7DQorCXZpcnR1YWwgWEtNU0tleUJpbmRpbmcgKiBhcHBlbmRLZXlCaW5kaW5nSXRlbShYS01TU3RhdHVzOjpTdGF0dXNWYWx1ZSBzdGF0dXMpOw0KKw0KKw0KKwkvKiBJbXBsZW1lbnRlZCBmcm9tIE1lc3NhZ2VBYnN0cmFjdFR5cGUgKi8NCisJdmlydHVhbCBtZXNzYWdlVHlwZSBnZXRNZXNzYWdlVHlwZSh2b2lkKTsNCisNCisJLyogRm9yY2VkIGluaGVyaXRhbmNlIGZyb20gWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsICovDQorCVhLTVNfTUVTU0FHRUFCU1RSQUNUWVBFX0lNUExfTUVUSE9EUw0KKw0KKwkvKiBGb3JjZWQgaW5oZXJpdGFuY2UgZnJvbSBYS01TUmVzdWx0VHlwZUltcGwgKi8NCisJWEtNU19SRVNVTFRUWVBFX0lNUExfTUVUSE9EUw0KKw0KK3ByaXZhdGU6DQorDQorI2lmIGRlZmluZWQoWFNFQ19OT19OQU1FU1BBQ0VTKQ0KKwl0eXBlZGVmIHZlY3RvcjxYS01TS2V5QmluZGluZ0ltcGwgKj4JCUtleUJpbmRpbmdWZWN0b3JUeXBlOw0KKyNlbHNlDQorCXR5cGVkZWYgc3RkOjp2ZWN0b3I8WEtNU0tleUJpbmRpbmdJbXBsICo+CUtleUJpbmRpbmdWZWN0b3JUeXBlOw0KKyNlbmRpZg0KKw0KKwlLZXlCaW5kaW5nVmVjdG9yVHlwZQltX2tleUJpbmRpbmdMaXN0Ow0KKw0KKwkvLyBVbmltcGxlbWVudGVkDQorCVhLTVNSZXZva2VSZXN1bHRJbXBsKHZvaWQpOw0KKwlYS01TUmV2b2tlUmVzdWx0SW1wbChjb25zdCBYS01TUmV2b2tlUmVzdWx0SW1wbCAmKTsNCisJWEtNU1Jldm9rZVJlc3VsdEltcGwgJiBvcGVyYXRvciA9IChjb25zdCBYS01TUmV2b2tlUmVzdWx0SW1wbCAmKTsNCisNCit9Ow0KKw0KKyNlbmRpZiAvKiBYS01TUkVWT0tFUkVTVUxUSU1QTF9JTkNMVURFICovDQpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNTdGF0dXNJbXBsLmNwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TU3RhdHVzSW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJjOWRhNgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TU3RhdHVzSW1wbC5jcHAKQEAgLTAsMCArMSwzNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNTdGF0dXNJbXBsIDo9IEltcGxlbWVudGF0aW9uIGZvciBTdGF0dXMgZWxlbWVudHMgKGluIEtleUJpbmRpbmcpCisgKgorICogJElkJAorICoKKyAqLworCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRW52LmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNDb25zdGFudHMuaHBwPgorCisjaW5jbHVkZSAiWEtNU1N0YXR1c0ltcGwuaHBwIgorCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD4KKyNpbmNsdWRlIDx4ZXJjZXNjL3V0aWwvWE1MVW5pRGVmcy5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdC9EZXN0cnVjdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWEtNU1N0YXR1c0ltcGw6OlhLTVNTdGF0dXNJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52KSA6CittcF9lbnYoZW52KSwKK21wX3N0YXR1c0VsZW1lbnQoTlVMTCkgeworCisJbV9zdGF0dXNWYWx1ZSA9IFhLTVNTdGF0dXM6OlN0YXR1c1VuZGVmaW5lZDsKKworCVN0YXR1c1ZhbHVlIGk7CisJU3RhdHVzUmVhc29uIGo7CisKKwkvKiBDbGVhbiBvdXQgc3RhdHVzIGNvZGVzICovCisJZm9yIChpID0gSW5kZXRlcm1pbmF0ZSA7IGkgPiBTdGF0dXNVbmRlZmluZWQ7IGkgPSAoU3RhdHVzVmFsdWUpKGktMSkpIHsKKwkJZm9yIChqID0gWEtNU1N0YXR1czo6U2lnbmF0dXJlOyBqICE9IFhLTVNTdGF0dXM6OlJlYXNvblVuZGVmaW5lZDsgaiA9IChYS01TU3RhdHVzOjpTdGF0dXNSZWFzb24pIChqLTEpKSB7CisJCisJCQltX3N0YXR1c1JlYXNvbnNbaS0xXVtqLTFdID0gTlVMTDsKKworCQl9CisJfQorCit9CisKK1hLTVNTdGF0dXNJbXBsOjpYS01TU3RhdHVzSW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudiwgCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogbm9kZSkgOgorbXBfZW52KGVudiksCittcF9zdGF0dXNFbGVtZW50KG5vZGUpIHsKKworCW1fc3RhdHVzVmFsdWUgPSBYS01TU3RhdHVzOjpTdGF0dXNVbmRlZmluZWQ7CisKKwlTdGF0dXNWYWx1ZSBpOworCVN0YXR1c1JlYXNvbiBqOworCisJLyogQ2xlYW4gb3V0IHN0YXR1cyBjb2RlcyAqLworCWZvciAoaSA9IEluZGV0ZXJtaW5hdGUgOyBpID4gU3RhdHVzVW5kZWZpbmVkOyBpID0gKFN0YXR1c1ZhbHVlKShpLTEpKSB7CisJCWZvciAoaiA9IFhLTVNTdGF0dXM6OlNpZ25hdHVyZTsgaiAhPSBYS01TU3RhdHVzOjpSZWFzb25VbmRlZmluZWQ7IGogPSAoWEtNU1N0YXR1czo6U3RhdHVzUmVhc29uKSAoai0xKSkgeworCQorCQkJbV9zdGF0dXNSZWFzb25zW2ktMV1bai0xXSA9IE5VTEw7CisKKwkJfQorCX0KKworfQorCitYS01TU3RhdHVzSW1wbDo6flhLTVNTdGF0dXNJbXBsKCkgeworCisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBMb2FkCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIFhLTVNTdGF0dXNJbXBsOjpsb2FkKCkgeworCisJaWYgKG1wX3N0YXR1c0VsZW1lbnQgPT0gTlVMTCkgeworCisJCS8vIEF0dGVtcHQgdG8gbG9hZCBhbiBlbXB0eSBlbGVtZW50CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6U3RhdHVzRXJyb3IsCisJCQkiWEtNU1N0YXR1czo6bG9hZCAtIGNhbGxlZCBvbiBlbXB0eSBET00iKTsKKworCX0KKworCS8qIExvYWQgdGhlIFN0YXR1c1ZhbHVlIGF0dHJpYnV0ZSAqLworCisJbXBfc3RhdHVzVmFsdWVBdHRyID0gCisJCW1wX3N0YXR1c0VsZW1lbnQtPmdldEF0dHJpYnV0ZU5vZGVOUyhOVUxMLCBYS01TQ29uc3RhbnRzOjpzX3RhZ1N0YXR1c1ZhbHVlKTsKKworCS8qIERlY29kZSBhcyBhcHByb3ByaWF0ZSovCisJaWYgKG1wX3N0YXR1c1ZhbHVlQXR0ciA9PSBOVUxMKSB7CisJCS8vIEF0dGVtcHQgdG8gbG9hZCBhbiBlbXB0eSBlbGVtZW50CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6U3RhdHVzRXJyb3IsCisJCQkiWEtNU1N0YXR1czo6bG9hZCAtIE5vIFN0YXR1c1ZhbHVlIGF0dHJpYnV0ZSBmb3VuZCIpOworCX0KKworCWNvbnN0IFhNTENoICogcmVzID0gbXBfc3RhdHVzVmFsdWVBdHRyLT5nZXROb2RlVmFsdWUoKTsKKworCS8vIFRoaXMgaXMgYWN0dWFsbHkgYW4gUU5hbWUsIGJ1dCB3ZSBjaGVhdCBhbmQgZmluZCB0aGUgJzonIGNoYXJhY3RlciBieSBoYW5kCisJLy8gd2l0aG91dCBhY3R1YWxseSBjaGVja2luZyB0aGUgcXVhbGlmaWVyLgorCS8vIFRPRE8gLSBDSEVDSyB0aGUgcXVhbGlmaWVyLgorCisJaW50IHJlczIgPSBYTUxTdHJpbmc6OmluZGV4T2YocmVzLCBjaFBvdW5kKTsKKwlpZiAocmVzMiA9PSAtMSB8fCBYTUxTdHJpbmc6OmNvbXBhcmVOU3RyaW5nKHJlcywgWEtNU0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWEtNUywgcmVzMikpIHsKKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6U3RhdHVzRXJyb3IsCisJCQkJIlhLTVNTdGF0dXM6OmxvYWQgLSBTdGF0dXNWYWx1ZSBub3QgaW4gWEtNUyBOYW1lIFNwYWNlIik7CisJfQorCXJlcyA9ICZyZXNbcmVzMisxXTsKKworCWZvciAobV9zdGF0dXNWYWx1ZSA9IFhLTVNTdGF0dXM6OkluZGV0ZXJtaW5hdGU7IAorCQltX3N0YXR1c1ZhbHVlID4gWEtNU1N0YXR1czo6U3RhdHVzVW5kZWZpbmVkOyAKKwkJbV9zdGF0dXNWYWx1ZSA9IChYS01TU3RhdHVzOjpTdGF0dXNWYWx1ZSkgKG1fc3RhdHVzVmFsdWUtMSkpIHsKKworCQlpZiAoc3RyRXF1YWxzKFhLTVNDb25zdGFudHM6OnNfdGFnU3RhdHVzVmFsdWVDb2Rlc1ttX3N0YXR1c1ZhbHVlXSwgcmVzKSkKKwkJCWJyZWFrOworCisJCQorCX0KKworCWlmIChtX3N0YXR1c1ZhbHVlID09IFhLTVNTdGF0dXM6OlN0YXR1c1VuZGVmaW5lZCkgeworCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6U3RhdHVzRXJyb3IsCisJCQkiWEtNU1N0YXR1czo6bG9hZCAtIFVua25vd24gU3RhdHVzVmFsdWUgcHJvdmlkZWQiKTsKKworCX0KKworCS8qIE5vdyB3ZSBuZWVkIHRvIHJ1biB0aHJvdWdoIHRoZSBzdGF0dXMgdmFsdWVzICovCisJRE9NRWxlbWVudCAqIGUgPSBmaW5kRmlyc3RFbGVtZW50Q2hpbGQobXBfc3RhdHVzRWxlbWVudCk7CisJd2hpbGUgKGUgIT0gTlVMTCkgeworCisJCWNvbnN0IFhNTENoICogdnMgPSBnZXRYS01TTG9jYWxOYW1lKGUpOworCisJCVN0YXR1c1ZhbHVlIHY7CisKKwkJaWYgKHN0ckVxdWFscyh2cywgWEtNU0NvbnN0YW50czo6c190YWdWYWxpZFJlYXNvbikpIHsKKwkJCXYgPSBWYWxpZDsKKwkJfQorCQllbHNlIGlmIChzdHJFcXVhbHModnMsIFhLTVNDb25zdGFudHM6OnNfdGFnSW52YWxpZFJlYXNvbikpIHsKKwkJCXYgPSBJbnZhbGlkOworCQl9CisJCWVsc2UgaWYgKHN0ckVxdWFscyh2cywgWEtNU0NvbnN0YW50czo6c190YWdJbmRldGVybWluYXRlUmVhc29uKSkgeworCQkJdiA9IEluZGV0ZXJtaW5hdGU7CisJCX0KKwkJZWxzZSB7CisJCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlN0YXR1c0Vycm9yLAorCQkJCSJYS01TU3RhdHVzOjpsb2FkIC0gVW5rbm93biBSZWFzb24gZWxlbWVudCIpOworCQl9CisKKwkJRE9NTm9kZSAqdCA9IGZpbmRGaXJzdENoaWxkT2ZUeXBlKGUsIERPTU5vZGU6OlRFWFRfTk9ERSk7CisJCWlmICh0ID09IE5VTEwpIHsKKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6U3RhdHVzRXJyb3IsCisJCQkJIlhLTVNTdGF0dXM6OmxvYWQgLSBFeHBlY3RlZCB0ZXh0IG5vZGUgY2hpbGQgb2YgcmVhc29uIGVsZW1lbnQiKTsKKwkJfQorCisJCS8qIFN0cmlwIG91dCB0aGUgVVJJIHByZWZpeCAqLworCQljb25zdCBYTUxDaCAqIHJlYXNvbiA9IHQtPmdldE5vZGVWYWx1ZSgpOworCisJCWludCByZXMgPSBYTUxTdHJpbmc6OmluZGV4T2YocmVhc29uLCBjaFBvdW5kKTsKKwkJaWYgKHJlcyA9PSAtMSB8fCBYTUxTdHJpbmc6OmNvbXBhcmVOU3RyaW5nKHJlYXNvbiwgWEtNU0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWEtNUywgcmVzKSkgeworCQkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6U3RhdHVzRXJyb3IsCisJCQkJCSJYS01TU3RhdHVzOjpsb2FkIC0gU3RhdHVzUmVhc29uIG5vdCBpbiBYS01TIE5hbWUgU3BhY2UiKTsKKwkJfQorCQlyZWFzb24gPSAmcmVhc29uW3JlcysxXTsKKworCQkvKiBGb3VuZCBvdXQgd2hhdCB3ZSBhcmUhICovCisJCVhLTVNTdGF0dXM6OlN0YXR1c1JlYXNvbiBpOworCQlmb3IgKGkgPSBYS01TU3RhdHVzOjpTaWduYXR1cmU7IGkgIT0gWEtNU1N0YXR1czo6UmVhc29uVW5kZWZpbmVkOyBpID0gKFhLTVNTdGF0dXM6OlN0YXR1c1JlYXNvbikgKGktMSkpIHsKKworCQkJaWYgKHN0ckVxdWFscyhYS01TQ29uc3RhbnRzOjpzX3RhZ1N0YXR1c1JlYXNvbkNvZGVzW2ldLCByZWFzb24pKQorCQkJCWJyZWFrOworCisJCX0KKworCQlpZiAoaSA9PSBYS01TU3RhdHVzOjpSZWFzb25VbmRlZmluZWQpIHsKKwkJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6U3RhdHVzRXJyb3IsCisJCQkJIlhLTVNTdGF0dXM6OmxvYWQgLSBVbmtub3duIFN0YXR1c1JlYXNvbiIpOworCQl9CisKKwkJbV9zdGF0dXNSZWFzb25zW3YtMV1baS0xXSA9IGU7CisKKwkJZSA9IGZpbmROZXh0RWxlbWVudENoaWxkKGUpOworCisJfQorCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ3JlYXRlIEJsYW5rIFN0YXR1cworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRE9NRWxlbWVudCAqIFhLTVNTdGF0dXNJbXBsOjpjcmVhdGVCbGFua1N0YXR1cyhTdGF0dXNWYWx1ZSBzdGF0dXMpIHsKKworCS8vIEdldCBzb21lIHNldHVwIHZhbHVlcworCXNhZmVCdWZmZXIgc3RyOworCURPTURvY3VtZW50ICpkb2MgPSBtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCk7CisJY29uc3QgWE1MQ2ggKiBwcmVmaXggPSBtcF9lbnYtPmdldFhLTVNOU1ByZWZpeCgpOworCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCBYS01TQ29uc3RhbnRzOjpzX3RhZ1N0YXR1cyk7CisKKwltcF9zdGF0dXNFbGVtZW50ID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoWEtNU0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWEtNUywgCisJCQkJCQkJCQkJCQlzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisKKwltcF9lbnYtPmRvUHJldHR5UHJpbnQobXBfc3RhdHVzRWxlbWVudCk7CisKKwkvKiBOb3cgYWRkIHRoZSBTdGF0dXNWYWx1ZSBlbGVtZW50ICovCisKKwlzdHIuc2JYTUxDaEluKFhLTVNDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhLTVMpOworCXN0ci5zYlhNTENoQ2F0KFhLTVNDb25zdGFudHM6OnNfdGFnU3RhdHVzVmFsdWVDb2Rlc1tzdGF0dXNdKTsKKworCW1wX3N0YXR1c0VsZW1lbnQtPnNldEF0dHJpYnV0ZU5TKE5VTEwsIAorCQlYS01TQ29uc3RhbnRzOjpzX3RhZ1N0YXR1c1ZhbHVlLAorCQlzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisKKwltcF9zdGF0dXNWYWx1ZUF0dHIgPSAKKwkJbXBfc3RhdHVzRWxlbWVudC0+Z2V0QXR0cmlidXRlTm9kZU5TKE5VTEwsIFhLTVNDb25zdGFudHM6OnNfdGFnU3RhdHVzVmFsdWUpOworCisJbV9zdGF0dXNWYWx1ZSA9IHN0YXR1czsKKworCXJldHVybiBtcF9zdGF0dXNFbGVtZW50OworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgR2V0IG1ldGhvZHMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwkvKiBHZXR0ZXIgSW50ZXJmYWNlIE1ldGhvZHMgKi8KK1hLTVNTdGF0dXM6OlN0YXR1c1ZhbHVlIFhLTVNTdGF0dXNJbXBsOjpnZXRTdGF0dXNWYWx1ZSh2b2lkKSBjb25zdCB7CisKKwlyZXR1cm4gbV9zdGF0dXNWYWx1ZTsKKworfQorCitib29sIFhLTVNTdGF0dXNJbXBsOjpnZXRTdGF0dXNSZWFzb24oU3RhdHVzVmFsdWUgc3RhdHVzLCBTdGF0dXNSZWFzb24gcmVhc29uKSBjb25zdCB7CisKKwlpZiAoc3RhdHVzID09IFN0YXR1c1VuZGVmaW5lZCB8fCByZWFzb24gPT0gUmVhc29uVW5kZWZpbmVkKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6U3RhdHVzRXJyb3IsCisJCQkiWEtNU1N0YXR1czo6Z2V0U3RhdHVzUmVhc29uIC0gc3RhdHVzIG9yIHJlYXNvbiB1bmRlZmluZWQiKTsKKwl9CisKKwlyZXR1cm4gKG1fc3RhdHVzUmVhc29uc1tzdGF0dXMtMV1bcmVhc29uLTFdICE9IE5VTEwpOworCit9CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBTZXQgbWV0aG9kcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBYS01TU3RhdHVzSW1wbDo6c2V0U3RhdHVzUmVhc29uKFN0YXR1c1ZhbHVlIHN0YXR1cywgU3RhdHVzUmVhc29uIHJlYXNvbiwgYm9vbCB2YWx1ZSkgeworCisJaWYgKHN0YXR1cyA9PSBTdGF0dXNVbmRlZmluZWQgfHwgcmVhc29uID09IFJlYXNvblVuZGVmaW5lZCkgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlN0YXR1c0Vycm9yLAorCQkJIlhLTVNTdGF0dXM6OnNldFN0YXR1c1JlYXNvbiAtIHN0YXR1cyBvciByZWFzb24gdW5kZWZpbmVkIik7CisJfQorCisJaWYgKChtX3N0YXR1c1JlYXNvbnNbc3RhdHVzLTFdW3JlYXNvbi0xXSAhPSBOVUxMKSA9PSB2YWx1ZSkKKwkJcmV0dXJuOworCisJLyogRGVsZXRlIGlmIG5lY2Vzc2FyeSAqLworCWlmICh2YWx1ZSA9PSBmYWxzZSkgeworCisJCURPTU5vZGUgKiBjID0gbV9zdGF0dXNSZWFzb25zW3N0YXR1cy0xXVtyZWFzb24tMV07CisJCW1wX3N0YXR1c0VsZW1lbnQtPnJlbW92ZUNoaWxkKGMpOworCQljLT5yZWxlYXNlKCk7CisJCW1fc3RhdHVzUmVhc29uc1tzdGF0dXMtMV1bcmVhc29uLTFdID0gTlVMTDsKKwkJcmV0dXJuOworCisJfQorCisJCQorCS8qIEZpbmQgYSBwcmV2aW91c2x5IGZvdW5kIGVsZW1lbnQgdG8gaW5zZXJ0IGJlZm9yZSovCisJRE9NTm9kZSAqIGZvdW5kID0gTlVMTDsKKworCW1fc3RhdHVzVmFsdWUgPSBYS01TU3RhdHVzOjpTdGF0dXNVbmRlZmluZWQ7CisKKwlTdGF0dXNWYWx1ZSBpOworCVN0YXR1c1JlYXNvbiBqID0gWEtNU1N0YXR1czo6U2lnbmF0dXJlOworCisJLyogQ2xlYW4gb3V0IHN0YXR1cyBjb2RlcyAqLworCWZvciAoaSA9IEluZGV0ZXJtaW5hdGUgOyBpID4gU3RhdHVzVW5kZWZpbmVkICYmICEoaSA9PSBzdGF0dXMgJiYgaiA9PSByZWFzb24pOyBpID0gKFN0YXR1c1ZhbHVlKShpLTEpKSB7CisJCWZvciAoaiA9IFhLTVNTdGF0dXM6OlNpZ25hdHVyZTsgaiAhPSBYS01TU3RhdHVzOjpSZWFzb25VbmRlZmluZWQgJiYgIShpID09IHN0YXR1cyAmJiBqID09IHJlYXNvbik7IGogPSAoWEtNU1N0YXR1czo6U3RhdHVzUmVhc29uKSAoai0xKSkgeworCQorCQkJaWYgKG1fc3RhdHVzUmVhc29uc1tpLTFdW2otMV0gIT0gTlVMTCkKKwkJCQlmb3VuZCA9IG1fc3RhdHVzUmVhc29uc1tpLTFdW2otMV07CisKKwkJfQorCX0KKworCS8qIE5vdyBsZXRzIGNyZWF0ZSBvdXIgbmV3IGVsZW1lbnQgYW5kIGl0cyB0ZXh0IGNoaWxkICovCisJc2FmZUJ1ZmZlciBzdHI7CisJRE9NRG9jdW1lbnQgKmRvYyA9IG1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKTsKKwkvLyBzdHIuc2JYTUxDaEluKFhLTVNDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhLTVMpOworCWNvbnN0IFhNTENoICogcHJlZml4ID0gbXBfZW52LT5nZXRYS01TTlNQcmVmaXgoKTsKKworCWlmIChzdGF0dXMgPT0gVmFsaWQpIHsKKwkJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCBYS01TQ29uc3RhbnRzOjpzX3RhZ1ZhbGlkUmVhc29uKTsKKwl9CisJZWxzZSBpZiAoc3RhdHVzID09IEludmFsaWQpIHsKKwkJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCBYS01TQ29uc3RhbnRzOjpzX3RhZ0ludmFsaWRSZWFzb24pOworCX0KKwllbHNlIHsKKwkJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCBYS01TQ29uc3RhbnRzOjpzX3RhZ0luZGV0ZXJtaW5hdGVSZWFzb24pOworCX0KKworCURPTUVsZW1lbnQgKiBlID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoWEtNU0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWEtNUywgCisJCQkJCQkJCQkJCQlzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisKKwkvKiBDcmVhdGUgdGhlIHRleHQgbm9kZSBjaGlsZCAqLworCXN0ci5zYlhNTENoSW4oWEtNU0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWEtNUyk7CisJc3RyLnNiWE1MQ2hDYXQoWEtNU0NvbnN0YW50czo6c190YWdTdGF0dXNSZWFzb25Db2Rlc1tyZWFzb25dKTsKKwllLT5hcHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKHN0ci5yYXdYTUxDaEJ1ZmZlcigpKSk7CisKKwkvKiBJbnNlcnQgYXQgY29ycmVjdCBwbGFjZSAqLworCWlmIChmb3VuZCA9PSBOVUxMKSB7CisKKwkJbXBfc3RhdHVzRWxlbWVudC0+YXBwZW5kQ2hpbGQoZSk7CisJCW1wX2Vudi0+ZG9QcmV0dHlQcmludChtcF9zdGF0dXNFbGVtZW50KTsKKworCX0KKwllbHNlIHsKKworCQltcF9zdGF0dXNFbGVtZW50LT5pbnNlcnRCZWZvcmUoZSwgZm91bmQpOworCQlpZiAobXBfZW52LT5nZXRQcmV0dHlQcmludEZsYWcoKSA9PSB0cnVlKQorCQkJbXBfc3RhdHVzRWxlbWVudC0+aW5zZXJ0QmVmb3JlKGRvYy0+Y3JlYXRlVGV4dE5vZGUoRFNJR0NvbnN0YW50czo6c191bmljb2RlU3RyTkwpLCBmb3VuZCk7CisKKwl9CisKKwltX3N0YXR1c1JlYXNvbnNbc3RhdHVzLTFdW3JlYXNvbi0xXSA9IGU7CisKK30KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvaW1wbC9YS01TU3RhdHVzSW1wbC5ocHAgYi9jL3NyYy94a21zL2ltcGwvWEtNU1N0YXR1c0ltcGwuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjY2M5YmYKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU1N0YXR1c0ltcGwuaHBwCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNTdGF0dXNJbXBsIDo9IEltcGxlbWVudGF0aW9uIGZvciBTdGF0dXMgZWxlbWVudHMgKGluIEtleUJpbmRpbmcpCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhLTVNTVEFUVVNJTVBMX0lOQ0xVREUKKyNkZWZpbmUgWEtNU1NUQVRVU0lNUExfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNTdGF0dXMuaHBwPgorCisKKworY2xhc3MgWEtNU1N0YXR1c0ltcGwgOiBwdWJsaWMgWEtNU1N0YXR1cyB7CisKK3B1YmxpYzoKKworCVhLTVNTdGF0dXNJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52CisJKTsKKworCVhLTVNTdGF0dXNJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52LCAKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBub2RlCisJKTsKKworCXZpcnR1YWwgflhLTVNTdGF0dXNJbXBsKCk7CisKKwkvLyBMb2FkIGVsZW1lbnRzCisJdm9pZCBsb2FkKCk7CisKKwkvLyBDcmVhdGlvbgorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogCisJCWNyZWF0ZUJsYW5rU3RhdHVzKFN0YXR1c1ZhbHVlIHN0YXR1cyk7CisKKwkvKiBHZXR0ZXIgSW50ZXJmYWNlIE1ldGhvZHMgKi8KKwl2aXJ0dWFsIFN0YXR1c1ZhbHVlIGdldFN0YXR1c1ZhbHVlKHZvaWQpIGNvbnN0OworCXZpcnR1YWwgYm9vbCBnZXRTdGF0dXNSZWFzb24oU3RhdHVzVmFsdWUgc3RhdHVzLCBTdGF0dXNSZWFzb24gcmVhc29uKSBjb25zdDsKKworCS8qIFNldHRlciBNZXRob2RzICovCisJdmlydHVhbCB2b2lkIHNldFN0YXR1c1JlYXNvbihTdGF0dXNWYWx1ZSBzdGF0dXMsIFN0YXR1c1JlYXNvbiByZWFzb24sIGJvb2wgdmFsdWUpOworCitwcml2YXRlOgorCisJY29uc3QgWFNFQ0VudgkJKiBtcF9lbnY7CisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgCisJCQkJCQkJKiBtcF9zdGF0dXNFbGVtZW50OworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlIAorCQkJCQkJCSogbXBfc3RhdHVzVmFsdWVBdHRyOworCisJU3RhdHVzVmFsdWUJCQltX3N0YXR1c1ZhbHVlOworCisJLyogUmVjb3JkIHZhbHVlcyBvZiBlYWNoIHN0YXR1cyAqLworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01Ob2RlCisJCQkJCQkqIG1fc3RhdHVzUmVhc29uc1szXVs0XTsKKworCisJLy8gVW5pbXBsZW1lbnRlZAorCVhLTVNTdGF0dXNJbXBsKGNvbnN0IFhLTVNTdGF0dXNJbXBsICYpOworCVhLTVNTdGF0dXNJbXBsICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU1N0YXR1c0ltcGwgJik7CisKK307CisKKyNlbmRpZiAvKiBYS01TU1RBVFVTSU1QTF9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU1N0YXR1c1JlcXVlc3RJbXBsLmNwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TU3RhdHVzUmVxdWVzdEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3Y2ViMTMKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU1N0YXR1c1JlcXVlc3RJbXBsLmNwcApAQCAtMCwwICsxLDE1OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU1N0YXR1c1JlcXVlc3RJbXBsIDo9IEltcGxlbWVudGF0aW9uIG9mIFN0YXR1c1JlcXVlc3QgTWVzc2FnZXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRW52LmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNDb25zdGFudHMuaHBwPgorCisjaW5jbHVkZSAiWEtNU1N0YXR1c1JlcXVlc3RJbXBsLmhwcCIKKworI2luY2x1ZGUgPHhlcmNlc2MvZG9tL0RPTS5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdC9EZXN0cnVjdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWEtNU1N0YXR1c1JlcXVlc3RJbXBsOjpYS01TU3RhdHVzUmVxdWVzdEltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYpIDoKK21fcmVxdWVzdChlbnYpLAorbV9tc2cobV9yZXF1ZXN0Lm1fbXNnKSwKK21wX3Jlc3BvbnNlSWRBdHRyKE5VTEwpIHsKK30KKworWEtNU1N0YXR1c1JlcXVlc3RJbXBsOjpYS01TU3RhdHVzUmVxdWVzdEltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYsIAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIG5vZGUpIDoKK21fcmVxdWVzdChlbnYsIG5vZGUpLAorbV9tc2cobV9yZXF1ZXN0Lm1fbXNnKSwKK21wX3Jlc3BvbnNlSWRBdHRyKE5VTEwpIHsKKworfQorCitYS01TU3RhdHVzUmVxdWVzdEltcGw6On5YS01TU3RhdHVzUmVxdWVzdEltcGwoKSB7CisKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIExvYWQgZnJvbSBET00KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIExvYWQgZWxlbWVudHMKK3ZvaWQgWEtNU1N0YXR1c1JlcXVlc3RJbXBsOjpsb2FkKCkgeworCisJaWYgKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50ID09IE5VTEwpIHsKKworCQkvLyBBdHRlbXB0IHRvIGxvYWQgYW4gZW1wdHkgZWxlbWVudAorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwKKwkJCSJYS01TU3RhdHVzUmVxdWVzdDo6bG9hZCAtIGNhbGxlZCBvbiBlbXB0eSBET00iKTsKKworCX0KKworCWlmICghc3RyRXF1YWxzKGdldFhLTVNMb2NhbE5hbWUobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpLCAKKwkJCQkJCQkJCVhLTVNDb25zdGFudHM6OnNfdGFnU3RhdHVzUmVxdWVzdCkpIHsKKwkKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsCisJCQkiWEtNU1N0YXR1c1JlcXVlc3Q6OmxvYWQgLSBjYWxsZWQgaW5jb3JyZWN0IG5vZGUiKTsKKwkKKwl9CisKKwkvLyBMb2FkIHRoZSBiYXNlIG1lc3NhZ2UKKwltX3JlcXVlc3QubG9hZCgpOworCisJLy8gTm93IGNoZWNrIGZvciBSZXNwb25zZUlkIGF0dHJpYnV0ZQorCW1wX3Jlc3BvbnNlSWRBdHRyID0gCisJCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5nZXRBdHRyaWJ1dGVOb2RlTlMoTlVMTCwgWEtNU0NvbnN0YW50czo6c190YWdSZXNwb25zZUlkKTsKKworCWlmIChtcF9yZXNwb25zZUlkQXR0ciA9PSBOVUxMKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLAorCQkJIlhLTVNTdGF0dXNSZXF1ZXN0Ojpsb2FkIC0gcmVzcG9uc2VJZCBub3QgZm91bmQhIik7CisJfQorCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ3JlYXRlIGEgYmxhbmsgb25lCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRE9NRWxlbWVudCAqIFhLTVNTdGF0dXNSZXF1ZXN0SW1wbDo6Y3JlYXRlQmxhbmtTdGF0dXNSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCWNvbnN0IFhNTENoICogaWQpIHsKKworCXJldHVybiBtX3JlcXVlc3QuY3JlYXRlQmxhbmtSZXF1ZXN0QWJzdHJhY3RUeXBlKAorCQlYS01TQ29uc3RhbnRzOjpzX3RhZ1N0YXR1c1JlcXVlc3QsIHNlcnZpY2UsIGlkKTsKKy8vCXJldHVybiBYS01TUmVxdWVzdEFic3RyYWN0VHlwZUltcGw6OmNyZWF0ZUJsYW5rTWVzc2FnZUFic3RyYWN0VHlwZSgKKy8vCQlNQUtFX1VOSUNPREVfU1RSSU5HKCJWYWxpZGF0ZVJlcXVlc3QiKSwgc2VydmljZSwgaWQpOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgR2V0IGludGVyZmFjZSBtZXRob2RzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6bWVzc2FnZVR5cGUgWEtNU1N0YXR1c1JlcXVlc3RJbXBsOjpnZXRNZXNzYWdlVHlwZSh2b2lkKSB7CisKKwlyZXR1cm4gWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsOjpTdGF0dXNSZXF1ZXN0OworCit9CisKKworY29uc3QgWE1MQ2ggKiBYS01TU3RhdHVzUmVxdWVzdEltcGw6OmdldFJlc3BvbnNlSWQodm9pZCkgY29uc3QgeworCisJaWYgKG1wX3Jlc3BvbnNlSWRBdHRyID09IE5VTEwpIHsKKworCQkvLyBBdHRlbXB0IHJlYWQgd2hlbiBub3QgaW5pdGlhbGlzZWQKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpNZXNzYWdlQWJzdHJhY3RUeXBlRXJyb3IsCisJCQkiWEtNU1N0YXR1c1JlcXVlc3Q6OmdldFJlc3BvbnNlSWQgLSBjYWxsZWQgb24gbm9uLWluaXRpYWxpc2VkIHN0cnVjdHVyZSIpOworCisJfQorCisJcmV0dXJuIAltcF9yZXNwb25zZUlkQXR0ci0+Z2V0Tm9kZVZhbHVlKCk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU2V0dGVyIG1ldGhvZHMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgWEtNU1N0YXR1c1JlcXVlc3RJbXBsOjpzZXRSZXNwb25zZUlkKGNvbnN0IFhNTENoICogcmVzcG9uc2VJZCkgeworCisJaWYgKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50ID09IE5VTEwpIHsKKworCQkvLyBBdHRlbXB0IHVwZGF0ZSB3aGVuIG5vdCBpbml0aWFsaXNlZAorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246Ok1lc3NhZ2VBYnN0cmFjdFR5cGVFcnJvciwKKwkJCSJYS01TU3RhdHVzUmVxdWVzdDo6c2V0UmVzcG9uc2VJZCAtIGNhbGxlZCBvbiBub24taW5pdGlhbGlzZWQgc3RydWN0dXJlIik7CisKKwl9CisKKwltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+c2V0QXR0cmlidXRlTlMoTlVMTCwgWEtNU0NvbnN0YW50czo6c190YWdSZXNwb25zZUlkLCByZXNwb25zZUlkKTsKKwltcF9yZXNwb25zZUlkQXR0ciA9IAorCQltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+Z2V0QXR0cmlidXRlTm9kZU5TKE5VTEwsIFhLTVNDb25zdGFudHM6OnNfdGFnUmVzcG9uc2VJZCk7CisKK30KKworCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU1N0YXR1c1JlcXVlc3RJbXBsLmhwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TU3RhdHVzUmVxdWVzdEltcGwuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhODE0NjAKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU1N0YXR1c1JlcXVlc3RJbXBsLmhwcApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TU3RhdHVzUmVxdWVzdEltcGwgOj0gSW1wbGVtZW50YXRpb24gb2YgU3RhdHVzUmVxdWVzdCBNZXNzYWdlcworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYS01TU1RBVFVTUkVRVUVTVElNUExfSU5DTFVERQorI2RlZmluZSBYS01TU1RBVFVTUkVRVUVTVElNUExfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNTdGF0dXNSZXF1ZXN0LmhwcD4KKworI2luY2x1ZGUgIlhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbC5ocHAiCisKK2NsYXNzIFhLTVNTdGF0dXNSZXF1ZXN0SW1wbCA6IHB1YmxpYyBYS01TU3RhdHVzUmVxdWVzdCB7CisKK3B1YmxpYzoKKwlYS01TUmVxdWVzdEFic3RyYWN0VHlwZUltcGwgbV9yZXF1ZXN0OworCVhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbCAmbV9tc2c7CitwdWJsaWM6CisKKwlYS01TU3RhdHVzUmVxdWVzdEltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYKKwkpOworCisJWEtNU1N0YXR1c1JlcXVlc3RJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52LCAKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBub2RlCisJKTsKKworCXZpcnR1YWwgflhLTVNTdGF0dXNSZXF1ZXN0SW1wbCgpOworCisJLy8gTG9hZCBlbGVtZW50cworCXZvaWQgbG9hZCgpOworCisJLy8gQ3JlYXRpb24KKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIAorCQljcmVhdGVCbGFua1N0YXR1c1JlcXVlc3QoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJY29uc3QgWE1MQ2ggKiBpZCA9IE5VTEwpOworCisKKwkvKiBHZXR0ZXIgSW50ZXJmYWNlIE1ldGhvZHMgKi8KKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0UmVzcG9uc2VJZCh2b2lkKSBjb25zdDsKKworCS8qIFNldHRlciBpbnRlcmZhY2UgbWV0aG9kcyAqLworCXZpcnR1YWwgdm9pZCBzZXRSZXNwb25zZUlkKGNvbnN0IFhNTENoICogcmVzcG9uc2VJZCk7CisKKwkvKiBJbXBsZW1lbnRlZCBmcm9tIE1lc3NhZ2VBYnN0cmFjdFR5cGUgKi8KKwl2aXJ0dWFsIG1lc3NhZ2VUeXBlIGdldE1lc3NhZ2VUeXBlKHZvaWQpOworCisJLyogRm9yY2VkIGluaGVyaXRhbmNlIGZyb20gWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsICovCisJWEtNU19NRVNTQUdFQUJTVFJBQ1RZUEVfSU1QTF9NRVRIT0RTCisKKwkvKiBGb3JjZWQgaW5oZXJpdGFuY2UgZnJvbSBSZXF1ZXN0QWJzdHJhY3RUeXBlICovCisJWEtNU19SRVFVRVNUQUJTVFJBQ1RZUEVfSU1QTF9NRVRIT0RTCisKK3ByaXZhdGU6CisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgIERPTUF0dHIKKwkJCQkJCSogbXBfcmVzcG9uc2VJZEF0dHI7CisKKwkvLyBVbmltcGxlbWVudGVkCisJWEtNU1N0YXR1c1JlcXVlc3RJbXBsKGNvbnN0IFhLTVNTdGF0dXNSZXF1ZXN0SW1wbCAmKTsKKwlYS01TU3RhdHVzUmVxdWVzdEltcGwgJiBvcGVyYXRvciA9IChjb25zdCBYS01TU3RhdHVzUmVxdWVzdEltcGwgJik7CisKK307CisKKyNlbmRpZiAvKiBYS01TU1RBVFVTUkVRVUVTVElNUExfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNTdGF0dXNSZXN1bHRJbXBsLmNwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TU3RhdHVzUmVzdWx0SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE4YmMyZgotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TU3RhdHVzUmVzdWx0SW1wbC5jcHAKQEAgLTAsMCArMSwyMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNTdGF0dXNSZXN1bHRJbXBsIDo9IEltcGxlbWVudGF0aW9uIG9mIFN0YXR1c1Jlc3VsdCBNZXNzYWdlcworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRXJyb3IuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPgorI2luY2x1ZGUgPHhzZWMvdXRpbHMvWFNFQ0RPTVV0aWxzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0NvbnN0YW50cy5ocHA+CisKKyNpbmNsdWRlICJYS01TU3RhdHVzUmVzdWx0SW1wbC5ocHAiCisjaW5jbHVkZSAiWEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nSW1wbC5ocHAiCisKKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdHJ1Y3QvRGVzdHJ1Y3QKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hLTVNTdGF0dXNSZXN1bHRJbXBsOjpYS01TU3RhdHVzUmVzdWx0SW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudikgOgorbV9yZXN1bHQoZW52KSwKK21fbXNnKG1fcmVzdWx0Lm1fbXNnKSB7CisKKwltcF9zdWNjZXNzQXR0ciA9IE5VTEw7CisJbXBfZmFpbHVyZUF0dHIgPSBOVUxMOworCW1wX3BlbmRpbmdBdHRyID0gTlVMTDsKKworfQorCitYS01TU3RhdHVzUmVzdWx0SW1wbDo6WEtNU1N0YXR1c1Jlc3VsdEltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYsIAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIG5vZGUpIDoKK21fcmVzdWx0KGVudiwgbm9kZSksCittX21zZyhtX3Jlc3VsdC5tX21zZykgeworCisJbXBfc3VjY2Vzc0F0dHIgPSBOVUxMOworCW1wX2ZhaWx1cmVBdHRyID0gTlVMTDsKKwltcF9wZW5kaW5nQXR0ciA9IE5VTEw7CisKK30KKworWEtNU1N0YXR1c1Jlc3VsdEltcGw6On5YS01TU3RhdHVzUmVzdWx0SW1wbCgpIHsKKworfQorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgTG9hZCBmcm9tIERPTQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gTG9hZCBlbGVtZW50cwordm9pZCBYS01TU3RhdHVzUmVzdWx0SW1wbDo6bG9hZCgpIHsKKworCWlmIChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCA9PSBOVUxMKSB7CisKKwkJLy8gQXR0ZW1wdCB0byBsb2FkIGFuIGVtcHR5IGVsZW1lbnQKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsCisJCQkiWEtNU1N0YXR1c1Jlc3VsdDo6bG9hZCAtIGNhbGxlZCBvbiBlbXB0eSBET00iKTsKKworCX0KKworCWlmICghc3RyRXF1YWxzKGdldFhLTVNMb2NhbE5hbWUobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpLCAKKwkJCQkJCQkJCVhLTVNDb25zdGFudHM6OnNfdGFnU3RhdHVzUmVzdWx0KSkgeworCQorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwKKwkJCSJYS01TU3RhdHVzUmVzdWx0Ojpsb2FkIC0gY2FsbGVkIGluY29ycmVjdCBub2RlIik7CisJCisJfQorCisJLy8gTG9hZCB0aGUgYmFzZSBtZXNzYWdlCisJbV9yZXN1bHQubG9hZCgpOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ3JlYXRlIGEgYmxhbmsgb25lCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRE9NRWxlbWVudCAqIFhLTVNTdGF0dXNSZXN1bHRJbXBsOjpjcmVhdGVCbGFua1N0YXR1c1Jlc3VsdCgKKwkJY29uc3QgWE1MQ2ggKiBzZXJ2aWNlLAorCQljb25zdCBYTUxDaCAqIGlkLAorCQlSZXN1bHRNYWpvciBybWFqLAorCQlSZXN1bHRNaW5vciBybWluKSB7CisKKwlyZXR1cm4gbV9yZXN1bHQuY3JlYXRlQmxhbmtSZXN1bHRUeXBlKAorCQlYS01TQ29uc3RhbnRzOjpzX3RhZ1N0YXR1c1Jlc3VsdCwgc2VydmljZSwgaWQsIHJtYWosIHJtaW4pOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgR2V0IGludGVyZmFjZSBtZXRob2RzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6bWVzc2FnZVR5cGUgWEtNU1N0YXR1c1Jlc3VsdEltcGw6OmdldE1lc3NhZ2VUeXBlKHZvaWQpIHsKKworCXJldHVybiBYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGw6OlN0YXR1c1Jlc3VsdDsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFJlc3VsdCBjb3VudCBoYW5kbGluZworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaW50IFhLTVNTdGF0dXNSZXN1bHRJbXBsOjpnZXRTdWNjZXNzQ291bnQodm9pZCkgY29uc3QgeworCisJaWYgKG1wX3N1Y2Nlc3NBdHRyID09IE5VTEwpCisJCXJldHVybiAwOworCisJdW5zaWduZWQgaW50IHZhbDsKKwlYTUxTdHJpbmc6OnRleHRUb0JpbihtcF9zdWNjZXNzQXR0ci0+Z2V0Tm9kZVZhbHVlKCksIHZhbCk7CisKKwlyZXR1cm4gKGludCkgdmFsOworCit9CisKK2ludCBYS01TU3RhdHVzUmVzdWx0SW1wbDo6Z2V0RmFpbHVyZUNvdW50KHZvaWQpIGNvbnN0IHsKKworCWlmIChtcF9mYWlsdXJlQXR0ciA9PSBOVUxMKQorCQlyZXR1cm4gMDsKKworCXVuc2lnbmVkIGludCB2YWw7CisJWE1MU3RyaW5nOjp0ZXh0VG9CaW4obXBfZmFpbHVyZUF0dHItPmdldE5vZGVWYWx1ZSgpLCB2YWwpOworCisJcmV0dXJuIChpbnQpIHZhbDsKKworfQorCitpbnQgWEtNU1N0YXR1c1Jlc3VsdEltcGw6OmdldFBlbmRpbmdDb3VudCh2b2lkKSBjb25zdCB7CisKKwlpZiAobXBfcGVuZGluZ0F0dHIgPT0gTlVMTCkKKwkJcmV0dXJuIDA7CisKKwl1bnNpZ25lZCBpbnQgdmFsOworCVhNTFN0cmluZzo6dGV4dFRvQmluKG1wX3BlbmRpbmdBdHRyLT5nZXROb2RlVmFsdWUoKSwgdmFsKTsKKworCXJldHVybiAoaW50KSB2YWw7CisKK30KKwordm9pZCBYS01TU3RhdHVzUmVzdWx0SW1wbDo6c2V0U3VjY2Vzc0NvdW50KGludCBjb3VudCkgeworCisJaWYgKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50ID09IE5VTEwpIHsKKworCQkvLyBBdHRlbXB0IHVwZGF0ZSB3aGVuIG5vdCBpbml0aWFsaXNlZAorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246Ok1lc3NhZ2VBYnN0cmFjdFR5cGVFcnJvciwKKwkJCSJYS01TU3RhdHVzUmVzdWx0OjpzZXRTdWNjZXNzQ291bnQgLSBjYWxsZWQgb24gbm9uLWluaXRpYWxpc2VkIHN0cnVjdHVyZSIpOworCisJfQorCisJWE1MQ2ggdmFsWzE2XTsKKwlYTUxTdHJpbmc6OmJpblRvVGV4dChjb3VudCwgdmFsLCAxNiwgMTApOworCisJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPnNldEF0dHJpYnV0ZU5TKE5VTEwsIFhLTVNDb25zdGFudHM6OnNfdGFnU3VjY2VzcywgdmFsKTsKKwltcF9zdWNjZXNzQXR0ciA9IAorCQltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+Z2V0QXR0cmlidXRlTm9kZU5TKE5VTEwsIFhLTVNDb25zdGFudHM6OnNfdGFnU3VjY2Vzcyk7CisKK30KKwordm9pZCBYS01TU3RhdHVzUmVzdWx0SW1wbDo6c2V0RmFpbHVyZUNvdW50KGludCBjb3VudCkgeworCisJaWYgKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50ID09IE5VTEwpIHsKKworCQkvLyBBdHRlbXB0IHVwZGF0ZSB3aGVuIG5vdCBpbml0aWFsaXNlZAorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246Ok1lc3NhZ2VBYnN0cmFjdFR5cGVFcnJvciwKKwkJCSJYS01TU3RhdHVzUmVzdWx0OjpzZXRGYWlsdXJlQ291bnQgLSBjYWxsZWQgb24gbm9uLWluaXRpYWxpc2VkIHN0cnVjdHVyZSIpOworCisJfQorCisJWE1MQ2ggdmFsWzE2XTsKKwlYTUxTdHJpbmc6OmJpblRvVGV4dChjb3VudCwgdmFsLCAxNiwgMTApOworCisJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPnNldEF0dHJpYnV0ZU5TKE5VTEwsIFhLTVNDb25zdGFudHM6OnNfdGFnRmFpbHVyZSwgdmFsKTsKKwltcF9mYWlsdXJlQXR0ciA9IAorCQltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+Z2V0QXR0cmlidXRlTm9kZU5TKE5VTEwsIFhLTVNDb25zdGFudHM6OnNfdGFnRmFpbHVyZSk7CisKK30KKwordm9pZCBYS01TU3RhdHVzUmVzdWx0SW1wbDo6c2V0UGVuZGluZ0NvdW50KGludCBjb3VudCkgeworCisJaWYgKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50ID09IE5VTEwpIHsKKworCQkvLyBBdHRlbXB0IHVwZGF0ZSB3aGVuIG5vdCBpbml0aWFsaXNlZAorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246Ok1lc3NhZ2VBYnN0cmFjdFR5cGVFcnJvciwKKwkJCSJYS01TU3RhdHVzUmVzdWx0OjpzZXRQZW5kaW5nQ291bnQgLSBjYWxsZWQgb24gbm9uLWluaXRpYWxpc2VkIHN0cnVjdHVyZSIpOworCisJfQorCisJWE1MQ2ggdmFsWzE2XTsKKwlYTUxTdHJpbmc6OmJpblRvVGV4dChjb3VudCwgdmFsLCAxNiwgMTApOworCisJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPnNldEF0dHJpYnV0ZU5TKE5VTEwsIFhLTVNDb25zdGFudHM6OnNfdGFnUGVuZGluZywgdmFsKTsKKwltcF9wZW5kaW5nQXR0ciA9IAorCQltX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+Z2V0QXR0cmlidXRlTm9kZU5TKE5VTEwsIFhLTVNDb25zdGFudHM6OnNfdGFnUGVuZGluZyk7CisKK30KKworCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU1N0YXR1c1Jlc3VsdEltcGwuaHBwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNTdGF0dXNSZXN1bHRJbXBsLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGRmNDM2Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9pbXBsL1hLTVNTdGF0dXNSZXN1bHRJbXBsLmhwcApAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU1N0YXR1c1Jlc3VsdEltcGwgOj0gSW1wbGVtZW50YXRpb24gb2YgU3RhdHVzUmVzdWx0IE1lc3NhZ2VzCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhLTVNTVEFUVVNSRVNVTFRJTVBMX0lOQ0xVREUKKyNkZWZpbmUgWEtNU1NUQVRVU1JFU1VMVElNUExfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNTdGF0dXNSZXN1bHQuaHBwPgorCisjaW5jbHVkZSAiWEtNU1Jlc3VsdFR5cGVJbXBsLmhwcCIKKworI2luY2x1ZGUgPHZlY3Rvcj4KKworY2xhc3MgWEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nSW1wbDsKKworCitjbGFzcyBYS01TU3RhdHVzUmVzdWx0SW1wbCA6IHB1YmxpYyBYS01TU3RhdHVzUmVzdWx0IHsKKworcHVibGljOgorCVhLTVNSZXN1bHRUeXBlSW1wbCBtX3Jlc3VsdDsKKwlYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGwgJm1fbXNnOworcHVibGljOgorCisJWEtNU1N0YXR1c1Jlc3VsdEltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYKKwkpOworCisJWEtNU1N0YXR1c1Jlc3VsdEltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYsIAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIG5vZGUKKwkpOworCisJdmlydHVhbCB+WEtNU1N0YXR1c1Jlc3VsdEltcGwoKTsKKworCS8vIExvYWQgZWxlbWVudHMKKwl2b2lkIGxvYWQoKTsKKworCS8vIENyZWF0aW9uCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiAKKwkJY3JlYXRlQmxhbmtTdGF0dXNSZXN1bHQoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJY29uc3QgWE1MQ2ggKiBpZCwKKwkJUmVzdWx0TWFqb3Igcm1haiwKKwkJUmVzdWx0TWlub3Igcm1pbik7CisKKwkvLyBJbnRlcmZhY2UgbWV0aG9kcworCXZpcnR1YWwgaW50IGdldFN1Y2Nlc3NDb3VudCh2b2lkKSBjb25zdDsKKwl2aXJ0dWFsIGludCBnZXRGYWlsdXJlQ291bnQodm9pZCkgY29uc3Q7CisJdmlydHVhbCBpbnQgZ2V0UGVuZGluZ0NvdW50KHZvaWQpIGNvbnN0OworCXZpcnR1YWwgdm9pZCBzZXRTdWNjZXNzQ291bnQoaW50IGNvdW50KTsKKwl2aXJ0dWFsIHZvaWQgc2V0RmFpbHVyZUNvdW50KGludCBjb3VudCk7CisJdmlydHVhbCB2b2lkIHNldFBlbmRpbmdDb3VudChpbnQgY291bnQpOworCisJLyogSW1wbGVtZW50ZWQgZnJvbSBNZXNzYWdlQWJzdHJhY3RUeXBlICovCisJdmlydHVhbCBtZXNzYWdlVHlwZSBnZXRNZXNzYWdlVHlwZSh2b2lkKTsKKworCS8qIEZvcmNlZCBpbmhlcml0YW5jZSBmcm9tIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbCAqLworCVhLTVNfTUVTU0FHRUFCU1RSQUNUWVBFX0lNUExfTUVUSE9EUworCisJLyogRm9yY2VkIGluaGVyaXRhbmNlIGZyb20gWEtNU1Jlc3VsdFR5cGVJbXBsICovCisJWEtNU19SRVNVTFRUWVBFX0lNUExfTUVUSE9EUworCitwcml2YXRlOgorCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSICBET01BdHRyCisJCQkJCQkqIG1wX3N1Y2Nlc3NBdHRyOworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiAgRE9NQXR0cgorCQkJCQkJKiBtcF9mYWlsdXJlQXR0cjsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgIERPTUF0dHIKKwkJCQkJCSogbXBfcGVuZGluZ0F0dHI7CisKKwkvLyBVbmltcGxlbWVudGVkCisJWEtNU1N0YXR1c1Jlc3VsdEltcGwoY29uc3QgWEtNU1N0YXR1c1Jlc3VsdEltcGwgJik7CisJWEtNU1N0YXR1c1Jlc3VsdEltcGwgJiBvcGVyYXRvciA9IChjb25zdCBYS01TU3RhdHVzUmVzdWx0SW1wbCAmKTsKKworfTsKKworI2VuZGlmIC8qIFhLTVNTVEFUVVNSRVNVTFRJTVBMX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvaW1wbC9YS01TVW52ZXJpZmllZEtleUJpbmRpbmdJbXBsLmNwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TVW52ZXJpZmllZEtleUJpbmRpbmdJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTM1Zjg4Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9pbXBsL1hLTVNVbnZlcmlmaWVkS2V5QmluZGluZ0ltcGwuY3BwCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNVbnZlcmlmaWVkS2V5QmluZGluZ0ltcGwgOj0gSW1wbGVtZW50YXRpb24gZm9yIFVudmVyaWZpZWRLZXlCaW5kaW5nCisgKgorICogJElkJAorICoKKyAqLworCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0NvbnN0YW50cy5ocHA+CisKKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPgorCisjaW5jbHVkZSAiWEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nSW1wbC5ocHAiCisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdC9EZXN0cnVjdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nSW1wbDo6WEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nSW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudiAKKwkJKSA6CitYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGwoZW52KSB7CisKK30KKworWEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nSW1wbDo6WEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nSW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudiwgCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogbm9kZQorCQkpIDoKK1hLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbChlbnYsIG5vZGUpIHsKKworfQorCitYS01TVW52ZXJpZmllZEtleUJpbmRpbmdJbXBsOjp+WEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nSW1wbCgpIHt9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgTG9hZCBmcm9tIERPTQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBYS01TVW52ZXJpZmllZEtleUJpbmRpbmdJbXBsOjpsb2FkKHZvaWQpIHsKKworCWlmIChtcF9rZXlCaW5kaW5nQWJzdHJhY3RUeXBlRWxlbWVudCA9PSBOVUxMKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWRYS01TQ2hpbGROb3RGb3VuZCwKKwkJCSJYS01TVW52ZXJpZmllZEtleUJpbmRpbmdJbXBsOjpsb2FkIC0gY2FsbGVkIG9uIGVtcHR5IERPTSIpOworCX0KKworCVhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbDo6bG9hZCgpOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ3JlYXRlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitET01FbGVtZW50ICogWEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nSW1wbDo6Y3JlYXRlQmxhbmtVbnZlcmlmaWVkS2V5QmluZGluZyh2b2lkKSB7CisKKwlyZXR1cm4gWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGVJbXBsOjoKKwkJCQljcmVhdGVCbGFua0tleUJpbmRpbmdBYnN0cmFjdFR5cGUoWEtNU0NvbnN0YW50czo6c190YWdVbnZlcmlmaWVkS2V5QmluZGluZyk7CisKK30KKwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNVbnZlcmlmaWVkS2V5QmluZGluZ0ltcGwuaHBwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNVbnZlcmlmaWVkS2V5QmluZGluZ0ltcGwuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxN2FlZWMKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nSW1wbC5ocHAKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA0LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8qCisgKiBYU0VDCisgKgorICogWEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nSW1wbCA6PSBJbXBsZW1lbnRhdGlvbiBmb3IgVW52ZXJpZmllZEtleUJpbmRpbmcKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEtNU1VOVkVSSUZJRURLRVlCSU5ESU5HSU1QTF9JTkNMVURFCisjZGVmaW5lIFhLTVNVTlZFUklGSUVES0VZQklORElOR0lNUExfSU5DTFVERQorCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNVbnZlcmlmaWVkS2V5QmluZGluZy5ocHA+CisKKyNpbmNsdWRlICJYS01TS2V5QmluZGluZ0Fic3RyYWN0VHlwZUltcGwuaHBwIgorCitjbGFzcyBYS01TVW52ZXJpZmllZEtleUJpbmRpbmdJbXBsIDogcHVibGljIFhLTVNVbnZlcmlmaWVkS2V5QmluZGluZywgcHVibGljIFhLTVNLZXlCaW5kaW5nQWJzdHJhY3RUeXBlSW1wbCB7CisKK3B1YmxpYzoKKworCVhLTVNVbnZlcmlmaWVkS2V5QmluZGluZ0ltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYKKwkpOworCisJWEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nSW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudiwgCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogbm9kZQorCSk7CisKKwl2aXJ0dWFsIH5YS01TVW52ZXJpZmllZEtleUJpbmRpbmdJbXBsKCkgOworCisJLy8gTG9hZAorCXZvaWQgbG9hZCh2b2lkKTsKKworCS8vIENyZWF0ZQorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICoKKwkJY3JlYXRlQmxhbmtVbnZlcmlmaWVkS2V5QmluZGluZyh2b2lkKTsKKworCS8vIEltcG9ydCBtZXRob2RzIGZyb20gWEtNU0tleUJpbmRpbmdBYnN0cmFjdFR5cGUKKwlYS01TX0tFWUJJTkRJTkdBQlNUUkFDVFlQRV9JTVBMX01FVEhPRFMKKworcHJpdmF0ZToKKworCS8vIFVuaW1wbGVtZW50ZWQKKwlYS01TVW52ZXJpZmllZEtleUJpbmRpbmdJbXBsKHZvaWQpOworCVhLTVNVbnZlcmlmaWVkS2V5QmluZGluZ0ltcGwoY29uc3QgWEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nSW1wbCAmKTsKKwlYS01TVW52ZXJpZmllZEtleUJpbmRpbmdJbXBsICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU1VudmVyaWZpZWRLZXlCaW5kaW5nSW1wbCAmKTsKKworfTsKKworI2VuZGlmIC8qIFhLTVNVTlZFUklGSUVES0VZQklORElOR0lNUExfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNVc2VLZXlXaXRoSW1wbC5jcHAgYi9jL3NyYy94a21zL2ltcGwvWEtNU1VzZUtleVdpdGhJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDExZTZjCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9pbXBsL1hLTVNVc2VLZXlXaXRoSW1wbC5jcHAKQEAgLTAsMCArMSwxOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNVc2VLZXlXaXRoSW1wbCA6PSBJbXBsZW1lbnRhdGlvbiBvZiBVc2VLZXlXaXRoIE1lc3NhZ2VzCisgKgorICogJElkJAorICoKKyAqLworCisvLyBYU0VDIEluY2x1ZGVzCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRW52LmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU0NvbnN0YW50cy5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDRE9NVXRpbHMuaHBwPgorCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD4KKworI2luY2x1ZGUgIlhLTVNVc2VLZXlXaXRoSW1wbC5ocHAiCisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdC9EZXN0cnVjdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWEtNU1VzZUtleVdpdGhJbXBsOjpYS01TVXNlS2V5V2l0aEltcGwoY29uc3QgWFNFQ0VudiAqIGVudikgeworCisJbXBfZW52ID0gZW52OworCW1wX3VzZUtleVdpdGhFbGVtZW50ID0gTlVMTDsKKwltcF9pZGVudGlmaWVyQXR0ciA9IE5VTEw7CisJbXBfYXBwbGljYXRpb25BdHRyID0gTlVMTDsKKworfQorCitYS01TVXNlS2V5V2l0aEltcGw6OlhLTVNVc2VLZXlXaXRoSW1wbChjb25zdCBYU0VDRW52ICogZW52LCBET01FbGVtZW50ICogbm9kZSkgeworCisJbXBfZW52ID0gZW52OworCW1wX3VzZUtleVdpdGhFbGVtZW50ID0gbm9kZTsKKwltcF9pZGVudGlmaWVyQXR0ciA9IE5VTEw7CisJbXBfYXBwbGljYXRpb25BdHRyID0gTlVMTDsKKworfQorCitYS01TVXNlS2V5V2l0aEltcGw6On5YS01TVXNlS2V5V2l0aEltcGwoKXsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIExvYWQKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwordm9pZCBYS01TVXNlS2V5V2l0aEltcGw6OmxvYWQodm9pZCkgeworCisJaWYgKG1wX3VzZUtleVdpdGhFbGVtZW50ID09IE5VTEwpIHsKKworCQkvLyBBdHRlbXB0IHRvIGxvYWQgYW4gZW1wdHkgZWxlbWVudAorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwKKwkJCSJYS01TVXNlS2V5V2l0aDo6bG9hZCAtIGNhbGxlZCBvbiBlbXB0eSBET00iKTsKKworCX0KKworCWlmICghc3RyRXF1YWxzKGdldFhLTVNMb2NhbE5hbWUobXBfdXNlS2V5V2l0aEVsZW1lbnQpLCAKKwkJWEtNU0NvbnN0YW50czo6c190YWdVc2VLZXlXaXRoKSkgeworCQorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwKKwkJCSJYS01TVXNlS2V5V2l0aDo6bG9hZCAtIGNhbGxlZCBpbmNvcnJlY3Qgbm9kZSIpOworCQorCX0KKworCS8vIElkZW50aWZpZXIKKwltcF9pZGVudGlmaWVyQXR0ciA9IAorCQltcF91c2VLZXlXaXRoRWxlbWVudC0+Z2V0QXR0cmlidXRlTm9kZU5TKE5VTEwsIFhLTVNDb25zdGFudHM6OnNfdGFnSWRlbnRpZmllcik7CisJLy8gQXBwbGljYXRpb24KKwltcF9hcHBsaWNhdGlvbkF0dHIgPSAKKwkJbXBfdXNlS2V5V2l0aEVsZW1lbnQtPmdldEF0dHJpYnV0ZU5vZGVOUyhOVUxMLCBYS01TQ29uc3RhbnRzOjpzX3RhZ0FwcGxpY2F0aW9uKTsKKworCS8vIElkZW50aWZpZXIgYW5kIEFwcGxpY2F0aW9uIE1VU1QgYmUgc2V0IGZvciBhIG1lc3NhZ2UgdG8gYmUgT0sKKworCWlmIChtcF9pZGVudGlmaWVyQXR0ciA9PSBOVUxMKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWRYS01TQ2hpbGROb3RGb3VuZCwKKwkJCSJYS01TVXNlS2V5V2l0aDo6bG9hZCAtIElkZW50aWZpZXIgYXR0cmlidXRlIG5vdCBmb3VuZCIpOworCX0KKworCWlmIChtcF9hcHBsaWNhdGlvbkF0dHIgPT0gTlVMTCkgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkWEtNU0NoaWxkTm90Rm91bmQsCisJCQkiWEtNU1VzZUtleVdpdGg6OmxvYWQgLSBBcHBsaWNhdGlvbiBhdHRyaWJ1dGUgbm90IGZvdW5kIik7CisJfQorCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ3JlYXRlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitET01FbGVtZW50ICogWEtNU1VzZUtleVdpdGhJbXBsOjpjcmVhdGVCbGFua1VzZUtleVdpdGgoY29uc3QgWE1MQ2ggKiBhcHBsaWNhdGlvbiwgCisJCQkJCQkJCQkJCQkJICAgY29uc3QgWE1MQ2ggKiBpZGVudGlmaWVyKSB7CisKKwlzYWZlQnVmZmVyIHN0cjsKKwlET01Eb2N1bWVudCAqZG9jID0gbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpOworCWNvbnN0IFhNTENoICogcHJlZml4ID0gbXBfZW52LT5nZXRYS01TTlNQcmVmaXgoKTsKKworCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgWEtNU0NvbnN0YW50czo6c190YWdVc2VLZXlXaXRoKTsKKworCW1wX3VzZUtleVdpdGhFbGVtZW50ID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoWEtNU0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWEtNUywgCisJCQkJCQkJCQkJCQlzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisKKwkvLyBTZXR1cCB0aGUgQXBwbGljYXRpb24gVVJJCisJbXBfdXNlS2V5V2l0aEVsZW1lbnQtPnNldEF0dHJpYnV0ZU5TKE5VTEwsIAorCQlYS01TQ29uc3RhbnRzOjpzX3RhZ0FwcGxpY2F0aW9uLAorCQkJCQkJCWFwcGxpY2F0aW9uKTsKKwltcF9hcHBsaWNhdGlvbkF0dHIgPSAKKwkJbXBfdXNlS2V5V2l0aEVsZW1lbnQtPmdldEF0dHJpYnV0ZU5vZGVOUyhOVUxMLCBYS01TQ29uc3RhbnRzOjpzX3RhZ0FwcGxpY2F0aW9uKTsKKworCS8vIElkZW50aWZpZXIKKwltcF91c2VLZXlXaXRoRWxlbWVudC0+c2V0QXR0cmlidXRlTlMoTlVMTCwgCisJCVhLTVNDb25zdGFudHM6OnNfdGFnSWRlbnRpZmllciwKKwkJCQkJCQlpZGVudGlmaWVyKTsKKwltcF9pZGVudGlmaWVyQXR0ciA9IAorCQltcF91c2VLZXlXaXRoRWxlbWVudC0+Z2V0QXR0cmlidXRlTm9kZU5TKE5VTEwsIFhLTVNDb25zdGFudHM6OnNfdGFnSWRlbnRpZmllcik7CisKKwlyZXR1cm4gbXBfdXNlS2V5V2l0aEVsZW1lbnQ7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBHZXQgbWV0aG9kcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitET01FbGVtZW50ICogWEtNU1VzZUtleVdpdGhJbXBsOjpnZXRFbGVtZW50KHZvaWQpIGNvbnN0IHsKKworCXJldHVybiBtcF91c2VLZXlXaXRoRWxlbWVudDsKKworfQorCitjb25zdCBYTUxDaCAqIFhLTVNVc2VLZXlXaXRoSW1wbDo6Z2V0QXBwbGljYXRpb24odm9pZCkgY29uc3QgeworCisJaWYgKG1wX2FwcGxpY2F0aW9uQXR0ciA9PSBOVUxMKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLAorCQkJIlhLTVNVc2VLZXlXaXRoOjpnZXRBcHBsaWNhdGlvbiAtIGNhbGxlZCBvbiBub24tbG9hZGVkIGNvbnN0cnVjdCIpOworCX0KKworCXJldHVybiBtcF9hcHBsaWNhdGlvbkF0dHItPmdldE5vZGVWYWx1ZSgpOworCit9CisKK2NvbnN0IFhNTENoICogWEtNU1VzZUtleVdpdGhJbXBsOjpnZXRJZGVudGlmaWVyKHZvaWQpIGNvbnN0IHsKKworCWlmIChtcF9pZGVudGlmaWVyQXR0ciA9PSBOVUxMKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLAorCQkJIlhLTVNVc2VLZXlXaXRoOjpnZXRJZGVudGlmaWVyIC0gY2FsbGVkIG9uIG5vbi1sb2FkZWQgY29uc3RydWN0Iik7CisJfQorCisJcmV0dXJuIG1wX2lkZW50aWZpZXJBdHRyLT5nZXROb2RlVmFsdWUoKTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIFNldCBtZXRob2RzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIFhLTVNVc2VLZXlXaXRoSW1wbDo6c2V0QXBwbGljYXRpb24oY29uc3QgWE1MQ2ggKiB1cmkpIHsKKwlpZiAobXBfYXBwbGljYXRpb25BdHRyID09IE5VTEwpIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpYS01TRXJyb3IsCisJCQkiWEtNU1VzZUtleVdpdGg6OnNldEFwcGxpY2F0aW9uIC0gY2FsbGVkIG9uIG5vbi1sb2FkZWQgY29uc3RydWN0Iik7CisJfQorCisJbXBfYXBwbGljYXRpb25BdHRyLT5zZXROb2RlVmFsdWUodXJpKTsKKworfQordm9pZCBYS01TVXNlS2V5V2l0aEltcGw6OnNldElkZW50aWZpZXIoY29uc3QgWE1MQ2ggKiBpZGVudGlmaWVyKSB7CisKKwlpZiAobXBfaWRlbnRpZmllckF0dHIgPT0gTlVMTCkgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwKKwkJCSJYS01TVXNlS2V5V2l0aDo6c2V0SWRlbnRpZmllciAtIGNhbGxlZCBvbiBub24tbG9hZGVkIGNvbnN0cnVjdCIpOworCX0KKworCW1wX2lkZW50aWZpZXJBdHRyLT5zZXROb2RlVmFsdWUoaWRlbnRpZmllcik7CisKK30KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvaW1wbC9YS01TVXNlS2V5V2l0aEltcGwuaHBwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNVc2VLZXlXaXRoSW1wbC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZiMTEyNAotLS0gL2Rldi9udWxsCisrKyBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TVXNlS2V5V2l0aEltcGwuaHBwCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNVc2VLZXlXaXRoSW1wbCA6PSBJbXBsZW1lbnRhdGlvbiBvZiBVc2VLZXlXaXRoIE1lc3NhZ2VzCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhLTVNVU0VLRVlXSVRISU1QTF9JTkNMVURFCisjZGVmaW5lIFhLTVNVU0VLRVlXSVRISU1QTF9JTkNMVURFCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1VzZUtleVdpdGguaHBwPgorCitjbGFzcyBYS01TVXNlS2V5V2l0aEltcGwgOiBwdWJsaWMgWEtNU1VzZUtleVdpdGggeworCitwdWJsaWM6CisKKwlYS01TVXNlS2V5V2l0aEltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYKKwkpOworCisJWEtNU1VzZUtleVdpdGhJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52LCAKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBub2RlCisJKTsKKworCXZpcnR1YWwgflhLTVNVc2VLZXlXaXRoSW1wbCgpIDsKKworCS8vIExvYWQKKwl2b2lkIGxvYWQodm9pZCk7CisKKwkvLyBDcmVhdGUKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqCisJCWNyZWF0ZUJsYW5rVXNlS2V5V2l0aCgKKwkJCWNvbnN0IFhNTENoICogYXBwbGljYXRpb24sICAKKwkJCWNvbnN0IFhNTENoICogaWRlbnRpZmllcik7CisKKworCS8vIEludGVyZmFjZSBtZXRob2RzCisKKwl2aXJ0dWFsIFhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogZ2V0RWxlbWVudCh2b2lkKSBjb25zdDsKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0QXBwbGljYXRpb24odm9pZCkgY29uc3Q7CisJdmlydHVhbCBjb25zdCBYTUxDaCAqIGdldElkZW50aWZpZXIodm9pZCkgY29uc3Q7CisJdmlydHVhbCB2b2lkIHNldEFwcGxpY2F0aW9uKGNvbnN0IFhNTENoICogdXJpKTsKKwl2aXJ0dWFsIHZvaWQgc2V0SWRlbnRpZmllcihjb25zdCBYTUxDaCAqIGlkZW50aWZpZXIpOworCitwcm90ZWN0ZWQ6CisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudAorCQkJCQkqIG1wX3VzZUtleVdpdGhFbGVtZW50OworCWNvbnN0IFhTRUNFbnYJKiBtcF9lbnY7CisKK3ByaXZhdGU6CisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZQorCQkJCQkqIG1wX2FwcGxpY2F0aW9uQXR0cjsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NTm9kZQorCQkJCQkqIG1wX2lkZW50aWZpZXJBdHRyOworCisJLy8gVW5pbXBsZW1lbnRlZAorCVhLTVNVc2VLZXlXaXRoSW1wbChjb25zdCBYS01TVXNlS2V5V2l0aEltcGwgJik7CisJWEtNU1VzZUtleVdpdGhJbXBsICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU1VzZUtleVdpdGhJbXBsICYpOworCit9OworCisjZW5kaWYgLyogWEtNU1VTRUtFWVdJVEhJTVBMX0lOQ0xVREUgKi8KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvaW1wbC9YS01TVmFsaWRhdGVSZXF1ZXN0SW1wbC5jcHAgYi9jL3NyYy94a21zL2ltcGwvWEtNU1ZhbGlkYXRlUmVxdWVzdEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwZmQ1NDYKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU1ZhbGlkYXRlUmVxdWVzdEltcGwuY3BwCkBAIC0wLDAgKzEsMTY0IEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TVmFsaWRhdGVSZXF1ZXN0SW1wbCA6PSBJbXBsZW1lbnRhdGlvbiBvZiBWYWxpZGF0ZVJlcXVlc3QgTWVzc2FnZXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRW52LmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNDb25zdGFudHMuaHBwPgorCisjaW5jbHVkZSAiWEtNU1ZhbGlkYXRlUmVxdWVzdEltcGwuaHBwIgorCisjaW5jbHVkZSA8eGVyY2VzYy9kb20vRE9NLmhwcD4KKworWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfVVNFCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ29uc3RydWN0L0Rlc3RydWN0CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYS01TVmFsaWRhdGVSZXF1ZXN0SW1wbDo6WEtNU1ZhbGlkYXRlUmVxdWVzdEltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYpIDoKK21fcmVxdWVzdChlbnYpLAorbV9tc2cobV9yZXF1ZXN0Lm1fbXNnKSwKK21wX3F1ZXJ5S2V5QmluZGluZ0VsZW1lbnQoTlVMTCksCittcF9xdWVyeUtleUJpbmRpbmcoTlVMTCkgeworCit9CisKK1hLTVNWYWxpZGF0ZVJlcXVlc3RJbXBsOjpYS01TVmFsaWRhdGVSZXF1ZXN0SW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudiwgCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogbm9kZSkgOgorbV9yZXF1ZXN0KGVudiwgbm9kZSksCittX21zZyhtX3JlcXVlc3QubV9tc2cpLAorbXBfcXVlcnlLZXlCaW5kaW5nKE5VTEwpIHsKKworfQorCitYS01TVmFsaWRhdGVSZXF1ZXN0SW1wbDo6flhLTVNWYWxpZGF0ZVJlcXVlc3RJbXBsKCkgeworCisJaWYgKG1wX3F1ZXJ5S2V5QmluZGluZyAhPSBOVUxMKQorCQlkZWxldGUgbXBfcXVlcnlLZXlCaW5kaW5nOworCit9CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBMb2FkIGZyb20gRE9NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBMb2FkIGVsZW1lbnRzCit2b2lkIFhLTVNWYWxpZGF0ZVJlcXVlc3RJbXBsOjpsb2FkKCkgeworCisJaWYgKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50ID09IE5VTEwpIHsKKworCQkvLyBBdHRlbXB0IHRvIGxvYWQgYW4gZW1wdHkgZWxlbWVudAorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwKKwkJCSJYS01TVmFsaWRhdGVSZXF1ZXN0Ojpsb2FkIC0gY2FsbGVkIG9uIGVtcHR5IERPTSIpOworCisJfQorCisJaWYgKCFzdHJFcXVhbHMoZ2V0WEtNU0xvY2FsTmFtZShtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCksIAorCQkJCQkJCQkJWEtNU0NvbnN0YW50czo6c190YWdWYWxpZGF0ZVJlcXVlc3QpKSB7CisJCisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLAorCQkJIlhLTVNWYWxpZGF0ZVJlcXVlc3Q6OmxvYWQgLSBjYWxsZWQgaW5jb3JyZWN0IG5vZGUiKTsKKwkKKwl9CisKKwkvLyBMb2FkIHRoZSBiYXNlIG1lc3NhZ2UKKwltX3JlcXVlc3QubG9hZCgpOworCisJLy8gTm93IGNoZWNrIGZvciBhbnkgUXVlcnlLZXlCaW5kaW5nIGVsZW1lbnRzCisJRE9NRWxlbWVudCAqIHRtcEVsdCA9IGZpbmRGaXJzdEVsZW1lbnRDaGlsZChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCk7CisJd2hpbGUgKHRtcEVsdCAhPSBOVUxMICYmIAorCQkhc3RyRXF1YWxzKGdldFhLTVNMb2NhbE5hbWUodG1wRWx0KSwgWEtNU0NvbnN0YW50czo6c190YWdRdWVyeUtleUJpbmRpbmcpKSAKKwkJdG1wRWx0ID0gZmluZE5leHRFbGVtZW50Q2hpbGQodG1wRWx0KTsKKworCWlmICh0bXBFbHQgIT0gTlVMTCkgeworCisJCVhTRUNuZXcobXBfcXVlcnlLZXlCaW5kaW5nLCBYS01TUXVlcnlLZXlCaW5kaW5nSW1wbChtX21zZy5tcF9lbnYsIHRtcEVsdCkpOworCQltcF9xdWVyeUtleUJpbmRpbmctPmxvYWQoKTsKKwkJbXBfcXVlcnlLZXlCaW5kaW5nRWxlbWVudCA9IHRtcEVsdDsKKworCX0KKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENyZWF0ZSBhIGJsYW5rIG9uZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0RPTUVsZW1lbnQgKiBYS01TVmFsaWRhdGVSZXF1ZXN0SW1wbDo6Y3JlYXRlQmxhbmtWYWxpZGF0ZVJlcXVlc3QoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJY29uc3QgWE1MQ2ggKiBpZCkgeworCisJcmV0dXJuIG1fcmVxdWVzdC5jcmVhdGVCbGFua1JlcXVlc3RBYnN0cmFjdFR5cGUoCisJCVhLTVNDb25zdGFudHM6OnNfdGFnVmFsaWRhdGVSZXF1ZXN0LCBzZXJ2aWNlLCBpZCk7CisvLwlyZXR1cm4gWEtNU1JlcXVlc3RBYnN0cmFjdFR5cGVJbXBsOjpjcmVhdGVCbGFua01lc3NhZ2VBYnN0cmFjdFR5cGUoCisvLwkJTUFLRV9VTklDT0RFX1NUUklORygiVmFsaWRhdGVSZXF1ZXN0IiksIHNlcnZpY2UsIGlkKTsKKworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIEdldCBpbnRlcmZhY2UgbWV0aG9kcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGU6Om1lc3NhZ2VUeXBlIFhLTVNWYWxpZGF0ZVJlcXVlc3RJbXBsOjpnZXRNZXNzYWdlVHlwZSh2b2lkKSB7CisKKwlyZXR1cm4gWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsOjpWYWxpZGF0ZVJlcXVlc3Q7CisKK30KKworCitYS01TUXVlcnlLZXlCaW5kaW5nICogWEtNU1ZhbGlkYXRlUmVxdWVzdEltcGw6OmdldFF1ZXJ5S2V5QmluZGluZyh2b2lkKSB7CisKKwlyZXR1cm4gbXBfcXVlcnlLZXlCaW5kaW5nOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgU2V0dGVyIG1ldGhvZHMKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hLTVNRdWVyeUtleUJpbmRpbmcgKiBYS01TVmFsaWRhdGVSZXF1ZXN0SW1wbDo6YWRkUXVlcnlLZXlCaW5kaW5nKHZvaWQpIHsKKworCWlmIChtcF9xdWVyeUtleUJpbmRpbmcgIT0gTlVMTCkKKwkJcmV0dXJuIG1wX3F1ZXJ5S2V5QmluZGluZzsKKworCisJLy8gT0sgLSBOb3RoaW5nIGV4aXN0cywgc28gd2UgbmVlZCB0byBjcmVhdGUgZnJvbSBzY3JhdGNoCisKKwlYU0VDbmV3KG1wX3F1ZXJ5S2V5QmluZGluZywgWEtNU1F1ZXJ5S2V5QmluZGluZ0ltcGwobV9tc2cubXBfZW52KSk7CisJbXBfcXVlcnlLZXlCaW5kaW5nRWxlbWVudCA9IG1wX3F1ZXJ5S2V5QmluZGluZy0+Y3JlYXRlQmxhbmtRdWVyeUtleUJpbmRpbmcoKTsKKworCWlmIChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudC0+Z2V0Rmlyc3RDaGlsZCgpID09IE5VTEwpIHsKKwkJbV9tc2cubXBfZW52LT5kb1ByZXR0eVByaW50KG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KTsKKwl9CisJbV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQtPmFwcGVuZENoaWxkKG1wX3F1ZXJ5S2V5QmluZGluZ0VsZW1lbnQpOworCW1fbXNnLm1wX2Vudi0+ZG9QcmV0dHlQcmludChtX21zZy5tcF9tZXNzYWdlQWJzdHJhY3RUeXBlRWxlbWVudCk7CisKKwlyZXR1cm4gbXBfcXVlcnlLZXlCaW5kaW5nOworCit9CmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU1ZhbGlkYXRlUmVxdWVzdEltcGwuaHBwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNWYWxpZGF0ZVJlcXVlc3RJbXBsLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDhiNWNmCi0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9pbXBsL1hLTVNWYWxpZGF0ZVJlcXVlc3RJbXBsLmhwcApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TVmFsaWRhdGVSZXF1ZXN0SW1wbCA6PSBJbXBsZW1lbnRhdGlvbiBvZiBWYWxpZGF0ZVJlcXVlc3QgTWVzc2FnZXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpZm5kZWYgWEtNU1ZBTElEQVRFUkVRVUVTVElNUExfSU5DTFVERQorI2RlZmluZSBYS01TVkFMSURBVEVSRVFVRVNUSU1QTF9JTkNMVURFCisKKy8vIFhTRUMgSW5jbHVkZXMKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKyNpbmNsdWRlIDx4c2VjL3hrbXMvWEtNU1ZhbGlkYXRlUmVxdWVzdC5ocHA+CisKKyNpbmNsdWRlICJYS01TUmVxdWVzdEFic3RyYWN0VHlwZUltcGwuaHBwIgorI2luY2x1ZGUgIlhLTVNRdWVyeUtleUJpbmRpbmdJbXBsLmhwcCIKKworY2xhc3MgWEtNU1F1ZXJ5S2V5UmVxdWVzdEltcGw7CisKK2NsYXNzIFhLTVNWYWxpZGF0ZVJlcXVlc3RJbXBsIDogcHVibGljIFhLTVNWYWxpZGF0ZVJlcXVlc3QgeworCitwdWJsaWM6IAorCVhLTVNSZXF1ZXN0QWJzdHJhY3RUeXBlSW1wbCBtX3JlcXVlc3Q7CisJWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsICZtX21zZzsKK3B1YmxpYzoKKworCVhLTVNWYWxpZGF0ZVJlcXVlc3RJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52CisJKTsKKworCVhLTVNWYWxpZGF0ZVJlcXVlc3RJbXBsKAorCQljb25zdCBYU0VDRW52ICogZW52LCAKKwkJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKiBub2RlCisJKTsKKworCXZpcnR1YWwgflhLTVNWYWxpZGF0ZVJlcXVlc3RJbXBsKCk7CisKKwkvLyBMb2FkIGVsZW1lbnRzCisJdm9pZCBsb2FkKCk7CisKKwkvLyBDcmVhdGlvbgorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogCisJCWNyZWF0ZUJsYW5rVmFsaWRhdGVSZXF1ZXN0KAorCQljb25zdCBYTUxDaCAqIHNlcnZpY2UsCisJCWNvbnN0IFhNTENoICogaWQgPSBOVUxMKTsKKworCisJLyogR2V0dGVyIEludGVyZmFjZSBNZXRob2RzICovCisKKwl2aXJ0dWFsIFhLTVNRdWVyeUtleUJpbmRpbmcgKiBnZXRRdWVyeUtleUJpbmRpbmcodm9pZCk7CisKKwkvKiBTZXR0ZXIgaW50ZXJmYWNlIG1ldGhvZHMgKi8KKwl2aXJ0dWFsIFhLTVNRdWVyeUtleUJpbmRpbmcgKiBhZGRRdWVyeUtleUJpbmRpbmcodm9pZCk7CisKKwkvKiBJbXBsZW1lbnRlZCBmcm9tIE1lc3NhZ2VBYnN0cmFjdFR5cGUgKi8KKwl2aXJ0dWFsIG1lc3NhZ2VUeXBlIGdldE1lc3NhZ2VUeXBlKHZvaWQpOworCisJLyogRm9yY2VkIGluaGVyaXRhbmNlIGZyb20gWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsICovCisJWEtNU19NRVNTQUdFQUJTVFJBQ1RZUEVfSU1QTF9NRVRIT0RTCisKKwkvKiBGb3JjZWQgaW5oZXJpdGFuY2UgZnJvbSBSZXF1ZXN0QWJzdHJhY3RUeXBlICovCisJWEtNU19SRVFVRVNUQUJTVFJBQ1RZUEVfSU1QTF9NRVRIT0RTCisKK3ByaXZhdGU6CisKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudAorCQkJCSogbXBfcXVlcnlLZXlCaW5kaW5nRWxlbWVudDsKKwlYS01TUXVlcnlLZXlCaW5kaW5nSW1wbCAqIG1wX3F1ZXJ5S2V5QmluZGluZzsKKworCS8vIFVuaW1wbGVtZW50ZWQKKwlYS01TVmFsaWRhdGVSZXF1ZXN0SW1wbChjb25zdCBYS01TVmFsaWRhdGVSZXF1ZXN0SW1wbCAmKTsKKwlYS01TVmFsaWRhdGVSZXF1ZXN0SW1wbCAmIG9wZXJhdG9yID0gKGNvbnN0IFhLTVNWYWxpZGF0ZVJlcXVlc3RJbXBsICYpOworCit9OworCisjZW5kaWYgLyogWEtNU1ZBTElEQVRFUkVRVUVTVElNUExfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNWYWxpZGF0ZVJlc3VsdEltcGwuY3BwIGIvYy9zcmMveGttcy9pbXBsL1hLTVNWYWxpZGF0ZVJlc3VsdEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5NTg5ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU1ZhbGlkYXRlUmVzdWx0SW1wbC5jcHAKQEAgLTAsMCArMSwxODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNWYWxpZGF0ZVJlc3VsdEltcGwgOj0gSW1wbGVtZW50YXRpb24gb2YgVmFsaWRhdGVSZXN1bHQgTWVzc2FnZXMKKyAqCisgKiAkSWQkCisgKgorICovCisKKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRGVmcy5ocHA+CisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0Vycm9yLmhwcD4KKyNpbmNsdWRlIDx4c2VjL2ZyYW1ld29yay9YU0VDRW52LmhwcD4KKyNpbmNsdWRlIDx4c2VjL3V0aWxzL1hTRUNET01VdGlscy5ocHA+CisjaW5jbHVkZSA8eHNlYy94a21zL1hLTVNDb25zdGFudHMuaHBwPgorCisjaW5jbHVkZSAiWEtNU1ZhbGlkYXRlUmVzdWx0SW1wbC5ocHAiCisjaW5jbHVkZSAiWEtNU0tleUJpbmRpbmdJbXBsLmhwcCIKKworI2luY2x1ZGUgPHhlcmNlc2MvZG9tL0RPTS5ocHA+CisKK1hFUkNFU19DUFBfTkFNRVNQQUNFX1VTRQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgICAgICAgIENvbnN0cnVjdC9EZXN0cnVjdAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWEtNU1ZhbGlkYXRlUmVzdWx0SW1wbDo6WEtNU1ZhbGlkYXRlUmVzdWx0SW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudikgOgorbV9yZXN1bHQoZW52KSwKK21fbXNnKG1fcmVzdWx0Lm1fbXNnKSB7CisKK30KKworWEtNU1ZhbGlkYXRlUmVzdWx0SW1wbDo6WEtNU1ZhbGlkYXRlUmVzdWx0SW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudiwgCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogbm9kZSkgOgorbV9yZXN1bHQoZW52LCBub2RlKSwKK21fbXNnKG1fcmVzdWx0Lm1fbXNnKSB7CisKK30KKworWEtNU1ZhbGlkYXRlUmVzdWx0SW1wbDo6flhLTVNWYWxpZGF0ZVJlc3VsdEltcGwoKSB7CisKKwlYS01TVmFsaWRhdGVSZXN1bHRJbXBsOjpLZXlCaW5kaW5nVmVjdG9yVHlwZTo6aXRlcmF0b3IgaTsKKworCWZvciAoaSA9IG1fa2V5QmluZGluZ0xpc3QuYmVnaW4oKSA7IGkgPCBtX2tleUJpbmRpbmdMaXN0LmVuZCgpOyBpKyspIHsKKworCQlkZWxldGUgKCppKTsKKworCX0KKworfQorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgTG9hZCBmcm9tIERPTQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gTG9hZCBlbGVtZW50cwordm9pZCBYS01TVmFsaWRhdGVSZXN1bHRJbXBsOjpsb2FkKCkgeworCisJaWYgKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50ID09IE5VTEwpIHsKKworCQkvLyBBdHRlbXB0IHRvIGxvYWQgYW4gZW1wdHkgZWxlbWVudAorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwKKwkJCSJYS01TVmFsaWRhdGVSZXN1bHQ6OmxvYWQgLSBjYWxsZWQgb24gZW1wdHkgRE9NIik7CisKKwl9CisKKwlpZiAoIXN0ckVxdWFscyhnZXRYS01TTG9jYWxOYW1lKG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50KSwgCisJCQkJCQkJCQlYS01TQ29uc3RhbnRzOjpzX3RhZ1ZhbGlkYXRlUmVzdWx0KSkgeworCQorCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OlhLTVNFcnJvciwKKwkJCSJYS01TVmFsaWRhdGVSZXN1bHQ6OmxvYWQgLSBjYWxsZWQgaW5jb3JyZWN0IG5vZGUiKTsKKwkKKwl9CisKKwkvLyBHZXQgYW55IFVudmVyaWZpZWRLZXlCaW5kaW5nIGVsZW1lbnRzCisJRE9NTm9kZUxpc3QgKiBubCA9IG1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKAorCQlYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TLAorCQlYS01TQ29uc3RhbnRzOjpzX3RhZ0tleUJpbmRpbmcpOworCisJaWYgKG5sICE9IE5VTEwpIHsKKworCQlYS01TS2V5QmluZGluZ0ltcGwgKiBrYjsKKwkJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBubC0+Z2V0TGVuZ3RoKCkgOyArKyBpKSB7CisKKwkJCVhTRUNuZXcoa2IsIFhLTVNLZXlCaW5kaW5nSW1wbChtX21zZy5tcF9lbnYsIChET01FbGVtZW50ICopIG5sLT5pdGVtKGkpKSk7CisJCQltX2tleUJpbmRpbmdMaXN0LnB1c2hfYmFjayhrYik7CisJCQlrYi0+bG9hZCgpOworCisJCX0KKworCX0KKworCisJLy8gTG9hZCB0aGUgYmFzZSBtZXNzYWdlCisJbV9yZXN1bHQubG9hZCgpOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgQ3JlYXRlIGEgYmxhbmsgb25lCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRE9NRWxlbWVudCAqIFhLTVNWYWxpZGF0ZVJlc3VsdEltcGw6OmNyZWF0ZUJsYW5rVmFsaWRhdGVSZXN1bHQoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJY29uc3QgWE1MQ2ggKiBpZCwKKwkJUmVzdWx0TWFqb3Igcm1haiwKKwkJUmVzdWx0TWlub3Igcm1pbikgeworCisJcmV0dXJuIG1fcmVzdWx0LmNyZWF0ZUJsYW5rUmVzdWx0VHlwZSgKKwkJWEtNU0NvbnN0YW50czo6c190YWdWYWxpZGF0ZVJlc3VsdCwgc2VydmljZSwgaWQsIHJtYWosIHJtaW4pOworCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgICAgICAgR2V0IGludGVyZmFjZSBtZXRob2RzCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYS01TTWVzc2FnZUFic3RyYWN0VHlwZTo6bWVzc2FnZVR5cGUgWEtNU1ZhbGlkYXRlUmVzdWx0SW1wbDo6Z2V0TWVzc2FnZVR5cGUodm9pZCkgeworCisJcmV0dXJuIFhLTVNNZXNzYWdlQWJzdHJhY3RUeXBlSW1wbDo6VmFsaWRhdGVSZXN1bHQ7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBVbnZlcmlmaWVkS2V5QmluZGluZyBoYW5kbGluZworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitpbnQgWEtNU1ZhbGlkYXRlUmVzdWx0SW1wbDo6Z2V0S2V5QmluZGluZ1NpemUodm9pZCkgY29uc3QgeworCisJcmV0dXJuIChpbnQpIG1fa2V5QmluZGluZ0xpc3Quc2l6ZSgpOworCit9CisKK1hLTVNLZXlCaW5kaW5nICogWEtNU1ZhbGlkYXRlUmVzdWx0SW1wbDo6Z2V0S2V5QmluZGluZ0l0ZW0oaW50IGl0ZW0pIGNvbnN0IHsKKworCWlmIChpdGVtIDwgMCB8fCBpdGVtID49IChpbnQpIG1fa2V5QmluZGluZ0xpc3Quc2l6ZSgpKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6WEtNU0Vycm9yLAorCQkJIlhLTVNWYWxpZGF0ZVJlc3VsdDo6Z2V0S2V5QmluZGluZ0l0ZW0gLSBpdGVtIG91dCBvZiByYW5nZSIpOworCX0KKworCXJldHVybiBtX2tleUJpbmRpbmdMaXN0W2l0ZW1dOworCit9CisKK1hLTVNLZXlCaW5kaW5nICogWEtNU1ZhbGlkYXRlUmVzdWx0SW1wbDo6YXBwZW5kS2V5QmluZGluZ0l0ZW0oWEtNU1N0YXR1czo6U3RhdHVzVmFsdWUgc3RhdHVzKSB7CisKKwlYS01TS2V5QmluZGluZ0ltcGwgKiB1OworCisJWFNFQ25ldyh1LCBYS01TS2V5QmluZGluZ0ltcGwobV9tc2cubXBfZW52KSk7CisKKwltX2tleUJpbmRpbmdMaXN0LnB1c2hfYmFjayh1KTsKKworCURPTUVsZW1lbnQgKiBlID0gdS0+Y3JlYXRlQmxhbmtLZXlCaW5kaW5nKHN0YXR1cyk7CisKKwkvLyBBcHBlbmQgdGhlIGVsZW1lbnQKKworCW1fbXNnLm1wX21lc3NhZ2VBYnN0cmFjdFR5cGVFbGVtZW50LT5hcHBlbmRDaGlsZChlKTsKKwltX21zZy5tcF9lbnYtPmRvUHJldHR5UHJpbnQobV9tc2cubXBfbWVzc2FnZUFic3RyYWN0VHlwZUVsZW1lbnQpOworCisJcmV0dXJuIHU7CisKK30KZGlmZiAtLWdpdCBhL2Mvc3JjL3hrbXMvaW1wbC9YS01TVmFsaWRhdGVSZXN1bHRJbXBsLmhwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TVmFsaWRhdGVSZXN1bHRJbXBsLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YThhYTg0Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9pbXBsL1hLTVNWYWxpZGF0ZVJlc3VsdEltcGwuaHBwCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TVmFsaWRhdGVSZXN1bHRJbXBsIDo9IEltcGxlbWVudGF0aW9uIG9mIFZhbGlkYXRlUmVzdWx0IE1lc3NhZ2VzCisgKgorICogJElkJAorICoKKyAqLworCisjaWZuZGVmIFhLTVNWQUxJREFURVJFU1VMVElNUExfSU5DTFVERQorI2RlZmluZSBYS01TVkFMSURBVEVSRVNVTFRJTVBMX0lOQ0xVREUKKworLy8gWFNFQyBJbmNsdWRlcworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TVmFsaWRhdGVSZXN1bHQuaHBwPgorCisjaW5jbHVkZSAiWEtNU1Jlc3VsdFR5cGVJbXBsLmhwcCIKKworI2luY2x1ZGUgPHZlY3Rvcj4KKworY2xhc3MgWEtNU0tleUJpbmRpbmdJbXBsOworCitjbGFzcyBYS01TVmFsaWRhdGVSZXN1bHRJbXBsIDogcHVibGljIFhLTVNWYWxpZGF0ZVJlc3VsdCB7CisKK3B1YmxpYzoKKwlYS01TUmVzdWx0VHlwZUltcGwgbV9yZXN1bHQ7CisJWEtNU01lc3NhZ2VBYnN0cmFjdFR5cGVJbXBsICZtX21zZzsKK3B1YmxpYzoKKworCVhLTVNWYWxpZGF0ZVJlc3VsdEltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYKKwkpOworCisJWEtNU1ZhbGlkYXRlUmVzdWx0SW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudiwgCisJCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogbm9kZQorCSk7CisKKwl2aXJ0dWFsIH5YS01TVmFsaWRhdGVSZXN1bHRJbXBsKCk7CisKKwkvLyBMb2FkIGVsZW1lbnRzCisJdm9pZCBsb2FkKCk7CisKKwkvLyBDcmVhdGlvbgorCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50ICogCisJCWNyZWF0ZUJsYW5rVmFsaWRhdGVSZXN1bHQoCisJCWNvbnN0IFhNTENoICogc2VydmljZSwKKwkJY29uc3QgWE1MQ2ggKiBpZCwKKwkJUmVzdWx0TWFqb3Igcm1haiwKKwkJUmVzdWx0TWlub3Igcm1pbik7CisKKwkvLyBJbnRlcmZhY2UgbWV0aG9kcworCXZpcnR1YWwgaW50IGdldEtleUJpbmRpbmdTaXplKHZvaWQpIGNvbnN0OworCXZpcnR1YWwgWEtNU0tleUJpbmRpbmcgKiBnZXRLZXlCaW5kaW5nSXRlbShpbnQgaXRlbSkgY29uc3Q7CisJdmlydHVhbCBYS01TS2V5QmluZGluZyAqIGFwcGVuZEtleUJpbmRpbmdJdGVtKFhLTVNTdGF0dXM6OlN0YXR1c1ZhbHVlIHN0YXR1cyk7CisKKworCS8qIEltcGxlbWVudGVkIGZyb20gTWVzc2FnZUFic3RyYWN0VHlwZSAqLworCXZpcnR1YWwgbWVzc2FnZVR5cGUgZ2V0TWVzc2FnZVR5cGUodm9pZCk7CisKKwkvKiBGb3JjZWQgaW5oZXJpdGFuY2UgZnJvbSBYS01TTWVzc2FnZUFic3RyYWN0VHlwZUltcGwgKi8KKwlYS01TX01FU1NBR0VBQlNUUkFDVFlQRV9JTVBMX01FVEhPRFMKKworCS8qIEZvcmNlZCBpbmhlcml0YW5jZSBmcm9tIFhLTVNSZXN1bHRUeXBlSW1wbCAqLworCVhLTVNfUkVTVUxUVFlQRV9JTVBMX01FVEhPRFMKKworcHJpdmF0ZToKKworI2lmIGRlZmluZWQoWFNFQ19OT19OQU1FU1BBQ0VTKQorCXR5cGVkZWYgdmVjdG9yPFhLTVNLZXlCaW5kaW5nSW1wbCAqPgkJS2V5QmluZGluZ1ZlY3RvclR5cGU7CisjZWxzZQorCXR5cGVkZWYgc3RkOjp2ZWN0b3I8WEtNU0tleUJpbmRpbmdJbXBsICo+CUtleUJpbmRpbmdWZWN0b3JUeXBlOworI2VuZGlmCisKKwlLZXlCaW5kaW5nVmVjdG9yVHlwZQltX2tleUJpbmRpbmdMaXN0OworCisJLy8gVW5pbXBsZW1lbnRlZAorCVhLTVNWYWxpZGF0ZVJlc3VsdEltcGwoY29uc3QgWEtNU1ZhbGlkYXRlUmVzdWx0SW1wbCAmKTsKKwlYS01TVmFsaWRhdGVSZXN1bHRJbXBsICYgb3BlcmF0b3IgPSAoY29uc3QgWEtNU1ZhbGlkYXRlUmVzdWx0SW1wbCAmKTsKKworfTsKKworI2VuZGlmIC8qIFhLTVNWQUxJREFURVJFU1VMVElNUExfSU5DTFVERSAqLwpkaWZmIC0tZ2l0IGEvYy9zcmMveGttcy9pbXBsL1hLTVNWYWxpZGl0eUludGVydmFsSW1wbC5jcHAgYi9jL3NyYy94a21zL2ltcGwvWEtNU1ZhbGlkaXR5SW50ZXJ2YWxJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDk4YTk5Ci0tLSAvZGV2L251bGwKKysrIGIvYy9zcmMveGttcy9pbXBsL1hLTVNWYWxpZGl0eUludGVydmFsSW1wbC5jcHAKQEAgLTAsMCArMSwyNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNC0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKgorICogWFNFQworICoKKyAqIFhLTVNWYWxpZGl0eUludGVydmFsIDo9IEltcGxlbWVudGF0aW9uIGZvciBWYWxpZGl0eUludGVydmFsIGVsZW1lbnRzCisgKgorICogJElkJAorICoKKyAqLworCisjaW5jbHVkZSA8eHNlYy9mcmFtZXdvcmsvWFNFQ0RlZnMuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFbnYuaHBwPgorI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNFcnJvci5ocHA+CisjaW5jbHVkZSA8eHNlYy91dGlscy9YU0VDRE9NVXRpbHMuaHBwPgorI2luY2x1ZGUgPHhzZWMveGttcy9YS01TQ29uc3RhbnRzLmhwcD4KKworI2luY2x1ZGUgIlhLTVNWYWxpZGl0eUludGVydmFsSW1wbC5ocHAiCisKKyNpbmNsdWRlIDx4ZXJjZXNjL2RvbS9ET00uaHBwPgorCitYRVJDRVNfQ1BQX05BTUVTUEFDRV9VU0UKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDb25zdHJ1Y3QvRGVzdHJ1Y3QKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hLTVNWYWxpZGl0eUludGVydmFsSW1wbDo6WEtNU1ZhbGlkaXR5SW50ZXJ2YWxJbXBsKGNvbnN0IFhTRUNFbnYgKiBlbnYpIDoKK21wX2VudihlbnYpLAorbXBfdmFsaWRpdHlJbnRlcnZhbEVsZW1lbnQoTlVMTCksCittcF9ub3RCZWZvcmVFbGVtZW50KE5VTEwpLAorbXBfbm90T25PckFmdGVyRWxlbWVudChOVUxMKSB7CisKK30KKworCitYS01TVmFsaWRpdHlJbnRlcnZhbEltcGw6OlhLTVNWYWxpZGl0eUludGVydmFsSW1wbChjb25zdCBYU0VDRW52ICogZW52LCBET01FbGVtZW50ICogbm9kZSkgOgorbXBfZW52KGVudiksCittcF92YWxpZGl0eUludGVydmFsRWxlbWVudChub2RlKSwKK21wX25vdEJlZm9yZUVsZW1lbnQoTlVMTCksCittcF9ub3RPbk9yQWZ0ZXJFbGVtZW50KE5VTEwpIHsKKworfQorCitYS01TVmFsaWRpdHlJbnRlcnZhbEltcGw6On5YS01TVmFsaWRpdHlJbnRlcnZhbEltcGwoKSB7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBMb2FkCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIFhLTVNWYWxpZGl0eUludGVydmFsSW1wbDo6bG9hZCh2b2lkKSB7CisKKwlpZiAobXBfdmFsaWRpdHlJbnRlcnZhbEVsZW1lbnQgPT0gTlVMTCkgeworCQl0aHJvdyBYU0VDRXhjZXB0aW9uKFhTRUNFeGNlcHRpb246OkV4cGVjdGVkWEtNU0NoaWxkTm90Rm91bmQsCisJCQkiWEtNU1ZhbGlkaXR5SW50ZXJ2YWxJbXBsOjpsb2FkIC0gY2FsbGVkIG9uIGVtcHR5IERPTSIpOworCX0KKworCisJRE9NRWxlbWVudCAqIHRtcEVsdCA9IGZpbmRGaXJzdEVsZW1lbnRDaGlsZChtcF92YWxpZGl0eUludGVydmFsRWxlbWVudCk7CisKKwlpZiAodG1wRWx0ICE9IE5VTEwgJiYgc3RyRXF1YWxzKGdldFhLTVNMb2NhbE5hbWUodG1wRWx0KSwgCisJCQkJCQkJCQlYS01TQ29uc3RhbnRzOjpzX3RhZ05vdEJlZm9yZSkpIHsKKwkJbXBfbm90QmVmb3JlRWxlbWVudCA9IHRtcEVsdDsKKwkJdG1wRWx0ID0gZmluZE5leHRFbGVtZW50Q2hpbGQodG1wRWx0KTsKKwl9CisKKwlpZiAodG1wRWx0ICE9IE5VTEwgJiYgc3RyRXF1YWxzKGdldFhLTVNMb2NhbE5hbWUodG1wRWx0KSwgCisJCQkJCQkJCQlYS01TQ29uc3RhbnRzOjpzX3RhZ05vdE9uT3JBZnRlcikpIHsKKwkJbXBfbm90T25PckFmdGVyRWxlbWVudCA9IHRtcEVsdDsKKwl9CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBDcmVhdGUKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RPTUVsZW1lbnQgKiBYS01TVmFsaWRpdHlJbnRlcnZhbEltcGw6OmNyZWF0ZUJsYW5rVmFsaWRpdHlJbnRlcnZhbChjb25zdCBYTUxDaCAqIG5vdEJlZm9yZSwgCisJCQkJCQkJCQkJCQkJCQkJICAgY29uc3QgWE1MQ2ggKiBub3RPbk9yQWZ0ZXIpIHsKKworCS8vIEdldCBzb21lIHNldHVwIHZhbHVlcworCXNhZmVCdWZmZXIgc3RyOworCURPTURvY3VtZW50ICpkb2MgPSBtcF9lbnYtPmdldFBhcmVudERvY3VtZW50KCk7CisJY29uc3QgWE1MQ2ggKiBwcmVmaXggPSBtcF9lbnYtPmdldFhLTVNOU1ByZWZpeCgpOworCisJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCBYS01TQ29uc3RhbnRzOjpzX3RhZ1ZhbGlkaXR5SW50ZXJ2YWwpOworCisJbXBfdmFsaWRpdHlJbnRlcnZhbEVsZW1lbnQgPSAKKwkJZG9jLT5jcmVhdGVFbGVtZW50TlMoWEtNU0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWEtNUywgCisJCQkJCQkJCQkJCQlzdHIucmF3WE1MQ2hCdWZmZXIoKSk7CisKKwltcF9lbnYtPmRvUHJldHR5UHJpbnQobXBfdmFsaWRpdHlJbnRlcnZhbEVsZW1lbnQpOworCisJaWYgKG5vdEJlZm9yZSAhPSBOVUxMKSB7CisJCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgWEtNU0NvbnN0YW50czo6c190YWdOb3RCZWZvcmUpOworCQlET01FbGVtZW50ICogZSA9IAorCQkJZG9jLT5jcmVhdGVFbGVtZW50TlMoWEtNU0NvbnN0YW50czo6c191bmljb2RlU3RyVVJJWEtNUywgc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCQltcF92YWxpZGl0eUludGVydmFsRWxlbWVudC0+YXBwZW5kQ2hpbGQoZSk7CisJCWUtPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUobm90QmVmb3JlKSk7CisJCW1wX2Vudi0+ZG9QcmV0dHlQcmludChtcF92YWxpZGl0eUludGVydmFsRWxlbWVudCk7CisJfQorCWlmIChub3RPbk9yQWZ0ZXIgIT0gTlVMTCkgeworCQltYWtlUU5hbWUoc3RyLCBwcmVmaXgsIFhLTVNDb25zdGFudHM6OnNfdGFnTm90T25PckFmdGVyKTsKKwkJRE9NRWxlbWVudCAqIGUgPSAKKwkJCWRvYy0+Y3JlYXRlRWxlbWVudE5TKFhLTVNDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhLTVMsIHN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKwkJbXBfdmFsaWRpdHlJbnRlcnZhbEVsZW1lbnQtPmFwcGVuZENoaWxkKGUpOworCQllLT5hcHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKG5vdE9uT3JBZnRlcikpOworCQltcF9lbnYtPmRvUHJldHR5UHJpbnQobXBfdmFsaWRpdHlJbnRlcnZhbEVsZW1lbnQpOworCX0KKworCXJldHVybiBtcF92YWxpZGl0eUludGVydmFsRWxlbWVudDsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBHZXQgTWV0aG9kcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY29uc3QgWE1MQ2ggKiBYS01TVmFsaWRpdHlJbnRlcnZhbEltcGw6OmdldE5vdEJlZm9yZSh2b2lkKSBjb25zdCB7CisKKwlpZiAobXBfbm90QmVmb3JlRWxlbWVudCA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCURPTU5vZGUgKiB0ID0gZmluZEZpcnN0Q2hpbGRPZlR5cGUobXBfbm90QmVmb3JlRWxlbWVudCwgRE9NTm9kZTo6VEVYVF9OT0RFKTsKKwlpZiAodCA9PSBOVUxMKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWRYS01TQ2hpbGROb3RGb3VuZCwKKwkJCSJYS01TVmFsaWRpdHlJbnRlcnZhbEltcGw6OmdldE5vdEJlZm9yZSAtIGV4cGVjdGVkIFRFWFQgbm9kZSIpOworCX0KKwkKKwlyZXR1cm4gdC0+Z2V0Tm9kZVZhbHVlKCk7CisKK30KKworY29uc3QgWE1MQ2ggKiBYS01TVmFsaWRpdHlJbnRlcnZhbEltcGw6OmdldE5vdE9uT3JBZnRlcih2b2lkKSBjb25zdCB7CisKKwlpZiAobXBfbm90T25PckFmdGVyRWxlbWVudCA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCURPTU5vZGUgKiB0ID0gZmluZEZpcnN0Q2hpbGRPZlR5cGUobXBfbm90T25PckFmdGVyRWxlbWVudCwgRE9NTm9kZTo6VEVYVF9OT0RFKTsKKwlpZiAodCA9PSBOVUxMKSB7CisJCXRocm93IFhTRUNFeGNlcHRpb24oWFNFQ0V4Y2VwdGlvbjo6RXhwZWN0ZWRYS01TQ2hpbGROb3RGb3VuZCwKKwkJCSJYS01TVmFsaWRpdHlJbnRlcnZhbEltcGw6OmdldE5vdE9uT3JBZnRlciAtIGV4cGVjdGVkIFRFWFQgbm9kZSIpOworCX0KKwkKKwlyZXR1cm4gdC0+Z2V0Tm9kZVZhbHVlKCk7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICAgICAgICBTZXQgTWV0aG9kcworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCit2b2lkIFhLTVNWYWxpZGl0eUludGVydmFsSW1wbDo6c2V0Tm90QmVmb3JlKGNvbnN0IFhNTENoICogdmFsKSB7CisKKwlpZiAobXBfbm90QmVmb3JlRWxlbWVudCA9PSBOVUxMKSB7CisJCXNhZmVCdWZmZXIgc3RyOworCQlET01Eb2N1bWVudCAqZG9jID0gbXBfZW52LT5nZXRQYXJlbnREb2N1bWVudCgpOworCQljb25zdCBYTUxDaCAqIHByZWZpeCA9IG1wX2Vudi0+Z2V0WEtNU05TUHJlZml4KCk7CisKKwkJbWFrZVFOYW1lKHN0ciwgcHJlZml4LCBYS01TQ29uc3RhbnRzOjpzX3RhZ05vdEJlZm9yZSk7CisKKwkJbXBfbm90QmVmb3JlRWxlbWVudCA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKFhLTVNDb25zdGFudHM6OnNfdW5pY29kZVN0clVSSVhLTVMsIAorCQkJCQkJCQkJCQkJc3RyLnJhd1hNTENoQnVmZmVyKCkpOworCisJCW1wX25vdEJlZm9yZUVsZW1lbnQtPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUodmFsKSk7CisKKwkJLy8gTm93IGluc2VydCBhcHByb3ByaWF0ZWx5CisKKwkJaWYgKG1wX25vdE9uT3JBZnRlckVsZW1lbnQgIT0gTlVMTCkgeworCQkJbXBfdmFsaWRpdHlJbnRlcnZhbEVsZW1lbnQtPmluc2VydEJlZm9yZShtcF9ub3RCZWZvcmVFbGVtZW50LCBtcF9ub3RPbk9yQWZ0ZXJFbGVtZW50KTsKKwkJCWlmIChtcF9lbnYtPmdldFByZXR0eVByaW50RmxhZygpID09IHRydWUpIHsKKwkJCQltcF92YWxpZGl0eUludGVydmFsRWxlbWVudC0+aW5zZXJ0QmVmb3JlKAorCQkJCQlkb2MtPmNyZWF0ZVRleHROb2RlKERTSUdDb25zdGFudHM6OnNfdW5pY29kZVN0ck5MKSwKKwkJCQkJbXBfbm90T25PckFmdGVyRWxlbWVudCk7CisKKwkJCX0KKwkJfQorCQllbHNlIHsKKwkJCW1wX3ZhbGlkaXR5SW50ZXJ2YWxFbGVtZW50LT5hcHBlbmRDaGlsZChtcF9ub3RCZWZvcmVFbGVtZW50KTsKKwkJCW1wX2Vudi0+ZG9QcmV0dHlQcmludChtcF92YWxpZGl0eUludGVydmFsRWxlbWVudCk7CisJCX0KKworCQlyZXR1cm47CisJfQorCisJRE9NTm9kZSAqIHQgPSBmaW5kRmlyc3RDaGlsZE9mVHlwZShtcF9ub3RCZWZvcmVFbGVtZW50LCBET01Ob2RlOjpURVhUX05PREUpOworCWlmICh0ID09IE5VTEwpIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZFhLTVNDaGlsZE5vdEZvdW5kLAorCQkJIlhLTVNWYWxpZGl0eUludGVydmFsSW1wbDo6Z2V0Tm90QmVmb3JlIC0gZXhwZWN0ZWQgVEVYVCBub2RlIik7CisJfQorCisJdC0+c2V0Tm9kZVZhbHVlKHZhbCk7CisKK30KKwordm9pZCBYS01TVmFsaWRpdHlJbnRlcnZhbEltcGw6OnNldE5vdE9uT3JBZnRlcihjb25zdCBYTUxDaCAqIHZhbCkgeworCisJaWYgKG1wX25vdE9uT3JBZnRlckVsZW1lbnQgPT0gTlVMTCkgeworCQlzYWZlQnVmZmVyIHN0cjsKKwkJRE9NRG9jdW1lbnQgKmRvYyA9IG1wX2Vudi0+Z2V0UGFyZW50RG9jdW1lbnQoKTsKKwkJY29uc3QgWE1MQ2ggKiBwcmVmaXggPSBtcF9lbnYtPmdldFhLTVNOU1ByZWZpeCgpOworCisJCW1ha2VRTmFtZShzdHIsIHByZWZpeCwgWEtNU0NvbnN0YW50czo6c190YWdOb3RPbk9yQWZ0ZXIpOworCisJCW1wX25vdE9uT3JBZnRlckVsZW1lbnQgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhYS01TQ29uc3RhbnRzOjpzX3VuaWNvZGVTdHJVUklYS01TLCAKKwkJCQkJCQkJCQkJCXN0ci5yYXdYTUxDaEJ1ZmZlcigpKTsKKworCQltcF9ub3RPbk9yQWZ0ZXJFbGVtZW50LT5hcHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKHZhbCkpOworCisJCS8vIE5vdyBpbnNlcnQgYXBwcm9wcmlhdGVseQorCisJCW1wX3ZhbGlkaXR5SW50ZXJ2YWxFbGVtZW50LT5hcHBlbmRDaGlsZChtcF9ub3RPbk9yQWZ0ZXJFbGVtZW50KTsKKwkJbXBfZW52LT5kb1ByZXR0eVByaW50KG1wX3ZhbGlkaXR5SW50ZXJ2YWxFbGVtZW50KTsKKworCQlyZXR1cm47CisJfQorCisJRE9NTm9kZSAqIHQgPSBmaW5kRmlyc3RDaGlsZE9mVHlwZShtcF9ub3RPbk9yQWZ0ZXJFbGVtZW50LCBET01Ob2RlOjpURVhUX05PREUpOworCWlmICh0ID09IE5VTEwpIHsKKwkJdGhyb3cgWFNFQ0V4Y2VwdGlvbihYU0VDRXhjZXB0aW9uOjpFeHBlY3RlZFhLTVNDaGlsZE5vdEZvdW5kLAorCQkJIlhLTVNWYWxpZGl0eUludGVydmFsSW1wbDo6Z2V0Tm90T25PckFmdGVyIC0gZXhwZWN0ZWQgVEVYVCBub2RlIik7CisJfQorCisJdC0+c2V0Tm9kZVZhbHVlKHZhbCk7CisKK30KKworCmRpZmYgLS1naXQgYS9jL3NyYy94a21zL2ltcGwvWEtNU1ZhbGlkaXR5SW50ZXJ2YWxJbXBsLmhwcCBiL2Mvc3JjL3hrbXMvaW1wbC9YS01TVmFsaWRpdHlJbnRlcnZhbEltcGwuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4YWIyYzAKLS0tIC9kZXYvbnVsbAorKysgYi9jL3NyYy94a21zL2ltcGwvWEtNU1ZhbGlkaXR5SW50ZXJ2YWxJbXBsLmhwcApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLyoKKyAqIFhTRUMKKyAqCisgKiBYS01TVmFsaWRpdHlJbnRlcnZhbCA6PSBJbXBsZW1lbnRhdGlvbiBmb3IgVmFsaWRpdHlJbnRlcnZhbCBlbGVtZW50cworICoKKyAqICRJZCQKKyAqCisgKi8KKworI2lmbmRlZiBYS01TVkFMSURJVFlJTlRFUlZBTElNUExfSEVBREVSCisjZGVmaW5lIFhLTVNWQUxJRElUWUlOVEVSVkFMSU1QTF9IRUFERVIKKworI2luY2x1ZGUgPHhzZWMvZnJhbWV3b3JrL1hTRUNEZWZzLmhwcD4KKworI2luY2x1ZGUgPHhzZWMveGttcy9YS01TVmFsaWRpdHlJbnRlcnZhbC5ocHA+CisKK2NsYXNzIFhTRUNFbnY7CisKK2NsYXNzIFhLTVNWYWxpZGl0eUludGVydmFsSW1wbCA6IHB1YmxpYyBYS01TVmFsaWRpdHlJbnRlcnZhbCB7CisKK3B1YmxpYzoKKworCS8qIENvbnN0cnVjdG9ycyBhbmQgRGVzdHJ1Y3RvcnMgKi8KKworCVhLTVNWYWxpZGl0eUludGVydmFsSW1wbCgKKwkJY29uc3QgWFNFQ0VudiAqIGVudgorCSk7CisKKwlYS01TVmFsaWRpdHlJbnRlcnZhbEltcGwoCisJCWNvbnN0IFhTRUNFbnYgKiBlbnYsIAorCQlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudCAqIG5vZGUKKwkpOworCisJdmlydHVhbCB+WEtNU1ZhbGlkaXR5SW50ZXJ2YWxJbXBsKCkgOworCisJLy8gTG9hZAorCXZvaWQgbG9hZCgpOworCisJLy8gQ3JlYXRlCisJWEVSQ0VTX0NQUF9OQU1FU1BBQ0VfUVVBTElGSUVSIERPTUVsZW1lbnQgKgorCQljcmVhdGVCbGFua1ZhbGlkaXR5SW50ZXJ2YWwoY29uc3QgWE1MQ2ggKiBub3RCZWZvcmUsIGNvbnN0IFhNTENoICogbm90T25PckFmdGVyKTsKKworCS8vIEdldCBtZXRob2RzCisKKwl2aXJ0dWFsIGNvbnN0IFhNTENoICogZ2V0Tm90QmVmb3JlKHZvaWQpIGNvbnN0OworCXZpcnR1YWwgY29uc3QgWE1MQ2ggKiBnZXROb3RPbk9yQWZ0ZXIodm9pZCkgY29uc3Q7CisKKwkvLyBTZXQKKworCXZpcnR1YWwgdm9pZCBzZXROb3RCZWZvcmUoY29uc3QgWE1MQ2ggKiB2YWwpOworCXZpcnR1YWwgdm9pZCBzZXROb3RPbk9yQWZ0ZXIoY29uc3QgWE1MQ2ggKiB2YWwpOworCitwcml2YXRlOgorCisJY29uc3QgWFNFQ0VudgorCQkJCSogbXBfZW52OworCVhFUkNFU19DUFBfTkFNRVNQQUNFX1FVQUxJRklFUiBET01FbGVtZW50CisJCQkJKiBtcF92YWxpZGl0eUludGVydmFsRWxlbWVudDsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudAorCQkJCSogbXBfbm90QmVmb3JlRWxlbWVudDsKKwlYRVJDRVNfQ1BQX05BTUVTUEFDRV9RVUFMSUZJRVIgRE9NRWxlbWVudAorCQkJCSogbXBfbm90T25PckFmdGVyRWxlbWVudDsKKworCS8vIFVuaW1wbGVtZW50ZWQKKwlYS01TVmFsaWRpdHlJbnRlcnZhbEltcGwodm9pZCk7CisJWEtNU1ZhbGlkaXR5SW50ZXJ2YWxJbXBsKGNvbnN0IFhLTVNWYWxpZGl0eUludGVydmFsSW1wbCAmKTsKKwlYS01TVmFsaWRpdHlJbnRlcnZhbEltcGwgJiBvcGVyYXRvciA9IChjb25zdCBYS01TVmFsaWRpdHlJbnRlcnZhbEltcGwgJik7CisKK307CisKKyNlbmRpZiAvKiBYS01TVkFMSURJVFlJTlRFUlZBTF9JTkNMVURFICovCmRpZmYgLS1naXQgYS9jL3htbC1zZWN1cml0eS1jLnNwZWMgYi9jL3htbC1zZWN1cml0eS1jLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRjMzQ5NQotLS0gL2Rldi9udWxsCisrKyBiL2MveG1sLXNlY3VyaXR5LWMuc3BlYwpAQCAtMCwwICsxLDE0MiBAQAorTmFtZTogICAgICAgICAgIHhtbC1zZWN1cml0eS1jCitWZXJzaW9uOiAgICAgICAgMS42LjAKK1JlbGVhc2U6ICAgICAgICAxCitTdW1tYXJ5OiAgICAgICAgQXBhY2hlIFhNTCBzZWN1cml0eSBDKysgbGlicmFyeQorR3JvdXA6ICAgICAgICAgIFN5c3RlbSBFbnZpcm9ubWVudC9MaWJyYXJpZXMKK0xpY2Vuc2U6ICAgICAgICBBcGFjaGUgU29mdHdhcmUgTGljZW5zZQorVVJMOiAgICAgICAgICAgIGh0dHA6Ly9zYW50dWFyaW8uYXBhY2hlLm9yZy9jLworU291cmNlOiAgICAgICAgICV7bmFtZX0tJXt2ZXJzaW9ufS50YXIuZ3oKK0J1aWxkUm9vdDogICAgICAle190bXBwYXRofS8le25hbWV9LSV7dmVyc2lvbn0tYnVpbGQKKworJWlmIDAlez9zdXNlX3ZlcnNpb259ID4gMTAzMAorQnVpbGRSZXF1aXJlczogIGxpYlhlcmNlcy1jLWRldmVsID49IDIuOAorJXs/X3dpdGhfeGFsYW46QnVpbGRSZXF1aXJlczogWGFsYW4tYy1kZXZlbCA+PSAxLjZ9CislZWxzZQorQnVpbGRSZXF1aXJlczogIGxpYnhlcmNlcy1jLWRldmVsID49IDIuOAorJXs/X3dpdGhfeGFsYW46QnVpbGRSZXF1aXJlczogeGFsYW4tYy1kZXZlbCA+PSAxLjZ9CislZW5kaWYKK0J1aWxkUmVxdWlyZXM6ICBvcGVuc3NsLWRldmVsIGdjYy1jKysgcGtnY29uZmlnCislaWYgIiV7X3ZlbmRvcn0iID09ICJyZWRoYXQiCitCdWlsZFJlcXVpcmVzOiByZWRoYXQtcnBtLWNvbmZpZworJWVuZGlmCisKKyVkZXNjcmlwdGlvbgorVGhlIHhtbC1zZWN1cml0eS1jIGxpYnJhcnkgaXMgYSBDKysgaW1wbGVtZW50YXRpb24gb2YgdGhlIFhNTCBEaWdpdGFsIFNpZ25hdHVyZQorYW5kIEVuY3J5cHRpb24gc3BlY2lmaWNhdGlvbnMuIFRoZSBsaWJyYXJ5IG1ha2VzIHVzZSBvZiB0aGUgQXBhY2hlIFhNTCBwcm9qZWN0J3MKK1hlcmNlcy1DIFhNTCBQYXJzZXIgYW5kIFhhbGFuLUMgWFNMVCBwcm9jZXNzb3IuIFRoZSBsYXR0ZXIgaXMgdXNlZCBmb3IgcHJvY2Vzc2luZworWFBhdGggYW5kIFhTTFQgdHJhbnNmb3Jtcy4KKworJXBhY2thZ2UgLW4geG1sLXNlY3VyaXR5LWMtYmluCitTdW1tYXJ5OiAgICBVdGlsaXRpZXMgZm9yIFhNTCBzZWN1cml0eSBDKysgbGlicmFyeQorR3JvdXA6ICAgICAgRGV2ZWxvcG1lbnQvTGlicmFyaWVzCisKKyVkZXNjcmlwdGlvbiAtbiB4bWwtc2VjdXJpdHktYy1iaW4KK1RoZSB4bWwtc2VjdXJpdHktYyBsaWJyYXJ5IGlzIGEgQysrIGltcGxlbWVudGF0aW9uIG9mIHRoZSBYTUwgRGlnaXRhbCBTaWduYXR1cmUKK2FuZCBFbmNyeXB0aW9uIHNwZWNpZmljYXRpb25zLiBUaGUgbGlicmFyeSBtYWtlcyB1c2Ugb2YgdGhlIEFwYWNoZSBYTUwgcHJvamVjdCdzCitYZXJjZXMtQyBYTUwgUGFyc2VyIGFuZCBYYWxhbi1DIFhTTFQgcHJvY2Vzc29yLiBUaGUgbGF0dGVyIGlzIHVzZWQgZm9yIHByb2Nlc3NpbmcKK1hQYXRoIGFuZCBYU0xUIHRyYW5zZm9ybXMuCisKK1RoaXMgcGFja2FnZSBjb250YWlucyB0aGUgdXRpbGl0eSBwcm9ncmFtcy4KKworJXBhY2thZ2UgLW4gbGlieG1sLXNlY3VyaXR5LWMxNgorU3VtbWFyeTogICAgQXBhY2hlIFhNTCBzZWN1cml0eSBDKysgbGlicmFyeQorR3JvdXA6ICAgICAgRGV2ZWxvcG1lbnQvTGlicmFyaWVzCitQcm92aWRlczogICB4bWwtc2VjdXJpdHktYyA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQorT2Jzb2xldGVzOiAgeG1sLXNlY3VyaXR5LWMgPCAle3ZlcnNpb259LSV7cmVsZWFzZX0KKworJWRlc2NyaXB0aW9uIC1uIGxpYnhtbC1zZWN1cml0eS1jMTYKK1RoZSB4bWwtc2VjdXJpdHktYyBsaWJyYXJ5IGlzIGEgQysrIGltcGxlbWVudGF0aW9uIG9mIHRoZSBYTUwgRGlnaXRhbCBTaWduYXR1cmUKK2FuZCBFbmNyeXB0aW9uIHNwZWNpZmljYXRpb25zLiBUaGUgbGlicmFyeSBtYWtlcyB1c2Ugb2YgdGhlIEFwYWNoZSBYTUwgcHJvamVjdCdzCitYZXJjZXMtQyBYTUwgUGFyc2VyIGFuZCBYYWxhbi1DIFhTTFQgcHJvY2Vzc29yLiBUaGUgbGF0dGVyIGlzIHVzZWQgZm9yIHByb2Nlc3NpbmcKK1hQYXRoIGFuZCBYU0xUIHRyYW5zZm9ybXMuCisKK1RoaXMgcGFja2FnZSBjb250YWlucyBqdXN0IHRoZSBzaGFyZWQgbGlicmFyeS4KKworJXBhY2thZ2UgLW4gbGlieG1sLXNlY3VyaXR5LWMtZGV2ZWwKK1N1bW1hcnk6CURldmVsb3BtZW50IGZpbGVzIGZvciB0aGUgQXBhY2hlIEMrKyBYTUwgc2VjdXJpdHkgbGlicmFyeQorR3JvdXA6CQlEZXZlbG9wbWVudC9MaWJyYXJpZXMKK1JlcXVpcmVzOglsaWJ4bWwtc2VjdXJpdHktYzE2ID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9CitSZXF1aXJlczoJb3BlbnNzbC1kZXZlbAorJWlmIDAlez9zdXNlX3ZlcnNpb259ID4gMTAzMAorUmVxdWlyZXM6CWxpYlhlcmNlcy1jLWRldmVsCislez9fd2l0aF94YWxhbjpSZXF1aXJlczogWGFsYW4tYy1kZXZlbH0KKyVlbHNlCitSZXF1aXJlczoJbGlieGVyY2VzLWMtZGV2ZWwKKyV7P193aXRoX3hhbGFuOlJlcXVpcmVzOiB4YWxhbi1jLWRldmVsfQorJWVuZGlmCitQcm92aWRlczogICB4bWwtc2VjdXJpdHktYy1kZXZlbCA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQorT2Jzb2xldGVzOiAgeG1sLXNlY3VyaXR5LWMtZGV2ZWwgPCAle3ZlcnNpb259LSV7cmVsZWFzZX0KKworJWRlc2NyaXB0aW9uIC1uIGxpYnhtbC1zZWN1cml0eS1jLWRldmVsCitUaGUgeG1sLXNlY3VyaXR5LWMgbGlicmFyeSBpcyBhIEMrKyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgWE1MIERpZ2l0YWwgU2lnbmF0dXJlCithbmQgRW5jcnlwdGlvbiBzcGVjaWZpY2F0aW9ucy4gVGhlIGxpYnJhcnkgbWFrZXMgdXNlIG9mIHRoZSBBcGFjaGUgWE1MIHByb2plY3QncworWGVyY2VzLUMgWE1MIFBhcnNlciBhbmQgWGFsYW4tQyBYU0xUIHByb2Nlc3Nvci4gVGhlIGxhdHRlciBpcyB1c2VkIGZvciBwcm9jZXNzaW5nCitYUGF0aCBhbmQgWFNMVCB0cmFuc2Zvcm1zLgorCitUaGlzIHBhY2thZ2UgaW5jbHVkZXMgZmlsZXMgbmVlZGVkIGZvciBkZXZlbG9wbWVudCB3aXRoIHhtbC1zZWN1cml0eS1jLgorCislcHJlcAorJXNldHVwIC1xCisKKyVidWlsZAorJWNvbmZpZ3VyZSAleyE/X3dpdGhfeGFsYW46IC0td2l0aG91dC14YWxhbn0KKyV7X19tYWtlfQorCislaW5zdGFsbAorJXtfX21ha2V9IGluc3RhbGwgREVTVERJUj0kUlBNX0JVSUxEX1JPT1QKKworJWNsZWFuCisle19fcm19IC1yZiAkUlBNX0JVSUxEX1JPT1QKKworCislaWZub3Mgc29sYXJpczIuOCBzb2xhcmlzMi45IHNvbGFyaXMyLjEwCislcG9zdCAtbiBsaWJ4bWwtc2VjdXJpdHktYzE2IC1wIC9zYmluL2xkY29uZmlnCislZW5kaWYKKworJWlmbm9zIHNvbGFyaXMyLjggc29sYXJpczIuOSBzb2xhcmlzMi4xMAorJXBvc3R1biAtbiBsaWJ4bWwtc2VjdXJpdHktYzE2IC1wIC9zYmluL2xkY29uZmlnCislZW5kaWYKKworJWZpbGVzIC1uIHhtbC1zZWN1cml0eS1jLWJpbgorJWRlZmF0dHIoLSxyb290LHJvb3QsLSkKKyV7X2JpbmRpcn0vKgorCislZmlsZXMgLW4gbGlieG1sLXNlY3VyaXR5LWMxNgorJWRlZmF0dHIoLSxyb290LHJvb3QsLSkKKyV7X2xpYmRpcn0vKi5zby4qCisKKyVmaWxlcyAtbiBsaWJ4bWwtc2VjdXJpdHktYy1kZXZlbAorJWRlZmF0dHIoLSxyb290LHJvb3QsLSkKKyV7X2luY2x1ZGVkaXJ9LyoKKyV7X2xpYmRpcn0vKi5zbworJXtfbGliZGlyfS8qLmEKKyVleGNsdWRlICV7X2xpYmRpcn0vKi5sYQorCislY2hhbmdlbG9nCisqIFdlZCBGZWIgMyAyMDEwIFNjb3R0IENhbnRvciA8Y2FudG9yLjJAb3N1LmVkdT4gMS42LjAtMQorLSB1cGRhdGUgdG8gMS42LjAKKworKiBNb24gRGVjIDI4IDIwMDkgU2NvdHQgQ2FudG9yIDxjYW50b3IuMkBvc3UuZWR1PiAxLjUuMS0yCistIFN5bmMgcGFja2FnZSBuYW1lcyBmb3Igc2lkZSBieSBzaWRlIGluc3RhbGxhdGlvbgorCisqIFdlZCBBdWcgNSAyMDA5ICAgU2NvdHQgQ2FudG9yICA8Y2FudG9yLjJAb3N1LmVkdT4gMS41LjEtMQorLSB1cGRhdGUgdG8gMS41LjEgYW5kIGFkZCBTdVNFIGNvbnZlbnRpb25zCisKKyogU2F0IERlYyA2IDIwMDggICBTY290dCBDYW50b3IgIDxjYW50b3IuMkBvc3UuZWR1PiAxLjUtMQorLSB1cGRhdGUgdG8gMS41CistIGZpeCBYZXJjZXMgZGVwZW5kZW5jeSBuYW1lIG9uIFNVU0UKKworKiBXZWQgQXVnIDE1IDIwMDcgICBTY290dCBDYW50b3IgIDxjYW50b3IuMkBvc3UuZWR1PiAxLjQuMC0xCistIHVwZGF0ZSB0byAxLjQuMAorCisqIE1vbiBKdW4gMTEgMjAwNyAgIFNjb3R0IENhbnRvciAgPGNhbnRvci4yQG9zdS5lZHU+IDEuMy4xLTEKKy0gdXBkYXRlIHRvIDEuMy4xCisKKyogVGh1IE1hciAyMyAyMDA2ICAgSWFuIFlvdW5nICAgICA8aWFuQGlheS5vcmcudWs+IC0gMS4yLjAtMgorLSBwYXRjaCB0byByZW1vdmUgZXh0cmEgcXVhbGlmaWNhdGlvbnMgZm9yIGNvbXBhdCB3aXRoIGcrKyA0LjEKKworKiBTdW4gSnVsIDAzIDIwMDUgICBTY290dCBDYW50b3IgIDxjYW50b3IuMkBvc3UuZWR1PiAtIDEuMi4wLTEKKy0gVXBkYXRlZCB2ZXJzaW9uLgorCisqIE1vbiBPY3QgMTkgMjAwNCAgIERlcmVrIEF0a2lucyAgPGRlcmVrQGlodGZwLmNvbT4gLSAxLjEuMS0xCistIEZpcnN0IFBhY2thZ2UuCmRpZmYgLS1naXQgYS9kYXRhL2F0L2J1ZXJnZXJrYXJ0ZS90ZXN0cmVzcC54bWwgYi9kYXRhL2F0L2J1ZXJnZXJrYXJ0ZS90ZXN0cmVzcC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA0ZDJkNgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvYXQvYnVlcmdlcmthcnRlL3Rlc3RyZXNwLnhtbApAQCAtMCwwICsxLDU0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pjxkc2lnOlNpZ25hdHVyZSBJZD0ic2lnbmF0dXJlLTIwMDcwNDE4MTQyNzEwOTM1LTY1NTUwOTE2NDEzNTM2MjkzNjQiIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjZWNkc2Etc2hhMSIvPjxkc2lnOlJlZmVyZW5jZSBJZD0ic2lnbmVkLWRhdGEtcmVmZXJlbmNlLTAtMjAwNzA0MTgxNDI3MTA5MzUtNjU1NTA5MTY0MTM1MzYyOTM2NCIgVVJJPSIjc2lnbmVkLWRhdGEtb2JqZWN0LTAtMjAwNzA0MTgxNDI3MTA5MzUtNjU1NTA5MTY0MTM1MzYyOTM2NCI+PGRzaWc6VHJhbnNmb3Jtcz48ZHNpZzpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA2L3htbGRzaWctZmlsdGVyMiI+PHhwZjI6WFBhdGggRmlsdGVyPSJpbnRlcnNlY3QiIHhtbG5zOnhwZjI9Imh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDYveG1sZHNpZy1maWx0ZXIyIj4vLypbQElkPSdzaWduZWQtZGF0YS1vYmplY3QtMC0yMDA3MDQxODE0MjcxMDkzNS02NTU1MDkxNjQxMzUzNjI5MzY0J10vbm9kZSgpPC94cGYyOlhQYXRoPjwvZHNpZzpUcmFuc2Zvcm0+PGRzaWc6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2Jhc2U2NCIvPjxkc2lnOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhzbHQtMTk5OTExMTYiPjx4c2w6c3R5bGVzaGVldCB2ZXJzaW9uPSIxLjAiIHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj4KKzwhLS0KKyAgeG1sbnM6Zm49Imh0dHA6Ly93d3cudzMub3JnLzIwMDUvMDIveHBhdGgtZnVuY3Rpb25zIgorICB4bWxuczpkYXRlPSJodHRwOi8vZXhzbHQub3JnL2RhdGVzLWFuZC10aW1lcyIKKyAgeG1sbnM6ZHluPSJodHRwOi8vZXhzbHQub3JnL2R5bmFtaWMiCisgIHhtbG5zOmV4c2w9Imh0dHA6Ly9leHNsdC5vcmcvY29tbW9uIiAgLS0+IAorPHhzbDpvdXRwdXQgbWV0aG9kPSJ4bWwiLz4KKzx4c2w6dGVtcGxhdGUgbWF0Y2g9Ii9vcmcuY2xhenplcy50YXBlc3RyeS5zbC50ZXN0LmRhdGEuVGVzdE9iamVjdCI+CisgPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorIDxoZWFkPjx0aXRsZT5PYmpla3RsaXN0ZTwvdGl0bGU+PHN0eWxlIHR5cGU9InRleHQvY3NzIi8+PC9oZWFkPgorICA8Ym9keT4KKyAgICA8aDI+T2JqZWt0ZTwvaDI+IAorICAgIDx0YWJsZT4KKyAgICAgIDx0cj4KKyAgICAgICAgPHRoPkNvZGU8L3RoPiAKKyAgICAgICAgPHRoPk5hbWU8L3RoPiAKKyAgICAgICAgPHRoPmZyb208L3RoPiAKKyAgICAgICAgPHRoPnRvPC90aD4gCisgICAgICA8L3RyPgorICAgICAgPHRyPgorICAgICAgICA8dGQ+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvZGUiLz48L3RkPgorICAgICAgICA8dGQ+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Im5hbWUiLz48L3RkPgorICAgICAgICA8dGQ+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImZyb21LbSIvPjwvdGQ+CisgICAgICAgIDx0ZD48eHNsOnZhbHVlLW9mIHNlbGVjdD0idG9LbSIvPjwvdGQ+CisgICAgICA8L3RyPgorICA8L3RhYmxlPgorICA8L2JvZHk+CisgIDwvaHRtbD4KKzwveHNsOnRlbXBsYXRlPgorCis8L3hzbDpzdHlsZXNoZWV0PjwvZHNpZzpUcmFuc2Zvcm0+PGRzaWc6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kc2lnOlRyYW5zZm9ybXM+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT5adkJQamxHeUMycjhOem1mQ0xqdlB3STQ3eVE9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PGRzaWc6UmVmZXJlbmNlIElkPSJldHNpLWRhdGEtcmVmZXJlbmNlLTEtMjAwNzA0MTgxNDI3MTA5MzUtNjU1NTA5MTY0MTM1MzYyOTM2NCIgVHlwZT0iaHR0cDovL3VyaS5ldHNpLm9yZy8wMTkwMy92MS4xLjEjU2lnbmVkUHJvcGVydGllcyIgVVJJPSIjeG1sbnMoZXRzaT1odHRwOi8vdXJpLmV0c2kub3JnLzAxOTAzL3YxLjEuMSUyMyklMjB4cG9pbnRlcihpZCgnZXRzaS1kYXRhLW9iamVjdC0xLTIwMDcwNDE4MTQyNzEwOTM1LTY1NTUwOTE2NDEzNTM2MjkzNjQnKS9jaGlsZDo6ZXRzaTpRdWFsaWZ5aW5nUHJvcGVydGllcy9jaGlsZDo6ZXRzaTpTaWduZWRQcm9wZXJ0aWVzKSI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT4zWFRYeE5LRHFQT0djUkRyazJ1MDlOdXdMaFE9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+N29pNGtQSjljbzlqZkRENkhrVk5SS2xvWTEwd2pEaHNoMlU4ejgvV09JY0I5Zk9oa1E3RktUR0VSbUJteXhMdDwvZHNpZzpTaWduYXR1cmVWYWx1ZT48ZHNpZzpLZXlJbmZvPjxkc2lnOlg1MDlEYXRhPjxkc2lnOlg1MDlDZXJ0aWZpY2F0ZT5NSUlFalRDQ0EzV2dBd0lCQWdJREF4Q2hNQTBHQ1NxR1NJYjNEUUVCQlFVQU1JR1hNUXN3Q1FZRFZRUUdFd0pCVkRGSU1FWUdBMVVFCitDZ3cvUVMxVWNuVnpkQ0JIWlhNdUlHWXVJRk5wWTJobGNtaGxhWFJ6YzNsemRHVnRaU0JwYlNCbGJHVnJkSEl1SUVSaGRHVnVkbVZ5CithMlZvY2lCSGJXSklNUjR3SEFZRFZRUUxEQlZoTFhOcFoyNHRVSEpsYldsMWJTMVRhV2N0TURJeEhqQWNCZ05WQkFNTUZXRXRjMmxuCitiaTFRY21WdGFYVnRMVk5wWnkwd01qQWVGdzB3TnpBek1qTXdPREUxTkRWYUZ3MHhNVEF6TWpNd09ERTFORFZhTUd3eEN6QUpCZ05WCitCQVlUQWtGVU1SWXdGQVlEVlFRRERBMVhiMnhtWjJGdVp5QkhiR0Z6TVEwd0N3WURWUVFFREFSSGJHRnpNUkV3RHdZRFZRUXFEQWhYCitiMnhtWjJGdVp6RVZNQk1HQTFVRUJSTU1ORFk1TWpreE1EazRPRFk0TVF3d0NnWURWUVFNREFORWNpNHdTVEFUQmdjcWhrak9QUUlCCitCZ2dxaGtqT1BRTUJBUU15QUFUN2dFUFlxd3ZGSFlnZXY3V0duQmNtZzlSTlNlYVVXazVwTlJHcksrbGdld0NsRGt1eEdoekNCbmdrCitVUFBSdDY2amdnSGxNSUlCNFRBVEJnTlZIU01FRERBS2dBaE4zK0gvUzluSjN6QW5CZ2dyQmdFRkJRY0JBd0VCL3dRWU1CWXdDQVlHCitCQUNPUmdFQk1Bb0dDQ3NHQVFVRkJ3c0JNSHNHQ0NzR0FRVUZCd0VCQkc4d2JUQkNCZ2dyQmdFRkJRY3dBb1kyYUhSMGNEb3ZMM2QzCitkeTVoTFhSeWRYTjBMbUYwTDJObGNuUnpMMkV0YzJsbmJpMVFjbVZ0YVhWdExWTnBaeTB3TW1FdVkzSjBNQ2NHQ0NzR0FRVUZCekFCCitoaHRvZEhSd09pOHZiMk56Y0M1aExYUnlkWE4wTG1GMEwyOWpjM0F3V1FZRFZSMGdCRkl3VURCRUJnWXFLQUFSQVFzd09qQTRCZ2dyCitCZ0VGQlFjQ0FSWXNhSFIwY0RvdkwzZDNkeTVoTFhSeWRYTjBMbUYwTDJSdlkzTXZZM0F2WVMxemFXZHVMVkJ5WlcxcGRXMHdDQVlHCitCQUNMTUFFQk1JR2FCZ05WSFI4RWdaSXdnWTh3Z1l5Z2dZbWdnWWFHZ1lOc1pHRndPaTh2YkdSaGNDNWhMWFJ5ZFhOMExtRjBMMjkxCitQV0V0YzJsbmJpMVFjbVZ0YVhWdExWTnBaeTB3TWl4dlBVRXRWSEoxYzNRc1l6MUJWRDlqWlhKMGFXWnBZMkYwWlhKbGRtOWpZWFJwCitiMjVzYVhOMFAySmhjMlUvYjJKcVpXTjBZMnhoYzNNOVpXbGtRMlZ5ZEdsbWFXTmhkR2x2YmtGMWRHaHZjbWwwZVRBUkJnTlZIUTRFCitDZ1FJUkdsN2ZGTzhyYXd3RGdZRFZSMFBBUUgvQkFRREFnYkFNQWtHQTFVZEV3UUNNQUF3RFFZSktvWklodmNOQVFFRkJRQURnZ0VCCitBQzhDbWpyMFQ4RmszdFE5VmVIbmxpRzdpWUV4Nk55bXJSR05uckVmU3lMeC9kMlV0bGdPRXpwVzZobFpXTy8yVHZPRjdaVVpWQXViCitoYlNEVldKdXJUUmxzV2VNSXdJZkRQNktWVG9vU29yUGFJSzFwOG1nRHFoa1c1dXNHWUcrbjBNQkgxYU1NM1duT3lscDRHNXFoNmJKCitmU3pXTGpjSTJnZlBvcXNEa0N4OXJQTjVzT0VBY3B3SHQvZkExdnFqb3pJMjRqM0sxdHZiYzZaN3cycFlmcUxrL0xaS2kwUXJobVBECitCblJMajZwbmVqOWZ4Q2tIbmRmZDRTMnJBR2RXTTVUNGhlU3E0N1g4TnMvVmZlWkZ2QVhLNmNWNEV0VmpWTmU2ZEJRZkttTEtqSnpvCitEU3IxTzhUL29ZRXh1UVJ1cDc4R09WazkrQ0Y5N29GN2hYdTJXZ0k9PC9kc2lnOlg1MDlDZXJ0aWZpY2F0ZT48L2RzaWc6WDUwOURhdGE+PC9kc2lnOktleUluZm8+PGRzaWc6T2JqZWN0IElkPSJzaWduZWQtZGF0YS1vYmplY3QtMC0yMDA3MDQxODE0MjcxMDkzNS02NTU1MDkxNjQxMzUzNjI5MzY0Ij5QRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YjNKbkxtTnNZWHA2WlhNdWRHRndaWE4wCitjbmt1YzJ3dWRHVnpkQzVrWVhSaExsUmxjM1JQWW1wbFkzUStDaUFnUEdOdlpHVStZMjlrWlRFOEwyTnZaR1UrQ2lBZ1BHNWhiV1UrCitWR1Z6ZERFOEwyNWhiV1UrQ2lBZ1BHWnliMjFMYlQ0ME5DNDBORHd2Wm5KdmJVdHRQZ29nSUR4MGIwdHRQamMzTGpjM1BDOTBiMHR0CitQZ284TDI5eVp5NWpiR0Y2ZW1WekxuUmhjR1Z6ZEhKNUxuTnNMblJsYzNRdVpHRjBZUzVVWlhOMFQySnFaV04wUGc9PTwvZHNpZzpPYmplY3Q+PGRzaWc6T2JqZWN0IElkPSJldHNpLWRhdGEtb2JqZWN0LTEtMjAwNzA0MTgxNDI3MTA5MzUtNjU1NTA5MTY0MTM1MzYyOTM2NCI+PGV0c2k6UXVhbGlmeWluZ1Byb3BlcnRpZXMgVGFyZ2V0PSIjc2lnbmF0dXJlLTIwMDcwNDE4MTQyNzEwOTM1LTY1NTUwOTE2NDEzNTM2MjkzNjQiIHhtbG5zOmV0c2k9Imh0dHA6Ly91cmkuZXRzaS5vcmcvMDE5MDMvdjEuMS4xIyI+PGV0c2k6U2lnbmVkUHJvcGVydGllcz48ZXRzaTpTaWduZWRTaWduYXR1cmVQcm9wZXJ0aWVzPjxldHNpOlNpZ25pbmdUaW1lPjIwMDctMDQtMThUMTQ6Mjc6MDBaPC9ldHNpOlNpZ25pbmdUaW1lPjxldHNpOlNpZ25pbmdDZXJ0aWZpY2F0ZT48ZXRzaTpDZXJ0PjxldHNpOkNlcnREaWdlc3Q+PGV0c2k6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZXRzaTpEaWdlc3RWYWx1ZT5Wb0gxL0tSNlIrRlJzT1RpT083cHRIclZSRFk9PC9ldHNpOkRpZ2VzdFZhbHVlPjwvZXRzaTpDZXJ0RGlnZXN0PjxldHNpOklzc3VlclNlcmlhbD48ZHNpZzpYNTA5SXNzdWVyTmFtZT5DTj1hLXNpZ24tUHJlbWl1bS1TaWctMDIsT1U9YS1zaWduLVByZW1pdW0tU2lnLTAyLE89QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVya2VociBHbWJILEM9QVQ8L2RzaWc6WDUwOUlzc3Vlck5hbWU+PGRzaWc6WDUwOVNlcmlhbE51bWJlcj4yMDA4NjU8L2RzaWc6WDUwOVNlcmlhbE51bWJlcj48L2V0c2k6SXNzdWVyU2VyaWFsPjwvZXRzaTpDZXJ0PjwvZXRzaTpTaWduaW5nQ2VydGlmaWNhdGU+PGV0c2k6U2lnbmF0dXJlUG9saWN5SWRlbnRpZmllcj48ZXRzaTpTaWduYXR1cmVQb2xpY3lJbXBsaWVkLz48L2V0c2k6U2lnbmF0dXJlUG9saWN5SWRlbnRpZmllcj48L2V0c2k6U2lnbmVkU2lnbmF0dXJlUHJvcGVydGllcz48ZXRzaTpTaWduZWREYXRhT2JqZWN0UHJvcGVydGllcz48ZXRzaTpEYXRhT2JqZWN0Rm9ybWF0IE9iamVjdFJlZmVyZW5jZT0iI3NpZ25lZC1kYXRhLXJlZmVyZW5jZS0wLTIwMDcwNDE4MTQyNzEwOTM1LTY1NTUwOTE2NDEzNTM2MjkzNjQiPjxldHNpOk1pbWVUeXBlPmFwcGxpY2F0aW9uL3hodG1sK3htbDwvZXRzaTpNaW1lVHlwZT48L2V0c2k6RGF0YU9iamVjdEZvcm1hdD48L2V0c2k6U2lnbmVkRGF0YU9iamVjdFByb3BlcnRpZXM+PC9ldHNpOlNpZ25lZFByb3BlcnRpZXM+PC9ldHNpOlF1YWxpZnlpbmdQcm9wZXJ0aWVzPjwvZHNpZzpPYmplY3Q+PC9kc2lnOlNpZ25hdHVyZT4KZGlmZiAtLWdpdCBhL2RhdGEvYXQvaWFpay9JWFNJTC5TYW1wbGVTaWduYXR1cmVzLjIwMDExMTE1LnppcCBiL2RhdGEvYXQvaWFpay9JWFNJTC5TYW1wbGVTaWduYXR1cmVzLjIwMDExMTE1LnppcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTE4NTIyCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9hdC9pYWlrL0lYU0lMLlNhbXBsZVNpZ25hdHVyZXMuMjAwMTExMTUuemlwCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvYXQvaWFpay9peHNpbC9jb3JlRmVhdHVyZXMvZGlnZXN0SW5wdXRzL2Fub255bW91c1JlZmVyZW5jZVNpZ25hdHVyZS5maXJzdFJlZmVyZW5jZS50eHQgYi9kYXRhL2F0L2lhaWsvaXhzaWwvY29yZUZlYXR1cmVzL2RpZ2VzdElucHV0cy9hbm9ueW1vdXNSZWZlcmVuY2VTaWduYXR1cmUuZmlyc3RSZWZlcmVuY2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExNDc3ODAKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2F0L2lhaWsvaXhzaWwvY29yZUZlYXR1cmVzL2RpZ2VzdElucHV0cy9hbm9ueW1vdXNSZWZlcmVuY2VTaWduYXR1cmUuZmlyc3RSZWZlcmVuY2UudHh0CkBAIC0wLDAgKzEsMyBAQAorPEFub255bW91cyB4bWxucz0iaHR0cDovL2Fub255bW91cy5jb20iPg0KKyAgVGhpcyBYTUwgZmlsZSBpcyByZWZlcmVuY2VkIHZpYSBhbiBhbm9ueW1vdXMgUmVmZXJlbmNlIGluIHRoZSBYTUwgc2lnbmF0dXJlLg0KKzwvQW5vbnltb3VzPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvYXQvaWFpay9peHNpbC9jb3JlRmVhdHVyZXMvZGlnZXN0SW5wdXRzL21hbmlmZXN0UmVmZXJlbmNlLmZpcnN0UmVmZXJlbmNlLnR4dCBiL2RhdGEvYXQvaWFpay9peHNpbC9jb3JlRmVhdHVyZXMvZGlnZXN0SW5wdXRzL21hbmlmZXN0UmVmZXJlbmNlLmZpcnN0UmVmZXJlbmNlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjYzYjZmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9hdC9pYWlrL2l4c2lsL2NvcmVGZWF0dXJlcy9kaWdlc3RJbnB1dHMvbWFuaWZlc3RSZWZlcmVuY2UuZmlyc3RSZWZlcmVuY2UudHh0CkBAIC0wLDAgKzEgQEAKKzxkc2lnOk1hbmlmZXN0IHhtbG5zPSJodHRwOi8vaWFpay5hdCNFbnZlbG9wZSIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Im1hbmlmZXN0Ij48ZHNpZzpSZWZlcmVuY2UgVVJJPSIiPjxkc2lnOlRyYW5zZm9ybXM+PGRzaWc6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiPjwvZHNpZzpUcmFuc2Zvcm0+PC9kc2lnOlRyYW5zZm9ybXM+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvZHNpZzpEaWdlc3RNZXRob2Q+PGRzaWc6RGlnZXN0VmFsdWU+S1F1b1pzZWliWTNiSXVyVUZieVloTENtOW5ZPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjxkc2lnOlJlZmVyZW5jZSBVUkk9Ii4uL3NhbXBsZXMvc2FtcGxlWE1MRGF0YS54bWwiPjxkc2lnOlRyYW5zZm9ybXM+PGRzaWc6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiPjwvZHNpZzpUcmFuc2Zvcm0+PC9kc2lnOlRyYW5zZm9ybXM+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvZHNpZzpEaWdlc3RNZXRob2Q+PGRzaWc6RGlnZXN0VmFsdWU+b1VxcFErZWtBdm9lQ1JqbE1jMUVYenJGSkpBPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjwvZHNpZzpNYW5pZmVzdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2F0L2lhaWsvaXhzaWwvY29yZUZlYXR1cmVzL2RpZ2VzdElucHV0cy9tYW5pZmVzdFJlZmVyZW5jZS5tYW5pZmVzdC5maXJzdFJlZmVyZW5jZS50eHQgYi9kYXRhL2F0L2lhaWsvaXhzaWwvY29yZUZlYXR1cmVzL2RpZ2VzdElucHV0cy9tYW5pZmVzdFJlZmVyZW5jZS5tYW5pZmVzdC5maXJzdFJlZmVyZW5jZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE4YTg0MQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvYXQvaWFpay9peHNpbC9jb3JlRmVhdHVyZXMvZGlnZXN0SW5wdXRzL21hbmlmZXN0UmVmZXJlbmNlLm1hbmlmZXN0LmZpcnN0UmVmZXJlbmNlLnR4dApAQCAtMCwwICsxLDUgQEAKKzxFbnZlbG9wZSB4bWxucz0iaHR0cDovL2lhaWsuYXQjRW52ZWxvcGUiPg0KKyAgPERhdGFJdGVtIElkPSJEYXRhSXRlbSI+DQorICAgIFNvbWUgRGF0YSBmcm9tIElBSUsNCisgIDwvRGF0YUl0ZW0+DQorPC9FbnZlbG9wZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2F0L2lhaWsvaXhzaWwvY29yZUZlYXR1cmVzL2RpZ2VzdElucHV0cy9tYW5pZmVzdFJlZmVyZW5jZS5tYW5pZmVzdC5zZWNvbmRSZWZlcmVuY2UudHh0IGIvZGF0YS9hdC9pYWlrL2l4c2lsL2NvcmVGZWF0dXJlcy9kaWdlc3RJbnB1dHMvbWFuaWZlc3RSZWZlcmVuY2UubWFuaWZlc3Quc2Vjb25kUmVmZXJlbmNlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDVmMGM1Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9hdC9pYWlrL2l4c2lsL2NvcmVGZWF0dXJlcy9kaWdlc3RJbnB1dHMvbWFuaWZlc3RSZWZlcmVuY2UubWFuaWZlc3Quc2Vjb25kUmVmZXJlbmNlLnR4dApAQCAtMCwwICsxLDMgQEAKKzxTYW1wbGUgeG1sbnM9Imh0dHA6Ly9pYWlrLmF0I1NhbXBsZSI+PERhdGFJdGVtIElkPSJEYXRhSXRlbSI+DQorICAgIFNvbWUgRGF0YSBmcm9tIElBSUsNCisgIDwvRGF0YUl0ZW0+PC9TYW1wbGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9hdC9pYWlrL2l4c2lsL2NvcmVGZWF0dXJlcy9kaWdlc3RJbnB1dHMvc2lnbmF0dXJlVHlwZXNTaWduYXR1cmUuZmlmdGhSZWZlcmVuY2UudHh0IGIvZGF0YS9hdC9pYWlrL2l4c2lsL2NvcmVGZWF0dXJlcy9kaWdlc3RJbnB1dHMvc2lnbmF0dXJlVHlwZXNTaWduYXR1cmUuZmlmdGhSZWZlcmVuY2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwNTQ1ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2F0L2lhaWsvaXhzaWwvY29yZUZlYXR1cmVzL2RpZ2VzdElucHV0cy9zaWduYXR1cmVUeXBlc1NpZ25hdHVyZS5maWZ0aFJlZmVyZW5jZS50eHQKQEAgLTAsMCArMSBAQAorPGRzaWc6T2JqZWN0IHhtbG5zPSJodHRwOi8vaWFpay5hdCNFbnZlbG9wZSIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Im9iamVjdElkIj5BIHRleHQgZnJvbSBJQUlLPC9kc2lnOk9iamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2F0L2lhaWsvaXhzaWwvY29yZUZlYXR1cmVzL2RpZ2VzdElucHV0cy9zaWduYXR1cmVUeXBlc1NpZ25hdHVyZS5mb3VydGhSZWZlcmVuY2UudHh0IGIvZGF0YS9hdC9pYWlrL2l4c2lsL2NvcmVGZWF0dXJlcy9kaWdlc3RJbnB1dHMvc2lnbmF0dXJlVHlwZXNTaWduYXR1cmUuZm91cnRoUmVmZXJlbmNlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWQ0YzcyCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9hdC9pYWlrL2l4c2lsL2NvcmVGZWF0dXJlcy9kaWdlc3RJbnB1dHMvc2lnbmF0dXJlVHlwZXNTaWduYXR1cmUuZm91cnRoUmVmZXJlbmNlLnR4dApAQCAtMCwwICsxLDMgQEAKKzxEYXRhSXRlbSB4bWxucz0iaHR0cDovL2lhaWsuYXQjU2FtcGxlIiBJZD0iRGF0YUl0ZW0iPg0KKyAgICBTb21lIERhdGEgZnJvbSBJQUlLDQorICA8L0RhdGFJdGVtPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvYXQvaWFpay9peHNpbC9jb3JlRmVhdHVyZXMvZGlnZXN0SW5wdXRzL3NpZ25hdHVyZVR5cGVzU2lnbmF0dXJlLnNldmVudGhSZWZlcmVuY2UudHh0IGIvZGF0YS9hdC9pYWlrL2l4c2lsL2NvcmVGZWF0dXJlcy9kaWdlc3RJbnB1dHMvc2lnbmF0dXJlVHlwZXNTaWduYXR1cmUuc2V2ZW50aFJlZmVyZW5jZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE4YTg0MQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvYXQvaWFpay9peHNpbC9jb3JlRmVhdHVyZXMvZGlnZXN0SW5wdXRzL3NpZ25hdHVyZVR5cGVzU2lnbmF0dXJlLnNldmVudGhSZWZlcmVuY2UudHh0CkBAIC0wLDAgKzEsNSBAQAorPEVudmVsb3BlIHhtbG5zPSJodHRwOi8vaWFpay5hdCNFbnZlbG9wZSI+DQorICA8RGF0YUl0ZW0gSWQ9IkRhdGFJdGVtIj4NCisgICAgU29tZSBEYXRhIGZyb20gSUFJSw0KKyAgPC9EYXRhSXRlbT4NCis8L0VudmVsb3BlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvYXQvaWFpay9peHNpbC9jb3JlRmVhdHVyZXMvZGlnZXN0SW5wdXRzL3NpZ25hdHVyZVR5cGVzU2lnbmF0dXJlLnNpeHRoUmVmZXJlbmNlLnR4dCBiL2RhdGEvYXQvaWFpay9peHNpbC9jb3JlRmVhdHVyZXMvZGlnZXN0SW5wdXRzL3NpZ25hdHVyZVR5cGVzU2lnbmF0dXJlLnNpeHRoUmVmZXJlbmNlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDU0NWZkCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9hdC9pYWlrL2l4c2lsL2NvcmVGZWF0dXJlcy9kaWdlc3RJbnB1dHMvc2lnbmF0dXJlVHlwZXNTaWduYXR1cmUuc2l4dGhSZWZlcmVuY2UudHh0CkBAIC0wLDAgKzEgQEAKKzxkc2lnOk9iamVjdCB4bWxucz0iaHR0cDovL2lhaWsuYXQjRW52ZWxvcGUiIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIElkPSJvYmplY3RJZCI+QSB0ZXh0IGZyb20gSUFJSzwvZHNpZzpPYmplY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9hdC9pYWlrL2l4c2lsL2NvcmVGZWF0dXJlcy9kaWdlc3RJbnB1dHMvc2lnbmF0dXJlVHlwZXNTaWduYXR1cmUudGhpcmRSZWZlcmVuY2UudHh0IGIvZGF0YS9hdC9pYWlrL2l4c2lsL2NvcmVGZWF0dXJlcy9kaWdlc3RJbnB1dHMvc2lnbmF0dXJlVHlwZXNTaWduYXR1cmUudGhpcmRSZWZlcmVuY2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzMGFmZjYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2F0L2lhaWsvaXhzaWwvY29yZUZlYXR1cmVzL2RpZ2VzdElucHV0cy9zaWduYXR1cmVUeXBlc1NpZ25hdHVyZS50aGlyZFJlZmVyZW5jZS50eHQKQEAgLTAsMCArMSwzIEBACis8RGF0YUl0ZW0geG1sbnM9Imh0dHA6Ly9pYWlrLmF0I0VudmVsb3BlIiBJZD0iRGF0YUl0ZW0iPg0KKyAgICBTb21lIERhdGEgZnJvbSBJQUlLDQorICA8L0RhdGFJdGVtPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvYXQvaWFpay9peHNpbC9jb3JlRmVhdHVyZXMvc2FtcGxlcy9hbm9ueW1vdXNSZWZlcmVuY2VDb250ZW50LnhtbCBiL2RhdGEvYXQvaWFpay9peHNpbC9jb3JlRmVhdHVyZXMvc2FtcGxlcy9hbm9ueW1vdXNSZWZlcmVuY2VDb250ZW50LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDdmMmFmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9hdC9pYWlrL2l4c2lsL2NvcmVGZWF0dXJlcy9zYW1wbGVzL2Fub255bW91c1JlZmVyZW5jZUNvbnRlbnQueG1sCkBAIC0wLDAgKzEsNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCisNCis8QW5vbnltb3VzIHhtbG5zPSJodHRwOi8vYW5vbnltb3VzLmNvbSI+DQorICBUaGlzIFhNTCBmaWxlIGlzIHJlZmVyZW5jZWQgdmlhIGFuIGFub255bW91cyBSZWZlcmVuY2UgaW4gdGhlIFhNTCBzaWduYXR1cmUuDQorPC9Bbm9ueW1vdXM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9hdC9pYWlrL2l4c2lsL2NvcmVGZWF0dXJlcy9zYW1wbGVzL3NhbXBsZVRleHREYXRhLnR4dCBiL2RhdGEvYXQvaWFpay9peHNpbC9jb3JlRmVhdHVyZXMvc2FtcGxlcy9zYW1wbGVUZXh0RGF0YS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAwNzRmZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvYXQvaWFpay9peHNpbC9jb3JlRmVhdHVyZXMvc2FtcGxlcy9zYW1wbGVUZXh0RGF0YS50eHQKQEAgLTAsMCArMSBAQAorU29tZSB0ZXh0IGZyb20gSUFJSyBpbiBhIGZpbGUuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9hdC9pYWlrL2l4c2lsL2NvcmVGZWF0dXJlcy9zYW1wbGVzL3NhbXBsZVhNTERhdGEueG1sIGIvZGF0YS9hdC9pYWlrL2l4c2lsL2NvcmVGZWF0dXJlcy9zYW1wbGVzL3NhbXBsZVhNTERhdGEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExMDlkZGIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2F0L2lhaWsvaXhzaWwvY29yZUZlYXR1cmVzL3NhbXBsZXMvc2FtcGxlWE1MRGF0YS54bWwKQEAgLTAsMCArMSwxNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCisNCis8IURPQ1RZUEUgU2FtcGxlDQorICBbDQorICAgIDwhRUxFTUVOVCBTYW1wbGUgKERhdGFJdGVtKSA+DQorICAgIDwhRUxFTUVOVCBEYXRhSXRlbSAoI1BDREFUQSkgPg0KKyAgICA8IUFUVExJU1QgRGF0YUl0ZW0gSWQgSUQgI0lNUExJRUQ+DQorICBdDQorPg0KKw0KKzxTYW1wbGUgeG1sbnM9Imh0dHA6Ly9pYWlrLmF0I1NhbXBsZSI+DQorICA8RGF0YUl0ZW0gSWQ9IkRhdGFJdGVtIj4NCisgICAgU29tZSBEYXRhIGZyb20gSUFJSw0KKyAgPC9EYXRhSXRlbT4NCis8L1NhbXBsZT4NCmRpZmYgLS1naXQgYS9kYXRhL2F0L2lhaWsvaXhzaWwvY29yZUZlYXR1cmVzL3NpZ25hdHVyZXMvYW5vbnltb3VzUmVmZXJlbmNlU2lnbmF0dXJlLnhtbCBiL2RhdGEvYXQvaWFpay9peHNpbC9jb3JlRmVhdHVyZXMvc2lnbmF0dXJlcy9hbm9ueW1vdXNSZWZlcmVuY2VTaWduYXR1cmUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NGQ2MzYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2F0L2lhaWsvaXhzaWwvY29yZUZlYXR1cmVzL3NpZ25hdHVyZXMvYW5vbnltb3VzUmVmZXJlbmNlU2lnbmF0dXJlLnhtbApAQCAtMCwwICsxLDYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8ZHNpZzpTaWduYXR1cmUgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzaWc6U2lnbmVkSW5mbz48ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48ZHNpZzpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz48ZHNpZzpSZWZlcmVuY2U+PGRzaWc6VHJhbnNmb3Jtcz48ZHNpZzpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjwvZHNpZzpUcmFuc2Zvcm1zPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+N0hmcDN5VGRLS0J2MGQ3TTBvek54Q3U3Vjk4PTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjwvZHNpZzpTaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlPm1VKzgvajd2RkpHWEc2WHcvVmdWUkljUlFObDVMdG9IVjZsSE5QcXJIWEY2U1pOUXh6ZTZsWHZJdi9NSU5uQWsKK29adlZXejRzTVlvZGRQNndYYWVRSndEUGp6TzFFUU5lMlVuNzNKL25qbXpaRGZJSnFTYWgxU0crelN0ZU1SNm0KK0o2OG5Lem5iUlRkeG5Pa25CbytyWmlyWGlBc1BndWRSUjZOVXlYbitEOEE9PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjxkc2lnOktleUluZm8+PGRzaWc6S2V5VmFsdWU+PGRzaWc6UlNBS2V5VmFsdWU+PGRzaWc6TW9kdWx1cz5zRGE1eXpVdjRJSm1CWTYwR1pDbmtRU0FocEc3dGd4ZXBpNnNqM0RsQ3p4alR0TzVNTnJqSTlzSzNXaGltcE5pCitORG1hZ3pORWp4UDMreDFodXhMMTlHb0l4WmdyNU83RS9GMklJblNBU1ZaVFFzdldabE5hdWhSczBLWkFzeklTCitGY2h2cmloSUxMb1VmNHR6YU9TZTZqZ01FcTZJa08wZFdWcGNGcEFqWFRjPTwvZHNpZzpNb2R1bHVzPjxkc2lnOkV4cG9uZW50PkF3PT08L2RzaWc6RXhwb25lbnQ+PC9kc2lnOlJTQUtleVZhbHVlPjwvZHNpZzpLZXlWYWx1ZT48L2RzaWc6S2V5SW5mbz48L2RzaWc6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvYXQvaWFpay9peHNpbC9jb3JlRmVhdHVyZXMvc2lnbmF0dXJlcy9tYW5pZmVzdFNpZ25hdHVyZS54bWwgYi9kYXRhL2F0L2lhaWsvaXhzaWwvY29yZUZlYXR1cmVzL3NpZ25hdHVyZXMvbWFuaWZlc3RTaWduYXR1cmUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxNmFlMTEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2F0L2lhaWsvaXhzaWwvY29yZUZlYXR1cmVzL3NpZ25hdHVyZXMvbWFuaWZlc3RTaWduYXR1cmUueG1sCkBAIC0wLDAgKzEsMTMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgRW52ZWxvcGUgWworICAgIDwhQVRUTElTVCBEYXRhSXRlbSBJZCBJRCAjSU1QTElFRD4KKyAgXT4KKzxFbnZlbG9wZSB4bWxucz0iaHR0cDovL2lhaWsuYXQjRW52ZWxvcGUiPgorICA8ZHNpZzpTaWduYXR1cmUgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzaWc6U2lnbmVkSW5mbz48ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48ZHNpZzpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz48ZHNpZzpSZWZlcmVuY2UgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI01hbmlmZXN0IiBVUkk9IiNtYW5pZmVzdCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT4xa0Y1YVVlUlRpOUp1bDJRejNEbWJaME9kN0k9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+TTJiRjh3MUlRdmRFZWRRNlNCOXc4emFXYytLRE5pZ295c0J2aU5waWZCNmh0eW1QaG9XKzFOQmJveWdma21BeQorOEdTc09obVE3Z2JwSG9samptMlFQbVptbzhCSXQ3Wkd5N2l6aHd3MVdaaUlReG1xY3pJRWFpUGVCY3Nnc3hEVworU2ZPaDdFdjlZWEZmTEY0VXhKNTlkZlRSM1pUYjlDVnpHZjZDU0c0eFhKaz08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6S2V5SW5mbz48ZHNpZzpLZXlWYWx1ZT48ZHNpZzpSU0FLZXlWYWx1ZT48ZHNpZzpNb2R1bHVzPnNEYTV5elV2NElKbUJZNjBHWkNua1FTQWhwRzd0Z3hlcGk2c2ozRGxDenhqVHRPNU1OcmpJOXNLM1doaW1wTmkKK05EbWFnek5FanhQMyt4MWh1eEwxOUdvSXhaZ3I1TzdFL0YySUluU0FTVlpUUXN2V1psTmF1aFJzMEtaQXN6SVMKK0ZjaHZyaWhJTExvVWY0dHphT1NlNmpnTUVxNklrTzBkV1ZwY0ZwQWpYVGM9PC9kc2lnOk1vZHVsdXM+PGRzaWc6RXhwb25lbnQ+QXc9PTwvZHNpZzpFeHBvbmVudD48L2RzaWc6UlNBS2V5VmFsdWU+PC9kc2lnOktleVZhbHVlPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdD48ZHNpZzpNYW5pZmVzdCBJZD0ibWFuaWZlc3QiPjxkc2lnOlJlZmVyZW5jZSBVUkk9Ii4uL3NhbXBsZXMvc2FtcGxlWE1MRGF0YS54bWwiPjxkc2lnOlRyYW5zZm9ybXM+PGRzaWc6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48L2RzaWc6VHJhbnNmb3Jtcz48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPlVYY3EyT09IK2FNbGE0ZmI1VU9uWXVhWTl1UT08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6TWFuaWZlc3Q+PC9kc2lnOk9iamVjdD48L2RzaWc6U2lnbmF0dXJlPjxEYXRhSXRlbSBJZD0iRGF0YUl0ZW0iPgorICAgIFNvbWUgRGF0YSBmcm9tIElBSUsKKyAgPC9EYXRhSXRlbT4KKzwvRW52ZWxvcGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9hdC9pYWlrL2l4c2lsL2NvcmVGZWF0dXJlcy9zaWduYXR1cmVzL3NpZ25hdHVyZVR5cGVzU2lnbmF0dXJlLnhtbCBiL2RhdGEvYXQvaWFpay9peHNpbC9jb3JlRmVhdHVyZXMvc2lnbmF0dXJlcy9zaWduYXR1cmVUeXBlc1NpZ25hdHVyZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRkMTVhNQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvYXQvaWFpay9peHNpbC9jb3JlRmVhdHVyZXMvc2lnbmF0dXJlcy9zaWduYXR1cmVUeXBlc1NpZ25hdHVyZS54bWwKQEAgLTAsMCArMSwxMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBFbnZlbG9wZSBbCisgICAgPCFBVFRMSVNUIERhdGFJdGVtIElkIElEICNJTVBMSUVEPgorICBdPgorPEVudmVsb3BlIHhtbG5zPSJodHRwOi8vaWFpay5hdCNFbnZlbG9wZSI+CisgIDxkc2lnOlNpZ25hdHVyZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPjxkc2lnOlJlZmVyZW5jZSBVUkk9Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDAvUkVDLXhtbC0yMDAwMTAwNiI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT5OMnNqWnNLcjJXMWt3NlVQN21jV3dyejdUNUk9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PGRzaWc6UmVmZXJlbmNlIFVSST0iLi4vc2FtcGxlcy9zYW1wbGVUZXh0RGF0YS50eHQiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+VnlHQkVha1VqbE91S1Q0V0JJK3REbTB0WWUwPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjxkc2lnOlJlZmVyZW5jZSBVUkk9IiI+PGRzaWc6VHJhbnNmb3Jtcz48ZHNpZzpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PGRzaWc6WFBhdGggeG1sbnM6aWFpaz0iaHR0cDovL2lhaWsuYXQjRW52ZWxvcGUiPmFuY2VzdG9yLW9yLXNlbGY6OmlhaWs6RGF0YUl0ZW08L2RzaWc6WFBhdGg+PC9kc2lnOlRyYW5zZm9ybT48L2RzaWc6VHJhbnNmb3Jtcz48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPjl5TUZMdGt3aVRWTHZRYUNPekU2K280SHJRRT08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48ZHNpZzpSZWZlcmVuY2UgVVJJPSIuLi9zYW1wbGVzL3NhbXBsZVhNTERhdGEueG1sIj48ZHNpZzpUcmFuc2Zvcm1zPjxkc2lnOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48ZHNpZzpYUGF0aCB4bWxuczppYWlrPSJodHRwOi8vaWFpay5hdCNTYW1wbGUiPmFuY2VzdG9yLW9yLXNlbGY6OmlhaWs6RGF0YUl0ZW08L2RzaWc6WFBhdGg+PC9kc2lnOlRyYW5zZm9ybT48L2RzaWc6VHJhbnNmb3Jtcz48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPlJkZU5jK01mWmVZOHVxU0xxOEF0UTZEQnlncz08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48ZHNpZzpSZWZlcmVuY2UgVVJJPSIjb2JqZWN0SWQiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+M3g4dEh0SXlWb2JaTVE3Wm9CSUh5aUZVN0ZrPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjxkc2lnOlJlZmVyZW5jZSBVUkk9IiI+PGRzaWc6VHJhbnNmb3Jtcz48ZHNpZzpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PGRzaWc6WFBhdGggeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+YW5jZXN0b3Itb3Itc2VsZjo6ZHNpZzpPYmplY3Q8L2RzaWc6WFBhdGg+PC9kc2lnOlRyYW5zZm9ybT48L2RzaWc6VHJhbnNmb3Jtcz48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPjN4OHRIdEl5Vm9iWk1RN1pvQklIeWlGVTdGaz08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48ZHNpZzpSZWZlcmVuY2UgVVJJPSIiPjxkc2lnOlRyYW5zZm9ybXM+PGRzaWc6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48L2RzaWc6VHJhbnNmb3Jtcz48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPktRdW9ac2VpYlkzYkl1clVGYnlZaExDbTluWT08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6U2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZT5nQ0FwMHd0K1pJRzMrR21aQTdLS1hmQ0E1ZDVRYmk3R1k1QmhNcHhWQTJCeG1WZTlNNHZtQzJoK2hjQnpDUm1ICit3akF1YUlrUFl4UENhaUQvU1NhNGkyN3VmTU5KYmJ4TWk4QUdXUFJSdGdmT0crL0tRWnJydlVRdHBueFMzYzE2Cis4MUNsY2l2bFRBMXdLVk03eEtKT244bGkvOElsZEpObTFaZ044SlFTOHNrPTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48ZHNpZzpLZXlJbmZvPjxkc2lnOktleVZhbHVlPjxkc2lnOlJTQUtleVZhbHVlPjxkc2lnOk1vZHVsdXM+c0RhNXl6VXY0SUptQlk2MEdaQ25rUVNBaHBHN3RneGVwaTZzajNEbEN6eGpUdE81TU5yakk5c0szV2hpbXBOaQorTkRtYWd6TkVqeFAzK3gxaHV4TDE5R29JeFpncjVPN0UvRjJJSW5TQVNWWlRRc3ZXWmxOYXVoUnMwS1pBc3pJUworRmNodnJpaElMTG9VZjR0emFPU2U2amdNRXE2SWtPMGRXVnBjRnBBalhUYz08L2RzaWc6TW9kdWx1cz48ZHNpZzpFeHBvbmVudD5Bdz09PC9kc2lnOkV4cG9uZW50PjwvZHNpZzpSU0FLZXlWYWx1ZT48L2RzaWc6S2V5VmFsdWU+PC9kc2lnOktleUluZm8+PGRzaWc6T2JqZWN0IElkPSJvYmplY3RJZCI+QSB0ZXh0IGZyb20gSUFJSzwvZHNpZzpPYmplY3Q+PC9kc2lnOlNpZ25hdHVyZT48RGF0YUl0ZW0gSWQ9IkRhdGFJdGVtIj4KKyAgICBTb21lIERhdGEgZnJvbSBJQUlLCisgIDwvRGF0YUl0ZW0+Cis8L0VudmVsb3BlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvYXQvaWFpay9peHNpbC9yZWFkbWUudHh0IGIvZGF0YS9hdC9pYWlrL2l4c2lsL3JlYWRtZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM0ZmVhNQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvYXQvaWFpay9peHNpbC9yZWFkbWUudHh0CkBAIC0wLDAgKzEsMjAxIEBACisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorVGhpcyBmaWxlIGNvbnRhaW5zIGEgZGVzY3JpcHRpb24gb2Ygc2FtcGxlIHNpZ2FudHVyZXMgcHJvZHVjZWQKK3dpdGggdGhlIElBSUsgU2lnbmF0dXJlIExpYnJhcnkgKElYU0lMKS4KKworQXV0aG9yOiBHcmVnb3IgS2FybGluZ2VyCitEYXRlOiAxNS4gMTEuIDIwMDEKK0lYU0lMIEJ1aWxkOiAxMDEwCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitzaWduYXR1cmVBbGdvcml0aG1zL2RTQVNpZ25hdHVyZS54bWwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFNpbXBsZSBzaWduYXR1cmUgdXNpbmcgRFNBIGFzIHNpZ25hdHVyZSBhbGdvcml0aG0uCisgIERTQSBwdWJsaWMga2V5IGlzIGVuY29kZWQgYXMgS2V5VmFsdWUuCisgIAorICBUaGUgaW5wdXQgdXNlZCBmb3IgdGhlIGRpZ2VzdCBjb21wdXRhdGlvbiBjYW4gYmUgZm91bmQgaW4gZmlsZQorICAiLi4vZGlnZXN0SW5wdXRzL2RTQVNpZ25hdHVyZS5maXJzdFJlZmVyZW5jZS50eHQiLgorICAKK3NpZ25hdHVyZUFsZ29yaXRobXMvclNBU2lnbmF0dXJlLnhtbAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgU2ltcGxlIHNpZ25hdHVyZSB1c2luZyBSU0EgYXMgc2lnbmF0dXJlIGFsZ29yaXRobS4KKyAgUlNBIHB1YmxpYyBrZXkgaXMgZW5jb2RlZCBhcyBLZXlWYWx1ZS4KKworICBUaGUgaW5wdXQgdXNlZCBmb3IgdGhlIGRpZ2VzdCBjb21wdXRhdGlvbiBjYW4gYmUgZm91bmQgaW4gZmlsZQorICAiLi4vZGlnZXN0SW5wdXRzL3JTQVNpZ25hdHVyZS5maXJzdFJlZmVyZW5jZS50eHQiLgorICAKK3NpZ25hdHVyZUFsZ29yaXRobXMvaE1BQ1NpZ25hdHVyZS54bWwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBTaW1wbGUgc2lnbmF0dXJlIHVzaW5nIEhNQUMgYXMgYXV0aGVudGljYXRpb24gYWxnb3JpdGhtLgorICBUaGUgc2VjcmV0IGtleSBpcyAic2VjcmV0Ii5nZXRCeXRlcygiQVNDSUkiKS4KKyAgCisgIFRoZSBpbnB1dCB1c2VkIGZvciB0aGUgZGlnZXN0IGNvbXB1dGF0aW9uIGNhbiBiZSBmb3VuZCBpbiBmaWxlCisgICIuLi9kaWdlc3RJbnB1dHMvaE1BQ1NpZ25hdHVyZS5maXJzdFJlZmVyZW5jZS50eHQiLgorCitzaWduYXR1cmVBbGdvcml0aG1zL2hNQUNTaG9ydFNpZ25hdHVyZS54bWwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFNpbXBsZSBzaWduYXR1cmUgdXNpbmcgSE1BQyBhcyBhdXRoZW50aWNhdGlvbiBhbGdvcml0aG0uCisgIEhNQUMgb3V0cHV0IGxlbmd0aCBpcyBsaW1pdGVkIHRvIDQwIGJpdHMuCisgIFRoZSBzZWNyZXQga2V5IGlzICJzZWNyZXQiLmdldEJ5dGVzKCJBU0NJSSIpLgorICAKKyAgVGhlIGlucHV0IHVzZWQgZm9yIHRoZSBkaWdlc3QgY29tcHV0YXRpb24gY2FuIGJlIGZvdW5kIGluIGZpbGUKKyAgIi4uL2RpZ2VzdElucHV0cy9oTUFDU2hvcnRTaWduYXR1cmUuZmlyc3RSZWZlcmVuY2UudHh0Ii4KKworY29yZUZlYXR1cmVzL3NpZ25hdHVyZVR5cGVzU2lnbmF0dXJlLnhtbAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFNpZ25hdHVyZSBjb250YWluaW5nIHNldmVyYWwgUmVmZXJlbmNlcyB0byBkZW1vbnN0cmF0ZQorICBJWFNJTCdzIGFiaWxpdHkgdG8gd29yayB3aXRoIGVudmVsb3BpbmcsIGVudmVsb3BlZCBhbmQKKyAgZGV0YWNoZWQgc2lnbmF0dXJlcy4KKyAgCisgICogVGhlIGZpcnN0IFJlZmVyZW5jZSByZWZlcnMgdG8gYW4gZXh0ZXJuYWwgc291cmNlIAorICAgIChodHRwKSAtIGRldGFjaGVkIHNpZ25hdHVyZS4KKyAgCisgICogVGhlIHNlY29uZCBSZWZlcmVuY2UgcmVmZXJzIHRvIGFuIGV4dGVybmFsIHNvdXJjZQorICAgIChmaWxlIHN5c3RlbSkgLSBkZXRhY2hlZCBzaWduYXR1cmUuIFRoZSBleHRlcm5hbCBmaWxlCisgICAgaXMgIi4uL3NhbXBsZXMvc2FtcGxlVGV4dERhdGEudHh0IgorICAgIAorICAqIFRoZSB0aGlyZCBSZWZlcmVuY2UgcmVmZXJzIHRvIFhNTCBkYXRhIHRoYXQgaXMgYSAKKyAgICBzaWJsaW5nIG9mIHRoZSBYTUwgU2lnbmF0dXJlLCBidXQgd2l0aGluIHRoZSBzYW1lCisgICAgZG9jdW1lbnQgLSBkZXRhY2hlZCBzaWduYXR1cmUKKyAgICAKKyAgICBUaGUgaW5wdXQgdXNlZCBmb3IgdGhlIGRpZ2VzdCBjb21wdXRhdGlvbiBjYW4gYmUgZm91bmQgaW4gZmlsZQorICAgICIuLi9kaWdlc3RJbnB1dHMvc2lnbmF0dXJlVHlwZXNTaWduYXR1cmUudGhpcmRSZWZlcmVuY2UudHh0Ii4KKyAgICAKKyAgKiBUaGUgZm91cnRoIFJlZmVyZW5jZSByZWZlcnMgdG8gYW4gZXh0ZXJuYWwgWE1MIGZpbGUKKyAgICBhbmQgdXNlcyBhbiBYUGF0aCB0cmFuc2Zvcm0gdG8gc2VsZWN0IHBhcnRzIG9mIHRoZQorICAgIGRvY3VtZW50IGZvciBzaWduaW5nIC0gZGV0YWNoZWQgc2lnbmF0dXJlLiBUaGUgZXh0ZXJuYWwKKyAgICBmaWxlIGlzICIuLi9zYW1wbGVzL3NhbXBsZVhNTERhdGEueG1sIgorICAgIAorICAgIFRoZSBpbnB1dCB1c2VkIGZvciB0aGUgZGlnZXN0IGNvbXB1dGF0aW9uIGNhbiBiZSBmb3VuZCBpbiBmaWxlCisgICAgIi4uL2RpZ2VzdElucHV0cy9zaWduYXR1cmVUeXBlc1NpZ25hdHVyZS5mb3VydGhSZWZlcmVuY2UudHh0Ii4KKyAgICAKKyAgKiBUaGUgZmlmdGggUmVmZXJlbmNlIHJlZmVycyB0byBkYXRhIGluIGFuIE9iamVjdCBvZiB0aGUKKyAgICBzaWduYXR1cmUgdmlhIGFuIElEIHJlZmVyZW5jZSAtIGVudmVsb3Bpbmcgc2lnbmF0dXJlLgorICAgIAorICAgIFRoZSBpbnB1dCB1c2VkIGZvciB0aGUgZGlnZXN0IGNvbXB1dGF0aW9uIGNhbiBiZSBmb3VuZCBpbiBmaWxlCisgICAgIi4uL2RpZ2VzdElucHV0cy9zaWduYXR1cmVUeXBlc1NpZ25hdHVyZS5maWZ0aFJlZmVyZW5jZS50eHQiLgorICAgIAorICAqIFRoZSBzaXh0aCBSZWZlcmVuY2UgcmVmZXJzIHRvIGRhdGEgaW4gYW4gT2JqZWN0IG9mIHRoZQorICAgIHNpZ25hdHVyZSB2aWEgYW4gZW1wdHkgVVJJIChVUkk9IiIpIGFuZCB1c2luZyBhbiBYUGF0aAorICAgIHRyYW5zZm9ybSB0byBzZWxlY3QgdGhlIGRhdGEgZm9yIHNpZ25pbmcgLSBlbnZlbG9waW5nCisgICAgc2lnbmF0dXJlLgorICAgIAorICAgIFRoZSBpbnB1dCB1c2VkIGZvciB0aGUgZGlnZXN0IGNvbXB1dGF0aW9uIGNhbiBiZSBmb3VuZCBpbiBmaWxlCisgICAgIi4uL2RpZ2VzdElucHV0cy9zaWduYXR1cmVUeXBlc1NpZ25hdHVyZS5zaXh0aFJlZmVyZW5jZS50eHQiLgorICAgIAorICAqIFRoZSBzZXZlbnRoIFJlZmVyZW5jZSByZWZlcnMgdG8gdGhlIHNpZ25hdHVyZSBkb2N1bWVudAorICAgIGl0c2VsZiAoVVJJPSIiKSBhbmQgdXNlcyBhbiBlbnZlbG9wZWQgc2lnbmF0dXJlCisgICAgdHJhbnNmb3JtIC0gZW52ZWxvcGVkIHNpZ25hdHVyZQorICAKKyAgICBUaGUgaW5wdXQgdXNlZCBmb3IgdGhlIGRpZ2VzdCBjb21wdXRhdGlvbiBjYW4gYmUgZm91bmQgaW4gZmlsZQorICAgICIuLi9kaWdlc3RJbnB1dHMvc2lnbmF0dXJlVHlwZXNTaWduYXR1cmUuc2V2ZW50aFJlZmVyZW5jZS50eHQiLgorICAgIAorY29yZUZlYXR1cmVzL21hbmlmZXN0U2lnbmF0dXJlLnhtbAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFNpZ25hdHVyZSBjb250YWluaW5nIGEgUmVmZXJlbmNlIHRvIGEgTWFuaWZlc3QgZWxlbWVudCB0aGF0CisgIGlzIHN0b3JlZCBpbiBhbiBPYmplY3QgY29udGFpbmVyIHdpdGhpbiB0aGUgU2lnbmF0dXJlLgorICAKKyAgVGhlIGlucHV0IHVzZWQgZm9yIHRoZSBkaWdlc3QgY29tcHV0YXRpb24gY2FuIGJlIGZvdW5kIGluIGZpbGUKKyAgIi4uL2RpZ2VzdElucHV0cy9tYW5pZmVzdFNpZ25hdHVyZS5maXJzdFJlZmVyZW5jZS50eHQiLgorCisgICogVGhlIGZpcnN0IFJlZmVyZW5jZSBpbiB0aGUgTWFuaWZlc3QgcmVmZXJzIHRvIHRoZSB3aG9sZQorICAgIHNpZ25hdHVyZSBkb2N1bWVudCBhbmQgdXNlcyBhbiBlbnZlbG9wZWQgc2lnbmF0dXJlIHRyYW5zLQorICAgIGZvcm0gdG8gY3V0IG91dCB0aGUgU2lnbmF0dXJlIGVsZW1lbnQuCisgICAgCisgICAgVGhlIGlucHV0IHVzZWQgZm9yIHRoZSBkaWdlc3QgY29tcHV0YXRpb24gY2FuIGJlIGZvdW5kIGluIGZpbGUKKyAgICAiLi4vZGlnZXN0SW5wdXRzL21hbmlmZXN0U2lnbmF0dXJlLm1hbmlmZXN0LmZpcnN0UmVmZXJlbmNlLnR4dCIuCisKKyAgKiBUaGUgc2Vjb25kIFJlZmVyZW5jZSBpbiB0aGUgTWFuaWZlc3QgcmVmZXJzIGFuIGV4dGVybmFsCisgICAgcmVzb3VyY2UgKGZpbGUgc3lzdGVtKS4gVGhlIGV4dGVybmFsIGZpbGUgaXMKKyAgICAiLi4vc2FtcGxlcy9zYW1wbGVYTUxEYXRhLnhtbCIuCisgICAgCisgICAgVGhlIGlucHV0IHVzZWQgZm9yIHRoZSBkaWdlc3QgY29tcHV0YXRpb24gY2FuIGJlIGZvdW5kIGluIGZpbGUKKyAgICAiLi4vZGlnZXN0SW5wdXRzL21hbmlmZXN0U2lnbmF0dXJlLm1hbmlmZXN0LnNlY29uZFJlZmVyZW5jZS50eHQiLgorCitjb3JlRmVhdHVyZXMvYW5vbnltb3VzUmVmZXJlbmNlU2lnbmF0dXJlLnhtbAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBTaWduYXR1cmUgY29udGFpbmluZyBhbiBhbm9ueW1vdXMgUmVmZXJlbmNlLCBpLmUuIHRoZSBVUkkKKyAgYXR0cmlidXRlIG9mIHRoZSBSZWZlcmVuY2UgaXMgbWlzc2luZy4gSW4gc3VjaCBhIGNhc2UsIHRoZQorICBhcHBsaWNhdGlvbiBtdXN0IHByb3ZpZGUgdGhlIGhpbnQgd2hlcmUgdG8gZmluZCB0aGUgY29ycmVzLQorICBwb25kaW5nIGRhdGEuIEluIHRoaXMgY2FzZSwgdGhlIGRhdGEgY2FuIGJlIGZvdW5kIGluIGZpbGUKKyAgIi4uL3NhbXBsZXMvYW5vbnltb3VzUmVmZXJlbmNlQ29udGVudC54bWwiLgorICAKKyAgVGhlIGlucHV0IHVzZWQgZm9yIHRoZSBkaWdlc3QgY29tcHV0YXRpb24gY2FuIGJlIGZvdW5kIGluIGZpbGUKKyAgIi4uL2RpZ2VzdElucHV0cy9hbm9ueW1vdXNSZWZlcmVuY2VTaWduYXR1cmUuZmlyc3RSZWZlcmVuY2UudHh0Ii4KKwordHJhbnNmb3Jtcy9iYXNlNjREZWNvZGVTaWduYXR1cmUueG1sCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBTaWduYXR1cmUgY29udGFpbmluZyBhIFJlZmVyZW5jZSB0byBhIGJhc2U2NCBlbmNvZGVkIGZpbGUuCisgIFRoZSBSZWZlcmVuY2UgY29udGFpbnMgYSBCYXNlNjQgdHJhbnNmb3JtLCBpLmUuIHRoZSBmaWxlCisgIHdpbGwgYmUgZGVjb2RlZCBwcmlvciB0byBkaWdlc3QgY29tcHV0YXRpb24uIFRoZSBlbmNvZGVkCisgIGZpbGUgaXMgIi4uL3NhbXBsZXMvc2FtcGxlQmFzZTY0RW5jb2RlZERhdGEudHh0Ii4KKyAgCisgIFRoZSBpbnB1dCB1c2VkIGZvciB0aGUgZGlnZXN0IGNvbXB1dGF0aW9uIGNhbiBiZSBmb3VuZCBpbiBmaWxlCisgICIuLi9kaWdlc3RJbnB1dHMvYmFzZTY0U2lnbmF0dXJlLmZpcnN0UmVmZXJlbmNlLnR4dCIuCisKK3RyYW5zZm9ybXMvYzE0blNpZ25hdHVyZS54bWwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBTaWduYXR1cmUgY29udGFpbmluZyB0d28gUmVmZXJlbmNlcyB0byBhbiBYTUwgZmlsZS4gVGhlIAorICBYTUwgZmlsZSBpcyAiLi4vc2FtcGxlcy9zYW1wbGVYTUxEYXRhLnhtbCIuCisgIAorICAqIFRoZSBmaXJzdCBSZWZlcmVuY2UgY29udGFpbnMgYSBjYW5vbmljYWwgWE1MIHRyYW5zZm9ybSwKKyAgICB0aGF0IGlzLCBjb21tZW50cyBpbiB0aGUgWE1MIGZpbGUgd2lsbCBiZSByZW1vdmVkIGF0CisgICAgdHJhbnNmb3JtYXRpb24uCisgICAgCisgICAgVGhlIGlucHV0IHVzZWQgZm9yIHRoZSBkaWdlc3QgY29tcHV0YXRpb24gY2FuIGJlIGZvdW5kIGluIGZpbGUKKyAgICAiLi4vZGlnZXN0SW5wdXRzL2MxNG5TaWduYXR1cmUuZmlyc3RSZWZlcmVuY2UudHh0Ii4KKworICAqIFRoZSBzZWNvbmQgUmVmZXJlbmNlIGNvbnRhaW5zIGEgY2Fub25pY2FsIFhNTCB0cmFuc2Zvcm0KKyAgICB3aXRoIGNvbW1lbnRzLCB0aGF0IGlzLCBjb21tZW50cyBpbiB0aGUgWE1MIGZpbGUgd2lsbCBiZQorICAgIHByZXNlcnZlZCBhdCB0cmFuc2Zvcm1hdGlvbi4KKyAgICAKKyAgICBUaGUgaW5wdXQgdXNlZCBmb3IgdGhlIGRpZ2VzdCBjb21wdXRhdGlvbiBjYW4gYmUgZm91bmQgaW4gZmlsZQorICAgICIuLi9kaWdlc3RJbnB1dHMvYzE0blNpZ25hdHVyZS5zZWNvbmRSZWZlcmVuY2UudHh0Ii4KKwordHJhbnNmb3Jtcy9lbnZlbG9wZWRTaWduYXR1cmVTaWduYXR1cmUueG1sCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBTaWduYXR1cmUgY29udGFpbmluZyBhIHNpbmdsZSBSZWZlcmVuY2UgdG8gdGhlIHNpZ25hdHVyZSAKKyAgZmlsZSBpdHNlbGYgKFVSST0iIikuIFRoZSBSZWZlcmVuY2UgY29udGFpbnMgYW4gZW52ZWxvcGVkCisgIHNpZ25hdHVyZSB0cmFuc2Zvcm0gdG8gY3V0IG91dCB0aGUgU2lnbmF0dXJlIHN0cnVjdHVyZQorICBmcm9tIHRoZSBYTUwuCisgIAorICBUaGUgaW5wdXQgdXNlZCBmb3IgdGhlIGRpZ2VzdCBjb21wdXRhdGlvbiBjYW4gYmUgZm91bmQgaW4gZmlsZQorICAiLi4vZGlnZXN0SW5wdXRzL2VudmVsb3BlZFNpZ25hdHVyZVNpZ25hdHVyZS5maXJzdFJlZmVyZW5jZS50eHQiLgorCit0cmFuc2Zvcm1zL3hQYXRoU2lnbmF0dXJlLnhtbAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBTaWduYXR1cmUgY29udGFpbmluZyB0aHJlZSBpbnRlcm5hbCBSZWZlcmVuY2VzIHRvIGRlbW9uc3RyYXRlCisgIGRvY3VtZW50IHN1YnNldCBzZWxlY3Rpb24uCisgIAorICAqIFRoZSBmaXJzdCBSZWZlcmVuY2UgY29udGFpbnMgYSByZWZlcmVuY2Utb25seSBVUkkgKCIjb2JqZWN0SWQiKS4KKyAgICBUaGlzIG1lYW5zIHRoYXQgdGhlIFhNTCBlbGVtZW50IHdpdGggaXRzIElEIGF0dHJpYnV0ZSBzZXQgdG8gdGhlCisgICAgdmFsdWUgIm9iamVjdElkIiBpcyBzZWxlY3RlZDsgY29tbWVudHMgd2lsbCBiZSBzdXBwcmVzc2VkLgorICAgIEZpbmFsbHkgYSBjYW5vbmljYWwgWE1MIHRyYW5zZnJvbSB3aWxsIGJlIHBlcmZvcm1lZCBwcmlvciB0bworICAgIGRpZ2VzdCBjb21wdXRhdGlvbi4KKyAgICAKKyAgICBUaGUgaW5wdXQgdXNlZCBmb3IgdGhlIGRpZ2VzdCBjb21wdXRhdGlvbiBjYW4gYmUgZm91bmQgaW4gZmlsZQorICAgICIuLi9kaWdlc3RJbnB1dHMveFBhdGhTaWduYXR1cmUuZmlyc3RSZWZlcmVuY2UudHh0Ii4KKworICAqIFRoZSBzZWNvbmQgUmVmZXJlbmNlIGFsc28gY29udGFpbnMgYSByZWZlcmVuY2Utb25seSBVUkkgCisgICAgKCIjeHBvaW50ZXIoaWQoJ29iamVjdElkJykpIikuIFRoaXMgYWxzbyBtZWFucyB0aGF0IHRoZSBYTUwgCisgICAgZWxlbWVudCB3aXRoIGl0cyBJRCBhdHRyaWJ1dGUgc2V0IHRvIHRoZSB2YWx1ZSAib2JqZWN0SWQiCisgICAgaXMgc2VsZWN0ZWQ7IGJ1dCBjb250cmFyeSB0byB0aGUgZmlyc3QgUmVmZXJlbmNlLCB0aGlzIHRpbWUKKyAgICBjb21tZW50cyBhcmUgcHJlc2VydmVkLiBGaW5hbGx5IGEgY2Fub25pY2FsIFhNTCB0cmFuc2Zyb20KKyAgICAocHJlc2VydmluZyBjb21tZW50cyBvcHRpb24gY2hvc2VuKSB3aWxsIGJlIHBlcmZvcm1lZCBwcmlvciB0bworICAgIGRpZ2VzdCBjb21wdXRhdGlvbi4KKworICAgIFRoZSBpbnB1dCB1c2VkIGZvciB0aGUgZGlnZXN0IGNvbXB1dGF0aW9uIGNhbiBiZSBmb3VuZCBpbiBmaWxlCisgICAgIi4uL2RpZ2VzdElucHV0cy94UGF0aFNpZ25hdHVyZS5zZWNvbmRSZWZlcmVuY2UudHh0Ii4KKworICAgIAorICAgIApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvYXQvaWFpay9peHNpbC9zaWduYXR1cmVBbGdvcml0aG1zL2RpZ2VzdElucHV0cy9kU0FTaWduYXR1cmUuZmlyc3RSZWZlcmVuY2UudHh0IGIvZGF0YS9hdC9pYWlrL2l4c2lsL3NpZ25hdHVyZUFsZ29yaXRobXMvZGlnZXN0SW5wdXRzL2RTQVNpZ25hdHVyZS5maXJzdFJlZmVyZW5jZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA4OWYzMgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvYXQvaWFpay9peHNpbC9zaWduYXR1cmVBbGdvcml0aG1zL2RpZ2VzdElucHV0cy9kU0FTaWduYXR1cmUuZmlyc3RSZWZlcmVuY2UudHh0CkBAIC0wLDAgKzEgQEAKKzxkc2lnOk9iamVjdCB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiBJZD0ib2JqZWN0Ij5Tb21lIHRleHQgZnJvbSBJQUlLPC9kc2lnOk9iamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2F0L2lhaWsvaXhzaWwvc2lnbmF0dXJlQWxnb3JpdGhtcy9kaWdlc3RJbnB1dHMvaE1BQ1Nob3J0U2lnbmF0dXJlLmZpcnN0UmVmZXJlbmNlLnR4dCBiL2RhdGEvYXQvaWFpay9peHNpbC9zaWduYXR1cmVBbGdvcml0aG1zL2RpZ2VzdElucHV0cy9oTUFDU2hvcnRTaWduYXR1cmUuZmlyc3RSZWZlcmVuY2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwODlmMzIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2F0L2lhaWsvaXhzaWwvc2lnbmF0dXJlQWxnb3JpdGhtcy9kaWdlc3RJbnB1dHMvaE1BQ1Nob3J0U2lnbmF0dXJlLmZpcnN0UmVmZXJlbmNlLnR4dApAQCAtMCwwICsxIEBACis8ZHNpZzpPYmplY3QgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Im9iamVjdCI+U29tZSB0ZXh0IGZyb20gSUFJSzwvZHNpZzpPYmplY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9hdC9pYWlrL2l4c2lsL3NpZ25hdHVyZUFsZ29yaXRobXMvZGlnZXN0SW5wdXRzL2hNQUNTaWduYXR1cmUuZmlyc3RSZWZlcmVuY2UudHh0IGIvZGF0YS9hdC9pYWlrL2l4c2lsL3NpZ25hdHVyZUFsZ29yaXRobXMvZGlnZXN0SW5wdXRzL2hNQUNTaWduYXR1cmUuZmlyc3RSZWZlcmVuY2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwODlmMzIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2F0L2lhaWsvaXhzaWwvc2lnbmF0dXJlQWxnb3JpdGhtcy9kaWdlc3RJbnB1dHMvaE1BQ1NpZ25hdHVyZS5maXJzdFJlZmVyZW5jZS50eHQKQEAgLTAsMCArMSBAQAorPGRzaWc6T2JqZWN0IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIElkPSJvYmplY3QiPlNvbWUgdGV4dCBmcm9tIElBSUs8L2RzaWc6T2JqZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvYXQvaWFpay9peHNpbC9zaWduYXR1cmVBbGdvcml0aG1zL2RpZ2VzdElucHV0cy9yU0FTaWduYXR1cmUuZmlyc3RSZWZlcmVuY2UudHh0IGIvZGF0YS9hdC9pYWlrL2l4c2lsL3NpZ25hdHVyZUFsZ29yaXRobXMvZGlnZXN0SW5wdXRzL3JTQVNpZ25hdHVyZS5maXJzdFJlZmVyZW5jZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA4OWYzMgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvYXQvaWFpay9peHNpbC9zaWduYXR1cmVBbGdvcml0aG1zL2RpZ2VzdElucHV0cy9yU0FTaWduYXR1cmUuZmlyc3RSZWZlcmVuY2UudHh0CkBAIC0wLDAgKzEgQEAKKzxkc2lnOk9iamVjdCB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiBJZD0ib2JqZWN0Ij5Tb21lIHRleHQgZnJvbSBJQUlLPC9kc2lnOk9iamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2F0L2lhaWsvaXhzaWwvc2lnbmF0dXJlQWxnb3JpdGhtcy9zaWduYXR1cmVzL2RTQVNpZ25hdHVyZS54bWwgYi9kYXRhL2F0L2lhaWsvaXhzaWwvc2lnbmF0dXJlQWxnb3JpdGhtcy9zaWduYXR1cmVzL2RTQVNpZ25hdHVyZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU1NTRjOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvYXQvaWFpay9peHNpbC9zaWduYXR1cmVBbGdvcml0aG1zL3NpZ25hdHVyZXMvZFNBU2lnbmF0dXJlLnhtbApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8ZHNpZzpTaWduYXR1cmUgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzaWc6U2lnbmVkSW5mbz48ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48ZHNpZzpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiLz48ZHNpZzpSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPjNSR1FlSDVlSEsrakoyR3hHWVBod256YkJCYz08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6U2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZT5XcmZYdWVlWlJUYmRweGUzU2FtK1lEUVd2eHpyYWdjTVJIMFNkaUwrMXpGQ1BRWG4zTmRhRUE9PTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48ZHNpZzpLZXlJbmZvPjxkc2lnOktleVZhbHVlPjxkc2lnOkRTQUtleVZhbHVlPjxkc2lnOlA+Z24zVW5LSUZhWVRwZzNHeE5BMWRjWU9TaGJKYXlxT0MxNnc0YnBSQWhEOEtSbnFvZGFqQnlqdHd1bXFYQnhMMgorc1pudFB1eFRFL09VQ21lNzFwODRjaWxocXdJOUY2RXpQRklqWForMzBRNlY0NlZlK2JCUHg4a2d4WExhZXNQVgorRHlRTnU0NVUycDY3Y0NFUnhUV0M1VFdGTHA5Wk9YbXpNbERJaG9PV0dSYz08L2RzaWc6UD48ZHNpZzpRPitsQjUydm8vT3JIb0NtMzF2UmJ5Sk5qNDF4cz08L2RzaWc6UT48ZHNpZzpHPlQ3MzFMak1FOEZIQmZLVmNrNEcxd1gxTUlGQjJoVFJRejluOGNyTGhzckZ2b0JCSXVQOFg1NmtLNGVBWUJUNDAKKzJkVmgzM0ZNeU55U3NWRzEzMlpaY0d0ZVY4TVpvdFpZTzMweTB1bmg4V1krcXF4R0RjMU9aM0EyOS9tK0N5NFcKK29GMXBYVnVCRTZrRHl6aGpWaHE5TmtwZGJCVm1GL29Rb3lDWjRkSTBkeE09PC9kc2lnOkc+PGRzaWc6WT5NQlZIaWI3VDBKVzhpUGFaVCsrUi8yenVvYzVTYmFsQ2JUSGpKRE1MZS9HV01LekdTOHMrRkVKbGRRbVpDMVIrCityNmpJZkFZK3dqbDNrK1VUeFJUQ2pxdE0zNHdFQk52dmdWSHQ5NUFPZ0J5L01hbTlYS3F4L2RZTGxLMGpDazdUCitvL3JmV3RqaEcyQmJzSmRJNnIrNjhTTTBPRUJxTDViYllSeFJHZVdqL1AwPTwvZHNpZzpZPjwvZHNpZzpEU0FLZXlWYWx1ZT48L2RzaWc6S2V5VmFsdWU+PC9kc2lnOktleUluZm8+PGRzaWc6T2JqZWN0IElkPSJvYmplY3QiPlNvbWUgdGV4dCBmcm9tIElBSUs8L2RzaWc6T2JqZWN0PjwvZHNpZzpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9hdC9pYWlrL2l4c2lsL3NpZ25hdHVyZUFsZ29yaXRobXMvc2lnbmF0dXJlcy9oTUFDU2hvcnRTaWduYXR1cmUueG1sIGIvZGF0YS9hdC9pYWlrL2l4c2lsL3NpZ25hdHVyZUFsZ29yaXRobXMvc2lnbmF0dXJlcy9oTUFDU2hvcnRTaWduYXR1cmUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxZTBiYTQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2F0L2lhaWsvaXhzaWwvc2lnbmF0dXJlQWxnb3JpdGhtcy9zaWduYXR1cmVzL2hNQUNTaG9ydFNpZ25hdHVyZS54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGRzaWc6U2lnbmF0dXJlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSI+PGRzaWc6SE1BQ091dHB1dExlbmd0aD40MDwvZHNpZzpITUFDT3V0cHV0TGVuZ3RoPjwvZHNpZzpTaWduYXR1cmVNZXRob2Q+PGRzaWc6UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT4zUkdRZUg1ZUhLK2pKMkd4R1lQaHduemJCQmM9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+Q3grSFUrOD08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6T2JqZWN0IElkPSJvYmplY3QiPlNvbWUgdGV4dCBmcm9tIElBSUs8L2RzaWc6T2JqZWN0PjwvZHNpZzpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9hdC9pYWlrL2l4c2lsL3NpZ25hdHVyZUFsZ29yaXRobXMvc2lnbmF0dXJlcy9oTUFDU2lnbmF0dXJlLnhtbCBiL2RhdGEvYXQvaWFpay9peHNpbC9zaWduYXR1cmVBbGdvcml0aG1zL3NpZ25hdHVyZXMvaE1BQ1NpZ25hdHVyZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODlmNmJmYwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvYXQvaWFpay9peHNpbC9zaWduYXR1cmVBbGdvcml0aG1zL3NpZ25hdHVyZXMvaE1BQ1NpZ25hdHVyZS54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGRzaWc6U2lnbmF0dXJlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSI+PGRzaWc6SE1BQ091dHB1dExlbmd0aD4xNjA8L2RzaWc6SE1BQ091dHB1dExlbmd0aD48L2RzaWc6U2lnbmF0dXJlTWV0aG9kPjxkc2lnOlJlZmVyZW5jZSBVUkk9IiNvYmplY3QiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+M1JHUWVINWVISytqSjJHeEdZUGh3bnpiQkJjPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjwvZHNpZzpTaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlPnI3VXBhRkJNSzVxN2kwSDN0b0d2QWVGSkxzMD08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6T2JqZWN0IElkPSJvYmplY3QiPlNvbWUgdGV4dCBmcm9tIElBSUs8L2RzaWc6T2JqZWN0PjwvZHNpZzpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9hdC9pYWlrL2l4c2lsL3NpZ25hdHVyZUFsZ29yaXRobXMvc2lnbmF0dXJlcy9yU0FTaWduYXR1cmUueG1sIGIvZGF0YS9hdC9pYWlrL2l4c2lsL3NpZ25hdHVyZUFsZ29yaXRobXMvc2lnbmF0dXJlcy9yU0FTaWduYXR1cmUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4YzM4NGEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2F0L2lhaWsvaXhzaWwvc2lnbmF0dXJlQWxnb3JpdGhtcy9zaWduYXR1cmVzL3JTQVNpZ25hdHVyZS54bWwKQEAgLTAsMCArMSw2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGRzaWc6U2lnbmF0dXJlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIi8+PGRzaWc6UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT4zUkdRZUg1ZUhLK2pKMkd4R1lQaHduemJCQmM9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+SmJyT2krbk1XMkszWXlja09wR3JtbTNVYUVmV0FMcTF0dU41V0pPMDE4ZytSd3RldTV3dCtWZW5pM3hqWlR3OAorNzU1TTh2R203UVN4bktUTW5USHBIK2ZnTUZQWHBQM0FjbkI4Q1FndTMxR1Y0TCtocHNsY3FuT2VNU1FqL1diZAorQlg4VGZCMU1jbDhlUDlQOVNnb21EUlNCK2dXVGFEbnNITDZxZEs4bFVtRT08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6S2V5SW5mbz48ZHNpZzpLZXlWYWx1ZT48ZHNpZzpSU0FLZXlWYWx1ZT48ZHNpZzpNb2R1bHVzPnNEYTV5elV2NElKbUJZNjBHWkNua1FTQWhwRzd0Z3hlcGk2c2ozRGxDenhqVHRPNU1OcmpJOXNLM1doaW1wTmkKK05EbWFnek5FanhQMyt4MWh1eEwxOUdvSXhaZ3I1TzdFL0YySUluU0FTVlpUUXN2V1psTmF1aFJzMEtaQXN6SVMKK0ZjaHZyaWhJTExvVWY0dHphT1NlNmpnTUVxNklrTzBkV1ZwY0ZwQWpYVGM9PC9kc2lnOk1vZHVsdXM+PGRzaWc6RXhwb25lbnQ+QXc9PTwvZHNpZzpFeHBvbmVudD48L2RzaWc6UlNBS2V5VmFsdWU+PC9kc2lnOktleVZhbHVlPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdCBJZD0ib2JqZWN0Ij5Tb21lIHRleHQgZnJvbSBJQUlLPC9kc2lnOk9iamVjdD48L2RzaWc6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvYXQvaWFpay9peHNpbC90cmFuc2Zvcm1zL2RpZ2VzdElucHV0cy9iYXNlNjRTaWduYXR1cmUuZmlyc3RSZWZlcmVuY2UudHh0IGIvZGF0YS9hdC9pYWlrL2l4c2lsL3RyYW5zZm9ybXMvZGlnZXN0SW5wdXRzL2Jhc2U2NFNpZ25hdHVyZS5maXJzdFJlZmVyZW5jZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk2YzRkNAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvYXQvaWFpay9peHNpbC90cmFuc2Zvcm1zL2RpZ2VzdElucHV0cy9iYXNlNjRTaWduYXR1cmUuZmlyc3RSZWZlcmVuY2UudHh0CkBAIC0wLDAgKzEsMzQxIEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iPg0KKzxodG1sPg0KKzxoZWFkPg0KKzx0aXRsZT5Bc3NvY2lhdGluZyBTdHlsZSBTaGVldHMgd2l0aCBYTUwgZG9jdW1lbnRzPC90aXRsZT4NCis8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9TdHlsZVNoZWV0cy9UUi9XM0MtUkVDIj4NCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPmNvZGUgeyBmb250LWZhbWlseTogbW9ub3NwYWNlIH08L3N0eWxlPg0KKzwvaGVhZD4NCis8Ym9keT4NCis8ZGl2IGNsYXNzPSJoZWFkIj4NCis8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8iPjxpbWcgc3JjPSJodHRwOi8vd3d3LnczLm9yZy9JY29ucy9XV1cvdzNjX2hvbWUiIGFsdD0iVzNDIiBoZWlnaHQ9IjQ4IiB3aWR0aD0iNzIiPjwvYT4NCis8aDE+QXNzb2NpYXRpbmcgU3R5bGUgU2hlZXRzIHdpdGggWE1MIGRvY3VtZW50czxicj5WZXJzaW9uIDEuMDwvaDE+DQorPGgyPlczQyBSZWNvbW1lbmRhdGlvbiAyOSBKdW5lIDE5OTk8L2gyPg0KKzxkbD4NCis8ZHQ+VGhpcyB2ZXJzaW9uOjwvZHQ+DQorPGRkPg0KKzxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDYvUkVDLXhtbC1zdHlsZXNoZWV0LTE5OTkwNjI5Ij5odHRwOi8vd3d3LnczLm9yZy8xOTk5LzA2L1JFQy14bWwtc3R5bGVzaGVldC0xOTk5MDYyOTwvYT4NCis8YnI+DQorPC9kZD4NCis8ZHQ+TGF0ZXN0IHZlcnNpb246PC9kdD4NCis8ZGQ+DQorPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sLXN0eWxlc2hlZXQiPmh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1zdHlsZXNoZWV0PC9hPg0KKzxicj4NCis8L2RkPg0KKzxkdD5QcmV2aW91cyB2ZXJzaW9uOjwvZHQ+DQorPGRkPg0KKzxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkveG1sLXN0eWxlc2hlZXQtMTk5OTA0MjgiPmh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkveG1sLXN0eWxlc2hlZXQtMTk5OTA0Mjg8L2E+DQorPGJyPg0KKzwvZGQ+DQorPGR0PkVkaXRvcjo8L2R0Pg0KKzxkZD4NCisNCitKYW1lcyBDbGFyaw0KKzxhIGhyZWY9Im1haWx0bzpqamNAamNsYXJrLmNvbSI+Jmx0O2pqY0BqY2xhcmsuY29tJmd0OzwvYT4NCis8YnI+DQorPC9kZD4NCis8L2RsPg0KKzxwIGNsYXNzPSJjb3B5cmlnaHQiPg0KKzxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvaXByLW5vdGljZS5odG1sI0NvcHlyaWdodCI+DQorICAgIENvcHlyaWdodDwvYT4gJm5ic3A7JmNvcHk7Jm5ic3A7IDE5OTkgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmciPlczQzwvYT4NCisgICAgKDxhIGhyZWY9Imh0dHA6Ly93d3cubGNzLm1pdC5lZHUiPk1JVDwvYT4sDQorICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuaW5yaWEuZnIvIj5JTlJJQTwvYT4sDQorICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cua2Vpby5hYy5qcC8iPktlaW88L2E+ICksIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIFczQw0KKyAgICA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsL2lwci1ub3RpY2UuaHRtbCNMZWdhbCBEaXNjbGFpbWVyIj5saWFiaWxpdHksPC9hPjxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvaXByLW5vdGljZS5odG1sI1czQyBUcmFkZW1hcmtzIj50cmFkZW1hcms8L2E+LA0KKyAgICA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsL2NvcHlyaWdodC1kb2N1bWVudHMuaHRtbCI+ZG9jdW1lbnQgdXNlIDwvYT5hbmQNCisgICAgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC9jb3B5cmlnaHQtc29mdHdhcmUuaHRtbCI+c29mdHdhcmUgbGljZW5zaW5nIDwvYT5ydWxlcyBhcHBseS4NCisgIDwvcD4NCis8aHIgdGl0bGU9IlNlcGFyYXRvciBmb3IgaGVhZGVyIj4NCis8L2Rpdj4NCis8aDI+DQorPGEgbmFtZT0iYWJzdHJhY3QiPkFic3RyYWN0PC9hPg0KKzwvaDI+DQorDQorPHA+VGhpcyBkb2N1bWVudCBhbGxvd3MgYSBzdHlsZSBzaGVldCB0byBiZSBhc3NvY2lhdGVkIHdpdGggYW4gWE1MDQorZG9jdW1lbnQgYnkgaW5jbHVkaW5nIG9uZSBvciBtb3JlIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb25zIHdpdGggYQ0KK3RhcmdldCBvZiA8Y29kZT54bWwtc3R5bGVzaGVldDwvY29kZT4gaW4gdGhlIGRvY3VtZW50J3MgcHJvbG9nLjwvcD4NCisNCis8aDI+DQorPGEgbmFtZT0ic3RhdHVzIj5TdGF0dXMgb2YgdGhpcyBkb2N1bWVudDwvYT4NCis8L2gyPg0KKw0KKzxwPlRoaXMgZG9jdW1lbnQgaGFzIGJlZW4gcmV2aWV3ZWQgYnkgVzNDIE1lbWJlcnMgYW5kIG90aGVyIGludGVyZXN0ZWQNCitwYXJ0aWVzIGFuZCBoYXMgYmVlbiBlbmRvcnNlZCBieSB0aGUgRGlyZWN0b3IgYXMgYSBXM0MgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9Qcm9jZXNzLyNSZWNzVzNDIj5SZWNvbW1lbmRhdGlvbjwvYT4uIEl0DQoraXMgYSBzdGFibGUgZG9jdW1lbnQgYW5kIG1heSBiZSB1c2VkIGFzIHJlZmVyZW5jZSBtYXRlcmlhbCBvciBjaXRlZCBhcw0KK2Egbm9ybWF0aXZlIHJlZmVyZW5jZSBmcm9tIG90aGVyIGRvY3VtZW50cy4gVzNDJ3Mgcm9sZSBpbiBtYWtpbmcgdGhlDQorUmVjb21tZW5kYXRpb24gaXMgdG8gZHJhdyBhdHRlbnRpb24gdG8gdGhlIHNwZWNpZmljYXRpb24gYW5kIHRvDQorcHJvbW90ZSBpdHMgd2lkZXNwcmVhZCBkZXBsb3ltZW50LiBUaGlzIGVuaGFuY2VzIHRoZSBmdW5jdGlvbmFsaXR5IGFuZA0KK2ludGVyb3BlcmFiaWxpdHkgb2YgdGhlIFdlYi48L3A+DQorDQorPHA+VGhlIGxpc3Qgb2Yga25vd24gZXJyb3JzIGluIHRoaXMgc3BlY2lmaWNhdGlvbnMgaXMgYXZhaWxhYmxlIGF0DQorPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wNi9SRUMteG1sLXN0eWxlc2hlZXQtMTk5OTA2MjkvZXJyYXRhIj5odHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L3htbC1zdHlsZXNoZWV0LTE5OTkwNjI5L2VycmF0YTwvYT4uPC9wPg0KKw0KKzxwPkNvbW1lbnRzIG9uIHRoaXMgc3BlY2lmaWNhdGlvbiBtYXkgYmUgc2VudCB0byAmbHQ7PGEgaHJlZj0ibWFpbHRvOnd3dy14bWwtc3R5bGVzaGVldC1jb21tZW50c0B3My5vcmciPnd3dy14bWwtc3R5bGVzaGVldC1jb21tZW50c0B3My5vcmc8L2E+Jmd0Oy4gVGhlIGFyY2hpdmUgb2YgcHVibGljDQorY29tbWVudHMgaXMgYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3cteG1sLXN0eWxlc2hlZXQtY29tbWVudHMiPmh0dHA6Ly93My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy14bWwtc3R5bGVzaGVldC1jb21tZW50czwvYT4uPC9wPg0KKw0KKzxwPkEgbGlzdCBvZiBjdXJyZW50IFczQyBSZWNvbW1lbmRhdGlvbnMgYW5kIG90aGVyIHRlY2huaWNhbCBkb2N1bWVudHMNCitjYW4gYmUgZm91bmQgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIiPmh0dHA6Ly93d3cudzMub3JnL1RSPC9hPi48L3A+DQorDQorPHA+VGhlIFdvcmtpbmcgR3JvdXAgZXhwZWN0cyBhZGRpdGlvbmFsIG1lY2hhbmlzbXMgZm9yIGxpbmtpbmcgc3R5bGUNCitzaGVldHMgdG8gWE1MIGRvY3VtZW50IHRvIGJlIGRlZmluZWQgaW4gYSBmdXR1cmUgc3BlY2lmaWNhdGlvbi48L3A+DQorDQorPHA+VGhlIHVzZSBvZiBYTUwgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMgaW4gdGhpcyBzcGVjaWZpY2F0aW9uIHNob3VsZA0KK25vdCBiZSB0YWtlbiBhcyBhIHByZWNlZGVudC4gIFRoZSBXM0MgZG9lcyBub3QgYW50aWNpcGF0ZSByZWNvbW1lbmRpbmcNCit0aGUgdXNlIG9mIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb25zIGluIGFueSBmdXR1cmUgc3BlY2lmaWNhdGlvbi4gIFRoZQ0KKzxhIGhyZWY9IiNyYXRpb25hbGUiPlJhdGlvbmFsZTwvYT4gZXhwbGFpbnMgd2h5IHRoZXkgd2VyZSB1c2VkIGluDQordGhpcyBzcGVjaWZpY2F0aW9uLjwvcD4NCisNCis8cD5UaGlzIGRvY3VtZW50IHdhcyBwcm9kdWNlZCBhcyBwYXJ0IG9mIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvQWN0aXZpdHkiPlczQyBYTUwgQWN0aXZpdHk8L2E+LjwvcD4NCisNCisNCis8aDI+DQorPGEgbmFtZT0iY29udGVudHMiPlRhYmxlIG9mIGNvbnRlbnRzPC9hPg0KKzwvaDI+MSA8YSBocmVmPSIjVGhlIHhtbC1zdHlsZXNoZWV0IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24iPlRoZSB4bWwtc3R5bGVzaGVldCBwcm9jZXNzaW5nIGluc3RydWN0aW9uPC9hPg0KKzxicj4NCis8aDM+QXBwZW5kaWNlczwvaDM+QSA8YSBocmVmPSIjUmVmZXJlbmNlcyI+UmVmZXJlbmNlczwvYT4NCis8YnI+QiA8YSBocmVmPSIjcmF0aW9uYWxlIj5SYXRpb25hbGU8L2E+DQorPGJyPg0KKzxocj4NCisNCis8aDI+DQorPGEgbmFtZT0iVGhlIHhtbC1zdHlsZXNoZWV0IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24iPjwvYT4xIFRoZSA8Y29kZT54bWwtc3R5bGVzaGVldDwvY29kZT4gcHJvY2Vzc2luZyBpbnN0cnVjdGlvbjwvaDI+DQorDQorPHA+U3R5bGUgU2hlZXRzIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYW4gWE1MPGEgaHJlZj0iI1hNTCI+W1hNTDEwXTwvYT4NCitkb2N1bWVudCBieSB1c2luZyBhIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gd2hvc2UgdGFyZ2V0IGlzDQorPGNvZGU+eG1sLXN0eWxlc2hlZXQ8L2NvZGU+LiAgVGhpcyBwcm9jZXNzaW5nIGluc3RydWN0aW9uIGZvbGxvd3MgdGhlDQorYmVoYXZpb3VyIG9mIHRoZSBIVE1MIDQuMCA8Y29kZT4mbHQ7TElOSw0KK1JFTD0ic3R5bGVzaGVldCImZ3Q7PC9jb2RlPjxhIGhyZWY9IiNIVE1MIj5bSFRNTDQwXTwvYT4uPC9wPg0KKw0KKzxwPlRoZSA8Y29kZT54bWwtc3R5bGVzaGVldDwvY29kZT4gcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiBpcyBwYXJzZWQgaW4NCit0aGUgc2FtZSB3YXkgYXMgYSBzdGFydC10YWcsIHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IGVudGl0aWVzIG90aGVyDQordGhhbiBwcmVkZWZpbmVkIGVudGl0aWVzIG11c3Qgbm90IGJlIHJlZmVyZW5jZWQuPC9wPg0KKw0KKzxwPlRoZSBmb2xsb3dpbmcgZ3JhbW1hciBpcyBnaXZlbiB1c2luZyB0aGUgc2FtZSBub3RhdGlvbiBhcyB0aGUNCitncmFtbWFyIGluIHRoZSBYTUwgUmVjb21tZW5kYXRpb248YSBocmVmPSIjWE1MIj5bWE1MMTBdPC9hPi4gIFN5bWJvbHMgaW4gdGhlDQorZ3JhbW1hciB0aGF0IGFyZSBub3QgZGVmaW5lZCBoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSBYTUwNCitSZWNvbW1lbmRhdGlvbi48L3A+DQorDQorPGg1PnhtbC1zdHlsZXNoZWV0IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb248L2g1Pg0KKzx0YWJsZSBjbGFzcz0ic2NyYXAiPg0KKzx0Ym9keT4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPg0KKzxhIG5hbWU9Ik5ULVN0eWxlU2hlZXRQSSI+PC9hPlsxXSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPlN0eWxlU2hlZXRQSTwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPicmbHQ7P3htbC1zdHlsZXNoZWV0JyAoPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLXhtbCNOVC1TIj5TPC9hPiA8YSBocmVmPSIjTlQtUHNldWRvQXR0Ij5Qc2V1ZG9BdHQ8L2E+KSogPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLXhtbCNOVC1TIj5TPC9hPj8gJz8mZ3Q7JzwvdGQ+DQorPHRkPg0KKzwvdGQ+DQorPC90cj4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPg0KKzxhIG5hbWU9Ik5ULVBzZXVkb0F0dCI+PC9hPlsyXSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPlBzZXVkb0F0dDwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPg0KKzxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwjTlQtTmFtZSI+TmFtZTwvYT4gPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLXhtbCNOVC1TIj5TPC9hPj8gJz0nIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwjTlQtUyI+UzwvYT4/IDxhIGhyZWY9IiNOVC1Qc2V1ZG9BdHRWYWx1ZSI+UHNldWRvQXR0VmFsdWU8L2E+DQorPC90ZD4NCis8dGQ+DQorPC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+DQorPGEgbmFtZT0iTlQtUHNldWRvQXR0VmFsdWUiPjwvYT5bM10mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD5Qc2V1ZG9BdHRWYWx1ZTwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPignIicgKFteIiZsdDsmYW1wO10gfCA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sI05ULUNoYXJSZWYiPkNoYXJSZWY8L2E+IHwgPGEgaHJlZj0iI05ULVByZWRlZkVudGl0eVJlZiI+UHJlZGVmRW50aXR5UmVmPC9hPikqICciJzwvdGQ+DQorPHRkPg0KKzwvdGQ+DQorPC90cj4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPg0KKzwvdGQ+DQorPHRkPg0KKzwvdGQ+DQorPHRkPg0KKzwvdGQ+DQorPHRkPnwgIiciIChbXicmbHQ7JmFtcDtdIHwgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLXhtbCNOVC1DaGFyUmVmIj5DaGFyUmVmPC9hPiB8IDxhIGhyZWY9IiNOVC1QcmVkZWZFbnRpdHlSZWYiPlByZWRlZkVudGl0eVJlZjwvYT4pKiAiJyIpPC90ZD4NCis8dGQ+DQorPC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+DQorPC90ZD4NCis8dGQ+DQorPC90ZD4NCis8dGQ+DQorPC90ZD4NCis8dGQ+LSAoPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLXhtbCNOVC1DaGFyIj5DaGFyPC9hPiogJz8mZ3Q7JyA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sI05ULUNoYXIiPkNoYXI8L2E+Kik8L3RkPg0KKzx0ZD4NCis8L3RkPg0KKzwvdHI+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD4NCis8YSBuYW1lPSJOVC1QcmVkZWZFbnRpdHlSZWYiPjwvYT5bNF0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD5QcmVkZWZFbnRpdHlSZWY8L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD4nJmFtcDthbXA7JyB8ICcmYW1wO2x0OycgfCAnJmFtcDtndDsnIHwgJyZhbXA7cXVvdDsnIHwgJyZhbXA7YXBvczsnPC90ZD4NCis8dGQ+DQorPC90ZD4NCis8L3RyPg0KKzwvdGJvZHk+DQorPC90YWJsZT4NCisNCis8cD5JbiA8YSBocmVmPSIjTlQtUHNldWRvQXR0VmFsdWUiPlBzZXVkb0F0dFZhbHVlPC9hPiwgYSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sI05ULUNoYXJSZWYiPkNoYXJSZWY8L2E+IG9yIGEgPGEgaHJlZj0iI05ULVByZWRlZkVudGl0eVJlZiI+UHJlZGVmRW50aXR5UmVmPC9hPiBpcyBpbnRlcnByZXRlZCBpbiB0aGUNCitzYW1lIG1hbm5lciBhcyBpbiBhIG5vcm1hbCBYTUwgYXR0cmlidXRlIHZhbHVlLiAgVGhlIGFjdHVhbCB2YWx1ZSBvZg0KK3RoZSBwc2V1ZG8tYXR0cmlidXRlIGlzIHRoZSB2YWx1ZSBhZnRlciBlYWNoIHJlZmVyZW5jZSBpcyByZXBsYWNlZCBieQ0KK3RoZSBjaGFyYWN0ZXIgaXQgcmVmZXJlbmNlcy4gIFRoaXMgcmVwbGFjZW1lbnQgaXMgbm90IHBlcmZvcm1lZA0KK2F1dG9tYXRpY2FsbHkgYnkgYW4gWE1MIHByb2Nlc3Nvci48L3A+DQorDQorPHA+VGhlIDxjb2RlPnhtbC1zdHlsZXNoZWV0PC9jb2RlPiBwcm9jZXNzaW5nIGluc3RydWN0aW9uIGlzIGFsbG93ZWQNCitvbmx5IGluIHRoZSBwcm9sb2cgb2YgYW4gWE1MIGRvY3VtZW50LiBUaGUgc3ludGF4IG9mIFhNTCBjb25zdHJhaW5zDQord2hlcmUgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMgYXJlIGFsbG93ZWQgaW4gdGhlIHByb2xvZzsgdGhlDQorPGNvZGU+eG1sLXN0eWxlc2hlZXQ8L2NvZGU+IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gaXMgYWxsb3dlZCBhbnl3aGVyZQ0KK2luIHRoZSBwcm9sb2cgdGhhdCBtZWV0cyB0aGVzZSBjb25zdHJhaW50cy48L3A+DQorDQorPGJsb2NrcXVvdGU+DQorPGI+Tk9URTogPC9iPklmIHRoZSA8Y29kZT54bWwtc3R5bGVzaGVldDwvY29kZT4gcHJvY2Vzc2luZyBpbnN0cnVjdGlvbg0KK29jY3VycyBpbiB0aGUgZXh0ZXJuYWwgRFREIHN1YnNldCBvciBpbiBhIHBhcmFtZXRlciBlbnRpdHksIGl0IGlzDQorcG9zc2libGUgdGhhdCBpdCBtYXkgbm90IGJlIHByb2Nlc3NlZCBieSBhIG5vbi12YWxpZGF0aW5nIFhNTA0KK3Byb2Nlc3NvciAoc2VlIDxhIGhyZWY9IiNYTUwiPltYTUwxMF08L2E+KS48L2Jsb2NrcXVvdGU+DQorDQorPHA+VGhlIGZvbGxvd2luZyBwc2V1ZG8gYXR0cmlidXRlcyBhcmUgZGVmaW5lZDwvcD4NCisNCis8cHJlPmhyZWYgQ0RBVEEgI1JFUVVJUkVEDQordHlwZSBDREFUQSAjUkVRVUlSRUQNCit0aXRsZSBDREFUQSAjSU1QTElFRA0KK21lZGlhIENEQVRBICNJTVBMSUVEDQorY2hhcnNldCBDREFUQSAjSU1QTElFRA0KK2FsdGVybmF0ZSAoeWVzfG5vKSAibm8iPC9wcmU+DQorDQorPHA+VGhlIHNlbWFudGljcyBvZiB0aGUgcHNldWRvLWF0dHJpYnV0ZXMgYXJlIGV4YWN0bHkgYXMgd2l0aA0KKzxjb2RlPiZsdDtMSU5LIFJFTD0ic3R5bGVzaGVldCImZ3Q7PC9jb2RlPiBpbiBIVE1MIDQuMCwgd2l0aCB0aGUNCitleGNlcHRpb24gb2YgdGhlIDxjb2RlPmFsdGVybmF0ZTwvY29kZT4gcHNldWRvLWF0dHJpYnV0ZS4gIElmDQorPGNvZGU+YWx0ZXJuYXRlPSJ5ZXMiPC9jb2RlPiBpcyBzcGVjaWZpZWQsIHRoZW4gdGhlIHByb2Nlc3NpbmcNCitpbnN0cnVjdGlvbiBoYXMgdGhlIHNlbWFudGljcyBvZiA8Y29kZT4mbHQ7TElOSyBSRUw9ImFsdGVybmF0ZQ0KK3N0eWxlc2hlZXQiJmd0OzwvY29kZT4gaW5zdGVhZCBvZiA8Y29kZT4mbHQ7TElOSw0KK1JFTD0ic3R5bGVzaGVldCImZ3Q7PC9jb2RlPi48L3A+DQorDQorPGJsb2NrcXVvdGU+DQorPGI+Tk9URTogPC9iPlNpbmNlIHRoZSB2YWx1ZSBvZiB0aGUgPGNvZGU+aHJlZjwvY29kZT4gYXR0cmlidXRlIGlzIGEgVVJJDQorcmVmZXJlbmNlLCBpdCBtYXkgYmUgYSByZWxhdGl2ZSBVUkkgYW5kIGl0IG1heSBjb250YWluIGEgZnJhZ21lbnQNCitpZGVudGlmaWVyLiBJbiBwYXJ0aWN1bGFyIHRoZSBVUkkgcmVmZXJlbmNlIG1heSBjb250YWluIG9ubHkgYQ0KK2ZyYWdtZW50IGlkZW50aWZpZXIuICBTdWNoIGEgVVJJIHJlZmVyZW5jZSBpcyBhIHJlZmVyZW5jZSB0byBhIHBhcnQgb2YNCit0aGUgZG9jdW1lbnQgY29udGFpbmluZyB0aGUgPGNvZGU+eG1sLXN0eWxlc2hlZXQ8L2NvZGU+IHByb2Nlc3NpbmcNCitpbnN0cnVjdGlvbiAoc2VlIDxhIGhyZWY9IiNSRkMyMzk2Ij5bUkZDMjM5Nl08L2E+KS4gVGhlIGNvbnNlcXVlbmNlIGlzIHRoYXQgdGhlDQorPGNvZGU+eG1sLXN0eWxlc2hlZXQ8L2NvZGU+IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gYWxsb3dzIHN0eWxlIHNoZWV0cw0KK3RvIGJlIGVtYmVkZGVkIGluIHRoZSBzYW1lIGRvY3VtZW50IGFzIHRoZSA8Y29kZT54bWwtc3R5bGVzaGVldDwvY29kZT4NCitwcm9jZXNzaW5nIGluc3RydWN0aW9uLjwvYmxvY2txdW90ZT4NCisNCis8cD5JbiBzb21lIGNhc2VzLCBzdHlsZSBzaGVldHMgbWF5IGJlIGxpbmtlZCB3aXRoIGFuIFhNTCBkb2N1bWVudCBieQ0KK21lYW5zIGV4dGVybmFsIHRvIHRoZSBkb2N1bWVudC4gRm9yIGV4YW1wbGUsIGVhcmxpZXIgdmVyc2lvbnMgb2YgSFRUUA0KKzxhIGhyZWY9IiNSRkMyMDY4Ij5bUkZDMjA2OF08L2E+IChzZWN0aW9uIDE5LjYuMi40KSBhbGxvd2VkIHN0eWxlIHNoZWV0cyB0byBiZQ0KK2Fzc29jaWF0ZWQgd2l0aCBYTUwgZG9jdW1lbnRzIGJ5IG1lYW5zIG9mIHRoZSA8Y29kZT5MaW5rPC9jb2RlPg0KK2hlYWRlci4gIEFueSBsaW5rcyB0byBzdHlsZSBzaGVldHMgdGhhdCBhcmUgc3BlY2lmaWVkIGV4dGVybmFsbHkgdG8gdGhlDQorZG9jdW1lbnQgYXJlIGNvbnNpZGVyZWQgdG8gb2NjdXIgYmVmb3JlIHRoZSBsaW5rcyBzcGVjaWZpZWQgYnkgdGhlDQorPGNvZGU+eG1sLXN0eWxlc2hlZXQ8L2NvZGU+IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb25zLiAgVGhpcyBpcyB0aGUgc2FtZQ0KK2FzIGluIEhUTUwgNC4wIChzZWUgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MC9wcmVzZW50L3N0eWxlcy5odG1sI2gtMTQuNiI+c2VjdGlvbg0KKzE0LjY8L2E+KS48L3A+DQorDQorPHA+SGVyZSBhcmUgc29tZSBleGFtcGxlcyBmcm9tIEhUTUwgNC4wIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcNCitwcm9jZXNzaW5nIGluc3RydWN0aW9uOjwvcD4NCisNCis8cHJlPiZsdDtMSU5LIGhyZWY9Im15c3R5bGUuY3NzIiByZWw9InN0eWxlIHNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyImZ3Q7DQorJmx0Oz94bWwtc3R5bGVzaGVldCBocmVmPSJteXN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPyZndDsNCisNCismbHQ7TElOSyBocmVmPSJteXN0eWxlLmNzcyIgdGl0bGU9IkNvbXBhY3QiIHJlbD0ic3R5bGVzaGVldCINCit0eXBlPSJ0ZXh0L2NzcyImZ3Q7DQorJmx0Oz94bWwtc3R5bGVzaGVldCBocmVmPSJteXN0eWxlLmNzcyIgdGl0bGU9IkNvbXBhY3QiIHR5cGU9InRleHQvY3NzIj8mZ3Q7DQorDQorJmx0O0xJTksgaHJlZj0ibXlzdHlsZS5jc3MiIHRpdGxlPSJNZWRpdW0iIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiDQordHlwZT0idGV4dC9jc3MiJmd0Ow0KKyZsdDs/eG1sLXN0eWxlc2hlZXQgYWx0ZXJuYXRlPSJ5ZXMiIGhyZWY9Im15c3R5bGUuY3NzIiB0aXRsZT0iTWVkaXVtIg0KK3R5cGU9InRleHQvY3NzIj8mZ3Q7PC9wcmU+DQorDQorPHA+TXVsdGlwbGUgPGNvZGU+eG1sLXN0eWxlc2hlZXQ8L2NvZGU+IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb25zIGFyZQ0KK2Fsc28gYWxsb3dlZCB3aXRoIGV4YWN0bHkgdGhlIHNhbWUgc2VtYW50aWNzIGFzIHdpdGggPGNvZGU+TElOSw0KK1JFTD0ic3R5bGVzaGVldCI8L2NvZGU+LiBGb3IgZXhhbXBsZSw8L3A+DQorDQorPHByZT4mbHQ7TElOSyByZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiB0aXRsZT0iY29tcGFjdCIgaHJlZj0ic21hbGwtYmFzZS5jc3MiDQordHlwZT0idGV4dC9jc3MiJmd0Ow0KKyZsdDtMSU5LIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIHRpdGxlPSJjb21wYWN0IiBocmVmPSJzbWFsbC1leHRyYXMuY3NzIg0KK3R5cGU9InRleHQvY3NzIiZndDsNCismbHQ7TElOSyByZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiB0aXRsZT0iYmlnIHByaW50IiBocmVmPSJiaWdwcmludC5jc3MiDQordHlwZT0idGV4dC9jc3MiJmd0Ow0KKyZsdDtMSU5LIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iY29tbW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiJmd0OzwvcHJlPg0KKw0KKzxwPndvdWxkIGJlIGVxdWl2YWxlbnQgdG86PC9wPg0KKw0KKzxwcmU+Jmx0Oz94bWwtc3R5bGVzaGVldCBhbHRlcm5hdGU9InllcyIgdGl0bGU9ImNvbXBhY3QiIGhyZWY9InNtYWxsLWJhc2UuY3NzIg0KK3R5cGU9InRleHQvY3NzIj8mZ3Q7DQorJmx0Oz94bWwtc3R5bGVzaGVldCBhbHRlcm5hdGU9InllcyIgdGl0bGU9ImNvbXBhY3QiIGhyZWY9InNtYWxsLWV4dHJhcy5jc3MiDQordHlwZT0idGV4dC9jc3MiPyZndDsNCismbHQ7P3htbC1zdHlsZXNoZWV0IGFsdGVybmF0ZT0ieWVzIiB0aXRsZT0iYmlnIHByaW50IiBocmVmPSJiaWdwcmludC5jc3MiDQordHlwZT0idGV4dC9jc3MiPyZndDsNCismbHQ7P3htbC1zdHlsZXNoZWV0IGhyZWY9ImNvbW1vbi5jc3MiIHR5cGU9InRleHQvY3NzIj8mZ3Q7PC9wcmU+DQorDQorDQorDQorPGhyIHRpdGxlPSJTZXBhcmF0b3IgZnJvbSBmb290ZXIiPg0KKw0KKzxoMj4NCis8YSBuYW1lPSJSZWZlcmVuY2VzIj48L2E+QSBSZWZlcmVuY2VzPC9oMj4NCisNCis8ZGw+DQorDQorPGR0Pg0KKzxhIG5hbWU9IkhUTUwiPkhUTUw0MDwvYT4NCis8L2R0Pg0KKzxkZD5Xb3JsZCBXaWRlIFdlYg0KK0NvbnNvcnRpdW0uIDxpPkhUTUwgNC4wIFNwZWNpZmljYXRpb24uPC9pPiBXM0MgUmVjb21tZW5kYXRpb24uIFNlZQ0KKzxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAiPmh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDA8L2E+DQorPC9kZD4NCisNCis8ZHQ+DQorPGEgbmFtZT0iUkZDMjA2OCI+UkZDMjA2ODwvYT4NCis8L2R0Pg0KKzxkZD5SLiBGaWVsZGluZywgSi4gR2V0dHlzLCBKLiBNb2d1bCwNCitILiBGcnlzdHlrIE5pZWxzZW4sIGFuZCBULiBCZXJuZXJzLUxlZS4gIDxpPkh5cGVydGV4dCBUcmFuc2Zlcg0KK1Byb3RvY29sIC0tIEhUVFAvMS4xLjwvaT4uIElFVEYgUkZDIDIwNjguIFNlZSA8YSBocmVmPSJodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyMDY4LnR4dCI+aHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjA2OC50eHQ8L2E+LjwvZGQ+DQorDQorPGR0Pg0KKzxhIG5hbWU9IlJGQzIzOTYiPlJGQzIzOTY8L2E+DQorPC9kdD4NCis8ZGQ+VC4gQmVybmVycy1MZWUsIFIuIEZpZWxkaW5nLCBhbmQNCitMLiBNYXNpbnRlci4gIDxpPlVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllcnMgKFVSSSk6IEdlbmVyaWMNCitTeW50YXg8L2k+LiBJRVRGIFJGQyAyMzk2LiBTZWUgPGEgaHJlZj0iaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjM5Ni50eHQiPmh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzIzOTYudHh0PC9hPi48L2RkPg0KKw0KKzxkdD4NCis8YSBuYW1lPSJYTUwiPlhNTDEwPC9hPg0KKzwvZHQ+DQorPGRkPldvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0uIDxpPkV4dGVuc2libGUNCitNYXJrdXAgTGFuZ3VhZ2UgKFhNTCkgMS4wLjwvaT4gVzNDIFJlY29tbWVuZGF0aW9uLiBTZWUgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OC9SRUMteG1sLTE5OTgwMjEwIj5odHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy14bWwtMTk5ODAyMTA8L2E+DQorPC9kZD4NCisNCis8L2RsPg0KKw0KKw0KKw0KKw0KKzxoMj4NCis8YSBuYW1lPSJyYXRpb25hbGUiPjwvYT5CIFJhdGlvbmFsZTwvaDI+DQorDQorPHA+VGhlcmUgd2FzIGFuIHVyZ2VudCByZXF1aXJlbWVudCBmb3IgYSBzcGVjaWZpY2F0aW9uIGZvciBzdHlsZSBzaGVldA0KK2xpbmtpbmcgdGhhdCBjb3VsZCBiZSBjb21wbGV0ZWQgaW4gdGltZSBmb3IgdGhlIG5leHQgcmVsZWFzZSBmcm9tDQorbWFqb3IgYnJvd3NlciB2ZW5kb3JzLiAgT25seSBieSBjaG9vc2luZyBhIHNpbXBsZSBtZWNoYW5pc20gY2xvc2VseQ0KK2Jhc2VkIG9uIGEgcHJvdmVuIGV4aXN0aW5nIG1lY2hhbmlzbSBjb3VsZCB0aGUgc3BlY2lmaWNhdGlvbiBiZQ0KK2NvbXBsZXRlZCBpbiB0aW1lIHRvIG1lZXQgdGhpcyByZXF1aXJlbWVudC48L3A+DQorDQorPHA+VXNlIG9mIGEgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiBhdm9pZHMgcG9sbHV0aW5nIHRoZSBtYWluIGRvY3VtZW50DQorc3RydWN0dXJlIHdpdGggYXBwbGljYXRpb24gc3BlY2lmaWMgcHJvY2Vzc2luZyBpbmZvcm1hdGlvbi48L3A+DQorDQorPHA+VGhlIG1lY2hhbmlzbSBjaG9zZW4gZm9yIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiBpcyBub3QgYQ0KK2NvbnN0cmFpbnQgb24gdGhlIGFkZGl0aW9uYWwgbWVjaGFuaXNtcyBwbGFubmVkIGZvciBmdXR1cmUgdmVyc2lvbnMuDQorVGhlcmUgaXMgbm8gZXhwZWN0YXRpb24gdGhhdCB0aGVzZSB3aWxsIHVzZSBwcm9jZXNzaW5nIGluc3RydWN0aW9uczsNCitpbmRlZWQgdGhleSBtYXkgbm90IGluY2x1ZGUgdGhlIGxpbmtpbmcgaW5mb3JtYXRpb24gaW4gdGhlIHNvdXJjZQ0KK2RvY3VtZW50LjwvcD4NCisNCisNCisNCisNCis8L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL2RhdGEvYXQvaWFpay9peHNpbC90cmFuc2Zvcm1zL2RpZ2VzdElucHV0cy9jMTROU2lnbmF0dXJlLmZpcnN0UmVmZXJlbmNlLnR4dCBiL2RhdGEvYXQvaWFpay9peHNpbC90cmFuc2Zvcm1zL2RpZ2VzdElucHV0cy9jMTROU2lnbmF0dXJlLmZpcnN0UmVmZXJlbmNlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjcxNTlmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9hdC9pYWlrL2l4c2lsL3RyYW5zZm9ybXMvZGlnZXN0SW5wdXRzL2MxNE5TaWduYXR1cmUuZmlyc3RSZWZlcmVuY2UudHh0CkBAIC0wLDAgKzEsNCBAQAorPD94bWwtc3R5bGVzaGVldCBocmVmPSJkb2MueHNsIg0KKyAgIHR5cGU9InRleHQveHNsIiAgID8+DQorPGRvYz5IZWxsbywgd29ybGQhPC9kb2M+DQorPD9waS13aXRob3V0LWRhdGE/PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvYXQvaWFpay9peHNpbC90cmFuc2Zvcm1zL2RpZ2VzdElucHV0cy9jMTROU2lnbmF0dXJlLnNlY29uZFJlZmVyZW5jZS50eHQgYi9kYXRhL2F0L2lhaWsvaXhzaWwvdHJhbnNmb3Jtcy9kaWdlc3RJbnB1dHMvYzE0TlNpZ25hdHVyZS5zZWNvbmRSZWZlcmVuY2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwYjBjNDYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2F0L2lhaWsvaXhzaWwvdHJhbnNmb3Jtcy9kaWdlc3RJbnB1dHMvYzE0TlNpZ25hdHVyZS5zZWNvbmRSZWZlcmVuY2UudHh0CkBAIC0wLDAgKzEsNiBAQAorPD94bWwtc3R5bGVzaGVldCBocmVmPSJkb2MueHNsIg0KKyAgIHR5cGU9InRleHQveHNsIiAgID8+DQorPGRvYz5IZWxsbywgd29ybGQhPCEtLSBDb21tZW50IDEgLS0+PC9kb2M+DQorPD9waS13aXRob3V0LWRhdGE/Pg0KKzwhLS0gQ29tbWVudCAyIC0tPg0KKzwhLS0gQ29tbWVudCAzIC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvYXQvaWFpay9peHNpbC90cmFuc2Zvcm1zL2RpZ2VzdElucHV0cy9lbnZlbG9wZWRTaWduYXR1cmVTaWduYXR1cmUuZmlyc3RSZWZlcmVuY2UudHh0IGIvZGF0YS9hdC9pYWlrL2l4c2lsL3RyYW5zZm9ybXMvZGlnZXN0SW5wdXRzL2VudmVsb3BlZFNpZ25hdHVyZVNpZ25hdHVyZS5maXJzdFJlZmVyZW5jZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JkZTQ0MwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvYXQvaWFpay9peHNpbC90cmFuc2Zvcm1zL2RpZ2VzdElucHV0cy9lbnZlbG9wZWRTaWduYXR1cmVTaWduYXR1cmUuZmlyc3RSZWZlcmVuY2UudHh0CkBAIC0wLDAgKzEsNSBAQAorPEVudmVsb3BlIHhtbG5zPSJodHRwOi8vaWFpay5hdCNFbnZlbG9wZSI+DQorICA8RGF0YUl0ZW0+DQorICAgIFNvbWUgRGF0YSBmcm9tIElBSUsNCisgIDwvRGF0YUl0ZW0+DQorPC9FbnZlbG9wZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2F0L2lhaWsvaXhzaWwvdHJhbnNmb3Jtcy9kaWdlc3RJbnB1dHMveFBhdGhTaWduYXR1cmUuZmlyc3RSZWZlcmVuY2UudHh0IGIvZGF0YS9hdC9pYWlrL2l4c2lsL3RyYW5zZm9ybXMvZGlnZXN0SW5wdXRzL3hQYXRoU2lnbmF0dXJlLmZpcnN0UmVmZXJlbmNlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjYwZGY0Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9hdC9pYWlrL2l4c2lsL3RyYW5zZm9ybXMvZGlnZXN0SW5wdXRzL3hQYXRoU2lnbmF0dXJlLmZpcnN0UmVmZXJlbmNlLnR4dApAQCAtMCwwICsxIEBACis8ZHNpZzpPYmplY3QgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Im9iamVjdElkIj5BIHRleHQgZnJvbSBJQUlLPC9kc2lnOk9iamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2F0L2lhaWsvaXhzaWwvdHJhbnNmb3Jtcy9kaWdlc3RJbnB1dHMveFBhdGhTaWduYXR1cmUuc2Vjb25kUmVmZXJlbmNlLnR4dCBiL2RhdGEvYXQvaWFpay9peHNpbC90cmFuc2Zvcm1zL2RpZ2VzdElucHV0cy94UGF0aFNpZ25hdHVyZS5zZWNvbmRSZWZlcmVuY2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1OTI1MjkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2F0L2lhaWsvaXhzaWwvdHJhbnNmb3Jtcy9kaWdlc3RJbnB1dHMveFBhdGhTaWduYXR1cmUuc2Vjb25kUmVmZXJlbmNlLnR4dApAQCAtMCwwICsxIEBACis8ZHNpZzpPYmplY3QgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Im9iamVjdElkIj48IS0tQSBjb21tZW50IGZyb20gSUFJSy0tPkEgdGV4dCBmcm9tIElBSUs8L2RzaWc6T2JqZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvYXQvaWFpay9peHNpbC90cmFuc2Zvcm1zL2RpZ2VzdElucHV0cy94UGF0aFNpZ25hdHVyZS50aGlyZFJlZmVyZW5jZS50eHQgYi9kYXRhL2F0L2lhaWsvaXhzaWwvdHJhbnNmb3Jtcy9kaWdlc3RJbnB1dHMveFBhdGhTaWduYXR1cmUudGhpcmRSZWZlcmVuY2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NjBkZjQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2F0L2lhaWsvaXhzaWwvdHJhbnNmb3Jtcy9kaWdlc3RJbnB1dHMveFBhdGhTaWduYXR1cmUudGhpcmRSZWZlcmVuY2UudHh0CkBAIC0wLDAgKzEgQEAKKzxkc2lnOk9iamVjdCB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiBJZD0ib2JqZWN0SWQiPkEgdGV4dCBmcm9tIElBSUs8L2RzaWc6T2JqZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvYXQvaWFpay9peHNpbC90cmFuc2Zvcm1zL3NhbXBsZXMvc2FtcGxlQmFzZTY0RW5jb2RlZERhdGEudHh0IGIvZGF0YS9hdC9pYWlrL2l4c2lsL3RyYW5zZm9ybXMvc2FtcGxlcy9zYW1wbGVCYXNlNjRFbmNvZGVkRGF0YS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWVmYTA3MQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvYXQvaWFpay9peHNpbC90cmFuc2Zvcm1zL3NhbXBsZXMvc2FtcGxlQmFzZTY0RW5jb2RlZERhdGEudHh0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvYXQvaWFpay9peHNpbC90cmFuc2Zvcm1zL3NhbXBsZXMvc2FtcGxlWE1MRGF0YS54bWwgYi9kYXRhL2F0L2lhaWsvaXhzaWwvdHJhbnNmb3Jtcy9zYW1wbGVzL3NhbXBsZVhNTERhdGEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyMTI2ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2F0L2lhaWsvaXhzaWwvdHJhbnNmb3Jtcy9zYW1wbGVzL3NhbXBsZVhNTERhdGEueG1sCkBAIC0wLDAgKzEsMTIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorCis8P3htbC1zdHlsZXNoZWV0ICAgaHJlZj0iZG9jLnhzbCIKKyAgIHR5cGU9InRleHQveHNsIiAgID8+CisKKzxkb2M+SGVsbG8sIHdvcmxkITwhLS0gQ29tbWVudCAxIC0tPjwvZG9jPgorCis8P3BpLXdpdGhvdXQtZGF0YSAgICAgPz4KKworPCEtLSBDb21tZW50IDIgLS0+CisKKzwhLS0gQ29tbWVudCAzIC0tPgpkaWZmIC0tZ2l0IGEvZGF0YS9hdC9pYWlrL2l4c2lsL3RyYW5zZm9ybXMvc2lnbmF0dXJlcy9iYXNlNjREZWNvZGVTaWduYXR1cmUueG1sIGIvZGF0YS9hdC9pYWlrL2l4c2lsL3RyYW5zZm9ybXMvc2lnbmF0dXJlcy9iYXNlNjREZWNvZGVTaWduYXR1cmUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1M2U5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2F0L2lhaWsvaXhzaWwvdHJhbnNmb3Jtcy9zaWduYXR1cmVzL2Jhc2U2NERlY29kZVNpZ25hdHVyZS54bWwKQEAgLTAsMCArMSw2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGRzaWc6U2lnbmF0dXJlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIi8+PGRzaWc6UmVmZXJlbmNlIFVSST0iLi4vc2FtcGxlcy9zYW1wbGVCYXNlNjRFbmNvZGVkRGF0YS50eHQiPjxkc2lnOlRyYW5zZm9ybXM+PGRzaWc6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2Jhc2U2NCIvPjwvZHNpZzpUcmFuc2Zvcm1zPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+NjBOdlp2dGRUQis3VW5sTHAvSDI0cDdoNGJzPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjwvZHNpZzpTaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlPkNGRGZWazIyaWF3Z2xEZHJFSXlnbVdocFByajBEeVdueExoUEJTZ0hYcDZpMzFvVmJpY0hBT3ZUaHY3VHlWS2QKK2VFNksyYjVBS09FckJ3Vm5jbmdNQm1wd3RKSW9LT2dVaGdOZTREc2tmZVNkazQ0T0prVDYzaDBFSnhKaFVIcXoKK050QmU3UXJteW5wYkZuT2VkRERad01BOS9JOFJVMEVxL2ppa3o5bnFOZFU9PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjxkc2lnOktleUluZm8+PGRzaWc6S2V5VmFsdWU+PGRzaWc6UlNBS2V5VmFsdWU+PGRzaWc6TW9kdWx1cz5zRGE1eXpVdjRJSm1CWTYwR1pDbmtRU0FocEc3dGd4ZXBpNnNqM0RsQ3p4alR0TzVNTnJqSTlzSzNXaGltcE5pCitORG1hZ3pORWp4UDMreDFodXhMMTlHb0l4WmdyNU83RS9GMklJblNBU1ZaVFFzdldabE5hdWhSczBLWkFzeklTCitGY2h2cmloSUxMb1VmNHR6YU9TZTZqZ01FcTZJa08wZFdWcGNGcEFqWFRjPTwvZHNpZzpNb2R1bHVzPjxkc2lnOkV4cG9uZW50PkF3PT08L2RzaWc6RXhwb25lbnQ+PC9kc2lnOlJTQUtleVZhbHVlPjwvZHNpZzpLZXlWYWx1ZT48L2RzaWc6S2V5SW5mbz48L2RzaWc6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvYXQvaWFpay9peHNpbC90cmFuc2Zvcm1zL3NpZ25hdHVyZXMvYzE0blNpZ25hdHVyZS54bWwgYi9kYXRhL2F0L2lhaWsvaXhzaWwvdHJhbnNmb3Jtcy9zaWduYXR1cmVzL2MxNG5TaWduYXR1cmUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkMGMwY2IKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2F0L2lhaWsvaXhzaWwvdHJhbnNmb3Jtcy9zaWduYXR1cmVzL2MxNG5TaWduYXR1cmUueG1sCkBAIC0wLDAgKzEsNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxkc2lnOlNpZ25hdHVyZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPjxkc2lnOlJlZmVyZW5jZSBVUkk9Ii4uL3NhbXBsZXMvc2FtcGxlWE1MRGF0YS54bWwiPjxkc2lnOlRyYW5zZm9ybXM+PGRzaWc6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48L2RzaWc6VHJhbnNmb3Jtcz48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPlI4Uy9RZkdnelNtZklnMHFwUXRoZGpKUUd1az08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48ZHNpZzpSZWZlcmVuY2UgVVJJPSIuLi9zYW1wbGVzL3NhbXBsZVhNTERhdGEueG1sIj48ZHNpZzpUcmFuc2Zvcm1zPjxkc2lnOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1I1dpdGhDb21tZW50cyIvPjwvZHNpZzpUcmFuc2Zvcm1zPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+SUdFKytSM0p3Z1oxN2h4ZlQzVm9HbXZOQmpVPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjwvZHNpZzpTaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlPmNtbjI4UmtBeE41NTg3ditFUG9mMm9rS2lVa0ppdmgwd0tOSEs5RnVoYkEreFVCV3N1Y1VGWHJOQ3J1ZzU3czQKK3hRRnNRdFhqVktQbitMR2Vobmh2eFpxZDBNRUswR0xuZFJrMmRLb2didFgvdGM1NUJzeVQxalJER3BlSXhxTlIKK09ud1RsZVdscDl0TWVuTFBQc2Ezdk1yelhYVXF1cDJBL0o3L21aYU5uVVk9PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjxkc2lnOktleUluZm8+PGRzaWc6S2V5VmFsdWU+PGRzaWc6UlNBS2V5VmFsdWU+PGRzaWc6TW9kdWx1cz5zRGE1eXpVdjRJSm1CWTYwR1pDbmtRU0FocEc3dGd4ZXBpNnNqM0RsQ3p4alR0TzVNTnJqSTlzSzNXaGltcE5pCitORG1hZ3pORWp4UDMreDFodXhMMTlHb0l4WmdyNU83RS9GMklJblNBU1ZaVFFzdldabE5hdWhSczBLWkFzeklTCitGY2h2cmloSUxMb1VmNHR6YU9TZTZqZ01FcTZJa08wZFdWcGNGcEFqWFRjPTwvZHNpZzpNb2R1bHVzPjxkc2lnOkV4cG9uZW50PkF3PT08L2RzaWc6RXhwb25lbnQ+PC9kc2lnOlJTQUtleVZhbHVlPjwvZHNpZzpLZXlWYWx1ZT48L2RzaWc6S2V5SW5mbz48L2RzaWc6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvYXQvaWFpay9peHNpbC90cmFuc2Zvcm1zL3NpZ25hdHVyZXMvZW52ZWxvcGVkU2lnbmF0dXJlU2lnbmF0dXJlLnhtbCBiL2RhdGEvYXQvaWFpay9peHNpbC90cmFuc2Zvcm1zL3NpZ25hdHVyZXMvZW52ZWxvcGVkU2lnbmF0dXJlU2lnbmF0dXJlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTI0YjA2Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9hdC9pYWlrL2l4c2lsL3RyYW5zZm9ybXMvc2lnbmF0dXJlcy9lbnZlbG9wZWRTaWduYXR1cmVTaWduYXR1cmUueG1sCkBAIC0wLDAgKzEsMTAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8RW52ZWxvcGUgeG1sbnM9Imh0dHA6Ly9pYWlrLmF0I0VudmVsb3BlIj4KKyAgPGRzaWc6U2lnbmF0dXJlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIi8+PGRzaWc6UmVmZXJlbmNlIFVSST0iIj48ZHNpZzpUcmFuc2Zvcm1zPjxkc2lnOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PC9kc2lnOlRyYW5zZm9ybXM+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT5jV0ZWb2dzVEpVcm1vQ2JHckZvUDJtRStGNVU9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+bDgycWlsdlVoa3N0ekZHOHRqVFkvREFsV21oTVRQejZmaG5hSU02cWV0SDkvcWFnanRyY2VFd0duYzhRN0cyMAorbGF4UGcrdGpYYTlxU0hCOXdVbU9ndTVheE4zb05zbmNaeHVrQ2k3cG1tdWpmbE1zWGZKS2w3alRYd2VZeUtVNQorNXRKZ2VKTTNNbmptNFFpQUUxWDlGdG5lNFVLRkZnNDM0OFJVV25sWldCRT08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6S2V5SW5mbz48ZHNpZzpLZXlWYWx1ZT48ZHNpZzpSU0FLZXlWYWx1ZT48ZHNpZzpNb2R1bHVzPnNEYTV5elV2NElKbUJZNjBHWkNua1FTQWhwRzd0Z3hlcGk2c2ozRGxDenhqVHRPNU1OcmpJOXNLM1doaW1wTmkKK05EbWFnek5FanhQMyt4MWh1eEwxOUdvSXhaZ3I1TzdFL0YySUluU0FTVlpUUXN2V1psTmF1aFJzMEtaQXN6SVMKK0ZjaHZyaWhJTExvVWY0dHphT1NlNmpnTUVxNklrTzBkV1ZwY0ZwQWpYVGM9PC9kc2lnOk1vZHVsdXM+PGRzaWc6RXhwb25lbnQ+QXc9PTwvZHNpZzpFeHBvbmVudD48L2RzaWc6UlNBS2V5VmFsdWU+PC9kc2lnOktleVZhbHVlPjwvZHNpZzpLZXlJbmZvPjwvZHNpZzpTaWduYXR1cmU+PERhdGFJdGVtPgorICAgIFNvbWUgRGF0YSBmcm9tIElBSUsKKyAgPC9EYXRhSXRlbT4KKzwvRW52ZWxvcGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9hdC9pYWlrL2l4c2lsL3RyYW5zZm9ybXMvc2lnbmF0dXJlcy94UGF0aFNpZ25hdHVyZS54bWwgYi9kYXRhL2F0L2lhaWsvaXhzaWwvdHJhbnNmb3Jtcy9zaWduYXR1cmVzL3hQYXRoU2lnbmF0dXJlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2MyOGI0Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9hdC9pYWlrL2l4c2lsL3RyYW5zZm9ybXMvc2lnbmF0dXJlcy94UGF0aFNpZ25hdHVyZS54bWwKQEAgLTAsMCArMSw2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGRzaWc6U2lnbmF0dXJlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIi8+PGRzaWc6UmVmZXJlbmNlIFVSST0iI29iamVjdElkIj48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPlhnN2h1VWFIdkdqaGsxMVQ2Y0JhNWpLaUNBTT08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48ZHNpZzpSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoaWQoJmFwb3M7b2JqZWN0SWQmYXBvczspKSI+PGRzaWc6VHJhbnNmb3Jtcz48ZHNpZzpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHMiLz48L2RzaWc6VHJhbnNmb3Jtcz48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPmExWWtRREgvWEdkY2NPYWl5eE9yUDZBUUJlTT08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48ZHNpZzpSZWZlcmVuY2UgVVJJPSIiPjxkc2lnOlRyYW5zZm9ybXM+PGRzaWc6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxkc2lnOlhQYXRoIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPmFuY2VzdG9yLW9yLXNlbGY6OmRzaWc6T2JqZWN0PC9kc2lnOlhQYXRoPjwvZHNpZzpUcmFuc2Zvcm0+PC9kc2lnOlRyYW5zZm9ybXM+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT5YZzdodVVhSHZHamhrMTFUNmNCYTVqS2lDQU09PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+ZFJNOWF4VlFZUE1kMHZmemtic3RhRzh0YU5UdEpBOXNGOXplMy94VzZBZVc5S0NndUlqSHBtRzJrQXVESmhlWgorUlhSTzlldCt3aFd6clg4ZGFIY2hVdTZSRGJra0w1dE9CY01ueUtKaVBEMDNOUnh1dDdBV3RrRktMaGh4elJkcworK0VBN1gwdU5mNTlVSWFuTGxNaUdoMytST3pjdHd5TzB6OHZiS3FqR3hZVT08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6S2V5SW5mbz48ZHNpZzpLZXlWYWx1ZT48ZHNpZzpSU0FLZXlWYWx1ZT48ZHNpZzpNb2R1bHVzPnNEYTV5elV2NElKbUJZNjBHWkNua1FTQWhwRzd0Z3hlcGk2c2ozRGxDenhqVHRPNU1OcmpJOXNLM1doaW1wTmkKK05EbWFnek5FanhQMyt4MWh1eEwxOUdvSXhaZ3I1TzdFL0YySUluU0FTVlpUUXN2V1psTmF1aFJzMEtaQXN6SVMKK0ZjaHZyaWhJTExvVWY0dHphT1NlNmpnTUVxNklrTzBkV1ZwY0ZwQWpYVGM9PC9kc2lnOk1vZHVsdXM+PGRzaWc6RXhwb25lbnQ+QXc9PTwvZHNpZzpFeHBvbmVudD48L2RzaWc6UlNBS2V5VmFsdWU+PC9kc2lnOktleVZhbHVlPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdCBJZD0ib2JqZWN0SWQiPjwhLS1BIGNvbW1lbnQgZnJvbSBJQUlLLS0+QSB0ZXh0IGZyb20gSUFJSzwvZHNpZzpPYmplY3Q+PC9kc2lnOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2F0L2lhaWsvaXhzaWwvdHJhbnNmb3Jtcy9zaWduYXR1cmVzL3hQYXRoU2lnbmF0dXJlLnhtbC4wLmlucHV0IGIvZGF0YS9hdC9pYWlrL2l4c2lsL3RyYW5zZm9ybXMvc2lnbmF0dXJlcy94UGF0aFNpZ25hdHVyZS54bWwuMC5pbnB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjYwZGY0Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9hdC9pYWlrL2l4c2lsL3RyYW5zZm9ybXMvc2lnbmF0dXJlcy94UGF0aFNpZ25hdHVyZS54bWwuMC5pbnB1dApAQCAtMCwwICsxIEBACis8ZHNpZzpPYmplY3QgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Im9iamVjdElkIj5BIHRleHQgZnJvbSBJQUlLPC9kc2lnOk9iamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2F0L2lhaWsvaXhzaWwvdHJhbnNmb3Jtcy9zaWduYXR1cmVzL3hQYXRoU2lnbmF0dXJlLnhtbC4xLmlucHV0IGIvZGF0YS9hdC9pYWlrL2l4c2lsL3RyYW5zZm9ybXMvc2lnbmF0dXJlcy94UGF0aFNpZ25hdHVyZS54bWwuMS5pbnB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTkyNTI5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9hdC9pYWlrL2l4c2lsL3RyYW5zZm9ybXMvc2lnbmF0dXJlcy94UGF0aFNpZ25hdHVyZS54bWwuMS5pbnB1dApAQCAtMCwwICsxIEBACis8ZHNpZzpPYmplY3QgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Im9iamVjdElkIj48IS0tQSBjb21tZW50IGZyb20gSUFJSy0tPkEgdGV4dCBmcm9tIElBSUs8L2RzaWc6T2JqZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvYXQvaWFpay9peHNpbC90cmFuc2Zvcm1zL3NpZ25hdHVyZXMveFBhdGhTaWduYXR1cmUueG1sLjIuaW5wdXQgYi9kYXRhL2F0L2lhaWsvaXhzaWwvdHJhbnNmb3Jtcy9zaWduYXR1cmVzL3hQYXRoU2lnbmF0dXJlLnhtbC4yLmlucHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NjBkZjQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2F0L2lhaWsvaXhzaWwvdHJhbnNmb3Jtcy9zaWduYXR1cmVzL3hQYXRoU2lnbmF0dXJlLnhtbC4yLmlucHV0CkBAIC0wLDAgKzEgQEAKKzxkc2lnOk9iamVjdCB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiBJZD0ib2JqZWN0SWQiPkEgdGV4dCBmcm9tIElBSUs8L2RzaWc6T2JqZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvYXQvaWFpay9peHNpbC90cmFuc2Zvcm1zL3NpZ25hdHVyZXMveFBhdGhTaWduYXR1cmUueG1sLjMuaW5wdXQgYi9kYXRhL2F0L2lhaWsvaXhzaWwvdHJhbnNmb3Jtcy9zaWduYXR1cmVzL3hQYXRoU2lnbmF0dXJlLnhtbC4zLmlucHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjZGUwNmQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2F0L2lhaWsvaXhzaWwvdHJhbnNmb3Jtcy9zaWduYXR1cmVzL3hQYXRoU2lnbmF0dXJlLnhtbC4zLmlucHV0CkBAIC0wLDAgKzEgQEAKKzxkc2lnOk9iamVjdCB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj5BIHRleHQgZnJvbSBJQUlLPC9kc2lnOk9iamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL1JFQURNRS50eHQgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL1JFQURNRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMzE1NWI5MwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvUkVBRE1FLnR4dApAQCAtMCwwICsxLDI0OCBAQAorU2FtcGxlIFhNTCBTaWduYXR1cmVzIFByb2R1Y2VkIFVzaW5nIHRoZSBQaGFvcyBYTUwgVG9vbGtpdAorCitOb3ZlbWJlciAyNiwgMjAwMgorCisKK0NvbnRlbnRzIG9mIHBoYW9zLXhtbGRzaWctdGhyZWUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCXNpZ25hdHVyZS1yc2EtZW52ZWxvcGVkLnhtbAorCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQkKKwlDb250YWlucyBhbiBSU0EgZW52ZWxvcGVkIHNpZ25hdHVyZS4KKworCisJc2lnbmF0dXJlLXJzYS1lbnZlbG9waW5nLnhtbAorCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlDb250YWlucyBhbiBSU0EgZW52ZWxvcGluZyBzaWduYXR1cmUuCisKKworCXNpZ25hdHVyZS1yc2EtZGV0YWNoZWQueG1sCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlDb250YWlucyBhbiBSU0EgZGV0YWNoZWQgc2lnbmF0dXJlLgorCisKKwlzaWduYXR1cmUtZHNhLWVudmVsb3BlZC54bWwKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0JCisJQ29udGFpbnMgYSBEU0EgZW52ZWxvcGVkIHNpZ25hdHVyZS4KKworCisJc2lnbmF0dXJlLWRzYS1lbnZlbG9waW5nLnhtbAorCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlDb250YWlucyBhIERTQSBlbnZlbG9waW5nIHNpZ25hdHVyZS4KKworCisJc2lnbmF0dXJlLWRzYS1kZXRhY2hlZC54bWwKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCUNvbnRhaW5zIGEgRFNBIGRldGFjaGVkIHNpZ25hdHVyZS4KKworCisJc2lnbmF0dXJlLWhtYWMtbWQ1LWMxNG4tZW52ZWxvcGluZy54bWwKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCUNvbnRhaW5zIGFuIGVudmVsb3BpbmcgTUQ1IEhNQUMgc2lnbmF0dXJlIGFuZCB1c2VzIFhNTCBDYW5vbmljYWxpemF0aW9uIAorCWFzIHRoZSBjYW5vbmljYWxpemF0aW9uIG1ldGhvZC4gIFRoZSBITUFDIHNlY3JldCBpcyB0aGUgQVNDSUkgZW5jb2Rpbmcgb2YKKwl0aGUgd29yZCAidGVzdCIuCisKKworCXNpZ25hdHVyZS1obWFjLXNoYTEtZXhjbHVzaXZlLWMxNG4tZW52ZWxvcGVkLnhtbAorCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCUNvbnRhaW5zIGFuIGVudmVsb3BlZCBTSEEtMSBITUFDIHNpZ25hdHVyZSBhbmQgdXNlcyB0aGUgRXhjbHVzaXZlIFhNTAorCUNhbm9uaWNhbGl6YXRpb24gY2Fub25pY2FsaXphdGlvbiBtZXRob2QuICBUaGUgSE1BQyBzZWNyZXQgaXMgdGhlIEFTQ0lJIAorCWVuY29kaW5nIG9mIHRoZSB3b3JkICJ0ZXN0Ii4KKworCisJc2lnbmF0dXJlLWhtYWMtc2hhMS1leGNsdXNpdmUtYzE0bi1jb21tZW50cy1kZXRhY2hlZC54bWwKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCUNvbnRhaW5zIGEgZGV0YWNoZWQgU0hBLTEgSE1BQyBzaWduYXR1cmUgYW5kIHVzZXMgdGhlIEV4Y2x1c2l2ZSBYTUwKKwlDYW5vbmljYWxpemF0aW9uIFdpdGggQ29tbWVudHMgY2Fub25pY2FsaXphdGlvbiBtZXRob2QuICBUaGUgSE1BQyBzZWNyZXQgCisJaXMgdGhlIEFTQ0lJIGVuY29kaW5nIG9mIHRoZSB3b3JkICJ0ZXN0Ii4KKworCisJc2lnbmF0dXJlLWhtYWMtc2hhMS00MC1jMTRuLWNvbW1lbnRzLWRldGFjaGVkLnhtbAorCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlDb250YWlucyBhIGRldGFjaGVkIDQwLWJ5dGUgU0hBLTEgSE1BQyBzaWduYXR1cmUgYW5kIHVzZXMgdGhlIFhNTAorCUNhbm9uaWNhbGl6YXRpb24gV2l0aCBDb21tZW50cyBjYW5vbmljYWxpemF0aW9uIG1ldGhvZC4gIFRoZSBITUFDIHNlY3JldCBpcyAKKwl0aGUgQVNDSUkgZW5jb2Rpbmcgb2YgdGhlIHdvcmQgInRlc3QiLgorCQkKKworCXNpZ25hdHVyZS1obWFjLXNoYTEtNDAtZXhjbHVzaXZlLWMxNG4tY29tbWVudHMtZGV0YWNoZWQueG1sCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlDb250YWlucyBhIGRldGFjaGVkIDQwIGJ5dGUgU0hBLTEgSE1BQyBzaWduYXR1cmUgYW5kIHVzZXMgdGhlIEV4Y2x1c2l2ZQorCVhNTCBDYW5vbmljYWxpemF0aW9uIFdpdGggQ29tbWVudHMgY2Fub25pY2FsaXphdGlvbiBtZXRob2QuICBUaGUgSE1BQyBzZWNyZXQgCisJaXMgdGhlIEFTQ0lJIGVuY29kaW5nIG9mIHRoZSB3b3JkICJ0ZXN0Ii4KKworCisJc2lnbmF0dXJlLWRzYS1kZXRhY2hlZC1tYW5pZmVzdC54bWwKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCUNvbnRhaW5zIGEgZGV0YWNoZWQgRFNBIHNpZ25hdHVyZSB3aXRoIGEgbWFuaWZlc3QuCisKKworCXNpZ25hdHVyZS1yc2EtZGV0YWNoZWQtbWFuaWZlc3QueG1sCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCUNvbnRhaW5zIGEgZGV0YWNoZWQgUlNBIHNpZ25hdHVyZSB3aXRoIGEgbWFuaWZlc3QuCisKKwkKKwlzaWduYXR1cmUtcnNhLWRldGFjaGVkLWI2NC10cmFuc2Zvcm0ueG1sCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCUNvbnRhaW5zIGEgZGV0YWNoZWQgUlNBIHNpZ25hdHVyZSB3aXRoIGEgQmFzZTY0IGRlY29kZSB0cmFuc2Zvcm0uCisKKwkKKwlzaWduYXR1cmUtcnNhLWRldGFjaGVkLXhwYXRoLXRyYW5zZm9ybS54bWwKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlDb250YWlucyBhIGRldGFjaGVkIFJTQSBzaWduYXR1cmUgd2l0aCBhbiBYUGF0aCB0cmFuc2Zvcm0uCisKKwkKKwlzaWduYXR1cmUtcnNhLXhwYXRoLXRyYW5zZm9ybS1lbnZlbG9wZWQueG1sCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJQ29udGFpbnMgYW4gUlNBIHNpZ25hdHVyZSB3aXRoIGFuIFhQYXRoIHRyYW5zZm9ybSB0aGF0IHByb2R1Y2VzIHRoZQorCXNhbWUgcmVzdWx0IGFzIHRoZSBlbnZlbG9wZWQgc2lnbmF0dXJlIGFsZ29yaXRobS4KKworCQorCXNpZ25hdHVyZS1yc2EtZGV0YWNoZWQteHNsdC10cmFuc2Zvcm0ueG1sCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJQ29udGFpbnMgYSBkZXRhY2hlZCBSU0Egc2lnbmF0dXJlIHdpdGggYW4gWFNMVCB0cmFuc2Zvcm1hdGlvbi4KKworCisJc2lnbmF0dXJlLXJzYS1kZXRhY2hlZC14NTA5LWRhdGEueG1sCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJQ29udGFpbnMgYSBkZXRhY2hlZCBSU0Egc2lnbmF0dXJlIHdpdGggc2V2ZXJhbCBYNTA5RGF0YSBzdWJlbGVtZW50cy4KKworCisJc2lnbmF0dXJlLXJzYS1kZXRhY2hlZC14NTA5LWRhdGEtc3ViamVjdC1uYW1lLnhtbAorCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCUNvbnRhaW5zIGEgZGV0YWNoZWQgUlNBIHNpZ25hdHVyZSB3aXRoIGFuIFg1MDlTdWJqZWN0TmFtZSB0aGF0IAorCXJlZmVyZW5jZXMgdGhlIHN1YmplY3QgbmFtZSBvZiB0aGUgY2VydGlmaWNhdGUgc3RvcmVkIGluCisJY2VydHMvcnNhLWNsaWVudC1jZXJ0LmRlci4KKworCisJc2lnbmF0dXJlLXJzYS1kZXRhY2hlZC14NTA5LWRhdGEtaXNzdWVyLXNlcmlhbC54bWwKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlDb250YWlucyBhIGRldGFjaGVkIFJTQSBzaWduYXR1cmUgd2l0aCBhbiBYNTA5SXNzdWVyU2VyaWFsIHRoYXQgCisJcmVmZXJlbmNlcyB0aGUgaXNzdWVyIGFuZCBzZXJpYWwgbnVtYmVyIG9mIHRoZSBjZXJ0aWZpY2F0ZSBzdG9yZWQgaW4KKwljZXJ0cy9yc2EtY2xpZW50LWNlcnQuZGVyLgorCisKKwlzaWduYXR1cmUtcnNhLWRldGFjaGVkLXg1MDktZGF0YS1za2kueG1sCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJQ29udGFpbnMgYSBkZXRhY2hlZCBSU0Egc2lnbmF0dXJlIHdpdGggYW4gWDUwOVNLSSB0aGF0IAorCXJlZmVyZW5jZXMgdGhlIFN1YmplY3QgS2V5IElkZW50aWZpZXIgb2YgdGhlIGNlcnRpZmljYXRlIHN0b3JlZCBpbgorCWNlcnRzL3JzYS1jbGllbnQtY2VydC5kZXIuCisKKworCXNpZ25hdHVyZS1yc2EtZGV0YWNoZWQteDUwOS1kYXRhLWNsaWVudC1jZXJ0LnhtbAorCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCUNvbnRhaW5zIGEgZGV0YWNoZWQgUlNBIHNpZ25hdHVyZSB3aXRoIGFuIFg1MDlDZXJ0aWZpY2F0ZSB0aGF0IAorCXJlcHJlc2VudHMgdGhlIGNlcnRpZmljYXRlIHN0b3JlZCBpbiBjZXJ0cy9yc2EtY2xpZW50LWNlcnQuZGVyLgorCisKKwlzaWduYXR1cmUtcnNhLWRldGFjaGVkLXg1MDktZGF0YS1jZXJ0LWNoYWluLnhtbAorCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCUNvbnRhaW5zIGEgZGV0YWNoZWQgUlNBIHNpZ25hdHVyZSB3aXRoIHR3byBYNTA5Q2VydGlmaWNhdGUgCisJZWxlbWVudHMgdGhhdCByZXByZXNlbnQgdGhlIGNlcnRpZmljYXRlcyBzdG9yZWQgaW4gIAorCWNlcnRzL3JzYS1jbGllbnQtY2VydC5kZXIgYW5kIGNlcnRzL3JzYS1jYS1jZXJ0LmRlci4KKworCisJc2lnbmF0dXJlLXJzYS1kZXRhY2hlZC14c2x0LXRyYW5zZm9ybS1yZXRyaWV2YWwtbWV0aG9kLnhtbAorCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCUNvbnRhaW5zIGEgZGV0YWNoZWQgUlNBIHNpZ25hdHVyZSB3aXRoIGFuIFhTTFQgdHJhbnNmb3JtIGFuZCBhIEtleUluZm8gCisJZWxlbWVudCB0aGF0IHJlZmVycyB0byBhbiBleHRlcm5hbCBYLjUwOSBjZXJ0aWZpY2F0ZS4gIFRoZSBjZXJ0aWZpY2F0ZSAKKwlpcyBsb2NhdGVkIGluIGNlcnRzL3JzYS1jbGllbnQtY2VydC5kZXIuCisKKworCXNpZ25hdHVyZS1iaWcueG1sCisJLS0tLS0tLS0tLS0tLS0tLS0KKwlDb250YWlucyBhIGxhcmdlciBkZXRhY2hlZCBSU0Egc2lnbmF0dXJlIHRoYXQgY29udGFpbnMgYSBtYW5pZmVzdCBhbmQgbWFueSAKKwlyZWZlcmVuY2VzIHRoYXQgdGVzdCB2YXJpb3VzIHRyYW5zZm9ybWF0aW9uIGFsZ29yaXRobXMsIFVSSSByZWZlcmVuY2Ugc3ludGF4IAorCWZvcm1hdHMsIGV0Yy4gVGhlIEtleUluZm8gY29udGFpbnMgYSBLZXlOYW1lIHdob3NlIHZhbHVlIGlzIHRoZSBzdWJqZWN0CisJbmFtZSBvZiB0aGUgY2VydGlmaWNhdGUgc3RvcmVkIGluIGNlcnRzL3JzYS1jbGllbnQtY2VydC5kZXIuCisKKwkKKwlzaWduYXR1cmUtcnNhLWRldGFjaGVkLXhzbHQtdHJhbnNmb3JtLWJhZC1yZXRyaWV2YWwtbWV0aG9kLnhtbAorCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCUNvbnRhaW5zIGEgZGV0YWNoZWQgUlNBIHNpZ25hdHVyZSB3aXRoIGFuIFhTTFQgdHJhbnNmb3JtIGFuZCBhIEtleUluZm8gCisJZWxlbWVudCB0aGF0IHJlZmVycyB0byBhbiBJTkNPUlJFQ1QgZXh0ZXJuYWwgWC41MDkgY2VydGlmaWNhdGUuIChUaGUgY29ycmVjdAorCVguNTA5IGNlcnRpZmljYXRlIGlzIGxvY2F0ZWQgaW4gY2VydHMvcnNhLWNsaWVudC1jZXJ0LmRlci4pICBWZXJpZmljYXRpb24gCisJc2hvdWxkIEZBSUwuCisKKworCXNpZ25hdHVyZS1yc2EtZW52ZWxvcGVkLWJhZC1kaWdlc3QtdmFsLnhtbAorCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCUNvbnRhaW5zIGFuIGVudmVsb3BlZCBSU0Egc2lnbmF0dXJlIHRoYXQgY29udGFpbnMgYSByZWZlcmVuY2Ugd2l0aCBhbiBJTkNPUlJFQ1QKKwlkaWdlc3QgdmFsdWUuICBWZXJpZmljYXRpb24gc2hvdWxkIEZBSUwuCisKKworCXNpZ25hdHVyZS1yc2EtZW52ZWxvcGVkLWJhZC1zaWcueG1sCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlDb250YWlucyBhbiBlbnZlbG9wZWQgUlNBIHNpZ25hdHVyZSB0aGF0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRoYXQgd2FzIGFkZGVkIAorCWFmdGVyIHRoZSBzaWduYXR1cmUgdmFsdWUgd2FzIGNvbXB1dGVkLiAgVmVyaWZpY2F0aW9uIHNob3VsZCBGQUlMLgorCisJCisJZG9jdW1lbnQueG1sCisJLS0tLS0tLS0tLS0tCisJQW4gWE1MIGRvY3VtZW50IHRoYXQgaXMgcmVmZXJlbmNlZCBieSBzb21lIG9mIHRoZSBzaWduYXR1cmUgZXhhbXBsZXMuCisKKworCWRvY3VtZW50LXN0eWxlc2hlZXQueG1sCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlUaGUgc2FtZSBhcyBkb2N1bWVudC54bWwgd2l0aCB0aGUgYWRkaXRpb24gb2YgYW4geHNsLXN0eWxlc2hlZXQgcHJvY2Vzc2luZworCWluc3RydWN0aW9uLgorCisJCisJZG9jdW1lbnQueHNsCisJLS0tLS0tLS0tLS0tCisJQW4gWFNMIHN0eWxlc2hlZXQgcmVmZXJlbmNlZCBieSBzZXZlcmFsIG9mIHRoZSBzaWduYXR1cmUgZXhhbXBsZXMgYW5kIAorCWRvY3VtZW50LXN0eWxlc2hlZXQueG1sLgorCisKKwlkb2N1bWVudC5iNjQKKwktLS0tLS0tLS0tLS0KKwlBIEJhc2U2NCBlbmNvZGVkIFhNTCBkb2N1bWVudC4KKworCisJUkVBRE1FLnR4dAorCS0tLS0tLS0tLS0KKwlUaGlzIGZpbGUuCisKKworCitDb250ZW50cyBvZiBwaGFvcy14bWxkc2lnLXRocmVlL2NlcnRzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKwlyc2EtY2VydC5kZXIKKwktLS0tLS0tLS0tLS0KKwlBbiBSU0EgZW5kIGVudGl0eSBjZXJ0aWZpY2F0ZSBpc3N1ZWQgYnkgdGhlIENBIGNlcnRpZmljYXRlIGNvbnRhaW5lZCBpbgorCXJzYS1jYS1jZXJ0LmRlci4KKworCWVuYy1yc2Eta2V5LmRlcgorCS0tLS0tLS0tLS0tLS0tLQorCVRoZSBSU0EgcHJpdmF0ZSBrZXkgdGhhdCBtYXRjaGVzIHJzYS1jZXJ0LmRlciwgcGFzc3dvcmQtZW5jcnlwdGVkIHVzaW5nCisJdGhlIFBLQ1MjOCBmb3JtYXQuIFRoZSBwYXNzd29yZCBpcyAidGVzdCIuCisKKwlkc2EtY2VydC5kZXIKKwktLS0tLS0tLS0tLS0KKwlBbiBEU0EgZW5kIGVudGl0eSBjZXJ0aWZpY2F0ZSBpc3N1ZWQgYnkgdGhlIENBIGNlcnRpZmljYXRlIGNvbnRhaW5lZCBpbgorCWRzYS1jYS1jZXJ0LmRlci4KKworCWVuYy1kc2Eta2V5LmRlcgorCS0tLS0tLS0tLS0tLS0tLQorCVRoZSBEU0EgcHJpdmF0ZSBrZXkgdGhhdCBtYXRjaGVzIGRzYS1jZXJ0LmRlciwgcGFzc3dvcmQtZW5jcnlwdGVkIHVzaW5nCisJdGhlIFBLQ1MjOCBmb3JtYXQuIFRoZSBwYXNzd29yZCBpcyAidGVzdCIuCisKKwlyc2EtY2EtY2VydC5kZXIKKwktLS0tLS0tLS0tLS0tLS0KKwlBbiBSU0Egc2VsZi1zaWduZWQgQ0EgY2VydGlmaWNhdGUuCisKKwlkc2EtY2EtY2VydC5kZXIKKwktLS0tLS0tLS0tLS0tLS0KKwlBIERTQSBzZWxmLXNpZ25lZCBDQSBjZXJ0aWZpY2F0ZS4KKworCWNybC5kZXIKKwktLS0tLS0tCisJQSBzYW1wbGUgQ1JMIHRoYXQgcmV2b2tlcyByc2EtY2VydC5kZXIuCisKKworCitKb2UgTW9yZ2FuCitTb2Z0d2FyZSBFbmdpbmVlcgorUGhhb3MgVGVjaG5vbG9neQoram1vcmdhbkBwaGFvcy5jb20JCitodHRwOi8vd3d3LnBoYW9zLmNvbS8KZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvY2VydHMvY3JsLmRlciBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvY2VydHMvY3JsLmRlcgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jODBlMjcyCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9jZXJ0cy9jcmwuZGVyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvY2VydHMvZHNhLWNhLWNlcnQuZGVyIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9jZXJ0cy9kc2EtY2EtY2VydC5kZXIKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTBkNzM4YwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvY2VydHMvZHNhLWNhLWNlcnQuZGVyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvY2VydHMvZHNhLWNlcnQuZGVyIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9jZXJ0cy9kc2EtY2VydC5kZXIKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDYxZGJmMAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvY2VydHMvZHNhLWNlcnQuZGVyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvY2VydHMvZW5jLWRzYS1rZXkuZGVyIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9jZXJ0cy9lbmMtZHNhLWtleS5kZXIKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2NmYjAyYQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvY2VydHMvZW5jLWRzYS1rZXkuZGVyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvY2VydHMvZW5jLXJzYS1rZXkuZGVyIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9jZXJ0cy9lbmMtcnNhLWtleS5kZXIKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMDcxNWIxNwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvY2VydHMvZW5jLXJzYS1rZXkuZGVyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvY2VydHMvcnNhLWNhLWNlcnQuZGVyIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9jZXJ0cy9yc2EtY2EtY2VydC5kZXIKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uN2JkOWEyYwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvY2VydHMvcnNhLWNhLWNlcnQuZGVyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvY2VydHMvcnNhLWNlcnQuZGVyIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9jZXJ0cy9yc2EtY2VydC5kZXIKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYTZjNmU1ZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvY2VydHMvcnNhLWNlcnQuZGVyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvZG9jdW1lbnQtc3R5bGVzaGVldC54bWwgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL2RvY3VtZW50LXN0eWxlc2hlZXQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmU3NGUwNDEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL2RvY3VtZW50LXN0eWxlc2hlZXQueG1sCkBAIC0wLDAgKzEsNyBAQAorPD94bWwtc3R5bGVzaGVldCB0eXBlPSJ0ZXh0L3hzbCIgaHJlZj0iZG9jdW1lbnQueHNsIj8+Cis8cGxheWVyIGlkPSIxMDAxMiIgYmF0cz0ibGVmdCIgdGhyb3dzPSJyaWdodCI+CisJPCEtLSBIZXJlJ3MgYSBjb21tZW50IC0tPgorCTxuYW1lPkFsZm9uc28gU29yaWFubzwvbmFtZT4KKwk8cG9zaXRpb24+MkI8L3Bvc2l0aW9uPgorCTx0ZWFtPk5ldyBZb3JrIFlhbmtlZXM8L3RlYW0+Cis8L3BsYXllcj4KZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvZG9jdW1lbnQuYjY0IGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9kb2N1bWVudC5iNjQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMGIyMWI5NAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvZG9jdW1lbnQuYjY0CkBAIC0wLDAgKzEsNCBAQAorUEhCc1lYbGxjaUJwWkQwaU1UQXdNVElpSUdKaGRITTlJbXhsWm5RaUlIUm9jbTkzY3owaWNtbG5hSFFpUGcwSworQ1R3aExTMGdTR1Z5WlNkeklHRWdZMjl0YldWdWRDQXRMVDROQ2drOGJtRnRaVDVCYkdadmJuTnZJRk52Y21saAorYm04OEwyNWhiV1UrRFFvSlBIQnZjMmwwYVc5dVBqSkNQQzl3YjNOcGRHbHZiajROQ2drOGRHVmhiVDVPWlhjZworV1c5eWF5QlpZVzVyWldWelBDOTBaV0Z0UGcwS1BDOXdiR0Y1WlhJK0RRbz0KZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvZG9jdW1lbnQueG1sIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9kb2N1bWVudC54bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTMwOWMyZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvZG9jdW1lbnQueG1sCkBAIC0wLDAgKzEsNiBAQAorPHBsYXllciBpZD0iMTAwMTIiIGJhdHM9ImxlZnQiIHRocm93cz0icmlnaHQiPgorCTwhLS0gSGVyZSdzIGEgY29tbWVudCAtLT4KKwk8bmFtZT5BbGZvbnNvIFNvcmlhbm88L25hbWU+CisJPHBvc2l0aW9uPjJCPC9wb3NpdGlvbj4KKwk8dGVhbT5OZXcgWW9yayBZYW5rZWVzPC90ZWFtPgorPC9wbGF5ZXI+CmRpZmYgLS1naXQgYS9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL2RvY3VtZW50LnhzbCBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvZG9jdW1lbnQueHNsCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmVkOWQ5NzgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL2RvY3VtZW50LnhzbApAQCAtMCwwICsxLDQ1IEBACisKKzx4c2w6c3R5bGVzaGVldCB2ZXJzaW9uPSIxLjAiCisgICAgICAgICAgICAgICAgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvc3RyaWN0IiA+CisKKzx4c2w6c3RyaXAtc3BhY2UgZWxlbWVudHM9InBsYXllciBuYW1lIHBvc2l0aW9uIHRlYW0iLz4KKzx4c2w6b3V0cHV0CisgICBtZXRob2Q9InhtbCIKKyAgIGluZGVudD0ibm8iCisgICBlbmNvZGluZz0iaXNvLTg4NTktMSIKKy8+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InBsYXllciI+CisgPGh0bWw+CisgICA8aGVhZD4KKyAgICAgPHRpdGxlPgorICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJuYW1lIi8+CisgICAgIDwvdGl0bGU+CisgICA8L2hlYWQ+CisgICA8Ym9keT4KKyAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMvPgorICAgPC9ib2R5PgorIDwvaHRtbD4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJwbGF5ZXIvbmFtZSI+CisgIDxoMT4KKyAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcy8+CisgIDwvaDE+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icGxheWVyL3Bvc2l0aW9uIj4KKyAgPGgyPgorICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzLz4KKyAgPC9oMj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJwbGF5ZXIvdGVhbSI+CisgIDxoMz4KKyAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcy8+CisgIDwvaDM+Cis8L3hzbDp0ZW1wbGF0ZT4KKworCisKKzwveHNsOnN0eWxlc2hlZXQ+CmRpZmYgLS1naXQgYS9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL3NpZ25hdHVyZS1iaWcueG1sIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtYmlnLnhtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zNDhmMTMzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtYmlnLnhtbApAQCAtMCwwICsxLDM5IEBACis8ZHNpZzpTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIi8+PGRzaWc6UmVmZXJlbmNlIElkPSJyZWZlcmVuY2UtMCIgVVJJPSJkb2N1bWVudC54bWwiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+NUtjQ3NCbGhzSVA0aU1tSGNhVTJkWEpQVThrPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjxkc2lnOlJlZmVyZW5jZSBJZD0icmVmZXJlbmNlLWI2NCIgVVJJPSJkb2N1bWVudC5iNjQiPjxkc2lnOlRyYW5zZm9ybXM+PGRzaWc6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2Jhc2U2NCIvPjwvZHNpZzpUcmFuc2Zvcm1zPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+NUtjQ3NCbGhzSVA0aU1tSGNhVTJkWEpQVThrPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjxkc2lnOlJlZmVyZW5jZSBJZD0icmVmZXJlbmNlLXhzbHQiIFVSST0iZG9jdW1lbnQtc3R5bGVzaGVldC54bWwiPjxkc2lnOlRyYW5zZm9ybXM+PGRzaWc6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHNsdC0xOTk5MTExNiI+PHhzbDpzdHlsZXNoZWV0IHZlcnNpb249IjEuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9zdHJpY3QiIHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj4KKworPHhzbDpzdHJpcC1zcGFjZSBlbGVtZW50cz0icGxheWVyIG5hbWUgcG9zaXRpb24gdGVhbSIvPgorPHhzbDpvdXRwdXQgZW5jb2Rpbmc9Imlzby04ODU5LTEiIGluZGVudD0ibm8iIG1ldGhvZD0ieG1sIi8+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InBsYXllciI+CisgPGh0bWw+CisgICA8aGVhZD4KKyAgICAgPHRpdGxlPgorICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJuYW1lIi8+CisgICAgIDwvdGl0bGU+CisgICA8L2hlYWQ+CisgICA8Ym9keT4KKyAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMvPgorICAgPC9ib2R5PgorIDwvaHRtbD4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJwbGF5ZXIvbmFtZSI+CisgIDxoMT4KKyAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcy8+CisgIDwvaDE+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icGxheWVyL3Bvc2l0aW9uIj4KKyAgPGgyPgorICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzLz4KKyAgPC9oMj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJwbGF5ZXIvdGVhbSI+CisgIDxoMz4KKyAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcy8+CisgIDwvaDM+Cis8L3hzbDp0ZW1wbGF0ZT4KKworCisKKzwveHNsOnN0eWxlc2hlZXQ+PC9kc2lnOlRyYW5zZm9ybT48ZHNpZzpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjwvZHNpZzpUcmFuc2Zvcm1zPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+MkhpVGNLZGZaOU84M3d0aFVGUDhJU1JkUlhRPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjxkc2lnOlJlZmVyZW5jZSBJZD0icmVmZXJlbmNlLXhwYXRoIiBVUkk9ImRvY3VtZW50LnhtbCI+PGRzaWc6VHJhbnNmb3Jtcz48ZHNpZzpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PGRzaWc6WFBhdGggeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+QCo8L2RzaWc6WFBhdGg+PC9kc2lnOlRyYW5zZm9ybT48ZHNpZzpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHMiLz48L2RzaWc6VHJhbnNmb3Jtcz48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPlRSZVk1MmJtcE5udiszZ0VUM1loZ0pYVEltaz08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48ZHNpZzpSZWZlcmVuY2UgSWQ9InJlZmVyZW5jZS1tYW5pZmVzdCIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI01hbmlmZXN0IiBVUkk9IiNtYW5pZmVzdC0wIj48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPlprNWRzR2VsVGdnNjFoTVNQZktZUlJZWnZyOD08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48ZHNpZzpSZWZlcmVuY2UgSWQ9InJlZmVyZW5jZS1vYmplY3QtMCIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCIgVVJJPSIjb2JqZWN0LTAiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+QkdocjNWL2ZNaVRzY1VnWlZNRU1tZVF2UXBJPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjxkc2lnOlJlZmVyZW5jZSBJZD0icmVmZXJlbmNlLWtleS1pbmZvIiBVUkk9IiNrZXktaW5mbyI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT5rMDgvOUFkUEV1WnlCUkpoSEt5akgxcHgzSVE9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PGRzaWc6UmVmZXJlbmNlIElkPSJyZWZlcmVuY2Uta2V5LW5hbWUiIFVSST0iIj48ZHNpZzpUcmFuc2Zvcm1zPjxkc2lnOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48ZHNpZzpYUGF0aCB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+YW5jZXN0b3Itb3Itc2VsZjo6ZHM6S2V5TmFtZTwvZHNpZzpYUGF0aD48L2RzaWc6VHJhbnNmb3JtPjxkc2lnOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PC9kc2lnOlRyYW5zZm9ybXM+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT40ZWhvTGwrS3hZdnFsd1BHUmFQY3B4cHJMZUE9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PGRzaWc6UmVmZXJlbmNlIElkPSJyZWZlcmVuY2UteHBvaW50ZXItMCIgVVJJPSIjeHBvaW50ZXIoaWQoJ3JlZmVyZW5jZS1iNjQnKSkiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+Q0JDakRmSGNwdTdjV0hyNnpEMHkvWTYyZnNvPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjxkc2lnOlJlZmVyZW5jZSBJZD0icmVmZXJlbmNlLXhwb2ludGVyLTEiIFVSST0iI3hwb2ludGVyKGlkKCdyZWZlcmVuY2Utb2JqZWN0LTAnKSkiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+UndlbUl5TFk1V1NQZ1hBM09aaVpMaEdDeVRvPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjwvZHNpZzpTaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlPkVVcVo1ak1OdkQvZEhIaTkwWC8veUw3cjd0NldweVkwZkNoSUFhVVBQWHNiREhlTmd6ZnNEZThBWllZRDZrbHJvZVlKUnVIWEh0WTFQZEI1YjkrWGZ3TzNvZHV6bkxZVk4zYm1lTE12ZFlNV2x3NFNHWXRidnlOWnRvdmdBOHFjRUFRMjlzUSthQTlwdkNRZ1NLcFRKRjhEdVl2NmZLbGt0WnRQeVloN0hSaz08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6S2V5SW5mbyBJZD0ia2V5LWluZm8iPjxkc2lnOktleU5hbWU+Q049VGVzdCBDbGllbnQgKFJTQSksT1U9RW5naW5lZXJpbmcsTz1QaGFvcyBUZWNobm9sb2d5LEw9TmV3IFlvcmssU1Q9TmV3IFlvcmssQz1VUzwvZHNpZzpLZXlOYW1lPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdCBJZD0ib2JqZWN0LTAiPjxkc2lnOk1hbmlmZXN0IElkPSJtYW5pZmVzdC0wIj48ZHNpZzpSZWZlcmVuY2UgSWQ9InJlZmVyZW5jZS1yYXcteDUwOS1jZXJ0IiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcmF3WDUwOUNlcnRpZmljYXRlIiBVUkk9ImNlcnRzL3JzYS1jZXJ0LmRlciI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT5SdElsVEIzQm15Q1JGVHI3c1J0T3lQbmkwSWc9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PGRzaWc6UmVmZXJlbmNlIElkPSJyZWZlcmVuY2UtcmZjMzE2MSIgVVJJPSJodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMzMTYxLnR4dCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT5lVDVaVTlma0l3UTliOVhBWXEraUlZbmowRFE9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOk1hbmlmZXN0PjwvZHNpZzpPYmplY3Q+PC9kc2lnOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL3NpZ25hdHVyZS1kc2EtZGV0YWNoZWQueG1sIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtZHNhLWRldGFjaGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44MWEzOTRiCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtZHNhLWRldGFjaGVkLnhtbApAQCAtMCwwICsxIEBACis8ZHNpZzpTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIi8+PGRzaWc6UmVmZXJlbmNlIFVSST0iaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMzE2MS50eHQiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+ZVQ1WlU5ZmtJd1E5YjlYQVlxK2lJWW5qMERRPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjwvZHNpZzpTaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlPklFWWZad0kwKy93bjlyVGJKZFhhSVZBdmpKTjF2dm1ERGJ3NFg0R1kxUm93OU9NeWlJN1ZxQT09PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjxkc2lnOktleUluZm8+PGRzaWc6WDUwOURhdGE+PGRzaWc6WDUwOUNlcnRpZmljYXRlPk1JSURqekNDQTAyZ0F3SUJBZ0lESG9TQk1Ba0dCeXFHU000NEJBTXdmREVMTUFrR0ExVUVCaE1DVlZNeEVUQVBCZ05WQkFnVENFNWxkeUJaYjNKck1SRXdEd1lEVlFRSEV3aE9aWGNnV1c5eWF6RVpNQmNHQTFVRUNoTVFVR2hoYjNNZ1ZHVmphRzV2Ykc5bmVURVVNQklHQTFVRUN4TUxSVzVuYVc1bFpYSnBibWN4RmpBVUJnTlZCQU1URFZSbGMzUWdRMEVnS0VSVFFTa3dIaGNOTURJd05ESTVNVGt4TnpVeVdoY05NVEl3TkRJMk1Ua3hOelV5V2pDQmdERUxNQWtHQTFVRUJoTUNWVk14RVRBUEJnTlZCQWdUQ0U1bGR5QlpiM0pyTVJFd0R3WURWUVFIRXdoT1pYY2dXVzl5YXpFWk1CY0dBMVVFQ2hNUVVHaGhiM01nVkdWamFHNXZiRzluZVRFVU1CSUdBMVVFQ3hNTFJXNW5hVzVsWlhKcGJtY3hHakFZQmdOVkJBTVRFVlJsYzNRZ1EyeHBaVzUwSUNoRVUwRXBNSUlCdGpDQ0FTc0dCeXFHU000NEJBRXdnZ0VlQW9HQkFPWlphclY2Tmh0WU90U2ZGaGJEOU5GUFhKZWMrM3BzNU1hazYzdUF2S1ZmNm5VL0dFWkc4YTd4eXV3WE93VjNjZTJtM0QrT3ZPTmczQkdkTzd1M3JBczVWZlk4NGtFMXJJby9YZXBmRGEydlVVVEtzOSs4QThkSVZEMFg1bGgzaEZSUjZVSklGSlM5WldvdjFJN04rbjI0aUoxMXFFZDMxa0ordnI0NmorVXZBaFVBdlNQUXo3YWsyNG5CbzVnd1NNZkVYa3ZFYmxjQ2dZQUpUS29DZ1NSRWVrcXR1WldjRHkzZStSSVF6d2FUZW9lWk0yNmZGVjJZRlZxSzJvK2Qvb1B0SmZFdEZBMis0bno0RUFqdlJULzZLN2tSU1NjVDVETzhmWnM4LzBIMmxlWDJVMEZYenpET01JTDR6ZVJBUGI0R09tejQxMG1ST09Hc2t6S0NMd284WUlOdVo5S3AvNFhYNmNFaWtNaUFyTmJGdUZRd2QzMVY4Z09CaEFBQ2dZQWt0a2NLRzB2MDZPRmlrUGExV2szajVTdW4wL1JIL1dPYVJBRGU5akp4Si9vWU8wWVBJUktNSzVhWGF3ZmdUQWkzZkltU0UzZ0kvQWFDdXVTcndmVkw1VHRmdnFkTVJxaHNDWVNXY0dzRjRYcTVxMUhEQ1lLOVdiZ01JcXpWY2sxNDNWQ1d4c3VLUi8xb21DN09PUHk2ZlBKaGxGMk14eUNPRXUxV041Z0FMYU5iTUZrd0RBWURWUjBUQVFIL0JBSXdBREFQQmdOVkhROEJBZjhFQlFNREI5Z0FNQmtHQTFVZEVRUVNNQkNCRG5SbFkyaEFjR2hoYjNNdVkyOXRNQjBHQTFVZERnUVdCQlJzVzlqd1hHeUVRZkdHVHAxKzZmeTVBbHIycURBSkJnY3Foa2pPT0FRREF6RUFNQzRDRlFDTEhudk9rdk1keGp3M3NTWWdkbGp0aUVHUFRBSVZBTEVaUnNxVDJsZEdvT0UzZFVnWTNMRVdlbmhOPC9kc2lnOlg1MDlDZXJ0aWZpY2F0ZT48ZHNpZzpYNTA5SXNzdWVyU2VyaWFsPjxkc2lnOlg1MDlJc3N1ZXJOYW1lPkNOPVRlc3QgQ0EgKERTQSksT1U9RW5naW5lZXJpbmcsTz1QaGFvcyBUZWNobm9sb2d5LEw9TmV3IFlvcmssU1Q9TmV3IFlvcmssQz1VUzwvZHNpZzpYNTA5SXNzdWVyTmFtZT48ZHNpZzpYNTA5U2VyaWFsTnVtYmVyPjIwMDAwMDE8L2RzaWc6WDUwOVNlcmlhbE51bWJlcj48L2RzaWc6WDUwOUlzc3VlclNlcmlhbD48ZHNpZzpYNTA5U3ViamVjdE5hbWU+Q049VGVzdCBDbGllbnQgKERTQSksT1U9RW5naW5lZXJpbmcsTz1QaGFvcyBUZWNobm9sb2d5LEw9TmV3IFlvcmssU1Q9TmV3IFlvcmssQz1VUzwvZHNpZzpYNTA5U3ViamVjdE5hbWU+PGRzaWc6WDUwOVNLST5iRnZZOEZ4c2hFSHhoazZkZnVuOHVRSmE5cWc9PC9kc2lnOlg1MDlTS0k+PC9kc2lnOlg1MDlEYXRhPjwvZHNpZzpLZXlJbmZvPjwvZHNpZzpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtZHNhLWVudmVsb3BlZC54bWwgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL3NpZ25hdHVyZS1kc2EtZW52ZWxvcGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44NGUyZThhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtZHNhLWVudmVsb3BlZC54bWwKQEAgLTAsMCArMSw2IEBACis8cGxheWVyIGJhdHM9ImxlZnQiIGlkPSIxMDAxMiIgdGhyb3dzPSJyaWdodCI+CisJPCEtLSBIZXJlJ3MgYSBjb21tZW50IC0tPgorCTxuYW1lPkFsZm9uc28gU29yaWFubzwvbmFtZT4KKwk8cG9zaXRpb24+MkI8L3Bvc2l0aW9uPgorCTx0ZWFtPk5ldyBZb3JrIFlhbmtlZXM8L3RlYW0+Cis8ZHNpZzpTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIi8+PGRzaWc6UmVmZXJlbmNlIFVSST0iIj48ZHNpZzpUcmFuc2Zvcm1zPjxkc2lnOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PC9kc2lnOlRyYW5zZm9ybXM+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT5uREYyVi9ielJkMFZFM0V3U2hXdHNCelRFRGM9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+SG10MUtqd29YZHl5cm9CK0tmY29VRWFNNU5jWGh3QjJDYklibEpId1R4ZWsxYkYxWk1xdmlnPT08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJRGp6Q0NBMDJnQXdJQkFnSURIb1NCTUFrR0J5cUdTTTQ0QkFNd2ZERUxNQWtHQTFVRUJoTUNWVk14RVRBUEJnTlZCQWdUQ0U1bGR5QlpiM0pyTVJFd0R3WURWUVFIRXdoT1pYY2dXVzl5YXpFWk1CY0dBMVVFQ2hNUVVHaGhiM01nVkdWamFHNXZiRzluZVRFVU1CSUdBMVVFQ3hNTFJXNW5hVzVsWlhKcGJtY3hGakFVQmdOVkJBTVREVlJsYzNRZ1EwRWdLRVJUUVNrd0hoY05NREl3TkRJNU1Ua3hOelV5V2hjTk1USXdOREkyTVRreE56VXlXakNCZ0RFTE1Ba0dBMVVFQmhNQ1ZWTXhFVEFQQmdOVkJBZ1RDRTVsZHlCWmIzSnJNUkV3RHdZRFZRUUhFd2hPWlhjZ1dXOXlhekVaTUJjR0ExVUVDaE1RVUdoaGIzTWdWR1ZqYUc1dmJHOW5lVEVVTUJJR0ExVUVDeE1MUlc1bmFXNWxaWEpwYm1jeEdqQVlCZ05WQkFNVEVWUmxjM1FnUTJ4cFpXNTBJQ2hFVTBFcE1JSUJ0akNDQVNzR0J5cUdTTTQ0QkFFd2dnRWVBb0dCQU9aWmFyVjZOaHRZT3RTZkZoYkQ5TkZQWEplYyszcHM1TWFrNjN1QXZLVmY2blUvR0VaRzhhN3h5dXdYT3dWM2NlMm0zRCtPdk9OZzNCR2RPN3UzckFzNVZmWTg0a0UxcklvL1hlcGZEYTJ2VVVUS3M5KzhBOGRJVkQwWDVsaDNoRlJSNlVKSUZKUzlaV292MUk3TituMjRpSjExcUVkMzFrSit2cjQ2aitVdkFoVUF2U1BRejdhazI0bkJvNWd3U01mRVhrdkVibGNDZ1lBSlRLb0NnU1JFZWtxdHVaV2NEeTNlK1JJUXp3YVRlb2VaTTI2ZkZWMllGVnFLMm8rZC9vUHRKZkV0RkEyKzRuejRFQWp2UlQvNks3a1JTU2NUNURPOGZaczgvMEgybGVYMlUwRlh6ekRPTUlMNHplUkFQYjRHT216NDEwbVJPT0dza3pLQ0x3bzhZSU51WjlLcC80WFg2Y0Vpa01pQXJOYkZ1RlF3ZDMxVjhnT0JoQUFDZ1lBa3RrY0tHMHYwNk9GaWtQYTFXazNqNVN1bjAvUkgvV09hUkFEZTlqSnhKL29ZTzBZUElSS01LNWFYYXdmZ1RBaTNmSW1TRTNnSS9BYUN1dVNyd2ZWTDVUdGZ2cWRNUnFoc0NZU1djR3NGNFhxNXExSERDWUs5V2JnTUlxelZjazE0M1ZDV3hzdUtSLzFvbUM3T09QeTZmUEpobEYyTXh5Q09FdTFXTjVnQUxhTmJNRmt3REFZRFZSMFRBUUgvQkFJd0FEQVBCZ05WSFE4QkFmOEVCUU1EQjlnQU1Ca0dBMVVkRVFRU01CQ0JEblJsWTJoQWNHaGhiM011WTI5dE1CMEdBMVVkRGdRV0JCUnNXOWp3WEd5RVFmR0dUcDErNmZ5NUFscjJxREFKQmdjcWhrak9PQVFEQXpFQU1DNENGUUNMSG52T2t2TWR4anczc1NZZ2RsanRpRUdQVEFJVkFMRVpSc3FUMmxkR29PRTNkVWdZM0xFV2VuaE48L2RzaWc6WDUwOUNlcnRpZmljYXRlPjxkc2lnOlg1MDlJc3N1ZXJTZXJpYWw+PGRzaWc6WDUwOUlzc3Vlck5hbWU+Q049VGVzdCBDQSAoRFNBKSxPVT1FbmdpbmVlcmluZyxPPVBoYW9zIFRlY2hub2xvZ3ksTD1OZXcgWW9yayxTVD1OZXcgWW9yayxDPVVTPC9kc2lnOlg1MDlJc3N1ZXJOYW1lPjxkc2lnOlg1MDlTZXJpYWxOdW1iZXI+MjAwMDAwMTwvZHNpZzpYNTA5U2VyaWFsTnVtYmVyPjwvZHNpZzpYNTA5SXNzdWVyU2VyaWFsPjxkc2lnOlg1MDlTdWJqZWN0TmFtZT5DTj1UZXN0IENsaWVudCAoRFNBKSxPVT1FbmdpbmVlcmluZyxPPVBoYW9zIFRlY2hub2xvZ3ksTD1OZXcgWW9yayxTVD1OZXcgWW9yayxDPVVTPC9kc2lnOlg1MDlTdWJqZWN0TmFtZT48ZHNpZzpYNTA5U0tJPmJGdlk4RnhzaEVIeGhrNmRmdW44dVFKYTlxZz08L2RzaWc6WDUwOVNLST48L2RzaWc6WDUwOURhdGE+PC9kc2lnOktleUluZm8+PC9kc2lnOlNpZ25hdHVyZT48L3BsYXllcj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL3NpZ25hdHVyZS1kc2EtZW52ZWxvcGluZy54bWwgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL3NpZ25hdHVyZS1kc2EtZW52ZWxvcGluZy54bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWE0YTIwNgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLWRzYS1lbnZlbG9waW5nLnhtbApAQCAtMCwwICsxLDYgQEAKKzxkc2lnOlNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzaWc6U2lnbmVkSW5mbz48ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48ZHNpZzpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiLz48ZHNpZzpSZWZlcmVuY2UgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCIgVVJJPSIjRFNpZy5PYmplY3RfRlhVc0pLWWNaQ3RWRmw4MEJ4QmFjdzIyIj48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPnJYZEs4OXRycDY4NVZmTldtU3lZckxHUCs1WT08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6U2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZT5pcXN4U0d0T09OL00zN1pjelRPNUVaWFFyTlFTTzBwSVBRbEx5c0NtZk9McUFvSGkyTUJ3dkE9PTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48ZHNpZzpLZXlJbmZvPjxkc2lnOlg1MDlEYXRhPjxkc2lnOlg1MDlDZXJ0aWZpY2F0ZT5NSUlEanpDQ0EwMmdBd0lCQWdJREhvU0JNQWtHQnlxR1NNNDRCQU13ZkRFTE1Ba0dBMVVFQmhNQ1ZWTXhFVEFQQmdOVkJBZ1RDRTVsZHlCWmIzSnJNUkV3RHdZRFZRUUhFd2hPWlhjZ1dXOXlhekVaTUJjR0ExVUVDaE1RVUdoaGIzTWdWR1ZqYUc1dmJHOW5lVEVVTUJJR0ExVUVDeE1MUlc1bmFXNWxaWEpwYm1jeEZqQVVCZ05WQkFNVERWUmxjM1FnUTBFZ0tFUlRRU2t3SGhjTk1ESXdOREk1TVRreE56VXlXaGNOTVRJd05ESTJNVGt4TnpVeVdqQ0JnREVMTUFrR0ExVUVCaE1DVlZNeEVUQVBCZ05WQkFnVENFNWxkeUJaYjNKck1SRXdEd1lEVlFRSEV3aE9aWGNnV1c5eWF6RVpNQmNHQTFVRUNoTVFVR2hoYjNNZ1ZHVmphRzV2Ykc5bmVURVVNQklHQTFVRUN4TUxSVzVuYVc1bFpYSnBibWN4R2pBWUJnTlZCQU1URVZSbGMzUWdRMnhwWlc1MElDaEVVMEVwTUlJQnRqQ0NBU3NHQnlxR1NNNDRCQUV3Z2dFZUFvR0JBT1paYXJWNk5odFlPdFNmRmhiRDlORlBYSmVjKzNwczVNYWs2M3VBdktWZjZuVS9HRVpHOGE3eHl1d1hPd1YzY2UybTNEK092T05nM0JHZE83dTNyQXM1VmZZODRrRTFySW8vWGVwZkRhMnZVVVRLczkrOEE4ZElWRDBYNWxoM2hGUlI2VUpJRkpTOVpXb3YxSTdOK24yNGlKMTFxRWQzMWtKK3ZyNDZqK1V2QWhVQXZTUFF6N2FrMjRuQm81Z3dTTWZFWGt2RWJsY0NnWUFKVEtvQ2dTUkVla3F0dVpXY0R5M2UrUklRendhVGVvZVpNMjZmRlYyWUZWcUsybytkL29QdEpmRXRGQTIrNG56NEVBanZSVC82SzdrUlNTY1Q1RE84ZlpzOC8wSDJsZVgyVTBGWHp6RE9NSUw0emVSQVBiNEdPbXo0MTBtUk9PR3NrektDTHdvOFlJTnVaOUtwLzRYWDZjRWlrTWlBck5iRnVGUXdkMzFWOGdPQmhBQUNnWUFrdGtjS0cwdjA2T0Zpa1BhMVdrM2o1U3VuMC9SSC9XT2FSQURlOWpKeEovb1lPMFlQSVJLTUs1YVhhd2ZnVEFpM2ZJbVNFM2dJL0FhQ3V1U3J3ZlZMNVR0ZnZxZE1ScWhzQ1lTV2NHc0Y0WHE1cTFIRENZSzlXYmdNSXF6VmNrMTQzVkNXeHN1S1IvMW9tQzdPT1B5NmZQSmhsRjJNeHlDT0V1MVdONWdBTGFOYk1Ga3dEQVlEVlIwVEFRSC9CQUl3QURBUEJnTlZIUThCQWY4RUJRTURCOWdBTUJrR0ExVWRFUVFTTUJDQkRuUmxZMmhBY0doaGIzTXVZMjl0TUIwR0ExVWREZ1FXQkJSc1c5andYR3lFUWZHR1RwMSs2Znk1QWxyMnFEQUpCZ2NxaGtqT09BUURBekVBTUM0Q0ZRQ0xIbnZPa3ZNZHhqdzNzU1lnZGxqdGlFR1BUQUlWQUxFWlJzcVQybGRHb09FM2RVZ1kzTEVXZW5oTjwvZHNpZzpYNTA5Q2VydGlmaWNhdGU+PGRzaWc6WDUwOUlzc3VlclNlcmlhbD48ZHNpZzpYNTA5SXNzdWVyTmFtZT5DTj1UZXN0IENBIChEU0EpLE9VPUVuZ2luZWVyaW5nLE89UGhhb3MgVGVjaG5vbG9neSxMPU5ldyBZb3JrLFNUPU5ldyBZb3JrLEM9VVM8L2RzaWc6WDUwOUlzc3Vlck5hbWU+PGRzaWc6WDUwOVNlcmlhbE51bWJlcj4yMDAwMDAxPC9kc2lnOlg1MDlTZXJpYWxOdW1iZXI+PC9kc2lnOlg1MDlJc3N1ZXJTZXJpYWw+PGRzaWc6WDUwOVN1YmplY3ROYW1lPkNOPVRlc3QgQ2xpZW50IChEU0EpLE9VPUVuZ2luZWVyaW5nLE89UGhhb3MgVGVjaG5vbG9neSxMPU5ldyBZb3JrLFNUPU5ldyBZb3JrLEM9VVM8L2RzaWc6WDUwOVN1YmplY3ROYW1lPjxkc2lnOlg1MDlTS0k+YkZ2WThGeHNoRUh4aGs2ZGZ1bjh1UUphOXFnPTwvZHNpZzpYNTA5U0tJPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48ZHNpZzpPYmplY3QgSWQ9IkRTaWcuT2JqZWN0X0ZYVXNKS1ljWkN0VkZsODBCeEJhY3cyMiIgTWltZVR5cGU9InRleHQveG1sIj48cGxheWVyIGJhdHM9ImxlZnQiIGlkPSIxMDAxMiIgdGhyb3dzPSJyaWdodCI+CisJPCEtLSBIZXJlJ3MgYSBjb21tZW50IC0tPgorCTxuYW1lPkFsZm9uc28gU29yaWFubzwvbmFtZT4KKwk8cG9zaXRpb24+MkI8L3Bvc2l0aW9uPgorCTx0ZWFtPk5ldyBZb3JrIFlhbmtlZXM8L3RlYW0+Cis8L3BsYXllcj48L2RzaWc6T2JqZWN0PjwvZHNpZzpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtZHNhLW1hbmlmZXN0LnhtbCBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLWRzYS1tYW5pZmVzdC54bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjkxZDk0OQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLWRzYS1tYW5pZmVzdC54bWwKQEAgLTAsMCArMSBAQAorPGRzaWc6U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIvPjxkc2lnOlJlZmVyZW5jZSBJZD0icmVmZXJlbmNlLW1hbmlmZXN0IiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjTWFuaWZlc3QiIFVSST0iI21hbmlmZXN0Ij48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPk5JWVdHcjFDaVdDMDJjZmNrNDdYZi9VTTlBQT08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6U2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZT5rMGpNZkV6dkJHMlVoOUgwTUNxTG4zT3FrRlZVd0tJeWw2VldsUWJrOTFKekRnek1odEV5cmc9PTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48ZHNpZzpLZXlJbmZvPjxkc2lnOktleVZhbHVlPjxkc2lnOkRTQUtleVZhbHVlPjxkc2lnOlA+NWxscXRYbzJHMWc2MUo4V0ZzUDAwVTljbDV6N2Vtemt4cVRyZTRDOHBWL3FkVDhZUmtieHJ2SEs3QmM3QlhkeDdhYmNQNDY4NDJEY0VaMDd1N2VzQ3psVjlqemlRVFdzaWo5ZDZsOE5yYTlSUk1xejM3d0R4MGhVUFJmbVdIZUVWRkhwUWtnVWxMMWxhaS9VanMzNmZiaUluWFdvUjNmV1FuNit2anFQNVM4PTwvZHNpZzpQPjxkc2lnOlE+dlNQUXo3YWsyNG5CbzVnd1NNZkVYa3ZFYmxjPTwvZHNpZzpRPjxkc2lnOkc+Q1V5cUFvRWtSSHBLcmJtVm5BOHQzdmtTRU04R2szcUhtVE51bnhWZG1CVmFpdHFQbmY2RDdTWHhMUlFOdnVKOCtCQUk3MFUvK2l1NUVVa25FK1F6dkgyYlBQOUI5cFhsOWxOQlY4OHd6akNDK00za1FEMitCanBzK05kSmtUamhySk15Z2k4S1BHQ0RibWZTcWYrRjErbkJJcERJZ0t6V3hiaFVNSGQ5VmZJPTwvZHNpZzpHPjxkc2lnOlk+SkxaSENodEw5T2poWXBEMnRWcE40K1VycDlQMFIvMWpta1FBM3ZZeWNTZjZHRHRHRHlFU2pDdVdsMnNINEV3SXQzeUpraE40Q1B3R2dycmtxOEgxUytVN1g3Nm5URWFvYkFtRWxuQnJCZUY2dWF0Und3bUN2Vm00RENLczFYSk5lTjFRbHNiTGlrZjlhSmd1empqOHVuenlZWlJkak1jZ2poTHRWamVZQUMwPTwvZHNpZzpZPjxkc2lnOko+QVRmRzFrNFhTcERsV2N6a2JsTVRwVWt2YXpiQ2g2TkgwSW1Pekx5alhsaFJwaWhxdGIvSEJhQ0dXczNKekFpYWZXNzV0azU3Lzkrdmo2ZHJWL3ZsNDRsMTRLNXBpUDdWbkRTQUROQ2tCcTlnQ04vd00zdTh3N2NiOGdwZ1RxQzY4STJ5SHpWVmg0dW1qT3JyZ2c9PTwvZHNpZzpKPjwvZHNpZzpEU0FLZXlWYWx1ZT48L2RzaWc6S2V5VmFsdWU+PC9kc2lnOktleUluZm8+PGRzaWc6T2JqZWN0Pjxkc2lnOk1hbmlmZXN0IElkPSJtYW5pZmVzdCI+PGRzaWc6UmVmZXJlbmNlIElkPSJyZWZlcmVuY2UtMCIgVVJJPSJkb2N1bWVudC54bWwiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+NUtjQ3NCbGhzSVA0aU1tSGNhVTJkWEpQVThrPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjxkc2lnOlJlZmVyZW5jZSBJZD0icmVmZXJlbmNlLTEiIFVSST0iaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMzE2MS50eHQiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+ZVQ1WlU5ZmtJd1E5YjlYQVlxK2lJWW5qMERRPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjwvZHNpZzpNYW5pZmVzdD48L2RzaWc6T2JqZWN0PjwvZHNpZzpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtaG1hYy1tZDUtYzE0bi1lbnZlbG9waW5nLnhtbCBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLWhtYWMtbWQ1LWMxNG4tZW52ZWxvcGluZy54bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjU1MGM1ZAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLWhtYWMtbWQ1LWMxNG4tZW52ZWxvcGluZy54bWwKQEAgLTAsMCArMSw2IEBACis8ZHNpZzpTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjaG1hYy1tZDUiLz48ZHNpZzpSZWZlcmVuY2UgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCIgVVJJPSIjb2JqZWN0LXBhT0dmcG93TXBWRXo3UmtGTDZpV0EyMiI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjbWQ1Ii8+PGRzaWc6RGlnZXN0VmFsdWU+dFE3d1ZhZ1YvdjhHVFNabllZWXczZz09PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+QnNSOXdXK043NkRnK1FZTXB3TjVrQT09PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjxkc2lnOk9iamVjdCBJZD0ib2JqZWN0LXBhT0dmcG93TXBWRXo3UmtGTDZpV0EyMiIgTWltZVR5cGU9InRleHQveG1sIj48cGxheWVyIGJhdHM9ImxlZnQiIGlkPSIxMDAxMiIgdGhyb3dzPSJyaWdodCI+CisJPCEtLSBIZXJlJ3MgYSBjb21tZW50IC0tPgorCTxuYW1lPkFsZm9uc28gU29yaWFubzwvbmFtZT4KKwk8cG9zaXRpb24+MkI8L3Bvc2l0aW9uPgorCTx0ZWFtPk5ldyBZb3JrIFlhbmtlZXM8L3RlYW0+Cis8L3BsYXllcj48L2RzaWc6T2JqZWN0PjwvZHNpZzpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtaG1hYy1zaGExLTQwLWMxNG4tY29tbWVudHMtZGV0YWNoZWQueG1sIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtaG1hYy1zaGExLTQwLWMxNG4tY29tbWVudHMtZGV0YWNoZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjJkYmU0NDYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL3NpZ25hdHVyZS1obWFjLXNoYTEtNDAtYzE0bi1jb21tZW50cy1kZXRhY2hlZC54bWwKQEAgLTAsMCArMSBAQAorPGRzaWc6U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHMiLz48ZHNpZzpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIj48ZHNpZzpITUFDT3V0cHV0TGVuZ3RoPjQwPC9kc2lnOkhNQUNPdXRwdXRMZW5ndGg+PC9kc2lnOlNpZ25hdHVyZU1ldGhvZD48ZHNpZzpSZWZlcmVuY2UgVVJJPSJodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMzMTYxLnR4dCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT5lVDVaVTlma0l3UTliOVhBWXEraUlZbmowRFE9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+RDhBM0FZTT08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PC9kc2lnOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL3NpZ25hdHVyZS1obWFjLXNoYTEtNDAtZXhjbHVzaXZlLWMxNG4tY29tbWVudHMtZGV0YWNoZWQueG1sIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtaG1hYy1zaGExLTQwLWV4Y2x1c2l2ZS1jMTRuLWNvbW1lbnRzLWRldGFjaGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yMTJmMzIyCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtaG1hYy1zaGExLTQwLWV4Y2x1c2l2ZS1jMTRuLWNvbW1lbnRzLWRldGFjaGVkLnhtbApAQCAtMCwwICsxIEBACis8ZHNpZzpTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuI1dpdGhDb21tZW50cyIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiPjxkc2lnOkhNQUNPdXRwdXRMZW5ndGg+NDA8L2RzaWc6SE1BQ091dHB1dExlbmd0aD48L2RzaWc6U2lnbmF0dXJlTWV0aG9kPjxkc2lnOlJlZmVyZW5jZSBVUkk9Imh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzMxNjEudHh0Ij48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPmVUNVpVOWZrSXdROWI5WEFZcStpSVluajBEUT08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6U2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZT5hd1ptaDJjPTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48L2RzaWc6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLWhtYWMtc2hhMS1leGNsdXNpdmUtYzE0bi1jb21tZW50cy1kZXRhY2hlZC54bWwgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL3NpZ25hdHVyZS1obWFjLXNoYTEtZXhjbHVzaXZlLWMxNG4tY29tbWVudHMtZGV0YWNoZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjA1MjM4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL3NpZ25hdHVyZS1obWFjLXNoYTEtZXhjbHVzaXZlLWMxNG4tY29tbWVudHMtZGV0YWNoZWQueG1sCkBAIC0wLDAgKzEgQEAKKzxkc2lnOlNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzaWc6U2lnbmVkSW5mbz48ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jV2l0aENvbW1lbnRzIi8+PGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxkc2lnOlJlZmVyZW5jZSBVUkk9Imh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzMxNjEudHh0Ij48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPmVUNVpVOWZrSXdROWI5WEFZcStpSVluajBEUT08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6U2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZT5rRjdoTHF5YXhQMEtlUzdOM1ZlcmVVWW8zWEU9PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjwvZHNpZzpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtaG1hYy1zaGExLWV4Y2x1c2l2ZS1jMTRuLWVudmVsb3BlZC54bWwgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL3NpZ25hdHVyZS1obWFjLXNoYTEtZXhjbHVzaXZlLWMxNG4tZW52ZWxvcGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lNmQwN2ExCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtaG1hYy1zaGExLWV4Y2x1c2l2ZS1jMTRuLWVudmVsb3BlZC54bWwKQEAgLTAsMCArMSw2IEBACis8cGxheWVyIGJhdHM9ImxlZnQiIGlkPSIxMDAxMiIgdGhyb3dzPSJyaWdodCI+CisJPCEtLSBIZXJlJ3MgYSBjb21tZW50IC0tPgorCTxuYW1lPkFsZm9uc28gU29yaWFubzwvbmFtZT4KKwk8cG9zaXRpb24+MkI8L3Bvc2l0aW9uPgorCTx0ZWFtPk5ldyBZb3JrIFlhbmtlZXM8L3RlYW0+Cis8ZHNpZzpTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48ZHNpZzpSZWZlcmVuY2UgVVJJPSIiPjxkc2lnOlRyYW5zZm9ybXM+PGRzaWc6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48L2RzaWc6VHJhbnNmb3Jtcz48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPm5ERjJWL2J6UmQwVkUzRXdTaFd0c0J6VEVEYz08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6U2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZT5LT0ttREo3ZW1tMUVTTUJ1amc4OEI4Zy9SZDg9PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjwvZHNpZzpTaWduYXR1cmU+PC9wbGF5ZXI+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtcnNhLWRldGFjaGVkLWI2NC10cmFuc2Zvcm0ueG1sIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtcnNhLWRldGFjaGVkLWI2NC10cmFuc2Zvcm0ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmI3NDRjOWIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL3NpZ25hdHVyZS1yc2EtZGV0YWNoZWQtYjY0LXRyYW5zZm9ybS54bWwKQEAgLTAsMCArMSBAQAorPGRzaWc6U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPjxkc2lnOlJlZmVyZW5jZSBJZD0icmVmZXJlbmNlLW1hbmlmZXN0IiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjTWFuaWZlc3QiIFVSST0iI21hbmlmZXN0Ij48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPjlCR3AwNmtmWWtwYlk4TFh3YjZZUytVSno1QT08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6U2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZT5HYlpzRnpKM3B1K25tVjIyK2d2SDNEalVqdzd1TFFkQ3hyODNHanRyTnVCcG5WM3k2bnFwMVM1VHU3VFFlUlFqYzdZVUFYQndjcTc0dXI0QkJ6cUtWRjN3YUIwelA5OUhINnUxNjVnODExczA1bEtMZHc0V1kzV2RmQTY3bXZEU2JEQ1l2YjZFTm90N3VRY0VuRFR5SXJyc2Zla1pUdnFDWC9iSHdiN2RpMzQ9PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjxkc2lnOktleUluZm8+PGRzaWc6S2V5VmFsdWU+PGRzaWc6UlNBS2V5VmFsdWU+PGRzaWc6TW9kdWx1cz5nSWI2bkFCOW9TL0FJNWpJajZXeW12UWhSeGlNbEUwN0c0YWJtTWxpWWk1eld6dmFGRTJ0blUrUlpJQmd0b1hjZ0RFSVUvdnNMUXV0N256Q245bUh4QzhKRWFWNEQ0VTkxajY0QXlaYWtTaHFKdzdxakpmcVV4eFBMMHlKdjJvRmlvdVBEakd1SjlKUGkwTnJzWnEreWZXZk01NHM0YjlTTmtjT0lWTXliWlU9PC9kc2lnOk1vZHVsdXM+PGRzaWc6RXhwb25lbnQ+QVFBQjwvZHNpZzpFeHBvbmVudD48L2RzaWc6UlNBS2V5VmFsdWU+PC9kc2lnOktleVZhbHVlPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdD48ZHNpZzpNYW5pZmVzdCBJZD0ibWFuaWZlc3QiPjxkc2lnOlJlZmVyZW5jZSBJZD0icmVmZXJlbmNlLTAiIFVSST0iZG9jdW1lbnQuYjY0Ij48ZHNpZzpUcmFuc2Zvcm1zPjxkc2lnOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNiYXNlNjQiLz48L2RzaWc6VHJhbnNmb3Jtcz48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPjVLY0NzQmxoc0lQNGlNbUhjYVUyZFhKUFU4az08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6TWFuaWZlc3Q+PC9kc2lnOk9iamVjdD48L2RzaWc6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLXJzYS1kZXRhY2hlZC14cGF0aC10cmFuc2Zvcm0ueG1sIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtcnNhLWRldGFjaGVkLXhwYXRoLXRyYW5zZm9ybS54bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYjlkMDMyYgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLXJzYS1kZXRhY2hlZC14cGF0aC10cmFuc2Zvcm0ueG1sCkBAIC0wLDAgKzEgQEAKKzxkc2lnOlNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzaWc6U2lnbmVkSW5mbz48ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48ZHNpZzpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz48ZHNpZzpSZWZlcmVuY2UgSWQ9InJlZmVyZW5jZS1tYW5pZmVzdCIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI01hbmlmZXN0IiBVUkk9IiNtYW5pZmVzdCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT44RVFMT2lEWUVtSkRHRFZUZ05BY1dOeHIySGc9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+ZFZ2eE1jUU1zaEtjQ0p1RWFxUGY0Z0syeVFkWnJFRWZsWUlXS1o1dlo1SHhtMnE5OHNpZlBGZGJFSDQranVvMHdUYnUyZnFiWTRVOXBPR1dia1pSZXJPaC9pQ3REVStwTnF3cnpYdm1QaFJJYjlOY3dvN3NSdXk3MGo0amV3TkZoeWt1MFBLYkt1Vm1pa1p1Z1dyK3UzblMyZjZDVHNFcDEvSnpGNGJ3TEE0PTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48ZHNpZzpLZXlJbmZvPjxkc2lnOktleVZhbHVlPjxkc2lnOlJTQUtleVZhbHVlPjxkc2lnOk1vZHVsdXM+Z0liNm5BQjlvUy9BSTVqSWo2V3ltdlFoUnhpTWxFMDdHNGFibU1saVlpNXpXenZhRkUydG5VK1JaSUJndG9YY2dERUlVL3ZzTFF1dDduekNuOW1IeEM4SkVhVjRENFU5MWo2NEF5WmFrU2hxSnc3cWpKZnFVeHhQTDB5SnYyb0Zpb3VQRGpHdUo5SlBpME5yc1pxK3lmV2ZNNTRzNGI5U05rY09JVk15YlpVPTwvZHNpZzpNb2R1bHVzPjxkc2lnOkV4cG9uZW50PkFRQUI8L2RzaWc6RXhwb25lbnQ+PC9kc2lnOlJTQUtleVZhbHVlPjwvZHNpZzpLZXlWYWx1ZT48L2RzaWc6S2V5SW5mbz48ZHNpZzpPYmplY3Q+PGRzaWc6TWFuaWZlc3QgSWQ9Im1hbmlmZXN0Ij48ZHNpZzpSZWZlcmVuY2UgSWQ9InJlZmVyZW5jZS0wIiBVUkk9ImRvY3VtZW50LnhtbCI+PGRzaWc6VHJhbnNmb3Jtcz48ZHNpZzpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PGRzaWc6WFBhdGggeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+QCo8L2RzaWc6WFBhdGg+PC9kc2lnOlRyYW5zZm9ybT48ZHNpZzpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHMiLz48L2RzaWc6VHJhbnNmb3Jtcz48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPlRSZVk1MmJtcE5udiszZ0VUM1loZ0pYVEltaz08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6TWFuaWZlc3Q+PC9kc2lnOk9iamVjdD48L2RzaWc6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLXJzYS1kZXRhY2hlZC14c2x0LXRyYW5zZm9ybS1iYWQtcmV0cmlldmFsLW1ldGhvZC54bWwgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL3NpZ25hdHVyZS1yc2EtZGV0YWNoZWQteHNsdC10cmFuc2Zvcm0tYmFkLXJldHJpZXZhbC1tZXRob2QueG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmE3ZWFkNjEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL3NpZ25hdHVyZS1yc2EtZGV0YWNoZWQteHNsdC10cmFuc2Zvcm0tYmFkLXJldHJpZXZhbC1tZXRob2QueG1sCkBAIC0wLDAgKzEsNiBAQAorPHBsYXllciBiYXRzPSJsZWZ0IiBpZD0iMTAwMTIiIHRocm93cz0icmlnaHQiPgorCTwhLS0gSGVyZSdzIGEgY29tbWVudCAtLT4KKwk8bmFtZT5BbGZvbnNvIFNvcmlhbm88L25hbWU+CisJPHBvc2l0aW9uPjJCPC9wb3NpdGlvbj4KKwk8dGVhbT5OZXcgWW9yayBZYW5rZWVzPC90ZWFtPgorPGRzaWc6U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPjxkc2lnOlJlZmVyZW5jZSBVUkk9IiI+PGRzaWc6VHJhbnNmb3Jtcz48ZHNpZzpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjwvZHNpZzpUcmFuc2Zvcm1zPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+bkRGMlYvYnpSZDBWRTNFd1NoV3RzQnpURURjPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjwvZHNpZzpTaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlPmZieWU0WG0vL1JQVVRzTGQxZHdKUG8wZ1BaWVg2Z1ZZQ0VCL2d6MjM0OEVBUk5rL25DQ2NoMWZGZnB1cUFHTUtnNGF5VkMweVdrVXlFNVY0UUIzM2phR2xoOXd1TlFTanhzNlRJdkZ3U3NUKzBpb0RnVmdGdjBnVmVhc2J5Tkw0ckZFSHVBV0w4UUt3RFQ5TDZiMndVdkpDOTBEbXBCczlHTVIyalRaSVdsTT08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6S2V5SW5mbz48ZHNpZzpSZXRyaWV2YWxNZXRob2QgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3Jhd1g1MDlDZXJ0aWZpY2F0ZSIgVVJJPSJjZXJ0cy9kc2EtY2EtY2VydC5kZXIiLz48L2RzaWc6S2V5SW5mbz48L2RzaWc6U2lnbmF0dXJlPjwvcGxheWVyPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLXJzYS1kZXRhY2hlZC14c2x0LXRyYW5zZm9ybS1yZXRyaWV2YWwtbWV0aG9kLnhtbCBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLXJzYS1kZXRhY2hlZC14c2x0LXRyYW5zZm9ybS1yZXRyaWV2YWwtbWV0aG9kLnhtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lMDkzYzc0Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtcnNhLWRldGFjaGVkLXhzbHQtdHJhbnNmb3JtLXJldHJpZXZhbC1tZXRob2QueG1sCkBAIC0wLDAgKzEsMzkgQEAKKzxkc2lnOlNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzaWc6U2lnbmVkSW5mbz48ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48ZHNpZzpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz48ZHNpZzpSZWZlcmVuY2UgSWQ9InJlZmVyZW5jZS1tYW5pZmVzdCIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI01hbmlmZXN0IiBVUkk9IiNtYW5pZmVzdCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT5hZlBkT3pSQjZQZ1lwVlgyR0VDZ1RCZjhQMzA9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+ZmZYamxMaXUrRXVHS2ZNTGh2aFpiNm0zVUx3ZDF6SjdCQmU0OG9Ickd4R3NFZFFXTHQxOEF5T1lNRkhsaFJpMGkyRFB1clI2alBKR0tXaHdENnVSTTFjNlJiL2VEbFo3Rk5lcUkwQnp2OHhBMFFFWjFuTEFWSkJDNExBS1pwM0hhKzdocytsOXJLdUNrOVppU08xVURNcHBFZDh6b1R1Y3FDaUFLVE9XTWQ4PTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48ZHNpZzpLZXlJbmZvPjxkc2lnOlJldHJpZXZhbE1ldGhvZCBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcmF3WDUwOUNlcnRpZmljYXRlIiBVUkk9ImNlcnRzL3JzYS1jZXJ0LmRlciIvPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdD48ZHNpZzpNYW5pZmVzdCBJZD0ibWFuaWZlc3QiPjxkc2lnOlJlZmVyZW5jZSBJZD0icmVmZXJlbmNlLTAiIFVSST0iZG9jdW1lbnQtc3R5bGVzaGVldC54bWwiPjxkc2lnOlRyYW5zZm9ybXM+PGRzaWc6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHNsdC0xOTk5MTExNiI+PHhzbDpzdHlsZXNoZWV0IHZlcnNpb249IjEuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9zdHJpY3QiIHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj4KKworPHhzbDpzdHJpcC1zcGFjZSBlbGVtZW50cz0icGxheWVyIG5hbWUgcG9zaXRpb24gdGVhbSIvPgorPHhzbDpvdXRwdXQgZW5jb2Rpbmc9Imlzby04ODU5LTEiIGluZGVudD0ibm8iIG1ldGhvZD0ieG1sIi8+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InBsYXllciI+CisgPGh0bWw+CisgICA8aGVhZD4KKyAgICAgPHRpdGxlPgorICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJuYW1lIi8+CisgICAgIDwvdGl0bGU+CisgICA8L2hlYWQ+CisgICA8Ym9keT4KKyAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMvPgorICAgPC9ib2R5PgorIDwvaHRtbD4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJwbGF5ZXIvbmFtZSI+CisgIDxoMT4KKyAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcy8+CisgIDwvaDE+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icGxheWVyL3Bvc2l0aW9uIj4KKyAgPGgyPgorICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzLz4KKyAgPC9oMj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJwbGF5ZXIvdGVhbSI+CisgIDxoMz4KKyAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcy8+CisgIDwvaDM+Cis8L3hzbDp0ZW1wbGF0ZT4KKworCisKKzwveHNsOnN0eWxlc2hlZXQ+PC9kc2lnOlRyYW5zZm9ybT48ZHNpZzpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjwvZHNpZzpUcmFuc2Zvcm1zPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+MkhpVGNLZGZaOU84M3d0aFVGUDhJU1JkUlhRPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjwvZHNpZzpNYW5pZmVzdD48L2RzaWc6T2JqZWN0PjwvZHNpZzpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtcnNhLWRldGFjaGVkLXhzbHQtdHJhbnNmb3JtLnhtbCBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLXJzYS1kZXRhY2hlZC14c2x0LXRyYW5zZm9ybS54bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZWYyZWZmOAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLXJzYS1kZXRhY2hlZC14c2x0LXRyYW5zZm9ybS54bWwKQEAgLTAsMCArMSwzOSBAQAorPGRzaWc6U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPjxkc2lnOlJlZmVyZW5jZSBJZD0icmVmZXJlbmNlLW1hbmlmZXN0IiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjTWFuaWZlc3QiIFVSST0iI21hbmlmZXN0Ij48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPmFmUGRPelJCNlBnWXBWWDJHRUNnVEJmOFAzMD08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6U2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZT5mZlhqbExpdStFdUdLZk1MaHZoWmI2bTNVTHdkMXpKN0JCZTQ4b0hyR3hHc0VkUVdMdDE4QXlPWU1GSGxoUmkwaTJEUHVyUjZqUEpHS1dod0Q2dVJNMWM2UmIvZURsWjdGTmVxSTBCenY4eEEwUUVaMW5MQVZKQkM0TEFLWnAzSGErN2hzK2w5ckt1Q2s5WmlTTzFVRE1wcEVkOHpvVHVjcUNpQUtUT1dNZDg9PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjxkc2lnOktleUluZm8+PGRzaWc6S2V5VmFsdWU+PGRzaWc6UlNBS2V5VmFsdWU+PGRzaWc6TW9kdWx1cz5nSWI2bkFCOW9TL0FJNWpJajZXeW12UWhSeGlNbEUwN0c0YWJtTWxpWWk1eld6dmFGRTJ0blUrUlpJQmd0b1hjZ0RFSVUvdnNMUXV0N256Q245bUh4QzhKRWFWNEQ0VTkxajY0QXlaYWtTaHFKdzdxakpmcVV4eFBMMHlKdjJvRmlvdVBEakd1SjlKUGkwTnJzWnEreWZXZk01NHM0YjlTTmtjT0lWTXliWlU9PC9kc2lnOk1vZHVsdXM+PGRzaWc6RXhwb25lbnQ+QVFBQjwvZHNpZzpFeHBvbmVudD48L2RzaWc6UlNBS2V5VmFsdWU+PC9kc2lnOktleVZhbHVlPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdD48ZHNpZzpNYW5pZmVzdCBJZD0ibWFuaWZlc3QiPjxkc2lnOlJlZmVyZW5jZSBJZD0icmVmZXJlbmNlLTAiIFVSST0iZG9jdW1lbnQtc3R5bGVzaGVldC54bWwiPjxkc2lnOlRyYW5zZm9ybXM+PGRzaWc6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHNsdC0xOTk5MTExNiI+PHhzbDpzdHlsZXNoZWV0IHZlcnNpb249IjEuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9zdHJpY3QiIHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj4KKworPHhzbDpzdHJpcC1zcGFjZSBlbGVtZW50cz0icGxheWVyIG5hbWUgcG9zaXRpb24gdGVhbSIvPgorPHhzbDpvdXRwdXQgZW5jb2Rpbmc9Imlzby04ODU5LTEiIGluZGVudD0ibm8iIG1ldGhvZD0ieG1sIi8+CisKKzx4c2w6dGVtcGxhdGUgbWF0Y2g9InBsYXllciI+CisgPGh0bWw+CisgICA8aGVhZD4KKyAgICAgPHRpdGxlPgorICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJuYW1lIi8+CisgICAgIDwvdGl0bGU+CisgICA8L2hlYWQ+CisgICA8Ym9keT4KKyAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMvPgorICAgPC9ib2R5PgorIDwvaHRtbD4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJwbGF5ZXIvbmFtZSI+CisgIDxoMT4KKyAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcy8+CisgIDwvaDE+Cis8L3hzbDp0ZW1wbGF0ZT4KKworPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icGxheWVyL3Bvc2l0aW9uIj4KKyAgPGgyPgorICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzLz4KKyAgPC9oMj4KKzwveHNsOnRlbXBsYXRlPgorCis8eHNsOnRlbXBsYXRlIG1hdGNoPSJwbGF5ZXIvdGVhbSI+CisgIDxoMz4KKyAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcy8+CisgIDwvaDM+Cis8L3hzbDp0ZW1wbGF0ZT4KKworCisKKzwveHNsOnN0eWxlc2hlZXQ+PC9kc2lnOlRyYW5zZm9ybT48ZHNpZzpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjwvZHNpZzpUcmFuc2Zvcm1zPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+MkhpVGNLZGZaOU84M3d0aFVGUDhJU1JkUlhRPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjwvZHNpZzpNYW5pZmVzdD48L2RzaWc6T2JqZWN0PjwvZHNpZzpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtcnNhLWRldGFjaGVkLnhtbCBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLXJzYS1kZXRhY2hlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjJlMjhmNgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLXJzYS1kZXRhY2hlZC54bWwKQEAgLTAsMCArMSBAQAorPGRzaWc6U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPjxkc2lnOlJlZmVyZW5jZSBVUkk9Imh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzMxNjEudHh0Ij48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPmVUNVpVOWZrSXdROWI5WEFZcStpSVluajBEUT08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6U2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZT5jbERmS01xMTJJOUpRcDAxUlN6RGNCcm8vK0g4clRnYUQ5a2dVQ2d2QThkRUY1NUVlc3NGVVA2UkMrS0hab05TSlZHY25TS0phNlJ0ZGkzbXdTN2IzekJvNHBFeGlNTEhneWkxVU1WaWtsWCtNQzc1b1U2dFNEczNQUDhyNkJLbVpxajBGTmNqT2g3d2dKemV5OG55djhVclRuUW5pU3ZaSzYySllLejczc1k9PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjxkc2lnOktleUluZm8+PGRzaWc6WDUwOURhdGE+PGRzaWc6WDUwOUNlcnRpZmljYXRlPk1JSUMwRENDQWptZ0F3SUJBZ0lERDBKQk1BMEdDU3FHU0liM0RRRUJCQVVBTUh3eEN6QUpCZ05WQkFZVEFsVlRNUkV3RHdZRFZRUUlFd2hPWlhjZ1dXOXlhekVSTUE4R0ExVUVCeE1JVG1WM0lGbHZjbXN4R1RBWEJnTlZCQW9URUZCb1lXOXpJRlJsWTJodWIyeHZaM2t4RkRBU0JnTlZCQXNUQzBWdVoybHVaV1Z5YVc1bk1SWXdGQVlEVlFRREV3MVVaWE4wSUVOQklDaFNVMEVwTUI0WERUQXlNRFF5T1RFNU1UWTBNRm9YRFRFeU1EUXlOakU1TVRZME1Gb3dnWUF4Q3pBSkJnTlZCQVlUQWxWVE1SRXdEd1lEVlFRSUV3aE9aWGNnV1c5eWF6RVJNQThHQTFVRUJ4TUlUbVYzSUZsdmNtc3hHVEFYQmdOVkJBb1RFRkJvWVc5eklGUmxZMmh1YjJ4dloza3hGREFTQmdOVkJBc1RDMFZ1WjJsdVpXVnlhVzVuTVJvd0dBWURWUVFERXhGVVpYTjBJRU5zYVdWdWRDQW9VbE5CS1RDQm56QU5CZ2txaGtpRzl3MEJBUUVGQUFPQmpRQXdnWWtDZ1lFQWdJYjZuQUI5b1MvQUk1aklqNld5bXZRaFJ4aU1sRTA3RzRhYm1NbGlZaTV6V3p2YUZFMnRuVStSWklCZ3RvWGNnREVJVS92c0xRdXQ3bnpDbjltSHhDOEpFYVY0RDRVOTFqNjRBeVpha1NocUp3N3FqSmZxVXh4UEwweUp2Mm9GaW91UERqR3VKOUpQaTBOcnNacSt5ZldmTTU0czRiOVNOa2NPSVZNeWJaVUNBd0VBQWFOYk1Ga3dEQVlEVlIwVEFRSC9CQUl3QURBUEJnTlZIUThCQWY4RUJRTURCOWdBTUJrR0ExVWRFUVFTTUJDQkRuUmxZMmhBY0doaGIzTXVZMjl0TUIwR0ExVWREZ1FXQkJRVDU4ckJDeFBtVkxlWmFZR1JxVlJPblFsRmJ6QU5CZ2txaGtpRzl3MEJBUVFGQUFPQmdRQ3hiQ292RlNUMjV0K3J5TjFSaXBxb3p4SlFjZ3VLZmVDd2JmZ0JOb2J6Y1J2b1cwa1NJZjd6aTRtdFFhakRNME5mc2xGRjUxL2RleDVSbjY0SG1GRnNoU3dTdlFRTXlmNUNmYXF2MlhRNjBPWHE2bkFGRzZXYkhvZ2U2UnFmSWV6Mk1XRExvU0I2cGxzakt0TW1MM21jeWJCaFJPdFg1R0d1THgxTnRmaE5GUT09PC9kc2lnOlg1MDlDZXJ0aWZpY2F0ZT48ZHNpZzpYNTA5SXNzdWVyU2VyaWFsPjxkc2lnOlg1MDlJc3N1ZXJOYW1lPkNOPVRlc3QgQ0EgKFJTQSksT1U9RW5naW5lZXJpbmcsTz1QaGFvcyBUZWNobm9sb2d5LEw9TmV3IFlvcmssU1Q9TmV3IFlvcmssQz1VUzwvZHNpZzpYNTA5SXNzdWVyTmFtZT48ZHNpZzpYNTA5U2VyaWFsTnVtYmVyPjEwMDAwMDE8L2RzaWc6WDUwOVNlcmlhbE51bWJlcj48L2RzaWc6WDUwOUlzc3VlclNlcmlhbD48ZHNpZzpYNTA5U3ViamVjdE5hbWU+Q049VGVzdCBDbGllbnQgKFJTQSksT1U9RW5naW5lZXJpbmcsTz1QaGFvcyBUZWNobm9sb2d5LEw9TmV3IFlvcmssU1Q9TmV3IFlvcmssQz1VUzwvZHNpZzpYNTA5U3ViamVjdE5hbWU+PGRzaWc6WDUwOVNLST5FK2ZLd1FzVDVsUzNtV21Ca2FsVVRwMEpSVzg9PC9kc2lnOlg1MDlTS0k+PC9kc2lnOlg1MDlEYXRhPjwvZHNpZzpLZXlJbmZvPjwvZHNpZzpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtcnNhLWVudmVsb3BlZC1iYWQtZGlnZXN0LXZhbC54bWwgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL3NpZ25hdHVyZS1yc2EtZW52ZWxvcGVkLWJhZC1kaWdlc3QtdmFsLnhtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44N2NiZjI5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtcnNhLWVudmVsb3BlZC1iYWQtZGlnZXN0LXZhbC54bWwKQEAgLTAsMCArMSw2IEBACis8cGxheWVyIGJhdHM9ImxlZnQiIGlkPSIxMDAxMiIgdGhyb3dzPSJyaWdodCI+CisJPCEtLSBIZXJlJ3MgYSBjb21tZW50IC0tPgorCTxuYW1lPkFsZm9uc28gU29yaWFubzwvbmFtZT4KKwk8cG9zaXRpb24+MkI8L3Bvc2l0aW9uPgorCTx0ZWFtPk5ldyBZb3JrIFlhbmtlZXM8L3RlYW0+Cis8ZHNpZzpTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIi8+PGRzaWc6UmVmZXJlbmNlIFVSST0iIj48ZHNpZzpUcmFuc2Zvcm1zPjxkc2lnOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PC9kc2lnOlRyYW5zZm9ybXM+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT5uTTUyVi9ielJkMFZFM0V3U2hXdHNCelRFRGM9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+ZmJ5ZTRYbS8vUlBVVHNMZDFkd0pQbzBnUFpZWDZnVllDRUIvZ3oyMzQ4RUFSTmsvbkNDY2gxZkZmcHVxQUdNS2c0YXlWQzB5V2tVeUU1VjRRQjMzamFHbGg5d3VOUVNqeHM2VEl2RndTc1QrMGlvRGdWZ0Z2MGdWZWFzYnlOTDRyRkVIdUFXTDhRS3dEVDlMNmIyd1V2SkM5MERtcEJzOUdNUjJqVFpJV2xNPTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48ZHNpZzpLZXlJbmZvPjxkc2lnOlg1MDlEYXRhPjxkc2lnOlg1MDlDZXJ0aWZpY2F0ZT5NSUlDMERDQ0FqbWdBd0lCQWdJREQwSkJNQTBHQ1NxR1NJYjNEUUVCQkFVQU1Id3hDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJRXdoT1pYY2dXVzl5YXpFUk1BOEdBMVVFQnhNSVRtVjNJRmx2Y21zeEdUQVhCZ05WQkFvVEVGQm9ZVzl6SUZSbFkyaHViMnh2WjNreEZEQVNCZ05WQkFzVEMwVnVaMmx1WldWeWFXNW5NUll3RkFZRFZRUURFdzFVWlhOMElFTkJJQ2hTVTBFcE1CNFhEVEF5TURReU9URTVNVFkwTUZvWERURXlNRFF5TmpFNU1UWTBNRm93Z1lBeEN6QUpCZ05WQkFZVEFsVlRNUkV3RHdZRFZRUUlFd2hPWlhjZ1dXOXlhekVSTUE4R0ExVUVCeE1JVG1WM0lGbHZjbXN4R1RBWEJnTlZCQW9URUZCb1lXOXpJRlJsWTJodWIyeHZaM2t4RkRBU0JnTlZCQXNUQzBWdVoybHVaV1Z5YVc1bk1Sb3dHQVlEVlFRREV4RlVaWE4wSUVOc2FXVnVkQ0FvVWxOQktUQ0JuekFOQmdrcWhraUc5dzBCQVFFRkFBT0JqUUF3Z1lrQ2dZRUFnSWI2bkFCOW9TL0FJNWpJajZXeW12UWhSeGlNbEUwN0c0YWJtTWxpWWk1eld6dmFGRTJ0blUrUlpJQmd0b1hjZ0RFSVUvdnNMUXV0N256Q245bUh4QzhKRWFWNEQ0VTkxajY0QXlaYWtTaHFKdzdxakpmcVV4eFBMMHlKdjJvRmlvdVBEakd1SjlKUGkwTnJzWnEreWZXZk01NHM0YjlTTmtjT0lWTXliWlVDQXdFQUFhTmJNRmt3REFZRFZSMFRBUUgvQkFJd0FEQVBCZ05WSFE4QkFmOEVCUU1EQjlnQU1Ca0dBMVVkRVFRU01CQ0JEblJsWTJoQWNHaGhiM011WTI5dE1CMEdBMVVkRGdRV0JCUVQ1OHJCQ3hQbVZMZVphWUdScVZST25RbEZiekFOQmdrcWhraUc5dzBCQVFRRkFBT0JnUUN4YkNvdkZTVDI1dCtyeU4xUmlwcW96eEpRY2d1S2ZlQ3diZmdCTm9iemNSdm9XMGtTSWY3emk0bXRRYWpETTBOZnNsRkY1MS9kZXg1Um42NEhtRkZzaFN3U3ZRUU15ZjVDZmFxdjJYUTYwT1hxNm5BRkc2V2JIb2dlNlJxZkllejJNV0RMb1NCNnBsc2pLdE1tTDNtY3liQmhST3RYNUdHdUx4MU50ZmhORlE9PTwvZHNpZzpYNTA5Q2VydGlmaWNhdGU+PGRzaWc6WDUwOUlzc3VlclNlcmlhbD48ZHNpZzpYNTA5SXNzdWVyTmFtZT5DTj1UZXN0IENBIChSU0EpLE9VPUVuZ2luZWVyaW5nLE89UGhhb3MgVGVjaG5vbG9neSxMPU5ldyBZb3JrLFNUPU5ldyBZb3JrLEM9VVM8L2RzaWc6WDUwOUlzc3Vlck5hbWU+PGRzaWc6WDUwOVNlcmlhbE51bWJlcj4xMDAwMDAxPC9kc2lnOlg1MDlTZXJpYWxOdW1iZXI+PC9kc2lnOlg1MDlJc3N1ZXJTZXJpYWw+PGRzaWc6WDUwOVN1YmplY3ROYW1lPkNOPVRlc3QgQ2xpZW50IChSU0EpLE9VPUVuZ2luZWVyaW5nLE89UGhhb3MgVGVjaG5vbG9neSxMPU5ldyBZb3JrLFNUPU5ldyBZb3JrLEM9VVM8L2RzaWc6WDUwOVN1YmplY3ROYW1lPjxkc2lnOlg1MDlTS0k+RStmS3dRc1Q1bFMzbVdtQmthbFVUcDBKUlc4PTwvZHNpZzpYNTA5U0tJPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48L2RzaWc6U2lnbmF0dXJlPjwvcGxheWVyPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLXJzYS1lbnZlbG9wZWQtYmFkLXNpZy54bWwgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL3NpZ25hdHVyZS1yc2EtZW52ZWxvcGVkLWJhZC1zaWcueG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQ5ZGQ0N2MKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL3NpZ25hdHVyZS1yc2EtZW52ZWxvcGVkLWJhZC1zaWcueG1sCkBAIC0wLDAgKzEsNiBAQAorPHBsYXllciBiYXRzPSJsZWZ0IiBpZD0iMTAwMTIiIHRocm93cz0icmlnaHQiPgorCTwhLS0gSGVyZSdzIGEgY29tbWVudCAtLT4KKwk8bmFtZT5BbGZvbnNvIFNvcmlhbm88L25hbWU+CisJPHBvc2l0aW9uPjJCPC9wb3NpdGlvbj4KKwk8dGVhbT5OZXcgWW9yayBZYW5rZWVzPC90ZWFtPgorPGRzaWc6U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPjxkc2lnOlJlZmVyZW5jZSBVUkk9IiI+PGRzaWc6VHJhbnNmb3Jtcz48ZHNpZzpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjwvZHNpZzpUcmFuc2Zvcm1zPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+bkRGMlYvYnpSZDBWRTNFd1NoV3RzQnpURURjPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjxkc2lnOlJlZmVyZW5jZSBJZD0icmVmLUVabk55NlFDc2trRHB2N2t3Y01sOXcyMiIgVVJJPSIiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI21kNSIvPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+ZmJ5ZTRYbS8vUlBVVHNMZDFkd0pQbzBnUFpZWDZnVllDRUIvZ3oyMzQ4RUFSTmsvbkNDY2gxZkZmcHVxQUdNS2c0YXlWQzB5V2tVeUU1VjRRQjMzamFHbGg5d3VOUVNqeHM2VEl2RndTc1QrMGlvRGdWZ0Z2MGdWZWFzYnlOTDRyRkVIdUFXTDhRS3dEVDlMNmIyd1V2SkM5MERtcEJzOUdNUjJqVFpJV2xNPTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48ZHNpZzpLZXlJbmZvPjxkc2lnOlg1MDlEYXRhPjxkc2lnOlg1MDlDZXJ0aWZpY2F0ZT5NSUlDMERDQ0FqbWdBd0lCQWdJREQwSkJNQTBHQ1NxR1NJYjNEUUVCQkFVQU1Id3hDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJRXdoT1pYY2dXVzl5YXpFUk1BOEdBMVVFQnhNSVRtVjNJRmx2Y21zeEdUQVhCZ05WQkFvVEVGQm9ZVzl6SUZSbFkyaHViMnh2WjNreEZEQVNCZ05WQkFzVEMwVnVaMmx1WldWeWFXNW5NUll3RkFZRFZRUURFdzFVWlhOMElFTkJJQ2hTVTBFcE1CNFhEVEF5TURReU9URTVNVFkwTUZvWERURXlNRFF5TmpFNU1UWTBNRm93Z1lBeEN6QUpCZ05WQkFZVEFsVlRNUkV3RHdZRFZRUUlFd2hPWlhjZ1dXOXlhekVSTUE4R0ExVUVCeE1JVG1WM0lGbHZjbXN4R1RBWEJnTlZCQW9URUZCb1lXOXpJRlJsWTJodWIyeHZaM2t4RkRBU0JnTlZCQXNUQzBWdVoybHVaV1Z5YVc1bk1Sb3dHQVlEVlFRREV4RlVaWE4wSUVOc2FXVnVkQ0FvVWxOQktUQ0JuekFOQmdrcWhraUc5dzBCQVFFRkFBT0JqUUF3Z1lrQ2dZRUFnSWI2bkFCOW9TL0FJNWpJajZXeW12UWhSeGlNbEUwN0c0YWJtTWxpWWk1eld6dmFGRTJ0blUrUlpJQmd0b1hjZ0RFSVUvdnNMUXV0N256Q245bUh4QzhKRWFWNEQ0VTkxajY0QXlaYWtTaHFKdzdxakpmcVV4eFBMMHlKdjJvRmlvdVBEakd1SjlKUGkwTnJzWnEreWZXZk01NHM0YjlTTmtjT0lWTXliWlVDQXdFQUFhTmJNRmt3REFZRFZSMFRBUUgvQkFJd0FEQVBCZ05WSFE4QkFmOEVCUU1EQjlnQU1Ca0dBMVVkRVFRU01CQ0JEblJsWTJoQWNHaGhiM011WTI5dE1CMEdBMVVkRGdRV0JCUVQ1OHJCQ3hQbVZMZVphWUdScVZST25RbEZiekFOQmdrcWhraUc5dzBCQVFRRkFBT0JnUUN4YkNvdkZTVDI1dCtyeU4xUmlwcW96eEpRY2d1S2ZlQ3diZmdCTm9iemNSdm9XMGtTSWY3emk0bXRRYWpETTBOZnNsRkY1MS9kZXg1Um42NEhtRkZzaFN3U3ZRUU15ZjVDZmFxdjJYUTYwT1hxNm5BRkc2V2JIb2dlNlJxZkllejJNV0RMb1NCNnBsc2pLdE1tTDNtY3liQmhST3RYNUdHdUx4MU50ZmhORlE9PTwvZHNpZzpYNTA5Q2VydGlmaWNhdGU+PGRzaWc6WDUwOUlzc3VlclNlcmlhbD48ZHNpZzpYNTA5SXNzdWVyTmFtZT5DTj1UZXN0IENBIChSU0EpLE9VPUVuZ2luZWVyaW5nLE89UGhhb3MgVGVjaG5vbG9neSxMPU5ldyBZb3JrLFNUPU5ldyBZb3JrLEM9VVM8L2RzaWc6WDUwOUlzc3Vlck5hbWU+PGRzaWc6WDUwOVNlcmlhbE51bWJlcj4xMDAwMDAxPC9kc2lnOlg1MDlTZXJpYWxOdW1iZXI+PC9kc2lnOlg1MDlJc3N1ZXJTZXJpYWw+PGRzaWc6WDUwOVN1YmplY3ROYW1lPkNOPVRlc3QgQ2xpZW50IChSU0EpLE9VPUVuZ2luZWVyaW5nLE89UGhhb3MgVGVjaG5vbG9neSxMPU5ldyBZb3JrLFNUPU5ldyBZb3JrLEM9VVM8L2RzaWc6WDUwOVN1YmplY3ROYW1lPjxkc2lnOlg1MDlTS0k+RStmS3dRc1Q1bFMzbVdtQmthbFVUcDBKUlc4PTwvZHNpZzpYNTA5U0tJPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48L2RzaWc6U2lnbmF0dXJlPjwvcGxheWVyPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLXJzYS1lbnZlbG9wZWQueG1sIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtcnNhLWVudmVsb3BlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzI1NzA5ZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLXJzYS1lbnZlbG9wZWQueG1sCkBAIC0wLDAgKzEsNiBAQAorPHBsYXllciBiYXRzPSJsZWZ0IiBpZD0iMTAwMTIiIHRocm93cz0icmlnaHQiPgorCTwhLS0gSGVyZSdzIGEgY29tbWVudCAtLT4KKwk8bmFtZT5BbGZvbnNvIFNvcmlhbm88L25hbWU+CisJPHBvc2l0aW9uPjJCPC9wb3NpdGlvbj4KKwk8dGVhbT5OZXcgWW9yayBZYW5rZWVzPC90ZWFtPgorPGRzaWc6U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPjxkc2lnOlJlZmVyZW5jZSBVUkk9IiI+PGRzaWc6VHJhbnNmb3Jtcz48ZHNpZzpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjwvZHNpZzpUcmFuc2Zvcm1zPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+bkRGMlYvYnpSZDBWRTNFd1NoV3RzQnpURURjPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjwvZHNpZzpTaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlPmZieWU0WG0vL1JQVVRzTGQxZHdKUG8wZ1BaWVg2Z1ZZQ0VCL2d6MjM0OEVBUk5rL25DQ2NoMWZGZnB1cUFHTUtnNGF5VkMweVdrVXlFNVY0UUIzM2phR2xoOXd1TlFTanhzNlRJdkZ3U3NUKzBpb0RnVmdGdjBnVmVhc2J5Tkw0ckZFSHVBV0w4UUt3RFQ5TDZiMndVdkpDOTBEbXBCczlHTVIyalRaSVdsTT08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJQzBEQ0NBam1nQXdJQkFnSUREMEpCTUEwR0NTcUdTSWIzRFFFQkJBVUFNSHd4Q3pBSkJnTlZCQVlUQWxWVE1SRXdEd1lEVlFRSUV3aE9aWGNnV1c5eWF6RVJNQThHQTFVRUJ4TUlUbVYzSUZsdmNtc3hHVEFYQmdOVkJBb1RFRkJvWVc5eklGUmxZMmh1YjJ4dloza3hGREFTQmdOVkJBc1RDMFZ1WjJsdVpXVnlhVzVuTVJZd0ZBWURWUVFERXcxVVpYTjBJRU5CSUNoU1UwRXBNQjRYRFRBeU1EUXlPVEU1TVRZME1Gb1hEVEV5TURReU5qRTVNVFkwTUZvd2dZQXhDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJRXdoT1pYY2dXVzl5YXpFUk1BOEdBMVVFQnhNSVRtVjNJRmx2Y21zeEdUQVhCZ05WQkFvVEVGQm9ZVzl6SUZSbFkyaHViMnh2WjNreEZEQVNCZ05WQkFzVEMwVnVaMmx1WldWeWFXNW5NUm93R0FZRFZRUURFeEZVWlhOMElFTnNhV1Z1ZENBb1VsTkJLVENCbnpBTkJna3Foa2lHOXcwQkFRRUZBQU9CalFBd2dZa0NnWUVBZ0liNm5BQjlvUy9BSTVqSWo2V3ltdlFoUnhpTWxFMDdHNGFibU1saVlpNXpXenZhRkUydG5VK1JaSUJndG9YY2dERUlVL3ZzTFF1dDduekNuOW1IeEM4SkVhVjRENFU5MWo2NEF5WmFrU2hxSnc3cWpKZnFVeHhQTDB5SnYyb0Zpb3VQRGpHdUo5SlBpME5yc1pxK3lmV2ZNNTRzNGI5U05rY09JVk15YlpVQ0F3RUFBYU5iTUZrd0RBWURWUjBUQVFIL0JBSXdBREFQQmdOVkhROEJBZjhFQlFNREI5Z0FNQmtHQTFVZEVRUVNNQkNCRG5SbFkyaEFjR2hoYjNNdVkyOXRNQjBHQTFVZERnUVdCQlFUNThyQkN4UG1WTGVaYVlHUnFWUk9uUWxGYnpBTkJna3Foa2lHOXcwQkFRUUZBQU9CZ1FDeGJDb3ZGU1QyNXQrcnlOMVJpcHFvenhKUWNndUtmZUN3YmZnQk5vYnpjUnZvVzBrU0lmN3ppNG10UWFqRE0wTmZzbEZGNTEvZGV4NVJuNjRIbUZGc2hTd1N2UVFNeWY1Q2ZhcXYyWFE2ME9YcTZuQUZHNldiSG9nZTZScWZJZXoyTVdETG9TQjZwbHNqS3RNbUwzbWN5YkJoUk90WDVHR3VMeDFOdGZoTkZRPT08L2RzaWc6WDUwOUNlcnRpZmljYXRlPjxkc2lnOlg1MDlJc3N1ZXJTZXJpYWw+PGRzaWc6WDUwOUlzc3Vlck5hbWU+Q049VGVzdCBDQSAoUlNBKSxPVT1FbmdpbmVlcmluZyxPPVBoYW9zIFRlY2hub2xvZ3ksTD1OZXcgWW9yayxTVD1OZXcgWW9yayxDPVVTPC9kc2lnOlg1MDlJc3N1ZXJOYW1lPjxkc2lnOlg1MDlTZXJpYWxOdW1iZXI+MTAwMDAwMTwvZHNpZzpYNTA5U2VyaWFsTnVtYmVyPjwvZHNpZzpYNTA5SXNzdWVyU2VyaWFsPjxkc2lnOlg1MDlTdWJqZWN0TmFtZT5DTj1UZXN0IENsaWVudCAoUlNBKSxPVT1FbmdpbmVlcmluZyxPPVBoYW9zIFRlY2hub2xvZ3ksTD1OZXcgWW9yayxTVD1OZXcgWW9yayxDPVVTPC9kc2lnOlg1MDlTdWJqZWN0TmFtZT48ZHNpZzpYNTA5U0tJPkUrZkt3UXNUNWxTM21XbUJrYWxVVHAwSlJXOD08L2RzaWc6WDUwOVNLST48L2RzaWc6WDUwOURhdGE+PC9kc2lnOktleUluZm8+PC9kc2lnOlNpZ25hdHVyZT48L3BsYXllcj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL3NpZ25hdHVyZS1yc2EtZW52ZWxvcGluZy54bWwgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL3NpZ25hdHVyZS1yc2EtZW52ZWxvcGluZy54bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYmY4Y2U2OQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLXJzYS1lbnZlbG9waW5nLnhtbApAQCAtMCwwICsxLDYgQEAKKzxkc2lnOlNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzaWc6U2lnbmVkSW5mbz48ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48ZHNpZzpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz48ZHNpZzpSZWZlcmVuY2UgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCIgVVJJPSIjRFNpZy5PYmplY3Rfb1pncGJjZXJHdGIwWVdnUGNCdjhGZzIyIj48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPk9MZGd2NHZXUzREQXNpWlVyNDFCWmdwcEIyUT08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6U2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZT5laXVEOTRqeWVkenVIdmhJQ3lROHZrZUhqeWhpRmYxZFdRRWlrQWFmK3EyZWRKdW1nejJ3RUNWQTRnOHYvOTdTcDhmNUEvOTdrdFZBa25zUnhtQzdKSHV3VHpnYXo5Z0t2cUliQ3BIWkxBUHhvdkkxd0E4bytZenVIMWx2NFJ0a012M1dZcXd1R20zZWlzbkV2NDY0SDlTYTJWNkwwVlVITlBrOE1Fd0RVeW89PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjxkc2lnOktleUluZm8+PGRzaWc6WDUwOURhdGE+PGRzaWc6WDUwOUNlcnRpZmljYXRlPk1JSUMwRENDQWptZ0F3SUJBZ0lERDBKQk1BMEdDU3FHU0liM0RRRUJCQVVBTUh3eEN6QUpCZ05WQkFZVEFsVlRNUkV3RHdZRFZRUUlFd2hPWlhjZ1dXOXlhekVSTUE4R0ExVUVCeE1JVG1WM0lGbHZjbXN4R1RBWEJnTlZCQW9URUZCb1lXOXpJRlJsWTJodWIyeHZaM2t4RkRBU0JnTlZCQXNUQzBWdVoybHVaV1Z5YVc1bk1SWXdGQVlEVlFRREV3MVVaWE4wSUVOQklDaFNVMEVwTUI0WERUQXlNRFF5T1RFNU1UWTBNRm9YRFRFeU1EUXlOakU1TVRZME1Gb3dnWUF4Q3pBSkJnTlZCQVlUQWxWVE1SRXdEd1lEVlFRSUV3aE9aWGNnV1c5eWF6RVJNQThHQTFVRUJ4TUlUbVYzSUZsdmNtc3hHVEFYQmdOVkJBb1RFRkJvWVc5eklGUmxZMmh1YjJ4dloza3hGREFTQmdOVkJBc1RDMFZ1WjJsdVpXVnlhVzVuTVJvd0dBWURWUVFERXhGVVpYTjBJRU5zYVdWdWRDQW9VbE5CS1RDQm56QU5CZ2txaGtpRzl3MEJBUUVGQUFPQmpRQXdnWWtDZ1lFQWdJYjZuQUI5b1MvQUk1aklqNld5bXZRaFJ4aU1sRTA3RzRhYm1NbGlZaTV6V3p2YUZFMnRuVStSWklCZ3RvWGNnREVJVS92c0xRdXQ3bnpDbjltSHhDOEpFYVY0RDRVOTFqNjRBeVpha1NocUp3N3FqSmZxVXh4UEwweUp2Mm9GaW91UERqR3VKOUpQaTBOcnNacSt5ZldmTTU0czRiOVNOa2NPSVZNeWJaVUNBd0VBQWFOYk1Ga3dEQVlEVlIwVEFRSC9CQUl3QURBUEJnTlZIUThCQWY4RUJRTURCOWdBTUJrR0ExVWRFUVFTTUJDQkRuUmxZMmhBY0doaGIzTXVZMjl0TUIwR0ExVWREZ1FXQkJRVDU4ckJDeFBtVkxlWmFZR1JxVlJPblFsRmJ6QU5CZ2txaGtpRzl3MEJBUVFGQUFPQmdRQ3hiQ292RlNUMjV0K3J5TjFSaXBxb3p4SlFjZ3VLZmVDd2JmZ0JOb2J6Y1J2b1cwa1NJZjd6aTRtdFFhakRNME5mc2xGRjUxL2RleDVSbjY0SG1GRnNoU3dTdlFRTXlmNUNmYXF2MlhRNjBPWHE2bkFGRzZXYkhvZ2U2UnFmSWV6Mk1XRExvU0I2cGxzakt0TW1MM21jeWJCaFJPdFg1R0d1THgxTnRmaE5GUT09PC9kc2lnOlg1MDlDZXJ0aWZpY2F0ZT48ZHNpZzpYNTA5SXNzdWVyU2VyaWFsPjxkc2lnOlg1MDlJc3N1ZXJOYW1lPkNOPVRlc3QgQ0EgKFJTQSksT1U9RW5naW5lZXJpbmcsTz1QaGFvcyBUZWNobm9sb2d5LEw9TmV3IFlvcmssU1Q9TmV3IFlvcmssQz1VUzwvZHNpZzpYNTA5SXNzdWVyTmFtZT48ZHNpZzpYNTA5U2VyaWFsTnVtYmVyPjEwMDAwMDE8L2RzaWc6WDUwOVNlcmlhbE51bWJlcj48L2RzaWc6WDUwOUlzc3VlclNlcmlhbD48ZHNpZzpYNTA5U3ViamVjdE5hbWU+Q049VGVzdCBDbGllbnQgKFJTQSksT1U9RW5naW5lZXJpbmcsTz1QaGFvcyBUZWNobm9sb2d5LEw9TmV3IFlvcmssU1Q9TmV3IFlvcmssQz1VUzwvZHNpZzpYNTA5U3ViamVjdE5hbWU+PGRzaWc6WDUwOVNLST5FK2ZLd1FzVDVsUzNtV21Ca2FsVVRwMEpSVzg9PC9kc2lnOlg1MDlTS0k+PC9kc2lnOlg1MDlEYXRhPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdCBJZD0iRFNpZy5PYmplY3Rfb1pncGJjZXJHdGIwWVdnUGNCdjhGZzIyIiBNaW1lVHlwZT0idGV4dC94bWwiPjxwbGF5ZXIgYmF0cz0ibGVmdCIgaWQ9IjEwMDEyIiB0aHJvd3M9InJpZ2h0Ij4KKwk8IS0tIEhlcmUncyBhIGNvbW1lbnQgLS0+CisJPG5hbWU+QWxmb25zbyBTb3JpYW5vPC9uYW1lPgorCTxwb3NpdGlvbj4yQjwvcG9zaXRpb24+CisJPHRlYW0+TmV3IFlvcmsgWWFua2VlczwvdGVhbT4KKzwvcGxheWVyPjwvZHNpZzpPYmplY3Q+PC9kc2lnOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL3NpZ25hdHVyZS1yc2EtbWFuaWZlc3QteDUwOS1kYXRhLWNlcnQtY2hhaW4ueG1sIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtcnNhLW1hbmlmZXN0LXg1MDktZGF0YS1jZXJ0LWNoYWluLnhtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lOGVhNTM1Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtcnNhLW1hbmlmZXN0LXg1MDktZGF0YS1jZXJ0LWNoYWluLnhtbApAQCAtMCwwICsxIEBACis8ZHNpZzpTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIi8+PGRzaWc6UmVmZXJlbmNlIElkPSJyZWZlcmVuY2UtbWFuaWZlc3QiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNNYW5pZmVzdCIgVVJJPSIjbWFuaWZlc3QiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+TklZV0dyMUNpV0MwMmNmY2s0N1hmL1VNOUFBPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjwvZHNpZzpTaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlPkUzdHoxMjN3RDBsTzhWd2hWRUJmRlRzRDVnYzBCcGx4Nll0VnVETTBjVUpESGI1RitEaXV4R3VnR3FJdCtDS1VrbFNPMmtTRDdZbURlVG5UK2JYYmJYK3dva0dRaEtpYitHaEhRYllXOHJja3ZGOUtKN1orVTF1S0tHVzNOeUtOMjgxUTMwMVhEUVlLclN3QksrbnM0K1BtVnBOTUI4UmZxcDZqV0prWDFhRT08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJQzBEQ0NBam1nQXdJQkFnSUREMEpCTUEwR0NTcUdTSWIzRFFFQkJBVUFNSHd4Q3pBSkJnTlZCQVlUQWxWVE1SRXdEd1lEVlFRSUV3aE9aWGNnV1c5eWF6RVJNQThHQTFVRUJ4TUlUbVYzSUZsdmNtc3hHVEFYQmdOVkJBb1RFRkJvWVc5eklGUmxZMmh1YjJ4dloza3hGREFTQmdOVkJBc1RDMFZ1WjJsdVpXVnlhVzVuTVJZd0ZBWURWUVFERXcxVVpYTjBJRU5CSUNoU1UwRXBNQjRYRFRBeU1EUXlPVEU1TVRZME1Gb1hEVEV5TURReU5qRTVNVFkwTUZvd2dZQXhDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJRXdoT1pYY2dXVzl5YXpFUk1BOEdBMVVFQnhNSVRtVjNJRmx2Y21zeEdUQVhCZ05WQkFvVEVGQm9ZVzl6SUZSbFkyaHViMnh2WjNreEZEQVNCZ05WQkFzVEMwVnVaMmx1WldWeWFXNW5NUm93R0FZRFZRUURFeEZVWlhOMElFTnNhV1Z1ZENBb1VsTkJLVENCbnpBTkJna3Foa2lHOXcwQkFRRUZBQU9CalFBd2dZa0NnWUVBZ0liNm5BQjlvUy9BSTVqSWo2V3ltdlFoUnhpTWxFMDdHNGFibU1saVlpNXpXenZhRkUydG5VK1JaSUJndG9YY2dERUlVL3ZzTFF1dDduekNuOW1IeEM4SkVhVjRENFU5MWo2NEF5WmFrU2hxSnc3cWpKZnFVeHhQTDB5SnYyb0Zpb3VQRGpHdUo5SlBpME5yc1pxK3lmV2ZNNTRzNGI5U05rY09JVk15YlpVQ0F3RUFBYU5iTUZrd0RBWURWUjBUQVFIL0JBSXdBREFQQmdOVkhROEJBZjhFQlFNREI5Z0FNQmtHQTFVZEVRUVNNQkNCRG5SbFkyaEFjR2hoYjNNdVkyOXRNQjBHQTFVZERnUVdCQlFUNThyQkN4UG1WTGVaYVlHUnFWUk9uUWxGYnpBTkJna3Foa2lHOXcwQkFRUUZBQU9CZ1FDeGJDb3ZGU1QyNXQrcnlOMVJpcHFvenhKUWNndUtmZUN3YmZnQk5vYnpjUnZvVzBrU0lmN3ppNG10UWFqRE0wTmZzbEZGNTEvZGV4NVJuNjRIbUZGc2hTd1N2UVFNeWY1Q2ZhcXYyWFE2ME9YcTZuQUZHNldiSG9nZTZScWZJZXoyTVdETG9TQjZwbHNqS3RNbUwzbWN5YkJoUk90WDVHR3VMeDFOdGZoTkZRPT08L2RzaWc6WDUwOUNlcnRpZmljYXRlPjxkc2lnOlg1MDlDZXJ0aWZpY2F0ZT5NSUlDempDQ0FqZWdBd0lCQWdJREFZYWdNQTBHQ1NxR1NJYjNEUUVCQkFVQU1Id3hDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJRXdoT1pYY2dXVzl5YXpFUk1BOEdBMVVFQnhNSVRtVjNJRmx2Y21zeEdUQVhCZ05WQkFvVEVGQm9ZVzl6SUZSbFkyaHViMnh2WjNreEZEQVNCZ05WQkFzVEMwVnVaMmx1WldWeWFXNW5NUll3RkFZRFZRUURFdzFVWlhOMElFTkJJQ2hTVTBFcE1CNFhEVEF5TURReU9URTVNRFV5TkZvWERURXdNVEl6TVRBMU1EQXdNRm93ZkRFTE1Ba0dBMVVFQmhNQ1ZWTXhFVEFQQmdOVkJBZ1RDRTVsZHlCWmIzSnJNUkV3RHdZRFZRUUhFd2hPWlhjZ1dXOXlhekVaTUJjR0ExVUVDaE1RVUdoaGIzTWdWR1ZqYUc1dmJHOW5lVEVVTUJJR0ExVUVDeE1MUlc1bmFXNWxaWEpwYm1jeEZqQVVCZ05WQkFNVERWUmxjM1FnUTBFZ0tGSlRRU2t3Z1o4d0RRWUpLb1pJaHZjTkFRRUJCUUFEZ1kwQU1JR0pBb0dCQUxPNUJMZE1JLzgvZ2VOZ2syU2dia2xRSW1UdFFEd2hrY3V0QWx3MzVyUy84NFkrQ3QxcUJpNXI4YzZKUlZiL29FcVFTczlUQmN6cExuZCtEN3hpcUo2L0pjQjNSOU1EZy9wQVZvSkNyQ1k0b1pObGtKU2FzWVdLWm83N3pTdVVwaE5FZkpFVlo0U010d3haUUxIRmFpbEpIbTRMMzB6akkyRTBOMllIeWk3L0FnTUJBQUdqWGpCY01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0R3WURWUjBQQVFIL0JBVURBd2ZHQURBWkJnTlZIUkVFRWpBUWdRNTBaV05vUUhCb1lXOXpMbU52YlRBZEJnTlZIUTRFRmdRVU13bFIwSEMxaGxvNDg3djNaNDdlZ2hvRE1Nd3dEUVlKS29aSWh2Y05BUUVFQlFBRGdZRUFZK2VsUmVsLzZrRy9vN3hObVU5Q3JaTTFFSk1oM2NIb2VkUE9IdDR5SFA2Y3JqNk9ZWk1BK0M3aWZIWC93dkdwY3daeW1NUHFscjNjUTdCNy9oODh5Q1ZKdUFOVGUxQlF0QTZuWjRDejZCaDlNaXAzbjh5Y3VYQ0RieGtVZDBBTFFZRDZTUzIrYXdWU0hWR1lSbUZSZDl2eVcxbmtnOUVzU2NhcWE3WEcrNkE9PC9kc2lnOlg1MDlDZXJ0aWZpY2F0ZT48L2RzaWc6WDUwOURhdGE+PC9kc2lnOktleUluZm8+PGRzaWc6T2JqZWN0Pjxkc2lnOk1hbmlmZXN0IElkPSJtYW5pZmVzdCI+PGRzaWc6UmVmZXJlbmNlIElkPSJyZWZlcmVuY2UtMCIgVVJJPSJkb2N1bWVudC54bWwiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+NUtjQ3NCbGhzSVA0aU1tSGNhVTJkWEpQVThrPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjxkc2lnOlJlZmVyZW5jZSBJZD0icmVmZXJlbmNlLTEiIFVSST0iaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMzE2MS50eHQiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+ZVQ1WlU5ZmtJd1E5YjlYQVlxK2lJWW5qMERRPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjwvZHNpZzpNYW5pZmVzdD48L2RzaWc6T2JqZWN0PjwvZHNpZzpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtcnNhLW1hbmlmZXN0LXg1MDktZGF0YS1jZXJ0LnhtbCBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLXJzYS1tYW5pZmVzdC14NTA5LWRhdGEtY2VydC54bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMGExZjBiNAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLXJzYS1tYW5pZmVzdC14NTA5LWRhdGEtY2VydC54bWwKQEAgLTAsMCArMSBAQAorPGRzaWc6U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPjxkc2lnOlJlZmVyZW5jZSBJZD0icmVmZXJlbmNlLW1hbmlmZXN0IiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjTWFuaWZlc3QiIFVSST0iI21hbmlmZXN0Ij48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPk5JWVdHcjFDaVdDMDJjZmNrNDdYZi9VTTlBQT08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6U2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZT5FM3R6MTIzd0QwbE84VndoVkVCZkZUc0Q1Z2MwQnBseDZZdFZ1RE0wY1VKREhiNUYrRGl1eEd1Z0dxSXQrQ0tVa2xTTzJrU0Q3WW1EZVRuVCtiWGJiWCt3b2tHUWhLaWIrR2hIUWJZVzhyY2t2RjlLSjdaK1UxdUtLR1czTnlLTjI4MVEzMDFYRFFZS3JTd0JLK25zNCtQbVZwTk1COFJmcXA2aldKa1gxYUU9PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjxkc2lnOktleUluZm8+PGRzaWc6WDUwOURhdGE+PGRzaWc6WDUwOUNlcnRpZmljYXRlPk1JSUMwRENDQWptZ0F3SUJBZ0lERDBKQk1BMEdDU3FHU0liM0RRRUJCQVVBTUh3eEN6QUpCZ05WQkFZVEFsVlRNUkV3RHdZRFZRUUlFd2hPWlhjZ1dXOXlhekVSTUE4R0ExVUVCeE1JVG1WM0lGbHZjbXN4R1RBWEJnTlZCQW9URUZCb1lXOXpJRlJsWTJodWIyeHZaM2t4RkRBU0JnTlZCQXNUQzBWdVoybHVaV1Z5YVc1bk1SWXdGQVlEVlFRREV3MVVaWE4wSUVOQklDaFNVMEVwTUI0WERUQXlNRFF5T1RFNU1UWTBNRm9YRFRFeU1EUXlOakU1TVRZME1Gb3dnWUF4Q3pBSkJnTlZCQVlUQWxWVE1SRXdEd1lEVlFRSUV3aE9aWGNnV1c5eWF6RVJNQThHQTFVRUJ4TUlUbVYzSUZsdmNtc3hHVEFYQmdOVkJBb1RFRkJvWVc5eklGUmxZMmh1YjJ4dloza3hGREFTQmdOVkJBc1RDMFZ1WjJsdVpXVnlhVzVuTVJvd0dBWURWUVFERXhGVVpYTjBJRU5zYVdWdWRDQW9VbE5CS1RDQm56QU5CZ2txaGtpRzl3MEJBUUVGQUFPQmpRQXdnWWtDZ1lFQWdJYjZuQUI5b1MvQUk1aklqNld5bXZRaFJ4aU1sRTA3RzRhYm1NbGlZaTV6V3p2YUZFMnRuVStSWklCZ3RvWGNnREVJVS92c0xRdXQ3bnpDbjltSHhDOEpFYVY0RDRVOTFqNjRBeVpha1NocUp3N3FqSmZxVXh4UEwweUp2Mm9GaW91UERqR3VKOUpQaTBOcnNacSt5ZldmTTU0czRiOVNOa2NPSVZNeWJaVUNBd0VBQWFOYk1Ga3dEQVlEVlIwVEFRSC9CQUl3QURBUEJnTlZIUThCQWY4RUJRTURCOWdBTUJrR0ExVWRFUVFTTUJDQkRuUmxZMmhBY0doaGIzTXVZMjl0TUIwR0ExVWREZ1FXQkJRVDU4ckJDeFBtVkxlWmFZR1JxVlJPblFsRmJ6QU5CZ2txaGtpRzl3MEJBUVFGQUFPQmdRQ3hiQ292RlNUMjV0K3J5TjFSaXBxb3p4SlFjZ3VLZmVDd2JmZ0JOb2J6Y1J2b1cwa1NJZjd6aTRtdFFhakRNME5mc2xGRjUxL2RleDVSbjY0SG1GRnNoU3dTdlFRTXlmNUNmYXF2MlhRNjBPWHE2bkFGRzZXYkhvZ2U2UnFmSWV6Mk1XRExvU0I2cGxzakt0TW1MM21jeWJCaFJPdFg1R0d1THgxTnRmaE5GUT09PC9kc2lnOlg1MDlDZXJ0aWZpY2F0ZT48L2RzaWc6WDUwOURhdGE+PC9kc2lnOktleUluZm8+PGRzaWc6T2JqZWN0Pjxkc2lnOk1hbmlmZXN0IElkPSJtYW5pZmVzdCI+PGRzaWc6UmVmZXJlbmNlIElkPSJyZWZlcmVuY2UtMCIgVVJJPSJkb2N1bWVudC54bWwiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+NUtjQ3NCbGhzSVA0aU1tSGNhVTJkWEpQVThrPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjxkc2lnOlJlZmVyZW5jZSBJZD0icmVmZXJlbmNlLTEiIFVSST0iaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMzE2MS50eHQiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+ZVQ1WlU5ZmtJd1E5YjlYQVlxK2lJWW5qMERRPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjwvZHNpZzpNYW5pZmVzdD48L2RzaWc6T2JqZWN0PjwvZHNpZzpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtcnNhLW1hbmlmZXN0LXg1MDktZGF0YS1pc3N1ZXItc2VyaWFsLnhtbCBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLXJzYS1tYW5pZmVzdC14NTA5LWRhdGEtaXNzdWVyLXNlcmlhbC54bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2IyMGIyOAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLXJzYS1tYW5pZmVzdC14NTA5LWRhdGEtaXNzdWVyLXNlcmlhbC54bWwKQEAgLTAsMCArMSBAQAorPGRzaWc6U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPjxkc2lnOlJlZmVyZW5jZSBJZD0icmVmZXJlbmNlLW1hbmlmZXN0IiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjTWFuaWZlc3QiIFVSST0iI21hbmlmZXN0Ij48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPk5JWVdHcjFDaVdDMDJjZmNrNDdYZi9VTTlBQT08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6U2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZT5FM3R6MTIzd0QwbE84VndoVkVCZkZUc0Q1Z2MwQnBseDZZdFZ1RE0wY1VKREhiNUYrRGl1eEd1Z0dxSXQrQ0tVa2xTTzJrU0Q3WW1EZVRuVCtiWGJiWCt3b2tHUWhLaWIrR2hIUWJZVzhyY2t2RjlLSjdaK1UxdUtLR1czTnlLTjI4MVEzMDFYRFFZS3JTd0JLK25zNCtQbVZwTk1COFJmcXA2aldKa1gxYUU9PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjxkc2lnOktleUluZm8+PGRzaWc6WDUwOURhdGE+PGRzaWc6WDUwOUlzc3VlclNlcmlhbD48ZHNpZzpYNTA5SXNzdWVyTmFtZT5DTj1UZXN0IENBIChSU0EpLE9VPUVuZ2luZWVyaW5nLE89UGhhb3MgVGVjaG5vbG9neSxMPU5ldyBZb3JrLFNUPU5ldyBZb3JrLEM9VVM8L2RzaWc6WDUwOUlzc3Vlck5hbWU+PGRzaWc6WDUwOVNlcmlhbE51bWJlcj4xMDAwMDAxPC9kc2lnOlg1MDlTZXJpYWxOdW1iZXI+PC9kc2lnOlg1MDlJc3N1ZXJTZXJpYWw+PC9kc2lnOlg1MDlEYXRhPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdD48ZHNpZzpNYW5pZmVzdCBJZD0ibWFuaWZlc3QiPjxkc2lnOlJlZmVyZW5jZSBJZD0icmVmZXJlbmNlLTAiIFVSST0iZG9jdW1lbnQueG1sIj48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPjVLY0NzQmxoc0lQNGlNbUhjYVUyZFhKUFU4az08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48ZHNpZzpSZWZlcmVuY2UgSWQ9InJlZmVyZW5jZS0xIiBVUkk9Imh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzMxNjEudHh0Ij48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPmVUNVpVOWZrSXdROWI5WEFZcStpSVluajBEUT08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6TWFuaWZlc3Q+PC9kc2lnOk9iamVjdD48L2RzaWc6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLXJzYS1tYW5pZmVzdC14NTA5LWRhdGEtc2tpLnhtbCBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLXJzYS1tYW5pZmVzdC14NTA5LWRhdGEtc2tpLnhtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wNTU0ZDg2Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtcnNhLW1hbmlmZXN0LXg1MDktZGF0YS1za2kueG1sCkBAIC0wLDAgKzEgQEAKKzxkc2lnOlNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzaWc6U2lnbmVkSW5mbz48ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48ZHNpZzpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz48ZHNpZzpSZWZlcmVuY2UgSWQ9InJlZmVyZW5jZS1tYW5pZmVzdCIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI01hbmlmZXN0IiBVUkk9IiNtYW5pZmVzdCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT5OSVlXR3IxQ2lXQzAyY2ZjazQ3WGYvVU05QUE9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+RTN0ejEyM3dEMGxPOFZ3aFZFQmZGVHNENWdjMEJwbHg2WXRWdURNMGNVSkRIYjVGK0RpdXhHdWdHcUl0K0NLVWtsU08ya1NEN1ltRGVUblQrYlhiYlgrd29rR1FoS2liK0doSFFiWVc4cmNrdkY5S0o3WitVMXVLS0dXM055S04yODFRMzAxWERRWUtyU3dCSytuczQrUG1WcE5NQjhSZnFwNmpXSmtYMWFFPTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48ZHNpZzpLZXlJbmZvPjxkc2lnOlg1MDlEYXRhPjxkc2lnOlg1MDlTS0k+RStmS3dRc1Q1bFMzbVdtQmthbFVUcDBKUlc4PTwvZHNpZzpYNTA5U0tJPjwvZHNpZzpYNTA5RGF0YT48L2RzaWc6S2V5SW5mbz48ZHNpZzpPYmplY3Q+PGRzaWc6TWFuaWZlc3QgSWQ9Im1hbmlmZXN0Ij48ZHNpZzpSZWZlcmVuY2UgSWQ9InJlZmVyZW5jZS0wIiBVUkk9ImRvY3VtZW50LnhtbCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT41S2NDc0JsaHNJUDRpTW1IY2FVMmRYSlBVOGs9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PGRzaWc6UmVmZXJlbmNlIElkPSJyZWZlcmVuY2UtMSIgVVJJPSJodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMzMTYxLnR4dCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT5lVDVaVTlma0l3UTliOVhBWXEraUlZbmowRFE9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOk1hbmlmZXN0PjwvZHNpZzpPYmplY3Q+PC9kc2lnOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL3NpZ25hdHVyZS1yc2EtbWFuaWZlc3QteDUwOS1kYXRhLXN1YmplY3QtbmFtZS54bWwgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL3NpZ25hdHVyZS1yc2EtbWFuaWZlc3QteDUwOS1kYXRhLXN1YmplY3QtbmFtZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDcwZGEyMQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLXJzYS1tYW5pZmVzdC14NTA5LWRhdGEtc3ViamVjdC1uYW1lLnhtbApAQCAtMCwwICsxIEBACis8ZHNpZzpTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIi8+PGRzaWc6UmVmZXJlbmNlIElkPSJyZWZlcmVuY2UtbWFuaWZlc3QiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNNYW5pZmVzdCIgVVJJPSIjbWFuaWZlc3QiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+TklZV0dyMUNpV0MwMmNmY2s0N1hmL1VNOUFBPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjwvZHNpZzpTaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlPkUzdHoxMjN3RDBsTzhWd2hWRUJmRlRzRDVnYzBCcGx4Nll0VnVETTBjVUpESGI1RitEaXV4R3VnR3FJdCtDS1VrbFNPMmtTRDdZbURlVG5UK2JYYmJYK3dva0dRaEtpYitHaEhRYllXOHJja3ZGOUtKN1orVTF1S0tHVzNOeUtOMjgxUTMwMVhEUVlLclN3QksrbnM0K1BtVnBOTUI4UmZxcDZqV0prWDFhRT08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5U3ViamVjdE5hbWU+Q049VGVzdCBDbGllbnQgKFJTQSksT1U9RW5naW5lZXJpbmcsTz1QaGFvcyBUZWNobm9sb2d5LEw9TmV3IFlvcmssU1Q9TmV3IFlvcmssQz1VUzwvZHNpZzpYNTA5U3ViamVjdE5hbWU+PC9kc2lnOlg1MDlEYXRhPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdD48ZHNpZzpNYW5pZmVzdCBJZD0ibWFuaWZlc3QiPjxkc2lnOlJlZmVyZW5jZSBJZD0icmVmZXJlbmNlLTAiIFVSST0iZG9jdW1lbnQueG1sIj48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPjVLY0NzQmxoc0lQNGlNbUhjYVUyZFhKUFU4az08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48ZHNpZzpSZWZlcmVuY2UgSWQ9InJlZmVyZW5jZS0xIiBVUkk9Imh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzMxNjEudHh0Ij48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPmVUNVpVOWZrSXdROWI5WEFZcStpSVluajBEUT08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6TWFuaWZlc3Q+PC9kc2lnOk9iamVjdD48L2RzaWc6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLXJzYS1tYW5pZmVzdC14NTA5LWRhdGEueG1sIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZHNpZy10aHJlZS9zaWduYXR1cmUtcnNhLW1hbmlmZXN0LXg1MDktZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMDA1NDAxYQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLXJzYS1tYW5pZmVzdC14NTA5LWRhdGEueG1sCkBAIC0wLDAgKzEgQEAKKzxkc2lnOlNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzaWc6U2lnbmVkSW5mbz48ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48ZHNpZzpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz48ZHNpZzpSZWZlcmVuY2UgSWQ9InJlZmVyZW5jZS1tYW5pZmVzdCIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI01hbmlmZXN0IiBVUkk9IiNtYW5pZmVzdCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT5OSVlXR3IxQ2lXQzAyY2ZjazQ3WGYvVU05QUE9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+RTN0ejEyM3dEMGxPOFZ3aFZFQmZGVHNENWdjMEJwbHg2WXRWdURNMGNVSkRIYjVGK0RpdXhHdWdHcUl0K0NLVWtsU08ya1NEN1ltRGVUblQrYlhiYlgrd29rR1FoS2liK0doSFFiWVc4cmNrdkY5S0o3WitVMXVLS0dXM055S04yODFRMzAxWERRWUtyU3dCSytuczQrUG1WcE5NQjhSZnFwNmpXSmtYMWFFPTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48ZHNpZzpLZXlJbmZvPjxkc2lnOlg1MDlEYXRhPjxkc2lnOlg1MDlTdWJqZWN0TmFtZT5DTj1UZXN0IENsaWVudCAoUlNBKSxPVT1FbmdpbmVlcmluZyxPPVBoYW9zIFRlY2hub2xvZ3ksTD1OZXcgWW9yayxTVD1OZXcgWW9yayxDPVVTPC9kc2lnOlg1MDlTdWJqZWN0TmFtZT48ZHNpZzpYNTA5SXNzdWVyU2VyaWFsPjxkc2lnOlg1MDlJc3N1ZXJOYW1lPkNOPVRlc3QgQ0EgKFJTQSksT1U9RW5naW5lZXJpbmcsTz1QaGFvcyBUZWNobm9sb2d5LEw9TmV3IFlvcmssU1Q9TmV3IFlvcmssQz1VUzwvZHNpZzpYNTA5SXNzdWVyTmFtZT48ZHNpZzpYNTA5U2VyaWFsTnVtYmVyPjEwMDAwMDE8L2RzaWc6WDUwOVNlcmlhbE51bWJlcj48L2RzaWc6WDUwOUlzc3VlclNlcmlhbD48ZHNpZzpYNTA5U0tJPkUrZkt3UXNUNWxTM21XbUJrYWxVVHAwSlJXOD08L2RzaWc6WDUwOVNLST48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJQzBEQ0NBam1nQXdJQkFnSUREMEpCTUEwR0NTcUdTSWIzRFFFQkJBVUFNSHd4Q3pBSkJnTlZCQVlUQWxWVE1SRXdEd1lEVlFRSUV3aE9aWGNnV1c5eWF6RVJNQThHQTFVRUJ4TUlUbVYzSUZsdmNtc3hHVEFYQmdOVkJBb1RFRkJvWVc5eklGUmxZMmh1YjJ4dloza3hGREFTQmdOVkJBc1RDMFZ1WjJsdVpXVnlhVzVuTVJZd0ZBWURWUVFERXcxVVpYTjBJRU5CSUNoU1UwRXBNQjRYRFRBeU1EUXlPVEU1TVRZME1Gb1hEVEV5TURReU5qRTVNVFkwTUZvd2dZQXhDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJRXdoT1pYY2dXVzl5YXpFUk1BOEdBMVVFQnhNSVRtVjNJRmx2Y21zeEdUQVhCZ05WQkFvVEVGQm9ZVzl6SUZSbFkyaHViMnh2WjNreEZEQVNCZ05WQkFzVEMwVnVaMmx1WldWeWFXNW5NUm93R0FZRFZRUURFeEZVWlhOMElFTnNhV1Z1ZENBb1VsTkJLVENCbnpBTkJna3Foa2lHOXcwQkFRRUZBQU9CalFBd2dZa0NnWUVBZ0liNm5BQjlvUy9BSTVqSWo2V3ltdlFoUnhpTWxFMDdHNGFibU1saVlpNXpXenZhRkUydG5VK1JaSUJndG9YY2dERUlVL3ZzTFF1dDduekNuOW1IeEM4SkVhVjRENFU5MWo2NEF5WmFrU2hxSnc3cWpKZnFVeHhQTDB5SnYyb0Zpb3VQRGpHdUo5SlBpME5yc1pxK3lmV2ZNNTRzNGI5U05rY09JVk15YlpVQ0F3RUFBYU5iTUZrd0RBWURWUjBUQVFIL0JBSXdBREFQQmdOVkhROEJBZjhFQlFNREI5Z0FNQmtHQTFVZEVRUVNNQkNCRG5SbFkyaEFjR2hoYjNNdVkyOXRNQjBHQTFVZERnUVdCQlFUNThyQkN4UG1WTGVaYVlHUnFWUk9uUWxGYnpBTkJna3Foa2lHOXcwQkFRUUZBQU9CZ1FDeGJDb3ZGU1QyNXQrcnlOMVJpcHFvenhKUWNndUtmZUN3YmZnQk5vYnpjUnZvVzBrU0lmN3ppNG10UWFqRE0wTmZzbEZGNTEvZGV4NVJuNjRIbUZGc2hTd1N2UVFNeWY1Q2ZhcXYyWFE2ME9YcTZuQUZHNldiSG9nZTZScWZJZXoyTVdETG9TQjZwbHNqS3RNbUwzbWN5YkJoUk90WDVHR3VMeDFOdGZoTkZRPT08L2RzaWc6WDUwOUNlcnRpZmljYXRlPjxkc2lnOlg1MDlDZXJ0aWZpY2F0ZT5NSUlDempDQ0FqZWdBd0lCQWdJREFZYWdNQTBHQ1NxR1NJYjNEUUVCQkFVQU1Id3hDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJRXdoT1pYY2dXVzl5YXpFUk1BOEdBMVVFQnhNSVRtVjNJRmx2Y21zeEdUQVhCZ05WQkFvVEVGQm9ZVzl6SUZSbFkyaHViMnh2WjNreEZEQVNCZ05WQkFzVEMwVnVaMmx1WldWeWFXNW5NUll3RkFZRFZRUURFdzFVWlhOMElFTkJJQ2hTVTBFcE1CNFhEVEF5TURReU9URTVNRFV5TkZvWERURXdNVEl6TVRBMU1EQXdNRm93ZkRFTE1Ba0dBMVVFQmhNQ1ZWTXhFVEFQQmdOVkJBZ1RDRTVsZHlCWmIzSnJNUkV3RHdZRFZRUUhFd2hPWlhjZ1dXOXlhekVaTUJjR0ExVUVDaE1RVUdoaGIzTWdWR1ZqYUc1dmJHOW5lVEVVTUJJR0ExVUVDeE1MUlc1bmFXNWxaWEpwYm1jeEZqQVVCZ05WQkFNVERWUmxjM1FnUTBFZ0tGSlRRU2t3Z1o4d0RRWUpLb1pJaHZjTkFRRUJCUUFEZ1kwQU1JR0pBb0dCQUxPNUJMZE1JLzgvZ2VOZ2syU2dia2xRSW1UdFFEd2hrY3V0QWx3MzVyUy84NFkrQ3QxcUJpNXI4YzZKUlZiL29FcVFTczlUQmN6cExuZCtEN3hpcUo2L0pjQjNSOU1EZy9wQVZvSkNyQ1k0b1pObGtKU2FzWVdLWm83N3pTdVVwaE5FZkpFVlo0U010d3haUUxIRmFpbEpIbTRMMzB6akkyRTBOMllIeWk3L0FnTUJBQUdqWGpCY01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0R3WURWUjBQQVFIL0JBVURBd2ZHQURBWkJnTlZIUkVFRWpBUWdRNTBaV05vUUhCb1lXOXpMbU52YlRBZEJnTlZIUTRFRmdRVU13bFIwSEMxaGxvNDg3djNaNDdlZ2hvRE1Nd3dEUVlKS29aSWh2Y05BUUVFQlFBRGdZRUFZK2VsUmVsLzZrRy9vN3hObVU5Q3JaTTFFSk1oM2NIb2VkUE9IdDR5SFA2Y3JqNk9ZWk1BK0M3aWZIWC93dkdwY3daeW1NUHFscjNjUTdCNy9oODh5Q1ZKdUFOVGUxQlF0QTZuWjRDejZCaDlNaXAzbjh5Y3VYQ0RieGtVZDBBTFFZRDZTUzIrYXdWU0hWR1lSbUZSZDl2eVcxbmtnOUVzU2NhcWE3WEcrNkE9PC9kc2lnOlg1MDlDZXJ0aWZpY2F0ZT48ZHNpZzpYNTA5Q1JMPk1JSUJuakNDQVFjQ0FRRXdEUVlKS29aSWh2Y05BUUVFQlFBd2ZERUxNQWtHQTFVRUJoTUNWVk14RVRBUEJnTlZCQWdUQ0U1bGR5QlpiM0pyTVJFd0R3WURWUVFIRXdoT1pYY2dXVzl5YXpFWk1CY0dBMVVFQ2hNUVVHaGhiM01nVkdWamFHNXZiRzluZVRFVU1CSUdBMVVFQ3hNTFJXNW5hVzVsWlhKcGJtY3hGakFVQmdOVkJBTVREVlJsYzNRZ1EwRWdLRkpUUVNrWERUQXlNRFF5T1RFNU1Ua3lPRm9YRFRFeU1EUXlOakU1TVRreU9Gb3dKREFpQWdNUFFrRVhEVEF5TURReU9URTVNVGt5T0Zvd0REQUtCZ05WSFJVRUF3b0JBYUF4TUM4d0RBWURWUjBVQkFVQ0F5M0d3REFmQmdOVkhTTUVHREFXZ0JRekNWSFFjTFdHV2pqenUvZG5qdDZDR2dNd3pEQU5CZ2txaGtpRzl3MEJBUVFGQUFPQmdRQkFwMmhlNVVXdFF4akd0MU02Y1FuQnRORmJHMkVZZlFPdFh0MGJXT2w4dmpSTWNGRnRDYzAvZVhyOVRRMTNGN0U0RTZtRjZnZUh6akZRL3FZRjVyNXl0WkNCdXNDRDJER2VtMEhXTmlXSWo5Rk1Ldmh4Y3FDWUUzRlkxZDc5RU1qYkk5RHU4MU5VRlpnZFF1YjBMYmhYa0V0NTNqMXA3ZmY4YkkxbmcrdnRGdz09PC9kc2lnOlg1MDlDUkw+PC9kc2lnOlg1MDlEYXRhPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdD48ZHNpZzpNYW5pZmVzdCBJZD0ibWFuaWZlc3QiPjxkc2lnOlJlZmVyZW5jZSBJZD0icmVmZXJlbmNlLTAiIFVSST0iZG9jdW1lbnQueG1sIj48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPjVLY0NzQmxoc0lQNGlNbUhjYVUyZFhKUFU4az08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48ZHNpZzpSZWZlcmVuY2UgSWQ9InJlZmVyZW5jZS0xIiBVUkk9Imh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzMxNjEudHh0Ij48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPmVUNVpVOWZrSXdROWI5WEFZcStpSVluajBEUT08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6TWFuaWZlc3Q+PC9kc2lnOk9iamVjdD48L2RzaWc6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLXJzYS1tYW5pZmVzdC54bWwgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL3NpZ25hdHVyZS1yc2EtbWFuaWZlc3QueG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQ5YzMwMDAKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL3NpZ25hdHVyZS1yc2EtbWFuaWZlc3QueG1sCkBAIC0wLDAgKzEgQEAKKzxkc2lnOlNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzaWc6U2lnbmVkSW5mbz48ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48ZHNpZzpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz48ZHNpZzpSZWZlcmVuY2UgSWQ9InJlZmVyZW5jZS1tYW5pZmVzdCIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI01hbmlmZXN0IiBVUkk9IiNtYW5pZmVzdCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT5OSVlXR3IxQ2lXQzAyY2ZjazQ3WGYvVU05QUE9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+RTN0ejEyM3dEMGxPOFZ3aFZFQmZGVHNENWdjMEJwbHg2WXRWdURNMGNVSkRIYjVGK0RpdXhHdWdHcUl0K0NLVWtsU08ya1NEN1ltRGVUblQrYlhiYlgrd29rR1FoS2liK0doSFFiWVc4cmNrdkY5S0o3WitVMXVLS0dXM055S04yODFRMzAxWERRWUtyU3dCSytuczQrUG1WcE5NQjhSZnFwNmpXSmtYMWFFPTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48ZHNpZzpLZXlJbmZvPjxkc2lnOktleVZhbHVlPjxkc2lnOlJTQUtleVZhbHVlPjxkc2lnOk1vZHVsdXM+Z0liNm5BQjlvUy9BSTVqSWo2V3ltdlFoUnhpTWxFMDdHNGFibU1saVlpNXpXenZhRkUydG5VK1JaSUJndG9YY2dERUlVL3ZzTFF1dDduekNuOW1IeEM4SkVhVjRENFU5MWo2NEF5WmFrU2hxSnc3cWpKZnFVeHhQTDB5SnYyb0Zpb3VQRGpHdUo5SlBpME5yc1pxK3lmV2ZNNTRzNGI5U05rY09JVk15YlpVPTwvZHNpZzpNb2R1bHVzPjxkc2lnOkV4cG9uZW50PkFRQUI8L2RzaWc6RXhwb25lbnQ+PC9kc2lnOlJTQUtleVZhbHVlPjwvZHNpZzpLZXlWYWx1ZT48L2RzaWc6S2V5SW5mbz48ZHNpZzpPYmplY3Q+PGRzaWc6TWFuaWZlc3QgSWQ9Im1hbmlmZXN0Ij48ZHNpZzpSZWZlcmVuY2UgSWQ9InJlZmVyZW5jZS0wIiBVUkk9ImRvY3VtZW50LnhtbCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT41S2NDc0JsaHNJUDRpTW1IY2FVMmRYSlBVOGs9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PGRzaWc6UmVmZXJlbmNlIElkPSJyZWZlcmVuY2UtMSIgVVJJPSJodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMzMTYxLnR4dCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT5lVDVaVTlma0l3UTliOVhBWXEraUlZbmowRFE9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOk1hbmlmZXN0PjwvZHNpZzpPYmplY3Q+PC9kc2lnOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL3NpZ25hdHVyZS1yc2EteHBhdGgtdHJhbnNmb3JtLWVudmVsb3BlZC54bWwgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxkc2lnLXRocmVlL3NpZ25hdHVyZS1yc2EteHBhdGgtdHJhbnNmb3JtLWVudmVsb3BlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNzIzMjliMQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvc2lnbmF0dXJlLXJzYS14cGF0aC10cmFuc2Zvcm0tZW52ZWxvcGVkLnhtbApAQCAtMCwwICsxLDYgQEAKKzxwbGF5ZXIgYmF0cz0ibGVmdCIgaWQ9IjEwMDEyIiB0aHJvd3M9InJpZ2h0Ij4KKwk8IS0tIEhlcmUncyBhIGNvbW1lbnQgLS0+CisJPG5hbWU+QWxmb25zbyBTb3JpYW5vPC9uYW1lPgorCTxwb3NpdGlvbj4yQjwvcG9zaXRpb24+CisJPHRlYW0+TmV3IFlvcmsgWWFua2VlczwvdGVhbT4KKzxkc2lnOlNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzaWc6U2lnbmVkSW5mbz48ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48ZHNpZzpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz48ZHNpZzpSZWZlcmVuY2UgVVJJPSIiPjxkc2lnOlRyYW5zZm9ybXM+PGRzaWc6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxkc2lnOlhQYXRoIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPmNvdW50KGFuY2VzdG9yLW9yLXNlbGY6OmRzaWc6U2lnbmF0dXJlICB8IGhlcmUoKS9hbmNlc3Rvcjo6ZHNpZzpTaWduYXR1cmVbMV0pICZndDsgIGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6OmRzaWc6U2lnbmF0dXJlKTwvZHNpZzpYUGF0aD48L2RzaWc6VHJhbnNmb3JtPjwvZHNpZzpUcmFuc2Zvcm1zPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+bkRGMlYvYnpSZDBWRTNFd1NoV3RzQnpURURjPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjwvZHNpZzpTaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlPmVNZmJ1NzllWXpZaWxJT1ZsT3c0ci9QZ0pBSm00d2RGaEJucXhQZjJPWXR3dHYvekh6Ynd2aGZWUUc5MGNZbFdBZFc3emFraTFPbTFMZFB4Z0FiK3VyeGI4ZTVnbWEzbnhLK3UvalBKOXlrUWltcWlPcEJJcGJHWU92L3hGRFMxWER1NExZNEJJVGUrWnl5dlVwWVNGR3Y1WC8vZUo5clV5QzhUSnk4U05Faz08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6S2V5SW5mbz48ZHNpZzpYNTA5RGF0YT48ZHNpZzpYNTA5Q2VydGlmaWNhdGU+TUlJQzBEQ0NBam1nQXdJQkFnSUREMEpCTUEwR0NTcUdTSWIzRFFFQkJBVUFNSHd4Q3pBSkJnTlZCQVlUQWxWVE1SRXdEd1lEVlFRSUV3aE9aWGNnV1c5eWF6RVJNQThHQTFVRUJ4TUlUbVYzSUZsdmNtc3hHVEFYQmdOVkJBb1RFRkJvWVc5eklGUmxZMmh1YjJ4dloza3hGREFTQmdOVkJBc1RDMFZ1WjJsdVpXVnlhVzVuTVJZd0ZBWURWUVFERXcxVVpYTjBJRU5CSUNoU1UwRXBNQjRYRFRBeU1EUXlPVEU1TVRZME1Gb1hEVEV5TURReU5qRTVNVFkwTUZvd2dZQXhDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJRXdoT1pYY2dXVzl5YXpFUk1BOEdBMVVFQnhNSVRtVjNJRmx2Y21zeEdUQVhCZ05WQkFvVEVGQm9ZVzl6SUZSbFkyaHViMnh2WjNreEZEQVNCZ05WQkFzVEMwVnVaMmx1WldWeWFXNW5NUm93R0FZRFZRUURFeEZVWlhOMElFTnNhV1Z1ZENBb1VsTkJLVENCbnpBTkJna3Foa2lHOXcwQkFRRUZBQU9CalFBd2dZa0NnWUVBZ0liNm5BQjlvUy9BSTVqSWo2V3ltdlFoUnhpTWxFMDdHNGFibU1saVlpNXpXenZhRkUydG5VK1JaSUJndG9YY2dERUlVL3ZzTFF1dDduekNuOW1IeEM4SkVhVjRENFU5MWo2NEF5WmFrU2hxSnc3cWpKZnFVeHhQTDB5SnYyb0Zpb3VQRGpHdUo5SlBpME5yc1pxK3lmV2ZNNTRzNGI5U05rY09JVk15YlpVQ0F3RUFBYU5iTUZrd0RBWURWUjBUQVFIL0JBSXdBREFQQmdOVkhROEJBZjhFQlFNREI5Z0FNQmtHQTFVZEVRUVNNQkNCRG5SbFkyaEFjR2hoYjNNdVkyOXRNQjBHQTFVZERnUVdCQlFUNThyQkN4UG1WTGVaYVlHUnFWUk9uUWxGYnpBTkJna3Foa2lHOXcwQkFRUUZBQU9CZ1FDeGJDb3ZGU1QyNXQrcnlOMVJpcHFvenhKUWNndUtmZUN3YmZnQk5vYnpjUnZvVzBrU0lmN3ppNG10UWFqRE0wTmZzbEZGNTEvZGV4NVJuNjRIbUZGc2hTd1N2UVFNeWY1Q2ZhcXYyWFE2ME9YcTZuQUZHNldiSG9nZTZScWZJZXoyTVdETG9TQjZwbHNqS3RNbUwzbWN5YkJoUk90WDVHR3VMeDFOdGZoTkZRPT08L2RzaWc6WDUwOUNlcnRpZmljYXRlPjxkc2lnOlg1MDlJc3N1ZXJTZXJpYWw+PGRzaWc6WDUwOUlzc3Vlck5hbWU+Q049VGVzdCBDQSAoUlNBKSxPVT1FbmdpbmVlcmluZyxPPVBoYW9zIFRlY2hub2xvZ3ksTD1OZXcgWW9yayxTVD1OZXcgWW9yayxDPVVTPC9kc2lnOlg1MDlJc3N1ZXJOYW1lPjxkc2lnOlg1MDlTZXJpYWxOdW1iZXI+MTAwMDAwMTwvZHNpZzpYNTA5U2VyaWFsTnVtYmVyPjwvZHNpZzpYNTA5SXNzdWVyU2VyaWFsPjxkc2lnOlg1MDlTdWJqZWN0TmFtZT5DTj1UZXN0IENsaWVudCAoUlNBKSxPVT1FbmdpbmVlcmluZyxPPVBoYW9zIFRlY2hub2xvZ3ksTD1OZXcgWW9yayxTVD1OZXcgWW9yayxDPVVTPC9kc2lnOlg1MDlTdWJqZWN0TmFtZT48ZHNpZzpYNTA5U0tJPkUrZkt3UXNUNWxTM21XbUJrYWxVVHAwSlJXOD08L2RzaWc6WDUwOVNLST48L2RzaWc6WDUwOURhdGE+PC9kc2lnOktleUluZm8+PC9kc2lnOlNpZ25hdHVyZT48L3BsYXllcj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxlbmMtMy9SZWFkbWUudHh0IGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvUmVhZG1lLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDExZWUyCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvUmVhZG1lLnR4dApAQCAtMCwwICsxLDUyIEBACitUaGlzIGRpcmVjdG9yeSBjb250YWlucyB0aGUgZm9sbG93aW5nIGZpbGVzOgorCisgUmVhZG1lLnR4dCAgIC0tIFRoaXMgZmlsZS4KKyAKKyBwYXltZW50LnhtbCAgLS0gQSBzYW1wbGUgWE1MIGZpbGUuCisKKyBrZXkudHh0ICAgICAgLS0gS2V5cyBmb3IgZGVjcnlwdGluZyB0aGUgZW5jcnlwdGVkIFhNTCBmaWxlcyBlbmMtKi0qLSotKi54bWwuCisKKyBkaC1wcml2LWtleS5kZXIKKyAgICAgICAgICAgICAtLSBEaWZmaWUtSGVsbG1hbiBwcml2YXRlIGtleSBlbmNvZGVkIGluIFBLQ1MjOCBQcml2YXRlS2V5SW5mbyBmb3JtYXRlLgorCQlUaGlzIGtleSBjYW4gYmUgdXNlZCB0byBkZWNyeXB0IHRoZSBmaWxlcyBlbmMtKi0qLWthLWRoLnhtbC4KKyByc2EtcHJpdi1rZXkuZGVyIAorCSAgICAgLS0gUlNBIHByaXZhdGUga2V5IGVuY29kZWQgaW4gUEtDUyM4IFByaXZhdGVLZXlJbmZvIGZvcm1hdGUuCisJCVRoaXMga2V5IGNhbiBiZSB1c2VkIHRvIGRlY3J5cHQgdGhlIGZpbGVzIGVuYy0qLSota3QtKi54bWwuCisKKyBlbmMtKi0qLSotKi54bWwKKyAgICAgICAgICAgICAgLS0gWE1MIGRvY3VtZW50IG9idGFpbmVkIGJ5IGVuY3J5cHRpbmcgYW5kIHJlcGxhY2luZyBwYXJ0IG9mIHRoZQorICAgICAgICAgICAgICAgICBzYW1wbGUgcGF5bWVudC54bWwuIFRoZSBkYXRhIGVuY3J5cHRpb24ga2V5IGlzIGluIHR1cm4KKyAgICAgICAgICAgICAgICAgZW5jcnlwdGVkLgorCisgICAgICAgICAgICAgICAgIEVhY2ggZmlsZSBoYXMgdGhlIGZvcm06IGVuYy1BLUItQy1ELnhtbCwgd2hlcmU6CisgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICBBIGluZGljYXRlcyB0aGUgdHlwZSBvZiB0aGUgZGF0YSBlbmNyeXB0ZWQuIFRoaXMgaW5jbHVkZXM6CisKKyAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBUaGUgQ3JlZGl0Q2FyZCBlbGVtZW50LgorICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFRoZSBjb250ZW50IG9mIHRoZSBDcmVkaXRDYXJkIGVsZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobXVsdGlwbGUgZWxlbWVudHMpLgorICAgICAgICAgICAgICAgICAgICAgdGV4dCA9ICAgIFRoZSBjb250ZW50IG9mIHRoZSBOdW1iZXIgZWxlbWVudCAodGV4dCBub2RlKS4KKworICAgICAgICAgICAgICAgICBCIGluZGljYXRlcyB0aGUgZGF0YSBlbmNyeXB0aW9uIGFsZ29yaXRobS4KKworICAgICAgICAgICAgICAgICBDIGluZGljYXRlcyB0aGUga2V5IGVuY3J5cHRpb24gcHJvdG9jb2xzOgorICAgICAgICAgICAgICAgICAgICAga3QgPSBrZXkgdHJhbnNwb3J0CisgICAgICAgICAgICAgICAgICAgICBrdyA9IGtleSB3cmFwCisgICAgICAgICAgICAgICAgICAgICBrYSA9IGtleSBhZ3JlZW1lbnQKKworICAgICAgICAgICAgICAgICBEIGluZGljYXRlcyB0aGUga2V5IGVuY3J5cHRpb24gYWxnb3JpdGhtLgorCitiYWQtKi1lbmMtKi0qLSotKi54bWwKKwkJLS0gc29tZSAic2NyZXctdXAiIHNhbXBsZXMKKworVGhlIHNhbXBsZSBlbmNyeXB0ZWQgWE1MIGZpbGVzIGFyZSBwcm9kdWNlZCBmcm9tIFBoYW9zIFhNTCB0b29sa2l0LgorCitKaWFuZG9uZyBHdW8KK1BoYW9zIFRlY2hub2xvZ3kKK2h0dHA6Ly93d3cucGhhb3MuY29tCisKK2pndW9AcGhhb3MuY29tCisKKworCisKZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2JhZC1hbGctZW5jLWVsZW1lbnQtYWVzMTI4LWt3LTNkZXMueG1sIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvYmFkLWFsZy1lbmMtZWxlbWVudC1hZXMxMjgta3ctM2Rlcy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjcxNTY1NwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2JhZC1hbGctZW5jLWVsZW1lbnQtYWVzMTI4LWt3LTNkZXMueG1sCkBAIC0wLDAgKzEsMjkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8UGF5bWVudEluZm8geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy9wYXltZW50djIiPgorICA8TmFtZT5Kb2huIFNtaXRoPC9OYW1lPgorICA8RW5jcnlwdGVkRGF0YSBJZD0iRUQiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI0VsZW1lbnQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPgorICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjYWVzMTI4LWNiYyIvPgorICAgIDxkczpLZXlJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgIDxFbmNyeXB0ZWRLZXkgSWQ9IkVLIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj4KKyAgICAgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNrdy10cmlwbGVkZXMiLz4KKyAgICAgICAgPGRzOktleUluZm8geG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgICAgIDxkczpLZXlOYW1lPm15LXRyaXBsZWRlcy1rZXk8L2RzOktleU5hbWU+CisgICAgICAgIDwvZHM6S2V5SW5mbz4KKyAgICAgICAgPENpcGhlckRhdGE+CisgICAgICAgICAgPENpcGhlclZhbHVlPkhnVnVIb1h4QlFXRDlmdmkwZ3Q5VGFueXdaNWxKb2tNLzEyZmNNRzZnUm9NanNDUHVsSCs0QT09PC9DaXBoZXJWYWx1ZT4KKyAgICAgICAgPC9DaXBoZXJEYXRhPgorICAgICAgICA8UmVmZXJlbmNlTGlzdD4KKyAgICAgICAgICA8RGF0YVJlZmVyZW5jZSBVUkk9IiNFRCIvPgorICAgICAgICA8L1JlZmVyZW5jZUxpc3Q+CisgICAgICA8L0VuY3J5cHRlZEtleT4KKyAgICA8L2RzOktleUluZm8+CisgICAgPENpcGhlckRhdGE+CisgICAgICA8Q2lwaGVyVmFsdWU+CisgICAgICAgIHlVTUlIa2o1RUVUY2tqWjU5ZnBkYTQrbTRZTENya0pzbnVSeitRM2U1c1ArVnZIS1JIMWtkZUdrWHcza1lVUlYKKwlKTTNuUWpHbDJlZ1c4MG9VeFN5a1FEMkY5aURvSWpOaExTZ0lieXVzZTY0b28vNS92OUlpYVVwU3ZyQW9jd0xQCisJQXpGSVVtT3J4bUlhZ0FrUkdET2VNUjh0ZEhMRDZnODRkUWo0Ty9hR2Z3aEwvMndVby9sKzdvbnJibXNkNnBWSQorCWZqTnl2WG0rZUlUdXlVbmtEVEhyQ1IrZGZiMnNIYVEzZzNNY2d5ZlA2WmpJL0w1MFNQSlovdz09CisgICAgICA8L0NpcGhlclZhbHVlPgorICAgIDwvQ2lwaGVyRGF0YT4KKyAgPC9FbmNyeXB0ZWREYXRhPgorPC9QYXltZW50SW5mbz4KZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2RoLXByaXYta2V5LmRlciBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2RoLXByaXYta2V5LmRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWFhMjc3Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZGgtcHJpdi1rZXkuZGVyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy1jb250ZW50LTNkZXMta3ctYWVzMTkyLnhtbCBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy1jb250ZW50LTNkZXMta3ctYWVzMTkyLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzcxZjAxCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWNvbnRlbnQtM2Rlcy1rdy1hZXMxOTIueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8UGF5bWVudEluZm8geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy9wYXltZW50djIiPgorICA8TmFtZT5Kb2huIFNtaXRoPC9OYW1lPgorICA8Q3JlZGl0Q2FyZCBDdXJyZW5jeT0iVVNEIiBMaW1pdD0iNSwwMDAiPgorICAgIDxFbmNyeXB0ZWREYXRhIElkPSJFRCIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjQ29udGVudCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+CisgICAgICA8RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3RyaXBsZWRlcy1jYmMiLz4KKyAgICAgIDxkczpLZXlJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgPEVuY3J5cHRlZEtleSBJZD0iRUsiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPgorICAgICAgICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMja3ctYWVzMTkyIi8+CisgICAgICAgICAgPGRzOktleUluZm8geG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgICAgICAgPGRzOktleU5hbWU+bXktYWVzMTkyLWtleTwvZHM6S2V5TmFtZT4KKyAgICAgICAgICA8L2RzOktleUluZm8+CisgICAgICAgICAgPENpcGhlckRhdGE+CisgICAgICAgICAgICA8Q2lwaGVyVmFsdWU+NStHcFZVUU5UQVQzdVk4cFBlZEVnL1BwZnRpWCtmSnNUQ3VuK2ZnbUl6MD08L0NpcGhlclZhbHVlPgorICAgICAgICAgIDwvQ2lwaGVyRGF0YT4KKyAgICAgICAgICA8UmVmZXJlbmNlTGlzdD4KKyAgICAgICAgICAgIDxEYXRhUmVmZXJlbmNlIFVSST0iI0VEIi8+CisgICAgICAgICAgPC9SZWZlcmVuY2VMaXN0PgorICAgICAgICA8L0VuY3J5cHRlZEtleT4KKyAgICAgIDwvZHM6S2V5SW5mbz4KKyAgICAgIDxDaXBoZXJEYXRhPgorICAgICAgICA8Q2lwaGVyVmFsdWU+CisJICBRQldsZi9pWURYS2JCV2YwUHUzQmd6dDVvTEJ3SXM0TktQYi9JMFN4RFlWbkRjMzRpN3RaRzVVekhsenRzV2xYCisJICB1ZGZiSVc5bDdrNVdWZHk5YmZYWldycDZzWGFtQmVkVVFUcnIrejR2NHUyaldhVXlxRWlvTGU3aDM2UWVvVTIzCisgICAgICAgICAgUXZrT3pSTzlBaVdtL1FDQ3plUFozRnJwNExNOWxYT0UKKyAgICAgICAgPC9DaXBoZXJWYWx1ZT4KKyAgICAgIDwvQ2lwaGVyRGF0YT4KKyAgICA8L0VuY3J5cHRlZERhdGE+CisgIDwvQ3JlZGl0Q2FyZD4KKzwvUGF5bWVudEluZm8+CmRpZmYgLS1naXQgYS9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtY29udGVudC1hZXMxMjgta3ctM2Rlcy54bWwgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtY29udGVudC1hZXMxMjgta3ctM2Rlcy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk1OGQ1NwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy1jb250ZW50LWFlczEyOC1rdy0zZGVzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFBheW1lbnRJbmZvIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvcGF5bWVudHYyIj4KKyAgPE5hbWU+Sm9obiBTbWl0aDwvTmFtZT4KKyAgPENyZWRpdENhcmQgQ3VycmVuY3k9IlVTRCIgTGltaXQ9IjUsMDAwIj4KKyAgICA8RW5jcnlwdGVkRGF0YSBJZD0iRUQiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI0NvbnRlbnQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPgorICAgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNhZXMxMjgtY2JjIi8+CisgICAgICA8ZHM6S2V5SW5mbyB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgIDxFbmNyeXB0ZWRLZXkgSWQ9IkVLIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj4KKyAgICAgICAgICA8RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2t3LXRyaXBsZWRlcyIvPgorICAgICAgICAgIDxkczpLZXlJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgICAgIDxkczpLZXlOYW1lPm15LTNkZXMta2V5PC9kczpLZXlOYW1lPgorICAgICAgICAgIDwvZHM6S2V5SW5mbz4KKyAgICAgICAgICA8Q2lwaGVyRGF0YT4KKyAgICAgICAgICAgIDxDaXBoZXJWYWx1ZT4vUFp2dm40MkU5ZG1NVVo4S0NZNkI1WHRMYWFJYUc0WDVZTkR3Z1Y1VmxvPTwvQ2lwaGVyVmFsdWU+CisgICAgICAgICAgPC9DaXBoZXJEYXRhPgorICAgICAgICAgIDxSZWZlcmVuY2VMaXN0PgorICAgICAgICAgICAgPERhdGFSZWZlcmVuY2UgVVJJPSIjRUQiLz4KKyAgICAgICAgICA8L1JlZmVyZW5jZUxpc3Q+CisgICAgICAgIDwvRW5jcnlwdGVkS2V5PgorICAgICAgPC9kczpLZXlJbmZvPgorICAgICAgPENpcGhlckRhdGE+CisgICAgICAgIDxDaXBoZXJWYWx1ZT4KKyAgICAgICAgICAgcklOcHIwSG9uR2NLbm5mL3ZZeDhOM2duZCsxcmIrendIMXZuZmp5dCtiT29TVTcydy9RcW5pVDcxL0d4dEZGeAorICAgICAgICAgICBnd0UwL2FyQUJWYTFyOC9QTVJlcldxeVBhck1ucHdJUnE2ZHpRSEtiNVNxaXFGRVlQUlpoeXRUR1pGWE4zOW9HCisgICAgICAgICAgIFlaa1NJTk9saTVwYU13VFdycTZoRFNQUm96S3ZmRXFodUkwVmdaVTRPTE09CisgICAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgICA8L0NpcGhlckRhdGE+CisgICAgPC9FbmNyeXB0ZWREYXRhPgorICA8L0NyZWRpdENhcmQ+Cis8L1BheW1lbnRJbmZvPgpkaWZmIC0tZ2l0IGEvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWNvbnRlbnQtYWVzMTkyLWt3LWFlczI1Ni54bWwgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtY29udGVudC1hZXMxOTIta3ctYWVzMjU2LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmE3ODdiCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWNvbnRlbnQtYWVzMTkyLWt3LWFlczI1Ni54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxQYXltZW50SW5mbyB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnL3BheW1lbnR2MiI+CisgIDxOYW1lPkpvaG4gU21pdGg8L05hbWU+CisgIDxDcmVkaXRDYXJkIEN1cnJlbmN5PSJVU0QiIExpbWl0PSI1LDAwMCI+CisgICAgPEVuY3J5cHRlZERhdGEgSWQ9IkVEIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNDb250ZW50IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj4KKyAgICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjYWVzMTkyLWNiYyIvPgorICAgICAgPGRzOktleUluZm8geG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgICA8RW5jcnlwdGVkS2V5IElkPSJFSyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+CisgICAgICAgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNrdy1hZXMyNTYiLz4KKyAgICAgICAgICA8ZHM6S2V5SW5mbyB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgICAgICA8ZHM6S2V5TmFtZT5teS1hZXMyNTYta2V5PC9kczpLZXlOYW1lPgorICAgICAgICAgIDwvZHM6S2V5SW5mbz4KKyAgICAgICAgICA8Q2lwaGVyRGF0YT4KKyAgICAgICAgICAgIDxDaXBoZXJWYWx1ZT5JYm5vUzFjdnVJRklHQjQ2amoxVjFGR2Z0YzkyaXJyQ3djQzdCb0J2eHdRPTwvQ2lwaGVyVmFsdWU+CisgICAgICAgICAgPC9DaXBoZXJEYXRhPgorICAgICAgICAgIDxSZWZlcmVuY2VMaXN0PgorICAgICAgICAgICAgPERhdGFSZWZlcmVuY2UgVVJJPSIjRUQiLz4KKyAgICAgICAgICA8L1JlZmVyZW5jZUxpc3Q+CisgICAgICAgIDwvRW5jcnlwdGVkS2V5PgorICAgICAgPC9kczpLZXlJbmZvPgorICAgICAgPENpcGhlckRhdGE+CisgICAgICAgIDxDaXBoZXJWYWx1ZT4KKyAgICAgICAgICAvUkRUYkwyY2U5Q2ErMkdTMEZMSmJGTVhjcEV2RExsVzVSbnBlS0xlK3BJTzFsTnB4c2k0MC90c3FDVmF1RDY2CisgICAgICAgICAgRk9DYVhrS1BjUVlhZUhWdEQ0am5FL09IWllGVko4elM4ejRJN25EZzQ0UjFlOVpKOXhOM2tBRXViMVQyTWRlSworICAgICAgICAgIFNWeFByaGtzSE9XVHd4RmJQdWw5WVJhTnNybWk5YTBYTjRnZ3VkSnUrUnc9CisgICAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgICA8L0NpcGhlckRhdGE+CisgICAgPC9FbmNyeXB0ZWREYXRhPgorICA8L0NyZWRpdENhcmQ+Cis8L1BheW1lbnRJbmZvPgpkaWZmIC0tZ2l0IGEvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWNvbnRlbnQtYWVzMjU2LWt0LXJzYTFfNS54bWwgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtY29udGVudC1hZXMyNTYta3QtcnNhMV81LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjc3YzgxCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWNvbnRlbnQtYWVzMjU2LWt0LXJzYTFfNS54bWwKQEAgLTAsMCArMSw2MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxQYXltZW50SW5mbyB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnL3BheW1lbnR2MiI+CisgIDxOYW1lPkpvaG4gU21pdGg8L05hbWU+CisgIDxDcmVkaXRDYXJkIEN1cnJlbmN5PSJVU0QiIExpbWl0PSI1LDAwMCI+CisgICAgPEVuY3J5cHRlZERhdGEgSWQ9IkVEIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNDb250ZW50IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj4KKyAgICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjYWVzMjU2LWNiYyIvPgorICAgICAgPGRzOktleUluZm8geG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgICA8ZHM6UmV0cmlldmFsTWV0aG9kIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI0VuY3J5cHRlZEtleSIgVVJJPSIjRUsiLz4KKyAgICAgICAgPEVuY3J5cHRlZEtleSBJZD0iRUsiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPgorICAgICAgICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLTFfNSIvPgorICAgICAgICAgIDxkczpLZXlJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgICAgIDxkczpLZXlOYW1lPm15LXJzYS1rZXk8L2RzOktleU5hbWU+CisgICAgICAgICAgICA8ZHM6WDUwOURhdGE+CisgICAgICAgICAgICAgIDxkczpYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICAgICAgICBNSUlEelRDQ0FyV2dBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUVFGQURDQmxqRUxNQWtHQTFVRUJoTUNWVk14CisgICAgICAgICAgICAgIAkgIEN6QUpCZ05WQkFnVEFrNVpNUkl3RUFZRFZRUUhFd2xOWVc1b1lYUjBZVzR4RlRBVEJnTlZCQW9UREV4aGRtRWcKKyAgICAgICAgICAgICAgICAgIFUzVndjbVZ0WlRFVU1CSUdBMVVFQ3hNTFNHVmhaQ0JQWm1acFkyVXhGREFTQmdOVkJBTVRDMUpUUVNCVVpYTjAKKyAgICAgICAgICAgICAgICAgIElFTkJNU013SVFZSktvWklodmNOQVFrQkZoUjBaV05vUUd4aGRtRnpkWEJ5WlcxbExtOXlaekFlRncwd01qQXgKKyAgICAgICAgICAgICAgICAgIE16RXhOakk1TkROYUZ3MDBNekF5TWpVeE5qSTVORE5hTUlHV01Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUUKKyAgICAgICAgICAgICAgICAgIENCTUNUbGt4RWpBUUJnTlZCQWNUQ1UxaGJtaGhkSFJoYmpFVk1CTUdBMVVFQ2hNTVRHRjJZU0JUZFhCeVpXMWwKKyAgICAgICAgICAgICAgICAgIE1SUXdFZ1lEVlFRTEV3dElaV0ZrSUU5bVptbGpaVEVVTUJJR0ExVUVBeE1MVWxOQklGUmxjM1FnUTBFeEl6QWgKKyAgICAgICAgICAgICAgICAgIEJna3Foa2lHOXcwQkNRRVdGSFJsWTJoQWJHRjJZWE4xY0hKbGJXVXViM0puTUlJQklqQU5CZ2txaGtpRzl3MEIKKyAgICAgICAgICAgICAgICAgIEFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQWdqM1RPeVV0Z2c5OW9FZnNtOGg5SlRaQnhVa3pZa1hWVU9IeEl3bmsKKyAgICAgICAgICAgICAgICAgIEZ3cDR5OVpuckdqYS9qK2twUnlLdllQNUNrTmRxMGU1OC9yN0dMWGo0NWlxZDAzWGpzRk5UZGp5NE9JT2dmN0oKKyAgICAgICAgICAgICAgICAgIHhNRzd6K2hFQjFMVDJzd1RzMTBHSUxGV1BCeVJsMy9CRXNuZWtMWmRvcU5vSnJ2bnR0Vmt4Z3UzeDgwSmkzL0EKKyAgICAgICAgICAgICAgICAgIFpEOFViL2tCR09TUHl1NnBuM09kbk1UYzVxNHIxcVVlOTg1bFF6Q1p2Q013NkFvR2VDeUpvZE51Mk1idmVOZUgKKyAgICAgICAgICAgICAgICAgICtZUGpSZ0xDUWZ6dk9GUnErOXFNdEU4WGZVSlpkTmhQWmhnZHNPR2Y4dUphdVRjSUhiQXl3N0JoeFB5NlJpa1cKKyAgICAgICAgICAgICAgICAgIFc1eWlXVW1CeWErN3Q0eTFUUUp6aGFtLzB5MHpVM1RBQTdiL3JEclU3eG1OUHdJREFRQUJveVF3SWpBUEJnTlYKKyAgICAgICAgICAgICAgICAgIEhSTUJBZjhFQlRBREFRSC9NQThHQTFVZER3RUIvd1FGQXdNSEJnQXdEUVlKS29aSWh2Y05BUUVFQlFBRGdnRUIKKyAgICAgICAgICAgICAgICAgIEFERUxXWmpGTFBqU2pHZU9hZVV3SC9tRU9QK2wvblR0eGUwN0lXQVFMNGt2YjR3c2lVc00xRWtQcHRjQlFzeW0KKyAgICAgICAgICAgICAgICAgIE9ZZ0ZoZjNFbHFtYTg0YmJPeXA4NXkvaVFuanBxV1dKNzNURlhTV1phbVNJaFliNEdrK2RRdXdGSSt6RDNCMnkKKyAgICAgICAgICAgICAgICAgIFd3cWdoYUFIRHp4dHpST0xVQmpvKzk3WTZuZzZWNXpqbXRkR09Gd05Yd1doZjNZK01qbkVydEJJS1lhbzhOSk8KKyAgICAgICAgICAgICAgICAgIHA2ZGk4MHc4MitzNk90K0NMVnZWb2JMaHhTL3k4eVdwbEFUUmlRbkk1aWovV1RMTUwrdGlVNWFlczBjOWFiYWYKKyAgICAgICAgICAgICAgICAgIE83aTlqMWlUdVpzRFQzZjk2aWEwUlNMc1hTR2lqNzM3UUtjM1pNOGxTeEJXZmVwV1lPK0crSVJncjFxOUlVRGEKKyAgICAgICAgICAgICAgICAgIGtLTy92QjlBeTY0UnQ4OFhiTG5uR25zPQorICAgICAgICAgICAgICA8L2RzOlg1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgICAgIDwvZHM6WDUwOURhdGE+CisJICA8L2RzOktleUluZm8+CisgICAgICAgICAgPENpcGhlckRhdGE+CisgICAgICAgICAgICA8Q2lwaGVyVmFsdWU+CisgICAgICAgICAgICAgIFZjN1ZPWGdKRGx3L29RMGhPdklhQktzR2lPd3l2SUFyemtoZDJXN21aQlF5ZUZsa0pseFpRZG5QR0dnNGtKRTkKKyAgICAgICAgICAgICAgRUdXZU1XUVowWGF2SnkreEE5WitQbElGcWtwUEhVWHlvczlqWlpObmlSeEV0bDZ0TGNlMlJlU1ZhaCt5OExiMworICAgICAgICAgICAgICAzeFNOU20rTzlrMkI0MnlQM09zcmoxNzVLTk1TTUxMTTJadUEwaXEyOGFQN3Y3RG10RFk3Vk5wMG4rTzRuSlVNCisgICAgICAgICAgICAgIEV5eTRSTzBqbXRYY3R0M2pVZnBDbUdrcXk0Mi9MRzZGNWgxa2x1eWZzempIdmkvOWxENUxFa0NsMlkvM2F6K2oKKyAgICAgICAgICAgICAgMnZMdXVYTTQ1ejZlZjE0RGxnc2g3ZUp0cXAzYlJUMFRwcDRKdkJXTWl1RFphVjF6VWNacTdxODBsTk12WHVjYgorICAgICAgICAgICAgICBtU3JTbWxYbjJsV1B0dGZUcmNqWHJ3PT0KKyAgICAgICAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgICAgICAgPC9DaXBoZXJEYXRhPgorICAgICAgICAgIDxSZWZlcmVuY2VMaXN0PgorICAgICAgICAgICAgPERhdGFSZWZlcmVuY2UgVVJJPSIjRUQiLz4KKyAgICAgICAgICA8L1JlZmVyZW5jZUxpc3Q+CisgICAgICAgIDwvRW5jcnlwdGVkS2V5PgorICAgICAgPC9kczpLZXlJbmZvPgorICAgICAgPENpcGhlckRhdGE+CisgICAgICAgIDxDaXBoZXJWYWx1ZT4KKyAgICAgICAgICBwNU1NczZGNzY1aklVcU9qNXJIMXZBcm8wUng0L1BMSW9FT1hDT1dhRUdiRWRDSGgwbTg2emlmb3p1dGNtb0JBCisgICAgICAgICAgeHkxU3V4bUpqdEZETzMyZi9icHVEaGR6RkRnTHJsVkljWHJOZUhHZ2tlbjZOcnlDMm4xTmRHUzlDaVlzeWFQRgorICAgICAgICAgIEI1Q1dFa3gzUHJ0YmFrNlMyMHozWFpUSmx0T2RvcXplTk9uOC9JRGF2TEE9CisgICAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgICA8L0NpcGhlckRhdGE+CisgICAgPC9FbmNyeXB0ZWREYXRhPgorICA8L0NyZWRpdENhcmQ+Cis8L1BheW1lbnRJbmZvPgpkaWZmIC0tZ2l0IGEvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtM2Rlcy1rYS1kaC54bWwgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtZWxlbWVudC0zZGVzLWthLWRoLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzc1YTFhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtM2Rlcy1rYS1kaC54bWwKQEAgLTAsMCArMSw4MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxQYXltZW50SW5mbyB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnL3BheW1lbnR2MiI+CisgIDxOYW1lPkpvaG4gU21pdGg8L05hbWU+CisgIDxFbmNyeXB0ZWREYXRhIElkPSJFRCIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+CisgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyN0cmlwbGVkZXMtY2JjIi8+CisgICAgPGRzOktleUluZm8geG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgPEFncmVlbWVudE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2RoIj4KKyAgICAgICAgPEtBLU5vbmNlPllXSmpaR1U9PC9LQS1Ob25jZT4KKyAgICAgICAgPGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+CisgICAgICAgICAgPE9yaWdpbmF0b3JLZXlJbmZvPgorICAgICAgICAgIDxkczpYNTA5RGF0YT4KKyAgICAgICAgICAgIDxkczpYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICAgICAgTUlJRWpEQ0NBL1dnQXdJQkFnSUJBVEFOQmdrcWhraUc5dzBCQVFRRkFEQ0JsakVMTUFrR0ExVUVCaE1DVlZNeAorICAgICAgICAgICAgICAgIEN6QUpCZ05WQkFnVEFrNVpNUkl3RUFZRFZRUUhFd2xOWVc1b1lYUjBZVzR4RlRBVEJnTlZCQW9UREV4aGRtRWcKKyAgICAgICAgICAgICAgICBVM1Z3Y21WdFpURVVNQklHQTFVRUN4TUxTR1ZoWkNCUFptWnBZMlV4RkRBU0JnTlZCQU1UQzFKVFFTQlVaWE4wCisgICAgICAgICAgICAgICAgSUVOQk1TTXdJUVlKS29aSWh2Y05BUWtCRmhSMFpXTm9RR3hoZG1GemRYQnlaVzFsTG05eVp6QWVGdzB3TWpBeAorICAgICAgICAgICAgICAgIE16QXlNalV3TkRCYUZ3MHhNREF4TURFd05UQXdNREJhTUlHTU1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUUKKyAgICAgICAgICAgICAgICBDQk1DVGxreEVqQVFCZ05WQkFjVENVMWhibWhoZEhSaGJqRU9NQXdHQTFVRUNoTUZVR2hoYjNNeEZEQVNCZ05WCisgICAgICAgICAgICAgICAgQkFzVEMwaGxZV1FnVDJabWFXTmxNUmN3RlFZRFZRUURFdzVFU0NCVVpYTjBJRU5zYVdWdWRERWRNQnNHQ1NxRworICAgICAgICAgICAgICAgIFNJYjNEUUVKQVJZT2RHVmphRUJ3YUdGdmN5NXZjbWN3Z2dKRE1JSUJ1QVlIS29aSXpqNENBVENDQWFzQ2dZRUEKKyAgICAgICAgICAgICAgICB1YXZhdDdpNk5PcG5ST2JkeDdHejM4aDh4a2dtdjIwWFVhajFKamZ2TUFRZlFGTUhlc2hHaFkyUTBtd3ZKMU9mCisgICAgICAgICAgICAgICAgWC9rWjRjTWJTWVV5d2gzV0FZNnpRczhXMnV4ZzhHZWR1Q0xlYk5RR1RhSFZGVm1ySk1RYXdsVjFiSU1RK2tEaQorICAgICAgICAgICAgICAgIElRTlIvRlBxU05IS0QyUTkvdW9HRDVkMmw0S1AzcUg4ZHY1SE9UOGZDd1VDZ1lCeHVucW1VdUtaRlROS0poSDkKKyAgICAgICAgICAgICAgICBHNlVJTmxJL1hyOWpQZXNqNS9JOGZwV2d4WnhzZ2t6a3NxaXNEQ3NsWjA5dVpUQVRyR0ZURjNmazZrTmh4MjVzCisgICAgICAgICAgICAgICAgVUN0WUhISzFIelFtc0xNdTJCV05CUXJrTEMrTWtkM2QzOVVkTmR1UFc0a0NNcGNkb0hBaCt6VHFBSDJRa0tKbQorICAgICAgICAgICAgICAgIHl4Yy94MExldmtTVWs4clg4REZhM3kxNTJRSVZBTCtFbzRnUEwzMzlkazdpbnE4N1BuUjFQV3VIQW0wQStDOUUKKyAgICAgICAgICAgICAgICBHUERTcGhGYVBXTzVMUVROZmxKMGw5SUdqY05GR3JKWDBpbVdyak0ycTZiR1l6MFpLNGNKaGNYMTJZWk9qUjUyCisgICAgICAgICAgICAgICAgVFpoM2N5NnlBSkc0NzBpNjVubHo1LzNFU1dGSHNNTzBDT3JEaS9DYTVSZk1yWUdjYzhocnlkekZsVDF6cU1GYQorICAgICAgICAgICAgICAgIDF5dXFRS1ZzR3dYY01Cd0RGZ0NaL2hxTEF0Qmk2ZHl2Nkt5K09mWGZYZ0pCUGhRQ0FnTlBBNEdFQUFLQmdGV3cKKyAgICAgICAgICAgICAgICBMeVlPNElQeEpzYmFRUXNKNEsxeFRqUFNqVE1tdkc0ZnBLQStTMUJHejhGSTFTUEFDYjIvWVlDcm1qb1dOdmtRCisgICAgICAgICAgICAgICAgVjZOVFErZWppNlRHQTdFVDg1YzRBY1JadHhPaTNnU1A1S3EyQTNFOWRVb3Vpa2hyS1NIRmIrTng0MjBDWG10cAorICAgICAgICAgICAgICAgIGp4QnUrcVVUYjdBTXJSQ3VzOG1hSHdVOVBkS1FiWnhvREZPTEFySkhvMDB3U3pBUEJnTlZIUThCQWY4RUJRTUQKKyAgICAgICAgICAgICAgICBCd2dBTUJrR0ExVWRFUVFTTUJDQkRuUmxZMmhBY0doaGIzTXViM0puTUIwR0ExVWREZ1FXQkJUZmt5L2QrL3dJCisgICAJCTZ6aWNONHVEbDBQU0F5Uk5uVEFOQmdrcWhraUc5dzBCQVFRRkFBT0JnUUErMmNXc0FaOWE0NHR0QlgxWjNlTUkKKyAJCWUwR2dkdVhFckJ0OXhzdjJTeTZmUy82Q3l5Sm0zdHB0aHVUMldNWm11NkUrY2VCTGtGVStUbnhuRWYvTnJTajgKKwkJd3RRdC93VkhhY2FTWk1jd1VEdi91VFV4cnRJWlVKN0E3VnhjQXZibkxFNWZRcUtoRjZRVDVpcnRiRTJSeXZkNworCQlvTWZHRzhQbVUrc2JOOXNOWHRJek9BPT0KKyAgICAgICAgICAgIDwvZHM6WDUwOUNlcnRpZmljYXRlPgorICAgICAgICAgIDwvZHM6WDUwOURhdGE+CisgICAgICAgIDwvT3JpZ2luYXRvcktleUluZm8+CisgICAgICAgIDxSZWNpcGllbnRLZXlJbmZvPgorICAgICAgICAgIDxkczpYNTA5RGF0YT4KKyAgICAgICAgICAgIDxkczpYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICAgICAgTUlJRWpUQ0NBL2FnQXdJQkFnSUJBakFOQmdrcWhraUc5dzBCQVFRRkFEQ0JsakVMTUFrR0ExVUVCaE1DVlZNeAorCQlDekFKQmdOVkJBZ1RBazVaTVJJd0VBWURWUVFIRXdsTllXNW9ZWFIwWVc0eEZUQVRCZ05WQkFvVERFeGhkbUVnCisJCVUzVndjbVZ0WlRFVU1CSUdBMVVFQ3hNTFNHVmhaQ0JQWm1acFkyVXhGREFTQmdOVkJBTVRDMUpUUVNCVVpYTjAKKwkJSUVOQk1TTXdJUVlKS29aSWh2Y05BUWtCRmhSMFpXTm9RR3hoZG1GemRYQnlaVzFsTG05eVp6QWVGdzB3TWpBeAorCQlNekF5TWpVeU5UTmFGdzB4TURBeE1ERXdOVEF3TURCYU1JR01NUXN3Q1FZRFZRUUdFd0pWVXpFTE1Ba0dBMVVFCisJCUNCTUNUbGt4RWpBUUJnTlZCQWNUQ1UxaGJtaGhkSFJoYmpFT01Bd0dBMVVFQ2hNRlVHaGhiM014RkRBU0JnTlYKKwkJQkFzVEMwaGxZV1FnVDJabWFXTmxNUmN3RlFZRFZRUURFdzVFU0NCVVpYTjBJRU5zYVdWdWRERWRNQnNHQ1NxRworCQlTSWIzRFFFSkFSWU9kR1ZqYUVCd2FHRnZjeTV2Y21jd2dnSkVNSUlCdUFZSEtvWkl6ajRDQVRDQ0Fhc0NnWUVBCisJCXVhdmF0N2k2Tk9wblJPYmR4N0d6MzhoOHhrZ212MjBYVWFqMUpqZnZNQVFmUUZNSGVzaEdoWTJRMG13dkoxT2YKKwkJWC9rWjRjTWJTWVV5d2gzV0FZNnpRczhXMnV4ZzhHZWR1Q0xlYk5RR1RhSFZGVm1ySk1RYXdsVjFiSU1RK2tEaQorCQlJUU5SL0ZQcVNOSEtEMlE5L3VvR0Q1ZDJsNEtQM3FIOGR2NUhPVDhmQ3dVQ2dZQnh1bnFtVXVLWkZUTktKaEg5CisJCUc2VUlObEkvWHI5alBlc2o1L0k4ZnBXZ3haeHNna3prc3Fpc0RDc2xaMDl1WlRBVHJHRlRGM2ZrNmtOaHgyNXMKKwkJVUN0WUhISzFIelFtc0xNdTJCV05CUXJrTEMrTWtkM2QzOVVkTmR1UFc0a0NNcGNkb0hBaCt6VHFBSDJRa0tKbQorCQl5eGMveDBMZXZrU1VrOHJYOERGYTN5MTUyUUlWQUwrRW80Z1BMMzM5ZGs3aW5xODdQblIxUFd1SEFtMEErQzlFCisJCUdQRFNwaEZhUFdPNUxRVE5mbEowbDlJR2pjTkZHckpYMGltV3JqTTJxNmJHWXowWks0Y0poY1gxMllaT2pSNTIKKwkJVFpoM2N5NnlBSkc0NzBpNjVubHo1LzNFU1dGSHNNTzBDT3JEaS9DYTVSZk1yWUdjYzhocnlkekZsVDF6cU1GYQorCQkxeXVxUUtWc0d3WGNNQndERmdDWi9ocUxBdEJpNmR5djZLeStPZlhmWGdKQlBoUUNBZ05QQTRHRkFBS0JnUUNNCisJCUt0bk15alQ5RzFMS1Rab043ckh3SU8wOEQ1ajFZWUlzY3NRRGMrcTRueTVXRUZvK3dFbU9xeEdjRTlKclJkZWIKKwkJaXQ2Y1Q4RjdUV1d6ZURKVXlhWEZFaTRFMXBhbkNCQ0wxY3JxUy9IYlk4VkgvenpoVCs1TDIzMkxjaHNvWWExcAorCQlkcXh4TEhXOFJyT2F4NFJMVnJjSU9QY1c0eDNHZ2swQU5ZUWhSNmtObXFOTk1Fc3dEd1lEVlIwUEFRSC9CQVVECisJCUF3Y0lBREFaQmdOVkhSRUVFakFRZ1E1MFpXTm9RSEJvWVc5ekxtOXlaekFkQmdOVkhRNEVGZ1FVSGRkQkptZlYKKwkJNk1EM0ZUYlZtSGNMRk42UUZBY3dEUVlKS29aSWh2Y05BUUVFQlFBRGdZRUFLWmw5UC9abUlyd0hwM0JUZkJIbAorCQllRkJrOUNiaEsxNEZPYk1HV1NrZmpxaXBiNXNuWEJQRTN1UEJydlAxU3Rpc1BSc0sveTFPWmZjamprQTZodDBqCisJCVlXcDlsb2hORFRsYy9OT0tHT1FTQ3BudHFyK3dRaGM2bDE2amV6cVI3c0t2MmVIQkZHczBWN0hDckVlMm1UUDQKKwkJckRhL1lLcm1MNUs2UzlHU0YyN3J4NDA9CisJICAgIDwvZHM6WDUwOUNlcnRpZmljYXRlPgorCSAgPC9kczpYNTA5RGF0YT4KKyAgICAgICAgPC9SZWNpcGllbnRLZXlJbmZvPgorICAgICAgPC9BZ3JlZW1lbnRNZXRob2Q+CisgICAgPC9kczpLZXlJbmZvPgorICAgIDxDaXBoZXJEYXRhPgorICAgICAgPENpcGhlclZhbHVlPgorICAgICAgICBCc0lBdEh5cUUrZm9WRVUyQjhFb1NBRXJFTWp1dW5sWHlnbXUrQkM2U04rbVlHRkVzUS9mclZ6Z2lLQm8yeVJlCisgICAgICAgIGJibnVVcUF3RHgwM3dTNHpxbVc1bEQxQzZibS85dFVTU3Y4SGNOcjd2UnFyeDN0UlE1MXk2eTV4UmJoaks2WmkKKyAgICAgICAgdktIRFh3WnB4WTRDbmhmVXdidFRTWmlzak5uL2VWNlVZeFpkejJ6bVR4QUpYQVBJMWRWRmlQZHFobGpYaGxERQorICAgICAgICB0VkF0LzFmKy8vdTFENzgyTk1DdVBWVXQwOU10YmYwcGNGSmh0b0NteDg0TlZUM1h3SysyVGc9PQorICAgICAgPC9DaXBoZXJWYWx1ZT4KKyAgICA8L0NpcGhlckRhdGE+CisgIDwvRW5jcnlwdGVkRGF0YT4KKzwvUGF5bWVudEluZm8+CmRpZmYgLS1naXQgYS9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtZWxlbWVudC0zZGVzLWt0LXJzYTFfNS54bWwgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtZWxlbWVudC0zZGVzLWt0LXJzYTFfNS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc3MmZiZAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy1lbGVtZW50LTNkZXMta3QtcnNhMV81LnhtbApAQCAtMCwwICsxLDYxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFBheW1lbnRJbmZvIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvcGF5bWVudHYyIj4KKyAgPE5hbWU+Sm9obiBTbWl0aDwvTmFtZT4KKyAgPEVuY3J5cHRlZERhdGEgSWQ9IkVEIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNFbGVtZW50IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj4KKyAgICA8RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3RyaXBsZWRlcy1jYmMiLz4KKyAgICA8ZHM6S2V5SW5mbyB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICA8RW5jcnlwdGVkS2V5IElkPSJFSyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+CisgICAgICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLTFfNSIvPgorICAgICAgICA8ZHM6S2V5SW5mbyB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgICAgPGRzOktleU5hbWU+bXktcnNhLWtleTwvZHM6S2V5TmFtZT4KKyAgICAgICAgICA8ZHM6WDUwOURhdGE+CisgICAgICAgICAgICA8ZHM6WDUwOUNlcnRpZmljYXRlPgorICAgICAgICAgICAgICBNSUlEelRDQ0FyV2dBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUVFGQURDQmxqRUxNQWtHQTFVRUJoTUNWVk14CisgICAgICAgICAgICAgIEN6QUpCZ05WQkFnVEFrNVpNUkl3RUFZRFZRUUhFd2xOWVc1b1lYUjBZVzR4RlRBVEJnTlZCQW9UREV4aGRtRWcKKyAgICAgICAgICAgICAgVTNWd2NtVnRaVEVVTUJJR0ExVUVDeE1MU0dWaFpDQlBabVpwWTJVeEZEQVNCZ05WQkFNVEMxSlRRU0JVWlhOMAorICAgICAgICAgICAgICBJRU5CTVNNd0lRWUpLb1pJaHZjTkFRa0JGaFIwWldOb1FHeGhkbUZ6ZFhCeVpXMWxMbTl5WnpBZUZ3MHdNakF4CisgICAgICAgICAgICAgIE16RXhOakk1TkROYUZ3MDBNekF5TWpVeE5qSTVORE5hTUlHV01Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUUKKyAgICAgICAgICAgICAgQ0JNQ1Rsa3hFakFRQmdOVkJBY1RDVTFoYm1oaGRIUmhiakVWTUJNR0ExVUVDaE1NVEdGMllTQlRkWEJ5WlcxbAorICAgICAgICAgICAgICBNUlF3RWdZRFZRUUxFd3RJWldGa0lFOW1abWxqWlRFVU1CSUdBMVVFQXhNTFVsTkJJRlJsYzNRZ1EwRXhJekFoCisgICAgICAgICAgICAgIEJna3Foa2lHOXcwQkNRRVdGSFJsWTJoQWJHRjJZWE4xY0hKbGJXVXViM0puTUlJQklqQU5CZ2txaGtpRzl3MEIKKyAgICAgICAgICAgICAgQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBZ2ozVE95VXRnZzk5b0Vmc204aDlKVFpCeFVrellrWFZVT0h4SXduaworICAgICAgICAgICAgICBGd3A0eTlabnJHamEvaitrcFJ5S3ZZUDVDa05kcTBlNTgvcjdHTFhqNDVpcWQwM1hqc0ZOVGRqeTRPSU9nZjdKCisgICAgICAgICAgICAgIHhNRzd6K2hFQjFMVDJzd1RzMTBHSUxGV1BCeVJsMy9CRXNuZWtMWmRvcU5vSnJ2bnR0Vmt4Z3UzeDgwSmkzL0EKKyAgICAgICAgICAgICAgWkQ4VWIva0JHT1NQeXU2cG4zT2RuTVRjNXE0cjFxVWU5ODVsUXpDWnZDTXc2QW9HZUN5Sm9kTnUyTWJ2ZU5lSAorICAgICAgICAgICAgICArWVBqUmdMQ1FmenZPRlJxKzlxTXRFOFhmVUpaZE5oUFpoZ2RzT0dmOHVKYXVUY0lIYkF5dzdCaHhQeTZSaWtXCisgICAgICAgICAgICAgIFc1eWlXVW1CeWErN3Q0eTFUUUp6aGFtLzB5MHpVM1RBQTdiL3JEclU3eG1OUHdJREFRQUJveVF3SWpBUEJnTlYKKyAgICAgICAgICAgICAgSFJNQkFmOEVCVEFEQVFIL01BOEdBMVVkRHdFQi93UUZBd01IQmdBd0RRWUpLb1pJaHZjTkFRRUVCUUFEZ2dFQgorICAgICAgICAgICAgICBBREVMV1pqRkxQalNqR2VPYWVVd0gvbUVPUCtsL25UdHhlMDdJV0FRTDRrdmI0d3NpVXNNMUVrUHB0Y0JRc3ltCisgICAgICAgICAgICAgIE9ZZ0ZoZjNFbHFtYTg0YmJPeXA4NXkvaVFuanBxV1dKNzNURlhTV1phbVNJaFliNEdrK2RRdXdGSSt6RDNCMnkKKyAgICAgICAgICAgICAgV3dxZ2hhQUhEenh0elJPTFVCam8rOTdZNm5nNlY1emptdGRHT0Z3Tlh3V2hmM1krTWpuRXJ0QklLWWFvOE5KTworICAgICAgICAgICAgICBwNmRpODB3ODIrczZPdCtDTFZ2Vm9iTGh4Uy95OHlXcGxBVFJpUW5JNWlqL1dUTE1MK3RpVTVhZXMwYzlhYmFmCisgICAgICAgICAgICAgIE83aTlqMWlUdVpzRFQzZjk2aWEwUlNMc1hTR2lqNzM3UUtjM1pNOGxTeEJXZmVwV1lPK0crSVJncjFxOUlVRGEKKyAgICAgICAgICAgICAga0tPL3ZCOUF5NjRSdDg4WGJMbm5HbnM9CisgICAgICAgICAgICA8L2RzOlg1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgICA8L2RzOlg1MDlEYXRhPgorICAgICAgICA8L2RzOktleUluZm8+CisgICAgICAgIDxDaXBoZXJEYXRhPgorICAgICAgICAgIDxDaXBoZXJWYWx1ZT4KKyAgICAgICAgICAgIGJZREUzWFNqRUxpRVcvclgwOFpRVWNHMWRLMWwxdVN3MTRFS2hJSGJ3ck04REZaS0Y0ZkJhUFh4Ry85MW1rT0EKKyAgICAgICAgICAgIGNzM3EwTFpFU3JxSEdWcm05VXZxTDQ4dXRrTnJSNTZ1ZDYwRmhJZ1NCZ2RLRS85cVRNanJTQ1gxVnc3eGZoSkgKKwkgICAgRmM0dEQzdmpoQUxMYU8zU1VUOGVzUFFLUEs0Z0VXWU1OemRweU5RdUQwbXJMaVEvU25IdUhLekJtU2pqZ0traworICAgICAgICAgICAgeEZjRlZkaVBUL1hBaEVaY3V2a095TE1ZZ1BONTVzbGNuUnpja09FcTZ6T2N1OFd3Ni8yZEcwYTBUUmlvRmVIVworICAgICAgICAgICAgZWNxbVc4amF3eHhPVm5WVlNkRE5scXdZV3BNKzJYeGdZdVNpZnNEd2t3YU53VkFNL3hYZ2owNVpQcjQ5cG93VAorICAgICAgICAgICAgMW5aSjVjQVJDbVc1ekxoNmFOcFFuZz09CisgICAgICAgICAgPC9DaXBoZXJWYWx1ZT4KKyAgICAgICAgPC9DaXBoZXJEYXRhPgorICAgICAgICA8UmVmZXJlbmNlTGlzdD4KKyAgICAgICAgICA8RGF0YVJlZmVyZW5jZSBVUkk9IiNFRCIvPgorICAgICAgICA8L1JlZmVyZW5jZUxpc3Q+CisgICAgICA8L0VuY3J5cHRlZEtleT4KKyAgICA8L2RzOktleUluZm8+CisgICAgPENpcGhlckRhdGE+CisgICAgICA8Q2lwaGVyVmFsdWU+CisgICAgICAgIExCaXNDYVk0QytzN2g4TGpWcGk4KytkQ3p4eE0yUDdqUitydytXMGJWWnovWU5mRzlRNElkL0drVGxjWVAvYVQKKyAgICAgICAgV05KZk5WaGlwOEtENlFpUXFqc1JrYUY4MXc4VWFtMWxWWHo4WDJHYzZSc3g1TDdqKzFPYmxtQjZWTFB1SXdCSgorCXdJbWpOaUVYNFJoclM0VGZ4Ri96SXEwc0xUMkRDSGRISTc1MlZDblo4dWxWS0RuYW1DWlV2VDk1WXFsY0NZbmMKKwlWV0FPVjVmWUgzWXZ0WjZTL3pwVEVLVzc5ZG5HUVpMOG9kNWFKc1JyaWQ1ZnE0OVgvNUt0TXc9PQorICAgICAgPC9DaXBoZXJWYWx1ZT4KKyAgICA8L0NpcGhlckRhdGE+CisgIDwvRW5jcnlwdGVkRGF0YT4KKzwvUGF5bWVudEluZm8+CmRpZmYgLS1naXQgYS9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtZWxlbWVudC0zZGVzLWt0LXJzYV9vYWVwX3NoYTEueG1sIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtM2Rlcy1rdC1yc2Ffb2FlcF9zaGExLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2NlN2ExCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtM2Rlcy1rdC1yc2Ffb2FlcF9zaGExLnhtbApAQCAtMCwwICsxLDYzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFBheW1lbnRJbmZvIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvcGF5bWVudHYyIj4KKyAgPE5hbWU+Sm9obiBTbWl0aDwvTmFtZT4KKyAgPEVuY3J5cHRlZERhdGEgSWQ9IkVEIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNFbGVtZW50IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj4KKyAgICA8RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3RyaXBsZWRlcy1jYmMiLz4KKyAgICAgIDxkczpLZXlJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgPEVuY3J5cHRlZEtleSBJZD0iRUsiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPgorICAgICAgICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPgorICAgICAgICAgICAgPGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIvPgorICAgICAgICA8L0VuY3J5cHRpb25NZXRob2Q+CisgICAgICAgIDxkczpLZXlJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKwkgIDxkczpLZXlOYW1lPm15LXJzYS1rZXk8L2RzOktleU5hbWU+CisgICAgICAgICAgPGRzOlg1MDlEYXRhPgorICAgICAgICAgICAgPGRzOlg1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgICAgICAgTUlJRHpUQ0NBcldnQXdJQkFnSUJBVEFOQmdrcWhraUc5dzBCQVFRRkFEQ0JsakVMTUFrR0ExVUVCaE1DVlZNeAorICAgICAgICAgICAgICBDekFKQmdOVkJBZ1RBazVaTVJJd0VBWURWUVFIRXdsTllXNW9ZWFIwWVc0eEZUQVRCZ05WQkFvVERFeGhkbUVnCisgICAgICAgICAgICAgIFUzVndjbVZ0WlRFVU1CSUdBMVVFQ3hNTFNHVmhaQ0JQWm1acFkyVXhGREFTQmdOVkJBTVRDMUpUUVNCVVpYTjAKKyAgICAgICAgICAgICAgSUVOQk1TTXdJUVlKS29aSWh2Y05BUWtCRmhSMFpXTm9RR3hoZG1GemRYQnlaVzFsTG05eVp6QWVGdzB3TWpBeAorICAgICAgICAgICAgICBNekV4TmpJNU5ETmFGdzAwTXpBeU1qVXhOakk1TkROYU1JR1dNUXN3Q1FZRFZRUUdFd0pWVXpFTE1Ba0dBMVVFCisgICAgICAgICAgICAgIENCTUNUbGt4RWpBUUJnTlZCQWNUQ1UxaGJtaGhkSFJoYmpFVk1CTUdBMVVFQ2hNTVRHRjJZU0JUZFhCeVpXMWwKKyAgICAgICAgICAgICAgTVJRd0VnWURWUVFMRXd0SVpXRmtJRTltWm1salpURVVNQklHQTFVRUF4TUxVbE5CSUZSbGMzUWdRMEV4SXpBaAorICAgICAgICAgICAgICBCZ2txaGtpRzl3MEJDUUVXRkhSbFkyaEFiR0YyWVhOMWNISmxiV1V1YjNKbk1JSUJJakFOQmdrcWhraUc5dzBCCisgICAgICAgICAgICAgIEFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQWdqM1RPeVV0Z2c5OW9FZnNtOGg5SlRaQnhVa3pZa1hWVU9IeEl3bmsKKyAgICAgICAgICAgICAgRndwNHk5Wm5yR2phL2ora3BSeUt2WVA1Q2tOZHEwZTU4L3I3R0xYajQ1aXFkMDNYanNGTlRkank0T0lPZ2Y3SgorICAgICAgICAgICAgICB4TUc3eitoRUIxTFQyc3dUczEwR0lMRldQQnlSbDMvQkVzbmVrTFpkb3FOb0pydm50dFZreGd1M3g4MEppMy9BCisgICAgICAgICAgICAgIFpEOFViL2tCR09TUHl1NnBuM09kbk1UYzVxNHIxcVVlOTg1bFF6Q1p2Q013NkFvR2VDeUpvZE51Mk1idmVOZUgKKyAgICAgICAgICAgICAgK1lQalJnTENRZnp2T0ZScSs5cU10RThYZlVKWmROaFBaaGdkc09HZjh1SmF1VGNJSGJBeXc3Qmh4UHk2UmlrVworICAgICAgICAgICAgICBXNXlpV1VtQnlhKzd0NHkxVFFKemhhbS8weTB6VTNUQUE3Yi9yRHJVN3htTlB3SURBUUFCb3lRd0lqQVBCZ05WCisgICAgICAgICAgICAgIEhSTUJBZjhFQlRBREFRSC9NQThHQTFVZER3RUIvd1FGQXdNSEJnQXdEUVlKS29aSWh2Y05BUUVFQlFBRGdnRUIKKyAgICAgICAgICAgICAgQURFTFdaakZMUGpTakdlT2FlVXdIL21FT1ArbC9uVHR4ZTA3SVdBUUw0a3ZiNHdzaVVzTTFFa1BwdGNCUXN5bQorICAgICAgICAgICAgICBPWWdGaGYzRWxxbWE4NGJiT3lwODV5L2lRbmpwcVdXSjczVEZYU1daYW1TSWhZYjRHaytkUXV3RkkrekQzQjJ5CisgICAgICAgICAgICAgIFd3cWdoYUFIRHp4dHpST0xVQmpvKzk3WTZuZzZWNXpqbXRkR09Gd05Yd1doZjNZK01qbkVydEJJS1lhbzhOSk8KKyAgICAgICAgICAgICAgcDZkaTgwdzgyK3M2T3QrQ0xWdlZvYkxoeFMveTh5V3BsQVRSaVFuSTVpai9XVExNTCt0aVU1YWVzMGM5YWJhZgorICAgICAgICAgICAgICBPN2k5ajFpVHVac0RUM2Y5NmlhMFJTTHNYU0dpajczN1FLYzNaTThsU3hCV2ZlcFdZTytHK0lSZ3IxcTlJVURhCisgICAgICAgICAgICAgIGtLTy92QjlBeTY0UnQ4OFhiTG5uR25zPQorICAgICAgICAgICAgPC9kczpYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgPC9kczpYNTA5RGF0YT4KKyAgICAgICAgPC9kczpLZXlJbmZvPgorICAgICAgICA8Q2lwaGVyRGF0YT4KKyAgICAgICAgICA8Q2lwaGVyVmFsdWU+CisgICAgICAgICAgICBaRjBKUFNmdjc1LzhNK08yTy94aSs4TjFiOUtUOTRhNGwxRDFRNjVoblg2RjAwdCt3QVdaU2tjRFVvRC95Mi9FCisJICAgIFJLR1V5dVF3c0c2bDU4ZTRNd1lwbURJNFJoSHJVWUxDUUJhY0FlaHFWWmh3Tnh2OTlMN0FOc3FyWkpvVDdOMGsKKwkgICAgRVI5TWJtdUlaR2I0cWlzTERmWnR6SUdLS1VVaUEzQVJmUW55NE1VeEZvdlNtVlVGMk9qcVNCWFVWVi9Qak1MaQorICAgICAgICAgICAgZlZUVnlxQ012MDhZd21NNGFiajMzdEtPRU10aVpxQWEwOWxVSXBuQ1V6cTJJQVNoU1JOQnpXSUhlK25kb0I2RworICAgICAgICAgICAgMnA2dWZrMFR1Umlkd2RRWmtad1RXLzJQaksxeDdLZWphcUFEV2FPSUltS2hTQk1wR3prVmZEdXY4YUFGWE90ZgorICAgICAgICAgICAgK0xWNjdPdjZoSkF0N0ZCNjV0RTlIZz09CisgICAgICAgICAgPC9DaXBoZXJWYWx1ZT4KKyAgICAgICAgPC9DaXBoZXJEYXRhPgorICAgICAgICA8UmVmZXJlbmNlTGlzdD4KKyAgICAgICAgICA8RGF0YVJlZmVyZW5jZSBVUkk9IiNFRCIvPgorICAgICAgICA8L1JlZmVyZW5jZUxpc3Q+CisgICAgICA8L0VuY3J5cHRlZEtleT4KKyAgICA8L2RzOktleUluZm8+CisgICAgPENpcGhlckRhdGE+CisgICAgICA8Q2lwaGVyVmFsdWU+CisgICAgICAgIGtZNnNjWnhweVJYUWJhRFpwK0xidXZTRllnbUkzcFFyZnNyQ1Z0My85c1p6cGVVVFBYSkVhdFE1S1BPWFlwSkMKKyAgICAgICAgR2lkMDFoL1Q4UEllemljME9vei9qVStyM2tZTUtlc01ZaVhpbjRDWFRaWWNHaGQwVGptT2Q0a2cxdmxoRThrdAorICAgICAgICBXTEM3SkR6RkxQQXFYYk91ZzNnaG1XdW5GaVVFVGJHSmFGNVY0QUhJb1pyWVArUlMzRFRMZ0pjQVR1RGVXeU9kCisgICAgICAgIHVlcW5MZWZYaUNETnFnU1RzSzRPeU5sWDBmcFVKZ0tiTCtNaGY1dnNxeHlJcURzUy9wNmNSQT09CisgICAgICA8L0NpcGhlclZhbHVlPgorICAgIDwvQ2lwaGVyRGF0YT4KKyAgPC9FbmNyeXB0ZWREYXRhPgorPC9QYXltZW50SW5mbz4KZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy1lbGVtZW50LTNkZXMta3QtcnNhX29hZXBfc2hhMjU2LnhtbCBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy1lbGVtZW50LTNkZXMta3QtcnNhX29hZXBfc2hhMjU2LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWM5NzMwCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtM2Rlcy1rdC1yc2Ffb2FlcF9zaGEyNTYueG1sCkBAIC0wLDAgKzEsNjMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8UGF5bWVudEluZm8geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy9wYXltZW50djIiPgorICA8TmFtZT5Kb2huIFNtaXRoPC9OYW1lPgorICA8RW5jcnlwdGVkRGF0YSBJZD0iRUQiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI0VsZW1lbnQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPgorICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjdHJpcGxlZGVzLWNiYyIvPgorICAgIDxkczpLZXlJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgIDxFbmNyeXB0ZWRLZXkgSWQ9IkVLIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj4KKyAgICAgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNyc2Etb2FlcC1tZ2YxcCI+CisgICAgICAgICAgPGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiLz4KKyAgICAgICAgPC9FbmNyeXB0aW9uTWV0aG9kPgorICAgICAgICA8ZHM6S2V5SW5mbyB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisJICA8ZHM6S2V5TmFtZT5teS1yc2Eta2V5PC9kczpLZXlOYW1lPgorICAgICAgICAgIDxkczpYNTA5RGF0YT4KKyAgICAgICAgICAgIDxkczpYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICAgIE1JSUR6VENDQXJXZ0F3SUJBZ0lCQVRBTkJna3Foa2lHOXcwQkFRUUZBRENCbGpFTE1Ba0dBMVVFQmhNQ1ZWTXgKKyAgICAgICAgICAgICAgQ3pBSkJnTlZCQWdUQWs1Wk1SSXdFQVlEVlFRSEV3bE5ZVzVvWVhSMFlXNHhGVEFUQmdOVkJBb1RERXhoZG1FZworICAgICAgICAgICAgICBVM1Z3Y21WdFpURVVNQklHQTFVRUN4TUxTR1ZoWkNCUFptWnBZMlV4RkRBU0JnTlZCQU1UQzFKVFFTQlVaWE4wCisgICAgICAgICAgICAgIElFTkJNU013SVFZSktvWklodmNOQVFrQkZoUjBaV05vUUd4aGRtRnpkWEJ5WlcxbExtOXlaekFlRncwd01qQXgKKyAgICAgICAgICAgICAgTXpFeE5qSTVORE5hRncwME16QXlNalV4TmpJNU5ETmFNSUdXTVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHQTFVRQorICAgICAgICAgICAgICBDQk1DVGxreEVqQVFCZ05WQkFjVENVMWhibWhoZEhSaGJqRVZNQk1HQTFVRUNoTU1UR0YyWVNCVGRYQnlaVzFsCisgICAgICAgICAgICAgIE1SUXdFZ1lEVlFRTEV3dElaV0ZrSUU5bVptbGpaVEVVTUJJR0ExVUVBeE1MVWxOQklGUmxjM1FnUTBFeEl6QWgKKyAgICAgICAgICAgICAgQmdrcWhraUc5dzBCQ1FFV0ZIUmxZMmhBYkdGMllYTjFjSEpsYldVdWIzSm5NSUlCSWpBTkJna3Foa2lHOXcwQgorICAgICAgICAgICAgICBBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFnajNUT3lVdGdnOTlvRWZzbThoOUpUWkJ4VWt6WWtYVlVPSHhJd25rCisgICAgICAgICAgICAgIEZ3cDR5OVpuckdqYS9qK2twUnlLdllQNUNrTmRxMGU1OC9yN0dMWGo0NWlxZDAzWGpzRk5UZGp5NE9JT2dmN0oKKyAgICAgICAgICAgICAgeE1HN3oraEVCMUxUMnN3VHMxMEdJTEZXUEJ5UmwzL0JFc25la0xaZG9xTm9KcnZudHRWa3hndTN4ODBKaTMvQQorICAgICAgICAgICAgICBaRDhVYi9rQkdPU1B5dTZwbjNPZG5NVGM1cTRyMXFVZTk4NWxRekNadkNNdzZBb0dlQ3lKb2ROdTJNYnZlTmVICisgICAgICAgICAgICAgICtZUGpSZ0xDUWZ6dk9GUnErOXFNdEU4WGZVSlpkTmhQWmhnZHNPR2Y4dUphdVRjSUhiQXl3N0JoeFB5NlJpa1cKKyAgICAgICAgICAgICAgVzV5aVdVbUJ5YSs3dDR5MVRRSnpoYW0vMHkwelUzVEFBN2IvckRyVTd4bU5Qd0lEQVFBQm95UXdJakFQQmdOVgorICAgICAgICAgICAgICBIUk1CQWY4RUJUQURBUUgvTUE4R0ExVWREd0VCL3dRRkF3TUhCZ0F3RFFZSktvWklodmNOQVFFRUJRQURnZ0VCCisgICAgICAgICAgICAgIEFERUxXWmpGTFBqU2pHZU9hZVV3SC9tRU9QK2wvblR0eGUwN0lXQVFMNGt2YjR3c2lVc00xRWtQcHRjQlFzeW0KKyAgICAgICAgICAgICAgT1lnRmhmM0VscW1hODRiYk95cDg1eS9pUW5qcHFXV0o3M1RGWFNXWmFtU0loWWI0R2srZFF1d0ZJK3pEM0IyeQorICAgICAgICAgICAgICBXd3FnaGFBSER6eHR6Uk9MVUJqbys5N1k2bmc2VjV6am10ZEdPRndOWHdXaGYzWStNam5FcnRCSUtZYW84TkpPCisgICAgICAgICAgICAgIHA2ZGk4MHc4MitzNk90K0NMVnZWb2JMaHhTL3k4eVdwbEFUUmlRbkk1aWovV1RMTUwrdGlVNWFlczBjOWFiYWYKKyAgICAgICAgICAgICAgTzdpOWoxaVR1WnNEVDNmOTZpYTBSU0xzWFNHaWo3MzdRS2MzWk04bFN4QldmZXBXWU8rRytJUmdyMXE5SVVEYQorICAgICAgICAgICAgICBrS08vdkI5QXk2NFJ0ODhYYkxubkducz0KKyAgICAgICAgICAgIDwvZHM6WDUwOUNlcnRpZmljYXRlPgorICAgICAgICAgIDwvZHM6WDUwOURhdGE+CisgICAgICAgIDwvZHM6S2V5SW5mbz4KKyAgICAgICAgPENpcGhlckRhdGE+CisgICAgICAgICAgPENpcGhlclZhbHVlPgorICAgICAgICAgICAgICBZOTdnR3VKUngxVnQzMUtIa0tKZkpDaC83WFNTUXhNSDhyRitHQWxuRU1kNGZxOCtzTDkyWEJNdExpTGlOZVdDCisJICAgICAgVk5haUJvcnhacnFJVzl4UEFjT2R2TjF2MVFJeGxoZjhMdGlGeUJNV0tRbTlpNjF0NjRjSkMyWlJDZFQ4blB4eQorICAgICAgICAgICAgICBRdCtmdlVYR3BMbjBMQTRjSHlNdWtlTFBPNEVVUVk4d2h1blZYa3VTZ1RLakpJQ3hZS0Y4SE5Zc0hVcjEvZnl5CisgICAgICAgICAgICAgIFFMMlBXMS9VZnlFcFNCSkFaTWcrVFFGdUJTQ2JBdVdiRksyQWdTdXBWNU5JcHBCTlUvZVJoQXJSZWV1QWd6U3UKKyAgICAgICAgICAgICAgblk5ZFgxb2ZkWnM4R3p2dVY4dGZjQkh6VC9oNTlNUFlNeGw0c1pybC8wTmVNUTBld1poWDN5eWdlYmd5elpOUAorICAgICAgICAgICAgICA0VEI0UXpRWkhSb1hOSVBVczB2a2ZBPT0KKyAgICAgICAgICA8L0NpcGhlclZhbHVlPgorICAgICAgICA8L0NpcGhlckRhdGE+CisgICAgICAgIDxSZWZlcmVuY2VMaXN0PgorICAgICAgICAgIDxEYXRhUmVmZXJlbmNlIFVSST0iI0VEIi8+CisgICAgICAgIDwvUmVmZXJlbmNlTGlzdD4KKyAgICAgIDwvRW5jcnlwdGVkS2V5PgorICAgIDwvZHM6S2V5SW5mbz4KKyAgICA8Q2lwaGVyRGF0YT4KKyAgICAgIDxDaXBoZXJWYWx1ZT4KKyAgICAgICAgIDNCZzVWWksrQi9GRVR0NHJUNGJhSUo0akZLQnJhcXhQbmx0YVNOQzY3Mk5UY014QmxXRzVvbUNHc2JMMzFnQWUKKyAgICAgICAgIEJETmVsbWkrM09tcWhQTFlZc2JOT1NsNk83WUtvUDZKdmJYVmNVY3dXd3NqRXQ5Rm02UFRyVE15K3ZwK2JnRk0KKyAgICAgICAgIEo4TDBXQ3d5UFhuQ2wvREpTOTllYUdTRzUxOHluZk0vY0VtRFVJTkZhdFQ4UFg1NUI0UGQrbzFCV2ttVnhnK0UKKyAgICAgICAgIGpPZ2lhaTdMMzVIQ09UcGlCd0xVVUVydnZ1bHVqazlpRlc1WnZxa2dJRExPbERMZng0L1Y5QT09CisgICAgICA8L0NpcGhlclZhbHVlPgorICAgIDwvQ2lwaGVyRGF0YT4KKyAgPC9FbmNyeXB0ZWREYXRhPgorPC9QYXltZW50SW5mbz4KZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy1lbGVtZW50LTNkZXMta3QtcnNhX29hZXBfc2hhNTEyLnhtbCBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy1lbGVtZW50LTNkZXMta3QtcnNhX29hZXBfc2hhNTEyLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2RjMmExCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtM2Rlcy1rdC1yc2Ffb2FlcF9zaGE1MTIueG1sCkBAIC0wLDAgKzEsNjMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8UGF5bWVudEluZm8geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy9wYXltZW50djIiPgorICA8TmFtZT5Kb2huIFNtaXRoPC9OYW1lPgorICA8RW5jcnlwdGVkRGF0YSBJZD0iRUQiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI0VsZW1lbnQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPgorICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjdHJpcGxlZGVzLWNiYyIvPgorICAgIDxkczpLZXlJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgIDxFbmNyeXB0ZWRLZXkgSWQ9IkVLIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj4KKyAgICAgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNyc2Etb2FlcC1tZ2YxcCI+CisgICAgICAgICAgPGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTUxMiIgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiLz4KKyAgICAgICAgPC9FbmNyeXB0aW9uTWV0aG9kPgorICAgICAgICA8ZHM6S2V5SW5mbyB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgICAgPGRzOktleU5hbWU+bXktcnNhLWtleTwvZHM6S2V5TmFtZT4KKyAgICAgICAgICA8ZHM6WDUwOURhdGE+CisgICAgICAgICAgICA8ZHM6WDUwOUNlcnRpZmljYXRlPgorICAgICAgICAgICAgICBNSUlEelRDQ0FyV2dBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUVFGQURDQmxqRUxNQWtHQTFVRUJoTUNWVk14CisgICAgICAgICAgICAgIEN6QUpCZ05WQkFnVEFrNVpNUkl3RUFZRFZRUUhFd2xOWVc1b1lYUjBZVzR4RlRBVEJnTlZCQW9UREV4aGRtRWcKKyAgICAgICAgICAgICAgVTNWd2NtVnRaVEVVTUJJR0ExVUVDeE1MU0dWaFpDQlBabVpwWTJVeEZEQVNCZ05WQkFNVEMxSlRRU0JVWlhOMAorICAgICAgICAgICAgICBJRU5CTVNNd0lRWUpLb1pJaHZjTkFRa0JGaFIwWldOb1FHeGhkbUZ6ZFhCeVpXMWxMbTl5WnpBZUZ3MHdNakF4CisgICAgICAgICAgICAgIE16RXhOakk1TkROYUZ3MDBNekF5TWpVeE5qSTVORE5hTUlHV01Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUUKKyAgICAgICAgICAgICAgQ0JNQ1Rsa3hFakFRQmdOVkJBY1RDVTFoYm1oaGRIUmhiakVWTUJNR0ExVUVDaE1NVEdGMllTQlRkWEJ5WlcxbAorICAgICAgICAgICAgICBNUlF3RWdZRFZRUUxFd3RJWldGa0lFOW1abWxqWlRFVU1CSUdBMVVFQXhNTFVsTkJJRlJsYzNRZ1EwRXhJekFoCisgICAgICAgICAgICAgIEJna3Foa2lHOXcwQkNRRVdGSFJsWTJoQWJHRjJZWE4xY0hKbGJXVXViM0puTUlJQklqQU5CZ2txaGtpRzl3MEIKKyAgICAgICAgICAgICAgQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBZ2ozVE95VXRnZzk5b0Vmc204aDlKVFpCeFVrellrWFZVT0h4SXduaworICAgICAgICAgICAgICBGd3A0eTlabnJHamEvaitrcFJ5S3ZZUDVDa05kcTBlNTgvcjdHTFhqNDVpcWQwM1hqc0ZOVGRqeTRPSU9nZjdKCisgICAgICAgICAgICAgIHhNRzd6K2hFQjFMVDJzd1RzMTBHSUxGV1BCeVJsMy9CRXNuZWtMWmRvcU5vSnJ2bnR0Vmt4Z3UzeDgwSmkzL0EKKyAgICAgICAgICAgICAgWkQ4VWIva0JHT1NQeXU2cG4zT2RuTVRjNXE0cjFxVWU5ODVsUXpDWnZDTXc2QW9HZUN5Sm9kTnUyTWJ2ZU5lSAorICAgICAgICAgICAgICArWVBqUmdMQ1FmenZPRlJxKzlxTXRFOFhmVUpaZE5oUFpoZ2RzT0dmOHVKYXVUY0lIYkF5dzdCaHhQeTZSaWtXCisgICAgICAgICAgICAgIFc1eWlXVW1CeWErN3Q0eTFUUUp6aGFtLzB5MHpVM1RBQTdiL3JEclU3eG1OUHdJREFRQUJveVF3SWpBUEJnTlYKKyAgICAgICAgICAgICAgSFJNQkFmOEVCVEFEQVFIL01BOEdBMVVkRHdFQi93UUZBd01IQmdBd0RRWUpLb1pJaHZjTkFRRUVCUUFEZ2dFQgorICAgICAgICAgICAgICBBREVMV1pqRkxQalNqR2VPYWVVd0gvbUVPUCtsL25UdHhlMDdJV0FRTDRrdmI0d3NpVXNNMUVrUHB0Y0JRc3ltCisgICAgICAgICAgICAgIE9ZZ0ZoZjNFbHFtYTg0YmJPeXA4NXkvaVFuanBxV1dKNzNURlhTV1phbVNJaFliNEdrK2RRdXdGSSt6RDNCMnkKKyAgICAgICAgICAgICAgV3dxZ2hhQUhEenh0elJPTFVCam8rOTdZNm5nNlY1emptdGRHT0Z3Tlh3V2hmM1krTWpuRXJ0QklLWWFvOE5KTworICAgICAgICAgICAgICBwNmRpODB3ODIrczZPdCtDTFZ2Vm9iTGh4Uy95OHlXcGxBVFJpUW5JNWlqL1dUTE1MK3RpVTVhZXMwYzlhYmFmCisgICAgICAgICAgICAgIE83aTlqMWlUdVpzRFQzZjk2aWEwUlNMc1hTR2lqNzM3UUtjM1pNOGxTeEJXZmVwV1lPK0crSVJncjFxOUlVRGEKKyAgICAgICAgICAgICAga0tPL3ZCOUF5NjRSdDg4WGJMbm5HbnM9CisgICAgICAgICAgICA8L2RzOlg1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgICA8L2RzOlg1MDlEYXRhPgorICAgICAgICA8L2RzOktleUluZm8+CisgICAgICAgIDxDaXBoZXJEYXRhPgorICAgICAgICAgIDxDaXBoZXJWYWx1ZT4KKyAgICAgICAgICAgIGJKVkR2cnR2NTc4emN2M0wvcEsyWUNDSnR2TVREdXBVSkI1K1pObHI2UWpXb2x0dG93M1FScllIWGovVzAwU1gKKyAgICAgICAgICAgIGxHTWRxUnVKT2tuNTc1WHEzUEhPMXNtTzVjeFdsNWo3c1R6VlNBa3p4L1o1eHFpTWhyRlYrbEJXT0EvdnA0MzcKKyAgICAgICAgICAgIG1FeUdVeERybEUzRTJOd3ZLQ244b3ZQM09yTEl6M1RWenkzVTE2aG0weXJpV2NJWkFRRXBDUXNTTHh0UFdWWHQKKyAgICAgICAgICAgICtNTVZ2bi85eTFDTEFaaDZkSEJWSGlwcC9tcGYyWDJraTRYdUh2Q1J2YUFCMGZ5bkIzbVZiT1VBaS9OWVI2NW8KKyAgICAgICAgICAgIHU1Qk9mZVM3SGdUa1dwby9YVGE3ZS9YcGtHc1Nob2RPbTRpeEord0tTTnNNZ05YaXZZbXRnaFFSNzl4OEgwK0oKKyAgICAgICAgICAgIGxNZVRmM2RZdFYzUlVKdmk1bjFDUkE9PQorICAgICAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgICAgIDwvQ2lwaGVyRGF0YT4KKyAgICAgICAgPFJlZmVyZW5jZUxpc3Q+CisgICAgICAgICAgPERhdGFSZWZlcmVuY2UgVVJJPSIjRUQiLz4KKyAgICAgICAgPC9SZWZlcmVuY2VMaXN0PgorICAgICAgPC9FbmNyeXB0ZWRLZXk+CisgICAgPC9kczpLZXlJbmZvPgorICAgIDxDaXBoZXJEYXRhPgorICAgICAgPENpcGhlclZhbHVlPgorICAgICAgICBIa3hpWVJwdFZqZ2J2MVVqVXB5QVlwL3R5OHZCZ0dnUVkvWnIrMHR6NVo4VzE2Z3A3a3ZIeEFJY3lMM0U4MXlPCisgICAgICAgIDdHNTRxaHZRUzRJZTFFdCtqOS9YRWdCTDhSZEY4VGRCblE1UGxQYW9XMGNrSVYvZjhnSXh4R1UwYWtqY2lVU0cKKyAgICAgICAgaVhIS0wwNTlmZHI0NmFERkxZdHduaU5pSllHMTZlRy9GRmhsRGRwbFdJSytGa2FURU1NQURFRzc4RHJ5bGUrQQorICAgICAgICBEVGwxVjYzV0dCcFM3M2syMWhhZy9Nd3YyeHc1SFVhc21QMVJGdUxYNEpDeGNaQXdKclB6b0E9PQorICAgICAgPC9DaXBoZXJWYWx1ZT4KKyAgICA8L0NpcGhlckRhdGE+CisgIDwvRW5jcnlwdGVkRGF0YT4KKzwvUGF5bWVudEluZm8+CmRpZmYgLS1naXQgYS9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtZWxlbWVudC0zZGVzLWt3LTNkZXMueG1sIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtM2Rlcy1rdy0zZGVzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWQyY2NjCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtM2Rlcy1rdy0zZGVzLnhtbApAQCAtMCwwICsxLDI5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFBheW1lbnRJbmZvIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvcGF5bWVudHYyIj4KKyAgPE5hbWU+Sm9obiBTbWl0aDwvTmFtZT4KKyAgPEVuY3J5cHRlZERhdGEgSWQ9IkVEIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNFbGVtZW50IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj4KKyAgICA8RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3RyaXBsZWRlcy1jYmMiLz4KKyAgICA8ZHM6S2V5SW5mbyB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICA8RW5jcnlwdGVkS2V5IElkPSJFSyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+CisgICAgICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMja3ctdHJpcGxlZGVzIi8+CisgICAgICAgIDxkczpLZXlJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgICA8ZHM6S2V5TmFtZT5teS10cmlwbGVkZXMta2V5PC9kczpLZXlOYW1lPgorICAgICAgICA8L2RzOktleUluZm8+CisgICAgICAgIDxDaXBoZXJEYXRhPgorICAgICAgICAgIDxDaXBoZXJWYWx1ZT5IZ1Z1SG9YeEJRV0Q5ZnZpMGd0OVRhbnl3WjVsSm9rTS8xMmZjTUc2Z1JvTWpzQ1B1bEgrNEE9PTwvQ2lwaGVyVmFsdWU+CisgICAgICAgIDwvQ2lwaGVyRGF0YT4KKyAgICAgICAgPFJlZmVyZW5jZUxpc3Q+CisgICAgICAgICAgPERhdGFSZWZlcmVuY2UgVVJJPSIjRUQiLz4KKyAgICAgICAgPC9SZWZlcmVuY2VMaXN0PgorICAgICAgPC9FbmNyeXB0ZWRLZXk+CisgICAgPC9kczpLZXlJbmZvPgorICAgIDxDaXBoZXJEYXRhPgorICAgICAgPENpcGhlclZhbHVlPgorICAgICAgICB5VU1JSGtqNUVFVGNralo1OWZwZGE0K200WUxDcmtKc251UnorUTNlNXNQK1Z2SEtSSDFrZGVHa1h3M2tZVVJWCisJSk0zblFqR2wyZWdXODBvVXhTeWtRRDJGOWlEb0lqTmhMU2dJYnl1c2U2NG9vLzUvdjlJaWFVcFN2ckFvY3dMUAorCUF6RklVbU9yeG1JYWdBa1JHRE9lTVI4dGRITEQ2Zzg0ZFFqNE8vYUdmd2hMLzJ3VW8vbCs3b25yYm1zZDZwVkkKKwlmak55dlhtK2VJVHV5VW5rRFRIckNSK2RmYjJzSGFRM2czTWNneWZQNlpqSS9MNTBTUEpaL3c9PQorICAgICAgPC9DaXBoZXJWYWx1ZT4KKyAgICA8L0NpcGhlckRhdGE+CisgIDwvRW5jcnlwdGVkRGF0YT4KKzwvUGF5bWVudEluZm8+CmRpZmYgLS1naXQgYS9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtZWxlbWVudC1hZXMxMjgta2EtZGgueG1sIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtYWVzMTI4LWthLWRoLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjcyZGU3Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtYWVzMTI4LWthLWRoLnhtbApAQCAtMCwwICsxLDgzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFBheW1lbnRJbmZvIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvcGF5bWVudHYyIj4KKyAgPE5hbWU+Sm9obiBTbWl0aDwvTmFtZT4KKyAgPEVuY3J5cHRlZERhdGEgSWQ9IkVEIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNFbGVtZW50IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj4KKyAgICA8RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczEyOC1jYmMiLz4KKyAgICA8ZHM6S2V5SW5mbyB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICA8QWdyZWVtZW50TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjZGgiPgorICAgICAgICA8S0EtTm9uY2U+WVdKalpHVT08L0tBLU5vbmNlPgorICAgICAgICA8ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz4KKyAgICAgICAgPE9yaWdpbmF0b3JLZXlJbmZvPgorICAgICAgICAgIDxkczpYNTA5RGF0YT4KKyAgICAgICAgICAgIDxkczpYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICAgICAgTUlJRWpEQ0NBL1dnQXdJQkFnSUJBVEFOQmdrcWhraUc5dzBCQVFRRkFEQ0JsakVMTUFrR0ExVUVCaE1DVlZNeAorICAgICAgICAgICAgICAgIEN6QUpCZ05WQkFnVEFrNVpNUkl3RUFZRFZRUUhFd2xOWVc1b1lYUjBZVzR4RlRBVEJnTlZCQW9UREV4aGRtRWcKKyAgICAgICAgICAgICAgICBVM1Z3Y21WdFpURVVNQklHQTFVRUN4TUxTR1ZoWkNCUFptWnBZMlV4RkRBU0JnTlZCQU1UQzFKVFFTQlVaWE4wCisgICAgICAgICAgICAgICAgSUVOQk1TTXdJUVlKS29aSWh2Y05BUWtCRmhSMFpXTm9RR3hoZG1GemRYQnlaVzFsTG05eVp6QWVGdzB3TWpBeAorICAgICAgICAgICAgICAgIE16QXlNalV3TkRCYUZ3MHhNREF4TURFd05UQXdNREJhTUlHTU1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUUKKyAgICAgICAgICAgICAgICBDQk1DVGxreEVqQVFCZ05WQkFjVENVMWhibWhoZEhSaGJqRU9NQXdHQTFVRUNoTUZVR2hoYjNNeEZEQVNCZ05WCisgICAgICAgICAgICAgICAgQkFzVEMwaGxZV1FnVDJabWFXTmxNUmN3RlFZRFZRUURFdzVFU0NCVVpYTjBJRU5zYVdWdWRERWRNQnNHQ1NxRworICAgICAgICAgICAgICAgIFNJYjNEUUVKQVJZT2RHVmphRUJ3YUdGdmN5NXZjbWN3Z2dKRE1JSUJ1QVlIS29aSXpqNENBVENDQWFzQ2dZRUEKKyAgICAgICAgICAgICAgICB1YXZhdDdpNk5PcG5ST2JkeDdHejM4aDh4a2dtdjIwWFVhajFKamZ2TUFRZlFGTUhlc2hHaFkyUTBtd3ZKMU9mCisgICAgICAgICAgICAgICAgWC9rWjRjTWJTWVV5d2gzV0FZNnpRczhXMnV4ZzhHZWR1Q0xlYk5RR1RhSFZGVm1ySk1RYXdsVjFiSU1RK2tEaQorICAgICAgICAgICAgICAgIElRTlIvRlBxU05IS0QyUTkvdW9HRDVkMmw0S1AzcUg4ZHY1SE9UOGZDd1VDZ1lCeHVucW1VdUtaRlROS0poSDkKKyAgICAgICAgICAgICAgICBHNlVJTmxJL1hyOWpQZXNqNS9JOGZwV2d4WnhzZ2t6a3NxaXNEQ3NsWjA5dVpUQVRyR0ZURjNmazZrTmh4MjVzCisgICAgICAgICAgICAgICAgVUN0WUhISzFIelFtc0xNdTJCV05CUXJrTEMrTWtkM2QzOVVkTmR1UFc0a0NNcGNkb0hBaCt6VHFBSDJRa0tKbQorICAgICAgICAgICAgICAgIHl4Yy94MExldmtTVWs4clg4REZhM3kxNTJRSVZBTCtFbzRnUEwzMzlkazdpbnE4N1BuUjFQV3VIQW0wQStDOUUKKyAgICAgICAgICAgICAgICBHUERTcGhGYVBXTzVMUVROZmxKMGw5SUdqY05GR3JKWDBpbVdyak0ycTZiR1l6MFpLNGNKaGNYMTJZWk9qUjUyCisgICAgICAgICAgICAgICAgVFpoM2N5NnlBSkc0NzBpNjVubHo1LzNFU1dGSHNNTzBDT3JEaS9DYTVSZk1yWUdjYzhocnlkekZsVDF6cU1GYQorICAgICAgICAgICAgICAgIDF5dXFRS1ZzR3dYY01Cd0RGZ0NaL2hxTEF0Qmk2ZHl2Nkt5K09mWGZYZ0pCUGhRQ0FnTlBBNEdFQUFLQmdGV3cKKyAgICAgICAgICAgICAgICBMeVlPNElQeEpzYmFRUXNKNEsxeFRqUFNqVE1tdkc0ZnBLQStTMUJHejhGSTFTUEFDYjIvWVlDcm1qb1dOdmtRCisgICAgICAgICAgICAgICAgVjZOVFErZWppNlRHQTdFVDg1YzRBY1JadHhPaTNnU1A1S3EyQTNFOWRVb3Vpa2hyS1NIRmIrTng0MjBDWG10cAorICAgICAgICAgICAgICAgIGp4QnUrcVVUYjdBTXJSQ3VzOG1hSHdVOVBkS1FiWnhvREZPTEFySkhvMDB3U3pBUEJnTlZIUThCQWY4RUJRTUQKKyAgICAgICAgICAgICAgICBCd2dBTUJrR0ExVWRFUVFTTUJDQkRuUmxZMmhBY0doaGIzTXViM0puTUIwR0ExVWREZ1FXQkJUZmt5L2QrL3dJCisgICAJCTZ6aWNONHVEbDBQU0F5Uk5uVEFOQmdrcWhraUc5dzBCQVFRRkFBT0JnUUErMmNXc0FaOWE0NHR0QlgxWjNlTUkKKyAJCWUwR2dkdVhFckJ0OXhzdjJTeTZmUy82Q3l5Sm0zdHB0aHVUMldNWm11NkUrY2VCTGtGVStUbnhuRWYvTnJTajgKKwkJd3RRdC93VkhhY2FTWk1jd1VEdi91VFV4cnRJWlVKN0E3VnhjQXZibkxFNWZRcUtoRjZRVDVpcnRiRTJSeXZkNworCQlvTWZHRzhQbVUrc2JOOXNOWHRJek9BPT0KKyAgICAgICAgICAgIDwvZHM6WDUwOUNlcnRpZmljYXRlPgorICAgICAgICAgIDwvZHM6WDUwOURhdGE+CisgICAgICAgIDwvT3JpZ2luYXRvcktleUluZm8+CisgICAgICAgIDxSZWNpcGllbnRLZXlJbmZvPgorICAgICAgICAgIDxkczpYNTA5RGF0YT4KKyAgICAgICAgICAgIDxkczpYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICAgICAgTUlJRWpUQ0NBL2FnQXdJQkFnSUJBakFOQmdrcWhraUc5dzBCQVFRRkFEQ0JsakVMTUFrR0ExVUVCaE1DVlZNeAorCQlDekFKQmdOVkJBZ1RBazVaTVJJd0VBWURWUVFIRXdsTllXNW9ZWFIwWVc0eEZUQVRCZ05WQkFvVERFeGhkbUVnCisJCVUzVndjbVZ0WlRFVU1CSUdBMVVFQ3hNTFNHVmhaQ0JQWm1acFkyVXhGREFTQmdOVkJBTVRDMUpUUVNCVVpYTjAKKwkJSUVOQk1TTXdJUVlKS29aSWh2Y05BUWtCRmhSMFpXTm9RR3hoZG1GemRYQnlaVzFsTG05eVp6QWVGdzB3TWpBeAorCQlNekF5TWpVeU5UTmFGdzB4TURBeE1ERXdOVEF3TURCYU1JR01NUXN3Q1FZRFZRUUdFd0pWVXpFTE1Ba0dBMVVFCisJCUNCTUNUbGt4RWpBUUJnTlZCQWNUQ1UxaGJtaGhkSFJoYmpFT01Bd0dBMVVFQ2hNRlVHaGhiM014RkRBU0JnTlYKKwkJQkFzVEMwaGxZV1FnVDJabWFXTmxNUmN3RlFZRFZRUURFdzVFU0NCVVpYTjBJRU5zYVdWdWRERWRNQnNHQ1NxRworCQlTSWIzRFFFSkFSWU9kR1ZqYUVCd2FHRnZjeTV2Y21jd2dnSkVNSUlCdUFZSEtvWkl6ajRDQVRDQ0Fhc0NnWUVBCisJCXVhdmF0N2k2Tk9wblJPYmR4N0d6MzhoOHhrZ212MjBYVWFqMUpqZnZNQVFmUUZNSGVzaEdoWTJRMG13dkoxT2YKKwkJWC9rWjRjTWJTWVV5d2gzV0FZNnpRczhXMnV4ZzhHZWR1Q0xlYk5RR1RhSFZGVm1ySk1RYXdsVjFiSU1RK2tEaQorCQlJUU5SL0ZQcVNOSEtEMlE5L3VvR0Q1ZDJsNEtQM3FIOGR2NUhPVDhmQ3dVQ2dZQnh1bnFtVXVLWkZUTktKaEg5CisJCUc2VUlObEkvWHI5alBlc2o1L0k4ZnBXZ3haeHNna3prc3Fpc0RDc2xaMDl1WlRBVHJHRlRGM2ZrNmtOaHgyNXMKKwkJVUN0WUhISzFIelFtc0xNdTJCV05CUXJrTEMrTWtkM2QzOVVkTmR1UFc0a0NNcGNkb0hBaCt6VHFBSDJRa0tKbQorCQl5eGMveDBMZXZrU1VrOHJYOERGYTN5MTUyUUlWQUwrRW80Z1BMMzM5ZGs3aW5xODdQblIxUFd1SEFtMEErQzlFCisJCUdQRFNwaEZhUFdPNUxRVE5mbEowbDlJR2pjTkZHckpYMGltV3JqTTJxNmJHWXowWks0Y0poY1gxMllaT2pSNTIKKwkJVFpoM2N5NnlBSkc0NzBpNjVubHo1LzNFU1dGSHNNTzBDT3JEaS9DYTVSZk1yWUdjYzhocnlkekZsVDF6cU1GYQorCQkxeXVxUUtWc0d3WGNNQndERmdDWi9ocUxBdEJpNmR5djZLeStPZlhmWGdKQlBoUUNBZ05QQTRHRkFBS0JnUUNNCisJCUt0bk15alQ5RzFMS1Rab043ckh3SU8wOEQ1ajFZWUlzY3NRRGMrcTRueTVXRUZvK3dFbU9xeEdjRTlKclJkZWIKKwkJaXQ2Y1Q4RjdUV1d6ZURKVXlhWEZFaTRFMXBhbkNCQ0wxY3JxUy9IYlk4VkgvenpoVCs1TDIzMkxjaHNvWWExcAorCQlkcXh4TEhXOFJyT2F4NFJMVnJjSU9QY1c0eDNHZ2swQU5ZUWhSNmtObXFOTk1Fc3dEd1lEVlIwUEFRSC9CQVVECisJCUF3Y0lBREFaQmdOVkhSRUVFakFRZ1E1MFpXTm9RSEJvWVc5ekxtOXlaekFkQmdOVkhRNEVGZ1FVSGRkQkptZlYKKwkJNk1EM0ZUYlZtSGNMRk42UUZBY3dEUVlKS29aSWh2Y05BUUVFQlFBRGdZRUFLWmw5UC9abUlyd0hwM0JUZkJIbAorCQllRkJrOUNiaEsxNEZPYk1HV1NrZmpxaXBiNXNuWEJQRTN1UEJydlAxU3Rpc1BSc0sveTFPWmZjamprQTZodDBqCisJCVlXcDlsb2hORFRsYy9OT0tHT1FTQ3BudHFyK3dRaGM2bDE2amV6cVI3c0t2MmVIQkZHczBWN0hDckVlMm1UUDQKKwkJckRhL1lLcm1MNUs2UzlHU0YyN3J4NDA9CisJICAgIDwvZHM6WDUwOUNlcnRpZmljYXRlPgorCSAgPC9kczpYNTA5RGF0YT4KKyAgICAgICAgPC9SZWNpcGllbnRLZXlJbmZvPgorICAgICAgPC9BZ3JlZW1lbnRNZXRob2Q+CisgICAgPC9kczpLZXlJbmZvPgorICAgIDxDaXBoZXJEYXRhPgorICAgICAgPENpcGhlclZhbHVlPgorICAgICAgICAyKzRvTTNURmZPUTVKTUl2UmJUazNTYmVXcWJTVkFoTWI5elQrM0JhdGNVSnVoeHp6WHRMS0V6a2ZQVDA5aVRQCisgICAgICAgIE5td0VvVXlzQjV1RVRtUTQ5RmQvMGwyMVFqVW1jdEFhQ0JJYldTclA0ZjNLMlNVR3hqS05aRTRQZXMrOER3aVQKKyAgICAgICAgSDFjYWsrM3FUMHpicUZhNnJYY2RMeFMvdWN4Sk9QTUpWOVpDRTRTa3ZGdDJaTUU4dVJldkZFWUlxcC9ISW5GWgorICAgICAgICBPalk5TGY4K2hIT1hWT1Zxck1PYng3L0NGem0wQVMyYUw0V215ZkdNM3p5VU4xQkYzblM0enpWT0hOZklGb3BYCisgICAgICA8L0NpcGhlclZhbHVlPgorICAgIDwvQ2lwaGVyRGF0YT4KKyAgPC9FbmNyeXB0ZWREYXRhPgorPC9QYXltZW50SW5mbz4KZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy1lbGVtZW50LWFlczEyOC1rdC1yc2ExXzUueG1sIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtYWVzMTI4LWt0LXJzYTFfNS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY1ODE2ZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy1lbGVtZW50LWFlczEyOC1rdC1yc2ExXzUueG1sCkBAIC0wLDAgKzEsNjEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8UGF5bWVudEluZm8geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy9wYXltZW50djIiPgorICA8TmFtZT5Kb2huIFNtaXRoPC9OYW1lPgorICA8RW5jcnlwdGVkRGF0YSBJZD0iRUQiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI0VsZW1lbnQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPgorICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjYWVzMTI4LWNiYyIvPgorICAgIDxkczpLZXlJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgIDxFbmNyeXB0ZWRLZXkgSWQ9IkVLIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj4KKyAgICAgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNyc2EtMV81Ii8+CisgICAgICAgIDxkczpLZXlJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgICA8ZHM6S2V5TmFtZT5teS1yc2Eta2V5PC9kczpLZXlOYW1lPgorICAgICAgICAgIDxkczpYNTA5RGF0YT4KKyAgICAgICAgICAgIDxkczpYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICAgIE1JSUR6VENDQXJXZ0F3SUJBZ0lCQVRBTkJna3Foa2lHOXcwQkFRUUZBRENCbGpFTE1Ba0dBMVVFQmhNQ1ZWTXgKKyAgICAgICAgICAgICAgQ3pBSkJnTlZCQWdUQWs1Wk1SSXdFQVlEVlFRSEV3bE5ZVzVvWVhSMFlXNHhGVEFUQmdOVkJBb1RERXhoZG1FZworICAgICAgICAgICAgICBVM1Z3Y21WdFpURVVNQklHQTFVRUN4TUxTR1ZoWkNCUFptWnBZMlV4RkRBU0JnTlZCQU1UQzFKVFFTQlVaWE4wCisgICAgICAgICAgICAgIElFTkJNU013SVFZSktvWklodmNOQVFrQkZoUjBaV05vUUd4aGRtRnpkWEJ5WlcxbExtOXlaekFlRncwd01qQXgKKyAgICAgICAgICAgICAgTXpFeE5qSTVORE5hRncwME16QXlNalV4TmpJNU5ETmFNSUdXTVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHQTFVRQorICAgICAgICAgICAgICBDQk1DVGxreEVqQVFCZ05WQkFjVENVMWhibWhoZEhSaGJqRVZNQk1HQTFVRUNoTU1UR0YyWVNCVGRYQnlaVzFsCisgICAgICAgICAgICAgIE1SUXdFZ1lEVlFRTEV3dElaV0ZrSUU5bVptbGpaVEVVTUJJR0ExVUVBeE1MVWxOQklGUmxjM1FnUTBFeEl6QWgKKyAgICAgICAgICAgICAgQmdrcWhraUc5dzBCQ1FFV0ZIUmxZMmhBYkdGMllYTjFjSEpsYldVdWIzSm5NSUlCSWpBTkJna3Foa2lHOXcwQgorICAgICAgICAgICAgICBBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFnajNUT3lVdGdnOTlvRWZzbThoOUpUWkJ4VWt6WWtYVlVPSHhJd25rCisgICAgICAgICAgICAgIEZ3cDR5OVpuckdqYS9qK2twUnlLdllQNUNrTmRxMGU1OC9yN0dMWGo0NWlxZDAzWGpzRk5UZGp5NE9JT2dmN0oKKyAgICAgICAgICAgICAgeE1HN3oraEVCMUxUMnN3VHMxMEdJTEZXUEJ5UmwzL0JFc25la0xaZG9xTm9KcnZudHRWa3hndTN4ODBKaTMvQQorICAgICAgICAgICAgICBaRDhVYi9rQkdPU1B5dTZwbjNPZG5NVGM1cTRyMXFVZTk4NWxRekNadkNNdzZBb0dlQ3lKb2ROdTJNYnZlTmVICisgICAgICAgICAgICAgICtZUGpSZ0xDUWZ6dk9GUnErOXFNdEU4WGZVSlpkTmhQWmhnZHNPR2Y4dUphdVRjSUhiQXl3N0JoeFB5NlJpa1cKKyAgICAgICAgICAgICAgVzV5aVdVbUJ5YSs3dDR5MVRRSnpoYW0vMHkwelUzVEFBN2IvckRyVTd4bU5Qd0lEQVFBQm95UXdJakFQQmdOVgorICAgICAgICAgICAgICBIUk1CQWY4RUJUQURBUUgvTUE4R0ExVWREd0VCL3dRRkF3TUhCZ0F3RFFZSktvWklodmNOQVFFRUJRQURnZ0VCCisgICAgICAgICAgICAgIEFERUxXWmpGTFBqU2pHZU9hZVV3SC9tRU9QK2wvblR0eGUwN0lXQVFMNGt2YjR3c2lVc00xRWtQcHRjQlFzeW0KKyAgICAgICAgICAgICAgT1lnRmhmM0VscW1hODRiYk95cDg1eS9pUW5qcHFXV0o3M1RGWFNXWmFtU0loWWI0R2srZFF1d0ZJK3pEM0IyeQorICAgICAgICAgICAgICBXd3FnaGFBSER6eHR6Uk9MVUJqbys5N1k2bmc2VjV6am10ZEdPRndOWHdXaGYzWStNam5FcnRCSUtZYW84TkpPCisgICAgICAgICAgICAgIHA2ZGk4MHc4MitzNk90K0NMVnZWb2JMaHhTL3k4eVdwbEFUUmlRbkk1aWovV1RMTUwrdGlVNWFlczBjOWFiYWYKKyAgICAgICAgICAgICAgTzdpOWoxaVR1WnNEVDNmOTZpYTBSU0xzWFNHaWo3MzdRS2MzWk04bFN4QldmZXBXWU8rRytJUmdyMXE5SVVEYQorICAgICAgICAgICAgICBrS08vdkI5QXk2NFJ0ODhYYkxubkducz0KKyAgICAgICAgICAgIDwvZHM6WDUwOUNlcnRpZmljYXRlPgorICAgICAgICAgIDwvZHM6WDUwOURhdGE+CisgICAgICAgIDwvZHM6S2V5SW5mbz4KKyAgICAgICAgPENpcGhlckRhdGE+CisgICAgICAgICAgPENpcGhlclZhbHVlPgorICAgICAgICAgICAgY0N4eFloM3hHQlRxbFhiaG1LeFd6Tk1sSGVFMjhFN3ZQck15TTVWNFQrdDFJeTJjc2oxQm9RN2NxQmpFaHFFeQorCSAgICBFb3Q0V05SWXNZN1A0NG1XQkt1cmoybWRXUVdnb3hIdnRJVFA5QVIzSlRNeFVvM1RGNWx0Vzc2RExEc0V2V2xFCisgICAgICAgICAgICB1WkthbTBQWWo2bFlQS2Q0bnBVVUxlWnlSL3JEUnJ0aC93RklCRDh2YlFsVXNCSGFwTlQ5TWJRZlNLWmVtT3VUCisgICAgICAgICAgICBVSkw5UE5nc29zeVNwS3JYNTY0b1F3Mzk4WHN4ZlRGeGk0aHFiZHF6QS9DTEw0MThYMDFoVWpJSGR5djZYbkEyCisgICAgICAgICAgICA5OEJtZnY5V01QcFgwNXVkUjRyYUR2NVg4Tld4akgwMGhBaGFzTTNxdW14b3lDVDZtQUdmcXZFMjNJK09YdHJOCisgICAgICAgICAgICBsVXZFOW1NakFOdzR6d2VDSHNPY2Z3PT0KKyAgICAgICAgICA8L0NpcGhlclZhbHVlPgorICAgICAgICA8L0NpcGhlckRhdGE+CisgICAgICAgIDxSZWZlcmVuY2VMaXN0PgorICAgICAgICAgIDxEYXRhUmVmZXJlbmNlIFVSST0iI0VEIi8+CisgICAgICAgIDwvUmVmZXJlbmNlTGlzdD4KKyAgICAgIDwvRW5jcnlwdGVkS2V5PgorICAgIDwvZHM6S2V5SW5mbz4KKyAgICA8Q2lwaGVyRGF0YT4KKyAgICAgIDxDaXBoZXJWYWx1ZT4KKyAgICAgICAgdTJ2b2drd2x2RnFla25KMGxZVEJaa1dTL2VYOExSMWZEUEZNZnlLMS9VWTBFeVpmSHZiT05mREhjQy9ITHYvZgorICAgICAgICBhQU9PTzJZMEdxc2tuUDBMWVQxT3pua2lKcnp4MTM0Y21KQ2dieXJZWGQzTXAyMVBxM3JzNjZKSjM0UXQzLytJCisgICAgICAgIEV5SkJVU01UOFRkVDNmQkQ0NEJ0T3FIMm9wL2h5MmczaFFQRlp1bDRHaUhCRW5OSkwvNG5VMXlhZDNiTXZ0QUIKKyAgICAgICAgbXpoeDgwbEp2UEdMY3J1ajVWNzdXTXZrdlpmb2VFcU1xNHFQV0swMlpVUnNKc3EwaVpjSkRpMzlOQjdPQ2lPTgorICAgICAgPC9DaXBoZXJWYWx1ZT4KKyAgICA8L0NpcGhlckRhdGE+CisgIDwvRW5jcnlwdGVkRGF0YT4KKzwvUGF5bWVudEluZm8+CmRpZmYgLS1naXQgYS9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtZWxlbWVudC1hZXMxMjgta3QtcnNhX29hZXBfc2hhMS54bWwgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtZWxlbWVudC1hZXMxMjgta3QtcnNhX29hZXBfc2hhMS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThlYzIxZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy1lbGVtZW50LWFlczEyOC1rdC1yc2Ffb2FlcF9zaGExLnhtbApAQCAtMCwwICsxLDYzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFBheW1lbnRJbmZvIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvcGF5bWVudHYyIj4KKyAgPE5hbWU+Sm9obiBTbWl0aDwvTmFtZT4KKyAgPEVuY3J5cHRlZERhdGEgSWQ9IkVEIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNFbGVtZW50IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj4KKyAgICA8RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczEyOC1jYmMiLz4KKyAgICA8ZHM6S2V5SW5mbyB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICA8RW5jcnlwdGVkS2V5IElkPSJFSyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+CisgICAgICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLW9hZXAtbWdmMXAiPgorICAgICAgICAgIDxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiLz4KKyAgICAgICAgPC9FbmNyeXB0aW9uTWV0aG9kPgorICAgICAgICA8ZHM6S2V5SW5mbyB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgICAgPGRzOktleU5hbWU+bXktcnNhLWtleTwvZHM6S2V5TmFtZT4KKyAgICAgICAgICA8ZHM6WDUwOURhdGE+CisgICAgICAgICAgICA8ZHM6WDUwOUNlcnRpZmljYXRlPgorICAgICAgICAgICAgICBNSUlEelRDQ0FyV2dBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUVFGQURDQmxqRUxNQWtHQTFVRUJoTUNWVk14CisgICAgICAgICAgICAgIEN6QUpCZ05WQkFnVEFrNVpNUkl3RUFZRFZRUUhFd2xOWVc1b1lYUjBZVzR4RlRBVEJnTlZCQW9UREV4aGRtRWcKKyAgICAgICAgICAgICAgVTNWd2NtVnRaVEVVTUJJR0ExVUVDeE1MU0dWaFpDQlBabVpwWTJVeEZEQVNCZ05WQkFNVEMxSlRRU0JVWlhOMAorICAgICAgICAgICAgICBJRU5CTVNNd0lRWUpLb1pJaHZjTkFRa0JGaFIwWldOb1FHeGhkbUZ6ZFhCeVpXMWxMbTl5WnpBZUZ3MHdNakF4CisgICAgICAgICAgICAgIE16RXhOakk1TkROYUZ3MDBNekF5TWpVeE5qSTVORE5hTUlHV01Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUUKKyAgICAgICAgICAgICAgQ0JNQ1Rsa3hFakFRQmdOVkJBY1RDVTFoYm1oaGRIUmhiakVWTUJNR0ExVUVDaE1NVEdGMllTQlRkWEJ5WlcxbAorICAgICAgICAgICAgICBNUlF3RWdZRFZRUUxFd3RJWldGa0lFOW1abWxqWlRFVU1CSUdBMVVFQXhNTFVsTkJJRlJsYzNRZ1EwRXhJekFoCisgICAgICAgICAgICAgIEJna3Foa2lHOXcwQkNRRVdGSFJsWTJoQWJHRjJZWE4xY0hKbGJXVXViM0puTUlJQklqQU5CZ2txaGtpRzl3MEIKKyAgICAgICAgICAgICAgQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBZ2ozVE95VXRnZzk5b0Vmc204aDlKVFpCeFVrellrWFZVT0h4SXduaworICAgICAgICAgICAgICBGd3A0eTlabnJHamEvaitrcFJ5S3ZZUDVDa05kcTBlNTgvcjdHTFhqNDVpcWQwM1hqc0ZOVGRqeTRPSU9nZjdKCisgICAgICAgICAgICAgIHhNRzd6K2hFQjFMVDJzd1RzMTBHSUxGV1BCeVJsMy9CRXNuZWtMWmRvcU5vSnJ2bnR0Vmt4Z3UzeDgwSmkzL0EKKyAgICAgICAgICAgICAgWkQ4VWIva0JHT1NQeXU2cG4zT2RuTVRjNXE0cjFxVWU5ODVsUXpDWnZDTXc2QW9HZUN5Sm9kTnUyTWJ2ZU5lSAorICAgICAgICAgICAgICArWVBqUmdMQ1FmenZPRlJxKzlxTXRFOFhmVUpaZE5oUFpoZ2RzT0dmOHVKYXVUY0lIYkF5dzdCaHhQeTZSaWtXCisgICAgICAgICAgICAgIFc1eWlXVW1CeWErN3Q0eTFUUUp6aGFtLzB5MHpVM1RBQTdiL3JEclU3eG1OUHdJREFRQUJveVF3SWpBUEJnTlYKKyAgICAgICAgICAgICAgSFJNQkFmOEVCVEFEQVFIL01BOEdBMVVkRHdFQi93UUZBd01IQmdBd0RRWUpLb1pJaHZjTkFRRUVCUUFEZ2dFQgorICAgICAgICAgICAgICBBREVMV1pqRkxQalNqR2VPYWVVd0gvbUVPUCtsL25UdHhlMDdJV0FRTDRrdmI0d3NpVXNNMUVrUHB0Y0JRc3ltCisgICAgICAgICAgICAgIE9ZZ0ZoZjNFbHFtYTg0YmJPeXA4NXkvaVFuanBxV1dKNzNURlhTV1phbVNJaFliNEdrK2RRdXdGSSt6RDNCMnkKKyAgICAgICAgICAgICAgV3dxZ2hhQUhEenh0elJPTFVCam8rOTdZNm5nNlY1emptdGRHT0Z3Tlh3V2hmM1krTWpuRXJ0QklLWWFvOE5KTworICAgICAgICAgICAgICBwNmRpODB3ODIrczZPdCtDTFZ2Vm9iTGh4Uy95OHlXcGxBVFJpUW5JNWlqL1dUTE1MK3RpVTVhZXMwYzlhYmFmCisgICAgICAgICAgICAgIE83aTlqMWlUdVpzRFQzZjk2aWEwUlNMc1hTR2lqNzM3UUtjM1pNOGxTeEJXZmVwV1lPK0crSVJncjFxOUlVRGEKKyAgICAgICAgICAgICAga0tPL3ZCOUF5NjRSdDg4WGJMbm5HbnM9CisgICAgICAgICAgICA8L2RzOlg1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgICA8L2RzOlg1MDlEYXRhPgorICAgICAgICA8L2RzOktleUluZm8+CisgICAgICAgIDxDaXBoZXJEYXRhPgorICAgICAgICAgIDxDaXBoZXJWYWx1ZT4KKyAgICAgICAgICAgIFc2TjBJaFJGMkFkZ2Z6emtaU3AvdTFrSDVLbUg4TDRXOGs0bWROTWJvTHNZZ25CVVYzbHNSdm9GclZUWGx1TVYKKyAgICAgICAgICAgIER0WFkxanU3YUFFVUpQOWVNUlU2NzZrdlJSNW5TVnVBYldDQWVqZ2tITXRHU2hKSFUxcy9KTXpidTNpYXhzdXkKKwkgICAgUG9zVDcvaWFmaW5OSVh1bXZxTE0vV1FsOUtic21jV29BbUpJU2JLMStXSjJrYWhyWE5hdjQrN3ZNSnE5MEJPUAorICAgICAgICAgICAgbDhiWEl6ZUtJc3BzN09Hd0V2ckZhSjVSelZqWlhpOVNEWFhEMXZkNnRKQmNDZmNaMzQ3TWF0MXRaa1IzY1lyQworICAgICAgICAgICAgTWhEZHRlM2dZR1VRTHpVbE1ZdWN2V3oxc2x6VFgzclllYS92aGdBK09MT3BkWnh3TTRpZ3gxZDhqNWpqbW84RgorICAgICAgICAgICAgUjFyeHdkMEc0TkhBMWJaNlRPeS9JQT09CisgICAgICAgICAgPC9DaXBoZXJWYWx1ZT4KKyAgICAgICAgPC9DaXBoZXJEYXRhPgorICAgICAgICA8UmVmZXJlbmNlTGlzdD4KKyAgICAgICAgICA8RGF0YVJlZmVyZW5jZSBVUkk9IiNFRCIvPgorICAgICAgICA8L1JlZmVyZW5jZUxpc3Q+CisgICAgICA8L0VuY3J5cHRlZEtleT4KKyAgICA8L2RzOktleUluZm8+CisgICAgPENpcGhlckRhdGE+CisgICAgICA8Q2lwaGVyVmFsdWU+CisgICAgICAgIFlqSWtMUHFrbFZWTjFmYUVzWDF0NUVYWHhkbFczQjByS29ac1Q1RHRhUytwQ2hkY2NlUVY2MDVjbEo4WUVoT2oKKwlFaE0wb0NHZjg1NWJRVldwN0ozVEpxVUZseGFoUkVFV0NmRXZzSVV6eS93Tk1IVjZaL21URmtRVVduck8zQzNECisJU0M2clRnbGlqa1BwNTkyU2gxQ2I2SFRENjBOYy9NeW4zUUxud2xTaiszMHgzdVRVaUFWRUwreGR1QW5wcENSMQorCXZoUnNCM3l3MzJUalJmWnQxYitVVVJSekN0czVvTHJWQXU5U1NybWdKSSt2VVg5Z3NSZ3Z3a21zaTRBQXEzOGEKKyAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgPC9DaXBoZXJEYXRhPgorICA8L0VuY3J5cHRlZERhdGE+Cis8L1BheW1lbnRJbmZvPgpkaWZmIC0tZ2l0IGEvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtYWVzMTI4LWt3LWFlczEyOC54bWwgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtZWxlbWVudC1hZXMxMjgta3ctYWVzMTI4LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTZmMGZmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtYWVzMTI4LWt3LWFlczEyOC54bWwKQEAgLTAsMCArMSwyOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxQYXltZW50SW5mbyB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnL3BheW1lbnR2MiI+CisgIDxOYW1lPkpvaG4gU21pdGg8L05hbWU+CisgIDxFbmNyeXB0ZWREYXRhIElkPSJFRCIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+CisgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNhZXMxMjgtY2JjIi8+CisgICAgPGRzOktleUluZm8geG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgPEVuY3J5cHRlZEtleSBJZD0iRUsiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPgorICAgICAgICA8RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2t3LWFlczEyOCIvPgorICAgICAgICAgIDxkczpLZXlJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgICAgIDxkczpLZXlOYW1lPm15LWFlczEyOC1rZXk8L2RzOktleU5hbWU+CisgICAgICAgICAgPC9kczpLZXlJbmZvPgorICAgICAgICAgIDxDaXBoZXJEYXRhPgorICAgICAgICAgICAgPENpcGhlclZhbHVlPkdQbDZibmVMMWpLbDAvbEduZjlnZWpsWUhSSTZYeEZ6PC9DaXBoZXJWYWx1ZT4KKyAgICAgICAgICA8L0NpcGhlckRhdGE+CisgICAgICAgICAgPFJlZmVyZW5jZUxpc3Q+CisgICAgICAgICAgICAgPERhdGFSZWZlcmVuY2UgVVJJPSIjRUQiLz4KKyAgICAgICAgICA8L1JlZmVyZW5jZUxpc3Q+CisgICAgICAgIDwvRW5jcnlwdGVkS2V5PgorICAgICAgPC9kczpLZXlJbmZvPgorICAgIDxDaXBoZXJEYXRhPgorICAgICAgPENpcGhlclZhbHVlPgorICAgICAgICBBYkptQjRkc05QNXN2SDNuMjYwS2VIRkZxUm9YYUJvRFlJcXRyaFhIRTB0MVR2SmFHdHZ3akp0MnBnTThZZmZjCisJeEt5T0xXSmxqditGcmFYVVpGblcrVkpsb01UQVhROER5ZVI4ZHMxc2o2WDdoVDYyUkZJS20wRHZnZ2RCQWg5ZAorCXRwZUY2Znd0T2VVVUNtaWRuYTdpbTdTTGg5YTkvQ0tUQmI5UnFEektYUStTYWk2a25KUFpIdFgveUY2WmVkZ1gKKwlHT1VGTFgzRWR6d1ZnSjNqbktjQi9MWmphcHNQclJzKzZsTWRjazI2YVJpeldKQkhZcFk4NmdXV251K09iKy9rCisgICAgICA8L0NpcGhlclZhbHVlPgorICAgIDwvQ2lwaGVyRGF0YT4KKyAgPC9FbmNyeXB0ZWREYXRhPgorPC9QYXltZW50SW5mbz4KZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy1lbGVtZW50LWFlczEyOC1rdy1hZXMyNTYueG1sIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtYWVzMTI4LWt3LWFlczI1Ni54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmIzNzZhMQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy1lbGVtZW50LWFlczEyOC1rdy1hZXMyNTYueG1sCkBAIC0wLDAgKzEsMjkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8UGF5bWVudEluZm8geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy9wYXltZW50djIiPgorICA8TmFtZT5Kb2huIFNtaXRoPC9OYW1lPgorICA8RW5jcnlwdGVkRGF0YSBJZD0iRUQiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI0VsZW1lbnQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPgorICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjYWVzMTI4LWNiYyIvPgorICAgIDxkczpLZXlJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgIDxFbmNyeXB0ZWRLZXkgSWQ9IkVLIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj4KKyAgICAgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNrdy1hZXMyNTYiLz4KKyAgICAgICAgPGRzOktleUluZm8geG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgICAgIDxkczpLZXlOYW1lPm15LWFlczI1Ni1rZXk8L2RzOktleU5hbWU+CisgICAgICAgIDwvZHM6S2V5SW5mbz4KKyAgICAgICAgPENpcGhlckRhdGE+CisgICAgICAgICAgPENpcGhlclZhbHVlPmljK09tNi8zWktjVGhWTjNpdjlsVUVhbmtOa0R2M0V0PC9DaXBoZXJWYWx1ZT4KKyAgICAgICAgPC9DaXBoZXJEYXRhPgorICAgICAgICA8UmVmZXJlbmNlTGlzdD4KKyAgICAgICAgICA8RGF0YVJlZmVyZW5jZSBVUkk9IiNFRCIvPgorICAgICAgICA8L1JlZmVyZW5jZUxpc3Q+CisgICAgICA8L0VuY3J5cHRlZEtleT4KKyAgICA8L2RzOktleUluZm8+CisgICAgPENpcGhlckRhdGE+CisgICAgICA8Q2lwaGVyVmFsdWU+CisgICAgICAgIFQrMWF5OUZNV1RXV25vUFlVaFZITUEyU05WMnc5T2lybHVXT3JNU1p2UlVDOG1RSG1ZZktjdUQ5V3Nocmd0VmQKKwlkbnNpUG9iUlMrUTBESmdmWDhDdGZqSjN3dFEyRFhYOUdGZ1Y4NjYyRzBoWkVqUTRTR2dXaHh0UUV1c2pWRlNsCisJVXc0L3B4bUVDRDVPNks3TjlQd25sWXdNbTl0ZWtzdmZXY0c1eGlyK3c0azI0Y2M5bmpMajVZZDB1WDJvNU5qMQorCXNqak5GemJ3NWNRNEZ4M0tTRzJIR3dubkMvKzUveHlvWDFlSmdkT3hkS1F2Ujh1U01teUljVFBHVnRSQXpIM2wKKyAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgPC9DaXBoZXJEYXRhPgorICA8L0VuY3J5cHRlZERhdGE+Cis8L1BheW1lbnRJbmZvPgpkaWZmIC0tZ2l0IGEvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtYWVzMTkyLWthLWRoLnhtbCBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy1lbGVtZW50LWFlczE5Mi1rYS1kaC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDcyMmNjZAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy1lbGVtZW50LWFlczE5Mi1rYS1kaC54bWwKQEAgLTAsMCArMSw4MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxQYXltZW50SW5mbyB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnL3BheW1lbnR2MiI+CisgIDxOYW1lPkpvaG4gU21pdGg8L05hbWU+CisgIDxFbmNyeXB0ZWREYXRhIElkPSJFRCIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+CisgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNhZXMxOTItY2JjIi8+CisgICAgPGRzOktleUluZm8geG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgPEFncmVlbWVudE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2RoIj4KKyAgICAgIDxLQS1Ob25jZT5ZV0pqWkdVPTwvS0EtTm9uY2U+CisgICAgICA8ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz4KKyAgICAgICAgPE9yaWdpbmF0b3JLZXlJbmZvPgorICAgICAgICAgIDxkczpYNTA5RGF0YT4KKyAgICAgICAgICAgIDxkczpYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICAgICAgTUlJRWpEQ0NBL1dnQXdJQkFnSUJBVEFOQmdrcWhraUc5dzBCQVFRRkFEQ0JsakVMTUFrR0ExVUVCaE1DVlZNeAorICAgICAgICAgICAgICAgIEN6QUpCZ05WQkFnVEFrNVpNUkl3RUFZRFZRUUhFd2xOWVc1b1lYUjBZVzR4RlRBVEJnTlZCQW9UREV4aGRtRWcKKyAgICAgICAgICAgICAgICBVM1Z3Y21WdFpURVVNQklHQTFVRUN4TUxTR1ZoWkNCUFptWnBZMlV4RkRBU0JnTlZCQU1UQzFKVFFTQlVaWE4wCisgICAgICAgICAgICAgICAgSUVOQk1TTXdJUVlKS29aSWh2Y05BUWtCRmhSMFpXTm9RR3hoZG1GemRYQnlaVzFsTG05eVp6QWVGdzB3TWpBeAorICAgICAgICAgICAgICAgIE16QXlNalV3TkRCYUZ3MHhNREF4TURFd05UQXdNREJhTUlHTU1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUUKKyAgICAgICAgICAgICAgICBDQk1DVGxreEVqQVFCZ05WQkFjVENVMWhibWhoZEhSaGJqRU9NQXdHQTFVRUNoTUZVR2hoYjNNeEZEQVNCZ05WCisgICAgICAgICAgICAgICAgQkFzVEMwaGxZV1FnVDJabWFXTmxNUmN3RlFZRFZRUURFdzVFU0NCVVpYTjBJRU5zYVdWdWRERWRNQnNHQ1NxRworICAgICAgICAgICAgICAgIFNJYjNEUUVKQVJZT2RHVmphRUJ3YUdGdmN5NXZjbWN3Z2dKRE1JSUJ1QVlIS29aSXpqNENBVENDQWFzQ2dZRUEKKyAgICAgICAgICAgICAgICB1YXZhdDdpNk5PcG5ST2JkeDdHejM4aDh4a2dtdjIwWFVhajFKamZ2TUFRZlFGTUhlc2hHaFkyUTBtd3ZKMU9mCisgICAgICAgICAgICAgICAgWC9rWjRjTWJTWVV5d2gzV0FZNnpRczhXMnV4ZzhHZWR1Q0xlYk5RR1RhSFZGVm1ySk1RYXdsVjFiSU1RK2tEaQorICAgICAgICAgICAgICAgIElRTlIvRlBxU05IS0QyUTkvdW9HRDVkMmw0S1AzcUg4ZHY1SE9UOGZDd1VDZ1lCeHVucW1VdUtaRlROS0poSDkKKyAgICAgICAgICAgICAgICBHNlVJTmxJL1hyOWpQZXNqNS9JOGZwV2d4WnhzZ2t6a3NxaXNEQ3NsWjA5dVpUQVRyR0ZURjNmazZrTmh4MjVzCisgICAgICAgICAgICAgICAgVUN0WUhISzFIelFtc0xNdTJCV05CUXJrTEMrTWtkM2QzOVVkTmR1UFc0a0NNcGNkb0hBaCt6VHFBSDJRa0tKbQorICAgICAgICAgICAgICAgIHl4Yy94MExldmtTVWs4clg4REZhM3kxNTJRSVZBTCtFbzRnUEwzMzlkazdpbnE4N1BuUjFQV3VIQW0wQStDOUUKKyAgICAgICAgICAgICAgICBHUERTcGhGYVBXTzVMUVROZmxKMGw5SUdqY05GR3JKWDBpbVdyak0ycTZiR1l6MFpLNGNKaGNYMTJZWk9qUjUyCisgICAgICAgICAgICAgICAgVFpoM2N5NnlBSkc0NzBpNjVubHo1LzNFU1dGSHNNTzBDT3JEaS9DYTVSZk1yWUdjYzhocnlkekZsVDF6cU1GYQorICAgICAgICAgICAgICAgIDF5dXFRS1ZzR3dYY01Cd0RGZ0NaL2hxTEF0Qmk2ZHl2Nkt5K09mWGZYZ0pCUGhRQ0FnTlBBNEdFQUFLQmdGV3cKKyAgICAgICAgICAgICAgICBMeVlPNElQeEpzYmFRUXNKNEsxeFRqUFNqVE1tdkc0ZnBLQStTMUJHejhGSTFTUEFDYjIvWVlDcm1qb1dOdmtRCisgICAgICAgICAgICAgICAgVjZOVFErZWppNlRHQTdFVDg1YzRBY1JadHhPaTNnU1A1S3EyQTNFOWRVb3Vpa2hyS1NIRmIrTng0MjBDWG10cAorICAgICAgICAgICAgICAgIGp4QnUrcVVUYjdBTXJSQ3VzOG1hSHdVOVBkS1FiWnhvREZPTEFySkhvMDB3U3pBUEJnTlZIUThCQWY4RUJRTUQKKyAgICAgICAgICAgICAgICBCd2dBTUJrR0ExVWRFUVFTTUJDQkRuUmxZMmhBY0doaGIzTXViM0puTUIwR0ExVWREZ1FXQkJUZmt5L2QrL3dJCisgICAJCTZ6aWNONHVEbDBQU0F5Uk5uVEFOQmdrcWhraUc5dzBCQVFRRkFBT0JnUUErMmNXc0FaOWE0NHR0QlgxWjNlTUkKKyAJCWUwR2dkdVhFckJ0OXhzdjJTeTZmUy82Q3l5Sm0zdHB0aHVUMldNWm11NkUrY2VCTGtGVStUbnhuRWYvTnJTajgKKwkJd3RRdC93VkhhY2FTWk1jd1VEdi91VFV4cnRJWlVKN0E3VnhjQXZibkxFNWZRcUtoRjZRVDVpcnRiRTJSeXZkNworCQlvTWZHRzhQbVUrc2JOOXNOWHRJek9BPT0KKyAgICAgICAgICAgIDwvZHM6WDUwOUNlcnRpZmljYXRlPgorICAgICAgICAgIDwvZHM6WDUwOURhdGE+CisgICAgICAgIDwvT3JpZ2luYXRvcktleUluZm8+CisgICAgICAgIDxSZWNpcGllbnRLZXlJbmZvPgorICAgICAgICAgIDxkczpYNTA5RGF0YT4KKyAgICAgICAgICAgIDxkczpYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICAgICAgTUlJRWpUQ0NBL2FnQXdJQkFnSUJBakFOQmdrcWhraUc5dzBCQVFRRkFEQ0JsakVMTUFrR0ExVUVCaE1DVlZNeAorCQlDekFKQmdOVkJBZ1RBazVaTVJJd0VBWURWUVFIRXdsTllXNW9ZWFIwWVc0eEZUQVRCZ05WQkFvVERFeGhkbUVnCisJCVUzVndjbVZ0WlRFVU1CSUdBMVVFQ3hNTFNHVmhaQ0JQWm1acFkyVXhGREFTQmdOVkJBTVRDMUpUUVNCVVpYTjAKKwkJSUVOQk1TTXdJUVlKS29aSWh2Y05BUWtCRmhSMFpXTm9RR3hoZG1GemRYQnlaVzFsTG05eVp6QWVGdzB3TWpBeAorCQlNekF5TWpVeU5UTmFGdzB4TURBeE1ERXdOVEF3TURCYU1JR01NUXN3Q1FZRFZRUUdFd0pWVXpFTE1Ba0dBMVVFCisJCUNCTUNUbGt4RWpBUUJnTlZCQWNUQ1UxaGJtaGhkSFJoYmpFT01Bd0dBMVVFQ2hNRlVHaGhiM014RkRBU0JnTlYKKwkJQkFzVEMwaGxZV1FnVDJabWFXTmxNUmN3RlFZRFZRUURFdzVFU0NCVVpYTjBJRU5zYVdWdWRERWRNQnNHQ1NxRworCQlTSWIzRFFFSkFSWU9kR1ZqYUVCd2FHRnZjeTV2Y21jd2dnSkVNSUlCdUFZSEtvWkl6ajRDQVRDQ0Fhc0NnWUVBCisJCXVhdmF0N2k2Tk9wblJPYmR4N0d6MzhoOHhrZ212MjBYVWFqMUpqZnZNQVFmUUZNSGVzaEdoWTJRMG13dkoxT2YKKwkJWC9rWjRjTWJTWVV5d2gzV0FZNnpRczhXMnV4ZzhHZWR1Q0xlYk5RR1RhSFZGVm1ySk1RYXdsVjFiSU1RK2tEaQorCQlJUU5SL0ZQcVNOSEtEMlE5L3VvR0Q1ZDJsNEtQM3FIOGR2NUhPVDhmQ3dVQ2dZQnh1bnFtVXVLWkZUTktKaEg5CisJCUc2VUlObEkvWHI5alBlc2o1L0k4ZnBXZ3haeHNna3prc3Fpc0RDc2xaMDl1WlRBVHJHRlRGM2ZrNmtOaHgyNXMKKwkJVUN0WUhISzFIelFtc0xNdTJCV05CUXJrTEMrTWtkM2QzOVVkTmR1UFc0a0NNcGNkb0hBaCt6VHFBSDJRa0tKbQorCQl5eGMveDBMZXZrU1VrOHJYOERGYTN5MTUyUUlWQUwrRW80Z1BMMzM5ZGs3aW5xODdQblIxUFd1SEFtMEErQzlFCisJCUdQRFNwaEZhUFdPNUxRVE5mbEowbDlJR2pjTkZHckpYMGltV3JqTTJxNmJHWXowWks0Y0poY1gxMllaT2pSNTIKKwkJVFpoM2N5NnlBSkc0NzBpNjVubHo1LzNFU1dGSHNNTzBDT3JEaS9DYTVSZk1yWUdjYzhocnlkekZsVDF6cU1GYQorCQkxeXVxUUtWc0d3WGNNQndERmdDWi9ocUxBdEJpNmR5djZLeStPZlhmWGdKQlBoUUNBZ05QQTRHRkFBS0JnUUNNCisJCUt0bk15alQ5RzFMS1Rab043ckh3SU8wOEQ1ajFZWUlzY3NRRGMrcTRueTVXRUZvK3dFbU9xeEdjRTlKclJkZWIKKwkJaXQ2Y1Q4RjdUV1d6ZURKVXlhWEZFaTRFMXBhbkNCQ0wxY3JxUy9IYlk4VkgvenpoVCs1TDIzMkxjaHNvWWExcAorCQlkcXh4TEhXOFJyT2F4NFJMVnJjSU9QY1c0eDNHZ2swQU5ZUWhSNmtObXFOTk1Fc3dEd1lEVlIwUEFRSC9CQVVECisJCUF3Y0lBREFaQmdOVkhSRUVFakFRZ1E1MFpXTm9RSEJvWVc5ekxtOXlaekFkQmdOVkhRNEVGZ1FVSGRkQkptZlYKKwkJNk1EM0ZUYlZtSGNMRk42UUZBY3dEUVlKS29aSWh2Y05BUUVFQlFBRGdZRUFLWmw5UC9abUlyd0hwM0JUZkJIbAorCQllRkJrOUNiaEsxNEZPYk1HV1NrZmpxaXBiNXNuWEJQRTN1UEJydlAxU3Rpc1BSc0sveTFPWmZjamprQTZodDBqCisJCVlXcDlsb2hORFRsYy9OT0tHT1FTQ3BudHFyK3dRaGM2bDE2amV6cVI3c0t2MmVIQkZHczBWN0hDckVlMm1UUDQKKwkJckRhL1lLcm1MNUs2UzlHU0YyN3J4NDA9CisJICAgIDwvZHM6WDUwOUNlcnRpZmljYXRlPgorCSAgPC9kczpYNTA5RGF0YT4KKyAgICAgICAgPC9SZWNpcGllbnRLZXlJbmZvPgorICAgICAgPC9BZ3JlZW1lbnRNZXRob2Q+CisgICAgPC9kczpLZXlJbmZvPgorICAgIDxDaXBoZXJEYXRhPgorICAgICAgPENpcGhlclZhbHVlPgorICAgICAgICBqZzVTZWN3VjZSN2RsdUFNRVVzUHdXbXJUYzIzNlhDRjh4RVZFVjdjeUVKRGZUbWRrNkJOWDR3NUJLZkZEZk9QCisgICAgICAgIHBoNHQ0MjhmOUhJM1dJZzQ4QlZZOEREYVlPUmVvMGEzQktjSW9pRGpvODBWNWVaZEFRZGxXTE9lY0ttRDMzOSsKKyAgICAgICAgZ3F4ZUJJZEprbVF5SXBLcURNMk5BbHFjS00wcCt1dEFuNU04ZlVvc0JCTzdib0o4aS9sbk92RHJrcWlFTEhReQorICAgICAgICBaWlpLZ1dzWW9JWk5LUHExRmQ2QVVWQkFJb2QzcnVNZlpZVmZYTDVHMlMxallhOEpOY3dwMk1VMzJTSXVTSXhMCisgICAgICA8L0NpcGhlclZhbHVlPgorICAgIDwvQ2lwaGVyRGF0YT4KKyAgPC9FbmNyeXB0ZWREYXRhPgorPC9QYXltZW50SW5mbz4KZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy1lbGVtZW50LWFlczE5Mi1rdC1yc2Ffb2FlcF9zaGExLnhtbCBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy1lbGVtZW50LWFlczE5Mi1rdC1yc2Ffb2FlcF9zaGExLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2FkMWViCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtYWVzMTkyLWt0LXJzYV9vYWVwX3NoYTEueG1sCkBAIC0wLDAgKzEsNjMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8UGF5bWVudEluZm8geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy9wYXltZW50djIiPgorICA8TmFtZT5Kb2huIFNtaXRoPC9OYW1lPgorICA8RW5jcnlwdGVkRGF0YSBJZD0iRUQiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI0VsZW1lbnQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPgorICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjYWVzMTkyLWNiYyIvPgorICAgIDxkczpLZXlJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgIDxFbmNyeXB0ZWRLZXkgSWQ9IkVLIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj4KKyAgICAgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNyc2Etb2FlcC1tZ2YxcCI+CisgICAgICAgICAgPGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIvPgorICAgICAgICA8L0VuY3J5cHRpb25NZXRob2Q+CisgICAgICAgIDxkczpLZXlJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgICA8ZHM6S2V5TmFtZT5teS1yc2Eta2V5PC9kczpLZXlOYW1lPgorICAgICAgICAgIDxkczpYNTA5RGF0YT4KKyAgICAgICAgICAgIDxkczpYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICAgIE1JSUR6VENDQXJXZ0F3SUJBZ0lCQVRBTkJna3Foa2lHOXcwQkFRUUZBRENCbGpFTE1Ba0dBMVVFQmhNQ1ZWTXgKKyAgICAgICAgICAgICAgQ3pBSkJnTlZCQWdUQWs1Wk1SSXdFQVlEVlFRSEV3bE5ZVzVvWVhSMFlXNHhGVEFUQmdOVkJBb1RERXhoZG1FZworICAgICAgICAgICAgICBVM1Z3Y21WdFpURVVNQklHQTFVRUN4TUxTR1ZoWkNCUFptWnBZMlV4RkRBU0JnTlZCQU1UQzFKVFFTQlVaWE4wCisgICAgICAgICAgICAgIElFTkJNU013SVFZSktvWklodmNOQVFrQkZoUjBaV05vUUd4aGRtRnpkWEJ5WlcxbExtOXlaekFlRncwd01qQXgKKyAgICAgICAgICAgICAgTXpFeE5qSTVORE5hRncwME16QXlNalV4TmpJNU5ETmFNSUdXTVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHQTFVRQorICAgICAgICAgICAgICBDQk1DVGxreEVqQVFCZ05WQkFjVENVMWhibWhoZEhSaGJqRVZNQk1HQTFVRUNoTU1UR0YyWVNCVGRYQnlaVzFsCisgICAgICAgICAgICAgIE1SUXdFZ1lEVlFRTEV3dElaV0ZrSUU5bVptbGpaVEVVTUJJR0ExVUVBeE1MVWxOQklGUmxjM1FnUTBFeEl6QWgKKyAgICAgICAgICAgICAgQmdrcWhraUc5dzBCQ1FFV0ZIUmxZMmhBYkdGMllYTjFjSEpsYldVdWIzSm5NSUlCSWpBTkJna3Foa2lHOXcwQgorICAgICAgICAgICAgICBBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFnajNUT3lVdGdnOTlvRWZzbThoOUpUWkJ4VWt6WWtYVlVPSHhJd25rCisgICAgICAgICAgICAgIEZ3cDR5OVpuckdqYS9qK2twUnlLdllQNUNrTmRxMGU1OC9yN0dMWGo0NWlxZDAzWGpzRk5UZGp5NE9JT2dmN0oKKyAgICAgICAgICAgICAgeE1HN3oraEVCMUxUMnN3VHMxMEdJTEZXUEJ5UmwzL0JFc25la0xaZG9xTm9KcnZudHRWa3hndTN4ODBKaTMvQQorICAgICAgICAgICAgICBaRDhVYi9rQkdPU1B5dTZwbjNPZG5NVGM1cTRyMXFVZTk4NWxRekNadkNNdzZBb0dlQ3lKb2ROdTJNYnZlTmVICisgICAgICAgICAgICAgICtZUGpSZ0xDUWZ6dk9GUnErOXFNdEU4WGZVSlpkTmhQWmhnZHNPR2Y4dUphdVRjSUhiQXl3N0JoeFB5NlJpa1cKKyAgICAgICAgICAgICAgVzV5aVdVbUJ5YSs3dDR5MVRRSnpoYW0vMHkwelUzVEFBN2IvckRyVTd4bU5Qd0lEQVFBQm95UXdJakFQQmdOVgorICAgICAgICAgICAgICBIUk1CQWY4RUJUQURBUUgvTUE4R0ExVWREd0VCL3dRRkF3TUhCZ0F3RFFZSktvWklodmNOQVFFRUJRQURnZ0VCCisgICAgICAgICAgICAgIEFERUxXWmpGTFBqU2pHZU9hZVV3SC9tRU9QK2wvblR0eGUwN0lXQVFMNGt2YjR3c2lVc00xRWtQcHRjQlFzeW0KKyAgICAgICAgICAgICAgT1lnRmhmM0VscW1hODRiYk95cDg1eS9pUW5qcHFXV0o3M1RGWFNXWmFtU0loWWI0R2srZFF1d0ZJK3pEM0IyeQorICAgICAgICAgICAgICBXd3FnaGFBSER6eHR6Uk9MVUJqbys5N1k2bmc2VjV6am10ZEdPRndOWHdXaGYzWStNam5FcnRCSUtZYW84TkpPCisgICAgICAgICAgICAgIHA2ZGk4MHc4MitzNk90K0NMVnZWb2JMaHhTL3k4eVdwbEFUUmlRbkk1aWovV1RMTUwrdGlVNWFlczBjOWFiYWYKKyAgICAgICAgICAgICAgTzdpOWoxaVR1WnNEVDNmOTZpYTBSU0xzWFNHaWo3MzdRS2MzWk04bFN4QldmZXBXWU8rRytJUmdyMXE5SVVEYQorICAgICAgICAgICAgICBrS08vdkI5QXk2NFJ0ODhYYkxubkducz0KKyAgICAgICAgICAgIDwvZHM6WDUwOUNlcnRpZmljYXRlPgorICAgICAgICAgIDwvZHM6WDUwOURhdGE+CisgICAgICAgIDwvZHM6S2V5SW5mbz4KKyAgICAgICAgPENpcGhlckRhdGE+CisgICAgICAgICAgPENpcGhlclZhbHVlPgorICAgICAgICAgICAgRUxTbUc4b281MnAyQU5qYkNSSkRWMEs2TS8zVysxYiszQTFjMDdvTldkeGVVZXJkVUJhclllNUJRaW5nbmRJdgorICAgICAgICAgICAgeTRxZkQ5aEdpZjhBbVkwSVh1TFdwdG1aWXg4VGxITFNZdzdUVWZMeFlNVkx6VVZ0RGdyUEFxWFN0TmNwSksvbAorICAgICAgICAgICAgMElOTXVyWFUreG52RFhwUUVjQ3RoaDZDOEFXeHZYRFZLVys4VWQ4dkxZa0dHTlZndEVQdGRBeWJ4MldwdGZ6SgorICAgICAgICAgICAgVFNZdmtScjBWRWpESlNnOVpQU0pMQ2VPd1FaOStZdlA5RjlFNTU2RUhLNUE0NzZmQWdlTkwzdWVmc1o0WW80UQorICAgICAgICAgICAgMVVBTk92U0J0WTJybzh4T2o2UHlCSS81UmlXOUFWVVFkKzVVaVBxMS9qV1NvS1RGYVdpYjR4cjVXaEk0ZFFsYworICAgICAgICAgICAgbmtZVTNFWWhtU1Q0cG9rcWV2WnBsdz09CisgICAgICAgICAgPC9DaXBoZXJWYWx1ZT4KKyAgICAgICAgPC9DaXBoZXJEYXRhPgorICAgICAgICA8UmVmZXJlbmNlTGlzdD4KKyAgICAgICAgICA8RGF0YVJlZmVyZW5jZSBVUkk9IiNFRCIvPgorICAgICAgICA8L1JlZmVyZW5jZUxpc3Q+CisgICAgICA8L0VuY3J5cHRlZEtleT4KKyAgICA8L2RzOktleUluZm8+CisgICAgPENpcGhlckRhdGE+CisgICAgICA8Q2lwaGVyVmFsdWU+CisgICAgICAgIFdlRkRjNUVNekk0aTc3eWhHcFkyQWUrNVZ2YlBTZG5ybVh2bFJybnR6NXY2c25SbVZ4dFNBWEpRZ0ppb3VFUjgKKwlCTlZUaU1kQi9ZY3B6T2VXTEFFZkVaRzFQc3dZRnNta1lkOVFDdkdwdjFvWGlzdjlDdjh1UjlCQm16L3lsT21YCisJcEJDZlUzOGkwZlI5MEpPa0dNand0bGtOVHdQd09zRzVFRlJjaDhqeC93azZxYWo2cW9qSk9BMjFJbEZzVEtGQQorCXVnWjN1WmVERlBOQkpNU1ZuTHVkeU1GclFZV1QxNGppL2FGRVRxaFF4d2xIa2dyeDFXRE4yNnRCTi85UTZhVFoKKyAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgPC9DaXBoZXJEYXRhPgorICA8L0VuY3J5cHRlZERhdGE+Cis8L1BheW1lbnRJbmZvPgpkaWZmIC0tZ2l0IGEvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtYWVzMTkyLWt3LWFlczE5Mi54bWwgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtZWxlbWVudC1hZXMxOTIta3ctYWVzMTkyLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2NjNjMwCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtYWVzMTkyLWt3LWFlczE5Mi54bWwKQEAgLTAsMCArMSwyOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxQYXltZW50SW5mbyB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnL3BheW1lbnR2MiI+CisgIDxOYW1lPkpvaG4gU21pdGg8L05hbWU+CisgIDxFbmNyeXB0ZWREYXRhIElkPSJFRCIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+CisgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNhZXMxOTItY2JjIi8+CisgICAgPGRzOktleUluZm8geG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgPEVuY3J5cHRlZEtleSBJZD0iRUsiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPgorICAgICAgICA8RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2t3LWFlczE5MiIvPgorICAgICAgICA8ZHM6S2V5SW5mbyB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgICAgPGRzOktleU5hbWU+bXktYWVzMTkyLWtleTwvZHM6S2V5TmFtZT4KKyAgICAgICAgPC9kczpLZXlJbmZvPgorICAgICAgICA8Q2lwaGVyRGF0YT4KKyAgICAgICAgICA8Q2lwaGVyVmFsdWU+aXVadnZHQldTY2lrSGxkOVR0TklPejBTbTdTcmc1QWN4T0JNQThxSXZRWT08L0NpcGhlclZhbHVlPgorICAgICAgICA8L0NpcGhlckRhdGE+CisgICAgICAgIDxSZWZlcmVuY2VMaXN0PgorICAgICAgICAgIDxEYXRhUmVmZXJlbmNlIFVSST0iI0VEIi8+CisgICAgICAgIDwvUmVmZXJlbmNlTGlzdD4KKyAgICAgIDwvRW5jcnlwdGVkS2V5PgorICAgIDwvZHM6S2V5SW5mbz4KKyAgICAgPENpcGhlckRhdGE+CisgICAgICA8Q2lwaGVyVmFsdWU+CisgICAgICAgIC96SUxEOEVxNXZ2Wks3QStYSmFIem9YVnFQa2s5MXNPdW55aHFqK3lGQTZaSnF1YUZTVXozQS9hUThBa1RyVlMKKwkvckdpTkNYRE9mbXBJYWI2RFJINWRlT0cwUk54RFF2dFNpQW1NK0JlYitBYXM1V0o5VU5LazFmZjhzQmRnem5sCisJOXU4QXBtRUxGUGo1dTJ1Y09kQ09HUytSZTcwOGFTSTZTR21xVUVKdXNvWExXSlNTRDBnRTF4VzFobXVrclRhUgorCXA4a2tjaGFOTlRNK3g0Z0xicTNzU3NmbmNuQ285RS9NcGVRcVFmQlBMN3I5MlV3dlVNWS9ERVZ6MEJiS0xvbUcKKyAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgPC9DaXBoZXJEYXRhPgorICA8L0VuY3J5cHRlZERhdGE+Cis8L1BheW1lbnRJbmZvPgpkaWZmIC0tZ2l0IGEvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtYWVzMjU2LWthLWRoLnhtbCBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy1lbGVtZW50LWFlczI1Ni1rYS1kaC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjIxNjY1ZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy1lbGVtZW50LWFlczI1Ni1rYS1kaC54bWwKQEAgLTAsMCArMSw4MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxQYXltZW50SW5mbyB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnL3BheW1lbnR2MiI+CisgIDxOYW1lPkpvaG4gU21pdGg8L05hbWU+CisgIDxFbmNyeXB0ZWREYXRhIElkPSJFRCIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+CisgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNhZXMyNTYtY2JjIi8+CisgICAgPGRzOktleUluZm8geG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgPEFncmVlbWVudE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2RoIj4KKyAgICAgICAgPEtBLU5vbmNlPllXSmpaR1U9PC9LQS1Ob25jZT4KKyAgICAgICAgPGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+CisgICAgICAgICAgPE9yaWdpbmF0b3JLZXlJbmZvPgorICAgICAgICAgIDxkczpYNTA5RGF0YT4KKyAgICAgICAgICAgIDxkczpYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICAgICAgTUlJRWpEQ0NBL1dnQXdJQkFnSUJBVEFOQmdrcWhraUc5dzBCQVFRRkFEQ0JsakVMTUFrR0ExVUVCaE1DVlZNeAorICAgICAgICAgICAgICAgIEN6QUpCZ05WQkFnVEFrNVpNUkl3RUFZRFZRUUhFd2xOWVc1b1lYUjBZVzR4RlRBVEJnTlZCQW9UREV4aGRtRWcKKyAgICAgICAgICAgICAgICBVM1Z3Y21WdFpURVVNQklHQTFVRUN4TUxTR1ZoWkNCUFptWnBZMlV4RkRBU0JnTlZCQU1UQzFKVFFTQlVaWE4wCisgICAgICAgICAgICAgICAgSUVOQk1TTXdJUVlKS29aSWh2Y05BUWtCRmhSMFpXTm9RR3hoZG1GemRYQnlaVzFsTG05eVp6QWVGdzB3TWpBeAorICAgICAgICAgICAgICAgIE16QXlNalV3TkRCYUZ3MHhNREF4TURFd05UQXdNREJhTUlHTU1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUUKKyAgICAgICAgICAgICAgICBDQk1DVGxreEVqQVFCZ05WQkFjVENVMWhibWhoZEhSaGJqRU9NQXdHQTFVRUNoTUZVR2hoYjNNeEZEQVNCZ05WCisgICAgICAgICAgICAgICAgQkFzVEMwaGxZV1FnVDJabWFXTmxNUmN3RlFZRFZRUURFdzVFU0NCVVpYTjBJRU5zYVdWdWRERWRNQnNHQ1NxRworICAgICAgICAgICAgICAgIFNJYjNEUUVKQVJZT2RHVmphRUJ3YUdGdmN5NXZjbWN3Z2dKRE1JSUJ1QVlIS29aSXpqNENBVENDQWFzQ2dZRUEKKyAgICAgICAgICAgICAgICB1YXZhdDdpNk5PcG5ST2JkeDdHejM4aDh4a2dtdjIwWFVhajFKamZ2TUFRZlFGTUhlc2hHaFkyUTBtd3ZKMU9mCisgICAgICAgICAgICAgICAgWC9rWjRjTWJTWVV5d2gzV0FZNnpRczhXMnV4ZzhHZWR1Q0xlYk5RR1RhSFZGVm1ySk1RYXdsVjFiSU1RK2tEaQorICAgICAgICAgICAgICAgIElRTlIvRlBxU05IS0QyUTkvdW9HRDVkMmw0S1AzcUg4ZHY1SE9UOGZDd1VDZ1lCeHVucW1VdUtaRlROS0poSDkKKyAgICAgICAgICAgICAgICBHNlVJTmxJL1hyOWpQZXNqNS9JOGZwV2d4WnhzZ2t6a3NxaXNEQ3NsWjA5dVpUQVRyR0ZURjNmazZrTmh4MjVzCisgICAgICAgICAgICAgICAgVUN0WUhISzFIelFtc0xNdTJCV05CUXJrTEMrTWtkM2QzOVVkTmR1UFc0a0NNcGNkb0hBaCt6VHFBSDJRa0tKbQorICAgICAgICAgICAgICAgIHl4Yy94MExldmtTVWs4clg4REZhM3kxNTJRSVZBTCtFbzRnUEwzMzlkazdpbnE4N1BuUjFQV3VIQW0wQStDOUUKKyAgICAgICAgICAgICAgICBHUERTcGhGYVBXTzVMUVROZmxKMGw5SUdqY05GR3JKWDBpbVdyak0ycTZiR1l6MFpLNGNKaGNYMTJZWk9qUjUyCisgICAgICAgICAgICAgICAgVFpoM2N5NnlBSkc0NzBpNjVubHo1LzNFU1dGSHNNTzBDT3JEaS9DYTVSZk1yWUdjYzhocnlkekZsVDF6cU1GYQorICAgICAgICAgICAgICAgIDF5dXFRS1ZzR3dYY01Cd0RGZ0NaL2hxTEF0Qmk2ZHl2Nkt5K09mWGZYZ0pCUGhRQ0FnTlBBNEdFQUFLQmdGV3cKKyAgICAgICAgICAgICAgICBMeVlPNElQeEpzYmFRUXNKNEsxeFRqUFNqVE1tdkc0ZnBLQStTMUJHejhGSTFTUEFDYjIvWVlDcm1qb1dOdmtRCisgICAgICAgICAgICAgICAgVjZOVFErZWppNlRHQTdFVDg1YzRBY1JadHhPaTNnU1A1S3EyQTNFOWRVb3Vpa2hyS1NIRmIrTng0MjBDWG10cAorICAgICAgICAgICAgICAgIGp4QnUrcVVUYjdBTXJSQ3VzOG1hSHdVOVBkS1FiWnhvREZPTEFySkhvMDB3U3pBUEJnTlZIUThCQWY4RUJRTUQKKyAgICAgICAgICAgICAgICBCd2dBTUJrR0ExVWRFUVFTTUJDQkRuUmxZMmhBY0doaGIzTXViM0puTUIwR0ExVWREZ1FXQkJUZmt5L2QrL3dJCisgICAJCTZ6aWNONHVEbDBQU0F5Uk5uVEFOQmdrcWhraUc5dzBCQVFRRkFBT0JnUUErMmNXc0FaOWE0NHR0QlgxWjNlTUkKKyAJCWUwR2dkdVhFckJ0OXhzdjJTeTZmUy82Q3l5Sm0zdHB0aHVUMldNWm11NkUrY2VCTGtGVStUbnhuRWYvTnJTajgKKwkJd3RRdC93VkhhY2FTWk1jd1VEdi91VFV4cnRJWlVKN0E3VnhjQXZibkxFNWZRcUtoRjZRVDVpcnRiRTJSeXZkNworCQlvTWZHRzhQbVUrc2JOOXNOWHRJek9BPT0KKyAgICAgICAgICAgIDwvZHM6WDUwOUNlcnRpZmljYXRlPgorICAgICAgICAgIDwvZHM6WDUwOURhdGE+CisgICAgICAgIDwvT3JpZ2luYXRvcktleUluZm8+CisgICAgICAgIDxSZWNpcGllbnRLZXlJbmZvPgorICAgICAgICAgIDxkczpYNTA5RGF0YT4KKyAgICAgICAgICAgIDxkczpYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICAgICAgTUlJRWpUQ0NBL2FnQXdJQkFnSUJBakFOQmdrcWhraUc5dzBCQVFRRkFEQ0JsakVMTUFrR0ExVUVCaE1DVlZNeAorCQlDekFKQmdOVkJBZ1RBazVaTVJJd0VBWURWUVFIRXdsTllXNW9ZWFIwWVc0eEZUQVRCZ05WQkFvVERFeGhkbUVnCisJCVUzVndjbVZ0WlRFVU1CSUdBMVVFQ3hNTFNHVmhaQ0JQWm1acFkyVXhGREFTQmdOVkJBTVRDMUpUUVNCVVpYTjAKKwkJSUVOQk1TTXdJUVlKS29aSWh2Y05BUWtCRmhSMFpXTm9RR3hoZG1GemRYQnlaVzFsTG05eVp6QWVGdzB3TWpBeAorCQlNekF5TWpVeU5UTmFGdzB4TURBeE1ERXdOVEF3TURCYU1JR01NUXN3Q1FZRFZRUUdFd0pWVXpFTE1Ba0dBMVVFCisJCUNCTUNUbGt4RWpBUUJnTlZCQWNUQ1UxaGJtaGhkSFJoYmpFT01Bd0dBMVVFQ2hNRlVHaGhiM014RkRBU0JnTlYKKwkJQkFzVEMwaGxZV1FnVDJabWFXTmxNUmN3RlFZRFZRUURFdzVFU0NCVVpYTjBJRU5zYVdWdWRERWRNQnNHQ1NxRworCQlTSWIzRFFFSkFSWU9kR1ZqYUVCd2FHRnZjeTV2Y21jd2dnSkVNSUlCdUFZSEtvWkl6ajRDQVRDQ0Fhc0NnWUVBCisJCXVhdmF0N2k2Tk9wblJPYmR4N0d6MzhoOHhrZ212MjBYVWFqMUpqZnZNQVFmUUZNSGVzaEdoWTJRMG13dkoxT2YKKwkJWC9rWjRjTWJTWVV5d2gzV0FZNnpRczhXMnV4ZzhHZWR1Q0xlYk5RR1RhSFZGVm1ySk1RYXdsVjFiSU1RK2tEaQorCQlJUU5SL0ZQcVNOSEtEMlE5L3VvR0Q1ZDJsNEtQM3FIOGR2NUhPVDhmQ3dVQ2dZQnh1bnFtVXVLWkZUTktKaEg5CisJCUc2VUlObEkvWHI5alBlc2o1L0k4ZnBXZ3haeHNna3prc3Fpc0RDc2xaMDl1WlRBVHJHRlRGM2ZrNmtOaHgyNXMKKwkJVUN0WUhISzFIelFtc0xNdTJCV05CUXJrTEMrTWtkM2QzOVVkTmR1UFc0a0NNcGNkb0hBaCt6VHFBSDJRa0tKbQorCQl5eGMveDBMZXZrU1VrOHJYOERGYTN5MTUyUUlWQUwrRW80Z1BMMzM5ZGs3aW5xODdQblIxUFd1SEFtMEErQzlFCisJCUdQRFNwaEZhUFdPNUxRVE5mbEowbDlJR2pjTkZHckpYMGltV3JqTTJxNmJHWXowWks0Y0poY1gxMllaT2pSNTIKKwkJVFpoM2N5NnlBSkc0NzBpNjVubHo1LzNFU1dGSHNNTzBDT3JEaS9DYTVSZk1yWUdjYzhocnlkekZsVDF6cU1GYQorCQkxeXVxUUtWc0d3WGNNQndERmdDWi9ocUxBdEJpNmR5djZLeStPZlhmWGdKQlBoUUNBZ05QQTRHRkFBS0JnUUNNCisJCUt0bk15alQ5RzFMS1Rab043ckh3SU8wOEQ1ajFZWUlzY3NRRGMrcTRueTVXRUZvK3dFbU9xeEdjRTlKclJkZWIKKwkJaXQ2Y1Q4RjdUV1d6ZURKVXlhWEZFaTRFMXBhbkNCQ0wxY3JxUy9IYlk4VkgvenpoVCs1TDIzMkxjaHNvWWExcAorCQlkcXh4TEhXOFJyT2F4NFJMVnJjSU9QY1c0eDNHZ2swQU5ZUWhSNmtObXFOTk1Fc3dEd1lEVlIwUEFRSC9CQVVECisJCUF3Y0lBREFaQmdOVkhSRUVFakFRZ1E1MFpXTm9RSEJvWVc5ekxtOXlaekFkQmdOVkhRNEVGZ1FVSGRkQkptZlYKKwkJNk1EM0ZUYlZtSGNMRk42UUZBY3dEUVlKS29aSWh2Y05BUUVFQlFBRGdZRUFLWmw5UC9abUlyd0hwM0JUZkJIbAorCQllRkJrOUNiaEsxNEZPYk1HV1NrZmpxaXBiNXNuWEJQRTN1UEJydlAxU3Rpc1BSc0sveTFPWmZjamprQTZodDBqCisJCVlXcDlsb2hORFRsYy9OT0tHT1FTQ3BudHFyK3dRaGM2bDE2amV6cVI3c0t2MmVIQkZHczBWN0hDckVlMm1UUDQKKwkJckRhL1lLcm1MNUs2UzlHU0YyN3J4NDA9CisJICAgIDwvZHM6WDUwOUNlcnRpZmljYXRlPgorCSAgPC9kczpYNTA5RGF0YT4KKyAgICAgICAgPC9SZWNpcGllbnRLZXlJbmZvPgorICAgICAgPC9BZ3JlZW1lbnRNZXRob2Q+CisgICAgIDwvZHM6S2V5SW5mbz4KKyAgICAgPENpcGhlckRhdGE+CisgICAgICAgPENpcGhlclZhbHVlPgorCSBhWFhEL1l6K0VORkYvdW9wN3o5UndmZVZmZEZ0ZVp3Y3hNSUxhaEsvTktGNThMTXNVS2NyMEM5ams1SWtNWnFKCisgICAgICAgICBtK2JzekNzNU82MXpMSS9pSmNLRlVVMlZyb2tlVHVZVVAyQlpNb3hMN3EwenFVczdiSXdtNjFJRW1VMGdodEFUCisgICAgICAgICA1alNHQ2JaTFBmejNTUmUzZGUwMjMwOThVYlRnK3hDL3pMc2xMeEJ2RXR1Wmgvck5Jb05sQ0ExV3dVTlY3b1JHCisgICAgICAgICB0Rm9xeHpERGgvaHlCSnpTTUF3L1MvZWZOT1JuNEJiZnF1NFdqTzViTjh3eENpMUFURnRBbWhTVmgzYzZ0MS9VCisgICAgICAgPC9DaXBoZXJWYWx1ZT4KKyAgICAgPC9DaXBoZXJEYXRhPgorICA8L0VuY3J5cHRlZERhdGE+Cis8L1BheW1lbnRJbmZvPgpkaWZmIC0tZ2l0IGEvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtYWVzMjU2LWt3LWFlczI1Ni54bWwgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtZWxlbWVudC1hZXMyNTYta3ctYWVzMjU2LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzMwZGI4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLWVsZW1lbnQtYWVzMjU2LWt3LWFlczI1Ni54bWwKQEAgLTAsMCArMSwyOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxQYXltZW50SW5mbyB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnL3BheW1lbnR2MiI+CisgIDxOYW1lPkpvaG4gU21pdGg8L05hbWU+CisgIDxFbmNyeXB0ZWREYXRhIElkPSJFRCIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+CisgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNhZXMyNTYtY2JjIi8+CisgICAgPGRzOktleUluZm8geG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgPEVuY3J5cHRlZEtleSBJZD0iRUsiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPgorICAgICAgICA8RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2t3LWFlczI1NiIvPgorICAgICAgICA8ZHM6S2V5SW5mbyB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgICAgPGRzOktleU5hbWU+bXktYWVzMjU2LWtleTwvZHM6S2V5TmFtZT4KKyAgICAgICAgPC9kczpLZXlJbmZvPgorICAgICAgICA8Q2lwaGVyRGF0YT4KKyAgICAgICAgICA8Q2lwaGVyVmFsdWU+SU13ZHN5Zzg5SVo0VHhmMVNZWVpOS1VPS3VZZERvSWkvekVLWENqajRqOVBNNkJka1psaWdBPT08L0NpcGhlclZhbHVlPgorICAgICAgICA8L0NpcGhlckRhdGE+CisgICAgICAgIDxSZWZlcmVuY2VMaXN0PgorICAgICAgICAgIDxEYXRhUmVmZXJlbmNlIFVSST0iI0VEIi8+CisgICAgICAgIDwvUmVmZXJlbmNlTGlzdD4KKyAgICAgIDwvRW5jcnlwdGVkS2V5PgorICAgIDwvZHM6S2V5SW5mbz4KKyAgICA8Q2lwaGVyRGF0YT4KKyAgICAgIDxDaXBoZXJWYWx1ZT4KKyAgICAgICAgc0tjanNudzBzcG1yK2lGUGYyRldJTEtRejMyKzhEdlNHbTZXVHRtTWQ5c3lxWS8rQkl1YmpIM1BTN1JPdUdZNgorCXhhb3RTdFhmT1htNWZFNFIzSGFxdy8wNGdmVjRqSlUzdklaWkhZajlibERJbjYwMll0cUkreHRpMnpaT2hHWjQKKwk5Z3NzZzdtOFpPSjI4eWZiUWZOdzk3UmR3UWlTbklVL0JoODd4UUpSREswL00zZk9IeWxNVVRIN3hNTWJRdTVtCisJcmhZajQ5a05wblZLN1h5UDdqQ2VrMGxUMmVpN0tZZEtheEQvSm0veFdQeGF4eVMyQzhxOWJrdTVITXNFS0pPbgorICAgICAgPC9DaXBoZXJWYWx1ZT4KKyAgICA8L0NpcGhlckRhdGE+CisgIDwvRW5jcnlwdGVkRGF0YT4KKzwvUGF5bWVudEluZm8+CmRpZmYgLS1naXQgYS9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtdGV4dC0zZGVzLWt3LWFlczI1Ni54bWwgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtdGV4dC0zZGVzLWt3LWFlczI1Ni54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk3MmYxZAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy10ZXh0LTNkZXMta3ctYWVzMjU2LnhtbApAQCAtMCwwICsxLDMyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFBheW1lbnRJbmZvIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvcGF5bWVudHYyIj4KKyAgPE5hbWU+Sm9obiBTbWl0aDwvTmFtZT4KKyAgPENyZWRpdENhcmQgQ3VycmVuY3k9IlVTRCIgTGltaXQ9IjUsMDAwIj4KKyAgICA8TnVtYmVyPjxFbmNyeXB0ZWREYXRhIElkPSJFRCIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjQ29udGVudCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+CisgICAgICAgICAgICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjdHJpcGxlZGVzLWNiYyIvPgorICAgICAgICAgICAgICA8ZHM6S2V5SW5mbyB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgICAgICAgICAgPEVuY3J5cHRlZEtleSBJZD0iRUsiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPgorICAgICAgICAgICAgICAgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNrdy1hZXMyNTYiLz4KKyAgICAgICAgICAgICAgICAgIDxkczpLZXlJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgICAgICAgICAgICAgPGRzOktleU5hbWU+bXktYWVzMjU2LWtleTwvZHM6S2V5TmFtZT4KKyAgICAgICAgICAgICAgICAgIDwvZHM6S2V5SW5mbz4KKyAgICAgICAgICAgICAgICAgIDxDaXBoZXJEYXRhPgorICAgICAgICAgICAgICAgICAgICA8Q2lwaGVyVmFsdWU+CisgICAgICAgICAgICAgICAgICAgICAgak92UWU0U3hEcUVNdkFIY21iM1orL1VlZGoyM3B2TDZCUlFzbDJzakpsUT0KKyAgICAgICAgICAgICAgICAgICAgPC9DaXBoZXJWYWx1ZT4KKyAgICAgICAgICAgICAgICAgIDwvQ2lwaGVyRGF0YT4KKyAgICAgICAgICAgICAgICAgIDxSZWZlcmVuY2VMaXN0PgorICAgICAgICAgICAgICAgICAgICA8RGF0YVJlZmVyZW5jZSBVUkk9IiNFRCIvPgorICAgICAgICAgICAgICAgICAgPC9SZWZlcmVuY2VMaXN0PgorICAgICAgICAgICAgICAgIDwvRW5jcnlwdGVkS2V5PgorICAgICAgICAgICAgICA8L2RzOktleUluZm8+CisgICAgICAgICAgICAgIDxDaXBoZXJEYXRhPgorICAgICAgICAgICAgICAgICA8Q2lwaGVyVmFsdWU+CisgICAgICAgICAgICAgICAgICAgIHRZM1Y0aDhrb3BEVFpYYjgwQm9xRVdINy9uV3J5SFpoVTUwNFMxWlJQTHc9CisgICAgICAgICAgICAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgICAgICAgICAgIDwvQ2lwaGVyRGF0YT4KKyAgICAgICAgICAgIDwvRW5jcnlwdGVkRGF0YT48L051bWJlcj4KKyAgICA8SXNzdWVyPkJhbmsgb2YgdGhlIEludGVybmV0PC9Jc3N1ZXI+CisgICAgPEV4cGlyYXRpb24gVGltZT0iMDQvMDIiLz4KKyAgPC9DcmVkaXRDYXJkPgorPC9QYXltZW50SW5mbz4KZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy10ZXh0LWFlczEyOC1rdy1hZXMxOTIueG1sIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLXRleHQtYWVzMTI4LWt3LWFlczE5Mi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM4MGFiYgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy10ZXh0LWFlczEyOC1rdy1hZXMxOTIueG1sCkBAIC0wLDAgKzEsMjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8UGF5bWVudEluZm8geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy9wYXltZW50djIiPgorICA8TmFtZT5Kb2huIFNtaXRoPC9OYW1lPgorICA8Q3JlZGl0Q2FyZCBDdXJyZW5jeT0iVVNEIiBMaW1pdD0iNSwwMDAiPgorICAgIDxOdW1iZXI+PEVuY3J5cHRlZERhdGEgSWQ9IkVEIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNDb250ZW50IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj4KKyAgICAgICAgICAgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNhZXMxMjgtY2JjIi8+CisgICAgICAgICAgICAgIDxkczpLZXlJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgICAgICAgICA8RW5jcnlwdGVkS2V5IElkPSJFSyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+CisgICAgICAgICAgICAgICAgICA8RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2t3LWFlczE5MiIvPgorICAgICAgICAgICAgICAgICAgPGRzOktleUluZm8geG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgICAgICAgICAgICAgICA8ZHM6S2V5TmFtZT5teS1hZXMxOTIta2V5PC9kczpLZXlOYW1lPgorICAgICAgICAgICAgICAgICAgPC9kczpLZXlJbmZvPgorICAgICAgICAgICAgICAgICAgPENpcGhlckRhdGE+CisgICAgICAgICAgICAgICAgICAgIDxDaXBoZXJWYWx1ZT5QZUR3am5Dc2c2eFd6czNTbXpVdGMybnlVejI4bkd1NzwvQ2lwaGVyVmFsdWU+CisgICAgICAgICAgICAgICAgICA8L0NpcGhlckRhdGE+CisgICAgICAgICAgICAgICAgICA8UmVmZXJlbmNlTGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPERhdGFSZWZlcmVuY2UgVVJJPSIjRUQiLz4KKyAgICAgICAgICAgICAgICAgIDwvUmVmZXJlbmNlTGlzdD4KKyAgICAgICAgICAgICAgICA8L0VuY3J5cHRlZEtleT4KKyAgICAgICAgICAgICAgPC9kczpLZXlJbmZvPgorICAgICAgICAgICAgICA8Q2lwaGVyRGF0YT4KKyAgICAgICAgICAgICAgICA8Q2lwaGVyVmFsdWU+NmhmTWdJMzlKRzVhSUlkNFp4WmtYTEdTR1ZjQzdXdTR5T1Nka0M0SDNOSjUwcE1kY1pJMmMzOFlvRkhwRlpGUzwvQ2lwaGVyVmFsdWU+CisgICAgICAgICAgICAgIDwvQ2lwaGVyRGF0YT4KKyAgICAgICAgICAgIDwvRW5jcnlwdGVkRGF0YT48L051bWJlcj4KKyAgICA8SXNzdWVyPkJhbmsgb2YgdGhlIEludGVybmV0PC9Jc3N1ZXI+CisgICAgPEV4cGlyYXRpb24gVGltZT0iMDQvMDIiLz4KKyAgPC9DcmVkaXRDYXJkPgorPC9QYXltZW50SW5mbz4KZGlmZiAtLWdpdCBhL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy10ZXh0LWFlczE5Mi1rdC1yc2ExXzUueG1sIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvZW5jLXRleHQtYWVzMTkyLWt0LXJzYTFfNS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZmNTg0NAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy10ZXh0LWFlczE5Mi1rdC1yc2ExXzUueG1sCkBAIC0wLDAgKzEsNjIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8UGF5bWVudEluZm8geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy9wYXltZW50djIiPgorICA8TmFtZT5Kb2huIFNtaXRoPC9OYW1lPgorICA8Q3JlZGl0Q2FyZCBDdXJyZW5jeT0iVVNEIiBMaW1pdD0iNSwwMDAiPgorICAgIDxOdW1iZXI+PEVuY3J5cHRlZERhdGEgSWQ9IkVEIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNDb250ZW50IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj4KKyAgICAgICAgICAgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNhZXMxOTItY2JjIi8+CisgICAgICAgICAgICAgIDxkczpLZXlJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgICAgICAgICA8RW5jcnlwdGVkS2V5IElkPSJFSyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+CisgICAgICAgICAgICAgICAgICA8RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3JzYS0xXzUiLz4KKyAgICAgICAgICAgICAgICAgICAgPGRzOktleUluZm8geG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgICAgICAgICAgICAgICAgPGRzOktleU5hbWU+bXktcnNhLWtleTwvZHM6S2V5TmFtZT4KKyAgICAgICAgICAJICAgICA8ZHM6WDUwOURhdGE+CisgICAgICAgICAgICAJICAgICAgIDxkczpYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgTUlJRHpUQ0NBcldnQXdJQkFnSUJBVEFOQmdrcWhraUc5dzBCQVFRRkFEQ0JsakVMTUFrR0ExVUVCaE1DVlZNeAorICAgICAgICAgICAgICAJICAgICAgICAgQ3pBSkJnTlZCQWdUQWs1Wk1SSXdFQVlEVlFRSEV3bE5ZVzVvWVhSMFlXNHhGVEFUQmdOVkJBb1RERXhoZG1FZworICAgICAgICAgICAgICAgICAgICAgICAgIFUzVndjbVZ0WlRFVU1CSUdBMVVFQ3hNTFNHVmhaQ0JQWm1acFkyVXhGREFTQmdOVkJBTVRDMUpUUVNCVVpYTjAKKyAgICAgICAgICAgICAgICAgICAgICAgICBJRU5CTVNNd0lRWUpLb1pJaHZjTkFRa0JGaFIwWldOb1FHeGhkbUZ6ZFhCeVpXMWxMbTl5WnpBZUZ3MHdNakF4CisgICAgICAgICAgICAgICAgICAgICAgICAgTXpFeE5qSTVORE5hRncwME16QXlNalV4TmpJNU5ETmFNSUdXTVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHQTFVRQorICAgICAgICAgICAgICAgICAgICAgICAgIENCTUNUbGt4RWpBUUJnTlZCQWNUQ1UxaGJtaGhkSFJoYmpFVk1CTUdBMVVFQ2hNTVRHRjJZU0JUZFhCeVpXMWwKKyAgICAgICAgICAgICAgICAgICAgICAgICBNUlF3RWdZRFZRUUxFd3RJWldGa0lFOW1abWxqWlRFVU1CSUdBMVVFQXhNTFVsTkJJRlJsYzNRZ1EwRXhJekFoCisgICAgICAgICAgICAgICAgICAgICAgICAgQmdrcWhraUc5dzBCQ1FFV0ZIUmxZMmhBYkdGMllYTjFjSEpsYldVdWIzSm5NSUlCSWpBTkJna3Foa2lHOXcwQgorICAgICAgICAgICAgICAgICAgICAgICAgIEFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQWdqM1RPeVV0Z2c5OW9FZnNtOGg5SlRaQnhVa3pZa1hWVU9IeEl3bmsKKyAgICAgICAgICAgICAgICAgICAgICAgICBGd3A0eTlabnJHamEvaitrcFJ5S3ZZUDVDa05kcTBlNTgvcjdHTFhqNDVpcWQwM1hqc0ZOVGRqeTRPSU9nZjdKCisgICAgICAgICAgICAgICAgICAgICAgICAgeE1HN3oraEVCMUxUMnN3VHMxMEdJTEZXUEJ5UmwzL0JFc25la0xaZG9xTm9KcnZudHRWa3hndTN4ODBKaTMvQQorICAgICAgICAgICAgICAgICAgICAgICAgIFpEOFViL2tCR09TUHl1NnBuM09kbk1UYzVxNHIxcVVlOTg1bFF6Q1p2Q013NkFvR2VDeUpvZE51Mk1idmVOZUgKKyAgICAgICAgICAgICAgICAgICAgICAgICArWVBqUmdMQ1FmenZPRlJxKzlxTXRFOFhmVUpaZE5oUFpoZ2RzT0dmOHVKYXVUY0lIYkF5dzdCaHhQeTZSaWtXCisgICAgICAgICAgICAgICAgICAgICAgICAgVzV5aVdVbUJ5YSs3dDR5MVRRSnpoYW0vMHkwelUzVEFBN2IvckRyVTd4bU5Qd0lEQVFBQm95UXdJakFQQmdOVgorICAgICAgICAgICAgICAgICAgICAgICAgIEhSTUJBZjhFQlRBREFRSC9NQThHQTFVZER3RUIvd1FGQXdNSEJnQXdEUVlKS29aSWh2Y05BUUVFQlFBRGdnRUIKKyAgICAgICAgICAgICAgICAgICAgICAgICBBREVMV1pqRkxQalNqR2VPYWVVd0gvbUVPUCtsL25UdHhlMDdJV0FRTDRrdmI0d3NpVXNNMUVrUHB0Y0JRc3ltCisgICAgICAgICAgICAgICAgICAgICAgICAgT1lnRmhmM0VscW1hODRiYk95cDg1eS9pUW5qcHFXV0o3M1RGWFNXWmFtU0loWWI0R2srZFF1d0ZJK3pEM0IyeQorICAgICAgICAgICAgICAgICAgICAgICAgIFd3cWdoYUFIRHp4dHpST0xVQmpvKzk3WTZuZzZWNXpqbXRkR09Gd05Yd1doZjNZK01qbkVydEJJS1lhbzhOSk8KKyAgICAgICAgICAgICAgICAgICAgICAgICBwNmRpODB3ODIrczZPdCtDTFZ2Vm9iTGh4Uy95OHlXcGxBVFJpUW5JNWlqL1dUTE1MK3RpVTVhZXMwYzlhYmFmCisgICAgICAgICAgICAgICAgICAgICAgICAgTzdpOWoxaVR1WnNEVDNmOTZpYTBSU0xzWFNHaWo3MzdRS2MzWk04bFN4QldmZXBXWU8rRytJUmdyMXE5SVVEYQorICAgICAgICAgICAgICAgICAgICAgICAgIGtLTy92QjlBeTY0UnQ4OFhiTG5uR25zPQorICAgICAgICAgICAgICAgICAgICAgICA8L2RzOlg1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgICAgICAgICAgICAgIDwvZHM6WDUwOURhdGE+CisgICAgICAgICAgICAgICAgICAgPC9kczpLZXlJbmZvPgorICAgICAgICAgICAgICAgICAgIDxDaXBoZXJEYXRhPgorICAgICAgICAgICAgICAgICAgICAgPENpcGhlclZhbHVlPgorICAgICAgICAgICAgICAgICAgICAgICAgZmlEdGVhang3SUpUb3JMT1FvTWlYeWJsT2gzek5peDIzcUF5MGhjS0tQMS83T2VMRFQxaEVuclhrS1Z2RzgzaAorICAgICAgICAgICAgICAgICAgICAgICAgTm8zV0Y4OVZQdVpHdUdlRUlKbDR4Y01rbEhJdGNJMzcwTm1HakNnS0k1R1FTLzZ5eE1yNG1FYmlVTDJYOFljeQorICAgICAgICAgICAgICAgICAgICAgICAgd1ZhMkdVVjlxRmxrdjZDOE9uRnBDVXFCZ0pPamJVQXU5cFEzT1dhMzVOdjh0S3F5YXBoUFVhUXRQYzhaTWVoUworICAgICAgICAgICAgICAgICAgICAgICAgY0xIdGtZS2VCeVdxejVEanAxMXJrbERwNHYxUVNlRFdFbjl6Q0trYUZpRDBEWlJ0cXBuVHp3amoxdFpzRE5wOAorICAgICAgICAgICAgICAgICAgICAgICAgbWJwczJtQWxxblUwTCtFc1IrOEtUUmg1dnpteHVlTStsc0xrR0gyUnVzeTJxaS9HcW1GL05pd3lUQmRva1dvTQorICAgICAgICAgICAgICAgICAgICAgICAgVmQ5cXpVQU9ER253R3pmN3lteVZLZz09CisgICAgICAgICAgICAgICAgICAgICA8L0NpcGhlclZhbHVlPgorICAgICAgICAgICAgICAgICAgIDwvQ2lwaGVyRGF0YT4KKyAgICAgICAgICAgICAgICAgICA8UmVmZXJlbmNlTGlzdD4KKyAgICAgICAgICAgICAgICAgICAgIDxEYXRhUmVmZXJlbmNlIFVSST0iI0VEIi8+CisgICAgICAgICAgICAgICAgICAgPC9SZWZlcmVuY2VMaXN0PgorICAgICAgICAgICAgICAgICA8L0VuY3J5cHRlZEtleT4KKyAgICAgICAgICAgICAgIDwvZHM6S2V5SW5mbz4KKyAgICAgICAgICAgICAgIDxDaXBoZXJEYXRhPgorICAgICAgICAgICAgICAgICA8Q2lwaGVyVmFsdWU+CisgICAgICAgICAgICAgICAgICAgIGhnMWgySkJlTGhMcTFReFBLc09RVUUvVGhibmpBZEZDZlFZS2VxTzFpcGJpNmxUWnI1WFBQM1hzSXliemUwblgKKyAgICAgICAgICAgICAgICAgPC9DaXBoZXJWYWx1ZT4KKyAgICAgICAgICAgICAgIDwvQ2lwaGVyRGF0YT4KKyAgICAgICAgICAgICA8L0VuY3J5cHRlZERhdGE+PC9OdW1iZXI+CisgICAgPElzc3Vlcj5CYW5rIG9mIHRoZSBJbnRlcm5ldDwvSXNzdWVyPgorICAgIDxFeHBpcmF0aW9uIFRpbWU9IjA0LzAyIi8+CisgIDwvQ3JlZGl0Q2FyZD4KKzwvUGF5bWVudEluZm8+CmRpZmYgLS1naXQgYS9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtdGV4dC1hZXMyNTYta3QtcnNhX29hZXBfc2hhMS54bWwgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxlbmMtMy9lbmMtdGV4dC1hZXMyNTYta3QtcnNhX29hZXBfc2hhMS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ0ODI5ZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2VuYy10ZXh0LWFlczI1Ni1rdC1yc2Ffb2FlcF9zaGExLnhtbApAQCAtMCwwICsxLDY0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFBheW1lbnRJbmZvIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvcGF5bWVudHYyIj4KKyAgPE5hbWU+Sm9obiBTbWl0aDwvTmFtZT4KKyAgPENyZWRpdENhcmQgQ3VycmVuY3k9IlVTRCIgTGltaXQ9IjUsMDAwIj4KKyAgICA8TnVtYmVyPjxFbmNyeXB0ZWREYXRhIElkPSJFRCIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjQ29udGVudCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+CisJICAgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNhZXMyNTYtY2JjIi8+CisJCTxkczpLZXlJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKwkJICA8RW5jcnlwdGVkS2V5IElkPSJFSyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+CisgCQkgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNyc2Etb2FlcC1tZ2YxcCI+CisgIAkJICAgICAgPGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIvPgorICAgICAgICAgICAgICAgICAgICA8L0VuY3J5cHRpb25NZXRob2Q+CisJICAgICAgICA8ZHM6S2V5SW5mbyB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgICAgICAgICAgICA8ZHM6S2V5TmFtZT5teS1yc2Eta2V5PC9kczpLZXlOYW1lPgorICAgICAgICAgIAkgICAgIDxkczpYNTA5RGF0YT4KKyAgICAgICAgICAgIAkgICAgICAgPGRzOlg1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICBNSUlEelRDQ0FyV2dBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUVFGQURDQmxqRUxNQWtHQTFVRUJoTUNWVk14CisgICAgICAgICAgICAgIAkgICAgICAgICBDekFKQmdOVkJBZ1RBazVaTVJJd0VBWURWUVFIRXdsTllXNW9ZWFIwWVc0eEZUQVRCZ05WQkFvVERFeGhkbUVnCisgICAgICAgICAgICAgICAgICAgICAgICAgVTNWd2NtVnRaVEVVTUJJR0ExVUVDeE1MU0dWaFpDQlBabVpwWTJVeEZEQVNCZ05WQkFNVEMxSlRRU0JVWlhOMAorICAgICAgICAgICAgICAgICAgICAgICAgIElFTkJNU013SVFZSktvWklodmNOQVFrQkZoUjBaV05vUUd4aGRtRnpkWEJ5WlcxbExtOXlaekFlRncwd01qQXgKKyAgICAgICAgICAgICAgICAgICAgICAgICBNekV4TmpJNU5ETmFGdzAwTXpBeU1qVXhOakk1TkROYU1JR1dNUXN3Q1FZRFZRUUdFd0pWVXpFTE1Ba0dBMVVFCisgICAgICAgICAgICAgICAgICAgICAgICAgQ0JNQ1Rsa3hFakFRQmdOVkJBY1RDVTFoYm1oaGRIUmhiakVWTUJNR0ExVUVDaE1NVEdGMllTQlRkWEJ5WlcxbAorICAgICAgICAgICAgICAgICAgICAgICAgIE1SUXdFZ1lEVlFRTEV3dElaV0ZrSUU5bVptbGpaVEVVTUJJR0ExVUVBeE1MVWxOQklGUmxjM1FnUTBFeEl6QWgKKyAgICAgICAgICAgICAgICAgICAgICAgICBCZ2txaGtpRzl3MEJDUUVXRkhSbFkyaEFiR0YyWVhOMWNISmxiV1V1YjNKbk1JSUJJakFOQmdrcWhraUc5dzBCCisgICAgICAgICAgICAgICAgICAgICAgICAgQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBZ2ozVE95VXRnZzk5b0Vmc204aDlKVFpCeFVrellrWFZVT0h4SXduaworICAgICAgICAgICAgICAgICAgICAgICAgIEZ3cDR5OVpuckdqYS9qK2twUnlLdllQNUNrTmRxMGU1OC9yN0dMWGo0NWlxZDAzWGpzRk5UZGp5NE9JT2dmN0oKKyAgICAgICAgICAgICAgICAgICAgICAgICB4TUc3eitoRUIxTFQyc3dUczEwR0lMRldQQnlSbDMvQkVzbmVrTFpkb3FOb0pydm50dFZreGd1M3g4MEppMy9BCisgICAgICAgICAgICAgICAgICAgICAgICAgWkQ4VWIva0JHT1NQeXU2cG4zT2RuTVRjNXE0cjFxVWU5ODVsUXpDWnZDTXc2QW9HZUN5Sm9kTnUyTWJ2ZU5lSAorICAgICAgICAgICAgICAgICAgICAgICAgICtZUGpSZ0xDUWZ6dk9GUnErOXFNdEU4WGZVSlpkTmhQWmhnZHNPR2Y4dUphdVRjSUhiQXl3N0JoeFB5NlJpa1cKKyAgICAgICAgICAgICAgICAgICAgICAgICBXNXlpV1VtQnlhKzd0NHkxVFFKemhhbS8weTB6VTNUQUE3Yi9yRHJVN3htTlB3SURBUUFCb3lRd0lqQVBCZ05WCisgICAgICAgICAgICAgICAgICAgICAgICAgSFJNQkFmOEVCVEFEQVFIL01BOEdBMVVkRHdFQi93UUZBd01IQmdBd0RRWUpLb1pJaHZjTkFRRUVCUUFEZ2dFQgorICAgICAgICAgICAgICAgICAgICAgICAgIEFERUxXWmpGTFBqU2pHZU9hZVV3SC9tRU9QK2wvblR0eGUwN0lXQVFMNGt2YjR3c2lVc00xRWtQcHRjQlFzeW0KKyAgICAgICAgICAgICAgICAgICAgICAgICBPWWdGaGYzRWxxbWE4NGJiT3lwODV5L2lRbmpwcVdXSjczVEZYU1daYW1TSWhZYjRHaytkUXV3RkkrekQzQjJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgV3dxZ2hhQUhEenh0elJPTFVCam8rOTdZNm5nNlY1emptdGRHT0Z3Tlh3V2hmM1krTWpuRXJ0QklLWWFvOE5KTworICAgICAgICAgICAgICAgICAgICAgICAgIHA2ZGk4MHc4MitzNk90K0NMVnZWb2JMaHhTL3k4eVdwbEFUUmlRbkk1aWovV1RMTUwrdGlVNWFlczBjOWFiYWYKKyAgICAgICAgICAgICAgICAgICAgICAgICBPN2k5ajFpVHVac0RUM2Y5NmlhMFJTTHNYU0dpajczN1FLYzNaTThsU3hCV2ZlcFdZTytHK0lSZ3IxcTlJVURhCisgICAgICAgICAgICAgICAgICAgICAgICAga0tPL3ZCOUF5NjRSdDg4WGJMbm5HbnM9CisgICAgICAgICAgICAgICAgICAgICAgIDwvZHM6WDUwOUNlcnRpZmljYXRlPgorICAgICAgICAgICAgICAgICAgICAgPC9kczpYNTA5RGF0YT4KKyAgICAgICAgICAgICAgICAgICA8L2RzOktleUluZm8+CisgICAgICAgICAgICAgICAgICAgPENpcGhlckRhdGE+CisgICAgICAgICAgICAgICAgICAgICA8Q2lwaGVyVmFsdWU+CisgICAgICAgICAgICAgICAgICAgICAgIEZDTXcySGlRb0dkSU52dlFZb01kUkgwZkU1b005aTNFOUQ0SVJ4OW53dm5aTGJBL09pNXNub0tZRWpZUThBTEsKKyAgICAgICAgICAgICAgICAgICAgICAgUXhZa0dLaEh0dndzVXBWeXhBOXdHeGJOUDE5UXQxeUpJdGhHNm1IVXJHVGNOOWlZdlk4NUZhY0czTlFXbWRNaAorICAgICAgICAgICAgICAgICAgICAgICBIanFteWxXWkFxWTRiK3FESGN6Y2lxelQ5aS9NM0FWY3Q4UnJnZlZML01nWXlvMVdMTTBuK3N2UnRjK0dGWXU2CisgICAgICAgICAgICAgICAgICAgICAgIFF1cEU1YlYxVUZiL3gzRmFRdGx6bTZmSWluK0JTVGhDUEtmbmFuajVaMXJBWnNpN1dvOVRpSzYxMERLaDl6WHgKKyAgICAgICAgICAgICAgICAgICAgICAgT05maUxjdjlmcG9IeHBzRXpDdkFwK1JVekxUdXF4c0xSMXJkT3ZlUUx5L2xUeDllQ2xLOFllcHpsUUlhWGlPWQorICAgICAgICAgICAgICAgICAgICAgICB5MFVxd1BBUW5FanVWek9tVDNDc3JRPT0KKyAgICAgICAgICAgICAgICAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgICAgICAgICAgICAgICAgPC9DaXBoZXJEYXRhPgorICAgICAgICAgICAgICAgICAgIDxSZWZlcmVuY2VMaXN0PgorICAgICAgICAgICAgICAgICAgICAgPERhdGFSZWZlcmVuY2UgVVJJPSIjRUQiLz4KKyAgICAgICAgICAgICAgICAgICA8L1JlZmVyZW5jZUxpc3Q+CisgICAgICAgICAgICAgICAgIDwvRW5jcnlwdGVkS2V5PgorICAgICAgICAgICAgICAgPC9kczpLZXlJbmZvPgorICAgICAgICAgICAgICAgPENpcGhlckRhdGE+CisgICAgICAgICAgICAgICAgIDxDaXBoZXJWYWx1ZT4KKyAgICAgICAgICAgICAgICAgICBEcE5ZQzBOcDVoSGFRQVV5SFdwTTNNUTk5d2tERnRHUmM3VHl3cXhtaEk0c0pLRFhNNVNSalZsS2Y2c3Q1d096CisgICAgICAgICAgICAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgICAgICAgICAgICA8L0NpcGhlckRhdGE+CisgICAgICAgICAgICAgPC9FbmNyeXB0ZWREYXRhPjwvTnVtYmVyPgorICAgIDxJc3N1ZXI+QmFuayBvZiB0aGUgSW50ZXJuZXQ8L0lzc3Vlcj4KKyAgICA8RXhwaXJhdGlvbiBUaW1lPSIwNC8wMiIvPgorICA8L0NyZWRpdENhcmQ+Cis8L1BheW1lbnRJbmZvPgpkaWZmIC0tZ2l0IGEvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMva2V5LnR4dCBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2tleS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA4OTgzYQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGVuYy0zL2tleS50eHQKQEAgLTAsMCArMSwxMTcgQEAKK1RoaXMgZmlsZSBjb250YWlucyBrZXlzIHRvIGRlY3J5cHQgdGhlIHNhbXBsZSB4bWwgZG9jdW1lbnRzOiBlbmMtKi0qLSotKi54bWwuCisKK0FsbCB0aGUga2V5cyBhcmUgZXhwcmVzc2VkIGluIGhleCBzdHJpbmcuIAorCitUaGUgc3ltbWV0cmljIGtleXMgKFRyaXBsZSBERVMgS2V5LCBBRVMtMTI4IEtleSwgQUVTLTE5MiBLZXksIEFFUy0yNTYgS2V5KSBhcmUgCitrZXkgd3JhcCBrZXlzLiBUaGV5IGNhbiBiZSB1c2VkIHRvIGRlY3J5cHQgdGhlIEVuY3J5cHRlZEtleSBlbGVtZW50IGluIHRoZSBmaWxlczogZW5jLSotKi1rdy0qLnhtbC4KKworVGhlIFJTQSBQcml2YXRlIEtleSBpcyBmb3IgZGVjcnlwdGluZyB0aGUgRW5jcnlwdGVkS2V5IGVsZW1lbnQgaW4gdGhlIGZpbGVzOiBlbmMtKi0qLWt0LSoueG1sLgorCitUaGUgRGlmZmllLUhlbGxtYW4gUHJpdmF0ZSBLZXkgaXMgdGhlIFJlY2lwaWVudCdzIHByaXZhdGUga2V5IHdoaWNoIGNhbiBiZSB1c2VkIHRvIGRlcml2ZQordGhlIGRhdGEgZGVjcnlwdGlvbiBrZXkgZm9yIHRoZSBFbmNyeXB0ZWREYXRhIGVsZW1lbnQgaW4gdGhlIGZpbGVzOiBlbmMtKi0qLWthLWRoLnhtbC4KKworI1RyaXBsZSBERVMgS2V5IChpZGVudGlmaWVkIGJ5IHRoZSBrZXkgbmFtZSA9IG15LTNkZXMta2V5KToKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitjOCA4ZiA4OSBkNSBmZCBlOSBiOSA4MCAwNCA0NiAzMiAxYyA0ZiBhYiBkZiA4MyBhNCA2MiBiNiA2MiA5NyBmMiA3MCBmNAorCisjQUVTLTEyOCBLZXkgKGlkZW50aWZpZWQgYnkgdGhlIGtleSBuYW1lID0gbXktYWVzMTI4LWtleSk6CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkMyA1ZiBiMiBiOSAwZCBhMSBiOCBmNCBiNSBmOSAwYiBmNCAyYyA3ZiBiMyA2OQorCisjQUVTLTE5MiBLZXkgKGlkZW50aWZpZWQgYnkgdGhlIGtleSBuYW1lID0gbXktYWVzMTkyLWtleSk6CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyMiA1NyBlZSA0YiA4ZCAwYiBiZCAyYiA1NSA1MyA0MyAyMyBmMSBlMyBlYiBhYyA2MSBkNSA4NCAwNiBmOCBmMyAyZiBiZQorCisjQUVTLTI1NiBLZXkgKGlkZW50aWZpZWQgYnkgdGhlIGtleSBuYW1lID0gbXktYWVzMjU2LWtleSk6CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis2NiAxNiA3OCBiZiA3NCA2NSBjMSAzOSA0MiAxMCBlYSA0OCBhYyA3NyBjYiAyOSA1YyA4OSAzOCAxMCBlZCAxMCA5MyA4ZSA0MCAzNiAKK2FkIGZmIDhjIDUxIGQ1IGIwCisKKyNSU0EgUHJpdmF0ZSBLZXk6CisjLS0tLS0tLS0tLS0tLS0tLQorCisjTW9kdWx1czoKKzgyIDNkIGQzIDNiIDI1IDJkIDgyIDBmIDdkIGEwIDQ3IGVjIDliIGM4IDdkIDI1IDM2IDQxIGM1IDQ5IDMzIDYyIDQ1IGQ1IDUwIGUxIAorZjEgMjMgMDkgZTQgMTcgMGEgNzggY2IgZDYgNjcgYWMgNjggZGEgZmUgM2YgYTQgYTUgMWMgOGEgYmQgODMgZjkgMGEgNDMgNWQgYWIgCis0NyBiOSBmMyBmYSBmYiAxOCBiNSBlMyBlMyA5OCBhYSA3NyA0ZCBkNyA4ZSBjMSA0ZCA0ZCBkOCBmMiBlMCBlMiAwZSA4MSBmZSBjOQorYzQgYzEgYmIgY2YgZTggNDQgMDcgNTIgZDMgZGEgY2MgMTMgYjMgNWQgMDYgMjAgYjEgNTYgM2MgMWMgOTEgOTcgN2YgYzEgMTIgYzkKK2RlIDkwIGI2IDVkIGEyIGEzIDY4IDI2IGJiIGU3IGI2IGQ1IDY0IGM2IDBiIGI3IGM3IGNkIDA5IDhiIDdmIGMwIDY0IDNmIDE0IDZmCitmOSAwMSAxOCBlNCA4ZiBjYSBlZSBhOSA5ZiA3MyA5ZCA5YyBjNCBkYyBlNiBhZSAyYiBkNiBhNSAxZSBmNyBjZSA2NSA0MyAzMCA5OQorYmMgMjMgMzAgZTggMGEgMDYgNzggMmMgODkgYTEgZDMgNmUgZDggYzYgZWYgNzggZDcgODcgZjkgODMgZTMgNDYgMDIgYzIgNDEgZmMKK2VmIDM4IDU0IDZhIGZiIGRhIDhjIGI0IDRmIDE3IDdkIDQyIDU5IDc0IGQ4IDRmIDY2IDE4IDFkIGIwIGUxIDlmIGYyIGUyIDVhIGI5CiszNyAwOCAxZCBiMCAzMiBjMyBiMCA2MSBjNCBmYyBiYSA0NiAyOSAxNiA1YiA5YyBhMiA1OSA0OSA4MSBjOSBhZiBiYiBiNyA4YyBiNQorNGQgMDIgNzMgODUgYTkgYmYgZDMgMmQgMzMgNTMgNzQgYzAgMDMgYjYgZmYgYWMgM2EgZDQgZWYgMTkgOGQgM2YKKworI1B1YmxpYyBFeHBvdGVudAorMDEgMDAgMDEKKworI0V4cG9uZW50Cis1MiBiZSAzYyA4OCA4MiBlMiAxYSA5MyAwNCBkOCBlMyA1OCBlYSBjZiBjMCBkMSBmNyA1YSA2OSBhMCA0YiBjOCBjZiA1YyBlYSA3OSBlMAorZGMgYzUgZDcgZTYgZGIgN2MgNGEgZTMgZjggMTEgOGMgYmMgMzQgNzIgZjIgODMgMDMgNTMgMTEgN2IgZGEgYTggMmUgOGMgM2YgZDggZGQKK2M2IGE3IDU5IDA3IDI1IGU3IDk2IDFjIGQzIDhmIGUwIDIwIDY2IDRkIDYwIDczIDY4IGI1IDQ1IDMxIGQ4IGNkIGI1IGI1IDMyIDBmIDcyCitlNiA2ZiA0NSA2OCBmMSBiMiAyZSA3YiAyMCBiOCBmZiAwYyA3OSA5MCBiMCA5YyA5NyBmOSBkNyAyYSAwZSBkYiA4NCBlYyBhNSAzYiA3NiAKK2Q5IDcwIGJmIDI2IDdjIDkyIDg1IDkxIGE0IGU4IDNkIDYxIDkwIGNhIDJlIDlhIDM1IDliIDYxIDEzIGQxIDE4IGYyIDM0IDQ5IGJkIDdlCitmYiA3YSA5YiA3NiA3MCA0OSBhYyAwMCBmNSA4YiBiNCBjNSAyNSA2ZiA1NCA4YiBhNCAzNCA4OSA3YiA3YSAyOSA5MCBjYyAxNiAxZSAxOQorMGMgMDYgYzIgMTMgMjAgMzIgOGMgOWIgNDEgNjggZjAgMjAgZWEgNjcgNmUgZjcgMTEgN2QgM2YgZTIgMDIgMWYgNjcgZmMgMGMgOTcgNzIgCiszYiA0ZSAzMCA2YyAxNiA4NiAyNyBlMyA3YSA1ZiA5NCBkNSA3MyAwYyA4NiBiNyAwYiBkZSA2MCAzOSBjNSBiZiBhMCAxOSAwYSA1OSBlZAorMzQgZTggNGQgZjkgOGUgMTAgOTcgOTUgMGEgMWYgNDEgNDQgYWEgNjAgOWUgMjEgZjggMjUgNTAgYTUgODYgMjQgY2UgNzggZGUgMTUgNGMKK2I2IDU4IDgzIGYwIDQ2IDk4IDY0IGUzIGFjIDQ2IDRhIDVmIDgxCisKKyNQcmltZSAxCis4YSAwMCBkNyBiNiBjMSAyNyBiMyBkZiA5MCA1NiBjNCAwYSA2MiA4OSA0OCBmYyA2MSAzNCAxMSBkOSAxZCBkNCBlOSAzMiAxYiAwZCA3NSAKKzM3IDc2IDA4IDMwIGQzIDczIDNhIDhiIDVjIDBjIGFhIDE0IGQzIGYyIDZkIGQ2IDEyIDNiIDM1IGE1IDkxIDgyIDJmIDdmIDJmIDJhIDYxCis5OCA0MyAzZiA3NCAxNiA4ZCA5ZSBiMyA1NiBlOCA2MyBjOCAxMSAzNCBhMyA1MSAwZiA0NSBiOCBhZCA4YiBjYiAwOSAwZCA1MiAyMyAzNgorMGYgZTUgMDUgYjAgYjkgNmEgMTAgOWUgMTIgZTcgNGYgZmIgOTEgZDUgY2UgMGIgN2IgN2QgYWUgNmYgNmQgODggODMgZjIgYWIgMDIgNGEKKzM3IDE0IDY2IGM4IDAwIDBhIDdlIDI0IDViIDYyIDIxIDJkIGFhIGE0IDc5IGNkIGQxIDk3IDcwIDExCisKKyNQcmltZSAyCitmMSA5YSAwNiBjNSAzNyAxNyAyMyBiYSA2YSA5YSA0NSA5YyAyMyBjZSBlYyA4OCA3OCA2ZCA4NyA1OCBjNSAwOCA2YiBmNyAxMCBjYyAwMCAKKzc4IDhjIGI4IGI2IDRlIDA3IDA2IDRjIDYzIDY2IDgwIDcyIGZlIDE1IDM2IDliIDFiIGUyIDYwIGY4IDZlIDE0IDQzIGUzIDI1IDMyIDg0IAorNmUgMjQgMTEgNzkgYjUgNGIgYzEgYTQgYzkgYzYgY2UgNzggZGQgZDcgODYgNDMgNWIgMjEgNzUgNTEgZDMgZDcgNGQgMzkgYzMgMjEgYjIKKzg2IGUyIDE1IDVkIDgwIGI5IGU5IDc4IDZlIGZiIGMwIDc2IGNiIDdkIGJhIGU3IDRmIGQ3IGMxIDE0IGQyIDUxIDdjIDRmIGZkIGU0IDNlIAorNDEgYmQgOGMgNzggMzMgZDkgZDEgNzggMjkgMWUgMTUgM2IgZTEgOTYgYjggMTcgY2QgNzYgNzggNGYKKworI1ByaW1lIGV4cG9uZW50IDEKKzAxIDM3IDBhIGFmIDI4IDNhIDMyIDQyIDM4IGEyIDFhIGVkIGMwIDdhIDU2IGYzIDI5IGUzIGVjIDc4IDRkIGUzIGVlIGZkIGFhIGYxIDRlIAorNjMgZTMgOWQgMjQgZDggZTcgYmQgY2YgMzYgNGIgNDIgNDAgMTYgYjEgOWUgYjcgZjAgYzcgMjYgYWMgYzMgODAgMzIgZWMgZGEgYmMgNzMKK2M5IDg0IDY2IDBkIDllIDk5IDM2IDk5IDdiIDlkIDY2IDJiIDdmIGMzIDQ3IGUwIGQxIGQyIDlhIDUyIGE0IGQ1IDZmIGM5IGY3IDNjIDJhCisyMCBhZiBiMiA4MiAyMCBjZiBjNyAzZiBhZCAwOCBlZSA1MiA1NyBiMSA1YiAzNCAwYyBhZCA0OSA5OCBkZiA4ZCAwMSAyNCA2NCBjZiAwYgorNWEgM2EgY2EgYzAgZGUgMDcgMzkgOWYgMTYgNTIgZTEgZDkgZTYgMTMgYjYgYTIgZDIgNDIgOTQgMTEKKworI1ByaW1lIGV4cG9uZW50IDIKKzQ3IGMwIGZmIDExIGMzIDcyIGQzIGUxIGExIDk3IDdmIGU1IDA3IDlkIDg1IDEyIDYyIGYxIGU0IGE4IGIwIDliIGY3IGI0IGMxIDAwIDU1IAorODMgNzggMDcgYzMgZGQgMTggYTggZmUgMzYgZTcgNTIgNmUgZDQgOTcgNjggNDggNTggZDcgYmIgMDUgMGQgNmMgNjcgNWQgMjYgYzcgMDIKKzFkIDQwIDdjIDUyIDgyIDc3IDU1IGQyIDc4IDY3IDIxIGYwIDA4IDhlIDk5IGQwIGZlIDI3IDVmIDc3IGY1IGYwIDc3IDMyIGJmIGVjIDRjCitjOSBlOCAzNyA1ZiBlOCA0ZiA4MiAzMyA2YyA1OCBhMyBkZSA3MiBlNSAwMCBiYyBkZSBmNCBiZSA4MSA5NSAxZSA3ZSAwNyBjYSBmNiA2YworZmYgY2EgM2UgYTYgOTkgMjQgYzMgYWMgZjkgZWEgNzEKKworI0NydENvZmZpZWllbnQ6Cis3NSA1ZSBiMiA4NSBkNCA1YyA1MiBiNCA4MSA4MyBhNyBiYyA0MyA2NyBmNSBhMiBiZSBjYiA3OSA4YyBlMiBlYiAxNSBhMyA3ZiA1NCA1MSAKKzhlIGEzIGNlIDgxIGZlIDk1IDA3IGZjIDYyIDMyIDYxIDdhIDQ2IDc2IDRhIGI5IDE1IDMzIDJiIGQ4IDllIDQ2IDcwIDIxIGI0IDMxIDQ5Cis0ZCAyZCA2NyAzZCBiNyBkNSAyYyBmNCBhYyAwMSAyYyBmMSAwMSBhMSA5MCAxOSBkNiA3NyAwMiBjMSBjMyBlMiAzYSA3NCBkZSAzMCBiMiAKKzJhIGQwIDVhIDNjIGE3IDQzIGNkIGU1IDZiIGFlIGIyIDE4IDNkIGNjIDk5IGUwIGUwIDVlIGEwIDU1IDk0IGJmIDM5IDQzIDEyIGQxIDFjCithOCA5NyAzNyAzOCBkYyAyOSAzNSA2NiBhNSBlZSA3OCA0YSAxMSBiNiBmZiAwMiAzYSA4NSA5YSA5OAorCisKKyNEaWZmaWUtSGVsbG1hbiBQcml2YXRlIEtleToKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI1ByaW1lIFAKK2I5IGFiIGRhIGI3IGI4IGJhIDM0IGVhIDY3IDQ0IGU2IGRkIGM3IGIxIGIzIGRmIGM4IDdjIGM2IDQ4IDI2IGJmIDZkIDE3IDUxIGE4IGY1IAorMjYgMzcgZWYgMzAgMDQgMWYgNDAgNTMgMDcgN2EgYzggNDYgODUgOGQgOTAgZDIgNmMgMmYgMjcgNTMgOWYgNWYgZjkgMTkgZTEgYzMgMWIgCis0OSA4NSAzMiBjMiAxZCBkNiAwMSA4ZSBiMyA0MiBjZiAxNiBkYSBlYyA2MCBmMCA2NyA5ZCBiOCAyMiBkZSA2YyBkNCAwNiA0ZCBhMSBkNQorMTUgNTkgYWIgMjQgYzQgMWEgYzIgNTUgNzUgNmMgODMgMTAgZmEgNDAgZTIgMjEgMDMgNTEgZmMgNTMgZWEgNDggZDEgY2EgMGYgNjQgM2QKK2ZlIGVhIDA2IDBmIDk3IDc2IDk3IDgyIDhmIGRlIGExIGZjIDc2IGZlIDQ3IDM5IDNmIDFmIDBiIDA1CisKKyNHZW5lcmF0b3IgRworNzEgYmEgN2EgYTYgNTIgZTIgOTkgMTUgMzMgNGEgMjYgMTEgZmQgMWIgYTUgMDggMzYgNTIgM2YgNWUgYmYgNjMgM2QgZWIgMjMgZTcgZjIgCiszYyA3ZSA5NSBhMCBjNSA5YyA2YyA4MiA0YyBlNCBiMiBhOCBhYyAwYyAyYiAyNSA2NyA0ZiA2ZSA2NSAzMCAxMyBhYyA2MSA1MyAxNyA3NworZTQgZWEgNDMgNjEgYzcgNmUgNmMgNTAgMmIgNTggMWMgNzIgYjUgMWYgMzQgMjYgYjAgYjMgMmUgZDggMTUgOGQgMDUgMGEgZTQgMmMgMmYKKzhjIDkxIGRkIGRkIGRmIGQ1IDFkIDM1IGRiIDhmIDViIDg5IDAyIDMyIDk3IDFkIGEwIDcwIDIxIGZiIDM0IGVhIDAwIDdkIDkwIDkwIGEyCis2NiBjYiAxNyAzZiBjNyA0MiBkZSBiZSA0NCA5NCA5MyBjYSBkNyBmMCAzMSA1YSBkZiAyZCA3OSBkOQorCisjUHJpbWUgUQorYmYgODQgYTMgODggMGYgMmYgN2QgZmQgNzYgNGUgZTIgOWUgYWYgM2IgM2UgNzQgNzUgM2QgNmIgODcKKworI1ByaXZhdGUgS2V5IFZhbHVlCis2ZCAyNyAxNyAwZSBjOSBmZiBiMyAyOSA4ZSAxMiAyYyAxZiBhNyBhOCA0OCA2NCA0MiBmMiAxMiBiMwpkaWZmIC0tZ2l0IGEvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvcGF5bWVudC54bWwgYi9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxlbmMtMy9wYXltZW50LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2I1MGM3Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvcGF5bWVudC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFBheW1lbnRJbmZvIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvcGF5bWVudHYyIj4KKyAgPE5hbWU+Sm9obiBTbWl0aDwvTmFtZT4KKyAgPENyZWRpdENhcmQgQ3VycmVuY3k9IlVTRCIgTGltaXQ9IjUsMDAwIj4KKyAgICA8TnVtYmVyPjQwMTkgMjQ0NSAwMjc3IDU1Njc8L051bWJlcj4KKyAgICA8SXNzdWVyPkJhbmsgb2YgdGhlIEludGVybmV0PC9Jc3N1ZXI+CisgICAgPEV4cGlyYXRpb24gVGltZT0iMDQvMDIiLz4KKyAgPC9DcmVkaXRDYXJkPgorPC9QYXltZW50SW5mbz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2NvbS9waGFvcy9waGFvcy14bWxlbmMtMy9yc2EtcHJpdi1rZXkuZGVyIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvcnNhLXByaXYta2V5LmRlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTFlNGIyCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcGhhb3MvcGhhb3MteG1sZW5jLTMvcnNhLXByaXYta2V5LmRlcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kYXRhL2NvbS9wb3Rob2xlL3htbGRzaWcveG1sLXN0eWxlc2hlZXQudHh0IGIvZGF0YS9jb20vcG90aG9sZS94bWxkc2lnL3htbC1zdHlsZXNoZWV0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWZhMDcxCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcG90aG9sZS94bWxkc2lnL3htbC1zdHlsZXNoZWV0LnR4dApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kYXRhL2NvbS9wdXJlZWRnZS9MZWF2ZVJlcXVlc3QueGZkIGIvZGF0YS9jb20vcHVyZWVkZ2UvTGVhdmVSZXF1ZXN0LnhmZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTUwZWM4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcHVyZWVkZ2UvTGVhdmVSZXF1ZXN0LnhmZApAQCAtMCwwICsxLDQxMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/Pg0KKzxYRkRMIHZlcnNpb249IjQuMC4xIj4NCisJPHZmZF90aXRsZT5TRjcxPC92ZmRfdGl0bGU+DQorCTx2ZmRfYXV0aG9yPlRob21hcyBNb2hyPC92ZmRfYXV0aG9yPg0KKwk8dmZkX3JldmlzaW9uPjQvNi85ODwvdmZkX3JldmlzaW9uPg0KKwk8dmZkX2RhdGU+NC82Lzk4PC92ZmRfZGF0ZT4NCisJPHNhdmVmb3JtYXQ+YXBwbGljYXRpb24veC14ZmRsPC9zYXZlZm9ybWF0Pg0KKwk8dHJhbnNtaXRmb3JtYXQ+YXBwbGljYXRpb24veC14ZmRsPC90cmFuc21pdGZvcm1hdD4NCisJPGZvcm1pZCBjb250ZW50PSJhcnJheSI+DQorCQk8dmVyc2lvbj4xLjAuMDwvdmVyc2lvbj4NCisJPC9mb3JtaWQ+DQorCTxwYWdlIHNpZD0iUEFHRTEiPg0KKwkJPHZmZF9wYWdlc2l6ZT5sZXR0ZXI8L3ZmZF9wYWdlc2l6ZT4NCisJCTx2ZmRfcGFnZWRwaT4xMjA8L3ZmZF9wYWdlZHBpPg0KKwkJPHZmZF9wcmludHNpemU+OC4wOzEwLjU8L3ZmZF9wcmludHNpemU+DQorCQk8bGFiZWw+UEFHRTE8L2xhYmVsPg0KKwkJPGJnY29sb3IgY29udGVudD0iYXJyYXkiPg0KKwkJCTxhZT4yMzU8L2FlPg0KKwkJCTxhZT4yMzU8L2FlPg0KKwkJCTxhZT4yMzU8L2FlPg0KKwkJPC9iZ2NvbG9yPg0KKwkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQk8YWU+Q291cmllcjwvYWU+DQorCQkJPGFlPjk8L2FlPg0KKwkJCTxhZT5wbGFpbjwvYWU+DQorCQk8L2ZvbnRpbmZvPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUwxIj4NCisJCQk8dmFsdWU+UkVRVUVTVCBGT1IgTEVBVkUgT1IgQVBQUk9WRUQgQUJTRU5DRTwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkhlbHZldGljYTwvYWU+DQorCQkJCTxhZT4xNDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4NCisJCQk8c2l6ZSBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT42MTwvYWU+DQorCQkJCTxhZT4xPC9hZT4NCisJCQk8L3NpemU+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjE5PC9hZT4NCisJCQkJCTxhZT4zPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjg3NDwvYWU+DQorCQkJCQk8YWU+MzQ8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjIwPC9hZT4NCisJCQkJCTxhZT4zNTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT43OTwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT4xLiAgTkFNRTwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUwzIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTAwPC9hZT4NCisJCQkJCTxhZT4zNTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMTg8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+KExhc3QsIEZpcnN0LCBNaWRkbGUgSW5pdGlhbCk8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJCTxhZT5pdGFsaWM8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUw0Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTExPC9hZT4NCisJCQkJCTxhZT4zNTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4zODU8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+Mi4gIEVNUExPWUVFIE9SIFNPQ0lBTCBTRUNVUklUWSBOVU1CRVI8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMNSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjIwPC9hZT4NCisJCQkJCTxhZT44NTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xNzA8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+My4gIE9SR0FOSVpBVElPTjwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUw2Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MjA8L2FlPg0KKwkJCQkJPGFlPjEzNTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yNDg8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+NC4gIFRZUEUgT0YgTEVBVkUvQUJTRU5DRTwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUw3Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MzI8L2FlPg0KKwkJCQkJPGFlPjE1NTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMzY8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+KENoZWNrIGFwcHJvcHJpYXRlIGJveChlcykgYmVsb3cuKTwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjk8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCQk8YWU+aXRhbGljPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMOCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjI3MDwvYWU+DQorCQkJCQk8YWU+MTU4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjQ4PC9hZT4NCisJCQkJCTxhZT4yMjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPkZyb206PC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+OTwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMOSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjI2ODwvYWU+DQorCQkJCQk8YWU+MTM1PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE2MzwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5EYXRlPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUwxMCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjM1MjwvYWU+DQorCQkJCQk8YWU+MTU4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjQ4PC9hZT4NCisJCQkJCTxhZT4yMjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPlRvOjwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjk8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDExIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NDMyPC9hZT4NCisJCQkJCTxhZT4xNTg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+NDg8L2FlPg0KKwkJCQkJPGFlPjIyPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+RnJvbTo8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT45PC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUwxMiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjQzMDwvYWU+DQorCQkJCQk8YWU+MTM1PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE2MzwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5UaW1lPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUwxMyI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjUxMzwvYWU+DQorCQkJCQk8YWU+MTU4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjQ4PC9hZT4NCisJCQkJCTxhZT4yMjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPlRvOjwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjk8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDE0Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTkyPC9hZT4NCisJCQkJCTxhZT4xMzQ8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjQ2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+VG90YWwKK0hvdXJzPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUwxNSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjY0PC9hZT4NCisJCQkJCTxhZT4xODY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MjA1PC9hZT4NCisJCQkJCTxhZT4yNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPkFjY3J1ZWQgQW5udWFsIExlYXZlPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDE2Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NjQ8L2FlPg0KKwkJCQkJPGFlPjIzMjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMDU8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+UmVzdG9yZWQgQW5udWFsIExlYXZlPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDE3Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NjQ8L2FlPg0KKwkJCQkJPGFlPjI3ODwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMDU8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+QWR2YW5jZSBBbm51YWwgTGVhdmU8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMTgiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42NDwvYWU+DQorCQkJCQk8YWU+MzIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIwNTwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5BY2N1cmVkIFNpY2sgTGVhdmU8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMTkiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42NDwvYWU+DQorCQkJCQk8YWU+MzY4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIwNTwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5BZHZhbmNlIFNpY2sgTGVhdmU8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMjAiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xOTwvYWU+DQorCQkJCQk8YWU+NDA5PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgwPC9hZT4NCisJCQkJCTxhZT4yNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPlB1cnBvc2U6PC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDIxIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTQyPC9hZT4NCisJCQkJCTxhZT40MTA8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5NZWRpY2FsL2RlbnRhbC9vcHRpY2FsIEV4YW1pbmF0aW9uIG9mIHJlcXVlc3RpbmcgZW1wbG95ZWU8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT45PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTxzaXplIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPjQ1PC9hZT4NCisJCQkJPGFlPjE8L2FlPg0KKwkJCTwvc2l6ZT4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDIyIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTM1PC9hZT4NCisJCQkJCTxhZT40MTA8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+NDY8L2FlPg0KKwkJCQkJPGFlPjI0PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+T3RoZXI8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT45PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMjMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xNDI8L2FlPg0KKwkJCQkJPGFlPjQzNTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT40Mzk8L2FlPg0KKwkJCQkJPGFlPjQyPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+Q2FyZSBvZiBmYW1pbHkgbWVtYmVyL2JlcmVhdmVtZW50LCBpbmNsdWRpbmcgbWVkaWNhbC9kZW50YWwvb3B0aWNhbCBleGFtaW5hdGlvbiBvZiBmYW1pbHkgbWVtYmVyPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+OTwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDI0Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NjQ8L2FlPg0KKwkJCQkJPGFlPjQ5ODwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMDQ8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+Q29tcGVuc2F0b3J5IFRpbWUgT2ZmPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDI1Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NjQ8L2FlPg0KKwkJCQkJPGFlPjUzNTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xODA8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+T3RoZXIgUGFpZCBBYnNlbmNlPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDI2Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NjQ8L2FlPg0KKwkJCQkJPGFlPjU1NjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xNTg8L2FlPg0KKwkJCQkJPGFlPjI0PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+KFNwZWNpZnkgaW4gUmVtYXJrcyk8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT45PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQkJPGFlPml0YWxpYzwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDI3Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NjQ8L2FlPg0KKwkJCQkJPGFlPjU5MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xOTI8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+TGVhdmUgV2l0aG91dCBQYXk8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMjgiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42NzY8L2FlPg0KKwkJCQkJPGFlPjEzNTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMTU8L2FlPg0KKwkJCQkJPGFlPjQ2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+NS4gRkFNSUxZIEFORAorCU1FRElDQUwgTEVBVkU8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMjkiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42Nzc8L2FlPg0KKwkJCQkJPGFlPjE4MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMTQ8L2FlPg0KKwkJCQkJPGFlPjEyNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPklmIGFubnVhbCBsZWF2ZSwgc2ljayBsZWF2ZSwgb3IgbGVhdmUgd2l0aG91dCBwYXkgd2lsbCBiZSB1c2VkIHVuZGVyIHRoZSBGYW1pbHkgYW5kIE1lZGljYWwgTGVhdmUgQWN0IG9mIDE5OTMsIHBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUwzMCI+DQorCQkJPHZhbHVlPkkgaGVyZWJ5IGludm9rZSBteTwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjcwMDwvYWU+DQorCQkJCQk8YWU+MzIyPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE5MTwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMzEiPg0KKwkJCTx2YWx1ZT5lbnRpdGxlbWVudCBGYW1pbHkgYW5kPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+Njc1PC9hZT4NCisJCQkJCTxhZT4zNDI8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MjE2PC9hZT4NCisJCQkJCTxhZT4yNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUwzMiI+DQorCQkJPHZhbHVlPk1lZGljYWwgTGVhdmUgZm9yOjwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjY3NTwvYWU+DQorCQkJCQk8YWU+MzY0PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIxNTwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMzMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT43MDg8L2FlPg0KKwkJCQkJPGFlPjQwMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xODE8L2FlPg0KKwkJCQkJPGFlPjIyPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+QmlydGgvQWRvcHRpb24vRm9zdGVyIENhcmU8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMzQiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT43MDg8L2FlPg0KKwkJCQkJPGFlPjQyNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xODI8L2FlPg0KKwkJCQkJPGFlPjM4PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+U2VyaW91cyBIZWF0aCBDb25kaXRpb24gb2Ygc3BvdXNlLCBTb24sIERhdWdodGVyLCBvciBQYXJlbnQ8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMzUiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT43MDg8L2FlPg0KKwkJCQkJPGFlPjQ4MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xODQ8L2FlPg0KKwkJCQkJPGFlPjIyPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+U2VyaW91cyBIZWFsdGggQ29uZGl0aW9uIG9mIFNlbGY8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMzYiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42NzU8L2FlPg0KKwkJCQkJPGFlPjUzNzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPkNvbnRhY3QgeW91ciBzdXBlcnZpc29yIGFuZC9vciBvdXIgcGVyc29ubmVsIG9mZmljZSB0byBvYnRhaW4gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIGVudGl0bGVtZW50cyBhbmQgcmVzcG9uc2liaWxpdGllcyB1bmRlciB0aGUgRmFtaWx5IGFuZCBNZWRpY2FsIExlYXZlIEFjdCBvZiAxOTkzLjwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHNpemUgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8YWU+NTwvYWU+DQorCQkJPC9zaXplPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMzciPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xOTwvYWU+DQorCQkJCQk8YWU+NjMwPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE5MjwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT42LiAgUkVNQVJLUzo8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMzgiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xOTwvYWU+DQorCQkJCQk8YWU+NzQ3PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE3MDwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT43LiAgQ0VSVElGSUNBVElPTjo8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMzkiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xNzg8L2FlPg0KKwkJCQkJPGFlPjc0NzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT43MTU8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+SSBoZXJlYnkgcmVxdWVzdCBsZWF2ZS9hcHByb3ZlZCBhYnNlbmNlIGZyb20gZHV0eSBhcyBpbmRpY2F0ZWQgYWJvdmUgYW5kIGNlcnRpZnkgdGhhdCBzdWNoIGxlYXZlL2Fic2VuY2U8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDQwIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTk8L2FlPg0KKwkJCQkJPGFlPjc2NzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44NzM8L2FlPg0KKwkJCQkJPGFlPjY2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+aXMgcmV1ZXN0ZWQgZnJvbSB0aGUgcHVycG9zZShzKSBpbmRpY2F0ZWQuIEkgdW5kZXJzdGFuZCB0aGF0IEkgbXVzdCBjb21wbHkgd2l0aCBteSBlbXBsb3lpbmcgYWdlbmN5J3MgcHJvY2VkdXJlcyBmb3IgcmVxdWVzdGluZyBsZWF2ZS9hcHByb3ZlZCBhYnNlbmNlIChhbmQgcHJvdmlkZSBhZGRpdGlvbmFsIGRvY3VtZW50aW9uLCBpbmNsdWRpbmcgbWVkaWNhbCBjZXJ0aWZpY2F0aW9uLCBpZiByZXF1aXJlZCkgYW5kIHRoYXQgZmFsc2lmaWNhdGlvbiBvZiBpbmZvcm1hdGlvbiBvbiB0aGlzIGZvcm0gbWF5IGJlIGdyb3VuZHMgZm9yIGRpc2NpcGxpbmFyeSBhY3Rpb24sIGluY2x1ZGluZyByZW1vdmFsLjwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMNDEiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xOTwvYWU+DQorCQkJCQk8YWU+ODQxPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIzMDwvYWU+DQorCQkJCQk8YWU+Mjc8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5FTVBMT1lFRSBTSUdOQVRVUkU8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMTwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMNDIiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41OTc8L2FlPg0KKwkJCQkJPGFlPjg0MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT41ODwvYWU+DQorCQkJCQk8YWU+Mjc8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5EQVRFPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTE8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDQzIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTk8L2FlPg0KKwkJCQkJPGFlPjg3NzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4zMzU8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+OC4gIE9GRklDQUwgQUNUSU9OIE9OIFJFUVVFU1Q6PC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDQ0Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NDE8L2FlPg0KKwkJCQkJPGFlPjg5NzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPihJZiBkaXNhcHByb3ZlZCwgZ2l2ZSByZWFzb24uIElmIGFubnVhbCBsZWF2ZSwgaW5pdGlhdGUgYWN0aW9uIHRvIHJlc2NoZWR1bGUuKTwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTxzaXplIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPjUzPC9hZT4NCisJCQkJPGFlPjE8L2FlPg0KKwkJCTwvc2l6ZT4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDQ1Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+Mzg4PC9hZT4NCisJCQkJCTxhZT44NzU8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MTkyPC9hZT4NCisJCQkJCTxhZT4yNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPkFQUFJPVkVEPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDQ2Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NjM4PC9hZT4NCisJCQkJCTxhZT44NzU8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MTkyPC9hZT4NCisJCQkJCTxhZT4yNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPkRJU0FQUFJPVkVEPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDQ3Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTk8L2FlPg0KKwkJCQkJPGFlPjk0MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xMTI8L2FlPg0KKwkJCQkJPGFlPjI3PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+U0lHTkFUVVJFPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTE8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDQ4Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTk3PC9hZT4NCisJCQkJCTxhZT45NDA8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+NTg8L2FlPg0KKwkJCQkJPGFlPjI3PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+REFURTwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjExPC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUw0OSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjE3PC9hZT4NCisJCQkJCTxhZT45NzA8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODc2PC9hZT4NCisJCQkJCTxhZT4yNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPlBSSVZBQ1kgQUNUIFNUQVRFTUVOVDwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5Pg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMNTAiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xOTwvYWU+DQorCQkJCQk8YWU+OTk2PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjg3MzwvYWU+DQorCQkJCQk8YWU+MTM0PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+U2VjdGlvbiA2MzExIG9mIHRpdGxlIDUsIFVuaXRlZCBTdGF0ZXMgQ29kZSwgYXV0aG9yaXplcyBjb2xsZWN0aW9uIG9mIHRoaXMgaW5mb3JtYXRpb24uIFRoZSBwcmltYXJ5IHVzZSBvZiB0aGlzIGluZm9ybWF0aW9uIGlzIGJ5IG1hbmFnZW1lbnQgYW5kIHlvdXIgcGF5cm9sbCBvZmZpY2UgdG8gYXBwcm92ZSBhbmQgcmVjb3JkIHlvdXIgdXNlIG9mIGxlYXZlLiBBZGRpdGlvbmFsIGRpc2Nsb3N1cmVzIG9mIHRoZSBpbmZvcm1hdGlvbiBtYXQgYmU6IFRvIHRoZSBEZXBhcnRtZW50IG9mIGxhYm9yIHdoZW4gcHJvY2Vzc2luZyBhIGNsYWltIGZvciBjb21wZW5zYXRpb24gcmVnYXJkaW5nIGEgam9iIGNvbm5lY3RlZCBpbmp1cnkgb3IgaWxsbmVzczsgdG8gYSBTdGF0ZSB1bmVtcGxveW1lbnQgY29tcGVuc2F0aW9uIG9mZmljZSByZWdhcmRpbmcgYSBjbGFpbTsgdGhlIEZlZGVyYWwgTGlmZSBJbnN1cmFuY2Ugb3IgSGVhbHRoIEJlbmVmaXRzIGNhcnJpZXMgcmVnYXJkaW5nIGEgY2xhaW07IHRvIGEgRmVkZXJhbCBTdGF0ZSwgb3IgbG9jYWwgbGF3IGVuZm9yY2VtZW50IGFnZW5jeSB3aGVuIHlvdXIgYWdlbmN5IGJlY29tZXMgYXdhcmUgb2YgYSB2aW9sYXRpb24gb3IgcG9zc2libGUgdmlvbGF0aW9uIG9mIGNpdmlsIG9yIGNyaW1pbmFsIGxhdzsgdG8gYSBGZWRlcmFsIGFnZW5jeSB3aGVuIGNvbmR1Y3RpbmcgYW4gaW52ZXN0aWdhdGlvbiBmb3IgZW1wbG95bWVudCBvciBTZXJ2aWNlcyBBZG1pbmlzdHJhdGlvbiBpbiBjb25uZWN0aW9uIHdpdGggaXRzIHJlc3BvbnNpYmlsaXRpZXMgZm9yIHJlY29yZHMgbWFuYWdlbWVudC4KKworV2hlcmUgIHRoZSBFbXBsb3llZSBpZGVudGlmaWNhdGlvbiBudW1iZXIgaXMgeW91ciBTb2NpYWwgU2VjdXJpdHkgTnVtYmVyLCBjb2xsZWN0aW9uIG9mIHRoaXMgaW5mb3JtYXRpb24gaXMgYXV0aG9yaXplZCBieSBFeGVjdXRpdmUgT3JkZXIgOTM5Ny4gRnVybmlzaGluZyB0aGUgaW5mb3JtYXRpb24gb24gdGhpcyBmb3JtLCBpbmNsdWRpbmcgeW91ciBTb2NpYWwgU2VjdXJpdHkgTnVtYmVyLCBpcyB2b2x1bnRhcnksIGJ1dCB0byBkbyBzbyBtYXkgcmVzdWx0IGluIGRpc2FwcHJvdmFsIHJlcXVlc3QuPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+ODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDUxIj4NCisJCQk8dmFsdWU+SWYgeW91ciBhZ2VuY3kgdXNlcyB0aGUgaW5mb3JtYXRpb24gZnVybmlzaGVkIG9uIHRoaXMgZm9ybSBmb3IgcHVycG9zZXMgb3RoZXIgdGhhbiB0aG9zZSBpbmRpY2F0ZWQgYWJvdmUsIGl0IG1heSBwcm92aWRlIHlvdSB3aXRoIGFuIGFkZGl0aW9uYWwgc3RhdGVtZW50IHJlZmxlY3RpbmcgdGhvc2UgcHVycG9zZXMuPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+NzwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTg8L2FlPg0KKwkJCQkJPGFlPjExNDA8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODc1PC9hZT4NCisJCQkJCTxhZT4yMjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUw1MiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjE4PC9hZT4NCisJCQkJCTxhZT4xMTY4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjQyMjwvYWU+DQorCQkJCQk8YWU+Mzg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5OU04gNzU0MC0wMDAtNzUzLTUwNjcKK1BSRVZJT1VTIEVESVRJT04gTUFZIEJFIFVTRUQ8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMNTMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT40Mzg8L2FlPg0KKwkJCQkJPGFlPjExNjg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+NDU0PC9hZT4NCisJCQkJCTxhZT4zODwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPlNUQU5EQVJEIEZPUk0gNzEgKFJldi4gMTItOTcpCitQUkVTQ1JJQkVEIEJZIE9GRklDRSBPRiBQRVJTT05ORUwgTUFOQUdFTUVOVCwgNSBDRlIgUEFSVCA2MzA8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTxqdXN0aWZ5PnJpZ2h0PC9qdXN0aWZ5Pg0KKwkJPC9sYWJlbD4NCisJCTxsaW5lIHNpZD0iTElORTEiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xNzwvYWU+DQorCQkJCQk8YWU+MzI8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODc2PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCTwvbGluZT4NCisJCTxsaW5lIHNpZD0iTElORTIiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xNzwvYWU+DQorCQkJCQk8YWU+ODI8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODc2PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCTwvbGluZT4NCisJCTxsaW5lIHNpZD0iTElORTMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xNzwvYWU+DQorCQkJCQk8YWU+MTMzPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjg3NjwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkU0Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTc8L2FlPg0KKwkJCQkJPGFlPjE3OTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44NzY8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FNSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjI2ODwvYWU+DQorCQkJCQk8YWU+MjE4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjQwNjwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkU2Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MjY4PC9hZT4NCisJCQkJCTxhZT4yNjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+NDA2PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCTwvbGluZT4NCisJCTxsaW5lIHNpZD0iTElORTciPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xNzwvYWU+DQorCQkJCQk8YWU+MzExPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjY1NzwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkU4Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MjY4PC9hZT4NCisJCQkJCTxhZT4zNTQ8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+NDA2PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCTwvbGluZT4NCisJCTxsaW5lIHNpZD0iTElORTkiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yNjg8L2FlPg0KKwkJCQkJPGFlPjM5ODwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT40MDY8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FMTAiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xNzwvYWU+DQorCQkJCQk8YWU+NDg0PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjY1NzwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUxMSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjE3PC9hZT4NCisJCQkJCTxhZT41MzA8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+NjU3PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCTwvbGluZT4NCisJCTxsaW5lIHNpZD0iTElORTEyIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTc8L2FlPg0KKwkJCQkJPGFlPjU3ODwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT42NTc8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FMTMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xNzwvYWU+DQorCQkJCQk8YWU+NjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjg3NjwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUxNCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjE3PC9hZT4NCisJCQkJCTxhZT43NDM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODc2PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCTwvbGluZT4NCisJCTxsaW5lIHNpZD0iTElORTE1Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTc8L2FlPg0KKwkJCQkJPGFlPjg2NzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44NzY8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FMTYiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xNzwvYWU+DQorCQkJCQk8YWU+OTY3PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjg3NjwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUxNyI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjE3PC9hZT4NCisJCQkJCTxhZT4xMTY0PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjg3NjwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUxOCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjE3PC9hZT4NCisJCQkJCTxhZT4zMjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJCTxhZT4xMTMzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCTwvbGluZT4NCisJCTxsaW5lIHNpZD0iTElORTE5Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTEwPC9hZT4NCisJCQkJCTxhZT4zMjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJCTxhZT41MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUyMCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjg5MjwvYWU+DQorCQkJCQk8YWU+MzI8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCQk8YWU+MTEzMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUyMSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjI2ODwvYWU+DQorCQkJCQk8YWU+MTMzPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQkJPGFlPjI2NjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUyMiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjM0OTwvYWU+DQorCQkJCQk8YWU+MTc5PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQkJPGFlPjIyMDwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUyMyI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjQzMDwvYWU+DQorCQkJCQk8YWU+MTMzPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQkJPGFlPjI2NjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUyNCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjUxMDwvYWU+DQorCQkJCQk8YWU+MTc5PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQkJPGFlPjIyMDwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUyNSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjU5MjwvYWU+DQorCQkJCQk8YWU+MTMzPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQkJPGFlPjI2NTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUyNiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjY3MzwvYWU+DQorCQkJCQk8YWU+MTMzPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQkJPGFlPjQ5NDwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUyNyI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjI2ODwvYWU+DQorCQkJCQk8YWU+NDg0PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQkJPGFlPjE0MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUyOCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjM0OTwvYWU+DQorCQkJCQk8YWU+NDg0PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQkJPGFlPjE0MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUyOSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjQzMTwvYWU+DQorCQkJCQk8YWU+NDg0PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQkJPGFlPjE0MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUzMCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjUxMDwvYWU+DQorCQkJCQk8YWU+NDg0PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQkJPGFlPjE0MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUzMSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjU5MTwvYWU+DQorCQkJCQk8YWU+NDg0PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQkJPGFlPjE0MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDEiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yMDwvYWU+DQorCQkJCQk8YWU+NTg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+NDg5PC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5zdHJpbmc8L2FlPg0KKwkJCQk8YWU+bWFuZGF0b3J5PC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+Sm9obiBRLiBQdWJsaWM8L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjUzNzwvYWU+DQorCQkJCQk8YWU+NTg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MTIzPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5zdHJpbmc8L2FlPg0KKwkJCQk8YWU+bWFuZGF0b3J5PC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+MTIzNDU2Nzg5PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xOTwvYWU+DQorCQkJCQk8YWU+MTA5PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjg3MjwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+c3RyaW5nPC9hZT4NCisJCQkJPGFlPm1hbmRhdG9yeTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPlB1cmVFZGdlIFNvbHV0aW9ucyBJbmMuPC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8Y2hlY2sgc2lkPSJDSEVDSzEiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yODwvYWU+DQorCQkJCQk8YWU+MTkxPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIyPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkhlbHZldGljYTwvYWU+DQorCQkJCTxhZT4xODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvY2hlY2s+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDQiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yNjk8L2FlPg0KKwkJCQkJPGFlPjE4ODwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmRhdGU8L2FlPg0KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPg0KKwkJCQk8L3RlbXBsYXRlPg0KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5Db3VyaWVyPC9hZT4NCisJCQkJPGFlPjg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQ1Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MzUwPC9hZT4NCisJCQkJCTxhZT4xODg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5kYXRlPC9hZT4NCisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4NCisJCQkJPC90ZW1wbGF0ZT4NCisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+Q291cmllcjwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxENiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjQzMTwvYWU+DQorCQkJCQk8YWU+MTg4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgwPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5Pg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnRpbWU8L2FlPg0KKwkJCQk8YWU+c2hvcnQ8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDciPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41MTE8L2FlPg0KKwkJCQkJPGFlPjE4ODwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MTwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT50aW1lPC9hZT4NCisJCQkJPGFlPnNob3J0PC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQ4Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTkzPC9hZT4NCisJCQkJCTxhZT4xODg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5mbG9hdDwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTxyYW5nZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+MDwvYWU+DQorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4NCisJCQkJPC9yYW5nZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGNoZWNrIHNpZD0iQ0hFQ0syIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+Mjg8L2FlPg0KKwkJCQkJPGFlPjIzMTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMjwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPg0KKwkJCQk8YWU+MTg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2NoZWNrPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQ5Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MjY5PC9hZT4NCisJCQkJCTxhZT4yMzE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5kYXRlPC9hZT4NCisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4NCisJCQkJPC90ZW1wbGF0ZT4NCisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+Q291cmllcjwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMTAiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4zNTA8L2FlPg0KKwkJCQkJPGFlPjIzMTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmRhdGU8L2FlPg0KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPg0KKwkJCQk8L3RlbXBsYXRlPg0KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5Db3VyaWVyPC9hZT4NCisJCQkJPGFlPjg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQxMSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjQzMTwvYWU+DQorCQkJCQk8YWU+MjMxPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgwPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5Pg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnRpbWU8L2FlPg0KKwkJCQk8YWU+c2hvcnQ8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDEyIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTExPC9hZT4NCisJCQkJCTxhZT4yMzE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODE8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+dGltZTwvYWU+DQorCQkJCTxhZT5zaG9ydDwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMTMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41OTM8L2FlPg0KKwkJCQkJPGFlPjIzMTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmZsb2F0PC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT4wPC9hZT4NCisJCQkJCTxhZT45OTk5Ljk5OTk8L2FlPg0KKwkJCQk8L3JhbmdlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8Y2hlY2sgc2lkPSJDSEVDSzMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yODwvYWU+DQorCQkJCQk8YWU+Mjc3PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIyPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkhlbHZldGljYTwvYWU+DQorCQkJCTxhZT4xODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvY2hlY2s+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDE0Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MjY5PC9hZT4NCisJCQkJCTxhZT4yNzY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5kYXRlPC9hZT4NCisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4NCisJCQkJPC90ZW1wbGF0ZT4NCisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+Q291cmllcjwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMTUiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4zNTA8L2FlPg0KKwkJCQkJPGFlPjI3NjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmRhdGU8L2FlPg0KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPg0KKwkJCQk8L3RlbXBsYXRlPg0KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5Db3VyaWVyPC9hZT4NCisJCQkJPGFlPjg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQxNiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjQzMTwvYWU+DQorCQkJCQk8YWU+Mjc2PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgwPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5Pg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnRpbWU8L2FlPg0KKwkJCQk8YWU+c2hvcnQ8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDE3Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTExPC9hZT4NCisJCQkJCTxhZT4yNzY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODE8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+dGltZTwvYWU+DQorCQkJCTxhZT5zaG9ydDwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMTgiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41OTM8L2FlPg0KKwkJCQkJPGFlPjI3NjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmZsb2F0PC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT4wPC9hZT4NCisJCQkJCTxhZT45OTk5Ljk5OTk8L2FlPg0KKwkJCQk8L3JhbmdlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8Y2hlY2sgc2lkPSJDSEVDSzQiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yODwvYWU+DQorCQkJCQk8YWU+MzIyPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIyPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkhlbHZldGljYTwvYWU+DQorCQkJCTxhZT4xODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvY2hlY2s+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDE5Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MjY5PC9hZT4NCisJCQkJCTxhZT4zMjE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5kYXRlPC9hZT4NCisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4NCisJCQkJPC90ZW1wbGF0ZT4NCisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+Q291cmllcjwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMjAiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4zNTA8L2FlPg0KKwkJCQkJPGFlPjMyMTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmRhdGU8L2FlPg0KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPg0KKwkJCQk8L3RlbXBsYXRlPg0KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5Db3VyaWVyPC9hZT4NCisJCQkJPGFlPjg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQyMSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjQzMTwvYWU+DQorCQkJCQk8YWU+MzIxPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjc5PC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5Pg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnRpbWU8L2FlPg0KKwkJCQk8YWU+c2hvcnQ8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDIyIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTExPC9hZT4NCisJCQkJCTxhZT4zMjE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODE8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+dGltZTwvYWU+DQorCQkJCTxhZT5zaG9ydDwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMjMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41OTM8L2FlPg0KKwkJCQkJPGFlPjMyMTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmZsb2F0PC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT4wPC9hZT4NCisJCQkJCTxhZT45OTk5Ljk5OTk8L2FlPg0KKwkJCQk8L3JhbmdlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8Y2hlY2sgc2lkPSJDSEVDSzUiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yODwvYWU+DQorCQkJCQk8YWU+MzY3PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIyPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkhlbHZldGljYTwvYWU+DQorCQkJCTxhZT4xODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvY2hlY2s+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDI0Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MjY5PC9hZT4NCisJCQkJCTxhZT4zNjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5kYXRlPC9hZT4NCisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4NCisJCQkJPC90ZW1wbGF0ZT4NCisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+Q291cmllcjwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMjUiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4zNTA8L2FlPg0KKwkJCQkJPGFlPjM2NjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmRhdGU8L2FlPg0KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPg0KKwkJCQk8L3RlbXBsYXRlPg0KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5Db3VyaWVyPC9hZT4NCisJCQkJPGFlPjg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQyNiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjQzMTwvYWU+DQorCQkJCQk8YWU+MzY2PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgwPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5Pg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnRpbWU8L2FlPg0KKwkJCQk8YWU+c2hvcnQ8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDI3Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTExPC9hZT4NCisJCQkJCTxhZT4zNjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODE8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+dGltZTwvYWU+DQorCQkJCTxhZT5zaG9ydDwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMjgiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41OTM8L2FlPg0KKwkJCQkJPGFlPjM2NjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmZsb2F0PC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT4wPC9hZT4NCisJCQkJCTxhZT45OTk5Ljk5OTk8L2FlPg0KKwkJCQk8L3JhbmdlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8Y2hlY2sgc2lkPSJDSEVDSzYiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xMjE8L2FlPg0KKwkJCQkJPGFlPjQxMjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xNTwvYWU+DQorCQkJCQk8YWU+MTQ8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPm9mZjwvdmFsdWU+DQorCQkJPGFjdGl2ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+b2ZmPC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAib24iIDogIm9mZiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvYWN0aXZlPg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWR3cml0ZTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkodmFsdWUgPT0gIm9uIikgPyAicmVhZG9ubHkiIDogInJlYWR3cml0ZSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxyYWRpb19jaGVjayBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCSgoQ0hFQ0s4LnZhbHVlID09ICJvbiIpIHx8IChDSEVDSzcudmFsdWUgPT0gIm9uIikpID8gc2V0KCJ2YWx1ZSIsICJvZmYiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L3JhZGlvX2NoZWNrPg0KKwkJPC9jaGVjaz4NCisJCTxjaGVjayBzaWQ9IkNIRUNLNyI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjEyMTwvYWU+DQorCQkJCQk8YWU+NDM4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE1PC9hZT4NCisJCQkJCTxhZT4xNDwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkhlbHZldGljYTwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8dmFsdWU+b2ZmPC92YWx1ZT4NCisJCQk8YWN0aXZlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5vZmY8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJvbiIgOiAib2ZmIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9hY3RpdmU+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZHdyaXRlPC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCSh2YWx1ZSA9PSAib24iKSA/ICJyZWFkb25seSIgOiAicmVhZHdyaXRlIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPHJhZGlvX2NoZWNrIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKChDSEVDSzgudmFsdWUgPT0gIm9uIikgfHwgKENIRUNLNi52YWx1ZSA9PSAib24iKSkgPyBzZXQoInZhbHVlIiwgIm9mZiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvcmFkaW9fY2hlY2s+DQorCQk8L2NoZWNrPg0KKwkJPGNoZWNrIHNpZD0iQ0hFQ0s4Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTE5PC9hZT4NCisJCQkJCTxhZT40MTI8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MTU8L2FlPg0KKwkJCQkJPGFlPjE0PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT5vZmY8L3ZhbHVlPg0KKwkJCTxhY3RpdmUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPm9mZjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm9uIiA6ICJvZmYiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2FjdGl2ZT4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkd3JpdGU8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKHZhbHVlID09ICJvbiIpID8gInJlYWRvbmx5IiA6ICJyZWFkd3JpdGUiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8cmFkaW9fY2hlY2sgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoKENIRUNLNi52YWx1ZSA9PSAib24iKSB8fCAoQ0hFQ0s3LnZhbHVlID09ICJvbiIpKSA/IHNldCgidmFsdWUiLCAib2ZmIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9yYWRpb19jaGVjaz4NCisJCTwvY2hlY2s+DQorCQk8Y2hlY2sgc2lkPSJDSEVDSzkiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yODwvYWU+DQorCQkJCQk8YWU+NDk1PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIyPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkhlbHZldGljYTwvYWU+DQorCQkJCTxhZT4xODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvY2hlY2s+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDI5Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MjY5PC9hZT4NCisJCQkJCTxhZT40OTg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5kYXRlPC9hZT4NCisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4NCisJCQkJPC90ZW1wbGF0ZT4NCisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+Q291cmllcjwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMzAiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4zNTA8L2FlPg0KKwkJCQkJPGFlPjQ5ODwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MTwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmRhdGU8L2FlPg0KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPg0KKwkJCQk8L3RlbXBsYXRlPg0KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5Db3VyaWVyPC9hZT4NCisJCQkJPGFlPjg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQzMSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjQzMjwvYWU+DQorCQkJCQk8YWU+NDk4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjc4PC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5Pg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnRpbWU8L2FlPg0KKwkJCQk8YWU+c2hvcnQ8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDMyIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTExPC9hZT4NCisJCQkJCTxhZT40OTg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+dGltZTwvYWU+DQorCQkJCTxhZT5zaG9ydDwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMzMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41OTI8L2FlPg0KKwkJCQkJPGFlPjQ5ODwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MTwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmZsb2F0PC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT4wPC9hZT4NCisJCQkJCTxhZT45OTk5Ljk5OTk8L2FlPg0KKwkJCQk8L3JhbmdlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8Y2hlY2sgc2lkPSJDSEVDSzEwIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+Mjg8L2FlPg0KKwkJCQkJPGFlPjU0MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMjwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPg0KKwkJCQk8YWU+MTg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2NoZWNrPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQzNCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjI2OTwvYWU+DQorCQkJCQk8YWU+NTQzPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgwPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5kYXRlPC9hZT4NCisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4NCisJCQkJPC90ZW1wbGF0ZT4NCisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkNvdXJpZXI8L2FlPg0KKwkJCQk8YWU+ODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDM1Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MzUwPC9hZT4NCisJCQkJCTxhZT41NDM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODE8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmRhdGU8L2FlPg0KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPg0KKwkJCQk8L3RlbXBsYXRlPg0KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+Q291cmllcjwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMzYiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT40MzI8L2FlPg0KKwkJCQkJPGFlPjU0MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT43ODwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnRpbWU8L2FlPg0KKwkJCQk8YWU+c2hvcnQ8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQzNyI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjUxMTwvYWU+DQorCQkJCQk8YWU+NTQzPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgwPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5Pg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+dGltZTwvYWU+DQorCQkJCTxhZT5zaG9ydDwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDM4Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTkyPC9hZT4NCisJCQkJCTxhZT41NDM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODE8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmZsb2F0PC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT4wPC9hZT4NCisJCQkJCTxhZT45OTk5Ljk5OTk8L2FlPg0KKwkJCQk8L3JhbmdlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxMSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjI4PC9hZT4NCisJCQkJCTxhZT41OTE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MjI8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4NCisJCQkJPGFlPjE4PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9jaGVjaz4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMzkiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yNjk8L2FlPg0KKwkJCQkJPGFlPjU5MDwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+ZGF0ZTwvYWU+DQorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+DQorCQkJCTwvdGVtcGxhdGU+DQorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5Db3VyaWVyPC9hZT4NCisJCQkJPGFlPjg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQ0MCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjM1MDwvYWU+DQorCQkJCQk8YWU+NTkwPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgxPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5kYXRlPC9hZT4NCisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4NCisJCQkJPC90ZW1wbGF0ZT4NCisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkNvdXJpZXI8L2FlPg0KKwkJCQk8YWU+ODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDQxIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NDMyPC9hZT4NCisJCQkJCTxhZT41OTA8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+Nzg8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT50aW1lPC9hZT4NCisJCQkJPGFlPnNob3J0PC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxENDIiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41MTE8L2FlPg0KKwkJCQkJPGFlPjU5MDwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnRpbWU8L2FlPg0KKwkJCQk8YWU+c2hvcnQ8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQ0MyI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjU5MjwvYWU+DQorCQkJCQk8YWU+NTkwPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgxPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5mbG9hdDwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTxyYW5nZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+MDwvYWU+DQorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4NCisJCQkJPC9yYW5nZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxjaGVjayBzaWQ9IkNIRUNLMTIiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42ODA8L2FlPg0KKwkJCQkJPGFlPjMyNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xNTwvYWU+DQorCQkJCQk8YWU+MTQ8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2NoZWNrPg0KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxMyI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjY4OTwvYWU+DQorCQkJCQk8YWU+NDA0PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE1PC9hZT4NCisJCQkJCTxhZT4xNDwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkhlbHZldGljYTwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8YWN0aXZlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5vZmY8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTIudmFsdWUgPT0gIm9uIikgPyAib24iIDogIm9mZiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvYWN0aXZlPg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWR3cml0ZTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkodmFsdWUgPT0gIm9uIikgPyAicmVhZG9ubHkiIDogInJlYWR3cml0ZSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxyYWRpb19jaGVjayBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCSgoQ0hFQ0sxNC52YWx1ZSA9PSAib24iKSB8fCAoQ0hFQ0sxNS52YWx1ZSA9PSAib24iKSkgPyBzZXQoInZhbHVlIiwgIm9mZiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvcmFkaW9fY2hlY2s+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2NoZWNrPg0KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxNCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjY4OTwvYWU+DQorCQkJCQk8YWU+NDI4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE1PC9hZT4NCisJCQkJCTxhZT4xNDwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkhlbHZldGljYTwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8YWN0aXZlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5vZmY8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTIudmFsdWUgPT0gIm9uIikgPyAib24iIDogIm9mZiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvYWN0aXZlPg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWR3cml0ZTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkodmFsdWUgPT0gIm9uIikgPyAicmVhZG9ubHkiIDogInJlYWR3cml0ZSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxyYWRpb19jaGVjayBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCSgoQ0hFQ0sxNS52YWx1ZSA9PSAib24iKSB8fCAoQ0hFQ0sxMy52YWx1ZSA9PSAib24iKSkgPyBzZXQoInZhbHVlIiwgIm9mZiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvcmFkaW9fY2hlY2s+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2NoZWNrPg0KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxNSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjY4OTwvYWU+DQorCQkJCQk8YWU+NDg1PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE1PC9hZT4NCisJCQkJCTxhZT4xNDwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkhlbHZldGljYTwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8YWN0aXZlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5vZmY8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTIudmFsdWUgPT0gIm9uIikgPyAib24iIDogIm9mZiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvYWN0aXZlPg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWR3cml0ZTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkodmFsdWUgPT0gIm9uIikgPyAicmVhZG9ubHkiIDogInJlYWR3cml0ZSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxyYWRpb19jaGVjayBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCSgoQ0hFQ0sxNC52YWx1ZSA9PSAib24iKSB8fCAoQ0hFQ0sxMy52YWx1ZSA9PSAib24iKSkgPyBzZXQoInZhbHVlIiwgIm9mZiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvcmFkaW9fY2hlY2s+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2NoZWNrPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQ0NCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjQyPC9hZT4NCisJCQkJCTxhZT42NTc8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODQ2PC9hZT4NCisJCQkJCTxhZT41NzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5zdHJpbmc8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQ0NSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjQyPC9hZT4NCisJCQkJCTxhZT43MTI8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODQ2PC9hZT4NCisJCQkJCTxhZT4zMTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+c3RyaW5nPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoQ0hFQ0s4LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLOC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGJ1dHRvbiBzaWQ9IkJVVFRPTjEiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yNTA8L2FlPg0KKwkJCQkJPGFlPjgzOTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4zNDY8L2FlPg0KKwkJCQkJPGFlPjI3PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dHlwZT5zaWduYXR1cmU8L3R5cGU+DQorCQkJPHNpZ25hdHVyZT5TSUdOQVRVUkUxPC9zaWduYXR1cmU+DQorCQkJPHNpZ25lcj48L3NpZ25lcj4NCisJCQk8c2lnbm9wdGlvbnMgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+b21pdDwvYWU+DQorCQkJCTxhZT50cmlnZ2VyaXRlbTwvYWU+DQorCQkJPC9zaWdub3B0aW9ucz4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+ODwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8c2lnbml0ZW1yZWZzIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPm9taXQ8L2FlPg0KKwkJCQk8YWU+UEFHRTEuQ0hFQ0sxNjwvYWU+DQorCQkJCTxhZT5QQUdFMS5DSEVDSzE3PC9hZT4NCisJCQkJPGFlPlBBR0UxLkZJRUxENDc8L2FlPg0KKwkJCQk8YWU+UEFHRTEuQlVUVE9OMjwvYWU+DQorCQkJCTxhZT5TSUdOQVRVUkUyPC9hZT4NCisJCQkJPGFlPlBBR0UxLkZJRUxENDg8L2FlPg0KKwkJCTwvc2lnbml0ZW1yZWZzPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+c3RyaW5nPC9hZT4NCisJCQkJPGFlPm1hbmRhdG9yeTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPHZhbHVlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJc2lnbmVyDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L3ZhbHVlPg0KKwkJPC9idXR0b24+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDQ2Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NjU1PC9hZT4NCisJCQkJCTxhZT44NDA8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MTU1PC9hZT4NCisJCQkJCTxhZT4yNzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTxlZGl0c3RhdGU+cmVhZG9ubHk8L2VkaXRzdGF0ZT4NCisJCQk8dmFsdWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQlVUVE9OMS52YWx1ZSAhPSAiIikgPyAiKiIgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC92YWx1ZT4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmRhdGU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+DQorCQkJPC9mb3JtYXQ+DQorCQk8L2ZpZWxkPg0KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxNiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjM2MjwvYWU+DQorCQkJCQk8YWU+ODczPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIyPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkhlbHZldGljYTwvYWU+DQorCQkJCTxhZT4xODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8cmFkaW9fYmVoYXZpb3VyIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTcudmFsdWUgPT0gIm9uIikgPyBzZXQoInZhbHVlIiwgIm9mZiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvcmFkaW9fYmVoYXZpb3VyPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9jaGVjaz4NCisJCTxjaGVjayBzaWQ9IkNIRUNLMTciPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42MDQ8L2FlPg0KKwkJCQkJPGFlPjg3MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMjwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPg0KKwkJCQk8YWU+MTg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHJhZGlvX2JlaGF2aW91ciBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzE2LnZhbHVlID09ICJvbiIpID8gc2V0KCJ2YWx1ZSIsICJvZmYiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L3JhZGlvX2JlaGF2aW91cj4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvY2hlY2s+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDQ3Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NDE8L2FlPg0KKwkJCQkJPGFlPjkxNzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT43NzA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8Rm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnN0cmluZzwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKENIRUNLMTcudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCINCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L0Zvcm1hdD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxNy52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGJ1dHRvbiBzaWQ9IkJVVFRPTjIiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xMzI8L2FlPg0KKwkJCQkJPGFlPjkzOTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT40NjY8L2FlPg0KKwkJCQkJPGFlPjI3PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dHlwZT5zaWduYXR1cmU8L3R5cGU+DQorCQkJPHNpZ25hdHVyZT5TSUdOQVRVUkUyPC9zaWduYXR1cmU+DQorCQkJPHNpZ25lcj48L3NpZ25lcj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnN0cmluZzwvYWU+DQorCQkJCTxhZT5tYW5kYXRvcnk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxzaWdub3B0aW9ucyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5vbWl0PC9hZT4NCisJCQkJPGFlPnRyaWdnZXJpdGVtPC9hZT4NCisJCQk8L3NpZ25vcHRpb25zPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJc2lnbmVyDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L3ZhbHVlPg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCTwvYnV0dG9uPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQ0OCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjY1NjwvYWU+DQorCQkJCQk8YWU+OTQwPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE1NTwvYWU+DQorCQkJCQk8YWU+Mjc8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8ZWRpdHN0YXRlPnJlYWRvbmx5PC9lZGl0c3RhdGU+DQorCQkJPHZhbHVlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKEJVVFRPTjIudmFsdWUgIT0gIiIpID8gIioiIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvdmFsdWU+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5kYXRlPC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPg0KKwkJCTwvZm9ybWF0Pg0KKwkJPC9maWVsZD4NCisJCTxzcGFjZXIgc2lkPSJ2ZmRfc3BhY2VyIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+OTYwPC9hZT4NCisJCQkJCTxhZT4xMjYwPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9zcGFjZXI+DQorCTwvcGFnZT4NCis8L1hGREw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9jb20vcHVyZWVkZ2UvTGVhdmVSZXF1ZXN0LnhtbCBiL2RhdGEvY29tL3B1cmVlZGdlL0xlYXZlUmVxdWVzdC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQyZjRkOAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvY29tL3B1cmVlZGdlL0xlYXZlUmVxdWVzdC54bWwKQEAgLTAsMCArMSw0MDAwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4NCis8WEZETCB2ZXJzaW9uPSI0LjAuMSI+DQorCTx2ZmRfdGl0bGU+U0Y3MTwvdmZkX3RpdGxlPg0KKwk8dmZkX2F1dGhvcj5UaG9tYXMgTW9ocjwvdmZkX2F1dGhvcj4NCisJPHZmZF9yZXZpc2lvbj40LzYvOTg8L3ZmZF9yZXZpc2lvbj4NCisJPHZmZF9kYXRlPjQvNi85ODwvdmZkX2RhdGU+DQorCTxzYXZlZm9ybWF0PmFwcGxpY2F0aW9uL3gteGZkbDwvc2F2ZWZvcm1hdD4NCisJPHRyYW5zbWl0Zm9ybWF0PmFwcGxpY2F0aW9uL3gteGZkbDwvdHJhbnNtaXRmb3JtYXQ+DQorCTxmb3JtaWQgY29udGVudD0iYXJyYXkiPg0KKwkJPHZlcnNpb24+MS4wLjA8L3ZlcnNpb24+DQorCTwvZm9ybWlkPg0KKwk8cGFnZSBzaWQ9IlBBR0UxIj4NCisJCTx2ZmRfcGFnZXNpemU+bGV0dGVyPC92ZmRfcGFnZXNpemU+DQorCQk8dmZkX3BhZ2VkcGk+MTIwPC92ZmRfcGFnZWRwaT4NCisJCTx2ZmRfcHJpbnRzaXplPjguMDsxMC41PC92ZmRfcHJpbnRzaXplPg0KKwkJPGxhYmVsPlBBR0UxPC9sYWJlbD4NCisJCTxiZ2NvbG9yIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQk8YWU+MjM1PC9hZT4NCisJCQk8YWU+MjM1PC9hZT4NCisJCQk8YWU+MjM1PC9hZT4NCisJCTwvYmdjb2xvcj4NCisJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJPGFlPkNvdXJpZXI8L2FlPg0KKwkJCTxhZT45PC9hZT4NCisJCQk8YWU+cGxhaW48L2FlPg0KKwkJPC9mb250aW5mbz4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMSI+DQorCQkJPHZhbHVlPlJFUVVFU1QgRk9SIExFQVZFIE9SIEFQUFJPVkVEIEFCU0VOQ0U8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPg0KKwkJCQk8YWU+MTQ8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+DQorCQkJPHNpemUgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+NjE8L2FlPg0KKwkJCQk8YWU+MTwvYWU+DQorCQkJPC9zaXplPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xOTwvYWU+DQorCQkJCQk8YWU+MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44NzQ8L2FlPg0KKwkJCQkJPGFlPjM0PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDIiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yMDwvYWU+DQorCQkJCQk8YWU+MzU8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+Nzk8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+MS4gIE5BTUU8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMyI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjEwMDwvYWU+DQorCQkJCQk8YWU+MzU8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MjE4PC9hZT4NCisJCQkJCTxhZT4yNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPihMYXN0LCBGaXJzdCwgTWlkZGxlIEluaXRpYWwpPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCQk8YWU+aXRhbGljPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMNCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjUxMTwvYWU+DQorCQkJCQk8YWU+MzU8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+Mzg1PC9hZT4NCisJCQkJCTxhZT4yNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPjIuICBFTVBMT1lFRSBPUiBTT0NJQUwgU0VDVVJJVFkgTlVNQkVSPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDUiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yMDwvYWU+DQorCQkJCQk8YWU+ODU8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MTcwPC9hZT4NCisJCQkJCTxhZT4yNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPjMuICBPUkdBTklaQVRJT048L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMNiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjIwPC9hZT4NCisJCQkJCTxhZT4xMzU8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MjQ4PC9hZT4NCisJCQkJCTxhZT4yNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPjQuICBUWVBFIE9GIExFQVZFL0FCU0VOQ0U8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMNyI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjMyPC9hZT4NCisJCQkJCTxhZT4xNTU8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MjM2PC9hZT4NCisJCQkJCTxhZT4yNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPihDaGVjayBhcHByb3ByaWF0ZSBib3goZXMpIGJlbG93Lik8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT45PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQkJPGFlPml0YWxpYzwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDgiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yNzA8L2FlPg0KKwkJCQkJPGFlPjE1ODwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT40ODwvYWU+DQorCQkJCQk8YWU+MjI8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5Gcm9tOjwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjk8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDkiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yNjg8L2FlPg0KKwkJCQkJPGFlPjEzNTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xNjM8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+RGF0ZTwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5Pg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMTAiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4zNTI8L2FlPg0KKwkJCQkJPGFlPjE1ODwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT40ODwvYWU+DQorCQkJCQk8YWU+MjI8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5Ubzo8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT45PC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUwxMSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjQzMjwvYWU+DQorCQkJCQk8YWU+MTU4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjQ4PC9hZT4NCisJCQkJCTxhZT4yMjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPkZyb206PC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+OTwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMTIiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT40MzA8L2FlPg0KKwkJCQkJPGFlPjEzNTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xNjM8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+VGltZTwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5Pg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMTMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41MTM8L2FlPg0KKwkJCQkJPGFlPjE1ODwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT40ODwvYWU+DQorCQkJCQk8YWU+MjI8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5Ubzo8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT45PC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUwxNCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjU5MjwvYWU+DQorCQkJCQk8YWU+MTM0PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgwPC9hZT4NCisJCQkJCTxhZT40NjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPlRvdGFsDQorSG91cnM8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDE1Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NjQ8L2FlPg0KKwkJCQkJPGFlPjE4NjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMDU8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+QWNjcnVlZCBBbm51YWwgTGVhdmU8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMTYiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42NDwvYWU+DQorCQkJCQk8YWU+MjMyPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIwNTwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5SZXN0b3JlZCBBbm51YWwgTGVhdmU8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMTciPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42NDwvYWU+DQorCQkJCQk8YWU+Mjc4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIwNTwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5BZHZhbmNlIEFubnVhbCBMZWF2ZTwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUwxOCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjY0PC9hZT4NCisJCQkJCTxhZT4zMjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MjA1PC9hZT4NCisJCQkJCTxhZT4yNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPkFjY3VyZWQgU2ljayBMZWF2ZTwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUwxOSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjY0PC9hZT4NCisJCQkJCTxhZT4zNjg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MjA1PC9hZT4NCisJCQkJCTxhZT4yNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPkFkdmFuY2UgU2ljayBMZWF2ZTwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUwyMCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjE5PC9hZT4NCisJCQkJCTxhZT40MDk8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+UHVycG9zZTo8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMjEiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xNDI8L2FlPg0KKwkJCQkJPGFlPjQxMDwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPk1lZGljYWwvZGVudGFsL29wdGljYWwgRXhhbWluYXRpb24gb2YgcmVxdWVzdGluZyBlbXBsb3llZTwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjk8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHNpemUgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+NDU8L2FlPg0KKwkJCQk8YWU+MTwvYWU+DQorCQkJPC9zaXplPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMjIiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41MzU8L2FlPg0KKwkJCQkJPGFlPjQxMDwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT40NjwvYWU+DQorCQkJCQk8YWU+MjQ8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5PdGhlcjwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjk8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUwyMyI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjE0MjwvYWU+DQorCQkJCQk8YWU+NDM1PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjQzOTwvYWU+DQorCQkJCQk8YWU+NDI8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5DYXJlIG9mIGZhbWlseSBtZW1iZXIvYmVyZWF2ZW1lbnQsIGluY2x1ZGluZyBtZWRpY2FsL2RlbnRhbC9vcHRpY2FsIGV4YW1pbmF0aW9uIG9mIGZhbWlseSBtZW1iZXI8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT45PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMjQiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42NDwvYWU+DQorCQkJCQk8YWU+NDk4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIwNDwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5Db21wZW5zYXRvcnkgVGltZSBPZmY8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMjUiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42NDwvYWU+DQorCQkJCQk8YWU+NTM1PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE4MDwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5PdGhlciBQYWlkIEFic2VuY2U8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMjYiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42NDwvYWU+DQorCQkJCQk8YWU+NTU2PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE1ODwvYWU+DQorCQkJCQk8YWU+MjQ8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT4oU3BlY2lmeSBpbiBSZW1hcmtzKTwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjk8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCQk8YWU+aXRhbGljPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMjciPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42NDwvYWU+DQorCQkJCQk8YWU+NTkzPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE5MjwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5MZWF2ZSBXaXRob3V0IFBheTwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUwyOCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjY3NjwvYWU+DQorCQkJCQk8YWU+MTM1PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIxNTwvYWU+DQorCQkJCQk8YWU+NDY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT41LiBGQU1JTFkgQU5EDQorCU1FRElDQUwgTEVBVkU8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMjkiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42Nzc8L2FlPg0KKwkJCQkJPGFlPjE4MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMTQ8L2FlPg0KKwkJCQkJPGFlPjEyNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPklmIGFubnVhbCBsZWF2ZSwgc2ljayBsZWF2ZSwgb3IgbGVhdmUgd2l0aG91dCBwYXkgd2lsbCBiZSB1c2VkIHVuZGVyIHRoZSBGYW1pbHkgYW5kIE1lZGljYWwgTGVhdmUgQWN0IG9mIDE5OTMsIHBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUwzMCI+DQorCQkJPHZhbHVlPkkgaGVyZWJ5IGludm9rZSBteTwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjcwMDwvYWU+DQorCQkJCQk8YWU+MzIyPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE5MTwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMzEiPg0KKwkJCTx2YWx1ZT5lbnRpdGxlbWVudCBGYW1pbHkgYW5kPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+Njc1PC9hZT4NCisJCQkJCTxhZT4zNDI8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MjE2PC9hZT4NCisJCQkJCTxhZT4yNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUwzMiI+DQorCQkJPHZhbHVlPk1lZGljYWwgTGVhdmUgZm9yOjwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjY3NTwvYWU+DQorCQkJCQk8YWU+MzY0PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIxNTwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMzMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT43MDg8L2FlPg0KKwkJCQkJPGFlPjQwMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xODE8L2FlPg0KKwkJCQkJPGFlPjIyPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+QmlydGgvQWRvcHRpb24vRm9zdGVyIENhcmU8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMzQiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT43MDg8L2FlPg0KKwkJCQkJPGFlPjQyNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xODI8L2FlPg0KKwkJCQkJPGFlPjM4PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+U2VyaW91cyBIZWF0aCBDb25kaXRpb24gb2Ygc3BvdXNlLCBTb24sIERhdWdodGVyLCBvciBQYXJlbnQ8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMzUiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT43MDg8L2FlPg0KKwkJCQkJPGFlPjQ4MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xODQ8L2FlPg0KKwkJCQkJPGFlPjIyPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+U2VyaW91cyBIZWFsdGggQ29uZGl0aW9uIG9mIFNlbGY8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMzYiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42NzU8L2FlPg0KKwkJCQkJPGFlPjUzNzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPkNvbnRhY3QgeW91ciBzdXBlcnZpc29yIGFuZC9vciBvdXIgcGVyc29ubmVsIG9mZmljZSB0byBvYnRhaW4gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIGVudGl0bGVtZW50cyBhbmQgcmVzcG9uc2liaWxpdGllcyB1bmRlciB0aGUgRmFtaWx5IGFuZCBNZWRpY2FsIExlYXZlIEFjdCBvZiAxOTkzLjwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHNpemUgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8YWU+NTwvYWU+DQorCQkJPC9zaXplPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMzciPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xOTwvYWU+DQorCQkJCQk8YWU+NjMwPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE5MjwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT42LiAgUkVNQVJLUzo8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMzgiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xOTwvYWU+DQorCQkJCQk8YWU+NzQ3PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE3MDwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT43LiAgQ0VSVElGSUNBVElPTjo8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMzkiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xNzg8L2FlPg0KKwkJCQkJPGFlPjc0NzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT43MTU8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+SSBoZXJlYnkgcmVxdWVzdCBsZWF2ZS9hcHByb3ZlZCBhYnNlbmNlIGZyb20gZHV0eSBhcyBpbmRpY2F0ZWQgYWJvdmUgYW5kIGNlcnRpZnkgdGhhdCBzdWNoIGxlYXZlL2Fic2VuY2U8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDQwIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTk8L2FlPg0KKwkJCQkJPGFlPjc2NzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44NzM8L2FlPg0KKwkJCQkJPGFlPjY2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+aXMgcmV1ZXN0ZWQgZnJvbSB0aGUgcHVycG9zZShzKSBpbmRpY2F0ZWQuIEkgdW5kZXJzdGFuZCB0aGF0IEkgbXVzdCBjb21wbHkgd2l0aCBteSBlbXBsb3lpbmcgYWdlbmN5J3MgcHJvY2VkdXJlcyBmb3IgcmVxdWVzdGluZyBsZWF2ZS9hcHByb3ZlZCBhYnNlbmNlIChhbmQgcHJvdmlkZSBhZGRpdGlvbmFsIGRvY3VtZW50aW9uLCBpbmNsdWRpbmcgbWVkaWNhbCBjZXJ0aWZpY2F0aW9uLCBpZiByZXF1aXJlZCkgYW5kIHRoYXQgZmFsc2lmaWNhdGlvbiBvZiBpbmZvcm1hdGlvbiBvbiB0aGlzIGZvcm0gbWF5IGJlIGdyb3VuZHMgZm9yIGRpc2NpcGxpbmFyeSBhY3Rpb24sIGluY2x1ZGluZyByZW1vdmFsLjwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMNDEiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xOTwvYWU+DQorCQkJCQk8YWU+ODQxPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIzMDwvYWU+DQorCQkJCQk8YWU+Mjc8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5FTVBMT1lFRSBTSUdOQVRVUkU8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMTwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMNDIiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41OTc8L2FlPg0KKwkJCQkJPGFlPjg0MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT41ODwvYWU+DQorCQkJCQk8YWU+Mjc8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5EQVRFPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTE8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDQzIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTk8L2FlPg0KKwkJCQkJPGFlPjg3NzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4zMzU8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+OC4gIE9GRklDQUwgQUNUSU9OIE9OIFJFUVVFU1Q6PC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDQ0Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NDE8L2FlPg0KKwkJCQkJPGFlPjg5NzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPihJZiBkaXNhcHByb3ZlZCwgZ2l2ZSByZWFzb24uIElmIGFubnVhbCBsZWF2ZSwgaW5pdGlhdGUgYWN0aW9uIHRvIHJlc2NoZWR1bGUuKTwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTxzaXplIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPjUzPC9hZT4NCisJCQkJPGFlPjE8L2FlPg0KKwkJCTwvc2l6ZT4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDQ1Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+Mzg4PC9hZT4NCisJCQkJCTxhZT44NzU8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MTkyPC9hZT4NCisJCQkJCTxhZT4yNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPkFQUFJPVkVEPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDQ2Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NjM4PC9hZT4NCisJCQkJCTxhZT44NzU8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MTkyPC9hZT4NCisJCQkJCTxhZT4yNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPkRJU0FQUFJPVkVEPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDQ3Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTk8L2FlPg0KKwkJCQkJPGFlPjk0MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xMTI8L2FlPg0KKwkJCQkJPGFlPjI3PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+U0lHTkFUVVJFPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTE8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDQ4Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTk3PC9hZT4NCisJCQkJCTxhZT45NDA8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+NTg8L2FlPg0KKwkJCQkJPGFlPjI3PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+REFURTwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjExPC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUw0OSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjE3PC9hZT4NCisJCQkJCTxhZT45NzA8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODc2PC9hZT4NCisJCQkJCTxhZT4yNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPlBSSVZBQ1kgQUNUIFNUQVRFTUVOVDwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5Pg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMNTAiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xOTwvYWU+DQorCQkJCQk8YWU+OTk2PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjg3MzwvYWU+DQorCQkJCQk8YWU+MTM0PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+U2VjdGlvbiA2MzExIG9mIHRpdGxlIDUsIFVuaXRlZCBTdGF0ZXMgQ29kZSwgYXV0aG9yaXplcyBjb2xsZWN0aW9uIG9mIHRoaXMgaW5mb3JtYXRpb24uIFRoZSBwcmltYXJ5IHVzZSBvZiB0aGlzIGluZm9ybWF0aW9uIGlzIGJ5IG1hbmFnZW1lbnQgYW5kIHlvdXIgcGF5cm9sbCBvZmZpY2UgdG8gYXBwcm92ZSBhbmQgcmVjb3JkIHlvdXIgdXNlIG9mIGxlYXZlLiBBZGRpdGlvbmFsIGRpc2Nsb3N1cmVzIG9mIHRoZSBpbmZvcm1hdGlvbiBtYXQgYmU6IFRvIHRoZSBEZXBhcnRtZW50IG9mIGxhYm9yIHdoZW4gcHJvY2Vzc2luZyBhIGNsYWltIGZvciBjb21wZW5zYXRpb24gcmVnYXJkaW5nIGEgam9iIGNvbm5lY3RlZCBpbmp1cnkgb3IgaWxsbmVzczsgdG8gYSBTdGF0ZSB1bmVtcGxveW1lbnQgY29tcGVuc2F0aW9uIG9mZmljZSByZWdhcmRpbmcgYSBjbGFpbTsgdGhlIEZlZGVyYWwgTGlmZSBJbnN1cmFuY2Ugb3IgSGVhbHRoIEJlbmVmaXRzIGNhcnJpZXMgcmVnYXJkaW5nIGEgY2xhaW07IHRvIGEgRmVkZXJhbCBTdGF0ZSwgb3IgbG9jYWwgbGF3IGVuZm9yY2VtZW50IGFnZW5jeSB3aGVuIHlvdXIgYWdlbmN5IGJlY29tZXMgYXdhcmUgb2YgYSB2aW9sYXRpb24gb3IgcG9zc2libGUgdmlvbGF0aW9uIG9mIGNpdmlsIG9yIGNyaW1pbmFsIGxhdzsgdG8gYSBGZWRlcmFsIGFnZW5jeSB3aGVuIGNvbmR1Y3RpbmcgYW4gaW52ZXN0aWdhdGlvbiBmb3IgZW1wbG95bWVudCBvciBTZXJ2aWNlcyBBZG1pbmlzdHJhdGlvbiBpbiBjb25uZWN0aW9uIHdpdGggaXRzIHJlc3BvbnNpYmlsaXRpZXMgZm9yIHJlY29yZHMgbWFuYWdlbWVudC4NCisNCitXaGVyZSAgdGhlIEVtcGxveWVlIGlkZW50aWZpY2F0aW9uIG51bWJlciBpcyB5b3VyIFNvY2lhbCBTZWN1cml0eSBOdW1iZXIsIGNvbGxlY3Rpb24gb2YgdGhpcyBpbmZvcm1hdGlvbiBpcyBhdXRob3JpemVkIGJ5IEV4ZWN1dGl2ZSBPcmRlciA5Mzk3LiBGdXJuaXNoaW5nIHRoZSBpbmZvcm1hdGlvbiBvbiB0aGlzIGZvcm0sIGluY2x1ZGluZyB5b3VyIFNvY2lhbCBTZWN1cml0eSBOdW1iZXIsIGlzIHZvbHVudGFyeSwgYnV0IHRvIGRvIHNvIG1heSByZXN1bHQgaW4gZGlzYXBwcm92YWwgcmVxdWVzdC48L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMNTEiPg0KKwkJCTx2YWx1ZT5JZiB5b3VyIGFnZW5jeSB1c2VzIHRoZSBpbmZvcm1hdGlvbiBmdXJuaXNoZWQgb24gdGhpcyBmb3JtIGZvciBwdXJwb3NlcyBvdGhlciB0aGFuIHRob3NlIGluZGljYXRlZCBhYm92ZSwgaXQgbWF5IHByb3ZpZGUgeW91IHdpdGggYW4gYWRkaXRpb25hbCBzdGF0ZW1lbnQgcmVmbGVjdGluZyB0aG9zZSBwdXJwb3Nlcy48L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT43PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xODwvYWU+DQorCQkJCQk8YWU+MTE0MDwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44NzU8L2FlPg0KKwkJCQkJPGFlPjIyPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDUyIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTg8L2FlPg0KKwkJCQkJPGFlPjExNjg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+NDIyPC9hZT4NCisJCQkJCTxhZT4zODwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPk5TTiA3NTQwLTAwMC03NTMtNTA2Nw0KK1BSRVZJT1VTIEVESVRJT04gTUFZIEJFIFVTRUQ8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMNTMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT40Mzg8L2FlPg0KKwkJCQkJPGFlPjExNjg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+NDU0PC9hZT4NCisJCQkJCTxhZT4zODwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPlNUQU5EQVJEIEZPUk0gNzEgKFJldi4gMTItOTcpDQorUFJFU0NSSUJFRCBCWSBPRkZJQ0UgT0YgUEVSU09OTkVMIE1BTkFHRU1FTlQsIDUgQ0ZSIFBBUlQgNjMwPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+ODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8anVzdGlmeT5yaWdodDwvanVzdGlmeT4NCisJCTwvbGFiZWw+DQorCQk8bGluZSBzaWQ9IkxJTkUxIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTc8L2FlPg0KKwkJCQkJPGFlPjMyPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjg3NjwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUyIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTc8L2FlPg0KKwkJCQkJPGFlPjgyPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjg3NjwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUzIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTc8L2FlPg0KKwkJCQkJPGFlPjEzMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44NzY8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FNCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjE3PC9hZT4NCisJCQkJCTxhZT4xNzk8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODc2PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCTwvbGluZT4NCisJCTxsaW5lIHNpZD0iTElORTUiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yNjg8L2FlPg0KKwkJCQkJPGFlPjIxODwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT40MDY8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FNiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjI2ODwvYWU+DQorCQkJCQk8YWU+MjYzPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjQwNjwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkU3Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTc8L2FlPg0KKwkJCQkJPGFlPjMxMTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT42NTc8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FOCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjI2ODwvYWU+DQorCQkJCQk8YWU+MzU0PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjQwNjwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkU5Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MjY4PC9hZT4NCisJCQkJCTxhZT4zOTg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+NDA2PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCTwvbGluZT4NCisJCTxsaW5lIHNpZD0iTElORTEwIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTc8L2FlPg0KKwkJCQkJPGFlPjQ4NDwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT42NTc8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FMTEiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xNzwvYWU+DQorCQkJCQk8YWU+NTMwPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjY1NzwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUxMiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjE3PC9hZT4NCisJCQkJCTxhZT41Nzg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+NjU3PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCTwvbGluZT4NCisJCTxsaW5lIHNpZD0iTElORTEzIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTc8L2FlPg0KKwkJCQkJPGFlPjYyNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44NzY8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FMTQiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xNzwvYWU+DQorCQkJCQk8YWU+NzQzPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjg3NjwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUxNSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjE3PC9hZT4NCisJCQkJCTxhZT44Njc8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODc2PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCTwvbGluZT4NCisJCTxsaW5lIHNpZD0iTElORTE2Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTc8L2FlPg0KKwkJCQkJPGFlPjk2NzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44NzY8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FMTciPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xNzwvYWU+DQorCQkJCQk8YWU+MTE2NDwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44NzY8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FMTgiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xNzwvYWU+DQorCQkJCQk8YWU+MzI8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCQk8YWU+MTEzMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUxOSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjUxMDwvYWU+DQorCQkJCQk8YWU+MzI8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCQk8YWU+NTE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FMjAiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT44OTI8L2FlPg0KKwkJCQkJPGFlPjMyPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQkJPGFlPjExMzM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FMjEiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yNjg8L2FlPg0KKwkJCQkJPGFlPjEzMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJCTxhZT4yNjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FMjIiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4zNDk8L2FlPg0KKwkJCQkJPGFlPjE3OTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJCTxhZT4yMjA8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FMjMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT40MzA8L2FlPg0KKwkJCQkJPGFlPjEzMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJCTxhZT4yNjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FMjQiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41MTA8L2FlPg0KKwkJCQkJPGFlPjE3OTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJCTxhZT4yMjA8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FMjUiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41OTI8L2FlPg0KKwkJCQkJPGFlPjEzMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJCTxhZT4yNjU8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FMjYiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42NzM8L2FlPg0KKwkJCQkJPGFlPjEzMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJCTxhZT40OTQ8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FMjciPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yNjg8L2FlPg0KKwkJCQkJPGFlPjQ4NDwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJCTxhZT4xNDM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FMjgiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4zNDk8L2FlPg0KKwkJCQkJPGFlPjQ4NDwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJCTxhZT4xNDM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FMjkiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT40MzE8L2FlPg0KKwkJCQkJPGFlPjQ4NDwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJCTxhZT4xNDM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FMzAiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41MTA8L2FlPg0KKwkJCQkJPGFlPjQ4NDwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJCTxhZT4xNDM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FMzEiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41OTE8L2FlPg0KKwkJCQkJPGFlPjQ4NDwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJCTxhZT4xNDM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQxIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MjA8L2FlPg0KKwkJCQkJPGFlPjU4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjQ4OTwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+c3RyaW5nPC9hZT4NCisJCQkJPGFlPm1hbmRhdG9yeTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPkpvaG4gUS4gUHVibGljPC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDIiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41Mzc8L2FlPg0KKwkJCQkJPGFlPjU4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjEyMzwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+c3RyaW5nPC9hZT4NCisJCQkJPGFlPm1hbmRhdG9yeTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPjEyMzQ1Njc4OTwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQzIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTk8L2FlPg0KKwkJCQkJPGFlPjEwOTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44NzI8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnN0cmluZzwvYWU+DQorCQkJCTxhZT5tYW5kYXRvcnk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTx2YWx1ZT5QdXJlRWRnZSBTb2x1dGlvbnMgSW5jLjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+Mjg8L2FlPg0KKwkJCQkJPGFlPjE5MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMjwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPg0KKwkJCQk8YWU+MTg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2NoZWNrPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQ0Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MjY5PC9hZT4NCisJCQkJCTxhZT4xODg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5kYXRlPC9hZT4NCisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4NCisJCQkJPC90ZW1wbGF0ZT4NCisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+Q291cmllcjwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxENSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjM1MDwvYWU+DQorCQkJCQk8YWU+MTg4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgwPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+ZGF0ZTwvYWU+DQorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+DQorCQkJCTwvdGVtcGxhdGU+DQorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkNvdXJpZXI8L2FlPg0KKwkJCQk8YWU+ODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDYiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT40MzE8L2FlPg0KKwkJCQkJPGFlPjE4ODwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT50aW1lPC9hZT4NCisJCQkJPGFlPnNob3J0PC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQ3Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTExPC9hZT4NCisJCQkJCTxhZT4xODg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODE8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+dGltZTwvYWU+DQorCQkJCTxhZT5zaG9ydDwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEOCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjU5MzwvYWU+DQorCQkJCQk8YWU+MTg4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgwPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+ZmxvYXQ8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8cmFuZ2UgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPjA8L2FlPg0KKwkJCQkJPGFlPjk5OTkuOTk5OTwvYWU+DQorCQkJCTwvcmFuZ2U+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxjaGVjayBzaWQ9IkNIRUNLMiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjI4PC9hZT4NCisJCQkJCTxhZT4yMzE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MjI8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4NCisJCQkJPGFlPjE4PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9jaGVjaz4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEOSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjI2OTwvYWU+DQorCQkJCQk8YWU+MjMxPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgwPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+ZGF0ZTwvYWU+DQorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+DQorCQkJCTwvdGVtcGxhdGU+DQorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkNvdXJpZXI8L2FlPg0KKwkJCQk8YWU+ODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDEwIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MzUwPC9hZT4NCisJCQkJCTxhZT4yMzE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5kYXRlPC9hZT4NCisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4NCisJCQkJPC90ZW1wbGF0ZT4NCisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+Q291cmllcjwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMTEiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT40MzE8L2FlPg0KKwkJCQkJPGFlPjIzMTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT50aW1lPC9hZT4NCisJCQkJPGFlPnNob3J0PC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQxMiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjUxMTwvYWU+DQorCQkJCQk8YWU+MjMxPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgxPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5Pg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnRpbWU8L2FlPg0KKwkJCQk8YWU+c2hvcnQ8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDEzIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTkzPC9hZT4NCisJCQkJCTxhZT4yMzE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5mbG9hdDwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTxyYW5nZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+MDwvYWU+DQorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4NCisJCQkJPC9yYW5nZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGNoZWNrIHNpZD0iQ0hFQ0szIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+Mjg8L2FlPg0KKwkJCQkJPGFlPjI3NzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMjwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPg0KKwkJCQk8YWU+MTg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2NoZWNrPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQxNCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjI2OTwvYWU+DQorCQkJCQk8YWU+Mjc2PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgwPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+ZGF0ZTwvYWU+DQorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+DQorCQkJCTwvdGVtcGxhdGU+DQorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkNvdXJpZXI8L2FlPg0KKwkJCQk8YWU+ODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDE1Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MzUwPC9hZT4NCisJCQkJCTxhZT4yNzY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5kYXRlPC9hZT4NCisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4NCisJCQkJPC90ZW1wbGF0ZT4NCisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+Q291cmllcjwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMTYiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT40MzE8L2FlPg0KKwkJCQkJPGFlPjI3NjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT50aW1lPC9hZT4NCisJCQkJPGFlPnNob3J0PC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQxNyI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjUxMTwvYWU+DQorCQkJCQk8YWU+Mjc2PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgxPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5Pg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnRpbWU8L2FlPg0KKwkJCQk8YWU+c2hvcnQ8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDE4Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTkzPC9hZT4NCisJCQkJCTxhZT4yNzY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5mbG9hdDwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTxyYW5nZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+MDwvYWU+DQorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4NCisJCQkJPC9yYW5nZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGNoZWNrIHNpZD0iQ0hFQ0s0Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+Mjg8L2FlPg0KKwkJCQkJPGFlPjMyMjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMjwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPg0KKwkJCQk8YWU+MTg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2NoZWNrPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQxOSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjI2OTwvYWU+DQorCQkJCQk8YWU+MzIxPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgwPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+ZGF0ZTwvYWU+DQorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+DQorCQkJCTwvdGVtcGxhdGU+DQorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkNvdXJpZXI8L2FlPg0KKwkJCQk8YWU+ODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDIwIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MzUwPC9hZT4NCisJCQkJCTxhZT4zMjE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5kYXRlPC9hZT4NCisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4NCisJCQkJPC90ZW1wbGF0ZT4NCisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+Q291cmllcjwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMjEiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT40MzE8L2FlPg0KKwkJCQkJPGFlPjMyMTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT43OTwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT50aW1lPC9hZT4NCisJCQkJPGFlPnNob3J0PC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQyMiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjUxMTwvYWU+DQorCQkJCQk8YWU+MzIxPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgxPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5Pg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnRpbWU8L2FlPg0KKwkJCQk8YWU+c2hvcnQ8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDIzIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTkzPC9hZT4NCisJCQkJCTxhZT4zMjE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5mbG9hdDwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTxyYW5nZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+MDwvYWU+DQorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4NCisJCQkJPC9yYW5nZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGNoZWNrIHNpZD0iQ0hFQ0s1Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+Mjg8L2FlPg0KKwkJCQkJPGFlPjM2NzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMjwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPg0KKwkJCQk8YWU+MTg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2NoZWNrPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQyNCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjI2OTwvYWU+DQorCQkJCQk8YWU+MzY2PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgwPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+ZGF0ZTwvYWU+DQorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+DQorCQkJCTwvdGVtcGxhdGU+DQorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkNvdXJpZXI8L2FlPg0KKwkJCQk8YWU+ODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDI1Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MzUwPC9hZT4NCisJCQkJCTxhZT4zNjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5kYXRlPC9hZT4NCisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4NCisJCQkJPC90ZW1wbGF0ZT4NCisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+Q291cmllcjwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMjYiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT40MzE8L2FlPg0KKwkJCQkJPGFlPjM2NjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT50aW1lPC9hZT4NCisJCQkJPGFlPnNob3J0PC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQyNyI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjUxMTwvYWU+DQorCQkJCQk8YWU+MzY2PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgxPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5Pg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnRpbWU8L2FlPg0KKwkJCQk8YWU+c2hvcnQ8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDI4Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTkzPC9hZT4NCisJCQkJCTxhZT4zNjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5mbG9hdDwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTxyYW5nZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+MDwvYWU+DQorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4NCisJCQkJPC9yYW5nZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGNoZWNrIHNpZD0iQ0hFQ0s2Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTIxPC9hZT4NCisJCQkJCTxhZT40MTI8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MTU8L2FlPg0KKwkJCQkJPGFlPjE0PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT5vZmY8L3ZhbHVlPg0KKwkJCTxhY3RpdmUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPm9mZjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm9uIiA6ICJvZmYiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2FjdGl2ZT4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkd3JpdGU8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKHZhbHVlID09ICJvbiIpID8gInJlYWRvbmx5IiA6ICJyZWFkd3JpdGUiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8cmFkaW9fY2hlY2sgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoKENIRUNLOC52YWx1ZSA9PSAib24iKSB8fCAoQ0hFQ0s3LnZhbHVlID09ICJvbiIpKSA/IHNldCgidmFsdWUiLCAib2ZmIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9yYWRpb19jaGVjaz4NCisJCTwvY2hlY2s+DQorCQk8Y2hlY2sgc2lkPSJDSEVDSzciPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xMjE8L2FlPg0KKwkJCQkJPGFlPjQzODwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xNTwvYWU+DQorCQkJCQk8YWU+MTQ8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPm9mZjwvdmFsdWU+DQorCQkJPGFjdGl2ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+b2ZmPC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAib24iIDogIm9mZiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvYWN0aXZlPg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWR3cml0ZTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkodmFsdWUgPT0gIm9uIikgPyAicmVhZG9ubHkiIDogInJlYWR3cml0ZSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxyYWRpb19jaGVjayBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCSgoQ0hFQ0s4LnZhbHVlID09ICJvbiIpIHx8IChDSEVDSzYudmFsdWUgPT0gIm9uIikpID8gc2V0KCJ2YWx1ZSIsICJvZmYiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L3JhZGlvX2NoZWNrPg0KKwkJPC9jaGVjaz4NCisJCTxjaGVjayBzaWQ9IkNIRUNLOCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjUxOTwvYWU+DQorCQkJCQk8YWU+NDEyPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE1PC9hZT4NCisJCQkJCTxhZT4xNDwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkhlbHZldGljYTwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8dmFsdWU+b2ZmPC92YWx1ZT4NCisJCQk8YWN0aXZlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5vZmY8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJvbiIgOiAib2ZmIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9hY3RpdmU+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZHdyaXRlPC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCSh2YWx1ZSA9PSAib24iKSA/ICJyZWFkb25seSIgOiAicmVhZHdyaXRlIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPHJhZGlvX2NoZWNrIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKChDSEVDSzYudmFsdWUgPT0gIm9uIikgfHwgKENIRUNLNy52YWx1ZSA9PSAib24iKSkgPyBzZXQoInZhbHVlIiwgIm9mZiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvcmFkaW9fY2hlY2s+DQorCQk8L2NoZWNrPg0KKwkJPGNoZWNrIHNpZD0iQ0hFQ0s5Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+Mjg8L2FlPg0KKwkJCQkJPGFlPjQ5NTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMjwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPg0KKwkJCQk8YWU+MTg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2NoZWNrPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQyOSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjI2OTwvYWU+DQorCQkJCQk8YWU+NDk4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgwPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+ZGF0ZTwvYWU+DQorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+DQorCQkJCTwvdGVtcGxhdGU+DQorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkNvdXJpZXI8L2FlPg0KKwkJCQk8YWU+ODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDMwIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MzUwPC9hZT4NCisJCQkJCTxhZT40OTg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODE8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5kYXRlPC9hZT4NCisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4NCisJCQkJPC90ZW1wbGF0ZT4NCisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+Q291cmllcjwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMzEiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT40MzI8L2FlPg0KKwkJCQkJPGFlPjQ5ODwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT43ODwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT50aW1lPC9hZT4NCisJCQkJPGFlPnNob3J0PC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQzMiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjUxMTwvYWU+DQorCQkJCQk8YWU+NDk4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgwPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5Pg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnRpbWU8L2FlPg0KKwkJCQk8YWU+c2hvcnQ8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDMzIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTkyPC9hZT4NCisJCQkJCTxhZT40OTg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODE8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5mbG9hdDwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTxyYW5nZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+MDwvYWU+DQorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4NCisJCQkJPC9yYW5nZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxMCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjI4PC9hZT4NCisJCQkJCTxhZT41NDM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MjI8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4NCisJCQkJPGFlPjE4PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9jaGVjaz4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMzQiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yNjk8L2FlPg0KKwkJCQkJPGFlPjU0MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+ZGF0ZTwvYWU+DQorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+DQorCQkJCTwvdGVtcGxhdGU+DQorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5Db3VyaWVyPC9hZT4NCisJCQkJPGFlPjg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQzNSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjM1MDwvYWU+DQorCQkJCQk8YWU+NTQzPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgxPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5kYXRlPC9hZT4NCisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4NCisJCQkJPC90ZW1wbGF0ZT4NCisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkNvdXJpZXI8L2FlPg0KKwkJCQk8YWU+ODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDM2Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NDMyPC9hZT4NCisJCQkJCTxhZT41NDM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+Nzg8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT50aW1lPC9hZT4NCisJCQkJPGFlPnNob3J0PC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMzciPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41MTE8L2FlPg0KKwkJCQkJPGFlPjU0MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnRpbWU8L2FlPg0KKwkJCQk8YWU+c2hvcnQ8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQzOCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjU5MjwvYWU+DQorCQkJCQk8YWU+NTQzPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgxPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5mbG9hdDwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTxyYW5nZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+MDwvYWU+DQorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4NCisJCQkJPC9yYW5nZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxjaGVjayBzaWQ9IkNIRUNLMTEiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yODwvYWU+DQorCQkJCQk8YWU+NTkxPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIyPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkhlbHZldGljYTwvYWU+DQorCQkJCTxhZT4xODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvY2hlY2s+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDM5Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MjY5PC9hZT4NCisJCQkJCTxhZT41OTA8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmRhdGU8L2FlPg0KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPg0KKwkJCQk8L3RlbXBsYXRlPg0KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzExLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+Q291cmllcjwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxENDAiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4zNTA8L2FlPg0KKwkJCQkJPGFlPjU5MDwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MTwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+ZGF0ZTwvYWU+DQorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+DQorCQkJCTwvdGVtcGxhdGU+DQorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5Db3VyaWVyPC9hZT4NCisJCQkJPGFlPjg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQ0MSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjQzMjwvYWU+DQorCQkJCQk8YWU+NTkwPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjc4PC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5Pg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+dGltZTwvYWU+DQorCQkJCTxhZT5zaG9ydDwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzExLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDQyIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTExPC9hZT4NCisJCQkJCTxhZT41OTA8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT50aW1lPC9hZT4NCisJCQkJPGFlPnNob3J0PC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxENDMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41OTI8L2FlPg0KKwkJCQkJPGFlPjU5MDwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MTwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+ZmxvYXQ8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8cmFuZ2UgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPjA8L2FlPg0KKwkJCQkJPGFlPjk5OTkuOTk5OTwvYWU+DQorCQkJCTwvcmFuZ2U+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzExLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8Y2hlY2sgc2lkPSJDSEVDSzEyIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NjgwPC9hZT4NCisJCQkJCTxhZT4zMjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MTU8L2FlPg0KKwkJCQkJPGFlPjE0PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9jaGVjaz4NCisJCTxjaGVjayBzaWQ9IkNIRUNLMTMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42ODk8L2FlPg0KKwkJCQkJPGFlPjQwNDwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xNTwvYWU+DQorCQkJCQk8YWU+MTQ8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPGFjdGl2ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+b2ZmPC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEyLnZhbHVlID09ICJvbiIpID8gIm9uIiA6ICJvZmYiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2FjdGl2ZT4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkd3JpdGU8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKHZhbHVlID09ICJvbiIpID8gInJlYWRvbmx5IiA6ICJyZWFkd3JpdGUiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8cmFkaW9fY2hlY2sgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoKENIRUNLMTQudmFsdWUgPT0gIm9uIikgfHwgKENIRUNLMTUudmFsdWUgPT0gIm9uIikpID8gc2V0KCJ2YWx1ZSIsICJvZmYiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L3JhZGlvX2NoZWNrPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9jaGVjaz4NCisJCTxjaGVjayBzaWQ9IkNIRUNLMTQiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42ODk8L2FlPg0KKwkJCQkJPGFlPjQyODwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xNTwvYWU+DQorCQkJCQk8YWU+MTQ8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPGFjdGl2ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+b2ZmPC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEyLnZhbHVlID09ICJvbiIpID8gIm9uIiA6ICJvZmYiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2FjdGl2ZT4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkd3JpdGU8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKHZhbHVlID09ICJvbiIpID8gInJlYWRvbmx5IiA6ICJyZWFkd3JpdGUiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8cmFkaW9fY2hlY2sgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoKENIRUNLMTUudmFsdWUgPT0gIm9uIikgfHwgKENIRUNLMTMudmFsdWUgPT0gIm9uIikpID8gc2V0KCJ2YWx1ZSIsICJvZmYiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L3JhZGlvX2NoZWNrPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9jaGVjaz4NCisJCTxjaGVjayBzaWQ9IkNIRUNLMTUiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42ODk8L2FlPg0KKwkJCQkJPGFlPjQ4NTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xNTwvYWU+DQorCQkJCQk8YWU+MTQ8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPGFjdGl2ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+b2ZmPC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEyLnZhbHVlID09ICJvbiIpID8gIm9uIiA6ICJvZmYiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2FjdGl2ZT4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkd3JpdGU8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKHZhbHVlID09ICJvbiIpID8gInJlYWRvbmx5IiA6ICJyZWFkd3JpdGUiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8cmFkaW9fY2hlY2sgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoKENIRUNLMTQudmFsdWUgPT0gIm9uIikgfHwgKENIRUNLMTMudmFsdWUgPT0gIm9uIikpID8gc2V0KCJ2YWx1ZSIsICJvZmYiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L3JhZGlvX2NoZWNrPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9jaGVjaz4NCisJCTxmaWVsZCBzaWQ9IkZJRUxENDQiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT40MjwvYWU+DQorCQkJCQk8YWU+NjU3PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjg0NjwvYWU+DQorCQkJCQk8YWU+NTc8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+c3RyaW5nPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIg0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxENDUiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT40MjwvYWU+DQorCQkJCQk8YWU+NzEyPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjg0NjwvYWU+DQorCQkJCQk8YWU+MzE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnN0cmluZzwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKENIRUNLOC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIg0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzgudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxidXR0b24gc2lkPSJCVVRUT04xIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MjUwPC9hZT4NCisJCQkJCTxhZT44Mzk8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MzQ2PC9hZT4NCisJCQkJCTxhZT4yNzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHR5cGU+c2lnbmF0dXJlPC90eXBlPg0KKwkJCTxzaWduYXR1cmU+U0lHTkFUVVJFMTwvc2lnbmF0dXJlPg0KKwkJCTxzaWduZXI+KGNzKSBKb2huIE0uIEJveWVyLCBqYm95ZXJAcHVyZWVkZ2UuY29tPC9zaWduZXI+DQorCQkJPHNpZ25vcHRpb25zIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPm9taXQ8L2FlPg0KKwkJCQk8YWU+dHJpZ2dlcml0ZW08L2FlPg0KKwkJCTwvc2lnbm9wdGlvbnM+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjg8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHNpZ25pdGVtcmVmcyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5vbWl0PC9hZT4NCisJCQkJPGFlPlBBR0UxLkNIRUNLMTY8L2FlPg0KKwkJCQk8YWU+UEFHRTEuQ0hFQ0sxNzwvYWU+DQorCQkJCTxhZT5QQUdFMS5GSUVMRDQ3PC9hZT4NCisJCQkJPGFlPlBBR0UxLkJVVFRPTjI8L2FlPg0KKwkJCQk8YWU+U0lHTkFUVVJFMjwvYWU+DQorCQkJCTxhZT5QQUdFMS5GSUVMRDQ4PC9hZT4NCisJCQk8L3NpZ25pdGVtcmVmcz4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnN0cmluZzwvYWU+DQorCQkJCTxhZT5tYW5kYXRvcnk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTx2YWx1ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+KGNzKSBKb2huIE0uIEJveWVyLCBqYm95ZXJAcHVyZWVkZ2UuY29tPC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCXNpZ25lcg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC92YWx1ZT4NCisJCTwvYnV0dG9uPg0KKwkJPHNpZ25hdHVyZSBzaWQ9IlNJR05BVFVSRTEiPg0KKwkJCTxzaWduZm9ybWF0PmFwcGxpY2F0aW9uL3gteGZkbDsgc2lnbmVuZ2luZT0iQ3J5cHRvQVBJIjwvc2lnbmZvcm1hdD4NCisJCQk8c2lnbmVyPihjcykgSm9obiBNLiBCb3llciwgamJveWVyQHB1cmVlZGdlLmNvbTwvc2lnbmVyPg0KKwkJCTxzaWduYXR1cmU+UEFHRTEuQlVUVE9OMTwvc2lnbmF0dXJlPg0KKwkJCTxzaWduaXRlbXJlZnMgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+b21pdDwvYWU+DQorCQkJCTxhZT5QQUdFMS5DSEVDSzE2PC9hZT4NCisJCQkJPGFlPlBBR0UxLkNIRUNLMTc8L2FlPg0KKwkJCQk8YWU+UEFHRTEuRklFTEQ0NzwvYWU+DQorCQkJCTxhZT5QQUdFMS5CVVRUT04yPC9hZT4NCisJCQkJPGFlPlNJR05BVFVSRTI8L2FlPg0KKwkJCQk8YWU+UEFHRTEuRklFTEQ0ODwvYWU+DQorCQkJPC9zaWduaXRlbXJlZnM+DQorCQkJPHNpZ25vcHRpb25zIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPm9taXQ8L2FlPg0KKwkJCQk8YWU+dHJpZ2dlcml0ZW08L2FlPg0KKwkJCTwvc2lnbm9wdGlvbnM+DQorCQkJPGZ1bGxuYW1lPlB1cmVFZGdlIFNvbHV0aW9ucyBJbmMuLCBQdWJsaWMgTGV2ZWwgMSBTZXJ2aWNlIE9mZmVyaW5nIENBLCB3d3cudmVyaXNpZ24uY29tL3JlcG9zaXRvcnkvQ1BTIEluY29ycC4gYnkgUmVmLixMSUFCLkxURChjKTk2LCBDdXN0b21lciAtIEN1c3RvbWVyU2VydmljZSwgQ3VzdG9tZXIgSW5mbzIgLSBQdXJlRWRnZSwgKGNzKSBKb2huIE0uIEJveWVyLCBqYm95ZXJAcHVyZWVkZ2UuY29tPC9mdWxsbmFtZT4NCisJCTwvc2lnbmF0dXJlPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQ0NiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjY1NTwvYWU+DQorCQkJCQk8YWU+ODQwPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE1NTwvYWU+DQorCQkJCQk8YWU+Mjc8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8ZWRpdHN0YXRlPnJlYWRvbmx5PC9lZGl0c3RhdGU+DQorCQkJPHZhbHVlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD4wNS0wOC0wMjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQlVUVE9OMS52YWx1ZSAhPSAiIikgPyAiKiIgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC92YWx1ZT4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmRhdGU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+DQorCQkJPC9mb3JtYXQ+DQorCQk8L2ZpZWxkPg0KKwkJPHNwYWNlciBzaWQ9InZmZF9zcGFjZXIiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT45NjA8L2FlPg0KKwkJCQkJPGFlPjEyNjA8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L3NwYWNlcj4NCisJPC9wYWdlPg0KKzwvWEZETD4NCmRpZmYgLS1naXQgYS9kYXRhL2NvbS9wdXJlZWRnZS9MZWF2ZVJlcXVlc3Rfc2lnbmVkLnhmZCBiL2RhdGEvY29tL3B1cmVlZGdlL0xlYXZlUmVxdWVzdF9zaWduZWQueGZkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkYTdlNzUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2NvbS9wdXJlZWRnZS9MZWF2ZVJlcXVlc3Rfc2lnbmVkLnhmZApAQCAtMCwwICsxLDQxOTggQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/Pg0KKzxYRkRMIHZlcnNpb249IjQuMC4xIj4NCisJPHZmZF90aXRsZT5TRjcxPC92ZmRfdGl0bGU+DQorCTx2ZmRfYXV0aG9yPlRob21hcyBNb2hyPC92ZmRfYXV0aG9yPg0KKwk8dmZkX3JldmlzaW9uPjQvNi85ODwvdmZkX3JldmlzaW9uPg0KKwk8dmZkX2RhdGU+NC82Lzk4PC92ZmRfZGF0ZT4NCisJPHNhdmVmb3JtYXQ+YXBwbGljYXRpb24veC14ZmRsPC9zYXZlZm9ybWF0Pg0KKwk8dHJhbnNtaXRmb3JtYXQ+YXBwbGljYXRpb24veC14ZmRsPC90cmFuc21pdGZvcm1hdD4NCisJPGZvcm1pZCBjb250ZW50PSJhcnJheSI+DQorCQk8dmVyc2lvbj4xLjAuMDwvdmVyc2lvbj4NCisJPC9mb3JtaWQ+DQorCTxwYWdlIHNpZD0iUEFHRTEiPg0KKwkJPHZmZF9wYWdlc2l6ZT5sZXR0ZXI8L3ZmZF9wYWdlc2l6ZT4NCisJCTx2ZmRfcGFnZWRwaT4xMjA8L3ZmZF9wYWdlZHBpPg0KKwkJPHZmZF9wcmludHNpemU+OC4wOzEwLjU8L3ZmZF9wcmludHNpemU+DQorCQk8bGFiZWw+UEFHRTE8L2xhYmVsPg0KKwkJPGJnY29sb3IgY29udGVudD0iYXJyYXkiPg0KKwkJCTxhZT4yMzU8L2FlPg0KKwkJCTxhZT4yMzU8L2FlPg0KKwkJCTxhZT4yMzU8L2FlPg0KKwkJPC9iZ2NvbG9yPg0KKwkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQk8YWU+Q291cmllcjwvYWU+DQorCQkJPGFlPjk8L2FlPg0KKwkJCTxhZT5wbGFpbjwvYWU+DQorCQk8L2ZvbnRpbmZvPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUwxIj4NCisJCQk8dmFsdWU+UkVRVUVTVCBGT1IgTEVBVkUgT1IgQVBQUk9WRUQgQUJTRU5DRTwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkhlbHZldGljYTwvYWU+DQorCQkJCTxhZT4xNDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4NCisJCQk8c2l6ZSBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT42MTwvYWU+DQorCQkJCTxhZT4xPC9hZT4NCisJCQk8L3NpemU+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjE5PC9hZT4NCisJCQkJCTxhZT4zPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjg3NDwvYWU+DQorCQkJCQk8YWU+MzQ8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjIwPC9hZT4NCisJCQkJCTxhZT4zNTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT43OTwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT4xLiAgTkFNRTwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUwzIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTAwPC9hZT4NCisJCQkJCTxhZT4zNTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMTg8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+KExhc3QsIEZpcnN0LCBNaWRkbGUgSW5pdGlhbCk8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJCTxhZT5pdGFsaWM8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUw0Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTExPC9hZT4NCisJCQkJCTxhZT4zNTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4zODU8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+Mi4gIEVNUExPWUVFIE9SIFNPQ0lBTCBTRUNVUklUWSBOVU1CRVI8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMNSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjIwPC9hZT4NCisJCQkJCTxhZT44NTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xNzA8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+My4gIE9SR0FOSVpBVElPTjwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUw2Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MjA8L2FlPg0KKwkJCQkJPGFlPjEzNTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yNDg8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+NC4gIFRZUEUgT0YgTEVBVkUvQUJTRU5DRTwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUw3Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MzI8L2FlPg0KKwkJCQkJPGFlPjE1NTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMzY8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+KENoZWNrIGFwcHJvcHJpYXRlIGJveChlcykgYmVsb3cuKTwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjk8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCQk8YWU+aXRhbGljPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMOCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjI3MDwvYWU+DQorCQkJCQk8YWU+MTU4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjQ4PC9hZT4NCisJCQkJCTxhZT4yMjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPkZyb206PC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+OTwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMOSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjI2ODwvYWU+DQorCQkJCQk8YWU+MTM1PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE2MzwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5EYXRlPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUwxMCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjM1MjwvYWU+DQorCQkJCQk8YWU+MTU4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjQ4PC9hZT4NCisJCQkJCTxhZT4yMjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPlRvOjwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjk8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDExIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NDMyPC9hZT4NCisJCQkJCTxhZT4xNTg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+NDg8L2FlPg0KKwkJCQkJPGFlPjIyPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+RnJvbTo8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT45PC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUwxMiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjQzMDwvYWU+DQorCQkJCQk8YWU+MTM1PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE2MzwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5UaW1lPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUwxMyI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjUxMzwvYWU+DQorCQkJCQk8YWU+MTU4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjQ4PC9hZT4NCisJCQkJCTxhZT4yMjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPlRvOjwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjk8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDE0Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTkyPC9hZT4NCisJCQkJCTxhZT4xMzQ8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjQ2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+VG90YWwKK0hvdXJzPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUwxNSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjY0PC9hZT4NCisJCQkJCTxhZT4xODY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MjA1PC9hZT4NCisJCQkJCTxhZT4yNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPkFjY3J1ZWQgQW5udWFsIExlYXZlPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDE2Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NjQ8L2FlPg0KKwkJCQkJPGFlPjIzMjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMDU8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+UmVzdG9yZWQgQW5udWFsIExlYXZlPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDE3Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NjQ8L2FlPg0KKwkJCQkJPGFlPjI3ODwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMDU8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+QWR2YW5jZSBBbm51YWwgTGVhdmU8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMTgiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42NDwvYWU+DQorCQkJCQk8YWU+MzIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIwNTwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5BY2N1cmVkIFNpY2sgTGVhdmU8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMTkiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42NDwvYWU+DQorCQkJCQk8YWU+MzY4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIwNTwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5BZHZhbmNlIFNpY2sgTGVhdmU8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMjAiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xOTwvYWU+DQorCQkJCQk8YWU+NDA5PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgwPC9hZT4NCisJCQkJCTxhZT4yNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPlB1cnBvc2U6PC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDIxIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTQyPC9hZT4NCisJCQkJCTxhZT40MTA8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5NZWRpY2FsL2RlbnRhbC9vcHRpY2FsIEV4YW1pbmF0aW9uIG9mIHJlcXVlc3RpbmcgZW1wbG95ZWU8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT45PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTxzaXplIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPjQ1PC9hZT4NCisJCQkJPGFlPjE8L2FlPg0KKwkJCTwvc2l6ZT4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDIyIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTM1PC9hZT4NCisJCQkJCTxhZT40MTA8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+NDY8L2FlPg0KKwkJCQkJPGFlPjI0PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+T3RoZXI8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT45PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMjMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xNDI8L2FlPg0KKwkJCQkJPGFlPjQzNTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT40Mzk8L2FlPg0KKwkJCQkJPGFlPjQyPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+Q2FyZSBvZiBmYW1pbHkgbWVtYmVyL2JlcmVhdmVtZW50LCBpbmNsdWRpbmcgbWVkaWNhbC9kZW50YWwvb3B0aWNhbCBleGFtaW5hdGlvbiBvZiBmYW1pbHkgbWVtYmVyPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+OTwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDI0Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NjQ8L2FlPg0KKwkJCQkJPGFlPjQ5ODwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMDQ8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+Q29tcGVuc2F0b3J5IFRpbWUgT2ZmPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDI1Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NjQ8L2FlPg0KKwkJCQkJPGFlPjUzNTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xODA8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+T3RoZXIgUGFpZCBBYnNlbmNlPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDI2Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NjQ8L2FlPg0KKwkJCQkJPGFlPjU1NjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xNTg8L2FlPg0KKwkJCQkJPGFlPjI0PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+KFNwZWNpZnkgaW4gUmVtYXJrcyk8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT45PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQkJPGFlPml0YWxpYzwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDI3Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NjQ8L2FlPg0KKwkJCQkJPGFlPjU5MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xOTI8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+TGVhdmUgV2l0aG91dCBQYXk8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMjgiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42NzY8L2FlPg0KKwkJCQkJPGFlPjEzNTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMTU8L2FlPg0KKwkJCQkJPGFlPjQ2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+NS4gRkFNSUxZIEFORAorCU1FRElDQUwgTEVBVkU8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMjkiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42Nzc8L2FlPg0KKwkJCQkJPGFlPjE4MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMTQ8L2FlPg0KKwkJCQkJPGFlPjEyNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPklmIGFubnVhbCBsZWF2ZSwgc2ljayBsZWF2ZSwgb3IgbGVhdmUgd2l0aG91dCBwYXkgd2lsbCBiZSB1c2VkIHVuZGVyIHRoZSBGYW1pbHkgYW5kIE1lZGljYWwgTGVhdmUgQWN0IG9mIDE5OTMsIHBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUwzMCI+DQorCQkJPHZhbHVlPkkgaGVyZWJ5IGludm9rZSBteTwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjcwMDwvYWU+DQorCQkJCQk8YWU+MzIyPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE5MTwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMzEiPg0KKwkJCTx2YWx1ZT5lbnRpdGxlbWVudCBGYW1pbHkgYW5kPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+Njc1PC9hZT4NCisJCQkJCTxhZT4zNDI8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MjE2PC9hZT4NCisJCQkJCTxhZT4yNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUwzMiI+DQorCQkJPHZhbHVlPk1lZGljYWwgTGVhdmUgZm9yOjwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjY3NTwvYWU+DQorCQkJCQk8YWU+MzY0PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIxNTwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMzMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT43MDg8L2FlPg0KKwkJCQkJPGFlPjQwMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xODE8L2FlPg0KKwkJCQkJPGFlPjIyPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+QmlydGgvQWRvcHRpb24vRm9zdGVyIENhcmU8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMzQiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT43MDg8L2FlPg0KKwkJCQkJPGFlPjQyNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xODI8L2FlPg0KKwkJCQkJPGFlPjM4PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+U2VyaW91cyBIZWF0aCBDb25kaXRpb24gb2Ygc3BvdXNlLCBTb24sIERhdWdodGVyLCBvciBQYXJlbnQ8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMzUiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT43MDg8L2FlPg0KKwkJCQkJPGFlPjQ4MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xODQ8L2FlPg0KKwkJCQkJPGFlPjIyPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+U2VyaW91cyBIZWFsdGggQ29uZGl0aW9uIG9mIFNlbGY8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMzYiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42NzU8L2FlPg0KKwkJCQkJPGFlPjUzNzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPkNvbnRhY3QgeW91ciBzdXBlcnZpc29yIGFuZC9vciBvdXIgcGVyc29ubmVsIG9mZmljZSB0byBvYnRhaW4gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIGVudGl0bGVtZW50cyBhbmQgcmVzcG9uc2liaWxpdGllcyB1bmRlciB0aGUgRmFtaWx5IGFuZCBNZWRpY2FsIExlYXZlIEFjdCBvZiAxOTkzLjwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHNpemUgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8YWU+NTwvYWU+DQorCQkJPC9zaXplPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMzciPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xOTwvYWU+DQorCQkJCQk8YWU+NjMwPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE5MjwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT42LiAgUkVNQVJLUzo8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMzgiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xOTwvYWU+DQorCQkJCQk8YWU+NzQ3PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE3MDwvYWU+DQorCQkJCQk8YWU+MjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT43LiAgQ0VSVElGSUNBVElPTjo8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMMzkiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xNzg8L2FlPg0KKwkJCQkJPGFlPjc0NzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT43MTU8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+SSBoZXJlYnkgcmVxdWVzdCBsZWF2ZS9hcHByb3ZlZCBhYnNlbmNlIGZyb20gZHV0eSBhcyBpbmRpY2F0ZWQgYWJvdmUgYW5kIGNlcnRpZnkgdGhhdCBzdWNoIGxlYXZlL2Fic2VuY2U8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDQwIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTk8L2FlPg0KKwkJCQkJPGFlPjc2NzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44NzM8L2FlPg0KKwkJCQkJPGFlPjY2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+aXMgcmV1ZXN0ZWQgZnJvbSB0aGUgcHVycG9zZShzKSBpbmRpY2F0ZWQuIEkgdW5kZXJzdGFuZCB0aGF0IEkgbXVzdCBjb21wbHkgd2l0aCBteSBlbXBsb3lpbmcgYWdlbmN5J3MgcHJvY2VkdXJlcyBmb3IgcmVxdWVzdGluZyBsZWF2ZS9hcHByb3ZlZCBhYnNlbmNlIChhbmQgcHJvdmlkZSBhZGRpdGlvbmFsIGRvY3VtZW50aW9uLCBpbmNsdWRpbmcgbWVkaWNhbCBjZXJ0aWZpY2F0aW9uLCBpZiByZXF1aXJlZCkgYW5kIHRoYXQgZmFsc2lmaWNhdGlvbiBvZiBpbmZvcm1hdGlvbiBvbiB0aGlzIGZvcm0gbWF5IGJlIGdyb3VuZHMgZm9yIGRpc2NpcGxpbmFyeSBhY3Rpb24sIGluY2x1ZGluZyByZW1vdmFsLjwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMNDEiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xOTwvYWU+DQorCQkJCQk8YWU+ODQxPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIzMDwvYWU+DQorCQkJCQk8YWU+Mjc8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5FTVBMT1lFRSBTSUdOQVRVUkU8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT4xMTwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMNDIiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41OTc8L2FlPg0KKwkJCQkJPGFlPjg0MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT41ODwvYWU+DQorCQkJCQk8YWU+Mjc8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5EQVRFPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTE8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDQzIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTk8L2FlPg0KKwkJCQkJPGFlPjg3NzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4zMzU8L2FlPg0KKwkJCQkJPGFlPjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+OC4gIE9GRklDQUwgQUNUSU9OIE9OIFJFUVVFU1Q6PC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDQ0Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NDE8L2FlPg0KKwkJCQkJPGFlPjg5NzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPihJZiBkaXNhcHByb3ZlZCwgZ2l2ZSByZWFzb24uIElmIGFubnVhbCBsZWF2ZSwgaW5pdGlhdGUgYWN0aW9uIHRvIHJlc2NoZWR1bGUuKTwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTxzaXplIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPjUzPC9hZT4NCisJCQkJPGFlPjE8L2FlPg0KKwkJCTwvc2l6ZT4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDQ1Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+Mzg4PC9hZT4NCisJCQkJCTxhZT44NzU8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MTkyPC9hZT4NCisJCQkJCTxhZT4yNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPkFQUFJPVkVEPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDQ2Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NjM4PC9hZT4NCisJCQkJCTxhZT44NzU8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MTkyPC9hZT4NCisJCQkJCTxhZT4yNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPkRJU0FQUFJPVkVEPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDQ3Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTk8L2FlPg0KKwkJCQkJPGFlPjk0MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xMTI8L2FlPg0KKwkJCQkJPGFlPjI3PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+U0lHTkFUVVJFPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+MTE8L2FlPg0KKwkJCQk8YWU+Ym9sZDwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDQ4Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTk3PC9hZT4NCisJCQkJCTxhZT45NDA8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+NTg8L2FlPg0KKwkJCQkJPGFlPjI3PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+REFURTwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjExPC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUw0OSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjE3PC9hZT4NCisJCQkJCTxhZT45NzA8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODc2PC9hZT4NCisJCQkJCTxhZT4yNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPlBSSVZBQ1kgQUNUIFNUQVRFTUVOVDwvdmFsdWU+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPlRpbWVzPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5Pg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMNTAiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xOTwvYWU+DQorCQkJCQk8YWU+OTk2PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjg3MzwvYWU+DQorCQkJCQk8YWU+MTM0PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dmFsdWU+U2VjdGlvbiA2MzExIG9mIHRpdGxlIDUsIFVuaXRlZCBTdGF0ZXMgQ29kZSwgYXV0aG9yaXplcyBjb2xsZWN0aW9uIG9mIHRoaXMgaW5mb3JtYXRpb24uIFRoZSBwcmltYXJ5IHVzZSBvZiB0aGlzIGluZm9ybWF0aW9uIGlzIGJ5IG1hbmFnZW1lbnQgYW5kIHlvdXIgcGF5cm9sbCBvZmZpY2UgdG8gYXBwcm92ZSBhbmQgcmVjb3JkIHlvdXIgdXNlIG9mIGxlYXZlLiBBZGRpdGlvbmFsIGRpc2Nsb3N1cmVzIG9mIHRoZSBpbmZvcm1hdGlvbiBtYXQgYmU6IFRvIHRoZSBEZXBhcnRtZW50IG9mIGxhYm9yIHdoZW4gcHJvY2Vzc2luZyBhIGNsYWltIGZvciBjb21wZW5zYXRpb24gcmVnYXJkaW5nIGEgam9iIGNvbm5lY3RlZCBpbmp1cnkgb3IgaWxsbmVzczsgdG8gYSBTdGF0ZSB1bmVtcGxveW1lbnQgY29tcGVuc2F0aW9uIG9mZmljZSByZWdhcmRpbmcgYSBjbGFpbTsgdGhlIEZlZGVyYWwgTGlmZSBJbnN1cmFuY2Ugb3IgSGVhbHRoIEJlbmVmaXRzIGNhcnJpZXMgcmVnYXJkaW5nIGEgY2xhaW07IHRvIGEgRmVkZXJhbCBTdGF0ZSwgb3IgbG9jYWwgbGF3IGVuZm9yY2VtZW50IGFnZW5jeSB3aGVuIHlvdXIgYWdlbmN5IGJlY29tZXMgYXdhcmUgb2YgYSB2aW9sYXRpb24gb3IgcG9zc2libGUgdmlvbGF0aW9uIG9mIGNpdmlsIG9yIGNyaW1pbmFsIGxhdzsgdG8gYSBGZWRlcmFsIGFnZW5jeSB3aGVuIGNvbmR1Y3RpbmcgYW4gaW52ZXN0aWdhdGlvbiBmb3IgZW1wbG95bWVudCBvciBTZXJ2aWNlcyBBZG1pbmlzdHJhdGlvbiBpbiBjb25uZWN0aW9uIHdpdGggaXRzIHJlc3BvbnNpYmlsaXRpZXMgZm9yIHJlY29yZHMgbWFuYWdlbWVudC4KKworV2hlcmUgIHRoZSBFbXBsb3llZSBpZGVudGlmaWNhdGlvbiBudW1iZXIgaXMgeW91ciBTb2NpYWwgU2VjdXJpdHkgTnVtYmVyLCBjb2xsZWN0aW9uIG9mIHRoaXMgaW5mb3JtYXRpb24gaXMgYXV0aG9yaXplZCBieSBFeGVjdXRpdmUgT3JkZXIgOTM5Ny4gRnVybmlzaGluZyB0aGUgaW5mb3JtYXRpb24gb24gdGhpcyBmb3JtLCBpbmNsdWRpbmcgeW91ciBTb2NpYWwgU2VjdXJpdHkgTnVtYmVyLCBpcyB2b2x1bnRhcnksIGJ1dCB0byBkbyBzbyBtYXkgcmVzdWx0IGluIGRpc2FwcHJvdmFsIHJlcXVlc3QuPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+ODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCTwvbGFiZWw+DQorCQk8bGFiZWwgc2lkPSJMQUJFTDUxIj4NCisJCQk8dmFsdWU+SWYgeW91ciBhZ2VuY3kgdXNlcyB0aGUgaW5mb3JtYXRpb24gZnVybmlzaGVkIG9uIHRoaXMgZm9ybSBmb3IgcHVycG9zZXMgb3RoZXIgdGhhbiB0aG9zZSBpbmRpY2F0ZWQgYWJvdmUsIGl0IG1heSBwcm92aWRlIHlvdSB3aXRoIGFuIGFkZGl0aW9uYWwgc3RhdGVtZW50IHJlZmxlY3RpbmcgdGhvc2UgcHVycG9zZXMuPC92YWx1ZT4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+NzwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTg8L2FlPg0KKwkJCQkJPGFlPjExNDA8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODc1PC9hZT4NCisJCQkJCTxhZT4yMjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xhYmVsPg0KKwkJPGxhYmVsIHNpZD0iTEFCRUw1MiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjE4PC9hZT4NCisJCQkJCTxhZT4xMTY4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjQyMjwvYWU+DQorCQkJCQk8YWU+Mzg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTx2YWx1ZT5OU04gNzU0MC0wMDAtNzUzLTUwNjcKK1BSRVZJT1VTIEVESVRJT04gTUFZIEJFIFVTRUQ8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJPC9sYWJlbD4NCisJCTxsYWJlbCBzaWQ9IkxBQkVMNTMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT40Mzg8L2FlPg0KKwkJCQkJPGFlPjExNjg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+NDU0PC9hZT4NCisJCQkJCTxhZT4zODwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHZhbHVlPlNUQU5EQVJEIEZPUk0gNzEgKFJldi4gMTItOTcpCitQUkVTQ1JJQkVEIEJZIE9GRklDRSBPRiBQRVJTT05ORUwgTUFOQUdFTUVOVCwgNSBDRlIgUEFSVCA2MzA8L3ZhbHVlPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTxqdXN0aWZ5PnJpZ2h0PC9qdXN0aWZ5Pg0KKwkJPC9sYWJlbD4NCisJCTxsaW5lIHNpZD0iTElORTEiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xNzwvYWU+DQorCQkJCQk8YWU+MzI8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODc2PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCTwvbGluZT4NCisJCTxsaW5lIHNpZD0iTElORTIiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xNzwvYWU+DQorCQkJCQk8YWU+ODI8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODc2PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCTwvbGluZT4NCisJCTxsaW5lIHNpZD0iTElORTMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xNzwvYWU+DQorCQkJCQk8YWU+MTMzPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjg3NjwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkU0Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTc8L2FlPg0KKwkJCQkJPGFlPjE3OTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44NzY8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FNSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjI2ODwvYWU+DQorCQkJCQk8YWU+MjE4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjQwNjwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkU2Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MjY4PC9hZT4NCisJCQkJCTxhZT4yNjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+NDA2PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCTwvbGluZT4NCisJCTxsaW5lIHNpZD0iTElORTciPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xNzwvYWU+DQorCQkJCQk8YWU+MzExPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjY1NzwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkU4Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MjY4PC9hZT4NCisJCQkJCTxhZT4zNTQ8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+NDA2PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCTwvbGluZT4NCisJCTxsaW5lIHNpZD0iTElORTkiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yNjg8L2FlPg0KKwkJCQkJPGFlPjM5ODwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT40MDY8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FMTAiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xNzwvYWU+DQorCQkJCQk8YWU+NDg0PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjY1NzwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUxMSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjE3PC9hZT4NCisJCQkJCTxhZT41MzA8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+NjU3PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCTwvbGluZT4NCisJCTxsaW5lIHNpZD0iTElORTEyIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTc8L2FlPg0KKwkJCQkJPGFlPjU3ODwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT42NTc8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FMTMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xNzwvYWU+DQorCQkJCQk8YWU+NjI2PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjg3NjwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUxNCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjE3PC9hZT4NCisJCQkJCTxhZT43NDM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODc2PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCTwvbGluZT4NCisJCTxsaW5lIHNpZD0iTElORTE1Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MTc8L2FlPg0KKwkJCQkJPGFlPjg2NzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44NzY8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9saW5lPg0KKwkJPGxpbmUgc2lkPSJMSU5FMTYiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xNzwvYWU+DQorCQkJCQk8YWU+OTY3PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjg3NjwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUxNyI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjE3PC9hZT4NCisJCQkJCTxhZT4xMTY0PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjg3NjwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUxOCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjE3PC9hZT4NCisJCQkJCTxhZT4zMjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJCTxhZT4xMTMzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCTwvbGluZT4NCisJCTxsaW5lIHNpZD0iTElORTE5Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTEwPC9hZT4NCisJCQkJCTxhZT4zMjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xPC9hZT4NCisJCQkJCTxhZT41MTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUyMCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjg5MjwvYWU+DQorCQkJCQk8YWU+MzI8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MTwvYWU+DQorCQkJCQk8YWU+MTEzMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUyMSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjI2ODwvYWU+DQorCQkJCQk8YWU+MTMzPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQkJPGFlPjI2NjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUyMiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjM0OTwvYWU+DQorCQkJCQk8YWU+MTc5PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQkJPGFlPjIyMDwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUyMyI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjQzMDwvYWU+DQorCQkJCQk8YWU+MTMzPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQkJPGFlPjI2NjwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUyNCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjUxMDwvYWU+DQorCQkJCQk8YWU+MTc5PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQkJPGFlPjIyMDwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUyNSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjU5MjwvYWU+DQorCQkJCQk8YWU+MTMzPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQkJPGFlPjI2NTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUyNiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjY3MzwvYWU+DQorCQkJCQk8YWU+MTMzPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQkJPGFlPjQ5NDwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUyNyI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjI2ODwvYWU+DQorCQkJCQk8YWU+NDg0PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQkJPGFlPjE0MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUyOCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjM0OTwvYWU+DQorCQkJCQk8YWU+NDg0PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQkJPGFlPjE0MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUyOSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjQzMTwvYWU+DQorCQkJCQk8YWU+NDg0PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQkJPGFlPjE0MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUzMCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjUxMDwvYWU+DQorCQkJCQk8YWU+NDg0PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQkJPGFlPjE0MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8bGluZSBzaWQ9IkxJTkUzMSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjU5MTwvYWU+DQorCQkJCQk8YWU+NDg0PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQkJPGFlPjE0MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQk8L2xpbmU+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDEiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yMDwvYWU+DQorCQkJCQk8YWU+NTg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+NDg5PC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5zdHJpbmc8L2FlPg0KKwkJCQk8YWU+bWFuZGF0b3J5PC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+Sm9obiBRLiBQdWJsaWM8L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjUzNzwvYWU+DQorCQkJCQk8YWU+NTg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MTIzPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5zdHJpbmc8L2FlPg0KKwkJCQk8YWU+bWFuZGF0b3J5PC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+MTIzNDU2Nzg5PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xOTwvYWU+DQorCQkJCQk8YWU+MTA5PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjg3MjwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+c3RyaW5nPC9hZT4NCisJCQkJPGFlPm1hbmRhdG9yeTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPlB1cmVFZGdlIFNvbHV0aW9ucyBJbmMuPC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8Y2hlY2sgc2lkPSJDSEVDSzEiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yODwvYWU+DQorCQkJCQk8YWU+MTkxPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIyPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkhlbHZldGljYTwvYWU+DQorCQkJCTxhZT4xODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvY2hlY2s+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDQiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yNjk8L2FlPg0KKwkJCQkJPGFlPjE4ODwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmRhdGU8L2FlPg0KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPg0KKwkJCQk8L3RlbXBsYXRlPg0KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5Db3VyaWVyPC9hZT4NCisJCQkJPGFlPjg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQ1Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MzUwPC9hZT4NCisJCQkJCTxhZT4xODg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5kYXRlPC9hZT4NCisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4NCisJCQkJPC90ZW1wbGF0ZT4NCisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+Q291cmllcjwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxENiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjQzMTwvYWU+DQorCQkJCQk8YWU+MTg4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgwPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5Pg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnRpbWU8L2FlPg0KKwkJCQk8YWU+c2hvcnQ8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDciPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41MTE8L2FlPg0KKwkJCQkJPGFlPjE4ODwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MTwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT50aW1lPC9hZT4NCisJCQkJPGFlPnNob3J0PC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQ4Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTkzPC9hZT4NCisJCQkJCTxhZT4xODg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5mbG9hdDwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTxyYW5nZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+MDwvYWU+DQorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4NCisJCQkJPC9yYW5nZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGNoZWNrIHNpZD0iQ0hFQ0syIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+Mjg8L2FlPg0KKwkJCQkJPGFlPjIzMTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMjwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPg0KKwkJCQk8YWU+MTg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2NoZWNrPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQ5Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MjY5PC9hZT4NCisJCQkJCTxhZT4yMzE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5kYXRlPC9hZT4NCisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4NCisJCQkJPC90ZW1wbGF0ZT4NCisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+Q291cmllcjwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMTAiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4zNTA8L2FlPg0KKwkJCQkJPGFlPjIzMTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmRhdGU8L2FlPg0KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPg0KKwkJCQk8L3RlbXBsYXRlPg0KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5Db3VyaWVyPC9hZT4NCisJCQkJPGFlPjg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQxMSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjQzMTwvYWU+DQorCQkJCQk8YWU+MjMxPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgwPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5Pg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnRpbWU8L2FlPg0KKwkJCQk8YWU+c2hvcnQ8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDEyIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTExPC9hZT4NCisJCQkJCTxhZT4yMzE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODE8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+dGltZTwvYWU+DQorCQkJCTxhZT5zaG9ydDwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMTMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41OTM8L2FlPg0KKwkJCQkJPGFlPjIzMTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmZsb2F0PC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT4wPC9hZT4NCisJCQkJCTxhZT45OTk5Ljk5OTk8L2FlPg0KKwkJCQk8L3JhbmdlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8Y2hlY2sgc2lkPSJDSEVDSzMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yODwvYWU+DQorCQkJCQk8YWU+Mjc3PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIyPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkhlbHZldGljYTwvYWU+DQorCQkJCTxhZT4xODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvY2hlY2s+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDE0Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MjY5PC9hZT4NCisJCQkJCTxhZT4yNzY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5kYXRlPC9hZT4NCisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4NCisJCQkJPC90ZW1wbGF0ZT4NCisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+Q291cmllcjwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMTUiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4zNTA8L2FlPg0KKwkJCQkJPGFlPjI3NjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmRhdGU8L2FlPg0KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPg0KKwkJCQk8L3RlbXBsYXRlPg0KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5Db3VyaWVyPC9hZT4NCisJCQkJPGFlPjg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQxNiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjQzMTwvYWU+DQorCQkJCQk8YWU+Mjc2PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgwPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5Pg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnRpbWU8L2FlPg0KKwkJCQk8YWU+c2hvcnQ8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDE3Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTExPC9hZT4NCisJCQkJCTxhZT4yNzY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODE8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+dGltZTwvYWU+DQorCQkJCTxhZT5zaG9ydDwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMTgiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41OTM8L2FlPg0KKwkJCQkJPGFlPjI3NjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmZsb2F0PC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT4wPC9hZT4NCisJCQkJCTxhZT45OTk5Ljk5OTk8L2FlPg0KKwkJCQk8L3JhbmdlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8Y2hlY2sgc2lkPSJDSEVDSzQiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yODwvYWU+DQorCQkJCQk8YWU+MzIyPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIyPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkhlbHZldGljYTwvYWU+DQorCQkJCTxhZT4xODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvY2hlY2s+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDE5Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MjY5PC9hZT4NCisJCQkJCTxhZT4zMjE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5kYXRlPC9hZT4NCisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4NCisJCQkJPC90ZW1wbGF0ZT4NCisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+Q291cmllcjwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMjAiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4zNTA8L2FlPg0KKwkJCQkJPGFlPjMyMTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmRhdGU8L2FlPg0KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPg0KKwkJCQk8L3RlbXBsYXRlPg0KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5Db3VyaWVyPC9hZT4NCisJCQkJPGFlPjg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQyMSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjQzMTwvYWU+DQorCQkJCQk8YWU+MzIxPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjc5PC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5Pg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnRpbWU8L2FlPg0KKwkJCQk8YWU+c2hvcnQ8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDIyIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTExPC9hZT4NCisJCQkJCTxhZT4zMjE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODE8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+dGltZTwvYWU+DQorCQkJCTxhZT5zaG9ydDwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMjMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41OTM8L2FlPg0KKwkJCQkJPGFlPjMyMTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmZsb2F0PC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT4wPC9hZT4NCisJCQkJCTxhZT45OTk5Ljk5OTk8L2FlPg0KKwkJCQk8L3JhbmdlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8Y2hlY2sgc2lkPSJDSEVDSzUiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yODwvYWU+DQorCQkJCQk8YWU+MzY3PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIyPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkhlbHZldGljYTwvYWU+DQorCQkJCTxhZT4xODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvY2hlY2s+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDI0Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MjY5PC9hZT4NCisJCQkJCTxhZT4zNjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5kYXRlPC9hZT4NCisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4NCisJCQkJPC90ZW1wbGF0ZT4NCisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+Q291cmllcjwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMjUiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4zNTA8L2FlPg0KKwkJCQkJPGFlPjM2NjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmRhdGU8L2FlPg0KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPg0KKwkJCQk8L3RlbXBsYXRlPg0KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5Db3VyaWVyPC9hZT4NCisJCQkJPGFlPjg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQyNiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjQzMTwvYWU+DQorCQkJCQk8YWU+MzY2PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgwPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5Pg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnRpbWU8L2FlPg0KKwkJCQk8YWU+c2hvcnQ8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDI3Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTExPC9hZT4NCisJCQkJCTxhZT4zNjY8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODE8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+dGltZTwvYWU+DQorCQkJCTxhZT5zaG9ydDwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMjgiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41OTM8L2FlPg0KKwkJCQkJPGFlPjM2NjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmZsb2F0PC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT4wPC9hZT4NCisJCQkJCTxhZT45OTk5Ljk5OTk8L2FlPg0KKwkJCQk8L3JhbmdlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8Y2hlY2sgc2lkPSJDSEVDSzYiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xMjE8L2FlPg0KKwkJCQkJPGFlPjQxMjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xNTwvYWU+DQorCQkJCQk8YWU+MTQ8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPm9mZjwvdmFsdWU+DQorCQkJPGFjdGl2ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+b2ZmPC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAib24iIDogIm9mZiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvYWN0aXZlPg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWR3cml0ZTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkodmFsdWUgPT0gIm9uIikgPyAicmVhZG9ubHkiIDogInJlYWR3cml0ZSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxyYWRpb19jaGVjayBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCSgoQ0hFQ0s4LnZhbHVlID09ICJvbiIpIHx8IChDSEVDSzcudmFsdWUgPT0gIm9uIikpID8gc2V0KCJ2YWx1ZSIsICJvZmYiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L3JhZGlvX2NoZWNrPg0KKwkJPC9jaGVjaz4NCisJCTxjaGVjayBzaWQ9IkNIRUNLNyI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjEyMTwvYWU+DQorCQkJCQk8YWU+NDM4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE1PC9hZT4NCisJCQkJCTxhZT4xNDwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkhlbHZldGljYTwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8dmFsdWU+b2ZmPC92YWx1ZT4NCisJCQk8YWN0aXZlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5vZmY8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJvbiIgOiAib2ZmIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9hY3RpdmU+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZHdyaXRlPC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCSh2YWx1ZSA9PSAib24iKSA/ICJyZWFkb25seSIgOiAicmVhZHdyaXRlIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPHJhZGlvX2NoZWNrIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKChDSEVDSzgudmFsdWUgPT0gIm9uIikgfHwgKENIRUNLNi52YWx1ZSA9PSAib24iKSkgPyBzZXQoInZhbHVlIiwgIm9mZiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvcmFkaW9fY2hlY2s+DQorCQk8L2NoZWNrPg0KKwkJPGNoZWNrIHNpZD0iQ0hFQ0s4Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTE5PC9hZT4NCisJCQkJCTxhZT40MTI8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MTU8L2FlPg0KKwkJCQkJPGFlPjE0PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4NCisJCQkJPGFlPjEwPC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT5vZmY8L3ZhbHVlPg0KKwkJCTxhY3RpdmUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPm9mZjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm9uIiA6ICJvZmYiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2FjdGl2ZT4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkd3JpdGU8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKHZhbHVlID09ICJvbiIpID8gInJlYWRvbmx5IiA6ICJyZWFkd3JpdGUiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8cmFkaW9fY2hlY2sgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoKENIRUNLNi52YWx1ZSA9PSAib24iKSB8fCAoQ0hFQ0s3LnZhbHVlID09ICJvbiIpKSA/IHNldCgidmFsdWUiLCAib2ZmIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9yYWRpb19jaGVjaz4NCisJCTwvY2hlY2s+DQorCQk8Y2hlY2sgc2lkPSJDSEVDSzkiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yODwvYWU+DQorCQkJCQk8YWU+NDk1PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIyPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkhlbHZldGljYTwvYWU+DQorCQkJCTxhZT4xODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvY2hlY2s+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDI5Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MjY5PC9hZT4NCisJCQkJCTxhZT40OTg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5kYXRlPC9hZT4NCisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4NCisJCQkJPC90ZW1wbGF0ZT4NCisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+Q291cmllcjwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMzAiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4zNTA8L2FlPg0KKwkJCQkJPGFlPjQ5ODwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MTwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmRhdGU8L2FlPg0KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPg0KKwkJCQk8L3RlbXBsYXRlPg0KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5Db3VyaWVyPC9hZT4NCisJCQkJPGFlPjg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQzMSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjQzMjwvYWU+DQorCQkJCQk8YWU+NDk4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjc4PC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5Pg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnRpbWU8L2FlPg0KKwkJCQk8YWU+c2hvcnQ8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDMyIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTExPC9hZT4NCisJCQkJCTxhZT40OTg8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+dGltZTwvYWU+DQorCQkJCTxhZT5zaG9ydDwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMzMiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41OTI8L2FlPg0KKwkJCQkJPGFlPjQ5ODwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MTwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmZsb2F0PC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT4wPC9hZT4NCisJCQkJCTxhZT45OTk5Ljk5OTk8L2FlPg0KKwkJCQk8L3JhbmdlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8Y2hlY2sgc2lkPSJDSEVDSzEwIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+Mjg8L2FlPg0KKwkJCQkJPGFlPjU0MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMjwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPg0KKwkJCQk8YWU+MTg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2NoZWNrPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQzNCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjI2OTwvYWU+DQorCQkJCQk8YWU+NTQzPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgwPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5kYXRlPC9hZT4NCisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4NCisJCQkJPC90ZW1wbGF0ZT4NCisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkNvdXJpZXI8L2FlPg0KKwkJCQk8YWU+ODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDM1Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+MzUwPC9hZT4NCisJCQkJCTxhZT41NDM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODE8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmRhdGU8L2FlPg0KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPg0KKwkJCQk8L3RlbXBsYXRlPg0KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+Q291cmllcjwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMzYiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT40MzI8L2FlPg0KKwkJCQkJPGFlPjU0MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT43ODwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnRpbWU8L2FlPg0KKwkJCQk8YWU+c2hvcnQ8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQzNyI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjUxMTwvYWU+DQorCQkJCQk8YWU+NTQzPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgwPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5Pg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+dGltZTwvYWU+DQorCQkJCTxhZT5zaG9ydDwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKChDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQ0KKwkJCQkJPC9jb21wdXRlPg0KKwkJCQk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDM4Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NTkyPC9hZT4NCisJCQkJCTxhZT41NDM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODE8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmZsb2F0PC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT4wPC9hZT4NCisJCQkJCTxhZT45OTk5Ljk5OTk8L2FlPg0KKwkJCQk8L3JhbmdlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxMSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjI4PC9hZT4NCisJCQkJCTxhZT41OTE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+MjI8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4NCisJCQkJPGFlPjE4PC9hZT4NCisJCQkJPGFlPnBsYWluPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9jaGVjaz4NCisJCTxmaWVsZCBzaWQ9IkZJRUxEMzkiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yNjk8L2FlPg0KKwkJCQkJPGFlPjU5MDwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvY2hlY2tfb2ZmPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+ZGF0ZTwvYWU+DQorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+DQorCQkJCTwvdGVtcGxhdGU+DQorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5Db3VyaWVyPC9hZT4NCisJCQkJPGFlPjg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQ0MCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjM1MDwvYWU+DQorCQkJCQk8YWU+NTkwPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgxPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5kYXRlPC9hZT4NCisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4NCisJCQkJPC90ZW1wbGF0ZT4NCisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkNvdXJpZXI8L2FlPg0KKwkJCQk8YWU+ODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvZmllbGQ+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDQxIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NDMyPC9hZT4NCisJCQkJCTxhZT41OTA8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+Nzg8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT50aW1lPC9hZT4NCisJCQkJPGFlPnNob3J0PC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxmaWVsZCBzaWQ9IkZJRUxENDIiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT41MTE8L2FlPg0KKwkJCQkJPGFlPjU5MDwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT44MDwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4NCisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6Pg0KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0Pg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2VkaXRzdGF0ZT4NCisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L2NoZWNrX29mZj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnRpbWU8L2FlPg0KKwkJCQk8YWU+c2hvcnQ8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCSgoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikNCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L2Zvcm1hdD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQ0MyI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjU5MjwvYWU+DQorCQkJCQk8YWU+NTkwPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjgxPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9jaGVja19vZmY+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5mbG9hdDwvYWU+DQorCQkJCTxhZT5vcHRpb25hbDwvYWU+DQorCQkJCTxyYW5nZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+MDwvYWU+DQorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4NCisJCQkJPC9yYW5nZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9maWVsZD4NCisJCTxjaGVjayBzaWQ9IkNIRUNLMTIiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42ODA8L2FlPg0KKwkJCQkJPGFlPjMyNjwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4xNTwvYWU+DQorCQkJCQk8YWU+MTQ8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPg0KKwkJCQk8YWU+MTA8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2NoZWNrPg0KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxMyI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjY4OTwvYWU+DQorCQkJCQk8YWU+NDA0PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE1PC9hZT4NCisJCQkJCTxhZT4xNDwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkhlbHZldGljYTwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8YWN0aXZlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5vZmY8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTIudmFsdWUgPT0gIm9uIikgPyAib24iIDogIm9mZiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvYWN0aXZlPg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWR3cml0ZTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkodmFsdWUgPT0gIm9uIikgPyAicmVhZG9ubHkiIDogInJlYWR3cml0ZSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxyYWRpb19jaGVjayBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCSgoQ0hFQ0sxNC52YWx1ZSA9PSAib24iKSB8fCAoQ0hFQ0sxNS52YWx1ZSA9PSAib24iKSkgPyBzZXQoInZhbHVlIiwgIm9mZiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvcmFkaW9fY2hlY2s+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2NoZWNrPg0KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxNCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjY4OTwvYWU+DQorCQkJCQk8YWU+NDI4PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE1PC9hZT4NCisJCQkJCTxhZT4xNDwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkhlbHZldGljYTwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8YWN0aXZlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5vZmY8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTIudmFsdWUgPT0gIm9uIikgPyAib24iIDogIm9mZiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvYWN0aXZlPg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWR3cml0ZTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkodmFsdWUgPT0gIm9uIikgPyAicmVhZG9ubHkiIDogInJlYWR3cml0ZSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxyYWRpb19jaGVjayBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCSgoQ0hFQ0sxNS52YWx1ZSA9PSAib24iKSB8fCAoQ0hFQ0sxMy52YWx1ZSA9PSAib24iKSkgPyBzZXQoInZhbHVlIiwgIm9mZiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvcmFkaW9fY2hlY2s+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2NoZWNrPg0KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxNSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjY4OTwvYWU+DQorCQkJCQk8YWU+NDg1PC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE1PC9hZT4NCisJCQkJCTxhZT4xNDwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkhlbHZldGljYTwvYWU+DQorCQkJCTxhZT4xMDwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8YWN0aXZlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5vZmY8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTIudmFsdWUgPT0gIm9uIikgPyAib24iIDogIm9mZiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvYWN0aXZlPg0KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCTxjdmFsPnJlYWR3cml0ZTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkodmFsdWUgPT0gIm9uIikgPyAicmVhZG9ubHkiIDogInJlYWR3cml0ZSINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvZWRpdHN0YXRlPg0KKwkJCTxyYWRpb19jaGVjayBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCSgoQ0hFQ0sxNC52YWx1ZSA9PSAib24iKSB8fCAoQ0hFQ0sxMy52YWx1ZSA9PSAib24iKSkgPyBzZXQoInZhbHVlIiwgIm9mZiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvcmFkaW9fY2hlY2s+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2NoZWNrPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQ0NCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjQyPC9hZT4NCisJCQkJCTxhZT42NTc8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODQ2PC9hZT4NCisJCQkJCTxhZT41NzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4NCisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4NCisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5zdHJpbmc8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+DQorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4NCisJCQkJCTxjb21wdXRlPg0KKwkJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQ0NSI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjQyPC9hZT4NCisJCQkJCTxhZT43MTI8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmV4dGVudDwvYWU+DQorCQkJCQk8YWU+ODQ2PC9hZT4NCisJCQkJCTxhZT4zMTwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+c3RyaW5nPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+DQorCQkJCQk8Y29tcHV0ZT4NCisJCQkJCQkoQ0hFQ0s4LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiDQorCQkJCQk8L2NvbXB1dGU+DQorCQkJCTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLOC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGJ1dHRvbiBzaWQ9IkJVVFRPTjEiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4yNTA8L2FlPg0KKwkJCQkJPGFlPjgzOTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4zNDY8L2FlPg0KKwkJCQkJPGFlPjI3PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dHlwZT5zaWduYXR1cmU8L3R5cGU+DQorCQkJPHNpZ25hdHVyZT5TSUdOQVRVUkUxPC9zaWduYXR1cmU+DQorCQkJPHNpZ25lcj4oY3MpIEpvaG4gTS4gQm95ZXIsIGpib3llckBwdXJlZWRnZS5jb208L3NpZ25lcj4NCisJCQk8c2lnbm9wdGlvbnMgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+b21pdDwvYWU+DQorCQkJCTxhZT50cmlnZ2VyaXRlbTwvYWU+DQorCQkJPC9zaWdub3B0aW9ucz4NCisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+VGltZXM8L2FlPg0KKwkJCQk8YWU+ODwvYWU+DQorCQkJCTxhZT5ib2xkPC9hZT4NCisJCQk8L2ZvbnRpbmZvPg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8c2lnbml0ZW1yZWZzIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPm9taXQ8L2FlPg0KKwkJCQk8YWU+UEFHRTEuQ0hFQ0sxNjwvYWU+DQorCQkJCTxhZT5QQUdFMS5DSEVDSzE3PC9hZT4NCisJCQkJPGFlPlBBR0UxLkZJRUxENDc8L2FlPg0KKwkJCQk8YWU+UEFHRTEuQlVUVE9OMjwvYWU+DQorCQkJCTxhZT5TSUdOQVRVUkUyPC9hZT4NCisJCQkJPGFlPlBBR0UxLkZJRUxENDg8L2FlPg0KKwkJCTwvc2lnbml0ZW1yZWZzPg0KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+c3RyaW5nPC9hZT4NCisJCQkJPGFlPm1hbmRhdG9yeTwvYWU+DQorCQkJPC9mb3JtYXQ+DQorCQkJPHZhbHVlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD4oY3MpIEpvaG4gTS4gQm95ZXIsIGpib3llckBwdXJlZWRnZS5jb208L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJc2lnbmVyDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L3ZhbHVlPg0KKwkJPC9idXR0b24+DQorCQk8c2lnbmF0dXJlIHNpZD0iU0lHTkFUVVJFMSI+DQorCQkJPHNpZ25mb3JtYXQ+YXBwbGljYXRpb24veC14ZmRsOyBzaWduZW5naW5lPSJDcnlwdG9BUEkiPC9zaWduZm9ybWF0Pg0KKwkJCTxzaWduZXI+KGNzKSBKb2huIE0uIEJveWVyLCBqYm95ZXJAcHVyZWVkZ2UuY29tPC9zaWduZXI+DQorCQkJPHNpZ25hdHVyZT5QQUdFMS5CVVRUT04xPC9zaWduYXR1cmU+DQorCQkJPHNpZ25pdGVtcmVmcyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5vbWl0PC9hZT4NCisJCQkJPGFlPlBBR0UxLkNIRUNLMTY8L2FlPg0KKwkJCQk8YWU+UEFHRTEuQ0hFQ0sxNzwvYWU+DQorCQkJCTxhZT5QQUdFMS5GSUVMRDQ3PC9hZT4NCisJCQkJPGFlPlBBR0UxLkJVVFRPTjI8L2FlPg0KKwkJCQk8YWU+U0lHTkFUVVJFMjwvYWU+DQorCQkJCTxhZT5QQUdFMS5GSUVMRDQ4PC9hZT4NCisJCQk8L3NpZ25pdGVtcmVmcz4NCisJCQk8c2lnbm9wdGlvbnMgY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWU+b21pdDwvYWU+DQorCQkJCTxhZT50cmlnZ2VyaXRlbTwvYWU+DQorCQkJPC9zaWdub3B0aW9ucz4NCisJCQk8ZnVsbG5hbWU+UHVyZUVkZ2UgU29sdXRpb25zIEluYy4sIFB1YmxpYyBMZXZlbCAxIFNlcnZpY2UgT2ZmZXJpbmcgQ0EsIHd3dy52ZXJpc2lnbi5jb20vcmVwb3NpdG9yeS9DUFMgSW5jb3JwLiBieSBSZWYuLExJQUIuTFREKGMpOTYsIEN1c3RvbWVyIC0gQ3VzdG9tZXJTZXJ2aWNlLCBDdXN0b21lciBJbmZvMiAtIFB1cmVFZGdlLCAoY3MpIEpvaG4gTS4gQm95ZXIsIGpib3llckBwdXJlZWRnZS5jb208L2Z1bGxuYW1lPg0KKwkJCTxtaW1lZGF0YT4NCisJCQkgICAgTUlJR3dRWUpLb1pJaHZjTkFRY0NvSUlHc2pDQ0JxNENBUUV4Q3pBSkJnVXJEZ01DR2cNCisJCQkgICAgVUFNQXNHQ1NxR1NJYjNEUUVIQWFDQ0JPVXdnZ1RoTUlJRVNxQURBZ0VDQWhBdCtmRjENCisJCQkgICAgdUhqQWtiaXNnWG5VODgyK01BMEdDU3FHU0liM0RRRUJCQVVBTUlIb01TQXdIZ1lEVlENCisJCQkgICAgUUtFeGRRZFhKbFJXUm5aU0JUYjJ4MWRHbHZibk1nU1c1akxqRWZNQjBHQTFVRUN4TVcNCisJCQkgICAgVm1WeWFWTnBaMjRnVkhKMWMzUWdUbVYwZDI5eWF6RTdNRGtHQTFVRUN4TXlWR1Z5YlgNCisJCQkgICAgTWdiMllnZFhObElHRjBJR2gwZEhCek9pOHZkM2QzTG5abGNtbHphV2R1TG1OdmJTOVMNCisJCQkgICAgVUVFZ0tHTXBNREF4TWpBd0JnTlZCQXNUS1VOc1lYTnpJREVnUTBFZ0xTQlBibE5wZEcNCisJCQkgICAgVWdTVzVrYVhacFpIVmhiQ0JUZFdKelkzSnBZbVZ5TVRJd01BWURWUVFERXlsUWRYSmwNCisJCQkgICAgUldSblpTQlRiMngxZEdsdmJuTWdTVzVqTGlCTVpYWmxiQ0F4SUZCMVlteHBZeUJEUVQNCisJCQkgICAgQWVGdzB3TWpBME1URXdNREF3TURCYUZ3MHdNekEwTVRFeU16VTVOVGxhTUlJQklURWcNCisJCQkgICAgTUI0R0ExVUVDaFFYVUhWeVpVVmtaMlVnVTI5c2RYUnBiMjV6SUVsdVl5NHhLekFwQmcNCisJCQkgICAgTlZCQXNVSWxCMVlteHBZeUJNWlhabGJDQXhJRk5sY25acFkyVWdUMlptWlhKcGJtY2cNCisJCQkgICAgUTBFeFJqQkVCZ05WQkFzVFBYZDNkeTUyWlhKcGMybG5iaTVqYjIwdmNtVndiM05wZEcNCisJCQkgICAgOXllUzlEVUZNZ1NXNWpiM0p3TGlCaWVTQlNaV1l1TEV4SlFVSXVURlJFS0dNcE9UWXgNCisJCQkgICAgSXpBaEJnTlZCQXNVR2tOMWMzUnZiV1Z5SUMwZ1EzVnpkRzl0WlhKVFpYSjJhV05sTVMNCisJCQkgICAgSXdJQVlEVlFRTEZCbERkWE4wYjIxbGNpQkpibVp2TWlBdElGQjFjbVZGWkdkbE1Sc3cNCisJCQkgICAgR1FZRFZRUURFeElvWTNNcElFcHZhRzRnVFM0Z1FtOTVaWEl4SWpBZ0Jna3Foa2lHOXcNCisJCQkgICAgMEJDUUVXRTJwaWIzbGxja0J3ZFhKbFpXUm5aUzVqYjIwd2daOHdEUVlKS29aSWh2Y04NCisJCQkgICAgQVFFQkJRQURnWTBBTUlHSkFvR0JBTlhhc0g5Y3dzdGlwWXRJM05GVXhvWWE3VGJGUWQNCisJCQkgICAgYjl6YkpyRURkeGlseU1xT3U1anV5bU42NUQxR0E2VlpLcHprWnFKc2xldEVPVFdtMncNCisJCQkgICAgcnVIcmpFWTY2YkhkSmJhVTlNZzUwaUJNWjQzRG1pdkJWTTlObW95N21lMW94cXRHUGYNCisJCQkgICAgdG53REJwQXJDbWlOaXphZFRyU01SdVdlbFdlWmwrNE1hc1R3S05aaU5SQWdNQkFBR2oNCisJCQkgICAgZ2dGT01JSUJTakFKQmdOVkhSTUVBakFBTUlHc0JnTlZIU0FFZ2FRd2dhRXdnWjRHQzINCisJCQkgICAgQ0dTQUdHK0VVQkJ3RUJNSUdPTUNnR0NDc0dBUVVGQndJQkZoeG9kSFJ3Y3pvdkwzZDMNCisJCQkgICAgZHk1MlpYSnBjMmxuYmk1amIyMHZRMUJUTUdJR0NDc0dBUVVGQndJQ01GWXdGUllPVm0NCisJCQkgICAgVnlhVk5wWjI0c0lFbHVZeTR3QXdJQkFSbzlWbVZ5YVZOcFoyNG5jeUJEVUZNZ2FXNWoNCisJCQkgICAgYjNKd0xpQmllU0J5WldabGNtVnVZMlVnYkdsaFlpNGdiSFJrTGlBb1l5azVOeUJXWlgNCisJCQkgICAgSnBVMmxuYmpBTEJnTlZIUThFQkFNQ0JhQXdFUVlKWUlaSUFZYjRRZ0VCQkFRREFnZUENCisJCQkgICAgTUc0R0ExVWRId1JuTUdVd1k2QmhvRitHWFdoMGRIQTZMeTl2Ym5OcGRHVmpjbXd1ZG0NCisJCQkgICAgVnlhWE5wWjI0dVkyOXRMMUIxY21WRlpHZGxVMjlzZFhScGIyNXpTVzVqVUhWaWJHbGoNCisJCQkgICAgVEdWMlpXd3hVMlZ5ZG1salpVOW1abVZ5YVc1blEwRXZUR0YwWlhOMFExSk1MbU55YkQNCisJCQkgICAgQU5CZ2txaGtpRzl3MEJBUVFGQUFPQmdRQ0hXRGF3L2YycTlseVA1bEtyOTdrazlDUTQNCisJCQkgICAgNHNZcm1aVU8xV2lzdVpQcHBjTUVtb283U05zdDBzS0IxREo2NC9hTVhlZnRxc1NSSEgNCisJCQkgICAgQm9aNURoanBVS3MzbVVsQ1dhcUx0ZDc5WFViSlRCcDRMTm9oaGJNZ3VjZlk5MlNpMksNCisJCQkgICAgVXVBWUJNWksydmU0NkJTSkh4STc1bkFIbnV4RGx1bS9MbHFsQ3VSWThpUVdMekdDQWENCisJCQkgICAgUXdnZ0dnQWdFQk1JSDlNSUhvTVNBd0hnWURWUVFLRXhkUWRYSmxSV1JuWlNCVGIyeDENCisJCQkgICAgZEdsdmJuTWdTVzVqTGpFZk1CMEdBMVVFQ3hNV1ZtVnlhVk5wWjI0Z1ZISjFjM1FnVG0NCisJCQkgICAgVjBkMjl5YXpFN01Ea0dBMVVFQ3hNeVZHVnliWE1nYjJZZ2RYTmxJR0YwSUdoMGRIQnoNCisJCQkgICAgT2k4dmQzZDNMblpsY21semFXZHVMbU52YlM5U1VFRWdLR01wTURBeE1qQXdCZ05WQkENCisJCQkgICAgc1RLVU5zWVhOeklERWdRMEVnTFNCUGJsTnBkR1VnU1c1a2FYWnBaSFZoYkNCVGRXSnoNCisJCQkgICAgWTNKcFltVnlNVEl3TUFZRFZRUURFeWxRZFhKbFJXUm5aU0JUYjJ4MWRHbHZibk1nU1cNCisJCQkgICAgNWpMaUJNWlhabGJDQXhJRkIxWW14cFl5QkRRUUlRTGZueGRiaDR3Skc0cklGNTFQUE4NCisJCQkgICAgdmpBSkJnVXJEZ01DR2dVQU1BMEdDU3FHU0liM0RRRUJBUVVBQklHQXlsRFQvby84UGkNCisJCQkgICAgaXNpS3IvcTNDYnlGMXVkRGQ2azIwUFhYWmdiTHlXUE0rQjVPM1lHU2pNUDBTME82dWENCisJCQkgICAgMnBHRi9Lai9TRHRmaGRWZGgwYTM3bXk2UDFhNm1uNU9TOUtlc1hLQUU1elB4dXhZM2wNCisJCQkgICAgVzl0OFhYNkdnU3Bzc2M4VVR5bHd3NlZxa3Z2eHh5QnBLYTNPUkc2YkN6NFhpTmtVRk0NCisJCQkgICAgdDIxY2l1emp2cHc9DQorCQkJPC9taW1lZGF0YT4NCisJCTwvc2lnbmF0dXJlPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQ0NiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjY1NTwvYWU+DQorCQkJCQk8YWU+ODQwPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE1NTwvYWU+DQorCQkJCQk8YWU+Mjc8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8ZWRpdHN0YXRlPnJlYWRvbmx5PC9lZGl0c3RhdGU+DQorCQkJPHZhbHVlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD4wNS0wOC0wMjwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQlVUVE9OMS52YWx1ZSAhPSAiIikgPyAiKiIgOiAiIg0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC92YWx1ZT4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPmRhdGU8L2FlPg0KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPg0KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+DQorCQkJPC9mb3JtYXQ+DQorCQk8L2ZpZWxkPg0KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxNiI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjM2MjwvYWU+DQorCQkJCQk8YWU+ODczPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjIyPC9hZT4NCisJCQkJCTxhZT4yMzwvYWU+DQorCQkJCTwvYWU+DQorCQkJPC9pdGVtbG9jYXRpb24+DQorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPkhlbHZldGljYTwvYWU+DQorCQkJCTxhZT4xODwvYWU+DQorCQkJCTxhZT5wbGFpbjwvYWU+DQorCQkJPC9mb250aW5mbz4NCisJCQk8cmFkaW9fYmVoYXZpb3VyIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKENIRUNLMTcudmFsdWUgPT0gIm9uIikgPyBzZXQoInZhbHVlIiwgIm9mZiIpIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvcmFkaW9fYmVoYXZpb3VyPg0KKwkJCTx2YWx1ZT48L3ZhbHVlPg0KKwkJPC9jaGVjaz4NCisJCTxjaGVjayBzaWQ9IkNIRUNLMTciPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT42MDQ8L2FlPg0KKwkJCQkJPGFlPjg3MzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT4yMjwvYWU+DQorCQkJCQk8YWU+MjM8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPg0KKwkJCQk8YWU+MTg8L2FlPg0KKwkJCQk8YWU+cGxhaW48L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHJhZGlvX2JlaGF2aW91ciBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJPGN2YWw+PC9jdmFsPg0KKwkJCQk8Y29tcHV0ZT4NCisJCQkJCShDSEVDSzE2LnZhbHVlID09ICJvbiIpID8gc2V0KCJ2YWx1ZSIsICJvZmYiKSA6ICIiDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L3JhZGlvX2JlaGF2aW91cj4NCisJCQk8dmFsdWU+PC92YWx1ZT4NCisJCTwvY2hlY2s+DQorCQk8ZmllbGQgc2lkPSJGSUVMRDQ3Ij4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+NDE8L2FlPg0KKwkJCQkJPGFlPjkxNzwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT43NzA8L2FlPg0KKwkJCQkJPGFlPjIzPC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8Rm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnN0cmluZzwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4NCisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPg0KKwkJCQkJPGNvbXB1dGU+DQorCQkJCQkJKENIRUNLMTcudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCINCisJCQkJCTwvY29tcHV0ZT4NCisJCQkJPC9hZT4NCisJCQk8L0Zvcm1hdD4NCisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4NCisJCQkJPGNvbXB1dGU+DQorCQkJCQkoQ0hFQ0sxNy52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5Ig0KKwkJCQk8L2NvbXB1dGU+DQorCQkJPC9lZGl0c3RhdGU+DQorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPg0KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+DQorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+DQorCQkJPHZhbHVlPjwvdmFsdWU+DQorCQk8L2ZpZWxkPg0KKwkJPGJ1dHRvbiBzaWQ9IkJVVFRPTjIiPg0KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPg0KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPg0KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4NCisJCQkJCTxhZT4xMzI8L2FlPg0KKwkJCQkJPGFlPjkzOTwvYWU+DQorCQkJCTwvYWU+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+ZXh0ZW50PC9hZT4NCisJCQkJCTxhZT40NjY8L2FlPg0KKwkJCQkJPGFlPjI3PC9hZT4NCisJCQkJPC9hZT4NCisJCQk8L2l0ZW1sb2NhdGlvbj4NCisJCQk8dHlwZT5zaWduYXR1cmU8L3R5cGU+DQorCQkJPHNpZ25hdHVyZT5TSUdOQVRVUkUyPC9zaWduYXR1cmU+DQorCQkJPHNpZ25lcj48L3NpZ25lcj4NCisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlPnN0cmluZzwvYWU+DQorCQkJCTxhZT5tYW5kYXRvcnk8L2FlPg0KKwkJCTwvZm9ybWF0Pg0KKwkJCTxzaWdub3B0aW9ucyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5vbWl0PC9hZT4NCisJCQkJPGFlPnRyaWdnZXJpdGVtPC9hZT4NCisJCQk8L3NpZ25vcHRpb25zPg0KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5UaW1lczwvYWU+DQorCQkJCTxhZT44PC9hZT4NCisJCQkJPGFlPmJvbGQ8L2FlPg0KKwkJCTwvZm9udGluZm8+DQorCQkJPHZhbHVlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJc2lnbmVyDQorCQkJCTwvY29tcHV0ZT4NCisJCQk8L3ZhbHVlPg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCTwvYnV0dG9uPg0KKwkJPGZpZWxkIHNpZD0iRklFTEQ0OCI+DQorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+DQorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPg0KKwkJCQkJPGFlPjY1NjwvYWU+DQorCQkJCQk8YWU+OTQwPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE1NTwvYWU+DQorCQkJCQk8YWU+Mjc8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4NCisJCQk8ZWRpdHN0YXRlPnJlYWRvbmx5PC9lZGl0c3RhdGU+DQorCQkJPHZhbHVlIGNvbnRlbnQ9ImNvbXB1dGUiPg0KKwkJCQk8Y3ZhbD48L2N2YWw+DQorCQkJCTxjb21wdXRlPg0KKwkJCQkJKEJVVFRPTjIudmFsdWUgIT0gIiIpID8gIioiIDogIiINCisJCQkJPC9jb21wdXRlPg0KKwkJCTwvdmFsdWU+DQorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+DQorCQkJCTxhZT5kYXRlPC9hZT4NCisJCQkJPGFlPm9wdGlvbmFsPC9hZT4NCisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPg0KKwkJCTwvZm9ybWF0Pg0KKwkJPC9maWVsZD4NCisJCTxzcGFjZXIgc2lkPSJ2ZmRfc3BhY2VyIj4NCisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+DQorCQkJCQk8YWU+OTYwPC9hZT4NCisJCQkJCTxhZT4xMjYwPC9hZT4NCisJCQkJPC9hZT4NCisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4NCisJCQkJCTxhZT5leHRlbnQ8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQkJPGFlPjE8L2FlPg0KKwkJCQk8L2FlPg0KKwkJCTwvaXRlbWxvY2F0aW9uPg0KKwkJPC9zcGFjZXI+DQorCTwvcGFnZT4NCis8L1hGREw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9jb20vcnNhc2VjdXJpdHkvYmRvdXJuYWVlL2NlcnRqMjAxX2VudmVsb3BlZC54bWwgYi9kYXRhL2NvbS9yc2FzZWN1cml0eS9iZG91cm5hZWUvY2VydGoyMDFfZW52ZWxvcGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzA2Yzc4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcnNhc2VjdXJpdHkvYmRvdXJuYWVlL2NlcnRqMjAxX2VudmVsb3BlZC54bWwKQEAgLTAsMCArMSwyNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxGT08geG1sbnM9Imh0dHA6Ly93d3cuZm9vLm9yZy9mb28iPgorZm9vCis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgPFNpZ25lZEluZm8+CisgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPgorICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KKyAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgIDxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz4KKyAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPgorICAgICAgPERpZ2VzdFZhbHVlPjF3RklsVzBzaTFGQjJHOEFrN0xkQzlZV1p1RT08L0RpZ2VzdFZhbHVlPgorICAgIDwvUmVmZXJlbmNlPgorICA8L1NpZ25lZEluZm8+CisgIDxTaWduYXR1cmVWYWx1ZT5vQWhCbExieTl5c0NwWlozQStBUGpSWDZQZjc2M1J3Z0J4djVNQlVmUHJCZ085dzlaVUNtYVZObThzM1ZtY29CeEN6QSt5YUhNdzBYDQord2k4WWRMdGZ2UT09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz4KKyAgICA8S2V5VmFsdWU+CisgICAgPFJTQUtleVZhbHVlPgorICAgICAgICA8TW9kdWx1cz4xOUdpa0t3Wkc4TkZ0NlRSd25EMXpVYmo3ZElwNVdZajhncWs0S1VJaW83cGQ5Ly92Vm5QekYyUUxCVWpiMlBLNkRKZjBrWmtVcEh2DQorN1J3a2xVOXNuUT09PC9Nb2R1bHVzPgorICAgICAgICA8RXhwb25lbnQ+RVE9PTwvRXhwb25lbnQ+CisgICAgICA8L1JTQUtleVZhbHVlPgorICAgIDwvS2V5VmFsdWU+CisgIDwvS2V5SW5mbz4KKzwvU2lnbmF0dXJlPjwvRk9PPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvY29tL3JzYXNlY3VyaXR5L2Jkb3VybmFlZS9jZXJ0ajIwMV9lbnZlbG9waW5nLnhtbCBiL2RhdGEvY29tL3JzYXNlY3VyaXR5L2Jkb3VybmFlZS9jZXJ0ajIwMV9lbnZlbG9waW5nLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTQ2N2U5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9jb20vcnNhc2VjdXJpdHkvYmRvdXJuYWVlL2NlcnRqMjAxX2VudmVsb3BpbmcueG1sCkBAIC0wLDAgKzEsMjUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgPFNpZ25lZEluZm8+CisgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPgorICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiLz4KKyAgICA8UmVmZXJlbmNlIFVSST0iI2VudmVsb3BlZERhdGEiPgorICAgICAgPFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+CisgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz4KKyAgICAgIDxEaWdlc3RWYWx1ZT5pa1JKVFp6TTd1V3BhWHRtSWNKeVR3bXQ4UXc9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgorICA8U2lnbmF0dXJlVmFsdWU+ZERBN3ZtOEtzczVzTG9jWU1nL2xXZFVEWVZzZlRRSjhRZm1BTEtERnIzQnJBUm1CWkJxQU9WZmZTMlh3L2RsWWVRQmZVV1BJTnY3Lw0KK2NpWWpVejB4Q2c9PTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+CisgICAgPEtleVZhbHVlPgorICAgIDxSU0FLZXlWYWx1ZT4KKyAgICAgICAgPE1vZHVsdXM+dUhsUGwwQklLWU5MTjZjMjJJWXd4SllZRlY2ZzhPeGs3Wmx5aXFGaS9EUmJEVzNlNWI1UUJOeFVvZjBRTWFDZmdZR1lRc2h0VHRRSA0KKzJGdDVQQUZaMFE9PTwvTW9kdWx1cz4KKyAgICAgICAgPEV4cG9uZW50PkVRPT08L0V4cG9uZW50PgorICAgICAgPC9SU0FLZXlWYWx1ZT4KKyAgICA8L0tleVZhbHVlPgorICA8L0tleUluZm8+Cis8ZHNpZzpPYmplY3QgSWQ9ImVudmVsb3BlZERhdGEiIHhtbG5zPSIiIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxGT08geG1sbnM9Imh0dHA6Ly93d3cuZm9vLm9yZy9mb28iPgorZm9vCis8L0ZPTz48L2RzaWc6T2JqZWN0PjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9lYy1tZXJsaW4taWFpa1Rlc3RzLXR3by9SZWFkbWUudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL2VjLW1lcmxpbi1pYWlrVGVzdHMtdHdvL1JlYWRtZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjMzMjI4NgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9lYy1tZXJsaW4taWFpa1Rlc3RzLXR3by9SZWFkbWUudHh0CkBAIC0wLDAgKzEsMjIgQEAKK0dyZWdvciBLYXJsaW5nZXIgPGdyZWdvci5rYXJsaW5nZXJAaWFpay5hdD4ncyBleGNsdXNpdmUKK2MxNG5bMV0gZXhhbXBsZXNbMl0gZHVtcGVkIGluIGFuIFhNTCBTaWduYXR1cmVbM10sIHRoZXJlYnkKK3VuZG9pbmcgdGhlaXIgdXNlZnVsbmVzcyBhcyBzdGFuZGFsb25lIGV4Y2x1c2l2ZSBjMTRuCitleGFtcGxlcywgYnV0IHNpbXBsaWZ5aW5nIHRoZWlyIHRlc3RpbmcuIEFsbCBlcnJvcnMgYXJlCitteSBvd24uIFZlcnNpb24gMi4KKworLiBpYWlrVGVzdHMuZXhhbXBsZT8ueG1sIC0gR3JlZ29yJ3MgZXhhbXBsZXMgKCopCisuIHNpZ25hdHVyZS54bWwgLSBTaWduYXR1cmUgcmVwcmVzZW50aW5nIHRoZSBleGFtcGxlcworLiBzaWduYXR1cmUudG1wbCAtIFNpZ25hdHVyZSB0ZW1wbGF0ZQorLiBjMTRuLT8udHh0IC0gSW50ZXJtZWRpYXRlIGMxNG4gb3V0cHV0CisKKygqKSBJIHJhbiBwZXJsIC1waSAtZSAncy9mb28uY29tL2V4YW1wbGUub3JnL2cnIG9uIHRoZSBmaWxlcy4KKworWzFdIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDIvQ1IteG1sLWV4Yy1jMTRuLTIwMDIwMjEyCitbMl0gaHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvdzNjLWlldGYteG1sZHNpZy8yMDAySmFuTWFyLzAyNTkuaHRtbAorWzNdIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDIvUkVDLXhtbGRzaWctY29yZS0yMDAyMDIxMi8KKworTWVybGluIEh1Z2hlcyA8bWVybGluQGJhbHRpbW9yZS5pZT4KK0JhbHRpbW9yZSBUZWNobm9sb2dpZXMsIEx0ZC4KK2h0dHA6Ly93d3cuYmFsdGltb3JlLmNvbS8KKworVGh1cnNkYXksIEFwcmlsIDE4LCAyMDAyCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvZWMtbWVybGluLWlhaWtUZXN0cy10d28vYzE0bi0wLnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9lYy1tZXJsaW4taWFpa1Rlc3RzLXR3by9jMTRuLTAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1YmQ2ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvZWMtbWVybGluLWlhaWtUZXN0cy10d28vYzE0bi0wLnR4dApAQCAtMCwwICsxLDMgQEAKKzxQYXJlbnQgeG1sOmZvbz0iYmFyIiB4bWw6Zm9vbD0iYmFyYmFyIiB4bWw6bGFuZz0iZW4iIHhtbDpzcGFjZT0iZGVmYXVsdCI+CisgICAgPEdyYW5kQ2hpbGQgeG1sOmZvbz0iYmFyYmFyb3NzYSIgeG1sOmZvb2w9ImJhcmJhciIgeG1sOmxhbmc9ImdlIiB4bWw6c3BhY2U9InByZXNlcnZlIj48L0dyYW5kQ2hpbGQ+CisgIDwvUGFyZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9lYy1tZXJsaW4taWFpa1Rlc3RzLXR3by9jMTRuLTEudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL2VjLW1lcmxpbi1pYWlrVGVzdHMtdHdvL2MxNG4tMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQxZWNlNgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9lYy1tZXJsaW4taWFpa1Rlc3RzLXR3by9jMTRuLTEudHh0CkBAIC0wLDAgKzEsMyBAQAorPFBhcmVudCB4bWw6Zm9vPSJiYXIiIHhtbDpmb29sPSJiYXJiYXIiPgorICAgIDxHcmFuZENoaWxkIHhtbDpzcGFjZT0icHJlc2VydmUiPjwvR3JhbmRDaGlsZD4KKyAgPC9QYXJlbnQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL2VjLW1lcmxpbi1pYWlrVGVzdHMtdHdvL2MxNG4tMi50eHQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvZWMtbWVybGluLWlhaWtUZXN0cy10d28vYzE0bi0yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWE0OGQzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL2VjLW1lcmxpbi1pYWlrVGVzdHMtdHdvL2MxNG4tMi50eHQKQEAgLTAsMCArMSwzIEBACis8UGFyZW50PgorICAgIDxHcmFuZENoaWxkPjwvR3JhbmRDaGlsZD4KKyAgPC9QYXJlbnQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL2VjLW1lcmxpbi1pYWlrVGVzdHMtdHdvL2MxNG4tMy50eHQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvZWMtbWVybGluLWlhaWtUZXN0cy10d28vYzE0bi0zLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWE0OGQzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL2VjLW1lcmxpbi1pYWlrVGVzdHMtdHdvL2MxNG4tMy50eHQKQEAgLTAsMCArMSwzIEBACis8UGFyZW50PgorICAgIDxHcmFuZENoaWxkPjwvR3JhbmRDaGlsZD4KKyAgPC9QYXJlbnQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL2VjLW1lcmxpbi1pYWlrVGVzdHMtdHdvL2MxNG4tNC50eHQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvZWMtbWVybGluLWlhaWtUZXN0cy10d28vYzE0bi00LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDJhM2M5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL2VjLW1lcmxpbi1pYWlrVGVzdHMtdHdvL2MxNG4tNC50eHQKQEAgLTAsMCArMSwzIEBACis8UGFyZW50IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvZGVmYXVsdCI+CisgICAgPG5zMTpHcmFuZENoaWxkIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSI+PC9uczE6R3JhbmRDaGlsZD48bnMxOkdyYW5kQ2hpbGQgeG1sbnM9Imh0dHA6Ly9iYXIuY29tL2RlZmF1bHQiIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSIgR2VuZGVyPSJtYWxlIj48L25zMTpHcmFuZENoaWxkPjxHcmFuZENoaWxkIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSI+PC9HcmFuZENoaWxkPjxHcmFuZENoaWxkIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSIgbnMxOkdlbmRlcj0ibWFsZSI+PC9HcmFuZENoaWxkPgorICA8L1BhcmVudD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvZWMtbWVybGluLWlhaWtUZXN0cy10d28vYzE0bi01LnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9lYy1tZXJsaW4taWFpa1Rlc3RzLXR3by9jMTRuLTUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiMTg4ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvZWMtbWVybGluLWlhaWtUZXN0cy10d28vYzE0bi01LnR4dApAQCAtMCwwICsxLDMgQEAKKzxQYXJlbnQgeG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy9kZWZhdWx0Ij4KKyAgICA8bnMxOkdyYW5kQ2hpbGQgeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIj48L25zMTpHcmFuZENoaWxkPjxuczE6R3JhbmRDaGlsZCB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiIEdlbmRlcj0ibWFsZSI+PC9uczE6R3JhbmRDaGlsZD48R3JhbmRDaGlsZD48L0dyYW5kQ2hpbGQ+PEdyYW5kQ2hpbGQgeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIiBuczE6R2VuZGVyPSJtYWxlIj48L0dyYW5kQ2hpbGQ+CisgIDwvUGFyZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9lYy1tZXJsaW4taWFpa1Rlc3RzLXR3by9jMTRuLTYudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL2VjLW1lcmxpbi1pYWlrVGVzdHMtdHdvL2MxNG4tNi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDljODEwZAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9lYy1tZXJsaW4taWFpa1Rlc3RzLXR3by9jMTRuLTYudHh0CkBAIC0wLDAgKzEsMyBAQAorPFBhcmVudD4KKyAgICA8bnMxOkdyYW5kQ2hpbGQgeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIiB4bWxuczpuczI9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczIiPjwvbnMxOkdyYW5kQ2hpbGQ+CisgIDwvUGFyZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9lYy1tZXJsaW4taWFpa1Rlc3RzLXR3by9jMTRuLTcudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL2VjLW1lcmxpbi1pYWlrVGVzdHMtdHdvL2MxNG4tNy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDljODEwZAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9lYy1tZXJsaW4taWFpa1Rlc3RzLXR3by9jMTRuLTcudHh0CkBAIC0wLDAgKzEsMyBAQAorPFBhcmVudD4KKyAgICA8bnMxOkdyYW5kQ2hpbGQgeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIiB4bWxuczpuczI9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczIiPjwvbnMxOkdyYW5kQ2hpbGQ+CisgIDwvUGFyZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9lYy1tZXJsaW4taWFpa1Rlc3RzLXR3by9jMTRuLTgudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL2VjLW1lcmxpbi1pYWlrVGVzdHMtdHdvL2MxNG4tOC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmUxMTE3YwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9lYy1tZXJsaW4taWFpa1Rlc3RzLXR3by9jMTRuLTgudHh0CkBAIC0wLDAgKzEsODIgQEAKKzxTaWduZWRJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ij48L0Nhbm9uaWNhbGl6YXRpb25NZXRob2Q+CisgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSI+PC9TaWduYXR1cmVNZXRob2Q+CisgICAgPFJlZmVyZW5jZSBVUkk9ImlhaWtUZXN0cy5leGFtcGxlMS54bWwiPgorICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgPFhQYXRoPnNlbGY6OlBhcmVudCBvciAocGFyZW50OjpQYXJlbnQgYW5kIG5vdChzZWxmOjpDaGlsZCkpIG9yIHNlbGY6OkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpHcmFuZENoaWxkPC9YUGF0aD4KKyAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgPERpZ2VzdFZhbHVlPmF5QzdJQWp1bHU4VWpzMWw3SU9rcjA5WDlMbz08L0RpZ2VzdFZhbHVlPgorICAgIDwvUmVmZXJlbmNlPgorICAgIDxSZWZlcmVuY2UgVVJJPSJpYWlrVGVzdHMuZXhhbXBsZTEueG1sIj4KKyAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgIDxYUGF0aD5zZWxmOjpQYXJlbnQgb3IgKHBhcmVudDo6UGFyZW50IGFuZCBub3Qoc2VsZjo6Q2hpbGQpKSBvciBzZWxmOjpHcmFuZENoaWxkIG9yIHBhcmVudDo6R3JhbmRDaGlsZDwvWFBhdGg+CisgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj48L1RyYW5zZm9ybT4KKyAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICA8RGlnZXN0VmFsdWU+dFljUFllWFdVcEJ3Q0pLYVBIcG5UK29jN0ZRPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgICAgPFJlZmVyZW5jZSBVUkk9ImlhaWtUZXN0cy5leGFtcGxlMi54bWwiPgorICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgPFhQYXRoIHhtbG5zOmRlZmF1bHQ9Imh0dHA6Ly9leGFtcGxlLm9yZyI+c2VsZjo6UGFyZW50IG9yIChwYXJlbnQ6OlBhcmVudCBhbmQgbm90KHNlbGY6OmRlZmF1bHQ6Q2hpbGQpKSBvciBzZWxmOjpHcmFuZENoaWxkIG9yIHBhcmVudDo6R3JhbmRDaGlsZDwvWFBhdGg+CisgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgIDxEaWdlc3RWYWx1ZT4zL0U5OS9XV3VyTW81UkIzUjltUE1pOFROZWs9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgICA8UmVmZXJlbmNlIFVSST0iaWFpa1Rlc3RzLmV4YW1wbGUyLnhtbCI+CisgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICA8WFBhdGggeG1sbnM6ZGVmYXVsdD0iaHR0cDovL2V4YW1wbGUub3JnIj5zZWxmOjpQYXJlbnQgb3IgKHBhcmVudDo6UGFyZW50IGFuZCBub3Qoc2VsZjo6ZGVmYXVsdDpDaGlsZCkpIG9yIHNlbGY6OkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpHcmFuZENoaWxkPC9YUGF0aD4KKyAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPjwvVHJhbnNmb3JtPgorICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgIDxEaWdlc3RWYWx1ZT4zL0U5OS9XV3VyTW81UkIzUjltUE1pOFROZWs9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgICA8UmVmZXJlbmNlIFVSST0iaWFpa1Rlc3RzLmV4YW1wbGUzLnhtbCI+CisgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICA8WFBhdGggeG1sbnM6ZGVmYXVsdD0iaHR0cDovL2V4YW1wbGUub3JnL2RlZmF1bHQiIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSI+c2VsZjo6ZGVmYXVsdDpQYXJlbnQgb3IgKHBhcmVudDo6ZGVmYXVsdDpQYXJlbnQgYW5kIG5vdChzZWxmOjpkZWZhdWx0OkNoaWxkKSkgb3Igc2VsZjo6bnMxOkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpuczE6R3JhbmRDaGlsZCBvciBzZWxmOjpkZWZhdWx0OkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpkZWZhdWx0OkdyYW5kQ2hpbGQ8L1hQYXRoPgorICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICA8RGlnZXN0VmFsdWU+Kzl5NEpIWHhzUVNKaXRRUytxZHRLZDdQNUxFPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgICAgPFJlZmVyZW5jZSBVUkk9ImlhaWtUZXN0cy5leGFtcGxlMy54bWwiPgorICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgPFhQYXRoIHhtbG5zOmRlZmF1bHQ9Imh0dHA6Ly9leGFtcGxlLm9yZy9kZWZhdWx0IiB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiPnNlbGY6OmRlZmF1bHQ6UGFyZW50IG9yIChwYXJlbnQ6OmRlZmF1bHQ6UGFyZW50IGFuZCBub3Qoc2VsZjo6ZGVmYXVsdDpDaGlsZCkpIG9yIHNlbGY6Om5zMTpHcmFuZENoaWxkIG9yIHBhcmVudDo6bnMxOkdyYW5kQ2hpbGQgb3Igc2VsZjo6ZGVmYXVsdDpHcmFuZENoaWxkIG9yIHBhcmVudDo6ZGVmYXVsdDpHcmFuZENoaWxkPC9YUGF0aD4KKyAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPjwvVHJhbnNmb3JtPgorICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgIDxEaWdlc3RWYWx1ZT5ITE9oYVRyRXhsVGc5QVJWZE9oSGRtMURBS2s9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgICA8UmVmZXJlbmNlIFVSST0iaWFpa1Rlc3RzLmV4YW1wbGU0LnhtbCI+CisgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICA8WFBhdGggeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIj5zZWxmOjpQYXJlbnQgb3IgKHBhcmVudDo6UGFyZW50IGFuZCBub3Qoc2VsZjo6Q2hpbGQpKSBvciBzZWxmOjpuczE6R3JhbmRDaGlsZCBvciBwYXJlbnQ6Om5zMTpHcmFuZENoaWxkPC9YUGF0aD4KKyAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgPERpZ2VzdFZhbHVlPkMrZzZWQUFtcTJyV0NxbUNmSHBMbjdCRkIvYz08L0RpZ2VzdFZhbHVlPgorICAgIDwvUmVmZXJlbmNlPgorICAgIDxSZWZlcmVuY2UgVVJJPSJpYWlrVGVzdHMuZXhhbXBsZTQueG1sIj4KKyAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgIDxYUGF0aCB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiPnNlbGY6OlBhcmVudCBvciAocGFyZW50OjpQYXJlbnQgYW5kIG5vdChzZWxmOjpDaGlsZCkpIG9yIHNlbGY6Om5zMTpHcmFuZENoaWxkIG9yIHBhcmVudDo6bnMxOkdyYW5kQ2hpbGQ8L1hQYXRoPgorICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+CisgICAgICAgICAgPEluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0ibnMyIj48L0luY2x1c2l2ZU5hbWVzcGFjZXM+CisgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgIDxEaWdlc3RWYWx1ZT5DK2c2VkFBbXEycldDcW1DZkhwTG43QkZCL2M9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9lYy1tZXJsaW4taWFpa1Rlc3RzLXR3by9pYWlrVGVzdHMuZXhhbXBsZTEueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL2VjLW1lcmxpbi1pYWlrVGVzdHMtdHdvL2lhaWtUZXN0cy5leGFtcGxlMS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNmZDU5NAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9lYy1tZXJsaW4taWFpa1Rlc3RzLXR3by9pYWlrVGVzdHMuZXhhbXBsZTEueG1sCkBAIC0wLDAgKzEsMzggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CisKKzwhLS0gWFBhdGg9InNlbGY6OlBhcmVudCBvciAocGFyZW50OjpQYXJlbnQgYW5kIG5vdChzZWxmOjpDaGlsZCkpIG9yIHNlbGY6OkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpHcmFuZENoaWxkIiAtLT4KKworPCEtLSBSZXN1bHQgQzE0TjoKKzxQYXJlbnQgeG1sOmZvbz0iYmFyIiB4bWw6Zm9vbD0iYmFyYmFyIiB4bWw6bGFuZz0iZW4iIHhtbDpzcGFjZT0iZGVmYXVsdCI+CisgICAgPEdyYW5kQ2hpbGQgeG1sOmZvbz0iYmFyYmFyb3NzYSIgeG1sOmZvb2w9ImJhcmJhciIgeG1sOmxhbmc9ImdlIiB4bWw6c3BhY2U9InByZXNlcnZlIj48L0dyYW5kQ2hpbGQ+CisgIDwvUGFyZW50PgorLS0+CisKKzwhLS0gQW5ub3RhdGlvbiBDMTROOgorMS4gUGFyZW50IGluaGVydHMgeG1sOmxhbmcgYW5kIHhtbDpzcGFjZSBzaW5jZSBpdCBpcyBhbiBvcnBoYW4gbm9kZS4KKzIuIFBhcmVudCBoYXMgZXhwbGljaXRseSBkZWNsYXJlZCBhdHRyaWJ1dGVzIHhtbDpmb28gYW5kIHhtbDpmb29sLgorMy4gR3JhbmRDaGlsZCBpbmhlcnRzIHhtbDpmb28gZnJvbSBpdHMgQ2hpbGQgYW5jZXN0b3IuCis0LiBHcmFuZENoaWxkIGluaGVyaXRzIHhtbDpmb29sIGZyb20gaXRzIFBhcmVudCBhbmNlc3Rvci4KKzUuIEdyYW5kQ2hpbGQgaW5oZXJpdHMgeG1sOmxhbmcgZnJvbSBpdHMgQ2hpbGQgYW5jZXN0b3IuCis2LiBHcmFuZENoaWxkIGhhcyBleHBsaWNpdGx5IGRlY2xhcmVkIGF0dHJpYnV0ZSB4bWw6c3BhY2UuCistLT4KKworPCEtLSBSZXN1bHQgRUMxNE46Cis8UGFyZW50IHhtbDpmb289ImJhciIgeG1sOmZvb2w9ImJhcmJhciI+CisgICAgPEdyYW5kQ2hpbGQgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PC9HcmFuZENoaWxkPgorICA8L1BhcmVudD4KKy0tPgorCis8IS0tIEFubm90YXRpb24gRUMxNE46CisxLiBPbmx5IHRob3NlIGF0dHJpYnV0ZXMgaW4gdGhlIHhtbCBuYW1lc3BhY2UgYXJlIHJlbmRlcmVkLCB3aGljaCBhcmUKKyAgIGV4cGxpY2l0ZWx5IGRlY2xhcmVkIGluIHRoZSBhdHRyaWJ1dGUgYXhpcyBvZiBhbiBlbGVtZW50LgorLS0+CisKKzxHcmFuZFBhcmVudCB4bWw6bGFuZz0iZW4iIHhtbDpzcGFjZT0iZGVmYXVsdCI+CisgIDxQYXJlbnQgeG1sOmZvbz0iYmFyIiB4bWw6Zm9vbD0iYmFyYmFyIj4KKyAgICA8Q2hpbGQgeG1sOmZvbz0iYmFyYmFyb3NzYSIgeG1sOmxhbmc9ImdlIj4KKyAgICAgIDxHcmFuZENoaWxkIHhtbDpzcGFjZT0icHJlc2VydmUiLz4KKyAgICA8L0NoaWxkPgorICA8L1BhcmVudD4KKzwvR3JhbmRQYXJlbnQ+CisKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9lYy1tZXJsaW4taWFpa1Rlc3RzLXR3by9pYWlrVGVzdHMuZXhhbXBsZTIueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL2VjLW1lcmxpbi1pYWlrVGVzdHMtdHdvL2lhaWtUZXN0cy5leGFtcGxlMi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFlMzA1OAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9lYy1tZXJsaW4taWFpa1Rlc3RzLXR3by9pYWlrVGVzdHMuZXhhbXBsZTIueG1sCkBAIC0wLDAgKzEsMzcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CisKKzwhLS0gWFBhdGg9InNlbGY6OlBhcmVudCBvciAocGFyZW50OjpQYXJlbnQgYW5kIG5vdChzZWxmOjpkZWZhdWx0OkNoaWxkKSkgb3Igc2VsZjo6R3JhbmRDaGlsZCBvciBwYXJlbnQ6OkdyYW5kQ2hpbGQiIC0tPgorPCEtLSBhZGRpdGlvbmFsTlNQcmVmaXhlcz0iZGVmYXVsdCBodHRwOi8vZXhhbXBsZS5vcmciIC0tPgorCis8IS0tIFJlc3VsdCBDMTROOgorPFBhcmVudD4KKyAgICA8R3JhbmRDaGlsZD48L0dyYW5kQ2hpbGQ+CisgIDwvUGFyZW50PgorLS0+CisKKzwhLS0gQW5ub3RhdGlvbiBDMTROOgorMS4gVGhlIHhtbG5zPSIiIG9mIFBhcmVudCBpcyBub3QgcmVuZGVyZWQsIGFsdGhvdWdoIGl0IGlzIGV4cGxpY2l0bHkgZGVjbGFyZWQuCisgICBUaGlzIGlzIGJlY2F1c2UgUGFyZW50IGhhcyBubyBvdXRwdXQgcGFyZW50IHdpdGggYSBkZWZhdWx0IG5hbWVzcGFjZSBkZWNsYS0KKyAgIHJhdGlvbiB0aGF0IGlzIGluIHRoZSBub2RlIHNldC4KKzIuIFRoZSB4bWxucz0iIiBvZiBHcmFuZENoaWxkIGlzIG5vdCByZW5kZXJlZCwgYWx0aG91Z2ggaXQgaXMgZXhwbGljaXRseQorICAgZGVjbGFyZWQuIFRoaXMgaXMgYmVjYXVzZSBHcmFuZENoaWxkIGhhcyBubyBvdXRwdXQgcGFyZW50IHdpdGggYSBkZWZhdWx0CisgICBuYW1lc3BhY2UgZGVjbGFyYXRpb24gdGhhdCBpcyBpbiB0aGUgbm9kZSBzZXQuCistLT4KKworPCEtLSBSZXN1bHQgRUMxNE46Cis8UGFyZW50PgorICAgIDxHcmFuZENoaWxkPjwvR3JhbmRDaGlsZD4KKyAgPC9QYXJlbnQ+CistLT4KKworPCEtLSBBbm5vdGF0aW9uIEVDMTROOgorU2VlIEFubm90YXRpb24gQzE0Ti4KKy0tPgorCis8R3JhbmRQYXJlbnQ+CisgIDxQYXJlbnQgeG1sbnM9IiI+CisgICAgPENoaWxkIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmciPgorICAgICAgPEdyYW5kQ2hpbGQgeG1sbnM9IiIvPgorICAgIDwvQ2hpbGQ+CisgIDwvUGFyZW50PgorPC9HcmFuZFBhcmVudD4gIApkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL2VjLW1lcmxpbi1pYWlrVGVzdHMtdHdvL2lhaWtUZXN0cy5leGFtcGxlMy54bWwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvZWMtbWVybGluLWlhaWtUZXN0cy10d28vaWFpa1Rlc3RzLmV4YW1wbGUzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTc2OTc0Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL2VjLW1lcmxpbi1pYWlrVGVzdHMtdHdvL2lhaWtUZXN0cy5leGFtcGxlMy54bWwKQEAgLTAsMCArMSw3MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKworPCEtLSBYUGF0aD0ic2VsZjo6ZGVmYXVsdDpQYXJlbnQgb3IgKHBhcmVudDo6ZGVmYXVsdDpQYXJlbnQgYW5kIG5vdChzZWxmOjpkZWZhdWx0OkNoaWxkKSkgb3Igc2VsZjo6bnMxOkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpuczE6R3JhbmRDaGlsZCBvciBzZWxmOjpkZWZhdWx0OkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpkZWZhdWx0OkdyYW5kQ2hpbGQiIC0tPgorPCEtLSBhZGRpdGlvbmFsTlNQcmVmaXhlcz0iZGVmYXVsdCBodHRwOi8vZXhhbXBsZS5vcmcvZGVmYXVsdCBuczEgaHR0cDovL2V4YW1wbGUub3JnL25zMSIgLS0+CisKKzwhLS0gUmVzdWx0IEMxNE46Cis8UGFyZW50IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvZGVmYXVsdCI+CisgICAgPG5zMTpHcmFuZENoaWxkIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSI+PC9uczE6R3JhbmRDaGlsZD48bnMxOkdyYW5kQ2hpbGQgeG1sbnM9Imh0dHA6Ly9iYXIuY29tL2RlZmF1bHQiIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSIgR2VuZGVyPSJtYWxlIj48L25zMTpHcmFuZENoaWxkPjxHcmFuZENoaWxkIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSI+PC9HcmFuZENoaWxkPjxHcmFuZENoaWxkIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSIgbnMxOkdlbmRlcj0ibWFsZSI+PC9HcmFuZENoaWxkPgorICA8L1BhcmVudD4KKyAtLT4KKworPCEtLSBBbm5vdGF0aW9uIEMxNE46CisxLiBUaGUgZGVmYXVsdCBuYW1lc3BhY2Ugbm9kZSBpcyByZW5kZXJlZCBmb3IgUGFyZW50LCBzaW5jZSBpdCBpcworICAgaW5oZXJpdGVkIGZyb20gR3JhbmRQYXJlbnQuCisyLiBUaGUgbnMxIG5hbWVzcGFjZSBub2RlIGlzIHJlbmRlcmVkIGZvciB0aGUgZmlyc3QgR3JhbmRDaGlsZCwgc2luY2UKKyAgIGl0IGlzIGluaGVyaXRlZCBmcm9tIENoaWxkLgorMy4gVGhlIGRlZmF1bHQgbmFtZXNwYWNlIG5vZGUgaXMgbm90IHJlbmRlcmVkIGZvciB0aGUgZmlyc3QgR3JhbmRDaGlsZCwKKyAgIHNpbmNlIHRoZSBvdXRwdXQgcGFyZW50IG9mIEdyYW5kQ2hpbGQgKFBhcmVudCkgaGFzIHRoZSBzYW1lIG5hbWVzcGFjZQorICAgbm9kZSB3aXRoIHRoZSBzYW1lIHZhbHVlLCB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQuCis0LiBUaGUgbnMxIG5hbWVzcGFjZSBub2RlIGlzIHJlbmRlcmVkIGZvciB0aGUgc2Vjb25kIEdyYW5kQ2hpbGQgKHNhbWUgYXMgMikuCis1LiBUaGUgZGVmYXVsdCBuYW1lc3BhY2Ugbm9kZSBpcyByZW5kZXJlZCBmb3IgdGhlIHNlY29uZCBHcmFuZENoaWxkLAorICAgc2luY2UgaXQgaXMgZXhwbGljaXRseSBkZWNsYXJlZCwgYW5kIGhhcyBhIGRpZmZlcmVudCB2YWx1ZSB0aGFuIHRoYXQgb2YKKyAgIFBhcmVudC4KKzYuIFRoZSBuczEgbmFtZXNwYWNlIG5vZGUgaXMgcmVuZGVyZWQgZm9yIHRoZSB0aGlyZCBHcmFuZENoaWxkIChzYW1lIGFzIDIpLiAgIAorNy4gVGhlIGRlZmF1bHQgbmFtZXNwYWNlIG5vZGUgaXMgbm90IHJlbmRlcmVkIGZvciB0aGUgdGhpcmQgR3JhbmRDaGlsZCAKKyAgIChzYW1lIGFzIDMpLgorOC4gVGhlIG5zMSBuYW1lc3BhY2Ugbm9kZSBpcyByZW5kZXJlZCBmb3IgdGhlIGZvdXJ0aCBHcmFuZENoaWxkIChzYW1lIGFzIDIpLiAgIAorOS4gVGhlIGRlZmF1bHQgbmFtZXNwYWNlIG5vZGUgaXMgbm90IHJlbmRlcmVkIGZvdXJ0aCB0aGUgdGhpcmQgR3JhbmRDaGlsZCAKKyAgIChzYW1lIGFzIDMpLgorLS0+CisKKzwhLS0gUmVzdWx0IEVDMTROOgorPFBhcmVudCB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnL2RlZmF1bHQiPgorICAgIDxuczE6R3JhbmRDaGlsZCB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiPjwvbnMxOkdyYW5kQ2hpbGQ+PG5zMTpHcmFuZENoaWxkIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSIgR2VuZGVyPSJtYWxlIj48L25zMTpHcmFuZENoaWxkPjxHcmFuZENoaWxkPjwvR3JhbmRDaGlsZD48R3JhbmRDaGlsZCB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiIG5zMTpHZW5kZXI9Im1hbGUiPjwvR3JhbmRDaGlsZD4gCisgIDwvUGFyZW50PiAgICAKKy0tPgorCis8IS0tIEFubm90YXRpb24gRUMxNE46CisxLiBUaGUgZGVmYXVsdCBuYW1lc3BhY2Ugbm9kZSBpcyByZW5kZXJlZCBmb3IgUGFyZW50LCBzaW5jZSBpdCBpcyB2aXNpYmx5CisgICB1dGlsaXplZCBieSBQYXJlbnQuCisyLiBUaGUgbnMxIG5hbWVzcGFjZSBhdHRyaWJ1dGUgaXMgcmVuZGVyZWQgZm9yIHRoZSBmaXJzdCBHcmFuZENoaWxkLCBzaW5jZSBpdAorICAgaXMgdmlzaWJseSB1dGlsaXplZCBieSBHcmFuZENoaWxkLgorMy4gVGhlIGRlZmF1bHQgbmFtZXNwYWNlIG5vZGUgaXMgbm90IHJlbmRlcmVkIGZvciB0aGUgZmlyc3QgR3JhbmRDaGlsZCwgc2luY2UKKyAgIGl0IGlzIG5vdCB2aXNpYmx5IHV0aWxpemVkLgorNC4gVGhlIG5zMSBuYW1lc3BhY2UgYXR0cmlidXRlIGlzIHJlbmRlcmVkIGZvciB0aGUgc2Vjb25kIEdyYW5kQ2hpbGQsIHNpbmNlIGl0CisgICBpcyB2aXNpYmx5IHV0aWxpemVkIGJ5IEdyYW5kQ2hpbGQuCis1LiBUaGUgZGVmYXVsdCBuYW1lc3BhY2Ugbm9kZSBpcyBub3QgcmVuZGVyZWQgZm9yIHRoZSBzZWNvbmQgR3JhbmRDaGlsZCwgc2luY2UKKyAgIGl0IGlzIG5vdCB2aXNpYmx5IHV0aWxpemVkIGJ5IEdyYW5kQ2hpbGQuIFRoZSBHZW5kZXIgYXR0cmlidXRlIGlzIGluIG5vCisgICBuYW1lc3BhY2UuCis2LiBUaGUgbnMxIG5hbWVzcGFjZSBub2RlIGlzIG5vdCByZW5kZXJlZCBmb3IgdGhlIHRoaXJkIEdyYW5kQ2hpbGQsIHNpbmNlIGl0CisgICBpcyBub3QgdmlzaWJseSB1dGlsaXplZC4KKzcuIFRoZSBkZWZhdWx0IG5hbWVzcGFjZSBub2RlIGlzIG5vdCByZW5kZXJlZCBmb3IgdGhlIHRoaXJkIEdyYW5kQ2hpbGQuIEl0IGlzCisgICB2aXNpYmx5IHV0aWxpemVkLCBidXQgdGhlIHNhbWUgbmFtZXNwYWNlIG5vZGUgd2l0aCB0aGUgc2FtZSB2YWx1ZSBoYXMgYWxyZWFkeQorICAgYmVlbiByZW5kZXJlZCBpbiBQYXJlbnQgKGFuIG91dHB1dCBwYXJlbnQgb2YgR3JhbmRDaGlsZCkuCis4LiBUaGUgZGVmYXVsdCBuYW1lc3BhY2Ugbm9kZSBpcyBub3QgcmVuZGVyZWQgZm9yIHRoZSBmb3VydGggR3JhbmRDaGlsZCwgc2luY2UKKyAgIGl0IGlzIG5vdCB2aXNpYmx5IHV0aWxpemVkLgorOS4gVGhlIG5zMSBuYW1lc3BhY2Ugbm9kZSBpcyByZW5kZXJlZCBmb3IgdGhlIGZvdXJ0aCBHcmFuZENoaWxkLCBzaW5jZSBpdCBpcworICAgdmlzaWJseSB1dGlsaXplZCBieSB0aGUgbnMxOkdlbmRlciBhdHRyaWJ1dGUgb2YgR3JhbmRDaGlsZC4KKy0tPgorCis8R3JhbmRQYXJlbnQgeG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy9kZWZhdWx0Ij4KKyAgPFBhcmVudD4KKyAgICA8Q2hpbGQgeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIj4KKyAgICAgIDxuczE6R3JhbmRDaGlsZC8+CisgICAgICA8bnMxOkdyYW5kQ2hpbGQgeG1sbnM9Imh0dHA6Ly9iYXIuY29tL2RlZmF1bHQiIEdlbmRlcj0ibWFsZSIvPgorICAgICAgPEdyYW5kQ2hpbGQvPgorICAgICAgPEdyYW5kQ2hpbGQgbnMxOkdlbmRlcj0ibWFsZSIvPgorICAgIDwvQ2hpbGQ+CisgIDwvUGFyZW50PgorPC9HcmFuZFBhcmVudD4gIApkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL2VjLW1lcmxpbi1pYWlrVGVzdHMtdHdvL2lhaWtUZXN0cy5leGFtcGxlNC54bWwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvZWMtbWVybGluLWlhaWtUZXN0cy10d28vaWFpa1Rlc3RzLmV4YW1wbGU0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWRiYmY5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL2VjLW1lcmxpbi1pYWlrVGVzdHMtdHdvL2lhaWtUZXN0cy5leGFtcGxlNC54bWwKQEAgLTAsMCArMSwzOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKworPCEtLSBYUGF0aD0ic2VsZjo6UGFyZW50IG9yIChwYXJlbnQ6OlBhcmVudCBhbmQgbm90KHNlbGY6OkNoaWxkKSkgb3Igc2VsZjo6bnMxOkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpuczE6R3JhbmRDaGlsZCIgLS0+Cis8IS0tIGFkZGl0aW9uYWxOU1ByZWZpeGVzPSJuczEgaHR0cDovL2V4YW1wbGUub3JnL25zMSIgLS0+CisKKzwhLS0gSW5sdXNpdmVOYW1lc3BhY2VQcmVmaXhMaXN0PSJuczIiIC0tPgorCis8IS0tIFJlc3VsdCBDMTROOgorPFBhcmVudD4KKyAgICA8bnMxOkdyYW5kQ2hpbGQgeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIiB4bWxuczpuczI9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczIiPjwvbnMxOkdyYW5kQ2hpbGQ+CisgIDwvUGFyZW50PiAgICAKKyAtLT4KKworPCEtLSBBbm5vdGF0aW9uIEMxNE46CisxLiBUaGUgbmFtZXNwYWNlIG5vZGVzIG5zMSB1bmQgbnMyIGFyZSByZW5kZXJlZCBmb3IgR3JhbmRDaGlsZCwgc2luY2UKKyAgIHRoZXkgYXJlIGJvdGggaW4gc2NvcGUgZm9yIEdyYW5kQ2hpbGQgYW5kIGluIHRoZSBvdXRwdXQgbm9kZSBzZXQuICAgCistLT4KKworPCEtLSBSZXN1bHQgRUMxNE46Cis8UGFyZW50PgorICAgIDxuczE6R3JhbmRDaGlsZCB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiIHhtbG5zOm5zMj0iaHR0cDovL2V4YW1wbGUub3JnL25zMiI+PC9uczE6R3JhbmRDaGlsZD4KKyAgPC9QYXJlbnQ+ICAgIAorLS0+CisKKzwhLS0gQW5ub3RhdGlvbiBFQzE0TjoKKzEuIFRoZSBuYW1lc3BhY2Ugbm9kZSBuczEgaXMgcmVuZGVyZWQgZm9yIEdyYW5kQ2hpbGQgc2luY2UgaXQgaXMgdmlzaWJseQorICAgdXRpbGl6ZWQgYnkgR3JhbmRDaGlsZC4KKzIuIFRoZSBuYW1lc3BhY2Ugbm9kZSBuczIgaXMgcmVuZGVyZWQgc2luY2UgaXQgaXMgb24gdGhlIAorICAgSW5sdXNpdmVOYW1lc3BhY2VQcmVmaXhMaXN0IGFuZCBpcyB0aGVyZWZvcmUgdHJlYXRlZCBhcyBpbiBDMTROIG1vZGUuCistLT4KKworPEdyYW5kUGFyZW50PgorICA8UGFyZW50PgorICAgIDxDaGlsZCB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiIHhtbG5zOm5zMj0iaHR0cDovL2V4YW1wbGUub3JnL25zMiI+CisgICAgICA8bnMxOkdyYW5kQ2hpbGQvPgorICAgIDwvQ2hpbGQ+CisgIDwvUGFyZW50PgorPC9HcmFuZFBhcmVudD4gIApkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL2VjLW1lcmxpbi1pYWlrVGVzdHMtdHdvL3NpZ25hdHVyZS50bXBsIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL2VjLW1lcmxpbi1pYWlrVGVzdHMtdHdvL3NpZ25hdHVyZS50bXBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0OTI4MzMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvZWMtbWVybGluLWlhaWtUZXN0cy10d28vc2lnbmF0dXJlLnRtcGwKQEAgLTAsMCArMSw4NiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICA8U2lnbmVkSW5mbz4KKyAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPgorICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiIC8+CisgICAgPFJlZmVyZW5jZSBVUkk9ImlhaWtUZXN0cy5leGFtcGxlMS54bWwiPgorICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgPFhQYXRoPnNlbGY6OlBhcmVudCBvciAocGFyZW50OjpQYXJlbnQgYW5kIG5vdChzZWxmOjpDaGlsZCkpIG9yIHNlbGY6OkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpHcmFuZENoaWxkPC9YUGF0aD4KKyAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWUgLz4KKyAgICA8L1JlZmVyZW5jZT4KKyAgICA8UmVmZXJlbmNlIFVSST0iaWFpa1Rlc3RzLmV4YW1wbGUxLnhtbCI+CisgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICA8WFBhdGg+c2VsZjo6UGFyZW50IG9yIChwYXJlbnQ6OlBhcmVudCBhbmQgbm90KHNlbGY6OkNoaWxkKSkgb3Igc2VsZjo6R3JhbmRDaGlsZCBvciBwYXJlbnQ6OkdyYW5kQ2hpbGQ8L1hQYXRoPgorICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgLz4KKyAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZSAvPgorICAgIDwvUmVmZXJlbmNlPgorICAgIDxSZWZlcmVuY2UgVVJJPSJpYWlrVGVzdHMuZXhhbXBsZTIueG1sIj4KKyAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgIDxYUGF0aCB4bWxuczpkZWZhdWx0PSJodHRwOi8vZXhhbXBsZS5vcmciPnNlbGY6OlBhcmVudCBvciAocGFyZW50OjpQYXJlbnQgYW5kIG5vdChzZWxmOjpkZWZhdWx0OkNoaWxkKSkgb3Igc2VsZjo6R3JhbmRDaGlsZCBvciBwYXJlbnQ6OkdyYW5kQ2hpbGQ8L1hQYXRoPgorICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZSAvPgorICAgIDwvUmVmZXJlbmNlPgorICAgIDxSZWZlcmVuY2UgVVJJPSJpYWlrVGVzdHMuZXhhbXBsZTIueG1sIj4KKyAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgIDxYUGF0aCB4bWxuczpkZWZhdWx0PSJodHRwOi8vZXhhbXBsZS5vcmciPnNlbGY6OlBhcmVudCBvciAocGFyZW50OjpQYXJlbnQgYW5kIG5vdChzZWxmOjpkZWZhdWx0OkNoaWxkKSkgb3Igc2VsZjo6R3JhbmRDaGlsZCBvciBwYXJlbnQ6OkdyYW5kQ2hpbGQ8L1hQYXRoPgorICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgLz4KKyAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZSAvPgorICAgIDwvUmVmZXJlbmNlPgorICAgIDxSZWZlcmVuY2UgVVJJPSJpYWlrVGVzdHMuZXhhbXBsZTMueG1sIj4KKyAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgIDxYUGF0aCB4bWxuczpkZWZhdWx0PSJodHRwOi8vZXhhbXBsZS5vcmcvZGVmYXVsdCIgeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIj5zZWxmOjpkZWZhdWx0OlBhcmVudCBvciAocGFyZW50OjpkZWZhdWx0OlBhcmVudCBhbmQgbm90KHNlbGY6OmRlZmF1bHQ6Q2hpbGQpKSBvciBzZWxmOjpuczE6R3JhbmRDaGlsZCBvciBwYXJlbnQ6Om5zMTpHcmFuZENoaWxkIG9yIHNlbGY6OmRlZmF1bHQ6R3JhbmRDaGlsZCBvciBwYXJlbnQ6OmRlZmF1bHQ6R3JhbmRDaGlsZDwvWFBhdGg+CisgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgPERpZ2VzdFZhbHVlIC8+CisgICAgPC9SZWZlcmVuY2U+CisgICAgPFJlZmVyZW5jZSBVUkk9ImlhaWtUZXN0cy5leGFtcGxlMy54bWwiPgorICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgPFhQYXRoIHhtbG5zOmRlZmF1bHQ9Imh0dHA6Ly9leGFtcGxlLm9yZy9kZWZhdWx0IiB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiPnNlbGY6OmRlZmF1bHQ6UGFyZW50IG9yIChwYXJlbnQ6OmRlZmF1bHQ6UGFyZW50IGFuZCBub3Qoc2VsZjo6ZGVmYXVsdDpDaGlsZCkpIG9yIHNlbGY6Om5zMTpHcmFuZENoaWxkIG9yIHBhcmVudDo6bnMxOkdyYW5kQ2hpbGQgb3Igc2VsZjo6ZGVmYXVsdDpHcmFuZENoaWxkIG9yIHBhcmVudDo6ZGVmYXVsdDpHcmFuZENoaWxkPC9YUGF0aD4KKyAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIC8+CisgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWUgLz4KKyAgICA8L1JlZmVyZW5jZT4KKyAgICA8UmVmZXJlbmNlIFVSST0iaWFpa1Rlc3RzLmV4YW1wbGU0LnhtbCI+CisgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICA8WFBhdGggeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIj5zZWxmOjpQYXJlbnQgb3IgKHBhcmVudDo6UGFyZW50IGFuZCBub3Qoc2VsZjo6Q2hpbGQpKSBvciBzZWxmOjpuczE6R3JhbmRDaGlsZCBvciBwYXJlbnQ6Om5zMTpHcmFuZENoaWxkPC9YUGF0aD4KKyAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWUgLz4KKyAgICA8L1JlZmVyZW5jZT4KKyAgICA8UmVmZXJlbmNlIFVSST0iaWFpa1Rlc3RzLmV4YW1wbGU0LnhtbCI+CisgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICA8WFBhdGggeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIj5zZWxmOjpQYXJlbnQgb3IgKHBhcmVudDo6UGFyZW50IGFuZCBub3Qoc2VsZjo6Q2hpbGQpKSBvciBzZWxmOjpuczE6R3JhbmRDaGlsZCBvciBwYXJlbnQ6Om5zMTpHcmFuZENoaWxkPC9YUGF0aD4KKyAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPgorICAgICAgICAgIDxJbmNsdXNpdmVOYW1lc3BhY2VzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIFByZWZpeExpc3Q9Im5zMiIgLz4KKyAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWUgLz4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgorICA8U2lnbmF0dXJlVmFsdWUgLz4KKzwvU2lnbmF0dXJlPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL2VjLW1lcmxpbi1pYWlrVGVzdHMtdHdvL3NpZ25hdHVyZS54bWwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvZWMtbWVybGluLWlhaWtUZXN0cy10d28vc2lnbmF0dXJlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzc0ZmY4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL2VjLW1lcmxpbi1pYWlrVGVzdHMtdHdvL3NpZ25hdHVyZS54bWwKQEAgLTAsMCArMSwxNjMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgPFNpZ25lZEluZm8+CisgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIgLz4KKyAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIiAvPgorICAgIDxSZWZlcmVuY2UgVVJJPSJpYWlrVGVzdHMuZXhhbXBsZTEueG1sIj4KKyAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgIDxYUGF0aD5zZWxmOjpQYXJlbnQgb3IgKHBhcmVudDo6UGFyZW50IGFuZCBub3Qoc2VsZjo6Q2hpbGQpKSBvciBzZWxmOjpHcmFuZENoaWxkIG9yIHBhcmVudDo6R3JhbmRDaGlsZDwvWFBhdGg+CisgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgPERpZ2VzdFZhbHVlPmF5QzdJQWp1bHU4VWpzMWw3SU9rcjA5WDlMbz08L0RpZ2VzdFZhbHVlPgorICAgIDwvUmVmZXJlbmNlPgorICAgIDxSZWZlcmVuY2UgVVJJPSJpYWlrVGVzdHMuZXhhbXBsZTEueG1sIj4KKyAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgIDxYUGF0aD5zZWxmOjpQYXJlbnQgb3IgKHBhcmVudDo6UGFyZW50IGFuZCBub3Qoc2VsZjo6Q2hpbGQpKSBvciBzZWxmOjpHcmFuZENoaWxkIG9yIHBhcmVudDo6R3JhbmRDaGlsZDwvWFBhdGg+CisgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiAvPgorICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgPERpZ2VzdFZhbHVlPnRZY1BZZVhXVXBCd0NKS2FQSHBuVCtvYzdGUT08L0RpZ2VzdFZhbHVlPgorICAgIDwvUmVmZXJlbmNlPgorICAgIDxSZWZlcmVuY2UgVVJJPSJpYWlrVGVzdHMuZXhhbXBsZTIueG1sIj4KKyAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgIDxYUGF0aCB4bWxuczpkZWZhdWx0PSJodHRwOi8vZXhhbXBsZS5vcmciPnNlbGY6OlBhcmVudCBvciAocGFyZW50OjpQYXJlbnQgYW5kIG5vdChzZWxmOjpkZWZhdWx0OkNoaWxkKSkgb3Igc2VsZjo6R3JhbmRDaGlsZCBvciBwYXJlbnQ6OkdyYW5kQ2hpbGQ8L1hQYXRoPgorICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZT4zL0U5OS9XV3VyTW81UkIzUjltUE1pOFROZWs9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgICA8UmVmZXJlbmNlIFVSST0iaWFpa1Rlc3RzLmV4YW1wbGUyLnhtbCI+CisgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICA8WFBhdGggeG1sbnM6ZGVmYXVsdD0iaHR0cDovL2V4YW1wbGUub3JnIj5zZWxmOjpQYXJlbnQgb3IgKHBhcmVudDo6UGFyZW50IGFuZCBub3Qoc2VsZjo6ZGVmYXVsdDpDaGlsZCkpIG9yIHNlbGY6OkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpHcmFuZENoaWxkPC9YUGF0aD4KKyAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIC8+CisgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWU+My9FOTkvV1d1ck1vNVJCM1I5bVBNaThUTmVrPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgICAgPFJlZmVyZW5jZSBVUkk9ImlhaWtUZXN0cy5leGFtcGxlMy54bWwiPgorICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgPFhQYXRoIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSIgeG1sbnM6ZGVmYXVsdD0iaHR0cDovL2V4YW1wbGUub3JnL2RlZmF1bHQiPnNlbGY6OmRlZmF1bHQ6UGFyZW50IG9yIChwYXJlbnQ6OmRlZmF1bHQ6UGFyZW50IGFuZCBub3Qoc2VsZjo6ZGVmYXVsdDpDaGlsZCkpIG9yIHNlbGY6Om5zMTpHcmFuZENoaWxkIG9yIHBhcmVudDo6bnMxOkdyYW5kQ2hpbGQgb3Igc2VsZjo6ZGVmYXVsdDpHcmFuZENoaWxkIG9yIHBhcmVudDo6ZGVmYXVsdDpHcmFuZENoaWxkPC9YUGF0aD4KKyAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWU+Kzl5NEpIWHhzUVNKaXRRUytxZHRLZDdQNUxFPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgICAgPFJlZmVyZW5jZSBVUkk9ImlhaWtUZXN0cy5leGFtcGxlMy54bWwiPgorICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgPFhQYXRoIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSIgeG1sbnM6ZGVmYXVsdD0iaHR0cDovL2V4YW1wbGUub3JnL2RlZmF1bHQiPnNlbGY6OmRlZmF1bHQ6UGFyZW50IG9yIChwYXJlbnQ6OmRlZmF1bHQ6UGFyZW50IGFuZCBub3Qoc2VsZjo6ZGVmYXVsdDpDaGlsZCkpIG9yIHNlbGY6Om5zMTpHcmFuZENoaWxkIG9yIHBhcmVudDo6bnMxOkdyYW5kQ2hpbGQgb3Igc2VsZjo6ZGVmYXVsdDpHcmFuZENoaWxkIG9yIHBhcmVudDo6ZGVmYXVsdDpHcmFuZENoaWxkPC9YUGF0aD4KKyAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIC8+CisgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWU+SExPaGFUckV4bFRnOUFSVmRPaEhkbTFEQUtrPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgICAgPFJlZmVyZW5jZSBVUkk9ImlhaWtUZXN0cy5leGFtcGxlNC54bWwiPgorICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgPFhQYXRoIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSI+c2VsZjo6UGFyZW50IG9yIChwYXJlbnQ6OlBhcmVudCBhbmQgbm90KHNlbGY6OkNoaWxkKSkgb3Igc2VsZjo6bnMxOkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpuczE6R3JhbmRDaGlsZDwvWFBhdGg+CisgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgPERpZ2VzdFZhbHVlPkMrZzZWQUFtcTJyV0NxbUNmSHBMbjdCRkIvYz08L0RpZ2VzdFZhbHVlPgorICAgIDwvUmVmZXJlbmNlPgorICAgIDxSZWZlcmVuY2UgVVJJPSJpYWlrVGVzdHMuZXhhbXBsZTQueG1sIj4KKyAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgIDxYUGF0aCB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiPnNlbGY6OlBhcmVudCBvciAocGFyZW50OjpQYXJlbnQgYW5kIG5vdChzZWxmOjpDaGlsZCkpIG9yIHNlbGY6Om5zMTpHcmFuZENoaWxkIG9yIHBhcmVudDo6bnMxOkdyYW5kQ2hpbGQ8L1hQYXRoPgorICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+CisgICAgICAgICAgPEluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0ibnMyIiAvPgorICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZT5DK2c2VkFBbXEycldDcW1DZkhwTG43QkZCL2M9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgorICA8U2lnbmF0dXJlVmFsdWU+CisgICAgTmtSWmV4ZjdNSkttY0JFR3FvckYzSkhsNmV3bFpjZ2h3YlJXZzk2YWU3T2I5MTE4VTczSFZ3PT0KKyAgPC9TaWduYXR1cmVWYWx1ZT4KKyAgPEtleUluZm8+CisgICAgPEtleVZhbHVlPgorICAgICAgPERTQUtleVZhbHVlPgorICAgICAgICA8UD4KKyAgICAgICAgICAzZU9lQXZxbkV5RnBXK3VUU2dyZGo3WUxqYVRrcHlIZWNLRklvTHU4UVpOa0dUUUkxY2lJVEJIMGxxZklrZENICisgICAgICAgICAgU2k4ZmlVQzNEVHEzSjlGc0plZjRZVnRERjdKcFV2SFRPUXF0cTdaZ3g2S0M4V3hrejZyUUN4T3I3RjBBcE9ZaQorICAgICAgICAgIDg5ekxSb2U0TWtER2U2dXgwK1d0eU9UUW9WSUdOVEREVUZYclVRTmJMckU9CisgICAgICAgIDwvUD4KKyAgICAgICAgPFE+CisgICAgICAgICAgaERMY0ZLMEdPL0h6MWFyeE9PdnNnTS9WTHlVPQorICAgICAgICA8L1E+CisgICAgICAgIDxHPgorICAgICAgICAgIG5ueDdoYmRXb3pHYnRuRmduYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3oKKyAgICAgICAgICBLdDdkbEVhUUw3YjUrSlRadDNNaFpOUG9zeHNneFZ1VDdUcy9nNWs3RW5wZFl2MGE1aHc1QncyOWZqYkdIZmdNCisgICAgICAgICAgOGQycmhkMlVpMHhIYmswRDQ1MW5oTHhWV3VsdmlPU1BoektLdlhyYnlTQT0KKyAgICAgICAgPC9HPgorICAgICAgICA8WT4KKyAgICAgICAgICBjZllwaWhwQVFlZXBiTkZTNE1BYlFSaGRYcERpNXdMcnd4RTVoSXZvWXFvMUw4QlFWdThmWTFURkFQdG9hZTFpCisgICAgICAgICAgQmcvR0lKeVAzaUxmeXVCSmFEdkpKTFAzMHdCSDlpL3M1SjM2NTZQZXZwT1ZkVGZpNzc3Rmk5R2o2eS9pYjJWdgorICAgICAgICAgICtPWmZKa2twNEw1MCtwNVRVaFBtUUxKdFJFc2d0bCt0bklPeUpUKytHOVU9CisgICAgICAgIDwvWT4KKyAgICAgIDwvRFNBS2V5VmFsdWU+CisgICAgPC9LZXlWYWx1ZT4KKyAgICA8WDUwOURhdGE+CisgICAgICA8WDUwOVN1YmplY3ROYW1lPgorICAgICAgICBDTj1NZXJsaW4gSHVnaGVzLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlIFRlY2hub2xvZ2llcyBMdGQuLFNUPUR1YmxpbixDPUlFCisgICAgICA8L1g1MDlTdWJqZWN0TmFtZT4KKyAgICAgIDxYNTA5SXNzdWVyU2VyaWFsPgorICAgICAgICA8WDUwOUlzc3Vlck5hbWU+CisgICAgICAgICAgQ049VHJhbnNpZW50IENBLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlIFRlY2hub2xvZ2llcyBMdGQuLFNUPUR1YmxpbixDPUlFCisgICAgICAgIDwvWDUwOUlzc3Vlck5hbWU+CisgICAgICAgIDxYNTA5U2VyaWFsTnVtYmVyPjEwMTc3ODgzNzAzNDg8L1g1MDlTZXJpYWxOdW1iZXI+CisgICAgICA8L1g1MDlJc3N1ZXJTZXJpYWw+CisgICAgICA8WDUwOUNlcnRpZmljYXRlPgorICAgICAgICBNSUlEVURDQ0F4Q2dBd0lCQWdJR0FPejQ2ZzJzTUFrR0J5cUdTTTQ0QkFNd2JqRUxNQWtHQTFVRUJoTUNTVVV4CisgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgY3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQgorICAgICAgICBNQjRYRFRBeU1EUXdNakl5TlRrek1Gb1hEVEV5TURRd01qSXhOVGt5TlZvd2J6RUxNQWtHQTFVRUJoTUNTVVV4CisgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgY3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVXTUJRR0ExVUVBeE1OVFdWeWJHbHVJRWgxWjJobAorICAgICAgICBjekNDQWJjd2dnRXNCZ2NxaGtqT09BUUJNSUlCSHdLQmdRRGQ0NTRDK3FjVElXbGI2NU5LQ3QyUHRndU5wT1NuCisgICAgICAgIElkNXdvVWlndTd4QmsyUVpOQWpWeUloTUVmU1dwOGlSMElkS0x4K0pRTGNOT3JjbjBXd2w1L2hoVzBNWHNtbFMKKyAgICAgICAgOGRNNUNxMnJ0bURIb29MeGJHVFBxdEFMRTZ2c1hRQ2s1aUx6M010R2g3Z3lRTVo3cTdIVDVhM0k1TkNoVWdZMQorICAgICAgICBNTU5RVmV0UkExc3VzUUlWQUlReTNCU3RCanZ4ODlXcThUanI3SURQMVM4bEFvR0JBSjU4ZTRXM1ZxTXhtN1p4CisgICAgICAgIFlKMnhaNktYMFplMTBXbktaRHlVUm4rVDlpRklGYktSRkVsS0Rlb3RYd3dYd1lPTjh5cmUzWlJHa0MrMitmaVUKKyAgICAgICAgMmJkeklXVFQ2TE1iSU1WYmsrMDdQNE9aT3hKNlhXTDlHdVljT1FjTnZYNDJ4aDM0RFBIZHE0WGRsSXRNUjI1TgorICAgICAgICBBK09kWjRTOFZWcnBiNGprajRjeWlyMTYyOGtnQTRHRUFBS0JnSEgyS1lvYVFFSG5xV3pSVXVEQUcwRVlYVjZRCisgICAgICAgIDR1Y0M2OE1ST1lTTDZHS3FOUy9BVUZidkgyTlV4UUQ3YUdudFlnWVB4aUNjajk0aTM4cmdTV2c3eVNTejk5TUEKKyAgICAgICAgUi9ZdjdPU2QrdWVqM3I2VGxYVTM0dSsreFl2Um8rc3Y0bTlsYi9qbVh5WkpLZUMrZFBxZVUxSVQ1a0N5YlVSTAorICAgICAgICBJTFpmclp5RHNpVS92aHZWb3pvd09EQU9CZ05WSFE4QkFmOEVCQU1DQjRBd0VRWURWUjBPQkFvRUNJYXRZN1NFCisgICAgICAgIGxYRU9NQk1HQTFVZEl3UU1NQXFBQ0lPR1BrQjJNdUtUTUFrR0J5cUdTTTQ0QkFNREx3QXdMQUlVU3ZUMDJpUWoKKyAgICAgICAgUTVkYTRXcGUwQnZzN0d1Q2NWc0NGQ0VjUXBialVmbnhYRlhOV2lGeVE0OVpyV3FuCisgICAgICA8L1g1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgIDxYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgIE1JSURTekNDQXd1Z0F3SUJBZ0lHQU96NDZmd0pNQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgKKyAgICAgICAgRHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbAorICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CCisgICAgICAgIE1CNFhEVEF5TURRd01qSXlOVGt5TlZvWERURXlNRFF3TWpJeE5Ua3lOVm93YmpFTE1Ba0dBMVVFQmhNQ1NVVXgKKyAgICAgICAgRHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbAorICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CCisgICAgICAgIE1JSUJ0ekNDQVN3R0J5cUdTTTQ0QkFFd2dnRWZBb0dCQU4zam5nTDZweE1oYVZ2cmswb0szWSsyQzQyazVLY2gKKyAgICAgICAgM25DaFNLQzd2RUdUWkJrMENOWElpRXdSOUphbnlKSFFoMG92SDRsQXR3MDZ0eWZSYkNYbitHRmJReGV5YVZMeAorICAgICAgICAwemtLcmF1MllNZWlndkZzWk0rcTBBc1RxK3hkQUtUbUl2UGN5MGFIdURKQXhudXJzZFBscmNqazBLRlNCalV3CisgICAgICAgIHcxQlY2MUVEV3k2eEFoVUFoRExjRkswR08vSHoxYXJ4T092c2dNL1ZMeVVDZ1lFQW5ueDdoYmRXb3pHYnRuRmcKKyAgICAgICAgbmJGbm9wZlJsN1hSYWNwa1BKUkdmNVAySVVnVnNwRVVTVW9ONmkxZkRCZkJnNDN6S3Q3ZGxFYVFMN2I1K0pUWgorICAgICAgICB0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ004ZDJyaGQyVWkweEhiazBECisgICAgICAgIDQ1MW5oTHhWV3VsdmlPU1BoektLdlhyYnlTQURnWVFBQW9HQWZhZytIQ0FCSUphZEREOUFhcmhnYzJRUjNMcDcKKyAgICAgICAgUHBNT2gwbEF3TGlJc3ZrTzRVbGJlT1MwSUpDOGJjcUxqTTFmVnc2RkdTYXhtcSs0eTFhZzJtOWs2SWRFMFFoNQorICAgICAgICBOeEIveEZrbWR3cVhGUklKVnA0NE9lVXlnQjQ3WUs3Nk5tVUlZRzNEZGZpUFBVM2Jxemp2dE90RVRpQ0h2bzI1CisgICAgICAgIDRENlVqd1BwWUVyWFJVYWpOakEwTUE0R0ExVWREd0VCL3dRRUF3SUNCREFQQmdOVkhSTUVDREFHQVFIL0FnRUEKKyAgICAgICAgTUJFR0ExVWREZ1FLQkFpRGhqNUFkakxpa3pBSkJnY3Foa2pPT0FRREF5OEFNQ3dDRkVMdTBudXdlcVc3V2YwcworICAgICAgICBnay9DQUdHTDBCR0tBaFJOZGdRR3I1aXlaS29ING9xUG0wVko5VGpYTGc9PQorICAgICAgPC9YNTA5Q2VydGlmaWNhdGU+CisgICAgPC9YNTA5RGF0YT4KKyAgPC9LZXlJbmZvPgorPC9TaWduYXR1cmU+CmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLWV4Yy1jMTRuLW9uZS9SZWFkbWUudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi1leGMtYzE0bi1vbmUvUmVhZG1lLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmExY2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi1leGMtYzE0bi1vbmUvUmVhZG1lLnR4dApAQCAtMCwwICsxLDMgQEAKK3VudGVzdGVkIGV4Y2x1c2l2ZSBjMTRuIGV4YW1wbGUgc2lnbmF0dXJlICsgYzE0biBvdXRwdXQKK21lcmxpbkBiYWx0aW1vcmUuaWUKK21vbiBqYW4gMTQgMjAwMgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi1leGMtYzE0bi1vbmUvYzE0bi0wLnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4tZXhjLWMxNG4tb25lL2MxNG4tMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg4ZjFhYgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4tZXhjLWMxNG4tb25lL2MxNG4tMC50eHQKQEAgLTAsMCArMSw1IEBACis8ZHNpZzpPYmplY3QgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9InRvLWJlLXNpZ25lZCI+CisgICAgICA8YmFyOkJheiB4bWxuczpiYXI9InVybjpiYXIiPgorICAgICAgICAKKyAgICAgIDwvYmFyOkJhej4KKyAgICA8L2RzaWc6T2JqZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4tZXhjLWMxNG4tb25lL2MxNG4tMS50eHQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLWV4Yy1jMTRuLW9uZS9jMTRuLTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2ODE1ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLWV4Yy1jMTRuLW9uZS9jMTRuLTEudHh0CkBAIC0wLDAgKzEsNSBAQAorPGRzaWc6T2JqZWN0IHhtbG5zPSJ1cm46Zm9vIiB4bWxuczpiYXI9InVybjpiYXIiIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIElkPSJ0by1iZS1zaWduZWQiPgorICAgICAgPGJhcjpCYXo+CisgICAgICAgIAorICAgICAgPC9iYXI6QmF6PgorICAgIDwvZHNpZzpPYmplY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi1leGMtYzE0bi1vbmUvYzE0bi0yLnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4tZXhjLWMxNG4tb25lL2MxNG4tMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NkOTUzNAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4tZXhjLWMxNG4tb25lL2MxNG4tMi50eHQKQEAgLTAsMCArMSw1IEBACis8ZHNpZzpPYmplY3QgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9InRvLWJlLXNpZ25lZCI+CisgICAgICA8YmFyOkJheiB4bWxuczpiYXI9InVybjpiYXIiPgorICAgICAgICA8IS0tICBjb21tZW50IC0tPgorICAgICAgPC9iYXI6QmF6PgorICAgIDwvZHNpZzpPYmplY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi1leGMtYzE0bi1vbmUvYzE0bi0zLnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4tZXhjLWMxNG4tb25lL2MxNG4tMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFkZmM3MwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4tZXhjLWMxNG4tb25lL2MxNG4tMy50eHQKQEAgLTAsMCArMSw1IEBACis8ZHNpZzpPYmplY3QgeG1sbnM9InVybjpmb28iIHhtbG5zOmJhcj0idXJuOmJhciIgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9InRvLWJlLXNpZ25lZCI+CisgICAgICA8YmFyOkJhej4KKyAgICAgICAgPCEtLSAgY29tbWVudCAtLT4KKyAgICAgIDwvYmFyOkJhej4KKyAgICA8L2RzaWc6T2JqZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4tZXhjLWMxNG4tb25lL2MxNG4tNC50eHQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLWV4Yy1jMTRuLW9uZS9jMTRuLTQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3ZjMzMDMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLWV4Yy1jMTRuLW9uZS9jMTRuLTQudHh0CkBAIC0wLDAgKzEsMzYgQEAKKzxkc2lnOlNpZ25lZEluZm8geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICA8ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj48L2RzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZD4KKyAgICAgIDxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSI+PC9kc2lnOlNpZ25hdHVyZU1ldGhvZD4KKyAgICAgIDxkc2lnOlJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcihpZCgndG8tYmUtc2lnbmVkJykpIj4KKyAgICAgICAgPGRzaWc6VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8ZHNpZzpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPjwvZHNpZzpUcmFuc2Zvcm0+CisgICAgICAgIDwvZHNpZzpUcmFuc2Zvcm1zPgorICAgICAgICA8ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9kc2lnOkRpZ2VzdE1ldGhvZD4KKyAgICAgICAgPGRzaWc6RGlnZXN0VmFsdWU+N3lPVGpVdSs5b0VoU2hneUlJWERMalEwOGFZPTwvZHNpZzpEaWdlc3RWYWx1ZT4KKyAgICAgIDwvZHNpZzpSZWZlcmVuY2U+CisgICAgICA8ZHNpZzpSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoaWQoJ3RvLWJlLXNpZ25lZCcpKSI+CisgICAgICAgIDxkc2lnOlRyYW5zZm9ybXM+CisgICAgICAgICAgPGRzaWc6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj4KKyAgICAgICAgICAgIDxJbmNsdXNpdmVOYW1lc3BhY2VzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIFByZWZpeExpc3Q9ImJhciAjZGVmYXVsdCI+PC9JbmNsdXNpdmVOYW1lc3BhY2VzPgorICAgICAgICAgIDwvZHNpZzpUcmFuc2Zvcm0+CisgICAgICAgIDwvZHNpZzpUcmFuc2Zvcm1zPgorICAgICAgICA8ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9kc2lnOkRpZ2VzdE1ldGhvZD4KKyAgICAgICAgPGRzaWc6RGlnZXN0VmFsdWU+MDl4TXkwUlRRTTFROTFkZW1ZZS8wRjZBR1hvPTwvZHNpZzpEaWdlc3RWYWx1ZT4KKyAgICAgIDwvZHNpZzpSZWZlcmVuY2U+CisgICAgICA8ZHNpZzpSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoaWQoJ3RvLWJlLXNpZ25lZCcpKSI+CisgICAgICAgIDxkc2lnOlRyYW5zZm9ybXM+CisgICAgICAgICAgPGRzaWc6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jV2l0aENvbW1lbnRzIj48L2RzaWc6VHJhbnNmb3JtPgorICAgICAgICA8L2RzaWc6VHJhbnNmb3Jtcz4KKyAgICAgICAgPGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvZHNpZzpEaWdlc3RNZXRob2Q+CisgICAgICAgIDxkc2lnOkRpZ2VzdFZhbHVlPlpRSCtTa0NOOGM1eTBmZUFyK2FSVFpEd3l2WT08L2RzaWc6RGlnZXN0VmFsdWU+CisgICAgICA8L2RzaWc6UmVmZXJlbmNlPgorICAgICAgPGRzaWc6UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKGlkKCd0by1iZS1zaWduZWQnKSkiPgorICAgICAgICA8ZHNpZzpUcmFuc2Zvcm1zPgorICAgICAgICAgIDxkc2lnOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuI1dpdGhDb21tZW50cyI+CisgICAgICAgICAgICA8SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSJiYXIgI2RlZmF1bHQiPjwvSW5jbHVzaXZlTmFtZXNwYWNlcz4KKyAgICAgICAgICA8L2RzaWc6VHJhbnNmb3JtPgorICAgICAgICA8L2RzaWc6VHJhbnNmb3Jtcz4KKyAgICAgICAgPGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvZHNpZzpEaWdlc3RNZXRob2Q+CisgICAgICAgIDxkc2lnOkRpZ2VzdFZhbHVlPmExY1RxQmdicXBVdDZiTUpONEM2ekZ0bm95bz08L2RzaWc6RGlnZXN0VmFsdWU+CisgICAgICA8L2RzaWc6UmVmZXJlbmNlPgorICAgIDwvZHNpZzpTaWduZWRJbmZvPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4tZXhjLWMxNG4tb25lL2V4Yy1zaWduYXR1cmUueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi1leGMtYzE0bi1vbmUvZXhjLXNpZ25hdHVyZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTgwNTk0MAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4tZXhjLWMxNG4tb25lL2V4Yy1zaWduYXR1cmUueG1sCkBAIC0wLDAgKzEsNzMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8Rm9vIHhtbG5zOmJhcj0idXJuOmJhciIgeG1sbnM9InVybjpmb28iIHhtbDpzcGFjZT0icHJlc2VydmUiPgorICA8ZHNpZzpTaWduYXR1cmUgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgPGRzaWc6U2lnbmVkSW5mbz4KKyAgICAgIDxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIC8+CisgICAgICA8ZHNpZzpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiIC8+CisgICAgICA8ZHNpZzpSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoaWQoJ3RvLWJlLXNpZ25lZCcpKSI+CisgICAgICAgIDxkc2lnOlRyYW5zZm9ybXM+CisgICAgICAgICAgPGRzaWc6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiAvPgorICAgICAgICA8L2RzaWc6VHJhbnNmb3Jtcz4KKyAgICAgICAgPGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxkc2lnOkRpZ2VzdFZhbHVlPjd5T1RqVXUrOW9FaFNoZ3lJSVhETGpRMDhhWT08L2RzaWc6RGlnZXN0VmFsdWU+CisgICAgICA8L2RzaWc6UmVmZXJlbmNlPgorICAgICAgPGRzaWc6UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKGlkKCd0by1iZS1zaWduZWQnKSkiPgorICAgICAgICA8ZHNpZzpUcmFuc2Zvcm1zPgorICAgICAgICAgIDxkc2lnOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+CisgICAgICAgICAgICA8SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSJiYXIgI2RlZmF1bHQiIC8+CisgICAgICAgICAgPC9kc2lnOlRyYW5zZm9ybT4KKyAgICAgICAgPC9kc2lnOlRyYW5zZm9ybXM+CisgICAgICAgIDxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8ZHNpZzpEaWdlc3RWYWx1ZT4wOXhNeTBSVFFNMVE5MWRlbVllLzBGNkFHWG89PC9kc2lnOkRpZ2VzdFZhbHVlPgorICAgICAgPC9kc2lnOlJlZmVyZW5jZT4KKyAgICAgIDxkc2lnOlJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcihpZCgndG8tYmUtc2lnbmVkJykpIj4KKyAgICAgICAgPGRzaWc6VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8ZHNpZzpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biNXaXRoQ29tbWVudHMiIC8+CisgICAgICAgIDwvZHNpZzpUcmFuc2Zvcm1zPgorICAgICAgICA8ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPGRzaWc6RGlnZXN0VmFsdWU+WlFIK1NrQ044YzV5MGZlQXIrYVJUWkR3eXZZPTwvZHNpZzpEaWdlc3RWYWx1ZT4KKyAgICAgIDwvZHNpZzpSZWZlcmVuY2U+CisgICAgICA8ZHNpZzpSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoaWQoJ3RvLWJlLXNpZ25lZCcpKSI+CisgICAgICAgIDxkc2lnOlRyYW5zZm9ybXM+CisgICAgICAgICAgPGRzaWc6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jV2l0aENvbW1lbnRzIj4KKyAgICAgICAgICAgIDxJbmNsdXNpdmVOYW1lc3BhY2VzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIFByZWZpeExpc3Q9ImJhciAjZGVmYXVsdCIgLz4KKyAgICAgICAgICA8L2RzaWc6VHJhbnNmb3JtPgorICAgICAgICA8L2RzaWc6VHJhbnNmb3Jtcz4KKyAgICAgICAgPGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxkc2lnOkRpZ2VzdFZhbHVlPmExY1RxQmdicXBVdDZiTUpONEM2ekZ0bm95bz08L2RzaWc6RGlnZXN0VmFsdWU+CisgICAgICA8L2RzaWc6UmVmZXJlbmNlPgorICAgIDwvZHNpZzpTaWduZWRJbmZvPgorICAgIDxkc2lnOlNpZ25hdHVyZVZhbHVlPgorICAgICAgS3YxZTdLamh6NGdGdE9aS2d2QzVjTFl0TVFOSW45OWZ5TEJhNkQvL2JCb2tUeFRVRWtNd2FBPT0KKyAgICA8L2RzaWc6U2lnbmF0dXJlVmFsdWU+CisgICAgPGRzaWc6S2V5SW5mbz4KKyAgICAgIDxkc2lnOktleVZhbHVlPgorICAgICAgICA8ZHNpZzpEU0FLZXlWYWx1ZT4KKyAgICAgICAgICA8ZHNpZzpQPgorICAgICAgICAgICAgOEZrSmd3ZHlpelY1VmQwbTZEQS9EWnNkd2VKZG5rdWVZVlVkN0w4YUE0SnBaeHJsQ0kvTTdtREUvT0doRWhnQgorICAgICAgICAgICAgbkZ6U1RyQmpTRnBUN0RHNjZ1eTdvSmVFK1Jna1hPN0VXV09FZ2xNUHdhWmdHZ2kxb1phcnY5NVZPeDN1TzhXOAorICAgICAgICAgICAgTDcrUy8zQXVITlVaUUQ0YjVicGRZQW1qWEZ3ejZkbDBtS2lYQXZWdVA5RT0KKyAgICAgICAgICA8L2RzaWc6UD4KKyAgICAgICAgICA8ZHNpZzpRPgorICAgICAgICAgICAgbUZmOERpTVZORlh5MHZhZzlvTkdOVy9nNHUwPQorICAgICAgICAgIDwvZHNpZzpRPgorICAgICAgICAgIDxkc2lnOkc+CisgICAgICAgICAgICBnOGdSZE5scTlFT1RSMlRqbVZBcHFDQVpBcTNqRWpPSXhYYnM4SkJpWitVN2RWOWdlZVhFeTEzR2JZb1AyM1FyCisgICAgICAgICAgICBhcFpRbyszNWRpdytjTVlQSGpOK2lVQ3dVa2lHV3Y3L3BpQUsrT290ZncwM2V0TDhYaVZXanRMNU5Cb2YyQ05wCisgICAgICAgICAgICB3bUF3N21yd21ORzA5MnkxZTZIWFNHTU1acGFvdGgvUDh4aHN4Q1FzcUk4PQorICAgICAgICAgIDwvZHNpZzpHPgorICAgICAgICAgIDxkc2lnOlk+CisgICAgICAgICAgICBqMFYxNGRjL0krb2tEQWVHNFpiV1V6YjNIVEZrRU9DNmZlT01vNURrMjE4R2NQcUVLcm9WSGFEQkY5Q21SVjF2CisgICAgICAgICAgICBCOE1VT0V4Qis2Wk5IZmNzNVZhdzBIVm42MllpRUJ6cm1LaWt4NlN4TzREZzlMOEk1V2JIbjM3dnhVS3ZIczhyCisgICAgICAgICAgICA3K3JtYTNrcFpRZnRUTWlCcEo4WEs4WjZqZzhWaHVKcW85eVpaTytwM0kwPQorICAgICAgICAgIDwvZHNpZzpZPgorICAgICAgICA8L2RzaWc6RFNBS2V5VmFsdWU+CisgICAgICA8L2RzaWc6S2V5VmFsdWU+CisgICAgPC9kc2lnOktleUluZm8+CisgICAgPGRzaWc6T2JqZWN0IElkPSJ0by1iZS1zaWduZWQiPgorICAgICAgPGJhcjpCYXo+CisgICAgICAgIDwhLS0gIGNvbW1lbnQgLS0+CisgICAgICA8L2JhcjpCYXo+CisgICAgPC9kc2lnOk9iamVjdD4KKyAgPC9kc2lnOlNpZ25hdHVyZT4KKzwvRm9vPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWVpZ2h0ZWVuL1JlYWRtZS50eHQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZWlnaHRlZW4vUmVhZG1lLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjA2YjEzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWVpZ2h0ZWVuL1JlYWRtZS50eHQKQEAgLTAsMCArMSwzNyBAQAorRXhhbXBsZSBTaWduYXR1cmVzWzFdCisKK1sxXSBodHRwOi8vd3d3LnczLm9yZy9TaWduYXR1cmUvRHJhZnRzL3htbGRzaWctY29yZS9PdmVydmlldy5odG1sCisKK1RoaXMgaXMgYW4gZXhlcmNpc2Ugb3ZlciBzb21lIGtleSBpbmZvcm1hdGlvbiB0eXBlcywgaW50ZXJvcAorb2Ygd2hpY2ggaXMgcmVxdWlyZWQgZm9yIGNlcnRhaW4gc3RhbmRhcmRpc2F0aW9uIHByb2Nlc3Nlcy4KKworLiBzaWduYXR1cmUta2V5bmFtZS54bWwKKy4gc2lnbmF0dXJlLXJldHJpZXZhbG1ldGhvZC1yYXd4NTA5Y3J0LnhtbAorLiBzaWduYXR1cmUteDUwOS1jcnQtY3JsLnhtbAorLiBzaWduYXR1cmUteDUwOS1jcnQueG1sCisuIHNpZ25hdHVyZS14NTA5LWlzLnhtbAorLiBzaWduYXR1cmUteDUwOS1za2kueG1sCisuIHNpZ25hdHVyZS14NTA5LXNuLnhtbAorLiBjZXJ0cy8qLmNydAorCitUbyByZXNvbHZlIHRoZSBrZXkgYXNzb2NpYXRlZCB3aXRoIHRoZSBLZXlOYW1lIGluIGBzaWduYXR1cmUta2V5bmFtZS54bWwnCit5b3UgbXVzdCBwZXJmb3JtIGEgY3VubmluZyB0cmFuc2Zvcm1hdGlvbiBmcm9tIHRoZSBuYW1lIGBYeHgnIHRvIHRoZQorY2VydGlmaWNhdGUgdGhhdCByZXNpZGVzIGluIHRoZSBkaXJlY3RvcnkgYGNlcnRzLycgdGhhdCBoYXMgYSBzdWJqZWN0IG5hbWUKK2NvbnRhaW5pbmcgdGhlIGNvbW1vbiBuYW1lIGBYeHgnLiBUaGUgdHJhbnNmb3JtYXRpb24gZnJvbSB0aGlzIGtleSBuYW1lIHRvCit0aGUgZmlsZW5hbWUgdW5kZXIgd2hpY2ggdGhlIGNlcnRpZmljYXRlIGlzIHN0b3JlZCBgY2VydHMveHh4LmNydCcgaXMgYQordHJhZGUgc2VjcmV0IGVuY3J5cHRpb24gcHJvY2VzcywgdGhlIGNpcmN1bXZlbnRpb24gb2Ygd2hpY2ggbWF5IGV4cG9zZQoreW91IHRvIGNpdmlsIGFuZCBjcmltaW5hbCBwcm9zZWN1dGlvbiB1bmRlciB0aGUgRE1DQSBhbmQgb3RoZXIgYXBwbGljYWJsZQorbGF3cy4KKworVG8gcmVzb2x2ZSB0aGUga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGUgWDUwOURhdGEgaW4gYHNpZ25hdHVyZS14NTA5LWlzLnhtbCcsCitgc2lnbmF0dXJlLXg1MDktc2tpLnhtbCcgYW5kIGBzaWduYXR1cmUteDUwOS1zbi54bWwnIHlvdSBuZWVkIHRvIHJlc29sdmUKK3RoZSBpZGVudGlmaWVkIGNlcnRpZmljYXRlIGZyb20gdGhvc2UgaW4gdGhlIGBjZXJ0cycgZGlyZWN0b3J5LgorCitJbiBgc2lnbmF0dXJlLXg1MDktY3J0LWNybC54bWwnIGFuIFguNTA5IENSTCBpcyBwcmVzZW50IHdoaWNoIGhhcyByZXZva2VkCit0aGUgWC41MDkgY2VydGlmaWNhdGUgdXNlZCBmb3Igc2lnbmluZy4gU28gdmVyaWZpY2F0aW9uIHNob3VsZCBiZQorcXVhbGlmaWVkLgorCitNZXJsaW4gSHVnaGVzIDxtZXJsaW5AYmFsdGltb3JlLmllPgorQmFsdGltb3JlIFRlY2hub2xvZ2llcywgTHRkLgorCitUdWVzZGF5LCBNYXkgMTUsIDIwMDEKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1laWdodGVlbi9jZXJ0cy9iYWRiLmNydCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1laWdodGVlbi9jZXJ0cy9iYWRiLmNydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTFkZjJkCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWVpZ2h0ZWVuL2NlcnRzL2JhZGIuY3J0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1laWdodGVlbi9jZXJ0cy9iYWxvci5jcnQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZWlnaHRlZW4vY2VydHMvYmFsb3IuY3J0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1Y2NjZDkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZWlnaHRlZW4vY2VydHMvYmFsb3IuY3J0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1laWdodGVlbi9jZXJ0cy9icmVzLmNydCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1laWdodGVlbi9jZXJ0cy9icmVzLmNydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzg2ODg1Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWVpZ2h0ZWVuL2NlcnRzL2JyZXMuY3J0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1laWdodGVlbi9jZXJ0cy9sdWdoLmNydCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1laWdodGVlbi9jZXJ0cy9sdWdoLmNydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjk1NWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWVpZ2h0ZWVuL2NlcnRzL2x1Z2guY3J0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1laWdodGVlbi9jZXJ0cy9tYWNoYS5jcnQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZWlnaHRlZW4vY2VydHMvbWFjaGEuY3J0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjNTcwNjEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZWlnaHRlZW4vY2VydHMvbWFjaGEuY3J0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1laWdodGVlbi9jZXJ0cy9tb3JpZ3UuY3J0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWVpZ2h0ZWVuL2NlcnRzL21vcmlndS5jcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJiMjc1NwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1laWdodGVlbi9jZXJ0cy9tb3JpZ3UuY3J0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1laWdodGVlbi9jZXJ0cy9uZW1haW4uY3J0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWVpZ2h0ZWVuL2NlcnRzL25lbWFpbi5jcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM2MDU5NwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1laWdodGVlbi9jZXJ0cy9uZW1haW4uY3J0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1laWdodGVlbi9jZXJ0cy9ub2NlcnRpZmlhY3RlLmNydCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1laWdodGVlbi9jZXJ0cy9ub2NlcnRpZmlhY3RlLmNydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjA2YjEzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWVpZ2h0ZWVuL2NlcnRzL25vY2VydGlmaWFjdGUuY3J0CkBAIC0wLDAgKzEsMzcgQEAKK0V4YW1wbGUgU2lnbmF0dXJlc1sxXQorCitbMV0gaHR0cDovL3d3dy53My5vcmcvU2lnbmF0dXJlL0RyYWZ0cy94bWxkc2lnLWNvcmUvT3ZlcnZpZXcuaHRtbAorCitUaGlzIGlzIGFuIGV4ZXJjaXNlIG92ZXIgc29tZSBrZXkgaW5mb3JtYXRpb24gdHlwZXMsIGludGVyb3AKK29mIHdoaWNoIGlzIHJlcXVpcmVkIGZvciBjZXJ0YWluIHN0YW5kYXJkaXNhdGlvbiBwcm9jZXNzZXMuCisKKy4gc2lnbmF0dXJlLWtleW5hbWUueG1sCisuIHNpZ25hdHVyZS1yZXRyaWV2YWxtZXRob2QtcmF3eDUwOWNydC54bWwKKy4gc2lnbmF0dXJlLXg1MDktY3J0LWNybC54bWwKKy4gc2lnbmF0dXJlLXg1MDktY3J0LnhtbAorLiBzaWduYXR1cmUteDUwOS1pcy54bWwKKy4gc2lnbmF0dXJlLXg1MDktc2tpLnhtbAorLiBzaWduYXR1cmUteDUwOS1zbi54bWwKKy4gY2VydHMvKi5jcnQKKworVG8gcmVzb2x2ZSB0aGUga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGUgS2V5TmFtZSBpbiBgc2lnbmF0dXJlLWtleW5hbWUueG1sJworeW91IG11c3QgcGVyZm9ybSBhIGN1bm5pbmcgdHJhbnNmb3JtYXRpb24gZnJvbSB0aGUgbmFtZSBgWHh4JyB0byB0aGUKK2NlcnRpZmljYXRlIHRoYXQgcmVzaWRlcyBpbiB0aGUgZGlyZWN0b3J5IGBjZXJ0cy8nIHRoYXQgaGFzIGEgc3ViamVjdCBuYW1lCitjb250YWluaW5nIHRoZSBjb21tb24gbmFtZSBgWHh4Jy4gVGhlIHRyYW5zZm9ybWF0aW9uIGZyb20gdGhpcyBrZXkgbmFtZSB0bwordGhlIGZpbGVuYW1lIHVuZGVyIHdoaWNoIHRoZSBjZXJ0aWZpY2F0ZSBpcyBzdG9yZWQgYGNlcnRzL3h4eC5jcnQnIGlzIGEKK3RyYWRlIHNlY3JldCBlbmNyeXB0aW9uIHByb2Nlc3MsIHRoZSBjaXJjdW12ZW50aW9uIG9mIHdoaWNoIG1heSBleHBvc2UKK3lvdSB0byBjaXZpbCBhbmQgY3JpbWluYWwgcHJvc2VjdXRpb24gdW5kZXIgdGhlIERNQ0EgYW5kIG90aGVyIGFwcGxpY2FibGUKK2xhd3MuCisKK1RvIHJlc29sdmUgdGhlIGtleSBhc3NvY2lhdGVkIHdpdGggdGhlIFg1MDlEYXRhIGluIGBzaWduYXR1cmUteDUwOS1pcy54bWwnLAorYHNpZ25hdHVyZS14NTA5LXNraS54bWwnIGFuZCBgc2lnbmF0dXJlLXg1MDktc24ueG1sJyB5b3UgbmVlZCB0byByZXNvbHZlCit0aGUgaWRlbnRpZmllZCBjZXJ0aWZpY2F0ZSBmcm9tIHRob3NlIGluIHRoZSBgY2VydHMnIGRpcmVjdG9yeS4KKworSW4gYHNpZ25hdHVyZS14NTA5LWNydC1jcmwueG1sJyBhbiBYLjUwOSBDUkwgaXMgcHJlc2VudCB3aGljaCBoYXMgcmV2b2tlZAordGhlIFguNTA5IGNlcnRpZmljYXRlIHVzZWQgZm9yIHNpZ25pbmcuIFNvIHZlcmlmaWNhdGlvbiBzaG91bGQgYmUKK3F1YWxpZmllZC4KKworTWVybGluIEh1Z2hlcyA8bWVybGluQGJhbHRpbW9yZS5pZT4KK0JhbHRpbW9yZSBUZWNobm9sb2dpZXMsIEx0ZC4KKworVHVlc2RheSwgTWF5IDE1LCAyMDAxCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZWlnaHRlZW4vc2lnbmF0dXJlLWtleW5hbWUueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWVpZ2h0ZWVuL3NpZ25hdHVyZS1rZXluYW1lLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmY3NzMxCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWVpZ2h0ZWVuL3NpZ25hdHVyZS1rZXluYW1lLnhtbApAQCAtMCwwICsxLDE5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgIDxTaWduZWRJbmZvPgorICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiIC8+CisgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIgLz4KKyAgICA8UmVmZXJlbmNlIFVSST0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sLXN0eWxlc2hlZXQiPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgPERpZ2VzdFZhbHVlPjYwTnZadnRkVEIrN1VubExwL0gyNHA3aDRicz08L0RpZ2VzdFZhbHVlPgorICAgIDwvUmVmZXJlbmNlPgorICA8L1NpZ25lZEluZm8+CisgIDxTaWduYXR1cmVWYWx1ZT4KKyAgICBLVGUxSDVIanA4aHdhaE5Gb1VxSER1UEpOTnFoUzFVM0JCQkg1L2dCeUl0Tkl3VjE4bk1pTHE0S3VuekZuT3FECisgICAgeHpUdU8wL1Qrd3NvWUMxeE9FdUNEeHlJdWpOQ2FKZkxoK3JDaTVUSHVsbmM4S1NISEVvUFErN2ZBMVZqbU8zMQorICAgIDJpdzFpRU5PaTdtLy93ektsSUh1eFpDSjVudm9sVDIxUFY2blNFNERIbEE9CisgIDwvU2lnbmF0dXJlVmFsdWU+CisgIDxLZXlJbmZvPgorICAgIDxLZXlOYW1lPkx1Z2g8L0tleU5hbWU+CisgIDwvS2V5SW5mbz4KKzwvU2lnbmF0dXJlPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWVpZ2h0ZWVuL3NpZ25hdHVyZS1yZXRyaWV2YWxtZXRob2QtcmF3eDUwOWNydC54bWwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZWlnaHRlZW4vc2lnbmF0dXJlLXJldHJpZXZhbG1ldGhvZC1yYXd4NTA5Y3J0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzNjMTcwCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWVpZ2h0ZWVuL3NpZ25hdHVyZS1yZXRyaWV2YWxtZXRob2QtcmF3eDUwOWNydC54bWwKQEAgLTAsMCArMSwxOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICA8U2lnbmVkSW5mbz4KKyAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPgorICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiIC8+CisgICAgPFJlZmVyZW5jZSBVUkk9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1zdHlsZXNoZWV0Ij4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZT42ME52WnZ0ZFRCKzdVbmxMcC9IMjRwN2g0YnM9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgorICA8U2lnbmF0dXJlVmFsdWU+CisgICAgRm53c1NDV1Q2UkVXLzhRbk9qdjBCSytyM0x5LzRhQisrcE5uWnA5cG56OGY3K2ozM2VLU2oxc295UUxxNXptTgorICAgIEZ3eWVlUWhubFRiUjFrZnZlMDE0dWI5dUhWQzlBMWNmbUdaeFFGMURDK2VuSHQrQUFQSmFhMjc4L29jZ3BNYjUKKyAgICBHaWJsNHc3ZTNIQWRCbi9SSkNyRkpINzd3WTJvVTVPYjB6SVF0RUNWTkprPQorICA8L1NpZ25hdHVyZVZhbHVlPgorICA8S2V5SW5mbz4KKyAgICA8UmV0cmlldmFsTWV0aG9kIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyYXdYNTA5Q2VydGlmaWNhdGUiIFVSST0iY2VydHMvYmFsb3IuY3J0IiAvPgorICA8L0tleUluZm8+Cis8L1NpZ25hdHVyZT4KZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1laWdodGVlbi9zaWduYXR1cmUteDUwOS1jcnQtY3JsLnhtbCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1laWdodGVlbi9zaWduYXR1cmUteDUwOS1jcnQtY3JsLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDg3NzUxCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWVpZ2h0ZWVuL3NpZ25hdHVyZS14NTA5LWNydC1jcmwueG1sCkBAIC0wLDAgKzEsNDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgPFNpZ25lZEluZm8+CisgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIgLz4KKyAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIiAvPgorICAgIDxSZWZlcmVuY2UgVVJJPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldCI+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWU+NjBOdlp2dGRUQis3VW5sTHAvSDI0cDdoNGJzPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgIDwvU2lnbmVkSW5mbz4KKyAgPFNpZ25hdHVyZVZhbHVlPgorICAgIERyTlZxS09pbFBzd0V3Q2lsWjNFa2pGeVFvZjVCSkFiQWRpMkk4cVp1SkFzTDdkMTgwbldlL3hQQVVSSEM2SVIKKyAgICB0MnhKa05nQ3hyZ2RweTkvLzJVemFlRTY1VVJpMlRIZ2JQVzFmaHJwNmRWZUp5aGlxOVlmSjBPZm43b2VBRGt0CisgICAga2QzalppcFVVRzdVR1Ewb3ozYk1hWjZPYUdZTGt5Z25VWFdoNUVIcGc0QT0KKyAgPC9TaWduYXR1cmVWYWx1ZT4KKyAgPEtleUluZm8+CisgICAgPFg1MDlEYXRhPgorICAgICAgPFg1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgTUlJQ3dUQ0NBaXFnQXdJQkFnSUdBT1o3NWFDWk1BMEdDU3FHU0liM0RRRUJCUVVBTUc0eEN6QUpCZ05WQkFZVAorICAgICAgICBBa2xGTVE4d0RRWURWUVFJRXdaRWRXSnNhVzR4SlRBakJnTlZCQW9USEVKaGJIUnBiVzl5WlNCVVpXTm9ibTlzCisgICAgICAgIGIyZHBaWE1zSUV4MFpDNHhFVEFQQmdOVkJBc1RDRmd2VTJWamRYSmxNUlF3RWdZRFZRUURFd3RZTDFObFkzVnkKKyAgICAgICAgWlNCRFFUQWVGdzB3TVRBMU1UVXhNREExTWpSYUZ3MHdNakExTVRVeE1EQTBNemRhTUdjeEN6QUpCZ05WQkFZVAorICAgICAgICBBa2xGTVE4d0RRWURWUVFJRXdaRWRXSnNhVzR4SlRBakJnTlZCQW9USEVKaGJIUnBiVzl5WlNCVVpXTm9ibTlzCisgICAgICAgIGIyZHBaWE1zSUV4MFpDNHhFVEFQQmdOVkJBc1RDRmd2VTJWamRYSmxNUTB3Q3dZRFZRUURFd1JDY21Wek1JR2YKKyAgICAgICAgTUEwR0NTcUdTSWIzRFFFQkFRVUFBNEdOQURDQmlRS0JnUURBUXRSRXFjUEprZUdYY0NPUnMvU3djSExoOXlTdworICAgICAgICB0UU5UVXZUUW01NGhCTGJUTGhKUTIwTkpmNDZaNFlTTm9hSTdJVDR4OGZpditKWkxOclFjMklTR1pCaWJNVlo0CisgICAgICAgIDRadlNXWWxzN2Q5UXVyUmx0dlEyb0NxRGhVTVNYY0dZM0hKbWVFeklUSWZkaDZiSXVTUTBzREFYTnlnVmhHci8KKyAgICAgICAgdlZhVU95eHIxQW91dFFJREFRQUJvM0V3YnpBT0JnTlZIUThCQWY4RUJBTUNCNEF3RVFZRFZSME9CQW9FQ0l6MgorICAgICAgICBxMVc2YzJLVE1EVUdBMVVkRWdRdU1DeUdLbWgwZEhBNkx5OTNkM2N1WW1Gc2RHbHRiM0psTG1OdmJTOXdjbTlrCisgICAgICAgIGRXTjBjeTk0YzJWamRYSmxMekFUQmdOVkhTTUVEREFLZ0FpRjdCOEtqMzhhMFRBTkJna3Foa2lHOXcwQkFRVUYKKyAgICAgICAgQUFPQmdRQXpGaG54amk1K1VkSjZ0YmZSS1RmaFFHMEpXcldpUVJ5ME4zbHJBWFFucFFCRmpPanRSUFJpUjVTVAorICAgICAgICB2UlFiUk5yR2xqZWdJcG9GRksxMlVqOUJ4UDZ4K3VaVXF6S0RmRnFXRU4wczlZOVlRZGtsK0ROOWpaWndnSzZOCisgICAgICAgIEtZR3FoNDNISW9QS0diMVVROTN0VEdXK0Y0eWdOeEhsdXZPMU92dGt1OGFQQm40aWRRPT0KKyAgICAgIDwvWDUwOUNlcnRpZmljYXRlPgorICAgIDwvWDUwOURhdGE+CisgICAgPFg1MDlEYXRhPgorICAgICAgPFg1MDlDUkw+CisgICAgICAgIE1JSUJkakNCNEFJQkFUQU5CZ2txaGtpRzl3MEJBUVVGQURCdU1Rc3dDUVlEVlFRR0V3SkpSVEVQTUEwR0ExVUUKKyAgICAgICAgQ0JNR1JIVmliR2x1TVNVd0l3WURWUVFLRXh4Q1lXeDBhVzF2Y21VZ1ZHVmphRzV2Ykc5bmFXVnpMQ0JNZEdRdQorICAgICAgICBNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVVTUJJR0ExVUVBeE1MV0M5VFpXTjFjbVVnUTBFWERUQXhNRFV4CisgICAgICAgIE5URXdORFV3TUZvWERUQXhNRGt5TURFd05EVXdNRm93R1RBWEFnWUE1bnZsb0prWERUQXhNRFV4TlRFd05EVXcKKyAgICAgICAgTUZxZ0l6QWhNQW9HQTFVZEZBUURBZ0VBTUJNR0ExVWRJd1FNTUFxQUNJWHNId3FQZnhyUk1BMEdDU3FHU0liMworICAgICAgICBEUUVCQlFVQUE0R0JBRFZQaXlKNFErS3IzQi9HR21oL0tiVnRTUHY1eDF6ZmZHeHAxWHdWNWNWT21rc1ZyS054CisgICAgICAgIHJDdzg2SzBaTHhWZ3kxcklxbDgraTFiOXUzT3p1bzZWaFUwZWwvTkYyVHRvMmpBeXkwaitQUEsyWHYxL0FUUXgKKyAgICAgICAgSjJQSytUeTl2a20rN2pqdXJmZUpWdkFDOEQrV0ZCQWgvSldJem1NWEE4Y01CZlRGQlJQaFpRYW8KKyAgICAgIDwvWDUwOUNSTD4KKyAgICA8L1g1MDlEYXRhPgorICA8L0tleUluZm8+Cis8L1NpZ25hdHVyZT4KZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1laWdodGVlbi9zaWduYXR1cmUteDUwOS1jcnQueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWVpZ2h0ZWVuL3NpZ25hdHVyZS14NTA5LWNydC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzgxMTgyMAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1laWdodGVlbi9zaWduYXR1cmUteDUwOS1jcnQueG1sCkBAIC0wLDAgKzEsMzcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgPFNpZ25lZEluZm8+CisgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIgLz4KKyAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIiAvPgorICAgIDxSZWZlcmVuY2UgVVJJPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldCI+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWU+NjBOdlp2dGRUQis3VW5sTHAvSDI0cDdoNGJzPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgIDwvU2lnbmVkSW5mbz4KKyAgPFNpZ25hdHVyZVZhbHVlPgorICAgIFpyUk94SWNPU0J2dDV6MmtyRWhRR1NWSW80b0F3VEp3R0FvRmlXdWN2dkV0WTlrMEwyUjVSVkhCbkhDems1R1QKKyAgICBrSEdhVDhTVXF0bkRlaUg2Vy8yRk5mY2lpVi93MXB4VVJ2TmN5VzhjWUNuMUI1WEY2OHZJTFhVYXB0V2YwREt3CisgICAgRHZDRlMrdUxoMEFDdUVVZnBlMUR4MWZ3Qjg1bHBLMmlRY3B4OWRQYUM0TT0KKyAgPC9TaWduYXR1cmVWYWx1ZT4KKyAgPEtleUluZm8+CisgICAgPFg1MDlEYXRhPgorICAgICAgPFg1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgTUlJQ3d6Q0NBaXlnQXdJQkFnSUdBT1o3NVFoSE1BMEdDU3FHU0liM0RRRUJCUVVBTUc0eEN6QUpCZ05WQkFZVAorICAgICAgICBBa2xGTVE4d0RRWURWUVFJRXdaRWRXSnNhVzR4SlRBakJnTlZCQW9USEVKaGJIUnBiVzl5WlNCVVpXTm9ibTlzCisgICAgICAgIGIyZHBaWE1zSUV4MFpDNHhFVEFQQmdOVkJBc1RDRmd2VTJWamRYSmxNUlF3RWdZRFZRUURFd3RZTDFObFkzVnkKKyAgICAgICAgWlNCRFFUQWVGdzB3TVRBMU1UVXhNREEwTkRWYUZ3MHdNakExTVRVeE1EQTBNemRhTUdreEN6QUpCZ05WQkFZVAorICAgICAgICBBa2xGTVE4d0RRWURWUVFJRXdaRWRXSnNhVzR4SlRBakJnTlZCQW9USEVKaGJIUnBiVzl5WlNCVVpXTm9ibTlzCisgICAgICAgIGIyZHBaWE1zSUV4MFpDNHhFVEFQQmdOVkJBc1RDRmd2VTJWamRYSmxNUTh3RFFZRFZRUURFd1pOYjNKcFozVXcKKyAgICAgICAgZ1o4d0RRWUpLb1pJaHZjTkFRRUJCUUFEZ1kwQU1JR0pBb0dCQUxUNEZKa3h1K2JCNWxPd1lhK2lySWI3c0pVNworICAgICAgICA5c1JRYllZbmZ3MzVEN05Ra2lnK0x2aTJMWFhvQTZBQnVsbDJiRitndStzZ1J6ZXp6T3M2VnNUTDh6NTdUSXoyCisgICAgICAgIDQ4SGFNSW5Gak9pcVNBTm16UUtsWHYxUGpYU3hTeUhSaS8zeGM4Z01mbUN4ZVNQQ1o1VnBVaVFvSjVacFdjRHoKKyAgICAgICAgL0xLdmIwbDlYMFlCek1abEFnTUJBQUdqY1RCdk1BNEdBMVVkRHdFQi93UUVBd0lIZ0RBUkJnTlZIUTRFQ2dRSQorICAgICAgICBoYmlzMzVsSWN1OHdOUVlEVlIwU0JDNHdMSVlxYUhSMGNEb3ZMM2QzZHk1aVlXeDBhVzF2Y21VdVkyOXRMM0J5CisgICAgICAgIGIyUjFZM1J6TDNoelpXTjFjbVV2TUJNR0ExVWRJd1FNTUFxQUNJWHNId3FQZnhyUk1BMEdDU3FHU0liM0RRRUIKKyAgICAgICAgQlFVQUE0R0JBR1NCZFBvdTVDV0FpeVM1L2Y0Nm0wMG1JSXFPM3hsNlpYT2MvRFJibEY0Z1duZXNkMkY1di9zNgorICAgICAgICBsQWJxSzgrd0pNNkd4dnBPa1NwNk8xcTZoWlJ5ekY4NlFQbFhDZmhLQVhrZ3pIWHRiNlBmVDJtOXQwaWF3bmp5CisgICAgICAgIFArb3lZb2ZuRlU1RkZWT0N1alNybUZ4M0ZDVStXZzZSVDN2MWpSb00zWWZNWVpZRXpmVFQKKyAgICAgIDwvWDUwOUNlcnRpZmljYXRlPgorICAgIDwvWDUwOURhdGE+CisgIDwvS2V5SW5mbz4KKzwvU2lnbmF0dXJlPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWVpZ2h0ZWVuL3NpZ25hdHVyZS14NTA5LWlzLnhtbCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1laWdodGVlbi9zaWduYXR1cmUteDUwOS1pcy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk1ODExZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1laWdodGVlbi9zaWduYXR1cmUteDUwOS1pcy54bWwKQEAgLTAsMCArMSwyNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICA8U2lnbmVkSW5mbz4KKyAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPgorICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiIC8+CisgICAgPFJlZmVyZW5jZSBVUkk9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1zdHlsZXNoZWV0Ij4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZT42ME52WnZ0ZFRCKzdVbmxMcC9IMjRwN2g0YnM9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgorICA8U2lnbmF0dXJlVmFsdWU+CisgICAgcGpsdDRVUXhJOTU0VElpY3NjdFR4Ums0cUM0dEYvaDJZMGttaXZYdnlVVThFUG9hQ0g4YklyY0ZXejdJN0MzUAorICAgIDdOWmkzNDFpdGpTV0E5Y0ZuU0JLYm9CUHZLeFBNTW1ZU2hzVk1GQkR5QjJqaUYxVDNRYzRDL0UwQkpwUi9OdG4KKyAgICB1QlVOQlBOeEMwVFVqdVM3ZklZa3UzTnBWVmJJdjFPUDBPcVdOaTBLRE4wPQorICA8L1NpZ25hdHVyZVZhbHVlPgorICA8S2V5SW5mbz4KKyAgICA8WDUwOURhdGE+CisgICAgICA8WDUwOUlzc3VlclNlcmlhbD4KKyAgICAgICAgPFg1MDlJc3N1ZXJOYW1lPgorICAgICAgICAgIENOPVgvU2VjdXJlIENBLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlIFRlY2hub2xvZ2llc1wsIEx0ZC4sU1Q9RHVibGluLEM9SUUKKyAgICAgICAgPC9YNTA5SXNzdWVyTmFtZT4KKyAgICAgICAgPFg1MDlTZXJpYWxOdW1iZXI+OTg5OTIxMDk4OTEyPC9YNTA5U2VyaWFsTnVtYmVyPgorICAgICAgPC9YNTA5SXNzdWVyU2VyaWFsPgorICAgIDwvWDUwOURhdGE+CisgIDwvS2V5SW5mbz4KKzwvU2lnbmF0dXJlPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWVpZ2h0ZWVuL3NpZ25hdHVyZS14NTA5LXNraS54bWwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZWlnaHRlZW4vc2lnbmF0dXJlLXg1MDktc2tpLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTIxZjRkCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWVpZ2h0ZWVuL3NpZ25hdHVyZS14NTA5LXNraS54bWwKQEAgLTAsMCArMSwyMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICA8U2lnbmVkSW5mbz4KKyAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPgorICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiIC8+CisgICAgPFJlZmVyZW5jZSBVUkk9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1zdHlsZXNoZWV0Ij4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZT42ME52WnZ0ZFRCKzdVbmxMcC9IMjRwN2g0YnM9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgorICA8U2lnbmF0dXJlVmFsdWU+CisgICAgb2RRRHMwZE1ja2pvM2hyUVZaZng3M1NCREFSNzViS2FhL3ZvZWZiQjJmK3VLdkxNUURGMUNlQjh3QTd2bWxEVgorICAgIG9KSmUzLzE4dnZhd1NqV2dJb3dOL0tSN0Vad2tjdnR3OWhuYjFRWUVkZFgrQ3VlZUNmZEV2cDU1M25JUHRpYmcKKyAgICB6Kzc3d0FiVnExVkNPRXNweDNnbjlEWmNMSmVHSGthZWVUUU5wbFlrbjg0PQorICA8L1NpZ25hdHVyZVZhbHVlPgorICA8S2V5SW5mbz4KKyAgICA8WDUwOURhdGE+CisgICAgICA8WDUwOVNLST4KKyAgICAgICAgaUlnK3pFbENQWjA9CisgICAgICA8L1g1MDlTS0k+CisgICAgPC9YNTA5RGF0YT4KKyAgPC9LZXlJbmZvPgorPC9TaWduYXR1cmU+CmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZWlnaHRlZW4vc2lnbmF0dXJlLXg1MDktc24ueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWVpZ2h0ZWVuL3NpZ25hdHVyZS14NTA5LXNuLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmEzZDM4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWVpZ2h0ZWVuL3NpZ25hdHVyZS14NTA5LXNuLnhtbApAQCAtMCwwICsxLDIzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgIDxTaWduZWRJbmZvPgorICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiIC8+CisgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIgLz4KKyAgICA8UmVmZXJlbmNlIFVSST0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sLXN0eWxlc2hlZXQiPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgPERpZ2VzdFZhbHVlPjYwTnZadnRkVEIrN1VubExwL0gyNHA3aDRicz08L0RpZ2VzdFZhbHVlPgorICAgIDwvUmVmZXJlbmNlPgorICA8L1NpZ25lZEluZm8+CisgIDxTaWduYXR1cmVWYWx1ZT4KKyAgICBMNUVHd21sUm1pS0h1MFN1TUVoRXdBekZLM3VOV2lkcWdwYytaSndzOHB5RC91VFpLZFM5M0dNWGx5TXVwNERqCisgICAgK0U4K0FGTmo4ekoySnRRVUJDa3lUT1M2WGpNdlNVNFE0L3RsbTZzcmpST3RJdnFwbndmVUYwekV3NVlzd21sRgorICAgIFRwWlk5MkVVUUVpQUVyRHQ5TEw5Wk95M2ZUQWJ5eHMwV0N6UUVHb09ERTg9CisgIDwvU2lnbmF0dXJlVmFsdWU+CisgIDxLZXlJbmZvPgorICAgIDxYNTA5RGF0YT4KKyAgICAgIDxYNTA5U3ViamVjdE5hbWU+CisgICAgICAgIENOPUJhZGIsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUgVGVjaG5vbG9naWVzXCwgTHRkLixTVD1EdWJsaW4sQz1JRQorICAgICAgPC9YNTA5U3ViamVjdE5hbWU+CisgICAgPC9YNTA5RGF0YT4KKyAgPC9LZXlJbmZvPgorPC9TaWduYXR1cmU+CmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9SZWFkbWUudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vUmVhZG1lLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMWZiMzcxCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vUmVhZG1lLnR4dApAQCAtMCwwICsxLDE4IEBACitFeGFtcGxlIFNpZ25hdHVyZXNbMV0KKworWzFdIGh0dHA6Ly93d3cudzMub3JnL1NpZ25hdHVyZS9EcmFmdHMveG1sZHNpZy1jb3JlL092ZXJ2aWV3Lmh0bWwKKworU2VlIHNpZ25hdHVyZS0qLnhtbAorCitUaGUga2V5IGZvciB0aGUgSE1BQy1TSEExIHNpZ25hdHVyZXMgaXMgInNlY3JldCIuZ2V0Qnl0ZXMoIkFTQ0lJIikKK3doaWNoIGlzLCBpbiBoZXgsICg3MyA2NSA2MyA3MiA2NSA3NCkuCisKK0luY2x1ZGVkIGluIHRoZSBkaXJlY3RvcnkgYXJlOgorCisgIHNpZ25hdHVyZS0qLnhtbCAtIFRoZSBzaWduYXR1cmVzCisgIHNpZ25hdHVyZS0qLWMxNG4tPy50eHQgLSBUaGUgaW50ZXJtZWRpYXRlIGMxNG4gb3V0cHV0CisKK01lcmxpbiBIdWdoZXMgPG1lcmxpbkBiYWx0aW1vcmUuaWU+CitCYWx0aW1vcmUgVGVjaG5vbG9naWVzLCBMdGQuCisKK0ZyaWRheSwgTWFyY2ggMjMsIDIwMDEKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWZ0ZWVuL3NpZ25hdHVyZS1lbnZlbG9wZWQtZHNhLWMxNG4tMC50eHQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9zaWduYXR1cmUtZW52ZWxvcGVkLWRzYS1jMTRuLTAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlY2Y4Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9zaWduYXR1cmUtZW52ZWxvcGVkLWRzYS1jMTRuLTAudHh0CkBAIC0wLDAgKzEsMyBAQAorPEVudmVsb3Blcz0iaHR0cDp1cm46ZW52ZWxvcGUiPgorICAKKzwvRW52ZWxvcGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWVudmVsb3BlZC1kc2EtYzE0bi0xLnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWZ0ZWVuL3NpZ25hdHVyZS1lbnZlbG9wZWQtZHNhLWMxNG4tMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk3MWU5NQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWZ0ZWVuL3NpZ25hdHVyZS1lbnZlbG9wZWQtZHNhLWMxNG4tMS50eHQKQEAgLTAsMCArMSwxMSBAQAorZWRJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICA8Q2Fub25vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiPjwvQ2Fub25pY2FsaXphdGlvbk1ldGhvZD4KKyAgICA8U2lnbmduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiPjwvU2lnbmF0dXJlTWV0aG9kZXRob2Q+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIj48L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICA8RGlnZXN0VmFsdWU+SzhNL2xQYktudU1Ec08wVXp1ajc1bFF0elFJPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICA8L1NpZ25lZEluZm8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWVudmVsb3BlZC1kc2EueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWVudmVsb3BlZC1kc2EueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1YzYzYzgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9zaWduYXR1cmUtZW52ZWxvcGVkLWRzYS54bWwKQEAgLTAsMCArMSw2NiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxFbnZlbG9wZSB4bWxucz0idXJuOmVudmVsb3BlIj4KKyAgPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgPFNpZ25lZEluZm8+CisgICAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPgorICAgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIgLz4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiIC8+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+SzhNL2xQYktudU1Ec08wVXp1ajc1bFF0elFJPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICA8L1NpZ25lZEluZm8+CisgICAgPFNpZ25hdHVyZVZhbHVlPgorICAgICAgRHBFeWxoUW9pVUtCb0tXbVlmYWpYTzdMWnhpRFlnVnRVdENOeVRnd1pnb0Noem9yQTJuaGtRPT0KKyAgICA8L1NpZ25hdHVyZVZhbHVlPgorICAgIDxLZXlJbmZvPgorICAgICAgPEtleVZhbHVlPgorICAgICAgICA8RFNBS2V5VmFsdWU+CisgICAgICAgICAgPFA+CisgICAgICAgICAgICByRnRvOHVQUU02eTM0RkxQbURoNDBCTEoxclZyQzhWZVJxdXVoUFo2allORmtRdXd4bnUvd0N2SUFNaHVrUEJMCisgICAgICAgICAgICBGRVQ4YkpmL2IyZWYrb3F4WmFqRWIrODh6bFpveUc4Zy93TWZEQkhUeHorQ25vd0xhaG5DQ1RZQnA1a3Q3RzhxCisgICAgICAgICAgICBVb2JKdXZqeWx3ajFzdDdWOUxzdTAzaVhNWHRiaXJpVWpGYTVnVVJhc044PQorICAgICAgICAgIDwvUD4KKyAgICAgICAgICA8UT4KKyAgICAgICAgICAgIGtFakFGcENlNGxjVU9kd3BocHpmK3RCYVVkcz0KKyAgICAgICAgICA8L1E+CisgICAgICAgICAgPEc+CisgICAgICAgICAgICBvZTE0UjJPdHlLeCtzKzYwTzVCUk5NT1lwSWcyVFUvZjE1TjNic0RFcktPV3RLWGVOSzlGUzdkV1N0cmVEeG8yCisgICAgICAgICAgICBTU2dPb25xQWQ0RnVKLzR1dmE3R2dOTDRVTElxWTdFK21XNWl3SjduL1dURUxoOThtRW9jc0xYa05oMjRIY0g0CisgICAgICAgICAgICBCWmZTQ1RydXV6bUN5amRWMUtTcVgvRXV4MDRIZkNXWW1keE4zU1EvcXF3PQorICAgICAgICAgIDwvRz4KKyAgICAgICAgICA8WT4KKyAgICAgICAgICAgIHBBNU5uWnZjZDU3NFdSWHVPQTdaZkMvN0xxdDRjQjBNUkxXdEh1YnRKb1ZPYW85aWI1cnk0clRrMHI2ZGRuT3YKKyAgICAgICAgICAgIEFJR0trdHV0ekszeW12S2xlUzNET3J3WlFnSisvQkRXRFc4a085UjY2bzZyZGppU29iQmkvMGMyVjErZGtxT2cKKyAgICAgICAgICAgIGpGbUt6Mzk1bXZDT1pHaEM3ZnFBVmhIYXQyRWpHUE1mZ1NaeUFCYTcrMWs9CisgICAgICAgICAgPC9ZPgorICAgICAgICA8L0RTQUtleVZhbHVlPgorICAgICAgPC9LZXlWYWx1ZT4KKyAgICAgIDxYNTA5RGF0YT4KKyAgICAgICAgPFg1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgICBNSUlEYlRDQ0F5eWdBd0lCQWdJR0FPQ2RyS3hrTUFrR0J5cUdTTTQ0QkFNd2V6RUxNQWtHQTFVRUJoTUNTVVV4CisgICAgICAgICAgRHpBTkJnTlZCQWdUQmtSMVlteHBiakVsTUNNR0ExVUVDaE1jUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbAorICAgICAgICAgIGN5d2dUSFJrTGpFUk1BOEdBMVVFQ3hNSVdDOVRaV04xY21VeElUQWZCZ05WQkFNVEdGZ3ZVMlZqZFhKbElERXcKKyAgICAgICAgICBNalF0WW1sMElFUlRRU0JEUVRBZUZ3MHdNREEzTWpjeE56RXpNek5hRncwd01UQTNNamN4TnpFek1qWmFNSHd4CisgICAgICAgICAgQ3pBSkJnTlZCQVlUQWtsRk1ROHdEUVlEVlFRSUV3WkVkV0pzYVc0eEpUQWpCZ05WQkFvVEhFSmhiSFJwYlc5eQorICAgICAgICAgIFpTQlVaV05vYm05c2IyZHBaWE1zSUV4MFpDNHhFVEFQQmdOVkJBc1RDRmd2VTJWamRYSmxNU0l3SUFZRFZRUUQKKyAgICAgICAgICBFeGxZTDFObFkzVnlaU0F4TURJMExXSnBkQ0JFVTBFZ1kzSjBNSUlCdURDQ0FTd0dCeXFHU000NEJBRXdnZ0VmCisgICAgICAgICAgQW9HQkFLeGJhUExqMERPc3QrQlN6NWc0ZU5BU3lkYTFhd3ZGWGthcnJvVDJlbzJEUlpFTHNNWjd2OEFyeUFESQorICAgICAgICAgIGJwRHdTeFJFL0d5WC8yOW5uL3FLc1dXb3hHL3ZQTTVXYU1odklQOERId3dSMDhjL2dwNk1DMm9ad2drMkFhZVoKKyAgICAgICAgICBMZXh2S2xLR3licjQ4cGNJOWJMZTFmUzdMdE40bHpGN1c0cTRsSXhXdVlGRVdyRGZBaFVBa0VqQUZwQ2U0bGNVCisgICAgICAgICAgT2R3cGhwemYrdEJhVWRzQ2dZRUFvZTE0UjJPdHlLeCtzKzYwTzVCUk5NT1lwSWcyVFUvZjE1TjNic0RFcktPVworICAgICAgICAgIHRLWGVOSzlGUzdkV1N0cmVEeG8yU1NnT29ucUFkNEZ1Si80dXZhN0dnTkw0VUxJcVk3RSttVzVpd0o3bi9XVEUKKyAgICAgICAgICBMaDk4bUVvY3NMWGtOaDI0SGNINEJaZlNDVHJ1dXptQ3lqZFYxS1NxWC9FdXgwNEhmQ1dZbWR4TjNTUS9xcXdECisgICAgICAgICAgZ1lVQUFvR0JBS1FPVFoyYjNIZWUrRmtWN2pnTzJYd3YreTZyZUhBZERFUzFyUjdtN1NhRlRtcVBZbSthOHVLMAorICAgICAgICAgIDVOSytuWFp6cndDQmlwTGJyY3l0OHByeXBYa3R3enE4R1VJQ2Z2d1ExZzF2SkR2VWV1cU9xM1k0a3FHd1l2OUgKKyAgICAgICAgICBObGRmblpLam9JeFppczkvZVpyd2ptUm9RdTM2Z0ZZUjJyZGhJeGp6SDRFbWNnQVd1L3Rab3pzd09UQVBCZ05WCisgICAgICAgICAgSFE4QkFmOEVCUU1EQUlBQU1CRUdBMVVkRGdRS0JBaUE0SU1MNGRuZEVEQVRCZ05WSFNNRUREQUtnQWlIb01uWQorICAgICAgICAgIG5EeFpVREFKQmdjcWhrak9PQVFEQXpBQU1DMENGUUNFWGExRTJ1ZUo4V01YNW5QMWxDY0JXaHhDMndJVUdVQ0IKKyAgICAgICAgICBiNk02T2ozTlFBSmJuWnNkWTYzckthMD0KKyAgICAgICAgPC9YNTA5Q2VydGlmaWNhdGU+CisgICAgICA8L1g1MDlEYXRhPgorICAgIDwvS2V5SW5mbz4KKyAgPC9TaWduYXR1cmU+Cis8L0VudmVsb3BlPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWVudmVsb3BpbmctYjY0LWRzYS1jMTRuLTAudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWVudmVsb3BpbmctYjY0LWRzYS1jMTRuLTAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0MzRiNTUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9zaWduYXR1cmUtZW52ZWxvcGluZy1iNjQtZHNhLWMxNG4tMC50eHQKQEAgLTAsMCArMSwxMSBAQAorZWRJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ij48L0Nhbm9uaWNhbGl6YXRpb25NZXRob2Q+CisgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSI+PC9TaWduYXR1cmVNZXRob2RldGhvZD4KKyAgICA8UmVmZXJlbmNlIFVSST0iI29iamVjdCI+CisgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNiYXNlNjQiPjwvVHJhbnNmb3JtPgorICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgIDxEaWdlc3RWYWx1ZT5ONnBqeDNPWTJWUkhNbUxob0FWOEhtTXUybmM9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWZ0ZWVuL3NpZ25hdHVyZS1lbnZlbG9waW5nLWI2NC1kc2EueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWVudmVsb3BpbmctYjY0LWRzYS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTliZjk0ZAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWZ0ZWVuL3NpZ25hdHVyZS1lbnZlbG9waW5nLWI2NC1kc2EueG1sCkBAIC0wLDAgKzEsNjUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgPFNpZ25lZEluZm8+CisgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIgLz4KKyAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIiAvPgorICAgIDxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij4KKyAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2Jhc2U2NCIgLz4KKyAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZT5ONnBqeDNPWTJWUkhNbUxob0FWOEhtTXUybmM9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgorICA8U2lnbmF0dXJlVmFsdWU+CisgICAgVytsclBKY2ZUMFV5ai9BWHl1OVgyWExzVHZCbzZSczhHTlpVTlVUNC8rd3gzSFl1di9Cb3ZRPT0KKyAgPC9TaWduYXR1cmVWYWx1ZT4KKyAgPEtleUluZm8+CisgICAgPEtleVZhbHVlPgorICAgICAgPERTQUtleVZhbHVlPgorICAgICAgICA8UD4KKyAgICAgICAgICByRnRvOHVQUU02eTM0RkxQbURoNDBCTEoxclZyQzhWZVJxdXVoUFo2allORmtRdXd4bnUvd0N2SUFNaHVrUEJMCisgICAgICAgICAgRkVUOGJKZi9iMmVmK29xeFphakViKzg4emxab3lHOGcvd01mREJIVHh6K0Nub3dMYWhuQ0NUWUJwNWt0N0c4cQorICAgICAgICAgIFVvYkp1dmp5bHdqMXN0N1Y5THN1MDNpWE1YdGJpcmlVakZhNWdVUmFzTjg9CisgICAgICAgIDwvUD4KKyAgICAgICAgPFE+CisgICAgICAgICAga0VqQUZwQ2U0bGNVT2R3cGhwemYrdEJhVWRzPQorICAgICAgICA8L1E+CisgICAgICAgIDxHPgorICAgICAgICAgIG9lMTRSMk90eUt4K3MrNjBPNUJSTk1PWXBJZzJUVS9mMTVOM2JzREVyS09XdEtYZU5LOUZTN2RXU3RyZUR4bzIKKyAgICAgICAgICBTU2dPb25xQWQ0RnVKLzR1dmE3R2dOTDRVTElxWTdFK21XNWl3SjduL1dURUxoOThtRW9jc0xYa05oMjRIY0g0CisgICAgICAgICAgQlpmU0NUcnV1em1DeWpkVjFLU3FYL0V1eDA0SGZDV1ltZHhOM1NRL3Fxdz0KKyAgICAgICAgPC9HPgorICAgICAgICA8WT4KKyAgICAgICAgICBwQTVOblp2Y2Q1NzRXUlh1T0E3WmZDLzdMcXQ0Y0IwTVJMV3RIdWJ0Sm9WT2FvOWliNXJ5NHJUazByNmRkbk92CisgICAgICAgICAgQUlHS2t0dXR6SzN5bXZLbGVTM0RPcndaUWdKKy9CRFdEVzhrTzlSNjZvNnJkamlTb2JCaS8wYzJWMStka3FPZworICAgICAgICAgIGpGbUt6Mzk1bXZDT1pHaEM3ZnFBVmhIYXQyRWpHUE1mZ1NaeUFCYTcrMWs9CisgICAgICAgIDwvWT4KKyAgICAgIDwvRFNBS2V5VmFsdWU+CisgICAgPC9LZXlWYWx1ZT4KKyAgICA8WDUwOURhdGE+CisgICAgICA8WDUwOUNlcnRpZmljYXRlPgorICAgICAgICBNSUlEYlRDQ0F5eWdBd0lCQWdJR0FPQ2RyS3hrTUFrR0J5cUdTTTQ0QkFNd2V6RUxNQWtHQTFVRUJoTUNTVVV4CisgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFbE1DTUdBMVVFQ2hNY1FtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgY3l3Z1RIUmtMakVSTUE4R0ExVUVDeE1JV0M5VFpXTjFjbVV4SVRBZkJnTlZCQU1UR0ZndlUyVmpkWEpsSURFdworICAgICAgICBNalF0WW1sMElFUlRRU0JEUVRBZUZ3MHdNREEzTWpjeE56RXpNek5hRncwd01UQTNNamN4TnpFek1qWmFNSHd4CisgICAgICAgIEN6QUpCZ05WQkFZVEFrbEZNUTh3RFFZRFZRUUlFd1pFZFdKc2FXNHhKVEFqQmdOVkJBb1RIRUpoYkhScGJXOXkKKyAgICAgICAgWlNCVVpXTm9ibTlzYjJkcFpYTXNJRXgwWkM0eEVUQVBCZ05WQkFzVENGZ3ZVMlZqZFhKbE1TSXdJQVlEVlFRRAorICAgICAgICBFeGxZTDFObFkzVnlaU0F4TURJMExXSnBkQ0JFVTBFZ1kzSjBNSUlCdURDQ0FTd0dCeXFHU000NEJBRXdnZ0VmCisgICAgICAgIEFvR0JBS3hiYVBMajBET3N0K0JTejVnNGVOQVN5ZGExYXd2RlhrYXJyb1QyZW8yRFJaRUxzTVo3djhBcnlBREkKKyAgICAgICAgYnBEd1N4UkUvR3lYLzI5bm4vcUtzV1dveEcvdlBNNVdhTWh2SVA4REh3d1IwOGMvZ3A2TUMyb1p3Z2syQWFlWgorICAgICAgICBMZXh2S2xLR3licjQ4cGNJOWJMZTFmUzdMdE40bHpGN1c0cTRsSXhXdVlGRVdyRGZBaFVBa0VqQUZwQ2U0bGNVCisgICAgICAgIE9kd3BocHpmK3RCYVVkc0NnWUVBb2UxNFIyT3R5S3grcys2ME81QlJOTU9ZcElnMlRVL2YxNU4zYnNERXJLT1cKKyAgICAgICAgdEtYZU5LOUZTN2RXU3RyZUR4bzJTU2dPb25xQWQ0RnVKLzR1dmE3R2dOTDRVTElxWTdFK21XNWl3SjduL1dURQorICAgICAgICBMaDk4bUVvY3NMWGtOaDI0SGNINEJaZlNDVHJ1dXptQ3lqZFYxS1NxWC9FdXgwNEhmQ1dZbWR4TjNTUS9xcXdECisgICAgICAgIGdZVUFBb0dCQUtRT1RaMmIzSGVlK0ZrVjdqZ08yWHd2K3k2cmVIQWRERVMxclI3bTdTYUZUbXFQWW0rYTh1SzAKKyAgICAgICAgNU5LK25YWnpyd0NCaXBMYnJjeXQ4cHJ5cFhrdHd6cThHVUlDZnZ3UTFnMXZKRHZVZXVxT3EzWTRrcUd3WXY5SAorICAgICAgICBObGRmblpLam9JeFppczkvZVpyd2ptUm9RdTM2Z0ZZUjJyZGhJeGp6SDRFbWNnQVd1L3Rab3pzd09UQVBCZ05WCisgICAgICAgIEhROEJBZjhFQlFNREFJQUFNQkVHQTFVZERnUUtCQWlBNElNTDRkbmRFREFUQmdOVkhTTUVEREFLZ0FpSG9NblkKKyAgICAgICAgbkR4WlVEQUpCZ2NxaGtqT09BUURBekFBTUMwQ0ZRQ0VYYTFFMnVlSjhXTVg1blAxbENjQldoeEMyd0lVR1VDQgorICAgICAgICBiNk02T2ozTlFBSmJuWnNkWTYzckthMD0KKyAgICAgIDwvWDUwOUNlcnRpZmljYXRlPgorICAgIDwvWDUwOURhdGE+CisgIDwvS2V5SW5mbz4KKyAgPE9iamVjdCBJZD0ib2JqZWN0Ij5jMjl0WlNCMFpYaDA8L09iamVjdD4KKzwvU2lnbmF0dXJlPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWVudmVsb3BpbmctZHNhLWMxNG4tMC50eHQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9zaWduYXR1cmUtZW52ZWxvcGluZy1kc2EtYzE0bi0wLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjE0OGViCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWVudmVsb3BpbmctZHNhLWMxNG4tMC50eHQKQEAgLTAsMCArMSBAQAorPE9iamVjdCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Im9iamVjdCI+c29tZSB0ZXh0PC9PYmplY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWVudmVsb3BpbmctZHNhLWMxNG4tMS50eHQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9zaWduYXR1cmUtZW52ZWxvcGluZy1kc2EtYzE0bi0xLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjI0ZWFhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWVudmVsb3BpbmctZHNhLWMxNG4tMS50eHQKQEAgLTAsMCArMSw4IEBACitlZEluZm8geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiPjwvQ2Fub25pY2FsaXphdGlvbk1ldGhvZD4KKyAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIj48L1NpZ25hdHVyZU1ldGhvZGV0aG9kPgorICAgIDxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICA8RGlnZXN0VmFsdWU+Ny9YVHNIYUJTT25KL2pYRDV2MHpMNlZLWXNrPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgIDwvU2lnbmVkSW5mbz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9zaWduYXR1cmUtZW52ZWxvcGluZy1kc2EueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWVudmVsb3BpbmctZHNhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjNjYzBiCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWVudmVsb3BpbmctZHNhLnhtbApAQCAtMCwwICsxLDYyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgIDxTaWduZWRJbmZvPgorICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiIC8+CisgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIgLz4KKyAgICA8UmVmZXJlbmNlIFVSST0iI29iamVjdCI+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWU+Ny9YVHNIYUJTT25KL2pYRDV2MHpMNlZLWXNrPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgIDwvU2lnbmVkSW5mbz4KKyAgPFNpZ25hdHVyZVZhbHVlPgorICAgIFNWc0ZJV3VBUmtBYUQ5SFpYaE5BU0hTaHgzOFVaaURTM0lzSWIyRFMxZUJVZEQ0VjcwRTZNQT09CisgIDwvU2lnbmF0dXJlVmFsdWU+CisgIDxLZXlJbmZvPgorICAgIDxLZXlWYWx1ZT4KKyAgICAgIDxEU0FLZXlWYWx1ZT4KKyAgICAgICAgPFA+CisgICAgICAgICAgckZ0bzh1UFFNNnkzNEZMUG1EaDQwQkxKMXJWckM4VmVScXV1aFBaNmpZTkZrUXV3eG51L3dDdklBTWh1a1BCTAorICAgICAgICAgIEZFVDhiSmYvYjJlZitvcXhaYWpFYis4OHpsWm95RzhnL3dNZkRCSFR4eitDbm93TGFobkNDVFlCcDVrdDdHOHEKKyAgICAgICAgICBVb2JKdXZqeWx3ajFzdDdWOUxzdTAzaVhNWHRiaXJpVWpGYTVnVVJhc044PQorICAgICAgICA8L1A+CisgICAgICAgIDxRPgorICAgICAgICAgIGtFakFGcENlNGxjVU9kd3BocHpmK3RCYVVkcz0KKyAgICAgICAgPC9RPgorICAgICAgICA8Rz4KKyAgICAgICAgICBvZTE0UjJPdHlLeCtzKzYwTzVCUk5NT1lwSWcyVFUvZjE1TjNic0RFcktPV3RLWGVOSzlGUzdkV1N0cmVEeG8yCisgICAgICAgICAgU1NnT29ucUFkNEZ1Si80dXZhN0dnTkw0VUxJcVk3RSttVzVpd0o3bi9XVEVMaDk4bUVvY3NMWGtOaDI0SGNINAorICAgICAgICAgIEJaZlNDVHJ1dXptQ3lqZFYxS1NxWC9FdXgwNEhmQ1dZbWR4TjNTUS9xcXc9CisgICAgICAgIDwvRz4KKyAgICAgICAgPFk+CisgICAgICAgICAgcEE1Tm5admNkNTc0V1JYdU9BN1pmQy83THF0NGNCME1STFd0SHVidEpvVk9hbzlpYjVyeTRyVGswcjZkZG5PdgorICAgICAgICAgIEFJR0trdHV0ekszeW12S2xlUzNET3J3WlFnSisvQkRXRFc4a085UjY2bzZyZGppU29iQmkvMGMyVjErZGtxT2cKKyAgICAgICAgICBqRm1LejM5NW12Q09aR2hDN2ZxQVZoSGF0MkVqR1BNZmdTWnlBQmE3KzFrPQorICAgICAgICA8L1k+CisgICAgICA8L0RTQUtleVZhbHVlPgorICAgIDwvS2V5VmFsdWU+CisgICAgPFg1MDlEYXRhPgorICAgICAgPFg1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgTUlJRGJUQ0NBeXlnQXdJQkFnSUdBT0Nkckt4a01Ba0dCeXFHU000NEJBTXdlekVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICBEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWxNQ01HQTFVRUNoTWNRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsCisgICAgICAgIGN5d2dUSFJrTGpFUk1BOEdBMVVFQ3hNSVdDOVRaV04xY21VeElUQWZCZ05WQkFNVEdGZ3ZVMlZqZFhKbElERXcKKyAgICAgICAgTWpRdFltbDBJRVJUUVNCRFFUQWVGdzB3TURBM01qY3hOekV6TXpOYUZ3MHdNVEEzTWpjeE56RXpNalphTUh3eAorICAgICAgICBDekFKQmdOVkJBWVRBa2xGTVE4d0RRWURWUVFJRXdaRWRXSnNhVzR4SlRBakJnTlZCQW9USEVKaGJIUnBiVzl5CisgICAgICAgIFpTQlVaV05vYm05c2IyZHBaWE1zSUV4MFpDNHhFVEFQQmdOVkJBc1RDRmd2VTJWamRYSmxNU0l3SUFZRFZRUUQKKyAgICAgICAgRXhsWUwxTmxZM1Z5WlNBeE1ESTBMV0pwZENCRVUwRWdZM0owTUlJQnVEQ0NBU3dHQnlxR1NNNDRCQUV3Z2dFZgorICAgICAgICBBb0dCQUt4YmFQTGowRE9zdCtCU3o1ZzRlTkFTeWRhMWF3dkZYa2Fycm9UMmVvMkRSWkVMc01aN3Y4QXJ5QURJCisgICAgICAgIGJwRHdTeFJFL0d5WC8yOW5uL3FLc1dXb3hHL3ZQTTVXYU1odklQOERId3dSMDhjL2dwNk1DMm9ad2drMkFhZVoKKyAgICAgICAgTGV4dktsS0d5YnI0OHBjSTliTGUxZlM3THRONGx6RjdXNHE0bEl4V3VZRkVXckRmQWhVQWtFakFGcENlNGxjVQorICAgICAgICBPZHdwaHB6Zit0QmFVZHNDZ1lFQW9lMTRSMk90eUt4K3MrNjBPNUJSTk1PWXBJZzJUVS9mMTVOM2JzREVyS09XCisgICAgICAgIHRLWGVOSzlGUzdkV1N0cmVEeG8yU1NnT29ucUFkNEZ1Si80dXZhN0dnTkw0VUxJcVk3RSttVzVpd0o3bi9XVEUKKyAgICAgICAgTGg5OG1Fb2NzTFhrTmgyNEhjSDRCWmZTQ1RydXV6bUN5amRWMUtTcVgvRXV4MDRIZkNXWW1keE4zU1EvcXF3RAorICAgICAgICBnWVVBQW9HQkFLUU9UWjJiM0hlZStGa1Y3amdPMlh3dit5NnJlSEFkREVTMXJSN203U2FGVG1xUFltK2E4dUswCisgICAgICAgIDVOSytuWFp6cndDQmlwTGJyY3l0OHByeXBYa3R3enE4R1VJQ2Z2d1ExZzF2SkR2VWV1cU9xM1k0a3FHd1l2OUgKKyAgICAgICAgTmxkZm5aS2pvSXhaaXM5L2VacndqbVJvUXUzNmdGWVIycmRoSXhqekg0RW1jZ0FXdS90Wm96c3dPVEFQQmdOVgorICAgICAgICBIUThCQWY4RUJRTURBSUFBTUJFR0ExVWREZ1FLQkFpQTRJTUw0ZG5kRURBVEJnTlZIU01FRERBS2dBaUhvTW5ZCisgICAgICAgIG5EeFpVREFKQmdjcWhrak9PQVFEQXpBQU1DMENGUUNFWGExRTJ1ZUo4V01YNW5QMWxDY0JXaHhDMndJVUdVQ0IKKyAgICAgICAgYjZNNk9qM05RQUpiblpzZFk2M3JLYTA9CisgICAgICA8L1g1MDlDZXJ0aWZpY2F0ZT4KKyAgICA8L1g1MDlEYXRhPgorICA8L0tleUluZm8+CisgIDxPYmplY3QgSWQ9Im9iamVjdCI+c29tZSB0ZXh0PC9PYmplY3Q+Cis8L1NpZ25hdHVyZT4KZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWZ0ZWVuL3NpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMS00MC1jMTRuLTAudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGExLTQwLWMxNG4tMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYxNDhlYgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWZ0ZWVuL3NpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMS00MC1jMTRuLTAudHh0CkBAIC0wLDAgKzEgQEAKKzxPYmplY3QgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIElkPSJvYmplY3QiPnNvbWUgdGV4dDwvT2JqZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWZ0ZWVuL3NpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMS00MC1jMTRuLTEudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGExLTQwLWMxNG4tMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRmNDA2MAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWZ0ZWVuL3NpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMS00MC1jMTRuLTEudHh0CkBAIC0wLDAgKzEsMTAgQEAKKzxTaWduZWRJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ij48L0Nhbm9uaWNhbGl6YXRpb25NZXRob2Q+CisgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiPgorICAgICAgPEhNQUNPdXRwdXRMZW5ndGg+NDA8L0hNQUNPdXRwdXRMZW5ndGg+CisgICAgPC9TaWduYXR1cmVNZXRob2Q+CisgICAgPFJlZmVyZW5jZSBVUkk9IiNvYmplY3QiPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgIDxEaWdlc3RWYWx1ZT43L1hUc0hhQlNPbkovalhENXYwekw2VktZc2s9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWZ0ZWVuL3NpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMS00MC54bWwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTEtNDAueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5MDRkNzkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTEtNDAueG1sCkBAIC0wLDAgKzEsMTcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgPFNpZ25lZEluZm8+CisgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIgLz4KKyAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSI+CisgICAgICA8SE1BQ091dHB1dExlbmd0aD40MDwvSE1BQ091dHB1dExlbmd0aD4KKyAgICA8L1NpZ25hdHVyZU1ldGhvZD4KKyAgICA8UmVmZXJlbmNlIFVSST0iI29iamVjdCI+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWU+Ny9YVHNIYUJTT25KL2pYRDV2MHpMNlZLWXNrPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgIDwvU2lnbmVkSW5mbz4KKyAgPFNpZ25hdHVyZVZhbHVlPgorICAgIEhIaXF2Q1U9CisgIDwvU2lnbmF0dXJlVmFsdWU+CisgIDxPYmplY3QgSWQ9Im9iamVjdCI+c29tZSB0ZXh0PC9PYmplY3Q+Cis8L1NpZ25hdHVyZT4KZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWZ0ZWVuL3NpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMS1jMTRuLTAudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGExLWMxNG4tMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYxNDhlYgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWZ0ZWVuL3NpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMS1jMTRuLTAudHh0CkBAIC0wLDAgKzEgQEAKKzxPYmplY3QgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIElkPSJvYmplY3QiPnNvbWUgdGV4dDwvT2JqZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWZ0ZWVuL3NpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMS1jMTRuLTEudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGExLWMxNG4tMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTBjZGM4OAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWZ0ZWVuL3NpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMS1jMTRuLTEudHh0CkBAIC0wLDAgKzEsOCBAQAorPFNpZ25lZEluZm8geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiPjwvQ2Fub25pY2FsaXphdGlvbk1ldGhvZD4KKyAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSI+PC9TaWduYXR1cmVNZXRob2Q+CisgICAgPFJlZmVyZW5jZSBVUkk9IiNvYmplY3QiPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgIDxEaWdlc3RWYWx1ZT43L1hUc0hhQlNPbkovalhENXYwekw2VktZc2s9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWZ0ZWVuL3NpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMS54bWwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwYzgzNDMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTEueG1sCkBAIC0wLDAgKzEsMTUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgPFNpZ25lZEluZm8+CisgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIgLz4KKyAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIgLz4KKyAgICA8UmVmZXJlbmNlIFVSST0iI29iamVjdCI+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWU+Ny9YVHNIYUJTT25KL2pYRDV2MHpMNlZLWXNrPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgIDwvU2lnbmVkSW5mbz4KKyAgPFNpZ25hdHVyZVZhbHVlPgorICAgIEpFbFB0dElUNEFtN1ErTU5vTXl2K1dEZkFadz0KKyAgPC9TaWduYXR1cmVWYWx1ZT4KKyAgPE9iamVjdCBJZD0ib2JqZWN0Ij5zb21lIHRleHQ8L09iamVjdD4KKzwvU2lnbmF0dXJlPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWVudmVsb3BpbmctcnNhLWMxNG4tMC50eHQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9zaWduYXR1cmUtZW52ZWxvcGluZy1yc2EtYzE0bi0wLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjE0OGViCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWVudmVsb3BpbmctcnNhLWMxNG4tMC50eHQKQEAgLTAsMCArMSBAQAorPE9iamVjdCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Im9iamVjdCI+c29tZSB0ZXh0PC9PYmplY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWVudmVsb3BpbmctcnNhLWMxNG4tMS50eHQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9zaWduYXR1cmUtZW52ZWxvcGluZy1yc2EtYzE0bi0xLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTVlZDMzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWVudmVsb3BpbmctcnNhLWMxNG4tMS50eHQKQEAgLTAsMCArMSw4IEBACis8U2lnbmVkSW5mbyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI+PC9DYW5vbmljYWxpemF0aW9uTWV0aG9kPgorICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiPjwvU2lnbmF0dXJlTWV0aG9kPgorICAgIDxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICA8RGlnZXN0VmFsdWU+Ny9YVHNIYUJTT25KL2pYRDV2MHpMNlZLWXNrPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgIDwvU2lnbmVkSW5mbz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9zaWduYXR1cmUtZW52ZWxvcGluZy1yc2EueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWVudmVsb3BpbmctcnNhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDMxOTJjCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWVudmVsb3BpbmctcnNhLnhtbApAQCAtMCwwICsxLDMxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgIDxTaWduZWRJbmZvPgorICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiIC8+CisgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIgLz4KKyAgICA8UmVmZXJlbmNlIFVSST0iI29iamVjdCI+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWU+Ny9YVHNIYUJTT25KL2pYRDV2MHpMNlZLWXNrPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgIDwvU2lnbmVkSW5mbz4KKyAgPFNpZ25hdHVyZVZhbHVlPgorICAgIFRUeDJvcE02T2NNaTZ6bGFzV0VoUDk5MmRpNDgyS2hUbzgwcGdoZUZ5U1pjcHZvckI0N2k4RmtnRGpmdGR4Ym4KKyAgICAyeGxyWmgwcnAwdjJkVlZ4V3RMRmpVcHZOL1orZmtHL0FYaVQza0FoelJCcW1ZWVlaeEl1Q3RRTTU3eW9CckloCisgICAgL25TeTNIV3M1d0Rxcm9GQXg5cTUycU1NYktOYm53SEc2WS9LMVppVm5OZz0KKyAgPC9TaWduYXR1cmVWYWx1ZT4KKyAgPEtleUluZm8+CisgICAgPEtleVZhbHVlPgorICAgICAgPFJTQUtleVZhbHVlPgorICAgICAgICA8TW9kdWx1cz4KKyAgICAgICAgICBxZTVWWW1OeGplVVNRREVJNWxrSE5EWHhmWHBYajk1Tmk3dGNROURIRFNnVUoxbTJkTndLdWJsRFZRWkRtbWxmCisgICAgICAgICAgSEoybi91cytFWlRaTlVTVDRHcXVibGhnemNDQ3ZZcTlkYlU4b3FpRXowa3RUSVdDUHkzNlV2UWNhUnd1ZnBpVgorICAgICAgICAgIFJGYVRETlBxamtqV1ByTTJjbnBmeW9JN3lkYlZDQlJmSTl6SVNRaVIwTWs9CisgICAgICAgIDwvTW9kdWx1cz4KKyAgICAgICAgPEV4cG9uZW50PgorICAgICAgICAgIEFRQUIKKyAgICAgICAgPC9FeHBvbmVudD4KKyAgICAgIDwvUlNBS2V5VmFsdWU+CisgICAgPC9LZXlWYWx1ZT4KKyAgPC9LZXlJbmZvPgorICA8T2JqZWN0IElkPSJvYmplY3QiPnNvbWUgdGV4dDwvT2JqZWN0PgorPC9TaWduYXR1cmU+CmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9zaWduYXR1cmUtZXh0ZXJuYWwtYjY0LWRzYS1jMTRuLTAudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWV4dGVybmFsLWI2NC1kc2EtYzE0bi0wLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDFmNjRiCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWV4dGVybmFsLWI2NC1kc2EtYzE0bi0wLnR4dApAQCAtMCwwICsxLDExIEBACis8U2lnbmVkSW5mbyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI+PC9DYW5vbmljYWxpemF0aW9uTWV0aG9kPgorICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiPjwvU2lnbmF0dXJlTWV0aG9kPgorICAgIDxSZWZlcmVuY2UgVVJJPSJodHRwOi8veG1sZHNpZy5wb3Rob2xlLmNvbS94bWwtc3R5bGVzaGVldC50eHQiPgorICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjYmFzZTY0Ij48L1RyYW5zZm9ybT4KKyAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICA8RGlnZXN0VmFsdWU+NjBOdlp2dGRUQis3VW5sTHAvSDI0cDdoNGJzPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgIDwvU2lnbmVkSW5mbz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9zaWduYXR1cmUtZXh0ZXJuYWwtYjY0LWRzYS54bWwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9zaWduYXR1cmUtZXh0ZXJuYWwtYjY0LWRzYS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk3NjVjMgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWZ0ZWVuL3NpZ25hdHVyZS1leHRlcm5hbC1iNjQtZHNhLnhtbApAQCAtMCwwICsxLDY0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgIDxTaWduZWRJbmZvPgorICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiIC8+CisgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIgLz4KKyAgICA8UmVmZXJlbmNlIFVSST0iaHR0cDovL3htbGRzaWcucG90aG9sZS5jb20veG1sLXN0eWxlc2hlZXQudHh0Ij4KKyAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2Jhc2U2NCIgLz4KKyAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZT42ME52WnZ0ZFRCKzdVbmxMcC9IMjRwN2g0YnM9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgorICA8U2lnbmF0dXJlVmFsdWU+CisgICAgZ1UwYmxRY1hKRkhSNU1oVUliMkNscTdiY1QrTmZ4T0c1eUxGVWQzWTg1UU5mVGFSNXZ1KzZRPT0KKyAgPC9TaWduYXR1cmVWYWx1ZT4KKyAgPEtleUluZm8+CisgICAgPEtleVZhbHVlPgorICAgICAgPERTQUtleVZhbHVlPgorICAgICAgICA8UD4KKyAgICAgICAgICByRnRvOHVQUU02eTM0RkxQbURoNDBCTEoxclZyQzhWZVJxdXVoUFo2allORmtRdXd4bnUvd0N2SUFNaHVrUEJMCisgICAgICAgICAgRkVUOGJKZi9iMmVmK29xeFphakViKzg4emxab3lHOGcvd01mREJIVHh6K0Nub3dMYWhuQ0NUWUJwNWt0N0c4cQorICAgICAgICAgIFVvYkp1dmp5bHdqMXN0N1Y5THN1MDNpWE1YdGJpcmlVakZhNWdVUmFzTjg9CisgICAgICAgIDwvUD4KKyAgICAgICAgPFE+CisgICAgICAgICAga0VqQUZwQ2U0bGNVT2R3cGhwemYrdEJhVWRzPQorICAgICAgICA8L1E+CisgICAgICAgIDxHPgorICAgICAgICAgIG9lMTRSMk90eUt4K3MrNjBPNUJSTk1PWXBJZzJUVS9mMTVOM2JzREVyS09XdEtYZU5LOUZTN2RXU3RyZUR4bzIKKyAgICAgICAgICBTU2dPb25xQWQ0RnVKLzR1dmE3R2dOTDRVTElxWTdFK21XNWl3SjduL1dURUxoOThtRW9jc0xYa05oMjRIY0g0CisgICAgICAgICAgQlpmU0NUcnV1em1DeWpkVjFLU3FYL0V1eDA0SGZDV1ltZHhOM1NRL3Fxdz0KKyAgICAgICAgPC9HPgorICAgICAgICA8WT4KKyAgICAgICAgICBwQTVOblp2Y2Q1NzRXUlh1T0E3WmZDLzdMcXQ0Y0IwTVJMV3RIdWJ0Sm9WT2FvOWliNXJ5NHJUazByNmRkbk92CisgICAgICAgICAgQUlHS2t0dXR6SzN5bXZLbGVTM0RPcndaUWdKKy9CRFdEVzhrTzlSNjZvNnJkamlTb2JCaS8wYzJWMStka3FPZworICAgICAgICAgIGpGbUt6Mzk1bXZDT1pHaEM3ZnFBVmhIYXQyRWpHUE1mZ1NaeUFCYTcrMWs9CisgICAgICAgIDwvWT4KKyAgICAgIDwvRFNBS2V5VmFsdWU+CisgICAgPC9LZXlWYWx1ZT4KKyAgICA8WDUwOURhdGE+CisgICAgICA8WDUwOUNlcnRpZmljYXRlPgorICAgICAgICBNSUlEYlRDQ0F5eWdBd0lCQWdJR0FPQ2RyS3hrTUFrR0J5cUdTTTQ0QkFNd2V6RUxNQWtHQTFVRUJoTUNTVVV4CisgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFbE1DTUdBMVVFQ2hNY1FtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgY3l3Z1RIUmtMakVSTUE4R0ExVUVDeE1JV0M5VFpXTjFjbVV4SVRBZkJnTlZCQU1UR0ZndlUyVmpkWEpsSURFdworICAgICAgICBNalF0WW1sMElFUlRRU0JEUVRBZUZ3MHdNREEzTWpjeE56RXpNek5hRncwd01UQTNNamN4TnpFek1qWmFNSHd4CisgICAgICAgIEN6QUpCZ05WQkFZVEFrbEZNUTh3RFFZRFZRUUlFd1pFZFdKc2FXNHhKVEFqQmdOVkJBb1RIRUpoYkhScGJXOXkKKyAgICAgICAgWlNCVVpXTm9ibTlzYjJkcFpYTXNJRXgwWkM0eEVUQVBCZ05WQkFzVENGZ3ZVMlZqZFhKbE1TSXdJQVlEVlFRRAorICAgICAgICBFeGxZTDFObFkzVnlaU0F4TURJMExXSnBkQ0JFVTBFZ1kzSjBNSUlCdURDQ0FTd0dCeXFHU000NEJBRXdnZ0VmCisgICAgICAgIEFvR0JBS3hiYVBMajBET3N0K0JTejVnNGVOQVN5ZGExYXd2RlhrYXJyb1QyZW8yRFJaRUxzTVo3djhBcnlBREkKKyAgICAgICAgYnBEd1N4UkUvR3lYLzI5bm4vcUtzV1dveEcvdlBNNVdhTWh2SVA4REh3d1IwOGMvZ3A2TUMyb1p3Z2syQWFlWgorICAgICAgICBMZXh2S2xLR3licjQ4cGNJOWJMZTFmUzdMdE40bHpGN1c0cTRsSXhXdVlGRVdyRGZBaFVBa0VqQUZwQ2U0bGNVCisgICAgICAgIE9kd3BocHpmK3RCYVVkc0NnWUVBb2UxNFIyT3R5S3grcys2ME81QlJOTU9ZcElnMlRVL2YxNU4zYnNERXJLT1cKKyAgICAgICAgdEtYZU5LOUZTN2RXU3RyZUR4bzJTU2dPb25xQWQ0RnVKLzR1dmE3R2dOTDRVTElxWTdFK21XNWl3SjduL1dURQorICAgICAgICBMaDk4bUVvY3NMWGtOaDI0SGNINEJaZlNDVHJ1dXptQ3lqZFYxS1NxWC9FdXgwNEhmQ1dZbWR4TjNTUS9xcXdECisgICAgICAgIGdZVUFBb0dCQUtRT1RaMmIzSGVlK0ZrVjdqZ08yWHd2K3k2cmVIQWRERVMxclI3bTdTYUZUbXFQWW0rYTh1SzAKKyAgICAgICAgNU5LK25YWnpyd0NCaXBMYnJjeXQ4cHJ5cFhrdHd6cThHVUlDZnZ3UTFnMXZKRHZVZXVxT3EzWTRrcUd3WXY5SAorICAgICAgICBObGRmblpLam9JeFppczkvZVpyd2ptUm9RdTM2Z0ZZUjJyZGhJeGp6SDRFbWNnQVd1L3Rab3pzd09UQVBCZ05WCisgICAgICAgIEhROEJBZjhFQlFNREFJQUFNQkVHQTFVZERnUUtCQWlBNElNTDRkbmRFREFUQmdOVkhTTUVEREFLZ0FpSG9NblkKKyAgICAgICAgbkR4WlVEQUpCZ2NxaGtqT09BUURBekFBTUMwQ0ZRQ0VYYTFFMnVlSjhXTVg1blAxbENjQldoeEMyd0lVR1VDQgorICAgICAgICBiNk02T2ozTlFBSmJuWnNkWTYzckthMD0KKyAgICAgIDwvWDUwOUNlcnRpZmljYXRlPgorICAgIDwvWDUwOURhdGE+CisgIDwvS2V5SW5mbz4KKzwvU2lnbmF0dXJlPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWV4dGVybmFsLWRzYS1jMTRuLTAudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWV4dGVybmFsLWRzYS1jMTRuLTAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhYWZjMzYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9zaWduYXR1cmUtZXh0ZXJuYWwtZHNhLWMxNG4tMC50eHQKQEAgLTAsMCArMSw4IEBACis8U2lnbmVkSW5mbyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI+PC9DYW5vbmljYWxpemF0aW9uTWV0aG9kPgorICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiPjwvU2lnbmF0dXJlTWV0aG9kPgorICAgIDxSZWZlcmVuY2UgVVJJPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldCI+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgPERpZ2VzdFZhbHVlPjYwTnZadnRkVEIrN1VubExwL0gyNHA3aDRicz08L0RpZ2VzdFZhbHVlPgorICAgIDwvUmVmZXJlbmNlPgorICA8L1NpZ25lZEluZm8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWV4dGVybmFsLWRzYS54bWwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi9zaWduYXR1cmUtZXh0ZXJuYWwtZHNhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmY4NmRmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpZnRlZW4vc2lnbmF0dXJlLWV4dGVybmFsLWRzYS54bWwKQEAgLTAsMCArMSw2MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICA8U2lnbmVkSW5mbz4KKyAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPgorICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiIC8+CisgICAgPFJlZmVyZW5jZSBVUkk9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1zdHlsZXNoZWV0Ij4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZT42ME52WnZ0ZFRCKzdVbmxMcC9IMjRwN2g0YnM9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgorICA8U2lnbmF0dXJlVmFsdWU+CisgICAgRmo5T3dTeHBKcHBEbmlob2hkdXhFVXF1OS9wNlRSOVBwZ05HYXBhaUJIR2NZMlFVREJhT0V3PT0KKyAgPC9TaWduYXR1cmVWYWx1ZT4KKyAgPEtleUluZm8+CisgICAgPEtleVZhbHVlPgorICAgICAgPERTQUtleVZhbHVlPgorICAgICAgICA8UD4KKyAgICAgICAgICByRnRvOHVQUU02eTM0RkxQbURoNDBCTEoxclZyQzhWZVJxdXVoUFo2allORmtRdXd4bnUvd0N2SUFNaHVrUEJMCisgICAgICAgICAgRkVUOGJKZi9iMmVmK29xeFphakViKzg4emxab3lHOGcvd01mREJIVHh6K0Nub3dMYWhuQ0NUWUJwNWt0N0c4cQorICAgICAgICAgIFVvYkp1dmp5bHdqMXN0N1Y5THN1MDNpWE1YdGJpcmlVakZhNWdVUmFzTjg9CisgICAgICAgIDwvUD4KKyAgICAgICAgPFE+CisgICAgICAgICAga0VqQUZwQ2U0bGNVT2R3cGhwemYrdEJhVWRzPQorICAgICAgICA8L1E+CisgICAgICAgIDxHPgorICAgICAgICAgIG9lMTRSMk90eUt4K3MrNjBPNUJSTk1PWXBJZzJUVS9mMTVOM2JzREVyS09XdEtYZU5LOUZTN2RXU3RyZUR4bzIKKyAgICAgICAgICBTU2dPb25xQWQ0RnVKLzR1dmE3R2dOTDRVTElxWTdFK21XNWl3SjduL1dURUxoOThtRW9jc0xYa05oMjRIY0g0CisgICAgICAgICAgQlpmU0NUcnV1em1DeWpkVjFLU3FYL0V1eDA0SGZDV1ltZHhOM1NRL3Fxdz0KKyAgICAgICAgPC9HPgorICAgICAgICA8WT4KKyAgICAgICAgICBwQTVOblp2Y2Q1NzRXUlh1T0E3WmZDLzdMcXQ0Y0IwTVJMV3RIdWJ0Sm9WT2FvOWliNXJ5NHJUazByNmRkbk92CisgICAgICAgICAgQUlHS2t0dXR6SzN5bXZLbGVTM0RPcndaUWdKKy9CRFdEVzhrTzlSNjZvNnJkamlTb2JCaS8wYzJWMStka3FPZworICAgICAgICAgIGpGbUt6Mzk1bXZDT1pHaEM3ZnFBVmhIYXQyRWpHUE1mZ1NaeUFCYTcrMWs9CisgICAgICAgIDwvWT4KKyAgICAgIDwvRFNBS2V5VmFsdWU+CisgICAgPC9LZXlWYWx1ZT4KKyAgICA8WDUwOURhdGE+CisgICAgICA8WDUwOUNlcnRpZmljYXRlPgorICAgICAgICBNSUlEYlRDQ0F5eWdBd0lCQWdJR0FPQ2RyS3hrTUFrR0J5cUdTTTQ0QkFNd2V6RUxNQWtHQTFVRUJoTUNTVVV4CisgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFbE1DTUdBMVVFQ2hNY1FtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgY3l3Z1RIUmtMakVSTUE4R0ExVUVDeE1JV0M5VFpXTjFjbVV4SVRBZkJnTlZCQU1UR0ZndlUyVmpkWEpsSURFdworICAgICAgICBNalF0WW1sMElFUlRRU0JEUVRBZUZ3MHdNREEzTWpjeE56RXpNek5hRncwd01UQTNNamN4TnpFek1qWmFNSHd4CisgICAgICAgIEN6QUpCZ05WQkFZVEFrbEZNUTh3RFFZRFZRUUlFd1pFZFdKc2FXNHhKVEFqQmdOVkJBb1RIRUpoYkhScGJXOXkKKyAgICAgICAgWlNCVVpXTm9ibTlzYjJkcFpYTXNJRXgwWkM0eEVUQVBCZ05WQkFzVENGZ3ZVMlZqZFhKbE1TSXdJQVlEVlFRRAorICAgICAgICBFeGxZTDFObFkzVnlaU0F4TURJMExXSnBkQ0JFVTBFZ1kzSjBNSUlCdURDQ0FTd0dCeXFHU000NEJBRXdnZ0VmCisgICAgICAgIEFvR0JBS3hiYVBMajBET3N0K0JTejVnNGVOQVN5ZGExYXd2RlhrYXJyb1QyZW8yRFJaRUxzTVo3djhBcnlBREkKKyAgICAgICAgYnBEd1N4UkUvR3lYLzI5bm4vcUtzV1dveEcvdlBNNVdhTWh2SVA4REh3d1IwOGMvZ3A2TUMyb1p3Z2syQWFlWgorICAgICAgICBMZXh2S2xLR3licjQ4cGNJOWJMZTFmUzdMdE40bHpGN1c0cTRsSXhXdVlGRVdyRGZBaFVBa0VqQUZwQ2U0bGNVCisgICAgICAgIE9kd3BocHpmK3RCYVVkc0NnWUVBb2UxNFIyT3R5S3grcys2ME81QlJOTU9ZcElnMlRVL2YxNU4zYnNERXJLT1cKKyAgICAgICAgdEtYZU5LOUZTN2RXU3RyZUR4bzJTU2dPb25xQWQ0RnVKLzR1dmE3R2dOTDRVTElxWTdFK21XNWl3SjduL1dURQorICAgICAgICBMaDk4bUVvY3NMWGtOaDI0SGNINEJaZlNDVHJ1dXptQ3lqZFYxS1NxWC9FdXgwNEhmQ1dZbWR4TjNTUS9xcXdECisgICAgICAgIGdZVUFBb0dCQUtRT1RaMmIzSGVlK0ZrVjdqZ08yWHd2K3k2cmVIQWRERVMxclI3bTdTYUZUbXFQWW0rYTh1SzAKKyAgICAgICAgNU5LK25YWnpyd0NCaXBMYnJjeXQ4cHJ5cFhrdHd6cThHVUlDZnZ3UTFnMXZKRHZVZXVxT3EzWTRrcUd3WXY5SAorICAgICAgICBObGRmblpLam9JeFppczkvZVpyd2ptUm9RdTM2Z0ZZUjJyZGhJeGp6SDRFbWNnQVd1L3Rab3pzd09UQVBCZ05WCisgICAgICAgIEhROEJBZjhFQlFNREFJQUFNQkVHQTFVZERnUUtCQWlBNElNTDRkbmRFREFUQmdOVkhTTUVEREFLZ0FpSG9NblkKKyAgICAgICAgbkR4WlVEQUpCZ2NxaGtqT09BUURBekFBTUMwQ0ZRQ0VYYTFFMnVlSjhXTVg1blAxbENjQldoeEMyd0lVR1VDQgorICAgICAgICBiNk02T2ozTlFBSmJuWnNkWTYzckthMD0KKyAgICAgIDwvWDUwOUNlcnRpZmljYXRlPgorICAgIDwvWDUwOURhdGE+CisgIDwvS2V5SW5mbz4KKzwvU2lnbmF0dXJlPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpbHRlcjItb25lL1JlYWRtZS50eHQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlsdGVyMi1vbmUvUmVhZG1lLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWYzMTc5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpbHRlcjItb25lL1JlYWRtZS50eHQKQEAgLTAsMCArMSwyMSBAQAorU2FtcGxlIFhNTCBTaWduYXR1cmVzWzFdIHVzaW5nIHRoZSBYUGF0aCBGaWx0ZXIgMi4wWzJdCisKK1sxXSBodHRwOi8vd3d3LnczLm9yZy9UUi94bWxkc2lnLWNvcmUvCitbMl0gaHR0cDovL3d3dy53My5vcmcvVFIveG1sZHNpZy1maWx0ZXIyLworCitGaXJzdCwgdGhlIGxhc3QgZXhhbXBsZSBmcm9tIHRoZSBzcGVjOgorCisgIHNpZ25hdHVyZS50bXBsIC0gQSBiYXNpYyBzaWduYXR1cmUgdGVtcGxhdGUKKyAgc2lnbmF0dXJlLnhtbCAtIFRoZSBzaWduYXR1cmUKKyAgc2lnbmF0dXJlLWMxNG4tKi50eHQgLSBDMTRuIG91dHB1dAorCitOZXh0LCBKb2huIEJveWVyJ3MgZXhhbXBsZSAoZm9yIHBlcmZvcm1hbmNlIHRlc3RpbmcpOgorCisgIHNpZ24teGZkbC50bXBsIC0gVGhlIHNpZ25hdHVyZSB0ZW1wbGF0ZQorICBzaWduLXhmZGwueG1sIC0gVGhlIHNpZ25hdHVyZQorICBzaWduLXhmZGwtYzE0bi0qLnR4dCAtIEMxNG4gb3V0cHV0CisKK01lcmxpbiBIdWdoZXMgPG1lcmxpbkBiYWx0aW1vcmUuaWU+CitCYWx0aW1vcmUgVGVjaG5vbG9naWVzLCBMdGQuCisKK1dlZG5lc2RheSwgTWF5IDgsIDIwMDIKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWx0ZXIyLW9uZS9zaWduLXhmZGwtYzE0bi0wLnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWx0ZXIyLW9uZS9zaWduLXhmZGwtYzE0bi0wLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWE4OWRhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpbHRlcjItb25lL3NpZ24teGZkbC1jMTRuLTAudHh0CkBAIC0wLDAgKzEsMzk4NiBAQAorPFhGREwgdmVyc2lvbj0iNC4wLjEiPgorCTx2ZmRfdGl0bGU+U0Y3MTwvdmZkX3RpdGxlPgorCTx2ZmRfYXV0aG9yPlRob21hcyBNb2hyPC92ZmRfYXV0aG9yPgorCTx2ZmRfcmV2aXNpb24+NC82Lzk4PC92ZmRfcmV2aXNpb24+CisJPHZmZF9kYXRlPjQvNi85ODwvdmZkX2RhdGU+CisJPHNhdmVmb3JtYXQ+YXBwbGljYXRpb24veC14ZmRsPC9zYXZlZm9ybWF0PgorCTx0cmFuc21pdGZvcm1hdD5hcHBsaWNhdGlvbi94LXhmZGw8L3RyYW5zbWl0Zm9ybWF0PgorCTxmb3JtaWQgY29udGVudD0iYXJyYXkiPgorCQk8dmVyc2lvbj4xLjAuMDwvdmVyc2lvbj4KKwk8L2Zvcm1pZD4KKwk8cGFnZSBzaWQ9IlBBR0UxIj4KKwkJPHZmZF9wYWdlc2l6ZT5sZXR0ZXI8L3ZmZF9wYWdlc2l6ZT4KKwkJPHZmZF9wYWdlZHBpPjEyMDwvdmZkX3BhZ2VkcGk+CisJCTx2ZmRfcHJpbnRzaXplPjguMDsxMC41PC92ZmRfcHJpbnRzaXplPgorCQk8bGFiZWw+UEFHRTE8L2xhYmVsPgorCQk8Ymdjb2xvciBjb250ZW50PSJhcnJheSI+CisJCQk8YWU+MjM1PC9hZT4KKwkJCTxhZT4yMzU8L2FlPgorCQkJPGFlPjIzNTwvYWU+CisJCTwvYmdjb2xvcj4KKwkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCTxhZT45PC9hZT4KKwkJCTxhZT5wbGFpbjwvYWU+CisJCTwvZm9udGluZm8+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMSI+CisJCQk8dmFsdWU+UkVRVUVTVCBGT1IgTEVBVkUgT1IgQVBQUk9WRUQgQUJTRU5DRTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xNDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzaXplIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+NjE8L2FlPgorCQkJCTxhZT4xPC9hZT4KKwkJCTwvc2l6ZT4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xOTwvYWU+CisJCQkJCTxhZT4zPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODc0PC9hZT4KKwkJCQkJPGFlPjM0PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjA8L2FlPgorCQkJCQk8YWU+MzU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT43OTwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPjEuICBOQU1FPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTAwPC9hZT4KKwkJCQkJPGFlPjM1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjE4PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+KExhc3QsIEZpcnN0LCBNaWRkbGUgSW5pdGlhbCk8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCQk8YWU+aXRhbGljPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTExPC9hZT4KKwkJCQkJPGFlPjM1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+Mzg1PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+Mi4gIEVNUExPWUVFIE9SIFNPQ0lBTCBTRUNVUklUWSBOVU1CRVI8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yMDwvYWU+CisJCQkJCTxhZT44NTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE3MDwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPjMuICBPUkdBTklaQVRJT048L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw2Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yMDwvYWU+CisJCQkJCTxhZT4xMzU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yNDg8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT40LiAgVFlQRSBPRiBMRUFWRS9BQlNFTkNFPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzI8L2FlPgorCQkJCQk8YWU+MTU1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjM2PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+KENoZWNrIGFwcHJvcHJpYXRlIGJveChlcykgYmVsb3cuKTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjk8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQkJPGFlPml0YWxpYzwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI3MDwvYWU+CisJCQkJCTxhZT4xNTg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40ODwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkZyb206PC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+OTwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjg8L2FlPgorCQkJCQk8YWU+MTM1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTYzPC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+RGF0ZTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDEwIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNTI8L2FlPgorCQkJCQk8YWU+MTU4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDg8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5Ubzo8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT45PC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDExIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MzI8L2FlPgorCQkJCQk8YWU+MTU4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDg8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5Gcm9tOjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjk8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMTIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQzMDwvYWU+CisJCQkJCTxhZT4xMzU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNjM8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5UaW1lPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMTMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxMzwvYWU+CisJCQkJCTxhZT4xNTg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40ODwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPlRvOjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjk8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMTQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjU5MjwvYWU+CisJCQkJCTxhZT4xMzQ8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT40NjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPlRvdGFsCitIb3VyczwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDE1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NDwvYWU+CisJCQkJCTxhZT4xODY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMDU8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5BY2NydWVkIEFubnVhbCBMZWF2ZTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDE2Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NDwvYWU+CisJCQkJCTxhZT4yMzI8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMDU8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5SZXN0b3JlZCBBbm51YWwgTGVhdmU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwxNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjQ8L2FlPgorCQkJCQk8YWU+Mjc4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjA1PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+QWR2YW5jZSBBbm51YWwgTGVhdmU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwxOCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjQ8L2FlPgorCQkJCQk8YWU+MzIzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjA1PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+QWNjdXJlZCBTaWNrIExlYXZlPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMTkiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY0PC9hZT4KKwkJCQkJPGFlPjM2ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIwNTwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkFkdmFuY2UgU2ljayBMZWF2ZTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDIwIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xOTwvYWU+CisJCQkJCTxhZT40MDk8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPlB1cnBvc2U6PC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMjEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE0MjwvYWU+CisJCQkJCTxhZT40MTA8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5NZWRpY2FsL2RlbnRhbC9vcHRpY2FsIEV4YW1pbmF0aW9uIG9mIHJlcXVlc3RpbmcgZW1wbG95ZWU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT45PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxzaXplIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+NDU8L2FlPgorCQkJCTxhZT4xPC9hZT4KKwkJCTwvc2l6ZT4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwyMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTM1PC9hZT4KKwkJCQkJPGFlPjQxMDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQ2PC9hZT4KKwkJCQkJPGFlPjI0PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+T3RoZXI8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT45PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwyMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTQyPC9hZT4KKwkJCQkJPGFlPjQzNTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQzOTwvYWU+CisJCQkJCTxhZT40MjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkNhcmUgb2YgZmFtaWx5IG1lbWJlci9iZXJlYXZlbWVudCwgaW5jbHVkaW5nIG1lZGljYWwvZGVudGFsL29wdGljYWwgZXhhbWluYXRpb24gb2YgZmFtaWx5IG1lbWJlcjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjk8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDI0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NDwvYWU+CisJCQkJCTxhZT40OTg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMDQ8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5Db21wZW5zYXRvcnkgVGltZSBPZmY8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwyNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjQ8L2FlPgorCQkJCQk8YWU+NTM1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTgwPC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+T3RoZXIgUGFpZCBBYnNlbmNlPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMjYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY0PC9hZT4KKwkJCQkJPGFlPjU1NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE1ODwvYWU+CisJCQkJCTxhZT4yNDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPihTcGVjaWZ5IGluIFJlbWFya3MpPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+OTwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCQk8YWU+aXRhbGljPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMjciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY0PC9hZT4KKwkJCQkJPGFlPjU5MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE5MjwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkxlYXZlIFdpdGhvdXQgUGF5PC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMjgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY3NjwvYWU+CisJCQkJCTxhZT4xMzU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMTU8L2FlPgorCQkJCQk8YWU+NDY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT41LiBGQU1JTFkgQU5ECisJTUVESUNBTCBMRUFWRTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDI5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42Nzc8L2FlPgorCQkJCQk8YWU+MTgzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjE0PC9hZT4KKwkJCQkJPGFlPjEyNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPklmIGFubnVhbCBsZWF2ZSwgc2ljayBsZWF2ZSwgb3IgbGVhdmUgd2l0aG91dCBwYXkgd2lsbCBiZSB1c2VkIHVuZGVyIHRoZSBGYW1pbHkgYW5kIE1lZGljYWwgTGVhdmUgQWN0IG9mIDE5OTMsIHBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDMwIj4KKwkJCTx2YWx1ZT5JIGhlcmVieSBpbnZva2UgbXk8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT43MDA8L2FlPgorCQkJCQk8YWU+MzIyPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTkxPC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMzEiPgorCQkJPHZhbHVlPmVudGl0bGVtZW50IEZhbWlseSBhbmQ8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NzU8L2FlPgorCQkJCQk8YWU+MzQyPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjE2PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMzIiPgorCQkJPHZhbHVlPk1lZGljYWwgTGVhdmUgZm9yOjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY3NTwvYWU+CisJCQkJCTxhZT4zNjQ8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMTU8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwzMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NzA4PC9hZT4KKwkJCQkJPGFlPjQwMzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE4MTwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkJpcnRoL0Fkb3B0aW9uL0Zvc3RlciBDYXJlPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMzQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjcwODwvYWU+CisJCQkJCTxhZT40MjY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xODI8L2FlPgorCQkJCQk8YWU+Mzg8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5TZXJpb3VzIEhlYXRoIENvbmRpdGlvbiBvZiBzcG91c2UsIFNvbiwgRGF1Z2h0ZXIsIG9yIFBhcmVudDwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDM1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT43MDg8L2FlPgorCQkJCQk8YWU+NDgzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTg0PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+U2VyaW91cyBIZWFsdGggQ29uZGl0aW9uIG9mIFNlbGY8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwzNiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Njc1PC9hZT4KKwkJCQkJPGFlPjUzNzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkNvbnRhY3QgeW91ciBzdXBlcnZpc29yIGFuZC9vciBvdXIgcGVyc29ubmVsIG9mZmljZSB0byBvYnRhaW4gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIGVudGl0bGVtZW50cyBhbmQgcmVzcG9uc2liaWxpdGllcyB1bmRlciB0aGUgRmFtaWx5IGFuZCBNZWRpY2FsIExlYXZlIEFjdCBvZiAxOTkzLjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHNpemUgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT4yNjwvYWU+CisJCQkJPGFlPjU8L2FlPgorCQkJPC9zaXplPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDM3Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xOTwvYWU+CisJCQkJCTxhZT42MzA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xOTI8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT42LiAgUkVNQVJLUzo8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwzOCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTk8L2FlPgorCQkJCQk8YWU+NzQ3PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTcwPC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+Ny4gIENFUlRJRklDQVRJT046PC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMzkiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3ODwvYWU+CisJCQkJCTxhZT43NDc8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT43MTU8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5JIGhlcmVieSByZXF1ZXN0IGxlYXZlL2FwcHJvdmVkIGFic2VuY2UgZnJvbSBkdXR5IGFzIGluZGljYXRlZCBhYm92ZSBhbmQgY2VydGlmeSB0aGF0IHN1Y2ggbGVhdmUvYWJzZW5jZTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw0MCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTk8L2FlPgorCQkJCQk8YWU+NzY3PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODczPC9hZT4KKwkJCQkJPGFlPjY2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+aXMgcmV1ZXN0ZWQgZnJvbSB0aGUgcHVycG9zZShzKSBpbmRpY2F0ZWQuIEkgdW5kZXJzdGFuZCB0aGF0IEkgbXVzdCBjb21wbHkgd2l0aCBteSBlbXBsb3lpbmcgYWdlbmN5J3MgcHJvY2VkdXJlcyBmb3IgcmVxdWVzdGluZyBsZWF2ZS9hcHByb3ZlZCBhYnNlbmNlIChhbmQgcHJvdmlkZSBhZGRpdGlvbmFsIGRvY3VtZW50aW9uLCBpbmNsdWRpbmcgbWVkaWNhbCBjZXJ0aWZpY2F0aW9uLCBpZiByZXF1aXJlZCkgYW5kIHRoYXQgZmFsc2lmaWNhdGlvbiBvZiBpbmZvcm1hdGlvbiBvbiB0aGlzIGZvcm0gbWF5IGJlIGdyb3VuZHMgZm9yIGRpc2NpcGxpbmFyeSBhY3Rpb24sIGluY2x1ZGluZyByZW1vdmFsLjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw0MSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTk8L2FlPgorCQkJCQk8YWU+ODQxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjMwPC9hZT4KKwkJCQkJPGFlPjI3PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+RU1QTE9ZRUUgU0lHTkFUVVJFPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTE8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNDIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjU5NzwvYWU+CisJCQkJCTxhZT44NDE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT41ODwvYWU+CisJCQkJCTxhZT4yNzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkRBVEU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMTwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw0MyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTk8L2FlPgorCQkJCQk8YWU+ODc3PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MzM1PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+OC4gIE9GRklDQUwgQUNUSU9OIE9OIFJFUVVFU1Q6PC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNDQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQxPC9hZT4KKwkJCQkJPGFlPjg5NzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPihJZiBkaXNhcHByb3ZlZCwgZ2l2ZSByZWFzb24uIElmIGFubnVhbCBsZWF2ZSwgaW5pdGlhdGUgYWN0aW9uIHRvIHJlc2NoZWR1bGUuKTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxzaXplIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+NTM8L2FlPgorCQkJCTxhZT4xPC9hZT4KKwkJCTwvc2l6ZT4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw0NSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Mzg4PC9hZT4KKwkJCQkJPGFlPjg3NTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE5MjwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkFQUFJPVkVEPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNDYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjYzODwvYWU+CisJCQkJCTxhZT44NzU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xOTI8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5ESVNBUFBST1ZFRDwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDQ3Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xOTwvYWU+CisJCQkJCTxhZT45NDE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xMTI8L2FlPgorCQkJCQk8YWU+Mjc8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5TSUdOQVRVUkU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMTwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw0OCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTk3PC9hZT4KKwkJCQkJPGFlPjk0MDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjU4PC9hZT4KKwkJCQkJPGFlPjI3PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+REFURTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjExPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDQ5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzwvYWU+CisJCQkJCTxhZT45NzA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NzY8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5QUklWQUNZIEFDVCBTVEFURU1FTlQ8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw1MCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTk8L2FlPgorCQkJCQk8YWU+OTk2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODczPC9hZT4KKwkJCQkJPGFlPjEzNDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPlNlY3Rpb24gNjMxMSBvZiB0aXRsZSA1LCBVbml0ZWQgU3RhdGVzIENvZGUsIGF1dGhvcml6ZXMgY29sbGVjdGlvbiBvZiB0aGlzIGluZm9ybWF0aW9uLiBUaGUgcHJpbWFyeSB1c2Ugb2YgdGhpcyBpbmZvcm1hdGlvbiBpcyBieSBtYW5hZ2VtZW50IGFuZCB5b3VyIHBheXJvbGwgb2ZmaWNlIHRvIGFwcHJvdmUgYW5kIHJlY29yZCB5b3VyIHVzZSBvZiBsZWF2ZS4gQWRkaXRpb25hbCBkaXNjbG9zdXJlcyBvZiB0aGUgaW5mb3JtYXRpb24gbWF0IGJlOiBUbyB0aGUgRGVwYXJ0bWVudCBvZiBsYWJvciB3aGVuIHByb2Nlc3NpbmcgYSBjbGFpbSBmb3IgY29tcGVuc2F0aW9uIHJlZ2FyZGluZyBhIGpvYiBjb25uZWN0ZWQgaW5qdXJ5IG9yIGlsbG5lc3M7IHRvIGEgU3RhdGUgdW5lbXBsb3ltZW50IGNvbXBlbnNhdGlvbiBvZmZpY2UgcmVnYXJkaW5nIGEgY2xhaW07IHRoZSBGZWRlcmFsIExpZmUgSW5zdXJhbmNlIG9yIEhlYWx0aCBCZW5lZml0cyBjYXJyaWVzIHJlZ2FyZGluZyBhIGNsYWltOyB0byBhIEZlZGVyYWwgU3RhdGUsIG9yIGxvY2FsIGxhdyBlbmZvcmNlbWVudCBhZ2VuY3kgd2hlbiB5b3VyIGFnZW5jeSBiZWNvbWVzIGF3YXJlIG9mIGEgdmlvbGF0aW9uIG9yIHBvc3NpYmxlIHZpb2xhdGlvbiBvZiBjaXZpbCBvciBjcmltaW5hbCBsYXc7IHRvIGEgRmVkZXJhbCBhZ2VuY3kgd2hlbiBjb25kdWN0aW5nIGFuIGludmVzdGlnYXRpb24gZm9yIGVtcGxveW1lbnQgb3IgU2VydmljZXMgQWRtaW5pc3RyYXRpb24gaW4gY29ubmVjdGlvbiB3aXRoIGl0cyByZXNwb25zaWJpbGl0aWVzIGZvciByZWNvcmRzIG1hbmFnZW1lbnQuCisKK1doZXJlICB0aGUgRW1wbG95ZWUgaWRlbnRpZmljYXRpb24gbnVtYmVyIGlzIHlvdXIgU29jaWFsIFNlY3VyaXR5IE51bWJlciwgY29sbGVjdGlvbiBvZiB0aGlzIGluZm9ybWF0aW9uIGlzIGF1dGhvcml6ZWQgYnkgRXhlY3V0aXZlIE9yZGVyIDkzOTcuIEZ1cm5pc2hpbmcgdGhlIGluZm9ybWF0aW9uIG9uIHRoaXMgZm9ybSwgaW5jbHVkaW5nIHlvdXIgU29jaWFsIFNlY3VyaXR5IE51bWJlciwgaXMgdm9sdW50YXJ5LCBidXQgdG8gZG8gc28gbWF5IHJlc3VsdCBpbiBkaXNhcHByb3ZhbCByZXF1ZXN0LjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDUxIj4KKwkJCTx2YWx1ZT5JZiB5b3VyIGFnZW5jeSB1c2VzIHRoZSBpbmZvcm1hdGlvbiBmdXJuaXNoZWQgb24gdGhpcyBmb3JtIGZvciBwdXJwb3NlcyBvdGhlciB0aGFuIHRob3NlIGluZGljYXRlZCBhYm92ZSwgaXQgbWF5IHByb3ZpZGUgeW91IHdpdGggYW4gYWRkaXRpb25hbCBzdGF0ZW1lbnQgcmVmbGVjdGluZyB0aG9zZSBwdXJwb3Nlcy48L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT43PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xODwvYWU+CisJCQkJCTxhZT4xMTQwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODc1PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNTIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE4PC9hZT4KKwkJCQkJPGFlPjExNjg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40MjI8L2FlPgorCQkJCQk8YWU+Mzg8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5OU04gNzU0MC0wMDAtNzUzLTUwNjcKK1BSRVZJT1VTIEVESVRJT04gTUFZIEJFIFVTRUQ8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw1MyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDM4PC9hZT4KKwkJCQkJPGFlPjExNjg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40NTQ8L2FlPgorCQkJCQk8YWU+Mzg8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5TVEFOREFSRCBGT1JNIDcxIChSZXYuIDEyLTk3KQorUFJFU0NSSUJFRCBCWSBPRkZJQ0UgT0YgUEVSU09OTkVMIE1BTkFHRU1FTlQsIDUgQ0ZSIFBBUlQgNjMwPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8anVzdGlmeT5yaWdodDwvanVzdGlmeT4KKwkJPC9sYWJlbD4KKwkJPGxpbmUgc2lkPSJMSU5FMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+MzI8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NzY8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjgyPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODc2PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUzIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzwvYWU+CisJCQkJCTxhZT4xMzM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NzY8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjE3OTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY4PC9hZT4KKwkJCQkJPGFlPjIxODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQwNjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FNiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY4PC9hZT4KKwkJCQkJPGFlPjI2MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQwNjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+MzExPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NjU3PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkU4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjg8L2FlPgorCQkJCQk8YWU+MzU0PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDA2PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkU5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjg8L2FlPgorCQkJCQk8YWU+Mzk4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDA2PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUxMCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+NDg0PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NjU3PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUxMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+NTMwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NjU3PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUxMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+NTc4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NjU3PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUxMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+NjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODc2PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUxNCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+NzQzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODc2PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUxNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+ODY3PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODc2PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUxNiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+OTY3PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODc2PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUxNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+MTE2NDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjMyPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4xMTMzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTkiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxMDwvYWU+CisJCQkJCTxhZT4zMjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+NTE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUyMCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+ODkyPC9hZT4KKwkJCQkJPGFlPjMyPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4xMTMzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMjEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2ODwvYWU+CisJCQkJCTxhZT4xMzM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjI2NjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTIyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNDk8L2FlPgorCQkJCQk8YWU+MTc5PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4yMjA8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUyMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMwPC9hZT4KKwkJCQkJPGFlPjEzMzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MjY2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMjQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxMDwvYWU+CisJCQkJCTxhZT4xNzk8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjIyMDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTI1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41OTI8L2FlPgorCQkJCQk8YWU+MTMzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4yNjU8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUyNiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjczPC9hZT4KKwkJCQkJPGFlPjEzMzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+NDk0PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMjciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2ODwvYWU+CisJCQkJCTxhZT40ODQ8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjE0MzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTI4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNDk8L2FlPgorCQkJCQk8YWU+NDg0PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4xNDM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUyOSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMxPC9hZT4KKwkJCQkJPGFlPjQ4NDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MTQzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMzAiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxMDwvYWU+CisJCQkJCTxhZT40ODQ8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjE0MzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTMxIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41OTE8L2FlPgorCQkJCQk8YWU+NDg0PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4xNDM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8ZmllbGQgc2lkPSJGSUVMRDEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjIwPC9hZT4KKwkJCQkJPGFlPjU4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDg5PC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+c3RyaW5nPC9hZT4KKwkJCQk8YWU+bWFuZGF0b3J5PC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPkpvaG4gUS4gUHVibGljPC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41Mzc8L2FlPgorCQkJCQk8YWU+NTg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xMjM8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5zdHJpbmc8L2FlPgorCQkJCTxhZT5tYW5kYXRvcnk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+MTIzNDU2Nzg5PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQzIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xOTwvYWU+CisJCQkJCTxhZT4xMDk8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NzI8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5zdHJpbmc8L2FlPgorCQkJCTxhZT5tYW5kYXRvcnk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+UHVyZUVkZ2UgU29sdXRpb25zIEluYy48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8Y2hlY2sgc2lkPSJDSEVDSzEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI4PC9hZT4KKwkJCQkJPGFlPjE5MTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9jaGVjaz4KKwkJPGZpZWxkIHNpZD0iRklFTEQ0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjk8L2FlPgorCQkJCQk8YWU+MTg4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjM1MDwvYWU+CisJCQkJCTxhZT4xODg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxENiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMxPC9hZT4KKwkJCQkJPGFlPjE4ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT50aW1lPC9hZT4KKwkJCQk8YWU+c2hvcnQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxMTwvYWU+CisJCQkJCTxhZT4xODg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MTwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQ4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41OTM8L2FlPgorCQkJCQk8YWU+MTg4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmZsb2F0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxyYW5nZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4wPC9hZT4KKwkJCQkJPGFlPjk5OTkuOTk5OTwvYWU+CisJCQkJPC9yYW5nZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxjaGVjayBzaWQ9IkNIRUNLMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Mjg8L2FlPgorCQkJCQk8YWU+MjMxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjE4PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2NoZWNrPgorCQk8ZmllbGQgc2lkPSJGSUVMRDkiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2OTwvYWU+CisJCQkJCTxhZT4yMzE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMTAiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjM1MDwvYWU+CisJCQkJCTxhZT4yMzE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMTEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQzMTwvYWU+CisJCQkJCTxhZT4yMzE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQxMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTExPC9hZT4KKwkJCQkJPGFlPjIzMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT50aW1lPC9hZT4KKwkJCQk8YWU+c2hvcnQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDEzIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41OTM8L2FlPgorCQkJCQk8YWU+MjMxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmZsb2F0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxyYW5nZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4wPC9hZT4KKwkJCQkJPGFlPjk5OTkuOTk5OTwvYWU+CisJCQkJPC9yYW5nZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxjaGVjayBzaWQ9IkNIRUNLMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Mjg8L2FlPgorCQkJCQk8YWU+Mjc3PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjE4PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2NoZWNrPgorCQk8ZmllbGQgc2lkPSJGSUVMRDE0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjk8L2FlPgorCQkJCQk8YWU+Mjc2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDE1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNTA8L2FlPgorCQkJCQk8YWU+Mjc2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDE2Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MzE8L2FlPgorCQkJCQk8YWU+Mjc2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnRpbWU8L2FlPgorCQkJCTxhZT5zaG9ydDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMTciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxMTwvYWU+CisJCQkJCTxhZT4yNzY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MTwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQxOCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkzPC9hZT4KKwkJCQkJPGFlPjI3NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5mbG9hdDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8cmFuZ2UgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+MDwvYWU+CisJCQkJCTxhZT45OTk5Ljk5OTk8L2FlPgorCQkJCTwvcmFuZ2U+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8Y2hlY2sgc2lkPSJDSEVDSzQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI4PC9hZT4KKwkJCQkJPGFlPjMyMjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9jaGVjaz4KKwkJPGZpZWxkIHNpZD0iRklFTEQxOSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY5PC9hZT4KKwkJCQkJPGFlPjMyMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQyMCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzUwPC9hZT4KKwkJCQkJPGFlPjMyMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQyMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMxPC9hZT4KKwkJCQkJPGFlPjMyMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjc5PC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT50aW1lPC9hZT4KKwkJCQk8YWU+c2hvcnQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDIyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTE8L2FlPgorCQkJCQk8YWU+MzIxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODE8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnRpbWU8L2FlPgorCQkJCTxhZT5zaG9ydDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMjMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjU5MzwvYWU+CisJCQkJCTxhZT4zMjE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZmxvYXQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPjA8L2FlPgorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4KKwkJCQk8L3JhbmdlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0s1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yODwvYWU+CisJCQkJCTxhZT4zNjc8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvY2hlY2s+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMjQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2OTwvYWU+CisJCQkJCTxhZT4zNjY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMjUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjM1MDwvYWU+CisJCQkJCTxhZT4zNjY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMjYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQzMTwvYWU+CisJCQkJCTxhZT4zNjY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQyNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTExPC9hZT4KKwkJCQkJPGFlPjM2NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT50aW1lPC9hZT4KKwkJCQk8YWU+c2hvcnQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDI4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41OTM8L2FlPgorCQkJCQk8YWU+MzY2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmZsb2F0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxyYW5nZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4wPC9hZT4KKwkJCQkJPGFlPjk5OTkuOTk5OTwvYWU+CisJCQkJPC9yYW5nZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxjaGVjayBzaWQ9IkNIRUNLNiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTIxPC9hZT4KKwkJCQkJPGFlPjQxMjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE1PC9hZT4KKwkJCQkJPGFlPjE0PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+b2ZmPC92YWx1ZT4KKwkJCTxhY3RpdmUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+b2ZmPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm9uIiA6ICJvZmYiCisJCQkJPC9jb21wdXRlPgorCQkJPC9hY3RpdmU+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWR3cml0ZTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKHZhbHVlID09ICJvbiIpID8gInJlYWRvbmx5IiA6ICJyZWFkd3JpdGUiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8cmFkaW9fY2hlY2sgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoKENIRUNLOC52YWx1ZSA9PSAib24iKSB8fCAoQ0hFQ0s3LnZhbHVlID09ICJvbiIpKSA/IHNldCgidmFsdWUiLCAib2ZmIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvcmFkaW9fY2hlY2s+CisJCTwvY2hlY2s+CisJCTxjaGVjayBzaWQ9IkNIRUNLNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTIxPC9hZT4KKwkJCQkJPGFlPjQzODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE1PC9hZT4KKwkJCQkJPGFlPjE0PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+b2ZmPC92YWx1ZT4KKwkJCTxhY3RpdmUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+b2ZmPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm9uIiA6ICJvZmYiCisJCQkJPC9jb21wdXRlPgorCQkJPC9hY3RpdmU+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWR3cml0ZTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKHZhbHVlID09ICJvbiIpID8gInJlYWRvbmx5IiA6ICJyZWFkd3JpdGUiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8cmFkaW9fY2hlY2sgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoKENIRUNLOC52YWx1ZSA9PSAib24iKSB8fCAoQ0hFQ0s2LnZhbHVlID09ICJvbiIpKSA/IHNldCgidmFsdWUiLCAib2ZmIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvcmFkaW9fY2hlY2s+CisJCTwvY2hlY2s+CisJCTxjaGVjayBzaWQ9IkNIRUNLOCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTE5PC9hZT4KKwkJCQkJPGFlPjQxMjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE1PC9hZT4KKwkJCQkJPGFlPjE0PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+b2ZmPC92YWx1ZT4KKwkJCTxhY3RpdmUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+b2ZmPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm9uIiA6ICJvZmYiCisJCQkJPC9jb21wdXRlPgorCQkJPC9hY3RpdmU+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWR3cml0ZTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKHZhbHVlID09ICJvbiIpID8gInJlYWRvbmx5IiA6ICJyZWFkd3JpdGUiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8cmFkaW9fY2hlY2sgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoKENIRUNLNi52YWx1ZSA9PSAib24iKSB8fCAoQ0hFQ0s3LnZhbHVlID09ICJvbiIpKSA/IHNldCgidmFsdWUiLCAib2ZmIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvcmFkaW9fY2hlY2s+CisJCTwvY2hlY2s+CisJCTxjaGVjayBzaWQ9IkNIRUNLOSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Mjg8L2FlPgorCQkJCQk8YWU+NDk1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjE4PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2NoZWNrPgorCQk8ZmllbGQgc2lkPSJGSUVMRDI5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjk8L2FlPgorCQkJCQk8YWU+NDk4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDMwIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNTA8L2FlPgorCQkJCQk8YWU+NDk4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODE8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDMxIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MzI8L2FlPgorCQkJCQk8YWU+NDk4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+Nzg8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnRpbWU8L2FlPgorCQkJCTxhZT5zaG9ydDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMzIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxMTwvYWU+CisJCQkJCTxhZT40OTg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQzMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkyPC9hZT4KKwkJCQkJPGFlPjQ5ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5mbG9hdDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8cmFuZ2UgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+MDwvYWU+CisJCQkJCTxhZT45OTk5Ljk5OTk8L2FlPgorCQkJCTwvcmFuZ2U+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8Y2hlY2sgc2lkPSJDSEVDSzEwIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yODwvYWU+CisJCQkJCTxhZT41NDM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvY2hlY2s+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMzQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2OTwvYWU+CisJCQkJCTxhZT41NDM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMzUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjM1MDwvYWU+CisJCQkJCTxhZT41NDM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MTwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMzYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQzMjwvYWU+CisJCQkJCTxhZT41NDM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT43ODwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT50aW1lPC9hZT4KKwkJCQk8YWU+c2hvcnQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQzNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTExPC9hZT4KKwkJCQkJPGFlPjU0MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnRpbWU8L2FlPgorCQkJCTxhZT5zaG9ydDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDM4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41OTI8L2FlPgorCQkJCQk8YWU+NTQzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODE8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZmxvYXQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPjA8L2FlPgorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4KKwkJCQk8L3JhbmdlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxjaGVjayBzaWQ9IkNIRUNLMTEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI4PC9hZT4KKwkJCQkJPGFlPjU5MTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9jaGVjaz4KKwkJPGZpZWxkIHNpZD0iRklFTEQzOSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY5PC9hZT4KKwkJCQkJPGFlPjU5MDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQ0MCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzUwPC9hZT4KKwkJCQkJPGFlPjU5MDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQ0MSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMyPC9hZT4KKwkJCQkJPGFlPjU5MDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjc4PC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnRpbWU8L2FlPgorCQkJCTxhZT5zaG9ydDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDQyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTE8L2FlPgorCQkJCQk8YWU+NTkwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzExLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxENDMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjU5MjwvYWU+CisJCQkJCTxhZT41OTA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MTwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5mbG9hdDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8cmFuZ2UgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+MDwvYWU+CisJCQkJCTxhZT45OTk5Ljk5OTk8L2FlPgorCQkJCTwvcmFuZ2U+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjgwPC9hZT4KKwkJCQkJPGFlPjMyNjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE1PC9hZT4KKwkJCQkJPGFlPjE0PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9jaGVjaz4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Njg5PC9hZT4KKwkJCQkJPGFlPjQwNDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE1PC9hZT4KKwkJCQkJPGFlPjE0PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8YWN0aXZlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPm9mZjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTIudmFsdWUgPT0gIm9uIikgPyAib24iIDogIm9mZiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2FjdGl2ZT4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZHdyaXRlPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkodmFsdWUgPT0gIm9uIikgPyAicmVhZG9ubHkiIDogInJlYWR3cml0ZSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxyYWRpb19jaGVjayBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCSgoQ0hFQ0sxNC52YWx1ZSA9PSAib24iKSB8fCAoQ0hFQ0sxNS52YWx1ZSA9PSAib24iKSkgPyBzZXQoInZhbHVlIiwgIm9mZiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L3JhZGlvX2NoZWNrPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvY2hlY2s+CisJCTxjaGVjayBzaWQ9IkNIRUNLMTQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY4OTwvYWU+CisJCQkJCTxhZT40Mjg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNTwvYWU+CisJCQkJCTxhZT4xNDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPGFjdGl2ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5vZmY8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEyLnZhbHVlID09ICJvbiIpID8gIm9uIiA6ICJvZmYiCisJCQkJPC9jb21wdXRlPgorCQkJPC9hY3RpdmU+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWR3cml0ZTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKHZhbHVlID09ICJvbiIpID8gInJlYWRvbmx5IiA6ICJyZWFkd3JpdGUiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8cmFkaW9fY2hlY2sgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoKENIRUNLMTUudmFsdWUgPT0gIm9uIikgfHwgKENIRUNLMTMudmFsdWUgPT0gIm9uIikpID8gc2V0KCJ2YWx1ZSIsICJvZmYiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9yYWRpb19jaGVjaz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2NoZWNrPgorCQk8Y2hlY2sgc2lkPSJDSEVDSzE1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42ODk8L2FlPgorCQkJCQk8YWU+NDg1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTU8L2FlPgorCQkJCQk8YWU+MTQ8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxhY3RpdmUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+b2ZmPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMi52YWx1ZSA9PSAib24iKSA/ICJvbiIgOiAib2ZmIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvYWN0aXZlPgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkd3JpdGU8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCSh2YWx1ZSA9PSAib24iKSA/ICJyZWFkb25seSIgOiAicmVhZHdyaXRlIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPHJhZGlvX2NoZWNrIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKChDSEVDSzE0LnZhbHVlID09ICJvbiIpIHx8IChDSEVDSzEzLnZhbHVlID09ICJvbiIpKSA/IHNldCgidmFsdWUiLCAib2ZmIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvcmFkaW9fY2hlY2s+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9jaGVjaz4KKwkJPGZpZWxkIHNpZD0iRklFTEQ0NCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDI8L2FlPgorCQkJCQk8YWU+NjU3PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODQ2PC9hZT4KKwkJCQkJPGFlPjU3PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+c3RyaW5nPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQ0NSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDI8L2FlPgorCQkJCQk8YWU+NzEyPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODQ2PC9hZT4KKwkJCQkJPGFlPjMxPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+c3RyaW5nPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCShDSEVDSzgudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzgudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8YnV0dG9uIHNpZD0iQlVUVE9OMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjUwPC9hZT4KKwkJCQkJPGFlPjgzOTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjM0NjwvYWU+CisJCQkJCTxhZT4yNzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHR5cGU+c2lnbmF0dXJlPC90eXBlPgorCQkJPHNpZ25hdHVyZT5TSUdOQVRVUkUxPC9zaWduYXR1cmU+CisJCQk8c2lnbmVyPihjcykgSm9obiBNLiBCb3llciwgamJveWVyQHB1cmVlZGdlLmNvbTwvc2lnbmVyPgorCQkJPHNpZ25vcHRpb25zIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+b21pdDwvYWU+CisJCQkJPGFlPnRyaWdnZXJpdGVtPC9hZT4KKwkJCTwvc2lnbm9wdGlvbnM+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8c2lnbml0ZW1yZWZzIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+b21pdDwvYWU+CisJCQkJPGFlPlBBR0UxLkNIRUNLMTY8L2FlPgorCQkJCTxhZT5QQUdFMS5DSEVDSzE3PC9hZT4KKwkJCQk8YWU+UEFHRTEuRklFTEQ0NzwvYWU+CisJCQkJPGFlPlBBR0UxLkJVVFRPTjI8L2FlPgorCQkJCTxhZT5TSUdOQVRVUkUyPC9hZT4KKwkJCQk8YWU+UEFHRTEuRklFTEQ0ODwvYWU+CisJCQk8L3NpZ25pdGVtcmVmcz4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5zdHJpbmc8L2FlPgorCQkJCTxhZT5tYW5kYXRvcnk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8dmFsdWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+KGNzKSBKb2huIE0uIEJveWVyLCBqYm95ZXJAcHVyZWVkZ2UuY29tPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQlzaWduZXIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L3ZhbHVlPgorCQk8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICAKKwkJPGZpZWxkIHNpZD0iRklFTEQ0NiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjU1PC9hZT4KKwkJCQkJPGFlPjg0MDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE1NTwvYWU+CisJCQkJCTxhZT4yNzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGVkaXRzdGF0ZT5yZWFkb25seTwvZWRpdHN0YXRlPgorCQkJPHZhbHVlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjA1LTA4LTAyPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQlVUVE9OMS52YWx1ZSAhPSAiIikgPyAiKiIgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvdmFsdWU+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQk8L2Zvcm1hdD4KKwkJPC9maWVsZD4KKwkJCisJCQorCQkKKwkJCisJCQorCQk8c3BhY2VyIHNpZD0idmZkX3NwYWNlciI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+OTYwPC9hZT4KKwkJCQkJPGFlPjEyNjA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9zcGFjZXI+CisJPC9wYWdlPgorPC9YRkRMPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWx0ZXIyLW9uZS9zaWduLXhmZGwudG1wbCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWx0ZXIyLW9uZS9zaWduLXhmZGwudG1wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGRlOTliCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpbHRlcjItb25lL3NpZ24teGZkbC50bXBsCkBAIC0wLDAgKzEsNDE1MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8WEZETCB2ZXJzaW9uPSI0LjAuMSI+CisJPHZmZF90aXRsZT5TRjcxPC92ZmRfdGl0bGU+CisJPHZmZF9hdXRob3I+VGhvbWFzIE1vaHI8L3ZmZF9hdXRob3I+CisJPHZmZF9yZXZpc2lvbj40LzYvOTg8L3ZmZF9yZXZpc2lvbj4KKwk8dmZkX2RhdGU+NC82Lzk4PC92ZmRfZGF0ZT4KKwk8c2F2ZWZvcm1hdD5hcHBsaWNhdGlvbi94LXhmZGw8L3NhdmVmb3JtYXQ+CisJPHRyYW5zbWl0Zm9ybWF0PmFwcGxpY2F0aW9uL3gteGZkbDwvdHJhbnNtaXRmb3JtYXQ+CisJPGZvcm1pZCBjb250ZW50PSJhcnJheSI+CisJCTx2ZXJzaW9uPjEuMC4wPC92ZXJzaW9uPgorCTwvZm9ybWlkPgorCTxwYWdlIHNpZD0iUEFHRTEiPgorCQk8dmZkX3BhZ2VzaXplPmxldHRlcjwvdmZkX3BhZ2VzaXplPgorCQk8dmZkX3BhZ2VkcGk+MTIwPC92ZmRfcGFnZWRwaT4KKwkJPHZmZF9wcmludHNpemU+OC4wOzEwLjU8L3ZmZF9wcmludHNpemU+CisJCTxsYWJlbD5QQUdFMTwvbGFiZWw+CisJCTxiZ2NvbG9yIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCTxhZT4yMzU8L2FlPgorCQkJPGFlPjIzNTwvYWU+CisJCQk8YWU+MjM1PC9hZT4KKwkJPC9iZ2NvbG9yPgorCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJPGFlPjk8L2FlPgorCQkJPGFlPnBsYWluPC9hZT4KKwkJPC9mb250aW5mbz4KKwkJPGxhYmVsIHNpZD0iTEFCRUwxIj4KKwkJCTx2YWx1ZT5SRVFVRVNUIEZPUiBMRUFWRSBPUiBBUFBST1ZFRCBBQlNFTkNFPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjE0PC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNpemUgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT42MTwvYWU+CisJCQkJPGFlPjE8L2FlPgorCQkJPC9zaXplPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE5PC9hZT4KKwkJCQkJPGFlPjM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NzQ8L2FlPgorCQkJCQk8YWU+MzQ8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yMDwvYWU+CisJCQkJCTxhZT4zNTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjc5PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+MS4gIE5BTUU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwzIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xMDA8L2FlPgorCQkJCQk8YWU+MzU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMTg8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT4oTGFzdCwgRmlyc3QsIE1pZGRsZSBJbml0aWFsKTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJCTxhZT5pdGFsaWM8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTE8L2FlPgorCQkJCQk8YWU+MzU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4zODU8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT4yLiAgRU1QTE9ZRUUgT1IgU09DSUFMIFNFQ1VSSVRZIE5VTUJFUjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjIwPC9hZT4KKwkJCQkJPGFlPjg1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTcwPC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+My4gIE9SR0FOSVpBVElPTjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjIwPC9hZT4KKwkJCQkJPGFlPjEzNTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjI0ODwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPjQuICBUWVBFIE9GIExFQVZFL0FCU0VOQ0U8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw3Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zMjwvYWU+CisJCQkJCTxhZT4xNTU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMzY8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT4oQ2hlY2sgYXBwcm9wcmlhdGUgYm94KGVzKSBiZWxvdy4pPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+OTwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCQk8YWU+aXRhbGljPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMOCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjcwPC9hZT4KKwkJCQkJPGFlPjE1ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQ4PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+RnJvbTo8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT45PC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDkiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2ODwvYWU+CisJCQkJCTxhZT4xMzU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNjM8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5EYXRlPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMTAiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjM1MjwvYWU+CisJCQkJCTxhZT4xNTg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40ODwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPlRvOjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjk8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMTEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQzMjwvYWU+CisJCQkJCTxhZT4xNTg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40ODwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkZyb206PC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+OTwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwxMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMwPC9hZT4KKwkJCQkJPGFlPjEzNTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE2MzwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPlRpbWU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwxMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTEzPC9hZT4KKwkJCQkJPGFlPjE1ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQ4PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+VG86PC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+OTwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwxNCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkyPC9hZT4KKwkJCQkJPGFlPjEzNDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjQ2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+VG90YWwKK0hvdXJzPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMTUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY0PC9hZT4KKwkJCQkJPGFlPjE4NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIwNTwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkFjY3J1ZWQgQW5udWFsIExlYXZlPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMTYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY0PC9hZT4KKwkJCQkJPGFlPjIzMjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIwNTwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPlJlc3RvcmVkIEFubnVhbCBMZWF2ZTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDE3Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NDwvYWU+CisJCQkJCTxhZT4yNzg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMDU8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5BZHZhbmNlIEFubnVhbCBMZWF2ZTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDE4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NDwvYWU+CisJCQkJCTxhZT4zMjM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMDU8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5BY2N1cmVkIFNpY2sgTGVhdmU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwxOSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjQ8L2FlPgorCQkJCQk8YWU+MzY4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjA1PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+QWR2YW5jZSBTaWNrIExlYXZlPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMjAiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE5PC9hZT4KKwkJCQkJPGFlPjQwOTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+UHVycG9zZTo8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwyMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTQyPC9hZT4KKwkJCQkJPGFlPjQxMDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPk1lZGljYWwvZGVudGFsL29wdGljYWwgRXhhbWluYXRpb24gb2YgcmVxdWVzdGluZyBlbXBsb3llZTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjk8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHNpemUgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT40NTwvYWU+CisJCQkJPGFlPjE8L2FlPgorCQkJPC9zaXplPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDIyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MzU8L2FlPgorCQkJCQk8YWU+NDEwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDY8L2FlPgorCQkJCQk8YWU+MjQ8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5PdGhlcjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjk8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDIzIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNDI8L2FlPgorCQkJCQk8YWU+NDM1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDM5PC9hZT4KKwkJCQkJPGFlPjQyPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+Q2FyZSBvZiBmYW1pbHkgbWVtYmVyL2JlcmVhdmVtZW50LCBpbmNsdWRpbmcgbWVkaWNhbC9kZW50YWwvb3B0aWNhbCBleGFtaW5hdGlvbiBvZiBmYW1pbHkgbWVtYmVyPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+OTwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMjQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY0PC9hZT4KKwkJCQkJPGFlPjQ5ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIwNDwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkNvbXBlbnNhdG9yeSBUaW1lIE9mZjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDI1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NDwvYWU+CisJCQkJCTxhZT41MzU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xODA8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5PdGhlciBQYWlkIEFic2VuY2U8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwyNiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjQ8L2FlPgorCQkJCQk8YWU+NTU2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTU4PC9hZT4KKwkJCQkJPGFlPjI0PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+KFNwZWNpZnkgaW4gUmVtYXJrcyk8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT45PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJCTxhZT5pdGFsaWM8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwyNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjQ8L2FlPgorCQkJCQk8YWU+NTkzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTkyPC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+TGVhdmUgV2l0aG91dCBQYXk8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwyOCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Njc2PC9hZT4KKwkJCQkJPGFlPjEzNTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIxNTwvYWU+CisJCQkJCTxhZT40NjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPjUuIEZBTUlMWSBBTkQKKwlNRURJQ0FMIExFQVZFPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMjkiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY3NzwvYWU+CisJCQkJCTxhZT4xODM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMTQ8L2FlPgorCQkJCQk8YWU+MTI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+SWYgYW5udWFsIGxlYXZlLCBzaWNrIGxlYXZlLCBvciBsZWF2ZSB3aXRob3V0IHBheSB3aWxsIGJlIHVzZWQgdW5kZXIgdGhlIEZhbWlseSBhbmQgTWVkaWNhbCBMZWF2ZSBBY3Qgb2YgMTk5MywgcGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMzAiPgorCQkJPHZhbHVlPkkgaGVyZWJ5IGludm9rZSBteTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjcwMDwvYWU+CisJCQkJCTxhZT4zMjI8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xOTE8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwzMSI+CisJCQk8dmFsdWU+ZW50aXRsZW1lbnQgRmFtaWx5IGFuZDwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY3NTwvYWU+CisJCQkJCTxhZT4zNDI8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMTY8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwzMiI+CisJCQk8dmFsdWU+TWVkaWNhbCBMZWF2ZSBmb3I6PC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Njc1PC9hZT4KKwkJCQkJPGFlPjM2NDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIxNTwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDMzIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT43MDg8L2FlPgorCQkJCQk8YWU+NDAzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTgxPC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+QmlydGgvQWRvcHRpb24vRm9zdGVyIENhcmU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwzNCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NzA4PC9hZT4KKwkJCQkJPGFlPjQyNjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE4MjwvYWU+CisJCQkJCTxhZT4zODwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPlNlcmlvdXMgSGVhdGggQ29uZGl0aW9uIG9mIHNwb3VzZSwgU29uLCBEYXVnaHRlciwgb3IgUGFyZW50PC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMzUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjcwODwvYWU+CisJCQkJCTxhZT40ODM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xODQ8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5TZXJpb3VzIEhlYWx0aCBDb25kaXRpb24gb2YgU2VsZjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDM2Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NzU8L2FlPgorCQkJCQk8YWU+NTM3PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+Q29udGFjdCB5b3VyIHN1cGVydmlzb3IgYW5kL29yIG91ciBwZXJzb25uZWwgb2ZmaWNlIHRvIG9idGFpbiBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHlvdXIgZW50aXRsZW1lbnRzIGFuZCByZXNwb25zaWJpbGl0aWVzIHVuZGVyIHRoZSBGYW1pbHkgYW5kIE1lZGljYWwgTGVhdmUgQWN0IG9mIDE5OTMuPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8c2l6ZSBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPjI2PC9hZT4KKwkJCQk8YWU+NTwvYWU+CisJCQk8L3NpemU+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMzciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE5PC9hZT4KKwkJCQkJPGFlPjYzMDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE5MjwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPjYuICBSRU1BUktTOjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDM4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xOTwvYWU+CisJCQkJCTxhZT43NDc8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNzA8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT43LiAgQ0VSVElGSUNBVElPTjo8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwzOSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc4PC9hZT4KKwkJCQkJPGFlPjc0NzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjcxNTwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkkgaGVyZWJ5IHJlcXVlc3QgbGVhdmUvYXBwcm92ZWQgYWJzZW5jZSBmcm9tIGR1dHkgYXMgaW5kaWNhdGVkIGFib3ZlIGFuZCBjZXJ0aWZ5IHRoYXQgc3VjaCBsZWF2ZS9hYnNlbmNlPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDQwIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xOTwvYWU+CisJCQkJCTxhZT43Njc8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NzM8L2FlPgorCQkJCQk8YWU+NjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5pcyByZXVlc3RlZCBmcm9tIHRoZSBwdXJwb3NlKHMpIGluZGljYXRlZC4gSSB1bmRlcnN0YW5kIHRoYXQgSSBtdXN0IGNvbXBseSB3aXRoIG15IGVtcGxveWluZyBhZ2VuY3kncyBwcm9jZWR1cmVzIGZvciByZXF1ZXN0aW5nIGxlYXZlL2FwcHJvdmVkIGFic2VuY2UgKGFuZCBwcm92aWRlIGFkZGl0aW9uYWwgZG9jdW1lbnRpb24sIGluY2x1ZGluZyBtZWRpY2FsIGNlcnRpZmljYXRpb24sIGlmIHJlcXVpcmVkKSBhbmQgdGhhdCBmYWxzaWZpY2F0aW9uIG9mIGluZm9ybWF0aW9uIG9uIHRoaXMgZm9ybSBtYXkgYmUgZ3JvdW5kcyBmb3IgZGlzY2lwbGluYXJ5IGFjdGlvbiwgaW5jbHVkaW5nIHJlbW92YWwuPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDQxIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xOTwvYWU+CisJCQkJCTxhZT44NDE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMzA8L2FlPgorCQkJCQk8YWU+Mjc8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5FTVBMT1lFRSBTSUdOQVRVUkU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMTwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw0MiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTk3PC9hZT4KKwkJCQkJPGFlPjg0MTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjU4PC9hZT4KKwkJCQkJPGFlPjI3PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+REFURTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjExPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDQzIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xOTwvYWU+CisJCQkJCTxhZT44Nzc8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4zMzU8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT44LiAgT0ZGSUNBTCBBQ1RJT04gT04gUkVRVUVTVDo8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw0NCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDE8L2FlPgorCQkJCQk8YWU+ODk3PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+KElmIGRpc2FwcHJvdmVkLCBnaXZlIHJlYXNvbi4gSWYgYW5udWFsIGxlYXZlLCBpbml0aWF0ZSBhY3Rpb24gdG8gcmVzY2hlZHVsZS4pPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHNpemUgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT41MzwvYWU+CisJCQkJPGFlPjE8L2FlPgorCQkJPC9zaXplPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDQ1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zODg8L2FlPgorCQkJCQk8YWU+ODc1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTkyPC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+QVBQUk9WRUQ8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw0NiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjM4PC9hZT4KKwkJCQkJPGFlPjg3NTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE5MjwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkRJU0FQUFJPVkVEPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNDciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE5PC9hZT4KKwkJCQkJPGFlPjk0MTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjExMjwvYWU+CisJCQkJCTxhZT4yNzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPlNJR05BVFVSRTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjExPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDQ4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41OTc8L2FlPgorCQkJCQk8YWU+OTQwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NTg8L2FlPgorCQkJCQk8YWU+Mjc8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5EQVRFPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTE8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNDkiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjk3MDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NjwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPlBSSVZBQ1kgQUNUIFNUQVRFTUVOVDwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDUwIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xOTwvYWU+CisJCQkJCTxhZT45OTY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NzM8L2FlPgorCQkJCQk8YWU+MTM0PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+U2VjdGlvbiA2MzExIG9mIHRpdGxlIDUsIFVuaXRlZCBTdGF0ZXMgQ29kZSwgYXV0aG9yaXplcyBjb2xsZWN0aW9uIG9mIHRoaXMgaW5mb3JtYXRpb24uIFRoZSBwcmltYXJ5IHVzZSBvZiB0aGlzIGluZm9ybWF0aW9uIGlzIGJ5IG1hbmFnZW1lbnQgYW5kIHlvdXIgcGF5cm9sbCBvZmZpY2UgdG8gYXBwcm92ZSBhbmQgcmVjb3JkIHlvdXIgdXNlIG9mIGxlYXZlLiBBZGRpdGlvbmFsIGRpc2Nsb3N1cmVzIG9mIHRoZSBpbmZvcm1hdGlvbiBtYXQgYmU6IFRvIHRoZSBEZXBhcnRtZW50IG9mIGxhYm9yIHdoZW4gcHJvY2Vzc2luZyBhIGNsYWltIGZvciBjb21wZW5zYXRpb24gcmVnYXJkaW5nIGEgam9iIGNvbm5lY3RlZCBpbmp1cnkgb3IgaWxsbmVzczsgdG8gYSBTdGF0ZSB1bmVtcGxveW1lbnQgY29tcGVuc2F0aW9uIG9mZmljZSByZWdhcmRpbmcgYSBjbGFpbTsgdGhlIEZlZGVyYWwgTGlmZSBJbnN1cmFuY2Ugb3IgSGVhbHRoIEJlbmVmaXRzIGNhcnJpZXMgcmVnYXJkaW5nIGEgY2xhaW07IHRvIGEgRmVkZXJhbCBTdGF0ZSwgb3IgbG9jYWwgbGF3IGVuZm9yY2VtZW50IGFnZW5jeSB3aGVuIHlvdXIgYWdlbmN5IGJlY29tZXMgYXdhcmUgb2YgYSB2aW9sYXRpb24gb3IgcG9zc2libGUgdmlvbGF0aW9uIG9mIGNpdmlsIG9yIGNyaW1pbmFsIGxhdzsgdG8gYSBGZWRlcmFsIGFnZW5jeSB3aGVuIGNvbmR1Y3RpbmcgYW4gaW52ZXN0aWdhdGlvbiBmb3IgZW1wbG95bWVudCBvciBTZXJ2aWNlcyBBZG1pbmlzdHJhdGlvbiBpbiBjb25uZWN0aW9uIHdpdGggaXRzIHJlc3BvbnNpYmlsaXRpZXMgZm9yIHJlY29yZHMgbWFuYWdlbWVudC4KKworV2hlcmUgIHRoZSBFbXBsb3llZSBpZGVudGlmaWNhdGlvbiBudW1iZXIgaXMgeW91ciBTb2NpYWwgU2VjdXJpdHkgTnVtYmVyLCBjb2xsZWN0aW9uIG9mIHRoaXMgaW5mb3JtYXRpb24gaXMgYXV0aG9yaXplZCBieSBFeGVjdXRpdmUgT3JkZXIgOTM5Ny4gRnVybmlzaGluZyB0aGUgaW5mb3JtYXRpb24gb24gdGhpcyBmb3JtLCBpbmNsdWRpbmcgeW91ciBTb2NpYWwgU2VjdXJpdHkgTnVtYmVyLCBpcyB2b2x1bnRhcnksIGJ1dCB0byBkbyBzbyBtYXkgcmVzdWx0IGluIGRpc2FwcHJvdmFsIHJlcXVlc3QuPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNTEiPgorCQkJPHZhbHVlPklmIHlvdXIgYWdlbmN5IHVzZXMgdGhlIGluZm9ybWF0aW9uIGZ1cm5pc2hlZCBvbiB0aGlzIGZvcm0gZm9yIHB1cnBvc2VzIG90aGVyIHRoYW4gdGhvc2UgaW5kaWNhdGVkIGFib3ZlLCBpdCBtYXkgcHJvdmlkZSB5b3Ugd2l0aCBhbiBhZGRpdGlvbmFsIHN0YXRlbWVudCByZWZsZWN0aW5nIHRob3NlIHB1cnBvc2VzLjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjc8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE4PC9hZT4KKwkJCQkJPGFlPjExNDA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NzU8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw1MiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTg8L2FlPgorCQkJCQk8YWU+MTE2ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQyMjwvYWU+CisJCQkJCTxhZT4zODwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPk5TTiA3NTQwLTAwMC03NTMtNTA2NworUFJFVklPVVMgRURJVElPTiBNQVkgQkUgVVNFRDwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDUzIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40Mzg8L2FlPgorCQkJCQk8YWU+MTE2ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQ1NDwvYWU+CisJCQkJCTxhZT4zODwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPlNUQU5EQVJEIEZPUk0gNzEgKFJldi4gMTItOTcpCitQUkVTQ1JJQkVEIEJZIE9GRklDRSBPRiBQRVJTT05ORUwgTUFOQUdFTUVOVCwgNSBDRlIgUEFSVCA2MzA8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxqdXN0aWZ5PnJpZ2h0PC9qdXN0aWZ5PgorCQk8L2xhYmVsPgorCQk8bGluZSBzaWQ9IkxJTkUxIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzwvYWU+CisJCQkJCTxhZT4zMjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+ODI8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NzY8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjEzMzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FNCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+MTc5PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODc2PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkU1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjg8L2FlPgorCQkJCQk8YWU+MjE4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDA2PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkU2Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjg8L2FlPgorCQkJCQk8YWU+MjYzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDA2PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkU3Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzwvYWU+CisJCQkJCTxhZT4zMTE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT42NTc8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2ODwvYWU+CisJCQkJCTxhZT4zNTQ8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40MDY8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTkiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2ODwvYWU+CisJCQkJCTxhZT4zOTg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40MDY8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTEwIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzwvYWU+CisJCQkJCTxhZT40ODQ8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT42NTc8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTExIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzwvYWU+CisJCQkJCTxhZT41MzA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT42NTc8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTEyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzwvYWU+CisJCQkJCTxhZT41Nzg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT42NTc8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTEzIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzwvYWU+CisJCQkJCTxhZT42MjY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NzY8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTE0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzwvYWU+CisJCQkJCTxhZT43NDM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NzY8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTE1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzwvYWU+CisJCQkJCTxhZT44Njc8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NzY8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTE2Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzwvYWU+CisJCQkJCTxhZT45Njc8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NzY8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTE3Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzwvYWU+CisJCQkJCTxhZT4xMTY0PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODc2PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUxOCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+MzI8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjExMzM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUxOSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTEwPC9hZT4KKwkJCQkJPGFlPjMyPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT41MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTIwIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT44OTI8L2FlPgorCQkJCQk8YWU+MzI8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjExMzM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUyMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY4PC9hZT4KKwkJCQkJPGFlPjEzMzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MjY2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMjIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjM0OTwvYWU+CisJCQkJCTxhZT4xNzk8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjIyMDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTIzIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MzA8L2FlPgorCQkJCQk8YWU+MTMzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4yNjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUyNCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTEwPC9hZT4KKwkJCQkJPGFlPjE3OTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MjIwPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMjUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjU5MjwvYWU+CisJCQkJCTxhZT4xMzM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjI2NTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTI2Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NzM8L2FlPgorCQkJCQk8YWU+MTMzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT40OTQ8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUyNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY4PC9hZT4KKwkJCQkJPGFlPjQ4NDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MTQzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMjgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjM0OTwvYWU+CisJCQkJCTxhZT40ODQ8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjE0MzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTI5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MzE8L2FlPgorCQkJCQk8YWU+NDg0PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4xNDM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUzMCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTEwPC9hZT4KKwkJCQkJPGFlPjQ4NDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MTQzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMzEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjU5MTwvYWU+CisJCQkJCTxhZT40ODQ8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjE0MzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjA8L2FlPgorCQkJCQk8YWU+NTg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40ODk8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5zdHJpbmc8L2FlPgorCQkJCTxhZT5tYW5kYXRvcnk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+Sm9obiBRLiBQdWJsaWM8L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUzNzwvYWU+CisJCQkJCTxhZT41ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjEyMzwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnN0cmluZzwvYWU+CisJCQkJPGFlPm1hbmRhdG9yeTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT4xMjM0NTY3ODk8L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE5PC9hZT4KKwkJCQkJPGFlPjEwOTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3MjwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnN0cmluZzwvYWU+CisJCQkJPGFlPm1hbmRhdG9yeTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT5QdXJlRWRnZSBTb2x1dGlvbnMgSW5jLjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxjaGVjayBzaWQ9IkNIRUNLMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Mjg8L2FlPgorCQkJCQk8YWU+MTkxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjE4PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2NoZWNrPgorCQk8ZmllbGQgc2lkPSJGSUVMRDQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2OTwvYWU+CisJCQkJCTxhZT4xODg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxENSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzUwPC9hZT4KKwkJCQkJPGFlPjE4ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQ2Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MzE8L2FlPgorCQkJCQk8YWU+MTg4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnRpbWU8L2FlPgorCQkJCTxhZT5zaG9ydDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxENyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTExPC9hZT4KKwkJCQkJPGFlPjE4ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT50aW1lPC9hZT4KKwkJCQk8YWU+c2hvcnQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjU5MzwvYWU+CisJCQkJCTxhZT4xODg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZmxvYXQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPjA8L2FlPgorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4KKwkJCQk8L3JhbmdlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0syIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yODwvYWU+CisJCQkJCTxhZT4yMzE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvY2hlY2s+CisJCTxmaWVsZCBzaWQ9IkZJRUxEOSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY5PC9hZT4KKwkJCQkJPGFlPjIzMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQxMCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzUwPC9hZT4KKwkJCQkJPGFlPjIzMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQxMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMxPC9hZT4KKwkJCQkJPGFlPjIzMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT50aW1lPC9hZT4KKwkJCQk8YWU+c2hvcnQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDEyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTE8L2FlPgorCQkJCQk8YWU+MjMxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODE8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnRpbWU8L2FlPgorCQkJCTxhZT5zaG9ydDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMTMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjU5MzwvYWU+CisJCQkJCTxhZT4yMzE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZmxvYXQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPjA8L2FlPgorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4KKwkJCQk8L3JhbmdlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0szIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yODwvYWU+CisJCQkJCTxhZT4yNzc8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvY2hlY2s+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMTQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2OTwvYWU+CisJCQkJCTxhZT4yNzY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMTUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjM1MDwvYWU+CisJCQkJCTxhZT4yNzY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMTYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQzMTwvYWU+CisJCQkJCTxhZT4yNzY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQxNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTExPC9hZT4KKwkJCQkJPGFlPjI3NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT50aW1lPC9hZT4KKwkJCQk8YWU+c2hvcnQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDE4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41OTM8L2FlPgorCQkJCQk8YWU+Mjc2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmZsb2F0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxyYW5nZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4wPC9hZT4KKwkJCQkJPGFlPjk5OTkuOTk5OTwvYWU+CisJCQkJPC9yYW5nZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxjaGVjayBzaWQ9IkNIRUNLNCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Mjg8L2FlPgorCQkJCQk8YWU+MzIyPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjE4PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2NoZWNrPgorCQk8ZmllbGQgc2lkPSJGSUVMRDE5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjk8L2FlPgorCQkJCQk8YWU+MzIxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDIwIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNTA8L2FlPgorCQkJCQk8YWU+MzIxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDIxIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MzE8L2FlPgorCQkJCQk8YWU+MzIxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+Nzk8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnRpbWU8L2FlPgorCQkJCTxhZT5zaG9ydDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMjIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxMTwvYWU+CisJCQkJCTxhZT4zMjE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MTwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQyMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkzPC9hZT4KKwkJCQkJPGFlPjMyMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5mbG9hdDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8cmFuZ2UgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+MDwvYWU+CisJCQkJCTxhZT45OTk5Ljk5OTk8L2FlPgorCQkJCTwvcmFuZ2U+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8Y2hlY2sgc2lkPSJDSEVDSzUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI4PC9hZT4KKwkJCQkJPGFlPjM2NzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9jaGVjaz4KKwkJPGZpZWxkIHNpZD0iRklFTEQyNCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY5PC9hZT4KKwkJCQkJPGFlPjM2NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQyNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzUwPC9hZT4KKwkJCQkJPGFlPjM2NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQyNiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMxPC9hZT4KKwkJCQkJPGFlPjM2NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT50aW1lPC9hZT4KKwkJCQk8YWU+c2hvcnQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDI3Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTE8L2FlPgorCQkJCQk8YWU+MzY2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODE8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnRpbWU8L2FlPgorCQkJCTxhZT5zaG9ydDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMjgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjU5MzwvYWU+CisJCQkJCTxhZT4zNjY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZmxvYXQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPjA8L2FlPgorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4KKwkJCQk8L3JhbmdlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0s2Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xMjE8L2FlPgorCQkJCQk8YWU+NDEyPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTU8L2FlPgorCQkJCQk8YWU+MTQ8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT5vZmY8L3ZhbHVlPgorCQkJPGFjdGl2ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5vZmY8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAib24iIDogIm9mZiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2FjdGl2ZT4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZHdyaXRlPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkodmFsdWUgPT0gIm9uIikgPyAicmVhZG9ubHkiIDogInJlYWR3cml0ZSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxyYWRpb19jaGVjayBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCSgoQ0hFQ0s4LnZhbHVlID09ICJvbiIpIHx8IChDSEVDSzcudmFsdWUgPT0gIm9uIikpID8gc2V0KCJ2YWx1ZSIsICJvZmYiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9yYWRpb19jaGVjaz4KKwkJPC9jaGVjaz4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0s3Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xMjE8L2FlPgorCQkJCQk8YWU+NDM4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTU8L2FlPgorCQkJCQk8YWU+MTQ8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT5vZmY8L3ZhbHVlPgorCQkJPGFjdGl2ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5vZmY8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAib24iIDogIm9mZiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2FjdGl2ZT4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZHdyaXRlPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkodmFsdWUgPT0gIm9uIikgPyAicmVhZG9ubHkiIDogInJlYWR3cml0ZSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxyYWRpb19jaGVjayBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCSgoQ0hFQ0s4LnZhbHVlID09ICJvbiIpIHx8IChDSEVDSzYudmFsdWUgPT0gIm9uIikpID8gc2V0KCJ2YWx1ZSIsICJvZmYiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9yYWRpb19jaGVjaz4KKwkJPC9jaGVjaz4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0s4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTk8L2FlPgorCQkJCQk8YWU+NDEyPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTU8L2FlPgorCQkJCQk8YWU+MTQ8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT5vZmY8L3ZhbHVlPgorCQkJPGFjdGl2ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5vZmY8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAib24iIDogIm9mZiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2FjdGl2ZT4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZHdyaXRlPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkodmFsdWUgPT0gIm9uIikgPyAicmVhZG9ubHkiIDogInJlYWR3cml0ZSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxyYWRpb19jaGVjayBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCSgoQ0hFQ0s2LnZhbHVlID09ICJvbiIpIHx8IChDSEVDSzcudmFsdWUgPT0gIm9uIikpID8gc2V0KCJ2YWx1ZSIsICJvZmYiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9yYWRpb19jaGVjaz4KKwkJPC9jaGVjaz4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0s5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yODwvYWU+CisJCQkJCTxhZT40OTU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvY2hlY2s+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMjkiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2OTwvYWU+CisJCQkJCTxhZT40OTg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMzAiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjM1MDwvYWU+CisJCQkJCTxhZT40OTg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MTwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMzEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQzMjwvYWU+CisJCQkJCTxhZT40OTg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT43ODwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQzMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTExPC9hZT4KKwkJCQkJPGFlPjQ5ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT50aW1lPC9hZT4KKwkJCQk8YWU+c2hvcnQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDMzIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41OTI8L2FlPgorCQkJCQk8YWU+NDk4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODE8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmZsb2F0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxyYW5nZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4wPC9hZT4KKwkJCQkJPGFlPjk5OTkuOTk5OTwvYWU+CisJCQkJPC9yYW5nZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxjaGVjayBzaWQ9IkNIRUNLMTAiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI4PC9hZT4KKwkJCQkJPGFlPjU0MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9jaGVjaz4KKwkJPGZpZWxkIHNpZD0iRklFTEQzNCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY5PC9hZT4KKwkJCQkJPGFlPjU0MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQzNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzUwPC9hZT4KKwkJCQkJPGFlPjU0MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQzNiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMyPC9hZT4KKwkJCQkJPGFlPjU0MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjc4PC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnRpbWU8L2FlPgorCQkJCTxhZT5zaG9ydDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDM3Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTE8L2FlPgorCQkJCQk8YWU+NTQzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMzgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjU5MjwvYWU+CisJCQkJCTxhZT41NDM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MTwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5mbG9hdDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8cmFuZ2UgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+MDwvYWU+CisJCQkJCTxhZT45OTk5Ljk5OTk8L2FlPgorCQkJCTwvcmFuZ2U+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Mjg8L2FlPgorCQkJCQk8YWU+NTkxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjE4PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2NoZWNrPgorCQk8ZmllbGQgc2lkPSJGSUVMRDM5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjk8L2FlPgorCQkJCQk8YWU+NTkwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDQwIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNTA8L2FlPgorCQkJCQk8YWU+NTkwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODE8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDQxIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MzI8L2FlPgorCQkJCQk8YWU+NTkwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+Nzg8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzExLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxENDIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxMTwvYWU+CisJCQkJCTxhZT41OTA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT50aW1lPC9hZT4KKwkJCQk8YWU+c2hvcnQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQ0MyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkyPC9hZT4KKwkJCQkJPGFlPjU5MDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmZsb2F0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxyYW5nZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4wPC9hZT4KKwkJCQkJPGFlPjk5OTkuOTk5OTwvYWU+CisJCQkJPC9yYW5nZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8Y2hlY2sgc2lkPSJDSEVDSzEyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42ODA8L2FlPgorCQkJCQk8YWU+MzI2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTU8L2FlPgorCQkJCQk8YWU+MTQ8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2NoZWNrPgorCQk8Y2hlY2sgc2lkPSJDSEVDSzEzIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42ODk8L2FlPgorCQkJCQk8YWU+NDA0PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTU8L2FlPgorCQkJCQk8YWU+MTQ8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxhY3RpdmUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+b2ZmPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMi52YWx1ZSA9PSAib24iKSA/ICJvbiIgOiAib2ZmIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvYWN0aXZlPgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkd3JpdGU8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCSh2YWx1ZSA9PSAib24iKSA/ICJyZWFkb25seSIgOiAicmVhZHdyaXRlIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPHJhZGlvX2NoZWNrIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKChDSEVDSzE0LnZhbHVlID09ICJvbiIpIHx8IChDSEVDSzE1LnZhbHVlID09ICJvbiIpKSA/IHNldCgidmFsdWUiLCAib2ZmIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvcmFkaW9fY2hlY2s+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9jaGVjaz4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxNCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Njg5PC9hZT4KKwkJCQkJPGFlPjQyODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE1PC9hZT4KKwkJCQkJPGFlPjE0PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8YWN0aXZlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPm9mZjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTIudmFsdWUgPT0gIm9uIikgPyAib24iIDogIm9mZiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2FjdGl2ZT4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZHdyaXRlPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkodmFsdWUgPT0gIm9uIikgPyAicmVhZG9ubHkiIDogInJlYWR3cml0ZSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxyYWRpb19jaGVjayBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCSgoQ0hFQ0sxNS52YWx1ZSA9PSAib24iKSB8fCAoQ0hFQ0sxMy52YWx1ZSA9PSAib24iKSkgPyBzZXQoInZhbHVlIiwgIm9mZiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L3JhZGlvX2NoZWNrPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvY2hlY2s+CisJCTxjaGVjayBzaWQ9IkNIRUNLMTUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY4OTwvYWU+CisJCQkJCTxhZT40ODU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNTwvYWU+CisJCQkJCTxhZT4xNDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPGFjdGl2ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5vZmY8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEyLnZhbHVlID09ICJvbiIpID8gIm9uIiA6ICJvZmYiCisJCQkJPC9jb21wdXRlPgorCQkJPC9hY3RpdmU+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWR3cml0ZTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKHZhbHVlID09ICJvbiIpID8gInJlYWRvbmx5IiA6ICJyZWFkd3JpdGUiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8cmFkaW9fY2hlY2sgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoKENIRUNLMTQudmFsdWUgPT0gIm9uIikgfHwgKENIRUNLMTMudmFsdWUgPT0gIm9uIikpID8gc2V0KCJ2YWx1ZSIsICJvZmYiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9yYWRpb19jaGVjaz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2NoZWNrPgorCQk8ZmllbGQgc2lkPSJGSUVMRDQ0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MjwvYWU+CisJCQkJCTxhZT42NTc8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NDY8L2FlPgorCQkJCQk8YWU+NTc8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5zdHJpbmc8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDQ1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MjwvYWU+CisJCQkJCTxhZT43MTI8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NDY8L2FlPgorCQkJCQk8YWU+MzE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5zdHJpbmc8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKENIRUNLOC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIgorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLOC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxidXR0b24gc2lkPSJCVVRUT04xIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNTA8L2FlPgorCQkJCQk8YWU+ODM5PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MzQ2PC9hZT4KKwkJCQkJPGFlPjI3PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dHlwZT5zaWduYXR1cmU8L3R5cGU+CisJCQk8c2lnbmF0dXJlPlNJR05BVFVSRTE8L3NpZ25hdHVyZT4KKwkJCTxzaWduZXI+KGNzKSBKb2huIE0uIEJveWVyLCBqYm95ZXJAcHVyZWVkZ2UuY29tPC9zaWduZXI+CisJCQk8c2lnbm9wdGlvbnMgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5vbWl0PC9hZT4KKwkJCQk8YWU+dHJpZ2dlcml0ZW08L2FlPgorCQkJPC9zaWdub3B0aW9ucz4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxzaWduaXRlbXJlZnMgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5vbWl0PC9hZT4KKwkJCQk8YWU+UEFHRTEuQ0hFQ0sxNjwvYWU+CisJCQkJPGFlPlBBR0UxLkNIRUNLMTc8L2FlPgorCQkJCTxhZT5QQUdFMS5GSUVMRDQ3PC9hZT4KKwkJCQk8YWU+UEFHRTEuQlVUVE9OMjwvYWU+CisJCQkJPGFlPlNJR05BVFVSRTI8L2FlPgorCQkJCTxhZT5QQUdFMS5GSUVMRDQ4PC9hZT4KKwkJCTwvc2lnbml0ZW1yZWZzPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnN0cmluZzwvYWU+CisJCQkJPGFlPm1hbmRhdG9yeTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTx2YWx1ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD4oY3MpIEpvaG4gTS4gQm95ZXIsIGpib3llckBwdXJlZWRnZS5jb208L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCXNpZ25lcgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvdmFsdWU+CisJCTwvYnV0dG9uPgorICAgICAgICAgICAgICAgIDxTaWduYXR1cmUgSWQ9IlNJR05BVFVSRTEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgICAgICAgICAgIDxTaWduZWRJbmZvPgorICAgICAgICAgICAgICAgICAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09IiIgLz4KKyAgICAgICAgICAgICAgICAgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09IiIgLz4KKyAgICAgICAgICAgICAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgICAgICAgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICAgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiIC8+CisgICAgICAgICAgICAgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNC94bWxkc2lnLWZpbHRlcjIiPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8WFBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDQveG1sZHNpZy1maWx0ZXIyIiBGaWx0ZXI9InN1YnRyYWN0Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvWEZETC9wYWdlW0BzaWQ9IlBBR0UxIl0vKltAc2lkPSJDSEVDSzE2IiBvciBAc2lkPSJDSEVDSzE3IiBvciBAc2lkPSJGSUVMRDQ3IiBvciBAc2lkPSJCVVRUT04yIiBvciBAc2lkPSJGSUVMRDQ4Il0gfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9YRkRML3BhZ2UvKi90cmlnZ2VyaXRlbQorICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgICAgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgICAgICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSIiIC8+CisgICAgICAgICAgICAgICAgICAgICAgPERpZ2VzdFZhbHVlIC8+CisgICAgICAgICAgICAgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICAgICAgICAgICAgPC9TaWduZWRJbmZvPgorICAgICAgICAgICAgICAgICAgPFNpZ25hdHVyZVZhbHVlIC8+CisgICAgICAgICAgICAgICAgICA8IS0tIEtleUluZm8gLS0+CisgICAgICAgICAgICAgICAgPC9TaWduYXR1cmU+CisJCTxmaWVsZCBzaWQ9IkZJRUxENDYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY1NTwvYWU+CisJCQkJCTxhZT44NDA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNTU8L2FlPgorCQkJCQk8YWU+Mjc8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxlZGl0c3RhdGU+cmVhZG9ubHk8L2VkaXRzdGF0ZT4KKwkJCTx2YWx1ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD4wNS0wOC0wMjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKEJVVFRPTjEudmFsdWUgIT0gIiIpID8gIioiIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L3ZhbHVlPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJPC9mb3JtYXQ+CisJCTwvZmllbGQ+CisJCTxjaGVjayBzaWQ9IkNIRUNLMTYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjM2MjwvYWU+CisJCQkJCTxhZT44NzM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHJhZGlvX2JlaGF2aW91ciBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzE3LnZhbHVlID09ICJvbiIpID8gc2V0KCJ2YWx1ZSIsICJvZmYiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9yYWRpb19iZWhhdmlvdXI+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9jaGVjaz4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjA0PC9hZT4KKwkJCQkJPGFlPjg3MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8cmFkaW9fYmVoYXZpb3VyIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTYudmFsdWUgPT0gIm9uIikgPyBzZXQoInZhbHVlIiwgIm9mZiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L3JhZGlvX2JlaGF2aW91cj4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2NoZWNrPgorCQk8ZmllbGQgc2lkPSJGSUVMRDQ3Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MTwvYWU+CisJCQkJCTxhZT45MTc8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT43NzA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxGb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5zdHJpbmc8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKENIRUNLMTcudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L0Zvcm1hdD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzE3LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGJ1dHRvbiBzaWQ9IkJVVFRPTjIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjEzMjwvYWU+CisJCQkJCTxhZT45Mzk8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40NjY8L2FlPgorCQkJCQk8YWU+Mjc8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx0eXBlPnNpZ25hdHVyZTwvdHlwZT4KKwkJCTxzaWduYXR1cmU+U0lHTkFUVVJFMjwvc2lnbmF0dXJlPgorCQkJPHNpZ25lcj48L3NpZ25lcj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5zdHJpbmc8L2FlPgorCQkJCTxhZT5tYW5kYXRvcnk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8c2lnbm9wdGlvbnMgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5vbWl0PC9hZT4KKwkJCQk8YWU+dHJpZ2dlcml0ZW08L2FlPgorCQkJPC9zaWdub3B0aW9ucz4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCXNpZ25lcgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvdmFsdWU+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCTwvYnV0dG9uPgorCQk8ZmllbGQgc2lkPSJGSUVMRDQ4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NTY8L2FlPgorCQkJCQk8YWU+OTQwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTU1PC9hZT4KKwkJCQkJPGFlPjI3PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8ZWRpdHN0YXRlPnJlYWRvbmx5PC9lZGl0c3RhdGU+CisJCQk8dmFsdWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQlVUVE9OMi52YWx1ZSAhPSAiIikgPyAiKiIgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvdmFsdWU+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQk8L2Zvcm1hdD4KKwkJPC9maWVsZD4KKwkJPHNwYWNlciBzaWQ9InZmZF9zcGFjZXIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjk2MDwvYWU+CisJCQkJCTxhZT4xMjYwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvc3BhY2VyPgorCTwvcGFnZT4KKzwvWEZETD4KZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWx0ZXIyLW9uZS9zaWduLXhmZGwueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpbHRlcjItb25lL3NpZ24teGZkbC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ2NzU1MAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWx0ZXIyLW9uZS9zaWduLXhmZGwueG1sCkBAIC0wLDAgKzEsNDIyNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxYRkRMIHZlcnNpb249IjQuMC4xIj4KKwk8dmZkX3RpdGxlPlNGNzE8L3ZmZF90aXRsZT4KKwk8dmZkX2F1dGhvcj5UaG9tYXMgTW9ocjwvdmZkX2F1dGhvcj4KKwk8dmZkX3JldmlzaW9uPjQvNi85ODwvdmZkX3JldmlzaW9uPgorCTx2ZmRfZGF0ZT40LzYvOTg8L3ZmZF9kYXRlPgorCTxzYXZlZm9ybWF0PmFwcGxpY2F0aW9uL3gteGZkbDwvc2F2ZWZvcm1hdD4KKwk8dHJhbnNtaXRmb3JtYXQ+YXBwbGljYXRpb24veC14ZmRsPC90cmFuc21pdGZvcm1hdD4KKwk8Zm9ybWlkIGNvbnRlbnQ9ImFycmF5Ij4KKwkJPHZlcnNpb24+MS4wLjA8L3ZlcnNpb24+CisJPC9mb3JtaWQ+CisJPHBhZ2Ugc2lkPSJQQUdFMSI+CisJCTx2ZmRfcGFnZXNpemU+bGV0dGVyPC92ZmRfcGFnZXNpemU+CisJCTx2ZmRfcGFnZWRwaT4xMjA8L3ZmZF9wYWdlZHBpPgorCQk8dmZkX3ByaW50c2l6ZT44LjA7MTAuNTwvdmZkX3ByaW50c2l6ZT4KKwkJPGxhYmVsPlBBR0UxPC9sYWJlbD4KKwkJPGJnY29sb3IgY29udGVudD0iYXJyYXkiPgorCQkJPGFlPjIzNTwvYWU+CisJCQk8YWU+MjM1PC9hZT4KKwkJCTxhZT4yMzU8L2FlPgorCQk8L2JnY29sb3I+CisJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQk8YWU+Q291cmllcjwvYWU+CisJCQk8YWU+OTwvYWU+CisJCQk8YWU+cGxhaW48L2FlPgorCQk8L2ZvbnRpbmZvPgorCQk8bGFiZWwgc2lkPSJMQUJFTDEiPgorCQkJPHZhbHVlPlJFUVVFU1QgRk9SIExFQVZFIE9SIEFQUFJPVkVEIEFCU0VOQ0U8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTQ8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2l6ZSBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPjYxPC9hZT4KKwkJCQk8YWU+MTwvYWU+CisJCQk8L3NpemU+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTk8L2FlPgorCQkJCQk8YWU+MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NDwvYWU+CisJCQkJCTxhZT4zNDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjIwPC9hZT4KKwkJCQkJPGFlPjM1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+Nzk8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT4xLiAgTkFNRTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjEwMDwvYWU+CisJCQkJCTxhZT4zNTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIxODwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPihMYXN0LCBGaXJzdCwgTWlkZGxlIEluaXRpYWwpPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQkJPGFlPml0YWxpYzwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxMTwvYWU+CisJCQkJCTxhZT4zNTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjM4NTwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPjIuICBFTVBMT1lFRSBPUiBTT0NJQUwgU0VDVVJJVFkgTlVNQkVSPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjA8L2FlPgorCQkJCQk8YWU+ODU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNzA8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT4zLiAgT1JHQU5JWkFUSU9OPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjA8L2FlPgorCQkJCQk8YWU+MTM1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjQ4PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+NC4gIFRZUEUgT0YgTEVBVkUvQUJTRU5DRTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjMyPC9hZT4KKwkJCQkJPGFlPjE1NTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIzNjwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPihDaGVjayBhcHByb3ByaWF0ZSBib3goZXMpIGJlbG93Lik8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT45PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJCTxhZT5pdGFsaWM8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNzA8L2FlPgorCQkJCQk8YWU+MTU4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDg8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5Gcm9tOjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjk8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMOSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY4PC9hZT4KKwkJCQkJPGFlPjEzNTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE2MzwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkRhdGU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwxMCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzUyPC9hZT4KKwkJCQkJPGFlPjE1ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQ4PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+VG86PC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+OTwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwxMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMyPC9hZT4KKwkJCQkJPGFlPjE1ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQ4PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+RnJvbTo8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT45PC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDEyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MzA8L2FlPgorCQkJCQk8YWU+MTM1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTYzPC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+VGltZTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDEzIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTM8L2FlPgorCQkJCQk8YWU+MTU4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDg8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5Ubzo8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT45PC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDE0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41OTI8L2FlPgorCQkJCQk8YWU+MTM0PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+NDY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5Ub3RhbAorSG91cnM8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwxNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjQ8L2FlPgorCQkJCQk8YWU+MTg2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjA1PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+QWNjcnVlZCBBbm51YWwgTGVhdmU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwxNiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjQ8L2FlPgorCQkJCQk8YWU+MjMyPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjA1PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+UmVzdG9yZWQgQW5udWFsIExlYXZlPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMTciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY0PC9hZT4KKwkJCQkJPGFlPjI3ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIwNTwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkFkdmFuY2UgQW5udWFsIExlYXZlPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMTgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY0PC9hZT4KKwkJCQkJPGFlPjMyMzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIwNTwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkFjY3VyZWQgU2ljayBMZWF2ZTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDE5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NDwvYWU+CisJCQkJCTxhZT4zNjg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMDU8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5BZHZhbmNlIFNpY2sgTGVhdmU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwyMCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTk8L2FlPgorCQkJCQk8YWU+NDA5PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5QdXJwb3NlOjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDIxIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNDI8L2FlPgorCQkJCQk8YWU+NDEwPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+TWVkaWNhbC9kZW50YWwvb3B0aWNhbCBFeGFtaW5hdGlvbiBvZiByZXF1ZXN0aW5nIGVtcGxveWVlPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+OTwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8c2l6ZSBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPjQ1PC9hZT4KKwkJCQk8YWU+MTwvYWU+CisJCQk8L3NpemU+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMjIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUzNTwvYWU+CisJCQkJCTxhZT40MTA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40NjwvYWU+CisJCQkJCTxhZT4yNDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPk90aGVyPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+OTwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMjMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE0MjwvYWU+CisJCQkJCTxhZT40MzU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40Mzk8L2FlPgorCQkJCQk8YWU+NDI8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5DYXJlIG9mIGZhbWlseSBtZW1iZXIvYmVyZWF2ZW1lbnQsIGluY2x1ZGluZyBtZWRpY2FsL2RlbnRhbC9vcHRpY2FsIGV4YW1pbmF0aW9uIG9mIGZhbWlseSBtZW1iZXI8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT45PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwyNCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjQ8L2FlPgorCQkJCQk8YWU+NDk4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjA0PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+Q29tcGVuc2F0b3J5IFRpbWUgT2ZmPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMjUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY0PC9hZT4KKwkJCQkJPGFlPjUzNTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE4MDwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPk90aGVyIFBhaWQgQWJzZW5jZTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDI2Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NDwvYWU+CisJCQkJCTxhZT41NTY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNTg8L2FlPgorCQkJCQk8YWU+MjQ8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT4oU3BlY2lmeSBpbiBSZW1hcmtzKTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjk8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQkJPGFlPml0YWxpYzwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDI3Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NDwvYWU+CisJCQkJCTxhZT41OTM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xOTI8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5MZWF2ZSBXaXRob3V0IFBheTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDI4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NzY8L2FlPgorCQkJCQk8YWU+MTM1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjE1PC9hZT4KKwkJCQkJPGFlPjQ2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+NS4gRkFNSUxZIEFORAorCU1FRElDQUwgTEVBVkU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwyOSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Njc3PC9hZT4KKwkJCQkJPGFlPjE4MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIxNDwvYWU+CisJCQkJCTxhZT4xMjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5JZiBhbm51YWwgbGVhdmUsIHNpY2sgbGVhdmUsIG9yIGxlYXZlIHdpdGhvdXQgcGF5IHdpbGwgYmUgdXNlZCB1bmRlciB0aGUgRmFtaWx5IGFuZCBNZWRpY2FsIExlYXZlIEFjdCBvZiAxOTkzLCBwbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwzMCI+CisJCQk8dmFsdWU+SSBoZXJlYnkgaW52b2tlIG15PC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NzAwPC9hZT4KKwkJCQkJPGFlPjMyMjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE5MTwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDMxIj4KKwkJCTx2YWx1ZT5lbnRpdGxlbWVudCBGYW1pbHkgYW5kPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Njc1PC9hZT4KKwkJCQkJPGFlPjM0MjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIxNjwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDMyIj4KKwkJCTx2YWx1ZT5NZWRpY2FsIExlYXZlIGZvcjo8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NzU8L2FlPgorCQkJCQk8YWU+MzY0PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjE1PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMzMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjcwODwvYWU+CisJCQkJCTxhZT40MDM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xODE8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5CaXJ0aC9BZG9wdGlvbi9Gb3N0ZXIgQ2FyZTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDM0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT43MDg8L2FlPgorCQkJCQk8YWU+NDI2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTgyPC9hZT4KKwkJCQkJPGFlPjM4PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+U2VyaW91cyBIZWF0aCBDb25kaXRpb24gb2Ygc3BvdXNlLCBTb24sIERhdWdodGVyLCBvciBQYXJlbnQ8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwzNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NzA4PC9hZT4KKwkJCQkJPGFlPjQ4MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE4NDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPlNlcmlvdXMgSGVhbHRoIENvbmRpdGlvbiBvZiBTZWxmPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMzYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY3NTwvYWU+CisJCQkJCTxhZT41Mzc8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5Db250YWN0IHlvdXIgc3VwZXJ2aXNvciBhbmQvb3Igb3VyIHBlcnNvbm5lbCBvZmZpY2UgdG8gb2J0YWluIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgeW91ciBlbnRpdGxlbWVudHMgYW5kIHJlc3BvbnNpYmlsaXRpZXMgdW5kZXIgdGhlIEZhbWlseSBhbmQgTWVkaWNhbCBMZWF2ZSBBY3Qgb2YgMTk5My48L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxzaXplIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+MjY8L2FlPgorCQkJCTxhZT41PC9hZT4KKwkJCTwvc2l6ZT4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwzNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTk8L2FlPgorCQkJCQk8YWU+NjMwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTkyPC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+Ni4gIFJFTUFSS1M6PC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMzgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE5PC9hZT4KKwkJCQkJPGFlPjc0NzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE3MDwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPjcuICBDRVJUSUZJQ0FUSU9OOjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDM5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzg8L2FlPgorCQkJCQk8YWU+NzQ3PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NzE1PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+SSBoZXJlYnkgcmVxdWVzdCBsZWF2ZS9hcHByb3ZlZCBhYnNlbmNlIGZyb20gZHV0eSBhcyBpbmRpY2F0ZWQgYWJvdmUgYW5kIGNlcnRpZnkgdGhhdCBzdWNoIGxlYXZlL2Fic2VuY2U8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNDAiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE5PC9hZT4KKwkJCQkJPGFlPjc2NzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3MzwvYWU+CisJCQkJCTxhZT42NjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPmlzIHJldWVzdGVkIGZyb20gdGhlIHB1cnBvc2UocykgaW5kaWNhdGVkLiBJIHVuZGVyc3RhbmQgdGhhdCBJIG11c3QgY29tcGx5IHdpdGggbXkgZW1wbG95aW5nIGFnZW5jeSdzIHByb2NlZHVyZXMgZm9yIHJlcXVlc3RpbmcgbGVhdmUvYXBwcm92ZWQgYWJzZW5jZSAoYW5kIHByb3ZpZGUgYWRkaXRpb25hbCBkb2N1bWVudGlvbiwgaW5jbHVkaW5nIG1lZGljYWwgY2VydGlmaWNhdGlvbiwgaWYgcmVxdWlyZWQpIGFuZCB0aGF0IGZhbHNpZmljYXRpb24gb2YgaW5mb3JtYXRpb24gb24gdGhpcyBmb3JtIG1heSBiZSBncm91bmRzIGZvciBkaXNjaXBsaW5hcnkgYWN0aW9uLCBpbmNsdWRpbmcgcmVtb3ZhbC48L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNDEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE5PC9hZT4KKwkJCQkJPGFlPjg0MTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIzMDwvYWU+CisJCQkJCTxhZT4yNzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkVNUExPWUVFIFNJR05BVFVSRTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjExPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDQyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41OTc8L2FlPgorCQkJCQk8YWU+ODQxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NTg8L2FlPgorCQkJCQk8YWU+Mjc8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5EQVRFPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTE8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNDMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE5PC9hZT4KKwkJCQkJPGFlPjg3NzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjMzNTwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPjguICBPRkZJQ0FMIEFDVElPTiBPTiBSRVFVRVNUOjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDQ0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MTwvYWU+CisJCQkJCTxhZT44OTc8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT4oSWYgZGlzYXBwcm92ZWQsIGdpdmUgcmVhc29uLiBJZiBhbm51YWwgbGVhdmUsIGluaXRpYXRlIGFjdGlvbiB0byByZXNjaGVkdWxlLik8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8c2l6ZSBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPjUzPC9hZT4KKwkJCQk8YWU+MTwvYWU+CisJCQk8L3NpemU+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNDUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjM4ODwvYWU+CisJCQkJCTxhZT44NzU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xOTI8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5BUFBST1ZFRDwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDQ2Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42Mzg8L2FlPgorCQkJCQk8YWU+ODc1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTkyPC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+RElTQVBQUk9WRUQ8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw0NyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTk8L2FlPgorCQkJCQk8YWU+OTQxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTEyPC9hZT4KKwkJCQkJPGFlPjI3PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+U0lHTkFUVVJFPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTE8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNDgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjU5NzwvYWU+CisJCQkJCTxhZT45NDA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT41ODwvYWU+CisJCQkJCTxhZT4yNzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkRBVEU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMTwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw0OSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+OTcwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODc2PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+UFJJVkFDWSBBQ1QgU1RBVEVNRU5UPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNTAiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE5PC9hZT4KKwkJCQkJPGFlPjk5NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3MzwvYWU+CisJCQkJCTxhZT4xMzQ8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5TZWN0aW9uIDYzMTEgb2YgdGl0bGUgNSwgVW5pdGVkIFN0YXRlcyBDb2RlLCBhdXRob3JpemVzIGNvbGxlY3Rpb24gb2YgdGhpcyBpbmZvcm1hdGlvbi4gVGhlIHByaW1hcnkgdXNlIG9mIHRoaXMgaW5mb3JtYXRpb24gaXMgYnkgbWFuYWdlbWVudCBhbmQgeW91ciBwYXlyb2xsIG9mZmljZSB0byBhcHByb3ZlIGFuZCByZWNvcmQgeW91ciB1c2Ugb2YgbGVhdmUuIEFkZGl0aW9uYWwgZGlzY2xvc3VyZXMgb2YgdGhlIGluZm9ybWF0aW9uIG1hdCBiZTogVG8gdGhlIERlcGFydG1lbnQgb2YgbGFib3Igd2hlbiBwcm9jZXNzaW5nIGEgY2xhaW0gZm9yIGNvbXBlbnNhdGlvbiByZWdhcmRpbmcgYSBqb2IgY29ubmVjdGVkIGluanVyeSBvciBpbGxuZXNzOyB0byBhIFN0YXRlIHVuZW1wbG95bWVudCBjb21wZW5zYXRpb24gb2ZmaWNlIHJlZ2FyZGluZyBhIGNsYWltOyB0aGUgRmVkZXJhbCBMaWZlIEluc3VyYW5jZSBvciBIZWFsdGggQmVuZWZpdHMgY2FycmllcyByZWdhcmRpbmcgYSBjbGFpbTsgdG8gYSBGZWRlcmFsIFN0YXRlLCBvciBsb2NhbCBsYXcgZW5mb3JjZW1lbnQgYWdlbmN5IHdoZW4geW91ciBhZ2VuY3kgYmVjb21lcyBhd2FyZSBvZiBhIHZpb2xhdGlvbiBvciBwb3NzaWJsZSB2aW9sYXRpb24gb2YgY2l2aWwgb3IgY3JpbWluYWwgbGF3OyB0byBhIEZlZGVyYWwgYWdlbmN5IHdoZW4gY29uZHVjdGluZyBhbiBpbnZlc3RpZ2F0aW9uIGZvciBlbXBsb3ltZW50IG9yIFNlcnZpY2VzIEFkbWluaXN0cmF0aW9uIGluIGNvbm5lY3Rpb24gd2l0aCBpdHMgcmVzcG9uc2liaWxpdGllcyBmb3IgcmVjb3JkcyBtYW5hZ2VtZW50LgorCitXaGVyZSAgdGhlIEVtcGxveWVlIGlkZW50aWZpY2F0aW9uIG51bWJlciBpcyB5b3VyIFNvY2lhbCBTZWN1cml0eSBOdW1iZXIsIGNvbGxlY3Rpb24gb2YgdGhpcyBpbmZvcm1hdGlvbiBpcyBhdXRob3JpemVkIGJ5IEV4ZWN1dGl2ZSBPcmRlciA5Mzk3LiBGdXJuaXNoaW5nIHRoZSBpbmZvcm1hdGlvbiBvbiB0aGlzIGZvcm0sIGluY2x1ZGluZyB5b3VyIFNvY2lhbCBTZWN1cml0eSBOdW1iZXIsIGlzIHZvbHVudGFyeSwgYnV0IHRvIGRvIHNvIG1heSByZXN1bHQgaW4gZGlzYXBwcm92YWwgcmVxdWVzdC48L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw1MSI+CisJCQk8dmFsdWU+SWYgeW91ciBhZ2VuY3kgdXNlcyB0aGUgaW5mb3JtYXRpb24gZnVybmlzaGVkIG9uIHRoaXMgZm9ybSBmb3IgcHVycG9zZXMgb3RoZXIgdGhhbiB0aG9zZSBpbmRpY2F0ZWQgYWJvdmUsIGl0IG1heSBwcm92aWRlIHlvdSB3aXRoIGFuIGFkZGl0aW9uYWwgc3RhdGVtZW50IHJlZmxlY3RpbmcgdGhvc2UgcHVycG9zZXMuPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+NzwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTg8L2FlPgorCQkJCQk8YWU+MTE0MDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NTwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDUyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xODwvYWU+CisJCQkJCTxhZT4xMTY4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDIyPC9hZT4KKwkJCQkJPGFlPjM4PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+TlNOIDc1NDAtMDAwLTc1My01MDY3CitQUkVWSU9VUyBFRElUSU9OIE1BWSBCRSBVU0VEPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNTMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQzODwvYWU+CisJCQkJCTxhZT4xMTY4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDU0PC9hZT4KKwkJCQkJPGFlPjM4PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+U1RBTkRBUkQgRk9STSA3MSAoUmV2LiAxMi05NykKK1BSRVNDUklCRUQgQlkgT0ZGSUNFIE9GIFBFUlNPTk5FTCBNQU5BR0VNRU5ULCA1IENGUiBQQVJUIDYzMDwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPGp1c3RpZnk+cmlnaHQ8L2p1c3RpZnk+CisJCTwvbGFiZWw+CisJCTxsaW5lIHNpZD0iTElORTEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjMyPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODc2PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzwvYWU+CisJCQkJCTxhZT44MjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+MTMzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODc2PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkU0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzwvYWU+CisJCQkJCTxhZT4xNzk8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NzY8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2ODwvYWU+CisJCQkJCTxhZT4yMTg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40MDY8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2ODwvYWU+CisJCQkJCTxhZT4yNjM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40MDY8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjMxMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjY1NzwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FOCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY4PC9hZT4KKwkJCQkJPGFlPjM1NDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQwNjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FOSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY4PC9hZT4KKwkJCQkJPGFlPjM5ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQwNjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTAiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjQ4NDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjY1NzwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjUzMDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjY1NzwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjU3ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjY1NzwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjYyNjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjc0MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjg2NzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjk2NzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjExNjQ8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NzY8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTE4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzwvYWU+CisJCQkJCTxhZT4zMjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MTEzMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTE5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTA8L2FlPgorCQkJCQk8YWU+MzI8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjUxPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMjAiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjg5MjwvYWU+CisJCQkJCTxhZT4zMjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MTEzMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTIxIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjg8L2FlPgorCQkJCQk8YWU+MTMzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4yNjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUyMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzQ5PC9hZT4KKwkJCQkJPGFlPjE3OTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MjIwPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMjMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQzMDwvYWU+CisJCQkJCTxhZT4xMzM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjI2NjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTI0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTA8L2FlPgorCQkJCQk8YWU+MTc5PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4yMjA8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUyNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkyPC9hZT4KKwkJCQkJPGFlPjEzMzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MjY1PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMjYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY3MzwvYWU+CisJCQkJCTxhZT4xMzM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjQ5NDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTI3Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjg8L2FlPgorCQkJCQk8YWU+NDg0PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4xNDM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUyOCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzQ5PC9hZT4KKwkJCQkJPGFlPjQ4NDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MTQzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMjkiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQzMTwvYWU+CisJCQkJCTxhZT40ODQ8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjE0MzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTMwIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTA8L2FlPgorCQkJCQk8YWU+NDg0PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4xNDM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUzMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkxPC9hZT4KKwkJCQkJPGFlPjQ4NDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MTQzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGZpZWxkIHNpZD0iRklFTEQxIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yMDwvYWU+CisJCQkJCTxhZT41ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQ4OTwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnN0cmluZzwvYWU+CisJCQkJPGFlPm1hbmRhdG9yeTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT5Kb2huIFEuIFB1YmxpYzwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTM3PC9hZT4KKwkJCQkJPGFlPjU4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTIzPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+c3RyaW5nPC9hZT4KKwkJCQk8YWU+bWFuZGF0b3J5PC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjEyMzQ1Njc4OTwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTk8L2FlPgorCQkJCQk8YWU+MTA5PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODcyPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+c3RyaW5nPC9hZT4KKwkJCQk8YWU+bWFuZGF0b3J5PC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPlB1cmVFZGdlIFNvbHV0aW9ucyBJbmMuPC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yODwvYWU+CisJCQkJCTxhZT4xOTE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlIC8+CisJCTwvY2hlY2s+CisJCTxmaWVsZCBzaWQ9IkZJRUxENCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY5PC9hZT4KKwkJCQkJPGFlPjE4ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlIC8+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxENSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzUwPC9hZT4KKwkJCQkJPGFlPjE4ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlIC8+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxENiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMxPC9hZT4KKwkJCQkJPGFlPjE4ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQ3Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTE8L2FlPgorCQkJCQk8YWU+MTg4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODE8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWwgLz4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT50aW1lPC9hZT4KKwkJCQk8YWU+c2hvcnQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZSAvPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjU5MzwvYWU+CisJCQkJCTxhZT4xODg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbCAvPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmZsb2F0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxyYW5nZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4wPC9hZT4KKwkJCQkJPGFlPjk5OTkuOTk5OTwvYWU+CisJCQkJPC9yYW5nZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlIC8+CisJCTwvZmllbGQ+CisJCTxjaGVjayBzaWQ9IkNIRUNLMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Mjg8L2FlPgorCQkJCQk8YWU+MjMxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjE4PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZSAvPgorCQk8L2NoZWNrPgorCQk8ZmllbGQgc2lkPSJGSUVMRDkiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2OTwvYWU+CisJCQkJCTxhZT4yMzE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbCAvPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZSAvPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDEwIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNTA8L2FlPgorCQkJCQk8YWU+MjMxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWwgLz4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQxMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMxPC9hZT4KKwkJCQkJPGFlPjIzMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQxMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTExPC9hZT4KKwkJCQkJPGFlPjIzMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQxMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkzPC9hZT4KKwkJCQkJPGFlPjIzMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZmxvYXQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPjA8L2FlPgorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4KKwkJCQk8L3JhbmdlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0szIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yODwvYWU+CisJCQkJCTxhZT4yNzc8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlIC8+CisJCTwvY2hlY2s+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMTQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2OTwvYWU+CisJCQkJCTxhZT4yNzY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbCAvPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZSAvPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDE1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNTA8L2FlPgorCQkJCQk8YWU+Mjc2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWwgLz4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQxNiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMxPC9hZT4KKwkJCQkJPGFlPjI3NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQxNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTExPC9hZT4KKwkJCQkJPGFlPjI3NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQxOCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkzPC9hZT4KKwkJCQkJPGFlPjI3NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZmxvYXQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPjA8L2FlPgorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4KKwkJCQk8L3JhbmdlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0s0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yODwvYWU+CisJCQkJCTxhZT4zMjI8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlIC8+CisJCTwvY2hlY2s+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMTkiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2OTwvYWU+CisJCQkJCTxhZT4zMjE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbCAvPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZSAvPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDIwIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNTA8L2FlPgorCQkJCQk8YWU+MzIxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWwgLz4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQyMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMxPC9hZT4KKwkJCQkJPGFlPjMyMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjc5PC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQyMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTExPC9hZT4KKwkJCQkJPGFlPjMyMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQyMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkzPC9hZT4KKwkJCQkJPGFlPjMyMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZmxvYXQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPjA8L2FlPgorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4KKwkJCQk8L3JhbmdlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0s1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yODwvYWU+CisJCQkJCTxhZT4zNjc8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlIC8+CisJCTwvY2hlY2s+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMjQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2OTwvYWU+CisJCQkJCTxhZT4zNjY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbCAvPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZSAvPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDI1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNTA8L2FlPgorCQkJCQk8YWU+MzY2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWwgLz4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQyNiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMxPC9hZT4KKwkJCQkJPGFlPjM2NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQyNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTExPC9hZT4KKwkJCQkJPGFlPjM2NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQyOCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkzPC9hZT4KKwkJCQkJPGFlPjM2NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZmxvYXQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPjA8L2FlPgorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4KKwkJCQk8L3JhbmdlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0s2Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xMjE8L2FlPgorCQkJCQk8YWU+NDEyPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTU8L2FlPgorCQkJCQk8YWU+MTQ8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT5vZmY8L3ZhbHVlPgorCQkJPGFjdGl2ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5vZmY8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAib24iIDogIm9mZiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2FjdGl2ZT4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZHdyaXRlPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkodmFsdWUgPT0gIm9uIikgPyAicmVhZG9ubHkiIDogInJlYWR3cml0ZSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxyYWRpb19jaGVjayBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbCAvPgorCQkJCTxjb21wdXRlPgorCQkJCQkoKENIRUNLOC52YWx1ZSA9PSAib24iKSB8fCAoQ0hFQ0s3LnZhbHVlID09ICJvbiIpKSA/IHNldCgidmFsdWUiLCAib2ZmIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvcmFkaW9fY2hlY2s+CisJCTwvY2hlY2s+CisJCTxjaGVjayBzaWQ9IkNIRUNLNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTIxPC9hZT4KKwkJCQkJPGFlPjQzODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE1PC9hZT4KKwkJCQkJPGFlPjE0PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+b2ZmPC92YWx1ZT4KKwkJCTxhY3RpdmUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+b2ZmPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm9uIiA6ICJvZmYiCisJCQkJPC9jb21wdXRlPgorCQkJPC9hY3RpdmU+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWR3cml0ZTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKHZhbHVlID09ICJvbiIpID8gInJlYWRvbmx5IiA6ICJyZWFkd3JpdGUiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8cmFkaW9fY2hlY2sgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWwgLz4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKChDSEVDSzgudmFsdWUgPT0gIm9uIikgfHwgKENIRUNLNi52YWx1ZSA9PSAib24iKSkgPyBzZXQoInZhbHVlIiwgIm9mZiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L3JhZGlvX2NoZWNrPgorCQk8L2NoZWNrPgorCQk8Y2hlY2sgc2lkPSJDSEVDSzgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxOTwvYWU+CisJCQkJCTxhZT40MTI8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNTwvYWU+CisJCQkJCTxhZT4xNDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPm9mZjwvdmFsdWU+CisJCQk8YWN0aXZlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPm9mZjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJvbiIgOiAib2ZmIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvYWN0aXZlPgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkd3JpdGU8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCSh2YWx1ZSA9PSAib24iKSA/ICJyZWFkb25seSIgOiAicmVhZHdyaXRlIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPHJhZGlvX2NoZWNrIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCSgoQ0hFQ0s2LnZhbHVlID09ICJvbiIpIHx8IChDSEVDSzcudmFsdWUgPT0gIm9uIikpID8gc2V0KCJ2YWx1ZSIsICJvZmYiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9yYWRpb19jaGVjaz4KKwkJPC9jaGVjaz4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0s5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yODwvYWU+CisJCQkJCTxhZT40OTU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlIC8+CisJCTwvY2hlY2s+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMjkiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2OTwvYWU+CisJCQkJCTxhZT40OTg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbCAvPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZSAvPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDMwIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNTA8L2FlPgorCQkJCQk8YWU+NDk4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODE8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWwgLz4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQzMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMyPC9hZT4KKwkJCQkJPGFlPjQ5ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjc4PC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQzMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTExPC9hZT4KKwkJCQkJPGFlPjQ5ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQzMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkyPC9hZT4KKwkJCQkJPGFlPjQ5ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZmxvYXQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPjA8L2FlPgorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4KKwkJCQk8L3JhbmdlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxMCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Mjg8L2FlPgorCQkJCQk8YWU+NTQzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjE4PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZSAvPgorCQk8L2NoZWNrPgorCQk8ZmllbGQgc2lkPSJGSUVMRDM0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjk8L2FlPgorCQkJCQk8YWU+NTQzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQzNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzUwPC9hZT4KKwkJCQkJPGFlPjU0MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbCAvPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlIC8+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMzYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQzMjwvYWU+CisJCQkJCTxhZT41NDM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT43ODwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWwgLz4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlIC8+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMzciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxMTwvYWU+CisJCQkJCTxhZT41NDM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWwgLz4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlIC8+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMzgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjU5MjwvYWU+CisJCQkJCTxhZT41NDM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MTwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWwgLz4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZmxvYXQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPjA8L2FlPgorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4KKwkJCQk8L3JhbmdlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlIC8+CisJCTwvZmllbGQ+CisJCTxjaGVjayBzaWQ9IkNIRUNLMTEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI4PC9hZT4KKwkJCQkJPGFlPjU5MTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWUgLz4KKwkJPC9jaGVjaz4KKwkJPGZpZWxkIHNpZD0iRklFTEQzOSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY5PC9hZT4KKwkJCQkJPGFlPjU5MDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbCAvPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzExLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlIC8+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxENDAiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjM1MDwvYWU+CisJCQkJCTxhZT41OTA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MTwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWwgLz4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZSAvPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDQxIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MzI8L2FlPgorCQkJCQk8YWU+NTkwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+Nzg8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnRpbWU8L2FlPgorCQkJCTxhZT5zaG9ydDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZSAvPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDQyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTE8L2FlPgorCQkJCQk8YWU+NTkwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnRpbWU8L2FlPgorCQkJCTxhZT5zaG9ydDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZSAvPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDQzIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41OTI8L2FlPgorCQkJCQk8YWU+NTkwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODE8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmZsb2F0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxyYW5nZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4wPC9hZT4KKwkJCQkJPGFlPjk5OTkuOTk5OTwvYWU+CisJCQkJPC9yYW5nZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZSAvPgorCQk8L2ZpZWxkPgorCQk8Y2hlY2sgc2lkPSJDSEVDSzEyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42ODA8L2FlPgorCQkJCQk8YWU+MzI2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTU8L2FlPgorCQkJCQk8YWU+MTQ8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZSAvPgorCQk8L2NoZWNrPgorCQk8Y2hlY2sgc2lkPSJDSEVDSzEzIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42ODk8L2FlPgorCQkJCQk8YWU+NDA0PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTU8L2FlPgorCQkJCQk8YWU+MTQ8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxhY3RpdmUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+b2ZmPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMi52YWx1ZSA9PSAib24iKSA/ICJvbiIgOiAib2ZmIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvYWN0aXZlPgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkd3JpdGU8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCSh2YWx1ZSA9PSAib24iKSA/ICJyZWFkb25seSIgOiAicmVhZHdyaXRlIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPHJhZGlvX2NoZWNrIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCSgoQ0hFQ0sxNC52YWx1ZSA9PSAib24iKSB8fCAoQ0hFQ0sxNS52YWx1ZSA9PSAib24iKSkgPyBzZXQoInZhbHVlIiwgIm9mZiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L3JhZGlvX2NoZWNrPgorCQkJPHZhbHVlIC8+CisJCTwvY2hlY2s+CisJCTxjaGVjayBzaWQ9IkNIRUNLMTQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY4OTwvYWU+CisJCQkJCTxhZT40Mjg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNTwvYWU+CisJCQkJCTxhZT4xNDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPGFjdGl2ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5vZmY8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEyLnZhbHVlID09ICJvbiIpID8gIm9uIiA6ICJvZmYiCisJCQkJPC9jb21wdXRlPgorCQkJPC9hY3RpdmU+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWR3cml0ZTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKHZhbHVlID09ICJvbiIpID8gInJlYWRvbmx5IiA6ICJyZWFkd3JpdGUiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8cmFkaW9fY2hlY2sgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWwgLz4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKChDSEVDSzE1LnZhbHVlID09ICJvbiIpIHx8IChDSEVDSzEzLnZhbHVlID09ICJvbiIpKSA/IHNldCgidmFsdWUiLCAib2ZmIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvcmFkaW9fY2hlY2s+CisJCQk8dmFsdWUgLz4KKwkJPC9jaGVjaz4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Njg5PC9hZT4KKwkJCQkJPGFlPjQ4NTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE1PC9hZT4KKwkJCQkJPGFlPjE0PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8YWN0aXZlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPm9mZjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTIudmFsdWUgPT0gIm9uIikgPyAib24iIDogIm9mZiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2FjdGl2ZT4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZHdyaXRlPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkodmFsdWUgPT0gIm9uIikgPyAicmVhZG9ubHkiIDogInJlYWR3cml0ZSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxyYWRpb19jaGVjayBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbCAvPgorCQkJCTxjb21wdXRlPgorCQkJCQkoKENIRUNLMTQudmFsdWUgPT0gIm9uIikgfHwgKENIRUNLMTMudmFsdWUgPT0gIm9uIikpID8gc2V0KCJ2YWx1ZSIsICJvZmYiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9yYWRpb19jaGVjaz4KKwkJCTx2YWx1ZSAvPgorCQk8L2NoZWNrPgorCQk8ZmllbGQgc2lkPSJGSUVMRDQ0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MjwvYWU+CisJCQkJCTxhZT42NTc8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NDY8L2FlPgorCQkJCQk8YWU+NTc8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5zdHJpbmc8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTx2YWx1ZSAvPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDQ1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MjwvYWU+CisJCQkJCTxhZT43MTI8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NDY8L2FlPgorCQkJCQk8YWU+MzE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5zdHJpbmc8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKENIRUNLOC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIgorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLOC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPHZhbHVlIC8+CisJCTwvZmllbGQ+CisJCTxidXR0b24gc2lkPSJCVVRUT04xIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNTA8L2FlPgorCQkJCQk8YWU+ODM5PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MzQ2PC9hZT4KKwkJCQkJPGFlPjI3PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dHlwZT5zaWduYXR1cmU8L3R5cGU+CisJCQk8c2lnbmF0dXJlPlNJR05BVFVSRTE8L3NpZ25hdHVyZT4KKwkJCTxzaWduZXI+KGNzKSBKb2huIE0uIEJveWVyLCBqYm95ZXJAcHVyZWVkZ2UuY29tPC9zaWduZXI+CisJCQk8c2lnbm9wdGlvbnMgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5vbWl0PC9hZT4KKwkJCQk8YWU+dHJpZ2dlcml0ZW08L2FlPgorCQkJPC9zaWdub3B0aW9ucz4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxzaWduaXRlbXJlZnMgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5vbWl0PC9hZT4KKwkJCQk8YWU+UEFHRTEuQ0hFQ0sxNjwvYWU+CisJCQkJPGFlPlBBR0UxLkNIRUNLMTc8L2FlPgorCQkJCTxhZT5QQUdFMS5GSUVMRDQ3PC9hZT4KKwkJCQk8YWU+UEFHRTEuQlVUVE9OMjwvYWU+CisJCQkJPGFlPlNJR05BVFVSRTI8L2FlPgorCQkJCTxhZT5QQUdFMS5GSUVMRDQ4PC9hZT4KKwkJCTwvc2lnbml0ZW1yZWZzPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnN0cmluZzwvYWU+CisJCQkJPGFlPm1hbmRhdG9yeTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTx2YWx1ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD4oY3MpIEpvaG4gTS4gQm95ZXIsIGpib3llckBwdXJlZWRnZS5jb208L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCXNpZ25lcgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvdmFsdWU+CisJCTwvYnV0dG9uPgorICAgICAgICAgICAgICAgIDxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIElkPSJTSUdOQVRVUkUxIj4KKyAgICAgICAgICAgICAgICAgIDxTaWduZWRJbmZvPgorICAgICAgICAgICAgICAgICAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPgorICAgICAgICAgICAgICAgICAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIiAvPgorICAgICAgICAgICAgICAgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgICAgICAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIgLz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA0L3htbGRzaWctZmlsdGVyMiI+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxYUGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNC94bWxkc2lnLWZpbHRlcjIiIEZpbHRlcj0ic3VidHJhY3QiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9YRkRML3BhZ2VbQHNpZD0iUEFHRTEiXS8qW0BzaWQ9IkNIRUNLMTYiIG9yIEBzaWQ9IkNIRUNLMTciIG9yIEBzaWQ9IkZJRUxENDciIG9yIEBzaWQ9IkJVVFRPTjIiIG9yIEBzaWQ9IkZJRUxENDgiXSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgL1hGREwvcGFnZS8qL3RyaWdnZXJpdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgICAgICAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICAgICAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgICAgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICAgICAgICAgICAgICAgIDxEaWdlc3RWYWx1ZT54dEh2Z3JZQ1lpV1V0dmdiYUE2eXg0Zlk0aEk9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgICAgICAgICAgICA8L1NpZ25lZEluZm8+CisgICAgICAgICAgICAgICAgICA8U2lnbmF0dXJlVmFsdWU+CisgICAgICAgICAgICAgICAgICAgIE9pelVRbCt1cWdWMm5ESW9nQy9SaXA1dmExeEdZOFVtK3BLR3ZJSzJybE1yaFVRVmNCZmdpUT09CisgICAgICAgICAgICAgICAgICA8L1NpZ25hdHVyZVZhbHVlPgorICAgICAgICAgICAgICAgICAgPEtleUluZm8+CisgICAgICAgICAgICAgICAgICAgIDxLZXlWYWx1ZT4KKyAgICAgICAgICAgICAgICAgICAgICA8RFNBS2V5VmFsdWU+CisgICAgICAgICAgICAgICAgICAgICAgICA8UD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgM2VPZUF2cW5FeUZwVyt1VFNncmRqN1lMamFUa3B5SGVjS0ZJb0x1OFFaTmtHVFFJMWNpSVRCSDBscWZJa2RDSAorICAgICAgICAgICAgICAgICAgICAgICAgICBTaThmaVVDM0RUcTNKOUZzSmVmNFlWdERGN0pwVXZIVE9RcXRxN1pneDZLQzhXeGt6NnJRQ3hPcjdGMEFwT1lpCisgICAgICAgICAgICAgICAgICAgICAgICAgIDg5ekxSb2U0TWtER2U2dXgwK1d0eU9UUW9WSUdOVEREVUZYclVRTmJMckU9CisgICAgICAgICAgICAgICAgICAgICAgICA8L1A+CisgICAgICAgICAgICAgICAgICAgICAgICA8UT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgaERMY0ZLMEdPL0h6MWFyeE9PdnNnTS9WTHlVPQorICAgICAgICAgICAgICAgICAgICAgICAgPC9RPgorICAgICAgICAgICAgICAgICAgICAgICAgPEc+CisgICAgICAgICAgICAgICAgICAgICAgICAgIG5ueDdoYmRXb3pHYnRuRmduYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3oKKyAgICAgICAgICAgICAgICAgICAgICAgICAgS3Q3ZGxFYVFMN2I1K0pUWnQzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTQorICAgICAgICAgICAgICAgICAgICAgICAgICA4ZDJyaGQyVWkweEhiazBENDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBPQorICAgICAgICAgICAgICAgICAgICAgICAgPC9HPgorICAgICAgICAgICAgICAgICAgICAgICAgPFk+CisgICAgICAgICAgICAgICAgICAgICAgICAgIGNmWXBpaHBBUWVlcGJORlM0TUFiUVJoZFhwRGk1d0xyd3hFNWhJdm9ZcW8xTDhCUVZ1OGZZMVRGQVB0b2FlMWkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQmcvR0lKeVAzaUxmeXVCSmFEdkpKTFAzMHdCSDlpL3M1SjM2NTZQZXZwT1ZkVGZpNzc3Rmk5R2o2eS9pYjJWdgorICAgICAgICAgICAgICAgICAgICAgICAgICArT1pmSmtrcDRMNTArcDVUVWhQbVFMSnRSRXNndGwrdG5JT3lKVCsrRzlVPQorICAgICAgICAgICAgICAgICAgICAgICAgPC9ZPgorICAgICAgICAgICAgICAgICAgICAgIDwvRFNBS2V5VmFsdWU+CisgICAgICAgICAgICAgICAgICAgIDwvS2V5VmFsdWU+CisgICAgICAgICAgICAgICAgICAgIDxYNTA5RGF0YT4KKyAgICAgICAgICAgICAgICAgICAgICA8WDUwOVN1YmplY3ROYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgQ049TWVybGluIEh1Z2hlcyxPVT1YL1NlY3VyZSxPPUJhbHRpbW9yZSBUZWNobm9sb2dpZXMgTHRkLixTVD1EdWJsaW4sQz1JRQorICAgICAgICAgICAgICAgICAgICAgIDwvWDUwOVN1YmplY3ROYW1lPgorICAgICAgICAgICAgICAgICAgICAgIDxYNTA5SXNzdWVyU2VyaWFsPgorICAgICAgICAgICAgICAgICAgICAgICAgPFg1MDlJc3N1ZXJOYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICBDTj1UcmFuc2llbnQgQ0EsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUgVGVjaG5vbG9naWVzIEx0ZC4sU1Q9RHVibGluLEM9SUUKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvWDUwOUlzc3Vlck5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICA8WDUwOVNlcmlhbE51bWJlcj4xMDE3Nzg4MzcwMzQ4PC9YNTA5U2VyaWFsTnVtYmVyPgorICAgICAgICAgICAgICAgICAgICAgIDwvWDUwOUlzc3VlclNlcmlhbD4KKyAgICAgICAgICAgICAgICAgICAgICA8WDUwOUNlcnRpZmljYXRlPgorICAgICAgICAgICAgICAgICAgICAgICAgTUlJRFVEQ0NBeENnQXdJQkFnSUdBT3o0Nmcyc01Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgICAgICAgICAgICAgICAgRHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbAorICAgICAgICAgICAgICAgICAgICAgICAgY3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQgorICAgICAgICAgICAgICAgICAgICAgICAgTUI0WERUQXlNRFF3TWpJeU5Ua3pNRm9YRFRFeU1EUXdNakl4TlRreU5Wb3diekVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgICAgICAgICAgICAgICAgRHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbAorICAgICAgICAgICAgICAgICAgICAgICAgY3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVXTUJRR0ExVUVBeE1OVFdWeWJHbHVJRWgxWjJobAorICAgICAgICAgICAgICAgICAgICAgICAgY3pDQ0FiY3dnZ0VzQmdjcWhrak9PQVFCTUlJQkh3S0JnUURkNDU0QytxY1RJV2xiNjVOS0N0MlB0Z3VOcE9TbgorICAgICAgICAgICAgICAgICAgICAgICAgSWQ1d29VaWd1N3hCazJRWk5BalZ5SWhNRWZTV3A4aVIwSWRLTHgrSlFMY05PcmNuMFd3bDUvaGhXME1Yc21sUworICAgICAgICAgICAgICAgICAgICAgICAgOGRNNUNxMnJ0bURIb29MeGJHVFBxdEFMRTZ2c1hRQ2s1aUx6M010R2g3Z3lRTVo3cTdIVDVhM0k1TkNoVWdZMQorICAgICAgICAgICAgICAgICAgICAgICAgTU1OUVZldFJBMXN1c1FJVkFJUXkzQlN0Qmp2eDg5V3E4VGpyN0lEUDFTOGxBb0dCQUo1OGU0VzNWcU14bTdaeAorICAgICAgICAgICAgICAgICAgICAgICAgWUoyeFo2S1gwWmUxMFduS1pEeVVSbitUOWlGSUZiS1JGRWxLRGVvdFh3d1h3WU9OOHlyZTNaUkdrQysyK2ZpVQorICAgICAgICAgICAgICAgICAgICAgICAgMmJkeklXVFQ2TE1iSU1WYmsrMDdQNE9aT3hKNlhXTDlHdVljT1FjTnZYNDJ4aDM0RFBIZHE0WGRsSXRNUjI1TgorICAgICAgICAgICAgICAgICAgICAgICAgQStPZFo0UzhWVnJwYjRqa2o0Y3lpcjE2MjhrZ0E0R0VBQUtCZ0hIMktZb2FRRUhucVd6UlV1REFHMEVZWFY2UQorICAgICAgICAgICAgICAgICAgICAgICAgNHVjQzY4TVJPWVNMNkdLcU5TL0FVRmJ2SDJOVXhRRDdhR250WWdZUHhpQ2NqOTRpMzhyZ1NXZzd5U1N6OTlNQQorICAgICAgICAgICAgICAgICAgICAgICAgUi9ZdjdPU2QrdWVqM3I2VGxYVTM0dSsreFl2Um8rc3Y0bTlsYi9qbVh5WkpLZUMrZFBxZVUxSVQ1a0N5YlVSTAorICAgICAgICAgICAgICAgICAgICAgICAgSUxaZnJaeURzaVUvdmh2Vm96b3dPREFPQmdOVkhROEJBZjhFQkFNQ0I0QXdFUVlEVlIwT0JBb0VDSWF0WTdTRQorICAgICAgICAgICAgICAgICAgICAgICAgbFhFT01CTUdBMVVkSXdRTU1BcUFDSU9HUGtCMk11S1RNQWtHQnlxR1NNNDRCQU1ETHdBd0xBSVVTdlQwMmlRagorICAgICAgICAgICAgICAgICAgICAgICAgUTVkYTRXcGUwQnZzN0d1Q2NWc0NGQ0VjUXBialVmbnhYRlhOV2lGeVE0OVpyV3FuCisgICAgICAgICAgICAgICAgICAgICAgPC9YNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICAgICAgICAgICAgPFg1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIE1JSURTekNDQXd1Z0F3SUJBZ0lHQU96NDZmd0pNQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgKKyAgICAgICAgICAgICAgICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICAgICAgICAgICAgICAgIGN5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkIKKyAgICAgICAgICAgICAgICAgICAgICAgIE1CNFhEVEF5TURRd01qSXlOVGt5TlZvWERURXlNRFF3TWpJeE5Ua3lOVm93YmpFTE1Ba0dBMVVFQmhNQ1NVVXgKKyAgICAgICAgICAgICAgICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICAgICAgICAgICAgICAgIGN5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkIKKyAgICAgICAgICAgICAgICAgICAgICAgIE1JSUJ0ekNDQVN3R0J5cUdTTTQ0QkFFd2dnRWZBb0dCQU4zam5nTDZweE1oYVZ2cmswb0szWSsyQzQyazVLY2gKKyAgICAgICAgICAgICAgICAgICAgICAgIDNuQ2hTS0M3dkVHVFpCazBDTlhJaUV3UjlKYW55SkhRaDBvdkg0bEF0dzA2dHlmUmJDWG4rR0ZiUXhleWFWTHgKKyAgICAgICAgICAgICAgICAgICAgICAgIDB6a0tyYXUyWU1laWd2RnNaTStxMEFzVHEreGRBS1RtSXZQY3kwYUh1REpBeG51cnNkUGxyY2prMEtGU0JqVXcKKyAgICAgICAgICAgICAgICAgICAgICAgIHcxQlY2MUVEV3k2eEFoVUFoRExjRkswR08vSHoxYXJ4T092c2dNL1ZMeVVDZ1lFQW5ueDdoYmRXb3pHYnRuRmcKKyAgICAgICAgICAgICAgICAgICAgICAgIG5iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzekt0N2RsRWFRTDdiNStKVFoKKyAgICAgICAgICAgICAgICAgICAgICAgIHQzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTThkMnJoZDJVaTB4SGJrMEQKKyAgICAgICAgICAgICAgICAgICAgICAgIDQ1MW5oTHhWV3VsdmlPU1BoektLdlhyYnlTQURnWVFBQW9HQWZhZytIQ0FCSUphZEREOUFhcmhnYzJRUjNMcDcKKyAgICAgICAgICAgICAgICAgICAgICAgIFBwTU9oMGxBd0xpSXN2a080VWxiZU9TMElKQzhiY3FMak0xZlZ3NkZHU2F4bXErNHkxYWcybTlrNklkRTBRaDUKKyAgICAgICAgICAgICAgICAgICAgICAgIE54Qi94RmttZHdxWEZSSUpWcDQ0T2VVeWdCNDdZSzc2Tm1VSVlHM0RkZmlQUFUzYnF6anZ0T3RFVGlDSHZvMjUKKyAgICAgICAgICAgICAgICAgICAgICAgIDRENlVqd1BwWUVyWFJVYWpOakEwTUE0R0ExVWREd0VCL3dRRUF3SUNCREFQQmdOVkhSTUVDREFHQVFIL0FnRUEKKyAgICAgICAgICAgICAgICAgICAgICAgIE1CRUdBMVVkRGdRS0JBaURoajVBZGpMaWt6QUpCZ2NxaGtqT09BUURBeThBTUN3Q0ZFTHUwbnV3ZXFXN1dmMHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGdrL0NBR0dMMEJHS0FoUk5kZ1FHcjVpeVpLb0g0b3FQbTBWSjlUalhMZz09CisgICAgICAgICAgICAgICAgICAgICAgPC9YNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICAgICAgICAgIDwvWDUwOURhdGE+CisgICAgICAgICAgICAgICAgICA8L0tleUluZm8+CisgICAgICAgICAgICAgICAgPC9TaWduYXR1cmU+CisJCTxmaWVsZCBzaWQ9IkZJRUxENDYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY1NTwvYWU+CisJCQkJCTxhZT44NDA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNTU8L2FlPgorCQkJCQk8YWU+Mjc8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxlZGl0c3RhdGU+cmVhZG9ubHk8L2VkaXRzdGF0ZT4KKwkJCTx2YWx1ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD4wNS0wOC0wMjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKEJVVFRPTjEudmFsdWUgIT0gIiIpID8gIioiIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L3ZhbHVlPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJPC9mb3JtYXQ+CisJCTwvZmllbGQ+CisJCTxjaGVjayBzaWQ9IkNIRUNLMTYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjM2MjwvYWU+CisJCQkJCTxhZT44NzM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHJhZGlvX2JlaGF2aW91ciBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbCAvPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxNy52YWx1ZSA9PSAib24iKSA/IHNldCgidmFsdWUiLCAib2ZmIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvcmFkaW9fYmVoYXZpb3VyPgorCQkJPHZhbHVlIC8+CisJCTwvY2hlY2s+CisJCTxjaGVjayBzaWQ9IkNIRUNLMTciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjYwNDwvYWU+CisJCQkJCTxhZT44NzM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHJhZGlvX2JlaGF2aW91ciBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbCAvPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxNi52YWx1ZSA9PSAib24iKSA/IHNldCgidmFsdWUiLCAib2ZmIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvcmFkaW9fYmVoYXZpb3VyPgorCQkJPHZhbHVlIC8+CisJCTwvY2hlY2s+CisJCTxmaWVsZCBzaWQ9IkZJRUxENDciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQxPC9hZT4KKwkJCQkJPGFlPjkxNzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjc3MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPEZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnN0cmluZzwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoQ0hFQ0sxNy52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIgorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvRm9ybWF0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTcudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTx2YWx1ZSAvPgorCQk8L2ZpZWxkPgorCQk8YnV0dG9uIHNpZD0iQlVUVE9OMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTMyPC9hZT4KKwkJCQkJPGFlPjkzOTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQ2NjwvYWU+CisJCQkJCTxhZT4yNzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHR5cGU+c2lnbmF0dXJlPC90eXBlPgorCQkJPHNpZ25hdHVyZT5TSUdOQVRVUkUyPC9zaWduYXR1cmU+CisJCQk8c2lnbmVyIC8+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+c3RyaW5nPC9hZT4KKwkJCQk8YWU+bWFuZGF0b3J5PC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPHNpZ25vcHRpb25zIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+b21pdDwvYWU+CisJCQkJPGFlPnRyaWdnZXJpdGVtPC9hZT4KKwkJCTwvc2lnbm9wdGlvbnM+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWwgLz4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJc2lnbmVyCisJCQkJPC9jb21wdXRlPgorCQkJPC92YWx1ZT4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJPC9idXR0b24+CisJCTxmaWVsZCBzaWQ9IkZJRUxENDgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY1NjwvYWU+CisJCQkJCTxhZT45NDA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNTU8L2FlPgorCQkJCQk8YWU+Mjc8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxlZGl0c3RhdGU+cmVhZG9ubHk8L2VkaXRzdGF0ZT4KKwkJCTx2YWx1ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbCAvPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQlVUVE9OMi52YWx1ZSAhPSAiIikgPyAiKiIgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvdmFsdWU+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQk8L2Zvcm1hdD4KKwkJPC9maWVsZD4KKwkJPHNwYWNlciBzaWQ9InZmZF9zcGFjZXIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjk2MDwvYWU+CisJCQkJCTxhZT4xMjYwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvc3BhY2VyPgorCTwvcGFnZT4KKzwvWEZETD4KZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWx0ZXIyLW9uZS9zaWduYXR1cmUtYzE0bi0wLnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWx0ZXIyLW9uZS9zaWduYXR1cmUtYzE0bi0wLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjkzNThmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpbHRlcjItb25lL3NpZ25hdHVyZS1jMTRuLTAudHh0CkBAIC0wLDAgKzEsMTEgQEAKKzxUb0JlU2lnbmVkPgorICAgIAorICAgIDxEYXRhPjwvRGF0YT4KKyAgICA8UmVhbGx5VG9CZVNpZ25lZD4KKyAgICAgICAgCisgICAgICAgIDxEYXRhPjwvRGF0YT4KKyAgICAgIDwvUmVhbGx5VG9CZVNpZ25lZD4KKyAgPC9Ub0JlU2lnbmVkPjxUb0JlU2lnbmVkPgorICAgIDxEYXRhPjwvRGF0YT4KKyAgICAKKyAgPC9Ub0JlU2lnbmVkPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWx0ZXIyLW9uZS9zaWduYXR1cmUtYzE0bi0xLnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWx0ZXIyLW9uZS9zaWduYXR1cmUtYzE0bi0xLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjIwNGFjCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpbHRlcjItb25lL3NpZ25hdHVyZS1jMTRuLTEudHh0CkBAIC0wLDAgKzEsMTEgQEAKKzxUb0JlU2lnbmVkPgorICAgIDwhLS0gY29tbWVudCAtLT4KKyAgICA8RGF0YT48L0RhdGE+CisgICAgPFJlYWxseVRvQmVTaWduZWQ+CisgICAgICAgIDwhLS0gY29tbWVudCAtLT4KKyAgICAgICAgPERhdGE+PC9EYXRhPgorICAgICAgPC9SZWFsbHlUb0JlU2lnbmVkPgorICA8L1RvQmVTaWduZWQ+PFRvQmVTaWduZWQ+CisgICAgPERhdGE+PC9EYXRhPgorICAgIAorICA8L1RvQmVTaWduZWQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpbHRlcjItb25lL3NpZ25hdHVyZS50bXBsIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpbHRlcjItb25lL3NpZ25hdHVyZS50bXBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhMzg2MzIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlsdGVyMi1vbmUvc2lnbmF0dXJlLnRtcGwKQEAgLTAsMCArMSw2OSBAQAorPERvY3VtZW50PgorICA8VG9CZVNpZ25lZD4KKyAgICA8IS0tIGNvbW1lbnQgLS0+CisgICAgPERhdGE+PC9EYXRhPgorICAgIDxOb3RUb0JlU2lnbmVkPgorICAgICAgPFJlYWxseVRvQmVTaWduZWQ+CisgICAgICAgIDwhLS0gY29tbWVudCAtLT4KKyAgICAgICAgPERhdGE+PC9EYXRhPgorICAgICAgPC9SZWFsbHlUb0JlU2lnbmVkPgorICAgIDwvTm90VG9CZVNpZ25lZD4KKyAgPC9Ub0JlU2lnbmVkPgorICA8VG9CZVNpZ25lZD4KKyAgICA8RGF0YT48L0RhdGE+CisgICAgPE5vdFRvQmVTaWduZWQ+CisgICAgICA8RGF0YT48L0RhdGE+CisgICAgPC9Ob3RUb0JlU2lnbmVkPgorICA8L1RvQmVTaWduZWQ+CisgIDxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgIDxTaWduZWRJbmZvPgorICAgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSIiIC8+CisgICAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iIiAvPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA0L3htbGRzaWctZmlsdGVyMiI+CisgICAgICAgICAgICA8WFBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDQveG1sZHNpZy1maWx0ZXIyIiBGaWx0ZXI9ImludGVyc2VjdCI+CisgICAgICAgICAgICAgIC8vVG9CZVNpZ25lZAorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNC94bWxkc2lnLWZpbHRlcjIiPgorICAgICAgICAgICAgPFhQYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA0L3htbGRzaWctZmlsdGVyMiIgRmlsdGVyPSJzdWJ0cmFjdCI+CisgICAgICAgICAgICAgIC8vTm90VG9CZVNpZ25lZAorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNC94bWxkc2lnLWZpbHRlcjIiPgorICAgICAgICAgICAgPFhQYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA0L3htbGRzaWctZmlsdGVyMiIgRmlsdGVyPSJ1bmlvbiI+CisgICAgICAgICAgICAgIC8vUmVhbGx5VG9CZVNpZ25lZAorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWUgLz4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcigvKSI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA0L3htbGRzaWctZmlsdGVyMiI+CisgICAgICAgICAgICA8WFBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDQveG1sZHNpZy1maWx0ZXIyIiBGaWx0ZXI9ImludGVyc2VjdCI+CisgICAgICAgICAgICAgIC8vVG9CZVNpZ25lZAorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNC94bWxkc2lnLWZpbHRlcjIiPgorICAgICAgICAgICAgPFhQYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA0L3htbGRzaWctZmlsdGVyMiIgRmlsdGVyPSJzdWJ0cmFjdCI+CisgICAgICAgICAgICAgIC8vTm90VG9CZVNpZ25lZAorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNC94bWxkc2lnLWZpbHRlcjIiPgorICAgICAgICAgICAgPFhQYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA0L3htbGRzaWctZmlsdGVyMiIgRmlsdGVyPSJ1bmlvbiI+CisgICAgICAgICAgICAgIC8vUmVhbGx5VG9CZVNpZ25lZAorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUjV2l0aENvbW1lbnRzIiAvPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSIiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZSAvPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgPC9TaWduZWRJbmZvPgorICAgIDxTaWduYXR1cmVWYWx1ZSAvPgorICAgIDwhLS0ga2V5IGluZm8gLS0+CisgIDwvU2lnbmF0dXJlPgorPC9Eb2N1bWVudD4KZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWx0ZXIyLW9uZS9zaWduYXR1cmUueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpbHRlcjItb25lL3NpZ25hdHVyZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE1YWZjYgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWx0ZXIyLW9uZS9zaWduYXR1cmUueG1sCkBAIC0wLDAgKzEsMTQ2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPERvY3VtZW50PgorICA8VG9CZVNpZ25lZD4KKyAgICA8IS0tIGNvbW1lbnQgLS0+CisgICAgPERhdGEgLz4KKyAgICA8Tm90VG9CZVNpZ25lZD4KKyAgICAgIDxSZWFsbHlUb0JlU2lnbmVkPgorICAgICAgICA8IS0tIGNvbW1lbnQgLS0+CisgICAgICAgIDxEYXRhIC8+CisgICAgICA8L1JlYWxseVRvQmVTaWduZWQ+CisgICAgPC9Ob3RUb0JlU2lnbmVkPgorICA8L1RvQmVTaWduZWQ+CisgIDxUb0JlU2lnbmVkPgorICAgIDxEYXRhIC8+CisgICAgPE5vdFRvQmVTaWduZWQ+CisgICAgICA8RGF0YSAvPgorICAgIDwvTm90VG9CZVNpZ25lZD4KKyAgPC9Ub0JlU2lnbmVkPgorICA8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICA8U2lnbmVkSW5mbz4KKyAgICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiIC8+CisgICAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIiAvPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA0L3htbGRzaWctZmlsdGVyMiI+CisgICAgICAgICAgICA8WFBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDQveG1sZHNpZy1maWx0ZXIyIiBGaWx0ZXI9ImludGVyc2VjdCI+CisgICAgICAgICAgICAgIC8vVG9CZVNpZ25lZAorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNC94bWxkc2lnLWZpbHRlcjIiPgorICAgICAgICAgICAgPFhQYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA0L3htbGRzaWctZmlsdGVyMiIgRmlsdGVyPSJzdWJ0cmFjdCI+CisgICAgICAgICAgICAgIC8vTm90VG9CZVNpZ25lZAorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNC94bWxkc2lnLWZpbHRlcjIiPgorICAgICAgICAgICAgPFhQYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA0L3htbGRzaWctZmlsdGVyMiIgRmlsdGVyPSJ1bmlvbiI+CisgICAgICAgICAgICAgIC8vUmVhbGx5VG9CZVNpZ25lZAorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT5wNi9IYVlJZHhiRWRZWDgvOHpOZmpFRDRINVk9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcigvKSI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA0L3htbGRzaWctZmlsdGVyMiI+CisgICAgICAgICAgICA8WFBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDQveG1sZHNpZy1maWx0ZXIyIiBGaWx0ZXI9ImludGVyc2VjdCI+CisgICAgICAgICAgICAgIC8vVG9CZVNpZ25lZAorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNC94bWxkc2lnLWZpbHRlcjIiPgorICAgICAgICAgICAgPFhQYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA0L3htbGRzaWctZmlsdGVyMiIgRmlsdGVyPSJzdWJ0cmFjdCI+CisgICAgICAgICAgICAgIC8vTm90VG9CZVNpZ25lZAorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNC94bWxkc2lnLWZpbHRlcjIiPgorICAgICAgICAgICAgPFhQYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA0L3htbGRzaWctZmlsdGVyMiIgRmlsdGVyPSJ1bmlvbiI+CisgICAgICAgICAgICAgIC8vUmVhbGx5VG9CZVNpZ25lZAorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUjV2l0aENvbW1lbnRzIiAvPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPjBOclNRNGxkbUhQcUF0NHhlaXYxTFcrVmdJQT08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgPC9TaWduZWRJbmZvPgorICAgIDxTaWduYXR1cmVWYWx1ZT4KKyAgICAgIFRyZGdoMHJvdG5UMXBSTEE2OVlqTW1KVWZvQ0FVbmI5Z2o1SG1LVE5BNEQ2OUxLTU9vakhmZz09CisgICAgPC9TaWduYXR1cmVWYWx1ZT4KKyAgICA8S2V5SW5mbz4KKyAgICAgIDxLZXlWYWx1ZT4KKyAgICAgICAgPERTQUtleVZhbHVlPgorICAgICAgICAgIDxQPgorICAgICAgICAgICAgM2VPZUF2cW5FeUZwVyt1VFNncmRqN1lMamFUa3B5SGVjS0ZJb0x1OFFaTmtHVFFJMWNpSVRCSDBscWZJa2RDSAorICAgICAgICAgICAgU2k4ZmlVQzNEVHEzSjlGc0plZjRZVnRERjdKcFV2SFRPUXF0cTdaZ3g2S0M4V3hrejZyUUN4T3I3RjBBcE9ZaQorICAgICAgICAgICAgODl6TFJvZTRNa0RHZTZ1eDArV3R5T1RRb1ZJR05URERVRlhyVVFOYkxyRT0KKyAgICAgICAgICA8L1A+CisgICAgICAgICAgPFE+CisgICAgICAgICAgICBoRExjRkswR08vSHoxYXJ4T092c2dNL1ZMeVU9CisgICAgICAgICAgPC9RPgorICAgICAgICAgIDxHPgorICAgICAgICAgICAgbm54N2hiZFdvekdidG5GZ25iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzegorICAgICAgICAgICAgS3Q3ZGxFYVFMN2I1K0pUWnQzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTQorICAgICAgICAgICAgOGQycmhkMlVpMHhIYmswRDQ1MW5oTHhWV3VsdmlPU1BoektLdlhyYnlTQT0KKyAgICAgICAgICA8L0c+CisgICAgICAgICAgPFk+CisgICAgICAgICAgICBjZllwaWhwQVFlZXBiTkZTNE1BYlFSaGRYcERpNXdMcnd4RTVoSXZvWXFvMUw4QlFWdThmWTFURkFQdG9hZTFpCisgICAgICAgICAgICBCZy9HSUp5UDNpTGZ5dUJKYUR2SkpMUDMwd0JIOWkvczVKMzY1NlBldnBPVmRUZmk3NzdGaTlHajZ5L2liMlZ2CisgICAgICAgICAgICArT1pmSmtrcDRMNTArcDVUVWhQbVFMSnRSRXNndGwrdG5JT3lKVCsrRzlVPQorICAgICAgICAgIDwvWT4KKyAgICAgICAgPC9EU0FLZXlWYWx1ZT4KKyAgICAgIDwvS2V5VmFsdWU+CisgICAgICA8WDUwOURhdGE+CisgICAgICAgIDxYNTA5U3ViamVjdE5hbWU+CisgICAgICAgICAgQ049TWVybGluIEh1Z2hlcyxPVT1YL1NlY3VyZSxPPUJhbHRpbW9yZSBUZWNobm9sb2dpZXMgTHRkLixTVD1EdWJsaW4sQz1JRQorICAgICAgICA8L1g1MDlTdWJqZWN0TmFtZT4KKyAgICAgICAgPFg1MDlJc3N1ZXJTZXJpYWw+CisgICAgICAgICAgPFg1MDlJc3N1ZXJOYW1lPgorICAgICAgICAgICAgQ049VHJhbnNpZW50IENBLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlIFRlY2hub2xvZ2llcyBMdGQuLFNUPUR1YmxpbixDPUlFCisgICAgICAgICAgPC9YNTA5SXNzdWVyTmFtZT4KKyAgICAgICAgICA8WDUwOVNlcmlhbE51bWJlcj4xMDE3Nzg4MzcwMzQ4PC9YNTA5U2VyaWFsTnVtYmVyPgorICAgICAgICA8L1g1MDlJc3N1ZXJTZXJpYWw+CisgICAgICAgIDxYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgTUlJRFVEQ0NBeENnQXdJQkFnSUdBT3o0Nmcyc01Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CCisgICAgICAgICAgTUI0WERUQXlNRFF3TWpJeU5Ua3pNRm9YRFRFeU1EUXdNakl4TlRreU5Wb3diekVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVdNQlFHQTFVRUF4TU5UV1Z5YkdsdUlFaDFaMmhsCisgICAgICAgICAgY3pDQ0FiY3dnZ0VzQmdjcWhrak9PQVFCTUlJQkh3S0JnUURkNDU0QytxY1RJV2xiNjVOS0N0MlB0Z3VOcE9TbgorICAgICAgICAgIElkNXdvVWlndTd4QmsyUVpOQWpWeUloTUVmU1dwOGlSMElkS0x4K0pRTGNOT3JjbjBXd2w1L2hoVzBNWHNtbFMKKyAgICAgICAgICA4ZE01Q3EycnRtREhvb0x4YkdUUHF0QUxFNnZzWFFDazVpTHozTXRHaDdneVFNWjdxN0hUNWEzSTVOQ2hVZ1kxCisgICAgICAgICAgTU1OUVZldFJBMXN1c1FJVkFJUXkzQlN0Qmp2eDg5V3E4VGpyN0lEUDFTOGxBb0dCQUo1OGU0VzNWcU14bTdaeAorICAgICAgICAgIFlKMnhaNktYMFplMTBXbktaRHlVUm4rVDlpRklGYktSRkVsS0Rlb3RYd3dYd1lPTjh5cmUzWlJHa0MrMitmaVUKKyAgICAgICAgICAyYmR6SVdUVDZMTWJJTVZiayswN1A0T1pPeEo2WFdMOUd1WWNPUWNOdlg0MnhoMzREUEhkcTRYZGxJdE1SMjVOCisgICAgICAgICAgQStPZFo0UzhWVnJwYjRqa2o0Y3lpcjE2MjhrZ0E0R0VBQUtCZ0hIMktZb2FRRUhucVd6UlV1REFHMEVZWFY2UQorICAgICAgICAgIDR1Y0M2OE1ST1lTTDZHS3FOUy9BVUZidkgyTlV4UUQ3YUdudFlnWVB4aUNjajk0aTM4cmdTV2c3eVNTejk5TUEKKyAgICAgICAgICBSL1l2N09TZCt1ZWozcjZUbFhVMzR1Kyt4WXZSbytzdjRtOWxiL2ptWHlaSktlQytkUHFlVTFJVDVrQ3liVVJMCisgICAgICAgICAgSUxaZnJaeURzaVUvdmh2Vm96b3dPREFPQmdOVkhROEJBZjhFQkFNQ0I0QXdFUVlEVlIwT0JBb0VDSWF0WTdTRQorICAgICAgICAgIGxYRU9NQk1HQTFVZEl3UU1NQXFBQ0lPR1BrQjJNdUtUTUFrR0J5cUdTTTQ0QkFNREx3QXdMQUlVU3ZUMDJpUWoKKyAgICAgICAgICBRNWRhNFdwZTBCdnM3R3VDY1ZzQ0ZDRWNRcGJqVWZueFhGWE5XaUZ5UTQ5WnJXcW4KKyAgICAgICAgPC9YNTA5Q2VydGlmaWNhdGU+CisgICAgICAgIDxYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgTUlJRFN6Q0NBd3VnQXdJQkFnSUdBT3o0NmZ3Sk1Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CCisgICAgICAgICAgTUI0WERUQXlNRFF3TWpJeU5Ua3lOVm9YRFRFeU1EUXdNakl4TlRreU5Wb3diakVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CCisgICAgICAgICAgTUlJQnR6Q0NBU3dHQnlxR1NNNDRCQUV3Z2dFZkFvR0JBTjNqbmdMNnB4TWhhVnZyazBvSzNZKzJDNDJrNUtjaAorICAgICAgICAgIDNuQ2hTS0M3dkVHVFpCazBDTlhJaUV3UjlKYW55SkhRaDBvdkg0bEF0dzA2dHlmUmJDWG4rR0ZiUXhleWFWTHgKKyAgICAgICAgICAwemtLcmF1MllNZWlndkZzWk0rcTBBc1RxK3hkQUtUbUl2UGN5MGFIdURKQXhudXJzZFBscmNqazBLRlNCalV3CisgICAgICAgICAgdzFCVjYxRURXeTZ4QWhVQWhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VUNnWUVBbm54N2hiZFdvekdidG5GZworICAgICAgICAgIG5iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzekt0N2RsRWFRTDdiNStKVFoKKyAgICAgICAgICB0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ004ZDJyaGQyVWkweEhiazBECisgICAgICAgICAgNDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBRGdZUUFBb0dBZmFnK0hDQUJJSmFkREQ5QWFyaGdjMlFSM0xwNworICAgICAgICAgIFBwTU9oMGxBd0xpSXN2a080VWxiZU9TMElKQzhiY3FMak0xZlZ3NkZHU2F4bXErNHkxYWcybTlrNklkRTBRaDUKKyAgICAgICAgICBOeEIveEZrbWR3cVhGUklKVnA0NE9lVXlnQjQ3WUs3Nk5tVUlZRzNEZGZpUFBVM2Jxemp2dE90RVRpQ0h2bzI1CisgICAgICAgICAgNEQ2VWp3UHBZRXJYUlVhak5qQTBNQTRHQTFVZER3RUIvd1FFQXdJQ0JEQVBCZ05WSFJNRUNEQUdBUUgvQWdFQQorICAgICAgICAgIE1CRUdBMVVkRGdRS0JBaURoajVBZGpMaWt6QUpCZ2NxaGtqT09BUURBeThBTUN3Q0ZFTHUwbnV3ZXFXN1dmMHMKKyAgICAgICAgICBnay9DQUdHTDBCR0tBaFJOZGdRR3I1aXlaS29ING9xUG0wVko5VGpYTGc9PQorICAgICAgICA8L1g1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgIDwvWDUwOURhdGE+CisgICAgPC9LZXlJbmZvPgorICA8L1NpZ25hdHVyZT4KKzwvRG9jdW1lbnQ+CmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctc2l4dGVlbi9SZWFkbWUudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vUmVhZG1lLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTIyNWMxCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vUmVhZG1lLnR4dApAQCAtMCwwICsxLDIyIEBACitFeGFtcGxlIFNpZ25hdHVyZVsxXQorCitbMV0gaHR0cDovL3d3dy53My5vcmcvU2lnbmF0dXJlL0RyYWZ0cy94bWxkc2lnLWNvcmUvT3ZlcnZpZXcuaHRtbAorCitTZWUgc2lnbmF0dXJlLnhtbAorCitUaGlzIGluY2x1ZGVzIGludGVybmFsIGFuZCBleHRlcm5hbCBiYXNlIDY0LCByZWZlcmVuY2VzIG9mIHRoZSBmb3JtcworIiIsICIjeHBvaW50ZXIoLykiLCAiI2ZvbyIgYW5kICIjeHBvaW50ZXIoaWQoJ2ZvbycpKSIgKHdpdGggYW5kCit3aXRob3V0IGNvbW1lbnRzKSwgbWFuaWZlc3RzLCBzaWduYXR1cmUgcHJvcGVydGllcywgc2ltcGxlIHhwYXRoCit3aXRoIGhlcmUoKSwgeHNsdCwgcmV0cmlldmFsIG1ldGhvZCBhbmQgb2RkIGludGVycmVmZXJlbnRpYWwKK2RlcGVuZGVuY2llcy4KKworSW5jbHVkZWQgaW4gdGhlIGRpcmVjdG9yeSBhcmU6CisKKyAgc2lnbmF0dXJlLnhtbCAtIFRoZSBzaWduYXR1cmUgaXRzZWxmCisgIHNpZ25hdHVyZS50bXBsIC0gVGhlIHRlbXBsYXRlIGZyb20gd2hpY2ggdGhlIHNpZ25hdHVyZSB3YXMgY3JlYXRlZAorICBjMTRuLSoudHh0IC0gQWxsIGludGVybWVkaWF0ZSBjMTRuIG91dHB1dAorCitNZXJsaW4gSHVnaGVzIDxtZXJsaW5AYmFsdGltb3JlLmllPgorQmFsdGltb3JlIFRlY2hub2xvZ2llcywgTHRkLgorCitUdWVzZGF5LCBBcHJpbCAxMCwgMjAwMQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vYmFkLXNpZ25hdHVyZS54bWwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctc2l4dGVlbi9iYWQtc2lnbmF0dXJlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjdhYjVlCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vYmFkLXNpZ25hdHVyZS54bWwKQEAgLTAsMCArMSwyNDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgRW52ZWxvcGUgWworICA8IUVOVElUWSBkc2lnICJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgPCFFTlRJVFkgYzE0biAiaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiPgorICA8IUVOVElUWSB4cGF0aCAiaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICA8IUVOVElUWSB4c2x0ICJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14c2x0LTE5OTkxMTE2Ij4KKyAgPCFBVFRMSVNUIE5vdGFyaWVzIElkIElEICNJTVBMSUVEPgorXT4KKzwhLS0gUHJlYW1ibGUgLS0+Cis8RW52ZWxvcGUgeG1sbnM6Zm9vPSJodHRwOi8vd3d3LnVzcHMuZ292L2ZvbyIgeG1sbnM9Imh0dHA6Ly93d3cudXNwcy5nb3YvIj4KKyAgPERlYXJTaXI+Zm9vPC9EZWFyU2lyPgorICA8Qm9keT5iYXI8L0JvZHk+CisgIDxZb3Vyc1NpbmNlcmVseT4KKyAgICA8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiBJZD0ic2lnbmF0dXJlIj4KKyAgICAgIDxTaWduZWRJbmZvPgorICAgICAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPgorICAgICAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIiAvPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sLXN0eWxlc2hlZXQiPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+NjBOdlp2dGRUQis3VW5sTHAvSDI0cDdoNGJzPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iaHR0cDovL3htbGRzaWcucG90aG9sZS5jb20veG1sLXN0eWxlc2hlZXQudHh0Ij4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjYmFzZTY0IiAvPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPjYwTnZadnRkVEIrN1VubExwL0gyNHA3aDRicz08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0IiBVUkk9IiNvYmplY3QtMSI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgICAgc2VsZjo6dGV4dCgpCisgICAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT56eWpwOEdKT1g2OTk5MEtrcXc4aW9QWEdFeGs9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCIgVVJJPSIiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgICAgPFhQYXRoIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmRzaWc6U2lnbmVkSW5mbworICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6ZHNpZzpSZWZlcmVuY2UgfAorICAgICAgICAgICAgICAgICAgICAgIGhlcmUoKS9hbmNlc3Rvcjo6ZHNpZzpSZWZlcmVuY2VbMV0pICZndDsKKyAgICAgICAgICAgICAgICBjb3VudChhbmNlc3Rvci1vci1zZWxmOjpkc2lnOlJlZmVyZW5jZSkKKyAgICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpIHwKKyAgICAgICAgICAgICAgICAgICAgICBpZCgnbm90YXJpZXMnKSkgPQorICAgICAgICAgICAgICAgIGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkKKyAgICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPkRrUk5IS3VRZ0RpVHk5WEFBTUdieXlkZzNCST08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0IiBVUkk9IiNvYmplY3QtMiI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2Jhc2U2NCIgLz4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT56eWpwOEdKT1g2OTk5MEtrcXc4aW9QWEdFeGs9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI01hbmlmZXN0IiBVUkk9IiNtYW5pZmVzdC0xIj4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPlg5ZE1QTDBLZURaWGg5R0UzdkxjT3RQc1lqST08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjU2lnbmF0dXJlUHJvcGVydGllcyIgVVJJPSIjc2lnbmF0dXJlLXByb3BlcnRpZXMtMSI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT43dEhMWnJDMGtxT2hQQ2lZdS9XdXNnRzR0Qm89PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIiAvPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPnpiVlp5M3ljZzdDeUZjUHpOczBDNmJBM3Fpbz08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiIC8+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUjV2l0aENvbW1lbnRzIiAvPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPnpiVlp5M3ljZzdDeUZjUHpOczBDNmJBM3Fpbz08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcigvKSI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiIC8+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+emJWWnkzeWNnN0N5RmNQek5zMEM2YkEzcWlvPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKC8pIj4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIgLz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHMiIC8+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+YXIwLzdFUXlSZlVabXJQUGNUUUZkVkN0MlBZPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiIFVSST0iI29iamVjdC0zIj4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPjBhVzRMMEdvRnpZVW80Z3laU2ZveVpCaHB1Yz08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0IiBVUkk9IiNvYmplY3QtMyI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUjV2l0aENvbW1lbnRzIiAvPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPjBhVzRMMEdvRnpZVW80Z3laU2ZveVpCaHB1Yz08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0IiBVUkk9IiN4cG9pbnRlcihpZCgnb2JqZWN0LTMnKSkiPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+MGFXNEwwR29GellVbzRneVpTZm95WkJocHVjPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiIFVSST0iI3hwb2ludGVyKGlkKCdvYmplY3QtMycpKSI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUjV2l0aENvbW1lbnRzIiAvPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPjFwdVlXYjM2WjVUSURtRUlWZC9KTFIzaUQ4WT08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjUmVmZXJlbmNlIiBVUkk9IiNyZWZlcmVuY2UtMiI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5NTXRYTENzd2lFRHVyS01nZzJyK3ZCUGxrOFE9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgSWQ9InJlZmVyZW5jZS0xIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjUmVmZXJlbmNlIiBVUkk9IiNtYW5pZmVzdC1yZWZlcmVuY2UtMSI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT43ZUkvUDhtcHBna3FYcVcwK2F0MlVHajA2cXM9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgSWQ9InJlZmVyZW5jZS0yIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjUmVmZXJlbmNlIiBVUkk9IiNyZWZlcmVuY2UtMSI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5sL2JxSW91azZHczhlRWpHMFRhZDBNSkpnV3c9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8L1NpZ25lZEluZm8+CisgICAgICA8U2lnbmF0dXJlVmFsdWU+CisgICAgICAgIFNpTWI5c3U1NnNwbU1sTmpyV1dLZGtnajFoRGh2ZWFXQ3g1QndwajVBdUo2VDNaeTY4TkovQT09CisgICAgICA8L1NpZ25hdHVyZVZhbHVlPgorICAgICAgPEtleUluZm8+CisgICAgICAgIDxSZXRyaWV2YWxNZXRob2QgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI1g1MDlEYXRhIiBVUkk9IiNvYmplY3QtNCI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgICA8WFBhdGggeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6ZHNpZzpYNTA5RGF0YQorICAgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8L1JldHJpZXZhbE1ldGhvZD4KKyAgICAgIDwvS2V5SW5mbz4KKyAgICAgIDxPYmplY3QgSWQ9Im9iamVjdC0xIiBNaW1lVHlwZT0idGV4dC9wbGFpbiI+SSBhbSB0aGUgYmFkIHRleHQuPC9PYmplY3Q+CisgICAgICA8T2JqZWN0IEVuY29kaW5nPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjYmFzZTY0IiBJZD0ib2JqZWN0LTIiIE1pbWVUeXBlPSJ0ZXh0L3BsYWluIj5hQkFEU0lHTjwvT2JqZWN0PgorICAgICAgPE9iamVjdCBJZD0ib2JqZWN0LTMiPgorICAgICAgICA8Tm9uQ29tbWVudGFuZHVzIHhtbG5zPSIiPjwhLS0gQkFEIENvbW1lbnRhbmR1bSAtLT48L05vbkNvbW1lbnRhbmR1cz4KKyAgICAgIDwvT2JqZWN0PgorICAgICAgPE9iamVjdD4KKyAgICAgICAgPE1hbmlmZXN0IElkPSJtYW5pZmVzdC0xIj4KKyAgICAgICAgICA8UmVmZXJlbmNlIElkPSJtYW5pZmVzdC1yZWZlcmVuY2UtMSIgVVJJPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldCI+CisgICAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgICA8RGlnZXN0VmFsdWU+NjBOdlp2dGRUQis3VW5sTHAvSDI0cDdoNGJzPTwvRGlnZXN0VmFsdWU+CisgICAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjUmVmZXJlbmNlIiBVUkk9IiNyZWZlcmVuY2UtMSI+CisgICAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgICA8RGlnZXN0VmFsdWU+bC9icUlvdWs2R3M4ZUVqRzBUYWQwTUpKZ1d3PTwvRGlnZXN0VmFsdWU+CisgICAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiNub3RhcmllcyI+CisgICAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhzbHQtMTk5OTExMTYiPgorICAgICAgICAgICAgICAgIDx4c2w6c3R5bGVzaGVldCB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9zdHJpY3QiIGV4Y2x1ZGUtcmVzdWx0LXByZWZpeGVzPSJmb28iIHZlcnNpb249IjEuMCI+CisgICAgICAgICAgICAgICAgICA8eHNsOm91dHB1dCBlbmNvZGluZz0iVVRGLTgiIGluZGVudD0ibm8iIG1ldGhvZD0ieG1sIiAvPgorICAgICAgICAgICAgICAgICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iLyI+CisgICAgICAgICAgICAgICAgICAgIDxodG1sPgorICAgICAgICAgICAgICAgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRpdGxlPk5vdGFyaWVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICA8L2hlYWQ+CisgICAgICAgICAgICAgICAgICAgICAgPGJvZHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSJOb3Rhcmllcy9Ob3RhcnkiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9IkBuYW1lIiAvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8L3hzbDpmb3ItZWFjaD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgPC9ib2R5PgorICAgICAgICAgICAgICAgICAgICA8L2h0bWw+CisgICAgICAgICAgICAgICAgICA8L3hzbDp0ZW1wbGF0ZT4KKyAgICAgICAgICAgICAgICA8L3hzbDpzdHlsZXNoZWV0PgorICAgICAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPgorICAgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICAgICAgPERpZ2VzdFZhbHVlPmM3d3E1WEtvczZScU5WSnlGeTcvZmw2K3NBcz08L0RpZ2VzdFZhbHVlPgorICAgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8L01hbmlmZXN0PgorICAgICAgPC9PYmplY3Q+CisgICAgICA8T2JqZWN0PgorICAgICAgICA8U2lnbmF0dXJlUHJvcGVydGllcyBJZD0ic2lnbmF0dXJlLXByb3BlcnRpZXMtMSI+CisgICAgICAgICAgPFNpZ25hdHVyZVByb3BlcnR5IFRhcmdldD0iI3NpZ25hdHVyZSI+CisgICAgICAgICAgICA8U2lnbmVyQWRkcmVzcyB4bWxucz0idXJuOmRlbW8iPjxJUD4xOTIuMTY4LjIxLjEzODwvSVA+PC9TaWduZXJBZGRyZXNzPgorICAgICAgICAgIDwvU2lnbmF0dXJlUHJvcGVydHk+CisgICAgICAgIDwvU2lnbmF0dXJlUHJvcGVydGllcz4KKyAgICAgIDwvT2JqZWN0PgorICAgICAgPE9iamVjdCBJZD0ib2JqZWN0LTQiPgorICAgICAgICA8WDUwOURhdGE+CisgICAgICAgICAgPFg1MDlTdWJqZWN0TmFtZT4KKyAgICAgICAgICAgIENOPU1lcmxpbiBIdWdoZXMsTz1CYWx0aW1vcmUgVGVjaG5vbG9naWVzXCwgTHRkLixTVD1EdWJsaW4sQz1JRQorICAgICAgICAgIDwvWDUwOVN1YmplY3ROYW1lPgorICAgICAgICAgIDxYNTA5SXNzdWVyU2VyaWFsPgorICAgICAgICAgICAgPFg1MDlJc3N1ZXJOYW1lPgorICAgICAgICAgICAgICBDTj1UZXN0IERTQSBDQSxPPUJhbHRpbW9yZSBUZWNobm9sb2dpZXNcLCBMdGQuLFNUPUR1YmxpbixDPUlFCisgICAgICAgICAgICA8L1g1MDlJc3N1ZXJOYW1lPgorICAgICAgICAgICAgPFg1MDlTZXJpYWxOdW1iZXI+OTcwODQ5OTM2PC9YNTA5U2VyaWFsTnVtYmVyPgorICAgICAgICAgIDwvWDUwOUlzc3VlclNlcmlhbD4KKyAgICAgICAgICA8WDUwOUNlcnRpZmljYXRlPgorICAgICAgICAgICAgTUlJRE56Q0NBdldnQXdJQkFnSUVPZDMra0RBSkJnY3Foa2pPT0FRRE1Gc3hDekFKQmdOVkJBWVRBa2xGTVE4dworICAgICAgICAgICAgRFFZRFZRUUlFd1pFZFdKc2FXNHhKVEFqQmdOVkJBb1RIRUpoYkhScGJXOXlaU0JVWldOb2JtOXNiMmRwWlhNcworICAgICAgICAgICAgSUV4MFpDNHhGREFTQmdOVkJBTVRDMVJsYzNRZ1JGTkJJRU5CTUI0WERUQXdNVEF3TmpFMk16SXhOVm9YRFRBeAorICAgICAgICAgICAgTVRBd05qRTJNekl4TkZvd1hURUxNQWtHQTFVRUJoTUNTVVV4RHpBTkJnTlZCQWdUQmtSMVlteHBiakVsTUNNRworICAgICAgICAgICAgQTFVRUNoTWNRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsY3l3Z1RIUmtMakVXTUJRR0ExVUVBeE1OVFdWeQorICAgICAgICAgICAgYkdsdUlFaDFaMmhsY3pDQ0FiWXdnZ0VyQmdjcWhrak9PQVFCTUlJQkhnS0JnUURhSmpmRFRyYXdNSGY4TWlVdAorICAgICAgICAgICAgWTU0YjM3aFNtWU5uUjNLcEdUMTB1VTFEcXBwY2p1MDZ1TjBpR2JxZjk0N0Rqa0JDMjVoS25xeWtLMzF4QncwRQorICAgICAgICAgICAgQ1BiWXEvS0M5OGtnaGRmMnhKQ3U2QjhhcUo5NUs5amRWZmxKM1dQN1BReEpuK2ZtTTIzenk2SFlMWFZJQ3BmcQorICAgICAgICAgICAgZXRkTmovVkhDU2haRTNiZEppRTZWb2JTRlFJVkFQUWVjcVMyUGFURHByY1Fua3d4NE1IVFJYaHJBb0dBTXVHQQorICAgICAgICAgICAgbHFlQjFheCt2eU8yK09zdWJqaGw3cEh4THU0N1JJSCsvTTUyRGpFU0E5S01Tcnd6c1l4OHlOUjJXb29CeXJFMAorICAgICAgICAgICAgdDZmdTBWbmNLN1VLOG9sTzR0N3dwdjJ6NEFGUVBSVkNLRndvMHFnbjVhS0lrSUNHTWxyUnk4MWF2YjI3d0djVworICAgICAgICAgICAgb3RoeDNpUFBNdEZYdG9EcUswSkl0YUk5Ujh6YzFtc0ZoTTFHS01ZRGdZUUFBb0dBY3RBOFlHeHJ0bmdnL3pLVgorICAgICAgICAgICAgdnFFT2VmbndtVmlGenRjblBCWVBsSnN2aDZ5S0k0aURtNjhmbnA0TWkzUnJKNmJaQXlnRnJVSVFMeExqVitPSgorICAgICAgICAgICAgdGdKQUV0bzB4QXMrTWVodXExRGtTRkVwUDNvRHpDVE9zck9pUzFEd1FlNG9JYjd6VmsvOWw3YVB0Sk1IVzBMVgorICAgICAgICAgICAgbE1kd1pORk5OSm9xTWNUMlpmQ1ByZnZZdlEyalJ6QkZNQjRHQTFVZEVRUVhNQldCRTIxbGNteHBia0JpWVd4MAorICAgICAgICAgICAgYVcxdmNtVXVhV1V3RGdZRFZSMFBBUUgvQkFRREFnZUFNQk1HQTFVZEl3UU1NQXFBQ0VKWlFHMEt3UmJQTUFrRworICAgICAgICAgICAgQnlxR1NNNDRCQU1ETVFBd0xnSVZBSzRza1dFRllncmdnYUpBOHZZQXdTamcxMitLQWhVQXdIVG83d2Q0dEVOdworICAgICAgICAgICAgOUxBS1BrbFEvNzRmSDE4PQorICAgICAgICAgIDwvWDUwOUNlcnRpZmljYXRlPgorICAgICAgICA8L1g1MDlEYXRhPgorICAgICAgPC9PYmplY3Q+CisgICAgPC9TaWduYXR1cmU+CisgIDwvWW91cnNTaW5jZXJlbHk+CisgIDxQb3N0U2NyaXB0PmJhcjwvUG9zdFNjcmlwdD4KKyAgPE5vdGFyaWVzIHhtbG5zPSIiIElkPSJub3RhcmllcyI+CisgICAgPE5vdGFyeSBuYW1lPSJHcmVhdCwgQS4gVC4iIC8+CisgICAgPE5vdGFyeSBuYW1lPSJIdW4sIEEuIFQuIiAvPgorICA8L05vdGFyaWVzPgorICA8IS0tIENvbW1lbnRhcnkgLS0+Cis8L0VudmVsb3BlPgorPCEtLSBQb3N0YW1ibGUgLS0+CmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctc2l4dGVlbi9jMTRuLTAudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vYzE0bi0wLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTNkZTMzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vYzE0bi0wLnR4dApAQCAtMCwwICsxIEBACitJIGFtIHRoZSB0ZXh0LgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tMS50eHQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctc2l4dGVlbi9jMTRuLTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwYmE4NmQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctc2l4dGVlbi9jMTRuLTEudHh0CkBAIC0wLDAgKzEsNSBAQAorPFNpZ25hdHVyZVByb3BlcnRpZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmZvbz0iaHR0cDovL3d3dy51c3BzLmdvdi9mb28iIElkPSJzaWduYXR1cmUtcHJvcGVydGllcy0xIj4KKyAgICAgICAgICA8U2lnbmF0dXJlUHJvcGVydHkgVGFyZ2V0PSIjc2lnbmF0dXJlIj4KKyAgICAgICAgICAgIDxTaWduZXJBZGRyZXNzIHhtbG5zPSJ1cm46ZGVtbyI+PElQPjE5Mi4xNjguMjEuMTM4PC9JUD48L1NpZ25lckFkZHJlc3M+CisgICAgICAgICAgPC9TaWduYXR1cmVQcm9wZXJ0eT4KKyAgICAgICAgPC9TaWduYXR1cmVQcm9wZXJ0aWVzPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tMTAudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vYzE0bi0xMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJkNDY1MAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tMTAudHh0CkBAIC0wLDAgKzEsNCBAQAorPFJlZmVyZW5jZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6Zm9vPSJodHRwOi8vd3d3LnVzcHMuZ292L2ZvbyIgSWQ9InJlZmVyZW5jZS0xIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjUmVmZXJlbmNlIiBVUkk9IiNtYW5pZmVzdC1yZWZlcmVuY2UtMSI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+N2VJL1A4bXBwZ2txWHFXMCthdDJVR2owNnFzPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tMTEudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vYzE0bi0xMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFmZTJiNwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tMTEudHh0CkBAIC0wLDAgKzEsNDAgQEAKKzxNYW5pZmVzdCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6Zm9vPSJodHRwOi8vd3d3LnVzcHMuZ292L2ZvbyIgSWQ9Im1hbmlmZXN0LTEiPgorICAgICAgICAgIDxSZWZlcmVuY2UgSWQ9Im1hbmlmZXN0LXJlZmVyZW5jZS0xIiBVUkk9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1zdHlsZXNoZWV0Ij4KKyAgICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgICA8RGlnZXN0VmFsdWU+NjBOdlp2dGRUQis3VW5sTHAvSDI0cDdoNGJzPTwvRGlnZXN0VmFsdWU+CisgICAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjUmVmZXJlbmNlIiBVUkk9IiNyZWZlcmVuY2UtMSI+CisgICAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICAgICAgPERpZ2VzdFZhbHVlPmwvYnFJb3VrNkdzOGVFakcwVGFkME1KSmdXdz08L0RpZ2VzdFZhbHVlPgorICAgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIjbm90YXJpZXMiPgorICAgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14c2x0LTE5OTkxMTE2Ij4KKyAgICAgICAgICAgICAgICA8eHNsOnN0eWxlc2hlZXQgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9zdHJpY3QiIHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIiBleGNsdWRlLXJlc3VsdC1wcmVmaXhlcz0iZm9vIiB2ZXJzaW9uPSIxLjAiPgorICAgICAgICAgICAgICAgICAgPHhzbDpvdXRwdXQgZW5jb2Rpbmc9IlVURi04IiBpbmRlbnQ9Im5vIiBtZXRob2Q9InhtbCI+PC94c2w6b3V0cHV0PgorICAgICAgICAgICAgICAgICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iLyI+CisgICAgICAgICAgICAgICAgICAgIDxodG1sPgorICAgICAgICAgICAgICAgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRpdGxlPk5vdGFyaWVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICA8L2hlYWQ+CisgICAgICAgICAgICAgICAgICAgICAgPGJvZHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSJOb3Rhcmllcy9Ob3RhcnkiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9IkBuYW1lIj48L3hzbDp2YWx1ZS1vZj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPC94c2w6Zm9yLWVhY2g+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgIDwvYm9keT4KKyAgICAgICAgICAgICAgICAgICAgPC9odG1sPgorICAgICAgICAgICAgICAgICAgPC94c2w6dGVtcGxhdGU+CisgICAgICAgICAgICAgICAgPC94c2w6c3R5bGVzaGVldD4KKyAgICAgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI+PC9UcmFuc2Zvcm0+CisgICAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICAgICAgPERpZ2VzdFZhbHVlPmM3d3E1WEtvczZScU5WSnlGeTcvZmw2K3NBcz08L0RpZ2VzdFZhbHVlPgorICAgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8L01hbmlmZXN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tMTIudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vYzE0bi0xMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDlkYTgxNwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tMTIudHh0CkBAIC0wLDAgKzEsNCBAQAorPFJlZmVyZW5jZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6Zm9vPSJodHRwOi8vd3d3LnVzcHMuZ292L2ZvbyIgSWQ9InJlZmVyZW5jZS0yIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjUmVmZXJlbmNlIiBVUkk9IiNyZWZlcmVuY2UtMSI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+bC9icUlvdWs2R3M4ZUVqRzBUYWQwTUpKZ1d3PTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tMTMudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vYzE0bi0xMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBmMDk3MwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tMTMudHh0CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0gUHJlYW1ibGUgLS0+Cis8RW52ZWxvcGUgeG1sbnM9Imh0dHA6Ly93d3cudXNwcy5nb3YvIiB4bWxuczpmb289Imh0dHA6Ly93d3cudXNwcy5nb3YvZm9vIj4KKyAgPERlYXJTaXI+Zm9vPC9EZWFyU2lyPgorICA8Qm9keT5iYXI8L0JvZHk+CisgIDxZb3Vyc1NpbmNlcmVseT4KKyAgICAKKyAgPC9Zb3Vyc1NpbmNlcmVseT4KKyAgPFBvc3RTY3JpcHQ+YmFyPC9Qb3N0U2NyaXB0PgorICA8Tm90YXJpZXMgeG1sbnM9IiIgSWQ9Im5vdGFyaWVzIj4KKyAgICA8Tm90YXJ5IG5hbWU9IkdyZWF0LCBBLiBULiI+PC9Ob3Rhcnk+CisgICAgPE5vdGFyeSBuYW1lPSJIdW4sIEEuIFQuIj48L05vdGFyeT4KKyAgPC9Ob3Rhcmllcz4KKyAgPCEtLSBDb21tZW50YXJ5IC0tPgorPC9FbnZlbG9wZT4KKzwhLS0gUG9zdGFtYmxlIC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tMTQudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vYzE0bi0xNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVmOTVjZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tMTQudHh0CkBAIC0wLDAgKzEsMTMgQEAKKzxFbnZlbG9wZSB4bWxucz0iaHR0cDovL3d3dy51c3BzLmdvdi8iIHhtbG5zOmZvbz0iaHR0cDovL3d3dy51c3BzLmdvdi9mb28iPgorICA8RGVhclNpcj5mb288L0RlYXJTaXI+CisgIDxCb2R5PmJhcjwvQm9keT4KKyAgPFlvdXJzU2luY2VyZWx5PgorICAgIAorICA8L1lvdXJzU2luY2VyZWx5PgorICA8UG9zdFNjcmlwdD5iYXI8L1Bvc3RTY3JpcHQ+CisgIDxOb3RhcmllcyB4bWxucz0iIiBJZD0ibm90YXJpZXMiPgorICAgIDxOb3RhcnkgbmFtZT0iR3JlYXQsIEEuIFQuIj48L05vdGFyeT4KKyAgICA8Tm90YXJ5IG5hbWU9Ikh1biwgQS4gVC4iPjwvTm90YXJ5PgorICA8L05vdGFyaWVzPgorICAKKzwvRW52ZWxvcGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vYzE0bi0xNS50eHQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctc2l4dGVlbi9jMTRuLTE1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWY5NWNlCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vYzE0bi0xNS50eHQKQEAgLTAsMCArMSwxMyBAQAorPEVudmVsb3BlIHhtbG5zPSJodHRwOi8vd3d3LnVzcHMuZ292LyIgeG1sbnM6Zm9vPSJodHRwOi8vd3d3LnVzcHMuZ292L2ZvbyI+CisgIDxEZWFyU2lyPmZvbzwvRGVhclNpcj4KKyAgPEJvZHk+YmFyPC9Cb2R5PgorICA8WW91cnNTaW5jZXJlbHk+CisgICAgCisgIDwvWW91cnNTaW5jZXJlbHk+CisgIDxQb3N0U2NyaXB0PmJhcjwvUG9zdFNjcmlwdD4KKyAgPE5vdGFyaWVzIHhtbG5zPSIiIElkPSJub3RhcmllcyI+CisgICAgPE5vdGFyeSBuYW1lPSJHcmVhdCwgQS4gVC4iPjwvTm90YXJ5PgorICAgIDxOb3RhcnkgbmFtZT0iSHVuLCBBLiBULiI+PC9Ob3Rhcnk+CisgIDwvTm90YXJpZXM+CisgIAorPC9FbnZlbG9wZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctc2l4dGVlbi9jMTRuLTE2LnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tMTYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1Zjk1Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctc2l4dGVlbi9jMTRuLTE2LnR4dApAQCAtMCwwICsxLDEzIEBACis8RW52ZWxvcGUgeG1sbnM9Imh0dHA6Ly93d3cudXNwcy5nb3YvIiB4bWxuczpmb289Imh0dHA6Ly93d3cudXNwcy5nb3YvZm9vIj4KKyAgPERlYXJTaXI+Zm9vPC9EZWFyU2lyPgorICA8Qm9keT5iYXI8L0JvZHk+CisgIDxZb3Vyc1NpbmNlcmVseT4KKyAgICAKKyAgPC9Zb3Vyc1NpbmNlcmVseT4KKyAgPFBvc3RTY3JpcHQ+YmFyPC9Qb3N0U2NyaXB0PgorICA8Tm90YXJpZXMgeG1sbnM9IiIgSWQ9Im5vdGFyaWVzIj4KKyAgICA8Tm90YXJ5IG5hbWU9IkdyZWF0LCBBLiBULiI+PC9Ob3Rhcnk+CisgICAgPE5vdGFyeSBuYW1lPSJIdW4sIEEuIFQuIj48L05vdGFyeT4KKyAgPC9Ob3Rhcmllcz4KKyAgCis8L0VudmVsb3BlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tMTcudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vYzE0bi0xNy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDYzYmVjMgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tMTcudHh0CkBAIC0wLDAgKzEsMTA5IEBACis8U2lnbmVkSW5mbyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6Zm9vPSJodHRwOi8vd3d3LnVzcHMuZ292L2ZvbyI+CisgICAgICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiPjwvQ2Fub25pY2FsaXphdGlvbk1ldGhvZD4KKyAgICAgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSI+PC9TaWduYXR1cmVNZXRob2Q+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldCI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+NjBOdlp2dGRUQis3VW5sTHAvSDI0cDdoNGJzPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iaHR0cDovL3htbGRzaWcucG90aG9sZS5jb20veG1sLXN0eWxlc2hlZXQudHh0Ij4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjYmFzZTY0Ij48L1RyYW5zZm9ybT4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+NjBOdlp2dGRUQis3VW5sTHAvSDI0cDdoNGJzPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiIFVSST0iI29iamVjdC0xIj4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgICBzZWxmOjp0ZXh0KCkKKyAgICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT56eWpwOEdKT1g2OTk5MEtrcXc4aW9QWEdFeGs9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIAorICAgICAgICA8UmVmZXJlbmNlIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiIFVSST0iI29iamVjdC0yIj4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjYmFzZTY0Ij48L1RyYW5zZm9ybT4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+enlqcDhHSk9YNjk5OTBLa3F3OGlvUFhHRXhrPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNNYW5pZmVzdCIgVVJJPSIjbWFuaWZlc3QtMSI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+WDlkTVBMMEtlRFpYaDlHRTN2TGNPdFBzWWpJPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNTaWduYXR1cmVQcm9wZXJ0aWVzIiBVUkk9IiNzaWduYXR1cmUtcHJvcGVydGllcy0xIj4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT43dEhMWnJDMGtxT2hQQ2lZdS9XdXNnRzR0Qm89PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIj48L1RyYW5zZm9ybT4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+emJWWnkzeWNnN0N5RmNQek5zMEM2YkEzcWlvPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSI+PC9UcmFuc2Zvcm0+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUjV2l0aENvbW1lbnRzIj48L1RyYW5zZm9ybT4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+emJWWnkzeWNnN0N5RmNQek5zMEM2YkEzcWlvPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKC8pIj4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSI+PC9UcmFuc2Zvcm0+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPnpiVlp5M3ljZzdDeUZjUHpOczBDNmJBM3Fpbz08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcigvKSI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiPjwvVHJhbnNmb3JtPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1I1dpdGhDb21tZW50cyI+PC9UcmFuc2Zvcm0+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPmFyMC83RVF5UmZVWm1yUFBjVFFGZFZDdDJQWT08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0IiBVUkk9IiNvYmplY3QtMyI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+MGFXNEwwR29GellVbzRneVpTZm95WkJocHVjPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiIFVSST0iI29iamVjdC0zIj4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHMiPjwvVHJhbnNmb3JtPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT4wYVc0TDBHb0Z6WVVvNGd5WlNmb3laQmhwdWM9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCIgVVJJPSIjeHBvaW50ZXIoaWQoJ29iamVjdC0zJykpIj4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT4wYVc0TDBHb0Z6WVVvNGd5WlNmb3laQmhwdWM9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCIgVVJJPSIjeHBvaW50ZXIoaWQoJ29iamVjdC0zJykpIj4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHMiPjwvVHJhbnNmb3JtPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT4xcHVZV2IzNlo1VElEbUVJVmQvSkxSM2lEOFk9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI1JlZmVyZW5jZSIgVVJJPSIjcmVmZXJlbmNlLTIiPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPk1NdFhMQ3N3aUVEdXJLTWdnMnIrdkJQbGs4UT08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBJZD0icmVmZXJlbmNlLTEiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNSZWZlcmVuY2UiIFVSST0iI21hbmlmZXN0LXJlZmVyZW5jZS0xIj4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT43ZUkvUDhtcHBna3FYcVcwK2F0MlVHajA2cXM9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgSWQ9InJlZmVyZW5jZS0yIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjUmVmZXJlbmNlIiBVUkk9IiNyZWZlcmVuY2UtMSI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+bC9icUlvdWs2R3M4ZUVqRzBUYWQwTUpKZ1d3PTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPC9TaWduZWRJbmZvPjxOb3RhcmllcyB4bWxuczpmb289Imh0dHA6Ly93d3cudXNwcy5nb3YvZm9vIiBJZD0ibm90YXJpZXMiPgorICAgIDxOb3RhcnkgbmFtZT0iR3JlYXQsIEEuIFQuIj48L05vdGFyeT4KKyAgICA8Tm90YXJ5IG5hbWU9Ikh1biwgQS4gVC4iPjwvTm90YXJ5PgorICA8L05vdGFyaWVzPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tMTgudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vYzE0bi0xOC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJhZjVkNwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tMTgudHh0CkBAIC0wLDAgKzEsMTI0IEBACis8U2lnbmVkSW5mbyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6Zm9vPSJodHRwOi8vd3d3LnVzcHMuZ292L2ZvbyI+CisgICAgICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiPjwvQ2Fub25pY2FsaXphdGlvbk1ldGhvZD4KKyAgICAgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSI+PC9TaWduYXR1cmVNZXRob2Q+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldCI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+NjBOdlp2dGRUQis3VW5sTHAvSDI0cDdoNGJzPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iaHR0cDovL3htbGRzaWcucG90aG9sZS5jb20veG1sLXN0eWxlc2hlZXQudHh0Ij4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjYmFzZTY0Ij48L1RyYW5zZm9ybT4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+NjBOdlp2dGRUQis3VW5sTHAvSDI0cDdoNGJzPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiIFVSST0iI29iamVjdC0xIj4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgICBzZWxmOjp0ZXh0KCkKKyAgICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT56eWpwOEdKT1g2OTk5MEtrcXc4aW9QWEdFeGs9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCIgVVJJPSIiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgICAgPFhQYXRoIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmRzaWc6U2lnbmVkSW5mbworICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6ZHNpZzpSZWZlcmVuY2UgfAorICAgICAgICAgICAgICAgICAgICAgIGhlcmUoKS9hbmNlc3Rvcjo6ZHNpZzpSZWZlcmVuY2VbMV0pICZndDsKKyAgICAgICAgICAgICAgICBjb3VudChhbmNlc3Rvci1vci1zZWxmOjpkc2lnOlJlZmVyZW5jZSkKKyAgICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpIHwKKyAgICAgICAgICAgICAgICAgICAgICBpZCgnbm90YXJpZXMnKSkgPQorICAgICAgICAgICAgICAgIGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkKKyAgICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5Ea1JOSEt1UWdEaVR5OVhBQU1HYnl5ZGczQkk9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCIgVVJJPSIjb2JqZWN0LTIiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNiYXNlNjQiPjwvVHJhbnNmb3JtPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT56eWpwOEdKT1g2OTk5MEtrcXc4aW9QWEdFeGs9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI01hbmlmZXN0IiBVUkk9IiNtYW5pZmVzdC0xIj4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5YOWRNUEwwS2VEWlhoOUdFM3ZMY090UHNZakk9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI1NpZ25hdHVyZVByb3BlcnRpZXMiIFVSST0iI3NpZ25hdHVyZS1wcm9wZXJ0aWVzLTEiPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPjd0SExackMwa3FPaFBDaVl1L1d1c2dHNHRCbz08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiPjwvVHJhbnNmb3JtPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT56YlZaeTN5Y2c3Q3lGY1B6TnMwQzZiQTNxaW89PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIj48L1RyYW5zZm9ybT4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHMiPjwvVHJhbnNmb3JtPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT56YlZaeTN5Y2c3Q3lGY1B6TnMwQzZiQTNxaW89PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoLykiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIj48L1RyYW5zZm9ybT4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+emJWWnkzeWNnN0N5RmNQek5zMEM2YkEzcWlvPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKC8pIj4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSI+PC9UcmFuc2Zvcm0+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUjV2l0aENvbW1lbnRzIj48L1RyYW5zZm9ybT4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+YXIwLzdFUXlSZlVabXJQUGNUUUZkVkN0MlBZPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiIFVSST0iI29iamVjdC0zIj4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT4wYVc0TDBHb0Z6WVVvNGd5WlNmb3laQmhwdWM9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCIgVVJJPSIjb2JqZWN0LTMiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1I1dpdGhDb21tZW50cyI+PC9UcmFuc2Zvcm0+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPjBhVzRMMEdvRnpZVW80Z3laU2ZveVpCaHB1Yz08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0IiBVUkk9IiN4cG9pbnRlcihpZCgnb2JqZWN0LTMnKSkiPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPjBhVzRMMEdvRnpZVW80Z3laU2ZveVpCaHB1Yz08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0IiBVUkk9IiN4cG9pbnRlcihpZCgnb2JqZWN0LTMnKSkiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1I1dpdGhDb21tZW50cyI+PC9UcmFuc2Zvcm0+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPjFwdVlXYjM2WjVUSURtRUlWZC9KTFIzaUQ4WT08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjUmVmZXJlbmNlIiBVUkk9IiNyZWZlcmVuY2UtMiI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+TU10WExDc3dpRUR1cktNZ2cycit2QlBsazhRPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIElkPSJyZWZlcmVuY2UtMSIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI1JlZmVyZW5jZSIgVVJJPSIjbWFuaWZlc3QtcmVmZXJlbmNlLTEiPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPjdlSS9QOG1wcGdrcVhxVzArYXQyVUdqMDZxcz08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBJZD0icmVmZXJlbmNlLTIiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNSZWZlcmVuY2UiIFVSST0iI3JlZmVyZW5jZS0xIj4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5sL2JxSW91azZHczhlRWpHMFRhZDBNSkpnV3c9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8L1NpZ25lZEluZm8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vYzE0bi0yLnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM2NTJhZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tMi50eHQKQEAgLTAsMCArMSwzIEBACis8T2JqZWN0IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczpmb289Imh0dHA6Ly93d3cudXNwcy5nb3YvZm9vIiBJZD0ib2JqZWN0LTMiPgorICAgICAgICA8Tm9uQ29tbWVudGFuZHVzIHhtbG5zPSIiPjwvTm9uQ29tbWVudGFuZHVzPgorICAgICAgPC9PYmplY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vYzE0bi0zLnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM2NTJhZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tMy50eHQKQEAgLTAsMCArMSwzIEBACis8T2JqZWN0IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczpmb289Imh0dHA6Ly93d3cudXNwcy5nb3YvZm9vIiBJZD0ib2JqZWN0LTMiPgorICAgICAgICA8Tm9uQ29tbWVudGFuZHVzIHhtbG5zPSIiPjwvTm9uQ29tbWVudGFuZHVzPgorICAgICAgPC9PYmplY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vYzE0bi00LnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM2NTJhZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tNC50eHQKQEAgLTAsMCArMSwzIEBACis8T2JqZWN0IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczpmb289Imh0dHA6Ly93d3cudXNwcy5nb3YvZm9vIiBJZD0ib2JqZWN0LTMiPgorICAgICAgICA8Tm9uQ29tbWVudGFuZHVzIHhtbG5zPSIiPjwvTm9uQ29tbWVudGFuZHVzPgorICAgICAgPC9PYmplY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vYzE0bi01LnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tNS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg0YmU4ZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tNS50eHQKQEAgLTAsMCArMSwzIEBACis8T2JqZWN0IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczpmb289Imh0dHA6Ly93d3cudXNwcy5nb3YvZm9vIiBJZD0ib2JqZWN0LTMiPgorICAgICAgICA8Tm9uQ29tbWVudGFuZHVzIHhtbG5zPSIiPjwhLS0gQ29tbWVudGFuZHVtIC0tPjwvTm9uQ29tbWVudGFuZHVzPgorICAgICAgPC9PYmplY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vYzE0bi02LnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tNi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM0ZWE2NQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tNi50eHQKQEAgLTAsMCArMSw0IEBACis8UmVmZXJlbmNlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczpmb289Imh0dHA6Ly93d3cudXNwcy5nb3YvZm9vIiBJZD0ibWFuaWZlc3QtcmVmZXJlbmNlLTEiIFVSST0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sLXN0eWxlc2hlZXQiPgorICAgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICAgIDxEaWdlc3RWYWx1ZT42ME52WnZ0ZFRCKzdVbmxMcC9IMjRwN2g0YnM9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgICA8L1JlZmVyZW5jZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctc2l4dGVlbi9jMTRuLTcudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vYzE0bi03LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWY2MDdiCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vYzE0bi03LnR4dApAQCAtMCwwICsxLDQgQEAKKzxOb3RhcmllcyB4bWxuczpmb289Imh0dHA6Ly93d3cudXNwcy5nb3YvZm9vIiBJZD0ibm90YXJpZXMiPgorICAgIDxOb3RhcnkgbmFtZT0iR3JlYXQsIEEuIFQuIj48L05vdGFyeT4KKyAgICA8Tm90YXJ5IG5hbWU9Ikh1biwgQS4gVC4iPjwvTm90YXJ5PgorICA8L05vdGFyaWVzPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL2MxNG4tOC50eHQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctc2l4dGVlbi9jMTRuLTgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNTJmNjYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctc2l4dGVlbi9jMTRuLTgudHh0CkBAIC0wLDAgKzEgQEAKKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvc3RyaWN0Ij48aGVhZD48dGl0bGU+Tm90YXJpZXM8L3RpdGxlPjwvaGVhZD48Ym9keT48dGFibGU+PHRyPjx0aD5HcmVhdCwgQS4gVC48L3RoPjwvdHI+PHRyPjx0aD5IdW4sIEEuIFQuPC90aD48L3RyPjwvdGFibGU+PC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctc2l4dGVlbi9jMTRuLTkudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vYzE0bi05LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmQ0NjUwCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vYzE0bi05LnR4dApAQCAtMCwwICsxLDQgQEAKKzxSZWZlcmVuY2UgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmZvbz0iaHR0cDovL3d3dy51c3BzLmdvdi9mb28iIElkPSJyZWZlcmVuY2UtMSIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI1JlZmVyZW5jZSIgVVJJPSIjbWFuaWZlc3QtcmVmZXJlbmNlLTEiPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPjdlSS9QOG1wcGdrcVhxVzArYXQyVUdqMDZxcz08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctc2l4dGVlbi9zaWduYXR1cmUudG1wbCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL3NpZ25hdHVyZS50bXBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwNWJjN2YKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctc2l4dGVlbi9zaWduYXR1cmUudG1wbApAQCAtMCwwICsxLDI0NSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8IURPQ1RZUEUgZW52ZWxvcGUgWworICA8IUVOVElUWSBkc2lnICJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgPCFFTlRJVFkgYzE0biAiaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiPgorICA8IUVOVElUWSB4cGF0aCAiaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICA8IUVOVElUWSB4c2x0ICJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14c2x0LTE5OTkxMTE2Ij4KKyAgPCFBVFRMSVNUIE5vdGFyaWVzIElkIElEICNJTVBMSUVEPgorXT4KKzwhLS0gUHJlYW1ibGUgLS0+Cis8RW52ZWxvcGUgeG1sbnM9Imh0dHA6Ly93d3cudXNwcy5nb3YvIiB4bWxuczpmb289Imh0dHA6Ly93d3cudXNwcy5nb3YvZm9vIj4KKyAgPERlYXJTaXI+Zm9vPC9EZWFyU2lyPgorICA8Qm9keT5iYXI8L0JvZHk+CisgIDxZb3Vyc1NpbmNlcmVseT4KKyAgICA8U2lnbmF0dXJlIElkPSJzaWduYXR1cmUiIHhtbG5zPSImZHNpZzsiPgorICAgICAgPFNpZ25lZEluZm8+CisgICAgICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iIiAvPgorICAgICAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iIiAvPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sLXN0eWxlc2hlZXQiPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSIiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPmFhYWE8L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBVUkk9Imh0dHA6Ly94bWxkc2lnLnBvdGhvbGUuY29tL3htbC1zdHlsZXNoZWV0LnR4dCI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iJmRzaWc7YmFzZTY0IiAvPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5hYWFhPC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0LTEiIFR5cGU9IiZkc2lnO09iamVjdCI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iJnhwYXRoOyI+CisgICAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgICBzZWxmOjp0ZXh0KCkKKyAgICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5hYWFhPC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIiIFR5cGU9IiZkc2lnO09iamVjdCI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iJnhwYXRoOyI+CisgICAgICAgICAgICAgIDxYUGF0aCB4bWxuczpkc2lnPSImZHNpZzsiPgorICAgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmRzaWc6U2lnbmVkSW5mbworICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6ZHNpZzpSZWZlcmVuY2UgfAorICAgICAgICAgICAgICAgICAgICAgIGhlcmUoKS9hbmNlc3Rvcjo6ZHNpZzpSZWZlcmVuY2VbMV0pICZndDsKKyAgICAgICAgICAgICAgICBjb3VudChhbmNlc3Rvci1vci1zZWxmOjpkc2lnOlJlZmVyZW5jZSkKKyAgICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpIHwKKyAgICAgICAgICAgICAgICAgICAgICBpZCgnbm90YXJpZXMnKSkgPQorICAgICAgICAgICAgICAgIGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkKKyAgICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5hYWFhPC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0LTIiIFR5cGU9IiZkc2lnO09iamVjdCI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iJmRzaWc7YmFzZTY0IiAvPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5hYWFhPC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIjbWFuaWZlc3QtMSIgVHlwZT0iJmRzaWc7TWFuaWZlc3QiPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSIiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPmFhYWE8L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiNzaWduYXR1cmUtcHJvcGVydGllcy0xIiBUeXBlPSImZHNpZztTaWduYXR1cmVQcm9wZXJ0aWVzIj4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5hYWFhPC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09IiZkc2lnO2VudmVsb3BlZC1zaWduYXR1cmUiIC8+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSIiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPmFhYWE8L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iJmRzaWc7ZW52ZWxvcGVkLXNpZ25hdHVyZSIgLz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSImYzE0bjsjV2l0aENvbW1lbnRzIiAvPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5hYWFhPC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoLykiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09IiZkc2lnO2VudmVsb3BlZC1zaWduYXR1cmUiIC8+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSIiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPmFhYWE8L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcigvKSI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iJmRzaWc7ZW52ZWxvcGVkLXNpZ25hdHVyZSIgLz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSImYzE0bjsjV2l0aENvbW1lbnRzIiAvPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5hYWFhPC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0LTMiIFR5cGU9IiZkc2lnO09iamVjdCI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09IiIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+YWFhYTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iI29iamVjdC0zIiBUeXBlPSImZHNpZztPYmplY3QiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09IiZjMTRuOyNXaXRoQ29tbWVudHMiIC8+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSIiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPmFhYWE8L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcihpZCgnb2JqZWN0LTMnKSkiIFR5cGU9IiZkc2lnO09iamVjdCI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09IiIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+YWFhYTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKGlkKCdvYmplY3QtMycpKSIgVHlwZT0iJmRzaWc7T2JqZWN0Ij4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSImYzE0bjsjV2l0aENvbW1lbnRzIiAvPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5hYWFhPC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIjcmVmZXJlbmNlLTIiIFR5cGU9IiZkc2lnO1JlZmVyZW5jZSI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09IiIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+YWFhYTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIElkPSJyZWZlcmVuY2UtMSIgVVJJPSIjbWFuaWZlc3QtcmVmZXJlbmNlLTEiIFR5cGU9IiZkc2lnO1JlZmVyZW5jZSI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09IiIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+YWFhYTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIElkPSJyZWZlcmVuY2UtMiIgVVJJPSIjcmVmZXJlbmNlLTEiIFR5cGU9IiZkc2lnO1JlZmVyZW5jZSI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09IiIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+YWFhYTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPC9TaWduZWRJbmZvPgorICAgICAgPFNpZ25hdHVyZVZhbHVlPmFhYWE8L1NpZ25hdHVyZVZhbHVlPgorICAgICAgPEtleUluZm8+CisgICAgICAgIDxSZXRyaWV2YWxNZXRob2QgVVJJPSIjb2JqZWN0LTQiIFR5cGU9IiZkc2lnO1g1MDlEYXRhIj4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSImeHBhdGg7Ij4KKyAgICAgICAgICAgICAgPFhQYXRoIHhtbG5zOmRzaWc9IiZkc2lnOyI+CisgICAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6ZHNpZzpYNTA5RGF0YQorICAgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8L1JldHJpZXZhbE1ldGhvZD4KKyAgICAgIDwvS2V5SW5mbz4KKyAgICAgIDxPYmplY3QgSWQ9Im9iamVjdC0xIiBNaW1lVHlwZT0idGV4dC9wbGFpbiI+SSBhbSB0aGUgdGV4dC48L09iamVjdD4KKyAgICAgIDxPYmplY3QgSWQ9Im9iamVjdC0yIiBNaW1lVHlwZT0idGV4dC9wbGFpbiIgRW5jb2Rpbmc9IiZkc2lnO2Jhc2U2NCI+U1NCaGJTQjBhR1VnZEdWNGRDND08L09iamVjdD4KKyAgICAgIDxPYmplY3QgSWQ9Im9iamVjdC0zIj48Tm9uQ29tbWVudGFuZHVzIHhtbG5zPSIiPjwhLS0gQ29tbWVudGFuZHVtIC0tPjwvTm9uQ29tbWVudGFuZHVzPjwvT2JqZWN0PgorICAgICAgPE9iamVjdD4KKyAgICAgICAgPE1hbmlmZXN0IElkPSJtYW5pZmVzdC0xIj4KKyAgICAgICAgICA8UmVmZXJlbmNlIElkPSJtYW5pZmVzdC1yZWZlcmVuY2UtMSIgVVJJPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldCI+CisgICAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iIiAvPgorICAgICAgICAgICAgPERpZ2VzdFZhbHVlPmFhYWE8L0RpZ2VzdFZhbHVlPgorICAgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIjcmVmZXJlbmNlLTEiIFR5cGU9IiZkc2lnO1JlZmVyZW5jZSI+CisgICAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iIiAvPgorICAgICAgICAgICAgPERpZ2VzdFZhbHVlPmFhYWE8L0RpZ2VzdFZhbHVlPgorICAgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIjbm90YXJpZXMiPgorICAgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSImeHNsdDsiPgorICAgICAgICAgICAgICAgIDx4c2w6c3R5bGVzaGVldCB2ZXJzaW9uPSIxLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvc3RyaWN0IiB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSIgZXhjbHVkZS1yZXN1bHQtcHJlZml4ZXM9ImZvbyI+CisgICAgICAgICAgICAgICAgICA8eHNsOm91dHB1dCBtZXRob2Q9InhtbCIgaW5kZW50PSJubyIgZW5jb2Rpbmc9IlVURi04Ii8+CisgICAgICAgICAgICAgICAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSIvIj4KKyAgICAgICAgICAgICAgICAgICAgPGh0bWw+CisgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGl0bGU+Tm90YXJpZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICAgIDwvaGVhZD4KKyAgICAgICAgICAgICAgICAgICAgICA8Ym9keT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDpmb3ItZWFjaCBzZWxlY3Q9Ik5vdGFyaWVzL05vdGFyeSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iQG5hbWUiLz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPC94c2w6Zm9yLWVhY2g+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgIDwvYm9keT4KKyAgICAgICAgICAgICAgICAgICAgPC9odG1sPgorICAgICAgICAgICAgICAgICAgPC94c2w6dGVtcGxhdGU+CisgICAgICAgICAgICAgICAgPC94c2w6c3R5bGVzaGVldD4KKyAgICAgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSImYzE0bjsiIC8+CisgICAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iIiAvPgorICAgICAgICAgICAgPERpZ2VzdFZhbHVlPmFhYWE8L0RpZ2VzdFZhbHVlPgorICAgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8L01hbmlmZXN0PgorICAgICAgPC9PYmplY3Q+CisgICAgICA8T2JqZWN0PgorICAgICAgICA8U2lnbmF0dXJlUHJvcGVydGllcyBJZD0ic2lnbmF0dXJlLXByb3BlcnRpZXMtMSI+CisgICAgICAgICAgPFNpZ25hdHVyZVByb3BlcnR5IFRhcmdldD0iI3NpZ25hdHVyZSI+CisgICAgICAgICAgICA8U2lnbmVyQWRkcmVzcyB4bWxucz0idXJuOmRlbW8iPjxJUD4xOTIuMTY4LjIxLjEzODwvSVA+PC9TaWduZXJBZGRyZXNzPgorICAgICAgICAgIDwvU2lnbmF0dXJlUHJvcGVydHk+CisgICAgICAgIDwvU2lnbmF0dXJlUHJvcGVydGllcz4KKyAgICAgIDwvT2JqZWN0PgorICAgICAgPE9iamVjdCBJZD0ib2JqZWN0LTQiPgorICAgICAgICA8WDUwOURhdGE+CisgICAgICAgICAgPFg1MDlTdWJqZWN0TmFtZT4KKyAgICAgICAgICAgIENOPU1lcmxpbiBIdWdoZXMsTz1CYWx0aW1vcmUgVGVjaG5vbG9naWVzXCwgTHRkLixTVD1EdWJsaW4sQz1JRQorICAgICAgICAgIDwvWDUwOVN1YmplY3ROYW1lPgorICAgICAgICAgIDxYNTA5SXNzdWVyU2VyaWFsPgorICAgICAgICAgICAgPFg1MDlJc3N1ZXJOYW1lPgorICAgICAgICAgICAgICBDTj1UZXN0IERTQSBDQSxPPUJhbHRpbW9yZSBUZWNobm9sb2dpZXNcLCBMdGQuLFNUPUR1YmxpbixDPUlFCisgICAgICAgICAgICA8L1g1MDlJc3N1ZXJOYW1lPgorICAgICAgICAgICAgPFg1MDlTZXJpYWxOdW1iZXI+OTcwODQ5OTM2PC9YNTA5U2VyaWFsTnVtYmVyPgorICAgICAgICAgIDwvWDUwOUlzc3VlclNlcmlhbD4KKyAgICAgICAgICA8WDUwOUNlcnRpZmljYXRlPgorICAgICAgICAgICAgTUlJRE56Q0NBdldnQXdJQkFnSUVPZDMra0RBSkJnY3Foa2pPT0FRRE1Gc3hDekFKQmdOVkJBWVRBa2xGTVE4dworICAgICAgICAgICAgRFFZRFZRUUlFd1pFZFdKc2FXNHhKVEFqQmdOVkJBb1RIRUpoYkhScGJXOXlaU0JVWldOb2JtOXNiMmRwWlhNcworICAgICAgICAgICAgSUV4MFpDNHhGREFTQmdOVkJBTVRDMVJsYzNRZ1JGTkJJRU5CTUI0WERUQXdNVEF3TmpFMk16SXhOVm9YRFRBeAorICAgICAgICAgICAgTVRBd05qRTJNekl4TkZvd1hURUxNQWtHQTFVRUJoTUNTVVV4RHpBTkJnTlZCQWdUQmtSMVlteHBiakVsTUNNRworICAgICAgICAgICAgQTFVRUNoTWNRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsY3l3Z1RIUmtMakVXTUJRR0ExVUVBeE1OVFdWeQorICAgICAgICAgICAgYkdsdUlFaDFaMmhsY3pDQ0FiWXdnZ0VyQmdjcWhrak9PQVFCTUlJQkhnS0JnUURhSmpmRFRyYXdNSGY4TWlVdAorICAgICAgICAgICAgWTU0YjM3aFNtWU5uUjNLcEdUMTB1VTFEcXBwY2p1MDZ1TjBpR2JxZjk0N0Rqa0JDMjVoS25xeWtLMzF4QncwRQorICAgICAgICAgICAgQ1BiWXEvS0M5OGtnaGRmMnhKQ3U2QjhhcUo5NUs5amRWZmxKM1dQN1BReEpuK2ZtTTIzenk2SFlMWFZJQ3BmcQorICAgICAgICAgICAgZXRkTmovVkhDU2haRTNiZEppRTZWb2JTRlFJVkFQUWVjcVMyUGFURHByY1Fua3d4NE1IVFJYaHJBb0dBTXVHQQorICAgICAgICAgICAgbHFlQjFheCt2eU8yK09zdWJqaGw3cEh4THU0N1JJSCsvTTUyRGpFU0E5S01Tcnd6c1l4OHlOUjJXb29CeXJFMAorICAgICAgICAgICAgdDZmdTBWbmNLN1VLOG9sTzR0N3dwdjJ6NEFGUVBSVkNLRndvMHFnbjVhS0lrSUNHTWxyUnk4MWF2YjI3d0djVworICAgICAgICAgICAgb3RoeDNpUFBNdEZYdG9EcUswSkl0YUk5Ujh6YzFtc0ZoTTFHS01ZRGdZUUFBb0dBY3RBOFlHeHJ0bmdnL3pLVgorICAgICAgICAgICAgdnFFT2VmbndtVmlGenRjblBCWVBsSnN2aDZ5S0k0aURtNjhmbnA0TWkzUnJKNmJaQXlnRnJVSVFMeExqVitPSgorICAgICAgICAgICAgdGdKQUV0bzB4QXMrTWVodXExRGtTRkVwUDNvRHpDVE9zck9pUzFEd1FlNG9JYjd6VmsvOWw3YVB0Sk1IVzBMVgorICAgICAgICAgICAgbE1kd1pORk5OSm9xTWNUMlpmQ1ByZnZZdlEyalJ6QkZNQjRHQTFVZEVRUVhNQldCRTIxbGNteHBia0JpWVd4MAorICAgICAgICAgICAgYVcxdmNtVXVhV1V3RGdZRFZSMFBBUUgvQkFRREFnZUFNQk1HQTFVZEl3UU1NQXFBQ0VKWlFHMEt3UmJQTUFrRworICAgICAgICAgICAgQnlxR1NNNDRCQU1ETVFBd0xnSVZBSzRza1dFRllncmdnYUpBOHZZQXdTamcxMitLQWhVQXdIVG83d2Q0dEVOdworICAgICAgICAgICAgOUxBS1BrbFEvNzRmSDE4PQorICAgICAgICAgIDwvWDUwOUNlcnRpZmljYXRlPgorICAgICAgICA8L1g1MDlEYXRhPgorICAgICAgPC9PYmplY3Q+CisgICAgPC9TaWduYXR1cmU+CisgIDwvWW91cnNTaW5jZXJlbHk+CisgIDxQb3N0U2NyaXB0PmJhcjwvUG9zdFNjcmlwdD4KKyAgPE5vdGFyaWVzIElkPSJub3RhcmllcyIgeG1sbnM9IiI+CisgICAgPE5vdGFyeSBuYW1lPSJHcmVhdCwgQS4gVC4iIC8+CisgICAgPE5vdGFyeSBuYW1lPSJIdW4sIEEuIFQuIiAvPgorICA8L05vdGFyaWVzPgorICA8IS0tIENvbW1lbnRhcnkgLS0+Cis8L0VudmVsb3BlPgorPCEtLSBQb3N0YW1ibGUgLS0+CmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctc2l4dGVlbi9zaWduYXR1cmUueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vc2lnbmF0dXJlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2YyNzdkCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXNpeHRlZW4vc2lnbmF0dXJlLnhtbApAQCAtMCwwICsxLDI0OSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBFbnZlbG9wZSBbCisgIDwhRU5USVRZIGRzaWcgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICA8IUVOVElUWSBjMTRuICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI+CisgIDwhRU5USVRZIHhwYXRoICJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgIDwhRU5USVRZIHhzbHQgImh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhzbHQtMTk5OTExMTYiPgorICA8IUFUVExJU1QgTm90YXJpZXMgSWQgSUQgI0lNUExJRUQ+CitdPgorPCEtLSBQcmVhbWJsZSAtLT4KKzxFbnZlbG9wZSB4bWxuczpmb289Imh0dHA6Ly93d3cudXNwcy5nb3YvZm9vIiB4bWxucz0iaHR0cDovL3d3dy51c3BzLmdvdi8iPgorICA8RGVhclNpcj5mb288L0RlYXJTaXI+CisgIDxCb2R5PmJhcjwvQm9keT4KKyAgPFlvdXJzU2luY2VyZWx5PgorICAgIDxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIElkPSJzaWduYXR1cmUiPgorICAgICAgPFNpZ25lZEluZm8+CisgICAgICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiIC8+CisgICAgICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiIC8+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldCI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT42ME52WnZ0ZFRCKzdVbmxMcC9IMjRwN2g0YnM9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSJodHRwOi8veG1sZHNpZy5wb3Rob2xlLmNvbS94bWwtc3R5bGVzaGVldC50eHQiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNiYXNlNjQiIC8+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+NjBOdlp2dGRUQis3VW5sTHAvSDI0cDdoNGJzPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiIFVSST0iI29iamVjdC0xIj4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgICBzZWxmOjp0ZXh0KCkKKyAgICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPnp5anA4R0pPWDY5OTkwS2txdzhpb1BYR0V4az08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0IiBVUkk9IiI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgICA8WFBhdGggeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6ZHNpZzpTaWduZWRJbmZvCisgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICBjb3VudChhbmNlc3Rvci1vci1zZWxmOjpkc2lnOlJlZmVyZW5jZSB8CisgICAgICAgICAgICAgICAgICAgICAgaGVyZSgpL2FuY2VzdG9yOjpkc2lnOlJlZmVyZW5jZVsxXSkgJmd0OworICAgICAgICAgICAgICAgIGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6OmRzaWc6UmVmZXJlbmNlKQorICAgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICBjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkgfAorICAgICAgICAgICAgICAgICAgICAgIGlkKCdub3RhcmllcycpKSA9CisgICAgICAgICAgICAgICAgY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKQorICAgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+RGtSTkhLdVFnRGlUeTlYQUFNR2J5eWRnM0JJPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiIFVSST0iI29iamVjdC0yIj4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjYmFzZTY0IiAvPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPnp5anA4R0pPWDY5OTkwS2txdzhpb1BYR0V4az08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjTWFuaWZlc3QiIFVSST0iI21hbmlmZXN0LTEiPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+WDlkTVBMMEtlRFpYaDlHRTN2TGNPdFBzWWpJPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNTaWduYXR1cmVQcm9wZXJ0aWVzIiBVUkk9IiNzaWduYXR1cmUtcHJvcGVydGllcy0xIj4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPjd0SExackMwa3FPaFBDaVl1L1d1c2dHNHRCbz08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiIC8+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+emJWWnkzeWNnN0N5RmNQek5zMEM2YkEzcWlvPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIgLz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHMiIC8+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+emJWWnkzeWNnN0N5RmNQek5zMEM2YkEzcWlvPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKC8pIj4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIgLz4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT56YlZaeTN5Y2c3Q3lGY1B6TnMwQzZiQTNxaW89PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoLykiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIiAvPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1I1dpdGhDb21tZW50cyIgLz4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5hcjAvN0VReVJmVVptclBQY1RRRmRWQ3QyUFk9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCIgVVJJPSIjb2JqZWN0LTMiPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+MGFXNEwwR29GellVbzRneVpTZm95WkJocHVjPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiIFVSST0iI29iamVjdC0zIj4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHMiIC8+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+MGFXNEwwR29GellVbzRneVpTZm95WkJocHVjPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiIFVSST0iI3hwb2ludGVyKGlkKCdvYmplY3QtMycpKSI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT4wYVc0TDBHb0Z6WVVvNGd5WlNmb3laQmhwdWM9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCIgVVJJPSIjeHBvaW50ZXIoaWQoJ29iamVjdC0zJykpIj4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHMiIC8+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+MXB1WVdiMzZaNVRJRG1FSVZkL0pMUjNpRDhZPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNSZWZlcmVuY2UiIFVSST0iI3JlZmVyZW5jZS0yIj4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPk1NdFhMQ3N3aUVEdXJLTWdnMnIrdkJQbGs4UT08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBJZD0icmVmZXJlbmNlLTEiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNSZWZlcmVuY2UiIFVSST0iI21hbmlmZXN0LXJlZmVyZW5jZS0xIj4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPjdlSS9QOG1wcGdrcVhxVzArYXQyVUdqMDZxcz08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBJZD0icmVmZXJlbmNlLTIiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNSZWZlcmVuY2UiIFVSST0iI3JlZmVyZW5jZS0xIj4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPmwvYnFJb3VrNkdzOGVFakcwVGFkME1KSmdXdz08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDwvU2lnbmVkSW5mbz4KKyAgICAgIDxTaWduYXR1cmVWYWx1ZT4KKyAgICAgICAgU2lNYjlzdTU2c3BtTWxOanJXV0tka2dqMWhEaHZlYVdDeDVCd3BqNUF1SjZUM1p5NjhOSi9BPT0KKyAgICAgIDwvU2lnbmF0dXJlVmFsdWU+CisgICAgICA8S2V5SW5mbz4KKyAgICAgICAgPFJldHJpZXZhbE1ldGhvZCBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjWDUwOURhdGEiIFVSST0iI29iamVjdC00Ij4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICAgIDxYUGF0aCB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpkc2lnOlg1MDlEYXRhCisgICAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDwvUmV0cmlldmFsTWV0aG9kPgorICAgICAgPC9LZXlJbmZvPgorICAgICAgPE9iamVjdCBJZD0ib2JqZWN0LTEiIE1pbWVUeXBlPSJ0ZXh0L3BsYWluIj5JIGFtIHRoZSB0ZXh0LjwvT2JqZWN0PgorICAgICAgPE9iamVjdCBFbmNvZGluZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2Jhc2U2NCIgSWQ9Im9iamVjdC0yIiBNaW1lVHlwZT0idGV4dC9wbGFpbiI+U1NCaGJTQjBhR1VnZEdWNGRDND08L09iamVjdD4KKyAgICAgIDxPYmplY3QgSWQ9Im9iamVjdC0zIj4KKyAgICAgICAgPE5vbkNvbW1lbnRhbmR1cyB4bWxucz0iIj48IS0tIENvbW1lbnRhbmR1bSAtLT48L05vbkNvbW1lbnRhbmR1cz4KKyAgICAgIDwvT2JqZWN0PgorICAgICAgPE9iamVjdD4KKyAgICAgICAgPE1hbmlmZXN0IElkPSJtYW5pZmVzdC0xIj4KKyAgICAgICAgICA8UmVmZXJlbmNlIElkPSJtYW5pZmVzdC1yZWZlcmVuY2UtMSIgVVJJPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldCI+CisgICAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgICA8RGlnZXN0VmFsdWU+NjBOdlp2dGRUQis3VW5sTHAvSDI0cDdoNGJzPTwvRGlnZXN0VmFsdWU+CisgICAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjUmVmZXJlbmNlIiBVUkk9IiNyZWZlcmVuY2UtMSI+CisgICAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgICA8RGlnZXN0VmFsdWU+bC9icUlvdWs2R3M4ZUVqRzBUYWQwTUpKZ1d3PTwvRGlnZXN0VmFsdWU+CisgICAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiNub3RhcmllcyI+CisgICAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhzbHQtMTk5OTExMTYiPgorICAgICAgICAgICAgICAgIDx4c2w6c3R5bGVzaGVldCB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9zdHJpY3QiIGV4Y2x1ZGUtcmVzdWx0LXByZWZpeGVzPSJmb28iIHZlcnNpb249IjEuMCI+CisgICAgICAgICAgICAgICAgICA8eHNsOm91dHB1dCBlbmNvZGluZz0iVVRGLTgiIGluZGVudD0ibm8iIG1ldGhvZD0ieG1sIiAvPgorICAgICAgICAgICAgICAgICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iLyI+CisgICAgICAgICAgICAgICAgICAgIDxodG1sPgorICAgICAgICAgICAgICAgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRpdGxlPk5vdGFyaWVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICA8L2hlYWQ+CisgICAgICAgICAgICAgICAgICAgICAgPGJvZHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSJOb3Rhcmllcy9Ob3RhcnkiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9IkBuYW1lIiAvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8L3hzbDpmb3ItZWFjaD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgPC9ib2R5PgorICAgICAgICAgICAgICAgICAgICA8L2h0bWw+CisgICAgICAgICAgICAgICAgICA8L3hzbDp0ZW1wbGF0ZT4KKyAgICAgICAgICAgICAgICA8L3hzbDpzdHlsZXNoZWV0PgorICAgICAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPgorICAgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICAgICAgPERpZ2VzdFZhbHVlPmM3d3E1WEtvczZScU5WSnlGeTcvZmw2K3NBcz08L0RpZ2VzdFZhbHVlPgorICAgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8L01hbmlmZXN0PgorICAgICAgPC9PYmplY3Q+CisgICAgICA8T2JqZWN0PgorICAgICAgICA8U2lnbmF0dXJlUHJvcGVydGllcyBJZD0ic2lnbmF0dXJlLXByb3BlcnRpZXMtMSI+CisgICAgICAgICAgPFNpZ25hdHVyZVByb3BlcnR5IFRhcmdldD0iI3NpZ25hdHVyZSI+CisgICAgICAgICAgICA8U2lnbmVyQWRkcmVzcyB4bWxucz0idXJuOmRlbW8iPjxJUD4xOTIuMTY4LjIxLjEzODwvSVA+PC9TaWduZXJBZGRyZXNzPgorICAgICAgICAgIDwvU2lnbmF0dXJlUHJvcGVydHk+CisgICAgICAgIDwvU2lnbmF0dXJlUHJvcGVydGllcz4KKyAgICAgIDwvT2JqZWN0PgorICAgICAgPE9iamVjdCBJZD0ib2JqZWN0LTQiPgorICAgICAgICA8WDUwOURhdGE+CisgICAgICAgICAgPFg1MDlTdWJqZWN0TmFtZT4KKyAgICAgICAgICAgIENOPU1lcmxpbiBIdWdoZXMsTz1CYWx0aW1vcmUgVGVjaG5vbG9naWVzXCwgTHRkLixTVD1EdWJsaW4sQz1JRQorICAgICAgICAgIDwvWDUwOVN1YmplY3ROYW1lPgorICAgICAgICAgIDxYNTA5SXNzdWVyU2VyaWFsPgorICAgICAgICAgICAgPFg1MDlJc3N1ZXJOYW1lPgorICAgICAgICAgICAgICBDTj1UZXN0IERTQSBDQSxPPUJhbHRpbW9yZSBUZWNobm9sb2dpZXNcLCBMdGQuLFNUPUR1YmxpbixDPUlFCisgICAgICAgICAgICA8L1g1MDlJc3N1ZXJOYW1lPgorICAgICAgICAgICAgPFg1MDlTZXJpYWxOdW1iZXI+OTcwODQ5OTM2PC9YNTA5U2VyaWFsTnVtYmVyPgorICAgICAgICAgIDwvWDUwOUlzc3VlclNlcmlhbD4KKyAgICAgICAgICA8WDUwOUNlcnRpZmljYXRlPgorICAgICAgICAgICAgTUlJRE56Q0NBdldnQXdJQkFnSUVPZDMra0RBSkJnY3Foa2pPT0FRRE1Gc3hDekFKQmdOVkJBWVRBa2xGTVE4dworICAgICAgICAgICAgRFFZRFZRUUlFd1pFZFdKc2FXNHhKVEFqQmdOVkJBb1RIRUpoYkhScGJXOXlaU0JVWldOb2JtOXNiMmRwWlhNcworICAgICAgICAgICAgSUV4MFpDNHhGREFTQmdOVkJBTVRDMVJsYzNRZ1JGTkJJRU5CTUI0WERUQXdNVEF3TmpFMk16SXhOVm9YRFRBeAorICAgICAgICAgICAgTVRBd05qRTJNekl4TkZvd1hURUxNQWtHQTFVRUJoTUNTVVV4RHpBTkJnTlZCQWdUQmtSMVlteHBiakVsTUNNRworICAgICAgICAgICAgQTFVRUNoTWNRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsY3l3Z1RIUmtMakVXTUJRR0ExVUVBeE1OVFdWeQorICAgICAgICAgICAgYkdsdUlFaDFaMmhsY3pDQ0FiWXdnZ0VyQmdjcWhrak9PQVFCTUlJQkhnS0JnUURhSmpmRFRyYXdNSGY4TWlVdAorICAgICAgICAgICAgWTU0YjM3aFNtWU5uUjNLcEdUMTB1VTFEcXBwY2p1MDZ1TjBpR2JxZjk0N0Rqa0JDMjVoS25xeWtLMzF4QncwRQorICAgICAgICAgICAgQ1BiWXEvS0M5OGtnaGRmMnhKQ3U2QjhhcUo5NUs5amRWZmxKM1dQN1BReEpuK2ZtTTIzenk2SFlMWFZJQ3BmcQorICAgICAgICAgICAgZXRkTmovVkhDU2haRTNiZEppRTZWb2JTRlFJVkFQUWVjcVMyUGFURHByY1Fua3d4NE1IVFJYaHJBb0dBTXVHQQorICAgICAgICAgICAgbHFlQjFheCt2eU8yK09zdWJqaGw3cEh4THU0N1JJSCsvTTUyRGpFU0E5S01Tcnd6c1l4OHlOUjJXb29CeXJFMAorICAgICAgICAgICAgdDZmdTBWbmNLN1VLOG9sTzR0N3dwdjJ6NEFGUVBSVkNLRndvMHFnbjVhS0lrSUNHTWxyUnk4MWF2YjI3d0djVworICAgICAgICAgICAgb3RoeDNpUFBNdEZYdG9EcUswSkl0YUk5Ujh6YzFtc0ZoTTFHS01ZRGdZUUFBb0dBY3RBOFlHeHJ0bmdnL3pLVgorICAgICAgICAgICAgdnFFT2VmbndtVmlGenRjblBCWVBsSnN2aDZ5S0k0aURtNjhmbnA0TWkzUnJKNmJaQXlnRnJVSVFMeExqVitPSgorICAgICAgICAgICAgdGdKQUV0bzB4QXMrTWVodXExRGtTRkVwUDNvRHpDVE9zck9pUzFEd1FlNG9JYjd6VmsvOWw3YVB0Sk1IVzBMVgorICAgICAgICAgICAgbE1kd1pORk5OSm9xTWNUMlpmQ1ByZnZZdlEyalJ6QkZNQjRHQTFVZEVRUVhNQldCRTIxbGNteHBia0JpWVd4MAorICAgICAgICAgICAgYVcxdmNtVXVhV1V3RGdZRFZSMFBBUUgvQkFRREFnZUFNQk1HQTFVZEl3UU1NQXFBQ0VKWlFHMEt3UmJQTUFrRworICAgICAgICAgICAgQnlxR1NNNDRCQU1ETVFBd0xnSVZBSzRza1dFRllncmdnYUpBOHZZQXdTamcxMitLQWhVQXdIVG83d2Q0dEVOdworICAgICAgICAgICAgOUxBS1BrbFEvNzRmSDE4PQorICAgICAgICAgIDwvWDUwOUNlcnRpZmljYXRlPgorICAgICAgICA8L1g1MDlEYXRhPgorICAgICAgPC9PYmplY3Q+CisgICAgPC9TaWduYXR1cmU+CisgIDwvWW91cnNTaW5jZXJlbHk+CisgIDxQb3N0U2NyaXB0PmJhcjwvUG9zdFNjcmlwdD4KKyAgPE5vdGFyaWVzIHhtbG5zPSIiIElkPSJub3RhcmllcyI+CisgICAgPE5vdGFyeSBuYW1lPSJHcmVhdCwgQS4gVC4iIC8+CisgICAgPE5vdGFyeSBuYW1lPSJIdW4sIEEuIFQuIiAvPgorICA8L05vdGFyaWVzPgorICA8IS0tIENvbW1lbnRhcnkgLS0+Cis8L0VudmVsb3BlPgorPCEtLSBQb3N0YW1ibGUgLS0+CmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL1JlYWRtZS50eHQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL1JlYWRtZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdlOWQ4OAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvUmVhZG1lLnR4dApAQCAtMCwwICsxLDYzIEBACitTYW1wbGUgWE1MIFNpZ25hdHVyZXNbMV1bMl0KKworWzFdIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDIvUkVDLXhtbGRzaWctY29yZS0yMDAyMDIxMi8KK1syXSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNQorCisxLiBBIGxhcmdlIGFuZCBjb21wbGV4IHNpZ25hdHVyZToKKworVGhpcyBpbmNsdWRlcyBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwgYmFzZSA2NCwgcmVmZXJlbmNlcyBvZiB0aGUgZm9ybXMKKyIiLCAiI3hwb2ludGVyKC8pIiwgIiNmb28iIGFuZCAiI3hwb2ludGVyKGlkKCdmb28nKSkiICh3aXRoIGFuZAord2l0aG91dCBjb21tZW50cyksIG1hbmlmZXN0cywgc2lnbmF0dXJlIHByb3BlcnRpZXMsIHNpbXBsZSB4cGF0aAord2l0aCBoZXJlKCksIHhzbHQsIHJldHJpZXZhbCBtZXRob2QgYW5kIG9kZCBpbnRlcnJlZmVyZW50aWFsCitkZXBlbmRlbmNpZXMuCisKKyAgc2lnbmF0dXJlLnhtbCAtIEEgc2lnbmF0dXJlCisgIHNpZ25hdHVyZS50bXBsIC0gVGhlIHRlbXBsYXRlIGZyb20gd2hpY2ggdGhlIHNpZ25hdHVyZSB3YXMgY3JlYXRlZAorICBzaWduYXR1cmUtYzE0bi0qLnR4dCAtIEFsbCBpbnRlcm1lZGlhdGUgYzE0biBvdXRwdXQKKworMi4gU29tZSBiYXNpYyBzaWduYXR1cmVzOgorCitUaGUga2V5IGZvciB0aGUgSE1BQy1TSEExIHNpZ25hdHVyZXMgaXMgInNlY3JldCIuZ2V0Qnl0ZXMoIkFTQ0lJIikKK3doaWNoIGlzLCBpbiBoZXgsICg3MyA2NSA2MyA3MiA2NSA3NCkuIE5vIGtleSBpbmZvIGlzIHByb3ZpZGVkIGZvcgordGhlc2Ugc2lnbmF0dXJlcy4KKworICBzaWduYXR1cmUtZW52ZWxvcGVkLWRzYS54bWwKKyAgc2lnbmF0dXJlLWVudmVsb3BpbmctYjY0LWRzYS54bWwKKyAgc2lnbmF0dXJlLWVudmVsb3BpbmctZHNhLnhtbAorICBzaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTEtNDAueG1sCisgIHNpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMS54bWwKKyAgc2lnbmF0dXJlLWVudmVsb3BpbmctcnNhLnhtbAorICBzaWduYXR1cmUtZXh0ZXJuYWwtYjY0LWRzYS54bWwKKyAgc2lnbmF0dXJlLWV4dGVybmFsLWRzYS54bWwgLSBUaGUgc2lnbmF0dXJlcworICBzaWduYXR1cmUtKi1jMTRuLSoudHh0IC0gVGhlIGludGVybWVkaWF0ZSBjMTRuIG91dHB1dAorCiszLiBWYXJ5aW5nIGtleSBpbmZvcm1hdGlvbjoKKworVG8gcmVzb2x2ZSB0aGUga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGUgS2V5TmFtZSBpbiBgc2lnbmF0dXJlLWtleW5hbWUueG1sJworeW91IG11c3QgcGVyZm9ybSBhIGN1bm5pbmcgdHJhbnNmb3JtYXRpb24gZnJvbSB0aGUgbmFtZSBgWHh4JyB0byB0aGUKK2NlcnRpZmljYXRlIHRoYXQgcmVzaWRlcyBpbiB0aGUgZGlyZWN0b3J5IGBjZXJ0cy8nIHRoYXQgaGFzIGEgc3ViamVjdCBuYW1lCitjb250YWluaW5nIHRoZSBjb21tb24gbmFtZSBgWHh4Jywgd2hpY2ggaGFwcGVucyB0byBiZSBpbiB0aGUgZmlsZQorYGNlcnRzL3h4eC5jcnQnLgorCitUbyByZXNvbHZlIHRoZSBrZXkgYXNzb2NpYXRlZCB3aXRoIHRoZSBYNTA5RGF0YSBpbiBgc2lnbmF0dXJlLXg1MDktaXMueG1sJywKK2BzaWduYXR1cmUteDUwOS1za2kueG1sJyBhbmQgYHNpZ25hdHVyZS14NTA5LXNuLnhtbCcgeW91IG5lZWQgdG8gcmVzb2x2ZQordGhlIGlkZW50aWZpZWQgY2VydGlmaWNhdGUgZnJvbSB0aG9zZSBpbiB0aGUgYGNlcnRzJyBkaXJlY3RvcnkuCisKK0luIGBzaWduYXR1cmUteDUwOS1jcnQtY3JsLnhtbCcgYW4gWC41MDkgQ1JMIGlzIHByZXNlbnQgd2hpY2ggaGFzIHJldm9rZWQKK3RoZSBYLjUwOSBjZXJ0aWZpY2F0ZSB1c2VkIGZvciBzaWduaW5nLiBTbyB2ZXJpZmljYXRpb24gc2hvdWxkIGJlCitxdWFsaWZpZWQuCisKKyAgc2lnbmF0dXJlLWtleW5hbWUueG1sCisgIHNpZ25hdHVyZS1yZXRyaWV2YWxtZXRob2QtcmF3eDUwOWNydC54bWwKKyAgc2lnbmF0dXJlLXg1MDktY3J0LWNybC54bWwKKyAgc2lnbmF0dXJlLXg1MDktY3J0LnhtbAorICBzaWduYXR1cmUteDUwOS1pcy54bWwKKyAgc2lnbmF0dXJlLXg1MDktc2tpLnhtbAorICBzaWduYXR1cmUteDUwOS1zbi54bWwgLSBUaGUgc2lnbmF0dXJlcworICBjZXJ0cy8qLmNydCAtIFRoZSBjZXJ0aWZpY2F0ZXMKKworTWVybGluIEh1Z2hlcyA8bWVybGluQGJhbHRpbW9yZS5pZT4KK0JhbHRpbW9yZSBUZWNobm9sb2dpZXMsIEx0ZC4KK2h0dHA6Ly93d3cuYmFsdGltb3JlLmNvbS8KKworVGh1cnNkYXksIEFwcmlsIDQsIDIwMDIKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvY2VydHMvYmFkYi5jcnQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL2NlcnRzL2JhZGIuY3J0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkMGRlYzYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL2NlcnRzL2JhZGIuY3J0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvY2VydHMvYmFsb3IuY3J0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9jZXJ0cy9iYWxvci5jcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA2ZDU5ZAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvY2VydHMvYmFsb3IuY3J0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvY2VydHMvYnJlcy5jcnQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL2NlcnRzL2JyZXMuY3J0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwOTUzZjQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL2NlcnRzL2JyZXMuY3J0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvY2VydHMvY2EuY3J0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9jZXJ0cy9jYS5jcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA4NjFkMAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvY2VydHMvY2EuY3J0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvY2VydHMvY3JsIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9jZXJ0cy9jcmwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg0ZTdlZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvY2VydHMvY3JsCkBAIC0wLDAgKzEsMTEgQEAKKy0tLS0tQkVHSU4gQ1JMLS0tLS0KK01JSUJKRENCNUFJQkFUQUpCZ2NxaGtqT09BUURNSFl4Q3pBSkJnTlZCQVlUQWtsRk1ROHdEUVlEVlFRSUV3WkUKK2RXSnNhVzR4SkRBaUJnTlZCQW9URzBKaGJIUnBiVzl5WlNCVVpXTm9ibTlzYjJkcFpYTWdUSFJrTGpFUk1BOEcKK0ExVUVDeE1JV0M5VFpXTjFjbVV4SFRBYkJnTlZCQU1URkVGdWIzUm9aWElnVkhKaGJuTnBaVzUwSUVOQkZ3MHcKK01qQTBNRFF3TWpFMk5UaGFGdzB4TVRBME1ESXdNakUyTlRoYU1Ca3dGd0lHQU96NUlkNS9GdzB3TWpBME1EUXcKK01qRTJOVGhhb0NNd0lUQVRCZ05WSFNNRUREQUtnQWlLSEZZd1dqSVNmVEFLQmdOVkhSUUVBd0lCQURBSkJnY3EKK2hrak9PQVFEQXpBQU1DMENGQ0VJbTM4ZnZHelNKSG1zMjg0aFVzOWROQjhuQWhVQWpFdFpyMFRHZ2M2c1ZSVmsKK2tyRWdsdGRvN0p3PQorLS0tLS1FTkQgQ1JMLS0tLS0KKworCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL2NlcnRzL2x1Z2guY3J0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9jZXJ0cy9sdWdoLmNydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTA5ZWRmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9jZXJ0cy9sdWdoLmNydApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL2NlcnRzL21hY2hhLmNydCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvY2VydHMvbWFjaGEuY3J0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4NGRkYzIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL2NlcnRzL21hY2hhLmNydApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL2NlcnRzL21vcmlndS5jcnQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL2NlcnRzL21vcmlndS5jcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWYwZDQxNQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvY2VydHMvbW9yaWd1LmNydApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL2NlcnRzL211bGxhbi5jcnQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL2NlcnRzL211bGxhbi5jcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA3MjliYQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvY2VydHMvbXVsbGFuLmNydApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL2NlcnRzL25lbWFpbi5jcnQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL2NlcnRzL25lbWFpbi5jcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRiNjJhZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvY2VydHMvbmVtYWluLmNydApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL2NlcnRzL3htbGRzaWcuamtzIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9jZXJ0cy94bWxkc2lnLmprcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzAyZmNlCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9jZXJ0cy94bWxkc2lnLmprcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1jMTRuLTAudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtYzE0bi0wLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTNkZTMzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtYzE0bi0wLnR4dApAQCAtMCwwICsxIEBACitJIGFtIHRoZSB0ZXh0LgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWMxNG4tMS50eHQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1jMTRuLTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhYzFhNTIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1jMTRuLTEudHh0CkBAIC0wLDAgKzEsNSBAQAorPFNpZ25hdHVyZVByb3BlcnRpZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyIgSWQ9InNpZ25hdHVyZS1wcm9wZXJ0aWVzLTEiPgorICAgICAgICAgIDxTaWduYXR1cmVQcm9wZXJ0eSBUYXJnZXQ9IiNzaWduYXR1cmUiPgorICAgICAgICAgICAgPFNpZ25lckFkZHJlc3MgeG1sbnM9InVybjpkZW1vIj48SVA+MTkyLjE2OC4yMS4xMzg8L0lQPjwvU2lnbmVyQWRkcmVzcz4KKyAgICAgICAgICA8L1NpZ25hdHVyZVByb3BlcnR5PgorICAgICAgICA8L1NpZ25hdHVyZVByb3BlcnRpZXM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtYzE0bi0xMC50eHQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1jMTRuLTEwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDNmZmUxCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtYzE0bi0xMC50eHQKQEAgLTAsMCArMSw0MCBAQAorPE1hbmlmZXN0IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iIElkPSJtYW5pZmVzdC0xIj4KKyAgICAgICAgICA8UmVmZXJlbmNlIElkPSJtYW5pZmVzdC1yZWZlcmVuY2UtMSIgVVJJPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldCI+CisgICAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICAgICAgPERpZ2VzdFZhbHVlPjYwTnZadnRkVEIrN1VubExwL0gyNHA3aDRicz08L0RpZ2VzdFZhbHVlPgorICAgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIjcmVmZXJlbmNlLTEiPgorICAgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICAgIDxEaWdlc3RWYWx1ZT5xVVJsbzNMU3E0VFdRdHlnQlpKMGlYUTlFMTQ9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgICA8UmVmZXJlbmNlIFVSST0iI25vdGFyaWVzIj4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHNsdC0xOTk5MTExNiI+CisgICAgICAgICAgICAgICAgPHhzbDpzdHlsZXNoZWV0IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvc3RyaWN0IiB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSIgZXhjbHVkZS1yZXN1bHQtcHJlZml4ZXM9ImZvbyIgdmVyc2lvbj0iMS4wIj4KKyAgICAgICAgICAgICAgICAgIDx4c2w6b3V0cHV0IGVuY29kaW5nPSJVVEYtOCIgaW5kZW50PSJubyIgbWV0aG9kPSJ4bWwiPjwveHNsOm91dHB1dD4KKyAgICAgICAgICAgICAgICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Ii8iPgorICAgICAgICAgICAgICAgICAgICA8aHRtbD4KKyAgICAgICAgICAgICAgICAgICAgICA8aGVhZD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0aXRsZT5Ob3RhcmllczwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkPgorICAgICAgICAgICAgICAgICAgICAgIDxib2R5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0iTm90YXJpZXMvTm90YXJ5Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJAbmFtZSI+PC94c2w6dmFsdWUtb2Y+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDwveHNsOmZvci1lYWNoPgorICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICA8L2JvZHk+CisgICAgICAgICAgICAgICAgICAgIDwvaHRtbD4KKyAgICAgICAgICAgICAgICAgIDwveHNsOnRlbXBsYXRlPgorICAgICAgICAgICAgICAgIDwveHNsOnN0eWxlc2hlZXQ+CisgICAgICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiPjwvVHJhbnNmb3JtPgorICAgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICAgIDxEaWdlc3RWYWx1ZT5jN3dxNVhLb3M2UnFOVkp5Rnk3L2ZsNitzQXM9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPC9NYW5pZmVzdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1jMTRuLTExLnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWMxNG4tMTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2N2JiNmYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1jMTRuLTExLnR4dApAQCAtMCwwICsxLDQgQEAKKzxSZWZlcmVuY2UgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyIgSWQ9InJlZmVyZW5jZS0yIiBVUkk9IiNyZWZlcmVuY2UtMSI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+cVVSbG8zTFNxNFRXUXR5Z0JaSjBpWFE5RTE0PTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWMxNG4tMTIudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtYzE0bi0xMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU5MjYyNQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWMxNG4tMTIudHh0CkBAIC0wLDAgKzEsMTUgQEAKKzwhLS0gUHJlYW1ibGUgLS0+Cis8RW52ZWxvcGUgeG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy91c3BzIiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPgorICA8RGVhclNpcj5mb288L0RlYXJTaXI+CisgIDxCb2R5PmJhcjwvQm9keT4KKyAgPFlvdXJzU2luY2VyZWx5PgorICAgIAorICA8L1lvdXJzU2luY2VyZWx5PgorICA8UG9zdFNjcmlwdD5iYXI8L1Bvc3RTY3JpcHQ+CisgIDxOb3RhcmllcyB4bWxucz0iIiBJZD0ibm90YXJpZXMiPgorICAgIDxOb3RhcnkgbmFtZT0iR3JlYXQsIEEuIFQuIj48L05vdGFyeT4KKyAgICA8Tm90YXJ5IG5hbWU9Ikh1biwgQS4gVC4iPjwvTm90YXJ5PgorICA8L05vdGFyaWVzPgorICA8IS0tIENvbW1lbnRhcnkgLS0+Cis8L0VudmVsb3BlPgorPCEtLSBQb3N0YW1ibGUgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtYzE0bi0xMy50eHQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1jMTRuLTEzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmFiNjM0Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtYzE0bi0xMy50eHQKQEAgLTAsMCArMSwxMyBAQAorPEVudmVsb3BlIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvdXNwcyIgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIj4KKyAgPERlYXJTaXI+Zm9vPC9EZWFyU2lyPgorICA8Qm9keT5iYXI8L0JvZHk+CisgIDxZb3Vyc1NpbmNlcmVseT4KKyAgICAKKyAgPC9Zb3Vyc1NpbmNlcmVseT4KKyAgPFBvc3RTY3JpcHQ+YmFyPC9Qb3N0U2NyaXB0PgorICA8Tm90YXJpZXMgeG1sbnM9IiIgSWQ9Im5vdGFyaWVzIj4KKyAgICA8Tm90YXJ5IG5hbWU9IkdyZWF0LCBBLiBULiI+PC9Ob3Rhcnk+CisgICAgPE5vdGFyeSBuYW1lPSJIdW4sIEEuIFQuIj48L05vdGFyeT4KKyAgPC9Ob3Rhcmllcz4KKyAgCis8L0VudmVsb3BlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWMxNG4tMTQudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtYzE0bi0xNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZhYjYzNAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWMxNG4tMTQudHh0CkBAIC0wLDAgKzEsMTMgQEAKKzxFbnZlbG9wZSB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnL3VzcHMiIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI+CisgIDxEZWFyU2lyPmZvbzwvRGVhclNpcj4KKyAgPEJvZHk+YmFyPC9Cb2R5PgorICA8WW91cnNTaW5jZXJlbHk+CisgICAgCisgIDwvWW91cnNTaW5jZXJlbHk+CisgIDxQb3N0U2NyaXB0PmJhcjwvUG9zdFNjcmlwdD4KKyAgPE5vdGFyaWVzIHhtbG5zPSIiIElkPSJub3RhcmllcyI+CisgICAgPE5vdGFyeSBuYW1lPSJHcmVhdCwgQS4gVC4iPjwvTm90YXJ5PgorICAgIDxOb3RhcnkgbmFtZT0iSHVuLCBBLiBULiI+PC9Ob3Rhcnk+CisgIDwvTm90YXJpZXM+CisgIAorPC9FbnZlbG9wZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1jMTRuLTE1LnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWMxNG4tMTUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2YWI2MzQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1jMTRuLTE1LnR4dApAQCAtMCwwICsxLDEzIEBACis8RW52ZWxvcGUgeG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy91c3BzIiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPgorICA8RGVhclNpcj5mb288L0RlYXJTaXI+CisgIDxCb2R5PmJhcjwvQm9keT4KKyAgPFlvdXJzU2luY2VyZWx5PgorICAgIAorICA8L1lvdXJzU2luY2VyZWx5PgorICA8UG9zdFNjcmlwdD5iYXI8L1Bvc3RTY3JpcHQ+CisgIDxOb3RhcmllcyB4bWxucz0iIiBJZD0ibm90YXJpZXMiPgorICAgIDxOb3RhcnkgbmFtZT0iR3JlYXQsIEEuIFQuIj48L05vdGFyeT4KKyAgICA8Tm90YXJ5IG5hbWU9Ikh1biwgQS4gVC4iPjwvTm90YXJ5PgorICA8L05vdGFyaWVzPgorICAKKzwvRW52ZWxvcGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtYzE0bi0xNi50eHQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1jMTRuLTE2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjdhODE1Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtYzE0bi0xNi50eHQKQEAgLTAsMCArMSwxMDkgQEAKKzxTaWduZWRJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPgorICAgICAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ij48L0Nhbm9uaWNhbGl6YXRpb25NZXRob2Q+CisgICAgICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiPjwvU2lnbmF0dXJlTWV0aG9kPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sLXN0eWxlc2hlZXQiPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPjYwTnZadnRkVEIrN1VubExwL0gyNHA3aDRicz08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBVUkk9Imh0dHA6Ly93d3cudzMub3JnL1NpZ25hdHVyZS8yMDAyLzA0L3htbC1zdHlsZXNoZWV0LmI2NCI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2Jhc2U2NCI+PC9UcmFuc2Zvcm0+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPjYwTnZadnRkVEIrN1VubExwL0gyNHA3aDRicz08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0IiBVUkk9IiNvYmplY3QtMSI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgICAgc2VsZjo6dGV4dCgpCisgICAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+enlqcDhHSk9YNjk5OTBLa3F3OGlvUFhHRXhrPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICAKKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0IiBVUkk9IiNvYmplY3QtMiI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2Jhc2U2NCI+PC9UcmFuc2Zvcm0+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPnp5anA4R0pPWDY5OTkwS2txdzhpb1BYR0V4az08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjTWFuaWZlc3QiIFVSST0iI21hbmlmZXN0LTEiPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPnFnNEhGd3NOKy9XWDMydUg4NVdsSlU5bDQ1az08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjU2lnbmF0dXJlUHJvcGVydGllcyIgVVJJPSIjc2lnbmF0dXJlLXByb3BlcnRpZXMtMSI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+RVRsRUkzeTdodnZBdE1lOXdRU3o3TGhiSEVFPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSI+PC9UcmFuc2Zvcm0+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPkovTzBIaGRhUFh4eDQ5ZmdHV01FU0wwOUdwQT08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiPjwvVHJhbnNmb3JtPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1I1dpdGhDb21tZW50cyI+PC9UcmFuc2Zvcm0+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPkovTzBIaGRhUFh4eDQ5ZmdHV01FU0wwOUdwQT08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcigvKSI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiPjwvVHJhbnNmb3JtPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5KL08wSGhkYVBYeHg0OWZnR1dNRVNMMDlHcEE9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoLykiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIj48L1RyYW5zZm9ybT4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHMiPjwvVHJhbnNmb3JtPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5Na0w5Q1g4eWVBQkJ0aDFSQ2h5UHg1OExzOHc9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCIgVVJJPSIjb2JqZWN0LTMiPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPnlhbVNJb2tLbWpBM2hCL3MzRnUwN3dETzN2TT08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0IiBVUkk9IiNvYmplY3QtMyI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUjV2l0aENvbW1lbnRzIj48L1RyYW5zZm9ybT4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+eWFtU0lva0ttakEzaEIvczNGdTA3d0RPM3ZNPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiIFVSST0iI3hwb2ludGVyKGlkKCdvYmplY3QtMycpKSI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+eWFtU0lva0ttakEzaEIvczNGdTA3d0RPM3ZNPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiIFVSST0iI3hwb2ludGVyKGlkKCdvYmplY3QtMycpKSI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUjV2l0aENvbW1lbnRzIj48L1RyYW5zZm9ybT4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+NDE5Q1lneVRXT1RHWUdCaHppZVdrbE5mN0JrPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iI3JlZmVyZW5jZS0yIj4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5Weks0NVA5S3NqcXE1b1hsS1Fwa0dnQjJDTlk9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgSWQ9InJlZmVyZW5jZS0xIiBVUkk9IiNtYW5pZmVzdC1yZWZlcmVuY2UtMSI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+Ny85ZlIrTklEejlvd2MxTGZzeHUxSkJyOHVvPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIElkPSJyZWZlcmVuY2UtMiIgVVJJPSIjcmVmZXJlbmNlLTEiPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPnFVUmxvM0xTcTRUV1F0eWdCWkowaVhROUUxND08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDwvU2lnbmVkSW5mbz48Tm90YXJpZXMgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIiBJZD0ibm90YXJpZXMiPgorICAgIDxOb3RhcnkgbmFtZT0iR3JlYXQsIEEuIFQuIj48L05vdGFyeT4KKyAgICA8Tm90YXJ5IG5hbWU9Ikh1biwgQS4gVC4iPjwvTm90YXJ5PgorICA8L05vdGFyaWVzPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWMxNG4tMTcudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtYzE0bi0xNy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA1ZDJmYgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWMxNG4tMTcudHh0CkBAIC0wLDAgKzEsMTI0IEBACis8U2lnbmVkSW5mbyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIj4KKyAgICAgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI+PC9DYW5vbmljYWxpemF0aW9uTWV0aG9kPgorICAgICAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIj48L1NpZ25hdHVyZU1ldGhvZD4KKyAgICAgICAgPFJlZmVyZW5jZSBVUkk9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1zdHlsZXNoZWV0Ij4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT42ME52WnZ0ZFRCKzdVbmxMcC9IMjRwN2g0YnM9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSJodHRwOi8vd3d3LnczLm9yZy9TaWduYXR1cmUvMjAwMi8wNC94bWwtc3R5bGVzaGVldC5iNjQiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNiYXNlNjQiPjwvVHJhbnNmb3JtPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT42ME52WnZ0ZFRCKzdVbmxMcC9IMjRwN2g0YnM9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCIgVVJJPSIjb2JqZWN0LTEiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAgIHNlbGY6OnRleHQoKQorICAgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPnp5anA4R0pPWDY5OTkwS2txdzhpb1BYR0V4az08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0IiBVUkk9IiI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgICA8WFBhdGggeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6ZHNpZzpTaWduZWRJbmZvCisgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICBjb3VudChhbmNlc3Rvci1vci1zZWxmOjpkc2lnOlJlZmVyZW5jZSB8CisgICAgICAgICAgICAgICAgICAgICAgaGVyZSgpL2FuY2VzdG9yOjpkc2lnOlJlZmVyZW5jZVsxXSkgJmd0OworICAgICAgICAgICAgICAgIGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6OmRzaWc6UmVmZXJlbmNlKQorICAgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICBjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkgfAorICAgICAgICAgICAgICAgICAgICAgIGlkKCdub3RhcmllcycpKSA9CisgICAgICAgICAgICAgICAgY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKQorICAgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPnRRaUUzR1VLaUJlblB5cDNKMEVpNnJKTUZ2ND08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0IiBVUkk9IiNvYmplY3QtMiI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2Jhc2U2NCI+PC9UcmFuc2Zvcm0+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPnp5anA4R0pPWDY5OTkwS2txdzhpb1BYR0V4az08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjTWFuaWZlc3QiIFVSST0iI21hbmlmZXN0LTEiPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPnFnNEhGd3NOKy9XWDMydUg4NVdsSlU5bDQ1az08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjU2lnbmF0dXJlUHJvcGVydGllcyIgVVJJPSIjc2lnbmF0dXJlLXByb3BlcnRpZXMtMSI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+RVRsRUkzeTdodnZBdE1lOXdRU3o3TGhiSEVFPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSI+PC9UcmFuc2Zvcm0+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPkovTzBIaGRhUFh4eDQ5ZmdHV01FU0wwOUdwQT08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiPjwvVHJhbnNmb3JtPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1I1dpdGhDb21tZW50cyI+PC9UcmFuc2Zvcm0+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPkovTzBIaGRhUFh4eDQ5ZmdHV01FU0wwOUdwQT08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcigvKSI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiPjwvVHJhbnNmb3JtPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5KL08wSGhkYVBYeHg0OWZnR1dNRVNMMDlHcEE9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoLykiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIj48L1RyYW5zZm9ybT4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHMiPjwvVHJhbnNmb3JtPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5Na0w5Q1g4eWVBQkJ0aDFSQ2h5UHg1OExzOHc9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCIgVVJJPSIjb2JqZWN0LTMiPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPnlhbVNJb2tLbWpBM2hCL3MzRnUwN3dETzN2TT08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0IiBVUkk9IiNvYmplY3QtMyI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUjV2l0aENvbW1lbnRzIj48L1RyYW5zZm9ybT4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+eWFtU0lva0ttakEzaEIvczNGdTA3d0RPM3ZNPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiIFVSST0iI3hwb2ludGVyKGlkKCdvYmplY3QtMycpKSI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+eWFtU0lva0ttakEzaEIvczNGdTA3d0RPM3ZNPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiIFVSST0iI3hwb2ludGVyKGlkKCdvYmplY3QtMycpKSI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUjV2l0aENvbW1lbnRzIj48L1RyYW5zZm9ybT4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+NDE5Q1lneVRXT1RHWUdCaHppZVdrbE5mN0JrPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iI3JlZmVyZW5jZS0yIj4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5Weks0NVA5S3NqcXE1b1hsS1Fwa0dnQjJDTlk9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgSWQ9InJlZmVyZW5jZS0xIiBVUkk9IiNtYW5pZmVzdC1yZWZlcmVuY2UtMSI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+Ny85ZlIrTklEejlvd2MxTGZzeHUxSkJyOHVvPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIElkPSJyZWZlcmVuY2UtMiIgVVJJPSIjcmVmZXJlbmNlLTEiPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPnFVUmxvM0xTcTRUV1F0eWdCWkowaVhROUUxND08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDwvU2lnbmVkSW5mbz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1jMTRuLTIudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtYzE0bi0yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNmY2NjJiCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtYzE0bi0yLnR4dApAQCAtMCwwICsxLDMgQEAKKzxPYmplY3QgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyIgSWQ9Im9iamVjdC0zIj4KKyAgICAgICAgPE5vbkNvbW1lbnRhbmR1cyB4bWxucz0iIj48L05vbkNvbW1lbnRhbmR1cz4KKyAgICAgIDwvT2JqZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWMxNG4tMy50eHQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1jMTRuLTMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2ZjY2MmIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1jMTRuLTMudHh0CkBAIC0wLDAgKzEsMyBAQAorPE9iamVjdCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIiBJZD0ib2JqZWN0LTMiPgorICAgICAgICA8Tm9uQ29tbWVudGFuZHVzIHhtbG5zPSIiPjwvTm9uQ29tbWVudGFuZHVzPgorICAgICAgPC9PYmplY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtYzE0bi00LnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWMxNG4tNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZmNjYyYgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWMxNG4tNC50eHQKQEAgLTAsMCArMSwzIEBACis8T2JqZWN0IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iIElkPSJvYmplY3QtMyI+CisgICAgICAgIDxOb25Db21tZW50YW5kdXMgeG1sbnM9IiI+PC9Ob25Db21tZW50YW5kdXM+CisgICAgICA8L09iamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1jMTRuLTUudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtYzE0bi01LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWVjMTgzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtYzE0bi01LnR4dApAQCAtMCwwICsxLDMgQEAKKzxPYmplY3QgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyIgSWQ9Im9iamVjdC0zIj4KKyAgICAgICAgPE5vbkNvbW1lbnRhbmR1cyB4bWxucz0iIj48IS0tIENvbW1lbnRhbmR1bSAtLT48L05vbkNvbW1lbnRhbmR1cz4KKyAgICAgIDwvT2JqZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWMxNG4tNi50eHQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1jMTRuLTYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhOWYxNjAKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1jMTRuLTYudHh0CkBAIC0wLDAgKzEsNCBAQAorPFJlZmVyZW5jZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIiBJZD0ibWFuaWZlc3QtcmVmZXJlbmNlLTEiIFVSST0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sLXN0eWxlc2hlZXQiPgorICAgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICAgIDxEaWdlc3RWYWx1ZT42ME52WnZ0ZFRCKzdVbmxMcC9IMjRwN2g0YnM9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgICA8L1JlZmVyZW5jZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1jMTRuLTcudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtYzE0bi03LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTAyMzg1Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtYzE0bi03LnR4dApAQCAtMCwwICsxLDQgQEAKKzxOb3RhcmllcyB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iIElkPSJub3RhcmllcyI+CisgICAgPE5vdGFyeSBuYW1lPSJHcmVhdCwgQS4gVC4iPjwvTm90YXJ5PgorICAgIDxOb3RhcnkgbmFtZT0iSHVuLCBBLiBULiI+PC9Ob3Rhcnk+CisgIDwvTm90YXJpZXM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtYzE0bi04LnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWMxNG4tOC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDk4MDNlYQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWMxNG4tOC50eHQKQEAgLTAsMCArMSw0IEBACis8UmVmZXJlbmNlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iIElkPSJyZWZlcmVuY2UtMSIgVVJJPSIjbWFuaWZlc3QtcmVmZXJlbmNlLTEiPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPjcvOWZSK05JRHo5b3djMUxmc3h1MUpCcjh1bz08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1jMTRuLTkudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtYzE0bi05LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTgwM2VhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtYzE0bi05LnR4dApAQCAtMCwwICsxLDQgQEAKKzxSZWZlcmVuY2UgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyIgSWQ9InJlZmVyZW5jZS0xIiBVUkk9IiNtYW5pZmVzdC1yZWZlcmVuY2UtMSI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+Ny85ZlIrTklEejlvd2MxTGZzeHUxSkJyOHVvPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWVudmVsb3BlZC1kc2EtYzE0bi0wLnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWVudmVsb3BlZC1kc2EtYzE0bi0wLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTk4MjFkCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZW52ZWxvcGVkLWRzYS1jMTRuLTAudHh0CkBAIC0wLDAgKzEsMyBAQAorPEVudmVsb3BlIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvZW52ZWxvcGUiPgorICAKKzwvRW52ZWxvcGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZW52ZWxvcGVkLWRzYS1jMTRuLTEudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZW52ZWxvcGVkLWRzYS1jMTRuLTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkMzE1MzQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1lbnZlbG9wZWQtZHNhLWMxNG4tMS50eHQKQEAgLTAsMCArMSwxMSBAQAorPFNpZ25lZEluZm8geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI+PC9DYW5vbmljYWxpemF0aW9uTWV0aG9kPgorICAgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSI+PC9TaWduYXR1cmVNZXRob2Q+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIj48L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICA8RGlnZXN0VmFsdWU+ZmR5NlMyTkxwblQ0Zk1kb2tVSFNIc21wY3ZvPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICA8L1NpZ25lZEluZm8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZW52ZWxvcGVkLWRzYS54bWwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1lbnZlbG9wZWQtZHNhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWZmMWY1Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZW52ZWxvcGVkLWRzYS54bWwKQEAgLTAsMCArMSw0MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxFbnZlbG9wZSB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnL2VudmVsb3BlIj4KKyAgPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgPFNpZ25lZEluZm8+CisgICAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPgorICAgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIgLz4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiIC8+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+ZmR5NlMyTkxwblQ0Zk1kb2tVSFNIc21wY3ZvPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICA8L1NpZ25lZEluZm8+CisgICAgPFNpZ25hdHVyZVZhbHVlPgorICAgICAgWjRwQmIrbytYT0tXTUU3Q3BMeVh1TnF5SVlkWE9jR3Z0aGZVZitaRExMNWltbVB4KzN0SzhRPT0KKyAgICA8L1NpZ25hdHVyZVZhbHVlPgorICAgIDxLZXlJbmZvPgorICAgICAgPEtleVZhbHVlPgorICAgICAgICA8RFNBS2V5VmFsdWU+CisgICAgICAgICAgPFA+CisgICAgICAgICAgICAzZU9lQXZxbkV5RnBXK3VUU2dyZGo3WUxqYVRrcHlIZWNLRklvTHU4UVpOa0dUUUkxY2lJVEJIMGxxZklrZENICisgICAgICAgICAgICBTaThmaVVDM0RUcTNKOUZzSmVmNFlWdERGN0pwVXZIVE9RcXRxN1pneDZLQzhXeGt6NnJRQ3hPcjdGMEFwT1lpCisgICAgICAgICAgICA4OXpMUm9lNE1rREdlNnV4MCtXdHlPVFFvVklHTlRERFVGWHJVUU5iTHJFPQorICAgICAgICAgIDwvUD4KKyAgICAgICAgICA8UT4KKyAgICAgICAgICAgIGhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VT0KKyAgICAgICAgICA8L1E+CisgICAgICAgICAgPEc+CisgICAgICAgICAgICBubng3aGJkV296R2J0bkZnbmJGbm9wZlJsN1hSYWNwa1BKUkdmNVAySVVnVnNwRVVTVW9ONmkxZkRCZkJnNDN6CisgICAgICAgICAgICBLdDdkbEVhUUw3YjUrSlRadDNNaFpOUG9zeHNneFZ1VDdUcy9nNWs3RW5wZFl2MGE1aHc1QncyOWZqYkdIZmdNCisgICAgICAgICAgICA4ZDJyaGQyVWkweEhiazBENDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBPQorICAgICAgICAgIDwvRz4KKyAgICAgICAgICA8WT4KKyAgICAgICAgICAgIGNmWXBpaHBBUWVlcGJORlM0TUFiUVJoZFhwRGk1d0xyd3hFNWhJdm9ZcW8xTDhCUVZ1OGZZMVRGQVB0b2FlMWkKKyAgICAgICAgICAgIEJnL0dJSnlQM2lMZnl1QkphRHZKSkxQMzB3Qkg5aS9zNUozNjU2UGV2cE9WZFRmaTc3N0ZpOUdqNnkvaWIyVnYKKyAgICAgICAgICAgICtPWmZKa2twNEw1MCtwNVRVaFBtUUxKdFJFc2d0bCt0bklPeUpUKytHOVU9CisgICAgICAgICAgPC9ZPgorICAgICAgICA8L0RTQUtleVZhbHVlPgorICAgICAgPC9LZXlWYWx1ZT4KKyAgICA8L0tleUluZm8+CisgIDwvU2lnbmF0dXJlPgorPC9FbnZlbG9wZT4KZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWVudmVsb3BpbmctYjY0LWRzYS1jMTRuLTAudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZW52ZWxvcGluZy1iNjQtZHNhLWMxNG4tMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ0MjcyNgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWVudmVsb3BpbmctYjY0LWRzYS1jMTRuLTAudHh0CkBAIC0wLDAgKzEsMTEgQEAKKzxTaWduZWRJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ij48L0Nhbm9uaWNhbGl6YXRpb25NZXRob2Q+CisgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSI+PC9TaWduYXR1cmVNZXRob2Q+CisgICAgPFJlZmVyZW5jZSBVUkk9IiNvYmplY3QiPgorICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjYmFzZTY0Ij48L1RyYW5zZm9ybT4KKyAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICA8RGlnZXN0VmFsdWU+TjZwangzT1kyVlJITW1MaG9BVjhIbU11Mm5jPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgIDwvU2lnbmVkSW5mbz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1lbnZlbG9waW5nLWI2NC1kc2EueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZW52ZWxvcGluZy1iNjQtZHNhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTkyNGIwCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZW52ZWxvcGluZy1iNjQtZHNhLnhtbApAQCAtMCwwICsxLDQyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgIDxTaWduZWRJbmZvPgorICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiIC8+CisgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIgLz4KKyAgICA8UmVmZXJlbmNlIFVSST0iI29iamVjdCI+CisgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNiYXNlNjQiIC8+CisgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWU+TjZwangzT1kyVlJITW1MaG9BVjhIbU11Mm5jPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgIDwvU2lnbmVkSW5mbz4KKyAgPFNpZ25hdHVyZVZhbHVlPgorICAgIEtnQWVxOGUweVVOZkZ6K21GbFozUWd5UU5NY2lWK1ozQm9EUUR2UU5rZXI3cGF6RW5KbU9JQT09CisgIDwvU2lnbmF0dXJlVmFsdWU+CisgIDxLZXlJbmZvPgorICAgIDxLZXlWYWx1ZT4KKyAgICAgIDxEU0FLZXlWYWx1ZT4KKyAgICAgICAgPFA+CisgICAgICAgICAgM2VPZUF2cW5FeUZwVyt1VFNncmRqN1lMamFUa3B5SGVjS0ZJb0x1OFFaTmtHVFFJMWNpSVRCSDBscWZJa2RDSAorICAgICAgICAgIFNpOGZpVUMzRFRxM0o5RnNKZWY0WVZ0REY3SnBVdkhUT1FxdHE3Wmd4NktDOFd4a3o2clFDeE9yN0YwQXBPWWkKKyAgICAgICAgICA4OXpMUm9lNE1rREdlNnV4MCtXdHlPVFFvVklHTlRERFVGWHJVUU5iTHJFPQorICAgICAgICA8L1A+CisgICAgICAgIDxRPgorICAgICAgICAgIGhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VT0KKyAgICAgICAgPC9RPgorICAgICAgICA8Rz4KKyAgICAgICAgICBubng3aGJkV296R2J0bkZnbmJGbm9wZlJsN1hSYWNwa1BKUkdmNVAySVVnVnNwRVVTVW9ONmkxZkRCZkJnNDN6CisgICAgICAgICAgS3Q3ZGxFYVFMN2I1K0pUWnQzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTQorICAgICAgICAgIDhkMnJoZDJVaTB4SGJrMEQ0NTFuaEx4Vld1bHZpT1NQaHpLS3ZYcmJ5U0E9CisgICAgICAgIDwvRz4KKyAgICAgICAgPFk+CisgICAgICAgICAgY2ZZcGlocEFRZWVwYk5GUzRNQWJRUmhkWHBEaTV3THJ3eEU1aEl2b1lxbzFMOEJRVnU4ZlkxVEZBUHRvYWUxaQorICAgICAgICAgIEJnL0dJSnlQM2lMZnl1QkphRHZKSkxQMzB3Qkg5aS9zNUozNjU2UGV2cE9WZFRmaTc3N0ZpOUdqNnkvaWIyVnYKKyAgICAgICAgICArT1pmSmtrcDRMNTArcDVUVWhQbVFMSnRSRXNndGwrdG5JT3lKVCsrRzlVPQorICAgICAgICA8L1k+CisgICAgICA8L0RTQUtleVZhbHVlPgorICAgIDwvS2V5VmFsdWU+CisgIDwvS2V5SW5mbz4KKyAgPE9iamVjdCBJZD0ib2JqZWN0Ij5jMjl0WlNCMFpYaDA8L09iamVjdD4KKzwvU2lnbmF0dXJlPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZW52ZWxvcGluZy1kc2EtYzE0bi0wLnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWVudmVsb3BpbmctZHNhLWMxNG4tMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYxNDhlYgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWVudmVsb3BpbmctZHNhLWMxNG4tMC50eHQKQEAgLTAsMCArMSBAQAorPE9iamVjdCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Im9iamVjdCI+c29tZSB0ZXh0PC9PYmplY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZW52ZWxvcGluZy1kc2EtYzE0bi0xLnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWVudmVsb3BpbmctZHNhLWMxNG4tMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDIyZTUzZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWVudmVsb3BpbmctZHNhLWMxNG4tMS50eHQKQEAgLTAsMCArMSw4IEBACis8U2lnbmVkSW5mbyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI+PC9DYW5vbmljYWxpemF0aW9uTWV0aG9kPgorICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiPjwvU2lnbmF0dXJlTWV0aG9kPgorICAgIDxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICA8RGlnZXN0VmFsdWU+Ny9YVHNIYUJTT25KL2pYRDV2MHpMNlZLWXNrPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgIDwvU2lnbmVkSW5mbz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1lbnZlbG9waW5nLWRzYS54bWwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1lbnZlbG9waW5nLWRzYS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDg4YWMyNgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWVudmVsb3BpbmctZHNhLnhtbApAQCAtMCwwICsxLDM5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgIDxTaWduZWRJbmZvPgorICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiIC8+CisgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIgLz4KKyAgICA8UmVmZXJlbmNlIFVSST0iI29iamVjdCI+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWU+Ny9YVHNIYUJTT25KL2pYRDV2MHpMNlZLWXNrPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgIDwvU2lnbmVkSW5mbz4KKyAgPFNpZ25hdHVyZVZhbHVlPgorICAgIFBmRDkybGt4S2djMk9LdkY0cDBiYTZjSmo2ZDFlcUlEeDVRMWh2VllUdmlvdGplMjNTbnVudz09CisgIDwvU2lnbmF0dXJlVmFsdWU+CisgIDxLZXlJbmZvPgorICAgIDxLZXlWYWx1ZT4KKyAgICAgIDxEU0FLZXlWYWx1ZT4KKyAgICAgICAgPFA+CisgICAgICAgICAgM2VPZUF2cW5FeUZwVyt1VFNncmRqN1lMamFUa3B5SGVjS0ZJb0x1OFFaTmtHVFFJMWNpSVRCSDBscWZJa2RDSAorICAgICAgICAgIFNpOGZpVUMzRFRxM0o5RnNKZWY0WVZ0REY3SnBVdkhUT1FxdHE3Wmd4NktDOFd4a3o2clFDeE9yN0YwQXBPWWkKKyAgICAgICAgICA4OXpMUm9lNE1rREdlNnV4MCtXdHlPVFFvVklHTlRERFVGWHJVUU5iTHJFPQorICAgICAgICA8L1A+CisgICAgICAgIDxRPgorICAgICAgICAgIGhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VT0KKyAgICAgICAgPC9RPgorICAgICAgICA8Rz4KKyAgICAgICAgICBubng3aGJkV296R2J0bkZnbmJGbm9wZlJsN1hSYWNwa1BKUkdmNVAySVVnVnNwRVVTVW9ONmkxZkRCZkJnNDN6CisgICAgICAgICAgS3Q3ZGxFYVFMN2I1K0pUWnQzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTQorICAgICAgICAgIDhkMnJoZDJVaTB4SGJrMEQ0NTFuaEx4Vld1bHZpT1NQaHpLS3ZYcmJ5U0E9CisgICAgICAgIDwvRz4KKyAgICAgICAgPFk+CisgICAgICAgICAgY2ZZcGlocEFRZWVwYk5GUzRNQWJRUmhkWHBEaTV3THJ3eEU1aEl2b1lxbzFMOEJRVnU4ZlkxVEZBUHRvYWUxaQorICAgICAgICAgIEJnL0dJSnlQM2lMZnl1QkphRHZKSkxQMzB3Qkg5aS9zNUozNjU2UGV2cE9WZFRmaTc3N0ZpOUdqNnkvaWIyVnYKKyAgICAgICAgICArT1pmSmtrcDRMNTArcDVUVWhQbVFMSnRSRXNndGwrdG5JT3lKVCsrRzlVPQorICAgICAgICA8L1k+CisgICAgICA8L0RTQUtleVZhbHVlPgorICAgIDwvS2V5VmFsdWU+CisgIDwvS2V5SW5mbz4KKyAgPE9iamVjdCBJZD0ib2JqZWN0Ij5zb21lIHRleHQ8L09iamVjdD4KKzwvU2lnbmF0dXJlPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTEtNDAtYzE0bi0wLnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGExLTQwLWMxNG4tMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYxNDhlYgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGExLTQwLWMxNG4tMC50eHQKQEAgLTAsMCArMSBAQAorPE9iamVjdCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Im9iamVjdCI+c29tZSB0ZXh0PC9PYmplY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTEtNDAtYzE0bi0xLnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGExLTQwLWMxNG4tMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRmNDA2MAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGExLTQwLWMxNG4tMS50eHQKQEAgLTAsMCArMSwxMCBAQAorPFNpZ25lZEluZm8geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiPjwvQ2Fub25pY2FsaXphdGlvbk1ldGhvZD4KKyAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSI+CisgICAgICA8SE1BQ091dHB1dExlbmd0aD40MDwvSE1BQ091dHB1dExlbmd0aD4KKyAgICA8L1NpZ25hdHVyZU1ldGhvZD4KKyAgICA8UmVmZXJlbmNlIFVSST0iI29iamVjdCI+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgPERpZ2VzdFZhbHVlPjcvWFRzSGFCU09uSi9qWEQ1djB6TDZWS1lzaz08L0RpZ2VzdFZhbHVlPgorICAgIDwvUmVmZXJlbmNlPgorICA8L1NpZ25lZEluZm8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTEtNDAueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTEtNDAueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5MDRkNzkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMS00MC54bWwKQEAgLTAsMCArMSwxNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICA8U2lnbmVkSW5mbz4KKyAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPgorICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIj4KKyAgICAgIDxITUFDT3V0cHV0TGVuZ3RoPjQwPC9ITUFDT3V0cHV0TGVuZ3RoPgorICAgIDwvU2lnbmF0dXJlTWV0aG9kPgorICAgIDxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZT43L1hUc0hhQlNPbkovalhENXYwekw2VktZc2s9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgorICA8U2lnbmF0dXJlVmFsdWU+CisgICAgSEhpcXZDVT0KKyAgPC9TaWduYXR1cmVWYWx1ZT4KKyAgPE9iamVjdCBJZD0ib2JqZWN0Ij5zb21lIHRleHQ8L09iamVjdD4KKzwvU2lnbmF0dXJlPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTEtYzE0bi0wLnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGExLWMxNG4tMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYxNDhlYgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGExLWMxNG4tMC50eHQKQEAgLTAsMCArMSBAQAorPE9iamVjdCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Im9iamVjdCI+c29tZSB0ZXh0PC9PYmplY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTEtYzE0bi0xLnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGExLWMxNG4tMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTBjZGM4OAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGExLWMxNG4tMS50eHQKQEAgLTAsMCArMSw4IEBACis8U2lnbmVkSW5mbyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI+PC9DYW5vbmljYWxpemF0aW9uTWV0aG9kPgorICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIj48L1NpZ25hdHVyZU1ldGhvZD4KKyAgICA8UmVmZXJlbmNlIFVSST0iI29iamVjdCI+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgPERpZ2VzdFZhbHVlPjcvWFRzSGFCU09uSi9qWEQ1djB6TDZWS1lzaz08L0RpZ2VzdFZhbHVlPgorICAgIDwvUmVmZXJlbmNlPgorICA8L1NpZ25lZEluZm8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTEueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwYzgzNDMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMS54bWwKQEAgLTAsMCArMSwxNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICA8U2lnbmVkSW5mbz4KKyAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPgorICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIiAvPgorICAgIDxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZT43L1hUc0hhQlNPbkovalhENXYwekw2VktZc2s9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgorICA8U2lnbmF0dXJlVmFsdWU+CisgICAgSkVsUHR0SVQ0QW03UStNTm9NeXYrV0RmQVp3PQorICA8L1NpZ25hdHVyZVZhbHVlPgorICA8T2JqZWN0IElkPSJvYmplY3QiPnNvbWUgdGV4dDwvT2JqZWN0PgorPC9TaWduYXR1cmU+CmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXJzYS1jMTRuLTAudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZW52ZWxvcGluZy1yc2EtYzE0bi0wLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjE0OGViCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZW52ZWxvcGluZy1yc2EtYzE0bi0wLnR4dApAQCAtMCwwICsxIEBACis8T2JqZWN0IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiBJZD0ib2JqZWN0Ij5zb21lIHRleHQ8L09iamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXJzYS1jMTRuLTEudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZW52ZWxvcGluZy1yc2EtYzE0bi0xLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTVlZDMzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZW52ZWxvcGluZy1yc2EtYzE0bi0xLnR4dApAQCAtMCwwICsxLDggQEAKKzxTaWduZWRJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ij48L0Nhbm9uaWNhbGl6YXRpb25NZXRob2Q+CisgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSI+PC9TaWduYXR1cmVNZXRob2Q+CisgICAgPFJlZmVyZW5jZSBVUkk9IiNvYmplY3QiPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgIDxEaWdlc3RWYWx1ZT43L1hUc0hhQlNPbkovalhENXYwekw2VktZc2s9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWVudmVsb3BpbmctcnNhLnhtbCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWVudmVsb3BpbmctcnNhLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTgwZDgzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZW52ZWxvcGluZy1yc2EueG1sCkBAIC0wLDAgKzEsMzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgPFNpZ25lZEluZm8+CisgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIgLz4KKyAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIiAvPgorICAgIDxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZT43L1hUc0hhQlNPbkovalhENXYwekw2VktZc2s9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgorICA8U2lnbmF0dXJlVmFsdWU+CisgICAgb3YzSE9vUE4wdzcxTjNEZEdOaE4rZFN6UW02TkpGVUI1cUdLUnA5UTk4Nm5Wek1iOHdDSVZ4Q1F1K3gzdk10cQorICAgIHA0L1IzS0VjUHRFSlNhb1IrdGhHcSsrR1BJaDJtWlh5V0pzM3hIeTlQNHhtb1RWd2xpNy9sN3M4ZWJEU21uYloKKyAgICA3eFpVNEl5MUJTTVpTeEdLblJHK1ovMEdKSWZUejhqaEg2d0NlM2wwM0w0PQorICA8L1NpZ25hdHVyZVZhbHVlPgorICA8S2V5SW5mbz4KKyAgICA8S2V5VmFsdWU+CisgICAgICA8UlNBS2V5VmFsdWU+CisgICAgICAgIDxNb2R1bHVzPgorICAgICAgICAgIHEwN2hweEE1REdGZnZKRlp1ZUZsL0xJODVYeFF4cnZxZ1Z1Z0wyNVYwOTBBOU1ybExCZzVQbUFzeEZUZStHNmEKKyAgICAgICAgICB4dldKUXdZT1ZIai9udWlDbk5MYTlhN3VBdFBGaVR0Vyt2NUgzd2xMYVkzd3M0YXRSQk5PUWxZa0lCcDM4c1RmCisgICAgICAgICAgUUJrazRpOFBFVTFHUTJNMENMSUpxNC8yQWtmdjF3eHpTUTkrOG9Xa0FyYz0KKyAgICAgICAgPC9Nb2R1bHVzPgorICAgICAgICA8RXhwb25lbnQ+CisgICAgICAgICAgQVFBQgorICAgICAgICA8L0V4cG9uZW50PgorICAgICAgPC9SU0FLZXlWYWx1ZT4KKyAgICA8L0tleVZhbHVlPgorICA8L0tleUluZm8+CisgIDxPYmplY3QgSWQ9Im9iamVjdCI+c29tZSB0ZXh0PC9PYmplY3Q+Cis8L1NpZ25hdHVyZT4KZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWV4dGVybmFsLWI2NC1kc2EtYzE0bi0wLnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWV4dGVybmFsLWI2NC1kc2EtYzE0bi0wLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzJlN2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZXh0ZXJuYWwtYjY0LWRzYS1jMTRuLTAudHh0CkBAIC0wLDAgKzEsMTEgQEAKKzxTaWduZWRJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ij48L0Nhbm9uaWNhbGl6YXRpb25NZXRob2Q+CisgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSI+PC9TaWduYXR1cmVNZXRob2Q+CisgICAgPFJlZmVyZW5jZSBVUkk9Imh0dHA6Ly93d3cudzMub3JnL1NpZ25hdHVyZS8yMDAyLzA0L3htbC1zdHlsZXNoZWV0LmI2NCI+CisgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNiYXNlNjQiPjwvVHJhbnNmb3JtPgorICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgIDxEaWdlc3RWYWx1ZT42ME52WnZ0ZFRCKzdVbmxMcC9IMjRwN2g0YnM9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWV4dGVybmFsLWI2NC1kc2EueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZXh0ZXJuYWwtYjY0LWRzYS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZiNTY2MwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWV4dGVybmFsLWI2NC1kc2EueG1sCkBAIC0wLDAgKzEsNDEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgPFNpZ25lZEluZm8+CisgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIgLz4KKyAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIiAvPgorICAgIDxSZWZlcmVuY2UgVVJJPSJodHRwOi8vd3d3LnczLm9yZy9TaWduYXR1cmUvMjAwMi8wNC94bWwtc3R5bGVzaGVldC5iNjQiPgorICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjYmFzZTY0IiAvPgorICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgPERpZ2VzdFZhbHVlPjYwTnZadnRkVEIrN1VubExwL0gyNHA3aDRicz08L0RpZ2VzdFZhbHVlPgorICAgIDwvUmVmZXJlbmNlPgorICA8L1NpZ25lZEluZm8+CisgIDxTaWduYXR1cmVWYWx1ZT4KKyAgICBJaE9sQWpNRmFadGtFanU1UjViaTUyOGgxSHBEYTRBMjFzdWRaeW5oSlJSTGpadVFJSFozZVE9PQorICA8L1NpZ25hdHVyZVZhbHVlPgorICA8S2V5SW5mbz4KKyAgICA8S2V5VmFsdWU+CisgICAgICA8RFNBS2V5VmFsdWU+CisgICAgICAgIDxQPgorICAgICAgICAgIDNlT2VBdnFuRXlGcFcrdVRTZ3JkajdZTGphVGtweUhlY0tGSW9MdThRWk5rR1RRSTFjaUlUQkgwbHFmSWtkQ0gKKyAgICAgICAgICBTaThmaVVDM0RUcTNKOUZzSmVmNFlWdERGN0pwVXZIVE9RcXRxN1pneDZLQzhXeGt6NnJRQ3hPcjdGMEFwT1lpCisgICAgICAgICAgODl6TFJvZTRNa0RHZTZ1eDArV3R5T1RRb1ZJR05URERVRlhyVVFOYkxyRT0KKyAgICAgICAgPC9QPgorICAgICAgICA8UT4KKyAgICAgICAgICBoRExjRkswR08vSHoxYXJ4T092c2dNL1ZMeVU9CisgICAgICAgIDwvUT4KKyAgICAgICAgPEc+CisgICAgICAgICAgbm54N2hiZFdvekdidG5GZ25iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzegorICAgICAgICAgIEt0N2RsRWFRTDdiNStKVFp0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ00KKyAgICAgICAgICA4ZDJyaGQyVWkweEhiazBENDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBPQorICAgICAgICA8L0c+CisgICAgICAgIDxZPgorICAgICAgICAgIGNmWXBpaHBBUWVlcGJORlM0TUFiUVJoZFhwRGk1d0xyd3hFNWhJdm9ZcW8xTDhCUVZ1OGZZMVRGQVB0b2FlMWkKKyAgICAgICAgICBCZy9HSUp5UDNpTGZ5dUJKYUR2SkpMUDMwd0JIOWkvczVKMzY1NlBldnBPVmRUZmk3NzdGaTlHajZ5L2liMlZ2CisgICAgICAgICAgK09aZkpra3A0TDUwK3A1VFVoUG1RTEp0UkVzZ3RsK3RuSU95SlQrK0c5VT0KKyAgICAgICAgPC9ZPgorICAgICAgPC9EU0FLZXlWYWx1ZT4KKyAgICA8L0tleVZhbHVlPgorICA8L0tleUluZm8+Cis8L1NpZ25hdHVyZT4KZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWV4dGVybmFsLWRzYS1jMTRuLTAudHh0IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUtZXh0ZXJuYWwtZHNhLWMxNG4tMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFhZmMzNgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWV4dGVybmFsLWRzYS1jMTRuLTAudHh0CkBAIC0wLDAgKzEsOCBAQAorPFNpZ25lZEluZm8geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiPjwvQ2Fub25pY2FsaXphdGlvbk1ldGhvZD4KKyAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIj48L1NpZ25hdHVyZU1ldGhvZD4KKyAgICA8UmVmZXJlbmNlIFVSST0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sLXN0eWxlc2hlZXQiPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgIDxEaWdlc3RWYWx1ZT42ME52WnZ0ZFRCKzdVbmxMcC9IMjRwN2g0YnM9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWV4dGVybmFsLWRzYS54bWwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1leHRlcm5hbC1kc2EueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ZDNlNmEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1leHRlcm5hbC1kc2EueG1sCkBAIC0wLDAgKzEsMzggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgPFNpZ25lZEluZm8+CisgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIgLz4KKyAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIiAvPgorICAgIDxSZWZlcmVuY2UgVVJJPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldCI+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWU+NjBOdlp2dGRUQis3VW5sTHAvSDI0cDdoNGJzPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgIDwvU2lnbmVkSW5mbz4KKyAgPFNpZ25hdHVyZVZhbHVlPgorICAgIExhTDEvdC9Yb2RZdkRKRGdTRWJxNDdHWDhsdG5seDNGRlVSZGk3bytVRlZpK3pMZjBXeVdhUT09CisgIDwvU2lnbmF0dXJlVmFsdWU+CisgIDxLZXlJbmZvPgorICAgIDxLZXlWYWx1ZT4KKyAgICAgIDxEU0FLZXlWYWx1ZT4KKyAgICAgICAgPFA+CisgICAgICAgICAgM2VPZUF2cW5FeUZwVyt1VFNncmRqN1lMamFUa3B5SGVjS0ZJb0x1OFFaTmtHVFFJMWNpSVRCSDBscWZJa2RDSAorICAgICAgICAgIFNpOGZpVUMzRFRxM0o5RnNKZWY0WVZ0REY3SnBVdkhUT1FxdHE3Wmd4NktDOFd4a3o2clFDeE9yN0YwQXBPWWkKKyAgICAgICAgICA4OXpMUm9lNE1rREdlNnV4MCtXdHlPVFFvVklHTlRERFVGWHJVUU5iTHJFPQorICAgICAgICA8L1A+CisgICAgICAgIDxRPgorICAgICAgICAgIGhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VT0KKyAgICAgICAgPC9RPgorICAgICAgICA8Rz4KKyAgICAgICAgICBubng3aGJkV296R2J0bkZnbmJGbm9wZlJsN1hSYWNwa1BKUkdmNVAySVVnVnNwRVVTVW9ONmkxZkRCZkJnNDN6CisgICAgICAgICAgS3Q3ZGxFYVFMN2I1K0pUWnQzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTQorICAgICAgICAgIDhkMnJoZDJVaTB4SGJrMEQ0NTFuaEx4Vld1bHZpT1NQaHpLS3ZYcmJ5U0E9CisgICAgICAgIDwvRz4KKyAgICAgICAgPFk+CisgICAgICAgICAgY2ZZcGlocEFRZWVwYk5GUzRNQWJRUmhkWHBEaTV3THJ3eEU1aEl2b1lxbzFMOEJRVnU4ZlkxVEZBUHRvYWUxaQorICAgICAgICAgIEJnL0dJSnlQM2lMZnl1QkphRHZKSkxQMzB3Qkg5aS9zNUozNjU2UGV2cE9WZFRmaTc3N0ZpOUdqNnkvaWIyVnYKKyAgICAgICAgICArT1pmSmtrcDRMNTArcDVUVWhQbVFMSnRSRXNndGwrdG5JT3lKVCsrRzlVPQorICAgICAgICA8L1k+CisgICAgICA8L0RTQUtleVZhbHVlPgorICAgIDwvS2V5VmFsdWU+CisgIDwvS2V5SW5mbz4KKzwvU2lnbmF0dXJlPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUta2V5bmFtZS54bWwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1rZXluYW1lLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2M2MGEzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUta2V5bmFtZS54bWwKQEAgLTAsMCArMSwxNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICA8U2lnbmVkSW5mbz4KKyAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPgorICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiIC8+CisgICAgPFJlZmVyZW5jZSBVUkk9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1zdHlsZXNoZWV0Ij4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZT42ME52WnZ0ZFRCKzdVbmxMcC9IMjRwN2g0YnM9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgorICA8U2lnbmF0dXJlVmFsdWU+CisgICAgSmtKM0dwbEVVMGlEYnFTdjdaT1hodnYzemVNMUttUCtDTHBoaG9jK05QWXFwR1lRaVc2TzZ3PT0KKyAgPC9TaWduYXR1cmVWYWx1ZT4KKyAgPEtleUluZm8+CisgICAgPEtleU5hbWU+THVnaDwvS2V5TmFtZT4KKyAgPC9LZXlJbmZvPgorPC9TaWduYXR1cmU+CmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1yZXRyaWV2YWxtZXRob2QtcmF3eDUwOWNydC54bWwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1yZXRyaWV2YWxtZXRob2QtcmF3eDUwOWNydC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU4NjFkOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLXJldHJpZXZhbG1ldGhvZC1yYXd4NTA5Y3J0LnhtbApAQCAtMCwwICsxLDE3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgIDxTaWduZWRJbmZvPgorICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiIC8+CisgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIgLz4KKyAgICA8UmVmZXJlbmNlIFVSST0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sLXN0eWxlc2hlZXQiPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgPERpZ2VzdFZhbHVlPjYwTnZadnRkVEIrN1VubExwL0gyNHA3aDRicz08L0RpZ2VzdFZhbHVlPgorICAgIDwvUmVmZXJlbmNlPgorICA8L1NpZ25lZEluZm8+CisgIDxTaWduYXR1cmVWYWx1ZT4KKyAgICBTTkI1RkkxOTNSRlhvRzJqOFo5YlhXZ1c3Qk1QSUNxTm9iNEhqaDA4b291NHRraEd4ejQrcGc9PQorICA8L1NpZ25hdHVyZVZhbHVlPgorICA8S2V5SW5mbz4KKyAgICA8UmV0cmlldmFsTWV0aG9kIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyYXdYNTA5Q2VydGlmaWNhdGUiIFVSST0iY2VydHMvYmFsb3IuY3J0IiAvPgorICA8L0tleUluZm8+Cis8L1NpZ25hdHVyZT4KZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLXg1MDktY3J0LWNybC54bWwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS14NTA5LWNydC1jcmwueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMDE3OTcKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS14NTA5LWNydC1jcmwueG1sCkBAIC0wLDAgKzEsNDcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgPFNpZ25lZEluZm8+CisgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIgLz4KKyAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIiAvPgorICAgIDxSZWZlcmVuY2UgVVJJPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldCI+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWU+NjBOdlp2dGRUQis3VW5sTHAvSDI0cDdoNGJzPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgIDwvU2lnbmVkSW5mbz4KKyAgPFNpZ25hdHVyZVZhbHVlPgorICAgIFdGNkVhWDY2ZjhDZEdFNk5hZm16ZExwYi8xT1ZZWDRrQk5zcWdHSXFIUjVKWkF1NEhwYlZRUT09CisgIDwvU2lnbmF0dXJlVmFsdWU+CisgIDxLZXlJbmZvPgorICAgIDxYNTA5RGF0YT4KKyAgICAgIDxYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgIE1JSURUakNDQXc2Z0F3SUJBZ0lHQU96NUlkNS9NQWtHQnlxR1NNNDRCQU13ZGpFTE1Ba0dBMVVFQmhNQ1NVVXgKKyAgICAgICAgRHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbAorICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURWRNQnNHQTFVRUF4TVVRVzV2ZEdobGNpQlVjbUZ1CisgICAgICAgIGMybGxiblFnUTBFd0hoY05NREl3TkRBek1EQXdNREk0V2hjTk1USXdOREF5TWpJMU9UUTJXakJtTVFzd0NRWUQKKyAgICAgICAgVlFRR0V3SkpSVEVQTUEwR0ExVUVDQk1HUkhWaWJHbHVNU1F3SWdZRFZRUUtFeHRDWVd4MGFXMXZjbVVnVkdWagorICAgICAgICBhRzV2Ykc5bmFXVnpJRXgwWkM0eEVUQVBCZ05WQkFzVENGZ3ZVMlZqZFhKbE1RMHdDd1lEVlFRREV3UkNjbVZ6CisgICAgICAgIE1JSUJ0akNDQVNzR0J5cUdTTTQ0QkFFd2dnRWVBb0dCQUlTS3NFb25qTkdnSHMvdWgrOVlLZ253WjhCdDNUN3UKKyAgICAgICAgeVFCSlc5ZHhwTUYwY1BVWHo0ZEZiU0ZZNFF5VzhpZ0NMc3dwT2ErZUhIRVlzV3ZFME5yMWxjS0hVUFhxN3U0MQorICAgICAgICBKSndITnExUkFGZVppVTZ3YSsxRkwzdjEvVDFyQWd6ZXBWN3hTNGlhZno0dnhkSE1sZndnS2ZveUtmcTZKVTF6CisgICAgICAgIG9WTS9haEk1eFdEREFoVUFtRXY2ZUlKckI0S04wZlBSQUJQeDNOSFljbGtDZ1lBbGh1WVovQXpQdGE3K2JFNUMKKyAgICAgICAgUWFzbVNWemM4dU0vZStMTjdBQmxFWHdRUms2UWZaQmNYOFRiZVBORThaRm5nNFVmdC9RekFPVXhBTEVUN2tLQQorICAgICAgICBlazRKZXl0cHpjMFhZQ1l5dUdKQVRtNEY5WlkxcEFKNXlRbVVtd3ZEWWRsYVpKNGxkR3pPL1I1N0V2bmduL0c0CisgICAgICAgIHRxampvaTBzeDNqcTdjenZEd2RHSG5reTBBT0JoQUFDZ1lCZ3ZERnh3MVU2T3UyRzZQLyszNDdKZmsyd1BCMS8KKyAgICAgICAgYXRyNHAzSlVWTHVUMEV4Wkc2bnArcktpWG1jQmJZS2JBaE1ZMzd6Vmtyb1I5YndvK05nYUpHdWJRNGV4NVkxWAorICAgICAgICBOMlE1Z0lITmhOZktyOEc0TFBWcVdHeGYvbEZQRFl4WDNlenFCSlBwSkNKVFJFWDdzNkhwL1ZUVjJTcFFseVN2CisgICAgICAgICtHUmNGS0pGUGxoRDlhTTZNRGd3RGdZRFZSMFBBUUgvQkFRREFnZUFNQkVHQTFVZERnUUtCQWlDKzVneDBNSEwKKyAgICAgICAgaFRBVEJnTlZIU01FRERBS2dBaUtIRll3V2pJU2ZUQUpCZ2NxaGtqT09BUURBeThBTUN3Q0ZEVGNNNWk2MXVxcQorICAgICAgICAvYXZlRVJoT0o2TkcvTHViQWhSRVZEdEFlTmJURXl3WHI0TzdLdkVFdkZMVWpnPT0KKyAgICAgIDwvWDUwOUNlcnRpZmljYXRlPgorICAgICAgPFg1MDlDUkw+CisgICAgICAgIE1JSUJKRENCNUFJQkFUQUpCZ2NxaGtqT09BUURNSFl4Q3pBSkJnTlZCQVlUQWtsRk1ROHdEUVlEVlFRSUV3WkUKKyAgICAgICAgZFdKc2FXNHhKREFpQmdOVkJBb1RHMEpoYkhScGJXOXlaU0JVWldOb2JtOXNiMmRwWlhNZ1RIUmtMakVSTUE4RworICAgICAgICBBMVVFQ3hNSVdDOVRaV04xY21VeEhUQWJCZ05WQkFNVEZFRnViM1JvWlhJZ1ZISmhibk5wWlc1MElFTkJGdzB3CisgICAgICAgIE1qQTBNRFF3TWpFMk5UaGFGdzB4TVRBME1ESXdNakUyTlRoYU1Ca3dGd0lHQU96NUlkNS9GdzB3TWpBME1EUXcKKyAgICAgICAgTWpFMk5UaGFvQ013SVRBVEJnTlZIU01FRERBS2dBaUtIRll3V2pJU2ZUQUtCZ05WSFJRRUF3SUJBREFKQmdjcQorICAgICAgICBoa2pPT0FRREF6QUFNQzBDRkNFSW0zOGZ2R3pTSkhtczI4NGhVczlkTkI4bkFoVUFqRXRacjBUR2djNnNWUlZrCisgICAgICAgIGtyRWdsdGRvN0p3PQorICAgICAgPC9YNTA5Q1JMPgorICAgIDwvWDUwOURhdGE+CisgIDwvS2V5SW5mbz4KKzwvU2lnbmF0dXJlPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUteDUwOS1jcnQueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUteDUwOS1jcnQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNDhmZDIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS14NTA5LWNydC54bWwKQEAgLTAsMCArMSwzOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICA8U2lnbmVkSW5mbz4KKyAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPgorICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiIC8+CisgICAgPFJlZmVyZW5jZSBVUkk9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1zdHlsZXNoZWV0Ij4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZT42ME52WnZ0ZFRCKzdVbmxMcC9IMjRwN2g0YnM9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgorICA8U2lnbmF0dXJlVmFsdWU+CisgICAgR0NRVm1CcSsxSDdlOUlqdktmZStlZ0xNMUpscDNMMUpDR2tsOVNsSjBlYURoMk1LWVVVbkhBPT0KKyAgPC9TaWduYXR1cmVWYWx1ZT4KKyAgPEtleUluZm8+CisgICAgPFg1MDlEYXRhPgorICAgICAgPFg1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgTUlJRFVEQ0NBeENnQXdJQkFnSUdBT3o1SVZIVE1Ba0dCeXFHU000NEJBTXdkakVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICBEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsCisgICAgICAgIGN5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFZE1Cc0dBMVVFQXhNVVFXNXZkR2hsY2lCVWNtRnUKKyAgICAgICAgYzJsbGJuUWdRMEV3SGhjTk1ESXdOREF5TWpNMU9UVXlXaGNOTVRJd05EQXlNakkxT1RRMldqQm9NUXN3Q1FZRAorICAgICAgICBWUVFHRXdKSlJURVBNQTBHQTFVRUNCTUdSSFZpYkdsdU1TUXdJZ1lEVlFRS0V4dENZV3gwYVcxdmNtVWdWR1ZqCisgICAgICAgIGFHNXZiRzluYVdWeklFeDBaQzR4RVRBUEJnTlZCQXNUQ0ZndlUyVmpkWEpsTVE4d0RRWURWUVFERXdaTmIzSnAKKyAgICAgICAgWjNVd2dnRzJNSUlCS3dZSEtvWkl6amdFQVRDQ0FSNENnWUVBaElxd1NpZU0wYUFleis2SDcxZ3FDZkJud0czZAorICAgICAgICBQdTdKQUVsYjEzR2t3WFJ3OVJmUGgwVnRJVmpoREpieUtBSXV6Q2s1cjU0Y2NSaXhhOFRRMnZXVndvZFE5ZXJ1CisgICAgICAgIDdqVWtuQWMyclZFQVY1bUpUckJyN1VVdmUvWDlQV3NDRE42bFh2RkxpSnAvUGkvRjBjeVYvQ0FwK2pJcCtyb2wKKyAgICAgICAgVFhPaFV6OXFFam5GWU1NQ0ZRQ1lTL3A0Z21zSGdvM1I4OUVBRS9IYzBkaHlXUUtCZ0NXRzVobjhETSsxcnY1cworICAgICAgICBUa0pCcXlaSlhOenk0ejk3NHMzc0FHVVJmQkJHVHBCOWtGeGZ4TnQ0ODBUeGtXZURoUiszOURNQTVURUFzUlB1CisgICAgICAgIFFvQjZUZ2w3SzJuTnpSZGdKaks0WWtCT2JnWDFsaldrQW5uSkNaU2JDOE5oMlZwa25pVjBiTTc5SG5zUytlQ2YKKyAgICAgICAgOGJpMnFPT2lMU3pIZU9ydHpPOFBCMFllZVRMUUE0R0VBQUtCZ0gxTkJKOUF6NVR3WTR0REUwZFBZVkhIQUJ0KworICAgICAgICB5THNwblQzazlHNllXVU1GaFovKzNSdXFFUGpuS3JQZlVvWFRUSkdJQUNnUFUzL1BrcXdyUFZEMEpNZHBPY25aCisgICAgICAgIExIaUovUDdRUlFlTXdEUm9CcnM3Z2VuQjFiRGQ0cFNKckVVY2pya0E1dVJySWoyWjVmTCtVdUxpTEdQTzJyTTcKKyAgICAgICAgQk5RUklxM1FGUGRYKytOdW96b3dPREFPQmdOVkhROEJBZjhFQkFNQ0I0QXdFUVlEVlIwT0JBb0VDSUs3TGpqaAorICAgICAgICArRXNmTUJNR0ExVWRJd1FNTUFxQUNJb2NWakJhTWhKOU1Ba0dCeXFHU000NEJBTURMd0F3TEFJVUVKSkNPSHc4CisgICAgICAgIHBweG9SeXozcytWbWI0TktJZk1DRkRnSm9abjl6aC8zV29ZTkJVUk9Ed0x2eUJPeQorICAgICAgPC9YNTA5Q2VydGlmaWNhdGU+CisgICAgPC9YNTA5RGF0YT4KKyAgPC9LZXlJbmZvPgorPC9TaWduYXR1cmU+CmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS14NTA5LWlzLnhtbCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLXg1MDktaXMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3YTAxZjgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS14NTA5LWlzLnhtbApAQCAtMCwwICsxLDI0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgIDxTaWduZWRJbmZvPgorICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiIC8+CisgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIgLz4KKyAgICA8UmVmZXJlbmNlIFVSST0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sLXN0eWxlc2hlZXQiPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgPERpZ2VzdFZhbHVlPjYwTnZadnRkVEIrN1VubExwL0gyNHA3aDRicz08L0RpZ2VzdFZhbHVlPgorICAgIDwvUmVmZXJlbmNlPgorICA8L1NpZ25lZEluZm8+CisgIDxTaWduYXR1cmVWYWx1ZT4KKyAgICBibUtNeS93MURPOWRIQTZFN0R0MEI4SUZrWUFqMS9VRDNUcWNkcUljZmtNVDdldkU4K05CZ2c9PQorICA8L1NpZ25hdHVyZVZhbHVlPgorICA8S2V5SW5mbz4KKyAgICA8WDUwOURhdGE+CisgICAgICA8WDUwOUlzc3VlclNlcmlhbD4KKyAgICAgICAgPFg1MDlJc3N1ZXJOYW1lPgorICAgICAgICAgIENOPUFub3RoZXIgVHJhbnNpZW50IENBLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlIFRlY2hub2xvZ2llcyBMdGQuLFNUPUR1YmxpbixDPUlFCisgICAgICAgIDwvWDUwOUlzc3Vlck5hbWU+CisgICAgICAgIDxYNTA5U2VyaWFsTnVtYmVyPjEwMTc3OTIwMDMwNjY8L1g1MDlTZXJpYWxOdW1iZXI+CisgICAgICA8L1g1MDlJc3N1ZXJTZXJpYWw+CisgICAgPC9YNTA5RGF0YT4KKyAgPC9LZXlJbmZvPgorPC9TaWduYXR1cmU+CmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS14NTA5LXNraS54bWwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS14NTA5LXNraS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzcxYmZjZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLXg1MDktc2tpLnhtbApAQCAtMCwwICsxLDIxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgIDxTaWduZWRJbmZvPgorICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiIC8+CisgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIgLz4KKyAgICA8UmVmZXJlbmNlIFVSST0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sLXN0eWxlc2hlZXQiPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgPERpZ2VzdFZhbHVlPjYwTnZadnRkVEIrN1VubExwL0gyNHA3aDRicz08L0RpZ2VzdFZhbHVlPgorICAgIDwvUmVmZXJlbmNlPgorICA8L1NpZ25lZEluZm8+CisgIDxTaWduYXR1cmVWYWx1ZT4KKyAgICBGOW5FVTFVczQ4aUtUbWw4bjdFNHd0N0h0Rko1Z2FMSWdveDBKOVdidWpHbmRXMG9RSmJlR2c9PQorICA8L1NpZ25hdHVyZVZhbHVlPgorICA8S2V5SW5mbz4KKyAgICA8WDUwOURhdGE+CisgICAgICA8WDUwOVNLST4KKyAgICAgICAgaGYxMHhLZlNuSWc9CisgICAgICA8L1g1MDlTS0k+CisgICAgPC9YNTA5RGF0YT4KKyAgPC9LZXlJbmZvPgorPC9TaWduYXR1cmU+CmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS14NTA5LXNuLnhtbCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLXg1MDktc24ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1YjA4MDgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS14NTA5LXNuLnhtbApAQCAtMCwwICsxLDIxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgIDxTaWduZWRJbmZvPgorICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiIC8+CisgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIgLz4KKyAgICA8UmVmZXJlbmNlIFVSST0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sLXN0eWxlc2hlZXQiPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgPERpZ2VzdFZhbHVlPjYwTnZadnRkVEIrN1VubExwL0gyNHA3aDRicz08L0RpZ2VzdFZhbHVlPgorICAgIDwvUmVmZXJlbmNlPgorICA8L1NpZ25lZEluZm8+CisgIDxTaWduYXR1cmVWYWx1ZT4KKyAgICBNVU9qaXFHMGRianZSNitxWVlQTDg1bktTdDJGZVpHUUJRa1l1ZHY0OEt5SmhKTEcxQnArYkE9PQorICA8L1NpZ25hdHVyZVZhbHVlPgorICA8S2V5SW5mbz4KKyAgICA8WDUwOURhdGE+CisgICAgICA8WDUwOVN1YmplY3ROYW1lPgorICAgICAgICBDTj1CYWRiLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlIFRlY2hub2xvZ2llcyBMdGQuLFNUPUR1YmxpbixDPUlFCisgICAgICA8L1g1MDlTdWJqZWN0TmFtZT4KKyAgICA8L1g1MDlEYXRhPgorICA8L0tleUluZm8+Cis8L1NpZ25hdHVyZT4KZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLnRtcGwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS50bXBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxMGQzNmYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS50bXBsCkBAIC0wLDAgKzEsMjY1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzwhRE9DVFlQRSBlbnZlbG9wZSBbCisgIDwhRU5USVRZIGRzaWcgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICA8IUVOVElUWSBjMTRuICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI+CisgIDwhRU5USVRZIHhwYXRoICJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgIDwhRU5USVRZIHhzbHQgImh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhzbHQtMTk5OTExMTYiPgorICA8IUFUVExJU1QgTm90YXJpZXMgSWQgSUQgI0lNUExJRUQ+CitdPgorPCEtLSBQcmVhbWJsZSAtLT4KKzxFbnZlbG9wZSB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnL3VzcHMiIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI+CisgIDxEZWFyU2lyPmZvbzwvRGVhclNpcj4KKyAgPEJvZHk+YmFyPC9Cb2R5PgorICA8WW91cnNTaW5jZXJlbHk+CisgICAgPFNpZ25hdHVyZSBJZD0ic2lnbmF0dXJlIiB4bWxucz0iJmRzaWc7Ij4KKyAgICAgIDxTaWduZWRJbmZvPgorICAgICAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09IiIgLz4KKyAgICAgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09IiIgLz4KKyAgICAgICAgPFJlZmVyZW5jZSBVUkk9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1zdHlsZXNoZWV0Ij4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5hYWFhPC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSJodHRwOi8vd3d3LnczLm9yZy9TaWduYXR1cmUvMjAwMi8wNC94bWwtc3R5bGVzaGVldC5iNjQiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09IiZkc2lnO2Jhc2U2NCIgLz4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09IiIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+YWFhYTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iI29iamVjdC0xIiBUeXBlPSImZHNpZztPYmplY3QiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09IiZ4cGF0aDsiPgorICAgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgICAgc2VsZjo6dGV4dCgpCisgICAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09IiIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+YWFhYTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iIiBUeXBlPSImZHNpZztPYmplY3QiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09IiZ4cGF0aDsiPgorICAgICAgICAgICAgICA8WFBhdGggeG1sbnM6ZHNpZz0iJmRzaWc7Ij4KKyAgICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpkc2lnOlNpZ25lZEluZm8KKyAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgIGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6OmRzaWc6UmVmZXJlbmNlIHwKKyAgICAgICAgICAgICAgICAgICAgICBoZXJlKCkvYW5jZXN0b3I6OmRzaWc6UmVmZXJlbmNlWzFdKSAmZ3Q7CisgICAgICAgICAgICAgICAgY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6ZHNpZzpSZWZlcmVuY2UpCisgICAgICAgICAgICAgICAgICBvcgorICAgICAgICAgICAgICAgIGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSB8CisgICAgICAgICAgICAgICAgICAgICAgaWQoJ25vdGFyaWVzJykpID0KKyAgICAgICAgICAgICAgICBjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpCisgICAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09IiIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+YWFhYTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iI29iamVjdC0yIiBUeXBlPSImZHNpZztPYmplY3QiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09IiZkc2lnO2Jhc2U2NCIgLz4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09IiIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+YWFhYTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iI21hbmlmZXN0LTEiIFR5cGU9IiZkc2lnO01hbmlmZXN0Ij4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5hYWFhPC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIjc2lnbmF0dXJlLXByb3BlcnRpZXMtMSIgVHlwZT0iJmRzaWc7U2lnbmF0dXJlUHJvcGVydGllcyI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09IiIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+YWFhYTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSImZHNpZztlbnZlbG9wZWQtc2lnbmF0dXJlIiAvPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5hYWFhPC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09IiZkc2lnO2VudmVsb3BlZC1zaWduYXR1cmUiIC8+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iJmMxNG47I1dpdGhDb21tZW50cyIgLz4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09IiIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+YWFhYTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKC8pIj4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSImZHNpZztlbnZlbG9wZWQtc2lnbmF0dXJlIiAvPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5hYWFhPC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoLykiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09IiZkc2lnO2VudmVsb3BlZC1zaWduYXR1cmUiIC8+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iJmMxNG47I1dpdGhDb21tZW50cyIgLz4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09IiIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+YWFhYTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iI29iamVjdC0zIiBUeXBlPSImZHNpZztPYmplY3QiPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSIiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPmFhYWE8L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiNvYmplY3QtMyIgVHlwZT0iJmRzaWc7T2JqZWN0Ij4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSImYzE0bjsjV2l0aENvbW1lbnRzIiAvPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5hYWFhPC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoaWQoJ29iamVjdC0zJykpIiBUeXBlPSImZHNpZztPYmplY3QiPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSIiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPmFhYWE8L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcihpZCgnb2JqZWN0LTMnKSkiIFR5cGU9IiZkc2lnO09iamVjdCI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iJmMxNG47I1dpdGhDb21tZW50cyIgLz4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09IiIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+YWFhYTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iI3JlZmVyZW5jZS0yIj4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5hYWFhPC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgSWQ9InJlZmVyZW5jZS0xIiBVUkk9IiNtYW5pZmVzdC1yZWZlcmVuY2UtMSI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09IiIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+YWFhYTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIElkPSJyZWZlcmVuY2UtMiIgVVJJPSIjcmVmZXJlbmNlLTEiPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSIiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPmFhYWE8L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDwvU2lnbmVkSW5mbz4KKyAgICAgIDxTaWduYXR1cmVWYWx1ZT5hYWFhPC9TaWduYXR1cmVWYWx1ZT4KKyAgICAgIDxLZXlJbmZvPgorICAgICAgICA8UmV0cmlldmFsTWV0aG9kIFVSST0iI29iamVjdC00IiBUeXBlPSImZHNpZztYNTA5RGF0YSI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iJnhwYXRoOyI+CisgICAgICAgICAgICAgIDxYUGF0aCB4bWxuczpkc2lnPSImZHNpZzsiPgorICAgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmRzaWc6WDUwOURhdGEKKyAgICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPC9SZXRyaWV2YWxNZXRob2Q+CisgICAgICA8L0tleUluZm8+CisgICAgICA8T2JqZWN0IElkPSJvYmplY3QtMSIgTWltZVR5cGU9InRleHQvcGxhaW4iPkkgYW0gdGhlIHRleHQuPC9PYmplY3Q+CisgICAgICA8T2JqZWN0IElkPSJvYmplY3QtMiIgTWltZVR5cGU9InRleHQvcGxhaW4iIEVuY29kaW5nPSImZHNpZztiYXNlNjQiPlNTQmhiU0IwYUdVZ2RHVjRkQzQ9PC9PYmplY3Q+CisgICAgICA8T2JqZWN0IElkPSJvYmplY3QtMyI+PE5vbkNvbW1lbnRhbmR1cyB4bWxucz0iIj48IS0tIENvbW1lbnRhbmR1bSAtLT48L05vbkNvbW1lbnRhbmR1cz48L09iamVjdD4KKyAgICAgIDxPYmplY3Q+CisgICAgICAgIDxNYW5pZmVzdCBJZD0ibWFuaWZlc3QtMSI+CisgICAgICAgICAgPFJlZmVyZW5jZSBJZD0ibWFuaWZlc3QtcmVmZXJlbmNlLTEiIFVSST0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sLXN0eWxlc2hlZXQiPgorICAgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09IiIgLz4KKyAgICAgICAgICAgIDxEaWdlc3RWYWx1ZT5hYWFhPC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgICA8UmVmZXJlbmNlIFVSST0iI3JlZmVyZW5jZS0xIj4KKyAgICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSIiIC8+CisgICAgICAgICAgICA8RGlnZXN0VmFsdWU+YWFhYTwvRGlnZXN0VmFsdWU+CisgICAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiNub3RhcmllcyI+CisgICAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09IiZ4c2x0OyI+CisgICAgICAgICAgICAgICAgPHhzbDpzdHlsZXNoZWV0IHZlcnNpb249IjEuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9zdHJpY3QiIHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIiBleGNsdWRlLXJlc3VsdC1wcmVmaXhlcz0iZm9vIj4KKyAgICAgICAgICAgICAgICAgIDx4c2w6b3V0cHV0IG1ldGhvZD0ieG1sIiBpbmRlbnQ9Im5vIiBlbmNvZGluZz0iVVRGLTgiLz4KKyAgICAgICAgICAgICAgICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Ii8iPgorICAgICAgICAgICAgICAgICAgICA8aHRtbD4KKyAgICAgICAgICAgICAgICAgICAgICA8aGVhZD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0aXRsZT5Ob3RhcmllczwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkPgorICAgICAgICAgICAgICAgICAgICAgIDxib2R5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0iTm90YXJpZXMvTm90YXJ5Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJAbmFtZSIvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8L3hzbDpmb3ItZWFjaD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgPC9ib2R5PgorICAgICAgICAgICAgICAgICAgICA8L2h0bWw+CisgICAgICAgICAgICAgICAgICA8L3hzbDp0ZW1wbGF0ZT4KKyAgICAgICAgICAgICAgICA8L3hzbDpzdHlsZXNoZWV0PgorICAgICAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09IiZjMTRuOyIgLz4KKyAgICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSIiIC8+CisgICAgICAgICAgICA8RGlnZXN0VmFsdWU+YWFhYTwvRGlnZXN0VmFsdWU+CisgICAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDwvTWFuaWZlc3Q+CisgICAgICA8L09iamVjdD4KKyAgICAgIDxPYmplY3Q+CisgICAgICAgIDxTaWduYXR1cmVQcm9wZXJ0aWVzIElkPSJzaWduYXR1cmUtcHJvcGVydGllcy0xIj4KKyAgICAgICAgICA8U2lnbmF0dXJlUHJvcGVydHkgVGFyZ2V0PSIjc2lnbmF0dXJlIj4KKyAgICAgICAgICAgIDxTaWduZXJBZGRyZXNzIHhtbG5zPSJ1cm46ZGVtbyI+PElQPjE5Mi4xNjguMjEuMTM4PC9JUD48L1NpZ25lckFkZHJlc3M+CisgICAgICAgICAgPC9TaWduYXR1cmVQcm9wZXJ0eT4KKyAgICAgICAgPC9TaWduYXR1cmVQcm9wZXJ0aWVzPgorICAgICAgPC9PYmplY3Q+CisgICAgICA8T2JqZWN0IElkPSJvYmplY3QtNCI+CisgICAgICAgIDxYNTA5RGF0YT4KKyAgICAgICAgICA8WDUwOVN1YmplY3ROYW1lPgorICAgICAgICAgICAgQ049TWVybGluIEh1Z2hlcyxPVT1YL1NlY3VyZSxPPUJhbHRpbW9yZSBUZWNobm9sb2dpZXMgTHRkLixTVD1EdWJsaW4sQz1JRQorICAgICAgICAgIDwvWDUwOVN1YmplY3ROYW1lPgorICAgICAgICAgIDxYNTA5SXNzdWVyU2VyaWFsPgorICAgICAgICAgICAgPFg1MDlJc3N1ZXJOYW1lPgorICAgICAgICAgICAgICBDTj1UcmFuc2llbnQgQ0EsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUgVGVjaG5vbG9naWVzIEx0ZC4sU1Q9RHVibGluLEM9SUUKKyAgICAgICAgICAgIDwvWDUwOUlzc3Vlck5hbWU+CisgICAgICAgICAgICA8WDUwOVNlcmlhbE51bWJlcj4xMDE3Nzg4MzcwMzQ4PC9YNTA5U2VyaWFsTnVtYmVyPgorICAgICAgICAgIDwvWDUwOUlzc3VlclNlcmlhbD4KKyAgICAgICAgICA8WDUwOUNlcnRpZmljYXRlPgorICAgICAgICAgICAgTUlJRFVEQ0NBeENnQXdJQkFnSUdBT3o0Nmcyc01Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgICAgRHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbAorICAgICAgICAgICAgY3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQgorICAgICAgICAgICAgTUI0WERUQXlNRFF3TWpJeU5Ua3pNRm9YRFRFeU1EUXdNakl4TlRreU5Wb3diekVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgICAgRHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbAorICAgICAgICAgICAgY3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVXTUJRR0ExVUVBeE1OVFdWeWJHbHVJRWgxWjJobAorICAgICAgICAgICAgY3pDQ0FiY3dnZ0VzQmdjcWhrak9PQVFCTUlJQkh3S0JnUURkNDU0QytxY1RJV2xiNjVOS0N0MlB0Z3VOcE9TbgorICAgICAgICAgICAgSWQ1d29VaWd1N3hCazJRWk5BalZ5SWhNRWZTV3A4aVIwSWRLTHgrSlFMY05PcmNuMFd3bDUvaGhXME1Yc21sUworICAgICAgICAgICAgOGRNNUNxMnJ0bURIb29MeGJHVFBxdEFMRTZ2c1hRQ2s1aUx6M010R2g3Z3lRTVo3cTdIVDVhM0k1TkNoVWdZMQorICAgICAgICAgICAgTU1OUVZldFJBMXN1c1FJVkFJUXkzQlN0Qmp2eDg5V3E4VGpyN0lEUDFTOGxBb0dCQUo1OGU0VzNWcU14bTdaeAorICAgICAgICAgICAgWUoyeFo2S1gwWmUxMFduS1pEeVVSbitUOWlGSUZiS1JGRWxLRGVvdFh3d1h3WU9OOHlyZTNaUkdrQysyK2ZpVQorICAgICAgICAgICAgMmJkeklXVFQ2TE1iSU1WYmsrMDdQNE9aT3hKNlhXTDlHdVljT1FjTnZYNDJ4aDM0RFBIZHE0WGRsSXRNUjI1TgorICAgICAgICAgICAgQStPZFo0UzhWVnJwYjRqa2o0Y3lpcjE2MjhrZ0E0R0VBQUtCZ0hIMktZb2FRRUhucVd6UlV1REFHMEVZWFY2UQorICAgICAgICAgICAgNHVjQzY4TVJPWVNMNkdLcU5TL0FVRmJ2SDJOVXhRRDdhR250WWdZUHhpQ2NqOTRpMzhyZ1NXZzd5U1N6OTlNQQorICAgICAgICAgICAgUi9ZdjdPU2QrdWVqM3I2VGxYVTM0dSsreFl2Um8rc3Y0bTlsYi9qbVh5WkpLZUMrZFBxZVUxSVQ1a0N5YlVSTAorICAgICAgICAgICAgSUxaZnJaeURzaVUvdmh2Vm96b3dPREFPQmdOVkhROEJBZjhFQkFNQ0I0QXdFUVlEVlIwT0JBb0VDSWF0WTdTRQorICAgICAgICAgICAgbFhFT01CTUdBMVVkSXdRTU1BcUFDSU9HUGtCMk11S1RNQWtHQnlxR1NNNDRCQU1ETHdBd0xBSVVTdlQwMmlRagorICAgICAgICAgICAgUTVkYTRXcGUwQnZzN0d1Q2NWc0NGQ0VjUXBialVmbnhYRlhOV2lGeVE0OVpyV3FuCisgICAgICAgICAgPC9YNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgPFg1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgICAgIE1JSURTekNDQXd1Z0F3SUJBZ0lHQU96NDZmd0pNQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgKKyAgICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICAgIGN5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkIKKyAgICAgICAgICAgIE1CNFhEVEF5TURRd01qSXlOVGt5TlZvWERURXlNRFF3TWpJeE5Ua3lOVm93YmpFTE1Ba0dBMVVFQmhNQ1NVVXgKKyAgICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICAgIGN5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkIKKyAgICAgICAgICAgIE1JSUJ0ekNDQVN3R0J5cUdTTTQ0QkFFd2dnRWZBb0dCQU4zam5nTDZweE1oYVZ2cmswb0szWSsyQzQyazVLY2gKKyAgICAgICAgICAgIDNuQ2hTS0M3dkVHVFpCazBDTlhJaUV3UjlKYW55SkhRaDBvdkg0bEF0dzA2dHlmUmJDWG4rR0ZiUXhleWFWTHgKKyAgICAgICAgICAgIDB6a0tyYXUyWU1laWd2RnNaTStxMEFzVHEreGRBS1RtSXZQY3kwYUh1REpBeG51cnNkUGxyY2prMEtGU0JqVXcKKyAgICAgICAgICAgIHcxQlY2MUVEV3k2eEFoVUFoRExjRkswR08vSHoxYXJ4T092c2dNL1ZMeVVDZ1lFQW5ueDdoYmRXb3pHYnRuRmcKKyAgICAgICAgICAgIG5iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzekt0N2RsRWFRTDdiNStKVFoKKyAgICAgICAgICAgIHQzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTThkMnJoZDJVaTB4SGJrMEQKKyAgICAgICAgICAgIDQ1MW5oTHhWV3VsdmlPU1BoektLdlhyYnlTQURnWVFBQW9HQWZhZytIQ0FCSUphZEREOUFhcmhnYzJRUjNMcDcKKyAgICAgICAgICAgIFBwTU9oMGxBd0xpSXN2a080VWxiZU9TMElKQzhiY3FMak0xZlZ3NkZHU2F4bXErNHkxYWcybTlrNklkRTBRaDUKKyAgICAgICAgICAgIE54Qi94RmttZHdxWEZSSUpWcDQ0T2VVeWdCNDdZSzc2Tm1VSVlHM0RkZmlQUFUzYnF6anZ0T3RFVGlDSHZvMjUKKyAgICAgICAgICAgIDRENlVqd1BwWUVyWFJVYWpOakEwTUE0R0ExVWREd0VCL3dRRUF3SUNCREFQQmdOVkhSTUVDREFHQVFIL0FnRUEKKyAgICAgICAgICAgIE1CRUdBMVVkRGdRS0JBaURoajVBZGpMaWt6QUpCZ2NxaGtqT09BUURBeThBTUN3Q0ZFTHUwbnV3ZXFXN1dmMHMKKyAgICAgICAgICAgIGdrL0NBR0dMMEJHS0FoUk5kZ1FHcjVpeVpLb0g0b3FQbTBWSjlUalhMZz09CisgICAgICAgICAgPC9YNTA5Q2VydGlmaWNhdGU+CisgICAgICAgIDwvWDUwOURhdGE+CisgICAgICA8L09iamVjdD4KKyAgICA8L1NpZ25hdHVyZT4KKyAgPC9Zb3Vyc1NpbmNlcmVseT4KKyAgPFBvc3RTY3JpcHQ+YmFyPC9Qb3N0U2NyaXB0PgorICA8Tm90YXJpZXMgSWQ9Im5vdGFyaWVzIiB4bWxucz0iIj4KKyAgICA8Tm90YXJ5IG5hbWU9IkdyZWF0LCBBLiBULiIgLz4KKyAgICA8Tm90YXJ5IG5hbWU9Ikh1biwgQS4gVC4iIC8+CisgIDwvTm90YXJpZXM+CisgIDwhLS0gQ29tbWVudGFyeSAtLT4KKzwvRW52ZWxvcGU+Cis8IS0tIFBvc3RhbWJsZSAtLT4KZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLnhtbCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDRmYmUxCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9zaWduYXR1cmUueG1sCkBAIC0wLDAgKzEsMjY5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIEVudmVsb3BlIFsKKyAgPCFFTlRJVFkgZHNpZyAnaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyc+CisgIDwhRU5USVRZIGMxNG4gJ2h0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Jz4KKyAgPCFFTlRJVFkgeHBhdGggJ2h0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Jz4KKyAgPCFFTlRJVFkgeHNsdCAnaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHNsdC0xOTk5MTExNic+CisgIDwhQVRUTElTVCBOb3RhcmllcyBJZCBJRCAjSU1QTElFRD4KK10+Cis8IS0tIFByZWFtYmxlIC0tPgorPEVudmVsb3BlIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyIgeG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy91c3BzIj4KKyAgPERlYXJTaXI+Zm9vPC9EZWFyU2lyPgorICA8Qm9keT5iYXI8L0JvZHk+CisgIDxZb3Vyc1NpbmNlcmVseT4KKyAgICA8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiBJZD0ic2lnbmF0dXJlIj4KKyAgICAgIDxTaWduZWRJbmZvPgorICAgICAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPgorICAgICAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIiAvPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sLXN0eWxlc2hlZXQiPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+NjBOdlp2dGRUQis3VW5sTHAvSDI0cDdoNGJzPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iaHR0cDovL3d3dy53My5vcmcvU2lnbmF0dXJlLzIwMDIvMDQveG1sLXN0eWxlc2hlZXQuYjY0Ij4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjYmFzZTY0IiAvPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPjYwTnZadnRkVEIrN1VubExwL0gyNHA3aDRicz08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0IiBVUkk9IiNvYmplY3QtMSI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgICAgc2VsZjo6dGV4dCgpCisgICAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT56eWpwOEdKT1g2OTk5MEtrcXc4aW9QWEdFeGs9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCIgVVJJPSIiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgICAgPFhQYXRoIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmRzaWc6U2lnbmVkSW5mbworICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6ZHNpZzpSZWZlcmVuY2UgfAorICAgICAgICAgICAgICAgICAgICAgIGhlcmUoKS9hbmNlc3Rvcjo6ZHNpZzpSZWZlcmVuY2VbMV0pICZndDsKKyAgICAgICAgICAgICAgICBjb3VudChhbmNlc3Rvci1vci1zZWxmOjpkc2lnOlJlZmVyZW5jZSkKKyAgICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpIHwKKyAgICAgICAgICAgICAgICAgICAgICBpZCgnbm90YXJpZXMnKSkgPQorICAgICAgICAgICAgICAgIGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkKKyAgICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPnRRaUUzR1VLaUJlblB5cDNKMEVpNnJKTUZ2ND08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0IiBVUkk9IiNvYmplY3QtMiI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2Jhc2U2NCIgLz4KKyAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT56eWpwOEdKT1g2OTk5MEtrcXc4aW9QWEdFeGs9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI01hbmlmZXN0IiBVUkk9IiNtYW5pZmVzdC0xIj4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPnFnNEhGd3NOKy9XWDMydUg4NVdsSlU5bDQ1az08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjU2lnbmF0dXJlUHJvcGVydGllcyIgVVJJPSIjc2lnbmF0dXJlLXByb3BlcnRpZXMtMSI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5FVGxFSTN5N2h2dkF0TWU5d1FTejdMaGJIRUU9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIiAvPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPkovTzBIaGRhUFh4eDQ5ZmdHV01FU0wwOUdwQT08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiIC8+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUjV2l0aENvbW1lbnRzIiAvPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPkovTzBIaGRhUFh4eDQ5ZmdHV01FU0wwOUdwQT08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcigvKSI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiIC8+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+Si9PMEhoZGFQWHh4NDlmZ0dXTUVTTDA5R3BBPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKC8pIj4KKyAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIgLz4KKyAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHMiIC8+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+TWtMOUNYOHllQUJCdGgxUkNoeVB4NThMczh3PTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiIFVSST0iI29iamVjdC0zIj4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPnlhbVNJb2tLbWpBM2hCL3MzRnUwN3dETzN2TT08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0IiBVUkk9IiNvYmplY3QtMyI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUjV2l0aENvbW1lbnRzIiAvPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPnlhbVNJb2tLbWpBM2hCL3MzRnUwN3dETzN2TT08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0IiBVUkk9IiN4cG9pbnRlcihpZCgnb2JqZWN0LTMnKSkiPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgICA8RGlnZXN0VmFsdWU+eWFtU0lva0ttakEzaEIvczNGdTA3d0RPM3ZNPTwvRGlnZXN0VmFsdWU+CisgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICA8UmVmZXJlbmNlIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiIFVSST0iI3hwb2ludGVyKGlkKCdvYmplY3QtMycpKSI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUjV2l0aENvbW1lbnRzIiAvPgorICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgPERpZ2VzdFZhbHVlPjQxOUNZZ3lUV09UR1lHQmh6aWVXa2xOZjdCaz08L0RpZ2VzdFZhbHVlPgorICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiNyZWZlcmVuY2UtMiI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5Weks0NVA5S3NqcXE1b1hsS1Fwa0dnQjJDTlk9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgSWQ9InJlZmVyZW5jZS0xIiBVUkk9IiNtYW5pZmVzdC1yZWZlcmVuY2UtMSI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT43LzlmUitOSUR6OW93YzFMZnN4dTFKQnI4dW89PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICAgIDxSZWZlcmVuY2UgSWQ9InJlZmVyZW5jZS0yIiBVUkk9IiNyZWZlcmVuY2UtMSI+CisgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICAgIDxEaWdlc3RWYWx1ZT5xVVJsbzNMU3E0VFdRdHlnQlpKMGlYUTlFMTQ9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8L1NpZ25lZEluZm8+CisgICAgICA8U2lnbmF0dXJlVmFsdWU+CisgICAgICAgIFd2WlVKQUovM1FOcXpRdnduZTJ2dnk3VTVQY2s4Wlo1VVRhNnBJd1I3R0UrUG9HaTZBMWt5dz09CisgICAgICA8L1NpZ25hdHVyZVZhbHVlPgorICAgICAgPEtleUluZm8+CisgICAgICAgIDxSZXRyaWV2YWxNZXRob2QgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI1g1MDlEYXRhIiBVUkk9IiNvYmplY3QtNCI+CisgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgICA8WFBhdGggeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6ZHNpZzpYNTA5RGF0YQorICAgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8L1JldHJpZXZhbE1ldGhvZD4KKyAgICAgIDwvS2V5SW5mbz4KKyAgICAgIDxPYmplY3QgSWQ9Im9iamVjdC0xIiBNaW1lVHlwZT0idGV4dC9wbGFpbiI+SSBhbSB0aGUgdGV4dC48L09iamVjdD4KKyAgICAgIDxPYmplY3QgRW5jb2Rpbmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNiYXNlNjQiIElkPSJvYmplY3QtMiIgTWltZVR5cGU9InRleHQvcGxhaW4iPlNTQmhiU0IwYUdVZ2RHVjRkQzQ9PC9PYmplY3Q+CisgICAgICA8T2JqZWN0IElkPSJvYmplY3QtMyI+CisgICAgICAgIDxOb25Db21tZW50YW5kdXMgeG1sbnM9IiI+PCEtLSBDb21tZW50YW5kdW0gLS0+PC9Ob25Db21tZW50YW5kdXM+CisgICAgICA8L09iamVjdD4KKyAgICAgIDxPYmplY3Q+CisgICAgICAgIDxNYW5pZmVzdCBJZD0ibWFuaWZlc3QtMSI+CisgICAgICAgICAgPFJlZmVyZW5jZSBJZD0ibWFuaWZlc3QtcmVmZXJlbmNlLTEiIFVSST0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sLXN0eWxlc2hlZXQiPgorICAgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICAgICAgPERpZ2VzdFZhbHVlPjYwTnZadnRkVEIrN1VubExwL0gyNHA3aDRicz08L0RpZ2VzdFZhbHVlPgorICAgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIjcmVmZXJlbmNlLTEiPgorICAgICAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICAgICAgPERpZ2VzdFZhbHVlPnFVUmxvM0xTcTRUV1F0eWdCWkowaVhROUUxND08L0RpZ2VzdFZhbHVlPgorICAgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIjbm90YXJpZXMiPgorICAgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14c2x0LTE5OTkxMTE2Ij4KKyAgICAgICAgICAgICAgICA8eHNsOnN0eWxlc2hlZXQgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvc3RyaWN0IiBleGNsdWRlLXJlc3VsdC1wcmVmaXhlcz0iZm9vIiB2ZXJzaW9uPSIxLjAiPgorICAgICAgICAgICAgICAgICAgPHhzbDpvdXRwdXQgZW5jb2Rpbmc9IlVURi04IiBpbmRlbnQ9Im5vIiBtZXRob2Q9InhtbCIgLz4KKyAgICAgICAgICAgICAgICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Ii8iPgorICAgICAgICAgICAgICAgICAgICA8aHRtbD4KKyAgICAgICAgICAgICAgICAgICAgICA8aGVhZD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0aXRsZT5Ob3RhcmllczwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkPgorICAgICAgICAgICAgICAgICAgICAgIDxib2R5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0iTm90YXJpZXMvTm90YXJ5Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJAbmFtZSIgLz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPC94c2w6Zm9yLWVhY2g+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgIDwvYm9keT4KKyAgICAgICAgICAgICAgICAgICAgPC9odG1sPgorICAgICAgICAgICAgICAgICAgPC94c2w6dGVtcGxhdGU+CisgICAgICAgICAgICAgICAgPC94c2w6c3R5bGVzaGVldD4KKyAgICAgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIgLz4KKyAgICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgICAgIDxEaWdlc3RWYWx1ZT5jN3dxNVhLb3M2UnFOVkp5Rnk3L2ZsNitzQXM9PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgPC9NYW5pZmVzdD4KKyAgICAgIDwvT2JqZWN0PgorICAgICAgPE9iamVjdD4KKyAgICAgICAgPFNpZ25hdHVyZVByb3BlcnRpZXMgSWQ9InNpZ25hdHVyZS1wcm9wZXJ0aWVzLTEiPgorICAgICAgICAgIDxTaWduYXR1cmVQcm9wZXJ0eSBUYXJnZXQ9IiNzaWduYXR1cmUiPgorICAgICAgICAgICAgPFNpZ25lckFkZHJlc3MgeG1sbnM9InVybjpkZW1vIj48SVA+MTkyLjE2OC4yMS4xMzg8L0lQPjwvU2lnbmVyQWRkcmVzcz4KKyAgICAgICAgICA8L1NpZ25hdHVyZVByb3BlcnR5PgorICAgICAgICA8L1NpZ25hdHVyZVByb3BlcnRpZXM+CisgICAgICA8L09iamVjdD4KKyAgICAgIDxPYmplY3QgSWQ9Im9iamVjdC00Ij4KKyAgICAgICAgPFg1MDlEYXRhPgorICAgICAgICAgIDxYNTA5U3ViamVjdE5hbWU+CisgICAgICAgICAgICBDTj1NZXJsaW4gSHVnaGVzLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlIFRlY2hub2xvZ2llcyBMdGQuLFNUPUR1YmxpbixDPUlFCisgICAgICAgICAgPC9YNTA5U3ViamVjdE5hbWU+CisgICAgICAgICAgPFg1MDlJc3N1ZXJTZXJpYWw+CisgICAgICAgICAgICA8WDUwOUlzc3Vlck5hbWU+CisgICAgICAgICAgICAgIENOPVRyYW5zaWVudCBDQSxPVT1YL1NlY3VyZSxPPUJhbHRpbW9yZSBUZWNobm9sb2dpZXMgTHRkLixTVD1EdWJsaW4sQz1JRQorICAgICAgICAgICAgPC9YNTA5SXNzdWVyTmFtZT4KKyAgICAgICAgICAgIDxYNTA5U2VyaWFsTnVtYmVyPjEwMTc3ODgzNzAzNDg8L1g1MDlTZXJpYWxOdW1iZXI+CisgICAgICAgICAgPC9YNTA5SXNzdWVyU2VyaWFsPgorICAgICAgICAgIDxYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICBNSUlEVURDQ0F4Q2dBd0lCQWdJR0FPejQ2ZzJzTUFrR0J5cUdTTTQ0QkFNd2JqRUxNQWtHQTFVRUJoTUNTVVV4CisgICAgICAgICAgICBEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsCisgICAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CCisgICAgICAgICAgICBNQjRYRFRBeU1EUXdNakl5TlRrek1Gb1hEVEV5TURRd01qSXhOVGt5TlZvd2J6RUxNQWtHQTFVRUJoTUNTVVV4CisgICAgICAgICAgICBEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsCisgICAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVdNQlFHQTFVRUF4TU5UV1Z5YkdsdUlFaDFaMmhsCisgICAgICAgICAgICBjekNDQWJjd2dnRXNCZ2NxaGtqT09BUUJNSUlCSHdLQmdRRGQ0NTRDK3FjVElXbGI2NU5LQ3QyUHRndU5wT1NuCisgICAgICAgICAgICBJZDV3b1VpZ3U3eEJrMlFaTkFqVnlJaE1FZlNXcDhpUjBJZEtMeCtKUUxjTk9yY24wV3dsNS9oaFcwTVhzbWxTCisgICAgICAgICAgICA4ZE01Q3EycnRtREhvb0x4YkdUUHF0QUxFNnZzWFFDazVpTHozTXRHaDdneVFNWjdxN0hUNWEzSTVOQ2hVZ1kxCisgICAgICAgICAgICBNTU5RVmV0UkExc3VzUUlWQUlReTNCU3RCanZ4ODlXcThUanI3SURQMVM4bEFvR0JBSjU4ZTRXM1ZxTXhtN1p4CisgICAgICAgICAgICBZSjJ4WjZLWDBaZTEwV25LWkR5VVJuK1Q5aUZJRmJLUkZFbEtEZW90WHd3WHdZT044eXJlM1pSR2tDKzIrZmlVCisgICAgICAgICAgICAyYmR6SVdUVDZMTWJJTVZiayswN1A0T1pPeEo2WFdMOUd1WWNPUWNOdlg0MnhoMzREUEhkcTRYZGxJdE1SMjVOCisgICAgICAgICAgICBBK09kWjRTOFZWcnBiNGprajRjeWlyMTYyOGtnQTRHRUFBS0JnSEgyS1lvYVFFSG5xV3pSVXVEQUcwRVlYVjZRCisgICAgICAgICAgICA0dWNDNjhNUk9ZU0w2R0txTlMvQVVGYnZIMk5VeFFEN2FHbnRZZ1lQeGlDY2o5NGkzOHJnU1dnN3lTU3o5OU1BCisgICAgICAgICAgICBSL1l2N09TZCt1ZWozcjZUbFhVMzR1Kyt4WXZSbytzdjRtOWxiL2ptWHlaSktlQytkUHFlVTFJVDVrQ3liVVJMCisgICAgICAgICAgICBJTFpmclp5RHNpVS92aHZWb3pvd09EQU9CZ05WSFE4QkFmOEVCQU1DQjRBd0VRWURWUjBPQkFvRUNJYXRZN1NFCisgICAgICAgICAgICBsWEVPTUJNR0ExVWRJd1FNTUFxQUNJT0dQa0IyTXVLVE1Ba0dCeXFHU000NEJBTURMd0F3TEFJVVN2VDAyaVFqCisgICAgICAgICAgICBRNWRhNFdwZTBCdnM3R3VDY1ZzQ0ZDRWNRcGJqVWZueFhGWE5XaUZ5UTQ5WnJXcW4KKyAgICAgICAgICA8L1g1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgICA8WDUwOUNlcnRpZmljYXRlPgorICAgICAgICAgICAgTUlJRFN6Q0NBd3VnQXdJQkFnSUdBT3o0NmZ3Sk1Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgICAgRHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbAorICAgICAgICAgICAgY3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQgorICAgICAgICAgICAgTUI0WERUQXlNRFF3TWpJeU5Ua3lOVm9YRFRFeU1EUXdNakl4TlRreU5Wb3diakVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgICAgRHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbAorICAgICAgICAgICAgY3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQgorICAgICAgICAgICAgTUlJQnR6Q0NBU3dHQnlxR1NNNDRCQUV3Z2dFZkFvR0JBTjNqbmdMNnB4TWhhVnZyazBvSzNZKzJDNDJrNUtjaAorICAgICAgICAgICAgM25DaFNLQzd2RUdUWkJrMENOWElpRXdSOUphbnlKSFFoMG92SDRsQXR3MDZ0eWZSYkNYbitHRmJReGV5YVZMeAorICAgICAgICAgICAgMHprS3JhdTJZTWVpZ3ZGc1pNK3EwQXNUcSt4ZEFLVG1JdlBjeTBhSHVESkF4bnVyc2RQbHJjamswS0ZTQmpVdworICAgICAgICAgICAgdzFCVjYxRURXeTZ4QWhVQWhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VUNnWUVBbm54N2hiZFdvekdidG5GZworICAgICAgICAgICAgbmJGbm9wZlJsN1hSYWNwa1BKUkdmNVAySVVnVnNwRVVTVW9ONmkxZkRCZkJnNDN6S3Q3ZGxFYVFMN2I1K0pUWgorICAgICAgICAgICAgdDNNaFpOUG9zeHNneFZ1VDdUcy9nNWs3RW5wZFl2MGE1aHc1QncyOWZqYkdIZmdNOGQycmhkMlVpMHhIYmswRAorICAgICAgICAgICAgNDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBRGdZUUFBb0dBZmFnK0hDQUJJSmFkREQ5QWFyaGdjMlFSM0xwNworICAgICAgICAgICAgUHBNT2gwbEF3TGlJc3ZrTzRVbGJlT1MwSUpDOGJjcUxqTTFmVnc2RkdTYXhtcSs0eTFhZzJtOWs2SWRFMFFoNQorICAgICAgICAgICAgTnhCL3hGa21kd3FYRlJJSlZwNDRPZVV5Z0I0N1lLNzZObVVJWUczRGRmaVBQVTNicXpqdnRPdEVUaUNIdm8yNQorICAgICAgICAgICAgNEQ2VWp3UHBZRXJYUlVhak5qQTBNQTRHQTFVZER3RUIvd1FFQXdJQ0JEQVBCZ05WSFJNRUNEQUdBUUgvQWdFQQorICAgICAgICAgICAgTUJFR0ExVWREZ1FLQkFpRGhqNUFkakxpa3pBSkJnY3Foa2pPT0FRREF5OEFNQ3dDRkVMdTBudXdlcVc3V2YwcworICAgICAgICAgICAgZ2svQ0FHR0wwQkdLQWhSTmRnUUdyNWl5WktvSDRvcVBtMFZKOVRqWExnPT0KKyAgICAgICAgICA8L1g1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgPC9YNTA5RGF0YT4KKyAgICAgIDwvT2JqZWN0PgorICAgIDwvU2lnbmF0dXJlPgorICA8L1lvdXJzU2luY2VyZWx5PgorICA8UG9zdFNjcmlwdD5iYXI8L1Bvc3RTY3JpcHQ+CisgIDxOb3RhcmllcyB4bWxucz0iIiBJZD0ibm90YXJpZXMiPgorICAgIDxOb3RhcnkgbmFtZT0iR3JlYXQsIEEuIFQuIiAvPgorICAgIDxOb3RhcnkgbmFtZT0iSHVuLCBBLiBULiIgLz4KKyAgPC9Ob3Rhcmllcz4KKyAgPCEtLSBDb21tZW50YXJ5IC0tPgorPC9FbnZlbG9wZT4KKzwhLS0gUG9zdGFtYmxlIC0tPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS94bWwtc3R5bGVzaGVldC5iNjQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3htbC1zdHlsZXNoZWV0LmI2NApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjlhMTFhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS94bWwtc3R5bGVzaGVldC5iNjQKQEAgLTAsMCArMSwyNzQgQEAKK1BDRkVUME5VV1ZCRklHaDBiV3dnVUZWQ1RFbERJQ0l0THk5WE0wTXZMMFJVUkNCSVZFMU1JRFF1TUNCVWNtRnUKK2MybDBhVzl1WVd3dkwwVk9JajRLUEdoMGJXdytDanhvWldGa1BnbzhkR2wwYkdVK1FYTnpiMk5wWVhScGJtY2cKK1UzUjViR1VnVTJobFpYUnpJSGRwZEdnZ1dFMU1JR1J2WTNWdFpXNTBjend2ZEdsMGJHVStDanhzYVc1cklISmwKK2JEMGljM1I1YkdWemFHVmxkQ0lnZEhsd1pUMGlkR1Y0ZEM5amMzTWlJR2h5WldZOUltaDBkSEE2THk5M2QzY3UKK2R6TXViM0puTDFOMGVXeGxVMmhsWlhSekwxUlNMMWN6UXkxU1JVTWlQZ284YzNSNWJHVWdkSGx3WlQwaWRHVjQKK2RDOWpjM01pUG1OdlpHVWdleUJtYjI1MExXWmhiV2xzZVRvZ2JXOXViM053WVdObElIMDhMM04wZVd4bFBnbzgKK0wyaGxZV1ErQ2p4aWIyUjVQZ284WkdsMklHTnNZWE56UFNKb1pXRmtJajRLUEdFZ2FISmxaajBpYUhSMGNEb3YKK0wzZDNkeTUzTXk1dmNtY3ZJajQ4YVcxbklITnlZejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2U1dOdmJuTXYKK1YxZFhMM2N6WTE5b2IyMWxJaUJoYkhROUlsY3pReUlnYUdWcFoyaDBQU0kwT0NJZ2QybGtkR2c5SWpjeUlqNDgKK0wyRStDanhvTVQ1QmMzTnZZMmxoZEdsdVp5QlRkSGxzWlNCVGFHVmxkSE1nZDJsMGFDQllUVXdnWkc5amRXMWwKK2JuUnpQR0p5UGxabGNuTnBiMjRnTVM0d1BDOW9NVDRLUEdneVBsY3pReUJTWldOdmJXMWxibVJoZEdsdmJpQXkKK09TQktkVzVsSURFNU9UazhMMmd5UGdvOFpHdytDanhrZEQ1VWFHbHpJSFpsY25OcGIyNDZQQzlrZEQ0S1BHUmsKK1BnbzhZU0JvY21WbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBMkwxSkZReTE0Yld3dGMzUjUKK2JHVnphR1ZsZEMweE9UazVNRFl5T1NJK2FIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1UazVPUzh3Tmk5U1JVTXQKK2VHMXNMWE4wZVd4bGMyaGxaWFF0TVRrNU9UQTJNams4TDJFK0NqeGljajRLUEM5a1pENEtQR1IwUGt4aGRHVnoKK2RDQjJaWEp6YVc5dU9qd3ZaSFErQ2p4a1pENEtQR0VnYUhKbFpqMGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3YKK1ZGSXZlRzFzTFhOMGVXeGxjMmhsWlhRaVBtaDBkSEE2THk5M2QzY3Vkek11YjNKbkwxUlNMM2h0YkMxemRIbHMKK1pYTm9aV1YwUEM5aFBnbzhZbkkrQ2p3dlpHUStDanhrZEQ1UWNtVjJhVzkxY3lCMlpYSnphVzl1T2p3dlpIUSsKK0NqeGtaRDRLUEdFZ2FISmxaajBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2VkZJdk1UazVPUzk0Yld3dGMzUjUKK2JHVnphR1ZsZEMweE9UazVNRFF5T0NJK2FIUjBjRG92TDNkM2R5NTNNeTV2Y21jdlZGSXZNVGs1T1M5NGJXd3QKK2MzUjViR1Z6YUdWbGRDMHhPVGs1TURReU9Ed3ZZVDRLUEdKeVBnbzhMMlJrUGdvOFpIUStSV1JwZEc5eU9qd3YKK1pIUStDanhrWkQ0S0NrcGhiV1Z6SUVOc1lYSnJDanhoSUdoeVpXWTlJbTFoYVd4MGJ6cHFhbU5BYW1Oc1lYSnIKK0xtTnZiU0krSm14ME8ycHFZMEJxWTJ4aGNtc3VZMjl0Sm1kME96d3ZZVDRLUEdKeVBnbzhMMlJrUGdvOEwyUnMKK1BnbzhjQ0JqYkdGemN6MGlZMjl3ZVhKcFoyaDBJajRLUEdFZ2FISmxaajBpYUhSMGNEb3ZMM2QzZHk1M015NXYKK2NtY3ZRMjl1YzI5eWRHbDFiUzlNWldkaGJDOXBjSEl0Ym05MGFXTmxMbWgwYld3alEyOXdlWEpwWjJoMElqNEsKK0NRbERiM0I1Y21sbmFIUThMMkUrSUNadVluTndPeVpqYjNCNU95WnVZbk53T3lBeE9UazVJRHhoSUdoeVpXWTkKK0ltaDBkSEE2THk5M2QzY3Vkek11YjNKbklqNVhNME04TDJFK0Nna0pLRHhoSUdoeVpXWTlJbWgwZEhBNkx5OTMKK2QzY3ViR056TG0xcGRDNWxaSFVpUGsxSlZEd3ZZVDRzQ2drSlBHRWdhSEpsWmowaWFIUjBjRG92TDNkM2R5NXAKK2JuSnBZUzVtY2k4aVBrbE9Va2xCUEM5aFBpd0tDUWs4WVNCb2NtVm1QU0pvZEhSd09pOHZkM2QzTG10bGFXOHUKK1lXTXVhbkF2SWo1TFpXbHZQQzloUGlBcExDQkJiR3dnVW1sbmFIUnpJRkpsYzJWeWRtVmtMaUJYTTBNS0NRazgKK1lTQm9jbVZtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk5RGIyNXpiM0owYVhWdEwweGxaMkZzTDJsd2NpMXUKK2IzUnBZMlV1YUhSdGJDTk1aV2RoYkNCRWFYTmpiR0ZwYldWeUlqNXNhV0ZpYVd4cGRIa3NQQzloUGp4aElHaHkKK1pXWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MME52Ym5OdmNuUnBkVzB2VEdWbllXd3ZhWEJ5TFc1dmRHbGoKK1pTNW9kRzFzSTFjelF5QlVjbUZrWlcxaGNtdHpJajUwY21Ga1pXMWhjbXM4TDJFK0xBb0pDVHhoSUdoeVpXWTkKK0ltaDBkSEE2THk5M2QzY3Vkek11YjNKbkwwTnZibk52Y25ScGRXMHZUR1ZuWVd3dlkyOXdlWEpwWjJoMExXUnYKK1kzVnRaVzUwY3k1b2RHMXNJajVrYjJOMWJXVnVkQ0IxYzJVZ1BDOWhQbUZ1WkFvSkNUeGhJR2h5WldZOUltaDAKK2RIQTZMeTkzZDNjdWR6TXViM0puTDBOdmJuTnZjblJwZFcwdlRHVm5ZV3d2WTI5d2VYSnBaMmgwTFhOdlpuUjMKK1lYSmxMbWgwYld3aVBuTnZablIzWVhKbElHeHBZMlZ1YzJsdVp5QThMMkUrY25Wc1pYTWdZWEJ3YkhrdUNnazgKK0wzQStDanhvY2lCMGFYUnNaVDBpVTJWd1lYSmhkRzl5SUdadmNpQm9aV0ZrWlhJaVBnbzhMMlJwZGo0S1BHZ3kKK1BnbzhZU0J1WVcxbFBTSmhZbk4wY21GamRDSStRV0p6ZEhKaFkzUThMMkUrQ2p3dmFESStDZ284Y0Q1VWFHbHoKK0lHUnZZM1Z0Wlc1MElHRnNiRzkzY3lCaElITjBlV3hsSUhOb1pXVjBJSFJ2SUdKbElHRnpjMjlqYVdGMFpXUWcKK2QybDBhQ0JoYmlCWVRVd0taRzlqZFcxbGJuUWdZbmtnYVc1amJIVmthVzVuSUc5dVpTQnZjaUJ0YjNKbElIQnkKK2IyTmxjM05wYm1jZ2FXNXpkSEoxWTNScGIyNXpJSGRwZEdnZ1lRcDBZWEpuWlhRZ2IyWWdQR052WkdVK2VHMXMKK0xYTjBlV3hsYzJobFpYUThMMk52WkdVK0lHbHVJSFJvWlNCa2IyTjFiV1Z1ZENkeklIQnliMnh2Wnk0OEwzQSsKK0NnbzhhREkrQ2p4aElHNWhiV1U5SW5OMFlYUjFjeUkrVTNSaGRIVnpJRzltSUhSb2FYTWdaRzlqZFcxbGJuUTgKK0wyRStDand2YURJK0NnbzhjRDVVYUdseklHUnZZM1Z0Wlc1MElHaGhjeUJpWldWdUlISmxkbWxsZDJWa0lHSjUKK0lGY3pReUJOWlcxaVpYSnpJR0Z1WkNCdmRHaGxjaUJwYm5SbGNtVnpkR1ZrQ25CaGNuUnBaWE1nWVc1a0lHaGgKK2N5QmlaV1Z1SUdWdVpHOXljMlZrSUdKNUlIUm9aU0JFYVhKbFkzUnZjaUJoY3lCaElGY3pReUE4WVNCb2NtVm0KK1BTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OURiMjV6YjNKMGFYVnRMMUJ5YjJObGMzTXZJMUpsWTNOWE0wTWkKK1BsSmxZMjl0YldWdVpHRjBhVzl1UEM5aFBpNGdTWFFLYVhNZ1lTQnpkR0ZpYkdVZ1pHOWpkVzFsYm5RZ1lXNWsKK0lHMWhlU0JpWlNCMWMyVmtJR0Z6SUhKbFptVnlaVzVqWlNCdFlYUmxjbWxoYkNCdmNpQmphWFJsWkNCaGN3cGgKK0lHNXZjbTFoZEdsMlpTQnlaV1psY21WdVkyVWdabkp2YlNCdmRHaGxjaUJrYjJOMWJXVnVkSE11SUZjelF5ZHoKK0lISnZiR1VnYVc0Z2JXRnJhVzVuSUhSb1pRcFNaV052YlcxbGJtUmhkR2x2YmlCcGN5QjBieUJrY21GM0lHRjAKK2RHVnVkR2x2YmlCMGJ5QjBhR1VnYzNCbFkybG1hV05oZEdsdmJpQmhibVFnZEc4S2NISnZiVzkwWlNCcGRITWcKK2QybGtaWE53Y21WaFpDQmtaWEJzYjNsdFpXNTBMaUJVYUdseklHVnVhR0Z1WTJWeklIUm9aU0JtZFc1amRHbHYKK2JtRnNhWFI1SUdGdVpBcHBiblJsY205d1pYSmhZbWxzYVhSNUlHOW1JSFJvWlNCWFpXSXVQQzl3UGdvS1BIQSsKK1ZHaGxJR3hwYzNRZ2IyWWdhMjV2ZDI0Z1pYSnliM0p6SUdsdUlIUm9hWE1nYzNCbFkybG1hV05oZEdsdmJuTWcKK2FYTWdZWFpoYVd4aFlteGxJR0YwQ2p4aElHaHlaV1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3YKK01EWXZVa1ZETFhodGJDMXpkSGxzWlhOb1pXVjBMVEU1T1Rrd05qSTVMMlZ5Y21GMFlTSSthSFIwY0RvdkwzZDMKK2R5NTNNeTV2Y21jdlZGSXZNVGs1T1M5NGJXd3RjM1I1YkdWemFHVmxkQzB4T1RrNU1EWXlPUzlsY25KaGRHRTgKK0wyRStMand2Y0Q0S0NqeHdQa052YlcxbGJuUnpJRzl1SUhSb2FYTWdjM0JsWTJsbWFXTmhkR2x2YmlCdFlYa2cKK1ltVWdjMlZ1ZENCMGJ5QW1iSFE3UEdFZ2FISmxaajBpYldGcGJIUnZPbmQzZHkxNGJXd3RjM1I1YkdWemFHVmwKK2RDMWpiMjF0Wlc1MGMwQjNNeTV2Y21jaVBuZDNkeTE0Yld3dGMzUjViR1Z6YUdWbGRDMWpiMjF0Wlc1MGMwQjMKK015NXZjbWM4TDJFK0ptZDBPeTRnVkdobElHRnlZMmhwZG1VZ2IyWWdjSFZpYkdsakNtTnZiVzFsYm5SeklHbHoKK0lHRjJZV2xzWVdKc1pTQmhkQ0E4WVNCb2NtVm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTlCY21Ob2FYWmwKK2N5OVFkV0pzYVdNdmQzZDNMWGh0YkMxemRIbHNaWE5vWldWMExXTnZiVzFsYm5SeklqNW9kSFJ3T2k4dmR6TXUKK2IzSm5MMEZ5WTJocGRtVnpMMUIxWW14cFl5OTNkM2N0ZUcxc0xYTjBlV3hsYzJobFpYUXRZMjl0YldWdWRITTgKK0wyRStMand2Y0Q0S0NqeHdQa0VnYkdsemRDQnZaaUJqZFhKeVpXNTBJRmN6UXlCU1pXTnZiVzFsYm1SaGRHbHYKK2JuTWdZVzVrSUc5MGFHVnlJSFJsWTJodWFXTmhiQ0JrYjJOMWJXVnVkSE1LWTJGdUlHSmxJR1p2ZFc1a0lHRjAKK0lEeGhJR2h5WldZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkwxUlNJajVvZEhSd09pOHZkM2QzTG5jekxtOXkKK1p5OVVVand2WVQ0dVBDOXdQZ29LUEhBK1ZHaGxJRmR2Y210cGJtY2dSM0p2ZFhBZ1pYaHdaV04wY3lCaFpHUnAKK2RHbHZibUZzSUcxbFkyaGhibWx6YlhNZ1ptOXlJR3hwYm10cGJtY2djM1I1YkdVS2MyaGxaWFJ6SUhSdklGaE4KK1RDQmtiMk4xYldWdWRDQjBieUJpWlNCa1pXWnBibVZrSUdsdUlHRWdablYwZFhKbElITndaV05wWm1sallYUnAKK2IyNHVQQzl3UGdvS1BIQStWR2hsSUhWelpTQnZaaUJZVFV3Z2NISnZZMlZ6YzJsdVp5QnBibk4wY25WamRHbHYKK2JuTWdhVzRnZEdocGN5QnpjR1ZqYVdacFkyRjBhVzl1SUhOb2IzVnNaQXB1YjNRZ1ltVWdkR0ZyWlc0Z1lYTWcKK1lTQndjbVZqWldSbGJuUXVJQ0JVYUdVZ1Z6TkRJR1J2WlhNZ2JtOTBJR0Z1ZEdsamFYQmhkR1VnY21WamIyMXQKK1pXNWthVzVuQ25Sb1pTQjFjMlVnYjJZZ2NISnZZMlZ6YzJsdVp5QnBibk4wY25WamRHbHZibk1nYVc0Z1lXNTUKK0lHWjFkSFZ5WlNCemNHVmphV1pwWTJGMGFXOXVMaUFnVkdobENqeGhJR2h5WldZOUlpTnlZWFJwYjI1aGJHVWkKK1BsSmhkR2x2Ym1Gc1pUd3ZZVDRnWlhod2JHRnBibk1nZDJoNUlIUm9aWGtnZDJWeVpTQjFjMlZrSUdsdUNuUm8KK2FYTWdjM0JsWTJsbWFXTmhkR2x2Ymk0OEwzQStDZ284Y0Q1VWFHbHpJR1J2WTNWdFpXNTBJSGRoY3lCd2NtOWsKK2RXTmxaQ0JoY3lCd1lYSjBJRzltSUhSb1pTQThZU0JvY21WbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OVkKK1RVd3ZRV04wYVhacGRIa2lQbGN6UXlCWVRVd2dRV04wYVhacGRIazhMMkUrTGp3dmNENEtDZ284YURJK0NqeGgKK0lHNWhiV1U5SW1OdmJuUmxiblJ6SWo1VVlXSnNaU0J2WmlCamIyNTBaVzUwY3p3dllUNEtQQzlvTWo0eElEeGgKK0lHaHlaV1k5SWlOVWFHVWdlRzFzTFhOMGVXeGxjMmhsWlhRZ2NISnZZMlZ6YzJsdVp5QnBibk4wY25WamRHbHYKK2JpSStWR2hsSUhodGJDMXpkSGxzWlhOb1pXVjBJSEJ5YjJObGMzTnBibWNnYVc1emRISjFZM1JwYjI0OEwyRSsKK0NqeGljajRLUEdnelBrRndjR1Z1WkdsalpYTThMMmd6UGtFZ1BHRWdhSEpsWmowaUkxSmxabVZ5Wlc1alpYTWkKK1BsSmxabVZ5Wlc1alpYTThMMkUrQ2p4aWNqNUNJRHhoSUdoeVpXWTlJaU55WVhScGIyNWhiR1VpUGxKaGRHbHYKK2JtRnNaVHd2WVQ0S1BHSnlQZ284YUhJK0NnbzhhREkrQ2p4aElHNWhiV1U5SWxSb1pTQjRiV3d0YzNSNWJHVnoKK2FHVmxkQ0J3Y205alpYTnphVzVuSUdsdWMzUnlkV04wYVc5dUlqNDhMMkUrTVNCVWFHVWdQR052WkdVK2VHMXMKK0xYTjBlV3hsYzJobFpYUThMMk52WkdVK0lIQnliMk5sYzNOcGJtY2dhVzV6ZEhKMVkzUnBiMjQ4TDJneVBnb0sKK1BIQStVM1I1YkdVZ1UyaGxaWFJ6SUdOaGJpQmlaU0JoYzNOdlkybGhkR1ZrSUhkcGRHZ2dZVzRnV0UxTVBHRWcKK2FISmxaajBpSTFoTlRDSStXMWhOVERFd1hUd3ZZVDRLWkc5amRXMWxiblFnWW5rZ2RYTnBibWNnWVNCd2NtOWoKK1pYTnphVzVuSUdsdWMzUnlkV04wYVc5dUlIZG9iM05sSUhSaGNtZGxkQ0JwY3dvOFkyOWtaVDU0Yld3dGMzUjUKK2JHVnphR1ZsZER3dlkyOWtaVDR1SUNCVWFHbHpJSEJ5YjJObGMzTnBibWNnYVc1emRISjFZM1JwYjI0Z1ptOXMKK2JHOTNjeUIwYUdVS1ltVm9ZWFpwYjNWeUlHOW1JSFJvWlNCSVZFMU1JRFF1TUNBOFkyOWtaVDRtYkhRN1RFbE8KK1N3cFNSVXc5SW5OMGVXeGxjMmhsWlhRaUptZDBPend2WTI5a1pUNDhZU0JvY21WbVBTSWpTRlJOVENJK1cwaFUKK1RVdzBNRjA4TDJFK0xqd3ZjRDRLQ2p4d1BsUm9aU0E4WTI5a1pUNTRiV3d0YzNSNWJHVnphR1ZsZER3dlkyOWsKK1pUNGdjSEp2WTJWemMybHVaeUJwYm5OMGNuVmpkR2x2YmlCcGN5QndZWEp6WldRZ2FXNEtkR2hsSUhOaGJXVWcKK2QyRjVJR0Z6SUdFZ2MzUmhjblF0ZEdGbkxDQjNhWFJvSUhSb1pTQmxlR05sY0hScGIyNGdkR2hoZENCbGJuUnAKK2RHbGxjeUJ2ZEdobGNncDBhR0Z1SUhCeVpXUmxabWx1WldRZ1pXNTBhWFJwWlhNZ2JYVnpkQ0J1YjNRZ1ltVWcKK2NtVm1aWEpsYm1ObFpDNDhMM0ErQ2dvOGNENVVhR1VnWm05c2JHOTNhVzVuSUdkeVlXMXRZWElnYVhNZ1oybDIKK1pXNGdkWE5wYm1jZ2RHaGxJSE5oYldVZ2JtOTBZWFJwYjI0Z1lYTWdkR2hsQ21keVlXMXRZWElnYVc0Z2RHaGwKK0lGaE5UQ0JTWldOdmJXMWxibVJoZEdsdmJqeGhJR2h5WldZOUlpTllUVXdpUGx0WVRVd3hNRjA4TDJFK0xpQWcKK1UzbHRZbTlzY3lCcGJpQjBhR1VLWjNKaGJXMWhjaUIwYUdGMElHRnlaU0J1YjNRZ1pHVm1hVzVsWkNCb1pYSmwKK0lHRnlaU0JrWldacGJtVmtJR2x1SUhSb1pTQllUVXdLVW1WamIyMXRaVzVrWVhScGIyNHVQQzl3UGdvS1BHZzEKK1BuaHRiQzF6ZEhsc1pYTm9aV1YwSUhCeWIyTmxjM05wYm1jZ2FXNXpkSEoxWTNScGIyNDhMMmcxUGdvOGRHRmkKK2JHVWdZMnhoYzNNOUluTmpjbUZ3SWo0S1BIUmliMlI1UGdvOGRISWdkbUZzYVdkdVBTSmlZWE5sYkdsdVpTSSsKK0NqeDBaRDRLUEdFZ2JtRnRaVDBpVGxRdFUzUjViR1ZUYUdWbGRGQkpJajQ4TDJFK1d6RmRKbTVpYzNBN0ptNWkKK2MzQTdKbTVpYzNBN1BDOTBaRDRLUEhSa1BsTjBlV3hsVTJobFpYUlFTVHd2ZEdRK0NqeDBaRDRtYm1KemNEc20KK2JtSnpjRHNtYm1KemNEczZPajBtYm1KemNEc21ibUp6Y0RzbWJtSnpjRHM4TDNSa1BnbzhkR1ErSnlac2REcy8KK2VHMXNMWE4wZVd4bGMyaGxaWFFuSUNnOFlTQm9jbVZtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk5VVVpOVMKK1JVTXRlRzFzSTA1VUxWTWlQbE04TDJFK0lEeGhJR2h5WldZOUlpTk9WQzFRYzJWMVpHOUJkSFFpUGxCelpYVmsKK2IwRjBkRHd2WVQ0cEtpQThZU0JvY21WbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OVVVaTlTUlVNdGVHMXMKK0kwNVVMVk1pUGxNOEwyRStQeUFuUHlabmREc25QQzkwWkQ0S1BIUmtQZ284TDNSa1BnbzhMM1J5UGdvOGRISWcKK2RtRnNhV2R1UFNKaVlYTmxiR2x1WlNJK0NqeDBaRDRLUEdFZ2JtRnRaVDBpVGxRdFVITmxkV1J2UVhSMElqNDgKK0wyRStXekpkSm01aWMzQTdKbTVpYzNBN0ptNWljM0E3UEM5MFpENEtQSFJrUGxCelpYVmtiMEYwZER3dmRHUSsKK0NqeDBaRDRtYm1KemNEc21ibUp6Y0RzbWJtSnpjRHM2T2owbWJtSnpjRHNtYm1KemNEc21ibUp6Y0RzOEwzUmsKK1BnbzhkR1ErQ2p4aElHaHlaV1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTDFSU0wxSkZReTE0Yld3alRsUXQKK1RtRnRaU0krVG1GdFpUd3ZZVDRnUEdFZ2FISmxaajBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2VkZJdlVrVkQKK0xYaHRiQ05PVkMxVElqNVRQQzloUGo4Z0p6MG5JRHhoSUdoeVpXWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm4KK0wxUlNMMUpGUXkxNGJXd2pUbFF0VXlJK1V6d3ZZVDQvSUR4aElHaHlaV1k5SWlOT1ZDMVFjMlYxWkc5QmRIUlcKK1lXeDFaU0krVUhObGRXUnZRWFIwVm1Gc2RXVThMMkUrQ2p3dmRHUStDangwWkQ0S1BDOTBaRDRLUEM5MGNqNEsKK1BIUnlJSFpoYkdsbmJqMGlZbUZ6Wld4cGJtVWlQZ284ZEdRK0NqeGhJRzVoYldVOUlrNVVMVkJ6WlhWa2IwRjAKK2RGWmhiSFZsSWo0OEwyRStXek5kSm01aWMzQTdKbTVpYzNBN0ptNWljM0E3UEM5MFpENEtQSFJrUGxCelpYVmsKK2IwRjBkRlpoYkhWbFBDOTBaRDRLUEhSa1BpWnVZbk53T3ladVluTndPeVp1WW5Od096bzZQU1p1WW5Od095WnUKK1luTndPeVp1WW5Od096d3ZkR1ErQ2p4MFpENG9KeUluSUNoYlhpSW1iSFE3Sm1GdGNEdGRJSHdnUEdFZ2FISmwKK1pqMGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZWRkl2VWtWRExYaHRiQ05PVkMxRGFHRnlVbVZtSWo1RGFHRnkKK1VtVm1QQzloUGlCOElEeGhJR2h5WldZOUlpTk9WQzFRY21Wa1pXWkZiblJwZEhsU1pXWWlQbEJ5WldSbFprVnUKK2RHbDBlVkpsWmp3dllUNHBLaUFuSWljOEwzUmtQZ284ZEdRK0Nqd3ZkR1ErQ2p3dmRISStDangwY2lCMllXeHAKK1oyNDlJbUpoYzJWc2FXNWxJajRLUEhSa1BnbzhMM1JrUGdvOGRHUStDand2ZEdRK0NqeDBaRDRLUEM5MFpENEsKK1BIUmtQbndnSWljaUlDaGJYaWNtYkhRN0ptRnRjRHRkSUh3Z1BHRWdhSEpsWmowaWFIUjBjRG92TDNkM2R5NTMKK015NXZjbWN2VkZJdlVrVkRMWGh0YkNOT1ZDMURhR0Z5VW1WbUlqNURhR0Z5VW1WbVBDOWhQaUI4SUR4aElHaHkKK1pXWTlJaU5PVkMxUWNtVmtaV1pGYm5ScGRIbFNaV1lpUGxCeVpXUmxaa1Z1ZEdsMGVWSmxaand2WVQ0cEtpQWkKK0p5SXBQQzkwWkQ0S1BIUmtQZ284TDNSa1BnbzhMM1J5UGdvOGRISWdkbUZzYVdkdVBTSmlZWE5sYkdsdVpTSSsKK0NqeDBaRDRLUEM5MFpENEtQSFJrUGdvOEwzUmtQZ284ZEdRK0Nqd3ZkR1ErQ2p4MFpENHRJQ2c4WVNCb2NtVm0KK1BTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OVVVaTlTUlVNdGVHMXNJMDVVTFVOb1lYSWlQa05vWVhJOEwyRSsKK0tpQW5QeVpuZERzbklEeGhJR2h5WldZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkwxUlNMMUpGUXkxNGJXd2oKK1RsUXRRMmhoY2lJK1EyaGhjand2WVQ0cUtUd3ZkR1ErQ2p4MFpENEtQQzkwWkQ0S1BDOTBjajRLUEhSeUlIWmgKK2JHbG5iajBpWW1GelpXeHBibVVpUGdvOGRHUStDanhoSUc1aGJXVTlJazVVTFZCeVpXUmxaa1Z1ZEdsMGVWSmwKK1ppSStQQzloUGxzMFhTWnVZbk53T3ladVluTndPeVp1WW5Od096d3ZkR1ErQ2p4MFpENVFjbVZrWldaRmJuUnAKK2RIbFNaV1k4TDNSa1BnbzhkR1ErSm01aWMzQTdKbTVpYzNBN0ptNWljM0E3T2pvOUptNWljM0E3Sm01aWMzQTcKK0ptNWljM0E3UEM5MFpENEtQSFJrUGljbVlXMXdPMkZ0Y0RzbklId2dKeVpoYlhBN2JIUTdKeUI4SUNjbVlXMXcKK08yZDBPeWNnZkNBbkptRnRjRHR4ZFc5ME95Y2dmQ0FuSm1GdGNEdGhjRzl6T3ljOEwzUmtQZ284ZEdRK0Nqd3YKK2RHUStDand2ZEhJK0Nqd3ZkR0p2WkhrK0Nqd3ZkR0ZpYkdVK0NnbzhjRDVKYmlBOFlTQm9jbVZtUFNJalRsUXQKK1VITmxkV1J2UVhSMFZtRnNkV1VpUGxCelpYVmtiMEYwZEZaaGJIVmxQQzloUGl3Z1lTQThZU0JvY21WbVBTSm8KK2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk5VVVpOVNSVU10ZUcxc0kwNVVMVU5vWVhKU1pXWWlQa05vWVhKU1pXWTgKK0wyRStJRzl5SUdFZ1BHRWdhSEpsWmowaUkwNVVMVkJ5WldSbFprVnVkR2wwZVZKbFppSStVSEpsWkdWbVJXNTAKK2FYUjVVbVZtUEM5aFBpQnBjeUJwYm5SbGNuQnlaWFJsWkNCcGJpQjBhR1VLYzJGdFpTQnRZVzV1WlhJZ1lYTWcKK2FXNGdZU0J1YjNKdFlXd2dXRTFNSUdGMGRISnBZblYwWlNCMllXeDFaUzRnSUZSb1pTQmhZM1IxWVd3Z2RtRnMKK2RXVWdiMllLZEdobElIQnpaWFZrYnkxaGRIUnlhV0oxZEdVZ2FYTWdkR2hsSUhaaGJIVmxJR0ZtZEdWeUlHVmgKK1kyZ2djbVZtWlhKbGJtTmxJR2x6SUhKbGNHeGhZMlZrSUdKNUNuUm9aU0JqYUdGeVlXTjBaWElnYVhRZ2NtVm0KK1pYSmxibU5sY3k0Z0lGUm9hWE1nY21Wd2JHRmpaVzFsYm5RZ2FYTWdibTkwSUhCbGNtWnZjbTFsWkFwaGRYUnYKK2JXRjBhV05oYkd4NUlHSjVJR0Z1SUZoTlRDQndjbTlqWlhOemIzSXVQQzl3UGdvS1BIQStWR2hsSUR4amIyUmwKK1BuaHRiQzF6ZEhsc1pYTm9aV1YwUEM5amIyUmxQaUJ3Y205alpYTnphVzVuSUdsdWMzUnlkV04wYVc5dUlHbHoKK0lHRnNiRzkzWldRS2IyNXNlU0JwYmlCMGFHVWdjSEp2Ykc5bklHOW1JR0Z1SUZoTlRDQmtiMk4xYldWdWRDNGcKK1ZHaGxJSE41Ym5SaGVDQnZaaUJZVFV3Z1kyOXVjM1J5WVdsdWN3cDNhR1Z5WlNCd2NtOWpaWE56YVc1bklHbHUKK2MzUnlkV04wYVc5dWN5QmhjbVVnWVd4c2IzZGxaQ0JwYmlCMGFHVWdjSEp2Ykc5bk95QjBhR1VLUEdOdlpHVSsKK2VHMXNMWE4wZVd4bGMyaGxaWFE4TDJOdlpHVStJSEJ5YjJObGMzTnBibWNnYVc1emRISjFZM1JwYjI0Z2FYTWcKK1lXeHNiM2RsWkNCaGJubDNhR1Z5WlFwcGJpQjBhR1VnY0hKdmJHOW5JSFJvWVhRZ2JXVmxkSE1nZEdobGMyVWcKK1kyOXVjM1J5WVdsdWRITXVQQzl3UGdvS1BHSnNiMk5yY1hWdmRHVStDanhpUGs1UFZFVTZJRHd2WWo1SlppQjAKK2FHVWdQR052WkdVK2VHMXNMWE4wZVd4bGMyaGxaWFE4TDJOdlpHVStJSEJ5YjJObGMzTnBibWNnYVc1emRISjEKK1kzUnBiMjRLYjJOamRYSnpJR2x1SUhSb1pTQmxlSFJsY201aGJDQkVWRVFnYzNWaWMyVjBJRzl5SUdsdUlHRWcKK2NHRnlZVzFsZEdWeUlHVnVkR2wwZVN3Z2FYUWdhWE1LY0c5emMybGliR1VnZEdoaGRDQnBkQ0J0WVhrZ2JtOTAKK0lHSmxJSEJ5YjJObGMzTmxaQ0JpZVNCaElHNXZiaTEyWVd4cFpHRjBhVzVuSUZoTlRBcHdjbTlqWlhOemIzSWcKK0tITmxaU0E4WVNCb2NtVm1QU0lqV0UxTUlqNWJXRTFNTVRCZFBDOWhQaWt1UEM5aWJHOWphM0YxYjNSbFBnb0sKK1BIQStWR2hsSUdadmJHeHZkMmx1WnlCd2MyVjFaRzhnWVhSMGNtbGlkWFJsY3lCaGNtVWdaR1ZtYVc1bFpEd3YKK2NENEtDanh3Y21VK2FISmxaaUJEUkVGVVFTQWpVa1ZSVlVsU1JVUUtkSGx3WlNCRFJFRlVRU0FqVWtWUlZVbFMKK1JVUUtkR2wwYkdVZ1EwUkJWRUVnSTBsTlVFeEpSVVFLYldWa2FXRWdRMFJCVkVFZ0kwbE5VRXhKUlVRS1kyaGgKK2NuTmxkQ0JEUkVGVVFTQWpTVTFRVEVsRlJBcGhiSFJsY201aGRHVWdLSGxsYzN4dWJ5a2dJbTV2SWp3dmNISmwKK1Bnb0tQSEErVkdobElITmxiV0Z1ZEdsamN5QnZaaUIwYUdVZ2NITmxkV1J2TFdGMGRISnBZblYwWlhNZ1lYSmwKK0lHVjRZV04wYkhrZ1lYTWdkMmwwYUFvOFkyOWtaVDRtYkhRN1RFbE9TeUJTUlV3OUluTjBlV3hsYzJobFpYUWkKK0ptZDBPend2WTI5a1pUNGdhVzRnU0ZSTlRDQTBMakFzSUhkcGRHZ2dkR2hsQ21WNFkyVndkR2x2YmlCdlppQjAKK2FHVWdQR052WkdVK1lXeDBaWEp1WVhSbFBDOWpiMlJsUGlCd2MyVjFaRzh0WVhSMGNtbGlkWFJsTGlBZ1NXWUsKK1BHTnZaR1UrWVd4MFpYSnVZWFJsUFNKNVpYTWlQQzlqYjJSbFBpQnBjeUJ6Y0dWamFXWnBaV1FzSUhSb1pXNGcKK2RHaGxJSEJ5YjJObGMzTnBibWNLYVc1emRISjFZM1JwYjI0Z2FHRnpJSFJvWlNCelpXMWhiblJwWTNNZ2IyWWcKK1BHTnZaR1UrSm14ME8weEpUa3NnVWtWTVBTSmhiSFJsY201aGRHVUtjM1I1YkdWemFHVmxkQ0ltWjNRN1BDOWoKK2IyUmxQaUJwYm5OMFpXRmtJRzltSUR4amIyUmxQaVpzZER0TVNVNUxDbEpGVEQwaWMzUjViR1Z6YUdWbGRDSW0KK1ozUTdQQzlqYjJSbFBpNDhMM0ErQ2dvOFlteHZZMnR4ZFc5MFpUNEtQR0krVGs5VVJUb2dQQzlpUGxOcGJtTmwKK0lIUm9aU0IyWVd4MVpTQnZaaUIwYUdVZ1BHTnZaR1UrYUhKbFpqd3ZZMjlrWlQ0Z1lYUjBjbWxpZFhSbElHbHoKK0lHRWdWVkpKQ25KbFptVnlaVzVqWlN3Z2FYUWdiV0Y1SUdKbElHRWdjbVZzWVhScGRtVWdWVkpKSUdGdVpDQnAKK2RDQnRZWGtnWTI5dWRHRnBiaUJoSUdaeVlXZHRaVzUwQ21sa1pXNTBhV1pwWlhJdUlFbHVJSEJoY25ScFkzVnMKK1lYSWdkR2hsSUZWU1NTQnlaV1psY21WdVkyVWdiV0Y1SUdOdmJuUmhhVzRnYjI1c2VTQmhDbVp5WVdkdFpXNTAKK0lHbGtaVzUwYVdacFpYSXVJQ0JUZFdOb0lHRWdWVkpKSUhKbFptVnlaVzVqWlNCcGN5QmhJSEpsWm1WeVpXNWoKK1pTQjBieUJoSUhCaGNuUWdiMllLZEdobElHUnZZM1Z0Wlc1MElHTnZiblJoYVc1cGJtY2dkR2hsSUR4amIyUmwKK1BuaHRiQzF6ZEhsc1pYTm9aV1YwUEM5amIyUmxQaUJ3Y205alpYTnphVzVuQ21sdWMzUnlkV04wYVc5dUlDaHoKK1pXVWdQR0VnYUhKbFpqMGlJMUpHUXpJek9UWWlQbHRTUmtNeU16azJYVHd2WVQ0cExpQlVhR1VnWTI5dWMyVngKK2RXVnVZMlVnYVhNZ2RHaGhkQ0IwYUdVS1BHTnZaR1UrZUcxc0xYTjBlV3hsYzJobFpYUThMMk52WkdVK0lIQnkKK2IyTmxjM05wYm1jZ2FXNXpkSEoxWTNScGIyNGdZV3hzYjNkeklITjBlV3hsSUhOb1pXVjBjd3AwYnlCaVpTQmwKK2JXSmxaR1JsWkNCcGJpQjBhR1VnYzJGdFpTQmtiMk4xYldWdWRDQmhjeUIwYUdVZ1BHTnZaR1UrZUcxc0xYTjAKK2VXeGxjMmhsWlhROEwyTnZaR1UrQ25CeWIyTmxjM05wYm1jZ2FXNXpkSEoxWTNScGIyNHVQQzlpYkc5amEzRjEKK2IzUmxQZ29LUEhBK1NXNGdjMjl0WlNCallYTmxjeXdnYzNSNWJHVWdjMmhsWlhSeklHMWhlU0JpWlNCc2FXNXIKK1pXUWdkMmwwYUNCaGJpQllUVXdnWkc5amRXMWxiblFnWW5rS2JXVmhibk1nWlhoMFpYSnVZV3dnZEc4Z2RHaGwKK0lHUnZZM1Z0Wlc1MExpQkdiM0lnWlhoaGJYQnNaU3dnWldGeWJHbGxjaUIyWlhKemFXOXVjeUJ2WmlCSVZGUlEKK0NqeGhJR2h5WldZOUlpTlNSa015TURZNElqNWJVa1pETWpBMk9GMDhMMkUrSUNoelpXTjBhVzl1SURFNUxqWXUKK01pNDBLU0JoYkd4dmQyVmtJSE4wZVd4bElITm9aV1YwY3lCMGJ5QmlaUXBoYzNOdlkybGhkR1ZrSUhkcGRHZ2cKK1dFMU1JR1J2WTNWdFpXNTBjeUJpZVNCdFpXRnVjeUJ2WmlCMGFHVWdQR052WkdVK1RHbHVhend2WTI5a1pUNEsKK2FHVmhaR1Z5TGlBZ1FXNTVJR3hwYm10eklIUnZJSE4wZVd4bElITm9aV1YwY3lCMGFHRjBJR0Z5WlNCemNHVmoKK2FXWnBaV1FnWlhoMFpYSnVZV3hzZVNCMGJ5QjBhR1VLWkc5amRXMWxiblFnWVhKbElHTnZibk5wWkdWeVpXUWcKK2RHOGdiMk5qZFhJZ1ltVm1iM0psSUhSb1pTQnNhVzVyY3lCemNHVmphV1pwWldRZ1lua2dkR2hsQ2p4amIyUmwKK1BuaHRiQzF6ZEhsc1pYTm9aV1YwUEM5amIyUmxQaUJ3Y205alpYTnphVzVuSUdsdWMzUnlkV04wYVc5dWN5NGcKK0lGUm9hWE1nYVhNZ2RHaGxJSE5oYldVS1lYTWdhVzRnU0ZSTlRDQTBMakFnS0hObFpTQThZU0JvY21WbVBTSm8KK2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk5VVVpOVNSVU10YUhSdGJEUXdMM0J5WlhObGJuUXZjM1I1YkdWekxtaDAKK2JXd2phQzB4TkM0MklqNXpaV04wYVc5dUNqRTBMalk4TDJFK0tTNDhMM0ErQ2dvOGNENUlaWEpsSUdGeVpTQnoKK2IyMWxJR1Y0WVcxd2JHVnpJR1p5YjIwZ1NGUk5UQ0EwTGpBZ2QybDBhQ0IwYUdVZ1kyOXljbVZ6Y0c5dVpHbHUKK1p3cHdjbTlqWlhOemFXNW5JR2x1YzNSeWRXTjBhVzl1T2p3dmNENEtDanh3Y21VK0pteDBPMHhKVGtzZ2FISmwKK1pqMGliWGx6ZEhsc1pTNWpjM01pSUhKbGJEMGljM1I1YkdVZ2MyaGxaWFFpSUhSNWNHVTlJblJsZUhRdlkzTnoKK0lpWm5kRHNLSm14ME96OTRiV3d0YzNSNWJHVnphR1ZsZENCb2NtVm1QU0p0ZVhOMGVXeGxMbU56Y3lJZ2RIbHcKK1pUMGlkR1Y0ZEM5amMzTWlQeVpuZERzS0NpWnNkRHRNU1U1TElHaHlaV1k5SW0xNWMzUjViR1V1WTNOeklpQjAKK2FYUnNaVDBpUTI5dGNHRmpkQ0lnY21Wc1BTSnpkSGxzWlhOb1pXVjBJZ3AwZVhCbFBTSjBaWGgwTDJOemN5SW0KK1ozUTdDaVpzZERzL2VHMXNMWE4wZVd4bGMyaGxaWFFnYUhKbFpqMGliWGx6ZEhsc1pTNWpjM01pSUhScGRHeGwKK1BTSkRiMjF3WVdOMElpQjBlWEJsUFNKMFpYaDBMMk56Y3lJL0ptZDBPd29LSm14ME8weEpUa3NnYUhKbFpqMGkKK2JYbHpkSGxzWlM1amMzTWlJSFJwZEd4bFBTSk5aV1JwZFcwaUlISmxiRDBpWVd4MFpYSnVZWFJsSUhOMGVXeGwKK2MyaGxaWFFpQ25SNWNHVTlJblJsZUhRdlkzTnpJaVpuZERzS0pteDBPejk0Yld3dGMzUjViR1Z6YUdWbGRDQmgKK2JIUmxjbTVoZEdVOUlubGxjeUlnYUhKbFpqMGliWGx6ZEhsc1pTNWpjM01pSUhScGRHeGxQU0pOWldScGRXMGkKK0NuUjVjR1U5SW5SbGVIUXZZM056SWo4bVozUTdQQzl3Y21VK0NnbzhjRDVOZFd4MGFYQnNaU0E4WTI5a1pUNTQKK2JXd3RjM1I1YkdWemFHVmxkRHd2WTI5a1pUNGdjSEp2WTJWemMybHVaeUJwYm5OMGNuVmpkR2x2Ym5NZ1lYSmwKK0NtRnNjMjhnWVd4c2IzZGxaQ0IzYVhSb0lHVjRZV04wYkhrZ2RHaGxJSE5oYldVZ2MyVnRZVzUwYVdOeklHRnoKK0lIZHBkR2dnUEdOdlpHVStURWxPU3dwU1JVdzlJbk4wZVd4bGMyaGxaWFFpUEM5amIyUmxQaTRnUm05eUlHVjQKK1lXMXdiR1VzUEM5d1Bnb0tQSEJ5WlQ0bWJIUTdURWxPU3lCeVpXdzlJbUZzZEdWeWJtRjBaU0J6ZEhsc1pYTm8KK1pXVjBJaUIwYVhSc1pUMGlZMjl0Y0dGamRDSWdhSEpsWmowaWMyMWhiR3d0WW1GelpTNWpjM01pQ25SNWNHVTkKK0luUmxlSFF2WTNOeklpWm5kRHNLSm14ME8weEpUa3NnY21Wc1BTSmhiSFJsY201aGRHVWdjM1I1YkdWemFHVmwKK2RDSWdkR2wwYkdVOUltTnZiWEJoWTNRaUlHaHlaV1k5SW5OdFlXeHNMV1Y0ZEhKaGN5NWpjM01pQ25SNWNHVTkKK0luUmxlSFF2WTNOeklpWm5kRHNLSm14ME8weEpUa3NnY21Wc1BTSmhiSFJsY201aGRHVWdjM1I1YkdWemFHVmwKK2RDSWdkR2wwYkdVOUltSnBaeUJ3Y21sdWRDSWdhSEpsWmowaVltbG5jSEpwYm5RdVkzTnpJZ3AwZVhCbFBTSjAKK1pYaDBMMk56Y3lJbVozUTdDaVpzZER0TVNVNUxJSEpsYkQwaWMzUjViR1Z6YUdWbGRDSWdhSEpsWmowaVkyOXQKK2JXOXVMbU56Y3lJZ2RIbHdaVDBpZEdWNGRDOWpjM01pSm1kME96d3ZjSEpsUGdvS1BIQStkMjkxYkdRZ1ltVWcKK1pYRjFhWFpoYkdWdWRDQjBiem84TDNBK0NnbzhjSEpsUGlac2REcy9lRzFzTFhOMGVXeGxjMmhsWlhRZ1lXeDAKK1pYSnVZWFJsUFNKNVpYTWlJSFJwZEd4bFBTSmpiMjF3WVdOMElpQm9jbVZtUFNKemJXRnNiQzFpWVhObExtTnoKK2N5SUtkSGx3WlQwaWRHVjRkQzlqYzNNaVB5Wm5kRHNLSm14ME96OTRiV3d0YzNSNWJHVnphR1ZsZENCaGJIUmwKK2NtNWhkR1U5SW5sbGN5SWdkR2wwYkdVOUltTnZiWEJoWTNRaUlHaHlaV1k5SW5OdFlXeHNMV1Y0ZEhKaGN5NWoKK2MzTWlDblI1Y0dVOUluUmxlSFF2WTNOeklqOG1aM1E3Q2lac2REcy9lRzFzTFhOMGVXeGxjMmhsWlhRZ1lXeDAKK1pYSnVZWFJsUFNKNVpYTWlJSFJwZEd4bFBTSmlhV2NnY0hKcGJuUWlJR2h5WldZOUltSnBaM0J5YVc1MExtTnoKK2N5SUtkSGx3WlQwaWRHVjRkQzlqYzNNaVB5Wm5kRHNLSm14ME96OTRiV3d0YzNSNWJHVnphR1ZsZENCb2NtVm0KK1BTSmpiMjF0YjI0dVkzTnpJaUIwZVhCbFBTSjBaWGgwTDJOemN5SS9KbWQwT3p3dmNISmxQZ29LQ2dvOGFISWcKK2RHbDBiR1U5SWxObGNHRnlZWFJ2Y2lCbWNtOXRJR1p2YjNSbGNpSStDZ284YURJK0NqeGhJRzVoYldVOUlsSmwKK1ptVnlaVzVqWlhNaVBqd3ZZVDVCSUZKbFptVnlaVzVqWlhNOEwyZ3lQZ29LUEdSc1Bnb0tQR1IwUGdvOFlTQnUKK1lXMWxQU0pJVkUxTUlqNUlWRTFNTkRBOEwyRStDand2WkhRK0NqeGtaRDVYYjNKc1pDQlhhV1JsSUZkbFlncEQKK2IyNXpiM0owYVhWdExpQThhVDVJVkUxTUlEUXVNQ0JUY0dWamFXWnBZMkYwYVc5dUxqd3ZhVDRnVnpORElGSmwKK1kyOXRiV1Z1WkdGMGFXOXVMaUJUWldVS1BHRWdhSEpsWmowaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdlZGSXYKK1VrVkRMV2gwYld3ME1DSSthSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZWRkl2VWtWRExXaDBiV3cwTUR3dllUNEsKK1BDOWtaRDRLQ2p4a2RENEtQR0VnYm1GdFpUMGlVa1pETWpBMk9DSStVa1pETWpBMk9Ed3ZZVDRLUEM5a2RENEsKK1BHUmtQbEl1SUVacFpXeGthVzVuTENCS0xpQkhaWFIwZVhNc0lFb3VJRTF2WjNWc0xBcElMaUJHY25semRIbHIKK0lFNXBaV3h6Wlc0c0lHRnVaQ0JVTGlCQ1pYSnVaWEp6TFV4bFpTNGdJRHhwUGtoNWNHVnlkR1Y0ZENCVWNtRnUKK2MyWmxjZ3BRY205MGIyTnZiQ0F0TFNCSVZGUlFMekV1TVM0OEwyaytMaUJKUlZSR0lGSkdReUF5TURZNExpQlQKK1pXVWdQR0VnYUhKbFpqMGlhSFIwY0RvdkwzZDNkeTVwWlhSbUxtOXlaeTl5Wm1NdmNtWmpNakEyT0M1MGVIUWkKK1BtaDBkSEE2THk5M2QzY3VhV1YwWmk1dmNtY3ZjbVpqTDNKbVl6SXdOamd1ZEhoMFBDOWhQaTQ4TDJSa1Bnb0sKK1BHUjBQZ284WVNCdVlXMWxQU0pTUmtNeU16azJJajVTUmtNeU16azJQQzloUGdvOEwyUjBQZ284WkdRK1ZDNGcKK1FtVnlibVZ5Y3kxTVpXVXNJRkl1SUVacFpXeGthVzVuTENCaGJtUUtUQzRnVFdGemFXNTBaWEl1SUNBOGFUNVYKK2JtbG1iM0p0SUZKbGMyOTFjbU5sSUVsa1pXNTBhV1pwWlhKeklDaFZVa2twT2lCSFpXNWxjbWxqQ2xONWJuUmgKK2VEd3ZhVDR1SUVsRlZFWWdVa1pESURJek9UWXVJRk5sWlNBOFlTQm9jbVZtUFNKb2RIUndPaTh2ZDNkM0xtbGwKK2RHWXViM0puTDNKbVl5OXlabU15TXprMkxuUjRkQ0krYUhSMGNEb3ZMM2QzZHk1cFpYUm1MbTl5Wnk5eVptTXYKK2NtWmpNak01Tmk1MGVIUThMMkUrTGp3dlpHUStDZ284WkhRK0NqeGhJRzVoYldVOUlsaE5UQ0krV0UxTU1UQTgKK0wyRStDand2WkhRK0NqeGtaRDVYYjNKc1pDQlhhV1JsSUZkbFlpQkRiMjV6YjNKMGFYVnRMaUE4YVQ1RmVIUmwKK2JuTnBZbXhsQ2sxaGNtdDFjQ0JNWVc1bmRXRm5aU0FvV0UxTUtTQXhMakF1UEM5cFBpQlhNME1nVW1WamIyMXQKK1pXNWtZWFJwYjI0dUlGTmxaU0E4WVNCb2NtVm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTlVVWk4eE9UazQKK0wxSkZReTE0Yld3dE1UazVPREF5TVRBaVBtaDBkSEE2THk5M2QzY3Vkek11YjNKbkwxUlNMekU1T1RndlVrVkQKK0xYaHRiQzB4T1RrNE1ESXhNRHd2WVQ0S1BDOWtaRDRLQ2p3dlpHdytDZ29LQ2dvOGFESStDanhoSUc1aGJXVTkKK0luSmhkR2x2Ym1Gc1pTSStQQzloUGtJZ1VtRjBhVzl1WVd4bFBDOW9NajRLQ2p4d1BsUm9aWEpsSUhkaGN5QmgKK2JpQjFjbWRsYm5RZ2NtVnhkV2x5WlcxbGJuUWdabTl5SUdFZ2MzQmxZMmxtYVdOaGRHbHZiaUJtYjNJZ2MzUjUKK2JHVWdjMmhsWlhRS2JHbHVhMmx1WnlCMGFHRjBJR052ZFd4a0lHSmxJR052YlhCc1pYUmxaQ0JwYmlCMGFXMWwKK0lHWnZjaUIwYUdVZ2JtVjRkQ0J5Wld4bFlYTmxJR1p5YjIwS2JXRnFiM0lnWW5KdmQzTmxjaUIyWlc1a2IzSnoKK0xpQWdUMjVzZVNCaWVTQmphRzl2YzJsdVp5QmhJSE5wYlhCc1pTQnRaV05vWVc1cGMyMGdZMnh2YzJWc2VRcGkKK1lYTmxaQ0J2YmlCaElIQnliM1psYmlCbGVHbHpkR2x1WnlCdFpXTm9ZVzVwYzIwZ1kyOTFiR1FnZEdobElITncKK1pXTnBabWxqWVhScGIyNGdZbVVLWTI5dGNHeGxkR1ZrSUdsdUlIUnBiV1VnZEc4Z2JXVmxkQ0IwYUdseklISmwKK2NYVnBjbVZ0Wlc1MExqd3ZjRDRLQ2p4d1BsVnpaU0J2WmlCaElIQnliMk5sYzNOcGJtY2dhVzV6ZEhKMVkzUnAKK2IyNGdZWFp2YVdSeklIQnZiR3gxZEdsdVp5QjBhR1VnYldGcGJpQmtiMk4xYldWdWRBcHpkSEoxWTNSMWNtVWcKK2QybDBhQ0JoY0hCc2FXTmhkR2x2YmlCemNHVmphV1pwWXlCd2NtOWpaWE56YVc1bklHbHVabTl5YldGMGFXOXUKK0xqd3ZjRDRLQ2p4d1BsUm9aU0J0WldOb1lXNXBjMjBnWTJodmMyVnVJR1p2Y2lCMGFHbHpJSFpsY25OcGIyNGcKK2IyWWdkR2hsSUhOd1pXTnBabWxqWVhScGIyNGdhWE1nYm05MElHRUtZMjl1YzNSeVlXbHVkQ0J2YmlCMGFHVWcKK1lXUmthWFJwYjI1aGJDQnRaV05vWVc1cGMyMXpJSEJzWVc1dVpXUWdabTl5SUdaMWRIVnlaU0IyWlhKemFXOXUKK2N5NEtWR2hsY21VZ2FYTWdibThnWlhod1pXTjBZWFJwYjI0Z2RHaGhkQ0IwYUdWelpTQjNhV3hzSUhWelpTQncKK2NtOWpaWE56YVc1bklHbHVjM1J5ZFdOMGFXOXVjenNLYVc1a1pXVmtJSFJvWlhrZ2JXRjVJRzV2ZENCcGJtTnMKK2RXUmxJSFJvWlNCc2FXNXJhVzVuSUdsdVptOXliV0YwYVc5dUlHbHVJSFJvWlNCemIzVnlZMlVLWkc5amRXMWwKK2JuUXVQQzl3UGdvS0Nnb0tQQzlpYjJSNVBnbzhMMmgwYld3K0NnPT0KZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvUmVhZG1lLnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvUmVhZG1lLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTY2M2I3Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9SZWFkbWUudHh0CkBAIC0wLDAgKzEsMTE3IEBACitFeGFtcGxlIFNpZ25hdHVyZXNbMV0gdXNpbmcgRW5jcnlwdGlvblsyXSBrZXkgaW5mb3JtYXRpb24gYW5kCitBZGRpdGlvbmFsIFNlY3VyaXR5IFVSSXNbM10sIEVuY3J5cHRlZCBEYXRhWzJdIGFuZCBEZWNyeXB0aW9uCitUcmFuc2Zvcm1bNF0KKworWzFdIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDIvUkVDLXhtbGRzaWctY29yZS0yMDAyMDIxMi8KK1syXSBodHRwOi8vd3d3LnczLm9yZy9FbmNyeXB0aW9uLzIwMDEvRHJhZnRzL3htbGVuYy1jb3JlLworWzNdIGh0dHA6Ly93d3cuaWV0Zi5vcmcvaW50ZXJuZXQtZHJhZnRzL2RyYWZ0LWVhc3RsYWtlLXhtbGRzaWctdXJpLTAyLnR4dAorWzRdIGh0dHA6Ly93d3cudzMub3JnL1RSL3htbGVuYy1kZWNyeXB0CisKKyoqKgorU29tZSBvZiB0aGVzZSBzaWduYXR1cmUgYXJlIFdJVEhPVVQgY3J5cHRvZ3JhcGhpYyBtZXJpdDsKK2ZvciBleGFtcGxlLCBrZXkgdHJhbnNwb3J0IG9mIGFuIEhNQUMga2V5IGlzIG1lYW5pbmdsZXNzLgorVGhlc2UgYXJlIHByb3ZpZGVkIHNvbGVseSBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KKyoqKgorCitQcml2YXRlIGtleXMgbmVjZXNzYXJ5IGZvciBwZXJmb3JtaW5nIHRoZSB2ZXJpZmljYXRpb24KK2FuZCBkZWNyeXB0aW9uIGFyZSBwcm92aWRlZCBpbiB0aGUgUEtDUyMxMiBmaWxlIGlkcy5wMTIsCitlbmNyeXB0ZWQgdW5kZXIgdGhlIHBhc3MgcGhyYXNlICJPdXIgTGl0dGxlIFNlY3JldCIuIEkKK21heSBoYXZlIGRvbmUgc29tZSBvZiB0aGUgQVNOLjEgZW5jb2RpbmcgaW4gdGhpcyBQMTIKK2luY29ycmVjdGx5OyBJIGhvcGUgbm90LiBQcml2YXRlIGtleXMgYXJlIGFsc28gYXZhaWxhYmxlCitpbiBQS0NTIzggZW5jb2Rpbmc7IHJzYS5wOCwgZGgxLnA4LgorCitSU0EvT0FFUCBpcyBwcmVzZW50bHkgcG9vcmx5IGRlZmluZWQ7IEkgYXNzdW1lIE1HRjEvU0hBLTEuCisKK1NlY3JldCBrZXlzIGFyZSBpZGVudGlmaWVkIGJ5IGtleSBuYW1lIGFzIGZvbGxvd3M6CisKKyBLZXkgTmFtZSB8IEFsZ29yaXRobSB8IEtleSBWYWx1ZQorLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAgYm9iICAgIHwgICAzZGVzICAgIHwgImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eCIuZ2V0Qnl0ZXMgKCJBU0NJSSIpCisgICBqb2IgICAgfCAgYWVzLTEyOCAgfCAiYWJjZGVmZ2hpamtsbW5vcCIuZ2V0Qnl0ZXMgKCJBU0NJSSIpCisgICBqZWIgICAgfCAgYWVzLTE5MiAgfCAiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4Ii5nZXRCeXRlcyAoIkFTQ0lJIikKKyAgIGplZCAgICB8ICBhZXMtMjU2ICB8ICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NSIuZ2V0Qnl0ZXMgKCJBU0NJSSIpCisKKy4gZW5jcnlwdC1jb250ZW50LWFlczEyOC1jYmMta3ctYWVzMTkyLnhtbAorLiBlbmNyeXB0LWNvbnRlbnQtYWVzMTkyLWNiYy1kaC1zaGE1MTIueG1sCisuIGVuY3J5cHQtY29udGVudC10cmlwbGVkZXMtY2JjLnhtbAorLiBlbmNyeXB0LWRhdGEtYWVzMTI4LWNiYy54bWwKKy4gZW5jcnlwdC1kYXRhLWFlczE5Mi1jYmMta3ctYWVzMjU2LnhtbAorLiBlbmNyeXB0LWRhdGEtYWVzMjU2LWNiYy1rdy10cmlwbGVkZXMueG1sCisuIGVuY3J5cHQtZGF0YS10cmlwbGVkZXMtY2JjLXJzYS1vYWVwLW1nZjFwLXNoYTI1Ni54bWwKKy4gZW5jcnlwdC1kYXRhLXRyaXBsZWRlcy1jYmMtcnNhLW9hZXAtbWdmMXAueG1sCisuIGVuY3J5cHQtZWxlbWVudC1hZXMxMjgtY2JjLXJzYS0xXzUueG1sCisuIGVuY3J5cHQtZWxlbWVudC1hZXMxOTItY2JjLXJlZi54bWwKKy4gZW5jcnlwdC1lbGVtZW50LWFlczI1Ni1jYmMta3ctYWVzMjU2LWRoLXJpcGVtZDE2MC54bWwKKy4gZW5jcnlwdC1lbGVtZW50LXRyaXBsZWRlcy1jYmMta3ctYWVzMTI4LnhtbAorICBFbmNyeXB0ZWQgY29udGVudCwgZWxlbWVudCBhbmQgZGF0YS4gUlNBIHByaXZhdGUga2V5IGhhcworICBmcmllbmRseSBuYW1lICJSU0EiIGluIHRoZSBQMTIsIGFuZCBpcyByc2EucDguCisgIERIIHByaXZhdGUga2V5IGhhcyBJRCAiREgxIiwgYW5kIGlzIGRoMS5wOC4KKworLiBlbmNyeXB0LWNvbnRlbnQtYWVzMjU2LWNiYy1wcm9wLnhtbAorICBDb250YWlucyBhIHVzZWxlc3MgRW5jcnlwdGlvblByb3BlcnR5LgorCisuIGVuY3J5cHQtZWxlbWVudC1hZXMyNTYtY2JjLWNhcnJpZWQta3ctYWVzMjU2LnhtbAorICBFeHRlcm5hbCBFbmNyeXB0ZWRLZXkgY29udGFpbnMgYSBDYXJyaWVkS2V5TmFtZSB3aGljaAorICBpcyByZWZlcmVuY2VkIGJ5IGEgS2V5TmFtZSBpbiB0aGUgRW5jcnlwdGVkRGF0YTsgdGhlCisgIGtleSBmb3IgUmVjaXBpZW50ICJzb21lb25lIGVsc2UiIGlzIG5vdCBmb3IgeW91OyB0aGUKKyAga2V5IGZvciBSZWNpcGllbnQgInlvdSIgaXMuCisKKy4gZW5jcnlwdC1lbGVtZW50LWFlczI1Ni1jYmMtcmV0cmlldmVkLWt3LWFlczI1Ni54bWwKKyAgRXh0ZXJuYWwgRW5jcnlwdGVkS2V5IGlzIGlkZW50aWZpZWQgYnkgYSBSZXRyaWV2YWxNZXRob2QKKyAgaW4gdGhlIEVuY3J5cHRlZERhdGEuCisKKy4gZGVjcnlwdGlvbi10cmFuc2Zvcm0ueG1sCisgIERlY3J5cHRpb24gdHJhbnNmb3JtLgorCisuIGRlY3J5cHRpb24tdHJhbnNmb3JtLWV4Y2VwdC54bWwKKyAgRGVjcnlwdGlvbiB0cmFuc2Zvcm0gd2l0aCBFeGNlcHQuCisKK0FsbCBzaWduYXR1cmVzIGFyZSBwZXJmb3JtZWQgd2l0aCBub250cnVuY2F0ZWQgSE1BQworYWxnb3JpdGhtcy4KKworRm9yIGRlYnVnZ2luZyBwdXJwb3Nlcywgd2hlcmUgY2hvc2VuLCB0aGUgTUFDIGtleSBpcworImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Ii5nZXRCeXRlcyAoIkFTQ0lJIikuIFdoZXJlCithZ3JlZWQsIGl0IGhhcyBsZW5ndGggZXF1YWwgdG8gdGhlIEhNQUMgb3V0cHV0IGxlbmd0aDsgZS5nLiwgMjU2CitiaXRzIGZvciBITUFDL1NIQS0yNTYuCisKKy4gZW5jc2lnLXJpcGVtZDE2MC1obWFjLXJpcGVtZDE2MC1rdy10cmlwbGVkZXMueG1sCisgIFJJUEVNRC0xNjAgbWVzc2FnZSBkaWdlc3Q7IEhNQUMvUklQRU1ELTE2MCBrZXkgaXMgd3JhcHBlZAorICB1c2luZyB0cmlwbGUgREVTLiBUaGUgZGVjcnlwdGlvbiBrZXkgaXMgZnJvbSB0aGUgYWJvdmUgdGFibGUsCisgIGlkZW50aWZpZWQgYnkgdGhlIGtleSBuYW1lICJib2IiLgorCisuIGVuY3NpZy1zaGEyNTYtaG1hYy1zaGEyNTYta3ctYWVzMTI4LnhtbAorICBTSEEtMjU2IG1lc3NhZ2UgZGlnZXN0OyBITUFDL1NIQS0yNTYga2V5IGlzIHdyYXBwZWQgdXNpbmcKKyAgQUVTLTEyOC4gVGhlIGRlY3J5cHRpb24ga2V5IGlzIGZyb20gdGhlIGFib3ZlIHRhYmxlLCBpZGVudGlmaWVkCisgIGJ5IHRoZSBrZXkgbmFtZSAiam9iIi4KKworLiBlbmNzaWctc2hhMzg0LWhtYWMtc2hhMzg0LWt3LWFlczE5Mi54bWwKKyAgU0hBLTM4NCBtZXNzYWdlIGRpZ2VzdDsgSE1BQy9TSEEtMzg0IGtleSBpcyB3cmFwcGVkIHVzaW5nCisgIEFFUy0xOTIuIFRoZSBkZWNyeXB0aW9uIGtleSBpcyBmcm9tIHRoZSBhYm92ZSB0YWJsZSwgaWRlbnRpZmllZAorICBieSB0aGUga2V5IG5hbWUgImplYiIuCisKKy4gZW5jc2lnLXNoYTUxMi1obWFjLXNoYTUxMi1rdy1hZXMyNTYueG1sCisgIFNIQS01MTIgbWVzc2FnZSBkaWdlc3Q7IEhNQUMvU0hBLTUxMiBrZXkgaXMgd3JhcHBlZCB1c2luZworICBBRVMtMjU2LiBUaGUgZGVjcnlwdGlvbiBrZXkgaXMgZnJvbSB0aGUgYWJvdmUgdGFibGUsIGlkZW50aWZpZWQKKyAgYnkgdGhlIGtleSBuYW1lICJqZWQiLgorCisuIGVuY3NpZy1obWFjLXNoYTI1Ni1yc2EtMV81LnhtbAorICBITUFDL1NIQS0yNTYga2V5cyBpcyB0cmFuc3BvcnRlZCB1c2luZyBSU0EvT0FFUC4gWW91ciBwcml2YXRlCisgIGtleSBoYXMgZnJpZW5kbHkgbmFtZSAiUlNBIiBpbiB0aGUgUDEyLgorCisuIGVuY3NpZy1obWFjLXNoYTI1Ni1yc2Etb2FlcC1tZ2YxcC54bWwKKyAgSE1BQy9TSEEtMjU2IGtleXMgaXMgdHJhbnNwb3J0ZWQgdXNpbmcgUlNBL1BLQ1MjMS4gWW91ciBwcml2YXRlCisgIGtleSBoYXMgZnJpZW5kbHkgbmFtZSAiUlNBIiBpbiB0aGUgUDEyLgorCisuIGVuY3NpZy1obWFjLXNoYTI1Ni1kaC54bWwKKyAgSE1BQy9TSEEtMjU2IGtleSBpcyBhZ3JlZWQgdXNpbmcgRGlmZmllIEhlbGxtYW4uIFlvdXIgcHJpdmF0ZQorICBrZXkgaGFzIGZyaWVuZGx5IG5hbWUgIkRIMSIgaW4gdGhlIFAxMi4KKworLiBlbmNzaWctaG1hYy1zaGEyNTYta3ctdHJpcGxlZGVzLWRoLnhtbAorICBITUFDL1NIQS0yNTYga2V5IGlzIHdyYXBwZWQgdXNpbmcgdHJpcGxlIERFUy4gVGhlIGRlY3J5cHRpb24KKyAga2V5IGlzIGFncmVlZCB1c2luZyBEaWZmaWUgSGVsbG1hbi4gWW91ciBwcml2YXRlIGtleSBoYXMKKyAgZnJpZW5kbHkgbmFtZSAiREgxIiBpbiB0aGUgUDEyLgorCitNZXJsaW4gSHVnaGVzIDxtZXJsaW5AYmFsdGltb3JlLmllPgorQmFsdGltb3JlIFRlY2hub2xvZ2llcywgTHRkLgorCitNb25kYXksIE1hcmNoIDQsIDIwMDIKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvYmFkLWVuY3J5cHQtY29udGVudC1hZXMxMjgtY2JjLWt3LWFlczE5Mi54bWwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2JhZC1lbmNyeXB0LWNvbnRlbnQtYWVzMTI4LWNiYy1rdy1hZXMxOTIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0ZWVjNTcKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2JhZC1lbmNyeXB0LWNvbnRlbnQtYWVzMTI4LWNiYy1rdy1hZXMxOTIueG1sCkBAIC0wLDAgKzEsNDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8UHVyY2hhc2VPcmRlciB4bWxucz0idXJuOmV4YW1wbGU6cG8iPgorICA8SXRlbXM+CisgICAgPEl0ZW0gQ29kZT0iMDAxLTAwMS0wMDEiIFF1YW50aXR5PSIxIj4KKyAgICAgIHNwYWRlCisgICAgPC9JdGVtPgorICAgIDxJdGVtIENvZGU9IjAwMS0wMDEtMDAyIiBRdWFudGl0eT0iMSI+CisgICAgICBzaG92ZWwKKyAgICA8L0l0ZW0+CisgIDwvSXRlbXM+CisgIDxTaGlwcGluZ0FkZHJlc3M+CisgICAgRGlnIFBMQywgMSBGaXJzdCBBdmUsIER1YmxpbiAxLCBJcmVsYW5kCisgIDwvU2hpcHBpbmdBZGRyZXNzPgorICA8UGF5bWVudEluZm8+CisgICAgPEVuY3J5cHRlZERhdGEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjQ29udGVudCI+CisgICAgICA8RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczEyOC1jYmMiIC8+CisgICAgICA8S2V5SW5mbyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgIDxFbmNyeXB0ZWRLZXkgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+CisgICAgICAgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNrdy1hZXMxOTIiIC8+CisgICAgICAgICAgPEtleUluZm8geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgICAgICAgPEtleU5hbWU+amViPC9LZXlOYW1lPgorICAgICAgICAgIDwvS2V5SW5mbz4KKyAgICAgICAgICA8Q2lwaGVyRGF0YT4KKyAgICAgICAgICAgIDxDaXBoZXJWYWx1ZT4KKyAgICAgICAgICAgICAgSmJqWkg3TXE1NjRvTXlicHZDSFdZTS81RVIzZUZzQVYKKyAgICAgICAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgICAgICAgPC9DaXBoZXJEYXRhPgorICAgICAgICA8L0VuY3J5cHRlZEtleT4KKyAgICAgIDwvS2V5SW5mbz4KKyAgICAgIDxDaXBoZXJEYXRhPgorICAgICAgICA8Q2lwaGVyVmFsdWU+CisgICAgICAgICAgWURZVHhSK3NteFpEU1ZvWFhFcDNuNkh6VGdXcVY3WmxHNkkxbG1Fdjd6TEdaQkYvbzdlcWU1UUdUNkwzRFBOVworICAgICAgICAgIGdlZmxBOHZWSkh4d2xpaXhXY3ZIQ25OS1FreCtTdzhZYklrbkNReXI0bXF0WEVtSGhzaWU1WFlURXlxZ0tMVlAKKyAgICAgICAgICBZZE5YZjU2d0xVVE1FbUJxcTdjdG85T3JZY0JXa3JEY1FRdkhtRGtIdUcrTm9tNG0rNjIzR3NCMEZOdHM2VnlOCisgICAgICAgICAgc2RHTXdvNEswYkVGUmVMTDA0bDZJdCtjZ0xKMnErTEtkQm9NUUw1OUlBUW1yd2kwYmtpcWVlMmNMbER1R3lRMQorICAgICAgICAgIEtEOUlRMXF0bEpwdlF1ak40eE5WV1QwMFVqdFd4bXBTTUlEL0t1ZS9BblhuN0NmOHp3MVpaUWl0Z2g4dVdPWDIKKyAgICAgICAgICB1TXk5OUYyWWx4cUlLMXIrTWVYSHVaRE5mNzVTOGRGYUtJS3RITWY3aW9BPQorICAgICAgICA8L0NpcGhlclZhbHVlPgorICAgICAgPC9DaXBoZXJEYXRhPgorICAgIDwvRW5jcnlwdGVkRGF0YT4KKyAgPC9QYXltZW50SW5mbz4KKzwvUHVyY2hhc2VPcmRlcj4KZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZGVjcnlwdGlvbi10cmFuc2Zvcm0tZXhjZXB0LnhtbCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZGVjcnlwdGlvbi10cmFuc2Zvcm0tZXhjZXB0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGQyMjUxCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9kZWNyeXB0aW9uLXRyYW5zZm9ybS1leGNlcHQueG1sCkBAIC0wLDAgKzEsODMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8UHVyY2hhc2VPcmRlciB4bWxucz0idXJuOmV4YW1wbGU6cG8iPgorICA8SXRlbXM+CisgICAgPEl0ZW0gQ29kZT0iMDAxLTAwMS0wMDEiIFF1YW50aXR5PSIxIj4KKyAgICAgIHNwYWRlCisgICAgPC9JdGVtPgorICAgIDxJdGVtIENvZGU9IjAwMS0wMDEtMDAyIiBRdWFudGl0eT0iMSI+CisgICAgICBzaG92ZWwKKyAgICA8L0l0ZW0+CisgIDwvSXRlbXM+CisgIDxTaGlwcGluZ0FkZHJlc3M+CisgICAgRGlnIFBMQywgMSBGaXJzdCBBdmUsIER1YmxpbiAxLCBJcmVsYW5kCisgIDwvU2hpcHBpbmdBZGRyZXNzPgorICA8UGF5bWVudEluZm8+CisgICAgPEVuY3J5cHRlZERhdGEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgSWQ9ImVuY3J5cHQtZGF0YS0wIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNDb250ZW50Ij4KKyAgICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjYWVzMjU2LWNiYyIgLz4KKyAgICAgIDxLZXlJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgPEtleU5hbWU+amVkPC9LZXlOYW1lPgorICAgICAgPC9LZXlJbmZvPgorICAgICAgPENpcGhlckRhdGE+CisgICAgICAgIDxDaXBoZXJWYWx1ZT4KKyAgICAgICAgICBjWDZsbmZnbXZXdXh5aVFnTmh6QXExbFlnZ1cyTTVHemlGZ05CUWp1M3hjbkRxbHpmNUxTamV5Qm5iTDBRN3dzCisgICAgICAgICAgOFhoeVNGQ3Jkd0lpNW1WeHlmZEZrVnJUbHpRUTB2aWFxVERnaTlQUVJnWk1PSW1HR1dpajN3Ym1mOVhzZUhIdAorICAgICAgICAgIDZxOFY3TFBqTUZRQW5zTERRZ0tmNGd6ek9uaHRLZjE1R2ZURXBHdlVuTm4yZExEeHcraERjRDFONTQvYmpTUXMKKyAgICAgICAgICB1VGlMN1BnR1E1ZzR1NGVhWFJSTFdlQUdzSWY1UWdkUUczR0xpT1pJWDFMSjViUkVLZ1hlS3J0SkpJOTd4VVgzCisgICAgICAgICAgM3ZhRit0S1JjU0ZCRklNakZydzI3MWJGajR2dnZRWmZTUzZ4WCtCS1hIT1V1OEM0Tkg5TGU4cEE5bzROZ0NCOAorICAgICAgICAgIHRXQThXM2lJNS9CR0VadmUwTWU5Ynl2UEhZalJYbGJHK1lxeXNWVG16Znc9CisgICAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgICA8L0NpcGhlckRhdGE+CisgICAgPC9FbmNyeXB0ZWREYXRhPgorICAgIDxFbmNyeXB0ZWREYXRhIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiIElkPSJlbmNyeXB0LWRhdGEtMSI+CisgICAgICA8RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiIC8+CisgICAgICA8Q2lwaGVyRGF0YT4KKyAgICAgICAgPENpcGhlclZhbHVlPgorICAgICAgICAgIHgzYVI1cEo1cGVwRkZINUVOdjYxcFpHNHBWd05LYU0rSDlveVk0cUc2ZDhsL0MwSjFpR3Y2YzhkeUxwMFlRMmsKKyAgICAgICAgPC9DaXBoZXJWYWx1ZT4KKyAgICAgIDwvQ2lwaGVyRGF0YT4KKyAgICA8L0VuY3J5cHRlZERhdGE+CisgIDwvUGF5bWVudEluZm8+CisgIDxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgIDxTaWduZWRJbmZvPgorICAgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIgLz4KKyAgICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiIC8+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIiAvPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L2RlY3J5cHQjIj4KKyAgICAgICAgICAgIDxFeGNlcHQgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQvZGVjcnlwdCMiIFVSST0iI2VuY3J5cHQtZGF0YS0xIiAvPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT41T2U5cWJhNnByZU9aRzFOWkFZSzIvNnB1OVJDb245dlJKOWhWTERwZW5nPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICA8L1NpZ25lZEluZm8+CisgICAgPFNpZ25hdHVyZVZhbHVlPgorICAgICAgTHVIcno5K1dHNy9jNFE4MXRGYm9OWmcyY2t0V2JaY1JmcDA4WHJtZ0t5MUdEbTl4U2ZUWUNBPT0KKyAgICA8L1NpZ25hdHVyZVZhbHVlPgorICAgIDxLZXlJbmZvPgorICAgICAgPEtleVZhbHVlPgorICAgICAgICA8RFNBS2V5VmFsdWU+CisgICAgICAgICAgPFA+CisgICAgICAgICAgICBpbXVwNmxta2k0ckFtVXN0S2IveGRCUk1XTnRRK3BETjk3Wm5MQTlYM2xLYmtFSHRZRnlqUTN1QWN0Z1ZTSjc1CisgICAgICAgICAgICBpVlJ1S3h6NENiNVJ6Vm0yNUVhS21LcThyaWYxTXRCSWk2ampESnhtSWROYUVLRzl6VlRmOWdpSngxTjlJMHQzCisgICAgICAgICAgICBvaDFmQVZaRFNyekt6SkdRMld2RGZJZkZIZEpNdEIzQzBWS0dtTFpSN1hrPQorICAgICAgICAgIDwvUD4KKyAgICAgICAgICA8UT4KKyAgICAgICAgICAgIHhEdmUzajdzRW5oNHJJek01Z0srNS9neHhGVT0KKyAgICAgICAgICA8L1E+CisgICAgICAgICAgPEc+CisgICAgICAgICAgICBOTHVnQWY2SVpKeG8zQkNPaTV5ckdFVnd0bEV6WGNubmRYaGQwVHozOENuUUtjNFNFdXBtNFB5UDVUbUx2SzY0CisgICAgICAgICAgICBURGZPRDdzbm8vVzVvSTFLWmRpbWZXMmM0ci82d2FOelpTdmljTU9XaExZWTYyMU5uNm5qQmM4Vk53b3hXcHpDCisgICAgICAgICAgICBYaEttNzBiOCtENFlaTW4vZVU1RE44ZHZoVHYvYk5LMjFGZkpxanAwMzNVPQorICAgICAgICAgIDwvRz4KKyAgICAgICAgICA8WT4KKyAgICAgICAgICAgIFc3ZE9tSC92V3FvY1ZDaXFheGo2c294VlhmUjhYcE1kWTJadjRBbWpyM244MWdleU9MYjZJWitsN01VYmRwODUKKyAgICAgICAgICAgIDI5RFF6dW9WVHRoVnBCOVg0SktDcHJaSXppZk9UTTFQRmZsVEJ6ang3ZWdKd0pXQUlWZFd5aUlQamtlNlZhK3cKKyAgICAgICAgICAgIHVWMm40UmwvY2dDdnJYSzVjVG92NUMvQnBhZjZvK3FyckRHRkJMTFpURjQ9CisgICAgICAgICAgPC9ZPgorICAgICAgICA8L0RTQUtleVZhbHVlPgorICAgICAgPC9LZXlWYWx1ZT4KKyAgICA8L0tleUluZm8+CisgIDwvU2lnbmF0dXJlPgorPC9QdXJjaGFzZU9yZGVyPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9kZWNyeXB0aW9uLXRyYW5zZm9ybS54bWwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2RlY3J5cHRpb24tdHJhbnNmb3JtLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGQ2OGIzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9kZWNyeXB0aW9uLXRyYW5zZm9ybS54bWwKQEAgLTAsMCArMSw3MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxQdXJjaGFzZU9yZGVyIHhtbG5zPSJ1cm46ZXhhbXBsZTpwbyI+CisgIDxJdGVtcz4KKyAgICA8SXRlbSBDb2RlPSIwMDEtMDAxLTAwMSIgUXVhbnRpdHk9IjEiPgorICAgICAgc3BhZGUKKyAgICA8L0l0ZW0+CisgICAgPEl0ZW0gQ29kZT0iMDAxLTAwMS0wMDIiIFF1YW50aXR5PSIxIj4KKyAgICAgIHNob3ZlbAorICAgIDwvSXRlbT4KKyAgPC9JdGVtcz4KKyAgPFNoaXBwaW5nQWRkcmVzcz4KKyAgICBEaWcgUExDLCAxIEZpcnN0IEF2ZSwgRHVibGluIDEsIElyZWxhbmQKKyAgPC9TaGlwcGluZ0FkZHJlc3M+CisgIDxQYXltZW50SW5mbz4KKyAgICA8RW5jcnlwdGVkRGF0YSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIiBJZD0iZW5jcnlwdC1kYXRhLTAiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI0NvbnRlbnQiPgorICAgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNhZXMyNTYtY2JjIiAvPgorICAgICAgPEtleUluZm8geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgICA8S2V5TmFtZT5qZWQ8L0tleU5hbWU+CisgICAgICA8L0tleUluZm8+CisgICAgICA8Q2lwaGVyRGF0YT4KKyAgICAgICAgPENpcGhlclZhbHVlPgorICAgICAgICAgIFNFM0hrUWV2WXh6dU45TG9NSDNRSVlISzBYN0RCbG9iaGlUYlJ1Y2dLY1RLdDlEc1VKSWNkNkpaVjZscncvNHgKKyAgICAgICAgICBZSUN5cTZZTTczSVdwaWJzcHhnei8wY2hodldlbTlzWVp2V1R1VHRaZ0h6ZVkwVXJpNmJwWHFCRW4xWVQwSzZCCisgICAgICAgICAgY2h3ZnYxbXlmcDkxRW1kUEhVK3NoSDZaRXlZa0hKVU1zczU4aUlhd0l1VnNJZnBDTzd4REtnZnMvZ2xuTjNvcworICAgICAgICAgIGVwWTBLdkFNWlNud1VBZjQyZlEzVGxhaExUUitCNTJBbWRvZHdhQ3dRbHdRd3JDN1JIMEZ0TmlpTFFBOVNBMnQKKyAgICAgICAgICAvL1N0S1djeUhqc3dVQ2VqZktMZGp2NmJLK1dtQnhtbk5XdG1JOURZa2pKNlY1cFlVMU1WdytKRzQxME8rZ2FhCisgICAgICAgICAgZm5OV3hsV2ErQkd3Y1RheitLTnJQOGJJcWxpOElvSkpneFhJVXFmYjczND0KKyAgICAgICAgPC9DaXBoZXJWYWx1ZT4KKyAgICAgIDwvQ2lwaGVyRGF0YT4KKyAgICA8L0VuY3J5cHRlZERhdGE+CisgIDwvUGF5bWVudEluZm8+CisgIDxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgIDxTaWduZWRJbmZvPgorICAgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIgLz4KKyAgICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiIC8+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIiAvPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L2RlY3J5cHQjIiAvPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT53U3ZQWXFUY3BMZlgybUtYaWJ0c21tN0ZEdThOKy9CT2JNMCtiR2FlWGhrPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICA8L1NpZ25lZEluZm8+CisgICAgPFNpZ25hdHVyZVZhbHVlPgorICAgICAgTzBWWVVkc2xKOHQyRVVSRDBUL3Yybk5yRlFNbzQydnp2ZkFob29ackRia3VMYkNqNi9IeG13PT0KKyAgICA8L1NpZ25hdHVyZVZhbHVlPgorICAgIDxLZXlJbmZvPgorICAgICAgPEtleVZhbHVlPgorICAgICAgICA8RFNBS2V5VmFsdWU+CisgICAgICAgICAgPFA+CisgICAgICAgICAgICBpbXVwNmxta2k0ckFtVXN0S2IveGRCUk1XTnRRK3BETjk3Wm5MQTlYM2xLYmtFSHRZRnlqUTN1QWN0Z1ZTSjc1CisgICAgICAgICAgICBpVlJ1S3h6NENiNVJ6Vm0yNUVhS21LcThyaWYxTXRCSWk2ampESnhtSWROYUVLRzl6VlRmOWdpSngxTjlJMHQzCisgICAgICAgICAgICBvaDFmQVZaRFNyekt6SkdRMld2RGZJZkZIZEpNdEIzQzBWS0dtTFpSN1hrPQorICAgICAgICAgIDwvUD4KKyAgICAgICAgICA8UT4KKyAgICAgICAgICAgIHhEdmUzajdzRW5oNHJJek01Z0srNS9neHhGVT0KKyAgICAgICAgICA8L1E+CisgICAgICAgICAgPEc+CisgICAgICAgICAgICBOTHVnQWY2SVpKeG8zQkNPaTV5ckdFVnd0bEV6WGNubmRYaGQwVHozOENuUUtjNFNFdXBtNFB5UDVUbUx2SzY0CisgICAgICAgICAgICBURGZPRDdzbm8vVzVvSTFLWmRpbWZXMmM0ci82d2FOelpTdmljTU9XaExZWTYyMU5uNm5qQmM4Vk53b3hXcHpDCisgICAgICAgICAgICBYaEttNzBiOCtENFlaTW4vZVU1RE44ZHZoVHYvYk5LMjFGZkpxanAwMzNVPQorICAgICAgICAgIDwvRz4KKyAgICAgICAgICA8WT4KKyAgICAgICAgICAgIFc3ZE9tSC92V3FvY1ZDaXFheGo2c294VlhmUjhYcE1kWTJadjRBbWpyM244MWdleU9MYjZJWitsN01VYmRwODUKKyAgICAgICAgICAgIDI5RFF6dW9WVHRoVnBCOVg0SktDcHJaSXppZk9UTTFQRmZsVEJ6ang3ZWdKd0pXQUlWZFd5aUlQamtlNlZhK3cKKyAgICAgICAgICAgIHVWMm40UmwvY2dDdnJYSzVjVG92NUMvQnBhZjZvK3FyckRHRkJMTFpURjQ9CisgICAgICAgICAgPC9ZPgorICAgICAgICA8L0RTQUtleVZhbHVlPgorICAgICAgPC9LZXlWYWx1ZT4KKyAgICA8L0tleUluZm8+CisgIDwvU2lnbmF0dXJlPgorPC9QdXJjaGFzZU9yZGVyPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9kaDAucDggYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2RoMC5wOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDM2ODNkCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9kaDAucDgKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9kaDEucDggYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2RoMS5wOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Njk0Njg5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9kaDEucDgKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9kc2EucDggYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2RzYS5wOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTRhODVjCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9kc2EucDgKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWNvbnRlbnQtYWVzMTI4LWNiYy1rdy1hZXMxOTIueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWNvbnRlbnQtYWVzMTI4LWNiYy1rdy1hZXMxOTIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNDY3ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3J5cHQtY29udGVudC1hZXMxMjgtY2JjLWt3LWFlczE5Mi54bWwKQEAgLTAsMCArMSw0MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxQdXJjaGFzZU9yZGVyIHhtbG5zPSJ1cm46ZXhhbXBsZTpwbyI+CisgIDxJdGVtcz4KKyAgICA8SXRlbSBDb2RlPSIwMDEtMDAxLTAwMSIgUXVhbnRpdHk9IjEiPgorICAgICAgc3BhZGUKKyAgICA8L0l0ZW0+CisgICAgPEl0ZW0gQ29kZT0iMDAxLTAwMS0wMDIiIFF1YW50aXR5PSIxIj4KKyAgICAgIHNob3ZlbAorICAgIDwvSXRlbT4KKyAgPC9JdGVtcz4KKyAgPFNoaXBwaW5nQWRkcmVzcz4KKyAgICBEaWcgUExDLCAxIEZpcnN0IEF2ZSwgRHVibGluIDEsIElyZWxhbmQKKyAgPC9TaGlwcGluZ0FkZHJlc3M+CisgIDxQYXltZW50SW5mbz4KKyAgICA8RW5jcnlwdGVkRGF0YSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNDb250ZW50Ij4KKyAgICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjYWVzMTI4LWNiYyIgLz4KKyAgICAgIDxLZXlJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgPEVuY3J5cHRlZEtleSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj4KKyAgICAgICAgICA8RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2t3LWFlczE5MiIgLz4KKyAgICAgICAgICA8S2V5SW5mbyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgICAgICA8S2V5TmFtZT5qZWI8L0tleU5hbWU+CisgICAgICAgICAgPC9LZXlJbmZvPgorICAgICAgICAgIDxDaXBoZXJEYXRhPgorICAgICAgICAgICAgPENpcGhlclZhbHVlPgorICAgICAgICAgICAgICBJYmpaSDdNcTU2NG9NeWJwdkNIV1lNLzVFUjNlRnNBVgorICAgICAgICAgICAgPC9DaXBoZXJWYWx1ZT4KKyAgICAgICAgICA8L0NpcGhlckRhdGE+CisgICAgICAgIDwvRW5jcnlwdGVkS2V5PgorICAgICAgPC9LZXlJbmZvPgorICAgICAgPENpcGhlckRhdGE+CisgICAgICAgIDxDaXBoZXJWYWx1ZT4KKyAgICAgICAgICBZRFlUeFIrc214WkRTVm9YWEVwM242SHpUZ1dxVjdabEc2STFsbUV2N3pMR1pCRi9vN2VxZTVRR1Q2TDNEUE5XCisgICAgICAgICAgZ2VmbEE4dlZKSHh3bGlpeFdjdkhDbk5LUWt4K1N3OFliSWtuQ1F5cjRtcXRYRW1IaHNpZTVYWVRFeXFnS0xWUAorICAgICAgICAgIFlkTlhmNTZ3TFVUTUVtQnFxN2N0bzlPclljQldrckRjUVF2SG1Ea0h1RytOb200bSs2MjNHc0IwRk50czZWeU4KKyAgICAgICAgICBzZEdNd280SzBiRUZSZUxMMDRsNkl0K2NnTEoycStMS2RCb01RTDU5SUFRbXJ3aTBia2lxZWUyY0xsRHVHeVExCisgICAgICAgICAgS0Q5SVExcXRsSnB2UXVqTjR4TlZXVDAwVWp0V3htcFNNSUQvS3VlL0FuWG43Q2Y4encxWlpRaXRnaDh1V09YMgorICAgICAgICAgIHVNeTk5RjJZbHhxSUsxcitNZVhIdVpETmY3NVM4ZEZhS0lLdEhNZjdpb0E9CisgICAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgICA8L0NpcGhlckRhdGE+CisgICAgPC9FbmNyeXB0ZWREYXRhPgorICA8L1BheW1lbnRJbmZvPgorPC9QdXJjaGFzZU9yZGVyPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWNvbnRlbnQtYWVzMTkyLWNiYy1kaC1zaGE1MTIueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWNvbnRlbnQtYWVzMTkyLWNiYy1kaC1zaGE1MTIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxMjQyNzgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3J5cHQtY29udGVudC1hZXMxOTItY2JjLWRoLXNoYTUxMi54bWwKQEAgLTAsMCArMSwxMTMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8UHVyY2hhc2VPcmRlciB4bWxucz0idXJuOmV4YW1wbGU6cG8iPgorICA8SXRlbXM+CisgICAgPEl0ZW0gQ29kZT0iMDAxLTAwMS0wMDEiIFF1YW50aXR5PSIxIj4KKyAgICAgIHNwYWRlCisgICAgPC9JdGVtPgorICAgIDxJdGVtIENvZGU9IjAwMS0wMDEtMDAyIiBRdWFudGl0eT0iMSI+CisgICAgICBzaG92ZWwKKyAgICA8L0l0ZW0+CisgIDwvSXRlbXM+CisgIDxTaGlwcGluZ0FkZHJlc3M+CisgICAgRGlnIFBMQywgMSBGaXJzdCBBdmUsIER1YmxpbiAxLCBJcmVsYW5kCisgIDwvU2hpcHBpbmdBZGRyZXNzPgorICA8UGF5bWVudEluZm8+CisgICAgPEVuY3J5cHRlZERhdGEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjQ29udGVudCI+CisgICAgICA8RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczE5Mi1jYmMiIC8+CisgICAgICA8S2V5SW5mbyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgIDxBZ3JlZW1lbnRNZXRob2QgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNkaCI+CisgICAgICAgICAgPEtBLU5vbmNlPgorICAgICAgICAgICAgYm05dVkyVT0KKyAgICAgICAgICA8L0tBLU5vbmNlPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhNTEyIiAvPgorICAgICAgICAgIDxPcmlnaW5hdG9yS2V5SW5mbz4KKyAgICAgICAgICAgIDxLZXlWYWx1ZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgICAgICAgIDxESEtleVZhbHVlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPgorICAgICAgICAgICAgICAgIDxQPgorICAgICAgICAgICAgICAgICAgcGx5Z2wydU1OYytqWXRBWmVLQ1p4UHNtcWEyejhEck9VYTdMNDU1aXN6TjRTZFBuTCtMc1pENDdWSmF5dlFZOAorICAgICAgICAgICAgICAgICAgNkQxSjVhcmt3cmJVem1oTUFqQlpzRU5QQmdmZlJ3d0VCVGpvcStnalN5Wk5JYnhxc3FuSmRFeVVFbHpuNGtHRQorICAgICAgICAgICAgICAgICAgd2hFQ2tKR25PYVNjYWNwalpnMTFoK2dkMGlCZlkwOTFiR0hyQ1pydnIvOD0KKyAgICAgICAgICAgICAgICA8L1A+CisgICAgICAgICAgICAgICAgPFE+CisgICAgICAgICAgICAgICAgICA5akpYUWlqTm92b3E2UVVCRmNFVVl3VXZ5VE09CisgICAgICAgICAgICAgICAgPC9RPgorICAgICAgICAgICAgICAgIDxHZW5lcmF0b3I+CisgICAgICAgICAgICAgICAgICBQZXJVWmdNRU1EVGVnTWRUQlJHOURQWTVFSG13RHh3emxhZGRSY2Z2ZmRmVS85d2xQeno1QlVvdE1tNzMwSjlkCisgICAgICAgICAgICAgICAgICBsRjZhdldyOTI5ZnpZc25JT1VEZVVPSnBsdFhtclRZbnZ6NUJpNnl1VXU2YlZ3U2Z2N3U0UytJL0VNOVpCK2VZCisgICAgICAgICAgICAgICAgICAzZmRGNVRBTUhENHRLODZsdzVBUERyTjJRbk8xVU1Dd0l2ak9GYXRTT0kwPQorICAgICAgICAgICAgICAgIDwvR2VuZXJhdG9yPgorICAgICAgICAgICAgICAgIDxQdWJsaWM+CisgICAgICAgICAgICAgICAgICBVbHU2QjFsQ3dhanRJQm5vbHFxZ1UrUjFveGZ5ZTYzRG5JL2lMTS9PZStZOEkvTE1NYUVtbzNMbUNVMzBtODJyCisgICAgICAgICAgICAgICAgICBOeU9VcWdmbm05N1MwYlQ4WmhJOGd2dzBFeVFKODd2aGxVejRXY21kZFUvWWxUaTNnSkhVQ2xyMm9sbUJtUkN0CisgICAgICAgICAgICAgICAgICBtMnZLby9CcG9MR0owV2cxZXlXZm81NCtnQ3FiZU5lei9EbUJHY0JFRWhNPQorICAgICAgICAgICAgICAgIDwvUHVibGljPgorICAgICAgICAgICAgICA8L0RIS2V5VmFsdWU+CisgICAgICAgICAgICA8L0tleVZhbHVlPgorICAgICAgICAgICAgPFg1MDlEYXRhIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgICAgICAgPFg1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgICAgICAgICBNSUlEdmpDQ0EzNmdBd0lCQWdJR0FPeE4zOU1JTUFrR0J5cUdTTTQ0QkFNd2JqRUxNQWtHQTFVRUJoTUNTVVV4CisgICAgICAgICAgICAgICAgRHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbAorICAgICAgICAgICAgICAgIGN5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkIKKyAgICAgICAgICAgICAgICBNQjRYRFRBeU1ESXlPREUzTlRNeE5sb1hEVEF6TURJeU9ERTNOVEkxTkZvd2J6RUxNQWtHQTFVRUJoTUNTVVV4CisgICAgICAgICAgICAgICAgRHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbAorICAgICAgICAgICAgICAgIGN5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFV01CUUdBMVVFQXhNTlRXVnliR2x1SUVoMVoyaGwKKyAgICAgICAgICAgICAgICBjekNDQWlVd2dnR2FCZ2NxaGtqT1BnSUJNSUlCalFLQmdRQ21YS0NYYTR3MXo2TmkwQmw0b0puRSt5YXByYlB3CisgICAgICAgICAgICAgICAgT3M1UnJzdmpubUt6TTNoSjArY3Y0dXhrUGp0VWxySzlCanpvUFVubHF1VEN0dFRPYUV3Q01GbXdRMDhHQjk5SAorICAgICAgICAgICAgICAgIERBUUZPT2lyNkNOTEprMGh2R3F5cWNsMFRKUVNYT2ZpUVlUQ0VRS1FrYWM1cEp4cHltTm1EWFdINkIzU0lGOWoKKyAgICAgICAgICAgICAgICBUM1ZzWWVzSm11K3Yvd0tCZ0QzcTFHWURCREEwM29ESFV3VVJ2UXoyT1JCNXNBOGNNNVduWFVYSDczM1gxUC9jCisgICAgICAgICAgICAgICAgSlQ4OCtRVktMVEp1OTlDZlhaUmVtcjFxL2R2WDgyTEp5RGxBM2xEaWFaYlY1cTAySjc4K1FZdXNybEx1bTFjRQorICAgICAgICAgICAgICAgIG43Kzd1RXZpUHhEUFdRZm5tTjMzUmVVd0RCdytMU3ZPcGNPUUR3Nnpka0p6dFZEQXNDTDR6aFdyVWppTkFoVUEKKyAgICAgICAgICAgICAgICA5akpYUWlqTm92b3E2UVVCRmNFVVl3VXZ5VE1DYlFDcy9Ia0x1c0NxSG1ZNzFKeFVPRnp5NWZ1V2tQcFdYSnp4CisgICAgICAgICAgICAgICAgcVUzb3oxQmZNWnRQVXFqcEJucVU5N003VlVFZys1cFJHMnR4YUhQOFhObUIxYlkwRENFODhyaURtSFA3SHFaQgorICAgICAgICAgICAgICAgIFoyZ2JhSDJMeFhEUURheWI1R2NQZm4zOGVEY1d2VkFhS1A5Zko4d0c1UlV1M0FvRGdZUUFBb0dBVWx1NkIxbEMKKyAgICAgICAgICAgICAgICB3YWp0SUJub2xxcWdVK1Ixb3hmeWU2M0RuSS9pTE0vT2UrWThJL0xNTWFFbW8zTG1DVTMwbTgyck55T1VxZ2ZuCisgICAgICAgICAgICAgICAgbTk3UzBiVDhaaEk4Z3Z3MEV5UUo4N3ZobFV6NFdjbWRkVS9ZbFRpM2dKSFVDbHIyb2xtQm1SQ3RtMnZLby9CcAorICAgICAgICAgICAgICAgIG9MR0owV2cxZXlXZm81NCtnQ3FiZU5lei9EbUJHY0JFRWhPak9qQTRNQTRHQTFVZER3RUIvd1FFQXdJRENEQVIKKyAgICAgICAgICAgICAgICBCZ05WSFE0RUNnUUlnVUF3Qis5ZjFvSXdFd1lEVlIwakJBd3dDb0FJZ2pxaXNpWjFXVnN3Q1FZSEtvWkl6amdFCisgICAgICAgICAgICAgICAgQXdNdkFEQXNBaFE0MW1DVXNGaG14STU4dHl0VjhYRVZaT0N1VXdJVVZNZS9IYlVBSDVQSjdhUm9DTnFhM2ZDSQorICAgICAgICAgICAgICAgIGNVMD0KKyAgICAgICAgICAgICAgPC9YNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICA8L1g1MDlEYXRhPgorICAgICAgICAgIDwvT3JpZ2luYXRvcktleUluZm8+CisgICAgICAgICAgPFJlY2lwaWVudEtleUluZm8+CisgICAgICAgICAgICA8WDUwOURhdGEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgICAgICAgICA8WDUwOUNlcnRpZmljYXRlPgorICAgICAgICAgICAgICAgIE1JSUR2akNDQTM2Z0F3SUJBZ0lHQU94TjMrRU1NQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgKKyAgICAgICAgICAgICAgICBEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsCisgICAgICAgICAgICAgICAgY3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQgorICAgICAgICAgICAgICAgIE1CNFhEVEF5TURJeU9ERTNOVE14T1ZvWERUQXpNREl5T0RFM05USTFORm93YnpFTE1Ba0dBMVVFQmhNQ1NVVXgKKyAgICAgICAgICAgICAgICBEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsCisgICAgICAgICAgICAgICAgY3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVXTUJRR0ExVUVBeE1OVG1sc2NtVnRJRk5sYUdkMQorICAgICAgICAgICAgICAgIGFEQ0NBaVV3Z2dHYUJnY3Foa2pPUGdJQk1JSUJqUUtCZ1FDbVhLQ1hhNHcxejZOaTBCbDRvSm5FK3lhcHJiUHcKKyAgICAgICAgICAgICAgICBPczVScnN2am5tS3pNM2hKMCtjdjR1eGtQanRVbHJLOUJqem9QVW5scXVUQ3R0VE9hRXdDTUZtd1EwOEdCOTlICisgICAgICAgICAgICAgICAgREFRRk9PaXI2Q05MSmswaHZHcXlxY2wwVEpRU1hPZmlRWVRDRVFLUWthYzVwSnhweW1ObURYV0g2QjNTSUY5agorICAgICAgICAgICAgICAgIFQzVnNZZXNKbXUrdi93S0JnRDNxMUdZREJEQTAzb0RIVXdVUnZRejJPUkI1c0E4Y001V25YVVhINzMzWDFQL2MKKyAgICAgICAgICAgICAgICBKVDg4K1FWS0xUSnU5OUNmWFpSZW1yMXEvZHZYODJMSnlEbEEzbERpYVpiVjVxMDJKNzgrUVl1c3JsTHVtMWNFCisgICAgICAgICAgICAgICAgbjcrN3VFdmlQeERQV1Fmbm1OMzNSZVV3REJ3K0xTdk9wY09RRHc2emRrSnp0VkRBc0NMNHpoV3JVamlOQWhVQQorICAgICAgICAgICAgICAgIDlqSlhRaWpOb3ZvcTZRVUJGY0VVWXdVdnlUTUNiUUNzL0hrTHVzQ3FIbVk3MUp4VU9Genk1ZnVXa1BwV1hKengKKyAgICAgICAgICAgICAgICBxVTNvejFCZk1adFBVcWpwQm5xVTk3TTdWVUVnKzVwUkcydHhhSFA4WE5tQjFiWTBEQ0U4OHJpRG1IUDdIcVpCCisgICAgICAgICAgICAgICAgWjJnYmFIMkx4WERRRGF5YjVHY1BmbjM4ZURjV3ZWQWFLUDlmSjh3RzVSVXUzQW9EZ1lRQUFvR0FHU1lUMTlQYgorICAgICAgICAgICAgICAgIFZDeE10MDZjQVA3elFaNkFDNWVYcDN6ZUF3ZUlldlY5NnJ5QTFtQjAzcWhCOVgybFZvd0FVT0ZjMjRhVlJUejcKKyAgICAgICAgICAgICAgICB3Um9Sak5RMjBhdHpTeTIxQzd5WERrdlo0dXhmZHJwSXFwSVZySTI4ZTdYTCs2Q3JobkFrNjIxT3ZkZXlFejVICisgICAgICAgICAgICAgICAgb3JBMjFoUFhvQ05kblVQRzVJYjIwb29wTTg3cHRGNWR3aVdqT2pBNE1BNEdBMVVkRHdFQi93UUVBd0lEQ0RBUgorICAgICAgICAgICAgICAgIEJnTlZIUTRFQ2dRSWlEQ1NRM0ZCL29Fd0V3WURWUjBqQkF3d0NvQUlnanFpc2laMVdWc3dDUVlIS29aSXpqZ0UKKyAgICAgICAgICAgICAgICBBd012QURBc0FoUU10Wjk4VHlxVmtWcVVKM1JKcWFVN2wyeHFLZ0lVWDk5N3FScWVNakFrSzg4TkhlTmQ5NS8yCisgICAgICAgICAgICAgICAgWW9zPQorICAgICAgICAgICAgICA8L1g1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgICAgIDwvWDUwOURhdGE+CisgICAgICAgICAgPC9SZWNpcGllbnRLZXlJbmZvPgorICAgICAgICA8L0FncmVlbWVudE1ldGhvZD4KKyAgICAgIDwvS2V5SW5mbz4KKyAgICAgIDxDaXBoZXJEYXRhPgorICAgICAgICA8Q2lwaGVyVmFsdWU+CisgICAgICAgICAgNWpJbHhYWkdoeDh2VU5iTDBadmRScnk2bVBhcFg4cUxZbERneTN0RTZuUmJuQlJXQUN2aVlRQVhCcXZEZm4xUgorICAgICAgICAgIFRLbUJXWjVOb0pvYk04bFhXT2sybk5RSXVTUW9qY0ZZUnV2Y1dVN0RmZkRWWDdkVUNBVlJKcDZQUy81VjFJSFIKKyAgICAgICAgICBKSjJXQmFnV1NXMWxGVzltcWpmZTBaZmxFWkdZSTMvNWtVWVFJcGJNdkV1WG9GODEyOVZHaUthbFpzQ1ZUUnhkCisgICAgICAgICAgL0lzZFQ4eC83TDU3R2xHcTBPekNNSTV6RzNRckJWN3dVT29xQnU1U3hTOFFVdlVQdWNIOGhzRDRCcTRCd1ZFYQorICAgICAgICAgIEdsVVZBajdIM0hZWW83ZnZpVE80aTJsVE11bkdXOXJjSlZuS1hqRE0vTWRzM29NNHpiQm8vQW8zbTNybXBVVXoKKyAgICAgICAgICBBd1NlNm9maDZNTDQxOCtjeUNhUlVvVlFPbEcrVndrSEVLVWlZWUdoc0tZPQorICAgICAgICA8L0NpcGhlclZhbHVlPgorICAgICAgPC9DaXBoZXJEYXRhPgorICAgIDwvRW5jcnlwdGVkRGF0YT4KKyAgPC9QYXltZW50SW5mbz4KKzwvUHVyY2hhc2VPcmRlcj4KZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZW5jcnlwdC1jb250ZW50LWFlczI1Ni1jYmMtcHJvcC54bWwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3J5cHQtY29udGVudC1hZXMyNTYtY2JjLXByb3AueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzYTczMTUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3J5cHQtY29udGVudC1hZXMyNTYtY2JjLXByb3AueG1sCkBAIC0wLDAgKzEsMzkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8UHVyY2hhc2VPcmRlciB4bWxucz0idXJuOmV4YW1wbGU6cG8iPgorICA8SXRlbXM+CisgICAgPEl0ZW0gQ29kZT0iMDAxLTAwMS0wMDEiIFF1YW50aXR5PSIxIj4KKyAgICAgIHNwYWRlCisgICAgPC9JdGVtPgorICAgIDxJdGVtIENvZGU9IjAwMS0wMDEtMDAyIiBRdWFudGl0eT0iMSI+CisgICAgICBzaG92ZWwKKyAgICA8L0l0ZW0+CisgIDwvSXRlbXM+CisgIDxTaGlwcGluZ0FkZHJlc3M+CisgICAgRGlnIFBMQywgMSBGaXJzdCBBdmUsIER1YmxpbiAxLCBJcmVsYW5kCisgIDwvU2hpcHBpbmdBZGRyZXNzPgorICA8UGF5bWVudEluZm8+CisgICAgPEVuY3J5cHRlZERhdGEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgSWQ9ImVuY3J5cHQtZGF0YS0wIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNDb250ZW50Ij4KKyAgICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjYWVzMjU2LWNiYyIgLz4KKyAgICAgIDxLZXlJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgPEtleU5hbWU+amVkPC9LZXlOYW1lPgorICAgICAgPC9LZXlJbmZvPgorICAgICAgPENpcGhlckRhdGE+CisgICAgICAgIDxDaXBoZXJWYWx1ZT4KKyAgICAgICAgICBIOG4xT3VFSkZ5VWdVZ3VERkY2bWw4blJiQTBJYURZZ210R2VsV1Q0VjdDU3o5cS9BdnRmeHlNelVIK3RRWitGCisgICAgICAgICAganlYaDNvdFIxK1YxKzhFc2V2ekVxNW5VbU5LbCt3eXhRbVdhVXZidlhwU3dBSm5sSmR5dm5QNTZKaVhVQlMrcAorICAgICAgICAgIEMyS3psTzlrazhsNmF3dHVSZDlaNmVWam5nd1RmN2tOcHJtdTVCdjBvK3g3ZGNxOTZHOHdHTHZNVGhiczR1eGsKKyAgICAgICAgICBpSURLNStxR0J6eklsRnczR0c4Mk1LbW5WQnZlUXczTEQ1Mnk3NnlCdG9heXVBSkZKTW5yWGEwT0VBYUJSU0kyCisgICAgICAgICAgZmpQTkdKVjNzQ3lLWkRIcUdsc1E0WCtWdlh6ZXZMYkJMa0Z5MXhIOS96b1VYbzhjRWFUdnNJT0JZdS9Ybi9DSgorICAgICAgICAgIHkvZHBlL2R2T3FxamkrOXZGY2NBeXJCSHhIZVlTb251RnN4ZnBTRFZDNlk9CisgICAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgICA8L0NpcGhlckRhdGE+CisgICAgICA8RW5jcnlwdGlvblByb3BlcnRpZXM+CisgICAgICAgIDxFbmNyeXB0aW9uUHJvcGVydHkgVGFyZ2V0PSIjZW5jcnlwdC1kYXRhLTAiPgorICAgICAgICAgIDxDZXJ0aWZpY2F0aW9uIHhtbG5zPSJ1cm46ZXhhbXBsZTpwcm9wIj4KKyAgICAgICAgICAgIGNlcnRpZmlhYmxlCisgICAgICAgICAgPC9DZXJ0aWZpY2F0aW9uPgorICAgICAgICA8L0VuY3J5cHRpb25Qcm9wZXJ0eT4KKyAgICAgIDwvRW5jcnlwdGlvblByb3BlcnRpZXM+CisgICAgPC9FbmNyeXB0ZWREYXRhPgorICA8L1BheW1lbnRJbmZvPgorPC9QdXJjaGFzZU9yZGVyPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWNvbnRlbnQtdHJpcGxlZGVzLWNiYy54bWwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3J5cHQtY29udGVudC10cmlwbGVkZXMtY2JjLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWRhZmU5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWNvbnRlbnQtdHJpcGxlZGVzLWNiYy54bWwKQEAgLTAsMCArMSwzMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxQdXJjaGFzZU9yZGVyIHhtbG5zPSJ1cm46ZXhhbXBsZTpwbyI+CisgIDxJdGVtcz4KKyAgICA8SXRlbSBDb2RlPSIwMDEtMDAxLTAwMSIgUXVhbnRpdHk9IjEiPgorICAgICAgc3BhZGUKKyAgICA8L0l0ZW0+CisgICAgPEl0ZW0gQ29kZT0iMDAxLTAwMS0wMDIiIFF1YW50aXR5PSIxIj4KKyAgICAgIHNob3ZlbAorICAgIDwvSXRlbT4KKyAgPC9JdGVtcz4KKyAgPFNoaXBwaW5nQWRkcmVzcz4KKyAgICBEaWcgUExDLCAxIEZpcnN0IEF2ZSwgRHVibGluIDEsIElyZWxhbmQKKyAgPC9TaGlwcGluZ0FkZHJlc3M+CisgIDxQYXltZW50SW5mbz4KKyAgICA8RW5jcnlwdGVkRGF0YSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNDb250ZW50Ij4KKyAgICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjdHJpcGxlZGVzLWNiYyIgLz4KKyAgICAgIDxLZXlJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgPEtleU5hbWU+Ym9iPC9LZXlOYW1lPgorICAgICAgPC9LZXlJbmZvPgorICAgICAgPENpcGhlckRhdGE+CisgICAgICAgIDxDaXBoZXJWYWx1ZT4KKyAgICAgICAgICB1Y2hKVDJReXpRZTdCb0JhRFlLUFI1QkRnRVc4anNKM1VPR0VZejlFVnJCS1Z6dFlmY3UweGhpZjVZOWtxdHl4CisgICAgICAgICAgRERhN3dvTmNUeWh3UURaaDlqR3I1aHprY2pyc0tmTWpKdytQbktOWnpjK0tNVzB6ODYxTDhzZGhkbDhUQStidAorICAgICAgICAgIHl1ZGZhQ0VKYUg0UmRIQUJwK1ZNekw1Q3JYcjVza3Z1Ym9sV3MxS3pVdHFiUmVra3h1Y2tuekptbnFSWTh5UHAKKyAgICAgICAgICA0aUJ2VnV2dXMrQmswcGoyNzFOV3UxM0NtSHZkSlJNTURTWDMwSk1mc2VjVzZtZmRGNXhqb0ZjaUw4Vm5lbXpKCisgICAgICAgICAgcXQwU1VWak16b2VZMFBuQ2RrMDlFajJPWmRqOEF0a0xQQ0VLZWlCQkQrY29DZjVGOFdhTHJQVFJQZ2pvQXRpTgorICAgICAgICAgIFdkYStNY2FaUEpqZTFJZm9BS0dUY2c9PQorICAgICAgICA8L0NpcGhlclZhbHVlPgorICAgICAgPC9DaXBoZXJEYXRhPgorICAgIDwvRW5jcnlwdGVkRGF0YT4KKyAgPC9QYXltZW50SW5mbz4KKzwvUHVyY2hhc2VPcmRlcj4KZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZW5jcnlwdC1kYXRhLWFlczEyOC1jYmMueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWRhdGEtYWVzMTI4LWNiYy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFlMGEwNgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZW5jcnlwdC1kYXRhLWFlczEyOC1jYmMueG1sCkBAIC0wLDAgKzEsMTIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8RW5jcnlwdGVkRGF0YSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIiBNaW1lVHlwZT0idGV4dC9wbGFpbiI+CisgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjYWVzMTI4LWNiYyIgLz4KKyAgPEtleUluZm8geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgIDxLZXlOYW1lPmpvYjwvS2V5TmFtZT4KKyAgPC9LZXlJbmZvPgorICA8Q2lwaGVyRGF0YT4KKyAgICA8Q2lwaGVyVmFsdWU+CisgICAgICBRTXB4aFhxMUR0QmV5QzlLZlNhTVFXckV0ZWZlK2U5MzVnRi94NjJzcHZtTDZJVzBYZVMwVzRLazMxT2dXek4wCisgICAgPC9DaXBoZXJWYWx1ZT4KKyAgPC9DaXBoZXJEYXRhPgorPC9FbmNyeXB0ZWREYXRhPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWRhdGEtYWVzMTkyLWNiYy1rdy1hZXMyNTYueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWRhdGEtYWVzMTkyLWNiYy1rdy1hZXMyNTYueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1Y2NiMWUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3J5cHQtZGF0YS1hZXMxOTItY2JjLWt3LWFlczI1Ni54bWwKQEAgLTAsMCArMSwyMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxFbmNyeXB0ZWREYXRhIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiIE1pbWVUeXBlPSJ0ZXh0L3BsYWluIj4KKyAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNhZXMxOTItY2JjIiAvPgorICA8S2V5SW5mbyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgPEVuY3J5cHRlZEtleSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj4KKyAgICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMja3ctYWVzMjU2IiAvPgorICAgICAgPEtleUluZm8geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgICA8S2V5TmFtZT5qZWQ8L0tleU5hbWU+CisgICAgICA8L0tleUluZm8+CisgICAgICA8Q2lwaGVyRGF0YT4KKyAgICAgICAgPENpcGhlclZhbHVlPgorICAgICAgICAgIDRBQWd5aTNNN3hOZEJpbWJRWktkR0pMbjMvY1M0WXY4UUt1QTAxK2dVblk9CisgICAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgICA8L0NpcGhlckRhdGE+CisgICAgPC9FbmNyeXB0ZWRLZXk+CisgIDwvS2V5SW5mbz4KKyAgPENpcGhlckRhdGE+CisgICAgPENpcGhlclZhbHVlPgorICAgICAgNTBsdjk0ZC9ERkppckpYWU9VWGFCbHJPKzdnSVhweDhjcUgrRzJ4dkU0bXVlb0l4bUdzOFJIN0ZCWHdqdU1nZgorICAgIDwvQ2lwaGVyVmFsdWU+CisgIDwvQ2lwaGVyRGF0YT4KKzwvRW5jcnlwdGVkRGF0YT4KZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZW5jcnlwdC1kYXRhLWFlczI1Ni1jYmMta3ctdHJpcGxlZGVzLnhtbCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZW5jcnlwdC1kYXRhLWFlczI1Ni1jYmMta3ctdHJpcGxlZGVzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGUyYjkyCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWRhdGEtYWVzMjU2LWNiYy1rdy10cmlwbGVkZXMueG1sCkBAIC0wLDAgKzEsMjIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8RW5jcnlwdGVkRGF0YSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIiBNaW1lVHlwZT0idGV4dC9wbGFpbiI+CisgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjYWVzMjU2LWNiYyIgLz4KKyAgPEtleUluZm8geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgIDxFbmNyeXB0ZWRLZXkgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+CisgICAgICA8RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2t3LXRyaXBsZWRlcyIgLz4KKyAgICAgIDxLZXlJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgPEtleU5hbWU+Ym9iPC9LZXlOYW1lPgorICAgICAgPC9LZXlJbmZvPgorICAgICAgPENpcGhlckRhdGE+CisgICAgICAgIDxDaXBoZXJWYWx1ZT4KKyAgICAgICAgICBaeUpiVnNqUk00TUVzc3d3d0h6NTdhVXoxZU1xWkh1RUlvRVBHUzQ3Q2NtTHZodUN0bHpXWjlTL1djVkpaSXB6CisgICAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgICA8L0NpcGhlckRhdGE+CisgICAgPC9FbmNyeXB0ZWRLZXk+CisgIDwvS2V5SW5mbz4KKyAgPENpcGhlckRhdGE+CisgICAgPENpcGhlclZhbHVlPgorICAgICAgTHAyWld5SkVSVDA1aWNtSHZXV2JFdENDZm1CMmp2U2xTY2xoUzBvajNBM1BVOTBhRTZ2K2JGRlF4ckh3N1ZVZAorICAgIDwvQ2lwaGVyVmFsdWU+CisgIDwvQ2lwaGVyRGF0YT4KKzwvRW5jcnlwdGVkRGF0YT4KZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZW5jcnlwdC1kYXRhLXRyaXBsZWRlcy1jYmMtcnNhLW9hZXAtbWdmMXAtc2hhMjU2LnhtbCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZW5jcnlwdC1kYXRhLXRyaXBsZWRlcy1jYmMtcnNhLW9hZXAtbWdmMXAtc2hhMjU2LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWMzMGUwCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWRhdGEtdHJpcGxlZGVzLWNiYy1yc2Etb2FlcC1tZ2YxcC1zaGEyNTYueG1sCkBAIC0wLDAgKzEsNDYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8RW5jcnlwdGVkRGF0YSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIiBNaW1lVHlwZT0idGV4dC9wbGFpbiI+CisgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjdHJpcGxlZGVzLWNiYyIgLz4KKyAgPEtleUluZm8geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgIDxFbmNyeXB0ZWRLZXkgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+CisgICAgICA8RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3JzYS1vYWVwLW1nZjFwIj4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiIC8+CisgICAgICAgIDxPQUVQcGFyYW1zPgorICAgICAgICAgIE1USXpORFUyTnpnPQorICAgICAgICA8L09BRVBwYXJhbXM+CisgICAgICA8L0VuY3J5cHRpb25NZXRob2Q+CisgICAgICA8S2V5SW5mbyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgIDxYNTA5RGF0YT4KKyAgICAgICAgICA8WDUwOUNlcnRpZmljYXRlPgorICAgICAgICAgICAgTUlJQ2tqQ0NBZnVnQXdJQkFnSUdBT3hOMzJFK01BMEdDU3FHU0liM0RRRUJCUVVBTUc0eEN6QUpCZ05WQkFZVAorICAgICAgICAgICAgQWtsRk1ROHdEUVlEVlFRSUV3WkVkV0pzYVc0eEpEQWlCZ05WQkFvVEcwSmhiSFJwYlc5eVpTQlVaV05vYm05cworICAgICAgICAgICAgYjJkcFpYTWdUSFJrTGpFUk1BOEdBMVVFQ3hNSVdDOVRaV04xY21VeEZUQVRCZ05WQkFNVERGUnlZVzV6YVdWdQorICAgICAgICAgICAgZENCRFFUQWVGdzB3TWpBeU1qZ3hOelV5TkRaYUZ3MHdNekF5TWpneE56VXlOREJhTUc4eEN6QUpCZ05WQkFZVAorICAgICAgICAgICAgQWtsRk1ROHdEUVlEVlFRSUV3WkVkV0pzYVc0eEpEQWlCZ05WQkFvVEcwSmhiSFJwYlc5eVpTQlVaV05vYm05cworICAgICAgICAgICAgYjJkcFpYTWdUSFJrTGpFUk1BOEdBMVVFQ3hNSVdDOVRaV04xY21VeEZqQVVCZ05WQkFNVERVMWxjbXhwYmlCSQorICAgICAgICAgICAgZFdkb1pYTXdnWjh3RFFZSktvWklodmNOQVFFQkJRQURnWTBBTUlHSkFvR0JBT1JkTlN4Yk5GV2xRZU5zT2xZSgorICAgICAgICAgICAgOWdOOWVaRCtyZ3VScUtobWhPbTdpNjNWRGQ1QUxtMkFQWGhxQW1HQlB6TE41amxMOWcyWEFMSzVXU080WEtqSgorICAgICAgICAgICAgTWNWZllnNCtuUHVPZUhncWRENEhVZ2YxOWovNlNhVE1jbURGSlFNbXgxUXcrQWFrcTNtR2NTZnZPSmNCWmN0egorICAgICAgICAgICAgYTUwVnVjZkNHTDFOZGZCRWNhTDNCbmhqQWdNQkFBR2pPakE0TUE0R0ExVWREd0VCL3dRRUF3SUZvREFSQmdOVgorICAgICAgICAgICAgSFE0RUNnUUlqRkcwWkdOeXZOc3dFd1lEVlIwakJBd3dDb0FJaEpYVmxocjZPNHd3RFFZSktvWklodmNOQVFFRgorICAgICAgICAgICAgQlFBRGdZRUFYekc3eDVhQ0pZUnVzVGJtdVpxaGlkR001aWlBOStSbVo0SlRQREVnYmVpVGlKUk94cHIrWmpuQQorICAgICAgICAgICAgVG1zREtyQ3BxTlVpSFdqbXNLRUFyWVFwOFIvS2pkS2wvcFZlM2pVdlR4YjBZWitsaS83azBHUTVMeVJUL0s0YworICAgICAgICAgICAgMlNneUxseUJQaHBNcSt6M2c0UDJlZ1ZSYVpieHNMdUtRSUxmN01JVi9YNWlBRUJ6dTF3PQorICAgICAgICAgIDwvWDUwOUNlcnRpZmljYXRlPgorICAgICAgICA8L1g1MDlEYXRhPgorICAgICAgPC9LZXlJbmZvPgorICAgICAgPENpcGhlckRhdGE+CisgICAgICAgIDxDaXBoZXJWYWx1ZT4KKyAgICAgICAgICAxU1ZjdFpBL1JCNnZWanN1NU5ZVHhvd2R2c1ZpSkoxc2tEWFgwOVJtTlUzWWxDdVBwU3FXV2hDVTV1NUlMZnI5CisgICAgICAgICAgNkFGY2FzY1hiZEZ5RVo5dGpEaEs4TmlkMk1FcWtSL01jOXpGSGY3bVBNbk83QzhiUmdna2pqZElMU0lGL0Z0NworICAgICAgICAgIEZYem0vREZQNTBJRjN6UGUvbjVqeTJOazh1UnZUbUtVRGNub1Y2cW5VZ1k9CisgICAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgICA8L0NpcGhlckRhdGE+CisgICAgPC9FbmNyeXB0ZWRLZXk+CisgIDwvS2V5SW5mbz4KKyAgPENpcGhlckRhdGE+CisgICAgPENpcGhlclZhbHVlPgorICAgICAgUU9JbWVrdVU0NFVlQ21WYU1tYTliQ1Q1aDVhNm1XWERTbmRUQjgxanZIdz0KKyAgICA8L0NpcGhlclZhbHVlPgorICA8L0NpcGhlckRhdGE+Cis8L0VuY3J5cHRlZERhdGE+CmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3J5cHQtZGF0YS10cmlwbGVkZXMtY2JjLXJzYS1vYWVwLW1nZjFwLnhtbCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZW5jcnlwdC1kYXRhLXRyaXBsZWRlcy1jYmMtcnNhLW9hZXAtbWdmMXAueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5ZGFhNGUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3J5cHQtZGF0YS10cmlwbGVkZXMtY2JjLXJzYS1vYWVwLW1nZjFwLnhtbApAQCAtMCwwICsxLDQzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPEVuY3J5cHRlZERhdGEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgTWltZVR5cGU9InRleHQvcGxhaW4iPgorICA8RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3RyaXBsZWRlcy1jYmMiIC8+CisgIDxLZXlJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICA8RW5jcnlwdGVkS2V5IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPgorICAgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNyc2Etb2FlcC1tZ2YxcCI+CisgICAgICAgIDxEaWdlc3RNZXRob2QgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8L0VuY3J5cHRpb25NZXRob2Q+CisgICAgICA8S2V5SW5mbyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgIDxYNTA5RGF0YT4KKyAgICAgICAgICA8WDUwOUNlcnRpZmljYXRlPgorICAgICAgICAgICAgTUlJQ2tqQ0NBZnVnQXdJQkFnSUdBT3hOMzJFK01BMEdDU3FHU0liM0RRRUJCUVVBTUc0eEN6QUpCZ05WQkFZVAorICAgICAgICAgICAgQWtsRk1ROHdEUVlEVlFRSUV3WkVkV0pzYVc0eEpEQWlCZ05WQkFvVEcwSmhiSFJwYlc5eVpTQlVaV05vYm05cworICAgICAgICAgICAgYjJkcFpYTWdUSFJrTGpFUk1BOEdBMVVFQ3hNSVdDOVRaV04xY21VeEZUQVRCZ05WQkFNVERGUnlZVzV6YVdWdQorICAgICAgICAgICAgZENCRFFUQWVGdzB3TWpBeU1qZ3hOelV5TkRaYUZ3MHdNekF5TWpneE56VXlOREJhTUc4eEN6QUpCZ05WQkFZVAorICAgICAgICAgICAgQWtsRk1ROHdEUVlEVlFRSUV3WkVkV0pzYVc0eEpEQWlCZ05WQkFvVEcwSmhiSFJwYlc5eVpTQlVaV05vYm05cworICAgICAgICAgICAgYjJkcFpYTWdUSFJrTGpFUk1BOEdBMVVFQ3hNSVdDOVRaV04xY21VeEZqQVVCZ05WQkFNVERVMWxjbXhwYmlCSQorICAgICAgICAgICAgZFdkb1pYTXdnWjh3RFFZSktvWklodmNOQVFFQkJRQURnWTBBTUlHSkFvR0JBT1JkTlN4Yk5GV2xRZU5zT2xZSgorICAgICAgICAgICAgOWdOOWVaRCtyZ3VScUtobWhPbTdpNjNWRGQ1QUxtMkFQWGhxQW1HQlB6TE41amxMOWcyWEFMSzVXU080WEtqSgorICAgICAgICAgICAgTWNWZllnNCtuUHVPZUhncWRENEhVZ2YxOWovNlNhVE1jbURGSlFNbXgxUXcrQWFrcTNtR2NTZnZPSmNCWmN0egorICAgICAgICAgICAgYTUwVnVjZkNHTDFOZGZCRWNhTDNCbmhqQWdNQkFBR2pPakE0TUE0R0ExVWREd0VCL3dRRUF3SUZvREFSQmdOVgorICAgICAgICAgICAgSFE0RUNnUUlqRkcwWkdOeXZOc3dFd1lEVlIwakJBd3dDb0FJaEpYVmxocjZPNHd3RFFZSktvWklodmNOQVFFRgorICAgICAgICAgICAgQlFBRGdZRUFYekc3eDVhQ0pZUnVzVGJtdVpxaGlkR001aWlBOStSbVo0SlRQREVnYmVpVGlKUk94cHIrWmpuQQorICAgICAgICAgICAgVG1zREtyQ3BxTlVpSFdqbXNLRUFyWVFwOFIvS2pkS2wvcFZlM2pVdlR4YjBZWitsaS83azBHUTVMeVJUL0s0YworICAgICAgICAgICAgMlNneUxseUJQaHBNcSt6M2c0UDJlZ1ZSYVpieHNMdUtRSUxmN01JVi9YNWlBRUJ6dTF3PQorICAgICAgICAgIDwvWDUwOUNlcnRpZmljYXRlPgorICAgICAgICA8L1g1MDlEYXRhPgorICAgICAgPC9LZXlJbmZvPgorICAgICAgPENpcGhlckRhdGE+CisgICAgICAgIDxDaXBoZXJWYWx1ZT4KKyAgICAgICAgICBTNVNxVkcrUXh4cENOV29idXFRRkFJNmRiMXBURXBXTk1RWFFWSkFQamxmbXZuVm1UdHE1djZmZ01BMmwvcjdNCisgICAgICAgICAgaVg3Z1VQWnRocktlemtTYXZEZmkwNTdjSzZZS3BDNS9LQUNYak5KdlVvYVZYai9hWHBjb01PTytaVFBxMzZlbworICAgICAgICAgIHB5ZVc5OURXWWdDYlk4OEtmOVIzcjNRTXgvb2d3alNjZlJWSlRSWkwzTG89CisgICAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgICA8L0NpcGhlckRhdGE+CisgICAgPC9FbmNyeXB0ZWRLZXk+CisgIDwvS2V5SW5mbz4KKyAgPENpcGhlckRhdGE+CisgICAgPENpcGhlclZhbHVlPgorICAgICAgSEcwMkF4TnluNGlBOU5INXgrUFE5bGdQTnpUa2xqVGhvdFhXS3owVVlyRT0KKyAgICA8L0NpcGhlclZhbHVlPgorICA8L0NpcGhlckRhdGE+Cis8L0VuY3J5cHRlZERhdGE+CmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3J5cHQtZWxlbWVudC1hZXMxMjgtY2JjLXJzYS0xXzUueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWVsZW1lbnQtYWVzMTI4LWNiYy1yc2EtMV81LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTM0OTI4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWVsZW1lbnQtYWVzMTI4LWNiYy1yc2EtMV81LnhtbApAQCAtMCwwICsxLDYwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFB1cmNoYXNlT3JkZXIgeG1sbnM9InVybjpleGFtcGxlOnBvIj4KKyAgPEl0ZW1zPgorICAgIDxJdGVtIENvZGU9IjAwMS0wMDEtMDAxIiBRdWFudGl0eT0iMSI+CisgICAgICBzcGFkZQorICAgIDwvSXRlbT4KKyAgICA8SXRlbSBDb2RlPSIwMDEtMDAxLTAwMiIgUXVhbnRpdHk9IjEiPgorICAgICAgc2hvdmVsCisgICAgPC9JdGVtPgorICA8L0l0ZW1zPgorICA8U2hpcHBpbmdBZGRyZXNzPgorICAgIERpZyBQTEMsIDEgRmlyc3QgQXZlLCBEdWJsaW4gMSwgSXJlbGFuZAorICA8L1NoaXBwaW5nQWRkcmVzcz4KKyAgPEVuY3J5cHRlZERhdGEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+CisgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNhZXMxMjgtY2JjIiAvPgorICAgIDxLZXlJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgIDxFbmNyeXB0ZWRLZXkgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+CisgICAgICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLTFfNSIgLz4KKyAgICAgICAgPEtleUluZm8geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgICAgIDxYNTA5RGF0YT4KKyAgICAgICAgICAgIDxYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICAgIE1JSUNrakNDQWZ1Z0F3SUJBZ0lHQU94TjMyRStNQTBHQ1NxR1NJYjNEUUVCQlFVQU1HNHhDekFKQmdOVkJBWVQKKyAgICAgICAgICAgICAgQWtsRk1ROHdEUVlEVlFRSUV3WkVkV0pzYVc0eEpEQWlCZ05WQkFvVEcwSmhiSFJwYlc5eVpTQlVaV05vYm05cworICAgICAgICAgICAgICBiMmRwWlhNZ1RIUmtMakVSTUE4R0ExVUVDeE1JV0M5VFpXTjFjbVV4RlRBVEJnTlZCQU1UREZSeVlXNXphV1Z1CisgICAgICAgICAgICAgIGRDQkRRVEFlRncwd01qQXlNamd4TnpVeU5EWmFGdzB3TXpBeU1qZ3hOelV5TkRCYU1HOHhDekFKQmdOVkJBWVQKKyAgICAgICAgICAgICAgQWtsRk1ROHdEUVlEVlFRSUV3WkVkV0pzYVc0eEpEQWlCZ05WQkFvVEcwSmhiSFJwYlc5eVpTQlVaV05vYm05cworICAgICAgICAgICAgICBiMmRwWlhNZ1RIUmtMakVSTUE4R0ExVUVDeE1JV0M5VFpXTjFjbVV4RmpBVUJnTlZCQU1URFUxbGNteHBiaUJJCisgICAgICAgICAgICAgIGRXZG9aWE13Z1o4d0RRWUpLb1pJaHZjTkFRRUJCUUFEZ1kwQU1JR0pBb0dCQU9SZE5TeGJORldsUWVOc09sWUoKKyAgICAgICAgICAgICAgOWdOOWVaRCtyZ3VScUtobWhPbTdpNjNWRGQ1QUxtMkFQWGhxQW1HQlB6TE41amxMOWcyWEFMSzVXU080WEtqSgorICAgICAgICAgICAgICBNY1ZmWWc0K25QdU9lSGdxZEQ0SFVnZjE5ai82U2FUTWNtREZKUU1teDFRdytBYWtxM21HY1Nmdk9KY0JaY3R6CisgICAgICAgICAgICAgIGE1MFZ1Y2ZDR0wxTmRmQkVjYUwzQm5oakFnTUJBQUdqT2pBNE1BNEdBMVVkRHdFQi93UUVBd0lGb0RBUkJnTlYKKyAgICAgICAgICAgICAgSFE0RUNnUUlqRkcwWkdOeXZOc3dFd1lEVlIwakJBd3dDb0FJaEpYVmxocjZPNHd3RFFZSktvWklodmNOQVFFRgorICAgICAgICAgICAgICBCUUFEZ1lFQVh6Rzd4NWFDSllSdXNUYm11WnFoaWRHTTVpaUE5K1JtWjRKVFBERWdiZWlUaUpST3hwcitaam5BCisgICAgICAgICAgICAgIFRtc0RLckNwcU5VaUhXam1zS0VBcllRcDhSL0tqZEtsL3BWZTNqVXZUeGIwWVorbGkvN2swR1E1THlSVC9LNGMKKyAgICAgICAgICAgICAgMlNneUxseUJQaHBNcSt6M2c0UDJlZ1ZSYVpieHNMdUtRSUxmN01JVi9YNWlBRUJ6dTF3PQorICAgICAgICAgICAgPC9YNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgPC9YNTA5RGF0YT4KKyAgICAgICAgPC9LZXlJbmZvPgorICAgICAgICA8Q2lwaGVyRGF0YT4KKyAgICAgICAgICA8Q2lwaGVyVmFsdWU+CisgICAgICAgICAgICBoZVpzaE5YNW03YXJTM09tUjcyKzhXTkNNTXB6bnhFNDFkTFdrZ2Q2WEpwemwrSU4yeHVpakFmNFlQRWpqSm1aCisgICAgICAgICAgICBudDlQbE8zL2hpSGwwQ3ZwZzV2TVI2QWh2TDQ5QnZDejlKQ2VNRzZ4M01IQmlLYlJOaHlFcTJyWDdvMUdkSmhDCisgICAgICAgICAgICA1Y20zNVEvWkRLVjlESEc4aldtUGNPYjh5S1U5TllvMkxKS0RiM1lIT0pZPQorICAgICAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgICAgIDwvQ2lwaGVyRGF0YT4KKyAgICAgIDwvRW5jcnlwdGVkS2V5PgorICAgIDwvS2V5SW5mbz4KKyAgICA8Q2lwaGVyRGF0YT4KKyAgICAgIDxDaXBoZXJWYWx1ZT4KKyAgICAgICAgMHdrRUNwVHk2MC9GRHdiVk00emdkOXFKVmpSNGgwcTRQTG01cHl5SXhBdWhiRWgwYXJ0MDN5RWlrbWJXQnQySAorICAgICAgICA3cU9rMkc5aXVmVWR3d3FOUHVaVjVRdzVSZzJGTXZUeDIzNGxERVJHbjVwK2hoak9UY3NzNUpGOVFEemdkaWVjCisgICAgICAgIEtBQlgzdmJDRVNpL2YzdXdROEJZRFQrNlNueFRSK3h0Y052NXhoYlVDSUZrL1RhZW5TV3g2cDZmbnRUd1RsMWUKKyAgICAgICAgbHB3bkkwRXRNMXlmNGE5dEJpSDlQTmQzNkJVdjJydlNpNGNadkpxU0IzWkt2R3R1d3d5UnpPemx6bDI1OWQxdQorICAgICAgICBRdW9ZeXNUQkVBSHcvV0lvcDhlQWV4VTlQVXY3VWJUa1FBUWFnMXlTdGRhK0dlcFZkcFhFcHU0aGN4WFFjdmZzCisgICAgICAgIDlBUWdrQWdoNEpLcm5ZNEJoejJCL2U0Q0hIZmJFZWRET2krRlZZbFp1TG4wQ3pyS01uTSsxblVtcXhKVldIejcKKyAgICAgICAgaHl0aWRwdXFOUnczZ2NNa1l2Z0g2Zz09CisgICAgICA8L0NpcGhlclZhbHVlPgorICAgIDwvQ2lwaGVyRGF0YT4KKyAgPC9FbmNyeXB0ZWREYXRhPgorPC9QdXJjaGFzZU9yZGVyPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWVsZW1lbnQtYWVzMTkyLWNiYy1yZWYueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWVsZW1lbnQtYWVzMTkyLWNiYy1yZWYueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwOTJkN2YKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3J5cHQtZWxlbWVudC1hZXMxOTItY2JjLXJlZi54bWwKQEAgLTAsMCArMSwzOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxQdXJjaGFzZU9yZGVyIHhtbG5zPSJ1cm46ZXhhbXBsZTpwbyI+CisgIDxJdGVtcz4KKyAgICA8SXRlbSBDb2RlPSIwMDEtMDAxLTAwMSIgUXVhbnRpdHk9IjEiPgorICAgICAgc3BhZGUKKyAgICA8L0l0ZW0+CisgICAgPEl0ZW0gQ29kZT0iMDAxLTAwMS0wMDIiIFF1YW50aXR5PSIxIj4KKyAgICAgIHNob3ZlbAorICAgIDwvSXRlbT4KKyAgPC9JdGVtcz4KKyAgPFNoaXBwaW5nQWRkcmVzcz4KKyAgICBEaWcgUExDLCAxIEZpcnN0IEF2ZSwgRHVibGluIDEsIElyZWxhbmQKKyAgPC9TaGlwcGluZ0FkZHJlc3M+CisgIDxFbmNyeXB0ZWREYXRhIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI0VsZW1lbnQiPgorICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjYWVzMTkyLWNiYyIgLz4KKyAgICA8S2V5SW5mbyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICA8S2V5TmFtZT5qZWI8L0tleU5hbWU+CisgICAgPC9LZXlJbmZvPgorICAgIDxDaXBoZXJEYXRhPgorICAgICAgPENpcGhlclJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoIHhtbG5zOnJlcD0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy9yZXBvc2l0b3J5Ij5zZWxmOjp0ZXh0KClbcGFyZW50OjpyZXA6Q2lwaGVyVmFsdWVbQElkPSJleGFtcGxlMSJdXTwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjYmFzZTY0IiAvPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICA8L0NpcGhlclJlZmVyZW5jZT4KKyAgICA8L0NpcGhlckRhdGE+CisgIDwvRW5jcnlwdGVkRGF0YT4KKyAgPENpcGhlclZhbHVlIHhtbG5zPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnL3JlcG9zaXRvcnkiIElkPSJleGFtcGxlMSI+CisgICAgemloMU1GVTZQeDFtMlUxbFNFSVY5TFVJc25iM1NJV0JmUkhsUnJPV0tGRkZjVnZYaUU2ejNuQ2JrTllNdXkxVAorICAgIG5Qd1hEZDkvQmtPR2lQdUZUMmppeE43Wm93ZTJBTksxZFpYS1ZqWjErQUN4K0tnMTdVK0VNUEV1cTQ4MU9XN2UKKyAgICB3bTB2bmJ1cjBMMmxDWGI0RFA3YzZzb3RWODlXNTN2Mk1sYVlxV0hobEJPL3phc3F3aGw2cS9jL0wvR2RQVUhICisgICAgb3ZLWisyNFpXWWt0eENMRVhNc2xJQXlzUTBVRkJMb2xydEMvN1hEZ1lZOXM0VXZiZWRnZXFicmRueFE0TGlSbgorICAgIEwrYUtOMWJuS0YzS2xXS0NKRnZWclJFU3JpR1BCZnBhc1dBL0ExTE9LMzMzYThMYU9sUzdSRmFtZmxmSUNrK3QKKyAgICBWcUNzcFZuSXM2dkJCdHJHTEk1U3NKUytyaDFyNDJqSS9oL2l2RUxVT21VcTFzWkNGUXZFaHg3QWlIaTQvOVNZCisgICAgTFdjUjR3M1pIM2FxRkwvWHRBektZUT09CisgIDwvQ2lwaGVyVmFsdWU+Cis8L1B1cmNoYXNlT3JkZXI+CmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3J5cHQtZWxlbWVudC1hZXMyNTYtY2JjLWNhcnJpZWQta3ctYWVzMjU2LnhtbCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZW5jcnlwdC1lbGVtZW50LWFlczI1Ni1jYmMtY2FycmllZC1rdy1hZXMyNTYueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1OTRhN2YKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3J5cHQtZWxlbWVudC1hZXMyNTYtY2JjLWNhcnJpZWQta3ctYWVzMjU2LnhtbApAQCAtMCwwICsxLDU3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFB1cmNoYXNlT3JkZXIgeG1sbnM9InVybjpleGFtcGxlOnBvIj4KKyAgPEl0ZW1zPgorICAgIDxJdGVtIENvZGU9IjAwMS0wMDEtMDAxIiBRdWFudGl0eT0iMSI+CisgICAgICBzcGFkZQorICAgIDwvSXRlbT4KKyAgICA8SXRlbSBDb2RlPSIwMDEtMDAxLTAwMiIgUXVhbnRpdHk9IjEiPgorICAgICAgc2hvdmVsCisgICAgPC9JdGVtPgorICA8L0l0ZW1zPgorICA8U2hpcHBpbmdBZGRyZXNzPgorICAgIERpZyBQTEMsIDEgRmlyc3QgQXZlLCBEdWJsaW4gMSwgSXJlbGFuZAorICA8L1NoaXBwaW5nQWRkcmVzcz4KKyAgPEVuY3J5cHRlZERhdGEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+CisgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNhZXMyNTYtY2JjIiAvPgorICAgIDxLZXlJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgIDxLZXlOYW1lPkZvbyBLZXk8L0tleU5hbWU+CisgICAgPC9LZXlJbmZvPgorICAgIDxDaXBoZXJEYXRhPgorICAgICAgPENpcGhlclZhbHVlPgorICAgICAgICBwZER0aXlkN1hRL0JGRUVOMFBNSnVIbkxVZkNZK2JKbHNXK3EwNE9pS1NQblJkNC9kUzF0amFUZmo1ZFBwR1hlCisgICAgICAgIGNZM2ZKdlJzcTlRUDFDSml3eUVDL0VRMXpTTGJ6d090WitOdHh0c0ZnWXZQQko5dDg2WmNYSWpsRXJRODV6M0wKKyAgICAgICAgd25iOHJTSHBFOXR1NHRKMXJqZ2YyaTZOQ2JkRm5TTVhMU0RnTEVzNDgrZ2tYMGNKQ21LeHpSYVNFNGNWME9TbAorICAgICAgICBoQldORDRFWXpYMU02NzlWbFNZckkwZGUrbFNQTzNWeCt5L1R1WjVWbyt1dTkrWVArY2UwTFJreDJCaWNqanNQCisgICAgICAgIFFPOXNwK3lqSFBORElWMVo3VkhzRElXcXFtQmFOUW8zR3V6RjVXeldnYVhUS25Qdi9JZ1VRbisxdDNFdGdIeWIKKyAgICAgICAgSmhuZlIvMWVtMTZ6L1phZjlVeTFMZmQvL3lmRUo5QkNqcXdlMVVqd042eXR1MXYyQkhkKzhiVmpEMm8rRGc4VgorICAgICAgICA3YXlPTGxrV09UT0x2dEpNUE9YUHF3PT0KKyAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgPC9DaXBoZXJEYXRhPgorICA8L0VuY3J5cHRlZERhdGE+CisgIDxLZXlJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICA8RW5jcnlwdGVkS2V5IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiIFJlY2lwaWVudD0ic29tZW9uZSBlbHNlIj4KKyAgICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMja3ctYWVzMjU2IiAvPgorICAgICAgPEtleUluZm8geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgICA8S2V5TmFtZT5uZWQ8L0tleU5hbWU+CisgICAgICA8L0tleUluZm8+CisgICAgICA8Q2lwaGVyRGF0YT4KKyAgICAgICAgPENpcGhlclZhbHVlPgorICAgICAgICAgIEVXbElrRlBHcmtlVzRjeWpXU3puTFZvQ2xWaC9PRUM3S2x5YTlkOW83UjZ3bGw2SnN3WmIydz09CisgICAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgICA8L0NpcGhlckRhdGE+CisgICAgICA8Q2FycmllZEtleU5hbWU+Rm9vIEtleTwvQ2FycmllZEtleU5hbWU+CisgICAgPC9FbmNyeXB0ZWRLZXk+CisgICAgPEVuY3J5cHRlZEtleSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIiBSZWNpcGllbnQ9InlvdSI+CisgICAgICA8RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2t3LWFlczI1NiIgLz4KKyAgICAgIDxLZXlJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgPEtleU5hbWU+amVkPC9LZXlOYW1lPgorICAgICAgPC9LZXlJbmZvPgorICAgICAgPENpcGhlckRhdGE+CisgICAgICAgIDxDaXBoZXJWYWx1ZT4KKyAgICAgICAgICBic0w2M0QwaFBONkVPeXpkZ2ZFbUtzQUF2b0ppR00rV3A5YTlLWk05MklLZGw3czNZU250Umc9PQorICAgICAgICA8L0NpcGhlclZhbHVlPgorICAgICAgPC9DaXBoZXJEYXRhPgorICAgICAgPENhcnJpZWRLZXlOYW1lPkZvbyBLZXk8L0NhcnJpZWRLZXlOYW1lPgorICAgIDwvRW5jcnlwdGVkS2V5PgorICA8L0tleUluZm8+Cis8L1B1cmNoYXNlT3JkZXI+CmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3J5cHQtZWxlbWVudC1hZXMyNTYtY2JjLWt3LWFlczI1Ni1kaC1yaXBlbWQxNjAueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWVsZW1lbnQtYWVzMjU2LWNiYy1rdy1hZXMyNTYtZGgtcmlwZW1kMTYwLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmIzMzZhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWVsZW1lbnQtYWVzMjU2LWNiYy1rdy1hZXMyNTYtZGgtcmlwZW1kMTYwLnhtbApAQCAtMCwwICsxLDEyMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxQdXJjaGFzZU9yZGVyIHhtbG5zPSJ1cm46ZXhhbXBsZTpwbyI+CisgIDxJdGVtcz4KKyAgICA8SXRlbSBDb2RlPSIwMDEtMDAxLTAwMSIgUXVhbnRpdHk9IjEiPgorICAgICAgc3BhZGUKKyAgICA8L0l0ZW0+CisgICAgPEl0ZW0gQ29kZT0iMDAxLTAwMS0wMDIiIFF1YW50aXR5PSIxIj4KKyAgICAgIHNob3ZlbAorICAgIDwvSXRlbT4KKyAgPC9JdGVtcz4KKyAgPFNoaXBwaW5nQWRkcmVzcz4KKyAgICBEaWcgUExDLCAxIEZpcnN0IEF2ZSwgRHVibGluIDEsIElyZWxhbmQKKyAgPC9TaGlwcGluZ0FkZHJlc3M+CisgIDxFbmNyeXB0ZWREYXRhIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI0VsZW1lbnQiPgorICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjYWVzMjU2LWNiYyIgLz4KKyAgICA8S2V5SW5mbyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICA8RW5jcnlwdGVkS2V5IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPgorICAgICAgICA8RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2t3LWFlczI1NiIgLz4KKyAgICAgICAgPEtleUluZm8geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgICAgIDxBZ3JlZW1lbnRNZXRob2QgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNkaCI+CisgICAgICAgICAgICA8S0EtTm9uY2U+CisgICAgICAgICAgICAgIGJtOXVZMlU9CisgICAgICAgICAgICA8L0tBLU5vbmNlPgorICAgICAgICAgICAgPERpZ2VzdE1ldGhvZCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNyaXBlbWQxNjAiIC8+CisgICAgICAgICAgICA8T3JpZ2luYXRvcktleUluZm8+CisgICAgICAgICAgICAgIDxLZXlWYWx1ZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgICAgICAgICAgPERIS2V5VmFsdWUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+CisgICAgICAgICAgICAgICAgICA8UD4KKyAgICAgICAgICAgICAgICAgICAgcGx5Z2wydU1OYytqWXRBWmVLQ1p4UHNtcWEyejhEck9VYTdMNDU1aXN6TjRTZFBuTCtMc1pENDdWSmF5dlFZOAorICAgICAgICAgICAgICAgICAgICA2RDFKNWFya3dyYlV6bWhNQWpCWnNFTlBCZ2ZmUnd3RUJUam9xK2dqU3laTklieHFzcW5KZEV5VUVsem40a0dFCisgICAgICAgICAgICAgICAgICAgIHdoRUNrSkduT2FTY2FjcGpaZzExaCtnZDBpQmZZMDkxYkdIckNacnZyLzg9CisgICAgICAgICAgICAgICAgICA8L1A+CisgICAgICAgICAgICAgICAgICA8UT4KKyAgICAgICAgICAgICAgICAgICAgOWpKWFFpak5vdm9xNlFVQkZjRVVZd1V2eVRNPQorICAgICAgICAgICAgICAgICAgPC9RPgorICAgICAgICAgICAgICAgICAgPEdlbmVyYXRvcj4KKyAgICAgICAgICAgICAgICAgICAgUGVyVVpnTUVNRFRlZ01kVEJSRzlEUFk1RUhtd0R4d3psYWRkUmNmdmZkZlUvOXdsUHp6NUJVb3RNbTczMEo5ZAorICAgICAgICAgICAgICAgICAgICBsRjZhdldyOTI5ZnpZc25JT1VEZVVPSnBsdFhtclRZbnZ6NUJpNnl1VXU2YlZ3U2Z2N3U0UytJL0VNOVpCK2VZCisgICAgICAgICAgICAgICAgICAgIDNmZEY1VEFNSEQ0dEs4Nmx3NUFQRHJOMlFuTzFVTUN3SXZqT0ZhdFNPSTA9CisgICAgICAgICAgICAgICAgICA8L0dlbmVyYXRvcj4KKyAgICAgICAgICAgICAgICAgIDxQdWJsaWM+CisgICAgICAgICAgICAgICAgICAgIFVsdTZCMWxDd2FqdElCbm9scXFnVStSMW94ZnllNjNEbkkvaUxNL09lK1k4SS9MTU1hRW1vM0xtQ1UzMG04MnIKKyAgICAgICAgICAgICAgICAgICAgTnlPVXFnZm5tOTdTMGJUOFpoSThndncwRXlRSjg3dmhsVXo0V2NtZGRVL1lsVGkzZ0pIVUNscjJvbG1CbVJDdAorICAgICAgICAgICAgICAgICAgICBtMnZLby9CcG9MR0owV2cxZXlXZm81NCtnQ3FiZU5lei9EbUJHY0JFRWhNPQorICAgICAgICAgICAgICAgICAgPC9QdWJsaWM+CisgICAgICAgICAgICAgICAgPC9ESEtleVZhbHVlPgorICAgICAgICAgICAgICA8L0tleVZhbHVlPgorICAgICAgICAgICAgICA8WDUwOURhdGEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgICAgICAgICAgIDxYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICAgICAgICBNSUlEdmpDQ0EzNmdBd0lCQWdJR0FPeE4zOU1JTUFrR0J5cUdTTTQ0QkFNd2JqRUxNQWtHQTFVRUJoTUNTVVV4CisgICAgICAgICAgICAgICAgICBEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsCisgICAgICAgICAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CCisgICAgICAgICAgICAgICAgICBNQjRYRFRBeU1ESXlPREUzTlRNeE5sb1hEVEF6TURJeU9ERTNOVEkxTkZvd2J6RUxNQWtHQTFVRUJoTUNTVVV4CisgICAgICAgICAgICAgICAgICBEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsCisgICAgICAgICAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVdNQlFHQTFVRUF4TU5UV1Z5YkdsdUlFaDFaMmhsCisgICAgICAgICAgICAgICAgICBjekNDQWlVd2dnR2FCZ2NxaGtqT1BnSUJNSUlCalFLQmdRQ21YS0NYYTR3MXo2TmkwQmw0b0puRSt5YXByYlB3CisgICAgICAgICAgICAgICAgICBPczVScnN2am5tS3pNM2hKMCtjdjR1eGtQanRVbHJLOUJqem9QVW5scXVUQ3R0VE9hRXdDTUZtd1EwOEdCOTlICisgICAgICAgICAgICAgICAgICBEQVFGT09pcjZDTkxKazBodkdxeXFjbDBUSlFTWE9maVFZVENFUUtRa2FjNXBKeHB5bU5tRFhXSDZCM1NJRjlqCisgICAgICAgICAgICAgICAgICBUM1ZzWWVzSm11K3Yvd0tCZ0QzcTFHWURCREEwM29ESFV3VVJ2UXoyT1JCNXNBOGNNNVduWFVYSDczM1gxUC9jCisgICAgICAgICAgICAgICAgICBKVDg4K1FWS0xUSnU5OUNmWFpSZW1yMXEvZHZYODJMSnlEbEEzbERpYVpiVjVxMDJKNzgrUVl1c3JsTHVtMWNFCisgICAgICAgICAgICAgICAgICBuNys3dUV2aVB4RFBXUWZubU4zM1JlVXdEQncrTFN2T3BjT1FEdzZ6ZGtKenRWREFzQ0w0emhXclVqaU5BaFVBCisgICAgICAgICAgICAgICAgICA5akpYUWlqTm92b3E2UVVCRmNFVVl3VXZ5VE1DYlFDcy9Ia0x1c0NxSG1ZNzFKeFVPRnp5NWZ1V2tQcFdYSnp4CisgICAgICAgICAgICAgICAgICBxVTNvejFCZk1adFBVcWpwQm5xVTk3TTdWVUVnKzVwUkcydHhhSFA4WE5tQjFiWTBEQ0U4OHJpRG1IUDdIcVpCCisgICAgICAgICAgICAgICAgICBaMmdiYUgyTHhYRFFEYXliNUdjUGZuMzhlRGNXdlZBYUtQOWZKOHdHNVJVdTNBb0RnWVFBQW9HQVVsdTZCMWxDCisgICAgICAgICAgICAgICAgICB3YWp0SUJub2xxcWdVK1Ixb3hmeWU2M0RuSS9pTE0vT2UrWThJL0xNTWFFbW8zTG1DVTMwbTgyck55T1VxZ2ZuCisgICAgICAgICAgICAgICAgICBtOTdTMGJUOFpoSThndncwRXlRSjg3dmhsVXo0V2NtZGRVL1lsVGkzZ0pIVUNscjJvbG1CbVJDdG0ydktvL0JwCisgICAgICAgICAgICAgICAgICBvTEdKMFdnMWV5V2ZvNTQrZ0NxYmVOZXovRG1CR2NCRUVoT2pPakE0TUE0R0ExVWREd0VCL3dRRUF3SURDREFSCisgICAgICAgICAgICAgICAgICBCZ05WSFE0RUNnUUlnVUF3Qis5ZjFvSXdFd1lEVlIwakJBd3dDb0FJZ2pxaXNpWjFXVnN3Q1FZSEtvWkl6amdFCisgICAgICAgICAgICAgICAgICBBd012QURBc0FoUTQxbUNVc0ZobXhJNTh0eXRWOFhFVlpPQ3VVd0lVVk1lL0hiVUFINVBKN2FSb0NOcWEzZkNJCisgICAgICAgICAgICAgICAgICBjVTA9CisgICAgICAgICAgICAgICAgPC9YNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICAgIDwvWDUwOURhdGE+CisgICAgICAgICAgICA8L09yaWdpbmF0b3JLZXlJbmZvPgorICAgICAgICAgICAgPFJlY2lwaWVudEtleUluZm8+CisgICAgICAgICAgICAgIDxYNTA5RGF0YSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgICAgICAgICAgPFg1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgICAgICAgICAgIE1JSUR2akNDQTM2Z0F3SUJBZ0lHQU94TjMrRU1NQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgKKyAgICAgICAgICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICAgICAgICAgIGN5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkIKKyAgICAgICAgICAgICAgICAgIE1CNFhEVEF5TURJeU9ERTNOVE14T1ZvWERUQXpNREl5T0RFM05USTFORm93YnpFTE1Ba0dBMVVFQmhNQ1NVVXgKKyAgICAgICAgICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICAgICAgICAgIGN5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFV01CUUdBMVVFQXhNTlRtbHNjbVZ0SUZObGFHZDEKKyAgICAgICAgICAgICAgICAgIGFEQ0NBaVV3Z2dHYUJnY3Foa2pPUGdJQk1JSUJqUUtCZ1FDbVhLQ1hhNHcxejZOaTBCbDRvSm5FK3lhcHJiUHcKKyAgICAgICAgICAgICAgICAgIE9zNVJyc3Zqbm1Lek0zaEowK2N2NHV4a1BqdFVscks5Qmp6b1BVbmxxdVRDdHRUT2FFd0NNRm13UTA4R0I5OUgKKyAgICAgICAgICAgICAgICAgIERBUUZPT2lyNkNOTEprMGh2R3F5cWNsMFRKUVNYT2ZpUVlUQ0VRS1FrYWM1cEp4cHltTm1EWFdINkIzU0lGOWoKKyAgICAgICAgICAgICAgICAgIFQzVnNZZXNKbXUrdi93S0JnRDNxMUdZREJEQTAzb0RIVXdVUnZRejJPUkI1c0E4Y001V25YVVhINzMzWDFQL2MKKyAgICAgICAgICAgICAgICAgIEpUODgrUVZLTFRKdTk5Q2ZYWlJlbXIxcS9kdlg4MkxKeURsQTNsRGlhWmJWNXEwMko3OCtRWXVzcmxMdW0xY0UKKyAgICAgICAgICAgICAgICAgIG43Kzd1RXZpUHhEUFdRZm5tTjMzUmVVd0RCdytMU3ZPcGNPUUR3Nnpka0p6dFZEQXNDTDR6aFdyVWppTkFoVUEKKyAgICAgICAgICAgICAgICAgIDlqSlhRaWpOb3ZvcTZRVUJGY0VVWXdVdnlUTUNiUUNzL0hrTHVzQ3FIbVk3MUp4VU9Genk1ZnVXa1BwV1hKengKKyAgICAgICAgICAgICAgICAgIHFVM296MUJmTVp0UFVxanBCbnFVOTdNN1ZVRWcrNXBSRzJ0eGFIUDhYTm1CMWJZMERDRTg4cmlEbUhQN0hxWkIKKyAgICAgICAgICAgICAgICAgIFoyZ2JhSDJMeFhEUURheWI1R2NQZm4zOGVEY1d2VkFhS1A5Zko4d0c1UlV1M0FvRGdZUUFBb0dBR1NZVDE5UGIKKyAgICAgICAgICAgICAgICAgIFZDeE10MDZjQVA3elFaNkFDNWVYcDN6ZUF3ZUlldlY5NnJ5QTFtQjAzcWhCOVgybFZvd0FVT0ZjMjRhVlJUejcKKyAgICAgICAgICAgICAgICAgIHdSb1JqTlEyMGF0elN5MjFDN3lYRGt2WjR1eGZkcnBJcXBJVnJJMjhlN1hMKzZDcmhuQWs2MjFPdmRleUV6NUgKKyAgICAgICAgICAgICAgICAgIG9yQTIxaFBYb0NOZG5VUEc1SWIyMG9vcE04N3B0RjVkd2lXak9qQTRNQTRHQTFVZER3RUIvd1FFQXdJRENEQVIKKyAgICAgICAgICAgICAgICAgIEJnTlZIUTRFQ2dRSWlEQ1NRM0ZCL29Fd0V3WURWUjBqQkF3d0NvQUlnanFpc2laMVdWc3dDUVlIS29aSXpqZ0UKKyAgICAgICAgICAgICAgICAgIEF3TXZBREFzQWhRTXRaOThUeXFWa1ZxVUozUkpxYVU3bDJ4cUtnSVVYOTk3cVJxZU1qQWtLODhOSGVOZDk1LzIKKyAgICAgICAgICAgICAgICAgIFlvcz0KKyAgICAgICAgICAgICAgICA8L1g1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgICAgICAgPC9YNTA5RGF0YT4KKyAgICAgICAgICAgIDwvUmVjaXBpZW50S2V5SW5mbz4KKyAgICAgICAgICA8L0FncmVlbWVudE1ldGhvZD4KKyAgICAgICAgPC9LZXlJbmZvPgorICAgICAgICA8Q2lwaGVyRGF0YT4KKyAgICAgICAgICA8Q2lwaGVyVmFsdWU+CisgICAgICAgICAgICBxS1duQ3hWSWxOdlBFcUJNeGhDYVk2ejlOSzBaRkNtUmVmMVU1d2JJTVBhUi9nMlpkdzdWWmc9PQorICAgICAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgICAgIDwvQ2lwaGVyRGF0YT4KKyAgICAgIDwvRW5jcnlwdGVkS2V5PgorICAgIDwvS2V5SW5mbz4KKyAgICA8Q2lwaGVyRGF0YT4KKyAgICAgIDxDaXBoZXJWYWx1ZT4KKyAgICAgICAgYmV0TWZHL1ZNTGR3Tkdka3NwQ3JKU28wOTJQbHRJbmtsUWlzS2Q4SW1RZ2VGTXpqbjczT3BYaEswS0p0QjlJQgorICAgICAgICAxeEdqRU5aOFl6dTYyNWVoaENaR0dGSzRtcDhEa0lFN1NmdzdPKzVVRXFwckUvY0dyV0wwYmJjejBVN1gyRXZoCisgICAgICAgIDQvOXZhNmgrREhBem1WWVc3YnFzYTBXa2lIa0VMUnE0NE9SZFN6eVBVSXdwR1VDc09XeVRoc1lmSW40dWhJSFEKKyAgICAgICAgTkpWVEtQUkhUYjVINWxzeE50b2JTZVhBQ1NZQUhrL0JtSk05OWg0SVE5R2g3YkNraGttWnNJdm8vbE5PVys2cgorICAgICAgICB4dHZMcUhmWXc5WGhKZTdoTDBRNUVsdU1DQlpRSi9WeDJyNWxUWHpCZW9ubHVycHpOZFJhK0NsS1NWUlV3S1lICisgICAgICAgIFZqZW1yL28rWTRlNHI4Z0QzVFZQM2F1VnVVQ21pM1hMcGo0V2pPc1BEY2VrelpVZ1hBL3h1Sis3akhYak9FT0sKKyAgICAgICAgUlZpTWl3SWswY3FPYTZzMFFnNjNFUT09CisgICAgICA8L0NpcGhlclZhbHVlPgorICAgIDwvQ2lwaGVyRGF0YT4KKyAgPC9FbmNyeXB0ZWREYXRhPgorPC9QdXJjaGFzZU9yZGVyPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWVsZW1lbnQtYWVzMjU2LWNiYy1yZXRyaWV2ZWQta3ctYWVzMjU2LnhtbCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZW5jcnlwdC1lbGVtZW50LWFlczI1Ni1jYmMtcmV0cmlldmVkLWt3LWFlczI1Ni54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzMxMWI4NAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZW5jcnlwdC1lbGVtZW50LWFlczI1Ni1jYmMtcmV0cmlldmVkLWt3LWFlczI1Ni54bWwKQEAgLTAsMCArMSw0NCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxQdXJjaGFzZU9yZGVyIHhtbG5zPSJ1cm46ZXhhbXBsZTpwbyI+CisgIDxJdGVtcz4KKyAgICA8SXRlbSBDb2RlPSIwMDEtMDAxLTAwMSIgUXVhbnRpdHk9IjEiPgorICAgICAgc3BhZGUKKyAgICA8L0l0ZW0+CisgICAgPEl0ZW0gQ29kZT0iMDAxLTAwMS0wMDIiIFF1YW50aXR5PSIxIj4KKyAgICAgIHNob3ZlbAorICAgIDwvSXRlbT4KKyAgPC9JdGVtcz4KKyAgPFNoaXBwaW5nQWRkcmVzcz4KKyAgICBEaWcgUExDLCAxIEZpcnN0IEF2ZSwgRHVibGluIDEsIElyZWxhbmQKKyAgPC9TaGlwcGluZ0FkZHJlc3M+CisgIDxFbmNyeXB0ZWREYXRhIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI0VsZW1lbnQiPgorICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjYWVzMjU2LWNiYyIgLz4KKyAgICA8S2V5SW5mbyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICA8UmV0cmlldmFsTWV0aG9kIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI0VuY3J5cHRlZEtleSIgVVJJPSIjZW5jcnlwdC1rZXktMCIgLz4KKyAgICA8L0tleUluZm8+CisgICAgPENpcGhlckRhdGE+CisgICAgICA8Q2lwaGVyVmFsdWU+CisgICAgICAgIGN1ZFI2SGcweHFock9qYnZRejRDL1dPZEhiY0I3RHVjK3hGeGJPYmtma1c2alh3ZURPZjhUcTg3RlBiajViYnkKKyAgICAgICAgb0NMYldxcTNhcC96eC9nTjhYdjNGajZmWVV6M2RJYjF3elh5N0IwLzNtZTdpNGZCSHlHcm9wZmxMaTdpRWFnMgorICAgICAgICBXVTdhR0owQ0E5L2pRcjZUZDJxaEgwQ0RVNDdRTjllSy9QVk1QUGZMWDFEMUE5MHVLMzJ3UG4rU0N5c0U1OFEzCisgICAgICAgIHJDaTdKd28rT3NyeFQwcXFqUDgyVDNGalZpMGkvZHNuUGI1R1FXTEUzL3k3T3NJdWtudU1STzRtV21hK2JPL20KKyAgICAgICAgYUFOOUpOZW9tNUtuM0lLSENLMitreXgrTHNHbzJkYUt4RjdSRjlRcWxhQS9pbXNNUzR0clJqWmpZaGdmZ205NgorICAgICAgICBrYjFsNEFJN1ZaY2ZSWHdZZHpMcUtOSHR5Nlp4YlNRQk1lRWNhMG1FdUlib3I3SUgzNDY0MWEvQnVGTUUvQkxtCisgICAgICAgIE1vVmFMVUNFMHJnMWUxVTBTMThVQ2c9PQorICAgICAgPC9DaXBoZXJWYWx1ZT4KKyAgICA8L0NpcGhlckRhdGE+CisgIDwvRW5jcnlwdGVkRGF0YT4KKyAgPEtleUluZm8geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgIDxFbmNyeXB0ZWRLZXkgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgSWQ9ImVuY3J5cHQta2V5LTAiPgorICAgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNrdy1hZXMyNTYiIC8+CisgICAgICA8S2V5SW5mbyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgIDxLZXlOYW1lPmplZDwvS2V5TmFtZT4KKyAgICAgIDwvS2V5SW5mbz4KKyAgICAgIDxDaXBoZXJEYXRhPgorICAgICAgICA8Q2lwaGVyVmFsdWU+CisgICAgICAgICAgYnNMNjNEMGhQTjZFT3l6ZGdmRW1Lc0FBdm9KaUdNK1dwOWE5S1pNOTJJS2RsN3MzWVNudFJnPT0KKyAgICAgICAgPC9DaXBoZXJWYWx1ZT4KKyAgICAgIDwvQ2lwaGVyRGF0YT4KKyAgICA8L0VuY3J5cHRlZEtleT4KKyAgPC9LZXlJbmZvPgorPC9QdXJjaGFzZU9yZGVyPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWVsZW1lbnQtdHJpcGxlZGVzLWNiYy1rdy1hZXMxMjgueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWVsZW1lbnQtdHJpcGxlZGVzLWNiYy1rdy1hZXMxMjgueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlZGUwNjQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3J5cHQtZWxlbWVudC10cmlwbGVkZXMtY2JjLWt3LWFlczEyOC54bWwKQEAgLTAsMCArMSw0MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxQdXJjaGFzZU9yZGVyIHhtbG5zPSJ1cm46ZXhhbXBsZTpwbyI+CisgIDxJdGVtcz4KKyAgICA8SXRlbSBDb2RlPSIwMDEtMDAxLTAwMSIgUXVhbnRpdHk9IjEiPgorICAgICAgc3BhZGUKKyAgICA8L0l0ZW0+CisgICAgPEl0ZW0gQ29kZT0iMDAxLTAwMS0wMDIiIFF1YW50aXR5PSIxIj4KKyAgICAgIHNob3ZlbAorICAgIDwvSXRlbT4KKyAgPC9JdGVtcz4KKyAgPFNoaXBwaW5nQWRkcmVzcz4KKyAgICBEaWcgUExDLCAxIEZpcnN0IEF2ZSwgRHVibGluIDEsIElyZWxhbmQKKyAgPC9TaGlwcGluZ0FkZHJlc3M+CisgIDxFbmNyeXB0ZWREYXRhIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI0VsZW1lbnQiPgorICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjdHJpcGxlZGVzLWNiYyIgLz4KKyAgICA8S2V5SW5mbyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICA8RW5jcnlwdGVkS2V5IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPgorICAgICAgICA8RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2t3LWFlczEyOCIgLz4KKyAgICAgICAgPEtleUluZm8geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgICAgIDxLZXlOYW1lPmpvYjwvS2V5TmFtZT4KKyAgICAgICAgPC9LZXlJbmZvPgorICAgICAgICA8Q2lwaGVyRGF0YT4KKyAgICAgICAgICA8Q2lwaGVyVmFsdWU+CisgICAgICAgICAgICBkVjQ1VFVwSmJpZGI5aUthMzR4ajFXVnRUWjAzNmNucXZ5bTJUQkpXUjVjPQorICAgICAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgICAgIDwvQ2lwaGVyRGF0YT4KKyAgICAgIDwvRW5jcnlwdGVkS2V5PgorICAgIDwvS2V5SW5mbz4KKyAgICA8Q2lwaGVyRGF0YT4KKyAgICAgIDxDaXBoZXJWYWx1ZT4KKyAgICAgICAgYm1FeGJEeXJVUXRzR2pOQlU3VFJwTWhPQzc2Ty93QkRXVk1RTUw0M2xXTlAweHA3UXdWUGNlMVhkYkI0QVZVbgorICAgICAgICB4eEF1SmgxOGpPZDlVelBUenJKSHJLV3ZzV1A4WHAxbS9ITDNBMVhoT1VlK01FY0Z5SkI5ZlhhemhEbXlhU1lVCisgICAgICAgIFN2aWVhUFhjcHpLV2lIaFpFOFJLVXlBWXc5blU5d2YyU0VVZ0NWUnVSUGZzclhnNFV5cjgzVlRuODRMUGU5c0wKKyAgICAgICAgZGQyaE1qNGpoZ0hMODZiN1BUWUJXZHRyWVhxMEp3enB0dXcrVFoxQzcwNkJBWkRZTkFpU1RkeDNKMTdFeTNleAorICAgICAgICBJZUlGQkJJcThEOEdwN1hpSDRVeGlEQjZydEEyY3pveDYrRkN2YUlzckdGYWF3OVhkenZoaVozSHhZUk9qcHJ6CisgICAgICAgIHFpWGNKbFp6RzZqOHlSZHBIU2pzRGtOM3c3WGpFZ1JPRGllR3gxMTByQnl0WmN3dHFiMHpjNkpUWkg1RHpvSnkKKyAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgPC9DaXBoZXJEYXRhPgorICA8L0VuY3J5cHRlZERhdGE+Cis8L1B1cmNoYXNlT3JkZXI+CmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3NpZy1obWFjLXNoYTI1Ni1kaC54bWwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3NpZy1obWFjLXNoYTI1Ni1kaC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY5ZDkzNgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZW5jc2lnLWhtYWMtc2hhMjU2LWRoLnhtbApAQCAtMCwwICsxLDk4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgIDxTaWduZWRJbmZvPgorICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiIC8+CisgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2htYWMtc2hhMjU2IiAvPgorICAgIDxSZWZlcmVuY2UgVVJJPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldCI+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWU+NjBOdlp2dGRUQis3VW5sTHAvSDI0cDdoNGJzPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgIDwvU2lnbmVkSW5mbz4KKyAgPFNpZ25hdHVyZVZhbHVlPgorICAgIDI1NUxGUWRQK2VBSzJhZXV1TG56MTBwbWF3NFdFWWI2VFphM0I2SDR6OGM9CisgIDwvU2lnbmF0dXJlVmFsdWU+CisgIDxLZXlJbmZvPgorICAgIDxBZ3JlZW1lbnRNZXRob2QgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNkaCI+CisgICAgICA8S0EtTm9uY2U+CisgICAgICAgIGJtOXVZMlU9CisgICAgICA8L0tBLU5vbmNlPgorICAgICAgPERpZ2VzdE1ldGhvZCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiIC8+CisgICAgICA8T3JpZ2luYXRvcktleUluZm8+CisgICAgICAgIDxLZXlWYWx1ZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgICAgPERIS2V5VmFsdWUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+CisgICAgICAgICAgICA8UD4KKyAgICAgICAgICAgICAgcGx5Z2wydU1OYytqWXRBWmVLQ1p4UHNtcWEyejhEck9VYTdMNDU1aXN6TjRTZFBuTCtMc1pENDdWSmF5dlFZOAorICAgICAgICAgICAgICA2RDFKNWFya3dyYlV6bWhNQWpCWnNFTlBCZ2ZmUnd3RUJUam9xK2dqU3laTklieHFzcW5KZEV5VUVsem40a0dFCisgICAgICAgICAgICAgIHdoRUNrSkduT2FTY2FjcGpaZzExaCtnZDBpQmZZMDkxYkdIckNacnZyLzg9CisgICAgICAgICAgICA8L1A+CisgICAgICAgICAgICA8UT4KKyAgICAgICAgICAgICAgOWpKWFFpak5vdm9xNlFVQkZjRVVZd1V2eVRNPQorICAgICAgICAgICAgPC9RPgorICAgICAgICAgICAgPEdlbmVyYXRvcj4KKyAgICAgICAgICAgICAgUGVyVVpnTUVNRFRlZ01kVEJSRzlEUFk1RUhtd0R4d3psYWRkUmNmdmZkZlUvOXdsUHp6NUJVb3RNbTczMEo5ZAorICAgICAgICAgICAgICBsRjZhdldyOTI5ZnpZc25JT1VEZVVPSnBsdFhtclRZbnZ6NUJpNnl1VXU2YlZ3U2Z2N3U0UytJL0VNOVpCK2VZCisgICAgICAgICAgICAgIDNmZEY1VEFNSEQ0dEs4Nmx3NUFQRHJOMlFuTzFVTUN3SXZqT0ZhdFNPSTA9CisgICAgICAgICAgICA8L0dlbmVyYXRvcj4KKyAgICAgICAgICAgIDxQdWJsaWM+CisgICAgICAgICAgICAgIFVsdTZCMWxDd2FqdElCbm9scXFnVStSMW94ZnllNjNEbkkvaUxNL09lK1k4SS9MTU1hRW1vM0xtQ1UzMG04MnIKKyAgICAgICAgICAgICAgTnlPVXFnZm5tOTdTMGJUOFpoSThndncwRXlRSjg3dmhsVXo0V2NtZGRVL1lsVGkzZ0pIVUNscjJvbG1CbVJDdAorICAgICAgICAgICAgICBtMnZLby9CcG9MR0owV2cxZXlXZm81NCtnQ3FiZU5lei9EbUJHY0JFRWhNPQorICAgICAgICAgICAgPC9QdWJsaWM+CisgICAgICAgICAgPC9ESEtleVZhbHVlPgorICAgICAgICA8L0tleVZhbHVlPgorICAgICAgICA8WDUwOURhdGEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgICAgIDxYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICBNSUlEdmpDQ0EzNmdBd0lCQWdJR0FPeE4zOU1JTUFrR0J5cUdTTTQ0QkFNd2JqRUxNQWtHQTFVRUJoTUNTVVV4CisgICAgICAgICAgICBEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsCisgICAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CCisgICAgICAgICAgICBNQjRYRFRBeU1ESXlPREUzTlRNeE5sb1hEVEF6TURJeU9ERTNOVEkxTkZvd2J6RUxNQWtHQTFVRUJoTUNTVVV4CisgICAgICAgICAgICBEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsCisgICAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVdNQlFHQTFVRUF4TU5UV1Z5YkdsdUlFaDFaMmhsCisgICAgICAgICAgICBjekNDQWlVd2dnR2FCZ2NxaGtqT1BnSUJNSUlCalFLQmdRQ21YS0NYYTR3MXo2TmkwQmw0b0puRSt5YXByYlB3CisgICAgICAgICAgICBPczVScnN2am5tS3pNM2hKMCtjdjR1eGtQanRVbHJLOUJqem9QVW5scXVUQ3R0VE9hRXdDTUZtd1EwOEdCOTlICisgICAgICAgICAgICBEQVFGT09pcjZDTkxKazBodkdxeXFjbDBUSlFTWE9maVFZVENFUUtRa2FjNXBKeHB5bU5tRFhXSDZCM1NJRjlqCisgICAgICAgICAgICBUM1ZzWWVzSm11K3Yvd0tCZ0QzcTFHWURCREEwM29ESFV3VVJ2UXoyT1JCNXNBOGNNNVduWFVYSDczM1gxUC9jCisgICAgICAgICAgICBKVDg4K1FWS0xUSnU5OUNmWFpSZW1yMXEvZHZYODJMSnlEbEEzbERpYVpiVjVxMDJKNzgrUVl1c3JsTHVtMWNFCisgICAgICAgICAgICBuNys3dUV2aVB4RFBXUWZubU4zM1JlVXdEQncrTFN2T3BjT1FEdzZ6ZGtKenRWREFzQ0w0emhXclVqaU5BaFVBCisgICAgICAgICAgICA5akpYUWlqTm92b3E2UVVCRmNFVVl3VXZ5VE1DYlFDcy9Ia0x1c0NxSG1ZNzFKeFVPRnp5NWZ1V2tQcFdYSnp4CisgICAgICAgICAgICBxVTNvejFCZk1adFBVcWpwQm5xVTk3TTdWVUVnKzVwUkcydHhhSFA4WE5tQjFiWTBEQ0U4OHJpRG1IUDdIcVpCCisgICAgICAgICAgICBaMmdiYUgyTHhYRFFEYXliNUdjUGZuMzhlRGNXdlZBYUtQOWZKOHdHNVJVdTNBb0RnWVFBQW9HQVVsdTZCMWxDCisgICAgICAgICAgICB3YWp0SUJub2xxcWdVK1Ixb3hmeWU2M0RuSS9pTE0vT2UrWThJL0xNTWFFbW8zTG1DVTMwbTgyck55T1VxZ2ZuCisgICAgICAgICAgICBtOTdTMGJUOFpoSThndncwRXlRSjg3dmhsVXo0V2NtZGRVL1lsVGkzZ0pIVUNscjJvbG1CbVJDdG0ydktvL0JwCisgICAgICAgICAgICBvTEdKMFdnMWV5V2ZvNTQrZ0NxYmVOZXovRG1CR2NCRUVoT2pPakE0TUE0R0ExVWREd0VCL3dRRUF3SURDREFSCisgICAgICAgICAgICBCZ05WSFE0RUNnUUlnVUF3Qis5ZjFvSXdFd1lEVlIwakJBd3dDb0FJZ2pxaXNpWjFXVnN3Q1FZSEtvWkl6amdFCisgICAgICAgICAgICBBd012QURBc0FoUTQxbUNVc0ZobXhJNTh0eXRWOFhFVlpPQ3VVd0lVVk1lL0hiVUFINVBKN2FSb0NOcWEzZkNJCisgICAgICAgICAgICBjVTA9CisgICAgICAgICAgPC9YNTA5Q2VydGlmaWNhdGU+CisgICAgICAgIDwvWDUwOURhdGE+CisgICAgICA8L09yaWdpbmF0b3JLZXlJbmZvPgorICAgICAgPFJlY2lwaWVudEtleUluZm8+CisgICAgICAgIDxYNTA5RGF0YSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgICAgPFg1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgICAgIE1JSUR2akNDQTM2Z0F3SUJBZ0lHQU94TjMrRU1NQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgKKyAgICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICAgIGN5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkIKKyAgICAgICAgICAgIE1CNFhEVEF5TURJeU9ERTNOVE14T1ZvWERUQXpNREl5T0RFM05USTFORm93YnpFTE1Ba0dBMVVFQmhNQ1NVVXgKKyAgICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICAgIGN5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFV01CUUdBMVVFQXhNTlRtbHNjbVZ0SUZObGFHZDEKKyAgICAgICAgICAgIGFEQ0NBaVV3Z2dHYUJnY3Foa2pPUGdJQk1JSUJqUUtCZ1FDbVhLQ1hhNHcxejZOaTBCbDRvSm5FK3lhcHJiUHcKKyAgICAgICAgICAgIE9zNVJyc3Zqbm1Lek0zaEowK2N2NHV4a1BqdFVscks5Qmp6b1BVbmxxdVRDdHRUT2FFd0NNRm13UTA4R0I5OUgKKyAgICAgICAgICAgIERBUUZPT2lyNkNOTEprMGh2R3F5cWNsMFRKUVNYT2ZpUVlUQ0VRS1FrYWM1cEp4cHltTm1EWFdINkIzU0lGOWoKKyAgICAgICAgICAgIFQzVnNZZXNKbXUrdi93S0JnRDNxMUdZREJEQTAzb0RIVXdVUnZRejJPUkI1c0E4Y001V25YVVhINzMzWDFQL2MKKyAgICAgICAgICAgIEpUODgrUVZLTFRKdTk5Q2ZYWlJlbXIxcS9kdlg4MkxKeURsQTNsRGlhWmJWNXEwMko3OCtRWXVzcmxMdW0xY0UKKyAgICAgICAgICAgIG43Kzd1RXZpUHhEUFdRZm5tTjMzUmVVd0RCdytMU3ZPcGNPUUR3Nnpka0p6dFZEQXNDTDR6aFdyVWppTkFoVUEKKyAgICAgICAgICAgIDlqSlhRaWpOb3ZvcTZRVUJGY0VVWXdVdnlUTUNiUUNzL0hrTHVzQ3FIbVk3MUp4VU9Genk1ZnVXa1BwV1hKengKKyAgICAgICAgICAgIHFVM296MUJmTVp0UFVxanBCbnFVOTdNN1ZVRWcrNXBSRzJ0eGFIUDhYTm1CMWJZMERDRTg4cmlEbUhQN0hxWkIKKyAgICAgICAgICAgIFoyZ2JhSDJMeFhEUURheWI1R2NQZm4zOGVEY1d2VkFhS1A5Zko4d0c1UlV1M0FvRGdZUUFBb0dBR1NZVDE5UGIKKyAgICAgICAgICAgIFZDeE10MDZjQVA3elFaNkFDNWVYcDN6ZUF3ZUlldlY5NnJ5QTFtQjAzcWhCOVgybFZvd0FVT0ZjMjRhVlJUejcKKyAgICAgICAgICAgIHdSb1JqTlEyMGF0elN5MjFDN3lYRGt2WjR1eGZkcnBJcXBJVnJJMjhlN1hMKzZDcmhuQWs2MjFPdmRleUV6NUgKKyAgICAgICAgICAgIG9yQTIxaFBYb0NOZG5VUEc1SWIyMG9vcE04N3B0RjVkd2lXak9qQTRNQTRHQTFVZER3RUIvd1FFQXdJRENEQVIKKyAgICAgICAgICAgIEJnTlZIUTRFQ2dRSWlEQ1NRM0ZCL29Fd0V3WURWUjBqQkF3d0NvQUlnanFpc2laMVdWc3dDUVlIS29aSXpqZ0UKKyAgICAgICAgICAgIEF3TXZBREFzQWhRTXRaOThUeXFWa1ZxVUozUkpxYVU3bDJ4cUtnSVVYOTk3cVJxZU1qQWtLODhOSGVOZDk1LzIKKyAgICAgICAgICAgIFlvcz0KKyAgICAgICAgICA8L1g1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgPC9YNTA5RGF0YT4KKyAgICAgIDwvUmVjaXBpZW50S2V5SW5mbz4KKyAgICA8L0FncmVlbWVudE1ldGhvZD4KKyAgPC9LZXlJbmZvPgorPC9TaWduYXR1cmU+CmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3NpZy1obWFjLXNoYTI1Ni1rdy10cmlwbGVkZXMtZGgueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNzaWctaG1hYy1zaGEyNTYta3ctdHJpcGxlZGVzLWRoLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWVmM2YxCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNzaWctaG1hYy1zaGEyNTYta3ctdHJpcGxlZGVzLWRoLnhtbApAQCAtMCwwICsxLDEwOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICA8U2lnbmVkSW5mbz4KKyAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPgorICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTI1NiIgLz4KKyAgICA8UmVmZXJlbmNlIFVSST0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sLXN0eWxlc2hlZXQiPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgPERpZ2VzdFZhbHVlPjYwTnZadnRkVEIrN1VubExwL0gyNHA3aDRicz08L0RpZ2VzdFZhbHVlPgorICAgIDwvUmVmZXJlbmNlPgorICA8L1NpZ25lZEluZm8+CisgIDxTaWduYXR1cmVWYWx1ZT4KKyAgICA5WEJwWWJGcGxOcXFGN1UvUXRDSFlFMjBVN29JeGN5Q3IwTDE5TWxlbk5vPQorICA8L1NpZ25hdHVyZVZhbHVlPgorICA8S2V5SW5mbz4KKyAgICA8RW5jcnlwdGVkS2V5IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPgorICAgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNrdy10cmlwbGVkZXMiIC8+CisgICAgICA8S2V5SW5mbyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgIDxBZ3JlZW1lbnRNZXRob2QgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyIgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNkaCI+CisgICAgICAgICAgPEtBLU5vbmNlPgorICAgICAgICAgICAgYm05dVkyVT0KKyAgICAgICAgICA8L0tBLU5vbmNlPgorICAgICAgICAgIDxEaWdlc3RNZXRob2QgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2IiAvPgorICAgICAgICAgIDxPcmlnaW5hdG9yS2V5SW5mbz4KKyAgICAgICAgICAgIDxLZXlWYWx1ZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgICAgICAgIDxESEtleVZhbHVlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPgorICAgICAgICAgICAgICAgIDxQPgorICAgICAgICAgICAgICAgICAgcGx5Z2wydU1OYytqWXRBWmVLQ1p4UHNtcWEyejhEck9VYTdMNDU1aXN6TjRTZFBuTCtMc1pENDdWSmF5dlFZOAorICAgICAgICAgICAgICAgICAgNkQxSjVhcmt3cmJVem1oTUFqQlpzRU5QQmdmZlJ3d0VCVGpvcStnalN5Wk5JYnhxc3FuSmRFeVVFbHpuNGtHRQorICAgICAgICAgICAgICAgICAgd2hFQ2tKR25PYVNjYWNwalpnMTFoK2dkMGlCZlkwOTFiR0hyQ1pydnIvOD0KKyAgICAgICAgICAgICAgICA8L1A+CisgICAgICAgICAgICAgICAgPFE+CisgICAgICAgICAgICAgICAgICA5akpYUWlqTm92b3E2UVVCRmNFVVl3VXZ5VE09CisgICAgICAgICAgICAgICAgPC9RPgorICAgICAgICAgICAgICAgIDxHZW5lcmF0b3I+CisgICAgICAgICAgICAgICAgICBQZXJVWmdNRU1EVGVnTWRUQlJHOURQWTVFSG13RHh3emxhZGRSY2Z2ZmRmVS85d2xQeno1QlVvdE1tNzMwSjlkCisgICAgICAgICAgICAgICAgICBsRjZhdldyOTI5ZnpZc25JT1VEZVVPSnBsdFhtclRZbnZ6NUJpNnl1VXU2YlZ3U2Z2N3U0UytJL0VNOVpCK2VZCisgICAgICAgICAgICAgICAgICAzZmRGNVRBTUhENHRLODZsdzVBUERyTjJRbk8xVU1Dd0l2ak9GYXRTT0kwPQorICAgICAgICAgICAgICAgIDwvR2VuZXJhdG9yPgorICAgICAgICAgICAgICAgIDxQdWJsaWM+CisgICAgICAgICAgICAgICAgICBVbHU2QjFsQ3dhanRJQm5vbHFxZ1UrUjFveGZ5ZTYzRG5JL2lMTS9PZStZOEkvTE1NYUVtbzNMbUNVMzBtODJyCisgICAgICAgICAgICAgICAgICBOeU9VcWdmbm05N1MwYlQ4WmhJOGd2dzBFeVFKODd2aGxVejRXY21kZFUvWWxUaTNnSkhVQ2xyMm9sbUJtUkN0CisgICAgICAgICAgICAgICAgICBtMnZLby9CcG9MR0owV2cxZXlXZm81NCtnQ3FiZU5lei9EbUJHY0JFRWhNPQorICAgICAgICAgICAgICAgIDwvUHVibGljPgorICAgICAgICAgICAgICA8L0RIS2V5VmFsdWU+CisgICAgICAgICAgICA8L0tleVZhbHVlPgorICAgICAgICAgICAgPFg1MDlEYXRhIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgICAgICAgPFg1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgICAgICAgICBNSUlEdmpDQ0EzNmdBd0lCQWdJR0FPeE4zOU1JTUFrR0J5cUdTTTQ0QkFNd2JqRUxNQWtHQTFVRUJoTUNTVVV4CisgICAgICAgICAgICAgICAgRHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbAorICAgICAgICAgICAgICAgIGN5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkIKKyAgICAgICAgICAgICAgICBNQjRYRFRBeU1ESXlPREUzTlRNeE5sb1hEVEF6TURJeU9ERTNOVEkxTkZvd2J6RUxNQWtHQTFVRUJoTUNTVVV4CisgICAgICAgICAgICAgICAgRHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbAorICAgICAgICAgICAgICAgIGN5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFV01CUUdBMVVFQXhNTlRXVnliR2x1SUVoMVoyaGwKKyAgICAgICAgICAgICAgICBjekNDQWlVd2dnR2FCZ2NxaGtqT1BnSUJNSUlCalFLQmdRQ21YS0NYYTR3MXo2TmkwQmw0b0puRSt5YXByYlB3CisgICAgICAgICAgICAgICAgT3M1UnJzdmpubUt6TTNoSjArY3Y0dXhrUGp0VWxySzlCanpvUFVubHF1VEN0dFRPYUV3Q01GbXdRMDhHQjk5SAorICAgICAgICAgICAgICAgIERBUUZPT2lyNkNOTEprMGh2R3F5cWNsMFRKUVNYT2ZpUVlUQ0VRS1FrYWM1cEp4cHltTm1EWFdINkIzU0lGOWoKKyAgICAgICAgICAgICAgICBUM1ZzWWVzSm11K3Yvd0tCZ0QzcTFHWURCREEwM29ESFV3VVJ2UXoyT1JCNXNBOGNNNVduWFVYSDczM1gxUC9jCisgICAgICAgICAgICAgICAgSlQ4OCtRVktMVEp1OTlDZlhaUmVtcjFxL2R2WDgyTEp5RGxBM2xEaWFaYlY1cTAySjc4K1FZdXNybEx1bTFjRQorICAgICAgICAgICAgICAgIG43Kzd1RXZpUHhEUFdRZm5tTjMzUmVVd0RCdytMU3ZPcGNPUUR3Nnpka0p6dFZEQXNDTDR6aFdyVWppTkFoVUEKKyAgICAgICAgICAgICAgICA5akpYUWlqTm92b3E2UVVCRmNFVVl3VXZ5VE1DYlFDcy9Ia0x1c0NxSG1ZNzFKeFVPRnp5NWZ1V2tQcFdYSnp4CisgICAgICAgICAgICAgICAgcVUzb3oxQmZNWnRQVXFqcEJucVU5N003VlVFZys1cFJHMnR4YUhQOFhObUIxYlkwRENFODhyaURtSFA3SHFaQgorICAgICAgICAgICAgICAgIFoyZ2JhSDJMeFhEUURheWI1R2NQZm4zOGVEY1d2VkFhS1A5Zko4d0c1UlV1M0FvRGdZUUFBb0dBVWx1NkIxbEMKKyAgICAgICAgICAgICAgICB3YWp0SUJub2xxcWdVK1Ixb3hmeWU2M0RuSS9pTE0vT2UrWThJL0xNTWFFbW8zTG1DVTMwbTgyck55T1VxZ2ZuCisgICAgICAgICAgICAgICAgbTk3UzBiVDhaaEk4Z3Z3MEV5UUo4N3ZobFV6NFdjbWRkVS9ZbFRpM2dKSFVDbHIyb2xtQm1SQ3RtMnZLby9CcAorICAgICAgICAgICAgICAgIG9MR0owV2cxZXlXZm81NCtnQ3FiZU5lei9EbUJHY0JFRWhPak9qQTRNQTRHQTFVZER3RUIvd1FFQXdJRENEQVIKKyAgICAgICAgICAgICAgICBCZ05WSFE0RUNnUUlnVUF3Qis5ZjFvSXdFd1lEVlIwakJBd3dDb0FJZ2pxaXNpWjFXVnN3Q1FZSEtvWkl6amdFCisgICAgICAgICAgICAgICAgQXdNdkFEQXNBaFE0MW1DVXNGaG14STU4dHl0VjhYRVZaT0N1VXdJVVZNZS9IYlVBSDVQSjdhUm9DTnFhM2ZDSQorICAgICAgICAgICAgICAgIGNVMD0KKyAgICAgICAgICAgICAgPC9YNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICA8L1g1MDlEYXRhPgorICAgICAgICAgIDwvT3JpZ2luYXRvcktleUluZm8+CisgICAgICAgICAgPFJlY2lwaWVudEtleUluZm8+CisgICAgICAgICAgICA8WDUwOURhdGEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgICAgICAgICA8WDUwOUNlcnRpZmljYXRlPgorICAgICAgICAgICAgICAgIE1JSUR2akNDQTM2Z0F3SUJBZ0lHQU94TjMrRU1NQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgKKyAgICAgICAgICAgICAgICBEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsCisgICAgICAgICAgICAgICAgY3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQgorICAgICAgICAgICAgICAgIE1CNFhEVEF5TURJeU9ERTNOVE14T1ZvWERUQXpNREl5T0RFM05USTFORm93YnpFTE1Ba0dBMVVFQmhNQ1NVVXgKKyAgICAgICAgICAgICAgICBEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsCisgICAgICAgICAgICAgICAgY3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVXTUJRR0ExVUVBeE1OVG1sc2NtVnRJRk5sYUdkMQorICAgICAgICAgICAgICAgIGFEQ0NBaVV3Z2dHYUJnY3Foa2pPUGdJQk1JSUJqUUtCZ1FDbVhLQ1hhNHcxejZOaTBCbDRvSm5FK3lhcHJiUHcKKyAgICAgICAgICAgICAgICBPczVScnN2am5tS3pNM2hKMCtjdjR1eGtQanRVbHJLOUJqem9QVW5scXVUQ3R0VE9hRXdDTUZtd1EwOEdCOTlICisgICAgICAgICAgICAgICAgREFRRk9PaXI2Q05MSmswaHZHcXlxY2wwVEpRU1hPZmlRWVRDRVFLUWthYzVwSnhweW1ObURYV0g2QjNTSUY5agorICAgICAgICAgICAgICAgIFQzVnNZZXNKbXUrdi93S0JnRDNxMUdZREJEQTAzb0RIVXdVUnZRejJPUkI1c0E4Y001V25YVVhINzMzWDFQL2MKKyAgICAgICAgICAgICAgICBKVDg4K1FWS0xUSnU5OUNmWFpSZW1yMXEvZHZYODJMSnlEbEEzbERpYVpiVjVxMDJKNzgrUVl1c3JsTHVtMWNFCisgICAgICAgICAgICAgICAgbjcrN3VFdmlQeERQV1Fmbm1OMzNSZVV3REJ3K0xTdk9wY09RRHc2emRrSnp0VkRBc0NMNHpoV3JVamlOQWhVQQorICAgICAgICAgICAgICAgIDlqSlhRaWpOb3ZvcTZRVUJGY0VVWXdVdnlUTUNiUUNzL0hrTHVzQ3FIbVk3MUp4VU9Genk1ZnVXa1BwV1hKengKKyAgICAgICAgICAgICAgICBxVTNvejFCZk1adFBVcWpwQm5xVTk3TTdWVUVnKzVwUkcydHhhSFA4WE5tQjFiWTBEQ0U4OHJpRG1IUDdIcVpCCisgICAgICAgICAgICAgICAgWjJnYmFIMkx4WERRRGF5YjVHY1BmbjM4ZURjV3ZWQWFLUDlmSjh3RzVSVXUzQW9EZ1lRQUFvR0FHU1lUMTlQYgorICAgICAgICAgICAgICAgIFZDeE10MDZjQVA3elFaNkFDNWVYcDN6ZUF3ZUlldlY5NnJ5QTFtQjAzcWhCOVgybFZvd0FVT0ZjMjRhVlJUejcKKyAgICAgICAgICAgICAgICB3Um9Sak5RMjBhdHpTeTIxQzd5WERrdlo0dXhmZHJwSXFwSVZySTI4ZTdYTCs2Q3JobkFrNjIxT3ZkZXlFejVICisgICAgICAgICAgICAgICAgb3JBMjFoUFhvQ05kblVQRzVJYjIwb29wTTg3cHRGNWR3aVdqT2pBNE1BNEdBMVVkRHdFQi93UUVBd0lEQ0RBUgorICAgICAgICAgICAgICAgIEJnTlZIUTRFQ2dRSWlEQ1NRM0ZCL29Fd0V3WURWUjBqQkF3d0NvQUlnanFpc2laMVdWc3dDUVlIS29aSXpqZ0UKKyAgICAgICAgICAgICAgICBBd012QURBc0FoUU10Wjk4VHlxVmtWcVVKM1JKcWFVN2wyeHFLZ0lVWDk5N3FScWVNakFrSzg4TkhlTmQ5NS8yCisgICAgICAgICAgICAgICAgWW9zPQorICAgICAgICAgICAgICA8L1g1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgICAgIDwvWDUwOURhdGE+CisgICAgICAgICAgPC9SZWNpcGllbnRLZXlJbmZvPgorICAgICAgICA8L0FncmVlbWVudE1ldGhvZD4KKyAgICAgIDwvS2V5SW5mbz4KKyAgICAgIDxDaXBoZXJEYXRhPgorICAgICAgICA8Q2lwaGVyVmFsdWU+CisgICAgICAgICAgMnMrMmppOG9wTDBTTEt6aWl5TlorbVo4SWJmdTdjVHdlNEMwTW15YXJZRHdHbXNpUlNxZmY4dHJIVXdhK25qWgorICAgICAgICA8L0NpcGhlclZhbHVlPgorICAgICAgPC9DaXBoZXJEYXRhPgorICAgIDwvRW5jcnlwdGVkS2V5PgorICA8L0tleUluZm8+Cis8L1NpZ25hdHVyZT4KZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZW5jc2lnLWhtYWMtc2hhMjU2LXJzYS0xXzUueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNzaWctaG1hYy1zaGEyNTYtcnNhLTFfNS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNjMjk4NwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZW5jc2lnLWhtYWMtc2hhMjU2LXJzYS0xXzUueG1sCkBAIC0wLDAgKzEsNDYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgPFNpZ25lZEluZm8+CisgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIgLz4KKyAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjaG1hYy1zaGEyNTYiIC8+CisgICAgPFJlZmVyZW5jZSBVUkk9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1zdHlsZXNoZWV0Ij4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZT42ME52WnZ0ZFRCKzdVbmxMcC9IMjRwN2g0YnM9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgorICA8U2lnbmF0dXJlVmFsdWU+CisgICAgOVhCcFliRnBsTnFxRjdVL1F0Q0hZRTIwVTdvSXhjeUNyMEwxOU1sZW5Obz0KKyAgPC9TaWduYXR1cmVWYWx1ZT4KKyAgPEtleUluZm8+CisgICAgPEVuY3J5cHRlZEtleSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj4KKyAgICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLTFfNSIgLz4KKyAgICAgIDxLZXlJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgPFg1MDlEYXRhPgorICAgICAgICAgIDxYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICBNSUlDa2pDQ0FmdWdBd0lCQWdJR0FPeE4zMkUrTUEwR0NTcUdTSWIzRFFFQkJRVUFNRzR4Q3pBSkJnTlZCQVlUCisgICAgICAgICAgICBBa2xGTVE4d0RRWURWUVFJRXdaRWRXSnNhVzR4SkRBaUJnTlZCQW9URzBKaGJIUnBiVzl5WlNCVVpXTm9ibTlzCisgICAgICAgICAgICBiMmRwWlhNZ1RIUmtMakVSTUE4R0ExVUVDeE1JV0M5VFpXTjFjbVV4RlRBVEJnTlZCQU1UREZSeVlXNXphV1Z1CisgICAgICAgICAgICBkQ0JEUVRBZUZ3MHdNakF5TWpneE56VXlORFphRncwd016QXlNamd4TnpVeU5EQmFNRzh4Q3pBSkJnTlZCQVlUCisgICAgICAgICAgICBBa2xGTVE4d0RRWURWUVFJRXdaRWRXSnNhVzR4SkRBaUJnTlZCQW9URzBKaGJIUnBiVzl5WlNCVVpXTm9ibTlzCisgICAgICAgICAgICBiMmRwWlhNZ1RIUmtMakVSTUE4R0ExVUVDeE1JV0M5VFpXTjFjbVV4RmpBVUJnTlZCQU1URFUxbGNteHBiaUJJCisgICAgICAgICAgICBkV2RvWlhNd2daOHdEUVlKS29aSWh2Y05BUUVCQlFBRGdZMEFNSUdKQW9HQkFPUmROU3hiTkZXbFFlTnNPbFlKCisgICAgICAgICAgICA5Z045ZVpEK3JndVJxS2htaE9tN2k2M1ZEZDVBTG0yQVBYaHFBbUdCUHpMTjVqbEw5ZzJYQUxLNVdTTzRYS2pKCisgICAgICAgICAgICBNY1ZmWWc0K25QdU9lSGdxZEQ0SFVnZjE5ai82U2FUTWNtREZKUU1teDFRdytBYWtxM21HY1Nmdk9KY0JaY3R6CisgICAgICAgICAgICBhNTBWdWNmQ0dMMU5kZkJFY2FMM0JuaGpBZ01CQUFHak9qQTRNQTRHQTFVZER3RUIvd1FFQXdJRm9EQVJCZ05WCisgICAgICAgICAgICBIUTRFQ2dRSWpGRzBaR055dk5zd0V3WURWUjBqQkF3d0NvQUloSlhWbGhyNk80d3dEUVlKS29aSWh2Y05BUUVGCisgICAgICAgICAgICBCUUFEZ1lFQVh6Rzd4NWFDSllSdXNUYm11WnFoaWRHTTVpaUE5K1JtWjRKVFBERWdiZWlUaUpST3hwcitaam5BCisgICAgICAgICAgICBUbXNES3JDcHFOVWlIV2ptc0tFQXJZUXA4Ui9LamRLbC9wVmUzalV2VHhiMFlaK2xpLzdrMEdRNUx5UlQvSzRjCisgICAgICAgICAgICAyU2d5TGx5QlBocE1xK3ozZzRQMmVnVlJhWmJ4c0x1S1FJTGY3TUlWL1g1aUFFQnp1MXc9CisgICAgICAgICAgPC9YNTA5Q2VydGlmaWNhdGU+CisgICAgICAgIDwvWDUwOURhdGE+CisgICAgICA8L0tleUluZm8+CisgICAgICA8Q2lwaGVyRGF0YT4KKyAgICAgICAgPENpcGhlclZhbHVlPgorICAgICAgICAgIEJSaFBPS04vS0xDaWgyUTJSb3hRaWFWMHMxRmZwT00ra2lzbDlNd1JTUG93NUN5WDkxckJWZm9XcFAvUXExVDMKKyAgICAgICAgICBSai9mMGdWb0p5RTAwOHVMaWM0WC9TNHNwbnVkbE96VGtWQjZiVXpvQnQ0ait6NGhFcS9jSWZIcVZkRUorbE4wCisgICAgICAgICAgaXUxc0prM2s2RVNsMjJPV0VxUUI3Umw1c0FkaEZQT3FYc25MVU5XbXFBOD0KKyAgICAgICAgPC9DaXBoZXJWYWx1ZT4KKyAgICAgIDwvQ2lwaGVyRGF0YT4KKyAgICA8L0VuY3J5cHRlZEtleT4KKyAgPC9LZXlJbmZvPgorPC9TaWduYXR1cmU+CmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3NpZy1obWFjLXNoYTI1Ni1yc2Etb2FlcC1tZ2YxcC54bWwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3NpZy1obWFjLXNoYTI1Ni1yc2Etb2FlcC1tZ2YxcC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc3OTA5MwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZW5jc2lnLWhtYWMtc2hhMjU2LXJzYS1vYWVwLW1nZjFwLnhtbApAQCAtMCwwICsxLDUxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgIDxTaWduZWRJbmZvPgorICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiIC8+CisgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2htYWMtc2hhMjU2IiAvPgorICAgIDxSZWZlcmVuY2UgVVJJPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldCI+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWU+NjBOdlp2dGRUQis3VW5sTHAvSDI0cDdoNGJzPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgIDwvU2lnbmVkSW5mbz4KKyAgPFNpZ25hdHVyZVZhbHVlPgorICAgIDlYQnBZYkZwbE5xcUY3VS9RdENIWUUyMFU3b0l4Y3lDcjBMMTlNbGVuTm89CisgIDwvU2lnbmF0dXJlVmFsdWU+CisgIDxLZXlJbmZvPgorICAgIDxFbmNyeXB0ZWRLZXkgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+CisgICAgICA8RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3JzYS1vYWVwLW1nZjFwIj4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPE9BRVBwYXJhbXM+CisgICAgICAgICAgTVRJek5EVTJOemc9CisgICAgICAgIDwvT0FFUHBhcmFtcz4KKyAgICAgIDwvRW5jcnlwdGlvbk1ldGhvZD4KKyAgICAgIDxLZXlJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgPFg1MDlEYXRhPgorICAgICAgICAgIDxYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICBNSUlDa2pDQ0FmdWdBd0lCQWdJR0FPeE4zMkUrTUEwR0NTcUdTSWIzRFFFQkJRVUFNRzR4Q3pBSkJnTlZCQVlUCisgICAgICAgICAgICBBa2xGTVE4d0RRWURWUVFJRXdaRWRXSnNhVzR4SkRBaUJnTlZCQW9URzBKaGJIUnBiVzl5WlNCVVpXTm9ibTlzCisgICAgICAgICAgICBiMmRwWlhNZ1RIUmtMakVSTUE4R0ExVUVDeE1JV0M5VFpXTjFjbVV4RlRBVEJnTlZCQU1UREZSeVlXNXphV1Z1CisgICAgICAgICAgICBkQ0JEUVRBZUZ3MHdNakF5TWpneE56VXlORFphRncwd016QXlNamd4TnpVeU5EQmFNRzh4Q3pBSkJnTlZCQVlUCisgICAgICAgICAgICBBa2xGTVE4d0RRWURWUVFJRXdaRWRXSnNhVzR4SkRBaUJnTlZCQW9URzBKaGJIUnBiVzl5WlNCVVpXTm9ibTlzCisgICAgICAgICAgICBiMmRwWlhNZ1RIUmtMakVSTUE4R0ExVUVDeE1JV0M5VFpXTjFjbVV4RmpBVUJnTlZCQU1URFUxbGNteHBiaUJJCisgICAgICAgICAgICBkV2RvWlhNd2daOHdEUVlKS29aSWh2Y05BUUVCQlFBRGdZMEFNSUdKQW9HQkFPUmROU3hiTkZXbFFlTnNPbFlKCisgICAgICAgICAgICA5Z045ZVpEK3JndVJxS2htaE9tN2k2M1ZEZDVBTG0yQVBYaHFBbUdCUHpMTjVqbEw5ZzJYQUxLNVdTTzRYS2pKCisgICAgICAgICAgICBNY1ZmWWc0K25QdU9lSGdxZEQ0SFVnZjE5ai82U2FUTWNtREZKUU1teDFRdytBYWtxM21HY1Nmdk9KY0JaY3R6CisgICAgICAgICAgICBhNTBWdWNmQ0dMMU5kZkJFY2FMM0JuaGpBZ01CQUFHak9qQTRNQTRHQTFVZER3RUIvd1FFQXdJRm9EQVJCZ05WCisgICAgICAgICAgICBIUTRFQ2dRSWpGRzBaR055dk5zd0V3WURWUjBqQkF3d0NvQUloSlhWbGhyNk80d3dEUVlKS29aSWh2Y05BUUVGCisgICAgICAgICAgICBCUUFEZ1lFQVh6Rzd4NWFDSllSdXNUYm11WnFoaWRHTTVpaUE5K1JtWjRKVFBERWdiZWlUaUpST3hwcitaam5BCisgICAgICAgICAgICBUbXNES3JDcHFOVWlIV2ptc0tFQXJZUXA4Ui9LamRLbC9wVmUzalV2VHhiMFlaK2xpLzdrMEdRNUx5UlQvSzRjCisgICAgICAgICAgICAyU2d5TGx5QlBocE1xK3ozZzRQMmVnVlJhWmJ4c0x1S1FJTGY3TUlWL1g1aUFFQnp1MXc9CisgICAgICAgICAgPC9YNTA5Q2VydGlmaWNhdGU+CisgICAgICAgIDwvWDUwOURhdGE+CisgICAgICA8L0tleUluZm8+CisgICAgICA8Q2lwaGVyRGF0YT4KKyAgICAgICAgPENpcGhlclZhbHVlPgorICAgICAgICAgIE5HSU9MOVV6aEd3UFl2VnpiQnhPR3p4WGZUSWt6SXNtdE5Ta1dBMDNwNjRhUzQxdlZBMHNLV3Zjci83OU5mN1QKKyAgICAgICAgICA2UmRBNjFUbXdPS2E1R0RVWVJ1bUVhZEM3WjB6S0ZES2N1Tjc4aUp6bGoyV3dWcXI1dkJ4MTRYMkJTVlcrZGUxCisgICAgICAgICAgVVRtWFJaRlJvc0ZPazlldHZEN0xtMVYra3FJeHFTcm9kNjhHOGdKdkdyWT0KKyAgICAgICAgPC9DaXBoZXJWYWx1ZT4KKyAgICAgIDwvQ2lwaGVyRGF0YT4KKyAgICA8L0VuY3J5cHRlZEtleT4KKyAgPC9LZXlJbmZvPgorPC9TaWduYXR1cmU+CmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3NpZy1yaXBlbWQxNjAtaG1hYy1yaXBlbWQxNjAta3ctdHJpcGxlZGVzLnhtbCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZW5jc2lnLXJpcGVtZDE2MC1obWFjLXJpcGVtZDE2MC1rdy10cmlwbGVkZXMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzMjgwMGIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3NpZy1yaXBlbWQxNjAtaG1hYy1yaXBlbWQxNjAta3ctdHJpcGxlZGVzLnhtbApAQCAtMCwwICsxLDI3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgIDxTaWduZWRJbmZvPgorICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiIC8+CisgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2htYWMtcmlwZW1kMTYwIiAvPgorICAgIDxSZWZlcmVuY2UgVVJJPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldCI+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcmlwZW1kMTYwIiAvPgorICAgICAgPERpZ2VzdFZhbHVlPml4djlacElpcUV6QkMzVXp0bTVSbDZ0WGQ5UT08L0RpZ2VzdFZhbHVlPgorICAgIDwvUmVmZXJlbmNlPgorICA8L1NpZ25lZEluZm8+CisgIDxTaWduYXR1cmVWYWx1ZT4KKyAgICBrd1Y0dUVMTDk2b0ZtOC8rVkd6cSt4QU9nVWc9CisgIDwvU2lnbmF0dXJlVmFsdWU+CisgIDxLZXlJbmZvPgorICAgIDxFbmNyeXB0ZWRLZXkgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+CisgICAgICA8RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2t3LXRyaXBsZWRlcyIgLz4KKyAgICAgIDxLZXlJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgPEtleU5hbWU+Ym9iPC9LZXlOYW1lPgorICAgICAgPC9LZXlJbmZvPgorICAgICAgPENpcGhlckRhdGE+CisgICAgICAgIDxDaXBoZXJWYWx1ZT4KKyAgICAgICAgICBnSE1weDVpRjcrS1h0TkhMYXNacmtjTEhuOFRpNHJ4VWpDSVJLK0ljZ2JRaXI2RlVzUS91eFEzbzhlbkVNV3ExCisgICAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgICA8L0NpcGhlckRhdGE+CisgICAgPC9FbmNyeXB0ZWRLZXk+CisgIDwvS2V5SW5mbz4KKzwvU2lnbmF0dXJlPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNzaWctc2hhMjU2LWhtYWMtc2hhMjU2LWt3LWFlczEyOC54bWwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3NpZy1zaGEyNTYtaG1hYy1zaGEyNTYta3ctYWVzMTI4LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzU1MTBjCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNzaWctc2hhMjU2LWhtYWMtc2hhMjU2LWt3LWFlczEyOC54bWwKQEAgLTAsMCArMSwyNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICA8U2lnbmVkSW5mbz4KKyAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPgorICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTI1NiIgLz4KKyAgICA8UmVmZXJlbmNlIFVSST0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sLXN0eWxlc2hlZXQiPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZT5lSTFPTFZTdG42WjRxN0J5cThYR1VKNGJjZTFMTVNsYW5JNm8rU3ZZenQwPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgIDwvU2lnbmVkSW5mbz4KKyAgPFNpZ25hdHVyZVZhbHVlPgorICAgIGNPUUdKRTNkM2ZYaTFCSWZkdnIxdjZ0ei80bHQ5eEd6bmZ5RFBYRXZjNFE9CisgIDwvU2lnbmF0dXJlVmFsdWU+CisgIDxLZXlJbmZvPgorICAgIDxFbmNyeXB0ZWRLZXkgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+CisgICAgICA8RW5jcnlwdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2t3LWFlczEyOCIgLz4KKyAgICAgIDxLZXlJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgPEtleU5hbWU+am9iPC9LZXlOYW1lPgorICAgICAgPC9LZXlJbmZvPgorICAgICAgPENpcGhlckRhdGE+CisgICAgICAgIDxDaXBoZXJWYWx1ZT4KKyAgICAgICAgICByUG5ZL1hvU0dDYnV3eTd2cHNsZjI5cnM5ZGJ2U0NtR0ZPakVzM0xUNmcvcXlaamZEQSsyZlE9PQorICAgICAgICA8L0NpcGhlclZhbHVlPgorICAgICAgPC9DaXBoZXJEYXRhPgorICAgIDwvRW5jcnlwdGVkS2V5PgorICA8L0tleUluZm8+Cis8L1NpZ25hdHVyZT4KZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZW5jc2lnLXNoYTM4NC1obWFjLXNoYTM4NC1rdy1hZXMxOTIueG1sIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNzaWctc2hhMzg0LWhtYWMtc2hhMzg0LWt3LWFlczE5Mi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM2YWJhMgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZW5jc2lnLXNoYTM4NC1obWFjLXNoYTM4NC1rdy1hZXMxOTIueG1sCkBAIC0wLDAgKzEsMjcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgPFNpZ25lZEluZm8+CisgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIgLz4KKyAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjaG1hYy1zaGEzODQiIC8+CisgICAgPFJlZmVyZW5jZSBVUkk9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1zdHlsZXNoZWV0Ij4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNzaGEzODQiIC8+CisgICAgICA8RGlnZXN0VmFsdWU+YldldEdEVjNNNW9FaWVjZkVISUxReFZRUmExWGdkWTM3Vkg4ZVdpOXlWVng3UnI3VU5oayt2NkprN3NNTlBvQTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgIDwvU2lnbmVkSW5mbz4KKyAgPFNpZ25hdHVyZVZhbHVlPgorICAgIGlFamhPSm9LaXdzT0JkdXhIajdieElMU3NsNlRMaE5PM3cvdmxSY3c5UlpBZTI0SEl4TFJmaGo0WHFzejFPcnIKKyAgPC9TaWduYXR1cmVWYWx1ZT4KKyAgPEtleUluZm8+CisgICAgPEVuY3J5cHRlZEtleSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIj4KKyAgICAgIDxFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMja3ctYWVzMTkyIiAvPgorICAgICAgPEtleUluZm8geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgICA8S2V5TmFtZT5qZWI8L0tleU5hbWU+CisgICAgICA8L0tleUluZm8+CisgICAgICA8Q2lwaGVyRGF0YT4KKyAgICAgICAgPENpcGhlclZhbHVlPgorICAgICAgICAgIDE5RDYzM1hWb2hQNlVKdmFWUkFoSmVrK2FodE0zZ09pVnM2blp5QWFzREViK1dDVVFPY1dadz09CisgICAgICAgIDwvQ2lwaGVyVmFsdWU+CisgICAgICA8L0NpcGhlckRhdGE+CisgICAgPC9FbmNyeXB0ZWRLZXk+CisgIDwvS2V5SW5mbz4KKzwvU2lnbmF0dXJlPgpkaWZmIC0tZ2l0IGEvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNzaWctc2hhNTEyLWhtYWMtc2hhNTEyLWt3LWFlczI1Ni54bWwgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3NpZy1zaGE1MTItaG1hYy1zaGE1MTIta3ctYWVzMjU2LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWRmYWZkCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNzaWctc2hhNTEyLWhtYWMtc2hhNTEyLWt3LWFlczI1Ni54bWwKQEAgLTAsMCArMSwyOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICA8U2lnbmVkSW5mbz4KKyAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPgorICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTUxMiIgLz4KKyAgICA8UmVmZXJlbmNlIFVSST0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sLXN0eWxlc2hlZXQiPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTUxMiIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZT5jOCtLVDkrcUNTYk5wZFptNy9kcDlNdi9sZ0Y1MUFUeWNZMFR0ei8wYncycDVudm5tZUVnUXBJUHc1SGhWSjlLdTZkRGYwUktWVlIvQ3NZdlBHZm5FZz09PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgorICA8U2lnbmF0dXJlVmFsdWU+CisgICAgekI4WlVvOWJReHp4bnhXMmFaMjE3ZXUvLzFlNXhIQjZSbGZFT0ZPbHgxbDVQSWhhZEtBbFFvMHoxRDlCMkhWVQorICAgIEtqNFN0U25sVXNydkRvMkJ4Z2lBb0E9PQorICA8L1NpZ25hdHVyZVZhbHVlPgorICA8S2V5SW5mbz4KKyAgICA8RW5jcnlwdGVkS2V5IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiPgorICAgICAgPEVuY3J5cHRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNrdy1hZXMyNTYiIC8+CisgICAgICA8S2V5SW5mbyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgIDxLZXlOYW1lPmplZDwvS2V5TmFtZT4KKyAgICAgIDwvS2V5SW5mbz4KKyAgICAgIDxDaXBoZXJEYXRhPgorICAgICAgICA8Q2lwaGVyVmFsdWU+CisgICAgICAgICAgdFBDQzg5alFTaEIrV0RJTkNkUmZLZ2Y4d1RsQXg4eFJYRDczUm1FSFBCZml4OHpTMU44MktRPT0KKyAgICAgICAgPC9DaXBoZXJWYWx1ZT4KKyAgICAgIDwvQ2lwaGVyRGF0YT4KKyAgICA8L0VuY3J5cHRlZEtleT4KKyAgPC9LZXlJbmZvPgorPC9TaWduYXR1cmU+CmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2lkcy5wMTIgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2lkcy5wMTIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTAzOTYwZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvaWRzLnAxMgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL3BsYWludGV4dC50eHQgYi9kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL3BsYWludGV4dC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQwNGFjMwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvcGxhaW50ZXh0LnR4dApAQCAtMCwwICsxIEBACit0b3Agc2VjcmV0IG1lc3NhZ2UKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvcGxhaW50ZXh0LnhtbCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvcGxhaW50ZXh0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjkwNzk4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9wbGFpbnRleHQueG1sCkBAIC0wLDAgKzEsMjQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8UHVyY2hhc2VPcmRlciB4bWxucz0idXJuOmV4YW1wbGU6cG8iPgorICA8SXRlbXM+CisgICAgPEl0ZW0gQ29kZT0iMDAxLTAwMS0wMDEiIFF1YW50aXR5PSIxIj4KKyAgICAgIHNwYWRlCisgICAgPC9JdGVtPgorICAgIDxJdGVtIENvZGU9IjAwMS0wMDEtMDAyIiBRdWFudGl0eT0iMSI+CisgICAgICBzaG92ZWwKKyAgICA8L0l0ZW0+CisgIDwvSXRlbXM+CisgIDxTaGlwcGluZ0FkZHJlc3M+CisgICAgRGlnIFBMQywgMSBGaXJzdCBBdmUsIER1YmxpbiAxLCBJcmVsYW5kCisgIDwvU2hpcHBpbmdBZGRyZXNzPgorICA8UGF5bWVudEluZm8+CisgICAgPEJpbGxpbmdBZGRyZXNzPgorICAgICAgRGlnIFBMQywgMSBGaXJzdCBBdmUsIER1YmxpbiAxLCBJcmVsYW5kCisgICAgPC9CaWxsaW5nQWRkcmVzcz4KKyAgICA8Q3JlZGl0Q2FyZCBUeXBlPSJBbWV4Ij4KKyAgICAgIDxOYW1lPkZvbyBCIEJhejwvTmFtZT4KKyAgICAgIDxOdW1iZXI+MTIzNCA1Njc4OTAgMTIzNDU8L051bWJlcj4KKyAgICAgIDxFeHBpcmVzIE1vbnRoPSIxIiBZZWFyPSIyMDA1IiAvPgorICAgIDwvQ3JlZGl0Q2FyZD4KKyAgPC9QYXltZW50SW5mbz4KKzwvUHVyY2hhc2VPcmRlcj4KZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvcnNhLnA4IGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9yc2EucDgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE3ZDgyOAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvcnNhLnA4CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy91cmxzLnR4dCBiL2RhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy91cmxzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTJlNTRhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL3VybHMudHh0CkBAIC0wLDAgKzEsMTUgQEAKK0V4YW1wbGVzIGJ5IG1lcmxpbkBiYWx0aW1vcmUuaWUKKworaHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvdzNjLWlldGYteG1sZHNpZy8yMDAwSnVsU2VwL2F0dC0wMTUzLzAxLW1lcmxpbi14bWxkc2lnLnRhci5negoraHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvdzNjLWlldGYteG1sZHNpZy8yMDAwSnVsU2VwL2F0dC0wMjM1LzAxLW1lcmxpbi14bWxkc2lnLXRocmVlLnRhci5negoraHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvdzNjLWlldGYteG1sZHNpZy8yMDAwT2N0RGVjL2F0dC0wMDM2LzAxLW1lcmxpbi14bWxkc2lnLXNldmVuLnRhci5negoraHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvdzNjLWlldGYteG1sZHNpZy8yMDAwT2N0RGVjL2F0dC0wMDU5LzAxLW1lcmxpbi14bWxkc2lnLWVpZ2h0LnRhci5negoraHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvdzNjLWlldGYteG1sZHNpZy8yMDAwT2N0RGVjL2F0dC0wMDY1LzAxLW1lcmxpbi14bWxkc2lnLW5pbmUudGFyLmd6CitodHRwOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93M2MtaWV0Zi14bWxkc2lnLzIwMDFKYW5NYXIvYXR0LTAxMzkvMDEtbWVybGluLXhtbGRzaWctdHdlbHZlLnRhci5negoraHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvdzNjLWlldGYteG1sZHNpZy8yMDAxSmFuTWFyL2F0dC0wMTM5LzAyLW1lcmxpbi14bWxkc2lnLXRoaXJ0ZWVuLnRhci5negoraHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvdzNjLWlldGYteG1sZHNpZy8yMDAxSmFuTWFyL2F0dC0wMTU1LzAzLW1lcmxpbi14bWxkc2lnLWZvdXJ0ZWVuLnRhci5negoraHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvdzNjLWlldGYteG1sZHNpZy8yMDAxSmFuTWFyL2F0dC0wMTU1LzA0LW1lcmxpbi14bWxkc2lnLWZpZnRlZW4udGFyLmd6CitodHRwOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93M2MtaWV0Zi14bWxkc2lnLzIwMDFBcHJKdW4vYXR0LTAwMzMvMDEtbWVybGluLXhtbGRzaWctc2l4dGVlbi50YXIuZ3oKK2h0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3czYy1pZXRmLXhtbGRzaWcvMjAwMUFwckp1bi9hdHQtMDExMC8wMS1tZXJsaW4teG1sZHNpZy1zZXZlbnRlZW4udGFyLmd6CitodHRwOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93M2MtaWV0Zi14bWxkc2lnLzIwMDFBcHJKdW4vYXR0LTAxMjQvMDEtbWVybGluLXhtbGRzaWctZWlnaHRlZW4udGFyLmd6CitodHRwOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93M2MtaWV0Zi14bWxkc2lnLzIwMDJBcHJKdW4vYXR0LTAwMTYvMDEtbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlLnRhci5negpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTEvLmN2c2lnbm9yZSBiL2RhdGEvaW50ZXJvcC9jMTRuL1kxLy5jdnNpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWEwYzdmMQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1kxLy5jdnNpZ25vcmUKQEAgLTAsMCArMSBAQAorYzE0bi0qLmFwYWNoZS5odG1sCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZMS9SZWFkbWUudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTEvUmVhZG1lLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmExY2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTEvUmVhZG1lLnR4dApAQCAtMCwwICsxLDMgQEAKK3VudGVzdGVkIGV4Y2x1c2l2ZSBjMTRuIGV4YW1wbGUgc2lnbmF0dXJlICsgYzE0biBvdXRwdXQKK21lcmxpbkBiYWx0aW1vcmUuaWUKK21vbiBqYW4gMTQgMjAwMgpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTEvYzE0bi0wLmh0bWwgYi9kYXRhL2ludGVyb3AvYzE0bi9ZMS9jMTRuLTAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzZiY2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTEvYzE0bi0wLmh0bWwKQEAgLTAsMCArMSwxMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DYW5pbmljYWwgWE1MIG5vZGUgc2V0PC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cis8IS0tIAorLklOQ0xVREVEIHsgCisgICBjb2xvcjogIzAwMDAwMDsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IH0gCisuRVhDTFVERUQgeyAKKyAgIGNvbG9yOiAjNjY2NjY2OyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgIzk5OTk5OTsgfSAKKy5JTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCisuRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICM5OTk5OTk7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLS0+IAorPC9zdHlsZT4gCis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSIjOTk5OTk5Ij4KKzxoMT5FeHBsYW5hdGlvbiBvZiB0aGUgb3V0cHV0PC9oMT4KKzxwPlRoZSBmb2xsb3dpbmcgdGV4dCBjb250YWlucyB0aGUgbm9kZXNldCBvZiB0aGUgZ2l2ZW4gUmVmZXJlbmNlIGJlZm9yZSBpdCBpcyBjYW5vbmljYWxpemVkLiBUaGVyZSBleGlzdCBmb3VyIGRpZmZlcmVudCBzdHlsZXMgdG8gaW5kaWNhdGUgaG93IGEgZ2l2ZW4gbm9kZSBpcyB0cmVhdGVkLjwvcD4KKzx1bD4KKzxsaSBjbGFzcz0iSU5DTFVERUQiPkEgbm9kZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERUQiPkEgbm9kZSB3aGljaCBpcyA8ZW0+Tk9UPC9lbT4gaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgRVhDTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gTk9UIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPC91bD4KKzxoMT5PdXRwdXQ8L2gxPgorPHByZT4KKzxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0Zvbzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWw6c3BhY2U9InByZXNlcnZlIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6U2lnbmF0dXJlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOlNpZ25lZEluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOlNpZ25hdHVyZU1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlNpZ25hdHVyZU1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOlJlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiN4cG9pbnRlcihpZCgndG8tYmUtc2lnbmVkJykpIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpUcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpUcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOkRpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+N3lPVGpVdSs5b0VoU2hneUlJWERMalEwOGFZPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpEaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpSZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIjeHBvaW50ZXIoaWQoJ3RvLWJlLXNpZ25lZCcpKSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOlRyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iYmFyICNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlRyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlRyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOkRpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6RGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4wOXhNeTBSVFFNMVE5MWRlbVllLzBGNkFHWG89PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOkRpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlJlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOlJlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiN4cG9pbnRlcihpZCgndG8tYmUtc2lnbmVkJykpIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biNXaXRoQ29tbWVudHMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpUcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpUcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOkRpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+WlFIK1NrQ044YzV5MGZlQXIrYVJUWkR3eXZZPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpEaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpSZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIjeHBvaW50ZXIoaWQoJ3RvLWJlLXNpZ25lZCcpKSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOlRyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jV2l0aENvbW1lbnRzIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iYmFyICNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlRyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlRyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOkRpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6RGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5hMWNUcUJnYnFwVXQ2Yk1KTjRDNnpGdG5veW89PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOkRpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlJlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6U2lnbmVkSW5mbyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpTaWduYXR1cmVWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIEt2MWU3S2poejRnRnRPWktndkM1Y0xZdE1RTkluOTlmeUxCYTZELy9iQm9rVHhUVUVrTXdhQT09CisgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlNpZ25hdHVyZVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOktleUluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpLZXlWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6RFNBS2V5VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6UDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIDhGa0pnd2R5aXpWNVZkMG02REEvRFpzZHdlSmRua3VlWVZVZDdMOGFBNEpwWnhybENJL003bURFL09HaEVoZ0IKKyAgICAgICAgICAgIG5GelNUckJqU0ZwVDdERzY2dXk3b0plRStSZ2tYTzdFV1dPRWdsTVB3YVpnR2dpMW9aYXJ2OTVWT3gzdU84VzgKKyAgICAgICAgICAgIEw3K1MvM0F1SE5VWlFENGI1YnBkWUFtalhGd3o2ZGwwbUtpWEF2VnVQOUU9CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlAmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6UTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIG1GZjhEaU1WTkZYeTB2YWc5b05HTlcvZzR1MD0KKyAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6USZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpHPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgZzhnUmRObHE5RU9UUjJUam1WQXBxQ0FaQXEzakVqT0l4WGJzOEpCaVorVTdkVjlnZWVYRXkxM0diWW9QMjNRcgorICAgICAgICAgICAgYXBaUW8rMzVkaXcrY01ZUEhqTitpVUN3VWtpR1d2Ny9waUFLK09vdGZ3MDNldEw4WGlWV2p0TDVOQm9mMkNOcAorICAgICAgICAgICAgd21BdzdtcndtTkcwOTJ5MWU2SFhTR01NWnBhb3RoL1A4eGhzeENRc3FJOD0KKyAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6RyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpZPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgajBWMTRkYy9JK29rREFlRzRaYldVemIzSFRGa0VPQzZmZU9NbzVEazIxOEdjUHFFS3JvVkhhREJGOUNtUlYxdgorICAgICAgICAgICAgQjhNVU9FeEIrNlpOSGZjczVWYXcwSFZuNjJZaUVCenJtS2lreDZTeE80RGc5TDhJNVdiSG4zN3Z4VUt2SHM4cgorICAgICAgICAgICAgNytybWEza3BaUWZ0VE1pQnBKOFhLOFo2amc4Vmh1SnFvOXlaWk8rcDNJMD0KKyAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6WSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOkRTQUtleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOktleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpLZXlJbmZvJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtkc2lnOk9iamVjdDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiBJZD0idG8tYmUtc2lnbmVkIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtiYXI6QmF6PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPgorICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7IS0tICBjb21tZW50IC0tJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPgorICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9iYXI6QmF6Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPgorICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvZHNpZzpPYmplY3QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpTaWduYXR1cmUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0ZvbyZndDs8L3NwYW4+PC9wcmU+PC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZMS9jMTRuLTAudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTEvYzE0bi0wLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODhmMWFiCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTEvYzE0bi0wLnR4dApAQCAtMCwwICsxLDUgQEAKKzxkc2lnOk9iamVjdCB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiBJZD0idG8tYmUtc2lnbmVkIj4KKyAgICAgIDxiYXI6QmF6IHhtbG5zOmJhcj0idXJuOmJhciI+CisgICAgICAgIAorICAgICAgPC9iYXI6QmF6PgorICAgIDwvZHNpZzpPYmplY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTEvYzE0bi0xLmh0bWwgYi9kYXRhL2ludGVyb3AvYzE0bi9ZMS9jMTRuLTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTg4YTU4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTEvYzE0bi0xLmh0bWwKQEAgLTAsMCArMSwxMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DYW5pbmljYWwgWE1MIG5vZGUgc2V0PC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cis8IS0tIAorLklOQ0xVREVEIHsgCisgICBjb2xvcjogIzAwMDAwMDsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IH0gCisuRVhDTFVERUQgeyAKKyAgIGNvbG9yOiAjNjY2NjY2OyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgIzk5OTk5OTsgfSAKKy5JTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCisuRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICM5OTk5OTk7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLS0+IAorPC9zdHlsZT4gCis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSIjOTk5OTk5Ij4KKzxoMT5FeHBsYW5hdGlvbiBvZiB0aGUgb3V0cHV0PC9oMT4KKzxwPlRoZSBmb2xsb3dpbmcgdGV4dCBjb250YWlucyB0aGUgbm9kZXNldCBvZiB0aGUgZ2l2ZW4gUmVmZXJlbmNlIGJlZm9yZSBpdCBpcyBjYW5vbmljYWxpemVkLiBUaGVyZSBleGlzdCBmb3VyIGRpZmZlcmVudCBzdHlsZXMgdG8gaW5kaWNhdGUgaG93IGEgZ2l2ZW4gbm9kZSBpcyB0cmVhdGVkLjwvcD4KKzx1bD4KKzxsaSBjbGFzcz0iSU5DTFVERUQiPkEgbm9kZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERUQiPkEgbm9kZSB3aGljaCBpcyA8ZW0+Tk9UPC9lbT4gaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgRVhDTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gTk9UIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPC91bD4KKzxoMT5PdXRwdXQ8L2gxPgorPHByZT4KKzxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0Zvbzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWw6c3BhY2U9InByZXNlcnZlIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6U2lnbmF0dXJlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOlNpZ25lZEluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOlNpZ25hdHVyZU1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlNpZ25hdHVyZU1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOlJlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiN4cG9pbnRlcihpZCgndG8tYmUtc2lnbmVkJykpIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpUcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpUcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOkRpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+N3lPVGpVdSs5b0VoU2hneUlJWERMalEwOGFZPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpEaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpSZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIjeHBvaW50ZXIoaWQoJ3RvLWJlLXNpZ25lZCcpKSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOlRyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iYmFyICNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlRyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlRyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOkRpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6RGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4wOXhNeTBSVFFNMVE5MWRlbVllLzBGNkFHWG89PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOkRpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlJlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOlJlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiN4cG9pbnRlcihpZCgndG8tYmUtc2lnbmVkJykpIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biNXaXRoQ29tbWVudHMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpUcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpUcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOkRpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+WlFIK1NrQ044YzV5MGZlQXIrYVJUWkR3eXZZPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpEaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpSZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIjeHBvaW50ZXIoaWQoJ3RvLWJlLXNpZ25lZCcpKSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOlRyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jV2l0aENvbW1lbnRzIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iYmFyICNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlRyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlRyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOkRpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6RGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5hMWNUcUJnYnFwVXQ2Yk1KTjRDNnpGdG5veW89PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOkRpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlJlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6U2lnbmVkSW5mbyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpTaWduYXR1cmVWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIEt2MWU3S2poejRnRnRPWktndkM1Y0xZdE1RTkluOTlmeUxCYTZELy9iQm9rVHhUVUVrTXdhQT09CisgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlNpZ25hdHVyZVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOktleUluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpLZXlWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6RFNBS2V5VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6UDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIDhGa0pnd2R5aXpWNVZkMG02REEvRFpzZHdlSmRua3VlWVZVZDdMOGFBNEpwWnhybENJL003bURFL09HaEVoZ0IKKyAgICAgICAgICAgIG5GelNUckJqU0ZwVDdERzY2dXk3b0plRStSZ2tYTzdFV1dPRWdsTVB3YVpnR2dpMW9aYXJ2OTVWT3gzdU84VzgKKyAgICAgICAgICAgIEw3K1MvM0F1SE5VWlFENGI1YnBkWUFtalhGd3o2ZGwwbUtpWEF2VnVQOUU9CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlAmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6UTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIG1GZjhEaU1WTkZYeTB2YWc5b05HTlcvZzR1MD0KKyAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6USZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpHPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgZzhnUmRObHE5RU9UUjJUam1WQXBxQ0FaQXEzakVqT0l4WGJzOEpCaVorVTdkVjlnZWVYRXkxM0diWW9QMjNRcgorICAgICAgICAgICAgYXBaUW8rMzVkaXcrY01ZUEhqTitpVUN3VWtpR1d2Ny9waUFLK09vdGZ3MDNldEw4WGlWV2p0TDVOQm9mMkNOcAorICAgICAgICAgICAgd21BdzdtcndtTkcwOTJ5MWU2SFhTR01NWnBhb3RoL1A4eGhzeENRc3FJOD0KKyAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6RyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpZPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgajBWMTRkYy9JK29rREFlRzRaYldVemIzSFRGa0VPQzZmZU9NbzVEazIxOEdjUHFFS3JvVkhhREJGOUNtUlYxdgorICAgICAgICAgICAgQjhNVU9FeEIrNlpOSGZjczVWYXcwSFZuNjJZaUVCenJtS2lreDZTeE80RGc5TDhJNVdiSG4zN3Z4VUt2SHM4cgorICAgICAgICAgICAgNytybWEza3BaUWZ0VE1pQnBKOFhLOFo2amc4Vmh1SnFvOXlaWk8rcDNJMD0KKyAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6WSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOkRTQUtleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOktleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpLZXlJbmZvJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtkc2lnOk9iamVjdDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiBJZD0idG8tYmUtc2lnbmVkIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtiYXI6QmF6PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPgorICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7IS0tICBjb21tZW50IC0tJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPgorICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9iYXI6QmF6Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPgorICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvZHNpZzpPYmplY3QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpTaWduYXR1cmUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0ZvbyZndDs8L3NwYW4+PC9wcmU+PC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZMS9jMTRuLTEudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTEvYzE0bi0xLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjgxNWUzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTEvYzE0bi0xLnR4dApAQCAtMCwwICsxLDUgQEAKKzxkc2lnOk9iamVjdCB4bWxucz0idXJuOmZvbyIgeG1sbnM6YmFyPSJ1cm46YmFyIiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiBJZD0idG8tYmUtc2lnbmVkIj4KKyAgICAgIDxiYXI6QmF6PgorICAgICAgICAKKyAgICAgIDwvYmFyOkJhej4KKyAgICA8L2RzaWc6T2JqZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1kxL2MxNG4tMi5odG1sIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTEvYzE0bi0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM2YmNmNwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1kxL2MxNG4tMi5odG1sCkBAIC0wLDAgKzEsMTEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q2FuaW5pY2FsIFhNTCBub2RlIHNldDwvdGl0bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorPCEtLSAKKy5JTkNMVURFRCB7IAorICAgY29sb3I6ICMwMDAwMDA7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyB9IAorLkVYQ0xVREVEIHsgCisgICBjb2xvcjogIzY2NjY2NjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICM5OTk5OTk7IH0gCisuSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5OTk5OyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy0tPiAKKzwvc3R5bGU+IAorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0iIzk5OTk5OSI+Cis8aDE+RXhwbGFuYXRpb24gb2YgdGhlIG91dHB1dDwvaDE+Cis8cD5UaGUgZm9sbG93aW5nIHRleHQgY29udGFpbnMgdGhlIG5vZGVzZXQgb2YgdGhlIGdpdmVuIFJlZmVyZW5jZSBiZWZvcmUgaXQgaXMgY2Fub25pY2FsaXplZC4gVGhlcmUgZXhpc3QgZm91ciBkaWZmZXJlbnQgc3R5bGVzIHRvIGluZGljYXRlIGhvdyBhIGdpdmVuIG5vZGUgaXMgdHJlYXRlZC48L3A+Cis8dWw+Cis8bGkgY2xhc3M9IklOQ0xVREVEIj5BIG5vZGUgd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVEIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVEIj5BIG5vZGUgd2hpY2ggaXMgPGVtPk5PVDwvZW0+IGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIEVYQ0xVREVEIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgQU5EIGluIHRoZSBJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3QgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0Ugc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIE5PVCB0aGUgbm9kZSBzZXQgQU5EIGluIHRoZSBJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3QgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0Ugc3R5bGUuPC9saT4KKzwvdWw+Cis8aDE+T3V0cHV0PC9oMT4KKzxwcmU+Cis8c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtGb288L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sOnNwYWNlPSJwcmVzZXJ2ZSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOlNpZ25hdHVyZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpTaWduZWRJbmZvPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpTaWduYXR1cmVNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpTaWduYXR1cmVNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIjeHBvaW50ZXIoaWQoJ3RvLWJlLXNpZ25lZCcpKSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOlRyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6VHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6VHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpEaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOkRpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjd5T1RqVXUrOW9FaFNoZ3lJSVhETGpRMDhhWT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6RGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6UmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iI3hwb2ludGVyKGlkKCd0by1iZS1zaWduZWQnKSkiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOlRyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9ImJhciAjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpUcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpUcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOkRpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MDl4TXkwUlRRTTFROTFkZW1ZZS8wRjZBR1hvPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpEaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpSZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIjeHBvaW50ZXIoaWQoJ3RvLWJlLXNpZ25lZCcpKSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOlRyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jV2l0aENvbW1lbnRzIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6VHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6VHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpEaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOkRpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPlpRSCtTa0NOOGM1eTBmZUFyK2FSVFpEd3l2WT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6RGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6UmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iI3hwb2ludGVyKGlkKCd0by1iZS1zaWduZWQnKSkiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOlRyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuI1dpdGhDb21tZW50cyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9ImJhciAjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpUcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpUcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOkRpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+YTFjVHFCZ2JxcFV0NmJNSk40QzZ6RnRub3lvPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpEaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpSZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlNpZ25lZEluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6U2lnbmF0dXJlVmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICBLdjFlN0tqaHo0Z0Z0T1pLZ3ZDNWNMWXRNUU5Jbjk5ZnlMQmE2RC8vYkJva1R4VFVFa013YUE9PQorICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpTaWduYXR1cmVWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpLZXlJbmZvPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6S2V5VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOkRTQUtleVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOlA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICA4RmtKZ3dkeWl6VjVWZDBtNkRBL0Rac2R3ZUpkbmt1ZVlWVWQ3TDhhQTRKcFp4cmxDSS9NN21ERS9PR2hFaGdCCisgICAgICAgICAgICBuRnpTVHJCalNGcFQ3REc2NnV5N29KZUUrUmdrWE83RVdXT0VnbE1Qd2FaZ0dnaTFvWmFydjk1Vk94M3VPOFc4CisgICAgICAgICAgICBMNytTLzNBdUhOVVpRRDRiNWJwZFlBbWpYRnd6NmRsMG1LaVhBdlZ1UDlFPQorICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpQJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOlE8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICBtRmY4RGlNVk5GWHkwdmFnOW9OR05XL2c0dTA9CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlEmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6Rzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIGc4Z1JkTmxxOUVPVFIyVGptVkFwcUNBWkFxM2pFak9JeFhiczhKQmlaK1U3ZFY5Z2VlWEV5MTNHYllvUDIzUXIKKyAgICAgICAgICAgIGFwWlFvKzM1ZGl3K2NNWVBIak4raVVDd1VraUdXdjcvcGlBSytPb3RmdzAzZXRMOFhpVldqdEw1TkJvZjJDTnAKKyAgICAgICAgICAgIHdtQXc3bXJ3bU5HMDkyeTFlNkhYU0dNTVpwYW90aC9QOHhoc3hDUXNxSTg9CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOkcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6WTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIGowVjE0ZGMvSStva0RBZUc0WmJXVXpiM0hURmtFT0M2ZmVPTW81RGsyMThHY1BxRUtyb1ZIYURCRjlDbVJWMXYKKyAgICAgICAgICAgIEI4TVVPRXhCKzZaTkhmY3M1VmF3MEhWbjYyWWlFQnpybUtpa3g2U3hPNERnOUw4STVXYkhuMzd2eFVLdkhzOHIKKyAgICAgICAgICAgIDcrcm1hM2twWlFmdFRNaUJwSjhYSzhaNmpnOFZodUpxbzl5WlpPK3AzSTA9CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlkmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpEU0FLZXlWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpLZXlWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6S2V5SW5mbyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7ZHNpZzpPYmplY3Q8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4gSWQ9InRvLWJlLXNpZ25lZCI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7YmFyOkJhejwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0OyEtLSAgY29tbWVudCAtLSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvYmFyOkJheiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4KKyAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2RzaWc6T2JqZWN0Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6U2lnbmF0dXJlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9Gb28mZ3Q7PC9zcGFuPjwvcHJlPjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTEvYzE0bi0yLnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1kxL2MxNG4tMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NkOTUzNAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1kxL2MxNG4tMi50eHQKQEAgLTAsMCArMSw1IEBACis8ZHNpZzpPYmplY3QgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9InRvLWJlLXNpZ25lZCI+CisgICAgICA8YmFyOkJheiB4bWxuczpiYXI9InVybjpiYXIiPgorICAgICAgICA8IS0tICBjb21tZW50IC0tPgorICAgICAgPC9iYXI6QmF6PgorICAgIDwvZHNpZzpPYmplY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTEvYzE0bi0zLmh0bWwgYi9kYXRhL2ludGVyb3AvYzE0bi9ZMS9jMTRuLTMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTg4YTU4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTEvYzE0bi0zLmh0bWwKQEAgLTAsMCArMSwxMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DYW5pbmljYWwgWE1MIG5vZGUgc2V0PC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cis8IS0tIAorLklOQ0xVREVEIHsgCisgICBjb2xvcjogIzAwMDAwMDsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IH0gCisuRVhDTFVERUQgeyAKKyAgIGNvbG9yOiAjNjY2NjY2OyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgIzk5OTk5OTsgfSAKKy5JTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCisuRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICM5OTk5OTk7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLS0+IAorPC9zdHlsZT4gCis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSIjOTk5OTk5Ij4KKzxoMT5FeHBsYW5hdGlvbiBvZiB0aGUgb3V0cHV0PC9oMT4KKzxwPlRoZSBmb2xsb3dpbmcgdGV4dCBjb250YWlucyB0aGUgbm9kZXNldCBvZiB0aGUgZ2l2ZW4gUmVmZXJlbmNlIGJlZm9yZSBpdCBpcyBjYW5vbmljYWxpemVkLiBUaGVyZSBleGlzdCBmb3VyIGRpZmZlcmVudCBzdHlsZXMgdG8gaW5kaWNhdGUgaG93IGEgZ2l2ZW4gbm9kZSBpcyB0cmVhdGVkLjwvcD4KKzx1bD4KKzxsaSBjbGFzcz0iSU5DTFVERUQiPkEgbm9kZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERUQiPkEgbm9kZSB3aGljaCBpcyA8ZW0+Tk9UPC9lbT4gaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgRVhDTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gTk9UIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPC91bD4KKzxoMT5PdXRwdXQ8L2gxPgorPHByZT4KKzxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0Zvbzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWw6c3BhY2U9InByZXNlcnZlIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6U2lnbmF0dXJlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOlNpZ25lZEluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOlNpZ25hdHVyZU1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlNpZ25hdHVyZU1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOlJlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiN4cG9pbnRlcihpZCgndG8tYmUtc2lnbmVkJykpIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpUcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpUcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOkRpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+N3lPVGpVdSs5b0VoU2hneUlJWERMalEwOGFZPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpEaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpSZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIjeHBvaW50ZXIoaWQoJ3RvLWJlLXNpZ25lZCcpKSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOlRyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iYmFyICNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlRyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlRyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOkRpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6RGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4wOXhNeTBSVFFNMVE5MWRlbVllLzBGNkFHWG89PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOkRpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlJlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOlJlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiN4cG9pbnRlcihpZCgndG8tYmUtc2lnbmVkJykpIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biNXaXRoQ29tbWVudHMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpUcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpUcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOkRpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+WlFIK1NrQ044YzV5MGZlQXIrYVJUWkR3eXZZPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpEaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpSZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIjeHBvaW50ZXIoaWQoJ3RvLWJlLXNpZ25lZCcpKSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOlRyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jV2l0aENvbW1lbnRzIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iYmFyICNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlRyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlRyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOkRpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6RGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5hMWNUcUJnYnFwVXQ2Yk1KTjRDNnpGdG5veW89PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOkRpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlJlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6U2lnbmVkSW5mbyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpTaWduYXR1cmVWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIEt2MWU3S2poejRnRnRPWktndkM1Y0xZdE1RTkluOTlmeUxCYTZELy9iQm9rVHhUVUVrTXdhQT09CisgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlNpZ25hdHVyZVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkc2lnOktleUluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpLZXlWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6RFNBS2V5VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9InVybjpmb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmJhcj0idXJuOmJhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6UDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIDhGa0pnd2R5aXpWNVZkMG02REEvRFpzZHdlSmRua3VlWVZVZDdMOGFBNEpwWnhybENJL003bURFL09HaEVoZ0IKKyAgICAgICAgICAgIG5GelNUckJqU0ZwVDdERzY2dXk3b0plRStSZ2tYTzdFV1dPRWdsTVB3YVpnR2dpMW9aYXJ2OTVWT3gzdU84VzgKKyAgICAgICAgICAgIEw3K1MvM0F1SE5VWlFENGI1YnBkWUFtalhGd3o2ZGwwbUtpWEF2VnVQOUU9CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOlAmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2RzaWc6UTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIG1GZjhEaU1WTkZYeTB2YWc5b05HTlcvZzR1MD0KKyAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6USZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpHPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgZzhnUmRObHE5RU9UUjJUam1WQXBxQ0FaQXEzakVqT0l4WGJzOEpCaVorVTdkVjlnZWVYRXkxM0diWW9QMjNRcgorICAgICAgICAgICAgYXBaUW8rMzVkaXcrY01ZUEhqTitpVUN3VWtpR1d2Ny9waUFLK09vdGZ3MDNldEw4WGlWV2p0TDVOQm9mMkNOcAorICAgICAgICAgICAgd21BdzdtcndtTkcwOTJ5MWU2SFhTR01NWnBhb3RoL1A4eGhzeENRc3FJOD0KKyAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6RyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZHNpZzpZPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgajBWMTRkYy9JK29rREFlRzRaYldVemIzSFRGa0VPQzZmZU9NbzVEazIxOEdjUHFFS3JvVkhhREJGOUNtUlYxdgorICAgICAgICAgICAgQjhNVU9FeEIrNlpOSGZjczVWYXcwSFZuNjJZaUVCenJtS2lreDZTeE80RGc5TDhJNVdiSG4zN3Z4VUt2SHM4cgorICAgICAgICAgICAgNytybWEza3BaUWZ0VE1pQnBKOFhLOFo2amc4Vmh1SnFvOXlaWk8rcDNJMD0KKyAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2RzaWc6WSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOkRTQUtleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kc2lnOktleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpLZXlJbmZvJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtkc2lnOk9iamVjdDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0idXJuOmZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM6YmFyPSJ1cm46YmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiBJZD0idG8tYmUtc2lnbmVkIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtiYXI6QmF6PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJ1cm46Zm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxuczpiYXI9InVybjpiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPgorICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7IS0tICBjb21tZW50IC0tJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPgorICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9iYXI6QmF6Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPgorICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvZHNpZzpPYmplY3QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZHNpZzpTaWduYXR1cmUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0ZvbyZndDs8L3NwYW4+PC9wcmU+PC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZMS9jMTRuLTMudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTEvYzE0bi0zLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWRmYzczCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTEvYzE0bi0zLnR4dApAQCAtMCwwICsxLDUgQEAKKzxkc2lnOk9iamVjdCB4bWxucz0idXJuOmZvbyIgeG1sbnM6YmFyPSJ1cm46YmFyIiB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiBJZD0idG8tYmUtc2lnbmVkIj4KKyAgICAgIDxiYXI6QmF6PgorICAgICAgICA8IS0tICBjb21tZW50IC0tPgorICAgICAgPC9iYXI6QmF6PgorICAgIDwvZHNpZzpPYmplY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTEvYzE0bi00LnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1kxL2MxNG4tNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdmMzMwMwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1kxL2MxNG4tNC50eHQKQEAgLTAsMCArMSwzNiBAQAorPGRzaWc6U2lnbmVkSW5mbyB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgIDxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPjwvZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kPgorICAgICAgPGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIj48L2RzaWc6U2lnbmF0dXJlTWV0aG9kPgorICAgICAgPGRzaWc6UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKGlkKCd0by1iZS1zaWduZWQnKSkiPgorICAgICAgICA8ZHNpZzpUcmFuc2Zvcm1zPgorICAgICAgICAgIDxkc2lnOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+PC9kc2lnOlRyYW5zZm9ybT4KKyAgICAgICAgPC9kc2lnOlRyYW5zZm9ybXM+CisgICAgICAgIDxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L2RzaWc6RGlnZXN0TWV0aG9kPgorICAgICAgICA8ZHNpZzpEaWdlc3RWYWx1ZT43eU9UalV1KzlvRWhTaGd5SUlYRExqUTA4YVk9PC9kc2lnOkRpZ2VzdFZhbHVlPgorICAgICAgPC9kc2lnOlJlZmVyZW5jZT4KKyAgICAgIDxkc2lnOlJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcihpZCgndG8tYmUtc2lnbmVkJykpIj4KKyAgICAgICAgPGRzaWc6VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8ZHNpZzpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPgorICAgICAgICAgICAgPEluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0iYmFyICNkZWZhdWx0Ij48L0luY2x1c2l2ZU5hbWVzcGFjZXM+CisgICAgICAgICAgPC9kc2lnOlRyYW5zZm9ybT4KKyAgICAgICAgPC9kc2lnOlRyYW5zZm9ybXM+CisgICAgICAgIDxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L2RzaWc6RGlnZXN0TWV0aG9kPgorICAgICAgICA8ZHNpZzpEaWdlc3RWYWx1ZT4wOXhNeTBSVFFNMVE5MWRlbVllLzBGNkFHWG89PC9kc2lnOkRpZ2VzdFZhbHVlPgorICAgICAgPC9kc2lnOlJlZmVyZW5jZT4KKyAgICAgIDxkc2lnOlJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcihpZCgndG8tYmUtc2lnbmVkJykpIj4KKyAgICAgICAgPGRzaWc6VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8ZHNpZzpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biNXaXRoQ29tbWVudHMiPjwvZHNpZzpUcmFuc2Zvcm0+CisgICAgICAgIDwvZHNpZzpUcmFuc2Zvcm1zPgorICAgICAgICA8ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9kc2lnOkRpZ2VzdE1ldGhvZD4KKyAgICAgICAgPGRzaWc6RGlnZXN0VmFsdWU+WlFIK1NrQ044YzV5MGZlQXIrYVJUWkR3eXZZPTwvZHNpZzpEaWdlc3RWYWx1ZT4KKyAgICAgIDwvZHNpZzpSZWZlcmVuY2U+CisgICAgICA8ZHNpZzpSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoaWQoJ3RvLWJlLXNpZ25lZCcpKSI+CisgICAgICAgIDxkc2lnOlRyYW5zZm9ybXM+CisgICAgICAgICAgPGRzaWc6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jV2l0aENvbW1lbnRzIj4KKyAgICAgICAgICAgIDxJbmNsdXNpdmVOYW1lc3BhY2VzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIFByZWZpeExpc3Q9ImJhciAjZGVmYXVsdCI+PC9JbmNsdXNpdmVOYW1lc3BhY2VzPgorICAgICAgICAgIDwvZHNpZzpUcmFuc2Zvcm0+CisgICAgICAgIDwvZHNpZzpUcmFuc2Zvcm1zPgorICAgICAgICA8ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9kc2lnOkRpZ2VzdE1ldGhvZD4KKyAgICAgICAgPGRzaWc6RGlnZXN0VmFsdWU+YTFjVHFCZ2JxcFV0NmJNSk40QzZ6RnRub3lvPTwvZHNpZzpEaWdlc3RWYWx1ZT4KKyAgICAgIDwvZHNpZzpSZWZlcmVuY2U+CisgICAgPC9kc2lnOlNpZ25lZEluZm8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTEvZXhjLXNpZ25hdHVyZS54bWwgYi9kYXRhL2ludGVyb3AvYzE0bi9ZMS9leGMtc2lnbmF0dXJlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODA1OTQwCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTEvZXhjLXNpZ25hdHVyZS54bWwKQEAgLTAsMCArMSw3MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxGb28geG1sbnM6YmFyPSJ1cm46YmFyIiB4bWxucz0idXJuOmZvbyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CisgIDxkc2lnOlNpZ25hdHVyZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICA8ZHNpZzpTaWduZWRJbmZvPgorICAgICAgPGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgLz4KKyAgICAgIDxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIgLz4KKyAgICAgIDxkc2lnOlJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcihpZCgndG8tYmUtc2lnbmVkJykpIj4KKyAgICAgICAgPGRzaWc6VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8ZHNpZzpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIC8+CisgICAgICAgIDwvZHNpZzpUcmFuc2Zvcm1zPgorICAgICAgICA8ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPGRzaWc6RGlnZXN0VmFsdWU+N3lPVGpVdSs5b0VoU2hneUlJWERMalEwOGFZPTwvZHNpZzpEaWdlc3RWYWx1ZT4KKyAgICAgIDwvZHNpZzpSZWZlcmVuY2U+CisgICAgICA8ZHNpZzpSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoaWQoJ3RvLWJlLXNpZ25lZCcpKSI+CisgICAgICAgIDxkc2lnOlRyYW5zZm9ybXM+CisgICAgICAgICAgPGRzaWc6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj4KKyAgICAgICAgICAgIDxJbmNsdXNpdmVOYW1lc3BhY2VzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIFByZWZpeExpc3Q9ImJhciAjZGVmYXVsdCIgLz4KKyAgICAgICAgICA8L2RzaWc6VHJhbnNmb3JtPgorICAgICAgICA8L2RzaWc6VHJhbnNmb3Jtcz4KKyAgICAgICAgPGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxkc2lnOkRpZ2VzdFZhbHVlPjA5eE15MFJUUU0xUTkxZGVtWWUvMEY2QUdYbz08L2RzaWc6RGlnZXN0VmFsdWU+CisgICAgICA8L2RzaWc6UmVmZXJlbmNlPgorICAgICAgPGRzaWc6UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKGlkKCd0by1iZS1zaWduZWQnKSkiPgorICAgICAgICA8ZHNpZzpUcmFuc2Zvcm1zPgorICAgICAgICAgIDxkc2lnOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuI1dpdGhDb21tZW50cyIgLz4KKyAgICAgICAgPC9kc2lnOlRyYW5zZm9ybXM+CisgICAgICAgIDxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8ZHNpZzpEaWdlc3RWYWx1ZT5aUUgrU2tDTjhjNXkwZmVBcithUlRaRHd5dlk9PC9kc2lnOkRpZ2VzdFZhbHVlPgorICAgICAgPC9kc2lnOlJlZmVyZW5jZT4KKyAgICAgIDxkc2lnOlJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcihpZCgndG8tYmUtc2lnbmVkJykpIj4KKyAgICAgICAgPGRzaWc6VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8ZHNpZzpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biNXaXRoQ29tbWVudHMiPgorICAgICAgICAgICAgPEluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0iYmFyICNkZWZhdWx0IiAvPgorICAgICAgICAgIDwvZHNpZzpUcmFuc2Zvcm0+CisgICAgICAgIDwvZHNpZzpUcmFuc2Zvcm1zPgorICAgICAgICA8ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPGRzaWc6RGlnZXN0VmFsdWU+YTFjVHFCZ2JxcFV0NmJNSk40QzZ6RnRub3lvPTwvZHNpZzpEaWdlc3RWYWx1ZT4KKyAgICAgIDwvZHNpZzpSZWZlcmVuY2U+CisgICAgPC9kc2lnOlNpZ25lZEluZm8+CisgICAgPGRzaWc6U2lnbmF0dXJlVmFsdWU+CisgICAgICBLdjFlN0tqaHo0Z0Z0T1pLZ3ZDNWNMWXRNUU5Jbjk5ZnlMQmE2RC8vYkJva1R4VFVFa013YUE9PQorICAgIDwvZHNpZzpTaWduYXR1cmVWYWx1ZT4KKyAgICA8ZHNpZzpLZXlJbmZvPgorICAgICAgPGRzaWc6S2V5VmFsdWU+CisgICAgICAgIDxkc2lnOkRTQUtleVZhbHVlPgorICAgICAgICAgIDxkc2lnOlA+CisgICAgICAgICAgICA4RmtKZ3dkeWl6VjVWZDBtNkRBL0Rac2R3ZUpkbmt1ZVlWVWQ3TDhhQTRKcFp4cmxDSS9NN21ERS9PR2hFaGdCCisgICAgICAgICAgICBuRnpTVHJCalNGcFQ3REc2NnV5N29KZUUrUmdrWE83RVdXT0VnbE1Qd2FaZ0dnaTFvWmFydjk1Vk94M3VPOFc4CisgICAgICAgICAgICBMNytTLzNBdUhOVVpRRDRiNWJwZFlBbWpYRnd6NmRsMG1LaVhBdlZ1UDlFPQorICAgICAgICAgIDwvZHNpZzpQPgorICAgICAgICAgIDxkc2lnOlE+CisgICAgICAgICAgICBtRmY4RGlNVk5GWHkwdmFnOW9OR05XL2c0dTA9CisgICAgICAgICAgPC9kc2lnOlE+CisgICAgICAgICAgPGRzaWc6Rz4KKyAgICAgICAgICAgIGc4Z1JkTmxxOUVPVFIyVGptVkFwcUNBWkFxM2pFak9JeFhiczhKQmlaK1U3ZFY5Z2VlWEV5MTNHYllvUDIzUXIKKyAgICAgICAgICAgIGFwWlFvKzM1ZGl3K2NNWVBIak4raVVDd1VraUdXdjcvcGlBSytPb3RmdzAzZXRMOFhpVldqdEw1TkJvZjJDTnAKKyAgICAgICAgICAgIHdtQXc3bXJ3bU5HMDkyeTFlNkhYU0dNTVpwYW90aC9QOHhoc3hDUXNxSTg9CisgICAgICAgICAgPC9kc2lnOkc+CisgICAgICAgICAgPGRzaWc6WT4KKyAgICAgICAgICAgIGowVjE0ZGMvSStva0RBZUc0WmJXVXpiM0hURmtFT0M2ZmVPTW81RGsyMThHY1BxRUtyb1ZIYURCRjlDbVJWMXYKKyAgICAgICAgICAgIEI4TVVPRXhCKzZaTkhmY3M1VmF3MEhWbjYyWWlFQnpybUtpa3g2U3hPNERnOUw4STVXYkhuMzd2eFVLdkhzOHIKKyAgICAgICAgICAgIDcrcm1hM2twWlFmdFRNaUJwSjhYSzhaNmpnOFZodUpxbzl5WlpPK3AzSTA9CisgICAgICAgICAgPC9kc2lnOlk+CisgICAgICAgIDwvZHNpZzpEU0FLZXlWYWx1ZT4KKyAgICAgIDwvZHNpZzpLZXlWYWx1ZT4KKyAgICA8L2RzaWc6S2V5SW5mbz4KKyAgICA8ZHNpZzpPYmplY3QgSWQ9InRvLWJlLXNpZ25lZCI+CisgICAgICA8YmFyOkJhej4KKyAgICAgICAgPCEtLSAgY29tbWVudCAtLT4KKyAgICAgIDwvYmFyOkJhej4KKyAgICA8L2RzaWc6T2JqZWN0PgorICA8L2RzaWc6U2lnbmF0dXJlPgorPC9Gb28+CmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZMi8uY3ZzaWdub3JlIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTIvLmN2c2lnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTBjN2YxCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTIvLmN2c2lnbm9yZQpAQCAtMCwwICsxIEBACitjMTRuLSouYXBhY2hlLmh0bWwKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1kyL2MxNG4tMC5odG1sIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTIvYzE0bi0wLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU0NjBiMwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1kyL2MxNG4tMC5odG1sCkBAIC0wLDAgKzEsMTIzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q2FuaW5pY2FsIFhNTCBub2RlIHNldDwvdGl0bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorPCEtLSAKKy5JTkNMVURFRCB7IAorICAgY29sb3I6ICMwMDAwMDA7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyB9IAorLkVYQ0xVREVEIHsgCisgICBjb2xvcjogIzY2NjY2NjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICM5OTk5OTk7IH0gCisuSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5OTk5OyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy0tPiAKKzwvc3R5bGU+IAorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0iIzk5OTk5OSI+Cis8aDE+RXhwbGFuYXRpb24gb2YgdGhlIG91dHB1dDwvaDE+Cis8cD5UaGUgZm9sbG93aW5nIHRleHQgY29udGFpbnMgdGhlIG5vZGVzZXQgb2YgdGhlIGdpdmVuIFJlZmVyZW5jZSBiZWZvcmUgaXQgaXMgY2Fub25pY2FsaXplZC4gVGhlcmUgZXhpc3QgZm91ciBkaWZmZXJlbnQgc3R5bGVzIHRvIGluZGljYXRlIGhvdyBhIGdpdmVuIG5vZGUgaXMgdHJlYXRlZC48L3A+Cis8dWw+Cis8bGkgY2xhc3M9IklOQ0xVREVEIj5BIG5vZGUgd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVEIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVEIj5BIG5vZGUgd2hpY2ggaXMgPGVtPk5PVDwvZW0+IGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIEVYQ0xVREVEIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgQU5EIGluIHRoZSBJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3QgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0Ugc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIE5PVCB0aGUgbm9kZSBzZXQgQU5EIGluIHRoZSBJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3QgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0Ugc3R5bGUuPC9saT4KKzwvdWw+Cis8aDE+T3V0cHV0PC9oMT4KKzxwcmU+Cis8c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkb2M8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpiYXNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLzIwMDIvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtlMTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9lMSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtlMjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9lMiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtlMzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gaWQ9ImVsZW0zIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBuYW1lPSJlbGVtMyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9lMyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtlNDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gaWQ9ImVsZW00Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBuYW1lPSJlbGVtNCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9lNCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtlNTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczphPSJodHRwOi8vd3d3LnczLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Yj0iaHR0cDovL3d3dy5pZXRmLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IGF0dHI9IkknbSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gYXR0cjI9ImFsbCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gYjphdHRyPSJzb3J0ZWQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IGE6YXR0cj0ib3V0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2U1Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2U2PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmE9Imh0dHA6Ly93d3cudzMub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4gdGVzdD0iLi4vYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4KKyAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7ZTc8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmE9Imh0dHA6Ly93d3cudzMub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+CisgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtlODwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxucz0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczphPSJodHRwOi8vd3d3LnczLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IGE6Zm9vPSJiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPgorICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2U5PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmE9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiBhdHRyPSJkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2U5Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPgorICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2U4Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPgorICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvZTcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+CisgICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2U2Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25lZEluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWw6YmFzZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8yMDAyLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Q2Fub25pY2FsaXphdGlvbk1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvQ2Fub25pY2FsaXphdGlvbk1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmVNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmVNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6ZTYKKyAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI21kNSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5BYUJXbXVCdStZSjYvVlZYS3dscmRBPT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6ZTYKKyAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNtZDUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+U2p5Q0xwZE1YLzVYKzhXdWV1M3RsZz09PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmU2CisgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9ImEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjbWQ1Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmxPT1FkVExrTVg3c3Y0MVpscHdPMGc9PTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmVkSW5mbyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmVWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgUVk4eTF5WldPRGk2VFIvdmxtSHd6MTdCNmRrNW1la3ZSTkpvellaVUJvdnhRYXQwRjJvNC9RPT0KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlVmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5SW5mbzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0tleVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RFNBS2V5VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtQPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICAgICA4RmtKZ3dkeWl6VjVWZDBtNkRBL0Rac2R3ZUpkbmt1ZVlWVWQ3TDhhQTRKcFp4cmxDSS9NN21ERS9PR2hFaGdCCisgICAgICAgICAgICAgICAgICBuRnpTVHJCalNGcFQ3REc2NnV5N29KZUUrUmdrWE83RVdXT0VnbE1Qd2FaZ0dnaTFvWmFydjk1Vk94M3VPOFc4CisgICAgICAgICAgICAgICAgICBMNytTLzNBdUhOVVpRRDRiNWJwZFlBbWpYRnd6NmRsMG1LaVhBdlZ1UDlFPQorICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9QJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1E8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgICAgIG1GZjhEaU1WTkZYeTB2YWc5b05HTlcvZzR1MD0KKyAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtHPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICAgICBnOGdSZE5scTlFT1RSMlRqbVZBcHFDQVpBcTNqRWpPSXhYYnM4SkJpWitVN2RWOWdlZVhFeTEzR2JZb1AyM1FyCisgICAgICAgICAgICAgICAgICBhcFpRbyszNWRpdytjTVlQSGpOK2lVQ3dVa2lHV3Y3L3BpQUsrT290ZncwM2V0TDhYaVZXanRMNU5Cb2YyQ05wCisgICAgICAgICAgICAgICAgICB3bUF3N21yd21ORzA5MnkxZTZIWFNHTU1acGFvdGgvUDh4aHN4Q1FzcUk4PQorICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9HJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1k8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgICAgIGowVjE0ZGMvSStva0RBZUc0WmJXVXpiM0hURmtFT0M2ZmVPTW81RGsyMThHY1BxRUtyb1ZIYURCRjlDbVJWMXYKKyAgICAgICAgICAgICAgICAgIEI4TVVPRXhCKzZaTkhmY3M1VmF3MEhWbjYyWWlFQnpybUtpa3g2U3hPNERnOUw4STVXYkhuMzd2eFVLdkhzOHIKKyAgICAgICAgICAgICAgICAgIDcrcm1hM2twWlFmdFRNaUJwSjhYSzhaNmpnOFZodUpxbzl5WlpPK3AzSTA9CisgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1kmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RTQUtleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9LZXlWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvS2V5SW5mbyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kb2MmZ3Q7PC9zcGFuPjwvcHJlPjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTIvYzE0bi0wLnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1kyL2MxNG4tMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE4Y2IxOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1kyL2MxNG4tMC50eHQKQEAgLTAsMCArMSw3IEBACis8ZTYgeG1sbnM6YT0iaHR0cDovL3d3dy53My5vcmciIHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIiB0ZXN0PSIuLi9iYXoiIHhtbDpiYXNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLzIwMDIvIj4KKyAgICAgICA8ZTcgeG1sbnM9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPgorICAgICAgICAgICA8ZTggeG1sbnM9IiIgYTpmb289ImJhciI+CisgICAgICAgICAgICAgICA8ZTkgeG1sbnM6YT0iaHR0cDovL3d3dy5pZXRmLm9yZyIgYXR0cj0iZGVmYXVsdCI+PC9lOT4KKyAgICAgICAgICAgPC9lOD4KKyAgICAgICA8L2U3PgorICAgPC9lNj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZMi9jMTRuLTEuaHRtbCBiL2RhdGEvaW50ZXJvcC9jMTRuL1kyL2MxNG4tMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1NDYwYjMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZMi9jMTRuLTEuaHRtbApAQCAtMCwwICsxLDEyMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNhbmluaWNhbCBYTUwgbm9kZSBzZXQ8L3RpdGxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKzwhLS0gCisuSU5DTFVERUQgeyAKKyAgIGNvbG9yOiAjMDAwMDAwOyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgfSAKKy5FWENMVURFRCB7IAorICAgY29sb3I6ICM2NjY2NjY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjOTk5OTk5OyB9IAorLklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy5FWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogIzk5OTk5OTsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCistLT4gCis8L3N0eWxlPiAKKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IiM5OTk5OTkiPgorPGgxPkV4cGxhbmF0aW9uIG9mIHRoZSBvdXRwdXQ8L2gxPgorPHA+VGhlIGZvbGxvd2luZyB0ZXh0IGNvbnRhaW5zIHRoZSBub2Rlc2V0IG9mIHRoZSBnaXZlbiBSZWZlcmVuY2UgYmVmb3JlIGl0IGlzIGNhbm9uaWNhbGl6ZWQuIFRoZXJlIGV4aXN0IGZvdXIgZGlmZmVyZW50IHN0eWxlcyB0byBpbmRpY2F0ZSBob3cgYSBnaXZlbiBub2RlIGlzIHRyZWF0ZWQuPC9wPgorPHVsPgorPGxpIGNsYXNzPSJJTkNMVURFRCI+QSBub2RlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRCI+QSBub2RlIHdoaWNoIGlzIDxlbT5OT1Q8L2VtPiBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCBFWENMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiBOT1QgdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8L3VsPgorPGgxPk91dHB1dDwvaDE+Cis8cHJlPgorPHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZG9jPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWw6YmFzZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8yMDAyLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZTE8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZTEmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZTI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZTImZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZTM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IGlkPSJlbGVtMyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gbmFtZT0iZWxlbTMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZTMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZTQ8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IGlkPSJlbGVtNCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gbmFtZT0iZWxlbTQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZTQmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7ZTU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YT0iaHR0cDovL3d3dy53My5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmI9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBhdHRyPSJJJ20iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IGF0dHIyPSJhbGwiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IGI6YXR0cj0ic29ydGVkIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBhOmF0dHI9Im91dCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9lNSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtlNjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxucz0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczphPSJodHRwOi8vd3d3LnczLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHRlc3Q9Ii4uL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+CisgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2U3PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LmlldGYub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczphPSJodHRwOi8vd3d3LnczLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPgorICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7ZTg8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YT0iaHR0cDovL3d3dy53My5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiBhOmZvbz0iYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4KKyAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtlOTwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxucz0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczphPSJodHRwOi8vd3d3LmlldGYub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4gYXR0cj0iZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9lOSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4KKyAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9lOCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4KKyAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2U3Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPgorICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9lNiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduZWRJbmZvPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sOmJhc2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvMjAwMi8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0Nhbm9uaWNhbGl6YXRpb25NZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0Nhbm9uaWNhbGl6YXRpb25NZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlTWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlTWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmU2CisgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNtZDUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+QWFCV211QnUrWUo2L1ZWWEt3bHJkQT09PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmU2CisgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjbWQ1Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPlNqeUNMcGRNWC81WCs4V3VldTN0bGc9PTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjplNgorICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSJhIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI21kNSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5sT09RZFRMa01YN3N2NDFabHB3TzBnPT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25lZEluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlVmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgIFFZOHkxeVpXT0RpNlRSL3ZsbUh3ejE3QjZkazVtZWt2Uk5Kb3pZWlVCb3Z4UWF0MEYybzQvUT09CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0tleUluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtLZXlWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RTQUtleVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgICAgICAgOEZrSmd3ZHlpelY1VmQwbTZEQS9EWnNkd2VKZG5rdWVZVlVkN0w4YUE0SnBaeHJsQ0kvTTdtREUvT0doRWhnQgorICAgICAgICAgICAgICAgICAgbkZ6U1RyQmpTRnBUN0RHNjZ1eTdvSmVFK1Jna1hPN0VXV09FZ2xNUHdhWmdHZ2kxb1phcnY5NVZPeDN1TzhXOAorICAgICAgICAgICAgICAgICAgTDcrUy8zQXVITlVaUUQ0YjVicGRZQW1qWEZ3ejZkbDBtS2lYQXZWdVA5RT0KKyAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtRPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICAgICBtRmY4RGlNVk5GWHkwdmFnOW9OR05XL2c0dTA9CisgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1EmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Rzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgICAgICAgZzhnUmRObHE5RU9UUjJUam1WQXBxQ0FaQXEzakVqT0l4WGJzOEpCaVorVTdkVjlnZWVYRXkxM0diWW9QMjNRcgorICAgICAgICAgICAgICAgICAgYXBaUW8rMzVkaXcrY01ZUEhqTitpVUN3VWtpR1d2Ny9waUFLK09vdGZ3MDNldEw4WGlWV2p0TDVOQm9mMkNOcAorICAgICAgICAgICAgICAgICAgd21BdzdtcndtTkcwOTJ5MWU2SFhTR01NWnBhb3RoL1A4eGhzeENRc3FJOD0KKyAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtZPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICAgICBqMFYxNGRjL0krb2tEQWVHNFpiV1V6YjNIVEZrRU9DNmZlT01vNURrMjE4R2NQcUVLcm9WSGFEQkY5Q21SVjF2CisgICAgICAgICAgICAgICAgICBCOE1VT0V4Qis2Wk5IZmNzNVZhdzBIVm42MllpRUJ6cm1LaWt4NlN4TzREZzlMOEk1V2JIbjM3dnhVS3ZIczhyCisgICAgICAgICAgICAgICAgICA3K3JtYTNrcFpRZnRUTWlCcEo4WEs4WjZqZzhWaHVKcW85eVpaTytwM0kwPQorICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9ZJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EU0FLZXlWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvS2V5VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0tleUluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZG9jJmd0Ozwvc3Bhbj48L3ByZT48L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1kyL2MxNG4tMS50eHQgYi9kYXRhL2ludGVyb3AvYzE0bi9ZMi9jMTRuLTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4MDZlYTAKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZMi9jMTRuLTEudHh0CkBAIC0wLDAgKzEsNyBAQAorPGU2IHRlc3Q9Ii4uL2JheiI+CisgICAgICAgPGU3IHhtbG5zPSJodHRwOi8vd3d3LmlldGYub3JnIj4KKyAgICAgICAgICAgPGU4IHhtbG5zPSIiIHhtbG5zOmE9Imh0dHA6Ly93d3cudzMub3JnIiBhOmZvbz0iYmFyIj4KKyAgICAgICAgICAgICAgIDxlOSBhdHRyPSJkZWZhdWx0Ij48L2U5PgorICAgICAgICAgICA8L2U4PgorICAgICAgIDwvZTc+CisgICA8L2U2PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1kyL2MxNG4tMi5odG1sIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTIvYzE0bi0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ5MDcwNAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1kyL2MxNG4tMi5odG1sCkBAIC0wLDAgKzEsMTIzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q2FuaW5pY2FsIFhNTCBub2RlIHNldDwvdGl0bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorPCEtLSAKKy5JTkNMVURFRCB7IAorICAgY29sb3I6ICMwMDAwMDA7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyB9IAorLkVYQ0xVREVEIHsgCisgICBjb2xvcjogIzY2NjY2NjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICM5OTk5OTk7IH0gCisuSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5OTk5OyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy0tPiAKKzwvc3R5bGU+IAorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0iIzk5OTk5OSI+Cis8aDE+RXhwbGFuYXRpb24gb2YgdGhlIG91dHB1dDwvaDE+Cis8cD5UaGUgZm9sbG93aW5nIHRleHQgY29udGFpbnMgdGhlIG5vZGVzZXQgb2YgdGhlIGdpdmVuIFJlZmVyZW5jZSBiZWZvcmUgaXQgaXMgY2Fub25pY2FsaXplZC4gVGhlcmUgZXhpc3QgZm91ciBkaWZmZXJlbnQgc3R5bGVzIHRvIGluZGljYXRlIGhvdyBhIGdpdmVuIG5vZGUgaXMgdHJlYXRlZC48L3A+Cis8dWw+Cis8bGkgY2xhc3M9IklOQ0xVREVEIj5BIG5vZGUgd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVEIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVEIj5BIG5vZGUgd2hpY2ggaXMgPGVtPk5PVDwvZW0+IGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIEVYQ0xVREVEIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgQU5EIGluIHRoZSBJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3QgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0Ugc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIE5PVCB0aGUgbm9kZSBzZXQgQU5EIGluIHRoZSBJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3QgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0Ugc3R5bGUuPC9saT4KKzwvdWw+Cis8aDE+T3V0cHV0PC9oMT4KKzxwcmU+Cis8c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtkb2M8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpiYXNlPSJodHRwOi8vd3d3LmV4YW1wbGUub3JnLzIwMDIvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtlMTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9lMSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtlMjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9lMiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtlMzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gaWQ9ImVsZW0zIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBuYW1lPSJlbGVtMyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9lMyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtlNDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gaWQ9ImVsZW00Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBuYW1lPSJlbGVtNCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9lNCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtlNTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxuczphPSJodHRwOi8vd3d3LnczLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Yj0iaHR0cDovL3d3dy5pZXRmLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IGF0dHI9IkknbSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gYXR0cjI9ImFsbCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gYjphdHRyPSJzb3J0ZWQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IGE6YXR0cj0ib3V0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2U1Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2U2PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmE9Imh0dHA6Ly93d3cudzMub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4gdGVzdD0iLi4vYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4KKyAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7ZTc8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmE9Imh0dHA6Ly93d3cudzMub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+CisgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtlODwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxucz0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxuczphPSJodHRwOi8vd3d3LnczLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IGE6Zm9vPSJiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPgorICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2U5PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOmE9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiBhdHRyPSJkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2U5Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPgorICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2U4Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPgorICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvZTcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+CisgICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2U2Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25lZEluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWw6YmFzZT0iaHR0cDovL3d3dy5leGFtcGxlLm9yZy8yMDAyLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Q2Fub25pY2FsaXphdGlvbk1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvQ2Fub25pY2FsaXphdGlvbk1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmVNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmVNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6ZTYKKyAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI21kNSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5BYUJXbXVCdStZSjYvVlZYS3dscmRBPT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6ZTYKKyAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNtZDUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+U2p5Q0xwZE1YLzVYKzhXdWV1M3RsZz09PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmU2CisgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9ImEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjbWQ1Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmxPT1FkVExrTVg3c3Y0MVpscHdPMGc9PTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmVkSW5mbyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmVWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgUVk4eTF5WldPRGk2VFIvdmxtSHd6MTdCNmRrNW1la3ZSTkpvellaVUJvdnhRYXQwRjJvNC9RPT0KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlVmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5SW5mbzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vd3d3LmJhci5vcmciPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0tleVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RFNBS2V5VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtQPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICAgICA4RmtKZ3dkeWl6VjVWZDBtNkRBL0Rac2R3ZUpkbmt1ZVlWVWQ3TDhhQTRKcFp4cmxDSS9NN21ERS9PR2hFaGdCCisgICAgICAgICAgICAgICAgICBuRnpTVHJCalNGcFQ3REc2NnV5N29KZUUrUmdrWE83RVdXT0VnbE1Qd2FaZ0dnaTFvWmFydjk1Vk94M3VPOFc4CisgICAgICAgICAgICAgICAgICBMNytTLzNBdUhOVVpRRDRiNWJwZFlBbWpYRnd6NmRsMG1LaVhBdlZ1UDlFPQorICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9QJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1E8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgICAgIG1GZjhEaU1WTkZYeTB2YWc5b05HTlcvZzR1MD0KKyAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtHPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICAgICAgICBnOGdSZE5scTlFT1RSMlRqbVZBcHFDQVpBcTNqRWpPSXhYYnM4SkJpWitVN2RWOWdlZVhFeTEzR2JZb1AyM1FyCisgICAgICAgICAgICAgICAgICBhcFpRbyszNWRpdytjTVlQSGpOK2lVQ3dVa2lHV3Y3L3BpQUsrT290ZncwM2V0TDhYaVZXanRMNU5Cb2YyQ05wCisgICAgICAgICAgICAgICAgICB3bUF3N21yd21ORzA5MnkxZTZIWFNHTU1acGFvdGgvUDh4aHN4Q1FzcUk4PQorICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9HJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1k8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL3d3dy5iYXIub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgICAgICAgICAgICAgIGowVjE0ZGMvSStva0RBZUc0WmJXVXpiM0hURmtFT0M2ZmVPTW81RGsyMThHY1BxRUtyb1ZIYURCRjlDbVJWMXYKKyAgICAgICAgICAgICAgICAgIEI4TVVPRXhCKzZaTkhmY3M1VmF3MEhWbjYyWWlFQnpybUtpa3g2U3hPNERnOUw4STVXYkhuMzd2eFVLdkhzOHIKKyAgICAgICAgICAgICAgICAgIDcrcm1hM2twWlFmdFRNaUJwSjhYSzhaNmpnOFZodUpxbzl5WlpPK3AzSTA9CisgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1kmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RTQUtleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9LZXlWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvS2V5SW5mbyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9kb2MmZ3Q7PC9zcGFuPjwvcHJlPjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTIvYzE0bi0yLnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1kyL2MxNG4tMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ1OTMwZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1kyL2MxNG4tMi50eHQKQEAgLTAsMCArMSw3IEBACis8ZTYgeG1sbnM6YT0iaHR0cDovL3d3dy53My5vcmciIHRlc3Q9Ii4uL2JheiI+CisgICAgICAgPGU3IHhtbG5zPSJodHRwOi8vd3d3LmlldGYub3JnIj4KKyAgICAgICAgICAgPGU4IHhtbG5zPSIiIGE6Zm9vPSJiYXIiPgorICAgICAgICAgICAgICAgPGU5IHhtbG5zOmE9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIGF0dHI9ImRlZmF1bHQiPjwvZTk+CisgICAgICAgICAgIDwvZTg+CisgICAgICAgPC9lNz4KKyAgIDwvZTY+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTIvc2lnbmF0dXJlLWpvc2VwaC1leGMueG1sIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTIvc2lnbmF0dXJlLWpvc2VwaC1leGMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNjUwMzEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZMi9zaWduYXR1cmUtam9zZXBoLWV4Yy54bWwKQEAgLTAsMCArMSw4OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBkb2MgWzwhQVRUTElTVCBlOSBhdHRyIENEQVRBICdkZWZhdWx0Jz5dPgorPGRvYyB4bWxuczpmb289Imh0dHA6Ly93d3cuYmFyLm9yZyIgeG1sOmJhc2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvMjAwMi8iPgorICAgPGUxIC8+CisgICA8ZTIgLz4KKyAgIDxlMyBpZD0iZWxlbTMiIG5hbWU9ImVsZW0zIiAvPgorICAgPGU0IGlkPSJlbGVtNCIgbmFtZT0iZWxlbTQiIC8+CisgICA8ZTUgeG1sbnM6Yj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6YT0iaHR0cDovL3d3dy53My5vcmciIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmciIGE6YXR0cj0ib3V0IiBhdHRyPSJJJ20iIGF0dHIyPSJhbGwiIGI6YXR0cj0ic29ydGVkIiAvPgorICAgPGU2IHhtbG5zOmE9Imh0dHA6Ly93d3cudzMub3JnIiB0ZXN0PSIuLi9iYXoiIHhtbG5zPSIiPgorICAgICAgIDxlNyB4bWxucz0iaHR0cDovL3d3dy5pZXRmLm9yZyI+CisgICAgICAgICAgIDxlOCB4bWxucz0iIiBhOmZvbz0iYmFyIiB4bWxuczphPSJodHRwOi8vd3d3LnczLm9yZyI+CisgICAgICAgICAgICAgICA8ZTkgeG1sbnM6YT0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM9IiIgLz4KKyAgICAgICAgICAgPC9lOD4KKyAgICAgICA8L2U3PgorICAgPC9lNj4KKyAgIDxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgPFNpZ25lZEluZm8+CisgICAgICAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPgorICAgICAgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIgLz4KKyAgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6ZTYKKyAgICAgICAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIgLz4KKyAgICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNtZDUiIC8+CisgICAgICAgICAgICA8RGlnZXN0VmFsdWU+QWFCV211QnUrWUo2L1ZWWEt3bHJkQT09PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjplNgorICAgICAgICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgLz4KKyAgICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNtZDUiIC8+CisgICAgICAgICAgICA8RGlnZXN0VmFsdWU+U2p5Q0xwZE1YLzVYKzhXdWV1M3RsZz09PC9EaWdlc3RWYWx1ZT4KKyAgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjplNgorICAgICAgICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+CisgICAgICAgICAgICAgICAgICA8SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSJhIiAvPgorICAgICAgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjbWQ1IiAvPgorICAgICAgICAgICAgPERpZ2VzdFZhbHVlPmxPT1FkVExrTVg3c3Y0MVpscHdPMGc9PTwvRGlnZXN0VmFsdWU+CisgICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDwvU2lnbmVkSW5mbz4KKyAgICAgIDxTaWduYXR1cmVWYWx1ZT4KKyAgICAgICAgIFFZOHkxeVpXT0RpNlRSL3ZsbUh3ejE3QjZkazVtZWt2Uk5Kb3pZWlVCb3Z4UWF0MEYybzQvUT09CisgICAgICA8L1NpZ25hdHVyZVZhbHVlPgorICAgICAgPEtleUluZm8+CisgICAgICAgICA8S2V5VmFsdWU+CisgICAgICAgICAgICA8RFNBS2V5VmFsdWU+CisgICAgICAgICAgICAgICA8UD4KKyAgICAgICAgICAgICAgICAgIDhGa0pnd2R5aXpWNVZkMG02REEvRFpzZHdlSmRua3VlWVZVZDdMOGFBNEpwWnhybENJL003bURFL09HaEVoZ0IKKyAgICAgICAgICAgICAgICAgIG5GelNUckJqU0ZwVDdERzY2dXk3b0plRStSZ2tYTzdFV1dPRWdsTVB3YVpnR2dpMW9aYXJ2OTVWT3gzdU84VzgKKyAgICAgICAgICAgICAgICAgIEw3K1MvM0F1SE5VWlFENGI1YnBkWUFtalhGd3o2ZGwwbUtpWEF2VnVQOUU9CisgICAgICAgICAgICAgICA8L1A+CisgICAgICAgICAgICAgICA8UT4KKyAgICAgICAgICAgICAgICAgIG1GZjhEaU1WTkZYeTB2YWc5b05HTlcvZzR1MD0KKyAgICAgICAgICAgICAgIDwvUT4KKyAgICAgICAgICAgICAgIDxHPgorICAgICAgICAgICAgICAgICAgZzhnUmRObHE5RU9UUjJUam1WQXBxQ0FaQXEzakVqT0l4WGJzOEpCaVorVTdkVjlnZWVYRXkxM0diWW9QMjNRcgorICAgICAgICAgICAgICAgICAgYXBaUW8rMzVkaXcrY01ZUEhqTitpVUN3VWtpR1d2Ny9waUFLK09vdGZ3MDNldEw4WGlWV2p0TDVOQm9mMkNOcAorICAgICAgICAgICAgICAgICAgd21BdzdtcndtTkcwOTJ5MWU2SFhTR01NWnBhb3RoL1A4eGhzeENRc3FJOD0KKyAgICAgICAgICAgICAgIDwvRz4KKyAgICAgICAgICAgICAgIDxZPgorICAgICAgICAgICAgICAgICAgajBWMTRkYy9JK29rREFlRzRaYldVemIzSFRGa0VPQzZmZU9NbzVEazIxOEdjUHFFS3JvVkhhREJGOUNtUlYxdgorICAgICAgICAgICAgICAgICAgQjhNVU9FeEIrNlpOSGZjczVWYXcwSFZuNjJZaUVCenJtS2lreDZTeE80RGc5TDhJNVdiSG4zN3Z4VUt2SHM4cgorICAgICAgICAgICAgICAgICAgNytybWEza3BaUWZ0VE1pQnBKOFhLOFo2amc4Vmh1SnFvOXlaWk8rcDNJMD0KKyAgICAgICAgICAgICAgIDwvWT4KKyAgICAgICAgICAgIDwvRFNBS2V5VmFsdWU+CisgICAgICAgICA8L0tleVZhbHVlPgorICAgICAgPC9LZXlJbmZvPgorICAgPC9TaWduYXR1cmU+Cis8L2RvYz4KKwpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTMvLmN2c2lnbm9yZSBiL2RhdGEvaW50ZXJvcC9jMTRuL1kzLy5jdnNpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWEwYzdmMQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1kzLy5jdnNpZ25vcmUKQEAgLTAsMCArMSBAQAorYzE0bi0qLmFwYWNoZS5odG1sCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZMy9SZWFkbWUudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTMvUmVhZG1lLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzMyMjg2Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTMvUmVhZG1lLnR4dApAQCAtMCwwICsxLDIyIEBACitHcmVnb3IgS2FybGluZ2VyIDxncmVnb3Iua2FybGluZ2VyQGlhaWsuYXQ+J3MgZXhjbHVzaXZlCitjMTRuWzFdIGV4YW1wbGVzWzJdIGR1bXBlZCBpbiBhbiBYTUwgU2lnbmF0dXJlWzNdLCB0aGVyZWJ5Cit1bmRvaW5nIHRoZWlyIHVzZWZ1bG5lc3MgYXMgc3RhbmRhbG9uZSBleGNsdXNpdmUgYzE0bgorZXhhbXBsZXMsIGJ1dCBzaW1wbGlmeWluZyB0aGVpciB0ZXN0aW5nLiBBbGwgZXJyb3JzIGFyZQorbXkgb3duLiBWZXJzaW9uIDIuCisKKy4gaWFpa1Rlc3RzLmV4YW1wbGU/LnhtbCAtIEdyZWdvcidzIGV4YW1wbGVzICgqKQorLiBzaWduYXR1cmUueG1sIC0gU2lnbmF0dXJlIHJlcHJlc2VudGluZyB0aGUgZXhhbXBsZXMKKy4gc2lnbmF0dXJlLnRtcGwgLSBTaWduYXR1cmUgdGVtcGxhdGUKKy4gYzE0bi0/LnR4dCAtIEludGVybWVkaWF0ZSBjMTRuIG91dHB1dAorCisoKikgSSByYW4gcGVybCAtcGkgLWUgJ3MvZm9vLmNvbS9leGFtcGxlLm9yZy9nJyBvbiB0aGUgZmlsZXMuCisKK1sxXSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAyL0NSLXhtbC1leGMtYzE0bi0yMDAyMDIxMgorWzJdIGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3czYy1pZXRmLXhtbGRzaWcvMjAwMkphbk1hci8wMjU5Lmh0bWwKK1szXSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAyL1JFQy14bWxkc2lnLWNvcmUtMjAwMjAyMTIvCisKK01lcmxpbiBIdWdoZXMgPG1lcmxpbkBiYWx0aW1vcmUuaWU+CitCYWx0aW1vcmUgVGVjaG5vbG9naWVzLCBMdGQuCitodHRwOi8vd3d3LmJhbHRpbW9yZS5jb20vCisKK1RodXJzZGF5LCBBcHJpbCAxOCwgMjAwMgpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTMvYzE0bi0wLmh0bWwgYi9kYXRhL2ludGVyb3AvYzE0bi9ZMy9jMTRuLTAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTI2YzQyCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTMvYzE0bi0wLmh0bWwKQEAgLTAsMCArMSw2OCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNhbmluaWNhbCBYTUwgbm9kZSBzZXQ8L3RpdGxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKzwhLS0gCisuSU5DTFVERUQgeyAKKyAgIGNvbG9yOiAjMDAwMDAwOyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgfSAKKy5FWENMVURFRCB7IAorICAgY29sb3I6ICM2NjY2NjY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjOTk5OTk5OyB9IAorLklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy5FWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogIzk5OTk5OTsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCistLT4gCis8L3N0eWxlPiAKKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IiM5OTk5OTkiPgorPGgxPkV4cGxhbmF0aW9uIG9mIHRoZSBvdXRwdXQ8L2gxPgorPHA+VGhlIGZvbGxvd2luZyB0ZXh0IGNvbnRhaW5zIHRoZSBub2Rlc2V0IG9mIHRoZSBnaXZlbiBSZWZlcmVuY2UgYmVmb3JlIGl0IGlzIGNhbm9uaWNhbGl6ZWQuIFRoZXJlIGV4aXN0IGZvdXIgZGlmZmVyZW50IHN0eWxlcyB0byBpbmRpY2F0ZSBob3cgYSBnaXZlbiBub2RlIGlzIHRyZWF0ZWQuPC9wPgorPHVsPgorPGxpIGNsYXNzPSJJTkNMVURFRCI+QSBub2RlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRCI+QSBub2RlIHdoaWNoIGlzIDxlbT5OT1Q8L2VtPiBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCBFWENMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiBOT1QgdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8L3VsPgorPGgxPk91dHB1dDwvaDE+Cis8cHJlPgorPHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7IS0tIFhQYXRoPSJzZWxmOjpQYXJlbnQgb3IgKHBhcmVudDo6UGFyZW50IGFuZCBub3Qoc2VsZjo6Q2hpbGQpKSBvciBzZWxmOjpHcmFuZENoaWxkIG9yIHBhcmVudDo6R3JhbmRDaGlsZCIgLS0mZ3Q7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7IS0tIFJlc3VsdCBDMTROOgorPFBhcmVudCB4bWw6Zm9vPSJiYXIiIHhtbDpmb29sPSJiYXJiYXIiIHhtbDpsYW5nPSJlbiIgeG1sOnNwYWNlPSJkZWZhdWx0Ij4KKyAgICA8R3JhbmRDaGlsZCB4bWw6Zm9vPSJiYXJiYXJvc3NhIiB4bWw6Zm9vbD0iYmFyYmFyIiB4bWw6bGFuZz0iZ2UiIHhtbDpzcGFjZT0icHJlc2VydmUiPjwvR3JhbmRDaGlsZD4KKyAgPC9QYXJlbnQ+CistLSZndDsKKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDshLS0gQW5ub3RhdGlvbiBDMTROOgorMS4gUGFyZW50IGluaGVydHMgeG1sOmxhbmcgYW5kIHhtbDpzcGFjZSBzaW5jZSBpdCBpcyBhbiBvcnBoYW4gbm9kZS4KKzIuIFBhcmVudCBoYXMgZXhwbGljaXRseSBkZWNsYXJlZCBhdHRyaWJ1dGVzIHhtbDpmb28gYW5kIHhtbDpmb29sLgorMy4gR3JhbmRDaGlsZCBpbmhlcnRzIHhtbDpmb28gZnJvbSBpdHMgQ2hpbGQgYW5jZXN0b3IuCis0LiBHcmFuZENoaWxkIGluaGVyaXRzIHhtbDpmb29sIGZyb20gaXRzIFBhcmVudCBhbmNlc3Rvci4KKzUuIEdyYW5kQ2hpbGQgaW5oZXJpdHMgeG1sOmxhbmcgZnJvbSBpdHMgQ2hpbGQgYW5jZXN0b3IuCis2LiBHcmFuZENoaWxkIGhhcyBleHBsaWNpdGx5IGRlY2xhcmVkIGF0dHJpYnV0ZSB4bWw6c3BhY2UuCistLSZndDsKKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDshLS0gUmVzdWx0IEVDMTROOgorPFBhcmVudCB4bWw6Zm9vPSJiYXIiIHhtbDpmb29sPSJiYXJiYXIiPgorICAgIDxHcmFuZENoaWxkIHhtOnNwYWNlPSJwcmVzZXJ2ZSI+PC9HcmFuZENoaWxkPgorICA8L1BhcmVudD4KKy0tJmd0OworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0OyEtLSBBbm5vdGF0aW9uIEVDMTROOgorMS4gT25seSB0aG9zZSBhdHRyaWJ1dGVzIGluIHRoZSB4bWwgbmFtZXNwYWNlIGFyZSByZW5kZXJlZCwgd2hpY2ggYXJlCisgICBleHBsaWNpdGVseSBkZWNsYXJlZCBpbiB0aGUgYXR0cmlidXRlIGF4aXMgb2YgYW4gZWxlbWVudC4KKy0tJmd0OworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0dyYW5kUGFyZW50PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpsYW5nPSJlbiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sOnNwYWNlPSJkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O1BhcmVudDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxucz0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWw6Zm9vPSJiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbDpmb29sPSJiYXJiYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPgorICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtDaGlsZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWw6Zm9vPSJiYXJiYXJvc3NhIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWw6bGFuZz0iZ2UiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O0dyYW5kQ2hpbGQ8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sOnNwYWNlPSJwcmVzZXJ2ZSI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9HcmFuZENoaWxkJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvQ2hpbGQmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+CisgIDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvUGFyZW50Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9HcmFuZFBhcmVudCZndDs8L3NwYW4+PC9wcmU+PC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZMy9jMTRuLTAudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTMvYzE0bi0wLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWJkNmRkCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTMvYzE0bi0wLnR4dApAQCAtMCwwICsxLDMgQEAKKzxQYXJlbnQgeG1sOmZvbz0iYmFyIiB4bWw6Zm9vbD0iYmFyYmFyIiB4bWw6bGFuZz0iZW4iIHhtbDpzcGFjZT0iZGVmYXVsdCI+CisgICAgPEdyYW5kQ2hpbGQgeG1sOmZvbz0iYmFyYmFyb3NzYSIgeG1sOmZvb2w9ImJhcmJhciIgeG1sOmxhbmc9ImdlIiB4bWw6c3BhY2U9InByZXNlcnZlIj48L0dyYW5kQ2hpbGQ+CisgIDwvUGFyZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1kzL2MxNG4tMS5odG1sIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTMvYzE0bi0xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUyNmM0MgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1kzL2MxNG4tMS5odG1sCkBAIC0wLDAgKzEsNjggQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DYW5pbmljYWwgWE1MIG5vZGUgc2V0PC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cis8IS0tIAorLklOQ0xVREVEIHsgCisgICBjb2xvcjogIzAwMDAwMDsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IH0gCisuRVhDTFVERUQgeyAKKyAgIGNvbG9yOiAjNjY2NjY2OyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgIzk5OTk5OTsgfSAKKy5JTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCisuRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICM5OTk5OTk7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLS0+IAorPC9zdHlsZT4gCis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSIjOTk5OTk5Ij4KKzxoMT5FeHBsYW5hdGlvbiBvZiB0aGUgb3V0cHV0PC9oMT4KKzxwPlRoZSBmb2xsb3dpbmcgdGV4dCBjb250YWlucyB0aGUgbm9kZXNldCBvZiB0aGUgZ2l2ZW4gUmVmZXJlbmNlIGJlZm9yZSBpdCBpcyBjYW5vbmljYWxpemVkLiBUaGVyZSBleGlzdCBmb3VyIGRpZmZlcmVudCBzdHlsZXMgdG8gaW5kaWNhdGUgaG93IGEgZ2l2ZW4gbm9kZSBpcyB0cmVhdGVkLjwvcD4KKzx1bD4KKzxsaSBjbGFzcz0iSU5DTFVERUQiPkEgbm9kZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERUQiPkEgbm9kZSB3aGljaCBpcyA8ZW0+Tk9UPC9lbT4gaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgRVhDTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gTk9UIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPC91bD4KKzxoMT5PdXRwdXQ8L2gxPgorPHByZT4KKzxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0OyEtLSBYUGF0aD0ic2VsZjo6UGFyZW50IG9yIChwYXJlbnQ6OlBhcmVudCBhbmQgbm90KHNlbGY6OkNoaWxkKSkgb3Igc2VsZjo6R3JhbmRDaGlsZCBvciBwYXJlbnQ6OkdyYW5kQ2hpbGQiIC0tJmd0OworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0OyEtLSBSZXN1bHQgQzE0TjoKKzxQYXJlbnQgeG1sOmZvbz0iYmFyIiB4bWw6Zm9vbD0iYmFyYmFyIiB4bWw6bGFuZz0iZW4iIHhtbDpzcGFjZT0iZGVmYXVsdCI+CisgICAgPEdyYW5kQ2hpbGQgeG1sOmZvbz0iYmFyYmFyb3NzYSIgeG1sOmZvb2w9ImJhcmJhciIgeG1sOmxhbmc9ImdlIiB4bWw6c3BhY2U9InByZXNlcnZlIj48L0dyYW5kQ2hpbGQ+CisgIDwvUGFyZW50PgorLS0mZ3Q7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7IS0tIEFubm90YXRpb24gQzE0TjoKKzEuIFBhcmVudCBpbmhlcnRzIHhtbDpsYW5nIGFuZCB4bWw6c3BhY2Ugc2luY2UgaXQgaXMgYW4gb3JwaGFuIG5vZGUuCisyLiBQYXJlbnQgaGFzIGV4cGxpY2l0bHkgZGVjbGFyZWQgYXR0cmlidXRlcyB4bWw6Zm9vIGFuZCB4bWw6Zm9vbC4KKzMuIEdyYW5kQ2hpbGQgaW5oZXJ0cyB4bWw6Zm9vIGZyb20gaXRzIENoaWxkIGFuY2VzdG9yLgorNC4gR3JhbmRDaGlsZCBpbmhlcml0cyB4bWw6Zm9vbCBmcm9tIGl0cyBQYXJlbnQgYW5jZXN0b3IuCis1LiBHcmFuZENoaWxkIGluaGVyaXRzIHhtbDpsYW5nIGZyb20gaXRzIENoaWxkIGFuY2VzdG9yLgorNi4gR3JhbmRDaGlsZCBoYXMgZXhwbGljaXRseSBkZWNsYXJlZCBhdHRyaWJ1dGUgeG1sOnNwYWNlLgorLS0mZ3Q7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7IS0tIFJlc3VsdCBFQzE0TjoKKzxQYXJlbnQgeG1sOmZvbz0iYmFyIiB4bWw6Zm9vbD0iYmFyYmFyIj4KKyAgICA8R3JhbmRDaGlsZCB4bTpzcGFjZT0icHJlc2VydmUiPjwvR3JhbmRDaGlsZD4KKyAgPC9QYXJlbnQ+CistLSZndDsKKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDshLS0gQW5ub3RhdGlvbiBFQzE0TjoKKzEuIE9ubHkgdGhvc2UgYXR0cmlidXRlcyBpbiB0aGUgeG1sIG5hbWVzcGFjZSBhcmUgcmVuZGVyZWQsIHdoaWNoIGFyZQorICAgZXhwbGljaXRlbHkgZGVjbGFyZWQgaW4gdGhlIGF0dHJpYnV0ZSBheGlzIG9mIGFuIGVsZW1lbnQuCistLSZndDsKKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtHcmFuZFBhcmVudDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWw6bGFuZz0iZW4iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpzcGFjZT0iZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgIDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtQYXJlbnQ8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sOmZvbz0iYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWw6Zm9vbD0iYmFyYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4KKyAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Q2hpbGQ8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sOmZvbz0iYmFyYmFyb3NzYSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sOmxhbmc9ImdlIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtHcmFuZENoaWxkPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbDpzcGFjZT0icHJlc2VydmUiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvR3JhbmRDaGlsZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0NoaWxkJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPgorICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L1BhcmVudCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvR3JhbmRQYXJlbnQmZ3Q7PC9zcGFuPjwvcHJlPjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTMvYzE0bi0xLnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1kzL2MxNG4tMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQxZWNlNgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1kzL2MxNG4tMS50eHQKQEAgLTAsMCArMSwzIEBACis8UGFyZW50IHhtbDpmb289ImJhciIgeG1sOmZvb2w9ImJhcmJhciI+CisgICAgPEdyYW5kQ2hpbGQgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PC9HcmFuZENoaWxkPgorICA8L1BhcmVudD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZMy9jMTRuLTIuaHRtbCBiL2RhdGEvaW50ZXJvcC9jMTRuL1kzL2MxNG4tMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyZjRkNTAKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZMy9jMTRuLTIuaHRtbApAQCAtMCwwICsxLDY4IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q2FuaW5pY2FsIFhNTCBub2RlIHNldDwvdGl0bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorPCEtLSAKKy5JTkNMVURFRCB7IAorICAgY29sb3I6ICMwMDAwMDA7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyB9IAorLkVYQ0xVREVEIHsgCisgICBjb2xvcjogIzY2NjY2NjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICM5OTk5OTk7IH0gCisuSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5OTk5OyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy0tPiAKKzwvc3R5bGU+IAorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0iIzk5OTk5OSI+Cis8aDE+RXhwbGFuYXRpb24gb2YgdGhlIG91dHB1dDwvaDE+Cis8cD5UaGUgZm9sbG93aW5nIHRleHQgY29udGFpbnMgdGhlIG5vZGVzZXQgb2YgdGhlIGdpdmVuIFJlZmVyZW5jZSBiZWZvcmUgaXQgaXMgY2Fub25pY2FsaXplZC4gVGhlcmUgZXhpc3QgZm91ciBkaWZmZXJlbnQgc3R5bGVzIHRvIGluZGljYXRlIGhvdyBhIGdpdmVuIG5vZGUgaXMgdHJlYXRlZC48L3A+Cis8dWw+Cis8bGkgY2xhc3M9IklOQ0xVREVEIj5BIG5vZGUgd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVEIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVEIj5BIG5vZGUgd2hpY2ggaXMgPGVtPk5PVDwvZW0+IGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIEVYQ0xVREVEIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgQU5EIGluIHRoZSBJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3QgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0Ugc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIE5PVCB0aGUgbm9kZSBzZXQgQU5EIGluIHRoZSBJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3QgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0Ugc3R5bGUuPC9saT4KKzwvdWw+Cis8aDE+T3V0cHV0PC9oMT4KKzxwcmU+Cis8c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDshLS0gWFBhdGg9InNlbGY6OlBhcmVudCBvciAocGFyZW50OjpQYXJlbnQgYW5kIG5vdChzZWxmOjpkZWZhdWx0OkNoaWxkKSkgb3Igc2VsZjo6R3JhbmRDaGlsZCBvciBwYXJlbnQ6OkdyYW5kQ2hpbGQiIC0tJmd0OworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0OyEtLSBhZGRpdGlvbmFsTlNQcmVmaXhlcz0iZGVmYXVsdCBodHRwOi8vZXhhbXBsZS5vcmciIC0tJmd0OworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0OyEtLSBSZXN1bHQgQzE0TjoKKzxQYXJlbnQ+CisgICAgPEdyYW5kQ2hpbGQ+PC9HcmFuZENoaWxkPgorICA8L1BhcmVudD4KKy0tJmd0OworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0OyEtLSBBbm5vdGF0aW9uIEMxNE46CisxLiBUaGUgeG1sbnM9IiIgb2YgUGFyZW50IGlzIG5vdCByZW5kZXJlZCwgYWx0aG91Z2ggaXQgaXMgZXhwbGljaXRseSBkZWNsYXJlZC4KKyAgIFRoaXMgaXMgYmVjYXVzZSBQYXJlbnQgaGFzIG5vIG91dHB1dCBwYXJlbnQgd2l0aCBhIGRlZmF1bHQgbmFtZXNwYWNlIGRlY2xhLQorICAgcmF0aW9uIHRoYXQgaXMgaW4gdGhlIG5vZGUgc2V0LgorMi4gVGhlIHhtbG5zPSIiIG9mIEdyYW5kQ2hpbGQgaXMgbm90IHJlbmRlcmVkLCBhbHRob3VnaCBpdCBpcyBleHBsaWNpdGx5CisgICBkZWNsYXJlZC4gVGhpcyBpcyBiZWNhdXNlIEdyYW5kQ2hpbGQgaGFzIG5vIG91dHB1dCBwYXJlbnQgd2l0aCBhIGRlZmF1bHQKKyAgIG5hbWVzcGFjZSBkZWNsYXJhdGlvbiB0aGF0IGlzIGluIHRoZSBub2RlIHNldC4KKy0tJmd0OworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0OyEtLSBSZXN1bHQgRUMxNE46Cis8UGFyZW50PgorICAgIDxHcmFuZENoaWxkPjwvR3JhbmRDaGlsZD4KKyAgPC9QYXJlbnQ+CistLSZndDsKKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDshLS0gQW5ub3RhdGlvbiBFQzE0TjoKK1NlZSBBbm5vdGF0aW9uIEMxNE4uCistLSZndDsKKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtHcmFuZFBhcmVudDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O1BhcmVudDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxucz0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4KKyAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Q2hpbGQ8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7R3JhbmRDaGlsZDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxucz0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L0dyYW5kQ2hpbGQmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9DaGlsZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4KKyAgPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9QYXJlbnQmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0dyYW5kUGFyZW50Jmd0Ozwvc3Bhbj48L3ByZT48L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1kzL2MxNG4tMi50eHQgYi9kYXRhL2ludGVyb3AvYzE0bi9ZMy9jMTRuLTIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxYTQ4ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZMy9jMTRuLTIudHh0CkBAIC0wLDAgKzEsMyBAQAorPFBhcmVudD4KKyAgICA8R3JhbmRDaGlsZD48L0dyYW5kQ2hpbGQ+CisgIDwvUGFyZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1kzL2MxNG4tMy5odG1sIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTMvYzE0bi0zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJmNGQ1MAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1kzL2MxNG4tMy5odG1sCkBAIC0wLDAgKzEsNjggQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DYW5pbmljYWwgWE1MIG5vZGUgc2V0PC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cis8IS0tIAorLklOQ0xVREVEIHsgCisgICBjb2xvcjogIzAwMDAwMDsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IH0gCisuRVhDTFVERUQgeyAKKyAgIGNvbG9yOiAjNjY2NjY2OyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgIzk5OTk5OTsgfSAKKy5JTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCisuRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICM5OTk5OTk7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLS0+IAorPC9zdHlsZT4gCis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSIjOTk5OTk5Ij4KKzxoMT5FeHBsYW5hdGlvbiBvZiB0aGUgb3V0cHV0PC9oMT4KKzxwPlRoZSBmb2xsb3dpbmcgdGV4dCBjb250YWlucyB0aGUgbm9kZXNldCBvZiB0aGUgZ2l2ZW4gUmVmZXJlbmNlIGJlZm9yZSBpdCBpcyBjYW5vbmljYWxpemVkLiBUaGVyZSBleGlzdCBmb3VyIGRpZmZlcmVudCBzdHlsZXMgdG8gaW5kaWNhdGUgaG93IGEgZ2l2ZW4gbm9kZSBpcyB0cmVhdGVkLjwvcD4KKzx1bD4KKzxsaSBjbGFzcz0iSU5DTFVERUQiPkEgbm9kZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERUQiPkEgbm9kZSB3aGljaCBpcyA8ZW0+Tk9UPC9lbT4gaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgRVhDTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gTk9UIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPC91bD4KKzxoMT5PdXRwdXQ8L2gxPgorPHByZT4KKzxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0OyEtLSBYUGF0aD0ic2VsZjo6UGFyZW50IG9yIChwYXJlbnQ6OlBhcmVudCBhbmQgbm90KHNlbGY6OmRlZmF1bHQ6Q2hpbGQpKSBvciBzZWxmOjpHcmFuZENoaWxkIG9yIHBhcmVudDo6R3JhbmRDaGlsZCIgLS0mZ3Q7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7IS0tIGFkZGl0aW9uYWxOU1ByZWZpeGVzPSJkZWZhdWx0IGh0dHA6Ly9leGFtcGxlLm9yZyIgLS0mZ3Q7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7IS0tIFJlc3VsdCBDMTROOgorPFBhcmVudD4KKyAgICA8R3JhbmRDaGlsZD48L0dyYW5kQ2hpbGQ+CisgIDwvUGFyZW50PgorLS0mZ3Q7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7IS0tIEFubm90YXRpb24gQzE0TjoKKzEuIFRoZSB4bWxucz0iIiBvZiBQYXJlbnQgaXMgbm90IHJlbmRlcmVkLCBhbHRob3VnaCBpdCBpcyBleHBsaWNpdGx5IGRlY2xhcmVkLgorICAgVGhpcyBpcyBiZWNhdXNlIFBhcmVudCBoYXMgbm8gb3V0cHV0IHBhcmVudCB3aXRoIGEgZGVmYXVsdCBuYW1lc3BhY2UgZGVjbGEtCisgICByYXRpb24gdGhhdCBpcyBpbiB0aGUgbm9kZSBzZXQuCisyLiBUaGUgeG1sbnM9IiIgb2YgR3JhbmRDaGlsZCBpcyBub3QgcmVuZGVyZWQsIGFsdGhvdWdoIGl0IGlzIGV4cGxpY2l0bHkKKyAgIGRlY2xhcmVkLiBUaGlzIGlzIGJlY2F1c2UgR3JhbmRDaGlsZCBoYXMgbm8gb3V0cHV0IHBhcmVudCB3aXRoIGEgZGVmYXVsdAorICAgbmFtZXNwYWNlIGRlY2xhcmF0aW9uIHRoYXQgaXMgaW4gdGhlIG5vZGUgc2V0LgorLS0mZ3Q7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7IS0tIFJlc3VsdCBFQzE0TjoKKzxQYXJlbnQ+CisgICAgPEdyYW5kQ2hpbGQ+PC9HcmFuZENoaWxkPgorICA8L1BhcmVudD4KKy0tJmd0OworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0OyEtLSBBbm5vdGF0aW9uIEVDMTROOgorU2VlIEFubm90YXRpb24gQzE0Ti4KKy0tJmd0OworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0dyYW5kUGFyZW50PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7UGFyZW50PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPgorICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtDaGlsZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtHcmFuZENoaWxkPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvR3JhbmRDaGlsZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0NoaWxkJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPgorICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L1BhcmVudCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvR3JhbmRQYXJlbnQmZ3Q7PC9zcGFuPjwvcHJlPjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTMvYzE0bi0zLnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1kzL2MxNG4tMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFhNDhkMwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1kzL2MxNG4tMy50eHQKQEAgLTAsMCArMSwzIEBACis8UGFyZW50PgorICAgIDxHcmFuZENoaWxkPjwvR3JhbmRDaGlsZD4KKyAgPC9QYXJlbnQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTMvYzE0bi00Lmh0bWwgYi9kYXRhL2ludGVyb3AvYzE0bi9ZMy9jMTRuLTQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWZjNTM1Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTMvYzE0bi00Lmh0bWwKQEAgLTAsMCArMSwxMDEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DYW5pbmljYWwgWE1MIG5vZGUgc2V0PC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cis8IS0tIAorLklOQ0xVREVEIHsgCisgICBjb2xvcjogIzAwMDAwMDsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IH0gCisuRVhDTFVERUQgeyAKKyAgIGNvbG9yOiAjNjY2NjY2OyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgIzk5OTk5OTsgfSAKKy5JTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCisuRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICM5OTk5OTk7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLS0+IAorPC9zdHlsZT4gCis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSIjOTk5OTk5Ij4KKzxoMT5FeHBsYW5hdGlvbiBvZiB0aGUgb3V0cHV0PC9oMT4KKzxwPlRoZSBmb2xsb3dpbmcgdGV4dCBjb250YWlucyB0aGUgbm9kZXNldCBvZiB0aGUgZ2l2ZW4gUmVmZXJlbmNlIGJlZm9yZSBpdCBpcyBjYW5vbmljYWxpemVkLiBUaGVyZSBleGlzdCBmb3VyIGRpZmZlcmVudCBzdHlsZXMgdG8gaW5kaWNhdGUgaG93IGEgZ2l2ZW4gbm9kZSBpcyB0cmVhdGVkLjwvcD4KKzx1bD4KKzxsaSBjbGFzcz0iSU5DTFVERUQiPkEgbm9kZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERUQiPkEgbm9kZSB3aGljaCBpcyA8ZW0+Tk9UPC9lbT4gaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgRVhDTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gTk9UIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPC91bD4KKzxoMT5PdXRwdXQ8L2gxPgorPHByZT4KKzxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0OyEtLSBYUGF0aD0ic2VsZjo6ZGVmYXVsdDpQYXJlbnQgb3IgKHBhcmVudDo6ZGVmYXVsdDpQYXJlbnQgYW5kIG5vdChzZWxmOjpkZWZhdWx0OkNoaWxkKSkgb3Igc2VsZjo6bnMxOkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpuczE6R3JhbmRDaGlsZCBvciBzZWxmOjpkZWZhdWx0OkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpkZWZhdWx0OkdyYW5kQ2hpbGQiIC0tJmd0OworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0OyEtLSBhZGRpdGlvbmFsTlNQcmVmaXhlcz0iZGVmYXVsdCBodHRwOi8vZXhhbXBsZS5vcmcvZGVmYXVsdCBuczEgaHR0cDovL2V4YW1wbGUub3JnL25zMSIgLS0mZ3Q7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7IS0tIFJlc3VsdCBDMTROOgorPFBhcmVudCB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnL2RlZmF1bHQiPgorICAgIDxuczE6R3JhbmRDaGlsZCB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiPjwvbnMxOkdyYW5kQ2hpbGQ+PG5zMTpHcmFuZENoaWxkIHhtbG5zPSJodHRwOi8vYmFyLmNvbS9kZWZhdWx0IiB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiIEdlbmRlcj0ibWFsZSI+PC9uczE6R3JhbmRDaGlsZD48R3JhbmRDaGlsZCB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiPjwvR3JhbmRDaGlsZD48R3JhbmRDaGlsZCB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiIG5zMTpHZW5kZXI9Im1hbGUiPjwvR3JhbmRDaGlsZD4KKyAgPC9QYXJlbnQ+CisgLS0mZ3Q7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7IS0tIEFubm90YXRpb24gQzE0TjoKKzEuIFRoZSBkZWZhdWx0IG5hbWVzcGFjZSBub2RlIGlzIHJlbmRlcmVkIGZvciBQYXJlbnQsIHNpbmNlIGl0IGlzCisgICBpbmhlcml0ZWQgZnJvbSBHcmFuZFBhcmVudC4KKzIuIFRoZSBuczEgbmFtZXNwYWNlIG5vZGUgaXMgcmVuZGVyZWQgZm9yIHRoZSBmaXJzdCBHcmFuZENoaWxkLCBzaW5jZQorICAgaXQgaXMgaW5oZXJpdGVkIGZyb20gQ2hpbGQuCiszLiBUaGUgZGVmYXVsdCBuYW1lc3BhY2Ugbm9kZSBpcyBub3QgcmVuZGVyZWQgZm9yIHRoZSBmaXJzdCBHcmFuZENoaWxkLAorICAgc2luY2UgdGhlIG91dHB1dCBwYXJlbnQgb2YgR3JhbmRDaGlsZCAoUGFyZW50KSBoYXMgdGhlIHNhbWUgbmFtZXNwYWNlCisgICBub2RlIHdpdGggdGhlIHNhbWUgdmFsdWUsIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldC4KKzQuIFRoZSBuczEgbmFtZXNwYWNlIG5vZGUgaXMgcmVuZGVyZWQgZm9yIHRoZSBzZWNvbmQgR3JhbmRDaGlsZCAoc2FtZSBhcyAyKS4KKzUuIFRoZSBkZWZhdWx0IG5hbWVzcGFjZSBub2RlIGlzIHJlbmRlcmVkIGZvciB0aGUgc2Vjb25kIEdyYW5kQ2hpbGQsCisgICBzaW5jZSBpdCBpcyBleHBsaWNpdGx5IGRlY2xhcmVkLCBhbmQgaGFzIGEgZGlmZmVyZW50IHZhbHVlIHRoYW4gdGhhdCBvZgorICAgUGFyZW50LgorNi4gVGhlIG5zMSBuYW1lc3BhY2Ugbm9kZSBpcyByZW5kZXJlZCBmb3IgdGhlIHRoaXJkIEdyYW5kQ2hpbGQgKHNhbWUgYXMgMikuICAgCis3LiBUaGUgZGVmYXVsdCBuYW1lc3BhY2Ugbm9kZSBpcyBub3QgcmVuZGVyZWQgZm9yIHRoZSB0aGlyZCBHcmFuZENoaWxkIAorICAgKHNhbWUgYXMgMykuCis4LiBUaGUgbnMxIG5hbWVzcGFjZSBub2RlIGlzIHJlbmRlcmVkIGZvciB0aGUgZm91cnRoIEdyYW5kQ2hpbGQgKHNhbWUgYXMgMikuICAgCis5LiBUaGUgZGVmYXVsdCBuYW1lc3BhY2Ugbm9kZSBpcyBub3QgcmVuZGVyZWQgZm91cnRoIHRoZSB0aGlyZCBHcmFuZENoaWxkIAorICAgKHNhbWUgYXMgMykuCistLSZndDsKKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDshLS0gUmVzdWx0IEVDMTROOgorPFBhcmVudCB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnL2RlZmF1bHQiPgorICAgIDxuczE6R3JhbmRDaGlsZCB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiPjwvbnMxOkdyYW5kQ2hpbGQ+PG5zMTpHcmFuZENoaWxkIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSIgR2VuZGVyPSJtYWxlIj48L25zMTpHcmFuZENoaWxkPjxHcmFuZENoaWxkPjwvR3JhbmRDaGlsZD48R3JhbmRDaGlsZCB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiIG5zMTpHZW5kZXI9Im1hbGUiPjwvR3JhbmRDaGlsZD4gCisgIDwvUGFyZW50PiAgICAKKy0tJmd0OworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0OyEtLSBBbm5vdGF0aW9uIEVDMTROOgorMS4gVGhlIGRlZmF1bHQgbmFtZXNwYWNlIG5vZGUgaXMgcmVuZGVyZWQgZm9yIFBhcmVudCwgc2luY2UgaXQgaXMgdmlzaWJseQorICAgdXRpbGl6ZWQgYnkgUGFyZW50LgorMi4gVGhlIG5zMSBuYW1lc3BhY2UgYXR0cmlidXRlIGlzIHJlbmRlcmVkIGZvciB0aGUgZmlyc3QgR3JhbmRDaGlsZCwgc2luY2UgaXQKKyAgIGlzIHZpc2libHkgdXRpbGl6ZWQgYnkgR3JhbmRDaGlsZC4KKzMuIFRoZSBkZWZhdWx0IG5hbWVzcGFjZSBub2RlIGlzIG5vdCByZW5kZXJlZCBmb3IgdGhlIGZpcnN0IEdyYW5kQ2hpbGQsIHNpbmNlCisgICBpdCBpcyBub3QgdmlzaWJseSB1dGlsaXplZC4KKzQuIFRoZSBuczEgbmFtZXNwYWNlIGF0dHJpYnV0ZSBpcyByZW5kZXJlZCBmb3IgdGhlIHNlY29uZCBHcmFuZENoaWxkLCBzaW5jZSBpdAorICAgaXMgdmlzaWJseSB1dGlsaXplZCBieSBHcmFuZENoaWxkLgorNS4gVGhlIGRlZmF1bHQgbmFtZXNwYWNlIG5vZGUgaXMgbm90IHJlbmRlcmVkIGZvciB0aGUgc2Vjb25kIEdyYW5kQ2hpbGQsIHNpbmNlCisgICBpdCBpcyBub3QgdmlzaWJseSB1dGlsaXplZCBieSBHcmFuZENoaWxkLiBUaGUgR2VuZGVyIGF0dHJpYnV0ZSBpcyBpbiBubworICAgbmFtZXNwYWNlLgorNi4gVGhlIG5zMSBuYW1lc3BhY2Ugbm9kZSBpcyBub3QgcmVuZGVyZWQgZm9yIHRoZSB0aGlyZCBHcmFuZENoaWxkLCBzaW5jZSBpdAorICAgaXMgbm90IHZpc2libHkgdXRpbGl6ZWQuCis3LiBUaGUgZGVmYXVsdCBuYW1lc3BhY2Ugbm9kZSBpcyBub3QgcmVuZGVyZWQgZm9yIHRoZSB0aGlyZCBHcmFuZENoaWxkLiBJdCBpcworICAgdmlzaWJseSB1dGlsaXplZCwgYnV0IHRoZSBzYW1lIG5hbWVzcGFjZSBub2RlIHdpdGggdGhlIHNhbWUgdmFsdWUgaGFzIGFscmVhZHkKKyAgIGJlZW4gcmVuZGVyZWQgaW4gUGFyZW50IChhbiBvdXRwdXQgcGFyZW50IG9mIEdyYW5kQ2hpbGQpLgorOC4gVGhlIGRlZmF1bHQgbmFtZXNwYWNlIG5vZGUgaXMgbm90IHJlbmRlcmVkIGZvciB0aGUgZm91cnRoIEdyYW5kQ2hpbGQsIHNpbmNlCisgICBpdCBpcyBub3QgdmlzaWJseSB1dGlsaXplZC4KKzkuIFRoZSBuczEgbmFtZXNwYWNlIG5vZGUgaXMgcmVuZGVyZWQgZm9yIHRoZSBmb3VydGggR3JhbmRDaGlsZCwgc2luY2UgaXQgaXMKKyAgIHZpc2libHkgdXRpbGl6ZWQgYnkgdGhlIG5zMTpHZW5kZXIgYXR0cmlidXRlIG9mIEdyYW5kQ2hpbGQuCistLSZndDsKKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtHcmFuZFBhcmVudDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnL2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7UGFyZW50PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+CisgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0NoaWxkPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtuczE6R3JhbmRDaGlsZDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnL2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9uczE6R3JhbmRDaGlsZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtuczE6R3JhbmRDaGlsZDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxucz0iaHR0cDovL2Jhci5jb20vZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiBHZW5kZXI9Im1hbGUiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvbnMxOkdyYW5kQ2hpbGQmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7R3JhbmRDaGlsZDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnL2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9HcmFuZENoaWxkJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O0dyYW5kQ2hpbGQ8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy9kZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IG5zMTpHZW5kZXI9Im1hbGUiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvR3JhbmRDaGlsZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0NoaWxkJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPgorICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L1BhcmVudCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvR3JhbmRQYXJlbnQmZ3Q7PC9zcGFuPjwvcHJlPjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTMvYzE0bi00LnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1kzL2MxNG4tNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQyYTNjOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1kzL2MxNG4tNC50eHQKQEAgLTAsMCArMSwzIEBACis8UGFyZW50IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvZGVmYXVsdCI+CisgICAgPG5zMTpHcmFuZENoaWxkIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSI+PC9uczE6R3JhbmRDaGlsZD48bnMxOkdyYW5kQ2hpbGQgeG1sbnM9Imh0dHA6Ly9iYXIuY29tL2RlZmF1bHQiIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSIgR2VuZGVyPSJtYWxlIj48L25zMTpHcmFuZENoaWxkPjxHcmFuZENoaWxkIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSI+PC9HcmFuZENoaWxkPjxHcmFuZENoaWxkIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSIgbnMxOkdlbmRlcj0ibWFsZSI+PC9HcmFuZENoaWxkPgorICA8L1BhcmVudD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZMy9jMTRuLTUuaHRtbCBiL2RhdGEvaW50ZXJvcC9jMTRuL1kzL2MxNG4tNS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxZmM1MzUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZMy9jMTRuLTUuaHRtbApAQCAtMCwwICsxLDEwMSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNhbmluaWNhbCBYTUwgbm9kZSBzZXQ8L3RpdGxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKzwhLS0gCisuSU5DTFVERUQgeyAKKyAgIGNvbG9yOiAjMDAwMDAwOyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgfSAKKy5FWENMVURFRCB7IAorICAgY29sb3I6ICM2NjY2NjY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjOTk5OTk5OyB9IAorLklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy5FWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogIzk5OTk5OTsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCistLT4gCis8L3N0eWxlPiAKKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IiM5OTk5OTkiPgorPGgxPkV4cGxhbmF0aW9uIG9mIHRoZSBvdXRwdXQ8L2gxPgorPHA+VGhlIGZvbGxvd2luZyB0ZXh0IGNvbnRhaW5zIHRoZSBub2Rlc2V0IG9mIHRoZSBnaXZlbiBSZWZlcmVuY2UgYmVmb3JlIGl0IGlzIGNhbm9uaWNhbGl6ZWQuIFRoZXJlIGV4aXN0IGZvdXIgZGlmZmVyZW50IHN0eWxlcyB0byBpbmRpY2F0ZSBob3cgYSBnaXZlbiBub2RlIGlzIHRyZWF0ZWQuPC9wPgorPHVsPgorPGxpIGNsYXNzPSJJTkNMVURFRCI+QSBub2RlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRCI+QSBub2RlIHdoaWNoIGlzIDxlbT5OT1Q8L2VtPiBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCBFWENMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiBOT1QgdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8L3VsPgorPGgxPk91dHB1dDwvaDE+Cis8cHJlPgorPHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7IS0tIFhQYXRoPSJzZWxmOjpkZWZhdWx0OlBhcmVudCBvciAocGFyZW50OjpkZWZhdWx0OlBhcmVudCBhbmQgbm90KHNlbGY6OmRlZmF1bHQ6Q2hpbGQpKSBvciBzZWxmOjpuczE6R3JhbmRDaGlsZCBvciBwYXJlbnQ6Om5zMTpHcmFuZENoaWxkIG9yIHNlbGY6OmRlZmF1bHQ6R3JhbmRDaGlsZCBvciBwYXJlbnQ6OmRlZmF1bHQ6R3JhbmRDaGlsZCIgLS0mZ3Q7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7IS0tIGFkZGl0aW9uYWxOU1ByZWZpeGVzPSJkZWZhdWx0IGh0dHA6Ly9leGFtcGxlLm9yZy9kZWZhdWx0IG5zMSBodHRwOi8vZXhhbXBsZS5vcmcvbnMxIiAtLSZndDsKKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDshLS0gUmVzdWx0IEMxNE46Cis8UGFyZW50IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvZGVmYXVsdCI+CisgICAgPG5zMTpHcmFuZENoaWxkIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSI+PC9uczE6R3JhbmRDaGlsZD48bnMxOkdyYW5kQ2hpbGQgeG1sbnM9Imh0dHA6Ly9iYXIuY29tL2RlZmF1bHQiIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSIgR2VuZGVyPSJtYWxlIj48L25zMTpHcmFuZENoaWxkPjxHcmFuZENoaWxkIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSI+PC9HcmFuZENoaWxkPjxHcmFuZENoaWxkIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSIgbnMxOkdlbmRlcj0ibWFsZSI+PC9HcmFuZENoaWxkPgorICA8L1BhcmVudD4KKyAtLSZndDsKKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDshLS0gQW5ub3RhdGlvbiBDMTROOgorMS4gVGhlIGRlZmF1bHQgbmFtZXNwYWNlIG5vZGUgaXMgcmVuZGVyZWQgZm9yIFBhcmVudCwgc2luY2UgaXQgaXMKKyAgIGluaGVyaXRlZCBmcm9tIEdyYW5kUGFyZW50LgorMi4gVGhlIG5zMSBuYW1lc3BhY2Ugbm9kZSBpcyByZW5kZXJlZCBmb3IgdGhlIGZpcnN0IEdyYW5kQ2hpbGQsIHNpbmNlCisgICBpdCBpcyBpbmhlcml0ZWQgZnJvbSBDaGlsZC4KKzMuIFRoZSBkZWZhdWx0IG5hbWVzcGFjZSBub2RlIGlzIG5vdCByZW5kZXJlZCBmb3IgdGhlIGZpcnN0IEdyYW5kQ2hpbGQsCisgICBzaW5jZSB0aGUgb3V0cHV0IHBhcmVudCBvZiBHcmFuZENoaWxkIChQYXJlbnQpIGhhcyB0aGUgc2FtZSBuYW1lc3BhY2UKKyAgIG5vZGUgd2l0aCB0aGUgc2FtZSB2YWx1ZSwgd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0LgorNC4gVGhlIG5zMSBuYW1lc3BhY2Ugbm9kZSBpcyByZW5kZXJlZCBmb3IgdGhlIHNlY29uZCBHcmFuZENoaWxkIChzYW1lIGFzIDIpLgorNS4gVGhlIGRlZmF1bHQgbmFtZXNwYWNlIG5vZGUgaXMgcmVuZGVyZWQgZm9yIHRoZSBzZWNvbmQgR3JhbmRDaGlsZCwKKyAgIHNpbmNlIGl0IGlzIGV4cGxpY2l0bHkgZGVjbGFyZWQsIGFuZCBoYXMgYSBkaWZmZXJlbnQgdmFsdWUgdGhhbiB0aGF0IG9mCisgICBQYXJlbnQuCis2LiBUaGUgbnMxIG5hbWVzcGFjZSBub2RlIGlzIHJlbmRlcmVkIGZvciB0aGUgdGhpcmQgR3JhbmRDaGlsZCAoc2FtZSBhcyAyKS4gICAKKzcuIFRoZSBkZWZhdWx0IG5hbWVzcGFjZSBub2RlIGlzIG5vdCByZW5kZXJlZCBmb3IgdGhlIHRoaXJkIEdyYW5kQ2hpbGQgCisgICAoc2FtZSBhcyAzKS4KKzguIFRoZSBuczEgbmFtZXNwYWNlIG5vZGUgaXMgcmVuZGVyZWQgZm9yIHRoZSBmb3VydGggR3JhbmRDaGlsZCAoc2FtZSBhcyAyKS4gICAKKzkuIFRoZSBkZWZhdWx0IG5hbWVzcGFjZSBub2RlIGlzIG5vdCByZW5kZXJlZCBmb3VydGggdGhlIHRoaXJkIEdyYW5kQ2hpbGQgCisgICAoc2FtZSBhcyAzKS4KKy0tJmd0OworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0OyEtLSBSZXN1bHQgRUMxNE46Cis8UGFyZW50IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvZGVmYXVsdCI+CisgICAgPG5zMTpHcmFuZENoaWxkIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSI+PC9uczE6R3JhbmRDaGlsZD48bnMxOkdyYW5kQ2hpbGQgeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIiBHZW5kZXI9Im1hbGUiPjwvbnMxOkdyYW5kQ2hpbGQ+PEdyYW5kQ2hpbGQ+PC9HcmFuZENoaWxkPjxHcmFuZENoaWxkIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSIgbnMxOkdlbmRlcj0ibWFsZSI+PC9HcmFuZENoaWxkPiAKKyAgPC9QYXJlbnQ+ICAgIAorLS0mZ3Q7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7IS0tIEFubm90YXRpb24gRUMxNE46CisxLiBUaGUgZGVmYXVsdCBuYW1lc3BhY2Ugbm9kZSBpcyByZW5kZXJlZCBmb3IgUGFyZW50LCBzaW5jZSBpdCBpcyB2aXNpYmx5CisgICB1dGlsaXplZCBieSBQYXJlbnQuCisyLiBUaGUgbnMxIG5hbWVzcGFjZSBhdHRyaWJ1dGUgaXMgcmVuZGVyZWQgZm9yIHRoZSBmaXJzdCBHcmFuZENoaWxkLCBzaW5jZSBpdAorICAgaXMgdmlzaWJseSB1dGlsaXplZCBieSBHcmFuZENoaWxkLgorMy4gVGhlIGRlZmF1bHQgbmFtZXNwYWNlIG5vZGUgaXMgbm90IHJlbmRlcmVkIGZvciB0aGUgZmlyc3QgR3JhbmRDaGlsZCwgc2luY2UKKyAgIGl0IGlzIG5vdCB2aXNpYmx5IHV0aWxpemVkLgorNC4gVGhlIG5zMSBuYW1lc3BhY2UgYXR0cmlidXRlIGlzIHJlbmRlcmVkIGZvciB0aGUgc2Vjb25kIEdyYW5kQ2hpbGQsIHNpbmNlIGl0CisgICBpcyB2aXNpYmx5IHV0aWxpemVkIGJ5IEdyYW5kQ2hpbGQuCis1LiBUaGUgZGVmYXVsdCBuYW1lc3BhY2Ugbm9kZSBpcyBub3QgcmVuZGVyZWQgZm9yIHRoZSBzZWNvbmQgR3JhbmRDaGlsZCwgc2luY2UKKyAgIGl0IGlzIG5vdCB2aXNpYmx5IHV0aWxpemVkIGJ5IEdyYW5kQ2hpbGQuIFRoZSBHZW5kZXIgYXR0cmlidXRlIGlzIGluIG5vCisgICBuYW1lc3BhY2UuCis2LiBUaGUgbnMxIG5hbWVzcGFjZSBub2RlIGlzIG5vdCByZW5kZXJlZCBmb3IgdGhlIHRoaXJkIEdyYW5kQ2hpbGQsIHNpbmNlIGl0CisgICBpcyBub3QgdmlzaWJseSB1dGlsaXplZC4KKzcuIFRoZSBkZWZhdWx0IG5hbWVzcGFjZSBub2RlIGlzIG5vdCByZW5kZXJlZCBmb3IgdGhlIHRoaXJkIEdyYW5kQ2hpbGQuIEl0IGlzCisgICB2aXNpYmx5IHV0aWxpemVkLCBidXQgdGhlIHNhbWUgbmFtZXNwYWNlIG5vZGUgd2l0aCB0aGUgc2FtZSB2YWx1ZSBoYXMgYWxyZWFkeQorICAgYmVlbiByZW5kZXJlZCBpbiBQYXJlbnQgKGFuIG91dHB1dCBwYXJlbnQgb2YgR3JhbmRDaGlsZCkuCis4LiBUaGUgZGVmYXVsdCBuYW1lc3BhY2Ugbm9kZSBpcyBub3QgcmVuZGVyZWQgZm9yIHRoZSBmb3VydGggR3JhbmRDaGlsZCwgc2luY2UKKyAgIGl0IGlzIG5vdCB2aXNpYmx5IHV0aWxpemVkLgorOS4gVGhlIG5zMSBuYW1lc3BhY2Ugbm9kZSBpcyByZW5kZXJlZCBmb3IgdGhlIGZvdXJ0aCBHcmFuZENoaWxkLCBzaW5jZSBpdCBpcworICAgdmlzaWJseSB1dGlsaXplZCBieSB0aGUgbnMxOkdlbmRlciBhdHRyaWJ1dGUgb2YgR3JhbmRDaGlsZC4KKy0tJmd0OworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0dyYW5kUGFyZW50PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgIDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtQYXJlbnQ8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy9kZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4KKyAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Q2hpbGQ8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy9kZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O25zMTpHcmFuZENoaWxkPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L25zMTpHcmFuZENoaWxkJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O25zMTpHcmFuZENoaWxkPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zPSJodHRwOi8vYmFyLmNvbS9kZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IEdlbmRlcj0ibWFsZSI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9uczE6R3JhbmRDaGlsZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4KKyAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtHcmFuZENoaWxkPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L0dyYW5kQ2hpbGQmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7R3JhbmRDaGlsZDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnL2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4gbnMxOkdlbmRlcj0ibWFsZSI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9HcmFuZENoaWxkJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvQ2hpbGQmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+CisgIDwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvUGFyZW50Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9HcmFuZFBhcmVudCZndDs8L3NwYW4+PC9wcmU+PC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZMy9jMTRuLTUudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTMvYzE0bi01LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjE4OGU2Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTMvYzE0bi01LnR4dApAQCAtMCwwICsxLDMgQEAKKzxQYXJlbnQgeG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy9kZWZhdWx0Ij4KKyAgICA8bnMxOkdyYW5kQ2hpbGQgeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIj48L25zMTpHcmFuZENoaWxkPjxuczE6R3JhbmRDaGlsZCB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiIEdlbmRlcj0ibWFsZSI+PC9uczE6R3JhbmRDaGlsZD48R3JhbmRDaGlsZD48L0dyYW5kQ2hpbGQ+PEdyYW5kQ2hpbGQgeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIiBuczE6R2VuZGVyPSJtYWxlIj48L0dyYW5kQ2hpbGQ+CisgIDwvUGFyZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1kzL2MxNG4tNi5odG1sIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTMvYzE0bi02Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNiNjlkNAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1kzL2MxNG4tNi5odG1sCkBAIC0wLDAgKzEsNjggQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DYW5pbmljYWwgWE1MIG5vZGUgc2V0PC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cis8IS0tIAorLklOQ0xVREVEIHsgCisgICBjb2xvcjogIzAwMDAwMDsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IH0gCisuRVhDTFVERUQgeyAKKyAgIGNvbG9yOiAjNjY2NjY2OyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgIzk5OTk5OTsgfSAKKy5JTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCisuRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICM5OTk5OTk7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLS0+IAorPC9zdHlsZT4gCis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSIjOTk5OTk5Ij4KKzxoMT5FeHBsYW5hdGlvbiBvZiB0aGUgb3V0cHV0PC9oMT4KKzxwPlRoZSBmb2xsb3dpbmcgdGV4dCBjb250YWlucyB0aGUgbm9kZXNldCBvZiB0aGUgZ2l2ZW4gUmVmZXJlbmNlIGJlZm9yZSBpdCBpcyBjYW5vbmljYWxpemVkLiBUaGVyZSBleGlzdCBmb3VyIGRpZmZlcmVudCBzdHlsZXMgdG8gaW5kaWNhdGUgaG93IGEgZ2l2ZW4gbm9kZSBpcyB0cmVhdGVkLjwvcD4KKzx1bD4KKzxsaSBjbGFzcz0iSU5DTFVERUQiPkEgbm9kZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERUQiPkEgbm9kZSB3aGljaCBpcyA8ZW0+Tk9UPC9lbT4gaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgRVhDTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gTk9UIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPC91bD4KKzxoMT5PdXRwdXQ8L2gxPgorPHByZT4KKzxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0OyEtLSBYUGF0aD0ic2VsZjo6UGFyZW50IG9yIChwYXJlbnQ6OlBhcmVudCBhbmQgbm90KHNlbGY6OkNoaWxkKSkgb3Igc2VsZjo6bnMxOkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpuczE6R3JhbmRDaGlsZCIgLS0mZ3Q7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7IS0tIGFkZGl0aW9uYWxOU1ByZWZpeGVzPSJuczEgaHR0cDovL2V4YW1wbGUub3JnL25zMSIgLS0mZ3Q7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7IS0tIElubHVzaXZlTmFtZXNwYWNlUHJlZml4TGlzdD0ibnMyIiAtLSZndDsKKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDshLS0gUmVzdWx0IEMxNE46Cis8UGFyZW50PgorICAgIDxuczE6R3JhbmRDaGlsZCB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiIHhtbG5zOm5zMj0iaHR0cDovL2V4YW1wbGUub3JnL25zMiI+PC9uczE6R3JhbmRDaGlsZD4KKyAgPC9QYXJlbnQ+ICAgIAorIC0tJmd0OworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0OyEtLSBBbm5vdGF0aW9uIEMxNE46CisxLiBUaGUgbmFtZXNwYWNlIG5vZGVzIG5zMSB1bmQgbnMyIGFyZSByZW5kZXJlZCBmb3IgR3JhbmRDaGlsZCwgc2luY2UKKyAgIHRoZXkgYXJlIGJvdGggaW4gc2NvcGUgZm9yIEdyYW5kQ2hpbGQgYW5kIGluIHRoZSBvdXRwdXQgbm9kZSBzZXQuICAgCistLSZndDsKKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDshLS0gUmVzdWx0IEVDMTROOgorPFBhcmVudD4KKyAgICA8bnMxOkdyYW5kQ2hpbGQgeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIiB4bWxuczpuczI9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczIiPjwvbnMxOkdyYW5kQ2hpbGQ+CisgIDwvUGFyZW50PiAgICAKKy0tJmd0OworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0OyEtLSBBbm5vdGF0aW9uIEVDMTROOgorMS4gVGhlIG5hbWVzcGFjZSBub2RlIG5zMSBpcyByZW5kZXJlZCBmb3IgR3JhbmRDaGlsZCBzaW5jZSBpdCBpcyB2aXNpYmx5CisgICB1dGlsaXplZCBieSBHcmFuZENoaWxkLgorMi4gVGhlIG5hbWVzcGFjZSBub2RlIG5zMiBpcyByZW5kZXJlZCBzaW5jZSBpdCBpcyBvbiB0aGUgCisgICBJbmx1c2l2ZU5hbWVzcGFjZVByZWZpeExpc3QgYW5kIGlzIHRoZXJlZm9yZSB0cmVhdGVkIGFzIGluIEMxNE4gbW9kZS4KKy0tJmd0OworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0dyYW5kUGFyZW50PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7UGFyZW50PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPgorICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtDaGlsZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOm5zMj0iaHR0cDovL2V4YW1wbGUub3JnL25zMiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7bnMxOkdyYW5kQ2hpbGQ8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpuczI9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvbnMxOkdyYW5kQ2hpbGQmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9DaGlsZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4KKyAgPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9QYXJlbnQmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0dyYW5kUGFyZW50Jmd0Ozwvc3Bhbj48L3ByZT48L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1kzL2MxNG4tNi50eHQgYi9kYXRhL2ludGVyb3AvYzE0bi9ZMy9jMTRuLTYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5YzgxMGQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZMy9jMTRuLTYudHh0CkBAIC0wLDAgKzEsMyBAQAorPFBhcmVudD4KKyAgICA8bnMxOkdyYW5kQ2hpbGQgeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIiB4bWxuczpuczI9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczIiPjwvbnMxOkdyYW5kQ2hpbGQ+CisgIDwvUGFyZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1kzL2MxNG4tNy5odG1sIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTMvYzE0bi03Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZlZjc4OQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1kzL2MxNG4tNy5odG1sCkBAIC0wLDAgKzEsNjggQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DYW5pbmljYWwgWE1MIG5vZGUgc2V0PC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cis8IS0tIAorLklOQ0xVREVEIHsgCisgICBjb2xvcjogIzAwMDAwMDsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IH0gCisuRVhDTFVERUQgeyAKKyAgIGNvbG9yOiAjNjY2NjY2OyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgIzk5OTk5OTsgfSAKKy5JTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCisuRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICM5OTk5OTk7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLS0+IAorPC9zdHlsZT4gCis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSIjOTk5OTk5Ij4KKzxoMT5FeHBsYW5hdGlvbiBvZiB0aGUgb3V0cHV0PC9oMT4KKzxwPlRoZSBmb2xsb3dpbmcgdGV4dCBjb250YWlucyB0aGUgbm9kZXNldCBvZiB0aGUgZ2l2ZW4gUmVmZXJlbmNlIGJlZm9yZSBpdCBpcyBjYW5vbmljYWxpemVkLiBUaGVyZSBleGlzdCBmb3VyIGRpZmZlcmVudCBzdHlsZXMgdG8gaW5kaWNhdGUgaG93IGEgZ2l2ZW4gbm9kZSBpcyB0cmVhdGVkLjwvcD4KKzx1bD4KKzxsaSBjbGFzcz0iSU5DTFVERUQiPkEgbm9kZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERUQiPkEgbm9kZSB3aGljaCBpcyA8ZW0+Tk9UPC9lbT4gaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgRVhDTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gTk9UIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPC91bD4KKzxoMT5PdXRwdXQ8L2gxPgorPHByZT4KKzxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0OyEtLSBYUGF0aD0ic2VsZjo6UGFyZW50IG9yIChwYXJlbnQ6OlBhcmVudCBhbmQgbm90KHNlbGY6OkNoaWxkKSkgb3Igc2VsZjo6bnMxOkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpuczE6R3JhbmRDaGlsZCIgLS0mZ3Q7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7IS0tIGFkZGl0aW9uYWxOU1ByZWZpeGVzPSJuczEgaHR0cDovL2V4YW1wbGUub3JnL25zMSIgLS0mZ3Q7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7IS0tIElubHVzaXZlTmFtZXNwYWNlUHJlZml4TGlzdD0ibnMyIiAtLSZndDsKKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDshLS0gUmVzdWx0IEMxNE46Cis8UGFyZW50PgorICAgIDxuczE6R3JhbmRDaGlsZCB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiIHhtbG5zOm5zMj0iaHR0cDovL2V4YW1wbGUub3JnL25zMiI+PC9uczE6R3JhbmRDaGlsZD4KKyAgPC9QYXJlbnQ+ICAgIAorIC0tJmd0OworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0OyEtLSBBbm5vdGF0aW9uIEMxNE46CisxLiBUaGUgbmFtZXNwYWNlIG5vZGVzIG5zMSB1bmQgbnMyIGFyZSByZW5kZXJlZCBmb3IgR3JhbmRDaGlsZCwgc2luY2UKKyAgIHRoZXkgYXJlIGJvdGggaW4gc2NvcGUgZm9yIEdyYW5kQ2hpbGQgYW5kIGluIHRoZSBvdXRwdXQgbm9kZSBzZXQuICAgCistLSZndDsKKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDshLS0gUmVzdWx0IEVDMTROOgorPFBhcmVudD4KKyAgICA8bnMxOkdyYW5kQ2hpbGQgeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIiB4bWxuczpuczI9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczIiPjwvbnMxOkdyYW5kQ2hpbGQ+CisgIDwvUGFyZW50PiAgICAKKy0tJmd0OworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0OyEtLSBBbm5vdGF0aW9uIEVDMTROOgorMS4gVGhlIG5hbWVzcGFjZSBub2RlIG5zMSBpcyByZW5kZXJlZCBmb3IgR3JhbmRDaGlsZCBzaW5jZSBpdCBpcyB2aXNpYmx5CisgICB1dGlsaXplZCBieSBHcmFuZENoaWxkLgorMi4gVGhlIG5hbWVzcGFjZSBub2RlIG5zMiBpcyByZW5kZXJlZCBzaW5jZSBpdCBpcyBvbiB0aGUgCisgICBJbmx1c2l2ZU5hbWVzcGFjZVByZWZpeExpc3QgYW5kIGlzIHRoZXJlZm9yZSB0cmVhdGVkIGFzIGluIEMxNE4gbW9kZS4KKy0tJmd0OworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0dyYW5kUGFyZW50PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPgorICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7UGFyZW50PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPgorICAgIDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtDaGlsZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zOm5zMj0iaHR0cDovL2V4YW1wbGUub3JnL25zMiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7bnMxOkdyYW5kQ2hpbGQ8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxuczpuczI9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvbnMxOkdyYW5kQ2hpbGQmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+CisgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9DaGlsZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4KKyAgPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9QYXJlbnQmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0dyYW5kUGFyZW50Jmd0Ozwvc3Bhbj48L3ByZT48L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1kzL2MxNG4tNy50eHQgYi9kYXRhL2ludGVyb3AvYzE0bi9ZMy9jMTRuLTcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5YzgxMGQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZMy9jMTRuLTcudHh0CkBAIC0wLDAgKzEsMyBAQAorPFBhcmVudD4KKyAgICA8bnMxOkdyYW5kQ2hpbGQgeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIiB4bWxuczpuczI9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczIiPjwvbnMxOkdyYW5kQ2hpbGQ+CisgIDwvUGFyZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1kzL2MxNG4tOC50eHQgYi9kYXRhL2ludGVyb3AvYzE0bi9ZMy9jMTRuLTgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlMTExN2MKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZMy9jMTRuLTgudHh0CkBAIC0wLDAgKzEsODIgQEAKKzxTaWduZWRJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ij48L0Nhbm9uaWNhbGl6YXRpb25NZXRob2Q+CisgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSI+PC9TaWduYXR1cmVNZXRob2Q+CisgICAgPFJlZmVyZW5jZSBVUkk9ImlhaWtUZXN0cy5leGFtcGxlMS54bWwiPgorICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgPFhQYXRoPnNlbGY6OlBhcmVudCBvciAocGFyZW50OjpQYXJlbnQgYW5kIG5vdChzZWxmOjpDaGlsZCkpIG9yIHNlbGY6OkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpHcmFuZENoaWxkPC9YUGF0aD4KKyAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgPERpZ2VzdFZhbHVlPmF5QzdJQWp1bHU4VWpzMWw3SU9rcjA5WDlMbz08L0RpZ2VzdFZhbHVlPgorICAgIDwvUmVmZXJlbmNlPgorICAgIDxSZWZlcmVuY2UgVVJJPSJpYWlrVGVzdHMuZXhhbXBsZTEueG1sIj4KKyAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgIDxYUGF0aD5zZWxmOjpQYXJlbnQgb3IgKHBhcmVudDo6UGFyZW50IGFuZCBub3Qoc2VsZjo6Q2hpbGQpKSBvciBzZWxmOjpHcmFuZENoaWxkIG9yIHBhcmVudDo6R3JhbmRDaGlsZDwvWFBhdGg+CisgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj48L1RyYW5zZm9ybT4KKyAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICA8RGlnZXN0VmFsdWU+dFljUFllWFdVcEJ3Q0pLYVBIcG5UK29jN0ZRPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgICAgPFJlZmVyZW5jZSBVUkk9ImlhaWtUZXN0cy5leGFtcGxlMi54bWwiPgorICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgPFhQYXRoIHhtbG5zOmRlZmF1bHQ9Imh0dHA6Ly9leGFtcGxlLm9yZyI+c2VsZjo6UGFyZW50IG9yIChwYXJlbnQ6OlBhcmVudCBhbmQgbm90KHNlbGY6OmRlZmF1bHQ6Q2hpbGQpKSBvciBzZWxmOjpHcmFuZENoaWxkIG9yIHBhcmVudDo6R3JhbmRDaGlsZDwvWFBhdGg+CisgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgIDxEaWdlc3RWYWx1ZT4zL0U5OS9XV3VyTW81UkIzUjltUE1pOFROZWs9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgICA8UmVmZXJlbmNlIFVSST0iaWFpa1Rlc3RzLmV4YW1wbGUyLnhtbCI+CisgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICA8WFBhdGggeG1sbnM6ZGVmYXVsdD0iaHR0cDovL2V4YW1wbGUub3JnIj5zZWxmOjpQYXJlbnQgb3IgKHBhcmVudDo6UGFyZW50IGFuZCBub3Qoc2VsZjo6ZGVmYXVsdDpDaGlsZCkpIG9yIHNlbGY6OkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpHcmFuZENoaWxkPC9YUGF0aD4KKyAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPjwvVHJhbnNmb3JtPgorICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgIDxEaWdlc3RWYWx1ZT4zL0U5OS9XV3VyTW81UkIzUjltUE1pOFROZWs9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgICA8UmVmZXJlbmNlIFVSST0iaWFpa1Rlc3RzLmV4YW1wbGUzLnhtbCI+CisgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICA8WFBhdGggeG1sbnM6ZGVmYXVsdD0iaHR0cDovL2V4YW1wbGUub3JnL2RlZmF1bHQiIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSI+c2VsZjo6ZGVmYXVsdDpQYXJlbnQgb3IgKHBhcmVudDo6ZGVmYXVsdDpQYXJlbnQgYW5kIG5vdChzZWxmOjpkZWZhdWx0OkNoaWxkKSkgb3Igc2VsZjo6bnMxOkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpuczE6R3JhbmRDaGlsZCBvciBzZWxmOjpkZWZhdWx0OkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpkZWZhdWx0OkdyYW5kQ2hpbGQ8L1hQYXRoPgorICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICA8RGlnZXN0VmFsdWU+Kzl5NEpIWHhzUVNKaXRRUytxZHRLZDdQNUxFPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgICAgPFJlZmVyZW5jZSBVUkk9ImlhaWtUZXN0cy5leGFtcGxlMy54bWwiPgorICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgPFhQYXRoIHhtbG5zOmRlZmF1bHQ9Imh0dHA6Ly9leGFtcGxlLm9yZy9kZWZhdWx0IiB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiPnNlbGY6OmRlZmF1bHQ6UGFyZW50IG9yIChwYXJlbnQ6OmRlZmF1bHQ6UGFyZW50IGFuZCBub3Qoc2VsZjo6ZGVmYXVsdDpDaGlsZCkpIG9yIHNlbGY6Om5zMTpHcmFuZENoaWxkIG9yIHBhcmVudDo6bnMxOkdyYW5kQ2hpbGQgb3Igc2VsZjo6ZGVmYXVsdDpHcmFuZENoaWxkIG9yIHBhcmVudDo6ZGVmYXVsdDpHcmFuZENoaWxkPC9YUGF0aD4KKyAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPjwvVHJhbnNmb3JtPgorICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgIDxEaWdlc3RWYWx1ZT5ITE9oYVRyRXhsVGc5QVJWZE9oSGRtMURBS2s9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgICA8UmVmZXJlbmNlIFVSST0iaWFpa1Rlc3RzLmV4YW1wbGU0LnhtbCI+CisgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICA8WFBhdGggeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIj5zZWxmOjpQYXJlbnQgb3IgKHBhcmVudDo6UGFyZW50IGFuZCBub3Qoc2VsZjo6Q2hpbGQpKSBvciBzZWxmOjpuczE6R3JhbmRDaGlsZCBvciBwYXJlbnQ6Om5zMTpHcmFuZENoaWxkPC9YUGF0aD4KKyAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgPERpZ2VzdFZhbHVlPkMrZzZWQUFtcTJyV0NxbUNmSHBMbjdCRkIvYz08L0RpZ2VzdFZhbHVlPgorICAgIDwvUmVmZXJlbmNlPgorICAgIDxSZWZlcmVuY2UgVVJJPSJpYWlrVGVzdHMuZXhhbXBsZTQueG1sIj4KKyAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgIDxYUGF0aCB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiPnNlbGY6OlBhcmVudCBvciAocGFyZW50OjpQYXJlbnQgYW5kIG5vdChzZWxmOjpDaGlsZCkpIG9yIHNlbGY6Om5zMTpHcmFuZENoaWxkIG9yIHBhcmVudDo6bnMxOkdyYW5kQ2hpbGQ8L1hQYXRoPgorICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+CisgICAgICAgICAgPEluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0ibnMyIj48L0luY2x1c2l2ZU5hbWVzcGFjZXM+CisgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgIDxEaWdlc3RWYWx1ZT5DK2c2VkFBbXEycldDcW1DZkhwTG43QkZCL2M9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1kzL2lhaWtUZXN0cy5leGFtcGxlMS54bWwgYi9kYXRhL2ludGVyb3AvYzE0bi9ZMy9pYWlrVGVzdHMuZXhhbXBsZTEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzYTkxMmUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZMy9pYWlrVGVzdHMuZXhhbXBsZTEueG1sCkBAIC0wLDAgKzEsMzggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CisKKzwhLS0gWFBhdGg9InNlbGY6OlBhcmVudCBvciAocGFyZW50OjpQYXJlbnQgYW5kIG5vdChzZWxmOjpDaGlsZCkpIG9yIHNlbGY6OkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpHcmFuZENoaWxkIiAtLT4KKworPCEtLSBSZXN1bHQgQzE0TjoKKzxQYXJlbnQgeG1sOmZvbz0iYmFyIiB4bWw6Zm9vbD0iYmFyYmFyIiB4bWw6bGFuZz0iZW4iIHhtbDpzcGFjZT0iZGVmYXVsdCI+CisgICAgPEdyYW5kQ2hpbGQgeG1sOmZvbz0iYmFyYmFyb3NzYSIgeG1sOmZvb2w9ImJhcmJhciIgeG1sOmxhbmc9ImdlIiB4bWw6c3BhY2U9InByZXNlcnZlIj48L0dyYW5kQ2hpbGQ+CisgIDwvUGFyZW50PgorLS0+CisKKzwhLS0gQW5ub3RhdGlvbiBDMTROOgorMS4gUGFyZW50IGluaGVydHMgeG1sOmxhbmcgYW5kIHhtbDpzcGFjZSBzaW5jZSBpdCBpcyBhbiBvcnBoYW4gbm9kZS4KKzIuIFBhcmVudCBoYXMgZXhwbGljaXRseSBkZWNsYXJlZCBhdHRyaWJ1dGVzIHhtbDpmb28gYW5kIHhtbDpmb29sLgorMy4gR3JhbmRDaGlsZCBpbmhlcnRzIHhtbDpmb28gZnJvbSBpdHMgQ2hpbGQgYW5jZXN0b3IuCis0LiBHcmFuZENoaWxkIGluaGVyaXRzIHhtbDpmb29sIGZyb20gaXRzIFBhcmVudCBhbmNlc3Rvci4KKzUuIEdyYW5kQ2hpbGQgaW5oZXJpdHMgeG1sOmxhbmcgZnJvbSBpdHMgQ2hpbGQgYW5jZXN0b3IuCis2LiBHcmFuZENoaWxkIGhhcyBleHBsaWNpdGx5IGRlY2xhcmVkIGF0dHJpYnV0ZSB4bWw6c3BhY2UuCistLT4KKworPCEtLSBSZXN1bHQgRUMxNE46Cis8UGFyZW50IHhtbDpmb289ImJhciIgeG1sOmZvb2w9ImJhcmJhciI+CisgICAgPEdyYW5kQ2hpbGQgeG06c3BhY2U9InByZXNlcnZlIj48L0dyYW5kQ2hpbGQ+CisgIDwvUGFyZW50PgorLS0+CisKKzwhLS0gQW5ub3RhdGlvbiBFQzE0TjoKKzEuIE9ubHkgdGhvc2UgYXR0cmlidXRlcyBpbiB0aGUgeG1sIG5hbWVzcGFjZSBhcmUgcmVuZGVyZWQsIHdoaWNoIGFyZQorICAgZXhwbGljaXRlbHkgZGVjbGFyZWQgaW4gdGhlIGF0dHJpYnV0ZSBheGlzIG9mIGFuIGVsZW1lbnQuCistLT4KKworPEdyYW5kUGFyZW50IHhtbDpsYW5nPSJlbiIgeG1sOnNwYWNlPSJkZWZhdWx0Ij4KKyAgPFBhcmVudCB4bWw6Zm9vPSJiYXIiIHhtbDpmb29sPSJiYXJiYXIiPgorICAgIDxDaGlsZCB4bWw6Zm9vPSJiYXJiYXJvc3NhIiB4bWw6bGFuZz0iZ2UiPgorICAgICAgPEdyYW5kQ2hpbGQgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIvPgorICAgIDwvQ2hpbGQ+CisgIDwvUGFyZW50PgorPC9HcmFuZFBhcmVudD4KKwpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTMvaWFpa1Rlc3RzLmV4YW1wbGUyLnhtbCBiL2RhdGEvaW50ZXJvcC9jMTRuL1kzL2lhaWtUZXN0cy5leGFtcGxlMi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFlMzA1OAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1kzL2lhaWtUZXN0cy5leGFtcGxlMi54bWwKQEAgLTAsMCArMSwzNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKworPCEtLSBYUGF0aD0ic2VsZjo6UGFyZW50IG9yIChwYXJlbnQ6OlBhcmVudCBhbmQgbm90KHNlbGY6OmRlZmF1bHQ6Q2hpbGQpKSBvciBzZWxmOjpHcmFuZENoaWxkIG9yIHBhcmVudDo6R3JhbmRDaGlsZCIgLS0+Cis8IS0tIGFkZGl0aW9uYWxOU1ByZWZpeGVzPSJkZWZhdWx0IGh0dHA6Ly9leGFtcGxlLm9yZyIgLS0+CisKKzwhLS0gUmVzdWx0IEMxNE46Cis8UGFyZW50PgorICAgIDxHcmFuZENoaWxkPjwvR3JhbmRDaGlsZD4KKyAgPC9QYXJlbnQ+CistLT4KKworPCEtLSBBbm5vdGF0aW9uIEMxNE46CisxLiBUaGUgeG1sbnM9IiIgb2YgUGFyZW50IGlzIG5vdCByZW5kZXJlZCwgYWx0aG91Z2ggaXQgaXMgZXhwbGljaXRseSBkZWNsYXJlZC4KKyAgIFRoaXMgaXMgYmVjYXVzZSBQYXJlbnQgaGFzIG5vIG91dHB1dCBwYXJlbnQgd2l0aCBhIGRlZmF1bHQgbmFtZXNwYWNlIGRlY2xhLQorICAgcmF0aW9uIHRoYXQgaXMgaW4gdGhlIG5vZGUgc2V0LgorMi4gVGhlIHhtbG5zPSIiIG9mIEdyYW5kQ2hpbGQgaXMgbm90IHJlbmRlcmVkLCBhbHRob3VnaCBpdCBpcyBleHBsaWNpdGx5CisgICBkZWNsYXJlZC4gVGhpcyBpcyBiZWNhdXNlIEdyYW5kQ2hpbGQgaGFzIG5vIG91dHB1dCBwYXJlbnQgd2l0aCBhIGRlZmF1bHQKKyAgIG5hbWVzcGFjZSBkZWNsYXJhdGlvbiB0aGF0IGlzIGluIHRoZSBub2RlIHNldC4KKy0tPgorCis8IS0tIFJlc3VsdCBFQzE0TjoKKzxQYXJlbnQ+CisgICAgPEdyYW5kQ2hpbGQ+PC9HcmFuZENoaWxkPgorICA8L1BhcmVudD4KKy0tPgorCis8IS0tIEFubm90YXRpb24gRUMxNE46CitTZWUgQW5ub3RhdGlvbiBDMTROLgorLS0+CisKKzxHcmFuZFBhcmVudD4KKyAgPFBhcmVudCB4bWxucz0iIj4KKyAgICA8Q2hpbGQgeG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZyI+CisgICAgICA8R3JhbmRDaGlsZCB4bWxucz0iIi8+CisgICAgPC9DaGlsZD4KKyAgPC9QYXJlbnQ+Cis8L0dyYW5kUGFyZW50PiAgCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZMy9pYWlrVGVzdHMuZXhhbXBsZTMueG1sIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTMvaWFpa1Rlc3RzLmV4YW1wbGUzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTc2OTc0Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTMvaWFpa1Rlc3RzLmV4YW1wbGUzLnhtbApAQCAtMCwwICsxLDcwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorCis8IS0tIFhQYXRoPSJzZWxmOjpkZWZhdWx0OlBhcmVudCBvciAocGFyZW50OjpkZWZhdWx0OlBhcmVudCBhbmQgbm90KHNlbGY6OmRlZmF1bHQ6Q2hpbGQpKSBvciBzZWxmOjpuczE6R3JhbmRDaGlsZCBvciBwYXJlbnQ6Om5zMTpHcmFuZENoaWxkIG9yIHNlbGY6OmRlZmF1bHQ6R3JhbmRDaGlsZCBvciBwYXJlbnQ6OmRlZmF1bHQ6R3JhbmRDaGlsZCIgLS0+Cis8IS0tIGFkZGl0aW9uYWxOU1ByZWZpeGVzPSJkZWZhdWx0IGh0dHA6Ly9leGFtcGxlLm9yZy9kZWZhdWx0IG5zMSBodHRwOi8vZXhhbXBsZS5vcmcvbnMxIiAtLT4KKworPCEtLSBSZXN1bHQgQzE0TjoKKzxQYXJlbnQgeG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy9kZWZhdWx0Ij4KKyAgICA8bnMxOkdyYW5kQ2hpbGQgeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIj48L25zMTpHcmFuZENoaWxkPjxuczE6R3JhbmRDaGlsZCB4bWxucz0iaHR0cDovL2Jhci5jb20vZGVmYXVsdCIgeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIiBHZW5kZXI9Im1hbGUiPjwvbnMxOkdyYW5kQ2hpbGQ+PEdyYW5kQ2hpbGQgeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIj48L0dyYW5kQ2hpbGQ+PEdyYW5kQ2hpbGQgeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIiBuczE6R2VuZGVyPSJtYWxlIj48L0dyYW5kQ2hpbGQ+CisgIDwvUGFyZW50PgorIC0tPgorCis8IS0tIEFubm90YXRpb24gQzE0TjoKKzEuIFRoZSBkZWZhdWx0IG5hbWVzcGFjZSBub2RlIGlzIHJlbmRlcmVkIGZvciBQYXJlbnQsIHNpbmNlIGl0IGlzCisgICBpbmhlcml0ZWQgZnJvbSBHcmFuZFBhcmVudC4KKzIuIFRoZSBuczEgbmFtZXNwYWNlIG5vZGUgaXMgcmVuZGVyZWQgZm9yIHRoZSBmaXJzdCBHcmFuZENoaWxkLCBzaW5jZQorICAgaXQgaXMgaW5oZXJpdGVkIGZyb20gQ2hpbGQuCiszLiBUaGUgZGVmYXVsdCBuYW1lc3BhY2Ugbm9kZSBpcyBub3QgcmVuZGVyZWQgZm9yIHRoZSBmaXJzdCBHcmFuZENoaWxkLAorICAgc2luY2UgdGhlIG91dHB1dCBwYXJlbnQgb2YgR3JhbmRDaGlsZCAoUGFyZW50KSBoYXMgdGhlIHNhbWUgbmFtZXNwYWNlCisgICBub2RlIHdpdGggdGhlIHNhbWUgdmFsdWUsIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldC4KKzQuIFRoZSBuczEgbmFtZXNwYWNlIG5vZGUgaXMgcmVuZGVyZWQgZm9yIHRoZSBzZWNvbmQgR3JhbmRDaGlsZCAoc2FtZSBhcyAyKS4KKzUuIFRoZSBkZWZhdWx0IG5hbWVzcGFjZSBub2RlIGlzIHJlbmRlcmVkIGZvciB0aGUgc2Vjb25kIEdyYW5kQ2hpbGQsCisgICBzaW5jZSBpdCBpcyBleHBsaWNpdGx5IGRlY2xhcmVkLCBhbmQgaGFzIGEgZGlmZmVyZW50IHZhbHVlIHRoYW4gdGhhdCBvZgorICAgUGFyZW50LgorNi4gVGhlIG5zMSBuYW1lc3BhY2Ugbm9kZSBpcyByZW5kZXJlZCBmb3IgdGhlIHRoaXJkIEdyYW5kQ2hpbGQgKHNhbWUgYXMgMikuICAgCis3LiBUaGUgZGVmYXVsdCBuYW1lc3BhY2Ugbm9kZSBpcyBub3QgcmVuZGVyZWQgZm9yIHRoZSB0aGlyZCBHcmFuZENoaWxkIAorICAgKHNhbWUgYXMgMykuCis4LiBUaGUgbnMxIG5hbWVzcGFjZSBub2RlIGlzIHJlbmRlcmVkIGZvciB0aGUgZm91cnRoIEdyYW5kQ2hpbGQgKHNhbWUgYXMgMikuICAgCis5LiBUaGUgZGVmYXVsdCBuYW1lc3BhY2Ugbm9kZSBpcyBub3QgcmVuZGVyZWQgZm91cnRoIHRoZSB0aGlyZCBHcmFuZENoaWxkIAorICAgKHNhbWUgYXMgMykuCistLT4KKworPCEtLSBSZXN1bHQgRUMxNE46Cis8UGFyZW50IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvZGVmYXVsdCI+CisgICAgPG5zMTpHcmFuZENoaWxkIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSI+PC9uczE6R3JhbmRDaGlsZD48bnMxOkdyYW5kQ2hpbGQgeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIiBHZW5kZXI9Im1hbGUiPjwvbnMxOkdyYW5kQ2hpbGQ+PEdyYW5kQ2hpbGQ+PC9HcmFuZENoaWxkPjxHcmFuZENoaWxkIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSIgbnMxOkdlbmRlcj0ibWFsZSI+PC9HcmFuZENoaWxkPiAKKyAgPC9QYXJlbnQ+ICAgIAorLS0+CisKKzwhLS0gQW5ub3RhdGlvbiBFQzE0TjoKKzEuIFRoZSBkZWZhdWx0IG5hbWVzcGFjZSBub2RlIGlzIHJlbmRlcmVkIGZvciBQYXJlbnQsIHNpbmNlIGl0IGlzIHZpc2libHkKKyAgIHV0aWxpemVkIGJ5IFBhcmVudC4KKzIuIFRoZSBuczEgbmFtZXNwYWNlIGF0dHJpYnV0ZSBpcyByZW5kZXJlZCBmb3IgdGhlIGZpcnN0IEdyYW5kQ2hpbGQsIHNpbmNlIGl0CisgICBpcyB2aXNpYmx5IHV0aWxpemVkIGJ5IEdyYW5kQ2hpbGQuCiszLiBUaGUgZGVmYXVsdCBuYW1lc3BhY2Ugbm9kZSBpcyBub3QgcmVuZGVyZWQgZm9yIHRoZSBmaXJzdCBHcmFuZENoaWxkLCBzaW5jZQorICAgaXQgaXMgbm90IHZpc2libHkgdXRpbGl6ZWQuCis0LiBUaGUgbnMxIG5hbWVzcGFjZSBhdHRyaWJ1dGUgaXMgcmVuZGVyZWQgZm9yIHRoZSBzZWNvbmQgR3JhbmRDaGlsZCwgc2luY2UgaXQKKyAgIGlzIHZpc2libHkgdXRpbGl6ZWQgYnkgR3JhbmRDaGlsZC4KKzUuIFRoZSBkZWZhdWx0IG5hbWVzcGFjZSBub2RlIGlzIG5vdCByZW5kZXJlZCBmb3IgdGhlIHNlY29uZCBHcmFuZENoaWxkLCBzaW5jZQorICAgaXQgaXMgbm90IHZpc2libHkgdXRpbGl6ZWQgYnkgR3JhbmRDaGlsZC4gVGhlIEdlbmRlciBhdHRyaWJ1dGUgaXMgaW4gbm8KKyAgIG5hbWVzcGFjZS4KKzYuIFRoZSBuczEgbmFtZXNwYWNlIG5vZGUgaXMgbm90IHJlbmRlcmVkIGZvciB0aGUgdGhpcmQgR3JhbmRDaGlsZCwgc2luY2UgaXQKKyAgIGlzIG5vdCB2aXNpYmx5IHV0aWxpemVkLgorNy4gVGhlIGRlZmF1bHQgbmFtZXNwYWNlIG5vZGUgaXMgbm90IHJlbmRlcmVkIGZvciB0aGUgdGhpcmQgR3JhbmRDaGlsZC4gSXQgaXMKKyAgIHZpc2libHkgdXRpbGl6ZWQsIGJ1dCB0aGUgc2FtZSBuYW1lc3BhY2Ugbm9kZSB3aXRoIHRoZSBzYW1lIHZhbHVlIGhhcyBhbHJlYWR5CisgICBiZWVuIHJlbmRlcmVkIGluIFBhcmVudCAoYW4gb3V0cHV0IHBhcmVudCBvZiBHcmFuZENoaWxkKS4KKzguIFRoZSBkZWZhdWx0IG5hbWVzcGFjZSBub2RlIGlzIG5vdCByZW5kZXJlZCBmb3IgdGhlIGZvdXJ0aCBHcmFuZENoaWxkLCBzaW5jZQorICAgaXQgaXMgbm90IHZpc2libHkgdXRpbGl6ZWQuCis5LiBUaGUgbnMxIG5hbWVzcGFjZSBub2RlIGlzIHJlbmRlcmVkIGZvciB0aGUgZm91cnRoIEdyYW5kQ2hpbGQsIHNpbmNlIGl0IGlzCisgICB2aXNpYmx5IHV0aWxpemVkIGJ5IHRoZSBuczE6R2VuZGVyIGF0dHJpYnV0ZSBvZiBHcmFuZENoaWxkLgorLS0+CisKKzxHcmFuZFBhcmVudCB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnL2RlZmF1bHQiPgorICA8UGFyZW50PgorICAgIDxDaGlsZCB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiPgorICAgICAgPG5zMTpHcmFuZENoaWxkLz4KKyAgICAgIDxuczE6R3JhbmRDaGlsZCB4bWxucz0iaHR0cDovL2Jhci5jb20vZGVmYXVsdCIgR2VuZGVyPSJtYWxlIi8+CisgICAgICA8R3JhbmRDaGlsZC8+CisgICAgICA8R3JhbmRDaGlsZCBuczE6R2VuZGVyPSJtYWxlIi8+CisgICAgPC9DaGlsZD4KKyAgPC9QYXJlbnQ+Cis8L0dyYW5kUGFyZW50PiAgCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZMy9pYWlrVGVzdHMuZXhhbXBsZTQueG1sIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTMvaWFpa1Rlc3RzLmV4YW1wbGU0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWRiYmY5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTMvaWFpa1Rlc3RzLmV4YW1wbGU0LnhtbApAQCAtMCwwICsxLDM4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorCis8IS0tIFhQYXRoPSJzZWxmOjpQYXJlbnQgb3IgKHBhcmVudDo6UGFyZW50IGFuZCBub3Qoc2VsZjo6Q2hpbGQpKSBvciBzZWxmOjpuczE6R3JhbmRDaGlsZCBvciBwYXJlbnQ6Om5zMTpHcmFuZENoaWxkIiAtLT4KKzwhLS0gYWRkaXRpb25hbE5TUHJlZml4ZXM9Im5zMSBodHRwOi8vZXhhbXBsZS5vcmcvbnMxIiAtLT4KKworPCEtLSBJbmx1c2l2ZU5hbWVzcGFjZVByZWZpeExpc3Q9Im5zMiIgLS0+CisKKzwhLS0gUmVzdWx0IEMxNE46Cis8UGFyZW50PgorICAgIDxuczE6R3JhbmRDaGlsZCB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiIHhtbG5zOm5zMj0iaHR0cDovL2V4YW1wbGUub3JnL25zMiI+PC9uczE6R3JhbmRDaGlsZD4KKyAgPC9QYXJlbnQ+ICAgIAorIC0tPgorCis8IS0tIEFubm90YXRpb24gQzE0TjoKKzEuIFRoZSBuYW1lc3BhY2Ugbm9kZXMgbnMxIHVuZCBuczIgYXJlIHJlbmRlcmVkIGZvciBHcmFuZENoaWxkLCBzaW5jZQorICAgdGhleSBhcmUgYm90aCBpbiBzY29wZSBmb3IgR3JhbmRDaGlsZCBhbmQgaW4gdGhlIG91dHB1dCBub2RlIHNldC4gICAKKy0tPgorCis8IS0tIFJlc3VsdCBFQzE0TjoKKzxQYXJlbnQ+CisgICAgPG5zMTpHcmFuZENoaWxkIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSIgeG1sbnM6bnMyPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMyIj48L25zMTpHcmFuZENoaWxkPgorICA8L1BhcmVudD4gICAgCistLT4KKworPCEtLSBBbm5vdGF0aW9uIEVDMTROOgorMS4gVGhlIG5hbWVzcGFjZSBub2RlIG5zMSBpcyByZW5kZXJlZCBmb3IgR3JhbmRDaGlsZCBzaW5jZSBpdCBpcyB2aXNpYmx5CisgICB1dGlsaXplZCBieSBHcmFuZENoaWxkLgorMi4gVGhlIG5hbWVzcGFjZSBub2RlIG5zMiBpcyByZW5kZXJlZCBzaW5jZSBpdCBpcyBvbiB0aGUgCisgICBJbmx1c2l2ZU5hbWVzcGFjZVByZWZpeExpc3QgYW5kIGlzIHRoZXJlZm9yZSB0cmVhdGVkIGFzIGluIEMxNE4gbW9kZS4KKy0tPgorCis8R3JhbmRQYXJlbnQ+CisgIDxQYXJlbnQ+CisgICAgPENoaWxkIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSIgeG1sbnM6bnMyPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMyIj4KKyAgICAgIDxuczE6R3JhbmRDaGlsZC8+CisgICAgPC9DaGlsZD4KKyAgPC9QYXJlbnQ+Cis8L0dyYW5kUGFyZW50PiAgCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZMy9zaWduYXR1cmUudG1wbCBiL2RhdGEvaW50ZXJvcC9jMTRuL1kzL3NpZ25hdHVyZS50bXBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0OTI4MzMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZMy9zaWduYXR1cmUudG1wbApAQCAtMCwwICsxLDg2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgIDxTaWduZWRJbmZvPgorICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiIC8+CisgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIgLz4KKyAgICA8UmVmZXJlbmNlIFVSST0iaWFpa1Rlc3RzLmV4YW1wbGUxLnhtbCI+CisgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICA8WFBhdGg+c2VsZjo6UGFyZW50IG9yIChwYXJlbnQ6OlBhcmVudCBhbmQgbm90KHNlbGY6OkNoaWxkKSkgb3Igc2VsZjo6R3JhbmRDaGlsZCBvciBwYXJlbnQ6OkdyYW5kQ2hpbGQ8L1hQYXRoPgorICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZSAvPgorICAgIDwvUmVmZXJlbmNlPgorICAgIDxSZWZlcmVuY2UgVVJJPSJpYWlrVGVzdHMuZXhhbXBsZTEueG1sIj4KKyAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgIDxYUGF0aD5zZWxmOjpQYXJlbnQgb3IgKHBhcmVudDo6UGFyZW50IGFuZCBub3Qoc2VsZjo6Q2hpbGQpKSBvciBzZWxmOjpHcmFuZENoaWxkIG9yIHBhcmVudDo6R3JhbmRDaGlsZDwvWFBhdGg+CisgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiAvPgorICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgPERpZ2VzdFZhbHVlIC8+CisgICAgPC9SZWZlcmVuY2U+CisgICAgPFJlZmVyZW5jZSBVUkk9ImlhaWtUZXN0cy5leGFtcGxlMi54bWwiPgorICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgPFhQYXRoIHhtbG5zOmRlZmF1bHQ9Imh0dHA6Ly9leGFtcGxlLm9yZyI+c2VsZjo6UGFyZW50IG9yIChwYXJlbnQ6OlBhcmVudCBhbmQgbm90KHNlbGY6OmRlZmF1bHQ6Q2hpbGQpKSBvciBzZWxmOjpHcmFuZENoaWxkIG9yIHBhcmVudDo6R3JhbmRDaGlsZDwvWFBhdGg+CisgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgPERpZ2VzdFZhbHVlIC8+CisgICAgPC9SZWZlcmVuY2U+CisgICAgPFJlZmVyZW5jZSBVUkk9ImlhaWtUZXN0cy5leGFtcGxlMi54bWwiPgorICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgPFhQYXRoIHhtbG5zOmRlZmF1bHQ9Imh0dHA6Ly9leGFtcGxlLm9yZyI+c2VsZjo6UGFyZW50IG9yIChwYXJlbnQ6OlBhcmVudCBhbmQgbm90KHNlbGY6OmRlZmF1bHQ6Q2hpbGQpKSBvciBzZWxmOjpHcmFuZENoaWxkIG9yIHBhcmVudDo6R3JhbmRDaGlsZDwvWFBhdGg+CisgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiAvPgorICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgPERpZ2VzdFZhbHVlIC8+CisgICAgPC9SZWZlcmVuY2U+CisgICAgPFJlZmVyZW5jZSBVUkk9ImlhaWtUZXN0cy5leGFtcGxlMy54bWwiPgorICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgPFhQYXRoIHhtbG5zOmRlZmF1bHQ9Imh0dHA6Ly9leGFtcGxlLm9yZy9kZWZhdWx0IiB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiPnNlbGY6OmRlZmF1bHQ6UGFyZW50IG9yIChwYXJlbnQ6OmRlZmF1bHQ6UGFyZW50IGFuZCBub3Qoc2VsZjo6ZGVmYXVsdDpDaGlsZCkpIG9yIHNlbGY6Om5zMTpHcmFuZENoaWxkIG9yIHBhcmVudDo6bnMxOkdyYW5kQ2hpbGQgb3Igc2VsZjo6ZGVmYXVsdDpHcmFuZENoaWxkIG9yIHBhcmVudDo6ZGVmYXVsdDpHcmFuZENoaWxkPC9YUGF0aD4KKyAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWUgLz4KKyAgICA8L1JlZmVyZW5jZT4KKyAgICA8UmVmZXJlbmNlIFVSST0iaWFpa1Rlc3RzLmV4YW1wbGUzLnhtbCI+CisgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICA8WFBhdGggeG1sbnM6ZGVmYXVsdD0iaHR0cDovL2V4YW1wbGUub3JnL2RlZmF1bHQiIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSI+c2VsZjo6ZGVmYXVsdDpQYXJlbnQgb3IgKHBhcmVudDo6ZGVmYXVsdDpQYXJlbnQgYW5kIG5vdChzZWxmOjpkZWZhdWx0OkNoaWxkKSkgb3Igc2VsZjo6bnMxOkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpuczE6R3JhbmRDaGlsZCBvciBzZWxmOjpkZWZhdWx0OkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpkZWZhdWx0OkdyYW5kQ2hpbGQ8L1hQYXRoPgorICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgLz4KKyAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZSAvPgorICAgIDwvUmVmZXJlbmNlPgorICAgIDxSZWZlcmVuY2UgVVJJPSJpYWlrVGVzdHMuZXhhbXBsZTQueG1sIj4KKyAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgIDxYUGF0aCB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiPnNlbGY6OlBhcmVudCBvciAocGFyZW50OjpQYXJlbnQgYW5kIG5vdChzZWxmOjpDaGlsZCkpIG9yIHNlbGY6Om5zMTpHcmFuZENoaWxkIG9yIHBhcmVudDo6bnMxOkdyYW5kQ2hpbGQ8L1hQYXRoPgorICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZSAvPgorICAgIDwvUmVmZXJlbmNlPgorICAgIDxSZWZlcmVuY2UgVVJJPSJpYWlrVGVzdHMuZXhhbXBsZTQueG1sIj4KKyAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgIDxYUGF0aCB4bWxuczpuczE9Imh0dHA6Ly9leGFtcGxlLm9yZy9uczEiPnNlbGY6OlBhcmVudCBvciAocGFyZW50OjpQYXJlbnQgYW5kIG5vdChzZWxmOjpDaGlsZCkpIG9yIHNlbGY6Om5zMTpHcmFuZENoaWxkIG9yIHBhcmVudDo6bnMxOkdyYW5kQ2hpbGQ8L1hQYXRoPgorICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+CisgICAgICAgICAgPEluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0ibnMyIiAvPgorICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZSAvPgorICAgIDwvUmVmZXJlbmNlPgorICA8L1NpZ25lZEluZm8+CisgIDxTaWduYXR1cmVWYWx1ZSAvPgorPC9TaWduYXR1cmU+CmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZMy9zaWduYXR1cmUueG1sIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTMvc2lnbmF0dXJlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzc0ZmY4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTMvc2lnbmF0dXJlLnhtbApAQCAtMCwwICsxLDE2MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICA8U2lnbmVkSW5mbz4KKyAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPgorICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiIC8+CisgICAgPFJlZmVyZW5jZSBVUkk9ImlhaWtUZXN0cy5leGFtcGxlMS54bWwiPgorICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgPFhQYXRoPnNlbGY6OlBhcmVudCBvciAocGFyZW50OjpQYXJlbnQgYW5kIG5vdChzZWxmOjpDaGlsZCkpIG9yIHNlbGY6OkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpHcmFuZENoaWxkPC9YUGF0aD4KKyAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWU+YXlDN0lBanVsdThVanMxbDdJT2tyMDlYOUxvPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgICAgPFJlZmVyZW5jZSBVUkk9ImlhaWtUZXN0cy5leGFtcGxlMS54bWwiPgorICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgPFhQYXRoPnNlbGY6OlBhcmVudCBvciAocGFyZW50OjpQYXJlbnQgYW5kIG5vdChzZWxmOjpDaGlsZCkpIG9yIHNlbGY6OkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpHcmFuZENoaWxkPC9YUGF0aD4KKyAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIC8+CisgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWU+dFljUFllWFdVcEJ3Q0pLYVBIcG5UK29jN0ZRPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgICAgPFJlZmVyZW5jZSBVUkk9ImlhaWtUZXN0cy5leGFtcGxlMi54bWwiPgorICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgPFhQYXRoIHhtbG5zOmRlZmF1bHQ9Imh0dHA6Ly9leGFtcGxlLm9yZyI+c2VsZjo6UGFyZW50IG9yIChwYXJlbnQ6OlBhcmVudCBhbmQgbm90KHNlbGY6OmRlZmF1bHQ6Q2hpbGQpKSBvciBzZWxmOjpHcmFuZENoaWxkIG9yIHBhcmVudDo6R3JhbmRDaGlsZDwvWFBhdGg+CisgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgPERpZ2VzdFZhbHVlPjMvRTk5L1dXdXJNbzVSQjNSOW1QTWk4VE5laz08L0RpZ2VzdFZhbHVlPgorICAgIDwvUmVmZXJlbmNlPgorICAgIDxSZWZlcmVuY2UgVVJJPSJpYWlrVGVzdHMuZXhhbXBsZTIueG1sIj4KKyAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgIDxYUGF0aCB4bWxuczpkZWZhdWx0PSJodHRwOi8vZXhhbXBsZS5vcmciPnNlbGY6OlBhcmVudCBvciAocGFyZW50OjpQYXJlbnQgYW5kIG5vdChzZWxmOjpkZWZhdWx0OkNoaWxkKSkgb3Igc2VsZjo6R3JhbmRDaGlsZCBvciBwYXJlbnQ6OkdyYW5kQ2hpbGQ8L1hQYXRoPgorICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgLz4KKyAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZT4zL0U5OS9XV3VyTW81UkIzUjltUE1pOFROZWs9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgICA8UmVmZXJlbmNlIFVSST0iaWFpa1Rlc3RzLmV4YW1wbGUzLnhtbCI+CisgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICA8WFBhdGggeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIiB4bWxuczpkZWZhdWx0PSJodHRwOi8vZXhhbXBsZS5vcmcvZGVmYXVsdCI+c2VsZjo6ZGVmYXVsdDpQYXJlbnQgb3IgKHBhcmVudDo6ZGVmYXVsdDpQYXJlbnQgYW5kIG5vdChzZWxmOjpkZWZhdWx0OkNoaWxkKSkgb3Igc2VsZjo6bnMxOkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpuczE6R3JhbmRDaGlsZCBvciBzZWxmOjpkZWZhdWx0OkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpkZWZhdWx0OkdyYW5kQ2hpbGQ8L1hQYXRoPgorICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZT4rOXk0SkhYeHNRU0ppdFFTK3FkdEtkN1A1TEU9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgICA8UmVmZXJlbmNlIFVSST0iaWFpa1Rlc3RzLmV4YW1wbGUzLnhtbCI+CisgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICA8WFBhdGggeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIiB4bWxuczpkZWZhdWx0PSJodHRwOi8vZXhhbXBsZS5vcmcvZGVmYXVsdCI+c2VsZjo6ZGVmYXVsdDpQYXJlbnQgb3IgKHBhcmVudDo6ZGVmYXVsdDpQYXJlbnQgYW5kIG5vdChzZWxmOjpkZWZhdWx0OkNoaWxkKSkgb3Igc2VsZjo6bnMxOkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpuczE6R3JhbmRDaGlsZCBvciBzZWxmOjpkZWZhdWx0OkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpkZWZhdWx0OkdyYW5kQ2hpbGQ8L1hQYXRoPgorICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgLz4KKyAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZT5ITE9oYVRyRXhsVGc5QVJWZE9oSGRtMURBS2s9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgICA8UmVmZXJlbmNlIFVSST0iaWFpa1Rlc3RzLmV4YW1wbGU0LnhtbCI+CisgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICA8WFBhdGggeG1sbnM6bnMxPSJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIj5zZWxmOjpQYXJlbnQgb3IgKHBhcmVudDo6UGFyZW50IGFuZCBub3Qoc2VsZjo6Q2hpbGQpKSBvciBzZWxmOjpuczE6R3JhbmRDaGlsZCBvciBwYXJlbnQ6Om5zMTpHcmFuZENoaWxkPC9YUGF0aD4KKyAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWU+QytnNlZBQW1xMnJXQ3FtQ2ZIcExuN0JGQi9jPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgICAgPFJlZmVyZW5jZSBVUkk9ImlhaWtUZXN0cy5leGFtcGxlNC54bWwiPgorICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgPFhQYXRoIHhtbG5zOm5zMT0iaHR0cDovL2V4YW1wbGUub3JnL25zMSI+c2VsZjo6UGFyZW50IG9yIChwYXJlbnQ6OlBhcmVudCBhbmQgbm90KHNlbGY6OkNoaWxkKSkgb3Igc2VsZjo6bnMxOkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpuczE6R3JhbmRDaGlsZDwvWFBhdGg+CisgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj4KKyAgICAgICAgICA8SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSJuczIiIC8+CisgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgPERpZ2VzdFZhbHVlPkMrZzZWQUFtcTJyV0NxbUNmSHBMbjdCRkIvYz08L0RpZ2VzdFZhbHVlPgorICAgIDwvUmVmZXJlbmNlPgorICA8L1NpZ25lZEluZm8+CisgIDxTaWduYXR1cmVWYWx1ZT4KKyAgICBOa1JaZXhmN01KS21jQkVHcW9yRjNKSGw2ZXdsWmNnaHdiUldnOTZhZTdPYjkxMThVNzNIVnc9PQorICA8L1NpZ25hdHVyZVZhbHVlPgorICA8S2V5SW5mbz4KKyAgICA8S2V5VmFsdWU+CisgICAgICA8RFNBS2V5VmFsdWU+CisgICAgICAgIDxQPgorICAgICAgICAgIDNlT2VBdnFuRXlGcFcrdVRTZ3JkajdZTGphVGtweUhlY0tGSW9MdThRWk5rR1RRSTFjaUlUQkgwbHFmSWtkQ0gKKyAgICAgICAgICBTaThmaVVDM0RUcTNKOUZzSmVmNFlWdERGN0pwVXZIVE9RcXRxN1pneDZLQzhXeGt6NnJRQ3hPcjdGMEFwT1lpCisgICAgICAgICAgODl6TFJvZTRNa0RHZTZ1eDArV3R5T1RRb1ZJR05URERVRlhyVVFOYkxyRT0KKyAgICAgICAgPC9QPgorICAgICAgICA8UT4KKyAgICAgICAgICBoRExjRkswR08vSHoxYXJ4T092c2dNL1ZMeVU9CisgICAgICAgIDwvUT4KKyAgICAgICAgPEc+CisgICAgICAgICAgbm54N2hiZFdvekdidG5GZ25iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzegorICAgICAgICAgIEt0N2RsRWFRTDdiNStKVFp0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ00KKyAgICAgICAgICA4ZDJyaGQyVWkweEhiazBENDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBPQorICAgICAgICA8L0c+CisgICAgICAgIDxZPgorICAgICAgICAgIGNmWXBpaHBBUWVlcGJORlM0TUFiUVJoZFhwRGk1d0xyd3hFNWhJdm9ZcW8xTDhCUVZ1OGZZMVRGQVB0b2FlMWkKKyAgICAgICAgICBCZy9HSUp5UDNpTGZ5dUJKYUR2SkpMUDMwd0JIOWkvczVKMzY1NlBldnBPVmRUZmk3NzdGaTlHajZ5L2liMlZ2CisgICAgICAgICAgK09aZkpra3A0TDUwK3A1VFVoUG1RTEp0UkVzZ3RsK3RuSU95SlQrK0c5VT0KKyAgICAgICAgPC9ZPgorICAgICAgPC9EU0FLZXlWYWx1ZT4KKyAgICA8L0tleVZhbHVlPgorICAgIDxYNTA5RGF0YT4KKyAgICAgIDxYNTA5U3ViamVjdE5hbWU+CisgICAgICAgIENOPU1lcmxpbiBIdWdoZXMsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUgVGVjaG5vbG9naWVzIEx0ZC4sU1Q9RHVibGluLEM9SUUKKyAgICAgIDwvWDUwOVN1YmplY3ROYW1lPgorICAgICAgPFg1MDlJc3N1ZXJTZXJpYWw+CisgICAgICAgIDxYNTA5SXNzdWVyTmFtZT4KKyAgICAgICAgICBDTj1UcmFuc2llbnQgQ0EsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUgVGVjaG5vbG9naWVzIEx0ZC4sU1Q9RHVibGluLEM9SUUKKyAgICAgICAgPC9YNTA5SXNzdWVyTmFtZT4KKyAgICAgICAgPFg1MDlTZXJpYWxOdW1iZXI+MTAxNzc4ODM3MDM0ODwvWDUwOVNlcmlhbE51bWJlcj4KKyAgICAgIDwvWDUwOUlzc3VlclNlcmlhbD4KKyAgICAgIDxYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgIE1JSURVRENDQXhDZ0F3SUJBZ0lHQU96NDZnMnNNQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgKKyAgICAgICAgRHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbAorICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CCisgICAgICAgIE1CNFhEVEF5TURRd01qSXlOVGt6TUZvWERURXlNRFF3TWpJeE5Ua3lOVm93YnpFTE1Ba0dBMVVFQmhNQ1NVVXgKKyAgICAgICAgRHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbAorICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVdNQlFHQTFVRUF4TU5UV1Z5YkdsdUlFaDFaMmhsCisgICAgICAgIGN6Q0NBYmN3Z2dFc0JnY3Foa2pPT0FRQk1JSUJId0tCZ1FEZDQ1NEMrcWNUSVdsYjY1TktDdDJQdGd1TnBPU24KKyAgICAgICAgSWQ1d29VaWd1N3hCazJRWk5BalZ5SWhNRWZTV3A4aVIwSWRLTHgrSlFMY05PcmNuMFd3bDUvaGhXME1Yc21sUworICAgICAgICA4ZE01Q3EycnRtREhvb0x4YkdUUHF0QUxFNnZzWFFDazVpTHozTXRHaDdneVFNWjdxN0hUNWEzSTVOQ2hVZ1kxCisgICAgICAgIE1NTlFWZXRSQTFzdXNRSVZBSVF5M0JTdEJqdng4OVdxOFRqcjdJRFAxUzhsQW9HQkFKNThlNFczVnFNeG03WngKKyAgICAgICAgWUoyeFo2S1gwWmUxMFduS1pEeVVSbitUOWlGSUZiS1JGRWxLRGVvdFh3d1h3WU9OOHlyZTNaUkdrQysyK2ZpVQorICAgICAgICAyYmR6SVdUVDZMTWJJTVZiayswN1A0T1pPeEo2WFdMOUd1WWNPUWNOdlg0MnhoMzREUEhkcTRYZGxJdE1SMjVOCisgICAgICAgIEErT2RaNFM4VlZycGI0amtqNGN5aXIxNjI4a2dBNEdFQUFLQmdISDJLWW9hUUVIbnFXelJVdURBRzBFWVhWNlEKKyAgICAgICAgNHVjQzY4TVJPWVNMNkdLcU5TL0FVRmJ2SDJOVXhRRDdhR250WWdZUHhpQ2NqOTRpMzhyZ1NXZzd5U1N6OTlNQQorICAgICAgICBSL1l2N09TZCt1ZWozcjZUbFhVMzR1Kyt4WXZSbytzdjRtOWxiL2ptWHlaSktlQytkUHFlVTFJVDVrQ3liVVJMCisgICAgICAgIElMWmZyWnlEc2lVL3ZodlZvem93T0RBT0JnTlZIUThCQWY4RUJBTUNCNEF3RVFZRFZSME9CQW9FQ0lhdFk3U0UKKyAgICAgICAgbFhFT01CTUdBMVVkSXdRTU1BcUFDSU9HUGtCMk11S1RNQWtHQnlxR1NNNDRCQU1ETHdBd0xBSVVTdlQwMmlRagorICAgICAgICBRNWRhNFdwZTBCdnM3R3VDY1ZzQ0ZDRWNRcGJqVWZueFhGWE5XaUZ5UTQ5WnJXcW4KKyAgICAgIDwvWDUwOUNlcnRpZmljYXRlPgorICAgICAgPFg1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgTUlJRFN6Q0NBd3VnQXdJQkFnSUdBT3o0NmZ3Sk1Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICBEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsCisgICAgICAgIGN5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkIKKyAgICAgICAgTUI0WERUQXlNRFF3TWpJeU5Ua3lOVm9YRFRFeU1EUXdNakl4TlRreU5Wb3diakVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICBEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsCisgICAgICAgIGN5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkIKKyAgICAgICAgTUlJQnR6Q0NBU3dHQnlxR1NNNDRCQUV3Z2dFZkFvR0JBTjNqbmdMNnB4TWhhVnZyazBvSzNZKzJDNDJrNUtjaAorICAgICAgICAzbkNoU0tDN3ZFR1RaQmswQ05YSWlFd1I5SmFueUpIUWgwb3ZINGxBdHcwNnR5ZlJiQ1huK0dGYlF4ZXlhVkx4CisgICAgICAgIDB6a0tyYXUyWU1laWd2RnNaTStxMEFzVHEreGRBS1RtSXZQY3kwYUh1REpBeG51cnNkUGxyY2prMEtGU0JqVXcKKyAgICAgICAgdzFCVjYxRURXeTZ4QWhVQWhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VUNnWUVBbm54N2hiZFdvekdidG5GZworICAgICAgICBuYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3pLdDdkbEVhUUw3YjUrSlRaCisgICAgICAgIHQzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTThkMnJoZDJVaTB4SGJrMEQKKyAgICAgICAgNDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBRGdZUUFBb0dBZmFnK0hDQUJJSmFkREQ5QWFyaGdjMlFSM0xwNworICAgICAgICBQcE1PaDBsQXdMaUlzdmtPNFVsYmVPUzBJSkM4YmNxTGpNMWZWdzZGR1NheG1xKzR5MWFnMm05azZJZEUwUWg1CisgICAgICAgIE54Qi94RmttZHdxWEZSSUpWcDQ0T2VVeWdCNDdZSzc2Tm1VSVlHM0RkZmlQUFUzYnF6anZ0T3RFVGlDSHZvMjUKKyAgICAgICAgNEQ2VWp3UHBZRXJYUlVhak5qQTBNQTRHQTFVZER3RUIvd1FFQXdJQ0JEQVBCZ05WSFJNRUNEQUdBUUgvQWdFQQorICAgICAgICBNQkVHQTFVZERnUUtCQWlEaGo1QWRqTGlrekFKQmdjcWhrak9PQVFEQXk4QU1Dd0NGRUx1MG51d2VxVzdXZjBzCisgICAgICAgIGdrL0NBR0dMMEJHS0FoUk5kZ1FHcjVpeVpLb0g0b3FQbTBWSjlUalhMZz09CisgICAgICA8L1g1MDlDZXJ0aWZpY2F0ZT4KKyAgICA8L1g1MDlEYXRhPgorICA8L0tleUluZm8+Cis8L1NpZ25hdHVyZT4KZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k0Ly5jdnNpZ25vcmUgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC8uY3ZzaWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhMGM3ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC8uY3ZzaWdub3JlCkBAIC0wLDAgKzEgQEAKK2MxNG4tKi5hcGFjaGUuaHRtbApkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTQvUmVhZG1lLnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L1JlYWRtZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJiMWE2NAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L1JlYWRtZS50eHQKQEAgLTAsMCArMSwyMCBAQAorU2lnbmF0dXJlWzFdIHVzaW5nIENhbm9uaWNhbCBYTUxbMl0gYW5kIEV4Y2x1c2l2ZSBDYW5vbmljYWwgWE1MWzNdCisKK1sxXSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAyL1JFQy14bWxkc2lnLWNvcmUtMjAwMjAyMTIvCitbMl0gaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUKK1szXSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAyL1BSLXhtbC1leGMtYzE0bi0yMDAyMDUyNC8KKworLiBzaWduYXR1cmUueG1sIC0gVGhlIHNpZ25hdHVyZXMKKy4gYzE0bi0qLnhtbCAtIFRoZSBpbnRlcm1lZGlhdGUgYzE0biBvdXRwdXQKKworVGhpcyBzaWduYXR1cmUgZGVtb25zdHJhdGVzIGNhbm9uaWNhbGl6YXRpb24gYmVoYXZpb3VyIHdoZW4KK3BhcnRzIG9mIHRoZSBuYW1lc3BhY2UgYXhpcyBhcmUgZXhjbHVkZWQgb3IgaW5jbHVkZWQuIFRoZQorc2FtZSBleGFtcGxlcyBhcmUgcmVwZWF0ZWQgZm9yIGNhbm9uaWNhbCBYTUwsIGV4Y2x1c2l2ZQorY2Fub25pY2FsIFhNTCBhbmQgZXhjbHVzaXZlIGNhbm9uaWNhbCBYTUwgd2l0aCBhbiBpbmNsdXNpdmUKK25hbWVzcGFjZSBwcmVmaXggbGlzdC4gU29tZSBleGFtcGxlcyByZXBlYXQgdGhlIHNhbWUKK2JlaGF2aW91ciB3aXRoIGRpZmZlcmVudCBYUGF0aCBleHByZXNzaW9ucy4KKworTWVybGluIEh1Z2hlcyA8bWVybGluQGJhbHRpbW9yZS5pZT4KK0JhbHRpbW9yZSBUZWNobm9sb2dpZXMsIEx0ZC4KKworVHVlc2RheSwgTWF5IDI4LCAyMDAyCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTAuaHRtbCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzMGU2ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTAuaHRtbApAQCAtMCwwICsxLDU1NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNhbmluaWNhbCBYTUwgbm9kZSBzZXQ8L3RpdGxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKzwhLS0gCisuSU5DTFVERUQgeyAKKyAgIGNvbG9yOiAjMDAwMDAwOyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgfSAKKy5FWENMVURFRCB7IAorICAgY29sb3I6ICM2NjY2NjY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjOTk5OTk5OyB9IAorLklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy5FWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogIzk5OTk5OTsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCistLT4gCis8L3N0eWxlPiAKKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IiM5OTk5OTkiPgorPGgxPkV4cGxhbmF0aW9uIG9mIHRoZSBvdXRwdXQ8L2gxPgorPHA+VGhlIGZvbGxvd2luZyB0ZXh0IGNvbnRhaW5zIHRoZSBub2Rlc2V0IG9mIHRoZSBnaXZlbiBSZWZlcmVuY2UgYmVmb3JlIGl0IGlzIGNhbm9uaWNhbGl6ZWQuIFRoZXJlIGV4aXN0IGZvdXIgZGlmZmVyZW50IHN0eWxlcyB0byBpbmRpY2F0ZSBob3cgYSBnaXZlbiBub2RlIGlzIHRyZWF0ZWQuPC9wPgorPHVsPgorPGxpIGNsYXNzPSJJTkNMVURFRCI+QSBub2RlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRCI+QSBub2RlIHdoaWNoIGlzIDxlbT5OT1Q8L2VtPiBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCBFWENMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiBOT1QgdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8L3VsPgorPGgxPk91dHB1dDwvaDE+Cis8cHJlPgorPHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Zm9vOlJvb3Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpsYW5nPSJlbi1pZSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2JhcjpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtmb286U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7YmFyOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2ZvbzpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7YmF6OlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9iYXo6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvZm9vOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2JhcjpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9mb286U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvYmFyOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25lZEluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpsYW5nPSJlbi1pZSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Q2Fub25pY2FsaXphdGlvbk1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9DYW5vbmljYWxpemF0aW9uTWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZU1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlTWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmxDT1MvSnRwbU9FKzRlWEZhT3BZNHY0Qk9nST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk95VnFFV1hFN0MrNU55S3RjZVVrZG1pRk85QT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk95VnFFV1hFN0MrNU55S3RjZVVrZG1pRk85QT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPm1MMWFBUS9Sb09QTzBTSGo5S1IreVkzbjRDTT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+YlFnRjhJQ3ltWVpUdVVQMEZFNDBsM1E3QlprPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5iUWdGOElDeW1ZWlR1VVAwRkU0MGwzUTdCWms9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+SUpRZ2Q1OUZKMVBBeHhDWTVtSUw2Y1plbWkwPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5TWEdpak8xZUFyRWFYR3BoRjBkeHdqNWZwMWc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5yTm00SWQ5YWgxMm51Z3pYQVVKZ2phczdsczA9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+dU9RSlFJSVVFVFl5azArWUVCZGJFUXdyWWJ3PTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5BV3RxRGJYV0tmOFRWNzhDMmQxNnVhcmJwR2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj51T1FKUUlJVUVUWXlrMCtZRUJkYkVRd3JZYnc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk5wak1QekVGNVlaRmJ6NGxzN2VOMzZRV2RYcz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5FYWNCTjJhQkJOU2pwQ096WlVPT3ZTdjR6SFU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25lZEluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmVWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtGeDM0VmMwN2ZYYWM2cW1zaGhoTGU4b2dqRWxTbUM2WXhUbmh4ajh3TVRTa2Z2eFkrd1l0clE9PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5SW5mbzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEU0FLZXlWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtQPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzNlT2VBdnFuRXlGcFcrdVRTZ3JkajdZTGphVGtweUhlY0tGSW9MdThRWk5rR1RRSTFjaUlUQkgwbHFmSWtkQ0gmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1NpOGZpVUMzRFRxM0o5RnNKZWY0WVZ0REY3SnBVdkhUT1FxdHE3Wmd4NktDOFd4a3o2clFDeE9yN0YwQXBPWWkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozg5ekxSb2U0TWtER2U2dXgwK1d0eU9UUW9WSUdOVEREVUZYclVRTmJMckU9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1E8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1EmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtHPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25ueDdoYmRXb3pHYnRuRmduYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3omcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0t0N2RsRWFRTDdiNStKVFp0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ00mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzhkMnJoZDJVaTB4SGJrMEQ0NTFuaEx4Vld1bHZpT1NQaHpLS3ZYcmJ5U0E9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1k8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y2ZZcGlocEFRZWVwYk5GUzRNQWJRUmhkWHBEaTV3THJ3eEU1aEl2b1lxbzFMOEJRVnU4ZlkxVEZBUHRvYWUxaSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7QmcvR0lKeVAzaUxmeXVCSmFEdkpKTFAzMHdCSDlpL3M1SjM2NTZQZXZwT1ZkVGZpNzc3Rmk5R2o2eS9pYjJWdiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7K09aZkpra3A0TDUwK3A1VFVoUG1RTEp0UkVzZ3RsK3RuSU95SlQrK0c5VT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9ZJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRFNBS2V5VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0tleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlEYXRhPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOVN1YmplY3ROYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Q049TWVybGluJm1pZGRvdDtIdWdoZXMsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUmbWlkZG90O1RlY2hub2xvZ2llcyZtaWRkb3Q7THRkLixTVD1EdWJsaW4sQz1JRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOVN1YmplY3ROYW1lJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5SXNzdWVyU2VyaWFsPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlJc3N1ZXJOYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0NOPVRyYW5zaWVudCZtaWRkb3Q7Q0EsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUmbWlkZG90O1RlY2hub2xvZ2llcyZtaWRkb3Q7THRkLixTVD1EdWJsaW4sQz1JRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlJc3N1ZXJOYW1lJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOVNlcmlhbE51bWJlcjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MTAxNzc4ODM3MDM0ODwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOVNlcmlhbE51bWJlciZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlJc3N1ZXJTZXJpYWwmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlDZXJ0aWZpY2F0ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSURVRENDQXhDZ0F3SUJBZ0lHQU96NDZnMnNNQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CNFhEVEF5TURRd01qSXlOVGt6TUZvWERURXlNRFF3TWpJeE5Ua3lOVm93YnpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVdNQlFHQTFVRUF4TU5UV1Z5YkdsdUlFaDFaMmhsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N6Q0NBYmN3Z2dFc0JnY3Foa2pPT0FRQk1JSUJId0tCZ1FEZDQ1NEMrcWNUSVdsYjY1TktDdDJQdGd1TnBPU24mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7SWQ1d29VaWd1N3hCazJRWk5BalZ5SWhNRWZTV3A4aVIwSWRLTHgrSlFMY05PcmNuMFd3bDUvaGhXME1Yc21sUyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4ZE01Q3EycnRtREhvb0x4YkdUUHF0QUxFNnZzWFFDazVpTHozTXRHaDdneVFNWjdxN0hUNWEzSTVOQ2hVZ1kxJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01NTlFWZXRSQTFzdXNRSVZBSVF5M0JTdEJqdng4OVdxOFRqcjdJRFAxUzhsQW9HQkFKNThlNFczVnFNeG03WngmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7WUoyeFo2S1gwWmUxMFduS1pEeVVSbitUOWlGSUZiS1JGRWxLRGVvdFh3d1h3WU9OOHlyZTNaUkdrQysyK2ZpVSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsyYmR6SVdUVDZMTWJJTVZiayswN1A0T1pPeEo2WFdMOUd1WWNPUWNOdlg0MnhoMzREUEhkcTRYZGxJdE1SMjVOJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0ErT2RaNFM4VlZycGI0amtqNGN5aXIxNjI4a2dBNEdFQUFLQmdISDJLWW9hUUVIbnFXelJVdURBRzBFWVhWNlEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NHVjQzY4TVJPWVNMNkdLcU5TL0FVRmJ2SDJOVXhRRDdhR250WWdZUHhpQ2NqOTRpMzhyZ1NXZzd5U1N6OTlNQSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtSL1l2N09TZCt1ZWozcjZUbFhVMzR1Kyt4WXZSbytzdjRtOWxiL2ptWHlaSktlQytkUHFlVTFJVDVrQ3liVVJMJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0lMWmZyWnlEc2lVL3ZodlZvem93T0RBT0JnTlZIUThCQWY4RUJBTUNCNEF3RVFZRFZSME9CQW9FQ0lhdFk3U0UmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bFhFT01CTUdBMVVkSXdRTU1BcUFDSU9HUGtCMk11S1RNQWtHQnlxR1NNNDRCQU1ETHdBd0xBSVVTdlQwMmlRaiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtRNWRhNFdwZTBCdnM3R3VDY1ZzQ0ZDRWNRcGJqVWZueFhGWE5XaUZ5UTQ5WnJXcW4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlDZXJ0aWZpY2F0ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUNlcnRpZmljYXRlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJRFN6Q0NBd3VnQXdJQkFnSUdBT3o0NmZ3Sk1Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUI0WERUQXlNRFF3TWpJeU5Ua3lOVm9YRFRFeU1EUXdNakl4TlRreU5Wb3diakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJQnR6Q0NBU3dHQnlxR1NNNDRCQUV3Z2dFZkFvR0JBTjNqbmdMNnB4TWhhVnZyazBvSzNZKzJDNDJrNUtjaCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDszbkNoU0tDN3ZFR1RaQmswQ05YSWlFd1I5SmFueUpIUWgwb3ZINGxBdHcwNnR5ZlJiQ1huK0dGYlF4ZXlhVkx4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzB6a0tyYXUyWU1laWd2RnNaTStxMEFzVHEreGRBS1RtSXZQY3kwYUh1REpBeG51cnNkUGxyY2prMEtGU0JqVXcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7dzFCVjYxRURXeTZ4QWhVQWhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VUNnWUVBbm54N2hiZFdvekdidG5GZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtuYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3pLdDdkbEVhUUw3YjUrSlRaJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O3QzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTThkMnJoZDJVaTB4SGJrMEQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBRGdZUUFBb0dBZmFnK0hDQUJJSmFkREQ5QWFyaGdjMlFSM0xwNyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtQcE1PaDBsQXdMaUlzdmtPNFVsYmVPUzBJSkM4YmNxTGpNMWZWdzZGR1NheG1xKzR5MWFnMm05azZJZEUwUWg1JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O054Qi94RmttZHdxWEZSSUpWcDQ0T2VVeWdCNDdZSzc2Tm1VSVlHM0RkZmlQUFUzYnF6anZ0T3RFVGlDSHZvMjUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NEQ2VWp3UHBZRXJYUlVhak5qQTBNQTRHQTFVZER3RUIvd1FFQXdJQ0JEQVBCZ05WSFJNRUNEQUdBUUgvQWdFQSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQkVHQTFVZERnUUtCQWlEaGo1QWRqTGlrekFKQmdjcWhrak9PQVFEQXk4QU1Dd0NGRUx1MG51d2VxVzdXZjBzJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2drL0NBR0dMMEJHS0FoUk5kZ1FHcjVpeVpLb0g0b3FQbTBWSjlUalhMZz09JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5Q2VydGlmaWNhdGUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlEYXRhJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0tleUluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2ZvbzpSb290Jmd0Ozwvc3Bhbj48L3ByZT48L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMC50eHQgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjYTJiMzAKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTAudHh0CkBAIC0wLDAgKzEsOSBAQAorPGJhcjpTb21ldGhpbmcgeG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iIHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciIgeG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6IiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iIHhtbDpsYW5nPSJlbi1pZSI+CisgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICA8YmFyOlNvbWV0aGluZz4KKyAgICAgICAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICAgPGJhejpTb21ldGhpbmc+PC9iYXo6U29tZXRoaW5nPgorICAgICAgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgICAgIDwvYmFyOlNvbWV0aGluZz4KKyAgICAgPC9mb286U29tZXRoaW5nPgorICA8L2JhcjpTb21ldGhpbmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0xLmh0bWwgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDExNWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0xLmh0bWwKQEAgLTAsMCArMSw1NTcgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DYW5pbmljYWwgWE1MIG5vZGUgc2V0PC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cis8IS0tIAorLklOQ0xVREVEIHsgCisgICBjb2xvcjogIzAwMDAwMDsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IH0gCisuRVhDTFVERUQgeyAKKyAgIGNvbG9yOiAjNjY2NjY2OyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgIzk5OTk5OTsgfSAKKy5JTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCisuRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICM5OTk5OTk7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLS0+IAorPC9zdHlsZT4gCis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSIjOTk5OTk5Ij4KKzxoMT5FeHBsYW5hdGlvbiBvZiB0aGUgb3V0cHV0PC9oMT4KKzxwPlRoZSBmb2xsb3dpbmcgdGV4dCBjb250YWlucyB0aGUgbm9kZXNldCBvZiB0aGUgZ2l2ZW4gUmVmZXJlbmNlIGJlZm9yZSBpdCBpcyBjYW5vbmljYWxpemVkLiBUaGVyZSBleGlzdCBmb3VyIGRpZmZlcmVudCBzdHlsZXMgdG8gaW5kaWNhdGUgaG93IGEgZ2l2ZW4gbm9kZSBpcyB0cmVhdGVkLjwvcD4KKzx1bD4KKzxsaSBjbGFzcz0iSU5DTFVERUQiPkEgbm9kZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERUQiPkEgbm9kZSB3aGljaCBpcyA8ZW0+Tk9UPC9lbT4gaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgRVhDTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gTk9UIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPC91bD4KKzxoMT5PdXRwdXQ8L2gxPgorPHByZT4KKzxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2ZvbzpSb290PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWw6bGFuZz0iZW4taWUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtiYXI6U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7Zm9vOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2JhcjpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtmb286U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2JhejpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvYmF6OlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2ZvbzpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9iYXI6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvZm9vOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2JhcjpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduZWRJbmZvPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWw6bGFuZz0iZW4taWUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0Nhbm9uaWNhbGl6YXRpb25NZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvQ2Fub25pY2FsaXphdGlvbk1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmVNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZU1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5sQ09TL0p0cG1PRSs0ZVhGYU9wWTR2NEJPZ0k9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5PeVZxRVdYRTdDKzVOeUt0Y2VVa2RtaUZPOUE9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5PeVZxRVdYRTdDKzVOeUt0Y2VVa2RtaUZPOUE9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm90Jm1pZGRvdDsoc2VsZjo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5tTDFhQVEvUm9PUE8wU0hqOUtSK3lZM240Q009PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmJRZ0Y4SUN5bVlaVHVVUDBGRTQwbDNRN0Jaaz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+YlFnRjhJQ3ltWVpUdVVQMEZFNDBsM1E3QlprPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90Oz0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPklKUWdkNTlGSjFQQXh4Q1k1bUlMNmNaZW1pMD08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+U1hHaWpPMWVBckVhWEdwaEYwZHh3ajVmcDFnPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+ck5tNElkOWFoMTJudWd6WEFVSmdqYXM3bHMwPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm90Jm1pZGRvdDsoc2VsZjo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPnVPUUpRSUlVRVRZeWswK1lFQmRiRVF3cllidz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90Oz0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+QVd0cURiWFdLZjhUVjc4QzJkMTZ1YXJicEdrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm90Jm1pZGRvdDsoc2VsZjo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+dU9RSlFJSVVFVFl5azArWUVCZGJFUXdyWWJ3PTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90Oz0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5OcGpNUHpFRjVZWkZiejRsczdlTjM2UVdkWHM9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+RWFjQk4yYUJCTlNqcENPelpVT092U3Y0ekhVPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduZWRJbmZvJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlVmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RngzNFZjMDdmWGFjNnFtc2hoaExlOG9nakVsU21DNll4VG5oeGo4d01UU2tmdnhZK3dZdHJRPT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmVWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0tleUluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0tleVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RFNBS2V5VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDszZU9lQXZxbkV5RnBXK3VUU2dyZGo3WUxqYVRrcHlIZWNLRklvTHU4UVpOa0dUUUkxY2lJVEJIMGxxZklrZENIJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtTaThmaVVDM0RUcTNKOUZzSmVmNFlWdERGN0pwVXZIVE9RcXRxN1pneDZLQzhXeGt6NnJRQ3hPcjdGMEFwT1lpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4OXpMUm9lNE1rREdlNnV4MCtXdHlPVFFvVklHTlRERFVGWHJVUU5iTHJFPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1AmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtRPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5oRExjRkswR08vSHoxYXJ4T092c2dNL1ZMeVU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9RJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Rzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtubng3aGJkV296R2J0bkZnbmJGbm9wZlJsN1hSYWNwa1BKUkdmNVAySVVnVnNwRVVTVW9ONmkxZkRCZkJnNDN6JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtLdDdkbEVhUUw3YjUrSlRadDNNaFpOUG9zeHNneFZ1VDdUcy9nNWs3RW5wZFl2MGE1aHc1QncyOWZqYkdIZmdNJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4ZDJyaGQyVWkweEhiazBENDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0cmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtZPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NmWXBpaHBBUWVlcGJORlM0TUFiUVJoZFhwRGk1d0xyd3hFNWhJdm9ZcW8xTDhCUVZ1OGZZMVRGQVB0b2FlMWkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0JnL0dJSnlQM2lMZnl1QkphRHZKSkxQMzB3Qkg5aS9zNUozNjU2UGV2cE9WZFRmaTc3N0ZpOUdqNnkvaWIyVnYmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OytPWmZKa2twNEw1MCtwNVRVaFBtUUxKdFJFc2d0bCt0bklPeUpUKytHOVU9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RTQUtleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9LZXlWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5RGF0YTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlTdWJqZWN0TmFtZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0NOPU1lcmxpbiZtaWRkb3Q7SHVnaGVzLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlJm1pZGRvdDtUZWNobm9sb2dpZXMmbWlkZG90O0x0ZC4sU1Q9RHVibGluLEM9SUUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlTdWJqZWN0TmFtZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUlzc3VlclNlcmlhbDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5SXNzdWVyTmFtZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtDTj1UcmFuc2llbnQmbWlkZG90O0NBLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlJm1pZGRvdDtUZWNobm9sb2dpZXMmbWlkZG90O0x0ZC4sU1Q9RHVibGluLEM9SUUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5SXNzdWVyTmFtZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlTZXJpYWxOdW1iZXI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjEwMTc3ODgzNzAzNDg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlTZXJpYWxOdW1iZXImZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5SXNzdWVyU2VyaWFsJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5Q2VydGlmaWNhdGU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNSUlEVURDQ0F4Q2dBd0lCQWdJR0FPejQ2ZzJzTUFrR0J5cUdTTTQ0QkFNd2JqRUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQjRYRFRBeU1EUXdNakl5TlRrek1Gb1hEVEV5TURRd01qSXhOVGt5TlZvd2J6RUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVXTUJRR0ExVUVBeE1OVFdWeWJHbHVJRWgxWjJobCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjekNDQWJjd2dnRXNCZ2NxaGtqT09BUUJNSUlCSHdLQmdRRGQ0NTRDK3FjVElXbGI2NU5LQ3QyUHRndU5wT1NuJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0lkNXdvVWlndTd4QmsyUVpOQWpWeUloTUVmU1dwOGlSMElkS0x4K0pRTGNOT3JjbjBXd2w1L2hoVzBNWHNtbFMmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7OGRNNUNxMnJ0bURIb29MeGJHVFBxdEFMRTZ2c1hRQ2s1aUx6M010R2g3Z3lRTVo3cTdIVDVhM0k1TkNoVWdZMSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNTU5RVmV0UkExc3VzUUlWQUlReTNCU3RCanZ4ODlXcThUanI3SURQMVM4bEFvR0JBSjU4ZTRXM1ZxTXhtN1p4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1lKMnhaNktYMFplMTBXbktaRHlVUm4rVDlpRklGYktSRkVsS0Rlb3RYd3dYd1lPTjh5cmUzWlJHa0MrMitmaVUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7MmJkeklXVFQ2TE1iSU1WYmsrMDdQNE9aT3hKNlhXTDlHdVljT1FjTnZYNDJ4aDM0RFBIZHE0WGRsSXRNUjI1TiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtBK09kWjRTOFZWcnBiNGprajRjeWlyMTYyOGtnQTRHRUFBS0JnSEgyS1lvYVFFSG5xV3pSVXVEQUcwRVlYVjZRJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzR1Y0M2OE1ST1lTTDZHS3FOUy9BVUZidkgyTlV4UUQ3YUdudFlnWVB4aUNjajk0aTM4cmdTV2c3eVNTejk5TUEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Ui9ZdjdPU2QrdWVqM3I2VGxYVTM0dSsreFl2Um8rc3Y0bTlsYi9qbVh5WkpLZUMrZFBxZVUxSVQ1a0N5YlVSTCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtJTFpmclp5RHNpVS92aHZWb3pvd09EQU9CZ05WSFE4QkFmOEVCQU1DQjRBd0VRWURWUjBPQkFvRUNJYXRZN1NFJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2xYRU9NQk1HQTFVZEl3UU1NQXFBQ0lPR1BrQjJNdUtUTUFrR0J5cUdTTTQ0QkFNREx3QXdMQUlVU3ZUMDJpUWomcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7UTVkYTRXcGUwQnZzN0d1Q2NWc0NGQ0VjUXBialVmbnhYRlhOV2lGeVE0OVpyV3FuJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5Q2VydGlmaWNhdGUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlDZXJ0aWZpY2F0ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSURTekNDQXd1Z0F3SUJBZ0lHQU96NDZmd0pNQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CNFhEVEF5TURRd01qSXlOVGt5TlZvWERURXlNRFF3TWpJeE5Ua3lOVm93YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSUJ0ekNDQVN3R0J5cUdTTTQ0QkFFd2dnRWZBb0dCQU4zam5nTDZweE1oYVZ2cmswb0szWSsyQzQyazVLY2gmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7M25DaFNLQzd2RUdUWkJrMENOWElpRXdSOUphbnlKSFFoMG92SDRsQXR3MDZ0eWZSYkNYbitHRmJReGV5YVZMeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDswemtLcmF1MllNZWlndkZzWk0rcTBBc1RxK3hkQUtUbUl2UGN5MGFIdURKQXhudXJzZFBscmNqazBLRlNCalV3JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O3cxQlY2MUVEV3k2eEFoVUFoRExjRkswR08vSHoxYXJ4T092c2dNL1ZMeVVDZ1lFQW5ueDdoYmRXb3pHYnRuRmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bmJGbm9wZlJsN1hSYWNwa1BKUkdmNVAySVVnVnNwRVVTVW9ONmkxZkRCZkJnNDN6S3Q3ZGxFYVFMN2I1K0pUWiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDt0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ004ZDJyaGQyVWkweEhiazBEJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzQ1MW5oTHhWV3VsdmlPU1BoektLdlhyYnlTQURnWVFBQW9HQWZhZytIQ0FCSUphZEREOUFhcmhnYzJRUjNMcDcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7UHBNT2gwbEF3TGlJc3ZrTzRVbGJlT1MwSUpDOGJjcUxqTTFmVnc2RkdTYXhtcSs0eTFhZzJtOWs2SWRFMFFoNSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtOeEIveEZrbWR3cVhGUklKVnA0NE9lVXlnQjQ3WUs3Nk5tVUlZRzNEZGZpUFBVM2Jxemp2dE90RVRpQ0h2bzI1JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzRENlVqd1BwWUVyWFJVYWpOakEwTUE0R0ExVWREd0VCL3dRRUF3SUNCREFQQmdOVkhSTUVDREFHQVFIL0FnRUEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUJFR0ExVWREZ1FLQkFpRGhqNUFkakxpa3pBSkJnY3Foa2pPT0FRREF5OEFNQ3dDRkVMdTBudXdlcVc3V2YwcyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtnay9DQUdHTDBCR0tBaFJOZGdRR3I1aXlaS29ING9xUG0wVko5VGpYTGc9PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUNlcnRpZmljYXRlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5RGF0YSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9LZXlJbmZvJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9mb286Um9vdCZndDs8L3NwYW4+PC9wcmU+PC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTEudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0xLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTQyZWRmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0xLnR4dApAQCAtMCwwICsxLDkgQEAKKzxiYXI6U29tZXRoaW5nIHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciIgeG1sOmxhbmc9ImVuLWllIj4KKyAgICAgPGZvbzpTb21ldGhpbmcgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIj4KKyAgICAgICAgPGJhcjpTb21ldGhpbmcgeG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIj4KKyAgICAgICAgICAgPGZvbzpTb21ldGhpbmcgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIj4KKyAgICAgICAgICAgICA8YmF6OlNvbWV0aGluZyB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPjwvYmF6OlNvbWV0aGluZz4KKyAgICAgICAgICAgPC9mb286U29tZXRoaW5nPgorICAgICAgICA8L2JhcjpTb21ldGhpbmc+CisgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgPC9iYXI6U29tZXRoaW5nPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMTAuaHRtbCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMTAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDExNWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0xMC5odG1sCkBAIC0wLDAgKzEsNTU3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q2FuaW5pY2FsIFhNTCBub2RlIHNldDwvdGl0bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorPCEtLSAKKy5JTkNMVURFRCB7IAorICAgY29sb3I6ICMwMDAwMDA7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyB9IAorLkVYQ0xVREVEIHsgCisgICBjb2xvcjogIzY2NjY2NjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICM5OTk5OTk7IH0gCisuSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5OTk5OyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy0tPiAKKzwvc3R5bGU+IAorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0iIzk5OTk5OSI+Cis8aDE+RXhwbGFuYXRpb24gb2YgdGhlIG91dHB1dDwvaDE+Cis8cD5UaGUgZm9sbG93aW5nIHRleHQgY29udGFpbnMgdGhlIG5vZGVzZXQgb2YgdGhlIGdpdmVuIFJlZmVyZW5jZSBiZWZvcmUgaXQgaXMgY2Fub25pY2FsaXplZC4gVGhlcmUgZXhpc3QgZm91ciBkaWZmZXJlbnQgc3R5bGVzIHRvIGluZGljYXRlIGhvdyBhIGdpdmVuIG5vZGUgaXMgdHJlYXRlZC48L3A+Cis8dWw+Cis8bGkgY2xhc3M9IklOQ0xVREVEIj5BIG5vZGUgd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVEIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVEIj5BIG5vZGUgd2hpY2ggaXMgPGVtPk5PVDwvZW0+IGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIEVYQ0xVREVEIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgQU5EIGluIHRoZSBJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3QgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0Ugc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIE5PVCB0aGUgbm9kZSBzZXQgQU5EIGluIHRoZSBJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3QgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0Ugc3R5bGUuPC9saT4KKzwvdWw+Cis8aDE+T3V0cHV0PC9oMT4KKzxwcmU+Cis8c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtmb286Um9vdDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sOmxhbmc9ImVuLWllIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7YmFyOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2ZvbzpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtiYXI6U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7Zm9vOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtiYXo6U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2JhejpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9mb286U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvYmFyOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2ZvbzpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9iYXI6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmVkSW5mbzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sOmxhbmc9ImVuLWllIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtDYW5vbmljYWxpemF0aW9uTWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0Nhbm9uaWNhbGl6YXRpb25NZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlTWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmVNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+bENPUy9KdHBtT0UrNGVYRmFPcFk0djRCT2dJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+T3lWcUVXWEU3Qys1TnlLdGNlVWtkbWlGTzlBPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+T3lWcUVXWEU3Qys1TnlLdGNlVWtkbWlGTzlBPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25vdCZtaWRkb3Q7KHNlbGY6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+bUwxYUFRL1JvT1BPMFNIajlLUit5WTNuNENNPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5iUWdGOElDeW1ZWlR1VVAwRkU0MGwzUTdCWms9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmJRZ0Y4SUN5bVlaVHVVUDBGRTQwbDNRN0Jaaz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDs9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5JSlFnZDU5RkoxUEF4eENZNW1JTDZjWmVtaTA9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPlNYR2lqTzFlQXJFYVhHcGhGMGR4d2o1ZnAxZz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPnJObTRJZDlhaDEybnVnelhBVUpnamFzN2xzMD08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25vdCZtaWRkb3Q7KHNlbGY6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj51T1FKUUlJVUVUWXlrMCtZRUJkYkVRd3JZYnc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDs9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPkFXdHFEYlhXS2Y4VFY3OEMyZDE2dWFyYnBHaz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25vdCZtaWRkb3Q7KHNlbGY6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPnVPUUpRSUlVRVRZeWswK1lFQmRiRVF3cllidz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDs9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+TnBqTVB6RUY1WVpGYno0bHM3ZU4zNlFXZFhzPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPkVhY0JOMmFCQk5TanBDT3paVU9PdlN2NHpIVT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmVkSW5mbyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0Z4MzRWYzA3ZlhhYzZxbXNoaGhMZThvZ2pFbFNtQzZZeFRuaHhqOHdNVFNrZnZ4WSt3WXRyUT09JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlVmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtLZXlJbmZvPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtLZXlWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RTQUtleVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1A8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7M2VPZUF2cW5FeUZwVyt1VFNncmRqN1lMamFUa3B5SGVjS0ZJb0x1OFFaTmtHVFFJMWNpSVRCSDBscWZJa2RDSCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7U2k4ZmlVQzNEVHEzSjlGc0plZjRZVnRERjdKcFV2SFRPUXF0cTdaZ3g2S0M4V3hrejZyUUN4T3I3RjBBcE9ZaSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7ODl6TFJvZTRNa0RHZTZ1eDArV3R5T1RRb1ZJR05URERVRlhyVVFOYkxyRT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9QJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+aERMY0ZLMEdPL0h6MWFyeE9PdnNnTS9WTHlVPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0c8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm54N2hiZFdvekdidG5GZ25iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzeiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7S3Q3ZGxFYVFMN2I1K0pUWnQzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7OGQycmhkMlVpMHhIYmswRDQ1MW5oTHhWV3VsdmlPU1BoektLdlhyYnlTQT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9HJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjZllwaWhwQVFlZXBiTkZTNE1BYlFSaGRYcERpNXdMcnd4RTVoSXZvWXFvMUw4QlFWdThmWTFURkFQdG9hZTFpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtCZy9HSUp5UDNpTGZ5dUJKYUR2SkpMUDMwd0JIOWkvczVKMzY1NlBldnBPVmRUZmk3NzdGaTlHajZ5L2liMlZ2JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsrT1pmSmtrcDRMNTArcDVUVWhQbVFMSnRSRXNndGwrdG5JT3lKVCsrRzlVPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1kmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EU0FLZXlWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvS2V5VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOURhdGE8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5U3ViamVjdE5hbWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtDTj1NZXJsaW4mbWlkZG90O0h1Z2hlcyxPVT1YL1NlY3VyZSxPPUJhbHRpbW9yZSZtaWRkb3Q7VGVjaG5vbG9naWVzJm1pZGRvdDtMdGQuLFNUPUR1YmxpbixDPUlFJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5U3ViamVjdE5hbWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlJc3N1ZXJTZXJpYWw8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUlzc3Vlck5hbWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Q049VHJhbnNpZW50Jm1pZGRvdDtDQSxPVT1YL1NlY3VyZSxPPUJhbHRpbW9yZSZtaWRkb3Q7VGVjaG5vbG9naWVzJm1pZGRvdDtMdGQuLFNUPUR1YmxpbixDPUlFJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUlzc3Vlck5hbWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5U2VyaWFsTnVtYmVyPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4xMDE3Nzg4MzcwMzQ4PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5U2VyaWFsTnVtYmVyJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUlzc3VlclNlcmlhbCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUNlcnRpZmljYXRlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJRFVEQ0NBeENnQXdJQkFnSUdBT3o0Nmcyc01Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUI0WERUQXlNRFF3TWpJeU5Ua3pNRm9YRFRFeU1EUXdNakl4TlRreU5Wb3diekVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFV01CUUdBMVVFQXhNTlRXVnliR2x1SUVoMVoyaGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3pDQ0FiY3dnZ0VzQmdjcWhrak9PQVFCTUlJQkh3S0JnUURkNDU0QytxY1RJV2xiNjVOS0N0MlB0Z3VOcE9TbiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtJZDV3b1VpZ3U3eEJrMlFaTkFqVnlJaE1FZlNXcDhpUjBJZEtMeCtKUUxjTk9yY24wV3dsNS9oaFcwTVhzbWxTJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzhkTTVDcTJydG1ESG9vTHhiR1RQcXRBTEU2dnNYUUNrNWlMejNNdEdoN2d5UU1aN3E3SFQ1YTNJNU5DaFVnWTEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TU1OUVZldFJBMXN1c1FJVkFJUXkzQlN0Qmp2eDg5V3E4VGpyN0lEUDFTOGxBb0dCQUo1OGU0VzNWcU14bTdaeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtZSjJ4WjZLWDBaZTEwV25LWkR5VVJuK1Q5aUZJRmJLUkZFbEtEZW90WHd3WHdZT044eXJlM1pSR2tDKzIrZmlVJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzJiZHpJV1RUNkxNYklNVmJrKzA3UDRPWk94SjZYV0w5R3VZY09RY052WDQyeGgzNERQSGRxNFhkbEl0TVIyNU4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7QStPZFo0UzhWVnJwYjRqa2o0Y3lpcjE2MjhrZ0E0R0VBQUtCZ0hIMktZb2FRRUhucVd6UlV1REFHMEVZWFY2USZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs0dWNDNjhNUk9ZU0w2R0txTlMvQVVGYnZIMk5VeFFEN2FHbnRZZ1lQeGlDY2o5NGkzOHJnU1dnN3lTU3o5OU1BJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1IvWXY3T1NkK3VlajNyNlRsWFUzNHUrK3hZdlJvK3N2NG05bGIvam1YeVpKS2VDK2RQcWVVMUlUNWtDeWJVUkwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7SUxaZnJaeURzaVUvdmh2Vm96b3dPREFPQmdOVkhROEJBZjhFQkFNQ0I0QXdFUVlEVlIwT0JBb0VDSWF0WTdTRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtsWEVPTUJNR0ExVWRJd1FNTUFxQUNJT0dQa0IyTXVLVE1Ba0dCeXFHU000NEJBTURMd0F3TEFJVVN2VDAyaVFqJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1E1ZGE0V3BlMEJ2czdHdUNjVnNDRkNFY1FwYmpVZm54WEZYTldpRnlRNDlacldxbiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUNlcnRpZmljYXRlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5Q2VydGlmaWNhdGU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNSUlEU3pDQ0F3dWdBd0lCQWdJR0FPejQ2ZndKTUFrR0J5cUdTTTQ0QkFNd2JqRUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQjRYRFRBeU1EUXdNakl5TlRreU5Wb1hEVEV5TURRd01qSXhOVGt5TlZvd2JqRUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNSUlCdHpDQ0FTd0dCeXFHU000NEJBRXdnZ0VmQW9HQkFOM2puZ0w2cHhNaGFWdnJrMG9LM1krMkM0Mms1S2NoJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzNuQ2hTS0M3dkVHVFpCazBDTlhJaUV3UjlKYW55SkhRaDBvdkg0bEF0dzA2dHlmUmJDWG4rR0ZiUXhleWFWTHgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7MHprS3JhdTJZTWVpZ3ZGc1pNK3EwQXNUcSt4ZEFLVG1JdlBjeTBhSHVESkF4bnVyc2RQbHJjamswS0ZTQmpVdyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDt3MUJWNjFFRFd5NnhBaFVBaERMY0ZLMEdPL0h6MWFyeE9PdnNnTS9WTHlVQ2dZRUFubng3aGJkV296R2J0bkZnJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzekt0N2RsRWFRTDdiNStKVFomcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7dDNNaFpOUG9zeHNneFZ1VDdUcy9nNWs3RW5wZFl2MGE1aHc1QncyOWZqYkdIZmdNOGQycmhkMlVpMHhIYmswRCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs0NTFuaEx4Vld1bHZpT1NQaHpLS3ZYcmJ5U0FEZ1lRQUFvR0FmYWcrSENBQklKYWRERDlBYXJoZ2MyUVIzTHA3JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1BwTU9oMGxBd0xpSXN2a080VWxiZU9TMElKQzhiY3FMak0xZlZ3NkZHU2F4bXErNHkxYWcybTlrNklkRTBRaDUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TnhCL3hGa21kd3FYRlJJSlZwNDRPZVV5Z0I0N1lLNzZObVVJWUczRGRmaVBQVTNicXpqdnRPdEVUaUNIdm8yNSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs0RDZVandQcFlFclhSVWFqTmpBME1BNEdBMVVkRHdFQi93UUVBd0lDQkRBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CRUdBMVVkRGdRS0JBaURoajVBZGpMaWt6QUpCZ2NxaGtqT09BUURBeThBTUN3Q0ZFTHUwbnV3ZXFXN1dmMHMmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Z2svQ0FHR0wwQkdLQWhSTmRnUUdyNWl5WktvSDRvcVBtMFZKOVRqWExnPT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlDZXJ0aWZpY2F0ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOURhdGEmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvS2V5SW5mbyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZm9vOlJvb3QmZ3Q7PC9zcGFuPjwvcHJlPjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0xMC50eHQgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTEwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzlmZDZjCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0xMC50eHQKQEAgLTAsMCArMSw5IEBACis8YmFyOlNvbWV0aGluZyB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPgorICAgICA8Zm9vOlNvbWV0aGluZyB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPgorICAgICAgICA8YmFyOlNvbWV0aGluZz4KKyAgICAgICAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICAgPGJhejpTb21ldGhpbmcgeG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ij48L2JhejpTb21ldGhpbmc+CisgICAgICAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICAgICAgPC9iYXI6U29tZXRoaW5nPgorICAgICA8L2ZvbzpTb21ldGhpbmc+CisgIDwvYmFyOlNvbWV0aGluZz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTExLmh0bWwgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTExLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QxMTVkOAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMTEuaHRtbApAQCAtMCwwICsxLDU1NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNhbmluaWNhbCBYTUwgbm9kZSBzZXQ8L3RpdGxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKzwhLS0gCisuSU5DTFVERUQgeyAKKyAgIGNvbG9yOiAjMDAwMDAwOyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgfSAKKy5FWENMVURFRCB7IAorICAgY29sb3I6ICM2NjY2NjY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjOTk5OTk5OyB9IAorLklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy5FWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogIzk5OTk5OTsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCistLT4gCis8L3N0eWxlPiAKKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IiM5OTk5OTkiPgorPGgxPkV4cGxhbmF0aW9uIG9mIHRoZSBvdXRwdXQ8L2gxPgorPHA+VGhlIGZvbGxvd2luZyB0ZXh0IGNvbnRhaW5zIHRoZSBub2Rlc2V0IG9mIHRoZSBnaXZlbiBSZWZlcmVuY2UgYmVmb3JlIGl0IGlzIGNhbm9uaWNhbGl6ZWQuIFRoZXJlIGV4aXN0IGZvdXIgZGlmZmVyZW50IHN0eWxlcyB0byBpbmRpY2F0ZSBob3cgYSBnaXZlbiBub2RlIGlzIHRyZWF0ZWQuPC9wPgorPHVsPgorPGxpIGNsYXNzPSJJTkNMVURFRCI+QSBub2RlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRCI+QSBub2RlIHdoaWNoIGlzIDxlbT5OT1Q8L2VtPiBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCBFWENMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiBOT1QgdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8L3VsPgorPGgxPk91dHB1dDwvaDE+Cis8cHJlPgorPHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Zm9vOlJvb3Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpsYW5nPSJlbi1pZSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2JhcjpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtmb286U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7YmFyOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2ZvbzpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7YmF6OlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9iYXo6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvZm9vOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2JhcjpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9mb286U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvYmFyOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25lZEluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpsYW5nPSJlbi1pZSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Q2Fub25pY2FsaXphdGlvbk1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9DYW5vbmljYWxpemF0aW9uTWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZU1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlTWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmxDT1MvSnRwbU9FKzRlWEZhT3BZNHY0Qk9nST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk95VnFFV1hFN0MrNU55S3RjZVVrZG1pRk85QT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk95VnFFV1hFN0MrNU55S3RjZVVrZG1pRk85QT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPm1MMWFBUS9Sb09QTzBTSGo5S1IreVkzbjRDTT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+YlFnRjhJQ3ltWVpUdVVQMEZFNDBsM1E3QlprPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5iUWdGOElDeW1ZWlR1VVAwRkU0MGwzUTdCWms9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+SUpRZ2Q1OUZKMVBBeHhDWTVtSUw2Y1plbWkwPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5TWEdpak8xZUFyRWFYR3BoRjBkeHdqNWZwMWc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5yTm00SWQ5YWgxMm51Z3pYQVVKZ2phczdsczA9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+dU9RSlFJSVVFVFl5azArWUVCZGJFUXdyWWJ3PTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5BV3RxRGJYV0tmOFRWNzhDMmQxNnVhcmJwR2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj51T1FKUUlJVUVUWXlrMCtZRUJkYkVRd3JZYnc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk5wak1QekVGNVlaRmJ6NGxzN2VOMzZRV2RYcz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5FYWNCTjJhQkJOU2pwQ096WlVPT3ZTdjR6SFU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25lZEluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmVWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtGeDM0VmMwN2ZYYWM2cW1zaGhoTGU4b2dqRWxTbUM2WXhUbmh4ajh3TVRTa2Z2eFkrd1l0clE9PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5SW5mbzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEU0FLZXlWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtQPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzNlT2VBdnFuRXlGcFcrdVRTZ3JkajdZTGphVGtweUhlY0tGSW9MdThRWk5rR1RRSTFjaUlUQkgwbHFmSWtkQ0gmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1NpOGZpVUMzRFRxM0o5RnNKZWY0WVZ0REY3SnBVdkhUT1FxdHE3Wmd4NktDOFd4a3o2clFDeE9yN0YwQXBPWWkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozg5ekxSb2U0TWtER2U2dXgwK1d0eU9UUW9WSUdOVEREVUZYclVRTmJMckU9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1E8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1EmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtHPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25ueDdoYmRXb3pHYnRuRmduYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3omcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0t0N2RsRWFRTDdiNStKVFp0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ00mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzhkMnJoZDJVaTB4SGJrMEQ0NTFuaEx4Vld1bHZpT1NQaHpLS3ZYcmJ5U0E9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1k8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y2ZZcGlocEFRZWVwYk5GUzRNQWJRUmhkWHBEaTV3THJ3eEU1aEl2b1lxbzFMOEJRVnU4ZlkxVEZBUHRvYWUxaSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7QmcvR0lKeVAzaUxmeXVCSmFEdkpKTFAzMHdCSDlpL3M1SjM2NTZQZXZwT1ZkVGZpNzc3Rmk5R2o2eS9pYjJWdiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7K09aZkpra3A0TDUwK3A1VFVoUG1RTEp0UkVzZ3RsK3RuSU95SlQrK0c5VT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9ZJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRFNBS2V5VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0tleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlEYXRhPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOVN1YmplY3ROYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Q049TWVybGluJm1pZGRvdDtIdWdoZXMsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUmbWlkZG90O1RlY2hub2xvZ2llcyZtaWRkb3Q7THRkLixTVD1EdWJsaW4sQz1JRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOVN1YmplY3ROYW1lJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5SXNzdWVyU2VyaWFsPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlJc3N1ZXJOYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0NOPVRyYW5zaWVudCZtaWRkb3Q7Q0EsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUmbWlkZG90O1RlY2hub2xvZ2llcyZtaWRkb3Q7THRkLixTVD1EdWJsaW4sQz1JRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlJc3N1ZXJOYW1lJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOVNlcmlhbE51bWJlcjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MTAxNzc4ODM3MDM0ODwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOVNlcmlhbE51bWJlciZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlJc3N1ZXJTZXJpYWwmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlDZXJ0aWZpY2F0ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSURVRENDQXhDZ0F3SUJBZ0lHQU96NDZnMnNNQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CNFhEVEF5TURRd01qSXlOVGt6TUZvWERURXlNRFF3TWpJeE5Ua3lOVm93YnpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVdNQlFHQTFVRUF4TU5UV1Z5YkdsdUlFaDFaMmhsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N6Q0NBYmN3Z2dFc0JnY3Foa2pPT0FRQk1JSUJId0tCZ1FEZDQ1NEMrcWNUSVdsYjY1TktDdDJQdGd1TnBPU24mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7SWQ1d29VaWd1N3hCazJRWk5BalZ5SWhNRWZTV3A4aVIwSWRLTHgrSlFMY05PcmNuMFd3bDUvaGhXME1Yc21sUyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4ZE01Q3EycnRtREhvb0x4YkdUUHF0QUxFNnZzWFFDazVpTHozTXRHaDdneVFNWjdxN0hUNWEzSTVOQ2hVZ1kxJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01NTlFWZXRSQTFzdXNRSVZBSVF5M0JTdEJqdng4OVdxOFRqcjdJRFAxUzhsQW9HQkFKNThlNFczVnFNeG03WngmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7WUoyeFo2S1gwWmUxMFduS1pEeVVSbitUOWlGSUZiS1JGRWxLRGVvdFh3d1h3WU9OOHlyZTNaUkdrQysyK2ZpVSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsyYmR6SVdUVDZMTWJJTVZiayswN1A0T1pPeEo2WFdMOUd1WWNPUWNOdlg0MnhoMzREUEhkcTRYZGxJdE1SMjVOJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0ErT2RaNFM4VlZycGI0amtqNGN5aXIxNjI4a2dBNEdFQUFLQmdISDJLWW9hUUVIbnFXelJVdURBRzBFWVhWNlEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NHVjQzY4TVJPWVNMNkdLcU5TL0FVRmJ2SDJOVXhRRDdhR250WWdZUHhpQ2NqOTRpMzhyZ1NXZzd5U1N6OTlNQSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtSL1l2N09TZCt1ZWozcjZUbFhVMzR1Kyt4WXZSbytzdjRtOWxiL2ptWHlaSktlQytkUHFlVTFJVDVrQ3liVVJMJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0lMWmZyWnlEc2lVL3ZodlZvem93T0RBT0JnTlZIUThCQWY4RUJBTUNCNEF3RVFZRFZSME9CQW9FQ0lhdFk3U0UmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bFhFT01CTUdBMVVkSXdRTU1BcUFDSU9HUGtCMk11S1RNQWtHQnlxR1NNNDRCQU1ETHdBd0xBSVVTdlQwMmlRaiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtRNWRhNFdwZTBCdnM3R3VDY1ZzQ0ZDRWNRcGJqVWZueFhGWE5XaUZ5UTQ5WnJXcW4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlDZXJ0aWZpY2F0ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUNlcnRpZmljYXRlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJRFN6Q0NBd3VnQXdJQkFnSUdBT3o0NmZ3Sk1Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUI0WERUQXlNRFF3TWpJeU5Ua3lOVm9YRFRFeU1EUXdNakl4TlRreU5Wb3diakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJQnR6Q0NBU3dHQnlxR1NNNDRCQUV3Z2dFZkFvR0JBTjNqbmdMNnB4TWhhVnZyazBvSzNZKzJDNDJrNUtjaCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDszbkNoU0tDN3ZFR1RaQmswQ05YSWlFd1I5SmFueUpIUWgwb3ZINGxBdHcwNnR5ZlJiQ1huK0dGYlF4ZXlhVkx4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzB6a0tyYXUyWU1laWd2RnNaTStxMEFzVHEreGRBS1RtSXZQY3kwYUh1REpBeG51cnNkUGxyY2prMEtGU0JqVXcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7dzFCVjYxRURXeTZ4QWhVQWhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VUNnWUVBbm54N2hiZFdvekdidG5GZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtuYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3pLdDdkbEVhUUw3YjUrSlRaJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O3QzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTThkMnJoZDJVaTB4SGJrMEQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBRGdZUUFBb0dBZmFnK0hDQUJJSmFkREQ5QWFyaGdjMlFSM0xwNyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtQcE1PaDBsQXdMaUlzdmtPNFVsYmVPUzBJSkM4YmNxTGpNMWZWdzZGR1NheG1xKzR5MWFnMm05azZJZEUwUWg1JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O054Qi94RmttZHdxWEZSSUpWcDQ0T2VVeWdCNDdZSzc2Tm1VSVlHM0RkZmlQUFUzYnF6anZ0T3RFVGlDSHZvMjUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NEQ2VWp3UHBZRXJYUlVhak5qQTBNQTRHQTFVZER3RUIvd1FFQXdJQ0JEQVBCZ05WSFJNRUNEQUdBUUgvQWdFQSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQkVHQTFVZERnUUtCQWlEaGo1QWRqTGlrekFKQmdjcWhrak9PQVFEQXk4QU1Dd0NGRUx1MG51d2VxVzdXZjBzJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2drL0NBR0dMMEJHS0FoUk5kZ1FHcjVpeVpLb0g0b3FQbTBWSjlUalhMZz09JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5Q2VydGlmaWNhdGUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlEYXRhJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0tleUluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2ZvbzpSb290Jmd0Ozwvc3Bhbj48L3ByZT48L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMTEudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0xMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc5ZmQ2YwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMTEudHh0CkBAIC0wLDAgKzEsOSBAQAorPGJhcjpTb21ldGhpbmcgeG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIj4KKyAgICAgPGZvbzpTb21ldGhpbmcgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIj4KKyAgICAgICAgPGJhcjpTb21ldGhpbmc+CisgICAgICAgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICAgICAgIDxiYXo6U29tZXRoaW5nIHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI+PC9iYXo6U29tZXRoaW5nPgorICAgICAgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgICAgIDwvYmFyOlNvbWV0aGluZz4KKyAgICAgPC9mb286U29tZXRoaW5nPgorICA8L2JhcjpTb21ldGhpbmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0xMi5odG1sIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0xMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxYmEzNjgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTEyLmh0bWwKQEAgLTAsMCArMSw1NTcgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DYW5pbmljYWwgWE1MIG5vZGUgc2V0PC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cis8IS0tIAorLklOQ0xVREVEIHsgCisgICBjb2xvcjogIzAwMDAwMDsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IH0gCisuRVhDTFVERUQgeyAKKyAgIGNvbG9yOiAjNjY2NjY2OyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgIzk5OTk5OTsgfSAKKy5JTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCisuRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICM5OTk5OTk7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLS0+IAorPC9zdHlsZT4gCis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSIjOTk5OTk5Ij4KKzxoMT5FeHBsYW5hdGlvbiBvZiB0aGUgb3V0cHV0PC9oMT4KKzxwPlRoZSBmb2xsb3dpbmcgdGV4dCBjb250YWlucyB0aGUgbm9kZXNldCBvZiB0aGUgZ2l2ZW4gUmVmZXJlbmNlIGJlZm9yZSBpdCBpcyBjYW5vbmljYWxpemVkLiBUaGVyZSBleGlzdCBmb3VyIGRpZmZlcmVudCBzdHlsZXMgdG8gaW5kaWNhdGUgaG93IGEgZ2l2ZW4gbm9kZSBpcyB0cmVhdGVkLjwvcD4KKzx1bD4KKzxsaSBjbGFzcz0iSU5DTFVERUQiPkEgbm9kZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERUQiPkEgbm9kZSB3aGljaCBpcyA8ZW0+Tk9UPC9lbT4gaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgRVhDTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gTk9UIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPC91bD4KKzxoMT5PdXRwdXQ8L2gxPgorPHByZT4KKzxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2ZvbzpSb290PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWw6bGFuZz0iZW4taWUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtiYXI6U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Zm9vOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2JhcjpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtmb286U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2JhejpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvYmF6OlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2ZvbzpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9iYXI6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZm9vOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2JhcjpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduZWRJbmZvPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWw6bGFuZz0iZW4taWUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0Nhbm9uaWNhbGl6YXRpb25NZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvQ2Fub25pY2FsaXphdGlvbk1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmVNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZU1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5sQ09TL0p0cG1PRSs0ZVhGYU9wWTR2NEJPZ0k9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5PeVZxRVdYRTdDKzVOeUt0Y2VVa2RtaUZPOUE9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5PeVZxRVdYRTdDKzVOeUt0Y2VVa2RtaUZPOUE9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm90Jm1pZGRvdDsoc2VsZjo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5tTDFhQVEvUm9PUE8wU0hqOUtSK3lZM240Q009PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmJRZ0Y4SUN5bVlaVHVVUDBGRTQwbDNRN0Jaaz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+YlFnRjhJQ3ltWVpUdVVQMEZFNDBsM1E3QlprPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90Oz0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPklKUWdkNTlGSjFQQXh4Q1k1bUlMNmNaZW1pMD08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+U1hHaWpPMWVBckVhWEdwaEYwZHh3ajVmcDFnPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+ck5tNElkOWFoMTJudWd6WEFVSmdqYXM3bHMwPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm90Jm1pZGRvdDsoc2VsZjo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPnVPUUpRSUlVRVRZeWswK1lFQmRiRVF3cllidz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90Oz0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+QVd0cURiWFdLZjhUVjc4QzJkMTZ1YXJicEdrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm90Jm1pZGRvdDsoc2VsZjo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+dU9RSlFJSVVFVFl5azArWUVCZGJFUXdyWWJ3PTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90Oz0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5OcGpNUHpFRjVZWkZiejRsczdlTjM2UVdkWHM9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+RWFjQk4yYUJCTlNqcENPelpVT092U3Y0ekhVPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduZWRJbmZvJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlVmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RngzNFZjMDdmWGFjNnFtc2hoaExlOG9nakVsU21DNll4VG5oeGo4d01UU2tmdnhZK3dZdHJRPT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmVWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0tleUluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0tleVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RFNBS2V5VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDszZU9lQXZxbkV5RnBXK3VUU2dyZGo3WUxqYVRrcHlIZWNLRklvTHU4UVpOa0dUUUkxY2lJVEJIMGxxZklrZENIJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtTaThmaVVDM0RUcTNKOUZzSmVmNFlWdERGN0pwVXZIVE9RcXRxN1pneDZLQzhXeGt6NnJRQ3hPcjdGMEFwT1lpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4OXpMUm9lNE1rREdlNnV4MCtXdHlPVFFvVklHTlRERFVGWHJVUU5iTHJFPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1AmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtRPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5oRExjRkswR08vSHoxYXJ4T092c2dNL1ZMeVU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9RJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Rzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtubng3aGJkV296R2J0bkZnbmJGbm9wZlJsN1hSYWNwa1BKUkdmNVAySVVnVnNwRVVTVW9ONmkxZkRCZkJnNDN6JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtLdDdkbEVhUUw3YjUrSlRadDNNaFpOUG9zeHNneFZ1VDdUcy9nNWs3RW5wZFl2MGE1aHc1QncyOWZqYkdIZmdNJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4ZDJyaGQyVWkweEhiazBENDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0cmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtZPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NmWXBpaHBBUWVlcGJORlM0TUFiUVJoZFhwRGk1d0xyd3hFNWhJdm9ZcW8xTDhCUVZ1OGZZMVRGQVB0b2FlMWkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0JnL0dJSnlQM2lMZnl1QkphRHZKSkxQMzB3Qkg5aS9zNUozNjU2UGV2cE9WZFRmaTc3N0ZpOUdqNnkvaWIyVnYmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OytPWmZKa2twNEw1MCtwNVRVaFBtUUxKdFJFc2d0bCt0bklPeUpUKytHOVU9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RTQUtleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9LZXlWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5RGF0YTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlTdWJqZWN0TmFtZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0NOPU1lcmxpbiZtaWRkb3Q7SHVnaGVzLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlJm1pZGRvdDtUZWNobm9sb2dpZXMmbWlkZG90O0x0ZC4sU1Q9RHVibGluLEM9SUUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlTdWJqZWN0TmFtZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUlzc3VlclNlcmlhbDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5SXNzdWVyTmFtZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtDTj1UcmFuc2llbnQmbWlkZG90O0NBLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlJm1pZGRvdDtUZWNobm9sb2dpZXMmbWlkZG90O0x0ZC4sU1Q9RHVibGluLEM9SUUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5SXNzdWVyTmFtZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlTZXJpYWxOdW1iZXI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjEwMTc3ODgzNzAzNDg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlTZXJpYWxOdW1iZXImZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5SXNzdWVyU2VyaWFsJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5Q2VydGlmaWNhdGU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNSUlEVURDQ0F4Q2dBd0lCQWdJR0FPejQ2ZzJzTUFrR0J5cUdTTTQ0QkFNd2JqRUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQjRYRFRBeU1EUXdNakl5TlRrek1Gb1hEVEV5TURRd01qSXhOVGt5TlZvd2J6RUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVXTUJRR0ExVUVBeE1OVFdWeWJHbHVJRWgxWjJobCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjekNDQWJjd2dnRXNCZ2NxaGtqT09BUUJNSUlCSHdLQmdRRGQ0NTRDK3FjVElXbGI2NU5LQ3QyUHRndU5wT1NuJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0lkNXdvVWlndTd4QmsyUVpOQWpWeUloTUVmU1dwOGlSMElkS0x4K0pRTGNOT3JjbjBXd2w1L2hoVzBNWHNtbFMmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7OGRNNUNxMnJ0bURIb29MeGJHVFBxdEFMRTZ2c1hRQ2s1aUx6M010R2g3Z3lRTVo3cTdIVDVhM0k1TkNoVWdZMSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNTU5RVmV0UkExc3VzUUlWQUlReTNCU3RCanZ4ODlXcThUanI3SURQMVM4bEFvR0JBSjU4ZTRXM1ZxTXhtN1p4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1lKMnhaNktYMFplMTBXbktaRHlVUm4rVDlpRklGYktSRkVsS0Rlb3RYd3dYd1lPTjh5cmUzWlJHa0MrMitmaVUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7MmJkeklXVFQ2TE1iSU1WYmsrMDdQNE9aT3hKNlhXTDlHdVljT1FjTnZYNDJ4aDM0RFBIZHE0WGRsSXRNUjI1TiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtBK09kWjRTOFZWcnBiNGprajRjeWlyMTYyOGtnQTRHRUFBS0JnSEgyS1lvYVFFSG5xV3pSVXVEQUcwRVlYVjZRJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzR1Y0M2OE1ST1lTTDZHS3FOUy9BVUZidkgyTlV4UUQ3YUdudFlnWVB4aUNjajk0aTM4cmdTV2c3eVNTejk5TUEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Ui9ZdjdPU2QrdWVqM3I2VGxYVTM0dSsreFl2Um8rc3Y0bTlsYi9qbVh5WkpLZUMrZFBxZVUxSVQ1a0N5YlVSTCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtJTFpmclp5RHNpVS92aHZWb3pvd09EQU9CZ05WSFE4QkFmOEVCQU1DQjRBd0VRWURWUjBPQkFvRUNJYXRZN1NFJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2xYRU9NQk1HQTFVZEl3UU1NQXFBQ0lPR1BrQjJNdUtUTUFrR0J5cUdTTTQ0QkFNREx3QXdMQUlVU3ZUMDJpUWomcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7UTVkYTRXcGUwQnZzN0d1Q2NWc0NGQ0VjUXBialVmbnhYRlhOV2lGeVE0OVpyV3FuJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5Q2VydGlmaWNhdGUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlDZXJ0aWZpY2F0ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSURTekNDQXd1Z0F3SUJBZ0lHQU96NDZmd0pNQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CNFhEVEF5TURRd01qSXlOVGt5TlZvWERURXlNRFF3TWpJeE5Ua3lOVm93YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSUJ0ekNDQVN3R0J5cUdTTTQ0QkFFd2dnRWZBb0dCQU4zam5nTDZweE1oYVZ2cmswb0szWSsyQzQyazVLY2gmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7M25DaFNLQzd2RUdUWkJrMENOWElpRXdSOUphbnlKSFFoMG92SDRsQXR3MDZ0eWZSYkNYbitHRmJReGV5YVZMeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDswemtLcmF1MllNZWlndkZzWk0rcTBBc1RxK3hkQUtUbUl2UGN5MGFIdURKQXhudXJzZFBscmNqazBLRlNCalV3JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O3cxQlY2MUVEV3k2eEFoVUFoRExjRkswR08vSHoxYXJ4T092c2dNL1ZMeVVDZ1lFQW5ueDdoYmRXb3pHYnRuRmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bmJGbm9wZlJsN1hSYWNwa1BKUkdmNVAySVVnVnNwRVVTVW9ONmkxZkRCZkJnNDN6S3Q3ZGxFYVFMN2I1K0pUWiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDt0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ004ZDJyaGQyVWkweEhiazBEJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzQ1MW5oTHhWV3VsdmlPU1BoektLdlhyYnlTQURnWVFBQW9HQWZhZytIQ0FCSUphZEREOUFhcmhnYzJRUjNMcDcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7UHBNT2gwbEF3TGlJc3ZrTzRVbGJlT1MwSUpDOGJjcUxqTTFmVnc2RkdTYXhtcSs0eTFhZzJtOWs2SWRFMFFoNSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtOeEIveEZrbWR3cVhGUklKVnA0NE9lVXlnQjQ3WUs3Nk5tVUlZRzNEZGZpUFBVM2Jxemp2dE90RVRpQ0h2bzI1JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzRENlVqd1BwWUVyWFJVYWpOakEwTUE0R0ExVWREd0VCL3dRRUF3SUNCREFQQmdOVkhSTUVDREFHQVFIL0FnRUEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUJFR0ExVWREZ1FLQkFpRGhqNUFkakxpa3pBSkJnY3Foa2pPT0FRREF5OEFNQ3dDRkVMdTBudXdlcVc3V2YwcyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtnay9DQUdHTDBCR0tBaFJOZGdRR3I1aXlaS29ING9xUG0wVko5VGpYTGc9PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUNlcnRpZmljYXRlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5RGF0YSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9LZXlJbmZvJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9mb286Um9vdCZndDs8L3NwYW4+PC9wcmU+PC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTEyLnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMTIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkNTMzNDYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTEyLnR4dApAQCAtMCwwICsxLDkgQEAKKzxiYXI6U29tZXRoaW5nIHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI+CisgICAgIAorICAgICAgICA8YmFyOlNvbWV0aGluZz4KKyAgICAgICAgICAgCisgICAgICAgICAgICAgPGJhejpTb21ldGhpbmcgeG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ij48L2JhejpTb21ldGhpbmc+CisgICAgICAgICAgIAorICAgICAgICA8L2JhcjpTb21ldGhpbmc+CisgICAgIAorICA8L2JhcjpTb21ldGhpbmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0xMy5odG1sIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0xMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxNTE5MGUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTEzLmh0bWwKQEAgLTAsMCArMSw1NTcgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DYW5pbmljYWwgWE1MIG5vZGUgc2V0PC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cis8IS0tIAorLklOQ0xVREVEIHsgCisgICBjb2xvcjogIzAwMDAwMDsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IH0gCisuRVhDTFVERUQgeyAKKyAgIGNvbG9yOiAjNjY2NjY2OyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgIzk5OTk5OTsgfSAKKy5JTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCisuRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICM5OTk5OTk7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLS0+IAorPC9zdHlsZT4gCis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSIjOTk5OTk5Ij4KKzxoMT5FeHBsYW5hdGlvbiBvZiB0aGUgb3V0cHV0PC9oMT4KKzxwPlRoZSBmb2xsb3dpbmcgdGV4dCBjb250YWlucyB0aGUgbm9kZXNldCBvZiB0aGUgZ2l2ZW4gUmVmZXJlbmNlIGJlZm9yZSBpdCBpcyBjYW5vbmljYWxpemVkLiBUaGVyZSBleGlzdCBmb3VyIGRpZmZlcmVudCBzdHlsZXMgdG8gaW5kaWNhdGUgaG93IGEgZ2l2ZW4gbm9kZSBpcyB0cmVhdGVkLjwvcD4KKzx1bD4KKzxsaSBjbGFzcz0iSU5DTFVERUQiPkEgbm9kZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERUQiPkEgbm9kZSB3aGljaCBpcyA8ZW0+Tk9UPC9lbT4gaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgRVhDTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gTk9UIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPC91bD4KKzxoMT5PdXRwdXQ8L2gxPgorPHByZT4KKzxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2ZvbzpSb290PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWw6bGFuZz0iZW4taWUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtiYXI6U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7Zm9vOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2JhcjpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtmb286U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2JhejpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvYmF6OlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2ZvbzpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9iYXI6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvZm9vOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2JhcjpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduZWRJbmZvPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWw6bGFuZz0iZW4taWUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0Nhbm9uaWNhbGl6YXRpb25NZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvQ2Fub25pY2FsaXphdGlvbk1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmVNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZU1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5sQ09TL0p0cG1PRSs0ZVhGYU9wWTR2NEJPZ0k9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5PeVZxRVdYRTdDKzVOeUt0Y2VVa2RtaUZPOUE9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5PeVZxRVdYRTdDKzVOeUt0Y2VVa2RtaUZPOUE9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm90Jm1pZGRvdDsoc2VsZjo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5tTDFhQVEvUm9PUE8wU0hqOUtSK3lZM240Q009PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmJRZ0Y4SUN5bVlaVHVVUDBGRTQwbDNRN0Jaaz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+YlFnRjhJQ3ltWVpUdVVQMEZFNDBsM1E3QlprPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90Oz0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPklKUWdkNTlGSjFQQXh4Q1k1bUlMNmNaZW1pMD08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+U1hHaWpPMWVBckVhWEdwaEYwZHh3ajVmcDFnPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+ck5tNElkOWFoMTJudWd6WEFVSmdqYXM3bHMwPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm90Jm1pZGRvdDsoc2VsZjo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPnVPUUpRSUlVRVRZeWswK1lFQmRiRVF3cllidz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90Oz0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+QVd0cURiWFdLZjhUVjc4QzJkMTZ1YXJicEdrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm90Jm1pZGRvdDsoc2VsZjo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+dU9RSlFJSVVFVFl5azArWUVCZGJFUXdyWWJ3PTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90Oz0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5OcGpNUHpFRjVZWkZiejRsczdlTjM2UVdkWHM9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+RWFjQk4yYUJCTlNqcENPelpVT092U3Y0ekhVPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduZWRJbmZvJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlVmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RngzNFZjMDdmWGFjNnFtc2hoaExlOG9nakVsU21DNll4VG5oeGo4d01UU2tmdnhZK3dZdHJRPT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmVWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0tleUluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0tleVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RFNBS2V5VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDszZU9lQXZxbkV5RnBXK3VUU2dyZGo3WUxqYVRrcHlIZWNLRklvTHU4UVpOa0dUUUkxY2lJVEJIMGxxZklrZENIJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtTaThmaVVDM0RUcTNKOUZzSmVmNFlWdERGN0pwVXZIVE9RcXRxN1pneDZLQzhXeGt6NnJRQ3hPcjdGMEFwT1lpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4OXpMUm9lNE1rREdlNnV4MCtXdHlPVFFvVklHTlRERFVGWHJVUU5iTHJFPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1AmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtRPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5oRExjRkswR08vSHoxYXJ4T092c2dNL1ZMeVU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9RJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Rzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtubng3aGJkV296R2J0bkZnbmJGbm9wZlJsN1hSYWNwa1BKUkdmNVAySVVnVnNwRVVTVW9ONmkxZkRCZkJnNDN6JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtLdDdkbEVhUUw3YjUrSlRadDNNaFpOUG9zeHNneFZ1VDdUcy9nNWs3RW5wZFl2MGE1aHc1QncyOWZqYkdIZmdNJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4ZDJyaGQyVWkweEhiazBENDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0cmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtZPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NmWXBpaHBBUWVlcGJORlM0TUFiUVJoZFhwRGk1d0xyd3hFNWhJdm9ZcW8xTDhCUVZ1OGZZMVRGQVB0b2FlMWkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0JnL0dJSnlQM2lMZnl1QkphRHZKSkxQMzB3Qkg5aS9zNUozNjU2UGV2cE9WZFRmaTc3N0ZpOUdqNnkvaWIyVnYmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OytPWmZKa2twNEw1MCtwNVRVaFBtUUxKdFJFc2d0bCt0bklPeUpUKytHOVU9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RTQUtleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9LZXlWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5RGF0YTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlTdWJqZWN0TmFtZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0NOPU1lcmxpbiZtaWRkb3Q7SHVnaGVzLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlJm1pZGRvdDtUZWNobm9sb2dpZXMmbWlkZG90O0x0ZC4sU1Q9RHVibGluLEM9SUUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlTdWJqZWN0TmFtZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUlzc3VlclNlcmlhbDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5SXNzdWVyTmFtZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtDTj1UcmFuc2llbnQmbWlkZG90O0NBLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlJm1pZGRvdDtUZWNobm9sb2dpZXMmbWlkZG90O0x0ZC4sU1Q9RHVibGluLEM9SUUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5SXNzdWVyTmFtZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlTZXJpYWxOdW1iZXI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjEwMTc3ODgzNzAzNDg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlTZXJpYWxOdW1iZXImZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5SXNzdWVyU2VyaWFsJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5Q2VydGlmaWNhdGU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNSUlEVURDQ0F4Q2dBd0lCQWdJR0FPejQ2ZzJzTUFrR0J5cUdTTTQ0QkFNd2JqRUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQjRYRFRBeU1EUXdNakl5TlRrek1Gb1hEVEV5TURRd01qSXhOVGt5TlZvd2J6RUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVXTUJRR0ExVUVBeE1OVFdWeWJHbHVJRWgxWjJobCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjekNDQWJjd2dnRXNCZ2NxaGtqT09BUUJNSUlCSHdLQmdRRGQ0NTRDK3FjVElXbGI2NU5LQ3QyUHRndU5wT1NuJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0lkNXdvVWlndTd4QmsyUVpOQWpWeUloTUVmU1dwOGlSMElkS0x4K0pRTGNOT3JjbjBXd2w1L2hoVzBNWHNtbFMmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7OGRNNUNxMnJ0bURIb29MeGJHVFBxdEFMRTZ2c1hRQ2s1aUx6M010R2g3Z3lRTVo3cTdIVDVhM0k1TkNoVWdZMSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNTU5RVmV0UkExc3VzUUlWQUlReTNCU3RCanZ4ODlXcThUanI3SURQMVM4bEFvR0JBSjU4ZTRXM1ZxTXhtN1p4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1lKMnhaNktYMFplMTBXbktaRHlVUm4rVDlpRklGYktSRkVsS0Rlb3RYd3dYd1lPTjh5cmUzWlJHa0MrMitmaVUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7MmJkeklXVFQ2TE1iSU1WYmsrMDdQNE9aT3hKNlhXTDlHdVljT1FjTnZYNDJ4aDM0RFBIZHE0WGRsSXRNUjI1TiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtBK09kWjRTOFZWcnBiNGprajRjeWlyMTYyOGtnQTRHRUFBS0JnSEgyS1lvYVFFSG5xV3pSVXVEQUcwRVlYVjZRJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzR1Y0M2OE1ST1lTTDZHS3FOUy9BVUZidkgyTlV4UUQ3YUdudFlnWVB4aUNjajk0aTM4cmdTV2c3eVNTejk5TUEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Ui9ZdjdPU2QrdWVqM3I2VGxYVTM0dSsreFl2Um8rc3Y0bTlsYi9qbVh5WkpLZUMrZFBxZVUxSVQ1a0N5YlVSTCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtJTFpmclp5RHNpVS92aHZWb3pvd09EQU9CZ05WSFE4QkFmOEVCQU1DQjRBd0VRWURWUjBPQkFvRUNJYXRZN1NFJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2xYRU9NQk1HQTFVZEl3UU1NQXFBQ0lPR1BrQjJNdUtUTUFrR0J5cUdTTTQ0QkFNREx3QXdMQUlVU3ZUMDJpUWomcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7UTVkYTRXcGUwQnZzN0d1Q2NWc0NGQ0VjUXBialVmbnhYRlhOV2lGeVE0OVpyV3FuJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5Q2VydGlmaWNhdGUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlDZXJ0aWZpY2F0ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSURTekNDQXd1Z0F3SUJBZ0lHQU96NDZmd0pNQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CNFhEVEF5TURRd01qSXlOVGt5TlZvWERURXlNRFF3TWpJeE5Ua3lOVm93YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSUJ0ekNDQVN3R0J5cUdTTTQ0QkFFd2dnRWZBb0dCQU4zam5nTDZweE1oYVZ2cmswb0szWSsyQzQyazVLY2gmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7M25DaFNLQzd2RUdUWkJrMENOWElpRXdSOUphbnlKSFFoMG92SDRsQXR3MDZ0eWZSYkNYbitHRmJReGV5YVZMeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDswemtLcmF1MllNZWlndkZzWk0rcTBBc1RxK3hkQUtUbUl2UGN5MGFIdURKQXhudXJzZFBscmNqazBLRlNCalV3JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O3cxQlY2MUVEV3k2eEFoVUFoRExjRkswR08vSHoxYXJ4T092c2dNL1ZMeVVDZ1lFQW5ueDdoYmRXb3pHYnRuRmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bmJGbm9wZlJsN1hSYWNwa1BKUkdmNVAySVVnVnNwRVVTVW9ONmkxZkRCZkJnNDN6S3Q3ZGxFYVFMN2I1K0pUWiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDt0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ004ZDJyaGQyVWkweEhiazBEJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzQ1MW5oTHhWV3VsdmlPU1BoektLdlhyYnlTQURnWVFBQW9HQWZhZytIQ0FCSUphZEREOUFhcmhnYzJRUjNMcDcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7UHBNT2gwbEF3TGlJc3ZrTzRVbGJlT1MwSUpDOGJjcUxqTTFmVnc2RkdTYXhtcSs0eTFhZzJtOWs2SWRFMFFoNSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtOeEIveEZrbWR3cVhGUklKVnA0NE9lVXlnQjQ3WUs3Nk5tVUlZRzNEZGZpUFBVM2Jxemp2dE90RVRpQ0h2bzI1JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzRENlVqd1BwWUVyWFJVYWpOakEwTUE0R0ExVWREd0VCL3dRRUF3SUNCREFQQmdOVkhSTUVDREFHQVFIL0FnRUEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUJFR0ExVWREZ1FLQkFpRGhqNUFkakxpa3pBSkJnY3Foa2pPT0FRREF5OEFNQ3dDRkVMdTBudXdlcVc3V2YwcyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtnay9DQUdHTDBCR0tBaFJOZGdRR3I1aXlaS29ING9xUG0wVko5VGpYTGc9PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUNlcnRpZmljYXRlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5RGF0YSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9LZXlJbmZvJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9mb286Um9vdCZndDs8L3NwYW4+PC9wcmU+PC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTEzLnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMTMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3ZmI2ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTEzLnR4dApAQCAtMCwwICsxLDkgQEAKKzxiYXI6U29tZXRoaW5nPgorICAgICA8Zm9vOlNvbWV0aGluZz4KKyAgICAgICAgPGJhcjpTb21ldGhpbmc+CisgICAgICAgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICAgICAgIDxiYXo6U29tZXRoaW5nPjwvYmF6OlNvbWV0aGluZz4KKyAgICAgICAgICAgPC9mb286U29tZXRoaW5nPgorICAgICAgICA8L2JhcjpTb21ldGhpbmc+CisgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgPC9iYXI6U29tZXRoaW5nPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMTQuaHRtbCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMTQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTUxOTBlCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0xNC5odG1sCkBAIC0wLDAgKzEsNTU3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q2FuaW5pY2FsIFhNTCBub2RlIHNldDwvdGl0bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorPCEtLSAKKy5JTkNMVURFRCB7IAorICAgY29sb3I6ICMwMDAwMDA7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyB9IAorLkVYQ0xVREVEIHsgCisgICBjb2xvcjogIzY2NjY2NjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICM5OTk5OTk7IH0gCisuSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5OTk5OyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy0tPiAKKzwvc3R5bGU+IAorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0iIzk5OTk5OSI+Cis8aDE+RXhwbGFuYXRpb24gb2YgdGhlIG91dHB1dDwvaDE+Cis8cD5UaGUgZm9sbG93aW5nIHRleHQgY29udGFpbnMgdGhlIG5vZGVzZXQgb2YgdGhlIGdpdmVuIFJlZmVyZW5jZSBiZWZvcmUgaXQgaXMgY2Fub25pY2FsaXplZC4gVGhlcmUgZXhpc3QgZm91ciBkaWZmZXJlbnQgc3R5bGVzIHRvIGluZGljYXRlIGhvdyBhIGdpdmVuIG5vZGUgaXMgdHJlYXRlZC48L3A+Cis8dWw+Cis8bGkgY2xhc3M9IklOQ0xVREVEIj5BIG5vZGUgd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVEIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVEIj5BIG5vZGUgd2hpY2ggaXMgPGVtPk5PVDwvZW0+IGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIEVYQ0xVREVEIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgQU5EIGluIHRoZSBJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3QgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0Ugc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIE5PVCB0aGUgbm9kZSBzZXQgQU5EIGluIHRoZSBJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3QgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0Ugc3R5bGUuPC9saT4KKzwvdWw+Cis8aDE+T3V0cHV0PC9oMT4KKzxwcmU+Cis8c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtmb286Um9vdDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sOmxhbmc9ImVuLWllIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7YmFyOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2ZvbzpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtiYXI6U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7Zm9vOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtiYXo6U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2JhejpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9mb286U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvYmFyOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2ZvbzpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9iYXI6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmVkSW5mbzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sOmxhbmc9ImVuLWllIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtDYW5vbmljYWxpemF0aW9uTWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0Nhbm9uaWNhbGl6YXRpb25NZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlTWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmVNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+bENPUy9KdHBtT0UrNGVYRmFPcFk0djRCT2dJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+T3lWcUVXWEU3Qys1TnlLdGNlVWtkbWlGTzlBPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+T3lWcUVXWEU3Qys1TnlLdGNlVWtkbWlGTzlBPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25vdCZtaWRkb3Q7KHNlbGY6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+bUwxYUFRL1JvT1BPMFNIajlLUit5WTNuNENNPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5iUWdGOElDeW1ZWlR1VVAwRkU0MGwzUTdCWms9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmJRZ0Y4SUN5bVlaVHVVUDBGRTQwbDNRN0Jaaz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDs9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5JSlFnZDU5RkoxUEF4eENZNW1JTDZjWmVtaTA9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPlNYR2lqTzFlQXJFYVhHcGhGMGR4d2o1ZnAxZz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPnJObTRJZDlhaDEybnVnelhBVUpnamFzN2xzMD08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25vdCZtaWRkb3Q7KHNlbGY6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj51T1FKUUlJVUVUWXlrMCtZRUJkYkVRd3JZYnc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDs9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPkFXdHFEYlhXS2Y4VFY3OEMyZDE2dWFyYnBHaz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25vdCZtaWRkb3Q7KHNlbGY6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPnVPUUpRSUlVRVRZeWswK1lFQmRiRVF3cllidz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDs9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+TnBqTVB6RUY1WVpGYno0bHM3ZU4zNlFXZFhzPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPkVhY0JOMmFCQk5TanBDT3paVU9PdlN2NHpIVT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmVkSW5mbyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0Z4MzRWYzA3ZlhhYzZxbXNoaGhMZThvZ2pFbFNtQzZZeFRuaHhqOHdNVFNrZnZ4WSt3WXRyUT09JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlVmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtLZXlJbmZvPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtLZXlWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RTQUtleVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1A8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7M2VPZUF2cW5FeUZwVyt1VFNncmRqN1lMamFUa3B5SGVjS0ZJb0x1OFFaTmtHVFFJMWNpSVRCSDBscWZJa2RDSCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7U2k4ZmlVQzNEVHEzSjlGc0plZjRZVnRERjdKcFV2SFRPUXF0cTdaZ3g2S0M4V3hrejZyUUN4T3I3RjBBcE9ZaSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7ODl6TFJvZTRNa0RHZTZ1eDArV3R5T1RRb1ZJR05URERVRlhyVVFOYkxyRT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9QJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+aERMY0ZLMEdPL0h6MWFyeE9PdnNnTS9WTHlVPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0c8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm54N2hiZFdvekdidG5GZ25iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzeiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7S3Q3ZGxFYVFMN2I1K0pUWnQzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7OGQycmhkMlVpMHhIYmswRDQ1MW5oTHhWV3VsdmlPU1BoektLdlhyYnlTQT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9HJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjZllwaWhwQVFlZXBiTkZTNE1BYlFSaGRYcERpNXdMcnd4RTVoSXZvWXFvMUw4QlFWdThmWTFURkFQdG9hZTFpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtCZy9HSUp5UDNpTGZ5dUJKYUR2SkpMUDMwd0JIOWkvczVKMzY1NlBldnBPVmRUZmk3NzdGaTlHajZ5L2liMlZ2JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsrT1pmSmtrcDRMNTArcDVUVWhQbVFMSnRSRXNndGwrdG5JT3lKVCsrRzlVPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1kmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EU0FLZXlWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvS2V5VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOURhdGE8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5U3ViamVjdE5hbWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtDTj1NZXJsaW4mbWlkZG90O0h1Z2hlcyxPVT1YL1NlY3VyZSxPPUJhbHRpbW9yZSZtaWRkb3Q7VGVjaG5vbG9naWVzJm1pZGRvdDtMdGQuLFNUPUR1YmxpbixDPUlFJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5U3ViamVjdE5hbWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlJc3N1ZXJTZXJpYWw8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUlzc3Vlck5hbWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Q049VHJhbnNpZW50Jm1pZGRvdDtDQSxPVT1YL1NlY3VyZSxPPUJhbHRpbW9yZSZtaWRkb3Q7VGVjaG5vbG9naWVzJm1pZGRvdDtMdGQuLFNUPUR1YmxpbixDPUlFJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUlzc3Vlck5hbWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5U2VyaWFsTnVtYmVyPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4xMDE3Nzg4MzcwMzQ4PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5U2VyaWFsTnVtYmVyJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUlzc3VlclNlcmlhbCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUNlcnRpZmljYXRlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJRFVEQ0NBeENnQXdJQkFnSUdBT3o0Nmcyc01Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUI0WERUQXlNRFF3TWpJeU5Ua3pNRm9YRFRFeU1EUXdNakl4TlRreU5Wb3diekVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFV01CUUdBMVVFQXhNTlRXVnliR2x1SUVoMVoyaGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3pDQ0FiY3dnZ0VzQmdjcWhrak9PQVFCTUlJQkh3S0JnUURkNDU0QytxY1RJV2xiNjVOS0N0MlB0Z3VOcE9TbiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtJZDV3b1VpZ3U3eEJrMlFaTkFqVnlJaE1FZlNXcDhpUjBJZEtMeCtKUUxjTk9yY24wV3dsNS9oaFcwTVhzbWxTJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzhkTTVDcTJydG1ESG9vTHhiR1RQcXRBTEU2dnNYUUNrNWlMejNNdEdoN2d5UU1aN3E3SFQ1YTNJNU5DaFVnWTEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TU1OUVZldFJBMXN1c1FJVkFJUXkzQlN0Qmp2eDg5V3E4VGpyN0lEUDFTOGxBb0dCQUo1OGU0VzNWcU14bTdaeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtZSjJ4WjZLWDBaZTEwV25LWkR5VVJuK1Q5aUZJRmJLUkZFbEtEZW90WHd3WHdZT044eXJlM1pSR2tDKzIrZmlVJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzJiZHpJV1RUNkxNYklNVmJrKzA3UDRPWk94SjZYV0w5R3VZY09RY052WDQyeGgzNERQSGRxNFhkbEl0TVIyNU4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7QStPZFo0UzhWVnJwYjRqa2o0Y3lpcjE2MjhrZ0E0R0VBQUtCZ0hIMktZb2FRRUhucVd6UlV1REFHMEVZWFY2USZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs0dWNDNjhNUk9ZU0w2R0txTlMvQVVGYnZIMk5VeFFEN2FHbnRZZ1lQeGlDY2o5NGkzOHJnU1dnN3lTU3o5OU1BJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1IvWXY3T1NkK3VlajNyNlRsWFUzNHUrK3hZdlJvK3N2NG05bGIvam1YeVpKS2VDK2RQcWVVMUlUNWtDeWJVUkwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7SUxaZnJaeURzaVUvdmh2Vm96b3dPREFPQmdOVkhROEJBZjhFQkFNQ0I0QXdFUVlEVlIwT0JBb0VDSWF0WTdTRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtsWEVPTUJNR0ExVWRJd1FNTUFxQUNJT0dQa0IyTXVLVE1Ba0dCeXFHU000NEJBTURMd0F3TEFJVVN2VDAyaVFqJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1E1ZGE0V3BlMEJ2czdHdUNjVnNDRkNFY1FwYmpVZm54WEZYTldpRnlRNDlacldxbiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUNlcnRpZmljYXRlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5Q2VydGlmaWNhdGU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNSUlEU3pDQ0F3dWdBd0lCQWdJR0FPejQ2ZndKTUFrR0J5cUdTTTQ0QkFNd2JqRUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQjRYRFRBeU1EUXdNakl5TlRreU5Wb1hEVEV5TURRd01qSXhOVGt5TlZvd2JqRUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNSUlCdHpDQ0FTd0dCeXFHU000NEJBRXdnZ0VmQW9HQkFOM2puZ0w2cHhNaGFWdnJrMG9LM1krMkM0Mms1S2NoJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzNuQ2hTS0M3dkVHVFpCazBDTlhJaUV3UjlKYW55SkhRaDBvdkg0bEF0dzA2dHlmUmJDWG4rR0ZiUXhleWFWTHgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7MHprS3JhdTJZTWVpZ3ZGc1pNK3EwQXNUcSt4ZEFLVG1JdlBjeTBhSHVESkF4bnVyc2RQbHJjamswS0ZTQmpVdyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDt3MUJWNjFFRFd5NnhBaFVBaERMY0ZLMEdPL0h6MWFyeE9PdnNnTS9WTHlVQ2dZRUFubng3aGJkV296R2J0bkZnJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzekt0N2RsRWFRTDdiNStKVFomcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7dDNNaFpOUG9zeHNneFZ1VDdUcy9nNWs3RW5wZFl2MGE1aHc1QncyOWZqYkdIZmdNOGQycmhkMlVpMHhIYmswRCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs0NTFuaEx4Vld1bHZpT1NQaHpLS3ZYcmJ5U0FEZ1lRQUFvR0FmYWcrSENBQklKYWRERDlBYXJoZ2MyUVIzTHA3JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1BwTU9oMGxBd0xpSXN2a080VWxiZU9TMElKQzhiY3FMak0xZlZ3NkZHU2F4bXErNHkxYWcybTlrNklkRTBRaDUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TnhCL3hGa21kd3FYRlJJSlZwNDRPZVV5Z0I0N1lLNzZObVVJWUczRGRmaVBQVTNicXpqdnRPdEVUaUNIdm8yNSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs0RDZVandQcFlFclhSVWFqTmpBME1BNEdBMVVkRHdFQi93UUVBd0lDQkRBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CRUdBMVVkRGdRS0JBaURoajVBZGpMaWt6QUpCZ2NxaGtqT09BUURBeThBTUN3Q0ZFTHUwbnV3ZXFXN1dmMHMmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Z2svQ0FHR0wwQkdLQWhSTmRnUUdyNWl5WktvSDRvcVBtMFZKOVRqWExnPT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlDZXJ0aWZpY2F0ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOURhdGEmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvS2V5SW5mbyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZm9vOlJvb3QmZ3Q7PC9zcGFuPjwvcHJlPjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0xNC50eHQgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTE0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2ZiNmU1Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0xNC50eHQKQEAgLTAsMCArMSw5IEBACis8YmFyOlNvbWV0aGluZz4KKyAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgIDxiYXI6U29tZXRoaW5nPgorICAgICAgICAgICA8Zm9vOlNvbWV0aGluZz4KKyAgICAgICAgICAgICA8YmF6OlNvbWV0aGluZz48L2JhejpTb21ldGhpbmc+CisgICAgICAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICAgICAgPC9iYXI6U29tZXRoaW5nPgorICAgICA8L2ZvbzpTb21ldGhpbmc+CisgIDwvYmFyOlNvbWV0aGluZz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTE1Lmh0bWwgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTE1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE3ZjhiNwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMTUuaHRtbApAQCAtMCwwICsxLDU1NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNhbmluaWNhbCBYTUwgbm9kZSBzZXQ8L3RpdGxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKzwhLS0gCisuSU5DTFVERUQgeyAKKyAgIGNvbG9yOiAjMDAwMDAwOyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgfSAKKy5FWENMVURFRCB7IAorICAgY29sb3I6ICM2NjY2NjY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjOTk5OTk5OyB9IAorLklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy5FWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogIzk5OTk5OTsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCistLT4gCis8L3N0eWxlPiAKKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IiM5OTk5OTkiPgorPGgxPkV4cGxhbmF0aW9uIG9mIHRoZSBvdXRwdXQ8L2gxPgorPHA+VGhlIGZvbGxvd2luZyB0ZXh0IGNvbnRhaW5zIHRoZSBub2Rlc2V0IG9mIHRoZSBnaXZlbiBSZWZlcmVuY2UgYmVmb3JlIGl0IGlzIGNhbm9uaWNhbGl6ZWQuIFRoZXJlIGV4aXN0IGZvdXIgZGlmZmVyZW50IHN0eWxlcyB0byBpbmRpY2F0ZSBob3cgYSBnaXZlbiBub2RlIGlzIHRyZWF0ZWQuPC9wPgorPHVsPgorPGxpIGNsYXNzPSJJTkNMVURFRCI+QSBub2RlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRCI+QSBub2RlIHdoaWNoIGlzIDxlbT5OT1Q8L2VtPiBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCBFWENMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiBOT1QgdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8L3VsPgorPGgxPk91dHB1dDwvaDE+Cis8cHJlPgorPHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Zm9vOlJvb3Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpsYW5nPSJlbi1pZSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2JhcjpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtmb286U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7YmFyOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2ZvbzpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7YmF6OlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9iYXo6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZm9vOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2JhcjpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9mb286U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvYmFyOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25lZEluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpsYW5nPSJlbi1pZSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Q2Fub25pY2FsaXphdGlvbk1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9DYW5vbmljYWxpemF0aW9uTWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZU1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlTWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmxDT1MvSnRwbU9FKzRlWEZhT3BZNHY0Qk9nST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk95VnFFV1hFN0MrNU55S3RjZVVrZG1pRk85QT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk95VnFFV1hFN0MrNU55S3RjZVVrZG1pRk85QT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPm1MMWFBUS9Sb09QTzBTSGo5S1IreVkzbjRDTT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+YlFnRjhJQ3ltWVpUdVVQMEZFNDBsM1E3QlprPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5iUWdGOElDeW1ZWlR1VVAwRkU0MGwzUTdCWms9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+SUpRZ2Q1OUZKMVBBeHhDWTVtSUw2Y1plbWkwPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5TWEdpak8xZUFyRWFYR3BoRjBkeHdqNWZwMWc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5yTm00SWQ5YWgxMm51Z3pYQVVKZ2phczdsczA9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+dU9RSlFJSVVFVFl5azArWUVCZGJFUXdyWWJ3PTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5BV3RxRGJYV0tmOFRWNzhDMmQxNnVhcmJwR2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj51T1FKUUlJVUVUWXlrMCtZRUJkYkVRd3JZYnc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk5wak1QekVGNVlaRmJ6NGxzN2VOMzZRV2RYcz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5FYWNCTjJhQkJOU2pwQ096WlVPT3ZTdjR6SFU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25lZEluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmVWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtGeDM0VmMwN2ZYYWM2cW1zaGhoTGU4b2dqRWxTbUM2WXhUbmh4ajh3TVRTa2Z2eFkrd1l0clE9PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5SW5mbzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEU0FLZXlWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtQPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzNlT2VBdnFuRXlGcFcrdVRTZ3JkajdZTGphVGtweUhlY0tGSW9MdThRWk5rR1RRSTFjaUlUQkgwbHFmSWtkQ0gmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1NpOGZpVUMzRFRxM0o5RnNKZWY0WVZ0REY3SnBVdkhUT1FxdHE3Wmd4NktDOFd4a3o2clFDeE9yN0YwQXBPWWkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozg5ekxSb2U0TWtER2U2dXgwK1d0eU9UUW9WSUdOVEREVUZYclVRTmJMckU9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1E8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1EmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtHPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25ueDdoYmRXb3pHYnRuRmduYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3omcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0t0N2RsRWFRTDdiNStKVFp0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ00mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzhkMnJoZDJVaTB4SGJrMEQ0NTFuaEx4Vld1bHZpT1NQaHpLS3ZYcmJ5U0E9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1k8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y2ZZcGlocEFRZWVwYk5GUzRNQWJRUmhkWHBEaTV3THJ3eEU1aEl2b1lxbzFMOEJRVnU4ZlkxVEZBUHRvYWUxaSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7QmcvR0lKeVAzaUxmeXVCSmFEdkpKTFAzMHdCSDlpL3M1SjM2NTZQZXZwT1ZkVGZpNzc3Rmk5R2o2eS9pYjJWdiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7K09aZkpra3A0TDUwK3A1VFVoUG1RTEp0UkVzZ3RsK3RuSU95SlQrK0c5VT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9ZJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRFNBS2V5VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0tleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlEYXRhPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOVN1YmplY3ROYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Q049TWVybGluJm1pZGRvdDtIdWdoZXMsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUmbWlkZG90O1RlY2hub2xvZ2llcyZtaWRkb3Q7THRkLixTVD1EdWJsaW4sQz1JRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOVN1YmplY3ROYW1lJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5SXNzdWVyU2VyaWFsPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlJc3N1ZXJOYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0NOPVRyYW5zaWVudCZtaWRkb3Q7Q0EsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUmbWlkZG90O1RlY2hub2xvZ2llcyZtaWRkb3Q7THRkLixTVD1EdWJsaW4sQz1JRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlJc3N1ZXJOYW1lJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOVNlcmlhbE51bWJlcjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MTAxNzc4ODM3MDM0ODwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOVNlcmlhbE51bWJlciZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlJc3N1ZXJTZXJpYWwmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlDZXJ0aWZpY2F0ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSURVRENDQXhDZ0F3SUJBZ0lHQU96NDZnMnNNQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CNFhEVEF5TURRd01qSXlOVGt6TUZvWERURXlNRFF3TWpJeE5Ua3lOVm93YnpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVdNQlFHQTFVRUF4TU5UV1Z5YkdsdUlFaDFaMmhsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N6Q0NBYmN3Z2dFc0JnY3Foa2pPT0FRQk1JSUJId0tCZ1FEZDQ1NEMrcWNUSVdsYjY1TktDdDJQdGd1TnBPU24mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7SWQ1d29VaWd1N3hCazJRWk5BalZ5SWhNRWZTV3A4aVIwSWRLTHgrSlFMY05PcmNuMFd3bDUvaGhXME1Yc21sUyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4ZE01Q3EycnRtREhvb0x4YkdUUHF0QUxFNnZzWFFDazVpTHozTXRHaDdneVFNWjdxN0hUNWEzSTVOQ2hVZ1kxJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01NTlFWZXRSQTFzdXNRSVZBSVF5M0JTdEJqdng4OVdxOFRqcjdJRFAxUzhsQW9HQkFKNThlNFczVnFNeG03WngmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7WUoyeFo2S1gwWmUxMFduS1pEeVVSbitUOWlGSUZiS1JGRWxLRGVvdFh3d1h3WU9OOHlyZTNaUkdrQysyK2ZpVSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsyYmR6SVdUVDZMTWJJTVZiayswN1A0T1pPeEo2WFdMOUd1WWNPUWNOdlg0MnhoMzREUEhkcTRYZGxJdE1SMjVOJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0ErT2RaNFM4VlZycGI0amtqNGN5aXIxNjI4a2dBNEdFQUFLQmdISDJLWW9hUUVIbnFXelJVdURBRzBFWVhWNlEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NHVjQzY4TVJPWVNMNkdLcU5TL0FVRmJ2SDJOVXhRRDdhR250WWdZUHhpQ2NqOTRpMzhyZ1NXZzd5U1N6OTlNQSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtSL1l2N09TZCt1ZWozcjZUbFhVMzR1Kyt4WXZSbytzdjRtOWxiL2ptWHlaSktlQytkUHFlVTFJVDVrQ3liVVJMJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0lMWmZyWnlEc2lVL3ZodlZvem93T0RBT0JnTlZIUThCQWY4RUJBTUNCNEF3RVFZRFZSME9CQW9FQ0lhdFk3U0UmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bFhFT01CTUdBMVVkSXdRTU1BcUFDSU9HUGtCMk11S1RNQWtHQnlxR1NNNDRCQU1ETHdBd0xBSVVTdlQwMmlRaiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtRNWRhNFdwZTBCdnM3R3VDY1ZzQ0ZDRWNRcGJqVWZueFhGWE5XaUZ5UTQ5WnJXcW4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlDZXJ0aWZpY2F0ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUNlcnRpZmljYXRlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJRFN6Q0NBd3VnQXdJQkFnSUdBT3o0NmZ3Sk1Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUI0WERUQXlNRFF3TWpJeU5Ua3lOVm9YRFRFeU1EUXdNakl4TlRreU5Wb3diakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJQnR6Q0NBU3dHQnlxR1NNNDRCQUV3Z2dFZkFvR0JBTjNqbmdMNnB4TWhhVnZyazBvSzNZKzJDNDJrNUtjaCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDszbkNoU0tDN3ZFR1RaQmswQ05YSWlFd1I5SmFueUpIUWgwb3ZINGxBdHcwNnR5ZlJiQ1huK0dGYlF4ZXlhVkx4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzB6a0tyYXUyWU1laWd2RnNaTStxMEFzVHEreGRBS1RtSXZQY3kwYUh1REpBeG51cnNkUGxyY2prMEtGU0JqVXcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7dzFCVjYxRURXeTZ4QWhVQWhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VUNnWUVBbm54N2hiZFdvekdidG5GZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtuYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3pLdDdkbEVhUUw3YjUrSlRaJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O3QzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTThkMnJoZDJVaTB4SGJrMEQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBRGdZUUFBb0dBZmFnK0hDQUJJSmFkREQ5QWFyaGdjMlFSM0xwNyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtQcE1PaDBsQXdMaUlzdmtPNFVsYmVPUzBJSkM4YmNxTGpNMWZWdzZGR1NheG1xKzR5MWFnMm05azZJZEUwUWg1JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O054Qi94RmttZHdxWEZSSUpWcDQ0T2VVeWdCNDdZSzc2Tm1VSVlHM0RkZmlQUFUzYnF6anZ0T3RFVGlDSHZvMjUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NEQ2VWp3UHBZRXJYUlVhak5qQTBNQTRHQTFVZER3RUIvd1FFQXdJQ0JEQVBCZ05WSFJNRUNEQUdBUUgvQWdFQSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQkVHQTFVZERnUUtCQWlEaGo1QWRqTGlrekFKQmdjcWhrak9PQVFEQXk4QU1Dd0NGRUx1MG51d2VxVzdXZjBzJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2drL0NBR0dMMEJHS0FoUk5kZ1FHcjVpeVpLb0g0b3FQbTBWSjlUalhMZz09JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5Q2VydGlmaWNhdGUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlEYXRhJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0tleUluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2ZvbzpSb290Jmd0Ozwvc3Bhbj48L3ByZT48L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMTUudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0xNS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMTUudHh0CmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTE2Lmh0bWwgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTE2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI5NzcwOAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMTYuaHRtbApAQCAtMCwwICsxLDU1NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNhbmluaWNhbCBYTUwgbm9kZSBzZXQ8L3RpdGxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKzwhLS0gCisuSU5DTFVERUQgeyAKKyAgIGNvbG9yOiAjMDAwMDAwOyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgfSAKKy5FWENMVURFRCB7IAorICAgY29sb3I6ICM2NjY2NjY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjOTk5OTk5OyB9IAorLklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy5FWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogIzk5OTk5OTsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCistLT4gCis8L3N0eWxlPiAKKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IiM5OTk5OTkiPgorPGgxPkV4cGxhbmF0aW9uIG9mIHRoZSBvdXRwdXQ8L2gxPgorPHA+VGhlIGZvbGxvd2luZyB0ZXh0IGNvbnRhaW5zIHRoZSBub2Rlc2V0IG9mIHRoZSBnaXZlbiBSZWZlcmVuY2UgYmVmb3JlIGl0IGlzIGNhbm9uaWNhbGl6ZWQuIFRoZXJlIGV4aXN0IGZvdXIgZGlmZmVyZW50IHN0eWxlcyB0byBpbmRpY2F0ZSBob3cgYSBnaXZlbiBub2RlIGlzIHRyZWF0ZWQuPC9wPgorPHVsPgorPGxpIGNsYXNzPSJJTkNMVURFRCI+QSBub2RlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRCI+QSBub2RlIHdoaWNoIGlzIDxlbT5OT1Q8L2VtPiBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCBFWENMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiBOT1QgdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8L3VsPgorPGgxPk91dHB1dDwvaDE+Cis8cHJlPgorPHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Zm9vOlJvb3Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpsYW5nPSJlbi1pZSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2JhcjpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtmb286U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7YmFyOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2ZvbzpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7YmF6OlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9iYXo6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZm9vOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2JhcjpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9mb286U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvYmFyOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25lZEluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpsYW5nPSJlbi1pZSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Q2Fub25pY2FsaXphdGlvbk1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9DYW5vbmljYWxpemF0aW9uTWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZU1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlTWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmxDT1MvSnRwbU9FKzRlWEZhT3BZNHY0Qk9nST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk95VnFFV1hFN0MrNU55S3RjZVVrZG1pRk85QT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk95VnFFV1hFN0MrNU55S3RjZVVrZG1pRk85QT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPm1MMWFBUS9Sb09QTzBTSGo5S1IreVkzbjRDTT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+YlFnRjhJQ3ltWVpUdVVQMEZFNDBsM1E3QlprPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5iUWdGOElDeW1ZWlR1VVAwRkU0MGwzUTdCWms9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+SUpRZ2Q1OUZKMVBBeHhDWTVtSUw2Y1plbWkwPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5TWEdpak8xZUFyRWFYR3BoRjBkeHdqNWZwMWc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5yTm00SWQ5YWgxMm51Z3pYQVVKZ2phczdsczA9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+dU9RSlFJSVVFVFl5azArWUVCZGJFUXdyWWJ3PTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5BV3RxRGJYV0tmOFRWNzhDMmQxNnVhcmJwR2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj51T1FKUUlJVUVUWXlrMCtZRUJkYkVRd3JZYnc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk5wak1QekVGNVlaRmJ6NGxzN2VOMzZRV2RYcz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5FYWNCTjJhQkJOU2pwQ096WlVPT3ZTdjR6SFU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25lZEluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmVWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtGeDM0VmMwN2ZYYWM2cW1zaGhoTGU4b2dqRWxTbUM2WXhUbmh4ajh3TVRTa2Z2eFkrd1l0clE9PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5SW5mbzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEU0FLZXlWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtQPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzNlT2VBdnFuRXlGcFcrdVRTZ3JkajdZTGphVGtweUhlY0tGSW9MdThRWk5rR1RRSTFjaUlUQkgwbHFmSWtkQ0gmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1NpOGZpVUMzRFRxM0o5RnNKZWY0WVZ0REY3SnBVdkhUT1FxdHE3Wmd4NktDOFd4a3o2clFDeE9yN0YwQXBPWWkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozg5ekxSb2U0TWtER2U2dXgwK1d0eU9UUW9WSUdOVEREVUZYclVRTmJMckU9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1E8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1EmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtHPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25ueDdoYmRXb3pHYnRuRmduYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3omcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0t0N2RsRWFRTDdiNStKVFp0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ00mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzhkMnJoZDJVaTB4SGJrMEQ0NTFuaEx4Vld1bHZpT1NQaHpLS3ZYcmJ5U0E9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1k8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y2ZZcGlocEFRZWVwYk5GUzRNQWJRUmhkWHBEaTV3THJ3eEU1aEl2b1lxbzFMOEJRVnU4ZlkxVEZBUHRvYWUxaSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7QmcvR0lKeVAzaUxmeXVCSmFEdkpKTFAzMHdCSDlpL3M1SjM2NTZQZXZwT1ZkVGZpNzc3Rmk5R2o2eS9pYjJWdiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7K09aZkpra3A0TDUwK3A1VFVoUG1RTEp0UkVzZ3RsK3RuSU95SlQrK0c5VT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9ZJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRFNBS2V5VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0tleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlEYXRhPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOVN1YmplY3ROYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Q049TWVybGluJm1pZGRvdDtIdWdoZXMsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUmbWlkZG90O1RlY2hub2xvZ2llcyZtaWRkb3Q7THRkLixTVD1EdWJsaW4sQz1JRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOVN1YmplY3ROYW1lJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5SXNzdWVyU2VyaWFsPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlJc3N1ZXJOYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0NOPVRyYW5zaWVudCZtaWRkb3Q7Q0EsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUmbWlkZG90O1RlY2hub2xvZ2llcyZtaWRkb3Q7THRkLixTVD1EdWJsaW4sQz1JRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlJc3N1ZXJOYW1lJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOVNlcmlhbE51bWJlcjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MTAxNzc4ODM3MDM0ODwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOVNlcmlhbE51bWJlciZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlJc3N1ZXJTZXJpYWwmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlDZXJ0aWZpY2F0ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSURVRENDQXhDZ0F3SUJBZ0lHQU96NDZnMnNNQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CNFhEVEF5TURRd01qSXlOVGt6TUZvWERURXlNRFF3TWpJeE5Ua3lOVm93YnpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVdNQlFHQTFVRUF4TU5UV1Z5YkdsdUlFaDFaMmhsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N6Q0NBYmN3Z2dFc0JnY3Foa2pPT0FRQk1JSUJId0tCZ1FEZDQ1NEMrcWNUSVdsYjY1TktDdDJQdGd1TnBPU24mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7SWQ1d29VaWd1N3hCazJRWk5BalZ5SWhNRWZTV3A4aVIwSWRLTHgrSlFMY05PcmNuMFd3bDUvaGhXME1Yc21sUyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4ZE01Q3EycnRtREhvb0x4YkdUUHF0QUxFNnZzWFFDazVpTHozTXRHaDdneVFNWjdxN0hUNWEzSTVOQ2hVZ1kxJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01NTlFWZXRSQTFzdXNRSVZBSVF5M0JTdEJqdng4OVdxOFRqcjdJRFAxUzhsQW9HQkFKNThlNFczVnFNeG03WngmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7WUoyeFo2S1gwWmUxMFduS1pEeVVSbitUOWlGSUZiS1JGRWxLRGVvdFh3d1h3WU9OOHlyZTNaUkdrQysyK2ZpVSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsyYmR6SVdUVDZMTWJJTVZiayswN1A0T1pPeEo2WFdMOUd1WWNPUWNOdlg0MnhoMzREUEhkcTRYZGxJdE1SMjVOJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0ErT2RaNFM4VlZycGI0amtqNGN5aXIxNjI4a2dBNEdFQUFLQmdISDJLWW9hUUVIbnFXelJVdURBRzBFWVhWNlEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NHVjQzY4TVJPWVNMNkdLcU5TL0FVRmJ2SDJOVXhRRDdhR250WWdZUHhpQ2NqOTRpMzhyZ1NXZzd5U1N6OTlNQSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtSL1l2N09TZCt1ZWozcjZUbFhVMzR1Kyt4WXZSbytzdjRtOWxiL2ptWHlaSktlQytkUHFlVTFJVDVrQ3liVVJMJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0lMWmZyWnlEc2lVL3ZodlZvem93T0RBT0JnTlZIUThCQWY4RUJBTUNCNEF3RVFZRFZSME9CQW9FQ0lhdFk3U0UmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bFhFT01CTUdBMVVkSXdRTU1BcUFDSU9HUGtCMk11S1RNQWtHQnlxR1NNNDRCQU1ETHdBd0xBSVVTdlQwMmlRaiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtRNWRhNFdwZTBCdnM3R3VDY1ZzQ0ZDRWNRcGJqVWZueFhGWE5XaUZ5UTQ5WnJXcW4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlDZXJ0aWZpY2F0ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUNlcnRpZmljYXRlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJRFN6Q0NBd3VnQXdJQkFnSUdBT3o0NmZ3Sk1Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUI0WERUQXlNRFF3TWpJeU5Ua3lOVm9YRFRFeU1EUXdNakl4TlRreU5Wb3diakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJQnR6Q0NBU3dHQnlxR1NNNDRCQUV3Z2dFZkFvR0JBTjNqbmdMNnB4TWhhVnZyazBvSzNZKzJDNDJrNUtjaCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDszbkNoU0tDN3ZFR1RaQmswQ05YSWlFd1I5SmFueUpIUWgwb3ZINGxBdHcwNnR5ZlJiQ1huK0dGYlF4ZXlhVkx4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzB6a0tyYXUyWU1laWd2RnNaTStxMEFzVHEreGRBS1RtSXZQY3kwYUh1REpBeG51cnNkUGxyY2prMEtGU0JqVXcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7dzFCVjYxRURXeTZ4QWhVQWhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VUNnWUVBbm54N2hiZFdvekdidG5GZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtuYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3pLdDdkbEVhUUw3YjUrSlRaJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O3QzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTThkMnJoZDJVaTB4SGJrMEQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBRGdZUUFBb0dBZmFnK0hDQUJJSmFkREQ5QWFyaGdjMlFSM0xwNyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtQcE1PaDBsQXdMaUlzdmtPNFVsYmVPUzBJSkM4YmNxTGpNMWZWdzZGR1NheG1xKzR5MWFnMm05azZJZEUwUWg1JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O054Qi94RmttZHdxWEZSSUpWcDQ0T2VVeWdCNDdZSzc2Tm1VSVlHM0RkZmlQUFUzYnF6anZ0T3RFVGlDSHZvMjUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NEQ2VWp3UHBZRXJYUlVhak5qQTBNQTRHQTFVZER3RUIvd1FFQXdJQ0JEQVBCZ05WSFJNRUNEQUdBUUgvQWdFQSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQkVHQTFVZERnUUtCQWlEaGo1QWRqTGlrekFKQmdjcWhrak9PQVFEQXk4QU1Dd0NGRUx1MG51d2VxVzdXZjBzJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2drL0NBR0dMMEJHS0FoUk5kZ1FHcjVpeVpLb0g0b3FQbTBWSjlUalhMZz09JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5Q2VydGlmaWNhdGUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlEYXRhJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0tleUluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2ZvbzpSb290Jmd0Ozwvc3Bhbj48L3ByZT48L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMTYudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0xNi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMTYudHh0CmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTE3Lmh0bWwgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTE3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhjMWI3OQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMTcuaHRtbApAQCAtMCwwICsxLDU1NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNhbmluaWNhbCBYTUwgbm9kZSBzZXQ8L3RpdGxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKzwhLS0gCisuSU5DTFVERUQgeyAKKyAgIGNvbG9yOiAjMDAwMDAwOyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgfSAKKy5FWENMVURFRCB7IAorICAgY29sb3I6ICM2NjY2NjY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjOTk5OTk5OyB9IAorLklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy5FWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogIzk5OTk5OTsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCistLT4gCis8L3N0eWxlPiAKKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IiM5OTk5OTkiPgorPGgxPkV4cGxhbmF0aW9uIG9mIHRoZSBvdXRwdXQ8L2gxPgorPHA+VGhlIGZvbGxvd2luZyB0ZXh0IGNvbnRhaW5zIHRoZSBub2Rlc2V0IG9mIHRoZSBnaXZlbiBSZWZlcmVuY2UgYmVmb3JlIGl0IGlzIGNhbm9uaWNhbGl6ZWQuIFRoZXJlIGV4aXN0IGZvdXIgZGlmZmVyZW50IHN0eWxlcyB0byBpbmRpY2F0ZSBob3cgYSBnaXZlbiBub2RlIGlzIHRyZWF0ZWQuPC9wPgorPHVsPgorPGxpIGNsYXNzPSJJTkNMVURFRCI+QSBub2RlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRCI+QSBub2RlIHdoaWNoIGlzIDxlbT5OT1Q8L2VtPiBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCBFWENMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiBOT1QgdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8L3VsPgorPGgxPk91dHB1dDwvaDE+Cis8cHJlPgorPHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Zm9vOlJvb3Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpsYW5nPSJlbi1pZSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2JhcjpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtmb286U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7YmFyOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2ZvbzpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7YmF6OlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9iYXo6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvZm9vOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2JhcjpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9mb286U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvYmFyOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25lZEluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpsYW5nPSJlbi1pZSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Q2Fub25pY2FsaXphdGlvbk1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9DYW5vbmljYWxpemF0aW9uTWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZU1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlTWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmxDT1MvSnRwbU9FKzRlWEZhT3BZNHY0Qk9nST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk95VnFFV1hFN0MrNU55S3RjZVVrZG1pRk85QT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk95VnFFV1hFN0MrNU55S3RjZVVrZG1pRk85QT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPm1MMWFBUS9Sb09QTzBTSGo5S1IreVkzbjRDTT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+YlFnRjhJQ3ltWVpUdVVQMEZFNDBsM1E3QlprPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5iUWdGOElDeW1ZWlR1VVAwRkU0MGwzUTdCWms9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+SUpRZ2Q1OUZKMVBBeHhDWTVtSUw2Y1plbWkwPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5TWEdpak8xZUFyRWFYR3BoRjBkeHdqNWZwMWc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5yTm00SWQ5YWgxMm51Z3pYQVVKZ2phczdsczA9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+dU9RSlFJSVVFVFl5azArWUVCZGJFUXdyWWJ3PTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5BV3RxRGJYV0tmOFRWNzhDMmQxNnVhcmJwR2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj51T1FKUUlJVUVUWXlrMCtZRUJkYkVRd3JZYnc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk5wak1QekVGNVlaRmJ6NGxzN2VOMzZRV2RYcz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5FYWNCTjJhQkJOU2pwQ096WlVPT3ZTdjR6SFU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25lZEluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmVWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtGeDM0VmMwN2ZYYWM2cW1zaGhoTGU4b2dqRWxTbUM2WXhUbmh4ajh3TVRTa2Z2eFkrd1l0clE9PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5SW5mbzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEU0FLZXlWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtQPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzNlT2VBdnFuRXlGcFcrdVRTZ3JkajdZTGphVGtweUhlY0tGSW9MdThRWk5rR1RRSTFjaUlUQkgwbHFmSWtkQ0gmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1NpOGZpVUMzRFRxM0o5RnNKZWY0WVZ0REY3SnBVdkhUT1FxdHE3Wmd4NktDOFd4a3o2clFDeE9yN0YwQXBPWWkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozg5ekxSb2U0TWtER2U2dXgwK1d0eU9UUW9WSUdOVEREVUZYclVRTmJMckU9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1E8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1EmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtHPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25ueDdoYmRXb3pHYnRuRmduYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3omcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0t0N2RsRWFRTDdiNStKVFp0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ00mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzhkMnJoZDJVaTB4SGJrMEQ0NTFuaEx4Vld1bHZpT1NQaHpLS3ZYcmJ5U0E9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1k8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y2ZZcGlocEFRZWVwYk5GUzRNQWJRUmhkWHBEaTV3THJ3eEU1aEl2b1lxbzFMOEJRVnU4ZlkxVEZBUHRvYWUxaSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7QmcvR0lKeVAzaUxmeXVCSmFEdkpKTFAzMHdCSDlpL3M1SjM2NTZQZXZwT1ZkVGZpNzc3Rmk5R2o2eS9pYjJWdiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7K09aZkpra3A0TDUwK3A1VFVoUG1RTEp0UkVzZ3RsK3RuSU95SlQrK0c5VT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9ZJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRFNBS2V5VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0tleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlEYXRhPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOVN1YmplY3ROYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Q049TWVybGluJm1pZGRvdDtIdWdoZXMsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUmbWlkZG90O1RlY2hub2xvZ2llcyZtaWRkb3Q7THRkLixTVD1EdWJsaW4sQz1JRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOVN1YmplY3ROYW1lJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5SXNzdWVyU2VyaWFsPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlJc3N1ZXJOYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0NOPVRyYW5zaWVudCZtaWRkb3Q7Q0EsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUmbWlkZG90O1RlY2hub2xvZ2llcyZtaWRkb3Q7THRkLixTVD1EdWJsaW4sQz1JRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlJc3N1ZXJOYW1lJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOVNlcmlhbE51bWJlcjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MTAxNzc4ODM3MDM0ODwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOVNlcmlhbE51bWJlciZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlJc3N1ZXJTZXJpYWwmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlDZXJ0aWZpY2F0ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSURVRENDQXhDZ0F3SUJBZ0lHQU96NDZnMnNNQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CNFhEVEF5TURRd01qSXlOVGt6TUZvWERURXlNRFF3TWpJeE5Ua3lOVm93YnpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVdNQlFHQTFVRUF4TU5UV1Z5YkdsdUlFaDFaMmhsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N6Q0NBYmN3Z2dFc0JnY3Foa2pPT0FRQk1JSUJId0tCZ1FEZDQ1NEMrcWNUSVdsYjY1TktDdDJQdGd1TnBPU24mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7SWQ1d29VaWd1N3hCazJRWk5BalZ5SWhNRWZTV3A4aVIwSWRLTHgrSlFMY05PcmNuMFd3bDUvaGhXME1Yc21sUyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4ZE01Q3EycnRtREhvb0x4YkdUUHF0QUxFNnZzWFFDazVpTHozTXRHaDdneVFNWjdxN0hUNWEzSTVOQ2hVZ1kxJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01NTlFWZXRSQTFzdXNRSVZBSVF5M0JTdEJqdng4OVdxOFRqcjdJRFAxUzhsQW9HQkFKNThlNFczVnFNeG03WngmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7WUoyeFo2S1gwWmUxMFduS1pEeVVSbitUOWlGSUZiS1JGRWxLRGVvdFh3d1h3WU9OOHlyZTNaUkdrQysyK2ZpVSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsyYmR6SVdUVDZMTWJJTVZiayswN1A0T1pPeEo2WFdMOUd1WWNPUWNOdlg0MnhoMzREUEhkcTRYZGxJdE1SMjVOJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0ErT2RaNFM4VlZycGI0amtqNGN5aXIxNjI4a2dBNEdFQUFLQmdISDJLWW9hUUVIbnFXelJVdURBRzBFWVhWNlEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NHVjQzY4TVJPWVNMNkdLcU5TL0FVRmJ2SDJOVXhRRDdhR250WWdZUHhpQ2NqOTRpMzhyZ1NXZzd5U1N6OTlNQSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtSL1l2N09TZCt1ZWozcjZUbFhVMzR1Kyt4WXZSbytzdjRtOWxiL2ptWHlaSktlQytkUHFlVTFJVDVrQ3liVVJMJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0lMWmZyWnlEc2lVL3ZodlZvem93T0RBT0JnTlZIUThCQWY4RUJBTUNCNEF3RVFZRFZSME9CQW9FQ0lhdFk3U0UmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bFhFT01CTUdBMVVkSXdRTU1BcUFDSU9HUGtCMk11S1RNQWtHQnlxR1NNNDRCQU1ETHdBd0xBSVVTdlQwMmlRaiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtRNWRhNFdwZTBCdnM3R3VDY1ZzQ0ZDRWNRcGJqVWZueFhGWE5XaUZ5UTQ5WnJXcW4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlDZXJ0aWZpY2F0ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUNlcnRpZmljYXRlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJRFN6Q0NBd3VnQXdJQkFnSUdBT3o0NmZ3Sk1Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUI0WERUQXlNRFF3TWpJeU5Ua3lOVm9YRFRFeU1EUXdNakl4TlRreU5Wb3diakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJQnR6Q0NBU3dHQnlxR1NNNDRCQUV3Z2dFZkFvR0JBTjNqbmdMNnB4TWhhVnZyazBvSzNZKzJDNDJrNUtjaCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDszbkNoU0tDN3ZFR1RaQmswQ05YSWlFd1I5SmFueUpIUWgwb3ZINGxBdHcwNnR5ZlJiQ1huK0dGYlF4ZXlhVkx4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzB6a0tyYXUyWU1laWd2RnNaTStxMEFzVHEreGRBS1RtSXZQY3kwYUh1REpBeG51cnNkUGxyY2prMEtGU0JqVXcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7dzFCVjYxRURXeTZ4QWhVQWhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VUNnWUVBbm54N2hiZFdvekdidG5GZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtuYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3pLdDdkbEVhUUw3YjUrSlRaJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O3QzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTThkMnJoZDJVaTB4SGJrMEQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBRGdZUUFBb0dBZmFnK0hDQUJJSmFkREQ5QWFyaGdjMlFSM0xwNyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtQcE1PaDBsQXdMaUlzdmtPNFVsYmVPUzBJSkM4YmNxTGpNMWZWdzZGR1NheG1xKzR5MWFnMm05azZJZEUwUWg1JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O054Qi94RmttZHdxWEZSSUpWcDQ0T2VVeWdCNDdZSzc2Tm1VSVlHM0RkZmlQUFUzYnF6anZ0T3RFVGlDSHZvMjUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NEQ2VWp3UHBZRXJYUlVhak5qQTBNQTRHQTFVZER3RUIvd1FFQXdJQ0JEQVBCZ05WSFJNRUNEQUdBUUgvQWdFQSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQkVHQTFVZERnUUtCQWlEaGo1QWRqTGlrekFKQmdjcWhrak9PQVFEQXk4QU1Dd0NGRUx1MG51d2VxVzdXZjBzJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2drL0NBR0dMMEJHS0FoUk5kZ1FHcjVpeVpLb0g0b3FQbTBWSjlUalhMZz09JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5Q2VydGlmaWNhdGUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlEYXRhJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0tleUluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2ZvbzpSb290Jmd0Ozwvc3Bhbj48L3ByZT48L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMTcudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0xNy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdmYjZlNQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMTcudHh0CkBAIC0wLDAgKzEsOSBAQAorPGJhcjpTb21ldGhpbmc+CisgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICA8YmFyOlNvbWV0aGluZz4KKyAgICAgICAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICAgPGJhejpTb21ldGhpbmc+PC9iYXo6U29tZXRoaW5nPgorICAgICAgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgICAgIDwvYmFyOlNvbWV0aGluZz4KKyAgICAgPC9mb286U29tZXRoaW5nPgorICA8L2JhcjpTb21ldGhpbmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0xOC5odG1sIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0xOC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmYzYxMzQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTE4Lmh0bWwKQEAgLTAsMCArMSw1NTcgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DYW5pbmljYWwgWE1MIG5vZGUgc2V0PC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cis8IS0tIAorLklOQ0xVREVEIHsgCisgICBjb2xvcjogIzAwMDAwMDsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IH0gCisuRVhDTFVERUQgeyAKKyAgIGNvbG9yOiAjNjY2NjY2OyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgIzk5OTk5OTsgfSAKKy5JTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCisuRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICM5OTk5OTk7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLS0+IAorPC9zdHlsZT4gCis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSIjOTk5OTk5Ij4KKzxoMT5FeHBsYW5hdGlvbiBvZiB0aGUgb3V0cHV0PC9oMT4KKzxwPlRoZSBmb2xsb3dpbmcgdGV4dCBjb250YWlucyB0aGUgbm9kZXNldCBvZiB0aGUgZ2l2ZW4gUmVmZXJlbmNlIGJlZm9yZSBpdCBpcyBjYW5vbmljYWxpemVkLiBUaGVyZSBleGlzdCBmb3VyIGRpZmZlcmVudCBzdHlsZXMgdG8gaW5kaWNhdGUgaG93IGEgZ2l2ZW4gbm9kZSBpcyB0cmVhdGVkLjwvcD4KKzx1bD4KKzxsaSBjbGFzcz0iSU5DTFVERUQiPkEgbm9kZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERUQiPkEgbm9kZSB3aGljaCBpcyA8ZW0+Tk9UPC9lbT4gaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgRVhDTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gTk9UIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPC91bD4KKzxoMT5PdXRwdXQ8L2gxPgorPHByZT4KKzxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2ZvbzpSb290PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWw6bGFuZz0iZW4taWUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtiYXI6U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7Zm9vOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2JhcjpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtmb286U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2JhejpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvYmF6OlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2ZvbzpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9iYXI6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvZm9vOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2JhcjpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduZWRJbmZvPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWw6bGFuZz0iZW4taWUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0Nhbm9uaWNhbGl6YXRpb25NZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvQ2Fub25pY2FsaXphdGlvbk1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmVNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZU1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5sQ09TL0p0cG1PRSs0ZVhGYU9wWTR2NEJPZ0k9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5PeVZxRVdYRTdDKzVOeUt0Y2VVa2RtaUZPOUE9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5PeVZxRVdYRTdDKzVOeUt0Y2VVa2RtaUZPOUE9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm90Jm1pZGRvdDsoc2VsZjo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5tTDFhQVEvUm9PUE8wU0hqOUtSK3lZM240Q009PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmJRZ0Y4SUN5bVlaVHVVUDBGRTQwbDNRN0Jaaz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+YlFnRjhJQ3ltWVpUdVVQMEZFNDBsM1E3QlprPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90Oz0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPklKUWdkNTlGSjFQQXh4Q1k1bUlMNmNaZW1pMD08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+U1hHaWpPMWVBckVhWEdwaEYwZHh3ajVmcDFnPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+ck5tNElkOWFoMTJudWd6WEFVSmdqYXM3bHMwPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm90Jm1pZGRvdDsoc2VsZjo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPnVPUUpRSUlVRVRZeWswK1lFQmRiRVF3cllidz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90Oz0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+QVd0cURiWFdLZjhUVjc4QzJkMTZ1YXJicEdrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm90Jm1pZGRvdDsoc2VsZjo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+dU9RSlFJSVVFVFl5azArWUVCZGJFUXdyWWJ3PTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90Oz0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5OcGpNUHpFRjVZWkZiejRsczdlTjM2UVdkWHM9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+RWFjQk4yYUJCTlNqcENPelpVT092U3Y0ekhVPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduZWRJbmZvJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlVmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RngzNFZjMDdmWGFjNnFtc2hoaExlOG9nakVsU21DNll4VG5oeGo4d01UU2tmdnhZK3dZdHJRPT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmVWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0tleUluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0tleVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RFNBS2V5VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDszZU9lQXZxbkV5RnBXK3VUU2dyZGo3WUxqYVRrcHlIZWNLRklvTHU4UVpOa0dUUUkxY2lJVEJIMGxxZklrZENIJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtTaThmaVVDM0RUcTNKOUZzSmVmNFlWdERGN0pwVXZIVE9RcXRxN1pneDZLQzhXeGt6NnJRQ3hPcjdGMEFwT1lpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4OXpMUm9lNE1rREdlNnV4MCtXdHlPVFFvVklHTlRERFVGWHJVUU5iTHJFPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1AmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtRPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5oRExjRkswR08vSHoxYXJ4T092c2dNL1ZMeVU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9RJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Rzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtubng3aGJkV296R2J0bkZnbmJGbm9wZlJsN1hSYWNwa1BKUkdmNVAySVVnVnNwRVVTVW9ONmkxZkRCZkJnNDN6JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtLdDdkbEVhUUw3YjUrSlRadDNNaFpOUG9zeHNneFZ1VDdUcy9nNWs3RW5wZFl2MGE1aHc1QncyOWZqYkdIZmdNJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4ZDJyaGQyVWkweEhiazBENDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0cmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtZPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NmWXBpaHBBUWVlcGJORlM0TUFiUVJoZFhwRGk1d0xyd3hFNWhJdm9ZcW8xTDhCUVZ1OGZZMVRGQVB0b2FlMWkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0JnL0dJSnlQM2lMZnl1QkphRHZKSkxQMzB3Qkg5aS9zNUozNjU2UGV2cE9WZFRmaTc3N0ZpOUdqNnkvaWIyVnYmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OytPWmZKa2twNEw1MCtwNVRVaFBtUUxKdFJFc2d0bCt0bklPeUpUKytHOVU9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RTQUtleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9LZXlWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5RGF0YTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlTdWJqZWN0TmFtZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0NOPU1lcmxpbiZtaWRkb3Q7SHVnaGVzLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlJm1pZGRvdDtUZWNobm9sb2dpZXMmbWlkZG90O0x0ZC4sU1Q9RHVibGluLEM9SUUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlTdWJqZWN0TmFtZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUlzc3VlclNlcmlhbDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5SXNzdWVyTmFtZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtDTj1UcmFuc2llbnQmbWlkZG90O0NBLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlJm1pZGRvdDtUZWNobm9sb2dpZXMmbWlkZG90O0x0ZC4sU1Q9RHVibGluLEM9SUUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5SXNzdWVyTmFtZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlTZXJpYWxOdW1iZXI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjEwMTc3ODgzNzAzNDg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlTZXJpYWxOdW1iZXImZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5SXNzdWVyU2VyaWFsJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5Q2VydGlmaWNhdGU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNSUlEVURDQ0F4Q2dBd0lCQWdJR0FPejQ2ZzJzTUFrR0J5cUdTTTQ0QkFNd2JqRUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQjRYRFRBeU1EUXdNakl5TlRrek1Gb1hEVEV5TURRd01qSXhOVGt5TlZvd2J6RUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVXTUJRR0ExVUVBeE1OVFdWeWJHbHVJRWgxWjJobCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjekNDQWJjd2dnRXNCZ2NxaGtqT09BUUJNSUlCSHdLQmdRRGQ0NTRDK3FjVElXbGI2NU5LQ3QyUHRndU5wT1NuJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0lkNXdvVWlndTd4QmsyUVpOQWpWeUloTUVmU1dwOGlSMElkS0x4K0pRTGNOT3JjbjBXd2w1L2hoVzBNWHNtbFMmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7OGRNNUNxMnJ0bURIb29MeGJHVFBxdEFMRTZ2c1hRQ2s1aUx6M010R2g3Z3lRTVo3cTdIVDVhM0k1TkNoVWdZMSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNTU5RVmV0UkExc3VzUUlWQUlReTNCU3RCanZ4ODlXcThUanI3SURQMVM4bEFvR0JBSjU4ZTRXM1ZxTXhtN1p4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1lKMnhaNktYMFplMTBXbktaRHlVUm4rVDlpRklGYktSRkVsS0Rlb3RYd3dYd1lPTjh5cmUzWlJHa0MrMitmaVUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7MmJkeklXVFQ2TE1iSU1WYmsrMDdQNE9aT3hKNlhXTDlHdVljT1FjTnZYNDJ4aDM0RFBIZHE0WGRsSXRNUjI1TiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtBK09kWjRTOFZWcnBiNGprajRjeWlyMTYyOGtnQTRHRUFBS0JnSEgyS1lvYVFFSG5xV3pSVXVEQUcwRVlYVjZRJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzR1Y0M2OE1ST1lTTDZHS3FOUy9BVUZidkgyTlV4UUQ3YUdudFlnWVB4aUNjajk0aTM4cmdTV2c3eVNTejk5TUEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Ui9ZdjdPU2QrdWVqM3I2VGxYVTM0dSsreFl2Um8rc3Y0bTlsYi9qbVh5WkpLZUMrZFBxZVUxSVQ1a0N5YlVSTCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtJTFpmclp5RHNpVS92aHZWb3pvd09EQU9CZ05WSFE4QkFmOEVCQU1DQjRBd0VRWURWUjBPQkFvRUNJYXRZN1NFJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2xYRU9NQk1HQTFVZEl3UU1NQXFBQ0lPR1BrQjJNdUtUTUFrR0J5cUdTTTQ0QkFNREx3QXdMQUlVU3ZUMDJpUWomcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7UTVkYTRXcGUwQnZzN0d1Q2NWc0NGQ0VjUXBialVmbnhYRlhOV2lGeVE0OVpyV3FuJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5Q2VydGlmaWNhdGUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlDZXJ0aWZpY2F0ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSURTekNDQXd1Z0F3SUJBZ0lHQU96NDZmd0pNQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CNFhEVEF5TURRd01qSXlOVGt5TlZvWERURXlNRFF3TWpJeE5Ua3lOVm93YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSUJ0ekNDQVN3R0J5cUdTTTQ0QkFFd2dnRWZBb0dCQU4zam5nTDZweE1oYVZ2cmswb0szWSsyQzQyazVLY2gmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7M25DaFNLQzd2RUdUWkJrMENOWElpRXdSOUphbnlKSFFoMG92SDRsQXR3MDZ0eWZSYkNYbitHRmJReGV5YVZMeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDswemtLcmF1MllNZWlndkZzWk0rcTBBc1RxK3hkQUtUbUl2UGN5MGFIdURKQXhudXJzZFBscmNqazBLRlNCalV3JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O3cxQlY2MUVEV3k2eEFoVUFoRExjRkswR08vSHoxYXJ4T092c2dNL1ZMeVVDZ1lFQW5ueDdoYmRXb3pHYnRuRmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bmJGbm9wZlJsN1hSYWNwa1BKUkdmNVAySVVnVnNwRVVTVW9ONmkxZkRCZkJnNDN6S3Q3ZGxFYVFMN2I1K0pUWiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDt0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ004ZDJyaGQyVWkweEhiazBEJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzQ1MW5oTHhWV3VsdmlPU1BoektLdlhyYnlTQURnWVFBQW9HQWZhZytIQ0FCSUphZEREOUFhcmhnYzJRUjNMcDcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7UHBNT2gwbEF3TGlJc3ZrTzRVbGJlT1MwSUpDOGJjcUxqTTFmVnc2RkdTYXhtcSs0eTFhZzJtOWs2SWRFMFFoNSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtOeEIveEZrbWR3cVhGUklKVnA0NE9lVXlnQjQ3WUs3Nk5tVUlZRzNEZGZpUFBVM2Jxemp2dE90RVRpQ0h2bzI1JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzRENlVqd1BwWUVyWFJVYWpOakEwTUE0R0ExVWREd0VCL3dRRUF3SUNCREFQQmdOVkhSTUVDREFHQVFIL0FnRUEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUJFR0ExVWREZ1FLQkFpRGhqNUFkakxpa3pBSkJnY3Foa2pPT0FRREF5OEFNQ3dDRkVMdTBudXdlcVc3V2YwcyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtnay9DQUdHTDBCR0tBaFJOZGdRR3I1aXlaS29ING9xUG0wVko5VGpYTGc9PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUNlcnRpZmljYXRlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5RGF0YSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9LZXlJbmZvJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9mb286Um9vdCZndDs8L3NwYW4+PC9wcmU+PC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTE4LnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMTgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2NzUzOTEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTE4LnR4dApAQCAtMCwwICsxLDkgQEAKKzxiYXI6U29tZXRoaW5nIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPgorICAgICA8Zm9vOlNvbWV0aGluZyB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPgorICAgICAgICA8YmFyOlNvbWV0aGluZz4KKyAgICAgICAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICAgPGJhejpTb21ldGhpbmcgeG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ij48L2JhejpTb21ldGhpbmc+CisgICAgICAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICAgICAgPC9iYXI6U29tZXRoaW5nPgorICAgICA8L2ZvbzpTb21ldGhpbmc+CisgIDwvYmFyOlNvbWV0aGluZz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTE5Lmh0bWwgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTE5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUzNzBjMwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMTkuaHRtbApAQCAtMCwwICsxLDU1NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNhbmluaWNhbCBYTUwgbm9kZSBzZXQ8L3RpdGxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKzwhLS0gCisuSU5DTFVERUQgeyAKKyAgIGNvbG9yOiAjMDAwMDAwOyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgfSAKKy5FWENMVURFRCB7IAorICAgY29sb3I6ICM2NjY2NjY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjOTk5OTk5OyB9IAorLklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy5FWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogIzk5OTk5OTsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCistLT4gCis8L3N0eWxlPiAKKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IiM5OTk5OTkiPgorPGgxPkV4cGxhbmF0aW9uIG9mIHRoZSBvdXRwdXQ8L2gxPgorPHA+VGhlIGZvbGxvd2luZyB0ZXh0IGNvbnRhaW5zIHRoZSBub2Rlc2V0IG9mIHRoZSBnaXZlbiBSZWZlcmVuY2UgYmVmb3JlIGl0IGlzIGNhbm9uaWNhbGl6ZWQuIFRoZXJlIGV4aXN0IGZvdXIgZGlmZmVyZW50IHN0eWxlcyB0byBpbmRpY2F0ZSBob3cgYSBnaXZlbiBub2RlIGlzIHRyZWF0ZWQuPC9wPgorPHVsPgorPGxpIGNsYXNzPSJJTkNMVURFRCI+QSBub2RlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRCI+QSBub2RlIHdoaWNoIGlzIDxlbT5OT1Q8L2VtPiBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCBFWENMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiBOT1QgdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8L3VsPgorPGgxPk91dHB1dDwvaDE+Cis8cHJlPgorPHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Zm9vOlJvb3Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpsYW5nPSJlbi1pZSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2JhcjpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtmb286U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7YmFyOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2ZvbzpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7YmF6OlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9iYXo6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvZm9vOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2JhcjpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9mb286U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvYmFyOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25lZEluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpsYW5nPSJlbi1pZSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Q2Fub25pY2FsaXphdGlvbk1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9DYW5vbmljYWxpemF0aW9uTWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZU1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlTWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmxDT1MvSnRwbU9FKzRlWEZhT3BZNHY0Qk9nST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk95VnFFV1hFN0MrNU55S3RjZVVrZG1pRk85QT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk95VnFFV1hFN0MrNU55S3RjZVVrZG1pRk85QT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPm1MMWFBUS9Sb09QTzBTSGo5S1IreVkzbjRDTT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+YlFnRjhJQ3ltWVpUdVVQMEZFNDBsM1E3QlprPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5iUWdGOElDeW1ZWlR1VVAwRkU0MGwzUTdCWms9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+SUpRZ2Q1OUZKMVBBeHhDWTVtSUw2Y1plbWkwPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5TWEdpak8xZUFyRWFYR3BoRjBkeHdqNWZwMWc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5yTm00SWQ5YWgxMm51Z3pYQVVKZ2phczdsczA9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+dU9RSlFJSVVFVFl5azArWUVCZGJFUXdyWWJ3PTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5BV3RxRGJYV0tmOFRWNzhDMmQxNnVhcmJwR2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj51T1FKUUlJVUVUWXlrMCtZRUJkYkVRd3JZYnc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk5wak1QekVGNVlaRmJ6NGxzN2VOMzZRV2RYcz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5FYWNCTjJhQkJOU2pwQ096WlVPT3ZTdjR6SFU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25lZEluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmVWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtGeDM0VmMwN2ZYYWM2cW1zaGhoTGU4b2dqRWxTbUM2WXhUbmh4ajh3TVRTa2Z2eFkrd1l0clE9PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5SW5mbzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEU0FLZXlWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtQPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzNlT2VBdnFuRXlGcFcrdVRTZ3JkajdZTGphVGtweUhlY0tGSW9MdThRWk5rR1RRSTFjaUlUQkgwbHFmSWtkQ0gmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1NpOGZpVUMzRFRxM0o5RnNKZWY0WVZ0REY3SnBVdkhUT1FxdHE3Wmd4NktDOFd4a3o2clFDeE9yN0YwQXBPWWkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozg5ekxSb2U0TWtER2U2dXgwK1d0eU9UUW9WSUdOVEREVUZYclVRTmJMckU9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1E8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1EmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtHPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25ueDdoYmRXb3pHYnRuRmduYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3omcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0t0N2RsRWFRTDdiNStKVFp0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ00mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzhkMnJoZDJVaTB4SGJrMEQ0NTFuaEx4Vld1bHZpT1NQaHpLS3ZYcmJ5U0E9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1k8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y2ZZcGlocEFRZWVwYk5GUzRNQWJRUmhkWHBEaTV3THJ3eEU1aEl2b1lxbzFMOEJRVnU4ZlkxVEZBUHRvYWUxaSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7QmcvR0lKeVAzaUxmeXVCSmFEdkpKTFAzMHdCSDlpL3M1SjM2NTZQZXZwT1ZkVGZpNzc3Rmk5R2o2eS9pYjJWdiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7K09aZkpra3A0TDUwK3A1VFVoUG1RTEp0UkVzZ3RsK3RuSU95SlQrK0c5VT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9ZJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRFNBS2V5VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0tleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlEYXRhPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOVN1YmplY3ROYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Q049TWVybGluJm1pZGRvdDtIdWdoZXMsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUmbWlkZG90O1RlY2hub2xvZ2llcyZtaWRkb3Q7THRkLixTVD1EdWJsaW4sQz1JRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOVN1YmplY3ROYW1lJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5SXNzdWVyU2VyaWFsPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlJc3N1ZXJOYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0NOPVRyYW5zaWVudCZtaWRkb3Q7Q0EsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUmbWlkZG90O1RlY2hub2xvZ2llcyZtaWRkb3Q7THRkLixTVD1EdWJsaW4sQz1JRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlJc3N1ZXJOYW1lJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOVNlcmlhbE51bWJlcjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MTAxNzc4ODM3MDM0ODwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOVNlcmlhbE51bWJlciZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlJc3N1ZXJTZXJpYWwmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlDZXJ0aWZpY2F0ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSURVRENDQXhDZ0F3SUJBZ0lHQU96NDZnMnNNQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CNFhEVEF5TURRd01qSXlOVGt6TUZvWERURXlNRFF3TWpJeE5Ua3lOVm93YnpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVdNQlFHQTFVRUF4TU5UV1Z5YkdsdUlFaDFaMmhsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N6Q0NBYmN3Z2dFc0JnY3Foa2pPT0FRQk1JSUJId0tCZ1FEZDQ1NEMrcWNUSVdsYjY1TktDdDJQdGd1TnBPU24mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7SWQ1d29VaWd1N3hCazJRWk5BalZ5SWhNRWZTV3A4aVIwSWRLTHgrSlFMY05PcmNuMFd3bDUvaGhXME1Yc21sUyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4ZE01Q3EycnRtREhvb0x4YkdUUHF0QUxFNnZzWFFDazVpTHozTXRHaDdneVFNWjdxN0hUNWEzSTVOQ2hVZ1kxJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01NTlFWZXRSQTFzdXNRSVZBSVF5M0JTdEJqdng4OVdxOFRqcjdJRFAxUzhsQW9HQkFKNThlNFczVnFNeG03WngmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7WUoyeFo2S1gwWmUxMFduS1pEeVVSbitUOWlGSUZiS1JGRWxLRGVvdFh3d1h3WU9OOHlyZTNaUkdrQysyK2ZpVSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsyYmR6SVdUVDZMTWJJTVZiayswN1A0T1pPeEo2WFdMOUd1WWNPUWNOdlg0MnhoMzREUEhkcTRYZGxJdE1SMjVOJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0ErT2RaNFM4VlZycGI0amtqNGN5aXIxNjI4a2dBNEdFQUFLQmdISDJLWW9hUUVIbnFXelJVdURBRzBFWVhWNlEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NHVjQzY4TVJPWVNMNkdLcU5TL0FVRmJ2SDJOVXhRRDdhR250WWdZUHhpQ2NqOTRpMzhyZ1NXZzd5U1N6OTlNQSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtSL1l2N09TZCt1ZWozcjZUbFhVMzR1Kyt4WXZSbytzdjRtOWxiL2ptWHlaSktlQytkUHFlVTFJVDVrQ3liVVJMJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0lMWmZyWnlEc2lVL3ZodlZvem93T0RBT0JnTlZIUThCQWY4RUJBTUNCNEF3RVFZRFZSME9CQW9FQ0lhdFk3U0UmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bFhFT01CTUdBMVVkSXdRTU1BcUFDSU9HUGtCMk11S1RNQWtHQnlxR1NNNDRCQU1ETHdBd0xBSVVTdlQwMmlRaiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtRNWRhNFdwZTBCdnM3R3VDY1ZzQ0ZDRWNRcGJqVWZueFhGWE5XaUZ5UTQ5WnJXcW4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlDZXJ0aWZpY2F0ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUNlcnRpZmljYXRlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJRFN6Q0NBd3VnQXdJQkFnSUdBT3o0NmZ3Sk1Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUI0WERUQXlNRFF3TWpJeU5Ua3lOVm9YRFRFeU1EUXdNakl4TlRreU5Wb3diakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJQnR6Q0NBU3dHQnlxR1NNNDRCQUV3Z2dFZkFvR0JBTjNqbmdMNnB4TWhhVnZyazBvSzNZKzJDNDJrNUtjaCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDszbkNoU0tDN3ZFR1RaQmswQ05YSWlFd1I5SmFueUpIUWgwb3ZINGxBdHcwNnR5ZlJiQ1huK0dGYlF4ZXlhVkx4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzB6a0tyYXUyWU1laWd2RnNaTStxMEFzVHEreGRBS1RtSXZQY3kwYUh1REpBeG51cnNkUGxyY2prMEtGU0JqVXcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7dzFCVjYxRURXeTZ4QWhVQWhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VUNnWUVBbm54N2hiZFdvekdidG5GZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtuYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3pLdDdkbEVhUUw3YjUrSlRaJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O3QzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTThkMnJoZDJVaTB4SGJrMEQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBRGdZUUFBb0dBZmFnK0hDQUJJSmFkREQ5QWFyaGdjMlFSM0xwNyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtQcE1PaDBsQXdMaUlzdmtPNFVsYmVPUzBJSkM4YmNxTGpNMWZWdzZGR1NheG1xKzR5MWFnMm05azZJZEUwUWg1JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O054Qi94RmttZHdxWEZSSUpWcDQ0T2VVeWdCNDdZSzc2Tm1VSVlHM0RkZmlQUFUzYnF6anZ0T3RFVGlDSHZvMjUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NEQ2VWp3UHBZRXJYUlVhak5qQTBNQTRHQTFVZER3RUIvd1FFQXdJQ0JEQVBCZ05WSFJNRUNEQUdBUUgvQWdFQSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQkVHQTFVZERnUUtCQWlEaGo1QWRqTGlrekFKQmdjcWhrak9PQVFEQXk4QU1Dd0NGRUx1MG51d2VxVzdXZjBzJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2drL0NBR0dMMEJHS0FoUk5kZ1FHcjVpeVpLb0g0b3FQbTBWSjlUalhMZz09JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5Q2VydGlmaWNhdGUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlEYXRhJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0tleUluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2ZvbzpSb290Jmd0Ozwvc3Bhbj48L3ByZT48L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMTkudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0xOS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc5ZmQ2YwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMTkudHh0CkBAIC0wLDAgKzEsOSBAQAorPGJhcjpTb21ldGhpbmcgeG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIj4KKyAgICAgPGZvbzpTb21ldGhpbmcgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIj4KKyAgICAgICAgPGJhcjpTb21ldGhpbmc+CisgICAgICAgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICAgICAgIDxiYXo6U29tZXRoaW5nIHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI+PC9iYXo6U29tZXRoaW5nPgorICAgICAgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgICAgIDwvYmFyOlNvbWV0aGluZz4KKyAgICAgPC9mb286U29tZXRoaW5nPgorICA8L2JhcjpTb21ldGhpbmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0yLmh0bWwgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDExNWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0yLmh0bWwKQEAgLTAsMCArMSw1NTcgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DYW5pbmljYWwgWE1MIG5vZGUgc2V0PC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cis8IS0tIAorLklOQ0xVREVEIHsgCisgICBjb2xvcjogIzAwMDAwMDsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IH0gCisuRVhDTFVERUQgeyAKKyAgIGNvbG9yOiAjNjY2NjY2OyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgIzk5OTk5OTsgfSAKKy5JTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCisuRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICM5OTk5OTk7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLS0+IAorPC9zdHlsZT4gCis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSIjOTk5OTk5Ij4KKzxoMT5FeHBsYW5hdGlvbiBvZiB0aGUgb3V0cHV0PC9oMT4KKzxwPlRoZSBmb2xsb3dpbmcgdGV4dCBjb250YWlucyB0aGUgbm9kZXNldCBvZiB0aGUgZ2l2ZW4gUmVmZXJlbmNlIGJlZm9yZSBpdCBpcyBjYW5vbmljYWxpemVkLiBUaGVyZSBleGlzdCBmb3VyIGRpZmZlcmVudCBzdHlsZXMgdG8gaW5kaWNhdGUgaG93IGEgZ2l2ZW4gbm9kZSBpcyB0cmVhdGVkLjwvcD4KKzx1bD4KKzxsaSBjbGFzcz0iSU5DTFVERUQiPkEgbm9kZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERUQiPkEgbm9kZSB3aGljaCBpcyA8ZW0+Tk9UPC9lbT4gaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgRVhDTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gTk9UIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPC91bD4KKzxoMT5PdXRwdXQ8L2gxPgorPHByZT4KKzxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2ZvbzpSb290PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWw6bGFuZz0iZW4taWUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtiYXI6U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7Zm9vOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2JhcjpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtmb286U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2JhejpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvYmF6OlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2ZvbzpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9iYXI6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvZm9vOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2JhcjpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduZWRJbmZvPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWw6bGFuZz0iZW4taWUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0Nhbm9uaWNhbGl6YXRpb25NZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvQ2Fub25pY2FsaXphdGlvbk1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmVNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZU1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5sQ09TL0p0cG1PRSs0ZVhGYU9wWTR2NEJPZ0k9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5PeVZxRVdYRTdDKzVOeUt0Y2VVa2RtaUZPOUE9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5PeVZxRVdYRTdDKzVOeUt0Y2VVa2RtaUZPOUE9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm90Jm1pZGRvdDsoc2VsZjo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5tTDFhQVEvUm9PUE8wU0hqOUtSK3lZM240Q009PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmJRZ0Y4SUN5bVlaVHVVUDBGRTQwbDNRN0Jaaz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+YlFnRjhJQ3ltWVpUdVVQMEZFNDBsM1E3QlprPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90Oz0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPklKUWdkNTlGSjFQQXh4Q1k1bUlMNmNaZW1pMD08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+U1hHaWpPMWVBckVhWEdwaEYwZHh3ajVmcDFnPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+ck5tNElkOWFoMTJudWd6WEFVSmdqYXM3bHMwPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm90Jm1pZGRvdDsoc2VsZjo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPnVPUUpRSUlVRVRZeWswK1lFQmRiRVF3cllidz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90Oz0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+QVd0cURiWFdLZjhUVjc4QzJkMTZ1YXJicEdrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm90Jm1pZGRvdDsoc2VsZjo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+dU9RSlFJSVVFVFl5azArWUVCZGJFUXdyWWJ3PTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90Oz0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5OcGpNUHpFRjVZWkZiejRsczdlTjM2UVdkWHM9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+RWFjQk4yYUJCTlNqcENPelpVT092U3Y0ekhVPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduZWRJbmZvJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlVmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RngzNFZjMDdmWGFjNnFtc2hoaExlOG9nakVsU21DNll4VG5oeGo4d01UU2tmdnhZK3dZdHJRPT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmVWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0tleUluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0tleVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RFNBS2V5VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDszZU9lQXZxbkV5RnBXK3VUU2dyZGo3WUxqYVRrcHlIZWNLRklvTHU4UVpOa0dUUUkxY2lJVEJIMGxxZklrZENIJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtTaThmaVVDM0RUcTNKOUZzSmVmNFlWdERGN0pwVXZIVE9RcXRxN1pneDZLQzhXeGt6NnJRQ3hPcjdGMEFwT1lpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4OXpMUm9lNE1rREdlNnV4MCtXdHlPVFFvVklHTlRERFVGWHJVUU5iTHJFPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1AmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtRPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5oRExjRkswR08vSHoxYXJ4T092c2dNL1ZMeVU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9RJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Rzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtubng3aGJkV296R2J0bkZnbmJGbm9wZlJsN1hSYWNwa1BKUkdmNVAySVVnVnNwRVVTVW9ONmkxZkRCZkJnNDN6JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtLdDdkbEVhUUw3YjUrSlRadDNNaFpOUG9zeHNneFZ1VDdUcy9nNWs3RW5wZFl2MGE1aHc1QncyOWZqYkdIZmdNJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4ZDJyaGQyVWkweEhiazBENDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0cmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtZPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NmWXBpaHBBUWVlcGJORlM0TUFiUVJoZFhwRGk1d0xyd3hFNWhJdm9ZcW8xTDhCUVZ1OGZZMVRGQVB0b2FlMWkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0JnL0dJSnlQM2lMZnl1QkphRHZKSkxQMzB3Qkg5aS9zNUozNjU2UGV2cE9WZFRmaTc3N0ZpOUdqNnkvaWIyVnYmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OytPWmZKa2twNEw1MCtwNVRVaFBtUUxKdFJFc2d0bCt0bklPeUpUKytHOVU9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RTQUtleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9LZXlWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5RGF0YTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlTdWJqZWN0TmFtZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0NOPU1lcmxpbiZtaWRkb3Q7SHVnaGVzLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlJm1pZGRvdDtUZWNobm9sb2dpZXMmbWlkZG90O0x0ZC4sU1Q9RHVibGluLEM9SUUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlTdWJqZWN0TmFtZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUlzc3VlclNlcmlhbDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5SXNzdWVyTmFtZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtDTj1UcmFuc2llbnQmbWlkZG90O0NBLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlJm1pZGRvdDtUZWNobm9sb2dpZXMmbWlkZG90O0x0ZC4sU1Q9RHVibGluLEM9SUUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5SXNzdWVyTmFtZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlTZXJpYWxOdW1iZXI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjEwMTc3ODgzNzAzNDg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlTZXJpYWxOdW1iZXImZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5SXNzdWVyU2VyaWFsJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5Q2VydGlmaWNhdGU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNSUlEVURDQ0F4Q2dBd0lCQWdJR0FPejQ2ZzJzTUFrR0J5cUdTTTQ0QkFNd2JqRUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQjRYRFRBeU1EUXdNakl5TlRrek1Gb1hEVEV5TURRd01qSXhOVGt5TlZvd2J6RUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVXTUJRR0ExVUVBeE1OVFdWeWJHbHVJRWgxWjJobCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjekNDQWJjd2dnRXNCZ2NxaGtqT09BUUJNSUlCSHdLQmdRRGQ0NTRDK3FjVElXbGI2NU5LQ3QyUHRndU5wT1NuJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0lkNXdvVWlndTd4QmsyUVpOQWpWeUloTUVmU1dwOGlSMElkS0x4K0pRTGNOT3JjbjBXd2w1L2hoVzBNWHNtbFMmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7OGRNNUNxMnJ0bURIb29MeGJHVFBxdEFMRTZ2c1hRQ2s1aUx6M010R2g3Z3lRTVo3cTdIVDVhM0k1TkNoVWdZMSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNTU5RVmV0UkExc3VzUUlWQUlReTNCU3RCanZ4ODlXcThUanI3SURQMVM4bEFvR0JBSjU4ZTRXM1ZxTXhtN1p4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1lKMnhaNktYMFplMTBXbktaRHlVUm4rVDlpRklGYktSRkVsS0Rlb3RYd3dYd1lPTjh5cmUzWlJHa0MrMitmaVUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7MmJkeklXVFQ2TE1iSU1WYmsrMDdQNE9aT3hKNlhXTDlHdVljT1FjTnZYNDJ4aDM0RFBIZHE0WGRsSXRNUjI1TiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtBK09kWjRTOFZWcnBiNGprajRjeWlyMTYyOGtnQTRHRUFBS0JnSEgyS1lvYVFFSG5xV3pSVXVEQUcwRVlYVjZRJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzR1Y0M2OE1ST1lTTDZHS3FOUy9BVUZidkgyTlV4UUQ3YUdudFlnWVB4aUNjajk0aTM4cmdTV2c3eVNTejk5TUEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Ui9ZdjdPU2QrdWVqM3I2VGxYVTM0dSsreFl2Um8rc3Y0bTlsYi9qbVh5WkpLZUMrZFBxZVUxSVQ1a0N5YlVSTCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtJTFpmclp5RHNpVS92aHZWb3pvd09EQU9CZ05WSFE4QkFmOEVCQU1DQjRBd0VRWURWUjBPQkFvRUNJYXRZN1NFJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2xYRU9NQk1HQTFVZEl3UU1NQXFBQ0lPR1BrQjJNdUtUTUFrR0J5cUdTTTQ0QkFNREx3QXdMQUlVU3ZUMDJpUWomcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7UTVkYTRXcGUwQnZzN0d1Q2NWc0NGQ0VjUXBialVmbnhYRlhOV2lGeVE0OVpyV3FuJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5Q2VydGlmaWNhdGUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlDZXJ0aWZpY2F0ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSURTekNDQXd1Z0F3SUJBZ0lHQU96NDZmd0pNQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CNFhEVEF5TURRd01qSXlOVGt5TlZvWERURXlNRFF3TWpJeE5Ua3lOVm93YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSUJ0ekNDQVN3R0J5cUdTTTQ0QkFFd2dnRWZBb0dCQU4zam5nTDZweE1oYVZ2cmswb0szWSsyQzQyazVLY2gmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7M25DaFNLQzd2RUdUWkJrMENOWElpRXdSOUphbnlKSFFoMG92SDRsQXR3MDZ0eWZSYkNYbitHRmJReGV5YVZMeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDswemtLcmF1MllNZWlndkZzWk0rcTBBc1RxK3hkQUtUbUl2UGN5MGFIdURKQXhudXJzZFBscmNqazBLRlNCalV3JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O3cxQlY2MUVEV3k2eEFoVUFoRExjRkswR08vSHoxYXJ4T092c2dNL1ZMeVVDZ1lFQW5ueDdoYmRXb3pHYnRuRmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bmJGbm9wZlJsN1hSYWNwa1BKUkdmNVAySVVnVnNwRVVTVW9ONmkxZkRCZkJnNDN6S3Q3ZGxFYVFMN2I1K0pUWiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDt0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ004ZDJyaGQyVWkweEhiazBEJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzQ1MW5oTHhWV3VsdmlPU1BoektLdlhyYnlTQURnWVFBQW9HQWZhZytIQ0FCSUphZEREOUFhcmhnYzJRUjNMcDcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7UHBNT2gwbEF3TGlJc3ZrTzRVbGJlT1MwSUpDOGJjcUxqTTFmVnc2RkdTYXhtcSs0eTFhZzJtOWs2SWRFMFFoNSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtOeEIveEZrbWR3cVhGUklKVnA0NE9lVXlnQjQ3WUs3Nk5tVUlZRzNEZGZpUFBVM2Jxemp2dE90RVRpQ0h2bzI1JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzRENlVqd1BwWUVyWFJVYWpOakEwTUE0R0ExVWREd0VCL3dRRUF3SUNCREFQQmdOVkhSTUVDREFHQVFIL0FnRUEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUJFR0ExVWREZ1FLQkFpRGhqNUFkakxpa3pBSkJnY3Foa2pPT0FRREF5OEFNQ3dDRkVMdTBudXdlcVc3V2YwcyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtnay9DQUdHTDBCR0tBaFJOZGdRR3I1aXlaS29ING9xUG0wVko5VGpYTGc9PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUNlcnRpZmljYXRlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5RGF0YSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9LZXlJbmZvJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9mb286Um9vdCZndDs8L3NwYW4+PC9wcmU+PC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTIudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTQyZWRmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0yLnR4dApAQCAtMCwwICsxLDkgQEAKKzxiYXI6U29tZXRoaW5nIHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciIgeG1sOmxhbmc9ImVuLWllIj4KKyAgICAgPGZvbzpTb21ldGhpbmcgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIj4KKyAgICAgICAgPGJhcjpTb21ldGhpbmcgeG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIj4KKyAgICAgICAgICAgPGZvbzpTb21ldGhpbmcgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIj4KKyAgICAgICAgICAgICA8YmF6OlNvbWV0aGluZyB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPjwvYmF6OlNvbWV0aGluZz4KKyAgICAgICAgICAgPC9mb286U29tZXRoaW5nPgorICAgICAgICA8L2JhcjpTb21ldGhpbmc+CisgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgPC9iYXI6U29tZXRoaW5nPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMjAuaHRtbCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMjAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTM3MGMzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0yMC5odG1sCkBAIC0wLDAgKzEsNTU3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q2FuaW5pY2FsIFhNTCBub2RlIHNldDwvdGl0bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorPCEtLSAKKy5JTkNMVURFRCB7IAorICAgY29sb3I6ICMwMDAwMDA7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyB9IAorLkVYQ0xVREVEIHsgCisgICBjb2xvcjogIzY2NjY2NjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICM5OTk5OTk7IH0gCisuSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5OTk5OyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy0tPiAKKzwvc3R5bGU+IAorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0iIzk5OTk5OSI+Cis8aDE+RXhwbGFuYXRpb24gb2YgdGhlIG91dHB1dDwvaDE+Cis8cD5UaGUgZm9sbG93aW5nIHRleHQgY29udGFpbnMgdGhlIG5vZGVzZXQgb2YgdGhlIGdpdmVuIFJlZmVyZW5jZSBiZWZvcmUgaXQgaXMgY2Fub25pY2FsaXplZC4gVGhlcmUgZXhpc3QgZm91ciBkaWZmZXJlbnQgc3R5bGVzIHRvIGluZGljYXRlIGhvdyBhIGdpdmVuIG5vZGUgaXMgdHJlYXRlZC48L3A+Cis8dWw+Cis8bGkgY2xhc3M9IklOQ0xVREVEIj5BIG5vZGUgd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVEIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVEIj5BIG5vZGUgd2hpY2ggaXMgPGVtPk5PVDwvZW0+IGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIEVYQ0xVREVEIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgQU5EIGluIHRoZSBJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3QgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0Ugc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIE5PVCB0aGUgbm9kZSBzZXQgQU5EIGluIHRoZSBJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3QgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0Ugc3R5bGUuPC9saT4KKzwvdWw+Cis8aDE+T3V0cHV0PC9oMT4KKzxwcmU+Cis8c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtmb286Um9vdDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sOmxhbmc9ImVuLWllIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7YmFyOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2ZvbzpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtiYXI6U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7Zm9vOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtiYXo6U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2JhejpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9mb286U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvYmFyOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2ZvbzpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9iYXI6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmVkSW5mbzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sOmxhbmc9ImVuLWllIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtDYW5vbmljYWxpemF0aW9uTWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0Nhbm9uaWNhbGl6YXRpb25NZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlTWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmVNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+bENPUy9KdHBtT0UrNGVYRmFPcFk0djRCT2dJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+T3lWcUVXWEU3Qys1TnlLdGNlVWtkbWlGTzlBPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+T3lWcUVXWEU3Qys1TnlLdGNlVWtkbWlGTzlBPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25vdCZtaWRkb3Q7KHNlbGY6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+bUwxYUFRL1JvT1BPMFNIajlLUit5WTNuNENNPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5iUWdGOElDeW1ZWlR1VVAwRkU0MGwzUTdCWms9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmJRZ0Y4SUN5bVlaVHVVUDBGRTQwbDNRN0Jaaz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDs9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5JSlFnZDU5RkoxUEF4eENZNW1JTDZjWmVtaTA9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPlNYR2lqTzFlQXJFYVhHcGhGMGR4d2o1ZnAxZz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPnJObTRJZDlhaDEybnVnelhBVUpnamFzN2xzMD08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25vdCZtaWRkb3Q7KHNlbGY6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj51T1FKUUlJVUVUWXlrMCtZRUJkYkVRd3JZYnc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDs9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPkFXdHFEYlhXS2Y4VFY3OEMyZDE2dWFyYnBHaz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25vdCZtaWRkb3Q7KHNlbGY6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPnVPUUpRSUlVRVRZeWswK1lFQmRiRVF3cllidz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDs9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+TnBqTVB6RUY1WVpGYno0bHM3ZU4zNlFXZFhzPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPkVhY0JOMmFCQk5TanBDT3paVU9PdlN2NHpIVT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmVkSW5mbyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0Z4MzRWYzA3ZlhhYzZxbXNoaGhMZThvZ2pFbFNtQzZZeFRuaHhqOHdNVFNrZnZ4WSt3WXRyUT09JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlVmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtLZXlJbmZvPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtLZXlWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RTQUtleVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1A8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7M2VPZUF2cW5FeUZwVyt1VFNncmRqN1lMamFUa3B5SGVjS0ZJb0x1OFFaTmtHVFFJMWNpSVRCSDBscWZJa2RDSCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7U2k4ZmlVQzNEVHEzSjlGc0plZjRZVnRERjdKcFV2SFRPUXF0cTdaZ3g2S0M4V3hrejZyUUN4T3I3RjBBcE9ZaSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7ODl6TFJvZTRNa0RHZTZ1eDArV3R5T1RRb1ZJR05URERVRlhyVVFOYkxyRT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9QJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+aERMY0ZLMEdPL0h6MWFyeE9PdnNnTS9WTHlVPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0c8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm54N2hiZFdvekdidG5GZ25iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzeiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7S3Q3ZGxFYVFMN2I1K0pUWnQzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7OGQycmhkMlVpMHhIYmswRDQ1MW5oTHhWV3VsdmlPU1BoektLdlhyYnlTQT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9HJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjZllwaWhwQVFlZXBiTkZTNE1BYlFSaGRYcERpNXdMcnd4RTVoSXZvWXFvMUw4QlFWdThmWTFURkFQdG9hZTFpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtCZy9HSUp5UDNpTGZ5dUJKYUR2SkpMUDMwd0JIOWkvczVKMzY1NlBldnBPVmRUZmk3NzdGaTlHajZ5L2liMlZ2JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsrT1pmSmtrcDRMNTArcDVUVWhQbVFMSnRSRXNndGwrdG5JT3lKVCsrRzlVPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1kmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EU0FLZXlWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvS2V5VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOURhdGE8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5U3ViamVjdE5hbWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtDTj1NZXJsaW4mbWlkZG90O0h1Z2hlcyxPVT1YL1NlY3VyZSxPPUJhbHRpbW9yZSZtaWRkb3Q7VGVjaG5vbG9naWVzJm1pZGRvdDtMdGQuLFNUPUR1YmxpbixDPUlFJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5U3ViamVjdE5hbWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlJc3N1ZXJTZXJpYWw8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUlzc3Vlck5hbWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Q049VHJhbnNpZW50Jm1pZGRvdDtDQSxPVT1YL1NlY3VyZSxPPUJhbHRpbW9yZSZtaWRkb3Q7VGVjaG5vbG9naWVzJm1pZGRvdDtMdGQuLFNUPUR1YmxpbixDPUlFJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUlzc3Vlck5hbWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5U2VyaWFsTnVtYmVyPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4xMDE3Nzg4MzcwMzQ4PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5U2VyaWFsTnVtYmVyJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUlzc3VlclNlcmlhbCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUNlcnRpZmljYXRlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJRFVEQ0NBeENnQXdJQkFnSUdBT3o0Nmcyc01Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUI0WERUQXlNRFF3TWpJeU5Ua3pNRm9YRFRFeU1EUXdNakl4TlRreU5Wb3diekVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFV01CUUdBMVVFQXhNTlRXVnliR2x1SUVoMVoyaGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3pDQ0FiY3dnZ0VzQmdjcWhrak9PQVFCTUlJQkh3S0JnUURkNDU0QytxY1RJV2xiNjVOS0N0MlB0Z3VOcE9TbiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtJZDV3b1VpZ3U3eEJrMlFaTkFqVnlJaE1FZlNXcDhpUjBJZEtMeCtKUUxjTk9yY24wV3dsNS9oaFcwTVhzbWxTJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzhkTTVDcTJydG1ESG9vTHhiR1RQcXRBTEU2dnNYUUNrNWlMejNNdEdoN2d5UU1aN3E3SFQ1YTNJNU5DaFVnWTEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TU1OUVZldFJBMXN1c1FJVkFJUXkzQlN0Qmp2eDg5V3E4VGpyN0lEUDFTOGxBb0dCQUo1OGU0VzNWcU14bTdaeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtZSjJ4WjZLWDBaZTEwV25LWkR5VVJuK1Q5aUZJRmJLUkZFbEtEZW90WHd3WHdZT044eXJlM1pSR2tDKzIrZmlVJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzJiZHpJV1RUNkxNYklNVmJrKzA3UDRPWk94SjZYV0w5R3VZY09RY052WDQyeGgzNERQSGRxNFhkbEl0TVIyNU4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7QStPZFo0UzhWVnJwYjRqa2o0Y3lpcjE2MjhrZ0E0R0VBQUtCZ0hIMktZb2FRRUhucVd6UlV1REFHMEVZWFY2USZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs0dWNDNjhNUk9ZU0w2R0txTlMvQVVGYnZIMk5VeFFEN2FHbnRZZ1lQeGlDY2o5NGkzOHJnU1dnN3lTU3o5OU1BJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1IvWXY3T1NkK3VlajNyNlRsWFUzNHUrK3hZdlJvK3N2NG05bGIvam1YeVpKS2VDK2RQcWVVMUlUNWtDeWJVUkwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7SUxaZnJaeURzaVUvdmh2Vm96b3dPREFPQmdOVkhROEJBZjhFQkFNQ0I0QXdFUVlEVlIwT0JBb0VDSWF0WTdTRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtsWEVPTUJNR0ExVWRJd1FNTUFxQUNJT0dQa0IyTXVLVE1Ba0dCeXFHU000NEJBTURMd0F3TEFJVVN2VDAyaVFqJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1E1ZGE0V3BlMEJ2czdHdUNjVnNDRkNFY1FwYmpVZm54WEZYTldpRnlRNDlacldxbiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUNlcnRpZmljYXRlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5Q2VydGlmaWNhdGU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNSUlEU3pDQ0F3dWdBd0lCQWdJR0FPejQ2ZndKTUFrR0J5cUdTTTQ0QkFNd2JqRUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQjRYRFRBeU1EUXdNakl5TlRreU5Wb1hEVEV5TURRd01qSXhOVGt5TlZvd2JqRUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNSUlCdHpDQ0FTd0dCeXFHU000NEJBRXdnZ0VmQW9HQkFOM2puZ0w2cHhNaGFWdnJrMG9LM1krMkM0Mms1S2NoJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzNuQ2hTS0M3dkVHVFpCazBDTlhJaUV3UjlKYW55SkhRaDBvdkg0bEF0dzA2dHlmUmJDWG4rR0ZiUXhleWFWTHgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7MHprS3JhdTJZTWVpZ3ZGc1pNK3EwQXNUcSt4ZEFLVG1JdlBjeTBhSHVESkF4bnVyc2RQbHJjamswS0ZTQmpVdyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDt3MUJWNjFFRFd5NnhBaFVBaERMY0ZLMEdPL0h6MWFyeE9PdnNnTS9WTHlVQ2dZRUFubng3aGJkV296R2J0bkZnJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzekt0N2RsRWFRTDdiNStKVFomcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7dDNNaFpOUG9zeHNneFZ1VDdUcy9nNWs3RW5wZFl2MGE1aHc1QncyOWZqYkdIZmdNOGQycmhkMlVpMHhIYmswRCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs0NTFuaEx4Vld1bHZpT1NQaHpLS3ZYcmJ5U0FEZ1lRQUFvR0FmYWcrSENBQklKYWRERDlBYXJoZ2MyUVIzTHA3JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1BwTU9oMGxBd0xpSXN2a080VWxiZU9TMElKQzhiY3FMak0xZlZ3NkZHU2F4bXErNHkxYWcybTlrNklkRTBRaDUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TnhCL3hGa21kd3FYRlJJSlZwNDRPZVV5Z0I0N1lLNzZObVVJWUczRGRmaVBQVTNicXpqdnRPdEVUaUNIdm8yNSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs0RDZVandQcFlFclhSVWFqTmpBME1BNEdBMVVkRHdFQi93UUVBd0lDQkRBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CRUdBMVVkRGdRS0JBaURoajVBZGpMaWt6QUpCZ2NxaGtqT09BUURBeThBTUN3Q0ZFTHUwbnV3ZXFXN1dmMHMmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Z2svQ0FHR0wwQkdLQWhSTmRnUUdyNWl5WktvSDRvcVBtMFZKOVRqWExnPT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlDZXJ0aWZpY2F0ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOURhdGEmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvS2V5SW5mbyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZm9vOlJvb3QmZ3Q7PC9zcGFuPjwvcHJlPjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0yMC50eHQgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTIwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzlmZDZjCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0yMC50eHQKQEAgLTAsMCArMSw5IEBACis8YmFyOlNvbWV0aGluZyB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPgorICAgICA8Zm9vOlNvbWV0aGluZyB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPgorICAgICAgICA8YmFyOlNvbWV0aGluZz4KKyAgICAgICAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICAgPGJhejpTb21ldGhpbmcgeG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ij48L2JhejpTb21ldGhpbmc+CisgICAgICAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICAgICAgPC9iYXI6U29tZXRoaW5nPgorICAgICA8L2ZvbzpTb21ldGhpbmc+CisgIDwvYmFyOlNvbWV0aGluZz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTIxLmh0bWwgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTIxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODE4ZGUwNgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMjEuaHRtbApAQCAtMCwwICsxLDU1NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNhbmluaWNhbCBYTUwgbm9kZSBzZXQ8L3RpdGxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKzwhLS0gCisuSU5DTFVERUQgeyAKKyAgIGNvbG9yOiAjMDAwMDAwOyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgfSAKKy5FWENMVURFRCB7IAorICAgY29sb3I6ICM2NjY2NjY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjOTk5OTk5OyB9IAorLklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy5FWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogIzk5OTk5OTsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCistLT4gCis8L3N0eWxlPiAKKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IiM5OTk5OTkiPgorPGgxPkV4cGxhbmF0aW9uIG9mIHRoZSBvdXRwdXQ8L2gxPgorPHA+VGhlIGZvbGxvd2luZyB0ZXh0IGNvbnRhaW5zIHRoZSBub2Rlc2V0IG9mIHRoZSBnaXZlbiBSZWZlcmVuY2UgYmVmb3JlIGl0IGlzIGNhbm9uaWNhbGl6ZWQuIFRoZXJlIGV4aXN0IGZvdXIgZGlmZmVyZW50IHN0eWxlcyB0byBpbmRpY2F0ZSBob3cgYSBnaXZlbiBub2RlIGlzIHRyZWF0ZWQuPC9wPgorPHVsPgorPGxpIGNsYXNzPSJJTkNMVURFRCI+QSBub2RlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRCI+QSBub2RlIHdoaWNoIGlzIDxlbT5OT1Q8L2VtPiBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCBFWENMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiBOT1QgdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8L3VsPgorPGgxPk91dHB1dDwvaDE+Cis8cHJlPgorPHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Zm9vOlJvb3Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpsYW5nPSJlbi1pZSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2JhcjpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtmb286U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7YmFyOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2ZvbzpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7YmF6OlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9iYXo6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZm9vOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2JhcjpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9mb286U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvYmFyOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25lZEluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpsYW5nPSJlbi1pZSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Q2Fub25pY2FsaXphdGlvbk1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9DYW5vbmljYWxpemF0aW9uTWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZU1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlTWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmxDT1MvSnRwbU9FKzRlWEZhT3BZNHY0Qk9nST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk95VnFFV1hFN0MrNU55S3RjZVVrZG1pRk85QT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk95VnFFV1hFN0MrNU55S3RjZVVrZG1pRk85QT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPm1MMWFBUS9Sb09QTzBTSGo5S1IreVkzbjRDTT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+YlFnRjhJQ3ltWVpUdVVQMEZFNDBsM1E3QlprPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5iUWdGOElDeW1ZWlR1VVAwRkU0MGwzUTdCWms9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+SUpRZ2Q1OUZKMVBBeHhDWTVtSUw2Y1plbWkwPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5TWEdpak8xZUFyRWFYR3BoRjBkeHdqNWZwMWc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5yTm00SWQ5YWgxMm51Z3pYQVVKZ2phczdsczA9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+dU9RSlFJSVVFVFl5azArWUVCZGJFUXdyWWJ3PTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5BV3RxRGJYV0tmOFRWNzhDMmQxNnVhcmJwR2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj51T1FKUUlJVUVUWXlrMCtZRUJkYkVRd3JZYnc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk5wak1QekVGNVlaRmJ6NGxzN2VOMzZRV2RYcz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5FYWNCTjJhQkJOU2pwQ096WlVPT3ZTdjR6SFU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25lZEluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmVWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtGeDM0VmMwN2ZYYWM2cW1zaGhoTGU4b2dqRWxTbUM2WXhUbmh4ajh3TVRTa2Z2eFkrd1l0clE9PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5SW5mbzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEU0FLZXlWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtQPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzNlT2VBdnFuRXlGcFcrdVRTZ3JkajdZTGphVGtweUhlY0tGSW9MdThRWk5rR1RRSTFjaUlUQkgwbHFmSWtkQ0gmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1NpOGZpVUMzRFRxM0o5RnNKZWY0WVZ0REY3SnBVdkhUT1FxdHE3Wmd4NktDOFd4a3o2clFDeE9yN0YwQXBPWWkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozg5ekxSb2U0TWtER2U2dXgwK1d0eU9UUW9WSUdOVEREVUZYclVRTmJMckU9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1E8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1EmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtHPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25ueDdoYmRXb3pHYnRuRmduYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3omcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0t0N2RsRWFRTDdiNStKVFp0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ00mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzhkMnJoZDJVaTB4SGJrMEQ0NTFuaEx4Vld1bHZpT1NQaHpLS3ZYcmJ5U0E9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1k8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y2ZZcGlocEFRZWVwYk5GUzRNQWJRUmhkWHBEaTV3THJ3eEU1aEl2b1lxbzFMOEJRVnU4ZlkxVEZBUHRvYWUxaSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7QmcvR0lKeVAzaUxmeXVCSmFEdkpKTFAzMHdCSDlpL3M1SjM2NTZQZXZwT1ZkVGZpNzc3Rmk5R2o2eS9pYjJWdiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7K09aZkpra3A0TDUwK3A1VFVoUG1RTEp0UkVzZ3RsK3RuSU95SlQrK0c5VT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9ZJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRFNBS2V5VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0tleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlEYXRhPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOVN1YmplY3ROYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Q049TWVybGluJm1pZGRvdDtIdWdoZXMsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUmbWlkZG90O1RlY2hub2xvZ2llcyZtaWRkb3Q7THRkLixTVD1EdWJsaW4sQz1JRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOVN1YmplY3ROYW1lJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5SXNzdWVyU2VyaWFsPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlJc3N1ZXJOYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0NOPVRyYW5zaWVudCZtaWRkb3Q7Q0EsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUmbWlkZG90O1RlY2hub2xvZ2llcyZtaWRkb3Q7THRkLixTVD1EdWJsaW4sQz1JRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlJc3N1ZXJOYW1lJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOVNlcmlhbE51bWJlcjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MTAxNzc4ODM3MDM0ODwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOVNlcmlhbE51bWJlciZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlJc3N1ZXJTZXJpYWwmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlDZXJ0aWZpY2F0ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSURVRENDQXhDZ0F3SUJBZ0lHQU96NDZnMnNNQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CNFhEVEF5TURRd01qSXlOVGt6TUZvWERURXlNRFF3TWpJeE5Ua3lOVm93YnpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVdNQlFHQTFVRUF4TU5UV1Z5YkdsdUlFaDFaMmhsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N6Q0NBYmN3Z2dFc0JnY3Foa2pPT0FRQk1JSUJId0tCZ1FEZDQ1NEMrcWNUSVdsYjY1TktDdDJQdGd1TnBPU24mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7SWQ1d29VaWd1N3hCazJRWk5BalZ5SWhNRWZTV3A4aVIwSWRLTHgrSlFMY05PcmNuMFd3bDUvaGhXME1Yc21sUyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4ZE01Q3EycnRtREhvb0x4YkdUUHF0QUxFNnZzWFFDazVpTHozTXRHaDdneVFNWjdxN0hUNWEzSTVOQ2hVZ1kxJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01NTlFWZXRSQTFzdXNRSVZBSVF5M0JTdEJqdng4OVdxOFRqcjdJRFAxUzhsQW9HQkFKNThlNFczVnFNeG03WngmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7WUoyeFo2S1gwWmUxMFduS1pEeVVSbitUOWlGSUZiS1JGRWxLRGVvdFh3d1h3WU9OOHlyZTNaUkdrQysyK2ZpVSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsyYmR6SVdUVDZMTWJJTVZiayswN1A0T1pPeEo2WFdMOUd1WWNPUWNOdlg0MnhoMzREUEhkcTRYZGxJdE1SMjVOJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0ErT2RaNFM4VlZycGI0amtqNGN5aXIxNjI4a2dBNEdFQUFLQmdISDJLWW9hUUVIbnFXelJVdURBRzBFWVhWNlEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NHVjQzY4TVJPWVNMNkdLcU5TL0FVRmJ2SDJOVXhRRDdhR250WWdZUHhpQ2NqOTRpMzhyZ1NXZzd5U1N6OTlNQSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtSL1l2N09TZCt1ZWozcjZUbFhVMzR1Kyt4WXZSbytzdjRtOWxiL2ptWHlaSktlQytkUHFlVTFJVDVrQ3liVVJMJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0lMWmZyWnlEc2lVL3ZodlZvem93T0RBT0JnTlZIUThCQWY4RUJBTUNCNEF3RVFZRFZSME9CQW9FQ0lhdFk3U0UmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bFhFT01CTUdBMVVkSXdRTU1BcUFDSU9HUGtCMk11S1RNQWtHQnlxR1NNNDRCQU1ETHdBd0xBSVVTdlQwMmlRaiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtRNWRhNFdwZTBCdnM3R3VDY1ZzQ0ZDRWNRcGJqVWZueFhGWE5XaUZ5UTQ5WnJXcW4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlDZXJ0aWZpY2F0ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUNlcnRpZmljYXRlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJRFN6Q0NBd3VnQXdJQkFnSUdBT3o0NmZ3Sk1Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUI0WERUQXlNRFF3TWpJeU5Ua3lOVm9YRFRFeU1EUXdNakl4TlRreU5Wb3diakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJQnR6Q0NBU3dHQnlxR1NNNDRCQUV3Z2dFZkFvR0JBTjNqbmdMNnB4TWhhVnZyazBvSzNZKzJDNDJrNUtjaCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDszbkNoU0tDN3ZFR1RaQmswQ05YSWlFd1I5SmFueUpIUWgwb3ZINGxBdHcwNnR5ZlJiQ1huK0dGYlF4ZXlhVkx4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzB6a0tyYXUyWU1laWd2RnNaTStxMEFzVHEreGRBS1RtSXZQY3kwYUh1REpBeG51cnNkUGxyY2prMEtGU0JqVXcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7dzFCVjYxRURXeTZ4QWhVQWhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VUNnWUVBbm54N2hiZFdvekdidG5GZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtuYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3pLdDdkbEVhUUw3YjUrSlRaJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O3QzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTThkMnJoZDJVaTB4SGJrMEQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBRGdZUUFBb0dBZmFnK0hDQUJJSmFkREQ5QWFyaGdjMlFSM0xwNyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtQcE1PaDBsQXdMaUlzdmtPNFVsYmVPUzBJSkM4YmNxTGpNMWZWdzZGR1NheG1xKzR5MWFnMm05azZJZEUwUWg1JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O054Qi94RmttZHdxWEZSSUpWcDQ0T2VVeWdCNDdZSzc2Tm1VSVlHM0RkZmlQUFUzYnF6anZ0T3RFVGlDSHZvMjUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NEQ2VWp3UHBZRXJYUlVhak5qQTBNQTRHQTFVZER3RUIvd1FFQXdJQ0JEQVBCZ05WSFJNRUNEQUdBUUgvQWdFQSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQkVHQTFVZERnUUtCQWlEaGo1QWRqTGlrekFKQmdjcWhrak9PQVFEQXk4QU1Dd0NGRUx1MG51d2VxVzdXZjBzJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2drL0NBR0dMMEJHS0FoUk5kZ1FHcjVpeVpLb0g0b3FQbTBWSjlUalhMZz09JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5Q2VydGlmaWNhdGUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlEYXRhJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0tleUluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2ZvbzpSb290Jmd0Ozwvc3Bhbj48L3ByZT48L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMjEudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0yMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q1MzM0NgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMjEudHh0CkBAIC0wLDAgKzEsOSBAQAorPGJhcjpTb21ldGhpbmcgeG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIj4KKyAgICAgCisgICAgICAgIDxiYXI6U29tZXRoaW5nPgorICAgICAgICAgICAKKyAgICAgICAgICAgICA8YmF6OlNvbWV0aGluZyB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPjwvYmF6OlNvbWV0aGluZz4KKyAgICAgICAgICAgCisgICAgICAgIDwvYmFyOlNvbWV0aGluZz4KKyAgICAgCisgIDwvYmFyOlNvbWV0aGluZz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTIyLmh0bWwgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTIyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJiOWQzMAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMjIuaHRtbApAQCAtMCwwICsxLDU1NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNhbmluaWNhbCBYTUwgbm9kZSBzZXQ8L3RpdGxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKzwhLS0gCisuSU5DTFVERUQgeyAKKyAgIGNvbG9yOiAjMDAwMDAwOyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgfSAKKy5FWENMVURFRCB7IAorICAgY29sb3I6ICM2NjY2NjY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjOTk5OTk5OyB9IAorLklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy5FWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogIzk5OTk5OTsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCistLT4gCis8L3N0eWxlPiAKKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IiM5OTk5OTkiPgorPGgxPkV4cGxhbmF0aW9uIG9mIHRoZSBvdXRwdXQ8L2gxPgorPHA+VGhlIGZvbGxvd2luZyB0ZXh0IGNvbnRhaW5zIHRoZSBub2Rlc2V0IG9mIHRoZSBnaXZlbiBSZWZlcmVuY2UgYmVmb3JlIGl0IGlzIGNhbm9uaWNhbGl6ZWQuIFRoZXJlIGV4aXN0IGZvdXIgZGlmZmVyZW50IHN0eWxlcyB0byBpbmRpY2F0ZSBob3cgYSBnaXZlbiBub2RlIGlzIHRyZWF0ZWQuPC9wPgorPHVsPgorPGxpIGNsYXNzPSJJTkNMVURFRCI+QSBub2RlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRCI+QSBub2RlIHdoaWNoIGlzIDxlbT5OT1Q8L2VtPiBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCBFWENMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiBOT1QgdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8L3VsPgorPGgxPk91dHB1dDwvaDE+Cis8cHJlPgorPHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Zm9vOlJvb3Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpsYW5nPSJlbi1pZSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2JhcjpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtmb286U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7YmFyOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2ZvbzpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7YmF6OlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9iYXo6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvZm9vOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2JhcjpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9mb286U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvYmFyOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25lZEluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpsYW5nPSJlbi1pZSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Q2Fub25pY2FsaXphdGlvbk1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9DYW5vbmljYWxpemF0aW9uTWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZU1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlTWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmxDT1MvSnRwbU9FKzRlWEZhT3BZNHY0Qk9nST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk95VnFFV1hFN0MrNU55S3RjZVVrZG1pRk85QT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk95VnFFV1hFN0MrNU55S3RjZVVrZG1pRk85QT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPm1MMWFBUS9Sb09QTzBTSGo5S1IreVkzbjRDTT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+YlFnRjhJQ3ltWVpUdVVQMEZFNDBsM1E3QlprPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5iUWdGOElDeW1ZWlR1VVAwRkU0MGwzUTdCWms9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+SUpRZ2Q1OUZKMVBBeHhDWTVtSUw2Y1plbWkwPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5TWEdpak8xZUFyRWFYR3BoRjBkeHdqNWZwMWc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5yTm00SWQ5YWgxMm51Z3pYQVVKZ2phczdsczA9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+dU9RSlFJSVVFVFl5azArWUVCZGJFUXdyWWJ3PTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5BV3RxRGJYV0tmOFRWNzhDMmQxNnVhcmJwR2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj51T1FKUUlJVUVUWXlrMCtZRUJkYkVRd3JZYnc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk5wak1QekVGNVlaRmJ6NGxzN2VOMzZRV2RYcz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5FYWNCTjJhQkJOU2pwQ096WlVPT3ZTdjR6SFU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25lZEluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmVWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtGeDM0VmMwN2ZYYWM2cW1zaGhoTGU4b2dqRWxTbUM2WXhUbmh4ajh3TVRTa2Z2eFkrd1l0clE9PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5SW5mbzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEU0FLZXlWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtQPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzNlT2VBdnFuRXlGcFcrdVRTZ3JkajdZTGphVGtweUhlY0tGSW9MdThRWk5rR1RRSTFjaUlUQkgwbHFmSWtkQ0gmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1NpOGZpVUMzRFRxM0o5RnNKZWY0WVZ0REY3SnBVdkhUT1FxdHE3Wmd4NktDOFd4a3o2clFDeE9yN0YwQXBPWWkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozg5ekxSb2U0TWtER2U2dXgwK1d0eU9UUW9WSUdOVEREVUZYclVRTmJMckU9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1E8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1EmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtHPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25ueDdoYmRXb3pHYnRuRmduYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3omcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0t0N2RsRWFRTDdiNStKVFp0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ00mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzhkMnJoZDJVaTB4SGJrMEQ0NTFuaEx4Vld1bHZpT1NQaHpLS3ZYcmJ5U0E9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1k8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y2ZZcGlocEFRZWVwYk5GUzRNQWJRUmhkWHBEaTV3THJ3eEU1aEl2b1lxbzFMOEJRVnU4ZlkxVEZBUHRvYWUxaSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7QmcvR0lKeVAzaUxmeXVCSmFEdkpKTFAzMHdCSDlpL3M1SjM2NTZQZXZwT1ZkVGZpNzc3Rmk5R2o2eS9pYjJWdiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7K09aZkpra3A0TDUwK3A1VFVoUG1RTEp0UkVzZ3RsK3RuSU95SlQrK0c5VT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9ZJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRFNBS2V5VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0tleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlEYXRhPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOVN1YmplY3ROYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Q049TWVybGluJm1pZGRvdDtIdWdoZXMsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUmbWlkZG90O1RlY2hub2xvZ2llcyZtaWRkb3Q7THRkLixTVD1EdWJsaW4sQz1JRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOVN1YmplY3ROYW1lJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5SXNzdWVyU2VyaWFsPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlJc3N1ZXJOYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0NOPVRyYW5zaWVudCZtaWRkb3Q7Q0EsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUmbWlkZG90O1RlY2hub2xvZ2llcyZtaWRkb3Q7THRkLixTVD1EdWJsaW4sQz1JRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlJc3N1ZXJOYW1lJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOVNlcmlhbE51bWJlcjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MTAxNzc4ODM3MDM0ODwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOVNlcmlhbE51bWJlciZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlJc3N1ZXJTZXJpYWwmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlDZXJ0aWZpY2F0ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSURVRENDQXhDZ0F3SUJBZ0lHQU96NDZnMnNNQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CNFhEVEF5TURRd01qSXlOVGt6TUZvWERURXlNRFF3TWpJeE5Ua3lOVm93YnpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVdNQlFHQTFVRUF4TU5UV1Z5YkdsdUlFaDFaMmhsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N6Q0NBYmN3Z2dFc0JnY3Foa2pPT0FRQk1JSUJId0tCZ1FEZDQ1NEMrcWNUSVdsYjY1TktDdDJQdGd1TnBPU24mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7SWQ1d29VaWd1N3hCazJRWk5BalZ5SWhNRWZTV3A4aVIwSWRLTHgrSlFMY05PcmNuMFd3bDUvaGhXME1Yc21sUyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4ZE01Q3EycnRtREhvb0x4YkdUUHF0QUxFNnZzWFFDazVpTHozTXRHaDdneVFNWjdxN0hUNWEzSTVOQ2hVZ1kxJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01NTlFWZXRSQTFzdXNRSVZBSVF5M0JTdEJqdng4OVdxOFRqcjdJRFAxUzhsQW9HQkFKNThlNFczVnFNeG03WngmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7WUoyeFo2S1gwWmUxMFduS1pEeVVSbitUOWlGSUZiS1JGRWxLRGVvdFh3d1h3WU9OOHlyZTNaUkdrQysyK2ZpVSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsyYmR6SVdUVDZMTWJJTVZiayswN1A0T1pPeEo2WFdMOUd1WWNPUWNOdlg0MnhoMzREUEhkcTRYZGxJdE1SMjVOJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0ErT2RaNFM4VlZycGI0amtqNGN5aXIxNjI4a2dBNEdFQUFLQmdISDJLWW9hUUVIbnFXelJVdURBRzBFWVhWNlEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NHVjQzY4TVJPWVNMNkdLcU5TL0FVRmJ2SDJOVXhRRDdhR250WWdZUHhpQ2NqOTRpMzhyZ1NXZzd5U1N6OTlNQSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtSL1l2N09TZCt1ZWozcjZUbFhVMzR1Kyt4WXZSbytzdjRtOWxiL2ptWHlaSktlQytkUHFlVTFJVDVrQ3liVVJMJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0lMWmZyWnlEc2lVL3ZodlZvem93T0RBT0JnTlZIUThCQWY4RUJBTUNCNEF3RVFZRFZSME9CQW9FQ0lhdFk3U0UmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bFhFT01CTUdBMVVkSXdRTU1BcUFDSU9HUGtCMk11S1RNQWtHQnlxR1NNNDRCQU1ETHdBd0xBSVVTdlQwMmlRaiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtRNWRhNFdwZTBCdnM3R3VDY1ZzQ0ZDRWNRcGJqVWZueFhGWE5XaUZ5UTQ5WnJXcW4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlDZXJ0aWZpY2F0ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUNlcnRpZmljYXRlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJRFN6Q0NBd3VnQXdJQkFnSUdBT3o0NmZ3Sk1Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUI0WERUQXlNRFF3TWpJeU5Ua3lOVm9YRFRFeU1EUXdNakl4TlRreU5Wb3diakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJQnR6Q0NBU3dHQnlxR1NNNDRCQUV3Z2dFZkFvR0JBTjNqbmdMNnB4TWhhVnZyazBvSzNZKzJDNDJrNUtjaCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDszbkNoU0tDN3ZFR1RaQmswQ05YSWlFd1I5SmFueUpIUWgwb3ZINGxBdHcwNnR5ZlJiQ1huK0dGYlF4ZXlhVkx4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzB6a0tyYXUyWU1laWd2RnNaTStxMEFzVHEreGRBS1RtSXZQY3kwYUh1REpBeG51cnNkUGxyY2prMEtGU0JqVXcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7dzFCVjYxRURXeTZ4QWhVQWhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VUNnWUVBbm54N2hiZFdvekdidG5GZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtuYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3pLdDdkbEVhUUw3YjUrSlRaJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O3QzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTThkMnJoZDJVaTB4SGJrMEQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBRGdZUUFBb0dBZmFnK0hDQUJJSmFkREQ5QWFyaGdjMlFSM0xwNyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtQcE1PaDBsQXdMaUlzdmtPNFVsYmVPUzBJSkM4YmNxTGpNMWZWdzZGR1NheG1xKzR5MWFnMm05azZJZEUwUWg1JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O054Qi94RmttZHdxWEZSSUpWcDQ0T2VVeWdCNDdZSzc2Tm1VSVlHM0RkZmlQUFUzYnF6anZ0T3RFVGlDSHZvMjUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NEQ2VWp3UHBZRXJYUlVhak5qQTBNQTRHQTFVZER3RUIvd1FFQXdJQ0JEQVBCZ05WSFJNRUNEQUdBUUgvQWdFQSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQkVHQTFVZERnUUtCQWlEaGo1QWRqTGlrekFKQmdjcWhrak9PQVFEQXk4QU1Dd0NGRUx1MG51d2VxVzdXZjBzJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2drL0NBR0dMMEJHS0FoUk5kZ1FHcjVpeVpLb0g0b3FQbTBWSjlUalhMZz09JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5Q2VydGlmaWNhdGUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlEYXRhJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0tleUluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2ZvbzpSb290Jmd0Ozwvc3Bhbj48L3ByZT48L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMjIudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0yMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdmYjZlNQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMjIudHh0CkBAIC0wLDAgKzEsOSBAQAorPGJhcjpTb21ldGhpbmc+CisgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICA8YmFyOlNvbWV0aGluZz4KKyAgICAgICAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICAgPGJhejpTb21ldGhpbmc+PC9iYXo6U29tZXRoaW5nPgorICAgICAgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgICAgIDwvYmFyOlNvbWV0aGluZz4KKyAgICAgPC9mb286U29tZXRoaW5nPgorICA8L2JhcjpTb21ldGhpbmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0yMy5odG1sIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0yMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyYjlkMzAKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTIzLmh0bWwKQEAgLTAsMCArMSw1NTcgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DYW5pbmljYWwgWE1MIG5vZGUgc2V0PC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cis8IS0tIAorLklOQ0xVREVEIHsgCisgICBjb2xvcjogIzAwMDAwMDsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IH0gCisuRVhDTFVERUQgeyAKKyAgIGNvbG9yOiAjNjY2NjY2OyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgIzk5OTk5OTsgfSAKKy5JTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCisuRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICM5OTk5OTk7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLS0+IAorPC9zdHlsZT4gCis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSIjOTk5OTk5Ij4KKzxoMT5FeHBsYW5hdGlvbiBvZiB0aGUgb3V0cHV0PC9oMT4KKzxwPlRoZSBmb2xsb3dpbmcgdGV4dCBjb250YWlucyB0aGUgbm9kZXNldCBvZiB0aGUgZ2l2ZW4gUmVmZXJlbmNlIGJlZm9yZSBpdCBpcyBjYW5vbmljYWxpemVkLiBUaGVyZSBleGlzdCBmb3VyIGRpZmZlcmVudCBzdHlsZXMgdG8gaW5kaWNhdGUgaG93IGEgZ2l2ZW4gbm9kZSBpcyB0cmVhdGVkLjwvcD4KKzx1bD4KKzxsaSBjbGFzcz0iSU5DTFVERUQiPkEgbm9kZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERUQiPkEgbm9kZSB3aGljaCBpcyA8ZW0+Tk9UPC9lbT4gaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgRVhDTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gTk9UIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPC91bD4KKzxoMT5PdXRwdXQ8L2gxPgorPHByZT4KKzxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2ZvbzpSb290PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWw6bGFuZz0iZW4taWUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtiYXI6U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7Zm9vOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2JhcjpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtmb286U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2JhejpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvYmF6OlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2ZvbzpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9iYXI6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvZm9vOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2JhcjpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduZWRJbmZvPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWw6bGFuZz0iZW4taWUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0Nhbm9uaWNhbGl6YXRpb25NZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvQ2Fub25pY2FsaXphdGlvbk1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmVNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZU1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5sQ09TL0p0cG1PRSs0ZVhGYU9wWTR2NEJPZ0k9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5PeVZxRVdYRTdDKzVOeUt0Y2VVa2RtaUZPOUE9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5PeVZxRVdYRTdDKzVOeUt0Y2VVa2RtaUZPOUE9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm90Jm1pZGRvdDsoc2VsZjo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5tTDFhQVEvUm9PUE8wU0hqOUtSK3lZM240Q009PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmJRZ0Y4SUN5bVlaVHVVUDBGRTQwbDNRN0Jaaz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+YlFnRjhJQ3ltWVpUdVVQMEZFNDBsM1E3QlprPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90Oz0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPklKUWdkNTlGSjFQQXh4Q1k1bUlMNmNaZW1pMD08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+U1hHaWpPMWVBckVhWEdwaEYwZHh3ajVmcDFnPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+ck5tNElkOWFoMTJudWd6WEFVSmdqYXM3bHMwPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm90Jm1pZGRvdDsoc2VsZjo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPnVPUUpRSUlVRVRZeWswK1lFQmRiRVF3cllidz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90Oz0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+QVd0cURiWFdLZjhUVjc4QzJkMTZ1YXJicEdrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm90Jm1pZGRvdDsoc2VsZjo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+dU9RSlFJSVVFVFl5azArWUVCZGJFUXdyWWJ3PTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90Oz0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5OcGpNUHpFRjVZWkZiejRsczdlTjM2UVdkWHM9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+RWFjQk4yYUJCTlNqcENPelpVT092U3Y0ekhVPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduZWRJbmZvJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlVmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RngzNFZjMDdmWGFjNnFtc2hoaExlOG9nakVsU21DNll4VG5oeGo4d01UU2tmdnhZK3dZdHJRPT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmVWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0tleUluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0tleVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RFNBS2V5VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDszZU9lQXZxbkV5RnBXK3VUU2dyZGo3WUxqYVRrcHlIZWNLRklvTHU4UVpOa0dUUUkxY2lJVEJIMGxxZklrZENIJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtTaThmaVVDM0RUcTNKOUZzSmVmNFlWdERGN0pwVXZIVE9RcXRxN1pneDZLQzhXeGt6NnJRQ3hPcjdGMEFwT1lpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4OXpMUm9lNE1rREdlNnV4MCtXdHlPVFFvVklHTlRERFVGWHJVUU5iTHJFPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1AmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtRPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5oRExjRkswR08vSHoxYXJ4T092c2dNL1ZMeVU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9RJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Rzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtubng3aGJkV296R2J0bkZnbmJGbm9wZlJsN1hSYWNwa1BKUkdmNVAySVVnVnNwRVVTVW9ONmkxZkRCZkJnNDN6JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtLdDdkbEVhUUw3YjUrSlRadDNNaFpOUG9zeHNneFZ1VDdUcy9nNWs3RW5wZFl2MGE1aHc1QncyOWZqYkdIZmdNJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4ZDJyaGQyVWkweEhiazBENDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0cmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtZPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NmWXBpaHBBUWVlcGJORlM0TUFiUVJoZFhwRGk1d0xyd3hFNWhJdm9ZcW8xTDhCUVZ1OGZZMVRGQVB0b2FlMWkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0JnL0dJSnlQM2lMZnl1QkphRHZKSkxQMzB3Qkg5aS9zNUozNjU2UGV2cE9WZFRmaTc3N0ZpOUdqNnkvaWIyVnYmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OytPWmZKa2twNEw1MCtwNVRVaFBtUUxKdFJFc2d0bCt0bklPeUpUKytHOVU9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RTQUtleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9LZXlWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5RGF0YTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlTdWJqZWN0TmFtZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0NOPU1lcmxpbiZtaWRkb3Q7SHVnaGVzLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlJm1pZGRvdDtUZWNobm9sb2dpZXMmbWlkZG90O0x0ZC4sU1Q9RHVibGluLEM9SUUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlTdWJqZWN0TmFtZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUlzc3VlclNlcmlhbDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5SXNzdWVyTmFtZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtDTj1UcmFuc2llbnQmbWlkZG90O0NBLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlJm1pZGRvdDtUZWNobm9sb2dpZXMmbWlkZG90O0x0ZC4sU1Q9RHVibGluLEM9SUUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5SXNzdWVyTmFtZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlTZXJpYWxOdW1iZXI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjEwMTc3ODgzNzAzNDg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlTZXJpYWxOdW1iZXImZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5SXNzdWVyU2VyaWFsJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5Q2VydGlmaWNhdGU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNSUlEVURDQ0F4Q2dBd0lCQWdJR0FPejQ2ZzJzTUFrR0J5cUdTTTQ0QkFNd2JqRUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQjRYRFRBeU1EUXdNakl5TlRrek1Gb1hEVEV5TURRd01qSXhOVGt5TlZvd2J6RUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVXTUJRR0ExVUVBeE1OVFdWeWJHbHVJRWgxWjJobCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjekNDQWJjd2dnRXNCZ2NxaGtqT09BUUJNSUlCSHdLQmdRRGQ0NTRDK3FjVElXbGI2NU5LQ3QyUHRndU5wT1NuJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0lkNXdvVWlndTd4QmsyUVpOQWpWeUloTUVmU1dwOGlSMElkS0x4K0pRTGNOT3JjbjBXd2w1L2hoVzBNWHNtbFMmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7OGRNNUNxMnJ0bURIb29MeGJHVFBxdEFMRTZ2c1hRQ2s1aUx6M010R2g3Z3lRTVo3cTdIVDVhM0k1TkNoVWdZMSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNTU5RVmV0UkExc3VzUUlWQUlReTNCU3RCanZ4ODlXcThUanI3SURQMVM4bEFvR0JBSjU4ZTRXM1ZxTXhtN1p4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1lKMnhaNktYMFplMTBXbktaRHlVUm4rVDlpRklGYktSRkVsS0Rlb3RYd3dYd1lPTjh5cmUzWlJHa0MrMitmaVUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7MmJkeklXVFQ2TE1iSU1WYmsrMDdQNE9aT3hKNlhXTDlHdVljT1FjTnZYNDJ4aDM0RFBIZHE0WGRsSXRNUjI1TiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtBK09kWjRTOFZWcnBiNGprajRjeWlyMTYyOGtnQTRHRUFBS0JnSEgyS1lvYVFFSG5xV3pSVXVEQUcwRVlYVjZRJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzR1Y0M2OE1ST1lTTDZHS3FOUy9BVUZidkgyTlV4UUQ3YUdudFlnWVB4aUNjajk0aTM4cmdTV2c3eVNTejk5TUEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Ui9ZdjdPU2QrdWVqM3I2VGxYVTM0dSsreFl2Um8rc3Y0bTlsYi9qbVh5WkpLZUMrZFBxZVUxSVQ1a0N5YlVSTCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtJTFpmclp5RHNpVS92aHZWb3pvd09EQU9CZ05WSFE4QkFmOEVCQU1DQjRBd0VRWURWUjBPQkFvRUNJYXRZN1NFJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2xYRU9NQk1HQTFVZEl3UU1NQXFBQ0lPR1BrQjJNdUtUTUFrR0J5cUdTTTQ0QkFNREx3QXdMQUlVU3ZUMDJpUWomcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7UTVkYTRXcGUwQnZzN0d1Q2NWc0NGQ0VjUXBialVmbnhYRlhOV2lGeVE0OVpyV3FuJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5Q2VydGlmaWNhdGUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlDZXJ0aWZpY2F0ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSURTekNDQXd1Z0F3SUJBZ0lHQU96NDZmd0pNQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CNFhEVEF5TURRd01qSXlOVGt5TlZvWERURXlNRFF3TWpJeE5Ua3lOVm93YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSUJ0ekNDQVN3R0J5cUdTTTQ0QkFFd2dnRWZBb0dCQU4zam5nTDZweE1oYVZ2cmswb0szWSsyQzQyazVLY2gmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7M25DaFNLQzd2RUdUWkJrMENOWElpRXdSOUphbnlKSFFoMG92SDRsQXR3MDZ0eWZSYkNYbitHRmJReGV5YVZMeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDswemtLcmF1MllNZWlndkZzWk0rcTBBc1RxK3hkQUtUbUl2UGN5MGFIdURKQXhudXJzZFBscmNqazBLRlNCalV3JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O3cxQlY2MUVEV3k2eEFoVUFoRExjRkswR08vSHoxYXJ4T092c2dNL1ZMeVVDZ1lFQW5ueDdoYmRXb3pHYnRuRmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bmJGbm9wZlJsN1hSYWNwa1BKUkdmNVAySVVnVnNwRVVTVW9ONmkxZkRCZkJnNDN6S3Q3ZGxFYVFMN2I1K0pUWiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDt0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ004ZDJyaGQyVWkweEhiazBEJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzQ1MW5oTHhWV3VsdmlPU1BoektLdlhyYnlTQURnWVFBQW9HQWZhZytIQ0FCSUphZEREOUFhcmhnYzJRUjNMcDcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7UHBNT2gwbEF3TGlJc3ZrTzRVbGJlT1MwSUpDOGJjcUxqTTFmVnc2RkdTYXhtcSs0eTFhZzJtOWs2SWRFMFFoNSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtOeEIveEZrbWR3cVhGUklKVnA0NE9lVXlnQjQ3WUs3Nk5tVUlZRzNEZGZpUFBVM2Jxemp2dE90RVRpQ0h2bzI1JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzRENlVqd1BwWUVyWFJVYWpOakEwTUE0R0ExVWREd0VCL3dRRUF3SUNCREFQQmdOVkhSTUVDREFHQVFIL0FnRUEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUJFR0ExVWREZ1FLQkFpRGhqNUFkakxpa3pBSkJnY3Foa2pPT0FRREF5OEFNQ3dDRkVMdTBudXdlcVc3V2YwcyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtnay9DQUdHTDBCR0tBaFJOZGdRR3I1aXlaS29ING9xUG0wVko5VGpYTGc9PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUNlcnRpZmljYXRlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5RGF0YSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9LZXlJbmZvJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9mb286Um9vdCZndDs8L3NwYW4+PC9wcmU+PC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTIzLnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMjMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3ZmI2ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTIzLnR4dApAQCAtMCwwICsxLDkgQEAKKzxiYXI6U29tZXRoaW5nPgorICAgICA8Zm9vOlNvbWV0aGluZz4KKyAgICAgICAgPGJhcjpTb21ldGhpbmc+CisgICAgICAgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICAgICAgIDxiYXo6U29tZXRoaW5nPjwvYmF6OlNvbWV0aGluZz4KKyAgICAgICAgICAgPC9mb286U29tZXRoaW5nPgorICAgICAgICA8L2JhcjpTb21ldGhpbmc+CisgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgPC9iYXI6U29tZXRoaW5nPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMjQuaHRtbCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMjQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmRjNTZjCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0yNC5odG1sCkBAIC0wLDAgKzEsNTU3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q2FuaW5pY2FsIFhNTCBub2RlIHNldDwvdGl0bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorPCEtLSAKKy5JTkNMVURFRCB7IAorICAgY29sb3I6ICMwMDAwMDA7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyB9IAorLkVYQ0xVREVEIHsgCisgICBjb2xvcjogIzY2NjY2NjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICM5OTk5OTk7IH0gCisuSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5OTk5OyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy0tPiAKKzwvc3R5bGU+IAorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0iIzk5OTk5OSI+Cis8aDE+RXhwbGFuYXRpb24gb2YgdGhlIG91dHB1dDwvaDE+Cis8cD5UaGUgZm9sbG93aW5nIHRleHQgY29udGFpbnMgdGhlIG5vZGVzZXQgb2YgdGhlIGdpdmVuIFJlZmVyZW5jZSBiZWZvcmUgaXQgaXMgY2Fub25pY2FsaXplZC4gVGhlcmUgZXhpc3QgZm91ciBkaWZmZXJlbnQgc3R5bGVzIHRvIGluZGljYXRlIGhvdyBhIGdpdmVuIG5vZGUgaXMgdHJlYXRlZC48L3A+Cis8dWw+Cis8bGkgY2xhc3M9IklOQ0xVREVEIj5BIG5vZGUgd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVEIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVEIj5BIG5vZGUgd2hpY2ggaXMgPGVtPk5PVDwvZW0+IGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIEVYQ0xVREVEIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgQU5EIGluIHRoZSBJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3QgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0Ugc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIE5PVCB0aGUgbm9kZSBzZXQgQU5EIGluIHRoZSBJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3QgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0Ugc3R5bGUuPC9saT4KKzwvdWw+Cis8aDE+T3V0cHV0PC9oMT4KKzxwcmU+Cis8c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtmb286Um9vdDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sOmxhbmc9ImVuLWllIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7YmFyOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2ZvbzpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtiYXI6U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Zm9vOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtiYXo6U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2JhejpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9mb286U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvYmFyOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2ZvbzpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9iYXI6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmVkSW5mbzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sOmxhbmc9ImVuLWllIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtDYW5vbmljYWxpemF0aW9uTWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0Nhbm9uaWNhbGl6YXRpb25NZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlTWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmVNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+bENPUy9KdHBtT0UrNGVYRmFPcFk0djRCT2dJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+T3lWcUVXWEU3Qys1TnlLdGNlVWtkbWlGTzlBPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+T3lWcUVXWEU3Qys1TnlLdGNlVWtkbWlGTzlBPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25vdCZtaWRkb3Q7KHNlbGY6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+bUwxYUFRL1JvT1BPMFNIajlLUit5WTNuNENNPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5iUWdGOElDeW1ZWlR1VVAwRkU0MGwzUTdCWms9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmJRZ0Y4SUN5bVlaVHVVUDBGRTQwbDNRN0Jaaz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDs9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5JSlFnZDU5RkoxUEF4eENZNW1JTDZjWmVtaTA9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPlNYR2lqTzFlQXJFYVhHcGhGMGR4d2o1ZnAxZz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPnJObTRJZDlhaDEybnVnelhBVUpnamFzN2xzMD08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25vdCZtaWRkb3Q7KHNlbGY6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj51T1FKUUlJVUVUWXlrMCtZRUJkYkVRd3JZYnc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDs9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPkFXdHFEYlhXS2Y4VFY3OEMyZDE2dWFyYnBHaz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25vdCZtaWRkb3Q7KHNlbGY6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPnVPUUpRSUlVRVRZeWswK1lFQmRiRVF3cllidz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDs9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+TnBqTVB6RUY1WVpGYno0bHM3ZU4zNlFXZFhzPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPkVhY0JOMmFCQk5TanBDT3paVU9PdlN2NHpIVT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmVkSW5mbyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0Z4MzRWYzA3ZlhhYzZxbXNoaGhMZThvZ2pFbFNtQzZZeFRuaHhqOHdNVFNrZnZ4WSt3WXRyUT09JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlVmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtLZXlJbmZvPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtLZXlWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RTQUtleVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1A8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7M2VPZUF2cW5FeUZwVyt1VFNncmRqN1lMamFUa3B5SGVjS0ZJb0x1OFFaTmtHVFFJMWNpSVRCSDBscWZJa2RDSCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7U2k4ZmlVQzNEVHEzSjlGc0plZjRZVnRERjdKcFV2SFRPUXF0cTdaZ3g2S0M4V3hrejZyUUN4T3I3RjBBcE9ZaSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7ODl6TFJvZTRNa0RHZTZ1eDArV3R5T1RRb1ZJR05URERVRlhyVVFOYkxyRT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9QJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+aERMY0ZLMEdPL0h6MWFyeE9PdnNnTS9WTHlVPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0c8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm54N2hiZFdvekdidG5GZ25iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzeiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7S3Q3ZGxFYVFMN2I1K0pUWnQzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7OGQycmhkMlVpMHhIYmswRDQ1MW5oTHhWV3VsdmlPU1BoektLdlhyYnlTQT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9HJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjZllwaWhwQVFlZXBiTkZTNE1BYlFSaGRYcERpNXdMcnd4RTVoSXZvWXFvMUw4QlFWdThmWTFURkFQdG9hZTFpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtCZy9HSUp5UDNpTGZ5dUJKYUR2SkpMUDMwd0JIOWkvczVKMzY1NlBldnBPVmRUZmk3NzdGaTlHajZ5L2liMlZ2JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsrT1pmSmtrcDRMNTArcDVUVWhQbVFMSnRSRXNndGwrdG5JT3lKVCsrRzlVPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1kmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EU0FLZXlWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvS2V5VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOURhdGE8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5U3ViamVjdE5hbWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtDTj1NZXJsaW4mbWlkZG90O0h1Z2hlcyxPVT1YL1NlY3VyZSxPPUJhbHRpbW9yZSZtaWRkb3Q7VGVjaG5vbG9naWVzJm1pZGRvdDtMdGQuLFNUPUR1YmxpbixDPUlFJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5U3ViamVjdE5hbWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlJc3N1ZXJTZXJpYWw8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUlzc3Vlck5hbWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Q049VHJhbnNpZW50Jm1pZGRvdDtDQSxPVT1YL1NlY3VyZSxPPUJhbHRpbW9yZSZtaWRkb3Q7VGVjaG5vbG9naWVzJm1pZGRvdDtMdGQuLFNUPUR1YmxpbixDPUlFJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUlzc3Vlck5hbWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5U2VyaWFsTnVtYmVyPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4xMDE3Nzg4MzcwMzQ4PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5U2VyaWFsTnVtYmVyJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUlzc3VlclNlcmlhbCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUNlcnRpZmljYXRlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJRFVEQ0NBeENnQXdJQkFnSUdBT3o0Nmcyc01Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUI0WERUQXlNRFF3TWpJeU5Ua3pNRm9YRFRFeU1EUXdNakl4TlRreU5Wb3diekVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFV01CUUdBMVVFQXhNTlRXVnliR2x1SUVoMVoyaGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3pDQ0FiY3dnZ0VzQmdjcWhrak9PQVFCTUlJQkh3S0JnUURkNDU0QytxY1RJV2xiNjVOS0N0MlB0Z3VOcE9TbiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtJZDV3b1VpZ3U3eEJrMlFaTkFqVnlJaE1FZlNXcDhpUjBJZEtMeCtKUUxjTk9yY24wV3dsNS9oaFcwTVhzbWxTJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzhkTTVDcTJydG1ESG9vTHhiR1RQcXRBTEU2dnNYUUNrNWlMejNNdEdoN2d5UU1aN3E3SFQ1YTNJNU5DaFVnWTEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TU1OUVZldFJBMXN1c1FJVkFJUXkzQlN0Qmp2eDg5V3E4VGpyN0lEUDFTOGxBb0dCQUo1OGU0VzNWcU14bTdaeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtZSjJ4WjZLWDBaZTEwV25LWkR5VVJuK1Q5aUZJRmJLUkZFbEtEZW90WHd3WHdZT044eXJlM1pSR2tDKzIrZmlVJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzJiZHpJV1RUNkxNYklNVmJrKzA3UDRPWk94SjZYV0w5R3VZY09RY052WDQyeGgzNERQSGRxNFhkbEl0TVIyNU4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7QStPZFo0UzhWVnJwYjRqa2o0Y3lpcjE2MjhrZ0E0R0VBQUtCZ0hIMktZb2FRRUhucVd6UlV1REFHMEVZWFY2USZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs0dWNDNjhNUk9ZU0w2R0txTlMvQVVGYnZIMk5VeFFEN2FHbnRZZ1lQeGlDY2o5NGkzOHJnU1dnN3lTU3o5OU1BJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1IvWXY3T1NkK3VlajNyNlRsWFUzNHUrK3hZdlJvK3N2NG05bGIvam1YeVpKS2VDK2RQcWVVMUlUNWtDeWJVUkwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7SUxaZnJaeURzaVUvdmh2Vm96b3dPREFPQmdOVkhROEJBZjhFQkFNQ0I0QXdFUVlEVlIwT0JBb0VDSWF0WTdTRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtsWEVPTUJNR0ExVWRJd1FNTUFxQUNJT0dQa0IyTXVLVE1Ba0dCeXFHU000NEJBTURMd0F3TEFJVVN2VDAyaVFqJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1E1ZGE0V3BlMEJ2czdHdUNjVnNDRkNFY1FwYmpVZm54WEZYTldpRnlRNDlacldxbiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUNlcnRpZmljYXRlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5Q2VydGlmaWNhdGU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNSUlEU3pDQ0F3dWdBd0lCQWdJR0FPejQ2ZndKTUFrR0J5cUdTTTQ0QkFNd2JqRUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQjRYRFRBeU1EUXdNakl5TlRreU5Wb1hEVEV5TURRd01qSXhOVGt5TlZvd2JqRUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNSUlCdHpDQ0FTd0dCeXFHU000NEJBRXdnZ0VmQW9HQkFOM2puZ0w2cHhNaGFWdnJrMG9LM1krMkM0Mms1S2NoJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzNuQ2hTS0M3dkVHVFpCazBDTlhJaUV3UjlKYW55SkhRaDBvdkg0bEF0dzA2dHlmUmJDWG4rR0ZiUXhleWFWTHgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7MHprS3JhdTJZTWVpZ3ZGc1pNK3EwQXNUcSt4ZEFLVG1JdlBjeTBhSHVESkF4bnVyc2RQbHJjamswS0ZTQmpVdyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDt3MUJWNjFFRFd5NnhBaFVBaERMY0ZLMEdPL0h6MWFyeE9PdnNnTS9WTHlVQ2dZRUFubng3aGJkV296R2J0bkZnJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzekt0N2RsRWFRTDdiNStKVFomcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7dDNNaFpOUG9zeHNneFZ1VDdUcy9nNWs3RW5wZFl2MGE1aHc1QncyOWZqYkdIZmdNOGQycmhkMlVpMHhIYmswRCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs0NTFuaEx4Vld1bHZpT1NQaHpLS3ZYcmJ5U0FEZ1lRQUFvR0FmYWcrSENBQklKYWRERDlBYXJoZ2MyUVIzTHA3JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1BwTU9oMGxBd0xpSXN2a080VWxiZU9TMElKQzhiY3FMak0xZlZ3NkZHU2F4bXErNHkxYWcybTlrNklkRTBRaDUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TnhCL3hGa21kd3FYRlJJSlZwNDRPZVV5Z0I0N1lLNzZObVVJWUczRGRmaVBQVTNicXpqdnRPdEVUaUNIdm8yNSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs0RDZVandQcFlFclhSVWFqTmpBME1BNEdBMVVkRHdFQi93UUVBd0lDQkRBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CRUdBMVVkRGdRS0JBaURoajVBZGpMaWt6QUpCZ2NxaGtqT09BUURBeThBTUN3Q0ZFTHUwbnV3ZXFXN1dmMHMmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Z2svQ0FHR0wwQkdLQWhSTmRnUUdyNWl5WktvSDRvcVBtMFZKOVRqWExnPT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlDZXJ0aWZpY2F0ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOURhdGEmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvS2V5SW5mbyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZm9vOlJvb3QmZ3Q7PC9zcGFuPjwvcHJlPjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0yNC50eHQgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTI0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjJjNzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0yNC50eHQKQEAgLTAsMCArMSBAQAorIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyIgeG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTI1Lmh0bWwgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTI1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFiODEwZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMjUuaHRtbApAQCAtMCwwICsxLDU1NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNhbmluaWNhbCBYTUwgbm9kZSBzZXQ8L3RpdGxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKzwhLS0gCisuSU5DTFVERUQgeyAKKyAgIGNvbG9yOiAjMDAwMDAwOyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgfSAKKy5FWENMVURFRCB7IAorICAgY29sb3I6ICM2NjY2NjY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjOTk5OTk5OyB9IAorLklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy5FWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogIzk5OTk5OTsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCistLT4gCis8L3N0eWxlPiAKKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IiM5OTk5OTkiPgorPGgxPkV4cGxhbmF0aW9uIG9mIHRoZSBvdXRwdXQ8L2gxPgorPHA+VGhlIGZvbGxvd2luZyB0ZXh0IGNvbnRhaW5zIHRoZSBub2Rlc2V0IG9mIHRoZSBnaXZlbiBSZWZlcmVuY2UgYmVmb3JlIGl0IGlzIGNhbm9uaWNhbGl6ZWQuIFRoZXJlIGV4aXN0IGZvdXIgZGlmZmVyZW50IHN0eWxlcyB0byBpbmRpY2F0ZSBob3cgYSBnaXZlbiBub2RlIGlzIHRyZWF0ZWQuPC9wPgorPHVsPgorPGxpIGNsYXNzPSJJTkNMVURFRCI+QSBub2RlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRCI+QSBub2RlIHdoaWNoIGlzIDxlbT5OT1Q8L2VtPiBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCBFWENMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiBOT1QgdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8L3VsPgorPGgxPk91dHB1dDwvaDE+Cis8cHJlPgorPHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Zm9vOlJvb3Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpsYW5nPSJlbi1pZSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2JhcjpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtmb286U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7YmFyOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2ZvbzpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7YmF6OlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9iYXo6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZm9vOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2JhcjpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9mb286U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvYmFyOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25lZEluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpsYW5nPSJlbi1pZSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Q2Fub25pY2FsaXphdGlvbk1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9DYW5vbmljYWxpemF0aW9uTWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZU1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlTWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmxDT1MvSnRwbU9FKzRlWEZhT3BZNHY0Qk9nST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk95VnFFV1hFN0MrNU55S3RjZVVrZG1pRk85QT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk95VnFFV1hFN0MrNU55S3RjZVVrZG1pRk85QT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPm1MMWFBUS9Sb09QTzBTSGo5S1IreVkzbjRDTT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+YlFnRjhJQ3ltWVpUdVVQMEZFNDBsM1E3QlprPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5iUWdGOElDeW1ZWlR1VVAwRkU0MGwzUTdCWms9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+SUpRZ2Q1OUZKMVBBeHhDWTVtSUw2Y1plbWkwPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5TWEdpak8xZUFyRWFYR3BoRjBkeHdqNWZwMWc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5yTm00SWQ5YWgxMm51Z3pYQVVKZ2phczdsczA9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+dU9RSlFJSVVFVFl5azArWUVCZGJFUXdyWWJ3PTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5BV3RxRGJYV0tmOFRWNzhDMmQxNnVhcmJwR2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj51T1FKUUlJVUVUWXlrMCtZRUJkYkVRd3JZYnc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk5wak1QekVGNVlaRmJ6NGxzN2VOMzZRV2RYcz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5FYWNCTjJhQkJOU2pwQ096WlVPT3ZTdjR6SFU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25lZEluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmVWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtGeDM0VmMwN2ZYYWM2cW1zaGhoTGU4b2dqRWxTbUM2WXhUbmh4ajh3TVRTa2Z2eFkrd1l0clE9PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5SW5mbzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEU0FLZXlWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtQPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzNlT2VBdnFuRXlGcFcrdVRTZ3JkajdZTGphVGtweUhlY0tGSW9MdThRWk5rR1RRSTFjaUlUQkgwbHFmSWtkQ0gmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1NpOGZpVUMzRFRxM0o5RnNKZWY0WVZ0REY3SnBVdkhUT1FxdHE3Wmd4NktDOFd4a3o2clFDeE9yN0YwQXBPWWkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozg5ekxSb2U0TWtER2U2dXgwK1d0eU9UUW9WSUdOVEREVUZYclVRTmJMckU9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1E8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1EmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtHPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25ueDdoYmRXb3pHYnRuRmduYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3omcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0t0N2RsRWFRTDdiNStKVFp0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ00mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzhkMnJoZDJVaTB4SGJrMEQ0NTFuaEx4Vld1bHZpT1NQaHpLS3ZYcmJ5U0E9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1k8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y2ZZcGlocEFRZWVwYk5GUzRNQWJRUmhkWHBEaTV3THJ3eEU1aEl2b1lxbzFMOEJRVnU4ZlkxVEZBUHRvYWUxaSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7QmcvR0lKeVAzaUxmeXVCSmFEdkpKTFAzMHdCSDlpL3M1SjM2NTZQZXZwT1ZkVGZpNzc3Rmk5R2o2eS9pYjJWdiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7K09aZkpra3A0TDUwK3A1VFVoUG1RTEp0UkVzZ3RsK3RuSU95SlQrK0c5VT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9ZJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRFNBS2V5VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0tleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlEYXRhPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOVN1YmplY3ROYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Q049TWVybGluJm1pZGRvdDtIdWdoZXMsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUmbWlkZG90O1RlY2hub2xvZ2llcyZtaWRkb3Q7THRkLixTVD1EdWJsaW4sQz1JRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOVN1YmplY3ROYW1lJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5SXNzdWVyU2VyaWFsPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlJc3N1ZXJOYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0NOPVRyYW5zaWVudCZtaWRkb3Q7Q0EsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUmbWlkZG90O1RlY2hub2xvZ2llcyZtaWRkb3Q7THRkLixTVD1EdWJsaW4sQz1JRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlJc3N1ZXJOYW1lJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOVNlcmlhbE51bWJlcjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MTAxNzc4ODM3MDM0ODwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOVNlcmlhbE51bWJlciZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlJc3N1ZXJTZXJpYWwmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlDZXJ0aWZpY2F0ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSURVRENDQXhDZ0F3SUJBZ0lHQU96NDZnMnNNQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CNFhEVEF5TURRd01qSXlOVGt6TUZvWERURXlNRFF3TWpJeE5Ua3lOVm93YnpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVdNQlFHQTFVRUF4TU5UV1Z5YkdsdUlFaDFaMmhsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N6Q0NBYmN3Z2dFc0JnY3Foa2pPT0FRQk1JSUJId0tCZ1FEZDQ1NEMrcWNUSVdsYjY1TktDdDJQdGd1TnBPU24mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7SWQ1d29VaWd1N3hCazJRWk5BalZ5SWhNRWZTV3A4aVIwSWRLTHgrSlFMY05PcmNuMFd3bDUvaGhXME1Yc21sUyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4ZE01Q3EycnRtREhvb0x4YkdUUHF0QUxFNnZzWFFDazVpTHozTXRHaDdneVFNWjdxN0hUNWEzSTVOQ2hVZ1kxJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01NTlFWZXRSQTFzdXNRSVZBSVF5M0JTdEJqdng4OVdxOFRqcjdJRFAxUzhsQW9HQkFKNThlNFczVnFNeG03WngmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7WUoyeFo2S1gwWmUxMFduS1pEeVVSbitUOWlGSUZiS1JGRWxLRGVvdFh3d1h3WU9OOHlyZTNaUkdrQysyK2ZpVSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsyYmR6SVdUVDZMTWJJTVZiayswN1A0T1pPeEo2WFdMOUd1WWNPUWNOdlg0MnhoMzREUEhkcTRYZGxJdE1SMjVOJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0ErT2RaNFM4VlZycGI0amtqNGN5aXIxNjI4a2dBNEdFQUFLQmdISDJLWW9hUUVIbnFXelJVdURBRzBFWVhWNlEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NHVjQzY4TVJPWVNMNkdLcU5TL0FVRmJ2SDJOVXhRRDdhR250WWdZUHhpQ2NqOTRpMzhyZ1NXZzd5U1N6OTlNQSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtSL1l2N09TZCt1ZWozcjZUbFhVMzR1Kyt4WXZSbytzdjRtOWxiL2ptWHlaSktlQytkUHFlVTFJVDVrQ3liVVJMJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0lMWmZyWnlEc2lVL3ZodlZvem93T0RBT0JnTlZIUThCQWY4RUJBTUNCNEF3RVFZRFZSME9CQW9FQ0lhdFk3U0UmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bFhFT01CTUdBMVVkSXdRTU1BcUFDSU9HUGtCMk11S1RNQWtHQnlxR1NNNDRCQU1ETHdBd0xBSVVTdlQwMmlRaiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtRNWRhNFdwZTBCdnM3R3VDY1ZzQ0ZDRWNRcGJqVWZueFhGWE5XaUZ5UTQ5WnJXcW4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlDZXJ0aWZpY2F0ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUNlcnRpZmljYXRlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJRFN6Q0NBd3VnQXdJQkFnSUdBT3o0NmZ3Sk1Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUI0WERUQXlNRFF3TWpJeU5Ua3lOVm9YRFRFeU1EUXdNakl4TlRreU5Wb3diakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJQnR6Q0NBU3dHQnlxR1NNNDRCQUV3Z2dFZkFvR0JBTjNqbmdMNnB4TWhhVnZyazBvSzNZKzJDNDJrNUtjaCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDszbkNoU0tDN3ZFR1RaQmswQ05YSWlFd1I5SmFueUpIUWgwb3ZINGxBdHcwNnR5ZlJiQ1huK0dGYlF4ZXlhVkx4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzB6a0tyYXUyWU1laWd2RnNaTStxMEFzVHEreGRBS1RtSXZQY3kwYUh1REpBeG51cnNkUGxyY2prMEtGU0JqVXcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7dzFCVjYxRURXeTZ4QWhVQWhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VUNnWUVBbm54N2hiZFdvekdidG5GZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtuYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3pLdDdkbEVhUUw3YjUrSlRaJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O3QzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTThkMnJoZDJVaTB4SGJrMEQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBRGdZUUFBb0dBZmFnK0hDQUJJSmFkREQ5QWFyaGdjMlFSM0xwNyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtQcE1PaDBsQXdMaUlzdmtPNFVsYmVPUzBJSkM4YmNxTGpNMWZWdzZGR1NheG1xKzR5MWFnMm05azZJZEUwUWg1JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O054Qi94RmttZHdxWEZSSUpWcDQ0T2VVeWdCNDdZSzc2Tm1VSVlHM0RkZmlQUFUzYnF6anZ0T3RFVGlDSHZvMjUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NEQ2VWp3UHBZRXJYUlVhak5qQTBNQTRHQTFVZER3RUIvd1FFQXdJQ0JEQVBCZ05WSFJNRUNEQUdBUUgvQWdFQSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQkVHQTFVZERnUUtCQWlEaGo1QWRqTGlrekFKQmdjcWhrak9PQVFEQXk4QU1Dd0NGRUx1MG51d2VxVzdXZjBzJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2drL0NBR0dMMEJHS0FoUk5kZ1FHcjVpeVpLb0g0b3FQbTBWSjlUalhMZz09JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5Q2VydGlmaWNhdGUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlEYXRhJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0tleUluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2ZvbzpSb290Jmd0Ozwvc3Bhbj48L3ByZT48L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMjUudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0yNS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMjUudHh0CmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTI2Lmh0bWwgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTI2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI2ZmQ4NAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMjYuaHRtbApAQCAtMCwwICsxLDU1NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNhbmluaWNhbCBYTUwgbm9kZSBzZXQ8L3RpdGxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKzwhLS0gCisuSU5DTFVERUQgeyAKKyAgIGNvbG9yOiAjMDAwMDAwOyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgfSAKKy5FWENMVURFRCB7IAorICAgY29sb3I6ICM2NjY2NjY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjOTk5OTk5OyB9IAorLklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy5FWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogIzk5OTk5OTsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCistLT4gCis8L3N0eWxlPiAKKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IiM5OTk5OTkiPgorPGgxPkV4cGxhbmF0aW9uIG9mIHRoZSBvdXRwdXQ8L2gxPgorPHA+VGhlIGZvbGxvd2luZyB0ZXh0IGNvbnRhaW5zIHRoZSBub2Rlc2V0IG9mIHRoZSBnaXZlbiBSZWZlcmVuY2UgYmVmb3JlIGl0IGlzIGNhbm9uaWNhbGl6ZWQuIFRoZXJlIGV4aXN0IGZvdXIgZGlmZmVyZW50IHN0eWxlcyB0byBpbmRpY2F0ZSBob3cgYSBnaXZlbiBub2RlIGlzIHRyZWF0ZWQuPC9wPgorPHVsPgorPGxpIGNsYXNzPSJJTkNMVURFRCI+QSBub2RlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRCI+QSBub2RlIHdoaWNoIGlzIDxlbT5OT1Q8L2VtPiBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCBFWENMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiBOT1QgdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8L3VsPgorPGgxPk91dHB1dDwvaDE+Cis8cHJlPgorPHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Zm9vOlJvb3Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpsYW5nPSJlbi1pZSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2JhcjpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtmb286U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7YmFyOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2ZvbzpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7YmF6OlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9iYXo6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvZm9vOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2JhcjpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9mb286U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvYmFyOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25lZEluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpsYW5nPSJlbi1pZSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Q2Fub25pY2FsaXphdGlvbk1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9DYW5vbmljYWxpemF0aW9uTWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZU1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlTWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmxDT1MvSnRwbU9FKzRlWEZhT3BZNHY0Qk9nST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk95VnFFV1hFN0MrNU55S3RjZVVrZG1pRk85QT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk95VnFFV1hFN0MrNU55S3RjZVVrZG1pRk85QT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPm1MMWFBUS9Sb09QTzBTSGo5S1IreVkzbjRDTT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+YlFnRjhJQ3ltWVpUdVVQMEZFNDBsM1E3QlprPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5iUWdGOElDeW1ZWlR1VVAwRkU0MGwzUTdCWms9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+SUpRZ2Q1OUZKMVBBeHhDWTVtSUw2Y1plbWkwPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5TWEdpak8xZUFyRWFYR3BoRjBkeHdqNWZwMWc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5yTm00SWQ5YWgxMm51Z3pYQVVKZ2phczdsczA9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+dU9RSlFJSVVFVFl5azArWUVCZGJFUXdyWWJ3PTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5BV3RxRGJYV0tmOFRWNzhDMmQxNnVhcmJwR2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj51T1FKUUlJVUVUWXlrMCtZRUJkYkVRd3JZYnc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk5wak1QekVGNVlaRmJ6NGxzN2VOMzZRV2RYcz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5FYWNCTjJhQkJOU2pwQ096WlVPT3ZTdjR6SFU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25lZEluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmVWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtGeDM0VmMwN2ZYYWM2cW1zaGhoTGU4b2dqRWxTbUM2WXhUbmh4ajh3TVRTa2Z2eFkrd1l0clE9PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5SW5mbzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEU0FLZXlWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtQPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzNlT2VBdnFuRXlGcFcrdVRTZ3JkajdZTGphVGtweUhlY0tGSW9MdThRWk5rR1RRSTFjaUlUQkgwbHFmSWtkQ0gmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1NpOGZpVUMzRFRxM0o5RnNKZWY0WVZ0REY3SnBVdkhUT1FxdHE3Wmd4NktDOFd4a3o2clFDeE9yN0YwQXBPWWkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozg5ekxSb2U0TWtER2U2dXgwK1d0eU9UUW9WSUdOVEREVUZYclVRTmJMckU9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1E8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1EmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtHPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25ueDdoYmRXb3pHYnRuRmduYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3omcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0t0N2RsRWFRTDdiNStKVFp0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ00mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzhkMnJoZDJVaTB4SGJrMEQ0NTFuaEx4Vld1bHZpT1NQaHpLS3ZYcmJ5U0E9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1k8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y2ZZcGlocEFRZWVwYk5GUzRNQWJRUmhkWHBEaTV3THJ3eEU1aEl2b1lxbzFMOEJRVnU4ZlkxVEZBUHRvYWUxaSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7QmcvR0lKeVAzaUxmeXVCSmFEdkpKTFAzMHdCSDlpL3M1SjM2NTZQZXZwT1ZkVGZpNzc3Rmk5R2o2eS9pYjJWdiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7K09aZkpra3A0TDUwK3A1VFVoUG1RTEp0UkVzZ3RsK3RuSU95SlQrK0c5VT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9ZJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRFNBS2V5VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0tleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlEYXRhPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOVN1YmplY3ROYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Q049TWVybGluJm1pZGRvdDtIdWdoZXMsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUmbWlkZG90O1RlY2hub2xvZ2llcyZtaWRkb3Q7THRkLixTVD1EdWJsaW4sQz1JRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOVN1YmplY3ROYW1lJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5SXNzdWVyU2VyaWFsPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlJc3N1ZXJOYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0NOPVRyYW5zaWVudCZtaWRkb3Q7Q0EsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUmbWlkZG90O1RlY2hub2xvZ2llcyZtaWRkb3Q7THRkLixTVD1EdWJsaW4sQz1JRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlJc3N1ZXJOYW1lJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOVNlcmlhbE51bWJlcjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MTAxNzc4ODM3MDM0ODwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOVNlcmlhbE51bWJlciZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlJc3N1ZXJTZXJpYWwmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlDZXJ0aWZpY2F0ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSURVRENDQXhDZ0F3SUJBZ0lHQU96NDZnMnNNQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CNFhEVEF5TURRd01qSXlOVGt6TUZvWERURXlNRFF3TWpJeE5Ua3lOVm93YnpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVdNQlFHQTFVRUF4TU5UV1Z5YkdsdUlFaDFaMmhsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N6Q0NBYmN3Z2dFc0JnY3Foa2pPT0FRQk1JSUJId0tCZ1FEZDQ1NEMrcWNUSVdsYjY1TktDdDJQdGd1TnBPU24mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7SWQ1d29VaWd1N3hCazJRWk5BalZ5SWhNRWZTV3A4aVIwSWRLTHgrSlFMY05PcmNuMFd3bDUvaGhXME1Yc21sUyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4ZE01Q3EycnRtREhvb0x4YkdUUHF0QUxFNnZzWFFDazVpTHozTXRHaDdneVFNWjdxN0hUNWEzSTVOQ2hVZ1kxJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01NTlFWZXRSQTFzdXNRSVZBSVF5M0JTdEJqdng4OVdxOFRqcjdJRFAxUzhsQW9HQkFKNThlNFczVnFNeG03WngmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7WUoyeFo2S1gwWmUxMFduS1pEeVVSbitUOWlGSUZiS1JGRWxLRGVvdFh3d1h3WU9OOHlyZTNaUkdrQysyK2ZpVSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsyYmR6SVdUVDZMTWJJTVZiayswN1A0T1pPeEo2WFdMOUd1WWNPUWNOdlg0MnhoMzREUEhkcTRYZGxJdE1SMjVOJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0ErT2RaNFM4VlZycGI0amtqNGN5aXIxNjI4a2dBNEdFQUFLQmdISDJLWW9hUUVIbnFXelJVdURBRzBFWVhWNlEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NHVjQzY4TVJPWVNMNkdLcU5TL0FVRmJ2SDJOVXhRRDdhR250WWdZUHhpQ2NqOTRpMzhyZ1NXZzd5U1N6OTlNQSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtSL1l2N09TZCt1ZWozcjZUbFhVMzR1Kyt4WXZSbytzdjRtOWxiL2ptWHlaSktlQytkUHFlVTFJVDVrQ3liVVJMJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0lMWmZyWnlEc2lVL3ZodlZvem93T0RBT0JnTlZIUThCQWY4RUJBTUNCNEF3RVFZRFZSME9CQW9FQ0lhdFk3U0UmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bFhFT01CTUdBMVVkSXdRTU1BcUFDSU9HUGtCMk11S1RNQWtHQnlxR1NNNDRCQU1ETHdBd0xBSVVTdlQwMmlRaiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtRNWRhNFdwZTBCdnM3R3VDY1ZzQ0ZDRWNRcGJqVWZueFhGWE5XaUZ5UTQ5WnJXcW4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlDZXJ0aWZpY2F0ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUNlcnRpZmljYXRlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJRFN6Q0NBd3VnQXdJQkFnSUdBT3o0NmZ3Sk1Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUI0WERUQXlNRFF3TWpJeU5Ua3lOVm9YRFRFeU1EUXdNakl4TlRreU5Wb3diakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJQnR6Q0NBU3dHQnlxR1NNNDRCQUV3Z2dFZkFvR0JBTjNqbmdMNnB4TWhhVnZyazBvSzNZKzJDNDJrNUtjaCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDszbkNoU0tDN3ZFR1RaQmswQ05YSWlFd1I5SmFueUpIUWgwb3ZINGxBdHcwNnR5ZlJiQ1huK0dGYlF4ZXlhVkx4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzB6a0tyYXUyWU1laWd2RnNaTStxMEFzVHEreGRBS1RtSXZQY3kwYUh1REpBeG51cnNkUGxyY2prMEtGU0JqVXcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7dzFCVjYxRURXeTZ4QWhVQWhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VUNnWUVBbm54N2hiZFdvekdidG5GZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtuYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3pLdDdkbEVhUUw3YjUrSlRaJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O3QzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTThkMnJoZDJVaTB4SGJrMEQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBRGdZUUFBb0dBZmFnK0hDQUJJSmFkREQ5QWFyaGdjMlFSM0xwNyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtQcE1PaDBsQXdMaUlzdmtPNFVsYmVPUzBJSkM4YmNxTGpNMWZWdzZGR1NheG1xKzR5MWFnMm05azZJZEUwUWg1JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O054Qi94RmttZHdxWEZSSUpWcDQ0T2VVeWdCNDdZSzc2Tm1VSVlHM0RkZmlQUFUzYnF6anZ0T3RFVGlDSHZvMjUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NEQ2VWp3UHBZRXJYUlVhak5qQTBNQTRHQTFVZER3RUIvd1FFQXdJQ0JEQVBCZ05WSFJNRUNEQUdBUUgvQWdFQSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQkVHQTFVZERnUUtCQWlEaGo1QWRqTGlrekFKQmdjcWhrak9PQVFEQXk4QU1Dd0NGRUx1MG51d2VxVzdXZjBzJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2drL0NBR0dMMEJHS0FoUk5kZ1FHcjVpeVpLb0g0b3FQbTBWSjlUalhMZz09JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5Q2VydGlmaWNhdGUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlEYXRhJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0tleUluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2ZvbzpSb290Jmd0Ozwvc3Bhbj48L3ByZT48L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMjYudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0yNi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY3ZWI2ZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMjYudHh0CkBAIC0wLDAgKzEsOSBAQAorPGJhcjpTb21ldGhpbmc+CisgICAgIDxmb286U29tZXRoaW5nIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIj4KKyAgICAgICAgPGJhcjpTb21ldGhpbmcgeG1sbnM9IiI+CisgICAgICAgICAgIDxmb286U29tZXRoaW5nIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIj4KKyAgICAgICAgICAgICA8YmF6OlNvbWV0aGluZyB4bWxucz0iIj48L2JhejpTb21ldGhpbmc+CisgICAgICAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICAgICAgPC9iYXI6U29tZXRoaW5nPgorICAgICA8L2ZvbzpTb21ldGhpbmc+CisgIDwvYmFyOlNvbWV0aGluZz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTI3LnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tMjcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwNmQ1MTIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTI3LnR4dApAQCAtMCwwICsxLDQzMCBAQAorPFNpZ25lZEluZm8geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciIgeG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6IiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iIHhtbDpsYW5nPSJlbi1pZSI+CisgICAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ij48L0Nhbm9uaWNhbGl6YXRpb25NZXRob2Q+CisgICAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIj48L1NpZ25hdHVyZU1ldGhvZD4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZworICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICA8RGlnZXN0VmFsdWU+bENPUy9KdHBtT0UrNGVYRmFPcFk0djRCT2dJPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgICgobmFtZSgpICE9ICJiYXIiKSBvciBwYXJlbnQ6OmJhcjpTb21ldGhpbmcpICBhbmQKKyAgICAgICAgICAgICAgKChuYW1lKCkgIT0gImZvbyIpIG9yIHBhcmVudDo6Zm9vOlNvbWV0aGluZykgIGFuZAorICAgICAgICAgICAgICAoKG5hbWUoKSAhPSAiYmF6Iikgb3IgcGFyZW50OjpiYXo6U29tZXRoaW5nKSAgYW5kCisgICAgICAgICAgICAgICgobmFtZSgpICE9ICIiKSBvciBzZWxmOjp0ZXh0KCkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgIDxEaWdlc3RWYWx1ZT5PeVZxRVdYRTdDKzVOeUt0Y2VVa2RtaUZPOUE9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKHNlbGY6OnRleHQoKSAgb3IKKyAgICAgICAgICAgICAgIChuYW1lc3BhY2UtdXJpKCkgIT0gIiIpICBvcgorICAgICAgICAgICAgICAgKHN0cmluZyhzZWxmOjpub2RlKCkpID0gbmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICA8RGlnZXN0VmFsdWU+T3lWcUVXWEU3Qys1TnlLdGNlVWtkbWlGTzlBPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIG5vdCAoc2VsZjo6Zm9vOlNvbWV0aGluZykgIGFuZAorICAgICAgICAgICAgICAoc2VsZjo6dGV4dCgpICBvcgorICAgICAgICAgICAgICAgKG5hbWVzcGFjZS11cmkoKSAhPSAiIikgIG9yCisgICAgICAgICAgICAgICAoc3RyaW5nKHNlbGY6Om5vZGUoKSkgPSBuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgIDxEaWdlc3RWYWx1ZT5tTDFhQVEvUm9PUE8wU0hqOUtSK3lZM240Q009PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikgICE9CisgICAgICAgICAgICAgICBjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiogfCBzZWxmOjpub2RlKCkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICA8RGlnZXN0VmFsdWU+YlFnRjhJQ3ltWVpUdVVQMEZFNDBsM1E3QlprPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChzZWxmOjp0ZXh0KCkgIG9yCisgICAgICAgICAgICAgICAobmFtZXNwYWNlLXVyaSgpICE9ICIiKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgPERpZ2VzdFZhbHVlPmJRZ0Y4SUN5bVlaVHVVUDBGRTQwbDNRN0Jaaz08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSAgPQorICAgICAgICAgICAgICAgY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqIHwgc2VsZjo6bm9kZSgpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgPERpZ2VzdFZhbHVlPklKUWdkNTlGSjFQQXh4Q1k1bUlMNmNaZW1pMD08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoc3RyaW5nKHNlbGY6Om5vZGUoKSkgPSBuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgPERpZ2VzdFZhbHVlPlNYR2lqTzFlQXJFYVhHcGhGMGR4d2o1ZnAxZz08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoc2VsZjo6dGV4dCgpICBvcgorICAgICAgICAgICAgICAgKG5hbWVzcGFjZS11cmkoKSAhPSAiIikgIG9yCisgICAgICAgICAgICAgICAoKG5hbWUoKSA9ICIiKSAgYW5kCisgICAgICAgICAgICAgICAgKChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpIG1vZCAyKSA9IDEpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgPERpZ2VzdFZhbHVlPnJObTRJZDlhaDEybnVnelhBVUpnamFzN2xzMD08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+PC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgPERpZ2VzdFZhbHVlPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoKG5hbWUoKSAhPSAiYmFyIikgb3IgcGFyZW50OjpiYXI6U29tZXRoaW5nKSAgYW5kCisgICAgICAgICAgICAgICgobmFtZSgpICE9ICJmb28iKSBvciBwYXJlbnQ6OmZvbzpTb21ldGhpbmcpICBhbmQKKyAgICAgICAgICAgICAgKChuYW1lKCkgIT0gImJheiIpIG9yIHBhcmVudDo6YmF6OlNvbWV0aGluZykgIGFuZAorICAgICAgICAgICAgICAoKG5hbWUoKSAhPSAiIikgb3Igc2VsZjo6dGV4dCgpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj48L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICA8RGlnZXN0VmFsdWU+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChzZWxmOjp0ZXh0KCkgIG9yCisgICAgICAgICAgICAgICAobmFtZXNwYWNlLXVyaSgpICE9ICIiKSAgb3IKKyAgICAgICAgICAgICAgIChzdHJpbmcoc2VsZjo6bm9kZSgpKSA9IG5hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+PC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgPERpZ2VzdFZhbHVlPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICBub3QgKHNlbGY6OmZvbzpTb21ldGhpbmcpICBhbmQKKyAgICAgICAgICAgICAgKHNlbGY6OnRleHQoKSAgb3IKKyAgICAgICAgICAgICAgIChuYW1lc3BhY2UtdXJpKCkgIT0gIiIpICBvcgorICAgICAgICAgICAgICAgKHN0cmluZyhzZWxmOjpub2RlKCkpID0gbmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj48L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICA8RGlnZXN0VmFsdWU+dU9RSlFJSVVFVFl5azArWUVCZGJFUXdyWWJ3PTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopICAhPQorICAgICAgICAgICAgICAgY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqIHwgc2VsZjo6bm9kZSgpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+PC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgPERpZ2VzdFZhbHVlPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoc2VsZjo6dGV4dCgpICBvcgorICAgICAgICAgICAgICAgKG5hbWVzcGFjZS11cmkoKSAhPSAiIikpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPjwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgIDxEaWdlc3RWYWx1ZT42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikgID0KKyAgICAgICAgICAgICAgIGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiB8IHNlbGY6Om5vZGUoKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPjwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgIDxEaWdlc3RWYWx1ZT4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKHN0cmluZyhzZWxmOjpub2RlKCkpID0gbmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPjwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgIDxEaWdlc3RWYWx1ZT4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKHNlbGY6OnRleHQoKSAgb3IKKyAgICAgICAgICAgICAgIChuYW1lc3BhY2UtdXJpKCkgIT0gIiIpICBvcgorICAgICAgICAgICAgICAgKChuYW1lKCkgPSAiIikgIGFuZAorICAgICAgICAgICAgICAgICgoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSBtb2QgMikgPSAxKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPjwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgIDxEaWdlc3RWYWx1ZT42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPgorICAgICAgICAgICAgPEluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0iI2RlZmF1bHQiPjwvSW5jbHVzaXZlTmFtZXNwYWNlcz4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICA8RGlnZXN0VmFsdWU+QVd0cURiWFdLZjhUVjc4QzJkMTZ1YXJicEdrPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgICgobmFtZSgpICE9ICJiYXIiKSBvciBwYXJlbnQ6OmJhcjpTb21ldGhpbmcpICBhbmQKKyAgICAgICAgICAgICAgKChuYW1lKCkgIT0gImZvbyIpIG9yIHBhcmVudDo6Zm9vOlNvbWV0aGluZykgIGFuZAorICAgICAgICAgICAgICAoKG5hbWUoKSAhPSAiYmF6Iikgb3IgcGFyZW50OjpiYXo6U29tZXRoaW5nKSAgYW5kCisgICAgICAgICAgICAgICgobmFtZSgpICE9ICIiKSBvciBzZWxmOjp0ZXh0KCkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPgorICAgICAgICAgICAgPEluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0iI2RlZmF1bHQiPjwvSW5jbHVzaXZlTmFtZXNwYWNlcz4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICA8RGlnZXN0VmFsdWU+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChzZWxmOjp0ZXh0KCkgIG9yCisgICAgICAgICAgICAgICAobmFtZXNwYWNlLXVyaSgpICE9ICIiKSAgb3IKKyAgICAgICAgICAgICAgIChzdHJpbmcoc2VsZjo6bm9kZSgpKSA9IG5hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+CisgICAgICAgICAgICA8SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI+PC9JbmNsdXNpdmVOYW1lc3BhY2VzPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgIDxEaWdlc3RWYWx1ZT5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgbm90IChzZWxmOjpmb286U29tZXRoaW5nKSAgYW5kCisgICAgICAgICAgICAgIChzZWxmOjp0ZXh0KCkgIG9yCisgICAgICAgICAgICAgICAobmFtZXNwYWNlLXVyaSgpICE9ICIiKSAgb3IKKyAgICAgICAgICAgICAgIChzdHJpbmcoc2VsZjo6bm9kZSgpKSA9IG5hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+CisgICAgICAgICAgICA8SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI+PC9JbmNsdXNpdmVOYW1lc3BhY2VzPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgIDxEaWdlc3RWYWx1ZT51T1FKUUlJVUVUWXlrMCtZRUJkYkVRd3JZYnc9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikgICE9CisgICAgICAgICAgICAgICBjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiogfCBzZWxmOjpub2RlKCkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj4KKyAgICAgICAgICAgIDxJbmNsdXNpdmVOYW1lc3BhY2VzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIFByZWZpeExpc3Q9IiNkZWZhdWx0Ij48L0luY2x1c2l2ZU5hbWVzcGFjZXM+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgPERpZ2VzdFZhbHVlPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoc2VsZjo6dGV4dCgpICBvcgorICAgICAgICAgICAgICAgKG5hbWVzcGFjZS11cmkoKSAhPSAiIikpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPgorICAgICAgICAgICAgPEluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0iI2RlZmF1bHQiPjwvSW5jbHVzaXZlTmFtZXNwYWNlcz4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICA8RGlnZXN0VmFsdWU+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopICA9CisgICAgICAgICAgICAgICBjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiogfCBzZWxmOjpub2RlKCkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj4KKyAgICAgICAgICAgIDxJbmNsdXNpdmVOYW1lc3BhY2VzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIFByZWZpeExpc3Q9IiNkZWZhdWx0Ij48L0luY2x1c2l2ZU5hbWVzcGFjZXM+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgPERpZ2VzdFZhbHVlPk5wak1QekVGNVlaRmJ6NGxzN2VOMzZRV2RYcz08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoc3RyaW5nKHNlbGY6Om5vZGUoKSkgPSBuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+CisgICAgICAgICAgICA8SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI+PC9JbmNsdXNpdmVOYW1lc3BhY2VzPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgIDxEaWdlc3RWYWx1ZT4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKHNlbGY6OnRleHQoKSAgb3IKKyAgICAgICAgICAgICAgIChuYW1lc3BhY2UtdXJpKCkgIT0gIiIpICBvcgorICAgICAgICAgICAgICAgKChuYW1lKCkgPSAiIikgIGFuZAorICAgICAgICAgICAgICAgICgoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSBtb2QgMikgPSAxKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPgorICAgICAgICAgICAgPEluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0iI2RlZmF1bHQiPjwvSW5jbHVzaXZlTmFtZXNwYWNlcz4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICA8RGlnZXN0VmFsdWU+RWFjQk4yYUJCTlNqcENPelpVT092U3Y0ekhVPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICA8L1NpZ25lZEluZm8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0zLmh0bWwgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWJhMzY4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0zLmh0bWwKQEAgLTAsMCArMSw1NTcgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DYW5pbmljYWwgWE1MIG5vZGUgc2V0PC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cis8IS0tIAorLklOQ0xVREVEIHsgCisgICBjb2xvcjogIzAwMDAwMDsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IH0gCisuRVhDTFVERUQgeyAKKyAgIGNvbG9yOiAjNjY2NjY2OyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgIzk5OTk5OTsgfSAKKy5JTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCisuRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICM5OTk5OTk7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLS0+IAorPC9zdHlsZT4gCis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSIjOTk5OTk5Ij4KKzxoMT5FeHBsYW5hdGlvbiBvZiB0aGUgb3V0cHV0PC9oMT4KKzxwPlRoZSBmb2xsb3dpbmcgdGV4dCBjb250YWlucyB0aGUgbm9kZXNldCBvZiB0aGUgZ2l2ZW4gUmVmZXJlbmNlIGJlZm9yZSBpdCBpcyBjYW5vbmljYWxpemVkLiBUaGVyZSBleGlzdCBmb3VyIGRpZmZlcmVudCBzdHlsZXMgdG8gaW5kaWNhdGUgaG93IGEgZ2l2ZW4gbm9kZSBpcyB0cmVhdGVkLjwvcD4KKzx1bD4KKzxsaSBjbGFzcz0iSU5DTFVERUQiPkEgbm9kZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERUQiPkEgbm9kZSB3aGljaCBpcyA8ZW0+Tk9UPC9lbT4gaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgRVhDTFVERUQgc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gTk9UIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPgorPC91bD4KKzxoMT5PdXRwdXQ8L2gxPgorPHByZT4KKzxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2ZvbzpSb290PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWw6bGFuZz0iZW4taWUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtiYXI6U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Zm9vOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2JhcjpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtmb286U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2JhejpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvYmF6OlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2ZvbzpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9iYXI6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZm9vOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2JhcjpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduZWRJbmZvPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWw6bGFuZz0iZW4taWUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0Nhbm9uaWNhbGl6YXRpb25NZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvQ2Fub25pY2FsaXphdGlvbk1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmVNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZU1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5sQ09TL0p0cG1PRSs0ZVhGYU9wWTR2NEJPZ0k9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5PeVZxRVdYRTdDKzVOeUt0Y2VVa2RtaUZPOUE9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5PeVZxRVdYRTdDKzVOeUt0Y2VVa2RtaUZPOUE9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm90Jm1pZGRvdDsoc2VsZjo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5tTDFhQVEvUm9PUE8wU0hqOUtSK3lZM240Q009PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmJRZ0Y4SUN5bVlaVHVVUDBGRTQwbDNRN0Jaaz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+YlFnRjhJQ3ltWVpUdVVQMEZFNDBsM1E3QlprPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90Oz0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPklKUWdkNTlGSjFQQXh4Q1k1bUlMNmNaZW1pMD08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+U1hHaWpPMWVBckVhWEdwaEYwZHh3ajVmcDFnPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+ck5tNElkOWFoMTJudWd6WEFVSmdqYXM3bHMwPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm90Jm1pZGRvdDsoc2VsZjo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPnVPUUpRSUlVRVRZeWswK1lFQmRiRVF3cllidz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90Oz0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+QVd0cURiWFdLZjhUVjc4QzJkMTZ1YXJicEdrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm90Jm1pZGRvdDsoc2VsZjo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+dU9RSlFJSVVFVFl5azArWUVCZGJFUXdyWWJ3PTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90Oz0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5OcGpNUHpFRjVZWkZiejRsczdlTjM2UVdkWHM9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+RWFjQk4yYUJCTlNqcENPelpVT092U3Y0ekhVPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduZWRJbmZvJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlVmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RngzNFZjMDdmWGFjNnFtc2hoaExlOG9nakVsU21DNll4VG5oeGo4d01UU2tmdnhZK3dZdHJRPT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmVWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0tleUluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0tleVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RFNBS2V5VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDszZU9lQXZxbkV5RnBXK3VUU2dyZGo3WUxqYVRrcHlIZWNLRklvTHU4UVpOa0dUUUkxY2lJVEJIMGxxZklrZENIJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtTaThmaVVDM0RUcTNKOUZzSmVmNFlWdERGN0pwVXZIVE9RcXRxN1pneDZLQzhXeGt6NnJRQ3hPcjdGMEFwT1lpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4OXpMUm9lNE1rREdlNnV4MCtXdHlPVFFvVklHTlRERFVGWHJVUU5iTHJFPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1AmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtRPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5oRExjRkswR08vSHoxYXJ4T092c2dNL1ZMeVU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9RJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Rzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtubng3aGJkV296R2J0bkZnbmJGbm9wZlJsN1hSYWNwa1BKUkdmNVAySVVnVnNwRVVTVW9ONmkxZkRCZkJnNDN6JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtLdDdkbEVhUUw3YjUrSlRadDNNaFpOUG9zeHNneFZ1VDdUcy9nNWs3RW5wZFl2MGE1aHc1QncyOWZqYkdIZmdNJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4ZDJyaGQyVWkweEhiazBENDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0cmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtZPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NmWXBpaHBBUWVlcGJORlM0TUFiUVJoZFhwRGk1d0xyd3hFNWhJdm9ZcW8xTDhCUVZ1OGZZMVRGQVB0b2FlMWkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0JnL0dJSnlQM2lMZnl1QkphRHZKSkxQMzB3Qkg5aS9zNUozNjU2UGV2cE9WZFRmaTc3N0ZpOUdqNnkvaWIyVnYmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OytPWmZKa2twNEw1MCtwNVRVaFBtUUxKdFJFc2d0bCt0bklPeUpUKytHOVU9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RTQUtleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9LZXlWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5RGF0YTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlTdWJqZWN0TmFtZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0NOPU1lcmxpbiZtaWRkb3Q7SHVnaGVzLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlJm1pZGRvdDtUZWNobm9sb2dpZXMmbWlkZG90O0x0ZC4sU1Q9RHVibGluLEM9SUUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlTdWJqZWN0TmFtZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUlzc3VlclNlcmlhbDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5SXNzdWVyTmFtZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtDTj1UcmFuc2llbnQmbWlkZG90O0NBLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlJm1pZGRvdDtUZWNobm9sb2dpZXMmbWlkZG90O0x0ZC4sU1Q9RHVibGluLEM9SUUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5SXNzdWVyTmFtZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlTZXJpYWxOdW1iZXI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjEwMTc3ODgzNzAzNDg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlTZXJpYWxOdW1iZXImZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5SXNzdWVyU2VyaWFsJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5Q2VydGlmaWNhdGU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNSUlEVURDQ0F4Q2dBd0lCQWdJR0FPejQ2ZzJzTUFrR0J5cUdTTTQ0QkFNd2JqRUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQjRYRFRBeU1EUXdNakl5TlRrek1Gb1hEVEV5TURRd01qSXhOVGt5TlZvd2J6RUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVXTUJRR0ExVUVBeE1OVFdWeWJHbHVJRWgxWjJobCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjekNDQWJjd2dnRXNCZ2NxaGtqT09BUUJNSUlCSHdLQmdRRGQ0NTRDK3FjVElXbGI2NU5LQ3QyUHRndU5wT1NuJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0lkNXdvVWlndTd4QmsyUVpOQWpWeUloTUVmU1dwOGlSMElkS0x4K0pRTGNOT3JjbjBXd2w1L2hoVzBNWHNtbFMmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7OGRNNUNxMnJ0bURIb29MeGJHVFBxdEFMRTZ2c1hRQ2s1aUx6M010R2g3Z3lRTVo3cTdIVDVhM0k1TkNoVWdZMSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNTU5RVmV0UkExc3VzUUlWQUlReTNCU3RCanZ4ODlXcThUanI3SURQMVM4bEFvR0JBSjU4ZTRXM1ZxTXhtN1p4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1lKMnhaNktYMFplMTBXbktaRHlVUm4rVDlpRklGYktSRkVsS0Rlb3RYd3dYd1lPTjh5cmUzWlJHa0MrMitmaVUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7MmJkeklXVFQ2TE1iSU1WYmsrMDdQNE9aT3hKNlhXTDlHdVljT1FjTnZYNDJ4aDM0RFBIZHE0WGRsSXRNUjI1TiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtBK09kWjRTOFZWcnBiNGprajRjeWlyMTYyOGtnQTRHRUFBS0JnSEgyS1lvYVFFSG5xV3pSVXVEQUcwRVlYVjZRJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzR1Y0M2OE1ST1lTTDZHS3FOUy9BVUZidkgyTlV4UUQ3YUdudFlnWVB4aUNjajk0aTM4cmdTV2c3eVNTejk5TUEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Ui9ZdjdPU2QrdWVqM3I2VGxYVTM0dSsreFl2Um8rc3Y0bTlsYi9qbVh5WkpLZUMrZFBxZVUxSVQ1a0N5YlVSTCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtJTFpmclp5RHNpVS92aHZWb3pvd09EQU9CZ05WSFE4QkFmOEVCQU1DQjRBd0VRWURWUjBPQkFvRUNJYXRZN1NFJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2xYRU9NQk1HQTFVZEl3UU1NQXFBQ0lPR1BrQjJNdUtUTUFrR0J5cUdTTTQ0QkFNREx3QXdMQUlVU3ZUMDJpUWomcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7UTVkYTRXcGUwQnZzN0d1Q2NWc0NGQ0VjUXBialVmbnhYRlhOV2lGeVE0OVpyV3FuJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5Q2VydGlmaWNhdGUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlDZXJ0aWZpY2F0ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSURTekNDQXd1Z0F3SUJBZ0lHQU96NDZmd0pNQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CNFhEVEF5TURRd01qSXlOVGt5TlZvWERURXlNRFF3TWpJeE5Ua3lOVm93YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSUJ0ekNDQVN3R0J5cUdTTTQ0QkFFd2dnRWZBb0dCQU4zam5nTDZweE1oYVZ2cmswb0szWSsyQzQyazVLY2gmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7M25DaFNLQzd2RUdUWkJrMENOWElpRXdSOUphbnlKSFFoMG92SDRsQXR3MDZ0eWZSYkNYbitHRmJReGV5YVZMeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDswemtLcmF1MllNZWlndkZzWk0rcTBBc1RxK3hkQUtUbUl2UGN5MGFIdURKQXhudXJzZFBscmNqazBLRlNCalV3JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O3cxQlY2MUVEV3k2eEFoVUFoRExjRkswR08vSHoxYXJ4T092c2dNL1ZMeVVDZ1lFQW5ueDdoYmRXb3pHYnRuRmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bmJGbm9wZlJsN1hSYWNwa1BKUkdmNVAySVVnVnNwRVVTVW9ONmkxZkRCZkJnNDN6S3Q3ZGxFYVFMN2I1K0pUWiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDt0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ004ZDJyaGQyVWkweEhiazBEJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzQ1MW5oTHhWV3VsdmlPU1BoektLdlhyYnlTQURnWVFBQW9HQWZhZytIQ0FCSUphZEREOUFhcmhnYzJRUjNMcDcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7UHBNT2gwbEF3TGlJc3ZrTzRVbGJlT1MwSUpDOGJjcUxqTTFmVnc2RkdTYXhtcSs0eTFhZzJtOWs2SWRFMFFoNSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtOeEIveEZrbWR3cVhGUklKVnA0NE9lVXlnQjQ3WUs3Nk5tVUlZRzNEZGZpUFBVM2Jxemp2dE90RVRpQ0h2bzI1JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzRENlVqd1BwWUVyWFJVYWpOakEwTUE0R0ExVWREd0VCL3dRRUF3SUNCREFQQmdOVkhSTUVDREFHQVFIL0FnRUEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUJFR0ExVWREZ1FLQkFpRGhqNUFkakxpa3pBSkJnY3Foa2pPT0FRREF5OEFNQ3dDRkVMdTBudXdlcVc3V2YwcyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtnay9DQUdHTDBCR0tBaFJOZGdRR3I1aXlaS29ING9xUG0wVko5VGpYTGc9PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUNlcnRpZmljYXRlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5RGF0YSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9LZXlJbmZvJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9mb286Um9vdCZndDs8L3NwYW4+PC9wcmU+PC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTMudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0zLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzAzNTRhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi0zLnR4dApAQCAtMCwwICsxLDkgQEAKKzxiYXI6U29tZXRoaW5nIHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciIgeG1sOmxhbmc9ImVuLWllIj4KKyAgICAgIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyIKKyAgICAgICAgPGJhcjpTb21ldGhpbmcgeG1sOmxhbmc9ImVuLWllIj4KKyAgICAgICAgICAgIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyIKKyAgICAgICAgICAgICA8YmF6OlNvbWV0aGluZyB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiIHhtbDpsYW5nPSJlbi1pZSI+PC9iYXo6U29tZXRoaW5nPgorICAgICAgICAgICAKKyAgICAgICAgPC9iYXI6U29tZXRoaW5nPgorICAgICAKKyAgPC9iYXI6U29tZXRoaW5nPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tNC5odG1sIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi00Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE1MTkwZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tNC5odG1sCkBAIC0wLDAgKzEsNTU3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q2FuaW5pY2FsIFhNTCBub2RlIHNldDwvdGl0bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorPCEtLSAKKy5JTkNMVURFRCB7IAorICAgY29sb3I6ICMwMDAwMDA7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyB9IAorLkVYQ0xVREVEIHsgCisgICBjb2xvcjogIzY2NjY2NjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICM5OTk5OTk7IH0gCisuSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5OTk5OyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy0tPiAKKzwvc3R5bGU+IAorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0iIzk5OTk5OSI+Cis8aDE+RXhwbGFuYXRpb24gb2YgdGhlIG91dHB1dDwvaDE+Cis8cD5UaGUgZm9sbG93aW5nIHRleHQgY29udGFpbnMgdGhlIG5vZGVzZXQgb2YgdGhlIGdpdmVuIFJlZmVyZW5jZSBiZWZvcmUgaXQgaXMgY2Fub25pY2FsaXplZC4gVGhlcmUgZXhpc3QgZm91ciBkaWZmZXJlbnQgc3R5bGVzIHRvIGluZGljYXRlIGhvdyBhIGdpdmVuIG5vZGUgaXMgdHJlYXRlZC48L3A+Cis8dWw+Cis8bGkgY2xhc3M9IklOQ0xVREVEIj5BIG5vZGUgd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVEIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVEIj5BIG5vZGUgd2hpY2ggaXMgPGVtPk5PVDwvZW0+IGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIEVYQ0xVREVEIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgQU5EIGluIHRoZSBJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3QgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0Ugc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIE5PVCB0aGUgbm9kZSBzZXQgQU5EIGluIHRoZSBJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3QgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0Ugc3R5bGUuPC9saT4KKzwvdWw+Cis8aDE+T3V0cHV0PC9oMT4KKzxwcmU+Cis8c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtmb286Um9vdDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sOmxhbmc9ImVuLWllIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7YmFyOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2ZvbzpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtiYXI6U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7Zm9vOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtiYXo6U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2JhejpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9mb286U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvYmFyOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2ZvbzpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9iYXI6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmVkSW5mbzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sOmxhbmc9ImVuLWllIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtDYW5vbmljYWxpemF0aW9uTWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0Nhbm9uaWNhbGl6YXRpb25NZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlTWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmVNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+bENPUy9KdHBtT0UrNGVYRmFPcFk0djRCT2dJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+T3lWcUVXWEU3Qys1TnlLdGNlVWtkbWlGTzlBPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+T3lWcUVXWEU3Qys1TnlLdGNlVWtkbWlGTzlBPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25vdCZtaWRkb3Q7KHNlbGY6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+bUwxYUFRL1JvT1BPMFNIajlLUit5WTNuNENNPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5iUWdGOElDeW1ZWlR1VVAwRkU0MGwzUTdCWms9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmJRZ0Y4SUN5bVlaVHVVUDBGRTQwbDNRN0Jaaz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDs9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5JSlFnZDU5RkoxUEF4eENZNW1JTDZjWmVtaTA9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPlNYR2lqTzFlQXJFYVhHcGhGMGR4d2o1ZnAxZz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPnJObTRJZDlhaDEybnVnelhBVUpnamFzN2xzMD08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25vdCZtaWRkb3Q7KHNlbGY6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj51T1FKUUlJVUVUWXlrMCtZRUJkYkVRd3JZYnc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDs9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPkFXdHFEYlhXS2Y4VFY3OEMyZDE2dWFyYnBHaz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25vdCZtaWRkb3Q7KHNlbGY6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPnVPUUpRSUlVRVRZeWswK1lFQmRiRVF3cllidz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDs9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+TnBqTVB6RUY1WVpGYno0bHM3ZU4zNlFXZFhzPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPkVhY0JOMmFCQk5TanBDT3paVU9PdlN2NHpIVT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmVkSW5mbyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0Z4MzRWYzA3ZlhhYzZxbXNoaGhMZThvZ2pFbFNtQzZZeFRuaHhqOHdNVFNrZnZ4WSt3WXRyUT09JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlVmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtLZXlJbmZvPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtLZXlWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RTQUtleVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1A8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7M2VPZUF2cW5FeUZwVyt1VFNncmRqN1lMamFUa3B5SGVjS0ZJb0x1OFFaTmtHVFFJMWNpSVRCSDBscWZJa2RDSCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7U2k4ZmlVQzNEVHEzSjlGc0plZjRZVnRERjdKcFV2SFRPUXF0cTdaZ3g2S0M4V3hrejZyUUN4T3I3RjBBcE9ZaSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7ODl6TFJvZTRNa0RHZTZ1eDArV3R5T1RRb1ZJR05URERVRlhyVVFOYkxyRT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9QJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+aERMY0ZLMEdPL0h6MWFyeE9PdnNnTS9WTHlVPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0c8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm54N2hiZFdvekdidG5GZ25iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzeiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7S3Q3ZGxFYVFMN2I1K0pUWnQzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7OGQycmhkMlVpMHhIYmswRDQ1MW5oTHhWV3VsdmlPU1BoektLdlhyYnlTQT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9HJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjZllwaWhwQVFlZXBiTkZTNE1BYlFSaGRYcERpNXdMcnd4RTVoSXZvWXFvMUw4QlFWdThmWTFURkFQdG9hZTFpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtCZy9HSUp5UDNpTGZ5dUJKYUR2SkpMUDMwd0JIOWkvczVKMzY1NlBldnBPVmRUZmk3NzdGaTlHajZ5L2liMlZ2JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsrT1pmSmtrcDRMNTArcDVUVWhQbVFMSnRSRXNndGwrdG5JT3lKVCsrRzlVPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1kmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EU0FLZXlWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvS2V5VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOURhdGE8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5U3ViamVjdE5hbWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtDTj1NZXJsaW4mbWlkZG90O0h1Z2hlcyxPVT1YL1NlY3VyZSxPPUJhbHRpbW9yZSZtaWRkb3Q7VGVjaG5vbG9naWVzJm1pZGRvdDtMdGQuLFNUPUR1YmxpbixDPUlFJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5U3ViamVjdE5hbWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlJc3N1ZXJTZXJpYWw8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUlzc3Vlck5hbWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Q049VHJhbnNpZW50Jm1pZGRvdDtDQSxPVT1YL1NlY3VyZSxPPUJhbHRpbW9yZSZtaWRkb3Q7VGVjaG5vbG9naWVzJm1pZGRvdDtMdGQuLFNUPUR1YmxpbixDPUlFJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUlzc3Vlck5hbWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5U2VyaWFsTnVtYmVyPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4xMDE3Nzg4MzcwMzQ4PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5U2VyaWFsTnVtYmVyJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUlzc3VlclNlcmlhbCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUNlcnRpZmljYXRlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJRFVEQ0NBeENnQXdJQkFnSUdBT3o0Nmcyc01Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUI0WERUQXlNRFF3TWpJeU5Ua3pNRm9YRFRFeU1EUXdNakl4TlRreU5Wb3diekVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFV01CUUdBMVVFQXhNTlRXVnliR2x1SUVoMVoyaGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3pDQ0FiY3dnZ0VzQmdjcWhrak9PQVFCTUlJQkh3S0JnUURkNDU0QytxY1RJV2xiNjVOS0N0MlB0Z3VOcE9TbiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtJZDV3b1VpZ3U3eEJrMlFaTkFqVnlJaE1FZlNXcDhpUjBJZEtMeCtKUUxjTk9yY24wV3dsNS9oaFcwTVhzbWxTJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzhkTTVDcTJydG1ESG9vTHhiR1RQcXRBTEU2dnNYUUNrNWlMejNNdEdoN2d5UU1aN3E3SFQ1YTNJNU5DaFVnWTEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TU1OUVZldFJBMXN1c1FJVkFJUXkzQlN0Qmp2eDg5V3E4VGpyN0lEUDFTOGxBb0dCQUo1OGU0VzNWcU14bTdaeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtZSjJ4WjZLWDBaZTEwV25LWkR5VVJuK1Q5aUZJRmJLUkZFbEtEZW90WHd3WHdZT044eXJlM1pSR2tDKzIrZmlVJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzJiZHpJV1RUNkxNYklNVmJrKzA3UDRPWk94SjZYV0w5R3VZY09RY052WDQyeGgzNERQSGRxNFhkbEl0TVIyNU4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7QStPZFo0UzhWVnJwYjRqa2o0Y3lpcjE2MjhrZ0E0R0VBQUtCZ0hIMktZb2FRRUhucVd6UlV1REFHMEVZWFY2USZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs0dWNDNjhNUk9ZU0w2R0txTlMvQVVGYnZIMk5VeFFEN2FHbnRZZ1lQeGlDY2o5NGkzOHJnU1dnN3lTU3o5OU1BJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1IvWXY3T1NkK3VlajNyNlRsWFUzNHUrK3hZdlJvK3N2NG05bGIvam1YeVpKS2VDK2RQcWVVMUlUNWtDeWJVUkwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7SUxaZnJaeURzaVUvdmh2Vm96b3dPREFPQmdOVkhROEJBZjhFQkFNQ0I0QXdFUVlEVlIwT0JBb0VDSWF0WTdTRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtsWEVPTUJNR0ExVWRJd1FNTUFxQUNJT0dQa0IyTXVLVE1Ba0dCeXFHU000NEJBTURMd0F3TEFJVVN2VDAyaVFqJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1E1ZGE0V3BlMEJ2czdHdUNjVnNDRkNFY1FwYmpVZm54WEZYTldpRnlRNDlacldxbiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUNlcnRpZmljYXRlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5Q2VydGlmaWNhdGU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNSUlEU3pDQ0F3dWdBd0lCQWdJR0FPejQ2ZndKTUFrR0J5cUdTTTQ0QkFNd2JqRUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQjRYRFRBeU1EUXdNakl5TlRreU5Wb1hEVEV5TURRd01qSXhOVGt5TlZvd2JqRUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNSUlCdHpDQ0FTd0dCeXFHU000NEJBRXdnZ0VmQW9HQkFOM2puZ0w2cHhNaGFWdnJrMG9LM1krMkM0Mms1S2NoJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzNuQ2hTS0M3dkVHVFpCazBDTlhJaUV3UjlKYW55SkhRaDBvdkg0bEF0dzA2dHlmUmJDWG4rR0ZiUXhleWFWTHgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7MHprS3JhdTJZTWVpZ3ZGc1pNK3EwQXNUcSt4ZEFLVG1JdlBjeTBhSHVESkF4bnVyc2RQbHJjamswS0ZTQmpVdyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDt3MUJWNjFFRFd5NnhBaFVBaERMY0ZLMEdPL0h6MWFyeE9PdnNnTS9WTHlVQ2dZRUFubng3aGJkV296R2J0bkZnJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzekt0N2RsRWFRTDdiNStKVFomcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7dDNNaFpOUG9zeHNneFZ1VDdUcy9nNWs3RW5wZFl2MGE1aHc1QncyOWZqYkdIZmdNOGQycmhkMlVpMHhIYmswRCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs0NTFuaEx4Vld1bHZpT1NQaHpLS3ZYcmJ5U0FEZ1lRQUFvR0FmYWcrSENBQklKYWRERDlBYXJoZ2MyUVIzTHA3JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1BwTU9oMGxBd0xpSXN2a080VWxiZU9TMElKQzhiY3FMak0xZlZ3NkZHU2F4bXErNHkxYWcybTlrNklkRTBRaDUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TnhCL3hGa21kd3FYRlJJSlZwNDRPZVV5Z0I0N1lLNzZObVVJWUczRGRmaVBQVTNicXpqdnRPdEVUaUNIdm8yNSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs0RDZVandQcFlFclhSVWFqTmpBME1BNEdBMVVkRHdFQi93UUVBd0lDQkRBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CRUdBMVVkRGdRS0JBaURoajVBZGpMaWt6QUpCZ2NxaGtqT09BUURBeThBTUN3Q0ZFTHUwbnV3ZXFXN1dmMHMmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Z2svQ0FHR0wwQkdLQWhSTmRnUUdyNWl5WktvSDRvcVBtMFZKOVRqWExnPT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlDZXJ0aWZpY2F0ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOURhdGEmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvS2V5SW5mbyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZm9vOlJvb3QmZ3Q7PC9zcGFuPjwvcHJlPjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi00LnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg1Y2JmMwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tNC50eHQKQEAgLTAsMCArMSw5IEBACis8YmFyOlNvbWV0aGluZyB4bWw6bGFuZz0iZW4taWUiPgorICAgICA8Zm9vOlNvbWV0aGluZz4KKyAgICAgICAgPGJhcjpTb21ldGhpbmc+CisgICAgICAgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICAgICAgIDxiYXo6U29tZXRoaW5nPjwvYmF6OlNvbWV0aGluZz4KKyAgICAgICAgICAgPC9mb286U29tZXRoaW5nPgorICAgICAgICA8L2JhcjpTb21ldGhpbmc+CisgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgPC9iYXI6U29tZXRoaW5nPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tNS5odG1sIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi01Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE1MTkwZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tNS5odG1sCkBAIC0wLDAgKzEsNTU3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q2FuaW5pY2FsIFhNTCBub2RlIHNldDwvdGl0bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorPCEtLSAKKy5JTkNMVURFRCB7IAorICAgY29sb3I6ICMwMDAwMDA7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyB9IAorLkVYQ0xVREVEIHsgCisgICBjb2xvcjogIzY2NjY2NjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICM5OTk5OTk7IH0gCisuSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5OTk5OyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy0tPiAKKzwvc3R5bGU+IAorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0iIzk5OTk5OSI+Cis8aDE+RXhwbGFuYXRpb24gb2YgdGhlIG91dHB1dDwvaDE+Cis8cD5UaGUgZm9sbG93aW5nIHRleHQgY29udGFpbnMgdGhlIG5vZGVzZXQgb2YgdGhlIGdpdmVuIFJlZmVyZW5jZSBiZWZvcmUgaXQgaXMgY2Fub25pY2FsaXplZC4gVGhlcmUgZXhpc3QgZm91ciBkaWZmZXJlbnQgc3R5bGVzIHRvIGluZGljYXRlIGhvdyBhIGdpdmVuIG5vZGUgaXMgdHJlYXRlZC48L3A+Cis8dWw+Cis8bGkgY2xhc3M9IklOQ0xVREVEIj5BIG5vZGUgd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVEIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVEIj5BIG5vZGUgd2hpY2ggaXMgPGVtPk5PVDwvZW0+IGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIEVYQ0xVREVEIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgQU5EIGluIHRoZSBJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3QgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0Ugc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIE5PVCB0aGUgbm9kZSBzZXQgQU5EIGluIHRoZSBJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3QgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0Ugc3R5bGUuPC9saT4KKzwvdWw+Cis8aDE+T3V0cHV0PC9oMT4KKzxwcmU+Cis8c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtmb286Um9vdDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sOmxhbmc9ImVuLWllIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7YmFyOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2ZvbzpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtiYXI6U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7Zm9vOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtiYXo6U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2JhejpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9mb286U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvYmFyOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2ZvbzpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9iYXI6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmVkSW5mbzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sOmxhbmc9ImVuLWllIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtDYW5vbmljYWxpemF0aW9uTWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0Nhbm9uaWNhbGl6YXRpb25NZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlTWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmVNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+bENPUy9KdHBtT0UrNGVYRmFPcFk0djRCT2dJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+T3lWcUVXWEU3Qys1TnlLdGNlVWtkbWlGTzlBPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+T3lWcUVXWEU3Qys1TnlLdGNlVWtkbWlGTzlBPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25vdCZtaWRkb3Q7KHNlbGY6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+bUwxYUFRL1JvT1BPMFNIajlLUit5WTNuNENNPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5iUWdGOElDeW1ZWlR1VVAwRkU0MGwzUTdCWms9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmJRZ0Y4SUN5bVlaVHVVUDBGRTQwbDNRN0Jaaz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDs9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5JSlFnZDU5RkoxUEF4eENZNW1JTDZjWmVtaTA9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPlNYR2lqTzFlQXJFYVhHcGhGMGR4d2o1ZnAxZz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPnJObTRJZDlhaDEybnVnelhBVUpnamFzN2xzMD08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25vdCZtaWRkb3Q7KHNlbGY6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj51T1FKUUlJVUVUWXlrMCtZRUJkYkVRd3JZYnc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDs9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPkFXdHFEYlhXS2Y4VFY3OEMyZDE2dWFyYnBHaz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25vdCZtaWRkb3Q7KHNlbGY6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPnVPUUpRSUlVRVRZeWswK1lFQmRiRVF3cllidz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDs9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+TnBqTVB6RUY1WVpGYno0bHM3ZU4zNlFXZFhzPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPkVhY0JOMmFCQk5TanBDT3paVU9PdlN2NHpIVT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmVkSW5mbyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0Z4MzRWYzA3ZlhhYzZxbXNoaGhMZThvZ2pFbFNtQzZZeFRuaHhqOHdNVFNrZnZ4WSt3WXRyUT09JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlVmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtLZXlJbmZvPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtLZXlWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RTQUtleVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1A8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7M2VPZUF2cW5FeUZwVyt1VFNncmRqN1lMamFUa3B5SGVjS0ZJb0x1OFFaTmtHVFFJMWNpSVRCSDBscWZJa2RDSCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7U2k4ZmlVQzNEVHEzSjlGc0plZjRZVnRERjdKcFV2SFRPUXF0cTdaZ3g2S0M4V3hrejZyUUN4T3I3RjBBcE9ZaSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7ODl6TFJvZTRNa0RHZTZ1eDArV3R5T1RRb1ZJR05URERVRlhyVVFOYkxyRT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9QJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+aERMY0ZLMEdPL0h6MWFyeE9PdnNnTS9WTHlVPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0c8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm54N2hiZFdvekdidG5GZ25iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzeiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7S3Q3ZGxFYVFMN2I1K0pUWnQzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7OGQycmhkMlVpMHhIYmswRDQ1MW5oTHhWV3VsdmlPU1BoektLdlhyYnlTQT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9HJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjZllwaWhwQVFlZXBiTkZTNE1BYlFSaGRYcERpNXdMcnd4RTVoSXZvWXFvMUw4QlFWdThmWTFURkFQdG9hZTFpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtCZy9HSUp5UDNpTGZ5dUJKYUR2SkpMUDMwd0JIOWkvczVKMzY1NlBldnBPVmRUZmk3NzdGaTlHajZ5L2liMlZ2JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsrT1pmSmtrcDRMNTArcDVUVWhQbVFMSnRSRXNndGwrdG5JT3lKVCsrRzlVPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1kmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EU0FLZXlWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvS2V5VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOURhdGE8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5U3ViamVjdE5hbWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtDTj1NZXJsaW4mbWlkZG90O0h1Z2hlcyxPVT1YL1NlY3VyZSxPPUJhbHRpbW9yZSZtaWRkb3Q7VGVjaG5vbG9naWVzJm1pZGRvdDtMdGQuLFNUPUR1YmxpbixDPUlFJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5U3ViamVjdE5hbWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlJc3N1ZXJTZXJpYWw8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUlzc3Vlck5hbWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Q049VHJhbnNpZW50Jm1pZGRvdDtDQSxPVT1YL1NlY3VyZSxPPUJhbHRpbW9yZSZtaWRkb3Q7VGVjaG5vbG9naWVzJm1pZGRvdDtMdGQuLFNUPUR1YmxpbixDPUlFJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUlzc3Vlck5hbWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5U2VyaWFsTnVtYmVyPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4xMDE3Nzg4MzcwMzQ4PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5U2VyaWFsTnVtYmVyJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUlzc3VlclNlcmlhbCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUNlcnRpZmljYXRlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJRFVEQ0NBeENnQXdJQkFnSUdBT3o0Nmcyc01Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUI0WERUQXlNRFF3TWpJeU5Ua3pNRm9YRFRFeU1EUXdNakl4TlRreU5Wb3diekVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFV01CUUdBMVVFQXhNTlRXVnliR2x1SUVoMVoyaGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3pDQ0FiY3dnZ0VzQmdjcWhrak9PQVFCTUlJQkh3S0JnUURkNDU0QytxY1RJV2xiNjVOS0N0MlB0Z3VOcE9TbiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtJZDV3b1VpZ3U3eEJrMlFaTkFqVnlJaE1FZlNXcDhpUjBJZEtMeCtKUUxjTk9yY24wV3dsNS9oaFcwTVhzbWxTJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzhkTTVDcTJydG1ESG9vTHhiR1RQcXRBTEU2dnNYUUNrNWlMejNNdEdoN2d5UU1aN3E3SFQ1YTNJNU5DaFVnWTEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TU1OUVZldFJBMXN1c1FJVkFJUXkzQlN0Qmp2eDg5V3E4VGpyN0lEUDFTOGxBb0dCQUo1OGU0VzNWcU14bTdaeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtZSjJ4WjZLWDBaZTEwV25LWkR5VVJuK1Q5aUZJRmJLUkZFbEtEZW90WHd3WHdZT044eXJlM1pSR2tDKzIrZmlVJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzJiZHpJV1RUNkxNYklNVmJrKzA3UDRPWk94SjZYV0w5R3VZY09RY052WDQyeGgzNERQSGRxNFhkbEl0TVIyNU4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7QStPZFo0UzhWVnJwYjRqa2o0Y3lpcjE2MjhrZ0E0R0VBQUtCZ0hIMktZb2FRRUhucVd6UlV1REFHMEVZWFY2USZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs0dWNDNjhNUk9ZU0w2R0txTlMvQVVGYnZIMk5VeFFEN2FHbnRZZ1lQeGlDY2o5NGkzOHJnU1dnN3lTU3o5OU1BJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1IvWXY3T1NkK3VlajNyNlRsWFUzNHUrK3hZdlJvK3N2NG05bGIvam1YeVpKS2VDK2RQcWVVMUlUNWtDeWJVUkwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7SUxaZnJaeURzaVUvdmh2Vm96b3dPREFPQmdOVkhROEJBZjhFQkFNQ0I0QXdFUVlEVlIwT0JBb0VDSWF0WTdTRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtsWEVPTUJNR0ExVWRJd1FNTUFxQUNJT0dQa0IyTXVLVE1Ba0dCeXFHU000NEJBTURMd0F3TEFJVVN2VDAyaVFqJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1E1ZGE0V3BlMEJ2czdHdUNjVnNDRkNFY1FwYmpVZm54WEZYTldpRnlRNDlacldxbiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUNlcnRpZmljYXRlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5Q2VydGlmaWNhdGU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNSUlEU3pDQ0F3dWdBd0lCQWdJR0FPejQ2ZndKTUFrR0J5cUdTTTQ0QkFNd2JqRUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQjRYRFRBeU1EUXdNakl5TlRreU5Wb1hEVEV5TURRd01qSXhOVGt5TlZvd2JqRUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNSUlCdHpDQ0FTd0dCeXFHU000NEJBRXdnZ0VmQW9HQkFOM2puZ0w2cHhNaGFWdnJrMG9LM1krMkM0Mms1S2NoJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzNuQ2hTS0M3dkVHVFpCazBDTlhJaUV3UjlKYW55SkhRaDBvdkg0bEF0dzA2dHlmUmJDWG4rR0ZiUXhleWFWTHgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7MHprS3JhdTJZTWVpZ3ZGc1pNK3EwQXNUcSt4ZEFLVG1JdlBjeTBhSHVESkF4bnVyc2RQbHJjamswS0ZTQmpVdyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDt3MUJWNjFFRFd5NnhBaFVBaERMY0ZLMEdPL0h6MWFyeE9PdnNnTS9WTHlVQ2dZRUFubng3aGJkV296R2J0bkZnJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzekt0N2RsRWFRTDdiNStKVFomcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7dDNNaFpOUG9zeHNneFZ1VDdUcy9nNWs3RW5wZFl2MGE1aHc1QncyOWZqYkdIZmdNOGQycmhkMlVpMHhIYmswRCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs0NTFuaEx4Vld1bHZpT1NQaHpLS3ZYcmJ5U0FEZ1lRQUFvR0FmYWcrSENBQklKYWRERDlBYXJoZ2MyUVIzTHA3JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1BwTU9oMGxBd0xpSXN2a080VWxiZU9TMElKQzhiY3FMak0xZlZ3NkZHU2F4bXErNHkxYWcybTlrNklkRTBRaDUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TnhCL3hGa21kd3FYRlJJSlZwNDRPZVV5Z0I0N1lLNzZObVVJWUczRGRmaVBQVTNicXpqdnRPdEVUaUNIdm8yNSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs0RDZVandQcFlFclhSVWFqTmpBME1BNEdBMVVkRHdFQi93UUVBd0lDQkRBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CRUdBMVVkRGdRS0JBaURoajVBZGpMaWt6QUpCZ2NxaGtqT09BUURBeThBTUN3Q0ZFTHUwbnV3ZXFXN1dmMHMmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Z2svQ0FHR0wwQkdLQWhSTmRnUUdyNWl5WktvSDRvcVBtMFZKOVRqWExnPT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlDZXJ0aWZpY2F0ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOURhdGEmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvS2V5SW5mbyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZm9vOlJvb3QmZ3Q7PC9zcGFuPjwvcHJlPjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi01LnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tNS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg1Y2JmMwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tNS50eHQKQEAgLTAsMCArMSw5IEBACis8YmFyOlNvbWV0aGluZyB4bWw6bGFuZz0iZW4taWUiPgorICAgICA8Zm9vOlNvbWV0aGluZz4KKyAgICAgICAgPGJhcjpTb21ldGhpbmc+CisgICAgICAgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICAgICAgIDxiYXo6U29tZXRoaW5nPjwvYmF6OlNvbWV0aGluZz4KKyAgICAgICAgICAgPC9mb286U29tZXRoaW5nPgorICAgICAgICA8L2JhcjpTb21ldGhpbmc+CisgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgPC9iYXI6U29tZXRoaW5nPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tNi5odG1sIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi02Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE3ZjhiNwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tNi5odG1sCkBAIC0wLDAgKzEsNTU3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q2FuaW5pY2FsIFhNTCBub2RlIHNldDwvdGl0bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorPCEtLSAKKy5JTkNMVURFRCB7IAorICAgY29sb3I6ICMwMDAwMDA7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyB9IAorLkVYQ0xVREVEIHsgCisgICBjb2xvcjogIzY2NjY2NjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICM5OTk5OTk7IH0gCisuSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5OTk5OyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy0tPiAKKzwvc3R5bGU+IAorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0iIzk5OTk5OSI+Cis8aDE+RXhwbGFuYXRpb24gb2YgdGhlIG91dHB1dDwvaDE+Cis8cD5UaGUgZm9sbG93aW5nIHRleHQgY29udGFpbnMgdGhlIG5vZGVzZXQgb2YgdGhlIGdpdmVuIFJlZmVyZW5jZSBiZWZvcmUgaXQgaXMgY2Fub25pY2FsaXplZC4gVGhlcmUgZXhpc3QgZm91ciBkaWZmZXJlbnQgc3R5bGVzIHRvIGluZGljYXRlIGhvdyBhIGdpdmVuIG5vZGUgaXMgdHJlYXRlZC48L3A+Cis8dWw+Cis8bGkgY2xhc3M9IklOQ0xVREVEIj5BIG5vZGUgd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVEIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVEIj5BIG5vZGUgd2hpY2ggaXMgPGVtPk5PVDwvZW0+IGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIEVYQ0xVREVEIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgQU5EIGluIHRoZSBJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3QgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0Ugc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIE5PVCB0aGUgbm9kZSBzZXQgQU5EIGluIHRoZSBJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3QgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0Ugc3R5bGUuPC9saT4KKzwvdWw+Cis8aDE+T3V0cHV0PC9oMT4KKzxwcmU+Cis8c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtmb286Um9vdDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sOmxhbmc9ImVuLWllIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7YmFyOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2ZvbzpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtiYXI6U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Zm9vOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtiYXo6U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2JhejpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9mb286U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvYmFyOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2ZvbzpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9iYXI6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmVkSW5mbzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sOmxhbmc9ImVuLWllIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtDYW5vbmljYWxpemF0aW9uTWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0Nhbm9uaWNhbGl6YXRpb25NZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlTWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmVNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+bENPUy9KdHBtT0UrNGVYRmFPcFk0djRCT2dJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+T3lWcUVXWEU3Qys1TnlLdGNlVWtkbWlGTzlBPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+T3lWcUVXWEU3Qys1TnlLdGNlVWtkbWlGTzlBPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25vdCZtaWRkb3Q7KHNlbGY6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+bUwxYUFRL1JvT1BPMFNIajlLUit5WTNuNENNPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5iUWdGOElDeW1ZWlR1VVAwRkU0MGwzUTdCWms9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmJRZ0Y4SUN5bVlaVHVVUDBGRTQwbDNRN0Jaaz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDs9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5JSlFnZDU5RkoxUEF4eENZNW1JTDZjWmVtaTA9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPlNYR2lqTzFlQXJFYVhHcGhGMGR4d2o1ZnAxZz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPnJObTRJZDlhaDEybnVnelhBVUpnamFzN2xzMD08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25vdCZtaWRkb3Q7KHNlbGY6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj51T1FKUUlJVUVUWXlrMCtZRUJkYkVRd3JZYnc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDs9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPkFXdHFEYlhXS2Y4VFY3OEMyZDE2dWFyYnBHaz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25vdCZtaWRkb3Q7KHNlbGY6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPnVPUUpRSUlVRVRZeWswK1lFQmRiRVF3cllidz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDs9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+TnBqTVB6RUY1WVpGYno0bHM3ZU4zNlFXZFhzPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPkVhY0JOMmFCQk5TanBDT3paVU9PdlN2NHpIVT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmVkSW5mbyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0Z4MzRWYzA3ZlhhYzZxbXNoaGhMZThvZ2pFbFNtQzZZeFRuaHhqOHdNVFNrZnZ4WSt3WXRyUT09JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlVmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtLZXlJbmZvPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtLZXlWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RTQUtleVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1A8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7M2VPZUF2cW5FeUZwVyt1VFNncmRqN1lMamFUa3B5SGVjS0ZJb0x1OFFaTmtHVFFJMWNpSVRCSDBscWZJa2RDSCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7U2k4ZmlVQzNEVHEzSjlGc0plZjRZVnRERjdKcFV2SFRPUXF0cTdaZ3g2S0M4V3hrejZyUUN4T3I3RjBBcE9ZaSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7ODl6TFJvZTRNa0RHZTZ1eDArV3R5T1RRb1ZJR05URERVRlhyVVFOYkxyRT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9QJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+aERMY0ZLMEdPL0h6MWFyeE9PdnNnTS9WTHlVPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0c8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm54N2hiZFdvekdidG5GZ25iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzeiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7S3Q3ZGxFYVFMN2I1K0pUWnQzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7OGQycmhkMlVpMHhIYmswRDQ1MW5oTHhWV3VsdmlPU1BoektLdlhyYnlTQT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9HJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjZllwaWhwQVFlZXBiTkZTNE1BYlFSaGRYcERpNXdMcnd4RTVoSXZvWXFvMUw4QlFWdThmWTFURkFQdG9hZTFpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtCZy9HSUp5UDNpTGZ5dUJKYUR2SkpMUDMwd0JIOWkvczVKMzY1NlBldnBPVmRUZmk3NzdGaTlHajZ5L2liMlZ2JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsrT1pmSmtrcDRMNTArcDVUVWhQbVFMSnRSRXNndGwrdG5JT3lKVCsrRzlVPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1kmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EU0FLZXlWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvS2V5VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOURhdGE8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5U3ViamVjdE5hbWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtDTj1NZXJsaW4mbWlkZG90O0h1Z2hlcyxPVT1YL1NlY3VyZSxPPUJhbHRpbW9yZSZtaWRkb3Q7VGVjaG5vbG9naWVzJm1pZGRvdDtMdGQuLFNUPUR1YmxpbixDPUlFJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5U3ViamVjdE5hbWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlJc3N1ZXJTZXJpYWw8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUlzc3Vlck5hbWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Q049VHJhbnNpZW50Jm1pZGRvdDtDQSxPVT1YL1NlY3VyZSxPPUJhbHRpbW9yZSZtaWRkb3Q7VGVjaG5vbG9naWVzJm1pZGRvdDtMdGQuLFNUPUR1YmxpbixDPUlFJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUlzc3Vlck5hbWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5U2VyaWFsTnVtYmVyPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4xMDE3Nzg4MzcwMzQ4PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5U2VyaWFsTnVtYmVyJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUlzc3VlclNlcmlhbCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUNlcnRpZmljYXRlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJRFVEQ0NBeENnQXdJQkFnSUdBT3o0Nmcyc01Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUI0WERUQXlNRFF3TWpJeU5Ua3pNRm9YRFRFeU1EUXdNakl4TlRreU5Wb3diekVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFV01CUUdBMVVFQXhNTlRXVnliR2x1SUVoMVoyaGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3pDQ0FiY3dnZ0VzQmdjcWhrak9PQVFCTUlJQkh3S0JnUURkNDU0QytxY1RJV2xiNjVOS0N0MlB0Z3VOcE9TbiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtJZDV3b1VpZ3U3eEJrMlFaTkFqVnlJaE1FZlNXcDhpUjBJZEtMeCtKUUxjTk9yY24wV3dsNS9oaFcwTVhzbWxTJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzhkTTVDcTJydG1ESG9vTHhiR1RQcXRBTEU2dnNYUUNrNWlMejNNdEdoN2d5UU1aN3E3SFQ1YTNJNU5DaFVnWTEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TU1OUVZldFJBMXN1c1FJVkFJUXkzQlN0Qmp2eDg5V3E4VGpyN0lEUDFTOGxBb0dCQUo1OGU0VzNWcU14bTdaeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtZSjJ4WjZLWDBaZTEwV25LWkR5VVJuK1Q5aUZJRmJLUkZFbEtEZW90WHd3WHdZT044eXJlM1pSR2tDKzIrZmlVJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzJiZHpJV1RUNkxNYklNVmJrKzA3UDRPWk94SjZYV0w5R3VZY09RY052WDQyeGgzNERQSGRxNFhkbEl0TVIyNU4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7QStPZFo0UzhWVnJwYjRqa2o0Y3lpcjE2MjhrZ0E0R0VBQUtCZ0hIMktZb2FRRUhucVd6UlV1REFHMEVZWFY2USZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs0dWNDNjhNUk9ZU0w2R0txTlMvQVVGYnZIMk5VeFFEN2FHbnRZZ1lQeGlDY2o5NGkzOHJnU1dnN3lTU3o5OU1BJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1IvWXY3T1NkK3VlajNyNlRsWFUzNHUrK3hZdlJvK3N2NG05bGIvam1YeVpKS2VDK2RQcWVVMUlUNWtDeWJVUkwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7SUxaZnJaeURzaVUvdmh2Vm96b3dPREFPQmdOVkhROEJBZjhFQkFNQ0I0QXdFUVlEVlIwT0JBb0VDSWF0WTdTRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtsWEVPTUJNR0ExVWRJd1FNTUFxQUNJT0dQa0IyTXVLVE1Ba0dCeXFHU000NEJBTURMd0F3TEFJVVN2VDAyaVFqJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1E1ZGE0V3BlMEJ2czdHdUNjVnNDRkNFY1FwYmpVZm54WEZYTldpRnlRNDlacldxbiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUNlcnRpZmljYXRlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5Q2VydGlmaWNhdGU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNSUlEU3pDQ0F3dWdBd0lCQWdJR0FPejQ2ZndKTUFrR0J5cUdTTTQ0QkFNd2JqRUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQjRYRFRBeU1EUXdNakl5TlRreU5Wb1hEVEV5TURRd01qSXhOVGt5TlZvd2JqRUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNSUlCdHpDQ0FTd0dCeXFHU000NEJBRXdnZ0VmQW9HQkFOM2puZ0w2cHhNaGFWdnJrMG9LM1krMkM0Mms1S2NoJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzNuQ2hTS0M3dkVHVFpCazBDTlhJaUV3UjlKYW55SkhRaDBvdkg0bEF0dzA2dHlmUmJDWG4rR0ZiUXhleWFWTHgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7MHprS3JhdTJZTWVpZ3ZGc1pNK3EwQXNUcSt4ZEFLVG1JdlBjeTBhSHVESkF4bnVyc2RQbHJjamswS0ZTQmpVdyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDt3MUJWNjFFRFd5NnhBaFVBaERMY0ZLMEdPL0h6MWFyeE9PdnNnTS9WTHlVQ2dZRUFubng3aGJkV296R2J0bkZnJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzekt0N2RsRWFRTDdiNStKVFomcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7dDNNaFpOUG9zeHNneFZ1VDdUcy9nNWs3RW5wZFl2MGE1aHc1QncyOWZqYkdIZmdNOGQycmhkMlVpMHhIYmswRCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs0NTFuaEx4Vld1bHZpT1NQaHpLS3ZYcmJ5U0FEZ1lRQUFvR0FmYWcrSENBQklKYWRERDlBYXJoZ2MyUVIzTHA3JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1BwTU9oMGxBd0xpSXN2a080VWxiZU9TMElKQzhiY3FMak0xZlZ3NkZHU2F4bXErNHkxYWcybTlrNklkRTBRaDUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TnhCL3hGa21kd3FYRlJJSlZwNDRPZVV5Z0I0N1lLNzZObVVJWUczRGRmaVBQVTNicXpqdnRPdEVUaUNIdm8yNSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs0RDZVandQcFlFclhSVWFqTmpBME1BNEdBMVVkRHdFQi93UUVBd0lDQkRBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CRUdBMVVkRGdRS0JBaURoajVBZGpMaWt6QUpCZ2NxaGtqT09BUURBeThBTUN3Q0ZFTHUwbnV3ZXFXN1dmMHMmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Z2svQ0FHR0wwQkdLQWhSTmRnUUdyNWl5WktvSDRvcVBtMFZKOVRqWExnPT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlDZXJ0aWZpY2F0ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOURhdGEmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvS2V5SW5mbyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZm9vOlJvb3QmZ3Q7PC9zcGFuPjwvcHJlPjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi02LnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tNi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI0NWQwYgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tNi50eHQKQEAgLTAsMCArMSBAQAorIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiIHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiIgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyIgeG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyIgeG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iIHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciIgeG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6IiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiIHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiIgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyIgeG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTcuaHRtbCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tNy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyOTc3MDgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTcuaHRtbApAQCAtMCwwICsxLDU1NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNhbmluaWNhbCBYTUwgbm9kZSBzZXQ8L3RpdGxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKzwhLS0gCisuSU5DTFVERUQgeyAKKyAgIGNvbG9yOiAjMDAwMDAwOyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgfSAKKy5FWENMVURFRCB7IAorICAgY29sb3I6ICM2NjY2NjY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjOTk5OTk5OyB9IAorLklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy5FWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogIzk5OTk5OTsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCistLT4gCis8L3N0eWxlPiAKKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IiM5OTk5OTkiPgorPGgxPkV4cGxhbmF0aW9uIG9mIHRoZSBvdXRwdXQ8L2gxPgorPHA+VGhlIGZvbGxvd2luZyB0ZXh0IGNvbnRhaW5zIHRoZSBub2Rlc2V0IG9mIHRoZSBnaXZlbiBSZWZlcmVuY2UgYmVmb3JlIGl0IGlzIGNhbm9uaWNhbGl6ZWQuIFRoZXJlIGV4aXN0IGZvdXIgZGlmZmVyZW50IHN0eWxlcyB0byBpbmRpY2F0ZSBob3cgYSBnaXZlbiBub2RlIGlzIHRyZWF0ZWQuPC9wPgorPHVsPgorPGxpIGNsYXNzPSJJTkNMVURFRCI+QSBub2RlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRCI+QSBub2RlIHdoaWNoIGlzIDxlbT5OT1Q8L2VtPiBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCBFWENMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiBOT1QgdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8L3VsPgorPGgxPk91dHB1dDwvaDE+Cis8cHJlPgorPHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Zm9vOlJvb3Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpsYW5nPSJlbi1pZSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2JhcjpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtmb286U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7YmFyOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O2ZvbzpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7YmF6OlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9iYXo6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZm9vOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2JhcjpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9mb286U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvYmFyOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25lZEluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpsYW5nPSJlbi1pZSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Q2Fub25pY2FsaXphdGlvbk1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9DYW5vbmljYWxpemF0aW9uTWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZU1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlTWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmxDT1MvSnRwbU9FKzRlWEZhT3BZNHY0Qk9nST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk95VnFFV1hFN0MrNU55S3RjZVVrZG1pRk85QT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk95VnFFV1hFN0MrNU55S3RjZVVrZG1pRk85QT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPm1MMWFBUS9Sb09QTzBTSGo5S1IreVkzbjRDTT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+YlFnRjhJQ3ltWVpUdVVQMEZFNDBsM1E3QlprPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5iUWdGOElDeW1ZWlR1VVAwRkU0MGwzUTdCWms9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+SUpRZ2Q1OUZKMVBBeHhDWTVtSUw2Y1plbWkwPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5TWEdpak8xZUFyRWFYR3BoRjBkeHdqNWZwMWc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5yTm00SWQ5YWgxMm51Z3pYQVVKZ2phczdsczA9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+dU9RSlFJSVVFVFl5azArWUVCZGJFUXdyWWJ3PTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5BV3RxRGJYV0tmOFRWNzhDMmQxNnVhcmJwR2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj51T1FKUUlJVUVUWXlrMCtZRUJkYkVRd3JZYnc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk5wak1QekVGNVlaRmJ6NGxzN2VOMzZRV2RYcz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5FYWNCTjJhQkJOU2pwQ096WlVPT3ZTdjR6SFU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25lZEluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmVWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtGeDM0VmMwN2ZYYWM2cW1zaGhoTGU4b2dqRWxTbUM2WXhUbmh4ajh3TVRTa2Z2eFkrd1l0clE9PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5SW5mbzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEU0FLZXlWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtQPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzNlT2VBdnFuRXlGcFcrdVRTZ3JkajdZTGphVGtweUhlY0tGSW9MdThRWk5rR1RRSTFjaUlUQkgwbHFmSWtkQ0gmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1NpOGZpVUMzRFRxM0o5RnNKZWY0WVZ0REY3SnBVdkhUT1FxdHE3Wmd4NktDOFd4a3o2clFDeE9yN0YwQXBPWWkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozg5ekxSb2U0TWtER2U2dXgwK1d0eU9UUW9WSUdOVEREVUZYclVRTmJMckU9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1E8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1EmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtHPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25ueDdoYmRXb3pHYnRuRmduYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3omcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0t0N2RsRWFRTDdiNStKVFp0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ00mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzhkMnJoZDJVaTB4SGJrMEQ0NTFuaEx4Vld1bHZpT1NQaHpLS3ZYcmJ5U0E9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1k8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y2ZZcGlocEFRZWVwYk5GUzRNQWJRUmhkWHBEaTV3THJ3eEU1aEl2b1lxbzFMOEJRVnU4ZlkxVEZBUHRvYWUxaSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7QmcvR0lKeVAzaUxmeXVCSmFEdkpKTFAzMHdCSDlpL3M1SjM2NTZQZXZwT1ZkVGZpNzc3Rmk5R2o2eS9pYjJWdiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7K09aZkpra3A0TDUwK3A1VFVoUG1RTEp0UkVzZ3RsK3RuSU95SlQrK0c5VT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9ZJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRFNBS2V5VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0tleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlEYXRhPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOVN1YmplY3ROYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Q049TWVybGluJm1pZGRvdDtIdWdoZXMsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUmbWlkZG90O1RlY2hub2xvZ2llcyZtaWRkb3Q7THRkLixTVD1EdWJsaW4sQz1JRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOVN1YmplY3ROYW1lJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5SXNzdWVyU2VyaWFsPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlJc3N1ZXJOYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0NOPVRyYW5zaWVudCZtaWRkb3Q7Q0EsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUmbWlkZG90O1RlY2hub2xvZ2llcyZtaWRkb3Q7THRkLixTVD1EdWJsaW4sQz1JRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlJc3N1ZXJOYW1lJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOVNlcmlhbE51bWJlcjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MTAxNzc4ODM3MDM0ODwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOVNlcmlhbE51bWJlciZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlJc3N1ZXJTZXJpYWwmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlDZXJ0aWZpY2F0ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSURVRENDQXhDZ0F3SUJBZ0lHQU96NDZnMnNNQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CNFhEVEF5TURRd01qSXlOVGt6TUZvWERURXlNRFF3TWpJeE5Ua3lOVm93YnpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVdNQlFHQTFVRUF4TU5UV1Z5YkdsdUlFaDFaMmhsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N6Q0NBYmN3Z2dFc0JnY3Foa2pPT0FRQk1JSUJId0tCZ1FEZDQ1NEMrcWNUSVdsYjY1TktDdDJQdGd1TnBPU24mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7SWQ1d29VaWd1N3hCazJRWk5BalZ5SWhNRWZTV3A4aVIwSWRLTHgrSlFMY05PcmNuMFd3bDUvaGhXME1Yc21sUyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4ZE01Q3EycnRtREhvb0x4YkdUUHF0QUxFNnZzWFFDazVpTHozTXRHaDdneVFNWjdxN0hUNWEzSTVOQ2hVZ1kxJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01NTlFWZXRSQTFzdXNRSVZBSVF5M0JTdEJqdng4OVdxOFRqcjdJRFAxUzhsQW9HQkFKNThlNFczVnFNeG03WngmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7WUoyeFo2S1gwWmUxMFduS1pEeVVSbitUOWlGSUZiS1JGRWxLRGVvdFh3d1h3WU9OOHlyZTNaUkdrQysyK2ZpVSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsyYmR6SVdUVDZMTWJJTVZiayswN1A0T1pPeEo2WFdMOUd1WWNPUWNOdlg0MnhoMzREUEhkcTRYZGxJdE1SMjVOJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0ErT2RaNFM4VlZycGI0amtqNGN5aXIxNjI4a2dBNEdFQUFLQmdISDJLWW9hUUVIbnFXelJVdURBRzBFWVhWNlEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NHVjQzY4TVJPWVNMNkdLcU5TL0FVRmJ2SDJOVXhRRDdhR250WWdZUHhpQ2NqOTRpMzhyZ1NXZzd5U1N6OTlNQSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtSL1l2N09TZCt1ZWozcjZUbFhVMzR1Kyt4WXZSbytzdjRtOWxiL2ptWHlaSktlQytkUHFlVTFJVDVrQ3liVVJMJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0lMWmZyWnlEc2lVL3ZodlZvem93T0RBT0JnTlZIUThCQWY4RUJBTUNCNEF3RVFZRFZSME9CQW9FQ0lhdFk3U0UmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bFhFT01CTUdBMVVkSXdRTU1BcUFDSU9HUGtCMk11S1RNQWtHQnlxR1NNNDRCQU1ETHdBd0xBSVVTdlQwMmlRaiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtRNWRhNFdwZTBCdnM3R3VDY1ZzQ0ZDRWNRcGJqVWZueFhGWE5XaUZ5UTQ5WnJXcW4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlDZXJ0aWZpY2F0ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUNlcnRpZmljYXRlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJRFN6Q0NBd3VnQXdJQkFnSUdBT3o0NmZ3Sk1Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUI0WERUQXlNRFF3TWpJeU5Ua3lOVm9YRFRFeU1EUXdNakl4TlRreU5Wb3diakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJQnR6Q0NBU3dHQnlxR1NNNDRCQUV3Z2dFZkFvR0JBTjNqbmdMNnB4TWhhVnZyazBvSzNZKzJDNDJrNUtjaCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDszbkNoU0tDN3ZFR1RaQmswQ05YSWlFd1I5SmFueUpIUWgwb3ZINGxBdHcwNnR5ZlJiQ1huK0dGYlF4ZXlhVkx4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzB6a0tyYXUyWU1laWd2RnNaTStxMEFzVHEreGRBS1RtSXZQY3kwYUh1REpBeG51cnNkUGxyY2prMEtGU0JqVXcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7dzFCVjYxRURXeTZ4QWhVQWhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VUNnWUVBbm54N2hiZFdvekdidG5GZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtuYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3pLdDdkbEVhUUw3YjUrSlRaJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O3QzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTThkMnJoZDJVaTB4SGJrMEQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBRGdZUUFBb0dBZmFnK0hDQUJJSmFkREQ5QWFyaGdjMlFSM0xwNyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtQcE1PaDBsQXdMaUlzdmtPNFVsYmVPUzBJSkM4YmNxTGpNMWZWdzZGR1NheG1xKzR5MWFnMm05azZJZEUwUWg1JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O054Qi94RmttZHdxWEZSSUpWcDQ0T2VVeWdCNDdZSzc2Tm1VSVlHM0RkZmlQUFUzYnF6anZ0T3RFVGlDSHZvMjUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NEQ2VWp3UHBZRXJYUlVhak5qQTBNQTRHQTFVZER3RUIvd1FFQXdJQ0JEQVBCZ05WSFJNRUNEQUdBUUgvQWdFQSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQkVHQTFVZERnUUtCQWlEaGo1QWRqTGlrekFKQmdjcWhrak9PQVFEQXk4QU1Dd0NGRUx1MG51d2VxVzdXZjBzJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2drL0NBR0dMMEJHS0FoUk5kZ1FHcjVpeVpLb0g0b3FQbTBWSjlUalhMZz09JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5Q2VydGlmaWNhdGUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlEYXRhJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0tleUluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2ZvbzpSb290Jmd0Ozwvc3Bhbj48L3ByZT48L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tNy50eHQgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0MmZmYzEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTcudHh0CkBAIC0wLDAgKzEgQEAKKyB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyIgeG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iIHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTguaHRtbCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tOC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4YzFiNzkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTguaHRtbApAQCAtMCwwICsxLDU1NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNhbmluaWNhbCBYTUwgbm9kZSBzZXQ8L3RpdGxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKzwhLS0gCisuSU5DTFVERUQgeyAKKyAgIGNvbG9yOiAjMDAwMDAwOyAKKyAgIGJhY2tncm91bmQtY29sb3I6IAorICAgI0ZGRkZGRjsgCisgICBmb250LXdlaWdodDogYm9sZDsgfSAKKy5FWENMVURFRCB7IAorICAgY29sb3I6ICM2NjY2NjY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjOTk5OTk5OyB9IAorLklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy5FWENMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IAorICAgY29sb3I6ICMwMDAwRkY7IAorICAgYmFja2dyb3VuZC1jb2xvcjogIzk5OTk5OTsgCisgICBmb250LXN0eWxlOiBpdGFsaWM7IH0gCistLT4gCis8L3N0eWxlPiAKKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IiM5OTk5OTkiPgorPGgxPkV4cGxhbmF0aW9uIG9mIHRoZSBvdXRwdXQ8L2gxPgorPHA+VGhlIGZvbGxvd2luZyB0ZXh0IGNvbnRhaW5zIHRoZSBub2Rlc2V0IG9mIHRoZSBnaXZlbiBSZWZlcmVuY2UgYmVmb3JlIGl0IGlzIGNhbm9uaWNhbGl6ZWQuIFRoZXJlIGV4aXN0IGZvdXIgZGlmZmVyZW50IHN0eWxlcyB0byBpbmRpY2F0ZSBob3cgYSBnaXZlbiBub2RlIGlzIHRyZWF0ZWQuPC9wPgorPHVsPgorPGxpIGNsYXNzPSJJTkNMVURFRCI+QSBub2RlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJFWENMVURFRCI+QSBub2RlIHdoaWNoIGlzIDxlbT5OT1Q8L2VtPiBpbiB0aGUgbm9kZSBzZXQgaXMgbGFiZWxlZCBFWENMVURFRCBzdHlsZS48L2xpPgorPGxpIGNsYXNzPSJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSI+QSBuYW1lc3BhY2Ugd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiBOT1QgdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+Cis8L3VsPgorPGgxPk91dHB1dDwvaDE+Cis8cHJlPgorPHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Zm9vOlJvb3Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpsYW5nPSJlbi1pZSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2JhcjpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtmb286U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7YmFyOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2ZvbzpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7YmF6OlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9iYXo6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvZm9vOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2JhcjpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9mb286U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvYmFyOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25lZEluZm88L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbDpsYW5nPSJlbi1pZSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7Q2Fub25pY2FsaXphdGlvbk1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9DYW5vbmljYWxpemF0aW9uTWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZU1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlTWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmxDT1MvSnRwbU9FKzRlWEZhT3BZNHY0Qk9nST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk95VnFFV1hFN0MrNU55S3RjZVVrZG1pRk85QT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk95VnFFV1hFN0MrNU55S3RjZVVrZG1pRk85QT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPm1MMWFBUS9Sb09QTzBTSGo5S1IreVkzbjRDTT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+YlFnRjhJQ3ltWVpUdVVQMEZFNDBsM1E3QlprPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5iUWdGOElDeW1ZWlR1VVAwRkU0MGwzUTdCWms9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+SUpRZ2Q1OUZKMVBBeHhDWTVtSUw2Y1plbWkwPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5TWEdpak8xZUFyRWFYR3BoRjBkeHdqNWZwMWc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5yTm00SWQ5YWgxMm51Z3pYQVVKZ2phczdsczA9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+dU9RSlFJSVVFVFl5azArWUVCZGJFUXdyWWJ3PTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5BV3RxRGJYV0tmOFRWNzhDMmQxNnVhcmJwR2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtub3QmbWlkZG90OyhzZWxmOjpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj51T1FKUUlJVUVUWXlrMCtZRUJkYkVRd3JZYnc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPk5wak1QekVGNVlaRmJ6NGxzN2VOMzZRV2RYcz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5FYWNCTjJhQkJOU2pwQ096WlVPT3ZTdjR6SFU9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25lZEluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmVWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtGeDM0VmMwN2ZYYWM2cW1zaGhoTGU4b2dqRWxTbUM2WXhUbmh4ajh3TVRTa2Z2eFkrd1l0clE9PSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5SW5mbzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7S2V5VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEU0FLZXlWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtQPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzNlT2VBdnFuRXlGcFcrdVRTZ3JkajdZTGphVGtweUhlY0tGSW9MdThRWk5rR1RRSTFjaUlUQkgwbHFmSWtkQ0gmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1NpOGZpVUMzRFRxM0o5RnNKZWY0WVZ0REY3SnBVdkhUT1FxdHE3Wmd4NktDOFd4a3o2clFDeE9yN0YwQXBPWWkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozg5ekxSb2U0TWtER2U2dXgwK1d0eU9UUW9WSUdOVEREVUZYclVRTmJMckU9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1E8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1EmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtHPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25ueDdoYmRXb3pHYnRuRmduYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3omcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0t0N2RsRWFRTDdiNStKVFp0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ00mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzhkMnJoZDJVaTB4SGJrMEQ0NTFuaEx4Vld1bHZpT1NQaHpLS3ZYcmJ5U0E9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1k8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y2ZZcGlocEFRZWVwYk5GUzRNQWJRUmhkWHBEaTV3THJ3eEU1aEl2b1lxbzFMOEJRVnU4ZlkxVEZBUHRvYWUxaSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7QmcvR0lKeVAzaUxmeXVCSmFEdkpKTFAzMHdCSDlpL3M1SjM2NTZQZXZwT1ZkVGZpNzc3Rmk5R2o2eS9pYjJWdiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7K09aZkpra3A0TDUwK3A1VFVoUG1RTEp0UkVzZ3RsK3RuSU95SlQrK0c5VT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9ZJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRFNBS2V5VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0tleVZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlEYXRhPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOVN1YmplY3ROYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Q049TWVybGluJm1pZGRvdDtIdWdoZXMsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUmbWlkZG90O1RlY2hub2xvZ2llcyZtaWRkb3Q7THRkLixTVD1EdWJsaW4sQz1JRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOVN1YmplY3ROYW1lJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5SXNzdWVyU2VyaWFsPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlJc3N1ZXJOYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0NOPVRyYW5zaWVudCZtaWRkb3Q7Q0EsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUmbWlkZG90O1RlY2hub2xvZ2llcyZtaWRkb3Q7THRkLixTVD1EdWJsaW4sQz1JRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlJc3N1ZXJOYW1lJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOVNlcmlhbE51bWJlcjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MTAxNzc4ODM3MDM0ODwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOVNlcmlhbE51bWJlciZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlJc3N1ZXJTZXJpYWwmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlDZXJ0aWZpY2F0ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01JSURVRENDQXhDZ0F3SUJBZ0lHQU96NDZnMnNNQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CNFhEVEF5TURRd01qSXlOVGt6TUZvWERURXlNRFF3TWpJeE5Ua3lOVm93YnpFTE1Ba0dBMVVFQmhNQ1NVVXgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7RHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVdNQlFHQTFVRUF4TU5UV1Z5YkdsdUlFaDFaMmhsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N6Q0NBYmN3Z2dFc0JnY3Foa2pPT0FRQk1JSUJId0tCZ1FEZDQ1NEMrcWNUSVdsYjY1TktDdDJQdGd1TnBPU24mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7SWQ1d29VaWd1N3hCazJRWk5BalZ5SWhNRWZTV3A4aVIwSWRLTHgrSlFMY05PcmNuMFd3bDUvaGhXME1Yc21sUyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs4ZE01Q3EycnRtREhvb0x4YkdUUHF0QUxFNnZzWFFDazVpTHozTXRHaDdneVFNWjdxN0hUNWEzSTVOQ2hVZ1kxJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01NTlFWZXRSQTFzdXNRSVZBSVF5M0JTdEJqdng4OVdxOFRqcjdJRFAxUzhsQW9HQkFKNThlNFczVnFNeG03WngmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7WUoyeFo2S1gwWmUxMFduS1pEeVVSbitUOWlGSUZiS1JGRWxLRGVvdFh3d1h3WU9OOHlyZTNaUkdrQysyK2ZpVSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsyYmR6SVdUVDZMTWJJTVZiayswN1A0T1pPeEo2WFdMOUd1WWNPUWNOdlg0MnhoMzREUEhkcTRYZGxJdE1SMjVOJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0ErT2RaNFM4VlZycGI0amtqNGN5aXIxNjI4a2dBNEdFQUFLQmdISDJLWW9hUUVIbnFXelJVdURBRzBFWVhWNlEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NHVjQzY4TVJPWVNMNkdLcU5TL0FVRmJ2SDJOVXhRRDdhR250WWdZUHhpQ2NqOTRpMzhyZ1NXZzd5U1N6OTlNQSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtSL1l2N09TZCt1ZWozcjZUbFhVMzR1Kyt4WXZSbytzdjRtOWxiL2ptWHlaSktlQytkUHFlVTFJVDVrQ3liVVJMJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0lMWmZyWnlEc2lVL3ZodlZvem93T0RBT0JnTlZIUThCQWY4RUJBTUNCNEF3RVFZRFZSME9CQW9FQ0lhdFk3U0UmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bFhFT01CTUdBMVVkSXdRTU1BcUFDSU9HUGtCMk11S1RNQWtHQnlxR1NNNDRCQU1ETHdBd0xBSVVTdlQwMmlRaiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtRNWRhNFdwZTBCdnM3R3VDY1ZzQ0ZDRWNRcGJqVWZueFhGWE5XaUZ5UTQ5WnJXcW4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlDZXJ0aWZpY2F0ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUNlcnRpZmljYXRlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJRFN6Q0NBd3VnQXdJQkFnSUdBT3o0NmZ3Sk1Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUI0WERUQXlNRFF3TWpJeU5Ua3lOVm9YRFRFeU1EUXdNakl4TlRreU5Wb3diakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJQnR6Q0NBU3dHQnlxR1NNNDRCQUV3Z2dFZkFvR0JBTjNqbmdMNnB4TWhhVnZyazBvSzNZKzJDNDJrNUtjaCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDszbkNoU0tDN3ZFR1RaQmswQ05YSWlFd1I5SmFueUpIUWgwb3ZINGxBdHcwNnR5ZlJiQ1huK0dGYlF4ZXlhVkx4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzB6a0tyYXUyWU1laWd2RnNaTStxMEFzVHEreGRBS1RtSXZQY3kwYUh1REpBeG51cnNkUGxyY2prMEtGU0JqVXcmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7dzFCVjYxRURXeTZ4QWhVQWhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VUNnWUVBbm54N2hiZFdvekdidG5GZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtuYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3pLdDdkbEVhUUw3YjUrSlRaJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O3QzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTThkMnJoZDJVaTB4SGJrMEQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBRGdZUUFBb0dBZmFnK0hDQUJJSmFkREQ5QWFyaGdjMlFSM0xwNyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtQcE1PaDBsQXdMaUlzdmtPNFVsYmVPUzBJSkM4YmNxTGpNMWZWdzZGR1NheG1xKzR5MWFnMm05azZJZEUwUWg1JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O054Qi94RmttZHdxWEZSSUpWcDQ0T2VVeWdCNDdZSzc2Tm1VSVlHM0RkZmlQUFUzYnF6anZ0T3RFVGlDSHZvMjUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7NEQ2VWp3UHBZRXJYUlVhak5qQTBNQTRHQTFVZER3RUIvd1FFQXdJQ0JEQVBCZ05WSFJNRUNEQUdBUUgvQWdFQSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQkVHQTFVZERnUUtCQWlEaGo1QWRqTGlrekFKQmdjcWhrak9PQVFEQXk4QU1Dd0NGRUx1MG51d2VxVzdXZjBzJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2drL0NBR0dMMEJHS0FoUk5kZ1FHcjVpeVpLb0g0b3FQbTBWSjlUalhMZz09JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5Q2VydGlmaWNhdGUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlEYXRhJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0tleUluZm8mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7Cis8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L2ZvbzpSb290Jmd0Ozwvc3Bhbj48L3ByZT48L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tOC50eHQgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmNWJiYjQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNC9jMTRuLTgudHh0CkBAIC0wLDAgKzEsOSBAQAorPGJhcjpTb21ldGhpbmcgeG1sOmxhbmc9ImVuLWllIj4KKyAgICAgPGZvbzpTb21ldGhpbmcgeG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPgorICAgICAgICA8YmFyOlNvbWV0aGluZyB4bWxucz0iIj4KKyAgICAgICAgICAgPGZvbzpTb21ldGhpbmcgeG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPgorICAgICAgICAgICAgIDxiYXo6U29tZXRoaW5nIHhtbG5zPSIiPjwvYmF6OlNvbWV0aGluZz4KKyAgICAgICAgICAgPC9mb286U29tZXRoaW5nPgorICAgICAgICA8L2JhcjpTb21ldGhpbmc+CisgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgPC9iYXI6U29tZXRoaW5nPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tOS5odG1sIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi05Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTMwZTZmMwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tOS5odG1sCkBAIC0wLDAgKzEsNTU3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q2FuaW5pY2FsIFhNTCBub2RlIHNldDwvdGl0bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorPCEtLSAKKy5JTkNMVURFRCB7IAorICAgY29sb3I6ICMwMDAwMDA7IAorICAgYmFja2dyb3VuZC1jb2xvcjogCisgICAjRkZGRkZGOyAKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOyB9IAorLkVYQ0xVREVEIHsgCisgICBjb2xvcjogIzY2NjY2NjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAKKyAgICM5OTk5OTk7IH0gCisuSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyAKKyAgIGNvbG9yOiAjMDAwMEZGOyAKKyAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7IAorICAgZm9udC13ZWlnaHQ6IGJvbGQ7IAorICAgZm9udC1zdHlsZTogaXRhbGljOyB9IAorLkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgCisgICBjb2xvcjogIzAwMDBGRjsgCisgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5OTk5OyAKKyAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSAKKy0tPiAKKzwvc3R5bGU+IAorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0iIzk5OTk5OSI+Cis8aDE+RXhwbGFuYXRpb24gb2YgdGhlIG91dHB1dDwvaDE+Cis8cD5UaGUgZm9sbG93aW5nIHRleHQgY29udGFpbnMgdGhlIG5vZGVzZXQgb2YgdGhlIGdpdmVuIFJlZmVyZW5jZSBiZWZvcmUgaXQgaXMgY2Fub25pY2FsaXplZC4gVGhlcmUgZXhpc3QgZm91ciBkaWZmZXJlbnQgc3R5bGVzIHRvIGluZGljYXRlIGhvdyBhIGdpdmVuIG5vZGUgaXMgdHJlYXRlZC48L3A+Cis8dWw+Cis8bGkgY2xhc3M9IklOQ0xVREVEIj5BIG5vZGUgd2hpY2ggaXMgaW4gdGhlIG5vZGUgc2V0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVEIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IkVYQ0xVREVEIj5BIG5vZGUgd2hpY2ggaXMgPGVtPk5PVDwvZW0+IGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIEVYQ0xVREVEIHN0eWxlLjwvbGk+Cis8bGkgY2xhc3M9IklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiB0aGUgbm9kZSBzZXQgQU5EIGluIHRoZSBJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3QgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0Ugc3R5bGUuPC9saT4KKzxsaSBjbGFzcz0iRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIE5PVCB0aGUgbm9kZSBzZXQgQU5EIGluIHRoZSBJbmNsdXNpdmVOYW1lc3BhY2VzIFByZWZpeExpc3QgaXMgbGFiZWxlZCB1c2luZyB0aGUgSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0Ugc3R5bGUuPC9saT4KKzwvdWw+Cis8aDE+T3V0cHV0PC9oMT4KKzxwcmU+Cis8c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtmb286Um9vdDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sOmxhbmc9ImVuLWllIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7YmFyOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0O2ZvbzpTb21ldGhpbmc8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtiYXI6U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7Zm9vOlNvbWV0aGluZzwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDtiYXo6U29tZXRoaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2JhejpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9mb286U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iSU5DTFVERUQiPiZsdDsvYmFyOlNvbWV0aGluZyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IklOQ0xVREVEIj4mbHQ7L2ZvbzpTb21ldGhpbmcmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJJTkNMVURFRCI+Jmx0Oy9iYXI6U29tZXRoaW5nJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtTaWduYXR1cmU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmVkSW5mbzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sOmxhbmc9ImVuLWllIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtDYW5vbmljYWxpemF0aW9uTWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0Nhbm9uaWNhbGl6YXRpb25NZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7U2lnbmF0dXJlTWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9TaWduYXR1cmVNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+bENPUy9KdHBtT0UrNGVYRmFPcFk0djRCT2dJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJhciIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXI6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJmb28iKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6Zm9vOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmF6IikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhejpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDtvciZtaWRkb3Q7c2VsZjo6dGV4dCgpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+T3lWcUVXWEU3Qys1TnlLdGNlVWtkbWlGTzlBPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+T3lWcUVXWEU3Qys1TnlLdGNlVWtkbWlGTzlBPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25vdCZtaWRkb3Q7KHNlbGY6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+bUwxYUFRL1JvT1BPMFNIajlLUit5WTNuNENNPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Oyhjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopJm1pZGRvdDsmbWlkZG90OyE9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5iUWdGOElDeW1ZWlR1VVAwRkU0MGwzUTdCWms9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPmJRZ0Y4SUN5bVlaVHVVUDBGRTQwbDNRN0Jaaz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDs9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5JSlFnZDU5RkoxUEF4eENZNW1JTDZjWmVtaTA9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPlNYR2lqTzFlQXJFYVhHcGhGMGR4d2o1ZnAxZz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7PSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkmbWlkZG90O21vZCZtaWRkb3Q7MikmbWlkZG90Oz0mbWlkZG90OzEpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPnJObTRJZDlhaDEybnVnelhBVUpnamFzN2xzMD08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiYmFyIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmJhcjpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImZvbyIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50Ojpmb286U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXoiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmF6OlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90O29yJm1pZGRvdDtzZWxmOjp0ZXh0KCkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25vdCZtaWRkb3Q7KHNlbGY6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj51T1FKUUlJVUVUWXlrMCtZRUJkYkVRd3JZYnc9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikmbWlkZG90OyZtaWRkb3Q7IT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2NvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiZtaWRkb3Q7fCZtaWRkb3Q7c2VsZjo6bm9kZSgpKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDs9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc3RyaW5nKHNlbGY6Om5vZGUoKSkmbWlkZG90Oz0mbWlkZG90O25hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90Oz0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpJm1pZGRvdDttb2QmbWlkZG90OzIpJm1pZGRvdDs9Jm1pZGRvdDsxKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPkFXdHFEYlhXS2Y4VFY3OEMyZDE2dWFyYnBHaz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyJiYXIiKSZtaWRkb3Q7b3ImbWlkZG90O3BhcmVudDo6YmFyOlNvbWV0aGluZykmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KChuYW1lKCkmbWlkZG90OyE9Jm1pZGRvdDsiZm9vIikmbWlkZG90O29yJm1pZGRvdDtwYXJlbnQ6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDshPSZtaWRkb3Q7ImJheiIpJm1pZGRvdDtvciZtaWRkb3Q7cGFyZW50OjpiYXo6U29tZXRoaW5nKSZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoKG5hbWUoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7b3ImbWlkZG90O3NlbGY6OnRleHQoKSkmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWFBhdGgmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7SW5jbHVzaXZlTmFtZXNwYWNlczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9JbmNsdXNpdmVOYW1lc3BhY2VzJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdE1ldGhvZDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RNZXRob2QmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RpZ2VzdFZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EaWdlc3RWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUmVmZXJlbmNlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1JlZmVyZW5jZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gVVJJPSIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm1zPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WFBhdGg8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2FuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHNlbGY6OnRleHQoKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KG5hbWVzcGFjZS11cmkoKSZtaWRkb3Q7IT0mbWlkZG90OyIiKSZtaWRkb3Q7Jm1pZGRvdDtvciZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7KHN0cmluZyhzZWxmOjpub2RlKCkpJm1pZGRvdDs9Jm1pZGRvdDtuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25vdCZtaWRkb3Q7KHNlbGY6OmZvbzpTb21ldGhpbmcpJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPnVPUUpRSUlVRVRZeWswK1lFQmRiRVF3cllidz08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDshPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqJm1pZGRvdDt8Jm1pZGRvdDtzZWxmOjpub2RlKCkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoc2VsZjo6dGV4dCgpJm1pZGRvdDsmbWlkZG90O29yJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsobmFtZXNwYWNlLXVyaSgpJm1pZGRvdDshPSZtaWRkb3Q7IiIpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UmVmZXJlbmNlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBVUkk9IiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3JtPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYUGF0aDwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7YW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyZtaWRkb3Q7Jm1pZGRvdDthbmQmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSZtaWRkb3Q7Jm1pZGRvdDs9JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiombWlkZG90O3wmbWlkZG90O3NlbGY6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+TnBqTVB6RUY1WVpGYno0bHM3ZU4zNlFXZFhzPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzdHJpbmcoc2VsZjo6bm9kZSgpKSZtaWRkb3Q7PSZtaWRkb3Q7bmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1hQYXRoJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1RyYW5zZm9ybSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1RyYW5zZm9ybTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0luY2x1c2l2ZU5hbWVzcGFjZXM8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4gUHJlZml4TGlzdD0iI2RlZmF1bHQiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvSW5jbHVzaXZlTmFtZXNwYWNlcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm1zJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RNZXRob2Q8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0TWV0aG9kJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtEaWdlc3RWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvRGlnZXN0VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1JlZmVyZW5jZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtSZWZlcmVuY2U8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFVSST0iIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7VHJhbnNmb3Jtczwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1hQYXRoPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDthbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nJm1pZGRvdDsmbWlkZG90O2FuZCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhzZWxmOjp0ZXh0KCkmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyhuYW1lc3BhY2UtdXJpKCkmbWlkZG90OyE9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7b3ImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygobmFtZSgpJm1pZGRvdDs9Jm1pZGRvdDsiIikmbWlkZG90OyZtaWRkb3Q7YW5kJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OygoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSZtaWRkb3Q7bW9kJm1pZGRvdDsyKSZtaWRkb3Q7PSZtaWRkb3Q7MSkpKSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YUGF0aCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9UcmFuc2Zvcm0mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtUcmFuc2Zvcm08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtJbmNsdXNpdmVOYW1lc3BhY2VzPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IFByZWZpeExpc3Q9IiNkZWZhdWx0Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0luY2x1c2l2ZU5hbWVzcGFjZXMmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvVHJhbnNmb3JtcyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0TWV0aG9kPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdE1ldGhvZCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7RGlnZXN0VmFsdWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPkVhY0JOMmFCQk5TanBDT3paVU9PdlN2NHpIVT08L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L0RpZ2VzdFZhbHVlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9SZWZlcmVuY2UmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmVkSW5mbyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1NpZ25hdHVyZVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0Z4MzRWYzA3ZlhhYzZxbXNoaGhMZThvZ2pFbFNtQzZZeFRuaHhqOHdNVFNrZnZ4WSt3WXRyUT09JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvU2lnbmF0dXJlVmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtLZXlJbmZvPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtLZXlWYWx1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0RTQUtleVZhbHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1A8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7M2VPZUF2cW5FeUZwVyt1VFNncmRqN1lMamFUa3B5SGVjS0ZJb0x1OFFaTmtHVFFJMWNpSVRCSDBscWZJa2RDSCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7U2k4ZmlVQzNEVHEzSjlGc0plZjRZVnRERjdKcFV2SFRPUXF0cTdaZ3g2S0M4V3hrejZyUUN4T3I3RjBBcE9ZaSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7ODl6TFJvZTRNa0RHZTZ1eDArV3R5T1RRb1ZJR05URERVRlhyVVFOYkxyRT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9QJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7UTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+aERMY0ZLMEdPL0h6MWFyeE9PdnNnTS9WTHlVPTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvUSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O0c8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7bm54N2hiZFdvekdidG5GZ25iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzeiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7S3Q3ZGxFYVFMN2I1K0pUWnQzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7OGQycmhkMlVpMHhIYmswRDQ1MW5oTHhWV3VsdmlPU1BoektLdlhyYnlTQT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9HJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WTwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtjZllwaWhwQVFlZXBiTkZTNE1BYlFSaGRYcERpNXdMcnd4RTVoSXZvWXFvMUw4QlFWdThmWTFURkFQdG9hZTFpJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtCZy9HSUp5UDNpTGZ5dUJKYUR2SkpMUDMwd0JIOWkvczVKMzY1NlBldnBPVmRUZmk3NzdGaTlHajZ5L2liMlZ2JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsrT1pmSmtrcDRMNTArcDVUVWhQbVFMSnRSRXNndGwrdG5JT3lKVCsrRzlVPSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1kmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9EU0FLZXlWYWx1ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvS2V5VmFsdWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOURhdGE8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5U3ViamVjdE5hbWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtDTj1NZXJsaW4mbWlkZG90O0h1Z2hlcyxPVT1YL1NlY3VyZSxPPUJhbHRpbW9yZSZtaWRkb3Q7VGVjaG5vbG9naWVzJm1pZGRvdDtMdGQuLFNUPUR1YmxpbixDPUlFJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5U3ViamVjdE5hbWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0O1g1MDlJc3N1ZXJTZXJpYWw8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUlzc3Vlck5hbWU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Q049VHJhbnNpZW50Jm1pZGRvdDtDQSxPVT1YL1NlY3VyZSxPPUJhbHRpbW9yZSZtaWRkb3Q7VGVjaG5vbG9naWVzJm1pZGRvdDtMdGQuLFNUPUR1YmxpbixDPUlFJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUlzc3Vlck5hbWUmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5U2VyaWFsTnVtYmVyPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4xMDE3Nzg4MzcwMzQ4PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmx0Oy9YNTA5U2VyaWFsTnVtYmVyJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUlzc3VlclNlcmlhbCZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7WDUwOUNlcnRpZmljYXRlPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIjwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUlJRFVEQ0NBeENnQXdJQkFnSUdBT3o0Nmcyc01Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkImcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TUI0WERUQXlNRFF3TWpJeU5Ua3pNRm9YRFRFeU1EUXdNakl4TlRreU5Wb3diekVMTUFrR0ExVUVCaE1DU1VVeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O2N5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFV01CUUdBMVVFQXhNTlRXVnliR2x1SUVoMVoyaGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3pDQ0FiY3dnZ0VzQmdjcWhrak9PQVFCTUlJQkh3S0JnUURkNDU0QytxY1RJV2xiNjVOS0N0MlB0Z3VOcE9TbiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtJZDV3b1VpZ3U3eEJrMlFaTkFqVnlJaE1FZlNXcDhpUjBJZEtMeCtKUUxjTk9yY24wV3dsNS9oaFcwTVhzbWxTJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzhkTTVDcTJydG1ESG9vTHhiR1RQcXRBTEU2dnNYUUNrNWlMejNNdEdoN2d5UU1aN3E3SFQ1YTNJNU5DaFVnWTEmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TU1OUVZldFJBMXN1c1FJVkFJUXkzQlN0Qmp2eDg5V3E4VGpyN0lEUDFTOGxBb0dCQUo1OGU0VzNWcU14bTdaeCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtZSjJ4WjZLWDBaZTEwV25LWkR5VVJuK1Q5aUZJRmJLUkZFbEtEZW90WHd3WHdZT044eXJlM1pSR2tDKzIrZmlVJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzJiZHpJV1RUNkxNYklNVmJrKzA3UDRPWk94SjZYV0w5R3VZY09RY052WDQyeGgzNERQSGRxNFhkbEl0TVIyNU4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7QStPZFo0UzhWVnJwYjRqa2o0Y3lpcjE2MjhrZ0E0R0VBQUtCZ0hIMktZb2FRRUhucVd6UlV1REFHMEVZWFY2USZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs0dWNDNjhNUk9ZU0w2R0txTlMvQVVGYnZIMk5VeFFEN2FHbnRZZ1lQeGlDY2o5NGkzOHJnU1dnN3lTU3o5OU1BJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1IvWXY3T1NkK3VlajNyNlRsWFUzNHUrK3hZdlJvK3N2NG05bGIvam1YeVpKS2VDK2RQcWVVMUlUNWtDeWJVUkwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7SUxaZnJaeURzaVUvdmh2Vm96b3dPREFPQmdOVkhROEJBZjhFQkFNQ0I0QXdFUVlEVlIwT0JBb0VDSWF0WTdTRSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtsWEVPTUJNR0ExVWRJd1FNTUFxQUNJT0dQa0IyTXVLVE1Ba0dCeXFHU000NEJBTURMd0F3TEFJVVN2VDAyaVFqJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1E1ZGE0V3BlMEJ2czdHdUNjVnNDRkNFY1FwYmpVZm54WEZYTldpRnlRNDlacldxbiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOUNlcnRpZmljYXRlJmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDtYNTA5Q2VydGlmaWNhdGU8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4geG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ijwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+Jmd0Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNSUlEU3pDQ0F3dWdBd0lCQWdJR0FPejQ2ZndKTUFrR0J5cUdTTTQ0QkFNd2JqRUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNQjRYRFRBeU1EUXdNakl5TlRreU5Wb1hEVEV5TURRd01qSXhOVGt5TlZvd2JqRUxNQWtHQTFVRUJoTUNTVVV4JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O0R6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Y3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQiZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDtNSUlCdHpDQ0FTd0dCeXFHU000NEJBRXdnZ0VmQW9HQkFOM2puZ0w2cHhNaGFWdnJrMG9LM1krMkM0Mms1S2NoJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OzNuQ2hTS0M3dkVHVFpCazBDTlhJaUV3UjlKYW55SkhRaDBvdkg0bEF0dzA2dHlmUmJDWG4rR0ZiUXhleWFWTHgmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7MHprS3JhdTJZTWVpZ3ZGc1pNK3EwQXNUcSt4ZEFLVG1JdlBjeTBhSHVESkF4bnVyc2RQbHJjamswS0ZTQmpVdyZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDt3MUJWNjFFRFd5NnhBaFVBaERMY0ZLMEdPL0h6MWFyeE9PdnNnTS9WTHlVQ2dZRUFubng3aGJkV296R2J0bkZnJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O25iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzekt0N2RsRWFRTDdiNStKVFomcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7dDNNaFpOUG9zeHNneFZ1VDdUcy9nNWs3RW5wZFl2MGE1aHc1QncyOWZqYkdIZmdNOGQycmhkMlVpMHhIYmswRCZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs0NTFuaEx4Vld1bHZpT1NQaHpLS3ZYcmJ5U0FEZ1lRQUFvR0FmYWcrSENBQklKYWRERDlBYXJoZ2MyUVIzTHA3JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O1BwTU9oMGxBd0xpSXN2a080VWxiZU9TMElKQzhiY3FMak0xZlZ3NkZHU2F4bXErNHkxYWcybTlrNklkRTBRaDUmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7TnhCL3hGa21kd3FYRlJJSlZwNDRPZVV5Z0I0N1lLNzZObVVJWUczRGRmaVBQVTNicXpqdnRPdEVUaUNIdm8yNSZwYXJhOworJm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs0RDZVandQcFlFclhSVWFqTmpBME1BNEdBMVVkRHdFQi93UUVBd0lDQkRBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBJnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90O01CRUdBMVVkRGdRS0JBaURoajVBZGpMaWt6QUpCZ2NxaGtqT09BUURBeThBTUN3Q0ZFTHUwbnV3ZXFXN1dmMHMmcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Z2svQ0FHR0wwQkdLQWhSTmRnUUdyNWl5WktvSDRvcVBtMFZKOVRqWExnPT0mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1g1MDlDZXJ0aWZpY2F0ZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvWDUwOURhdGEmZ3Q7PC9zcGFuPjxzcGFuIGNsYXNzPSJFWENMVURFRCI+JnBhcmE7CismbWlkZG90OyZtaWRkb3Q7Jm1pZGRvdDsmbWlkZG90Ozwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvS2V5SW5mbyZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKyZtaWRkb3Q7Jm1pZGRvdDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mbHQ7L1NpZ25hdHVyZSZndDs8L3NwYW4+PHNwYW4gY2xhc3M9IkVYQ0xVREVEIj4mcGFyYTsKKzwvc3Bhbj48c3BhbiBjbGFzcz0iRVhDTFVERUQiPiZsdDsvZm9vOlJvb3QmZ3Q7PC9zcGFuPjwvcHJlPjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTQvYzE0bi05LnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tOS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc5ZmQ2YwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L2MxNG4tOS50eHQKQEAgLTAsMCArMSw5IEBACis8YmFyOlNvbWV0aGluZyB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPgorICAgICA8Zm9vOlNvbWV0aGluZyB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPgorICAgICAgICA8YmFyOlNvbWV0aGluZz4KKyAgICAgICAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICAgPGJhejpTb21ldGhpbmcgeG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ij48L2JhejpTb21ldGhpbmc+CisgICAgICAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICAgICAgPC9iYXI6U29tZXRoaW5nPgorICAgICA8L2ZvbzpTb21ldGhpbmc+CisgIDwvYmFyOlNvbWV0aGluZz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNC9zaWduYXR1cmUueG1sIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvc2lnbmF0dXJlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGY3MmM3Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvc2lnbmF0dXJlLnhtbApAQCAtMCwwICsxLDUyMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxmb286Um9vdCB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiIHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiIgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyIgeG1sOmxhbmc9ImVuLWllIj4KKyAgPGJhcjpTb21ldGhpbmc+CisgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICA8YmFyOlNvbWV0aGluZz4KKyAgICAgICAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICAgPGJhejpTb21ldGhpbmcgLz4KKyAgICAgICAgICAgPC9mb286U29tZXRoaW5nPgorICAgICAgICA8L2JhcjpTb21ldGhpbmc+CisgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgPC9iYXI6U29tZXRoaW5nPgorICA8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICA8U2lnbmVkSW5mbz4KKyAgICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiIC8+CisgICAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIiAvPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIDwhLS0gZXZlcnl0aGluZyAtLT4KKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZworICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT5sQ09TL0p0cG1PRSs0ZVhGYU9wWTR2NEJPZ0k9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIDwhLS0gb25seSB0ZXh0LCBlbGVtZW50cyBvciBkaXJlY3RseS11c2VkIG5hbWVzcGFjZSBub2RlcyAtLT4KKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgICgobmFtZSgpICE9ICJiYXIiKSBvciBwYXJlbnQ6OmJhcjpTb21ldGhpbmcpICBhbmQKKyAgICAgICAgICAgICAgKChuYW1lKCkgIT0gImZvbyIpIG9yIHBhcmVudDo6Zm9vOlNvbWV0aGluZykgIGFuZAorICAgICAgICAgICAgICAoKG5hbWUoKSAhPSAiYmF6Iikgb3IgcGFyZW50OjpiYXo6U29tZXRoaW5nKSAgYW5kCisgICAgICAgICAgICAgICgobmFtZSgpICE9ICIiKSBvciBzZWxmOjp0ZXh0KCkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPk95VnFFV1hFN0MrNU55S3RjZVVrZG1pRk85QT08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgPCEtLSBvbmx5IHRleHQsIGVsZW1lbnRzIG9yIGRpcmVjdGx5LXVzZWQgbmFtZXNwYWNlIG5vZGVzIC0tPgorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKHNlbGY6OnRleHQoKSAgb3IKKyAgICAgICAgICAgICAgIChuYW1lc3BhY2UtdXJpKCkgIT0gIiIpICBvcgorICAgICAgICAgICAgICAgKHN0cmluZyhzZWxmOjpub2RlKCkpID0gbmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT5PeVZxRVdYRTdDKzVOeUt0Y2VVa2RtaUZPOUE9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIDwhLS0gb25seSB0ZXh0LCBlbGVtZW50cywgb3IgZGlyZWN0bHktdXNlZCBuYW1lc3BhY2Ugbm9kZXMgYnV0IG5vdCBmb286U29tZXRoaW5nIC0tPgorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgbm90IChzZWxmOjpmb286U29tZXRoaW5nKSAgYW5kCisgICAgICAgICAgICAgIChzZWxmOjp0ZXh0KCkgIG9yCisgICAgICAgICAgICAgICAobmFtZXNwYWNlLXVyaSgpICE9ICIiKSAgb3IKKyAgICAgICAgICAgICAgIChzdHJpbmcoc2VsZjo6bm9kZSgpKSA9IG5hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+bUwxYUFRL1JvT1BPMFNIajlLUit5WTNuNENNPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICA8IS0tIG5vIG5hbWVzcGFjZSBub2RlczsgSSBhbSBub3QgaW4gbXkgcGFyZW50J3MgbmFtZXNwYWNlIGF4aXMgLS0+CisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSAgIT0KKyAgICAgICAgICAgICAgIGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiB8IHNlbGY6Om5vZGUoKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPmJRZ0Y4SUN5bVlaVHVVUDBGRTQwbDNRN0Jaaz08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgPCEtLSBubyBuYW1lc3BhY2Ugbm9kZXM7IEkgYW0gdGV4dCBvciBoYXZlIG5vbmVtcHR5IG5hbWVzcGFjZSBVUkkgLS0+CisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoc2VsZjo6dGV4dCgpICBvcgorICAgICAgICAgICAgICAgKG5hbWVzcGFjZS11cmkoKSAhPSAiIikpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPmJRZ0Y4SUN5bVlaVHVVUDBGRTQwbDNRN0Jaaz08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgPCEtLSBvbmx5IG5hbWVzcGFjZSBub2RlcyAtLT4KKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopICA9CisgICAgICAgICAgICAgICBjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiogfCBzZWxmOjpub2RlKCkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT5JSlFnZDU5RkoxUEF4eENZNW1JTDZjWmVtaTA9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIDwhLS0gb25seSBkaXJlY3RseS11c2VkIG5hbWVzcGFjZSBub2RlcyAtLT4KKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChzdHJpbmcoc2VsZjo6bm9kZSgpKSA9IG5hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT5TWEdpak8xZUFyRWFYR3BoRjBkeHdqNWZwMWc9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIDwhLS0gbm8gbmFtZXNwYWNlIG5vZGVzIGJ1dCB0aGUgZGVmYXVsdCBvbiBhbHRlcm5hdGUgZWxlbWVudHMgLS0+CisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoc2VsZjo6dGV4dCgpICBvcgorICAgICAgICAgICAgICAgKG5hbWVzcGFjZS11cmkoKSAhPSAiIikgIG9yCisgICAgICAgICAgICAgICAoKG5hbWUoKSA9ICIiKSAgYW5kCisgICAgICAgICAgICAgICAgKChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpIG1vZCAyKSA9IDEpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+ck5tNElkOWFoMTJudWd6WEFVSmdqYXM3bHMwPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICA8IS0tIGV2ZXJ5dGhpbmcgLS0+CisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgLz4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT5XYTdzRVd3VW1TTnN2NnA3NW9tR0tYTDZyakk9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIDwhLS0gb25seSB0ZXh0LCBlbGVtZW50cyBvciBkaXJlY3RseS11c2VkIG5hbWVzcGFjZSBub2RlcyAtLT4KKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgICgobmFtZSgpICE9ICJiYXIiKSBvciBwYXJlbnQ6OmJhcjpTb21ldGhpbmcpICBhbmQKKyAgICAgICAgICAgICAgKChuYW1lKCkgIT0gImZvbyIpIG9yIHBhcmVudDo6Zm9vOlNvbWV0aGluZykgIGFuZAorICAgICAgICAgICAgICAoKG5hbWUoKSAhPSAiYmF6Iikgb3IgcGFyZW50OjpiYXo6U29tZXRoaW5nKSAgYW5kCisgICAgICAgICAgICAgICgobmFtZSgpICE9ICIiKSBvciBzZWxmOjp0ZXh0KCkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIC8+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICA8IS0tIG9ubHkgdGV4dCwgZWxlbWVudHMgb3IgZGlyZWN0bHktdXNlZCBuYW1lc3BhY2Ugbm9kZXMgLS0+CisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoc2VsZjo6dGV4dCgpICBvcgorICAgICAgICAgICAgICAgKG5hbWVzcGFjZS11cmkoKSAhPSAiIikgIG9yCisgICAgICAgICAgICAgICAoc3RyaW5nKHNlbGY6Om5vZGUoKSkgPSBuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIC8+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+V2E3c0VXd1VtU05zdjZwNzVvbUdLWEw2cmpJPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICA8IS0tIG9ubHkgdGV4dCwgZWxlbWVudHMsIG9yIGRpcmVjdGx5LXVzZWQgbmFtZXNwYWNlIG5vZGVzIGJ1dCBub3QgZm9vOlNvbWV0aGluZyAtLT4KKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIG5vdCAoc2VsZjo6Zm9vOlNvbWV0aGluZykgIGFuZAorICAgICAgICAgICAgICAoc2VsZjo6dGV4dCgpICBvcgorICAgICAgICAgICAgICAgKG5hbWVzcGFjZS11cmkoKSAhPSAiIikgIG9yCisgICAgICAgICAgICAgICAoc3RyaW5nKHNlbGY6Om5vZGUoKSkgPSBuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIC8+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+dU9RSlFJSVVFVFl5azArWUVCZGJFUXdyWWJ3PTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICA8IS0tIG5vIG5hbWVzcGFjZSBub2RlczsgSSBhbSBub3QgaW4gbXkgcGFyZW50J3MgbmFtZXNwYWNlIGF4aXMgLS0+CisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSAgIT0KKyAgICAgICAgICAgICAgIGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiB8IHNlbGY6Om5vZGUoKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIC8+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICA8IS0tIG5vIG5hbWVzcGFjZSBub2RlczsgSSBhbSB0ZXh0IG9yIGhhdmUgbm9uZW1wdHkgbmFtZXNwYWNlIFVSSSAtLT4KKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChzZWxmOjp0ZXh0KCkgIG9yCisgICAgICAgICAgICAgICAobmFtZXNwYWNlLXVyaSgpICE9ICIiKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgLz4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT42V21tNjkzRjM4UitSOEU5RFpNK01WWFhNTUU9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIDwhLS0gb25seSBuYW1lc3BhY2Ugbm9kZXMgLS0+CisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSAgPQorICAgICAgICAgICAgICAgY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqIHwgc2VsZjo6bm9kZSgpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgLz4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIDwhLS0gb25seSBkaXJlY3RseS11c2VkIG5hbWVzcGFjZSBub2RlcyAtLT4KKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChzdHJpbmcoc2VsZjo6bm9kZSgpKSA9IG5hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiAvPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgPCEtLSBubyBuYW1lc3BhY2Ugbm9kZXMgYnV0IHRoZSBkZWZhdWx0IG9uIGFsdGVybmF0ZSBlbGVtZW50cyAtLT4KKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChzZWxmOjp0ZXh0KCkgIG9yCisgICAgICAgICAgICAgICAobmFtZXNwYWNlLXVyaSgpICE9ICIiKSAgb3IKKyAgICAgICAgICAgICAgICgobmFtZSgpID0gIiIpICBhbmQKKyAgICAgICAgICAgICAgICAoKGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkgbW9kIDIpID0gMSkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiAvPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgPCEtLSBldmVyeXRoaW5nIC0tPgorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPgorICAgICAgICAgICAgPEluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0iI2RlZmF1bHQiIC8+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+QVd0cURiWFdLZjhUVjc4QzJkMTZ1YXJicEdrPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICA8IS0tIG9ubHkgdGV4dCwgZWxlbWVudHMgb3IgZGlyZWN0bHktdXNlZCBuYW1lc3BhY2Ugbm9kZXMgLS0+CisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoKG5hbWUoKSAhPSAiYmFyIikgb3IgcGFyZW50OjpiYXI6U29tZXRoaW5nKSAgYW5kCisgICAgICAgICAgICAgICgobmFtZSgpICE9ICJmb28iKSBvciBwYXJlbnQ6OmZvbzpTb21ldGhpbmcpICBhbmQKKyAgICAgICAgICAgICAgKChuYW1lKCkgIT0gImJheiIpIG9yIHBhcmVudDo6YmF6OlNvbWV0aGluZykgIGFuZAorICAgICAgICAgICAgICAoKG5hbWUoKSAhPSAiIikgb3Igc2VsZjo6dGV4dCgpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj4KKyAgICAgICAgICAgIDxJbmNsdXNpdmVOYW1lc3BhY2VzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIFByZWZpeExpc3Q9IiNkZWZhdWx0IiAvPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgPCEtLSBvbmx5IHRleHQsIGVsZW1lbnRzIG9yIGRpcmVjdGx5LXVzZWQgbmFtZXNwYWNlIG5vZGVzIC0tPgorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKHNlbGY6OnRleHQoKSAgb3IKKyAgICAgICAgICAgICAgIChuYW1lc3BhY2UtdXJpKCkgIT0gIiIpICBvcgorICAgICAgICAgICAgICAgKHN0cmluZyhzZWxmOjpub2RlKCkpID0gbmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj4KKyAgICAgICAgICAgIDxJbmNsdXNpdmVOYW1lc3BhY2VzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIFByZWZpeExpc3Q9IiNkZWZhdWx0IiAvPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPldhN3NFV3dVbVNOc3Y2cDc1b21HS1hMNnJqST08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgPCEtLSBvbmx5IHRleHQsIGVsZW1lbnRzLCBvciBkaXJlY3RseS11c2VkIG5hbWVzcGFjZSBub2RlcyBidXQgbm90IGZvbzpTb21ldGhpbmcgLS0+CisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICBub3QgKHNlbGY6OmZvbzpTb21ldGhpbmcpICBhbmQKKyAgICAgICAgICAgICAgKHNlbGY6OnRleHQoKSAgb3IKKyAgICAgICAgICAgICAgIChuYW1lc3BhY2UtdXJpKCkgIT0gIiIpICBvcgorICAgICAgICAgICAgICAgKHN0cmluZyhzZWxmOjpub2RlKCkpID0gbmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj4KKyAgICAgICAgICAgIDxJbmNsdXNpdmVOYW1lc3BhY2VzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIFByZWZpeExpc3Q9IiNkZWZhdWx0IiAvPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPnVPUUpRSUlVRVRZeWswK1lFQmRiRVF3cllidz08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgPCEtLSBubyBuYW1lc3BhY2Ugbm9kZXM7IEkgYW0gbm90IGluIG15IHBhcmVudCdzIG5hbWVzcGFjZSBheGlzIC0tPgorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikgICE9CisgICAgICAgICAgICAgICBjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiogfCBzZWxmOjpub2RlKCkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj4KKyAgICAgICAgICAgIDxJbmNsdXNpdmVOYW1lc3BhY2VzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIFByZWZpeExpc3Q9IiNkZWZhdWx0IiAvPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPjZXbW02OTNGMzhSK1I4RTlEWk0rTVZYWE1NRT08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgPCEtLSBubyBuYW1lc3BhY2Ugbm9kZXM7IEkgYW0gdGV4dCBvciBoYXZlIG5vbmVtcHR5IG5hbWVzcGFjZSBVUkkgLS0+CisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoc2VsZjo6dGV4dCgpICBvcgorICAgICAgICAgICAgICAgKG5hbWVzcGFjZS11cmkoKSAhPSAiIikpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPgorICAgICAgICAgICAgPEluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0iI2RlZmF1bHQiIC8+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+NldtbTY5M0YzOFIrUjhFOURaTStNVlhYTU1FPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICA8IS0tIG9ubHkgbmFtZXNwYWNlIG5vZGVzIC0tPgorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikgID0KKyAgICAgICAgICAgICAgIGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiB8IHNlbGY6Om5vZGUoKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPgorICAgICAgICAgICAgPEluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0iI2RlZmF1bHQiIC8+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+TnBqTVB6RUY1WVpGYno0bHM3ZU4zNlFXZFhzPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICA8IS0tIG9ubHkgZGlyZWN0bHktdXNlZCBuYW1lc3BhY2Ugbm9kZXMgLS0+CisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoc3RyaW5nKHNlbGY6Om5vZGUoKSkgPSBuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+CisgICAgICAgICAgICA8SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSIjZGVmYXVsdCIgLz4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIDwhLS0gbm8gbmFtZXNwYWNlIG5vZGVzIGJ1dCB0aGUgZGVmYXVsdCBvbiBhbHRlcm5hdGUgZWxlbWVudHMgLS0+CisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoc2VsZjo6dGV4dCgpICBvcgorICAgICAgICAgICAgICAgKG5hbWVzcGFjZS11cmkoKSAhPSAiIikgIG9yCisgICAgICAgICAgICAgICAoKG5hbWUoKSA9ICIiKSAgYW5kCisgICAgICAgICAgICAgICAgKChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpIG1vZCAyKSA9IDEpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+CisgICAgICAgICAgICA8SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSIjZGVmYXVsdCIgLz4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT5FYWNCTjJhQkJOU2pwQ096WlVPT3ZTdjR6SFU9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgIDwvU2lnbmVkSW5mbz4KKyAgICA8U2lnbmF0dXJlVmFsdWU+CisgICAgICBGeDM0VmMwN2ZYYWM2cW1zaGhoTGU4b2dqRWxTbUM2WXhUbmh4ajh3TVRTa2Z2eFkrd1l0clE9PQorICAgIDwvU2lnbmF0dXJlVmFsdWU+CisgICAgPEtleUluZm8+CisgICAgICA8S2V5VmFsdWU+CisgICAgICAgIDxEU0FLZXlWYWx1ZT4KKyAgICAgICAgICA8UD4KKyAgICAgICAgICAgIDNlT2VBdnFuRXlGcFcrdVRTZ3JkajdZTGphVGtweUhlY0tGSW9MdThRWk5rR1RRSTFjaUlUQkgwbHFmSWtkQ0gKKyAgICAgICAgICAgIFNpOGZpVUMzRFRxM0o5RnNKZWY0WVZ0REY3SnBVdkhUT1FxdHE3Wmd4NktDOFd4a3o2clFDeE9yN0YwQXBPWWkKKyAgICAgICAgICAgIDg5ekxSb2U0TWtER2U2dXgwK1d0eU9UUW9WSUdOVEREVUZYclVRTmJMckU9CisgICAgICAgICAgPC9QPgorICAgICAgICAgIDxRPmhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VT08L1E+CisgICAgICAgICAgPEc+CisgICAgICAgICAgICBubng3aGJkV296R2J0bkZnbmJGbm9wZlJsN1hSYWNwa1BKUkdmNVAySVVnVnNwRVVTVW9ONmkxZkRCZkJnNDN6CisgICAgICAgICAgICBLdDdkbEVhUUw3YjUrSlRadDNNaFpOUG9zeHNneFZ1VDdUcy9nNWs3RW5wZFl2MGE1aHc1QncyOWZqYkdIZmdNCisgICAgICAgICAgICA4ZDJyaGQyVWkweEhiazBENDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBPQorICAgICAgICAgIDwvRz4KKyAgICAgICAgICA8WT4KKyAgICAgICAgICAgIGNmWXBpaHBBUWVlcGJORlM0TUFiUVJoZFhwRGk1d0xyd3hFNWhJdm9ZcW8xTDhCUVZ1OGZZMVRGQVB0b2FlMWkKKyAgICAgICAgICAgIEJnL0dJSnlQM2lMZnl1QkphRHZKSkxQMzB3Qkg5aS9zNUozNjU2UGV2cE9WZFRmaTc3N0ZpOUdqNnkvaWIyVnYKKyAgICAgICAgICAgICtPWmZKa2twNEw1MCtwNVRVaFBtUUxKdFJFc2d0bCt0bklPeUpUKytHOVU9CisgICAgICAgICAgPC9ZPgorICAgICAgICA8L0RTQUtleVZhbHVlPgorICAgICAgPC9LZXlWYWx1ZT4KKyAgICAgIDxYNTA5RGF0YT4KKyAgICAgICAgPFg1MDlTdWJqZWN0TmFtZT4KKyAgICAgICAgICBDTj1NZXJsaW4gSHVnaGVzLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlIFRlY2hub2xvZ2llcyBMdGQuLFNUPUR1YmxpbixDPUlFCisgICAgICAgIDwvWDUwOVN1YmplY3ROYW1lPgorICAgICAgICA8WDUwOUlzc3VlclNlcmlhbD4KKyAgICAgICAgICA8WDUwOUlzc3Vlck5hbWU+CisgICAgICAgICAgICBDTj1UcmFuc2llbnQgQ0EsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUgVGVjaG5vbG9naWVzIEx0ZC4sU1Q9RHVibGluLEM9SUUKKyAgICAgICAgICA8L1g1MDlJc3N1ZXJOYW1lPgorICAgICAgICAgIDxYNTA5U2VyaWFsTnVtYmVyPjEwMTc3ODgzNzAzNDg8L1g1MDlTZXJpYWxOdW1iZXI+CisgICAgICAgIDwvWDUwOUlzc3VlclNlcmlhbD4KKyAgICAgICAgPFg1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgICBNSUlEVURDQ0F4Q2dBd0lCQWdJR0FPejQ2ZzJzTUFrR0J5cUdTTTQ0QkFNd2JqRUxNQWtHQTFVRUJoTUNTVVV4CisgICAgICAgICAgRHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbAorICAgICAgICAgIGN5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkIKKyAgICAgICAgICBNQjRYRFRBeU1EUXdNakl5TlRrek1Gb1hEVEV5TURRd01qSXhOVGt5TlZvd2J6RUxNQWtHQTFVRUJoTUNTVVV4CisgICAgICAgICAgRHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbAorICAgICAgICAgIGN5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFV01CUUdBMVVFQXhNTlRXVnliR2x1SUVoMVoyaGwKKyAgICAgICAgICBjekNDQWJjd2dnRXNCZ2NxaGtqT09BUUJNSUlCSHdLQmdRRGQ0NTRDK3FjVElXbGI2NU5LQ3QyUHRndU5wT1NuCisgICAgICAgICAgSWQ1d29VaWd1N3hCazJRWk5BalZ5SWhNRWZTV3A4aVIwSWRLTHgrSlFMY05PcmNuMFd3bDUvaGhXME1Yc21sUworICAgICAgICAgIDhkTTVDcTJydG1ESG9vTHhiR1RQcXRBTEU2dnNYUUNrNWlMejNNdEdoN2d5UU1aN3E3SFQ1YTNJNU5DaFVnWTEKKyAgICAgICAgICBNTU5RVmV0UkExc3VzUUlWQUlReTNCU3RCanZ4ODlXcThUanI3SURQMVM4bEFvR0JBSjU4ZTRXM1ZxTXhtN1p4CisgICAgICAgICAgWUoyeFo2S1gwWmUxMFduS1pEeVVSbitUOWlGSUZiS1JGRWxLRGVvdFh3d1h3WU9OOHlyZTNaUkdrQysyK2ZpVQorICAgICAgICAgIDJiZHpJV1RUNkxNYklNVmJrKzA3UDRPWk94SjZYV0w5R3VZY09RY052WDQyeGgzNERQSGRxNFhkbEl0TVIyNU4KKyAgICAgICAgICBBK09kWjRTOFZWcnBiNGprajRjeWlyMTYyOGtnQTRHRUFBS0JnSEgyS1lvYVFFSG5xV3pSVXVEQUcwRVlYVjZRCisgICAgICAgICAgNHVjQzY4TVJPWVNMNkdLcU5TL0FVRmJ2SDJOVXhRRDdhR250WWdZUHhpQ2NqOTRpMzhyZ1NXZzd5U1N6OTlNQQorICAgICAgICAgIFIvWXY3T1NkK3VlajNyNlRsWFUzNHUrK3hZdlJvK3N2NG05bGIvam1YeVpKS2VDK2RQcWVVMUlUNWtDeWJVUkwKKyAgICAgICAgICBJTFpmclp5RHNpVS92aHZWb3pvd09EQU9CZ05WSFE4QkFmOEVCQU1DQjRBd0VRWURWUjBPQkFvRUNJYXRZN1NFCisgICAgICAgICAgbFhFT01CTUdBMVVkSXdRTU1BcUFDSU9HUGtCMk11S1RNQWtHQnlxR1NNNDRCQU1ETHdBd0xBSVVTdlQwMmlRagorICAgICAgICAgIFE1ZGE0V3BlMEJ2czdHdUNjVnNDRkNFY1FwYmpVZm54WEZYTldpRnlRNDlacldxbgorICAgICAgICA8L1g1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgPFg1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgICBNSUlEU3pDQ0F3dWdBd0lCQWdJR0FPejQ2ZndKTUFrR0J5cUdTTTQ0QkFNd2JqRUxNQWtHQTFVRUJoTUNTVVV4CisgICAgICAgICAgRHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbAorICAgICAgICAgIGN5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkIKKyAgICAgICAgICBNQjRYRFRBeU1EUXdNakl5TlRreU5Wb1hEVEV5TURRd01qSXhOVGt5TlZvd2JqRUxNQWtHQTFVRUJoTUNTVVV4CisgICAgICAgICAgRHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbAorICAgICAgICAgIGN5Qk1kR1F1TVJFd0R3WURWUVFMRXdoWUwxTmxZM1Z5WlRFVk1CTUdBMVVFQXhNTVZISmhibk5wWlc1MElFTkIKKyAgICAgICAgICBNSUlCdHpDQ0FTd0dCeXFHU000NEJBRXdnZ0VmQW9HQkFOM2puZ0w2cHhNaGFWdnJrMG9LM1krMkM0Mms1S2NoCisgICAgICAgICAgM25DaFNLQzd2RUdUWkJrMENOWElpRXdSOUphbnlKSFFoMG92SDRsQXR3MDZ0eWZSYkNYbitHRmJReGV5YVZMeAorICAgICAgICAgIDB6a0tyYXUyWU1laWd2RnNaTStxMEFzVHEreGRBS1RtSXZQY3kwYUh1REpBeG51cnNkUGxyY2prMEtGU0JqVXcKKyAgICAgICAgICB3MUJWNjFFRFd5NnhBaFVBaERMY0ZLMEdPL0h6MWFyeE9PdnNnTS9WTHlVQ2dZRUFubng3aGJkV296R2J0bkZnCisgICAgICAgICAgbmJGbm9wZlJsN1hSYWNwa1BKUkdmNVAySVVnVnNwRVVTVW9ONmkxZkRCZkJnNDN6S3Q3ZGxFYVFMN2I1K0pUWgorICAgICAgICAgIHQzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTThkMnJoZDJVaTB4SGJrMEQKKyAgICAgICAgICA0NTFuaEx4Vld1bHZpT1NQaHpLS3ZYcmJ5U0FEZ1lRQUFvR0FmYWcrSENBQklKYWRERDlBYXJoZ2MyUVIzTHA3CisgICAgICAgICAgUHBNT2gwbEF3TGlJc3ZrTzRVbGJlT1MwSUpDOGJjcUxqTTFmVnc2RkdTYXhtcSs0eTFhZzJtOWs2SWRFMFFoNQorICAgICAgICAgIE54Qi94RmttZHdxWEZSSUpWcDQ0T2VVeWdCNDdZSzc2Tm1VSVlHM0RkZmlQUFUzYnF6anZ0T3RFVGlDSHZvMjUKKyAgICAgICAgICA0RDZVandQcFlFclhSVWFqTmpBME1BNEdBMVVkRHdFQi93UUVBd0lDQkRBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBCisgICAgICAgICAgTUJFR0ExVWREZ1FLQkFpRGhqNUFkakxpa3pBSkJnY3Foa2pPT0FRREF5OEFNQ3dDRkVMdTBudXdlcVc3V2YwcworICAgICAgICAgIGdrL0NBR0dMMEJHS0FoUk5kZ1FHcjVpeVpLb0g0b3FQbTBWSjlUalhMZz09CisgICAgICAgIDwvWDUwOUNlcnRpZmljYXRlPgorICAgICAgPC9YNTA5RGF0YT4KKyAgICA8L0tleUluZm8+CisgIDwvU2lnbmF0dXJlPgorPC9mb286Um9vdD4KZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k0L3NpZ25hdHVyZVN0cmlwcGVkLnhtbCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k0L3NpZ25hdHVyZVN0cmlwcGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWIyMWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTQvc2lnbmF0dXJlU3RyaXBwZWQueG1sCkBAIC0wLDAgKzEsMTEwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGZvbzpSb290IHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciIgeG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6IiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIiB4bWw6bGFuZz0iZW4taWUiPgorICA8YmFyOlNvbWV0aGluZz4KKyAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgIDxiYXI6U29tZXRoaW5nPgorICAgICAgICAgICA8Zm9vOlNvbWV0aGluZz4KKyAgICAgICAgICAgICA8YmF6OlNvbWV0aGluZyAvPgorICAgICAgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgICAgIDwvYmFyOlNvbWV0aGluZz4KKyAgICAgPC9mb286U29tZXRoaW5nPgorICA8L2JhcjpTb21ldGhpbmc+CisgIDxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgIDxTaWduZWRJbmZvPgorICAgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIgLz4KKyAgICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiIC8+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgPCEtLSBvbmx5IHRleHQsIGVsZW1lbnRzIG9yIGRpcmVjdGx5LXVzZWQgbmFtZXNwYWNlIG5vZGVzIC0tPgorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKChuYW1lKCkgIT0gImJhciIpIG9yIHBhcmVudDo6YmFyOlNvbWV0aGluZykgIGFuZAorICAgICAgICAgICAgICAoKG5hbWUoKSAhPSAiZm9vIikgb3IgcGFyZW50Ojpmb286U29tZXRoaW5nKSAgYW5kCisgICAgICAgICAgICAgICgobmFtZSgpICE9ICJiYXoiKSBvciBwYXJlbnQ6OmJhejpTb21ldGhpbmcpICBhbmQKKyAgICAgICAgICAgICAgKChuYW1lKCkgIT0gIiIpIG9yIHNlbGY6OnRleHQoKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+T3lWcUVXWEU3Qys1TnlLdGNlVWtkbWlGTzlBPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICA8L1NpZ25lZEluZm8+CisgICAgPFNpZ25hdHVyZVZhbHVlPgorICAgICAgRngzNFZjMDdmWGFjNnFtc2hoaExlOG9nakVsU21DNll4VG5oeGo4d01UU2tmdnhZK3dZdHJRPT0KKyAgICA8L1NpZ25hdHVyZVZhbHVlPgorICAgIDxLZXlJbmZvPgorICAgICAgPEtleVZhbHVlPgorICAgICAgICA8RFNBS2V5VmFsdWU+CisgICAgICAgICAgPFA+CisgICAgICAgICAgICAzZU9lQXZxbkV5RnBXK3VUU2dyZGo3WUxqYVRrcHlIZWNLRklvTHU4UVpOa0dUUUkxY2lJVEJIMGxxZklrZENICisgICAgICAgICAgICBTaThmaVVDM0RUcTNKOUZzSmVmNFlWdERGN0pwVXZIVE9RcXRxN1pneDZLQzhXeGt6NnJRQ3hPcjdGMEFwT1lpCisgICAgICAgICAgICA4OXpMUm9lNE1rREdlNnV4MCtXdHlPVFFvVklHTlRERFVGWHJVUU5iTHJFPQorICAgICAgICAgIDwvUD4KKyAgICAgICAgICA8UT5oRExjRkswR08vSHoxYXJ4T092c2dNL1ZMeVU9PC9RPgorICAgICAgICAgIDxHPgorICAgICAgICAgICAgbm54N2hiZFdvekdidG5GZ25iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzegorICAgICAgICAgICAgS3Q3ZGxFYVFMN2I1K0pUWnQzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTQorICAgICAgICAgICAgOGQycmhkMlVpMHhIYmswRDQ1MW5oTHhWV3VsdmlPU1BoektLdlhyYnlTQT0KKyAgICAgICAgICA8L0c+CisgICAgICAgICAgPFk+CisgICAgICAgICAgICBjZllwaWhwQVFlZXBiTkZTNE1BYlFSaGRYcERpNXdMcnd4RTVoSXZvWXFvMUw4QlFWdThmWTFURkFQdG9hZTFpCisgICAgICAgICAgICBCZy9HSUp5UDNpTGZ5dUJKYUR2SkpMUDMwd0JIOWkvczVKMzY1NlBldnBPVmRUZmk3NzdGaTlHajZ5L2liMlZ2CisgICAgICAgICAgICArT1pmSmtrcDRMNTArcDVUVWhQbVFMSnRSRXNndGwrdG5JT3lKVCsrRzlVPQorICAgICAgICAgIDwvWT4KKyAgICAgICAgPC9EU0FLZXlWYWx1ZT4KKyAgICAgIDwvS2V5VmFsdWU+CisgICAgICA8WDUwOURhdGE+CisgICAgICAgIDxYNTA5U3ViamVjdE5hbWU+CisgICAgICAgICAgQ049TWVybGluIEh1Z2hlcyxPVT1YL1NlY3VyZSxPPUJhbHRpbW9yZSBUZWNobm9sb2dpZXMgTHRkLixTVD1EdWJsaW4sQz1JRQorICAgICAgICA8L1g1MDlTdWJqZWN0TmFtZT4KKyAgICAgICAgPFg1MDlJc3N1ZXJTZXJpYWw+CisgICAgICAgICAgPFg1MDlJc3N1ZXJOYW1lPgorICAgICAgICAgICAgQ049VHJhbnNpZW50IENBLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlIFRlY2hub2xvZ2llcyBMdGQuLFNUPUR1YmxpbixDPUlFCisgICAgICAgICAgPC9YNTA5SXNzdWVyTmFtZT4KKyAgICAgICAgICA8WDUwOVNlcmlhbE51bWJlcj4xMDE3Nzg4MzcwMzQ4PC9YNTA5U2VyaWFsTnVtYmVyPgorICAgICAgICA8L1g1MDlJc3N1ZXJTZXJpYWw+CisgICAgICAgIDxYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgTUlJRFVEQ0NBeENnQXdJQkFnSUdBT3o0Nmcyc01Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CCisgICAgICAgICAgTUI0WERUQXlNRFF3TWpJeU5Ua3pNRm9YRFRFeU1EUXdNakl4TlRreU5Wb3diekVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVdNQlFHQTFVRUF4TU5UV1Z5YkdsdUlFaDFaMmhsCisgICAgICAgICAgY3pDQ0FiY3dnZ0VzQmdjcWhrak9PQVFCTUlJQkh3S0JnUURkNDU0QytxY1RJV2xiNjVOS0N0MlB0Z3VOcE9TbgorICAgICAgICAgIElkNXdvVWlndTd4QmsyUVpOQWpWeUloTUVmU1dwOGlSMElkS0x4K0pRTGNOT3JjbjBXd2w1L2hoVzBNWHNtbFMKKyAgICAgICAgICA4ZE01Q3EycnRtREhvb0x4YkdUUHF0QUxFNnZzWFFDazVpTHozTXRHaDdneVFNWjdxN0hUNWEzSTVOQ2hVZ1kxCisgICAgICAgICAgTU1OUVZldFJBMXN1c1FJVkFJUXkzQlN0Qmp2eDg5V3E4VGpyN0lEUDFTOGxBb0dCQUo1OGU0VzNWcU14bTdaeAorICAgICAgICAgIFlKMnhaNktYMFplMTBXbktaRHlVUm4rVDlpRklGYktSRkVsS0Rlb3RYd3dYd1lPTjh5cmUzWlJHa0MrMitmaVUKKyAgICAgICAgICAyYmR6SVdUVDZMTWJJTVZiayswN1A0T1pPeEo2WFdMOUd1WWNPUWNOdlg0MnhoMzREUEhkcTRYZGxJdE1SMjVOCisgICAgICAgICAgQStPZFo0UzhWVnJwYjRqa2o0Y3lpcjE2MjhrZ0E0R0VBQUtCZ0hIMktZb2FRRUhucVd6UlV1REFHMEVZWFY2UQorICAgICAgICAgIDR1Y0M2OE1ST1lTTDZHS3FOUy9BVUZidkgyTlV4UUQ3YUdudFlnWVB4aUNjajk0aTM4cmdTV2c3eVNTejk5TUEKKyAgICAgICAgICBSL1l2N09TZCt1ZWozcjZUbFhVMzR1Kyt4WXZSbytzdjRtOWxiL2ptWHlaSktlQytkUHFlVTFJVDVrQ3liVVJMCisgICAgICAgICAgSUxaZnJaeURzaVUvdmh2Vm96b3dPREFPQmdOVkhROEJBZjhFQkFNQ0I0QXdFUVlEVlIwT0JBb0VDSWF0WTdTRQorICAgICAgICAgIGxYRU9NQk1HQTFVZEl3UU1NQXFBQ0lPR1BrQjJNdUtUTUFrR0J5cUdTTTQ0QkFNREx3QXdMQUlVU3ZUMDJpUWoKKyAgICAgICAgICBRNWRhNFdwZTBCdnM3R3VDY1ZzQ0ZDRWNRcGJqVWZueFhGWE5XaUZ5UTQ5WnJXcW4KKyAgICAgICAgPC9YNTA5Q2VydGlmaWNhdGU+CisgICAgICAgIDxYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgTUlJRFN6Q0NBd3VnQXdJQkFnSUdBT3o0NmZ3Sk1Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CCisgICAgICAgICAgTUI0WERUQXlNRFF3TWpJeU5Ua3lOVm9YRFRFeU1EUXdNakl4TlRreU5Wb3diakVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CCisgICAgICAgICAgTUlJQnR6Q0NBU3dHQnlxR1NNNDRCQUV3Z2dFZkFvR0JBTjNqbmdMNnB4TWhhVnZyazBvSzNZKzJDNDJrNUtjaAorICAgICAgICAgIDNuQ2hTS0M3dkVHVFpCazBDTlhJaUV3UjlKYW55SkhRaDBvdkg0bEF0dzA2dHlmUmJDWG4rR0ZiUXhleWFWTHgKKyAgICAgICAgICAwemtLcmF1MllNZWlndkZzWk0rcTBBc1RxK3hkQUtUbUl2UGN5MGFIdURKQXhudXJzZFBscmNqazBLRlNCalV3CisgICAgICAgICAgdzFCVjYxRURXeTZ4QWhVQWhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VUNnWUVBbm54N2hiZFdvekdidG5GZworICAgICAgICAgIG5iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzekt0N2RsRWFRTDdiNStKVFoKKyAgICAgICAgICB0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ004ZDJyaGQyVWkweEhiazBECisgICAgICAgICAgNDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBRGdZUUFBb0dBZmFnK0hDQUJJSmFkREQ5QWFyaGdjMlFSM0xwNworICAgICAgICAgIFBwTU9oMGxBd0xpSXN2a080VWxiZU9TMElKQzhiY3FMak0xZlZ3NkZHU2F4bXErNHkxYWcybTlrNklkRTBRaDUKKyAgICAgICAgICBOeEIveEZrbWR3cVhGUklKVnA0NE9lVXlnQjQ3WUs3Nk5tVUlZRzNEZGZpUFBVM2Jxemp2dE90RVRpQ0h2bzI1CisgICAgICAgICAgNEQ2VWp3UHBZRXJYUlVhak5qQTBNQTRHQTFVZER3RUIvd1FFQXdJQ0JEQVBCZ05WSFJNRUNEQUdBUUgvQWdFQQorICAgICAgICAgIE1CRUdBMVVkRGdRS0JBaURoajVBZGpMaWt6QUpCZ2NxaGtqT09BUURBeThBTUN3Q0ZFTHUwbnV3ZXFXN1dmMHMKKyAgICAgICAgICBnay9DQUdHTDBCR0tBaFJOZGdRR3I1aXlaS29ING9xUG0wVko5VGpYTGc9PQorICAgICAgICA8L1g1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgIDwvWDUwOURhdGE+CisgICAgPC9LZXlJbmZvPgorICA8L1NpZ25hdHVyZT4KKzwvZm9vOlJvb3Q+CmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNS9SZWFkbWUudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTUvUmVhZG1lLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGVmM2VmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTUvUmVhZG1lLnR4dApAQCAtMCwwICsxLDIwIEBACitTaWduYXR1cmVbMV0gdXNpbmcgQ2Fub25pY2FsIFhNTFsyXSBhbmQgRXhjbHVzaXZlIENhbm9uaWNhbCBYTUxbM10KKworWzFdIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDIvUkVDLXhtbGRzaWctY29yZS0yMDAyMDIxMi8KK1syXSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNQorWzNdIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDIvUFIteG1sLWV4Yy1jMTRuLTIwMDIwNTI0LworCisuIHNpZ25hdHVyZS54bWwgLSBUaGUgc2lnbmF0dXJlcworLiBjMTRuLSoueG1sIC0gVGhlIGludGVybWVkaWF0ZSBjMTRuIG91dHB1dAorCitUaGlzIHNpZ25hdHVyZSBkZW1vbnN0cmF0ZXMgY2Fub25pY2FsaXphdGlvbiBiZWhhdmlvdXIgd2hlbgorcGFydHMgb2YgdGhlIG5hbWVzcGFjZSBheGlzIGFyZSBleGNsdWRlZCBvciBpbmNsdWRlZC4gVGhlCitzYW1lIGV4YW1wbGVzIGFyZSByZXBlYXRlZCBmb3IgY2Fub25pY2FsIFhNTCwgZXhjbHVzaXZlCitjYW5vbmljYWwgWE1MIGFuZCBleGNsdXNpdmUgY2Fub25pY2FsIFhNTCB3aXRoIGFuIGluY2x1c2l2ZQorbmFtZXNwYWNlIHByZWZpeCBsaXN0LiBTb21lIGV4YW1wbGVzIHJlcGVhdCB0aGUgc2FtZQorYmVoYXZpb3VyIHdpdGggZGlmZmVyZW50IFhQYXRoIGV4cHJlc3Npb25zLgorCitNZXJsaW4gSHVnaGVzIDxtZXJsaW5AYmFsdGltb3JlLmllPgorQmFsdGltb3JlIFRlY2hub2xvZ2llcywgTHRkLgorCitGcmlkYXksIE1heSAzMSwgMjAwMgpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTUvYzE0bi0wLnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJhYzkzZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tMC50eHQKQEAgLTAsMCArMSwxNSBAQAorPGJhcjpTb21ldGhpbmcgeG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iIHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciIgeG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6IiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iIHhtbDpsYW5nPSJlbi1pZSI+CisgICAgPGZvbzpOb3RoaW5nPgorICAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgIDxiYXI6U29tZXRoaW5nPgorICAgICAgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICAgICAgPGZvbzpOb3RoaW5nPgorICAgICAgICAgICAgICA8Zm9vOlNvbWV0aGluZz4KKyAgICAgICAgICAgICAgICA8YmF6OlNvbWV0aGluZz48L2JhejpTb21ldGhpbmc+CisgICAgICAgICAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICAgICAgICAgIDwvZm9vOk5vdGhpbmc+CisgICAgICAgICAgPC9mb286U29tZXRoaW5nPgorICAgICAgICA8L2JhcjpTb21ldGhpbmc+CisgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgPC9mb286Tm90aGluZz4KKyAgPC9iYXI6U29tZXRoaW5nPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tMS50eHQgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiYjVmMDYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTEudHh0CkBAIC0wLDAgKzEsMTUgQEAKKzxiYXI6U29tZXRoaW5nIHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciIgeG1sOmxhbmc9ImVuLWllIj4KKyAgICA8Zm9vOk5vdGhpbmc+CisgICAgICA8Zm9vOlNvbWV0aGluZyB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPgorICAgICAgICA8YmFyOlNvbWV0aGluZyB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPgorICAgICAgICAgIDxmb286U29tZXRoaW5nIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI+CisgICAgICAgICAgICA8Zm9vOk5vdGhpbmc+CisgICAgICAgICAgICAgIDxmb286U29tZXRoaW5nIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI+CisgICAgICAgICAgICAgICAgPGJhejpTb21ldGhpbmcgeG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ij48L2JhejpTb21ldGhpbmc+CisgICAgICAgICAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICAgICAgICAgIDwvZm9vOk5vdGhpbmc+CisgICAgICAgICAgPC9mb286U29tZXRoaW5nPgorICAgICAgICA8L2JhcjpTb21ldGhpbmc+CisgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgPC9mb286Tm90aGluZz4KKyAgPC9iYXI6U29tZXRoaW5nPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tMTAudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTUvYzE0bi0xMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E4NmI1ZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tMTAudHh0CkBAIC0wLDAgKzEsMTUgQEAKKzxiYXI6U29tZXRoaW5nIHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI+CisgICAgPGZvbzpOb3RoaW5nPgorICAgICAgPGZvbzpTb21ldGhpbmcgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIj4KKyAgICAgICAgPGJhcjpTb21ldGhpbmc+CisgICAgICAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICA8Zm9vOk5vdGhpbmc+CisgICAgICAgICAgICAgIDxmb286U29tZXRoaW5nIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI+CisgICAgICAgICAgICAgICAgPGJhejpTb21ldGhpbmcgeG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ij48L2JhejpTb21ldGhpbmc+CisgICAgICAgICAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICAgICAgICAgIDwvZm9vOk5vdGhpbmc+CisgICAgICAgICAgPC9mb286U29tZXRoaW5nPgorICAgICAgICA8L2JhcjpTb21ldGhpbmc+CisgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgPC9mb286Tm90aGluZz4KKyAgPC9iYXI6U29tZXRoaW5nPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tMTEudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTUvYzE0bi0xMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZjYzM1MQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tMTEudHh0CkBAIC0wLDAgKzEsMTUgQEAKKzxiYXI6U29tZXRoaW5nIHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI+CisgICAgPGZvbzpOb3RoaW5nIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI+CisgICAgICA8Zm9vOlNvbWV0aGluZz4KKyAgICAgICAgPGJhcjpTb21ldGhpbmc+CisgICAgICAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICA8Zm9vOk5vdGhpbmc+CisgICAgICAgICAgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICAgICAgICAgIDxiYXo6U29tZXRoaW5nIHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI+PC9iYXo6U29tZXRoaW5nPgorICAgICAgICAgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICA8L2ZvbzpOb3RoaW5nPgorICAgICAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICAgICAgPC9iYXI6U29tZXRoaW5nPgorICAgICAgPC9mb286U29tZXRoaW5nPgorICAgIDwvZm9vOk5vdGhpbmc+CisgIDwvYmFyOlNvbWV0aGluZz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTEyLnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tMTIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmYWE2YTgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTEyLnR4dApAQCAtMCwwICsxLDE1IEBACis8YmFyOlNvbWV0aGluZyB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPgorICAgIDxmb286Tm90aGluZyB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPgorICAgICAgCisgICAgICAgIDxiYXI6U29tZXRoaW5nPgorICAgICAgICAgIAorICAgICAgICAgICAgPGZvbzpOb3RoaW5nPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICA8YmF6OlNvbWV0aGluZyB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPjwvYmF6OlNvbWV0aGluZz4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICA8L2ZvbzpOb3RoaW5nPgorICAgICAgICAgIAorICAgICAgICA8L2JhcjpTb21ldGhpbmc+CisgICAgICAKKyAgICA8L2ZvbzpOb3RoaW5nPgorICA8L2JhcjpTb21ldGhpbmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTUvYzE0bi0xMy50eHQgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTEzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGUwN2RhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTUvYzE0bi0xMy50eHQKQEAgLTAsMCArMSwxNSBAQAorPGJhcjpTb21ldGhpbmc+CisgICAgPGZvbzpOb3RoaW5nPgorICAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgIDxiYXI6U29tZXRoaW5nPgorICAgICAgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICAgICAgPGZvbzpOb3RoaW5nPgorICAgICAgICAgICAgICA8Zm9vOlNvbWV0aGluZz4KKyAgICAgICAgICAgICAgICA8YmF6OlNvbWV0aGluZz48L2JhejpTb21ldGhpbmc+CisgICAgICAgICAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICAgICAgICAgIDwvZm9vOk5vdGhpbmc+CisgICAgICAgICAgPC9mb286U29tZXRoaW5nPgorICAgICAgICA8L2JhcjpTb21ldGhpbmc+CisgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgPC9mb286Tm90aGluZz4KKyAgPC9iYXI6U29tZXRoaW5nPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tMTQudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTUvYzE0bi0xNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThlMDdkYQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tMTQudHh0CkBAIC0wLDAgKzEsMTUgQEAKKzxiYXI6U29tZXRoaW5nPgorICAgIDxmb286Tm90aGluZz4KKyAgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICA8YmFyOlNvbWV0aGluZz4KKyAgICAgICAgICA8Zm9vOlNvbWV0aGluZz4KKyAgICAgICAgICAgIDxmb286Tm90aGluZz4KKyAgICAgICAgICAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICAgICAgPGJhejpTb21ldGhpbmc+PC9iYXo6U29tZXRoaW5nPgorICAgICAgICAgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICA8L2ZvbzpOb3RoaW5nPgorICAgICAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICAgICAgPC9iYXI6U29tZXRoaW5nPgorICAgICAgPC9mb286U29tZXRoaW5nPgorICAgIDwvZm9vOk5vdGhpbmc+CisgIDwvYmFyOlNvbWV0aGluZz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTE1LnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tMTUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTE1LnR4dApkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTUvYzE0bi0xNi50eHQgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTE2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTUvYzE0bi0xNi50eHQKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tMTcudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTUvYzE0bi0xNy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThlMDdkYQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tMTcudHh0CkBAIC0wLDAgKzEsMTUgQEAKKzxiYXI6U29tZXRoaW5nPgorICAgIDxmb286Tm90aGluZz4KKyAgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICA8YmFyOlNvbWV0aGluZz4KKyAgICAgICAgICA8Zm9vOlNvbWV0aGluZz4KKyAgICAgICAgICAgIDxmb286Tm90aGluZz4KKyAgICAgICAgICAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICAgICAgPGJhejpTb21ldGhpbmc+PC9iYXo6U29tZXRoaW5nPgorICAgICAgICAgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICA8L2ZvbzpOb3RoaW5nPgorICAgICAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICAgICAgPC9iYXI6U29tZXRoaW5nPgorICAgICAgPC9mb286U29tZXRoaW5nPgorICAgIDwvZm9vOk5vdGhpbmc+CisgIDwvYmFyOlNvbWV0aGluZz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTE4LnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tMTgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzYzNjZTUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTE4LnR4dApAQCAtMCwwICsxLDE1IEBACis8YmFyOlNvbWV0aGluZyB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyIgeG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIj4KKyAgICA8Zm9vOk5vdGhpbmcgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIj4KKyAgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICA8YmFyOlNvbWV0aGluZz4KKyAgICAgICAgICA8Zm9vOlNvbWV0aGluZz4KKyAgICAgICAgICAgIDxmb286Tm90aGluZz4KKyAgICAgICAgICAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICAgICAgPGJhejpTb21ldGhpbmcgeG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ij48L2JhejpTb21ldGhpbmc+CisgICAgICAgICAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICAgICAgICAgIDwvZm9vOk5vdGhpbmc+CisgICAgICAgICAgPC9mb286U29tZXRoaW5nPgorICAgICAgICA8L2JhcjpTb21ldGhpbmc+CisgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgPC9mb286Tm90aGluZz4KKyAgPC9iYXI6U29tZXRoaW5nPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tMTkudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTUvYzE0bi0xOS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E4NmI1ZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tMTkudHh0CkBAIC0wLDAgKzEsMTUgQEAKKzxiYXI6U29tZXRoaW5nIHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI+CisgICAgPGZvbzpOb3RoaW5nPgorICAgICAgPGZvbzpTb21ldGhpbmcgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIj4KKyAgICAgICAgPGJhcjpTb21ldGhpbmc+CisgICAgICAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICA8Zm9vOk5vdGhpbmc+CisgICAgICAgICAgICAgIDxmb286U29tZXRoaW5nIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI+CisgICAgICAgICAgICAgICAgPGJhejpTb21ldGhpbmcgeG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ij48L2JhejpTb21ldGhpbmc+CisgICAgICAgICAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICAgICAgICAgIDwvZm9vOk5vdGhpbmc+CisgICAgICAgICAgPC9mb286U29tZXRoaW5nPgorICAgICAgICA8L2JhcjpTb21ldGhpbmc+CisgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgPC9mb286Tm90aGluZz4KKyAgPC9iYXI6U29tZXRoaW5nPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tMi50eHQgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmYWNkYjQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTIudHh0CkBAIC0wLDAgKzEsMTUgQEAKKzxiYXI6U29tZXRoaW5nIHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciIgeG1sOmxhbmc9ImVuLWllIj4KKyAgICA8Zm9vOk5vdGhpbmcgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIj4KKyAgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICA8YmFyOlNvbWV0aGluZyB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPgorICAgICAgICAgIDxmb286U29tZXRoaW5nIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI+CisgICAgICAgICAgICA8Zm9vOk5vdGhpbmc+CisgICAgICAgICAgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICAgICAgICAgIDxiYXo6U29tZXRoaW5nIHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI+PC9iYXo6U29tZXRoaW5nPgorICAgICAgICAgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICA8L2ZvbzpOb3RoaW5nPgorICAgICAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICAgICAgPC9iYXI6U29tZXRoaW5nPgorICAgICAgPC9mb286U29tZXRoaW5nPgorICAgIDwvZm9vOk5vdGhpbmc+CisgIDwvYmFyOlNvbWV0aGluZz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTIwLnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tMjAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmY2MzNTEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTIwLnR4dApAQCAtMCwwICsxLDE1IEBACis8YmFyOlNvbWV0aGluZyB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiPgorICAgIDxmb286Tm90aGluZyB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPgorICAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgIDxiYXI6U29tZXRoaW5nPgorICAgICAgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICAgICAgPGZvbzpOb3RoaW5nPgorICAgICAgICAgICAgICA8Zm9vOlNvbWV0aGluZz4KKyAgICAgICAgICAgICAgICA8YmF6OlNvbWV0aGluZyB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiPjwvYmF6OlNvbWV0aGluZz4KKyAgICAgICAgICAgICAgPC9mb286U29tZXRoaW5nPgorICAgICAgICAgICAgPC9mb286Tm90aGluZz4KKyAgICAgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgICAgIDwvYmFyOlNvbWV0aGluZz4KKyAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICA8L2ZvbzpOb3RoaW5nPgorICA8L2JhcjpTb21ldGhpbmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTUvYzE0bi0yMS50eHQgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTIxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmFhNmE4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTUvYzE0bi0yMS50eHQKQEAgLTAsMCArMSwxNSBAQAorPGJhcjpTb21ldGhpbmcgeG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIj4KKyAgICA8Zm9vOk5vdGhpbmcgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIj4KKyAgICAgIAorICAgICAgICA8YmFyOlNvbWV0aGluZz4KKyAgICAgICAgICAKKyAgICAgICAgICAgIDxmb286Tm90aGluZz4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPGJhejpTb21ldGhpbmcgeG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6Ij48L2JhejpTb21ldGhpbmc+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgPC9mb286Tm90aGluZz4KKyAgICAgICAgICAKKyAgICAgICAgPC9iYXI6U29tZXRoaW5nPgorICAgICAgCisgICAgPC9mb286Tm90aGluZz4KKyAgPC9iYXI6U29tZXRoaW5nPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tMjIudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTUvYzE0bi0yMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThlMDdkYQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tMjIudHh0CkBAIC0wLDAgKzEsMTUgQEAKKzxiYXI6U29tZXRoaW5nPgorICAgIDxmb286Tm90aGluZz4KKyAgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICA8YmFyOlNvbWV0aGluZz4KKyAgICAgICAgICA8Zm9vOlNvbWV0aGluZz4KKyAgICAgICAgICAgIDxmb286Tm90aGluZz4KKyAgICAgICAgICAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICAgICAgPGJhejpTb21ldGhpbmc+PC9iYXo6U29tZXRoaW5nPgorICAgICAgICAgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICA8L2ZvbzpOb3RoaW5nPgorICAgICAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICAgICAgPC9iYXI6U29tZXRoaW5nPgorICAgICAgPC9mb286U29tZXRoaW5nPgorICAgIDwvZm9vOk5vdGhpbmc+CisgIDwvYmFyOlNvbWV0aGluZz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTIzLnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tMjMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4ZTA3ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTIzLnR4dApAQCAtMCwwICsxLDE1IEBACis8YmFyOlNvbWV0aGluZz4KKyAgICA8Zm9vOk5vdGhpbmc+CisgICAgICA8Zm9vOlNvbWV0aGluZz4KKyAgICAgICAgPGJhcjpTb21ldGhpbmc+CisgICAgICAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICA8Zm9vOk5vdGhpbmc+CisgICAgICAgICAgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICAgICAgICAgIDxiYXo6U29tZXRoaW5nPjwvYmF6OlNvbWV0aGluZz4KKyAgICAgICAgICAgICAgPC9mb286U29tZXRoaW5nPgorICAgICAgICAgICAgPC9mb286Tm90aGluZz4KKyAgICAgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgICAgIDwvYmFyOlNvbWV0aGluZz4KKyAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICA8L2ZvbzpOb3RoaW5nPgorICA8L2JhcjpTb21ldGhpbmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTUvYzE0bi0yNC50eHQgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTI0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGRjNDIzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTUvYzE0bi0yNC50eHQKQEAgLTAsMCArMSBAQAorIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyIgeG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyIgeG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTI1LnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tMjUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTI1LnR4dApkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTUvYzE0bi0yNi50eHQgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTI2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWM3MGNiCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTUvYzE0bi0yNi50eHQKQEAgLTAsMCArMSwxNSBAQAorPGJhcjpTb21ldGhpbmc+CisgICAgPGZvbzpOb3RoaW5nIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIj4KKyAgICAgIDxmb286U29tZXRoaW5nIHhtbG5zPSIiPgorICAgICAgICA8YmFyOlNvbWV0aGluZyB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI+CisgICAgICAgICAgPGZvbzpTb21ldGhpbmcgeG1sbnM9IiI+CisgICAgICAgICAgICA8Zm9vOk5vdGhpbmcgeG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPgorICAgICAgICAgICAgICA8Zm9vOlNvbWV0aGluZyB4bWxucz0iIj4KKyAgICAgICAgICAgICAgICA8YmF6OlNvbWV0aGluZyB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI+PC9iYXo6U29tZXRoaW5nPgorICAgICAgICAgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICA8L2ZvbzpOb3RoaW5nPgorICAgICAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICAgICAgPC9iYXI6U29tZXRoaW5nPgorICAgICAgPC9mb286U29tZXRoaW5nPgorICAgIDwvZm9vOk5vdGhpbmc+CisgIDwvYmFyOlNvbWV0aGluZz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTI3LnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tMjcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExN2YyMWEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTI3LnR4dApAQCAtMCwwICsxLDQzMCBAQAorPFNpZ25lZEluZm8geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciIgeG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6IiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iIHhtbDpsYW5nPSJlbi1pZSI+CisgICAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ij48L0Nhbm9uaWNhbGl6YXRpb25NZXRob2Q+CisgICAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIj48L1NpZ25hdHVyZU1ldGhvZD4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZworICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICA8RGlnZXN0VmFsdWU+ekRjS1pEUElEaXR5NmV6b1VqalloNWw1SEQ4PTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgICgobmFtZSgpICE9ICJiYXIiKSBvciBwYXJlbnQ6OmJhcjpTb21ldGhpbmcpICBhbmQKKyAgICAgICAgICAgICAgKChuYW1lKCkgIT0gImZvbyIpIG9yIHBhcmVudDo6Zm9vOlNvbWV0aGluZykgIGFuZAorICAgICAgICAgICAgICAoKG5hbWUoKSAhPSAiYmF6Iikgb3IgcGFyZW50OjpiYXo6U29tZXRoaW5nKSAgYW5kCisgICAgICAgICAgICAgICgobmFtZSgpICE9ICIiKSBvciBzZWxmOjp0ZXh0KCkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgIDxEaWdlc3RWYWx1ZT5jNi9CSlhJaTNNalpHOCsxeGZWdjBVME9GL3M9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKHNlbGY6OnRleHQoKSAgb3IKKyAgICAgICAgICAgICAgIChuYW1lc3BhY2UtdXJpKCkgIT0gIiIpICBvcgorICAgICAgICAgICAgICAgKHN0cmluZyhzZWxmOjpub2RlKCkpID0gbmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICA8RGlnZXN0VmFsdWU+alQxYW1pZnIrQ1BJKzlEZHZoekxBSmhNZ2dzPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIG5vdCAoc2VsZjo6Zm9vOlNvbWV0aGluZykgIGFuZAorICAgICAgICAgICAgICAoc2VsZjo6dGV4dCgpICBvcgorICAgICAgICAgICAgICAgKG5hbWVzcGFjZS11cmkoKSAhPSAiIikgIG9yCisgICAgICAgICAgICAgICAoc3RyaW5nKHNlbGY6Om5vZGUoKSkgPSBuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgIDxEaWdlc3RWYWx1ZT5yd2t4a0F4WXBZenU2eDg1c2EyUmdDV21uMlE9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikgICE9CisgICAgICAgICAgICAgICBjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiogfCBzZWxmOjpub2RlKCkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICA8RGlnZXN0VmFsdWU+d0gxM0ovK3haZGtzMXFZdjVzOG9RRDF1NFBFPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChzZWxmOjp0ZXh0KCkgIG9yCisgICAgICAgICAgICAgICAobmFtZXNwYWNlLXVyaSgpICE9ICIiKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgPERpZ2VzdFZhbHVlPndIMTNKLyt4WmRrczFxWXY1czhvUUQxdTRQRT08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSAgPQorICAgICAgICAgICAgICAgY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqIHwgc2VsZjo6bm9kZSgpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgPERpZ2VzdFZhbHVlPlRZWlNoSXpMQjQrLzJ1K3lWQjdPb2NYdFd5ST08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoc3RyaW5nKHNlbGY6Om5vZGUoKSkgPSBuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgPERpZ2VzdFZhbHVlPkVoQ0tkK0FNaUtjTC9pNDFvdE51MkZuTysvcz08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoc2VsZjo6dGV4dCgpICBvcgorICAgICAgICAgICAgICAgKG5hbWVzcGFjZS11cmkoKSAhPSAiIikgIG9yCisgICAgICAgICAgICAgICAoKG5hbWUoKSA9ICIiKSAgYW5kCisgICAgICAgICAgICAgICAgKChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpIG1vZCAyKSA9IDEpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgPERpZ2VzdFZhbHVlPjVvV2ZLUitnNWtLODZFM0ZSVEJjaytSL0JRMD08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+PC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgPERpZ2VzdFZhbHVlPnVLZ05uSlo0TXZxcGhocFBqb3IzaUNoSHNRUT08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoKG5hbWUoKSAhPSAiYmFyIikgb3IgcGFyZW50OjpiYXI6U29tZXRoaW5nKSAgYW5kCisgICAgICAgICAgICAgICgobmFtZSgpICE9ICJmb28iKSBvciBwYXJlbnQ6OmZvbzpTb21ldGhpbmcpICBhbmQKKyAgICAgICAgICAgICAgKChuYW1lKCkgIT0gImJheiIpIG9yIHBhcmVudDo6YmF6OlNvbWV0aGluZykgIGFuZAorICAgICAgICAgICAgICAoKG5hbWUoKSAhPSAiIikgb3Igc2VsZjo6dGV4dCgpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj48L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICA8RGlnZXN0VmFsdWU+UE14ZTVVNll6cHliajg2TlhMZVhORDZKN3o4PTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChzZWxmOjp0ZXh0KCkgIG9yCisgICAgICAgICAgICAgICAobmFtZXNwYWNlLXVyaSgpICE9ICIiKSAgb3IKKyAgICAgICAgICAgICAgIChzdHJpbmcoc2VsZjo6bm9kZSgpKSA9IG5hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+PC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgPERpZ2VzdFZhbHVlPnVLZ05uSlo0TXZxcGhocFBqb3IzaUNoSHNRUT08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICBub3QgKHNlbGY6OmZvbzpTb21ldGhpbmcpICBhbmQKKyAgICAgICAgICAgICAgKHNlbGY6OnRleHQoKSAgb3IKKyAgICAgICAgICAgICAgIChuYW1lc3BhY2UtdXJpKCkgIT0gIiIpICBvcgorICAgICAgICAgICAgICAgKHN0cmluZyhzZWxmOjpub2RlKCkpID0gbmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj48L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICA8RGlnZXN0VmFsdWU+OHlvK1RNSG9EcHJ0dzNWOEhCdWFYN0kyZVlBPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopICAhPQorICAgICAgICAgICAgICAgY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqIHwgc2VsZjo6bm9kZSgpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+PC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgPERpZ2VzdFZhbHVlPnlGaHkxUzlDUzhqMmJQQWdNNDNLWmNTWDhVcz08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoc2VsZjo6dGV4dCgpICBvcgorICAgICAgICAgICAgICAgKG5hbWVzcGFjZS11cmkoKSAhPSAiIikpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPjwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgIDxEaWdlc3RWYWx1ZT55Rmh5MVM5Q1M4ajJiUEFnTTQzS1pjU1g4VXM9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikgID0KKyAgICAgICAgICAgICAgIGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiB8IHNlbGY6Om5vZGUoKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPjwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgIDxEaWdlc3RWYWx1ZT4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKHN0cmluZyhzZWxmOjpub2RlKCkpID0gbmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPjwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgIDxEaWdlc3RWYWx1ZT4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKHNlbGY6OnRleHQoKSAgb3IKKyAgICAgICAgICAgICAgIChuYW1lc3BhY2UtdXJpKCkgIT0gIiIpICBvcgorICAgICAgICAgICAgICAgKChuYW1lKCkgPSAiIikgIGFuZAorICAgICAgICAgICAgICAgICgoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSBtb2QgMikgPSAxKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPjwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgIDxEaWdlc3RWYWx1ZT55Rmh5MVM5Q1M4ajJiUEFnTTQzS1pjU1g4VXM9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPgorICAgICAgICAgICAgPEluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0iI2RlZmF1bHQiPjwvSW5jbHVzaXZlTmFtZXNwYWNlcz4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICA8RGlnZXN0VmFsdWU+SzVPclVMU2tWamt1UWQ4NWd4YnJrY293ZzYwPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgICgobmFtZSgpICE9ICJiYXIiKSBvciBwYXJlbnQ6OmJhcjpTb21ldGhpbmcpICBhbmQKKyAgICAgICAgICAgICAgKChuYW1lKCkgIT0gImZvbyIpIG9yIHBhcmVudDo6Zm9vOlNvbWV0aGluZykgIGFuZAorICAgICAgICAgICAgICAoKG5hbWUoKSAhPSAiYmF6Iikgb3IgcGFyZW50OjpiYXo6U29tZXRoaW5nKSAgYW5kCisgICAgICAgICAgICAgICgobmFtZSgpICE9ICIiKSBvciBzZWxmOjp0ZXh0KCkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPgorICAgICAgICAgICAgPEluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0iI2RlZmF1bHQiPjwvSW5jbHVzaXZlTmFtZXNwYWNlcz4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICA8RGlnZXN0VmFsdWU+UE14ZTVVNll6cHliajg2TlhMZVhORDZKN3o4PTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChzZWxmOjp0ZXh0KCkgIG9yCisgICAgICAgICAgICAgICAobmFtZXNwYWNlLXVyaSgpICE9ICIiKSAgb3IKKyAgICAgICAgICAgICAgIChzdHJpbmcoc2VsZjo6bm9kZSgpKSA9IG5hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+CisgICAgICAgICAgICA8SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI+PC9JbmNsdXNpdmVOYW1lc3BhY2VzPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgIDxEaWdlc3RWYWx1ZT51S2dObkpaNE12cXBoaHBQam9yM2lDaEhzUVE9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgbm90IChzZWxmOjpmb286U29tZXRoaW5nKSAgYW5kCisgICAgICAgICAgICAgIChzZWxmOjp0ZXh0KCkgIG9yCisgICAgICAgICAgICAgICAobmFtZXNwYWNlLXVyaSgpICE9ICIiKSAgb3IKKyAgICAgICAgICAgICAgIChzdHJpbmcoc2VsZjo6bm9kZSgpKSA9IG5hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+CisgICAgICAgICAgICA8SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI+PC9JbmNsdXNpdmVOYW1lc3BhY2VzPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgIDxEaWdlc3RWYWx1ZT44eW8rVE1Ib0RwcnR3M1Y4SEJ1YVg3STJlWUE9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikgICE9CisgICAgICAgICAgICAgICBjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiogfCBzZWxmOjpub2RlKCkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj4KKyAgICAgICAgICAgIDxJbmNsdXNpdmVOYW1lc3BhY2VzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIFByZWZpeExpc3Q9IiNkZWZhdWx0Ij48L0luY2x1c2l2ZU5hbWVzcGFjZXM+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgPERpZ2VzdFZhbHVlPnlGaHkxUzlDUzhqMmJQQWdNNDNLWmNTWDhVcz08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoc2VsZjo6dGV4dCgpICBvcgorICAgICAgICAgICAgICAgKG5hbWVzcGFjZS11cmkoKSAhPSAiIikpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPgorICAgICAgICAgICAgPEluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0iI2RlZmF1bHQiPjwvSW5jbHVzaXZlTmFtZXNwYWNlcz4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICA8RGlnZXN0VmFsdWU+eUZoeTFTOUNTOGoyYlBBZ000M0taY1NYOFVzPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopICA9CisgICAgICAgICAgICAgICBjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiogfCBzZWxmOjpub2RlKCkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj4KKyAgICAgICAgICAgIDxJbmNsdXNpdmVOYW1lc3BhY2VzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIFByZWZpeExpc3Q9IiNkZWZhdWx0Ij48L0luY2x1c2l2ZU5hbWVzcGFjZXM+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L0RpZ2VzdE1ldGhvZD4KKyAgICAgICAgPERpZ2VzdFZhbHVlPjluS2NEd3BqTnNBTWdQK2QrWVlTVml4NkRHMD08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoc3RyaW5nKHNlbGY6Om5vZGUoKSkgPSBuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+CisgICAgICAgICAgICA8SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSIjZGVmYXVsdCI+PC9JbmNsdXNpdmVOYW1lc3BhY2VzPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+CisgICAgICAgIDxEaWdlc3RWYWx1ZT4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKHNlbGY6OnRleHQoKSAgb3IKKyAgICAgICAgICAgICAgIChuYW1lc3BhY2UtdXJpKCkgIT0gIiIpICBvcgorICAgICAgICAgICAgICAgKChuYW1lKCkgPSAiIikgIGFuZAorICAgICAgICAgICAgICAgICgoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSBtb2QgMikgPSAxKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPgorICAgICAgICAgICAgPEluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0iI2RlZmF1bHQiPjwvSW5jbHVzaXZlTmFtZXNwYWNlcz4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvRGlnZXN0TWV0aG9kPgorICAgICAgICA8RGlnZXN0VmFsdWU+Q3dsdEhPbUNmMHRGU3lycVJEWVFORlQ0ZW84PTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICA8L1NpZ25lZEluZm8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTUvYzE0bi0zLnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUxMDY2NwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tMy50eHQKQEAgLTAsMCArMSwxNSBAQAorPGJhcjpTb21ldGhpbmcgeG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIiB4bWw6bGFuZz0iZW4taWUiPgorICAgIDxmb286Tm90aGluZyB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iPgorICAgICAgCisgICAgICAgIDxiYXI6U29tZXRoaW5nIHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciIgeG1sOmxhbmc9ImVuLWllIj4KKyAgICAgICAgICAgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIgorICAgICAgICAgICAgPGZvbzpOb3RoaW5nIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyIgeG1sOmxhbmc9ImVuLWllIj4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPGJhejpTb21ldGhpbmcgeG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6IiB4bWw6bGFuZz0iZW4taWUiPjwvYmF6OlNvbWV0aGluZz4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICA8L2ZvbzpOb3RoaW5nPgorICAgICAgICAgIAorICAgICAgICA8L2JhcjpTb21ldGhpbmc+CisgICAgICAKKyAgICA8L2ZvbzpOb3RoaW5nPgorICA8L2JhcjpTb21ldGhpbmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTUvYzE0bi00LnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY5N2Y1ZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tNC50eHQKQEAgLTAsMCArMSwxNSBAQAorPGJhcjpTb21ldGhpbmcgeG1sOmxhbmc9ImVuLWllIj4KKyAgICA8Zm9vOk5vdGhpbmc+CisgICAgICA8Zm9vOlNvbWV0aGluZz4KKyAgICAgICAgPGJhcjpTb21ldGhpbmc+CisgICAgICAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICA8Zm9vOk5vdGhpbmc+CisgICAgICAgICAgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICAgICAgICAgIDxiYXo6U29tZXRoaW5nPjwvYmF6OlNvbWV0aGluZz4KKyAgICAgICAgICAgICAgPC9mb286U29tZXRoaW5nPgorICAgICAgICAgICAgPC9mb286Tm90aGluZz4KKyAgICAgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgICAgIDwvYmFyOlNvbWV0aGluZz4KKyAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICA8L2ZvbzpOb3RoaW5nPgorICA8L2JhcjpTb21ldGhpbmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTUvYzE0bi01LnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tNS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY5N2Y1ZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tNS50eHQKQEAgLTAsMCArMSwxNSBAQAorPGJhcjpTb21ldGhpbmcgeG1sOmxhbmc9ImVuLWllIj4KKyAgICA8Zm9vOk5vdGhpbmc+CisgICAgICA8Zm9vOlNvbWV0aGluZz4KKyAgICAgICAgPGJhcjpTb21ldGhpbmc+CisgICAgICAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICA8Zm9vOk5vdGhpbmc+CisgICAgICAgICAgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICAgICAgICAgIDxiYXo6U29tZXRoaW5nPjwvYmF6OlNvbWV0aGluZz4KKyAgICAgICAgICAgICAgPC9mb286U29tZXRoaW5nPgorICAgICAgICAgICAgPC9mb286Tm90aGluZz4KKyAgICAgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgICAgIDwvYmFyOlNvbWV0aGluZz4KKyAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICA8L2ZvbzpOb3RoaW5nPgorICA8L2JhcjpTb21ldGhpbmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTUvYzE0bi02LnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tNi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVmNjhkNAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tNi50eHQKQEAgLTAsMCArMSBAQAorIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiIHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiIgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyIgeG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyIgeG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iIHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciIgeG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6IiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiIHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiIgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyIgeG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyIgeG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iIHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciIgeG1sbnM6YmF6PSJodHRwOi8vZXhhbXBsZS5vcmcvYmF6IiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIiB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiIHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiIgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyIgeG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTcudHh0IGIvZGF0YS9pbnRlcm9wL2MxNG4vWTUvYzE0bi03LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjQ0Y2UzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTUvYzE0bi03LnR4dApAQCAtMCwwICsxIEBACisgeG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyIgeG1sbnM6YmFyPSJodHRwOi8vZXhhbXBsZS5vcmcvYmFyIiB4bWxuczpmb289Imh0dHA6Ly9leGFtcGxlLm9yZy9mb28iIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyIgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIiB4bWxuczpiYXo9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXoiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL2MxNG4vWTUvYzE0bi04LnR4dCBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tOC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM0ZWQ4NAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tOC50eHQKQEAgLTAsMCArMSwxNSBAQAorPGJhcjpTb21ldGhpbmcgeG1sOmxhbmc9ImVuLWllIj4KKyAgICA8Zm9vOk5vdGhpbmcgeG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZy8iPgorICAgICAgPGZvbzpTb21ldGhpbmcgeG1sbnM9IiI+CisgICAgICAgIDxiYXI6U29tZXRoaW5nIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIj4KKyAgICAgICAgICA8Zm9vOlNvbWV0aGluZyB4bWxucz0iIj4KKyAgICAgICAgICAgIDxmb286Tm90aGluZyB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyI+CisgICAgICAgICAgICAgIDxmb286U29tZXRoaW5nIHhtbG5zPSIiPgorICAgICAgICAgICAgICAgIDxiYXo6U29tZXRoaW5nIHhtbG5zPSJodHRwOi8vZXhhbXBsZS5vcmcvIj48L2JhejpTb21ldGhpbmc+CisgICAgICAgICAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICAgICAgICAgIDwvZm9vOk5vdGhpbmc+CisgICAgICAgICAgPC9mb286U29tZXRoaW5nPgorICAgICAgICA8L2JhcjpTb21ldGhpbmc+CisgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgPC9mb286Tm90aGluZz4KKyAgPC9iYXI6U29tZXRoaW5nPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC9jMTRuL1k1L2MxNG4tOS50eHQgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmY2MzNTEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AvYzE0bi9ZNS9jMTRuLTkudHh0CkBAIC0wLDAgKzEsMTUgQEAKKzxiYXI6U29tZXRoaW5nIHhtbG5zOmJhcj0iaHR0cDovL2V4YW1wbGUub3JnL2JhciI+CisgICAgPGZvbzpOb3RoaW5nIHhtbG5zOmZvbz0iaHR0cDovL2V4YW1wbGUub3JnL2ZvbyI+CisgICAgICA8Zm9vOlNvbWV0aGluZz4KKyAgICAgICAgPGJhcjpTb21ldGhpbmc+CisgICAgICAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICA8Zm9vOk5vdGhpbmc+CisgICAgICAgICAgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICAgICAgICAgIDxiYXo6U29tZXRoaW5nIHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiI+PC9iYXo6U29tZXRoaW5nPgorICAgICAgICAgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICA8L2ZvbzpOb3RoaW5nPgorICAgICAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICAgICAgPC9iYXI6U29tZXRoaW5nPgorICAgICAgPC9mb286U29tZXRoaW5nPgorICAgIDwvZm9vOk5vdGhpbmc+CisgIDwvYmFyOlNvbWV0aGluZz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNS9tZXJsaW4tYzE0bi10aHJlZS50YXIuZ3ogYi9kYXRhL2ludGVyb3AvYzE0bi9ZNS9tZXJsaW4tYzE0bi10aHJlZS50YXIuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NmZTY2MgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC9jMTRuL1k1L21lcmxpbi1jMTRuLXRocmVlLnRhci5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNS9zaWduYXR1cmUueG1sIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTUvc2lnbmF0dXJlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzQ0NDA0Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTUvc2lnbmF0dXJlLnhtbApAQCAtMCwwICsxLDUyNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxmb286Um9vdCB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiIHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiIgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyIgeG1sOmxhbmc9ImVuLWllIj4KKyAgPGJhcjpTb21ldGhpbmc+CisgICAgPGZvbzpOb3RoaW5nPgorICAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgIDxiYXI6U29tZXRoaW5nPgorICAgICAgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICAgICAgPGZvbzpOb3RoaW5nPgorICAgICAgICAgICAgICA8Zm9vOlNvbWV0aGluZz4KKyAgICAgICAgICAgICAgICA8YmF6OlNvbWV0aGluZyAvPgorICAgICAgICAgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICA8L2ZvbzpOb3RoaW5nPgorICAgICAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICAgICAgPC9iYXI6U29tZXRoaW5nPgorICAgICAgPC9mb286U29tZXRoaW5nPgorICAgIDwvZm9vOk5vdGhpbmc+CisgIDwvYmFyOlNvbWV0aGluZz4KKyAgPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgPFNpZ25lZEluZm8+CisgICAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPgorICAgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIgLz4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZworICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT56RGNLWkRQSURpdHk2ZXpvVWpqWWg1bDVIRDg9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKChuYW1lKCkgIT0gImJhciIpIG9yIHBhcmVudDo6YmFyOlNvbWV0aGluZykgIGFuZAorICAgICAgICAgICAgICAoKG5hbWUoKSAhPSAiZm9vIikgb3IgcGFyZW50Ojpmb286U29tZXRoaW5nKSAgYW5kCisgICAgICAgICAgICAgICgobmFtZSgpICE9ICJiYXoiKSBvciBwYXJlbnQ6OmJhejpTb21ldGhpbmcpICBhbmQKKyAgICAgICAgICAgICAgKChuYW1lKCkgIT0gIiIpIG9yIHNlbGY6OnRleHQoKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+YzYvQkpYSWkzTWpaRzgrMXhmVnYwVTBPRi9zPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChzZWxmOjp0ZXh0KCkgIG9yCisgICAgICAgICAgICAgICAobmFtZXNwYWNlLXVyaSgpICE9ICIiKSAgb3IKKyAgICAgICAgICAgICAgIChzdHJpbmcoc2VsZjo6bm9kZSgpKSA9IG5hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+alQxYW1pZnIrQ1BJKzlEZHZoekxBSmhNZ2dzPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIG5vdCAoc2VsZjo6Zm9vOlNvbWV0aGluZykgIGFuZAorICAgICAgICAgICAgICAoc2VsZjo6dGV4dCgpICBvcgorICAgICAgICAgICAgICAgKG5hbWVzcGFjZS11cmkoKSAhPSAiIikgIG9yCisgICAgICAgICAgICAgICAoc3RyaW5nKHNlbGY6Om5vZGUoKSkgPSBuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPnJ3a3hrQXhZcFl6dTZ4ODVzYTJSZ0NXbW4yUT08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSAgIT0KKyAgICAgICAgICAgICAgIGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiB8IHNlbGY6Om5vZGUoKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPndIMTNKLyt4WmRrczFxWXY1czhvUUQxdTRQRT08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoc2VsZjo6dGV4dCgpICBvcgorICAgICAgICAgICAgICAgKG5hbWVzcGFjZS11cmkoKSAhPSAiIikpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPndIMTNKLyt4WmRrczFxWXY1czhvUUQxdTRQRT08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSAgPQorICAgICAgICAgICAgICAgY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqIHwgc2VsZjo6bm9kZSgpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+VFlaU2hJekxCNCsvMnUreVZCN09vY1h0V3lJPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChzdHJpbmcoc2VsZjo6bm9kZSgpKSA9IG5hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT5FaENLZCtBTWlLY0wvaTQxb3ROdTJGbk8rL3M9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKHNlbGY6OnRleHQoKSAgb3IKKyAgICAgICAgICAgICAgIChuYW1lc3BhY2UtdXJpKCkgIT0gIiIpICBvcgorICAgICAgICAgICAgICAgKChuYW1lKCkgPSAiIikgIGFuZAorICAgICAgICAgICAgICAgICgoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSBtb2QgMikgPSAxKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPjVvV2ZLUitnNWtLODZFM0ZSVEJjaytSL0JRMD08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgLz4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT51S2dObkpaNE12cXBoaHBQam9yM2lDaEhzUVE9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKChuYW1lKCkgIT0gImJhciIpIG9yIHBhcmVudDo6YmFyOlNvbWV0aGluZykgIGFuZAorICAgICAgICAgICAgICAoKG5hbWUoKSAhPSAiZm9vIikgb3IgcGFyZW50Ojpmb286U29tZXRoaW5nKSAgYW5kCisgICAgICAgICAgICAgICgobmFtZSgpICE9ICJiYXoiKSBvciBwYXJlbnQ6OmJhejpTb21ldGhpbmcpICBhbmQKKyAgICAgICAgICAgICAgKChuYW1lKCkgIT0gIiIpIG9yIHNlbGY6OnRleHQoKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgLz4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT5QTXhlNVU2WXpweWJqODZOWExlWE5ENko3ejg9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKHNlbGY6OnRleHQoKSAgb3IKKyAgICAgICAgICAgICAgIChuYW1lc3BhY2UtdXJpKCkgIT0gIiIpICBvcgorICAgICAgICAgICAgICAgKHN0cmluZyhzZWxmOjpub2RlKCkpID0gbmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiAvPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPnVLZ05uSlo0TXZxcGhocFBqb3IzaUNoSHNRUT08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICBub3QgKHNlbGY6OmZvbzpTb21ldGhpbmcpICBhbmQKKyAgICAgICAgICAgICAgKHNlbGY6OnRleHQoKSAgb3IKKyAgICAgICAgICAgICAgIChuYW1lc3BhY2UtdXJpKCkgIT0gIiIpICBvcgorICAgICAgICAgICAgICAgKHN0cmluZyhzZWxmOjpub2RlKCkpID0gbmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiAvPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPjh5bytUTUhvRHBydHczVjhIQnVhWDdJMmVZQT08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSAgIT0KKyAgICAgICAgICAgICAgIGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiB8IHNlbGY6Om5vZGUoKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIC8+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+eUZoeTFTOUNTOGoyYlBBZ000M0taY1NYOFVzPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChzZWxmOjp0ZXh0KCkgIG9yCisgICAgICAgICAgICAgICAobmFtZXNwYWNlLXVyaSgpICE9ICIiKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgLz4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT55Rmh5MVM5Q1M4ajJiUEFnTTQzS1pjU1g4VXM9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikgID0KKyAgICAgICAgICAgICAgIGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiB8IHNlbGY6Om5vZGUoKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIC8+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChzdHJpbmcoc2VsZjo6bm9kZSgpKSA9IG5hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiAvPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoc2VsZjo6dGV4dCgpICBvcgorICAgICAgICAgICAgICAgKG5hbWVzcGFjZS11cmkoKSAhPSAiIikgIG9yCisgICAgICAgICAgICAgICAoKG5hbWUoKSA9ICIiKSAgYW5kCisgICAgICAgICAgICAgICAgKChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpIG1vZCAyKSA9IDEpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgLz4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT55Rmh5MVM5Q1M4ajJiUEFnTTQzS1pjU1g4VXM9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPgorICAgICAgICAgICAgPEluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0iI2RlZmF1bHQiIC8+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+SzVPclVMU2tWamt1UWQ4NWd4YnJrY293ZzYwPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgICgobmFtZSgpICE9ICJiYXIiKSBvciBwYXJlbnQ6OmJhcjpTb21ldGhpbmcpICBhbmQKKyAgICAgICAgICAgICAgKChuYW1lKCkgIT0gImZvbyIpIG9yIHBhcmVudDo6Zm9vOlNvbWV0aGluZykgIGFuZAorICAgICAgICAgICAgICAoKG5hbWUoKSAhPSAiYmF6Iikgb3IgcGFyZW50OjpiYXo6U29tZXRoaW5nKSAgYW5kCisgICAgICAgICAgICAgICgobmFtZSgpICE9ICIiKSBvciBzZWxmOjp0ZXh0KCkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPgorICAgICAgICAgICAgPEluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0iI2RlZmF1bHQiIC8+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+UE14ZTVVNll6cHliajg2TlhMZVhORDZKN3o4PTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChzZWxmOjp0ZXh0KCkgIG9yCisgICAgICAgICAgICAgICAobmFtZXNwYWNlLXVyaSgpICE9ICIiKSAgb3IKKyAgICAgICAgICAgICAgIChzdHJpbmcoc2VsZjo6bm9kZSgpKSA9IG5hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+CisgICAgICAgICAgICA8SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSIjZGVmYXVsdCIgLz4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT51S2dObkpaNE12cXBoaHBQam9yM2lDaEhzUVE9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgbm90IChzZWxmOjpmb286U29tZXRoaW5nKSAgYW5kCisgICAgICAgICAgICAgIChzZWxmOjp0ZXh0KCkgIG9yCisgICAgICAgICAgICAgICAobmFtZXNwYWNlLXVyaSgpICE9ICIiKSAgb3IKKyAgICAgICAgICAgICAgIChzdHJpbmcoc2VsZjo6bm9kZSgpKSA9IG5hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+CisgICAgICAgICAgICA8SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSIjZGVmYXVsdCIgLz4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT44eW8rVE1Ib0RwcnR3M1Y4SEJ1YVg3STJlWUE9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikgICE9CisgICAgICAgICAgICAgICBjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiogfCBzZWxmOjpub2RlKCkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj4KKyAgICAgICAgICAgIDxJbmNsdXNpdmVOYW1lc3BhY2VzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIFByZWZpeExpc3Q9IiNkZWZhdWx0IiAvPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPnlGaHkxUzlDUzhqMmJQQWdNNDNLWmNTWDhVcz08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoc2VsZjo6dGV4dCgpICBvcgorICAgICAgICAgICAgICAgKG5hbWVzcGFjZS11cmkoKSAhPSAiIikpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPgorICAgICAgICAgICAgPEluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0iI2RlZmF1bHQiIC8+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+eUZoeTFTOUNTOGoyYlBBZ000M0taY1NYOFVzPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopICA9CisgICAgICAgICAgICAgICBjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiogfCBzZWxmOjpub2RlKCkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj4KKyAgICAgICAgICAgIDxJbmNsdXNpdmVOYW1lc3BhY2VzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIFByZWZpeExpc3Q9IiNkZWZhdWx0IiAvPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPjluS2NEd3BqTnNBTWdQK2QrWVlTVml4NkRHMD08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoc3RyaW5nKHNlbGY6Om5vZGUoKSkgPSBuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+CisgICAgICAgICAgICA8SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSIjZGVmYXVsdCIgLz4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKHNlbGY6OnRleHQoKSAgb3IKKyAgICAgICAgICAgICAgIChuYW1lc3BhY2UtdXJpKCkgIT0gIiIpICBvcgorICAgICAgICAgICAgICAgKChuYW1lKCkgPSAiIikgIGFuZAorICAgICAgICAgICAgICAgICgoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSBtb2QgMikgPSAxKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPgorICAgICAgICAgICAgPEluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0iI2RlZmF1bHQiIC8+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+Q3dsdEhPbUNmMHRGU3lycVJEWVFORlQ0ZW84PTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICA8L1NpZ25lZEluZm8+CisgICAgPFNpZ25hdHVyZVZhbHVlPgorICAgICAgTjZhcWc3OU9LTVF6a1U3dVRIUm1uNHJ5cGxoYVRoME9GbENScWEvclMrcFVCVjZNOG5UWDVBPT0KKyAgICA8L1NpZ25hdHVyZVZhbHVlPgorICAgIDxLZXlJbmZvPgorICAgICAgPEtleVZhbHVlPgorICAgICAgICA8RFNBS2V5VmFsdWU+CisgICAgICAgICAgPFA+CisgICAgICAgICAgICAzZU9lQXZxbkV5RnBXK3VUU2dyZGo3WUxqYVRrcHlIZWNLRklvTHU4UVpOa0dUUUkxY2lJVEJIMGxxZklrZENICisgICAgICAgICAgICBTaThmaVVDM0RUcTNKOUZzSmVmNFlWdERGN0pwVXZIVE9RcXRxN1pneDZLQzhXeGt6NnJRQ3hPcjdGMEFwT1lpCisgICAgICAgICAgICA4OXpMUm9lNE1rREdlNnV4MCtXdHlPVFFvVklHTlRERFVGWHJVUU5iTHJFPQorICAgICAgICAgIDwvUD4KKyAgICAgICAgICA8UT5oRExjRkswR08vSHoxYXJ4T092c2dNL1ZMeVU9PC9RPgorICAgICAgICAgIDxHPgorICAgICAgICAgICAgbm54N2hiZFdvekdidG5GZ25iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzegorICAgICAgICAgICAgS3Q3ZGxFYVFMN2I1K0pUWnQzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTQorICAgICAgICAgICAgOGQycmhkMlVpMHhIYmswRDQ1MW5oTHhWV3VsdmlPU1BoektLdlhyYnlTQT0KKyAgICAgICAgICA8L0c+CisgICAgICAgICAgPFk+CisgICAgICAgICAgICBjZllwaWhwQVFlZXBiTkZTNE1BYlFSaGRYcERpNXdMcnd4RTVoSXZvWXFvMUw4QlFWdThmWTFURkFQdG9hZTFpCisgICAgICAgICAgICBCZy9HSUp5UDNpTGZ5dUJKYUR2SkpMUDMwd0JIOWkvczVKMzY1NlBldnBPVmRUZmk3NzdGaTlHajZ5L2liMlZ2CisgICAgICAgICAgICArT1pmSmtrcDRMNTArcDVUVWhQbVFMSnRSRXNndGwrdG5JT3lKVCsrRzlVPQorICAgICAgICAgIDwvWT4KKyAgICAgICAgPC9EU0FLZXlWYWx1ZT4KKyAgICAgIDwvS2V5VmFsdWU+CisgICAgICA8WDUwOURhdGE+CisgICAgICAgIDxYNTA5U3ViamVjdE5hbWU+CisgICAgICAgICAgQ049TWVybGluIEh1Z2hlcyxPVT1YL1NlY3VyZSxPPUJhbHRpbW9yZSBUZWNobm9sb2dpZXMgTHRkLixTVD1EdWJsaW4sQz1JRQorICAgICAgICA8L1g1MDlTdWJqZWN0TmFtZT4KKyAgICAgICAgPFg1MDlJc3N1ZXJTZXJpYWw+CisgICAgICAgICAgPFg1MDlJc3N1ZXJOYW1lPgorICAgICAgICAgICAgQ049VHJhbnNpZW50IENBLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlIFRlY2hub2xvZ2llcyBMdGQuLFNUPUR1YmxpbixDPUlFCisgICAgICAgICAgPC9YNTA5SXNzdWVyTmFtZT4KKyAgICAgICAgICA8WDUwOVNlcmlhbE51bWJlcj4xMDE3Nzg4MzcwMzQ4PC9YNTA5U2VyaWFsTnVtYmVyPgorICAgICAgICA8L1g1MDlJc3N1ZXJTZXJpYWw+CisgICAgICAgIDxYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgTUlJRFVEQ0NBeENnQXdJQkFnSUdBT3o0Nmcyc01Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CCisgICAgICAgICAgTUI0WERUQXlNRFF3TWpJeU5Ua3pNRm9YRFRFeU1EUXdNakl4TlRreU5Wb3diekVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVdNQlFHQTFVRUF4TU5UV1Z5YkdsdUlFaDFaMmhsCisgICAgICAgICAgY3pDQ0FiY3dnZ0VzQmdjcWhrak9PQVFCTUlJQkh3S0JnUURkNDU0QytxY1RJV2xiNjVOS0N0MlB0Z3VOcE9TbgorICAgICAgICAgIElkNXdvVWlndTd4QmsyUVpOQWpWeUloTUVmU1dwOGlSMElkS0x4K0pRTGNOT3JjbjBXd2w1L2hoVzBNWHNtbFMKKyAgICAgICAgICA4ZE01Q3EycnRtREhvb0x4YkdUUHF0QUxFNnZzWFFDazVpTHozTXRHaDdneVFNWjdxN0hUNWEzSTVOQ2hVZ1kxCisgICAgICAgICAgTU1OUVZldFJBMXN1c1FJVkFJUXkzQlN0Qmp2eDg5V3E4VGpyN0lEUDFTOGxBb0dCQUo1OGU0VzNWcU14bTdaeAorICAgICAgICAgIFlKMnhaNktYMFplMTBXbktaRHlVUm4rVDlpRklGYktSRkVsS0Rlb3RYd3dYd1lPTjh5cmUzWlJHa0MrMitmaVUKKyAgICAgICAgICAyYmR6SVdUVDZMTWJJTVZiayswN1A0T1pPeEo2WFdMOUd1WWNPUWNOdlg0MnhoMzREUEhkcTRYZGxJdE1SMjVOCisgICAgICAgICAgQStPZFo0UzhWVnJwYjRqa2o0Y3lpcjE2MjhrZ0E0R0VBQUtCZ0hIMktZb2FRRUhucVd6UlV1REFHMEVZWFY2UQorICAgICAgICAgIDR1Y0M2OE1ST1lTTDZHS3FOUy9BVUZidkgyTlV4UUQ3YUdudFlnWVB4aUNjajk0aTM4cmdTV2c3eVNTejk5TUEKKyAgICAgICAgICBSL1l2N09TZCt1ZWozcjZUbFhVMzR1Kyt4WXZSbytzdjRtOWxiL2ptWHlaSktlQytkUHFlVTFJVDVrQ3liVVJMCisgICAgICAgICAgSUxaZnJaeURzaVUvdmh2Vm96b3dPREFPQmdOVkhROEJBZjhFQkFNQ0I0QXdFUVlEVlIwT0JBb0VDSWF0WTdTRQorICAgICAgICAgIGxYRU9NQk1HQTFVZEl3UU1NQXFBQ0lPR1BrQjJNdUtUTUFrR0J5cUdTTTQ0QkFNREx3QXdMQUlVU3ZUMDJpUWoKKyAgICAgICAgICBRNWRhNFdwZTBCdnM3R3VDY1ZzQ0ZDRWNRcGJqVWZueFhGWE5XaUZ5UTQ5WnJXcW4KKyAgICAgICAgPC9YNTA5Q2VydGlmaWNhdGU+CisgICAgICAgIDxYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgTUlJRFN6Q0NBd3VnQXdJQkFnSUdBT3o0NmZ3Sk1Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CCisgICAgICAgICAgTUI0WERUQXlNRFF3TWpJeU5Ua3lOVm9YRFRFeU1EUXdNakl4TlRreU5Wb3diakVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CCisgICAgICAgICAgTUlJQnR6Q0NBU3dHQnlxR1NNNDRCQUV3Z2dFZkFvR0JBTjNqbmdMNnB4TWhhVnZyazBvSzNZKzJDNDJrNUtjaAorICAgICAgICAgIDNuQ2hTS0M3dkVHVFpCazBDTlhJaUV3UjlKYW55SkhRaDBvdkg0bEF0dzA2dHlmUmJDWG4rR0ZiUXhleWFWTHgKKyAgICAgICAgICAwemtLcmF1MllNZWlndkZzWk0rcTBBc1RxK3hkQUtUbUl2UGN5MGFIdURKQXhudXJzZFBscmNqazBLRlNCalV3CisgICAgICAgICAgdzFCVjYxRURXeTZ4QWhVQWhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VUNnWUVBbm54N2hiZFdvekdidG5GZworICAgICAgICAgIG5iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzekt0N2RsRWFRTDdiNStKVFoKKyAgICAgICAgICB0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ004ZDJyaGQyVWkweEhiazBECisgICAgICAgICAgNDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBRGdZUUFBb0dBZmFnK0hDQUJJSmFkREQ5QWFyaGdjMlFSM0xwNworICAgICAgICAgIFBwTU9oMGxBd0xpSXN2a080VWxiZU9TMElKQzhiY3FMak0xZlZ3NkZHU2F4bXErNHkxYWcybTlrNklkRTBRaDUKKyAgICAgICAgICBOeEIveEZrbWR3cVhGUklKVnA0NE9lVXlnQjQ3WUs3Nk5tVUlZRzNEZGZpUFBVM2Jxemp2dE90RVRpQ0h2bzI1CisgICAgICAgICAgNEQ2VWp3UHBZRXJYUlVhak5qQTBNQTRHQTFVZER3RUIvd1FFQXdJQ0JEQVBCZ05WSFJNRUNEQUdBUUgvQWdFQQorICAgICAgICAgIE1CRUdBMVVkRGdRS0JBaURoajVBZGpMaWt6QUpCZ2NxaGtqT09BUURBeThBTUN3Q0ZFTHUwbnV3ZXFXN1dmMHMKKyAgICAgICAgICBnay9DQUdHTDBCR0tBaFJOZGdRR3I1aXlaS29ING9xUG0wVko5VGpYTGc9PQorICAgICAgICA8L1g1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgIDwvWDUwOURhdGE+CisgICAgPC9LZXlJbmZvPgorICA8L1NpZ25hdHVyZT4KKzwvZm9vOlJvb3Q+CmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AvYzE0bi9ZNS9zaWduYXR1cmVDb21tZW50ZWQueG1sIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTUvc2lnbmF0dXJlQ29tbWVudGVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2JkMjMwCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL2MxNG4vWTUvc2lnbmF0dXJlQ29tbWVudGVkLnhtbApAQCAtMCwwICsxLDUyNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxmb286Um9vdCB4bWxuczpiYXI9Imh0dHA6Ly9leGFtcGxlLm9yZy9iYXIiIHhtbG5zOmJhej0iaHR0cDovL2V4YW1wbGUub3JnL2JheiIgeG1sbnM6Zm9vPSJodHRwOi8vZXhhbXBsZS5vcmcvZm9vIiB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnLyIgeG1sOmxhbmc9ImVuLWllIj4KKyAgPGJhcjpTb21ldGhpbmc+CisgICAgPGZvbzpOb3RoaW5nPgorICAgICAgPGZvbzpTb21ldGhpbmc+CisgICAgICAgIDxiYXI6U29tZXRoaW5nPgorICAgICAgICAgIDxmb286U29tZXRoaW5nPgorICAgICAgICAgICAgPGZvbzpOb3RoaW5nPgorICAgICAgICAgICAgICA8Zm9vOlNvbWV0aGluZz4KKyAgICAgICAgICAgICAgICA8YmF6OlNvbWV0aGluZyAvPgorICAgICAgICAgICAgICA8L2ZvbzpTb21ldGhpbmc+CisgICAgICAgICAgICA8L2ZvbzpOb3RoaW5nPgorICAgICAgICAgIDwvZm9vOlNvbWV0aGluZz4KKyAgICAgICAgPC9iYXI6U29tZXRoaW5nPgorICAgICAgPC9mb286U29tZXRoaW5nPgorICAgIDwvZm9vOk5vdGhpbmc+CisgIDwvYmFyOlNvbWV0aGluZz4KKyAgPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgPFNpZ25lZEluZm8+CisgICAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPgorICAgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIgLz4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPjwhLS0gIDAgLS0+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPnpEY0taRFBJRGl0eTZlem9VampZaDVsNUhEOD08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+PCEtLSAgMSAtLT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgICgobmFtZSgpICE9ICJiYXIiKSBvciBwYXJlbnQ6OmJhcjpTb21ldGhpbmcpICBhbmQKKyAgICAgICAgICAgICAgKChuYW1lKCkgIT0gImZvbyIpIG9yIHBhcmVudDo6Zm9vOlNvbWV0aGluZykgIGFuZAorICAgICAgICAgICAgICAoKG5hbWUoKSAhPSAiYmF6Iikgb3IgcGFyZW50OjpiYXo6U29tZXRoaW5nKSAgYW5kCisgICAgICAgICAgICAgICgobmFtZSgpICE9ICIiKSBvciBzZWxmOjp0ZXh0KCkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPmM2L0JKWElpM01qWkc4KzF4ZlZ2MFUwT0Yvcz08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj48IS0tICAyIC0tPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChzZWxmOjp0ZXh0KCkgIG9yCisgICAgICAgICAgICAgICAobmFtZXNwYWNlLXVyaSgpICE9ICIiKSAgb3IKKyAgICAgICAgICAgICAgIChzdHJpbmcoc2VsZjo6bm9kZSgpKSA9IG5hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+alQxYW1pZnIrQ1BJKzlEZHZoekxBSmhNZ2dzPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPjwhLS0gIDMgLS0+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgbm90IChzZWxmOjpmb286U29tZXRoaW5nKSAgYW5kCisgICAgICAgICAgICAgIChzZWxmOjp0ZXh0KCkgIG9yCisgICAgICAgICAgICAgICAobmFtZXNwYWNlLXVyaSgpICE9ICIiKSAgb3IKKyAgICAgICAgICAgICAgIChzdHJpbmcoc2VsZjo6bm9kZSgpKSA9IG5hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+cndreGtBeFlwWXp1Nng4NXNhMlJnQ1dtbjJRPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPjwhLS0gIDQgLS0+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikgICE9CisgICAgICAgICAgICAgICBjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiogfCBzZWxmOjpub2RlKCkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT53SDEzSi8reFpka3MxcVl2NXM4b1FEMXU0UEU9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+PCEtLSAgNSAtLT4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoc2VsZjo6dGV4dCgpICBvcgorICAgICAgICAgICAgICAgKG5hbWVzcGFjZS11cmkoKSAhPSAiIikpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPndIMTNKLyt4WmRrczFxWXY1czhvUUQxdTRQRT08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj48IS0tICA2IC0tPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopICA9CisgICAgICAgICAgICAgICBjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiogfCBzZWxmOjpub2RlKCkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT5UWVpTaEl6TEI0Ky8ydSt5VkI3T29jWHRXeUk9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+PCEtLSAgNyAtLT4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoc3RyaW5nKHNlbGY6Om5vZGUoKSkgPSBuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+RWhDS2QrQU1pS2NML2k0MW90TnUyRm5PKy9zPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPjwhLS0gIDggLS0+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKHNlbGY6OnRleHQoKSAgb3IKKyAgICAgICAgICAgICAgIChuYW1lc3BhY2UtdXJpKCkgIT0gIiIpICBvcgorICAgICAgICAgICAgICAgKChuYW1lKCkgPSAiIikgIGFuZAorICAgICAgICAgICAgICAgICgoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSBtb2QgMikgPSAxKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPjVvV2ZLUitnNWtLODZFM0ZSVEJjaytSL0JRMD08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj48IS0tICA5IC0tPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZworICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiAvPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPnVLZ05uSlo0TXZxcGhocFBqb3IzaUNoSHNRUT08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj48IS0tIDEwIC0tPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgICgobmFtZSgpICE9ICJiYXIiKSBvciBwYXJlbnQ6OmJhcjpTb21ldGhpbmcpICBhbmQKKyAgICAgICAgICAgICAgKChuYW1lKCkgIT0gImZvbyIpIG9yIHBhcmVudDo6Zm9vOlNvbWV0aGluZykgIGFuZAorICAgICAgICAgICAgICAoKG5hbWUoKSAhPSAiYmF6Iikgb3IgcGFyZW50OjpiYXo6U29tZXRoaW5nKSAgYW5kCisgICAgICAgICAgICAgICgobmFtZSgpICE9ICIiKSBvciBzZWxmOjp0ZXh0KCkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIC8+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+UE14ZTVVNll6cHliajg2TlhMZVhORDZKN3o4PTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPjwhLS0gMTEgLS0+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKHNlbGY6OnRleHQoKSAgb3IKKyAgICAgICAgICAgICAgIChuYW1lc3BhY2UtdXJpKCkgIT0gIiIpICBvcgorICAgICAgICAgICAgICAgKHN0cmluZyhzZWxmOjpub2RlKCkpID0gbmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiAvPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPnVLZ05uSlo0TXZxcGhocFBqb3IzaUNoSHNRUT08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj48IS0tIDEyIC0tPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIG5vdCAoc2VsZjo6Zm9vOlNvbWV0aGluZykgIGFuZAorICAgICAgICAgICAgICAoc2VsZjo6dGV4dCgpICBvcgorICAgICAgICAgICAgICAgKG5hbWVzcGFjZS11cmkoKSAhPSAiIikgIG9yCisgICAgICAgICAgICAgICAoc3RyaW5nKHNlbGY6Om5vZGUoKSkgPSBuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIC8+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+OHlvK1RNSG9EcHJ0dzNWOEhCdWFYN0kyZVlBPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPjwhLS0gMTMgLS0+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikgICE9CisgICAgICAgICAgICAgICBjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiogfCBzZWxmOjpub2RlKCkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiAvPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPnlGaHkxUzlDUzhqMmJQQWdNNDNLWmNTWDhVcz08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj48IS0tIDE0IC0tPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChzZWxmOjp0ZXh0KCkgIG9yCisgICAgICAgICAgICAgICAobmFtZXNwYWNlLXVyaSgpICE9ICIiKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgLz4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT55Rmh5MVM5Q1M4ajJiUEFnTTQzS1pjU1g4VXM9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+PCEtLSAxNSAtLT4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqKSAgPQorICAgICAgICAgICAgICAgY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqIHwgc2VsZjo6bm9kZSgpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgLz4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+PCEtLSAxNiAtLT4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoc3RyaW5nKHNlbGY6Om5vZGUoKSkgPSBuYW1lc3BhY2UtdXJpKHBhcmVudDo6bm9kZSgpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgLz4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT4yam1qN2w1clN3MHlWYi92bFdBWWtLL1lCd2s9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+PCEtLSAxNyAtLT4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoc2VsZjo6dGV4dCgpICBvcgorICAgICAgICAgICAgICAgKG5hbWVzcGFjZS11cmkoKSAhPSAiIikgIG9yCisgICAgICAgICAgICAgICAoKG5hbWUoKSA9ICIiKSAgYW5kCisgICAgICAgICAgICAgICAgKChjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpIG1vZCAyKSA9IDEpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgLz4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT55Rmh5MVM5Q1M4ajJiUEFnTTQzS1pjU1g4VXM9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+PCEtLSAxOCAtLT4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+CisgICAgICAgICAgICA8SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSIjZGVmYXVsdCIgLz4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT5LNU9yVUxTa1Zqa3VRZDg1Z3hicmtjb3dnNjA9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+PCEtLSAxOSAtLT4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoKG5hbWUoKSAhPSAiYmFyIikgb3IgcGFyZW50OjpiYXI6U29tZXRoaW5nKSAgYW5kCisgICAgICAgICAgICAgICgobmFtZSgpICE9ICJmb28iKSBvciBwYXJlbnQ6OmZvbzpTb21ldGhpbmcpICBhbmQKKyAgICAgICAgICAgICAgKChuYW1lKCkgIT0gImJheiIpIG9yIHBhcmVudDo6YmF6OlNvbWV0aGluZykgIGFuZAorICAgICAgICAgICAgICAoKG5hbWUoKSAhPSAiIikgb3Igc2VsZjo6dGV4dCgpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj4KKyAgICAgICAgICAgIDxJbmNsdXNpdmVOYW1lc3BhY2VzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIFByZWZpeExpc3Q9IiNkZWZhdWx0IiAvPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPlBNeGU1VTZZenB5Ymo4Nk5YTGVYTkQ2Sjd6OD08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj48IS0tIDIwIC0tPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChzZWxmOjp0ZXh0KCkgIG9yCisgICAgICAgICAgICAgICAobmFtZXNwYWNlLXVyaSgpICE9ICIiKSAgb3IKKyAgICAgICAgICAgICAgIChzdHJpbmcoc2VsZjo6bm9kZSgpKSA9IG5hbWVzcGFjZS11cmkocGFyZW50Ojpub2RlKCkpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+CisgICAgICAgICAgICA8SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSIjZGVmYXVsdCIgLz4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT51S2dObkpaNE12cXBoaHBQam9yM2lDaEhzUVE9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+PCEtLSAyMSAtLT4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICBub3QgKHNlbGY6OmZvbzpTb21ldGhpbmcpICBhbmQKKyAgICAgICAgICAgICAgKHNlbGY6OnRleHQoKSAgb3IKKyAgICAgICAgICAgICAgIChuYW1lc3BhY2UtdXJpKCkgIT0gIiIpICBvcgorICAgICAgICAgICAgICAgKHN0cmluZyhzZWxmOjpub2RlKCkpID0gbmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpKQorICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj4KKyAgICAgICAgICAgIDxJbmNsdXNpdmVOYW1lc3BhY2VzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIFByZWZpeExpc3Q9IiNkZWZhdWx0IiAvPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgICAgPERpZ2VzdFZhbHVlPjh5bytUTUhvRHBydHczVjhIQnVhWDdJMmVZQT08L0RpZ2VzdFZhbHVlPgorICAgICAgPC9SZWZlcmVuY2U+CisgICAgICA8UmVmZXJlbmNlIFVSST0iIj48IS0tIDIyIC0tPgorICAgICAgICA8VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPgorICAgICAgICAgICAgPFhQYXRoPgorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6YmFyOlNvbWV0aGluZyAgYW5kCisgICAgICAgICAgICAgIChjb3VudChwYXJlbnQ6Om5vZGUoKS9uYW1lc3BhY2U6OiopICAhPQorICAgICAgICAgICAgICAgY291bnQocGFyZW50Ojpub2RlKCkvbmFtZXNwYWNlOjoqIHwgc2VsZjo6bm9kZSgpKSkKKyAgICAgICAgICAgIDwvWFBhdGg+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+CisgICAgICAgICAgICA8SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSIjZGVmYXVsdCIgLz4KKyAgICAgICAgICA8L1RyYW5zZm9ybT4KKyAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxEaWdlc3RWYWx1ZT55Rmh5MVM5Q1M4ajJiUEFnTTQzS1pjU1g4VXM9PC9EaWdlc3RWYWx1ZT4KKyAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+PCEtLSAyMyAtLT4KKyAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4KKyAgICAgICAgICAgIDxYUGF0aD4KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmJhcjpTb21ldGhpbmcgIGFuZAorICAgICAgICAgICAgICAoc2VsZjo6dGV4dCgpICBvcgorICAgICAgICAgICAgICAgKG5hbWVzcGFjZS11cmkoKSAhPSAiIikpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPgorICAgICAgICAgICAgPEluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0iI2RlZmF1bHQiIC8+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+eUZoeTFTOUNTOGoyYlBBZ000M0taY1NYOFVzPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPjwhLS0gMjQgLS0+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KikgID0KKyAgICAgICAgICAgICAgIGNvdW50KHBhcmVudDo6bm9kZSgpL25hbWVzcGFjZTo6KiB8IHNlbGY6Om5vZGUoKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPgorICAgICAgICAgICAgPEluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0iI2RlZmF1bHQiIC8+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+OW5LY0R3cGpOc0FNZ1ArZCtZWVNWaXg2REcwPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPjwhLS0gMjUgLS0+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKHN0cmluZyhzZWxmOjpub2RlKCkpID0gbmFtZXNwYWNlLXVyaShwYXJlbnQ6Om5vZGUoKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPgorICAgICAgICAgICAgPEluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0iI2RlZmF1bHQiIC8+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+MmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrPTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPjwhLS0gMjYgLS0+CisgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+CisgICAgICAgICAgICA8WFBhdGg+CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjpiYXI6U29tZXRoaW5nICBhbmQKKyAgICAgICAgICAgICAgKHNlbGY6OnRleHQoKSAgb3IKKyAgICAgICAgICAgICAgIChuYW1lc3BhY2UtdXJpKCkgIT0gIiIpICBvcgorICAgICAgICAgICAgICAgKChuYW1lKCkgPSAiIikgIGFuZAorICAgICAgICAgICAgICAgICgoY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSBtb2QgMikgPSAxKSkpCisgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPgorICAgICAgICAgICAgPEluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0iI2RlZmF1bHQiIC8+CisgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8RGlnZXN0VmFsdWU+Q3dsdEhPbUNmMHRGU3lycVJEWVFORlQ0ZW84PTwvRGlnZXN0VmFsdWU+CisgICAgICA8L1JlZmVyZW5jZT4KKyAgICA8L1NpZ25lZEluZm8+CisgICAgPFNpZ25hdHVyZVZhbHVlPgorICAgICAgTjZhcWc3OU9LTVF6a1U3dVRIUm1uNHJ5cGxoYVRoME9GbENScWEvclMrcFVCVjZNOG5UWDVBPT0KKyAgICA8L1NpZ25hdHVyZVZhbHVlPgorICAgIDxLZXlJbmZvPgorICAgICAgPEtleVZhbHVlPgorICAgICAgICA8RFNBS2V5VmFsdWU+CisgICAgICAgICAgPFA+CisgICAgICAgICAgICAzZU9lQXZxbkV5RnBXK3VUU2dyZGo3WUxqYVRrcHlIZWNLRklvTHU4UVpOa0dUUUkxY2lJVEJIMGxxZklrZENICisgICAgICAgICAgICBTaThmaVVDM0RUcTNKOUZzSmVmNFlWdERGN0pwVXZIVE9RcXRxN1pneDZLQzhXeGt6NnJRQ3hPcjdGMEFwT1lpCisgICAgICAgICAgICA4OXpMUm9lNE1rREdlNnV4MCtXdHlPVFFvVklHTlRERFVGWHJVUU5iTHJFPQorICAgICAgICAgIDwvUD4KKyAgICAgICAgICA8UT5oRExjRkswR08vSHoxYXJ4T092c2dNL1ZMeVU9PC9RPgorICAgICAgICAgIDxHPgorICAgICAgICAgICAgbm54N2hiZFdvekdidG5GZ25iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzegorICAgICAgICAgICAgS3Q3ZGxFYVFMN2I1K0pUWnQzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTQorICAgICAgICAgICAgOGQycmhkMlVpMHhIYmswRDQ1MW5oTHhWV3VsdmlPU1BoektLdlhyYnlTQT0KKyAgICAgICAgICA8L0c+CisgICAgICAgICAgPFk+CisgICAgICAgICAgICBjZllwaWhwQVFlZXBiTkZTNE1BYlFSaGRYcERpNXdMcnd4RTVoSXZvWXFvMUw4QlFWdThmWTFURkFQdG9hZTFpCisgICAgICAgICAgICBCZy9HSUp5UDNpTGZ5dUJKYUR2SkpMUDMwd0JIOWkvczVKMzY1NlBldnBPVmRUZmk3NzdGaTlHajZ5L2liMlZ2CisgICAgICAgICAgICArT1pmSmtrcDRMNTArcDVUVWhQbVFMSnRSRXNndGwrdG5JT3lKVCsrRzlVPQorICAgICAgICAgIDwvWT4KKyAgICAgICAgPC9EU0FLZXlWYWx1ZT4KKyAgICAgIDwvS2V5VmFsdWU+CisgICAgICA8WDUwOURhdGE+CisgICAgICAgIDxYNTA5U3ViamVjdE5hbWU+CisgICAgICAgICAgQ049TWVybGluIEh1Z2hlcyxPVT1YL1NlY3VyZSxPPUJhbHRpbW9yZSBUZWNobm9sb2dpZXMgTHRkLixTVD1EdWJsaW4sQz1JRQorICAgICAgICA8L1g1MDlTdWJqZWN0TmFtZT4KKyAgICAgICAgPFg1MDlJc3N1ZXJTZXJpYWw+CisgICAgICAgICAgPFg1MDlJc3N1ZXJOYW1lPgorICAgICAgICAgICAgQ049VHJhbnNpZW50IENBLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlIFRlY2hub2xvZ2llcyBMdGQuLFNUPUR1YmxpbixDPUlFCisgICAgICAgICAgPC9YNTA5SXNzdWVyTmFtZT4KKyAgICAgICAgICA8WDUwOVNlcmlhbE51bWJlcj4xMDE3Nzg4MzcwMzQ4PC9YNTA5U2VyaWFsTnVtYmVyPgorICAgICAgICA8L1g1MDlJc3N1ZXJTZXJpYWw+CisgICAgICAgIDxYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgTUlJRFVEQ0NBeENnQXdJQkFnSUdBT3o0Nmcyc01Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CCisgICAgICAgICAgTUI0WERUQXlNRFF3TWpJeU5Ua3pNRm9YRFRFeU1EUXdNakl4TlRreU5Wb3diekVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVdNQlFHQTFVRUF4TU5UV1Z5YkdsdUlFaDFaMmhsCisgICAgICAgICAgY3pDQ0FiY3dnZ0VzQmdjcWhrak9PQVFCTUlJQkh3S0JnUURkNDU0QytxY1RJV2xiNjVOS0N0MlB0Z3VOcE9TbgorICAgICAgICAgIElkNXdvVWlndTd4QmsyUVpOQWpWeUloTUVmU1dwOGlSMElkS0x4K0pRTGNOT3JjbjBXd2w1L2hoVzBNWHNtbFMKKyAgICAgICAgICA4ZE01Q3EycnRtREhvb0x4YkdUUHF0QUxFNnZzWFFDazVpTHozTXRHaDdneVFNWjdxN0hUNWEzSTVOQ2hVZ1kxCisgICAgICAgICAgTU1OUVZldFJBMXN1c1FJVkFJUXkzQlN0Qmp2eDg5V3E4VGpyN0lEUDFTOGxBb0dCQUo1OGU0VzNWcU14bTdaeAorICAgICAgICAgIFlKMnhaNktYMFplMTBXbktaRHlVUm4rVDlpRklGYktSRkVsS0Rlb3RYd3dYd1lPTjh5cmUzWlJHa0MrMitmaVUKKyAgICAgICAgICAyYmR6SVdUVDZMTWJJTVZiayswN1A0T1pPeEo2WFdMOUd1WWNPUWNOdlg0MnhoMzREUEhkcTRYZGxJdE1SMjVOCisgICAgICAgICAgQStPZFo0UzhWVnJwYjRqa2o0Y3lpcjE2MjhrZ0E0R0VBQUtCZ0hIMktZb2FRRUhucVd6UlV1REFHMEVZWFY2UQorICAgICAgICAgIDR1Y0M2OE1ST1lTTDZHS3FOUy9BVUZidkgyTlV4UUQ3YUdudFlnWVB4aUNjajk0aTM4cmdTV2c3eVNTejk5TUEKKyAgICAgICAgICBSL1l2N09TZCt1ZWozcjZUbFhVMzR1Kyt4WXZSbytzdjRtOWxiL2ptWHlaSktlQytkUHFlVTFJVDVrQ3liVVJMCisgICAgICAgICAgSUxaZnJaeURzaVUvdmh2Vm96b3dPREFPQmdOVkhROEJBZjhFQkFNQ0I0QXdFUVlEVlIwT0JBb0VDSWF0WTdTRQorICAgICAgICAgIGxYRU9NQk1HQTFVZEl3UU1NQXFBQ0lPR1BrQjJNdUtUTUFrR0J5cUdTTTQ0QkFNREx3QXdMQUlVU3ZUMDJpUWoKKyAgICAgICAgICBRNWRhNFdwZTBCdnM3R3VDY1ZzQ0ZDRWNRcGJqVWZueFhGWE5XaUZ5UTQ5WnJXcW4KKyAgICAgICAgPC9YNTA5Q2VydGlmaWNhdGU+CisgICAgICAgIDxYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgTUlJRFN6Q0NBd3VnQXdJQkFnSUdBT3o0NmZ3Sk1Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CCisgICAgICAgICAgTUI0WERUQXlNRFF3TWpJeU5Ua3lOVm9YRFRFeU1EUXdNakl4TlRreU5Wb3diakVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CCisgICAgICAgICAgTUlJQnR6Q0NBU3dHQnlxR1NNNDRCQUV3Z2dFZkFvR0JBTjNqbmdMNnB4TWhhVnZyazBvSzNZKzJDNDJrNUtjaAorICAgICAgICAgIDNuQ2hTS0M3dkVHVFpCazBDTlhJaUV3UjlKYW55SkhRaDBvdkg0bEF0dzA2dHlmUmJDWG4rR0ZiUXhleWFWTHgKKyAgICAgICAgICAwemtLcmF1MllNZWlndkZzWk0rcTBBc1RxK3hkQUtUbUl2UGN5MGFIdURKQXhudXJzZFBscmNqazBLRlNCalV3CisgICAgICAgICAgdzFCVjYxRURXeTZ4QWhVQWhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VUNnWUVBbm54N2hiZFdvekdidG5GZworICAgICAgICAgIG5iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzekt0N2RsRWFRTDdiNStKVFoKKyAgICAgICAgICB0M01oWk5Qb3N4c2d4VnVUN1RzL2c1azdFbnBkWXYwYTVodzVCdzI5ZmpiR0hmZ004ZDJyaGQyVWkweEhiazBECisgICAgICAgICAgNDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBRGdZUUFBb0dBZmFnK0hDQUJJSmFkREQ5QWFyaGdjMlFSM0xwNworICAgICAgICAgIFBwTU9oMGxBd0xpSXN2a080VWxiZU9TMElKQzhiY3FMak0xZlZ3NkZHU2F4bXErNHkxYWcybTlrNklkRTBRaDUKKyAgICAgICAgICBOeEIveEZrbWR3cVhGUklKVnA0NE9lVXlnQjQ3WUs3Nk5tVUlZRzNEZGZpUFBVM2Jxemp2dE90RVRpQ0h2bzI1CisgICAgICAgICAgNEQ2VWp3UHBZRXJYUlVhak5qQTBNQTRHQTFVZER3RUIvd1FFQXdJQ0JEQVBCZ05WSFJNRUNEQUdBUUgvQWdFQQorICAgICAgICAgIE1CRUdBMVVkRGdRS0JBaURoajVBZGpMaWt6QUpCZ2NxaGtqT09BUURBeThBTUN3Q0ZFTHUwbnV3ZXFXN1dmMHMKKyAgICAgICAgICBnay9DQUdHTDBCR0tBaFJOZGdRR3I1aXlaS29ING9xUG0wVko5VGpYTGc9PQorICAgICAgICA8L1g1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgIDwvWDUwOURhdGE+CisgICAgPC9LZXlJbmZvPgorICA8L1NpZ25hdHVyZT4KKzwvZm9vOlJvb3Q+CmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AveGZpbHRlcjIvbWVybGluLXhwYXRoLWZpbHRlcjItdGhyZWUudGFyLmd6IGIvZGF0YS9pbnRlcm9wL3hmaWx0ZXIyL21lcmxpbi14cGF0aC1maWx0ZXIyLXRocmVlLnRhci5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWJmMDRlCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL3hmaWx0ZXIyL21lcmxpbi14cGF0aC1maWx0ZXIyLXRocmVlLnRhci5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AveGZpbHRlcjIvbWVybGluLXhwYXRoLWZpbHRlcjItdGhyZWUvLmN2c2lnbm9yZSBiL2RhdGEvaW50ZXJvcC94ZmlsdGVyMi9tZXJsaW4teHBhdGgtZmlsdGVyMi10aHJlZS8uY3ZzaWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhMGM3ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AveGZpbHRlcjIvbWVybGluLXhwYXRoLWZpbHRlcjItdGhyZWUvLmN2c2lnbm9yZQpAQCAtMCwwICsxIEBACitjMTRuLSouYXBhY2hlLmh0bWwKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC94ZmlsdGVyMi9tZXJsaW4teHBhdGgtZmlsdGVyMi10aHJlZS9SZWFkbWUudHh0IGIvZGF0YS9pbnRlcm9wL3hmaWx0ZXIyL21lcmxpbi14cGF0aC1maWx0ZXIyLXRocmVlL1JlYWRtZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzI4YmUzMwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC94ZmlsdGVyMi9tZXJsaW4teHBhdGgtZmlsdGVyMi10aHJlZS9SZWFkbWUudHh0CkBAIC0wLDAgKzEsMjMgQEAKK1NhbXBsZSBYTUwgU2lnbmF0dXJlc1sxXSB1c2luZyB0aGUgcmV2aXNlZCBYUGF0aCBGaWx0ZXIgMi4wWzJdCisKK1sxXSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAyL1JFQy14bWxkc2lnLWNvcmUtMjAwMjAyMTIvCitbMl0gV2VyZSBpdCBjb25zaWRlcmVkLCB0aGUgVVJMIHdvdWxkIGJlIGh0dHA6Ly93d3cudzMub3JnL1RSL3htbGRzaWctZmlsdGVyMi8KKyAgICBidXQgaW4gdGhlIG1lYW50aW1lIGl0IGlzIGF0dGFjaGVkIHRvIHRoZSBhY2NvbXBhbnlpbmcgbWVzc2FnZQorCitGaXJzdCwgdGhlIGxhc3QgZXhhbXBsZSBmcm9tIHRoZSBzcGVjIGFsb25nIHdpdGggYW4gZXhhbXBsZSBvZgorYW4gZW1wdHkgaW5wdXQgbm9kZSBzZXQ6CisKKyAgc2lnbi1zcGVjLnRtcGwgLSBBIGJhc2ljIHNpZ25hdHVyZSB0ZW1wbGF0ZQorICBzaWduLXNwZWMueG1sIC0gVGhlIHNpZ25hdHVyZQorICBzaWduLXNwZWMtYzE0bi0qLnR4dCAtIEMxNG4gb3V0cHV0CisKK05leHQsIEpvaG4gQm95ZXIncyBleGFtcGxlIChmb3IgcGVyZm9ybWFuY2UgdGVzdGluZyk6CisKKyAgc2lnbi14ZmRsLnRtcGwgLSBUaGUgc2lnbmF0dXJlIHRlbXBsYXRlCisgIHNpZ24teGZkbC54bWwgLSBUaGUgc2lnbmF0dXJlCisgIHNpZ24teGZkbC1jMTRuLSoudHh0IC0gQzE0biBvdXRwdXQKKworTWVybGluIEh1Z2hlcyA8bWVybGluQGJhbHRpbW9yZS5pZT4KK0JhbHRpbW9yZSBUZWNobm9sb2dpZXMsIEx0ZC4KKworV2VkbmVzZGF5LCBKdW5lIDEwLCAyMDAyCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AveGZpbHRlcjIvbWVybGluLXhwYXRoLWZpbHRlcjItdGhyZWUvc2lnbi1zcGVjLWMxNG4tMC50eHQgYi9kYXRhL2ludGVyb3AveGZpbHRlcjIvbWVybGluLXhwYXRoLWZpbHRlcjItdGhyZWUvc2lnbi1zcGVjLWMxNG4tMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmI5MzU4ZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC94ZmlsdGVyMi9tZXJsaW4teHBhdGgtZmlsdGVyMi10aHJlZS9zaWduLXNwZWMtYzE0bi0wLnR4dApAQCAtMCwwICsxLDExIEBACis8VG9CZVNpZ25lZD4KKyAgICAKKyAgICA8RGF0YT48L0RhdGE+CisgICAgPFJlYWxseVRvQmVTaWduZWQ+CisgICAgICAgIAorICAgICAgICA8RGF0YT48L0RhdGE+CisgICAgICA8L1JlYWxseVRvQmVTaWduZWQ+CisgIDwvVG9CZVNpZ25lZD48VG9CZVNpZ25lZD4KKyAgICA8RGF0YT48L0RhdGE+CisgICAgCisgIDwvVG9CZVNpZ25lZD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AveGZpbHRlcjIvbWVybGluLXhwYXRoLWZpbHRlcjItdGhyZWUvc2lnbi1zcGVjLWMxNG4tMS50eHQgYi9kYXRhL2ludGVyb3AveGZpbHRlcjIvbWVybGluLXhwYXRoLWZpbHRlcjItdGhyZWUvc2lnbi1zcGVjLWMxNG4tMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC94ZmlsdGVyMi9tZXJsaW4teHBhdGgtZmlsdGVyMi10aHJlZS9zaWduLXNwZWMtYzE0bi0xLnR4dApkaWZmIC0tZ2l0IGEvZGF0YS9pbnRlcm9wL3hmaWx0ZXIyL21lcmxpbi14cGF0aC1maWx0ZXIyLXRocmVlL3NpZ24tc3BlYy1jMTRuLTIudHh0IGIvZGF0YS9pbnRlcm9wL3hmaWx0ZXIyL21lcmxpbi14cGF0aC1maWx0ZXIyLXRocmVlL3NpZ24tc3BlYy1jMTRuLTIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhNWQwNTMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AveGZpbHRlcjIvbWVybGluLXhwYXRoLWZpbHRlcjItdGhyZWUvc2lnbi1zcGVjLWMxNG4tMi50eHQKQEAgLTAsMCArMSwyNSBAQAorPGRzaWc6U2lnbmVkSW5mbyB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgIDxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI+PC9kc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2Q+CisgICAgICA8ZHNpZzpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiPjwvZHNpZzpTaWduYXR1cmVNZXRob2Q+CisgICAgICA8ZHNpZzpSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8ZHNpZzpUcmFuc2Zvcm1zPgorICAgICAgICAgIDxkc2lnOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDYveG1sZHNpZy1maWx0ZXIyIj4KKyAgICAgICAgICAgIDxYUGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNi94bWxkc2lnLWZpbHRlcjIiIEZpbHRlcj0iaW50ZXJzZWN0Ij4gLy9Ub0JlU2lnbmVkIDwvWFBhdGg+CisgICAgICAgICAgICA8WFBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDYveG1sZHNpZy1maWx0ZXIyIiBGaWx0ZXI9InN1YnRyYWN0Ij4gLy9Ob3RUb0JlU2lnbmVkIDwvWFBhdGg+CisgICAgICAgICAgICA8WFBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDYveG1sZHNpZy1maWx0ZXIyIiBGaWx0ZXI9InVuaW9uIj4gLy9SZWFsbHlUb0JlU2lnbmVkIDwvWFBhdGg+CisgICAgICAgICAgPC9kc2lnOlRyYW5zZm9ybT4KKyAgICAgICAgPC9kc2lnOlRyYW5zZm9ybXM+CisgICAgICAgIDxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L2RzaWc6RGlnZXN0TWV0aG9kPgorICAgICAgICA8ZHNpZzpEaWdlc3RWYWx1ZT5wNi9IYVlJZHhiRWRZWDgvOHpOZmpFRDRINVk9PC9kc2lnOkRpZ2VzdFZhbHVlPgorICAgICAgPC9kc2lnOlJlZmVyZW5jZT4KKyAgICAgIDxkc2lnOlJlZmVyZW5jZSBVUkk9IiNzaWduYXR1cmUtdmFsdWUiPgorICAgICAgICA8ZHNpZzpUcmFuc2Zvcm1zPgorICAgICAgICAgIDxkc2lnOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIj48L2RzaWc6VHJhbnNmb3JtPgorICAgICAgICAgIDxkc2lnOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDYveG1sZHNpZy1maWx0ZXIyIj4KKyAgICAgICAgICAgIDxYUGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNi94bWxkc2lnLWZpbHRlcjIiIEZpbHRlcj0idW5pb24iPiAvPC9YUGF0aD4KKyAgICAgICAgICA8L2RzaWc6VHJhbnNmb3JtPgorICAgICAgICA8L2RzaWc6VHJhbnNmb3Jtcz4KKyAgICAgICAgPGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvZHNpZzpEaWdlc3RNZXRob2Q+CisgICAgICAgIDxkc2lnOkRpZ2VzdFZhbHVlPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L2RzaWc6RGlnZXN0VmFsdWU+CisgICAgICA8L2RzaWc6UmVmZXJlbmNlPgorICAgIDwvZHNpZzpTaWduZWRJbmZvPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC94ZmlsdGVyMi9tZXJsaW4teHBhdGgtZmlsdGVyMi10aHJlZS9zaWduLXNwZWMudG1wbCBiL2RhdGEvaW50ZXJvcC94ZmlsdGVyMi9tZXJsaW4teHBhdGgtZmlsdGVyMi10aHJlZS9zaWduLXNwZWMudG1wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOThmMDFlCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9pbnRlcm9wL3hmaWx0ZXIyL21lcmxpbi14cGF0aC1maWx0ZXIyLXRocmVlL3NpZ24tc3BlYy50bXBsCkBAIC0wLDAgKzEsNDcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPERvY3VtZW50PgorICA8VG9CZVNpZ25lZD4KKyAgICA8IS0tIGNvbW1lbnQgLS0+CisgICAgPERhdGEgLz4KKyAgICA8Tm90VG9CZVNpZ25lZD4KKyAgICAgIDxSZWFsbHlUb0JlU2lnbmVkPgorICAgICAgICA8IS0tIGNvbW1lbnQgLS0+CisgICAgICAgIDxEYXRhIC8+CisgICAgICA8L1JlYWxseVRvQmVTaWduZWQ+CisgICAgPC9Ob3RUb0JlU2lnbmVkPgorICA8L1RvQmVTaWduZWQ+CisgIDxUb0JlU2lnbmVkPgorICAgIDxEYXRhIC8+CisgICAgPE5vdFRvQmVTaWduZWQ+CisgICAgICA8RGF0YSAvPgorICAgIDwvTm90VG9CZVNpZ25lZD4KKyAgPC9Ub0JlU2lnbmVkPgorICA8ZHNpZzpTaWduYXR1cmUgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6ZHNpZy14cGF0aD0iaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNi94bWxkc2lnLWZpbHRlcjIiPgorICAgIDxkc2lnOlNpZ25lZEluZm8+CisgICAgICA8ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iIiAvPgorICAgICAgPGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iIiAvPgorICAgICAgPGRzaWc6UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgPGRzaWc6VHJhbnNmb3Jtcz4KKyAgICAgICAgICA8ZHNpZzpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA2L3htbGRzaWctZmlsdGVyMiI+CisgICAgICAgICAgICA8ZHNpZy14cGF0aDpYUGF0aCBGaWx0ZXI9ImludGVyc2VjdCI+IC8vVG9CZVNpZ25lZCA8L2RzaWcteHBhdGg6WFBhdGg+CisgICAgICAgICAgICA8ZHNpZy14cGF0aDpYUGF0aCBGaWx0ZXI9InN1YnRyYWN0Ij4gLy9Ob3RUb0JlU2lnbmVkIDwvZHNpZy14cGF0aDpYUGF0aD4KKyAgICAgICAgICAgIDxkc2lnLXhwYXRoOlhQYXRoIEZpbHRlcj0idW5pb24iPiAvL1JlYWxseVRvQmVTaWduZWQgPC9kc2lnLXhwYXRoOlhQYXRoPgorICAgICAgICAgIDwvZHNpZzpUcmFuc2Zvcm0+CisgICAgICAgIDwvZHNpZzpUcmFuc2Zvcm1zPgorICAgICAgICA8ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSIiIC8+CisgICAgICAgIDxkc2lnOkRpZ2VzdFZhbHVlIC8+CisgICAgICA8L2RzaWc6UmVmZXJlbmNlPgorICAgICAgPGRzaWc6UmVmZXJlbmNlIFVSST0iI3NpZ25hdHVyZS12YWx1ZSI+CisgICAgICAgIDxkc2lnOlRyYW5zZm9ybXM+CisgICAgICAgICAgPGRzaWc6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiIC8+CisgICAgICAgICAgPGRzaWc6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNi94bWxkc2lnLWZpbHRlcjIiPgorICAgICAgICAgICAgPGRzaWcteHBhdGg6WFBhdGggRmlsdGVyPSJ1bmlvbiI+IC88L2RzaWcteHBhdGg6WFBhdGg+CisgICAgICAgICAgPC9kc2lnOlRyYW5zZm9ybT4KKyAgICAgICAgPC9kc2lnOlRyYW5zZm9ybXM+CisgICAgICAgIDxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09IiIgLz4KKyAgICAgICAgPGRzaWc6RGlnZXN0VmFsdWUgLz4KKyAgICAgIDwvZHNpZzpSZWZlcmVuY2U+CisgICAgPC9kc2lnOlNpZ25lZEluZm8+CisgICAgPGRzaWc6U2lnbmF0dXJlVmFsdWUgSWQ9InNpZ25hdHVyZS12YWx1ZSIgLz4KKyAgPC9kc2lnOlNpZ25hdHVyZT4KKzwvRG9jdW1lbnQ+CmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AveGZpbHRlcjIvbWVybGluLXhwYXRoLWZpbHRlcjItdGhyZWUvc2lnbi1zcGVjLnhtbCBiL2RhdGEvaW50ZXJvcC94ZmlsdGVyMi9tZXJsaW4teHBhdGgtZmlsdGVyMi10aHJlZS9zaWduLXNwZWMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkNWRmZDcKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2ludGVyb3AveGZpbHRlcjIvbWVybGluLXhwYXRoLWZpbHRlcjItdGhyZWUvc2lnbi1zcGVjLnhtbApAQCAtMCwwICsxLDEyMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxEb2N1bWVudD4KKyAgPFRvQmVTaWduZWQ+CisgICAgPCEtLSBjb21tZW50IC0tPgorICAgIDxEYXRhIC8+CisgICAgPE5vdFRvQmVTaWduZWQ+CisgICAgICA8UmVhbGx5VG9CZVNpZ25lZD4KKyAgICAgICAgPCEtLSBjb21tZW50IC0tPgorICAgICAgICA8RGF0YSAvPgorICAgICAgPC9SZWFsbHlUb0JlU2lnbmVkPgorICAgIDwvTm90VG9CZVNpZ25lZD4KKyAgPC9Ub0JlU2lnbmVkPgorICA8VG9CZVNpZ25lZD4KKyAgICA8RGF0YSAvPgorICAgIDxOb3RUb0JlU2lnbmVkPgorICAgICAgPERhdGEgLz4KKyAgICA8L05vdFRvQmVTaWduZWQ+CisgIDwvVG9CZVNpZ25lZD4KKyAgPGRzaWc6U2lnbmF0dXJlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgIDxkc2lnOlNpZ25lZEluZm8+CisgICAgICA8ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiIC8+CisgICAgICA8ZHNpZzpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiIC8+CisgICAgICA8ZHNpZzpSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICA8ZHNpZzpUcmFuc2Zvcm1zPgorICAgICAgICAgIDxkc2lnOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDYveG1sZHNpZy1maWx0ZXIyIj4KKyAgICAgICAgICAgIDxYUGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNi94bWxkc2lnLWZpbHRlcjIiIEZpbHRlcj0iaW50ZXJzZWN0Ij4gLy9Ub0JlU2lnbmVkIDwvWFBhdGg+CisgICAgICAgICAgICA8WFBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDYveG1sZHNpZy1maWx0ZXIyIiBGaWx0ZXI9InN1YnRyYWN0Ij4gLy9Ob3RUb0JlU2lnbmVkIDwvWFBhdGg+CisgICAgICAgICAgICA8WFBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDYveG1sZHNpZy1maWx0ZXIyIiBGaWx0ZXI9InVuaW9uIj4gLy9SZWFsbHlUb0JlU2lnbmVkIDwvWFBhdGg+CisgICAgICAgICAgPC9kc2lnOlRyYW5zZm9ybT4KKyAgICAgICAgPC9kc2lnOlRyYW5zZm9ybXM+CisgICAgICAgIDxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPgorICAgICAgICA8ZHNpZzpEaWdlc3RWYWx1ZT5wNi9IYVlJZHhiRWRZWDgvOHpOZmpFRDRINVk9PC9kc2lnOkRpZ2VzdFZhbHVlPgorICAgICAgPC9kc2lnOlJlZmVyZW5jZT4KKyAgICAgIDxkc2lnOlJlZmVyZW5jZSBVUkk9IiNzaWduYXR1cmUtdmFsdWUiPgorICAgICAgICA8ZHNpZzpUcmFuc2Zvcm1zPgorICAgICAgICAgIDxkc2lnOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIiAvPgorICAgICAgICAgIDxkc2lnOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDYveG1sZHNpZy1maWx0ZXIyIj4KKyAgICAgICAgICAgIDxYUGF0aCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNi94bWxkc2lnLWZpbHRlcjIiIEZpbHRlcj0idW5pb24iPiAvPC9YUGF0aD4KKyAgICAgICAgICA8L2RzaWc6VHJhbnNmb3JtPgorICAgICAgICA8L2RzaWc6VHJhbnNmb3Jtcz4KKyAgICAgICAgPGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgIDxkc2lnOkRpZ2VzdFZhbHVlPjJqbWo3bDVyU3cweVZiL3ZsV0FZa0svWUJ3az08L2RzaWc6RGlnZXN0VmFsdWU+CisgICAgICA8L2RzaWc6UmVmZXJlbmNlPgorICAgIDwvZHNpZzpTaWduZWRJbmZvPgorICAgIDxkc2lnOlNpZ25hdHVyZVZhbHVlIElkPSJzaWduYXR1cmUtdmFsdWUiPgorICAgICAgRnQ3UGRtRVlTQzhHd3hmZklhNHhpb2JyMWlFYVVmM0xHTmZQTGlRbkpCSkkvMUNwNVdpRWlRPT0KKyAgICA8L2RzaWc6U2lnbmF0dXJlVmFsdWU+CisgICAgPGRzaWc6S2V5SW5mbz4KKyAgICAgIDxkc2lnOktleVZhbHVlPgorICAgICAgICA8ZHNpZzpEU0FLZXlWYWx1ZT4KKyAgICAgICAgICA8ZHNpZzpQPgorICAgICAgICAgICAgM2VPZUF2cW5FeUZwVyt1VFNncmRqN1lMamFUa3B5SGVjS0ZJb0x1OFFaTmtHVFFJMWNpSVRCSDBscWZJa2RDSAorICAgICAgICAgICAgU2k4ZmlVQzNEVHEzSjlGc0plZjRZVnRERjdKcFV2SFRPUXF0cTdaZ3g2S0M4V3hrejZyUUN4T3I3RjBBcE9ZaQorICAgICAgICAgICAgODl6TFJvZTRNa0RHZTZ1eDArV3R5T1RRb1ZJR05URERVRlhyVVFOYkxyRT0KKyAgICAgICAgICA8L2RzaWc6UD4KKyAgICAgICAgICA8ZHNpZzpRPmhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VT08L2RzaWc6UT4KKyAgICAgICAgICA8ZHNpZzpHPgorICAgICAgICAgICAgbm54N2hiZFdvekdidG5GZ25iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzegorICAgICAgICAgICAgS3Q3ZGxFYVFMN2I1K0pUWnQzTWhaTlBvc3hzZ3hWdVQ3VHMvZzVrN0VucGRZdjBhNWh3NUJ3MjlmamJHSGZnTQorICAgICAgICAgICAgOGQycmhkMlVpMHhIYmswRDQ1MW5oTHhWV3VsdmlPU1BoektLdlhyYnlTQT0KKyAgICAgICAgICA8L2RzaWc6Rz4KKyAgICAgICAgICA8ZHNpZzpZPgorICAgICAgICAgICAgY2ZZcGlocEFRZWVwYk5GUzRNQWJRUmhkWHBEaTV3THJ3eEU1aEl2b1lxbzFMOEJRVnU4ZlkxVEZBUHRvYWUxaQorICAgICAgICAgICAgQmcvR0lKeVAzaUxmeXVCSmFEdkpKTFAzMHdCSDlpL3M1SjM2NTZQZXZwT1ZkVGZpNzc3Rmk5R2o2eS9pYjJWdgorICAgICAgICAgICAgK09aZkpra3A0TDUwK3A1VFVoUG1RTEp0UkVzZ3RsK3RuSU95SlQrK0c5VT0KKyAgICAgICAgICA8L2RzaWc6WT4KKyAgICAgICAgPC9kc2lnOkRTQUtleVZhbHVlPgorICAgICAgPC9kc2lnOktleVZhbHVlPgorICAgICAgPGRzaWc6WDUwOURhdGE+CisgICAgICAgIDxkc2lnOlg1MDlTdWJqZWN0TmFtZT4KKyAgICAgICAgICBDTj1NZXJsaW4gSHVnaGVzLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlIFRlY2hub2xvZ2llcyBMdGQuLFNUPUR1YmxpbixDPUlFCisgICAgICAgIDwvZHNpZzpYNTA5U3ViamVjdE5hbWU+CisgICAgICAgIDxkc2lnOlg1MDlJc3N1ZXJTZXJpYWw+CisgICAgICAgICAgPGRzaWc6WDUwOUlzc3Vlck5hbWU+CisgICAgICAgICAgICBDTj1UcmFuc2llbnQgQ0EsT1U9WC9TZWN1cmUsTz1CYWx0aW1vcmUgVGVjaG5vbG9naWVzIEx0ZC4sU1Q9RHVibGluLEM9SUUKKyAgICAgICAgICA8L2RzaWc6WDUwOUlzc3Vlck5hbWU+CisgICAgICAgICAgPGRzaWc6WDUwOVNlcmlhbE51bWJlcj4xMDE3Nzg4MzcwMzQ4PC9kc2lnOlg1MDlTZXJpYWxOdW1iZXI+CisgICAgICAgIDwvZHNpZzpYNTA5SXNzdWVyU2VyaWFsPgorICAgICAgICA8ZHNpZzpYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgTUlJRFVEQ0NBeENnQXdJQkFnSUdBT3o0Nmcyc01Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CCisgICAgICAgICAgTUI0WERUQXlNRFF3TWpJeU5Ua3pNRm9YRFRFeU1EUXdNakl4TlRreU5Wb3diekVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgIER6QU5CZ05WQkFnVEJrUjFZbXhwYmpFa01DSUdBMVVFQ2hNYlFtRnNkR2x0YjNKbElGUmxZMmh1YjJ4dloybGwKKyAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVdNQlFHQTFVRUF4TU5UV1Z5YkdsdUlFaDFaMmhsCisgICAgICAgICAgY3pDQ0FiY3dnZ0VzQmdjcWhrak9PQVFCTUlJQkh3S0JnUURkNDU0QytxY1RJV2xiNjVOS0N0MlB0Z3VOcE9TbgorICAgICAgICAgIElkNXdvVWlndTd4QmsyUVpOQWpWeUloTUVmU1dwOGlSMElkS0x4K0pRTGNOT3JjbjBXd2w1L2hoVzBNWHNtbFMKKyAgICAgICAgICA4ZE01Q3EycnRtREhvb0x4YkdUUHF0QUxFNnZzWFFDazVpTHozTXRHaDdneVFNWjdxN0hUNWEzSTVOQ2hVZ1kxCisgICAgICAgICAgTU1OUVZldFJBMXN1c1FJVkFJUXkzQlN0Qmp2eDg5V3E4VGpyN0lEUDFTOGxBb0dCQUo1OGU0VzNWcU14bTdaeAorICAgICAgICAgIFlKMnhaNktYMFplMTBXbktaRHlVUm4rVDlpRklGYktSRkVsS0Rlb3RYd3dYd1lPTjh5cmUzWlJHa0MrMitmaVUKKyAgICAgICAgICAyYmR6SVdUVDZMTWJJTVZiayswN1A0T1pPeEo2WFdMOUd1WWNPUWNOdlg0MnhoMzREUEhkcTRYZGxJdE1SMjVOCisgICAgICAgICAgQStPZFo0UzhWVnJwYjRqa2o0Y3lpcjE2MjhrZ0E0R0VBQUtCZ0hIMktZb2FRRUhucVd6UlV1REFHMEVZWFY2UQorICAgICAgICAgIDR1Y0M2OE1ST1lTTDZHS3FOUy9BVUZidkgyTlV4UUQ3YUdudFlnWVB4aUNjajk0aTM4cmdTV2c3eVNTejk5TUEKKyAgICAgICAgICBSL1l2N09TZCt1ZWozcjZUbFhVMzR1Kyt4WXZSbytzdjRtOWxiL2ptWHlaSktlQytkUHFlVTFJVDVrQ3liVVJMCisgICAgICAgICAgSUxaZnJaeURzaVUvdmh2Vm96b3dPREFPQmdOVkhROEJBZjhFQkFNQ0I0QXdFUVlEVlIwT0JBb0VDSWF0WTdTRQorICAgICAgICAgIGxYRU9NQk1HQTFVZEl3UU1NQXFBQ0lPR1BrQjJNdUtUTUFrR0J5cUdTTTQ0QkFNREx3QXdMQUlVU3ZUMDJpUWoKKyAgICAgICAgICBRNWRhNFdwZTBCdnM3R3VDY1ZzQ0ZDRWNRcGJqVWZueFhGWE5XaUZ5UTQ5WnJXcW4KKyAgICAgICAgPC9kc2lnOlg1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgPGRzaWc6WDUwOUNlcnRpZmljYXRlPgorICAgICAgICAgIE1JSURTekNDQXd1Z0F3SUJBZ0lHQU96NDZmd0pNQWtHQnlxR1NNNDRCQU13YmpFTE1Ba0dBMVVFQmhNQ1NVVXgKKyAgICAgICAgICBEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsCisgICAgICAgICAgY3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQgorICAgICAgICAgIE1CNFhEVEF5TURRd01qSXlOVGt5TlZvWERURXlNRFF3TWpJeE5Ua3lOVm93YmpFTE1Ba0dBMVVFQmhNQ1NVVXgKKyAgICAgICAgICBEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsCisgICAgICAgICAgY3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQgorICAgICAgICAgIE1JSUJ0ekNDQVN3R0J5cUdTTTQ0QkFFd2dnRWZBb0dCQU4zam5nTDZweE1oYVZ2cmswb0szWSsyQzQyazVLY2gKKyAgICAgICAgICAzbkNoU0tDN3ZFR1RaQmswQ05YSWlFd1I5SmFueUpIUWgwb3ZINGxBdHcwNnR5ZlJiQ1huK0dGYlF4ZXlhVkx4CisgICAgICAgICAgMHprS3JhdTJZTWVpZ3ZGc1pNK3EwQXNUcSt4ZEFLVG1JdlBjeTBhSHVESkF4bnVyc2RQbHJjamswS0ZTQmpVdworICAgICAgICAgIHcxQlY2MUVEV3k2eEFoVUFoRExjRkswR08vSHoxYXJ4T092c2dNL1ZMeVVDZ1lFQW5ueDdoYmRXb3pHYnRuRmcKKyAgICAgICAgICBuYkZub3BmUmw3WFJhY3BrUEpSR2Y1UDJJVWdWc3BFVVNVb042aTFmREJmQmc0M3pLdDdkbEVhUUw3YjUrSlRaCisgICAgICAgICAgdDNNaFpOUG9zeHNneFZ1VDdUcy9nNWs3RW5wZFl2MGE1aHc1QncyOWZqYkdIZmdNOGQycmhkMlVpMHhIYmswRAorICAgICAgICAgIDQ1MW5oTHhWV3VsdmlPU1BoektLdlhyYnlTQURnWVFBQW9HQWZhZytIQ0FCSUphZEREOUFhcmhnYzJRUjNMcDcKKyAgICAgICAgICBQcE1PaDBsQXdMaUlzdmtPNFVsYmVPUzBJSkM4YmNxTGpNMWZWdzZGR1NheG1xKzR5MWFnMm05azZJZEUwUWg1CisgICAgICAgICAgTnhCL3hGa21kd3FYRlJJSlZwNDRPZVV5Z0I0N1lLNzZObVVJWUczRGRmaVBQVTNicXpqdnRPdEVUaUNIdm8yNQorICAgICAgICAgIDRENlVqd1BwWUVyWFJVYWpOakEwTUE0R0ExVWREd0VCL3dRRUF3SUNCREFQQmdOVkhSTUVDREFHQVFIL0FnRUEKKyAgICAgICAgICBNQkVHQTFVZERnUUtCQWlEaGo1QWRqTGlrekFKQmdjcWhrak9PQVFEQXk4QU1Dd0NGRUx1MG51d2VxVzdXZjBzCisgICAgICAgICAgZ2svQ0FHR0wwQkdLQWhSTmRnUUdyNWl5WktvSDRvcVBtMFZKOVRqWExnPT0KKyAgICAgICAgPC9kc2lnOlg1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgIDwvZHNpZzpYNTA5RGF0YT4KKyAgICA8L2RzaWc6S2V5SW5mbz4KKyAgPC9kc2lnOlNpZ25hdHVyZT4KKzwvRG9jdW1lbnQ+CmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AveGZpbHRlcjIvbWVybGluLXhwYXRoLWZpbHRlcjItdGhyZWUvc2lnbi14ZmRsLWMxNG4tMC50eHQgYi9kYXRhL2ludGVyb3AveGZpbHRlcjIvbWVybGluLXhwYXRoLWZpbHRlcjItdGhyZWUvc2lnbi14ZmRsLWMxNG4tMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVhODlkYQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC94ZmlsdGVyMi9tZXJsaW4teHBhdGgtZmlsdGVyMi10aHJlZS9zaWduLXhmZGwtYzE0bi0wLnR4dApAQCAtMCwwICsxLDM5ODYgQEAKKzxYRkRMIHZlcnNpb249IjQuMC4xIj4KKwk8dmZkX3RpdGxlPlNGNzE8L3ZmZF90aXRsZT4KKwk8dmZkX2F1dGhvcj5UaG9tYXMgTW9ocjwvdmZkX2F1dGhvcj4KKwk8dmZkX3JldmlzaW9uPjQvNi85ODwvdmZkX3JldmlzaW9uPgorCTx2ZmRfZGF0ZT40LzYvOTg8L3ZmZF9kYXRlPgorCTxzYXZlZm9ybWF0PmFwcGxpY2F0aW9uL3gteGZkbDwvc2F2ZWZvcm1hdD4KKwk8dHJhbnNtaXRmb3JtYXQ+YXBwbGljYXRpb24veC14ZmRsPC90cmFuc21pdGZvcm1hdD4KKwk8Zm9ybWlkIGNvbnRlbnQ9ImFycmF5Ij4KKwkJPHZlcnNpb24+MS4wLjA8L3ZlcnNpb24+CisJPC9mb3JtaWQ+CisJPHBhZ2Ugc2lkPSJQQUdFMSI+CisJCTx2ZmRfcGFnZXNpemU+bGV0dGVyPC92ZmRfcGFnZXNpemU+CisJCTx2ZmRfcGFnZWRwaT4xMjA8L3ZmZF9wYWdlZHBpPgorCQk8dmZkX3ByaW50c2l6ZT44LjA7MTAuNTwvdmZkX3ByaW50c2l6ZT4KKwkJPGxhYmVsPlBBR0UxPC9sYWJlbD4KKwkJPGJnY29sb3IgY29udGVudD0iYXJyYXkiPgorCQkJPGFlPjIzNTwvYWU+CisJCQk8YWU+MjM1PC9hZT4KKwkJCTxhZT4yMzU8L2FlPgorCQk8L2JnY29sb3I+CisJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQk8YWU+Q291cmllcjwvYWU+CisJCQk8YWU+OTwvYWU+CisJCQk8YWU+cGxhaW48L2FlPgorCQk8L2ZvbnRpbmZvPgorCQk8bGFiZWwgc2lkPSJMQUJFTDEiPgorCQkJPHZhbHVlPlJFUVVFU1QgRk9SIExFQVZFIE9SIEFQUFJPVkVEIEFCU0VOQ0U8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTQ8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2l6ZSBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPjYxPC9hZT4KKwkJCQk8YWU+MTwvYWU+CisJCQk8L3NpemU+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTk8L2FlPgorCQkJCQk8YWU+MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NDwvYWU+CisJCQkJCTxhZT4zNDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjIwPC9hZT4KKwkJCQkJPGFlPjM1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+Nzk8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT4xLiAgTkFNRTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjEwMDwvYWU+CisJCQkJCTxhZT4zNTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIxODwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPihMYXN0LCBGaXJzdCwgTWlkZGxlIEluaXRpYWwpPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQkJPGFlPml0YWxpYzwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxMTwvYWU+CisJCQkJCTxhZT4zNTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjM4NTwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPjIuICBFTVBMT1lFRSBPUiBTT0NJQUwgU0VDVVJJVFkgTlVNQkVSPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjA8L2FlPgorCQkJCQk8YWU+ODU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNzA8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT4zLiAgT1JHQU5JWkFUSU9OPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjA8L2FlPgorCQkJCQk8YWU+MTM1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjQ4PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+NC4gIFRZUEUgT0YgTEVBVkUvQUJTRU5DRTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjMyPC9hZT4KKwkJCQkJPGFlPjE1NTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIzNjwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPihDaGVjayBhcHByb3ByaWF0ZSBib3goZXMpIGJlbG93Lik8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT45PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJCTxhZT5pdGFsaWM8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNzA8L2FlPgorCQkJCQk8YWU+MTU4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDg8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5Gcm9tOjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjk8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMOSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY4PC9hZT4KKwkJCQkJPGFlPjEzNTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE2MzwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkRhdGU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwxMCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzUyPC9hZT4KKwkJCQkJPGFlPjE1ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQ4PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+VG86PC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+OTwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwxMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMyPC9hZT4KKwkJCQkJPGFlPjE1ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQ4PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+RnJvbTo8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT45PC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDEyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MzA8L2FlPgorCQkJCQk8YWU+MTM1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTYzPC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+VGltZTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDEzIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTM8L2FlPgorCQkJCQk8YWU+MTU4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDg8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5Ubzo8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT45PC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDE0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41OTI8L2FlPgorCQkJCQk8YWU+MTM0PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+NDY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5Ub3RhbAorSG91cnM8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwxNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjQ8L2FlPgorCQkJCQk8YWU+MTg2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjA1PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+QWNjcnVlZCBBbm51YWwgTGVhdmU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwxNiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjQ8L2FlPgorCQkJCQk8YWU+MjMyPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjA1PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+UmVzdG9yZWQgQW5udWFsIExlYXZlPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMTciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY0PC9hZT4KKwkJCQkJPGFlPjI3ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIwNTwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkFkdmFuY2UgQW5udWFsIExlYXZlPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMTgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY0PC9hZT4KKwkJCQkJPGFlPjMyMzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIwNTwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkFjY3VyZWQgU2ljayBMZWF2ZTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDE5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NDwvYWU+CisJCQkJCTxhZT4zNjg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMDU8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5BZHZhbmNlIFNpY2sgTGVhdmU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwyMCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTk8L2FlPgorCQkJCQk8YWU+NDA5PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5QdXJwb3NlOjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDIxIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNDI8L2FlPgorCQkJCQk8YWU+NDEwPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+TWVkaWNhbC9kZW50YWwvb3B0aWNhbCBFeGFtaW5hdGlvbiBvZiByZXF1ZXN0aW5nIGVtcGxveWVlPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+OTwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8c2l6ZSBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPjQ1PC9hZT4KKwkJCQk8YWU+MTwvYWU+CisJCQk8L3NpemU+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMjIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUzNTwvYWU+CisJCQkJCTxhZT40MTA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40NjwvYWU+CisJCQkJCTxhZT4yNDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPk90aGVyPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+OTwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMjMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE0MjwvYWU+CisJCQkJCTxhZT40MzU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40Mzk8L2FlPgorCQkJCQk8YWU+NDI8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5DYXJlIG9mIGZhbWlseSBtZW1iZXIvYmVyZWF2ZW1lbnQsIGluY2x1ZGluZyBtZWRpY2FsL2RlbnRhbC9vcHRpY2FsIGV4YW1pbmF0aW9uIG9mIGZhbWlseSBtZW1iZXI8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT45PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwyNCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjQ8L2FlPgorCQkJCQk8YWU+NDk4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjA0PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+Q29tcGVuc2F0b3J5IFRpbWUgT2ZmPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMjUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY0PC9hZT4KKwkJCQkJPGFlPjUzNTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE4MDwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPk90aGVyIFBhaWQgQWJzZW5jZTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDI2Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NDwvYWU+CisJCQkJCTxhZT41NTY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNTg8L2FlPgorCQkJCQk8YWU+MjQ8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT4oU3BlY2lmeSBpbiBSZW1hcmtzKTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjk8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQkJPGFlPml0YWxpYzwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDI3Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NDwvYWU+CisJCQkJCTxhZT41OTM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xOTI8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5MZWF2ZSBXaXRob3V0IFBheTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDI4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NzY8L2FlPgorCQkJCQk8YWU+MTM1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjE1PC9hZT4KKwkJCQkJPGFlPjQ2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+NS4gRkFNSUxZIEFORAorCU1FRElDQUwgTEVBVkU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwyOSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Njc3PC9hZT4KKwkJCQkJPGFlPjE4MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIxNDwvYWU+CisJCQkJCTxhZT4xMjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5JZiBhbm51YWwgbGVhdmUsIHNpY2sgbGVhdmUsIG9yIGxlYXZlIHdpdGhvdXQgcGF5IHdpbGwgYmUgdXNlZCB1bmRlciB0aGUgRmFtaWx5IGFuZCBNZWRpY2FsIExlYXZlIEFjdCBvZiAxOTkzLCBwbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwzMCI+CisJCQk8dmFsdWU+SSBoZXJlYnkgaW52b2tlIG15PC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NzAwPC9hZT4KKwkJCQkJPGFlPjMyMjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE5MTwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDMxIj4KKwkJCTx2YWx1ZT5lbnRpdGxlbWVudCBGYW1pbHkgYW5kPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Njc1PC9hZT4KKwkJCQkJPGFlPjM0MjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIxNjwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDMyIj4KKwkJCTx2YWx1ZT5NZWRpY2FsIExlYXZlIGZvcjo8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NzU8L2FlPgorCQkJCQk8YWU+MzY0PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjE1PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMzMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjcwODwvYWU+CisJCQkJCTxhZT40MDM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xODE8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5CaXJ0aC9BZG9wdGlvbi9Gb3N0ZXIgQ2FyZTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDM0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT43MDg8L2FlPgorCQkJCQk8YWU+NDI2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTgyPC9hZT4KKwkJCQkJPGFlPjM4PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+U2VyaW91cyBIZWF0aCBDb25kaXRpb24gb2Ygc3BvdXNlLCBTb24sIERhdWdodGVyLCBvciBQYXJlbnQ8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwzNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NzA4PC9hZT4KKwkJCQkJPGFlPjQ4MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE4NDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPlNlcmlvdXMgSGVhbHRoIENvbmRpdGlvbiBvZiBTZWxmPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMzYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY3NTwvYWU+CisJCQkJCTxhZT41Mzc8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5Db250YWN0IHlvdXIgc3VwZXJ2aXNvciBhbmQvb3Igb3VyIHBlcnNvbm5lbCBvZmZpY2UgdG8gb2J0YWluIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgeW91ciBlbnRpdGxlbWVudHMgYW5kIHJlc3BvbnNpYmlsaXRpZXMgdW5kZXIgdGhlIEZhbWlseSBhbmQgTWVkaWNhbCBMZWF2ZSBBY3Qgb2YgMTk5My48L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxzaXplIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+MjY8L2FlPgorCQkJCTxhZT41PC9hZT4KKwkJCTwvc2l6ZT4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwzNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTk8L2FlPgorCQkJCQk8YWU+NjMwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTkyPC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+Ni4gIFJFTUFSS1M6PC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMzgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE5PC9hZT4KKwkJCQkJPGFlPjc0NzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE3MDwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPjcuICBDRVJUSUZJQ0FUSU9OOjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDM5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzg8L2FlPgorCQkJCQk8YWU+NzQ3PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NzE1PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+SSBoZXJlYnkgcmVxdWVzdCBsZWF2ZS9hcHByb3ZlZCBhYnNlbmNlIGZyb20gZHV0eSBhcyBpbmRpY2F0ZWQgYWJvdmUgYW5kIGNlcnRpZnkgdGhhdCBzdWNoIGxlYXZlL2Fic2VuY2U8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNDAiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE5PC9hZT4KKwkJCQkJPGFlPjc2NzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3MzwvYWU+CisJCQkJCTxhZT42NjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPmlzIHJldWVzdGVkIGZyb20gdGhlIHB1cnBvc2UocykgaW5kaWNhdGVkLiBJIHVuZGVyc3RhbmQgdGhhdCBJIG11c3QgY29tcGx5IHdpdGggbXkgZW1wbG95aW5nIGFnZW5jeSdzIHByb2NlZHVyZXMgZm9yIHJlcXVlc3RpbmcgbGVhdmUvYXBwcm92ZWQgYWJzZW5jZSAoYW5kIHByb3ZpZGUgYWRkaXRpb25hbCBkb2N1bWVudGlvbiwgaW5jbHVkaW5nIG1lZGljYWwgY2VydGlmaWNhdGlvbiwgaWYgcmVxdWlyZWQpIGFuZCB0aGF0IGZhbHNpZmljYXRpb24gb2YgaW5mb3JtYXRpb24gb24gdGhpcyBmb3JtIG1heSBiZSBncm91bmRzIGZvciBkaXNjaXBsaW5hcnkgYWN0aW9uLCBpbmNsdWRpbmcgcmVtb3ZhbC48L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNDEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE5PC9hZT4KKwkJCQkJPGFlPjg0MTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIzMDwvYWU+CisJCQkJCTxhZT4yNzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkVNUExPWUVFIFNJR05BVFVSRTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjExPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDQyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41OTc8L2FlPgorCQkJCQk8YWU+ODQxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NTg8L2FlPgorCQkJCQk8YWU+Mjc8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5EQVRFPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTE8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNDMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE5PC9hZT4KKwkJCQkJPGFlPjg3NzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjMzNTwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPjguICBPRkZJQ0FMIEFDVElPTiBPTiBSRVFVRVNUOjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDQ0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MTwvYWU+CisJCQkJCTxhZT44OTc8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT4oSWYgZGlzYXBwcm92ZWQsIGdpdmUgcmVhc29uLiBJZiBhbm51YWwgbGVhdmUsIGluaXRpYXRlIGFjdGlvbiB0byByZXNjaGVkdWxlLik8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8c2l6ZSBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPjUzPC9hZT4KKwkJCQk8YWU+MTwvYWU+CisJCQk8L3NpemU+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNDUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjM4ODwvYWU+CisJCQkJCTxhZT44NzU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xOTI8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5BUFBST1ZFRDwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDQ2Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42Mzg8L2FlPgorCQkJCQk8YWU+ODc1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTkyPC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+RElTQVBQUk9WRUQ8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw0NyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTk8L2FlPgorCQkJCQk8YWU+OTQxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTEyPC9hZT4KKwkJCQkJPGFlPjI3PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+U0lHTkFUVVJFPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTE8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNDgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjU5NzwvYWU+CisJCQkJCTxhZT45NDA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT41ODwvYWU+CisJCQkJCTxhZT4yNzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkRBVEU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMTwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw0OSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+OTcwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODc2PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+UFJJVkFDWSBBQ1QgU1RBVEVNRU5UPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNTAiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE5PC9hZT4KKwkJCQkJPGFlPjk5NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3MzwvYWU+CisJCQkJCTxhZT4xMzQ8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5TZWN0aW9uIDYzMTEgb2YgdGl0bGUgNSwgVW5pdGVkIFN0YXRlcyBDb2RlLCBhdXRob3JpemVzIGNvbGxlY3Rpb24gb2YgdGhpcyBpbmZvcm1hdGlvbi4gVGhlIHByaW1hcnkgdXNlIG9mIHRoaXMgaW5mb3JtYXRpb24gaXMgYnkgbWFuYWdlbWVudCBhbmQgeW91ciBwYXlyb2xsIG9mZmljZSB0byBhcHByb3ZlIGFuZCByZWNvcmQgeW91ciB1c2Ugb2YgbGVhdmUuIEFkZGl0aW9uYWwgZGlzY2xvc3VyZXMgb2YgdGhlIGluZm9ybWF0aW9uIG1hdCBiZTogVG8gdGhlIERlcGFydG1lbnQgb2YgbGFib3Igd2hlbiBwcm9jZXNzaW5nIGEgY2xhaW0gZm9yIGNvbXBlbnNhdGlvbiByZWdhcmRpbmcgYSBqb2IgY29ubmVjdGVkIGluanVyeSBvciBpbGxuZXNzOyB0byBhIFN0YXRlIHVuZW1wbG95bWVudCBjb21wZW5zYXRpb24gb2ZmaWNlIHJlZ2FyZGluZyBhIGNsYWltOyB0aGUgRmVkZXJhbCBMaWZlIEluc3VyYW5jZSBvciBIZWFsdGggQmVuZWZpdHMgY2FycmllcyByZWdhcmRpbmcgYSBjbGFpbTsgdG8gYSBGZWRlcmFsIFN0YXRlLCBvciBsb2NhbCBsYXcgZW5mb3JjZW1lbnQgYWdlbmN5IHdoZW4geW91ciBhZ2VuY3kgYmVjb21lcyBhd2FyZSBvZiBhIHZpb2xhdGlvbiBvciBwb3NzaWJsZSB2aW9sYXRpb24gb2YgY2l2aWwgb3IgY3JpbWluYWwgbGF3OyB0byBhIEZlZGVyYWwgYWdlbmN5IHdoZW4gY29uZHVjdGluZyBhbiBpbnZlc3RpZ2F0aW9uIGZvciBlbXBsb3ltZW50IG9yIFNlcnZpY2VzIEFkbWluaXN0cmF0aW9uIGluIGNvbm5lY3Rpb24gd2l0aCBpdHMgcmVzcG9uc2liaWxpdGllcyBmb3IgcmVjb3JkcyBtYW5hZ2VtZW50LgorCitXaGVyZSAgdGhlIEVtcGxveWVlIGlkZW50aWZpY2F0aW9uIG51bWJlciBpcyB5b3VyIFNvY2lhbCBTZWN1cml0eSBOdW1iZXIsIGNvbGxlY3Rpb24gb2YgdGhpcyBpbmZvcm1hdGlvbiBpcyBhdXRob3JpemVkIGJ5IEV4ZWN1dGl2ZSBPcmRlciA5Mzk3LiBGdXJuaXNoaW5nIHRoZSBpbmZvcm1hdGlvbiBvbiB0aGlzIGZvcm0sIGluY2x1ZGluZyB5b3VyIFNvY2lhbCBTZWN1cml0eSBOdW1iZXIsIGlzIHZvbHVudGFyeSwgYnV0IHRvIGRvIHNvIG1heSByZXN1bHQgaW4gZGlzYXBwcm92YWwgcmVxdWVzdC48L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw1MSI+CisJCQk8dmFsdWU+SWYgeW91ciBhZ2VuY3kgdXNlcyB0aGUgaW5mb3JtYXRpb24gZnVybmlzaGVkIG9uIHRoaXMgZm9ybSBmb3IgcHVycG9zZXMgb3RoZXIgdGhhbiB0aG9zZSBpbmRpY2F0ZWQgYWJvdmUsIGl0IG1heSBwcm92aWRlIHlvdSB3aXRoIGFuIGFkZGl0aW9uYWwgc3RhdGVtZW50IHJlZmxlY3RpbmcgdGhvc2UgcHVycG9zZXMuPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+NzwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTg8L2FlPgorCQkJCQk8YWU+MTE0MDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NTwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDUyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xODwvYWU+CisJCQkJCTxhZT4xMTY4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDIyPC9hZT4KKwkJCQkJPGFlPjM4PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+TlNOIDc1NDAtMDAwLTc1My01MDY3CitQUkVWSU9VUyBFRElUSU9OIE1BWSBCRSBVU0VEPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNTMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQzODwvYWU+CisJCQkJCTxhZT4xMTY4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDU0PC9hZT4KKwkJCQkJPGFlPjM4PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+U1RBTkRBUkQgRk9STSA3MSAoUmV2LiAxMi05NykKK1BSRVNDUklCRUQgQlkgT0ZGSUNFIE9GIFBFUlNPTk5FTCBNQU5BR0VNRU5ULCA1IENGUiBQQVJUIDYzMDwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPGp1c3RpZnk+cmlnaHQ8L2p1c3RpZnk+CisJCTwvbGFiZWw+CisJCTxsaW5lIHNpZD0iTElORTEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjMyPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODc2PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzwvYWU+CisJCQkJCTxhZT44MjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+MTMzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODc2PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkU0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzwvYWU+CisJCQkJCTxhZT4xNzk8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NzY8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2ODwvYWU+CisJCQkJCTxhZT4yMTg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40MDY8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2ODwvYWU+CisJCQkJCTxhZT4yNjM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40MDY8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjMxMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjY1NzwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FOCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY4PC9hZT4KKwkJCQkJPGFlPjM1NDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQwNjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FOSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY4PC9hZT4KKwkJCQkJPGFlPjM5ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQwNjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTAiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjQ4NDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjY1NzwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjUzMDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjY1NzwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjU3ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjY1NzwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjYyNjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjc0MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjg2NzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjk2NzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjExNjQ8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NzY8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTE4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzwvYWU+CisJCQkJCTxhZT4zMjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MTEzMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTE5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTA8L2FlPgorCQkJCQk8YWU+MzI8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjUxPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMjAiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjg5MjwvYWU+CisJCQkJCTxhZT4zMjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MTEzMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTIxIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjg8L2FlPgorCQkJCQk8YWU+MTMzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4yNjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUyMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzQ5PC9hZT4KKwkJCQkJPGFlPjE3OTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MjIwPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMjMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQzMDwvYWU+CisJCQkJCTxhZT4xMzM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjI2NjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTI0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTA8L2FlPgorCQkJCQk8YWU+MTc5PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4yMjA8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUyNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkyPC9hZT4KKwkJCQkJPGFlPjEzMzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MjY1PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMjYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY3MzwvYWU+CisJCQkJCTxhZT4xMzM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjQ5NDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTI3Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjg8L2FlPgorCQkJCQk8YWU+NDg0PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4xNDM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUyOCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzQ5PC9hZT4KKwkJCQkJPGFlPjQ4NDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MTQzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMjkiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQzMTwvYWU+CisJCQkJCTxhZT40ODQ8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjE0MzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTMwIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTA8L2FlPgorCQkJCQk8YWU+NDg0PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4xNDM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUzMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkxPC9hZT4KKwkJCQkJPGFlPjQ4NDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MTQzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGZpZWxkIHNpZD0iRklFTEQxIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yMDwvYWU+CisJCQkJCTxhZT41ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQ4OTwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnN0cmluZzwvYWU+CisJCQkJPGFlPm1hbmRhdG9yeTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT5Kb2huIFEuIFB1YmxpYzwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTM3PC9hZT4KKwkJCQkJPGFlPjU4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTIzPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+c3RyaW5nPC9hZT4KKwkJCQk8YWU+bWFuZGF0b3J5PC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjEyMzQ1Njc4OTwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTk8L2FlPgorCQkJCQk8YWU+MTA5PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODcyPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+c3RyaW5nPC9hZT4KKwkJCQk8YWU+bWFuZGF0b3J5PC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPlB1cmVFZGdlIFNvbHV0aW9ucyBJbmMuPC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yODwvYWU+CisJCQkJCTxhZT4xOTE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvY2hlY2s+CisJCTxmaWVsZCBzaWQ9IkZJRUxENCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY5PC9hZT4KKwkJCQkJPGFlPjE4ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQ1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNTA8L2FlPgorCQkJCQk8YWU+MTg4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQzMTwvYWU+CisJCQkJCTxhZT4xODg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQ3Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTE8L2FlPgorCQkJCQk8YWU+MTg4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODE8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnRpbWU8L2FlPgorCQkJCTxhZT5zaG9ydDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEOCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkzPC9hZT4KKwkJCQkJPGFlPjE4ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5mbG9hdDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8cmFuZ2UgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+MDwvYWU+CisJCQkJCTxhZT45OTk5Ljk5OTk8L2FlPgorCQkJCTwvcmFuZ2U+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8Y2hlY2sgc2lkPSJDSEVDSzIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI4PC9hZT4KKwkJCQkJPGFlPjIzMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9jaGVjaz4KKwkJPGZpZWxkIHNpZD0iRklFTEQ5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjk8L2FlPgorCQkJCQk8YWU+MjMxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDEwIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNTA8L2FlPgorCQkJCQk8YWU+MjMxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDExIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MzE8L2FlPgorCQkJCQk8YWU+MjMxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnRpbWU8L2FlPgorCQkJCTxhZT5zaG9ydDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMTIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxMTwvYWU+CisJCQkJCTxhZT4yMzE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MTwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQxMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkzPC9hZT4KKwkJCQkJPGFlPjIzMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5mbG9hdDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8cmFuZ2UgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+MDwvYWU+CisJCQkJCTxhZT45OTk5Ljk5OTk8L2FlPgorCQkJCTwvcmFuZ2U+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8Y2hlY2sgc2lkPSJDSEVDSzMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI4PC9hZT4KKwkJCQkJPGFlPjI3NzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9jaGVjaz4KKwkJPGZpZWxkIHNpZD0iRklFTEQxNCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY5PC9hZT4KKwkJCQkJPGFlPjI3NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQxNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzUwPC9hZT4KKwkJCQkJPGFlPjI3NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQxNiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMxPC9hZT4KKwkJCQkJPGFlPjI3NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT50aW1lPC9hZT4KKwkJCQk8YWU+c2hvcnQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDE3Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTE8L2FlPgorCQkJCQk8YWU+Mjc2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODE8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnRpbWU8L2FlPgorCQkJCTxhZT5zaG9ydDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMTgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjU5MzwvYWU+CisJCQkJCTxhZT4yNzY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZmxvYXQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPjA8L2FlPgorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4KKwkJCQk8L3JhbmdlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0s0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yODwvYWU+CisJCQkJCTxhZT4zMjI8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvY2hlY2s+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMTkiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2OTwvYWU+CisJCQkJCTxhZT4zMjE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMjAiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjM1MDwvYWU+CisJCQkJCTxhZT4zMjE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMjEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQzMTwvYWU+CisJCQkJCTxhZT4zMjE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT43OTwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQyMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTExPC9hZT4KKwkJCQkJPGFlPjMyMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT50aW1lPC9hZT4KKwkJCQk8YWU+c2hvcnQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDIzIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41OTM8L2FlPgorCQkJCQk8YWU+MzIxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmZsb2F0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxyYW5nZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4wPC9hZT4KKwkJCQkJPGFlPjk5OTkuOTk5OTwvYWU+CisJCQkJPC9yYW5nZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxjaGVjayBzaWQ9IkNIRUNLNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Mjg8L2FlPgorCQkJCQk8YWU+MzY3PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjE4PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2NoZWNrPgorCQk8ZmllbGQgc2lkPSJGSUVMRDI0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjk8L2FlPgorCQkJCQk8YWU+MzY2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDI1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNTA8L2FlPgorCQkJCQk8YWU+MzY2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDI2Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MzE8L2FlPgorCQkJCQk8YWU+MzY2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnRpbWU8L2FlPgorCQkJCTxhZT5zaG9ydDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMjciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxMTwvYWU+CisJCQkJCTxhZT4zNjY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MTwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQyOCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkzPC9hZT4KKwkJCQkJPGFlPjM2NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5mbG9hdDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8cmFuZ2UgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+MDwvYWU+CisJCQkJCTxhZT45OTk5Ljk5OTk8L2FlPgorCQkJCTwvcmFuZ2U+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8Y2hlY2sgc2lkPSJDSEVDSzYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjEyMTwvYWU+CisJCQkJCTxhZT40MTI8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNTwvYWU+CisJCQkJCTxhZT4xNDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPm9mZjwvdmFsdWU+CisJCQk8YWN0aXZlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPm9mZjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJvbiIgOiAib2ZmIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvYWN0aXZlPgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkd3JpdGU8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCSh2YWx1ZSA9PSAib24iKSA/ICJyZWFkb25seSIgOiAicmVhZHdyaXRlIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPHJhZGlvX2NoZWNrIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKChDSEVDSzgudmFsdWUgPT0gIm9uIikgfHwgKENIRUNLNy52YWx1ZSA9PSAib24iKSkgPyBzZXQoInZhbHVlIiwgIm9mZiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L3JhZGlvX2NoZWNrPgorCQk8L2NoZWNrPgorCQk8Y2hlY2sgc2lkPSJDSEVDSzciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjEyMTwvYWU+CisJCQkJCTxhZT40Mzg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNTwvYWU+CisJCQkJCTxhZT4xNDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPm9mZjwvdmFsdWU+CisJCQk8YWN0aXZlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPm9mZjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJvbiIgOiAib2ZmIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvYWN0aXZlPgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkd3JpdGU8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCSh2YWx1ZSA9PSAib24iKSA/ICJyZWFkb25seSIgOiAicmVhZHdyaXRlIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPHJhZGlvX2NoZWNrIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKChDSEVDSzgudmFsdWUgPT0gIm9uIikgfHwgKENIRUNLNi52YWx1ZSA9PSAib24iKSkgPyBzZXQoInZhbHVlIiwgIm9mZiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L3JhZGlvX2NoZWNrPgorCQk8L2NoZWNrPgorCQk8Y2hlY2sgc2lkPSJDSEVDSzgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxOTwvYWU+CisJCQkJCTxhZT40MTI8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNTwvYWU+CisJCQkJCTxhZT4xNDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPm9mZjwvdmFsdWU+CisJCQk8YWN0aXZlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPm9mZjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJvbiIgOiAib2ZmIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvYWN0aXZlPgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkd3JpdGU8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCSh2YWx1ZSA9PSAib24iKSA/ICJyZWFkb25seSIgOiAicmVhZHdyaXRlIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPHJhZGlvX2NoZWNrIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKChDSEVDSzYudmFsdWUgPT0gIm9uIikgfHwgKENIRUNLNy52YWx1ZSA9PSAib24iKSkgPyBzZXQoInZhbHVlIiwgIm9mZiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L3JhZGlvX2NoZWNrPgorCQk8L2NoZWNrPgorCQk8Y2hlY2sgc2lkPSJDSEVDSzkiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI4PC9hZT4KKwkJCQkJPGFlPjQ5NTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9jaGVjaz4KKwkJPGZpZWxkIHNpZD0iRklFTEQyOSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY5PC9hZT4KKwkJCQkJPGFlPjQ5ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQzMCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzUwPC9hZT4KKwkJCQkJPGFlPjQ5ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQzMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMyPC9hZT4KKwkJCQkJPGFlPjQ5ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjc4PC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT50aW1lPC9hZT4KKwkJCQk8YWU+c2hvcnQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDMyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTE8L2FlPgorCQkJCQk8YWU+NDk4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnRpbWU8L2FlPgorCQkJCTxhZT5zaG9ydDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMzMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjU5MjwvYWU+CisJCQkJCTxhZT40OTg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MTwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZmxvYXQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPjA8L2FlPgorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4KKwkJCQk8L3JhbmdlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxMCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Mjg8L2FlPgorCQkJCQk8YWU+NTQzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjE4PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2NoZWNrPgorCQk8ZmllbGQgc2lkPSJGSUVMRDM0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjk8L2FlPgorCQkJCQk8YWU+NTQzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDM1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNTA8L2FlPgorCQkJCQk8YWU+NTQzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODE8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDM2Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MzI8L2FlPgorCQkJCQk8YWU+NTQzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+Nzg8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMzciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxMTwvYWU+CisJCQkJCTxhZT41NDM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT50aW1lPC9hZT4KKwkJCQk8YWU+c2hvcnQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQzOCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkyPC9hZT4KKwkJCQkJPGFlPjU0MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmZsb2F0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxyYW5nZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4wPC9hZT4KKwkJCQkJPGFlPjk5OTkuOTk5OTwvYWU+CisJCQkJPC9yYW5nZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8Y2hlY2sgc2lkPSJDSEVDSzExIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yODwvYWU+CisJCQkJCTxhZT41OTE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvY2hlY2s+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMzkiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2OTwvYWU+CisJCQkJCTxhZT41OTA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzExLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxENDAiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjM1MDwvYWU+CisJCQkJCTxhZT41OTA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MTwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzExLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxENDEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQzMjwvYWU+CisJCQkJCTxhZT41OTA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT43ODwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT50aW1lPC9hZT4KKwkJCQk8YWU+c2hvcnQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQ0MiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTExPC9hZT4KKwkJCQkJPGFlPjU5MDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnRpbWU8L2FlPgorCQkJCTxhZT5zaG9ydDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDQzIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41OTI8L2FlPgorCQkJCQk8YWU+NTkwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODE8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZmxvYXQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPjA8L2FlPgorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4KKwkJCQk8L3JhbmdlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzExLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxjaGVjayBzaWQ9IkNIRUNLMTIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY4MDwvYWU+CisJCQkJCTxhZT4zMjY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNTwvYWU+CisJCQkJCTxhZT4xNDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvY2hlY2s+CisJCTxjaGVjayBzaWQ9IkNIRUNLMTMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY4OTwvYWU+CisJCQkJCTxhZT40MDQ8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNTwvYWU+CisJCQkJCTxhZT4xNDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPGFjdGl2ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5vZmY8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEyLnZhbHVlID09ICJvbiIpID8gIm9uIiA6ICJvZmYiCisJCQkJPC9jb21wdXRlPgorCQkJPC9hY3RpdmU+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWR3cml0ZTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKHZhbHVlID09ICJvbiIpID8gInJlYWRvbmx5IiA6ICJyZWFkd3JpdGUiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8cmFkaW9fY2hlY2sgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoKENIRUNLMTQudmFsdWUgPT0gIm9uIikgfHwgKENIRUNLMTUudmFsdWUgPT0gIm9uIikpID8gc2V0KCJ2YWx1ZSIsICJvZmYiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9yYWRpb19jaGVjaz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2NoZWNrPgorCQk8Y2hlY2sgc2lkPSJDSEVDSzE0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42ODk8L2FlPgorCQkJCQk8YWU+NDI4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTU8L2FlPgorCQkJCQk8YWU+MTQ8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxhY3RpdmUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+b2ZmPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMi52YWx1ZSA9PSAib24iKSA/ICJvbiIgOiAib2ZmIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvYWN0aXZlPgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkd3JpdGU8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCSh2YWx1ZSA9PSAib24iKSA/ICJyZWFkb25seSIgOiAicmVhZHdyaXRlIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPHJhZGlvX2NoZWNrIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKChDSEVDSzE1LnZhbHVlID09ICJvbiIpIHx8IChDSEVDSzEzLnZhbHVlID09ICJvbiIpKSA/IHNldCgidmFsdWUiLCAib2ZmIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvcmFkaW9fY2hlY2s+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9jaGVjaz4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Njg5PC9hZT4KKwkJCQkJPGFlPjQ4NTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE1PC9hZT4KKwkJCQkJPGFlPjE0PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8YWN0aXZlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPm9mZjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTIudmFsdWUgPT0gIm9uIikgPyAib24iIDogIm9mZiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2FjdGl2ZT4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZHdyaXRlPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkodmFsdWUgPT0gIm9uIikgPyAicmVhZG9ubHkiIDogInJlYWR3cml0ZSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxyYWRpb19jaGVjayBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCSgoQ0hFQ0sxNC52YWx1ZSA9PSAib24iKSB8fCAoQ0hFQ0sxMy52YWx1ZSA9PSAib24iKSkgPyBzZXQoInZhbHVlIiwgIm9mZiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L3JhZGlvX2NoZWNrPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvY2hlY2s+CisJCTxmaWVsZCBzaWQ9IkZJRUxENDQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQyPC9hZT4KKwkJCQkJPGFlPjY1NzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg0NjwvYWU+CisJCQkJCTxhZT41NzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnN0cmluZzwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIgorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxENDUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQyPC9hZT4KKwkJCQkJPGFlPjcxMjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg0NjwvYWU+CisJCQkJCTxhZT4zMTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnN0cmluZzwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoQ0hFQ0s4LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s4LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGJ1dHRvbiBzaWQ9IkJVVFRPTjEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI1MDwvYWU+CisJCQkJCTxhZT44Mzk8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4zNDY8L2FlPgorCQkJCQk8YWU+Mjc8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx0eXBlPnNpZ25hdHVyZTwvdHlwZT4KKwkJCTxzaWduYXR1cmU+U0lHTkFUVVJFMTwvc2lnbmF0dXJlPgorCQkJPHNpZ25lcj4oY3MpIEpvaG4gTS4gQm95ZXIsIGpib3llckBwdXJlZWRnZS5jb208L3NpZ25lcj4KKwkJCTxzaWdub3B0aW9ucyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPm9taXQ8L2FlPgorCQkJCTxhZT50cmlnZ2VyaXRlbTwvYWU+CisJCQk8L3NpZ25vcHRpb25zPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHNpZ25pdGVtcmVmcyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPm9taXQ8L2FlPgorCQkJCTxhZT5QQUdFMS5DSEVDSzE2PC9hZT4KKwkJCQk8YWU+UEFHRTEuQ0hFQ0sxNzwvYWU+CisJCQkJPGFlPlBBR0UxLkZJRUxENDc8L2FlPgorCQkJCTxhZT5QQUdFMS5CVVRUT04yPC9hZT4KKwkJCQk8YWU+U0lHTkFUVVJFMjwvYWU+CisJCQkJPGFlPlBBR0UxLkZJRUxENDg8L2FlPgorCQkJPC9zaWduaXRlbXJlZnM+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+c3RyaW5nPC9hZT4KKwkJCQk8YWU+bWFuZGF0b3J5PC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPHZhbHVlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPihjcykgSm9obiBNLiBCb3llciwgamJveWVyQHB1cmVlZGdlLmNvbTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJc2lnbmVyCisJCQkJPC9jb21wdXRlPgorCQkJPC92YWx1ZT4KKwkJPC9idXR0b24+CisgICAgICAgICAgICAgICAgCisJCTxmaWVsZCBzaWQ9IkZJRUxENDYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY1NTwvYWU+CisJCQkJCTxhZT44NDA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNTU8L2FlPgorCQkJCQk8YWU+Mjc8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxlZGl0c3RhdGU+cmVhZG9ubHk8L2VkaXRzdGF0ZT4KKwkJCTx2YWx1ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD4wNS0wOC0wMjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKEJVVFRPTjEudmFsdWUgIT0gIiIpID8gIioiIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L3ZhbHVlPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJPC9mb3JtYXQ+CisJCTwvZmllbGQ+CisJCQorCQkKKwkJCisJCQorCQkKKwkJPHNwYWNlciBzaWQ9InZmZF9zcGFjZXIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjk2MDwvYWU+CisJCQkJCTxhZT4xMjYwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvc3BhY2VyPgorCTwvcGFnZT4KKzwvWEZETD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2ludGVyb3AveGZpbHRlcjIvbWVybGluLXhwYXRoLWZpbHRlcjItdGhyZWUvc2lnbi14ZmRsLnRtcGwgYi9kYXRhL2ludGVyb3AveGZpbHRlcjIvbWVybGluLXhwYXRoLWZpbHRlcjItdGhyZWUvc2lnbi14ZmRsLnRtcGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDk3NzNlNgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC94ZmlsdGVyMi9tZXJsaW4teHBhdGgtZmlsdGVyMi10aHJlZS9zaWduLXhmZGwudG1wbApAQCAtMCwwICsxLDQxNTEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPFhGREwgdmVyc2lvbj0iNC4wLjEiPgorCTx2ZmRfdGl0bGU+U0Y3MTwvdmZkX3RpdGxlPgorCTx2ZmRfYXV0aG9yPlRob21hcyBNb2hyPC92ZmRfYXV0aG9yPgorCTx2ZmRfcmV2aXNpb24+NC82Lzk4PC92ZmRfcmV2aXNpb24+CisJPHZmZF9kYXRlPjQvNi85ODwvdmZkX2RhdGU+CisJPHNhdmVmb3JtYXQ+YXBwbGljYXRpb24veC14ZmRsPC9zYXZlZm9ybWF0PgorCTx0cmFuc21pdGZvcm1hdD5hcHBsaWNhdGlvbi94LXhmZGw8L3RyYW5zbWl0Zm9ybWF0PgorCTxmb3JtaWQgY29udGVudD0iYXJyYXkiPgorCQk8dmVyc2lvbj4xLjAuMDwvdmVyc2lvbj4KKwk8L2Zvcm1pZD4KKwk8cGFnZSBzaWQ9IlBBR0UxIj4KKwkJPHZmZF9wYWdlc2l6ZT5sZXR0ZXI8L3ZmZF9wYWdlc2l6ZT4KKwkJPHZmZF9wYWdlZHBpPjEyMDwvdmZkX3BhZ2VkcGk+CisJCTx2ZmRfcHJpbnRzaXplPjguMDsxMC41PC92ZmRfcHJpbnRzaXplPgorCQk8bGFiZWw+UEFHRTE8L2xhYmVsPgorCQk8Ymdjb2xvciBjb250ZW50PSJhcnJheSI+CisJCQk8YWU+MjM1PC9hZT4KKwkJCTxhZT4yMzU8L2FlPgorCQkJPGFlPjIzNTwvYWU+CisJCTwvYmdjb2xvcj4KKwkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCTxhZT45PC9hZT4KKwkJCTxhZT5wbGFpbjwvYWU+CisJCTwvZm9udGluZm8+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMSI+CisJCQk8dmFsdWU+UkVRVUVTVCBGT1IgTEVBVkUgT1IgQVBQUk9WRUQgQUJTRU5DRTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xNDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzaXplIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+NjE8L2FlPgorCQkJCTxhZT4xPC9hZT4KKwkJCTwvc2l6ZT4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xOTwvYWU+CisJCQkJCTxhZT4zPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODc0PC9hZT4KKwkJCQkJPGFlPjM0PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjA8L2FlPgorCQkJCQk8YWU+MzU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT43OTwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPjEuICBOQU1FPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTAwPC9hZT4KKwkJCQkJPGFlPjM1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjE4PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+KExhc3QsIEZpcnN0LCBNaWRkbGUgSW5pdGlhbCk8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCQk8YWU+aXRhbGljPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTExPC9hZT4KKwkJCQkJPGFlPjM1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+Mzg1PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+Mi4gIEVNUExPWUVFIE9SIFNPQ0lBTCBTRUNVUklUWSBOVU1CRVI8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yMDwvYWU+CisJCQkJCTxhZT44NTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE3MDwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPjMuICBPUkdBTklaQVRJT048L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw2Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yMDwvYWU+CisJCQkJCTxhZT4xMzU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yNDg8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT40LiAgVFlQRSBPRiBMRUFWRS9BQlNFTkNFPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzI8L2FlPgorCQkJCQk8YWU+MTU1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjM2PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+KENoZWNrIGFwcHJvcHJpYXRlIGJveChlcykgYmVsb3cuKTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjk8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQkJPGFlPml0YWxpYzwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI3MDwvYWU+CisJCQkJCTxhZT4xNTg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40ODwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkZyb206PC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+OTwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjg8L2FlPgorCQkJCQk8YWU+MTM1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTYzPC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+RGF0ZTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDEwIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNTI8L2FlPgorCQkJCQk8YWU+MTU4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDg8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5Ubzo8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT45PC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDExIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MzI8L2FlPgorCQkJCQk8YWU+MTU4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDg8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5Gcm9tOjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjk8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMTIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQzMDwvYWU+CisJCQkJCTxhZT4xMzU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNjM8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5UaW1lPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMTMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxMzwvYWU+CisJCQkJCTxhZT4xNTg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40ODwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPlRvOjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjk8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMTQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjU5MjwvYWU+CisJCQkJCTxhZT4xMzQ8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT40NjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPlRvdGFsCitIb3VyczwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDE1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NDwvYWU+CisJCQkJCTxhZT4xODY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMDU8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5BY2NydWVkIEFubnVhbCBMZWF2ZTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDE2Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NDwvYWU+CisJCQkJCTxhZT4yMzI8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMDU8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5SZXN0b3JlZCBBbm51YWwgTGVhdmU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwxNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjQ8L2FlPgorCQkJCQk8YWU+Mjc4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjA1PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+QWR2YW5jZSBBbm51YWwgTGVhdmU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwxOCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjQ8L2FlPgorCQkJCQk8YWU+MzIzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjA1PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+QWNjdXJlZCBTaWNrIExlYXZlPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMTkiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY0PC9hZT4KKwkJCQkJPGFlPjM2ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIwNTwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkFkdmFuY2UgU2ljayBMZWF2ZTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDIwIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xOTwvYWU+CisJCQkJCTxhZT40MDk8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPlB1cnBvc2U6PC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMjEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE0MjwvYWU+CisJCQkJCTxhZT40MTA8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5NZWRpY2FsL2RlbnRhbC9vcHRpY2FsIEV4YW1pbmF0aW9uIG9mIHJlcXVlc3RpbmcgZW1wbG95ZWU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT45PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxzaXplIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+NDU8L2FlPgorCQkJCTxhZT4xPC9hZT4KKwkJCTwvc2l6ZT4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwyMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTM1PC9hZT4KKwkJCQkJPGFlPjQxMDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQ2PC9hZT4KKwkJCQkJPGFlPjI0PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+T3RoZXI8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT45PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwyMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTQyPC9hZT4KKwkJCQkJPGFlPjQzNTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQzOTwvYWU+CisJCQkJCTxhZT40MjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkNhcmUgb2YgZmFtaWx5IG1lbWJlci9iZXJlYXZlbWVudCwgaW5jbHVkaW5nIG1lZGljYWwvZGVudGFsL29wdGljYWwgZXhhbWluYXRpb24gb2YgZmFtaWx5IG1lbWJlcjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjk8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDI0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NDwvYWU+CisJCQkJCTxhZT40OTg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMDQ8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5Db21wZW5zYXRvcnkgVGltZSBPZmY8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwyNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjQ8L2FlPgorCQkJCQk8YWU+NTM1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTgwPC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+T3RoZXIgUGFpZCBBYnNlbmNlPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMjYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY0PC9hZT4KKwkJCQkJPGFlPjU1NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE1ODwvYWU+CisJCQkJCTxhZT4yNDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPihTcGVjaWZ5IGluIFJlbWFya3MpPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+OTwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCQk8YWU+aXRhbGljPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMjciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY0PC9hZT4KKwkJCQkJPGFlPjU5MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE5MjwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkxlYXZlIFdpdGhvdXQgUGF5PC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMjgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY3NjwvYWU+CisJCQkJCTxhZT4xMzU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMTU8L2FlPgorCQkJCQk8YWU+NDY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT41LiBGQU1JTFkgQU5ECisJTUVESUNBTCBMRUFWRTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDI5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42Nzc8L2FlPgorCQkJCQk8YWU+MTgzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjE0PC9hZT4KKwkJCQkJPGFlPjEyNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPklmIGFubnVhbCBsZWF2ZSwgc2ljayBsZWF2ZSwgb3IgbGVhdmUgd2l0aG91dCBwYXkgd2lsbCBiZSB1c2VkIHVuZGVyIHRoZSBGYW1pbHkgYW5kIE1lZGljYWwgTGVhdmUgQWN0IG9mIDE5OTMsIHBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDMwIj4KKwkJCTx2YWx1ZT5JIGhlcmVieSBpbnZva2UgbXk8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT43MDA8L2FlPgorCQkJCQk8YWU+MzIyPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTkxPC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMzEiPgorCQkJPHZhbHVlPmVudGl0bGVtZW50IEZhbWlseSBhbmQ8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NzU8L2FlPgorCQkJCQk8YWU+MzQyPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjE2PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMzIiPgorCQkJPHZhbHVlPk1lZGljYWwgTGVhdmUgZm9yOjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY3NTwvYWU+CisJCQkJCTxhZT4zNjQ8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMTU8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwzMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NzA4PC9hZT4KKwkJCQkJPGFlPjQwMzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE4MTwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkJpcnRoL0Fkb3B0aW9uL0Zvc3RlciBDYXJlPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMzQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjcwODwvYWU+CisJCQkJCTxhZT40MjY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xODI8L2FlPgorCQkJCQk8YWU+Mzg8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5TZXJpb3VzIEhlYXRoIENvbmRpdGlvbiBvZiBzcG91c2UsIFNvbiwgRGF1Z2h0ZXIsIG9yIFBhcmVudDwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDM1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT43MDg8L2FlPgorCQkJCQk8YWU+NDgzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTg0PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+U2VyaW91cyBIZWFsdGggQ29uZGl0aW9uIG9mIFNlbGY8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwzNiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Njc1PC9hZT4KKwkJCQkJPGFlPjUzNzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkNvbnRhY3QgeW91ciBzdXBlcnZpc29yIGFuZC9vciBvdXIgcGVyc29ubmVsIG9mZmljZSB0byBvYnRhaW4gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIGVudGl0bGVtZW50cyBhbmQgcmVzcG9uc2liaWxpdGllcyB1bmRlciB0aGUgRmFtaWx5IGFuZCBNZWRpY2FsIExlYXZlIEFjdCBvZiAxOTkzLjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHNpemUgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT4yNjwvYWU+CisJCQkJPGFlPjU8L2FlPgorCQkJPC9zaXplPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDM3Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xOTwvYWU+CisJCQkJCTxhZT42MzA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xOTI8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT42LiAgUkVNQVJLUzo8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwzOCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTk8L2FlPgorCQkJCQk8YWU+NzQ3PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTcwPC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+Ny4gIENFUlRJRklDQVRJT046PC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMzkiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3ODwvYWU+CisJCQkJCTxhZT43NDc8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT43MTU8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5JIGhlcmVieSByZXF1ZXN0IGxlYXZlL2FwcHJvdmVkIGFic2VuY2UgZnJvbSBkdXR5IGFzIGluZGljYXRlZCBhYm92ZSBhbmQgY2VydGlmeSB0aGF0IHN1Y2ggbGVhdmUvYWJzZW5jZTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw0MCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTk8L2FlPgorCQkJCQk8YWU+NzY3PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODczPC9hZT4KKwkJCQkJPGFlPjY2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+aXMgcmV1ZXN0ZWQgZnJvbSB0aGUgcHVycG9zZShzKSBpbmRpY2F0ZWQuIEkgdW5kZXJzdGFuZCB0aGF0IEkgbXVzdCBjb21wbHkgd2l0aCBteSBlbXBsb3lpbmcgYWdlbmN5J3MgcHJvY2VkdXJlcyBmb3IgcmVxdWVzdGluZyBsZWF2ZS9hcHByb3ZlZCBhYnNlbmNlIChhbmQgcHJvdmlkZSBhZGRpdGlvbmFsIGRvY3VtZW50aW9uLCBpbmNsdWRpbmcgbWVkaWNhbCBjZXJ0aWZpY2F0aW9uLCBpZiByZXF1aXJlZCkgYW5kIHRoYXQgZmFsc2lmaWNhdGlvbiBvZiBpbmZvcm1hdGlvbiBvbiB0aGlzIGZvcm0gbWF5IGJlIGdyb3VuZHMgZm9yIGRpc2NpcGxpbmFyeSBhY3Rpb24sIGluY2x1ZGluZyByZW1vdmFsLjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw0MSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTk8L2FlPgorCQkJCQk8YWU+ODQxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjMwPC9hZT4KKwkJCQkJPGFlPjI3PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+RU1QTE9ZRUUgU0lHTkFUVVJFPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTE8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNDIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjU5NzwvYWU+CisJCQkJCTxhZT44NDE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT41ODwvYWU+CisJCQkJCTxhZT4yNzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkRBVEU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMTwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw0MyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTk8L2FlPgorCQkJCQk8YWU+ODc3PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MzM1PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+OC4gIE9GRklDQUwgQUNUSU9OIE9OIFJFUVVFU1Q6PC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNDQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQxPC9hZT4KKwkJCQkJPGFlPjg5NzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPihJZiBkaXNhcHByb3ZlZCwgZ2l2ZSByZWFzb24uIElmIGFubnVhbCBsZWF2ZSwgaW5pdGlhdGUgYWN0aW9uIHRvIHJlc2NoZWR1bGUuKTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxzaXplIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+NTM8L2FlPgorCQkJCTxhZT4xPC9hZT4KKwkJCTwvc2l6ZT4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw0NSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Mzg4PC9hZT4KKwkJCQkJPGFlPjg3NTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE5MjwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkFQUFJPVkVEPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNDYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjYzODwvYWU+CisJCQkJCTxhZT44NzU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xOTI8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5ESVNBUFBST1ZFRDwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDQ3Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xOTwvYWU+CisJCQkJCTxhZT45NDE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xMTI8L2FlPgorCQkJCQk8YWU+Mjc8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5TSUdOQVRVUkU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMTwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw0OCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTk3PC9hZT4KKwkJCQkJPGFlPjk0MDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjU4PC9hZT4KKwkJCQkJPGFlPjI3PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+REFURTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjExPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDQ5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzwvYWU+CisJCQkJCTxhZT45NzA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NzY8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5QUklWQUNZIEFDVCBTVEFURU1FTlQ8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw1MCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTk8L2FlPgorCQkJCQk8YWU+OTk2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODczPC9hZT4KKwkJCQkJPGFlPjEzNDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPlNlY3Rpb24gNjMxMSBvZiB0aXRsZSA1LCBVbml0ZWQgU3RhdGVzIENvZGUsIGF1dGhvcml6ZXMgY29sbGVjdGlvbiBvZiB0aGlzIGluZm9ybWF0aW9uLiBUaGUgcHJpbWFyeSB1c2Ugb2YgdGhpcyBpbmZvcm1hdGlvbiBpcyBieSBtYW5hZ2VtZW50IGFuZCB5b3VyIHBheXJvbGwgb2ZmaWNlIHRvIGFwcHJvdmUgYW5kIHJlY29yZCB5b3VyIHVzZSBvZiBsZWF2ZS4gQWRkaXRpb25hbCBkaXNjbG9zdXJlcyBvZiB0aGUgaW5mb3JtYXRpb24gbWF0IGJlOiBUbyB0aGUgRGVwYXJ0bWVudCBvZiBsYWJvciB3aGVuIHByb2Nlc3NpbmcgYSBjbGFpbSBmb3IgY29tcGVuc2F0aW9uIHJlZ2FyZGluZyBhIGpvYiBjb25uZWN0ZWQgaW5qdXJ5IG9yIGlsbG5lc3M7IHRvIGEgU3RhdGUgdW5lbXBsb3ltZW50IGNvbXBlbnNhdGlvbiBvZmZpY2UgcmVnYXJkaW5nIGEgY2xhaW07IHRoZSBGZWRlcmFsIExpZmUgSW5zdXJhbmNlIG9yIEhlYWx0aCBCZW5lZml0cyBjYXJyaWVzIHJlZ2FyZGluZyBhIGNsYWltOyB0byBhIEZlZGVyYWwgU3RhdGUsIG9yIGxvY2FsIGxhdyBlbmZvcmNlbWVudCBhZ2VuY3kgd2hlbiB5b3VyIGFnZW5jeSBiZWNvbWVzIGF3YXJlIG9mIGEgdmlvbGF0aW9uIG9yIHBvc3NpYmxlIHZpb2xhdGlvbiBvZiBjaXZpbCBvciBjcmltaW5hbCBsYXc7IHRvIGEgRmVkZXJhbCBhZ2VuY3kgd2hlbiBjb25kdWN0aW5nIGFuIGludmVzdGlnYXRpb24gZm9yIGVtcGxveW1lbnQgb3IgU2VydmljZXMgQWRtaW5pc3RyYXRpb24gaW4gY29ubmVjdGlvbiB3aXRoIGl0cyByZXNwb25zaWJpbGl0aWVzIGZvciByZWNvcmRzIG1hbmFnZW1lbnQuCisKK1doZXJlICB0aGUgRW1wbG95ZWUgaWRlbnRpZmljYXRpb24gbnVtYmVyIGlzIHlvdXIgU29jaWFsIFNlY3VyaXR5IE51bWJlciwgY29sbGVjdGlvbiBvZiB0aGlzIGluZm9ybWF0aW9uIGlzIGF1dGhvcml6ZWQgYnkgRXhlY3V0aXZlIE9yZGVyIDkzOTcuIEZ1cm5pc2hpbmcgdGhlIGluZm9ybWF0aW9uIG9uIHRoaXMgZm9ybSwgaW5jbHVkaW5nIHlvdXIgU29jaWFsIFNlY3VyaXR5IE51bWJlciwgaXMgdm9sdW50YXJ5LCBidXQgdG8gZG8gc28gbWF5IHJlc3VsdCBpbiBkaXNhcHByb3ZhbCByZXF1ZXN0LjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDUxIj4KKwkJCTx2YWx1ZT5JZiB5b3VyIGFnZW5jeSB1c2VzIHRoZSBpbmZvcm1hdGlvbiBmdXJuaXNoZWQgb24gdGhpcyBmb3JtIGZvciBwdXJwb3NlcyBvdGhlciB0aGFuIHRob3NlIGluZGljYXRlZCBhYm92ZSwgaXQgbWF5IHByb3ZpZGUgeW91IHdpdGggYW4gYWRkaXRpb25hbCBzdGF0ZW1lbnQgcmVmbGVjdGluZyB0aG9zZSBwdXJwb3Nlcy48L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT43PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xODwvYWU+CisJCQkJCTxhZT4xMTQwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODc1PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNTIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE4PC9hZT4KKwkJCQkJPGFlPjExNjg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40MjI8L2FlPgorCQkJCQk8YWU+Mzg8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5OU04gNzU0MC0wMDAtNzUzLTUwNjcKK1BSRVZJT1VTIEVESVRJT04gTUFZIEJFIFVTRUQ8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw1MyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDM4PC9hZT4KKwkJCQkJPGFlPjExNjg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40NTQ8L2FlPgorCQkJCQk8YWU+Mzg8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5TVEFOREFSRCBGT1JNIDcxIChSZXYuIDEyLTk3KQorUFJFU0NSSUJFRCBCWSBPRkZJQ0UgT0YgUEVSU09OTkVMIE1BTkFHRU1FTlQsIDUgQ0ZSIFBBUlQgNjMwPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8anVzdGlmeT5yaWdodDwvanVzdGlmeT4KKwkJPC9sYWJlbD4KKwkJPGxpbmUgc2lkPSJMSU5FMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+MzI8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NzY8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjgyPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODc2PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUzIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzwvYWU+CisJCQkJCTxhZT4xMzM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NzY8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjE3OTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY4PC9hZT4KKwkJCQkJPGFlPjIxODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQwNjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FNiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY4PC9hZT4KKwkJCQkJPGFlPjI2MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQwNjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+MzExPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NjU3PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkU4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjg8L2FlPgorCQkJCQk8YWU+MzU0PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDA2PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkU5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjg8L2FlPgorCQkJCQk8YWU+Mzk4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDA2PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUxMCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+NDg0PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NjU3PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUxMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+NTMwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NjU3PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUxMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+NTc4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NjU3PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUxMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+NjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODc2PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUxNCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+NzQzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODc2PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUxNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+ODY3PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODc2PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUxNiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+OTY3PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODc2PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUxNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+MTE2NDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjMyPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4xMTMzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTkiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxMDwvYWU+CisJCQkJCTxhZT4zMjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+NTE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUyMCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+ODkyPC9hZT4KKwkJCQkJPGFlPjMyPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4xMTMzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMjEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2ODwvYWU+CisJCQkJCTxhZT4xMzM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjI2NjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTIyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNDk8L2FlPgorCQkJCQk8YWU+MTc5PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4yMjA8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUyMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMwPC9hZT4KKwkJCQkJPGFlPjEzMzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MjY2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMjQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxMDwvYWU+CisJCQkJCTxhZT4xNzk8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjIyMDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTI1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41OTI8L2FlPgorCQkJCQk8YWU+MTMzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4yNjU8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUyNiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjczPC9hZT4KKwkJCQkJPGFlPjEzMzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+NDk0PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMjciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2ODwvYWU+CisJCQkJCTxhZT40ODQ8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjE0MzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTI4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNDk8L2FlPgorCQkJCQk8YWU+NDg0PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4xNDM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUyOSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMxPC9hZT4KKwkJCQkJPGFlPjQ4NDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MTQzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMzAiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxMDwvYWU+CisJCQkJCTxhZT40ODQ8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjE0MzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTMxIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41OTE8L2FlPgorCQkJCQk8YWU+NDg0PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4xNDM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8ZmllbGQgc2lkPSJGSUVMRDEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjIwPC9hZT4KKwkJCQkJPGFlPjU4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDg5PC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+c3RyaW5nPC9hZT4KKwkJCQk8YWU+bWFuZGF0b3J5PC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPkpvaG4gUS4gUHVibGljPC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41Mzc8L2FlPgorCQkJCQk8YWU+NTg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xMjM8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5zdHJpbmc8L2FlPgorCQkJCTxhZT5tYW5kYXRvcnk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+MTIzNDU2Nzg5PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQzIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xOTwvYWU+CisJCQkJCTxhZT4xMDk8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NzI8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5zdHJpbmc8L2FlPgorCQkJCTxhZT5tYW5kYXRvcnk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+UHVyZUVkZ2UgU29sdXRpb25zIEluYy48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8Y2hlY2sgc2lkPSJDSEVDSzEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI4PC9hZT4KKwkJCQkJPGFlPjE5MTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9jaGVjaz4KKwkJPGZpZWxkIHNpZD0iRklFTEQ0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjk8L2FlPgorCQkJCQk8YWU+MTg4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjM1MDwvYWU+CisJCQkJCTxhZT4xODg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxENiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMxPC9hZT4KKwkJCQkJPGFlPjE4ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT50aW1lPC9hZT4KKwkJCQk8YWU+c2hvcnQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxMTwvYWU+CisJCQkJCTxhZT4xODg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MTwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQ4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41OTM8L2FlPgorCQkJCQk8YWU+MTg4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmZsb2F0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxyYW5nZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4wPC9hZT4KKwkJCQkJPGFlPjk5OTkuOTk5OTwvYWU+CisJCQkJPC9yYW5nZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxjaGVjayBzaWQ9IkNIRUNLMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Mjg8L2FlPgorCQkJCQk8YWU+MjMxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjE4PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2NoZWNrPgorCQk8ZmllbGQgc2lkPSJGSUVMRDkiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2OTwvYWU+CisJCQkJCTxhZT4yMzE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMTAiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjM1MDwvYWU+CisJCQkJCTxhZT4yMzE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMTEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQzMTwvYWU+CisJCQkJCTxhZT4yMzE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQxMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTExPC9hZT4KKwkJCQkJPGFlPjIzMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT50aW1lPC9hZT4KKwkJCQk8YWU+c2hvcnQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDEzIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41OTM8L2FlPgorCQkJCQk8YWU+MjMxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmZsb2F0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxyYW5nZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4wPC9hZT4KKwkJCQkJPGFlPjk5OTkuOTk5OTwvYWU+CisJCQkJPC9yYW5nZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxjaGVjayBzaWQ9IkNIRUNLMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Mjg8L2FlPgorCQkJCQk8YWU+Mjc3PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjE4PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2NoZWNrPgorCQk8ZmllbGQgc2lkPSJGSUVMRDE0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjk8L2FlPgorCQkJCQk8YWU+Mjc2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDE1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNTA8L2FlPgorCQkJCQk8YWU+Mjc2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDE2Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MzE8L2FlPgorCQkJCQk8YWU+Mjc2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnRpbWU8L2FlPgorCQkJCTxhZT5zaG9ydDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMTciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxMTwvYWU+CisJCQkJCTxhZT4yNzY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MTwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQxOCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkzPC9hZT4KKwkJCQkJPGFlPjI3NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5mbG9hdDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8cmFuZ2UgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+MDwvYWU+CisJCQkJCTxhZT45OTk5Ljk5OTk8L2FlPgorCQkJCTwvcmFuZ2U+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8Y2hlY2sgc2lkPSJDSEVDSzQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI4PC9hZT4KKwkJCQkJPGFlPjMyMjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9jaGVjaz4KKwkJPGZpZWxkIHNpZD0iRklFTEQxOSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY5PC9hZT4KKwkJCQkJPGFlPjMyMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQyMCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzUwPC9hZT4KKwkJCQkJPGFlPjMyMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQyMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMxPC9hZT4KKwkJCQkJPGFlPjMyMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjc5PC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT50aW1lPC9hZT4KKwkJCQk8YWU+c2hvcnQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDIyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTE8L2FlPgorCQkJCQk8YWU+MzIxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODE8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnRpbWU8L2FlPgorCQkJCTxhZT5zaG9ydDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMjMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjU5MzwvYWU+CisJCQkJCTxhZT4zMjE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZmxvYXQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPjA8L2FlPgorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4KKwkJCQk8L3JhbmdlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0s1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yODwvYWU+CisJCQkJCTxhZT4zNjc8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvY2hlY2s+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMjQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2OTwvYWU+CisJCQkJCTxhZT4zNjY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMjUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjM1MDwvYWU+CisJCQkJCTxhZT4zNjY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMjYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQzMTwvYWU+CisJCQkJCTxhZT4zNjY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQyNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTExPC9hZT4KKwkJCQkJPGFlPjM2NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT50aW1lPC9hZT4KKwkJCQk8YWU+c2hvcnQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDI4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41OTM8L2FlPgorCQkJCQk8YWU+MzY2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmZsb2F0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxyYW5nZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4wPC9hZT4KKwkJCQkJPGFlPjk5OTkuOTk5OTwvYWU+CisJCQkJPC9yYW5nZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxjaGVjayBzaWQ9IkNIRUNLNiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTIxPC9hZT4KKwkJCQkJPGFlPjQxMjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE1PC9hZT4KKwkJCQkJPGFlPjE0PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+b2ZmPC92YWx1ZT4KKwkJCTxhY3RpdmUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+b2ZmPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm9uIiA6ICJvZmYiCisJCQkJPC9jb21wdXRlPgorCQkJPC9hY3RpdmU+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWR3cml0ZTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKHZhbHVlID09ICJvbiIpID8gInJlYWRvbmx5IiA6ICJyZWFkd3JpdGUiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8cmFkaW9fY2hlY2sgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoKENIRUNLOC52YWx1ZSA9PSAib24iKSB8fCAoQ0hFQ0s3LnZhbHVlID09ICJvbiIpKSA/IHNldCgidmFsdWUiLCAib2ZmIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvcmFkaW9fY2hlY2s+CisJCTwvY2hlY2s+CisJCTxjaGVjayBzaWQ9IkNIRUNLNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTIxPC9hZT4KKwkJCQkJPGFlPjQzODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE1PC9hZT4KKwkJCQkJPGFlPjE0PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+b2ZmPC92YWx1ZT4KKwkJCTxhY3RpdmUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+b2ZmPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm9uIiA6ICJvZmYiCisJCQkJPC9jb21wdXRlPgorCQkJPC9hY3RpdmU+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWR3cml0ZTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKHZhbHVlID09ICJvbiIpID8gInJlYWRvbmx5IiA6ICJyZWFkd3JpdGUiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8cmFkaW9fY2hlY2sgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoKENIRUNLOC52YWx1ZSA9PSAib24iKSB8fCAoQ0hFQ0s2LnZhbHVlID09ICJvbiIpKSA/IHNldCgidmFsdWUiLCAib2ZmIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvcmFkaW9fY2hlY2s+CisJCTwvY2hlY2s+CisJCTxjaGVjayBzaWQ9IkNIRUNLOCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTE5PC9hZT4KKwkJCQkJPGFlPjQxMjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE1PC9hZT4KKwkJCQkJPGFlPjE0PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+b2ZmPC92YWx1ZT4KKwkJCTxhY3RpdmUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+b2ZmPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm9uIiA6ICJvZmYiCisJCQkJPC9jb21wdXRlPgorCQkJPC9hY3RpdmU+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWR3cml0ZTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKHZhbHVlID09ICJvbiIpID8gInJlYWRvbmx5IiA6ICJyZWFkd3JpdGUiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8cmFkaW9fY2hlY2sgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoKENIRUNLNi52YWx1ZSA9PSAib24iKSB8fCAoQ0hFQ0s3LnZhbHVlID09ICJvbiIpKSA/IHNldCgidmFsdWUiLCAib2ZmIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvcmFkaW9fY2hlY2s+CisJCTwvY2hlY2s+CisJCTxjaGVjayBzaWQ9IkNIRUNLOSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Mjg8L2FlPgorCQkJCQk8YWU+NDk1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjE4PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2NoZWNrPgorCQk8ZmllbGQgc2lkPSJGSUVMRDI5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjk8L2FlPgorCQkJCQk8YWU+NDk4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDMwIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNTA8L2FlPgorCQkJCQk8YWU+NDk4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODE8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDMxIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MzI8L2FlPgorCQkJCQk8YWU+NDk4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+Nzg8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnRpbWU8L2FlPgorCQkJCTxhZT5zaG9ydDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMzIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxMTwvYWU+CisJCQkJCTxhZT40OTg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQzMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkyPC9hZT4KKwkJCQkJPGFlPjQ5ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5mbG9hdDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8cmFuZ2UgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+MDwvYWU+CisJCQkJCTxhZT45OTk5Ljk5OTk8L2FlPgorCQkJCTwvcmFuZ2U+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8Y2hlY2sgc2lkPSJDSEVDSzEwIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yODwvYWU+CisJCQkJCTxhZT41NDM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvY2hlY2s+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMzQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2OTwvYWU+CisJCQkJCTxhZT41NDM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMzUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjM1MDwvYWU+CisJCQkJCTxhZT41NDM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MTwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMzYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQzMjwvYWU+CisJCQkJCTxhZT41NDM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT43ODwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT50aW1lPC9hZT4KKwkJCQk8YWU+c2hvcnQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQzNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTExPC9hZT4KKwkJCQkJPGFlPjU0MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnRpbWU8L2FlPgorCQkJCTxhZT5zaG9ydDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDM4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41OTI8L2FlPgorCQkJCQk8YWU+NTQzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODE8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZmxvYXQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPjA8L2FlPgorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4KKwkJCQk8L3JhbmdlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxjaGVjayBzaWQ9IkNIRUNLMTEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI4PC9hZT4KKwkJCQkJPGFlPjU5MTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9jaGVjaz4KKwkJPGZpZWxkIHNpZD0iRklFTEQzOSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY5PC9hZT4KKwkJCQkJPGFlPjU5MDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQ0MCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzUwPC9hZT4KKwkJCQkJPGFlPjU5MDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQ0MSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMyPC9hZT4KKwkJCQkJPGFlPjU5MDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjc4PC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnRpbWU8L2FlPgorCQkJCTxhZT5zaG9ydDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDQyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTE8L2FlPgorCQkJCQk8YWU+NTkwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzExLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxENDMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjU5MjwvYWU+CisJCQkJCTxhZT41OTA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MTwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5mbG9hdDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8cmFuZ2UgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+MDwvYWU+CisJCQkJCTxhZT45OTk5Ljk5OTk8L2FlPgorCQkJCTwvcmFuZ2U+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjgwPC9hZT4KKwkJCQkJPGFlPjMyNjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE1PC9hZT4KKwkJCQkJPGFlPjE0PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9jaGVjaz4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Njg5PC9hZT4KKwkJCQkJPGFlPjQwNDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE1PC9hZT4KKwkJCQkJPGFlPjE0PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8YWN0aXZlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPm9mZjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTIudmFsdWUgPT0gIm9uIikgPyAib24iIDogIm9mZiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2FjdGl2ZT4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZHdyaXRlPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkodmFsdWUgPT0gIm9uIikgPyAicmVhZG9ubHkiIDogInJlYWR3cml0ZSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxyYWRpb19jaGVjayBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCSgoQ0hFQ0sxNC52YWx1ZSA9PSAib24iKSB8fCAoQ0hFQ0sxNS52YWx1ZSA9PSAib24iKSkgPyBzZXQoInZhbHVlIiwgIm9mZiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L3JhZGlvX2NoZWNrPgorCQkJPHZhbHVlPjwvdmFsdWU+CisJCTwvY2hlY2s+CisJCTxjaGVjayBzaWQ9IkNIRUNLMTQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY4OTwvYWU+CisJCQkJCTxhZT40Mjg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNTwvYWU+CisJCQkJCTxhZT4xNDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPGFjdGl2ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5vZmY8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEyLnZhbHVlID09ICJvbiIpID8gIm9uIiA6ICJvZmYiCisJCQkJPC9jb21wdXRlPgorCQkJPC9hY3RpdmU+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWR3cml0ZTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKHZhbHVlID09ICJvbiIpID8gInJlYWRvbmx5IiA6ICJyZWFkd3JpdGUiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8cmFkaW9fY2hlY2sgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoKENIRUNLMTUudmFsdWUgPT0gIm9uIikgfHwgKENIRUNLMTMudmFsdWUgPT0gIm9uIikpID8gc2V0KCJ2YWx1ZSIsICJvZmYiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9yYWRpb19jaGVjaz4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2NoZWNrPgorCQk8Y2hlY2sgc2lkPSJDSEVDSzE1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42ODk8L2FlPgorCQkJCQk8YWU+NDg1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTU8L2FlPgorCQkJCQk8YWU+MTQ8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxhY3RpdmUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+b2ZmPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMi52YWx1ZSA9PSAib24iKSA/ICJvbiIgOiAib2ZmIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvYWN0aXZlPgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkd3JpdGU8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCSh2YWx1ZSA9PSAib24iKSA/ICJyZWFkb25seSIgOiAicmVhZHdyaXRlIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPHJhZGlvX2NoZWNrIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKChDSEVDSzE0LnZhbHVlID09ICJvbiIpIHx8IChDSEVDSzEzLnZhbHVlID09ICJvbiIpKSA/IHNldCgidmFsdWUiLCAib2ZmIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvcmFkaW9fY2hlY2s+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9jaGVjaz4KKwkJPGZpZWxkIHNpZD0iRklFTEQ0NCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDI8L2FlPgorCQkJCQk8YWU+NjU3PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODQ2PC9hZT4KKwkJCQkJPGFlPjU3PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+c3RyaW5nPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQ0NSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDI8L2FlPgorCQkJCQk8YWU+NzEyPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODQ2PC9hZT4KKwkJCQkJPGFlPjMxPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+c3RyaW5nPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCShDSEVDSzgudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzgudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2ZpZWxkPgorCQk8YnV0dG9uIHNpZD0iQlVUVE9OMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjUwPC9hZT4KKwkJCQkJPGFlPjgzOTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjM0NjwvYWU+CisJCQkJCTxhZT4yNzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHR5cGU+c2lnbmF0dXJlPC90eXBlPgorCQkJPHNpZ25hdHVyZT5TSUdOQVRVUkUxPC9zaWduYXR1cmU+CisJCQk8c2lnbmVyPihjcykgSm9obiBNLiBCb3llciwgamJveWVyQHB1cmVlZGdlLmNvbTwvc2lnbmVyPgorCQkJPHNpZ25vcHRpb25zIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+b21pdDwvYWU+CisJCQkJPGFlPnRyaWdnZXJpdGVtPC9hZT4KKwkJCTwvc2lnbm9wdGlvbnM+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8c2lnbml0ZW1yZWZzIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+b21pdDwvYWU+CisJCQkJPGFlPlBBR0UxLkNIRUNLMTY8L2FlPgorCQkJCTxhZT5QQUdFMS5DSEVDSzE3PC9hZT4KKwkJCQk8YWU+UEFHRTEuRklFTEQ0NzwvYWU+CisJCQkJPGFlPlBBR0UxLkJVVFRPTjI8L2FlPgorCQkJCTxhZT5TSUdOQVRVUkUyPC9hZT4KKwkJCQk8YWU+UEFHRTEuRklFTEQ0ODwvYWU+CisJCQk8L3NpZ25pdGVtcmVmcz4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5zdHJpbmc8L2FlPgorCQkJCTxhZT5tYW5kYXRvcnk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8dmFsdWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+KGNzKSBKb2huIE0uIEJveWVyLCBqYm95ZXJAcHVyZWVkZ2UuY29tPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQlzaWduZXIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L3ZhbHVlPgorCQk8L2J1dHRvbj4KKyAgICAgICAgICAgICAgICA8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgICAgICAgICAgICAgICAgIDxTaWduZWRJbmZvPgorICAgICAgICAgICAgICAgICAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09IiIgLz4KKyAgICAgICAgICAgICAgICAgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09IiIgLz4KKyAgICAgICAgICAgICAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+CisgICAgICAgICAgICAgICAgICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgICAgICAgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiIC8+CisgICAgICAgICAgICAgICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNi94bWxkc2lnLWZpbHRlcjIiPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8WFBhdGggeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDYveG1sZHNpZy1maWx0ZXIyIiBGaWx0ZXI9InN1YnRyYWN0Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvWEZETC9wYWdlW0BzaWQ9IlBBR0UxIl0vKltAc2lkPSJDSEVDSzE2IiBvciBAc2lkPSJDSEVDSzE3IiBvciBAc2lkPSJGSUVMRDQ3IiBvciBAc2lkPSJCVVRUT04yIiBvciBAc2lkPSJGSUVMRDQ4Il0gfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9YRkRML3BhZ2UvdHJpZ2dlcml0ZW1bbm90KEBzaWQpXQorICAgICAgICAgICAgICAgICAgICAgICAgICA8L1hQYXRoPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9UcmFuc2Zvcm0+CisgICAgICAgICAgICAgICAgICAgICAgPC9UcmFuc2Zvcm1zPgorICAgICAgICAgICAgICAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSIiIC8+CisgICAgICAgICAgICAgICAgICAgICAgPERpZ2VzdFZhbHVlIC8+CisgICAgICAgICAgICAgICAgICAgIDwvUmVmZXJlbmNlPgorICAgICAgICAgICAgICAgICAgPC9TaWduZWRJbmZvPgorICAgICAgICAgICAgICAgICAgPFNpZ25hdHVyZVZhbHVlIC8+CisgICAgICAgICAgICAgICAgICA8IS0tIEtleUluZm8gLS0+CisgICAgICAgICAgICAgICAgPC9TaWduYXR1cmU+CisJCTxmaWVsZCBzaWQ9IkZJRUxENDYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY1NTwvYWU+CisJCQkJCTxhZT44NDA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNTU8L2FlPgorCQkJCQk8YWU+Mjc8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxlZGl0c3RhdGU+cmVhZG9ubHk8L2VkaXRzdGF0ZT4KKwkJCTx2YWx1ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD4wNS0wOC0wMjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKEJVVFRPTjEudmFsdWUgIT0gIiIpID8gIioiIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L3ZhbHVlPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJPC9mb3JtYXQ+CisJCTwvZmllbGQ+CisJCTxjaGVjayBzaWQ9IkNIRUNLMTYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjM2MjwvYWU+CisJCQkJCTxhZT44NzM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHJhZGlvX2JlaGF2aW91ciBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzE3LnZhbHVlID09ICJvbiIpID8gc2V0KCJ2YWx1ZSIsICJvZmYiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9yYWRpb19iZWhhdmlvdXI+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9jaGVjaz4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjA0PC9hZT4KKwkJCQkJPGFlPjg3MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8cmFkaW9fYmVoYXZpb3VyIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTYudmFsdWUgPT0gIm9uIikgPyBzZXQoInZhbHVlIiwgIm9mZiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L3JhZGlvX2JlaGF2aW91cj4KKwkJCTx2YWx1ZT48L3ZhbHVlPgorCQk8L2NoZWNrPgorCQk8ZmllbGQgc2lkPSJGSUVMRDQ3Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MTwvYWU+CisJCQkJCTxhZT45MTc8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT43NzA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxGb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5zdHJpbmc8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKENIRUNLMTcudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L0Zvcm1hdD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzE3LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8dmFsdWU+PC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGJ1dHRvbiBzaWQ9IkJVVFRPTjIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjEzMjwvYWU+CisJCQkJCTxhZT45Mzk8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40NjY8L2FlPgorCQkJCQk8YWU+Mjc8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx0eXBlPnNpZ25hdHVyZTwvdHlwZT4KKwkJCTxzaWduYXR1cmU+U0lHTkFUVVJFMjwvc2lnbmF0dXJlPgorCQkJPHNpZ25lcj48L3NpZ25lcj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5zdHJpbmc8L2FlPgorCQkJCTxhZT5tYW5kYXRvcnk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8c2lnbm9wdGlvbnMgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5vbWl0PC9hZT4KKwkJCQk8YWU+dHJpZ2dlcml0ZW08L2FlPgorCQkJPC9zaWdub3B0aW9ucz4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD48L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCXNpZ25lcgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvdmFsdWU+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCTwvYnV0dG9uPgorCQk8ZmllbGQgc2lkPSJGSUVMRDQ4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NTY8L2FlPgorCQkJCQk8YWU+OTQwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTU1PC9hZT4KKwkJCQkJPGFlPjI3PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8ZWRpdHN0YXRlPnJlYWRvbmx5PC9lZGl0c3RhdGU+CisJCQk8dmFsdWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQlVUVE9OMi52YWx1ZSAhPSAiIikgPyAiKiIgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvdmFsdWU+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQk8L2Zvcm1hdD4KKwkJPC9maWVsZD4KKwkJPHNwYWNlciBzaWQ9InZmZF9zcGFjZXIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjk2MDwvYWU+CisJCQkJCTxhZT4xMjYwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvc3BhY2VyPgorCTwvcGFnZT4KKzwvWEZETD4KZGlmZiAtLWdpdCBhL2RhdGEvaW50ZXJvcC94ZmlsdGVyMi9tZXJsaW4teHBhdGgtZmlsdGVyMi10aHJlZS9zaWduLXhmZGwueG1sIGIvZGF0YS9pbnRlcm9wL3hmaWx0ZXIyL21lcmxpbi14cGF0aC1maWx0ZXIyLXRocmVlL3NpZ24teGZkbC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk3NDYwYgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvaW50ZXJvcC94ZmlsdGVyMi9tZXJsaW4teHBhdGgtZmlsdGVyMi10aHJlZS9zaWduLXhmZGwueG1sCkBAIC0wLDAgKzEsNDIyNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxYRkRMIHZlcnNpb249IjQuMC4xIj4KKwk8dmZkX3RpdGxlPlNGNzE8L3ZmZF90aXRsZT4KKwk8dmZkX2F1dGhvcj5UaG9tYXMgTW9ocjwvdmZkX2F1dGhvcj4KKwk8dmZkX3JldmlzaW9uPjQvNi85ODwvdmZkX3JldmlzaW9uPgorCTx2ZmRfZGF0ZT40LzYvOTg8L3ZmZF9kYXRlPgorCTxzYXZlZm9ybWF0PmFwcGxpY2F0aW9uL3gteGZkbDwvc2F2ZWZvcm1hdD4KKwk8dHJhbnNtaXRmb3JtYXQ+YXBwbGljYXRpb24veC14ZmRsPC90cmFuc21pdGZvcm1hdD4KKwk8Zm9ybWlkIGNvbnRlbnQ9ImFycmF5Ij4KKwkJPHZlcnNpb24+MS4wLjA8L3ZlcnNpb24+CisJPC9mb3JtaWQ+CisJPHBhZ2Ugc2lkPSJQQUdFMSI+CisJCTx2ZmRfcGFnZXNpemU+bGV0dGVyPC92ZmRfcGFnZXNpemU+CisJCTx2ZmRfcGFnZWRwaT4xMjA8L3ZmZF9wYWdlZHBpPgorCQk8dmZkX3ByaW50c2l6ZT44LjA7MTAuNTwvdmZkX3ByaW50c2l6ZT4KKwkJPGxhYmVsPlBBR0UxPC9sYWJlbD4KKwkJPGJnY29sb3IgY29udGVudD0iYXJyYXkiPgorCQkJPGFlPjIzNTwvYWU+CisJCQk8YWU+MjM1PC9hZT4KKwkJCTxhZT4yMzU8L2FlPgorCQk8L2JnY29sb3I+CisJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQk8YWU+Q291cmllcjwvYWU+CisJCQk8YWU+OTwvYWU+CisJCQk8YWU+cGxhaW48L2FlPgorCQk8L2ZvbnRpbmZvPgorCQk8bGFiZWwgc2lkPSJMQUJFTDEiPgorCQkJPHZhbHVlPlJFUVVFU1QgRk9SIExFQVZFIE9SIEFQUFJPVkVEIEFCU0VOQ0U8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTQ8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2l6ZSBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPjYxPC9hZT4KKwkJCQk8YWU+MTwvYWU+CisJCQk8L3NpemU+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTk8L2FlPgorCQkJCQk8YWU+MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NDwvYWU+CisJCQkJCTxhZT4zNDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjIwPC9hZT4KKwkJCQkJPGFlPjM1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+Nzk8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT4xLiAgTkFNRTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjEwMDwvYWU+CisJCQkJCTxhZT4zNTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIxODwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPihMYXN0LCBGaXJzdCwgTWlkZGxlIEluaXRpYWwpPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQkJPGFlPml0YWxpYzwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxMTwvYWU+CisJCQkJCTxhZT4zNTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjM4NTwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPjIuICBFTVBMT1lFRSBPUiBTT0NJQUwgU0VDVVJJVFkgTlVNQkVSPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjA8L2FlPgorCQkJCQk8YWU+ODU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNzA8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT4zLiAgT1JHQU5JWkFUSU9OPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjA8L2FlPgorCQkJCQk8YWU+MTM1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjQ4PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+NC4gIFRZUEUgT0YgTEVBVkUvQUJTRU5DRTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjMyPC9hZT4KKwkJCQkJPGFlPjE1NTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIzNjwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPihDaGVjayBhcHByb3ByaWF0ZSBib3goZXMpIGJlbG93Lik8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT45PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJCTxhZT5pdGFsaWM8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNzA8L2FlPgorCQkJCQk8YWU+MTU4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDg8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5Gcm9tOjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjk8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMOSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY4PC9hZT4KKwkJCQkJPGFlPjEzNTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE2MzwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkRhdGU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwxMCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzUyPC9hZT4KKwkJCQkJPGFlPjE1ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQ4PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+VG86PC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+OTwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwxMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMyPC9hZT4KKwkJCQkJPGFlPjE1ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQ4PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+RnJvbTo8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT45PC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDEyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MzA8L2FlPgorCQkJCQk8YWU+MTM1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTYzPC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+VGltZTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDEzIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTM8L2FlPgorCQkJCQk8YWU+MTU4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDg8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5Ubzo8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT45PC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDE0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41OTI8L2FlPgorCQkJCQk8YWU+MTM0PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+NDY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5Ub3RhbAorSG91cnM8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwxNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjQ8L2FlPgorCQkJCQk8YWU+MTg2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjA1PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+QWNjcnVlZCBBbm51YWwgTGVhdmU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwxNiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjQ8L2FlPgorCQkJCQk8YWU+MjMyPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjA1PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+UmVzdG9yZWQgQW5udWFsIExlYXZlPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMTciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY0PC9hZT4KKwkJCQkJPGFlPjI3ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIwNTwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkFkdmFuY2UgQW5udWFsIExlYXZlPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMTgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY0PC9hZT4KKwkJCQkJPGFlPjMyMzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIwNTwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkFjY3VyZWQgU2ljayBMZWF2ZTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDE5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NDwvYWU+CisJCQkJCTxhZT4zNjg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMDU8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5BZHZhbmNlIFNpY2sgTGVhdmU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwyMCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTk8L2FlPgorCQkJCQk8YWU+NDA5PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5QdXJwb3NlOjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDIxIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNDI8L2FlPgorCQkJCQk8YWU+NDEwPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+TWVkaWNhbC9kZW50YWwvb3B0aWNhbCBFeGFtaW5hdGlvbiBvZiByZXF1ZXN0aW5nIGVtcGxveWVlPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+OTwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8c2l6ZSBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPjQ1PC9hZT4KKwkJCQk8YWU+MTwvYWU+CisJCQk8L3NpemU+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMjIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUzNTwvYWU+CisJCQkJCTxhZT40MTA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40NjwvYWU+CisJCQkJCTxhZT4yNDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPk90aGVyPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+OTwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMjMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE0MjwvYWU+CisJCQkJCTxhZT40MzU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40Mzk8L2FlPgorCQkJCQk8YWU+NDI8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5DYXJlIG9mIGZhbWlseSBtZW1iZXIvYmVyZWF2ZW1lbnQsIGluY2x1ZGluZyBtZWRpY2FsL2RlbnRhbC9vcHRpY2FsIGV4YW1pbmF0aW9uIG9mIGZhbWlseSBtZW1iZXI8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT45PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwyNCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjQ8L2FlPgorCQkJCQk8YWU+NDk4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjA0PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+Q29tcGVuc2F0b3J5IFRpbWUgT2ZmPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMjUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY0PC9hZT4KKwkJCQkJPGFlPjUzNTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE4MDwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPk90aGVyIFBhaWQgQWJzZW5jZTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDI2Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NDwvYWU+CisJCQkJCTxhZT41NTY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNTg8L2FlPgorCQkJCQk8YWU+MjQ8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT4oU3BlY2lmeSBpbiBSZW1hcmtzKTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjk8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQkJPGFlPml0YWxpYzwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDI3Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NDwvYWU+CisJCQkJCTxhZT41OTM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xOTI8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5MZWF2ZSBXaXRob3V0IFBheTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDI4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NzY8L2FlPgorCQkJCQk8YWU+MTM1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjE1PC9hZT4KKwkJCQkJPGFlPjQ2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+NS4gRkFNSUxZIEFORAorCU1FRElDQUwgTEVBVkU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwyOSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Njc3PC9hZT4KKwkJCQkJPGFlPjE4MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIxNDwvYWU+CisJCQkJCTxhZT4xMjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5JZiBhbm51YWwgbGVhdmUsIHNpY2sgbGVhdmUsIG9yIGxlYXZlIHdpdGhvdXQgcGF5IHdpbGwgYmUgdXNlZCB1bmRlciB0aGUgRmFtaWx5IGFuZCBNZWRpY2FsIExlYXZlIEFjdCBvZiAxOTkzLCBwbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwzMCI+CisJCQk8dmFsdWU+SSBoZXJlYnkgaW52b2tlIG15PC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NzAwPC9hZT4KKwkJCQkJPGFlPjMyMjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE5MTwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDMxIj4KKwkJCTx2YWx1ZT5lbnRpdGxlbWVudCBGYW1pbHkgYW5kPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Njc1PC9hZT4KKwkJCQkJPGFlPjM0MjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIxNjwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDMyIj4KKwkJCTx2YWx1ZT5NZWRpY2FsIExlYXZlIGZvcjo8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42NzU8L2FlPgorCQkJCQk8YWU+MzY0PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjE1PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMzMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjcwODwvYWU+CisJCQkJCTxhZT40MDM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xODE8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5CaXJ0aC9BZG9wdGlvbi9Gb3N0ZXIgQ2FyZTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDM0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT43MDg8L2FlPgorCQkJCQk8YWU+NDI2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTgyPC9hZT4KKwkJCQkJPGFlPjM4PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+U2VyaW91cyBIZWF0aCBDb25kaXRpb24gb2Ygc3BvdXNlLCBTb24sIERhdWdodGVyLCBvciBQYXJlbnQ8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwzNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NzA4PC9hZT4KKwkJCQkJPGFlPjQ4MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE4NDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPlNlcmlvdXMgSGVhbHRoIENvbmRpdGlvbiBvZiBTZWxmPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMzYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY3NTwvYWU+CisJCQkJCTxhZT41Mzc8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5Db250YWN0IHlvdXIgc3VwZXJ2aXNvciBhbmQvb3Igb3VyIHBlcnNvbm5lbCBvZmZpY2UgdG8gb2J0YWluIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgeW91ciBlbnRpdGxlbWVudHMgYW5kIHJlc3BvbnNpYmlsaXRpZXMgdW5kZXIgdGhlIEZhbWlseSBhbmQgTWVkaWNhbCBMZWF2ZSBBY3Qgb2YgMTk5My48L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxzaXplIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+MjY8L2FlPgorCQkJCTxhZT41PC9hZT4KKwkJCTwvc2l6ZT4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUwzNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTk8L2FlPgorCQkJCQk8YWU+NjMwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTkyPC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+Ni4gIFJFTUFSS1M6PC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMMzgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE5PC9hZT4KKwkJCQkJPGFlPjc0NzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE3MDwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPjcuICBDRVJUSUZJQ0FUSU9OOjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDM5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzg8L2FlPgorCQkJCQk8YWU+NzQ3PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NzE1PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+SSBoZXJlYnkgcmVxdWVzdCBsZWF2ZS9hcHByb3ZlZCBhYnNlbmNlIGZyb20gZHV0eSBhcyBpbmRpY2F0ZWQgYWJvdmUgYW5kIGNlcnRpZnkgdGhhdCBzdWNoIGxlYXZlL2Fic2VuY2U8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNDAiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE5PC9hZT4KKwkJCQkJPGFlPjc2NzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3MzwvYWU+CisJCQkJCTxhZT42NjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPmlzIHJldWVzdGVkIGZyb20gdGhlIHB1cnBvc2UocykgaW5kaWNhdGVkLiBJIHVuZGVyc3RhbmQgdGhhdCBJIG11c3QgY29tcGx5IHdpdGggbXkgZW1wbG95aW5nIGFnZW5jeSdzIHByb2NlZHVyZXMgZm9yIHJlcXVlc3RpbmcgbGVhdmUvYXBwcm92ZWQgYWJzZW5jZSAoYW5kIHByb3ZpZGUgYWRkaXRpb25hbCBkb2N1bWVudGlvbiwgaW5jbHVkaW5nIG1lZGljYWwgY2VydGlmaWNhdGlvbiwgaWYgcmVxdWlyZWQpIGFuZCB0aGF0IGZhbHNpZmljYXRpb24gb2YgaW5mb3JtYXRpb24gb24gdGhpcyBmb3JtIG1heSBiZSBncm91bmRzIGZvciBkaXNjaXBsaW5hcnkgYWN0aW9uLCBpbmNsdWRpbmcgcmVtb3ZhbC48L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNDEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE5PC9hZT4KKwkJCQkJPGFlPjg0MTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIzMDwvYWU+CisJCQkJCTxhZT4yNzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkVNUExPWUVFIFNJR05BVFVSRTwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjExPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDQyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41OTc8L2FlPgorCQkJCQk8YWU+ODQxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NTg8L2FlPgorCQkJCQk8YWU+Mjc8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5EQVRFPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTE8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNDMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE5PC9hZT4KKwkJCQkJPGFlPjg3NzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjMzNTwvYWU+CisJCQkJCTxhZT4yNjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPjguICBPRkZJQ0FMIEFDVElPTiBPTiBSRVFVRVNUOjwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDQ0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MTwvYWU+CisJCQkJCTxhZT44OTc8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT4oSWYgZGlzYXBwcm92ZWQsIGdpdmUgcmVhc29uLiBJZiBhbm51YWwgbGVhdmUsIGluaXRpYXRlIGFjdGlvbiB0byByZXNjaGVkdWxlLik8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8c2l6ZSBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPjUzPC9hZT4KKwkJCQk8YWU+MTwvYWU+CisJCQk8L3NpemU+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNDUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjM4ODwvYWU+CisJCQkJCTxhZT44NzU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xOTI8L2FlPgorCQkJCQk8YWU+MjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5BUFBST1ZFRDwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+Ym9sZDwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDQ2Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42Mzg8L2FlPgorCQkJCQk8YWU+ODc1PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTkyPC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+RElTQVBQUk9WRUQ8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw0NyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTk8L2FlPgorCQkJCQk8YWU+OTQxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTEyPC9hZT4KKwkJCQkJPGFlPjI3PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+U0lHTkFUVVJFPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTE8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNDgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjU5NzwvYWU+CisJCQkJCTxhZT45NDA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT41ODwvYWU+CisJCQkJCTxhZT4yNzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHZhbHVlPkRBVEU8L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT4xMTwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw0OSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+OTcwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODc2PC9hZT4KKwkJCQkJPGFlPjI2PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+UFJJVkFDWSBBQ1QgU1RBVEVNRU5UPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5ib2xkPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNTAiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE5PC9hZT4KKwkJCQkJPGFlPjk5NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3MzwvYWU+CisJCQkJCTxhZT4xMzQ8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTx2YWx1ZT5TZWN0aW9uIDYzMTEgb2YgdGl0bGUgNSwgVW5pdGVkIFN0YXRlcyBDb2RlLCBhdXRob3JpemVzIGNvbGxlY3Rpb24gb2YgdGhpcyBpbmZvcm1hdGlvbi4gVGhlIHByaW1hcnkgdXNlIG9mIHRoaXMgaW5mb3JtYXRpb24gaXMgYnkgbWFuYWdlbWVudCBhbmQgeW91ciBwYXlyb2xsIG9mZmljZSB0byBhcHByb3ZlIGFuZCByZWNvcmQgeW91ciB1c2Ugb2YgbGVhdmUuIEFkZGl0aW9uYWwgZGlzY2xvc3VyZXMgb2YgdGhlIGluZm9ybWF0aW9uIG1hdCBiZTogVG8gdGhlIERlcGFydG1lbnQgb2YgbGFib3Igd2hlbiBwcm9jZXNzaW5nIGEgY2xhaW0gZm9yIGNvbXBlbnNhdGlvbiByZWdhcmRpbmcgYSBqb2IgY29ubmVjdGVkIGluanVyeSBvciBpbGxuZXNzOyB0byBhIFN0YXRlIHVuZW1wbG95bWVudCBjb21wZW5zYXRpb24gb2ZmaWNlIHJlZ2FyZGluZyBhIGNsYWltOyB0aGUgRmVkZXJhbCBMaWZlIEluc3VyYW5jZSBvciBIZWFsdGggQmVuZWZpdHMgY2FycmllcyByZWdhcmRpbmcgYSBjbGFpbTsgdG8gYSBGZWRlcmFsIFN0YXRlLCBvciBsb2NhbCBsYXcgZW5mb3JjZW1lbnQgYWdlbmN5IHdoZW4geW91ciBhZ2VuY3kgYmVjb21lcyBhd2FyZSBvZiBhIHZpb2xhdGlvbiBvciBwb3NzaWJsZSB2aW9sYXRpb24gb2YgY2l2aWwgb3IgY3JpbWluYWwgbGF3OyB0byBhIEZlZGVyYWwgYWdlbmN5IHdoZW4gY29uZHVjdGluZyBhbiBpbnZlc3RpZ2F0aW9uIGZvciBlbXBsb3ltZW50IG9yIFNlcnZpY2VzIEFkbWluaXN0cmF0aW9uIGluIGNvbm5lY3Rpb24gd2l0aCBpdHMgcmVzcG9uc2liaWxpdGllcyBmb3IgcmVjb3JkcyBtYW5hZ2VtZW50LgorCitXaGVyZSAgdGhlIEVtcGxveWVlIGlkZW50aWZpY2F0aW9uIG51bWJlciBpcyB5b3VyIFNvY2lhbCBTZWN1cml0eSBOdW1iZXIsIGNvbGxlY3Rpb24gb2YgdGhpcyBpbmZvcm1hdGlvbiBpcyBhdXRob3JpemVkIGJ5IEV4ZWN1dGl2ZSBPcmRlciA5Mzk3LiBGdXJuaXNoaW5nIHRoZSBpbmZvcm1hdGlvbiBvbiB0aGlzIGZvcm0sIGluY2x1ZGluZyB5b3VyIFNvY2lhbCBTZWN1cml0eSBOdW1iZXIsIGlzIHZvbHVudGFyeSwgYnV0IHRvIGRvIHNvIG1heSByZXN1bHQgaW4gZGlzYXBwcm92YWwgcmVxdWVzdC48L3ZhbHVlPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+VGltZXM8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJPC9sYWJlbD4KKwkJPGxhYmVsIHNpZD0iTEFCRUw1MSI+CisJCQk8dmFsdWU+SWYgeW91ciBhZ2VuY3kgdXNlcyB0aGUgaW5mb3JtYXRpb24gZnVybmlzaGVkIG9uIHRoaXMgZm9ybSBmb3IgcHVycG9zZXMgb3RoZXIgdGhhbiB0aG9zZSBpbmRpY2F0ZWQgYWJvdmUsIGl0IG1heSBwcm92aWRlIHlvdSB3aXRoIGFuIGFkZGl0aW9uYWwgc3RhdGVtZW50IHJlZmxlY3RpbmcgdGhvc2UgcHVycG9zZXMuPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+NzwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTg8L2FlPgorCQkJCQk8YWU+MTE0MDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NTwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xhYmVsPgorCQk8bGFiZWwgc2lkPSJMQUJFTDUyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xODwvYWU+CisJCQkJCTxhZT4xMTY4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDIyPC9hZT4KKwkJCQkJPGFlPjM4PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+TlNOIDc1NDAtMDAwLTc1My01MDY3CitQUkVWSU9VUyBFRElUSU9OIE1BWSBCRSBVU0VEPC92YWx1ZT4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCTwvbGFiZWw+CisJCTxsYWJlbCBzaWQ9IkxBQkVMNTMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQzODwvYWU+CisJCQkJCTxhZT4xMTY4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDU0PC9hZT4KKwkJCQkJPGFlPjM4PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dmFsdWU+U1RBTkRBUkQgRk9STSA3MSAoUmV2LiAxMi05NykKK1BSRVNDUklCRUQgQlkgT0ZGSUNFIE9GIFBFUlNPTk5FTCBNQU5BR0VNRU5ULCA1IENGUiBQQVJUIDYzMDwvdmFsdWU+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5UaW1lczwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPGp1c3RpZnk+cmlnaHQ8L2p1c3RpZnk+CisJCTwvbGFiZWw+CisJCTxsaW5lIHNpZD0iTElORTEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjMyPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODc2PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzwvYWU+CisJCQkJCTxhZT44MjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTc8L2FlPgorCQkJCQk8YWU+MTMzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODc2PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkU0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzwvYWU+CisJCQkJCTxhZT4xNzk8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NzY8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2ODwvYWU+CisJCQkJCTxhZT4yMTg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40MDY8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2ODwvYWU+CisJCQkJCTxhZT4yNjM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT40MDY8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjMxMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjY1NzwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FOCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY4PC9hZT4KKwkJCQkJPGFlPjM1NDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQwNjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FOSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY4PC9hZT4KKwkJCQkJPGFlPjM5ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQwNjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTAiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjQ4NDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjY1NzwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjUzMDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjY1NzwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTIiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjU3ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjY1NzwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjYyNjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjc0MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTUiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjg2NzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjk2NzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjg3NjwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMTciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjE3PC9hZT4KKwkJCQkJPGFlPjExNjQ8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NzY8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTE4Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xNzwvYWU+CisJCQkJCTxhZT4zMjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MTEzMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTE5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTA8L2FlPgorCQkJCQk8YWU+MzI8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjUxPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMjAiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjg5MjwvYWU+CisJCQkJCTxhZT4zMjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MTEzMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTIxIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjg8L2FlPgorCQkJCQk8YWU+MTMzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4yNjY8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUyMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzQ5PC9hZT4KKwkJCQkJPGFlPjE3OTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MjIwPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMjMiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQzMDwvYWU+CisJCQkJCTxhZT4xMzM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjI2NjwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTI0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTA8L2FlPgorCQkJCQk8YWU+MTc5PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4yMjA8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUyNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkyPC9hZT4KKwkJCQkJPGFlPjEzMzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MjY1PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMjYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY3MzwvYWU+CisJCQkJCTxhZT4xMzM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjQ5NDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTI3Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjg8L2FlPgorCQkJCQk8YWU+NDg0PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4xNDM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUyOCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzQ5PC9hZT4KKwkJCQkJPGFlPjQ4NDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MTQzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGxpbmUgc2lkPSJMSU5FMjkiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQzMTwvYWU+CisJCQkJCTxhZT40ODQ8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjE0MzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQk8L2xpbmU+CisJCTxsaW5lIHNpZD0iTElORTMwIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTA8L2FlPgorCQkJCQk8YWU+NDg0PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTwvYWU+CisJCQkJCTxhZT4xNDM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9saW5lPgorCQk8bGluZSBzaWQ9IkxJTkUzMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkxPC9hZT4KKwkJCQkJPGFlPjQ4NDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCQk8YWU+MTQzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCTwvbGluZT4KKwkJPGZpZWxkIHNpZD0iRklFTEQxIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yMDwvYWU+CisJCQkJCTxhZT41ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjQ4OTwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnN0cmluZzwvYWU+CisJCQkJPGFlPm1hbmRhdG9yeTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZT5Kb2huIFEuIFB1YmxpYzwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTM3PC9hZT4KKwkJCQkJPGFlPjU4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTIzPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+c3RyaW5nPC9hZT4KKwkJCQk8YWU+bWFuZGF0b3J5PC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPjEyMzQ1Njc4OTwvdmFsdWU+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTk8L2FlPgorCQkJCQk8YWU+MTA5PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODcyPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+c3RyaW5nPC9hZT4KKwkJCQk8YWU+bWFuZGF0b3J5PC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlPlB1cmVFZGdlIFNvbHV0aW9ucyBJbmMuPC92YWx1ZT4KKwkJPC9maWVsZD4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yODwvYWU+CisJCQkJCTxhZT4xOTE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlIC8+CisJCTwvY2hlY2s+CisJCTxmaWVsZCBzaWQ9IkZJRUxENCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY5PC9hZT4KKwkJCQkJPGFlPjE4ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlIC8+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxENSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzUwPC9hZT4KKwkJCQkJPGFlPjE4ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlIC8+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxENiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMxPC9hZT4KKwkJCQkJPGFlPjE4ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQ3Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTE8L2FlPgorCQkJCQk8YWU+MTg4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODE8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWwgLz4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT50aW1lPC9hZT4KKwkJCQk8YWU+c2hvcnQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZSAvPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjU5MzwvYWU+CisJCQkJCTxhZT4xODg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbCAvPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmZsb2F0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxyYW5nZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4wPC9hZT4KKwkJCQkJPGFlPjk5OTkuOTk5OTwvYWU+CisJCQkJPC9yYW5nZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlIC8+CisJCTwvZmllbGQ+CisJCTxjaGVjayBzaWQ9IkNIRUNLMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Mjg8L2FlPgorCQkJCQk8YWU+MjMxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjE4PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZSAvPgorCQk8L2NoZWNrPgorCQk8ZmllbGQgc2lkPSJGSUVMRDkiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2OTwvYWU+CisJCQkJCTxhZT4yMzE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbCAvPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMi52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZSAvPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDEwIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNTA8L2FlPgorCQkJCQk8YWU+MjMxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWwgLz4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMi52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQxMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMxPC9hZT4KKwkJCQkJPGFlPjIzMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQxMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTExPC9hZT4KKwkJCQkJPGFlPjIzMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQxMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkzPC9hZT4KKwkJCQkJPGFlPjIzMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0syLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzIudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZmxvYXQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPjA8L2FlPgorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4KKwkJCQk8L3JhbmdlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzIudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0szIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yODwvYWU+CisJCQkJCTxhZT4yNzc8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlIC8+CisJCTwvY2hlY2s+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMTQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2OTwvYWU+CisJCQkJCTxhZT4yNzY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbCAvPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMy52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZSAvPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDE1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNTA8L2FlPgorCQkJCQk8YWU+Mjc2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWwgLz4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMy52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQxNiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMxPC9hZT4KKwkJCQkJPGFlPjI3NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQxNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTExPC9hZT4KKwkJCQkJPGFlPjI3NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQxOCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkzPC9hZT4KKwkJCQkJPGFlPjI3NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0szLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzMudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZmxvYXQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPjA8L2FlPgorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4KKwkJCQk8L3JhbmdlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzMudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0s0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yODwvYWU+CisJCQkJCTxhZT4zMjI8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlIC8+CisJCTwvY2hlY2s+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMTkiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2OTwvYWU+CisJCQkJCTxhZT4zMjE8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbCAvPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLNC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZSAvPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDIwIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNTA8L2FlPgorCQkJCQk8YWU+MzIxPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWwgLz4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQyMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMxPC9hZT4KKwkJCQkJPGFlPjMyMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjc5PC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQyMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTExPC9hZT4KKwkJCQkJPGFlPjMyMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQyMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkzPC9hZT4KKwkJCQkJPGFlPjMyMTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s0LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzQudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZmxvYXQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPjA8L2FlPgorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4KKwkJCQk8L3JhbmdlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzQudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0s1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yODwvYWU+CisJCQkJCTxhZT4zNjc8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlIC8+CisJCTwvY2hlY2s+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMjQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2OTwvYWU+CisJCQkJCTxhZT4zNjY8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbCAvPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZSAvPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDI1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNTA8L2FlPgorCQkJCQk8YWU+MzY2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWwgLz4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQyNiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMxPC9hZT4KKwkJCQkJPGFlPjM2NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQyNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTExPC9hZT4KKwkJCQkJPGFlPjM2NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQyOCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkzPC9hZT4KKwkJCQkJPGFlPjM2NjwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZmxvYXQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPjA8L2FlPgorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4KKwkJCQk8L3JhbmdlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0s2Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xMjE8L2FlPgorCQkJCQk8YWU+NDEyPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTU8L2FlPgorCQkJCQk8YWU+MTQ8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZT5vZmY8L3ZhbHVlPgorCQkJPGFjdGl2ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5vZmY8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzUudmFsdWUgPT0gIm9uIikgPyAib24iIDogIm9mZiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2FjdGl2ZT4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZHdyaXRlPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkodmFsdWUgPT0gIm9uIikgPyAicmVhZG9ubHkiIDogInJlYWR3cml0ZSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxyYWRpb19jaGVjayBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbCAvPgorCQkJCTxjb21wdXRlPgorCQkJCQkoKENIRUNLOC52YWx1ZSA9PSAib24iKSB8fCAoQ0hFQ0s3LnZhbHVlID09ICJvbiIpKSA/IHNldCgidmFsdWUiLCAib2ZmIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvcmFkaW9fY2hlY2s+CisJCTwvY2hlY2s+CisJCTxjaGVjayBzaWQ9IkNIRUNLNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MTIxPC9hZT4KKwkJCQkJPGFlPjQzODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE1PC9hZT4KKwkJCQkJPGFlPjE0PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWU+b2ZmPC92YWx1ZT4KKwkJCTxhY3RpdmUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+b2ZmPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s1LnZhbHVlID09ICJvbiIpID8gIm9uIiA6ICJvZmYiCisJCQkJPC9jb21wdXRlPgorCQkJPC9hY3RpdmU+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWR3cml0ZTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKHZhbHVlID09ICJvbiIpID8gInJlYWRvbmx5IiA6ICJyZWFkd3JpdGUiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8cmFkaW9fY2hlY2sgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWwgLz4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKChDSEVDSzgudmFsdWUgPT0gIm9uIikgfHwgKENIRUNLNi52YWx1ZSA9PSAib24iKSkgPyBzZXQoInZhbHVlIiwgIm9mZiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L3JhZGlvX2NoZWNrPgorCQk8L2NoZWNrPgorCQk8Y2hlY2sgc2lkPSJDSEVDSzgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxOTwvYWU+CisJCQkJCTxhZT40MTI8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNTwvYWU+CisJCQkJCTxhZT4xNDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlPm9mZjwvdmFsdWU+CisJCQk8YWN0aXZlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPm9mZjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLNS52YWx1ZSA9PSAib24iKSA/ICJvbiIgOiAib2ZmIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvYWN0aXZlPgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkd3JpdGU8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCSh2YWx1ZSA9PSAib24iKSA/ICJyZWFkb25seSIgOiAicmVhZHdyaXRlIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPHJhZGlvX2NoZWNrIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCSgoQ0hFQ0s2LnZhbHVlID09ICJvbiIpIHx8IChDSEVDSzcudmFsdWUgPT0gIm9uIikpID8gc2V0KCJ2YWx1ZSIsICJvZmYiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9yYWRpb19jaGVjaz4KKwkJPC9jaGVjaz4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0s5Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yODwvYWU+CisJCQkJCTxhZT40OTU8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4yMjwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlIC8+CisJCTwvY2hlY2s+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMjkiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI2OTwvYWU+CisJCQkJCTxhZT40OTg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbCAvPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLOS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZSAvPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDMwIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4zNTA8L2FlPgorCQkJCQk8YWU+NDk4PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODE8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWwgLz4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLOS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQzMSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDMyPC9hZT4KKwkJCQkJPGFlPjQ5ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjc4PC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQzMiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTExPC9hZT4KKwkJCQkJPGFlPjQ5ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8anVzdGlmeT5jZW50ZXI8L2p1c3RpZnk+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQzMyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NTkyPC9hZT4KKwkJCQkJPGFlPjQ5ODwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0s5LnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzkudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZmxvYXQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPjA8L2FlPgorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4KKwkJCQk8L3JhbmdlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzkudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxMCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Mjg8L2FlPgorCQkJCQk8YWU+NTQzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MjI8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjE4PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZSAvPgorCQk8L2NoZWNrPgorCQk8ZmllbGQgc2lkPSJGSUVMRDM0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNjk8L2FlPgorCQkJCQk8YWU+NTQzPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEwLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmRhdGU8L2FlPgorCQkJCTxhZT5jYXNlX2luc2Vuc2l0aXZlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTx0ZW1wbGF0ZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4jIy0jIy0jIzwvYWU+CisJCQkJPC90ZW1wbGF0ZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQkJPGFlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCQk8Y3ZhbD5vcHRpb25hbDwvY3ZhbD4KKwkJCQkJPGNvbXB1dGU+CisJCQkJCQkoKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIpCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8Ym9yZGVyd2lkdGg+MDwvYm9yZGVyd2lkdGg+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5Db3VyaWVyPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWUgLz4KKwkJPC9maWVsZD4KKwkJPGZpZWxkIHNpZD0iRklFTEQzNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzUwPC9hZT4KKwkJCQkJPGFlPjU0MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgxPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbCAvPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMC52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlIC8+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMzYiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjQzMjwvYWU+CisJCQkJCTxhZT41NDM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT43ODwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWwgLz4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlIC8+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMzciPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjUxMTwvYWU+CisJCQkJCTxhZT41NDM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MDwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGp1c3RpZnk+Y2VudGVyPC9qdXN0aWZ5PgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWwgLz4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+dGltZTwvYWU+CisJCQkJPGFlPnNob3J0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlIC8+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxEMzgiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjU5MjwvYWU+CisJCQkJCTxhZT41NDM8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MTwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWwgLz4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZmxvYXQ8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHJhbmdlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPjA8L2FlPgorCQkJCQk8YWU+OTk5OS45OTk5PC9hZT4KKwkJCQk8L3JhbmdlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzEwLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHZhbHVlIC8+CisJCTwvZmllbGQ+CisJCTxjaGVjayBzaWQ9IkNIRUNLMTEiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjI4PC9hZT4KKwkJCQkJPGFlPjU5MTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8dmFsdWUgLz4KKwkJPC9jaGVjaz4KKwkJPGZpZWxkIHNpZD0iRklFTEQzOSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MjY5PC9hZT4KKwkJCQkJPGFlPjU5MDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjgwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8c2Nyb2xsaG9yaXo+d29yZHdyYXA8L3Njcm9sbGhvcml6PgorCQkJPHNjcm9sbHZlcnQ+Zml4ZWQ8L3Njcm9sbHZlcnQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGNoZWNrX29mZiBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbCAvPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMS52YWx1ZSA9PSAib2ZmIikgPyBzZXQoInZhbHVlIiwgIiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2NoZWNrX29mZj4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+Y2FzZV9pbnNlbnNpdGl2ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8dGVtcGxhdGUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+IyMtIyMtIyM8L2FlPgorCQkJCTwvdGVtcGxhdGU+CisJCQkJPHByZXNlbnRhdGlvbj5NTS1ERC1ZWTwvcHJlc2VudGF0aW9uPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKChDSEVDSzExLnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiKQorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+Q291cmllcjwvYWU+CisJCQkJPGFlPjg8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPHZhbHVlIC8+CisJCTwvZmllbGQ+CisJCTxmaWVsZCBzaWQ9IkZJRUxENDAiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjM1MDwvYWU+CisJCQkJCTxhZT41OTA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44MTwvYWU+CisJCQkJCTxhZT4yMzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTEudmFsdWUgPT0gIm9uIikgPyAicmVhZHdyaXRlIiA6ICJyZWFkb25seSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxjaGVja19vZmYgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWwgLz4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTEudmFsdWUgPT0gIm9mZiIpID8gc2V0KCJ2YWx1ZSIsICIiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9jaGVja19vZmY+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPmNhc2VfaW5zZW5zaXRpdmU8L2FlPgorCQkJCTxhZT5vcHRpb25hbDwvYWU+CisJCQkJPHRlbXBsYXRlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPiMjLSMjLSMjPC9hZT4KKwkJCQk8L3RlbXBsYXRlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkNvdXJpZXI8L2FlPgorCQkJCTxhZT44PC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZSAvPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDQxIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MzI8L2FlPgorCQkJCQk8YWU+NTkwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+Nzg8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnRpbWU8L2FlPgorCQkJCTxhZT5zaG9ydDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZSAvPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDQyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41MTE8L2FlPgorCQkJCQk8YWU+NTkwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODA8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxqdXN0aWZ5PmNlbnRlcjwvanVzdGlmeT4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnRpbWU8L2FlPgorCQkJCTxhZT5zaG9ydDwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZSAvPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDQzIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT41OTI8L2FlPgorCQkJCQk8YWU+NTkwPC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+ODE8L2FlPgorCQkJCQk8YWU+MjM8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZG9ubHk8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvbiIpID8gInJlYWR3cml0ZSIgOiAicmVhZG9ubHkiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8Y2hlY2tfb2ZmIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzExLnZhbHVlID09ICJvZmYiKSA/IHNldCgidmFsdWUiLCAiIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvY2hlY2tfb2ZmPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPmZsb2F0PC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxyYW5nZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT4wPC9hZT4KKwkJCQkJPGFlPjk5OTkuOTk5OTwvYWU+CisJCQkJPC9yYW5nZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCSgoQ0hFQ0sxMS52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIikKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTx2YWx1ZSAvPgorCQk8L2ZpZWxkPgorCQk8Y2hlY2sgc2lkPSJDSEVDSzEyIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42ODA8L2FlPgorCQkJCQk8YWU+MzI2PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTU8L2FlPgorCQkJCQk8YWU+MTQ8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZSAvPgorCQk8L2NoZWNrPgorCQk8Y2hlY2sgc2lkPSJDSEVDSzEzIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT42ODk8L2FlPgorCQkJCQk8YWU+NDA0PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MTU8L2FlPgorCQkJCQk8YWU+MTQ8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPkhlbHZldGljYTwvYWU+CisJCQkJPGFlPjEwPC9hZT4KKwkJCQk8YWU+cGxhaW48L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxhY3RpdmUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+b2ZmPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxMi52YWx1ZSA9PSAib24iKSA/ICJvbiIgOiAib2ZmIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvYWN0aXZlPgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkd3JpdGU8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCSh2YWx1ZSA9PSAib24iKSA/ICJyZWFkb25seSIgOiAicmVhZHdyaXRlIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPHJhZGlvX2NoZWNrIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCSgoQ0hFQ0sxNC52YWx1ZSA9PSAib24iKSB8fCAoQ0hFQ0sxNS52YWx1ZSA9PSAib24iKSkgPyBzZXQoInZhbHVlIiwgIm9mZiIpIDogIiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L3JhZGlvX2NoZWNrPgorCQkJPHZhbHVlIC8+CisJCTwvY2hlY2s+CisJCTxjaGVjayBzaWQ9IkNIRUNLMTQiPgorCQkJPGl0ZW1sb2NhdGlvbiBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmFic29sdXRlPC9hZT4KKwkJCQkJPGFlPjY4OTwvYWU+CisJCQkJCTxhZT40Mjg8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xNTwvYWU+CisJCQkJCTxhZT4xNDwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGZvbnRpbmZvIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+SGVsdmV0aWNhPC9hZT4KKwkJCQk8YWU+MTA8L2FlPgorCQkJCTxhZT5wbGFpbjwvYWU+CisJCQk8L2ZvbnRpbmZvPgorCQkJPGFjdGl2ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5vZmY8L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzEyLnZhbHVlID09ICJvbiIpID8gIm9uIiA6ICJvZmYiCisJCQkJPC9jb21wdXRlPgorCQkJPC9hY3RpdmU+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWR3cml0ZTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKHZhbHVlID09ICJvbiIpID8gInJlYWRvbmx5IiA6ICJyZWFkd3JpdGUiCisJCQkJPC9jb21wdXRlPgorCQkJPC9lZGl0c3RhdGU+CisJCQk8cmFkaW9fY2hlY2sgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWwgLz4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKChDSEVDSzE1LnZhbHVlID09ICJvbiIpIHx8IChDSEVDSzEzLnZhbHVlID09ICJvbiIpKSA/IHNldCgidmFsdWUiLCAib2ZmIikgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvcmFkaW9fY2hlY2s+CisJCQk8dmFsdWUgLz4KKwkJPC9jaGVjaz4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxNSI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+Njg5PC9hZT4KKwkJCQkJPGFlPjQ4NTwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE1PC9hZT4KKwkJCQkJPGFlPjE0PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xMDwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8YWN0aXZlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPm9mZjwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLMTIudmFsdWUgPT0gIm9uIikgPyAib24iIDogIm9mZiIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2FjdGl2ZT4KKwkJCTxlZGl0c3RhdGUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJPGN2YWw+cmVhZHdyaXRlPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkodmFsdWUgPT0gIm9uIikgPyAicmVhZG9ubHkiIDogInJlYWR3cml0ZSIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L2VkaXRzdGF0ZT4KKwkJCTxyYWRpb19jaGVjayBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbCAvPgorCQkJCTxjb21wdXRlPgorCQkJCQkoKENIRUNLMTQudmFsdWUgPT0gIm9uIikgfHwgKENIRUNLMTMudmFsdWUgPT0gIm9uIikpID8gc2V0KCJ2YWx1ZSIsICJvZmYiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9yYWRpb19jaGVjaz4KKwkJCTx2YWx1ZSAvPgorCQk8L2NoZWNrPgorCQk8ZmllbGQgc2lkPSJGSUVMRDQ0Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MjwvYWU+CisJCQkJCTxhZT42NTc8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NDY8L2FlPgorCQkJCQk8YWU+NTc8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxzY3JvbGxob3Jpej53b3Jkd3JhcDwvc2Nyb2xsaG9yaXo+CisJCQk8c2Nyb2xsdmVydD5maXhlZDwvc2Nyb2xsdmVydD4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5zdHJpbmc8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKENIRUNLMTAudmFsdWUgPT0gIm9uIikgPyAibWFuZGF0b3J5IiA6ICJvcHRpb25hbCIKKwkJCQkJPC9jb21wdXRlPgorCQkJCTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTx2YWx1ZSAvPgorCQk8L2ZpZWxkPgorCQk8ZmllbGQgc2lkPSJGSUVMRDQ1Ij4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT40MjwvYWU+CisJCQkJCTxhZT43MTI8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT44NDY8L2FlPgorCQkJCQk8YWU+MzE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5zdHJpbmc8L2FlPgorCQkJCTxhZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQkJPGN2YWw+b3B0aW9uYWw8L2N2YWw+CisJCQkJCTxjb21wdXRlPgorCQkJCQkJKENIRUNLOC52YWx1ZSA9PSAib24iKSA/ICJtYW5kYXRvcnkiIDogIm9wdGlvbmFsIgorCQkJCQk8L2NvbXB1dGU+CisJCQkJPC9hZT4KKwkJCTwvZm9ybWF0PgorCQkJPGVkaXRzdGF0ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD5yZWFkb25seTwvY3ZhbD4KKwkJCQk8Y29tcHV0ZT4KKwkJCQkJKENIRUNLOC52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPHZhbHVlIC8+CisJCTwvZmllbGQ+CisJCTxidXR0b24gc2lkPSJCVVRUT04xIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4yNTA8L2FlPgorCQkJCQk8YWU+ODM5PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+MzQ2PC9hZT4KKwkJCQkJPGFlPjI3PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dHlwZT5zaWduYXR1cmU8L3R5cGU+CisJCQk8c2lnbmF0dXJlPlNJR05BVFVSRTE8L3NpZ25hdHVyZT4KKwkJCTxzaWduZXI+KGNzKSBKb2huIE0uIEJveWVyLCBqYm95ZXJAcHVyZWVkZ2UuY29tPC9zaWduZXI+CisJCQk8c2lnbm9wdGlvbnMgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5vbWl0PC9hZT4KKwkJCQk8YWU+dHJpZ2dlcml0ZW08L2FlPgorCQkJPC9zaWdub3B0aW9ucz4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTxib3JkZXJ3aWR0aD4wPC9ib3JkZXJ3aWR0aD4KKwkJCTxzaWduaXRlbXJlZnMgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5vbWl0PC9hZT4KKwkJCQk8YWU+UEFHRTEuQ0hFQ0sxNjwvYWU+CisJCQkJPGFlPlBBR0UxLkNIRUNLMTc8L2FlPgorCQkJCTxhZT5QQUdFMS5GSUVMRDQ3PC9hZT4KKwkJCQk8YWU+UEFHRTEuQlVUVE9OMjwvYWU+CisJCQkJPGFlPlNJR05BVFVSRTI8L2FlPgorCQkJCTxhZT5QQUdFMS5GSUVMRDQ4PC9hZT4KKwkJCTwvc2lnbml0ZW1yZWZzPgorCQkJPGZvcm1hdCBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPnN0cmluZzwvYWU+CisJCQkJPGFlPm1hbmRhdG9yeTwvYWU+CisJCQk8L2Zvcm1hdD4KKwkJCTx2YWx1ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbD4oY3MpIEpvaG4gTS4gQm95ZXIsIGpib3llckBwdXJlZWRnZS5jb208L2N2YWw+CisJCQkJPGNvbXB1dGU+CisJCQkJCXNpZ25lcgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvdmFsdWU+CisJCTwvYnV0dG9uPgorICAgICAgICAgICAgICAgIDxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgICAgICAgICAgICAgPFNpZ25lZEluZm8+CisgICAgICAgICAgICAgICAgICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiIC8+CisgICAgICAgICAgICAgICAgICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiIC8+CisgICAgICAgICAgICAgICAgICAgIDxSZWZlcmVuY2UgVVJJPSIiPgorICAgICAgICAgICAgICAgICAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICAgICAgICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIiAvPgorICAgICAgICAgICAgICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDYveG1sZHNpZy1maWx0ZXIyIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPFhQYXRoIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA2L3htbGRzaWctZmlsdGVyMiIgRmlsdGVyPSJzdWJ0cmFjdCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgL1hGREwvcGFnZVtAc2lkPSJQQUdFMSJdLypbQHNpZD0iQ0hFQ0sxNiIgb3IgQHNpZD0iQ0hFQ0sxNyIgb3IgQHNpZD0iRklFTEQ0NyIgb3IgQHNpZD0iQlVUVE9OMiIgb3IgQHNpZD0iRklFTEQ0OCJdIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvWEZETC9wYWdlL3RyaWdnZXJpdGVtW25vdChAc2lkKV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPC9YUGF0aD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvVHJhbnNmb3JtPgorICAgICAgICAgICAgICAgICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgICAgICAgICAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICAgICAgICAgICAgICAgICAgPERpZ2VzdFZhbHVlPnh0SHZncllDWWlXVXR2Z2JhQTZ5eDRmWTRoST08L0RpZ2VzdFZhbHVlPgorICAgICAgICAgICAgICAgICAgICA8L1JlZmVyZW5jZT4KKyAgICAgICAgICAgICAgICAgIDwvU2lnbmVkSW5mbz4KKyAgICAgICAgICAgICAgICAgIDxTaWduYXR1cmVWYWx1ZT4KKyAgICAgICAgICAgICAgICAgICAgVUN4MjEzQzVsYjBMaGhzQUhFTytMNVBia3E4c0JoaC95WEp1TDR6RFpNeUFTRi9jbjZlb0RBPT0KKyAgICAgICAgICAgICAgICAgIDwvU2lnbmF0dXJlVmFsdWU+CisgICAgICAgICAgICAgICAgICA8S2V5SW5mbz4KKyAgICAgICAgICAgICAgICAgICAgPEtleVZhbHVlPgorICAgICAgICAgICAgICAgICAgICAgIDxEU0FLZXlWYWx1ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxQPgorICAgICAgICAgICAgICAgICAgICAgICAgICAzZU9lQXZxbkV5RnBXK3VUU2dyZGo3WUxqYVRrcHlIZWNLRklvTHU4UVpOa0dUUUkxY2lJVEJIMGxxZklrZENICisgICAgICAgICAgICAgICAgICAgICAgICAgIFNpOGZpVUMzRFRxM0o5RnNKZWY0WVZ0REY3SnBVdkhUT1FxdHE3Wmd4NktDOFd4a3o2clFDeE9yN0YwQXBPWWkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgODl6TFJvZTRNa0RHZTZ1eDArV3R5T1RRb1ZJR05URERVRlhyVVFOYkxyRT0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvUD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxRPmhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VT08L1E+CisgICAgICAgICAgICAgICAgICAgICAgICA8Rz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgbm54N2hiZFdvekdidG5GZ25iRm5vcGZSbDdYUmFjcGtQSlJHZjVQMklVZ1ZzcEVVU1VvTjZpMWZEQmZCZzQzegorICAgICAgICAgICAgICAgICAgICAgICAgICBLdDdkbEVhUUw3YjUrSlRadDNNaFpOUG9zeHNneFZ1VDdUcy9nNWs3RW5wZFl2MGE1aHc1QncyOWZqYkdIZmdNCisgICAgICAgICAgICAgICAgICAgICAgICAgIDhkMnJoZDJVaTB4SGJrMEQ0NTFuaEx4Vld1bHZpT1NQaHpLS3ZYcmJ5U0E9CisgICAgICAgICAgICAgICAgICAgICAgICA8L0c+CisgICAgICAgICAgICAgICAgICAgICAgICA8WT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2ZZcGlocEFRZWVwYk5GUzRNQWJRUmhkWHBEaTV3THJ3eEU1aEl2b1lxbzFMOEJRVnU4ZlkxVEZBUHRvYWUxaQorICAgICAgICAgICAgICAgICAgICAgICAgICBCZy9HSUp5UDNpTGZ5dUJKYUR2SkpMUDMwd0JIOWkvczVKMzY1NlBldnBPVmRUZmk3NzdGaTlHajZ5L2liMlZ2CisgICAgICAgICAgICAgICAgICAgICAgICAgICtPWmZKa2twNEw1MCtwNVRVaFBtUUxKdFJFc2d0bCt0bklPeUpUKytHOVU9CisgICAgICAgICAgICAgICAgICAgICAgICA8L1k+CisgICAgICAgICAgICAgICAgICAgICAgPC9EU0FLZXlWYWx1ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9LZXlWYWx1ZT4KKyAgICAgICAgICAgICAgICAgICAgPFg1MDlEYXRhPgorICAgICAgICAgICAgICAgICAgICAgIDxYNTA5U3ViamVjdE5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBDTj1NZXJsaW4gSHVnaGVzLE9VPVgvU2VjdXJlLE89QmFsdGltb3JlIFRlY2hub2xvZ2llcyBMdGQuLFNUPUR1YmxpbixDPUlFCisgICAgICAgICAgICAgICAgICAgICAgPC9YNTA5U3ViamVjdE5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgPFg1MDlJc3N1ZXJTZXJpYWw+CisgICAgICAgICAgICAgICAgICAgICAgICA8WDUwOUlzc3Vlck5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgIENOPVRyYW5zaWVudCBDQSxPVT1YL1NlY3VyZSxPPUJhbHRpbW9yZSBUZWNobm9sb2dpZXMgTHRkLixTVD1EdWJsaW4sQz1JRQorICAgICAgICAgICAgICAgICAgICAgICAgPC9YNTA5SXNzdWVyTmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxYNTA5U2VyaWFsTnVtYmVyPjEwMTc3ODgzNzAzNDg8L1g1MDlTZXJpYWxOdW1iZXI+CisgICAgICAgICAgICAgICAgICAgICAgPC9YNTA5SXNzdWVyU2VyaWFsPgorICAgICAgICAgICAgICAgICAgICAgIDxYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBNSUlEVURDQ0F4Q2dBd0lCQWdJR0FPejQ2ZzJzTUFrR0J5cUdTTTQ0QkFNd2JqRUxNQWtHQTFVRUJoTUNTVVV4CisgICAgICAgICAgICAgICAgICAgICAgICBEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsCisgICAgICAgICAgICAgICAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVZNQk1HQTFVRUF4TU1WSEpoYm5OcFpXNTBJRU5CCisgICAgICAgICAgICAgICAgICAgICAgICBNQjRYRFRBeU1EUXdNakl5TlRrek1Gb1hEVEV5TURRd01qSXhOVGt5TlZvd2J6RUxNQWtHQTFVRUJoTUNTVVV4CisgICAgICAgICAgICAgICAgICAgICAgICBEekFOQmdOVkJBZ1RCa1IxWW14cGJqRWtNQ0lHQTFVRUNoTWJRbUZzZEdsdGIzSmxJRlJsWTJodWIyeHZaMmxsCisgICAgICAgICAgICAgICAgICAgICAgICBjeUJNZEdRdU1SRXdEd1lEVlFRTEV3aFlMMU5sWTNWeVpURVdNQlFHQTFVRUF4TU5UV1Z5YkdsdUlFaDFaMmhsCisgICAgICAgICAgICAgICAgICAgICAgICBjekNDQWJjd2dnRXNCZ2NxaGtqT09BUUJNSUlCSHdLQmdRRGQ0NTRDK3FjVElXbGI2NU5LQ3QyUHRndU5wT1NuCisgICAgICAgICAgICAgICAgICAgICAgICBJZDV3b1VpZ3U3eEJrMlFaTkFqVnlJaE1FZlNXcDhpUjBJZEtMeCtKUUxjTk9yY24wV3dsNS9oaFcwTVhzbWxTCisgICAgICAgICAgICAgICAgICAgICAgICA4ZE01Q3EycnRtREhvb0x4YkdUUHF0QUxFNnZzWFFDazVpTHozTXRHaDdneVFNWjdxN0hUNWEzSTVOQ2hVZ1kxCisgICAgICAgICAgICAgICAgICAgICAgICBNTU5RVmV0UkExc3VzUUlWQUlReTNCU3RCanZ4ODlXcThUanI3SURQMVM4bEFvR0JBSjU4ZTRXM1ZxTXhtN1p4CisgICAgICAgICAgICAgICAgICAgICAgICBZSjJ4WjZLWDBaZTEwV25LWkR5VVJuK1Q5aUZJRmJLUkZFbEtEZW90WHd3WHdZT044eXJlM1pSR2tDKzIrZmlVCisgICAgICAgICAgICAgICAgICAgICAgICAyYmR6SVdUVDZMTWJJTVZiayswN1A0T1pPeEo2WFdMOUd1WWNPUWNOdlg0MnhoMzREUEhkcTRYZGxJdE1SMjVOCisgICAgICAgICAgICAgICAgICAgICAgICBBK09kWjRTOFZWcnBiNGprajRjeWlyMTYyOGtnQTRHRUFBS0JnSEgyS1lvYVFFSG5xV3pSVXVEQUcwRVlYVjZRCisgICAgICAgICAgICAgICAgICAgICAgICA0dWNDNjhNUk9ZU0w2R0txTlMvQVVGYnZIMk5VeFFEN2FHbnRZZ1lQeGlDY2o5NGkzOHJnU1dnN3lTU3o5OU1BCisgICAgICAgICAgICAgICAgICAgICAgICBSL1l2N09TZCt1ZWozcjZUbFhVMzR1Kyt4WXZSbytzdjRtOWxiL2ptWHlaSktlQytkUHFlVTFJVDVrQ3liVVJMCisgICAgICAgICAgICAgICAgICAgICAgICBJTFpmclp5RHNpVS92aHZWb3pvd09EQU9CZ05WSFE4QkFmOEVCQU1DQjRBd0VRWURWUjBPQkFvRUNJYXRZN1NFCisgICAgICAgICAgICAgICAgICAgICAgICBsWEVPTUJNR0ExVWRJd1FNTUFxQUNJT0dQa0IyTXVLVE1Ba0dCeXFHU000NEJBTURMd0F3TEFJVVN2VDAyaVFqCisgICAgICAgICAgICAgICAgICAgICAgICBRNWRhNFdwZTBCdnM3R3VDY1ZzQ0ZDRWNRcGJqVWZueFhGWE5XaUZ5UTQ5WnJXcW4KKyAgICAgICAgICAgICAgICAgICAgICA8L1g1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgICAgICAgICAgICAgICA8WDUwOUNlcnRpZmljYXRlPgorICAgICAgICAgICAgICAgICAgICAgICAgTUlJRFN6Q0NBd3VnQXdJQkFnSUdBT3o0NmZ3Sk1Ba0dCeXFHU000NEJBTXdiakVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgICAgICAgICAgICAgICAgRHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbAorICAgICAgICAgICAgICAgICAgICAgICAgY3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQgorICAgICAgICAgICAgICAgICAgICAgICAgTUI0WERUQXlNRFF3TWpJeU5Ua3lOVm9YRFRFeU1EUXdNakl4TlRreU5Wb3diakVMTUFrR0ExVUVCaE1DU1VVeAorICAgICAgICAgICAgICAgICAgICAgICAgRHpBTkJnTlZCQWdUQmtSMVlteHBiakVrTUNJR0ExVUVDaE1iUW1Gc2RHbHRiM0psSUZSbFkyaHViMnh2WjJsbAorICAgICAgICAgICAgICAgICAgICAgICAgY3lCTWRHUXVNUkV3RHdZRFZRUUxFd2hZTDFObFkzVnlaVEVWTUJNR0ExVUVBeE1NVkhKaGJuTnBaVzUwSUVOQgorICAgICAgICAgICAgICAgICAgICAgICAgTUlJQnR6Q0NBU3dHQnlxR1NNNDRCQUV3Z2dFZkFvR0JBTjNqbmdMNnB4TWhhVnZyazBvSzNZKzJDNDJrNUtjaAorICAgICAgICAgICAgICAgICAgICAgICAgM25DaFNLQzd2RUdUWkJrMENOWElpRXdSOUphbnlKSFFoMG92SDRsQXR3MDZ0eWZSYkNYbitHRmJReGV5YVZMeAorICAgICAgICAgICAgICAgICAgICAgICAgMHprS3JhdTJZTWVpZ3ZGc1pNK3EwQXNUcSt4ZEFLVG1JdlBjeTBhSHVESkF4bnVyc2RQbHJjamswS0ZTQmpVdworICAgICAgICAgICAgICAgICAgICAgICAgdzFCVjYxRURXeTZ4QWhVQWhETGNGSzBHTy9IejFhcnhPT3ZzZ00vVkx5VUNnWUVBbm54N2hiZFdvekdidG5GZworICAgICAgICAgICAgICAgICAgICAgICAgbmJGbm9wZlJsN1hSYWNwa1BKUkdmNVAySVVnVnNwRVVTVW9ONmkxZkRCZkJnNDN6S3Q3ZGxFYVFMN2I1K0pUWgorICAgICAgICAgICAgICAgICAgICAgICAgdDNNaFpOUG9zeHNneFZ1VDdUcy9nNWs3RW5wZFl2MGE1aHc1QncyOWZqYkdIZmdNOGQycmhkMlVpMHhIYmswRAorICAgICAgICAgICAgICAgICAgICAgICAgNDUxbmhMeFZXdWx2aU9TUGh6S0t2WHJieVNBRGdZUUFBb0dBZmFnK0hDQUJJSmFkREQ5QWFyaGdjMlFSM0xwNworICAgICAgICAgICAgICAgICAgICAgICAgUHBNT2gwbEF3TGlJc3ZrTzRVbGJlT1MwSUpDOGJjcUxqTTFmVnc2RkdTYXhtcSs0eTFhZzJtOWs2SWRFMFFoNQorICAgICAgICAgICAgICAgICAgICAgICAgTnhCL3hGa21kd3FYRlJJSlZwNDRPZVV5Z0I0N1lLNzZObVVJWUczRGRmaVBQVTNicXpqdnRPdEVUaUNIdm8yNQorICAgICAgICAgICAgICAgICAgICAgICAgNEQ2VWp3UHBZRXJYUlVhak5qQTBNQTRHQTFVZER3RUIvd1FFQXdJQ0JEQVBCZ05WSFJNRUNEQUdBUUgvQWdFQQorICAgICAgICAgICAgICAgICAgICAgICAgTUJFR0ExVWREZ1FLQkFpRGhqNUFkakxpa3pBSkJnY3Foa2pPT0FRREF5OEFNQ3dDRkVMdTBudXdlcVc3V2YwcworICAgICAgICAgICAgICAgICAgICAgICAgZ2svQ0FHR0wwQkdLQWhSTmRnUUdyNWl5WktvSDRvcVBtMFZKOVRqWExnPT0KKyAgICAgICAgICAgICAgICAgICAgICA8L1g1MDlDZXJ0aWZpY2F0ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9YNTA5RGF0YT4KKyAgICAgICAgICAgICAgICAgIDwvS2V5SW5mbz4KKyAgICAgICAgICAgICAgICA8L1NpZ25hdHVyZT4KKwkJPGZpZWxkIHNpZD0iRklFTEQ0NiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjU1PC9hZT4KKwkJCQkJPGFlPjg0MDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE1NTwvYWU+CisJCQkJCTxhZT4yNzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGVkaXRzdGF0ZT5yZWFkb25seTwvZWRpdHN0YXRlPgorCQkJPHZhbHVlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPjA1LTA4LTAyPC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQlVUVE9OMS52YWx1ZSAhPSAiIikgPyAiKiIgOiAiIgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvdmFsdWU+CisJCQk8Zm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+ZGF0ZTwvYWU+CisJCQkJPGFlPm9wdGlvbmFsPC9hZT4KKwkJCQk8cHJlc2VudGF0aW9uPk1NLURELVlZPC9wcmVzZW50YXRpb24+CisJCQk8L2Zvcm1hdD4KKwkJPC9maWVsZD4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxNiI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+MzYyPC9hZT4KKwkJCQkJPGFlPjg3MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8cmFkaW9fYmVoYXZpb3VyIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzE3LnZhbHVlID09ICJvbiIpID8gc2V0KCJ2YWx1ZSIsICJvZmYiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9yYWRpb19iZWhhdmlvdXI+CisJCQk8dmFsdWUgLz4KKwkJPC9jaGVjaz4KKwkJPGNoZWNrIHNpZD0iQ0hFQ0sxNyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjA0PC9hZT4KKwkJCQkJPGFlPjg3MzwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjIyPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Zm9udGluZm8gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5IZWx2ZXRpY2E8L2FlPgorCQkJCTxhZT4xODwvYWU+CisJCQkJPGFlPnBsYWluPC9hZT4KKwkJCTwvZm9udGluZm8+CisJCQk8cmFkaW9fYmVoYXZpb3VyIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShDSEVDSzE2LnZhbHVlID09ICJvbiIpID8gc2V0KCJ2YWx1ZSIsICJvZmYiKSA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC9yYWRpb19iZWhhdmlvdXI+CisJCQk8dmFsdWUgLz4KKwkJPC9jaGVjaz4KKwkJPGZpZWxkIHNpZD0iRklFTEQ0NyI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NDE8L2FlPgorCQkJCQk8YWU+OTE3PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NzcwPC9hZT4KKwkJCQkJPGFlPjIzPC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8Rm9ybWF0IGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWU+c3RyaW5nPC9hZT4KKwkJCQk8YWUgY29udGVudD0iY29tcHV0ZSI+CisJCQkJCTxjdmFsPm9wdGlvbmFsPC9jdmFsPgorCQkJCQk8Y29tcHV0ZT4KKwkJCQkJCShDSEVDSzE3LnZhbHVlID09ICJvbiIpID8gIm1hbmRhdG9yeSIgOiAib3B0aW9uYWwiCisJCQkJCTwvY29tcHV0ZT4KKwkJCQk8L2FlPgorCQkJPC9Gb3JtYXQ+CisJCQk8ZWRpdHN0YXRlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsPnJlYWRvbmx5PC9jdmFsPgorCQkJCTxjb21wdXRlPgorCQkJCQkoQ0hFQ0sxNy52YWx1ZSA9PSAib24iKSA/ICJyZWFkd3JpdGUiIDogInJlYWRvbmx5IgorCQkJCTwvY29tcHV0ZT4KKwkJCTwvZWRpdHN0YXRlPgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPHNjcm9sbGhvcml6PndvcmR3cmFwPC9zY3JvbGxob3Jpej4KKwkJCTxzY3JvbGx2ZXJ0PmZpeGVkPC9zY3JvbGx2ZXJ0PgorCQkJPHZhbHVlIC8+CisJCTwvZmllbGQ+CisJCTxidXR0b24gc2lkPSJCVVRUT04yIj4KKwkJCTxpdGVtbG9jYXRpb24gY29udGVudD0iYXJyYXkiPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5hYnNvbHV0ZTwvYWU+CisJCQkJCTxhZT4xMzI8L2FlPgorCQkJCQk8YWU+OTM5PC9hZT4KKwkJCQk8L2FlPgorCQkJCTxhZSBjb250ZW50PSJhcnJheSI+CisJCQkJCTxhZT5leHRlbnQ8L2FlPgorCQkJCQk8YWU+NDY2PC9hZT4KKwkJCQkJPGFlPjI3PC9hZT4KKwkJCQk8L2FlPgorCQkJPC9pdGVtbG9jYXRpb24+CisJCQk8dHlwZT5zaWduYXR1cmU8L3R5cGU+CisJCQk8c2lnbmF0dXJlPlNJR05BVFVSRTI8L3NpZ25hdHVyZT4KKwkJCTxzaWduZXIgLz4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5zdHJpbmc8L2FlPgorCQkJCTxhZT5tYW5kYXRvcnk8L2FlPgorCQkJPC9mb3JtYXQ+CisJCQk8c2lnbm9wdGlvbnMgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5vbWl0PC9hZT4KKwkJCQk8YWU+dHJpZ2dlcml0ZW08L2FlPgorCQkJPC9zaWdub3B0aW9ucz4KKwkJCTxmb250aW5mbyBjb250ZW50PSJhcnJheSI+CisJCQkJPGFlPlRpbWVzPC9hZT4KKwkJCQk8YWU+ODwvYWU+CisJCQkJPGFlPmJvbGQ8L2FlPgorCQkJPC9mb250aW5mbz4KKwkJCTx2YWx1ZSBjb250ZW50PSJjb21wdXRlIj4KKwkJCQk8Y3ZhbCAvPgorCQkJCTxjb21wdXRlPgorCQkJCQlzaWduZXIKKwkJCQk8L2NvbXB1dGU+CisJCQk8L3ZhbHVlPgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQk8L2J1dHRvbj4KKwkJPGZpZWxkIHNpZD0iRklFTEQ0OCI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+NjU2PC9hZT4KKwkJCQkJPGFlPjk0MDwvYWU+CisJCQkJPC9hZT4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+ZXh0ZW50PC9hZT4KKwkJCQkJPGFlPjE1NTwvYWU+CisJCQkJCTxhZT4yNzwvYWU+CisJCQkJPC9hZT4KKwkJCTwvaXRlbWxvY2F0aW9uPgorCQkJPGJvcmRlcndpZHRoPjA8L2JvcmRlcndpZHRoPgorCQkJPGVkaXRzdGF0ZT5yZWFkb25seTwvZWRpdHN0YXRlPgorCQkJPHZhbHVlIGNvbnRlbnQ9ImNvbXB1dGUiPgorCQkJCTxjdmFsIC8+CisJCQkJPGNvbXB1dGU+CisJCQkJCShCVVRUT04yLnZhbHVlICE9ICIiKSA/ICIqIiA6ICIiCisJCQkJPC9jb21wdXRlPgorCQkJPC92YWx1ZT4KKwkJCTxmb3JtYXQgY29udGVudD0iYXJyYXkiPgorCQkJCTxhZT5kYXRlPC9hZT4KKwkJCQk8YWU+b3B0aW9uYWw8L2FlPgorCQkJCTxwcmVzZW50YXRpb24+TU0tREQtWVk8L3ByZXNlbnRhdGlvbj4KKwkJCTwvZm9ybWF0PgorCQk8L2ZpZWxkPgorCQk8c3BhY2VyIHNpZD0idmZkX3NwYWNlciI+CisJCQk8aXRlbWxvY2F0aW9uIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQk8YWUgY29udGVudD0iYXJyYXkiPgorCQkJCQk8YWU+YWJzb2x1dGU8L2FlPgorCQkJCQk8YWU+OTYwPC9hZT4KKwkJCQkJPGFlPjEyNjA8L2FlPgorCQkJCTwvYWU+CisJCQkJPGFlIGNvbnRlbnQ9ImFycmF5Ij4KKwkJCQkJPGFlPmV4dGVudDwvYWU+CisJCQkJCTxhZT4xPC9hZT4KKwkJCQkJPGFlPjE8L2FlPgorCQkJCTwvYWU+CisJCQk8L2l0ZW1sb2NhdGlvbj4KKwkJPC9zcGFjZXI+CisJPC9wYWdlPgorPC9YRkRMPgpkaWZmIC0tZ2l0IGEvZGF0YS9qYXZheC94bWwvY3J5cHRvL2RzaWcvZGVtby5zaWduZWQueG1sIGIvZGF0YS9qYXZheC94bWwvY3J5cHRvL2RzaWcvZGVtby5zaWduZWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkMDE4YTQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL2phdmF4L3htbC9jcnlwdG8vZHNpZy9kZW1vLnNpZ25lZC54bWwKQEAgLTAsMCArMSwxNDQgQEAKKzxFbnRpdGllc0Rlc2NyaXB0b3IgeG1sbnM9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDptZXRhZGF0YSIgTmFtZT0iaHR0cHM6Ly9leGFtcGxlLm9yZy9zYW1sMi1tZXRhZGF0YS54bWwiIHZhbGlkVW50aWw9IjIwMDktMDgtMzFUMDA6MDA6MDBaIiB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6c2hpYm1kPSJ1cm46bWFjZTpzaGliYm9sZXRoOm1ldGFkYXRhOjEuMCIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnNjaGVtYUxvY2F0aW9uPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bWV0YWRhdGEgc2FtbC1zY2hlbWEtbWV0YWRhdGEtMi4wLnhzZCB1cm46bWFjZTpzaGliYm9sZXRoOm1ldGFkYXRhOjEuMCBzaGliYm9sZXRoLW1ldGFkYXRhLTEuMC54c2QgaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyB4bWxkc2lnLWNvcmUtc2NoZW1hLnhzZCI+CisKKzxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorPGRzOlNpZ25lZEluZm8+Cis8ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgorPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgorPGRzOlJlZmVyZW5jZSBVUkk9IiI+Cis8ZHM6VHJhbnNmb3Jtcz4KKzxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPgorPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+Cis8ZWM6SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxuczplYz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSIjZGVmYXVsdCBkcyBzaGlibWQgeG1sIHhzaSIvPgorPC9kczpUcmFuc2Zvcm0+Cis8L2RzOlRyYW5zZm9ybXM+Cis8ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz4KKzxkczpEaWdlc3RWYWx1ZT5jK3B6MnFtTXpDQXNqaHltV1lUOGtEOFRTVkk9PC9kczpEaWdlc3RWYWx1ZT4KKzwvZHM6UmVmZXJlbmNlPgorPC9kczpTaWduZWRJbmZvPgorPGRzOlNpZ25hdHVyZVZhbHVlPnU1VmVoc3o0VlJOWCswRGlmaVdsQjJFaDVac1BiNENSa3NOVExoT2lmSUg0b0ZPYUFyaUNkbEpWREcrY0RxMlAKK3E4M0xoZ21EdXR6WVhVeHFWd0IvWE5TWUxWUVNrd0ZVZ3UyTllvLzBoc0YyVEk0dnNNNUF6NEpTRFVLRiswYWQKK3FYeGorSnowNHpqNHA5MDJwRTQzS3BpZ29KMVd2cUJhRDJqTEFYMEhaT2pWY0pHUlpKZVFESS9Cc1laMGxmNmUKK3FrMVNMQjBYUTZyWkExTzF1aFNhZDc3dmRDNFAwQ1kwdzdETWY2SFpicGo1U3Z4SzdpdTllUEljWVF3ZmxTR2cKK2RtdW5mWjc1VWUyeHY5Vmh1dUpNZmZjd3FyK0toMGdkQ01zRG5LekQzcEs3WlFmaDVLMys2UGhsTWRoQmg2M2oKK2w3ZXBPOUFpdFVDZ1J2TTQ0dWNjS0E9PTwvZHM6U2lnbmF0dXJlVmFsdWU+Cis8ZHM6S2V5SW5mbz48ZHM6S2V5TmFtZT5zaWduaW5nLmV4YW1wbGUub3JnPC9kczpLZXlOYW1lPjxkczpYNTA5RGF0YT48ZHM6WDUwOVN1YmplY3ROYW1lPkNOPXNpZ25pbmcuZXhhbXBsZS5vcmc8L2RzOlg1MDlTdWJqZWN0TmFtZT48ZHM6WDUwOUNlcnRpZmljYXRlPk1JSURBRENDQWVpZ0F3SUJBZ0lKQU8wMVJ2Q2pJT2krTUEwR0NTcUdTSWIzRFFFQkJRVUFNQjR4SERBYUJnTlYKK0JBTVRFM05wWjI1cGJtY3VaWGhoYlhCc1pTNXZjbWN3SGhjTk1Ea3dPREk0TVRZek1URXlXaGNOTVRrd09ESTIKK01UWXpNVEV5V2pBZU1Sd3dHZ1lEVlFRREV4TnphV2R1YVc1bkxtVjRZVzF3YkdVdWIzSm5NSUlCSWpBTkJna3EKK2hraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTZ2c0VvVGJOSm9pNzVmQTNXd0U1WGtETVZBN2NRZ3MKK2FEM2VtM2RmWW9HVU1SSEpiZnRUaGhpVW8xZmhtalZHRFZ2Ry9ZYi9EZTllMG5jUTFxL3FhNy9FSkdrUXFidVkKKzM0Vm1zckxLYmpBYVBNU0RieWpNVm5OakMxNmZieWZWRlJMSEVScUhzZlpWZjQ3SS9OOVdGNytSdlRDcDhuaE8KK2IxaUttMy9YdUFkeGZvZm5OcXlQdWpnWUtHbEYwQUJRUkUvVVhTYXNwb1I3R1UyME1mMmozYVEwSExoRlhLK2oKK0ZxL1E5cUtMM3grMnRlc1BGQ1ZkWXh0WXhGbkxRTUNxM25TSVVLZm5pM0ovZm00VHNqY3dBcy9vZ3IremJRZUgKKzcydVNNWlpjVU1Db0hjTTRWY0t5dnFpOXh6eFJmL05sckhUTE4zUFJVVCs3d1RtM3Vjbis1d0lEQVFBQm8wRXcKK1B6QWVCZ05WSFJFRUZ6QVZnaE56YVdkdWFXNW5MbVY0WVcxd2JHVXViM0puTUIwR0ExVWREZ1FXQkJSNE50L1cKK1B1dGlHdGVDd2NLdk1ERGJYR1pvQWpBTkJna3Foa2lHOXcwQkFRVUZBQU9DQVFFQUFDT3BGTDVQNlhucWlpT1EKKzlqaWJRMDdkYk9qVlJhTW9RcEVSczhYMzBKZW5uVk9pdUVEQU1NWXY2cm54L3RzYzNlY05EaUltZEZNRi9wZ0gKK256clUzRStFcmd5R29pR09weUUrTHJxRnc2RFJ5enhsb0hxcDhZcUlMQTJwN01kaHNhZDd0TXVKWlZpVnB4RysKK1VLK3NMUmtmblBjNW5BcVVXNG1aeTl4bk5jeGR0NXFxRTdFb0pWSllLR0RtNURteHRFZ0RtVTlzVGI0amNHdHIKK05BRWcxYUVRS0NHZ1BtMGVKMkh4a2xYQzFzKzA0Vm81SC9BUmNoU0J4SHEreUxWSnJRdmZFTU55a2UwWmExSm8KK0k3d08vN2c1WXlvSDJRenNNUUEvNlEzV0NjWmo1NHNpMG0xWkhEWHF6UnI5a25yeEE4cXVERUNXWjArTVM3UkwKK0lyVnRSUT09Cis8L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT4gICAgCisKKzxFbnRpdHlEZXNjcmlwdG9yIGVudGl0eUlEPSJodHRwczovL2lkcC5leGFtcGxlLm9yZy9pZHAvc2hpYmJvbGV0aCIgeG1sbnM9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDptZXRhZGF0YSIgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOnNoaWJtZD0idXJuOm1hY2U6c2hpYmJvbGV0aDptZXRhZGF0YToxLjAiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPgorCisgICAgPElEUFNTT0Rlc2NyaXB0b3IgcHJvdG9jb2xTdXBwb3J0RW51bWVyYXRpb249InVybjptYWNlOnNoaWJib2xldGg6MS4wIHVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpwcm90b2NvbCB1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiPgorCisgICAgICAgIDxFeHRlbnNpb25zPgorICAgICAgICAgICAgPHNoaWJtZDpTY29wZSByZWdleHA9ImZhbHNlIiB4bWxuczpzaGlibWQ9InVybjptYWNlOnNoaWJib2xldGg6bWV0YWRhdGE6MS4wIj5leGFtcGxlLm9yZzwvc2hpYm1kOlNjb3BlPgorICAgICAgICA8L0V4dGVuc2lvbnM+CisKKyAgICAgICAgPEtleURlc2NyaXB0b3I+CisgICAgICAgICAgICA8ZHM6S2V5SW5mbz4KKyAgICAgICAgICAgICAgICA8ZHM6WDUwOURhdGE+CisgICAgICAgICAgICAgICAgICAgIDxkczpYNTA5Q2VydGlmaWNhdGU+CitNSUlDNkRDQ0FkQ2dBd0lCQWdJSkFOQTcvR1N5a04wRE1BMEdDU3FHU0liM0RRRUJCUVVBTUJZeEZEQVNCZ05WCitCQU1UQzJWNFlXMXdiR1V1YjNKbk1CNFhEVEE1TURneU9ERTJNamMxTkZvWERURTVNRGd5TmpFMk1qYzFORm93CitGakVVTUJJR0ExVUVBeE1MWlhoaGJYQnNaUzV2Y21jd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3CitnZ0VLQW9JQkFRQzMzYjRoZVI2Wk8vaWc4ays0ZWluMHFsMmhzOGNQWDBpQzhHY3dNNWV3UktjN2NXTHJtaG5nCitRS2pYWjdxVVNQcTJremkzcmxITWswTm5GWml4aFFyaGpnRXcyck1TZmxuOEJxMm8wNnhKQ1V1eGlkTHF5cEluCitzQUlRSXlRR0RUSFpzZVQ2YUVscURsQkI5dmF1dkozYmRDRGFMM0V1OXFCeUNjbFlXYUxqalJ6djF0djNQTU5lCisreGxZdm9BY1ZJQXhZelNQQnRzS2xmeDVubjloSC9sRlhQL0xNejd5aUJuZmwranZkL3N3RXlTWnhBVEFKd2I1Cis0bzBjRzc2Rk1Kck4yZFdIL2FkL0EwVm9BZVBZTnZLWTdzNG1PZktHL0UrMmUxaCthWW1Ed3haZWRzVVhUR2V4CitLbmhwSzNmbmdOR09GRVdFelVMaCtPT1JNUTBQYkRGRkFnTUJBQUdqT1RBM01CWUdBMVVkRVFRUE1BMkNDMlY0CitZVzF3YkdVdWIzSm5NQjBHQTFVZERnUVdCQlNhSzJDb3EzR3BwMmNDNFFjcHNHckx1cTRxS3pBTkJna3Foa2lHCis5dzBCQVFVRkFBT0NBUUVBZ1pqRDhubGNuYjNzRzlGcXVlc04xdFNLZE4zdEkvYjlSczg0SlVFcWx4blgwS0hvCitIeXhwRmNBQjZjZEZmbkFtYzZjMHdTZ1puWFlXK2ppUWRtWEhRR0hoNkdFUm1aYTM4c3dMTThRL2ZucnhxNmhRCitKenh4MXBOV1pnVURMeU01RGVYYklZZGN5SFl6amFpeU1ZWDdheXJqN1dNOWR1akVaSEh3UVo4WC9OVkRtT2w5CitrWVYxNGdwQ3JsdThqYVFIYS9tVGxxcjdDYno2SUk0OVlNNVhsTlRiZ2RwaHgyT056K1A4NE5JMjFrZitCQUpHCituSEJHcXlzU1hROVVyS0oxVUhoWWJWUWdZL1NKTWdHK0ZJRzh6TWpRd0JpZ0VUQ0t5TDU4YVNBTmVHRmNkQ2c0CisxcTI0N1phdXRZWU5iNno4YlNtUkVLNkdpV0hNeGVQVlhXeWtZUT09CisKKyAgICAgICAgICAgICAgICAgICAgPC9kczpYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICAgICAgPC9kczpYNTA5RGF0YT4KKyAgICAgICAgICAgIDwvZHM6S2V5SW5mbz4KKyAgICAgICAgPC9LZXlEZXNjcmlwdG9yPgorICAgICAgICAKKyAgICAgICAgPEFydGlmYWN0UmVzb2x1dGlvblNlcnZpY2UgQmluZGluZz0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4wOmJpbmRpbmdzOlNPQVAtYmluZGluZyIgTG9jYXRpb249Imh0dHBzOi8vaWRwLmV4YW1wbGUub3JnOjg0NDMvaWRwL3Byb2ZpbGUvU0FNTDEvU09BUC9BcnRpZmFjdFJlc29sdXRpb24iIGluZGV4PSIxIi8+CisKKyAgICAgICAgPEFydGlmYWN0UmVzb2x1dGlvblNlcnZpY2UgQmluZGluZz0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmJpbmRpbmdzOlNPQVAiIExvY2F0aW9uPSJodHRwczovL2lkcC5leGFtcGxlLm9yZzo4NDQzL2lkcC9wcm9maWxlL1NBTUwyL1NPQVAvQXJ0aWZhY3RSZXNvbHV0aW9uIiBpbmRleD0iMiIvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgPE5hbWVJREZvcm1hdD51cm46bWFjZTpzaGliYm9sZXRoOjEuMDpuYW1lSWRlbnRpZmllcjwvTmFtZUlERm9ybWF0PgorICAgICAgICA8TmFtZUlERm9ybWF0PnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OnVuc3BlY2lmaWVkPC9OYW1lSURGb3JtYXQ+CisgICAgICAgIDxOYW1lSURGb3JtYXQ+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6dHJhbnNpZW50PC9OYW1lSURGb3JtYXQ+CisKKyAgICAgICAgPFNpbmdsZVNpZ25PblNlcnZpY2UgQmluZGluZz0idXJuOm1hY2U6c2hpYmJvbGV0aDoxLjA6cHJvZmlsZXM6QXV0aG5SZXF1ZXN0IiBMb2NhdGlvbj0iaHR0cHM6Ly9pZHAuZXhhbXBsZS5vcmcvaWRwL3Byb2ZpbGUvU2hpYmJvbGV0aC9TU08iLz4KKyAgICAgICAgCisgICAgICAgIDxTaW5nbGVTaWduT25TZXJ2aWNlIEJpbmRpbmc9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpiaW5kaW5nczpIVFRQLVBPU1QiIExvY2F0aW9uPSJodHRwczovL2lkcC5leGFtcGxlLm9yZy9pZHAvcHJvZmlsZS9TQU1MMi9QT1NUL1NTTyIvPgorCisgICAgICAgIDxTaW5nbGVTaWduT25TZXJ2aWNlIEJpbmRpbmc9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpiaW5kaW5nczpIVFRQLVBPU1QtU2ltcGxlU2lnbiIgTG9jYXRpb249Imh0dHBzOi8vaWRwLmV4YW1wbGUub3JnL2lkcC9wcm9maWxlL1NBTUwyL1BPU1QtU2ltcGxlU2lnbi9TU08iLz4KKyAgICAgICAgCisgICAgICAgIDxTaW5nbGVTaWduT25TZXJ2aWNlIEJpbmRpbmc9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpiaW5kaW5nczpIVFRQLVJlZGlyZWN0IiBMb2NhdGlvbj0iaHR0cHM6Ly9pZHAuZXhhbXBsZS5vcmcvaWRwL3Byb2ZpbGUvU0FNTDIvUmVkaXJlY3QvU1NPIi8+CisgICAgPC9JRFBTU09EZXNjcmlwdG9yPgorCisgICAgPEF0dHJpYnV0ZUF1dGhvcml0eURlc2NyaXB0b3IgcHJvdG9jb2xTdXBwb3J0RW51bWVyYXRpb249InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpwcm90b2NvbCB1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiPgorCisgICAgICAgIDxFeHRlbnNpb25zPgorICAgICAgICAgICAgPHNoaWJtZDpTY29wZSByZWdleHA9ImZhbHNlIiB4bWxuczpzaGlibWQ9InVybjptYWNlOnNoaWJib2xldGg6bWV0YWRhdGE6MS4wIj5leGFtcGxlLm9yZzwvc2hpYm1kOlNjb3BlPgorICAgICAgICA8L0V4dGVuc2lvbnM+CisKKyAgICAgICAgPEtleURlc2NyaXB0b3I+CisgICAgICAgICAgICA8ZHM6S2V5SW5mbz4KKyAgICAgICAgICAgICAgICA8ZHM6WDUwOURhdGE+CisgICAgICAgICAgICAgICAgICAgIDxkczpYNTA5Q2VydGlmaWNhdGU+CitNSUlDNkRDQ0FkQ2dBd0lCQWdJSkFOQTcvR1N5a04wRE1BMEdDU3FHU0liM0RRRUJCUVVBTUJZeEZEQVNCZ05WCitCQU1UQzJWNFlXMXdiR1V1YjNKbk1CNFhEVEE1TURneU9ERTJNamMxTkZvWERURTVNRGd5TmpFMk1qYzFORm93CitGakVVTUJJR0ExVUVBeE1MWlhoaGJYQnNaUzV2Y21jd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3CitnZ0VLQW9JQkFRQzMzYjRoZVI2Wk8vaWc4ays0ZWluMHFsMmhzOGNQWDBpQzhHY3dNNWV3UktjN2NXTHJtaG5nCitRS2pYWjdxVVNQcTJremkzcmxITWswTm5GWml4aFFyaGpnRXcyck1TZmxuOEJxMm8wNnhKQ1V1eGlkTHF5cEluCitzQUlRSXlRR0RUSFpzZVQ2YUVscURsQkI5dmF1dkozYmRDRGFMM0V1OXFCeUNjbFlXYUxqalJ6djF0djNQTU5lCisreGxZdm9BY1ZJQXhZelNQQnRzS2xmeDVubjloSC9sRlhQL0xNejd5aUJuZmwranZkL3N3RXlTWnhBVEFKd2I1Cis0bzBjRzc2Rk1Kck4yZFdIL2FkL0EwVm9BZVBZTnZLWTdzNG1PZktHL0UrMmUxaCthWW1Ed3haZWRzVVhUR2V4CitLbmhwSzNmbmdOR09GRVdFelVMaCtPT1JNUTBQYkRGRkFnTUJBQUdqT1RBM01CWUdBMVVkRVFRUE1BMkNDMlY0CitZVzF3YkdVdWIzSm5NQjBHQTFVZERnUVdCQlNhSzJDb3EzR3BwMmNDNFFjcHNHckx1cTRxS3pBTkJna3Foa2lHCis5dzBCQVFVRkFBT0NBUUVBZ1pqRDhubGNuYjNzRzlGcXVlc04xdFNLZE4zdEkvYjlSczg0SlVFcWx4blgwS0hvCitIeXhwRmNBQjZjZEZmbkFtYzZjMHdTZ1puWFlXK2ppUWRtWEhRR0hoNkdFUm1aYTM4c3dMTThRL2ZucnhxNmhRCitKenh4MXBOV1pnVURMeU01RGVYYklZZGN5SFl6amFpeU1ZWDdheXJqN1dNOWR1akVaSEh3UVo4WC9OVkRtT2w5CitrWVYxNGdwQ3JsdThqYVFIYS9tVGxxcjdDYno2SUk0OVlNNVhsTlRiZ2RwaHgyT056K1A4NE5JMjFrZitCQUpHCituSEJHcXlzU1hROVVyS0oxVUhoWWJWUWdZL1NKTWdHK0ZJRzh6TWpRd0JpZ0VUQ0t5TDU4YVNBTmVHRmNkQ2c0CisxcTI0N1phdXRZWU5iNno4YlNtUkVLNkdpV0hNeGVQVlhXeWtZUT09CisKKyAgICAgICAgICAgICAgICAgICAgPC9kczpYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgICAgICAgICAgPC9kczpYNTA5RGF0YT4KKyAgICAgICAgICAgIDwvZHM6S2V5SW5mbz4KKyAgICAgICAgPC9LZXlEZXNjcmlwdG9yPgorCisgICAgICAgIDxBdHRyaWJ1dGVTZXJ2aWNlIEJpbmRpbmc9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMDpiaW5kaW5nczpTT0FQLWJpbmRpbmciIExvY2F0aW9uPSJodHRwczovL2lkcC5leGFtcGxlLm9yZzo4NDQzL2lkcC9wcm9maWxlL1NBTUwxL1NPQVAvQXR0cmlidXRlUXVlcnkiLz4KKyAgICAgICAgCisgICAgICAgIDxBdHRyaWJ1dGVTZXJ2aWNlIEJpbmRpbmc9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpiaW5kaW5nczpTT0FQIiBMb2NhdGlvbj0iaHR0cHM6Ly9pZHAuZXhhbXBsZS5vcmc6ODQ0My9pZHAvcHJvZmlsZS9TQU1MMi9TT0FQL0F0dHJpYnV0ZVF1ZXJ5Ii8+CisgICAgICAgIAorICAgICAgICA8TmFtZUlERm9ybWF0PnVybjptYWNlOnNoaWJib2xldGg6MS4wOm5hbWVJZGVudGlmaWVyPC9OYW1lSURGb3JtYXQ+CisgICAgICAgIDxOYW1lSURGb3JtYXQ+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6dW5zcGVjaWZpZWQ8L05hbWVJREZvcm1hdD4KKyAgICAgICAgPE5hbWVJREZvcm1hdD51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDp0cmFuc2llbnQ8L05hbWVJREZvcm1hdD4KKyAgICAgICAgCisgICAgPC9BdHRyaWJ1dGVBdXRob3JpdHlEZXNjcmlwdG9yPgorICAgIDxPcmdhbml6YXRpb24+CisgICAgICAgIDxPcmdhbml6YXRpb25OYW1lIHhtbDpsYW5nPSJlbiIgeG1sbnM6eG1sPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiPkV4YW1wbGUgVW5pdmVyc2l0eSBGb288L09yZ2FuaXphdGlvbk5hbWU+CisgICAgICAgIDxPcmdhbml6YXRpb25EaXNwbGF5TmFtZSB4bWw6bGFuZz0iZW4iIHhtbG5zOnhtbD0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIj5FeGFtcGxlIFVuaXZlcnNpdHk8L09yZ2FuaXphdGlvbkRpc3BsYXlOYW1lPgorICAgICAgICA8T3JnYW5pemF0aW9uVVJMIHhtbDpsYW5nPSJlbiIgeG1sbnM6eG1sPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiPmh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvPC9Pcmdhbml6YXRpb25VUkw+CisgICAgPC9Pcmdhbml6YXRpb24+CisgICAgPENvbnRhY3RQZXJzb24gY29udGFjdFR5cGU9InRlY2huaWNhbCI+CisgICAgICAgIDxTdXJOYW1lPldlYm1hc3RlcjwvU3VyTmFtZT4KKyAgICAgICAgPEVtYWlsQWRkcmVzcz53ZWJtYXN0ZXJAZXhhbXBsZS5vcmc8L0VtYWlsQWRkcmVzcz4KKyAgICA8L0NvbnRhY3RQZXJzb24+Cis8L0VudGl0eURlc2NyaXB0b3I+PC9FbnRpdGllc0Rlc2NyaXB0b3I+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9qYXZheC94bWwvY3J5cHRvL2RzaWcvZW52ZWxvcGluZ1NpZ25hdHVyZS54bWwgYi9kYXRhL2phdmF4L3htbC9jcnlwdG8vZHNpZy9lbnZlbG9waW5nU2lnbmF0dXJlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDFjMjY0Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9qYXZheC94bWwvY3J5cHRvL2RzaWcvZW52ZWxvcGluZ1NpZ25hdHVyZS54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUjV2l0aENvbW1lbnRzIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSIjZm9vIj48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+ZUlta2VkcFN2bWVya3c4QnIvVnRWWmZHT1VJPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5TUVJWbmNzY0t0Nm9Mdm5zb2Yrc1VsSFozaEFKWmRCN1hndmdtKzd5aFZpMVpYY2d1bVVNYXc9PTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PEtleVZhbHVlPjxEU0FLZXlWYWx1ZT48UD4vS2FDem80U3lyb203OHozRVE1U2JiQjRzRjdleTgwZXRLSUk4NjRXRjY0QjgxdVJwSDV0OWpRVHhlRXUwSW1ielJNcXpWRFprVkc5Cit4RDduTjFrdUZ3PT08L1A+PFE+bGk3ZHpEYWN1bzY3Smc3bXRxRW0yVFJ1T01VPTwvUT48Rz5aNFJ4c25xYzlFN3BHa25GRkgyeHFhcnlSUEJhUTAxa2hwTWRMUlFuRzU0MUF3dHgvWFBhRjVCcHN5NHBOV01PSENCaU5VME5vZ3BzCitRVzVRdm5sTXBBPT08L0c+PFk+bmxIOTl0QjZqVkFjVng2S2ErREFDeTRxRWh3NkNOa2E4L0R5VXpwWXo0UWhVMmJHQ1NIZC9Lb2MwMnJVVVQ0YjNlRjdGd2YxRkZkMQordms4cU53VWZjZz09PC9ZPjwvRFNBS2V5VmFsdWU+PC9LZXlWYWx1ZT48L0tleUluZm8+PE9iamVjdCBJZD0ib2JqZWN0Ij48QXNzZXJ0aW9uIEFzc2VydGlvbklEPSJmb28iLz48L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL2phdmF4L3htbC9jcnlwdG8vZHNpZy9pbnB1dC54bWwgYi9kYXRhL2phdmF4L3htbC9jcnlwdG8vZHNpZy9pbnB1dC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJhMDc2NwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvamF2YXgveG1sL2NyeXB0by9kc2lnL2lucHV0LnhtbApAQCAtMCwwICsxLDE1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGlldGY6WG1sbGFuZyB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiAKK3htbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPgorICAgPGlldGY6ZTEgeG1sOmxhbmc9IkVOIj4KKyAgICAgIDxpZXRmOmUxMT4KKyAgICAgICAgIDxpZXRmOmUxMTEgLz4KKyAgICAgIDwvaWV0ZjplMTE+CisgICAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgICAgPGlldGY6ZTEyMSAvPgorICAgICAgPC9pZXRmOmUxMj4KKyAgIDwvaWV0ZjplMT4KKyAgIDxpZXRmOmUyID4KKyAgICAgIDxpZXRmOmUyMSAvPgorICAgPC9pZXRmOmUyPgorPC9pZXRmOlhtbGxhbmc+CmRpZmYgLS1naXQgYS9kYXRhL2phdmF4L3htbC9jcnlwdG8vZHNpZy9pbnZhbGlkLXNpZ25hdHVyZS54bWwgYi9kYXRhL2phdmF4L3htbC9jcnlwdG8vZHNpZy9pbnZhbGlkLXNpZ25hdHVyZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIwZjYxYwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvamF2YXgveG1sL2NyeXB0by9kc2lnL2ludmFsaWQtc2lnbmF0dXJlLnhtbApAQCAtMCwwICsxLDMxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgIDxTaWduZWRJbmZvPgorICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiIC8+CisgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIgLz4KKyAgICA8UmVmZXJlbmNlIFVSST0iI29iamVjdCI+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWU+Ny9YVHNIYUJTT25KL2pYRDV2MHpMNlZLWXNrPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgIDwvU2lnbmVkSW5mbz4KKyAgPFNpZ25hdHVyZVZhbHVlPgorICAgIElOVkFMSUROMHc3MU4zRGRHTmhOK2RTelFtNk5KRlVCNXFHS1JwOVE5ODZuVnpNYjh3Q0lWeENRdSt4M3ZNdHEKKyAgICBwNC9SM0tFY1B0RUpTYW9SK3RoR3ErK0dQSWgybVpYeVdKczN4SHk5UDR4bW9UVndsaTcvbDdzOGViRFNtbmJaCisgICAgN3haVTRJeTFCU01aU3hHS25SRytaLzBHSklmVHo4amhINndDZTNsMDNMND0KKyAgPC9TaWduYXR1cmVWYWx1ZT4KKyAgPEtleUluZm8+CisgICAgPEtleVZhbHVlPgorICAgICAgPFJTQUtleVZhbHVlPgorICAgICAgICA8TW9kdWx1cz4KKyAgICAgICAgICBxMDdocHhBNURHRmZ2SkZadWVGbC9MSTg1WHhReHJ2cWdWdWdMMjVWMDkwQTlNcmxMQmc1UG1Bc3hGVGUrRzZhCisgICAgICAgICAgeHZXSlF3WU9WSGovbnVpQ25OTGE5YTd1QXRQRmlUdFcrdjVIM3dsTGFZM3dzNGF0UkJOT1FsWWtJQnAzOHNUZgorICAgICAgICAgIFFCa2s0aThQRVUxR1EyTTBDTElKcTQvMkFrZnYxd3h6U1E5KzhvV2tBcmM9CisgICAgICAgIDwvTW9kdWx1cz4KKyAgICAgICAgPEV4cG9uZW50PgorICAgICAgICAgIEFRQUIKKyAgICAgICAgPC9FeHBvbmVudD4KKyAgICAgIDwvUlNBS2V5VmFsdWU+CisgICAgPC9LZXlWYWx1ZT4KKyAgPC9LZXlJbmZvPgorICA8T2JqZWN0IElkPSJvYmplY3QiPnNvbWUgdGV4dDwvT2JqZWN0PgorPC9TaWduYXR1cmU+CmRpZmYgLS1naXQgYS9kYXRhL2phdmF4L3htbC9jcnlwdG8vZHNpZy9zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTEtdHJ1bmNsZW4tMC1hdHRhY2sueG1sIGIvZGF0YS9qYXZheC94bWwvY3J5cHRvL2RzaWcvc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGExLXRydW5jbGVuLTAtYXR0YWNrLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDA4ZGFlCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9qYXZheC94bWwvY3J5cHRvL2RzaWcvc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGExLXRydW5jbGVuLTAtYXR0YWNrLnhtbApAQCAtMCwwICsxLDE2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgIDxTaWduZWRJbmZvPgorICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiIC8+CisgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiPgorICAgICAgPEhNQUNPdXRwdXRMZW5ndGg+MDwvSE1BQ091dHB1dExlbmd0aD4KKyAgICA8L1NpZ25hdHVyZU1ldGhvZD4KKyAgICA8UmVmZXJlbmNlIFVSST0iI29iamVjdCI+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWU+bno0R1MwTmJIMlNyV2xELzRmWDMxM0NvVHpjPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgIDwvU2lnbmVkSW5mbz4KKyAgPFNpZ25hdHVyZVZhbHVlPgorICA8L1NpZ25hdHVyZVZhbHVlPgorICA8T2JqZWN0IElkPSJvYmplY3QiPnNvbWUgb3RoZXIgdGV4dDwvT2JqZWN0PgorPC9TaWduYXR1cmU+CmRpZmYgLS1naXQgYS9kYXRhL2phdmF4L3htbC9jcnlwdG8vZHNpZy9zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTEtdHJ1bmNsZW4tOC1hdHRhY2sueG1sIGIvZGF0YS9qYXZheC94bWwvY3J5cHRvL2RzaWcvc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGExLXRydW5jbGVuLTgtYXR0YWNrLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZmUwYTBkCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9qYXZheC94bWwvY3J5cHRvL2RzaWcvc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGExLXRydW5jbGVuLTgtYXR0YWNrLnhtbApAQCAtMCwwICsxLDE3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgIDxTaWduZWRJbmZvPgorICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiIC8+CisgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiPgorICAgICAgPEhNQUNPdXRwdXRMZW5ndGg+ODwvSE1BQ091dHB1dExlbmd0aD4KKyAgICA8L1NpZ25hdHVyZU1ldGhvZD4KKyAgICA8UmVmZXJlbmNlIFVSST0iI29iamVjdCI+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWU+bno0R1MwTmJIMlNyV2xELzRmWDMxM0NvVHpjPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgIDwvU2lnbmVkSW5mbz4KKyAgPFNpZ25hdHVyZVZhbHVlPgorICAgIFF3PT0KKyAgPC9TaWduYXR1cmVWYWx1ZT4KKyAgPE9iamVjdCBJZD0ib2JqZWN0Ij5zb21lIG90aGVyIHRleHQ8L09iamVjdD4KKzwvU2lnbmF0dXJlPgpkaWZmIC0tZ2l0IGEvZGF0YS9qYXZheC94bWwvY3J5cHRvL2RzaWcvc2lnbmF0dXJlLWV4dGVybmFsLWMxNG4teG1sYXRycy54bWwgYi9kYXRhL2phdmF4L3htbC9jcnlwdG8vZHNpZy9zaWduYXR1cmUtZXh0ZXJuYWwtYzE0bi14bWxhdHJzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWE5OTc3Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9qYXZheC94bWwvY3J5cHRvL2RzaWcvc2lnbmF0dXJlLWV4dGVybmFsLWMxNG4teG1sYXRycy54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPmc0R2ExTzYxUWk3Q09FdFVmMThqZ2lKb0dCRT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+bk9BSmZuWVdyUE5yeHQwb29nMzlBR3dhMitNPTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9qYXZheC94bWwvY3J5cHRvL2RzaWcvc2lnbmF0dXJlMS54bWwgYi9kYXRhL2phdmF4L3htbC9jcnlwdG8vZHNpZy9zaWduYXR1cmUxLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGZkYTdiCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9qYXZheC94bWwvY3J5cHRvL2RzaWcvc2lnbmF0dXJlMS54bWwKQEAgLTAsMCArMSw0MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICA8U2lnbmVkSW5mbz4KKyAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPgorICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiIC8+CisgICAgPFJlZmVyZW5jZSBVUkk9IiNvYmplY3QiPgorICAgICAgPFRyYW5zZm9ybXM+CisgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14c2x0LTE5OTkxMTE2Ij4KKwkgIDx4c2w6c3R5bGVzaGVldCB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSIgeG1sbnM6eHNsdGM9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94YWxhbi94c2x0YyIgZXh0ZW5zaW9uLWVsZW1lbnQtcHJlZml4ZXM9InhzbHRjIiB2ZXJzaW9uPSIxLjAiPgorICAJICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Ii8iPgorICAgIAkgICAgICA8eHNsdGM6b3V0cHV0IGZpbGU9ImRvYy54bWwiPgorICAgICAgCQk8eHNsOnRleHQ+VGhpcyBlbmRzIHVwIGluIHRoZSBmaWxlICdkb2MueG1sJzwveHNsOnRleHQ+CisgICAgICAgICAgICAgIDwveHNsdGM6b3V0cHV0PgorICAgICAgICAgICAgPC94c2w6dGVtcGxhdGU+CisgICAgICAgICAgPC94c2w6c3R5bGVzaGVldD4KKwk8L1RyYW5zZm9ybT4KKyAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZT43L1hUc0hhQlNPbkovalhENXYwekw2VktZc2s9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgorICA8U2lnbmF0dXJlVmFsdWU+CisgICAgb3YzSE9vUE4wdzcxTjNEZEdOaE4rZFN6UW02TkpGVUI1cUdLUnA5UTk4Nm5Wek1iOHdDSVZ4Q1F1K3gzdk10cQorICAgIHA0L1IzS0VjUHRFSlNhb1IrdGhHcSsrR1BJaDJtWlh5V0pzM3hIeTlQNHhtb1RWd2xpNy9sN3M4ZWJEU21uYloKKyAgICA3eFpVNEl5MUJTTVpTeEdLblJHK1ovMEdKSWZUejhqaEg2d0NlM2wwM0w0PQorICA8L1NpZ25hdHVyZVZhbHVlPgorICA8S2V5SW5mbz4KKyAgICA8S2V5VmFsdWU+CisgICAgICA8UlNBS2V5VmFsdWU+CisgICAgICAgIDxNb2R1bHVzPgorICAgICAgICAgIHEwN2hweEE1REdGZnZKRlp1ZUZsL0xJODVYeFF4cnZxZ1Z1Z0wyNVYwOTBBOU1ybExCZzVQbUFzeEZUZStHNmEKKyAgICAgICAgICB4dldKUXdZT1ZIai9udWlDbk5MYTlhN3VBdFBGaVR0Vyt2NUgzd2xMYVkzd3M0YXRSQk5PUWxZa0lCcDM4c1RmCisgICAgICAgICAgUUJrazRpOFBFVTFHUTJNMENMSUpxNC8yQWtmdjF3eHpTUTkrOG9Xa0FyYz0KKyAgICAgICAgPC9Nb2R1bHVzPgorICAgICAgICA8RXhwb25lbnQ+CisgICAgICAgICAgQVFBQgorICAgICAgICA8L0V4cG9uZW50PgorICAgICAgPC9SU0FLZXlWYWx1ZT4KKyAgICA8L0tleVZhbHVlPgorICA8L0tleUluZm8+CisgIDxPYmplY3QgSWQ9Im9iamVjdCI+c29tZSB0ZXh0PC9PYmplY3Q+Cis8L1NpZ25hdHVyZT4KZGlmZiAtLWdpdCBhL2RhdGEvamF2YXgveG1sL2NyeXB0by9kc2lnL3NpZ25hdHVyZTIueG1sIGIvZGF0YS9qYXZheC94bWwvY3J5cHRvL2RzaWcvc2lnbmF0dXJlMi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRlNzU1YwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvamF2YXgveG1sL2NyeXB0by9kc2lnL3NpZ25hdHVyZTIueG1sCkBAIC0wLDAgKzEsNDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgPFNpZ25lZEluZm8+CisgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIgLz4KKyAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIiAvPgorICAgIDxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij4KKyAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHNsdC0xOTk5MTExNiI+CisJICA8eHNsOnN0eWxlc2hlZXQgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iIHhtbG5zOnJlZGlyZWN0PSJodHRwOi8veG1sLmFwYWNoZS5vcmcveGFsYW4vcmVkaXJlY3QiIGV4dGVuc2lvbi1lbGVtZW50LXByZWZpeGVzPSJyZWRpcmVjdCIgdmVyc2lvbj0iMS4wIj4KKyAgCSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSIvIj4KKyAgICAJICAgICAgPHJlZGlyZWN0OndyaXRlIGZpbGU9ImRvYy54bWwiPgorICAgICAgCSAgICAgICAgPHhzbDp0ZXh0PlRoaXMgZW5kcyB1cCBpbiB0aGUgZmlsZSAnZG9jLnhtbCc8L3hzbDp0ZXh0PgorICAgIAkgICAgICA8L3JlZGlyZWN0OndyaXRlPgorICAgICAgICAgICAgPC94c2w6dGVtcGxhdGU+CisgICAgICAgICAgPC94c2w6c3R5bGVzaGVldD4KKwk8L1RyYW5zZm9ybT4KKyAgICAgIDwvVHJhbnNmb3Jtcz4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZT43L1hUc0hhQlNPbkovalhENXYwekw2VktZc2s9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgorICA8U2lnbmF0dXJlVmFsdWU+CisgICAgb3YzSE9vUE4wdzcxTjNEZEdOaE4rZFN6UW02TkpGVUI1cUdLUnA5UTk4Nm5Wek1iOHdDSVZ4Q1F1K3gzdk10cQorICAgIHA0L1IzS0VjUHRFSlNhb1IrdGhHcSsrR1BJaDJtWlh5V0pzM3hIeTlQNHhtb1RWd2xpNy9sN3M4ZWJEU21uYloKKyAgICA3eFpVNEl5MUJTTVpTeEdLblJHK1ovMEdKSWZUejhqaEg2d0NlM2wwM0w0PQorICA8L1NpZ25hdHVyZVZhbHVlPgorICA8S2V5SW5mbz4KKyAgICA8S2V5VmFsdWU+CisgICAgICA8UlNBS2V5VmFsdWU+CisgICAgICAgIDxNb2R1bHVzPgorICAgICAgICAgIHEwN2hweEE1REdGZnZKRlp1ZUZsL0xJODVYeFF4cnZxZ1Z1Z0wyNVYwOTBBOU1ybExCZzVQbUFzeEZUZStHNmEKKyAgICAgICAgICB4dldKUXdZT1ZIai9udWlDbk5MYTlhN3VBdFBGaVR0Vyt2NUgzd2xMYVkzd3M0YXRSQk5PUWxZa0lCcDM4c1RmCisgICAgICAgICAgUUJrazRpOFBFVTFHUTJNMENMSUpxNC8yQWtmdjF3eHpTUTkrOG9Xa0FyYz0KKyAgICAgICAgPC9Nb2R1bHVzPgorICAgICAgICA8RXhwb25lbnQ+CisgICAgICAgICAgQVFBQgorICAgICAgICA8L0V4cG9uZW50PgorICAgICAgPC9SU0FLZXlWYWx1ZT4KKyAgICA8L0tleVZhbHVlPgorICA8L0tleUluZm8+CisgIDxPYmplY3QgSWQ9Im9iamVjdCI+c29tZSB0ZXh0PC9PYmplY3Q+Cis8L1NpZ25hdHVyZT4KZGlmZiAtLWdpdCBhL2RhdGEvamF2YXgveG1sL2NyeXB0by9kc2lnL3NpZ25hdHVyZTMueG1sIGIvZGF0YS9qYXZheC94bWwvY3J5cHRvL2RzaWcvc2lnbmF0dXJlMy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I4MDA2NQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvamF2YXgveG1sL2NyeXB0by9kc2lnL3NpZ25hdHVyZTMueG1sCkBAIC0wLDAgKzEsNDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgPFNpZ25lZEluZm8+CisgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIgLz4KKyAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIiAvPgorICAgIDxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij4KKyAgICAgIDxUcmFuc2Zvcm1zPgorICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHNsdC0xOTk5MTExNiI+CisJICA8eHNsOnN0eWxlc2hlZXQgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iIHhtbG5zOmZpbGU9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy94c2x0L2phdmEvamF2YS5pby5GaWxlIiBleGNsdWRlLXJlc3VsdC1wcmVmaXhlcz0iZmlsZSIgdmVyc2lvbj0iMS4wIj4KKyAgCSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSIvIj4KKyAgICAgICAJICAgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJmaWxlT2JqZWN0IiBzZWxlY3Q9ImZpbGU6bmV3KCZhcG9zO2RvYy54bWwmYXBvczspIi8+CisgICAgICAgICAgICAgIDx4c2w6dmFyaWFibGUgbmFtZT0icHduZWQiIHNlbGVjdD0iZmlsZTpjcmVhdGVOZXdGaWxlKCRmaWxlT2JqZWN0KSIvPgorICAgICAgICAgICAgICBSZXN1bHQ6IDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIkcHduZWQiLz4KKyAgICAgICAgICAgIDwveHNsOnRlbXBsYXRlPgorICAgICAgICAgIDwveHNsOnN0eWxlc2hlZXQ+CisJPC9UcmFuc2Zvcm0+CisgICAgICA8L1RyYW5zZm9ybXM+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWU+Ny9YVHNIYUJTT25KL2pYRDV2MHpMNlZLWXNrPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgIDwvU2lnbmVkSW5mbz4KKyAgPFNpZ25hdHVyZVZhbHVlPgorICAgIG92M0hPb1BOMHc3MU4zRGRHTmhOK2RTelFtNk5KRlVCNXFHS1JwOVE5ODZuVnpNYjh3Q0lWeENRdSt4M3ZNdHEKKyAgICBwNC9SM0tFY1B0RUpTYW9SK3RoR3ErK0dQSWgybVpYeVdKczN4SHk5UDR4bW9UVndsaTcvbDdzOGViRFNtbmJaCisgICAgN3haVTRJeTFCU01aU3hHS25SRytaLzBHSklmVHo4amhINndDZTNsMDNMND0KKyAgPC9TaWduYXR1cmVWYWx1ZT4KKyAgPEtleUluZm8+CisgICAgPEtleVZhbHVlPgorICAgICAgPFJTQUtleVZhbHVlPgorICAgICAgICA8TW9kdWx1cz4KKyAgICAgICAgICBxMDdocHhBNURHRmZ2SkZadWVGbC9MSTg1WHhReHJ2cWdWdWdMMjVWMDkwQTlNcmxMQmc1UG1Bc3hGVGUrRzZhCisgICAgICAgICAgeHZXSlF3WU9WSGovbnVpQ25OTGE5YTd1QXRQRmlUdFcrdjVIM3dsTGFZM3dzNGF0UkJOT1FsWWtJQnAzOHNUZgorICAgICAgICAgIFFCa2s0aThQRVUxR1EyTTBDTElKcTQvMkFrZnYxd3h6U1E5KzhvV2tBcmM9CisgICAgICAgIDwvTW9kdWx1cz4KKyAgICAgICAgPEV4cG9uZW50PgorICAgICAgICAgIEFRQUIKKyAgICAgICAgPC9FeHBvbmVudD4KKyAgICAgIDwvUlNBS2V5VmFsdWU+CisgICAgPC9LZXlWYWx1ZT4KKyAgPC9LZXlJbmZvPgorICA8T2JqZWN0IElkPSJvYmplY3QiPnNvbWUgdGV4dDwvT2JqZWN0PgorPC9TaWduYXR1cmU+CmRpZmYgLS1naXQgYS9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vMzFfYzE0bi1jb21tZW50cy54bWwgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vMzFfYzE0bi1jb21tZW50cy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk4ZDE2OAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbi8zMV9jMTRuLWNvbW1lbnRzLnhtbApAQCAtMCwwICsxLDYgQEAKKzw/eG1sLXN0eWxlc2hlZXQgaHJlZj0iZG9jLnhzbCIKKyAgIHR5cGU9InRleHQveHNsIiAgID8+Cis8ZG9jPkhlbGxvLCB3b3JsZCE8IS0tIENvbW1lbnQgMSAtLT48L2RvYz4KKzw/cGktd2l0aG91dC1kYXRhPz4KKzwhLS0gQ29tbWVudCAyIC0tPgorPCEtLSBDb21tZW50IDMgLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luLzMxX2MxNG4ueG1sIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luLzMxX2MxNG4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmOWE5NzcKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vMzFfYzE0bi54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbC1zdHlsZXNoZWV0IGhyZWY9ImRvYy54c2wiCisgICB0eXBlPSJ0ZXh0L3hzbCIgICA/PgorPGRvYz5IZWxsbywgd29ybGQhPC9kb2M+Cis8P3BpLXdpdGhvdXQtZGF0YT8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luLzMxX2lucHV0LnhtbCBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbi8zMV9pbnB1dC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWEwYjc2OAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbi8zMV9pbnB1dC54bWwKQEAgLTAsMCArMSwxNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+DQorDQorPD94bWwtc3R5bGVzaGVldCAgIGhyZWY9ImRvYy54c2wiDQorICAgdHlwZT0idGV4dC94c2wiICAgPz4NCisNCis8IURPQ1RZUEUgZG9jIFNZU1RFTSAiZG9jLmR0ZCI+DQorDQorPGRvYz5IZWxsbywgd29ybGQhPCEtLSBDb21tZW50IDEgLS0+PC9kb2M+DQorDQorPD9waS13aXRob3V0LWRhdGEgICAgID8+DQorDQorPCEtLSBDb21tZW50IDIgLS0+DQorDQorPCEtLSBDb21tZW50IDMgLS0+DQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luLzMyX2MxNG4ueG1sIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luLzMyX2MxNG4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhZmExNWMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vMzJfYzE0bi54bWwKQEAgLTAsMCArMSwxMSBAQAorPGRvYz4KKyAgIDxjbGVhbj4gICA8L2NsZWFuPgorICAgPGRpcnR5PiAgIEEgICBCICAgPC9kaXJ0eT4KKyAgIDxtaXhlZD4KKyAgICAgIEEKKyAgICAgIDxjbGVhbj4gICA8L2NsZWFuPgorICAgICAgQgorICAgICAgPGRpcnR5PiAgIEEgICBCICAgPC9kaXJ0eT4KKyAgICAgIEMKKyAgIDwvbWl4ZWQ+Cis8L2RvYz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vMzJfaW5wdXQueG1sIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luLzMyX2lucHV0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWVlNDBiCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luLzMyX2lucHV0LnhtbApAQCAtMCwwICsxLDExIEBACis8ZG9jPg0KKyAgIDxjbGVhbj4gICA8L2NsZWFuPg0KKyAgIDxkaXJ0eT4gICBBICAgQiAgIDwvZGlydHk+DQorICAgPG1peGVkPg0KKyAgICAgIEENCisgICAgICA8Y2xlYW4+ICAgPC9jbGVhbj4NCisgICAgICBCDQorICAgICAgPGRpcnR5PiAgIEEgICBCICAgPC9kaXJ0eT4NCisgICAgICBDDQorICAgPC9taXhlZD4NCis8L2RvYz4NCmRpZmYgLS1naXQgYS9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vMzNfYzE0bi54bWwgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vMzNfYzE0bi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY3Njg2MQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbi8zM19jMTRuLnhtbApAQCAtMCwwICsxLDE0IEBACis8ZG9jPgorICAgPGUxPjwvZTE+CisgICA8ZTI+PC9lMj4KKyAgIDxlMyBpZD0iZWxlbTMiIG5hbWU9ImVsZW0zIj48L2UzPgorICAgPGU0IGlkPSJlbGVtNCIgbmFtZT0iZWxlbTQiPjwvZTQ+CisgICA8ZTUgeG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZyIgeG1sbnM6YT0iaHR0cDovL3d3dy53My5vcmciIHhtbG5zOmI9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIGF0dHI9IkknbSIgYXR0cjI9ImFsbCIgYjphdHRyPSJzb3J0ZWQiIGE6YXR0cj0ib3V0Ij48L2U1PgorICAgPGU2IHhtbG5zOmE9Imh0dHA6Ly93d3cudzMub3JnIj4KKyAgICAgICA8ZTcgeG1sbnM9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPgorICAgICAgICAgICA8ZTggeG1sbnM9IiI+CisgICAgICAgICAgICAgICA8ZTkgeG1sbnM6YT0iaHR0cDovL3d3dy5pZXRmLm9yZyIgYXR0cj0iZGVmYXVsdCI+PC9lOT4KKyAgICAgICAgICAgPC9lOD4KKyAgICAgICA8L2U3PgorICAgPC9lNj4KKzwvZG9jPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbi8zM19pbnB1dC54bWwgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vMzNfaW5wdXQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlZjNkNjkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vMzNfaW5wdXQueG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBkb2MgWzwhQVRUTElTVCBlOSBhdHRyIENEQVRBICJkZWZhdWx0Ij5dPg0KKzxkb2M+DQorICAgPGUxICAgLz4NCisgICA8ZTIgICA+PC9lMj4NCisgICA8ZTMgICAgbmFtZSA9ICJlbGVtMyIgICBpZD0iZWxlbTMiICAgIC8+DQorICAgPGU0ICAgIG5hbWU9ImVsZW00IiAgIGlkPSJlbGVtNCIgICAgPjwvZTQ+DQorICAgPGU1IGE6YXR0cj0ib3V0IiBiOmF0dHI9InNvcnRlZCIgYXR0cjI9ImFsbCIgYXR0cj0iSSdtIg0KKyAgICAgICB4bWxuczpiPSJodHRwOi8vd3d3LmlldGYub3JnIg0KKyAgICAgICB4bWxuczphPSJodHRwOi8vd3d3LnczLm9yZyINCisgICAgICAgeG1sbnM9Imh0dHA6Ly9leGFtcGxlLm9yZyIvPg0KKyAgIDxlNiB4bWxucz0iIiB4bWxuczphPSJodHRwOi8vd3d3LnczLm9yZyI+DQorICAgICAgIDxlNyB4bWxucz0iaHR0cDovL3d3dy5pZXRmLm9yZyI+DQorICAgICAgICAgICA8ZTggeG1sbnM9IiIgeG1sbnM6YT0iaHR0cDovL3d3dy53My5vcmciPg0KKyAgICAgICAgICAgICAgIDxlOSB4bWxucz0iIiB4bWxuczphPSJodHRwOi8vd3d3LmlldGYub3JnIi8+DQorICAgICAgICAgICA8L2U4Pg0KKyAgICAgICA8L2U3Pg0KKyAgIDwvZTY+DQorPC9kb2M+DQorDQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luLzM0X2MxNG4ueG1sIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luLzM0X2MxNG4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0M2QwZTYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vMzRfYzE0bi54bWwKQEAgLTAsMCArMSwxMCBAQAorPGRvYz4KKyAgIDx0ZXh0PkZpcnN0IGxpbmUmI3hEOworU2Vjb25kIGxpbmU8L3RleHQ+CisgICA8dmFsdWU+MjwvdmFsdWU+CisgICA8Y29tcHV0ZT52YWx1ZSZndDsiMCIgJmFtcDsmYW1wOyB2YWx1ZSZsdDsiMTAiID8idmFsaWQiOiJlcnJvciI8L2NvbXB1dGU+CisgICA8Y29tcHV0ZSBleHByPSJ2YWx1ZT4mcXVvdDswJnF1b3Q7ICZhbXA7JmFtcDsgdmFsdWUmbHQ7JnF1b3Q7MTAmcXVvdDsgPyZxdW90O3ZhbGlkJnF1b3Q7OiZxdW90O2Vycm9yJnF1b3Q7Ij52YWxpZDwvY29tcHV0ZT4KKyAgIDxub3JtIGF0dHI9IiAnICAgICYjeEQ7JiN4QTsmI3g5OyAgICcgIj48L25vcm0+CisgICA8bm9ybU5hbWVzIGF0dHI9IkEgJiN4RDsmI3hBOyYjeDk7IEIiPjwvbm9ybU5hbWVzPgorICAgPG5vcm1JZCBpZD0iJyAmI3hEOyYjeEE7JiN4OTsgJyI+PC9ub3JtSWQ+Cis8L2RvYz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vMzRfYzE0bl92YWxpZGF0aW5nUGFyc2VyLnhtbCBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbi8zNF9jMTRuX3ZhbGlkYXRpbmdQYXJzZXIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MTliNTEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vMzRfYzE0bl92YWxpZGF0aW5nUGFyc2VyLnhtbApAQCAtMCwwICsxLDkgQEAKKzxkb2M+CisgICA8dGV4dD5GaXJzdCBsaW5lJiN4RDsKK1NlY29uZCBsaW5lPC90ZXh0PgorICAgPHZhbHVlPjI8L3ZhbHVlPgorICAgPGNvbXB1dGU+dmFsdWUmZ3Q7IjAiICZhbXA7JmFtcDsgdmFsdWUmbHQ7IjEwIiA/InZhbGlkIjoiZXJyb3IiPC9jb21wdXRlPgorICAgPGNvbXB1dGUgZXhwcj0idmFsdWU+JnF1b3Q7MCZxdW90OyAmYW1wOyZhbXA7IHZhbHVlJmx0OyZxdW90OzEwJnF1b3Q7ID8mcXVvdDt2YWxpZCZxdW90OzomcXVvdDtlcnJvciZxdW90OyI+dmFsaWQ8L2NvbXB1dGU+CisgICA8bm9ybSBhdHRyPSIgJyAgICAmI3hEOyYjeEE7JiN4OTsgICAnICI+PC9ub3JtPgorICAgPG5vcm1OYW1lcyBhdHRyPSJBICYjeEQ7JiN4QTsmI3g5OyBCIj48L25vcm1OYW1lcz4KKzwvZG9jPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbi8zNF9pbnB1dC54bWwgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vMzRfaW5wdXQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNDFiMDgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vMzRfaW5wdXQueG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBkb2MgWw0KKzwhQVRUTElTVCBub3JtSWQgaWQgSUQgI0lNUExJRUQ+DQorPCFBVFRMSVNUIG5vcm1OYW1lcyBhdHRyIE5NVE9LRU5TICNJTVBMSUVEPg0KK10+DQorPGRvYz4NCisgICA8dGV4dD5GaXJzdCBsaW5lJiN4MGQ7JiMxMDtTZWNvbmQgbGluZTwvdGV4dD4NCisgICA8dmFsdWU+JiN4MzI7PC92YWx1ZT4NCisgICA8Y29tcHV0ZT48IVtDREFUQVt2YWx1ZT4iMCIgJiYgdmFsdWU8IjEwIiA/InZhbGlkIjoiZXJyb3IiXV0+PC9jb21wdXRlPg0KKyAgIDxjb21wdXRlIGV4cHI9J3ZhbHVlPiIwIiAmYW1wOyZhbXA7IHZhbHVlJmx0OyIxMCIgPyJ2YWxpZCI6ImVycm9yIic+dmFsaWQ8L2NvbXB1dGU+DQorICAgPG5vcm0gYXR0cj0nICZhcG9zOyAgICYjeDIwOyYjMTM7JiN4YTsmIzk7ICAgJmFwb3M7ICcvPg0KKyAgIDxub3JtTmFtZXMgYXR0cj0nICAgQSAgICYjeDIwOyYjMTM7JiN4YTsmIzk7ICAgQiAgICcvPg0KKyAgIDxub3JtSWQgaWQ9JyAmYXBvczsgICAmI3gyMDsmIzEzOyYjeGE7JiM5OyAgICZhcG9zOyAnLz4NCis8L2RvYz4NCisNCmRpZmYgLS1naXQgYS9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vMzRfaW5wdXRfdmFsaWRhdGluZ1BhcnNlci54bWwgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vMzRfaW5wdXRfdmFsaWRhdGluZ1BhcnNlci54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU4YTk3OQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbi8zNF9pbnB1dF92YWxpZGF0aW5nUGFyc2VyLnhtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgZG9jIFsNCis8IUFUVExJU1Qgbm9ybUlkIGlkIElEICNJTVBMSUVEPg0KKzwhQVRUTElTVCBub3JtTmFtZXMgYXR0ciBOTVRPS0VOUyAjSU1QTElFRD4NCitdPg0KKzxkb2M+DQorICAgPHRleHQ+Rmlyc3QgbGluZSYjeDBkOyYjMTA7U2Vjb25kIGxpbmU8L3RleHQ+DQorICAgPHZhbHVlPiYjeDMyOzwvdmFsdWU+DQorICAgPGNvbXB1dGU+PCFbQ0RBVEFbdmFsdWU+IjAiICYmIHZhbHVlPCIxMCIgPyJ2YWxpZCI6ImVycm9yIl1dPjwvY29tcHV0ZT4NCisgICA8Y29tcHV0ZSBleHByPSd2YWx1ZT4iMCIgJmFtcDsmYW1wOyB2YWx1ZSZsdDsiMTAiID8idmFsaWQiOiJlcnJvciInPnZhbGlkPC9jb21wdXRlPg0KKyAgIDxub3JtIGF0dHI9JyAmYXBvczsgICAmI3gyMDsmIzEzOyYjeGE7JiM5OyAgICZhcG9zOyAnLz4NCisgICA8bm9ybU5hbWVzIGF0dHI9JyAgIEEgICAmI3gyMDsmIzEzOyYjeGE7JiM5OyAgIEIgICAnLz4NCis8L2RvYz4NCisNCmRpZmYgLS1naXQgYS9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vMzRfdmFsaWRhdGluZ1BhcnNlci50eHQgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vMzRfdmFsaWRhdGluZ1BhcnNlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjU4OWVmMgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbi8zNF92YWxpZGF0aW5nUGFyc2VyLnR4dApAQCAtMCwwICsxLDUgQEAKK2h0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUFIteG1sLWMxNG4tMjAwMTAxMTkNCisNCitzdGF0ZXMgdGhhdDoNCisNCitOb3RlOiBUaGUgbGFzdCBlbGVtZW50LCBub3JtSWQsIGlzIHdlbGwtZm9ybWVkIGJ1dCB2aW9sYXRlcyBhIHZhbGlkaXR5IGNvbnN0cmFpbnQgZm9yIGF0dHJpYnV0ZXMgb2YgdHlwZSBJRC4gRm9yIHRlc3RpbmcgY2Fub25pY2FsIFhNTCBpbXBsZW1lbnRhdGlvbnMgYmFzZWQgb24gdmFsaWRhdGluZyBwcm9jZXNzb3JzLCByZW1vdmUgdGhlIGxpbmUgY29udGFpbmluZyB0aGlzIGVsZW1lbnQgZnJvbSB0aGUgaW5wdXQgYW5kIGNhbm9uaWNhbCBmb3JtLiBJbiBnZW5lcmFsLCBYTUwgY29uc3VtZXJzIHNob3VsZCBiZSBkaXNjb3VyYWdlZCBmcm9tIHVzaW5nIHRoaXMgZmVhdHVyZSBvZiBYTUwuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luLzM1X2MxNG4ueG1sIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luLzM1X2MxNG4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyMzJlNzQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vMzVfYzE0bi54bWwKQEAgLTAsMCArMSwzIEBACis8ZG9jIGF0dHJFeHRFbnQ9ImVudEV4dCI+CisgICBIZWxsbywgd29ybGQhCis8L2RvYz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vMzVfaW5wdXQueG1sIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luLzM1X2lucHV0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWM3MWExCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luLzM1X2lucHV0LnhtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgZG9jIFsNCis8IUFUVExJU1QgZG9jIGF0dHJFeHRFbnQgRU5USVRZICNJTVBMSUVEPg0KKzwhRU5USVRZIGVudDEgIkhlbGxvIj4NCis8IUVOVElUWSBlbnQyIFNZU1RFTSAid29ybGQudHh0Ij4NCis8IUVOVElUWSBlbnRFeHQgU1lTVEVNICJlYXJ0aC5naWYiIE5EQVRBIGdpZj4NCis8IU5PVEFUSU9OIGdpZiBTWVNURU0gInZpZXdnaWYuZXhlIj4NCitdPg0KKzxkb2MgYXR0ckV4dEVudD0iZW50RXh0Ij4NCisgICAmZW50MTssICZlbnQyOyENCis8L2RvYz4NCisNCis8IS0tIExldCB3b3JsZC50eHQgY29udGFpbiAid29ybGQiIChleGNsdWRpbmcgdGhlIHF1b3RlcykgLS0+DQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luLzM2X2MxNG4ueG1sIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luLzM2X2MxNG4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiZTM4ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vMzZfYzE0bi54bWwKQEAgLTAsMCArMSBAQAorPGRvYz7CqTwvZG9jPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbi8zNl9pbnB1dC54bWwgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vMzZfaW5wdXQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlMWI2OGQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vMzZfaW5wdXQueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pg0KKzxkb2M+JiMxNjk7PC9kb2M+DQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luLzM3X2MxNG4ueG1sIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luLzM3X2MxNG4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhOTZjYzQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vMzdfYzE0bi54bWwKQEAgLTAsMCArMSBAQAorPGUxIHhtbG5zPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj48ZTMgeG1sbnM9IiIgaWQ9IkUzIiB4bWw6c3BhY2U9InByZXNlcnZlIj48L2UzPjwvZTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luLzM3X2lucHV0LnhtbCBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbi8zN19pbnB1dC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQyMGYxMgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbi8zN19pbnB1dC54bWwKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGRvYyBbDQorPCFBVFRMSVNUIGUyIHhtbDpzcGFjZSAoZGVmYXVsdHxwcmVzZXJ2ZSkgJ3ByZXNlcnZlJz4NCis8IUFUVExJU1QgZTMgaWQgSUQgI0lNUExJRUQ+DQorXT4NCis8ZG9jIHhtbG5zPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4NCisgICA8ZTE+DQorICAgICAgPGUyIHhtbG5zPSIiPg0KKyAgICAgICAgIDxlMyBpZD0iRTMiLz4NCisgICAgICA8L2UyPg0KKyAgIDwvZTE+DQorPC9kb2M+DQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luLzM3X3N1YnNldC54cGF0aCBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbi8zN19zdWJzZXQueHBhdGgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk5NDBhNwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbi8zN19zdWJzZXQueHBhdGgKQEAgLTAsMCArMSw4IEBACis8IS0tIEV2YWx1YXRlIHdpdGggZGVjbGFyYXRpb24geG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgLS0+DQorDQorKC8vLiB8IC8vQCogfCAvL25hbWVzcGFjZTo6KikNCitbDQorICAgc2VsZjo6aWV0ZjplMSBvciAocGFyZW50OjppZXRmOmUxIGFuZCBub3Qoc2VsZjo6dGV4dCgpIG9yIHNlbGY6OmUyKSkNCisgICBvcg0KKyAgIGNvdW50KGlkKCJFMyIpfGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkgPSBjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpDQorXQ0KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbi9kb2MuZHRkIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luL2RvYy5kdGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzUyMzI3NAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbi9kb2MuZHRkCkBAIC0wLDAgKzEgQEAKKzwhRUxFTUVOVCBET0MgKCNQQ0RBVEEpPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbi9mb28ueG1sIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luL2Zvby54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJmZmIzZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbi9mb28ueG1sCkBAIC0wLDAgKzEsNCBAQAorPD94bWwtc3R5bGVzaGVldCBocmVmPSJkb2MueHNsIg0KKyAgIHR5cGU9InRleHQveHNsIiAgID8+DQorPGRvYz5IZWxsbywgd29ybGQhPC9kb2M+DQorPD9waS13aXRob3V0LWRhdGE/Pg0KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbi9tZDVzdW0udHh0IGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luL21kNXN1bS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFmYmY3NQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbi9tZDVzdW0udHh0CkBAIC0wLDAgKzEsOSBAQAorNjk3MDU0NmIwMWYwYzIzY2Q3MmQzZjEyOWYyZWMwZjIgKjMxX2MxNG4tY29tbWVudHMueG1sCitlNTc5ODhiNWU1N2IwNjg1ODkxMzQ3MmI1NmRjNWFmNCAqMzFfYzE0bi54bWwKKzU4YTFhMzQ2MzUxZTdiMDFhMjlmNTQ3ZmQxNzk4NWYxICozMl9jMTRuLnhtbAorYTJkNTdhYTQ0NDFiZWU2NThiYjQ0Y2RjNGYxYTFmMGUgKjMzX2MxNG4ueG1sCis5OWM5OWM5YTRkOGQwMzg0M2QxMzI2YTYyZDJiMTA2YyAqMzRfYzE0bi54bWwKKzYyYjIzMmQwYmFlMDliNjk3MzI2NmZhMGJjMTRiZmZkICozNV9jMTRuLnhtbAorMjg0ODVkYjViMmYzM2FiNTBjYjYzZTE0NTg2ZjNiNzYgKjM2X2MxNG4ueG1sCis5ZTk5NjhkNDMwMjc0YmUwYjA1NGJmN2QyYjEzNTEyZiAqMzdfYzE0bi54bWwKKzdkNzkzMDM3YTA3NjAxODY1NzRiMDI4MmYyZjQzNWU3ICp3b3JsZC50eHQKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbi90ZXN0VHJhbnNsYXRpb25Gcm9tVVRGMTZ0b1VURjgueG1sIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luL3Rlc3RUcmFuc2xhdGlvbkZyb21VVEYxNnRvVVRGOC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQzMjIwOAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbi90ZXN0VHJhbnNsYXRpb25Gcm9tVVRGMTZ0b1VURjgueG1sCkBAIC0wLDAgKzEgQEAKKzxVVEYxNj5UaGUgZ2VybWFuICZhbXA7YXVtbCAod2hpY2ggaXMgVW5pY29kZSAmYW1wOyN4RTQ7KTogICLDpCI8L1VURjE2PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbi93b3JsZC50eHQgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vd29ybGQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0ZmVhMDYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW4vd29ybGQudHh0CkBAIC0wLDAgKzEgQEAKK3dvcmxkClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luRXhjbC9leGFtcGxlMl8yXzEueG1sIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luRXhjbC9leGFtcGxlMl8yXzEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlMGU2YzEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW5FeGNsL2V4YW1wbGUyXzJfMS54bWwKQEAgLTAsMCArMSw1IEBACis8bjA6bG9jYWwgeG1sbnM6bjA9ImZvbzpiYXIiIHhtbG5zOm4zPSJmdHA6Ly9leGFtcGxlLm9yZyI+DQorPG4xOmVsZW0yIHhtbG5zOm4xPSJodHRwOi8vZXhhbXBsZS5uZXQiIHhtbDpsYW5nPSJlbiI+DQorPG4zOnN0dWZmIHhtbG5zOm4zPSJmdHA6Ly9leGFtcGxlLm9yZyIvPg0KKzwvbjE6ZWxlbTI+DQorPC9uMDpsb2NhbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW5FeGNsL2V4YW1wbGUyXzJfMV9jMTRuaXplZC54bWwgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW5FeGNsL2V4YW1wbGUyXzJfMV9jMTRuaXplZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTIzMjZiMQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbkV4Y2wvZXhhbXBsZTJfMl8xX2MxNG5pemVkLnhtbApAQCAtMCwwICsxLDMgQEAKKzxuMTplbGVtMiB4bWxuczpuMD0iZm9vOmJhciIgeG1sbnM6bjE9Imh0dHA6Ly9leGFtcGxlLm5ldCIgeG1sbnM6bjM9ImZ0cDovL2V4YW1wbGUub3JnIiB4bWw6bGFuZz0iZW4iPgorPG4zOnN0dWZmPjwvbjM6c3R1ZmY+Cis8L24xOmVsZW0yPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbkV4Y2wvZXhhbXBsZTJfMl8yLnhtbCBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbkV4Y2wvZXhhbXBsZTJfMl8yLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjFkMGVkCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luRXhjbC9leGFtcGxlMl8yXzIueG1sCkBAIC0wLDAgKzEsNSBAQAorPG4yOnBkdSB4bWxuczpuMT0iaHR0cDovL2V4YW1wbGUuY29tIiB4bWxuczpuMj0iaHR0cDovL2Zvby5leGFtcGxlIiB4bWw6bGFuZz0iZnIiIHhtbDpzcGFjZT0icmV0YWluIj4NCis8bjE6ZWxlbTIgeG1sbnM6bjE9Imh0dHA6Ly9leGFtcGxlLm5ldCIgeG1sOmxhbmc9ImVuIj4NCis8bjM6c3R1ZmYgeG1sbnM6bjM9ImZ0cDovL2V4YW1wbGUub3JnIi8+DQorPC9uMTplbGVtMj4NCis8L24yOnBkdT4NCmRpZmYgLS1naXQgYS9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW5FeGNsL2V4YW1wbGUyXzJfMl9jMTRuaXplZC54bWwgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW5FeGNsL2V4YW1wbGUyXzJfMl9jMTRuaXplZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE1NTNiNAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbkV4Y2wvZXhhbXBsZTJfMl8yX2MxNG5pemVkLnhtbApAQCAtMCwwICsxLDMgQEAKKzxuMTplbGVtMiB4bWxuczpuMT0iaHR0cDovL2V4YW1wbGUubmV0IiB4bWxuczpuMj0iaHR0cDovL2Zvby5leGFtcGxlIiB4bWw6bGFuZz0iZW4iIHhtbDpzcGFjZT0icmV0YWluIj4KKzxuMzpzdHVmZiB4bWxuczpuMz0iZnRwOi8vZXhhbXBsZS5vcmciPjwvbjM6c3R1ZmY+Cis8L24xOmVsZW0yPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbkV4Y2wvZXhhbXBsZTJfMl8zLnhtbCBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbkV4Y2wvZXhhbXBsZTJfMl8zLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTEyMDVmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luRXhjbC9leGFtcGxlMl8yXzMueG1sCkBAIC0wLDAgKzEsMTMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8eDpzYW1wbGUgeG1sbnM6eD0iaHR0cDovL3d3dy54LmNvbS9zYW1wbGUvIj4KKyAgPD90ZXN0cGkgMTIzPz4KKyAgPHNlY3Rpb24geG1sOmxhbmc9ImVuIj4KKyAgICA8cCBzdHlsZT0iaW5kZW50ZWQiIGFiYz0neHkieic+CisgICAgICA8eDp2ZXJiYXRpbSB4bWw6c3BhY2U9InByZXNlcnZlIj4KKyAgICAgICAgPGIgeG1sOmxhbmc9ImZyIj5kZWYKKyAgICAgICAgICA8aSB4bWw6c3BhY2U9InJlc2V0Ij5qa2w8L2k+CisgICAgICAgIDwvYj4KKyAgICAgIDwveDp2ZXJiYXRpbT4KKyAgICA8L3A+CisgIDwvc2VjdGlvbj4KKzwveDpzYW1wbGU+CmRpZmYgLS1naXQgYS9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW5FeGNsL2V4YW1wbGUyXzJfM19jMTRuaXplZF9leGNsdXNpdmUueG1sIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luRXhjbC9leGFtcGxlMl8yXzNfYzE0bml6ZWRfZXhjbHVzaXZlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2IzODBhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luRXhjbC9leGFtcGxlMl8yXzNfYzE0bml6ZWRfZXhjbHVzaXZlLnhtbApAQCAtMCwwICsxLDcgQEAKKzxwIGFiYz0ieHkmcXVvdDt6IiBzdHlsZT0iaW5kZW50ZWQiPgorICAgICAgPHg6dmVyYmF0aW0geG1sbnM6eD0iaHR0cDovL3d3dy54LmNvbS9zYW1wbGUvIiB4bWw6c3BhY2U9InByZXNlcnZlIj4KKyAgICAgICAgPGIgeG1sOmxhbmc9ImZyIj5kZWYKKyAgICAgICAgICA8aSB4bWw6c3BhY2U9InJlc2V0Ij5qa2w8L2k+CisgICAgICAgIDwvYj4KKyAgICAgIDwveDp2ZXJiYXRpbT4KKyAgICA8L3A+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luRXhjbC9leGFtcGxlMl8yX2MxNG5pemVkX2V4Y2x1c2l2ZS54bWwgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW5FeGNsL2V4YW1wbGUyXzJfYzE0bml6ZWRfZXhjbHVzaXZlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzFkNmYwCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luRXhjbC9leGFtcGxlMl8yX2MxNG5pemVkX2V4Y2x1c2l2ZS54bWwKQEAgLTAsMCArMSwzIEBACis8bjE6ZWxlbTIgeG1sbnM6bjE9Imh0dHA6Ly9leGFtcGxlLm5ldCIgeG1sOmxhbmc9ImVuIj4KKzxuMzpzdHVmZiB4bWxuczpuMz0iZnRwOi8vZXhhbXBsZS5vcmciPjwvbjM6c3R1ZmY+Cis8L24xOmVsZW0yPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvZW5jcnlwdGlvbi9lbmNyeXB0ZWRLZXkueG1sIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9lbmNyeXB0aW9uL2VuY3J5cHRlZEtleS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM3Njk3OQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvZW5jcnlwdGlvbi9lbmNyeXB0ZWRLZXkueG1sCkBAIC0wLDAgKzEsMjcgQEAKKzxyb290Pjx4ZW5jOkVuY3J5cHRlZEtleSB4bWxuczp4ZW5jPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiIElkPSJLRUsiIFJlY2lwaWVudD0iZGVtbyI+Cis8eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLTFfNSI+Cis8L3hlbmM6RW5jcnlwdGlvbk1ldGhvZD4KKzxkczpLZXlJbmZvIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKzxkczpLZXlOYW1lPmRlbW88L2RzOktleU5hbWU+Cis8L2RzOktleUluZm8+Cis8eGVuYzpDaXBoZXJEYXRhPjx4ZW5jOkNpcGhlclZhbHVlPmErQ0pVSENGMXE0YlNGYTVkTDZveHBjSHpzaTJZMDBkSUFQQjNjK0JJR3ZWTFZ1ZVdnQVM3N3NBc2VTZm1zYlg0aXJOQ1VrU0lVK2gKK0JZYzNXSHlMelBRa2Z2Ly9WUWU4QmFVNnRaRm41ek9rSVVCNXYzU1FpR1M0c0ZWWmI5Y01Bb0ViQ0c3bW9GdFVwT09DNFAveGRmalUKK3FBcEFPNnhKMnpVdHhEQ3o3S3M9PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPgorPHhlbmM6UmVmZXJlbmNlTGlzdD48eGVuYzpEYXRhUmVmZXJlbmNlIFVSST0iI0VEIj48L3hlbmM6RGF0YVJlZmVyZW5jZT48L3hlbmM6UmVmZXJlbmNlTGlzdD4KKzx4ZW5jOkNhcnJpZWRLZXlOYW1lPmRhdGFrZXk8L3hlbmM6Q2FycmllZEtleU5hbWU+Cis8L3hlbmM6RW5jcnlwdGVkS2V5PgorPHhlbmM6RW5jcnlwdGVkRGF0YSB4bWxuczp4ZW5jPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiIElkPSJFRCIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjRWxlbWVudCI+Cis8eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjYWVzMjU2LWNiYyI+Cis8L3hlbmM6RW5jcnlwdGlvbk1ldGhvZD48ZHM6S2V5SW5mbyB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+Cis8ZHM6S2V5TmFtZT5kYXRha2V5PC9kczpLZXlOYW1lPgorPGRzOlJldHJpZXZhbE1ldGhvZCBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNFbmNyeXB0ZWRLZXkiIFVSST0iI0tFSyI+PC9kczpSZXRyaWV2YWxNZXRob2Q+Cis8L2RzOktleUluZm8+PHhlbmM6Q2lwaGVyRGF0YT48eGVuYzpDaXBoZXJWYWx1ZT5VQ21PRXRQbDVXK0dzalcrU3hzZ3E3ZDNUSVZSNFZPNWlycGdqU3RYZnllYTZTdWp3S1Bjd1BxdWorZDFGc2g1VDhMUngwcnpRZkZlCitnRXFoWmM4anR2WUUyWnNqVEdlVEg0ZVFvcVpJNk1YU3BPdnJsbXNqODhidlJyUXc4MUNqYUN1NGVZdEkraHZTVldYVUFUeFNta204CisvaEp6ZTFBcXp1SkVDSGxSY0hycVBnckxHb3lXY3IvaGdxT1FKQXFQTGZKVVBSMDBVNkpQeE9vejBZVmYrbEVOY292ZWtZQjZTV1BLCitLb0VXbVVRbjlJQ0s0TWllMW95aGQxQk9NNmRXTVVmMlRXQVd3Q1NIRnFNcUFOU3NKaWFHREpCT1RVWG1PZW95azVObnQxR2hXRm5kCis2MUJ5V1VjMG1XLzVGdFFSdCtLUVRKMHFHSUZzTFNkelA1Y0YwNkJyRXdBQ0NZdi80b3ZWQ010Y05WT2poQTZ3TWxINUN3Tit5dERuCitHWnkrd2l1alJQdm1mRlVZN0VUZ05ZakcxdG9laTA1bHRwaEZtM1lJWGJuWXBXWDVZOGY3SzZXeEw1MWpBeXZGNGpVMG9tWDVrRlNCCitFTEtDMWM2TGIxVmFIUGNBcDNhZk0wRnV4UlVYd2c1RzdoY09ndUpwSFNnOWp4eUdWQ1E0d21BNEpLWDhCTTlJb1RhNVd2SjJiWTV2CitEUGYxNTVSMWxqTVhBd2ZQWlpjQzJpRi9ZY1RHaHRiUWZnVUZvZnhWRXdIakFBcmVweDI4U0RDVzUrWDFpYjJSNGhVOFNMM084R1FRCitXVUZpRnBJTnVMSW5UUERCczhoSnFab0JhR2RINlNOWmxQZ1ZqOWc2T0xFTnAwUjhmWm1LTytRSitMcWFQQTF3dHdKKzFXVi8vTTg9PC94ZW5jOkNpcGhlclZhbHVlPjwveGVuYzpDaXBoZXJEYXRhPgorPC94ZW5jOkVuY3J5cHRlZERhdGE+PC9yb290PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9pbnB1dC9VbmlMb2dvQS5naWYgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvaW5wdXQvVW5pTG9nb0EuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3ZWQyZGMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvaW5wdXQvVW5pTG9nb0EuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9pbnB1dC9lY2RzYS5qa3MgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvaW5wdXQvZWNkc2EuamtzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4ZGNiYTEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvaW5wdXQvZWNkc2EuamtzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9pbnB1dC9lY2RzYVNpZ25hdHVyZS54bWwgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvaW5wdXQvZWNkc2FTaWduYXR1cmUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2NzYwZmIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvaW5wdXQvZWNkc2FTaWduYXR1cmUueG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhLS0gQ29tbWVudCBiZWZvcmUgLS0+Cis8Um9vdEVsZW1lbnQ+U29tZSBzaW1wbGUgdGV4dAorPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+Cis8ZHM6U2lnbmVkSW5mbz4KKworPGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPjwvZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZD4KKzxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNlY2RzYS1zaGExIj48L2RzOlNpZ25hdHVyZU1ldGhvZD4KKzxkczpSZWZlcmVuY2UgVVJJPSIiPgorPGRzOlRyYW5zZm9ybXM+Cis8ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiPjwvZHM6VHJhbnNmb3JtPgorPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1I1dpdGhDb21tZW50cyI+PC9kczpUcmFuc2Zvcm0+Cis8L2RzOlRyYW5zZm9ybXM+Cis8ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvZHM6RGlnZXN0TWV0aG9kPgorPGRzOkRpZ2VzdFZhbHVlPkxLeVVwTmFaSjJqb3puVnp3RXVwNUpEd3RTMD08L2RzOkRpZ2VzdFZhbHVlPgorPC9kczpSZWZlcmVuY2U+Cis8L2RzOlNpZ25lZEluZm8+Cis8ZHM6U2lnbmF0dXJlVmFsdWU+CitRbWE1STVBWmlTelE2SjRVWndqcHRlRDJxdlFjbEFCS0FUUFE1TVo3bW1PRllmajh4QWxwWFd1MnUrT2EvNG1wUDlqSzlPVVVjVFU5CitQc2Z1Y3orcVBBPT0KKzwvZHM6U2lnbmF0dXJlVmFsdWU+Cis8ZHM6S2V5SW5mbz4KKzxkczpYNTA5RGF0YT4KKzxkczpYNTA5Q2VydGlmaWNhdGU+CitNSUlDRWpDQ0FiZWdBd0lCQWdJR0FSSlEvVW1iTUFzR0J5cUdTTTQ5QkFFRkFEQlFNU0V3SHdZRFZRUURFeGhZVFV3Z1JVTkVVMEVnCitVMmxuYm1GMGRYSmxJRlJsYzNReEZqQVVCZ29Ka2lhSmsvSXNaQUVaRXdaaGNHRmphR1V4RXpBUkJnb0praWFKay9Jc1pBRVpFd052CitjbWN3SGhjTk1EY3dOVEF6TURneE1ERTFXaGNOTVRFd05UQXpNRGd4TURFMVdqQlFNU0V3SHdZRFZRUURFeGhZVFV3Z1JVTkVVMEVnCitVMmxuYm1GMGRYSmxJRlJsYzNReEZqQVVCZ29Ka2lhSmsvSXNaQUVaRXdaaGNHRmphR1V4RXpBUkJnb0praWFKay9Jc1pBRVpFd052CitjbWN3Z2JRd2dZMEdCeXFHU000OUFnRXdnWUVDQVFFd0xBWUhLb1pJemowQkFRSWhBUC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLy8vLy8vLy8vLy8vLzJYTUNjRUlRRC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy85bEFRQ0FLWUVBZ01CCitBaUVBLy8vLy8vLy8vLy8vLy8vLy8vLy8vMnhoRUhDWld0RUFSWVFiQ2JkaHVKTURJZ0FEWnViejQwV2lRK3YvbnJqaGZpelltRUlsCit0S0lyL243aHdHd3BHM0NERWsyaklEQWVNQXdHQTFVZEV3RUIvd1FDTUFBd0RnWURWUjBQQVFIL0JBUURBZ0dtTUFzR0J5cUdTTTQ5CitCQUVGQUFOSUFEQkZBaUVBNjNQcTcvWWZERHJuYkN4WFZYMjBUM2RuNzdpTDhkdkMxQ2IyNEFsOVZGa0NJSFVleW1mL04rSDYwT1FMCit2OVdnL1g4Q2JwMmFtNDJxalF2YUt0YjQrQkZrCis8L2RzOlg1MDlDZXJ0aWZpY2F0ZT4KKzwvZHM6WDUwOURhdGE+Cis8L2RzOktleUluZm8+Cis8L2RzOlNpZ25hdHVyZT48L1Jvb3RFbGVtZW50PgorPCEtLSBDb21tZW50IGFmdGVyIC0tPgpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL2lucHV0L2ZpbGVfY2VydCBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9pbnB1dC9maWxlX2NlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzYxYmEyOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9pbnB1dC9maWxlX2NlcnQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL2lucHV0L2dlbmtleS5iYXQgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvaW5wdXQvZ2Vua2V5LmJhdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hZjc0NGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL2lucHV0L2dlbmtleS5iYXQKQEAgLTAsMCArMSBAQAora2V5dG9vbCAtZ2Vua2V5IC1hbGlhcyB0ZXN0IC1rZXlhbGcgRFNBIC1kbmFtZSAiQ049Q2hyaXN0aWFuIEdldWVyLVBvbGxtYW5uLCBPVT1GQjEyTlVFLCBPPVVuaXZlcnNpdHkgb2YgU2llZ2VuLCBDPURFIiAta2V5cGFzcyB4bWxzZWN1cml0eSAtc3RvcmVwYXNzIHhtbHNlY3VyaXR5IC1rZXlzdG9yZSBrZXlzdG9yZS5qa3MgLXZhbGlkaXR5IDIwMDAKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9pbnB1dC9rZXlzdG9yZS5qa3MgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvaW5wdXQva2V5c3RvcmUuamtzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxYTAyMTQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvaW5wdXQva2V5c3RvcmUuamtzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9pbnB1dC9rZXlzdG9yZTIuamtzIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL2lucHV0L2tleXN0b3JlMi5qa3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk5MDVkZAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9pbnB1dC9rZXlzdG9yZTIuamtzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9pbnB1dC9teWtleXN0b3JlIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL2lucHV0L215a2V5c3RvcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg4MTE5NAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9pbnB1dC9teWtleXN0b3JlCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9pbnB1dC90ZXN0LWFzc2VydGlvbi54bWwgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvaW5wdXQvdGVzdC1hc3NlcnRpb24ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjA4ZmYxMGEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvaW5wdXQvdGVzdC1hc3NlcnRpb24ueG1sCkBAIC0wLDAgKzEgQEAKKzxzYW1sOkFzc2VydGlvbiBNYWpvclZlcnNpb249IjEiIE1pbm9yVmVyc2lvbj0iMSIgQXNzZXJ0aW9uSUQ9Il9lZjQ3NzQwZi1hZGIyLTRjMDYtYjRmYi0wNmMzYWJhM2QxMGMiIElzc3Vlcj0iQTcwLUdhcmFpby1Gcm9udGVuZC1VIiBJc3N1ZUluc3RhbnQ9IjIwMDctMDgtMjRUMTQ6NDU6MTMuMTg2WiIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4wOmFzc2VydGlvbiI+PHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMDctMDgtMjRUMTQ6NDA6MTMuMTg2WiIgTm90T25PckFmdGVyPSIyMDA3LTA4LTI0VDE1OjUwOjEzLjE4NloiPjwvc2FtbDpDb25kaXRpb25zPjxzYW1sOkFkdmljZT48L3NhbWw6QWR2aWNlPjxzYW1sOkF1dGhlbnRpY2F0aW9uU3RhdGVtZW50IEF1dGhlbnRpY2F0aW9uTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjA6YW06cGFzc3dvcmQiIEF1dGhlbnRpY2F0aW9uSW5zdGFudD0iMjAwNy0wOC0yNFQxNDo0NToxMy4xODZaIj48c2FtbDpTdWJqZWN0PjxzYW1sOk5hbWVJZGVudGlmaWVyIE5hbWVRdWFsaWZpZXI9InVybjpzdi5maW4uYmUuY2g6bmFtZWlkOjEuMDphZHVzZXIiPkZBWkxAYWQuYmVkYWcuY2g8L3NhbWw6TmFtZUlkZW50aWZpZXI+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbj48c2FtbDpDb25maXJtYXRpb25NZXRob2Q+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4wOmNtOnNlbmRlci12b3VjaGVzPC9zYW1sOkNvbmZpcm1hdGlvbk1ldGhvZD48L3NhbWw6U3ViamVjdENvbmZpcm1hdGlvbj48L3NhbWw6U3ViamVjdD48L3NhbWw6QXV0aGVudGljYXRpb25TdGF0ZW1lbnQ+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiPjwvQ2Fub25pY2FsaXphdGlvbk1ldGhvZD48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIj48L1NpZ25hdHVyZU1ldGhvZD48UmVmZXJlbmNlIFVSST0iI19lZjQ3NzQwZi1hZGIyLTRjMDYtYjRmYi0wNmMzYWJhM2QxMGMiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSI+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+PC9UcmFuc2Zvcm0+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9EaWdlc3RNZXRob2Q+PERpZ2VzdFZhbHVlPklyOC82QkJlU3dPeTJHQlhzalo1YXNRUG5XVT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+TGpLbWliVWFjNmxlYVZYRGNKL3JrWmF2djU4dFJTbjA4dFNFMjlsRVIybTY5ZktRWHNIUkk0N1VoYlJ4V2FxSndBUXN4eC9ZK3U0MEFoMi94RHpGL05zdWdRS0k1VnkwU3F4ZEs2eHgrRW1BcHJzckVvVkFla1d4RW5yZ2ZzNmtzU2E0dUZsa2xEakN5MVZMZG9ON2JzOXB3UVBxRXorMzFLcXF1TldVM2pnPTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PFg1MDlEYXRhPjxYNTA5Q2VydGlmaWNhdGU+TUlJQnZqQ0NBV3lnQXdJQkFnSVFsd3g4S0tiQzQ3QkdSeVFjOHBvbmNUQUpCZ1VyRGdNQ0hRVUFNQll4RkRBU0JnTlZCQU1UQzFKdmIzUWdRV2RsYm1ONU1CNFhEVEEzTURVd05ERXhNVFF5TWxvWERUTTVNVEl6TVRJek5UazFPVm93SVRFZk1CMEdBMVVFQXhNV1FUY3dMVWRoY21GcGJ5MUdjbTl1ZEdWdVpITXRWVENCbnpBTkJna3Foa2lHOXcwQkFRRUZBQU9CalFBd2dZa0NnWUVBci94ZjZpOUI4Ui9obE1qbDZiWXNXNmVmK1Q4RW5PeWlsTnQrakU1MGtHR1VnSWlRRnRXM3NITTgvZEFiWkNOV3BRUmFtZnBtVUhPaVJGTXF5eW8xeXJ2cG0wY3IyNzVCaW5OYXJEc2NoRDlaTC8wVG12bFovNG1VTGpWV0RoWVdQbGtGMnB6N1hXVzZobzN0azdrdHlKd0RLUmYvazZtWVFyckhHbE5yQTBFQ0F3RUFBYU5MTUVrd1J3WURWUjBCQkVBd1BvQVFFdVFKTFFZZEhVOEFqV0VoM0Jaa1k2RVlNQll4RkRBU0JnTlZCQU1UQzFKdmIzUWdRV2RsYm1ONWdoQUdOMndBcWdCa2loSFB1TlNxWERYME1Ba0dCU3NPQXdJZEJRQURRUUFxc0lXY2xLM3JpeEh3SG5tM1NkK3FZc2hXaEF6clFQM2pWazlCRkdldjZRcEdSN3lZQmdTQ0JmblgyYldoVFhiWHZLZjJDTHRaeXVUQnN0SzZMR3NvPC9YNTA5Q2VydGlmaWNhdGU+PC9YNTA5RGF0YT48L0tleUluZm8+PC9TaWduYXR1cmU+PC9zYW1sOkFzc2VydGlvbj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvaW5wdXQvdHJ1c3RzdG9yZS5qa3MgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvaW5wdXQvdHJ1c3RzdG9yZS5qa3MKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZGFkOTU2NQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9pbnB1dC90cnVzdHN0b3JlLmprcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RlbXAvZXh0ZW5zaW9uLnhzbCBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVtcC9leHRlbnNpb24ueHNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjMTZlMDYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RlbXAvZXh0ZW5zaW9uLnhzbApAQCAtMCwwICsxLDEzIEBACis8eHNsOnN0eWxlc2hlZXQgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiDQorCXhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIg0KKwl4bWxuczpwZT0ieGFsYW46Ly9vcmcueG1sc2VjdXJpdHkudGVtcC5UZXN0UHJvcGVydGllcyINCisJZXh0ZW5zaW9uLWVsZW1lbnQtcHJlZml4ZXM9InBlIg0KKwl2ZXJzaW9uPSIxLjAiPg0KKw0KKwk8eHNsOm91dHB1dCBpbmRlbnQ9InllcyIgb21pdC14bWwtZGVjbGFyYXRpb249InllcyIvPg0KKwk8eHNsOnRlbXBsYXRlIG1hdGNoPSIvIj4NCisJCTxwZTpwcm9wZXJ0aWVzPg0KKwkJICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgLz4NCisJCTwvcGU6cHJvcGVydGllcz4NCisJPC94c2w6dGVtcGxhdGU+DQorPC94c2w6c3R5bGVzaGVldD4NCmRpZmYgLS1naXQgYS9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RlbXAvaWQueG1sIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZW1wL2lkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDRhMjQzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZW1wL2lkLnhtbApAQCAtMCwwICsxLDExIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4NCisNCis8IURPQ1RZUEUgZG9jIFsNCis8IUFUVExJU1QgZTkgSWQgSUQgI0lNUExJRUQ+DQorXT4NCisNCisNCis8ZG9jPg0KKyAgIDxlOSBJZD0iTk8zIj48L2U5Pg0KKyAgIDxlOSBJZD0iaWQyIj48L2U5Pg0KKzwvZG9jPiANCmRpZmYgLS1naXQgYS9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RlbXAvaWQyLnhtbCBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVtcC9pZDIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyN2Q0YjMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RlbXAvaWQyLnhtbApAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/Pg0KKzwhRE9DVFlQRSBkb2MgWw0KKzwhQVRUTElTVCBlOSBJZCBJRCAjSU1QTElFRD4NCitdPg0KKzxkb2M+DQorICAgPCEtLSBBIGNvbW1lbnQgLS0+DQorICAgPGU5IElkPSdOMyc+PCEtLSBBIGNvbW1lbnQgLS0+RGFzIE4zIEVsZW1lbnQ8L2U5Pg0KKyAgIDxlOSBJZD0naWQyJz48IS0tIEEgY29tbWVudCAtLT4gRGFzIGlkMiBFbGVtZW50PC9lOT4NCis8L2RvYz4gDQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZW1wL2tleS9kc2F2YWx1ZS54bWwgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RlbXAva2V5L2RzYXZhbHVlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmE4ODQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZW1wL2tleS9kc2F2YWx1ZS54bWwKQEAgLTAsMCArMSwyMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxEU0FLZXlWYWx1ZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgIDxQPgorICAgIHJGdG84dVBRTTZ5MzRGTFBtRGg0MEJMSjFyVnJDOFZlUnF1dWhQWjZqWU5Ga1F1d3hudS93Q3ZJQU1odWtQQkwKKyAgICBGRVQ4YkpmL2IyZWYrb3F4WmFqRWIrODh6bFpveUc4Zy93TWZEQkhUeHorQ25vd0xhaG5DQ1RZQnA1a3Q3RzhxCisgICAgVW9iSnV2anlsd2oxc3Q3VjlMc3UwM2lYTVh0YmlyaVVqRmE1Z1VSYXNOOD0KKyAgPC9QPgorICA8UT4KKyAgICBrRWpBRnBDZTRsY1VPZHdwaHB6Zit0QmFVZHM9CisgIDwvUT4KKyAgPEc+CisgICAgb2UxNFIyT3R5S3grcys2ME81QlJOTU9ZcElnMlRVL2YxNU4zYnNERXJLT1d0S1hlTks5RlM3ZFdTdHJlRHhvMgorICAgIFNTZ09vbnFBZDRGdUovNHV2YTdHZ05MNFVMSXFZN0UrbVc1aXdKN24vV1RFTGg5OG1Fb2NzTFhrTmgyNEhjSDQKKyAgICBCWmZTQ1RydXV6bUN5amRWMUtTcVgvRXV4MDRIZkNXWW1keE4zU1EvcXF3PQorICA8L0c+CisgIDxZPgorICAgIHBBNU5uWnZjZDU3NFdSWHVPQTdaZkMvN0xxdDRjQjBNUkxXdEh1YnRKb1ZPYW85aWI1cnk0clRrMHI2ZGRuT3YKKyAgICBBSUdLa3R1dHpLM3ltdktsZVMzRE9yd1pRZ0orL0JEV0RXOGtPOVI2Nm82cmRqaVNvYkJpLzBjMlYxK2RrcU9nCisgICAgakZtS3ozOTVtdkNPWkdoQzdmcUFWaEhhdDJFakdQTWZnU1p5QUJhNysxaz0KKyAgPC9ZPgorPC9EU0FLZXlWYWx1ZT4KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVtcC9rZXkvcmV0cmlldmFsLWZyb20tc2FtZS1kb2Mta2V5LnhtbCBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVtcC9rZXkvcmV0cmlldmFsLWZyb20tc2FtZS1kb2Mta2V5LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDVlNzZhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZW1wL2tleS9yZXRyaWV2YWwtZnJvbS1zYW1lLWRvYy1rZXkueG1sCkBAIC0wLDAgKzEgQEAKKzxYNTA5RGF0YSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFg1MDlDZXJ0aWZpY2F0ZT48L1g1MDlDZXJ0aWZpY2F0ZT48L1g1MDlEYXRhPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVtcC9rZXkvcmV0cmlldmFsLWZyb20tc2FtZS1kb2MueG1sIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZW1wL2tleS9yZXRyaWV2YWwtZnJvbS1zYW1lLWRvYy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTEzOWVjZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVtcC9rZXkvcmV0cmlldmFsLWZyb20tc2FtZS1kb2MueG1sCkBAIC0wLDAgKzEsNjAgQEAKKzxEb2N1bWVudD4NCisgIDxLZXlNYXRlcmlhbHMgSWQ9InRoZWNlcnQiIHhtbG5zPSJodHRwOi8vd3d3LnhtbHNlY3VyaXR5Lm9yZy90ZW1wL215dGVtcG5zIj4NCisgICAgPFg1MDlEYXRhIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4NCisgICAgICAgIDxYNTA5Q2VydGlmaWNhdGU+DQorICAgICAgICAgICAgTUlJQ3d6Q0NBaXlnQXdJQkFnSUdBT1o3NVFoSE1BMEdDU3FHU0liM0RRRUJCUVVBTUc0eEN6QUpCZ05WQkFZVA0KKyAgICAgICAgICAgIEFrbEZNUTh3RFFZRFZRUUlFd1pFZFdKc2FXNHhKVEFqQmdOVkJBb1RIRUpoYkhScGJXOXlaU0JVWldOb2JtOXMNCisgICAgICAgICAgICBiMmRwWlhNc0lFeDBaQzR4RVRBUEJnTlZCQXNUQ0ZndlUyVmpkWEpsTVJRd0VnWURWUVFERXd0WUwxTmxZM1Z5DQorICAgICAgICAgICAgWlNCRFFUQWVGdzB3TVRBMU1UVXhNREEwTkRWYUZ3MHdNakExTVRVeE1EQTBNemRhTUdreEN6QUpCZ05WQkFZVA0KKyAgICAgICAgICAgIEFrbEZNUTh3RFFZRFZRUUlFd1pFZFdKc2FXNHhKVEFqQmdOVkJBb1RIRUpoYkhScGJXOXlaU0JVWldOb2JtOXMNCisgICAgICAgICAgICBiMmRwWlhNc0lFeDBaQzR4RVRBUEJnTlZCQXNUQ0ZndlUyVmpkWEpsTVE4d0RRWURWUVFERXdaTmIzSnBaM1V3DQorICAgICAgICAgICAgZ1o4d0RRWUpLb1pJaHZjTkFRRUJCUUFEZ1kwQU1JR0pBb0dCQUxUNEZKa3h1K2JCNWxPd1lhK2lySWI3c0pVNw0KKyAgICAgICAgICAgIDlzUlFiWVluZnczNUQ3TlFraWcrTHZpMkxYWG9BNkFCdWxsMmJGK2d1K3NnUnplenpPczZWc1RMOHo1N1RJejINCisgICAgICAgICAgICA0OEhhTUluRmpPaXFTQU5telFLbFh2MVBqWFN4U3lIUmkvM3hjOGdNZm1DeGVTUENaNVZwVWlRb0o1WnBXY0R6DQorICAgICAgICAgICAgL0xLdmIwbDlYMFlCek1abEFnTUJBQUdqY1RCdk1BNEdBMVVkRHdFQi93UUVBd0lIZ0RBUkJnTlZIUTRFQ2dRSQ0KKyAgICAgICAgICAgIGhiaXMzNWxJY3U4d05RWURWUjBTQkM0d0xJWXFhSFIwY0RvdkwzZDNkeTVpWVd4MGFXMXZjbVV1WTI5dEwzQnkNCisgICAgICAgICAgICBiMlIxWTNSekwzaHpaV04xY21Vdk1CTUdBMVVkSXdRTU1BcUFDSVhzSHdxUGZ4clJNQTBHQ1NxR1NJYjNEUUVCDQorICAgICAgICAgICAgQlFVQUE0R0JBR1NCZFBvdTVDV0FpeVM1L2Y0Nm0wMG1JSXFPM3hsNlpYT2MvRFJibEY0Z1duZXNkMkY1di9zNg0KKyAgICAgICAgICAgIGxBYnFLOCt3Sk02R3h2cE9rU3A2TzFxNmhaUnl6Rjg2UVBsWENmaEtBWGtnekhYdGI2UGZUMm05dDBpYXduankNCisgICAgICAgICAgICBQK295WW9mbkZVNUZGVk9DdWpTcm1GeDNGQ1UrV2c2UlQzdjFqUm9NM1lmTVlaWUV6ZlRUDQorICAgICAgICA8L1g1MDlDZXJ0aWZpY2F0ZT4NCisgICAgPC9YNTA5RGF0YT4NCisgIDwvS2V5TWF0ZXJpYWxzPg0KKyAgPEtleU1hdGVyaWFscyBJZD0iaGpkc2JhZGNyZXQiIHhtbG5zPSJodHRwOi8vd3d3LnhtbHNlY3VyaXR5Lm9yZy90ZW1wL215dGVtcG5zIj4NCisgICAgPFg1MDlEYXRhIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4NCisgICAgICAgIDxYNTA5Q2VydGlmaWNhdGU+DQorICAgICAgICAgICAgVGhpcyBpcyBubyB2YWxpZCBiYXNlNjQgZW5jb2RlZCBYNTA5IENlcnRpZmljYXRlIHNvIGlmIHRoZSBYUGF0aA0KKyAgICAgICAgICAgICAgIGFuY2VzdG9yOjpteTpLZXlNYXRlcmlhbHNbQElkPSJoamRzYmFkY3JldCJdDQorICAgICAgICAgICAgd291bGQgaGF2ZSBiZWVuIHVzZWQgdGhpcyB3b3VsZG4ndCByZXNvbHZlIHRvIGEgdmFsaWQga2V5DQorICAgICAgICA8L1g1MDlDZXJ0aWZpY2F0ZT4NCisgICAgPC9YNTA5RGF0YT4NCisgIDwvS2V5TWF0ZXJpYWxzPg0KKyAgPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+DQorICAgIDxTaWduZWRJbmZvPg0KKyAgICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiIC8+DQorICAgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIgLz4NCisgICAgICA8UmVmZXJlbmNlIFVSST0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sLXN0eWxlc2hlZXQiPg0KKyAgICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPg0KKyAgICAgICAgPERpZ2VzdFZhbHVlPjYwTnZadnRkVEIrN1VubExwL0gyNHA3aDRicz08L0RpZ2VzdFZhbHVlPg0KKyAgICAgIDwvUmVmZXJlbmNlPg0KKyAgICA8L1NpZ25lZEluZm8+DQorICAgIDxTaWduYXR1cmVWYWx1ZT4NCisgICAgICBGbndzU0NXVDZSRVcvOFFuT2p2MEJLK3IzTHkvNGFCKytwTm5acDlwbno4ZjcrajMzZUtTajFzb3lRTHE1em1ODQorICAgICAgRnd5ZWVRaG5sVGJSMWtmdmUwMTR1Yjl1SFZDOUExY2ZtR1p4UUYxREMrZW5IdCtBQVBKYWEyNzgvb2NncE1iNQ0KKyAgICAgIEdpYmw0dzdlM0hBZEJuL1JKQ3JGSkg3N3dZMm9VNU9iMHpJUXRFQ1ZOSms9DQorICAgIDwvU2lnbmF0dXJlVmFsdWU+DQorICAgIDxLZXlJbmZvPg0KKyAgICAgIDxSZXRyaWV2YWxNZXRob2QgVVJJPSIiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNYNTA5RGF0YSI+DQorICAgICAgICA8VHJhbnNmb3Jtcz4NCisgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij4NCisgICAgICAgICAgICA8WFBhdGggeG1sbnM6bXk9Imh0dHA6Ly93d3cueG1sc2VjdXJpdHkub3JnL3RlbXAvbXl0ZW1wbnMiIA0KKyAgICAgICAgICAgICAgICAgICB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+DQorICAgICAgICAgICAgICAgYW5jZXN0b3I6Om15OktleU1hdGVyaWFsc1tASWQ9InRoZWNlcnQiXQ0KKyAgICAgICAgICAgIDwvWFBhdGg+DQorICAgICAgICAgIDwvVHJhbnNmb3JtPg0KKyAgICAgICAgPC9UcmFuc2Zvcm1zPg0KKyAgICAgIDwvUmV0cmlldmFsTWV0aG9kPg0KKyAgICA8L0tleUluZm8+DQorICA8L1NpZ25hdHVyZT4NCis8L0RvY3VtZW50Pg0KKyAgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZW1wL2tleS9zaWduYXR1cmUtcmV0cmlldmFsbWV0aG9kLWRzYXZhbHVlLnhtbCBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVtcC9rZXkvc2lnbmF0dXJlLXJldHJpZXZhbG1ldGhvZC1kc2F2YWx1ZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI0NTc1YwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVtcC9rZXkvc2lnbmF0dXJlLXJldHJpZXZhbG1ldGhvZC1kc2F2YWx1ZS54bWwKQEAgLTAsMCArMSwxNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICA8U2lnbmVkSW5mbz4KKyAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IiAvPgorICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiIC8+CisgICAgPFJlZmVyZW5jZSBVUkk9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1zdHlsZXNoZWV0Ij4KKyAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz4KKyAgICAgIDxEaWdlc3RWYWx1ZT42ME52WnZ0ZFRCKzdVbmxMcC9IMjRwN2g0YnM9PC9EaWdlc3RWYWx1ZT4KKyAgICA8L1JlZmVyZW5jZT4KKyAgPC9TaWduZWRJbmZvPgorICA8U2lnbmF0dXJlVmFsdWU+CisgICAgRmo5T3dTeHBKcHBEbmlob2hkdXhFVXF1OS9wNlRSOVBwZ05HYXBhaUJIR2NZMlFVREJhT0V3PT0KKyAgPC9TaWduYXR1cmVWYWx1ZT4KKyAgPEtleUluZm8+CisgICAgPFJldHJpZXZhbE1ldGhvZCBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjRFNBS2V5VmFsdWUiIFVSST0iZHNhdmFsdWUueG1sIiAvPgorICA8L0tleUluZm8+Cis8L1NpZ25hdHVyZT4KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVtcC9rZXkvc2lnbmF0dXJlLXJldHJpZXZhbG1ldGhvZC14NTA5ZGF0YS54bWwgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RlbXAva2V5L3NpZ25hdHVyZS1yZXRyaWV2YWxtZXRob2QteDUwOWRhdGEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwMGJkODYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RlbXAva2V5L3NpZ25hdHVyZS1yZXRyaWV2YWxtZXRob2QteDUwOWRhdGEueG1sCkBAIC0wLDAgKzEsNDEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgPFNpZ25lZEluZm8+CisgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIgLz4KKyAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIiAvPgorICAgIDxSZWZlcmVuY2UgVVJJPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldCI+CisgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+CisgICAgICA8RGlnZXN0VmFsdWU+NjBOdlp2dGRUQis3VW5sTHAvSDI0cDdoNGJzPTwvRGlnZXN0VmFsdWU+CisgICAgPC9SZWZlcmVuY2U+CisgIDwvU2lnbmVkSW5mbz4KKyAgPFNpZ25hdHVyZVZhbHVlPgorICAgIFpyUk94SWNPU0J2dDV6MmtyRWhRR1NWSW80b0F3VEp3R0FvRmlXdWN2dkV0WTlrMEwyUjVSVkhCbkhDems1R1QKKyAgICBrSEdhVDhTVXF0bkRlaUg2Vy8yRk5mY2lpVi93MXB4VVJ2TmN5VzhjWUNuMUI1WEY2OHZJTFhVYXB0V2YwREt3CisgICAgRHZDRlMrdUxoMEFDdUVVZnBlMUR4MWZ3Qjg1bHBLMmlRY3B4OWRQYUM0TT0KKyAgPC9TaWduYXR1cmVWYWx1ZT4KKyAgPEtleUluZm8+CisgICAgPCEtLQorICAgIDxYNTA5RGF0YT4KKyAgICAgIDxYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgIE1JSUN3ekNDQWl5Z0F3SUJBZ0lHQU9aNzVRaEhNQTBHQ1NxR1NJYjNEUUVCQlFVQU1HNHhDekFKQmdOVkJBWVQKKyAgICAgICAgQWtsRk1ROHdEUVlEVlFRSUV3WkVkV0pzYVc0eEpUQWpCZ05WQkFvVEhFSmhiSFJwYlc5eVpTQlVaV05vYm05cworICAgICAgICBiMmRwWlhNc0lFeDBaQzR4RVRBUEJnTlZCQXNUQ0ZndlUyVmpkWEpsTVJRd0VnWURWUVFERXd0WUwxTmxZM1Z5CisgICAgICAgIFpTQkRRVEFlRncwd01UQTFNVFV4TURBME5EVmFGdzB3TWpBMU1UVXhNREEwTXpkYU1Ha3hDekFKQmdOVkJBWVQKKyAgICAgICAgQWtsRk1ROHdEUVlEVlFRSUV3WkVkV0pzYVc0eEpUQWpCZ05WQkFvVEhFSmhiSFJwYlc5eVpTQlVaV05vYm05cworICAgICAgICBiMmRwWlhNc0lFeDBaQzR4RVRBUEJnTlZCQXNUQ0ZndlUyVmpkWEpsTVE4d0RRWURWUVFERXdaTmIzSnBaM1V3CisgICAgICAgIGdaOHdEUVlKS29aSWh2Y05BUUVCQlFBRGdZMEFNSUdKQW9HQkFMVDRGSmt4dStiQjVsT3dZYStpckliN3NKVTcKKyAgICAgICAgOXNSUWJZWW5mdzM1RDdOUWtpZytMdmkyTFhYb0E2QUJ1bGwyYkYrZ3Urc2dSemV6ek9zNlZzVEw4ejU3VEl6MgorICAgICAgICA0OEhhTUluRmpPaXFTQU5telFLbFh2MVBqWFN4U3lIUmkvM3hjOGdNZm1DeGVTUENaNVZwVWlRb0o1WnBXY0R6CisgICAgICAgIC9MS3ZiMGw5WDBZQnpNWmxBZ01CQUFHamNUQnZNQTRHQTFVZER3RUIvd1FFQXdJSGdEQVJCZ05WSFE0RUNnUUkKKyAgICAgICAgaGJpczM1bEljdTh3TlFZRFZSMFNCQzR3TElZcWFIUjBjRG92TDNkM2R5NWlZV3gwYVcxdmNtVXVZMjl0TDNCeQorICAgICAgICBiMlIxWTNSekwzaHpaV04xY21Vdk1CTUdBMVVkSXdRTU1BcUFDSVhzSHdxUGZ4clJNQTBHQ1NxR1NJYjNEUUVCCisgICAgICAgIEJRVUFBNEdCQUdTQmRQb3U1Q1dBaXlTNS9mNDZtMDBtSUlxTzN4bDZaWE9jL0RSYmxGNGdXbmVzZDJGNXYvczYKKyAgICAgICAgbEFicUs4K3dKTTZHeHZwT2tTcDZPMXE2aFpSeXpGODZRUGxYQ2ZoS0FYa2d6SFh0YjZQZlQybTl0MGlhd25qeQorICAgICAgICBQK295WW9mbkZVNUZGVk9DdWpTcm1GeDNGQ1UrV2c2UlQzdjFqUm9NM1lmTVlaWUV6ZlRUCisgICAgICA8L1g1MDlDZXJ0aWZpY2F0ZT4KKyAgICA8L1g1MDlEYXRhPgorICAgIC0tPgorICAgIDxSZXRyaWV2YWxNZXRob2QgVVJJPSIuL3g1MDlkYXRhLnhtbCIgLz4KKyAgICA8IS0tIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNYNTA5RGF0YSIgIC0tPgorICA8L0tleUluZm8+Cis8L1NpZ25hdHVyZT4KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVtcC9rZXkveDUwOWRhdGEueG1sIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZW1wL2tleS94NTA5ZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE3M2YxNQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVtcC9rZXkveDUwOWRhdGEueG1sCkBAIC0wLDAgKzEsMjAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8WDUwOURhdGEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgIDxYNTA5Q2VydGlmaWNhdGU+CisgICAgICAgIE1JSUN3ekNDQWl5Z0F3SUJBZ0lHQU9aNzVRaEhNQTBHQ1NxR1NJYjNEUUVCQlFVQU1HNHhDekFKQmdOVkJBWVQKKyAgICAgICAgQWtsRk1ROHdEUVlEVlFRSUV3WkVkV0pzYVc0eEpUQWpCZ05WQkFvVEhFSmhiSFJwYlc5eVpTQlVaV05vYm05cworICAgICAgICBiMmRwWlhNc0lFeDBaQzR4RVRBUEJnTlZCQXNUQ0ZndlUyVmpkWEpsTVJRd0VnWURWUVFERXd0WUwxTmxZM1Z5CisgICAgICAgIFpTQkRRVEFlRncwd01UQTFNVFV4TURBME5EVmFGdzB3TWpBMU1UVXhNREEwTXpkYU1Ha3hDekFKQmdOVkJBWVQKKyAgICAgICAgQWtsRk1ROHdEUVlEVlFRSUV3WkVkV0pzYVc0eEpUQWpCZ05WQkFvVEhFSmhiSFJwYlc5eVpTQlVaV05vYm05cworICAgICAgICBiMmRwWlhNc0lFeDBaQzR4RVRBUEJnTlZCQXNUQ0ZndlUyVmpkWEpsTVE4d0RRWURWUVFERXdaTmIzSnBaM1V3CisgICAgICAgIGdaOHdEUVlKS29aSWh2Y05BUUVCQlFBRGdZMEFNSUdKQW9HQkFMVDRGSmt4dStiQjVsT3dZYStpckliN3NKVTcKKyAgICAgICAgOXNSUWJZWW5mdzM1RDdOUWtpZytMdmkyTFhYb0E2QUJ1bGwyYkYrZ3Urc2dSemV6ek9zNlZzVEw4ejU3VEl6MgorICAgICAgICA0OEhhTUluRmpPaXFTQU5telFLbFh2MVBqWFN4U3lIUmkvM3hjOGdNZm1DeGVTUENaNVZwVWlRb0o1WnBXY0R6CisgICAgICAgIC9MS3ZiMGw5WDBZQnpNWmxBZ01CQUFHamNUQnZNQTRHQTFVZER3RUIvd1FFQXdJSGdEQVJCZ05WSFE0RUNnUUkKKyAgICAgICAgaGJpczM1bEljdTh3TlFZRFZSMFNCQzR3TElZcWFIUjBjRG92TDNkM2R5NWlZV3gwYVcxdmNtVXVZMjl0TDNCeQorICAgICAgICBiMlIxWTNSekwzaHpaV04xY21Vdk1CTUdBMVVkSXdRTU1BcUFDSVhzSHdxUGZ4clJNQTBHQ1NxR1NJYjNEUUVCCisgICAgICAgIEJRVUFBNEdCQUdTQmRQb3U1Q1dBaXlTNS9mNDZtMDBtSUlxTzN4bDZaWE9jL0RSYmxGNGdXbmVzZDJGNXYvczYKKyAgICAgICAgbEFicUs4K3dKTTZHeHZwT2tTcDZPMXE2aFpSeXpGODZRUGxYQ2ZoS0FYa2d6SFh0YjZQZlQybTl0MGlhd25qeQorICAgICAgICBQK295WW9mbkZVNUZGVk9DdWpTcm1GeDNGQ1UrV2c2UlQzdjFqUm9NM1lmTVlaWUV6ZlRUCisgICAgPC9YNTA5Q2VydGlmaWNhdGU+Cis8L1g1MDlEYXRhPgpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZW1wL251ZWhvbWVwYWdlIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZW1wL251ZWhvbWVwYWdlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjY2U3ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RlbXAvbnVlaG9tZXBhZ2UKQEAgLTAsMCArMSwyOSBAQAorPEhUTUw+DQorPEhFQUQ+DQorCTwhLS0gU3R5bGUgc2hlZXQgYWRkZWQgKDIxLjA5Ljk5KS0tPg0KKwk8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJOVUVfU3R5bGUuY3NzIj4NCis8IS0tIExhc3QgbW9kaWZpY2F0aW9uOiAxMC4xMS45OCBieSBOaWtvIFNjaHdlaXR6ZXIgLS0+DQorCTxNRVRBIE5hbWU9ImRlc2NyaXB0aW9uIiBDb250ZW50PSJJbnN0aXR1dCBmdWVyIE5hY2hyaWNodGVudWViZXJtaXR0bHVuZywgVU5JLVNpZWdlbiI+DQorICAgPE1FVEEgTmFtZT0ia2V5d29yZHMiIENvbnRlbnQ9IlVOSSxTaWVnZW4sSW5zdGl0dXQsTmFjaHJpY2h0ZW78YmVybWl0dGx1bmcsSW5zdGl0dXRlLERhdGEsQ29tbXVuaWNhdGlvbnMsU2VjdXJpdHksU2ljaGVyaGVpdCxLcnlwdG9ncmFwaGllLENyeXB0b2dyYXBoeSxEaWdpdGFsZSxNb2JpbGZ1bmtzeXN0ZW1lLERpZ2l0YWwsQ29tbXVuaWNhdGlvbixJbmZvcm1hdGlvbixBVE0sR1NNLFBESCxTREgsUEtJLEFjY2VzcyxSaWdodHMsUHJvZmlsZSxDZXJ0aWZpY2F0ZSxNYW5hZ2VtZW50Ij4NCisgICA8TUVUQSBOQU1FPSJDb250ZW50LUxhbmd1YWdlIiBDT05URU5UPSJkZSI+IA0KKw0KKzwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPg0KKzx0aXRsZT5Ib21lLVBhZ2UgZGVzIEluc3RpdHV0cyBmdWVyIE5hY2hyaWNodGVudWViZXJtaXR0bHVuZzwvdGl0bGU+DQorPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+DQorDQorDQorPEZSQU1FU0VUIENPTFM9IjE3MCwqIiBCT1JERVI9MCBNQVJHSU5XSURUSD0wIE1BUkdJTkhFSUdIVD0wIEZSQU1FQk9SREVSPTAgRlJBTUVTUEFDSU5HPTA+DQorCTxGUkFNRSBOQU1FPSJjb250ZW50c19mcmFtZSIgU1JDPSJjb250ZW50cy5odG1sIiBTQ1JPTExJTkc9IkF1dG8iIEJPUkRFUj0wIE1BUkdJTldJRFRIPTAgTUFSR0lOSEVJR0hUPTAgRlJBTUVCT1JERVI9MCBGUkFNRVNQQUNJTkc9MD4NCisJPEZSQU1FU0VUID48IS0tUk9XUz0iODAsKiI+IC0tPg0KKwkJPCEtLSA8ZnJhbWUgbmFtZT0iaGVhZGVyX2ZyYW1lIiBzcmM9ImhlYWRlci5odG1sIiBzY3JvbGxpbmc9Ik5vIiBGUkFNRUJPUkRFUj0iTm8iPiAtLT4NCisJCTxmcmFtZSBuYW1lPSJtYWluX2ZyYW1lIiBzcmM9InN0YXJ0Lmh0bWwiIHNjcm9sbGluZz0iQXV0byIgRlJBTUVCT1JERVI9Ik5vIj4NCisJPC9GUkFNRVNFVD4NCis8L0ZSQU1FU0VUPg0KKw0KKw0KKzwvSEVBRD4NCisNCis8Qk9EWT4gDQorDQorPC9CT0RZPg0KKzwvSFRNTD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RlbXAvc2lnbmF0dXJlL3NpZ25hdHVyZS1iYWQtYzE0bi1hbGdvLnhtbCBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVtcC9zaWduYXR1cmUvc2lnbmF0dXJlLWJhZC1jMTRuLWFsZ28ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkYzI5N2IKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RlbXAvc2lnbmF0dXJlL3NpZ25hdHVyZS1iYWQtYzE0bi1hbGdvLnhtbApAQCAtMCwwICsxLDU1IEBACis8ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKzxkczpTaWduZWRJbmZvPgorPGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvYmFkLWMxNG4tYWxnbyI+PC9kczpDYW5vbmljYWxpemF0aW9uTWV0aG9kPgorPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSI+PC9kczpTaWduYXR1cmVNZXRob2Q+Cis8ZHM6UmVmZXJlbmNlIFVSST0iI1RoZUZpcnN0T2JqZWN0Ij4KKzxkczpUcmFuc2Zvcm1zPgorPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1I1dpdGhDb21tZW50cyI+PC9kczpUcmFuc2Zvcm0+Cis8L2RzOlRyYW5zZm9ybXM+Cis8ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvZHM6RGlnZXN0TWV0aG9kPgorPGRzOkRpZ2VzdFZhbHVlPmlwYnMwVXlhZmtkUkljZklvOXp5WkxjZStDRT08L2RzOkRpZ2VzdFZhbHVlPgorPC9kczpSZWZlcmVuY2U+Cis8L2RzOlNpZ25lZEluZm8+Cis8ZHM6U2lnbmF0dXJlVmFsdWU+VzFDNVpUMm5Rd1hkK3pJZVoxTlVGang1cW4wRVJ5aUxuU2VZU1MrRkRHOXlPcEsxRks4QVZBPT08L2RzOlNpZ25hdHVyZVZhbHVlPgorPGRzOktleUluZm8+Cis8ZHM6WDUwOURhdGE+Cis8ZHM6WDUwOUNlcnRpZmljYXRlPgorTUlJQzlqQ0NBclFDQkRydXFpb3dDd1lIS29aSXpqZ0VBd1VBTUdFeEN6QUpCZ05WQkFZVEFrUkZNUjB3R3dZRFZRUUtFeFJWYm1sMgorWlhKemFYUjVJRzltSUZOcFpXZGxiakVRTUE0R0ExVUVDeE1IUmtJeE1rNVZSVEVoTUI4R0ExVUVBeE1ZUTJoeWFYTjBhV0Z1SUVkbAorZFdWeUxWQnZiR3h0WVc1dU1CNFhEVEF4TURVd01URXlNakExT0ZvWERUQTJNVEF5TWpFeU1qQTFPRm93WVRFTE1Ba0dBMVVFQmhNQworUkVVeEhUQWJCZ05WQkFvVEZGVnVhWFpsY25OcGRIa2diMllnVTJsbFoyVnVNUkF3RGdZRFZRUUxFd2RHUWpFeVRsVkZNU0V3SHdZRAorVlFRREV4aERhSEpwYzNScFlXNGdSMlYxWlhJdFVHOXNiRzFoYm00d2dnRzNNSUlCTEFZSEtvWkl6amdFQVRDQ0FSOENnWUVBL1g5VAorZ1IxMUVpbFMzMHFjTHV6azUvWVJ0MUk4NzBRQXd4NC9nTFpSSm1sRlhVQWlVZnRaUFkxWStyL0Y5Ym93OXN1YlZXelhnVHVBSFRSdgorOG1aZ3QydVpVS1drbjUvb0JIc1FJc0pQdTZuWC9yZkdHL2c3VitmR3FLWVZEd1Q3Zy9iVHhSN0RBalZVRTFvV2tUTDJkZk91SzJIWAorS3UveUlnTVpuZEZJQWNjQ0ZRQ1hZRkNQRlNNTHpMS1N1WUtpNjRRTDhGZ2M5UUtCZ1FEMzRhQ0YxcHM5M3N1OHExdzJ1RmU1ZVpTdgordS9vNjZvTDVWMHdMUFFlQ1oxRlpWNDY2MUZsUDVuRUhFSUdBdEVrV2NTUG9UQ2dXRTdmUENUS015S2JoUEJaNmkxUjhqU2pnbzY0ZQorSzdPbWRaRnVvMzhMK2lFMVl2SDdZbm9CSkR2TXBQRytxRkdRaWFpRDMrRmE1WjhHa290bVhvQjdWU1ZrQVV3Ny9zOUpLZ09CaEFBQworZ1lBU1dmbitHMWsvbldudGo5alg3Tms1SkthaUxaOUJMUjE2ZUpKeHFmZjMzVEhMZmRHczk4WG1oMm9SV1pWaDlQTVY4b1RQM2hwUgorY1JpcGpaVVpWRUlxc0JsT0dUVkxDZzRINVRKODFKV09pcHJoK21raENsTnFVcjhsNUh1N0ZCU3ZRQjZpbnJ5ZXZhN2owYUtOaUl2SworOHZmSFRpVVpwbnlOUmhrdmVCbE0wakFMQmdjcWhrak9PQVFEQlFBREx3QXdMQUlVUERkL1VtQjlHZUhxdkdqbnkzMEJ2anQwQWtVQworRkE5YWI3MmtLdUI1Z2VZR2Vja2JCcmNnUG5aaworPC9kczpYNTA5Q2VydGlmaWNhdGU+Cis8L2RzOlg1MDlEYXRhPgorPGRzOktleVZhbHVlPgorPGRzOkRTQUtleVZhbHVlPgorPGRzOlA+CisvWDlUZ1IxMUVpbFMzMHFjTHV6azUvWVJ0MUk4NzBRQXd4NC9nTFpSSm1sRlhVQWlVZnRaUFkxWStyL0Y5Ym93OXN1YlZXelhnVHVBCitIVFJ2OG1aZ3QydVpVS1drbjUvb0JIc1FJc0pQdTZuWC9yZkdHL2c3VitmR3FLWVZEd1Q3Zy9iVHhSN0RBalZVRTFvV2tUTDJkZk91CitLMkhYS3UveUlnTVpuZEZJQWNjPQorPC9kczpQPgorPGRzOlE+bDJCUWp4VWpDOHl5a3JtQ291dUVDL0JZSFBVPTwvZHM6UT4KKzxkczpHPgorOStHZ2hkYWJQZDdMdkt0Y05yaFh1WG1Vcjd2Nk91cUMrVmRNQ3owSGdtZFJXVmVPdXRSWlQrWnhCeENCZ0xSSkZuRWo2RXdvRmhPMworendreWpNaW00VHdXZW90VWZJMG80S091SGl1enBuV1JicU4vQy9vaE5XTHgrMko2QVNRN3pLVHh2cWhSa0ltb2c5L2hXdVdmQnBLTAorWmw2QWUxVWxaQUZNTy83UFNTbz0KKzwvZHM6Rz4KKzxkczpZPgorRWxuNS9odFpQNTFwN1kvWTErelpPU1Ntb2kyZlFTMGRlbmlTY2FuMzk5MHh5MzNSclBmRjVvZHFFVm1WWWZUekZmS0V6OTRhVVhFWQorcVkyVkdWUkNLckFaVGhrMVN3b09CK1V5Zk5TVmpvcWE0ZnBwSVFwVGFsSy9KZVI3dXhRVXIwQWVvcDY4bnIydTQ5R2lqWWlMeXZMMworeDA0bEdhWjhqVVlaTDNnWlROST0KKzwvZHM6WT4KKzwvZHM6RFNBS2V5VmFsdWU+Cis8L2RzOktleVZhbHVlPgorPC9kczpLZXlJbmZvPgorPGRzOk9iamVjdCBJZD0iVGhlRmlyc3RPYmplY3QiPjxJbnNpZGVPYmplY3Q+QSB0ZXh0IGluIGEgYm94PC9JbnNpZGVPYmplY3Q+PC9kczpPYmplY3Q+Cis8L2RzOlNpZ25hdHVyZT4KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVtcC9zaWduYXR1cmUvc2lnbmF0dXJlLWJhZC1zaWctYWxnby54bWwgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RlbXAvc2lnbmF0dXJlL3NpZ25hdHVyZS1iYWQtc2lnLWFsZ28ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkYWJlNWUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RlbXAvc2lnbmF0dXJlL3NpZ25hdHVyZS1iYWQtc2lnLWFsZ28ueG1sCkBAIC0wLDAgKzEsNTUgQEAKKzxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorPGRzOlNpZ25lZEluZm8+Cis8ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ij48L2RzOkNhbm9uaWNhbGl6YXRpb25NZXRob2Q+Cis8ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2JhZC1zaWctYWxnbyI+PC9kczpTaWduYXR1cmVNZXRob2Q+Cis8ZHM6UmVmZXJlbmNlIFVSST0iI1RoZUZpcnN0T2JqZWN0Ij4KKzxkczpUcmFuc2Zvcm1zPgorPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1I1dpdGhDb21tZW50cyI+PC9kczpUcmFuc2Zvcm0+Cis8L2RzOlRyYW5zZm9ybXM+Cis8ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvZHM6RGlnZXN0TWV0aG9kPgorPGRzOkRpZ2VzdFZhbHVlPmlwYnMwVXlhZmtkUkljZklvOXp5WkxjZStDRT08L2RzOkRpZ2VzdFZhbHVlPgorPC9kczpSZWZlcmVuY2U+Cis8L2RzOlNpZ25lZEluZm8+Cis8ZHM6U2lnbmF0dXJlVmFsdWU+VzFDNVpUMm5Rd1hkK3pJZVoxTlVGang1cW4wRVJ5aUxuU2VZU1MrRkRHOXlPcEsxRks4QVZBPT08L2RzOlNpZ25hdHVyZVZhbHVlPgorPGRzOktleUluZm8+Cis8ZHM6WDUwOURhdGE+Cis8ZHM6WDUwOUNlcnRpZmljYXRlPgorTUlJQzlqQ0NBclFDQkRydXFpb3dDd1lIS29aSXpqZ0VBd1VBTUdFeEN6QUpCZ05WQkFZVEFrUkZNUjB3R3dZRFZRUUtFeFJWYm1sMgorWlhKemFYUjVJRzltSUZOcFpXZGxiakVRTUE0R0ExVUVDeE1IUmtJeE1rNVZSVEVoTUI4R0ExVUVBeE1ZUTJoeWFYTjBhV0Z1SUVkbAorZFdWeUxWQnZiR3h0WVc1dU1CNFhEVEF4TURVd01URXlNakExT0ZvWERUQTJNVEF5TWpFeU1qQTFPRm93WVRFTE1Ba0dBMVVFQmhNQworUkVVeEhUQWJCZ05WQkFvVEZGVnVhWFpsY25OcGRIa2diMllnVTJsbFoyVnVNUkF3RGdZRFZRUUxFd2RHUWpFeVRsVkZNU0V3SHdZRAorVlFRREV4aERhSEpwYzNScFlXNGdSMlYxWlhJdFVHOXNiRzFoYm00d2dnRzNNSUlCTEFZSEtvWkl6amdFQVRDQ0FSOENnWUVBL1g5VAorZ1IxMUVpbFMzMHFjTHV6azUvWVJ0MUk4NzBRQXd4NC9nTFpSSm1sRlhVQWlVZnRaUFkxWStyL0Y5Ym93OXN1YlZXelhnVHVBSFRSdgorOG1aZ3QydVpVS1drbjUvb0JIc1FJc0pQdTZuWC9yZkdHL2c3VitmR3FLWVZEd1Q3Zy9iVHhSN0RBalZVRTFvV2tUTDJkZk91SzJIWAorS3UveUlnTVpuZEZJQWNjQ0ZRQ1hZRkNQRlNNTHpMS1N1WUtpNjRRTDhGZ2M5UUtCZ1FEMzRhQ0YxcHM5M3N1OHExdzJ1RmU1ZVpTdgordS9vNjZvTDVWMHdMUFFlQ1oxRlpWNDY2MUZsUDVuRUhFSUdBdEVrV2NTUG9UQ2dXRTdmUENUS015S2JoUEJaNmkxUjhqU2pnbzY0ZQorSzdPbWRaRnVvMzhMK2lFMVl2SDdZbm9CSkR2TXBQRytxRkdRaWFpRDMrRmE1WjhHa290bVhvQjdWU1ZrQVV3Ny9zOUpLZ09CaEFBQworZ1lBU1dmbitHMWsvbldudGo5alg3Tms1SkthaUxaOUJMUjE2ZUpKeHFmZjMzVEhMZmRHczk4WG1oMm9SV1pWaDlQTVY4b1RQM2hwUgorY1JpcGpaVVpWRUlxc0JsT0dUVkxDZzRINVRKODFKV09pcHJoK21raENsTnFVcjhsNUh1N0ZCU3ZRQjZpbnJ5ZXZhN2owYUtOaUl2SworOHZmSFRpVVpwbnlOUmhrdmVCbE0wakFMQmdjcWhrak9PQVFEQlFBREx3QXdMQUlVUERkL1VtQjlHZUhxdkdqbnkzMEJ2anQwQWtVQworRkE5YWI3MmtLdUI1Z2VZR2Vja2JCcmNnUG5aaworPC9kczpYNTA5Q2VydGlmaWNhdGU+Cis8L2RzOlg1MDlEYXRhPgorPGRzOktleVZhbHVlPgorPGRzOkRTQUtleVZhbHVlPgorPGRzOlA+CisvWDlUZ1IxMUVpbFMzMHFjTHV6azUvWVJ0MUk4NzBRQXd4NC9nTFpSSm1sRlhVQWlVZnRaUFkxWStyL0Y5Ym93OXN1YlZXelhnVHVBCitIVFJ2OG1aZ3QydVpVS1drbjUvb0JIc1FJc0pQdTZuWC9yZkdHL2c3VitmR3FLWVZEd1Q3Zy9iVHhSN0RBalZVRTFvV2tUTDJkZk91CitLMkhYS3UveUlnTVpuZEZJQWNjPQorPC9kczpQPgorPGRzOlE+bDJCUWp4VWpDOHl5a3JtQ291dUVDL0JZSFBVPTwvZHM6UT4KKzxkczpHPgorOStHZ2hkYWJQZDdMdkt0Y05yaFh1WG1Vcjd2Nk91cUMrVmRNQ3owSGdtZFJXVmVPdXRSWlQrWnhCeENCZ0xSSkZuRWo2RXdvRmhPMworendreWpNaW00VHdXZW90VWZJMG80S091SGl1enBuV1JicU4vQy9vaE5XTHgrMko2QVNRN3pLVHh2cWhSa0ltb2c5L2hXdVdmQnBLTAorWmw2QWUxVWxaQUZNTy83UFNTbz0KKzwvZHM6Rz4KKzxkczpZPgorRWxuNS9odFpQNTFwN1kvWTErelpPU1Ntb2kyZlFTMGRlbmlTY2FuMzk5MHh5MzNSclBmRjVvZHFFVm1WWWZUekZmS0V6OTRhVVhFWQorcVkyVkdWUkNLckFaVGhrMVN3b09CK1V5Zk5TVmpvcWE0ZnBwSVFwVGFsSy9KZVI3dXhRVXIwQWVvcDY4bnIydTQ5R2lqWWlMeXZMMworeDA0bEdhWjhqVVlaTDNnWlROST0KKzwvZHM6WT4KKzwvZHM6RFNBS2V5VmFsdWU+Cis8L2RzOktleVZhbHVlPgorPC9kczpLZXlJbmZvPgorPGRzOk9iamVjdCBJZD0iVGhlRmlyc3RPYmplY3QiPjxJbnNpZGVPYmplY3Q+QSB0ZXh0IGluIGEgYm94PC9JbnNpZGVPYmplY3Q+PC9kczpPYmplY3Q+Cis8L2RzOlNpZ25hdHVyZT4KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVtcC9zaWduYXR1cmUvc2lnbmF0dXJlLWJhZC10cmFuc2Zvcm0tYWxnby54bWwgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RlbXAvc2lnbmF0dXJlL3NpZ25hdHVyZS1iYWQtdHJhbnNmb3JtLWFsZ28ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyYzQ3MTMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RlbXAvc2lnbmF0dXJlL3NpZ25hdHVyZS1iYWQtdHJhbnNmb3JtLWFsZ28ueG1sCkBAIC0wLDAgKzEsNTUgQEAKKzxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorPGRzOlNpZ25lZEluZm8+Cis8ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ij48L2RzOkNhbm9uaWNhbGl6YXRpb25NZXRob2Q+Cis8ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIj48L2RzOlNpZ25hdHVyZU1ldGhvZD4KKzxkczpSZWZlcmVuY2UgVVJJPSIjVGhlRmlyc3RPYmplY3QiPgorPGRzOlRyYW5zZm9ybXM+Cis8ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2JhZC10cmFuc2Zvcm0tYWxnbyI+PC9kczpUcmFuc2Zvcm0+Cis8L2RzOlRyYW5zZm9ybXM+Cis8ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvZHM6RGlnZXN0TWV0aG9kPgorPGRzOkRpZ2VzdFZhbHVlPmlwYnMwVXlhZmtkUkljZklvOXp5WkxjZStDRT08L2RzOkRpZ2VzdFZhbHVlPgorPC9kczpSZWZlcmVuY2U+Cis8L2RzOlNpZ25lZEluZm8+Cis8ZHM6U2lnbmF0dXJlVmFsdWU+VzFDNVpUMm5Rd1hkK3pJZVoxTlVGang1cW4wRVJ5aUxuU2VZU1MrRkRHOXlPcEsxRks4QVZBPT08L2RzOlNpZ25hdHVyZVZhbHVlPgorPGRzOktleUluZm8+Cis8ZHM6WDUwOURhdGE+Cis8ZHM6WDUwOUNlcnRpZmljYXRlPgorTUlJQzlqQ0NBclFDQkRydXFpb3dDd1lIS29aSXpqZ0VBd1VBTUdFeEN6QUpCZ05WQkFZVEFrUkZNUjB3R3dZRFZRUUtFeFJWYm1sMgorWlhKemFYUjVJRzltSUZOcFpXZGxiakVRTUE0R0ExVUVDeE1IUmtJeE1rNVZSVEVoTUI4R0ExVUVBeE1ZUTJoeWFYTjBhV0Z1SUVkbAorZFdWeUxWQnZiR3h0WVc1dU1CNFhEVEF4TURVd01URXlNakExT0ZvWERUQTJNVEF5TWpFeU1qQTFPRm93WVRFTE1Ba0dBMVVFQmhNQworUkVVeEhUQWJCZ05WQkFvVEZGVnVhWFpsY25OcGRIa2diMllnVTJsbFoyVnVNUkF3RGdZRFZRUUxFd2RHUWpFeVRsVkZNU0V3SHdZRAorVlFRREV4aERhSEpwYzNScFlXNGdSMlYxWlhJdFVHOXNiRzFoYm00d2dnRzNNSUlCTEFZSEtvWkl6amdFQVRDQ0FSOENnWUVBL1g5VAorZ1IxMUVpbFMzMHFjTHV6azUvWVJ0MUk4NzBRQXd4NC9nTFpSSm1sRlhVQWlVZnRaUFkxWStyL0Y5Ym93OXN1YlZXelhnVHVBSFRSdgorOG1aZ3QydVpVS1drbjUvb0JIc1FJc0pQdTZuWC9yZkdHL2c3VitmR3FLWVZEd1Q3Zy9iVHhSN0RBalZVRTFvV2tUTDJkZk91SzJIWAorS3UveUlnTVpuZEZJQWNjQ0ZRQ1hZRkNQRlNNTHpMS1N1WUtpNjRRTDhGZ2M5UUtCZ1FEMzRhQ0YxcHM5M3N1OHExdzJ1RmU1ZVpTdgordS9vNjZvTDVWMHdMUFFlQ1oxRlpWNDY2MUZsUDVuRUhFSUdBdEVrV2NTUG9UQ2dXRTdmUENUS015S2JoUEJaNmkxUjhqU2pnbzY0ZQorSzdPbWRaRnVvMzhMK2lFMVl2SDdZbm9CSkR2TXBQRytxRkdRaWFpRDMrRmE1WjhHa290bVhvQjdWU1ZrQVV3Ny9zOUpLZ09CaEFBQworZ1lBU1dmbitHMWsvbldudGo5alg3Tms1SkthaUxaOUJMUjE2ZUpKeHFmZjMzVEhMZmRHczk4WG1oMm9SV1pWaDlQTVY4b1RQM2hwUgorY1JpcGpaVVpWRUlxc0JsT0dUVkxDZzRINVRKODFKV09pcHJoK21raENsTnFVcjhsNUh1N0ZCU3ZRQjZpbnJ5ZXZhN2owYUtOaUl2SworOHZmSFRpVVpwbnlOUmhrdmVCbE0wakFMQmdjcWhrak9PQVFEQlFBREx3QXdMQUlVUERkL1VtQjlHZUhxdkdqbnkzMEJ2anQwQWtVQworRkE5YWI3MmtLdUI1Z2VZR2Vja2JCcmNnUG5aaworPC9kczpYNTA5Q2VydGlmaWNhdGU+Cis8L2RzOlg1MDlEYXRhPgorPGRzOktleVZhbHVlPgorPGRzOkRTQUtleVZhbHVlPgorPGRzOlA+CisvWDlUZ1IxMUVpbFMzMHFjTHV6azUvWVJ0MUk4NzBRQXd4NC9nTFpSSm1sRlhVQWlVZnRaUFkxWStyL0Y5Ym93OXN1YlZXelhnVHVBCitIVFJ2OG1aZ3QydVpVS1drbjUvb0JIc1FJc0pQdTZuWC9yZkdHL2c3VitmR3FLWVZEd1Q3Zy9iVHhSN0RBalZVRTFvV2tUTDJkZk91CitLMkhYS3UveUlnTVpuZEZJQWNjPQorPC9kczpQPgorPGRzOlE+bDJCUWp4VWpDOHl5a3JtQ291dUVDL0JZSFBVPTwvZHM6UT4KKzxkczpHPgorOStHZ2hkYWJQZDdMdkt0Y05yaFh1WG1Vcjd2Nk91cUMrVmRNQ3owSGdtZFJXVmVPdXRSWlQrWnhCeENCZ0xSSkZuRWo2RXdvRmhPMworendreWpNaW00VHdXZW90VWZJMG80S091SGl1enBuV1JicU4vQy9vaE5XTHgrMko2QVNRN3pLVHh2cWhSa0ltb2c5L2hXdVdmQnBLTAorWmw2QWUxVWxaQUZNTy83UFNTbz0KKzwvZHM6Rz4KKzxkczpZPgorRWxuNS9odFpQNTFwN1kvWTErelpPU1Ntb2kyZlFTMGRlbmlTY2FuMzk5MHh5MzNSclBmRjVvZHFFVm1WWWZUekZmS0V6OTRhVVhFWQorcVkyVkdWUkNLckFaVGhrMVN3b09CK1V5Zk5TVmpvcWE0ZnBwSVFwVGFsSy9KZVI3dXhRVXIwQWVvcDY4bnIydTQ5R2lqWWlMeXZMMworeDA0bEdhWjhqVVlaTDNnWlROST0KKzwvZHM6WT4KKzwvZHM6RFNBS2V5VmFsdWU+Cis8L2RzOktleVZhbHVlPgorPC9kczpLZXlJbmZvPgorPGRzOk9iamVjdCBJZD0iVGhlRmlyc3RPYmplY3QiPjxJbnNpZGVPYmplY3Q+QSB0ZXh0IGluIGEgYm94PC9JbnNpZGVPYmplY3Q+PC9kczpPYmplY3Q+Cis8L2RzOlNpZ25hdHVyZT4KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVtcC9zaWduYXR1cmUvc2lnbmF0dXJlLWdvb2QueG1sIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZW1wL3NpZ25hdHVyZS9zaWduYXR1cmUtZ29vZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNlMzNhYwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVtcC9zaWduYXR1cmUvc2lnbmF0dXJlLWdvb2QueG1sCkBAIC0wLDAgKzEsNTUgQEAKKzxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorPGRzOlNpZ25lZEluZm8+Cis8ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ij48L2RzOkNhbm9uaWNhbGl6YXRpb25NZXRob2Q+Cis8ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIj48L2RzOlNpZ25hdHVyZU1ldGhvZD4KKzxkczpSZWZlcmVuY2UgVVJJPSIjVGhlRmlyc3RPYmplY3QiPgorPGRzOlRyYW5zZm9ybXM+Cis8ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUjV2l0aENvbW1lbnRzIj48L2RzOlRyYW5zZm9ybT4KKzwvZHM6VHJhbnNmb3Jtcz4KKzxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9kczpEaWdlc3RNZXRob2Q+Cis8ZHM6RGlnZXN0VmFsdWU+aXBiczBVeWFma2RSSWNmSW85enlaTGNlK0NFPTwvZHM6RGlnZXN0VmFsdWU+Cis8L2RzOlJlZmVyZW5jZT4KKzwvZHM6U2lnbmVkSW5mbz4KKzxkczpTaWduYXR1cmVWYWx1ZT5XMUM1WlQyblF3WGQrekllWjFOVUZqeDVxbjBFUnlpTG5TZVlTUytGREc5eU9wSzFGSzhBVkE9PTwvZHM6U2lnbmF0dXJlVmFsdWU+Cis8ZHM6S2V5SW5mbz4KKzxkczpYNTA5RGF0YT4KKzxkczpYNTA5Q2VydGlmaWNhdGU+CitNSUlDOWpDQ0FyUUNCRHJ1cWlvd0N3WUhLb1pJempnRUF3VUFNR0V4Q3pBSkJnTlZCQVlUQWtSRk1SMHdHd1lEVlFRS0V4UlZibWwyCitaWEp6YVhSNUlHOW1JRk5wWldkbGJqRVFNQTRHQTFVRUN4TUhSa0l4TWs1VlJURWhNQjhHQTFVRUF4TVlRMmh5YVhOMGFXRnVJRWRsCitkV1Z5TFZCdmJHeHRZVzV1TUI0WERUQXhNRFV3TVRFeU1qQTFPRm9YRFRBMk1UQXlNakV5TWpBMU9Gb3dZVEVMTUFrR0ExVUVCaE1DCitSRVV4SFRBYkJnTlZCQW9URkZWdWFYWmxjbk5wZEhrZ2IyWWdVMmxsWjJWdU1SQXdEZ1lEVlFRTEV3ZEdRakV5VGxWRk1TRXdId1lECitWUVFERXhoRGFISnBjM1JwWVc0Z1IyVjFaWEl0VUc5c2JHMWhibTR3Z2dHM01JSUJMQVlIS29aSXpqZ0VBVENDQVI4Q2dZRUEvWDlUCitnUjExRWlsUzMwcWNMdXprNS9ZUnQxSTg3MFFBd3g0L2dMWlJKbWxGWFVBaVVmdFpQWTFZK3IvRjlib3c5c3ViVld6WGdUdUFIVFJ2Cis4bVpndDJ1WlVLV2tuNS9vQkhzUUlzSlB1Nm5YL3JmR0cvZzdWK2ZHcUtZVkR3VDdnL2JUeFI3REFqVlVFMW9Xa1RMMmRmT3VLMkhYCitLdS95SWdNWm5kRklBY2NDRlFDWFlGQ1BGU01MekxLU3VZS2k2NFFMOEZnYzlRS0JnUUQzNGFDRjFwczkzc3U4cTF3MnVGZTVlWlN2Cit1L282Nm9MNVYwd0xQUWVDWjFGWlY0NjYxRmxQNW5FSEVJR0F0RWtXY1NQb1RDZ1dFN2ZQQ1RLTXlLYmhQQlo2aTFSOGpTamdvNjRlCitLN09tZFpGdW8zOEwraUUxWXZIN1lub0JKRHZNcFBHK3FGR1FpYWlEMytGYTVaOEdrb3RtWG9CN1ZTVmtBVXc3L3M5SktnT0JoQUFDCitnWUFTV2ZuK0cxay9uV250ajlqWDdOazVKS2FpTFo5QkxSMTZlSkp4cWZmMzNUSExmZEdzOThYbWgyb1JXWlZoOVBNVjhvVFAzaHBSCitjUmlwalpVWlZFSXFzQmxPR1RWTENnNEg1VEo4MUpXT2lwcmgrbWtoQ2xOcVVyOGw1SHU3RkJTdlFCNmlucnlldmE3ajBhS05pSXZLCis4dmZIVGlVWnBueU5SaGt2ZUJsTTBqQUxCZ2NxaGtqT09BUURCUUFETHdBd0xBSVVQRGQvVW1COUdlSHF2R2pueTMwQnZqdDBBa1VDCitGQTlhYjcya0t1QjVnZVlHZWNrYkJyY2dQblprCis8L2RzOlg1MDlDZXJ0aWZpY2F0ZT4KKzwvZHM6WDUwOURhdGE+Cis8ZHM6S2V5VmFsdWU+Cis8ZHM6RFNBS2V5VmFsdWU+Cis8ZHM6UD4KKy9YOVRnUjExRWlsUzMwcWNMdXprNS9ZUnQxSTg3MFFBd3g0L2dMWlJKbWxGWFVBaVVmdFpQWTFZK3IvRjlib3c5c3ViVld6WGdUdUEKK0hUUnY4bVpndDJ1WlVLV2tuNS9vQkhzUUlzSlB1Nm5YL3JmR0cvZzdWK2ZHcUtZVkR3VDdnL2JUeFI3REFqVlVFMW9Xa1RMMmRmT3UKK0sySFhLdS95SWdNWm5kRklBY2M9Cis8L2RzOlA+Cis8ZHM6UT5sMkJRanhVakM4eXlrcm1Db3V1RUMvQllIUFU9PC9kczpRPgorPGRzOkc+Cis5K0dnaGRhYlBkN0x2S3RjTnJoWHVYbVVyN3Y2T3VxQytWZE1DejBIZ21kUldWZU91dFJaVCtaeEJ4Q0JnTFJKRm5FajZFd29GaE8zCit6d2t5ak1pbTRUd1dlb3RVZkkwbzRLT3VIaXV6cG5XUmJxTi9DL29oTldMeCsySjZBU1E3ektUeHZxaFJrSW1vZzkvaFd1V2ZCcEtMCitabDZBZTFVbFpBRk1PLzdQU1NvPQorPC9kczpHPgorPGRzOlk+CitFbG41L2h0WlA1MXA3WS9ZMSt6Wk9TU21vaTJmUVMwZGVuaVNjYW4zOTkweHkzM1JyUGZGNW9kcUVWbVZZZlR6RmZLRXo5NGFVWEVZCitxWTJWR1ZSQ0tyQVpUaGsxU3dvT0IrVXlmTlNWam9xYTRmcHBJUXBUYWxLL0plUjd1eFFVcjBBZW9wNjhucjJ1NDlHaWpZaUx5dkwzCit4MDRsR2FaOGpVWVpMM2daVE5JPQorPC9kczpZPgorPC9kczpEU0FLZXlWYWx1ZT4KKzwvZHM6S2V5VmFsdWU+Cis8L2RzOktleUluZm8+Cis8ZHM6T2JqZWN0IElkPSJUaGVGaXJzdE9iamVjdCI+PEluc2lkZU9iamVjdD5BIHRleHQgaW4gYSBib3g8L0luc2lkZU9iamVjdD48L2RzOk9iamVjdD4KKzwvZHM6U2lnbmF0dXJlPgpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0Y2FzZXMvUkVBRE1FIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0Y2FzZXMvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3NGQ3MDAKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3RjYXNlcy9SRUFETUUKQEAgLTAsMCArMSw5IEBACitUaGVzZSBhcmUgdGVzdCBjYXNlcyB0aGF0IGhhdmUgYmVlbiBkaXNjb3ZlcmVkIHRvIHRlc3QgcGFydGljdWxhcgordHlwZXMgb2YgdHJhbnNmb3JtcyBvciBpbnRlcmFjdGlvbnMgdGhhdCBjYW4gY2F1c2UgcHJvYmxlbXMuCisKK0luIGdlbmVyYWwgdGhleSBhcmUgcHJvdmlkZWQgdmlhIGJ1ZyByZXBvcnRzIGZyb20gZW5kIHVzZXJzLgorCitTQU1QMkFydGlmYWN0UmVzcG9uc2UueG1sIC0gUHJvdmlkZWQgYnkgU2NvdHQgQ2FudG9yLiAgVGVzdHMKK2VudmVsb3BlZCB0cmFuc2Zvcm1zIHRoYXQgbWFrZSB1c2Ugb2YgbmFtZXNwYWNlcyBmcm9tIHBhcmVudAorbm9kZXMgdGhhdCBhcmUgbm90IGluIHRoZSBpbnB1dCBub2Rlc2V0LgorCmRpZmYgLS1naXQgYS9kYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3RjYXNlcy9TQU1MMkFydGlmYWN0UmVzcG9uc2UueG1sIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0Y2FzZXMvU0FNTDJBcnRpZmFjdFJlc3BvbnNlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45Mjc3NjZkCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0Y2FzZXMvU0FNTDJBcnRpZmFjdFJlc3BvbnNlLnhtbApAQCAtMCwwICsxLDMwIEBACis8c2FtbHA6QXJ0aWZhY3RSZXNwb25zZSB4bWxuczpzYW1scD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIiBJRD0iX2U1ZTU1M2Y1MWZlMWEwMDkzNzRiZGYyMTg2YTY4NWQ4IiBJc3N1ZUluc3RhbnQ9IjIwMDYtMTAtMTFUMDM6MTI6NTlaIiBWZXJzaW9uPSIyLjAiPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbHA6U3RhdHVzPjxzYW1scDpSZXNwb25zZSBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zcC5leGFtcGxlLm9yZy9TQU1ML1BPU1QiIElEPSJyaWRlbnQiIElzc3VlSW5zdGFudD0iMTk3MC0wMS0wMlQwMTowMTowMi4xMDBaIiBWZXJzaW9uPSIyLjAiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPjxzYW1sOklzc3Vlcj5odHRwczovL2lkcC5leGFtcGxlLm9yZy88L3NhbWw6SXNzdWVyPjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorPGRzOlNpZ25lZEluZm8+Cis8ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgorPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPgorPGRzOlJlZmVyZW5jZSBVUkk9IiNyaWRlbnQiPgorPGRzOlRyYW5zZm9ybXM+Cis8ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz4KKzxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KKzwvZHM6VHJhbnNmb3Jtcz4KKzxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPgorPGRzOkRpZ2VzdFZhbHVlPlU1NjJBSWJ3UThpNWtRY3hPalRmWUFzcWJPcz08L2RzOkRpZ2VzdFZhbHVlPgorPC9kczpSZWZlcmVuY2U+Cis8L2RzOlNpZ25lZEluZm8+Cis8ZHM6U2lnbmF0dXJlVmFsdWU+bjVBR3JPV3kxV2taV2FJVnJYbHIxaUJlWjhZc0dKTEhzUytuNDcyd21GeEhuL0dUOFBzQ0RTNzhVanBJRlZ4WQorcUs0RzNPNXA3clF3ZThJR1llV2VHM3BqY2x2WGNQNktIMUN3amxKTDNuZGFacXUxdFZkWXF4M2ZiVEFLNVFSVgorZ0RVbHlqZTJUUkFnRjFZU3l5dW5SbUpnT0VYSitKVGU4YnJDbVRya3IwRT08L2RzOlNpZ25hdHVyZVZhbHVlPgorPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJQ2p6Q0NBZmlnQXdJQkFnSUpBS2s4dDFoWWNNa2hNQTBHQ1NxR1NJYjNEUUVCQkFVQU1Eb3hDekFKQmdOVgorQkFZVEFsVlRNUkl3RUFZRFZRUUtFd2xKYm5SbGNtNWxkREl4RnpBVkJnTlZCQU1URG5Od0xtVjRZVzF3YkdVdQorYjNKbk1CNFhEVEExTURZeU1ERTFORGd6TkZvWERUTXlNVEV3TlRFMU5EZ3pORm93T2pFTE1Ba0dBMVVFQmhNQworVlZNeEVqQVFCZ05WQkFvVENVbHVkR1Z5Ym1WME1qRVhNQlVHQTFVRUF4TU9jM0F1WlhoaGJYQnNaUzV2Y21jdworZ1o4d0RRWUpLb1pJaHZjTkFRRUJCUUFEZ1kwQU1JR0pBb0dCQU5sWjFMMW1LelliVVZLaU1RTGhabGZHRHlZYQorL2pqQ2lhWFAwV2hMTmd2SnBPVGVhanZzckFwWU5uRlg1TUxOenVDM05lUUlqWFVOTE4yWW8yTUNTdGhCSU9MNQorcUU1ZGthNHo5Vzl6eXRvZmxXMUxtSjh2WHB4OEF5L21lRzR6Ly9KNWlDcFlWRXF1QTB4bDI4SFVJbG93blpVRgorN3c3YngwY0YvMDJxclIyM0FnTUJBQUdqZ1p3d2daa3dIUVlEVlIwT0JCWUVGSlppTzFxc3lBeWMzSHdNbEw5cAorSnBONmZiR3dNR29HQTFVZEl3UmpNR0dBRkpaaU8xcXN5QXljM0h3TWxMOXBKcE42ZmJHd29UNmtQREE2TVFzdworQ1FZRFZRUUdFd0pWVXpFU01CQUdBMVVFQ2hNSlNXNTBaWEp1WlhReU1SY3dGUVlEVlFRREV3NXpjQzVsZUdGdAorY0d4bExtOXlaNElKQUtrOHQxaFljTWtoTUF3R0ExVWRFd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVFQlFBRAorZ1lFQU1GcS9VZVNReW5nRTBHcFp1ZXlEMlVXME0zNTh1aHNlWU9nR0VJZm0rcVhJRlFGNk1Zd05vWDdXRnpoQworTEpaMkU2bUV2WlpGSENIVXRsN21HRHZzUndnWjg1WUN0UmJ2bGVFcHFmZ05RVG90bzlwTFllK1g2dnZIOVo2cAorZ21Zc1RtYWsra3hPOTNKcHJyT2Q5eHA4YVpQTUVwckw3VkNkcmhiWkVmeVlFUjA9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PHNhbWxwOlN0YXR1cz48c2FtbHA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnN0YXR1czpTdWNjZXNzIi8+PC9zYW1scDpTdGF0dXM+PHNhbWw6QXNzZXJ0aW9uIElEPSJhaWRlbnQiIElzc3VlSW5zdGFudD0iMTk3MC0wMS0wMlQwMTowMTowMi4xMDBaIiBWZXJzaW9uPSIyLjAiPjxzYW1sOklzc3Vlcj5odHRwczovL2lkcC5leGFtcGxlLm9yZy88L3NhbWw6SXNzdWVyPjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEPkpvaG4gRG9lPC9zYW1sOk5hbWVJRD48L3NhbWw6U3ViamVjdD48c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjE5NzAtMDEtMDJUMDE6MDE6MDIuMTAwWiI+PHNhbWw6QXV0aG5Db250ZXh0PjxzYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPmZvbzwvc2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj48L3NhbWw6QXV0aG5Db250ZXh0Pjwvc2FtbDpBdXRoblN0YXRlbWVudD48L3NhbWw6QXNzZXJ0aW9uPjwvc2FtbHA6UmVzcG9uc2U+PC9zYW1scDpBcnRpZmFjdFJlc3BvbnNlPgpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0Y2FzZXMvb3V0LnhtbCBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdGNhc2VzL291dC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI1ZGZhYgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdGNhc2VzL291dC54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pjw/eG1sLXN0eWxlc2hlZXQgdHlwZT0idGV4dC94c2wiIGhyZWY9Imh0dHA6Ly90ZXN0Ij8+Cis8a290Lz4KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdGNhc2VzL3VwcF9zaWduLnhtbCBiL2RhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdGNhc2VzL3VwcF9zaWduLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2MwYWUxCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0Y2FzZXMvdXBwX3NpZ24ueG1sCkBAIC0wLDAgKzEsMTggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8YWxhPjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIElkPSJJRC0yM2NhMjlmMC03YThhLTExZGQtODEwMS0wMDUwNTZjMDAwMDgiPjxkczpTaWduZWRJbmZvIElkPSJJRC0yM2FkYTE0MC03YThhLTExZGQtODEwMS0wMDUwNTZjMDAwMDgiPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiPjwvZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZD48ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIj48L2RzOlNpZ25hdHVyZU1ldGhvZD48ZHM6UmVmZXJlbmNlIElkPSJJRC0yM2FmZWIzMC03YThhLTExZGQtODEwMS0wMDUwNTZjMDAwMDgiIFVSST0iIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxkczpYUGF0aCB4bWxuczp4YWRlcz0iaHR0cDovL3VyaS5ldHNpLm9yZy8wMTkwMy92MS4zLjIjIj5ub3QoYW5jZXN0b3Itb3Itc2VsZjo6ZHM6U2lnbmF0dXJlKTwvZHM6WFBhdGg+PC9kczpUcmFuc2Zvcm0+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSI+PC9kczpEaWdlc3RNZXRob2Q+PGRzOkRpZ2VzdFZhbHVlPnRmSXVpdm85VWF1YjR3Vm1BNTRGUGg1U3NtND08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjxkczpSZWZlcmVuY2UgSWQ9IklELTIzYmU0MzEwLTdhOGEtMTFkZC04MTAxLTAwNTA1NmMwMDAwOCIgVVJJPSJvdXQueG1sIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxkczpYUGF0aCB4bWxuczp4YWRlcz0iaHR0cDovL3VyaS5ldHNpLm9yZy8wMTkwMy92MS4zLjIjIj5ub3QoYW5jZXN0b3Itb3Itc2VsZjo6KltASWQ9InBpZC04YWUzYmNjZi1lNDRjLTQ3MDctYmM0ZC03NmU0NmZiZTFhYWUiIGFuZCBhbmNlc3Rvci1vci1zZWxmOjp4YWRlczpVbnNpZ25lZFByb3BlcnRpZXNdIG9yIGFuY2VzdG9yLW9yLXNlbGY6OipbQElkPSJzaWQtMDRkMTI0YTUtNjE4MS00YTljLWFkYjItYjY3ZDY3NGZkNmIzIiBhbmQgYW5jZXN0b3Itb3Itc2VsZjo6eGFkZXM6VW5zaWduZWRQcm9wZXJ0aWVzXSBvciBhbmNlc3Rvci1vci1zZWxmOjoqW0BJZD0iYWlkLTViMzFkYzg3LTg3NWMtNGM3Zi05MThlLWFmMGQ4Y2Y4NTJiNSIgYW5kIGFuY2VzdG9yLW9yLXNlbGY6OnhhZGVzOlVuc2lnbmVkUHJvcGVydGllc10gb3IgYW5jZXN0b3Itb3Itc2VsZjo6KltASWQ9ImNpZC05ZTE3MzUyNC02YjEyLTQ0MTItOWI4NS0zYzllY2E0NWVmOWUiIGFuZCBhbmNlc3Rvci1vci1zZWxmOjp4YWRlczpVbnNpZ25lZFByb3BlcnRpZXNdIG9yIGFuY2VzdG9yLW9yLXNlbGY6OipbQElkPSJyaWQtZThiMjhhMzctNzI2Mi00YjE4LWJhYTktNWNjMTA3MzczZWViIiBhbmQgYW5jZXN0b3Itb3Itc2VsZjo6eGFkZXM6VW5zaWduZWRQcm9wZXJ0aWVzXSk8L2RzOlhQYXRoPjwvZHM6VHJhbnNmb3JtPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvZHM6RGlnZXN0TWV0aG9kPjxkczpEaWdlc3RWYWx1ZT4yM1FqaHlESHpsRzFQajBZbTdxSHd1OSt0c2c9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48ZHM6UmVmZXJlbmNlIElkPSJJRC0yYjgwYTZiMy03YThhLTExZGQtYTMyYy0wMDUwNTZjMDAwMDgiIFR5cGU9Imh0dHA6Ly91cmkuZXRzaS5vcmcvMDE5MDMjU2lnbmVkUHJvcGVydGllcyIgVVJJPSIjSUQtMmI4MGE2YjEtN2E4YS0xMWRkLWEzMmMtMDA1MDU2YzAwMDA4Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiPjwvZHM6VHJhbnNmb3JtPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPjwvZHM6RGlnZXN0TWV0aG9kPjxkczpEaWdlc3RWYWx1ZT5DMHJ2NXZMUmxuZk8vSm9XY05iK1c3V3JEM1k9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlIElkPSJJRC0yYmEyMTE2MC03YThhLTExZGQtYTMyYy0wMDUwNTZjMDAwMDgiPmRaWjk0dUJBeU0xUnpwUW9ZMmZ0U2JjempSUzZCNm96Zkx6bUM4OUdKdGZES2oyVXF4Y2k4RktoS3IwanZZM2VTdHMxTWl6VU5VNjViNFM3M1NqaGVzQVlyeXBlcW03S2d0L0FiRjhiMUlNQTllSDU2SFJ2cWF4M1VIc08yUFJMdnZCcjV6VXhpb0g5Vlg2OW1tZVF1MlluS0p3eXVsODFUdG40ZTNzSnJpUT08L2RzOlNpZ25hdHVyZVZhbHVlPjxkczpLZXlJbmZvPjxkczpYNTA5RGF0YT48ZHM6WDUwOUNlcnRpZmljYXRlPgorTUlJQ2h6Q0NBVytnQXdJQkFnSUNBVVF3RFFZSktvWklodmNOQVFFRkJRQXdPekVMTUFrR0ExVUVCaE1DVUV3eAorRURBT0JnTlZCQW9UQjBOUFRVRlNRMGd4R2pBWUJnTlZCQU1URVZSbGMzUWdRMEVnWm05eUlHVlFWVUZRTUI0WAorRFRBNE1EUXhPREl3TXpBME5Wb1hEVEUxTURReE56SXdNekEwTlZvd09qRUxNQWtHQTFVRUJoTUNVRXd4RGpBTQorQmdOVkJBb1RCVTFUVjJsQk1Sc3dHUVlEVlFRREV4SkRiMjFoY21Ob1JWTlFJRlJsYzNSdmQza3dnWjh3RFFZSgorS29aSWh2Y05BUUVCQlFBRGdZMEFNSUdKQW9HQkFNYk44VTdHb2JIV3NMZU9rVkZYd3p3aVhkb2luajlRWVBnMAorSFBtekluOGExMlMzb0lXWHd2bUdxaVFrSktDUlVRYi9VZTh3UDJvR29XQi9CelJRSGhnK095MkNZWjFlajdueAorcUYzTnI2UC8wci8zaFc0K3I5c3VSK1JzMDV5THBQZWJ4cVRxdS9RLzVaSUZiRDl5Y0VTa3IxVnJ6REk3a1dILworelIwZmpsZWxBZ01CQUFHakdqQVlNQWtHQTFVZEV3UUNNQUF3Q3dZRFZSMFBCQVFEQWdiQU1BMEdDU3FHU0liMworRFFFQkJRVUFBNElCQVFCSmh5WmxtR2w0UE9ZN1J3MGxOc2xkQU8wNERlb1lBNmVQT3YyQjJiU2h0T3NqOTNwagorNDdWTncrNFZxZ0Fqa3AvZWhpTGJKWDBPUU1oUUZHNEpZYVZmN25qbmhqUzhmRjlET3lvTUwyMGFMRUx4dFk3aQorcmtTVUdFTjJEWVRRdzRyNkdJbGM4VVJZS2J1TzRKRlovSjA3OUxTNzVXOGkxeUF3dEdBTWlmL2crNVplSCswagorbXVPSGJwOVQrTi9hQTFxTUtBWDVoTDdjeVYwWk9OOHhKNU5xR0I4bkdqVGk5UE5hTTZ2bm1MdzlmWTlDMHZPTQorTy9QQk9GUTBGOHR0N2xaZU05bWpxK2xDTksvRXg1UmpteTNuRFpZNGF0eVpKRVJDNlJXazRGK3d5ZWt2V2dJLworSmNka1M0QkZoWkdBZUtvM2ExWWdvMG5PUlhyWGJNVGpLWm01CisKKzwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjxkczpPYmplY3Q+PHhhZGVzOlF1YWxpZnlpbmdQcm9wZXJ0aWVzIHhtbG5zOnhhZGVzPSJodHRwOi8vdXJpLmV0c2kub3JnLzAxOTAzL3YxLjMuMiMiIElkPSJJRC0yYjgwYTZiMi03YThhLTExZGQtYTMyYy0wMDUwNTZjMDAwMDgiIFRhcmdldD0iSUQtMjNjYTI5ZjAtN2E4YS0xMWRkLTgxMDEtMDA1MDU2YzAwMDA4Ij48eGFkZXM6U2lnbmVkUHJvcGVydGllcyBJZD0iSUQtMmI4MGE2YjEtN2E4YS0xMWRkLWEzMmMtMDA1MDU2YzAwMDA4Ij48eGFkZXM6U2lnbmVkU2lnbmF0dXJlUHJvcGVydGllcz48eGFkZXM6U2lnbmluZ1RpbWU+MjAwOC0wOS0wNFQxNDowMjo1NFo8L3hhZGVzOlNpZ25pbmdUaW1lPjx4YWRlczpTaWduaW5nQ2VydGlmaWNhdGU+PHhhZGVzOkNlcnQ+PHhhZGVzOkNlcnREaWdlc3Q+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIj48L2RzOkRpZ2VzdE1ldGhvZD48ZHM6RGlnZXN0VmFsdWU+dm1kR0I0ZERKVnpueG5uQmIvTFdKRXRpaTFnPTwvZHM6RGlnZXN0VmFsdWU+PC94YWRlczpDZXJ0RGlnZXN0Pjx4YWRlczpJc3N1ZXJTZXJpYWw+PGRzOlg1MDlJc3N1ZXJOYW1lPkNOPVRlc3QgQ0EgZm9yIGVQVUFQLCBPPUNPTUFSQ0gsIEM9UEw8L2RzOlg1MDlJc3N1ZXJOYW1lPjxkczpYNTA5U2VyaWFsTnVtYmVyPjMyNDwvZHM6WDUwOVNlcmlhbE51bWJlcj48L3hhZGVzOklzc3VlclNlcmlhbD48L3hhZGVzOkNlcnQ+PC94YWRlczpTaWduaW5nQ2VydGlmaWNhdGU+PHhhZGVzOlNpZ25hdHVyZVBvbGljeUlkZW50aWZpZXI+PHhhZGVzOlNpZ25hdHVyZVBvbGljeUltcGxpZWQ+PC94YWRlczpTaWduYXR1cmVQb2xpY3lJbXBsaWVkPjwveGFkZXM6U2lnbmF0dXJlUG9saWN5SWRlbnRpZmllcj48L3hhZGVzOlNpZ25lZFNpZ25hdHVyZVByb3BlcnRpZXM+PHhhZGVzOlNpZ25lZERhdGFPYmplY3RQcm9wZXJ0aWVzPjx4YWRlczpEYXRhT2JqZWN0Rm9ybWF0IE9iamVjdFJlZmVyZW5jZT0ib3V0LnhtbCI+PC94YWRlczpEYXRhT2JqZWN0Rm9ybWF0PjwveGFkZXM6U2lnbmVkRGF0YU9iamVjdFByb3BlcnRpZXM+PC94YWRlczpTaWduZWRQcm9wZXJ0aWVzPjwveGFkZXM6UXVhbGlmeWluZ1Byb3BlcnRpZXM+PC9kczpPYmplY3Q+PC9kczpTaWduYXR1cmU+PC9hbGE+CmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L1RSLzIwMDAvUkVDLXhtbC0yMDAwMTAwNiBiL2RhdGEvb3JnL3czYy93d3cvVFIvMjAwMC9SRUMteG1sLTIwMDAxMDA2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjMzYzYjAKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L1RSLzIwMDAvUkVDLXhtbC0yMDAwMTAwNgpAQCAtMCwwICsxLDMxNTYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTEiPz4NCis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIg0KKyAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+DQorPCEtLUFyYm9yVGV4dCwgSW5jLiwgMTk4OC0yMDAwLCB2LjQwMDItLT4NCis8aHRtbCBsYW5nPSJFTiI+DQorPGhlYWQ+DQorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIvPg0KKzx0aXRsZT5FeHRlbnNpYmxlIE1hcmt1cCBMYW5ndWFnZSAoWE1MKSAxLjAgKFNlY29uZCBFZGl0aW9uKTwvdGl0bGU+DQorPGxpbmsgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvU3R5bGVTaGVldHMvVFIvVzNDLVJFQy5jc3MiIHR5cGU9InRleHQvY3NzIg0KK3JlbD0ic3R5bGVzaGVldCIvPg0KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+IGNvZGUgICAgICAgICAgIHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfSAgZGl2LmNvbnN0cmFpbnQsDQorZGl2Lmlzc3VlLCBkaXYubm90ZSwgZGl2Lm5vdGljZSAgICAgeyBtYXJnaW4tbGVmdDogMmVtOyB9ICBkdC5sYWJlbCAgICAgIA0KK3sgZGlzcGxheTogcnVuLWluOyB9ICBsaSBwICAgICAgICAgICB7IG1hcmdpbi10b3A6IDAuM2VtOyAgICAgICAgICAgICAgICANCisgbWFyZ2luLWJvdHRvbTogMC4zZW07IH0gPC9zdHlsZT4NCis8L2hlYWQ+DQorPGJvZHk+ICA8ZGl2IGNsYXNzPSJoZWFkIj48cD48YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8iPjxpbWcgc3JjPSJodHRwOi8vd3d3LnczLm9yZy9JY29ucy93M2NfaG9tZSINCithbHQ9IlczQyIgaGVpZ2h0PSI0OCIgd2lkdGg9IjcyIi8+PC9hPjwvcD48aDE+RXh0ZW5zaWJsZSBNYXJrdXAgTGFuZ3VhZ2UgKFhNTCkNCisxLjAgKFNlY29uZCBFZGl0aW9uKTwvaDE+DQorPGgyPlczQyBSZWNvbW1lbmRhdGlvbiA2IE9jdG9iZXIgMjAwMDwvaDI+PGRsPg0KKzxkdD5UaGlzIHZlcnNpb246PC9kdD4NCis8ZGQ+PGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMC9SRUMteG1sLTIwMDAxMDA2Ij5odHRwOi8vd3d3LnczLm9yZy9UUi8yMDAwL1JFQy14bWwtMjAwMDEwMDY8L2E+DQorKDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDAvUkVDLXhtbC0yMDAwMTAwNi5odG1sIj5YSFRNTDwvYT4sIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDAvUkVDLXhtbC0yMDAwMTAwNi54bWwiPlhNTDwvYT4sIDxhDQoraHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMC9SRUMteG1sLTIwMDAxMDA2LnBkZiI+UERGPC9hPiwgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMC9SRUMteG1sLTIwMDAxMDA2LXJldmlldy5odG1sIj5YSFRNTA0KK3JldmlldyB2ZXJzaW9uPC9hPiB3aXRoIGNvbG9yLWNvZGVkIHJldmlzaW9uIGluZGljYXRvcnMpPC9kZD4NCis8ZHQ+TGF0ZXN0IHZlcnNpb246PC9kdD4NCis8ZGQ+PGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLXhtbCI+aHR0cDovL3d3dy53My5vcmcvVFIvUkVDLXhtbDwvYT48L2RkPg0KKzxkdD5QcmV2aW91cyB2ZXJzaW9uczo8L2R0Pg0KKzxkZD48YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAwL1dELXhtbC0yZS0yMDAwMDgxNCI+IGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDAvV0QteG1sLTJlLTIwMDAwODE0PC9hPiA8L2RkPg0KKzxkZD48YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy14bWwtMTk5ODAyMTAiPiBodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy14bWwtMTk5ODAyMTA8L2E+IDwvZGQ+DQorPGR0PkVkaXRvcnM6PC9kdD4NCis8ZGQ+VGltIEJyYXksIFRleHR1YWxpdHkgYW5kIE5ldHNjYXBlICA8YSBocmVmPSJtYWlsdG86dGJyYXlAdGV4dHVhbGl0eS5jb20iPiZsdDt0YnJheUB0ZXh0dWFsaXR5LmNvbT48L2E+PC9kZD4NCis8ZGQ+SmVhbiBQYW9saSwgTWljcm9zb2Z0ICA8YSBocmVmPSJtYWlsdG86amVhbnBhQG1pY3Jvc29mdC5jb20iPiZsdDtqZWFucGFAbWljcm9zb2Z0LmNvbT48L2E+PC9kZD4NCis8ZGQ+Qy4gTS4gU3BlcmJlcmctTWNRdWVlbiwgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBhdCBDaGljYWdvIGFuZCBUZXh0IEVuY29kaW5nDQorSW5pdGlhdGl2ZSA8YSBocmVmPSJtYWlsdG86Y21zbWNxQHVpYy5lZHUiPiZsdDtjbXNtY3FAdWljLmVkdT48L2E+IDwvZGQ+DQorPGRkPkV2ZSBNYWxlciwgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiA8YSBocmVmPSJtYWlsdG86ZWxtQGVhc3Quc3VuLmNvbSI+Jmx0O2V2ZS5tYWxlckBlYXN0LnN1bi5jb20+PC9hPg0KKyAtIFNlY29uZCBFZGl0aW9uPC9kZD4NCis8L2RsPjxwIGNsYXNzPSJjb3B5cmlnaHQiPjxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvaXByLW5vdGljZSNDb3B5cmlnaHQiPkNvcHlyaWdodDwvYT4mbmJzcDsmY29weTsmbmJzcDsyMDAwJm5ic3A7PGENCitocmVmPSJodHRwOi8vd3d3LnczLm9yZy8iPjxhYmJyIHRpdGxlPSJXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtIj5XM0M8L2FiYnI+PC9hPjxzdXA+JnJlZzs8L3N1cD4NCisoPGEgaHJlZj0iaHR0cDovL3d3dy5sY3MubWl0LmVkdS8iPjxhYmJyIHRpdGxlPSJNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5Ij5NSVQ8L2FiYnI+PC9hPiwgPGENCitocmVmPSJodHRwOi8vd3d3LmlucmlhLmZyLyI+PGFiYnIgdGl0bGU9Ikluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgQXV0b21hdGlxdWUiDQorbGFuZz0iZnIiPklOUklBPC9hYmJyPjwvYT4sIDxhIGhyZWY9Imh0dHA6Ly93d3cua2Vpby5hYy5qcC8iPktlaW88L2E+KSwgQWxsDQorUmlnaHRzIFJlc2VydmVkLiBXM0MgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC9pcHItbm90aWNlI0xlZ2FsX0Rpc2NsYWltZXIiPmxpYWJpbGl0eTwvYT4sIDxhDQoraHJlZj0iaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC9pcHItbm90aWNlI1czQ19UcmFkZW1hcmtzIj50cmFkZW1hcms8L2E+LCA8YQ0KK2hyZWY9Imh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvY29weXJpZ2h0LWRvY3VtZW50cy0xOTk5MDQwNSI+ZG9jdW1lbnQNCit1c2U8L2E+LCBhbmQgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC9jb3B5cmlnaHQtc29mdHdhcmUtMTk5ODA3MjAiPnNvZnR3YXJlDQorbGljZW5zaW5nPC9hPiBydWxlcyBhcHBseS48L3A+PC9kaXY+PGhyIGNsYXNzPSJodG1sX2NvbXBhdCIvPjxkaXY+PGgyPjxhDQorbmFtZT0iYWJzdHJhY3QiPkFic3RyYWN0PC9hPjwvaDI+IDxwPlRoZSBFeHRlbnNpYmxlIE1hcmt1cCBMYW5ndWFnZSAoWE1MKQ0KK2lzIGEgc3Vic2V0IG9mIFNHTUwgdGhhdCBpcyBjb21wbGV0ZWx5IGRlc2NyaWJlZCBpbiB0aGlzIGRvY3VtZW50LiBJdHMgZ29hbA0KK2lzIHRvIGVuYWJsZSBnZW5lcmljIFNHTUwgdG8gYmUgc2VydmVkLCByZWNlaXZlZCwgYW5kIHByb2Nlc3NlZCBvbiB0aGUgV2ViDQoraW4gdGhlIHdheSB0aGF0IGlzIG5vdyBwb3NzaWJsZSB3aXRoIEhUTUwuIFhNTCBoYXMgYmVlbiBkZXNpZ25lZCBmb3IgZWFzZQ0KK29mIGltcGxlbWVudGF0aW9uIGFuZCBmb3IgaW50ZXJvcGVyYWJpbGl0eSB3aXRoIGJvdGggU0dNTCBhbmQgSFRNTC48L3A+IDwvZGl2PjxkaXY+DQorPGgyPjxhIG5hbWU9InN0YXR1cyI+U3RhdHVzIG9mIHRoaXMgRG9jdW1lbnQ8L2E+PC9oMj4gPHA+VGhpcw0KK2RvY3VtZW50IGhhcyBiZWVuIHJldmlld2VkIGJ5IFczQyBNZW1iZXJzIGFuZCBvdGhlciBpbnRlcmVzdGVkIHBhcnRpZXMgYW5kDQoraGFzIGJlZW4gZW5kb3JzZWQgYnkgdGhlIERpcmVjdG9yIGFzIGEgVzNDIFJlY29tbWVuZGF0aW9uLiBJdCBpcyBhIHN0YWJsZQ0KK2RvY3VtZW50IGFuZCBtYXkgYmUgdXNlZCBhcyByZWZlcmVuY2UgbWF0ZXJpYWwgb3IgY2l0ZWQgYXMgYSBub3JtYXRpdmUgcmVmZXJlbmNlDQorZnJvbSBhbm90aGVyIGRvY3VtZW50LiBXM0MncyByb2xlIGluIG1ha2luZyB0aGUgUmVjb21tZW5kYXRpb24gaXMgdG8gZHJhdw0KK2F0dGVudGlvbiB0byB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgdG8gcHJvbW90ZSBpdHMgd2lkZXNwcmVhZCBkZXBsb3ltZW50LiBUaGlzDQorZW5oYW5jZXMgdGhlIGZ1bmN0aW9uYWxpdHkgYW5kIGludGVyb3BlcmFiaWxpdHkgb2YgdGhlIFdlYi48L3A+IDxwPlRoaXMgZG9jdW1lbnQNCitzcGVjaWZpZXMgYSBzeW50YXggY3JlYXRlZCBieSBzdWJzZXR0aW5nIGFuIGV4aXN0aW5nLCB3aWRlbHkgdXNlZCBpbnRlcm5hdGlvbmFsDQordGV4dCBwcm9jZXNzaW5nIHN0YW5kYXJkIChTdGFuZGFyZCBHZW5lcmFsaXplZCBNYXJrdXAgTGFuZ3VhZ2UsIElTTyA4ODc5OjE5ODYoRSkNCithcyBhbWVuZGVkIGFuZCBjb3JyZWN0ZWQpIGZvciB1c2Ugb24gdGhlIFdvcmxkIFdpZGUgV2ViLiBJdCBpcyBhIHByb2R1Y3Qgb2YNCit0aGUgVzNDIFhNTCBBY3Rpdml0eSwgZGV0YWlscyBvZiB3aGljaCBjYW4gYmUgZm91bmQgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvWE1MLyI+aHR0cDovL3d3dy53My5vcmcvWE1MPC9hPi4NCisgVGhlIEVuZ2xpc2ggdmVyc2lvbiBvZiB0aGlzIHNwZWNpZmljYXRpb24gaXMgdGhlIG9ubHkgbm9ybWF0aXZlIHZlcnNpb24uDQorSG93ZXZlciwgZm9yIHRyYW5zbGF0aW9ucyBvZiB0aGlzIGRvY3VtZW50LCBzZWUgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvWE1MLyN0cmFucyI+aHR0cDovL3d3dy53My5vcmcvWE1MLyN0cmFuczwvYT4uDQorQSBsaXN0IG9mIGN1cnJlbnQgVzNDIFJlY29tbWVuZGF0aW9ucyBhbmQgb3RoZXIgdGVjaG5pY2FsIGRvY3VtZW50cyBjYW4gYmUNCitmb3VuZCBhdCA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi8iPmh0dHA6Ly93d3cudzMub3JnL1RSPC9hPi48L3A+ICA8cD5UaGlzDQorc2Vjb25kIGVkaXRpb24gaXMgPGVtPm5vdDwvZW0+IGEgbmV3IHZlcnNpb24gb2YgWE1MIChmaXJzdCBwdWJsaXNoZWQgMTAgRmVicnVhcnkgMTk5OCk7IGl0IG1lcmVseSBpbmNvcnBvcmF0ZXMNCit0aGUgY2hhbmdlcyBkaWN0YXRlZCBieSB0aGUgZmlyc3QtZWRpdGlvbiBlcnJhdGEgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9YTUwveG1sLTE5OTgwMjEwLWVycmF0YSI+aHR0cDovL3d3dy53My5vcmcvWE1ML3htbC0xOTk4MDIxMC1lcnJhdGE8L2ENCis+KSBhcyBhIGNvbnZlbmllbmNlIHRvIHJlYWRlcnMuIFRoZSBlcnJhdGEgbGlzdCBmb3IgdGhpcyBzZWNvbmQgZWRpdGlvbiBpcw0KK2F2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9YTUwveG1sLVYxMC0yZS1lcnJhdGEiPmh0dHA6Ly93d3cudzMub3JnL1hNTC94bWwtVjEwLTJlLWVycmF0YTwvYT4uPC9wPiA8cD5QbGVhc2UNCityZXBvcnQgZXJyb3JzIGluIHRoaXMgZG9jdW1lbnQgdG8gPGEgaHJlZj0ibWFpbHRvOnhtbC1lZGl0b3JAdzMub3JnIj54bWwtZWRpdG9yQHczLm9yZzwvYT47IDxhDQoraHJlZj0iaHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMveG1sLWVkaXRvciI+YXJjaGl2ZXM8L2E+IGFyZSBhdmFpbGFibGUuPC9wPiA8ZGl2DQorY2xhc3M9Im5vdGUiPjxwIGNsYXNzPSJwcmVmaXgiPjxiPk5vdGU6PC9iPjwvcD4gPHA+Qy4gTS4gU3BlcmJlcmctTWNRdWVlbidzDQorYWZmaWxpYXRpb24gaGFzIGNoYW5nZWQgc2luY2UgdGhlIHB1YmxpY2F0aW9uIG9mIHRoZSBmaXJzdCBlZGl0aW9uLiBIZSBpcw0KK25vdyBhdCB0aGUgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgYW5kIGNhbiBiZSBjb250YWN0ZWQgYXQgPGEgaHJlZj0ibWFpbHRvOmNtc21jcUB3My5vcmciPmNtc21jcUB3My5vcmc8L2E+LjwvcD4gPC9kaXY+IDwvZGl2PiA8ZGl2DQorY2xhc3M9InRvYyI+PGgyPjxhIG5hbWU9ImNvbnRlbnRzIj5UYWJsZSBvZiBDb250ZW50czwvYT48L2gyPjxwIGNsYXNzPSJ0b2MiPjEgPGENCitocmVmPSIjc2VjLWludHJvIj5JbnRyb2R1Y3Rpb248L2E+PGJyIGNsYXNzPSJodG1sX2NvbXBhdCIvPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzEuMSA8YQ0KK2hyZWY9IiNzZWMtb3JpZ2luLWdvYWxzIj5PcmlnaW4gYW5kIEdvYWxzPC9hPjxiciBjbGFzcz0iaHRtbF9jb21wYXQiLz4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsxLjIgPGENCitocmVmPSIjc2VjLXRlcm1pbm9sb2d5Ij5UZXJtaW5vbG9neTwvYT48YnIgY2xhc3M9Imh0bWxfY29tcGF0Ii8+MiA8YSBocmVmPSIjc2VjLWRvY3VtZW50cyI+RG9jdW1lbnRzPC9hPjxicg0KK2NsYXNzPSJodG1sX2NvbXBhdCIvPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzIuMSA8YSBocmVmPSIjc2VjLXdlbGwtZm9ybWVkIj5XZWxsLUZvcm1lZA0KK1hNTCBEb2N1bWVudHM8L2E+PGJyIGNsYXNzPSJodG1sX2NvbXBhdCIvPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzIuMiA8YSBocmVmPSIjY2hhcnNldHMiPkNoYXJhY3RlcnM8L2E+PGJyDQorY2xhc3M9Imh0bWxfY29tcGF0Ii8+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Mi4zIDxhIGhyZWY9IiNzZWMtY29tbW9uLXN5biI+Q29tbW9uDQorU3ludGFjdGljIENvbnN0cnVjdHM8L2E+PGJyIGNsYXNzPSJodG1sX2NvbXBhdCIvPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzIuNCA8YQ0KK2hyZWY9IiNzeW50YXgiPkNoYXJhY3RlciBEYXRhIGFuZCBNYXJrdXA8L2E+PGJyIGNsYXNzPSJodG1sX2NvbXBhdCIvPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzIuNSA8YQ0KK2hyZWY9IiNzZWMtY29tbWVudHMiPkNvbW1lbnRzPC9hPjxiciBjbGFzcz0iaHRtbF9jb21wYXQiLz4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsyLjYgPGENCitocmVmPSIjc2VjLXBpIj5Qcm9jZXNzaW5nIEluc3RydWN0aW9uczwvYT48YnIgY2xhc3M9Imh0bWxfY29tcGF0Ii8+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Mi43IDxhDQoraHJlZj0iI3NlYy1jZGF0YS1zZWN0Ij5DREFUQSBTZWN0aW9uczwvYT48YnIgY2xhc3M9Imh0bWxfY29tcGF0Ii8+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Mi44IDxhDQoraHJlZj0iI3NlYy1wcm9sb2ctZHRkIj5Qcm9sb2cgYW5kIERvY3VtZW50IFR5cGUgRGVjbGFyYXRpb248L2E+PGJyIGNsYXNzPSJodG1sX2NvbXBhdCIvPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzIuOSA8YQ0KK2hyZWY9IiNzZWMtcm1kIj5TdGFuZGFsb25lIERvY3VtZW50IERlY2xhcmF0aW9uPC9hPjxiciBjbGFzcz0iaHRtbF9jb21wYXQiLz4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsyLjEwIDxhDQoraHJlZj0iI3NlYy13aGl0ZS1zcGFjZSI+V2hpdGUgU3BhY2UgSGFuZGxpbmc8L2E+PGJyIGNsYXNzPSJodG1sX2NvbXBhdCIvPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzIuMTEgPGENCitocmVmPSIjc2VjLWxpbmUtZW5kcyI+RW5kLW9mLUxpbmUgSGFuZGxpbmc8L2E+PGJyIGNsYXNzPSJodG1sX2NvbXBhdCIvPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzIuMTIgPGENCitocmVmPSIjc2VjLWxhbmctdGFnIj5MYW5ndWFnZSBJZGVudGlmaWNhdGlvbjwvYT48YnIgY2xhc3M9Imh0bWxfY29tcGF0Ii8+MyA8YQ0KK2hyZWY9IiNzZWMtbG9naWNhbC1zdHJ1Y3QiPkxvZ2ljYWwgU3RydWN0dXJlczwvYT48YnIgY2xhc3M9Imh0bWxfY29tcGF0Ii8+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7My4xIDxhDQoraHJlZj0iI3NlYy1zdGFydHRhZ3MiPlN0YXJ0LVRhZ3MsIEVuZC1UYWdzLCBhbmQgRW1wdHktRWxlbWVudCBUYWdzPC9hPjxicg0KK2NsYXNzPSJodG1sX2NvbXBhdCIvPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzMuMiA8YSBocmVmPSIjZWxlbWRlY2xzIj5FbGVtZW50DQorVHlwZSBEZWNsYXJhdGlvbnM8L2E+PGJyIGNsYXNzPSJodG1sX2NvbXBhdCIvPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzMuMi4xIDxhDQoraHJlZj0iI3NlYy1lbGVtZW50LWNvbnRlbnQiPkVsZW1lbnQgQ29udGVudDwvYT48YnIgY2xhc3M9Imh0bWxfY29tcGF0Ii8+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7My4yLjIgPGENCitocmVmPSIjc2VjLW1peGVkLWNvbnRlbnQiPk1peGVkIENvbnRlbnQ8L2E+PGJyIGNsYXNzPSJodG1sX2NvbXBhdCIvPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzMuMyA8YQ0KK2hyZWY9IiNhdHRkZWNscyI+QXR0cmlidXRlLUxpc3QgRGVjbGFyYXRpb25zPC9hPjxiciBjbGFzcz0iaHRtbF9jb21wYXQiLz4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDszLjMuMSA8YQ0KK2hyZWY9IiNzZWMtYXR0cmlidXRlLXR5cGVzIj5BdHRyaWJ1dGUgVHlwZXM8L2E+PGJyIGNsYXNzPSJodG1sX2NvbXBhdCIvPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzMuMy4yIDxhDQoraHJlZj0iI3NlYy1hdHRyLWRlZmF1bHRzIj5BdHRyaWJ1dGUgRGVmYXVsdHM8L2E+PGJyIGNsYXNzPSJodG1sX2NvbXBhdCIvPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzMuMy4zIDxhDQoraHJlZj0iI0FWTm9ybWFsaXplIj5BdHRyaWJ1dGUtVmFsdWUgTm9ybWFsaXphdGlvbjwvYT48YnIgY2xhc3M9Imh0bWxfY29tcGF0Ii8+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7My40IDxhDQoraHJlZj0iI3NlYy1jb25kaXRpb24tc2VjdCI+Q29uZGl0aW9uYWwgU2VjdGlvbnM8L2E+PGJyIGNsYXNzPSJodG1sX2NvbXBhdCIvPjQgPGENCitocmVmPSIjc2VjLXBoeXNpY2FsLXN0cnVjdCI+UGh5c2ljYWwgU3RydWN0dXJlczwvYT48YnIgY2xhc3M9Imh0bWxfY29tcGF0Ii8+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7NC4xIDxhDQoraHJlZj0iI3NlYy1yZWZlcmVuY2VzIj5DaGFyYWN0ZXIgYW5kIEVudGl0eSBSZWZlcmVuY2VzPC9hPjxiciBjbGFzcz0iaHRtbF9jb21wYXQiLz4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs0LjIgPGENCitocmVmPSIjc2VjLWVudGl0eS1kZWNsIj5FbnRpdHkgRGVjbGFyYXRpb25zPC9hPjxiciBjbGFzcz0iaHRtbF9jb21wYXQiLz4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs0LjIuMSA8YQ0KK2hyZWY9IiNzZWMtaW50ZXJuYWwtZW50Ij5JbnRlcm5hbCBFbnRpdGllczwvYT48YnIgY2xhc3M9Imh0bWxfY29tcGF0Ii8+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7NC4yLjIgPGENCitocmVmPSIjc2VjLWV4dGVybmFsLWVudCI+RXh0ZXJuYWwgRW50aXRpZXM8L2E+PGJyIGNsYXNzPSJodG1sX2NvbXBhdCIvPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzQuMyA8YQ0KK2hyZWY9IiNUZXh0RW50aXRpZXMiPlBhcnNlZCBFbnRpdGllczwvYT48YnIgY2xhc3M9Imh0bWxfY29tcGF0Ii8+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7NC4zLjEgPGENCitocmVmPSIjc2VjLVRleHREZWNsIj5UaGUgVGV4dCBEZWNsYXJhdGlvbjwvYT48YnIgY2xhc3M9Imh0bWxfY29tcGF0Ii8+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7NC4zLjIgPGENCitocmVmPSIjd2YtZW50aXRpZXMiPldlbGwtRm9ybWVkIFBhcnNlZCBFbnRpdGllczwvYT48YnIgY2xhc3M9Imh0bWxfY29tcGF0Ii8+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7NC4zLjMgPGENCitocmVmPSIjY2hhcmVuY29kaW5nIj5DaGFyYWN0ZXIgRW5jb2RpbmcgaW4gRW50aXRpZXM8L2E+PGJyIGNsYXNzPSJodG1sX2NvbXBhdCIvPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzQuNCA8YQ0KK2hyZWY9IiNlbnRwcm9jIj5YTUwgUHJvY2Vzc29yIFRyZWF0bWVudCBvZiBFbnRpdGllcyBhbmQgUmVmZXJlbmNlczwvYT48YnINCitjbGFzcz0iaHRtbF9jb21wYXQiLz4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs0LjQuMSA8YQ0KK2hyZWY9IiNub3QtcmVjb2duaXplZCI+Tm90IFJlY29nbml6ZWQ8L2E+PGJyIGNsYXNzPSJodG1sX2NvbXBhdCIvPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzQuNC4yIDxhDQoraHJlZj0iI2luY2x1ZGVkIj5JbmNsdWRlZDwvYT48YnIgY2xhc3M9Imh0bWxfY29tcGF0Ii8+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7NC40LjMgPGENCitocmVmPSIjaW5jbHVkZS1pZi12YWxpZCI+SW5jbHVkZWQgSWYgVmFsaWRhdGluZzwvYT48YnIgY2xhc3M9Imh0bWxfY29tcGF0Ii8+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7NC40LjQgPGENCitocmVmPSIjZm9yYmlkZGVuIj5Gb3JiaWRkZW48L2E+PGJyIGNsYXNzPSJodG1sX2NvbXBhdCIvPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzQuNC41IDxhDQoraHJlZj0iI2lubGl0ZXJhbCI+SW5jbHVkZWQgaW4gTGl0ZXJhbDwvYT48YnIgY2xhc3M9Imh0bWxfY29tcGF0Ii8+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7NC40LjYgPGENCitocmVmPSIjbm90aWZ5Ij5Ob3RpZnk8L2E+PGJyIGNsYXNzPSJodG1sX2NvbXBhdCIvPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzQuNC43IDxhDQoraHJlZj0iI2J5cGFzcyI+QnlwYXNzZWQ8L2E+PGJyIGNsYXNzPSJodG1sX2NvbXBhdCIvPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzQuNC44IDxhDQoraHJlZj0iI2FzLVBFIj5JbmNsdWRlZCBhcyBQRTwvYT48YnIgY2xhc3M9Imh0bWxfY29tcGF0Ii8+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7NC41IDxhDQoraHJlZj0iI2ludGVybi1yZXBsYWNlbWVudCI+Q29uc3RydWN0aW9uIG9mIEludGVybmFsIEVudGl0eSBSZXBsYWNlbWVudCBUZXh0PC9hPjxicg0KK2NsYXNzPSJodG1sX2NvbXBhdCIvPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzQuNiA8YSBocmVmPSIjc2VjLXByZWRlZmluZWQtZW50Ij5QcmVkZWZpbmVkDQorRW50aXRpZXM8L2E+PGJyIGNsYXNzPSJodG1sX2NvbXBhdCIvPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzQuNyA8YSBocmVmPSIjTm90YXRpb25zIj5Ob3RhdGlvbg0KK0RlY2xhcmF0aW9uczwvYT48YnIgY2xhc3M9Imh0bWxfY29tcGF0Ii8+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7NC44IDxhIGhyZWY9IiNzZWMtZG9jLWVudGl0eSI+RG9jdW1lbnQNCitFbnRpdHk8L2E+PGJyIGNsYXNzPSJodG1sX2NvbXBhdCIvPjUgPGEgaHJlZj0iI3NlYy1jb25mb3JtYW5jZSI+Q29uZm9ybWFuY2U8L2E+PGJyDQorY2xhc3M9Imh0bWxfY29tcGF0Ii8+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7NS4xIDxhIGhyZWY9IiNwcm9jLXR5cGVzIj5WYWxpZGF0aW5nDQorYW5kIE5vbi1WYWxpZGF0aW5nIFByb2Nlc3NvcnM8L2E+PGJyIGNsYXNzPSJodG1sX2NvbXBhdCIvPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzUuMiA8YQ0KK2hyZWY9IiNzYWZlLWJlaGF2aW9yIj5Vc2luZyBYTUwgUHJvY2Vzc29yczwvYT48YnIgY2xhc3M9Imh0bWxfY29tcGF0Ii8+NiA8YQ0KK2hyZWY9IiNzZWMtbm90YXRpb24iPk5vdGF0aW9uPC9hPjxiciBjbGFzcz0iaHRtbF9jb21wYXQiLz48L3A+PGgzPkFwcGVuZGljZXM8L2gzPjxwDQorY2xhc3M9InRvYyI+QSA8YSBocmVmPSIjc2VjLWJpYmxpb2dyYXBoeSI+UmVmZXJlbmNlczwvYT48YnIgY2xhc3M9Imh0bWxfY29tcGF0Ii8+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QS4xIDxhDQoraHJlZj0iI3NlYy1leGlzdGluZy1zdGRzIj5Ob3JtYXRpdmUgUmVmZXJlbmNlczwvYT48YnIgY2xhc3M9Imh0bWxfY29tcGF0Ii8+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QS4yIDxhDQoraHJlZj0iI251bGwiPk90aGVyIFJlZmVyZW5jZXM8L2E+PGJyIGNsYXNzPSJodG1sX2NvbXBhdCIvPkIgPGEgaHJlZj0iI0NoYXJDbGFzc2VzIj5DaGFyYWN0ZXINCitDbGFzc2VzPC9hPjxiciBjbGFzcz0iaHRtbF9jb21wYXQiLz5DIDxhIGhyZWY9IiNzZWMteG1sLWFuZC1zZ21sIj5YTUwgYW5kDQorU0dNTDwvYT4gKE5vbi1Ob3JtYXRpdmUpPGJyIGNsYXNzPSJodG1sX2NvbXBhdCIvPkQgPGEgaHJlZj0iI3NlYy1lbnRleHBhbmQiPkV4cGFuc2lvbg0KK29mIEVudGl0eSBhbmQgQ2hhcmFjdGVyIFJlZmVyZW5jZXM8L2E+IChOb24tTm9ybWF0aXZlKTxiciBjbGFzcz0iaHRtbF9jb21wYXQiLz5FIDxhDQoraHJlZj0iI2RldGVybWluaXNtIj5EZXRlcm1pbmlzdGljIENvbnRlbnQgTW9kZWxzPC9hPiAoTm9uLU5vcm1hdGl2ZSk8YnIgY2xhc3M9Imh0bWxfY29tcGF0Ii8+RiA8YQ0KK2hyZWY9IiNzZWMtZ3Vlc3NpbmciPkF1dG9kZXRlY3Rpb24gb2YgQ2hhcmFjdGVyIEVuY29kaW5nczwvYT4gKE5vbi1Ob3JtYXRpdmUpPGJyDQorY2xhc3M9Imh0bWxfY29tcGF0Ii8+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Ri4xIDxhIGhyZWY9IiNzZWMtZ3Vlc3Npbmctbm8tZXh0LWluZm8iPkRldGVjdGlvbg0KK1dpdGhvdXQgRXh0ZXJuYWwgRW5jb2RpbmcgSW5mb3JtYXRpb248L2E+PGJyIGNsYXNzPSJodG1sX2NvbXBhdCIvPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0YuMiA8YQ0KK2hyZWY9IiNzZWMtZ3Vlc3Npbmctd2l0aC1leHQtaW5mbyI+UHJpb3JpdGllcyBpbiB0aGUgUHJlc2VuY2Ugb2YgRXh0ZXJuYWwNCitFbmNvZGluZyBJbmZvcm1hdGlvbjwvYT48YnIgY2xhc3M9Imh0bWxfY29tcGF0Ii8+RyA8YSBocmVmPSIjc2VjLXhtbC13ZyI+VzNDDQorWE1MIFdvcmtpbmcgR3JvdXA8L2E+IChOb24tTm9ybWF0aXZlKTxiciBjbGFzcz0iaHRtbF9jb21wYXQiLz5IIDxhIGhyZWY9IiNzZWMtY29yZS13ZyI+VzNDDQorWE1MIENvcmUgR3JvdXA8L2E+IChOb24tTm9ybWF0aXZlKTxiciBjbGFzcz0iaHRtbF9jb21wYXQiLz5JIDxhIGhyZWY9IiNiNGQyNTBiNmMyMSI+UHJvZHVjdGlvbg0KK05vdGVzPC9hPiAoTm9uLU5vcm1hdGl2ZSk8YnIgY2xhc3M9Imh0bWxfY29tcGF0Ii8+PC9wPjwvZGl2PjxociBjbGFzcz0iaHRtbF9jb21wYXQiLz48ZGl2DQorY2xhc3M9ImJvZHkiPiA8ZGl2IGNsYXNzPSJkaXYxIj4gPGgyPjxhIG5hbWU9InNlYy1pbnRybyI+PC9hPjEgSW50cm9kdWN0aW9uPC9oMj4gPHA+RXh0ZW5zaWJsZQ0KK01hcmt1cCBMYW5ndWFnZSwgYWJicmV2aWF0ZWQgWE1MLCBkZXNjcmliZXMgYSBjbGFzcyBvZiBkYXRhIG9iamVjdHMgY2FsbGVkIDxhDQordGl0bGU9IlhNTCBEb2N1bWVudCIgaHJlZj0iI2R0LXhtbC1kb2MiPlhNTCBkb2N1bWVudHM8L2E+IGFuZCBwYXJ0aWFsbHkgZGVzY3JpYmVzDQordGhlIGJlaGF2aW9yIG9mIGNvbXB1dGVyIHByb2dyYW1zIHdoaWNoIHByb2Nlc3MgdGhlbS4gWE1MIGlzIGFuIGFwcGxpY2F0aW9uDQorcHJvZmlsZSBvciByZXN0cmljdGVkIGZvcm0gb2YgU0dNTCwgdGhlIFN0YW5kYXJkIEdlbmVyYWxpemVkIE1hcmt1cCBMYW5ndWFnZSA8YQ0KK2hyZWY9IiNJU084ODc5Ij5bSVNPIDg4NzldPC9hPi4gQnkgY29uc3RydWN0aW9uLCBYTUwgZG9jdW1lbnRzIGFyZSBjb25mb3JtaW5nDQorU0dNTCBkb2N1bWVudHMuPC9wPiA8cD5YTUwgZG9jdW1lbnRzIGFyZSBtYWRlIHVwIG9mIHN0b3JhZ2UgdW5pdHMgY2FsbGVkIDxhDQordGl0bGU9IkVudGl0eSIgaHJlZj0iI2R0LWVudGl0eSI+ZW50aXRpZXM8L2E+LCB3aGljaCBjb250YWluIGVpdGhlciBwYXJzZWQNCitvciB1bnBhcnNlZCBkYXRhLiBQYXJzZWQgZGF0YSBpcyBtYWRlIHVwIG9mIDxhIHRpdGxlPSJDaGFyYWN0ZXIiIGhyZWY9IiNkdC1jaGFyYWN0ZXIiPmNoYXJhY3RlcnM8L2E+LA0KK3NvbWUgb2Ygd2hpY2ggZm9ybSA8YSB0aXRsZT0iQ2hhcmFjdGVyIERhdGEiIGhyZWY9IiNkdC1jaGFyZGF0YSI+Y2hhcmFjdGVyDQorZGF0YTwvYT4sIGFuZCBzb21lIG9mIHdoaWNoIGZvcm0gPGEgdGl0bGU9Ik1hcmt1cCIgaHJlZj0iI2R0LW1hcmt1cCI+bWFya3VwPC9hPi4NCitNYXJrdXAgZW5jb2RlcyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBkb2N1bWVudCdzIHN0b3JhZ2UgbGF5b3V0IGFuZCBsb2dpY2FsDQorc3RydWN0dXJlLiBYTUwgcHJvdmlkZXMgYSBtZWNoYW5pc20gdG8gaW1wb3NlIGNvbnN0cmFpbnRzIG9uIHRoZSBzdG9yYWdlIGxheW91dA0KK2FuZCBsb2dpY2FsIHN0cnVjdHVyZS48L3A+IDxwPls8YSB0aXRsZT0iWE1MIFByb2Nlc3NvciIgbmFtZT0iZHQteG1sLXByb2MiPkRlZmluaXRpb248L2E+Og0KK0Egc29mdHdhcmUgbW9kdWxlIGNhbGxlZCBhbiA8Yj5YTUwgcHJvY2Vzc29yPC9iPiBpcyB1c2VkIHRvIHJlYWQgWE1MIGRvY3VtZW50cw0KK2FuZCBwcm92aWRlIGFjY2VzcyB0byB0aGVpciBjb250ZW50IGFuZCBzdHJ1Y3R1cmUuXSBbPGEgdGl0bGU9IkFwcGxpY2F0aW9uIg0KK25hbWU9ImR0LWFwcCI+RGVmaW5pdGlvbjwvYT46IEl0IGlzIGFzc3VtZWQgdGhhdCBhbiBYTUwgcHJvY2Vzc29yIGlzIGRvaW5nDQoraXRzIHdvcmsgb24gYmVoYWxmIG9mIGFub3RoZXIgbW9kdWxlLCBjYWxsZWQgdGhlIDxiPmFwcGxpY2F0aW9uPC9iPi5dIFRoaXMNCitzcGVjaWZpY2F0aW9uIGRlc2NyaWJlcyB0aGUgcmVxdWlyZWQgYmVoYXZpb3Igb2YgYW4gWE1MIHByb2Nlc3NvciBpbiB0ZXJtcw0KK29mIGhvdyBpdCBtdXN0IHJlYWQgWE1MIGRhdGEgYW5kIHRoZSBpbmZvcm1hdGlvbiBpdCBtdXN0IHByb3ZpZGUgdG8gdGhlIGFwcGxpY2F0aW9uLjwvcD4gPGRpdg0KK2NsYXNzPSJkaXYyIj4gPGgzPjxhIG5hbWU9InNlYy1vcmlnaW4tZ29hbHMiPjwvYT4xLjEgT3JpZ2luIGFuZCBHb2FsczwvaDM+IDxwPlhNTA0KK3dhcyBkZXZlbG9wZWQgYnkgYW4gWE1MIFdvcmtpbmcgR3JvdXAgKG9yaWdpbmFsbHkga25vd24gYXMgdGhlIFNHTUwgRWRpdG9yaWFsDQorUmV2aWV3IEJvYXJkKSBmb3JtZWQgdW5kZXIgdGhlIGF1c3BpY2VzIG9mIHRoZSBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtIChXM0MpDQoraW4gMTk5Ni4gSXQgd2FzIGNoYWlyZWQgYnkgSm9uIEJvc2FrIG9mIFN1biBNaWNyb3N5c3RlbXMgd2l0aCB0aGUgYWN0aXZlIHBhcnRpY2lwYXRpb24NCitvZiBhbiBYTUwgU3BlY2lhbCBJbnRlcmVzdCBHcm91cCAocHJldmlvdXNseSBrbm93biBhcyB0aGUgU0dNTCBXb3JraW5nIEdyb3VwKQ0KK2Fsc28gb3JnYW5pemVkIGJ5IHRoZSBXM0MuIFRoZSBtZW1iZXJzaGlwIG9mIHRoZSBYTUwgV29ya2luZyBHcm91cCBpcyBnaXZlbg0KK2luIGFuIGFwcGVuZGl4LiBEYW4gQ29ubm9sbHkgc2VydmVkIGFzIHRoZSBXRydzIGNvbnRhY3Qgd2l0aCB0aGUgVzNDLjwvcD4gPHA+VGhlDQorZGVzaWduIGdvYWxzIGZvciBYTUwgYXJlOjwvcD4gPG9sPg0KKzxsaT48cD5YTUwgc2hhbGwgYmUgc3RyYWlnaHRmb3J3YXJkbHkgdXNhYmxlIG92ZXIgdGhlIEludGVybmV0LjwvcD48L2xpPg0KKzxsaT48cD5YTUwgc2hhbGwgc3VwcG9ydCBhIHdpZGUgdmFyaWV0eSBvZiBhcHBsaWNhdGlvbnMuPC9wPjwvbGk+DQorPGxpPjxwPlhNTCBzaGFsbCBiZSBjb21wYXRpYmxlIHdpdGggU0dNTC48L3A+PC9saT4NCis8bGk+PHA+SXQgc2hhbGwgYmUgZWFzeSB0byB3cml0ZSBwcm9ncmFtcyB3aGljaCBwcm9jZXNzIFhNTCBkb2N1bWVudHMuPC9wPiA8L2xpPg0KKzxsaT48cD5UaGUgbnVtYmVyIG9mIG9wdGlvbmFsIGZlYXR1cmVzIGluIFhNTCBpcyB0byBiZSBrZXB0IHRvIHRoZSBhYnNvbHV0ZQ0KK21pbmltdW0sIGlkZWFsbHkgemVyby48L3A+PC9saT4NCis8bGk+PHA+WE1MIGRvY3VtZW50cyBzaG91bGQgYmUgaHVtYW4tbGVnaWJsZSBhbmQgcmVhc29uYWJseSBjbGVhci48L3A+PC9saT4NCis8bGk+PHA+VGhlIFhNTCBkZXNpZ24gc2hvdWxkIGJlIHByZXBhcmVkIHF1aWNrbHkuPC9wPjwvbGk+DQorPGxpPjxwPlRoZSBkZXNpZ24gb2YgWE1MIHNoYWxsIGJlIGZvcm1hbCBhbmQgY29uY2lzZS48L3A+PC9saT4NCis8bGk+PHA+WE1MIGRvY3VtZW50cyBzaGFsbCBiZSBlYXN5IHRvIGNyZWF0ZS48L3A+PC9saT4NCis8bGk+PHA+VGVyc2VuZXNzIGluIFhNTCBtYXJrdXAgaXMgb2YgbWluaW1hbCBpbXBvcnRhbmNlLjwvcD48L2xpPg0KKzwvb2w+IDxwPlRoaXMgc3BlY2lmaWNhdGlvbiwgdG9nZXRoZXIgd2l0aCBhc3NvY2lhdGVkIHN0YW5kYXJkcyAoVW5pY29kZSBhbmQNCitJU08vSUVDIDEwNjQ2IGZvciBjaGFyYWN0ZXJzLCBJbnRlcm5ldCBSRkMgMTc2NiBmb3IgbGFuZ3VhZ2UgaWRlbnRpZmljYXRpb24NCit0YWdzLCBJU08gNjM5IGZvciBsYW5ndWFnZSBuYW1lIGNvZGVzLCBhbmQgSVNPIDMxNjYgZm9yIGNvdW50cnkgbmFtZSBjb2RlcyksDQorcHJvdmlkZXMgYWxsIHRoZSBpbmZvcm1hdGlvbiBuZWNlc3NhcnkgdG8gdW5kZXJzdGFuZCBYTUwgVmVyc2lvbiAxLjAgYW5kIGNvbnN0cnVjdA0KK2NvbXB1dGVyIHByb2dyYW1zIHRvIHByb2Nlc3MgaXQuPC9wPiA8cD5UaGlzIHZlcnNpb24gb2YgdGhlIFhNTCBzcGVjaWZpY2F0aW9uDQorIG1heSBiZSBkaXN0cmlidXRlZCBmcmVlbHksIGFzIGxvbmcgYXMgYWxsIHRleHQgYW5kIGxlZ2FsIG5vdGljZXMgcmVtYWluIGludGFjdC48L3A+IDwvZGl2PiA8ZGl2DQorY2xhc3M9ImRpdjIiPiA8aDM+PGEgbmFtZT0ic2VjLXRlcm1pbm9sb2d5Ij48L2E+MS4yIFRlcm1pbm9sb2d5PC9oMz4gPHA+VGhlDQordGVybWlub2xvZ3kgdXNlZCB0byBkZXNjcmliZSBYTUwgZG9jdW1lbnRzIGlzIGRlZmluZWQgaW4gdGhlIGJvZHkgb2YgdGhpcw0KK3NwZWNpZmljYXRpb24uIFRoZSB0ZXJtcyBkZWZpbmVkIGluIHRoZSBmb2xsb3dpbmcgbGlzdCBhcmUgdXNlZCBpbiBidWlsZGluZw0KK3Rob3NlIGRlZmluaXRpb25zIGFuZCBpbiBkZXNjcmliaW5nIHRoZSBhY3Rpb25zIG9mIGFuIFhNTCBwcm9jZXNzb3I6IDwvcD48ZGw+DQorPGR0IGNsYXNzPSJsYWJlbCI+bWF5PC9kdD4NCis8ZGQ+IDxwPls8YSB0aXRsZT0iTWF5IiBuYW1lPSJkdC1tYXkiPkRlZmluaXRpb248L2E+OiBDb25mb3JtaW5nIGRvY3VtZW50cw0KK2FuZCBYTUwgcHJvY2Vzc29ycyBhcmUgcGVybWl0dGVkIHRvIGJ1dCBuZWVkIG5vdCBiZWhhdmUgYXMgZGVzY3JpYmVkLl08L3A+IDwvZGQ+DQorPGR0IGNsYXNzPSJsYWJlbCI+bXVzdDwvZHQ+DQorPGRkPiA8cD5bPGEgdGl0bGU9Ik11c3QiIG5hbWU9ImR0LW11c3QiPkRlZmluaXRpb248L2E+OiBDb25mb3JtaW5nIGRvY3VtZW50cw0KK2FuZCBYTUwgcHJvY2Vzc29ycyBhcmUgcmVxdWlyZWQgdG8gYmVoYXZlIGFzIGRlc2NyaWJlZDsgb3RoZXJ3aXNlIHRoZXkgYXJlDQoraW4gZXJyb3IuIF08L3A+IDwvZGQ+DQorPGR0IGNsYXNzPSJsYWJlbCI+ZXJyb3I8L2R0Pg0KKzxkZD4gPHA+WzxhIHRpdGxlPSJFcnJvciIgbmFtZT0iZHQtZXJyb3IiPkRlZmluaXRpb248L2E+OiBBIHZpb2xhdGlvbiBvZiB0aGUNCitydWxlcyBvZiB0aGlzIHNwZWNpZmljYXRpb247IHJlc3VsdHMgYXJlIHVuZGVmaW5lZC4gQ29uZm9ybWluZyBzb2Z0d2FyZSBtYXkNCitkZXRlY3QgYW5kIHJlcG9ydCBhbiBlcnJvciBhbmQgbWF5IHJlY292ZXIgZnJvbSBpdC5dPC9wPiA8L2RkPg0KKzxkdCBjbGFzcz0ibGFiZWwiPmZhdGFsIGVycm9yPC9kdD4NCis8ZGQ+IDxwPls8YSB0aXRsZT0iRmF0YWwgRXJyb3IiIG5hbWU9ImR0LWZhdGFsIj5EZWZpbml0aW9uPC9hPjogQW4gZXJyb3Igd2hpY2gNCithIGNvbmZvcm1pbmcgPGEgdGl0bGU9IlhNTCBQcm9jZXNzb3IiIGhyZWY9IiNkdC14bWwtcHJvYyI+WE1MIHByb2Nlc3NvcjwvYT4NCittdXN0IGRldGVjdCBhbmQgcmVwb3J0IHRvIHRoZSBhcHBsaWNhdGlvbi4gQWZ0ZXIgZW5jb3VudGVyaW5nIGEgZmF0YWwgZXJyb3IsDQordGhlIHByb2Nlc3NvciBtYXkgY29udGludWUgcHJvY2Vzc2luZyB0aGUgZGF0YSB0byBzZWFyY2ggZm9yIGZ1cnRoZXIgZXJyb3JzDQorYW5kIG1heSByZXBvcnQgc3VjaCBlcnJvcnMgdG8gdGhlIGFwcGxpY2F0aW9uLiBJbiBvcmRlciB0byBzdXBwb3J0IGNvcnJlY3Rpb24NCitvZiBlcnJvcnMsIHRoZSBwcm9jZXNzb3IgbWF5IG1ha2UgdW5wcm9jZXNzZWQgZGF0YSBmcm9tIHRoZSBkb2N1bWVudCAod2l0aA0KK2ludGVybWluZ2xlZCBjaGFyYWN0ZXIgZGF0YSBhbmQgbWFya3VwKSBhdmFpbGFibGUgdG8gdGhlIGFwcGxpY2F0aW9uLiBPbmNlDQorYSBmYXRhbCBlcnJvciBpcyBkZXRlY3RlZCwgaG93ZXZlciwgdGhlIHByb2Nlc3NvciBtdXN0IG5vdCBjb250aW51ZSBub3JtYWwNCitwcm9jZXNzaW5nIChpLmUuLCBpdCBtdXN0IG5vdCBjb250aW51ZSB0byBwYXNzIGNoYXJhY3RlciBkYXRhIGFuZCBpbmZvcm1hdGlvbg0KK2Fib3V0IHRoZSBkb2N1bWVudCdzIGxvZ2ljYWwgc3RydWN0dXJlIHRvIHRoZSBhcHBsaWNhdGlvbiBpbiB0aGUgbm9ybWFsIHdheSkuXTwvcD4gPC9kZD4NCis8ZHQgY2xhc3M9ImxhYmVsIj5hdCB1c2VyIG9wdGlvbjwvZHQ+DQorPGRkPiA8cD5bPGEgdGl0bGU9IkF0IHVzZXIgb3B0aW9uIiBuYW1lPSJkdC1hdHVzZXJvcHRpb24iPkRlZmluaXRpb248L2E+Og0KK0NvbmZvcm1pbmcgc29mdHdhcmUgbWF5IG9yIG11c3QgKGRlcGVuZGluZyBvbiB0aGUgbW9kYWwgdmVyYiBpbiB0aGUgc2VudGVuY2UpDQorYmVoYXZlIGFzIGRlc2NyaWJlZDsgaWYgaXQgZG9lcywgaXQgbXVzdCBwcm92aWRlIHVzZXJzIGEgbWVhbnMgdG8gZW5hYmxlIG9yDQorZGlzYWJsZSB0aGUgYmVoYXZpb3IgZGVzY3JpYmVkLl08L3A+IDwvZGQ+DQorPGR0IGNsYXNzPSJsYWJlbCI+dmFsaWRpdHkgY29uc3RyYWludDwvZHQ+DQorPGRkPiA8cD5bPGEgdGl0bGU9IlZhbGlkaXR5IGNvbnN0cmFpbnQiIG5hbWU9ImR0LXZjIj5EZWZpbml0aW9uPC9hPjogQSBydWxlDQord2hpY2ggYXBwbGllcyB0byBhbGwgPGEgdGl0bGU9IlZhbGlkaXR5IiBocmVmPSIjZHQtdmFsaWQiPnZhbGlkPC9hPiBYTUwgZG9jdW1lbnRzLg0KK1Zpb2xhdGlvbnMgb2YgdmFsaWRpdHkgY29uc3RyYWludHMgYXJlIGVycm9yczsgdGhleSBtdXN0LCBhdCB1c2VyIG9wdGlvbiwNCitiZSByZXBvcnRlZCBieSA8YSB0aXRsZT0iVmFsaWRhdGluZyBQcm9jZXNzb3IiIGhyZWY9IiNkdC12YWxpZGF0aW5nIj52YWxpZGF0aW5nDQorWE1MIHByb2Nlc3NvcnM8L2E+Ll08L3A+IDwvZGQ+DQorPGR0IGNsYXNzPSJsYWJlbCI+d2VsbC1mb3JtZWRuZXNzIGNvbnN0cmFpbnQ8L2R0Pg0KKzxkZD4gPHA+WzxhIHRpdGxlPSJXZWxsLWZvcm1lZG5lc3MgY29uc3RyYWludCIgbmFtZT0iZHQtd2ZjIj5EZWZpbml0aW9uPC9hPjoNCitBIHJ1bGUgd2hpY2ggYXBwbGllcyB0byBhbGwgPGEgdGl0bGU9IldlbGwtRm9ybWVkIiBocmVmPSIjZHQtd2VsbGZvcm1lZCI+d2VsbC1mb3JtZWQ8L2E+DQorWE1MIGRvY3VtZW50cy4gVmlvbGF0aW9ucyBvZiB3ZWxsLWZvcm1lZG5lc3MgY29uc3RyYWludHMgYXJlIDxhIHRpdGxlPSJGYXRhbCBFcnJvciINCitocmVmPSIjZHQtZmF0YWwiPmZhdGFsIGVycm9yczwvYT4uXTwvcD4gPC9kZD4NCis8ZHQgY2xhc3M9ImxhYmVsIj5tYXRjaDwvZHQ+DQorPGRkPiA8cD5bPGEgdGl0bGU9Im1hdGNoIiBuYW1lPSJkdC1tYXRjaCI+RGVmaW5pdGlvbjwvYT46IChPZiBzdHJpbmdzIG9yIG5hbWVzOikNCitUd28gc3RyaW5ncyBvciBuYW1lcyBiZWluZyBjb21wYXJlZCBtdXN0IGJlIGlkZW50aWNhbC4gQ2hhcmFjdGVycyB3aXRoIG11bHRpcGxlDQorcG9zc2libGUgcmVwcmVzZW50YXRpb25zIGluIElTTy9JRUMgMTA2NDYgKGUuZy4gY2hhcmFjdGVycyB3aXRoIGJvdGggcHJlY29tcG9zZWQNCithbmQgYmFzZStkaWFjcml0aWMgZm9ybXMpIG1hdGNoIG9ubHkgaWYgdGhleSBoYXZlIHRoZSBzYW1lIHJlcHJlc2VudGF0aW9uDQoraW4gYm90aCBzdHJpbmdzLiBObyBjYXNlIGZvbGRpbmcgaXMgcGVyZm9ybWVkLiAoT2Ygc3RyaW5ncyBhbmQgcnVsZXMgaW4gdGhlDQorZ3JhbW1hcjopIEEgc3RyaW5nIG1hdGNoZXMgYSBncmFtbWF0aWNhbCBwcm9kdWN0aW9uIGlmIGl0IGJlbG9uZ3MgdG8gdGhlIGxhbmd1YWdlDQorZ2VuZXJhdGVkIGJ5IHRoYXQgcHJvZHVjdGlvbi4gKE9mIGNvbnRlbnQgYW5kIGNvbnRlbnQgbW9kZWxzOikgQW4gZWxlbWVudA0KK21hdGNoZXMgaXRzIGRlY2xhcmF0aW9uIHdoZW4gaXQgY29uZm9ybXMgaW4gdGhlIGZhc2hpb24gZGVzY3JpYmVkIGluIHRoZSBjb25zdHJhaW50IDxhDQoraHJlZj0iI2VsZW1lbnR2YWxpZCI+PGI+W1ZDOiBFbGVtZW50IFZhbGlkXTwvYj48L2E+Ll08L3A+IDwvZGQ+DQorPGR0IGNsYXNzPSJsYWJlbCI+Zm9yIGNvbXBhdGliaWxpdHk8L2R0Pg0KKzxkZD4gPHA+WzxhIHRpdGxlPSJGb3IgQ29tcGF0aWJpbGl0eSIgbmFtZT0iZHQtY29tcGF0Ij5EZWZpbml0aW9uPC9hPjogTWFya3MNCithIHNlbnRlbmNlIGRlc2NyaWJpbmcgYSBmZWF0dXJlIG9mIFhNTCBpbmNsdWRlZCBzb2xlbHkgdG8gZW5zdXJlIHRoYXQgWE1MDQorcmVtYWlucyBjb21wYXRpYmxlIHdpdGggU0dNTC5dPC9wPiA8L2RkPg0KKzxkdCBjbGFzcz0ibGFiZWwiPmZvciBpbnRlcm9wZXJhYmlsaXR5PC9kdD4NCis8ZGQ+IDxwPls8YSB0aXRsZT0iRm9yIGludGVyb3BlcmFiaWxpdHkiIG5hbWU9ImR0LWludGVyb3AiPkRlZmluaXRpb248L2E+Og0KK01hcmtzIGEgc2VudGVuY2UgZGVzY3JpYmluZyBhIG5vbi1iaW5kaW5nIHJlY29tbWVuZGF0aW9uIGluY2x1ZGVkIHRvIGluY3JlYXNlDQordGhlIGNoYW5jZXMgdGhhdCBYTUwgZG9jdW1lbnRzIGNhbiBiZSBwcm9jZXNzZWQgYnkgdGhlIGV4aXN0aW5nIGluc3RhbGxlZA0KK2Jhc2Ugb2YgU0dNTCBwcm9jZXNzb3JzIHdoaWNoIHByZWRhdGUgdGhlIFdlYlNHTUwgQWRhcHRhdGlvbnMgQW5uZXggdG8gSVNPDQorODg3OS5dPC9wPiA8L2RkPg0KKzwvZGw+PHA+PC9wPiA8L2Rpdj4gPC9kaXY+ICA8ZGl2IGNsYXNzPSJkaXYxIj4gPGgyPjxhIG5hbWU9InNlYy1kb2N1bWVudHMiPjwvYT4yDQorRG9jdW1lbnRzPC9oMj4gPHA+WzxhIHRpdGxlPSJYTUwgRG9jdW1lbnQiIG5hbWU9ImR0LXhtbC1kb2MiPkRlZmluaXRpb248L2E+Og0KKyBBIGRhdGEgb2JqZWN0IGlzIGFuIDxiPlhNTCBkb2N1bWVudDwvYj4gaWYgaXQgaXMgPGEgdGl0bGU9IldlbGwtRm9ybWVkIiBocmVmPSIjZHQtd2VsbGZvcm1lZCI+d2VsbC1mb3JtZWQ8L2E+LA0KK2FzIGRlZmluZWQgaW4gdGhpcyBzcGVjaWZpY2F0aW9uLiBBIHdlbGwtZm9ybWVkIFhNTCBkb2N1bWVudCBtYXkgaW4gYWRkaXRpb24NCitiZSA8YSB0aXRsZT0iVmFsaWRpdHkiIGhyZWY9IiNkdC12YWxpZCI+dmFsaWQ8L2E+IGlmIGl0IG1lZXRzIGNlcnRhaW4gZnVydGhlcg0KK2NvbnN0cmFpbnRzLl08L3A+IDxwPkVhY2ggWE1MIGRvY3VtZW50IGhhcyBib3RoIGEgbG9naWNhbCBhbmQgYSBwaHlzaWNhbCBzdHJ1Y3R1cmUuDQorUGh5c2ljYWxseSwgdGhlIGRvY3VtZW50IGlzIGNvbXBvc2VkIG9mIHVuaXRzIGNhbGxlZCA8YSB0aXRsZT0iRW50aXR5IiBocmVmPSIjZHQtZW50aXR5Ij5lbnRpdGllczwvYT4uDQorQW4gZW50aXR5IG1heSA8YSB0aXRsZT0iRW50aXR5IFJlZmVyZW5jZSIgaHJlZj0iI2R0LWVudHJlZiI+cmVmZXI8L2E+IHRvIG90aGVyDQorZW50aXRpZXMgdG8gY2F1c2UgdGhlaXIgaW5jbHVzaW9uIGluIHRoZSBkb2N1bWVudC4gQSBkb2N1bWVudCBiZWdpbnMgaW4gYQ0KKyJyb290IiBvciA8YSB0aXRsZT0iRG9jdW1lbnQgRW50aXR5IiBocmVmPSIjZHQtZG9jZW50Ij5kb2N1bWVudCBlbnRpdHk8L2E+Lg0KK0xvZ2ljYWxseSwgdGhlIGRvY3VtZW50IGlzIGNvbXBvc2VkIG9mIGRlY2xhcmF0aW9ucywgZWxlbWVudHMsIGNvbW1lbnRzLCBjaGFyYWN0ZXINCityZWZlcmVuY2VzLCBhbmQgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMsIGFsbCBvZiB3aGljaCBhcmUgaW5kaWNhdGVkIGluIHRoZQ0KK2RvY3VtZW50IGJ5IGV4cGxpY2l0IG1hcmt1cC4gVGhlIGxvZ2ljYWwgYW5kIHBoeXNpY2FsIHN0cnVjdHVyZXMgbXVzdCBuZXN0DQorcHJvcGVybHksIGFzIGRlc2NyaWJlZCBpbiA8YSBocmVmPSIjd2YtZW50aXRpZXMiPjxiPjQuMy4yIFdlbGwtRm9ybWVkIFBhcnNlZA0KK0VudGl0aWVzPC9iPjwvYT4uPC9wPiA8ZGl2IGNsYXNzPSJkaXYyIj4gPGgzPjxhIG5hbWU9InNlYy13ZWxsLWZvcm1lZCI+PC9hPjIuMQ0KK1dlbGwtRm9ybWVkIFhNTCBEb2N1bWVudHM8L2gzPiA8cD5bPGEgdGl0bGU9IldlbGwtRm9ybWVkIiBuYW1lPSJkdC13ZWxsZm9ybWVkIj5EZWZpbml0aW9uPC9hPjoNCisgQSB0ZXh0dWFsIG9iamVjdCBpcyBhIDxiPndlbGwtZm9ybWVkPC9iPiBYTUwgZG9jdW1lbnQgaWY6XTwvcD4gPG9sPg0KKzxsaT48cD5UYWtlbiBhcyBhIHdob2xlLCBpdCBtYXRjaGVzIHRoZSBwcm9kdWN0aW9uIGxhYmVsZWQgPGEgaHJlZj0iI05ULWRvY3VtZW50Ij5kb2N1bWVudDwvYT4uPC9wPiA8L2xpPg0KKzxsaT48cD5JdCBtZWV0cyBhbGwgdGhlIHdlbGwtZm9ybWVkbmVzcyBjb25zdHJhaW50cyBnaXZlbiBpbiB0aGlzIHNwZWNpZmljYXRpb24uPC9wPiA8L2xpPg0KKzxsaT48cD5FYWNoIG9mIHRoZSA8YSB0aXRsZT0iVGV4dCBFbnRpdHkiIGhyZWY9IiNkdC1wYXJzZWRlbnQiPnBhcnNlZCBlbnRpdGllczwvYT4NCit3aGljaCBpcyByZWZlcmVuY2VkIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgd2l0aGluIHRoZSBkb2N1bWVudCBpcyA8YSB0aXRsZT0iV2VsbC1Gb3JtZWQiDQoraHJlZj0iI2R0LXdlbGxmb3JtZWQiPndlbGwtZm9ybWVkPC9hPi48L3A+PC9saT4NCis8L29sPiA8aDU+RG9jdW1lbnQ8L2g1Pjx0YWJsZSBjbGFzcz0ic2NyYXAiPjx0Ym9keT4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULWRvY3VtZW50Ij48L2E+WzFdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+ZG9jdW1lbnQ8L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+PGEgaHJlZj0iI05ULXByb2xvZyI+cHJvbG9nPC9hPiA8YSBocmVmPSIjTlQtZWxlbWVudCI+ZWxlbWVudDwvYT4gPGENCitocmVmPSIjTlQtTWlzYyI+TWlzYzwvYT4qPC9jb2RlPjwvdGQ+DQorPC90cj4NCis8L3Rib2R5PjwvdGFibGU+IDxwPk1hdGNoaW5nIHRoZSA8YSBocmVmPSIjTlQtZG9jdW1lbnQiPmRvY3VtZW50PC9hPiBwcm9kdWN0aW9uDQoraW1wbGllcyB0aGF0OjwvcD4gPG9sPg0KKzxsaT48cD5JdCBjb250YWlucyBvbmUgb3IgbW9yZSA8YSB0aXRsZT0iRWxlbWVudCIgaHJlZj0iI2R0LWVsZW1lbnQiPmVsZW1lbnRzPC9hPi48L3A+IDwvbGk+DQorPGxpPjxwPls8YSB0aXRsZT0iUm9vdCBFbGVtZW50IiBuYW1lPSJkdC1yb290Ij5EZWZpbml0aW9uPC9hPjogVGhlcmUgaXMgZXhhY3RseQ0KK29uZSBlbGVtZW50LCBjYWxsZWQgdGhlIDxiPnJvb3Q8L2I+LCBvciBkb2N1bWVudCBlbGVtZW50LCBubyBwYXJ0IG9mIHdoaWNoDQorYXBwZWFycyBpbiB0aGUgPGEgdGl0bGU9IkNvbnRlbnQiIGhyZWY9IiNkdC1jb250ZW50Ij5jb250ZW50PC9hPiBvZiBhbnkgb3RoZXINCitlbGVtZW50Ll0gRm9yIGFsbCBvdGhlciBlbGVtZW50cywgaWYgdGhlIDxhIHRpdGxlPSJTdGFydC1UYWciIGhyZWY9IiNkdC1zdGFnIj5zdGFydC10YWc8L2E+DQoraXMgaW4gdGhlIGNvbnRlbnQgb2YgYW5vdGhlciBlbGVtZW50LCB0aGUgPGEgdGl0bGU9IkVuZCBUYWciIGhyZWY9IiNkdC1ldGFnIj5lbmQtdGFnPC9hPg0KK2lzIGluIHRoZSBjb250ZW50IG9mIHRoZSBzYW1lIGVsZW1lbnQuIE1vcmUgc2ltcGx5IHN0YXRlZCwgdGhlIGVsZW1lbnRzLCBkZWxpbWl0ZWQNCitieSBzdGFydC0gYW5kIGVuZC10YWdzLCBuZXN0IHByb3Blcmx5IHdpdGhpbiBlYWNoIG90aGVyLjwvcD48L2xpPg0KKzwvb2w+IDxwPls8YSB0aXRsZT0iUGFyZW50L0NoaWxkIiBuYW1lPSJkdC1wYXJlbnRjaGlsZCI+RGVmaW5pdGlvbjwvYT46IEFzDQorYSBjb25zZXF1ZW5jZSBvZiB0aGlzLCBmb3IgZWFjaCBub24tcm9vdCBlbGVtZW50IDxjb2RlPkM8L2NvZGU+IGluIHRoZSBkb2N1bWVudCwNCit0aGVyZSBpcyBvbmUgb3RoZXIgZWxlbWVudCA8Y29kZT5QPC9jb2RlPiBpbiB0aGUgZG9jdW1lbnQgc3VjaCB0aGF0IDxjb2RlPkM8L2NvZGU+DQoraXMgaW4gdGhlIGNvbnRlbnQgb2YgPGNvZGU+UDwvY29kZT4sIGJ1dCBpcyBub3QgaW4gdGhlIGNvbnRlbnQgb2YgYW55IG90aGVyDQorZWxlbWVudCB0aGF0IGlzIGluIHRoZSBjb250ZW50IG9mIDxjb2RlPlA8L2NvZGU+LiA8Y29kZT5QPC9jb2RlPiBpcyByZWZlcnJlZA0KK3RvIGFzIHRoZSA8Yj5wYXJlbnQ8L2I+IG9mIDxjb2RlPkM8L2NvZGU+LCBhbmQgPGNvZGU+QzwvY29kZT4gYXMgYSA8Yj5jaGlsZDwvYj4NCitvZiA8Y29kZT5QPC9jb2RlPi5dPC9wPiA8L2Rpdj4gPGRpdiBjbGFzcz0iZGl2MiI+IDxoMz48YSBuYW1lPSJjaGFyc2V0cyI+PC9hPjIuMg0KK0NoYXJhY3RlcnM8L2gzPiA8cD5bPGEgdGl0bGU9IlRleHQiIG5hbWU9ImR0LXRleHQiPkRlZmluaXRpb248L2E+OiBBIHBhcnNlZA0KK2VudGl0eSBjb250YWlucyA8Yj50ZXh0PC9iPiwgYSBzZXF1ZW5jZSBvZiA8YSB0aXRsZT0iQ2hhcmFjdGVyIiBocmVmPSIjZHQtY2hhcmFjdGVyIj5jaGFyYWN0ZXJzPC9hPiwNCit3aGljaCBtYXkgcmVwcmVzZW50IG1hcmt1cCBvciBjaGFyYWN0ZXIgZGF0YS5dIFs8YSB0aXRsZT0iQ2hhcmFjdGVyIiBuYW1lPSJkdC1jaGFyYWN0ZXIiPkRlZmluaXRpb248L2E+Og0KK0EgPGI+Y2hhcmFjdGVyPC9iPiBpcyBhbiBhdG9taWMgdW5pdCBvZiB0ZXh0IGFzIHNwZWNpZmllZCBieSBJU08vSUVDIDEwNjQ2IDxhDQoraHJlZj0iI0lTTzEwNjQ2Ij5bSVNPL0lFQyAxMDY0Nl08L2E+IChzZWUgYWxzbyA8YSBocmVmPSIjSVNPMTA2NDYtMjAwMCI+W0lTTy9JRUMNCisxMDY0Ni0yMDAwXTwvYT4pLiBMZWdhbCBjaGFyYWN0ZXJzIGFyZSB0YWIsIGNhcnJpYWdlIHJldHVybiwgbGluZSBmZWVkLCBhbmQNCit0aGUgbGVnYWwgY2hhcmFjdGVycyBvZiBVbmljb2RlIGFuZCBJU08vSUVDIDEwNjQ2LiBUaGUgdmVyc2lvbnMgb2YgdGhlc2Ugc3RhbmRhcmRzDQorY2l0ZWQgaW4gPGEgaHJlZj0iI3NlYy1leGlzdGluZy1zdGRzIj48Yj5BLjEgTm9ybWF0aXZlIFJlZmVyZW5jZXM8L2I+PC9hPg0KK3dlcmUgY3VycmVudCBhdCB0aGUgdGltZSB0aGlzIGRvY3VtZW50IHdhcyBwcmVwYXJlZC4gTmV3IGNoYXJhY3RlcnMgbWF5IGJlDQorYWRkZWQgdG8gdGhlc2Ugc3RhbmRhcmRzIGJ5IGFtZW5kbWVudHMgb3IgbmV3IGVkaXRpb25zLiBDb25zZXF1ZW50bHksIFhNTA0KK3Byb2Nlc3NvcnMgbXVzdCBhY2NlcHQgYW55IGNoYXJhY3RlciBpbiB0aGUgcmFuZ2Ugc3BlY2lmaWVkIGZvciA8YSBocmVmPSIjTlQtQ2hhciI+Q2hhcjwvYT4uDQorVGhlIHVzZSBvZiAiY29tcGF0aWJpbGl0eSBjaGFyYWN0ZXJzIiwgYXMgZGVmaW5lZCBpbiBzZWN0aW9uIDYuOCBvZiA8YSBocmVmPSIjVW5pY29kZSI+W1VuaWNvZGVdPC9hPg0KKyhzZWUgYWxzbyBEMjEgaW4gc2VjdGlvbiAzLjYgb2YgPGEgaHJlZj0iI1VuaWNvZGUzIj5bVW5pY29kZTNdPC9hPiksIGlzIGRpc2NvdXJhZ2VkLl08L3A+IDxoNT5DaGFyYWN0ZXINCitSYW5nZTwvaDU+PHRhYmxlIGNsYXNzPSJzY3JhcCI+PHRib2R5Pg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PGEgbmFtZT0iTlQtQ2hhciI+PC9hPlsyXSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPkNoYXI8L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+I3g5IHwgI3hBIHwgI3hEIHwgWyN4MjAtI3hEN0ZGXSB8IFsjeEUwMDAtI3hGRkZEXSB8IFsjeDEwMDAwLSN4MTBGRkZGXTwvY29kZT48L3RkPg0KKzx0ZD48aT4vKiBhbnkgVW5pY29kZSBjaGFyYWN0ZXIsIGV4Y2x1ZGluZyB0aGUgc3Vycm9nYXRlIGJsb2NrcywgRkZGRSwgYW5kDQorRkZGRi4gKi88L2k+PC90ZD4NCis8L3RyPg0KKzwvdGJvZHk+PC90YWJsZT4gPHA+VGhlIG1lY2hhbmlzbSBmb3IgZW5jb2RpbmcgY2hhcmFjdGVyIGNvZGUgcG9pbnRzIGludG8NCitiaXQgcGF0dGVybnMgbWF5IHZhcnkgZnJvbSBlbnRpdHkgdG8gZW50aXR5LiBBbGwgWE1MIHByb2Nlc3NvcnMgbXVzdCBhY2NlcHQNCit0aGUgVVRGLTggYW5kIFVURi0xNiBlbmNvZGluZ3Mgb2YgMTA2NDY7IHRoZSBtZWNoYW5pc21zIGZvciBzaWduYWxpbmcgd2hpY2gNCitvZiB0aGUgdHdvIGlzIGluIHVzZSwgb3IgZm9yIGJyaW5naW5nIG90aGVyIGVuY29kaW5ncyBpbnRvIHBsYXksIGFyZSBkaXNjdXNzZWQNCitsYXRlciwgaW4gPGEgaHJlZj0iI2NoYXJlbmNvZGluZyI+PGI+NC4zLjMgQ2hhcmFjdGVyIEVuY29kaW5nIGluIEVudGl0aWVzPC9iPjwvYT4uPC9wPg0KKyA8L2Rpdj4gPGRpdiBjbGFzcz0iZGl2MiI+IDxoMz48YSBuYW1lPSJzZWMtY29tbW9uLXN5biI+PC9hPjIuMyBDb21tb24gU3ludGFjdGljDQorQ29uc3RydWN0czwvaDM+IDxwPlRoaXMgc2VjdGlvbiBkZWZpbmVzIHNvbWUgc3ltYm9scyB1c2VkIHdpZGVseSBpbiB0aGUgZ3JhbW1hci48L3A+IDxwPjxhDQoraHJlZj0iI05ULVMiPlM8L2E+ICh3aGl0ZSBzcGFjZSkgY29uc2lzdHMgb2Ygb25lIG9yIG1vcmUgc3BhY2UgKCN4MjApIGNoYXJhY3RlcnMsDQorY2FycmlhZ2UgcmV0dXJucywgbGluZSBmZWVkcywgb3IgdGFicy48L3A+IDxoNT5XaGl0ZSBTcGFjZTwvaDU+PHRhYmxlIGNsYXNzPSJzY3JhcCI+DQorPHRib2R5Pg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PGEgbmFtZT0iTlQtUyI+PC9hPlszXSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPlM8L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+KCN4MjAgfCAjeDkgfCAjeEQgfCAjeEEpKzwvY29kZT48L3RkPg0KKzwvdHI+DQorPC90Ym9keT48L3RhYmxlPiA8cD5DaGFyYWN0ZXJzIGFyZSBjbGFzc2lmaWVkIGZvciBjb252ZW5pZW5jZSBhcyBsZXR0ZXJzLA0KK2RpZ2l0cywgb3Igb3RoZXIgY2hhcmFjdGVycy4gQSBsZXR0ZXIgY29uc2lzdHMgb2YgYW4gYWxwaGFiZXRpYyBvciBzeWxsYWJpYw0KK2Jhc2UgY2hhcmFjdGVyIG9yIGFuIGlkZW9ncmFwaGljIGNoYXJhY3Rlci4gRnVsbCBkZWZpbml0aW9ucyBvZiB0aGUgc3BlY2lmaWMNCitjaGFyYWN0ZXJzIGluIGVhY2ggY2xhc3MgYXJlIGdpdmVuIGluIDxhIGhyZWY9IiNDaGFyQ2xhc3NlcyI+PGI+QiBDaGFyYWN0ZXINCitDbGFzc2VzPC9iPjwvYT4uPC9wPiA8cD5bPGEgdGl0bGU9Ik5hbWUiIG5hbWU9ImR0LW5hbWUiPkRlZmluaXRpb248L2E+OiBBIDxiPk5hbWU8L2I+DQoraXMgYSB0b2tlbiBiZWdpbm5pbmcgd2l0aCBhIGxldHRlciBvciBvbmUgb2YgYSBmZXcgcHVuY3R1YXRpb24gY2hhcmFjdGVycywNCithbmQgY29udGludWluZyB3aXRoIGxldHRlcnMsIGRpZ2l0cywgaHlwaGVucywgdW5kZXJzY29yZXMsIGNvbG9ucywgb3IgZnVsbA0KK3N0b3BzLCB0b2dldGhlciBrbm93biBhcyBuYW1lIGNoYXJhY3RlcnMuXSBOYW1lcyBiZWdpbm5pbmcgd2l0aCB0aGUgc3RyaW5nDQorIjxjb2RlPnhtbDwvY29kZT4iLCBvciBhbnkgc3RyaW5nIHdoaWNoIHdvdWxkIG1hdGNoIDxjb2RlPigoJ1gnfCd4JykgKCdNJ3wnbScpDQorKCdMJ3wnbCcpKTwvY29kZT4sIGFyZSByZXNlcnZlZCBmb3Igc3RhbmRhcmRpemF0aW9uIGluIHRoaXMgb3IgZnV0dXJlIHZlcnNpb25zDQorb2YgdGhpcyBzcGVjaWZpY2F0aW9uLjwvcD4gPGRpdiBjbGFzcz0ibm90ZSI+PHAgY2xhc3M9InByZWZpeCI+PGI+Tm90ZTo8L2I+PC9wPiA8cD5UaGUNCitOYW1lc3BhY2VzIGluIFhNTCBSZWNvbW1lbmRhdGlvbiA8YSBocmVmPSIjeG1sLW5hbWVzIj5bWE1MIE5hbWVzXTwvYT4gYXNzaWducw0KK2EgbWVhbmluZyB0byBuYW1lcyBjb250YWluaW5nIGNvbG9uIGNoYXJhY3RlcnMuIFRoZXJlZm9yZSwgYXV0aG9ycyBzaG91bGQNCitub3QgdXNlIHRoZSBjb2xvbiBpbiBYTUwgbmFtZXMgZXhjZXB0IGZvciBuYW1lc3BhY2UgcHVycG9zZXMsIGJ1dCBYTUwgcHJvY2Vzc29ycw0KK211c3QgYWNjZXB0IHRoZSBjb2xvbiBhcyBhIG5hbWUgY2hhcmFjdGVyLjwvcD4gPC9kaXY+IDxwPkFuIDxhIGhyZWY9IiNOVC1ObXRva2VuIj5ObXRva2VuPC9hPg0KKyhuYW1lIHRva2VuKSBpcyBhbnkgbWl4dHVyZSBvZiBuYW1lIGNoYXJhY3RlcnMuPC9wPiA8aDU+TmFtZXMgYW5kIFRva2VuczwvaDU+PHRhYmxlDQorY2xhc3M9InNjcmFwIj48dGJvZHk+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1OYW1lQ2hhciI+PC9hPls0XSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPk5hbWVDaGFyPC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPjxhIGhyZWY9IiNOVC1MZXR0ZXIiPkxldHRlcjwvYT4gfCA8YSBocmVmPSIjTlQtRGlnaXQiPkRpZ2l0PC9hPg0KK3wgJy4nIHwgJy0nIHwgJ18nIHwgJzonIHwgPGEgaHJlZj0iI05ULUNvbWJpbmluZ0NoYXIiPkNvbWJpbmluZ0NoYXI8L2E+IHwgPGENCitocmVmPSIjTlQtRXh0ZW5kZXIiPkV4dGVuZGVyPC9hPjwvY29kZT48L3RkPg0KKzwvdHI+DQorPC90Ym9keT48dGJvZHk+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1OYW1lIj48L2E+WzVdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+TmFtZTwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT4oPGEgaHJlZj0iI05ULUxldHRlciI+TGV0dGVyPC9hPiB8ICdfJyB8ICc6JykgKDxhIGhyZWY9IiNOVC1OYW1lQ2hhciI+TmFtZUNoYXI8L2E+KSo8L2NvZGU+PC90ZD4NCis8L3RyPg0KKzwvdGJvZHk+PHRib2R5Pg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PGEgbmFtZT0iTlQtTmFtZXMiPjwvYT5bNl0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5OYW1lczwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT48YSBocmVmPSIjTlQtTmFtZSI+TmFtZTwvYT4gKDxhIGhyZWY9IiNOVC1TIj5TPC9hPiA8YSBocmVmPSIjTlQtTmFtZSI+TmFtZTwvYT4pKjwvY29kZT48L3RkPg0KKzwvdHI+DQorPC90Ym9keT48dGJvZHk+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1ObXRva2VuIj48L2E+WzddJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+Tm10b2tlbjwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT4oPGEgaHJlZj0iI05ULU5hbWVDaGFyIj5OYW1lQ2hhcjwvYT4pKzwvY29kZT48L3RkPg0KKzwvdHI+DQorPC90Ym9keT48dGJvZHk+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1ObXRva2VucyI+PC9hPls4XSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPk5tdG9rZW5zPC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPjxhIGhyZWY9IiNOVC1ObXRva2VuIj5ObXRva2VuPC9hPiAoPGEgaHJlZj0iI05ULVMiPlM8L2E+IDxhIGhyZWY9IiNOVC1ObXRva2VuIj5ObXRva2VuPC9hPikqPC9jb2RlPjwvdGQ+DQorPC90cj4NCis8L3Rib2R5PjwvdGFibGU+IDxwPkxpdGVyYWwgZGF0YSBpcyBhbnkgcXVvdGVkIHN0cmluZyBub3QgY29udGFpbmluZyB0aGUgcXVvdGF0aW9uDQorbWFyayB1c2VkIGFzIGEgZGVsaW1pdGVyIGZvciB0aGF0IHN0cmluZy4gTGl0ZXJhbHMgYXJlIHVzZWQgZm9yIHNwZWNpZnlpbmcNCit0aGUgY29udGVudCBvZiBpbnRlcm5hbCBlbnRpdGllcyAoPGEgaHJlZj0iI05ULUVudGl0eVZhbHVlIj5FbnRpdHlWYWx1ZTwvYT4pLA0KK3RoZSB2YWx1ZXMgb2YgYXR0cmlidXRlcyAoPGEgaHJlZj0iI05ULUF0dFZhbHVlIj5BdHRWYWx1ZTwvYT4pLCBhbmQgZXh0ZXJuYWwNCitpZGVudGlmaWVycyAoPGEgaHJlZj0iI05ULVN5c3RlbUxpdGVyYWwiPlN5c3RlbUxpdGVyYWw8L2E+KS4gTm90ZSB0aGF0IGEgPGENCitocmVmPSIjTlQtU3lzdGVtTGl0ZXJhbCI+U3lzdGVtTGl0ZXJhbDwvYT4gY2FuIGJlIHBhcnNlZCB3aXRob3V0IHNjYW5uaW5nDQorZm9yIG1hcmt1cC48L3A+IDxoNT5MaXRlcmFsczwvaDU+PHRhYmxlIGNsYXNzPSJzY3JhcCI+PHRib2R5Pg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PGEgbmFtZT0iTlQtRW50aXR5VmFsdWUiPjwvYT5bOV0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5FbnRpdHlWYWx1ZTwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT4nIicgKFteJSZhbXA7Il0gfCA8YSBocmVmPSIjTlQtUEVSZWZlcmVuY2UiPlBFUmVmZXJlbmNlPC9hPiB8IDxhDQoraHJlZj0iI05ULVJlZmVyZW5jZSI+UmVmZXJlbmNlPC9hPikqICciJyA8L2NvZGU+PC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PGNvZGU+fCZuYnNwOyAiJyIgKFteJSZhbXA7J10gfCA8YSBocmVmPSIjTlQtUEVSZWZlcmVuY2UiPlBFUmVmZXJlbmNlPC9hPg0KK3wgPGEgaHJlZj0iI05ULVJlZmVyZW5jZSI+UmVmZXJlbmNlPC9hPikqICInIjwvY29kZT48L3RkPg0KKzwvdHI+DQorPC90Ym9keT48dGJvZHk+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1BdHRWYWx1ZSI+PC9hPlsxMF0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5BdHRWYWx1ZTwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT4nIicgKFteJmx0OyZhbXA7Il0gfCA8YSBocmVmPSIjTlQtUmVmZXJlbmNlIj5SZWZlcmVuY2U8L2E+KSogJyInIDwvY29kZT48L3RkPg0KKzwvdHI+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48Y29kZT58Jm5ic3A7ICInIiAoW14mbHQ7JmFtcDsnXSB8IDxhIGhyZWY9IiNOVC1SZWZlcmVuY2UiPlJlZmVyZW5jZTwvYT4pKg0KKyInIjwvY29kZT48L3RkPg0KKzwvdHI+DQorPC90Ym9keT48dGJvZHk+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1TeXN0ZW1MaXRlcmFsIj48L2E+WzExXSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPlN5c3RlbUxpdGVyYWw8L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+KCciJyBbXiJdKiAnIicpIHwmbmJzcDsoIiciIFteJ10qICInIikgPC9jb2RlPjwvdGQ+DQorPC90cj4NCis8L3Rib2R5Pjx0Ym9keT4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULVB1YmlkTGl0ZXJhbCI+PC9hPlsxMl0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5QdWJpZExpdGVyYWw8L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+JyInIDxhIGhyZWY9IiNOVC1QdWJpZENoYXIiPlB1YmlkQ2hhcjwvYT4qICciJyB8ICInIiAoPGEgaHJlZj0iI05ULVB1YmlkQ2hhciI+UHViaWRDaGFyPC9hPg0KKy0gIiciKSogIiciPC9jb2RlPjwvdGQ+DQorPC90cj4NCis8L3Rib2R5Pjx0Ym9keT4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULVB1YmlkQ2hhciI+PC9hPlsxM10mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5QdWJpZENoYXI8L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+I3gyMCB8ICN4RCB8ICN4QSB8Jm5ic3A7W2EtekEtWjAtOV0gfCZuYnNwO1stJygpKywuLzo9PzshKiNAJF8lXTwvY29kZT48L3RkPg0KKzwvdHI+DQorPC90Ym9keT48L3RhYmxlPiA8ZGl2IGNsYXNzPSJub3RlIj48cCBjbGFzcz0icHJlZml4Ij48Yj5Ob3RlOjwvYj48L3A+IDxwPkFsdGhvdWdoDQordGhlIDxhIGhyZWY9IiNOVC1FbnRpdHlWYWx1ZSI+RW50aXR5VmFsdWU8L2E+IHByb2R1Y3Rpb24gYWxsb3dzIHRoZSBkZWZpbml0aW9uDQorb2YgYW4gZW50aXR5IGNvbnNpc3Rpbmcgb2YgYSBzaW5nbGUgZXhwbGljaXQgPGNvZGU+Jmx0OzwvY29kZT4gaW4gdGhlIGxpdGVyYWwNCisoZS5nLiwgPGNvZGU+Jmx0OyFFTlRJVFkgbXlsdCAiJmx0OyI+PC9jb2RlPiksIGl0IGlzIHN0cm9uZ2x5IGFkdmlzZWQgdG8gYXZvaWQNCit0aGlzIHByYWN0aWNlIHNpbmNlIGFueSByZWZlcmVuY2UgdG8gdGhhdCBlbnRpdHkgd2lsbCBjYXVzZSBhIHdlbGwtZm9ybWVkbmVzcw0KK2Vycm9yLjwvcD4gPC9kaXY+IDwvZGl2PiA8ZGl2IGNsYXNzPSJkaXYyIj4gPGgzPjxhIG5hbWU9InN5bnRheCI+PC9hPjIuNCBDaGFyYWN0ZXINCitEYXRhIGFuZCBNYXJrdXA8L2gzPiA8cD48YSB0aXRsZT0iVGV4dCIgaHJlZj0iI2R0LXRleHQiPlRleHQ8L2E+IGNvbnNpc3RzDQorb2YgaW50ZXJtaW5nbGVkIDxhIHRpdGxlPSJDaGFyYWN0ZXIgRGF0YSIgaHJlZj0iI2R0LWNoYXJkYXRhIj5jaGFyYWN0ZXIgZGF0YTwvYT4NCithbmQgbWFya3VwLiBbPGEgdGl0bGU9Ik1hcmt1cCIgbmFtZT0iZHQtbWFya3VwIj5EZWZpbml0aW9uPC9hPjogPGI+TWFya3VwPC9iPg0KK3Rha2VzIHRoZSBmb3JtIG9mIDxhIHRpdGxlPSJTdGFydC1UYWciIGhyZWY9IiNkdC1zdGFnIj5zdGFydC10YWdzPC9hPiwgPGENCit0aXRsZT0iRW5kIFRhZyIgaHJlZj0iI2R0LWV0YWciPmVuZC10YWdzPC9hPiwgPGEgdGl0bGU9IkVtcHR5IiBocmVmPSIjZHQtZW1wdHkiPmVtcHR5LWVsZW1lbnQNCit0YWdzPC9hPiwgPGEgdGl0bGU9IkVudGl0eSBSZWZlcmVuY2UiIGhyZWY9IiNkdC1lbnRyZWYiPmVudGl0eSByZWZlcmVuY2VzPC9hPiwgPGENCit0aXRsZT0iQ2hhcmFjdGVyIFJlZmVyZW5jZSIgaHJlZj0iI2R0LWNoYXJyZWYiPmNoYXJhY3RlciByZWZlcmVuY2VzPC9hPiwgPGENCit0aXRsZT0iQ29tbWVudCIgaHJlZj0iI2R0LWNvbW1lbnQiPmNvbW1lbnRzPC9hPiwgPGEgdGl0bGU9IkNEQVRBIFNlY3Rpb24iDQoraHJlZj0iI2R0LWNkc2VjdGlvbiI+Q0RBVEEgc2VjdGlvbjwvYT4gZGVsaW1pdGVycywgPGEgdGl0bGU9IkRvY3VtZW50IFR5cGUgRGVjbGFyYXRpb24iDQoraHJlZj0iI2R0LWRvY3R5cGUiPmRvY3VtZW50IHR5cGUgZGVjbGFyYXRpb25zPC9hPiwgPGEgdGl0bGU9IlByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24iDQoraHJlZj0iI2R0LXBpIj5wcm9jZXNzaW5nIGluc3RydWN0aW9uczwvYT4sIDxhIGhyZWY9IiNOVC1YTUxEZWNsIj5YTUwgZGVjbGFyYXRpb25zPC9hPiwgPGENCitocmVmPSIjTlQtVGV4dERlY2wiPnRleHQgZGVjbGFyYXRpb25zPC9hPiwgYW5kIGFueSB3aGl0ZSBzcGFjZSB0aGF0IGlzIGF0DQordGhlIHRvcCBsZXZlbCBvZiB0aGUgZG9jdW1lbnQgZW50aXR5ICh0aGF0IGlzLCBvdXRzaWRlIHRoZSBkb2N1bWVudCBlbGVtZW50DQorYW5kIG5vdCBpbnNpZGUgYW55IG90aGVyIG1hcmt1cCkuXTwvcD4gPHA+WzxhIHRpdGxlPSJDaGFyYWN0ZXIgRGF0YSIgbmFtZT0iZHQtY2hhcmRhdGEiPkRlZmluaXRpb248L2E+Og0KK0FsbCB0ZXh0IHRoYXQgaXMgbm90IG1hcmt1cCBjb25zdGl0dXRlcyB0aGUgPGI+Y2hhcmFjdGVyIGRhdGE8L2I+IG9mIHRoZSBkb2N1bWVudC5dPC9wPiA8cD5UaGUNCithbXBlcnNhbmQgY2hhcmFjdGVyICgmYW1wOykgYW5kIHRoZSBsZWZ0IGFuZ2xlIGJyYWNrZXQgKCZsdDspIG1heSBhcHBlYXIgaW4NCit0aGVpciBsaXRlcmFsIGZvcm0gPGVtPm9ubHk8L2VtPiB3aGVuIHVzZWQgYXMgbWFya3VwIGRlbGltaXRlcnMsIG9yIHdpdGhpbg0KK2EgPGEgdGl0bGU9IkNvbW1lbnQiIGhyZWY9IiNkdC1jb21tZW50Ij5jb21tZW50PC9hPiwgYSA8YSB0aXRsZT0iUHJvY2Vzc2luZyBpbnN0cnVjdGlvbiINCitocmVmPSIjZHQtcGkiPnByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb248L2E+LCBvciBhIDxhIHRpdGxlPSJDREFUQSBTZWN0aW9uIiBocmVmPSIjZHQtY2RzZWN0aW9uIj5DREFUQQ0KK3NlY3Rpb248L2E+LiAgSWYgdGhleSBhcmUgbmVlZGVkIGVsc2V3aGVyZSwgdGhleSBtdXN0IGJlIDxhIHRpdGxlPSJlc2NhcGUiDQoraHJlZj0iI2R0LWVzY2FwZSI+ZXNjYXBlZDwvYT4gdXNpbmcgZWl0aGVyIDxhIHRpdGxlPSJDaGFyYWN0ZXIgUmVmZXJlbmNlIg0KK2hyZWY9IiNkdC1jaGFycmVmIj5udW1lcmljIGNoYXJhY3RlciByZWZlcmVuY2VzPC9hPiBvciB0aGUgc3RyaW5ncyAiPGNvZGU+JmFtcDthbXA7PC9jb2RlPiINCithbmQgIjxjb2RlPiZhbXA7bHQ7PC9jb2RlPiIgcmVzcGVjdGl2ZWx5LiBUaGUgcmlnaHQgYW5nbGUgYnJhY2tldCAoPikgbWF5DQorYmUgcmVwcmVzZW50ZWQgdXNpbmcgdGhlIHN0cmluZyAiPGNvZGU+JmFtcDtndDs8L2NvZGU+IiwgYW5kIG11c3QsIDxhIHRpdGxlPSJGb3IgQ29tcGF0aWJpbGl0eSINCitocmVmPSIjZHQtY29tcGF0Ij5mb3IgY29tcGF0aWJpbGl0eTwvYT4sIGJlIGVzY2FwZWQgdXNpbmcgIjxjb2RlPiZhbXA7Z3Q7PC9jb2RlPiINCitvciBhIGNoYXJhY3RlciByZWZlcmVuY2Ugd2hlbiBpdCBhcHBlYXJzIGluIHRoZSBzdHJpbmcgIjxjb2RlPl1dJmd0OzwvY29kZT4iDQoraW4gY29udGVudCwgd2hlbiB0aGF0IHN0cmluZyBpcyBub3QgbWFya2luZyB0aGUgZW5kIG9mIGEgPGEgdGl0bGU9IkNEQVRBIFNlY3Rpb24iDQoraHJlZj0iI2R0LWNkc2VjdGlvbiI+Q0RBVEEgc2VjdGlvbjwvYT4uPC9wPiA8cD5JbiB0aGUgY29udGVudCBvZiBlbGVtZW50cywNCitjaGFyYWN0ZXIgZGF0YSBpcyBhbnkgc3RyaW5nIG9mIGNoYXJhY3RlcnMgd2hpY2ggZG9lcyBub3QgY29udGFpbiB0aGUgc3RhcnQtZGVsaW1pdGVyDQorb2YgYW55IG1hcmt1cC4gSW4gYSBDREFUQSBzZWN0aW9uLCBjaGFyYWN0ZXIgZGF0YSBpcyBhbnkgc3RyaW5nIG9mIGNoYXJhY3RlcnMNCitub3QgaW5jbHVkaW5nIHRoZSBDREFUQS1zZWN0aW9uLWNsb3NlIGRlbGltaXRlciwgIjxjb2RlPl1dJmd0OzwvY29kZT4iLjwvcD4gPHA+VG8NCithbGxvdyBhdHRyaWJ1dGUgdmFsdWVzIHRvIGNvbnRhaW4gYm90aCBzaW5nbGUgYW5kIGRvdWJsZSBxdW90ZXMsIHRoZSBhcG9zdHJvcGhlDQorb3Igc2luZ2xlLXF1b3RlIGNoYXJhY3RlciAoJykgbWF5IGJlIHJlcHJlc2VudGVkIGFzICI8Y29kZT4mYW1wO2Fwb3M7PC9jb2RlPiIsDQorYW5kIHRoZSBkb3VibGUtcXVvdGUgY2hhcmFjdGVyICgiKSBhcyAiPGNvZGU+JmFtcDtxdW90OzwvY29kZT4iLjwvcD4gPGg1PkNoYXJhY3Rlcg0KK0RhdGE8L2g1Pjx0YWJsZSBjbGFzcz0ic2NyYXAiPjx0Ym9keT4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULUNoYXJEYXRhIj48L2E+WzE0XSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPkNoYXJEYXRhPC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPlteJmx0OyZhbXA7XSogLSAoW14mbHQ7JmFtcDtdKiAnXV0mZ3Q7JyBbXiZsdDsmYW1wO10qKTwvY29kZT48L3RkPg0KKzwvdHI+DQorPC90Ym9keT48L3RhYmxlPiA8L2Rpdj4gPGRpdiBjbGFzcz0iZGl2MiI+IDxoMz48YSBuYW1lPSJzZWMtY29tbWVudHMiPjwvYT4yLjUNCitDb21tZW50czwvaDM+IDxwPls8YSB0aXRsZT0iQ29tbWVudCIgbmFtZT0iZHQtY29tbWVudCI+RGVmaW5pdGlvbjwvYT46IDxiPkNvbW1lbnRzPC9iPg0KK21heSBhcHBlYXIgYW55d2hlcmUgaW4gYSBkb2N1bWVudCBvdXRzaWRlIG90aGVyIDxhIHRpdGxlPSJNYXJrdXAiIGhyZWY9IiNkdC1tYXJrdXAiPm1hcmt1cDwvYT47DQoraW4gYWRkaXRpb24sIHRoZXkgbWF5IGFwcGVhciB3aXRoaW4gdGhlIGRvY3VtZW50IHR5cGUgZGVjbGFyYXRpb24gYXQgcGxhY2VzDQorYWxsb3dlZCBieSB0aGUgZ3JhbW1hci4gVGhleSBhcmUgbm90IHBhcnQgb2YgdGhlIGRvY3VtZW50J3MgPGEgdGl0bGU9IkNoYXJhY3RlciBEYXRhIg0KK2hyZWY9IiNkdC1jaGFyZGF0YSI+Y2hhcmFjdGVyIGRhdGE8L2E+OyBhbiBYTUwgcHJvY2Vzc29yIG1heSwgYnV0IG5lZWQgbm90LA0KK21ha2UgaXQgcG9zc2libGUgZm9yIGFuIGFwcGxpY2F0aW9uIHRvIHJldHJpZXZlIHRoZSB0ZXh0IG9mIGNvbW1lbnRzLiA8YSB0aXRsZT0iRm9yIENvbXBhdGliaWxpdHkiDQoraHJlZj0iI2R0LWNvbXBhdCI+Rm9yIGNvbXBhdGliaWxpdHk8L2E+LCB0aGUgc3RyaW5nICI8Y29kZT4tLTwvY29kZT4iIChkb3VibGUtaHlwaGVuKQ0KK211c3Qgbm90IG9jY3VyIHdpdGhpbiBjb21tZW50cy5dIFBhcmFtZXRlciBlbnRpdHkgcmVmZXJlbmNlcyBhcmUgbm90IHJlY29nbml6ZWQNCit3aXRoaW4gY29tbWVudHMuPC9wPiA8aDU+Q29tbWVudHM8L2g1Pjx0YWJsZSBjbGFzcz0ic2NyYXAiPjx0Ym9keT4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULUNvbW1lbnQiPjwvYT5bMTVdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+Q29tbWVudDwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT4nJmx0OyEtLScgKCg8YSBocmVmPSIjTlQtQ2hhciI+Q2hhcjwvYT4gLSAnLScpIHwgKCctJyAoPGEgaHJlZj0iI05ULUNoYXIiPkNoYXI8L2E+DQorLSAnLScpKSkqICctLT4nPC9jb2RlPjwvdGQ+DQorPC90cj4NCis8L3Rib2R5PjwvdGFibGU+IDxwPkFuIGV4YW1wbGUgb2YgYSBjb21tZW50OjwvcD4gPHRhYmxlIGNsYXNzPSJlZyIgd2lkdGg9IjEwMCUiDQorYm9yZGVyPSIxIiBjZWxscGFkZGluZz0iNSIgYmdjb2xvcj0iIzk5ZmZmZiI+DQorPHRyPg0KKzx0ZD48cHJlPiZsdDshLS0gZGVjbGFyYXRpb25zIGZvciAmbHQ7aGVhZD4gJmFtcDsgJmx0O2JvZHk+IC0tPjwvcHJlPjwvdGQ+DQorPC90cj4NCis8L3RhYmxlPiA8cD5Ob3RlIHRoYXQgdGhlIGdyYW1tYXIgZG9lcyBub3QgYWxsb3cgYSBjb21tZW50IGVuZGluZyBpbiA8Y29kZT4tLS0+PC9jb2RlPi4NCitUaGUgZm9sbG93aW5nIGV4YW1wbGUgaXMgPGVtPm5vdDwvZW0+IHdlbGwtZm9ybWVkLjwvcD4gPHRhYmxlIGNsYXNzPSJlZyIgd2lkdGg9IjEwMCUiDQorYm9yZGVyPSIxIiBjZWxscGFkZGluZz0iNSIgYmdjb2xvcj0iIzk5ZmZmZiI+DQorPHRyPg0KKzx0ZD48cHJlPiZsdDshLS0gQissIEIsIG9yIEItLS0+PC9wcmU+PC90ZD4NCis8L3RyPg0KKzwvdGFibGU+IDwvZGl2PiA8ZGl2IGNsYXNzPSJkaXYyIj4gPGgzPjxhIG5hbWU9InNlYy1waSI+PC9hPjIuNiBQcm9jZXNzaW5nDQorSW5zdHJ1Y3Rpb25zPC9oMz4gPHA+WzxhIHRpdGxlPSJQcm9jZXNzaW5nIGluc3RydWN0aW9uIiBuYW1lPSJkdC1waSI+RGVmaW5pdGlvbjwvYT46IDxiPlByb2Nlc3NpbmcNCitpbnN0cnVjdGlvbnM8L2I+IChQSXMpIGFsbG93IGRvY3VtZW50cyB0byBjb250YWluIGluc3RydWN0aW9ucyBmb3IgYXBwbGljYXRpb25zLl08L3A+IDxoNT5Qcm9jZXNzaW5nDQorSW5zdHJ1Y3Rpb25zPC9oNT48dGFibGUgY2xhc3M9InNjcmFwIj48dGJvZHk+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1QSSI+PC9hPlsxNl0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5QSTwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT4nJmx0Oz8nIDxhIGhyZWY9IiNOVC1QSVRhcmdldCI+UElUYXJnZXQ8L2E+ICg8YSBocmVmPSIjTlQtUyI+UzwvYT4NCisoPGEgaHJlZj0iI05ULUNoYXIiPkNoYXI8L2E+KiAtICg8YSBocmVmPSIjTlQtQ2hhciI+Q2hhcjwvYT4qICc/PicgPGEgaHJlZj0iI05ULUNoYXIiPkNoYXI8L2E+KikpKT8NCisnPz4nPC9jb2RlPjwvdGQ+DQorPC90cj4NCis8L3Rib2R5Pjx0Ym9keT4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULVBJVGFyZ2V0Ij48L2E+WzE3XSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPlBJVGFyZ2V0PC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPjxhIGhyZWY9IiNOVC1OYW1lIj5OYW1lPC9hPiAtICgoJ1gnIHwgJ3gnKSAoJ00nIHwgJ20nKSAoJ0wnIHwgJ2wnKSk8L2NvZGU+PC90ZD4NCis8L3RyPg0KKzwvdGJvZHk+PC90YWJsZT4gPHA+UElzIGFyZSBub3QgcGFydCBvZiB0aGUgZG9jdW1lbnQncyA8YSB0aXRsZT0iQ2hhcmFjdGVyIERhdGEiDQoraHJlZj0iI2R0LWNoYXJkYXRhIj5jaGFyYWN0ZXIgZGF0YTwvYT4sIGJ1dCBtdXN0IGJlIHBhc3NlZCB0aHJvdWdoIHRvIHRoZQ0KK2FwcGxpY2F0aW9uLiBUaGUgUEkgYmVnaW5zIHdpdGggYSB0YXJnZXQgKDxhIGhyZWY9IiNOVC1QSVRhcmdldCI+UElUYXJnZXQ8L2E+KQ0KK3VzZWQgdG8gaWRlbnRpZnkgdGhlIGFwcGxpY2F0aW9uIHRvIHdoaWNoIHRoZSBpbnN0cnVjdGlvbiBpcyBkaXJlY3RlZC4gVGhlDQordGFyZ2V0IG5hbWVzICI8Y29kZT5YTUw8L2NvZGU+IiwgIjxjb2RlPnhtbDwvY29kZT4iLCBhbmQgc28gb24gYXJlIHJlc2VydmVkDQorZm9yIHN0YW5kYXJkaXphdGlvbiBpbiB0aGlzIG9yIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGlzIHNwZWNpZmljYXRpb24uIFRoZQ0KK1hNTCA8YSB0aXRsZT0iTm90YXRpb24iIGhyZWY9IiNkdC1ub3RhdGlvbiI+Tm90YXRpb248L2E+IG1lY2hhbmlzbSBtYXkgYmUNCit1c2VkIGZvciBmb3JtYWwgZGVjbGFyYXRpb24gb2YgUEkgdGFyZ2V0cy4gUGFyYW1ldGVyIGVudGl0eSByZWZlcmVuY2VzIGFyZQ0KK25vdCByZWNvZ25pemVkIHdpdGhpbiBwcm9jZXNzaW5nIGluc3RydWN0aW9ucy48L3A+IDwvZGl2PiA8ZGl2IGNsYXNzPSJkaXYyIj4gPGgzPjxhDQorbmFtZT0ic2VjLWNkYXRhLXNlY3QiPjwvYT4yLjcgQ0RBVEEgU2VjdGlvbnM8L2gzPiA8cD5bPGEgdGl0bGU9IkNEQVRBIFNlY3Rpb24iDQorbmFtZT0iZHQtY2RzZWN0aW9uIj5EZWZpbml0aW9uPC9hPjogPGI+Q0RBVEEgc2VjdGlvbnM8L2I+IG1heSBvY2N1ciBhbnl3aGVyZQ0KK2NoYXJhY3RlciBkYXRhIG1heSBvY2N1cjsgdGhleSBhcmUgdXNlZCB0byBlc2NhcGUgYmxvY2tzIG9mIHRleHQgY29udGFpbmluZw0KK2NoYXJhY3RlcnMgd2hpY2ggd291bGQgb3RoZXJ3aXNlIGJlIHJlY29nbml6ZWQgYXMgbWFya3VwLiBDREFUQSBzZWN0aW9ucyBiZWdpbg0KK3dpdGggdGhlIHN0cmluZyAiPGNvZGU+Jmx0OyFbQ0RBVEFbPC9jb2RlPiIgYW5kIGVuZCB3aXRoIHRoZSBzdHJpbmcgIjxjb2RlPl1dJmd0OzwvY29kZT4iOl08L3A+IDxoNT5DREFUQQ0KK1NlY3Rpb25zPC9oNT48dGFibGUgY2xhc3M9InNjcmFwIj48dGJvZHk+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1DRFNlY3QiPjwvYT5bMThdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+Q0RTZWN0PC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPjxhIGhyZWY9IiNOVC1DRFN0YXJ0Ij5DRFN0YXJ0PC9hPiA8YSBocmVmPSIjTlQtQ0RhdGEiPkNEYXRhPC9hPiA8YQ0KK2hyZWY9IiNOVC1DREVuZCI+Q0RFbmQ8L2E+PC9jb2RlPjwvdGQ+DQorPC90cj4NCis8L3Rib2R5Pjx0Ym9keT4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULUNEU3RhcnQiPjwvYT5bMTldJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+Q0RTdGFydDwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT4nJmx0OyFbQ0RBVEFbJzwvY29kZT48L3RkPg0KKzwvdHI+DQorPC90Ym9keT48dGJvZHk+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1DRGF0YSI+PC9hPlsyMF0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5DRGF0YTwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT4oPGEgaHJlZj0iI05ULUNoYXIiPkNoYXI8L2E+KiAtICg8YSBocmVmPSIjTlQtQ2hhciI+Q2hhcjwvYT4qICddXSZndDsnIDxhDQoraHJlZj0iI05ULUNoYXIiPkNoYXI8L2E+KikpIDwvY29kZT48L3RkPg0KKzwvdHI+DQorPC90Ym9keT48dGJvZHk+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1DREVuZCI+PC9hPlsyMV0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5DREVuZDwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT4nXV0mZ3Q7JzwvY29kZT48L3RkPg0KKzwvdHI+DQorPC90Ym9keT48L3RhYmxlPiA8cD5XaXRoaW4gYSBDREFUQSBzZWN0aW9uLCBvbmx5IHRoZSA8YSBocmVmPSIjTlQtQ0RFbmQiPkNERW5kPC9hPg0KK3N0cmluZyBpcyByZWNvZ25pemVkIGFzIG1hcmt1cCwgc28gdGhhdCBsZWZ0IGFuZ2xlIGJyYWNrZXRzIGFuZCBhbXBlcnNhbmRzDQorbWF5IG9jY3VyIGluIHRoZWlyIGxpdGVyYWwgZm9ybTsgdGhleSBuZWVkIG5vdCAoYW5kIGNhbm5vdCkgYmUgZXNjYXBlZCB1c2luZw0KKyI8Y29kZT4mYW1wO2x0OzwvY29kZT4iIGFuZCAiPGNvZGU+JmFtcDthbXA7PC9jb2RlPiIuIENEQVRBIHNlY3Rpb25zIGNhbm5vdA0KK25lc3QuPC9wPiA8cD5BbiBleGFtcGxlIG9mIGEgQ0RBVEEgc2VjdGlvbiwgaW4gd2hpY2ggIjxjb2RlPiZsdDtncmVldGluZz48L2NvZGU+Ig0KK2FuZCAiPGNvZGU+Jmx0Oy9ncmVldGluZz48L2NvZGU+IiBhcmUgcmVjb2duaXplZCBhcyA8YSB0aXRsZT0iQ2hhcmFjdGVyIERhdGEiDQoraHJlZj0iI2R0LWNoYXJkYXRhIj5jaGFyYWN0ZXIgZGF0YTwvYT4sIG5vdCA8YSB0aXRsZT0iTWFya3VwIiBocmVmPSIjZHQtbWFya3VwIj5tYXJrdXA8L2E+OjwvcD4gPHRhYmxlDQorY2xhc3M9ImVnIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIxIiBjZWxscGFkZGluZz0iNSIgYmdjb2xvcj0iIzk5ZmZmZiI+DQorPHRyPg0KKzx0ZD48cHJlPiZsdDshW0NEQVRBWyZsdDtncmVldGluZz5IZWxsbywgd29ybGQhJmx0Oy9ncmVldGluZz5dXSZndDsgPC9wcmU+PC90ZD4NCis8L3RyPg0KKzwvdGFibGU+IDwvZGl2PiA8ZGl2IGNsYXNzPSJkaXYyIj4gPGgzPjxhIG5hbWU9InNlYy1wcm9sb2ctZHRkIj48L2E+Mi44IFByb2xvZw0KK2FuZCBEb2N1bWVudCBUeXBlIERlY2xhcmF0aW9uPC9oMz4gPHA+WzxhIHRpdGxlPSJYTUwgRGVjbGFyYXRpb24iIG5hbWU9ImR0LXhtbGRlY2wiPkRlZmluaXRpb248L2E+Og0KK1hNTCBkb2N1bWVudHMgc2hvdWxkIGJlZ2luIHdpdGggYW4gPGI+WE1MIGRlY2xhcmF0aW9uPC9iPiB3aGljaCBzcGVjaWZpZXMNCit0aGUgdmVyc2lvbiBvZiBYTUwgYmVpbmcgdXNlZC5dIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGlzIGEgY29tcGxldGUgWE1MDQorZG9jdW1lbnQsIDxhIHRpdGxlPSJXZWxsLUZvcm1lZCIgaHJlZj0iI2R0LXdlbGxmb3JtZWQiPndlbGwtZm9ybWVkPC9hPiBidXQNCitub3QgPGEgdGl0bGU9IlZhbGlkaXR5IiBocmVmPSIjZHQtdmFsaWQiPnZhbGlkPC9hPjo8L3A+IDx0YWJsZSBjbGFzcz0iZWciDQord2lkdGg9IjEwMCUiIGJvcmRlcj0iMSIgY2VsbHBhZGRpbmc9IjUiIGJnY29sb3I9IiM5OWZmZmYiPg0KKzx0cj4NCis8dGQ+PHByZT4mbHQ7P3htbCB2ZXJzaW9uPSIxLjAiPz4gJmx0O2dyZWV0aW5nPkhlbGxvLCB3b3JsZCEmbHQ7L2dyZWV0aW5nPiA8L3ByZT48L3RkPg0KKzwvdHI+DQorPC90YWJsZT4gPHA+YW5kIHNvIGlzIHRoaXM6PC9wPiA8dGFibGUgY2xhc3M9ImVnIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIxIg0KK2NlbGxwYWRkaW5nPSI1IiBiZ2NvbG9yPSIjOTlmZmZmIj4NCis8dHI+DQorPHRkPjxwcmU+Jmx0O2dyZWV0aW5nPkhlbGxvLCB3b3JsZCEmbHQ7L2dyZWV0aW5nPjwvcHJlPjwvdGQ+DQorPC90cj4NCis8L3RhYmxlPiA8cD5UaGUgdmVyc2lvbiBudW1iZXIgIjxjb2RlPjEuMDwvY29kZT4iIHNob3VsZCBiZSB1c2VkIHRvIGluZGljYXRlDQorY29uZm9ybWFuY2UgdG8gdGhpcyB2ZXJzaW9uIG9mIHRoaXMgc3BlY2lmaWNhdGlvbjsgaXQgaXMgYW4gZXJyb3IgZm9yIGEgZG9jdW1lbnQNCit0byB1c2UgdGhlIHZhbHVlICI8Y29kZT4xLjA8L2NvZGU+IiBpZiBpdCBkb2VzIG5vdCBjb25mb3JtIHRvIHRoaXMgdmVyc2lvbg0KK29mIHRoaXMgc3BlY2lmaWNhdGlvbi4gSXQgaXMgdGhlIGludGVudCBvZiB0aGUgWE1MIHdvcmtpbmcgZ3JvdXAgdG8gZ2l2ZSBsYXRlcg0KK3ZlcnNpb25zIG9mIHRoaXMgc3BlY2lmaWNhdGlvbiBudW1iZXJzIG90aGVyIHRoYW4gIjxjb2RlPjEuMDwvY29kZT4iLCBidXQNCit0aGlzIGludGVudCBkb2VzIG5vdCBpbmRpY2F0ZSBhIGNvbW1pdG1lbnQgdG8gcHJvZHVjZSBhbnkgZnV0dXJlIHZlcnNpb25zDQorb2YgWE1MLCBub3IgaWYgYW55IGFyZSBwcm9kdWNlZCwgdG8gdXNlIGFueSBwYXJ0aWN1bGFyIG51bWJlcmluZyBzY2hlbWUuIFNpbmNlDQorZnV0dXJlIHZlcnNpb25zIGFyZSBub3QgcnVsZWQgb3V0LCB0aGlzIGNvbnN0cnVjdCBpcyBwcm92aWRlZCBhcyBhIG1lYW5zIHRvDQorYWxsb3cgdGhlIHBvc3NpYmlsaXR5IG9mIGF1dG9tYXRpYyB2ZXJzaW9uIHJlY29nbml0aW9uLCBzaG91bGQgaXQgYmVjb21lIG5lY2Vzc2FyeS4NCitQcm9jZXNzb3JzIG1heSBzaWduYWwgYW4gZXJyb3IgaWYgdGhleSByZWNlaXZlIGRvY3VtZW50cyBsYWJlbGVkIHdpdGggdmVyc2lvbnMNCit0aGV5IGRvIG5vdCBzdXBwb3J0LjwvcD4gPHA+VGhlIGZ1bmN0aW9uIG9mIHRoZSBtYXJrdXAgaW4gYW4gWE1MIGRvY3VtZW50DQoraXMgdG8gZGVzY3JpYmUgaXRzIHN0b3JhZ2UgYW5kIGxvZ2ljYWwgc3RydWN0dXJlIGFuZCB0byBhc3NvY2lhdGUgYXR0cmlidXRlLXZhbHVlDQorcGFpcnMgd2l0aCBpdHMgbG9naWNhbCBzdHJ1Y3R1cmVzLiBYTUwgcHJvdmlkZXMgYSBtZWNoYW5pc20sIHRoZSA8YSB0aXRsZT0iRG9jdW1lbnQgVHlwZSBEZWNsYXJhdGlvbiINCitocmVmPSIjZHQtZG9jdHlwZSI+ZG9jdW1lbnQgdHlwZSBkZWNsYXJhdGlvbjwvYT4sIHRvIGRlZmluZSBjb25zdHJhaW50cyBvbg0KK3RoZSBsb2dpY2FsIHN0cnVjdHVyZSBhbmQgdG8gc3VwcG9ydCB0aGUgdXNlIG9mIHByZWRlZmluZWQgc3RvcmFnZSB1bml0cy4NCitbPGEgdGl0bGU9IlZhbGlkaXR5IiBuYW1lPSJkdC12YWxpZCI+RGVmaW5pdGlvbjwvYT46IEFuIFhNTCBkb2N1bWVudCBpcyA8Yj52YWxpZDwvYj4NCitpZiBpdCBoYXMgYW4gYXNzb2NpYXRlZCBkb2N1bWVudCB0eXBlIGRlY2xhcmF0aW9uIGFuZCBpZiB0aGUgZG9jdW1lbnQgY29tcGxpZXMNCit3aXRoIHRoZSBjb25zdHJhaW50cyBleHByZXNzZWQgaW4gaXQuXTwvcD4gPHA+VGhlIGRvY3VtZW50IHR5cGUgZGVjbGFyYXRpb24NCittdXN0IGFwcGVhciBiZWZvcmUgdGhlIGZpcnN0IDxhIHRpdGxlPSJFbGVtZW50IiBocmVmPSIjZHQtZWxlbWVudCI+ZWxlbWVudDwvYT4NCitpbiB0aGUgZG9jdW1lbnQuPC9wPiA8aDU+UHJvbG9nPC9oNT48dGFibGUgY2xhc3M9InNjcmFwIj48dGJvZHk+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1wcm9sb2ciPjwvYT5bMjJdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+cHJvbG9nPC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPjxhIGhyZWY9IiNOVC1YTUxEZWNsIj5YTUxEZWNsPC9hPj8gPGEgaHJlZj0iI05ULU1pc2MiPk1pc2M8L2E+Kg0KKyg8YSBocmVmPSIjTlQtZG9jdHlwZWRlY2wiPmRvY3R5cGVkZWNsPC9hPiA8YSBocmVmPSIjTlQtTWlzYyI+TWlzYzwvYT4qKT88L2NvZGU+PC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PGEgbmFtZT0iTlQtWE1MRGVjbCI+PC9hPlsyM10mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5YTUxEZWNsPC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPicmbHQ7P3htbCcgPGEgaHJlZj0iI05ULVZlcnNpb25JbmZvIj5WZXJzaW9uSW5mbzwvYT4gPGEgaHJlZj0iI05ULUVuY29kaW5nRGVjbCI+RW5jb2RpbmdEZWNsPC9hPj8gPGENCitocmVmPSIjTlQtU0REZWNsIj5TRERlY2w8L2E+PyA8YSBocmVmPSIjTlQtUyI+UzwvYT4/ICc/Pic8L2NvZGU+PC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PGEgbmFtZT0iTlQtVmVyc2lvbkluZm8iPjwvYT5bMjRdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+VmVyc2lvbkluZm88L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+PGEgaHJlZj0iI05ULVMiPlM8L2E+ICd2ZXJzaW9uJyA8YSBocmVmPSIjTlQtRXEiPkVxPC9hPiAoIiciIDxhDQoraHJlZj0iI05ULVZlcnNpb25OdW0iPlZlcnNpb25OdW08L2E+ICInIiB8ICciJyA8YSBocmVmPSIjTlQtVmVyc2lvbk51bSI+VmVyc2lvbk51bTwvYT4NCisnIicpPGk+LyogICovPC9pPjwvY29kZT48L3RkPg0KKzwvdHI+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1FcSI+PC9hPlsyNV0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5FcTwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT48YSBocmVmPSIjTlQtUyI+UzwvYT4/ICc9JyA8YSBocmVmPSIjTlQtUyI+UzwvYT4/PC9jb2RlPjwvdGQ+DQorPC90cj4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULVZlcnNpb25OdW0iPjwvYT5bMjZdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+VmVyc2lvbk51bTwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT4oW2EtekEtWjAtOV8uOl0gfCAnLScpKzwvY29kZT48L3RkPg0KKzwvdHI+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1NaXNjIj48L2E+WzI3XSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPk1pc2M8L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+PGEgaHJlZj0iI05ULUNvbW1lbnQiPkNvbW1lbnQ8L2E+IHwgPGEgaHJlZj0iI05ULVBJIj5QSTwvYT4gfCA8YQ0KK2hyZWY9IiNOVC1TIj5TPC9hPjwvY29kZT48L3RkPg0KKzwvdHI+DQorPC90Ym9keT48L3RhYmxlPiA8cD5bPGEgdGl0bGU9IkRvY3VtZW50IFR5cGUgRGVjbGFyYXRpb24iIG5hbWU9ImR0LWRvY3R5cGUiPkRlZmluaXRpb248L2E+Og0KK1RoZSBYTUwgPGI+ZG9jdW1lbnQgdHlwZSBkZWNsYXJhdGlvbjwvYj4gY29udGFpbnMgb3IgcG9pbnRzIHRvIDxhIHRpdGxlPSJtYXJrdXAgZGVjbGFyYXRpb24iDQoraHJlZj0iI2R0LW1hcmt1cGRlY2wiPm1hcmt1cCBkZWNsYXJhdGlvbnM8L2E+IHRoYXQgcHJvdmlkZSBhIGdyYW1tYXIgZm9yIGENCitjbGFzcyBvZiBkb2N1bWVudHMuIFRoaXMgZ3JhbW1hciBpcyBrbm93biBhcyBhIGRvY3VtZW50IHR5cGUgZGVmaW5pdGlvbiwgb3IgPGI+RFREPC9iPi4NCitUaGUgZG9jdW1lbnQgdHlwZSBkZWNsYXJhdGlvbiBjYW4gcG9pbnQgdG8gYW4gZXh0ZXJuYWwgc3Vic2V0IChhIHNwZWNpYWwga2luZA0KK29mIDxhIHRpdGxlPSJFeHRlcm5hbCBFbnRpdHkiIGhyZWY9IiNkdC1leHRlbnQiPmV4dGVybmFsIGVudGl0eTwvYT4pIGNvbnRhaW5pbmcNCittYXJrdXAgZGVjbGFyYXRpb25zLCBvciBjYW4gY29udGFpbiB0aGUgbWFya3VwIGRlY2xhcmF0aW9ucyBkaXJlY3RseSBpbiBhbg0KK2ludGVybmFsIHN1YnNldCwgb3IgY2FuIGRvIGJvdGguIFRoZSBEVEQgZm9yIGEgZG9jdW1lbnQgY29uc2lzdHMgb2YgYm90aCBzdWJzZXRzDQordGFrZW4gdG9nZXRoZXIuXTwvcD4gPHA+WzxhIHRpdGxlPSJtYXJrdXAgZGVjbGFyYXRpb24iIG5hbWU9ImR0LW1hcmt1cGRlY2wiPkRlZmluaXRpb248L2E+Og0KKyBBIDxiPm1hcmt1cCBkZWNsYXJhdGlvbjwvYj4gaXMgYW4gPGEgdGl0bGU9IkVsZW1lbnQgVHlwZSBkZWNsYXJhdGlvbiIgaHJlZj0iI2R0LWVsZGVjbCI+ZWxlbWVudA0KK3R5cGUgZGVjbGFyYXRpb248L2E+LCBhbiA8YSB0aXRsZT0iQXR0cmlidXRlLUxpc3QgRGVjbGFyYXRpb24iIGhyZWY9IiNkdC1hdHRkZWNsIj5hdHRyaWJ1dGUtbGlzdA0KK2RlY2xhcmF0aW9uPC9hPiwgYW4gPGEgdGl0bGU9ImVudGl0eSBkZWNsYXJhdGlvbiIgaHJlZj0iI2R0LWVudGRlY2wiPmVudGl0eQ0KK2RlY2xhcmF0aW9uPC9hPiwgb3IgYSA8YSB0aXRsZT0iTm90YXRpb24gRGVjbGFyYXRpb24iIGhyZWY9IiNkdC1ub3RkZWNsIj5ub3RhdGlvbg0KK2RlY2xhcmF0aW9uPC9hPi5dIFRoZXNlIGRlY2xhcmF0aW9ucyBtYXkgYmUgY29udGFpbmVkIGluIHdob2xlIG9yIGluIHBhcnQNCit3aXRoaW4gPGEgdGl0bGU9IlBhcmFtZXRlciBlbnRpdHkiIGhyZWY9IiNkdC1QRSI+cGFyYW1ldGVyIGVudGl0aWVzPC9hPiwgYXMNCitkZXNjcmliZWQgaW4gdGhlIHdlbGwtZm9ybWVkbmVzcyBhbmQgdmFsaWRpdHkgY29uc3RyYWludHMgYmVsb3cuIEZvciBmdXJ0aGVyDQoraW5mb3JtYXRpb24sIHNlZSA8YSBocmVmPSIjc2VjLXBoeXNpY2FsLXN0cnVjdCI+PGI+NCBQaHlzaWNhbCBTdHJ1Y3R1cmVzPC9iPjwvYT4uPC9wPiA8aDU+RG9jdW1lbnQNCitUeXBlIERlZmluaXRpb248L2g1Pjx0YWJsZSBjbGFzcz0ic2NyYXAiPjx0Ym9keT4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULWRvY3R5cGVkZWNsIj48L2E+WzI4XSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPmRvY3R5cGVkZWNsPC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPicmbHQ7IURPQ1RZUEUnIDxhIGhyZWY9IiNOVC1TIj5TPC9hPiA8YSBocmVmPSIjTlQtTmFtZSI+TmFtZTwvYT4NCisoPGEgaHJlZj0iI05ULVMiPlM8L2E+IDxhIGhyZWY9IiNOVC1FeHRlcm5hbElEIj5FeHRlcm5hbElEPC9hPik/IDxhIGhyZWY9IiNOVC1TIj5TPC9hPj8NCisoJ1snICg8YSBocmVmPSIjTlQtbWFya3VwZGVjbCI+bWFya3VwZGVjbDwvYT4gfCA8YSBocmVmPSIjTlQtRGVjbFNlcCI+RGVjbFNlcDwvYT4pKg0KKyddJyA8YSBocmVmPSIjTlQtUyI+UzwvYT4/KT8gJz4nPC9jb2RlPjwvdGQ+DQorPHRkPjxhIGhyZWY9IiN2Yy1yb290dHlwZSI+W1ZDOiBSb290IEVsZW1lbnQgVHlwZV08L2E+PC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PGEgaHJlZj0iI0V4dFN1YnNldCI+W1dGQzogRXh0ZXJuYWwgU3Vic2V0XTwvYT48L3RkPg0KKzwvdHI+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48aT4vKiAgKi88L2k+PC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PGEgbmFtZT0iTlQtRGVjbFNlcCI+PC9hPlsyOGFdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+RGVjbFNlcDwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT48YSBocmVmPSIjTlQtUEVSZWZlcmVuY2UiPlBFUmVmZXJlbmNlPC9hPiB8IDxhIGhyZWY9IiNOVC1TIj5TPC9hPjwvY29kZT48L3RkPg0KKzx0ZD48YSBocmVmPSIjUEUtYmV0d2Vlbi1EZWNscyI+W1dGQzogUEUgQmV0d2VlbiBEZWNsYXJhdGlvbnNdPC9hPjwvdGQ+DQorPC90cj4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjxpPi8qICAqLzwvaT48L3RkPg0KKzwvdHI+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1tYXJrdXBkZWNsIj48L2E+WzI5XSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPm1hcmt1cGRlY2w8L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+PGEgaHJlZj0iI05ULWVsZW1lbnRkZWNsIj5lbGVtZW50ZGVjbDwvYT4gfCA8YSBocmVmPSIjTlQtQXR0bGlzdERlY2wiPkF0dGxpc3REZWNsPC9hPg0KK3wgPGEgaHJlZj0iI05ULUVudGl0eURlY2wiPkVudGl0eURlY2w8L2E+IHwgPGEgaHJlZj0iI05ULU5vdGF0aW9uRGVjbCI+Tm90YXRpb25EZWNsPC9hPg0KK3wgPGEgaHJlZj0iI05ULVBJIj5QSTwvYT4gfCA8YSBocmVmPSIjTlQtQ29tbWVudCI+Q29tbWVudDwvYT4gPC9jb2RlPjwvdGQ+DQorPHRkPjxhIGhyZWY9IiN2Yy1QRWluTWFya3VwRGVjbCI+W1ZDOiBQcm9wZXIgRGVjbGFyYXRpb24vUEUgTmVzdGluZ108L2E+PC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PGEgaHJlZj0iI3dmYy1QRWluSW50ZXJuYWxTdWJzZXQiPltXRkM6IFBFcyBpbiBJbnRlcm5hbCBTdWJzZXRdPC9hPjwvdGQ+DQorPC90cj4NCis8L3Rib2R5PjwvdGFibGU+IDxwPk5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSB0byBjb25zdHJ1Y3QgYSB3ZWxsLWZvcm1lZCBkb2N1bWVudA0KK2NvbnRhaW5pbmcgYSA8YSBocmVmPSIjTlQtZG9jdHlwZWRlY2wiPmRvY3R5cGVkZWNsPC9hPiB0aGF0IG5laXRoZXIgcG9pbnRzDQordG8gYW4gZXh0ZXJuYWwgc3Vic2V0IG5vciBjb250YWlucyBhbiBpbnRlcm5hbCBzdWJzZXQuPC9wPiA8cD5UaGUgbWFya3VwIGRlY2xhcmF0aW9ucw0KK21heSBiZSBtYWRlIHVwIGluIHdob2xlIG9yIGluIHBhcnQgb2YgdGhlIDxhIHRpdGxlPSJSZXBsYWNlbWVudCBUZXh0IiBocmVmPSIjZHQtcmVwbHRleHQiPnJlcGxhY2VtZW50DQordGV4dDwvYT4gb2YgPGEgdGl0bGU9IlBhcmFtZXRlciBlbnRpdHkiIGhyZWY9IiNkdC1QRSI+cGFyYW1ldGVyIGVudGl0aWVzPC9hPi4NCitUaGUgcHJvZHVjdGlvbnMgbGF0ZXIgaW4gdGhpcyBzcGVjaWZpY2F0aW9uIGZvciBpbmRpdmlkdWFsIG5vbnRlcm1pbmFscyAoPGENCitocmVmPSIjTlQtZWxlbWVudGRlY2wiPmVsZW1lbnRkZWNsPC9hPiwgPGEgaHJlZj0iI05ULUF0dGxpc3REZWNsIj5BdHRsaXN0RGVjbDwvYT4sDQorYW5kIHNvIG9uKSBkZXNjcmliZSB0aGUgZGVjbGFyYXRpb25zIDxlbT5hZnRlcjwvZW0+IGFsbCB0aGUgcGFyYW1ldGVyIGVudGl0aWVzDQoraGF2ZSBiZWVuIDxhIHRpdGxlPSJJbmNsdWRlIiBocmVmPSIjZHQtaW5jbHVkZSI+aW5jbHVkZWQ8L2E+LjwvcD4gPHA+UGFyYW1ldGVyDQorZW50aXR5IHJlZmVyZW5jZXMgYXJlIHJlY29nbml6ZWQgYW55d2hlcmUgaW4gdGhlIERURCAoaW50ZXJuYWwgYW5kIGV4dGVybmFsDQorc3Vic2V0cyBhbmQgZXh0ZXJuYWwgcGFyYW1ldGVyIGVudGl0aWVzKSwgZXhjZXB0IGluIGxpdGVyYWxzLCBwcm9jZXNzaW5nIGluc3RydWN0aW9ucywNCitjb21tZW50cywgYW5kIHRoZSBjb250ZW50cyBvZiBpZ25vcmVkIGNvbmRpdGlvbmFsIHNlY3Rpb25zIChzZWUgPGEgaHJlZj0iI3NlYy1jb25kaXRpb24tc2VjdCI+PGI+My40DQorQ29uZGl0aW9uYWwgU2VjdGlvbnM8L2I+PC9hPikuIFRoZXkgYXJlIGFsc28gcmVjb2duaXplZCBpbiBlbnRpdHkgdmFsdWUgbGl0ZXJhbHMuDQorVGhlIHVzZSBvZiBwYXJhbWV0ZXIgZW50aXRpZXMgaW4gdGhlIGludGVybmFsIHN1YnNldCBpcyByZXN0cmljdGVkIGFzIGRlc2NyaWJlZA0KK2JlbG93LjwvcD4gPGRpdiBjbGFzcz0iY29uc3RyYWludCI+PHAgY2xhc3M9InByZWZpeCI+PGEgbmFtZT0idmMtcm9vdHR5cGUiPjwvYT48Yj5WYWxpZGl0eQ0KK2NvbnN0cmFpbnQ6IFJvb3QgRWxlbWVudCBUeXBlPC9iPjwvcD48cD5UaGUgPGEgaHJlZj0iI05ULU5hbWUiPk5hbWU8L2E+IGluDQordGhlIGRvY3VtZW50IHR5cGUgZGVjbGFyYXRpb24gbXVzdCBtYXRjaCB0aGUgZWxlbWVudCB0eXBlIG9mIHRoZSA8YSB0aXRsZT0iUm9vdCBFbGVtZW50Ig0KK2hyZWY9IiNkdC1yb290Ij5yb290IGVsZW1lbnQ8L2E+LjwvcD4gPC9kaXY+IDxkaXYgY2xhc3M9ImNvbnN0cmFpbnQiPjxwIGNsYXNzPSJwcmVmaXgiPjxhDQorbmFtZT0idmMtUEVpbk1hcmt1cERlY2wiPjwvYT48Yj5WYWxpZGl0eSBjb25zdHJhaW50OiBQcm9wZXIgRGVjbGFyYXRpb24vUEUNCitOZXN0aW5nPC9iPjwvcD4gPHA+UGFyYW1ldGVyLWVudGl0eSA8YSB0aXRsZT0iUmVwbGFjZW1lbnQgVGV4dCIgaHJlZj0iI2R0LXJlcGx0ZXh0Ij5yZXBsYWNlbWVudA0KK3RleHQ8L2E+IG11c3QgYmUgcHJvcGVybHkgbmVzdGVkIHdpdGggbWFya3VwIGRlY2xhcmF0aW9ucy4gVGhhdCBpcyB0byBzYXksDQoraWYgZWl0aGVyIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb3IgdGhlIGxhc3QgY2hhcmFjdGVyIG9mIGEgbWFya3VwIGRlY2xhcmF0aW9uDQorKDxhIGhyZWY9IiNOVC1tYXJrdXBkZWNsIj5tYXJrdXBkZWNsPC9hPiBhYm92ZSkgaXMgY29udGFpbmVkIGluIHRoZSByZXBsYWNlbWVudA0KK3RleHQgZm9yIGEgPGEgdGl0bGU9IlBhcmFtZXRlci1lbnRpdHkgcmVmZXJlbmNlIiBocmVmPSIjZHQtUEVSZWYiPnBhcmFtZXRlci1lbnRpdHkNCityZWZlcmVuY2U8L2E+LCBib3RoIG11c3QgYmUgY29udGFpbmVkIGluIHRoZSBzYW1lIHJlcGxhY2VtZW50IHRleHQuPC9wPiA8L2Rpdj4gPGRpdg0KK2NsYXNzPSJjb25zdHJhaW50Ij48cCBjbGFzcz0icHJlZml4Ij48YSBuYW1lPSJ3ZmMtUEVpbkludGVybmFsU3Vic2V0Ij48L2E+PGI+V2VsbC1mb3JtZWRuZXNzDQorY29uc3RyYWludDogUEVzIGluIEludGVybmFsIFN1YnNldDwvYj48L3A+PHA+SW4gdGhlIGludGVybmFsIERURCBzdWJzZXQsIDxhDQordGl0bGU9IlBhcmFtZXRlci1lbnRpdHkgcmVmZXJlbmNlIiBocmVmPSIjZHQtUEVSZWYiPnBhcmFtZXRlci1lbnRpdHkgcmVmZXJlbmNlczwvYT4NCitjYW4gb2NjdXIgb25seSB3aGVyZSBtYXJrdXAgZGVjbGFyYXRpb25zIGNhbiBvY2N1ciwgbm90IHdpdGhpbiBtYXJrdXAgZGVjbGFyYXRpb25zLg0KKyhUaGlzIGRvZXMgbm90IGFwcGx5IHRvIHJlZmVyZW5jZXMgdGhhdCBvY2N1ciBpbiBleHRlcm5hbCBwYXJhbWV0ZXIgZW50aXRpZXMNCitvciB0byB0aGUgZXh0ZXJuYWwgc3Vic2V0Lik8L3A+IDwvZGl2PiA8ZGl2IGNsYXNzPSJjb25zdHJhaW50Ij48cCBjbGFzcz0icHJlZml4Ij48YQ0KK25hbWU9IkV4dFN1YnNldCI+PC9hPjxiPldlbGwtZm9ybWVkbmVzcyBjb25zdHJhaW50OiBFeHRlcm5hbCBTdWJzZXQ8L2I+PC9wPjxwPlRoZQ0KK2V4dGVybmFsIHN1YnNldCwgaWYgYW55LCBtdXN0IG1hdGNoIHRoZSBwcm9kdWN0aW9uIGZvciA8YSBocmVmPSIjTlQtZXh0U3Vic2V0Ij5leHRTdWJzZXQ8L2E+LjwvcD4gPC9kaXY+IDxkaXYNCitjbGFzcz0iY29uc3RyYWludCI+PHAgY2xhc3M9InByZWZpeCI+PGEgbmFtZT0iUEUtYmV0d2Vlbi1EZWNscyI+PC9hPjxiPldlbGwtZm9ybWVkbmVzcw0KK2NvbnN0cmFpbnQ6IFBFIEJldHdlZW4gRGVjbGFyYXRpb25zPC9iPjwvcD48cD5UaGUgcmVwbGFjZW1lbnQgdGV4dCBvZiBhIHBhcmFtZXRlcg0KK2VudGl0eSByZWZlcmVuY2UgaW4gYSA8YSBocmVmPSIjTlQtRGVjbFNlcCI+RGVjbFNlcDwvYT4gbXVzdCBtYXRjaCB0aGUgcHJvZHVjdGlvbiA8YQ0KK2hyZWY9IiNOVC1leHRTdWJzZXREZWNsIj5leHRTdWJzZXREZWNsPC9hPi48L3A+IDwvZGl2PiA8cD5MaWtlIHRoZSBpbnRlcm5hbA0KK3N1YnNldCwgdGhlIGV4dGVybmFsIHN1YnNldCBhbmQgYW55IGV4dGVybmFsIHBhcmFtZXRlciBlbnRpdGllcyByZWZlcmVuY2VkDQoraW4gYSA8YSBocmVmPSIjTlQtRGVjbFNlcCI+RGVjbFNlcDwvYT4gbXVzdCBjb25zaXN0IG9mIGEgc2VyaWVzIG9mIGNvbXBsZXRlDQorbWFya3VwIGRlY2xhcmF0aW9ucyBvZiB0aGUgdHlwZXMgYWxsb3dlZCBieSB0aGUgbm9uLXRlcm1pbmFsIHN5bWJvbCA8YSBocmVmPSIjTlQtbWFya3VwZGVjbCI+bWFya3VwZGVjbDwvYT4sDQoraW50ZXJzcGVyc2VkIHdpdGggd2hpdGUgc3BhY2Ugb3IgPGEgdGl0bGU9IlBhcmFtZXRlci1lbnRpdHkgcmVmZXJlbmNlIiBocmVmPSIjZHQtUEVSZWYiPnBhcmFtZXRlci1lbnRpdHkNCityZWZlcmVuY2VzPC9hPi4gSG93ZXZlciwgcG9ydGlvbnMgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSBleHRlcm5hbCBzdWJzZXQgb3INCitvZiB0aGVzZSAgZXh0ZXJuYWwgcGFyYW1ldGVyIGVudGl0aWVzIG1heSBjb25kaXRpb25hbGx5IGJlIGlnbm9yZWQgYnkgdXNpbmcNCit0aGUgPGEgdGl0bGU9ImNvbmRpdGlvbmFsIHNlY3Rpb24iIGhyZWY9IiNkdC1jb25kLXNlY3Rpb24iPmNvbmRpdGlvbmFsIHNlY3Rpb248L2E+DQorY29uc3RydWN0OyB0aGlzIGlzIG5vdCBhbGxvd2VkIGluIHRoZSBpbnRlcm5hbCBzdWJzZXQuPC9wPiA8aDU+RXh0ZXJuYWwgU3Vic2V0PC9oNT48dGFibGUNCitjbGFzcz0ic2NyYXAiPjx0Ym9keT4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULWV4dFN1YnNldCI+PC9hPlszMF0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5leHRTdWJzZXQ8L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+PGEgaHJlZj0iI05ULVRleHREZWNsIj5UZXh0RGVjbDwvYT4/IDxhIGhyZWY9IiNOVC1leHRTdWJzZXREZWNsIj5leHRTdWJzZXREZWNsPC9hPjwvY29kZT48L3RkPg0KKzwvdHI+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1leHRTdWJzZXREZWNsIj48L2E+WzMxXSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPmV4dFN1YnNldERlY2w8L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+KCA8YSBocmVmPSIjTlQtbWFya3VwZGVjbCI+bWFya3VwZGVjbDwvYT4gfCA8YSBocmVmPSIjTlQtY29uZGl0aW9uYWxTZWN0Ij5jb25kaXRpb25hbFNlY3Q8L2E+DQorfCA8YSBocmVmPSIjTlQtRGVjbFNlcCI+RGVjbFNlcDwvYT4pKjwvY29kZT48L3RkPg0KKzx0ZD48aT4vKiAgKi88L2k+PC90ZD4NCis8L3RyPg0KKzwvdGJvZHk+PC90YWJsZT4gPHA+VGhlIGV4dGVybmFsIHN1YnNldCBhbmQgZXh0ZXJuYWwgcGFyYW1ldGVyIGVudGl0aWVzIGFsc28NCitkaWZmZXIgZnJvbSB0aGUgaW50ZXJuYWwgc3Vic2V0IGluIHRoYXQgaW4gdGhlbSwgPGEgdGl0bGU9IlBhcmFtZXRlci1lbnRpdHkgcmVmZXJlbmNlIg0KK2hyZWY9IiNkdC1QRVJlZiI+cGFyYW1ldGVyLWVudGl0eSByZWZlcmVuY2VzPC9hPiBhcmUgcGVybWl0dGVkIDxlbT53aXRoaW48L2VtPg0KK21hcmt1cCBkZWNsYXJhdGlvbnMsIG5vdCBvbmx5IDxlbT5iZXR3ZWVuPC9lbT4gbWFya3VwIGRlY2xhcmF0aW9ucy48L3A+IDxwPkFuDQorZXhhbXBsZSBvZiBhbiBYTUwgZG9jdW1lbnQgd2l0aCBhIGRvY3VtZW50IHR5cGUgZGVjbGFyYXRpb246PC9wPiA8dGFibGUgY2xhc3M9ImVnIg0KK3dpZHRoPSIxMDAlIiBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSI1IiBiZ2NvbG9yPSIjOTlmZmZmIj4NCis8dHI+DQorPHRkPjxwcmU+Jmx0Oz94bWwgdmVyc2lvbj0iMS4wIj8+ICZsdDshRE9DVFlQRSBncmVldGluZyBTWVNURU0gImhlbGxvLmR0ZCI+ICZsdDtncmVldGluZz5IZWxsbywgd29ybGQhJmx0Oy9ncmVldGluZz4gPC9wcmU+PC90ZD4NCis8L3RyPg0KKzwvdGFibGU+IDxwPlRoZSA8YSB0aXRsZT0iU3lzdGVtIElkZW50aWZpZXIiIGhyZWY9IiNkdC1zeXNpZCI+c3lzdGVtIGlkZW50aWZpZXI8L2E+DQorIjxjb2RlPmhlbGxvLmR0ZDwvY29kZT4iIGdpdmVzIHRoZSBhZGRyZXNzIChhIFVSSSByZWZlcmVuY2UpIG9mIGEgRFREIGZvcg0KK3RoZSBkb2N1bWVudC48L3A+IDxwPlRoZSBkZWNsYXJhdGlvbnMgY2FuIGFsc28gYmUgZ2l2ZW4gbG9jYWxseSwgYXMgaW4gdGhpcw0KK2V4YW1wbGU6PC9wPiA8dGFibGUgY2xhc3M9ImVnIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIxIiBjZWxscGFkZGluZz0iNSIgYmdjb2xvcj0iIzk5ZmZmZiI+DQorPHRyPg0KKzx0ZD48cHJlPiZsdDs/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKyZsdDshRE9DVFlQRSBncmVldGluZyBbDQorICAmbHQ7IUVMRU1FTlQgZ3JlZXRpbmcgKCNQQ0RBVEEpPg0KK10+DQorJmx0O2dyZWV0aW5nPkhlbGxvLCB3b3JsZCEmbHQ7L2dyZWV0aW5nPjwvcHJlPjwvdGQ+DQorPC90cj4NCis8L3RhYmxlPiA8cD5JZiBib3RoIHRoZSBleHRlcm5hbCBhbmQgaW50ZXJuYWwgc3Vic2V0cyBhcmUgdXNlZCwgdGhlIGludGVybmFsDQorc3Vic2V0IGlzIGNvbnNpZGVyZWQgdG8gb2NjdXIgYmVmb3JlIHRoZSBleHRlcm5hbCBzdWJzZXQuICBUaGlzIGhhcyB0aGUgZWZmZWN0DQordGhhdCBlbnRpdHkgYW5kIGF0dHJpYnV0ZS1saXN0IGRlY2xhcmF0aW9ucyBpbiB0aGUgaW50ZXJuYWwgc3Vic2V0IHRha2UgcHJlY2VkZW5jZQ0KK292ZXIgdGhvc2UgaW4gdGhlIGV4dGVybmFsIHN1YnNldC48L3A+IDwvZGl2PiA8ZGl2IGNsYXNzPSJkaXYyIj4gPGgzPjxhIG5hbWU9InNlYy1ybWQiPjwvYT4yLjkNCitTdGFuZGFsb25lIERvY3VtZW50IERlY2xhcmF0aW9uPC9oMz4gPHA+TWFya3VwIGRlY2xhcmF0aW9ucyBjYW4gYWZmZWN0IHRoZQ0KK2NvbnRlbnQgb2YgdGhlIGRvY3VtZW50LCBhcyBwYXNzZWQgZnJvbSBhbiA8YSB0aXRsZT0iWE1MIFByb2Nlc3NvciIgaHJlZj0iI2R0LXhtbC1wcm9jIj5YTUwNCitwcm9jZXNzb3I8L2E+IHRvIGFuIGFwcGxpY2F0aW9uOyBleGFtcGxlcyBhcmUgYXR0cmlidXRlIGRlZmF1bHRzIGFuZCBlbnRpdHkNCitkZWNsYXJhdGlvbnMuIFRoZSBzdGFuZGFsb25lIGRvY3VtZW50IGRlY2xhcmF0aW9uLCB3aGljaCBtYXkgYXBwZWFyIGFzIGEgY29tcG9uZW50DQorb2YgdGhlIFhNTCBkZWNsYXJhdGlvbiwgc2lnbmFscyB3aGV0aGVyIG9yIG5vdCB0aGVyZSBhcmUgc3VjaCBkZWNsYXJhdGlvbnMNCit3aGljaCBhcHBlYXIgZXh0ZXJuYWwgdG8gdGhlIDxhIHRpdGxlPSJEb2N1bWVudCBFbnRpdHkiIGhyZWY9IiNkdC1kb2NlbnQiPmRvY3VtZW50DQorZW50aXR5PC9hPiBvciBpbiBwYXJhbWV0ZXIgZW50aXRpZXMuIFs8YSB0aXRsZT0iRXh0ZXJuYWwgTWFya3VwIERlY2xhcmF0aW9uIg0KK25hbWU9ImR0LWV4dG1rcGRlY2wiPkRlZmluaXRpb248L2E+OiBBbiA8Yj5leHRlcm5hbCBtYXJrdXAgZGVjbGFyYXRpb248L2I+DQoraXMgZGVmaW5lZCBhcyBhIG1hcmt1cCBkZWNsYXJhdGlvbiBvY2N1cnJpbmcgaW4gdGhlIGV4dGVybmFsIHN1YnNldCBvciBpbg0KK2EgcGFyYW1ldGVyIGVudGl0eSAoZXh0ZXJuYWwgb3IgaW50ZXJuYWwsIHRoZSBsYXR0ZXIgYmVpbmcgaW5jbHVkZWQgYmVjYXVzZQ0KK25vbi12YWxpZGF0aW5nIHByb2Nlc3NvcnMgYXJlIG5vdCByZXF1aXJlZCB0byByZWFkIHRoZW0pLl08L3A+IDxoNT5TdGFuZGFsb25lDQorRG9jdW1lbnQgRGVjbGFyYXRpb248L2g1Pjx0YWJsZSBjbGFzcz0ic2NyYXAiPjx0Ym9keT4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULVNERGVjbCI+PC9hPlszMl0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5TRERlY2w8L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+IDxhIGhyZWY9IiNOVC1TIj5TPC9hPiAnc3RhbmRhbG9uZScgPGEgaHJlZj0iI05ULUVxIj5FcTwvYT4gKCgiJyINCisoJ3llcycgfCAnbm8nKSAiJyIpIHwgKCciJyAoJ3llcycgfCAnbm8nKSAnIicpKSA8L2NvZGU+PC90ZD4NCis8dGQ+PGEgaHJlZj0iI3ZjLWNoZWNrLXJtZCI+W1ZDOiBTdGFuZGFsb25lIERvY3VtZW50IERlY2xhcmF0aW9uXTwvYT48L3RkPg0KKzwvdHI+DQorPC90Ym9keT48L3RhYmxlPiA8cD5JbiBhIHN0YW5kYWxvbmUgZG9jdW1lbnQgZGVjbGFyYXRpb24sIHRoZSB2YWx1ZSAieWVzIg0KK2luZGljYXRlcyB0aGF0IHRoZXJlIGFyZSBubyA8YSB0aXRsZT0iRXh0ZXJuYWwgTWFya3VwIERlY2xhcmF0aW9uIiBocmVmPSIjZHQtZXh0bWtwZGVjbCI+ZXh0ZXJuYWwNCittYXJrdXAgZGVjbGFyYXRpb25zPC9hPiB3aGljaCBhZmZlY3QgdGhlIGluZm9ybWF0aW9uIHBhc3NlZCBmcm9tIHRoZSBYTUwgcHJvY2Vzc29yDQordG8gdGhlIGFwcGxpY2F0aW9uLiBUaGUgdmFsdWUgIm5vIiBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBhcmUgb3IgbWF5IGJlIHN1Y2gNCitleHRlcm5hbCBtYXJrdXAgZGVjbGFyYXRpb25zLiBOb3RlIHRoYXQgdGhlIHN0YW5kYWxvbmUgZG9jdW1lbnQgZGVjbGFyYXRpb24NCitvbmx5IGRlbm90ZXMgdGhlIHByZXNlbmNlIG9mIGV4dGVybmFsIDxlbT5kZWNsYXJhdGlvbnM8L2VtPjsgdGhlIHByZXNlbmNlLA0KK2luIGEgZG9jdW1lbnQsIG9mIHJlZmVyZW5jZXMgdG8gZXh0ZXJuYWwgPGVtPmVudGl0aWVzPC9lbT4sIHdoZW4gdGhvc2UgZW50aXRpZXMNCithcmUgaW50ZXJuYWxseSBkZWNsYXJlZCwgZG9lcyBub3QgY2hhbmdlIGl0cyBzdGFuZGFsb25lIHN0YXR1cy48L3A+IDxwPklmDQordGhlcmUgYXJlIG5vIGV4dGVybmFsIG1hcmt1cCBkZWNsYXJhdGlvbnMsIHRoZSBzdGFuZGFsb25lIGRvY3VtZW50IGRlY2xhcmF0aW9uDQoraGFzIG5vIG1lYW5pbmcuIElmIHRoZXJlIGFyZSBleHRlcm5hbCBtYXJrdXAgZGVjbGFyYXRpb25zIGJ1dCB0aGVyZSBpcyBubw0KK3N0YW5kYWxvbmUgZG9jdW1lbnQgZGVjbGFyYXRpb24sIHRoZSB2YWx1ZSAibm8iIGlzIGFzc3VtZWQuPC9wPiA8cD5BbnkgWE1MDQorZG9jdW1lbnQgZm9yIHdoaWNoIDxjb2RlPnN0YW5kYWxvbmU9Im5vIjwvY29kZT4gaG9sZHMgY2FuIGJlIGNvbnZlcnRlZCBhbGdvcml0aG1pY2FsbHkNCit0byBhIHN0YW5kYWxvbmUgZG9jdW1lbnQsIHdoaWNoIG1heSBiZSBkZXNpcmFibGUgZm9yIHNvbWUgbmV0d29yayBkZWxpdmVyeQ0KK2FwcGxpY2F0aW9ucy48L3A+IDxkaXYgY2xhc3M9ImNvbnN0cmFpbnQiPjxwIGNsYXNzPSJwcmVmaXgiPjxhIG5hbWU9InZjLWNoZWNrLXJtZCI+PC9hPjxiPlZhbGlkaXR5DQorY29uc3RyYWludDogU3RhbmRhbG9uZSBEb2N1bWVudCBEZWNsYXJhdGlvbjwvYj48L3A+PHA+VGhlIHN0YW5kYWxvbmUgZG9jdW1lbnQNCitkZWNsYXJhdGlvbiBtdXN0IGhhdmUgdGhlIHZhbHVlICJubyIgaWYgYW55IGV4dGVybmFsIG1hcmt1cCBkZWNsYXJhdGlvbnMgY29udGFpbg0KK2RlY2xhcmF0aW9ucyBvZjo8L3A+IDx1bD4NCis8bGk+PHA+YXR0cmlidXRlcyB3aXRoIDxhIHRpdGxlPSJBdHRyaWJ1dGUgRGVmYXVsdCIgaHJlZj0iI2R0LWRlZmF1bHQiPmRlZmF1bHQ8L2E+DQordmFsdWVzLCBpZiBlbGVtZW50cyB0byB3aGljaCB0aGVzZSBhdHRyaWJ1dGVzIGFwcGx5IGFwcGVhciBpbiB0aGUgZG9jdW1lbnQNCit3aXRob3V0IHNwZWNpZmljYXRpb25zIG9mIHZhbHVlcyBmb3IgdGhlc2UgYXR0cmlidXRlcywgb3I8L3A+PC9saT4NCis8bGk+PHA+ZW50aXRpZXMgKG90aGVyIHRoYW4gPGNvZGU+YW1wPC9jb2RlPiwgPGNvZGU+bHQ8L2NvZGU+LCA8Y29kZT5ndDwvY29kZT4sIDxjb2RlPmFwb3M8L2NvZGU+LCA8Y29kZT5xdW90PC9jb2RlPiksDQoraWYgPGEgdGl0bGU9IkVudGl0eSBSZWZlcmVuY2UiIGhyZWY9IiNkdC1lbnRyZWYiPnJlZmVyZW5jZXM8L2E+IHRvIHRob3NlIGVudGl0aWVzDQorYXBwZWFyIGluIHRoZSBkb2N1bWVudCwgb3I8L3A+PC9saT4NCis8bGk+PHA+YXR0cmlidXRlcyB3aXRoIHZhbHVlcyBzdWJqZWN0IHRvIDxhIGhyZWY9IiNBVk5vcm1hbGl6ZSI+PGNpdGU+bm9ybWFsaXphdGlvbjwvY2l0ZT48L2E+LA0KK3doZXJlIHRoZSBhdHRyaWJ1dGUgYXBwZWFycyBpbiB0aGUgZG9jdW1lbnQgd2l0aCBhIHZhbHVlIHdoaWNoIHdpbGwgY2hhbmdlDQorYXMgYSByZXN1bHQgb2Ygbm9ybWFsaXphdGlvbiwgb3I8L3A+PC9saT4NCis8bGk+PHA+ZWxlbWVudCB0eXBlcyB3aXRoIDxhIHRpdGxlPSJFbGVtZW50IGNvbnRlbnQiIGhyZWY9IiNkdC1lbGVtY29udGVudCI+ZWxlbWVudA0KK2NvbnRlbnQ8L2E+LCBpZiB3aGl0ZSBzcGFjZSBvY2N1cnMgZGlyZWN0bHkgd2l0aGluIGFueSBpbnN0YW5jZSBvZiB0aG9zZSB0eXBlcy48L3A+PC9saT4NCis8L3VsPiA8L2Rpdj4gPHA+QW4gZXhhbXBsZSBYTUwgZGVjbGFyYXRpb24gd2l0aCBhIHN0YW5kYWxvbmUgZG9jdW1lbnQgZGVjbGFyYXRpb246PC9wPiA8dGFibGUNCitjbGFzcz0iZWciIHdpZHRoPSIxMDAlIiBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSI1IiBiZ2NvbG9yPSIjOTlmZmZmIj4NCis8dHI+DQorPHRkPjxwcmU+Jmx0Oz94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSd5ZXMnPz48L3ByZT48L3RkPg0KKzwvdHI+DQorPC90YWJsZT4gPC9kaXY+IDxkaXYgY2xhc3M9ImRpdjIiPiA8aDM+PGEgbmFtZT0ic2VjLXdoaXRlLXNwYWNlIj48L2E+Mi4xMA0KK1doaXRlIFNwYWNlIEhhbmRsaW5nPC9oMz4gPHA+SW4gZWRpdGluZyBYTUwgZG9jdW1lbnRzLCBpdCBpcyBvZnRlbiBjb252ZW5pZW50DQordG8gdXNlICJ3aGl0ZSBzcGFjZSIgKHNwYWNlcywgdGFicywgYW5kIGJsYW5rIGxpbmVzKSB0byBzZXQgYXBhcnQgdGhlIG1hcmt1cA0KK2ZvciBncmVhdGVyIHJlYWRhYmlsaXR5LiBTdWNoIHdoaXRlIHNwYWNlIGlzIHR5cGljYWxseSBub3QgaW50ZW5kZWQgZm9yIGluY2x1c2lvbg0KK2luIHRoZSBkZWxpdmVyZWQgdmVyc2lvbiBvZiB0aGUgZG9jdW1lbnQuIE9uIHRoZSBvdGhlciBoYW5kLCAic2lnbmlmaWNhbnQiDQord2hpdGUgc3BhY2UgdGhhdCBzaG91bGQgYmUgcHJlc2VydmVkIGluIHRoZSBkZWxpdmVyZWQgdmVyc2lvbiBpcyBjb21tb24sIGZvcg0KK2V4YW1wbGUgaW4gcG9ldHJ5IGFuZCBzb3VyY2UgY29kZS48L3A+IDxwPkFuIDxhIHRpdGxlPSJYTUwgUHJvY2Vzc29yIiBocmVmPSIjZHQteG1sLXByb2MiPlhNTA0KK3Byb2Nlc3NvcjwvYT4gbXVzdCBhbHdheXMgcGFzcyBhbGwgY2hhcmFjdGVycyBpbiBhIGRvY3VtZW50IHRoYXQgYXJlIG5vdCBtYXJrdXANCit0aHJvdWdoIHRvIHRoZSBhcHBsaWNhdGlvbi4gQSA8YSB0aXRsZT0iVmFsaWRhdGluZyBQcm9jZXNzb3IiIGhyZWY9IiNkdC12YWxpZGF0aW5nIj4NCit2YWxpZGF0aW5nIFhNTCBwcm9jZXNzb3I8L2E+IG11c3QgYWxzbyBpbmZvcm0gdGhlIGFwcGxpY2F0aW9uIHdoaWNoIG9mIHRoZXNlDQorY2hhcmFjdGVycyBjb25zdGl0dXRlIHdoaXRlIHNwYWNlIGFwcGVhcmluZyBpbiA8YSB0aXRsZT0iRWxlbWVudCBjb250ZW50Ig0KK2hyZWY9IiNkdC1lbGVtY29udGVudCI+ZWxlbWVudCBjb250ZW50PC9hPi48L3A+IDxwPkEgc3BlY2lhbCA8YSB0aXRsZT0iQXR0cmlidXRlIg0KK2hyZWY9IiNkdC1hdHRyIj5hdHRyaWJ1dGU8L2E+IG5hbWVkIDxjb2RlPnhtbDpzcGFjZTwvY29kZT4gbWF5IGJlIGF0dGFjaGVkDQordG8gYW4gZWxlbWVudCB0byBzaWduYWwgYW4gaW50ZW50aW9uIHRoYXQgaW4gdGhhdCBlbGVtZW50LCB3aGl0ZSBzcGFjZSBzaG91bGQNCitiZSBwcmVzZXJ2ZWQgYnkgYXBwbGljYXRpb25zLiBJbiB2YWxpZCBkb2N1bWVudHMsIHRoaXMgYXR0cmlidXRlLCBsaWtlIGFueQ0KK290aGVyLCBtdXN0IGJlIDxhIHRpdGxlPSJBdHRyaWJ1dGUtTGlzdCBEZWNsYXJhdGlvbiIgaHJlZj0iI2R0LWF0dGRlY2wiPmRlY2xhcmVkPC9hPg0KK2lmIGl0IGlzIHVzZWQuIFdoZW4gZGVjbGFyZWQsIGl0IG11c3QgYmUgZ2l2ZW4gYXMgYW4gPGEgdGl0bGU9IkVudW1lcmF0ZWQgQXR0cmlidXRlIFZhbHVlcyINCitocmVmPSIjZHQtZW51bWVyYXRlZCI+ZW51bWVyYXRlZCB0eXBlPC9hPiB3aG9zZSB2YWx1ZXMgYXJlIG9uZSBvciBib3RoIG9mDQorImRlZmF1bHQiIGFuZCAicHJlc2VydmUiLiBGb3IgZXhhbXBsZTo8L3A+IDx0YWJsZSBjbGFzcz0iZWciIHdpZHRoPSIxMDAlIg0KK2JvcmRlcj0iMSIgY2VsbHBhZGRpbmc9IjUiIGJnY29sb3I9IiM5OWZmZmYiPg0KKzx0cj4NCis8dGQ+PHByZT4mbHQ7IUFUVExJU1QgcG9lbSAgeG1sOnNwYWNlIChkZWZhdWx0fHByZXNlcnZlKSAncHJlc2VydmUnPg0KKw0KKyZsdDshLS0gLS0+DQorJmx0OyFBVFRMSVNUIHByZSB4bWw6c3BhY2UgKHByZXNlcnZlKSAjRklYRUQgJ3ByZXNlcnZlJz48L3ByZT48L3RkPg0KKzwvdHI+DQorPC90YWJsZT4gPHA+VGhlIHZhbHVlICJkZWZhdWx0IiBzaWduYWxzIHRoYXQgYXBwbGljYXRpb25zJyBkZWZhdWx0IHdoaXRlLXNwYWNlDQorcHJvY2Vzc2luZyBtb2RlcyBhcmUgYWNjZXB0YWJsZSBmb3IgdGhpcyBlbGVtZW50OyB0aGUgdmFsdWUgInByZXNlcnZlIiBpbmRpY2F0ZXMNCit0aGUgaW50ZW50IHRoYXQgYXBwbGljYXRpb25zIHByZXNlcnZlIGFsbCB0aGUgd2hpdGUgc3BhY2UuIFRoaXMgZGVjbGFyZWQgaW50ZW50DQoraXMgY29uc2lkZXJlZCB0byBhcHBseSB0byBhbGwgZWxlbWVudHMgd2l0aGluIHRoZSBjb250ZW50IG9mIHRoZSBlbGVtZW50IHdoZXJlDQoraXQgaXMgc3BlY2lmaWVkLCB1bmxlc3Mgb3ZlcnJpZGVuIHdpdGggYW5vdGhlciBpbnN0YW5jZSBvZiB0aGUgPGNvZGU+eG1sOnNwYWNlPC9jb2RlPg0KK2F0dHJpYnV0ZS48L3A+IDxwPlRoZSA8YSB0aXRsZT0iUm9vdCBFbGVtZW50IiBocmVmPSIjZHQtcm9vdCI+cm9vdCBlbGVtZW50PC9hPg0KK29mIGFueSBkb2N1bWVudCBpcyBjb25zaWRlcmVkIHRvIGhhdmUgc2lnbmFsZWQgbm8gaW50ZW50aW9ucyBhcyByZWdhcmRzIGFwcGxpY2F0aW9uDQorc3BhY2UgaGFuZGxpbmcsIHVubGVzcyBpdCBwcm92aWRlcyBhIHZhbHVlIGZvciB0aGlzIGF0dHJpYnV0ZSBvciB0aGUgYXR0cmlidXRlDQoraXMgZGVjbGFyZWQgd2l0aCBhIGRlZmF1bHQgdmFsdWUuPC9wPiA8L2Rpdj4gPGRpdiBjbGFzcz0iZGl2MiI+IDxoMz48YSBuYW1lPSJzZWMtbGluZS1lbmRzIj48L2E+Mi4xMQ0KK0VuZC1vZi1MaW5lIEhhbmRsaW5nPC9oMz4gPHA+WE1MIDxhIHRpdGxlPSJUZXh0IEVudGl0eSIgaHJlZj0iI2R0LXBhcnNlZGVudCI+cGFyc2VkDQorZW50aXRpZXM8L2E+IGFyZSBvZnRlbiBzdG9yZWQgaW4gY29tcHV0ZXIgZmlsZXMgd2hpY2gsIGZvciBlZGl0aW5nIGNvbnZlbmllbmNlLA0KK2FyZSBvcmdhbml6ZWQgaW50byBsaW5lcy4gVGhlc2UgbGluZXMgYXJlIHR5cGljYWxseSBzZXBhcmF0ZWQgYnkgc29tZSBjb21iaW5hdGlvbg0KK29mIHRoZSBjaGFyYWN0ZXJzIGNhcnJpYWdlLXJldHVybiAoI3hEKSBhbmQgbGluZS1mZWVkICgjeEEpLjwvcD4gIDxwPlRvIHNpbXBsaWZ5DQordGhlIHRhc2tzIG9mIDxhIHRpdGxlPSJBcHBsaWNhdGlvbiIgaHJlZj0iI2R0LWFwcCI+YXBwbGljYXRpb25zPC9hPiwgdGhlIGNoYXJhY3RlcnMNCitwYXNzZWQgdG8gYW4gYXBwbGljYXRpb24gYnkgdGhlIDxhIHRpdGxlPSJYTUwgUHJvY2Vzc29yIiBocmVmPSIjZHQteG1sLXByb2MiPlhNTA0KK3Byb2Nlc3NvcjwvYT4gbXVzdCBiZSBhcyBpZiB0aGUgWE1MIHByb2Nlc3NvciBub3JtYWxpemVkIGFsbCBsaW5lIGJyZWFrcyBpbg0KK2V4dGVybmFsIHBhcnNlZCBlbnRpdGllcyAoaW5jbHVkaW5nIHRoZSBkb2N1bWVudCBlbnRpdHkpIG9uIGlucHV0LCBiZWZvcmUNCitwYXJzaW5nLCBieSB0cmFuc2xhdGluZyBib3RoIHRoZSB0d28tY2hhcmFjdGVyIHNlcXVlbmNlICN4RCAjeEEgYW5kIGFueSAjeEQNCit0aGF0IGlzIG5vdCBmb2xsb3dlZCBieSAjeEEgdG8gYSBzaW5nbGUgI3hBIGNoYXJhY3Rlci48L3A+IDwvZGl2PiA8ZGl2IGNsYXNzPSJkaXYyIj4gPGgzPjxhDQorbmFtZT0ic2VjLWxhbmctdGFnIj48L2E+Mi4xMiBMYW5ndWFnZSBJZGVudGlmaWNhdGlvbjwvaDM+IDxwPkluIGRvY3VtZW50IHByb2Nlc3NpbmcsDQoraXQgaXMgb2Z0ZW4gdXNlZnVsIHRvIGlkZW50aWZ5IHRoZSBuYXR1cmFsIG9yIGZvcm1hbCBsYW5ndWFnZSBpbiB3aGljaCB0aGUNCitjb250ZW50IGlzIHdyaXR0ZW4uIEEgc3BlY2lhbCA8YSB0aXRsZT0iQXR0cmlidXRlIiBocmVmPSIjZHQtYXR0ciI+YXR0cmlidXRlPC9hPg0KK25hbWVkIDxjb2RlPnhtbDpsYW5nPC9jb2RlPiBtYXkgYmUgaW5zZXJ0ZWQgaW4gZG9jdW1lbnRzIHRvIHNwZWNpZnkgdGhlIGxhbmd1YWdlDQordXNlZCBpbiB0aGUgY29udGVudHMgYW5kIGF0dHJpYnV0ZSB2YWx1ZXMgb2YgYW55IGVsZW1lbnQgaW4gYW4gWE1MIGRvY3VtZW50Lg0KK0luIHZhbGlkIGRvY3VtZW50cywgdGhpcyBhdHRyaWJ1dGUsIGxpa2UgYW55IG90aGVyLCBtdXN0IGJlIDxhIHRpdGxlPSJBdHRyaWJ1dGUtTGlzdCBEZWNsYXJhdGlvbiINCitocmVmPSIjZHQtYXR0ZGVjbCI+ZGVjbGFyZWQ8L2E+IGlmIGl0IGlzIHVzZWQuIFRoZSB2YWx1ZXMgb2YgdGhlIGF0dHJpYnV0ZQ0KK2FyZSBsYW5ndWFnZSBpZGVudGlmaWVycyBhcyBkZWZpbmVkIGJ5IDxhIGhyZWY9IiNSRkMxNzY2Ij5bSUVURiBSRkMgMTc2Nl08L2E+LCA8Y2l0ZT5UYWdzDQorZm9yIHRoZSBJZGVudGlmaWNhdGlvbiBvZiBMYW5ndWFnZXM8L2NpdGU+LCBvciBpdHMgc3VjY2Vzc29yIG9uIHRoZSBJRVRGIFN0YW5kYXJkcw0KK1RyYWNrLjwvcD4gPGRpdiBjbGFzcz0ibm90ZSI+PHAgY2xhc3M9InByZWZpeCI+PGI+Tm90ZTo8L2I+PC9wPiA8cD48YSBocmVmPSIjUkZDMTc2NiI+W0lFVEYNCitSRkMgMTc2Nl08L2E+IHRhZ3MgYXJlIGNvbnN0cnVjdGVkIGZyb20gdHdvLWxldHRlciBsYW5ndWFnZSBjb2RlcyBhcyBkZWZpbmVkDQorYnkgPGEgaHJlZj0iI0lTTzYzOSI+W0lTTyA2MzldPC9hPiwgZnJvbSB0d28tbGV0dGVyIGNvdW50cnkgY29kZXMgYXMgZGVmaW5lZA0KK2J5IDxhIGhyZWY9IiNJU08zMTY2Ij5bSVNPIDMxNjZdPC9hPiwgb3IgZnJvbSBsYW5ndWFnZSBpZGVudGlmaWVycyByZWdpc3RlcmVkDQord2l0aCB0aGUgSW50ZXJuZXQgQXNzaWduZWQgTnVtYmVycyBBdXRob3JpdHkgPGEgaHJlZj0iI0lBTkEtTEFOR0NPREVTIj5bSUFOQS1MQU5HQ09ERVNdPC9hPi4NCitJdCBpcyBleHBlY3RlZCB0aGF0IHRoZSBzdWNjZXNzb3IgdG8gPGEgaHJlZj0iI1JGQzE3NjYiPltJRVRGIFJGQyAxNzY2XTwvYT4NCit3aWxsIGludHJvZHVjZSB0aHJlZS1sZXR0ZXIgbGFuZ3VhZ2UgY29kZXMgZm9yIGxhbmd1YWdlcyBub3QgcHJlc2VudGx5IGNvdmVyZWQNCitieSA8YSBocmVmPSIjSVNPNjM5Ij5bSVNPIDYzOV08L2E+LjwvcD4gPC9kaXY+IDxwPihQcm9kdWN0aW9ucyAzMyB0aHJvdWdoDQorMzggaGF2ZSBiZWVuIHJlbW92ZWQuKTwvcD4gICAgICA8cD5Gb3IgZXhhbXBsZTo8L3A+IDx0YWJsZSBjbGFzcz0iZWciIHdpZHRoPSIxMDAlIg0KK2JvcmRlcj0iMSIgY2VsbHBhZGRpbmc9IjUiIGJnY29sb3I9IiM5OWZmZmYiPg0KKzx0cj4NCis8dGQ+PHByZT4mbHQ7cCB4bWw6bGFuZz0iZW4iPlRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuJmx0Oy9wPg0KKyZsdDtwIHhtbDpsYW5nPSJlbi1HQiI+V2hhdCBjb2xvdXIgaXMgaXQ/Jmx0Oy9wPg0KKyZsdDtwIHhtbDpsYW5nPSJlbi1VUyI+V2hhdCBjb2xvciBpcyBpdD8mbHQ7L3A+DQorJmx0O3NwIHdobz0iRmF1c3QiIGRlc2M9J2xlaXNlJyB4bWw6bGFuZz0iZGUiPg0KKyAgJmx0O2w+SGFiZSBudW4sIGFjaCEgUGhpbG9zb3BoaWUsJmx0Oy9sPg0KKyAgJmx0O2w+SnVyaXN0ZXJlaSwgdW5kIE1lZGl6aW4mbHQ7L2w+DQorICAmbHQ7bD51bmQgbGVpZGVyIGF1Y2ggVGhlb2xvZ2llJmx0Oy9sPg0KKyAgJmx0O2w+ZHVyY2hhdXMgc3R1ZGllcnQgbWl0IGhlaSZzemxpZztlbSBCZW0mdXVtbDtoJ24uJmx0Oy9sPg0KKyZsdDsvc3A+PC9wcmU+PC90ZD4NCis8L3RyPg0KKzwvdGFibGU+ICA8cD5UaGUgaW50ZW50IGRlY2xhcmVkIHdpdGggPGNvZGU+eG1sOmxhbmc8L2NvZGU+IGlzIGNvbnNpZGVyZWQNCit0byBhcHBseSB0byBhbGwgYXR0cmlidXRlcyBhbmQgY29udGVudCBvZiB0aGUgZWxlbWVudCB3aGVyZSBpdCBpcyBzcGVjaWZpZWQsDQordW5sZXNzIG92ZXJyaWRkZW4gd2l0aCBhbiBpbnN0YW5jZSBvZiA8Y29kZT54bWw6bGFuZzwvY29kZT4gb24gYW5vdGhlciBlbGVtZW50DQord2l0aGluIHRoYXQgY29udGVudC48L3A+ICA8cD5BIHNpbXBsZSBkZWNsYXJhdGlvbiBmb3IgPGNvZGU+eG1sOmxhbmc8L2NvZGU+DQorbWlnaHQgdGFrZSB0aGUgZm9ybTwvcD4gPHRhYmxlIGNsYXNzPSJlZyIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMSIgY2VsbHBhZGRpbmc9IjUiDQorYmdjb2xvcj0iIzk5ZmZmZiI+DQorPHRyPg0KKzx0ZD48cHJlPnhtbDpsYW5nIE5NVE9LRU4gI0lNUExJRUQ8L3ByZT48L3RkPg0KKzwvdHI+DQorPC90YWJsZT4gPHA+YnV0IHNwZWNpZmljIGRlZmF1bHQgdmFsdWVzIG1heSBhbHNvIGJlIGdpdmVuLCBpZiBhcHByb3ByaWF0ZS4NCitJbiBhIGNvbGxlY3Rpb24gb2YgRnJlbmNoIHBvZW1zIGZvciBFbmdsaXNoIHN0dWRlbnRzLCB3aXRoIGdsb3NzZXMgYW5kIG5vdGVzDQoraW4gRW5nbGlzaCwgdGhlIDxjb2RlPnhtbDpsYW5nPC9jb2RlPiBhdHRyaWJ1dGUgbWlnaHQgYmUgZGVjbGFyZWQgdGhpcyB3YXk6PC9wPiA8dGFibGUNCitjbGFzcz0iZWciIHdpZHRoPSIxMDAlIiBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSI1IiBiZ2NvbG9yPSIjOTlmZmZmIj4NCis8dHI+DQorPHRkPjxwcmU+Jmx0OyFBVFRMSVNUIHBvZW0gICB4bWw6bGFuZyBOTVRPS0VOICdmcic+DQorJmx0OyFBVFRMSVNUIGdsb3NzICB4bWw6bGFuZyBOTVRPS0VOICdlbic+DQorJmx0OyFBVFRMSVNUIG5vdGUgICB4bWw6bGFuZyBOTVRPS0VOICdlbic+PC9wcmU+PC90ZD4NCis8L3RyPg0KKzwvdGFibGU+IDwvZGl2PiA8L2Rpdj4gIDxkaXYgY2xhc3M9ImRpdjEiPiA8aDI+PGEgbmFtZT0ic2VjLWxvZ2ljYWwtc3RydWN0Ij48L2E+Mw0KK0xvZ2ljYWwgU3RydWN0dXJlczwvaDI+IDxwPls8YSB0aXRsZT0iRWxlbWVudCIgbmFtZT0iZHQtZWxlbWVudCI+RGVmaW5pdGlvbjwvYT46DQorRWFjaCA8YSB0aXRsZT0iWE1MIERvY3VtZW50IiBocmVmPSIjZHQteG1sLWRvYyI+WE1MIGRvY3VtZW50PC9hPiBjb250YWlucw0KK29uZSBvciBtb3JlIDxiPmVsZW1lbnRzPC9iPiwgdGhlIGJvdW5kYXJpZXMgb2Ygd2hpY2ggYXJlIGVpdGhlciBkZWxpbWl0ZWQNCitieSA8YSB0aXRsZT0iU3RhcnQtVGFnIiBocmVmPSIjZHQtc3RhZyI+c3RhcnQtdGFnczwvYT4gYW5kIDxhIHRpdGxlPSJFbmQgVGFnIg0KK2hyZWY9IiNkdC1ldGFnIj5lbmQtdGFnczwvYT4sIG9yLCBmb3IgPGEgdGl0bGU9IkVtcHR5IiBocmVmPSIjZHQtZW1wdHkiPmVtcHR5PC9hPg0KK2VsZW1lbnRzLCBieSBhbiA8YSB0aXRsZT0iZW1wdHktZWxlbWVudCB0YWciIGhyZWY9IiNkdC1lZXRhZyI+ZW1wdHktZWxlbWVudA0KK3RhZzwvYT4uIEVhY2ggZWxlbWVudCBoYXMgYSB0eXBlLCBpZGVudGlmaWVkIGJ5IG5hbWUsIHNvbWV0aW1lcyBjYWxsZWQgaXRzDQorImdlbmVyaWMgaWRlbnRpZmllciIgKEdJKSwgYW5kIG1heSBoYXZlIGEgc2V0IG9mIGF0dHJpYnV0ZSBzcGVjaWZpY2F0aW9ucy5dDQorRWFjaCBhdHRyaWJ1dGUgc3BlY2lmaWNhdGlvbiBoYXMgYSA8YSB0aXRsZT0iQXR0cmlidXRlIE5hbWUiIGhyZWY9IiNkdC1hdHRybmFtZSI+bmFtZTwvYT4NCithbmQgYSA8YSB0aXRsZT0iQXR0cmlidXRlIFZhbHVlIiBocmVmPSIjZHQtYXR0cnZhbCI+dmFsdWU8L2E+LjwvcD4gPGg1PkVsZW1lbnQ8L2g1Pjx0YWJsZQ0KK2NsYXNzPSJzY3JhcCI+PHRib2R5Pg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PGEgbmFtZT0iTlQtZWxlbWVudCI+PC9hPlszOV0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5lbGVtZW50PC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPjxhIGhyZWY9IiNOVC1FbXB0eUVsZW1UYWciPkVtcHR5RWxlbVRhZzwvYT48L2NvZGU+PC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PGNvZGU+fCA8YSBocmVmPSIjTlQtU1RhZyI+U1RhZzwvYT4gPGEgaHJlZj0iI05ULWNvbnRlbnQiPmNvbnRlbnQ8L2E+IDxhDQoraHJlZj0iI05ULUVUYWciPkVUYWc8L2E+PC9jb2RlPjwvdGQ+DQorPHRkPjxhIGhyZWY9IiNHSU1hdGNoIj5bV0ZDOiBFbGVtZW50IFR5cGUgTWF0Y2hdPC9hPjwvdGQ+DQorPC90cj4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjxhIGhyZWY9IiNlbGVtZW50dmFsaWQiPltWQzogRWxlbWVudCBWYWxpZF08L2E+PC90ZD4NCis8L3RyPg0KKzwvdGJvZHk+PC90YWJsZT4gPHA+VGhpcyBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGNvbnN0cmFpbiB0aGUgc2VtYW50aWNzLCB1c2UsDQorb3IgKGJleW9uZCBzeW50YXgpIG5hbWVzIG9mIHRoZSBlbGVtZW50IHR5cGVzIGFuZCBhdHRyaWJ1dGVzLCBleGNlcHQgdGhhdA0KK25hbWVzIGJlZ2lubmluZyB3aXRoIGEgbWF0Y2ggdG8gPGNvZGU+KCgnWCd8J3gnKSgnTSd8J20nKSgnTCd8J2wnKSk8L2NvZGU+DQorYXJlIHJlc2VydmVkIGZvciBzdGFuZGFyZGl6YXRpb24gaW4gdGhpcyBvciBmdXR1cmUgdmVyc2lvbnMgb2YgdGhpcyBzcGVjaWZpY2F0aW9uLjwvcD4gPGRpdg0KK2NsYXNzPSJjb25zdHJhaW50Ij48cCBjbGFzcz0icHJlZml4Ij48YSBuYW1lPSJHSU1hdGNoIj48L2E+PGI+V2VsbC1mb3JtZWRuZXNzDQorY29uc3RyYWludDogRWxlbWVudCBUeXBlIE1hdGNoPC9iPjwvcD48cD5UaGUgPGEgaHJlZj0iI05ULU5hbWUiPk5hbWU8L2E+IGluDQorYW4gZWxlbWVudCdzIGVuZC10YWcgbXVzdCBtYXRjaCB0aGUgZWxlbWVudCB0eXBlIGluIHRoZSBzdGFydC10YWcuPC9wPiA8L2Rpdj4gPGRpdg0KK2NsYXNzPSJjb25zdHJhaW50Ij48cCBjbGFzcz0icHJlZml4Ij48YSBuYW1lPSJlbGVtZW50dmFsaWQiPjwvYT48Yj5WYWxpZGl0eQ0KK2NvbnN0cmFpbnQ6IEVsZW1lbnQgVmFsaWQ8L2I+PC9wPjxwPkFuIGVsZW1lbnQgaXMgdmFsaWQgaWYgdGhlcmUgaXMgYSBkZWNsYXJhdGlvbg0KK21hdGNoaW5nIDxhIGhyZWY9IiNOVC1lbGVtZW50ZGVjbCI+ZWxlbWVudGRlY2w8L2E+IHdoZXJlIHRoZSA8YSBocmVmPSIjTlQtTmFtZSI+TmFtZTwvYT4NCittYXRjaGVzIHRoZSBlbGVtZW50IHR5cGUsIGFuZCBvbmUgb2YgdGhlIGZvbGxvd2luZyBob2xkczo8L3A+IDxvbD4NCis8bGk+PHA+VGhlIGRlY2xhcmF0aW9uIG1hdGNoZXMgPGI+RU1QVFk8L2I+IGFuZCB0aGUgZWxlbWVudCBoYXMgbm8gPGEgdGl0bGU9IkNvbnRlbnQiDQoraHJlZj0iI2R0LWNvbnRlbnQiPmNvbnRlbnQ8L2E+LjwvcD48L2xpPg0KKzxsaT48cD5UaGUgZGVjbGFyYXRpb24gbWF0Y2hlcyA8YSBocmVmPSIjTlQtY2hpbGRyZW4iPmNoaWxkcmVuPC9hPiBhbmQgdGhlDQorc2VxdWVuY2Ugb2YgPGEgdGl0bGU9IlBhcmVudC9DaGlsZCIgaHJlZj0iI2R0LXBhcmVudGNoaWxkIj5jaGlsZCBlbGVtZW50czwvYT4NCitiZWxvbmdzIHRvIHRoZSBsYW5ndWFnZSBnZW5lcmF0ZWQgYnkgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBpbiB0aGUgY29udGVudA0KK21vZGVsLCB3aXRoIG9wdGlvbmFsIHdoaXRlIHNwYWNlIChjaGFyYWN0ZXJzIG1hdGNoaW5nIHRoZSBub250ZXJtaW5hbCA8YSBocmVmPSIjTlQtUyI+UzwvYT4pDQorYmV0d2VlbiB0aGUgc3RhcnQtdGFnIGFuZCB0aGUgZmlyc3QgY2hpbGQgZWxlbWVudCwgYmV0d2VlbiBjaGlsZCBlbGVtZW50cywNCitvciBiZXR3ZWVuIHRoZSBsYXN0IGNoaWxkIGVsZW1lbnQgYW5kIHRoZSBlbmQtdGFnLiBOb3RlIHRoYXQgYSBDREFUQSBzZWN0aW9uDQorY29udGFpbmluZyBvbmx5IHdoaXRlIHNwYWNlIGRvZXMgbm90IG1hdGNoIHRoZSBub250ZXJtaW5hbCA8YSBocmVmPSIjTlQtUyI+UzwvYT4sDQorYW5kIGhlbmNlIGNhbm5vdCBhcHBlYXIgaW4gdGhlc2UgcG9zaXRpb25zLjwvcD48L2xpPg0KKzxsaT48cD5UaGUgZGVjbGFyYXRpb24gbWF0Y2hlcyA8YSBocmVmPSIjTlQtTWl4ZWQiPk1peGVkPC9hPiBhbmQgdGhlIGNvbnRlbnQNCitjb25zaXN0cyBvZiA8YSB0aXRsZT0iQ2hhcmFjdGVyIERhdGEiIGhyZWY9IiNkdC1jaGFyZGF0YSI+Y2hhcmFjdGVyIGRhdGE8L2E+DQorYW5kIDxhIHRpdGxlPSJQYXJlbnQvQ2hpbGQiIGhyZWY9IiNkdC1wYXJlbnRjaGlsZCI+Y2hpbGQgZWxlbWVudHM8L2E+IHdob3NlDQordHlwZXMgbWF0Y2ggbmFtZXMgaW4gdGhlIGNvbnRlbnQgbW9kZWwuPC9wPjwvbGk+DQorPGxpPjxwPlRoZSBkZWNsYXJhdGlvbiBtYXRjaGVzIDxiPkFOWTwvYj4sIGFuZCB0aGUgdHlwZXMgb2YgYW55IDxhIHRpdGxlPSJQYXJlbnQvQ2hpbGQiDQoraHJlZj0iI2R0LXBhcmVudGNoaWxkIj5jaGlsZCBlbGVtZW50czwvYT4gaGF2ZSBiZWVuIGRlY2xhcmVkLjwvcD48L2xpPg0KKzwvb2w+IDwvZGl2PiA8ZGl2IGNsYXNzPSJkaXYyIj4gPGgzPjxhIG5hbWU9InNlYy1zdGFydHRhZ3MiPjwvYT4zLjEgU3RhcnQtVGFncywNCitFbmQtVGFncywgYW5kIEVtcHR5LUVsZW1lbnQgVGFnczwvaDM+IDxwPls8YSB0aXRsZT0iU3RhcnQtVGFnIiBuYW1lPSJkdC1zdGFnIj5EZWZpbml0aW9uPC9hPjoNCitUaGUgYmVnaW5uaW5nIG9mIGV2ZXJ5IG5vbi1lbXB0eSBYTUwgZWxlbWVudCBpcyBtYXJrZWQgYnkgYSA8Yj5zdGFydC10YWc8L2I+Ll08L3A+IDxoNT5TdGFydC10YWc8L2g1Pjx0YWJsZQ0KK2NsYXNzPSJzY3JhcCI+PHRib2R5Pg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PGEgbmFtZT0iTlQtU1RhZyI+PC9hPls0MF0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5TVGFnPC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPicmbHQ7JyA8YSBocmVmPSIjTlQtTmFtZSI+TmFtZTwvYT4gKDxhIGhyZWY9IiNOVC1TIj5TPC9hPiA8YSBocmVmPSIjTlQtQXR0cmlidXRlIj5BdHRyaWJ1dGU8L2E+KSogPGENCitocmVmPSIjTlQtUyI+UzwvYT4/ICc+JzwvY29kZT48L3RkPg0KKzx0ZD48YSBocmVmPSIjdW5pcWF0dHNwZWMiPltXRkM6IFVuaXF1ZSBBdHQgU3BlY108L2E+PC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PGEgbmFtZT0iTlQtQXR0cmlidXRlIj48L2E+WzQxXSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPkF0dHJpYnV0ZTwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT48YSBocmVmPSIjTlQtTmFtZSI+TmFtZTwvYT4gPGEgaHJlZj0iI05ULUVxIj5FcTwvYT4gPGEgaHJlZj0iI05ULUF0dFZhbHVlIj5BdHRWYWx1ZTwvYT48L2NvZGU+PC90ZD4NCis8dGQ+PGEgaHJlZj0iI1ZhbHVlVHlwZSI+W1ZDOiBBdHRyaWJ1dGUgVmFsdWUgVHlwZV08L2E+PC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PGEgaHJlZj0iI05vRXh0ZXJuYWxSZWZzIj5bV0ZDOiBObyBFeHRlcm5hbCBFbnRpdHkgUmVmZXJlbmNlc108L2E+PC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PGEgaHJlZj0iI0NsZWFuQXR0clZhbHMiPltXRkM6IE5vICZsdDsgaW4gQXR0cmlidXRlIFZhbHVlc108L2E+PC90ZD4NCis8L3RyPg0KKzwvdGJvZHk+PC90YWJsZT4gPHA+VGhlIDxhIGhyZWY9IiNOVC1OYW1lIj5OYW1lPC9hPiBpbiB0aGUgc3RhcnQtIGFuZCBlbmQtdGFncw0KK2dpdmVzIHRoZSBlbGVtZW50J3MgPGI+dHlwZTwvYj4uIFs8YSB0aXRsZT0iQXR0cmlidXRlIiBuYW1lPSJkdC1hdHRyIj5EZWZpbml0aW9uPC9hPjoNCisgVGhlIDxhIGhyZWY9IiNOVC1OYW1lIj5OYW1lPC9hPi08YSBocmVmPSIjTlQtQXR0VmFsdWUiPkF0dFZhbHVlPC9hPiBwYWlycw0KK2FyZSByZWZlcnJlZCB0byBhcyB0aGUgPGI+YXR0cmlidXRlIHNwZWNpZmljYXRpb25zPC9iPiBvZiB0aGUgZWxlbWVudF0sIFs8YQ0KK3RpdGxlPSJBdHRyaWJ1dGUgTmFtZSIgbmFtZT0iZHQtYXR0cm5hbWUiPkRlZmluaXRpb248L2E+OiB3aXRoIHRoZSA8YSBocmVmPSIjTlQtTmFtZSI+TmFtZTwvYT4NCitpbiBlYWNoIHBhaXIgcmVmZXJyZWQgdG8gYXMgdGhlIDxiPmF0dHJpYnV0ZSBuYW1lPC9iPl0gYW5kIFs8YSB0aXRsZT0iQXR0cmlidXRlIFZhbHVlIg0KK25hbWU9ImR0LWF0dHJ2YWwiPkRlZmluaXRpb248L2E+OiB0aGUgY29udGVudCBvZiB0aGUgPGEgaHJlZj0iI05ULUF0dFZhbHVlIj5BdHRWYWx1ZTwvYT4NCisodGhlIHRleHQgYmV0d2VlbiB0aGUgPGNvZGU+JzwvY29kZT4gb3IgPGNvZGU+IjwvY29kZT4gZGVsaW1pdGVycykgYXMgdGhlIDxiPmF0dHJpYnV0ZQ0KK3ZhbHVlPC9iPi5dTm90ZSB0aGF0IHRoZSBvcmRlciBvZiBhdHRyaWJ1dGUgc3BlY2lmaWNhdGlvbnMgaW4gYSBzdGFydC10YWcNCitvciBlbXB0eS1lbGVtZW50IHRhZyBpcyBub3Qgc2lnbmlmaWNhbnQuPC9wPiA8ZGl2IGNsYXNzPSJjb25zdHJhaW50Ij48cCBjbGFzcz0icHJlZml4Ij48YQ0KK25hbWU9InVuaXFhdHRzcGVjIj48L2E+PGI+V2VsbC1mb3JtZWRuZXNzIGNvbnN0cmFpbnQ6IFVuaXF1ZSBBdHQgU3BlYzwvYj48L3A+PHA+Tm8NCithdHRyaWJ1dGUgbmFtZSBtYXkgYXBwZWFyIG1vcmUgdGhhbiBvbmNlIGluIHRoZSBzYW1lIHN0YXJ0LXRhZyBvciBlbXB0eS1lbGVtZW50DQordGFnLjwvcD4gPC9kaXY+IDxkaXYgY2xhc3M9ImNvbnN0cmFpbnQiPjxwIGNsYXNzPSJwcmVmaXgiPjxhIG5hbWU9IlZhbHVlVHlwZSI+PC9hPjxiPlZhbGlkaXR5DQorY29uc3RyYWludDogQXR0cmlidXRlIFZhbHVlIFR5cGU8L2I+PC9wPjxwPlRoZSBhdHRyaWJ1dGUgbXVzdCBoYXZlIGJlZW4gZGVjbGFyZWQ7DQordGhlIHZhbHVlIG11c3QgYmUgb2YgdGhlIHR5cGUgZGVjbGFyZWQgZm9yIGl0LiAoRm9yIGF0dHJpYnV0ZSB0eXBlcywgc2VlIDxhDQoraHJlZj0iI2F0dGRlY2xzIj48Yj4zLjMgQXR0cmlidXRlLUxpc3QgRGVjbGFyYXRpb25zPC9iPjwvYT4uKTwvcD4gPC9kaXY+IDxkaXYNCitjbGFzcz0iY29uc3RyYWludCI+PHAgY2xhc3M9InByZWZpeCI+PGEgbmFtZT0iTm9FeHRlcm5hbFJlZnMiPjwvYT48Yj5XZWxsLWZvcm1lZG5lc3MNCitjb25zdHJhaW50OiBObyBFeHRlcm5hbCBFbnRpdHkgUmVmZXJlbmNlczwvYj48L3A+PHA+QXR0cmlidXRlIHZhbHVlcyBjYW5ub3QNCitjb250YWluIGRpcmVjdCBvciBpbmRpcmVjdCBlbnRpdHkgcmVmZXJlbmNlcyB0byBleHRlcm5hbCBlbnRpdGllcy48L3A+IDwvZGl2PiA8ZGl2DQorY2xhc3M9ImNvbnN0cmFpbnQiPjxwIGNsYXNzPSJwcmVmaXgiPjxhIG5hbWU9IkNsZWFuQXR0clZhbHMiPjwvYT48Yj5XZWxsLWZvcm1lZG5lc3MNCitjb25zdHJhaW50OiBObyA8Y29kZT4mbHQ7PC9jb2RlPiBpbiBBdHRyaWJ1dGUgVmFsdWVzPC9iPjwvcD4gPHA+VGhlIDxhIHRpdGxlPSJSZXBsYWNlbWVudCBUZXh0Ig0KK2hyZWY9IiNkdC1yZXBsdGV4dCI+cmVwbGFjZW1lbnQgdGV4dDwvYT4gb2YgYW55IGVudGl0eSByZWZlcnJlZCB0byBkaXJlY3RseQ0KK29yIGluZGlyZWN0bHkgaW4gYW4gYXR0cmlidXRlIHZhbHVlIG11c3Qgbm90IGNvbnRhaW4gYSA8Y29kZT4mbHQ7PC9jb2RlPi48L3A+IDwvZGl2PiA8cD5Bbg0KK2V4YW1wbGUgb2YgYSBzdGFydC10YWc6PC9wPiA8dGFibGUgY2xhc3M9ImVnIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIxIiBjZWxscGFkZGluZz0iNSINCitiZ2NvbG9yPSIjOTlmZmZmIj4NCis8dHI+DQorPHRkPjxwcmU+Jmx0O3Rlcm1kZWYgaWQ9ImR0LWRvZyIgdGVybT0iZG9nIj48L3ByZT48L3RkPg0KKzwvdHI+DQorPC90YWJsZT4gPHA+WzxhIHRpdGxlPSJFbmQgVGFnIiBuYW1lPSJkdC1ldGFnIj5EZWZpbml0aW9uPC9hPjogVGhlIGVuZCBvZg0KK2V2ZXJ5IGVsZW1lbnQgdGhhdCBiZWdpbnMgd2l0aCBhIHN0YXJ0LXRhZyBtdXN0IGJlIG1hcmtlZCBieSBhbiA8Yj5lbmQtdGFnPC9iPg0KK2NvbnRhaW5pbmcgYSBuYW1lIHRoYXQgZWNob2VzIHRoZSBlbGVtZW50J3MgdHlwZSBhcyBnaXZlbiBpbiB0aGUgc3RhcnQtdGFnOl08L3A+IDxoNT5FbmQtdGFnPC9oNT48dGFibGUNCitjbGFzcz0ic2NyYXAiPjx0Ym9keT4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULUVUYWciPjwvYT5bNDJdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+RVRhZzwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT4nJmx0Oy8nIDxhIGhyZWY9IiNOVC1OYW1lIj5OYW1lPC9hPiA8YSBocmVmPSIjTlQtUyI+UzwvYT4/ICc+JzwvY29kZT48L3RkPg0KKzwvdHI+DQorPC90Ym9keT48L3RhYmxlPiA8cD5BbiBleGFtcGxlIG9mIGFuIGVuZC10YWc6PC9wPiA8dGFibGUgY2xhc3M9ImVnIiB3aWR0aD0iMTAwJSINCitib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSI1IiBiZ2NvbG9yPSIjOTlmZmZmIj4NCis8dHI+DQorPHRkPjxwcmU+Jmx0Oy90ZXJtZGVmPjwvcHJlPjwvdGQ+DQorPC90cj4NCis8L3RhYmxlPiA8cD5bPGEgdGl0bGU9IkNvbnRlbnQiIG5hbWU9ImR0LWNvbnRlbnQiPkRlZmluaXRpb248L2E+OiBUaGUgPGEgdGl0bGU9IlRleHQiDQoraHJlZj0iI2R0LXRleHQiPnRleHQ8L2E+IGJldHdlZW4gdGhlIHN0YXJ0LXRhZyBhbmQgZW5kLXRhZyBpcyBjYWxsZWQgdGhlIGVsZW1lbnQncyA8Yj5jb250ZW50PC9iPjpdPC9wPiA8aDU+Q29udGVudA0KK29mIEVsZW1lbnRzPC9oNT48dGFibGUgY2xhc3M9InNjcmFwIj48dGJvZHk+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1jb250ZW50Ij48L2E+WzQzXSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPmNvbnRlbnQ8L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+PGEgaHJlZj0iI05ULUNoYXJEYXRhIj5DaGFyRGF0YTwvYT4/ICgoPGEgaHJlZj0iI05ULWVsZW1lbnQiPmVsZW1lbnQ8L2E+DQorfCA8YSBocmVmPSIjTlQtUmVmZXJlbmNlIj5SZWZlcmVuY2U8L2E+IHwgPGEgaHJlZj0iI05ULUNEU2VjdCI+Q0RTZWN0PC9hPg0KK3wgPGEgaHJlZj0iI05ULVBJIj5QSTwvYT4gfCA8YSBocmVmPSIjTlQtQ29tbWVudCI+Q29tbWVudDwvYT4pIDxhIGhyZWY9IiNOVC1DaGFyRGF0YSI+Q2hhckRhdGE8L2E+PykqPC9jb2RlPjwvdGQ+DQorPHRkPjxpPi8qICAqLzwvaT48L3RkPg0KKzwvdHI+DQorPC90Ym9keT48L3RhYmxlPiA8cD5bPGEgdGl0bGU9IkVtcHR5IiBuYW1lPSJkdC1lbXB0eSI+RGVmaW5pdGlvbjwvYT46IEFuIGVsZW1lbnQNCit3aXRoIG5vIGNvbnRlbnQgaXMgc2FpZCB0byBiZSA8Yj5lbXB0eTwvYj4uXSBUaGUgcmVwcmVzZW50YXRpb24gb2YgYW4gZW1wdHkNCitlbGVtZW50IGlzIGVpdGhlciBhIHN0YXJ0LXRhZyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBhbiBlbmQtdGFnLCBvciBhbiBlbXB0eS1lbGVtZW50DQordGFnLiBbPGEgdGl0bGU9ImVtcHR5LWVsZW1lbnQgdGFnIiBuYW1lPSJkdC1lZXRhZyI+RGVmaW5pdGlvbjwvYT46IEFuIDxiPmVtcHR5LWVsZW1lbnQNCit0YWc8L2I+IHRha2VzIGEgc3BlY2lhbCBmb3JtOl08L3A+IDxoNT5UYWdzIGZvciBFbXB0eSBFbGVtZW50czwvaDU+PHRhYmxlDQorY2xhc3M9InNjcmFwIj48dGJvZHk+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1FbXB0eUVsZW1UYWciPjwvYT5bNDRdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+RW1wdHlFbGVtVGFnPC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPicmbHQ7JyA8YSBocmVmPSIjTlQtTmFtZSI+TmFtZTwvYT4gKDxhIGhyZWY9IiNOVC1TIj5TPC9hPiA8YSBocmVmPSIjTlQtQXR0cmlidXRlIj5BdHRyaWJ1dGU8L2E+KSogPGENCitocmVmPSIjTlQtUyI+UzwvYT4/ICcvPic8L2NvZGU+PC90ZD4NCis8dGQ+PGEgaHJlZj0iI3VuaXFhdHRzcGVjIj5bV0ZDOiBVbmlxdWUgQXR0IFNwZWNdPC9hPjwvdGQ+DQorPC90cj4NCis8L3Rib2R5PjwvdGFibGU+IDxwPkVtcHR5LWVsZW1lbnQgdGFncyBtYXkgYmUgdXNlZCBmb3IgYW55IGVsZW1lbnQgd2hpY2ggaGFzDQorbm8gY29udGVudCwgd2hldGhlciBvciBub3QgaXQgaXMgZGVjbGFyZWQgdXNpbmcgdGhlIGtleXdvcmQgPGI+RU1QVFk8L2I+LiA8YQ0KK3RpdGxlPSJGb3IgaW50ZXJvcGVyYWJpbGl0eSIgaHJlZj0iI2R0LWludGVyb3AiPkZvciBpbnRlcm9wZXJhYmlsaXR5PC9hPiwNCit0aGUgZW1wdHktZWxlbWVudCB0YWcgc2hvdWxkIGJlIHVzZWQsIGFuZCBzaG91bGQgb25seSBiZSB1c2VkLCBmb3IgZWxlbWVudHMNCit3aGljaCBhcmUgZGVjbGFyZWQgRU1QVFkuPC9wPiA8cD5FeGFtcGxlcyBvZiBlbXB0eSBlbGVtZW50czo8L3A+IDx0YWJsZSBjbGFzcz0iZWciDQord2lkdGg9IjEwMCUiIGJvcmRlcj0iMSIgY2VsbHBhZGRpbmc9IjUiIGJnY29sb3I9IiM5OWZmZmYiPg0KKzx0cj4NCis8dGQ+PHByZT4mbHQ7SU1HIGFsaWduPSJsZWZ0Ig0KKyBzcmM9Imh0dHA6Ly93d3cudzMub3JnL0ljb25zL1dXVy93M2NfaG9tZSIgLz4NCismbHQ7YnI+Jmx0Oy9icj4NCismbHQ7YnIvPjwvcHJlPjwvdGQ+DQorPC90cj4NCis8L3RhYmxlPiA8L2Rpdj4gPGRpdiBjbGFzcz0iZGl2MiI+IDxoMz48YSBuYW1lPSJlbGVtZGVjbHMiPjwvYT4zLjIgRWxlbWVudA0KK1R5cGUgRGVjbGFyYXRpb25zPC9oMz4gPHA+VGhlIDxhIHRpdGxlPSJFbGVtZW50IiBocmVmPSIjZHQtZWxlbWVudCI+ZWxlbWVudDwvYT4NCitzdHJ1Y3R1cmUgb2YgYW4gPGEgdGl0bGU9IlhNTCBEb2N1bWVudCIgaHJlZj0iI2R0LXhtbC1kb2MiPlhNTCBkb2N1bWVudDwvYT4NCittYXksIGZvciA8YSB0aXRsZT0iVmFsaWRpdHkiIGhyZWY9IiNkdC12YWxpZCI+dmFsaWRhdGlvbjwvYT4gcHVycG9zZXMsIGJlDQorY29uc3RyYWluZWQgdXNpbmcgZWxlbWVudCB0eXBlIGFuZCBhdHRyaWJ1dGUtbGlzdCBkZWNsYXJhdGlvbnMuIEFuIGVsZW1lbnQNCit0eXBlIGRlY2xhcmF0aW9uIGNvbnN0cmFpbnMgdGhlIGVsZW1lbnQncyA8YSB0aXRsZT0iQ29udGVudCIgaHJlZj0iI2R0LWNvbnRlbnQiPmNvbnRlbnQ8L2E+LjwvcD4gPHA+RWxlbWVudA0KK3R5cGUgZGVjbGFyYXRpb25zIG9mdGVuIGNvbnN0cmFpbiB3aGljaCBlbGVtZW50IHR5cGVzIGNhbiBhcHBlYXIgYXMgPGEgdGl0bGU9IlBhcmVudC9DaGlsZCINCitocmVmPSIjZHQtcGFyZW50Y2hpbGQiPmNoaWxkcmVuPC9hPiBvZiB0aGUgZWxlbWVudC4gQXQgdXNlciBvcHRpb24sIGFuIFhNTA0KK3Byb2Nlc3NvciBtYXkgaXNzdWUgYSB3YXJuaW5nIHdoZW4gYSBkZWNsYXJhdGlvbiBtZW50aW9ucyBhbiBlbGVtZW50IHR5cGUNCitmb3Igd2hpY2ggbm8gZGVjbGFyYXRpb24gaXMgcHJvdmlkZWQsIGJ1dCB0aGlzIGlzIG5vdCBhbiBlcnJvci48L3A+IDxwPls8YQ0KK3RpdGxlPSJFbGVtZW50IFR5cGUgZGVjbGFyYXRpb24iIG5hbWU9ImR0LWVsZGVjbCI+RGVmaW5pdGlvbjwvYT46IEFuIDxiPmVsZW1lbnQNCit0eXBlIGRlY2xhcmF0aW9uPC9iPiB0YWtlcyB0aGUgZm9ybTpdPC9wPiA8aDU+RWxlbWVudCBUeXBlIERlY2xhcmF0aW9uPC9oNT48dGFibGUNCitjbGFzcz0ic2NyYXAiPjx0Ym9keT4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULWVsZW1lbnRkZWNsIj48L2E+WzQ1XSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPmVsZW1lbnRkZWNsPC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPicmbHQ7IUVMRU1FTlQnIDxhIGhyZWY9IiNOVC1TIj5TPC9hPiA8YSBocmVmPSIjTlQtTmFtZSI+TmFtZTwvYT4gPGENCitocmVmPSIjTlQtUyI+UzwvYT4gPGEgaHJlZj0iI05ULWNvbnRlbnRzcGVjIj5jb250ZW50c3BlYzwvYT4gPGEgaHJlZj0iI05ULVMiPlM8L2E+Pw0KKyc+JzwvY29kZT48L3RkPg0KKzx0ZD48YSBocmVmPSIjRURVbmlxdWUiPltWQzogVW5pcXVlIEVsZW1lbnQgVHlwZSBEZWNsYXJhdGlvbl08L2E+PC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PGEgbmFtZT0iTlQtY29udGVudHNwZWMiPjwvYT5bNDZdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+Y29udGVudHNwZWM8L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+J0VNUFRZJyB8ICdBTlknIHwgPGEgaHJlZj0iI05ULU1peGVkIj5NaXhlZDwvYT4gfCA8YSBocmVmPSIjTlQtY2hpbGRyZW4iPmNoaWxkcmVuPC9hPiA8L2NvZGU+PC90ZD4NCis8L3RyPg0KKzwvdGJvZHk+PC90YWJsZT4gPHA+d2hlcmUgdGhlIDxhIGhyZWY9IiNOVC1OYW1lIj5OYW1lPC9hPiBnaXZlcyB0aGUgZWxlbWVudA0KK3R5cGUgYmVpbmcgZGVjbGFyZWQuPC9wPiA8ZGl2IGNsYXNzPSJjb25zdHJhaW50Ij48cCBjbGFzcz0icHJlZml4Ij48YSBuYW1lPSJFRFVuaXF1ZSI+PC9hPjxiPlZhbGlkaXR5DQorY29uc3RyYWludDogVW5pcXVlIEVsZW1lbnQgVHlwZSBEZWNsYXJhdGlvbjwvYj48L3A+PHA+Tm8gZWxlbWVudCB0eXBlIG1heQ0KK2JlIGRlY2xhcmVkIG1vcmUgdGhhbiBvbmNlLjwvcD4gPC9kaXY+IDxwPkV4YW1wbGVzIG9mIGVsZW1lbnQgdHlwZSBkZWNsYXJhdGlvbnM6PC9wPiA8dGFibGUNCitjbGFzcz0iZWciIHdpZHRoPSIxMDAlIiBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSI1IiBiZ2NvbG9yPSIjOTlmZmZmIj4NCis8dHI+DQorPHRkPjxwcmU+Jmx0OyFFTEVNRU5UIGJyIEVNUFRZPg0KKyZsdDshRUxFTUVOVCBwICgjUENEQVRBfGVtcGgpKiA+DQorJmx0OyFFTEVNRU5UICVuYW1lLnBhcmE7ICVjb250ZW50LnBhcmE7ID4NCismbHQ7IUVMRU1FTlQgY29udGFpbmVyIEFOWT48L3ByZT48L3RkPg0KKzwvdHI+DQorPC90YWJsZT4gPGRpdiBjbGFzcz0iZGl2MyI+IDxoND48YSBuYW1lPSJzZWMtZWxlbWVudC1jb250ZW50Ij48L2E+My4yLjEgRWxlbWVudA0KK0NvbnRlbnQ8L2g0PiA8cD5bPGEgdGl0bGU9IkVsZW1lbnQgY29udGVudCIgbmFtZT0iZHQtZWxlbWNvbnRlbnQiPkRlZmluaXRpb248L2E+Og0KK0FuIGVsZW1lbnQgPGEgdGl0bGU9IlN0YXJ0LVRhZyIgaHJlZj0iI2R0LXN0YWciPnR5cGU8L2E+IGhhcyA8Yj5lbGVtZW50IGNvbnRlbnQ8L2I+DQord2hlbiBlbGVtZW50cyBvZiB0aGF0IHR5cGUgbXVzdCBjb250YWluIG9ubHkgPGEgdGl0bGU9IlBhcmVudC9DaGlsZCIgaHJlZj0iI2R0LXBhcmVudGNoaWxkIj5jaGlsZDwvYT4NCitlbGVtZW50cyAobm8gY2hhcmFjdGVyIGRhdGEpLCBvcHRpb25hbGx5IHNlcGFyYXRlZCBieSB3aGl0ZSBzcGFjZSAoY2hhcmFjdGVycw0KK21hdGNoaW5nIHRoZSBub250ZXJtaW5hbCA8YSBocmVmPSIjTlQtUyI+UzwvYT4pLl1bPGEgdGl0bGU9IkNvbnRlbnQgbW9kZWwiDQorbmFtZT0iZHQtY29udGVudC1tb2RlbCI+RGVmaW5pdGlvbjwvYT46IEluIHRoaXMgY2FzZSwgdGhlIGNvbnN0cmFpbnQgaW5jbHVkZXMNCithIDxiPmNvbnRlbnQgbW9kZWw8L2I+LCBhIHNpbXBsZSBncmFtbWFyIGdvdmVybmluZyB0aGUgYWxsb3dlZCB0eXBlcyBvZiB0aGUNCitjaGlsZCBlbGVtZW50cyBhbmQgdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXJlIGFsbG93ZWQgdG8gYXBwZWFyLl0gVGhlIGdyYW1tYXINCitpcyBidWlsdCBvbiBjb250ZW50IHBhcnRpY2xlcyAoPGEgaHJlZj0iI05ULWNwIj5jcDwvYT5zKSwgd2hpY2ggY29uc2lzdCBvZg0KK25hbWVzLCBjaG9pY2UgbGlzdHMgb2YgY29udGVudCBwYXJ0aWNsZXMsIG9yIHNlcXVlbmNlIGxpc3RzIG9mIGNvbnRlbnQgcGFydGljbGVzOjwvcD4gPGg1PkVsZW1lbnQtY29udGVudA0KK01vZGVsczwvaDU+PHRhYmxlIGNsYXNzPSJzY3JhcCI+PHRib2R5Pg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PGEgbmFtZT0iTlQtY2hpbGRyZW4iPjwvYT5bNDddJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+Y2hpbGRyZW48L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+KDxhIGhyZWY9IiNOVC1jaG9pY2UiPmNob2ljZTwvYT4gfCA8YSBocmVmPSIjTlQtc2VxIj5zZXE8L2E+KSAoJz8nDQorfCAnKicgfCAnKycpPzwvY29kZT48L3RkPg0KKzwvdHI+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1jcCI+PC9hPls0OF0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5jcDwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT4oPGEgaHJlZj0iI05ULU5hbWUiPk5hbWU8L2E+IHwgPGEgaHJlZj0iI05ULWNob2ljZSI+Y2hvaWNlPC9hPiB8IDxhDQoraHJlZj0iI05ULXNlcSI+c2VxPC9hPikgKCc/JyB8ICcqJyB8ICcrJyk/PC9jb2RlPjwvdGQ+DQorPC90cj4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULWNob2ljZSI+PC9hPls0OV0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5jaG9pY2U8L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+JygnIDxhIGhyZWY9IiNOVC1TIj5TPC9hPj8gPGEgaHJlZj0iI05ULWNwIj5jcDwvYT4gKCA8YSBocmVmPSIjTlQtUyI+UzwvYT4/DQorJ3wnIDxhIGhyZWY9IiNOVC1TIj5TPC9hPj8gPGEgaHJlZj0iI05ULWNwIj5jcDwvYT4gKSsgPGEgaHJlZj0iI05ULVMiPlM8L2E+Pw0KKycpJzwvY29kZT48L3RkPg0KKzx0ZD48aT4vKiAgKi88L2k+PC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PGk+LyogICovPC9pPjwvdGQ+DQorPC90cj4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjxhIGhyZWY9IiN2Yy1QRWluR3JvdXAiPltWQzogUHJvcGVyIEdyb3VwL1BFIE5lc3RpbmddPC9hPjwvdGQ+DQorPC90cj4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULXNlcSI+PC9hPls1MF0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5zZXE8L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+JygnIDxhIGhyZWY9IiNOVC1TIj5TPC9hPj8gPGEgaHJlZj0iI05ULWNwIj5jcDwvYT4gKCA8YSBocmVmPSIjTlQtUyI+UzwvYT4/DQorJywnIDxhIGhyZWY9IiNOVC1TIj5TPC9hPj8gPGEgaHJlZj0iI05ULWNwIj5jcDwvYT4gKSogPGEgaHJlZj0iI05ULVMiPlM8L2E+Pw0KKycpJzwvY29kZT48L3RkPg0KKzx0ZD48aT4vKiAgKi88L2k+PC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PGEgaHJlZj0iI3ZjLVBFaW5Hcm91cCI+W1ZDOiBQcm9wZXIgR3JvdXAvUEUgTmVzdGluZ108L2E+PC90ZD4NCis8L3RyPg0KKzwvdGJvZHk+PC90YWJsZT4gPHA+d2hlcmUgZWFjaCA8YSBocmVmPSIjTlQtTmFtZSI+TmFtZTwvYT4gaXMgdGhlIHR5cGUgb2YNCithbiBlbGVtZW50IHdoaWNoIG1heSBhcHBlYXIgYXMgYSA8YSB0aXRsZT0iUGFyZW50L0NoaWxkIiBocmVmPSIjZHQtcGFyZW50Y2hpbGQiPmNoaWxkPC9hPi4NCitBbnkgY29udGVudCBwYXJ0aWNsZSBpbiBhIGNob2ljZSBsaXN0IG1heSBhcHBlYXIgaW4gdGhlIDxhIHRpdGxlPSJFbGVtZW50IGNvbnRlbnQiDQoraHJlZj0iI2R0LWVsZW1jb250ZW50Ij5lbGVtZW50IGNvbnRlbnQ8L2E+IGF0IHRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgY2hvaWNlDQorbGlzdCBhcHBlYXJzIGluIHRoZSBncmFtbWFyOyBjb250ZW50IHBhcnRpY2xlcyBvY2N1cnJpbmcgaW4gYSBzZXF1ZW5jZSBsaXN0DQorbXVzdCBlYWNoIGFwcGVhciBpbiB0aGUgPGEgdGl0bGU9IkVsZW1lbnQgY29udGVudCIgaHJlZj0iI2R0LWVsZW1jb250ZW50Ij5lbGVtZW50DQorY29udGVudDwvYT4gaW4gdGhlIG9yZGVyIGdpdmVuIGluIHRoZSBsaXN0LiBUaGUgb3B0aW9uYWwgY2hhcmFjdGVyIGZvbGxvd2luZw0KK2EgbmFtZSBvciBsaXN0IGdvdmVybnMgd2hldGhlciB0aGUgZWxlbWVudCBvciB0aGUgY29udGVudCBwYXJ0aWNsZXMgaW4gdGhlDQorbGlzdCBtYXkgb2NjdXIgb25lIG9yIG1vcmUgKDxjb2RlPis8L2NvZGU+KSwgemVybyBvciBtb3JlICg8Y29kZT4qPC9jb2RlPiksDQorb3IgemVybyBvciBvbmUgdGltZXMgKDxjb2RlPj88L2NvZGU+KS4gVGhlIGFic2VuY2Ugb2Ygc3VjaCBhbiBvcGVyYXRvciBtZWFucw0KK3RoYXQgdGhlIGVsZW1lbnQgb3IgY29udGVudCBwYXJ0aWNsZSBtdXN0IGFwcGVhciBleGFjdGx5IG9uY2UuIFRoaXMgc3ludGF4DQorYW5kIG1lYW5pbmcgYXJlIGlkZW50aWNhbCB0byB0aG9zZSB1c2VkIGluIHRoZSBwcm9kdWN0aW9ucyBpbiB0aGlzIHNwZWNpZmljYXRpb24uPC9wPiA8cD5UaGUNCitjb250ZW50IG9mIGFuIGVsZW1lbnQgbWF0Y2hlcyBhIGNvbnRlbnQgbW9kZWwgaWYgYW5kIG9ubHkgaWYgaXQgaXMgcG9zc2libGUNCit0byB0cmFjZSBvdXQgYSBwYXRoIHRocm91Z2ggdGhlIGNvbnRlbnQgbW9kZWwsIG9iZXlpbmcgdGhlIHNlcXVlbmNlLCBjaG9pY2UsDQorYW5kIHJlcGV0aXRpb24gb3BlcmF0b3JzIGFuZCBtYXRjaGluZyBlYWNoIGVsZW1lbnQgaW4gdGhlIGNvbnRlbnQgYWdhaW5zdA0KK2FuIGVsZW1lbnQgdHlwZSBpbiB0aGUgY29udGVudCBtb2RlbC4gPGEgdGl0bGU9IkZvciBDb21wYXRpYmlsaXR5IiBocmVmPSIjZHQtY29tcGF0Ij5Gb3INCitjb21wYXRpYmlsaXR5PC9hPiwgaXQgaXMgYW4gZXJyb3IgaWYgYW4gZWxlbWVudCBpbiB0aGUgZG9jdW1lbnQgY2FuIG1hdGNoDQorbW9yZSB0aGFuIG9uZSBvY2N1cnJlbmNlIG9mIGFuIGVsZW1lbnQgdHlwZSBpbiB0aGUgY29udGVudCBtb2RlbC4gRm9yIG1vcmUNCitpbmZvcm1hdGlvbiwgc2VlIDxhIGhyZWY9IiNkZXRlcm1pbmlzbSI+PGI+RSBEZXRlcm1pbmlzdGljIENvbnRlbnQgTW9kZWxzPC9iPjwvYT4uPC9wPg0KKyAgPGRpdiBjbGFzcz0iY29uc3RyYWludCI+PHAgY2xhc3M9InByZWZpeCI+PGEgbmFtZT0idmMtUEVpbkdyb3VwIj48L2E+PGI+VmFsaWRpdHkNCitjb25zdHJhaW50OiBQcm9wZXIgR3JvdXAvUEUgTmVzdGluZzwvYj48L3A+PHA+UGFyYW1ldGVyLWVudGl0eSA8YSB0aXRsZT0iUmVwbGFjZW1lbnQgVGV4dCINCitocmVmPSIjZHQtcmVwbHRleHQiPnJlcGxhY2VtZW50IHRleHQ8L2E+IG11c3QgYmUgcHJvcGVybHkgbmVzdGVkIHdpdGggcGFyZW50aGVzaXplZA0KK2dyb3Vwcy4gVGhhdCBpcyB0byBzYXksIGlmIGVpdGhlciBvZiB0aGUgb3BlbmluZyBvciBjbG9zaW5nIHBhcmVudGhlc2VzIGluDQorYSA8YSBocmVmPSIjTlQtY2hvaWNlIj5jaG9pY2U8L2E+LCA8YSBocmVmPSIjTlQtc2VxIj5zZXE8L2E+LCBvciA8YSBocmVmPSIjTlQtTWl4ZWQiPk1peGVkPC9hPg0KK2NvbnN0cnVjdCBpcyBjb250YWluZWQgaW4gdGhlIHJlcGxhY2VtZW50IHRleHQgZm9yIGEgPGEgdGl0bGU9IlBhcmFtZXRlci1lbnRpdHkgcmVmZXJlbmNlIg0KK2hyZWY9IiNkdC1QRVJlZiI+cGFyYW1ldGVyIGVudGl0eTwvYT4sIGJvdGggbXVzdCBiZSBjb250YWluZWQgaW4gdGhlIHNhbWUNCityZXBsYWNlbWVudCB0ZXh0LjwvcD4gPHA+PGEgdGl0bGU9IkZvciBpbnRlcm9wZXJhYmlsaXR5IiBocmVmPSIjZHQtaW50ZXJvcCI+Rm9yDQoraW50ZXJvcGVyYWJpbGl0eTwvYT4sIGlmIGEgcGFyYW1ldGVyLWVudGl0eSByZWZlcmVuY2UgYXBwZWFycyBpbiBhIDxhIGhyZWY9IiNOVC1jaG9pY2UiPmNob2ljZTwvYT4sIDxhDQoraHJlZj0iI05ULXNlcSI+c2VxPC9hPiwgb3IgPGEgaHJlZj0iI05ULU1peGVkIj5NaXhlZDwvYT4gY29uc3RydWN0LCBpdHMgcmVwbGFjZW1lbnQNCit0ZXh0IHNob3VsZCBjb250YWluIGF0IGxlYXN0IG9uZSBub24tYmxhbmsgY2hhcmFjdGVyLCBhbmQgbmVpdGhlciB0aGUgZmlyc3QNCitub3IgbGFzdCBub24tYmxhbmsgY2hhcmFjdGVyIG9mIHRoZSByZXBsYWNlbWVudCB0ZXh0IHNob3VsZCBiZSBhIGNvbm5lY3Rvcg0KKyg8Y29kZT58PC9jb2RlPiBvciA8Y29kZT4sPC9jb2RlPikuPC9wPiA8L2Rpdj4gPHA+RXhhbXBsZXMgb2YgZWxlbWVudC1jb250ZW50DQorbW9kZWxzOjwvcD4gPHRhYmxlIGNsYXNzPSJlZyIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMSIgY2VsbHBhZGRpbmc9IjUiIGJnY29sb3I9IiM5OWZmZmYiPg0KKzx0cj4NCis8dGQ+PHByZT4mbHQ7IUVMRU1FTlQgc3BlYyAoZnJvbnQsIGJvZHksIGJhY2s/KT4NCismbHQ7IUVMRU1FTlQgZGl2MSAoaGVhZCwgKHAgfCBsaXN0IHwgbm90ZSkqLCBkaXYyKik+DQorJmx0OyFFTEVNRU5UIGRpY3Rpb25hcnktYm9keSAoJWRpdi5taXg7IHwgJWRpY3QubWl4OykqPjwvcHJlPjwvdGQ+DQorPC90cj4NCis8L3RhYmxlPiA8L2Rpdj4gPGRpdiBjbGFzcz0iZGl2MyI+IDxoND48YSBuYW1lPSJzZWMtbWl4ZWQtY29udGVudCI+PC9hPjMuMi4yDQorTWl4ZWQgQ29udGVudDwvaDQ+IDxwPls8YSB0aXRsZT0iTWl4ZWQgQ29udGVudCIgbmFtZT0iZHQtbWl4ZWQiPkRlZmluaXRpb248L2E+Og0KK0FuIGVsZW1lbnQgPGEgdGl0bGU9IlN0YXJ0LVRhZyIgaHJlZj0iI2R0LXN0YWciPnR5cGU8L2E+IGhhcyA8Yj5taXhlZCBjb250ZW50PC9iPg0KK3doZW4gZWxlbWVudHMgb2YgdGhhdCB0eXBlIG1heSBjb250YWluIGNoYXJhY3RlciBkYXRhLCBvcHRpb25hbGx5IGludGVyc3BlcnNlZA0KK3dpdGggPGEgdGl0bGU9IlBhcmVudC9DaGlsZCIgaHJlZj0iI2R0LXBhcmVudGNoaWxkIj5jaGlsZDwvYT4gZWxlbWVudHMuXSBJbg0KK3RoaXMgY2FzZSwgdGhlIHR5cGVzIG9mIHRoZSBjaGlsZCBlbGVtZW50cyBtYXkgYmUgY29uc3RyYWluZWQsIGJ1dCBub3QgdGhlaXINCitvcmRlciBvciB0aGVpciBudW1iZXIgb2Ygb2NjdXJyZW5jZXM6PC9wPiA8aDU+TWl4ZWQtY29udGVudCBEZWNsYXJhdGlvbjwvaDU+PHRhYmxlDQorY2xhc3M9InNjcmFwIj48dGJvZHk+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1NaXhlZCI+PC9hPls1MV0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5NaXhlZDwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT4nKCcgPGEgaHJlZj0iI05ULVMiPlM8L2E+PyAnI1BDREFUQScgKDxhIGhyZWY9IiNOVC1TIj5TPC9hPj8gJ3wnIDxhDQoraHJlZj0iI05ULVMiPlM8L2E+PyA8YSBocmVmPSIjTlQtTmFtZSI+TmFtZTwvYT4pKiA8YSBocmVmPSIjTlQtUyI+UzwvYT4/ICcpKicgPC9jb2RlPjwvdGQ+DQorPC90cj4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjxjb2RlPnwgJygnIDxhIGhyZWY9IiNOVC1TIj5TPC9hPj8gJyNQQ0RBVEEnIDxhIGhyZWY9IiNOVC1TIj5TPC9hPj8gJyknIDwvY29kZT48L3RkPg0KKzx0ZD48YSBocmVmPSIjdmMtUEVpbkdyb3VwIj5bVkM6IFByb3BlciBHcm91cC9QRSBOZXN0aW5nXTwvYT48L3RkPg0KKzwvdHI+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48YSBocmVmPSIjdmMtTWl4ZWRDaGlsZHJlblVuaXF1ZSI+W1ZDOiBObyBEdXBsaWNhdGUgVHlwZXNdPC9hPjwvdGQ+DQorPC90cj4NCis8L3Rib2R5PjwvdGFibGU+IDxwPndoZXJlIHRoZSA8YSBocmVmPSIjTlQtTmFtZSI+TmFtZTwvYT5zIGdpdmUgdGhlIHR5cGVzDQorb2YgZWxlbWVudHMgdGhhdCBtYXkgYXBwZWFyIGFzIGNoaWxkcmVuLiBUaGUga2V5d29yZCA8Yj4jUENEQVRBPC9iPiBkZXJpdmVzDQoraGlzdG9yaWNhbGx5IGZyb20gdGhlIHRlcm0gInBhcnNlZCBjaGFyYWN0ZXIgZGF0YS4iPC9wPiA8ZGl2IGNsYXNzPSJjb25zdHJhaW50Ij48cA0KK2NsYXNzPSJwcmVmaXgiPjxhIG5hbWU9InZjLU1peGVkQ2hpbGRyZW5VbmlxdWUiPjwvYT48Yj5WYWxpZGl0eSBjb25zdHJhaW50Og0KK05vIER1cGxpY2F0ZSBUeXBlczwvYj48L3A+PHA+VGhlIHNhbWUgbmFtZSBtdXN0IG5vdCBhcHBlYXIgbW9yZSB0aGFuIG9uY2UNCitpbiBhIHNpbmdsZSBtaXhlZC1jb250ZW50IGRlY2xhcmF0aW9uLjwvcD4gPC9kaXY+IDxwPkV4YW1wbGVzIG9mIG1peGVkIGNvbnRlbnQNCitkZWNsYXJhdGlvbnM6PC9wPiA8dGFibGUgY2xhc3M9ImVnIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIxIiBjZWxscGFkZGluZz0iNSINCitiZ2NvbG9yPSIjOTlmZmZmIj4NCis8dHI+DQorPHRkPjxwcmU+Jmx0OyFFTEVNRU5UIHAgKCNQQ0RBVEF8YXx1bHxifGl8ZW0pKj4NCismbHQ7IUVMRU1FTlQgcCAoI1BDREFUQSB8ICVmb250OyB8ICVwaHJhc2U7IHwgJXNwZWNpYWw7IHwgJWZvcm07KSogPg0KKyZsdDshRUxFTUVOVCBiICgjUENEQVRBKT48L3ByZT48L3RkPg0KKzwvdHI+DQorPC90YWJsZT4gPC9kaXY+IDwvZGl2PiA8ZGl2IGNsYXNzPSJkaXYyIj4gPGgzPjxhIG5hbWU9ImF0dGRlY2xzIj48L2E+My4zIEF0dHJpYnV0ZS1MaXN0DQorRGVjbGFyYXRpb25zPC9oMz4gPHA+PGEgdGl0bGU9IkF0dHJpYnV0ZSIgaHJlZj0iI2R0LWF0dHIiPkF0dHJpYnV0ZXM8L2E+IGFyZQ0KK3VzZWQgdG8gYXNzb2NpYXRlIG5hbWUtdmFsdWUgcGFpcnMgd2l0aCA8YSB0aXRsZT0iRWxlbWVudCIgaHJlZj0iI2R0LWVsZW1lbnQiPmVsZW1lbnRzPC9hPi4NCitBdHRyaWJ1dGUgc3BlY2lmaWNhdGlvbnMgbWF5IGFwcGVhciBvbmx5IHdpdGhpbiA8YSB0aXRsZT0iU3RhcnQtVGFnIiBocmVmPSIjZHQtc3RhZyI+c3RhcnQtdGFnczwvYT4NCithbmQgPGEgdGl0bGU9ImVtcHR5LWVsZW1lbnQgdGFnIiBocmVmPSIjZHQtZWV0YWciPmVtcHR5LWVsZW1lbnQgdGFnczwvYT47DQordGh1cywgdGhlIHByb2R1Y3Rpb25zIHVzZWQgdG8gcmVjb2duaXplIHRoZW0gYXBwZWFyIGluIDxhIGhyZWY9IiNzZWMtc3RhcnR0YWdzIj48Yj4zLjENCitTdGFydC1UYWdzLCBFbmQtVGFncywgYW5kIEVtcHR5LUVsZW1lbnQgVGFnczwvYj48L2E+LiBBdHRyaWJ1dGUtbGlzdCBkZWNsYXJhdGlvbnMNCittYXkgYmUgdXNlZDo8L3A+IDx1bD4NCis8bGk+PHA+VG8gZGVmaW5lIHRoZSBzZXQgb2YgYXR0cmlidXRlcyBwZXJ0YWluaW5nIHRvIGEgZ2l2ZW4gZWxlbWVudCB0eXBlLjwvcD4gPC9saT4NCis8bGk+PHA+VG8gZXN0YWJsaXNoIHR5cGUgY29uc3RyYWludHMgZm9yIHRoZXNlIGF0dHJpYnV0ZXMuPC9wPjwvbGk+DQorPGxpPjxwPlRvIHByb3ZpZGUgPGEgdGl0bGU9IkF0dHJpYnV0ZSBEZWZhdWx0IiBocmVmPSIjZHQtZGVmYXVsdCI+ZGVmYXVsdA0KK3ZhbHVlczwvYT4gZm9yIGF0dHJpYnV0ZXMuPC9wPjwvbGk+DQorPC91bD4gPHA+WzxhIHRpdGxlPSJBdHRyaWJ1dGUtTGlzdCBEZWNsYXJhdGlvbiIgbmFtZT0iZHQtYXR0ZGVjbCI+RGVmaW5pdGlvbjwvYT46DQorIDxiPkF0dHJpYnV0ZS1saXN0IGRlY2xhcmF0aW9uczwvYj4gc3BlY2lmeSB0aGUgbmFtZSwgZGF0YSB0eXBlLCBhbmQgZGVmYXVsdA0KK3ZhbHVlIChpZiBhbnkpIG9mIGVhY2ggYXR0cmlidXRlIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGVsZW1lbnQgdHlwZTpdPC9wPiA8aDU+QXR0cmlidXRlLWxpc3QNCitEZWNsYXJhdGlvbjwvaDU+PHRhYmxlIGNsYXNzPSJzY3JhcCI+PHRib2R5Pg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PGEgbmFtZT0iTlQtQXR0bGlzdERlY2wiPjwvYT5bNTJdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+QXR0bGlzdERlY2w8L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+JyZsdDshQVRUTElTVCcgPGEgaHJlZj0iI05ULVMiPlM8L2E+IDxhIGhyZWY9IiNOVC1OYW1lIj5OYW1lPC9hPiA8YQ0KK2hyZWY9IiNOVC1BdHREZWYiPkF0dERlZjwvYT4qIDxhIGhyZWY9IiNOVC1TIj5TPC9hPj8gJz4nPC9jb2RlPjwvdGQ+DQorPC90cj4NCis8L3Rib2R5Pjx0Ym9keT4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULUF0dERlZiI+PC9hPls1M10mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5BdHREZWY8L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+PGEgaHJlZj0iI05ULVMiPlM8L2E+IDxhIGhyZWY9IiNOVC1OYW1lIj5OYW1lPC9hPiA8YSBocmVmPSIjTlQtUyI+UzwvYT4gPGENCitocmVmPSIjTlQtQXR0VHlwZSI+QXR0VHlwZTwvYT4gPGEgaHJlZj0iI05ULVMiPlM8L2E+IDxhIGhyZWY9IiNOVC1EZWZhdWx0RGVjbCI+RGVmYXVsdERlY2w8L2E+PC9jb2RlPjwvdGQ+DQorPC90cj4NCis8L3Rib2R5PjwvdGFibGU+IDxwPlRoZSA8YSBocmVmPSIjTlQtTmFtZSI+TmFtZTwvYT4gaW4gdGhlIDxhIGhyZWY9IiNOVC1BdHRsaXN0RGVjbCI+QXR0bGlzdERlY2w8L2E+DQorcnVsZSBpcyB0aGUgdHlwZSBvZiBhbiBlbGVtZW50LiBBdCB1c2VyIG9wdGlvbiwgYW4gWE1MIHByb2Nlc3NvciBtYXkgaXNzdWUNCithIHdhcm5pbmcgaWYgYXR0cmlidXRlcyBhcmUgZGVjbGFyZWQgZm9yIGFuIGVsZW1lbnQgdHlwZSBub3QgaXRzZWxmIGRlY2xhcmVkLA0KK2J1dCB0aGlzIGlzIG5vdCBhbiBlcnJvci4gVGhlIDxhIGhyZWY9IiNOVC1OYW1lIj5OYW1lPC9hPiBpbiB0aGUgPGEgaHJlZj0iI05ULUF0dERlZiI+QXR0RGVmPC9hPg0KK3J1bGUgaXMgdGhlIG5hbWUgb2YgdGhlIGF0dHJpYnV0ZS48L3A+IDxwPldoZW4gbW9yZSB0aGFuIG9uZSA8YSBocmVmPSIjTlQtQXR0bGlzdERlY2wiPkF0dGxpc3REZWNsPC9hPg0KK2lzIHByb3ZpZGVkIGZvciBhIGdpdmVuIGVsZW1lbnQgdHlwZSwgdGhlIGNvbnRlbnRzIG9mIGFsbCB0aG9zZSBwcm92aWRlZCBhcmUNCittZXJnZWQuIFdoZW4gbW9yZSB0aGFuIG9uZSBkZWZpbml0aW9uIGlzIHByb3ZpZGVkIGZvciB0aGUgc2FtZSBhdHRyaWJ1dGUgb2YNCithIGdpdmVuIGVsZW1lbnQgdHlwZSwgdGhlIGZpcnN0IGRlY2xhcmF0aW9uIGlzIGJpbmRpbmcgYW5kIGxhdGVyIGRlY2xhcmF0aW9ucw0KK2FyZSBpZ25vcmVkLiA8YSB0aXRsZT0iRm9yIGludGVyb3BlcmFiaWxpdHkiIGhyZWY9IiNkdC1pbnRlcm9wIj5Gb3IgaW50ZXJvcGVyYWJpbGl0eSw8L2E+DQord3JpdGVycyBvZiBEVERzIG1heSBjaG9vc2UgdG8gcHJvdmlkZSBhdCBtb3N0IG9uZSBhdHRyaWJ1dGUtbGlzdCBkZWNsYXJhdGlvbg0KK2ZvciBhIGdpdmVuIGVsZW1lbnQgdHlwZSwgYXQgbW9zdCBvbmUgYXR0cmlidXRlIGRlZmluaXRpb24gZm9yIGEgZ2l2ZW4gYXR0cmlidXRlDQorbmFtZSBpbiBhbiBhdHRyaWJ1dGUtbGlzdCBkZWNsYXJhdGlvbiwgYW5kIGF0IGxlYXN0IG9uZSBhdHRyaWJ1dGUgZGVmaW5pdGlvbg0KK2luIGVhY2ggYXR0cmlidXRlLWxpc3QgZGVjbGFyYXRpb24uIEZvciBpbnRlcm9wZXJhYmlsaXR5LCBhbiBYTUwgcHJvY2Vzc29yDQorbWF5IGF0IHVzZXIgb3B0aW9uIGlzc3VlIGEgd2FybmluZyB3aGVuIG1vcmUgdGhhbiBvbmUgYXR0cmlidXRlLWxpc3QgZGVjbGFyYXRpb24NCitpcyBwcm92aWRlZCBmb3IgYSBnaXZlbiBlbGVtZW50IHR5cGUsIG9yIG1vcmUgdGhhbiBvbmUgYXR0cmlidXRlIGRlZmluaXRpb24NCitpcyBwcm92aWRlZCBmb3IgYSBnaXZlbiBhdHRyaWJ1dGUsIGJ1dCB0aGlzIGlzIG5vdCBhbiBlcnJvci48L3A+IDxkaXYgY2xhc3M9ImRpdjMiPiA8aDQ+PGENCituYW1lPSJzZWMtYXR0cmlidXRlLXR5cGVzIj48L2E+My4zLjEgQXR0cmlidXRlIFR5cGVzPC9oND4gPHA+WE1MIGF0dHJpYnV0ZQ0KK3R5cGVzIGFyZSBvZiB0aHJlZSBraW5kczogYSBzdHJpbmcgdHlwZSwgYSBzZXQgb2YgdG9rZW5pemVkIHR5cGVzLCBhbmQgZW51bWVyYXRlZA0KK3R5cGVzLiBUaGUgc3RyaW5nIHR5cGUgbWF5IHRha2UgYW55IGxpdGVyYWwgc3RyaW5nIGFzIGEgdmFsdWU7IHRoZSB0b2tlbml6ZWQNCit0eXBlcyBoYXZlIHZhcnlpbmcgbGV4aWNhbCBhbmQgc2VtYW50aWMgY29uc3RyYWludHMuIFRoZSB2YWxpZGl0eSBjb25zdHJhaW50cw0KK25vdGVkIGluIHRoZSBncmFtbWFyIGFyZSBhcHBsaWVkIGFmdGVyIHRoZSBhdHRyaWJ1dGUgdmFsdWUgaGFzIGJlZW4gbm9ybWFsaXplZA0KK2FzIGRlc2NyaWJlZCBpbiA8YSBocmVmPSIjYXR0ZGVjbHMiPjxiPjMuMyBBdHRyaWJ1dGUtTGlzdCBEZWNsYXJhdGlvbnM8L2I+PC9hPi48L3A+IDxoNT5BdHRyaWJ1dGUNCitUeXBlczwvaDU+PHRhYmxlIGNsYXNzPSJzY3JhcCI+PHRib2R5Pg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PGEgbmFtZT0iTlQtQXR0VHlwZSI+PC9hPls1NF0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5BdHRUeXBlPC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPjxhIGhyZWY9IiNOVC1TdHJpbmdUeXBlIj5TdHJpbmdUeXBlPC9hPiB8IDxhIGhyZWY9IiNOVC1Ub2tlbml6ZWRUeXBlIj5Ub2tlbml6ZWRUeXBlPC9hPg0KK3wgPGEgaHJlZj0iI05ULUVudW1lcmF0ZWRUeXBlIj5FbnVtZXJhdGVkVHlwZTwvYT4gPC9jb2RlPjwvdGQ+DQorPC90cj4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULVN0cmluZ1R5cGUiPjwvYT5bNTVdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+U3RyaW5nVHlwZTwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT4nQ0RBVEEnPC9jb2RlPjwvdGQ+DQorPC90cj4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULVRva2VuaXplZFR5cGUiPjwvYT5bNTZdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+VG9rZW5pemVkVHlwZTwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT4nSUQnPC9jb2RlPjwvdGQ+DQorPHRkPjxhIGhyZWY9IiNpZCI+W1ZDOiBJRF08L2E+PC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PGEgaHJlZj0iI29uZS1pZC1wZXItZWwiPltWQzogT25lIElEIHBlciBFbGVtZW50IFR5cGVdPC9hPjwvdGQ+DQorPC90cj4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjxhIGhyZWY9IiNpZC1kZWZhdWx0Ij5bVkM6IElEIEF0dHJpYnV0ZSBEZWZhdWx0XTwvYT48L3RkPg0KKzwvdHI+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48Y29kZT58ICdJRFJFRic8L2NvZGU+PC90ZD4NCis8dGQ+PGEgaHJlZj0iI2lkcmVmIj5bVkM6IElEUkVGXTwvYT48L3RkPg0KKzwvdHI+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48Y29kZT58ICdJRFJFRlMnPC9jb2RlPjwvdGQ+DQorPHRkPjxhIGhyZWY9IiNpZHJlZiI+W1ZDOiBJRFJFRl08L2E+PC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PGNvZGU+fCAnRU5USVRZJzwvY29kZT48L3RkPg0KKzx0ZD48YSBocmVmPSIjZW50bmFtZSI+W1ZDOiBFbnRpdHkgTmFtZV08L2E+PC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PGNvZGU+fCAnRU5USVRJRVMnPC9jb2RlPjwvdGQ+DQorPHRkPjxhIGhyZWY9IiNlbnRuYW1lIj5bVkM6IEVudGl0eSBOYW1lXTwvYT48L3RkPg0KKzwvdHI+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48Y29kZT58ICdOTVRPS0VOJzwvY29kZT48L3RkPg0KKzx0ZD48YSBocmVmPSIjbm10b2siPltWQzogTmFtZSBUb2tlbl08L2E+PC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PGNvZGU+fCAnTk1UT0tFTlMnPC9jb2RlPjwvdGQ+DQorPHRkPjxhIGhyZWY9IiNubXRvayI+W1ZDOiBOYW1lIFRva2VuXTwvYT48L3RkPg0KKzwvdHI+DQorPC90Ym9keT48L3RhYmxlPiA8ZGl2IGNsYXNzPSJjb25zdHJhaW50Ij48cCBjbGFzcz0icHJlZml4Ij48YSBuYW1lPSJpZCI+PC9hPjxiPlZhbGlkaXR5DQorY29uc3RyYWludDogSUQ8L2I+PC9wPjxwPlZhbHVlcyBvZiB0eXBlIDxiPklEPC9iPiBtdXN0IG1hdGNoIHRoZSA8YSBocmVmPSIjTlQtTmFtZSI+TmFtZTwvYT4NCitwcm9kdWN0aW9uLiBBIG5hbWUgbXVzdCBub3QgYXBwZWFyIG1vcmUgdGhhbiBvbmNlIGluIGFuIFhNTCBkb2N1bWVudCBhcyBhDQordmFsdWUgb2YgdGhpcyB0eXBlOyBpLmUuLCBJRCB2YWx1ZXMgbXVzdCB1bmlxdWVseSBpZGVudGlmeSB0aGUgZWxlbWVudHMgd2hpY2gNCitiZWFyIHRoZW0uPC9wPiA8L2Rpdj4gPGRpdiBjbGFzcz0iY29uc3RyYWludCI+PHAgY2xhc3M9InByZWZpeCI+PGEgbmFtZT0ib25lLWlkLXBlci1lbCI+PC9hPjxiPlZhbGlkaXR5DQorY29uc3RyYWludDogT25lIElEIHBlciBFbGVtZW50IFR5cGU8L2I+PC9wPjxwPk5vIGVsZW1lbnQgdHlwZSBtYXkgaGF2ZSBtb3JlDQordGhhbiBvbmUgSUQgYXR0cmlidXRlIHNwZWNpZmllZC48L3A+IDwvZGl2PiA8ZGl2IGNsYXNzPSJjb25zdHJhaW50Ij48cCBjbGFzcz0icHJlZml4Ij48YQ0KK25hbWU9ImlkLWRlZmF1bHQiPjwvYT48Yj5WYWxpZGl0eSBjb25zdHJhaW50OiBJRCBBdHRyaWJ1dGUgRGVmYXVsdDwvYj48L3A+PHA+QW4NCitJRCBhdHRyaWJ1dGUgbXVzdCBoYXZlIGEgZGVjbGFyZWQgZGVmYXVsdCBvZiA8Yj4jSU1QTElFRDwvYj4gb3IgPGI+I1JFUVVJUkVEPC9iPi48L3A+IDwvZGl2PiA8ZGl2DQorY2xhc3M9ImNvbnN0cmFpbnQiPjxwIGNsYXNzPSJwcmVmaXgiPjxhIG5hbWU9ImlkcmVmIj48L2E+PGI+VmFsaWRpdHkgY29uc3RyYWludDoNCitJRFJFRjwvYj48L3A+PHA+VmFsdWVzIG9mIHR5cGUgPGI+SURSRUY8L2I+IG11c3QgbWF0Y2ggdGhlIDxhIGhyZWY9IiNOVC1OYW1lIj5OYW1lPC9hPg0KK3Byb2R1Y3Rpb24sIGFuZCB2YWx1ZXMgb2YgdHlwZSA8Yj5JRFJFRlM8L2I+IG11c3QgbWF0Y2ggPGEgaHJlZj0iI05ULU5hbWVzIj5OYW1lczwvYT47DQorZWFjaCA8YSBocmVmPSIjTlQtTmFtZSI+TmFtZTwvYT4gbXVzdCBtYXRjaCB0aGUgdmFsdWUgb2YgYW4gSUQgYXR0cmlidXRlIG9uDQorc29tZSBlbGVtZW50IGluIHRoZSBYTUwgZG9jdW1lbnQ7IGkuZS4gPGI+SURSRUY8L2I+IHZhbHVlcyBtdXN0IG1hdGNoIHRoZQ0KK3ZhbHVlIG9mIHNvbWUgSUQgYXR0cmlidXRlLjwvcD4gPC9kaXY+IDxkaXYgY2xhc3M9ImNvbnN0cmFpbnQiPjxwIGNsYXNzPSJwcmVmaXgiPjxhDQorbmFtZT0iZW50bmFtZSI+PC9hPjxiPlZhbGlkaXR5IGNvbnN0cmFpbnQ6IEVudGl0eSBOYW1lPC9iPjwvcD48cD5WYWx1ZXMgb2YNCit0eXBlIDxiPkVOVElUWTwvYj4gbXVzdCBtYXRjaCB0aGUgPGEgaHJlZj0iI05ULU5hbWUiPk5hbWU8L2E+IHByb2R1Y3Rpb24sDQordmFsdWVzIG9mIHR5cGUgPGI+RU5USVRJRVM8L2I+IG11c3QgbWF0Y2ggPGEgaHJlZj0iI05ULU5hbWVzIj5OYW1lczwvYT47IGVhY2ggPGENCitocmVmPSIjTlQtTmFtZSI+TmFtZTwvYT4gbXVzdCBtYXRjaCB0aGUgbmFtZSBvZiBhbiA8YSB0aXRsZT0iVW5wYXJzZWQgRW50aXR5Ig0KK2hyZWY9IiNkdC11bnBhcnNlZCI+dW5wYXJzZWQgZW50aXR5PC9hPiBkZWNsYXJlZCBpbiB0aGUgPGEgdGl0bGU9IkRvY3VtZW50IFR5cGUgRGVjbGFyYXRpb24iDQoraHJlZj0iI2R0LWRvY3R5cGUiPkRURDwvYT4uPC9wPiA8L2Rpdj4gPGRpdiBjbGFzcz0iY29uc3RyYWludCI+PHAgY2xhc3M9InByZWZpeCI+PGENCituYW1lPSJubXRvayI+PC9hPjxiPlZhbGlkaXR5IGNvbnN0cmFpbnQ6IE5hbWUgVG9rZW48L2I+PC9wPjxwPlZhbHVlcyBvZiB0eXBlIDxiPk5NVE9LRU48L2I+DQorbXVzdCBtYXRjaCB0aGUgPGEgaHJlZj0iI05ULU5tdG9rZW4iPk5tdG9rZW48L2E+IHByb2R1Y3Rpb247IHZhbHVlcyBvZiB0eXBlIDxiPk5NVE9LRU5TPC9iPg0KK211c3QgbWF0Y2ggPGEgdGl0bGU9IiIgaHJlZj0iI05ULU5tdG9rZW5zIj5ObXRva2VuczwvYT4uPC9wPiA8L2Rpdj4gIDxwPls8YQ0KK3RpdGxlPSJFbnVtZXJhdGVkIEF0dHJpYnV0ZSBWYWx1ZXMiIG5hbWU9ImR0LWVudW1lcmF0ZWQiPkRlZmluaXRpb248L2E+OiA8Yj5FbnVtZXJhdGVkDQorYXR0cmlidXRlczwvYj4gY2FuIHRha2Ugb25lIG9mIGEgbGlzdCBvZiB2YWx1ZXMgcHJvdmlkZWQgaW4gdGhlIGRlY2xhcmF0aW9uXS4NCitUaGVyZSBhcmUgdHdvIGtpbmRzIG9mIGVudW1lcmF0ZWQgdHlwZXM6PC9wPiA8aDU+RW51bWVyYXRlZCBBdHRyaWJ1dGUgVHlwZXM8L2g1Pjx0YWJsZQ0KK2NsYXNzPSJzY3JhcCI+PHRib2R5Pg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PGEgbmFtZT0iTlQtRW51bWVyYXRlZFR5cGUiPjwvYT5bNTddJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+RW51bWVyYXRlZFR5cGU8L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+PGEgaHJlZj0iI05ULU5vdGF0aW9uVHlwZSI+Tm90YXRpb25UeXBlPC9hPiB8IDxhIGhyZWY9IiNOVC1FbnVtZXJhdGlvbiI+RW51bWVyYXRpb248L2E+IDwvY29kZT48L3RkPg0KKzwvdHI+DQorPC90Ym9keT48dGJvZHk+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1Ob3RhdGlvblR5cGUiPjwvYT5bNThdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+Tm90YXRpb25UeXBlPC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPidOT1RBVElPTicgPGEgaHJlZj0iI05ULVMiPlM8L2E+ICcoJyA8YSBocmVmPSIjTlQtUyI+UzwvYT4/IDxhIGhyZWY9IiNOVC1OYW1lIj5OYW1lPC9hPg0KKyg8YSBocmVmPSIjTlQtUyI+UzwvYT4/ICd8JyA8YSBocmVmPSIjTlQtUyI+UzwvYT4/IDxhIGhyZWY9IiNOVC1OYW1lIj5OYW1lPC9hPikqIDxhDQoraHJlZj0iI05ULVMiPlM8L2E+PyAnKScgPC9jb2RlPjwvdGQ+DQorPHRkPjxhIGhyZWY9IiNub3RhdG4iPltWQzogTm90YXRpb24gQXR0cmlidXRlc108L2E+PC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PGEgaHJlZj0iI09uZU5vdGF0aW9uUGVyIj5bVkM6IE9uZSBOb3RhdGlvbiBQZXIgRWxlbWVudCBUeXBlXTwvYT48L3RkPg0KKzwvdHI+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48YSBocmVmPSIjTm9Ob3RhdGlvbkVtcHR5Ij5bVkM6IE5vIE5vdGF0aW9uIG9uIEVtcHR5IEVsZW1lbnRdPC9hPjwvdGQ+DQorPC90cj4NCis8L3Rib2R5Pjx0Ym9keT4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULUVudW1lcmF0aW9uIj48L2E+WzU5XSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPkVudW1lcmF0aW9uPC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPicoJyA8YSBocmVmPSIjTlQtUyI+UzwvYT4/IDxhIGhyZWY9IiNOVC1ObXRva2VuIj5ObXRva2VuPC9hPiAoPGENCitocmVmPSIjTlQtUyI+UzwvYT4/ICd8JyA8YSBocmVmPSIjTlQtUyI+UzwvYT4/IDxhIGhyZWY9IiNOVC1ObXRva2VuIj5ObXRva2VuPC9hPikqIDxhDQoraHJlZj0iI05ULVMiPlM8L2E+PyAnKSc8L2NvZGU+PC90ZD4NCis8dGQ+PGEgaHJlZj0iI2VudW0iPltWQzogRW51bWVyYXRpb25dPC9hPjwvdGQ+DQorPC90cj4NCis8L3Rib2R5PjwvdGFibGU+IDxwPkEgPGI+Tk9UQVRJT048L2I+IGF0dHJpYnV0ZSBpZGVudGlmaWVzIGEgPGEgdGl0bGU9Ik5vdGF0aW9uIg0KK2hyZWY9IiNkdC1ub3RhdGlvbiI+bm90YXRpb248L2E+LCBkZWNsYXJlZCBpbiB0aGUgRFREIHdpdGggYXNzb2NpYXRlZCBzeXN0ZW0NCithbmQvb3IgcHVibGljIGlkZW50aWZpZXJzLCB0byBiZSB1c2VkIGluIGludGVycHJldGluZyB0aGUgZWxlbWVudCB0byB3aGljaA0KK3RoZSBhdHRyaWJ1dGUgaXMgYXR0YWNoZWQuPC9wPiA8ZGl2IGNsYXNzPSJjb25zdHJhaW50Ij48cCBjbGFzcz0icHJlZml4Ij48YQ0KK25hbWU9Im5vdGF0biI+PC9hPjxiPlZhbGlkaXR5IGNvbnN0cmFpbnQ6IE5vdGF0aW9uIEF0dHJpYnV0ZXM8L2I+PC9wPjxwPlZhbHVlcw0KK29mIHRoaXMgdHlwZSBtdXN0IG1hdGNoIG9uZSBvZiB0aGUgPGEgaHJlZj0iI05vdGF0aW9ucyI+PGNpdGU+bm90YXRpb248L2NpdGU+PC9hPg0KK25hbWVzIGluY2x1ZGVkIGluIHRoZSBkZWNsYXJhdGlvbjsgYWxsIG5vdGF0aW9uIG5hbWVzIGluIHRoZSBkZWNsYXJhdGlvbiBtdXN0DQorYmUgZGVjbGFyZWQuPC9wPiA8L2Rpdj4gPGRpdiBjbGFzcz0iY29uc3RyYWludCI+PHAgY2xhc3M9InByZWZpeCI+PGEgbmFtZT0iT25lTm90YXRpb25QZXIiPjwvYT48Yj5WYWxpZGl0eQ0KK2NvbnN0cmFpbnQ6IE9uZSBOb3RhdGlvbiBQZXIgRWxlbWVudCBUeXBlPC9iPjwvcD48cD5ObyBlbGVtZW50IHR5cGUgbWF5IGhhdmUNCittb3JlIHRoYW4gb25lIDxiPk5PVEFUSU9OPC9iPiBhdHRyaWJ1dGUgc3BlY2lmaWVkLjwvcD4gPC9kaXY+IDxkaXYgY2xhc3M9ImNvbnN0cmFpbnQiPjxwDQorY2xhc3M9InByZWZpeCI+PGEgbmFtZT0iTm9Ob3RhdGlvbkVtcHR5Ij48L2E+PGI+VmFsaWRpdHkgY29uc3RyYWludDogTm8gTm90YXRpb24NCitvbiBFbXB0eSBFbGVtZW50PC9iPjwvcD48cD48YSB0aXRsZT0iRm9yIENvbXBhdGliaWxpdHkiIGhyZWY9IiNkdC1jb21wYXQiPkZvcg0KK2NvbXBhdGliaWxpdHk8L2E+LCBhbiBhdHRyaWJ1dGUgb2YgdHlwZSA8Yj5OT1RBVElPTjwvYj4gbXVzdCBub3QgYmUgZGVjbGFyZWQNCitvbiBhbiBlbGVtZW50IGRlY2xhcmVkIDxiPkVNUFRZPC9iPi48L3A+IDwvZGl2PiA8ZGl2IGNsYXNzPSJjb25zdHJhaW50Ij48cA0KK2NsYXNzPSJwcmVmaXgiPjxhIG5hbWU9ImVudW0iPjwvYT48Yj5WYWxpZGl0eSBjb25zdHJhaW50OiBFbnVtZXJhdGlvbjwvYj48L3A+PHA+VmFsdWVzDQorb2YgdGhpcyB0eXBlIG11c3QgbWF0Y2ggb25lIG9mIHRoZSA8YSBocmVmPSIjTlQtTm10b2tlbiI+Tm10b2tlbjwvYT4gdG9rZW5zDQoraW4gdGhlIGRlY2xhcmF0aW9uLjwvcD4gPC9kaXY+IDxwPjxhIHRpdGxlPSJGb3IgaW50ZXJvcGVyYWJpbGl0eSIgaHJlZj0iI2R0LWludGVyb3AiPkZvcg0KK2ludGVyb3BlcmFiaWxpdHksPC9hPiB0aGUgc2FtZSA8YSBocmVmPSIjTlQtTm10b2tlbiI+Tm10b2tlbjwvYT4gc2hvdWxkIG5vdA0KK29jY3VyIG1vcmUgdGhhbiBvbmNlIGluIHRoZSBlbnVtZXJhdGVkIGF0dHJpYnV0ZSB0eXBlcyBvZiBhIHNpbmdsZSBlbGVtZW50DQordHlwZS48L3A+IDwvZGl2PiA8ZGl2IGNsYXNzPSJkaXYzIj4gPGg0PjxhIG5hbWU9InNlYy1hdHRyLWRlZmF1bHRzIj48L2E+My4zLjINCitBdHRyaWJ1dGUgRGVmYXVsdHM8L2g0PiA8cD5BbiA8YSB0aXRsZT0iQXR0cmlidXRlLUxpc3QgRGVjbGFyYXRpb24iIGhyZWY9IiNkdC1hdHRkZWNsIj5hdHRyaWJ1dGUNCitkZWNsYXJhdGlvbjwvYT4gcHJvdmlkZXMgaW5mb3JtYXRpb24gb24gd2hldGhlciB0aGUgYXR0cmlidXRlJ3MgcHJlc2VuY2UgaXMNCityZXF1aXJlZCwgYW5kIGlmIG5vdCwgaG93IGFuIFhNTCBwcm9jZXNzb3Igc2hvdWxkIHJlYWN0IGlmIGEgZGVjbGFyZWQgYXR0cmlidXRlDQoraXMgYWJzZW50IGluIGEgZG9jdW1lbnQuPC9wPiA8aDU+QXR0cmlidXRlIERlZmF1bHRzPC9oNT48dGFibGUgY2xhc3M9InNjcmFwIj4NCis8dGJvZHk+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1EZWZhdWx0RGVjbCI+PC9hPls2MF0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5EZWZhdWx0RGVjbDwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT4nI1JFUVVJUkVEJyB8Jm5ic3A7JyNJTVBMSUVEJyA8L2NvZGU+PC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PGNvZGU+fCAoKCcjRklYRUQnIFMpPyA8YSBocmVmPSIjTlQtQXR0VmFsdWUiPkF0dFZhbHVlPC9hPik8L2NvZGU+PC90ZD4NCis8dGQ+PGEgaHJlZj0iI1JlcXVpcmVkQXR0ciI+W1ZDOiBSZXF1aXJlZCBBdHRyaWJ1dGVdPC9hPjwvdGQ+DQorPC90cj4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjxhIGhyZWY9IiNkZWZhdHRydmFsaWQiPltWQzogQXR0cmlidXRlIERlZmF1bHQgTGVnYWxdPC9hPjwvdGQ+DQorPC90cj4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjxhIGhyZWY9IiNDbGVhbkF0dHJWYWxzIj5bV0ZDOiBObyAmbHQ7IGluIEF0dHJpYnV0ZSBWYWx1ZXNdPC9hPjwvdGQ+DQorPC90cj4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjxhIGhyZWY9IiNGaXhlZEF0dHIiPltWQzogRml4ZWQgQXR0cmlidXRlIERlZmF1bHRdPC9hPjwvdGQ+DQorPC90cj4NCis8L3Rib2R5PjwvdGFibGU+IDxwPkluIGFuIGF0dHJpYnV0ZSBkZWNsYXJhdGlvbiwgPGI+I1JFUVVJUkVEPC9iPiBtZWFucyB0aGF0DQordGhlIGF0dHJpYnV0ZSBtdXN0IGFsd2F5cyBiZSBwcm92aWRlZCwgPGI+I0lNUExJRUQ8L2I+IHRoYXQgbm8gZGVmYXVsdCB2YWx1ZQ0KK2lzIHByb3ZpZGVkLiAgWzxhIHRpdGxlPSJBdHRyaWJ1dGUgRGVmYXVsdCIgbmFtZT0iZHQtZGVmYXVsdCI+RGVmaW5pdGlvbjwvYT46DQorSWYgdGhlIGRlY2xhcmF0aW9uIGlzIG5laXRoZXIgPGI+I1JFUVVJUkVEPC9iPiBub3IgPGI+I0lNUExJRUQ8L2I+LCB0aGVuIHRoZSA8YQ0KK2hyZWY9IiNOVC1BdHRWYWx1ZSI+QXR0VmFsdWU8L2E+IHZhbHVlIGNvbnRhaW5zIHRoZSBkZWNsYXJlZCA8Yj5kZWZhdWx0PC9iPg0KK3ZhbHVlOyB0aGUgPGI+I0ZJWEVEPC9iPiBrZXl3b3JkIHN0YXRlcyB0aGF0IHRoZSBhdHRyaWJ1dGUgbXVzdCBhbHdheXMgaGF2ZQ0KK3RoZSBkZWZhdWx0IHZhbHVlLiBJZiBhIGRlZmF1bHQgdmFsdWUgaXMgZGVjbGFyZWQsIHdoZW4gYW4gWE1MIHByb2Nlc3NvciBlbmNvdW50ZXJzDQorYW4gb21pdHRlZCBhdHRyaWJ1dGUsIGl0IGlzIHRvIGJlaGF2ZSBhcyB0aG91Z2ggdGhlIGF0dHJpYnV0ZSB3ZXJlIHByZXNlbnQNCit3aXRoIHRoZSBkZWNsYXJlZCBkZWZhdWx0IHZhbHVlLl08L3A+IDxkaXYgY2xhc3M9ImNvbnN0cmFpbnQiPjxwIGNsYXNzPSJwcmVmaXgiPjxhDQorbmFtZT0iUmVxdWlyZWRBdHRyIj48L2E+PGI+VmFsaWRpdHkgY29uc3RyYWludDogUmVxdWlyZWQgQXR0cmlidXRlPC9iPjwvcD48cD5JZg0KK3RoZSBkZWZhdWx0IGRlY2xhcmF0aW9uIGlzIHRoZSBrZXl3b3JkIDxiPiNSRVFVSVJFRDwvYj4sIHRoZW4gdGhlIGF0dHJpYnV0ZQ0KK211c3QgYmUgc3BlY2lmaWVkIGZvciBhbGwgZWxlbWVudHMgb2YgdGhlIHR5cGUgaW4gdGhlIGF0dHJpYnV0ZS1saXN0IGRlY2xhcmF0aW9uLjwvcD4gPC9kaXY+IDxkaXYNCitjbGFzcz0iY29uc3RyYWludCI+PHAgY2xhc3M9InByZWZpeCI+PGEgbmFtZT0iZGVmYXR0cnZhbGlkIj48L2E+PGI+VmFsaWRpdHkNCitjb25zdHJhaW50OiBBdHRyaWJ1dGUgRGVmYXVsdCBMZWdhbDwvYj48L3A+PHA+VGhlIGRlY2xhcmVkIGRlZmF1bHQgdmFsdWUgbXVzdA0KK21lZXQgdGhlIGxleGljYWwgY29uc3RyYWludHMgb2YgdGhlIGRlY2xhcmVkIGF0dHJpYnV0ZSB0eXBlLjwvcD4gPC9kaXY+IDxkaXYNCitjbGFzcz0iY29uc3RyYWludCI+PHAgY2xhc3M9InByZWZpeCI+PGEgbmFtZT0iRml4ZWRBdHRyIj48L2E+PGI+VmFsaWRpdHkgY29uc3RyYWludDoNCitGaXhlZCBBdHRyaWJ1dGUgRGVmYXVsdDwvYj48L3A+PHA+SWYgYW4gYXR0cmlidXRlIGhhcyBhIGRlZmF1bHQgdmFsdWUgZGVjbGFyZWQNCit3aXRoIHRoZSA8Yj4jRklYRUQ8L2I+IGtleXdvcmQsIGluc3RhbmNlcyBvZiB0aGF0IGF0dHJpYnV0ZSBtdXN0IG1hdGNoIHRoZQ0KK2RlZmF1bHQgdmFsdWUuPC9wPiA8L2Rpdj4gPHA+RXhhbXBsZXMgb2YgYXR0cmlidXRlLWxpc3QgZGVjbGFyYXRpb25zOjwvcD4gPHRhYmxlDQorY2xhc3M9ImVnIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIxIiBjZWxscGFkZGluZz0iNSIgYmdjb2xvcj0iIzk5ZmZmZiI+DQorPHRyPg0KKzx0ZD48cHJlPiZsdDshQVRUTElTVCB0ZXJtZGVmDQorICAgICAgICAgIGlkICAgICAgSUQgICAgICAjUkVRVUlSRUQNCisgICAgICAgICAgbmFtZSAgICBDREFUQSAgICNJTVBMSUVEPg0KKyZsdDshQVRUTElTVCBsaXN0DQorICAgICAgICAgIHR5cGUgICAgKGJ1bGxldHN8b3JkZXJlZHxnbG9zc2FyeSkgICJvcmRlcmVkIj4NCismbHQ7IUFUVExJU1QgZm9ybQ0KKyAgICAgICAgICBtZXRob2QgIENEQVRBICAgI0ZJWEVEICJQT1NUIj48L3ByZT48L3RkPg0KKzwvdHI+DQorPC90YWJsZT4gPC9kaXY+IDxkaXYgY2xhc3M9ImRpdjMiPiA8aDQ+PGEgbmFtZT0iQVZOb3JtYWxpemUiPjwvYT4zLjMuMyBBdHRyaWJ1dGUtVmFsdWUNCitOb3JtYWxpemF0aW9uPC9oND4gPHA+QmVmb3JlIHRoZSB2YWx1ZSBvZiBhbiBhdHRyaWJ1dGUgaXMgcGFzc2VkIHRvIHRoZSBhcHBsaWNhdGlvbg0KK29yIGNoZWNrZWQgZm9yIHZhbGlkaXR5LCB0aGUgWE1MIHByb2Nlc3NvciBtdXN0IG5vcm1hbGl6ZSB0aGUgYXR0cmlidXRlIHZhbHVlDQorYnkgYXBwbHlpbmcgdGhlIGFsZ29yaXRobSBiZWxvdywgb3IgYnkgdXNpbmcgc29tZSBvdGhlciBtZXRob2Qgc3VjaCB0aGF0IHRoZQ0KK3ZhbHVlIHBhc3NlZCB0byB0aGUgYXBwbGljYXRpb24gaXMgdGhlIHNhbWUgYXMgdGhhdCBwcm9kdWNlZCBieSB0aGUgYWxnb3JpdGhtLjwvcD4gPG9sPg0KKzxsaT48cD5BbGwgbGluZSBicmVha3MgbXVzdCBoYXZlIGJlZW4gbm9ybWFsaXplZCBvbiBpbnB1dCB0byAjeEEgYXMgZGVzY3JpYmVkDQoraW4gPGEgaHJlZj0iI3NlYy1saW5lLWVuZHMiPjxiPjIuMTEgRW5kLW9mLUxpbmUgSGFuZGxpbmc8L2I+PC9hPiwgc28gdGhlIHJlc3QNCitvZiB0aGlzIGFsZ29yaXRobSBvcGVyYXRlcyBvbiB0ZXh0IG5vcm1hbGl6ZWQgaW4gdGhpcyB3YXkuPC9wPjwvbGk+DQorPGxpPjxwPkJlZ2luIHdpdGggYSBub3JtYWxpemVkIHZhbHVlIGNvbnNpc3Rpbmcgb2YgdGhlIGVtcHR5IHN0cmluZy48L3A+IDwvbGk+DQorPGxpPjxwPkZvciBlYWNoIGNoYXJhY3RlciwgZW50aXR5IHJlZmVyZW5jZSwgb3IgY2hhcmFjdGVyIHJlZmVyZW5jZSBpbiB0aGUNCit1bm5vcm1hbGl6ZWQgYXR0cmlidXRlIHZhbHVlLCBiZWdpbm5pbmcgd2l0aCB0aGUgZmlyc3QgYW5kIGNvbnRpbnVpbmcgdG8gdGhlDQorbGFzdCwgZG8gdGhlIGZvbGxvd2luZzo8L3A+IDx1bD4NCis8bGk+PHA+Rm9yIGEgY2hhcmFjdGVyIHJlZmVyZW5jZSwgYXBwZW5kIHRoZSByZWZlcmVuY2VkIGNoYXJhY3RlciB0byB0aGUgbm9ybWFsaXplZA0KK3ZhbHVlLjwvcD48L2xpPg0KKzxsaT48cD5Gb3IgYW4gZW50aXR5IHJlZmVyZW5jZSwgcmVjdXJzaXZlbHkgYXBwbHkgc3RlcCAzIG9mIHRoaXMgYWxnb3JpdGhtDQordG8gdGhlIHJlcGxhY2VtZW50IHRleHQgb2YgdGhlIGVudGl0eS48L3A+PC9saT4NCis8bGk+PHA+Rm9yIGEgd2hpdGUgc3BhY2UgY2hhcmFjdGVyICgjeDIwLCAjeEQsICN4QSwgI3g5KSwgYXBwZW5kIGEgc3BhY2UgY2hhcmFjdGVyDQorKCN4MjApIHRvIHRoZSBub3JtYWxpemVkIHZhbHVlLjwvcD48L2xpPg0KKzxsaT48cD5Gb3IgYW5vdGhlciBjaGFyYWN0ZXIsIGFwcGVuZCB0aGUgY2hhcmFjdGVyIHRvIHRoZSBub3JtYWxpemVkIHZhbHVlLjwvcD4gPC9saT4NCis8L3VsPiA8L2xpPg0KKzwvb2w+IDxwPklmIHRoZSBhdHRyaWJ1dGUgdHlwZSBpcyBub3QgQ0RBVEEsIHRoZW4gdGhlIFhNTCBwcm9jZXNzb3IgbXVzdCBmdXJ0aGVyDQorcHJvY2VzcyB0aGUgbm9ybWFsaXplZCBhdHRyaWJ1dGUgdmFsdWUgYnkgZGlzY2FyZGluZyBhbnkgbGVhZGluZyBhbmQgdHJhaWxpbmcNCitzcGFjZSAoI3gyMCkgY2hhcmFjdGVycywgYW5kIGJ5IHJlcGxhY2luZyBzZXF1ZW5jZXMgb2Ygc3BhY2UgKCN4MjApIGNoYXJhY3RlcnMNCitieSBhIHNpbmdsZSBzcGFjZSAoI3gyMCkgY2hhcmFjdGVyLjwvcD4gPHA+Tm90ZSB0aGF0IGlmIHRoZSB1bm5vcm1hbGl6ZWQgYXR0cmlidXRlDQordmFsdWUgY29udGFpbnMgYSBjaGFyYWN0ZXIgcmVmZXJlbmNlIHRvIGEgd2hpdGUgc3BhY2UgY2hhcmFjdGVyIG90aGVyIHRoYW4NCitzcGFjZSAoI3gyMCksIHRoZSBub3JtYWxpemVkIHZhbHVlIGNvbnRhaW5zIHRoZSByZWZlcmVuY2VkIGNoYXJhY3RlciBpdHNlbGYNCisoI3hELCAjeEEgb3IgI3g5KS4gVGhpcyBjb250cmFzdHMgd2l0aCB0aGUgY2FzZSB3aGVyZSB0aGUgdW5ub3JtYWxpemVkIHZhbHVlDQorY29udGFpbnMgYSB3aGl0ZSBzcGFjZSBjaGFyYWN0ZXIgKG5vdCBhIHJlZmVyZW5jZSksIHdoaWNoIGlzIHJlcGxhY2VkIHdpdGgNCithIHNwYWNlIGNoYXJhY3RlciAoI3gyMCkgaW4gdGhlIG5vcm1hbGl6ZWQgdmFsdWUgYW5kIGFsc28gY29udHJhc3RzIHdpdGggdGhlDQorY2FzZSB3aGVyZSB0aGUgdW5ub3JtYWxpemVkIHZhbHVlIGNvbnRhaW5zIGFuIGVudGl0eSByZWZlcmVuY2Ugd2hvc2UgcmVwbGFjZW1lbnQNCit0ZXh0IGNvbnRhaW5zIGEgd2hpdGUgc3BhY2UgY2hhcmFjdGVyOyBiZWluZyByZWN1cnNpdmVseSBwcm9jZXNzZWQsIHRoZSB3aGl0ZQ0KK3NwYWNlIGNoYXJhY3RlciBpcyByZXBsYWNlZCB3aXRoIGEgc3BhY2UgY2hhcmFjdGVyICgjeDIwKSBpbiB0aGUgbm9ybWFsaXplZA0KK3ZhbHVlLjwvcD4gPHA+QWxsIGF0dHJpYnV0ZXMgZm9yIHdoaWNoIG5vIGRlY2xhcmF0aW9uIGhhcyBiZWVuIHJlYWQgc2hvdWxkDQorYmUgdHJlYXRlZCBieSBhIG5vbi12YWxpZGF0aW5nIHByb2Nlc3NvciBhcyBpZiBkZWNsYXJlZCA8Yj5DREFUQTwvYj4uPC9wPiA8cD5Gb2xsb3dpbmcNCithcmUgZXhhbXBsZXMgb2YgYXR0cmlidXRlIG5vcm1hbGl6YXRpb24uIEdpdmVuIHRoZSBmb2xsb3dpbmcgZGVjbGFyYXRpb25zOjwvcD4gPHRhYmxlDQorY2xhc3M9ImVnIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIxIiBjZWxscGFkZGluZz0iNSIgYmdjb2xvcj0iIzk5ZmZmZiI+DQorPHRyPg0KKzx0ZD48cHJlPiZsdDshRU5USVRZIGQgIiZhbXA7I3hEOyI+DQorJmx0OyFFTlRJVFkgYSAiJmFtcDsjeEE7Ij4NCismbHQ7IUVOVElUWSBkYSAiJmFtcDsjeEQ7JmFtcDsjeEE7Ij48L3ByZT48L3RkPg0KKzwvdHI+DQorPC90YWJsZT4gPHA+dGhlIGF0dHJpYnV0ZSBzcGVjaWZpY2F0aW9ucyBpbiB0aGUgbGVmdCBjb2x1bW4gYmVsb3cgd291bGQgYmUNCitub3JtYWxpemVkIHRvIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2VzIG9mIHRoZSBtaWRkbGUgY29sdW1uIGlmIHRoZSBhdHRyaWJ1dGUgPGNvZGU+YTwvY29kZT4NCitpcyBkZWNsYXJlZCA8Yj5OTVRPS0VOUzwvYj4gYW5kIHRvIHRob3NlIG9mIHRoZSByaWdodCBjb2x1bW5zIGlmIDxjb2RlPmE8L2NvZGU+DQoraXMgZGVjbGFyZWQgPGI+Q0RBVEE8L2I+LjwvcD4gPHRhYmxlIGJvcmRlcj0iMSIgZnJhbWU9ImJvcmRlciI+PHRoZWFkPg0KKzx0cj4NCis8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+QXR0cmlidXRlIHNwZWNpZmljYXRpb248L3RoPg0KKzx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5hIGlzIE5NVE9LRU5TPC90aD4NCis8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+YSBpcyBDREFUQTwvdGg+DQorPC90cj4NCis8L3RoZWFkPjx0Ym9keT4NCis8dHI+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjx0YWJsZSBjbGFzcz0iZWciIHdpZHRoPSIxMDAlIiBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSI1Ig0KK2JnY29sb3I9IiM5OWZmZmYiPg0KKzx0cj4NCis8dGQ+PHByZT5hPSINCisNCit4eXoiPC9wcmU+PC90ZD4NCis8L3RyPg0KKzwvdGFibGU+PC90ZD4NCis8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGNvZGU+eCB5IHo8L2NvZGU+PC90ZD4NCis8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGNvZGU+I3gyMCAjeDIwIHggeSB6PC9jb2RlPjwvdGQ+DQorPC90cj4NCis8dHI+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjx0YWJsZSBjbGFzcz0iZWciIHdpZHRoPSIxMDAlIiBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSI1Ig0KK2JnY29sb3I9IiM5OWZmZmYiPg0KKzx0cj4NCis8dGQ+PHByZT5hPSImYW1wO2Q7JmFtcDtkO0EmYW1wO2E7JmFtcDthO0ImYW1wO2RhOyI8L3ByZT48L3RkPg0KKzwvdHI+DQorPC90YWJsZT48L3RkPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48Y29kZT5BICN4MjAgQjwvY29kZT48L3RkPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48Y29kZT4jeDIwICN4MjAgQSAjeDIwICN4MjAgQiAjeDIwICN4MjA8L2NvZGU+PC90ZD4NCis8L3RyPg0KKzx0cj4NCis8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PHRhYmxlIGNsYXNzPSJlZyIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMSIgY2VsbHBhZGRpbmc9IjUiDQorYmdjb2xvcj0iIzk5ZmZmZiI+DQorPHRyPg0KKzx0ZD48cHJlPmE9DQorIiZhbXA7I3hkOyZhbXA7I3hkO0EmYW1wOyN4YTsmYW1wOyN4YTtCJmFtcDsjeGQ7JmFtcDsjeGE7IjwvcHJlPjwvdGQ+DQorPC90cj4NCis8L3RhYmxlPjwvdGQ+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxjb2RlPiN4RCAjeEQgQSAjeEEgI3hBIEIgI3hEICN4QTwvY29kZT48L3RkPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48Y29kZT4jeEQgI3hEIEEgI3hBICN4QSBCICN4RCAjeEQ8L2NvZGU+PC90ZD4NCis8L3RyPg0KKzwvdGJvZHk+PC90YWJsZT4gPHA+Tm90ZSB0aGF0IHRoZSBsYXN0IGV4YW1wbGUgaXMgaW52YWxpZCAoYnV0IHdlbGwtZm9ybWVkKQ0KK2lmIDxjb2RlPmE8L2NvZGU+IGlzIGRlY2xhcmVkIHRvIGJlIG9mIHR5cGUgPGI+Tk1UT0tFTlM8L2I+LjwvcD4gPC9kaXY+IDwvZGl2PiA8ZGl2DQorY2xhc3M9ImRpdjIiPiA8aDM+PGEgbmFtZT0ic2VjLWNvbmRpdGlvbi1zZWN0Ij48L2E+My40IENvbmRpdGlvbmFsIFNlY3Rpb25zPC9oMz4gPHA+WzxhDQordGl0bGU9ImNvbmRpdGlvbmFsIHNlY3Rpb24iIG5hbWU9ImR0LWNvbmQtc2VjdGlvbiI+RGVmaW5pdGlvbjwvYT46ICA8Yj5Db25kaXRpb25hbA0KK3NlY3Rpb25zPC9iPiBhcmUgcG9ydGlvbnMgb2YgdGhlIDxhIHRpdGxlPSJEb2N1bWVudCBUeXBlIERlY2xhcmF0aW9uIiBocmVmPSIjZHQtZG9jdHlwZSI+ZG9jdW1lbnQNCit0eXBlIGRlY2xhcmF0aW9uIGV4dGVybmFsIHN1YnNldDwvYT4gd2hpY2ggYXJlIGluY2x1ZGVkIGluLCBvciBleGNsdWRlZCBmcm9tLA0KK3RoZSBsb2dpY2FsIHN0cnVjdHVyZSBvZiB0aGUgRFREIGJhc2VkIG9uIHRoZSBrZXl3b3JkIHdoaWNoIGdvdmVybnMgdGhlbS5dPC9wPiA8aDU+Q29uZGl0aW9uYWwNCitTZWN0aW9uPC9oNT48dGFibGUgY2xhc3M9InNjcmFwIj48dGJvZHk+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1jb25kaXRpb25hbFNlY3QiPjwvYT5bNjFdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+Y29uZGl0aW9uYWxTZWN0PC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPjxhIGhyZWY9IiNOVC1pbmNsdWRlU2VjdCI+aW5jbHVkZVNlY3Q8L2E+IHwgPGEgaHJlZj0iI05ULWlnbm9yZVNlY3QiPmlnbm9yZVNlY3Q8L2E+IDwvY29kZT48L3RkPg0KKzwvdHI+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1pbmNsdWRlU2VjdCI+PC9hPls2Ml0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5pbmNsdWRlU2VjdDwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT4nJmx0OyFbJyBTPyAnSU5DTFVERScgUz8gJ1snIDxhIGhyZWY9IiNOVC1leHRTdWJzZXREZWNsIj5leHRTdWJzZXREZWNsPC9hPg0KKyddXSZndDsnIDwvY29kZT48L3RkPg0KKzx0ZD48aT4vKiAgKi88L2k+PC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PGEgaHJlZj0iI2NvbmRzZWMtbmVzdGluZyI+W1ZDOiBQcm9wZXIgQ29uZGl0aW9uYWwgU2VjdGlvbi9QRSBOZXN0aW5nXTwvYT48L3RkPg0KKzwvdHI+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1pZ25vcmVTZWN0Ij48L2E+WzYzXSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPmlnbm9yZVNlY3Q8L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+JyZsdDshWycgUz8gJ0lHTk9SRScgUz8gJ1snIDxhIGhyZWY9IiNOVC1pZ25vcmVTZWN0Q29udGVudHMiPmlnbm9yZVNlY3RDb250ZW50czwvYT4qDQorJ11dJmd0Oyc8L2NvZGU+PC90ZD4NCis8dGQ+PGk+LyogICovPC9pPjwvdGQ+DQorPC90cj4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjxhIGhyZWY9IiNjb25kc2VjLW5lc3RpbmciPltWQzogUHJvcGVyIENvbmRpdGlvbmFsIFNlY3Rpb24vUEUgTmVzdGluZ108L2E+PC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PGEgbmFtZT0iTlQtaWdub3JlU2VjdENvbnRlbnRzIj48L2E+WzY0XSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPmlnbm9yZVNlY3RDb250ZW50czwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT48YSBocmVmPSIjTlQtSWdub3JlIj5JZ25vcmU8L2E+ICgnJmx0OyFbJyA8YSBocmVmPSIjTlQtaWdub3JlU2VjdENvbnRlbnRzIj5pZ25vcmVTZWN0Q29udGVudHM8L2E+DQorJ11dJmd0OycgPGEgaHJlZj0iI05ULUlnbm9yZSI+SWdub3JlPC9hPikqPC9jb2RlPjwvdGQ+DQorPC90cj4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULUlnbm9yZSI+PC9hPls2NV0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5JZ25vcmU8L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+PGEgaHJlZj0iI05ULUNoYXIiPkNoYXI8L2E+KiAtICg8YSBocmVmPSIjTlQtQ2hhciI+Q2hhcjwvYT4qICgnJmx0OyFbJw0KK3wgJ11dJmd0OycpIDxhIGhyZWY9IiNOVC1DaGFyIj5DaGFyPC9hPiopIDwvY29kZT48L3RkPg0KKzwvdHI+DQorPC90Ym9keT48L3RhYmxlPiA8ZGl2IGNsYXNzPSJjb25zdHJhaW50Ij48cCBjbGFzcz0icHJlZml4Ij48YSBuYW1lPSJjb25kc2VjLW5lc3RpbmciPjwvYT48Yj5WYWxpZGl0eQ0KK2NvbnN0cmFpbnQ6IFByb3BlciBDb25kaXRpb25hbCBTZWN0aW9uL1BFIE5lc3Rpbmc8L2I+PC9wPjxwPklmIGFueSBvZiB0aGUNCisiPGNvZGU+Jmx0OyFbPC9jb2RlPiIsICI8Y29kZT5bPC9jb2RlPiIsIG9yICI8Y29kZT5dXSZndDs8L2NvZGU+IiBvZiBhIGNvbmRpdGlvbmFsDQorc2VjdGlvbiBpcyBjb250YWluZWQgaW4gdGhlIHJlcGxhY2VtZW50IHRleHQgZm9yIGEgcGFyYW1ldGVyLWVudGl0eSByZWZlcmVuY2UsDQorYWxsIG9mIHRoZW0gbXVzdCBiZSBjb250YWluZWQgaW4gdGhlIHNhbWUgcmVwbGFjZW1lbnQgdGV4dC48L3A+IDwvZGl2PiA8cD5MaWtlDQordGhlIGludGVybmFsIGFuZCBleHRlcm5hbCBEVEQgc3Vic2V0cywgYSBjb25kaXRpb25hbCBzZWN0aW9uIG1heSBjb250YWluIG9uZQ0KK29yIG1vcmUgY29tcGxldGUgZGVjbGFyYXRpb25zLCBjb21tZW50cywgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMsIG9yIG5lc3RlZA0KK2NvbmRpdGlvbmFsIHNlY3Rpb25zLCBpbnRlcm1pbmdsZWQgd2l0aCB3aGl0ZSBzcGFjZS48L3A+IDxwPklmIHRoZSBrZXl3b3JkDQorb2YgdGhlIGNvbmRpdGlvbmFsIHNlY3Rpb24gaXMgPGI+SU5DTFVERTwvYj4sIHRoZW4gdGhlIGNvbnRlbnRzIG9mIHRoZSBjb25kaXRpb25hbA0KK3NlY3Rpb24gYXJlIHBhcnQgb2YgdGhlIERURC4gSWYgdGhlIGtleXdvcmQgb2YgdGhlIGNvbmRpdGlvbmFsIHNlY3Rpb24gaXMgPGI+SUdOT1JFPC9iPiwNCit0aGVuIHRoZSBjb250ZW50cyBvZiB0aGUgY29uZGl0aW9uYWwgc2VjdGlvbiBhcmUgbm90IGxvZ2ljYWxseSBwYXJ0IG9mIHRoZQ0KK0RURC4gIElmIGEgY29uZGl0aW9uYWwgc2VjdGlvbiB3aXRoIGEga2V5d29yZCBvZiA8Yj5JTkNMVURFPC9iPiBvY2N1cnMgd2l0aGluDQorYSBsYXJnZXIgY29uZGl0aW9uYWwgc2VjdGlvbiB3aXRoIGEga2V5d29yZCBvZiA8Yj5JR05PUkU8L2I+LCBib3RoIHRoZSBvdXRlcg0KK2FuZCB0aGUgaW5uZXIgY29uZGl0aW9uYWwgc2VjdGlvbnMgYXJlIGlnbm9yZWQuIFRoZSBjb250ZW50cyBvZiBhbiBpZ25vcmVkDQorY29uZGl0aW9uYWwgc2VjdGlvbiBhcmUgcGFyc2VkIGJ5IGlnbm9yaW5nIGFsbCBjaGFyYWN0ZXJzIGFmdGVyIHRoZSAiPGNvZGU+WzwvY29kZT4iDQorZm9sbG93aW5nIHRoZSBrZXl3b3JkLCBleGNlcHQgY29uZGl0aW9uYWwgc2VjdGlvbiBzdGFydHMgIjxjb2RlPiZsdDshWzwvY29kZT4iDQorYW5kIGVuZHMgIjxjb2RlPl1dJmd0OzwvY29kZT4iLCB1bnRpbCB0aGUgbWF0Y2hpbmcgY29uZGl0aW9uYWwgc2VjdGlvbiBlbmQNCitpcyBmb3VuZC4gUGFyYW1ldGVyIGVudGl0eSByZWZlcmVuY2VzIGFyZSBub3QgcmVjb2duaXplZCBpbiB0aGlzIHByb2Nlc3MuPC9wPiA8cD5JZg0KK3RoZSBrZXl3b3JkIG9mIHRoZSBjb25kaXRpb25hbCBzZWN0aW9uIGlzIGEgcGFyYW1ldGVyLWVudGl0eSByZWZlcmVuY2UsIHRoZQ0KK3BhcmFtZXRlciBlbnRpdHkgbXVzdCBiZSByZXBsYWNlZCBieSBpdHMgY29udGVudCBiZWZvcmUgdGhlIHByb2Nlc3NvciBkZWNpZGVzDQord2hldGhlciB0byBpbmNsdWRlIG9yIGlnbm9yZSB0aGUgY29uZGl0aW9uYWwgc2VjdGlvbi48L3A+IDxwPkFuIGV4YW1wbGU6PC9wPiA8dGFibGUNCitjbGFzcz0iZWciIHdpZHRoPSIxMDAlIiBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSI1IiBiZ2NvbG9yPSIjOTlmZmZmIj4NCis8dHI+DQorPHRkPjxwcmU+Jmx0OyFFTlRJVFkgJSBkcmFmdCAnSU5DTFVERScgPg0KKyZsdDshRU5USVRZICUgZmluYWwgJ0lHTk9SRScgPg0KKw0KKyZsdDshWyVkcmFmdDtbDQorJmx0OyFFTEVNRU5UIGJvb2sgKGNvbW1lbnRzKiwgdGl0bGUsIGJvZHksIHN1cHBsZW1lbnRzPyk+DQorXV0mZ3Q7DQorJmx0OyFbJWZpbmFsO1sNCismbHQ7IUVMRU1FTlQgYm9vayAodGl0bGUsIGJvZHksIHN1cHBsZW1lbnRzPyk+DQorXV0mZ3Q7PC9wcmU+PC90ZD4NCis8L3RyPg0KKzwvdGFibGU+IDwvZGl2PiAgPC9kaXY+ICA8ZGl2IGNsYXNzPSJkaXYxIj4gPGgyPjxhIG5hbWU9InNlYy1waHlzaWNhbC1zdHJ1Y3QiPjwvYT40DQorUGh5c2ljYWwgU3RydWN0dXJlczwvaDI+IDxwPls8YSB0aXRsZT0iRW50aXR5IiBuYW1lPSJkdC1lbnRpdHkiPkRlZmluaXRpb248L2E+Og0KK0FuIFhNTCBkb2N1bWVudCBtYXkgY29uc2lzdCBvZiBvbmUgb3IgbWFueSBzdG9yYWdlIHVuaXRzLiBUaGVzZSBhcmUgY2FsbGVkIDxiPmVudGl0aWVzPC9iPjsNCit0aGV5IGFsbCBoYXZlIDxiPmNvbnRlbnQ8L2I+IGFuZCBhcmUgYWxsIChleGNlcHQgZm9yIHRoZSA8YSB0aXRsZT0iRG9jdW1lbnQgRW50aXR5Ig0KK2hyZWY9IiNkdC1kb2NlbnQiPmRvY3VtZW50IGVudGl0eTwvYT4gYW5kIHRoZSA8YSB0aXRsZT0iRG9jdW1lbnQgVHlwZSBEZWNsYXJhdGlvbiINCitocmVmPSIjZHQtZG9jdHlwZSI+ZXh0ZXJuYWwgRFREIHN1YnNldDwvYT4pIGlkZW50aWZpZWQgYnkgZW50aXR5IDxiPm5hbWU8L2I+Ll0NCitFYWNoIFhNTCBkb2N1bWVudCBoYXMgb25lIGVudGl0eSBjYWxsZWQgdGhlIDxhIHRpdGxlPSJEb2N1bWVudCBFbnRpdHkiIGhyZWY9IiNkdC1kb2NlbnQiPmRvY3VtZW50DQorZW50aXR5PC9hPiwgd2hpY2ggc2VydmVzIGFzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgdGhlIDxhIHRpdGxlPSJYTUwgUHJvY2Vzc29yIg0KK2hyZWY9IiNkdC14bWwtcHJvYyI+WE1MIHByb2Nlc3NvcjwvYT4gYW5kIG1heSBjb250YWluIHRoZSB3aG9sZSBkb2N1bWVudC48L3A+IDxwPkVudGl0aWVzDQorbWF5IGJlIGVpdGhlciBwYXJzZWQgb3IgdW5wYXJzZWQuIFs8YSB0aXRsZT0iVGV4dCBFbnRpdHkiIG5hbWU9ImR0LXBhcnNlZGVudCI+RGVmaW5pdGlvbjwvYT46DQorQSA8Yj5wYXJzZWQgZW50aXR5J3M8L2I+IGNvbnRlbnRzIGFyZSByZWZlcnJlZCB0byBhcyBpdHMgPGEgdGl0bGU9IlJlcGxhY2VtZW50IFRleHQiDQoraHJlZj0iI2R0LXJlcGx0ZXh0Ij5yZXBsYWNlbWVudCB0ZXh0PC9hPjsgdGhpcyA8YSB0aXRsZT0iVGV4dCIgaHJlZj0iI2R0LXRleHQiPnRleHQ8L2E+DQoraXMgY29uc2lkZXJlZCBhbiBpbnRlZ3JhbCBwYXJ0IG9mIHRoZSBkb2N1bWVudC5dPC9wPiA8cD5bPGEgdGl0bGU9IlVucGFyc2VkIEVudGl0eSINCituYW1lPSJkdC11bnBhcnNlZCI+RGVmaW5pdGlvbjwvYT46IEFuIDxiPnVucGFyc2VkIGVudGl0eTwvYj4gaXMgYSByZXNvdXJjZQ0KK3dob3NlIGNvbnRlbnRzIG1heSBvciBtYXkgbm90IGJlIDxhIHRpdGxlPSJUZXh0IiBocmVmPSIjZHQtdGV4dCI+dGV4dDwvYT4sDQorYW5kIGlmIHRleHQsIG1heSBiZSBvdGhlciB0aGFuIFhNTC4gRWFjaCB1bnBhcnNlZCBlbnRpdHkgaGFzIGFuIGFzc29jaWF0ZWQgPGENCit0aXRsZT0iTm90YXRpb24iIGhyZWY9IiNkdC1ub3RhdGlvbiI+bm90YXRpb248L2E+LCBpZGVudGlmaWVkIGJ5IG5hbWUuIEJleW9uZA0KK2EgcmVxdWlyZW1lbnQgdGhhdCBhbiBYTUwgcHJvY2Vzc29yIG1ha2UgdGhlIGlkZW50aWZpZXJzIGZvciB0aGUgZW50aXR5IGFuZA0KK25vdGF0aW9uIGF2YWlsYWJsZSB0byB0aGUgYXBwbGljYXRpb24sIFhNTCBwbGFjZXMgbm8gY29uc3RyYWludHMgb24gdGhlIGNvbnRlbnRzDQorb2YgdW5wYXJzZWQgZW50aXRpZXMuXTwvcD4gPHA+UGFyc2VkIGVudGl0aWVzIGFyZSBpbnZva2VkIGJ5IG5hbWUgdXNpbmcgZW50aXR5DQorcmVmZXJlbmNlczsgdW5wYXJzZWQgZW50aXRpZXMgYnkgbmFtZSwgZ2l2ZW4gaW4gdGhlIHZhbHVlIG9mIDxiPkVOVElUWTwvYj4NCitvciA8Yj5FTlRJVElFUzwvYj4gYXR0cmlidXRlcy48L3A+IDxwPls8YSB0aXRsZT0iZ2VuZXJhbCBlbnRpdHkiIG5hbWU9Imdlbi1lbnRpdHkiPkRlZmluaXRpb248L2E+OiA8Yj5HZW5lcmFsDQorZW50aXRpZXM8L2I+IGFyZSBlbnRpdGllcyBmb3IgdXNlIHdpdGhpbiB0aGUgZG9jdW1lbnQgY29udGVudC4gSW4gdGhpcyBzcGVjaWZpY2F0aW9uLA0KK2dlbmVyYWwgZW50aXRpZXMgYXJlIHNvbWV0aW1lcyByZWZlcnJlZCB0byB3aXRoIHRoZSB1bnF1YWxpZmllZCB0ZXJtIDxlbT5lbnRpdHk8L2VtPg0KK3doZW4gdGhpcyBsZWFkcyB0byBubyBhbWJpZ3VpdHkuXSBbPGEgdGl0bGU9IlBhcmFtZXRlciBlbnRpdHkiIG5hbWU9ImR0LVBFIj5EZWZpbml0aW9uPC9hPjogPGI+UGFyYW1ldGVyDQorZW50aXRpZXM8L2I+IGFyZSBwYXJzZWQgZW50aXRpZXMgZm9yIHVzZSB3aXRoaW4gdGhlIERURC5dIFRoZXNlIHR3byB0eXBlcw0KK29mIGVudGl0aWVzIHVzZSBkaWZmZXJlbnQgZm9ybXMgb2YgcmVmZXJlbmNlIGFuZCBhcmUgcmVjb2duaXplZCBpbiBkaWZmZXJlbnQNCitjb250ZXh0cy4gRnVydGhlcm1vcmUsIHRoZXkgb2NjdXB5IGRpZmZlcmVudCBuYW1lc3BhY2VzOyBhIHBhcmFtZXRlciBlbnRpdHkNCithbmQgYSBnZW5lcmFsIGVudGl0eSB3aXRoIHRoZSBzYW1lIG5hbWUgYXJlIHR3byBkaXN0aW5jdCBlbnRpdGllcy48L3A+IDxkaXYNCitjbGFzcz0iZGl2MiI+IDxoMz48YSBuYW1lPSJzZWMtcmVmZXJlbmNlcyI+PC9hPjQuMSBDaGFyYWN0ZXIgYW5kIEVudGl0eSBSZWZlcmVuY2VzPC9oMz4gPHA+WzxhDQordGl0bGU9IkNoYXJhY3RlciBSZWZlcmVuY2UiIG5hbWU9ImR0LWNoYXJyZWYiPkRlZmluaXRpb248L2E+OiAgQSA8Yj5jaGFyYWN0ZXINCityZWZlcmVuY2U8L2I+IHJlZmVycyB0byBhIHNwZWNpZmljIGNoYXJhY3RlciBpbiB0aGUgSVNPL0lFQyAxMDY0NiBjaGFyYWN0ZXINCitzZXQsIGZvciBleGFtcGxlIG9uZSBub3QgZGlyZWN0bHkgYWNjZXNzaWJsZSBmcm9tIGF2YWlsYWJsZSBpbnB1dCBkZXZpY2VzLl08L3A+IDxoNT5DaGFyYWN0ZXINCitSZWZlcmVuY2U8L2g1Pjx0YWJsZSBjbGFzcz0ic2NyYXAiPjx0Ym9keT4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULUNoYXJSZWYiPjwvYT5bNjZdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+Q2hhclJlZjwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT4nJmFtcDsjJyBbMC05XSsgJzsnIDwvY29kZT48L3RkPg0KKzwvdHI+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48Y29kZT58ICcmYW1wOyN4JyBbMC05YS1mQS1GXSsgJzsnPC9jb2RlPjwvdGQ+DQorPHRkPjxhIGhyZWY9IiN3Zi1MZWdhbGNoYXIiPltXRkM6IExlZ2FsIENoYXJhY3Rlcl08L2E+PC90ZD4NCis8L3RyPg0KKzwvdGJvZHk+PC90YWJsZT4gPGRpdiBjbGFzcz0iY29uc3RyYWludCI+PHAgY2xhc3M9InByZWZpeCI+PGEgbmFtZT0id2YtTGVnYWxjaGFyIj48L2E+PGI+V2VsbC1mb3JtZWRuZXNzDQorY29uc3RyYWludDogTGVnYWwgQ2hhcmFjdGVyPC9iPjwvcD48cD5DaGFyYWN0ZXJzIHJlZmVycmVkIHRvIHVzaW5nIGNoYXJhY3Rlcg0KK3JlZmVyZW5jZXMgbXVzdCBtYXRjaCB0aGUgcHJvZHVjdGlvbiBmb3IgPGEgdGl0bGU9IiIgaHJlZj0iI05ULUNoYXIiPkNoYXI8L2E+LjwvcD4gPC9kaXY+IDxwPklmDQordGhlIGNoYXJhY3RlciByZWZlcmVuY2UgYmVnaW5zIHdpdGggIjxjb2RlPiZhbXA7I3g8L2NvZGU+IiwgdGhlIGRpZ2l0cyBhbmQNCitsZXR0ZXJzIHVwIHRvIHRoZSB0ZXJtaW5hdGluZyA8Y29kZT47PC9jb2RlPiBwcm92aWRlIGEgaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24NCitvZiB0aGUgY2hhcmFjdGVyJ3MgY29kZSBwb2ludCBpbiBJU08vSUVDIDEwNjQ2LiBJZiBpdCBiZWdpbnMganVzdCB3aXRoICI8Y29kZT4mYW1wOyM8L2NvZGU+IiwNCit0aGUgZGlnaXRzIHVwIHRvIHRoZSB0ZXJtaW5hdGluZyA8Y29kZT47PC9jb2RlPiBwcm92aWRlIGEgZGVjaW1hbCByZXByZXNlbnRhdGlvbg0KK29mIHRoZSBjaGFyYWN0ZXIncyBjb2RlIHBvaW50LjwvcD4gPHA+WzxhIHRpdGxlPSJFbnRpdHkgUmVmZXJlbmNlIiBuYW1lPSJkdC1lbnRyZWYiPkRlZmluaXRpb248L2E+Og0KK0FuIDxiPmVudGl0eSByZWZlcmVuY2U8L2I+IHJlZmVycyB0byB0aGUgY29udGVudCBvZiBhIG5hbWVkIGVudGl0eS5dIFs8YSB0aXRsZT0iR2VuZXJhbCBFbnRpdHkgUmVmZXJlbmNlIg0KK25hbWU9ImR0LUdFUmVmIj5EZWZpbml0aW9uPC9hPjogUmVmZXJlbmNlcyB0byBwYXJzZWQgZ2VuZXJhbCBlbnRpdGllcyB1c2UNCithbXBlcnNhbmQgKDxjb2RlPiZhbXA7PC9jb2RlPikgYW5kIHNlbWljb2xvbiAoPGNvZGU+OzwvY29kZT4pIGFzIGRlbGltaXRlcnMuXQ0KK1s8YSB0aXRsZT0iUGFyYW1ldGVyLWVudGl0eSByZWZlcmVuY2UiIG5hbWU9ImR0LVBFUmVmIj5EZWZpbml0aW9uPC9hPjogIDxiPlBhcmFtZXRlci1lbnRpdHkNCityZWZlcmVuY2VzPC9iPiB1c2UgcGVyY2VudC1zaWduICg8Y29kZT4lPC9jb2RlPikgYW5kIHNlbWljb2xvbiAoPGNvZGU+OzwvY29kZT4pDQorYXMgZGVsaW1pdGVycy5dPC9wPiA8aDU+RW50aXR5IFJlZmVyZW5jZTwvaDU+PHRhYmxlIGNsYXNzPSJzY3JhcCI+PHRib2R5Pg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PGEgbmFtZT0iTlQtUmVmZXJlbmNlIj48L2E+WzY3XSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPlJlZmVyZW5jZTwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT48YSBocmVmPSIjTlQtRW50aXR5UmVmIj5FbnRpdHlSZWY8L2E+IHwgPGEgaHJlZj0iI05ULUNoYXJSZWYiPkNoYXJSZWY8L2E+PC9jb2RlPjwvdGQ+DQorPC90cj4NCis8L3Rib2R5Pjx0Ym9keT4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULUVudGl0eVJlZiI+PC9hPls2OF0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5FbnRpdHlSZWY8L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+JyZhbXA7JyA8YSBocmVmPSIjTlQtTmFtZSI+TmFtZTwvYT4gJzsnPC9jb2RlPjwvdGQ+DQorPHRkPjxhIGhyZWY9IiN3Zi1lbnRkZWNsYXJlZCI+W1dGQzogRW50aXR5IERlY2xhcmVkXTwvYT48L3RkPg0KKzwvdHI+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48YSBocmVmPSIjdmMtZW50ZGVjbGFyZWQiPltWQzogRW50aXR5IERlY2xhcmVkXTwvYT48L3RkPg0KKzwvdHI+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48YSBocmVmPSIjdGV4dGVudCI+W1dGQzogUGFyc2VkIEVudGl0eV08L2E+PC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PC90ZD4NCis8dGQ+PGEgaHJlZj0iI25vcmVjdXJzaW9uIj5bV0ZDOiBObyBSZWN1cnNpb25dPC9hPjwvdGQ+DQorPC90cj4NCis8L3Rib2R5Pjx0Ym9keT4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULVBFUmVmZXJlbmNlIj48L2E+WzY5XSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPlBFUmVmZXJlbmNlPC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPiclJyA8YSBocmVmPSIjTlQtTmFtZSI+TmFtZTwvYT4gJzsnPC9jb2RlPjwvdGQ+DQorPHRkPjxhIGhyZWY9IiN2Yy1lbnRkZWNsYXJlZCI+W1ZDOiBFbnRpdHkgRGVjbGFyZWRdPC9hPjwvdGQ+DQorPC90cj4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjxhIGhyZWY9IiNub3JlY3Vyc2lvbiI+W1dGQzogTm8gUmVjdXJzaW9uXTwvYT48L3RkPg0KKzwvdHI+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48L3RkPg0KKzx0ZD48YSBocmVmPSIjaW5kdGQiPltXRkM6IEluIERURF08L2E+PC90ZD4NCis8L3RyPg0KKzwvdGJvZHk+PC90YWJsZT4gPGRpdiBjbGFzcz0iY29uc3RyYWludCI+PHAgY2xhc3M9InByZWZpeCI+PGEgbmFtZT0id2YtZW50ZGVjbGFyZWQiPjwvYT48Yj5XZWxsLWZvcm1lZG5lc3MNCitjb25zdHJhaW50OiBFbnRpdHkgRGVjbGFyZWQ8L2I+PC9wPjxwPkluIGEgZG9jdW1lbnQgd2l0aG91dCBhbnkgRFRELCBhIGRvY3VtZW50DQord2l0aCBvbmx5IGFuIGludGVybmFsIERURCBzdWJzZXQgd2hpY2ggY29udGFpbnMgbm8gcGFyYW1ldGVyIGVudGl0eSByZWZlcmVuY2VzLA0KK29yIGEgZG9jdW1lbnQgd2l0aCAiPGNvZGU+c3RhbmRhbG9uZT0neWVzJzwvY29kZT4iLCBmb3IgYW4gZW50aXR5IHJlZmVyZW5jZQ0KK3RoYXQgZG9lcyBub3Qgb2NjdXIgd2l0aGluIHRoZSBleHRlcm5hbCBzdWJzZXQgb3IgYSBwYXJhbWV0ZXIgZW50aXR5LCB0aGUgPGENCitocmVmPSIjTlQtTmFtZSI+TmFtZTwvYT4gZ2l2ZW4gaW4gdGhlIGVudGl0eSByZWZlcmVuY2UgbXVzdCA8YSB0aXRsZT0ibWF0Y2giDQoraHJlZj0iI2R0LW1hdGNoIj5tYXRjaDwvYT4gdGhhdCBpbiBhbiA8YSBocmVmPSIjc2VjLWVudGl0eS1kZWNsIj48Y2l0ZT5lbnRpdHkNCitkZWNsYXJhdGlvbjwvY2l0ZT48L2E+IHRoYXQgZG9lcyBub3Qgb2NjdXIgd2l0aGluIHRoZSBleHRlcm5hbCBzdWJzZXQgb3IgYQ0KK3BhcmFtZXRlciBlbnRpdHksIGV4Y2VwdCB0aGF0IHdlbGwtZm9ybWVkIGRvY3VtZW50cyBuZWVkIG5vdCBkZWNsYXJlIGFueSBvZg0KK3RoZSBmb2xsb3dpbmcgZW50aXRpZXM6IDxjb2RlPmFtcDwvY29kZT4sIDxjb2RlPmx0PC9jb2RlPiwgPGNvZGU+Z3Q8L2NvZGU+LCA8Y29kZT5hcG9zPC9jb2RlPiwgPGNvZGU+cXVvdDwvY29kZT4uDQorVGhlIGRlY2xhcmF0aW9uIG9mIGEgZ2VuZXJhbCBlbnRpdHkgbXVzdCBwcmVjZWRlIGFueSByZWZlcmVuY2UgdG8gaXQgd2hpY2gNCithcHBlYXJzIGluIGEgZGVmYXVsdCB2YWx1ZSBpbiBhbiBhdHRyaWJ1dGUtbGlzdCBkZWNsYXJhdGlvbi48L3A+IDxwPk5vdGUgdGhhdA0KK2lmIGVudGl0aWVzIGFyZSBkZWNsYXJlZCBpbiB0aGUgZXh0ZXJuYWwgc3Vic2V0IG9yIGluIGV4dGVybmFsIHBhcmFtZXRlciBlbnRpdGllcywNCithIG5vbi12YWxpZGF0aW5nIHByb2Nlc3NvciBpcyA8YSBocmVmPSIjaW5jbHVkZS1pZi12YWxpZCI+PGNpdGU+bm90IG9ibGlnYXRlZA0KK3RvPC9jaXRlPjwvYT4gcmVhZCBhbmQgcHJvY2VzcyB0aGVpciBkZWNsYXJhdGlvbnM7IGZvciBzdWNoIGRvY3VtZW50cywgdGhlDQorcnVsZSB0aGF0IGFuIGVudGl0eSBtdXN0IGJlIGRlY2xhcmVkIGlzIGEgd2VsbC1mb3JtZWRuZXNzIGNvbnN0cmFpbnQgb25seQ0KK2lmIDxhIGhyZWY9IiNzZWMtcm1kIj48Y2l0ZT5zdGFuZGFsb25lPSd5ZXMnPC9jaXRlPjwvYT4uPC9wPiA8L2Rpdj4gPGRpdiBjbGFzcz0iY29uc3RyYWludCI+PHANCitjbGFzcz0icHJlZml4Ij48YSBuYW1lPSJ2Yy1lbnRkZWNsYXJlZCI+PC9hPjxiPlZhbGlkaXR5IGNvbnN0cmFpbnQ6IEVudGl0eQ0KK0RlY2xhcmVkPC9iPjwvcD48cD5JbiBhIGRvY3VtZW50IHdpdGggYW4gZXh0ZXJuYWwgc3Vic2V0IG9yIGV4dGVybmFsIHBhcmFtZXRlcg0KK2VudGl0aWVzIHdpdGggIjxjb2RlPnN0YW5kYWxvbmU9J25vJzwvY29kZT4iLCB0aGUgPGEgaHJlZj0iI05ULU5hbWUiPk5hbWU8L2E+DQorZ2l2ZW4gaW4gdGhlIGVudGl0eSByZWZlcmVuY2UgbXVzdCA8YSB0aXRsZT0ibWF0Y2giIGhyZWY9IiNkdC1tYXRjaCI+bWF0Y2g8L2E+DQordGhhdCBpbiBhbiA8YSBocmVmPSIjc2VjLWVudGl0eS1kZWNsIj48Y2l0ZT5lbnRpdHkgZGVjbGFyYXRpb248L2NpdGU+PC9hPi4NCitGb3IgaW50ZXJvcGVyYWJpbGl0eSwgdmFsaWQgZG9jdW1lbnRzIHNob3VsZCBkZWNsYXJlIHRoZSBlbnRpdGllcyA8Y29kZT5hbXA8L2NvZGU+LCA8Y29kZT5sdDwvY29kZT4sIDxjb2RlPmd0PC9jb2RlPiwgPGNvZGU+YXBvczwvY29kZT4sIDxjb2RlPnF1b3Q8L2NvZGUNCis+LCBpbiB0aGUgZm9ybSBzcGVjaWZpZWQgaW4gPGEgaHJlZj0iI3NlYy1wcmVkZWZpbmVkLWVudCI+PGI+NC42IFByZWRlZmluZWQNCitFbnRpdGllczwvYj48L2E+LiBUaGUgZGVjbGFyYXRpb24gb2YgYSBwYXJhbWV0ZXIgZW50aXR5IG11c3QgcHJlY2VkZSBhbnkgcmVmZXJlbmNlDQordG8gaXQuIFNpbWlsYXJseSwgdGhlIGRlY2xhcmF0aW9uIG9mIGEgZ2VuZXJhbCBlbnRpdHkgbXVzdCBwcmVjZWRlIGFueSBhdHRyaWJ1dGUtbGlzdA0KK2RlY2xhcmF0aW9uIGNvbnRhaW5pbmcgYSBkZWZhdWx0IHZhbHVlIHdpdGggYSBkaXJlY3Qgb3IgaW5kaXJlY3QgcmVmZXJlbmNlDQordG8gdGhhdCBnZW5lcmFsIGVudGl0eS48L3A+IDwvZGl2PiAgPGRpdiBjbGFzcz0iY29uc3RyYWludCI+PHAgY2xhc3M9InByZWZpeCI+PGENCituYW1lPSJ0ZXh0ZW50Ij48L2E+PGI+V2VsbC1mb3JtZWRuZXNzIGNvbnN0cmFpbnQ6IFBhcnNlZCBFbnRpdHk8L2I+PC9wPjxwPkFuDQorZW50aXR5IHJlZmVyZW5jZSBtdXN0IG5vdCBjb250YWluIHRoZSBuYW1lIG9mIGFuIDxhIHRpdGxlPSJVbnBhcnNlZCBFbnRpdHkiDQoraHJlZj0iI2R0LXVucGFyc2VkIj51bnBhcnNlZCBlbnRpdHk8L2E+LiBVbnBhcnNlZCBlbnRpdGllcyBtYXkgYmUgcmVmZXJyZWQNCit0byBvbmx5IGluIDxhIHRpdGxlPSJBdHRyaWJ1dGUgVmFsdWUiIGhyZWY9IiNkdC1hdHRydmFsIj5hdHRyaWJ1dGUgdmFsdWVzPC9hPg0KK2RlY2xhcmVkIHRvIGJlIG9mIHR5cGUgPGI+RU5USVRZPC9iPiBvciA8Yj5FTlRJVElFUzwvYj4uPC9wPiA8L2Rpdj4gPGRpdiBjbGFzcz0iY29uc3RyYWludCI+PHANCitjbGFzcz0icHJlZml4Ij48YSBuYW1lPSJub3JlY3Vyc2lvbiI+PC9hPjxiPldlbGwtZm9ybWVkbmVzcyBjb25zdHJhaW50OiBObw0KK1JlY3Vyc2lvbjwvYj48L3A+PHA+QSBwYXJzZWQgZW50aXR5IG11c3Qgbm90IGNvbnRhaW4gYSByZWN1cnNpdmUgcmVmZXJlbmNlDQordG8gaXRzZWxmLCBlaXRoZXIgZGlyZWN0bHkgb3IgaW5kaXJlY3RseS48L3A+IDwvZGl2PiA8ZGl2IGNsYXNzPSJjb25zdHJhaW50Ij48cA0KK2NsYXNzPSJwcmVmaXgiPjxhIG5hbWU9ImluZHRkIj48L2E+PGI+V2VsbC1mb3JtZWRuZXNzIGNvbnN0cmFpbnQ6IEluIERURDwvYj48L3A+PHA+UGFyYW1ldGVyLWVudGl0eQ0KK3JlZmVyZW5jZXMgbWF5IG9ubHkgYXBwZWFyIGluIHRoZSA8YSB0aXRsZT0iRG9jdW1lbnQgVHlwZSBEZWNsYXJhdGlvbiIgaHJlZj0iI2R0LWRvY3R5cGUiPkRURDwvYT4uPC9wPiA8L2Rpdj4gPHA+RXhhbXBsZXMNCitvZiBjaGFyYWN0ZXIgYW5kIGVudGl0eSByZWZlcmVuY2VzOjwvcD4gPHRhYmxlIGNsYXNzPSJlZyIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMSINCitjZWxscGFkZGluZz0iNSIgYmdjb2xvcj0iIzk5ZmZmZiI+DQorPHRyPg0KKzx0ZD48cHJlPlR5cGUgJmx0O2tleT5sZXNzLXRoYW4mbHQ7L2tleT4gKCZhbXA7I3gzQzspIHRvIHNhdmUgb3B0aW9ucy4NCitUaGlzIGRvY3VtZW50IHdhcyBwcmVwYXJlZCBvbiAmYW1wO2RvY2RhdGU7IGFuZA0KK2lzIGNsYXNzaWZpZWQgJmFtcDtzZWN1cml0eS1sZXZlbDsuPC9wcmU+PC90ZD4NCis8L3RyPg0KKzwvdGFibGU+IDxwPkV4YW1wbGUgb2YgYSBwYXJhbWV0ZXItZW50aXR5IHJlZmVyZW5jZTo8L3A+IDx0YWJsZSBjbGFzcz0iZWciDQord2lkdGg9IjEwMCUiIGJvcmRlcj0iMSIgY2VsbHBhZGRpbmc9IjUiIGJnY29sb3I9IiM5OWZmZmYiPg0KKzx0cj4NCis8dGQ+PHByZT4mbHQ7IS0tIGRlY2xhcmUgdGhlIHBhcmFtZXRlciBlbnRpdHkgIklTT0xhdDIiLi4uIC0tPg0KKyZsdDshRU5USVRZICUgSVNPTGF0Mg0KKyAgICAgICAgIFNZU1RFTSAiaHR0cDovL3d3dy54bWwuY29tL2lzby9pc29sYXQyLXhtbC5lbnRpdGllcyIgPg0KKyZsdDshLS0gLi4uIG5vdyByZWZlcmVuY2UgaXQuIC0tPg0KKyVJU09MYXQyOzwvcHJlPjwvdGQ+DQorPC90cj4NCis8L3RhYmxlPiA8L2Rpdj4gPGRpdiBjbGFzcz0iZGl2MiI+IDxoMz48YSBuYW1lPSJzZWMtZW50aXR5LWRlY2wiPjwvYT40LjIgRW50aXR5DQorRGVjbGFyYXRpb25zPC9oMz4gPHA+WzxhIHRpdGxlPSJlbnRpdHkgZGVjbGFyYXRpb24iIG5hbWU9ImR0LWVudGRlY2wiPkRlZmluaXRpb248L2E+Og0KKyBFbnRpdGllcyBhcmUgZGVjbGFyZWQgdGh1czpdPC9wPiA8aDU+RW50aXR5IERlY2xhcmF0aW9uPC9oNT48dGFibGUgY2xhc3M9InNjcmFwIj4NCis8dGJvZHk+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1FbnRpdHlEZWNsIj48L2E+WzcwXSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPkVudGl0eURlY2w8L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+PGEgaHJlZj0iI05ULUdFRGVjbCI+R0VEZWNsPC9hPiB8IDxhIGhyZWY9IiNOVC1QRURlY2wiPlBFRGVjbDwvYT48L2NvZGU+PC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PGEgbmFtZT0iTlQtR0VEZWNsIj48L2E+WzcxXSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPkdFRGVjbDwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT4nJmx0OyFFTlRJVFknIDxhIGhyZWY9IiNOVC1TIj5TPC9hPiA8YSBocmVmPSIjTlQtTmFtZSI+TmFtZTwvYT4gPGENCitocmVmPSIjTlQtUyI+UzwvYT4gPGEgaHJlZj0iI05ULUVudGl0eURlZiI+RW50aXR5RGVmPC9hPiA8YSBocmVmPSIjTlQtUyI+UzwvYT4/DQorJz4nPC9jb2RlPjwvdGQ+DQorPC90cj4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULVBFRGVjbCI+PC9hPls3Ml0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5QRURlY2w8L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+JyZsdDshRU5USVRZJyA8YSBocmVmPSIjTlQtUyI+UzwvYT4gJyUnIDxhIGhyZWY9IiNOVC1TIj5TPC9hPiA8YQ0KK2hyZWY9IiNOVC1OYW1lIj5OYW1lPC9hPiA8YSBocmVmPSIjTlQtUyI+UzwvYT4gPGEgaHJlZj0iI05ULVBFRGVmIj5QRURlZjwvYT4gPGENCitocmVmPSIjTlQtUyI+UzwvYT4/ICc+JzwvY29kZT48L3RkPg0KKzwvdHI+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1FbnRpdHlEZWYiPjwvYT5bNzNdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+RW50aXR5RGVmPC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPjxhIGhyZWY9IiNOVC1FbnRpdHlWYWx1ZSI+RW50aXR5VmFsdWU8L2E+IHwgKDxhIGhyZWY9IiNOVC1FeHRlcm5hbElEIj5FeHRlcm5hbElEPC9hPiA8YQ0KK2hyZWY9IiNOVC1ORGF0YURlY2wiPk5EYXRhRGVjbDwvYT4/KTwvY29kZT48L3RkPg0KKzwvdHI+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1QRURlZiI+PC9hPls3NF0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5QRURlZjwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT48YSBocmVmPSIjTlQtRW50aXR5VmFsdWUiPkVudGl0eVZhbHVlPC9hPiB8IDxhIGhyZWY9IiNOVC1FeHRlcm5hbElEIj5FeHRlcm5hbElEPC9hPjwvY29kZT48L3RkPg0KKzwvdHI+DQorPC90Ym9keT48L3RhYmxlPiA8cD5UaGUgPGEgaHJlZj0iI05ULU5hbWUiPk5hbWU8L2E+IGlkZW50aWZpZXMgdGhlIGVudGl0eQ0KK2luIGFuIDxhIHRpdGxlPSJFbnRpdHkgUmVmZXJlbmNlIiBocmVmPSIjZHQtZW50cmVmIj5lbnRpdHkgcmVmZXJlbmNlPC9hPiBvciwNCitpbiB0aGUgY2FzZSBvZiBhbiB1bnBhcnNlZCBlbnRpdHksIGluIHRoZSB2YWx1ZSBvZiBhbiA8Yj5FTlRJVFk8L2I+IG9yIDxiPkVOVElUSUVTPC9iPg0KK2F0dHJpYnV0ZS4gSWYgdGhlIHNhbWUgZW50aXR5IGlzIGRlY2xhcmVkIG1vcmUgdGhhbiBvbmNlLCB0aGUgZmlyc3QgZGVjbGFyYXRpb24NCitlbmNvdW50ZXJlZCBpcyBiaW5kaW5nOyBhdCB1c2VyIG9wdGlvbiwgYW4gWE1MIHByb2Nlc3NvciBtYXkgaXNzdWUgYSB3YXJuaW5nDQoraWYgZW50aXRpZXMgYXJlIGRlY2xhcmVkIG11bHRpcGxlIHRpbWVzLjwvcD4gPGRpdiBjbGFzcz0iZGl2MyI+IDxoND48YSBuYW1lPSJzZWMtaW50ZXJuYWwtZW50Ij48L2E+NC4yLjENCitJbnRlcm5hbCBFbnRpdGllczwvaDQ+IDxwPls8YSB0aXRsZT0iSW50ZXJuYWwgRW50aXR5IFJlcGxhY2VtZW50IFRleHQiIG5hbWU9ImR0LWludGVybmVudCI+RGVmaW5pdGlvbjwvYT46DQorSWYgdGhlIGVudGl0eSBkZWZpbml0aW9uIGlzIGFuIDxhIGhyZWY9IiNOVC1FbnRpdHlWYWx1ZSI+RW50aXR5VmFsdWU8L2E+LA0KK3RoZSBkZWZpbmVkIGVudGl0eSBpcyBjYWxsZWQgYW4gPGI+aW50ZXJuYWwgZW50aXR5PC9iPi4gVGhlcmUgaXMgbm8gc2VwYXJhdGUNCitwaHlzaWNhbCBzdG9yYWdlIG9iamVjdCwgYW5kIHRoZSBjb250ZW50IG9mIHRoZSBlbnRpdHkgaXMgZ2l2ZW4gaW4gdGhlIGRlY2xhcmF0aW9uLl0NCitOb3RlIHRoYXQgc29tZSBwcm9jZXNzaW5nIG9mIGVudGl0eSBhbmQgY2hhcmFjdGVyIHJlZmVyZW5jZXMgaW4gdGhlIDxhIHRpdGxlPSJMaXRlcmFsIEVudGl0eSBWYWx1ZSINCitocmVmPSIjZHQtbGl0ZW50dmFsIj5saXRlcmFsIGVudGl0eSB2YWx1ZTwvYT4gbWF5IGJlIHJlcXVpcmVkIHRvIHByb2R1Y2UgdGhlDQorY29ycmVjdCA8YSB0aXRsZT0iUmVwbGFjZW1lbnQgVGV4dCIgaHJlZj0iI2R0LXJlcGx0ZXh0Ij5yZXBsYWNlbWVudCB0ZXh0PC9hPjoNCitzZWUgPGEgaHJlZj0iI2ludGVybi1yZXBsYWNlbWVudCI+PGI+NC41IENvbnN0cnVjdGlvbiBvZiBJbnRlcm5hbCBFbnRpdHkgUmVwbGFjZW1lbnQNCitUZXh0PC9iPjwvYT4uPC9wPiA8cD5BbiBpbnRlcm5hbCBlbnRpdHkgaXMgYSA8YSB0aXRsZT0iVGV4dCBFbnRpdHkiIGhyZWY9IiNkdC1wYXJzZWRlbnQiPnBhcnNlZA0KK2VudGl0eTwvYT4uPC9wPiA8cD5FeGFtcGxlIG9mIGFuIGludGVybmFsIGVudGl0eSBkZWNsYXJhdGlvbjo8L3A+IDx0YWJsZSBjbGFzcz0iZWciDQord2lkdGg9IjEwMCUiIGJvcmRlcj0iMSIgY2VsbHBhZGRpbmc9IjUiIGJnY29sb3I9IiM5OWZmZmYiPg0KKzx0cj4NCis8dGQ+PHByZT4mbHQ7IUVOVElUWSBQdWItU3RhdHVzICJUaGlzIGlzIGEgcHJlLXJlbGVhc2Ugb2YgdGhlDQorIHNwZWNpZmljYXRpb24uIj48L3ByZT48L3RkPg0KKzwvdHI+DQorPC90YWJsZT4gPC9kaXY+IDxkaXYgY2xhc3M9ImRpdjMiPiA8aDQ+PGEgbmFtZT0ic2VjLWV4dGVybmFsLWVudCI+PC9hPjQuMi4yDQorRXh0ZXJuYWwgRW50aXRpZXM8L2g0PiA8cD5bPGEgdGl0bGU9IkV4dGVybmFsIEVudGl0eSIgbmFtZT0iZHQtZXh0ZW50Ij5EZWZpbml0aW9uPC9hPjoNCitJZiB0aGUgZW50aXR5IGlzIG5vdCBpbnRlcm5hbCwgaXQgaXMgYW4gPGI+ZXh0ZXJuYWwgZW50aXR5PC9iPiwgZGVjbGFyZWQgYXMNCitmb2xsb3dzOl08L3A+IDxoNT5FeHRlcm5hbCBFbnRpdHkgRGVjbGFyYXRpb248L2g1Pjx0YWJsZSBjbGFzcz0ic2NyYXAiPjx0Ym9keT4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULUV4dGVybmFsSUQiPjwvYT5bNzVdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+RXh0ZXJuYWxJRDwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT4nU1lTVEVNJyA8YSBocmVmPSIjTlQtUyI+UzwvYT4gPGEgaHJlZj0iI05ULVN5c3RlbUxpdGVyYWwiPlN5c3RlbUxpdGVyYWw8L2E+PC9jb2RlPjwvdGQ+DQorPC90cj4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjwvdGQ+DQorPHRkPjxjb2RlPnwgJ1BVQkxJQycgPGEgaHJlZj0iI05ULVMiPlM8L2E+IDxhIGhyZWY9IiNOVC1QdWJpZExpdGVyYWwiPlB1YmlkTGl0ZXJhbDwvYT4gPGENCitocmVmPSIjTlQtUyI+UzwvYT4gPGEgaHJlZj0iI05ULVN5c3RlbUxpdGVyYWwiPlN5c3RlbUxpdGVyYWw8L2E+IDwvY29kZT48L3RkPg0KKzwvdHI+DQorPC90Ym9keT48dGJvZHk+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1ORGF0YURlY2wiPjwvYT5bNzZdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+TkRhdGFEZWNsPC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPjxhIGhyZWY9IiNOVC1TIj5TPC9hPiAnTkRBVEEnIDxhIGhyZWY9IiNOVC1TIj5TPC9hPiA8YSBocmVmPSIjTlQtTmFtZSI+TmFtZTwvYT48L2NvZGU+PC90ZD4NCis8dGQ+PGEgaHJlZj0iI25vdC1kZWNsYXJlZCI+W1ZDOiBOb3RhdGlvbiBEZWNsYXJlZF08L2E+PC90ZD4NCis8L3RyPg0KKzwvdGJvZHk+PC90YWJsZT4gPHA+SWYgdGhlIDxhIGhyZWY9IiNOVC1ORGF0YURlY2wiPk5EYXRhRGVjbDwvYT4gaXMgcHJlc2VudCwNCit0aGlzIGlzIGEgZ2VuZXJhbCA8YSB0aXRsZT0iVW5wYXJzZWQgRW50aXR5IiBocmVmPSIjZHQtdW5wYXJzZWQiPnVucGFyc2VkDQorZW50aXR5PC9hPjsgb3RoZXJ3aXNlIGl0IGlzIGEgcGFyc2VkIGVudGl0eS48L3A+IDxkaXYgY2xhc3M9ImNvbnN0cmFpbnQiPjxwDQorY2xhc3M9InByZWZpeCI+PGEgbmFtZT0ibm90LWRlY2xhcmVkIj48L2E+PGI+VmFsaWRpdHkgY29uc3RyYWludDogTm90YXRpb24NCitEZWNsYXJlZDwvYj48L3A+PHA+VGhlIDxhIGhyZWY9IiNOVC1OYW1lIj5OYW1lPC9hPiBtdXN0IG1hdGNoIHRoZSBkZWNsYXJlZA0KK25hbWUgb2YgYSA8YSB0aXRsZT0iTm90YXRpb24iIGhyZWY9IiNkdC1ub3RhdGlvbiI+bm90YXRpb248L2E+LjwvcD4gPC9kaXY+IDxwPls8YQ0KK3RpdGxlPSJTeXN0ZW0gSWRlbnRpZmllciIgbmFtZT0iZHQtc3lzaWQiPkRlZmluaXRpb248L2E+OiBUaGUgPGEgaHJlZj0iI05ULVN5c3RlbUxpdGVyYWwiPlN5c3RlbUxpdGVyYWw8L2E+DQoraXMgY2FsbGVkIHRoZSBlbnRpdHkncyA8Yj5zeXN0ZW0gaWRlbnRpZmllcjwvYj4uIEl0IGlzIGEgVVJJIHJlZmVyZW5jZSAoYXMNCitkZWZpbmVkIGluIDxhIGhyZWY9IiNyZmMyMzk2Ij5bSUVURiBSRkMgMjM5Nl08L2E+LCB1cGRhdGVkIGJ5IDxhIGhyZWY9IiNyZmMyNzMyIj5bSUVURg0KK1JGQyAyNzMyXTwvYT4pLCBtZWFudCB0byBiZSBkZXJlZmVyZW5jZWQgdG8gb2J0YWluIGlucHV0IGZvciB0aGUgWE1MIHByb2Nlc3Nvcg0KK3RvIGNvbnN0cnVjdCB0aGUgZW50aXR5J3MgcmVwbGFjZW1lbnQgdGV4dC5dIEl0IGlzIGFuIGVycm9yIGZvciBhIGZyYWdtZW50DQoraWRlbnRpZmllciAoYmVnaW5uaW5nIHdpdGggYSA8Y29kZT4jPC9jb2RlPiBjaGFyYWN0ZXIpIHRvIGJlIHBhcnQgb2YgYSBzeXN0ZW0NCitpZGVudGlmaWVyLiBVbmxlc3Mgb3RoZXJ3aXNlIHByb3ZpZGVkIGJ5IGluZm9ybWF0aW9uIG91dHNpZGUgdGhlIHNjb3BlIG9mDQordGhpcyBzcGVjaWZpY2F0aW9uIChlLmcuIGEgc3BlY2lhbCBYTUwgZWxlbWVudCB0eXBlIGRlZmluZWQgYnkgYSBwYXJ0aWN1bGFyDQorRFRELCBvciBhIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gZGVmaW5lZCBieSBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24gc3BlY2lmaWNhdGlvbiksDQorcmVsYXRpdmUgVVJJcyBhcmUgcmVsYXRpdmUgdG8gdGhlIGxvY2F0aW9uIG9mIHRoZSByZXNvdXJjZSB3aXRoaW4gd2hpY2ggdGhlDQorZW50aXR5IGRlY2xhcmF0aW9uIG9jY3Vycy4gQSBVUkkgbWlnaHQgdGh1cyBiZSByZWxhdGl2ZSB0byB0aGUgPGEgdGl0bGU9IkRvY3VtZW50IEVudGl0eSINCitocmVmPSIjZHQtZG9jZW50Ij5kb2N1bWVudCBlbnRpdHk8L2E+LCB0byB0aGUgZW50aXR5IGNvbnRhaW5pbmcgdGhlIDxhIHRpdGxlPSJEb2N1bWVudCBUeXBlIERlY2xhcmF0aW9uIg0KK2hyZWY9IiNkdC1kb2N0eXBlIj5leHRlcm5hbCBEVEQgc3Vic2V0PC9hPiwgb3IgdG8gc29tZSBvdGhlciA8YSB0aXRsZT0iRXh0ZXJuYWwgRW50aXR5Ig0KK2hyZWY9IiNkdC1leHRlbnQiPmV4dGVybmFsIHBhcmFtZXRlciBlbnRpdHk8L2E+LjwvcD4gPHA+VVJJIHJlZmVyZW5jZXMgcmVxdWlyZQ0KK2VuY29kaW5nIGFuZCBlc2NhcGluZyBvZiBjZXJ0YWluIGNoYXJhY3RlcnMuIFRoZSBkaXNhbGxvd2VkIGNoYXJhY3RlcnMgaW5jbHVkZQ0KK2FsbCBub24tQVNDSUkgY2hhcmFjdGVycywgcGx1cyB0aGUgZXhjbHVkZWQgY2hhcmFjdGVycyBsaXN0ZWQgaW4gU2VjdGlvbiAyLjQNCitvZiA8YSBocmVmPSIjcmZjMjM5NiI+W0lFVEYgUkZDIDIzOTZdPC9hPiwgZXhjZXB0IGZvciB0aGUgbnVtYmVyIHNpZ24gKDxjb2RlPiM8L2NvZGU+KQ0KK2FuZCBwZXJjZW50IHNpZ24gKDxjb2RlPiU8L2NvZGU+KSBjaGFyYWN0ZXJzIGFuZCB0aGUgc3F1YXJlIGJyYWNrZXQgY2hhcmFjdGVycw0KK3JlLWFsbG93ZWQgaW4gPGEgaHJlZj0iI3JmYzI3MzIiPltJRVRGIFJGQyAyNzMyXTwvYT4uIERpc2FsbG93ZWQgY2hhcmFjdGVycw0KK211c3QgYmUgZXNjYXBlZCBhcyBmb2xsb3dzOjwvcD4gPG9sPg0KKzxsaT48cD5FYWNoIGRpc2FsbG93ZWQgY2hhcmFjdGVyIGlzIGNvbnZlcnRlZCB0byBVVEYtOCA8YSBocmVmPSIjcmZjMjI3OSI+W0lFVEYNCitSRkMgMjI3OV08L2E+IGFzIG9uZSBvciBtb3JlIGJ5dGVzLjwvcD48L2xpPg0KKzxsaT48cD5Bbnkgb2N0ZXRzIGNvcnJlc3BvbmRpbmcgdG8gYSBkaXNhbGxvd2VkIGNoYXJhY3RlciBhcmUgZXNjYXBlZCB3aXRoDQordGhlIFVSSSBlc2NhcGluZyBtZWNoYW5pc20gKHRoYXQgaXMsIGNvbnZlcnRlZCB0byA8Y29kZT4lPC9jb2RlPjx2YXI+SEg8L3Zhcj4sDQord2hlcmUgSEggaXMgdGhlIGhleGFkZWNpbWFsIG5vdGF0aW9uIG9mIHRoZSBieXRlIHZhbHVlKS48L3A+PC9saT4NCis8bGk+PHA+VGhlIG9yaWdpbmFsIGNoYXJhY3RlciBpcyByZXBsYWNlZCBieSB0aGUgcmVzdWx0aW5nIGNoYXJhY3RlciBzZXF1ZW5jZS48L3A+IDwvbGk+DQorPC9vbD4gPHA+WzxhIHRpdGxlPSJQdWJsaWMgaWRlbnRpZmllciIgbmFtZT0iZHQtcHViaWQiPkRlZmluaXRpb248L2E+OiAgSW4NCithZGRpdGlvbiB0byBhIHN5c3RlbSBpZGVudGlmaWVyLCBhbiBleHRlcm5hbCBpZGVudGlmaWVyIG1heSBpbmNsdWRlIGEgPGI+cHVibGljDQoraWRlbnRpZmllcjwvYj4uXSBBbiBYTUwgcHJvY2Vzc29yIGF0dGVtcHRpbmcgdG8gcmV0cmlldmUgdGhlIGVudGl0eSdzIGNvbnRlbnQNCittYXkgdXNlIHRoZSBwdWJsaWMgaWRlbnRpZmllciB0byB0cnkgdG8gZ2VuZXJhdGUgYW4gYWx0ZXJuYXRpdmUgVVJJIHJlZmVyZW5jZS4NCitJZiB0aGUgcHJvY2Vzc29yIGlzIHVuYWJsZSB0byBkbyBzbywgaXQgbXVzdCB1c2UgdGhlIFVSSSByZWZlcmVuY2Ugc3BlY2lmaWVkDQoraW4gdGhlIHN5c3RlbSBsaXRlcmFsLiBCZWZvcmUgYSBtYXRjaCBpcyBhdHRlbXB0ZWQsIGFsbCBzdHJpbmdzIG9mIHdoaXRlIHNwYWNlDQoraW4gdGhlIHB1YmxpYyBpZGVudGlmaWVyIG11c3QgYmUgbm9ybWFsaXplZCB0byBzaW5nbGUgc3BhY2UgY2hhcmFjdGVycyAoI3gyMCksDQorYW5kIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlIHNwYWNlIG11c3QgYmUgcmVtb3ZlZC48L3A+IDxwPkV4YW1wbGVzIG9mIGV4dGVybmFsDQorZW50aXR5IGRlY2xhcmF0aW9uczo8L3A+IDx0YWJsZSBjbGFzcz0iZWciIHdpZHRoPSIxMDAlIiBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSI1Ig0KK2JnY29sb3I9IiM5OWZmZmYiPg0KKzx0cj4NCis8dGQ+PHByZT4mbHQ7IUVOVElUWSBvcGVuLWhhdGNoDQorICAgICAgICAgU1lTVEVNICJodHRwOi8vd3d3LnRleHR1YWxpdHkuY29tL2JvaWxlcnBsYXRlL09wZW5IYXRjaC54bWwiPg0KKyZsdDshRU5USVRZIG9wZW4taGF0Y2gNCisgICAgICAgICBQVUJMSUMgIi0vL1RleHR1YWxpdHkvL1RFWFQgU3RhbmRhcmQgb3Blbi1oYXRjaCBib2lsZXJwbGF0ZS8vRU4iDQorICAgICAgICAgImh0dHA6Ly93d3cudGV4dHVhbGl0eS5jb20vYm9pbGVycGxhdGUvT3BlbkhhdGNoLnhtbCI+DQorJmx0OyFFTlRJVFkgaGF0Y2gtcGljDQorICAgICAgICAgU1lTVEVNICIuLi9ncmFmaXgvT3BlbkhhdGNoLmdpZiINCisgICAgICAgICBOREFUQSBnaWYgPjwvcHJlPjwvdGQ+DQorPC90cj4NCis8L3RhYmxlPiA8L2Rpdj4gPC9kaXY+IDxkaXYgY2xhc3M9ImRpdjIiPiA8aDM+PGEgbmFtZT0iVGV4dEVudGl0aWVzIj48L2E+NC4zDQorUGFyc2VkIEVudGl0aWVzPC9oMz4gPGRpdiBjbGFzcz0iZGl2MyI+IDxoND48YSBuYW1lPSJzZWMtVGV4dERlY2wiPjwvYT40LjMuMQ0KK1RoZSBUZXh0IERlY2xhcmF0aW9uPC9oND4gPHA+RXh0ZXJuYWwgcGFyc2VkIGVudGl0aWVzIHNob3VsZCBlYWNoIGJlZ2luIHdpdGgNCithIDxiPnRleHQgZGVjbGFyYXRpb248L2I+LjwvcD4gPGg1PlRleHQgRGVjbGFyYXRpb248L2g1Pjx0YWJsZSBjbGFzcz0ic2NyYXAiPg0KKzx0Ym9keT4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULVRleHREZWNsIj48L2E+Wzc3XSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPlRleHREZWNsPC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPicmbHQ7P3htbCcgPGEgaHJlZj0iI05ULVZlcnNpb25JbmZvIj5WZXJzaW9uSW5mbzwvYT4/IDxhIGhyZWY9IiNOVC1FbmNvZGluZ0RlY2wiPkVuY29kaW5nRGVjbDwvYT4gPGENCitocmVmPSIjTlQtUyI+UzwvYT4/ICc/Pic8L2NvZGU+PC90ZD4NCis8L3RyPg0KKzwvdGJvZHk+PC90YWJsZT4gPHA+VGhlIHRleHQgZGVjbGFyYXRpb24gbXVzdCBiZSBwcm92aWRlZCBsaXRlcmFsbHksIG5vdCBieQ0KK3JlZmVyZW5jZSB0byBhIHBhcnNlZCBlbnRpdHkuIE5vIHRleHQgZGVjbGFyYXRpb24gbWF5IGFwcGVhciBhdCBhbnkgcG9zaXRpb24NCitvdGhlciB0aGFuIHRoZSBiZWdpbm5pbmcgb2YgYW4gZXh0ZXJuYWwgcGFyc2VkIGVudGl0eS4gVGhlIHRleHQgZGVjbGFyYXRpb24NCitpbiBhbiBleHRlcm5hbCBwYXJzZWQgZW50aXR5IGlzIG5vdCBjb25zaWRlcmVkIHBhcnQgb2YgaXRzIDxhIHRpdGxlPSJSZXBsYWNlbWVudCBUZXh0Ig0KK2hyZWY9IiNkdC1yZXBsdGV4dCI+cmVwbGFjZW1lbnQgdGV4dDwvYT4uPC9wPiA8L2Rpdj4gPGRpdiBjbGFzcz0iZGl2MyI+IDxoND48YQ0KK25hbWU9IndmLWVudGl0aWVzIj48L2E+NC4zLjIgV2VsbC1Gb3JtZWQgUGFyc2VkIEVudGl0aWVzPC9oND4gPHA+VGhlIGRvY3VtZW50DQorZW50aXR5IGlzIHdlbGwtZm9ybWVkIGlmIGl0IG1hdGNoZXMgdGhlIHByb2R1Y3Rpb24gbGFiZWxlZCA8YSBocmVmPSIjTlQtZG9jdW1lbnQiPmRvY3VtZW50PC9hPi4NCitBbiBleHRlcm5hbCBnZW5lcmFsIHBhcnNlZCBlbnRpdHkgaXMgd2VsbC1mb3JtZWQgaWYgaXQgbWF0Y2hlcyB0aGUgcHJvZHVjdGlvbg0KK2xhYmVsZWQgPGEgaHJlZj0iI05ULWV4dFBhcnNlZEVudCI+ZXh0UGFyc2VkRW50PC9hPi4gQWxsIGV4dGVybmFsIHBhcmFtZXRlcg0KK2VudGl0aWVzIGFyZSB3ZWxsLWZvcm1lZCBieSBkZWZpbml0aW9uLjwvcD4gPGg1PldlbGwtRm9ybWVkIEV4dGVybmFsIFBhcnNlZA0KK0VudGl0eTwvaDU+PHRhYmxlIGNsYXNzPSJzY3JhcCI+PHRib2R5Pg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PGEgbmFtZT0iTlQtZXh0UGFyc2VkRW50Ij48L2E+Wzc4XSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPmV4dFBhcnNlZEVudDwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT48YSBocmVmPSIjTlQtVGV4dERlY2wiPlRleHREZWNsPC9hPj8gPGEgaHJlZj0iI05ULWNvbnRlbnQiPmNvbnRlbnQ8L2E+PC9jb2RlPjwvdGQ+DQorPC90cj4NCis8L3Rib2R5PjwvdGFibGU+IDxwPkFuIGludGVybmFsIGdlbmVyYWwgcGFyc2VkIGVudGl0eSBpcyB3ZWxsLWZvcm1lZCBpZiBpdHMNCityZXBsYWNlbWVudCB0ZXh0IG1hdGNoZXMgdGhlIHByb2R1Y3Rpb24gbGFiZWxlZCA8YSBocmVmPSIjTlQtY29udGVudCI+Y29udGVudDwvYT4uDQorQWxsIGludGVybmFsIHBhcmFtZXRlciBlbnRpdGllcyBhcmUgd2VsbC1mb3JtZWQgYnkgZGVmaW5pdGlvbi48L3A+IDxwPkEgY29uc2VxdWVuY2UNCitvZiB3ZWxsLWZvcm1lZG5lc3MgaW4gZW50aXRpZXMgaXMgdGhhdCB0aGUgbG9naWNhbCBhbmQgcGh5c2ljYWwgc3RydWN0dXJlcw0KK2luIGFuIFhNTCBkb2N1bWVudCBhcmUgcHJvcGVybHkgbmVzdGVkOyBubyA8YSB0aXRsZT0iU3RhcnQtVGFnIiBocmVmPSIjZHQtc3RhZyI+c3RhcnQtdGFnPC9hPiwgPGENCit0aXRsZT0iRW5kIFRhZyIgaHJlZj0iI2R0LWV0YWciPmVuZC10YWc8L2E+LCA8YSB0aXRsZT0iRW1wdHkiIGhyZWY9IiNkdC1lbXB0eSI+ZW1wdHktZWxlbWVudA0KK3RhZzwvYT4sIDxhIHRpdGxlPSJFbGVtZW50IiBocmVmPSIjZHQtZWxlbWVudCI+ZWxlbWVudDwvYT4sIDxhIHRpdGxlPSJDb21tZW50Ig0KK2hyZWY9IiNkdC1jb21tZW50Ij5jb21tZW50PC9hPiwgPGEgdGl0bGU9IlByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24iIGhyZWY9IiNkdC1waSI+cHJvY2Vzc2luZw0KK2luc3RydWN0aW9uPC9hPiwgPGEgdGl0bGU9IkNoYXJhY3RlciBSZWZlcmVuY2UiIGhyZWY9IiNkdC1jaGFycmVmIj5jaGFyYWN0ZXINCityZWZlcmVuY2U8L2E+LCBvciA8YSB0aXRsZT0iRW50aXR5IFJlZmVyZW5jZSIgaHJlZj0iI2R0LWVudHJlZiI+ZW50aXR5IHJlZmVyZW5jZTwvYT4NCitjYW4gYmVnaW4gaW4gb25lIGVudGl0eSBhbmQgZW5kIGluIGFub3RoZXIuPC9wPiA8L2Rpdj4gPGRpdiBjbGFzcz0iZGl2MyI+IDxoND48YQ0KK25hbWU9ImNoYXJlbmNvZGluZyI+PC9hPjQuMy4zIENoYXJhY3RlciBFbmNvZGluZyBpbiBFbnRpdGllczwvaDQ+IDxwPkVhY2gNCitleHRlcm5hbCBwYXJzZWQgZW50aXR5IGluIGFuIFhNTCBkb2N1bWVudCBtYXkgdXNlIGEgZGlmZmVyZW50IGVuY29kaW5nIGZvcg0KK2l0cyBjaGFyYWN0ZXJzLiBBbGwgWE1MIHByb2Nlc3NvcnMgbXVzdCBiZSBhYmxlIHRvIHJlYWQgZW50aXRpZXMgaW4gYm90aCB0aGUNCitVVEYtOCBhbmQgVVRGLTE2IGVuY29kaW5ncy4gVGhlIHRlcm1zICJVVEYtOCIgYW5kICJVVEYtMTYiIGluIHRoaXMgc3BlY2lmaWNhdGlvbg0KK2RvIG5vdCBhcHBseSB0byBjaGFyYWN0ZXIgZW5jb2RpbmdzIHdpdGggYW55IG90aGVyIGxhYmVscywgZXZlbiBpZiB0aGUgZW5jb2RpbmdzDQorb3IgbGFiZWxzIGFyZSB2ZXJ5IHNpbWlsYXIgdG8gVVRGLTggb3IgVVRGLTE2LjwvcD4gPHA+RW50aXRpZXMgZW5jb2RlZCBpbg0KK1VURi0xNiBtdXN0IGJlZ2luIHdpdGggdGhlIEJ5dGUgT3JkZXIgTWFyayBkZXNjcmliZWQgYnkgQW5uZXggRiBvZiA8YSBocmVmPSIjSVNPMTA2NDYiPltJU08vSUVDDQorMTA2NDZdPC9hPiwgQW5uZXggSCBvZiA8YSBocmVmPSIjSVNPMTA2NDYtMjAwMCI+W0lTTy9JRUMgMTA2NDYtMjAwMF08L2E+LA0KK3NlY3Rpb24gMi40IG9mIDxhIGhyZWY9IiNVbmljb2RlIj5bVW5pY29kZV08L2E+LCBhbmQgc2VjdGlvbiAyLjcgb2YgPGEgaHJlZj0iI1VuaWNvZGUzIj5bVW5pY29kZTNdPC9hPg0KKyh0aGUgWkVSTyBXSURUSCBOTy1CUkVBSyBTUEFDRSBjaGFyYWN0ZXIsICN4RkVGRikuIFRoaXMgaXMgYW4gZW5jb2Rpbmcgc2lnbmF0dXJlLA0KK25vdCBwYXJ0IG9mIGVpdGhlciB0aGUgbWFya3VwIG9yIHRoZSBjaGFyYWN0ZXIgZGF0YSBvZiB0aGUgWE1MIGRvY3VtZW50LiBYTUwNCitwcm9jZXNzb3JzIG11c3QgYmUgYWJsZSB0byB1c2UgdGhpcyBjaGFyYWN0ZXIgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIFVURi04DQorYW5kIFVURi0xNiBlbmNvZGVkIGRvY3VtZW50cy48L3A+IDxwPkFsdGhvdWdoIGFuIFhNTCBwcm9jZXNzb3IgaXMgcmVxdWlyZWQNCit0byByZWFkIG9ubHkgZW50aXRpZXMgaW4gdGhlIFVURi04IGFuZCBVVEYtMTYgZW5jb2RpbmdzLCBpdCBpcyByZWNvZ25pemVkDQordGhhdCBvdGhlciBlbmNvZGluZ3MgYXJlIHVzZWQgYXJvdW5kIHRoZSB3b3JsZCwgYW5kIGl0IG1heSBiZSBkZXNpcmVkIGZvcg0KK1hNTCBwcm9jZXNzb3JzIHRvIHJlYWQgZW50aXRpZXMgdGhhdCB1c2UgdGhlbS4gSW4gdGhlIGFic2VuY2Ugb2YgZXh0ZXJuYWwNCitjaGFyYWN0ZXIgZW5jb2RpbmcgaW5mb3JtYXRpb24gKHN1Y2ggYXMgTUlNRSBoZWFkZXJzKSwgcGFyc2VkIGVudGl0aWVzIHdoaWNoDQorYXJlIHN0b3JlZCBpbiBhbiBlbmNvZGluZyBvdGhlciB0aGFuIFVURi04IG9yIFVURi0xNiBtdXN0IGJlZ2luIHdpdGggYSB0ZXh0DQorZGVjbGFyYXRpb24gKHNlZSA8YSBocmVmPSIjc2VjLVRleHREZWNsIj48Yj40LjMuMSBUaGUgVGV4dCBEZWNsYXJhdGlvbjwvYj48L2E+KQ0KK2NvbnRhaW5pbmcgYW4gZW5jb2RpbmcgZGVjbGFyYXRpb246PC9wPiA8aDU+RW5jb2RpbmcgRGVjbGFyYXRpb248L2g1Pjx0YWJsZQ0KK2NsYXNzPSJzY3JhcCI+PHRib2R5Pg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PGEgbmFtZT0iTlQtRW5jb2RpbmdEZWNsIj48L2E+WzgwXSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPkVuY29kaW5nRGVjbDwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT48YSBocmVmPSIjTlQtUyI+UzwvYT4gJ2VuY29kaW5nJyA8YSBocmVmPSIjTlQtRXEiPkVxPC9hPiAoJyInIDxhDQoraHJlZj0iI05ULUVuY05hbWUiPkVuY05hbWU8L2E+ICciJyB8ICInIiA8YSBocmVmPSIjTlQtRW5jTmFtZSI+RW5jTmFtZTwvYT4NCisiJyIgKSA8L2NvZGU+PC90ZD4NCis8L3RyPg0KKzwvdGJvZHk+PHRib2R5Pg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PGEgbmFtZT0iTlQtRW5jTmFtZSI+PC9hPls4MV0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5FbmNOYW1lPC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPltBLVphLXpdIChbQS1aYS16MC05Ll9dIHwgJy0nKSo8L2NvZGU+PC90ZD4NCis8dGQ+PGk+LyogRW5jb2RpbmcgbmFtZSBjb250YWlucyBvbmx5IExhdGluIGNoYXJhY3RlcnMgKi88L2k+PC90ZD4NCis8L3RyPg0KKzwvdGJvZHk+PC90YWJsZT4gPHA+SW4gdGhlIDxhIHRpdGxlPSJEb2N1bWVudCBFbnRpdHkiIGhyZWY9IiNkdC1kb2NlbnQiPmRvY3VtZW50DQorZW50aXR5PC9hPiwgdGhlIGVuY29kaW5nIGRlY2xhcmF0aW9uIGlzIHBhcnQgb2YgdGhlIDxhIHRpdGxlPSJYTUwgRGVjbGFyYXRpb24iDQoraHJlZj0iI2R0LXhtbGRlY2wiPlhNTCBkZWNsYXJhdGlvbjwvYT4uIFRoZSA8YSBocmVmPSIjTlQtRW5jTmFtZSI+RW5jTmFtZTwvYT4NCitpcyB0aGUgbmFtZSBvZiB0aGUgZW5jb2RpbmcgdXNlZC48L3A+ICA8cD5JbiBhbiBlbmNvZGluZyBkZWNsYXJhdGlvbiwgdGhlDQordmFsdWVzICI8Y29kZT5VVEYtODwvY29kZT4iLCAiPGNvZGU+VVRGLTE2PC9jb2RlPiIsICI8Y29kZT5JU08tMTA2NDYtVUNTLTI8L2NvZGU+IiwNCithbmQgIjxjb2RlPklTTy0xMDY0Ni1VQ1MtNDwvY29kZT4iIHNob3VsZCBiZSB1c2VkIGZvciB0aGUgdmFyaW91cyBlbmNvZGluZ3MNCithbmQgdHJhbnNmb3JtYXRpb25zIG9mIFVuaWNvZGUgLyBJU08vSUVDIDEwNjQ2LCB0aGUgdmFsdWVzICI8Y29kZT5JU08tODg1OS0xPC9jb2RlPiIsDQorIjxjb2RlPklTTy04ODU5LTI8L2NvZGU+IiwgLi4uICI8Y29kZT5JU08tODg1OS08L2NvZGU+PHZhcj5uPC92YXI+IiAod2hlcmUgPHZhcj5uPC92YXI+DQoraXMgdGhlIHBhcnQgbnVtYmVyKSBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIHBhcnRzIG9mIElTTyA4ODU5LCBhbmQgdGhlIHZhbHVlcw0KKyI8Y29kZT5JU08tMjAyMi1KUDwvY29kZT4iLCAiPGNvZGU+U2hpZnRfSklTPC9jb2RlPiIsIGFuZCAiPGNvZGU+RVVDLUpQPC9jb2RlPiINCitzaG91bGQgYmUgdXNlZCBmb3IgdGhlIHZhcmlvdXMgZW5jb2RlZCBmb3JtcyBvZiBKSVMgWC0wMjA4LTE5OTcuIEl0IGlzIHJlY29tbWVuZGVkDQordGhhdCBjaGFyYWN0ZXIgZW5jb2RpbmdzIHJlZ2lzdGVyZWQgKGFzIDxlbT5jaGFyc2V0PC9lbT5zKSB3aXRoIHRoZSBJbnRlcm5ldA0KK0Fzc2lnbmVkIE51bWJlcnMgQXV0aG9yaXR5IDxhIGhyZWY9IiNJQU5BIj5bSUFOQS1DSEFSU0VUU108L2E+LCBvdGhlciB0aGFuDQordGhvc2UganVzdCBsaXN0ZWQsIGJlIHJlZmVycmVkIHRvIHVzaW5nIHRoZWlyIHJlZ2lzdGVyZWQgbmFtZXM7IG90aGVyIGVuY29kaW5ncw0KK3Nob3VsZCB1c2UgbmFtZXMgc3RhcnRpbmcgd2l0aCBhbiAieC0iIHByZWZpeC4gWE1MIHByb2Nlc3NvcnMgc2hvdWxkIG1hdGNoDQorY2hhcmFjdGVyIGVuY29kaW5nIG5hbWVzIGluIGEgY2FzZS1pbnNlbnNpdGl2ZSB3YXkgYW5kIHNob3VsZCBlaXRoZXIgaW50ZXJwcmV0DQorYW4gSUFOQS1yZWdpc3RlcmVkIG5hbWUgYXMgdGhlIGVuY29kaW5nIHJlZ2lzdGVyZWQgYXQgSUFOQSBmb3IgdGhhdCBuYW1lIG9yDQordHJlYXQgaXQgYXMgdW5rbm93biAocHJvY2Vzc29ycyBhcmUsIG9mIGNvdXJzZSwgbm90IHJlcXVpcmVkIHRvIHN1cHBvcnQgYWxsDQorSUFOQS1yZWdpc3RlcmVkIGVuY29kaW5ncykuPC9wPiA8cD5JbiB0aGUgYWJzZW5jZSBvZiBpbmZvcm1hdGlvbiBwcm92aWRlZA0KK2J5IGFuIGV4dGVybmFsIHRyYW5zcG9ydCBwcm90b2NvbCAoZS5nLiBIVFRQIG9yIE1JTUUpLCBpdCBpcyBhbiA8YSB0aXRsZT0iRXJyb3IiDQoraHJlZj0iI2R0LWVycm9yIj5lcnJvcjwvYT4gZm9yIGFuIGVudGl0eSBpbmNsdWRpbmcgYW4gZW5jb2RpbmcgZGVjbGFyYXRpb24NCit0byBiZSBwcmVzZW50ZWQgdG8gdGhlIFhNTCBwcm9jZXNzb3IgaW4gYW4gZW5jb2Rpbmcgb3RoZXIgdGhhbiB0aGF0IG5hbWVkDQoraW4gdGhlIGRlY2xhcmF0aW9uLCBvciBmb3IgYW4gZW50aXR5IHdoaWNoIGJlZ2lucyB3aXRoIG5laXRoZXIgYSBCeXRlIE9yZGVyDQorTWFyayBub3IgYW4gZW5jb2RpbmcgZGVjbGFyYXRpb24gdG8gdXNlIGFuIGVuY29kaW5nIG90aGVyIHRoYW4gVVRGLTguIE5vdGUNCit0aGF0IHNpbmNlIEFTQ0lJIGlzIGEgc3Vic2V0IG9mIFVURi04LCBvcmRpbmFyeSBBU0NJSSBlbnRpdGllcyBkbyBub3Qgc3RyaWN0bHkNCituZWVkIGFuIGVuY29kaW5nIGRlY2xhcmF0aW9uLjwvcD4gPHA+SXQgaXMgYSBmYXRhbCBlcnJvciBmb3IgYSA8YSBocmVmPSIjTlQtVGV4dERlY2wiPlRleHREZWNsPC9hPg0KK3RvIG9jY3VyIG90aGVyIHRoYW4gYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBleHRlcm5hbCBlbnRpdHkuPC9wPiA8cD5JdCBpcyBhIDxhDQordGl0bGU9IkZhdGFsIEVycm9yIiBocmVmPSIjZHQtZmF0YWwiPmZhdGFsIGVycm9yPC9hPiB3aGVuIGFuIFhNTCBwcm9jZXNzb3INCitlbmNvdW50ZXJzIGFuIGVudGl0eSB3aXRoIGFuIGVuY29kaW5nIHRoYXQgaXQgaXMgdW5hYmxlIHRvIHByb2Nlc3MuIEl0IGlzDQorYSBmYXRhbCBlcnJvciBpZiBhbiBYTUwgZW50aXR5IGlzIGRldGVybWluZWQgKHZpYSBkZWZhdWx0LCBlbmNvZGluZyBkZWNsYXJhdGlvbiwNCitvciBoaWdoZXItbGV2ZWwgcHJvdG9jb2wpIHRvIGJlIGluIGEgY2VydGFpbiBlbmNvZGluZyBidXQgY29udGFpbnMgb2N0ZXQgc2VxdWVuY2VzDQordGhhdCBhcmUgbm90IGxlZ2FsIGluIHRoYXQgZW5jb2RpbmcuIEl0IGlzIGFsc28gYSBmYXRhbCBlcnJvciBpZiBhbiBYTUwgZW50aXR5DQorY29udGFpbnMgbm8gZW5jb2RpbmcgZGVjbGFyYXRpb24gYW5kIGl0cyBjb250ZW50IGlzIG5vdCBsZWdhbCBVVEYtOCBvciBVVEYtMTYuPC9wPiA8cD5FeGFtcGxlcw0KK29mIHRleHQgZGVjbGFyYXRpb25zIGNvbnRhaW5pbmcgZW5jb2RpbmcgZGVjbGFyYXRpb25zOjwvcD4gPHRhYmxlIGNsYXNzPSJlZyINCit3aWR0aD0iMTAwJSIgYm9yZGVyPSIxIiBjZWxscGFkZGluZz0iNSIgYmdjb2xvcj0iIzk5ZmZmZiI+DQorPHRyPg0KKzx0ZD48cHJlPiZsdDs/eG1sIGVuY29kaW5nPSdVVEYtOCc/Pg0KKyZsdDs/eG1sIGVuY29kaW5nPSdFVUMtSlAnPz48L3ByZT48L3RkPg0KKzwvdHI+DQorPC90YWJsZT4gPC9kaXY+IDwvZGl2PiA8ZGl2IGNsYXNzPSJkaXYyIj4gPGgzPjxhIG5hbWU9ImVudHByb2MiPjwvYT40LjQgWE1MDQorUHJvY2Vzc29yIFRyZWF0bWVudCBvZiBFbnRpdGllcyBhbmQgUmVmZXJlbmNlczwvaDM+IDxwPlRoZSB0YWJsZSBiZWxvdyBzdW1tYXJpemVzDQordGhlIGNvbnRleHRzIGluIHdoaWNoIGNoYXJhY3RlciByZWZlcmVuY2VzLCBlbnRpdHkgcmVmZXJlbmNlcywgYW5kIGludm9jYXRpb25zDQorb2YgdW5wYXJzZWQgZW50aXRpZXMgbWlnaHQgYXBwZWFyIGFuZCB0aGUgcmVxdWlyZWQgYmVoYXZpb3Igb2YgYW4gPGEgdGl0bGU9IlhNTCBQcm9jZXNzb3IiDQoraHJlZj0iI2R0LXhtbC1wcm9jIj5YTUwgcHJvY2Vzc29yPC9hPiBpbiBlYWNoIGNhc2UuIFRoZSBsYWJlbHMgaW4gdGhlIGxlZnRtb3N0DQorY29sdW1uIGRlc2NyaWJlIHRoZSByZWNvZ25pdGlvbiBjb250ZXh0OiA8L3A+PGRsPg0KKzxkdCBjbGFzcz0ibGFiZWwiPlJlZmVyZW5jZSBpbiBDb250ZW50PC9kdD4NCis8ZGQ+IDxwPmFzIGEgcmVmZXJlbmNlIGFueXdoZXJlIGFmdGVyIHRoZSA8YSB0aXRsZT0iU3RhcnQtVGFnIiBocmVmPSIjZHQtc3RhZyI+c3RhcnQtdGFnPC9hPg0KK2FuZCBiZWZvcmUgdGhlIDxhIHRpdGxlPSJFbmQgVGFnIiBocmVmPSIjZHQtZXRhZyI+ZW5kLXRhZzwvYT4gb2YgYW4gZWxlbWVudDsNCitjb3JyZXNwb25kcyB0byB0aGUgbm9udGVybWluYWwgPGEgaHJlZj0iI05ULWNvbnRlbnQiPmNvbnRlbnQ8L2E+LjwvcD4gPC9kZD4NCis8ZHQgY2xhc3M9ImxhYmVsIj5SZWZlcmVuY2UgaW4gQXR0cmlidXRlIFZhbHVlPC9kdD4NCis8ZGQ+IDxwPmFzIGEgcmVmZXJlbmNlIHdpdGhpbiBlaXRoZXIgdGhlIHZhbHVlIG9mIGFuIGF0dHJpYnV0ZSBpbiBhIDxhIHRpdGxlPSJTdGFydC1UYWciDQoraHJlZj0iI2R0LXN0YWciPnN0YXJ0LXRhZzwvYT4sIG9yIGEgZGVmYXVsdCB2YWx1ZSBpbiBhbiA8YSB0aXRsZT0iQXR0cmlidXRlLUxpc3QgRGVjbGFyYXRpb24iDQoraHJlZj0iI2R0LWF0dGRlY2wiPmF0dHJpYnV0ZSBkZWNsYXJhdGlvbjwvYT47IGNvcnJlc3BvbmRzIHRvIHRoZSBub250ZXJtaW5hbCA8YQ0KK2hyZWY9IiNOVC1BdHRWYWx1ZSI+QXR0VmFsdWU8L2E+LjwvcD4gPC9kZD4NCis8ZHQgY2xhc3M9ImxhYmVsIj5PY2N1cnMgYXMgQXR0cmlidXRlIFZhbHVlPC9kdD4NCis8ZGQ+IDxwPmFzIGEgPGEgaHJlZj0iI05ULU5hbWUiPk5hbWU8L2E+LCBub3QgYSByZWZlcmVuY2UsIGFwcGVhcmluZyBlaXRoZXINCithcyB0aGUgdmFsdWUgb2YgYW4gYXR0cmlidXRlIHdoaWNoIGhhcyBiZWVuIGRlY2xhcmVkIGFzIHR5cGUgPGI+RU5USVRZPC9iPiwNCitvciBhcyBvbmUgb2YgdGhlIHNwYWNlLXNlcGFyYXRlZCB0b2tlbnMgaW4gdGhlIHZhbHVlIG9mIGFuIGF0dHJpYnV0ZSB3aGljaA0KK2hhcyBiZWVuIGRlY2xhcmVkIGFzIHR5cGUgPGI+RU5USVRJRVM8L2I+LjwvcD4gPC9kZD4NCis8ZHQgY2xhc3M9ImxhYmVsIj5SZWZlcmVuY2UgaW4gRW50aXR5IFZhbHVlPC9kdD4NCis8ZGQ+IDxwPmFzIGEgcmVmZXJlbmNlIHdpdGhpbiBhIHBhcmFtZXRlciBvciBpbnRlcm5hbCBlbnRpdHkncyA8YSB0aXRsZT0iTGl0ZXJhbCBFbnRpdHkgVmFsdWUiDQoraHJlZj0iI2R0LWxpdGVudHZhbCI+bGl0ZXJhbCBlbnRpdHkgdmFsdWU8L2E+IGluIHRoZSBlbnRpdHkncyBkZWNsYXJhdGlvbjsNCitjb3JyZXNwb25kcyB0byB0aGUgbm9udGVybWluYWwgPGEgaHJlZj0iI05ULUVudGl0eVZhbHVlIj5FbnRpdHlWYWx1ZTwvYT4uPC9wPiA8L2RkPg0KKzxkdCBjbGFzcz0ibGFiZWwiPlJlZmVyZW5jZSBpbiBEVEQ8L2R0Pg0KKzxkZD4gPHA+YXMgYSByZWZlcmVuY2Ugd2l0aGluIGVpdGhlciB0aGUgaW50ZXJuYWwgb3IgZXh0ZXJuYWwgc3Vic2V0cyBvZiB0aGUgPGENCit0aXRsZT0iRG9jdW1lbnQgVHlwZSBEZWNsYXJhdGlvbiIgaHJlZj0iI2R0LWRvY3R5cGUiPkRURDwvYT4sIGJ1dCBvdXRzaWRlDQorb2YgYW4gPGEgaHJlZj0iI05ULUVudGl0eVZhbHVlIj5FbnRpdHlWYWx1ZTwvYT4sIDxhIGhyZWY9IiNOVC1BdHRWYWx1ZSI+QXR0VmFsdWU8L2E+LCA8YQ0KK2hyZWY9IiNOVC1QSSI+UEk8L2E+LCA8YSBocmVmPSIjTlQtQ29tbWVudCI+Q29tbWVudDwvYT4sIDxhIGhyZWY9IiNOVC1TeXN0ZW1MaXRlcmFsIj5TeXN0ZW1MaXRlcmFsPC9hPiwgPGENCitocmVmPSIjTlQtUHViaWRMaXRlcmFsIj5QdWJpZExpdGVyYWw8L2E+LCBvciB0aGUgY29udGVudHMgb2YgYW4gaWdub3JlZCBjb25kaXRpb25hbA0KK3NlY3Rpb24gKHNlZSA8YSBocmVmPSIjc2VjLWNvbmRpdGlvbi1zZWN0Ij48Yj4zLjQgQ29uZGl0aW9uYWwgU2VjdGlvbnM8L2I+PC9hPikuPC9wPiA8cD4uPC9wPiA8L2RkPg0KKzwvZGw+PHA+PC9wPiA8dGFibGUgYm9yZGVyPSIxIiBmcmFtZT0iYm9yZGVyIiBjZWxscGFkZGluZz0iNyI+PHRib2R5IGFsaWduPSJjZW50ZXIiPg0KKzx0cj4NCis8dGQgcm93c3Bhbj0iMiIgY29sc3Bhbj0iMSI+PC90ZD4NCis8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iNCIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJib3R0b20iPkVudGl0eSBUeXBlPC90ZD4NCis8dGQgcm93c3Bhbj0iMiIgY29sc3Bhbj0iMSIgYWxpZ249ImNlbnRlciI+Q2hhcmFjdGVyPC90ZD4NCis8L3RyPg0KKzx0ciBhbGlnbj0iY2VudGVyIiB2YWxpZ249ImJvdHRvbSI+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlBhcmFtZXRlcjwvdGQ+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPkludGVybmFsIEdlbmVyYWw8L3RkPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5FeHRlcm5hbCBQYXJzZWQgR2VuZXJhbDwvdGQ+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlVucGFyc2VkPC90ZD4NCis8L3RyPg0KKzx0ciBhbGlnbj0iY2VudGVyIiB2YWxpZ249Im1pZGRsZSI+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiIGFsaWduPSJyaWdodCI+UmVmZXJlbmNlIGluIENvbnRlbnQ8L3RkPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPSIjbm90LXJlY29nbml6ZWQiPjxjaXRlPk5vdCByZWNvZ25pemVkPC9jaXRlPjwvYT48L3RkPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPSIjaW5jbHVkZWQiPjxjaXRlPkluY2x1ZGVkPC9jaXRlPjwvYT48L3RkPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPSIjaW5jbHVkZS1pZi12YWxpZCI+PGNpdGU+SW5jbHVkZWQgaWYNCit2YWxpZGF0aW5nPC9jaXRlPjwvYT48L3RkPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPSIjZm9yYmlkZGVuIj48Y2l0ZT5Gb3JiaWRkZW48L2NpdGU+PC9hPjwvdGQ+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9IiNpbmNsdWRlZCI+PGNpdGU+SW5jbHVkZWQ8L2NpdGU+PC9hPjwvdGQ+DQorPC90cj4NCis8dHIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJtaWRkbGUiPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIiBhbGlnbj0icmlnaHQiPlJlZmVyZW5jZSBpbiBBdHRyaWJ1dGUgVmFsdWU8L3RkPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPSIjbm90LXJlY29nbml6ZWQiPjxjaXRlPk5vdCByZWNvZ25pemVkPC9jaXRlPjwvYT48L3RkPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPSIjaW5saXRlcmFsIj48Y2l0ZT5JbmNsdWRlZCBpbiBsaXRlcmFsPC9jaXRlPjwvYT48L3RkPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPSIjZm9yYmlkZGVuIj48Y2l0ZT5Gb3JiaWRkZW48L2NpdGU+PC9hPjwvdGQ+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9IiNmb3JiaWRkZW4iPjxjaXRlPkZvcmJpZGRlbjwvY2l0ZT48L2E+PC90ZD4NCis8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0iI2luY2x1ZGVkIj48Y2l0ZT5JbmNsdWRlZDwvY2l0ZT48L2E+PC90ZD4NCis8L3RyPg0KKzx0ciBhbGlnbj0iY2VudGVyIiB2YWxpZ249Im1pZGRsZSI+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiIGFsaWduPSJyaWdodCI+T2NjdXJzIGFzIEF0dHJpYnV0ZSBWYWx1ZTwvdGQ+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9IiNub3QtcmVjb2duaXplZCI+PGNpdGU+Tm90IHJlY29nbml6ZWQ8L2NpdGU+PC9hPjwvdGQ+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9IiNmb3JiaWRkZW4iPjxjaXRlPkZvcmJpZGRlbjwvY2l0ZT48L2E+PC90ZD4NCis8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0iI2ZvcmJpZGRlbiI+PGNpdGU+Rm9yYmlkZGVuPC9jaXRlPjwvYT48L3RkPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPSIjbm90aWZ5Ij48Y2l0ZT5Ob3RpZnk8L2NpdGU+PC9hPjwvdGQ+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9IiNub3QtcmVjb2duaXplZCI+PGNpdGU+Tm90IHJlY29nbml6ZWQ8L2NpdGU+PC9hPjwvdGQ+DQorPC90cj4NCis8dHIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJtaWRkbGUiPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIiBhbGlnbj0icmlnaHQiPlJlZmVyZW5jZSBpbiBFbnRpdHlWYWx1ZTwvdGQ+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9IiNpbmxpdGVyYWwiPjxjaXRlPkluY2x1ZGVkIGluIGxpdGVyYWw8L2NpdGU+PC9hPjwvdGQ+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9IiNieXBhc3MiPjxjaXRlPkJ5cGFzc2VkPC9jaXRlPjwvYT48L3RkPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPSIjYnlwYXNzIj48Y2l0ZT5CeXBhc3NlZDwvY2l0ZT48L2E+PC90ZD4NCis8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0iI2ZvcmJpZGRlbiI+PGNpdGU+Rm9yYmlkZGVuPC9jaXRlPjwvYT48L3RkPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPSIjaW5jbHVkZWQiPjxjaXRlPkluY2x1ZGVkPC9jaXRlPjwvYT48L3RkPg0KKzwvdHI+DQorPHRyIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0ibWlkZGxlIj4NCis8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSIgYWxpZ249InJpZ2h0Ij5SZWZlcmVuY2UgaW4gRFREPC90ZD4NCis8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0iI2FzLVBFIj48Y2l0ZT5JbmNsdWRlZCBhcyBQRTwvY2l0ZT48L2E+PC90ZD4NCis8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0iI2ZvcmJpZGRlbiI+PGNpdGU+Rm9yYmlkZGVuPC9jaXRlPjwvYT48L3RkPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPSIjZm9yYmlkZGVuIj48Y2l0ZT5Gb3JiaWRkZW48L2NpdGU+PC9hPjwvdGQ+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9IiNmb3JiaWRkZW4iPjxjaXRlPkZvcmJpZGRlbjwvY2l0ZT48L2E+PC90ZD4NCis8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0iI2ZvcmJpZGRlbiI+PGNpdGU+Rm9yYmlkZGVuPC9jaXRlPjwvYT48L3RkPg0KKzwvdHI+DQorPC90Ym9keT48L3RhYmxlPiA8ZGl2IGNsYXNzPSJkaXYzIj4gPGg0PjxhIG5hbWU9Im5vdC1yZWNvZ25pemVkIj48L2E+NC40LjENCitOb3QgUmVjb2duaXplZDwvaDQ+IDxwPk91dHNpZGUgdGhlIERURCwgdGhlIDxjb2RlPiU8L2NvZGU+IGNoYXJhY3RlciBoYXMgbm8NCitzcGVjaWFsIHNpZ25pZmljYW5jZTsgdGh1cywgd2hhdCB3b3VsZCBiZSBwYXJhbWV0ZXIgZW50aXR5IHJlZmVyZW5jZXMgaW4gdGhlDQorRFREIGFyZSBub3QgcmVjb2duaXplZCBhcyBtYXJrdXAgaW4gPGEgaHJlZj0iI05ULWNvbnRlbnQiPmNvbnRlbnQ8L2E+LiBTaW1pbGFybHksDQordGhlIG5hbWVzIG9mIHVucGFyc2VkIGVudGl0aWVzIGFyZSBub3QgcmVjb2duaXplZCBleGNlcHQgd2hlbiB0aGV5IGFwcGVhcg0KK2luIHRoZSB2YWx1ZSBvZiBhbiBhcHByb3ByaWF0ZWx5IGRlY2xhcmVkIGF0dHJpYnV0ZS48L3A+IDwvZGl2PiA8ZGl2IGNsYXNzPSJkaXYzIj4gPGg0PjxhDQorbmFtZT0iaW5jbHVkZWQiPjwvYT40LjQuMiBJbmNsdWRlZDwvaDQ+IDxwPls8YSB0aXRsZT0iSW5jbHVkZSIgbmFtZT0iZHQtaW5jbHVkZSI+RGVmaW5pdGlvbjwvYT46DQorQW4gZW50aXR5IGlzIDxiPmluY2x1ZGVkPC9iPiB3aGVuIGl0cyA8YSB0aXRsZT0iUmVwbGFjZW1lbnQgVGV4dCIgaHJlZj0iI2R0LXJlcGx0ZXh0Ij5yZXBsYWNlbWVudA0KK3RleHQ8L2E+IGlzIHJldHJpZXZlZCBhbmQgcHJvY2Vzc2VkLCBpbiBwbGFjZSBvZiB0aGUgcmVmZXJlbmNlIGl0c2VsZiwgYXMNCit0aG91Z2ggaXQgd2VyZSBwYXJ0IG9mIHRoZSBkb2N1bWVudCBhdCB0aGUgbG9jYXRpb24gdGhlIHJlZmVyZW5jZSB3YXMgcmVjb2duaXplZC5dDQorVGhlIHJlcGxhY2VtZW50IHRleHQgbWF5IGNvbnRhaW4gYm90aCA8YSB0aXRsZT0iQ2hhcmFjdGVyIERhdGEiIGhyZWY9IiNkdC1jaGFyZGF0YSI+Y2hhcmFjdGVyDQorZGF0YTwvYT4gYW5kIChleGNlcHQgZm9yIHBhcmFtZXRlciBlbnRpdGllcykgPGEgdGl0bGU9Ik1hcmt1cCIgaHJlZj0iI2R0LW1hcmt1cCI+bWFya3VwPC9hPiwNCit3aGljaCBtdXN0IGJlIHJlY29nbml6ZWQgaW4gdGhlIHVzdWFsIHdheS4gKFRoZSBzdHJpbmcgIjxjb2RlPkFUJmFtcDthbXA7VDs8L2NvZGU+Ig0KK2V4cGFuZHMgdG8gIjxjb2RlPkFUJmFtcDtUOzwvY29kZT4iIGFuZCB0aGUgcmVtYWluaW5nIGFtcGVyc2FuZCBpcyBub3QgcmVjb2duaXplZA0KK2FzIGFuIGVudGl0eS1yZWZlcmVuY2UgZGVsaW1pdGVyLikgQSBjaGFyYWN0ZXIgcmVmZXJlbmNlIGlzIDxiPmluY2x1ZGVkPC9iPg0KK3doZW4gdGhlIGluZGljYXRlZCBjaGFyYWN0ZXIgaXMgcHJvY2Vzc2VkIGluIHBsYWNlIG9mIHRoZSByZWZlcmVuY2UgaXRzZWxmLiA8L3A+IDwvZGl2PiA8ZGl2DQorY2xhc3M9ImRpdjMiPiA8aDQ+PGEgbmFtZT0iaW5jbHVkZS1pZi12YWxpZCI+PC9hPjQuNC4zIEluY2x1ZGVkIElmIFZhbGlkYXRpbmc8L2g0PiA8cD5XaGVuDQorYW4gWE1MIHByb2Nlc3NvciByZWNvZ25pemVzIGEgcmVmZXJlbmNlIHRvIGEgcGFyc2VkIGVudGl0eSwgaW4gb3JkZXIgdG8gPGENCit0aXRsZT0iVmFsaWRpdHkiIGhyZWY9IiNkdC12YWxpZCI+dmFsaWRhdGU8L2E+IHRoZSBkb2N1bWVudCwgdGhlIHByb2Nlc3Nvcg0KK211c3QgPGEgdGl0bGU9IkluY2x1ZGUiIGhyZWY9IiNkdC1pbmNsdWRlIj5pbmNsdWRlPC9hPiBpdHMgcmVwbGFjZW1lbnQgdGV4dC4NCitJZiB0aGUgZW50aXR5IGlzIGV4dGVybmFsLCBhbmQgdGhlIHByb2Nlc3NvciBpcyBub3QgYXR0ZW1wdGluZyB0byB2YWxpZGF0ZQ0KK3RoZSBYTUwgZG9jdW1lbnQsIHRoZSBwcm9jZXNzb3IgPGEgdGl0bGU9Ik1heSIgaHJlZj0iI2R0LW1heSI+bWF5PC9hPiwgYnV0DQorbmVlZCBub3QsIGluY2x1ZGUgdGhlIGVudGl0eSdzIHJlcGxhY2VtZW50IHRleHQuIElmIGEgbm9uLXZhbGlkYXRpbmcgcHJvY2Vzc29yDQorZG9lcyBub3QgaW5jbHVkZSB0aGUgcmVwbGFjZW1lbnQgdGV4dCwgaXQgbXVzdCBpbmZvcm0gdGhlIGFwcGxpY2F0aW9uIHRoYXQNCitpdCByZWNvZ25pemVkLCBidXQgZGlkIG5vdCByZWFkLCB0aGUgZW50aXR5LjwvcD4gPHA+VGhpcyBydWxlIGlzIGJhc2VkIG9uDQordGhlIHJlY29nbml0aW9uIHRoYXQgdGhlIGF1dG9tYXRpYyBpbmNsdXNpb24gcHJvdmlkZWQgYnkgdGhlIFNHTUwgYW5kIFhNTA0KK2VudGl0eSBtZWNoYW5pc20sIHByaW1hcmlseSBkZXNpZ25lZCB0byBzdXBwb3J0IG1vZHVsYXJpdHkgaW4gYXV0aG9yaW5nLCBpcw0KK25vdCBuZWNlc3NhcmlseSBhcHByb3ByaWF0ZSBmb3Igb3RoZXIgYXBwbGljYXRpb25zLCBpbiBwYXJ0aWN1bGFyIGRvY3VtZW50DQorYnJvd3NpbmcuIEJyb3dzZXJzLCBmb3IgZXhhbXBsZSwgd2hlbiBlbmNvdW50ZXJpbmcgYW4gZXh0ZXJuYWwgcGFyc2VkIGVudGl0eQ0KK3JlZmVyZW5jZSwgbWlnaHQgY2hvb3NlIHRvIHByb3ZpZGUgYSB2aXN1YWwgaW5kaWNhdGlvbiBvZiB0aGUgZW50aXR5J3MgcHJlc2VuY2UNCithbmQgcmV0cmlldmUgaXQgZm9yIGRpc3BsYXkgb25seSBvbiBkZW1hbmQuPC9wPiA8L2Rpdj4gPGRpdiBjbGFzcz0iZGl2MyI+IDxoND48YQ0KK25hbWU9ImZvcmJpZGRlbiI+PC9hPjQuNC40IEZvcmJpZGRlbjwvaDQ+IDxwPlRoZSBmb2xsb3dpbmcgYXJlIGZvcmJpZGRlbiwNCithbmQgY29uc3RpdHV0ZSA8YSB0aXRsZT0iRmF0YWwgRXJyb3IiIGhyZWY9IiNkdC1mYXRhbCI+ZmF0YWw8L2E+IGVycm9yczo8L3A+IDx1bD4NCis8bGk+PHA+dGhlIGFwcGVhcmFuY2Ugb2YgYSByZWZlcmVuY2UgdG8gYW4gPGEgdGl0bGU9IlVucGFyc2VkIEVudGl0eSIgaHJlZj0iI2R0LXVucGFyc2VkIj51bnBhcnNlZA0KK2VudGl0eTwvYT4uPC9wPjwvbGk+DQorPGxpPjxwPnRoZSBhcHBlYXJhbmNlIG9mIGFueSBjaGFyYWN0ZXIgb3IgZ2VuZXJhbC1lbnRpdHkgcmVmZXJlbmNlIGluIHRoZQ0KK0RURCBleGNlcHQgd2l0aGluIGFuIDxhIGhyZWY9IiNOVC1FbnRpdHlWYWx1ZSI+RW50aXR5VmFsdWU8L2E+IG9yIDxhIGhyZWY9IiNOVC1BdHRWYWx1ZSI+QXR0VmFsdWU8L2E+LjwvcD4gPC9saT4NCis8bGk+PHA+YSByZWZlcmVuY2UgdG8gYW4gZXh0ZXJuYWwgZW50aXR5IGluIGFuIGF0dHJpYnV0ZSB2YWx1ZS48L3A+PC9saT4NCis8L3VsPiA8L2Rpdj4gPGRpdiBjbGFzcz0iZGl2MyI+IDxoND48YSBuYW1lPSJpbmxpdGVyYWwiPjwvYT40LjQuNSBJbmNsdWRlZA0KK2luIExpdGVyYWw8L2g0PiA8cD5XaGVuIGFuIDxhIHRpdGxlPSJFbnRpdHkgUmVmZXJlbmNlIiBocmVmPSIjZHQtZW50cmVmIj5lbnRpdHkNCityZWZlcmVuY2U8L2E+IGFwcGVhcnMgaW4gYW4gYXR0cmlidXRlIHZhbHVlLCBvciBhIHBhcmFtZXRlciBlbnRpdHkgcmVmZXJlbmNlDQorYXBwZWFycyBpbiBhIGxpdGVyYWwgZW50aXR5IHZhbHVlLCBpdHMgPGEgdGl0bGU9IlJlcGxhY2VtZW50IFRleHQiIGhyZWY9IiNkdC1yZXBsdGV4dCI+cmVwbGFjZW1lbnQNCit0ZXh0PC9hPiBpcyBwcm9jZXNzZWQgaW4gcGxhY2Ugb2YgdGhlIHJlZmVyZW5jZSBpdHNlbGYgYXMgdGhvdWdoIGl0IHdlcmUgcGFydA0KK29mIHRoZSBkb2N1bWVudCBhdCB0aGUgbG9jYXRpb24gdGhlIHJlZmVyZW5jZSB3YXMgcmVjb2duaXplZCwgZXhjZXB0IHRoYXQNCithIHNpbmdsZSBvciBkb3VibGUgcXVvdGUgY2hhcmFjdGVyIGluIHRoZSByZXBsYWNlbWVudCB0ZXh0IGlzIGFsd2F5cyB0cmVhdGVkDQorYXMgYSBub3JtYWwgZGF0YSBjaGFyYWN0ZXIgYW5kIHdpbGwgbm90IHRlcm1pbmF0ZSB0aGUgbGl0ZXJhbC4gRm9yIGV4YW1wbGUsDQordGhpcyBpcyB3ZWxsLWZvcm1lZDo8L3A+IDx0YWJsZSBjbGFzcz0iZWciIHdpZHRoPSIxMDAlIiBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSI1Ig0KK2JnY29sb3I9IiM5OWZmZmYiPg0KKzx0cj4NCis8dGQ+PHByZT4mbHQ7IS0tICAtLT4NCismbHQ7IUVOVElUWSAlIFlOICciWWVzIicgPg0KKyZsdDshRU5USVRZIFdoYXRIZVNhaWQgIkhlIHNhaWQgJVlOOyIgPjwvcHJlPjwvdGQ+DQorPC90cj4NCis8L3RhYmxlPiA8cD53aGlsZSB0aGlzIGlzIG5vdDo8L3A+IDx0YWJsZSBjbGFzcz0iZWciIHdpZHRoPSIxMDAlIiBib3JkZXI9IjEiDQorY2VsbHBhZGRpbmc9IjUiIGJnY29sb3I9IiM5OWZmZmYiPg0KKzx0cj4NCis8dGQ+PHByZT4mbHQ7IUVOVElUWSBFbmRBdHRyICIyNyciID4NCismbHQ7ZWxlbWVudCBhdHRyaWJ1dGU9J2EtJmFtcDtFbmRBdHRyOz48L3ByZT48L3RkPg0KKzwvdHI+DQorPC90YWJsZT4gPC9kaXY+IDxkaXYgY2xhc3M9ImRpdjMiPiA8aDQ+PGEgbmFtZT0ibm90aWZ5Ij48L2E+NC40LjYgTm90aWZ5PC9oND4gPHA+V2hlbg0KK3RoZSBuYW1lIG9mIGFuIDxhIHRpdGxlPSJVbnBhcnNlZCBFbnRpdHkiIGhyZWY9IiNkdC11bnBhcnNlZCI+dW5wYXJzZWQgZW50aXR5PC9hPg0KK2FwcGVhcnMgYXMgYSB0b2tlbiBpbiB0aGUgdmFsdWUgb2YgYW4gYXR0cmlidXRlIG9mIGRlY2xhcmVkIHR5cGUgPGI+RU5USVRZPC9iPg0KK29yIDxiPkVOVElUSUVTPC9iPiwgYSB2YWxpZGF0aW5nIHByb2Nlc3NvciBtdXN0IGluZm9ybSB0aGUgYXBwbGljYXRpb24gb2YNCit0aGUgPGEgdGl0bGU9IlN5c3RlbSBJZGVudGlmaWVyIiBocmVmPSIjZHQtc3lzaWQiPnN5c3RlbTwvYT4gYW5kIDxhIHRpdGxlPSJQdWJsaWMgaWRlbnRpZmllciINCitocmVmPSIjZHQtcHViaWQiPnB1YmxpYzwvYT4gKGlmIGFueSkgaWRlbnRpZmllcnMgZm9yIGJvdGggdGhlIGVudGl0eSBhbmQgaXRzDQorYXNzb2NpYXRlZCA8YSB0aXRsZT0iTm90YXRpb24iIGhyZWY9IiNkdC1ub3RhdGlvbiI+bm90YXRpb248L2E+LjwvcD4gPC9kaXY+IDxkaXYNCitjbGFzcz0iZGl2MyI+IDxoND48YSBuYW1lPSJieXBhc3MiPjwvYT40LjQuNyBCeXBhc3NlZDwvaDQ+IDxwPldoZW4gYSBnZW5lcmFsDQorZW50aXR5IHJlZmVyZW5jZSBhcHBlYXJzIGluIHRoZSA8YSBocmVmPSIjTlQtRW50aXR5VmFsdWUiPkVudGl0eVZhbHVlPC9hPg0KK2luIGFuIGVudGl0eSBkZWNsYXJhdGlvbiwgaXQgaXMgYnlwYXNzZWQgYW5kIGxlZnQgYXMgaXMuPC9wPiA8L2Rpdj4gPGRpdiBjbGFzcz0iZGl2MyI+IDxoND48YQ0KK25hbWU9ImFzLVBFIj48L2E+NC40LjggSW5jbHVkZWQgYXMgUEU8L2g0PiA8cD5KdXN0IGFzIHdpdGggZXh0ZXJuYWwgcGFyc2VkDQorZW50aXRpZXMsIHBhcmFtZXRlciBlbnRpdGllcyBuZWVkIG9ubHkgYmUgPGEgaHJlZj0iI2luY2x1ZGUtaWYtdmFsaWQiPjxjaXRlPmluY2x1ZGVkDQoraWYgdmFsaWRhdGluZzwvY2l0ZT48L2E+LiBXaGVuIGEgcGFyYW1ldGVyLWVudGl0eSByZWZlcmVuY2UgaXMgcmVjb2duaXplZA0KK2luIHRoZSBEVEQgYW5kIGluY2x1ZGVkLCBpdHMgPGEgdGl0bGU9IlJlcGxhY2VtZW50IFRleHQiIGhyZWY9IiNkdC1yZXBsdGV4dCI+cmVwbGFjZW1lbnQNCit0ZXh0PC9hPiBpcyBlbmxhcmdlZCBieSB0aGUgYXR0YWNobWVudCBvZiBvbmUgbGVhZGluZyBhbmQgb25lIGZvbGxvd2luZyBzcGFjZQ0KKygjeDIwKSBjaGFyYWN0ZXI7IHRoZSBpbnRlbnQgaXMgdG8gY29uc3RyYWluIHRoZSByZXBsYWNlbWVudCB0ZXh0IG9mIHBhcmFtZXRlcg0KK2VudGl0aWVzIHRvIGNvbnRhaW4gYW4gaW50ZWdyYWwgbnVtYmVyIG9mIGdyYW1tYXRpY2FsIHRva2VucyBpbiB0aGUgRFRELiBUaGlzDQorYmVoYXZpb3IgZG9lcyBub3QgYXBwbHkgdG8gcGFyYW1ldGVyIGVudGl0eSByZWZlcmVuY2VzIHdpdGhpbiBlbnRpdHkgdmFsdWVzOw0KK3RoZXNlIGFyZSBkZXNjcmliZWQgaW4gPGEgaHJlZj0iI2lubGl0ZXJhbCI+PGI+NC40LjUgSW5jbHVkZWQgaW4gTGl0ZXJhbDwvYj48L2E+LjwvcD4gPC9kaXY+IDwvZGl2PiA8ZGl2DQorY2xhc3M9ImRpdjIiPiA8aDM+PGEgbmFtZT0iaW50ZXJuLXJlcGxhY2VtZW50Ij48L2E+NC41IENvbnN0cnVjdGlvbiBvZiBJbnRlcm5hbA0KK0VudGl0eSBSZXBsYWNlbWVudCBUZXh0PC9oMz4gPHA+SW4gZGlzY3Vzc2luZyB0aGUgdHJlYXRtZW50IG9mIGludGVybmFsIGVudGl0aWVzLA0KK2l0IGlzIHVzZWZ1bCB0byBkaXN0aW5ndWlzaCB0d28gZm9ybXMgb2YgdGhlIGVudGl0eSdzIHZhbHVlLiBbPGEgdGl0bGU9IkxpdGVyYWwgRW50aXR5IFZhbHVlIg0KK25hbWU9ImR0LWxpdGVudHZhbCI+RGVmaW5pdGlvbjwvYT46IFRoZSA8Yj5saXRlcmFsIGVudGl0eSB2YWx1ZTwvYj4gaXMgdGhlDQorcXVvdGVkIHN0cmluZyBhY3R1YWxseSBwcmVzZW50IGluIHRoZSBlbnRpdHkgZGVjbGFyYXRpb24sIGNvcnJlc3BvbmRpbmcgdG8NCit0aGUgbm9uLXRlcm1pbmFsIDxhIGhyZWY9IiNOVC1FbnRpdHlWYWx1ZSI+RW50aXR5VmFsdWU8L2E+Ll0gWzxhIHRpdGxlPSJSZXBsYWNlbWVudCBUZXh0Ig0KK25hbWU9ImR0LXJlcGx0ZXh0Ij5EZWZpbml0aW9uPC9hPjogVGhlIDxiPnJlcGxhY2VtZW50IHRleHQ8L2I+IGlzIHRoZSBjb250ZW50DQorb2YgdGhlIGVudGl0eSwgYWZ0ZXIgcmVwbGFjZW1lbnQgb2YgY2hhcmFjdGVyIHJlZmVyZW5jZXMgYW5kIHBhcmFtZXRlci1lbnRpdHkNCityZWZlcmVuY2VzLl08L3A+IDxwPlRoZSBsaXRlcmFsIGVudGl0eSB2YWx1ZSBhcyBnaXZlbiBpbiBhbiBpbnRlcm5hbCBlbnRpdHkNCitkZWNsYXJhdGlvbiAoPGEgaHJlZj0iI05ULUVudGl0eVZhbHVlIj5FbnRpdHlWYWx1ZTwvYT4pIG1heSBjb250YWluIGNoYXJhY3RlciwNCitwYXJhbWV0ZXItZW50aXR5LCBhbmQgZ2VuZXJhbC1lbnRpdHkgcmVmZXJlbmNlcy4gU3VjaCByZWZlcmVuY2VzIG11c3QgYmUgY29udGFpbmVkDQorZW50aXJlbHkgd2l0aGluIHRoZSBsaXRlcmFsIGVudGl0eSB2YWx1ZS4gVGhlIGFjdHVhbCByZXBsYWNlbWVudCB0ZXh0IHRoYXQNCitpcyA8YSB0aXRsZT0iSW5jbHVkZSIgaHJlZj0iI2R0LWluY2x1ZGUiPmluY2x1ZGVkPC9hPiBhcyBkZXNjcmliZWQgYWJvdmUgbXVzdA0KK2NvbnRhaW4gdGhlIDxlbT5yZXBsYWNlbWVudCB0ZXh0PC9lbT4gb2YgYW55IHBhcmFtZXRlciBlbnRpdGllcyByZWZlcnJlZCB0bywNCithbmQgbXVzdCBjb250YWluIHRoZSBjaGFyYWN0ZXIgcmVmZXJyZWQgdG8sIGluIHBsYWNlIG9mIGFueSBjaGFyYWN0ZXIgcmVmZXJlbmNlcw0KK2luIHRoZSBsaXRlcmFsIGVudGl0eSB2YWx1ZTsgaG93ZXZlciwgZ2VuZXJhbC1lbnRpdHkgcmVmZXJlbmNlcyBtdXN0IGJlIGxlZnQNCithcy1pcywgdW5leHBhbmRlZC4gRm9yIGV4YW1wbGUsIGdpdmVuIHRoZSBmb2xsb3dpbmcgZGVjbGFyYXRpb25zOjwvcD4gPHRhYmxlDQorY2xhc3M9ImVnIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIxIiBjZWxscGFkZGluZz0iNSIgYmdjb2xvcj0iIzk5ZmZmZiI+DQorPHRyPg0KKzx0ZD48cHJlPiZsdDshRU5USVRZICUgcHViICAgICImYW1wOyN4Yzk7ZGl0aW9ucyBHYWxsaW1hcmQiID4NCismbHQ7IUVOVElUWSAgIHJpZ2h0cyAiQWxsIHJpZ2h0cyByZXNlcnZlZCIgPg0KKyZsdDshRU5USVRZICAgYm9vayAgICJMYSBQZXN0ZTogQWxiZXJ0IENhbXVzLA0KKyZhbXA7I3hBOTsgMTk0NyAlcHViOy4gJmFtcDtyaWdodHM7IiA+PC9wcmU+PC90ZD4NCis8L3RyPg0KKzwvdGFibGU+IDxwPnRoZW4gdGhlIHJlcGxhY2VtZW50IHRleHQgZm9yIHRoZSBlbnRpdHkgIjxjb2RlPmJvb2s8L2NvZGU+IiBpczo8L3A+IDx0YWJsZQ0KK2NsYXNzPSJlZyIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMSIgY2VsbHBhZGRpbmc9IjUiIGJnY29sb3I9IiM5OWZmZmYiPg0KKzx0cj4NCis8dGQ+PHByZT5MYSBQZXN0ZTogQWxiZXJ0IENhbXVzLA0KKyZjb3B5OyAxOTQ3ICZFYWN1dGU7ZGl0aW9ucyBHYWxsaW1hcmQuICZhbXA7cmlnaHRzOzwvcHJlPjwvdGQ+DQorPC90cj4NCis8L3RhYmxlPiA8cD5UaGUgZ2VuZXJhbC1lbnRpdHkgcmVmZXJlbmNlICI8Y29kZT4mYW1wO3JpZ2h0czs8L2NvZGU+IiB3b3VsZA0KK2JlIGV4cGFuZGVkIHNob3VsZCB0aGUgcmVmZXJlbmNlICI8Y29kZT4mYW1wO2Jvb2s7PC9jb2RlPiIgYXBwZWFyIGluIHRoZSBkb2N1bWVudCdzDQorY29udGVudCBvciBhbiBhdHRyaWJ1dGUgdmFsdWUuPC9wPiA8cD5UaGVzZSBzaW1wbGUgcnVsZXMgbWF5IGhhdmUgY29tcGxleA0KK2ludGVyYWN0aW9uczsgZm9yIGEgZGV0YWlsZWQgZGlzY3Vzc2lvbiBvZiBhIGRpZmZpY3VsdCBleGFtcGxlLCBzZWUgPGEgaHJlZj0iI3NlYy1lbnRleHBhbmQiPjxiPkQNCitFeHBhbnNpb24gb2YgRW50aXR5IGFuZCBDaGFyYWN0ZXIgUmVmZXJlbmNlczwvYj48L2E+LjwvcD4gPC9kaXY+IDxkaXYgY2xhc3M9ImRpdjIiPiA8aDM+PGENCituYW1lPSJzZWMtcHJlZGVmaW5lZC1lbnQiPjwvYT40LjYgUHJlZGVmaW5lZCBFbnRpdGllczwvaDM+IDxwPls8YSB0aXRsZT0iZXNjYXBlIg0KK25hbWU9ImR0LWVzY2FwZSI+RGVmaW5pdGlvbjwvYT46IEVudGl0eSBhbmQgY2hhcmFjdGVyIHJlZmVyZW5jZXMgY2FuIGJvdGgNCitiZSB1c2VkIHRvIDxiPmVzY2FwZTwvYj4gdGhlIGxlZnQgYW5nbGUgYnJhY2tldCwgYW1wZXJzYW5kLCBhbmQgb3RoZXIgZGVsaW1pdGVycy4NCitBIHNldCBvZiBnZW5lcmFsIGVudGl0aWVzICg8Y29kZT5hbXA8L2NvZGU+LCA8Y29kZT5sdDwvY29kZT4sIDxjb2RlPmd0PC9jb2RlPiwgPGNvZGU+YXBvczwvY29kZT4sIDxjb2RlPnF1b3Q8L2NvZGU+KQ0KK2lzIHNwZWNpZmllZCBmb3IgdGhpcyBwdXJwb3NlLiBOdW1lcmljIGNoYXJhY3RlciByZWZlcmVuY2VzIG1heSBhbHNvIGJlIHVzZWQ7DQordGhleSBhcmUgZXhwYW5kZWQgaW1tZWRpYXRlbHkgd2hlbiByZWNvZ25pemVkIGFuZCBtdXN0IGJlIHRyZWF0ZWQgYXMgY2hhcmFjdGVyDQorZGF0YSwgc28gdGhlIG51bWVyaWMgY2hhcmFjdGVyIHJlZmVyZW5jZXMgIjxjb2RlPiZhbXA7IzYwOzwvY29kZT4iIGFuZCAiPGNvZGU+JmFtcDsjMzg7PC9jb2RlPiINCittYXkgYmUgdXNlZCB0byBlc2NhcGUgPGNvZGU+Jmx0OzwvY29kZT4gYW5kIDxjb2RlPiZhbXA7PC9jb2RlPiB3aGVuIHRoZXkgb2NjdXINCitpbiBjaGFyYWN0ZXIgZGF0YS5dPC9wPiA8cD5BbGwgWE1MIHByb2Nlc3NvcnMgbXVzdCByZWNvZ25pemUgdGhlc2UgZW50aXRpZXMNCit3aGV0aGVyIHRoZXkgYXJlIGRlY2xhcmVkIG9yIG5vdC4gPGEgdGl0bGU9IkZvciBpbnRlcm9wZXJhYmlsaXR5IiBocmVmPSIjZHQtaW50ZXJvcCI+Rm9yDQoraW50ZXJvcGVyYWJpbGl0eTwvYT4sIHZhbGlkIFhNTCBkb2N1bWVudHMgc2hvdWxkIGRlY2xhcmUgdGhlc2UgZW50aXRpZXMsIGxpa2UNCithbnkgb3RoZXJzLCBiZWZvcmUgdXNpbmcgdGhlbS4gSWYgdGhlIGVudGl0aWVzIDxjb2RlPmx0PC9jb2RlPiBvciA8Y29kZT5hbXA8L2NvZGU+DQorYXJlIGRlY2xhcmVkLCB0aGV5IG11c3QgYmUgZGVjbGFyZWQgYXMgaW50ZXJuYWwgZW50aXRpZXMgd2hvc2UgcmVwbGFjZW1lbnQNCit0ZXh0IGlzIGEgY2hhcmFjdGVyIHJlZmVyZW5jZSB0byB0aGUgcmVzcGVjdGl2ZSBjaGFyYWN0ZXIgKGxlc3MtdGhhbiBzaWduDQorb3IgYW1wZXJzYW5kKSBiZWluZyBlc2NhcGVkOyB0aGUgZG91YmxlIGVzY2FwaW5nIGlzIHJlcXVpcmVkIGZvciB0aGVzZSBlbnRpdGllcw0KK3NvIHRoYXQgcmVmZXJlbmNlcyB0byB0aGVtIHByb2R1Y2UgYSB3ZWxsLWZvcm1lZCByZXN1bHQuIElmIHRoZSBlbnRpdGllcyA8Y29kZT5ndDwvY29kZT4sIDxjb2RlPmFwb3M8L2NvZGU+LA0KK29yIDxjb2RlPnF1b3Q8L2NvZGU+IGFyZSBkZWNsYXJlZCwgdGhleSBtdXN0IGJlIGRlY2xhcmVkIGFzIGludGVybmFsIGVudGl0aWVzDQord2hvc2UgcmVwbGFjZW1lbnQgdGV4dCBpcyB0aGUgc2luZ2xlIGNoYXJhY3RlciBiZWluZyBlc2NhcGVkIChvciBhIGNoYXJhY3Rlcg0KK3JlZmVyZW5jZSB0byB0aGF0IGNoYXJhY3RlcjsgdGhlIGRvdWJsZSBlc2NhcGluZyBoZXJlIGlzIHVubmVjZXNzYXJ5IGJ1dCBoYXJtbGVzcykuDQorRm9yIGV4YW1wbGU6PC9wPiA8dGFibGUgY2xhc3M9ImVnIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIxIiBjZWxscGFkZGluZz0iNSINCitiZ2NvbG9yPSIjOTlmZmZmIj4NCis8dHI+DQorPHRkPjxwcmU+Jmx0OyFFTlRJVFkgbHQgICAgICImYW1wOyMzODsjNjA7Ij4NCismbHQ7IUVOVElUWSBndCAgICAgIiZhbXA7IzYyOyI+DQorJmx0OyFFTlRJVFkgYW1wICAgICImYW1wOyMzODsjMzg7Ij4NCismbHQ7IUVOVElUWSBhcG9zICAgIiZhbXA7IzM5OyI+DQorJmx0OyFFTlRJVFkgcXVvdCAgICImYW1wOyMzNDsiPjwvcHJlPjwvdGQ+DQorPC90cj4NCis8L3RhYmxlPiAgPC9kaXY+IDxkaXYgY2xhc3M9ImRpdjIiPiA8aDM+PGEgbmFtZT0iTm90YXRpb25zIj48L2E+NC43IE5vdGF0aW9uDQorRGVjbGFyYXRpb25zPC9oMz4gPHA+WzxhIHRpdGxlPSJOb3RhdGlvbiIgbmFtZT0iZHQtbm90YXRpb24iPkRlZmluaXRpb248L2E+OiA8Yj5Ob3RhdGlvbnM8L2I+DQoraWRlbnRpZnkgYnkgbmFtZSB0aGUgZm9ybWF0IG9mIDxhIHRpdGxlPSJFeHRlcm5hbCBFbnRpdHkiIGhyZWY9IiNkdC1leHRlbnQiPnVucGFyc2VkDQorZW50aXRpZXM8L2E+LCB0aGUgZm9ybWF0IG9mIGVsZW1lbnRzIHdoaWNoIGJlYXIgYSBub3RhdGlvbiBhdHRyaWJ1dGUsIG9yIHRoZQ0KK2FwcGxpY2F0aW9uIHRvIHdoaWNoIGEgPGEgdGl0bGU9IlByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24iIGhyZWY9IiNkdC1waSI+cHJvY2Vzc2luZw0KK2luc3RydWN0aW9uPC9hPiBpcyBhZGRyZXNzZWQuXTwvcD4gPHA+WzxhIHRpdGxlPSJOb3RhdGlvbiBEZWNsYXJhdGlvbiIgbmFtZT0iZHQtbm90ZGVjbCI+RGVmaW5pdGlvbjwvYT46DQorIDxiPk5vdGF0aW9uIGRlY2xhcmF0aW9uczwvYj4gcHJvdmlkZSBhIG5hbWUgZm9yIHRoZSBub3RhdGlvbiwgZm9yIHVzZSBpbg0KK2VudGl0eSBhbmQgYXR0cmlidXRlLWxpc3QgZGVjbGFyYXRpb25zIGFuZCBpbiBhdHRyaWJ1dGUgc3BlY2lmaWNhdGlvbnMsIGFuZA0KK2FuIGV4dGVybmFsIGlkZW50aWZpZXIgZm9yIHRoZSBub3RhdGlvbiB3aGljaCBtYXkgYWxsb3cgYW4gWE1MIHByb2Nlc3NvciBvcg0KK2l0cyBjbGllbnQgYXBwbGljYXRpb24gdG8gbG9jYXRlIGEgaGVscGVyIGFwcGxpY2F0aW9uIGNhcGFibGUgb2YgcHJvY2Vzc2luZw0KK2RhdGEgaW4gdGhlIGdpdmVuIG5vdGF0aW9uLl08L3A+IDxoNT5Ob3RhdGlvbiBEZWNsYXJhdGlvbnM8L2g1Pjx0YWJsZSBjbGFzcz0ic2NyYXAiPg0KKzx0Ym9keT4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULU5vdGF0aW9uRGVjbCI+PC9hPls4Ml0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5Ob3RhdGlvbkRlY2w8L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+JyZsdDshTk9UQVRJT04nIDxhIGhyZWY9IiNOVC1TIj5TPC9hPiA8YSBocmVmPSIjTlQtTmFtZSI+TmFtZTwvYT4gPGENCitocmVmPSIjTlQtUyI+UzwvYT4gKDxhIGhyZWY9IiNOVC1FeHRlcm5hbElEIj5FeHRlcm5hbElEPC9hPiB8IDxhIGhyZWY9IiNOVC1QdWJsaWNJRCI+UHVibGljSUQ8L2E+KSA8YQ0KK2hyZWY9IiNOVC1TIj5TPC9hPj8gJz4nPC9jb2RlPjwvdGQ+DQorPHRkPjxhIGhyZWY9IiNVbmlxdWVOb3RhdGlvbk5hbWUiPltWQzogVW5pcXVlIE5vdGF0aW9uIE5hbWVdPC9hPjwvdGQ+DQorPC90cj4NCis8L3Rib2R5Pjx0Ym9keT4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULVB1YmxpY0lEIj48L2E+WzgzXSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPlB1YmxpY0lEPC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPidQVUJMSUMnIDxhIGhyZWY9IiNOVC1TIj5TPC9hPiA8YSBocmVmPSIjTlQtUHViaWRMaXRlcmFsIj5QdWJpZExpdGVyYWw8L2E+IDwvY29kZT48L3RkPg0KKzwvdHI+DQorPC90Ym9keT48L3RhYmxlPiA8ZGl2IGNsYXNzPSJjb25zdHJhaW50Ij48cCBjbGFzcz0icHJlZml4Ij48YSBuYW1lPSJVbmlxdWVOb3RhdGlvbk5hbWUiPjwvYT48Yj5WYWxpZGl0eQ0KK2NvbnN0cmFpbnQ6IFVuaXF1ZSBOb3RhdGlvbiBOYW1lPC9iPjwvcD48cD5Pbmx5IG9uZSBub3RhdGlvbiBkZWNsYXJhdGlvbiBjYW4NCitkZWNsYXJlIGEgZ2l2ZW4gPGEgaHJlZj0iI05ULU5hbWUiPk5hbWU8L2E+LjwvcD4gPC9kaXY+IDxwPlhNTCBwcm9jZXNzb3JzDQorbXVzdCBwcm92aWRlIGFwcGxpY2F0aW9ucyB3aXRoIHRoZSBuYW1lIGFuZCBleHRlcm5hbCBpZGVudGlmaWVyKHMpIG9mIGFueQ0KK25vdGF0aW9uIGRlY2xhcmVkIGFuZCByZWZlcnJlZCB0byBpbiBhbiBhdHRyaWJ1dGUgdmFsdWUsIGF0dHJpYnV0ZSBkZWZpbml0aW9uLA0KK29yIGVudGl0eSBkZWNsYXJhdGlvbi4gVGhleSBtYXkgYWRkaXRpb25hbGx5IHJlc29sdmUgdGhlIGV4dGVybmFsIGlkZW50aWZpZXINCitpbnRvIHRoZSA8YSB0aXRsZT0iU3lzdGVtIElkZW50aWZpZXIiIGhyZWY9IiNkdC1zeXNpZCI+c3lzdGVtIGlkZW50aWZpZXI8L2E+LA0KK2ZpbGUgbmFtZSwgb3Igb3RoZXIgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGFsbG93IHRoZSBhcHBsaWNhdGlvbiB0byBjYWxsIGENCitwcm9jZXNzb3IgZm9yIGRhdGEgaW4gdGhlIG5vdGF0aW9uIGRlc2NyaWJlZC4gKEl0IGlzIG5vdCBhbiBlcnJvciwgaG93ZXZlciwNCitmb3IgWE1MIGRvY3VtZW50cyB0byBkZWNsYXJlIGFuZCByZWZlciB0byBub3RhdGlvbnMgZm9yIHdoaWNoIG5vdGF0aW9uLXNwZWNpZmljDQorYXBwbGljYXRpb25zIGFyZSBub3QgYXZhaWxhYmxlIG9uIHRoZSBzeXN0ZW0gd2hlcmUgdGhlIFhNTCBwcm9jZXNzb3Igb3IgYXBwbGljYXRpb24NCitpcyBydW5uaW5nLik8L3A+IDwvZGl2PiA8ZGl2IGNsYXNzPSJkaXYyIj4gPGgzPjxhIG5hbWU9InNlYy1kb2MtZW50aXR5Ij48L2E+NC44DQorRG9jdW1lbnQgRW50aXR5PC9oMz4gPHA+WzxhIHRpdGxlPSJEb2N1bWVudCBFbnRpdHkiIG5hbWU9ImR0LWRvY2VudCI+RGVmaW5pdGlvbjwvYT46DQorVGhlIDxiPmRvY3VtZW50IGVudGl0eTwvYj4gc2VydmVzIGFzIHRoZSByb290IG9mIHRoZSBlbnRpdHkgdHJlZSBhbmQgYSBzdGFydGluZy1wb2ludA0KK2ZvciBhbiA8YSB0aXRsZT0iWE1MIFByb2Nlc3NvciIgaHJlZj0iI2R0LXhtbC1wcm9jIj5YTUwgcHJvY2Vzc29yPC9hPi5dIFRoaXMNCitzcGVjaWZpY2F0aW9uIGRvZXMgbm90IHNwZWNpZnkgaG93IHRoZSBkb2N1bWVudCBlbnRpdHkgaXMgdG8gYmUgbG9jYXRlZCBieQ0KK2FuIFhNTCBwcm9jZXNzb3I7IHVubGlrZSBvdGhlciBlbnRpdGllcywgdGhlIGRvY3VtZW50IGVudGl0eSBoYXMgbm8gbmFtZSBhbmQNCittaWdodCB3ZWxsIGFwcGVhciBvbiBhIHByb2Nlc3NvciBpbnB1dCBzdHJlYW0gd2l0aG91dCBhbnkgaWRlbnRpZmljYXRpb24gYXQNCithbGwuPC9wPiA8L2Rpdj4gPC9kaXY+ICA8ZGl2IGNsYXNzPSJkaXYxIj4gPGgyPjxhIG5hbWU9InNlYy1jb25mb3JtYW5jZSI+PC9hPjUNCitDb25mb3JtYW5jZTwvaDI+IDxkaXYgY2xhc3M9ImRpdjIiPiA8aDM+PGEgbmFtZT0icHJvYy10eXBlcyI+PC9hPjUuMSBWYWxpZGF0aW5nDQorYW5kIE5vbi1WYWxpZGF0aW5nIFByb2Nlc3NvcnM8L2gzPiA8cD5Db25mb3JtaW5nIDxhIHRpdGxlPSJYTUwgUHJvY2Vzc29yIg0KK2hyZWY9IiNkdC14bWwtcHJvYyI+WE1MIHByb2Nlc3NvcnM8L2E+IGZhbGwgaW50byB0d28gY2xhc3NlczogdmFsaWRhdGluZyBhbmQNCitub24tdmFsaWRhdGluZy48L3A+IDxwPlZhbGlkYXRpbmcgYW5kIG5vbi12YWxpZGF0aW5nIHByb2Nlc3NvcnMgYWxpa2UgbXVzdA0KK3JlcG9ydCB2aW9sYXRpb25zIG9mIHRoaXMgc3BlY2lmaWNhdGlvbidzIHdlbGwtZm9ybWVkbmVzcyBjb25zdHJhaW50cyBpbiB0aGUNCitjb250ZW50IG9mIHRoZSA8YSB0aXRsZT0iRG9jdW1lbnQgRW50aXR5IiBocmVmPSIjZHQtZG9jZW50Ij5kb2N1bWVudCBlbnRpdHk8L2E+DQorYW5kIGFueSBvdGhlciA8YSB0aXRsZT0iVGV4dCBFbnRpdHkiIGhyZWY9IiNkdC1wYXJzZWRlbnQiPnBhcnNlZCBlbnRpdGllczwvYT4NCit0aGF0IHRoZXkgcmVhZC48L3A+IDxwPls8YSB0aXRsZT0iVmFsaWRhdGluZyBQcm9jZXNzb3IiIG5hbWU9ImR0LXZhbGlkYXRpbmciPkRlZmluaXRpb248L2E+OiA8Yj5WYWxpZGF0aW5nDQorcHJvY2Vzc29yczwvYj4gbXVzdCwgYXQgdXNlciBvcHRpb24sIHJlcG9ydCB2aW9sYXRpb25zIG9mIHRoZSBjb25zdHJhaW50cw0KK2V4cHJlc3NlZCBieSB0aGUgZGVjbGFyYXRpb25zIGluIHRoZSA8YSB0aXRsZT0iRG9jdW1lbnQgVHlwZSBEZWNsYXJhdGlvbiINCitocmVmPSIjZHQtZG9jdHlwZSI+RFREPC9hPiwgYW5kIGZhaWx1cmVzIHRvIGZ1bGZpbGwgdGhlIHZhbGlkaXR5IGNvbnN0cmFpbnRzDQorZ2l2ZW4gaW4gdGhpcyBzcGVjaWZpY2F0aW9uLl0gVG8gYWNjb21wbGlzaCB0aGlzLCB2YWxpZGF0aW5nIFhNTCBwcm9jZXNzb3JzDQorbXVzdCByZWFkIGFuZCBwcm9jZXNzIHRoZSBlbnRpcmUgRFREIGFuZCBhbGwgZXh0ZXJuYWwgcGFyc2VkIGVudGl0aWVzIHJlZmVyZW5jZWQNCitpbiB0aGUgZG9jdW1lbnQuPC9wPiA8cD5Ob24tdmFsaWRhdGluZyBwcm9jZXNzb3JzIGFyZSByZXF1aXJlZCB0byBjaGVjayBvbmx5DQordGhlIDxhIHRpdGxlPSJEb2N1bWVudCBFbnRpdHkiIGhyZWY9IiNkdC1kb2NlbnQiPmRvY3VtZW50IGVudGl0eTwvYT4sIGluY2x1ZGluZw0KK3RoZSBlbnRpcmUgaW50ZXJuYWwgRFREIHN1YnNldCwgZm9yIHdlbGwtZm9ybWVkbmVzcy4gWzxhIHRpdGxlPSJQcm9jZXNzIERlY2xhcmF0aW9ucyINCituYW1lPSJkdC11c2UtbWRlY2wiPkRlZmluaXRpb248L2E+OiAgV2hpbGUgdGhleSBhcmUgbm90IHJlcXVpcmVkIHRvIGNoZWNrDQordGhlIGRvY3VtZW50IGZvciB2YWxpZGl0eSwgdGhleSBhcmUgcmVxdWlyZWQgdG8gPGI+cHJvY2VzczwvYj4gYWxsIHRoZSBkZWNsYXJhdGlvbnMNCit0aGV5IHJlYWQgaW4gdGhlIGludGVybmFsIERURCBzdWJzZXQgYW5kIGluIGFueSBwYXJhbWV0ZXIgZW50aXR5IHRoYXQgdGhleQ0KK3JlYWQsIHVwIHRvIHRoZSBmaXJzdCByZWZlcmVuY2UgdG8gYSBwYXJhbWV0ZXIgZW50aXR5IHRoYXQgdGhleSBkbyA8ZW0+bm90PC9lbT4NCityZWFkOyB0aGF0IGlzIHRvIHNheSwgdGhleSBtdXN0IHVzZSB0aGUgaW5mb3JtYXRpb24gaW4gdGhvc2UgZGVjbGFyYXRpb25zDQordG8gPGEgaHJlZj0iI0FWTm9ybWFsaXplIj48Y2l0ZT5ub3JtYWxpemU8L2NpdGU+PC9hPiBhdHRyaWJ1dGUgdmFsdWVzLCA8YQ0KK2hyZWY9IiNpbmNsdWRlZCI+PGNpdGU+aW5jbHVkZTwvY2l0ZT48L2E+IHRoZSByZXBsYWNlbWVudCB0ZXh0IG9mIGludGVybmFsDQorZW50aXRpZXMsIGFuZCBzdXBwbHkgPGEgaHJlZj0iI3NlYy1hdHRyLWRlZmF1bHRzIj48Y2l0ZT5kZWZhdWx0IGF0dHJpYnV0ZQ0KK3ZhbHVlczwvY2l0ZT48L2E+Ll0gRXhjZXB0IHdoZW4gPGNvZGU+c3RhbmRhbG9uZT0ieWVzIjwvY29kZT4sIHRoZXkgbXVzdCBub3QgPGENCit0aXRsZT0iUHJvY2VzcyBEZWNsYXJhdGlvbnMiIGhyZWY9IiNkdC11c2UtbWRlY2wiPnByb2Nlc3M8L2E+IDxhIHRpdGxlPSJlbnRpdHkgZGVjbGFyYXRpb24iDQoraHJlZj0iI2R0LWVudGRlY2wiPmVudGl0eSBkZWNsYXJhdGlvbnM8L2E+IG9yIDxhIHRpdGxlPSJBdHRyaWJ1dGUtTGlzdCBEZWNsYXJhdGlvbiINCitocmVmPSIjZHQtYXR0ZGVjbCI+YXR0cmlidXRlLWxpc3QgZGVjbGFyYXRpb25zPC9hPiBlbmNvdW50ZXJlZCBhZnRlciBhIHJlZmVyZW5jZQ0KK3RvIGEgcGFyYW1ldGVyIGVudGl0eSB0aGF0IGlzIG5vdCByZWFkLCBzaW5jZSB0aGUgZW50aXR5IG1heSBoYXZlIGNvbnRhaW5lZA0KK292ZXJyaWRpbmcgZGVjbGFyYXRpb25zLjwvcD4gPC9kaXY+IDxkaXYgY2xhc3M9ImRpdjIiPiA8aDM+PGEgbmFtZT0ic2FmZS1iZWhhdmlvciI+PC9hPjUuMg0KK1VzaW5nIFhNTCBQcm9jZXNzb3JzPC9oMz4gPHA+VGhlIGJlaGF2aW9yIG9mIGEgdmFsaWRhdGluZyBYTUwgcHJvY2Vzc29yIGlzDQoraGlnaGx5IHByZWRpY3RhYmxlOyBpdCBtdXN0IHJlYWQgZXZlcnkgcGllY2Ugb2YgYSBkb2N1bWVudCBhbmQgcmVwb3J0IGFsbA0KK3dlbGwtZm9ybWVkbmVzcyBhbmQgdmFsaWRpdHkgdmlvbGF0aW9ucy4gTGVzcyBpcyByZXF1aXJlZCBvZiBhIG5vbi12YWxpZGF0aW5nDQorcHJvY2Vzc29yOyBpdCBuZWVkIG5vdCByZWFkIGFueSBwYXJ0IG9mIHRoZSBkb2N1bWVudCBvdGhlciB0aGFuIHRoZSBkb2N1bWVudA0KK2VudGl0eS4gVGhpcyBoYXMgdHdvIGVmZmVjdHMgdGhhdCBtYXkgYmUgaW1wb3J0YW50IHRvIHVzZXJzIG9mIFhNTCBwcm9jZXNzb3JzOjwvcD4gPHVsPg0KKzxsaT48cD5DZXJ0YWluIHdlbGwtZm9ybWVkbmVzcyBlcnJvcnMsIHNwZWNpZmljYWxseSB0aG9zZSB0aGF0IHJlcXVpcmUgcmVhZGluZw0KK2V4dGVybmFsIGVudGl0aWVzLCBtYXkgbm90IGJlIGRldGVjdGVkIGJ5IGEgbm9uLXZhbGlkYXRpbmcgcHJvY2Vzc29yLiBFeGFtcGxlcw0KK2luY2x1ZGUgdGhlIGNvbnN0cmFpbnRzIGVudGl0bGVkIDxhIGhyZWY9IiN3Zi1lbnRkZWNsYXJlZCI+PGNpdGU+RW50aXR5IERlY2xhcmVkPC9jaXRlPjwvYT4sIDxhDQoraHJlZj0iI3RleHRlbnQiPjxjaXRlPlBhcnNlZCBFbnRpdHk8L2NpdGU+PC9hPiwgYW5kIDxhIGhyZWY9IiNub3JlY3Vyc2lvbiI+PGNpdGU+Tm8NCitSZWN1cnNpb248L2NpdGU+PC9hPiwgYXMgd2VsbCBhcyBzb21lIG9mIHRoZSBjYXNlcyBkZXNjcmliZWQgYXMgPGEgaHJlZj0iI2ZvcmJpZGRlbiI+PGNpdGU+Zm9yYmlkZGVuPC9jaXRlPjwvYT4NCitpbiA8YSBocmVmPSIjZW50cHJvYyI+PGI+NC40IFhNTCBQcm9jZXNzb3IgVHJlYXRtZW50IG9mIEVudGl0aWVzIGFuZCBSZWZlcmVuY2VzPC9iPjwvYT4uPC9wPjwvbGk+DQorPGxpPjxwPlRoZSBpbmZvcm1hdGlvbiBwYXNzZWQgZnJvbSB0aGUgcHJvY2Vzc29yIHRvIHRoZSBhcHBsaWNhdGlvbiBtYXkgdmFyeSwNCitkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgcHJvY2Vzc29yIHJlYWRzIHBhcmFtZXRlciBhbmQgZXh0ZXJuYWwgZW50aXRpZXMuDQorRm9yIGV4YW1wbGUsIGEgbm9uLXZhbGlkYXRpbmcgcHJvY2Vzc29yIG1heSBub3QgPGEgaHJlZj0iI0FWTm9ybWFsaXplIj48Y2l0ZT5ub3JtYWxpemU8L2NpdGU+PC9hPg0KK2F0dHJpYnV0ZSB2YWx1ZXMsIDxhIGhyZWY9IiNpbmNsdWRlZCI+PGNpdGU+aW5jbHVkZTwvY2l0ZT48L2E+IHRoZSByZXBsYWNlbWVudA0KK3RleHQgb2YgaW50ZXJuYWwgZW50aXRpZXMsIG9yIHN1cHBseSA8YSBocmVmPSIjc2VjLWF0dHItZGVmYXVsdHMiPjxjaXRlPmRlZmF1bHQNCithdHRyaWJ1dGUgdmFsdWVzPC9jaXRlPjwvYT4sIHdoZXJlIGRvaW5nIHNvIGRlcGVuZHMgb24gaGF2aW5nIHJlYWQgZGVjbGFyYXRpb25zDQoraW4gZXh0ZXJuYWwgb3IgcGFyYW1ldGVyIGVudGl0aWVzLjwvcD48L2xpPg0KKzwvdWw+IDxwPkZvciBtYXhpbXVtIHJlbGlhYmlsaXR5IGluIGludGVyb3BlcmF0aW5nIGJldHdlZW4gZGlmZmVyZW50IFhNTCBwcm9jZXNzb3JzLA0KK2FwcGxpY2F0aW9ucyB3aGljaCB1c2Ugbm9uLXZhbGlkYXRpbmcgcHJvY2Vzc29ycyBzaG91bGQgbm90IHJlbHkgb24gYW55IGJlaGF2aW9ycw0KK25vdCByZXF1aXJlZCBvZiBzdWNoIHByb2Nlc3NvcnMuIEFwcGxpY2F0aW9ucyB3aGljaCByZXF1aXJlIGZhY2lsaXRpZXMgc3VjaA0KK2FzIHRoZSB1c2Ugb2YgZGVmYXVsdCBhdHRyaWJ1dGVzIG9yIGludGVybmFsIGVudGl0aWVzIHdoaWNoIGFyZSBkZWNsYXJlZCBpbg0KK2V4dGVybmFsIGVudGl0aWVzIHNob3VsZCB1c2UgdmFsaWRhdGluZyBYTUwgcHJvY2Vzc29ycy48L3A+IDwvZGl2PiA8L2Rpdj4gPGRpdg0KK2NsYXNzPSJkaXYxIj4gPGgyPjxhIG5hbWU9InNlYy1ub3RhdGlvbiI+PC9hPjYgTm90YXRpb248L2gyPiA8cD5UaGUgZm9ybWFsDQorZ3JhbW1hciBvZiBYTUwgaXMgZ2l2ZW4gaW4gdGhpcyBzcGVjaWZpY2F0aW9uIHVzaW5nIGEgc2ltcGxlIEV4dGVuZGVkIEJhY2t1cy1OYXVyDQorRm9ybSAoRUJORikgbm90YXRpb24uIEVhY2ggcnVsZSBpbiB0aGUgZ3JhbW1hciBkZWZpbmVzIG9uZSBzeW1ib2wsIGluIHRoZQ0KK2Zvcm08L3A+IDx0YWJsZSBjbGFzcz0iZWciIHdpZHRoPSIxMDAlIiBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSI1IiBiZ2NvbG9yPSIjOTlmZmZmIj4NCis8dHI+DQorPHRkPjxwcmU+c3ltYm9sIDo6PSBleHByZXNzaW9uPC9wcmU+PC90ZD4NCis8L3RyPg0KKzwvdGFibGU+IDxwPlN5bWJvbHMgYXJlIHdyaXR0ZW4gd2l0aCBhbiBpbml0aWFsIGNhcGl0YWwgbGV0dGVyIGlmIHRoZXkgYXJlDQordGhlIHN0YXJ0IHN5bWJvbCBvZiBhIHJlZ3VsYXIgbGFuZ3VhZ2UsIG90aGVyd2lzZSB3aXRoIGFuIGluaXRpYWwgbG93ZXIgY2FzZQ0KK2xldHRlci4gTGl0ZXJhbCBzdHJpbmdzIGFyZSBxdW90ZWQuPC9wPiA8cD5XaXRoaW4gdGhlIGV4cHJlc3Npb24gb24gdGhlIHJpZ2h0LWhhbmQNCitzaWRlIG9mIGEgcnVsZSwgdGhlIGZvbGxvd2luZyBleHByZXNzaW9ucyBhcmUgdXNlZCB0byBtYXRjaCBzdHJpbmdzIG9mIG9uZQ0KK29yIG1vcmUgY2hhcmFjdGVyczogPC9wPjxkbD4NCis8ZHQgY2xhc3M9ImxhYmVsIj48Y29kZT4jeE48L2NvZGU+PC9kdD4NCis8ZGQ+IDxwPndoZXJlIDxjb2RlPk48L2NvZGU+IGlzIGEgaGV4YWRlY2ltYWwgaW50ZWdlciwgdGhlIGV4cHJlc3Npb24gbWF0Y2hlcw0KK3RoZSBjaGFyYWN0ZXIgaW4gSVNPL0lFQyAxMDY0NiB3aG9zZSBjYW5vbmljYWwgKFVDUy00KSBjb2RlIHZhbHVlLCB3aGVuIGludGVycHJldGVkDQorYXMgYW4gdW5zaWduZWQgYmluYXJ5IG51bWJlciwgaGFzIHRoZSB2YWx1ZSBpbmRpY2F0ZWQuIFRoZSBudW1iZXIgb2YgbGVhZGluZw0KK3plcm9zIGluIHRoZSA8Y29kZT4jeE48L2NvZGU+IGZvcm0gaXMgaW5zaWduaWZpY2FudDsgdGhlIG51bWJlciBvZiBsZWFkaW5nDQoremVyb3MgaW4gdGhlIGNvcnJlc3BvbmRpbmcgY29kZSB2YWx1ZSBpcyBnb3Zlcm5lZCBieSB0aGUgY2hhcmFjdGVyIGVuY29kaW5nDQoraW4gdXNlIGFuZCBpcyBub3Qgc2lnbmlmaWNhbnQgZm9yIFhNTC48L3A+IDwvZGQ+DQorPGR0IGNsYXNzPSJsYWJlbCI+PGNvZGU+W2EtekEtWl08L2NvZGU+LCA8Y29kZT5bI3hOLSN4Tl08L2NvZGU+PC9kdD4NCis8ZGQ+IDxwPm1hdGNoZXMgYW55IDxhIGhyZWY9IiNOVC1DaGFyIj5DaGFyPC9hPiB3aXRoIGEgdmFsdWUgaW4gdGhlIHJhbmdlKHMpDQoraW5kaWNhdGVkIChpbmNsdXNpdmUpLjwvcD4gPC9kZD4NCis8ZHQgY2xhc3M9ImxhYmVsIj48Y29kZT5bYWJjXTwvY29kZT4sIDxjb2RlPlsjeE4jeE4jeE5dPC9jb2RlPjwvZHQ+DQorPGRkPiA8cD5tYXRjaGVzIGFueSA8YSBocmVmPSIjTlQtQ2hhciI+Q2hhcjwvYT4gd2l0aCBhIHZhbHVlIGFtb25nIHRoZSBjaGFyYWN0ZXJzDQorZW51bWVyYXRlZC4gRW51bWVyYXRpb25zIGFuZCByYW5nZXMgY2FuIGJlIG1peGVkIGluIG9uZSBzZXQgb2YgYnJhY2tldHMuPC9wPiA8L2RkPg0KKzxkdCBjbGFzcz0ibGFiZWwiPjxjb2RlPlteYS16XTwvY29kZT4sIDxjb2RlPlteI3hOLSN4Tl08L2NvZGU+PC9kdD4NCis8ZGQ+IDxwPm1hdGNoZXMgYW55IDxhIGhyZWY9IiNOVC1DaGFyIj5DaGFyPC9hPiB3aXRoIGEgdmFsdWUgPGVtPm91dHNpZGU8L2VtPg0KK3RoZSByYW5nZSBpbmRpY2F0ZWQuPC9wPiA8L2RkPg0KKzxkdCBjbGFzcz0ibGFiZWwiPjxjb2RlPlteYWJjXTwvY29kZT4sIDxjb2RlPlteI3hOI3hOI3hOXTwvY29kZT48L2R0Pg0KKzxkZD4gPHA+bWF0Y2hlcyBhbnkgPGEgaHJlZj0iI05ULUNoYXIiPkNoYXI8L2E+IHdpdGggYSB2YWx1ZSBub3QgYW1vbmcgdGhlDQorY2hhcmFjdGVycyBnaXZlbi4gRW51bWVyYXRpb25zIGFuZCByYW5nZXMgb2YgZm9yYmlkZGVuIHZhbHVlcyBjYW4gYmUgbWl4ZWQNCitpbiBvbmUgc2V0IG9mIGJyYWNrZXRzLjwvcD4gPC9kZD4NCis8ZHQgY2xhc3M9ImxhYmVsIj48Y29kZT4ic3RyaW5nIjwvY29kZT48L2R0Pg0KKzxkZD4gPHA+bWF0Y2hlcyBhIGxpdGVyYWwgc3RyaW5nIDxhIHRpdGxlPSJtYXRjaCIgaHJlZj0iI2R0LW1hdGNoIj5tYXRjaGluZzwvYT4NCit0aGF0IGdpdmVuIGluc2lkZSB0aGUgZG91YmxlIHF1b3Rlcy48L3A+IDwvZGQ+DQorPGR0IGNsYXNzPSJsYWJlbCI+PGNvZGU+J3N0cmluZyc8L2NvZGU+PC9kdD4NCis8ZGQ+IDxwPm1hdGNoZXMgYSBsaXRlcmFsIHN0cmluZyA8YSB0aXRsZT0ibWF0Y2giIGhyZWY9IiNkdC1tYXRjaCI+bWF0Y2hpbmc8L2E+DQordGhhdCBnaXZlbiBpbnNpZGUgdGhlIHNpbmdsZSBxdW90ZXMuPC9wPiA8L2RkPg0KKzwvZGw+PHA+IFRoZXNlIHN5bWJvbHMgbWF5IGJlIGNvbWJpbmVkIHRvIG1hdGNoIG1vcmUgY29tcGxleCBwYXR0ZXJucyBhcyBmb2xsb3dzLA0KK3doZXJlIDxjb2RlPkE8L2NvZGU+IGFuZCA8Y29kZT5CPC9jb2RlPiByZXByZXNlbnQgc2ltcGxlIGV4cHJlc3Npb25zOiA8L3A+PGRsPg0KKzxkdCBjbGFzcz0ibGFiZWwiPig8Y29kZT5leHByZXNzaW9uPC9jb2RlPik8L2R0Pg0KKzxkZD4gPHA+PGNvZGU+ZXhwcmVzc2lvbjwvY29kZT4gaXMgdHJlYXRlZCBhcyBhIHVuaXQgYW5kIG1heSBiZSBjb21iaW5lZCBhcw0KK2Rlc2NyaWJlZCBpbiB0aGlzIGxpc3QuPC9wPiA8L2RkPg0KKzxkdCBjbGFzcz0ibGFiZWwiPjxjb2RlPkE/PC9jb2RlPjwvZHQ+DQorPGRkPiA8cD5tYXRjaGVzIDxjb2RlPkE8L2NvZGU+IG9yIG5vdGhpbmc7IG9wdGlvbmFsIDxjb2RlPkE8L2NvZGU+LjwvcD4gPC9kZD4NCis8ZHQgY2xhc3M9ImxhYmVsIj48Y29kZT5BIEI8L2NvZGU+PC9kdD4NCis8ZGQ+IDxwPm1hdGNoZXMgPGNvZGU+QTwvY29kZT4gZm9sbG93ZWQgYnkgPGNvZGU+QjwvY29kZT4uIFRoaXMgb3BlcmF0b3IgaGFzDQoraGlnaGVyIHByZWNlZGVuY2UgdGhhbiBhbHRlcm5hdGlvbjsgdGh1cyA8Y29kZT5BIEIgfCBDIEQ8L2NvZGU+IGlzIGlkZW50aWNhbA0KK3RvIDxjb2RlPihBIEIpIHwgKEMgRCk8L2NvZGU+LjwvcD4gPC9kZD4NCis8ZHQgY2xhc3M9ImxhYmVsIj48Y29kZT5BIHwgQjwvY29kZT48L2R0Pg0KKzxkZD4gPHA+bWF0Y2hlcyA8Y29kZT5BPC9jb2RlPiBvciA8Y29kZT5CPC9jb2RlPiBidXQgbm90IGJvdGguPC9wPiA8L2RkPg0KKzxkdCBjbGFzcz0ibGFiZWwiPjxjb2RlPkEgLSBCPC9jb2RlPjwvZHQ+DQorPGRkPiA8cD5tYXRjaGVzIGFueSBzdHJpbmcgdGhhdCBtYXRjaGVzIDxjb2RlPkE8L2NvZGU+IGJ1dCBkb2VzIG5vdCBtYXRjaCA8Y29kZT5CPC9jb2RlPi48L3A+IDwvZGQ+DQorPGR0IGNsYXNzPSJsYWJlbCI+PGNvZGU+QSs8L2NvZGU+PC9kdD4NCis8ZGQ+IDxwPm1hdGNoZXMgb25lIG9yIG1vcmUgb2NjdXJyZW5jZXMgb2YgPGNvZGU+QTwvY29kZT4uQ29uY2F0ZW5hdGlvbiBoYXMNCitoaWdoZXIgcHJlY2VkZW5jZSB0aGFuIGFsdGVybmF0aW9uOyB0aHVzIDxjb2RlPkErIHwgQis8L2NvZGU+IGlzIGlkZW50aWNhbA0KK3RvIDxjb2RlPihBKykgfCAoQispPC9jb2RlPi48L3A+IDwvZGQ+DQorPGR0IGNsYXNzPSJsYWJlbCI+PGNvZGU+QSo8L2NvZGU+PC9kdD4NCis8ZGQ+IDxwPm1hdGNoZXMgemVybyBvciBtb3JlIG9jY3VycmVuY2VzIG9mIDxjb2RlPkE8L2NvZGU+LiBDb25jYXRlbmF0aW9uDQoraGFzIGhpZ2hlciBwcmVjZWRlbmNlIHRoYW4gYWx0ZXJuYXRpb247IHRodXMgPGNvZGU+QSogfCBCKjwvY29kZT4gaXMgaWRlbnRpY2FsDQordG8gPGNvZGU+KEEqKSB8IChCKik8L2NvZGU+LjwvcD4gPC9kZD4NCis8L2RsPjxwPiBPdGhlciBub3RhdGlvbnMgdXNlZCBpbiB0aGUgcHJvZHVjdGlvbnMgYXJlOiA8L3A+PGRsPg0KKzxkdCBjbGFzcz0ibGFiZWwiPjxjb2RlPi8qIC4uLiAqLzwvY29kZT48L2R0Pg0KKzxkZD4gPHA+Y29tbWVudC48L3A+IDwvZGQ+DQorPGR0IGNsYXNzPSJsYWJlbCI+PGNvZGU+WyB3ZmM6IC4uLiBdPC9jb2RlPjwvZHQ+DQorPGRkPiA8cD53ZWxsLWZvcm1lZG5lc3MgY29uc3RyYWludDsgdGhpcyBpZGVudGlmaWVzIGJ5IG5hbWUgYSBjb25zdHJhaW50IG9uIDxhDQordGl0bGU9IldlbGwtRm9ybWVkIiBocmVmPSIjZHQtd2VsbGZvcm1lZCI+d2VsbC1mb3JtZWQ8L2E+IGRvY3VtZW50cyBhc3NvY2lhdGVkDQord2l0aCBhIHByb2R1Y3Rpb24uPC9wPiA8L2RkPg0KKzxkdCBjbGFzcz0ibGFiZWwiPjxjb2RlPlsgdmM6IC4uLiBdPC9jb2RlPjwvZHQ+DQorPGRkPiA8cD52YWxpZGl0eSBjb25zdHJhaW50OyB0aGlzIGlkZW50aWZpZXMgYnkgbmFtZSBhIGNvbnN0cmFpbnQgb24gPGEgdGl0bGU9IlZhbGlkaXR5Ig0KK2hyZWY9IiNkdC12YWxpZCI+dmFsaWQ8L2E+IGRvY3VtZW50cyBhc3NvY2lhdGVkIHdpdGggYSBwcm9kdWN0aW9uLjwvcD4gPC9kZD4NCis8L2RsPjxwPjwvcD4gPC9kaXY+IDwvZGl2PjxkaXYgY2xhc3M9ImJhY2siPiAgIDxkaXYgY2xhc3M9ImRpdjEiPiA8aDI+PGEgbmFtZT0ic2VjLWJpYmxpb2dyYXBoeSI+PC9hPkENCitSZWZlcmVuY2VzPC9oMj4gPGRpdiBjbGFzcz0iZGl2MiI+IDxoMz48YSBuYW1lPSJzZWMtZXhpc3Rpbmctc3RkcyI+PC9hPkEuMQ0KK05vcm1hdGl2ZSBSZWZlcmVuY2VzPC9oMz4gPGRsPg0KKzxkdCBjbGFzcz0ibGFiZWwiPjxhIG5hbWU9IklBTkEiPjwvYT5JQU5BLUNIQVJTRVRTPC9kdD4NCis8ZGQ+KEludGVybmV0IEFzc2lnbmVkIE51bWJlcnMgQXV0aG9yaXR5KSA8Y2l0ZT5PZmZpY2lhbCBOYW1lcyBmb3IgQ2hhcmFjdGVyDQorU2V0czwvY2l0ZT4sIGVkLiBLZWxkIFNpbW9uc2VuIGV0IGFsLiBTZWUgPGEgaHJlZj0iZnRwOi8vZnRwLmlzaS5lZHUvaW4tbm90ZXMvaWFuYS9hc3NpZ25tZW50cy9jaGFyYWN0ZXItc2V0cyI+ZnRwOi8vZnRwLmlzaS5lZHUvaW4tbm90ZXMvaWFuYS9hc3NpZ25tZW50cy9jaGFyYWN0ZXItc2V0czwvYQ0KKz4uIDwvZGQ+DQorPGR0IGNsYXNzPSJsYWJlbCI+PGEgbmFtZT0iUkZDMTc2NiI+PC9hPklFVEYgUkZDIDE3NjY8L2R0Pg0KKzxkZD5JRVRGIChJbnRlcm5ldCBFbmdpbmVlcmluZyBUYXNrIEZvcmNlKS4gPGNpdGU+UkZDIDE3NjY6IFRhZ3MgZm9yIHRoZSBJZGVudGlmaWNhdGlvbg0KK29mIExhbmd1YWdlczwvY2l0ZT4sIGVkLiBILiBBbHZlc3RyYW5kLiAxOTk1LiAgKFNlZSA8YSBocmVmPSJodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMxNzY2LnR4dCI+aHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMTc2Ni50eHQ8L2E+Lik8L2RkPg0KKzxkdCBjbGFzcz0ibGFiZWwiPjxhIG5hbWU9IklTTzEwNjQ2Ij48L2E+SVNPL0lFQyAxMDY0NjwvZHQ+DQorPGRkPklTTyAoSW50ZXJuYXRpb25hbCBPcmdhbml6YXRpb24gZm9yIFN0YW5kYXJkaXphdGlvbikuIDxjaXRlPklTTy9JRUMgMTA2NDYtMTk5Mw0KKyhFKS4gSW5mb3JtYXRpb24gdGVjaG5vbG9neSAtLSBVbml2ZXJzYWwgTXVsdGlwbGUtT2N0ZXQgQ29kZWQgQ2hhcmFjdGVyIFNldA0KKyhVQ1MpIC0tIFBhcnQgMTogQXJjaGl0ZWN0dXJlIGFuZCBCYXNpYyBNdWx0aWxpbmd1YWwgUGxhbmUuPC9jaXRlPiBbR2VuZXZhXToNCitJbnRlcm5hdGlvbmFsIE9yZ2FuaXphdGlvbiBmb3IgU3RhbmRhcmRpemF0aW9uLCAxOTkzIChwbHVzIGFtZW5kbWVudHMgQU0gMQ0KK3Rocm91Z2ggQU0gNykuPC9kZD4NCis8ZHQgY2xhc3M9ImxhYmVsIj48YSBuYW1lPSJJU08xMDY0Ni0yMDAwIj48L2E+SVNPL0lFQyAxMDY0Ni0yMDAwPC9kdD4NCis8ZGQ+IElTTyAoSW50ZXJuYXRpb25hbCBPcmdhbml6YXRpb24gZm9yIFN0YW5kYXJkaXphdGlvbikuIDxjaXRlPklTTy9JRUMgMTA2NDYtMToyMDAwLg0KK0luZm9ybWF0aW9uIHRlY2hub2xvZ3kgLS0gVW5pdmVyc2FsIE11bHRpcGxlLU9jdGV0IENvZGVkIENoYXJhY3RlciBTZXQgKFVDUykNCistLSBQYXJ0IDE6IEFyY2hpdGVjdHVyZSBhbmQgQmFzaWMgTXVsdGlsaW5ndWFsIFBsYW5lLjwvY2l0ZT4gW0dlbmV2YV06IEludGVybmF0aW9uYWwNCitPcmdhbml6YXRpb24gZm9yIFN0YW5kYXJkaXphdGlvbiwgMjAwMC48L2RkPg0KKzxkdCBjbGFzcz0ibGFiZWwiPjxhIG5hbWU9IlVuaWNvZGUiPjwvYT5Vbmljb2RlPC9kdD4NCis8ZGQ+VGhlIFVuaWNvZGUgQ29uc29ydGl1bS4gPGVtPlRoZSBVbmljb2RlIFN0YW5kYXJkLCBWZXJzaW9uIDIuMC48L2VtPiBSZWFkaW5nLA0KK01hc3MuOiBBZGRpc29uLVdlc2xleSBEZXZlbG9wZXJzIFByZXNzLCAxOTk2LjwvZGQ+DQorPGR0IGNsYXNzPSJsYWJlbCI+PGEgbmFtZT0iVW5pY29kZTMiPjwvYT5Vbmljb2RlMzwvZHQ+DQorPGRkPiBUaGUgVW5pY29kZSBDb25zb3J0aXVtLiA8ZW0+VGhlIFVuaWNvZGUgU3RhbmRhcmQsIFZlcnNpb24gMy4wLjwvZW0+IFJlYWRpbmcsDQorTWFzcy46IEFkZGlzb24tV2VzbGV5IERldmVsb3BlcnMgUHJlc3MsIDIwMDAuIElTQk4gMC0yMDEtNjE2MzMtNS48L2RkPg0KKzwvZGw+PC9kaXY+IDxkaXYgY2xhc3M9ImRpdjIiPiAgPGgzPjxhIG5hbWU9Im51bGwiPjwvYT5BLjIgT3RoZXIgUmVmZXJlbmNlczwvaDM+IDxkbD4NCis8ZHQgY2xhc3M9ImxhYmVsIj48YSBuYW1lPSJBaG8iPjwvYT5BaG8vVWxsbWFuPC9kdD4NCis8ZGQ+QWhvLCBBbGZyZWQgVi4sIFJhdmkgU2V0aGksIGFuZCBKZWZmcmV5IEQuIFVsbG1hbi4gPGNpdGU+Q29tcGlsZXJzOiBQcmluY2lwbGVzLA0KK1RlY2huaXF1ZXMsIGFuZCBUb29sczwvY2l0ZT4uIFJlYWRpbmc6IEFkZGlzb24tV2VzbGV5LCAxOTg2LCBycHQuIGNvcnIuIDE5ODguPC9kZD4NCis8ZHQgY2xhc3M9ImxhYmVsIj48YSBuYW1lPSJCZXJuZXJzLUxlZSI+PC9hPkJlcm5lcnMtTGVlIGV0IGFsLjwvZHQ+DQorPGRkPiBCZXJuZXJzLUxlZSwgVC4sIFIuIEZpZWxkaW5nLCBhbmQgTC4gTWFzaW50ZXIuIDxjaXRlPlVuaWZvcm0gUmVzb3VyY2UNCitJZGVudGlmaWVycyAoVVJJKTogR2VuZXJpYyBTeW50YXggYW5kIFNlbWFudGljczwvY2l0ZT4uIDE5OTcuIChXb3JrIGluIHByb2dyZXNzOw0KK3NlZSB1cGRhdGVzIHRvIFJGQzE3MzguKTwvZGQ+DQorPGR0IGNsYXNzPSJsYWJlbCI+PGEgbmFtZT0iQUJLIj48L2E+QnImdXVtbDtnZ2VtYW5uLUtsZWluPC9kdD4NCis8ZGQ+QnImdXVtbDtnZ2VtYW5uLUtsZWluLCBBbm5lLiBGb3JtYWwgTW9kZWxzIGluIERvY3VtZW50IFByb2Nlc3NpbmcuIEhhYmlsaXRhdGlvbnNzY2hyaWZ0Lg0KK0ZhY3VsdHkgb2YgTWF0aGVtYXRpY3MgYXQgdGhlIFVuaXZlcnNpdHkgb2YgRnJlaWJ1cmcsIDE5OTMuIChTZWUgPGEgaHJlZj0iZnRwOi8vZnRwLmluZm9ybWF0aWsudW5pLWZyZWlidXJnLmRlL2RvY3VtZW50cy9wYXBlcnMvYnJ1ZWdnZW0vaGFiaWwucHMiDQorPmZ0cDovL2Z0cC5pbmZvcm1hdGlrLnVuaS1mcmVpYnVyZy5kZS9kb2N1bWVudHMvcGFwZXJzL2JydWVnZ2VtL2hhYmlsLnBzPC9hPi4pPC9kZD4NCis8ZHQgY2xhc3M9ImxhYmVsIj48YSBuYW1lPSJBQktEVyI+PC9hPkJyJnV1bWw7Z2dlbWFubi1LbGVpbiBhbmQgV29vZDwvZHQ+DQorPGRkPkJyJnV1bWw7Z2dlbWFubi1LbGVpbiwgQW5uZSwgYW5kIERlcmljayBXb29kLiA8Y2l0ZT5EZXRlcm1pbmlzdGljIFJlZ3VsYXINCitMYW5ndWFnZXM8L2NpdGU+LiBVbml2ZXJzaXQmYXVtbDt0IEZyZWlidXJnLCBJbnN0aXR1dCBmJnV1bWw7ciBJbmZvcm1hdGlrLA0KK0JlcmljaHQgMzgsIE9rdG9iZXIgMTk5MS4gRXh0ZW5kZWQgYWJzdHJhY3QgaW4gQS4gRmlua2VsLCBNLiBKYW50emVuLCBIcnNnLiwNCitTVEFDUyAxOTkyLCBTLiAxNzMtMTg0LiBTcHJpbmdlci1WZXJsYWcsIEJlcmxpbiAxOTkyLiBMZWN0dXJlIE5vdGVzIGluIENvbXB1dGVyDQorU2NpZW5jZSA1NzcuIEZ1bGwgdmVyc2lvbiB0aXRsZWQgPGNpdGU+T25lLVVuYW1iaWd1b3VzIFJlZ3VsYXIgTGFuZ3VhZ2VzPC9jaXRlPg0KK2luIEluZm9ybWF0aW9uIGFuZCBDb21wdXRhdGlvbiAxNDAgKDIpOiAyMjktMjUzLCBGZWJydWFyeSAxOTk4LjwvZGQ+DQorPGR0IGNsYXNzPSJsYWJlbCI+PGEgbmFtZT0iQ2xhcmsiPjwvYT5DbGFyazwvZHQ+DQorPGRkPkphbWVzIENsYXJrLiBDb21wYXJpc29uIG9mIFNHTUwgYW5kIFhNTC4gU2VlIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL05PVEUtc2dtbC14bWwtOTcxMjE1Ij5odHRwOi8vd3d3LnczLm9yZy9UUi9OT1RFLXNnbWwteG1sLTk3MTIxNTwvYQ0KKz4uIDwvZGQ+DQorPGR0IGNsYXNzPSJsYWJlbCI+PGEgbmFtZT0iSUFOQS1MQU5HQ09ERVMiPjwvYT5JQU5BLUxBTkdDT0RFUzwvZHQ+DQorPGRkPihJbnRlcm5ldCBBc3NpZ25lZCBOdW1iZXJzIEF1dGhvcml0eSkgPGNpdGU+UmVnaXN0cnkgb2YgTGFuZ3VhZ2UgVGFnczwvY2l0ZT4sDQorZWQuIEtlbGQgU2ltb25zZW4gZXQgYWwuICAoU2VlIDxhIGhyZWY9Imh0dHA6Ly93d3cuaXNpLmVkdS9pbi1ub3Rlcy9pYW5hL2Fzc2lnbm1lbnRzL2xhbmd1YWdlcy8iPmh0dHA6Ly93d3cuaXNpLmVkdS9pbi1ub3Rlcy9pYW5hL2Fzc2lnbm1lbnRzL2xhbmd1YWdlcy88L2ENCis+Lik8L2RkPg0KKzxkdCBjbGFzcz0ibGFiZWwiPjxhIG5hbWU9IlJGQzIxNDEiPjwvYT5JRVRGIFJGQzIxNDE8L2R0Pg0KKzxkZD5JRVRGIChJbnRlcm5ldCBFbmdpbmVlcmluZyBUYXNrIEZvcmNlKS4gPGVtPlJGQyAyMTQxOiBVUk4gU3ludGF4PC9lbT4sDQorZWQuIFIuIE1vYXRzLiAxOTk3LiAgIChTZWUgPGEgaHJlZj0iaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjE0MS50eHQiPmh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzIxNDEudHh0PC9hPi4pPC9kZD4NCis8ZHQgY2xhc3M9ImxhYmVsIj48YSBuYW1lPSJyZmMyMjc5Ij48L2E+SUVURiBSRkMgMjI3OTwvZHQ+DQorPGRkPklFVEYgKEludGVybmV0IEVuZ2luZWVyaW5nIFRhc2sgRm9yY2UpLiA8Y2l0ZT5SRkMgMjI3OTogVVRGLTgsIGEgdHJhbnNmb3JtYXRpb24NCitmb3JtYXQgb2YgSVNPIDEwNjQ2PC9jaXRlPiwgZWQuIEYuIFllcmdlYXUsIDE5OTguICAoU2VlIDxhIGhyZWY9Imh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzIyNzkudHh0Ij5odHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyMjc5LnR4dDwvYT4uKTwvZGQ+DQorPGR0IGNsYXNzPSJsYWJlbCI+PGEgbmFtZT0icmZjMjM3NiI+PC9hPklFVEYgUkZDIDIzNzY8L2R0Pg0KKzxkZD5JRVRGIChJbnRlcm5ldCBFbmdpbmVlcmluZyBUYXNrIEZvcmNlKS4gPGNpdGU+UkZDIDIzNzY6IFhNTCBNZWRpYSBUeXBlczwvY2l0ZT4uDQorZWQuIEUuIFdoaXRlaGVhZCwgTS4gTXVyYXRhLiAxOTk4LiAgKFNlZSA8YSBocmVmPSJodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyMzc2LnR4dCI+aHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjM3Ni50eHQ8L2E+Lik8L2RkPg0KKzxkdCBjbGFzcz0ibGFiZWwiPjxhIG5hbWU9InJmYzIzOTYiPjwvYT5JRVRGIFJGQyAyMzk2PC9kdD4NCis8ZGQ+SUVURiAoSW50ZXJuZXQgRW5naW5lZXJpbmcgVGFzayBGb3JjZSkuIDxjaXRlPlJGQyAyMzk2OiBVbmlmb3JtIFJlc291cmNlDQorSWRlbnRpZmllcnMgKFVSSSk6IEdlbmVyaWMgU3ludGF4PC9jaXRlPi4gVC4gQmVybmVycy1MZWUsIFIuIEZpZWxkaW5nLCBMLg0KK01hc2ludGVyLiAxOTk4LiAgKFNlZSA8YSBocmVmPSJodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyMzk2LnR4dCI+aHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjM5Ni50eHQ8L2E+Lik8L2RkPg0KKzxkdCBjbGFzcz0ibGFiZWwiPjxhIG5hbWU9InJmYzI3MzIiPjwvYT5JRVRGIFJGQyAyNzMyPC9kdD4NCis8ZGQ+SUVURiAoSW50ZXJuZXQgRW5naW5lZXJpbmcgVGFzayBGb3JjZSkuIDxjaXRlPlJGQyAyNzMyOiBGb3JtYXQgZm9yIExpdGVyYWwNCitJUHY2IEFkZHJlc3NlcyBpbiBVUkwnczwvY2l0ZT4uIFIuIEhpbmRlbiwgQi4gQ2FycGVudGVyLCBMLiBNYXNpbnRlci4gMTk5OS4NCisgKFNlZSA8YSBocmVmPSJodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyNzMyLnR4dCI+aHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjczMi50eHQ8L2E+Lik8L2RkPg0KKzxkdCBjbGFzcz0ibGFiZWwiPjxhIG5hbWU9InJmYzI3ODEiPjwvYT5JRVRGIFJGQyAyNzgxPC9kdD4NCis8ZGQ+IElFVEYgKEludGVybmV0IEVuZ2luZWVyaW5nIFRhc2sgRm9yY2UpLiA8ZW0+UkZDIDI3ODE6IFVURi0xNiwgYW4gZW5jb2RpbmcNCitvZiBJU08gMTA2NDY8L2VtPiwgZWQuIFAuIEhvZmZtYW4sIEYuIFllcmdlYXUuIDIwMDAuICAoU2VlIDxhIGhyZWY9Imh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzI3ODEudHh0Ij5odHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyNzgxLnR4dDwvYT4uKTwvZGQ+DQorPGR0IGNsYXNzPSJsYWJlbCI+PGEgbmFtZT0iSVNPNjM5Ij48L2E+SVNPIDYzOTwvZHQ+DQorPGRkPiAoSW50ZXJuYXRpb25hbCBPcmdhbml6YXRpb24gZm9yIFN0YW5kYXJkaXphdGlvbikuIDxjaXRlPklTTyA2Mzk6MTk4OA0KKyhFKS4gQ29kZSBmb3IgdGhlIHJlcHJlc2VudGF0aW9uIG9mIG5hbWVzIG9mIGxhbmd1YWdlcy48L2NpdGU+IFtHZW5ldmFdOiBJbnRlcm5hdGlvbmFsDQorT3JnYW5pemF0aW9uIGZvciBTdGFuZGFyZGl6YXRpb24sIDE5ODguPC9kZD4NCis8ZHQgY2xhc3M9ImxhYmVsIj48YSBuYW1lPSJJU08zMTY2Ij48L2E+SVNPIDMxNjY8L2R0Pg0KKzxkZD4gKEludGVybmF0aW9uYWwgT3JnYW5pemF0aW9uIGZvciBTdGFuZGFyZGl6YXRpb24pLiA8Y2l0ZT5JU08gMzE2Ni0xOjE5OTcNCisoRSkuIENvZGVzIGZvciB0aGUgcmVwcmVzZW50YXRpb24gb2YgbmFtZXMgb2YgY291bnRyaWVzIGFuZCB0aGVpciBzdWJkaXZpc2lvbnMNCistLSBQYXJ0IDE6IENvdW50cnkgY29kZXM8L2NpdGU+IFtHZW5ldmFdOiBJbnRlcm5hdGlvbmFsIE9yZ2FuaXphdGlvbiBmb3IgU3RhbmRhcmRpemF0aW9uLA0KKzE5OTcuPC9kZD4NCis8ZHQgY2xhc3M9ImxhYmVsIj48YSBuYW1lPSJJU084ODc5Ij48L2E+SVNPIDg4Nzk8L2R0Pg0KKzxkZD5JU08gKEludGVybmF0aW9uYWwgT3JnYW5pemF0aW9uIGZvciBTdGFuZGFyZGl6YXRpb24pLiA8Y2l0ZT5JU08gODg3OToxOTg2KEUpLg0KK0luZm9ybWF0aW9uIHByb2Nlc3NpbmcgLS0gVGV4dCBhbmQgT2ZmaWNlIFN5c3RlbXMgLS0gU3RhbmRhcmQgR2VuZXJhbGl6ZWQNCitNYXJrdXAgTGFuZ3VhZ2UgKFNHTUwpLjwvY2l0ZT4gRmlyc3QgZWRpdGlvbiAtLSAxOTg2LTEwLTE1LiBbR2VuZXZhXTogSW50ZXJuYXRpb25hbA0KK09yZ2FuaXphdGlvbiBmb3IgU3RhbmRhcmRpemF0aW9uLCAxOTg2LiA8L2RkPg0KKzxkdCBjbGFzcz0ibGFiZWwiPjxhIG5hbWU9IklTTzEwNzQ0Ij48L2E+SVNPL0lFQyAxMDc0NDwvZHQ+DQorPGRkPklTTyAoSW50ZXJuYXRpb25hbCBPcmdhbml6YXRpb24gZm9yIFN0YW5kYXJkaXphdGlvbikuIDxjaXRlPklTTy9JRUMgMTA3NDQtMTk5Mg0KKyhFKS4gSW5mb3JtYXRpb24gdGVjaG5vbG9neSAtLSBIeXBlcm1lZGlhL1RpbWUtYmFzZWQgU3RydWN0dXJpbmcgTGFuZ3VhZ2UNCisoSHlUaW1lKS4gPC9jaXRlPiBbR2VuZXZhXTogSW50ZXJuYXRpb25hbCBPcmdhbml6YXRpb24gZm9yIFN0YW5kYXJkaXphdGlvbiwNCisxOTkyLiA8ZW0+RXh0ZW5kZWQgRmFjaWxpdGllcyBBbm5leGUuPC9lbT4gW0dlbmV2YV06IEludGVybmF0aW9uYWwgT3JnYW5pemF0aW9uDQorZm9yIFN0YW5kYXJkaXphdGlvbiwgMTk5Ni4gPC9kZD4NCis8ZHQgY2xhc3M9ImxhYmVsIj48YSBuYW1lPSJ3ZWJzZ21sIj48L2E+V0VCU0dNTDwvZHQ+DQorPGRkPklTTyAoSW50ZXJuYXRpb25hbCBPcmdhbml6YXRpb24gZm9yIFN0YW5kYXJkaXphdGlvbikuIDxjaXRlPklTTyA4ODc5OjE5ODYNCitUQzIuIEluZm9ybWF0aW9uIHRlY2hub2xvZ3kgLS0gRG9jdW1lbnQgRGVzY3JpcHRpb24gYW5kIFByb2Nlc3NpbmcgTGFuZ3VhZ2VzLiA8L2NpdGU+DQorW0dlbmV2YV06IEludGVybmF0aW9uYWwgT3JnYW5pemF0aW9uIGZvciBTdGFuZGFyZGl6YXRpb24sIDE5OTguICAoU2VlIDxhIGhyZWY9Imh0dHA6Ly93d3cuc2dtbHNvdXJjZS5jb20vODg3OXJldi9uMDAyOS5odG0iPmh0dHA6Ly93d3cuc2dtbHNvdXJjZS5jb20vODg3OXJldi9uMDAyOS5odG08L2ENCis+Lik8L2RkPg0KKzxkdCBjbGFzcz0ibGFiZWwiPjxhIG5hbWU9InhtbC1uYW1lcyI+PC9hPlhNTCBOYW1lczwvZHQ+DQorPGRkPlRpbSBCcmF5LCBEYXZlIEhvbGxhbmRlciwgYW5kIEFuZHJldyBMYXltYW4sIGVkaXRvcnMuIDxjaXRlPk5hbWVzcGFjZXMNCitpbiBYTUw8L2NpdGU+LiBUZXh0dWFsaXR5LCBIZXdsZXR0LVBhY2thcmQsIGFuZCBNaWNyb3NvZnQuIFdvcmxkIFdpZGUgV2ViDQorQ29uc29ydGl1bSwgMTk5OS4gIChTZWUgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLXhtbC1uYW1lcy8iPmh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwtbmFtZXMvPC9hPi4pPC9kZD4NCis8L2RsPjwvZGl2PiA8L2Rpdj4gPGRpdiBjbGFzcz0iZGl2MSI+IDxoMj48YSBuYW1lPSJDaGFyQ2xhc3NlcyI+PC9hPkIgQ2hhcmFjdGVyDQorQ2xhc3NlczwvaDI+IDxwPkZvbGxvd2luZyB0aGUgY2hhcmFjdGVyaXN0aWNzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgc3RhbmRhcmQsDQorY2hhcmFjdGVycyBhcmUgY2xhc3NlZCBhcyBiYXNlIGNoYXJhY3RlcnMgKGFtb25nIG90aGVycywgdGhlc2UgY29udGFpbiB0aGUNCithbHBoYWJldGljIGNoYXJhY3RlcnMgb2YgdGhlIExhdGluIGFscGhhYmV0KSwgaWRlb2dyYXBoaWMgY2hhcmFjdGVycywgYW5kDQorY29tYmluaW5nIGNoYXJhY3RlcnMgKGFtb25nIG90aGVycywgdGhpcyBjbGFzcyBjb250YWlucyBtb3N0IGRpYWNyaXRpY3MpIERpZ2l0cw0KK2FuZCBleHRlbmRlcnMgYXJlIGFsc28gZGlzdGluZ3Vpc2hlZC48L3A+IDxoNT5DaGFyYWN0ZXJzPC9oNT48dGFibGUgY2xhc3M9InNjcmFwIj4NCis8dGJvZHk+DQorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPg0KKzx0ZD48YSBuYW1lPSJOVC1MZXR0ZXIiPjwvYT5bODRdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+TGV0dGVyPC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPjxhIGhyZWY9IiNOVC1CYXNlQ2hhciI+QmFzZUNoYXI8L2E+IHwgPGEgaHJlZj0iI05ULUlkZW9ncmFwaGljIj5JZGVvZ3JhcGhpYzwvYT48L2NvZGU+PC90ZD4NCis8L3RyPg0KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4NCis8dGQ+PGEgbmFtZT0iTlQtQmFzZUNoYXIiPjwvYT5bODVdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+QmFzZUNoYXI8L2NvZGU+PC90ZD4NCis8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+WyN4MDA0MS0jeDAwNUFdIHwmbmJzcDtbI3gwMDYxLSN4MDA3QV0gfCZuYnNwO1sjeDAwQzAtI3gwMEQ2XSB8Jm5ic3A7WyN4MDBEOC0jeDAwRjZdDQorfCZuYnNwO1sjeDAwRjgtI3gwMEZGXSB8Jm5ic3A7WyN4MDEwMC0jeDAxMzFdIHwmbmJzcDtbI3gwMTM0LSN4MDEzRV0gfCZuYnNwO1sjeDAxNDEtI3gwMTQ4XQ0KK3wmbmJzcDtbI3gwMTRBLSN4MDE3RV0gfCZuYnNwO1sjeDAxODAtI3gwMUMzXSB8Jm5ic3A7WyN4MDFDRC0jeDAxRjBdIHwmbmJzcDtbI3gwMUY0LSN4MDFGNV0NCit8Jm5ic3A7WyN4MDFGQS0jeDAyMTddIHwmbmJzcDtbI3gwMjUwLSN4MDJBOF0gfCZuYnNwO1sjeDAyQkItI3gwMkMxXSB8Jm5ic3A7I3gwMzg2DQorfCZuYnNwO1sjeDAzODgtI3gwMzhBXSB8Jm5ic3A7I3gwMzhDIHwmbmJzcDtbI3gwMzhFLSN4MDNBMV0gfCZuYnNwO1sjeDAzQTMtI3gwM0NFXQ0KK3wmbmJzcDtbI3gwM0QwLSN4MDNENl0gfCZuYnNwOyN4MDNEQSB8Jm5ic3A7I3gwM0RDIHwmbmJzcDsjeDAzREUgfCZuYnNwOyN4MDNFMA0KK3wmbmJzcDtbI3gwM0UyLSN4MDNGM10gfCZuYnNwO1sjeDA0MDEtI3gwNDBDXSB8Jm5ic3A7WyN4MDQwRS0jeDA0NEZdIHwmbmJzcDtbI3gwNDUxLSN4MDQ1Q10NCit8Jm5ic3A7WyN4MDQ1RS0jeDA0ODFdIHwmbmJzcDtbI3gwNDkwLSN4MDRDNF0gfCZuYnNwO1sjeDA0QzctI3gwNEM4XSB8Jm5ic3A7WyN4MDRDQi0jeDA0Q0NdDQorfCZuYnNwO1sjeDA0RDAtI3gwNEVCXSB8Jm5ic3A7WyN4MDRFRS0jeDA0RjVdIHwmbmJzcDtbI3gwNEY4LSN4MDRGOV0gfCZuYnNwO1sjeDA1MzEtI3gwNTU2XQ0KK3wmbmJzcDsjeDA1NTkgfCZuYnNwO1sjeDA1NjEtI3gwNTg2XSB8Jm5ic3A7WyN4MDVEMC0jeDA1RUFdIHwmbmJzcDtbI3gwNUYwLSN4MDVGMl0NCit8Jm5ic3A7WyN4MDYyMS0jeDA2M0FdIHwmbmJzcDtbI3gwNjQxLSN4MDY0QV0gfCZuYnNwO1sjeDA2NzEtI3gwNkI3XSB8Jm5ic3A7WyN4MDZCQS0jeDA2QkVdDQorfCZuYnNwO1sjeDA2QzAtI3gwNkNFXSB8Jm5ic3A7WyN4MDZEMC0jeDA2RDNdIHwmbmJzcDsjeDA2RDUgfCZuYnNwO1sjeDA2RTUtI3gwNkU2XQ0KK3wmbmJzcDtbI3gwOTA1LSN4MDkzOV0gfCZuYnNwOyN4MDkzRCB8Jm5ic3A7WyN4MDk1OC0jeDA5NjFdIHwmbmJzcDtbI3gwOTg1LSN4MDk4Q10NCit8Jm5ic3A7WyN4MDk4Ri0jeDA5OTBdIHwmbmJzcDtbI3gwOTkzLSN4MDlBOF0gfCZuYnNwO1sjeDA5QUEtI3gwOUIwXSB8Jm5ic3A7I3gwOUIyDQorfCZuYnNwO1sjeDA5QjYtI3gwOUI5XSB8Jm5ic3A7WyN4MDlEQy0jeDA5RERdIHwmbmJzcDtbI3gwOURGLSN4MDlFMV0gfCZuYnNwO1sjeDA5RjAtI3gwOUYxXQ0KK3wmbmJzcDtbI3gwQTA1LSN4MEEwQV0gfCZuYnNwO1sjeDBBMEYtI3gwQTEwXSB8Jm5ic3A7WyN4MEExMy0jeDBBMjhdIHwmbmJzcDtbI3gwQTJBLSN4MEEzMF0NCit8Jm5ic3A7WyN4MEEzMi0jeDBBMzNdIHwmbmJzcDtbI3gwQTM1LSN4MEEzNl0gfCZuYnNwO1sjeDBBMzgtI3gwQTM5XSB8Jm5ic3A7WyN4MEE1OS0jeDBBNUNdDQorfCZuYnNwOyN4MEE1RSB8Jm5ic3A7WyN4MEE3Mi0jeDBBNzRdIHwmbmJzcDtbI3gwQTg1LSN4MEE4Ql0gfCZuYnNwOyN4MEE4RA0KK3wmbmJzcDtbI3gwQThGLSN4MEE5MV0gfCZuYnNwO1sjeDBBOTMtI3gwQUE4XSB8Jm5ic3A7WyN4MEFBQS0jeDBBQjBdIHwmbmJzcDtbI3gwQUIyLSN4MEFCM10NCit8Jm5ic3A7WyN4MEFCNS0jeDBBQjldIHwmbmJzcDsjeDBBQkQgfCZuYnNwOyN4MEFFMCB8Jm5ic3A7WyN4MEIwNS0jeDBCMENdDQorfCZuYnNwO1sjeDBCMEYtI3gwQjEwXSB8Jm5ic3A7WyN4MEIxMy0jeDBCMjhdIHwmbmJzcDtbI3gwQjJBLSN4MEIzMF0gfCZuYnNwO1sjeDBCMzItI3gwQjMzXQ0KK3wmbmJzcDtbI3gwQjM2LSN4MEIzOV0gfCZuYnNwOyN4MEIzRCB8Jm5ic3A7WyN4MEI1Qy0jeDBCNURdIHwmbmJzcDtbI3gwQjVGLSN4MEI2MV0NCit8Jm5ic3A7WyN4MEI4NS0jeDBCOEFdIHwmbmJzcDtbI3gwQjhFLSN4MEI5MF0gfCZuYnNwO1sjeDBCOTItI3gwQjk1XSB8Jm5ic3A7WyN4MEI5OS0jeDBCOUFdDQorfCZuYnNwOyN4MEI5QyB8Jm5ic3A7WyN4MEI5RS0jeDBCOUZdIHwmbmJzcDtbI3gwQkEzLSN4MEJBNF0gfCZuYnNwO1sjeDBCQTgtI3gwQkFBXQ0KK3wmbmJzcDtbI3gwQkFFLSN4MEJCNV0gfCZuYnNwO1sjeDBCQjctI3gwQkI5XSB8Jm5ic3A7WyN4MEMwNS0jeDBDMENdIHwmbmJzcDtbI3gwQzBFLSN4MEMxMF0NCit8Jm5ic3A7WyN4MEMxMi0jeDBDMjhdIHwmbmJzcDtbI3gwQzJBLSN4MEMzM10gfCZuYnNwO1sjeDBDMzUtI3gwQzM5XSB8Jm5ic3A7WyN4MEM2MC0jeDBDNjFdDQorfCZuYnNwO1sjeDBDODUtI3gwQzhDXSB8Jm5ic3A7WyN4MEM4RS0jeDBDOTBdIHwmbmJzcDtbI3gwQzkyLSN4MENBOF0gfCZuYnNwO1sjeDBDQUEtI3gwQ0IzXQ0KK3wmbmJzcDtbI3gwQ0I1LSN4MENCOV0gfCZuYnNwOyN4MENERSB8Jm5ic3A7WyN4MENFMC0jeDBDRTFdIHwmbmJzcDtbI3gwRDA1LSN4MEQwQ10NCit8Jm5ic3A7WyN4MEQwRS0jeDBEMTBdIHwmbmJzcDtbI3gwRDEyLSN4MEQyOF0gfCZuYnNwO1sjeDBEMkEtI3gwRDM5XSB8Jm5ic3A7WyN4MEQ2MC0jeDBENjFdDQorfCZuYnNwO1sjeDBFMDEtI3gwRTJFXSB8Jm5ic3A7I3gwRTMwIHwmbmJzcDtbI3gwRTMyLSN4MEUzM10gfCZuYnNwO1sjeDBFNDAtI3gwRTQ1XQ0KK3wmbmJzcDtbI3gwRTgxLSN4MEU4Ml0gfCZuYnNwOyN4MEU4NCB8Jm5ic3A7WyN4MEU4Ny0jeDBFODhdIHwmbmJzcDsjeDBFOEENCit8Jm5ic3A7I3gwRThEIHwmbmJzcDtbI3gwRTk0LSN4MEU5N10gfCZuYnNwO1sjeDBFOTktI3gwRTlGXSB8Jm5ic3A7WyN4MEVBMS0jeDBFQTNdDQorfCZuYnNwOyN4MEVBNSB8Jm5ic3A7I3gwRUE3IHwmbmJzcDtbI3gwRUFBLSN4MEVBQl0gfCZuYnNwO1sjeDBFQUQtI3gwRUFFXQ0KK3wmbmJzcDsjeDBFQjAgfCZuYnNwO1sjeDBFQjItI3gwRUIzXSB8Jm5ic3A7I3gwRUJEIHwmbmJzcDtbI3gwRUMwLSN4MEVDNF0NCit8Jm5ic3A7WyN4MEY0MC0jeDBGNDddIHwmbmJzcDtbI3gwRjQ5LSN4MEY2OV0gfCZuYnNwO1sjeDEwQTAtI3gxMEM1XSB8Jm5ic3A7WyN4MTBEMC0jeDEwRjZdDQorfCZuYnNwOyN4MTEwMCB8Jm5ic3A7WyN4MTEwMi0jeDExMDNdIHwmbmJzcDtbI3gxMTA1LSN4MTEwN10gfCZuYnNwOyN4MTEwOQ0KK3wmbmJzcDtbI3gxMTBCLSN4MTEwQ10gfCZuYnNwO1sjeDExMEUtI3gxMTEyXSB8Jm5ic3A7I3gxMTNDIHwmbmJzcDsjeDExM0UNCit8Jm5ic3A7I3gxMTQwIHwmbmJzcDsjeDExNEMgfCZuYnNwOyN4MTE0RSB8Jm5ic3A7I3gxMTUwIHwmbmJzcDtbI3gxMTU0LSN4MTE1NV0NCit8Jm5ic3A7I3gxMTU5IHwmbmJzcDtbI3gxMTVGLSN4MTE2MV0gfCZuYnNwOyN4MTE2MyB8Jm5ic3A7I3gxMTY1IHwmbmJzcDsjeDExNjcNCit8Jm5ic3A7I3gxMTY5IHwmbmJzcDtbI3gxMTZELSN4MTE2RV0gfCZuYnNwO1sjeDExNzItI3gxMTczXSB8Jm5ic3A7I3gxMTc1DQorfCZuYnNwOyN4MTE5RSB8Jm5ic3A7I3gxMUE4IHwmbmJzcDsjeDExQUIgfCZuYnNwO1sjeDExQUUtI3gxMUFGXSB8Jm5ic3A7WyN4MTFCNy0jeDExQjhdDQorfCZuYnNwOyN4MTFCQSB8Jm5ic3A7WyN4MTFCQy0jeDExQzJdIHwmbmJzcDsjeDExRUIgfCZuYnNwOyN4MTFGMCB8Jm5ic3A7I3gxMUY5DQorfCZuYnNwO1sjeDFFMDAtI3gxRTlCXSB8Jm5ic3A7WyN4MUVBMC0jeDFFRjldIHwmbmJzcDtbI3gxRjAwLSN4MUYxNV0gfCZuYnNwO1sjeDFGMTgtI3gxRjFEXQ0KK3wmbmJzcDtbI3gxRjIwLSN4MUY0NV0gfCZuYnNwO1sjeDFGNDgtI3gxRjREXSB8Jm5ic3A7WyN4MUY1MC0jeDFGNTddIHwmbmJzcDsjeDFGNTkNCit8Jm5ic3A7I3gxRjVCIHwmbmJzcDsjeDFGNUQgfCZuYnNwO1sjeDFGNUYtI3gxRjdEXSB8Jm5ic3A7WyN4MUY4MC0jeDFGQjRdDQorfCZuYnNwO1sjeDFGQjYtI3gxRkJDXSB8Jm5ic3A7I3gxRkJFIHwmbmJzcDtbI3gxRkMyLSN4MUZDNF0gfCZuYnNwO1sjeDFGQzYtI3gxRkNDXQ0KK3wmbmJzcDtbI3gxRkQwLSN4MUZEM10gfCZuYnNwO1sjeDFGRDYtI3gxRkRCXSB8Jm5ic3A7WyN4MUZFMC0jeDFGRUNdIHwmbmJzcDtbI3gxRkYyLSN4MUZGNF0NCit8Jm5ic3A7WyN4MUZGNi0jeDFGRkNdIHwmbmJzcDsjeDIxMjYgfCZuYnNwO1sjeDIxMkEtI3gyMTJCXSB8Jm5ic3A7I3gyMTJFDQorfCZuYnNwO1sjeDIxODAtI3gyMTgyXSB8Jm5ic3A7WyN4MzA0MS0jeDMwOTRdIHwmbmJzcDtbI3gzMEExLSN4MzBGQV0gfCZuYnNwO1sjeDMxMDUtI3gzMTJDXQ0KK3wmbmJzcDtbI3hBQzAwLSN4RDdBM10gPC9jb2RlPjwvdGQ+DQorPC90cj4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULUlkZW9ncmFwaGljIj48L2E+Wzg2XSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPklkZW9ncmFwaGljPC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPlsjeDRFMDAtI3g5RkE1XSB8Jm5ic3A7I3gzMDA3IHwmbmJzcDtbI3gzMDIxLSN4MzAyOV0gPC9jb2RlPjwvdGQ+DQorPC90cj4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULUNvbWJpbmluZ0NoYXIiPjwvYT5bODddJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4NCis8dGQ+PGNvZGU+Q29tYmluaW5nQ2hhcjwvY29kZT48L3RkPg0KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPg0KKzx0ZD48Y29kZT5bI3gwMzAwLSN4MDM0NV0gfCZuYnNwO1sjeDAzNjAtI3gwMzYxXSB8Jm5ic3A7WyN4MDQ4My0jeDA0ODZdIHwmbmJzcDtbI3gwNTkxLSN4MDVBMV0NCit8Jm5ic3A7WyN4MDVBMy0jeDA1QjldIHwmbmJzcDtbI3gwNUJCLSN4MDVCRF0gfCZuYnNwOyN4MDVCRiB8Jm5ic3A7WyN4MDVDMS0jeDA1QzJdDQorfCZuYnNwOyN4MDVDNCB8Jm5ic3A7WyN4MDY0Qi0jeDA2NTJdIHwmbmJzcDsjeDA2NzAgfCZuYnNwO1sjeDA2RDYtI3gwNkRDXQ0KK3wmbmJzcDtbI3gwNkRELSN4MDZERl0gfCZuYnNwO1sjeDA2RTAtI3gwNkU0XSB8Jm5ic3A7WyN4MDZFNy0jeDA2RThdIHwmbmJzcDtbI3gwNkVBLSN4MDZFRF0NCit8Jm5ic3A7WyN4MDkwMS0jeDA5MDNdIHwmbmJzcDsjeDA5M0MgfCZuYnNwO1sjeDA5M0UtI3gwOTRDXSB8Jm5ic3A7I3gwOTREDQorfCZuYnNwO1sjeDA5NTEtI3gwOTU0XSB8Jm5ic3A7WyN4MDk2Mi0jeDA5NjNdIHwmbmJzcDtbI3gwOTgxLSN4MDk4M10gfCZuYnNwOyN4MDlCQw0KK3wmbmJzcDsjeDA5QkUgfCZuYnNwOyN4MDlCRiB8Jm5ic3A7WyN4MDlDMC0jeDA5QzRdIHwmbmJzcDtbI3gwOUM3LSN4MDlDOF0NCit8Jm5ic3A7WyN4MDlDQi0jeDA5Q0RdIHwmbmJzcDsjeDA5RDcgfCZuYnNwO1sjeDA5RTItI3gwOUUzXSB8Jm5ic3A7I3gwQTAyDQorfCZuYnNwOyN4MEEzQyB8Jm5ic3A7I3gwQTNFIHwmbmJzcDsjeDBBM0YgfCZuYnNwO1sjeDBBNDAtI3gwQTQyXSB8Jm5ic3A7WyN4MEE0Ny0jeDBBNDhdDQorfCZuYnNwO1sjeDBBNEItI3gwQTREXSB8Jm5ic3A7WyN4MEE3MC0jeDBBNzFdIHwmbmJzcDtbI3gwQTgxLSN4MEE4M10gfCZuYnNwOyN4MEFCQw0KK3wmbmJzcDtbI3gwQUJFLSN4MEFDNV0gfCZuYnNwO1sjeDBBQzctI3gwQUM5XSB8Jm5ic3A7WyN4MEFDQi0jeDBBQ0RdIHwmbmJzcDtbI3gwQjAxLSN4MEIwM10NCit8Jm5ic3A7I3gwQjNDIHwmbmJzcDtbI3gwQjNFLSN4MEI0M10gfCZuYnNwO1sjeDBCNDctI3gwQjQ4XSB8Jm5ic3A7WyN4MEI0Qi0jeDBCNERdDQorfCZuYnNwO1sjeDBCNTYtI3gwQjU3XSB8Jm5ic3A7WyN4MEI4Mi0jeDBCODNdIHwmbmJzcDtbI3gwQkJFLSN4MEJDMl0gfCZuYnNwO1sjeDBCQzYtI3gwQkM4XQ0KK3wmbmJzcDtbI3gwQkNBLSN4MEJDRF0gfCZuYnNwOyN4MEJENyB8Jm5ic3A7WyN4MEMwMS0jeDBDMDNdIHwmbmJzcDtbI3gwQzNFLSN4MEM0NF0NCit8Jm5ic3A7WyN4MEM0Ni0jeDBDNDhdIHwmbmJzcDtbI3gwQzRBLSN4MEM0RF0gfCZuYnNwO1sjeDBDNTUtI3gwQzU2XSB8Jm5ic3A7WyN4MEM4Mi0jeDBDODNdDQorfCZuYnNwO1sjeDBDQkUtI3gwQ0M0XSB8Jm5ic3A7WyN4MENDNi0jeDBDQzhdIHwmbmJzcDtbI3gwQ0NBLSN4MENDRF0gfCZuYnNwO1sjeDBDRDUtI3gwQ0Q2XQ0KK3wmbmJzcDtbI3gwRDAyLSN4MEQwM10gfCZuYnNwO1sjeDBEM0UtI3gwRDQzXSB8Jm5ic3A7WyN4MEQ0Ni0jeDBENDhdIHwmbmJzcDtbI3gwRDRBLSN4MEQ0RF0NCit8Jm5ic3A7I3gwRDU3IHwmbmJzcDsjeDBFMzEgfCZuYnNwO1sjeDBFMzQtI3gwRTNBXSB8Jm5ic3A7WyN4MEU0Ny0jeDBFNEVdDQorfCZuYnNwOyN4MEVCMSB8Jm5ic3A7WyN4MEVCNC0jeDBFQjldIHwmbmJzcDtbI3gwRUJCLSN4MEVCQ10gfCZuYnNwO1sjeDBFQzgtI3gwRUNEXQ0KK3wmbmJzcDtbI3gwRjE4LSN4MEYxOV0gfCZuYnNwOyN4MEYzNSB8Jm5ic3A7I3gwRjM3IHwmbmJzcDsjeDBGMzkgfCZuYnNwOyN4MEYzRQ0KK3wmbmJzcDsjeDBGM0YgfCZuYnNwO1sjeDBGNzEtI3gwRjg0XSB8Jm5ic3A7WyN4MEY4Ni0jeDBGOEJdIHwmbmJzcDtbI3gwRjkwLSN4MEY5NV0NCit8Jm5ic3A7I3gwRjk3IHwmbmJzcDtbI3gwRjk5LSN4MEZBRF0gfCZuYnNwO1sjeDBGQjEtI3gwRkI3XSB8Jm5ic3A7I3gwRkI5DQorfCZuYnNwO1sjeDIwRDAtI3gyMERDXSB8Jm5ic3A7I3gyMEUxIHwmbmJzcDtbI3gzMDJBLSN4MzAyRl0gfCZuYnNwOyN4MzA5OQ0KK3wmbmJzcDsjeDMwOUEgPC9jb2RlPjwvdGQ+DQorPC90cj4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULURpZ2l0Ij48L2E+Wzg4XSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPkRpZ2l0PC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPlsjeDAwMzAtI3gwMDM5XSB8Jm5ic3A7WyN4MDY2MC0jeDA2NjldIHwmbmJzcDtbI3gwNkYwLSN4MDZGOV0gfCZuYnNwO1sjeDA5NjYtI3gwOTZGXQ0KK3wmbmJzcDtbI3gwOUU2LSN4MDlFRl0gfCZuYnNwO1sjeDBBNjYtI3gwQTZGXSB8Jm5ic3A7WyN4MEFFNi0jeDBBRUZdIHwmbmJzcDtbI3gwQjY2LSN4MEI2Rl0NCit8Jm5ic3A7WyN4MEJFNy0jeDBCRUZdIHwmbmJzcDtbI3gwQzY2LSN4MEM2Rl0gfCZuYnNwO1sjeDBDRTYtI3gwQ0VGXSB8Jm5ic3A7WyN4MEQ2Ni0jeDBENkZdDQorfCZuYnNwO1sjeDBFNTAtI3gwRTU5XSB8Jm5ic3A7WyN4MEVEMC0jeDBFRDldIHwmbmJzcDtbI3gwRjIwLSN4MEYyOV0gPC9jb2RlPjwvdGQ+DQorPC90cj4NCis8dHIgdmFsaWduPSJiYXNlbGluZSI+DQorPHRkPjxhIG5hbWU9Ik5ULUV4dGVuZGVyIj48L2E+Wzg5XSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPkV4dGVuZGVyPC9jb2RlPjwvdGQ+DQorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+DQorPHRkPjxjb2RlPiN4MDBCNyB8Jm5ic3A7I3gwMkQwIHwmbmJzcDsjeDAyRDEgfCZuYnNwOyN4MDM4NyB8Jm5ic3A7I3gwNjQwIHwmbmJzcDsjeDBFNDYNCit8Jm5ic3A7I3gwRUM2IHwmbmJzcDsjeDMwMDUgfCZuYnNwO1sjeDMwMzEtI3gzMDM1XSB8Jm5ic3A7WyN4MzA5RC0jeDMwOUVdDQorfCZuYnNwO1sjeDMwRkMtI3gzMEZFXSA8L2NvZGU+PC90ZD4NCis8L3RyPg0KKzwvdGJvZHk+PC90YWJsZT4gPHA+VGhlIGNoYXJhY3RlciBjbGFzc2VzIGRlZmluZWQgaGVyZSBjYW4gYmUgZGVyaXZlZCBmcm9tDQordGhlIFVuaWNvZGUgMi4wIGNoYXJhY3RlciBkYXRhYmFzZSBhcyBmb2xsb3dzOjwvcD4gPHVsPg0KKzxsaT48cD5OYW1lIHN0YXJ0IGNoYXJhY3RlcnMgbXVzdCBoYXZlIG9uZSBvZiB0aGUgY2F0ZWdvcmllcyBMbCwgTHUsIExvLCBMdCwNCitObC48L3A+PC9saT4NCis8bGk+PHA+TmFtZSBjaGFyYWN0ZXJzIG90aGVyIHRoYW4gTmFtZS1zdGFydCBjaGFyYWN0ZXJzIG11c3QgaGF2ZSBvbmUgb2YgdGhlDQorY2F0ZWdvcmllcyBNYywgTWUsIE1uLCBMbSwgb3IgTmQuPC9wPjwvbGk+DQorPGxpPjxwPkNoYXJhY3RlcnMgaW4gdGhlIGNvbXBhdGliaWxpdHkgYXJlYSAoaS5lLiB3aXRoIGNoYXJhY3RlciBjb2RlIGdyZWF0ZXINCit0aGFuICN4RjkwMCBhbmQgbGVzcyB0aGFuICN4RkZGRSkgYXJlIG5vdCBhbGxvd2VkIGluIFhNTCBuYW1lcy48L3A+PC9saT4NCis8bGk+PHA+Q2hhcmFjdGVycyB3aGljaCBoYXZlIGEgZm9udCBvciBjb21wYXRpYmlsaXR5IGRlY29tcG9zaXRpb24gKGkuZS4gdGhvc2UNCit3aXRoIGEgImNvbXBhdGliaWxpdHkgZm9ybWF0dGluZyB0YWciIGluIGZpZWxkIDUgb2YgdGhlIGRhdGFiYXNlIC0tIG1hcmtlZA0KK2J5IGZpZWxkIDUgYmVnaW5uaW5nIHdpdGggYSAiJmx0OyIpIGFyZSBub3QgYWxsb3dlZC48L3A+PC9saT4NCis8bGk+PHA+VGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzIGFyZSB0cmVhdGVkIGFzIG5hbWUtc3RhcnQgY2hhcmFjdGVycyByYXRoZXINCit0aGFuIG5hbWUgY2hhcmFjdGVycywgYmVjYXVzZSB0aGUgcHJvcGVydHkgZmlsZSBjbGFzc2lmaWVzIHRoZW0gYXMgQWxwaGFiZXRpYzoNCitbI3gwMkJCLSN4MDJDMV0sICN4MDU1OSwgI3gwNkU1LCAjeDA2RTYuPC9wPjwvbGk+DQorPGxpPjxwPkNoYXJhY3RlcnMgI3gyMERELSN4MjBFMCBhcmUgZXhjbHVkZWQgKGluIGFjY29yZGFuY2Ugd2l0aCBVbmljb2RlIDIuMCwNCitzZWN0aW9uIDUuMTQpLjwvcD48L2xpPg0KKzxsaT48cD5DaGFyYWN0ZXIgI3gwMEI3IGlzIGNsYXNzaWZpZWQgYXMgYW4gZXh0ZW5kZXIsIGJlY2F1c2UgdGhlIHByb3BlcnR5DQorbGlzdCBzbyBpZGVudGlmaWVzIGl0LjwvcD48L2xpPg0KKzxsaT48cD5DaGFyYWN0ZXIgI3gwMzg3IGlzIGFkZGVkIGFzIGEgbmFtZSBjaGFyYWN0ZXIsIGJlY2F1c2UgI3gwMEI3IGlzIGl0cw0KK2Nhbm9uaWNhbCBlcXVpdmFsZW50LjwvcD48L2xpPg0KKzxsaT48cD5DaGFyYWN0ZXJzICc6JyBhbmQgJ18nIGFyZSBhbGxvd2VkIGFzIG5hbWUtc3RhcnQgY2hhcmFjdGVycy48L3A+IDwvbGk+DQorPGxpPjxwPkNoYXJhY3RlcnMgJy0nIGFuZCAnLicgYXJlIGFsbG93ZWQgYXMgbmFtZSBjaGFyYWN0ZXJzLjwvcD48L2xpPg0KKzwvdWw+IDwvZGl2PiA8ZGl2IGNsYXNzPSJkaXYxIj4gPGgyPjxhIG5hbWU9InNlYy14bWwtYW5kLXNnbWwiPjwvYT5DIFhNTCBhbmQNCitTR01MIChOb24tTm9ybWF0aXZlKTwvaDI+IDxwPlhNTCBpcyBkZXNpZ25lZCB0byBiZSBhIHN1YnNldCBvZiBTR01MLCBpbiB0aGF0DQorZXZlcnkgWE1MIGRvY3VtZW50IHNob3VsZCBhbHNvIGJlIGEgY29uZm9ybWluZyBTR01MIGRvY3VtZW50LiBGb3IgYSBkZXRhaWxlZA0KK2NvbXBhcmlzb24gb2YgdGhlIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIHRoYXQgWE1MIHBsYWNlcyBvbiBkb2N1bWVudHMgYmV5b25kDQordGhvc2Ugb2YgU0dNTCwgc2VlIDxhIGhyZWY9IiNDbGFyayI+W0NsYXJrXTwvYT4uPC9wPiA8L2Rpdj4gPGRpdiBjbGFzcz0iZGl2MSI+IDxoMj48YQ0KK25hbWU9InNlYy1lbnRleHBhbmQiPjwvYT5EIEV4cGFuc2lvbiBvZiBFbnRpdHkgYW5kIENoYXJhY3RlciBSZWZlcmVuY2VzIChOb24tTm9ybWF0aXZlKTwvaDI+IDxwPlRoaXMNCithcHBlbmRpeCBjb250YWlucyBzb21lIGV4YW1wbGVzIGlsbHVzdHJhdGluZyB0aGUgc2VxdWVuY2Ugb2YgZW50aXR5LSBhbmQgY2hhcmFjdGVyLXJlZmVyZW5jZQ0KK3JlY29nbml0aW9uIGFuZCBleHBhbnNpb24sIGFzIHNwZWNpZmllZCBpbiA8YSBocmVmPSIjZW50cHJvYyI+PGI+NC40IFhNTCBQcm9jZXNzb3INCitUcmVhdG1lbnQgb2YgRW50aXRpZXMgYW5kIFJlZmVyZW5jZXM8L2I+PC9hPi48L3A+IDxwPklmIHRoZSBEVEQgY29udGFpbnMgdGhlDQorZGVjbGFyYXRpb248L3A+IDx0YWJsZSBjbGFzcz0iZWciIHdpZHRoPSIxMDAlIiBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSI1Ig0KK2JnY29sb3I9IiM5OWZmZmYiPg0KKzx0cj4NCis8dGQ+PHByZT4mbHQ7IUVOVElUWSBleGFtcGxlICImbHQ7cD5BbiBhbXBlcnNhbmQgKCZhbXA7IzM4OyMzODspIG1heSBiZSBlc2NhcGVkDQorbnVtZXJpY2FsbHkgKCZhbXA7IzM4OyMzODsjMzg7KSBvciB3aXRoIGEgZ2VuZXJhbCBlbnRpdHkNCisoJmFtcDthbXA7YW1wOykuJmx0Oy9wPiIgPjwvcHJlPjwvdGQ+DQorPC90cj4NCis8L3RhYmxlPiA8cD50aGVuIHRoZSBYTUwgcHJvY2Vzc29yIHdpbGwgcmVjb2duaXplIHRoZSBjaGFyYWN0ZXIgcmVmZXJlbmNlcw0KK3doZW4gaXQgcGFyc2VzIHRoZSBlbnRpdHkgZGVjbGFyYXRpb24sIGFuZCByZXNvbHZlIHRoZW0gYmVmb3JlIHN0b3JpbmcgdGhlDQorZm9sbG93aW5nIHN0cmluZyBhcyB0aGUgdmFsdWUgb2YgdGhlIGVudGl0eSAiPGNvZGU+ZXhhbXBsZTwvY29kZT4iOjwvcD4gPHRhYmxlDQorY2xhc3M9ImVnIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIxIiBjZWxscGFkZGluZz0iNSIgYmdjb2xvcj0iIzk5ZmZmZiI+DQorPHRyPg0KKzx0ZD48cHJlPiZsdDtwPkFuIGFtcGVyc2FuZCAoJmFtcDsjMzg7KSBtYXkgYmUgZXNjYXBlZA0KK251bWVyaWNhbGx5ICgmYW1wOyMzODsjMzg7KSBvciB3aXRoIGEgZ2VuZXJhbCBlbnRpdHkNCisoJmFtcDthbXA7YW1wOykuJmx0Oy9wPjwvcHJlPjwvdGQ+DQorPC90cj4NCis8L3RhYmxlPiA8cD5BIHJlZmVyZW5jZSBpbiB0aGUgZG9jdW1lbnQgdG8gIjxjb2RlPiZhbXA7ZXhhbXBsZTs8L2NvZGU+IiB3aWxsDQorY2F1c2UgdGhlIHRleHQgdG8gYmUgcmVwYXJzZWQsIGF0IHdoaWNoIHRpbWUgdGhlIHN0YXJ0LSBhbmQgZW5kLXRhZ3Mgb2YgdGhlIDxjb2RlPnA8L2NvZGU+DQorZWxlbWVudCB3aWxsIGJlIHJlY29nbml6ZWQgYW5kIHRoZSB0aHJlZSByZWZlcmVuY2VzIHdpbGwgYmUgcmVjb2duaXplZCBhbmQNCitleHBhbmRlZCwgcmVzdWx0aW5nIGluIGEgPGNvZGU+cDwvY29kZT4gZWxlbWVudCB3aXRoIHRoZSBmb2xsb3dpbmcgY29udGVudA0KKyhhbGwgZGF0YSwgbm8gZGVsaW1pdGVycyBvciBtYXJrdXApOjwvcD4gPHRhYmxlIGNsYXNzPSJlZyIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMSINCitjZWxscGFkZGluZz0iNSIgYmdjb2xvcj0iIzk5ZmZmZiI+DQorPHRyPg0KKzx0ZD48cHJlPkFuIGFtcGVyc2FuZCAoJmFtcDspIG1heSBiZSBlc2NhcGVkDQorbnVtZXJpY2FsbHkgKCZhbXA7IzM4Oykgb3Igd2l0aCBhIGdlbmVyYWwgZW50aXR5DQorKCZhbXA7YW1wOykuPC9wcmU+PC90ZD4NCis8L3RyPg0KKzwvdGFibGU+IDxwPkEgbW9yZSBjb21wbGV4IGV4YW1wbGUgd2lsbCBpbGx1c3RyYXRlIHRoZSBydWxlcyBhbmQgdGhlaXIgZWZmZWN0cw0KK2Z1bGx5LiBJbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIHRoZSBsaW5lIG51bWJlcnMgYXJlIHNvbGVseSBmb3IgcmVmZXJlbmNlLjwvcD4gPHRhYmxlDQorY2xhc3M9ImVnIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIxIiBjZWxscGFkZGluZz0iNSIgYmdjb2xvcj0iIzk5ZmZmZiI+DQorPHRyPg0KKzx0ZD48cHJlPjEgJmx0Oz94bWwgdmVyc2lvbj0nMS4wJz8+DQorMiAmbHQ7IURPQ1RZUEUgdGVzdCBbDQorMyAmbHQ7IUVMRU1FTlQgdGVzdCAoI1BDREFUQSkgPg0KKzQgJmx0OyFFTlRJVFkgJSB4eCAnJmFtcDsjMzc7eno7Jz4NCis1ICZsdDshRU5USVRZICUgenogJyZhbXA7IzYwOyFFTlRJVFkgdHJpY2t5ICJlcnJvci1wcm9uZSIgPicgPg0KKzYgJXh4Ow0KKzcgXT4NCis4ICZsdDt0ZXN0PlRoaXMgc2FtcGxlIHNob3dzIGEgJmFtcDt0cmlja3k7IG1ldGhvZC4mbHQ7L3Rlc3Q+PC9wcmU+PC90ZD4NCis8L3RyPg0KKzwvdGFibGU+IDxwPlRoaXMgcHJvZHVjZXMgdGhlIGZvbGxvd2luZzo8L3A+IDx1bD4NCis8bGk+PHA+aW4gbGluZSA0LCB0aGUgcmVmZXJlbmNlIHRvIGNoYXJhY3RlciAzNyBpcyBleHBhbmRlZCBpbW1lZGlhdGVseSwgYW5kDQordGhlIHBhcmFtZXRlciBlbnRpdHkgIjxjb2RlPnh4PC9jb2RlPiIgaXMgc3RvcmVkIGluIHRoZSBzeW1ib2wgdGFibGUgd2l0aA0KK3RoZSB2YWx1ZSAiPGNvZGU+JXp6OzwvY29kZT4iLiBTaW5jZSB0aGUgcmVwbGFjZW1lbnQgdGV4dCBpcyBub3QgcmVzY2FubmVkLA0KK3RoZSByZWZlcmVuY2UgdG8gcGFyYW1ldGVyIGVudGl0eSAiPGNvZGU+eno8L2NvZGU+IiBpcyBub3QgcmVjb2duaXplZC4gKEFuZA0KK2l0IHdvdWxkIGJlIGFuIGVycm9yIGlmIGl0IHdlcmUsIHNpbmNlICI8Y29kZT56ejwvY29kZT4iIGlzIG5vdCB5ZXQgZGVjbGFyZWQuKTwvcD48L2xpPg0KKzxsaT48cD5pbiBsaW5lIDUsIHRoZSBjaGFyYWN0ZXIgcmVmZXJlbmNlICI8Y29kZT4mYW1wOyM2MDs8L2NvZGU+IiBpcyBleHBhbmRlZA0KK2ltbWVkaWF0ZWx5IGFuZCB0aGUgcGFyYW1ldGVyIGVudGl0eSAiPGNvZGU+eno8L2NvZGU+IiBpcyBzdG9yZWQgd2l0aCB0aGUNCityZXBsYWNlbWVudCB0ZXh0ICI8Y29kZT4mbHQ7IUVOVElUWSB0cmlja3kgImVycm9yLXByb25lIiA+PC9jb2RlPiIsIHdoaWNoDQoraXMgYSB3ZWxsLWZvcm1lZCBlbnRpdHkgZGVjbGFyYXRpb24uPC9wPjwvbGk+DQorPGxpPjxwPmluIGxpbmUgNiwgdGhlIHJlZmVyZW5jZSB0byAiPGNvZGU+eHg8L2NvZGU+IiBpcyByZWNvZ25pemVkLCBhbmQgdGhlDQorcmVwbGFjZW1lbnQgdGV4dCBvZiAiPGNvZGU+eHg8L2NvZGU+IiAobmFtZWx5ICI8Y29kZT4leno7PC9jb2RlPiIpIGlzIHBhcnNlZC4NCitUaGUgcmVmZXJlbmNlIHRvICI8Y29kZT56ejwvY29kZT4iIGlzIHJlY29nbml6ZWQgaW4gaXRzIHR1cm4sIGFuZCBpdHMgcmVwbGFjZW1lbnQNCit0ZXh0ICgiPGNvZGU+Jmx0OyFFTlRJVFkgdHJpY2t5ICJlcnJvci1wcm9uZSIgPjwvY29kZT4iKSBpcyBwYXJzZWQuIFRoZSBnZW5lcmFsDQorZW50aXR5ICI8Y29kZT50cmlja3k8L2NvZGU+IiBoYXMgbm93IGJlZW4gZGVjbGFyZWQsIHdpdGggdGhlIHJlcGxhY2VtZW50IHRleHQNCisiPGNvZGU+ZXJyb3ItcHJvbmU8L2NvZGU+Ii48L3A+IDwvbGk+DQorPGxpPjxwPmluIGxpbmUgOCwgdGhlIHJlZmVyZW5jZSB0byB0aGUgZ2VuZXJhbCBlbnRpdHkgIjxjb2RlPnRyaWNreTwvY29kZT4iDQoraXMgcmVjb2duaXplZCwgYW5kIGl0IGlzIGV4cGFuZGVkLCBzbyB0aGUgZnVsbCBjb250ZW50IG9mIHRoZSA8Y29kZT50ZXN0PC9jb2RlPg0KK2VsZW1lbnQgaXMgdGhlIHNlbGYtZGVzY3JpYmluZyAoYW5kIHVuZ3JhbW1hdGljYWwpIHN0cmluZyA8ZW0+VGhpcyBzYW1wbGUNCitzaG93cyBhIGVycm9yLXByb25lIG1ldGhvZC48L2VtPjwvcD48L2xpPg0KKzwvdWw+IDwvZGl2PiA8ZGl2IGNsYXNzPSJkaXYxIj4gPGgyPjxhIG5hbWU9ImRldGVybWluaXNtIj48L2E+RSBEZXRlcm1pbmlzdGljDQorQ29udGVudCBNb2RlbHMgKE5vbi1Ob3JtYXRpdmUpPC9oMj4gPHA+QXMgbm90ZWQgaW4gPGEgaHJlZj0iI3NlYy1lbGVtZW50LWNvbnRlbnQiPjxiPjMuMi4xDQorRWxlbWVudCBDb250ZW50PC9iPjwvYT4sIGl0IGlzIHJlcXVpcmVkIHRoYXQgY29udGVudCBtb2RlbHMgaW4gZWxlbWVudCB0eXBlDQorZGVjbGFyYXRpb25zIGJlIGRldGVybWluaXN0aWMuIFRoaXMgcmVxdWlyZW1lbnQgaXMgPGEgdGl0bGU9IkZvciBDb21wYXRpYmlsaXR5Ig0KK2hyZWY9IiNkdC1jb21wYXQiPmZvciBjb21wYXRpYmlsaXR5PC9hPiB3aXRoIFNHTUwgKHdoaWNoIGNhbGxzIGRldGVybWluaXN0aWMNCitjb250ZW50IG1vZGVscyAidW5hbWJpZ3VvdXMiKTsgWE1MIHByb2Nlc3NvcnMgYnVpbHQgdXNpbmcgU0dNTCBzeXN0ZW1zIG1heQ0KK2ZsYWcgbm9uLWRldGVybWluaXN0aWMgY29udGVudCBtb2RlbHMgYXMgZXJyb3JzLjwvcD4gPHA+Rm9yIGV4YW1wbGUsIHRoZSBjb250ZW50DQorbW9kZWwgPGNvZGU+KChiLCBjKSB8IChiLCBkKSk8L2NvZGU+IGlzIG5vbi1kZXRlcm1pbmlzdGljLCBiZWNhdXNlIGdpdmVuIGFuDQoraW5pdGlhbCA8Y29kZT5iPC9jb2RlPiB0aGUgWE1MIHByb2Nlc3NvciBjYW5ub3Qga25vdyB3aGljaCA8Y29kZT5iPC9jb2RlPg0KK2luIHRoZSBtb2RlbCBpcyBiZWluZyBtYXRjaGVkIHdpdGhvdXQgbG9va2luZyBhaGVhZCB0byBzZWUgd2hpY2ggZWxlbWVudCBmb2xsb3dzDQordGhlIDxjb2RlPmI8L2NvZGU+LiBJbiB0aGlzIGNhc2UsIHRoZSB0d28gcmVmZXJlbmNlcyB0byA8Y29kZT5iPC9jb2RlPiBjYW4NCitiZSBjb2xsYXBzZWQgaW50byBhIHNpbmdsZSByZWZlcmVuY2UsIG1ha2luZyB0aGUgbW9kZWwgcmVhZCA8Y29kZT4oYiwgKGMgfA0KK2QpKTwvY29kZT4uIEFuIGluaXRpYWwgPGNvZGU+YjwvY29kZT4gbm93IGNsZWFybHkgbWF0Y2hlcyBvbmx5IGEgc2luZ2xlIG5hbWUNCitpbiB0aGUgY29udGVudCBtb2RlbC4gVGhlIHByb2Nlc3NvciBkb2Vzbid0IG5lZWQgdG8gbG9vayBhaGVhZCB0byBzZWUgd2hhdA0KK2ZvbGxvd3M7IGVpdGhlciA8Y29kZT5jPC9jb2RlPiBvciA8Y29kZT5kPC9jb2RlPiB3b3VsZCBiZSBhY2NlcHRlZC48L3A+IDxwPk1vcmUNCitmb3JtYWxseTogYSBmaW5pdGUgc3RhdGUgYXV0b21hdG9uIG1heSBiZSBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBjb250ZW50IG1vZGVsDQordXNpbmcgdGhlIHN0YW5kYXJkIGFsZ29yaXRobXMsIGUuZy4gYWxnb3JpdGhtIDMuNSBpbiBzZWN0aW9uIDMuOSBvZiBBaG8sIFNldGhpLA0KK2FuZCBVbGxtYW4gPGEgaHJlZj0iI0FobyI+W0Foby9VbGxtYW5dPC9hPi4gSW4gbWFueSBzdWNoIGFsZ29yaXRobXMsIGEgZm9sbG93DQorc2V0IGlzIGNvbnN0cnVjdGVkIGZvciBlYWNoIHBvc2l0aW9uIGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gKGkuZS4sIGVhY2gNCitsZWFmIG5vZGUgaW4gdGhlIHN5bnRheCB0cmVlIGZvciB0aGUgcmVndWxhciBleHByZXNzaW9uKTsgaWYgYW55IHBvc2l0aW9uDQoraGFzIGEgZm9sbG93IHNldCBpbiB3aGljaCBtb3JlIHRoYW4gb25lIGZvbGxvd2luZyBwb3NpdGlvbiBpcyBsYWJlbGVkIHdpdGgNCit0aGUgc2FtZSBlbGVtZW50IHR5cGUgbmFtZSwgdGhlbiB0aGUgY29udGVudCBtb2RlbCBpcyBpbiBlcnJvciBhbmQgbWF5IGJlDQorcmVwb3J0ZWQgYXMgYW4gZXJyb3IuPC9wPiA8cD5BbGdvcml0aG1zIGV4aXN0IHdoaWNoIGFsbG93IG1hbnkgYnV0IG5vdCBhbGwNCitub24tZGV0ZXJtaW5pc3RpYyBjb250ZW50IG1vZGVscyB0byBiZSByZWR1Y2VkIGF1dG9tYXRpY2FsbHkgdG8gZXF1aXZhbGVudA0KK2RldGVybWluaXN0aWMgbW9kZWxzOyBzZWUgQnImdXVtbDtnZ2VtYW5uLUtsZWluIDE5OTEgPGEgaHJlZj0iI0FCSyI+W0JyJnV1bWw7Z2dlbWFubi1LbGVpbl08L2E+LjwvcD4gPC9kaXY+IDxkaXYNCitjbGFzcz0iZGl2MSI+IDxoMj48YSBuYW1lPSJzZWMtZ3Vlc3NpbmciPjwvYT5GIEF1dG9kZXRlY3Rpb24gb2YgQ2hhcmFjdGVyDQorRW5jb2RpbmdzIChOb24tTm9ybWF0aXZlKTwvaDI+IDxwPlRoZSBYTUwgZW5jb2RpbmcgZGVjbGFyYXRpb24gZnVuY3Rpb25zIGFzDQorYW4gaW50ZXJuYWwgbGFiZWwgb24gZWFjaCBlbnRpdHksIGluZGljYXRpbmcgd2hpY2ggY2hhcmFjdGVyIGVuY29kaW5nIGlzIGluDQordXNlLiBCZWZvcmUgYW4gWE1MIHByb2Nlc3NvciBjYW4gcmVhZCB0aGUgaW50ZXJuYWwgbGFiZWwsIGhvd2V2ZXIsIGl0IGFwcGFyZW50bHkNCitoYXMgdG8ga25vdyB3aGF0IGNoYXJhY3RlciBlbmNvZGluZyBpcyBpbiB1c2UtLXdoaWNoIGlzIHdoYXQgdGhlIGludGVybmFsDQorbGFiZWwgaXMgdHJ5aW5nIHRvIGluZGljYXRlLiBJbiB0aGUgZ2VuZXJhbCBjYXNlLCB0aGlzIGlzIGEgaG9wZWxlc3Mgc2l0dWF0aW9uLg0KK0l0IGlzIG5vdCBlbnRpcmVseSBob3BlbGVzcyBpbiBYTUwsIGhvd2V2ZXIsIGJlY2F1c2UgWE1MIGxpbWl0cyB0aGUgZ2VuZXJhbA0KK2Nhc2UgaW4gdHdvIHdheXM6IGVhY2ggaW1wbGVtZW50YXRpb24gaXMgYXNzdW1lZCB0byBzdXBwb3J0IG9ubHkgYSBmaW5pdGUNCitzZXQgb2YgY2hhcmFjdGVyIGVuY29kaW5ncywgYW5kIHRoZSBYTUwgZW5jb2RpbmcgZGVjbGFyYXRpb24gaXMgcmVzdHJpY3RlZA0KK2luIHBvc2l0aW9uIGFuZCBjb250ZW50IGluIG9yZGVyIHRvIG1ha2UgaXQgZmVhc2libGUgdG8gYXV0b2RldGVjdCB0aGUgY2hhcmFjdGVyDQorZW5jb2RpbmcgaW4gdXNlIGluIGVhY2ggZW50aXR5IGluIG5vcm1hbCBjYXNlcy4gQWxzbywgaW4gbWFueSBjYXNlcyBvdGhlcg0KK3NvdXJjZXMgb2YgaW5mb3JtYXRpb24gYXJlIGF2YWlsYWJsZSBpbiBhZGRpdGlvbiB0byB0aGUgWE1MIGRhdGEgc3RyZWFtIGl0c2VsZi4NCitUd28gY2FzZXMgbWF5IGJlIGRpc3Rpbmd1aXNoZWQsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBYTUwgZW50aXR5IGlzIHByZXNlbnRlZA0KK3RvIHRoZSBwcm9jZXNzb3Igd2l0aG91dCwgb3Igd2l0aCwgYW55IGFjY29tcGFueWluZyAoZXh0ZXJuYWwpIGluZm9ybWF0aW9uLg0KK1dlIGNvbnNpZGVyIHRoZSBmaXJzdCBjYXNlIGZpcnN0LjwvcD4gPGRpdiBjbGFzcz0iZGl2MiI+IDxoMz48YSBuYW1lPSJzZWMtZ3Vlc3Npbmctbm8tZXh0LWluZm8iPjwvYT5GLjENCitEZXRlY3Rpb24gV2l0aG91dCBFeHRlcm5hbCBFbmNvZGluZyBJbmZvcm1hdGlvbjwvaDM+IDxwPkJlY2F1c2UgZWFjaCBYTUwgZW50aXR5DQorbm90IGFjY29tcGFuaWVkIGJ5IGV4dGVybmFsIGVuY29kaW5nIGluZm9ybWF0aW9uIGFuZCBub3QgaW4gVVRGLTggb3IgVVRGLTE2DQorZW5jb2RpbmcgPGVtPm11c3Q8L2VtPiBiZWdpbiB3aXRoIGFuIFhNTCBlbmNvZGluZyBkZWNsYXJhdGlvbiwgaW4gd2hpY2ggdGhlDQorZmlyc3QgY2hhcmFjdGVycyBtdXN0IGJlICc8Y29kZT4mbHQ7P3htbDwvY29kZT4nLCBhbnkgY29uZm9ybWluZyBwcm9jZXNzb3INCitjYW4gZGV0ZWN0LCBhZnRlciB0d28gdG8gZm91ciBvY3RldHMgb2YgaW5wdXQsIHdoaWNoIG9mIHRoZSBmb2xsb3dpbmcgY2FzZXMNCithcHBseS4gSW4gcmVhZGluZyB0aGlzIGxpc3QsIGl0IG1heSBoZWxwIHRvIGtub3cgdGhhdCBpbiBVQ1MtNCwgJyZsdDsnIGlzDQorIjxjb2RlPiN4MDAwMDAwM0M8L2NvZGU+IiBhbmQgJz8nIGlzICI8Y29kZT4jeDAwMDAwMDNGPC9jb2RlPiIsIGFuZCB0aGUgQnl0ZQ0KK09yZGVyIE1hcmsgcmVxdWlyZWQgb2YgVVRGLTE2IGRhdGEgc3RyZWFtcyBpcyAiPGNvZGU+I3hGRUZGPC9jb2RlPiIuIFRoZSBub3RhdGlvbiA8dmFyPiMjPC92YXI+DQoraXMgdXNlZCB0byBkZW5vdGUgYW55IGJ5dGUgdmFsdWUgZXhjZXB0IHRoYXQgdHdvIGNvbnNlY3V0aXZlIDx2YXI+IyM8L3Zhcj5zDQorY2Fubm90IGJlIGJvdGggMDAuPC9wPiA8cD5XaXRoIGEgQnl0ZSBPcmRlciBNYXJrOjwvcD4gPHRhYmxlIGJvcmRlcj0iMSIgZnJhbWU9ImJvcmRlciI+DQorPHRib2R5Pg0KKzx0cj4NCis8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGNvZGU+MDAgMDAgRkUgRkY8L2NvZGU+PC90ZD4NCis8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+VUNTLTQsIGJpZy1lbmRpYW4gbWFjaGluZSAoMTIzNCBvcmRlcik8L3RkPg0KKzwvdHI+DQorPHRyPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48Y29kZT5GRiBGRSAwMCAwMDwvY29kZT48L3RkPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5VQ1MtNCwgbGl0dGxlLWVuZGlhbiBtYWNoaW5lICg0MzIxIG9yZGVyKTwvdGQ+DQorPC90cj4NCis8dHI+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxjb2RlPjAwIDAwIEZGIEZFPC9jb2RlPjwvdGQ+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlVDUy00LCB1bnVzdWFsIG9jdGV0IG9yZGVyICgyMTQzKTwvdGQ+DQorPC90cj4NCis8dHI+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxjb2RlPkZFIEZGIDAwIDAwPC9jb2RlPjwvdGQ+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlVDUy00LCB1bnVzdWFsIG9jdGV0IG9yZGVyICgzNDEyKTwvdGQ+DQorPC90cj4NCis8dHI+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxjb2RlPkZFIEZGICMjICMjPC9jb2RlPjwvdGQ+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlVURi0xNiwgYmlnLWVuZGlhbjwvdGQ+DQorPC90cj4NCis8dHI+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxjb2RlPkZGIEZFICMjICMjPC9jb2RlPjwvdGQ+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlVURi0xNiwgbGl0dGxlLWVuZGlhbjwvdGQ+DQorPC90cj4NCis8dHI+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxjb2RlPkVGIEJCIEJGPC9jb2RlPjwvdGQ+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlVURi04PC90ZD4NCis8L3RyPg0KKzwvdGJvZHk+PC90YWJsZT4gPHA+V2l0aG91dCBhIEJ5dGUgT3JkZXIgTWFyazo8L3A+IDx0YWJsZSBib3JkZXI9IjEiIGZyYW1lPSJib3JkZXIiPg0KKzx0Ym9keT4NCis8dHI+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxjb2RlPjAwJm5ic3A7MDAmbmJzcDswMCZuYnNwOzNDPC9jb2RlPjwvdGQ+DQorPHRkIHJvd3NwYW49IjQiIGNvbHNwYW49IjEiPlVDUy00IG9yIG90aGVyIGVuY29kaW5nIHdpdGggYSAzMi1iaXQgY29kZSB1bml0DQorYW5kIEFTQ0lJIGNoYXJhY3RlcnMgZW5jb2RlZCBhcyBBU0NJSSB2YWx1ZXMsIGluIHJlc3BlY3RpdmVseSBiaWctZW5kaWFuICgxMjM0KSwNCitsaXR0bGUtZW5kaWFuICg0MzIxKSBhbmQgdHdvIHVudXN1YWwgYnl0ZSBvcmRlcnMgKDIxNDMgYW5kIDM0MTIpLiBUaGUgZW5jb2RpbmcNCitkZWNsYXJhdGlvbiBtdXN0IGJlIHJlYWQgdG8gZGV0ZXJtaW5lIHdoaWNoIG9mIFVDUy00IG9yIG90aGVyIHN1cHBvcnRlZCAzMi1iaXQNCitlbmNvZGluZ3MgYXBwbGllcy48L3RkPg0KKzwvdHI+DQorPHRyPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48Y29kZT4zQyAwMCAwMCAwMDwvY29kZT48L3RkPg0KKzwvdHI+DQorPHRyPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48Y29kZT4wMCAwMCAzQyAwMDwvY29kZT48L3RkPg0KKzwvdHI+DQorPHRyPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48Y29kZT4wMCAzQyAwMCAwMDwvY29kZT48L3RkPg0KKzwvdHI+DQorPHRyPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48Y29kZT4wMCAzQyAwMCAzRjwvY29kZT48L3RkPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5VVEYtMTZCRSBvciBiaWctZW5kaWFuIElTTy0xMDY0Ni1VQ1MtMiBvciBvdGhlcg0KK2VuY29kaW5nIHdpdGggYSAxNi1iaXQgY29kZSB1bml0IGluIGJpZy1lbmRpYW4gb3JkZXIgYW5kIEFTQ0lJIGNoYXJhY3RlcnMNCitlbmNvZGVkIGFzIEFTQ0lJIHZhbHVlcyAodGhlIGVuY29kaW5nIGRlY2xhcmF0aW9uIG11c3QgYmUgcmVhZCB0byBkZXRlcm1pbmUNCit3aGljaCk8L3RkPg0KKzwvdHI+DQorPHRyPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48Y29kZT4zQyAwMCAzRiAwMDwvY29kZT48L3RkPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5VVEYtMTZMRSBvciBsaXR0bGUtZW5kaWFuIElTTy0xMDY0Ni1VQ1MtMiBvciBvdGhlcg0KK2VuY29kaW5nIHdpdGggYSAxNi1iaXQgY29kZSB1bml0IGluIGxpdHRsZS1lbmRpYW4gb3JkZXIgYW5kIEFTQ0lJIGNoYXJhY3RlcnMNCitlbmNvZGVkIGFzIEFTQ0lJIHZhbHVlcyAodGhlIGVuY29kaW5nIGRlY2xhcmF0aW9uIG11c3QgYmUgcmVhZCB0byBkZXRlcm1pbmUNCit3aGljaCk8L3RkPg0KKzwvdHI+DQorPHRyPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48Y29kZT4zQyAzRiA3OCA2RDwvY29kZT48L3RkPg0KKzx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5VVEYtOCwgSVNPIDY0NiwgQVNDSUksIHNvbWUgcGFydCBvZiBJU08gODg1OSwNCitTaGlmdC1KSVMsIEVVQywgb3IgYW55IG90aGVyIDctYml0LCA4LWJpdCwgb3IgbWl4ZWQtd2lkdGggZW5jb2Rpbmcgd2hpY2ggZW5zdXJlcw0KK3RoYXQgdGhlIGNoYXJhY3RlcnMgb2YgQVNDSUkgaGF2ZSB0aGVpciBub3JtYWwgcG9zaXRpb25zLCB3aWR0aCwgYW5kIHZhbHVlczsNCit0aGUgYWN0dWFsIGVuY29kaW5nIGRlY2xhcmF0aW9uIG11c3QgYmUgcmVhZCB0byBkZXRlY3Qgd2hpY2ggb2YgdGhlc2UgYXBwbGllcywNCitidXQgc2luY2UgYWxsIG9mIHRoZXNlIGVuY29kaW5ncyB1c2UgdGhlIHNhbWUgYml0IHBhdHRlcm5zIGZvciB0aGUgcmVsZXZhbnQNCitBU0NJSSBjaGFyYWN0ZXJzLCB0aGUgZW5jb2RpbmcgZGVjbGFyYXRpb24gaXRzZWxmIG1heSBiZSByZWFkIHJlbGlhYmx5PC90ZD4NCis8L3RyPg0KKzx0cj4NCis8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGNvZGU+NEMgNkYgQTcgOTQ8L2NvZGU+PC90ZD4NCis8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+RUJDRElDIChpbiBzb21lIGZsYXZvcjsgdGhlIGZ1bGwgZW5jb2RpbmcgZGVjbGFyYXRpb24NCittdXN0IGJlIHJlYWQgdG8gdGVsbCB3aGljaCBjb2RlIHBhZ2UgaXMgaW4gdXNlKTwvdGQ+DQorPC90cj4NCis8dHI+DQorPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPk90aGVyPC90ZD4NCis8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+VVRGLTggd2l0aG91dCBhbiBlbmNvZGluZyBkZWNsYXJhdGlvbiwgb3IgZWxzZQ0KK3RoZSBkYXRhIHN0cmVhbSBpcyBtaXNsYWJlbGVkIChsYWNraW5nIGEgcmVxdWlyZWQgZW5jb2RpbmcgZGVjbGFyYXRpb24pLCBjb3JydXB0LA0KK2ZyYWdtZW50YXJ5LCBvciBlbmNsb3NlZCBpbiBhIHdyYXBwZXIgb2Ygc29tZSBraW5kPC90ZD4NCis8L3RyPg0KKzwvdGJvZHk+PC90YWJsZT4gPGRpdiBjbGFzcz0ibm90ZSI+PHAgY2xhc3M9InByZWZpeCI+PGI+Tm90ZTo8L2I+PC9wPiA8cD5Jbg0KK2Nhc2VzIGFib3ZlIHdoaWNoIGRvIG5vdCByZXF1aXJlIHJlYWRpbmcgdGhlIGVuY29kaW5nIGRlY2xhcmF0aW9uIHRvIGRldGVybWluZQ0KK3RoZSBlbmNvZGluZywgc2VjdGlvbiA0LjMuMyBzdGlsbCByZXF1aXJlcyB0aGF0IHRoZSBlbmNvZGluZyBkZWNsYXJhdGlvbiwNCitpZiBwcmVzZW50LCBiZSByZWFkIGFuZCB0aGF0IHRoZSBlbmNvZGluZyBuYW1lIGJlIGNoZWNrZWQgdG8gbWF0Y2ggdGhlIGFjdHVhbA0KK2VuY29kaW5nIG9mIHRoZSBlbnRpdHkuIEFsc28sIGl0IGlzIHBvc3NpYmxlIHRoYXQgbmV3IGNoYXJhY3RlciBlbmNvZGluZ3MNCit3aWxsIGJlIGludmVudGVkIHRoYXQgd2lsbCBtYWtlIGl0IG5lY2Vzc2FyeSB0byB1c2UgdGhlIGVuY29kaW5nIGRlY2xhcmF0aW9uDQordG8gZGV0ZXJtaW5lIHRoZSBlbmNvZGluZywgaW4gY2FzZXMgd2hlcmUgdGhpcyBpcyBub3QgcmVxdWlyZWQgYXQgcHJlc2VudC48L3A+IDwvZGl2PiA8cD5UaGlzDQorbGV2ZWwgb2YgYXV0b2RldGVjdGlvbiBpcyBlbm91Z2ggdG8gcmVhZCB0aGUgWE1MIGVuY29kaW5nIGRlY2xhcmF0aW9uIGFuZA0KK3BhcnNlIHRoZSBjaGFyYWN0ZXItZW5jb2RpbmcgaWRlbnRpZmllciwgd2hpY2ggaXMgc3RpbGwgbmVjZXNzYXJ5IHRvIGRpc3Rpbmd1aXNoDQordGhlIGluZGl2aWR1YWwgbWVtYmVycyBvZiBlYWNoIGZhbWlseSBvZiBlbmNvZGluZ3MgKGUuZy4gdG8gdGVsbCBVVEYtOCBmcm9tDQorODg1OSwgYW5kIHRoZSBwYXJ0cyBvZiA4ODU5IGZyb20gZWFjaCBvdGhlciwgb3IgdG8gZGlzdGluZ3Vpc2ggdGhlIHNwZWNpZmljDQorRUJDRElDIGNvZGUgcGFnZSBpbiB1c2UsIGFuZCBzbyBvbikuPC9wPiA8cD5CZWNhdXNlIHRoZSBjb250ZW50cyBvZiB0aGUgZW5jb2RpbmcNCitkZWNsYXJhdGlvbiBhcmUgcmVzdHJpY3RlZCB0byBjaGFyYWN0ZXJzIGZyb20gdGhlIEFTQ0lJIHJlcGVydG9pcmUgKGhvd2V2ZXINCitlbmNvZGVkKSwgYSBwcm9jZXNzb3IgY2FuIHJlbGlhYmx5IHJlYWQgdGhlIGVudGlyZSBlbmNvZGluZyBkZWNsYXJhdGlvbiBhcw0KK3Nvb24gYXMgaXQgaGFzIGRldGVjdGVkIHdoaWNoIGZhbWlseSBvZiBlbmNvZGluZ3MgaXMgaW4gdXNlLiBTaW5jZSBpbiBwcmFjdGljZSwNCithbGwgd2lkZWx5IHVzZWQgY2hhcmFjdGVyIGVuY29kaW5ncyBmYWxsIGludG8gb25lIG9mIHRoZSBjYXRlZ29yaWVzIGFib3ZlLA0KK3RoZSBYTUwgZW5jb2RpbmcgZGVjbGFyYXRpb24gYWxsb3dzIHJlYXNvbmFibHkgcmVsaWFibGUgaW4tYmFuZCBsYWJlbGluZyBvZg0KK2NoYXJhY3RlciBlbmNvZGluZ3MsIGV2ZW4gd2hlbiBleHRlcm5hbCBzb3VyY2VzIG9mIGluZm9ybWF0aW9uIGF0IHRoZSBvcGVyYXRpbmctc3lzdGVtDQorb3IgdHJhbnNwb3J0LXByb3RvY29sIGxldmVsIGFyZSB1bnJlbGlhYmxlLiBDaGFyYWN0ZXIgZW5jb2RpbmdzIHN1Y2ggYXMgVVRGLTcNCit0aGF0IG1ha2Ugb3ZlcmxvYWRlZCB1c2FnZSBvZiBBU0NJSS12YWx1ZWQgYnl0ZXMgbWF5IGZhaWwgdG8gYmUgcmVsaWFibHkgZGV0ZWN0ZWQuPC9wPiA8cD5PbmNlDQordGhlIHByb2Nlc3NvciBoYXMgZGV0ZWN0ZWQgdGhlIGNoYXJhY3RlciBlbmNvZGluZyBpbiB1c2UsIGl0IGNhbiBhY3QgYXBwcm9wcmlhdGVseSwNCit3aGV0aGVyIGJ5IGludm9raW5nIGEgc2VwYXJhdGUgaW5wdXQgcm91dGluZSBmb3IgZWFjaCBjYXNlLCBvciBieSBjYWxsaW5nDQordGhlIHByb3BlciBjb252ZXJzaW9uIGZ1bmN0aW9uIG9uIGVhY2ggY2hhcmFjdGVyIG9mIGlucHV0LjwvcD4gPHA+TGlrZSBhbnkNCitzZWxmLWxhYmVsaW5nIHN5c3RlbSwgdGhlIFhNTCBlbmNvZGluZyBkZWNsYXJhdGlvbiB3aWxsIG5vdCB3b3JrIGlmIGFueSBzb2Z0d2FyZQ0KK2NoYW5nZXMgdGhlIGVudGl0eSdzIGNoYXJhY3RlciBzZXQgb3IgZW5jb2Rpbmcgd2l0aG91dCB1cGRhdGluZyB0aGUgZW5jb2RpbmcNCitkZWNsYXJhdGlvbi4gSW1wbGVtZW50b3JzIG9mIGNoYXJhY3Rlci1lbmNvZGluZyByb3V0aW5lcyBzaG91bGQgYmUgY2FyZWZ1bA0KK3RvIGVuc3VyZSB0aGUgYWNjdXJhY3kgb2YgdGhlIGludGVybmFsIGFuZCBleHRlcm5hbCBpbmZvcm1hdGlvbiB1c2VkIHRvIGxhYmVsDQordGhlIGVudGl0eS48L3A+IDwvZGl2PiA8ZGl2IGNsYXNzPSJkaXYyIj4gPGgzPjxhIG5hbWU9InNlYy1ndWVzc2luZy13aXRoLWV4dC1pbmZvIj48L2E+Ri4yDQorUHJpb3JpdGllcyBpbiB0aGUgUHJlc2VuY2Ugb2YgRXh0ZXJuYWwgRW5jb2RpbmcgSW5mb3JtYXRpb248L2gzPiA8cD5UaGUgc2Vjb25kDQorcG9zc2libGUgY2FzZSBvY2N1cnMgd2hlbiB0aGUgWE1MIGVudGl0eSBpcyBhY2NvbXBhbmllZCBieSBlbmNvZGluZyBpbmZvcm1hdGlvbiwNCithcyBpbiBzb21lIGZpbGUgc3lzdGVtcyBhbmQgc29tZSBuZXR3b3JrIHByb3RvY29scy4gV2hlbiBtdWx0aXBsZSBzb3VyY2VzDQorb2YgaW5mb3JtYXRpb24gYXJlIGF2YWlsYWJsZSwgdGhlaXIgcmVsYXRpdmUgcHJpb3JpdHkgYW5kIHRoZSBwcmVmZXJyZWQgbWV0aG9kDQorb2YgaGFuZGxpbmcgY29uZmxpY3Qgc2hvdWxkIGJlIHNwZWNpZmllZCBhcyBwYXJ0IG9mIHRoZSBoaWdoZXItbGV2ZWwgcHJvdG9jb2wNCit1c2VkIHRvIGRlbGl2ZXIgWE1MLiBJbiBwYXJ0aWN1bGFyLCBwbGVhc2UgcmVmZXIgdG8gPGEgaHJlZj0iI3JmYzIzNzYiPltJRVRGDQorUkZDIDIzNzZdPC9hPiBvciBpdHMgc3VjY2Vzc29yLCB3aGljaCBkZWZpbmVzIHRoZSA8Y29kZT50ZXh0L3htbDwvY29kZT4gYW5kIDxjb2RlPmFwcGxpY2F0aW9uL3htbDwvY29kZT4NCitNSU1FIHR5cGVzIGFuZCBwcm92aWRlcyBzb21lIHVzZWZ1bCBndWlkYW5jZS4gSW4gdGhlIGludGVyZXN0cyBvZiBpbnRlcm9wZXJhYmlsaXR5LA0KK2hvd2V2ZXIsIHRoZSBmb2xsb3dpbmcgcnVsZSBpcyByZWNvbW1lbmRlZC48L3A+IDx1bD4NCis8bGk+PHA+SWYgYW4gWE1MIGVudGl0eSBpcyBpbiBhIGZpbGUsIHRoZSBCeXRlLU9yZGVyIE1hcmsgYW5kIGVuY29kaW5nIGRlY2xhcmF0aW9uDQorYXJlIHVzZWQgKGlmIHByZXNlbnQpIHRvIGRldGVybWluZSB0aGUgY2hhcmFjdGVyIGVuY29kaW5nLjwvcD4gPC9saT4NCis8L3VsPiAgIDwvZGl2PiA8L2Rpdj4gPGRpdiBjbGFzcz0iZGl2MSI+IDxoMj48YSBuYW1lPSJzZWMteG1sLXdnIj48L2E+RyBXM0MNCitYTUwgV29ya2luZyBHcm91cCAoTm9uLU5vcm1hdGl2ZSk8L2gyPiA8cD5UaGlzIHNwZWNpZmljYXRpb24gd2FzIHByZXBhcmVkDQorYW5kIGFwcHJvdmVkIGZvciBwdWJsaWNhdGlvbiBieSB0aGUgVzNDIFhNTCBXb3JraW5nIEdyb3VwIChXRykuIFdHIGFwcHJvdmFsDQorb2YgdGhpcyBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IG5lY2Vzc2FyaWx5IGltcGx5IHRoYXQgYWxsIFdHIG1lbWJlcnMgdm90ZWQNCitmb3IgaXRzIGFwcHJvdmFsLiBUaGUgY3VycmVudCBhbmQgZm9ybWVyIG1lbWJlcnMgb2YgdGhlIFhNTCBXRyBhcmU6PC9wPiA8dWw+DQorPGxpPkpvbiBCb3NhaywgU3VuICg8aT5DaGFpcjwvaT4pICA8L2xpPg0KKzxsaT5KYW1lcyBDbGFyayAoPGk+VGVjaG5pY2FsIExlYWQ8L2k+KSA8L2xpPg0KKzxsaT5UaW0gQnJheSwgVGV4dHVhbGl0eSBhbmQgTmV0c2NhcGUgICg8aT5YTUwgQ28tZWRpdG9yPC9pPikgPC9saT4NCis8bGk+SmVhbiBQYW9saSwgTWljcm9zb2Z0ICg8aT5YTUwgQ28tZWRpdG9yPC9pPikgPC9saT4NCis8bGk+Qy4gTS4gU3BlcmJlcmctTWNRdWVlbiwgVS4gb2YgSWxsLiAgKDxpPlhNTCBDby1lZGl0b3I8L2k+KSA8L2xpPg0KKzxsaT5EYW4gQ29ubm9sbHksIFczQyAoPGk+VzNDIExpYWlzb248L2k+KSAgPC9saT4NCis8bGk+UGF1bGEgQW5nZXJzdGVpbiwgVGV4Y2VsPC9saT4NCis8bGk+U3RldmUgRGVSb3NlLCBJTlNPPC9saT4NCis8bGk+RGF2ZSBIb2xsYW5kZXIsIEhQPC9saT4NCis8bGk+RWxpb3QgS2ltYmVyLCBJU09HRU48L2xpPg0KKzxsaT5FdmUgTWFsZXIsIEFyYm9yVGV4dDwvbGk+DQorPGxpPlRvbSBNYWdsaWVyeSwgTkNTQTwvbGk+DQorPGxpPk11cnJheSBNYWxvbmV5LCBTb2Z0UXVhZCwgR3JpZiBTQSwgTXV6bW8gYW5kIFZlbyBTeXN0ZW1zPC9saT4NCis8bGk+TVVSQVRBIE1ha290byAoRkFNSUxZIEdpdmVuKSwgRnVqaSBYZXJveCBJbmZvcm1hdGlvbiBTeXN0ZW1zPC9saT4NCis8bGk+Sm9lbCBOYXZhLCBBZG9iZTwvbGk+DQorPGxpPkNvbmxldGggTydDb25uZWxsLCBWaWduZXR0ZSA8L2xpPg0KKzxsaT5QZXRlciBTaGFycGUsIFNvZnRRdWFkPC9saT4NCis8bGk+Sm9obiBUaWd1ZSwgRGF0YUNoYW5uZWw8L2xpPg0KKzwvdWw+IDwvZGl2PiA8ZGl2IGNsYXNzPSJkaXYxIj4gPGgyPjxhIG5hbWU9InNlYy1jb3JlLXdnIj48L2E+SCBXM0MgWE1MIENvcmUNCitHcm91cCAoTm9uLU5vcm1hdGl2ZSk8L2gyPiA8cD5UaGUgc2Vjb25kIGVkaXRpb24gb2YgdGhpcyBzcGVjaWZpY2F0aW9uIHdhcw0KK3ByZXBhcmVkIGJ5IHRoZSBXM0MgWE1MIENvcmUgV29ya2luZyBHcm91cCAoV0cpLiBUaGUgbWVtYmVycyBvZiB0aGUgV0cgYXQNCit0aGUgdGltZSBvZiBwdWJsaWNhdGlvbiBvZiB0aGlzIGVkaXRpb24gd2VyZTo8L3A+IDx1bD4NCis8bGk+UGF1bGEgQW5nZXJzdGVpbiwgVmlnbmV0dGU8L2xpPg0KKzxsaT5EYW5pZWwgQXVzdGluLCBBc2sgSmVldmVzPC9saT4NCis8bGk+VGltIEJvbGFuZDwvbGk+DQorPGxpPkFsbGVuIEJyb3duLCBNaWNyb3NvZnQ8L2xpPg0KKzxsaT5EYW4gQ29ubm9sbHksIFczQyAoPGk+U3RhZmYgQ29udGFjdDwvaT4pIDwvbGk+DQorPGxpPkpvaG4gQ293YW4sIFJldXRlcnMgTGltaXRlZCA8L2xpPg0KKzxsaT5Kb2huIEV2ZGVtb24sIFhNTFNvbHV0aW9ucyBDb3Jwb3JhdGlvbiA8L2xpPg0KKzxsaT5QYXVsIEdyb3NzbywgQXJib3J0ZXh0ICg8aT5Dby1DaGFpcjwvaT4pICA8L2xpPg0KKzxsaT5Bcm5hdWQgTGUgSG9ycywgSUJNICg8aT5Dby1DaGFpcjwvaT4pICA8L2xpPg0KKzxsaT5FdmUgTWFsZXIsIFN1biBNaWNyb3N5c3RlbXMgICg8aT5TZWNvbmQgRWRpdGlvbiBFZGl0b3I8L2k+KSA8L2xpPg0KKzxsaT5Kb25hdGhhbiBNYXJzaCwgTWljcm9zb2Z0PC9saT4NCis8bGk+TVVSQVRBIE1ha290byAoRkFNSUxZIEdpdmVuKSwgSUJNIDwvbGk+DQorPGxpPk1hcmsgTmVlZGxlbWFuLCBEYXRhIFJlc2VhcmNoIEFzc29jaWF0ZXMgPC9saT4NCis8bGk+RGF2aWQgT3JjaGFyZCwgSmFtY3JhY2tlcjwvbGk+DQorPGxpPkxldyBTaGFubm9uLCBOQ1I8L2xpPg0KKzxsaT5SaWNoYXJkIFRvYmluLCBVbml2ZXJzaXR5IG9mIEVkaW5idXJnaCA8L2xpPg0KKzxsaT5EYW5pZWwgVmVpbGxhcmQsIFczQzwvbGk+DQorPGxpPkRhbiBWaW50LCBMZXhpY2E8L2xpPg0KKzxsaT5Ob3JtYW4gV2Fsc2gsIFN1biBNaWNyb3N5c3RlbXMgPC9saT4NCis8bGk+RnJhbiZjY2VkaWw7b2lzIFllcmdlYXUsIEFsaXMgVGVjaG5vbG9naWVzICAoPGk+RXJyYXRhIExpc3QgRWRpdG9yPC9pPikgPC9saT4NCis8bGk+S29uZ3lpIFpob3UsIE9yYWNsZTwvbGk+DQorPC91bD4gPC9kaXY+IDxkaXYgY2xhc3M9ImRpdjEiPiA8aDI+PGEgbmFtZT0iYjRkMjUwYjZjMjEiPjwvYT5JIFByb2R1Y3Rpb24NCitOb3RlcyAoTm9uLU5vcm1hdGl2ZSk8L2gyPiA8cD5UaGlzIFNlY29uZCBFZGl0aW9uIHdhcyBlbmNvZGVkIGluIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC8wNi94bWxzcGVjLXYyMS5kdGQiPlhNTHNwZWMNCitEVEQ8L2E+ICh3aGljaCBoYXMgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvMDYveG1sc3BlYy1yZXBvcnQtdjIxLmh0bSI+ZG9jdW1lbnRhdGlvbjwvYT4NCithdmFpbGFibGUpLiBUaGUgSFRNTCB2ZXJzaW9ucyB3ZXJlIHByb2R1Y2VkIHdpdGggYSBjb21iaW5hdGlvbiBvZiB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvMDYveG1sc3BlYy54c2wiPnhtbHNwZWMueHNsPC9hPiwgPGENCitocmVmPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC8wNi9kaWZmc3BlYy54c2wiPmRpZmZzcGVjLnhzbDwvYT4sIGFuZCA8YQ0KK2hyZWY9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4LzA2L1JFQy14bWwtMmUueHNsIj5SRUMteG1sLTJlLnhzbDwvYT4gWFNMVA0KK3N0eWxlc2hlZXRzLiAgVGhlIFBERiB2ZXJzaW9uIHdhcyBwcm9kdWNlZCB3aXRoIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnRkYi51dS5zZS9+amFuL2h0bWwycHMuaHRtbCI+aHRtbDJwczwvYT4NCitmYWNpbGl0eSBhbmQgYSBkaXN0aWxsZXIgcHJvZ3JhbS48L3A+IDwvZGl2PiA8L2Rpdj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvVFIveG1sLXN0eWxlc2hlZXQuaHRtbCBiL2RhdGEvb3JnL3czYy93d3cvVFIveG1sLXN0eWxlc2hlZXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZThlMTE5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9UUi94bWwtc3R5bGVzaGVldC5odG1sCkBAIC0wLDAgKzEsMzQxIEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5Bc3NvY2lhdGluZyBTdHlsZSBTaGVldHMgd2l0aCBYTUwgZG9jdW1lbnRzPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1N0eWxlU2hlZXRzL1RSL1czQy1SRUMiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj5jb2RlIHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSB9PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBjbGFzcz0iaGVhZCI+Cis8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8iPjxpbWcgc3JjPSJodHRwOi8vd3d3LnczLm9yZy9JY29ucy9XV1cvdzNjX2hvbWUiIGFsdD0iVzNDIiBoZWlnaHQ9IjQ4IiB3aWR0aD0iNzIiPjwvYT4KKzxoMT5Bc3NvY2lhdGluZyBTdHlsZSBTaGVldHMgd2l0aCBYTUwgZG9jdW1lbnRzPGJyPlZlcnNpb24gMS4wPC9oMT4KKzxoMj5XM0MgUmVjb21tZW5kYXRpb24gMjkgSnVuZSAxOTk5PC9oMj4KKzxkbD4KKzxkdD5UaGlzIHZlcnNpb246PC9kdD4KKzxkZD4KKzxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDYvUkVDLXhtbC1zdHlsZXNoZWV0LTE5OTkwNjI5Ij5odHRwOi8vd3d3LnczLm9yZy8xOTk5LzA2L1JFQy14bWwtc3R5bGVzaGVldC0xOTk5MDYyOTwvYT4KKzxicj4KKzwvZGQ+Cis8ZHQ+TGF0ZXN0IHZlcnNpb246PC9kdD4KKzxkZD4KKzxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1zdHlsZXNoZWV0Ij5odHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldDwvYT4KKzxicj4KKzwvZGQ+Cis8ZHQ+UHJldmlvdXMgdmVyc2lvbjo8L2R0PgorPGRkPgorPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS94bWwtc3R5bGVzaGVldC0xOTk5MDQyOCI+aHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS94bWwtc3R5bGVzaGVldC0xOTk5MDQyODwvYT4KKzxicj4KKzwvZGQ+Cis8ZHQ+RWRpdG9yOjwvZHQ+Cis8ZGQ+CisKK0phbWVzIENsYXJrCis8YSBocmVmPSJtYWlsdG86ampjQGpjbGFyay5jb20iPiZsdDtqamNAamNsYXJrLmNvbSZndDs8L2E+Cis8YnI+Cis8L2RkPgorPC9kbD4KKzxwIGNsYXNzPSJjb3B5cmlnaHQiPgorPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC9pcHItbm90aWNlLmh0bWwjQ29weXJpZ2h0Ij4KKwkJQ29weXJpZ2h0PC9hPiAmbmJzcDsmY29weTsmbmJzcDsgMTk5OSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZyI+VzNDPC9hPgorCQkoPGEgaHJlZj0iaHR0cDovL3d3dy5sY3MubWl0LmVkdSI+TUlUPC9hPiwKKwkJPGEgaHJlZj0iaHR0cDovL3d3dy5pbnJpYS5mci8iPklOUklBPC9hPiwKKwkJPGEgaHJlZj0iaHR0cDovL3d3dy5rZWlvLmFjLmpwLyI+S2VpbzwvYT4gKSwgQWxsIFJpZ2h0cyBSZXNlcnZlZC4gVzNDCisJCTxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvaXByLW5vdGljZS5odG1sI0xlZ2FsIERpc2NsYWltZXIiPmxpYWJpbGl0eSw8L2E+PGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC9pcHItbm90aWNlLmh0bWwjVzNDIFRyYWRlbWFya3MiPnRyYWRlbWFyazwvYT4sCisJCTxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvY29weXJpZ2h0LWRvY3VtZW50cy5odG1sIj5kb2N1bWVudCB1c2UgPC9hPmFuZAorCQk8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsL2NvcHlyaWdodC1zb2Z0d2FyZS5odG1sIj5zb2Z0d2FyZSBsaWNlbnNpbmcgPC9hPnJ1bGVzIGFwcGx5LgorCTwvcD4KKzxociB0aXRsZT0iU2VwYXJhdG9yIGZvciBoZWFkZXIiPgorPC9kaXY+Cis8aDI+Cis8YSBuYW1lPSJhYnN0cmFjdCI+QWJzdHJhY3Q8L2E+Cis8L2gyPgorCis8cD5UaGlzIGRvY3VtZW50IGFsbG93cyBhIHN0eWxlIHNoZWV0IHRvIGJlIGFzc29jaWF0ZWQgd2l0aCBhbiBYTUwKK2RvY3VtZW50IGJ5IGluY2x1ZGluZyBvbmUgb3IgbW9yZSBwcm9jZXNzaW5nIGluc3RydWN0aW9ucyB3aXRoIGEKK3RhcmdldCBvZiA8Y29kZT54bWwtc3R5bGVzaGVldDwvY29kZT4gaW4gdGhlIGRvY3VtZW50J3MgcHJvbG9nLjwvcD4KKworPGgyPgorPGEgbmFtZT0ic3RhdHVzIj5TdGF0dXMgb2YgdGhpcyBkb2N1bWVudDwvYT4KKzwvaDI+CisKKzxwPlRoaXMgZG9jdW1lbnQgaGFzIGJlZW4gcmV2aWV3ZWQgYnkgVzNDIE1lbWJlcnMgYW5kIG90aGVyIGludGVyZXN0ZWQKK3BhcnRpZXMgYW5kIGhhcyBiZWVuIGVuZG9yc2VkIGJ5IHRoZSBEaXJlY3RvciBhcyBhIFczQyA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL1Byb2Nlc3MvI1JlY3NXM0MiPlJlY29tbWVuZGF0aW9uPC9hPi4gSXQKK2lzIGEgc3RhYmxlIGRvY3VtZW50IGFuZCBtYXkgYmUgdXNlZCBhcyByZWZlcmVuY2UgbWF0ZXJpYWwgb3IgY2l0ZWQgYXMKK2Egbm9ybWF0aXZlIHJlZmVyZW5jZSBmcm9tIG90aGVyIGRvY3VtZW50cy4gVzNDJ3Mgcm9sZSBpbiBtYWtpbmcgdGhlCitSZWNvbW1lbmRhdGlvbiBpcyB0byBkcmF3IGF0dGVudGlvbiB0byB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgdG8KK3Byb21vdGUgaXRzIHdpZGVzcHJlYWQgZGVwbG95bWVudC4gVGhpcyBlbmhhbmNlcyB0aGUgZnVuY3Rpb25hbGl0eSBhbmQKK2ludGVyb3BlcmFiaWxpdHkgb2YgdGhlIFdlYi48L3A+CisKKzxwPlRoZSBsaXN0IG9mIGtub3duIGVycm9ycyBpbiB0aGlzIHNwZWNpZmljYXRpb25zIGlzIGF2YWlsYWJsZSBhdAorPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wNi9SRUMteG1sLXN0eWxlc2hlZXQtMTk5OTA2MjkvZXJyYXRhIj5odHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L3htbC1zdHlsZXNoZWV0LTE5OTkwNjI5L2VycmF0YTwvYT4uPC9wPgorCis8cD5Db21tZW50cyBvbiB0aGlzIHNwZWNpZmljYXRpb24gbWF5IGJlIHNlbnQgdG8gJmx0OzxhIGhyZWY9Im1haWx0bzp3d3cteG1sLXN0eWxlc2hlZXQtY29tbWVudHNAdzMub3JnIj53d3cteG1sLXN0eWxlc2hlZXQtY29tbWVudHNAdzMub3JnPC9hPiZndDsuIFRoZSBhcmNoaXZlIG9mIHB1YmxpYworY29tbWVudHMgaXMgYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3cteG1sLXN0eWxlc2hlZXQtY29tbWVudHMiPmh0dHA6Ly93My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy14bWwtc3R5bGVzaGVldC1jb21tZW50czwvYT4uPC9wPgorCis8cD5BIGxpc3Qgb2YgY3VycmVudCBXM0MgUmVjb21tZW5kYXRpb25zIGFuZCBvdGhlciB0ZWNobmljYWwgZG9jdW1lbnRzCitjYW4gYmUgZm91bmQgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIiPmh0dHA6Ly93d3cudzMub3JnL1RSPC9hPi48L3A+CisKKzxwPlRoZSBXb3JraW5nIEdyb3VwIGV4cGVjdHMgYWRkaXRpb25hbCBtZWNoYW5pc21zIGZvciBsaW5raW5nIHN0eWxlCitzaGVldHMgdG8gWE1MIGRvY3VtZW50IHRvIGJlIGRlZmluZWQgaW4gYSBmdXR1cmUgc3BlY2lmaWNhdGlvbi48L3A+CisKKzxwPlRoZSB1c2Ugb2YgWE1MIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb25zIGluIHRoaXMgc3BlY2lmaWNhdGlvbiBzaG91bGQKK25vdCBiZSB0YWtlbiBhcyBhIHByZWNlZGVudC4gIFRoZSBXM0MgZG9lcyBub3QgYW50aWNpcGF0ZSByZWNvbW1lbmRpbmcKK3RoZSB1c2Ugb2YgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMgaW4gYW55IGZ1dHVyZSBzcGVjaWZpY2F0aW9uLiAgVGhlCis8YSBocmVmPSIjcmF0aW9uYWxlIj5SYXRpb25hbGU8L2E+IGV4cGxhaW5zIHdoeSB0aGV5IHdlcmUgdXNlZCBpbgordGhpcyBzcGVjaWZpY2F0aW9uLjwvcD4KKworPHA+VGhpcyBkb2N1bWVudCB3YXMgcHJvZHVjZWQgYXMgcGFydCBvZiB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvWE1ML0FjdGl2aXR5Ij5XM0MgWE1MIEFjdGl2aXR5PC9hPi48L3A+CisKKworPGgyPgorPGEgbmFtZT0iY29udGVudHMiPlRhYmxlIG9mIGNvbnRlbnRzPC9hPgorPC9oMj4xIDxhIGhyZWY9IiNUaGUgeG1sLXN0eWxlc2hlZXQgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiI+VGhlIHhtbC1zdHlsZXNoZWV0IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb248L2E+Cis8YnI+Cis8aDM+QXBwZW5kaWNlczwvaDM+QSA8YSBocmVmPSIjUmVmZXJlbmNlcyI+UmVmZXJlbmNlczwvYT4KKzxicj5CIDxhIGhyZWY9IiNyYXRpb25hbGUiPlJhdGlvbmFsZTwvYT4KKzxicj4KKzxocj4KKworPGgyPgorPGEgbmFtZT0iVGhlIHhtbC1zdHlsZXNoZWV0IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24iPjwvYT4xIFRoZSA8Y29kZT54bWwtc3R5bGVzaGVldDwvY29kZT4gcHJvY2Vzc2luZyBpbnN0cnVjdGlvbjwvaDI+CisKKzxwPlN0eWxlIFNoZWV0cyBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGFuIFhNTDxhIGhyZWY9IiNYTUwiPltYTUwxMF08L2E+Citkb2N1bWVudCBieSB1c2luZyBhIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gd2hvc2UgdGFyZ2V0IGlzCis8Y29kZT54bWwtc3R5bGVzaGVldDwvY29kZT4uICBUaGlzIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gZm9sbG93cyB0aGUKK2JlaGF2aW91ciBvZiB0aGUgSFRNTCA0LjAgPGNvZGU+Jmx0O0xJTksKK1JFTD0ic3R5bGVzaGVldCImZ3Q7PC9jb2RlPjxhIGhyZWY9IiNIVE1MIj5bSFRNTDQwXTwvYT4uPC9wPgorCis8cD5UaGUgPGNvZGU+eG1sLXN0eWxlc2hlZXQ8L2NvZGU+IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gaXMgcGFyc2VkIGluCit0aGUgc2FtZSB3YXkgYXMgYSBzdGFydC10YWcsIHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IGVudGl0aWVzIG90aGVyCit0aGFuIHByZWRlZmluZWQgZW50aXRpZXMgbXVzdCBub3QgYmUgcmVmZXJlbmNlZC48L3A+CisKKzxwPlRoZSBmb2xsb3dpbmcgZ3JhbW1hciBpcyBnaXZlbiB1c2luZyB0aGUgc2FtZSBub3RhdGlvbiBhcyB0aGUKK2dyYW1tYXIgaW4gdGhlIFhNTCBSZWNvbW1lbmRhdGlvbjxhIGhyZWY9IiNYTUwiPltYTUwxMF08L2E+LiAgU3ltYm9scyBpbiB0aGUKK2dyYW1tYXIgdGhhdCBhcmUgbm90IGRlZmluZWQgaGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgWE1MCitSZWNvbW1lbmRhdGlvbi48L3A+CisKKzxoNT54bWwtc3R5bGVzaGVldCBwcm9jZXNzaW5nIGluc3RydWN0aW9uPC9oNT4KKzx0YWJsZSBjbGFzcz0ic2NyYXAiPgorPHRib2R5PgorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPgorPHRkPgorPGEgbmFtZT0iTlQtU3R5bGVTaGVldFBJIj48L2E+WzFdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4KKzx0ZD5TdHlsZVNoZWV0UEk8L3RkPgorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+Cis8dGQ+JyZsdDs/eG1sLXN0eWxlc2hlZXQnICg8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sI05ULVMiPlM8L2E+IDxhIGhyZWY9IiNOVC1Qc2V1ZG9BdHQiPlBzZXVkb0F0dDwvYT4pKiA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sI05ULVMiPlM8L2E+PyAnPyZndDsnPC90ZD4KKzx0ZD4KKzwvdGQ+Cis8L3RyPgorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPgorPHRkPgorPGEgbmFtZT0iTlQtUHNldWRvQXR0Ij48L2E+WzJdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4KKzx0ZD5Qc2V1ZG9BdHQ8L3RkPgorPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+Cis8dGQ+Cis8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sI05ULU5hbWUiPk5hbWU8L2E+IDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwjTlQtUyI+UzwvYT4/ICc9JyA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sI05ULVMiPlM8L2E+PyA8YSBocmVmPSIjTlQtUHNldWRvQXR0VmFsdWUiPlBzZXVkb0F0dFZhbHVlPC9hPgorPC90ZD4KKzx0ZD4KKzwvdGQ+Cis8L3RyPgorPHRyIHZhbGlnbj0iYmFzZWxpbmUiPgorPHRkPgorPGEgbmFtZT0iTlQtUHNldWRvQXR0VmFsdWUiPjwvYT5bM10mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPgorPHRkPlBzZXVkb0F0dFZhbHVlPC90ZD4KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPgorPHRkPignIicgKFteIiZsdDsmYW1wO10gfCA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sI05ULUNoYXJSZWYiPkNoYXJSZWY8L2E+IHwgPGEgaHJlZj0iI05ULVByZWRlZkVudGl0eVJlZiI+UHJlZGVmRW50aXR5UmVmPC9hPikqICciJzwvdGQ+Cis8dGQ+Cis8L3RkPgorPC90cj4KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4KKzx0ZD4KKzwvdGQ+Cis8dGQ+Cis8L3RkPgorPHRkPgorPC90ZD4KKzx0ZD58ICInIiAoW14nJmx0OyZhbXA7XSB8IDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwjTlQtQ2hhclJlZiI+Q2hhclJlZjwvYT4gfCA8YSBocmVmPSIjTlQtUHJlZGVmRW50aXR5UmVmIj5QcmVkZWZFbnRpdHlSZWY8L2E+KSogIiciKTwvdGQ+Cis8dGQ+Cis8L3RkPgorPC90cj4KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4KKzx0ZD4KKzwvdGQ+Cis8dGQ+Cis8L3RkPgorPHRkPgorPC90ZD4KKzx0ZD4tICg8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sI05ULUNoYXIiPkNoYXI8L2E+KiAnPyZndDsnIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwjTlQtQ2hhciI+Q2hhcjwvYT4qKTwvdGQ+Cis8dGQ+Cis8L3RkPgorPC90cj4KKzx0ciB2YWxpZ249ImJhc2VsaW5lIj4KKzx0ZD4KKzxhIG5hbWU9Ik5ULVByZWRlZkVudGl0eVJlZiI+PC9hPls0XSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+Cis8dGQ+UHJlZGVmRW50aXR5UmVmPC90ZD4KKzx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPgorPHRkPicmYW1wO2FtcDsnIHwgJyZhbXA7bHQ7JyB8ICcmYW1wO2d0OycgfCAnJmFtcDtxdW90OycgfCAnJmFtcDthcG9zOyc8L3RkPgorPHRkPgorPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT4KKworPHA+SW4gPGEgaHJlZj0iI05ULVBzZXVkb0F0dFZhbHVlIj5Qc2V1ZG9BdHRWYWx1ZTwvYT4sIGEgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLXhtbCNOVC1DaGFyUmVmIj5DaGFyUmVmPC9hPiBvciBhIDxhIGhyZWY9IiNOVC1QcmVkZWZFbnRpdHlSZWYiPlByZWRlZkVudGl0eVJlZjwvYT4gaXMgaW50ZXJwcmV0ZWQgaW4gdGhlCitzYW1lIG1hbm5lciBhcyBpbiBhIG5vcm1hbCBYTUwgYXR0cmlidXRlIHZhbHVlLiAgVGhlIGFjdHVhbCB2YWx1ZSBvZgordGhlIHBzZXVkby1hdHRyaWJ1dGUgaXMgdGhlIHZhbHVlIGFmdGVyIGVhY2ggcmVmZXJlbmNlIGlzIHJlcGxhY2VkIGJ5Cit0aGUgY2hhcmFjdGVyIGl0IHJlZmVyZW5jZXMuICBUaGlzIHJlcGxhY2VtZW50IGlzIG5vdCBwZXJmb3JtZWQKK2F1dG9tYXRpY2FsbHkgYnkgYW4gWE1MIHByb2Nlc3Nvci48L3A+CisKKzxwPlRoZSA8Y29kZT54bWwtc3R5bGVzaGVldDwvY29kZT4gcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiBpcyBhbGxvd2VkCitvbmx5IGluIHRoZSBwcm9sb2cgb2YgYW4gWE1MIGRvY3VtZW50LiBUaGUgc3ludGF4IG9mIFhNTCBjb25zdHJhaW5zCit3aGVyZSBwcm9jZXNzaW5nIGluc3RydWN0aW9ucyBhcmUgYWxsb3dlZCBpbiB0aGUgcHJvbG9nOyB0aGUKKzxjb2RlPnhtbC1zdHlsZXNoZWV0PC9jb2RlPiBwcm9jZXNzaW5nIGluc3RydWN0aW9uIGlzIGFsbG93ZWQgYW55d2hlcmUKK2luIHRoZSBwcm9sb2cgdGhhdCBtZWV0cyB0aGVzZSBjb25zdHJhaW50cy48L3A+CisKKzxibG9ja3F1b3RlPgorPGI+Tk9URTogPC9iPklmIHRoZSA8Y29kZT54bWwtc3R5bGVzaGVldDwvY29kZT4gcHJvY2Vzc2luZyBpbnN0cnVjdGlvbgorb2NjdXJzIGluIHRoZSBleHRlcm5hbCBEVEQgc3Vic2V0IG9yIGluIGEgcGFyYW1ldGVyIGVudGl0eSwgaXQgaXMKK3Bvc3NpYmxlIHRoYXQgaXQgbWF5IG5vdCBiZSBwcm9jZXNzZWQgYnkgYSBub24tdmFsaWRhdGluZyBYTUwKK3Byb2Nlc3NvciAoc2VlIDxhIGhyZWY9IiNYTUwiPltYTUwxMF08L2E+KS48L2Jsb2NrcXVvdGU+CisKKzxwPlRoZSBmb2xsb3dpbmcgcHNldWRvIGF0dHJpYnV0ZXMgYXJlIGRlZmluZWQ8L3A+CisKKzxwcmU+aHJlZiBDREFUQSAjUkVRVUlSRUQKK3R5cGUgQ0RBVEEgI1JFUVVJUkVECit0aXRsZSBDREFUQSAjSU1QTElFRAorbWVkaWEgQ0RBVEEgI0lNUExJRUQKK2NoYXJzZXQgQ0RBVEEgI0lNUExJRUQKK2FsdGVybmF0ZSAoeWVzfG5vKSAibm8iPC9wcmU+CisKKzxwPlRoZSBzZW1hbnRpY3Mgb2YgdGhlIHBzZXVkby1hdHRyaWJ1dGVzIGFyZSBleGFjdGx5IGFzIHdpdGgKKzxjb2RlPiZsdDtMSU5LIFJFTD0ic3R5bGVzaGVldCImZ3Q7PC9jb2RlPiBpbiBIVE1MIDQuMCwgd2l0aCB0aGUKK2V4Y2VwdGlvbiBvZiB0aGUgPGNvZGU+YWx0ZXJuYXRlPC9jb2RlPiBwc2V1ZG8tYXR0cmlidXRlLiAgSWYKKzxjb2RlPmFsdGVybmF0ZT0ieWVzIjwvY29kZT4gaXMgc3BlY2lmaWVkLCB0aGVuIHRoZSBwcm9jZXNzaW5nCitpbnN0cnVjdGlvbiBoYXMgdGhlIHNlbWFudGljcyBvZiA8Y29kZT4mbHQ7TElOSyBSRUw9ImFsdGVybmF0ZQorc3R5bGVzaGVldCImZ3Q7PC9jb2RlPiBpbnN0ZWFkIG9mIDxjb2RlPiZsdDtMSU5LCitSRUw9InN0eWxlc2hlZXQiJmd0OzwvY29kZT4uPC9wPgorCis8YmxvY2txdW90ZT4KKzxiPk5PVEU6IDwvYj5TaW5jZSB0aGUgdmFsdWUgb2YgdGhlIDxjb2RlPmhyZWY8L2NvZGU+IGF0dHJpYnV0ZSBpcyBhIFVSSQorcmVmZXJlbmNlLCBpdCBtYXkgYmUgYSByZWxhdGl2ZSBVUkkgYW5kIGl0IG1heSBjb250YWluIGEgZnJhZ21lbnQKK2lkZW50aWZpZXIuIEluIHBhcnRpY3VsYXIgdGhlIFVSSSByZWZlcmVuY2UgbWF5IGNvbnRhaW4gb25seSBhCitmcmFnbWVudCBpZGVudGlmaWVyLiAgU3VjaCBhIFVSSSByZWZlcmVuY2UgaXMgYSByZWZlcmVuY2UgdG8gYSBwYXJ0IG9mCit0aGUgZG9jdW1lbnQgY29udGFpbmluZyB0aGUgPGNvZGU+eG1sLXN0eWxlc2hlZXQ8L2NvZGU+IHByb2Nlc3NpbmcKK2luc3RydWN0aW9uIChzZWUgPGEgaHJlZj0iI1JGQzIzOTYiPltSRkMyMzk2XTwvYT4pLiBUaGUgY29uc2VxdWVuY2UgaXMgdGhhdCB0aGUKKzxjb2RlPnhtbC1zdHlsZXNoZWV0PC9jb2RlPiBwcm9jZXNzaW5nIGluc3RydWN0aW9uIGFsbG93cyBzdHlsZSBzaGVldHMKK3RvIGJlIGVtYmVkZGVkIGluIHRoZSBzYW1lIGRvY3VtZW50IGFzIHRoZSA8Y29kZT54bWwtc3R5bGVzaGVldDwvY29kZT4KK3Byb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24uPC9ibG9ja3F1b3RlPgorCis8cD5JbiBzb21lIGNhc2VzLCBzdHlsZSBzaGVldHMgbWF5IGJlIGxpbmtlZCB3aXRoIGFuIFhNTCBkb2N1bWVudCBieQorbWVhbnMgZXh0ZXJuYWwgdG8gdGhlIGRvY3VtZW50LiBGb3IgZXhhbXBsZSwgZWFybGllciB2ZXJzaW9ucyBvZiBIVFRQCis8YSBocmVmPSIjUkZDMjA2OCI+W1JGQzIwNjhdPC9hPiAoc2VjdGlvbiAxOS42LjIuNCkgYWxsb3dlZCBzdHlsZSBzaGVldHMgdG8gYmUKK2Fzc29jaWF0ZWQgd2l0aCBYTUwgZG9jdW1lbnRzIGJ5IG1lYW5zIG9mIHRoZSA8Y29kZT5MaW5rPC9jb2RlPgoraGVhZGVyLiAgQW55IGxpbmtzIHRvIHN0eWxlIHNoZWV0cyB0aGF0IGFyZSBzcGVjaWZpZWQgZXh0ZXJuYWxseSB0byB0aGUKK2RvY3VtZW50IGFyZSBjb25zaWRlcmVkIHRvIG9jY3VyIGJlZm9yZSB0aGUgbGlua3Mgc3BlY2lmaWVkIGJ5IHRoZQorPGNvZGU+eG1sLXN0eWxlc2hlZXQ8L2NvZGU+IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb25zLiAgVGhpcyBpcyB0aGUgc2FtZQorYXMgaW4gSFRNTCA0LjAgKHNlZSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL3ByZXNlbnQvc3R5bGVzLmh0bWwjaC0xNC42Ij5zZWN0aW9uCisxNC42PC9hPikuPC9wPgorCis8cD5IZXJlIGFyZSBzb21lIGV4YW1wbGVzIGZyb20gSFRNTCA0LjAgd2l0aCB0aGUgY29ycmVzcG9uZGluZworcHJvY2Vzc2luZyBpbnN0cnVjdGlvbjo8L3A+CisKKzxwcmU+Jmx0O0xJTksgaHJlZj0ibXlzdHlsZS5jc3MiIHJlbD0ic3R5bGUgc2hlZXQiIHR5cGU9InRleHQvY3NzIiZndDsKKyZsdDs/eG1sLXN0eWxlc2hlZXQgaHJlZj0ibXlzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj8mZ3Q7CisKKyZsdDtMSU5LIGhyZWY9Im15c3R5bGUuY3NzIiB0aXRsZT0iQ29tcGFjdCIgcmVsPSJzdHlsZXNoZWV0IgordHlwZT0idGV4dC9jc3MiJmd0OworJmx0Oz94bWwtc3R5bGVzaGVldCBocmVmPSJteXN0eWxlLmNzcyIgdGl0bGU9IkNvbXBhY3QiIHR5cGU9InRleHQvY3NzIj8mZ3Q7CisKKyZsdDtMSU5LIGhyZWY9Im15c3R5bGUuY3NzIiB0aXRsZT0iTWVkaXVtIiByZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IgordHlwZT0idGV4dC9jc3MiJmd0OworJmx0Oz94bWwtc3R5bGVzaGVldCBhbHRlcm5hdGU9InllcyIgaHJlZj0ibXlzdHlsZS5jc3MiIHRpdGxlPSJNZWRpdW0iCit0eXBlPSJ0ZXh0L2NzcyI/Jmd0OzwvcHJlPgorCis8cD5NdWx0aXBsZSA8Y29kZT54bWwtc3R5bGVzaGVldDwvY29kZT4gcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMgYXJlCithbHNvIGFsbG93ZWQgd2l0aCBleGFjdGx5IHRoZSBzYW1lIHNlbWFudGljcyBhcyB3aXRoIDxjb2RlPkxJTksKK1JFTD0ic3R5bGVzaGVldCI8L2NvZGU+LiBGb3IgZXhhbXBsZSw8L3A+CisKKzxwcmU+Jmx0O0xJTksgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgdGl0bGU9ImNvbXBhY3QiIGhyZWY9InNtYWxsLWJhc2UuY3NzIgordHlwZT0idGV4dC9jc3MiJmd0OworJmx0O0xJTksgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgdGl0bGU9ImNvbXBhY3QiIGhyZWY9InNtYWxsLWV4dHJhcy5jc3MiCit0eXBlPSJ0ZXh0L2NzcyImZ3Q7CismbHQ7TElOSyByZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiB0aXRsZT0iYmlnIHByaW50IiBocmVmPSJiaWdwcmludC5jc3MiCit0eXBlPSJ0ZXh0L2NzcyImZ3Q7CismbHQ7TElOSyByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImNvbW1vbi5jc3MiIHR5cGU9InRleHQvY3NzIiZndDs8L3ByZT4KKworPHA+d291bGQgYmUgZXF1aXZhbGVudCB0bzo8L3A+CisKKzxwcmU+Jmx0Oz94bWwtc3R5bGVzaGVldCBhbHRlcm5hdGU9InllcyIgdGl0bGU9ImNvbXBhY3QiIGhyZWY9InNtYWxsLWJhc2UuY3NzIgordHlwZT0idGV4dC9jc3MiPyZndDsKKyZsdDs/eG1sLXN0eWxlc2hlZXQgYWx0ZXJuYXRlPSJ5ZXMiIHRpdGxlPSJjb21wYWN0IiBocmVmPSJzbWFsbC1leHRyYXMuY3NzIgordHlwZT0idGV4dC9jc3MiPyZndDsKKyZsdDs/eG1sLXN0eWxlc2hlZXQgYWx0ZXJuYXRlPSJ5ZXMiIHRpdGxlPSJiaWcgcHJpbnQiIGhyZWY9ImJpZ3ByaW50LmNzcyIKK3R5cGU9InRleHQvY3NzIj8mZ3Q7CismbHQ7P3htbC1zdHlsZXNoZWV0IGhyZWY9ImNvbW1vbi5jc3MiIHR5cGU9InRleHQvY3NzIj8mZ3Q7PC9wcmU+CisKKworCis8aHIgdGl0bGU9IlNlcGFyYXRvciBmcm9tIGZvb3RlciI+CisKKzxoMj4KKzxhIG5hbWU9IlJlZmVyZW5jZXMiPjwvYT5BIFJlZmVyZW5jZXM8L2gyPgorCis8ZGw+CisKKzxkdD4KKzxhIG5hbWU9IkhUTUwiPkhUTUw0MDwvYT4KKzwvZHQ+Cis8ZGQ+V29ybGQgV2lkZSBXZWIKK0NvbnNvcnRpdW0uIDxpPkhUTUwgNC4wIFNwZWNpZmljYXRpb24uPC9pPiBXM0MgUmVjb21tZW5kYXRpb24uIFNlZQorPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MCI+aHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MDwvYT4KKzwvZGQ+CisKKzxkdD4KKzxhIG5hbWU9IlJGQzIwNjgiPlJGQzIwNjg8L2E+Cis8L2R0PgorPGRkPlIuIEZpZWxkaW5nLCBKLiBHZXR0eXMsIEouIE1vZ3VsLAorSC4gRnJ5c3R5ayBOaWVsc2VuLCBhbmQgVC4gQmVybmVycy1MZWUuICA8aT5IeXBlcnRleHQgVHJhbnNmZXIKK1Byb3RvY29sIC0tIEhUVFAvMS4xLjwvaT4uIElFVEYgUkZDIDIwNjguIFNlZSA8YSBocmVmPSJodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyMDY4LnR4dCI+aHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjA2OC50eHQ8L2E+LjwvZGQ+CisKKzxkdD4KKzxhIG5hbWU9IlJGQzIzOTYiPlJGQzIzOTY8L2E+Cis8L2R0PgorPGRkPlQuIEJlcm5lcnMtTGVlLCBSLiBGaWVsZGluZywgYW5kCitMLiBNYXNpbnRlci4gIDxpPlVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllcnMgKFVSSSk6IEdlbmVyaWMKK1N5bnRheDwvaT4uIElFVEYgUkZDIDIzOTYuIFNlZSA8YSBocmVmPSJodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyMzk2LnR4dCI+aHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjM5Ni50eHQ8L2E+LjwvZGQ+CisKKzxkdD4KKzxhIG5hbWU9IlhNTCI+WE1MMTA8L2E+Cis8L2R0PgorPGRkPldvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0uIDxpPkV4dGVuc2libGUKK01hcmt1cCBMYW5ndWFnZSAoWE1MKSAxLjAuPC9pPiBXM0MgUmVjb21tZW5kYXRpb24uIFNlZSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4L1JFQy14bWwtMTk5ODAyMTAiPmh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVDLXhtbC0xOTk4MDIxMDwvYT4KKzwvZGQ+CisKKzwvZGw+CisKKworCisKKzxoMj4KKzxhIG5hbWU9InJhdGlvbmFsZSI+PC9hPkIgUmF0aW9uYWxlPC9oMj4KKworPHA+VGhlcmUgd2FzIGFuIHVyZ2VudCByZXF1aXJlbWVudCBmb3IgYSBzcGVjaWZpY2F0aW9uIGZvciBzdHlsZSBzaGVldAorbGlua2luZyB0aGF0IGNvdWxkIGJlIGNvbXBsZXRlZCBpbiB0aW1lIGZvciB0aGUgbmV4dCByZWxlYXNlIGZyb20KK21ham9yIGJyb3dzZXIgdmVuZG9ycy4gIE9ubHkgYnkgY2hvb3NpbmcgYSBzaW1wbGUgbWVjaGFuaXNtIGNsb3NlbHkKK2Jhc2VkIG9uIGEgcHJvdmVuIGV4aXN0aW5nIG1lY2hhbmlzbSBjb3VsZCB0aGUgc3BlY2lmaWNhdGlvbiBiZQorY29tcGxldGVkIGluIHRpbWUgdG8gbWVldCB0aGlzIHJlcXVpcmVtZW50LjwvcD4KKworPHA+VXNlIG9mIGEgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiBhdm9pZHMgcG9sbHV0aW5nIHRoZSBtYWluIGRvY3VtZW50CitzdHJ1Y3R1cmUgd2l0aCBhcHBsaWNhdGlvbiBzcGVjaWZpYyBwcm9jZXNzaW5nIGluZm9ybWF0aW9uLjwvcD4KKworPHA+VGhlIG1lY2hhbmlzbSBjaG9zZW4gZm9yIHRoaXMgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiBpcyBub3QgYQorY29uc3RyYWludCBvbiB0aGUgYWRkaXRpb25hbCBtZWNoYW5pc21zIHBsYW5uZWQgZm9yIGZ1dHVyZSB2ZXJzaW9ucy4KK1RoZXJlIGlzIG5vIGV4cGVjdGF0aW9uIHRoYXQgdGhlc2Ugd2lsbCB1c2UgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnM7CitpbmRlZWQgdGhleSBtYXkgbm90IGluY2x1ZGUgdGhlIGxpbmtpbmcgaW5mb3JtYXRpb24gaW4gdGhlIHNvdXJjZQorZG9jdW1lbnQuPC9wPgorCisKKworCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL2FwcGVuZGl4YS9pbnB1dHMudHh0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS9hcHBlbmRpeGEvaW5wdXRzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWUwMTNjCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS9hcHBlbmRpeGEvaW5wdXRzLnR4dApAQCAtMCwwICsxLDY0IEBACituby8uLi8uLy9wc2V1ZG8tbmV0cGF0aC9zZWcvZmlsZS5leHQKK25vLy4uLy8uLy8vcHNldWRvLW5ldHBhdGgvc2VnL2ZpbGUuZXh0Cit5ZXMvbm8vLy4uLy8uLy8vcHNldWRvLW5ldHBhdGgvc2VnL2ZpbGUuZXh0Cituby8uLi95ZXMKK25vLy4uL3llcy8KK25vLy4uL3llcy9uby8uLgorLi4vLi4vbm8vLi4vLi4KK25vLy4uLy4uCituby8uLgorbm8vLi4vCisvYS9iL2MvLi8uLi8uLi9nCittaWQvY29udGVudD01Ly4uLzYKKy4uLy4uLy4uCituby8uLi8uLi8KKy4ueWVzLy4ubm8vLi5uby8uLm5vLy4uLy4uLy4uLy4ueWVzCisuLnllcy8uLm5vLy4ubm8vLi5uby8uLi8uLi8uLi8uLnllcy8KKy4uLy4uCisuLi8uLi8uLi8KKy4KKy4vCisuLy4KKy8vbm8vLi4KKy4uLy4uL25vLy4uCisuLi8uLi9uby8uLi8KK3llcy9uby8uLi8KK3llcy9uby9uby8uLi8uLgoreWVzL25vL25vL25vLy4uLy4uLy4uCit5ZXMvbm8vLi4veWVzL25vL25vLy4uLy4uCit5ZXMvbm8vbm8vbm8vLi4vLi4vLi4veWVzCit5ZXMvbm8vbm8vbm8vLi4vLi4vLi4veWVzLworL25vLy4uLworL3llcy9uby8uLi8KKy95ZXMvbm8vbm8vLi4vLi4KKy95ZXMvbm8vbm8vbm8vLi4vLi4vLi4KKy4uLy4uLy4ubm8vLi4KKy4uLy4uLy4ubm8vLi4vCisuLnllcy8uLm5vLy4uLworLi55ZXMvLi5uby8uLm5vLy4uLy4uCisuLnllcy8uLi5uby8uLm5vLy4ubm8vLi4vLi4vLi4KKy4ueWVzLy4ubm8vLi4vLi55ZXMvLi5uby8uLm5vLy4uLy4uCisvLi5uby8uLi8KKy8uLnllcy8uLm5vLy4uLworLy4ueWVzLy4ubm8vLi5uby8uLi8uLgorLy4ueWVzLy4ubm8vLi5uby8uLm5vLy4uLy4uLy4uCisvCisvLgorLy4vCisvLi8uCisvLi8uLworLy4uCisvLi4vLi4KKy8uLi8uLi8uLgorLy4uLy4uLy4uCisvLy4uCisvLy4uLy8uLgorLy8uLi8vLi4vLy4uCisvLi8uLgorLy4vLi4vLi8uLgorLy4vLi4vLi8uLi8uLy4uCisuCisuLworLi8uCisuLgorLi4vCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL2FwcGVuZGl4YS9vdXRwdXRzLnR4dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEvYXBwZW5kaXhhL291dHB1dHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMWQwNDYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL2FwcGVuZGl4YS9vdXRwdXRzLnR4dApAQCAtMCwwICsxLDY0IEBACitwc2V1ZG8tbmV0cGF0aC9zZWcvZmlsZS5leHQKK3BzZXVkby1uZXRwYXRoL3NlZy9maWxlLmV4dAoreWVzL3BzZXVkby1uZXRwYXRoL3NlZy9maWxlLmV4dAoreWVzCit5ZXMvCit5ZXMvCisuLi8uLi8uLi8KKy4uLworCisKKy9hL2cKK21pZC82CisuLi8uLi8uLi8KKy4uLworLi55ZXMvLi55ZXMKKy4ueWVzLy4ueWVzLworLi4vLi4vCisuLi8uLi8uLi8KKworCisKKy8KKy4uLy4uLworLi4vLi4vCit5ZXMvCit5ZXMvCit5ZXMvCit5ZXMveWVzLworeWVzL3llcworeWVzL3llcy8KKy8KKy95ZXMvCisveWVzLworL3llcy8KKy4uLy4uLworLi4vLi4vCisuLnllcy8KKy4ueWVzLworLi55ZXMvCisuLnllcy8uLnllcy8KKy8KKy8uLnllcy8KKy8uLnllcy8KKy8uLnllcy8KKy8KKy8KKy8KKy8KKy8KKy8KKy8KKy8KKy8KKy8KKy8KKy8KKy8KKy8KKy8KKworCisKKy4uLworLi4vCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3JlcG9ydC5zaCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEvcmVwb3J0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzODIyYmQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3JlcG9ydC5zaApAQCAtMCwwICsxLDI0IEBACisjIS9iaW4vc2ggLWYKKworZm9yIG8gaW4gKi5vdXRwdXQgOyBkbworCWJhc2U9YGJhc2VuYW1lICRvIC5vdXRwdXRgCisJdGVzdGNhc2U9JG8KKwlmb3IgZiBpbiAke2Jhc2V9LSoub3V0cHV0IDsgZG8KKwkJaWYgdGVzdCAtZiAiJGYiIDsgdGhlbgorCQkJdmVuZG9yPWBlY2hvICRmIHwgc2VkIC1lICdzL14uKi1cKFtBLVphLXpdKlwpLiokL1wxLydgCisJCQlpZiB0ZXN0IC1zICIkdGVzdGNhc2UiIDsgdGhlbgorCQkJCWVjaG8gIlRlc3QgY2FzZTogJHRlc3RjYXNlIgorCQkJCXRlc3RjYXNlPSIiCisJCQlmaQorCQkJZWNobyAtbmUgIiAgJHt2ZW5kb3J9OiAgIFx0IgorCQkJaWYgY21wICIkbyIgIiRmIiA7IHRoZW4KKwkJCQllY2hvICJwYXNzIgorCQkJZWxzZQorCQkJCWVjaG8gImZhaWwiCisJCQkJZWNobyAnLS0tJworCQkJCWRpZmYgLXUgJG8gJGYKKwkJCQllY2hvICctLS0nCisJCQlmaQorCQlmaQorCWRvbmUKK2RvbmUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjLTEwMi1JQUlLLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjLTEwMi1JQUlLLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjFkNjBiCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMtMTAyLUlBSUsub3V0cHV0CkBAIC0wLDAgKzEgQEAKKzxlMSB4bWxucz0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vc29tZXRoaW5nL2Vsc2UiPjxlMyB4bWxucz0iIiBpZD0iRTMiIHhtbDpiYXNlPSIuLi9iYXIvZm9vIiB4bWw6c3BhY2U9InByZXNlcnZlIj48L2UzPjwvZTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMtMTAyLUlCTS5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYy0xMDItSUJNLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjFkNjBiCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMtMTAyLUlCTS5vdXRwdXQKQEAgLTAsMCArMSBAQAorPGUxIHhtbG5zPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS9zb21ldGhpbmcvZWxzZSI+PGUzIHhtbG5zPSIiIGlkPSJFMyIgeG1sOmJhc2U9Ii4uL2Jhci9mb28iIHhtbDpzcGFjZT0icHJlc2VydmUiPjwvZTM+PC9lMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYy0xMDItU1VOLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjLTEwMi1TVU4ub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyMWQ2MGIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYy0xMDItU1VOLm91dHB1dApAQCAtMCwwICsxIEBACis8ZTEgeG1sbnM9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpiYXNlPSJodHRwOi8vd3d3LmV4YW1wbGUuY29tL3NvbWV0aGluZy9lbHNlIj48ZTMgeG1sbnM9IiIgaWQ9IkUzIiB4bWw6YmFzZT0iLi4vYmFyL2ZvbyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PC9lMz48L2UxPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjLTEwMi5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYy0xMDIub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyMWQ2MGIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYy0xMDIub3V0cHV0CkBAIC0wLDAgKzEgQEAKKzxlMSB4bWxucz0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vc29tZXRoaW5nL2Vsc2UiPjxlMyB4bWxucz0iIiBpZD0iRTMiIHhtbDpiYXNlPSIuLi9iYXIvZm9vIiB4bWw6c3BhY2U9InByZXNlcnZlIj48L2UzPjwvZTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMtMTAyLnhwYXRoIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMtMTAyLnhwYXRoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0NzEyYWYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYy0xMDIueHBhdGgKQEAgLTAsMCArMSBAQAorKC8vLiB8IC8vQCogfCAvL25hbWVzcGFjZTo6Kilbc2VsZjo6aWV0ZjplMSBvciAocGFyZW50OjppZXRmOmUxIGFuZCBub3Qoc2VsZjo6dGV4dCgpIG9yIHNlbGY6OmUyKSkgb3IgY291bnQoaWQoIkUzIil8YW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSA9IGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSldClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMtMTAzLUlCTS5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYy0xMDMtSUJNLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjM1NjllCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMtMTAzLUlCTS5vdXRwdXQKQEAgLTAsMCArMSwyIEBACis8YSB4bWw6YmFzZT0iZm9vL2JhciI+PGQgeG1sOmJhc2U9Ii4uLy4uL3giPgorICAgPC9kPjwvYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYy0xMDMtU1VOLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjLTEwMy1TVU4ub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmMzU2OWUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYy0xMDMtU1VOLm91dHB1dApAQCAtMCwwICsxLDIgQEAKKzxhIHhtbDpiYXNlPSJmb28vYmFyIj48ZCB4bWw6YmFzZT0iLi4vLi4veCI+CisgICA8L2Q+PC9hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjLWlucHV0LnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjLWlucHV0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTI3NTRhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMtaW5wdXQueG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBkb2MgWw0KKzwhQVRUTElTVCBlMiB4bWw6c3BhY2UgKGRlZmF1bHR8cHJlc2VydmUpICdwcmVzZXJ2ZSc+DQorPCFBVFRMSVNUIGUzIGlkIElEICNJTVBMSUVEPg0KK10+DQorPGRvYyB4bWxucz0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vc29tZXRoaW5nL2Vsc2UiPg0KKyAgIDxlMT4NCisgICAgICA8ZTIgeG1sbnM9IiIgeG1sOmlkPSJhYmMiIHhtbDpiYXNlPSIuLi9iYXIvIj4NCisgICAgICAgICA8ZTMgaWQ9IkUzIiB4bWw6YmFzZT0iZm9vIi8+DQorICAgICAgPC9lMj4NCisgICA8L2UxPg0KKzwvZG9jPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMi0xMDItSUFJSy5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYzItMTAyLUlBSUsub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViODMwZTgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYzItMTAyLUlBSUsub3V0cHV0CkBAIC0wLDAgKzEgQEAKKzxlMSB4bWxucz0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9InNvbWV0aGluZy9lbHNlIj48ZTMgeG1sbnM9IiIgaWQ9IkUzIiB4bWw6YmFzZT0iYmFyL2ZvbyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PC9lMz48L2UxPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMi0xMDItSUJNLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMi0xMDItSUJNLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjgzMGU4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMyLTEwMi1JQk0ub3V0cHV0CkBAIC0wLDAgKzEgQEAKKzxlMSB4bWxucz0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9InNvbWV0aGluZy9lbHNlIj48ZTMgeG1sbnM9IiIgaWQ9IkUzIiB4bWw6YmFzZT0iYmFyL2ZvbyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PC9lMz48L2UxPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMi0xMDItU1VOLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMi0xMDItU1VOLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjgzMGU4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMyLTEwMi1TVU4ub3V0cHV0CkBAIC0wLDAgKzEgQEAKKzxlMSB4bWxucz0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9InNvbWV0aGluZy9lbHNlIj48ZTMgeG1sbnM9IiIgaWQ9IkUzIiB4bWw6YmFzZT0iYmFyL2ZvbyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PC9lMz48L2UxPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMi0xMDItVVBDLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMi0xMDItVVBDLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzI4MTY2Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMyLTEwMi1VUEMub3V0cHV0CkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIiAvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIiAvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtYmFzZS1jMTRuMTFzcGVjMi1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPnNlbGY6OmlldGY6ZTEgb3IgKHBhcmVudDo6aWV0ZjplMSBhbmQgbm90KHNlbGY6OnRleHQoKSBvciBzZWxmOjplMikpIG9yIGNvdW50KGlkKCJFMyIpfGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkgPSBjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIiAvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+PERpZ2VzdFZhbHVlPkxCWEVZczd0L2Q4YmdjTjU0UEFmZXkzdmp6QT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+YXFrQUlsL1NkcytvWGI2VTQ3aTEzOW5sU1FNPTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMyLTEwMi5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYzItMTAyLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjgzMGU4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMyLTEwMi5vdXRwdXQKQEAgLTAsMCArMSBAQAorPGUxIHhtbG5zPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0ic29tZXRoaW5nL2Vsc2UiPjxlMyB4bWxucz0iIiBpZD0iRTMiIHhtbDpiYXNlPSJiYXIvZm9vIiB4bWw6c3BhY2U9InByZXNlcnZlIj48L2UzPjwvZTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMyLTEwMi54cGF0aCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMi0xMDIueHBhdGgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ3MTJhZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMi0xMDIueHBhdGgKQEAgLTAsMCArMSBAQAorKC8vLiB8IC8vQCogfCAvL25hbWVzcGFjZTo6Kilbc2VsZjo6aWV0ZjplMSBvciAocGFyZW50OjppZXRmOmUxIGFuZCBub3Qoc2VsZjo6dGV4dCgpIG9yIHNlbGY6OmUyKSkgb3IgY291bnQoaWQoIkUzIil8YW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSA9IGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSldClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMyLWlucHV0LnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMi1pbnB1dC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVhYjYzYgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMi1pbnB1dC54bWwKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGRvYyBbCis8IUFUVExJU1QgZTIgeG1sOnNwYWNlIChkZWZhdWx0fHByZXNlcnZlKSAncHJlc2VydmUnPgorPCFBVFRMSVNUIGUzIGlkIElEICNJTVBMSUVEPgorXT4KKzxkb2MgeG1sbnM9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpiYXNlPSJzb21ldGhpbmcvZWxzZSI+CisgICA8ZTE+CisgICAgICA8ZTIgeG1sbnM9IiIgeG1sOmlkPSJhYmMiIHhtbDpiYXNlPSJiYXIvIj4KKyAgICAgICAgIDxlMyBpZD0iRTMiIHhtbDpiYXNlPSJmb28iLz4KKyAgICAgIDwvZTI+CisgICA8L2UxPgorPC9kb2M+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMzLTEwMy1JQUlLLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMy0xMDMtSUFJSy5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYzNTY5ZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMy0xMDMtSUFJSy5vdXRwdXQKQEAgLTAsMCArMSwyIEBACis8YSB4bWw6YmFzZT0iZm9vL2JhciI+PGQgeG1sOmJhc2U9Ii4uLy4uL3giPgorICAgPC9kPjwvYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYzMtMTAzLUlCTS5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYzMtMTAzLUlCTS5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYzNTY5ZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMy0xMDMtSUJNLm91dHB1dApAQCAtMCwwICsxLDIgQEAKKzxhIHhtbDpiYXNlPSJmb28vYmFyIj48ZCB4bWw6YmFzZT0iLi4vLi4veCI+CisgICA8L2Q+PC9hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMy0xMDMub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMzLTEwMy5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYzNTY5ZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMy0xMDMub3V0cHV0CkBAIC0wLDAgKzEsMiBAQAorPGEgeG1sOmJhc2U9ImZvby9iYXIiPjxkIHhtbDpiYXNlPSIuLi8uLi94Ij4KKyAgIDwvZD48L2E+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMzLTEwMy54cGF0aCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMy0xMDMueHBhdGgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM4YzFiMwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMy0xMDMueHBhdGgKQEAgLTAsMCArMSBAQAorKC8vLiB8IC8vQCogfCAvL25hbWVzcGFjZTo6KikgW3NlbGY6OmEgb3IgYW5jZXN0b3Itb3Itc2VsZjo6ZF0NCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYzMtaW5wdXQueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMzLWlucHV0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDcyZTc0Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMzLWlucHV0LnhtbApAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8YSB4bWw6YmFzZT0iZm9vL2JhciI+CisgPGIgeG1sOmJhc2U9Ii4uIj4KKyAgPGMgeG1sOmJhc2U9Ii4uIj4KKyAgIDxkIHhtbDpiYXNlPSJ4Ij4KKyAgIDwvZD4KKyAgPC9jPgorIDwvYj4KKzwvYT4KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTEtSUFJSy5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC0xLUlBSUsub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmMDM5MGYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC0xLUlBSUsub3V0cHV0CkBAIC0wLDAgKzEsMTQgQEAKKzxpZXRmOmMxNG4xMVhtbEJhc2VEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpiYXNlPSJodHRwOi8veG1sYmFzZS5leGFtcGxlLm9yZy94bWxiYXNlMC8iPgorICA8aWV0ZjplMSB4bWw6YmFzZT0iL3htbGJhc2UxLyI+CisgICAgPGlldGY6ZTExIHhtbDpiYXNlPSIveG1sYmFzZTExLyI+CisgICAgICA8aWV0ZjplMTExIHhtbDpiYXNlPSIveG1sYmFzZTExMS8iPjwvaWV0ZjplMTExPgorICAgIDwvaWV0ZjplMTE+CisgICAgPGlldGY6ZTEyIGF0PSIyIj4KKyAgICAgIDxpZXRmOmUxMjEgeG1sOmJhc2U9Ii94bWxiYXNlMTIxLyI+PC9pZXRmOmUxMjE+CisgICAgPC9pZXRmOmUxMj4KKyAgPC9pZXRmOmUxPgorICAKKyAgPGlldGY6ZTM+CisgICAgPGlldGY6ZTMxIGF0PSIzIj48L2lldGY6ZTMxPgorICA8L2lldGY6ZTM+Cis8L2lldGY6YzE0bjExWG1sQmFzZURvYzE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtMS1JQk0ub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtMS1JQk0ub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmMDM5MGYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC0xLUlCTS5vdXRwdXQKQEAgLTAsMCArMSwxNCBAQAorPGlldGY6YzE0bjExWG1sQmFzZURvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9Imh0dHA6Ly94bWxiYXNlLmV4YW1wbGUub3JnL3htbGJhc2UwLyI+CisgIDxpZXRmOmUxIHhtbDpiYXNlPSIveG1sYmFzZTEvIj4KKyAgICA8aWV0ZjplMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTEvIj4KKyAgICAgIDxpZXRmOmUxMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTExLyI+PC9pZXRmOmUxMTE+CisgICAgPC9pZXRmOmUxMT4KKyAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgPGlldGY6ZTEyMSB4bWw6YmFzZT0iL3htbGJhc2UxMjEvIj48L2lldGY6ZTEyMT4KKyAgICA8L2lldGY6ZTEyPgorICA8L2lldGY6ZTE+CisgIAorICA8aWV0ZjplMz4KKyAgICA8aWV0ZjplMzEgYXQ9IjMiPjwvaWV0ZjplMzE+CisgIDwvaWV0ZjplMz4KKzwvaWV0ZjpjMTRuMTFYbWxCYXNlRG9jMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC0xLVNVTi5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC0xLVNVTi5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YwMzkwZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTEtU1VOLm91dHB1dApAQCAtMCwwICsxLDE0IEBACis8aWV0ZjpjMTRuMTFYbWxCYXNlRG9jMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0iaHR0cDovL3htbGJhc2UuZXhhbXBsZS5vcmcveG1sYmFzZTAvIj4KKyAgPGlldGY6ZTEgeG1sOmJhc2U9Ii94bWxiYXNlMS8iPgorICAgIDxpZXRmOmUxMSB4bWw6YmFzZT0iL3htbGJhc2UxMS8iPgorICAgICAgPGlldGY6ZTExMSB4bWw6YmFzZT0iL3htbGJhc2UxMTEvIj48L2lldGY6ZTExMT4KKyAgICA8L2lldGY6ZTExPgorICAgIDxpZXRmOmUxMiBhdD0iMiI+CisgICAgICA8aWV0ZjplMTIxIHhtbDpiYXNlPSIveG1sYmFzZTEyMS8iPjwvaWV0ZjplMTIxPgorICAgIDwvaWV0ZjplMTI+CisgIDwvaWV0ZjplMT4KKyAgCisgIDxpZXRmOmUzPgorICAgIDxpZXRmOmUzMSBhdD0iMyI+PC9pZXRmOmUzMT4KKyAgPC9pZXRmOmUzPgorPC9pZXRmOmMxNG4xMVhtbEJhc2VEb2MxPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTEtVVBDLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTEtVVBDLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjAzOTBmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtMS1VUEMub3V0cHV0CkBAIC0wLDAgKzEsMTQgQEAKKzxpZXRmOmMxNG4xMVhtbEJhc2VEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpiYXNlPSJodHRwOi8veG1sYmFzZS5leGFtcGxlLm9yZy94bWxiYXNlMC8iPgorICA8aWV0ZjplMSB4bWw6YmFzZT0iL3htbGJhc2UxLyI+CisgICAgPGlldGY6ZTExIHhtbDpiYXNlPSIveG1sYmFzZTExLyI+CisgICAgICA8aWV0ZjplMTExIHhtbDpiYXNlPSIveG1sYmFzZTExMS8iPjwvaWV0ZjplMTExPgorICAgIDwvaWV0ZjplMTE+CisgICAgPGlldGY6ZTEyIGF0PSIyIj4KKyAgICAgIDxpZXRmOmUxMjEgeG1sOmJhc2U9Ii94bWxiYXNlMTIxLyI+PC9pZXRmOmUxMjE+CisgICAgPC9pZXRmOmUxMj4KKyAgPC9pZXRmOmUxPgorICAKKyAgPGlldGY6ZTM+CisgICAgPGlldGY6ZTMxIGF0PSIzIj48L2lldGY6ZTMxPgorICA8L2lldGY6ZTM+Cis8L2lldGY6YzE0bjExWG1sQmFzZURvYzE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtMS5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC0xLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjAzOTBmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtMS5vdXRwdXQKQEAgLTAsMCArMSwxNCBAQAorPGlldGY6YzE0bjExWG1sQmFzZURvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9Imh0dHA6Ly94bWxiYXNlLmV4YW1wbGUub3JnL3htbGJhc2UwLyI+CisgIDxpZXRmOmUxIHhtbDpiYXNlPSIveG1sYmFzZTEvIj4KKyAgICA8aWV0ZjplMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTEvIj4KKyAgICAgIDxpZXRmOmUxMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTExLyI+PC9pZXRmOmUxMTE+CisgICAgPC9pZXRmOmUxMT4KKyAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgPGlldGY6ZTEyMSB4bWw6YmFzZT0iL3htbGJhc2UxMjEvIj48L2lldGY6ZTEyMT4KKyAgICA8L2lldGY6ZTEyPgorICA8L2lldGY6ZTE+CisgIAorICA8aWV0ZjplMz4KKyAgICA8aWV0ZjplMzEgYXQ9IjMiPjwvaWV0ZjplMzE+CisgIDwvaWV0ZjplMz4KKzwvaWV0ZjpjMTRuMTFYbWxCYXNlRG9jMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC0xLnhwYXRoIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtMS54cGF0aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGEzYTJiCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtMS54cGF0aApAQCAtMCwwICsxIEBACisoLy8uIHwgLy9AKiB8IC8vbmFtZXNwYWNlOjoqKSBbYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjpjMTRuMTFYbWxCYXNlRG9jMSBhbmQgbm90KGFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTIpXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTEwMi1VUEMub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtMTAyLVVQQy5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZhMTNlYgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTEwMi1VUEMub3V0cHV0CkBAIC0wLDAgKzEgQEAKKzxlMSB4bWxucz0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9InNvbWV0aGluZy9lbHNlIj48ZTMgeG1sbnM9IiIgaWQ9IkUzIiB4bWw6YmFzZT0iYmFyL2ZvbyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PC9lMz48L2UxPgpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtMi1JQUlLLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTItSUFJSy5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM4YjA4NwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTItSUFJSy5vdXRwdXQKQEAgLTAsMCArMSw4IEBACis8aWV0ZjplMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0iaHR0cDovL3htbGJhc2UuZXhhbXBsZS5vcmcveG1sYmFzZTEvIj4KKyAgICA8aWV0ZjplMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTEvIj4KKyAgICAgIDxpZXRmOmUxMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTExLyI+PC9pZXRmOmUxMTE+CisgICAgPC9pZXRmOmUxMT4KKyAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgPGlldGY6ZTEyMSB4bWw6YmFzZT0iL3htbGJhc2UxMjEvIj48L2lldGY6ZTEyMT4KKyAgICA8L2lldGY6ZTEyPgorICA8L2lldGY6ZTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtMi1JQk0ub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtMi1JQk0ub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjOGIwODcKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC0yLUlCTS5vdXRwdXQKQEAgLTAsMCArMSw4IEBACis8aWV0ZjplMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0iaHR0cDovL3htbGJhc2UuZXhhbXBsZS5vcmcveG1sYmFzZTEvIj4KKyAgICA8aWV0ZjplMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTEvIj4KKyAgICAgIDxpZXRmOmUxMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTExLyI+PC9pZXRmOmUxMTE+CisgICAgPC9pZXRmOmUxMT4KKyAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgPGlldGY6ZTEyMSB4bWw6YmFzZT0iL3htbGJhc2UxMjEvIj48L2lldGY6ZTEyMT4KKyAgICA8L2lldGY6ZTEyPgorICA8L2lldGY6ZTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtMi1TVU4ub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtMi1TVU4ub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjOGIwODcKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC0yLVNVTi5vdXRwdXQKQEAgLTAsMCArMSw4IEBACis8aWV0ZjplMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0iaHR0cDovL3htbGJhc2UuZXhhbXBsZS5vcmcveG1sYmFzZTEvIj4KKyAgICA8aWV0ZjplMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTEvIj4KKyAgICAgIDxpZXRmOmUxMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTExLyI+PC9pZXRmOmUxMTE+CisgICAgPC9pZXRmOmUxMT4KKyAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgPGlldGY6ZTEyMSB4bWw6YmFzZT0iL3htbGJhc2UxMjEvIj48L2lldGY6ZTEyMT4KKyAgICA8L2lldGY6ZTEyPgorICA8L2lldGY6ZTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtMi1VUEMub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtMi1VUEMub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjOGIwODcKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC0yLVVQQy5vdXRwdXQKQEAgLTAsMCArMSw4IEBACis8aWV0ZjplMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0iaHR0cDovL3htbGJhc2UuZXhhbXBsZS5vcmcveG1sYmFzZTEvIj4KKyAgICA8aWV0ZjplMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTEvIj4KKyAgICAgIDxpZXRmOmUxMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTExLyI+PC9pZXRmOmUxMTE+CisgICAgPC9pZXRmOmUxMT4KKyAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgPGlldGY6ZTEyMSB4bWw6YmFzZT0iL3htbGJhc2UxMjEvIj48L2lldGY6ZTEyMT4KKyAgICA8L2lldGY6ZTEyPgorICA8L2lldGY6ZTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtMi5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC0yLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzhiMDg3Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtMi5vdXRwdXQKQEAgLTAsMCArMSw4IEBACis8aWV0ZjplMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0iaHR0cDovL3htbGJhc2UuZXhhbXBsZS5vcmcveG1sYmFzZTEvIj4KKyAgICA8aWV0ZjplMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTEvIj4KKyAgICAgIDxpZXRmOmUxMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTExLyI+PC9pZXRmOmUxMTE+CisgICAgPC9pZXRmOmUxMT4KKyAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgPGlldGY6ZTEyMSB4bWw6YmFzZT0iL3htbGJhc2UxMjEvIj48L2lldGY6ZTEyMT4KKyAgICA8L2lldGY6ZTEyPgorICA8L2lldGY6ZTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtMi54cGF0aCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTIueHBhdGgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYzMzZjYwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTIueHBhdGgKQEAgLTAsMCArMSBAQAorKC8vLiB8IC8vQCogfCAvL25hbWVzcGFjZTo6KikgW2FuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTFdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtMy1JQUlLLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTMtSUFJSy5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQzZWJlNAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTMtSUFJSy5vdXRwdXQKQEAgLTAsMCArMSwzIEBACis8aWV0ZjplMTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9Imh0dHA6Ly94bWxiYXNlLmV4YW1wbGUub3JnL3htbGJhc2UxMS8iPgorICAgICAgPGlldGY6ZTExMSB4bWw6YmFzZT0iL3htbGJhc2UxMTEvIj48L2lldGY6ZTExMT4KKyAgICA8L2lldGY6ZTExPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTMtSUJNLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTMtSUJNLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDNlYmU0Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtMy1JQk0ub3V0cHV0CkBAIC0wLDAgKzEsMyBAQAorPGlldGY6ZTExIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpiYXNlPSJodHRwOi8veG1sYmFzZS5leGFtcGxlLm9yZy94bWxiYXNlMTEvIj4KKyAgICAgIDxpZXRmOmUxMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTExLyI+PC9pZXRmOmUxMTE+CisgICAgPC9pZXRmOmUxMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC0zLVNVTi5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC0zLVNVTi5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQzZWJlNAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTMtU1VOLm91dHB1dApAQCAtMCwwICsxLDMgQEAKKzxpZXRmOmUxMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0iaHR0cDovL3htbGJhc2UuZXhhbXBsZS5vcmcveG1sYmFzZTExLyI+CisgICAgICA8aWV0ZjplMTExIHhtbDpiYXNlPSIveG1sYmFzZTExMS8iPjwvaWV0ZjplMTExPgorICAgIDwvaWV0ZjplMTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtMy1VUEMub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtMy1VUEMub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkM2ViZTQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC0zLVVQQy5vdXRwdXQKQEAgLTAsMCArMSwzIEBACis8aWV0ZjplMTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9Imh0dHA6Ly94bWxiYXNlLmV4YW1wbGUub3JnL3htbGJhc2UxMS8iPgorICAgICAgPGlldGY6ZTExMSB4bWw6YmFzZT0iL3htbGJhc2UxMTEvIj48L2lldGY6ZTExMT4KKyAgICA8L2lldGY6ZTExPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTMub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtMy5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQzZWJlNAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTMub3V0cHV0CkBAIC0wLDAgKzEsMyBAQAorPGlldGY6ZTExIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpiYXNlPSJodHRwOi8veG1sYmFzZS5leGFtcGxlLm9yZy94bWxiYXNlMTEvIj4KKyAgICAgIDxpZXRmOmUxMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTExLyI+PC9pZXRmOmUxMTE+CisgICAgPC9pZXRmOmUxMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC0zLnhwYXRoIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtMy54cGF0aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTA3ZmUyCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtMy54cGF0aApAQCAtMCwwICsxIEBACisoLy8uIHwgLy9AKiB8IC8vbmFtZXNwYWNlOjoqKSBbYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTFdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtNC1JQUlLLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTQtSUFJSy5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ0NTgzOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTQtSUFJSy5vdXRwdXQKQEAgLTAsMCArMSBAQAorPGlldGY6ZTExMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0iaHR0cDovL3htbGJhc2UuZXhhbXBsZS5vcmcveG1sYmFzZTExMS8iPjwvaWV0ZjplMTExPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTQtSUJNLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTQtSUJNLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDQ1ODM5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtNC1JQk0ub3V0cHV0CkBAIC0wLDAgKzEgQEAKKzxpZXRmOmUxMTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9Imh0dHA6Ly94bWxiYXNlLmV4YW1wbGUub3JnL3htbGJhc2UxMTEvIj48L2lldGY6ZTExMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC00LVNVTi5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC00LVNVTi5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ0NTgzOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTQtU1VOLm91dHB1dApAQCAtMCwwICsxIEBACis8aWV0ZjplMTExIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpiYXNlPSJodHRwOi8veG1sYmFzZS5leGFtcGxlLm9yZy94bWxiYXNlMTExLyI+PC9pZXRmOmUxMTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtNC1VUEMub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtNC1VUEMub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkNDU4MzkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC00LVVQQy5vdXRwdXQKQEAgLTAsMCArMSBAQAorPGlldGY6ZTExMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0iaHR0cDovL3htbGJhc2UuZXhhbXBsZS5vcmcveG1sYmFzZTExMS8iPjwvaWV0ZjplMTExPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTQub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtNC5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ0NTgzOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTQub3V0cHV0CkBAIC0wLDAgKzEgQEAKKzxpZXRmOmUxMTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9Imh0dHA6Ly94bWxiYXNlLmV4YW1wbGUub3JnL3htbGJhc2UxMTEvIj48L2lldGY6ZTExMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC00LnhwYXRoIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtNC54cGF0aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Zjc4NmU0Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtNC54cGF0aApAQCAtMCwwICsxIEBACisoLy8uIHwgLy9AKiB8IC8vbmFtZXNwYWNlOjoqKSBbYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTExXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTUtSUFJSy5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC01LUlBSUsub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ZTUxZDkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC01LUlBSUsub3V0cHV0CkBAIC0wLDAgKzEgQEAKKzxpZXRmOmUyMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0iaHR0cDovL3htbGJhc2UuZXhhbXBsZS5vcmcveG1sYmFzZTIxLyI+PC9pZXRmOmUyMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC01LUlCTS5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC01LUlCTS5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTVlNTFkOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTUtSUJNLm91dHB1dApAQCAtMCwwICsxIEBACis8aWV0ZjplMjEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9Imh0dHA6Ly94bWxiYXNlLmV4YW1wbGUub3JnL3htbGJhc2UyMS8iPjwvaWV0ZjplMjE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtNS1TVU4ub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtNS1TVU4ub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ZTUxZDkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC01LVNVTi5vdXRwdXQKQEAgLTAsMCArMSBAQAorPGlldGY6ZTIxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpiYXNlPSJodHRwOi8veG1sYmFzZS5leGFtcGxlLm9yZy94bWxiYXNlMjEvIj48L2lldGY6ZTIxPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTUtVVBDLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTUtVVBDLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWU1MWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtNS1VUEMub3V0cHV0CkBAIC0wLDAgKzEgQEAKKzxpZXRmOmUyMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0iaHR0cDovL3htbGJhc2UuZXhhbXBsZS5vcmcveG1sYmFzZTIxLyI+PC9pZXRmOmUyMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC01Lm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTUub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ZTUxZDkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC01Lm91dHB1dApAQCAtMCwwICsxIEBACis8aWV0ZjplMjEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9Imh0dHA6Ly94bWxiYXNlLmV4YW1wbGUub3JnL3htbGJhc2UyMS8iPjwvaWV0ZjplMjE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtNS54cGF0aCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTUueHBhdGgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjlhODM1NQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTUueHBhdGgKQEAgLTAsMCArMSBAQAorKC8vLiB8IC8vQCogfCAvL25hbWVzcGFjZTo6KikgW2FuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTIxXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTYtSUFJSy5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC02LUlBSUsub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3ZjY2NDkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC02LUlBSUsub3V0cHV0CkBAIC0wLDAgKzEsMyBAQAorPGlldGY6ZTMgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9Imh0dHA6Ly94bWxiYXNlLmV4YW1wbGUub3JnL3htbGJhc2UwLyI+CisgICAgPGlldGY6ZTMxIGF0PSIzIj48L2lldGY6ZTMxPgorICA8L2lldGY6ZTM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtNi1JQk0ub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtNi1JQk0ub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3ZjY2NDkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC02LUlCTS5vdXRwdXQKQEAgLTAsMCArMSwzIEBACis8aWV0ZjplMyB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0iaHR0cDovL3htbGJhc2UuZXhhbXBsZS5vcmcveG1sYmFzZTAvIj4KKyAgICA8aWV0ZjplMzEgYXQ9IjMiPjwvaWV0ZjplMzE+CisgIDwvaWV0ZjplMz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC02LVNVTi5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC02LVNVTi5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdmNjY0OQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTYtU1VOLm91dHB1dApAQCAtMCwwICsxLDMgQEAKKzxpZXRmOmUzIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpiYXNlPSJodHRwOi8veG1sYmFzZS5leGFtcGxlLm9yZy94bWxiYXNlMC8iPgorICAgIDxpZXRmOmUzMSBhdD0iMyI+PC9pZXRmOmUzMT4KKyAgPC9pZXRmOmUzPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTYtVVBDLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTYtVVBDLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2Y2NjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtNi1VUEMub3V0cHV0CkBAIC0wLDAgKzEsMyBAQAorPGlldGY6ZTMgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9Imh0dHA6Ly94bWxiYXNlLmV4YW1wbGUub3JnL3htbGJhc2UwLyI+CisgICAgPGlldGY6ZTMxIGF0PSIzIj48L2lldGY6ZTMxPgorICA8L2lldGY6ZTM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtNi5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC02Lm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2Y2NjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtNi5vdXRwdXQKQEAgLTAsMCArMSwzIEBACis8aWV0ZjplMyB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0iaHR0cDovL3htbGJhc2UuZXhhbXBsZS5vcmcveG1sYmFzZTAvIj4KKyAgICA8aWV0ZjplMzEgYXQ9IjMiPjwvaWV0ZjplMzE+CisgIDwvaWV0ZjplMz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC02LnhwYXRoIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtNi54cGF0aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTAxODc1Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtNi54cGF0aApAQCAtMCwwICsxIEBACisoLy8uIHwgLy9AKiB8IC8vbmFtZXNwYWNlOjoqKSBbYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplM10KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC03LUlBSUsub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtNy1JQUlLLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjJjZmUwCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtNy1JQUlLLm91dHB1dApAQCAtMCwwICsxLDcgQEAKKzxpZXRmOmMxNG4xMVhtbEJhc2VEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpiYXNlPSJodHRwOi8veG1sYmFzZS5leGFtcGxlLm9yZy94bWxiYXNlMC8iPgorICAKKyAgCisgIDxpZXRmOmUzPgorICAgIDxpZXRmOmUzMSBhdD0iMyI+PC9pZXRmOmUzMT4KKyAgPC9pZXRmOmUzPgorPC9pZXRmOmMxNG4xMVhtbEJhc2VEb2MxPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTctSUJNLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTctSUJNLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjJjZmUwCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtNy1JQk0ub3V0cHV0CkBAIC0wLDAgKzEsNyBAQAorPGlldGY6YzE0bjExWG1sQmFzZURvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9Imh0dHA6Ly94bWxiYXNlLmV4YW1wbGUub3JnL3htbGJhc2UwLyI+CisgIAorICAKKyAgPGlldGY6ZTM+CisgICAgPGlldGY6ZTMxIGF0PSIzIj48L2lldGY6ZTMxPgorICA8L2lldGY6ZTM+Cis8L2lldGY6YzE0bjExWG1sQmFzZURvYzE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtNy1TVU4ub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtNy1TVU4ub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyMmNmZTAKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC03LVNVTi5vdXRwdXQKQEAgLTAsMCArMSw3IEBACis8aWV0ZjpjMTRuMTFYbWxCYXNlRG9jMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0iaHR0cDovL3htbGJhc2UuZXhhbXBsZS5vcmcveG1sYmFzZTAvIj4KKyAgCisgIAorICA8aWV0ZjplMz4KKyAgICA8aWV0ZjplMzEgYXQ9IjMiPjwvaWV0ZjplMzE+CisgIDwvaWV0ZjplMz4KKzwvaWV0ZjpjMTRuMTFYbWxCYXNlRG9jMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC03LVVQQy5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC03LVVQQy5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIyY2ZlMAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTctVVBDLm91dHB1dApAQCAtMCwwICsxLDcgQEAKKzxpZXRmOmMxNG4xMVhtbEJhc2VEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpiYXNlPSJodHRwOi8veG1sYmFzZS5leGFtcGxlLm9yZy94bWxiYXNlMC8iPgorICAKKyAgCisgIDxpZXRmOmUzPgorICAgIDxpZXRmOmUzMSBhdD0iMyI+PC9pZXRmOmUzMT4KKyAgPC9pZXRmOmUzPgorPC9pZXRmOmMxNG4xMVhtbEJhc2VEb2MxPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTcub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtNy5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIyY2ZlMAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTcub3V0cHV0CkBAIC0wLDAgKzEsNyBAQAorPGlldGY6YzE0bjExWG1sQmFzZURvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9Imh0dHA6Ly94bWxiYXNlLmV4YW1wbGUub3JnL3htbGJhc2UwLyI+CisgIAorICAKKyAgPGlldGY6ZTM+CisgICAgPGlldGY6ZTMxIGF0PSIzIj48L2lldGY6ZTMxPgorICA8L2lldGY6ZTM+Cis8L2lldGY6YzE0bjExWG1sQmFzZURvYzE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxiYXNlLXByb3AtNy54cGF0aCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTcueHBhdGgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAzODc2YgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLTcueHBhdGgKQEAgLTAsMCArMSBAQAorKC8vLiB8IC8vQCogfCAvL25hbWVzcGFjZTo6KikgW2FuY2VzdG9yLW9yLXNlbGY6OmlldGY6YzE0bjExWG1sQmFzZURvYzEgYW5kIG5vdChhbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxIG9yIAlhbmNlc3Rvci1vci1zZWxmOjppZXRmOmUyKV0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC1pbnB1dC54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGJhc2UtcHJvcC1pbnB1dC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjhhZGIyNAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sYmFzZS1wcm9wLWlucHV0LnhtbApAQCAtMCwwICsxLDE3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGlldGY6YzE0bjExWG1sQmFzZURvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9Imh0dHA6Ly94bWxiYXNlLmV4YW1wbGUub3JnL3htbGJhc2UwLyI+CisgIDxpZXRmOmUxIHhtbDpiYXNlPSIveG1sYmFzZTEvIj4KKyAgICA8aWV0ZjplMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTEvIj4KKyAgICAgIDxpZXRmOmUxMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTExLyIvPgorICAgIDwvaWV0ZjplMTE+CisgICAgPGlldGY6ZTEyIGF0PSIyIj4KKyAgICAgIDxpZXRmOmUxMjEgeG1sOmJhc2U9Ii94bWxiYXNlMTIxLyIvPgorICAgIDwvaWV0ZjplMTI+CisgIDwvaWV0ZjplMT4KKyAgPGlldGY6ZTI+CisgICAgPGlldGY6ZTIxIHhtbDpiYXNlPSIveG1sYmFzZTIxLyIvPgorICA8L2lldGY6ZTI+CisgIDxpZXRmOmUzPgorICAgIDxpZXRmOmUzMSBhdD0iMyIvPgorICA8L2lldGY6ZTM+Cis8L2lldGY6YzE0bjExWG1sQmFzZURvYzE+CmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGlkLTEtSUFJSy5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGlkLTEtSUFJSy5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY1ZmU2ZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1saWQtMS1JQUlLLm91dHB1dApAQCAtMCwwICsxLDggQEAKKzxpZXRmOmUxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDppZD0iSWRJbnRlcm9wIj4KKyAgICAgIDxpZXRmOmUxMT4KKyAgICAgICAgIDxpZXRmOmUxMTE+PC9pZXRmOmUxMTE+CisgICAgICA8L2lldGY6ZTExPgorICAgICAgPGlldGY6ZTEyIGF0PSIyIj4KKyAgICAgICAgIDxpZXRmOmUxMjE+PC9pZXRmOmUxMjE+CisgICAgICA8L2lldGY6ZTEyPgorICAgPC9pZXRmOmUxPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1saWQtMS1JQk0ub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxpZC0xLUlCTS5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY1ZmU2ZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1saWQtMS1JQk0ub3V0cHV0CkBAIC0wLDAgKzEsOCBAQAorPGlldGY6ZTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmlkPSJJZEludGVyb3AiPgorICAgICAgPGlldGY6ZTExPgorICAgICAgICAgPGlldGY6ZTExMT48L2lldGY6ZTExMT4KKyAgICAgIDwvaWV0ZjplMTE+CisgICAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgICAgPGlldGY6ZTEyMT48L2lldGY6ZTEyMT4KKyAgICAgIDwvaWV0ZjplMTI+CisgICA8L2lldGY6ZTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxpZC0xLVNVTi5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGlkLTEtU1VOLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjVmZTZmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxpZC0xLVNVTi5vdXRwdXQKQEAgLTAsMCArMSw4IEBACis8aWV0ZjplMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6aWQ9IklkSW50ZXJvcCI+CisgICAgICA8aWV0ZjplMTE+CisgICAgICAgICA8aWV0ZjplMTExPjwvaWV0ZjplMTExPgorICAgICAgPC9pZXRmOmUxMT4KKyAgICAgIDxpZXRmOmUxMiBhdD0iMiI+CisgICAgICAgICA8aWV0ZjplMTIxPjwvaWV0ZjplMTIxPgorICAgICAgPC9pZXRmOmUxMj4KKyAgIDwvaWV0ZjplMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGlkLTEtVVBDLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1saWQtMS1VUEMub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNWZlNmYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGlkLTEtVVBDLm91dHB1dApAQCAtMCwwICsxLDggQEAKKzxpZXRmOmUxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDppZD0iSWRJbnRlcm9wIj4KKyAgICAgIDxpZXRmOmUxMT4KKyAgICAgICAgIDxpZXRmOmUxMTE+PC9pZXRmOmUxMTE+CisgICAgICA8L2lldGY6ZTExPgorICAgICAgPGlldGY6ZTEyIGF0PSIyIj4KKyAgICAgICAgIDxpZXRmOmUxMjE+PC9pZXRmOmUxMjE+CisgICAgICA8L2lldGY6ZTEyPgorICAgPC9pZXRmOmUxPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1saWQtMS5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGlkLTEub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNWZlNmYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGlkLTEub3V0cHV0CkBAIC0wLDAgKzEsOCBAQAorPGlldGY6ZTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmlkPSJJZEludGVyb3AiPgorICAgICAgPGlldGY6ZTExPgorICAgICAgICAgPGlldGY6ZTExMT48L2lldGY6ZTExMT4KKyAgICAgIDwvaWV0ZjplMTE+CisgICAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgICAgPGlldGY6ZTEyMT48L2lldGY6ZTEyMT4KKyAgICAgIDwvaWV0ZjplMTI+CisgICA8L2lldGY6ZTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxpZC0xLnhwYXRoIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxpZC0xLnhwYXRoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MzM2Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGlkLTEueHBhdGgKQEAgLTAsMCArMSBAQAorKC8vLiB8IC8vQCogfCAvL25hbWVzcGFjZTo6KikgW2FuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTFdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxpZC0yLUlBSUsub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxpZC0yLUlBSUsub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1MDIwYjgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGlkLTItSUFJSy5vdXRwdXQKQEAgLTAsMCArMSw1IEBACis8aWV0ZjplMTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisgICAgICAgICA8aWV0ZjplMTExPjwvaWV0ZjplMTExPgorICAgICAgPC9pZXRmOmUxMT48aWV0ZjplMTIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgYXQ9IjIiPgorICAgICAgICAgPGlldGY6ZTEyMT48L2lldGY6ZTEyMT4KKyAgICAgIDwvaWV0ZjplMTI+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxpZC0yLUlCTS5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGlkLTItSUJNLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTAyMGI4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxpZC0yLUlCTS5vdXRwdXQKQEAgLTAsMCArMSw1IEBACis8aWV0ZjplMTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisgICAgICAgICA8aWV0ZjplMTExPjwvaWV0ZjplMTExPgorICAgICAgPC9pZXRmOmUxMT48aWV0ZjplMTIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgYXQ9IjIiPgorICAgICAgICAgPGlldGY6ZTEyMT48L2lldGY6ZTEyMT4KKyAgICAgIDwvaWV0ZjplMTI+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxpZC0yLVNVTi5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGlkLTItU1VOLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTAyMGI4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxpZC0yLVNVTi5vdXRwdXQKQEAgLTAsMCArMSw1IEBACis8aWV0ZjplMTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisgICAgICAgICA8aWV0ZjplMTExPjwvaWV0ZjplMTExPgorICAgICAgPC9pZXRmOmUxMT48aWV0ZjplMTIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgYXQ9IjIiPgorICAgICAgICAgPGlldGY6ZTEyMT48L2lldGY6ZTEyMT4KKyAgICAgIDwvaWV0ZjplMTI+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxpZC0yLVVQQy5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGlkLTItVVBDLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTAyMGI4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxpZC0yLVVQQy5vdXRwdXQKQEAgLTAsMCArMSw1IEBACis8aWV0ZjplMTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisgICAgICAgICA8aWV0ZjplMTExPjwvaWV0ZjplMTExPgorICAgICAgPC9pZXRmOmUxMT48aWV0ZjplMTIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgYXQ9IjIiPgorICAgICAgICAgPGlldGY6ZTEyMT48L2lldGY6ZTEyMT4KKyAgICAgIDwvaWV0ZjplMTI+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxpZC0yLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1saWQtMi5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODUwMjBiOAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1saWQtMi5vdXRwdXQKQEAgLTAsMCArMSw1IEBACis8aWV0ZjplMTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisgICAgICAgICA8aWV0ZjplMTExPjwvaWV0ZjplMTExPgorICAgICAgPC9pZXRmOmUxMT48aWV0ZjplMTIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgYXQ9IjIiPgorICAgICAgICAgPGlldGY6ZTEyMT48L2lldGY6ZTEyMT4KKyAgICAgIDwvaWV0ZjplMTI+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxpZC0yLnhwYXRoIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxpZC0yLnhwYXRoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2YzViNTAKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGlkLTIueHBhdGgKQEAgLTAsMCArMSBAQAorKC8vLiB8IC8vQCogfCAvL25hbWVzcGFjZTo6KikgW2FuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTExIG9yIGFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTEyXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1saWQtaW5wdXQueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxpZC1pbnB1dC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc0NjBjZAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1saWQtaW5wdXQueG1sCkBAIC0wLDAgKzEsMTUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8aWV0ZjpjMTRuMTFYbWxJZERvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgCit4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKyAgIDxpZXRmOmUxIHhtbDppZD0iSWRJbnRlcm9wIj4KKyAgICAgIDxpZXRmOmUxMT4KKyAgICAgICAgIDxpZXRmOmUxMTEgLz4KKyAgICAgIDwvaWV0ZjplMTE+CisgICAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgICAgPGlldGY6ZTEyMSAvPgorICAgICAgPC9pZXRmOmUxMj4KKyAgIDwvaWV0ZjplMT4KKyAgIDxpZXRmOmUyID4KKyAgICAgIDxpZXRmOmUyMSAvPgorICAgPC9pZXRmOmUyPiAgCis8L2lldGY6YzE0bjExWG1sSWREb2MxPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy0xLUlBSUsub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxsYW5nLTEtSUFJSy5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QxNmRjZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy0xLUlBSUsub3V0cHV0CkBAIC0wLDAgKzEsOCBAQAorPGlldGY6ZTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmxhbmc9IkVOIj4KKyAgICAgIDxpZXRmOmUxMT4KKyAgICAgICAgIDxpZXRmOmUxMTE+PC9pZXRmOmUxMTE+CisgICAgICA8L2lldGY6ZTExPgorICAgICAgPGlldGY6ZTEyIGF0PSIyIj4KKyAgICAgICAgIDxpZXRmOmUxMjE+PC9pZXRmOmUxMjE+CisgICAgICA8L2lldGY6ZTEyPgorICAgPC9pZXRmOmUxPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy0xLUlCTS5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGxhbmctMS1JQk0ub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMTZkY2UKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGxhbmctMS1JQk0ub3V0cHV0CkBAIC0wLDAgKzEsOCBAQAorPGlldGY6ZTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmxhbmc9IkVOIj4KKyAgICAgIDxpZXRmOmUxMT4KKyAgICAgICAgIDxpZXRmOmUxMTE+PC9pZXRmOmUxMTE+CisgICAgICA8L2lldGY6ZTExPgorICAgICAgPGlldGY6ZTEyIGF0PSIyIj4KKyAgICAgICAgIDxpZXRmOmUxMjE+PC9pZXRmOmUxMjE+CisgICAgICA8L2lldGY6ZTEyPgorICAgPC9pZXRmOmUxPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy0xLVNVTi5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGxhbmctMS1TVU4ub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMTZkY2UKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGxhbmctMS1TVU4ub3V0cHV0CkBAIC0wLDAgKzEsOCBAQAorPGlldGY6ZTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmxhbmc9IkVOIj4KKyAgICAgIDxpZXRmOmUxMT4KKyAgICAgICAgIDxpZXRmOmUxMTE+PC9pZXRmOmUxMTE+CisgICAgICA8L2lldGY6ZTExPgorICAgICAgPGlldGY6ZTEyIGF0PSIyIj4KKyAgICAgICAgIDxpZXRmOmUxMjE+PC9pZXRmOmUxMjE+CisgICAgICA8L2lldGY6ZTEyPgorICAgPC9pZXRmOmUxPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy0xLVVQQy5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGxhbmctMS1VUEMub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMTZkY2UKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGxhbmctMS1VUEMub3V0cHV0CkBAIC0wLDAgKzEsOCBAQAorPGlldGY6ZTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmxhbmc9IkVOIj4KKyAgICAgIDxpZXRmOmUxMT4KKyAgICAgICAgIDxpZXRmOmUxMTE+PC9pZXRmOmUxMTE+CisgICAgICA8L2lldGY6ZTExPgorICAgICAgPGlldGY6ZTEyIGF0PSIyIj4KKyAgICAgICAgIDxpZXRmOmUxMjE+PC9pZXRmOmUxMjE+CisgICAgICA8L2lldGY6ZTEyPgorICAgPC9pZXRmOmUxPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy0xLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy0xLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDE2ZGNlCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxsYW5nLTEub3V0cHV0CkBAIC0wLDAgKzEsOCBAQAorPGlldGY6ZTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmxhbmc9IkVOIj4KKyAgICAgIDxpZXRmOmUxMT4KKyAgICAgICAgIDxpZXRmOmUxMTE+PC9pZXRmOmUxMTE+CisgICAgICA8L2lldGY6ZTExPgorICAgICAgPGlldGY6ZTEyIGF0PSIyIj4KKyAgICAgICAgIDxpZXRmOmUxMjE+PC9pZXRmOmUxMjE+CisgICAgICA8L2lldGY6ZTEyPgorICAgPC9pZXRmOmUxPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy0xLnhwYXRoIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxsYW5nLTEueHBhdGgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzMzYWY3ZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy0xLnhwYXRoCkBAIC0wLDAgKzEgQEAKKygvLy4gfCAvL0AqIHwgLy9uYW1lc3BhY2U6OiopW2FuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTFdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxsYW5nLTItSUFJSy5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGxhbmctMi1JQUlLLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2E2N2IzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxsYW5nLTItSUFJSy5vdXRwdXQKQEAgLTAsMCArMSwzIEBACis8aWV0ZjplMiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKyAgICAgIDxpZXRmOmUyMT48L2lldGY6ZTIxPgorICAgPC9pZXRmOmUyPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy0yLUlCTS5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGxhbmctMi1JQk0ub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjYTY3YjMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGxhbmctMi1JQk0ub3V0cHV0CkBAIC0wLDAgKzEsMyBAQAorPGlldGY6ZTIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisgICAgICA8aWV0ZjplMjE+PC9pZXRmOmUyMT4KKyAgIDwvaWV0ZjplMj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGxhbmctMi1TVU4ub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxsYW5nLTItU1VOLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2E2N2IzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxsYW5nLTItU1VOLm91dHB1dApAQCAtMCwwICsxLDMgQEAKKzxpZXRmOmUyIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPgorICAgICAgPGlldGY6ZTIxPjwvaWV0ZjplMjE+CisgICA8L2lldGY6ZTI+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxsYW5nLTItVVBDLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy0yLVVQQy5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNhNjdiMwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy0yLVVQQy5vdXRwdXQKQEAgLTAsMCArMSwzIEBACis8aWV0ZjplMiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKyAgICAgIDxpZXRmOmUyMT48L2lldGY6ZTIxPgorICAgPC9pZXRmOmUyPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy0yLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy0yLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2E2N2IzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxsYW5nLTIub3V0cHV0CkBAIC0wLDAgKzEsMyBAQAorPGlldGY6ZTIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisgICAgICA8aWV0ZjplMjE+PC9pZXRmOmUyMT4KKyAgIDwvaWV0ZjplMj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGxhbmctMi54cGF0aCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy0yLnhwYXRoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4YTE0NjkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGxhbmctMi54cGF0aApAQCAtMCwwICsxIEBACisoLy8uIHwgLy9AKiB8IC8vbmFtZXNwYWNlOjoqKVthbmNlc3Rvci1vci1zZWxmOjppZXRmOmUyXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy0zLUlBSUsub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxsYW5nLTMtSUFJSy5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVlOWExOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy0zLUlBSUsub3V0cHV0CkBAIC0wLDAgKzEsMyBAQAorPGlldGY6ZTExIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpsYW5nPSJFTiI+CisgICAgICAgICA8aWV0ZjplMTExPjwvaWV0ZjplMTExPgorICAgICAgPC9pZXRmOmUxMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGxhbmctMy1JQk0ub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxsYW5nLTMtSUJNLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWU5YTE5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxsYW5nLTMtSUJNLm91dHB1dApAQCAtMCwwICsxLDMgQEAKKzxpZXRmOmUxMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6bGFuZz0iRU4iPgorICAgICAgICAgPGlldGY6ZTExMT48L2lldGY6ZTExMT4KKyAgICAgIDwvaWV0ZjplMTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxsYW5nLTMtU1VOLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy0zLVNVTi5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVlOWExOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy0zLVNVTi5vdXRwdXQKQEAgLTAsMCArMSwzIEBACis8aWV0ZjplMTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmxhbmc9IkVOIj4KKyAgICAgICAgIDxpZXRmOmUxMTE+PC9pZXRmOmUxMTE+CisgICAgICA8L2lldGY6ZTExPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy0zLVVQQy5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGxhbmctMy1VUEMub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1ZTlhMTkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGxhbmctMy1VUEMub3V0cHV0CkBAIC0wLDAgKzEsMyBAQAorPGlldGY6ZTExIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpsYW5nPSJFTiI+CisgICAgICAgICA8aWV0ZjplMTExPjwvaWV0ZjplMTExPgorICAgICAgPC9pZXRmOmUxMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGxhbmctMy5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGxhbmctMy5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVlOWExOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy0zLm91dHB1dApAQCAtMCwwICsxLDMgQEAKKzxpZXRmOmUxMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6bGFuZz0iRU4iPgorICAgICAgICAgPGlldGY6ZTExMT48L2lldGY6ZTExMT4KKyAgICAgIDwvaWV0ZjplMTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxsYW5nLTMueHBhdGggYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGxhbmctMy54cGF0aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2RhMmY3Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxsYW5nLTMueHBhdGgKQEAgLTAsMCArMSBAQAorKC8vLiB8IC8vQCogfCAvL25hbWVzcGFjZTo6KilbYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTFdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxsYW5nLTQtSUFJSy5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGxhbmctNC1JQUlLLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDA2NDA5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxsYW5nLTQtSUFJSy5vdXRwdXQKQEAgLTAsMCArMSw1IEBACis8aWV0ZjplMTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmxhbmc9IkVOIj4KKyAgICAgICAgIDxpZXRmOmUxMTE+PC9pZXRmOmUxMTE+CisgICAgICA8L2lldGY6ZTExPjxpZXRmOmUxMiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiBhdD0iMiIgeG1sOmxhbmc9IkVOIj4KKyAgICAgICAgIDxpZXRmOmUxMjE+PC9pZXRmOmUxMjE+CisgICAgICA8L2lldGY6ZTEyPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy00LUlCTS5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGxhbmctNC1JQk0ub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMDY0MDkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGxhbmctNC1JQk0ub3V0cHV0CkBAIC0wLDAgKzEsNSBAQAorPGlldGY6ZTExIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpsYW5nPSJFTiI+CisgICAgICAgICA8aWV0ZjplMTExPjwvaWV0ZjplMTExPgorICAgICAgPC9pZXRmOmUxMT48aWV0ZjplMTIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgYXQ9IjIiIHhtbDpsYW5nPSJFTiI+CisgICAgICAgICA8aWV0ZjplMTIxPjwvaWV0ZjplMTIxPgorICAgICAgPC9pZXRmOmUxMj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGxhbmctNC1TVU4ub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxsYW5nLTQtU1VOLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDA2NDA5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxsYW5nLTQtU1VOLm91dHB1dApAQCAtMCwwICsxLDUgQEAKKzxpZXRmOmUxMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6bGFuZz0iRU4iPgorICAgICAgICAgPGlldGY6ZTExMT48L2lldGY6ZTExMT4KKyAgICAgIDwvaWV0ZjplMTE+PGlldGY6ZTEyIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIGF0PSIyIiB4bWw6bGFuZz0iRU4iPgorICAgICAgICAgPGlldGY6ZTEyMT48L2lldGY6ZTEyMT4KKyAgICAgIDwvaWV0ZjplMTI+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxsYW5nLTQtVVBDLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy00LVVQQy5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzAwNjQwOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy00LVVQQy5vdXRwdXQKQEAgLTAsMCArMSw1IEBACis8aWV0ZjplMTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmxhbmc9IkVOIj4KKyAgICAgICAgIDxpZXRmOmUxMTE+PC9pZXRmOmUxMTE+CisgICAgICA8L2lldGY6ZTExPjxpZXRmOmUxMiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiBhdD0iMiIgeG1sOmxhbmc9IkVOIj4KKyAgICAgICAgIDxpZXRmOmUxMjE+PC9pZXRmOmUxMjE+CisgICAgICA8L2lldGY6ZTEyPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy00Lm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy00Lm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDA2NDA5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxsYW5nLTQub3V0cHV0CkBAIC0wLDAgKzEsNSBAQAorPGlldGY6ZTExIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpsYW5nPSJFTiI+CisgICAgICAgICA8aWV0ZjplMTExPjwvaWV0ZjplMTExPgorICAgICAgPC9pZXRmOmUxMT48aWV0ZjplMTIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgYXQ9IjIiIHhtbDpsYW5nPSJFTiI+CisgICAgICAgICA8aWV0ZjplMTIxPjwvaWV0ZjplMTIxPgorICAgICAgPC9pZXRmOmUxMj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGxhbmctNC54cGF0aCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sbGFuZy00LnhwYXRoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkY2FjNzAKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGxhbmctNC54cGF0aApAQCAtMCwwICsxIEBACisoLy8uIHwgLy9AKiB8IC8vbmFtZXNwYWNlOjoqKVthbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMSBvciBhbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMl0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbGxhbmctaW5wdXQueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxsYW5nLWlucHV0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWI1YjZhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxsYW5nLWlucHV0LnhtbApAQCAtMCwwICsxLDE1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGlldGY6YzE0bjExWG1sbGFuZyB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiAKK3htbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPgorICAgPGlldGY6ZTEgeG1sOmxhbmc9IkVOIj4KKyAgICAgIDxpZXRmOmUxMT4KKyAgICAgICAgIDxpZXRmOmUxMTEgLz4KKyAgICAgIDwvaWV0ZjplMTE+CisgICAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgICAgPGlldGY6ZTEyMSAvPgorICAgICAgPC9pZXRmOmUxMj4KKyAgIDwvaWV0ZjplMT4KKyAgIDxpZXRmOmUyID4KKyAgICAgIDxpZXRmOmUyMSAvPgorICAgPC9pZXRmOmUyPgorPC9pZXRmOmMxNG4xMVhtbGxhbmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS0xLUlBSUsub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS0xLUlBSUsub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0OTMwNmYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbHNwYWNlLTEtSUFJSy5vdXRwdXQKQEAgLTAsMCArMSw4IEBACis8aWV0ZjplMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6c3BhY2U9InRydWUiPgorICAgICAgPGlldGY6ZTExPgorICAgICAgICAgPGlldGY6ZTExMT48L2lldGY6ZTExMT4KKyAgICAgIDwvaWV0ZjplMTE+CisgICAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgICAgPGlldGY6ZTEyMT48L2lldGY6ZTEyMT4KKyAgICAgIDwvaWV0ZjplMTI+CisgICA8L2lldGY6ZTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS0xLUlCTS5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbHNwYWNlLTEtSUJNLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDkzMDZmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS0xLUlCTS5vdXRwdXQKQEAgLTAsMCArMSw4IEBACis8aWV0ZjplMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6c3BhY2U9InRydWUiPgorICAgICAgPGlldGY6ZTExPgorICAgICAgICAgPGlldGY6ZTExMT48L2lldGY6ZTExMT4KKyAgICAgIDwvaWV0ZjplMTE+CisgICAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgICAgPGlldGY6ZTEyMT48L2lldGY6ZTEyMT4KKyAgICAgIDwvaWV0ZjplMTI+CisgICA8L2lldGY6ZTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS0xLVNVTi5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbHNwYWNlLTEtU1VOLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDkzMDZmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS0xLVNVTi5vdXRwdXQKQEAgLTAsMCArMSw4IEBACis8aWV0ZjplMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6c3BhY2U9InRydWUiPgorICAgICAgPGlldGY6ZTExPgorICAgICAgICAgPGlldGY6ZTExMT48L2lldGY6ZTExMT4KKyAgICAgIDwvaWV0ZjplMTE+CisgICAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgICAgPGlldGY6ZTEyMT48L2lldGY6ZTEyMT4KKyAgICAgIDwvaWV0ZjplMTI+CisgICA8L2lldGY6ZTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS0xLVVQQy5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbHNwYWNlLTEtVVBDLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDkzMDZmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS0xLVVQQy5vdXRwdXQKQEAgLTAsMCArMSw4IEBACis8aWV0ZjplMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6c3BhY2U9InRydWUiPgorICAgICAgPGlldGY6ZTExPgorICAgICAgICAgPGlldGY6ZTExMT48L2lldGY6ZTExMT4KKyAgICAgIDwvaWV0ZjplMTE+CisgICAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgICAgPGlldGY6ZTEyMT48L2lldGY6ZTEyMT4KKyAgICAgIDwvaWV0ZjplMTI+CisgICA8L2lldGY6ZTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS0xLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sc3BhY2UtMS5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ5MzA2ZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sc3BhY2UtMS5vdXRwdXQKQEAgLTAsMCArMSw4IEBACis8aWV0ZjplMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6c3BhY2U9InRydWUiPgorICAgICAgPGlldGY6ZTExPgorICAgICAgICAgPGlldGY6ZTExMT48L2lldGY6ZTExMT4KKyAgICAgIDwvaWV0ZjplMTE+CisgICAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgICAgPGlldGY6ZTEyMT48L2lldGY6ZTEyMT4KKyAgICAgIDwvaWV0ZjplMTI+CisgICA8L2lldGY6ZTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS0xLnhwYXRoIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS0xLnhwYXRoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MzM2Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbHNwYWNlLTEueHBhdGgKQEAgLTAsMCArMSBAQAorKC8vLiB8IC8vQCogfCAvL25hbWVzcGFjZTo6KikgW2FuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTFdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS0yLUlBSUsub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS0yLUlBSUsub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjYTY3YjMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbHNwYWNlLTItSUFJSy5vdXRwdXQKQEAgLTAsMCArMSwzIEBACis8aWV0ZjplMiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKyAgICAgIDxpZXRmOmUyMT48L2lldGY6ZTIxPgorICAgPC9pZXRmOmUyPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sc3BhY2UtMi1JQk0ub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS0yLUlCTS5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNhNjdiMwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sc3BhY2UtMi1JQk0ub3V0cHV0CkBAIC0wLDAgKzEsMyBAQAorPGlldGY6ZTIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisgICAgICA8aWV0ZjplMjE+PC9pZXRmOmUyMT4KKyAgIDwvaWV0ZjplMj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbHNwYWNlLTItU1VOLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sc3BhY2UtMi1TVU4ub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjYTY3YjMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbHNwYWNlLTItU1VOLm91dHB1dApAQCAtMCwwICsxLDMgQEAKKzxpZXRmOmUyIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPgorICAgICAgPGlldGY6ZTIxPjwvaWV0ZjplMjE+CisgICA8L2lldGY6ZTI+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS0yLVVQQy5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbHNwYWNlLTItVVBDLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2E2N2IzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS0yLVVQQy5vdXRwdXQKQEAgLTAsMCArMSwzIEBACis8aWV0ZjplMiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKyAgICAgIDxpZXRmOmUyMT48L2lldGY6ZTIxPgorICAgPC9pZXRmOmUyPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sc3BhY2UtMi5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbHNwYWNlLTIub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjYTY3YjMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbHNwYWNlLTIub3V0cHV0CkBAIC0wLDAgKzEsMyBAQAorPGlldGY6ZTIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisgICAgICA8aWV0ZjplMjE+PC9pZXRmOmUyMT4KKyAgIDwvaWV0ZjplMj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbHNwYWNlLTIueHBhdGggYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbHNwYWNlLTIueHBhdGgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzYwNDI1MQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sc3BhY2UtMi54cGF0aApAQCAtMCwwICsxIEBACisoLy8uIHwgLy9AKiB8IC8vbmFtZXNwYWNlOjoqKSBbYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMl0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbHNwYWNlLTMtSUFJSy5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbHNwYWNlLTMtSUFJSy5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJhZmQ5MAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sc3BhY2UtMy1JQUlLLm91dHB1dApAQCAtMCwwICsxLDMgQEAKKzxpZXRmOmUxMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6c3BhY2U9InRydWUiPgorICAgICAgICAgPGlldGY6ZTExMT48L2lldGY6ZTExMT4KKyAgICAgIDwvaWV0ZjplMTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS0zLUlCTS5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbHNwYWNlLTMtSUJNLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmFmZDkwCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS0zLUlCTS5vdXRwdXQKQEAgLTAsMCArMSwzIEBACis8aWV0ZjplMTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOnNwYWNlPSJ0cnVlIj4KKyAgICAgICAgIDxpZXRmOmUxMTE+PC9pZXRmOmUxMTE+CisgICAgICA8L2lldGY6ZTExPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sc3BhY2UtMy1TVU4ub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS0zLVNVTi5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJhZmQ5MAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sc3BhY2UtMy1TVU4ub3V0cHV0CkBAIC0wLDAgKzEsMyBAQAorPGlldGY6ZTExIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpzcGFjZT0idHJ1ZSI+CisgICAgICAgICA8aWV0ZjplMTExPjwvaWV0ZjplMTExPgorICAgICAgPC9pZXRmOmUxMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbHNwYWNlLTMtVVBDLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sc3BhY2UtMy1VUEMub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyYWZkOTAKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbHNwYWNlLTMtVVBDLm91dHB1dApAQCAtMCwwICsxLDMgQEAKKzxpZXRmOmUxMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6c3BhY2U9InRydWUiPgorICAgICAgICAgPGlldGY6ZTExMT48L2lldGY6ZTExMT4KKyAgICAgIDwvaWV0ZjplMTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS0zLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sc3BhY2UtMy5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJhZmQ5MAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sc3BhY2UtMy5vdXRwdXQKQEAgLTAsMCArMSwzIEBACis8aWV0ZjplMTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOnNwYWNlPSJ0cnVlIj4KKyAgICAgICAgIDxpZXRmOmUxMTE+PC9pZXRmOmUxMTE+CisgICAgICA8L2lldGY6ZTExPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sc3BhY2UtMy54cGF0aCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sc3BhY2UtMy54cGF0aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTA3ZmUyCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS0zLnhwYXRoCkBAIC0wLDAgKzEgQEAKKygvLy4gfCAvL0AqIHwgLy9uYW1lc3BhY2U6OiopIFthbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMV0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbHNwYWNlLTQtSUFJSy5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbHNwYWNlLTQtSUFJSy5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdjZTkzMwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sc3BhY2UtNC1JQUlLLm91dHB1dApAQCAtMCwwICsxLDUgQEAKKzxpZXRmOmUxMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6c3BhY2U9InRydWUiPgorICAgICAgICAgPGlldGY6ZTExMT48L2lldGY6ZTExMT4KKyAgICAgIDwvaWV0ZjplMTE+PGlldGY6ZTEyIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIGF0PSIyIiB4bWw6c3BhY2U9InRydWUiPgorICAgICAgICAgPGlldGY6ZTEyMT48L2lldGY6ZTEyMT4KKyAgICAgIDwvaWV0ZjplMTI+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS00LUlCTS5vdXRwdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbHNwYWNlLTQtSUJNLm91dHB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2NlOTMzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS00LUlCTS5vdXRwdXQKQEAgLTAsMCArMSw1IEBACis8aWV0ZjplMTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOnNwYWNlPSJ0cnVlIj4KKyAgICAgICAgIDxpZXRmOmUxMTE+PC9pZXRmOmUxMTE+CisgICAgICA8L2lldGY6ZTExPjxpZXRmOmUxMiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiBhdD0iMiIgeG1sOnNwYWNlPSJ0cnVlIj4KKyAgICAgICAgIDxpZXRmOmUxMjE+PC9pZXRmOmUxMjE+CisgICAgICA8L2lldGY6ZTEyPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sc3BhY2UtNC1TVU4ub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS00LVNVTi5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdjZTkzMwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sc3BhY2UtNC1TVU4ub3V0cHV0CkBAIC0wLDAgKzEsNSBAQAorPGlldGY6ZTExIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpzcGFjZT0idHJ1ZSI+CisgICAgICAgICA8aWV0ZjplMTExPjwvaWV0ZjplMTExPgorICAgICAgPC9pZXRmOmUxMT48aWV0ZjplMTIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgYXQ9IjIiIHhtbDpzcGFjZT0idHJ1ZSI+CisgICAgICAgICA8aWV0ZjplMTIxPjwvaWV0ZjplMTIxPgorICAgICAgPC9pZXRmOmUxMj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbHNwYWNlLTQtVVBDLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sc3BhY2UtNC1VUEMub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3Y2U5MzMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbHNwYWNlLTQtVVBDLm91dHB1dApAQCAtMCwwICsxLDUgQEAKKzxpZXRmOmUxMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6c3BhY2U9InRydWUiPgorICAgICAgICAgPGlldGY6ZTExMT48L2lldGY6ZTExMT4KKyAgICAgIDwvaWV0ZjplMTE+PGlldGY6ZTEyIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIGF0PSIyIiB4bWw6c3BhY2U9InRydWUiPgorICAgICAgICAgPGlldGY6ZTEyMT48L2lldGY6ZTEyMT4KKyAgICAgIDwvaWV0ZjplMTI+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS00Lm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sc3BhY2UtNC5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdjZTkzMwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sc3BhY2UtNC5vdXRwdXQKQEAgLTAsMCArMSw1IEBACis8aWV0ZjplMTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOnNwYWNlPSJ0cnVlIj4KKyAgICAgICAgIDxpZXRmOmUxMTE+PC9pZXRmOmUxMTE+CisgICAgICA8L2lldGY6ZTExPjxpZXRmOmUxMiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiBhdD0iMiIgeG1sOnNwYWNlPSJ0cnVlIj4KKyAgICAgICAgIDxpZXRmOmUxMjE+PC9pZXRmOmUxMjE+CisgICAgICA8L2lldGY6ZTEyPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sc3BhY2UtNC54cGF0aCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sc3BhY2UtNC54cGF0aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmM1YjUwCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL2MxNG4xMS94bWxzcGFjZS00LnhwYXRoCkBAIC0wLDAgKzEgQEAKKygvLy4gfCAvL0AqIHwgLy9uYW1lc3BhY2U6OiopIFthbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMSBvciBhbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMl0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbHNwYWNlLWlucHV0LnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC9jMTRuMTEveG1sc3BhY2UtaW5wdXQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNmRjZGYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AvYzE0bjExL3htbHNwYWNlLWlucHV0LnhtbApAQCAtMCwwICsxLDE1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGlldGY6YzE0bjExWG1sU3BhY2VEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIAoreG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisgICA8aWV0ZjplMSB4bWw6c3BhY2U9InRydWUiPgorICAgICAgPGlldGY6ZTExPgorICAgICAgICAgPGlldGY6ZTExMSAvPgorICAgICAgPC9pZXRmOmUxMT4KKyAgICAgIDxpZXRmOmUxMiBhdD0iMiI+CisgICAgICAgICA8aWV0ZjplMTIxIC8+CisgICAgICA8L2lldGY6ZTEyPgorICAgPC9pZXRmOmUxPgorICAgPGlldGY6ZTIgPgorICAgICAgPGlldGY6ZTIxIC8+CisgICA8L2lldGY6ZTI+Cis8L2lldGY6YzE0bjExWG1sU3BhY2VEb2MxPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC90ZXN0Y2FzZXMuaHRtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC90ZXN0Y2FzZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjJlMzcyCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3Rlc3RjYXNlcy5odG1sCkBAIC0wLDAgKzEsMzc1NCBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIKKyAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CisKKzxodG1sIGxhbmc9IiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbDpsYW5nPSIiPgorPGhlYWQ+CisgIDxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0KKyAgIkhUTUwgVGlkeSBmb3IgU29sYXJpcyAodmVycyAxOSBTZXB0ZW1iZXIgMjAwNyksIHNlZSB3d3cudzMub3JnIiAvPgorICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9CisgICJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIgLz4KKyAgPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIGh0dHAtZXF1aXY9CisgICJDb250ZW50LVR5cGUiIC8+CisKKyAgPHRpdGxlPlRlc3QgQ2FzZXMgZm9yIEMxNE4gMS4xIGFuZCBYTUxEU2lnCisgIEludGVyb3BlcmFiaWxpdHk8L3RpdGxlPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorLyo8IVtDREFUQVsqLworICBjb2RlICAgICAgICAgICB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IH0KKworICBkaXYuY29uc3RyYWludCwKKyAgZGl2Lmlzc3VlLAorICBkaXYubm90ZSwKKyAgZGl2Lm5vdGljZSAgICAgeyBtYXJnaW4tbGVmdDogMmVtOyB9CisKKworICBsaSBwICAgICAgICAgICB7IG1hcmdpbi10b3A6IDAuM2VtOworICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjNlbTsgfQorICAvKl1dPiovCisgIDwvc3R5bGU+CisgIDxsaW5rIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIGhyZWY9CisgICJodHRwOi8vd3d3LnczLm9yZy9TdHlsZVNoZWV0cy9UUi9iYXNlLmNzcyIgLz4KKzwvaGVhZD4KKworPGJvZHk+CisgIDxkaXYgY2xhc3M9ImhlYWQiPgorICAgIDxwPjxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLyI+PGltZyB3aWR0aD0iNzIiIGhlaWdodD0iNDgiCisgICAgYWx0PSJXM0MiIHNyYz0iaHR0cDovL3d3dy53My5vcmcvSWNvbnMvdzNjX2hvbWUiIC8+PC9hPjwvcD4KKworICAgIDxoMT5UZXN0IENhc2VzIGZvciBDMTROIDEuMSBhbmQgWE1MRFNpZyBJbnRlcm9wZXJhYmlsaXR5PC9oMT4KKworICAgIDxoMj4wOCBKYW51YXJ5IDIwMDg8L2gyPgorCisgICAgPGRsPgorICAgICAgPGR0PlRoaXMgdmVyc2lvbjo8L2R0PgorCisgICAgICA8ZHQ+TGF0ZXN0IHZlcnNpb246PC9kdD4KKworICAgICAgPGR0PlByZXZpb3VzIHZlcnNpb25zOjwvZHQ+CisKKyAgICAgIDxkdD5BdXRob3JzOjwvZHQ+CisKKyAgICAgIDxkZD5KdWFuIENhcmxvcyBDcnVlbGxhcywgVVBDIDxhIGhyZWY9CisgICAgICAibWFpbHRvOmNydWVsbGFzQGFjLnVwYy5lcyI+Jmx0O2NydWVsbGFzQGFjLnVwYy5lcyZndDs8L2E+PC9kZD4KKworICAgICAgPGRkPktvbnJhZCBMYW56LCBBLVNJVCA8YSBocmVmPQorICAgICAgIm1haWx0bzpLb25yYWQuTGFuekBpYWlrLnR1Z3Jhei5hdCI+Jmx0O0tvbnJhZC5MYW56QGlhaWsudHVncmF6LmF0Jmd0OzwvYT48L2RkPgorCisgICAgICA8ZGQ+U2VhbiBNdWxsYW4sIFN1biBNaWNyb3N5c3RlbXMgPGEgaHJlZj0KKyAgICAgICJtYWlsdG86U2Vhbi5NdWxsYW5AU3VuLkNPTSI+Jmx0O1NlYW4uTXVsbGFuQFN1bi5DT00mZ3Q7PC9hPjwvZGQ+CisKKyAgICAgIDxkdD5FZGl0b3JzOjwvZHQ+CisKKyAgICAgIDxkZD5KdWFuIENhcmxvcyBDcnVlbGxhcywgVVBDIDxhIGhyZWY9CisgICAgICAibWFpbHRvOmNydWVsbGFzQGFjLnVwYy5lcyI+Jmx0O2NydWVsbGFzQGFjLnVwYy5lcyZndDs8L2E+PC9kZD4KKworICAgICAgPGRkPktvbnJhZCBMYW56LCBBLVNJVCA8YSBocmVmPQorICAgICAgIm1haWx0bzpLb25yYWQuTGFuekBpYWlrLnR1Z3Jhei5hdCI+Jmx0O0tvbnJhZC5MYW56QGlhaWsudHVncmF6LmF0Jmd0OzwvYT48L2RkPgorCisgICAgICA8ZGQ+U2VhbiBNdWxsYW4sIFN1biBNaWNyb3N5c3RlbXMgPGEgaHJlZj0KKyAgICAgICJtYWlsdG86U2Vhbi5NdWxsYW5AU3VuLkNPTSI+Jmx0O1NlYW4uTXVsbGFuQFN1bi5DT00mZ3Q7PC9hPjwvZGQ+CisKKyAgICAgIDxkdD5Db250cmlidXRvcnM6PC9kdD4KKworICAgICAgPGRkPlByYXRpayBEYXR0YSwgT3JhY2xlIDxhIGhyZWY9CisgICAgICAibWFpbHRvOnByYXRpay5kYXR0YUBvcmFjbGUuY29tIj4mbHQ7cHJhdGlrLmRhdHRhQG9yYWNsZS5jb20mZ3Q7PC9hPjwvZGQ+CisKKyAgICAgIDxkZD5GcmVkZXJpY2sgSGlyc2NoLCBOb2tpYSA8YSBocmVmPQorICAgICAgIm1haWx0bzpmcmVkZXJpY2suaGlyc2NoQG5va2lhLmNvbSI+Jmx0O2ZyZWRlcmljay5oaXJzY2hAbm9raWEuY29tJmd0OzwvYT48L2RkPgorCisgICAgICA8ZGQ+QnJ1Y2UgUmljaCwgSUJNIDxhIGhyZWY9CisgICAgICAibWFpbHRvOmJyaWNoQHVzLmlibS5jb20iPiZsdDticmljaEB1cy5pYm0uY29tJmd0OzwvYT48L2RkPgorCisgICAgICA8ZGQ+VGhvbWFzIFJvZXNzbGVyLCBXM0MgPGEgaHJlZj0KKyAgICAgICJtYWlsdG86dGxyQHczLm9yZyI+Jmx0O3RsckB3My5vcmcmZ3Q7PC9hPjwvZGQ+CisgICAgPC9kbD4KKworICAgIDxwIGNsYXNzPSJjb3B5cmlnaHQiPkNvcHlyaWdodKCpoDIwMDigPGEgaHJlZj0KKyAgICAiaHR0cDovL3d3dy53My5vcmcvIj48YWJiciB0aXRsZT0KKyAgICAiV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSI+VzNDPC9hYmJyPjwvYT4gLCBBbGwgUmlnaHRzCisgICAgUmVzZXJ2ZWQuPC9wPgorICA8L2Rpdj4KKyAgPGhyIC8+CisKKyAgPGRpdj4KKyAgICA8aDI+PGEgbmFtZT0iYWJzdHJhY3QiIGlkPSJhYnN0cmFjdCI+QWJzdHJhY3Q8L2E+PC9oMj4KKworICAgIDxwPlRoaXMgZG9jdW1lbnQgZGVmaW5lcyBpbnRlcm9wZXJhYmlsaXR5IHRlc3QgY2FzZXMgZm9yCisgICAgQ2Fub25pY2FsIFhNTCAxLjEgPGEgaHJlZj0iI1hNTC1DMTROMS4xIj5bWE1MLUMxNE4xLjFdPC9hPiBhbmQKKyAgICBYTUwgU2lnbmF0dXJlIFN5bnRheCBhbmQgUHJvY2Vzc2luZywgU2Vjb25kIEVkaXRpb24gPGEgaHJlZj0KKyAgICAiI1hNTERTSUcyIj5bWE1MRFNJRzJdPC9hPi4gVGhlIGNoYW5nZXMgdGVzdGVkIGluY2x1ZGUgQzE0TjExCisgICAgaGFuZGxpbmcgb2YgYXR0cmlidXRlcyBpbiB0aGUgWE1MIG5hbWVzcGFjZSwgaW5jbHVkaW5nIHhtbDppZAorICAgIGFuZCB4bWw6YmFzZSwgYXBwcm9wcmlhdGUgQzE0TjExIG5vZGVzZXQgdG8gb2N0ZXQgc3RyZWFtCisgICAgdHJhbnNmb3JtIHByb2Nlc3NpbmcsIG1vZGlmaWNhdGlvbnMgdG8gUkZDIDM5ODYgZG90IHNlZ21lbnQKKyAgICBwcm9jZXNzaW5nIGZvciBDMTROMTEsIGFuZCBSRkMgNDUxNCBzdHJpbmcgZW5jb2Rpbmcgb2YKKyAgICBEaXN0aW5ndWlzaGVkIE5hbWVzLiBUaGUgdGVzdHMgaW5jbHVkZSBzdGFuZGFsb25lIEMxNE4xMSB0ZXN0cworICAgIGFzIHdlbGwgYXMgdGVzdHMgaW50ZWdyYXRlZCB3aXRoIFhNTCBzaWduYXR1cmUgZ2VuZXJhdGlvbiBhbmQKKyAgICB2YWxpZGF0aW9uLiBUaGlzIGRvY3VtZW50IGFsc28gaW5jbHVkZXMgZWFybGllciB0ZXN0IGNhc2VzIHVzZWQKKyAgICBpbiBYTUwgU2lnbmF0dXJlIDxhIGhyZWY9IiNYTUxEU0lHIj5bWE1MRFNJR108L2E+IGZvcgorICAgIHJlZ3Jlc3Npb24gdGVzdGluZy48L3A+CisgIDwvZGl2PgorCisgIDxkaXY+CisgICAgPGgyPjxhIG5hbWU9InN0YXR1cyIgaWQ9InN0YXR1cyI+U3RhdHVzIG9mIHRoaXMKKyAgICBEb2N1bWVudDwvYT48L2gyPgorCisgICAgPHA+VGhpcyBkb2N1bWVudCBpcyBhIHdvcmtpbmcgZG9jdW1lbnQgb2YgdGhlIDxhIGhyZWY9CisgICAgImh0dHA6Ly93d3cudzMub3JnIj5Xb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtPC9hPiBYTUwgU2VjdXJpdHkKKyAgICBTcGVjaWZpY2F0aW9ucyBNYWludGVuYW5jZSBXb3JraW5nIEdyb3VwLiBGb3IgZnVydGhlciBkZXRhaWxzCisgICAgb2YgdGhlIGFjdGl2aXR5IG9mIHRoaXMgZ3JvdXAsIHBsZWFzZSBzZWUgdGhlIDxhIGhyZWY9CisgICAgImh0dHA6Ly93d3cudzMub3JnLzIwMDcveG1sc2VjLyI+WE1MIFNlY3VyaXR5IFNwZWNpZmljYXRpb25zCisgICAgTWFpbnRlbmFuY2UgV29ya2luZyBHcm91cC48L2E+PC9wPgorICA8L2Rpdj4KKworICA8ZGl2IGNsYXNzPSJ0b2MiPgorICAgIDxoMj48YSBuYW1lPSJjb250ZW50cyIgaWQ9ImNvbnRlbnRzIj5UYWJsZSBvZiBDb250ZW50czwvYT48L2gyPgorCisgICAgPHAgY2xhc3M9InRvYyI+MSA8YSBocmVmPSIjSW50cm9kdWN0aW9uIj5JbnRyb2R1Y3Rpb248L2E+PGJyIC8+CisgICAgoKCgoDEuMSA8YSBocmVmPSIjSW50cm9kdWN0aW9uLVRlc3RDYXNlTm90YXRpb24iPlRlc3QgQ2FzZQorICAgIE5vdGF0aW9uPC9hPjxiciAvPgorICAgIKCgoKAxLjIgPGEgaHJlZj0iI0ludHJvZHVjdGlvbi5SZWNvbW1lbmRhdGlvblJlZnMiPkNvZGVzIGZvcgorICAgIFJlY29tbWVuZGF0aW9uIFJlZmVyZW5jZXMgKFJlYywgU3ViUmVjKTwvYT48YnIgLz4KKyAgICCgoKCgMS4zIDxhIGhyZWY9IiNJbnRyb2R1Y3Rpb24uSXNzdWVzQ29kZXMiPkNvZGVzIGZvciBJc3N1ZXMKKyAgICAoU3BlY2lmaWNJc3N1ZSkgYW5kIFN1Yi1Jc3N1ZXMgKFNwZWNpZmljU3ViSXNzdWUpPC9hPjxiciAvPgorICAgIDIgPGEgaHJlZj0iI1Rlc3RDYXNlcy1TcGVjIj5UZXN0IENhc2VzIHNwZWNpZmljYXRpb248L2E+PGJyIC8+CisgICAgoKCgoDIuMSA8YSBocmVmPSIjVGVzdENhc2VzLUxlZ2FjeSI+TGVnYWN5IFhNTERTaWcgV29ya2luZworICAgIEdyb3VwIFRlc3QgQ2FzZXM8L2E+PGJyIC8+CisgICAgoKCgoDIuMiA8YSBocmVmPSIjVGVzdENhc2VzLUMxNG4xMSI+VGVzdCBDYXNlcyBmb3IKKyAgICBDYW5vbmljYWxpemF0aW9uIDEuMTwvYT48YnIgLz4KKyAgICCgoKCgoKCgoDIuMi4xIDxhIGhyZWY9IiNYTUxMQU5HIj5UZXN0IENhc2VzIGZvciB4bWw6bGFuZworICAgIGF0dHJpYnV0ZTwvYT48YnIgLz4KKyAgICCgoKCgoKCgoDIuMi4yIDxhIGhyZWY9IiNYTUxTUEFDRSI+VGVzdCBDYXNlcyBmb3IgeG1sOnNwYWNlCisgICAgYXR0cmlidXRlPC9hPjxiciAvPgorICAgIKCgoKCgoKCgMi4yLjMgPGEgaHJlZj0iI1hNTElEIj5UZXN0IENhc2VzIGZvciB4bWw6aWQKKyAgICBhdHRyaWJ1dGU8L2E+PGJyIC8+CisgICAgoKCgoKCgoKAyLjIuNCA8YSBocmVmPSIjWE1MQkFTRSI+VGVzdCBDYXNlcyBmb3IgeG1sOmJhc2UKKyAgICBhdHRyaWJ1dGU8L2E+PGJyIC8+CisgICAgoKCgoKCgoKCgoKCgMi4yLjQuMSA8YSBocmVmPSIjWE1MQkFTRV9QUk9QQUdBVElPTiI+VGVzdCBDYXNlcworICAgIGZvciBjaGVja2luZyB4bWw6YmFzZSBhdHRyaWJ1dGUgcHJvcGFnYXRpb248L2E+PGJyIC8+CisgICAgoKCgoKCgoKCgoKCgMi4yLjQuMiA8YSBocmVmPSIjWE1MQkFTRV9DMTROMTFTUEVDIj5UZXN0IENhc2VzCisgICAgZm9yIGNoZWNraW5nIFhNTC1DMTROMS4xIHNwZWNpZmljYXRpb24gdGVzdHM8L2E+PGJyIC8+CisgICAgoKCgoKCgoKAyLjIuNSA8YSBocmVmPSIjWE1MQkFTRV9BUFBFTkRJWEEiPlRlc3QgQ2FzZXMgZm9yCisgICAgY2hlY2tpbmcgZXhhbXBsZXMgaW4gdGhlIFhNTC1DMTROMS4xIEFwcGVuZGl4PC9hPjxiciAvPgorICAgIKCgoKAyLjMgPGEgaHJlZj0iI1Rlc3RDYXNlcy1YTUxEU2lnIj5UZXN0IENhc2VzIGZvcgorICAgIFhNTERTaWc8L2E+PGJyIC8+CisgICAgoKCgoKCgoKAyLjMuMSA8YSBocmVmPSIjVGVzdENhc2VzLVhNTERTaWctQzE0bjExIj5UZXN0IENhc2VzCisgICAgZm9yIEMxNE4gMS4xIGluIFhNTERTaWc8L2E+PGJyIC8+CisgICAgoKCgoKCgoKAyLjMuMiA8YSBocmVmPSIjVGVzdENhc2VzLURlZmF1bHRDYW4iPlRlc3QgQ2FzZXMgb24KKyAgICBub2Rlc2V0IHRvIG9jdGV0LXN0cmVhbSBjb252ZXJzaW9uIGJ5IEMxNG4gMS4xIGV4cGxpY2l0bHkKKyAgICByZWZsZWN0ZWQgaW4gdGhlIGNoYWluIG9mIHRyYW5zZm9ybXM8L2E+PGJyIC8+CisgICAgoKCgoKCgoKAyLjMuMyA8YSBocmVmPSIjVGVzdENhc2VzLVNjaGVtYUJhc2VkWFBvaW50ZXJzIj5UZXN0CisgICAgQ2FzZXMgb24gc2NoZW1hIGJhc2VkIFhQb2ludGVycyBhbmQgY2Fub25pY2FsaXphdGlvbjwvYT48YnIgLz4KKyAgICCgoKCgoKCgoDIuMy40IDxhIGhyZWY9IiNUZXN0Q2FzZXMtRGlzdGluZ3Vpc2hlZE5hbWUiPlRlc3QgQ2FzZXMKKyAgICBvbiBTdHJpbmcgZW5jb2Rpbmcgb2YgRGlzdGluZ3Vpc2hlZCBOYW1lczwvYT48YnIgLz4KKyAgICCgoKCgoKCgoKCgoKAyLjMuNC4xIDxhIGhyZWY9CisgICAgIiNUZXN0Q2FzZXMtRGlzdGluZ3Vpc2hlZE5hbWUtUkZDMjI1My1SRkM0NTE0Ij5UZXN0IENhc2VzIG9uCisgICAgZGlmZmVyZW5jZXMgaWRlbnRpZmllZCBpbiBSRkMgMjI1MyBhbmQgUkZDIDQ1MTQ8L2E+PGJyIC8+CisgICAgoKCgoKCgoKCgoKCgMi4zLjQuMiA8YSBocmVmPQorICAgICIjVGVzdENhc2VzLURpc3Rpbmd1aXNoZWROYW1lLVJGQzQ1MTQiPlRlc3QgQ2FzZXMgZm9yIFJGQworICAgIDQ1MTQ8L2E+PGJyIC8+CisgICAgMyA8YSBocmVmPSIjUmVmZXJlbmNlcyI+UmVmZXJlbmNlczwvYT48YnIgLz48L3A+CisgIDwvZGl2PgorICA8aHIgLz4KKworICA8ZGl2IGNsYXNzPSJib2R5Ij4KKyAgICA8ZGl2IGNsYXNzPSJkaXYxIj4KKyAgICAgIDxoMj48YSBuYW1lPSJJbnRyb2R1Y3Rpb24iIGlkPSJJbnRyb2R1Y3Rpb24iPjwvYT4xCisgICAgICBJbnRyb2R1Y3Rpb248L2gyPgorCisgICAgICA8cD5UaGUgdGVzdCBjYXNlcyBpbmNsdWRlIHN0YW5kYWxvbmUgQzE0TiAxLjEgdGVzdHMgYW5kIHRlc3QKKyAgICAgIGNhc2VzIGludm9sdmluZyBYTUwgc2lnbmF0dXJlIGdlbmVyYXRpb24gYW5kIHZhbGlkYXRpb24uIFhNTAorICAgICAgc2lnbmF0dXJlcyBhcmUgZ2VuZXJhdGVkIGFjY29yZGluZyB0byB0aGUgZGV0YWlscyBzcGVjaWZpZWQKKyAgICAgIGluIHRoaXMgZG9jdW1lbnQuPC9wPgorCisgICAgICA8cD5BbGwgdGhlIHRlc3QgY2FzZXMgYXJlIHBvc2l0aXZlIChzaWduYXR1cmVzIHRoYXQgYXJlCisgICAgICB2YWxpZCkuPC9wPgorCisgICAgICA8cD5BcHBsaWNhdGlvbnMgc2hvdWxkIHZhbGlkYXRlIHRoZXNlIHNpZ25hdHVyZXMgYW5kIGNoZWNrCisgICAgICB0aGF0IHRoZXkgYXJlIHZhbGlkLjwvcD4KKworICAgICAgPGRpdiBjbGFzcz0iZGl2MiI+CisgICAgICAgIDxoMz48YSBuYW1lPSJJbnRyb2R1Y3Rpb24tVGVzdENhc2VOb3RhdGlvbiIgaWQ9CisgICAgICAgICJJbnRyb2R1Y3Rpb24tVGVzdENhc2VOb3RhdGlvbiI+PC9hPjEuMSBUZXN0IENhc2UKKyAgICAgICAgTm90YXRpb248L2gzPgorCisgICAgICAgIDxwPlRoaXMgc2VjdGlvbiBzdW1tYXJpemVzIHRoZSBub3RhdGlvbiB1c2VkIGZvcgorICAgICAgICBpZGVudGlmaWNhdGlvbiBvZiB0ZXN0IGNhc2VzLjwvcD4KKworICAgICAgICA8cD5BIHRlc3QgY2FzZSBpZGVudGlmaWVyIG1hdGNoZXMgdGhlIGZvbGxvd2luZyBwYXR0ZXJuLAorICAgICAgICBhbmQgdGhlIHN5bnRheCBmb3IgZGVzY3JpYmluZyB0aGUgcGF0dGVybiBpcyBib3Jyb3dlZCBmcm9tCisgICAgICAgIDxhIGhyZWY9CisgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94bWxkc2lnLWNvcmUvI3NlYy1PdmVydmlldyI+c2VjdGlvbgorICAgICAgICAyLjA8L2E+IG9mIDxhIGhyZWY9IiNYTUxEU0lHIj5bWE1MRFNJR108L2E+ICh3aGVyZSAiPyIKKyAgICAgICAgZGVub3RlcyB6ZXJvIG9yIG9uZSBvY2N1cnJlbmNlOyAiKyIgZGVub3RlcyBvbmUgb3IgbW9yZQorICAgICAgICBvY2N1cnJlbmNlczsgIioiIGRlbm90ZXMgemVybyBvciBtb3JlIG9jY3VycmVuY2VzKSBhbmQgInwiCisgICAgICAgIGRlbm90ZXMgYSBjaG9pY2UuPC9wPgorCisgICAgICAgIDx0YWJsZSBzdW1tYXJ5PSJFeGFtcGxlIiB3aWR0aD0iMTAwJSIgYmdjb2xvcj0iIzk5RkZGRiIKKyAgICAgICAgYm9yZGVyPSIxIiBjZWxscGFkZGluZz0iNSIgY2xhc3M9ImVnIj4KKyAgICAgICAgICA8dHI+CisgICAgICAgICAgICA8dGQ+CisgICAgICAgICAgICAgIDxwcmU+CisgIFJlYy8oU3ViUmVjLyk/KFNwZWNpZmljSXNzdWUtKFNwZWNpZmljU3ViSXNzdWUtKT8pK1Rlc3ROdW1iZXIKKzwvcHJlPgorICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8L3RyPgorICAgICAgICA8L3RhYmxlPgorCisgICAgICAgIDxwPlRoZSA8Y29kZT5SZWM8L2NvZGU+IHBhcnQgaWRlbnRpZmllcyB0aGUgc291cmNlCisgICAgICAgIHJlY29tbWVuZGF0aW9uIGZvciB0aGUgdGVzdCBjYXNlLjwvcD4KKworICAgICAgICA8cD5UaGUgPGNvZGU+U3ViUmVjPC9jb2RlPiBwYXJ0IGlkZW50aWZpZXMgYSByZWNvbW1lbmRhdGlvbgorICAgICAgICB0aGF0IGlzIHRlc3RlZCBpbiB0aGUgY29udGV4dCBvZiA8Y29kZT5SZWM8L2NvZGU+LjwvcD4KKworICAgICAgICA8cD5UaGUgPGNvZGU+U3BlY2lmaWNJc3N1ZTwvY29kZT4gcGFydCBpZGVudGlmaWVzIHRoZSBpc3N1ZQorICAgICAgICB0byBiZSB0ZXN0ZWQgYnkgdGhlIHRlc3QgY2FzZS4gVGhlIG9wdGlvbmFsCisgICAgICAgIDxjb2RlPlNwZWNpZmljU3ViSXNzdWU8L2NvZGU+IHBhcnQgZnVydGhlciByZWZpbmVzIHRoZQorICAgICAgICBpc3N1ZSB0byBiZSB0ZXN0ZWQuPC9wPgorCisgICAgICAgIDxwPlRoZSA8Y29kZT5UZXN0TnVtYmVyPC9jb2RlPiBwYXJ0IG51bWJlcnMgdGhlIHRlc3QgY2FzZS4KKyAgICAgICAgSXQgbXVzdCBiZSBhbiBpbnRlZ2VyIG51bWJlciBvciBhbiBpbnRlZ2VyIG51bWJlciBmb2xsb3dlZAorICAgICAgICBieSBhIGxvd2VyY2FzZSBsZXR0ZXIuPC9wPgorCisgICAgICAgIDxwPlRoZSBuZXh0IHNlY3Rpb24gaWRlbnRpZmllcyBjb2RlcyB1c2VkIHRocm91Z2hvdXQgdGhpcworICAgICAgICBkb2N1bWVudC48L3A+CisgICAgICA8L2Rpdj4KKworICAgICAgPGRpdiBjbGFzcz0iZGl2MiI+CisgICAgICAgIDxoMz48YSBuYW1lPSJJbnRyb2R1Y3Rpb24uUmVjb21tZW5kYXRpb25SZWZzIiBpZD0KKyAgICAgICAgIkludHJvZHVjdGlvbi5SZWNvbW1lbmRhdGlvblJlZnMiPjwvYT4xLjIgQ29kZXMgZm9yCisgICAgICAgIFJlY29tbWVuZGF0aW9uIFJlZmVyZW5jZXMgKDxjb2RlPlJlYzwvY29kZT4sCisgICAgICAgIDxjb2RlPlN1YlJlYzwvY29kZT4pPC9oMz4KKworICAgICAgICA8cD5UaGUgZm9sbG93aW5nIGNvZGVzIGFyZSB1c2VkIGZvciBpZGVudGlmeWluZyB0aGUgc291cmNlCisgICAgICAgIHJlY29tbWVuZGF0aW9ucyBmb3IgdGhlIHRlc3QgY2FzZXM6PC9wPgorCisgICAgICAgIDx1bD4KKyAgICAgICAgICA8bGk+CisgICAgICAgICAgICA8cD48Y29kZT5jMTRuMTE8L2NvZGU+IGlkZW50aWZpZXMgdGhlIHN0YW5kYWxvbmUKKyAgICAgICAgICAgIDxhIGhyZWY9IiNYTUwtQzE0TjEuMSI+W1hNTC1DMTROMS4xXTwvYT4gdGVzdAorICAgICAgICAgICAgY2FzZXMuPC9wPgorICAgICAgICAgIDwvbGk+CisKKyAgICAgICAgICA8bGk+CisgICAgICAgICAgICA8cD48Y29kZT54bWxkc2lnPC9jb2RlPiBpZGVudGlmaWVzIHRoZSA8YSBocmVmPQorICAgICAgICAgICAgIiNYTUxEU0lHMiI+W1hNTERTSUcyXTwvYT4gdGVzdCBjYXNlcy48L3A+CisKKyAgICAgICAgICAgIDx1bD4KKyAgICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICAgIDxwPjxjb2RlPmMxNG4xMTwvY29kZT4gaWRlbnRpZmllcyB0aGUgdGVzdCBjYXNlcworICAgICAgICAgICAgICAgIHRoYXQgdGVzdCA8Y29kZT5jMTRuMTE8L2NvZGU+IHdpdGgKKyAgICAgICAgICAgICAgICA8Y29kZT54bWxkc2lnPC9jb2RlPi48L3A+CisgICAgICAgICAgICAgIDwvbGk+CisKKyAgICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICAgIDxwPjxjb2RlPmRuYW1lPC9jb2RlPiBpZGVudGlmaWVzIHRoZSB0ZXN0IGNhc2VzCisgICAgICAgICAgICAgICAgdGhhdCB0ZXN0IDxhIGhyZWY9IiNSRkMtNDUxNCI+W1JGQy00NTE0XTwvYT4gdmVyc3VzCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI1JGQy0yMjUzIj5bUkZDLTIyNTNdPC9hPiB3aXRoCisgICAgICAgICAgICAgICAgPGNvZGU+eG1sZHNpZzwvY29kZT4uPC9wPgorICAgICAgICAgICAgICA8L2xpPgorCisgICAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICA8cD48Y29kZT54cG9pbnRlcjwvY29kZT4gaWRlbnRpZmllcyB0aGUgdGVzdCBjYXNlcworICAgICAgICAgICAgICAgIHRoYXQgdGVzdCA8YSBocmVmPQorICAgICAgICAgICAgICAgICIjWFBvaW50ZXItRnJhbWV3b3JrIj5bWFBvaW50ZXItRnJhbWV3b3JrXTwvYT4sCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI1hQb2ludGVyLUVsZW1lbnQiPltYUG9pbnRlci1FbGVtZW50XTwvYT4KKyAgICAgICAgICAgICAgICBhbmQgPGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiI1hQb2ludGVyLXhwb2ludGVyIj5bWFBvaW50ZXIteHBvaW50ZXJdPC9hPiB3aXRoCisgICAgICAgICAgICAgICAgPGNvZGU+eG1sZHNpZzwvY29kZT4uPC9wPgorICAgICAgICAgICAgICA8L2xpPgorICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICA8L2xpPgorICAgICAgICA8L3VsPgorCisgICAgICAgIDxwIGlkPSJkaXJlY3Rvcnktc3RydWN0dXJlIj5UaGlzIHN0cnVjdHVyZSBpcyByZWZsZWN0ZWQgaW4KKyAgICAgICAgdGhlIGRpcmVjdG9yaWVzIDxhIGhyZWY9Ii4uL2MxNG4xMS8iPmMxNG4xMS88L2E+LCA8YSBocmVmPQorICAgICAgICAiLi4veG1sZHNpZy8iPnhtbGRzaWcvPC9hPiwgPGEgaHJlZj0KKyAgICAgICAgIi4uL3htbGRzaWcvYzE0bjExLyI+eG1sZHNpZy9jMTRuMTEvPC9hPiwgPGEgaHJlZj0KKyAgICAgICAgIi4uL3htbGRzaWcvZG5hbWUvIj54bWxkc2lnL2RuYW1lLzwvYT4gYW5kIDxhIGhyZWY9CisgICAgICAgICIuLi94bWxkc2lnL3hwb2ludGVyLyI+eG1sZHNpZy94cG9pbnRlci88L2E+LjwvcD4KKyAgICAgIDwvZGl2PgorCisgICAgICA8ZGl2IGNsYXNzPSJkaXYyIj4KKyAgICAgICAgPGgzPjxhIG5hbWU9IkludHJvZHVjdGlvbi5Jc3N1ZXNDb2RlcyIgaWQ9CisgICAgICAgICJJbnRyb2R1Y3Rpb24uSXNzdWVzQ29kZXMiPjwvYT4xLjMgQ29kZXMgZm9yIElzc3VlcworICAgICAgICAoPGNvZGU+U3BlY2lmaWNJc3N1ZTwvY29kZT4pIGFuZCBTdWItSXNzdWVzCisgICAgICAgICg8Y29kZT5TcGVjaWZpY1N1Yklzc3VlPC9jb2RlPik8L2gzPgorCisgICAgICAgIDxwPlRoZSBmb2xsb3dpbmcgY29kZXMgYXJlIHVzZWQgZm9yIGlkZW50aWZ5aW5nIHRoZSBpc3N1ZXMKKyAgICAgICAgYW5kIHN1Yi1pc3N1ZXMgZm9yIHRoZSB0ZXN0IGNhc2VzOjwvcD4KKworICAgICAgICA8dWw+CisgICAgICAgICAgPGxpPgorICAgICAgICAgICAgPHA+PGNvZGU+ZGVmQ2FuPC9jb2RlPiBpZGVudGlmaWVzIHRoZSB0ZXN0IGNhc2VzIHRoYXQKKyAgICAgICAgICAgIHRlc3QgdGhlIDxhIGhyZWY9IiNYTUxEU0lHMiI+W1hNTERTSUcyXTwvYT4gaW1wbGljaXQKKyAgICAgICAgICAgIGFuZCBleHBsaWNpdCBydWxlcyBtYW5hZ2luZyB0aGUgZmluYWwgY2Fub25pY2FsaXphdGlvbgorICAgICAgICAgICAgdGhhdCBwcmVjZWRlcyB0aGUgZGlnZXN0IGNvbXB1dGF0aW9uLi48L3A+CisgICAgICAgICAgPC9saT4KKworICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgIDxwPjxjb2RlPnhtbGxhbmc8L2NvZGU+IGlkZW50aWZpZXMgdGhlIHRlc3QgY2FzZXMgdGhhdAorICAgICAgICAgICAgdGVzdCB0aGUgQzE0TjExIGhhbmRsaW5nIG9mIHRoZSA8Y29kZT54bWw6bGFuZzwvY29kZT4KKyAgICAgICAgICAgIGF0dHJpYnV0ZS48L3A+CisgICAgICAgICAgPC9saT4KKworICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgIDxwPjxjb2RlPnhtbHNwYWNlPC9jb2RlPiBpZGVudGlmaWVzIHRoZSB0ZXN0IGNhc2VzIHRoYXQKKyAgICAgICAgICAgIHRlc3QgdGhlIEMxNE4xMSBoYW5kbGluZyBvZiB0aGUgPGNvZGU+eG1sOnNwYWNlPC9jb2RlPgorICAgICAgICAgICAgYXR0cmlidXRlLjwvcD4KKyAgICAgICAgICA8L2xpPgorCisgICAgICAgICAgPGxpPgorICAgICAgICAgICAgPHA+PGNvZGU+eG1saWQ8L2NvZGU+IGlkZW50aWZpZXMgdGhlIHRlc3QgY2FzZXMgdGhhdAorICAgICAgICAgICAgdGVzdCB0aGUgQzE0TjExIGhhbmRsaW5nIG9mIHRoZSA8Y29kZT54bWw6aWQ8L2NvZGU+CisgICAgICAgICAgICBhdHRyaWJ1dGUuPC9wPgorICAgICAgICAgIDwvbGk+CisKKyAgICAgICAgICA8bGk+CisgICAgICAgICAgICA8cD48Y29kZT54bWxiYXNlPC9jb2RlPiBpZGVudGlmaWVzIHRoZSB0ZXN0IGNhc2VzIHRoYXQKKyAgICAgICAgICAgIHRlc3QgdGhlIEMxNE4xMSBoYW5kbGluZyBvZiB0aGUgPGNvZGU+eG1sOmJhc2U8L2NvZGU+CisgICAgICAgICAgICBhdHRyaWJ1dGUuPC9wPgorCisgICAgICAgICAgICA8cD5UaGUgZm9sbG93aW5nIHN1Yi1pc3N1ZXMgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzCisgICAgICAgICAgICBpc3N1ZTo8L3A+CisKKyAgICAgICAgICAgIDx1bD4KKyAgICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICAgIDxwPjxjb2RlPnByb3A8L2NvZGU+IGlkZW50aWZpZXMgdGhlIHRlc3QgY2FzZXMgdGhhdAorICAgICAgICAgICAgICAgIHRlc3QgdGhlIEMxNE4xMSBwcm9wYWdhdGlvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICA8Y29kZT54bWw6YmFzZTwvY29kZT4gYXR0cmlidXRlIHRocm91Z2ggdGhlIG5vZGUKKyAgICAgICAgICAgICAgICB0cmVlLjwvcD4KKyAgICAgICAgICAgICAgPC9saT4KKworICAgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgICAgPHA+PGNvZGU+YW5uZXhBPC9jb2RlPiBpZGVudGlmaWVzIHRoZSB0ZXN0IGNhc2VzCisgICAgICAgICAgICAgICAgdGhhdCB0ZXN0IHRoZSBDMTROMTEgUmVtb3ZlIERvdCBTZWdtZW50cyBleGFtcGxlcworICAgICAgICAgICAgICAgIGxpc3RlZCBpbiBBcHBlbmRpeCBBIG9mIDxhIGhyZWY9CisgICAgICAgICAgICAgICAgIiNYTUwtQzE0TjEuMSI+W1hNTC1DMTROMS4xXTwvYT4uPC9wPgorICAgICAgICAgICAgICA8L2xpPgorCisgICAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICA8cD48Y29kZT5jMTRuMTFzcGVjPC9jb2RlPiBpZGVudGlmaWVzIHRoZSB0ZXN0CisgICAgICAgICAgICAgICAgY2FzZXMgdGhhdCB0ZXN0IHRoZSBleGFtcGxlcyBpbiB0aGUgPGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiI1hNTC1DMTROMS4xIj5bWE1MLUMxNE4xLjFdPC9hPiBzcGVjaWZpY2F0aW9uLjwvcD4KKyAgICAgICAgICAgICAgPC9saT4KKyAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgPC9saT4KKworICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgIDxwPjxjb2RlPmRuU3RyaW5nPC9jb2RlPiBpZGVudGlmaWVzIHRoZSB0ZXN0IGNhc2VzIHRoYXQKKyAgICAgICAgICAgIHRlc3QgdGhlIHN0cmluZyBlbmNvZGluZyBvZiBEaXN0aW5ndWlzaGVkIE5hbWVzLjwvcD4KKyAgICAgICAgICA8L2xpPgorCisgICAgICAgICAgPGxpPgorICAgICAgICAgICAgPHA+PGNvZGU+ZGlmZlJGQ3M8L2NvZGU+IGlkZW50aWZpZXMgdGhlIHRlc3QgY2FzZXMgdGhhdAorICAgICAgICAgICAgdGVzdCB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiA8YSBocmVmPQorICAgICAgICAgICAgIiNSRkMtMjI1MyI+W1JGQy0yMjUzXTwvYT4gYW5kIDxhIGhyZWY9CisgICAgICAgICAgICAiI1JGQy00NTE0Ij5bUkZDLTQ1MTRdPC9hPi48L3A+CisgICAgICAgICAgPC9saT4KKworICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgIDxwPjxjb2RlPnhwb2ludGVyPC9jb2RlPiBpZGVudGlmaWVzIHRoZSB0ZXN0IGNhc2VzIHRoYXQKKyAgICAgICAgICAgIHRlc3QgdGhlIGhhbmRsaW5nIG9mIFhQb2ludGVyIFJlZmVyZW5jZSBVUklzIGFzCisgICAgICAgICAgICBzcGVjaWZpZWQgaW4gPGEgaHJlZj0iI1hNTERTSUcyIj5bWE1MRFNJRzJdPC9hPjwvcD4KKyAgICAgICAgICA8L2xpPgorICAgICAgICA8L3VsPgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJkaXYxIj4KKyAgICAgIDxoMj48YSBuYW1lPSJUZXN0Q2FzZXMtU3BlYyIgaWQ9IlRlc3RDYXNlcy1TcGVjIj48L2E+MiBUZXN0CisgICAgICBDYXNlcyBzcGVjaWZpY2F0aW9uPC9oMj4KKworICAgICAgPHA+VGhlIGZvbGxvd2luZyBzdWItc2VjdGlvbnMgZGVzY3JpYmUgZWFjaCBvZiB0aGUgdGVzdCBjYXNlcworICAgICAgYW5kIGFyZSBncm91cGVkIGJ5IFJlY29tbWVuZGF0aW9uIGFuZCBJc3N1ZS48L3A+CisKKyAgICAgIDxkaXYgY2xhc3M9ImRpdjIiPgorICAgICAgICA8aDM+PGEgbmFtZT0iVGVzdENhc2VzLUxlZ2FjeSIgaWQ9CisgICAgICAgICJUZXN0Q2FzZXMtTGVnYWN5Ij48L2E+Mi4xIExlZ2FjeSBYTUxEU2lnIFdvcmtpbmcgR3JvdXAKKyAgICAgICAgVGVzdCBDYXNlczwvaDM+CisKKyAgICAgICAgPHA+VGhlIElFVEYvVzNDIFhNTC1EU2lnIFdvcmtpbmcgR3JvdXAgcHJvZHVjZWQgYW4KKyAgICAgICAgaW50ZXJvcGVyYWJpbGl0eSB0ZXN0IG1hdHJpeCB0aGF0IGNhbiBiZSBmb3VuZCBhdCA8YSBocmVmPQorICAgICAgICAiI1hNTERTSUctaW50ZXJvcCI+W1hNTERTSUctaW50ZXJvcF08L2E+LjwvcD4KKyAgICAgIDwvZGl2PgorCisgICAgICA8ZGl2IGNsYXNzPSJkaXYyIj4KKyAgICAgICAgPGgzPjxhIG5hbWU9IlRlc3RDYXNlcy1DMTRuMTEiIGlkPQorICAgICAgICAiVGVzdENhc2VzLUMxNG4xMSI+PC9hPjIuMiBUZXN0IENhc2VzIGZvciBDYW5vbmljYWxpemF0aW9uCisgICAgICAgIDEuMTwvaDM+CisKKyAgICAgICAgPHA+VGhlIHNldCBvZiB0ZXN0IGNhc2VzIGluIHRoaXMgc2VjdGlvbiBhcmUgZGVzaWduZWQgdG8KKyAgICAgICAgdGVzdCB0aGUgQzE0TjExIGhhbmRsaW5nIG9mIGF0dHJpYnV0ZXMgaW4gdGhlIHhtbAorICAgICAgICBuYW1lc3BhY2UuIFRoZSBpbnB1dCBmb3IgZWFjaCBvZiB0aGVzZSB0ZXN0IGNhc2VzIGlzIGFuIFhNTAorICAgICAgICBkb2N1bWVudCBhbmQgYW4gWFBhdGggZG9jdW1lbnQgc3Vic2V0IGV4cHJlc3Npb24uIFR3bworICAgICAgICBkaWZmZXJlbnQgc2V0cyBvZiB0ZXN0cyBhcmUgaW5jbHVkZWQgYmFzZWQgb24gdGhlIHRlc3QKKyAgICAgICAgY2FzZXMgaW4gdGhpcyBzZWN0aW9uLjwvcD4KKworICAgICAgICA8dWw+CisgICAgICAgICAgPGxpPgorICAgICAgICAgICAgPHA+U3RhbmRhbG9uZSB0ZXN0czogbm8gWE1MIHNpZ25hdHVyZSBnZW5lcmF0aW9uIG9yCisgICAgICAgICAgICB2YWxpZGF0aW9uIGlzIHJlcXVpcmVkLiBUaGUgWFBhdGggZG9jdW1lbnQgc3Vic2V0CisgICAgICAgICAgICBleHByZXNzaW9uIGlzIGFwcGxpZWQgdG8gdGhlIGlucHV0IGRvY3VtZW50LiBUaGVzZQorICAgICAgICAgICAgdGVzdHMgYXJlIHVzZWQgdG8gY2hlY2sgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gZm9yCisgICAgICAgICAgICA8YSBocmVmPSIjWE1MLUMxNE4xLjEiPltYTUwtQzE0TjEuMV08L2E+IGJlaGF2ZXMKKyAgICAgICAgICAgIGNvcnJlY3RseS48L3A+CisgICAgICAgICAgPC9saT4KKworICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgIDxwPkludGVncmF0ZWQgdGVzdHMgd2l0aCBYTUwgc2lnbmF0dXJlczogSW4gdGhlc2Ugc2V0CisgICAgICAgICAgICBvZiB0ZXN0cywgYW4gWE1MIHNpZ25hdHVyZSBpcyBnZW5lcmF0ZWQgYmFzZWQgb24gdGhlCisgICAgICAgICAgICBpbnB1dCBkb2N1bWVudCBhbmQgYSBjb3JyZXNwb25kaW5nIFhQYXRoIEZpbHRlcmluZworICAgICAgICAgICAgVHJhbnNmb3JtIGFzIGluZGljYXRlZCBpbiB0aGUgdGFibGVzLiBGb3IgdGhlc2Ugc2V0IG9mCisgICAgICAgICAgICB0ZXN0cywgdGhlIGZvbGxvd2luZyBydWxlcyBhcHBseTo8L3A+CisKKyAgICAgICAgICAgIDx1bD4KKyAgICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICAgIDxwPlRoZSBYTUwgU2lnbmF0dXJlIGlzIGdlbmVyYXRlZCB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICBITUFDLVNIQTEgU2lnbmF0dXJlTWV0aG9kIGFsZ29yaXRobSBhbmQgYSBzZWNyZXQKKyAgICAgICAgICAgICAgICBrZXkgd2l0aCB0aGUgdmFsdWU6CisgICAgICAgICAgICAgICAgPGNvZGU+InNlY3JldCIuZ2V0Qnl0ZXMoIkFTQ0lJIik8L2NvZGU+LjwvcD4KKyAgICAgICAgICAgICAgPC9saT4KKworICAgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgICAgPHA+VGhlIDxjb2RlPlRyYW5zZm9ybXM8L2NvZGU+IGVsZW1lbnQgY29udGFpbnMgYQorICAgICAgICAgICAgICAgIHNlcXVlbmNlIG9mIHR3byB0cmFuc2Zvcm1zOjwvcD4KKworICAgICAgICAgICAgICAgIDx1bD4KKyAgICAgICAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICAgICAgPHA+QW4gWFBhdGggRmlsdGVyaW5nIFRyYW5zZm9ybSB0aGF0IGNvbnRhaW5zCisgICAgICAgICAgICAgICAgICAgIGFuIFhQYXRoIGV4cHJlc3Npb24gdGhhdCBkZXBlbmRzIG9uIHRoZSB0ZXN0CisgICAgICAgICAgICAgICAgICAgIGNhc2UuPC9wPgorICAgICAgICAgICAgICAgICAgPC9saT4KKworICAgICAgICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICAgICAgICA8cD5BIENhbm9uaWNhbCBYTUwgMS4xIFRyYW5zZm9ybS48L3A+CisgICAgICAgICAgICAgICAgICA8L2xpPgorICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgIDwvbGk+CisgICAgICAgICAgICA8L3VsPgorICAgICAgICAgIDwvbGk+CisgICAgICAgIDwvdWw+CisKKyAgICAgICAgPGRpdiBjbGFzcz0iZGl2MyI+CisgICAgICAgICAgPGg0PjxhIG5hbWU9IlhNTExBTkciIGlkPSJYTUxMQU5HIj48L2E+Mi4yLjEgVGVzdCBDYXNlcworICAgICAgICAgIGZvciA8Y29kZT54bWw6bGFuZzwvY29kZT4gYXR0cmlidXRlPC9oND4KKworICAgICAgICAgIDxwPlRoZSBzZXQgb2YgdGVzdCBjYXNlcyBpbiB0aGlzIHNlY3Rpb24gdGVzdCB0aGUgQzE0TjExCisgICAgICAgICAgaGFuZGxpbmcgb2YgPGNvZGU+eG1sOmxhbmc8L2NvZGU+IGF0dHJpYnV0ZXMuPC9wPgorCisgICAgICAgICAgPHA+QmVsb3cgaXMgdGhlIDxhIGhyZWY9CisgICAgICAgICAgIi4uL2MxNG4xMS94bWxsYW5nLWlucHV0LnhtbCI+aW5wdXQgZG9jdW1lbnQ8L2E+IGZvciB0aGUKKyAgICAgICAgICB0ZXN0IGNhc2VzIGluIHRoaXMgc2VjdGlvbjo8L3A+CisKKyAgICAgICAgICA8dGFibGUgc3VtbWFyeT0iRXhhbXBsZSIgd2lkdGg9IjEwMCUiIGJnY29sb3I9IiM5OUZGRkYiCisgICAgICAgICAgYm9yZGVyPSIxIiBjZWxscGFkZGluZz0iNSIgY2xhc3M9ImVnIj4KKyAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgPHRkPgorICAgICAgICAgICAgICAgIDxwcmU+CisgICZsdDs/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8mZ3Q7CisgICZsdDtpZXRmOmMxNG4xMVhtbGxhbmcgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgCisgIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciJmd0OworICAgICAmbHQ7aWV0ZjplMSB4bWw6bGFuZz0iRU4iJmd0OworICAgICAgICAmbHQ7aWV0ZjplMTEmZ3Q7CisgICAgICAgICAgICZsdDtpZXRmOmUxMTEgLyZndDsKKyAgICAgICAgJmx0Oy9pZXRmOmUxMSZndDsKKyAgICAgICAgJmx0O2lldGY6ZTEyIGF0PSIyIiZndDsKKyAgICAgICAgICAgJmx0O2lldGY6ZTEyMSAvJmd0OworICAgICAgICAmbHQ7L2lldGY6ZTEyJmd0OworICAgICAmbHQ7L2lldGY6ZTEmZ3Q7CisgICAgICZsdDtpZXRmOmUyICZndDsKKyAgICAgICAgJmx0O2lldGY6ZTIxIC8mZ3Q7CisgICAgICZsdDsvaWV0ZjplMiZndDsKKyAgJmx0Oy9pZXRmOmMxNG4xMVhtbGxhbmcmZ3Q7Cis8L3ByZT4KKyAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgPC90YWJsZT4KKworICAgICAgICAgIDxkaXYgY2xhc3M9Im5vdGUiPgorICAgICAgICAgICAgPHAgY2xhc3M9InByZWZpeCI+PGI+Tm90ZTo8L2I+PC9wPgorCisgICAgICAgICAgICA8cD5Eb2N1bWVudCBzdWJzZXQgZXhwcmVzc2lvbnMgZm9yIGRvY3VtZW50IHN1YnNldHMKKyAgICAgICAgICAgIGNvbXB1dGF0aW9uIGFyZSBkZWZpbmVkIGFzIGluIDxhIGhyZWY9CisgICAgICAgICAgICAiI1hNTC1DMTROMS4xIj5bWE1MLUMxNE4xLjFdPC9hPi48L3A+CisgICAgICAgICAgPC9kaXY+CisKKyAgICAgICAgICA8dGFibGUgYm9yZGVyPSIxIj4KKyAgICAgICAgICAgIDx0Ym9keT4KKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIyIiBpZD0iYzE0bjExeG1sbGFuZy0xIj4KKyAgICAgICAgICAgICAgICBUZXN0IGNhc2UgYzE0bjExL3htbGxhbmctMTwvdGg+CisgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5JbnB1dCBkZXRhaWxzPC90aD4KKworICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5Uby1CZS1TaWduZWQgKFRCUworICAgICAgICAgICAgICAgIGhlbmNlZm9ydGgpIGRhdGEgb2JqZWN0IHdpdGggT05MWSBhCisgICAgICAgICAgICAgICAgPGNvZGU+eG1sOmxhbmc8L2NvZGU+IGF0dHJpYnV0ZSBpbiBhIGNlcnRhaW4KKyAgICAgICAgICAgICAgICBlbGVtZW50IDxjb2RlPmU8L2NvZGU+IHdob3NlIGNvbnRlbnQgaW5jbHVkZXMgb3RoZXIKKyAgICAgICAgICAgICAgICBlbGVtZW50cy4gVGhlIDxjb2RlPmRzOlRyYW5zZm9ybTwvY29kZT4gY29udGFpbnMgYQorICAgICAgICAgICAgICAgIFhQYXRoIGV4cHJlc3Npb24gd2hvc2UgcmVzdWx0IGlzIGEgbm9kZSBzZXQgdGhhdAorICAgICAgICAgICAgICAgIGluY2x1ZGVzIGVsZW1lbnQgPGNvZGU+ZTwvY29kZT4uPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlJhdGlvbmFsZTwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+Q2hlY2sgdGhhdAorICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9ucyBvZiA8YSBocmVmPQorICAgICAgICAgICAgICAgICIjWE1MLUMxNE4xLjEiPltYTUwtQzE0TjEuMV08L2E+IGhhbmRsZSB4bWw6bGFuZworICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiA8YSBocmVmPQorICAgICAgICAgICAgICAgICIjWE1MLUMxNE4xLjEiPltYTUwtQzE0TjEuMV08L2E+PC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgIi4uL2MxNG4xMS94bWxsYW5nLTEueHBhdGgiPkRvY3VtZW50IHN1YnNldAorICAgICAgICAgICAgICAgIGV4cHJlc3Npb248L2E+PC90aD4KKworICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4oLy8uIHwgLy9AKiB8CisgICAgICAgICAgICAgICAgLy9uYW1lc3BhY2U6OiopW2FuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTFdPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgIi4uL2MxNG4xMS94bWxsYW5nLTEub3V0cHV0Ij5PdXRwdXQ8L2E+PC90aD4KKworICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4KKyAgICAgICAgICAgICAgICAgIDxwcmU+CisgICZsdDtpZXRmOmUxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciXAorKyAgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmxhbmc9IkVOIiZndDsKKyAgICAgICAgJmx0O2lldGY6ZTExJmd0OworICAgICAgICAgICAmbHQ7aWV0ZjplMTExJmd0OyZsdDsvaWV0ZjplMTExJmd0OworICAgICAgICAmbHQ7L2lldGY6ZTExJmd0OworICAgICAgICAmbHQ7aWV0ZjplMTIgYXQ9IjIiJmd0OworICAgICAgICAgICAmbHQ7aWV0ZjplMTIxJmd0OyZsdDsvaWV0ZjplMTIxJmd0OworICAgICAgICAmbHQ7L2lldGY6ZTEyJmd0OworICAgICAmbHQ7L2lldGY6ZTEmZ3Q7Cis8L3ByZT4KKyAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90Ym9keT4KKyAgICAgICAgICA8L3RhYmxlPgorCisgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMSI+CisgICAgICAgICAgICA8dGJvZHk+CisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMiIgaWQ9ImMxNG4xMXhtbGxhbmctMiI+CisgICAgICAgICAgICAgICAgVGVzdCBjYXNlIGMxNG4xMS94bWxsYW5nLTI8L3RoPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+SW5wdXQgZGV0YWlsczwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+VEJTIGRhdGEgb2JqZWN0IHdpdGgKKyAgICAgICAgICAgICAgICBPTkxZIGEgPGNvZGU+eG1sOmxhbmc8L2NvZGU+IGF0dHJpYnV0ZSBpbiBhIGNlcnRhaW4KKyAgICAgICAgICAgICAgICBlbGVtZW50IDxjb2RlPmU8L2NvZGU+IHdob3NlIGNvbnRlbnQgaW5jbHVkZXMgb3RoZXIKKyAgICAgICAgICAgICAgICBlbGVtZW50cy4gVGhlIDxjb2RlPmRzOlRyYW5zZm9ybTwvY29kZT4gY29udGFpbnMgYQorICAgICAgICAgICAgICAgIFhQYXRoIGV4cHJlc3Npb24gd2hvc2UgcmVzdWx0IGlzIGEgbm9kZSBzZXQgdGhhdAorICAgICAgICAgICAgICAgIERPRVMgTk9UIGluY2x1ZGUgbmVpdGhlciBlbGVtZW50IDxjb2RlPmU8L2NvZGU+IG5vcgorICAgICAgICAgICAgICAgIGFueSBvZiBpdHMgY2hpbGRyZW4gZWxlbWVudHMuPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlJhdGlvbmFsZTwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+Q2hlY2sgdGhhdAorICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9ucyBvZiA8YSBocmVmPQorICAgICAgICAgICAgICAgICIjWE1MLUMxNE4xLjEiPltYTUwtQzE0TjEuMV08L2E+IGhhbmRsZSB4bWw6bGFuZworICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiA8YSBocmVmPQorICAgICAgICAgICAgICAgICIjWE1MLUMxNE4xLjEiPltYTUwtQzE0TjEuMV08L2E+PC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgIi4uL2MxNG4xMS94bWxsYW5nLTIueHBhdGgiPkRvY3VtZW50IHN1YnNldAorICAgICAgICAgICAgICAgIGV4cHJlc3Npb248L2E+PC90aD4KKworICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4oLy8uIHwgLy9AKiB8CisgICAgICAgICAgICAgICAgLy9uYW1lc3BhY2U6OiopW2FuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTJdPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgIi4uL2MxNG4xMS94bWxsYW5nLTIub3V0cHV0Ij5PdXRwdXQ8L2E+PC90aD4KKworICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4KKyAgICAgICAgICAgICAgICAgIDxwcmU+CisgICZsdDtpZXRmOmUyIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciXAorKyAgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyImZ3Q7CisgICAgICAgICZsdDtpZXRmOmUyMSZndDsmbHQ7L2lldGY6ZTIxJmd0OworICAgICAmbHQ7L2lldGY6ZTImZ3Q7Cis8L3ByZT4KKyAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90Ym9keT4KKyAgICAgICAgICA8L3RhYmxlPgorCisgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMSI+CisgICAgICAgICAgICA8dGJvZHk+CisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMiIgaWQ9ImMxNG4xMXhtbGxhbmctMyI+CisgICAgICAgICAgICAgICAgVGVzdCBjYXNlIGMxNG4xMS94bWxsYW5nLTM8L3RoPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+SW5wdXQgZGV0YWlsczwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+VEJTIHdpdGggT05MWSBhCisgICAgICAgICAgICAgICAgPGNvZGU+eG1sOmxhbmc8L2NvZGU+IGF0dHJpYnV0ZSBpbiBhIGNlcnRhaW4KKyAgICAgICAgICAgICAgICBlbGVtZW50IDxjb2RlPmU8L2NvZGU+IHdob3NlIGNvbnRlbnQgaW5jbHVkZXMgYQorICAgICAgICAgICAgICAgIHNlcXVlbmNlIG9mIG9uZSBlbGVtZW50LiBUaGUKKyAgICAgICAgICAgICAgICA8Y29kZT5kczpUcmFuc2Zvcm08L2NvZGU+IGNvbnRhaW5zIGEgWFBhdGgKKyAgICAgICAgICAgICAgICBleHByZXNzaW9uIHdob3NlIHJlc3VsdCBpcyBhIG5vZGUgc2V0IHRoYXQgRE9FUyBOT1QKKyAgICAgICAgICAgICAgICBpbmNsdWRlIGVsZW1lbnQgPGNvZGU+ZTwvY29kZT4gYnV0IGluY2x1ZGVzIG9uZQorICAgICAgICAgICAgICAgIGNoaWxkIGVsZW1lbnQuPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlJhdGlvbmFsZTwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+Q2hlY2sgdGhhdAorICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9ucyBvZiA8YSBocmVmPQorICAgICAgICAgICAgICAgICIjWE1MLUMxNE4xLjEiPltYTUwtQzE0TjEuMV08L2E+IGhhbmRsZSB4bWw6bGFuZworICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiA8YSBocmVmPQorICAgICAgICAgICAgICAgICIjWE1MLUMxNE4xLjEiPltYTUwtQzE0TjEuMV08L2E+PC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgIi4uL2MxNG4xMS94bWxsYW5nLTMueHBhdGgiPkRvY3VtZW50IHN1YnNldAorICAgICAgICAgICAgICAgIGV4cHJlc3Npb248L2E+PC90aD4KKworICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4oLy8uIHwgLy9AKiB8CisgICAgICAgICAgICAgICAgLy9uYW1lc3BhY2U6OiopW2FuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTExXTwvdGQ+CisgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPQorICAgICAgICAgICAgICAgICIuLi9jMTRuMTEveG1sbGFuZy0zLm91dHB1dCI+T3V0cHV0PC9hPjwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+CisgICAgICAgICAgICAgICAgICA8cHJlPgorICAmbHQ7aWV0ZjplMTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyJcCisrICB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6bGFuZz0iRU4iJmd0OworICAgICAgICAgICAmbHQ7aWV0ZjplMTExJmd0OyZsdDsvaWV0ZjplMTExJmd0OworICAgICAgICAmbHQ7L2lldGY6ZTExJmd0OworPC9wcmU+CisgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGJvZHk+CisgICAgICAgICAgPC90YWJsZT4KKworICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjEiPgorICAgICAgICAgICAgPHRib2R5PgorICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjIiIGlkPSJjMTRuMTF4bWxsYW5nLTQiPgorICAgICAgICAgICAgICAgIFRlc3QgY2FzZSBjMTRuMTEveG1sbGFuZy00PC90aD4KKyAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPklucHV0IGRldGFpbHM8L3RoPgorCisgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlRCUyB3aXRoIE9OTFkgYQorICAgICAgICAgICAgICAgIDxjb2RlPnhtbDpsYW5nPC9jb2RlPiBhdHRyaWJ1dGUgaW4gYSBjZXJ0YWluCisgICAgICAgICAgICAgICAgZWxlbWVudCA8Y29kZT5lPC9jb2RlPiB3aG9zZSBjb250ZW50IGluY2x1ZGVzIGEKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZSBvZiBtb3JlIHRoYW4gb25lIGVsZW1lbnQgKHRoZXNlIGNoaWxkcmVuCisgICAgICAgICAgICAgICAgbWF5IGluIHR1cm4gY29udGFpbiBjaGlsZHJlbiBlbGVtZW50cykuIFRoZQorICAgICAgICAgICAgICAgIDxjb2RlPmRzOlRyYW5zZm9ybTwvY29kZT4gY29udGFpbnMgYSBYUGF0aAorICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gd2hvc2UgcmVzdWx0IGlzIGEgbm9kZSBzZXQgdGhhdCBET0VTIE5PVAorICAgICAgICAgICAgICAgIGluY2x1ZGUgZWxlbWVudCA8Y29kZT5lPC9jb2RlPiBidXQgaW5jbHVkZXMgbW9yZQorICAgICAgICAgICAgICAgIHRoYW4gb25lIG9mIGl0cyBjaGlsZHJlbiBlbGVtZW50cy48L3RkPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+UmF0aW9uYWxlPC90aD4KKworICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5DaGVjayB0aGF0CisgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zIG9mIDxhIGhyZWY9CisgICAgICAgICAgICAgICAgIiNYTUwtQzE0TjEuMSI+W1hNTC1DMTROMS4xXTwvYT4gaGFuZGxlIHhtbDpsYW5nCisgICAgICAgICAgICAgICAgYXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIDxhIGhyZWY9CisgICAgICAgICAgICAgICAgIiNYTUwtQzE0TjEuMSI+W1hNTC1DMTROMS4xXTwvYT48L3RkPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiLi4vYzE0bjExL3htbGxhbmctNC54cGF0aCI+RG9jdW1lbnQgc3Vic2V0CisgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjwvYT48L3RoPgorCisgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPigvLy4gfCAvL0AqIHwKKyAgICAgICAgICAgICAgICAvL25hbWVzcGFjZTo6KilbYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTEgb3IKKyAgICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMl08L3RkPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiLi4vYzE0bjExL3htbGxhbmctNC5vdXRwdXQiPk91dHB1dDwvYT48L3RoPgorCisgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPgorICAgICAgICAgICAgICAgICAgPHByZT4KKyAgJmx0O2lldGY6ZTExIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciXAorKyAgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmxhbmc9IkVOIiZndDsKKyAgICAgICAgICAgJmx0O2lldGY6ZTExMSZndDsmbHQ7L2lldGY6ZTExMSZndDsKKyAgICAgICAgJmx0Oy9pZXRmOmUxMSZndDtcCisrICZsdDtpZXRmOmUxMiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIlwKKysgIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIGF0PSIyIiB4bWw6bGFuZz0iRU4iJmd0OworICAgICAgICAgICAmbHQ7aWV0ZjplMTIxJmd0OyZsdDsvaWV0ZjplMTIxJmd0OworICAgICAgICAmbHQ7L2lldGY6ZTEyJmd0OworPC9wcmU+CisgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGJvZHk+CisgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgPC9kaXY+CisKKyAgICAgICAgPGRpdiBjbGFzcz0iZGl2MyI+CisgICAgICAgICAgPGg0PjxhIG5hbWU9IlhNTFNQQUNFIiBpZD0iWE1MU1BBQ0UiPjwvYT4yLjIuMiBUZXN0IENhc2VzCisgICAgICAgICAgZm9yIDxjb2RlPnhtbDpzcGFjZTwvY29kZT4gYXR0cmlidXRlPC9oND4KKworICAgICAgICAgIDxwPlRoZSBzZXQgb2YgdGVzdCBjYXNlcyBpbiB0aGlzIHNlY3Rpb24gdGVzdCB0aGUgQzE0TjExCisgICAgICAgICAgaGFuZGxpbmcgb2YgPGNvZGU+eG1sOnNwYWNlPC9jb2RlPiBhdHRyaWJ1dGVzLjwvcD4KKworICAgICAgICAgIDxwPkJlbG93IGlzIHRoZSA8YSBocmVmPQorICAgICAgICAgICIuLi9jMTRuMTEveG1sc3BhY2UtaW5wdXQueG1sIj5pbnB1dCBkb2N1bWVudDwvYT4gZm9yIHRoZQorICAgICAgICAgIHRlc3QgY2FzZXMgaW4gdGhpcyBzZWN0aW9uOjwvcD4KKworICAgICAgICAgIDx0YWJsZSBzdW1tYXJ5PSJFeGFtcGxlIiB3aWR0aD0iMTAwJSIgYmdjb2xvcj0iIzk5RkZGRiIKKyAgICAgICAgICBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSI1IiBjbGFzcz0iZWciPgorICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICA8dGQ+CisgICAgICAgICAgICAgICAgPHByZT4KKyAgJmx0Oz94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPyZndDsKKyAgJmx0O2lldGY6YzE0bjExWG1sU3BhY2VEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIAorICB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiZndDsKKyAgICAgJmx0O2lldGY6ZTEgeG1sOnNwYWNlPSJ0cnVlIiZndDsKKyAgICAgICAgJmx0O2lldGY6ZTExJmd0OworICAgICAgICAgICAmbHQ7aWV0ZjplMTExIC8mZ3Q7CisgICAgICAgICZsdDsvaWV0ZjplMTEmZ3Q7CisgICAgICAgICZsdDtpZXRmOmUxMiBhdD0iMiImZ3Q7CisgICAgICAgICAgICZsdDtpZXRmOmUxMjEgLyZndDsKKyAgICAgICAgJmx0Oy9pZXRmOmUxMiZndDsKKyAgICAgJmx0Oy9pZXRmOmUxJmd0OworICAgICAmbHQ7aWV0ZjplMiAmZ3Q7CisgICAgICAgICZsdDtpZXRmOmUyMSAvJmd0OworICAgICAmbHQ7L2lldGY6ZTImZ3Q7CisgICZsdDsvaWV0ZjpjMTRuMTFYbWxTcGFjZURvYzEmZ3Q7Cis8L3ByZT4KKyAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgPC90YWJsZT4KKworICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjEiPgorICAgICAgICAgICAgPHRib2R5PgorICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjIiIGlkPSJjMTRuMTF4bWxzcGFjZS0xIj4KKyAgICAgICAgICAgICAgICBUZXN0IGNhc2UgYzE0bjExL3htbHNwYWNlLTE8L3RoPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+SW5wdXQgZGV0YWlsczwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+VEJTIGRhdGEgb2JqZWN0IHdpdGgKKyAgICAgICAgICAgICAgICBPTkxZIGEgPGNvZGU+eG1sOnNwYWNlPC9jb2RlPiBhdHRyaWJ1dGUgaW4gYQorICAgICAgICAgICAgICAgIGNlcnRhaW4gZWxlbWVudCA8Y29kZT5lPC9jb2RlPiB3aG9zZSBjb250ZW50CisgICAgICAgICAgICAgICAgaW5jbHVkZXMgb3RoZXIgZWxlbWVudHMuIFRoZQorICAgICAgICAgICAgICAgIDxjb2RlPmRzOlRyYW5zZm9ybTwvY29kZT4gY29udGFpbnMgYSBYUGF0aAorICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gd2hvc2UgcmVzdWx0IGlzIGEgbm9kZSBzZXQgdGhhdCBpbmNsdWRlcworICAgICAgICAgICAgICAgIGVsZW1lbnQgPGNvZGU+ZTwvY29kZT4uPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlJhdGlvbmFsZTwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+Q2hlY2sgdGhhdAorICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9ucyBvZiA8YSBocmVmPQorICAgICAgICAgICAgICAgICIjWE1MLUMxNE4xLjEiPltYTUwtQzE0TjEuMV08L2E+IGhhbmRsZSB4bWw6c3BhY2UKKyAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gPGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiI1hNTC1DMTROMS4xIj5bWE1MLUMxNE4xLjFdPC9hPjwvdGQ+CisgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPQorICAgICAgICAgICAgICAgICIuLi9jMTRuMTEveG1sc3BhY2UtMS54cGF0aCI+RG9jdW1lbnQgc3Vic2V0CisgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjwvYT48L3RoPgorCisgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPigvLy4gfCAvL0AqIHwKKyAgICAgICAgICAgICAgICAvL25hbWVzcGFjZTo6KikgW2FuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTFdPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgIi4uL2MxNG4xMS94bWxzcGFjZS0xLm91dHB1dCI+T3V0cHV0PC9hPjwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+CisgICAgICAgICAgICAgICAgICA8cHJlPgorICAmbHQ7aWV0ZjplMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIlwKKysgIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpzcGFjZT0idHJ1ZSImZ3Q7CisgICAgICAgICZsdDtpZXRmOmUxMSZndDsKKyAgICAgICAgICAgJmx0O2lldGY6ZTExMSZndDsmbHQ7L2lldGY6ZTExMSZndDsKKyAgICAgICAgJmx0Oy9pZXRmOmUxMSZndDsKKyAgICAgICAgJmx0O2lldGY6ZTEyIGF0PSIyIiZndDsKKyAgICAgICAgICAgJmx0O2lldGY6ZTEyMSZndDsmbHQ7L2lldGY6ZTEyMSZndDsKKyAgICAgICAgJmx0Oy9pZXRmOmUxMiZndDsKKyAgICAgJmx0Oy9pZXRmOmUxJmd0OworPC9wcmU+CisgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGJvZHk+CisgICAgICAgICAgPC90YWJsZT4KKworICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjEiPgorICAgICAgICAgICAgPHRib2R5PgorICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjIiIGlkPSJjMTRuMTF4bWxzcGFjZS0yIj4KKyAgICAgICAgICAgICAgICBUZXN0IGNhc2UgYzE0bjExL3htbHNwYWNlLTI8L3RoPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+SW5wdXQgZGV0YWlsczwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+VEJTIGRhdGEgb2JqZWN0IHdpdGgKKyAgICAgICAgICAgICAgICBPTkxZIGEgPGNvZGU+eG1sOnNwYWNlPC9jb2RlPiBhdHRyaWJ1dGUgaW4gYQorICAgICAgICAgICAgICAgIGNlcnRhaW4gZWxlbWVudCA8Y29kZT5lPC9jb2RlPiB3aG9zZSBjb250ZW50CisgICAgICAgICAgICAgICAgaW5jbHVkZXMgb3RoZXIgZWxlbWVudHMuIFRoZQorICAgICAgICAgICAgICAgIDxjb2RlPmRzOlRyYW5zZm9ybTwvY29kZT4gY29udGFpbnMgYSBYUGF0aAorICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gd2hvc2UgcmVzdWx0IGlzIGEgbm9kZSBzZXQgdGhhdCBET0VTIE5PVAorICAgICAgICAgICAgICAgIGluY2x1ZGUgbmVpdGhlciBlbGVtZW50IDxjb2RlPmU8L2NvZGU+IG5vciBhbnkgb2YKKyAgICAgICAgICAgICAgICBpdHMgY2hpbGRyZW4gZWxlbWVudHMuPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlJhdGlvbmFsZTwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+Q2hlY2sgdGhhdAorICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9ucyBvZiA8YSBocmVmPQorICAgICAgICAgICAgICAgICIjWE1MLUMxNE4xLjEiPltYTUwtQzE0TjEuMV08L2E+IGhhbmRsZSB4bWw6c3BhY2UKKyAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gPGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiI1hNTC1DMTROMS4xIj5bWE1MLUMxNE4xLjFdPC9hPjwvdGQ+CisgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPQorICAgICAgICAgICAgICAgICIuLi9jMTRuMTEveG1sc3BhY2UtMi54cGF0aCI+RG9jdW1lbnQgc3Vic2V0CisgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjwvYT48L3RoPgorCisgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPigvLy4gfCAvL0AqIHwKKyAgICAgICAgICAgICAgICAvL25hbWVzcGFjZTo6KikgW2FuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTJdPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgIi4uL2MxNG4xMS94bWxzcGFjZS0yLm91dHB1dCI+T3V0cHV0PC9hPjwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+CisgICAgICAgICAgICAgICAgICA8cHJlPgorICAmbHQ7aWV0ZjplMiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIlwKKysgIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciJmd0OworICAgICAgICAmbHQ7aWV0ZjplMjEmZ3Q7Jmx0Oy9pZXRmOmUyMSZndDsKKyAgICAgJmx0Oy9pZXRmOmUyJmd0OworPC9wcmU+CisgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGJvZHk+CisgICAgICAgICAgPC90YWJsZT4KKworICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjEiPgorICAgICAgICAgICAgPHRib2R5PgorICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjIiIGlkPSJjMTRuMTF4bWxzcGFjZS0zIj4KKyAgICAgICAgICAgICAgICBUZXN0IGNhc2UgYzE0bjExL3htbHNwYWNlLTM8L3RoPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+SW5wdXQgZGV0YWlsczwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+VEJTIHdpdGggT05MWSBhCisgICAgICAgICAgICAgICAgPGNvZGU+eG1sOnNwYWNlPC9jb2RlPiBhdHRyaWJ1dGUgaW4gYSBjZXJ0YWluCisgICAgICAgICAgICAgICAgZWxlbWVudCA8Y29kZT5lPC9jb2RlPiB3aG9zZSBjb250ZW50IGluY2x1ZGVzIGEKKyAgICAgICAgICAgICAgICBzZXF1ZW5jZSBvZiBvbmUgZWxlbWVudC4gVGhlCisgICAgICAgICAgICAgICAgPGNvZGU+ZHM6VHJhbnNmb3JtPC9jb2RlPiBjb250YWlucyBhIFhQYXRoCisgICAgICAgICAgICAgICAgZXhwcmVzc2lvbiB3aG9zZSByZXN1bHQgaXMgYSBub2RlIHNldCB0aGF0IERPRVMgTk9UCisgICAgICAgICAgICAgICAgaW5jbHVkZSBlbGVtZW50IDxjb2RlPmU8L2NvZGU+IGJ1dCBpbmNsdWRlcyBpdHMKKyAgICAgICAgICAgICAgICBjaGlsZCBlbGVtZW50LjwvdGQ+CisgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5SYXRpb25hbGU8L3RoPgorCisgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPkNoZWNrIHRoYXQKKyAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbnMgb2YgPGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiI1hNTC1DMTROMS4xIj5bWE1MLUMxNE4xLjFdPC9hPiBoYW5kbGUgeG1sOnNwYWNlCisgICAgICAgICAgICAgICAgYXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIDxhIGhyZWY9CisgICAgICAgICAgICAgICAgIiNYTUwtQzE0TjEuMSI+W1hNTC1DMTROMS4xXTwvYT48L3RkPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiLi4vYzE0bjExL3htbHNwYWNlLTMueHBhdGgiPkRvY3VtZW50IHN1YnNldAorICAgICAgICAgICAgICAgIGV4cHJlc3Npb248L2E+PC90aD4KKworICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4oLy8uIHwgLy9AKiB8CisgICAgICAgICAgICAgICAgLy9uYW1lc3BhY2U6OiopIFthbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMV08L3RkPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiLi4vYzE0bjExL3htbHNwYWNlLTMub3V0cHV0Ij5PdXRwdXQ8L2E+PC90aD4KKworICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4KKyAgICAgICAgICAgICAgICAgIDxwcmU+CisgICZsdDtpZXRmOmUxMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIlwKKysgIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpzcGFjZT0idHJ1ZSImZ3Q7CisgICAgICAgICAgICZsdDtpZXRmOmUxMTEmZ3Q7Jmx0Oy9pZXRmOmUxMTEmZ3Q7CisgICAgICAgICZsdDsvaWV0ZjplMTEmZ3Q7Cis8L3ByZT4KKyAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90Ym9keT4KKyAgICAgICAgICA8L3RhYmxlPgorCisgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMSI+CisgICAgICAgICAgICA8dGJvZHk+CisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMiIgaWQ9ImMxNG4xMXhtbHNwYWNlLTQiPgorICAgICAgICAgICAgICAgIFRlc3QgY2FzZSBjMTRuMTEveG1sc3BhY2UtNDwvdGg+CisgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5JbnB1dCBkZXRhaWxzPC90aD4KKworICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5UQlMgd2l0aCBPTkxZIGEKKyAgICAgICAgICAgICAgICA8Y29kZT54bWw6c3BhY2U8L2NvZGU+IGF0dHJpYnV0ZSBpbiBhIGNlcnRhaW4KKyAgICAgICAgICAgICAgICBlbGVtZW50IDxjb2RlPmU8L2NvZGU+IHdob3NlIGNvbnRlbnQgaW5jbHVkZXMgYQorICAgICAgICAgICAgICAgIHNlcXVlbmNlIG9mIG1vcmUgdGhhbiBvbmUgZWxlbWVudCAodGhlc2UgY2hpbGRyZW4KKyAgICAgICAgICAgICAgICBtYXkgaW4gdHVybiBjb250YWluIGNoaWxkcmVuIGVsZW1lbnRzKS4gVGhlCisgICAgICAgICAgICAgICAgPGNvZGU+ZHM6VHJhbnNmb3JtPC9jb2RlPiBjb250YWlucyBhIFhQYXRoCisgICAgICAgICAgICAgICAgZXhwcmVzc2lvbiB3aG9zZSByZXN1bHQgaXMgYSBub2RlIHNldCB0aGF0IERPRVMgTk9UCisgICAgICAgICAgICAgICAgaW5jbHVkZSBlbGVtZW50IDxjb2RlPmU8L2NvZGU+IGJ1dCBpbmNsdWRlcyBtb3JlCisgICAgICAgICAgICAgICAgdGhhbiBvbmUgb2YgaXRzIGNoaWxkcmVuIGVsZW1lbnRzLjwvdGQ+CisgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5SYXRpb25hbGU8L3RoPgorCisgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPkNoZWNrIHRoYXQKKyAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbnMgb2YgPGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiI1hNTC1DMTROMS4xIj5bWE1MLUMxNE4xLjFdPC9hPiBoYW5kbGUgeG1sOnNwYWNlCisgICAgICAgICAgICAgICAgYXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIDxhIGhyZWY9CisgICAgICAgICAgICAgICAgIiNYTUwtQzE0TjEuMSI+W1hNTC1DMTROMS4xXTwvYT48L3RkPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiLi4vYzE0bjExL3htbHNwYWNlLTQueHBhdGgiPkRvY3VtZW50IHN1YnNldAorICAgICAgICAgICAgICAgIGV4cHJlc3Npb248L2E+PC90aD4KKworICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4oLy8uIHwgLy9AKiB8CisgICAgICAgICAgICAgICAgLy9uYW1lc3BhY2U6OiopIFthbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMSBvcgorICAgICAgICAgICAgICAgIGFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTEyXTwvdGQ+CisgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPQorICAgICAgICAgICAgICAgICIuLi9jMTRuMTEveG1sc3BhY2UtNC5vdXRwdXQiPk91dHB1dDwvYT48L3RoPgorCisgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPgorICAgICAgICAgICAgICAgICAgPHByZT4KKyAgJmx0O2lldGY6ZTExIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciXAorKyAgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOnNwYWNlPSJ0cnVlIiZndDsKKyAgICAgICAgICAgJmx0O2lldGY6ZTExMSZndDsmbHQ7L2lldGY6ZTExMSZndDsKKyAgICAgICAgJmx0Oy9pZXRmOmUxMSZndDtcCisrICZsdDtpZXRmOmUxMiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIlwKKysgIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIGF0PSIyIiB4bWw6c3BhY2U9InRydWUiJmd0OworICAgICAgICAgICAmbHQ7aWV0ZjplMTIxJmd0OyZsdDsvaWV0ZjplMTIxJmd0OworICAgICAgICAmbHQ7L2lldGY6ZTEyJmd0OworPC9wcmU+CisgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGJvZHk+CisgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgPC9kaXY+CisKKyAgICAgICAgPGRpdiBjbGFzcz0iZGl2MyI+CisgICAgICAgICAgPGg0PjxhIG5hbWU9IlhNTElEIiBpZD0iWE1MSUQiPjwvYT4yLjIuMyBUZXN0IENhc2VzIGZvcgorICAgICAgICAgIDxjb2RlPnhtbDppZDwvY29kZT4gYXR0cmlidXRlPC9oND4KKworICAgICAgICAgIDxwPlRoZSBzZXQgb2YgdGVzdCBjYXNlcyBpbiB0aGlzIHNlY3Rpb24gdGVzdCB0aGUgQzE0TjExCisgICAgICAgICAgaGFuZGxpbmcgb2YgPGNvZGU+eG1sOmlkPC9jb2RlPiBhdHRyaWJ1dGVzLjwvcD4KKworICAgICAgICAgIDxwPkJlbG93IGlzIHRoZSA8YSBocmVmPSIuLi9jMTRuMTEveG1saWQtaW5wdXQueG1sIj5pbnB1dAorICAgICAgICAgIGRvY3VtZW50PC9hPiBmb3IgYWxsIHRoZSB0ZXN0IGNhc2VzIGluIHRoaXMgc2VjdGlvbjo8L3A+CisKKyAgICAgICAgICA8dGFibGUgc3VtbWFyeT0iRXhhbXBsZSIgd2lkdGg9IjEwMCUiIGJnY29sb3I9IiM5OUZGRkYiCisgICAgICAgICAgYm9yZGVyPSIxIiBjZWxscGFkZGluZz0iNSIgY2xhc3M9ImVnIj4KKyAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgPHRkPgorICAgICAgICAgICAgICAgIDxwcmU+CisgICZsdDs/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8mZ3Q7CisgICZsdDtpZXRmOmMxNG4xMVhtbElkRG9jMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiAKKyAgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyImZ3Q7CisgICAgICZsdDtpZXRmOmUxIHhtbDppZD0iSWRJbnRlcm9wIiZndDsKKyAgICAgICAgJmx0O2lldGY6ZTExJmd0OworICAgICAgICAgICAmbHQ7aWV0ZjplMTExIC8mZ3Q7CisgICAgICAgICZsdDsvaWV0ZjplMTEmZ3Q7CisgICAgICAgICZsdDtpZXRmOmUxMiBhdD0iMiImZ3Q7CisgICAgICAgICAgICZsdDtpZXRmOmUxMjEgLyZndDsKKyAgICAgICAgJmx0Oy9pZXRmOmUxMiZndDsKKyAgICAgJmx0Oy9pZXRmOmUxJmd0OworICAgICAmbHQ7aWV0ZjplMiAmZ3Q7CisgICAgICAgICZsdDtpZXRmOmUyMSAvJmd0OworICAgICAmbHQ7L2lldGY6ZTImZ3Q7ICAKKyAgJmx0Oy9pZXRmOmMxNG4xMVhtbElkRG9jMSZndDsKKzwvcHJlPgorICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICA8L3RhYmxlPgorCisgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMSI+CisgICAgICAgICAgICA8dGJvZHk+CisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMiIgaWQ9ImMxNG4xMXhtbGlkLTEiPlRlc3QKKyAgICAgICAgICAgICAgICBjYXNlIGMxNG4xMS94bWxpZC0xPC90aD4KKyAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPklucHV0IGRldGFpbHM8L3RoPgorCisgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlRCUyB3aXRoIE9OTFkgYQorICAgICAgICAgICAgICAgIDxjb2RlPnhtbDppZDwvY29kZT4gYXR0cmlidXRlIGluIGEgY2VydGFpbiBlbGVtZW50CisgICAgICAgICAgICAgICAgPGNvZGU+ZTwvY29kZT4gd2hvc2UgY29udGVudCBpbmNsdWRlcyBvdGhlcgorICAgICAgICAgICAgICAgIGVsZW1lbnRzLiBUaGUgPGNvZGU+ZHM6VHJhbnNmb3JtPC9jb2RlPiBjb250YWlucyBhCisgICAgICAgICAgICAgICAgWFBhdGggZXhwcmVzc2lvbiB3aG9zZSByZXN1bHQgaXMgYSBub2RlIHNldCB0aGF0CisgICAgICAgICAgICAgICAgaW5jbHVkZXMgZWxlbWVudCA8Y29kZT5lPC9jb2RlPi48L3RkPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+UmF0aW9uYWxlPC90aD4KKworICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5DaGVjayB0aGF0CisgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zIG9mIDxhIGhyZWY9CisgICAgICAgICAgICAgICAgIiNYTUwtQzE0TjEuMSI+W1hNTC1DMTROMS4xXTwvYT4gaGFuZGxlIHhtbDppZAorICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiA8YSBocmVmPQorICAgICAgICAgICAgICAgICIjWE1MLUMxNE4xLjEiPltYTUwtQzE0TjEuMV08L2E+PC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgIi4uL2MxNG4xMS94bWxpZC0xLnhwYXRoIj5Eb2N1bWVudCBzdWJzZXQKKyAgICAgICAgICAgICAgICBleHByZXNzaW9uPC9hPjwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+KC8vLiB8IC8vQCogfAorICAgICAgICAgICAgICAgIC8vbmFtZXNwYWNlOjoqKSBbYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMV08L3RkPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiLi4vYzE0bjExL3htbGlkLTEub3V0cHV0Ij5PdXRwdXQ8L2E+PC90aD4KKworICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4KKyAgICAgICAgICAgICAgICAgIDxwcmU+CisgICZsdDtpZXRmOmUxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciXAorKyAgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmlkPSJJZEludGVyb3AiJmd0OworICAgICAgICAmbHQ7aWV0ZjplMTEmZ3Q7CisgICAgICAgICAgICZsdDtpZXRmOmUxMTEmZ3Q7Jmx0Oy9pZXRmOmUxMTEmZ3Q7CisgICAgICAgICZsdDsvaWV0ZjplMTEmZ3Q7CisgICAgICAgICZsdDtpZXRmOmUxMiBhdD0iMiImZ3Q7CisgICAgICAgICAgICZsdDtpZXRmOmUxMjEmZ3Q7Jmx0Oy9pZXRmOmUxMjEmZ3Q7CisgICAgICAgICZsdDsvaWV0ZjplMTImZ3Q7CisgICAgICZsdDsvaWV0ZjplMSZndDsKKzwvcHJlPgorICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3Rib2R5PgorICAgICAgICAgIDwvdGFibGU+CisKKyAgICAgICAgICA8dGFibGUgYm9yZGVyPSIxIj4KKyAgICAgICAgICAgIDx0Ym9keT4KKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIyIiBpZD0iYzE0bjExeG1saWQtMiI+VGVzdAorICAgICAgICAgICAgICAgIGNhc2UgYzE0bjExL3htbGlkLTI8L3RoPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+SW5wdXQgZGV0YWlsczwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+VEJTIHdpdGggT05MWSBhCisgICAgICAgICAgICAgICAgPGNvZGU+eG1sOmlkPC9jb2RlPiBhdHRyaWJ1dGUgaW4gYSBjZXJ0YWluIGVsZW1lbnQKKyAgICAgICAgICAgICAgICA8Y29kZT5lPC9jb2RlPiB3aG9zZSBjb250ZW50IGluY2x1ZGVzIG90aGVyCisgICAgICAgICAgICAgICAgZWxlbWVudHMuIFRoZSA8Y29kZT5kczpUcmFuc2Zvcm08L2NvZGU+IGNvbnRhaW5zIGEKKyAgICAgICAgICAgICAgICBYUGF0aCBleHByZXNzaW9uIHdob3NlIHJlc3VsdCBpcyBhIG5vZGUgc2V0IHRoYXQKKyAgICAgICAgICAgICAgICBET0VTIE5PVCBpbmNsdWRlIHRoZSBlbGVtZW50IDxjb2RlPmU8L2NvZGU+IGJ1dAorICAgICAgICAgICAgICAgIHNvbWUgb2YgdGhlIGNoaWxkcmVuIG9mIHRoZSBlbGVtZW50CisgICAgICAgICAgICAgICAgPGNvZGU+ZTwvY29kZT4uPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlJhdGlvbmFsZTwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+Q2hlY2sgdGhhdAorICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9ucyBvZiA8YSBocmVmPQorICAgICAgICAgICAgICAgICIjWE1MLUMxNE4xLjEiPltYTUwtQzE0TjEuMV08L2E+IGhhbmRsZSB4bWw6aWQKKyAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gPGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiI1hNTC1DMTROMS4xIj5bWE1MLUMxNE4xLjFdPC9hPjwvdGQ+CisgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPQorICAgICAgICAgICAgICAgICIuLi9jMTRuMTEveG1saWQtMi54cGF0aCI+RG9jdW1lbnQgc3Vic2V0CisgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjwvYT48L3RoPgorCisgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPigvLy4gfCAvL0AqIHwKKyAgICAgICAgICAgICAgICAvL25hbWVzcGFjZTo6KikgW2FuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTExIG9yCisgICAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTJdPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgIi4uL2MxNG4xMS94bWxpZC0yLm91dHB1dCI+T3V0cHV0PC9hPjwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+CisgICAgICAgICAgICAgICAgICA8cHJlPgorICAmbHQ7aWV0ZjplMTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyJcCisrICB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiZndDsKKyAgICAgICAgICAgJmx0O2lldGY6ZTExMSZndDsmbHQ7L2lldGY6ZTExMSZndDsKKyAgICAgICAgJmx0Oy9pZXRmOmUxMSZndDtcCisrICZsdDtpZXRmOmUxMiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIlwKKysgIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIGF0PSIyIiZndDsKKyAgICAgICAgICAgJmx0O2lldGY6ZTEyMSZndDsmbHQ7L2lldGY6ZTEyMSZndDsKKyAgICAgICAgJmx0Oy9pZXRmOmUxMiZndDsKKzwvcHJlPgorICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3Rib2R5PgorICAgICAgICAgIDwvdGFibGU+CisgICAgICAgIDwvZGl2PgorCisgICAgICAgIDxkaXYgY2xhc3M9ImRpdjMiPgorICAgICAgICAgIDxoND48YSBuYW1lPSJYTUxCQVNFIiBpZD0iWE1MQkFTRSI+PC9hPjIuMi40IFRlc3QgQ2FzZXMKKyAgICAgICAgICBmb3IgPGNvZGU+eG1sOmJhc2U8L2NvZGU+IGF0dHJpYnV0ZTwvaDQ+CisKKyAgICAgICAgICA8cD5UaGUgc2V0IG9mIHRlc3QgY2FzZXMgaW4gdGhpcyBzZWN0aW9uIHRlc3QgdGhlIEMxNE4xMQorICAgICAgICAgIGhhbmRsaW5nIG9mIDxjb2RlPnhtbDpiYXNlPC9jb2RlPiBhdHRyaWJ1dGVzLjwvcD4KKworICAgICAgICAgIDxwPlRocmVlIHNldHMgb2YgdGVzdCBjYXNlcyBoYXZlIGJlZW4gZGVmaW5lZDo8L3A+CisKKyAgICAgICAgICA8dWw+CisgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgIDxwPlRlc3RzIHRoYXQgY2hlY2sgaWYgdGhlIGltcGxlbWVudGF0aW9uIGNvcnJlY3RseQorICAgICAgICAgICAgICBwcm9wYWdhdGVzIHRoZSA8Y29kZT54bWw6YmFzZTwvY29kZT4gYXR0cmlidXRlcworICAgICAgICAgICAgICB0aHJvdWdoIHRoZSBub2RlIHRyZWUuPC9wPgorICAgICAgICAgICAgPC9saT4KKworICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICA8cD5UZXN0cyB0aGF0IGNoZWNrIGlmIHRoZSBpbXBsZW1lbnRhdGlvbiBjb3JyZWN0bHkKKyAgICAgICAgICAgICAgcHJvY2Vzc2VzIHRoZSBleGFtcGxlcyBpbnZvbHZpbmcgeG1sOmJhc2UgcHJvcGFnYXRpb24KKyAgICAgICAgICAgICAgaW4gdGhlIDxhIGhyZWY9IiNYTUwtQzE0TjEuMSI+W1hNTC1DMTROMS4xXTwvYT4KKyAgICAgICAgICAgICAgc3BlY2lmaWNhdGlvbi48L3A+CisgICAgICAgICAgICA8L2xpPgorCisgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgIDxwPlRlc3RzIHRoYXQgY2hlY2sgaWYgdGhlIGltcGxlbWVudGF0aW9uIGNvcnJlY3RseQorICAgICAgICAgICAgICBwcm9jZXNzZXMgdGhlIGV4YW1wbGVzIGluIHRoZSBBcHBlbmRpeCBvZiA8YSBocmVmPQorICAgICAgICAgICAgICAiI1hNTC1DMTROMS4xIj5bWE1MLUMxNE4xLjFdPC9hPjwvcD4KKyAgICAgICAgICAgIDwvbGk+CisgICAgICAgICAgPC91bD4KKworICAgICAgICAgIDxkaXYgY2xhc3M9ImRpdjQiPgorICAgICAgICAgICAgPGg1PjxhIG5hbWU9IlhNTEJBU0VfUFJPUEFHQVRJT04iIGlkPQorICAgICAgICAgICAgIlhNTEJBU0VfUFJPUEFHQVRJT04iPjwvYT4yLjIuNC4xIFRlc3QgQ2FzZXMgZm9yCisgICAgICAgICAgICBjaGVja2luZyA8Y29kZT54bWw6YmFzZTwvY29kZT4gYXR0cmlidXRlCisgICAgICAgICAgICBwcm9wYWdhdGlvbjwvaDU+CisKKyAgICAgICAgICAgIDxwPlRoaXMgc2VjdGlvbiBkZWZpbmVzIHRlc3QgY2FzZXMgdGhhdCB0ZXN0IGhvdworICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zIHByb3BhZ2F0ZSA8Y29kZT54bWw6YmFzZTwvY29kZT4KKyAgICAgICAgICAgIGF0dHJpYnV0ZXMgdGhyb3VnaCB0aGUgdHJlZSB3aGVuIHRoZSByZXN1bHQgb2YgdGhlCisgICAgICAgICAgICBmaWx0ZXJpbmcgaXMgYSBkb2N1bWVudCBzdWJzZXQuPC9wPgorCisgICAgICAgICAgICA8cD5CZWxvdyBpcyB0aGUgPGEgaHJlZj0KKyAgICAgICAgICAgICIuLi9jMTRuMTEveG1sYmFzZS1wcm9wLWlucHV0LnhtbCI+aW5wdXQgZG9jdW1lbnQ8L2E+CisgICAgICAgICAgICBmb3IgdGhlIHRlc3QgY2FzZXMgaW4gdGhpcyBzZWN0aW9uOjwvcD4KKworICAgICAgICAgICAgPHRhYmxlIHN1bW1hcnk9IkV4YW1wbGUiIHdpZHRoPSIxMDAlIiBiZ2NvbG9yPSIjOTlGRkZGIgorICAgICAgICAgICAgYm9yZGVyPSIxIiBjZWxscGFkZGluZz0iNSIgY2xhc3M9ImVnIj4KKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0ZD4KKyAgICAgICAgICAgICAgICAgIDxwcmU+CisgICZsdDs/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8mZ3Q7CisgICZsdDtpZXRmOmMxNG4xMVhtbEJhc2VEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciXAorKyAgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyJcCisrICB4bWw6YmFzZT0iaHR0cDovL3htbGJhc2UuZXhhbXBsZS5vcmcveG1sYmFzZTAvIiZndDsKKyAgICAmbHQ7aWV0ZjplMSB4bWw6YmFzZT0iL3htbGJhc2UxLyImZ3Q7CisgICAgICAmbHQ7aWV0ZjplMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTEvIiZndDsKKyAgICAgICAgJmx0O2lldGY6ZTExMSB4bWw6YmFzZT0iL3htbGJhc2UxMTEvIi8mZ3Q7CisgICAgICAmbHQ7L2lldGY6ZTExJmd0OworICAgICAgJmx0O2lldGY6ZTEyIGF0PSIyIiZndDsKKyAgICAgICAgJmx0O2lldGY6ZTEyMSB4bWw6YmFzZT0iL3htbGJhc2UxMjEvIi8mZ3Q7CisgICAgICAmbHQ7L2lldGY6ZTEyJmd0OworICAgICZsdDsvaWV0ZjplMSZndDsKKyAgICAmbHQ7aWV0ZjplMiZndDsKKyAgICAgICZsdDtpZXRmOmUyMSB4bWw6YmFzZT0iL3htbGJhc2UyMS8iLyZndDsKKyAgICAmbHQ7L2lldGY6ZTImZ3Q7CisgICAgJmx0O2lldGY6ZTMmZ3Q7CisgICAgICAmbHQ7aWV0ZjplMzEgYXQ9IjMiLyZndDsKKyAgICAmbHQ7L2lldGY6ZTMmZ3Q7CisgICZsdDsvaWV0ZjpjMTRuMTFYbWxCYXNlRG9jMSZndDsKKzwvcHJlPgorICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorCisgICAgICAgICAgICA8cD5UaGUgZG9jdW1lbnQncyByb290IGVsZW1lbnQKKyAgICAgICAgICAgIDxjb2RlPmlldGY6YzE0bjExWG1sQmFzZURvYzE8L2NvZGU+IGRlZmluZXMgYW4KKyAgICAgICAgICAgIDxjb2RlPnhtbDpiYXNlPC9jb2RlPiBhdHRyaWJ1dGUuIFRoaXMgZWxlbWVudCBjb250YWlucworICAgICAgICAgICAgdGhyZWUgY2hpbGRyZW4gZWxlbWVudHMuPC9wPgorCisgICAgICAgICAgICA8cD5UaGUgZmlyc3QgZWxlbWVudCA8Y29kZT5pZXRmOmUxPC9jb2RlPiBoYXMgYW5vdGhlcgorICAgICAgICAgICAgPGNvZGU+eG1sOmJhc2U8L2NvZGU+IGF0dHJpYnV0ZS4gQWxsIHRoZQorICAgICAgICAgICAgPGNvZGU+aWV0ZjplMTwvY29kZT4ncyBkZXNjZW5kYW50IGVsZW1lbnRzIGhhdmUgYQorICAgICAgICAgICAgPGNvZGU+eG1sOmJhc2U8L2NvZGU+IGF0dHJpYnV0ZS4gVHJhbnNmb3JtcyB0aGF0IHNlbGVjdAorICAgICAgICAgICAgc3Vic2V0cyBvZiA8Y29kZT5pZXRmOmUxPC9jb2RlPidzIGRlc2NlbmRhbnRzIHdpbGwgdGVzdAorICAgICAgICAgICAgaG93IGVhY2ggbGV2ZWwgaW4gdGhlIHRyZWUgb2YgZWxlbWVudHMgaW5jb3Jwb3JhdGVzIGl0cworICAgICAgICAgICAgY29ycmVzcG9uZGluZyBwYXJ0IHRvIHRoZSB2YWx1ZSBvZiB0aGUgZmluYWwKKyAgICAgICAgICAgIDxjb2RlPnhtbDpiYXNlPC9jb2RlPi48L3A+CisKKyAgICAgICAgICAgIDxwPlRoZSBzZWNvbmQgZWxlbWVudCA8Y29kZT5pZXRmOmUyPC9jb2RlPiBkb2VzIG5vdAorICAgICAgICAgICAgaGF2ZSBhIDxjb2RlPnhtbDpiYXNlPC9jb2RlPiBhdHRyaWJ1dGUsIGJ1dCBpdHMgY2hpbGQKKyAgICAgICAgICAgIGVsZW1lbnQsIDxjb2RlPmlldGY6ZTIxPC9jb2RlPiBoYXMgYQorICAgICAgICAgICAgPGNvZGU+eG1sOmJhc2U8L2NvZGU+IGF0dHJpYnV0ZS4gVHJhbnNmb3JtcyB0aGF0IHNlbGVjdAorICAgICAgICAgICAgPGNvZGU+aWV0ZjplMjE8L2NvZGU+IHdpbGwgdGVzdCBob3cgaXQgdGFrZXMgdGhlIHZhbHVlCisgICAgICAgICAgICBvZiA8Y29kZT54bWw6YmFzZTwvY29kZT4gZnJvbSBhbiBhbmNlc3RvciBkaWZmZXJlbnQKKyAgICAgICAgICAgIHRoYW4gaXRzIHBhcmVudC48L3A+CisKKyAgICAgICAgICAgIDxwPkFzIGZvciB0aGUgdGhpcmQgZWxlbWVudCwgbmVpdGhlciBpdCBub3IgYW55IG9mIGl0cworICAgICAgICAgICAgZGVzY2VuZGFudHMgaGF2ZSBhIDxjb2RlPnhtbDpiYXNlPC9jb2RlPiBhdHRyaWJ1dGUuCisgICAgICAgICAgICBUcmFuc2Zvcm1zIHRoYXQgc2VsZWN0IDxjb2RlPmlldGY6ZTM8L2NvZGU+IG9yIGFueSBvZgorICAgICAgICAgICAgaXRzIGRlc2NlbmRhbnRzIHdpbGwgdGVzdCBob3cgdGhleSBpbmhlcml0IHRoZQorICAgICAgICAgICAgPGNvZGU+eG1sOmJhc2U8L2NvZGU+IGF0dHJpYnV0ZSBmcm9tIHRoZSByb290IGVsZW1lbnQKKyAgICAgICAgICAgIHdpdGhvdXQgYW55IGZ1cnRoZXIgcHJvY2Vzc2luZy48L3A+CisKKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjEiPgorICAgICAgICAgICAgICA8dGJvZHk+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjIiIGlkPQorICAgICAgICAgICAgICAgICAgImMxNG4xMXhtbGJhc2UtcHJvcC0xIj5UZXN0IGNhc2UKKyAgICAgICAgICAgICAgICAgIGMxNG4xMS94bWxiYXNlLXByb3AtMTwvdGg+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5JbnB1dCBkZXRhaWxzPC90aD4KKworICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlRoZSBkb2N1bWVudCBzaG93bgorICAgICAgICAgICAgICAgICAgYWJvdmUuIFRoZSA8Y29kZT5kczpUcmFuc2Zvcm08L2NvZGU+IGNvbnRhaW5zIGEKKyAgICAgICAgICAgICAgICAgIFhQYXRoIGV4cHJlc3Npb24gd2hvc2UgcmVzdWx0IGlzIGEgbm9kZSBzZXQgdGhhdAorICAgICAgICAgICAgICAgICAgaW5jbHVkZXMgZWxlbWVudAorICAgICAgICAgICAgICAgICAgPGNvZGU+aWV0ZjpjMTRuMTFYbWxCYXNlRG9jMTwvY29kZT4gYW5kIHRoZSBjaGlsZAorICAgICAgICAgICAgICAgICAgPGNvZGU+aWV0ZjplMTwvY29kZT4gYW5kIGl0cyBkZXNjZW5kYW50LjwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5SYXRpb25hbGU8L3RoPgorCisgICAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+Q2hlY2sgdGhhdAorICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zIG9mIDxhIGhyZWY9CisgICAgICAgICAgICAgICAgICAiI1hNTC1DMTROMS4xIj5bWE1MLUMxNE4xLjFdPC9hPiB3b3JrIHByb3Blcmx5CisgICAgICAgICAgICAgICAgICB3aGVuIHRoZSA8Y29kZT54bWw6YmFzZTwvY29kZT4gb3JpZ2luIGFwcGVhcnMgaW4KKyAgICAgICAgICAgICAgICAgIHRoZSBvdXRwdXQgZG9jdW1lbnQgc3Vic2V0IGFuZCBhbHNvIGNoaWxkcmVuIHdpdGgKKyAgICAgICAgICAgICAgICAgIDxjb2RlPnhtbDpiYXNlPC9jb2RlPiwgd2hpY2ggZG8gbm90IHJlcXVpcmUKKyAgICAgICAgICAgICAgICAgIGZ1cnRoZXIgcHJvY2Vzc2luZywgYXJlIGFsc28gcHJlc2VudC48L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICIuLi9jMTRuMTEveG1sYmFzZS1wcm9wLTEueHBhdGgiPkRvY3VtZW50IHN1YnNldAorICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjwvYT48L3RoPgorCisgICAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+KC8vLiB8IC8vQCogfAorICAgICAgICAgICAgICAgICAgLy9uYW1lc3BhY2U6OiopCisgICAgICAgICAgICAgICAgICBbYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjpjMTRuMTFYbWxCYXNlRG9jMSBhbmQKKyAgICAgICAgICAgICAgICAgIG5vdChhbmNlc3Rvci1vci1zZWxmOjppZXRmOmUyKV08L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICIuLi9jMTRuMTEveG1sYmFzZS1wcm9wLTEub3V0cHV0Ij5PdXRwdXQ8L2E+PC90aD4KKworICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPgorICAgICAgICAgICAgICAgICAgICA8cHJlPgorICAmbHQ7aWV0ZjpjMTRuMTFYbWxCYXNlRG9jMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIlwKKysgIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciXAorKyAgeG1sOmJhc2U9Imh0dHA6Ly94bWxiYXNlLmV4YW1wbGUub3JnL3htbGJhc2UwLyImZ3Q7CisgICAgJmx0O2lldGY6ZTEgeG1sOmJhc2U9Ii94bWxiYXNlMS8iJmd0OworICAgICAgJmx0O2lldGY6ZTExIHhtbDpiYXNlPSIveG1sYmFzZTExLyImZ3Q7CisgICAgICAgICZsdDtpZXRmOmUxMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTExLyImZ3Q7Jmx0Oy9pZXRmOmUxMTEmZ3Q7CisgICAgICAmbHQ7L2lldGY6ZTExJmd0OworICAgICAgJmx0O2lldGY6ZTEyIGF0PSIyIiZndDsKKyAgICAgICAgJmx0O2lldGY6ZTEyMSB4bWw6YmFzZT0iL3htbGJhc2UxMjEvIiZndDsmbHQ7L2lldGY6ZTEyMSZndDsKKyAgICAgICZsdDsvaWV0ZjplMTImZ3Q7CisgICAgJmx0Oy9pZXRmOmUxJmd0OworICAgIAorICAgICZsdDtpZXRmOmUzJmd0OworICAgICAgJmx0O2lldGY6ZTMxIGF0PSIzIiZndDsmbHQ7L2lldGY6ZTMxJmd0OworICAgICZsdDsvaWV0ZjplMyZndDsKKyAgJmx0Oy9pZXRmOmMxNG4xMVhtbEJhc2VEb2MxJmd0OworPC9wcmU+CisgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgIDwvdGJvZHk+CisgICAgICAgICAgICA8L3RhYmxlPgorCisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIxIj4KKyAgICAgICAgICAgICAgPHRib2R5PgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIyIiBpZD0KKyAgICAgICAgICAgICAgICAgICJjMTRuMTF4bWxiYXNlLXByb3AtMiI+VGVzdCBjYXNlCisgICAgICAgICAgICAgICAgICBjMTRuMTEveG1sYmFzZS1wcm9wLTI8L3RoPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+SW5wdXQgZGV0YWlsczwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5UaGUgZG9jdW1lbnQgc2hvd24KKyAgICAgICAgICAgICAgICAgIGFib3ZlLiBUaGUgPGNvZGU+ZHM6VHJhbnNmb3JtPC9jb2RlPiBjb250YWlucyBhCisgICAgICAgICAgICAgICAgICBYUGF0aCBleHByZXNzaW9uIHdob3NlIHJlc3VsdCBpcyBhIG5vZGUgc2V0IHRoYXQKKyAgICAgICAgICAgICAgICAgIGluY2x1ZGVzIGVsZW1lbnQgPGNvZGU+aWV0ZjplMTwvY29kZT4gYW5kIGl0cworICAgICAgICAgICAgICAgICAgZGVzY2VuZGFudCBidXQgbm90CisgICAgICAgICAgICAgICAgICA8Y29kZT5pZXRmOmMxNG4xMVhtbEJhc2VEb2MxPC9jb2RlPi48L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+UmF0aW9uYWxlPC90aD4KKworICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPkNoZWNrIHRoYXQKKyAgICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9ucyBvZiA8YSBocmVmPQorICAgICAgICAgICAgICAgICAgIiNYTUwtQzE0TjEuMSI+W1hNTC1DMTROMS4xXTwvYT4gcHJvcGVybHkgYnVpbGQKKyAgICAgICAgICAgICAgICAgIHRoZSA8Y29kZT54bWw6YmFzZTwvY29kZT4gYXQgdGhlIGZpcnN0IGxldmVsCisgICAgICAgICAgICAgICAgICAoPGNvZGU+aWV0ZjplMTwvY29kZT4pLjwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPQorICAgICAgICAgICAgICAgICAgIi4uL2MxNG4xMS94bWxiYXNlLXByb3AtMi54cGF0aCI+RG9jdW1lbnQgc3Vic2V0CisgICAgICAgICAgICAgICAgICBleHByZXNzaW9uPC9hPjwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4oLy8uIHwgLy9AKiB8CisgICAgICAgICAgICAgICAgICAvL25hbWVzcGFjZTo6KikgW2FuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTFdPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgICAiLi4vYzE0bjExL3htbGJhc2UtcHJvcC0yLm91dHB1dCI+T3V0cHV0PC9hPjwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4KKyAgICAgICAgICAgICAgICAgICAgPHByZT4KKyAgJmx0O2lldGY6ZTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyJcCisrICB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIlwKKysgIHhtbDpiYXNlPSJodHRwOi8veG1sYmFzZS5leGFtcGxlLm9yZy94bWxiYXNlMS8iJmd0OworICAgICAgJmx0O2lldGY6ZTExIHhtbDpiYXNlPSIveG1sYmFzZTExLyImZ3Q7CisgICAgICAgICZsdDtpZXRmOmUxMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTExLyImZ3Q7Jmx0Oy9pZXRmOmUxMTEmZ3Q7CisgICAgICAmbHQ7L2lldGY6ZTExJmd0OworICAgICAgJmx0O2lldGY6ZTEyIGF0PSIyIiZndDsKKyAgICAgICAgJmx0O2lldGY6ZTEyMSB4bWw6YmFzZT0iL3htbGJhc2UxMjEvIiZndDsmbHQ7L2lldGY6ZTEyMSZndDsKKyAgICAgICZsdDsvaWV0ZjplMTImZ3Q7CisgICAgJmx0Oy9pZXRmOmUxJmd0OworPC9wcmU+CisgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgIDwvdGJvZHk+CisgICAgICAgICAgICA8L3RhYmxlPgorCisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIxIj4KKyAgICAgICAgICAgICAgPHRib2R5PgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIyIiBpZD0KKyAgICAgICAgICAgICAgICAgICJjMTRuMTF4bWxiYXNlLXByb3AtMyI+VGVzdCBjYXNlCisgICAgICAgICAgICAgICAgICBjMTRuMTEveG1sYmFzZS1wcm9wLTM8L3RoPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+SW5wdXQgZGV0YWlsczwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5UaGUgZG9jdW1lbnQgc2hvd24KKyAgICAgICAgICAgICAgICAgIGFib3ZlLiBUaGUgPGNvZGU+ZHM6VHJhbnNmb3JtPC9jb2RlPiBjb250YWlucyBhCisgICAgICAgICAgICAgICAgICBYUGF0aCBleHByZXNzaW9uIHdob3NlIHJlc3VsdCBpcyBhIG5vZGUgc2V0IHRoYXQKKyAgICAgICAgICAgICAgICAgIGluY2x1ZGVzIGVsZW1lbnQgPGNvZGU+aWV0ZjplMTE8L2NvZGU+IGFuZCBpdHMKKyAgICAgICAgICAgICAgICAgIGRlc2NlbmRhbnQuIEVsZW1lbnRzCisgICAgICAgICAgICAgICAgICA8Y29kZT5pZXRmOmMxNG4xMVhtbEJhc2VEb2MxPC9jb2RlPiBhbmQKKyAgICAgICAgICAgICAgICAgIDxjb2RlPmlldGY6ZTE8L2NvZGU+IGRvIG5vdCBhcHBlYXIuPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlJhdGlvbmFsZTwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5DaGVjayB0aGF0CisgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbnMgb2YgPGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICIjWE1MLUMxNE4xLjEiPltYTUwtQzE0TjEuMV08L2E+IHByb3Blcmx5IGJ1aWxkCisgICAgICAgICAgICAgICAgICB0aGUgPGNvZGU+eG1sOmJhc2U8L2NvZGU+IGlmIG9uZSBvZiBpbnRlcm1lZGlhdGUKKyAgICAgICAgICAgICAgICAgIHRoZSBsZXZlbHMgKDxjb2RlPmlldGY6ZTE8L2NvZGU+KSBhcmUgYWJzZW50IGZyb20KKyAgICAgICAgICAgICAgICAgIHRoZSBkb2N1bWVudCBzdWJzZXQuPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgICAiLi4vYzE0bjExL3htbGJhc2UtcHJvcC0zLnhwYXRoIj5Eb2N1bWVudCBzdWJzZXQKKyAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb248L2E+PC90aD4KKworICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPigvLy4gfCAvL0AqIHwKKyAgICAgICAgICAgICAgICAgIC8vbmFtZXNwYWNlOjoqKSBbYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTFdPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgICAiLi4vYzE0bjExL3htbGJhc2UtcHJvcC0zLm91dHB1dCI+T3V0cHV0PC9hPjwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4KKyAgICAgICAgICAgICAgICAgICAgPHByZT4KKyAgJmx0O2lldGY6ZTExIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciXAorKyAgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyJcCisrICB4bWw6YmFzZT0iaHR0cDovL3htbGJhc2UuZXhhbXBsZS5vcmcveG1sYmFzZTExLyImZ3Q7CisgICAgICAgICZsdDtpZXRmOmUxMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTExLyImZ3Q7Jmx0Oy9pZXRmOmUxMTEmZ3Q7CisgICAgICAmbHQ7L2lldGY6ZTExJmd0OworPC9wcmU+CisgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgIDwvdGJvZHk+CisgICAgICAgICAgICA8L3RhYmxlPgorCisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIxIj4KKyAgICAgICAgICAgICAgPHRib2R5PgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIyIiBpZD0KKyAgICAgICAgICAgICAgICAgICJjMTRuMTF4bWxiYXNlLXByb3AtNCI+VGVzdCBjYXNlCisgICAgICAgICAgICAgICAgICBjMTRuMTEveG1sYmFzZS1wcm9wLTQ8L3RoPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+SW5wdXQgZGV0YWlsczwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5UaGUgZG9jdW1lbnQgc2hvd24KKyAgICAgICAgICAgICAgICAgIGFib3ZlLiBUaGUgPGNvZGU+ZHM6VHJhbnNmb3JtPC9jb2RlPiBjb250YWlucyBhCisgICAgICAgICAgICAgICAgICBYUGF0aCBleHByZXNzaW9uIHdob3NlIHJlc3VsdCBpcyBhIG5vZGUgc2V0IHRoYXQKKyAgICAgICAgICAgICAgICAgIGluY2x1ZGVzIGVsZW1lbnQgPGNvZGU+aWV0ZjplMTExPC9jb2RlPiBhbmQgaXRzCisgICAgICAgICAgICAgICAgICBkZXNjZW5kYW50LiBFbGVtZW50cworICAgICAgICAgICAgICAgICAgPGNvZGU+aWV0ZjpjMTRuMTFYbWxCYXNlRG9jMTwvY29kZT4sCisgICAgICAgICAgICAgICAgICA8Y29kZT5pZXRmOmUxMTwvY29kZT4gYW5kIDxjb2RlPmlldGY6ZTE8L2NvZGU+IGRvCisgICAgICAgICAgICAgICAgICBub3QgYXBwZWFyLjwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5SYXRpb25hbGU8L3RoPgorCisgICAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+Q2hlY2sgdGhhdAorICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zIG9mIDxhIGhyZWY9CisgICAgICAgICAgICAgICAgICAiI1hNTC1DMTROMS4xIj5bWE1MLUMxNE4xLjFdPC9hPiBwcm9wZXJseSBidWlsZAorICAgICAgICAgICAgICAgICAgdGhlIDxjb2RlPnhtbDpiYXNlPC9jb2RlPiBpZiBzZXZlcmFsIGludGVybWVkaWF0ZQorICAgICAgICAgICAgICAgICAgbGV2ZWxzICg8Y29kZT5pZXRmOmUxPC9jb2RlPiBhbmQKKyAgICAgICAgICAgICAgICAgIDxjb2RlPmlldGY6ZTExPC9jb2RlPikgYXJlIGFic2VudCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgZG9jdW1lbnQgc3Vic2V0LjwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPQorICAgICAgICAgICAgICAgICAgIi4uL2MxNG4xMS94bWxiYXNlLXByb3AtNC54cGF0aCI+RG9jdW1lbnQgc3Vic2V0CisgICAgICAgICAgICAgICAgICBleHByZXNzaW9uPC9hPjwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4oLy8uIHwgLy9AKiB8CisgICAgICAgICAgICAgICAgICAvL25hbWVzcGFjZTo6KikKKyAgICAgICAgICAgICAgICAgIFthbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMTFdPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgICAiLi4vYzE0bjExL3htbGJhc2UtcHJvcC00Lm91dHB1dCI+T3V0cHV0PC9hPjwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4KKyAgICAgICAgICAgICAgICAgICAgPHByZT4KKyAgJmx0O2lldGY6ZTExMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIlwKKysgIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciXAorKyAgeG1sOmJhc2U9Imh0dHA6Ly94bWxiYXNlLmV4YW1wbGUub3JnL3htbGJhc2UxMTEvIiZndDsmbHQ7L2lldGY6ZTExMSZndDsKKzwvcHJlPgorICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICA8L3Rib2R5PgorICAgICAgICAgICAgPC90YWJsZT4KKworICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMSI+CisgICAgICAgICAgICAgIDx0Ym9keT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMiIgaWQ9CisgICAgICAgICAgICAgICAgICAiYzE0bjExeG1sYmFzZS1wcm9wLTUiPlRlc3QgY2FzZQorICAgICAgICAgICAgICAgICAgYzE0bjExL3htbGJhc2UtcHJvcC01PC90aD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPklucHV0IGRldGFpbHM8L3RoPgorCisgICAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+VGhlIGRvY3VtZW50IHNob3duCisgICAgICAgICAgICAgICAgICBhYm92ZS4gVGhlIDxjb2RlPmRzOlRyYW5zZm9ybTwvY29kZT4gY29udGFpbnMgYQorICAgICAgICAgICAgICAgICAgWFBhdGggZXhwcmVzc2lvbiB3aG9zZSByZXN1bHQgaXMgYSBub2RlIHNldCB0aGF0CisgICAgICAgICAgICAgICAgICBpbmNsdWRlcyBlbGVtZW50IDxjb2RlPmlldGY6ZTI8L2NvZGU+IGFuZCBpdHMKKyAgICAgICAgICAgICAgICAgIGRlc2NlbmRhbnQuIEVsZW1lbnRzCisgICAgICAgICAgICAgICAgICA8Y29kZT5pZXRmOmMxNG4xMVhtbEJhc2VEb2MxPC9jb2RlPiwKKyAgICAgICAgICAgICAgICAgIDxjb2RlPmlldGY6ZTE8L2NvZGU+IGFuZCBpdHMgZGVzY2VuZGFudCwgYW5kCisgICAgICAgICAgICAgICAgICA8Y29kZT5pZXRmOmUzPC9jb2RlPiBhbmQgaXRzIGRlc2NlbmRhbnQgZG8gbm90CisgICAgICAgICAgICAgICAgICBhcHBlYXIuPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlJhdGlvbmFsZTwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5DaGVjayB0aGF0CisgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbnMgb2YgPGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICIjWE1MLUMxNE4xLjEiPltYTUwtQzE0TjEuMV08L2E+IHByb3Blcmx5IGJ1aWxkCisgICAgICAgICAgICAgICAgICB0aGUgPGNvZGU+eG1sOmJhc2U8L2NvZGU+IGlmIG9uZSBpbnRlcm1lZGlhdGUKKyAgICAgICAgICAgICAgICAgIGxldmVsICg8Y29kZT5pZXRmOmUyPC9jb2RlPikgd2l0aG91dCBhbnkKKyAgICAgICAgICAgICAgICAgIDxjb2RlPnhtbDpiYXNlPC9jb2RlPiBhdHRyaWJ1dGUgaXMgYWJzZW50IGZyb20KKyAgICAgICAgICAgICAgICAgIHRoZSBkb2N1bWVudCBzdWJzZXQuPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgICAiLi4vYzE0bjExL3htbGJhc2UtcHJvcC01LnhwYXRoIj5Eb2N1bWVudCBzdWJzZXQKKyAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb248L2E+PC90aD4KKworICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPigvLy4gfCAvL0AqIHwKKyAgICAgICAgICAgICAgICAgIC8vbmFtZXNwYWNlOjoqKSBbYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMjFdPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgICAiLi4vYzE0bjExL3htbGJhc2UtcHJvcC01Lm91dHB1dCI+T3V0cHV0PC9hPjwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4KKyAgICAgICAgICAgICAgICAgICAgPHByZT4KKyAgJmx0O2lldGY6ZTIxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciXAorKyAgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyJcCisrICB4bWw6YmFzZT0iaHR0cDovL3htbGJhc2UuZXhhbXBsZS5vcmcveG1sYmFzZTIxLyImZ3Q7Jmx0Oy9pZXRmOmUyMSZndDsKKzwvcHJlPgorICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICA8L3Rib2R5PgorICAgICAgICAgICAgPC90YWJsZT4KKworICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMSI+CisgICAgICAgICAgICAgIDx0Ym9keT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMiIgaWQ9CisgICAgICAgICAgICAgICAgICAiYzE0bjExeG1sYmFzZS1wcm9wLTYiPlRlc3QgY2FzZQorICAgICAgICAgICAgICAgICAgYzE0bjExL3htbGJhc2UtcHJvcC02PC90aD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPklucHV0IGRldGFpbHM8L3RoPgorCisgICAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+VGhlIGRvY3VtZW50IHNob3duCisgICAgICAgICAgICAgICAgICBhYm92ZS4gVGhlIDxjb2RlPmRzOlRyYW5zZm9ybTwvY29kZT4gY29udGFpbnMgYQorICAgICAgICAgICAgICAgICAgWFBhdGggZXhwcmVzc2lvbiB3aG9zZSByZXN1bHQgaXMgYSBub2RlIHNldCB0aGF0CisgICAgICAgICAgICAgICAgICBpbmNsdWRlcyBlbGVtZW50IDxjb2RlPmlldGY6ZTM8L2NvZGU+IGFuZCBpdHMKKyAgICAgICAgICAgICAgICAgIGRlc2NlbmRhbnQuIEVsZW1lbnRzCisgICAgICAgICAgICAgICAgICA8Y29kZT5pZXRmOmMxNG4xMVhtbEJhc2VEb2MxPC9jb2RlPiwKKyAgICAgICAgICAgICAgICAgIDxjb2RlPmlldGY6ZTE8L2NvZGU+IGFuZCBpdHMgZGVzY2VuZGFudCwgYW5kCisgICAgICAgICAgICAgICAgICA8Y29kZT5pZXRmOmUyPC9jb2RlPiBhbmQgaXRzIGRlc2NlbmRhbnQgZG8gbm90CisgICAgICAgICAgICAgICAgICBhcHBlYXIuPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlJhdGlvbmFsZTwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5DaGVjayB0aGF0CisgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbnMgb2YgPGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICIjWE1MLUMxNE4xLjEiPltYTUwtQzE0TjEuMV08L2E+IHByb3Blcmx5IGJ1aWxkCisgICAgICAgICAgICAgICAgICB0aGUgPGNvZGU+eG1sOmJhc2U8L2NvZGU+IGluIG9uZSBlbGVtZW50IHRoYXQKKyAgICAgICAgICAgICAgICAgIG9yaWdpbmFsbHkgaGFkIG5vIDxjb2RlPnhtbDpiYXNlPC9jb2RlPgorICAgICAgICAgICAgICAgICAgYXR0cmlidXRlLjwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPQorICAgICAgICAgICAgICAgICAgIi4uL2MxNG4xMS94bWxiYXNlLXByb3AtNi54cGF0aCI+RG9jdW1lbnQgc3Vic2V0CisgICAgICAgICAgICAgICAgICBleHByZXNzaW9uPC9hPjwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4oLy8uIHwgLy9AKiB8CisgICAgICAgICAgICAgICAgICAvL25hbWVzcGFjZTo6KikgW2FuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTNdPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgICAiLi4vYzE0bjExL3htbGJhc2UtcHJvcC02Lm91dHB1dCI+T3V0cHV0PC9hPjwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4KKyAgICAgICAgICAgICAgICAgICAgPHByZT4KKyAgJmx0O2lldGY6ZTMgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyJcCisrICB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIlwKKysgIHhtbDpiYXNlPSJodHRwOi8veG1sYmFzZS5leGFtcGxlLm9yZy94bWxiYXNlMC8iJmd0OworICAgICAgJmx0O2lldGY6ZTMxIGF0PSIzIiZndDsmbHQ7L2lldGY6ZTMxJmd0OworICAgICZsdDsvaWV0ZjplMyZndDsKKzwvcHJlPgorICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICA8L3Rib2R5PgorICAgICAgICAgICAgPC90YWJsZT4KKworICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMSI+CisgICAgICAgICAgICAgIDx0Ym9keT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMiIgaWQ9CisgICAgICAgICAgICAgICAgICAiYzE0bjExeG1sYmFzZS1wcm9wLTciPlRlc3QgY2FzZQorICAgICAgICAgICAgICAgICAgYzE0bjExL3htbGJhc2UtcHJvcC03PC90aD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPklucHV0IGRldGFpbHM8L3RoPgorCisgICAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+VGhlIGRvY3VtZW50IHNob3duCisgICAgICAgICAgICAgICAgICBhYm92ZS4gVGhlIDxjb2RlPmRzOlRyYW5zZm9ybTwvY29kZT4gY29udGFpbnMgYQorICAgICAgICAgICAgICAgICAgWFBhdGggZXhwcmVzc2lvbiB3aG9zZSByZXN1bHQgaXMgYSBub2RlIHNldCB0aGF0CisgICAgICAgICAgICAgICAgICBpbmNsdWRlcyBlbGVtZW50cworICAgICAgICAgICAgICAgICAgPGNvZGU+aWV0ZjpjMTRuMTFYbWxCYXNlRG9jMTwvY29kZT4gYW5kCisgICAgICAgICAgICAgICAgICA8Y29kZT5pZXRmOmUzPC9jb2RlPiBhbmQgaXRzIGRlc2NlbmRhbnQuIEVsZW1lbnRzCisgICAgICAgICAgICAgICAgICA8Y29kZT5pZXRmOmUxPC9jb2RlPiBhbmQgaXRzIGRlc2NlbmRhbnQsIGFuZAorICAgICAgICAgICAgICAgICAgPGNvZGU+aWV0ZjplMjwvY29kZT4gYW5kIGl0cyBkZXNjZW5kYW50IGRvIG5vdAorICAgICAgICAgICAgICAgICAgYXBwZWFyLjwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5SYXRpb25hbGU8L3RoPgorCisgICAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+Q2hlY2sgdGhhdAorICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zIG9mIDxhIGhyZWY9CisgICAgICAgICAgICAgICAgICAiI1hNTC1DMTROMS4xIj5bWE1MLUMxNE4xLjFdPC9hPiBkbyBub3QgcGFzcyB0aGUKKyAgICAgICAgICAgICAgICAgIDxjb2RlPnhtbDpiYXNlPC9jb2RlPiB0byBhbm90aGVyIGVsZW1lbnQgd2hlbiBpdAorICAgICAgICAgICAgICAgICAgaXMgbm90IG5lY2Vzc2FyeS48L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICIuLi9jMTRuMTEveG1sYmFzZS1wcm9wLTcueHBhdGgiPkRvY3VtZW50IHN1YnNldAorICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjwvYT48L3RoPgorCisgICAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+KC8vLiB8IC8vQCogfAorICAgICAgICAgICAgICAgICAgLy9uYW1lc3BhY2U6OiopCisgICAgICAgICAgICAgICAgICBbYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjpjMTRuMTFYbWxCYXNlRG9jMSBhbmQKKyAgICAgICAgICAgICAgICAgIG5vdChhbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxIG9yCisgICAgICAgICAgICAgICAgICBhbmNlc3Rvci1vci1zZWxmOjppZXRmOmUyKV08L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICIuLi9jMTRuMTEveG1sYmFzZS1wcm9wLTcub3V0cHV0Ij5PdXRwdXQ8L2E+PC90aD4KKworICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPgorICAgICAgICAgICAgICAgICAgICA8cHJlPgorICAmbHQ7aWV0ZjpjMTRuMTFYbWxCYXNlRG9jMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIlwKKysgIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciXAorKyAgeG1sOmJhc2U9Imh0dHA6Ly94bWxiYXNlLmV4YW1wbGUub3JnL3htbGJhc2UwLyImZ3Q7CisgICAgCisgICAgCisgICAgJmx0O2lldGY6ZTMmZ3Q7CisgICAgICAmbHQ7aWV0ZjplMzEgYXQ9IjMiJmd0OyZsdDsvaWV0ZjplMzEmZ3Q7CisgICAgJmx0Oy9pZXRmOmUzJmd0OworICAmbHQ7L2lldGY6YzE0bjExWG1sQmFzZURvYzEmZ3Q7Cis8L3ByZT4KKyAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgPC90Ym9keT4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgPC9kaXY+CisKKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkaXY0Ij4KKyAgICAgICAgICAgIDxoNT48YSBuYW1lPSJYTUxCQVNFX0MxNE4xMVNQRUMiIGlkPQorICAgICAgICAgICAgIlhNTEJBU0VfQzE0TjExU1BFQyI+PC9hPjIuMi40LjIgVGVzdCBDYXNlcyBmb3IKKyAgICAgICAgICAgIGNoZWNraW5nIFhNTC1DMTROMS4xIHNwZWNpZmljYXRpb24gdGVzdHM8L2g1PgorCisgICAgICAgICAgICA8cD5UaGlzIHNlY3Rpb24gZGVmaW5lcyB0ZXN0IGNhc2VzIHRoYXQgYXJlIGJhc2VkIG9uCisgICAgICAgICAgICB0aGUgZXhhbXBsZXMgaW4gdGhlIEMxNE4xMSBzcGVjaWZpY2F0aW9uIHRoYXQgcHJvcGFnYXRlCisgICAgICAgICAgICA8Y29kZT54bWw6YmFzZTwvY29kZT4gYXR0cmlidXRlcyB0aHJvdWdoIHRoZSB0cmVlIHdoZW4KKyAgICAgICAgICAgIHRoZSByZXN1bHQgb2YgdGhlIGZpbHRlcmluZyBpcyBhIGRvY3VtZW50IHN1YnNldC48L3A+CisKKyAgICAgICAgICAgIDxwPkJlbG93IGlzIHRoZSA8YSBocmVmPQorICAgICAgICAgICAgIi4uL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMtaW5wdXQueG1sIj5pbnB1dAorICAgICAgICAgICAgZG9jdW1lbnQ8L2E+IGZyb20gc2VjdGlvbiAzLjggb2YgPGEgaHJlZj0KKyAgICAgICAgICAgICIjWE1MLUMxNE4xLjEiPltYTUwtQzE0TjEuMV08L2E+IGZvciB0aGUgdGVzdCBjYXNlCisgICAgICAgICAgICBjMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjLTEwMiBiZWxvdzo8L3A+CisKKyAgICAgICAgICAgIDx0YWJsZSBzdW1tYXJ5PSJFeGFtcGxlIiB3aWR0aD0iMTAwJSIgYmdjb2xvcj0iIzk5RkZGRiIKKyAgICAgICAgICAgIGJvcmRlcj0iMSIgY2VsbHBhZGRpbmc9IjUiIGNsYXNzPSJlZyI+CisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGQ+CisgICAgICAgICAgICAgICAgICA8cHJlPgorICAmbHQ7IURPQ1RZUEUgZG9jIFsNCisgICZsdDshQVRUTElTVCBlMiB4bWw6c3BhY2UgKGRlZmF1bHR8cHJlc2VydmUpICdwcmVzZXJ2ZScmZ3Q7DQorICAmbHQ7IUFUVExJU1QgZTMgaWQgSUQgI0lNUExJRUQmZ3Q7DQorICBdJmd0Ow0KKyAgJmx0O2RvYyB4bWxucz0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyJcCisrICB4bWw6YmFzZT0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS9zb21ldGhpbmcvZWxzZSImZ3Q7DQorICAgICAmbHQ7ZTEmZ3Q7DQorICAgICAgICAmbHQ7ZTIgeG1sbnM9IiIgeG1sOmlkPSJhYmMiIHhtbDpiYXNlPSIuLi9iYXIvIiZndDsNCisgICAgICAgICAgICZsdDtlMyBpZD0iRTMiIHhtbDpiYXNlPSJmb28iLyZndDsNCisgICAgICAgICZsdDsvZTImZ3Q7DQorICAgICAmbHQ7L2UxJmd0Ow0KKyAgJmx0Oy9kb2MmZ3Q7CisgICAgICAgICAgICAgICAgCis8L3ByZT4KKyAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKworICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMSI+CisgICAgICAgICAgICAgIDx0Ym9keT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMiIgaWQ9CisgICAgICAgICAgICAgICAgICAiYzE0bjExeG1sYmFzZS1jMTRuMTFzcGVjLTEwMiI+VGVzdCBjYXNlCisgICAgICAgICAgICAgICAgICBjMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjLTEwMjwvdGg+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5JbnB1dCBkZXRhaWxzPC90aD4KKworICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlRoZSBpbnB1dCBkb2N1bWVudAorICAgICAgICAgICAgICAgICAgc2hvd24gYWJvdmUuPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlJhdGlvbmFsZTwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5DaGVjayB0aGF0IGNvcnJlY3QKKyAgICAgICAgICAgICAgICAgIHhtbDpiYXNlIGZpeHVwIGlzIHBlcmZvcm1lZC48L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICIuLi9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjLTEwMi54cGF0aCI+RG9jdW1lbnQKKyAgICAgICAgICAgICAgICAgIHN1YnNldCBleHByZXNzaW9uPC9hPjwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4oLy8uIHwgLy9AKiB8CisgICAgICAgICAgICAgICAgICAvL25hbWVzcGFjZTo6Kilbc2VsZjo6aWV0ZjplMSBvciAocGFyZW50OjppZXRmOmUxCisgICAgICAgICAgICAgICAgICBhbmQgbm90KHNlbGY6OnRleHQoKSBvciBzZWxmOjplMikpIG9yCisgICAgICAgICAgICAgICAgICBjb3VudChpZCgiRTMiKXxhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpID0KKyAgICAgICAgICAgICAgICAgIGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSldPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgICAiLi4vYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYy0xMDIub3V0cHV0Ij5PdXRwdXQ8L2E+PC90aD4KKworICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPgorICAgICAgICAgICAgICAgICAgICA8cHJlPgorICAmbHQ7ZTEgeG1sbnM9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciXAorKyAgeG1sOmJhc2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vc29tZXRoaW5nL2Vsc2UiJmd0O1wKKysgJmx0O2UzIHhtbG5zPSIiIGlkPSJFMyIgeG1sOmJhc2U9Ii4uL2Jhci9mb28iIHhtbDpzcGFjZT0icHJlc2VydmUiJmd0O1wKKysgJmx0Oy9lMyZndDsmbHQ7L2UxJmd0OworPC9wcmU+CisgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgIDwvdGJvZHk+CisgICAgICAgICAgICA8L3RhYmxlPgorCisgICAgICAgICAgICA8cD5CZWxvdyBpcyB0aGUgPGEgaHJlZj0KKyAgICAgICAgICAgICIuLi9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMi1pbnB1dC54bWwiPmlucHV0CisgICAgICAgICAgICBkb2N1bWVudDwvYT4gc2ltaWxhciB0byB0aGUgZXhhbXBsZSBmcm9tIHNlY3Rpb24gMy44IG9mCisgICAgICAgICAgICA8YSBocmVmPSIjWE1MLUMxNE4xLjEiPltYTUwtQzE0TjEuMV08L2E+IGZvciB0aGUgdGVzdAorICAgICAgICAgICAgY2FzZSBjMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjLTEwMiBiZWxvdy4gVGhlIG1haW4KKyAgICAgICAgICAgIGRpZmZlcmVuY2UgaXMgdGhhdCB0aGUgdmFsdWUgb2YgdGhlIHhtbDpiYXNlIGF0dHJpYnV0ZQorICAgICAgICAgICAgb2YgdGhlIGUyIGVsZW1lbnQgaXMgImJhci8iIGluc3RlYWQgb2YgIi4uL2JhciIuPC9wPgorCisgICAgICAgICAgICA8dGFibGUgc3VtbWFyeT0iRXhhbXBsZSIgd2lkdGg9IjEwMCUiIGJnY29sb3I9IiM5OUZGRkYiCisgICAgICAgICAgICBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSI1IiBjbGFzcz0iZWciPgorICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRkPgorICAgICAgICAgICAgICAgICAgPHByZT4KKyAgJmx0OyFET0NUWVBFIGRvYyBbCisgICZsdDshQVRUTElTVCBlMiB4bWw6c3BhY2UgKGRlZmF1bHR8cHJlc2VydmUpICdwcmVzZXJ2ZScmZ3Q7CisgICZsdDshQVRUTElTVCBlMyBpZCBJRCAjSU1QTElFRCZndDsKKyAgXSZndDsKKyAgJmx0O2RvYyB4bWxucz0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyJcCisrICB4bWw6YmFzZT0ic29tZXRoaW5nL2Vsc2UiJmd0OworICAgICAmbHQ7ZTEmZ3Q7CisgICAgICAgICZsdDtlMiB4bWxucz0iIiB4bWw6aWQ9ImFiYyIgeG1sOmJhc2U9ImJhci8iJmd0OworICAgICAgICAgICAmbHQ7ZTMgaWQ9IkUzIiB4bWw6YmFzZT0iZm9vIi8mZ3Q7CisgICAgICAgICZsdDsvZTImZ3Q7CisgICAgICZsdDsvZTEmZ3Q7CisgICZsdDsvZG9jJmd0OworICAgICAgICAgICAgICAgIAorPC9wcmU+CisgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisKKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjEiPgorICAgICAgICAgICAgICA8dGJvZHk+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjIiIGlkPQorICAgICAgICAgICAgICAgICAgImMxNG4xMXhtbGJhc2UtYzE0bjExc3BlYzItMTAyIj5UZXN0IGNhc2UKKyAgICAgICAgICAgICAgICAgIGMxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMyLTEwMjwvdGg+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5JbnB1dCBkZXRhaWxzPC90aD4KKworICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlRoZSBpbnB1dCBkb2N1bWVudAorICAgICAgICAgICAgICAgICAgc2hvd24gYWJvdmUuPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlJhdGlvbmFsZTwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5DaGVjayB0aGF0IGNvcnJlY3QKKyAgICAgICAgICAgICAgICAgIHhtbDpiYXNlIGZpeHVwIGlzIHBlcmZvcm1lZC48L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICIuLi9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMi0xMDIueHBhdGgiPkRvY3VtZW50CisgICAgICAgICAgICAgICAgICBzdWJzZXQgZXhwcmVzc2lvbjwvYT48L3RoPgorCisgICAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+KC8vLiB8IC8vQCogfAorICAgICAgICAgICAgICAgICAgLy9uYW1lc3BhY2U6OiopW3NlbGY6OmlldGY6ZTEgb3IgKHBhcmVudDo6aWV0ZjplMQorICAgICAgICAgICAgICAgICAgYW5kIG5vdChzZWxmOjp0ZXh0KCkgb3Igc2VsZjo6ZTIpKSBvcgorICAgICAgICAgICAgICAgICAgY291bnQoaWQoIkUzIil8YW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSA9CisgICAgICAgICAgICAgICAgICBjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpXTwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPQorICAgICAgICAgICAgICAgICAgIi4uL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMyLTEwMi5vdXRwdXQiPk91dHB1dDwvYT48L3RoPgorCisgICAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+CisgICZsdDtlMSB4bWxucz0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyJcCisrICB4bWw6YmFzZT0ic29tZXRoaW5nL2Vsc2UiJmd0O1wKKysgJmx0O2UzIHhtbG5zPSIiIGlkPSJFMyIgeG1sOmJhc2U9ImJhci9mb28iIHhtbDpzcGFjZT0icHJlc2VydmUiJmd0O1wKKysgJmx0Oy9lMyZndDsmbHQ7L2UxJmd0OworICAgICAgICAgICAgICAgICAgICAgICAgCis8L3ByZT4KKyAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgPC90Ym9keT4KKyAgICAgICAgICAgIDwvdGFibGU+CisKKyAgICAgICAgICAgIDxwPkJlbG93IGlzIHRoZSA8YSBocmVmPQorICAgICAgICAgICAgIi4uL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMzLWlucHV0LnhtbCI+aW5wdXQKKyAgICAgICAgICAgIGRvY3VtZW50PC9hPiBmcm9tIHNlY3Rpb24gMi40IG9mIDxhIGhyZWY9CisgICAgICAgICAgICAiI1hNTC1DMTROMS4xIj5bWE1MLUMxNE4xLjFdPC9hPiBmb3IgdGhlIHRlc3QgY2FzZQorICAgICAgICAgICAgYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYy0xMDMgYmVsb3cuPC9wPgorCisgICAgICAgICAgICA8dGFibGUgc3VtbWFyeT0iRXhhbXBsZSIgd2lkdGg9IjEwMCUiIGJnY29sb3I9IiM5OUZGRkYiCisgICAgICAgICAgICBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSI1IiBjbGFzcz0iZWciPgorICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRkPgorICAgICAgICAgICAgICAgICAgPHByZT4KKyAgJmx0Oz94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPyZndDsKKyAgJmx0O2EgeG1sOmJhc2U9ImZvby9iYXIiJmd0OworICAgJmx0O2IgeG1sOmJhc2U9Ii4uIiZndDsKKyAgICAmbHQ7YyB4bWw6YmFzZT0iLi4iJmd0OworICAgICAmbHQ7ZCB4bWw6YmFzZT0ieCImZ3Q7CisgICAgICZsdDsvZCZndDsKKyAgICAmbHQ7L2MmZ3Q7CisgICAmbHQ7L2ImZ3Q7CisgICZsdDsvYSZndDsKKyAgICAgICAgICAgICAgICAKKzwvcHJlPgorICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorCisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIxIj4KKyAgICAgICAgICAgICAgPHRib2R5PgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIyIiBpZD0KKyAgICAgICAgICAgICAgICAgICJjMTRuMTF4bWxiYXNlLWMxNG4xMXNwZWMzLTEwMyI+VGVzdCBjYXNlCisgICAgICAgICAgICAgICAgICBjMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMy0xMDM8L3RoPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+SW5wdXQgZGV0YWlsczwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5UaGUgaW5wdXQgZG9jdW1lbnQKKyAgICAgICAgICAgICAgICAgIHNob3duIGFib3ZlLjwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5SYXRpb25hbGU8L3RoPgorCisgICAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+Q2hlY2sgdGhhdCBjb3JyZWN0CisgICAgICAgICAgICAgICAgICB4bWw6YmFzZSBmaXh1cCBpcyBwZXJmb3JtZWQuIFRoaXMgdGVzdAorICAgICAgICAgICAgICAgICAgaWxsdXN0cmF0ZXMgdGhlIG1vZGlmaWNhdGlvbiBvZiB0aGUgIlJlbW92ZSBEb3QKKyAgICAgICAgICAgICAgICAgIFNlZ21lbnRzIiBhbGdvcml0aG0uPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgICAiLi4vYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYzMtMTAzLnhwYXRoIj5Eb2N1bWVudAorICAgICAgICAgICAgICAgICAgc3Vic2V0IGV4cHJlc3Npb248L2E+PC90aD4KKworICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPigvLy4gfCAvL0AqIHwKKyAgICAgICAgICAgICAgICAgIC8vbmFtZXNwYWNlOjoqKSBbc2VsZjo6YSBvcgorICAgICAgICAgICAgICAgICAgYW5jZXN0b3Itb3Itc2VsZjo6ZF08L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICIuLi9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMy0xMDMub3V0cHV0Ij5PdXRwdXQ8L2E+PC90aD4KKworICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPgorICAgICAgICAgICAgICAgICAgICA8cHJlPgorICAmbHQ7YSB4bWw6YmFzZT0iZm9vL2JhciImZ3Q7Jmx0O2QgeG1sOmJhc2U9Ii4uLy4uL3giJmd0OworICAgICAmbHQ7L2QmZ3Q7Jmx0Oy9hJmd0OworICAgICAgICAgICAgICAgICAgICAgICAgCis8L3ByZT4KKyAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgPC90Ym9keT4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorCisgICAgICAgIDxkaXYgY2xhc3M9ImRpdjMiPgorICAgICAgICAgIDxoND48YSBuYW1lPSJYTUxCQVNFX0FQUEVORElYQSIgaWQ9CisgICAgICAgICAgIlhNTEJBU0VfQVBQRU5ESVhBIj48L2E+Mi4yLjUgVGVzdCBDYXNlcyBmb3IgY2hlY2tpbmcKKyAgICAgICAgICBleGFtcGxlcyBpbiB0aGUgWE1MLUMxNE4xLjEgQXBwZW5kaXg8L2g0PgorCisgICAgICAgICAgPHA+VGhpcyBzZWN0aW9uIGRlZmluZXMgdGVzdCBjYXNlcyBmb3IgY2hlY2tpbmcgaWYKKyAgICAgICAgICBpbXBsZW1lbnRhdGlvbnMgYXJlIGNvbXBsaWFudCB3aXRoIDxhIGhyZWY9CisgICAgICAgICAgIiNYTUwtQzE0TjEuMSI+W1hNTC1DMTROMS4xXTwvYT4sIHNwZWNpZmljYWxseSB0aGUKKyAgICAgICAgICBub3JtYXRpdmUgcnVsZXMgaW4gdGhlIDxhIGhyZWY9CisgICAgICAgICAgImh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDgvUFIteG1sLWMxNG4xMS0yMDA4MDEyOS8jRG9jU3Vic2V0cyI+CisgICAgICAgICAgRG9jdW1lbnQgU3Vic2V0czwvYT4gc2VjdGlvbi4gSW5mb3JtYXRpdmUgZXhhbXBsZXMgYXJlCisgICAgICAgICAgZ2l2ZW4gaW4gPGEgaHJlZj0KKyAgICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvMjAwOC9QUi14bWwtYzE0bjExLTIwMDgwMTI5LyNhcHBlbmRpeCI+CisgICAgICAgICAgdGhlIEFwcGVuZGl4PC9hPiBvZiBDMTROMTEuPC9wPgorCisgICAgICAgICAgPHA+RWFjaCB0ZXN0IGNhc2UgaW4gdGhpcyBzZWN0aW9uIHNwZWNpZmllcyBhbiBpbnB1dAorICAgICAgICAgIHN0cmluZywgcmVwcmVzZW50aW5nIGEgVVJJIHRoYXQgbXVzdCBiZSBwcm9jZXNzZWQKKyAgICAgICAgICBhY2NvcmRpbmcgdG8gdGhlIG1vZGlmaWVkIFJlbW92ZSBEb3QgU2VnbWVudHMgYWxnb3JpdGhtCisgICAgICAgICAgZGVzY3JpYmVkIGluIFNlY3Rpb24gMi40IChEb2N1bWVudCBTdWJzZXRzKSBvZiA8YSBocmVmPQorICAgICAgICAgICIjWE1MLUMxNE4xLjEiPltYTUwtQzE0TjEuMV08L2E+LjwvcD4KKworICAgICAgICAgIDxwPkVhY2ggdGVzdCBjYXNlIGFwcGVhcnMgaW4gYSByb3cgb2YgdGhlIHRhYmxlIHNob3duCisgICAgICAgICAgYmVsb3cuIFRoZSBmaXJzdCBjb2x1bW4gaWRlbnRpZmllcyB0aGUgaW5wdXQgVVJJIHRoYXQgaGFzCisgICAgICAgICAgdG8gYmUgcHJvY2Vzc2VkLiBUaGUgc2Vjb25kIGNvbHVtbiBzaG93cyB0aGUKKyAgICAgICAgICBjb3JyZXNwb25kaW5nIG91dHB1dC48L3A+CisKKyAgICAgICAgICA8dGFibGUgYm9yZGVyPSIxIj4KKyAgICAgICAgICAgIDx0Ym9keT4KKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIyIiBpZD0KKyAgICAgICAgICAgICAgICAiYzE0bjExeG1sYmFzZS1hbm5leGEiPlRlc3QgY2FzZQorICAgICAgICAgICAgICAgIGMxNG4xMS94bWxiYXNlLWFubmV4YTwvdGg+CisgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPQorICAgICAgICAgICAgICAgICIuLi9jMTRuMTEvYXBwZW5kaXhhL2lucHV0cy50eHQiPmlucHV0cy50eHQ8L2E+PC90aD4KKworICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPQorICAgICAgICAgICAgICAgICIuLi9jMTRuMTEvYXBwZW5kaXhhL291dHB1dHMudHh0Ij5vdXRwdXRzLnR4dDwvYT48L3RoPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+CisgICAgICAgICAgICAgICAgICA8cHJlPgorICBuby8uLi8uLy9wc2V1ZG8tbmV0cGF0aC9zZWcvZmlsZS5leHQKKyAgbm8vLi4vLy4vLy9wc2V1ZG8tbmV0cGF0aC9zZWcvZmlsZS5leHQKKyAgeWVzL25vLy8uLi8vLi8vL3BzZXVkby1uZXRwYXRoL3NlZy9maWxlLmV4dAorICBuby8uLi95ZXMKKyAgbm8vLi4veWVzLworICBuby8uLi95ZXMvbm8vLi4KKyAgLi4vLi4vbm8vLi4vLi4KKyAgbm8vLi4vLi4KKyAgbm8vLi4KKyAgbm8vLi4vCisgIC9hL2IvYy8uLy4uLy4uL2cKKyAgbWlkL2NvbnRlbnQ9NS8uLi82CisgIC4uLy4uLy4uCisgIG5vLy4uLy4uLworICAuLnllcy8uLm5vLy4ubm8vLi5uby8uLi8uLi8uLi8uLnllcworICAuLnllcy8uLm5vLy4ubm8vLi5uby8uLi8uLi8uLi8uLnllcy8KKyAgLi4vLi4KKyAgLi4vLi4vLi4vCisgIC4KKyAgLi8KKyAgLi8uCisgIC8vbm8vLi4KKyAgLi4vLi4vbm8vLi4KKyAgLi4vLi4vbm8vLi4vCisgIHllcy9uby8uLi8KKyAgeWVzL25vL25vLy4uLy4uCisgIHllcy9uby9uby9uby8uLi8uLi8uLgorICB5ZXMvbm8vLi4veWVzL25vL25vLy4uLy4uCisgIHllcy9uby9uby9uby8uLi8uLi8uLi95ZXMKKyAgeWVzL25vL25vL25vLy4uLy4uLy4uL3llcy8KKyAgL25vLy4uLworICAveWVzL25vLy4uLworICAveWVzL25vL25vLy4uLy4uCisgIC95ZXMvbm8vbm8vbm8vLi4vLi4vLi4KKyAgLi4vLi4vLi5uby8uLgorICAuLi8uLi8uLm5vLy4uLworICAuLnllcy8uLm5vLy4uLworICAuLnllcy8uLm5vLy4ubm8vLi4vLi4KKyAgLi55ZXMvLi4ubm8vLi5uby8uLm5vLy4uLy4uLy4uCisgIC4ueWVzLy4ubm8vLi4vLi55ZXMvLi5uby8uLm5vLy4uLy4uCisgIC8uLm5vLy4uLworICAvLi55ZXMvLi5uby8uLi8KKyAgLy4ueWVzLy4ubm8vLi5uby8uLi8uLgorICAvLi55ZXMvLi5uby8uLm5vLy4ubm8vLi4vLi4vLi4KKyAgLworICAvLgorICAvLi8KKyAgLy4vLgorICAvLi8uLworICAvLi4KKyAgLy4uLy4uCisgIC8uLi8uLi8uLgorICAvLi4vLi4vLi4KKyAgLy8uLgorICAvLy4uLy8uLgorICAvLy4uLy8uLi8vLi4KKyAgLy4vLi4KKyAgLy4vLi4vLi8uLgorICAvLi8uLi8uLy4uLy4vLi4KKyAgLgorICAuLworICAuLy4KKyAgLi4KKyAgLi4vCis8L3ByZT4KKyAgICAgICAgICAgICAgICA8L3RkPgorCisgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPgorICAgICAgICAgICAgICAgICAgPHByZT4KKyAgcHNldWRvLW5ldHBhdGgvc2VnL2ZpbGUuZXh0CisgIHBzZXVkby1uZXRwYXRoL3NlZy9maWxlLmV4dAorICB5ZXMvcHNldWRvLW5ldHBhdGgvc2VnL2ZpbGUuZXh0CisgIHllcworICB5ZXMvCisgIHllcy8KKyAgLi4vLi4vLi4vCisgIC4uLworICAvYS9nCisgIG1pZC82CisgIC4uLy4uLy4uLworICAuLi8KKyAgLi55ZXMvLi55ZXMKKyAgLi55ZXMvLi55ZXMvCisgIC4uLy4uLworICAuLi8uLi8uLi8KKyAgLworICAuLi8uLi8KKyAgLi4vLi4vCisgIHllcy8KKyAgeWVzLworICB5ZXMvCisgIHllcy95ZXMvCisgIHllcy95ZXMKKyAgeWVzL3llcy8KKyAgLworICAveWVzLworICAveWVzLworICAveWVzLworICAuLi8uLi8KKyAgLi4vLi4vCisgIC4ueWVzLworICAuLnllcy8KKyAgLi55ZXMvCisgIC4ueWVzLy4ueWVzLworICAvCisgIC8uLnllcy8KKyAgLy4ueWVzLworICAvLi55ZXMvCisgIC8KKyAgLworICAvCisgIC8KKyAgLworICAvCisgIC8KKyAgLworICAvCisgIC8KKyAgLworICAvCisgIC8KKyAgLworICAvCisgIC4uLworICAuLi8KKzwvcHJlPgorICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3Rib2R5PgorICAgICAgICAgIDwvdGFibGU+CisgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisKKyAgICAgIDxkaXYgY2xhc3M9ImRpdjIiPgorICAgICAgICA8aDM+PGEgbmFtZT0iVGVzdENhc2VzLVhNTERTaWciIGlkPQorICAgICAgICAiVGVzdENhc2VzLVhNTERTaWciPjwvYT4yLjMgVGVzdCBDYXNlcyBmb3IgWE1MRFNpZzwvaDM+CisKKyAgICAgICAgPGRpdiBjbGFzcz0iZGl2MyI+CisgICAgICAgICAgPGg0PjxhIG5hbWU9IlRlc3RDYXNlcy1YTUxEU2lnLUMxNG4xMSIgaWQ9CisgICAgICAgICAgIlRlc3RDYXNlcy1YTUxEU2lnLUMxNG4xMSI+PC9hPjIuMy4xIFRlc3QgQ2FzZXMgZm9yIEMxNE4KKyAgICAgICAgICAxLjEgaW4gWE1MRFNpZzwvaDQ+CisKKyAgICAgICAgICA8cD5UaGUgdGVzdCBjYXNlcyBpbiBzZWN0aW9uIDxhIGhyZWY9CisgICAgICAgICAgIiNUZXN0Q2FzZXMtQzE0bjExIj48Yj4yLjIgVGVzdCBDYXNlcyBmb3IKKyAgICAgICAgICBDYW5vbmljYWxpemF0aW9uIDEuMTwvYj48L2E+IGFyZSBwZXJmb3JtZWQgaW4gdGhlIGNvbnRleHQKKyAgICAgICAgICBvZiBYTUxEU2lnIGFzIHdlbGwuIEhlcmUgaXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgdGhpcyBpcworICAgICAgICAgIHBlcmZvcm1lZCBpbiBhIGRpZmZlcmVudCBsb2NhdGlvbiAoaS5lLiA8YSBocmVmPQorICAgICAgICAgICIuLi94bWxkc2lnL2MxNG4xMS8iPnhtbGRzaWcvYzE0bjExLzwvYT4pIGFuZCB0aGUKKyAgICAgICAgICBYUGF0aC1GaWx0ZXIgZXhwcmVzc2lvbiBpbiB0aGUKKyAgICAgICAgICA8Y29kZT5kczpUcmFuc2Zvcm0vZHM6WFBhdGg8L2NvZGU+IHNob3VsZCBiZSBlcXVhbCB0byB0aGUKKyAgICAgICAgICBmaWx0ZXIgc3RlcCBvZiB0aGUgWFBhdGggZXhwcmVzc2lvbnMgaW4gc2VjdGlvbiA8YSBocmVmPQorICAgICAgICAgICIjVGVzdENhc2VzLUMxNG4xMSI+PGI+Mi4yIFRlc3QgQ2FzZXMgZm9yCisgICAgICAgICAgQ2Fub25pY2FsaXphdGlvbiAxLjE8L2I+PC9hPiAoY2YuIDxhIGhyZWY9CisgICAgICAgICAgImh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3B1YmxpYy14bWxzZWMtbWFpbnR3Zy8yMDA3U2VwLzAwMTcuaHRtbCI+CisgICAgICAgICAgZXhwbGFuYXRpb248L2E+KS4gVGhlIHRlc3QgY2FzZXMgYXJlIHNwZWNpZmllZCBieSBhbgorICAgICAgICAgICJ1bnNpZ25lZCIgPGNvZGU+ZHM6U2lnbmF0dXJlPC9jb2RlPiAod2l0aG91dAorICAgICAgICAgIDxjb2RlPmRzOkRpZ2VzdFZhbHVlPC9jb2RlPiBhbmQKKyAgICAgICAgICA8Y29kZT5kczpTaWduYXR1cmVWYWx1ZTwvY29kZT4pIGluIGZpbGVzIGluIDxhIGhyZWY9CisgICAgICAgICAgIi4uL3htbGRzaWcvYzE0bjExLyI+eG1sZHNpZy9jMTRuMTEvPC9hPiBoYXZpbmcgdGhlCisgICAgICAgICAgcG9zdGZpeCA8Y29kZT4uLi4tdGVtcGxhdGUueG1sPC9jb2RlPi48L3A+CisgICAgICAgIDwvZGl2PgorCisgICAgICAgIDxkaXYgY2xhc3M9ImRpdjMiPgorICAgICAgICAgIDxoND48YSBuYW1lPSJUZXN0Q2FzZXMtRGVmYXVsdENhbiIgaWQ9CisgICAgICAgICAgIlRlc3RDYXNlcy1EZWZhdWx0Q2FuIj48L2E+Mi4zLjIgVGVzdCBDYXNlcyBvbiBub2Rlc2V0IHRvCisgICAgICAgICAgb2N0ZXQtc3RyZWFtIGNvbnZlcnNpb24gYnkgQzE0biAxLjEgZXhwbGljaXRseSByZWZsZWN0ZWQKKyAgICAgICAgICBpbiB0aGUgY2hhaW4gb2YgdHJhbnNmb3JtczwvaDQ+CisKKyAgICAgICAgICA8cD5UaGUgc2V0IG9mIHRlc3QgY2FzZXMgaW4gdGhpcyBzZWN0aW9uIHRlc3QgdGhlCisgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwNy94bWxzZWMvRHJhZnRzL3htbGRzaWctY29yZS8jc2VjLVJlZmVyZW5jZUdlbmVyYXRpb24iPgorICAgICAgICAgIFJlZmVyZW5jZSBHZW5lcmF0aW9uPC9hPiBzdGVwcyBvZiA8YSBocmVmPQorICAgICAgICAgICIjWE1MRFNJRzIiPltYTUxEU0lHMl08L2E+IGFuZCBpdHMgcnVsZXMgdGhhdCBtYW5hZ2UgdGhlCisgICAgICAgICAgY29udGVudHMgb2YgdGhlIDxjb2RlPlRyYW5zZm9ybXM8L2NvZGU+IGVsZW1lbnQgd2hlbgorICAgICAgICAgIG5vZGVzZXQgdG8gb2N0ZXQtc3RyZWFtIGNvbnZlcnNpb25zIGFyZSB0byBiZSBwZXJmb3JtZWQKKyAgICAgICAgICBieSBjYW5vbmljYWxpemF0aW9uLjwvcD4KKworICAgICAgICAgIDxwPkdlbmVyYWwgcnVsZXMgZm9yIHRoZXNlIHRlc3QgY2FzZXM6PC9wPgorCisgICAgICAgICAgPHVsPgorICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICA8cD5UZXN0IGNhc2VzIGNvbnRhaW4gYSA8Y29kZT5kczpUcmFuc2Zvcm1zPC9jb2RlPgorICAgICAgICAgICAgICBlbGVtZW50IHdpdGggb25lIGNoaWxkLCBjb250YWluaW5nIGEgWFBhdGggZmlsdGVyCisgICAgICAgICAgICAgIHRoYXQgZGVwZW5kcyBvbiB0aGUgdGVzdCBjYXNlLjwvcD4KKyAgICAgICAgICAgIDwvbGk+CisgICAgICAgICAgPC91bD4KKworICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjEiPgorICAgICAgICAgICAgPHRib2R5PgorICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjIiIGlkPSJ4bWxkc2lnZGVmQ2FuLTEiPgorICAgICAgICAgICAgICAgIFRlc3QgY2FzZSB4bWxkc2lnL2RlZkNhbi0xPC90aD4KKyAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPklucHV0IGRldGFpbHM8L3RoPgorCisgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlRoZSBzYW1lIDxhIGhyZWY9CisgICAgICAgICAgICAgICAgIi4uL3htbGRzaWcvYzE0bjExL3htbC1iYXNlLWlucHV0LnhtbCI+aW5wdXQKKyAgICAgICAgICAgICAgICBkb2N1bWVudDwvYT4gYXMgaW4gc2VjdGlvbiA8YSBocmVmPQorICAgICAgICAgICAgICAgICIjWE1MQkFTRSI+PGI+Mi4yLjQgVGVzdCBDYXNlcyBmb3IgeG1sOmJhc2UKKyAgICAgICAgICAgICAgICBhdHRyaWJ1dGU8L2I+PC9hPi48L3RkPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+UmF0aW9uYWxlPC90aD4KKworICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5DaGVjayB0aGF0CisgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zIGFuZCBBUElzIG9mIDxhIGhyZWY9CisgICAgICAgICAgICAgICAgIiNYTUxEU0lHMiI+W1hNTERTSUcyXTwvYT4gaG9ub3IgdGhlIHJlY29tbWVuZGF0aW9uCisgICAgICAgICAgICAgICAgdG8gdXNlIDxhIGhyZWY9IiNYTUwtQzE0TjEuMSI+W1hNTC1DMTROMS4xXTwvYT4gaW4KKyAgICAgICAgICAgICAgICBzZWN0aW9uIDMuMS4xICJSZWZlcmVuY2UgR2VuZXJhdGlvbiIgb2YgPGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiI1hNTERTSUcyIj5bWE1MRFNJRzJdPC9hPiBhbmQgbWFrZSBpdHMgdXNlCisgICAgICAgICAgICAgICAgZXhwbGljaXQgYXMgYSA8Y29kZT5kczpUcmFuc2Zvcm08L2NvZGU+LjwvdGQ+CisgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPQorICAgICAgICAgICAgICAgICIuLi94bWxkc2lnL2RlZkNhbi0xLXRlbXBsYXRlLnhtbCI+VGVtcGxhdGU8L2E+PC90aD4KKworICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5UaGlzIDxhIGhyZWY9CisgICAgICAgICAgICAgICAgIi4uL3htbGRzaWcvZGVmQ2FuLTEtdGVtcGxhdGUueG1sIj50ZW1wbGF0ZTwvYT4gY2FuCisgICAgICAgICAgICAgICAgYmUgdXNlZCB0byBpbnN0cnVjdCBzb21lIEFQSSB0byBjcmVhdGUgYSBzaWduYXR1cmUKKyAgICAgICAgICAgICAgICB3aXRoIGEgY2hhaW4gb2YgdHJhbnNmb3JtcyB0aGF0IHdvdWxkIHJlcXVpcmUKKyAgICAgICAgICAgICAgICBpbXBsaWNpdCB0cmFuc2Zvcm1hdGlvbnMgZnJvbSBhIG5vZGUgc2V0IHRvIGFuCisgICAgICAgICAgICAgICAgb2N0ZXQgc3RyZWFtLiBJdCBpcyBleHBlY3RlZCB0aGF0IGMxNG4xMSBpcworICAgICAgICAgICAgICAgIGluc2VydGVkIGF0IHRoZSByZWxldmFudCBwbGFjZXMuPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgIi4uL3htbGRzaWcvZGVmQ2FuLTEtc2lnbmF0dXJlLnhtbCI+U2lnbmF0dXJlPC9hPjwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+CisgICAgICAgICAgICAgICAgICA8cHJlPgorICAmbHQ7P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Jmd0OworICAmbHQ7U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiZndDtcCisrICZsdDtTaWduZWRJbmZvJmd0O1wKKysgJmx0O0Nhbm9uaWNhbGl6YXRpb25NZXRob2RcCisrICBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvJmd0O1wKKysgJmx0O1NpZ25hdHVyZU1ldGhvZFwKKysgIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvJmd0O1wKKysgJmx0O1JlZmVyZW5jZSBVUkk9ImMxNG4xMS94bWwtYmFzZS1pbnB1dC54bWwiJmd0OyZsdDtUcmFuc2Zvcm1zJmd0O1wKKysgJmx0O1RyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2IiZndDtcCisrICZsdDtYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiZndDtcCisrIGFuY2VzdG9yLW9yLXNlbGY6OmlldGY6YzE0bjExWG1sQmFzZURvYzEgYW5kXAorKyAgbm90KGFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTIpJmx0Oy9YUGF0aCZndDsmbHQ7L1RyYW5zZm9ybSZndDtcCisrICZsdDtUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLyZndDtcCisrICZsdDsvVHJhbnNmb3JtcyZndDtcCisrICZsdDtEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvJmd0O1wKKysgJmx0O0RpZ2VzdFZhbHVlJmd0O3Q3ZDJjTDhJbms4QTVpM2NTOS9idTlNQkJVOD0mbHQ7L0RpZ2VzdFZhbHVlJmd0O1wKKysgJmx0Oy9SZWZlcmVuY2UmZ3Q7Jmx0Oy9TaWduZWRJbmZvJmd0O1wKKysgJmx0O1NpZ25hdHVyZVZhbHVlJmd0O0xSNHMrTnhvcTNWWk8xTmlDTG9pb3ZmQ3BLND0mbHQ7L1NpZ25hdHVyZVZhbHVlJmd0O1wKKysgJmx0Oy9TaWduYXR1cmUmZ3Q7Cis8L3ByZT4KKyAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90Ym9keT4KKyAgICAgICAgICA8L3RhYmxlPgorCisgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMSI+CisgICAgICAgICAgICA8dGJvZHk+CisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMiIgaWQ9InhtbGRzaWdkZWZDYW4tMiI+CisgICAgICAgICAgICAgICAgVGVzdCBjYXNlIHhtbGRzaWcvZGVmQ2FuLTI8L3RoPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+SW5wdXQgZGV0YWlsczwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+VGhlIHNhbWUgPGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiLi4veG1sZHNpZy9jMTRuMTEveG1sLWJhc2UtaW5wdXQueG1sIj5pbnB1dAorICAgICAgICAgICAgICAgIGRvY3VtZW50PC9hPiBhcyBpbiBzZWN0aW9uIDxhIGhyZWY9CisgICAgICAgICAgICAgICAgIiNYTUxCQVNFIj48Yj4yLjIuNCBUZXN0IENhc2VzIGZvciB4bWw6YmFzZQorICAgICAgICAgICAgICAgIGF0dHJpYnV0ZTwvYj48L2E+LjwvdGQ+CisgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5SYXRpb25hbGU8L3RoPgorCisgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPkNoZWNrIHRoYXQKKyAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbnMgYW5kIEFQSXMgb2YgPGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiI1hNTERTSUcyIj5bWE1MRFNJRzJdPC9hPiBob25vciB0aGUgcmVjb21tZW5kYXRpb24KKyAgICAgICAgICAgICAgICB0byB1c2UgPGEgaHJlZj0iI1hNTC1DMTROMS4xIj5bWE1MLUMxNE4xLjFdPC9hPiBpbgorICAgICAgICAgICAgICAgIHNlY3Rpb24gMy4xLjEgIlJlZmVyZW5jZSBHZW5lcmF0aW9uIiBvZiA8YSBocmVmPQorICAgICAgICAgICAgICAgICIjWE1MRFNJRzIiPltYTUxEU0lHMl08L2E+IGFuZCBtYWtlIGl0J3MgdXNlCisgICAgICAgICAgICAgICAgZXhwbGljaXQgYXMgYSA8Y29kZT5kczpUcmFuc2Zvcm08L2NvZGU+LiBJdCBpcworICAgICAgICAgICAgICAgIGV4cGVjdGVkIHRoYXQgYzE0bjExIGlzIGluc2VydGVkIGF0IHRoZSByZWxldmFudAorICAgICAgICAgICAgICAgIHBsYWNlcy48L3RkPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiLi4veG1sZHNpZy9kZWZDYW4tMi10ZW1wbGF0ZS54bWwiPlRlbXBsYXRlPC9hPjwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+VGhpcyA8YSBocmVmPQorICAgICAgICAgICAgICAgICIuLi94bWxkc2lnL2RlZkNhbi0yLXRlbXBsYXRlLnhtbCI+dGVtcGxhdGU8L2E+IGNhbgorICAgICAgICAgICAgICAgIGJlIHVzZWQgdG8gaW5zdHJ1Y3Qgc29tZSBBUEkgdG8gY3JlYXRlIGEgc2lnbmF0dXJlCisgICAgICAgICAgICAgICAgd2l0aCBhIGNoYWluIG9mIHRyYW5zZm9ybXMgdGhhdCB3b3VsZCByZXF1aXJlCisgICAgICAgICAgICAgICAgaW1wbGljaXQgdHJhbnNmb3JtYXRpb25zIGZyb20gYSBub2RlIHNldCB0byBhbgorICAgICAgICAgICAgICAgIG9jdGV0IHN0cmVhbS4gVGhlIGZvY3VzIGluIHRoaXMgdGVzdCBjYXNlIGlzIHRvCisgICAgICAgICAgICAgICAgYXNzdXJlIHRoYXQgYzE0bjExIGlzIGluc2VydGVkIGJlZm9yZSB0cmFuc2Zvcm1zCisgICAgICAgICAgICAgICAgcmVxdWlyaW5nIGFuIG9jdGV0IHN0cmVhbSBhcyBpbnB1dCBhbmQgYWxzbyBhdCB0aGUKKyAgICAgICAgICAgICAgICBlbmQgb2YgdGhlIGNoYWluIG9mIHRyYW5zZm9ybXMgaWYgbmVjZXNzYXJ5IGJlY2F1c2UKKyAgICAgICAgICAgICAgICB0aGUgbGFzdCB0cmFuc2Zvcm0gcmVzdWx0ZWQgaW4gYSBub2RlIHNldC48L3RkPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiLi4veG1sZHNpZy9kZWZDYW4tMi1zaWduYXR1cmUueG1sIj5TaWduYXR1cmU8L2E+PC90aD4KKworICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4KKyAgICAgICAgICAgICAgICAgIDxwcmU+CisgICZsdDs/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8mZ3Q7CisgICZsdDtTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiJmd0O1wKKysgJmx0O1NpZ25lZEluZm8mZ3Q7XAorKyAmbHQ7Q2Fub25pY2FsaXphdGlvbk1ldGhvZFwKKysgIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8mZ3Q7XAorKyAmbHQ7U2lnbmF0dXJlTWV0aG9kXAorKyAgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8mZ3Q7XAorKyAmbHQ7UmVmZXJlbmNlIFVSST0iYzE0bjExL3htbC1iYXNlLWlucHV0LnhtbCImZ3Q7Jmx0O1RyYW5zZm9ybXMmZ3Q7XAorKyAmbHQ7VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiJmd0O1wKKysgJmx0O1hQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciJmd0O1wKKysgYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMjEmbHQ7L1hQYXRoJmd0OyZsdDsvVHJhbnNmb3JtJmd0O1wKKysgJmx0O1RyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvJmd0O1wKKysgJmx0O1RyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhzbHQtMTk5OTExMTYiJmd0O1wKKysgJmx0O3hzbDpzdHlsZXNoZWV0IHZlcnNpb249IjEuMCJcCisrICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIlwKKysgIHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIiZndDtcCisrICZsdDt4c2w6dGVtcGxhdGUgbWF0Y2g9IkAqfG5vZGUoKSImZ3Q7Jmx0O3hzbDpjb3B5Jmd0O1wKKysgJmx0O3hzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJAKnxub2RlKCkiLyZndDsmbHQ7L3hzbDpjb3B5Jmd0O1wKKysgJmx0Oy94c2w6dGVtcGxhdGUmZ3Q7Jmx0Oy94c2w6c3R5bGVzaGVldCZndDsmbHQ7L1RyYW5zZm9ybSZndDtcCisrICZsdDtUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiImZ3Q7XAorKyAmbHQ7WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyImZ3Q7MSZsdDsvWFBhdGgmZ3Q7XAorKyAmbHQ7L1RyYW5zZm9ybSZndDtcCisrICZsdDtUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLyZndDtcCisrICZsdDsvVHJhbnNmb3JtcyZndDtcCisrICZsdDtEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvJmd0O1wKKysgJmx0O0RpZ2VzdFZhbHVlJmd0O2ZMN0lnenMwTEw3bEtISnpBSklLWUNwaFlCbz0mbHQ7L0RpZ2VzdFZhbHVlJmd0O1wKKysgJmx0Oy9SZWZlcmVuY2UmZ3Q7Jmx0Oy9TaWduZWRJbmZvJmd0O1wKKysgJmx0O1NpZ25hdHVyZVZhbHVlJmd0O2JLUUx5d1k1MVZad2p1dFVYL0NVTXNWczZSRT0mbHQ7L1NpZ25hdHVyZVZhbHVlJmd0O1wKKysgJmx0Oy9TaWduYXR1cmUmZ3Q7Cis8L3ByZT4KKyAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90Ym9keT4KKyAgICAgICAgICA8L3RhYmxlPgorCisgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMSI+CisgICAgICAgICAgICA8dGJvZHk+CisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMiIgaWQ9InhtbGRzaWdkZWZDYW4tMyI+CisgICAgICAgICAgICAgICAgVGVzdCBjYXNlIHhtbGRzaWcvZGVmQ2FuLTM8L3RoPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+SW5wdXQgZGV0YWlsczwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+VGhlIHNhbWUgPGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiLi4veG1sZHNpZy9jMTRuMTEveG1sLWJhc2UtaW5wdXQueG1sIj5pbnB1dAorICAgICAgICAgICAgICAgIGRvY3VtZW50PC9hPiBhcyBpbiBzZWN0aW9uIDxhIGhyZWY9CisgICAgICAgICAgICAgICAgIiNYTUxCQVNFIj48Yj4yLjIuNCBUZXN0IENhc2VzIGZvciB4bWw6YmFzZQorICAgICAgICAgICAgICAgIGF0dHJpYnV0ZTwvYj48L2E+LjwvdGQ+CisgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5SYXRpb25hbGU8L3RoPgorCisgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPkNoZWNrIHRoYXQKKyAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbnMgYW5kIEFQSXMgb2YgPGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiI1hNTERTSUcyIj5bWE1MRFNJRzJdPC9hPiBob25vciB0aGUgcmVjb21tZW5kYXRpb24KKyAgICAgICAgICAgICAgICB0byB1c2UgPGEgaHJlZj0iI1hNTC1DMTROMS4xIj5bWE1MLUMxNE4xLjFdPC9hPiBpbgorICAgICAgICAgICAgICAgIHNlY3Rpb24gMy4xLjEgIlJlZmVyZW5jZSBHZW5lcmF0aW9uIiBvZiA8YSBocmVmPQorICAgICAgICAgICAgICAgICIjWE1MRFNJRzIiPltYTUxEU0lHMl08L2E+IGFuZCBtYWtlIGl0J3MgdXNlCisgICAgICAgICAgICAgICAgZXhwbGljaXQgYXMgYSA8Y29kZT5kczpUcmFuc2Zvcm08L2NvZGU+LiBJdCBpcworICAgICAgICAgICAgICAgIGV4cGVjdGVkIHRoYXQgYzE0bjExIGlzIGluc2VydGVkIGF0IHRoZSByZWxldmFudAorICAgICAgICAgICAgICAgIHBsYWNlcy4gVGhlIGZvY3VzIGluIHRoaXMgdGVzdCBjYXNlIGlzIHRvIGFzc3VyZQorICAgICAgICAgICAgICAgIHRoYXQgYzE0bjExIGlzIGluc2VydGVkIGJlZm9yZSB0cmFuc2Zvcm1zIHJlcXVpcmluZworICAgICAgICAgICAgICAgIGFuIG9jdGV0IHN0cmVhbSBhcyBpbnB1dCBidXQgbm90IGluc2VydGVkIGF0IHRoZQorICAgICAgICAgICAgICAgIGVuZCBvZiB0aGUgY2hhaW4gb2YgdHJhbnNmb3Jtcywgd2hpY2ggaXMgbm90CisgICAgICAgICAgICAgICAgbmVjZXNzYXJ5IGJlY2F1c2UgdGhlIGxhc3QgdHJhbnNmb3JtIHJlc3VsdGVkIGluIGFuCisgICAgICAgICAgICAgICAgb2N0ZXQgc3RyZWFtLjwvdGQ+CisgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPQorICAgICAgICAgICAgICAgICIuLi94bWxkc2lnL2RlZkNhbi0zLXRlbXBsYXRlLnhtbCI+VGVtcGxhdGU8L2E+PC90aD4KKworICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5UaGlzIDxhIGhyZWY9CisgICAgICAgICAgICAgICAgIi4uL3htbGRzaWcvZGVmQ2FuLTMtdGVtcGxhdGUueG1sIj50ZW1wbGF0ZTwvYT4gY2FuCisgICAgICAgICAgICAgICAgYmUgdXNlZCB0byBpbnN0cnVjdCBzb21lIEFQSSB0byBjcmVhdGUgYSBzaWduYXR1cmUKKyAgICAgICAgICAgICAgICB3aXRoIGEgY2hhaW4gb2YgdHJhbnNmb3JtcyB0aGF0IHdvdWxkIHJlcXVpcmUKKyAgICAgICAgICAgICAgICBpbXBsaWNpdCB0cmFuc2Zvcm1hdGlvbnMgZnJvbSBhIG5vZGUgc2V0IHRvIGFuCisgICAgICAgICAgICAgICAgb2N0ZXQgc3RyZWFtLjwvdGQ+CisgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPQorICAgICAgICAgICAgICAgICIuLi94bWxkc2lnL2RlZkNhbi0zLXNpZ25hdHVyZS54bWwiPlNpZ25hdHVyZTwvYT48L3RoPgorCisgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPgorICAgICAgICAgICAgICAgICAgPHByZT4KKyAgJmx0Oz94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPyZndDsKKyAgJmx0O1NpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyImZ3Q7XAorKyAmbHQ7U2lnbmVkSW5mbyZndDtcCisrICZsdDtDYW5vbmljYWxpemF0aW9uTWV0aG9kXAorKyAgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLyZndDtcCisrICZsdDtTaWduYXR1cmVNZXRob2RcCisrICBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLyZndDtcCisrICZsdDtSZWZlcmVuY2UgVVJJPSJjMTRuMTEveG1sLWJhc2UtaW5wdXQueG1sIiZndDsmbHQ7VHJhbnNmb3JtcyZndDtcCisrICZsdDtUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiImZ3Q7XAorKyAmbHQ7WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyImZ3Q7XAorKyBhbmNlc3Rvci1vci1zZWxmOjppZXRmOmUyMSZsdDsvWFBhdGgmZ3Q7Jmx0Oy9UcmFuc2Zvcm0mZ3Q7XAorKyAmbHQ7VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8mZ3Q7XAorKyAmbHQ7VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHNsdC0xOTk5MTExNiImZ3Q7XAorKyAmbHQ7eHNsOnN0eWxlc2hlZXQgdmVyc2lvbj0iMS4wIlwKKysgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iXAorKyAgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iJmd0O1wKKysgJmx0O3hzbDp0ZW1wbGF0ZSBtYXRjaD0iQCp8bm9kZSgpIiZndDsmbHQ7eHNsOmNvcHkmZ3Q7XAorKyAmbHQ7eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9IkAqfG5vZGUoKSIvJmd0OyZsdDsveHNsOmNvcHkmZ3Q7XAorKyAmbHQ7L3hzbDp0ZW1wbGF0ZSZndDsmbHQ7L3hzbDpzdHlsZXNoZWV0Jmd0OyZsdDsvVHJhbnNmb3JtJmd0O1wKKysgJmx0O1RyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2IiZndDtcCisrICZsdDtYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiZndDsxJmx0Oy9YUGF0aCZndDtcCisrICZsdDsvVHJhbnNmb3JtJmd0O1wKKysgJmx0O1RyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvJmd0O1wKKysgJmx0O1RyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhzbHQtMTk5OTExMTYiJmd0O1wKKysgJmx0O3hzbDpzdHlsZXNoZWV0IHZlcnNpb249IjEuMCJcCisrICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIlwKKysgIHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIiZndDtcCisrICZsdDt4c2w6dGVtcGxhdGUgbWF0Y2g9IkAqfG5vZGUoKSImZ3Q7Jmx0O3hzbDpjb3B5Jmd0O1wKKysgJmx0O3hzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJAKnxub2RlKCkiLyZndDsmbHQ7L3hzbDpjb3B5Jmd0O1wKKysgJmx0Oy94c2w6dGVtcGxhdGUmZ3Q7Jmx0Oy94c2w6c3R5bGVzaGVldCZndDsmbHQ7L1RyYW5zZm9ybSZndDtcCisrICZsdDsvVHJhbnNmb3JtcyZndDtcCisrICZsdDtEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvJmd0O1wKKysgJmx0O0RpZ2VzdFZhbHVlJmd0O2hxYWJVdTRmRVpwN0dLNUpSeUZDMjZXNUpCaz0mbHQ7L0RpZ2VzdFZhbHVlJmd0O1wKKysgJmx0Oy9SZWZlcmVuY2UmZ3Q7Jmx0Oy9TaWduZWRJbmZvJmd0O1wKKysgJmx0O1NpZ25hdHVyZVZhbHVlJmd0Ozkrd3AwVzl4d0w1WDNrU3R0eEFCWjdwL2tVMD0mbHQ7L1NpZ25hdHVyZVZhbHVlJmd0O1wKKysgJmx0Oy9TaWduYXR1cmUmZ3Q7Cis8L3ByZT4KKyAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90Ym9keT4KKyAgICAgICAgICA8L3RhYmxlPgorICAgICAgICA8L2Rpdj4KKworICAgICAgICA8ZGl2IGNsYXNzPSJkaXYzIj4KKyAgICAgICAgICA8aDQ+PGEgbmFtZT0iVGVzdENhc2VzLVNjaGVtYUJhc2VkWFBvaW50ZXJzIiBpZD0KKyAgICAgICAgICAiVGVzdENhc2VzLVNjaGVtYUJhc2VkWFBvaW50ZXJzIj48L2E+Mi4zLjMgVGVzdCBDYXNlcyBvbgorICAgICAgICAgIHNjaGVtYSBiYXNlZCBYUG9pbnRlcnMgYW5kIGNhbm9uaWNhbGl6YXRpb248L2g0PgorCisgICAgICAgICAgPHA+VGhpcyBzZWN0aW9uIGRlZmluZXMgdGVzdCBjYXNlcyB0aGF0IHRlc3QgaWYKKyAgICAgICAgICBpbXBsZW1lbnRhdGlvbnMgYmVoYXZlIGNvcnJlY3RseSB3aGVuIHByb2Nlc3NpbmcgYm90aAorICAgICAgICAgIHNjaGVtYS1iYXNlZCB4cG9pbnRlcnMgYW5kIHNob3J0LW5hbWUgeHBvaW50ZXJzIHdpdGgKKyAgICAgICAgICByZWdhcmRzIHRvIGNvbW1lbnRzIHByZXNlbnQgaW4gdGhlIHRvIGJlIHNpZ25lZCB4bWwgZGF0YQorICAgICAgICAgIG9iamVjdC48L3A+CisKKyAgICAgICAgICA8cD5UaGUgZm9sbG93aW5nIHJ1bGVzIGFwcGx5IHRvIHRoZSB0ZXN0IGNhc2VzIGluIHRoaXMKKyAgICAgICAgICBzZWN0aW9uOjwvcD4KKworICAgICAgICAgIDx1bD4KKyAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgPHA+QXMgdGhlIG1vZGVsIHByb2Nlc3NpbmcgaXMgZGVmaW5lZCBpbiA8YSBocmVmPQorICAgICAgICAgICAgICAiI1hNTERTSUcyIj5bWE1MRFNJRzJdPC9hPiwgdGhlIHRlc3QgY2FzZXMgYXJlIGJhc2VkCisgICAgICAgICAgICAgIG9uIFhNTCBzaWduYXR1cmVzLiBGb3IgZWFjaCB0ZXN0IGNhc2UsIGFuIFhNTAorICAgICAgICAgICAgICBzaWduYXR1cmUgd2lsbCBiZSBnZW5lcmF0ZWQgYW5kIHZhbGlkYXRlZC4gVGhlCisgICAgICAgICAgICAgIHNpZ25hdHVyZXMgd2lsbCBiZSBlbnZlbG9wZWQgc2lnbmF0dXJlcyB3aGVuIHRoZQorICAgICAgICAgICAgICA8Y29kZT5VUkk8L2NvZGU+IGF0dHJpYnV0ZSBpcyByZWZlcmVuY2luZyB0aGUgcm9vdAorICAgICAgICAgICAgICBlbGVtZW50IGFuZCBlbnZlbG9waW5nIHdoZW4gdGhlIDxjb2RlPlVSSTwvY29kZT4KKyAgICAgICAgICAgICAgYXR0cmlidXRlIGlzIHJlZmVyZW5jaW5nIGFuIGVsZW1lbnQgdXNpbmcgaXRzIElkCisgICAgICAgICAgICAgIGF0dHJpYnV0ZS48L3A+CisgICAgICAgICAgICA8L2xpPgorCisgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgIDxwPlRoZSBpbnB1dCBmb3IgdGhlIHRlc3QgY2FzZXMgaXMgdGhlIHRvIGJlIHNpZ25lZAorICAgICAgICAgICAgICB4bWwgZGF0YSBvYmplY3Qgc2hvd24gYmVsb3cgYW5kIHRoZQorICAgICAgICAgICAgICA8Y29kZT5kczpSZWZlcmVuY2U8L2NvZGU+J3MgPGNvZGU+VVJJPC9jb2RlPgorICAgICAgICAgICAgICBhdHRyaWJ1dGUgdmFsdWUgKGEgc2NoZW1hLWJhc2VkIHhwb2ludGVyIG9yIGEKKyAgICAgICAgICAgICAgc2hvcnQtbmFtZSBwb2ludGVyKS48L3A+CisgICAgICAgICAgICA8L2xpPgorCisgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgIDxwPlRoZSA8Y29kZT5kczpSZWZlcmVuY2U8L2NvZGU+IGZvciBlbnZlbG9wZWQKKyAgICAgICAgICAgICAgc2lnbmF0dXJlcyB3aWxsIGV2ZW50dWFsbHkgY29udGFpbiB0d28KKyAgICAgICAgICAgICAgPGNvZGU+VHJhbnNmb3JtPC9jb2RlPiBlbGVtZW50cywgbmFtZWx5OyB0aGUKKyAgICAgICAgICAgICAgZW52ZWxvcGVkIHNpZ25hdHVyZSB0cmFuc2Zvcm0gYW5kIHRoZSBjb252ZXJzaW9uIGZyb20KKyAgICAgICAgICAgICAgbm9kZSBzZXQgZGF0YSB0byBvY3RldCBzdHJlYW0gKGNhbm9uaWNhbCBYTUwKKyAgICAgICAgICAgICAgMS4xKS48L3A+CisgICAgICAgICAgICA8L2xpPgorICAgICAgICAgIDwvdWw+CisKKyAgICAgICAgICA8cD5CZWxvdyBpcyB0aGUgaW5wdXQgZG9jdW1lbnQgZm9yIHRoZSB0ZXN0IGNhc2VzIGluIHRoaXMKKyAgICAgICAgICBzZWN0aW9uOjwvcD4KKworICAgICAgICAgIDx0YWJsZSBzdW1tYXJ5PSJFeGFtcGxlIiB3aWR0aD0iMTAwJSIgYmdjb2xvcj0iIzk5RkZGRiIKKyAgICAgICAgICBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSI1IiBjbGFzcz0iZWciPgorICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICA8dGQ+CisgICAgICAgICAgICAgICAgPHByZT4KKyAgJmx0Oz94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPyZndDsKKyAgJmx0O2lldGY6YzE0bjExWG1sUG9pbnRlckRvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyJcCisrICB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiAgJmd0OworICAgICAgICAgICAgICAgICAgXAorKyAmbHQ7IS0tIFRoaXMgaXMgYSB4bWwgZG9jdW1lbnQgZm9yIGNoZWNraW5nIGJlaGF2aW91ciBvZiB0b29scyB3aXRoXAorKyAgcmVnYXJkcyB0byAgY29tbWVudHMgd2hlbiB1c2luZyBzY2hlbWUtYmFzZWQgeHBvaW50ZXJzIGluIHRoZVwKKysgIGRzOlJlZmVyZW5jZSdzIFVSSSBhdHRyaWJ1dGUgLS0mZ3Q7CisgICAgICAgICAgJmx0O2lldGY6ZTEgeG1sOmlkPSJlMUlEIiZndDsKKyAgICAgICAgICAgICAgICAgICZsdDshLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEgZWxlbWVudCAtLSZndDsKKyAgICAgICAgICAgICAgICAgICZsdDtpZXRmOmUxMSAmZ3Q7CisgICAgICAgICAgICAgICAgICAmbHQ7IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMSBlbGVtZW50IC0tJmd0OworICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7aWV0ZjplMTExIC8mZ3Q7CisgICAgICAgICAgICAgICAgICAmbHQ7L2lldGY6ZTExJmd0OworICAgICAgICAgICAgICAgICAgJmx0O2lldGY6ZTEyIGF0PSIyIiZndDsKKyAgICAgICAgICAgICAgICAgICZsdDshLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEyIGVsZW1lbnQgLS0mZ3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtpZXRmOmUxMjEgLyZndDsKKyAgICAgICAgICAgICAgICAgICZsdDsvaWV0ZjplMTImZ3Q7CisgICAgICAgICAgJmx0Oy9pZXRmOmUxJmd0OworICAgICAgICAgICZsdDtpZXRmOmUyIHhtbDppZD0iZTJJRCImZ3Q7CisgICAgICAgICAgICAgICAgICAmbHQ7IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUyIGVsZW1lbnQgLS0mZ3Q7CisgICAgICAgICAgICAgICAgICAmbHQ7aWV0ZjplMjEgLyZndDsKKyAgICAgICAgICAmbHQ7L2lldGY6ZTImZ3Q7CisgICAgICAgICAgJmx0O2lldGY6ZTMgeG1sOmlkPSJlM0lEIiZndDsKKyAgICAgICAgICAgICAgICAgICZsdDtpZXRmOmUzMSBhdD0iMyIvJmd0OworICAgICAgICAgICZsdDsvaWV0ZjplMyZndDsKKyAgJmx0Oy9pZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxJmd0OworPC9wcmU+CisgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgIDwvdGFibGU+CisKKyAgICAgICAgICA8dGFibGUgYm9yZGVyPSIxIj4KKyAgICAgICAgICAgIDx0Ym9keT4KKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIyIiBpZD0ieG1sZHNpZ3hwb2ludGVyLTEiPgorICAgICAgICAgICAgICAgIFRlc3QgY2FzZSB4bWxkc2lnL3hwb2ludGVyLTE8L3RoPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+SW5wdXQgZGV0YWlsczwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+VGhlIHNpZ25hdHVyZSBpcyBhbgorICAgICAgICAgICAgICAgIGVudmVsb3BlZCBzaWduYXR1cmUuIEl0IGFwcGVhcnMgYXMgdGhlIGxhc3QgY2hpbGQKKyAgICAgICAgICAgICAgICBvZiB0aGUgcm9vdCBlbGVtZW50LiBUaGUgZG9jdW1lbnQgZW52ZWxvcGluZyB0aGUKKyAgICAgICAgICAgICAgICBzaWduYXR1cmUgaXMgdGhlIG9uZSBzaG93biBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoaXMKKyAgICAgICAgICAgICAgICBzZWN0aW9uLiBUaGUgdmFsdWUgb2YgdGhlIDxjb2RlPlVSSTwvY29kZT4KKyAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgaXMgIiN4cG9pbnRlcigvKSIgKGZpbmQgaXQgPGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiLi4veG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0xLnBvaW50ZXJ2YWx1ZSI+aGVyZTwvYT4pLjwvdGQ+CisgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5SYXRpb25hbGU8L3RoPgorCisgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPkNoZWNrIHRoYXQKKyAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbnMsIGZvbGxvd2luZyB0aGUgcnVsZXMgc3RhdGVkIGluIHRoZQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNYTUxEU0lHMiI+W1hNTERTSUcyXTwvYT4gbW9kZWwsCisgICAgICAgICAgICAgICAgZGVyZWZlcmVuY2UgdGhlIFVSSSBnZXR0aW5nIHRoZSByb290IGVsZW1lbnQgYW5kCisgICAgICAgICAgICAgICAgaXRzIGRlc2NlbmRhbnQsIGFuZCB0aGF0IGNvbW1lbnRzIGFyZSBwcmVzZXJ2ZWQKKyAgICAgICAgICAgICAgICBiZWZvcmUgcHJvY2VlZGluZyB3aXRoIHRoZSBjb21wdXRhdGlvbiBvZgorICAgICAgICAgICAgICAgIGRpZ2VzdC48L3RkPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiLi4veG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0xLVNVTi54bWwiPlNpZ25hdHVyZTwvYT48L3RoPgorCisgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPgorICAgICAgICAgICAgICAgICAgPHByZT4KKyAgJmx0Oz94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPyZndDtcCisrICZsdDtpZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciXAorKyAgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyImZ3Q7CisgICAgICAgICAgICAgICAgICBcCisrICZsdDshLS0gVGhpcyBpcyBhIHhtbCBkb2N1bWVudCBmb3IgY2hlY2tpbmcgYmVoYXZpb3VyIG9mIHRvb2xzIHdpdGhcCisrICByZWdhcmRzIHRvICBjb21tZW50cyB3aGVuIHVzaW5nIHNjaGVtZS1iYXNlZCB4cG9pbnRlcnMgaW4gdGhlXAorKyAgZHM6UmVmZXJlbmNlJ3MgVVJJIGF0dHJpYnV0ZSAtLSZndDsKKyAgICAgICAgICAmbHQ7aWV0ZjplMSB4bWw6aWQ9ImUxSUQiJmd0OworICAgICAgICAgICAgICAgICAgJmx0OyEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMSBlbGVtZW50IC0tJmd0OworICAgICAgICAgICAgICAgICAgJmx0O2lldGY6ZTExJmd0OworICAgICAgICAgICAgICAgICAgJmx0OyEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTEgZWxlbWVudCAtLSZndDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2lldGY6ZTExMS8mZ3Q7CisgICAgICAgICAgICAgICAgICAmbHQ7L2lldGY6ZTExJmd0OworICAgICAgICAgICAgICAgICAgJmx0O2lldGY6ZTEyIGF0PSIyIiZndDsKKyAgICAgICAgICAgICAgICAgICZsdDshLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEyIGVsZW1lbnQgLS0mZ3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtpZXRmOmUxMjEvJmd0OworICAgICAgICAgICAgICAgICAgJmx0Oy9pZXRmOmUxMiZndDsKKyAgICAgICAgICAmbHQ7L2lldGY6ZTEmZ3Q7CisgICAgICAgICAgJmx0O2lldGY6ZTIgeG1sOmlkPSJlMklEIiZndDsKKyAgICAgICAgICAgICAgICAgICZsdDshLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTIgZWxlbWVudCAtLSZndDsKKyAgICAgICAgICAgICAgICAgICZsdDtpZXRmOmUyMS8mZ3Q7CisgICAgICAgICAgJmx0Oy9pZXRmOmUyJmd0OworICAgICAgICAgICZsdDtpZXRmOmUzIHhtbDppZD0iZTNJRCImZ3Q7CisgICAgICAgICAgICAgICAgICAmbHQ7aWV0ZjplMzEgYXQ9IjMiLyZndDsKKyAgICAgICAgICAmbHQ7L2lldGY6ZTMmZ3Q7CisgICZsdDtTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiJmd0O1wKKysgJmx0O1NpZ25lZEluZm8mZ3Q7XAorKyAmbHQ7Q2Fub25pY2FsaXphdGlvbk1ldGhvZFwKKysgIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8mZ3Q7XAorKyAmbHQ7U2lnbmF0dXJlTWV0aG9kXAorKyAgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8mZ3Q7XAorKyAmbHQ7UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKC8pIiZndDsmbHQ7VHJhbnNmb3JtcyZndDtcCisrICZsdDtUcmFuc2Zvcm1cCisrICBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8mZ3Q7XAorKyAmbHQ7VHJhbnNmb3JtXAorKyAgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIi8mZ3Q7XAorKyAmbHQ7L1RyYW5zZm9ybXMmZ3Q7XAorKyAmbHQ7RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLyZndDtcCisrICZsdDtEaWdlc3RWYWx1ZSZndDsvSVp5R0xMNzJyWGhpc1hSa0I2MTdUeEpyTDg9Jmx0Oy9EaWdlc3RWYWx1ZSZndDtcCisrICZsdDsvUmVmZXJlbmNlJmd0OyZsdDsvU2lnbmVkSW5mbyZndDtcCisrICZsdDtTaWduYXR1cmVWYWx1ZSZndDtFNGd4S3dsbFZqdnZsVVFGZTlwL3NzTzdZeHc9Jmx0Oy9TaWduYXR1cmVWYWx1ZSZndDtcCisrICZsdDsvU2lnbmF0dXJlJmd0OyZsdDsvaWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMSZndDsKKzwvcHJlPgorICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3Rib2R5PgorICAgICAgICAgIDwvdGFibGU+CisKKyAgICAgICAgICA8dGFibGUgYm9yZGVyPSIxIj4KKyAgICAgICAgICAgIDx0Ym9keT4KKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIyIiBpZD0ieG1sZHNpZ3hwb2ludGVyLTIiPgorICAgICAgICAgICAgICAgIFRlc3QgY2FzZSB4bWxkc2lnL3hwb2ludGVyLTI8L3RoPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+SW5wdXQgZGV0YWlsczwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+VGhlIHNpZ25hdHVyZSBpcyBhbgorICAgICAgICAgICAgICAgIGVudmVsb3Bpbmcgc2lnbmF0dXJlLiBUaGUgZW52ZWxvcGVkIGRvY3VtZW50IGlzIHRoZQorICAgICAgICAgICAgICAgIG9uZSBzaG93biBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgc2VjdGlvbi4gVGhlCisgICAgICAgICAgICAgICAgdmFsdWUgb2YgdGhlIDxjb2RlPlVSSTwvY29kZT4gYXR0cmlidXRlIGlzCisgICAgICAgICAgICAgICAgIiN4cG9pbnRlcihpZCgnZTFJRCcpKSIgKGZpbmQgaXQgPGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiLi4veG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0yLnBvaW50ZXJ2YWx1ZSI+aGVyZTwvYT4pLjwvdGQ+CisgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5SYXRpb25hbGU8L3RoPgorCisgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPkNoZWNrIHRoYXQKKyAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbnMsIGZvbGxvd2luZyB0aGUgcnVsZXMgc3RhdGVkIGluIHRoZQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNYTUxEU0lHMiI+W1hNTERTSUcyXTwvYT4gbW9kZWwsCisgICAgICAgICAgICAgICAgZGVyZWZlcmVuY2UgdGhlIFVSSSBnZXR0aW5nIGFuIGVsZW1lbnQgaWRlbnRpZmllZAorICAgICAgICAgICAgICAgIGJ5IGl0cyBpZCBhdHRyaWJ1dGUgYXMgd2VsbCBhcyBpdHMgZGVzY2VuZGFudCwgYW5kCisgICAgICAgICAgICAgICAgdGhhdCBjb21tZW50cyBhcmUgcHJlc2VydmVkIGJlZm9yZSBwcm9jZWVkaW5nIHdpdGgKKyAgICAgICAgICAgICAgICB0aGUgY29tcHV0YXRpb24gb2YgZGlnZXN0LjwvdGQ+CisgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPQorICAgICAgICAgICAgICAgICIuLi94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTItU1VOLnhtbCI+U2lnbmF0dXJlPC9hPjwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+CisgICAgICAgICAgICAgICAgICA8cHJlPgorICAmbHQ7P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Jmd0O1wKKysgJmx0O1NpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyImZ3Q7XAorKyAmbHQ7U2lnbmVkSW5mbyZndDtcCisrICZsdDtDYW5vbmljYWxpemF0aW9uTWV0aG9kXAorKyAgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLyZndDtcCisrICZsdDtTaWduYXR1cmVNZXRob2RcCisrICBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLyZndDtcCisrICZsdDtSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoaWQoJ2UxSUQnKSkiJmd0OyZsdDtUcmFuc2Zvcm1zJmd0O1wKKysgJmx0O1RyYW5zZm9ybVwKKysgIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIvJmd0O1wKKysgJmx0Oy9UcmFuc2Zvcm1zJmd0O1wKKysgJmx0O0RpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8mZ3Q7XAorKyAmbHQ7RGlnZXN0VmFsdWUmZ3Q7WGhTc0RwV1R0K3RpMGtjVTlYWXBsZVJESGZRPSZsdDsvRGlnZXN0VmFsdWUmZ3Q7XAorKyAmbHQ7L1JlZmVyZW5jZSZndDsmbHQ7L1NpZ25lZEluZm8mZ3Q7XAorKyAmbHQ7U2lnbmF0dXJlVmFsdWUmZ3Q7YnJFcElDVkE0bGc3ZVF3ejdpL3JsQm1ZWGlVPSZsdDsvU2lnbmF0dXJlVmFsdWUmZ3Q7XAorKyAmbHQ7T2JqZWN0Jmd0O1wKKysgJmx0O2lldGY6YzE0bjExWG1sUG9pbnRlckRvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyJcCisrICB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiZndDsKKyAgICAgICAgICAgICAgICAgIFwKKysgJmx0OyEtLSBUaGlzIGlzIGEgeG1sIGRvY3VtZW50IGZvciBjaGVja2luZyBiZWhhdmlvdXIgb2YgdG9vbHMgd2l0aFwKKysgIHJlZ2FyZHMgdG8gIGNvbW1lbnRzIHdoZW4gdXNpbmcgc2NoZW1lLWJhc2VkIHhwb2ludGVycyBpbiB0aGVcCisrICBkczpSZWZlcmVuY2UncyBVUkkgYXR0cmlidXRlIC0tJmd0OworICAgICAgICAgICZsdDtpZXRmOmUxIHhtbDppZD0iZTFJRCImZ3Q7CisgICAgICAgICAgICAgICAgICAmbHQ7IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxIGVsZW1lbnQgLS0mZ3Q7CisgICAgICAgICAgICAgICAgICAmbHQ7aWV0ZjplMTEmZ3Q7CisgICAgICAgICAgICAgICAgICAmbHQ7IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMSBlbGVtZW50IC0tJmd0OworICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7aWV0ZjplMTExLyZndDsKKyAgICAgICAgICAgICAgICAgICZsdDsvaWV0ZjplMTEmZ3Q7CisgICAgICAgICAgICAgICAgICAmbHQ7aWV0ZjplMTIgYXQ9IjIiJmd0OworICAgICAgICAgICAgICAgICAgJmx0OyEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTIgZWxlbWVudCAtLSZndDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2lldGY6ZTEyMS8mZ3Q7CisgICAgICAgICAgICAgICAgICAmbHQ7L2lldGY6ZTEyJmd0OworICAgICAgICAgICZsdDsvaWV0ZjplMSZndDsKKyAgICAgICAgICAmbHQ7aWV0ZjplMiB4bWw6aWQ9ImUySUQiJmd0OworICAgICAgICAgICAgICAgICAgJmx0OyEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMiBlbGVtZW50IC0tJmd0OworICAgICAgICAgICAgICAgICAgJmx0O2lldGY6ZTIxLyZndDsKKyAgICAgICAgICAmbHQ7L2lldGY6ZTImZ3Q7CisgICAgICAgICAgJmx0O2lldGY6ZTMgeG1sOmlkPSJlM0lEIiZndDsKKyAgICAgICAgICAgICAgICAgICZsdDtpZXRmOmUzMSBhdD0iMyIvJmd0OworICAgICAgICAgICZsdDsvaWV0ZjplMyZndDsKKyAgJmx0Oy9pZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxJmd0OyZsdDsvT2JqZWN0Jmd0OyZsdDsvU2lnbmF0dXJlJmd0OworPC9wcmU+CisgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGJvZHk+CisgICAgICAgICAgPC90YWJsZT4KKworICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjEiPgorICAgICAgICAgICAgPHRib2R5PgorICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjIiIGlkPSJ4bWxkc2lneHBvaW50ZXItMyI+CisgICAgICAgICAgICAgICAgVGVzdCBjYXNlIHhtbGRzaWcveHBvaW50ZXItMzwvdGg+CisgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5JbnB1dCBkZXRhaWxzPC90aD4KKworICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5UaGUgc2lnbmF0dXJlIGlzIGFuCisgICAgICAgICAgICAgICAgZW52ZWxvcGVkIHNpZ25hdHVyZS4gSXQgYXBwZWFycyBhcyB0aGUgbGFzdCBjaGlsZAorICAgICAgICAgICAgICAgIG9mIHRoZSByb290IGVsZW1lbnQuIFRoZSBkb2N1bWVudCBlbnZlbG9waW5nIHRoZQorICAgICAgICAgICAgICAgIHNpZ25hdHVyZSBpcyB0aGUgb25lIHNob3duIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhpcworICAgICAgICAgICAgICAgIHNlY3Rpb24uIFRoZSB2YWx1ZSBvZiB0aGUgPGNvZGU+VVJJPC9jb2RlPgorICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBpcyAiIi48L3RkPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+UmF0aW9uYWxlPC90aD4KKworICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5DaGVjayB0aGF0CisgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zLCBmb2xsb3dpbmcgdGhlIHJ1bGVzIHN0YXRlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjWE1MRFNJRzIiPltYTUxEU0lHMl08L2E+IG1vZGVsLAorICAgICAgICAgICAgICAgIGRlcmVmZXJlbmNlIHRoZSBVUkkgZ2V0dGluZyB0aGUgcm9vdCBlbGVtZW50IGFuZAorICAgICAgICAgICAgICAgIGl0cyBkZXNjZW5kYW50LCBhbmQgdGhhdCBjb21tZW50cyBhcmUgbm90IHByZXNlcnZlZAorICAgICAgICAgICAgICAgIGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggdGhlIGNvbXB1dGF0aW9uIG9mCisgICAgICAgICAgICAgICAgZGlnZXN0LjwvdGQ+CisgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPQorICAgICAgICAgICAgICAgICIuLi94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTMtU1VOLnhtbCI+U2lnbmF0dXJlPC9hPjwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+CisgICAgICAgICAgICAgICAgICA8cHJlPgorICAmbHQ7P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Jmd0O1wKKysgJmx0O2lldGY6YzE0bjExWG1sUG9pbnRlckRvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyJcCisrICB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiZndDsKKyAgICAgICAgICAgICAgICAgIFwKKysgJmx0OyEtLSBUaGlzIGlzIGEgeG1sIGRvY3VtZW50IGZvciBjaGVja2luZyBiZWhhdmlvdXIgb2YgdG9vbHMgd2l0aFwKKysgIHJlZ2FyZHMgdG8gIGNvbW1lbnRzIHdoZW4gdXNpbmcgc2NoZW1lLWJhc2VkIHhwb2ludGVycyBpbiB0aGVcCisrICBkczpSZWZlcmVuY2UncyBVUkkgYXR0cmlidXRlIC0tJmd0OworICAgICAgICAgICZsdDtpZXRmOmUxIHhtbDppZD0iZTFJRCImZ3Q7CisgICAgICAgICAgICAgICAgICAmbHQ7IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxIGVsZW1lbnQgLS0mZ3Q7CisgICAgICAgICAgICAgICAgICAmbHQ7aWV0ZjplMTEmZ3Q7CisgICAgICAgICAgICAgICAgICAmbHQ7IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMSBlbGVtZW50IC0tJmd0OworICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7aWV0ZjplMTExLyZndDsKKyAgICAgICAgICAgICAgICAgICZsdDsvaWV0ZjplMTEmZ3Q7CisgICAgICAgICAgICAgICAgICAmbHQ7aWV0ZjplMTIgYXQ9IjIiJmd0OworICAgICAgICAgICAgICAgICAgJmx0OyEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTIgZWxlbWVudCAtLSZndDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2lldGY6ZTEyMS8mZ3Q7CisgICAgICAgICAgICAgICAgICAmbHQ7L2lldGY6ZTEyJmd0OworICAgICAgICAgICZsdDsvaWV0ZjplMSZndDsKKyAgICAgICAgICAmbHQ7aWV0ZjplMiB4bWw6aWQ9ImUySUQiJmd0OworICAgICAgICAgICAgICAgICAgJmx0OyEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMiBlbGVtZW50IC0tJmd0OworICAgICAgICAgICAgICAgICAgJmx0O2lldGY6ZTIxLyZndDsKKyAgICAgICAgICAmbHQ7L2lldGY6ZTImZ3Q7CisgICAgICAgICAgJmx0O2lldGY6ZTMgeG1sOmlkPSJlM0lEIiZndDsKKyAgICAgICAgICAgICAgICAgICZsdDtpZXRmOmUzMSBhdD0iMyIvJmd0OworICAgICAgICAgICZsdDsvaWV0ZjplMyZndDsKKyAgJmx0O1NpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyImZ3Q7XAorKyAmbHQ7U2lnbmVkSW5mbyZndDtcCisrICZsdDtDYW5vbmljYWxpemF0aW9uTWV0aG9kXAorKyAgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLyZndDtcCisrICZsdDtTaWduYXR1cmVNZXRob2RcCisrICBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLyZndDtcCisrICZsdDtSZWZlcmVuY2UgVVJJPSIiJmd0OyZsdDtUcmFuc2Zvcm1zJmd0O1wKKysgJmx0O1RyYW5zZm9ybVwKKysgIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLyZndDtcCisrICZsdDtUcmFuc2Zvcm1cCisrICBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiLyZndDtcCisrICZsdDsvVHJhbnNmb3JtcyZndDtcCisrICZsdDtEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvJmd0O1wKKysgJmx0O0RpZ2VzdFZhbHVlJmd0O2dhVjVyN3FDM1ZlL3Q2NDErZDN5a044SkZTYz0mbHQ7L0RpZ2VzdFZhbHVlJmd0O1wKKysgJmx0Oy9SZWZlcmVuY2UmZ3Q7Jmx0Oy9TaWduZWRJbmZvJmd0O1wKKysgJmx0O1NpZ25hdHVyZVZhbHVlJmd0O2dTMVFLU3dBSC82ZUUzT0ZpL0w5TzBvS0tpZz0mbHQ7L1NpZ25hdHVyZVZhbHVlJmd0O1wKKysgJmx0Oy9TaWduYXR1cmUmZ3Q7Jmx0Oy9pZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxJmd0OworPC9wcmU+CisgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGJvZHk+CisgICAgICAgICAgPC90YWJsZT4KKworICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjEiPgorICAgICAgICAgICAgPHRib2R5PgorICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjIiIGlkPSJ4bWxkc2lneHBvaW50ZXItNCI+CisgICAgICAgICAgICAgICAgVGVzdCBjYXNlIHhtbGRzaWcveHBvaW50ZXItNDwvdGg+CisgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5JbnB1dCBkZXRhaWxzPC90aD4KKworICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5UaGUgc2lnbmF0dXJlIGlzIGFuCisgICAgICAgICAgICAgICAgZW52ZWxvcGluZyBzaWduYXR1cmUuIFRoZSBlbnZlbG9wZWQgZG9jdW1lbnQgaXMgdGhlCisgICAgICAgICAgICAgICAgb25lIHNob3duIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBzZWN0aW9uLiBUaGUKKyAgICAgICAgICAgICAgICB2YWx1ZSBvZiB0aGUgPGNvZGU+VVJJPC9jb2RlPiBhdHRyaWJ1dGUgaXMgIiNlMUlEIgorICAgICAgICAgICAgICAgIChmaW5kIGl0IDxhIGhyZWY9CisgICAgICAgICAgICAgICAgIi4uL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNC5wb2ludGVydmFsdWUiPmhlcmU8L2E+KS48L3RkPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+UmF0aW9uYWxlPC90aD4KKworICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5DaGVjayB0aGF0CisgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zLCBmb2xsb3dpbmcgdGhlIHJ1bGVzIHN0YXRlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjWE1MRFNJRzIiPltYTUxEU0lHMl08L2E+IG1vZGVsLAorICAgICAgICAgICAgICAgIGRlcmVmZXJlbmNlIHRoZSBVUkkgZ2V0dGluZyBhbiBlbGVtZW50IGlkZW50aWZpZWQKKyAgICAgICAgICAgICAgICBieSBpdHMgaWQgYXR0cmlidXRlIGFzIHdlbGwgYXMgaXRzIGRlc2NlbmRhbnQsIGFuZAorICAgICAgICAgICAgICAgIHRoYXQgY29tbWVudHMgYXJlIG5vdCBwcmVzZXJ2ZWQgYmVmb3JlIHByb2NlZWRpbmcKKyAgICAgICAgICAgICAgICB3aXRoIHRoZSBjb21wdXRhdGlvbiBvZiBkaWdlc3QuPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgIi4uL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNC1TVU4ueG1sIj5TaWduYXR1cmU8L2E+PC90aD4KKworICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4KKyAgICAgICAgICAgICAgICAgIDxwcmU+CisgICZsdDs/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8mZ3Q7XAorKyAmbHQ7U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiZndDtcCisrICZsdDtTaWduZWRJbmZvJmd0O1wKKysgJmx0O0Nhbm9uaWNhbGl6YXRpb25NZXRob2RcCisrICBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvJmd0O1wKKysgJmx0O1NpZ25hdHVyZU1ldGhvZFwKKysgIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvJmd0O1wKKysgJmx0O1JlZmVyZW5jZSBVUkk9IiNlMUlEIiZndDsmbHQ7VHJhbnNmb3JtcyZndDtcCisrICZsdDtUcmFuc2Zvcm1cCisrICBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiLyZndDtcCisrICZsdDsvVHJhbnNmb3JtcyZndDtcCisrICZsdDtEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvJmd0O1wKKysgJmx0O0RpZ2VzdFZhbHVlJmd0OzNLK0s0TWJSMkVXN2wvcnk1OVhvY2tLcXQ0Zz0mbHQ7L0RpZ2VzdFZhbHVlJmd0O1wKKysgJmx0Oy9SZWZlcmVuY2UmZ3Q7Jmx0Oy9TaWduZWRJbmZvJmd0O1wKKysgJmx0O1NpZ25hdHVyZVZhbHVlJmd0O2RneWpPTlVzOXJCalc3UEgyNXNlR3FjTU5aWT0mbHQ7L1NpZ25hdHVyZVZhbHVlJmd0O1wKKysgJmx0O09iamVjdCZndDtcCisrICZsdDtpZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciXAorKyAgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyImZ3Q7CisgICAgICAgICAgICAgICAgICBcCisrICZsdDshLS0gVGhpcyBpcyBhIHhtbCBkb2N1bWVudCBmb3IgY2hlY2tpbmcgYmVoYXZpb3VyIG9mIHRvb2xzIHdpdGhcCisrICByZWdhcmRzIHRvICBjb21tZW50cyB3aGVuIHVzaW5nIHNjaGVtZS1iYXNlZCB4cG9pbnRlcnMgaW4gdGhlXAorKyAgZHM6UmVmZXJlbmNlJ3MgVVJJIGF0dHJpYnV0ZSAtLSZndDsKKyAgICAgICAgICAmbHQ7aWV0ZjplMSB4bWw6aWQ9ImUxSUQiJmd0OworICAgICAgICAgICAgICAgICAgJmx0OyEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMSBlbGVtZW50IC0tJmd0OworICAgICAgICAgICAgICAgICAgJmx0O2lldGY6ZTExJmd0OworICAgICAgICAgICAgICAgICAgJmx0OyEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTEgZWxlbWVudCAtLSZndDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2lldGY6ZTExMS8mZ3Q7CisgICAgICAgICAgICAgICAgICAmbHQ7L2lldGY6ZTExJmd0OworICAgICAgICAgICAgICAgICAgJmx0O2lldGY6ZTEyIGF0PSIyIiZndDsKKyAgICAgICAgICAgICAgICAgICZsdDshLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEyIGVsZW1lbnQgLS0mZ3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtpZXRmOmUxMjEvJmd0OworICAgICAgICAgICAgICAgICAgJmx0Oy9pZXRmOmUxMiZndDsKKyAgICAgICAgICAmbHQ7L2lldGY6ZTEmZ3Q7CisgICAgICAgICAgJmx0O2lldGY6ZTIgeG1sOmlkPSJlMklEIiZndDsKKyAgICAgICAgICAgICAgICAgICZsdDshLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTIgZWxlbWVudCAtLSZndDsKKyAgICAgICAgICAgICAgICAgICZsdDtpZXRmOmUyMS8mZ3Q7CisgICAgICAgICAgJmx0Oy9pZXRmOmUyJmd0OworICAgICAgICAgICZsdDtpZXRmOmUzIHhtbDppZD0iZTNJRCImZ3Q7CisgICAgICAgICAgICAgICAgICAmbHQ7aWV0ZjplMzEgYXQ9IjMiLyZndDsKKyAgICAgICAgICAmbHQ7L2lldGY6ZTMmZ3Q7CisgICZsdDsvaWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMSZndDsmbHQ7L09iamVjdCZndDsmbHQ7L1NpZ25hdHVyZSZndDsKKzwvcHJlPgorICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3Rib2R5PgorICAgICAgICAgIDwvdGFibGU+CisKKyAgICAgICAgICA8dGFibGUgYm9yZGVyPSIxIj4KKyAgICAgICAgICAgIDx0Ym9keT4KKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIyIiBpZD0ieG1sZHNpZ3hwb2ludGVyLTUiPgorICAgICAgICAgICAgICAgIFRlc3QgY2FzZSB4bWxkc2lnL3hwb2ludGVyLTU8L3RoPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+SW5wdXQgZGV0YWlsczwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+VGhlIHNpZ25hdHVyZSBpcyBhbgorICAgICAgICAgICAgICAgIGVudmVsb3Bpbmcgc2lnbmF0dXJlIGFuZCBzaWducyB0aHJlZSBlbGVtZW50cyBmcm9tCisgICAgICAgICAgICAgICAgdGhlIGRvY3VtZW50LiBUaGUgZW52ZWxvcGVkIGRvY3VtZW50IGlzIHRoZSBvbmUKKyAgICAgICAgICAgICAgICBzaG93biBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgc2VjdGlvbi4gVGhlcmUgYXJlCisgICAgICAgICAgICAgICAgdGhyZWUgPGNvZGU+ZHM6UmVmZXJlbmNlPC9jb2RlPiBlbGVtZW50cy4gRm9yIHRoZQorICAgICAgICAgICAgICAgIGZpcnN0IG9uZSB0aGUgdmFsdWUgb2YgdGhlIDxjb2RlPlVSSTwvY29kZT4KKyAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgaXMgIiN4cG9pbnRlcihpZCgnZTFJRCcpKSIgKGZpbmQgaXQKKyAgICAgICAgICAgICAgICA8YSBocmVmPQorICAgICAgICAgICAgICAgICIuLi94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTUtZmlyc3R1cmkucG9pbnRlcnZhbHVlIj4KKyAgICAgICAgICAgICAgICBoZXJlPC9hPikuIEZvciB0aGUgc2Vjb25kLCBpdCBpcworICAgICAgICAgICAgICAgICIjeHBvaW50ZXIoaWQoJ2UySUQnKSkiIChmaW5kIGl0IDxhIGhyZWY9CisgICAgICAgICAgICAgICAgIi4uL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNS1zZWNvbmR1cmkucG9pbnRlcnZhbHVlIj4KKyAgICAgICAgICAgICAgICBoZXJlPC9hPikuIEZvciB0aGUgdGhpcmQgb25lLCBpdCBpcworICAgICAgICAgICAgICAgICIjeHBvaW50ZXIoaWQoJ2UzSUQnKSkiIChmaW5kIGl0IDxhIGhyZWY9CisgICAgICAgICAgICAgICAgIi4uL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNS10aGlyZHVyaS5wb2ludGVydmFsdWUiPgorICAgICAgICAgICAgICAgIGhlcmU8L2E+KS48L3RkPgorICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+UmF0aW9uYWxlPC90aD4KKworICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5DaGVjayBpbXBsZW1lbnRhdGlvbidzCisgICAgICAgICAgICAgICAgYmVoYXZpb3VyIHdoZW4gcHJvY2Vzc2luZyBzZXZlcmFsIGVsZW1lbnRzICh3aXRoCisgICAgICAgICAgICAgICAgYW5kIHdpdGhvdXQgY29tbWVudHMpIHJlZmVyZW5jZWQgYnkgaXRzIElkCisgICAgICAgICAgICAgICAgYXR0cmlidXRlIHVzaW5nIGEgc2NoZW1hLWJhc2VkIHhwb2ludGVyLjwvdGQ+CisgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPQorICAgICAgICAgICAgICAgICIuLi94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTUtU1VOLnhtbCI+U2lnbmF0dXJlPC9hPjwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+CisgICAgICAgICAgICAgICAgICA8cHJlPgorICAmbHQ7P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Jmd0O1wKKysgJmx0O1NpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyImZ3Q7XAorKyAmbHQ7U2lnbmVkSW5mbyZndDtcCisrICZsdDtDYW5vbmljYWxpemF0aW9uTWV0aG9kXAorKyAgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLyZndDtcCisrICZsdDtTaWduYXR1cmVNZXRob2RcCisrICBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLyZndDtcCisrICZsdDtSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoaWQoJ2UxSUQnKSkiJmd0OyZsdDtUcmFuc2Zvcm1zJmd0O1wKKysgJmx0O1RyYW5zZm9ybVwKKysgIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIvJmd0O1wKKysgJmx0Oy9UcmFuc2Zvcm1zJmd0O1wKKysgJmx0O0RpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8mZ3Q7XAorKyAmbHQ7RGlnZXN0VmFsdWUmZ3Q7WGhTc0RwV1R0K3RpMGtjVTlYWXBsZVJESGZRPSZsdDsvRGlnZXN0VmFsdWUmZ3Q7XAorKyAmbHQ7L1JlZmVyZW5jZSZndDsmbHQ7UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKGlkKCdlMklEJykpIiZndDtcCisrICZsdDtUcmFuc2Zvcm1zJmd0O1wKKysgJmx0O1RyYW5zZm9ybVwKKysgIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIvJmd0O1wKKysgJmx0Oy9UcmFuc2Zvcm1zJmd0O1wKKysgJmx0O0RpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8mZ3Q7XAorKyAmbHQ7RGlnZXN0VmFsdWUmZ3Q7YWJ5QTFqNHl6ZjFJZ1FMV3dEd0t1VTlsOElrPSZsdDsvRGlnZXN0VmFsdWUmZ3Q7XAorKyAmbHQ7L1JlZmVyZW5jZSZndDsmbHQ7UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKGlkKCdlM0lEJykpIiZndDtcCisrICZsdDtUcmFuc2Zvcm1zJmd0O1wKKysgJmx0O1RyYW5zZm9ybVwKKysgIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIvJmd0O1wKKysgJmx0Oy9UcmFuc2Zvcm1zJmd0O1wKKysgJmx0O0RpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8mZ3Q7XAorKyAmbHQ7RGlnZXN0VmFsdWUmZ3Q7UlVVQmlVZUZmOHVScVRscEN5dXRrWERxbko0PSZsdDsvRGlnZXN0VmFsdWUmZ3Q7XAorKyAmbHQ7L1JlZmVyZW5jZSZndDsmbHQ7L1NpZ25lZEluZm8mZ3Q7XAorKyAmbHQ7U2lnbmF0dXJlVmFsdWUmZ3Q7c0crMHBIazlUQjZ2N2pFUzlSWlVJVktNRm9zPSZsdDsvU2lnbmF0dXJlVmFsdWUmZ3Q7XAorKyAmbHQ7T2JqZWN0Jmd0O1wKKysgJmx0O2lldGY6YzE0bjExWG1sUG9pbnRlckRvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyJcCisrICB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiZndDsKKyAgICAgICAgICAgICAgICAgIFwKKysgJmx0OyEtLSBUaGlzIGlzIGEgeG1sIGRvY3VtZW50IGZvciBjaGVja2luZyBiZWhhdmlvdXIgb2YgdG9vbHMgd2l0aFwKKysgIHJlZ2FyZHMgdG8gIGNvbW1lbnRzIHdoZW4gdXNpbmcgc2NoZW1lLWJhc2VkIHhwb2ludGVycyBpbiB0aGVcCisrICBkczpSZWZlcmVuY2UncyBVUkkgYXR0cmlidXRlIC0tJmd0OworICAgICAgICAgICZsdDtpZXRmOmUxIHhtbDppZD0iZTFJRCImZ3Q7CisgICAgICAgICAgICAgICAgICAmbHQ7IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxIGVsZW1lbnQgLS0mZ3Q7CisgICAgICAgICAgICAgICAgICAmbHQ7aWV0ZjplMTEmZ3Q7CisgICAgICAgICAgICAgICAgICAmbHQ7IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMSBlbGVtZW50IC0tJmd0OworICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7aWV0ZjplMTExLyZndDsKKyAgICAgICAgICAgICAgICAgICZsdDsvaWV0ZjplMTEmZ3Q7CisgICAgICAgICAgICAgICAgICAmbHQ7aWV0ZjplMTIgYXQ9IjIiJmd0OworICAgICAgICAgICAgICAgICAgJmx0OyEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTIgZWxlbWVudCAtLSZndDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2lldGY6ZTEyMS8mZ3Q7CisgICAgICAgICAgICAgICAgICAmbHQ7L2lldGY6ZTEyJmd0OworICAgICAgICAgICZsdDsvaWV0ZjplMSZndDsKKyAgICAgICAgICAmbHQ7aWV0ZjplMiB4bWw6aWQ9ImUySUQiJmd0OworICAgICAgICAgICAgICAgICAgJmx0OyEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMiBlbGVtZW50IC0tJmd0OworICAgICAgICAgICAgICAgICAgJmx0O2lldGY6ZTIxLyZndDsKKyAgICAgICAgICAmbHQ7L2lldGY6ZTImZ3Q7CisgICAgICAgICAgJmx0O2lldGY6ZTMgeG1sOmlkPSJlM0lEIiZndDsKKyAgICAgICAgICAgICAgICAgICZsdDtpZXRmOmUzMSBhdD0iMyIvJmd0OworICAgICAgICAgICZsdDsvaWV0ZjplMyZndDsKKyAgJmx0Oy9pZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxJmd0OyZsdDsvT2JqZWN0Jmd0OyZsdDsvU2lnbmF0dXJlJmd0OworPC9wcmU+CisgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGJvZHk+CisgICAgICAgICAgPC90YWJsZT4KKworICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjEiPgorICAgICAgICAgICAgPHRib2R5PgorICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjIiIGlkPSJ4bWxkc2lneHBvaW50ZXItNiI+CisgICAgICAgICAgICAgICAgVGVzdCBjYXNlIHhtbGRzaWcveHBvaW50ZXItNjwvdGg+CisgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5JbnB1dCBkZXRhaWxzPC90aD4KKworICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5UaGUgc2lnbmF0dXJlIGlzIGFuCisgICAgICAgICAgICAgICAgZW52ZWxvcGluZyBzaWduYXR1cmUgYW5kIHNpZ25zIHR3byBlbGVtZW50cyBmcm9tCisgICAgICAgICAgICAgICAgdGhlIGRvY3VtZW50LiBUaGUgZW52ZWxvcGVkIGRvY3VtZW50IGlzIHRoZSBvbmUKKyAgICAgICAgICAgICAgICBzaG93biBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgc2VjdGlvbi4gVGhlcmUgYXJlCisgICAgICAgICAgICAgICAgdGhyZWUgPGNvZGU+ZHM6UmVmZXJlbmNlPC9jb2RlPiBlbGVtZW50cy4gRm9yIHRoZQorICAgICAgICAgICAgICAgIGZpcnN0IG9uZSB0aGUgdmFsdWUgb2YgdGhlIDxjb2RlPlVSSTwvY29kZT4KKyAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgaXMgIiNlMUlEIiAoZmluZCBpdCA8YSBocmVmPQorICAgICAgICAgICAgICAgICIuLi94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTYtZmlyc3R1cmkucG9pbnRlcnZhbHVlIj4KKyAgICAgICAgICAgICAgICBoZXJlPC9hPikuIEZvciB0aGUgc2Vjb25kLCBpdCBpcyAiI2UySUQiIChmaW5kIGl0CisgICAgICAgICAgICAgICAgPGEgaHJlZj0KKyAgICAgICAgICAgICAgICAiLi4veG1sZHNpZy94cG9pbnRlci94cG9pbnRlci02LXNlY29uZHVyaS5wb2ludGVydmFsdWUiPgorICAgICAgICAgICAgICAgIGhlcmU8L2E+KS4gRm9yIHRoZSB0aGlyZCBvbmUsIGl0IGlzICIjZTNJRCIgKGZpbmQKKyAgICAgICAgICAgICAgICBpdCA8YSBocmVmPQorICAgICAgICAgICAgICAgICIuLi94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTYtdGhpcmR1cmkucG9pbnRlcnZhbHVlIj4KKyAgICAgICAgICAgICAgICBoZXJlPC9hPikuPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlJhdGlvbmFsZTwvdGg+CisKKyAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+Q2hlY2sgaW1wbGVtZW50YXRpb24ncworICAgICAgICAgICAgICAgIGJlaGF2aW91ciB3aGVuIHByb2Nlc3Npbmcgc2V2ZXJhbCBlbGVtZW50cyAod2l0aAorICAgICAgICAgICAgICAgIGFuZCB3aXRob3V0IGNvbW1lbnRzKSByZWZlcmVuY2VkIGJ5IGl0cyBJZAorICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSB1c2luZyBhIHNob3J0LW5hbWUgeHBvaW50ZXIuPC90ZD4KKyAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgIi4uL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNi1TVU4ueG1sIj5TaWduYXR1cmU8L2E+PC90aD4KKworICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4KKyAgICAgICAgICAgICAgICAgIDxwcmU+CisgICZsdDs/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8mZ3Q7XAorKyAmbHQ7U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiZndDtcCisrICZsdDtTaWduZWRJbmZvJmd0O1wKKysgJmx0O0Nhbm9uaWNhbGl6YXRpb25NZXRob2RcCisrICBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvJmd0O1wKKysgJmx0O1NpZ25hdHVyZU1ldGhvZFwKKysgIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvJmd0O1wKKysgJmx0O1JlZmVyZW5jZSBVUkk9IiNlMUlEIiZndDsmbHQ7VHJhbnNmb3JtcyZndDtcCisrICZsdDtUcmFuc2Zvcm1cCisrICBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiLyZndDtcCisrICZsdDsvVHJhbnNmb3JtcyZndDtcCisrICZsdDtEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvJmd0O1wKKysgJmx0O0RpZ2VzdFZhbHVlJmd0OzNLK0s0TWJSMkVXN2wvcnk1OVhvY2tLcXQ0Zz0mbHQ7L0RpZ2VzdFZhbHVlJmd0O1wKKysgJmx0Oy9SZWZlcmVuY2UmZ3Q7Jmx0O1JlZmVyZW5jZSBVUkk9IiNlMklEIiZndDsmbHQ7VHJhbnNmb3JtcyZndDtcCisrICZsdDtUcmFuc2Zvcm1cCisrICBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiLyZndDtcCisrICZsdDsvVHJhbnNmb3JtcyZndDtcCisrICZsdDtEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvJmd0O1wKKysgJmx0O0RpZ2VzdFZhbHVlJmd0O2huS0ZqR0ZyL2p3TENDVGNrWnBhY2xPd2UyOD0mbHQ7L0RpZ2VzdFZhbHVlJmd0O1wKKysgJmx0Oy9SZWZlcmVuY2UmZ3Q7Jmx0O1JlZmVyZW5jZSBVUkk9IiNlM0lEIiZndDsmbHQ7VHJhbnNmb3JtcyZndDtcCisrICZsdDtUcmFuc2Zvcm1cCisrICBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiLyZndDtcCisrICZsdDsvVHJhbnNmb3JtcyZndDtcCisrICZsdDtEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvJmd0O1wKKysgJmx0O0RpZ2VzdFZhbHVlJmd0O1JVVUJpVWVGZjh1UnFUbHBDeXV0a1hEcW5KND0mbHQ7L0RpZ2VzdFZhbHVlJmd0O1wKKysgJmx0Oy9SZWZlcmVuY2UmZ3Q7Jmx0Oy9TaWduZWRJbmZvJmd0O1wKKysgJmx0O1NpZ25hdHVyZVZhbHVlJmd0O1h6RUpRK3doaEhVWWxxaUNFdDhYRnhDOHdwaz0mbHQ7L1NpZ25hdHVyZVZhbHVlJmd0O1wKKysgJmx0O09iamVjdCZndDtcCisrICZsdDtpZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciXAorKyAgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyImZ3Q7CisgICAgICAgICAgICAgICAgICBcCisrICZsdDshLS0gVGhpcyBpcyBhIHhtbCBkb2N1bWVudCBmb3IgY2hlY2tpbmcgYmVoYXZpb3VyIG9mIHRvb2xzIHdpdGhcCisrICByZWdhcmRzIHRvICBjb21tZW50cyB3aGVuIHVzaW5nIHNjaGVtZS1iYXNlZCB4cG9pbnRlcnMgaW4gdGhlXAorKyAgZHM6UmVmZXJlbmNlJ3MgVVJJIGF0dHJpYnV0ZSAtLSZndDsKKyAgICAgICAgICAmbHQ7aWV0ZjplMSB4bWw6aWQ9ImUxSUQiJmd0OworICAgICAgICAgICAgICAgICAgJmx0OyEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMSBlbGVtZW50IC0tJmd0OworICAgICAgICAgICAgICAgICAgJmx0O2lldGY6ZTExJmd0OworICAgICAgICAgICAgICAgICAgJmx0OyEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTEgZWxlbWVudCAtLSZndDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2lldGY6ZTExMS8mZ3Q7CisgICAgICAgICAgICAgICAgICAmbHQ7L2lldGY6ZTExJmd0OworICAgICAgICAgICAgICAgICAgJmx0O2lldGY6ZTEyIGF0PSIyIiZndDsKKyAgICAgICAgICAgICAgICAgICZsdDshLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEyIGVsZW1lbnQgLS0mZ3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtpZXRmOmUxMjEvJmd0OworICAgICAgICAgICAgICAgICAgJmx0Oy9pZXRmOmUxMiZndDsKKyAgICAgICAgICAmbHQ7L2lldGY6ZTEmZ3Q7CisgICAgICAgICAgJmx0O2lldGY6ZTIgeG1sOmlkPSJlMklEIiZndDsKKyAgICAgICAgICAgICAgICAgICZsdDshLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTIgZWxlbWVudCAtLSZndDsKKyAgICAgICAgICAgICAgICAgICZsdDtpZXRmOmUyMS8mZ3Q7CisgICAgICAgICAgJmx0Oy9pZXRmOmUyJmd0OworICAgICAgICAgICZsdDtpZXRmOmUzIHhtbDppZD0iZTNJRCImZ3Q7CisgICAgICAgICAgICAgICAgICAmbHQ7aWV0ZjplMzEgYXQ9IjMiLyZndDsKKyAgICAgICAgICAmbHQ7L2lldGY6ZTMmZ3Q7CisgICZsdDsvaWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMSZndDsmbHQ7L09iamVjdCZndDsmbHQ7L1NpZ25hdHVyZSZndDsKKzwvcHJlPgorICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3Rib2R5PgorICAgICAgICAgIDwvdGFibGU+CisgICAgICAgIDwvZGl2PgorCisgICAgICAgIDxkaXYgY2xhc3M9ImRpdjMiPgorICAgICAgICAgIDxoND48YSBuYW1lPSJUZXN0Q2FzZXMtRGlzdGluZ3Vpc2hlZE5hbWUiIGlkPQorICAgICAgICAgICJUZXN0Q2FzZXMtRGlzdGluZ3Vpc2hlZE5hbWUiPjwvYT4yLjMuNCBUZXN0IENhc2VzIG9uCisgICAgICAgICAgU3RyaW5nIGVuY29kaW5nIG9mIERpc3Rpbmd1aXNoZWQgTmFtZXM8L2g0PgorCisgICAgICAgICAgPGRpdiBjbGFzcz0iZGl2NCI+CisgICAgICAgICAgICA8aDU+PGEgbmFtZT0KKyAgICAgICAgICAgICJUZXN0Q2FzZXMtRGlzdGluZ3Vpc2hlZE5hbWUtUkZDMjI1My1SRkM0NTE0IiBpZD0KKyAgICAgICAgICAgICJUZXN0Q2FzZXMtRGlzdGluZ3Vpc2hlZE5hbWUtUkZDMjI1My1SRkM0NTE0Ij48L2E+Mi4zLjQuMQorICAgICAgICAgICAgVGVzdCBDYXNlcyBvbiBkaWZmZXJlbmNlcyBpZGVudGlmaWVkIGluIFJGQyAyMjUzIGFuZAorICAgICAgICAgICAgUkZDIDQ1MTQ8L2g1PgorCisgICAgICAgICAgICA8cD5UaGlzIFdvcmtpbmcgZ3JvdXAgaGFzIGlkZW50aWZpZWQgYSBudW1iZXIgb2YKKyAgICAgICAgICAgIGRpZmZlcmVuY2VzIGJldHdlZW4gPGEgaHJlZj0iI1JGQy00NTE0Ij5bUkZDLTQ1MTRdPC9hPgorICAgICAgICAgICAgYW5kIDxhIGhyZWY9IiNSRkMtMjI1MyI+W1JGQy0yMjUzXTwvYT4uIFRoZXkgYXJlCisgICAgICAgICAgICBkZXNjcmliZWQgaW4gdGhpcyA8YSBocmVmPQorICAgICAgICAgICAgImh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3B1YmxpYy14bWxzZWMtbWFpbnR3Zy8yMDA3SnVsLzAwMjQuaHRtbCI+CisgICAgICAgICAgICBlLW1haWw8L2E+IHdpdGhpbiB0aGUgWE1MIFNlY3VyaXR5IFNwZWNpZmljYXRpb25zCisgICAgICAgICAgICBNYWludGVuYW5jZSBXb3JraW5nIEdyb3VwIGUtbWFpbCBsaXN0IGFyY2hpdmUuIFRoaXMKKyAgICAgICAgICAgIHNlY3Rpb24gY29udGFpbnMgdGVzdCBjYXNlcyBkZXNpZ25lZCBmb3IgY2hlY2tpbmcgdGhhdAorICAgICAgICAgICAgYXBwbGljYXRpb25zIGNhbiBwYXJzZSBhbmQgZ2VuZXJhdGUgUkZDIDQ1MTQKKyAgICAgICAgICAgIERpc3Rpbmd1aXNoZWQgTmFtZXMgd2l0aCB0aGVzZSBkaWZmZXJlbmNlcy48L3A+CisKKyAgICAgICAgICAgIDxwPlRoZSBmb2xsb3dpbmcgcnVsZXMgYXBwbHkgZm9yIHRoZSB0ZXN0IGNhc2VzIGRlZmluZWQKKyAgICAgICAgICAgIGluIHRoaXMgc2VjdGlvbjo8L3A+CisKKyAgICAgICAgICAgIDx1bD4KKyAgICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICAgIDxwPlRoZSBpbnB1dCB0byBlYWNoIHRlc3QgY2FzZSBpcyBhbiBYTUwgU2lnbmF0dXJlLgorICAgICAgICAgICAgICAgIEVhY2ggc2lnbmF0dXJlIGNvbnRhaW5zIGFuIFg1MDlTdWJqZWN0TmFtZSBvcgorICAgICAgICAgICAgICAgIFg1MDlJc3N1ZXJTZXJpYWwgZWxlbWVudCB3aXRoIGFuIFJGQyA0NTE0CisgICAgICAgICAgICAgICAgRGlzdGluZ3Vpc2hlZCBOYW1lLjwvcD4KKyAgICAgICAgICAgICAgPC9saT4KKworICAgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgICAgPHA+VG8gcmVzb2x2ZSB0aGUga2V5LCB0aGUgYXBwbGljYXRpb24gbXVzdCBmaW5kIGEKKyAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZSBjb250YWluaW5nIGEgbWF0Y2hpbmcgaXNzdWVyL3NlcmlhbCBvcgorICAgICAgICAgICAgICAgIHN1YmplY3QgRE4gZnJvbSB0aGUgY2VydGlmaWNhdGVzIHRoYXQgYXJlIGNvbnRhaW5lZAorICAgICAgICAgICAgICAgIGluIHRoZSAiY2VydHMiIGRpcmVjdG9yeS48L3A+CisgICAgICAgICAgICAgIDwvbGk+CisKKyAgICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICAgIDxwPlNpZ25hdHVyZSBnZW5lcmF0aW9uIGlzIGFsc28gcmVxdWlyZWQuIEEgUEtDUyMxMgorICAgICAgICAgICAgICAgIEtleVN0b3JlIGNvbnRhaW5pbmcgdGhlIHByaXZhdGUga2V5cyB1c2VkIHRvCisgICAgICAgICAgICAgICAgZ2VuZXJhdGUgdGhlIHNpZ25hdHVyZXMgaXMgaW4gdGhlIGZpbGUKKyAgICAgICAgICAgICAgICAiY2VydHMva2V5c3RvcmUucDEyIi4gVGhlIGtleXN0b3JlIHBhc3N3b3JkIGlzCisgICAgICAgICAgICAgICAgInNlY3JldCIuIFRoZSBrZXkgZW50cnkgbmFtZSBpcyB0aGUgc2FtZSBhcyB0aGUKKyAgICAgICAgICAgICAgICBjb3JyZXNwb25kaW5nIGNlcnRpZmljYXRlIGZpbGUgbmFtZSAod2l0aG91dCB0aGUKKyAgICAgICAgICAgICAgICAiLmNydCIgcGFydCkuPC9wPgorICAgICAgICAgICAgICA8L2xpPgorICAgICAgICAgICAgPC91bD4KKworICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMSI+CisgICAgICAgICAgICAgIDx0Ym9keT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMiIgaWQ9CisgICAgICAgICAgICAgICAgICAieG1sZHNpZ2RuYW1lZGlmZlJGQ3MtMSI+VGVzdCBjYXNlCisgICAgICAgICAgICAgICAgICB4bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTE8L3RoPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+SW5wdXQgZGV0YWlsczwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5UaGUgaW5wdXQgaXMgYW4gWE1MCisgICAgICAgICAgICAgICAgICBTaWduYXR1cmUgY29udGFpbmluZyBhbiBYNTA5U3ViamVjdE5hbWUgaW4gUkZDCisgICAgICAgICAgICAgICAgICA0NTE0IGZvcm1hdC4gVGhlIEROIGNvbnRhaW5zIGF0IGxlYXN0IG9uZQorICAgICAgICAgICAgICAgICAgUmVsYXRpdmUgRGlzdGluZ3Vpc2hlZCBOYW1lIHdob3NlIGF0dHJpYnV0ZSB0eXBlCisgICAgICAgICAgICAgICAgICBrZXl3b3JkIGlzIGVuY29kZWQgd2l0aCBvbmUgYWxwaGFiZXRpYyBjaGFyYWN0ZXIsCisgICAgICAgICAgICAgICAgICBhbmQgYW5vdGhlciBSZWxhdGl2ZSBEaXN0aW5ndWlzaGVkIE5hbWUgd2hvc2UKKyAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSB0eXBlIGtleXdvcmQgaXMgZW5jb2RlZCB3aXRoIHR3bworICAgICAgICAgICAgICAgICAgY2hhcmFjdGVycy48L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+UmF0aW9uYWxlPC90aD4KKworICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPkNoZWNrIHByb2Nlc3Npbmcgb2YKKyAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSB0eXBlIGtleXdvcmRzIGJ5IHRvb2xzIGltcGxlbWVudGluZworICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI1JGQy00NTE0Ij5bUkZDLTQ1MTRdPC9hPi48L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICIjUkZDLTQ1MTQiPltSRkMtNDUxNF08L2E+IEROPC90aD4KKworICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPkNOPUpvaG4sQz1VUzwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPQorICAgICAgICAgICAgICAgICAgIi4uL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMS1TVU4ueG1sIj5TaWduYXR1cmU8L2E+PC90aD4KKworICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPgorICAgICAgICAgICAgICAgICAgICA8cHJlPgorICAmbHQ7P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPyZndDtcCisrICZsdDtTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiJmd0O1wKKysgJmx0O1NpZ25lZEluZm8mZ3Q7XAorKyAmbHQ7Q2Fub25pY2FsaXphdGlvbk1ldGhvZFwKKysgIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8mZ3Q7XAorKyAmbHQ7U2lnbmF0dXJlTWV0aG9kXAorKyAgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiLyZndDtcCisrICZsdDtSZWZlcmVuY2UgVVJJPSIjb2JqZWN0IiZndDtcCisrICZsdDtEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvJmd0O1wKKysgJmx0O0RpZ2VzdFZhbHVlJmd0O254R1Z4VHpYM3VRVmVhWjd2dFdNTGMrVjZDRT0mbHQ7L0RpZ2VzdFZhbHVlJmd0O1wKKysgJmx0Oy9SZWZlcmVuY2UmZ3Q7Jmx0Oy9TaWduZWRJbmZvJmd0O1wKKysgJmx0O1NpZ25hdHVyZVZhbHVlJmd0O1wKKysgRE96NEtoSkhPdmh6UGlLanhsMFdWc3JYUHVaOVhRdGREdktOMEt1TFFHSXpYa2xqZmtGRVFBPT0mbHQ7L1NpZ25hdHVyZVZhbHVlJmd0O1wKKysgJmx0O0tleUluZm8mZ3Q7Jmx0O1g1MDlEYXRhJmd0O1wKKysgJmx0O1g1MDlTdWJqZWN0TmFtZSZndDtDTj1Kb2huLEM9VVMmbHQ7L1g1MDlTdWJqZWN0TmFtZSZndDtcCisrICZsdDsvWDUwOURhdGEmZ3Q7Jmx0Oy9LZXlJbmZvJmd0O1wKKysgJmx0O09iamVjdCBJZD0ib2JqZWN0IiZndDtBcHByb3ZlZCZsdDsvT2JqZWN0Jmd0OyZsdDsvU2lnbmF0dXJlJmd0OworPC9wcmU+CisgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgIDwvdGJvZHk+CisgICAgICAgICAgICA8L3RhYmxlPgorCisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIxIj4KKyAgICAgICAgICAgICAgPHRib2R5PgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIyIiBpZD0KKyAgICAgICAgICAgICAgICAgICJ4bWxkc2lnZG5hbWVkaWZmUkZDcy0yIj5UZXN0IGNhc2UKKyAgICAgICAgICAgICAgICAgIHhtbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMjwvdGg+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5JbnB1dCBkZXRhaWxzPC90aD4KKworICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlRoZSBpbnB1dCBpcyBhbiBYTUwKKyAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZSBjb250YWluaW5nIGFuIFg1MDlTdWJqZWN0TmFtZSBpbiBSRkMKKyAgICAgICAgICAgICAgICAgIDQ1MTQgZm9ybWF0LiBUaGUgRE4gY29udGFpbnMgYXQgbGVhc3QgYSBSZWxhdGl2ZQorICAgICAgICAgICAgICAgICAgRGlzdGluZ3Vpc2hlZCBOYW1lIGNvbnRhaW5pbmcgc3BhY2UgY2hhcmFjdGVycy4KKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNSRkMtMjI1MyI+W1JGQy0yMjUzXTwvYT4gZG9lcyBub3QgYWxsb3cKKyAgICAgICAgICAgICAgICAgIGVzY2FwaW5nLCB3aGVyZWFzIDxhIGhyZWY9CisgICAgICAgICAgICAgICAgICAiI1JGQy00NTE0Ij5bUkZDLTQ1MTRdPC9hPiByZXF1aXJlcyBzcGFjZQorICAgICAgICAgICAgICAgICAgY2hhcmFjdGVycyB0byBiZSBlc2NhcGVkLjwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5SYXRpb25hbGU8L3RoPgorCisgICAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+Q2hlY2sgZXNjYXBpbmcgb2YKKyAgICAgICAgICAgICAgICAgIHNwYWNlIGNoYXJhY3RlcnMgYnkgdG9vbHMgaW1wbGVtZW50aW5nIDxhIGhyZWY9CisgICAgICAgICAgICAgICAgICAiI1JGQy00NTE0Ij5bUkZDLTQ1MTRdPC9hPi48L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICIjUkZDLTQ1MTQiPltSRkMtNDUxNF08L2E+IEROPC90aD4KKworICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPkNOPVwgU3BhY2V5XAorICAgICAgICAgICAgICAgICAgLEM9VVM8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICIuLi94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTItU1VOLnhtbCI+U2lnbmF0dXJlPC9hPjwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4KKyAgICAgICAgICAgICAgICAgICAgPHByZT4KKyAgJmx0Oz94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8mZ3Q7XAorKyAmbHQ7U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiZndDtcCisrICZsdDtTaWduZWRJbmZvJmd0O1wKKysgJmx0O0Nhbm9uaWNhbGl6YXRpb25NZXRob2RcCisrICBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvJmd0O1wKKysgJmx0O1NpZ25hdHVyZU1ldGhvZFwKKysgIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIi8mZ3Q7XAorKyAmbHQ7UmVmZXJlbmNlIFVSST0iI29iamVjdCImZ3Q7XAorKyAmbHQ7RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLyZndDtcCisrICZsdDtEaWdlc3RWYWx1ZSZndDtueEdWeFR6WDN1UVZlYVo3dnRXTUxjK1Y2Q0U9Jmx0Oy9EaWdlc3RWYWx1ZSZndDtcCisrICZsdDsvUmVmZXJlbmNlJmd0OyZsdDsvU2lnbmVkSW5mbyZndDtcCisrICZsdDtTaWduYXR1cmVWYWx1ZSZndDtcCisrIFYxOG54bHMxcHFuNEl5QS9HTm9zR2ZxTEhFRTZJTm55dVY5VG1IbFl0L3NZc2FhZ0hDSDlYdz09Jmx0Oy9TaWduYXR1cmVWYWx1ZSZndDtcCisrICZsdDtLZXlJbmZvJmd0OyZsdDtYNTA5RGF0YSZndDtcCisrICZsdDtYNTA5U3ViamVjdE5hbWUmZ3Q7Q049XCBTcGFjZXlcICxDPVVTJmx0Oy9YNTA5U3ViamVjdE5hbWUmZ3Q7XAorKyAmbHQ7L1g1MDlEYXRhJmd0OyZsdDsvS2V5SW5mbyZndDtcCisrICZsdDtPYmplY3QgSWQ9Im9iamVjdCImZ3Q7QXBwcm92ZWQmbHQ7L09iamVjdCZndDsmbHQ7L1NpZ25hdHVyZSZndDsKKzwvcHJlPgorICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICA8L3Rib2R5PgorICAgICAgICAgICAgPC90YWJsZT4KKworICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMSI+CisgICAgICAgICAgICAgIDx0Ym9keT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMiIgaWQ9CisgICAgICAgICAgICAgICAgICAieG1sZHNpZ2RuYW1lZGlmZlJGQ3MtMyI+VGVzdCBjYXNlCisgICAgICAgICAgICAgICAgICB4bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTM8L3RoPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+SW5wdXQgZGV0YWlsczwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5UaGUgaW5wdXQgaXMgYW4gWE1MCisgICAgICAgICAgICAgICAgICBTaWduYXR1cmUgY29udGFpbmluZyBhbiBYNTA5U3ViamVjdE5hbWUgaW4gUkZDCisgICAgICAgICAgICAgICAgICA0NTE0IGZvcm1hdC4gVGhlIEROIGNvbnRhaW5zIGF0IGxlYXN0IGEgUmVsYXRpdmUKKyAgICAgICAgICAgICAgICAgIERpc3Rpbmd1aXNoZWQgTmFtZSBjb250YWluaW5nIG51bGwgY2hhcmFjdGVycy4KKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNSRkMtMjI1MyI+W1JGQy0yMjUzXTwvYT4gZG9lcyBub3QgYWxsb3cKKyAgICAgICAgICAgICAgICAgIGVzY2FwaW5nLCB3aGVyZWFzIDxhIGhyZWY9CisgICAgICAgICAgICAgICAgICAiI1JGQy00NTE0Ij5bUkZDLTQ1MTRdPC9hPiByZXF1aXJlcyBzcGFjZQorICAgICAgICAgICAgICAgICAgY2hhcmFjdGVycyB0byBiZSBlc2NhcGVkLjwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5SYXRpb25hbGU8L3RoPgorCisgICAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+Q2hlY2sgZXNjYXBpbmcgb2YKKyAgICAgICAgICAgICAgICAgIG51bGwgY2hhcmFjdGVycyBieSB0b29scyBpbXBsZW1lbnRpbmcgPGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICIjUkZDLTQ1MTQiPltSRkMtNDUxNF08L2E+LjwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPQorICAgICAgICAgICAgICAgICAgIiNSRkMtNDUxNCI+W1JGQy00NTE0XTwvYT4gRE48L3RoPgorCisgICAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+Q049XDAwLEM9VVM8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICIuLi94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTMtU1VOLnhtbCI+U2lnbmF0dXJlPC9hPjwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4KKyAgICAgICAgICAgICAgICAgICAgPHByZT4KKyAgJmx0Oz94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8mZ3Q7XAorKyAmbHQ7U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiZndDtcCisrICZsdDtTaWduZWRJbmZvJmd0O1wKKysgJmx0O0Nhbm9uaWNhbGl6YXRpb25NZXRob2RcCisrICBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvJmd0O1wKKysgJmx0O1NpZ25hdHVyZU1ldGhvZFwKKysgIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIi8mZ3Q7XAorKyAmbHQ7UmVmZXJlbmNlIFVSST0iI29iamVjdCImZ3Q7XAorKyAmbHQ7RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLyZndDtcCisrICZsdDtEaWdlc3RWYWx1ZSZndDtueEdWeFR6WDN1UVZlYVo3dnRXTUxjK1Y2Q0U9Jmx0Oy9EaWdlc3RWYWx1ZSZndDtcCisrICZsdDsvUmVmZXJlbmNlJmd0OyZsdDsvU2lnbmVkSW5mbyZndDtcCisrICZsdDtTaWduYXR1cmVWYWx1ZSZndDtcCisrIE42akhwWW5ZcGdncmZBREprdlpmZ2dDYVVxOWR6VTlNM0VRKzI3d0E4Zjkybld3bXJseVVRUT09Jmx0Oy9TaWduYXR1cmVWYWx1ZSZndDtcCisrICZsdDtLZXlJbmZvJmd0OyZsdDtYNTA5RGF0YSZndDtcCisrICZsdDtYNTA5U3ViamVjdE5hbWUmZ3Q7Q049XDAwLEM9VVMmbHQ7L1g1MDlTdWJqZWN0TmFtZSZndDtcCisrICZsdDsvWDUwOURhdGEmZ3Q7Jmx0Oy9LZXlJbmZvJmd0O1wKKysgJmx0O09iamVjdCBJZD0ib2JqZWN0IiZndDtBcHByb3ZlZCZsdDsvT2JqZWN0Jmd0OyZsdDsvU2lnbmF0dXJlJmd0OworPC9wcmU+CisgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgIDwvdGJvZHk+CisgICAgICAgICAgICA8L3RhYmxlPgorCisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIxIj4KKyAgICAgICAgICAgICAgPHRib2R5PgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIyIiBpZD0KKyAgICAgICAgICAgICAgICAgICJ4bWxkc2lnZG5hbWVkaWZmUkZDcy00Ij5UZXN0IGNhc2UKKyAgICAgICAgICAgICAgICAgIHhtbGRzaWcvZG5hbWUvZGlmZlJGQ3MtNDwvdGg+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5JbnB1dCBkZXRhaWxzPC90aD4KKworICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlRoZSBpbnB1dCBpcyBhbiBYTUwKKyAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZSBjb250YWluaW5nIGFuIFg1MDlTdWJqZWN0TmFtZSBpbiBSRkMKKyAgICAgICAgICAgICAgICAgIDQ1MTQgZm9ybWF0LiBUaGUgRE4gY29udGFpbnMgYXQgbGVhc3QgYSBSZWxhdGl2ZQorICAgICAgICAgICAgICAgICAgRGlzdGluZ3Vpc2hlZCBOYW1lIGNvbnRhaW5pbmcgYSBub24tbGVhZGluZworICAgICAgICAgICAgICAgICAgbnVtYmVyIHNpZ24gY2hhcmFjdGVyIHRoYXQgaXMgbm90IGVzY2FwZWQuCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjUkZDLTIyNTMiPltSRkMtMjI1M108L2E+IHJlcXVpcmVzCisgICAgICAgICAgICAgICAgICBlc2NhcGluZyBvZiBub24tbGVhZGluZyBudW1iZXIgc2lnbiBjaGFyYWN0ZXJzLAorICAgICAgICAgICAgICAgICAgd2hlcmVhcyA8YSBocmVmPSIjUkZDLTQ1MTQiPltSRkMtNDUxNF08L2E+IGRvZXMKKyAgICAgICAgICAgICAgICAgIG5vdC48L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+UmF0aW9uYWxlPC90aD4KKworICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPkNoZWNrIHByb2Nlc3Npbmcgb2YKKyAgICAgICAgICAgICAgICAgIG5vbi1sZWFkaW5nIG51bWJlciBzaWduIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90CisgICAgICAgICAgICAgICAgICBlc2NhcGVkIGJ5IHRvb2xzIGltcGxlbWVudGluZyA8YSBocmVmPQorICAgICAgICAgICAgICAgICAgIiNSRkMtNDUxNCI+W1JGQy00NTE0XTwvYT4uPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgICAiI1JGQy00NTE0Ij5bUkZDLTQ1MTRdPC9hPiBETjwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5DTj1OdW0jYmVyLEM9VVM8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICIuLi94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTQtU1VOLnhtbCI+U2lnbmF0dXJlPC9hPjwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4KKyAgICAgICAgICAgICAgICAgICAgPHByZT4KKyAgJmx0Oz94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8mZ3Q7XAorKyAmbHQ7U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiZndDtcCisrICZsdDtTaWduZWRJbmZvJmd0O1wKKysgJmx0O0Nhbm9uaWNhbGl6YXRpb25NZXRob2RcCisrICBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvJmd0O1wKKysgJmx0O1NpZ25hdHVyZU1ldGhvZFwKKysgIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIi8mZ3Q7XAorKyAmbHQ7UmVmZXJlbmNlIFVSST0iI29iamVjdCImZ3Q7XAorKyAmbHQ7RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLyZndDtcCisrICZsdDtEaWdlc3RWYWx1ZSZndDtueEdWeFR6WDN1UVZlYVo3dnRXTUxjK1Y2Q0U9Jmx0Oy9EaWdlc3RWYWx1ZSZndDtcCisrICZsdDsvUmVmZXJlbmNlJmd0OyZsdDsvU2lnbmVkSW5mbyZndDtcCisrICZsdDtTaWduYXR1cmVWYWx1ZSZndDtcCisrIFFOOGRWVXo0Njc0Q0c3dG5ISitWU0RGS2J0dFozWXdhNXJpem9ZUzJFR1VEOC8zM1JGbFpKQT09Jmx0Oy9TaWduYXR1cmVWYWx1ZSZndDtcCisrICZsdDtLZXlJbmZvJmd0OyZsdDtYNTA5RGF0YSZndDtcCisrICZsdDtYNTA5U3ViamVjdE5hbWUmZ3Q7Q049TnVtI2JlcixDPVVTJmx0Oy9YNTA5U3ViamVjdE5hbWUmZ3Q7XAorKyAmbHQ7L1g1MDlEYXRhJmd0OyZsdDsvS2V5SW5mbyZndDtcCisrICZsdDtPYmplY3QgSWQ9Im9iamVjdCImZ3Q7QXBwcm92ZWQmbHQ7L09iamVjdCZndDsmbHQ7L1NpZ25hdHVyZSZndDsKKzwvcHJlPgorICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICA8L3Rib2R5PgorICAgICAgICAgICAgPC90YWJsZT4KKworICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMSI+CisgICAgICAgICAgICAgIDx0Ym9keT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMiIgaWQ9CisgICAgICAgICAgICAgICAgICAieG1sZHNpZ2RuYW1lZGlmZlJGQ3MtNSI+VGVzdCBjYXNlCisgICAgICAgICAgICAgICAgICB4bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTU8L3RoPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+SW5wdXQgZGV0YWlsczwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5UaGUgaW5wdXQgaXMgYW4gWE1MCisgICAgICAgICAgICAgICAgICBTaWduYXR1cmUgY29udGFpbmluZyBhbiBYNTA5U3ViamVjdE5hbWUgaW4gUkZDCisgICAgICAgICAgICAgICAgICA0NTE0IGZvcm1hdC4gVGhlIEROIGNvbnRhaW5zIGF0IGxlYXN0IGEgUmVsYXRpdmUKKyAgICAgICAgICAgICAgICAgIERpc3Rpbmd1aXNoZWQgTmFtZSBjb250YWluaW5nIGFuIGVxdWFscyBzaWduCisgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgdGhhdCBpcyBub3QgZXNjYXBlZC4gPGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICIjUkZDLTIyNTMiPltSRkMtMjI1M108L2E+IHJlcXVpcmVzIGVzY2FwaW5nIG9mCisgICAgICAgICAgICAgICAgICBlcXVhbHMgc2lnbiBjaGFyYWN0ZXJzLCB3aGVyZWFzIDxhIGhyZWY9CisgICAgICAgICAgICAgICAgICAiI1JGQy00NTE0Ij5bUkZDLTQ1MTRdPC9hPiBkb2VzIG5vdC48L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+UmF0aW9uYWxlPC90aD4KKworICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPkNoZWNrIHByb2Nlc3Npbmcgb2YKKyAgICAgICAgICAgICAgICAgIGVxdWFscyBzaWduIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90IGVzY2FwZWQgYnkKKyAgICAgICAgICAgICAgICAgIHRvb2xzIGltcGxlbWVudGluZyA8YSBocmVmPQorICAgICAgICAgICAgICAgICAgIiNSRkMtNDUxNCI+W1JGQy00NTE0XTwvYT4uPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgICAiI1JGQy00NTE0Ij5bUkZDLTQ1MTRdPC9hPiBETjwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5DTj1FcT11YWxzLEM9VVM8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICIuLi94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTUtU1VOLnhtbCI+U2lnbmF0dXJlPC9hPjwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4KKyAgICAgICAgICAgICAgICAgICAgPHByZT4KKyAgJmx0Oz94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8mZ3Q7XAorKyAmbHQ7U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiZndDtcCisrICZsdDtTaWduZWRJbmZvJmd0O1wKKysgJmx0O0Nhbm9uaWNhbGl6YXRpb25NZXRob2RcCisrICBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvJmd0O1wKKysgJmx0O1NpZ25hdHVyZU1ldGhvZFwKKysgIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIi8mZ3Q7XAorKyAmbHQ7UmVmZXJlbmNlIFVSST0iI29iamVjdCImZ3Q7XAorKyAmbHQ7RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLyZndDtcCisrICZsdDtEaWdlc3RWYWx1ZSZndDtueEdWeFR6WDN1UVZlYVo3dnRXTUxjK1Y2Q0U9Jmx0Oy9EaWdlc3RWYWx1ZSZndDtcCisrICZsdDsvUmVmZXJlbmNlJmd0OyZsdDsvU2lnbmVkSW5mbyZndDtcCisrICZsdDtTaWduYXR1cmVWYWx1ZSZndDtcCisrIFRFRlN1NWhtcjhyNUpVNzhVOU1nUzBtZFpJWk9YVWpPUlRSekRGYUJXaDlEaEZqUGp4eFc0dz09Jmx0Oy9TaWduYXR1cmVWYWx1ZSZndDtcCisrICZsdDtLZXlJbmZvJmd0OyZsdDtYNTA5RGF0YSZndDtcCisrICZsdDtYNTA5U3ViamVjdE5hbWUmZ3Q7Q049RXE9dWFscyxDPVVTJmx0Oy9YNTA5U3ViamVjdE5hbWUmZ3Q7XAorKyAmbHQ7L1g1MDlEYXRhJmd0OyZsdDsvS2V5SW5mbyZndDtcCisrICZsdDtPYmplY3QgSWQ9Im9iamVjdCImZ3Q7QXBwcm92ZWQmbHQ7L09iamVjdCZndDsmbHQ7L1NpZ25hdHVyZSZndDsKKzwvcHJlPgorICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICA8L3Rib2R5PgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICA8L2Rpdj4KKworICAgICAgICAgIDxkaXYgY2xhc3M9ImRpdjQiPgorICAgICAgICAgICAgPGg1PjxhIG5hbWU9IlRlc3RDYXNlcy1EaXN0aW5ndWlzaGVkTmFtZS1SRkM0NTE0IiBpZD0KKyAgICAgICAgICAgICJUZXN0Q2FzZXMtRGlzdGluZ3Vpc2hlZE5hbWUtUkZDNDUxNCI+PC9hPjIuMy40LjIgVGVzdAorICAgICAgICAgICAgQ2FzZXMgZm9yIFJGQyA0NTE0PC9oNT4KKworICAgICAgICAgICAgPHA+VGhlIHNldCBvZiB0ZXN0IGNhc2VzIGluIHRoaXMgc2VjdGlvbiBhcmUgZGVzaWduZWQKKyAgICAgICAgICAgIHRvIHRlc3QgdGhlIHJlcHJlc2VudGF0aW9uIG9mIERpc3Rpbmd1aXNoZWQgTmFtZXMgYXMKKyAgICAgICAgICAgIFN0cmluZ3MgYXMgc3BlY2lmaWVkIGJ5IDxhIGhyZWY9CisgICAgICAgICAgICAiI1JGQy00NTE0Ij5bUkZDLTQ1MTRdPC9hPi48L3A+CisKKyAgICAgICAgICAgIDxwPlRoZSBzYW1lIHJ1bGVzIGRlZmluZWQgaW4gc2VjdGlvbiAzLjMuNC4xIGFwcGx5IHRvCisgICAgICAgICAgICB0aGUgdGVzdCBjYXNlcyBpbiB0aGlzIHNlY3Rpb24uPC9wPgorCisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIxIj4KKyAgICAgICAgICAgICAgPHRib2R5PgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIyIiBpZD0KKyAgICAgICAgICAgICAgICAgICJ4bWxkc2lnZG5hbWVkblN0cmluZy00Ij5UZXN0IGNhc2UKKyAgICAgICAgICAgICAgICAgIHhtbGRzaWcvZG5hbWUvZG5TdHJpbmctNDwvdGg+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5JbnB1dCBkZXRhaWxzPC90aD4KKworICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPgorICAgICAgICAgICAgICAgICAgICBUaGUgRGlzdGluZ3Vpc2hlZE5hbWUgaGFzIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb25zOgorCisgICAgICAgICAgICAgICAgICAgIDx1bD4KKyAgICAgICAgICAgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cD5BbGwgdGhlIFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWVzCisgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgdHlwZXMgaGF2ZSBhIHNob3J0IG5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIChkZXNjcmlwdG9yKSB0YWJ1bGF0ZWQgaW4gPGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICAgICAgICIjUkZDLTQ1MTQiPltSRkMtNDUxNF08L2E+LjwvcD4KKyAgICAgICAgICAgICAgICAgICAgICA8L2xpPgorCisgICAgICAgICAgICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICAgICAgICAgICAgPHA+U29tZSBSZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lcworICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIHZhbHVlIGhhdmUgb25lIG9yIG1vcmUgdHJhaWxpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlIGNoYXJhY3RlcnMgKFUrMDAyMCkuIFRoZSBlc2NhcGluZworICAgICAgICAgICAgICAgICAgICAgICAgbWVjaGFuaXNtIHdpbGwgYmUgJ1wyMCcuPC9wPgorICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CisgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+UmF0aW9uYWxlPC90aD4KKworICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPkNoZWNrIHRoYXQKKyAgICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9ucyBjb3JyZWN0bHkgbWFuYWdlIGVzY2FwaW5nIG9mCisgICAgICAgICAgICAgICAgICB0cmFpbGluZyBzcGFjZSBjaGFyYWN0ZXJzLjwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPQorICAgICAgICAgICAgICAgICAgIiNSRkMtNDUxNCI+W1JGQy00NTE0XTwvYT4gRE48L3RoPgorCisgICAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+CisgICAgICAgICAgICAgICAgICBDTj1UcmFpbGluZ1wyMFwyMCxDPVVTPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgICAiLi4veG1sZHNpZy9kbmFtZS9kblN0cmluZy00LVNVTi54bWwiPlNpZ25hdHVyZTwvYT48L3RoPgorCisgICAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+CisgICZsdDs/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJubyI/Jmd0O1wKKysgJmx0O1NpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyImZ3Q7XAorKyAmbHQ7U2lnbmVkSW5mbyZndDtcCisrICZsdDtDYW5vbmljYWxpemF0aW9uTWV0aG9kXAorKyAgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLyZndDtcCisrICZsdDtTaWduYXR1cmVNZXRob2RcCisrICBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIvJmd0O1wKKysgJmx0O1JlZmVyZW5jZSBVUkk9IiNvYmplY3QiJmd0O1wKKysgJmx0O0RpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8mZ3Q7XAorKyAmbHQ7RGlnZXN0VmFsdWUmZ3Q7bnhHVnhUelgzdVFWZWFaN3Z0V01MYytWNkNFPSZsdDsvRGlnZXN0VmFsdWUmZ3Q7XAorKyAmbHQ7L1JlZmVyZW5jZSZndDsmbHQ7L1NpZ25lZEluZm8mZ3Q7XAorKyAmbHQ7U2lnbmF0dXJlVmFsdWUmZ3Q7XAorKyBPTmQ4T29PbnY5T1RoeWlUUGtuZUVjc2RnVnQ2NXc2QWdVQXhpZGVrSGVLbWp5UXhuWUVkV0E9PSZsdDsvU2lnbmF0dXJlVmFsdWUmZ3Q7XAorKyAmbHQ7S2V5SW5mbyZndDsmbHQ7WDUwOURhdGEmZ3Q7XAorKyAmbHQ7WDUwOVN1YmplY3ROYW1lJmd0O0NOPVRyYWlsaW5nXDIwXDIwLEM9VVMmbHQ7L1g1MDlTdWJqZWN0TmFtZSZndDtcCisrICZsdDsvWDUwOURhdGEmZ3Q7Jmx0Oy9LZXlJbmZvJmd0O1wKKysgJmx0O09iamVjdCBJZD0ib2JqZWN0IiZndDtBcHByb3ZlZCZsdDsvT2JqZWN0Jmd0OyZsdDsvU2lnbmF0dXJlJmd0OworPC9wcmU+CisgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgIDwvdGJvZHk+CisgICAgICAgICAgICA8L3RhYmxlPgorCisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIxIj4KKyAgICAgICAgICAgICAgPHRib2R5PgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIyIiBpZD0KKyAgICAgICAgICAgICAgICAgICJ4bWxkc2lnZG5hbWVkblN0cmluZy02Ij5UZXN0IGNhc2UKKyAgICAgICAgICAgICAgICAgIHhtbGRzaWcvZG5hbWUvZG5TdHJpbmctNjwvdGg+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5JbnB1dCBkZXRhaWxzPC90aD4KKworICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPgorICAgICAgICAgICAgICAgICAgICBUaGUgRGlzdGluZ3Vpc2hlZE5hbWUgaGFzIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb25zOgorCisgICAgICAgICAgICAgICAgICAgIDx1bD4KKyAgICAgICAgICAgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cD5BbGwgdGhlIFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWVzCisgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgdHlwZXMgaGF2ZSBhIHNob3J0IG5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIChkZXNjcmlwdG9yKSB0YWJ1bGF0ZWQgaW4gPGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICAgICAgICIjUkZDLTQ1MTQiPltSRkMtNDUxNF08L2E+LjwvcD4KKyAgICAgICAgICAgICAgICAgICAgICA8L2xpPgorCisgICAgICAgICAgICAgICAgICAgICAgPGxpPgorICAgICAgICAgICAgICAgICAgICAgICAgPHA+U29tZSBSZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lcworICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIHZhbHVlIGhhdmUgb25lIG9yIG1vcmUgZXNjYXBlZAorICAgICAgICAgICAgICAgICAgICAgICAgQVNDSUkgY29udHJvbCBjaGFyYWN0ZXJzIChVKzFkKS4gVGhlCisgICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGluZyBtZWNoYW5pc20gd2lsbCBiZSBhIGJhY2tzbGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93ZWQgb2YgYSBieSBhIHR3byBkaWdpdCBoZXggbnVtYmVyCisgICAgICAgICAgICAgICAgICAgICAgICBzaG93aW5nIGl0cyBVbmljb2RlIHBvaW50IG51bWJlci48L3A+CisgICAgICAgICAgICAgICAgICAgICAgPC9saT4KKyAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5SYXRpb25hbGU8L3RoPgorCisgICAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+Q2hlY2sgdGhhdAorICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zIGNvcnJlY3RseSBtYW5hZ2UgZXNjYXBpbmcgb2YgYW4KKyAgICAgICAgICAgICAgICAgIEFTQ0lJIGNvbnRyb2wgY2hhcmFjdGVyIHRoYXQgaXMgbmVpdGhlciB0aGUgZmlyc3QKKyAgICAgICAgICAgICAgICAgIG5vciB0aGUgZmluYWwgY2hhcmFjdGVyIG9mIHRoZSBncm91cC48L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+PGEgaHJlZj0KKyAgICAgICAgICAgICAgICAgICIjUkZDLTQ1MTQiPltSRkMtNDUxNF08L2E+IEROPC90aD4KKworICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPgorICAgICAgICAgICAgICAgICAgQ049Q29uXDA5dHJvbCxDPVVTPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgICAiLi4veG1sZHNpZy9kbmFtZS9kblN0cmluZy02LVNVTi54bWwiPlNpZ25hdHVyZTwvYT48L3RoPgorCisgICAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+CisgICAgICAgICAgICAgICAgICAgIDxwcmU+CisgICZsdDs/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJubyI/Jmd0O1wKKysgJmx0O1NpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyImZ3Q7XAorKyAmbHQ7U2lnbmVkSW5mbyZndDtcCisrICZsdDtDYW5vbmljYWxpemF0aW9uTWV0aG9kXAorKyAgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLyZndDtcCisrICZsdDtTaWduYXR1cmVNZXRob2RcCisrICBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIvJmd0O1wKKysgJmx0O1JlZmVyZW5jZSBVUkk9IiNvYmplY3QiJmd0O1wKKysgJmx0O0RpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8mZ3Q7XAorKyAmbHQ7RGlnZXN0VmFsdWUmZ3Q7bnhHVnhUelgzdVFWZWFaN3Z0V01MYytWNkNFPSZsdDsvRGlnZXN0VmFsdWUmZ3Q7XAorKyAmbHQ7L1JlZmVyZW5jZSZndDsmbHQ7L1NpZ25lZEluZm8mZ3Q7XAorKyAmbHQ7U2lnbmF0dXJlVmFsdWUmZ3Q7XAorKyBWMzRwS0dJZkthY3dKdFRFU2hmU1h4NE0yZGhTT1RxWlZDSUw2bk82NmxtK0pUUS8vd0NLYUE9PSZsdDsvU2lnbmF0dXJlVmFsdWUmZ3Q7XAorKyAmbHQ7S2V5SW5mbyZndDsmbHQ7WDUwOURhdGEmZ3Q7XAorKyAmbHQ7WDUwOVN1YmplY3ROYW1lJmd0O0NOPUNvblwwOXRyb2wsQz1VUyZsdDsvWDUwOVN1YmplY3ROYW1lJmd0O1wKKysgJmx0Oy9YNTA5RGF0YSZndDsmbHQ7L0tleUluZm8mZ3Q7XAorKyAmbHQ7T2JqZWN0IElkPSJvYmplY3QiJmd0O0FwcHJvdmVkJmx0Oy9PYmplY3QmZ3Q7Jmx0Oy9TaWduYXR1cmUmZ3Q7Cis8L3ByZT4KKyAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgPC90Ym9keT4KKyAgICAgICAgICAgIDwvdGFibGU+CisKKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjEiPgorICAgICAgICAgICAgICA8dGJvZHk+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjIiIGlkPQorICAgICAgICAgICAgICAgICAgInhtbGRzaWdkbmFtZWRuU3RyaW5nLTgiPlRlc3QgY2FzZQorICAgICAgICAgICAgICAgICAgeG1sZHNpZy9kbmFtZS9kblN0cmluZy04PC90aD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPklucHV0IGRldGFpbHM8L3RoPgorCisgICAgICAgICAgICAgICAgICA8dGQgcm93c3Bhbj0iMSIgY29sc3Bhbj0iMSI+CisgICAgICAgICAgICAgICAgICAgIFRoZSBEaXN0aW5ndWlzaGVkTmFtZSBoYXMgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbnM6CisKKyAgICAgICAgICAgICAgICAgICAgPHVsPgorICAgICAgICAgICAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwPkFsbCB0aGUgUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSB0eXBlcyBoYXZlIGEgc2hvcnQgbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgKGRlc2NyaXB0b3IpIHRhYnVsYXRlZCBpbiA8YSBocmVmPQorICAgICAgICAgICAgICAgICAgICAgICAgIiNSRkMtNDUxNCI+W1JGQy00NTE0XTwvYT4uPC9wPgorICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CisKKyAgICAgICAgICAgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cD5Tb21lIFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWVzCisgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgdmFsdWUgY29udGFpbiBvbmUgb3IgbW9yZSBzcGVjaWFsCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzIGluIHRoZSBmb2xsb3dpbmcgZ3JvdXA6ICcrJywKKyAgICAgICAgICAgICAgICAgICAgICAgICcsJywgJzsnLCBhbmQgJ1wuJzwvcD4KKyAgICAgICAgICAgICAgICAgICAgICA8L2xpPgorICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPlJhdGlvbmFsZTwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj5DaGVjayB0aGF0CisgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbnMgY29ycmVjdGx5IG1hbmFnZSBlc2NhcGluZyBvZiBhbGwKKyAgICAgICAgICAgICAgICAgIHRoZSBzcGVjaWFsIGNoYXJhY3RlcnMgKGV4Y2VwdCAnIicsICdsdDsnIGFuZAorICAgICAgICAgICAgICAgICAgJyZndDsnKS4uPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPjxhIGhyZWY9CisgICAgICAgICAgICAgICAgICAiI1JGQy00NTE0Ij5bUkZDLTQ1MTRdPC9hPiBETjwvdGg+CisKKyAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj4KKyAgICAgICAgICAgICAgICAgIENOPUVcK3NcLGNcO2FwZWQsQz1VUzwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIiBjb2xzcGFuPSIxIj48YSBocmVmPQorICAgICAgICAgICAgICAgICAgIi4uL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctOC1TVU4ueG1sIj5TaWduYXR1cmU8L2E+PC90aD4KKworICAgICAgICAgICAgICAgICAgPHRkIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPgorICAgICAgICAgICAgICAgICAgICA8cHJlPgorICAmbHQ7P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPyZndDtcCisrICZsdDtTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiJmd0O1wKKysgJmx0O1NpZ25lZEluZm8mZ3Q7XAorKyAmbHQ7Q2Fub25pY2FsaXphdGlvbk1ldGhvZFwKKysgIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8mZ3Q7XAorKyAmbHQ7U2lnbmF0dXJlTWV0aG9kXAorKyAgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiLyZndDtcCisrICZsdDtSZWZlcmVuY2UgVVJJPSIjb2JqZWN0IiZndDtcCisrICZsdDtEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvJmd0O1wKKysgJmx0O0RpZ2VzdFZhbHVlJmd0O254R1Z4VHpYM3VRVmVhWjd2dFdNTGMrVjZDRT0mbHQ7L0RpZ2VzdFZhbHVlJmd0O1wKKysgJmx0Oy9SZWZlcmVuY2UmZ3Q7Jmx0Oy9TaWduZWRJbmZvJmd0O1wKKysgJmx0O1NpZ25hdHVyZVZhbHVlJmd0O1wKKysgTDJyK1FDaU8wcU9QZ0RZeWJUaFFFYlA3QThJcThBb21ER0JYZ1FxZTRta3VMTW5yb1R4bkdBPT0mbHQ7L1NpZ25hdHVyZVZhbHVlJmd0O1wKKysgJmx0O0tleUluZm8mZ3Q7Jmx0O1g1MDlEYXRhJmd0O1wKKysgJmx0O1g1MDlTdWJqZWN0TmFtZSZndDtDTj1FXCtzXCxjXDthcGVkLEM9VVMmbHQ7L1g1MDlTdWJqZWN0TmFtZSZndDtcCisrICZsdDsvWDUwOURhdGEmZ3Q7Jmx0Oy9LZXlJbmZvJmd0O1wKKysgJmx0O09iamVjdCBJZD0ib2JqZWN0IiZndDtBcHByb3ZlZCZsdDsvT2JqZWN0Jmd0OyZsdDsvU2lnbmF0dXJlJmd0OworPC9wcmU+CisgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgIDwvdGJvZHk+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPGRpdiBjbGFzcz0iZGl2MSI+CisgICAgICA8aDI+PGEgbmFtZT0iUmVmZXJlbmNlcyIgaWQ9IlJlZmVyZW5jZXMiPjwvYT4zCisgICAgICBSZWZlcmVuY2VzPC9oMj4KKworICAgICAgPGRsPgorICAgICAgICA8ZHQgY2xhc3M9ImxhYmVsIj48YSBuYW1lPSJSRkMtMjI1MyIgaWQ9IlJGQy0yMjUzIj48L2E+UkZDCisgICAgICAgIDIyNTM8L2R0PgorCisgICAgICAgIDxkZD5SRkMgMjI1MzogTGlnaHR3ZWlnaHQgRGlyZWN0b3J5IEFjY2VzcyBQcm90b2NvbCAodjMpOgorICAgICAgICBVVEYtOCBTdHJpbmcgUmVwcmVzZW50YXRpb24gb2YgRGlzdGluZ3Vpc2hlZCBOYW1lcy4gTS4KKyAgICAgICAgV2FobCwgUy4gS2lsbGUsIFQuIEhvd2VzLiBFZC4gRGVjZW1iZXIgMTk5Ny4gPGEgaHJlZj0KKyAgICAgICAgImh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzIyNTN0eHQiPmh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzIyNTN0eHQ8L2E+PC9kZD4KKworICAgICAgICA8ZHQgY2xhc3M9ImxhYmVsIj48YSBuYW1lPSJSRkMtNDUxNCIgaWQ9IlJGQy00NTE0Ij48L2E+UkZDCisgICAgICAgIDQ1MTQ8L2R0PgorCisgICAgICAgIDxkZD5SRkMgNDUxNDogTGlnaHR3ZWlnaHQgRGlyZWN0b3J5IEFjY2VzcyBQcm90b2NvbCAoTERBUCk6CisgICAgICAgIFN0cmluZyBSZXByZXNlbnRhdGlvbiBvZiBEaXN0aW5ndWlzaGVkIE5hbWVzLiBLLiBaZWlsZW5nYSwKKyAgICAgICAgRWQuIEp1bmUgMjAwNi4gPGEgaHJlZj0KKyAgICAgICAgImh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzQ1MTQudHh0Ij5odHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmM0NTE0LnR4dDwvYT48L2RkPgorCisgICAgICAgIDxkdCBjbGFzcz0ibGFiZWwiPjxhIG5hbWU9IlhNTC1DMTROMS4xIiBpZD0KKyAgICAgICAgIlhNTC1DMTROMS4xIj48L2E+WE1MLUMxNE4xLjE8L2R0PgorCisgICAgICAgIDxkZD5DYW5vbmljYWwgWE1MLiBWZXJzaW9uIDEuMS4gVzNDIFByb3Bvc2VkCisgICAgICAgIFJlY29tbWVuZGF0aW9uLiBKb2huIEJveWVyLCBHbGVubiBNYXJjeS4gSmFudWFyeSAyMDA4LgorICAgICAgICA8YSBocmVmPQorICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvMjAwOC9QUi14bWwtYzE0bjExLTIwMDgwMTI5LyI+aHR0cDovL3d3dy53My5vcmcvVFIvMjAwOC9QUi14bWwtYzE0bjExLTIwMDgwMTI5LzwvYT48L2RkPgorCisgICAgICAgIDxkdCBjbGFzcz0ibGFiZWwiPjxhIG5hbWU9IlhNTERTSUciIGlkPQorICAgICAgICAiWE1MRFNJRyI+PC9hPlhNTERTSUc8L2R0PgorCisgICAgICAgIDxkZD5YTUwtU2lnbmF0dXJlIFN5bnRheCBhbmQgUHJvY2Vzc2luZy4gVzNDCisgICAgICAgIFJlY29tbWVuZGF0aW9uLiBEb25hbGQgRWFzdGxha2UsIEpvc2VwaCBSZWFnbGUsIERhdmlkIFNvbG8uCisgICAgICAgIEZlYnJ1YXJ5IDIwMDIuIDxhIGhyZWY9CisgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94bWxkc2lnLWNvcmUvIj5odHRwOi8vd3d3LnczLm9yZy9UUi94bWxkc2lnLWNvcmUvPC9hPjwvZGQ+CisKKyAgICAgICAgPGR0IGNsYXNzPSJsYWJlbCI+PGEgbmFtZT0iWE1MRFNJRy1pbnRlcm9wIiBpZD0KKyAgICAgICAgIlhNTERTSUctaW50ZXJvcCI+PC9hPlhNTERTSUctaW50ZXJvcDwvZHQ+CisKKyAgICAgICAgPGRkPlhNTC1TaWduYXR1cmUgSW50ZXJvcGVyYWJpbGl0eS4gSm9zZXBoIFJlYWdsZS4gQXByaWwKKyAgICAgICAgMjAwMS4gPGEgaHJlZj0KKyAgICAgICAgImh0dHA6Ly93d3cudzMub3JnL1NpZ25hdHVyZS8yMDAxLzA0LzA1LXhtbGRzaWctaW50ZXJvcC5odG1sIj4KKyAgICAgICAgaHR0cDovL3d3dy53My5vcmcvU2lnbmF0dXJlLzIwMDEvMDQvMDUteG1sZHNpZy1pbnRlcm9wLmh0bWw8L2E+PC9kZD4KKworICAgICAgICA8ZHQgY2xhc3M9ImxhYmVsIj48YSBuYW1lPSJYTUxEU0lHMiIgaWQ9CisgICAgICAgICJYTUxEU0lHMiI+PC9hPlhNTERTSUcyPC9kdD4KKworICAgICAgICA8ZGQ+WE1MLVNpZ25hdHVyZSBTeW50YXggYW5kIFByb2Nlc3NpbmcgKFNlY29uZCBFZGl0aW9uKS4KKyAgICAgICAgRWRpdG9yJ3MgRHJhZnQuIERvbmFsZCBFYXN0bGFrZSwgSm9zZXBoIFJlYWdsZSwgRGF2aWQgU29sbywKKyAgICAgICAgRnJlZGVyaWNrIEhpcnNjaCwgVGhvbWFzIFJvZXNzbGVyLiBKYW51YXJ5IDIwMDguIDxhIGhyZWY9CisgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy8yMDA3L3htbHNlYy9EcmFmdHMveG1sZHNpZy1jb3JlLyI+aHR0cDovL3d3dy53My5vcmcvMjAwNy94bWxzZWMvRHJhZnRzL3htbGRzaWctY29yZS88L2E+PC9kZD4KKworICAgICAgICA8ZHQgY2xhc3M9ImxhYmVsIj48YSBuYW1lPSJYUG9pbnRlci1FbGVtZW50IiBpZD0KKyAgICAgICAgIlhQb2ludGVyLUVsZW1lbnQiPjwvYT5YUG9pbnRlci1FbGVtZW50PC9kdD4KKworICAgICAgICA8ZGQ+WFBvaW50ZXIgZWxlbWVudCgpIFNjaGVtZS4gVzNDIFJlY29tbWVuZGF0aW9uLiBQLgorICAgICAgICBHcm9zc28sIEUuIE1hbGVyLCBKLiBNYXJzaCwgTi4gV2Fsc2guIE1hcmNoIDIwMDMuIDxhIGhyZWY9CisgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAzL1JFQy14cHRyLWVsZW1lbnQtMjAwMzAzMjUiPmh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDMvUkVDLXhwdHItZWxlbWVudC0yMDAzMDMyNTwvYT48L2RkPgorCisgICAgICAgIDxkdCBjbGFzcz0ibGFiZWwiPjxhIG5hbWU9IlhQb2ludGVyLUZyYW1ld29yayIgaWQ9CisgICAgICAgICJYUG9pbnRlci1GcmFtZXdvcmsiPjwvYT5YUG9pbnRlci1GcmFtZXdvcms8L2R0PgorCisgICAgICAgIDxkZD5YUG9pbnRlciBGcmFtZXdvcmsuIFczQyBSZWNvbW1lbmRhdGlvbi4gUC4gR3Jvc3NvLCBFLgorICAgICAgICBNYWxlciwgSi4gTWFyc2gsIE4uIFdhbHNoLiBNYXJjaCAyMDAzLiA8YSBocmVmPQorICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMy9SRUMteHB0ci1mcmFtZXdvcmstMjAwMzAzMjUvIj5odHRwOi8vd3d3LnczLm9yZy9UUi8yMDAzL1JFQy14cHRyLWZyYW1ld29yay0yMDAzMDMyNS88L2E+PC9kZD4KKworICAgICAgICA8ZHQgY2xhc3M9ImxhYmVsIj48YSBuYW1lPSJYUG9pbnRlci14cG9pbnRlciIgaWQ9CisgICAgICAgICJYUG9pbnRlci14cG9pbnRlciI+PC9hPlhQb2ludGVyLXhwb2ludGVyPC9kdD4KKworICAgICAgICA8ZGQ+WFBvaW50ZXIgeHBvaW50ZXIoKSBTY2hlbWUuIFczQyBXb3JraW5nIERyYWZ0LiBTLgorICAgICAgICBEZVJvc2UsIEUuIE1hbGVyLCBSLiBEYW5pZWwuIERlY2VtYmVyIDIwMDIuIDxhIGhyZWY9CisgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAyL1dELXhwdHIteHBvaW50ZXItMjAwMjEyMTkvIj5odHRwOi8vd3d3LnczLm9yZy9UUi8yMDAyL1dELXhwdHIteHBvaW50ZXItMjAwMjEyMTkvPC9hPjwvZGQ+CisgICAgICA8L2RsPgorICAgIDwvZGl2PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS9NYWtlZmlsZSBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzA5NmFhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL01ha2VmaWxlCkBAIC0wLDAgKzEsOCBAQAorcmVwb3J0Lmh0bWw6ICxyZXBvcnQuaHRtbAorCW12ICxyZXBvcnQuaHRtbCByZXBvcnQuaHRtbAorCXRpZHkgLW0gLWFzeGh0bWwgLWkgcmVwb3J0Lmh0bWwKKworLHJlcG9ydC5odG1sOgorCXNoIHJlcG9ydC5zaCA+ICxyZXBvcnQuaHRtbAorCisuUEhPTlk6ICxyZXBvcnQuaHRtbApkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL2RpZ2VzdC54c2wgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEvZGlnZXN0LnhzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTY2MmFkCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL2RpZ2VzdC54c2wKQEAgLTAsMCArMSwxNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzx4c2w6dHJhbnNmb3JtIHZlcnNpb249IjEuMCIKKwkgICAgICAgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iCisJICAgICAgIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAgPHhzbDpvdXRwdXQgbWV0aG9kPSJ0ZXh0Ii8+CisgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Ii8vZHM6RGlnZXN0VmFsdWUiPgorICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJ0ZXh0KCkiLz48eHNsOnRleHQ+Cis8L3hzbDp0ZXh0PiAgICAKKyAgPC94c2w6dGVtcGxhdGU+CisgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Ii8iPgorICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iLy9kczpEaWdlc3RWYWx1ZSIvPgorICA8L3hzbDp0ZW1wbGF0ZT4KKzwveHNsOnRyYW5zZm9ybT4KKwkJCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEvcmVwb3J0Lmh0bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEvcmVwb3J0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk3MmRjZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS9yZXBvcnQuaHRtbApAQCAtMCwwICsxLDM0NCBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIKKyAgICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorICA8dGl0bGU+SW50ZXJvcCByZXBvcnQgQzE0TiAxLjE8L3RpdGxlPgorICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1N0eWxlU2hlZXRzL2Jhc2UuY3NzIgorICB0eXBlPSJ0ZXh0L2NzcyIgLz4KKyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9TdHlsZVNoZWV0cy9wdWJsaWMuY3NzIgorICB0eXBlPSJ0ZXh0L2NzcyIgLz4KKyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9yZXBvcnQuY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKzwvaGVhZD4KKworPGJvZHk+Cis8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8iPjxpbWcgYWx0PSJXM0MgTG9nbyIKK3NyYz0iaHR0cDovL3d3dy53My5vcmcvSWNvbnMvdzNjX2hvbWUiIC8+PC9hPiAKKworPGgxPkltcGxlbWVudGF0aW9uIHJlcG9ydCBDMTROIDEuMTwvaDE+Cis8ZGw+CisgIDxkdD5BdXRob3I8L2R0PgorICAgIDxkZD5UaG9tYXMgUm9lc3NsZXIgJmx0O3RsckB3My5vcmcmZ3Q7PC9kZD4KKyAgPGR0Pkxhc3QgTW9kaWZpZWQ8L2R0PgorICAgIDxkZD4kRGF0ZTogMjAwOC8wMS8yMiAxNjozMzo0NSAkIGJ5ICRBdXRob3I6IHJvZXNzbGVyICQ8L2RkPgorPC9kbD4KKworPGgyPk92ZXJ2aWV3PC9oMj4KKworPGRpdj4KKzxwPlRoaXMgaW1wbGVtZW50YXRpb24gcmVwb3J0IGlzIGludGVuZGVkIHRvIGRlbW9uc3RyYXRlIGZ1bGZpbGxtZW50IG9mIHRoZQorQ2FuZGlkYXRlIFJlY29tbWVuZGF0aW9uIEV4aXQgQ3JpdGVyaWEgZm9yIENhbm9uaWNhbCBYTUwgMS4xOjwvcD4KKworPGJsb2NrcXVvdGU+CisgIDx1bD4KKyAgICA8bGk+VGVzdCBkb2N1bWVudHMgbXVzdCBoYXZlIGJlZW4gZGV2ZWxvcGVkIHdpdGggYSByYW5nZSBvZiB1c2FnZXMgb2YKKyAgICAgIGF0dHJpYnV0ZXMgaW4gdGhlIFhNTCBuYW1lc3BhY2UsIGFuZCBjb3JyZWN0IGFuZCBjb21wYXRpYmxlIHJlc3VsdHMKKyAgICAgIHNob3duIGZvciB0aGVzZSB0ZXN0cyBieSBhdCBsZWFzdCB0d28gaW1wbGVtZW50YXRpb25zLjwvbGk+CisgICAgPGxpPkEgbWluaW11bSBvZiB0aHJlZSBtb250aHMgb2YgdGhlIENSIHBlcmlvZCBtdXN0IGhhdmUgZWxhcHNlZC48L2xpPgorICA8L3VsPgorCisgIDxwPi0tIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1jMTRuMTEvIj5DYW5vbmljYWwgWE1MIDEuMSwgVzNDCisgIENhbmRpZGF0ZSBSZWNvbW1lbmRhdGlvbiAyMSBKdW5lIDIwMDc8L2E+PC9wPgorPC9ibG9ja3F1b3RlPgorCis8cD5DYW5vbmljYWwgWE1MIDEuMSBkaWZmZXJzIGZyb20gQ2Fub25pY2FsIFhNTCAxLjAgaW4gdGhlIGhhbmRsaW5nIG9mCithdHRyaWJ1dGVzIGluIHRoZSA8Y29kZT54bWw8L2NvZGU+IG5hbWVzcGFjZSB3aGVuIGRvY3VtZW50IHN1YnNldHMgYXJlCitjYW5vbmljYWxpemVkLiBBbGwgdGVzdHMgd2VyZSBwZXJmb3JtZWQgd2l0aGluIHRoZSBjb250ZXh0IG9mIGltcGxlbWVudGF0aW9ucworb2YgdGhlIFhNTCBTaWduYXR1cmUgc3BlY2lmaWNhdGlvbiAoc2VlIDxhCitocmVmPSJodHRwOi8vd3d3LnczLm9yZy8yMDA3L3htbHNlYy9pbnRlcm9wL3htbHNpZy1pbnRlcm9wLWRvYy90ZXN0Y2FzZXMuaHRtbCNUZXN0Q2FzZXMtWE1MRFNpZy1DMTRuMTEiPmRldGFpbGVkCitkZXNjcmlwdGlvbiBvZiB0ZXN0IGNhc2Ugc2V0dXA8L2E+KSwgdXNpbmcgYW4gWFBhdGggdHJhbnNmb3JtIHRvIGlkZW50aWZ5IHRoZQorc2lnbmVkIGRvY3VtZW50IHN1YnNldCwgYW5kIENhbm9uaWNhbCBYTUwgMS4xIHRvIGNhbm9uaWNhbGl6ZSBpdC48L3A+CisKKzxwPlRlc3Rpbmcgd2FzIG9yZ2FuaXplZCBhbmQgcGVyZm9ybWVkIGJ5IHRoZSBtZW1iZXJzIG9mIHRoZSBYTUwgU2VjdXJpdHkKK1NwZWNpZmljYXRpb25zIE1haW50ZW5hbmNlIFdvcmtpbmcgR3JvdXAuIEZpdmUgaW1wbGVtZW50YXRpb25zIHBhcnRpY2lwYXRlZAoraW4gdGhlIHRlc3RpbmcuIEFsbCBmaXZlIGltcGxlbWVudGF0aW9ucyBzdWJtaXR0ZWQgaWRlbnRpY2FsIGNhbm9uaWNhbGl6YXRpb24KK3Jlc3VsdHMgZm9yIGFsbCB0ZXN0IGNhc2VzLjwvcD4KKworPGgyPlRlc3QgQ2FzZXM8L2gyPgorCis8cD5UaGUgdGVzdCBjYXNlcyBjb3ZlcmVkIHRoZSBmb2xsb3dpbmcgPGNvZGU+eG1sPC9jb2RlPiBuYW1lc3BhY2UKK2F0dHJpYnV0ZXM6PC9wPgorPHVsPgorICA8bGk+PHA+PGNvZGU+eG1sOmxhbmc8L2NvZGU+IGFuZCA8dHQ+eG1sOnNwYWNlPC90dD4gYXJlICJzaW1wbGUgaW5oZXJpdGFibGUKKyAgICBhdHRyaWJ1dGVzIiBpbiB0aGUgc2Vuc2Ugb2YgPGEKKyAgICBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvR3JvdXAvMjAwNy8xMi9QUi14bWwtYzE0bjExLTIwMDcxMjExL092ZXJ2aWV3Lmh0bWwjRG9jU3Vic2V0cyI+c2VjdGlvbgorICAgIDIuNCwgQ2Fub25pY2FsIFhNTCAxLjE8L2E+LiBUaGV5IGFyZSBjb3ZlcmVkIGJ5IHRoZSB0ZXN0IGNhc2VzIHhtbGxhbmctMQorICAgIHRvIHhtbGxhbmctNCBhbmQgeG1sc3BhY2UtMSB0byB4bWxzcGFjZS00LiBTZWUgPGEKKyAgICBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8yMDA3L3htbHNlYy9pbnRlcm9wL3htbHNpZy1pbnRlcm9wLWRvYy90ZXN0Y2FzZXMuaHRtbCNYTUxMQU5HIj5kZXRhaWxlZAorICAgIGRlc2NyaXB0aW9uIG9mIHhtbDpsYW5nIHRlc3QgY2FzZXM8L2E+OyA8YQorICAgIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDcveG1sc2VjL2ludGVyb3AveG1sc2lnLWludGVyb3AtZG9jL3Rlc3RjYXNlcy5odG1sI1hNTFNQQUNFIj5kZXRhaWxlZAorICAgIGRlc2NyaXB0aW9uIG9mIHhtbDpzcGFjZSB0ZXN0IGNhc2VzPC9hPi48L3A+CisgIDwvbGk+CisgIDxsaT48cD48Y29kZT54bWw6aWQ8L2NvZGU+IGlzIG5ldmVyIGNvcGllZCB0byBhIGRpZmZlcmVudCBlbGVtZW50LiBUaGlzCisgICAgYXR0cmlidXRlIGlzIGNvdmVyZWQgYnkgdGhlIHRlc3QgY2FzZXMgeG1saWQtMSBhbmQgeG1saWQtMi4gU2VlIDxhCisgICAgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwNy94bWxzZWMvaW50ZXJvcC94bWxzaWctaW50ZXJvcC1kb2MvdGVzdGNhc2VzLmh0bWwjWE1MSUQiPmRldGFpbGVkCisgICAgZGVzY3JpcHRpb24gb2YgeG1sOmlkIHRlc3QgY2FzZXM8L2E+LjwvcD4KKyAgPC9saT4KKyAgPGxpPjxwPjxjb2RlPnhtbDpiYXNlPC9jb2RlPiByZXF1aXJlcyBhIHJlbGF0aXZlbHkgY29tcGxpY2F0ZWQgZml4LXVwCisgICAgYWxnb3JpdGhtLiBXaGlsZSB0aGVyZSB3YXMgZ2VuZXJhbCBhZ3JlZW1lbnQgb24gdGhlIGRlc2lyZWQgcmVzdWx0cyBvZgorICAgIHRoYXQgYWxnb3JpdGhtLCBpdHMgc3BlY2lmaWNhdGlvbiB3YXMgcmVmaW5lZCBkdXJpbmcgdGhlIENhbmRpZGF0ZQorICAgIFJlY29tbWVuZGF0aW9uIHBoYXNlIHRvIGltcHJvdmUgc3BlY2lmaWNhdGlvbiBjbGFyaXR5IGFuZCBhZGRyZXNzIGVkZ2UKKyAgICBjYXNlcy4gVGhpcyByZWZpbmVtZW50IHByb2Nlc3MgaGFwcGVuZWQgaW4gY2xvc2UgY29vcmRpbmF0aW9uIHdpdGggdGhlCisgICAgcGFydGljaXBhbnRzIGluIHRoZSBpbnRlcm9wZXJhYmlsaXR5IHRlc3RpbmcuPC9wPgorICAgIDxwPlRoZSByZWxldmFudCB0ZXN0IGNhc2VzIGFyZTogeG1sYmFzZS1jYzE0bjExc3BlYy0xMDIsCisgICAgeG1sYmFzZS1jMTRuMTFzcGVjMi0xMDIsIHhtbGJhc2UtYzE0bjExc3BlYzMtMTAzLCB4bWxiYXNlLXByb3AtMSB0bworICAgIHhtbGJhc2UtcHJvcC03LiBUaGVzZSB0ZXN0IGNhc2VzIGFyZSBzcGVjaWZpY2FsbHkgaW50ZW5kZWQgdG8gZXhlcmNpc2UKKyAgICB0aG9zZSBlZGdlIGNhc2VzIHRoYXQgd2VyZSBkaXNjb3ZlcmVkIGR1cmluZyB0aGUgQ2FuZGlkYXRlIFJlY29tbWVuZGF0aW9uCisgICAgcGhhc2UuPC9wPgorICAgIDxwPlNlZSA8YQorICAgIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDcveG1sc2VjL2ludGVyb3AveG1sc2lnLWludGVyb3AtZG9jL3Rlc3RjYXNlcy5odG1sI1hNTElEIj5kZXRhaWxlZAorICAgIGRlc2NyaXB0aW9uIG9mIHhtbDpiYXNlIHRlc3QgY2FzZXM8L2E+LjwvcD4KKyAgPC9saT4KKzwvdWw+CisKKzxoMj5QYXJ0aWNpcGF0aW5nIEltcGxlbWVudGF0aW9uczwvaDI+Cis8ZGw+CisgIDxkdD48c3Ryb25nPklCTSBYTUwgRGlnaXRhbCBTaWduYXR1cmUgUGFja2FnZTwvc3Ryb25nPiAoSUJNKTwvZHQ+CisgICAgPGRkPjxwPlRoZSBYTUwgRGlnaXRhbCBTaWduYXR1cmUgcGFja2FnZSBpcyBidW5kbGVkIGludG8gSUJNIEpSRXMgdGhhdAorICAgICAgc2hpcCB3aXRoIElCTSBwcm9kdWN0cyBvciBhcmUgZG93bmxvYWRlZCBmb3IgSUJNIHN5c3RlbXMuIFRoZSBYTUwKKyAgICAgIERpZ2l0YWwgU2lnbmF0dXJlIHBhY2thZ2UgYnVuZGxlZCBpbnRvIGFsbCBJQk0gSlJFcyBhdCB0aGUgSmF2YSA2LjAKKyAgICAgIGxldmVsIG9yIGhpZ2hlciwgYW5kIGJ5IHNwZWNpYWwgYXJyYW5nZW1lbnQgYXQgZWFybGllciBsZXZlbHMuIEl0IGlzIGEKKyAgICAgIHNlcGFyYXRlIHNlY3VyaXR5IHByb3ZpZGVyLCBzbyB3b3VsZCBlaXRoZXIgbmVlZCB0byBiZSBpbiB0aGUgcHJvdmlkZXIKKyAgICAgIGxpc3QgaW4ganJlL2xpYi9zZWN1cml0eS9qYXZhLnNlY3VyaXR5IG9yIGFkZGVkIHByb2dyYW1tYXRpY2FsbHkgYXQKKyAgICAgIHJ1bnRpbWUuIFRoZSBDMTROMTEgY2FwYWJpbGl0eSBpcyBjdXJyZW50bHkgKDExIEphbnVhcnksIDIwMDgpIGEKKyAgICAgIHRlY2hub2xvZ3kgcHJldmlldyB0aGF0IGlzIG5vdCB5ZXQgZ2VuZXJhbGx5IGF2YWlsYWJsZS48L3A+CisgICAgPC9kZD4KKyAgPGR0PjxzdHJvbmc+U3VuIEphdmEgWE1MIERpZ2l0YWwgU2lnbmF0dXJlIEFQSSBhbmQgSW1wbGVtZW50YXRpb248L3N0cm9uZz4gKFN1bik8L2R0PgorICAgIDxkZD48cD5TdW4ncyBYTUwgRGlnaXRhbCBTaWduYXR1cmUgaW1wbGVtZW50YXRpb24gaXMgYW4gaW1wbGVtZW50YXRpb24gb2YKKyAgICAgIHRoZSBzdGFuZGFyZCBKU1IgMTA1IEFQSSAoSmF2YSBYTUwgRGlnaXRhbCBTaWduYXR1cmUgQVBJKSBhbmQgaXMKKyAgICAgIGluY2x1ZGVkIGluIFN1bidzIEpESyA2IGFuZCBBcHBsaWNhdGlvbiBTZXJ2ZXIgcHJvZHVjdHMuIFRoZSBDMTROIDEuMQorICAgICAgaW1wbGVtZW50YXRpb24gaXMgbm90IHlldCBnZW5lcmFsbHkgYXZhaWxhYmxlIGJ1dCBpcyB0YXJnZXRlZCBmb3IKKyAgICAgIGZ1dHVyZSByZWxlYXNlcy4gPC9wPgorICAgIDwvZGQ+CisgICAgPGR0PjxzdHJvbmc+T3JhY2xlIFhNTCBEaWdpdGFsIFNpZ25hdHVyZSBwYWNrYWdlPC9zdHJvbmc+IChPcmFjbGUpPC9kdD4KKyAgICA8ZGQ+CisgICAgICA8cD5UaGUgWE1MIERpZ2l0YWwgU2lnbmF0dXJlIHBhY2thZ2UgaXMgcGFydCBvZiBPcmFjbGUgU2VjdXJpdHkgRGV2ZWxvcGVyIFRvb2xzIHdoaWNoIGlzIHBhcnQgb2YKKyAgICAgIE9yYWNsZSdzIEZ1c2lvbiBNaWRkbGV3YXJlIHBsYXRmb3JtLiBUaGUgdXBjb21pbmcgQVMxMVIxIHJlbGVhc2Ugb2YgRnVzaW9uIE1pZGRsZXdhcmUgaW5jbHVkZXMKKyAgICAgIGZ1bGwgc3VwcG9ydCBmb3IgQzE0TiB2ZXJzaW9uIDEuMSBpbiBhZGRpdGlvbiB0byBYTUwgU2lnbmF0dXJlLCBYTUwgRW5jcnlwdGlvbiwgWE1MIEtleQorICAgICAgTWFuYWdlbWVudCwgU0FNTCBhbmQgV2ViIFNlcnZpY2VzIFNlY3VyaXR5IHRlY2hub2xvZ2llcy4gVGhlIFhNTCBEaWdpdGFsIFNpZ25hdHVyZQorICAgICAgZnVuY3Rpb25hbGl0eSBjYW4gYmUgYWNjZXNzZWQgdXNpbmcgdGhlIGluZHVzdHJ5IHN0YW5kYXJkIEpTUiAxMDUgQVBJcyAoYnkgdXNpbmcgdGhlIE9yYWNsZQorICAgICAgcHJvdmlkZXIpIG9yIHRocm91Z2ggdGhlIGN1cnJlbnQgT1NEVCBYTUwgU2VjdXJpdHkgQVBJcy48L3A+CisgICAgPC9kZD4KKyAgICA8ZHQ+PHN0cm9uZz51cGN4c2xpYiB4bWwgc2lnbmF0dXJlIHBhY2thZ2U8L3N0cm9uZz4gKFVuaXZlcnNpdGF0IFBvbGl0ZWNuaWNhIGRlIENhdGFsdW55YSk8L2R0PgorICAgIDxkZD48cD4KKyAgICAgIFRoZSB1cGN4c2xpYiB4bWwgc2lnbmF0dXJlIHBhY2thZ2UgcnVucyBvbiBKYXZhIDEuNC4yIG9yIGhpZ2hlci4gSXQgdXNlcyBTdW4ncyBzZWN1cml0eQorICAgICAgcHJvdmlkZXIgd2l0aGluIHRoZSBKUkUgZm9yIGJhc2ljIGNyeXB0b2dyYXBoaWMgdGFza3MuIENOMTROIDEuMSBpcyBub3QgZ2VuZXJhbGx5IGF2YWlsYWJsZSBhdAorICAgICAgcHJlc2VudCwgYnV0IGl0cyBpbmNvcnBvcmF0aW9uIGlzIHRhcmdldGVkIGZvciBhIG5lYXIgZnV0dXJlLjwvcD4KKyAgICA8L2RkPgorICAgIDxkdD48c3Ryb25nPklBSUsgWE1MIFNlY3VyaXR5IFRvb2xraXQgKFhTRUNUKTwvc3Ryb25nPiAoR3JheiBVbml2ZXJzaXR5IG9mIFRlY2hub2xvZ3kpPC9kdD4KKyAgICA8ZGQ+PHA+CisgICAgICBUaGUgSUFJSyA8YSBocmVmPSJodHRwOi8vamNlLmlhaWsudHVncmF6LmF0L3NpYy9wcm9kdWN0cy94bWxfc2VjdXJpdHkveHNlY3QiPlhNTCBTZWN1cml0eSBUb29sa2l0IChYU0VDVCk8L2E+IGlzIHRoZSBzdWNjZXNzb3Igb2YgdGhlIElBSUsgWE1MIFNpZ25hdHVyZSBMaWJyYXJ5CisgICAgICAoSVhTSUwpLiBYU0VDVCAxLjEyIG9yIGhpZ2hlciBpcyBzY2hlZHVsZWQgdG8gc2hpcCBpbiBRMi8yMDA4IGFuZCB3aWxsIGNvbnRhaW4gdGhlIEMxNE4gMS4xCisgICAgICBpbXBsZW1lbnRhdGlvbi4gQzE0TiAxLjEgd2lsbCBiZSBlbmFibGVkIGluIHRoZSBkZWZhdWx0IG1vZGUgZm9yIHNpZ25hdHVyZSBjcmVhdGlvbiBhbmQgbWF5IGJlCisgICAgICB0dXJuZWQgb2ZmIGJ5IGEgY29uZmlndXJhdGlvbiBmbGFnIGFsbG93aW5nIGZvciBtYXhpbXVtIGZsZXhpYmlsaXR5LiBYU0VDVCAxLjEyIHdpbGwgc3VwcG9ydAorICAgICAgYWxsIEphdmFeKFRNKSB2ZXJzaW9ucyBzaW5jZSBKREsgMS4zLjEgb3IgaGlnaGVyLgorICAgICAgPC9wPgorICAgIDwvZGQ+Cis8L2RsPgorPC9kaXY+CisKKzxoMj5UZXN0IHJlc3VsdHM8L2gyPgorCis8dGFibGU+CisgIDx0aGVhZD4KKyAgICA8dHI+CisgICAgICA8dGg+PC90aD4KKyAgICAgIDx0aD5TVU48L3RoPgorICAgICAgPHRoPklBSUs8L3RoPgorICAgICAgPHRoPklCTTwvdGg+CisgICAgICA8dGg+T1JDTDwvdGg+CisgICAgICA8dGg+VVBDPC90aD4KKyAgICA8L3RyPgorICA8L3RoZWFkPgorICA8dGJvZHk+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJ0YyI+PGEKKyAgICAgICAgaHJlZj0iLi4vLi4veG1sc2lnLWludGVyb3AtZG9jL3Rlc3RjYXNlcy5odG1sI2MxNG4xMXhtbGJhc2UtYzE0bjExc3BlYy0xMDIiPnhtbGJhc2UtYzE0bjExc3BlYy0xMDI8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sYmFzZS1jMTRuMTFzcGVjLTEwMi1TVU4ueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGJhc2UtYzE0bjExc3BlYy0xMDItSUFJSy54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sYmFzZS1jMTRuMTFzcGVjLTEwMi1JQk0ueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGJhc2UtYzE0bjExc3BlYy0xMDItT1JDTC54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sYmFzZS1jMTRuMTFzcGVjLTEwMi1VUEMueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8dGQgY2xhc3M9InRjIj48YQorICAgICAgICBocmVmPSIuLi8uLi94bWxzaWctaW50ZXJvcC1kb2MvdGVzdGNhc2VzLmh0bWwjYzE0bjExeG1sYmFzZS1jMTRuMTFzcGVjMi0xMDIiPnhtbGJhc2UtYzE0bjExc3BlYzItMTAyPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGJhc2UtYzE0bjExc3BlYzItMTAyLVNVTi54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEKKyAgICAgIGhyZWY9InhtbGJhc2UtYzE0bjExc3BlYzItMTAyLUlBSUsueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGJhc2UtYzE0bjExc3BlYzItMTAyLUlCTS54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEKKyAgICAgIGhyZWY9InhtbGJhc2UtYzE0bjExc3BlYzItMTAyLU9SQ0wueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGJhc2UtYzE0bjExc3BlYzItMTAyLVVQQy54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICA8L3RyPgorICAgIDx0cj4KKyAgICAgIDx0ZCBjbGFzcz0idGMiPjxhCisgICAgICAgIGhyZWY9Ii4uLy4uL3htbHNpZy1pbnRlcm9wLWRvYy90ZXN0Y2FzZXMuaHRtbCNjMTRuMTF4bWxiYXNlLWMxNG4xMXNwZWMzLTEwMyI+eG1sYmFzZS1jMTRuMTFzcGVjMy0xMDM8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sYmFzZS1jMTRuMTFzcGVjMy0xMDMtU1VOLnhtbCI+UEFTUzwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YQorICAgICAgaHJlZj0ieG1sYmFzZS1jMTRuMTFzcGVjMy0xMDMtSUFJSy54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sYmFzZS1jMTRuMTFzcGVjMy0xMDMtSUJNLnhtbCI+UEFTUzwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YQorICAgICAgaHJlZj0ieG1sYmFzZS1jMTRuMTFzcGVjMy0xMDMtT1JDTC54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sYmFzZS1jMTRuMTFzcGVjMy0xMDMtVVBDLnhtbCI+UEFTUzwvYT48L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJ0YyI+PGEKKyAgICAgICAgaHJlZj0iLi4vLi4veG1sc2lnLWludGVyb3AtZG9jL3Rlc3RjYXNlcy5odG1sI2MxNG4xMXhtbGJhc2UtcHJvcC0xIj54bWxiYXNlLXByb3AtMTwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YSBocmVmPSJ4bWxiYXNlLXByb3AtMS1TVU4ueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGJhc2UtcHJvcC0xLUlBSUsueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGJhc2UtcHJvcC0xLUlCTS54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sYmFzZS1wcm9wLTEtT1JDTC54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sYmFzZS1wcm9wLTEtVVBDLnhtbCI+UEFTUzwvYT48L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJ0YyI+PGEKKyAgICAgICAgaHJlZj0iLi4vLi4veG1sc2lnLWludGVyb3AtZG9jL3Rlc3RjYXNlcy5odG1sI2MxNG4xMXhtbGJhc2UtcHJvcC0yIj54bWxiYXNlLXByb3AtMjwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YSBocmVmPSJ4bWxiYXNlLXByb3AtMi1TVU4ueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGJhc2UtcHJvcC0yLUlBSUsueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGJhc2UtcHJvcC0yLUlCTS54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sYmFzZS1wcm9wLTItT1JDTC54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sYmFzZS1wcm9wLTItVVBDLnhtbCI+UEFTUzwvYT48L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJ0YyI+PGEKKyAgICAgICAgaHJlZj0iLi4vLi4veG1sc2lnLWludGVyb3AtZG9jL3Rlc3RjYXNlcy5odG1sI2MxNG4xMXhtbGJhc2UtcHJvcC0zIj54bWxiYXNlLXByb3AtMzwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YSBocmVmPSJ4bWxiYXNlLXByb3AtMy1TVU4ueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGJhc2UtcHJvcC0zLUlBSUsueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGJhc2UtcHJvcC0zLUlCTS54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sYmFzZS1wcm9wLTMtT1JDTC54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sYmFzZS1wcm9wLTMtVVBDLnhtbCI+UEFTUzwvYT48L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJ0YyI+PGEKKyAgICAgICAgaHJlZj0iLi4vLi4veG1sc2lnLWludGVyb3AtZG9jL3Rlc3RjYXNlcy5odG1sI2MxNG4xMXhtbGJhc2UtcHJvcC00Ij54bWxiYXNlLXByb3AtNDwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YSBocmVmPSJ4bWxiYXNlLXByb3AtNC1TVU4ueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGJhc2UtcHJvcC00LUlBSUsueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGJhc2UtcHJvcC00LUlCTS54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sYmFzZS1wcm9wLTQtT1JDTC54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sYmFzZS1wcm9wLTQtVVBDLnhtbCI+UEFTUzwvYT48L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJ0YyI+PGEKKyAgICAgICAgaHJlZj0iLi4vLi4veG1sc2lnLWludGVyb3AtZG9jL3Rlc3RjYXNlcy5odG1sI2MxNG4xMXhtbGJhc2UtcHJvcC01Ij54bWxiYXNlLXByb3AtNTwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YSBocmVmPSJ4bWxiYXNlLXByb3AtNS1TVU4ueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGJhc2UtcHJvcC01LUlBSUsueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGJhc2UtcHJvcC01LUlCTS54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sYmFzZS1wcm9wLTUtT1JDTC54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sYmFzZS1wcm9wLTUtVVBDLnhtbCI+UEFTUzwvYT48L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJ0YyI+PGEKKyAgICAgICAgaHJlZj0iLi4vLi4veG1sc2lnLWludGVyb3AtZG9jL3Rlc3RjYXNlcy5odG1sI2MxNG4xMXhtbGJhc2UtcHJvcC02Ij54bWxiYXNlLXByb3AtNjwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YSBocmVmPSJ4bWxiYXNlLXByb3AtNi1TVU4ueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGJhc2UtcHJvcC02LUlBSUsueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGJhc2UtcHJvcC02LUlCTS54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sYmFzZS1wcm9wLTYtT1JDTC54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sYmFzZS1wcm9wLTYtVVBDLnhtbCI+UEFTUzwvYT48L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJ0YyI+PGEKKyAgICAgICAgaHJlZj0iLi4vLi4veG1sc2lnLWludGVyb3AtZG9jL3Rlc3RjYXNlcy5odG1sI2MxNG4xMXhtbGJhc2UtcHJvcC03Ij54bWxiYXNlLXByb3AtNzwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YSBocmVmPSJ4bWxiYXNlLXByb3AtNy1TVU4ueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGJhc2UtcHJvcC03LUlBSUsueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGJhc2UtcHJvcC03LUlCTS54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sYmFzZS1wcm9wLTctT1JDTC54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sYmFzZS1wcm9wLTctVVBDLnhtbCI+UEFTUzwvYT48L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJ0YyI+PGEKKyAgICAgICAgaHJlZj0iLi4vLi4veG1sc2lnLWludGVyb3AtZG9jL3Rlc3RjYXNlcy5odG1sI2MxNG4xMXhtbGlkLTEiPnhtbGlkLTE8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1saWQtMS1TVU4ueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGlkLTEtSUFJSy54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1saWQtMS1JQk0ueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGlkLTEtT1JDTC54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1saWQtMS1VUEMueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8dGQgY2xhc3M9InRjIj48YQorICAgICAgICBocmVmPSIuLi8uLi94bWxzaWctaW50ZXJvcC1kb2MvdGVzdGNhc2VzLmh0bWwjYzE0bjExeG1saWQtMiI+eG1saWQtMjwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YSBocmVmPSJ4bWxpZC0yLVNVTi54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1saWQtMi1JQUlLLnhtbCI+UEFTUzwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YSBocmVmPSJ4bWxpZC0yLUlCTS54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1saWQtMi1PUkNMLnhtbCI+UEFTUzwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YSBocmVmPSJ4bWxpZC0yLVVQQy54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICA8L3RyPgorICAgIDx0cj4KKyAgICAgIDx0ZCBjbGFzcz0idGMiPjxhCisgICAgICAgIGhyZWY9Ii4uLy4uL3htbHNpZy1pbnRlcm9wLWRvYy90ZXN0Y2FzZXMuaHRtbCNjMTRuMTF4bWxsYW5nLTEiPnhtbGxhbmctMTwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YSBocmVmPSJ4bWxsYW5nLTEtU1VOLnhtbCI+UEFTUzwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YSBocmVmPSJ4bWxsYW5nLTEtSUFJSy54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sbGFuZy0xLUlCTS54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sbGFuZy0xLU9SQ0wueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGxhbmctMS1VUEMueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8dGQgY2xhc3M9InRjIj48YQorICAgICAgICBocmVmPSIuLi8uLi94bWxzaWctaW50ZXJvcC1kb2MvdGVzdGNhc2VzLmh0bWwjYzE0bjExeG1sbGFuZy0yIj54bWxsYW5nLTI8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sbGFuZy0yLVNVTi54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sbGFuZy0yLUlBSUsueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGxhbmctMi1JQk0ueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGxhbmctMi1PUkNMLnhtbCI+UEFTUzwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YSBocmVmPSJ4bWxsYW5nLTItVVBDLnhtbCI+UEFTUzwvYT48L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJ0YyI+PGEKKyAgICAgICAgaHJlZj0iLi4vLi4veG1sc2lnLWludGVyb3AtZG9jL3Rlc3RjYXNlcy5odG1sI2MxNG4xMXhtbGxhbmctMyI+eG1sbGFuZy0zPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGxhbmctMy1TVU4ueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGxhbmctMy1JQUlLLnhtbCI+UEFTUzwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YSBocmVmPSJ4bWxsYW5nLTMtSUJNLnhtbCI+UEFTUzwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YSBocmVmPSJ4bWxsYW5nLTMtT1JDTC54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sbGFuZy0zLVVQQy54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICA8L3RyPgorICAgIDx0cj4KKyAgICAgIDx0ZCBjbGFzcz0idGMiPjxhCisgICAgICAgIGhyZWY9Ii4uLy4uL3htbHNpZy1pbnRlcm9wLWRvYy90ZXN0Y2FzZXMuaHRtbCNjMTRuMTF4bWxsYW5nLTQiPnhtbGxhbmctNDwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YSBocmVmPSJ4bWxsYW5nLTQtU1VOLnhtbCI+UEFTUzwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YSBocmVmPSJ4bWxsYW5nLTQtSUFJSy54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sbGFuZy00LUlCTS54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sbGFuZy00LU9SQ0wueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbGxhbmctNC1VUEMueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8dGQgY2xhc3M9InRjIj48YQorICAgICAgICBocmVmPSIuLi8uLi94bWxzaWctaW50ZXJvcC1kb2MvdGVzdGNhc2VzLmh0bWwjYzE0bjExeG1sc3BhY2UtMSI+eG1sc3BhY2UtMTwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YSBocmVmPSJ4bWxzcGFjZS0xLVNVTi54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sc3BhY2UtMS1JQUlLLnhtbCI+UEFTUzwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YSBocmVmPSJ4bWxzcGFjZS0xLUlCTS54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sc3BhY2UtMS1PUkNMLnhtbCI+UEFTUzwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YSBocmVmPSJ4bWxzcGFjZS0xLVVQQy54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICA8L3RyPgorICAgIDx0cj4KKyAgICAgIDx0ZCBjbGFzcz0idGMiPjxhCisgICAgICAgIGhyZWY9Ii4uLy4uL3htbHNpZy1pbnRlcm9wLWRvYy90ZXN0Y2FzZXMuaHRtbCNjMTRuMTF4bWxzcGFjZS0yIj54bWxzcGFjZS0yPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbHNwYWNlLTItU1VOLnhtbCI+UEFTUzwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YSBocmVmPSJ4bWxzcGFjZS0yLUlBSUsueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbHNwYWNlLTItSUJNLnhtbCI+UEFTUzwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YSBocmVmPSJ4bWxzcGFjZS0yLU9SQ0wueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbHNwYWNlLTItVVBDLnhtbCI+UEFTUzwvYT48L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJ0YyI+PGEKKyAgICAgICAgaHJlZj0iLi4vLi4veG1sc2lnLWludGVyb3AtZG9jL3Rlc3RjYXNlcy5odG1sI2MxNG4xMXhtbHNwYWNlLTMiPnhtbHNwYWNlLTM8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sc3BhY2UtMy1TVU4ueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbHNwYWNlLTMtSUFJSy54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sc3BhY2UtMy1JQk0ueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgICA8dGQgY2xhc3M9InBhc3MiPjxhIGhyZWY9InhtbHNwYWNlLTMtT1JDTC54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sc3BhY2UtMy1VUEMueG1sIj5QQVNTPC9hPjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8dGQgY2xhc3M9InRjIj48YQorICAgICAgICBocmVmPSIuLi8uLi94bWxzaWctaW50ZXJvcC1kb2MvdGVzdGNhc2VzLmh0bWwjYzE0bjExeG1sc3BhY2UtNCI+eG1sc3BhY2UtNDwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YSBocmVmPSJ4bWxzcGFjZS00LVNVTi54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sc3BhY2UtNC1JQUlLLnhtbCI+UEFTUzwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YSBocmVmPSJ4bWxzcGFjZS00LUlCTS54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0icGFzcyI+PGEgaHJlZj0ieG1sc3BhY2UtNC1PUkNMLnhtbCI+UEFTUzwvYT48L3RkPgorICAgICAgPHRkIGNsYXNzPSJwYXNzIj48YSBocmVmPSJ4bWxzcGFjZS00LVVQQy54bWwiPlBBU1M8L2E+PC90ZD4KKyAgICA8L3RyPgorICA8L3Rib2R5PgorPC90YWJsZT4KKworPGgyPkRpZmZlcmVuY2VzPC9oMj4KKworPHA+Tm9uZSBvYnNlcnZlZC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEvcmVwb3J0LnNoIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3JlcG9ydC5zaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGI0YTBhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3JlcG9ydC5zaApAQCAtMCwwICsxLDgzIEBACisjIS9iaW4vc2gKKwordmVuZG9ycz0iU1VOIElBSUsgSUJNIE9SQ0wgVVBDIiAKK3Rlc3RjYXNlcz0iYGNhdCB0ZXN0Y2FzZXNgIgordGVzdGRvYz0uLi8uLi94bWxzaWctaW50ZXJvcC1kb2MvdGVzdGNhc2VzLmh0bWwKKworaWYgdGVzdCAtZiByZXBvcnQuaHRtbCA7IHRoZW4KKwlzZWQgLW4gLWUgJy88ZGl2Pi8sLzxcL2Rpdj4vcCcgcmVwb3J0Lmh0bWwgPiBzdW1tYXJ5Lmh0bWwKK2ZpCisKK2VjaG8gIjxodG1sPjxoZWFkPjx0aXRsZT5JbnRlcm9wIHJlcG9ydCBDMTROIDEuMTwvdGl0bGU+IgorZWNobyAnPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9TdHlsZVNoZWV0cy9iYXNlLmNzcyIvPicKK2VjaG8gJzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvU3R5bGVTaGVldHMvbWVtYmVyLmNzcyIvPicKK2VjaG8gJzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vcmVwb3J0LmNzcyIvPicKK2VjaG8gIjwvaGVhZD4iCitlY2hvICI8Ym9keT4iCitlY2hvICc8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8iPjxpbWcgYWx0PSJXM0MgTG9nbyIgc3JjPSJodHRwOi8vd3d3LnczLm9yZy9JY29ucy93M2NfaG9tZSIvPjwvYT4nCitlY2hvICI8aDE+SW1wbGVtZW50YXRpb24gcmVwb3J0IEMxNE4gMS4xPC9oMT4iCitlY2hvICc8ZGw+CisgIDxkdD5BdXRob3I8L2R0PgorICAgIDxkZD5UaG9tYXMgUm9lc3NsZXIgJmx0O3RsckB3My5vcmcmZ3Q7PC9kZD4KKyAgPGR0Pkxhc3QgTW9kaWZpZWQ8L2R0PgorICAgIDxkZD4kRGF0ZTogMjAwOC8wMS8wOCAxMzowOToxOCAkIGJ5ICRBdXRob3I6IHJvZXNzbGVyICQ8L2RkPgorPC9kbD4nCisKKworZWNobyAnPGgyPk92ZXJ2aWV3PC9oMj4nCisKK2NhdCBzdW1tYXJ5Lmh0bWwKKworZWNobyAnPGgyPlRlc3QgcmVzdWx0czwvaDI+JworCitlY2hvICI8dGFibGU+PHRoZWFkPjx0cj48dGgvPiIKKworZm9yIHYgaW4gJHZlbmRvcnMgOyBkbworCWVjaG8gIjx0aD4ke3Z9PC90aD4iCitkb25lCisKK2VjaG8gIjwvdHI+PC90aGVhZD48dGJvZHk+IgorCitmb3IgdCBpbiAkdGVzdGNhc2VzIDsgZG8KKwlvcGVuc3NsIHNoYTEgLWJpbmFyeSAuLi8uLi9jMTRuMTEvJHQub3V0cHV0IHwgb3BlbnNzbCBiYXNlNjQgLWUgPiAke3R9LXJlZmVyZW5jZS5kaWdlc3QKKwllY2hvICc8dHI+JworCXU9YGVjaG8gJHQgfCB0ciAtZCAvYAorCWVjaG8gJzx0ZCBjbGFzcz0idGMiPjxhIGhyZWY9IickdGVzdGRvYycjYzE0bjExJyR1JyI+JyAkdCAnPC9hPjwvdGQ+JworCWZvciB2IGluICR2ZW5kb3JzIDsgZG8KKwkJaWYgdGVzdCAtZiAke3R9LSR7dn0ueG1sIDsgdGhlbgorCQkJeHNsdHByb2MgZGlnZXN0LnhzbCAke3R9LSR7dn0ueG1sID4gJHt0fS0ke3Z9LmRpZ2VzdAorCQkJaWYgZGlmZiAtcSAke3R9LXJlZmVyZW5jZS5kaWdlc3QgJHt0fS0ke3Z9LmRpZ2VzdCA+IC9kZXYvbnVsbCA7IHRoZW4KKwkJCQllY2hvICc8dGQgY2xhc3M9InBhc3MiPicKKwkJCQllY2hvICc8YSBocmVmPSInJHt0fS0ke3Z9LnhtbCciPlBBU1M8L2E+JworCQkJCWVjaG8gJzwvdGQ+JworCQkJCXJtIC1mICR7dH0tJHt2fS5mYWlsCisJCQllbGlmIHRlc3QgLWYgJHt0fS0ke3Z9LnhtbCA7IHRoZW4KKwkJCQllY2hvICc8dGQgY2xhc3M9ImZhaWwiPjxhIGhyZWY9IiNkaWZmLScke3R9LSR7dn0nIj5GQUlMPC9hPjwvdGQ+JworCQkJCWRpZmYgLXUgJHt0fS1TVU4ueG1sICR7dH0tJHt2fS54bWwgPiAke3R9LSR7dn0uZmFpbAorCQkJZmkKKwkJZWxzZQorCQkJZWNobyAnPHRkIGNsYXNzPSJuYSI+Ti9BPC90ZD4nCisJCWZpCisJZG9uZQorCWVjaG8gJzwvdHI+JworZG9uZQorCitlY2hvICc8L3Rib2R5PjwvdGFibGU+JworCitlY2hvICc8aDI+RGlmZmVyZW5jZXM8L2gyPicKKworZm9yIGYgaW4gKi5mYWlsIDsgZG8KKwlpZiB0ZXN0IC1mICIkZiIgOyB0aGVuCisJCWJhc2U9YGJhc2VuYW1lICRmIC5mYWlsYAorCQllY2hvICc8aDMgaWQ9ImRpZmYtJyRiYXNlJyI+JyRiYXNlJzwvaDM+JworCQorCQllY2hvICc8cHJlPicKKwkJc2VkIC1lICdzLzwvXCZsdDsvZycgPCAkZgorCQllY2hvICc8L3ByZT4nCisJZWxzZQorCQllY2hvICI8cD5Ob25lIG9ic2VydmVkLjwvcD4iCisJZmkKK2RvbmUKKwkKK2VjaG8gJzwvYm9keT48aHRtbD4nCisJCQkKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS90ZXN0Y2FzZXMgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEvdGVzdGNhc2VzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3YTAxNjUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEvdGVzdGNhc2VzCkBAIC0wLDAgKzEsMjAgQEAKK3htbGJhc2UtYzE0bjExc3BlYy0xMDIKK3htbGJhc2UtYzE0bjExc3BlYzItMTAyCit4bWxiYXNlLWMxNG4xMXNwZWMzLTEwMworeG1sYmFzZS1wcm9wLTEKK3htbGJhc2UtcHJvcC0yCit4bWxiYXNlLXByb3AtMworeG1sYmFzZS1wcm9wLTQKK3htbGJhc2UtcHJvcC01Cit4bWxiYXNlLXByb3AtNgoreG1sYmFzZS1wcm9wLTcKK3htbGlkLTEKK3htbGlkLTIKK3htbGxhbmctMQoreG1sbGFuZy0yCit4bWxsYW5nLTMKK3htbGxhbmctNAoreG1sc3BhY2UtMQoreG1sc3BhY2UtMgoreG1sc3BhY2UtMworeG1sc3BhY2UtNApkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbC1iYXNlLWMxNG4xMXNwZWMtaW5wdXQueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbC1iYXNlLWMxNG4xMXNwZWMtaW5wdXQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhMjc1NGEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sLWJhc2UtYzE0bjExc3BlYy1pbnB1dC54bWwKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGRvYyBbDQorPCFBVFRMSVNUIGUyIHhtbDpzcGFjZSAoZGVmYXVsdHxwcmVzZXJ2ZSkgJ3ByZXNlcnZlJz4NCis8IUFUVExJU1QgZTMgaWQgSUQgI0lNUExJRUQ+DQorXT4NCis8ZG9jIHhtbG5zPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS9zb21ldGhpbmcvZWxzZSI+DQorICAgPGUxPg0KKyAgICAgIDxlMiB4bWxucz0iIiB4bWw6aWQ9ImFiYyIgeG1sOmJhc2U9Ii4uL2Jhci8iPg0KKyAgICAgICAgIDxlMyBpZD0iRTMiIHhtbDpiYXNlPSJmb28iLz4NCisgICAgICA8L2UyPg0KKyAgIDwvZTE+DQorPC9kb2M+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbC1iYXNlLWMxNG4xMXNwZWMyLWlucHV0LnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWwtYmFzZS1jMTRuMTFzcGVjMi1pbnB1dC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVhYjYzYgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWwtYmFzZS1jMTRuMTFzcGVjMi1pbnB1dC54bWwKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGRvYyBbCis8IUFUVExJU1QgZTIgeG1sOnNwYWNlIChkZWZhdWx0fHByZXNlcnZlKSAncHJlc2VydmUnPgorPCFBVFRMSVNUIGUzIGlkIElEICNJTVBMSUVEPgorXT4KKzxkb2MgeG1sbnM9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpiYXNlPSJzb21ldGhpbmcvZWxzZSI+CisgICA8ZTE+CisgICAgICA8ZTIgeG1sbnM9IiIgeG1sOmlkPSJhYmMiIHhtbDpiYXNlPSJiYXIvIj4KKyAgICAgICAgIDxlMyBpZD0iRTMiIHhtbDpiYXNlPSJmb28iLz4KKyAgICAgIDwvZTI+CisgICA8L2UxPgorPC9kb2M+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbC1iYXNlLWMxNG4xMXNwZWMzLWlucHV0LnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWwtYmFzZS1jMTRuMTFzcGVjMy1pbnB1dC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA3MmU3NAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWwtYmFzZS1jMTRuMTFzcGVjMy1pbnB1dC54bWwKQEAgLTAsMCArMSw5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGEgeG1sOmJhc2U9ImZvby9iYXIiPgorIDxiIHhtbDpiYXNlPSIuLiI+CisgIDxjIHhtbDpiYXNlPSIuLiI+CisgICA8ZCB4bWw6YmFzZT0ieCI+CisgICA8L2Q+CisgIDwvYz4KKyA8L2I+Cis8L2E+CmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sLWJhc2UtaW5wdXQueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbC1iYXNlLWlucHV0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGFkYjI0Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbC1iYXNlLWlucHV0LnhtbApAQCAtMCwwICsxLDE3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGlldGY6YzE0bjExWG1sQmFzZURvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9Imh0dHA6Ly94bWxiYXNlLmV4YW1wbGUub3JnL3htbGJhc2UwLyI+CisgIDxpZXRmOmUxIHhtbDpiYXNlPSIveG1sYmFzZTEvIj4KKyAgICA8aWV0ZjplMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTEvIj4KKyAgICAgIDxpZXRmOmUxMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTExLyIvPgorICAgIDwvaWV0ZjplMTE+CisgICAgPGlldGY6ZTEyIGF0PSIyIj4KKyAgICAgIDxpZXRmOmUxMjEgeG1sOmJhc2U9Ii94bWxiYXNlMTIxLyIvPgorICAgIDwvaWV0ZjplMTI+CisgIDwvaWV0ZjplMT4KKyAgPGlldGY6ZTI+CisgICAgPGlldGY6ZTIxIHhtbDpiYXNlPSIveG1sYmFzZTIxLyIvPgorICA8L2lldGY6ZTI+CisgIDxpZXRmOmUzPgorICAgIDxpZXRmOmUzMSBhdD0iMyIvPgorICA8L2lldGY6ZTM+Cis8L2lldGY6YzE0bjExWG1sQmFzZURvYzE+CmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sLWlkLWlucHV0LnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWwtaWQtaW5wdXQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3NDYwY2QKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sLWlkLWlucHV0LnhtbApAQCAtMCwwICsxLDE1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGlldGY6YzE0bjExWG1sSWREb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIAoreG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisgICA8aWV0ZjplMSB4bWw6aWQ9IklkSW50ZXJvcCI+CisgICAgICA8aWV0ZjplMTE+CisgICAgICAgICA8aWV0ZjplMTExIC8+CisgICAgICA8L2lldGY6ZTExPgorICAgICAgPGlldGY6ZTEyIGF0PSIyIj4KKyAgICAgICAgIDxpZXRmOmUxMjEgLz4KKyAgICAgIDwvaWV0ZjplMTI+CisgICA8L2lldGY6ZTE+CisgICA8aWV0ZjplMiA+CisgICAgICA8aWV0ZjplMjEgLz4KKyAgIDwvaWV0ZjplMj4gIAorPC9pZXRmOmMxNG4xMVhtbElkRG9jMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sLWxhbmctaW5wdXQueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbC1sYW5nLWlucHV0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWI1YjZhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbC1sYW5nLWlucHV0LnhtbApAQCAtMCwwICsxLDE1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGlldGY6YzE0bjExWG1sbGFuZyB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiAKK3htbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPgorICAgPGlldGY6ZTEgeG1sOmxhbmc9IkVOIj4KKyAgICAgIDxpZXRmOmUxMT4KKyAgICAgICAgIDxpZXRmOmUxMTEgLz4KKyAgICAgIDwvaWV0ZjplMTE+CisgICAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgICAgPGlldGY6ZTEyMSAvPgorICAgICAgPC9pZXRmOmUxMj4KKyAgIDwvaWV0ZjplMT4KKyAgIDxpZXRmOmUyID4KKyAgICAgIDxpZXRmOmUyMSAvPgorICAgPC9pZXRmOmUyPgorPC9pZXRmOmMxNG4xMVhtbGxhbmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbC1zcGFjZS1pbnB1dC54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sLXNwYWNlLWlucHV0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjZkY2RmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbC1zcGFjZS1pbnB1dC54bWwKQEAgLTAsMCArMSwxNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxpZXRmOmMxNG4xMVhtbFNwYWNlRG9jMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiAKK3htbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPgorICAgPGlldGY6ZTEgeG1sOnNwYWNlPSJ0cnVlIj4KKyAgICAgIDxpZXRmOmUxMT4KKyAgICAgICAgIDxpZXRmOmUxMTEgLz4KKyAgICAgIDwvaWV0ZjplMTE+CisgICAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgICAgPGlldGY6ZTEyMSAvPgorICAgICAgPC9pZXRmOmUxMj4KKyAgIDwvaWV0ZjplMT4KKyAgIDxpZXRmOmUyID4KKyAgICAgIDxpZXRmOmUyMSAvPgorICAgPC9pZXRmOmUyPgorPC9pZXRmOmMxNG4xMVhtbFNwYWNlRG9jMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjLTEwMi1JQUlLLXJlZjAuZGVyZWZVUkkgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjLTEwMi1JQUlLLXJlZjAuZGVyZWZVUkkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBkNGQwNgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMtMTAyLUlBSUstcmVmMC5kZXJlZlVSSQpAQCAtMCwwICsxLDEzIEBACistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gT2N0ZXRTdHJlYW1EYXRhIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorPCFET0NUWVBFIGRvYyBbDQorPCFBVFRMSVNUIGUyIHhtbDpzcGFjZSAoZGVmYXVsdHxwcmVzZXJ2ZSkgJ3ByZXNlcnZlJz4NCis8IUFUVExJU1QgZTMgaWQgSUQgI0lNUExJRUQ+DQorXT4NCis8ZG9jIHhtbG5zPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS9zb21ldGhpbmcvZWxzZSI+DQorICAgPGUxPg0KKyAgICAgIDxlMiB4bWxucz0iIiB4bWw6aWQ9ImFiYyIgeG1sOmJhc2U9Ii4uL2Jhci8iPg0KKyAgICAgICAgIDxlMyBpZD0iRTMiIHhtbDpiYXNlPSJmb28iLz4NCisgICAgICA8L2UyPg0KKyAgIDwvZTE+DQorPC9kb2M+CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYy0xMDItSUFJSy1yZWYwLmRpZ2VzdGlucHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYy0xMDItSUFJSy1yZWYwLmRpZ2VzdGlucHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyMWQ2MGIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjLTEwMi1JQUlLLXJlZjAuZGlnZXN0aW5wdXQKQEAgLTAsMCArMSBAQAorPGUxIHhtbG5zPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS9zb21ldGhpbmcvZWxzZSI+PGUzIHhtbG5zPSIiIGlkPSJFMyIgeG1sOmJhc2U9Ii4uL2Jhci9mb28iIHhtbDpzcGFjZT0icHJlc2VydmUiPjwvZTM+PC9lMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjLTEwMi1JQUlLLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMtMTAyLUlBSUsueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExMzI2Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjLTEwMi1JQUlLLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1iYXNlLWMxNG4xMXNwZWMtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5zZWxmOjppZXRmOmUxIG9yIChwYXJlbnQ6OmlldGY6ZTEgYW5kIG5vdChzZWxmOjp0ZXh0KCkgb3Igc2VsZjo6ZTIpKSBvciBjb3VudChpZCgiRTMiKXxhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpID0gY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+aWtpRldKcVlHUEVmcE84UU1vbGlnKzE2KytNPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT44YzVMb2R3Mzhrc0ttQ3dsL3ZpYS9UbzlWTTA9PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjLTEwMi1JQk0ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYy0xMDItSUJNLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWQ5NWRmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYy0xMDItSUJNLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48ZHM6UmVmZXJlbmNlIFVSST0ieG1sLWJhc2UtYzE0bjExc3BlYy1pbnB1dC54bWwiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PHhmOlhQYXRoIHhtbG5zOnhmPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5zZWxmOjppZXRmOmUxIG9yIChwYXJlbnQ6OmlldGY6ZTEgYW5kIG5vdChzZWxmOjp0ZXh0KCkgb3Igc2VsZjo6ZTIpKSBvciBjb3VudChpZCgnRTMnKXxhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpID0gY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKTwveGY6WFBhdGg+PC9kczpUcmFuc2Zvcm0+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+aWtpRldKcVlHUEVmcE84UU1vbGlnKzE2KytNPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5Ka2lRdXhUL1BPN2I4MVZJSWhJNVdNY2ZZTW89PC9kczpTaWduYXR1cmVWYWx1ZT48L2RzOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjLTEwMi1PUkNMLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMtMTAyLU9SQ0wueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwMDA5ODYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjLTEwMi1PUkNMLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLWJhc2UtYzE0bjExc3BlYy1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPnNlbGY6OmlldGY6ZTEgb3IgKHBhcmVudDo6aWV0ZjplMSBhbmQgbm90KHNlbGY6OnRleHQoKSBvciBzZWxmOjplMikpIG9yIGNvdW50KGlkKCJFMyIpfGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkgPSBjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5pa2lGV0pxWUdQRWZwTzhRTW9saWcrMTYrK009PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWUgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+OGM1TG9kdzM4a3NLbUN3bC92aWEvVG85Vk0wPTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjLTEwMi1TVU4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYy0xMDItU1VOLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjNhZjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYy0xMDItU1VOLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLWJhc2UtYzE0bjExc3BlYy1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPnNlbGY6OmlldGY6ZTEgb3IgKHBhcmVudDo6aWV0ZjplMSBhbmQgbm90KHNlbGY6OnRleHQoKSBvciBzZWxmOjplMikpIG9yIGNvdW50KGlkKCJFMyIpfGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkgPSBjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5pa2lGV0pxWUdQRWZwTzhRTW9saWcrMTYrK009PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPjhjNUxvZHczOGtzS21Dd2wvdmlhL1RvOVZNMD08L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMtMTAyLVVQQy5PVVRQVVQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjLTEwMi1VUEMuT1VUUFVUCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViNjIxOTEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjLTEwMi1VUEMuT1VUUFVUCkBAIC0wLDAgKzEgQEAKKzxlMSB4bWxucz0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vc29tZXRoaW5nL2Vsc2UiPjxlMyB4bWxucz0iIiBpZD0iRTMiIHhtbDpiYXNlPSIuLi9iYXIvZm9vIiB4bWw6c3BhY2U9InByZXNlcnZlIj48L2UzPjwvZTE+CmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjLTEwMi1VUEMueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYy0xMDItVVBDLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDc4NzNkCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYy0xMDItVVBDLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIgLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIgLz48UmVmZXJlbmNlIFVSST0ieG1sLWJhc2UtYzE0bjExc3BlYy1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPnNlbGY6OmlldGY6ZTEgb3IgKHBhcmVudDo6aWV0ZjplMSBhbmQgbm90KHNlbGY6OnRleHQoKSBvciBzZWxmOjplMikpIG9yIGNvdW50KGlkKCJFMyIpfGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkgPSBjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIiAvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+PERpZ2VzdFZhbHVlPmlraUZXSnFZR1BFZnBPOFFNb2xpZysxNisrTT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+OGM1TG9kdzM4a3NLbUN3bC92aWEvVG85Vk0wPTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYy0xMDItdGVtcGxhdGUueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYy0xMDItdGVtcGxhdGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiZWQ3YjkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjLTEwMi10ZW1wbGF0ZS54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLWJhc2UtYzE0bjExc3BlYy1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPnNlbGY6OmlldGY6ZTEgb3IgKHBhcmVudDo6aWV0ZjplMSBhbmQgbm90KHNlbGY6OnRleHQoKSBvciBzZWxmOjplMikpIG9yIGNvdW50KGlkKCJFMyIpfGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkgPSBjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT48L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMi0xMDItSUFJSy1yZWYwLmRlcmVmVVJJIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYzItMTAyLUlBSUstcmVmMC5kZXJlZlVSSQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmE3NDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYzItMTAyLUlBSUstcmVmMC5kZXJlZlVSSQpAQCAtMCwwICsxLDEzIEBACistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gT2N0ZXRTdHJlYW1EYXRhIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorPCFET0NUWVBFIGRvYyBbDQorPCFBVFRMSVNUIGUyIHhtbDpzcGFjZSAoZGVmYXVsdHxwcmVzZXJ2ZSkgJ3ByZXNlcnZlJz4NCis8IUFUVExJU1QgZTMgaWQgSUQgI0lNUExJRUQ+DQorXT4NCis8ZG9jIHhtbG5zPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0ic29tZXRoaW5nL2Vsc2UiPg0KKyAgIDxlMT4NCisgICAgICA8ZTIgeG1sbnM9IiIgeG1sOmlkPSJhYmMiIHhtbDpiYXNlPSJiYXIvIj4NCisgICAgICAgICA8ZTMgaWQ9IkUzIiB4bWw6YmFzZT0iZm9vIi8+DQorICAgICAgPC9lMj4NCisgICA8L2UxPg0KKzwvZG9jPgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMyLTEwMi1JQUlLLXJlZjAuZGlnZXN0aW5wdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMi0xMDItSUFJSy1yZWYwLmRpZ2VzdGlucHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViODMwZTgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMi0xMDItSUFJSy1yZWYwLmRpZ2VzdGlucHV0CkBAIC0wLDAgKzEgQEAKKzxlMSB4bWxucz0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9InNvbWV0aGluZy9lbHNlIj48ZTMgeG1sbnM9IiIgaWQ9IkUzIiB4bWw6YmFzZT0iYmFyL2ZvbyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PC9lMz48L2UxPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMyLTEwMi1JQUlLLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMyLTEwMi1JQUlLLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmFkZjllCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYzItMTAyLUlBSUsueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLWJhc2UtYzE0bjExc3BlYzItaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5zZWxmOjppZXRmOmUxIG9yIChwYXJlbnQ6OmlldGY6ZTEgYW5kIG5vdChzZWxmOjp0ZXh0KCkgb3Igc2VsZjo6ZTIpKSBvciBjb3VudChpZCgiRTMiKXxhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpID0gY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+TEJYRVlzN3QvZDhiZ2NONTRQQWZleTN2anpBPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5hcWtBSWwvU2RzK29YYjZVNDdpMTM5bmxTUU09PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMi0xMDItSUJNLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMyLTEwMi1JQk0ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5MDkzYmIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMi0xMDItSUJNLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48ZHM6UmVmZXJlbmNlIFVSST0ieG1sLWJhc2UtYzE0bjExc3BlYzItaW5wdXQueG1sIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjx4ZjpYUGF0aCB4bWxuczp4Zj0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+c2VsZjo6aWV0ZjplMSBvciAocGFyZW50OjppZXRmOmUxIGFuZCBub3Qoc2VsZjo6dGV4dCgpIG9yIHNlbGY6OmUyKSkgb3IgY291bnQoaWQoJ0UzJyl8YW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSA9IGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSk8L3hmOlhQYXRoPjwvZHM6VHJhbnNmb3JtPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzOkRpZ2VzdFZhbHVlPkxCWEVZczd0L2Q4YmdjTjU0UEFmZXkzdmp6QT08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU+NWRuWSs3MldtNzVhcHpVZ0kyUXFmbVNzbUswPTwvZHM6U2lnbmF0dXJlVmFsdWU+PC9kczpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYzItMTAyLU9SQ0wueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYzItMTAyLU9SQ0wueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhMmQ0YjIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMi0xMDItT1JDTC54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1iYXNlLWMxNG4xMXNwZWMyLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+c2VsZjo6aWV0ZjplMSBvciAocGFyZW50OjppZXRmOmUxIGFuZCBub3Qoc2VsZjo6dGV4dCgpIG9yIHNlbGY6OmUyKSkgb3IgY291bnQoaWQoIkUzIil8YW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSA9IGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSk8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPkxCWEVZczd0L2Q4YmdjTjU0UEFmZXkzdmp6QT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj5hcWtBSWwvU2RzK29YYjZVNDdpMTM5bmxTUU09PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMyLTEwMi1TVU4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYzItMTAyLVNVTi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFlNzhiZAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMyLTEwMi1TVU4ueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtYmFzZS1jMTRuMTFzcGVjMi1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPnNlbGY6OmlldGY6ZTEgb3IgKHBhcmVudDo6aWV0ZjplMSBhbmQgbm90KHNlbGY6OnRleHQoKSBvciBzZWxmOjplMikpIG9yIGNvdW50KGlkKCJFMyIpfGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkgPSBjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5MQlhFWXM3dC9kOGJnY041NFBBZmV5M3ZqekE9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPmFxa0FJbC9TZHMrb1hiNlU0N2kxMzlubFNRTT08L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMyLTEwMi1VUEMub3V0cHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYzItMTAyLVVQQy5vdXRwdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVhNjg3NQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMyLTEwMi1VUEMub3V0cHV0CkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIgLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIgLz48UmVmZXJlbmNlIFVSST0ieG1sLWJhc2UtYzE0bjExc3BlYzItaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5zZWxmOjppZXRmOmUxIG9yIChwYXJlbnQ6OmlldGY6ZTEgYW5kIG5vdChzZWxmOjp0ZXh0KCkgb3Igc2VsZjo6ZTIpKSBvciBjb3VudChpZCgiRTMiKXxhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpID0gY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIgLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPjxEaWdlc3RWYWx1ZT5MQlhFWXM3dC9kOGJnY041NFBBZmV5M3ZqekE9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPmFxa0FJbC9TZHMrb1hiNlU0N2kxMzlubFNRTT08L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMyLTEwMi10ZW1wbGF0ZS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMi0xMDItdGVtcGxhdGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzN2ZhMmYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMi0xMDItdGVtcGxhdGUueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1iYXNlLWMxNG4xMXNwZWMyLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+c2VsZjo6aWV0ZjplMSBvciAocGFyZW50OjppZXRmOmUxIGFuZCBub3Qoc2VsZjo6dGV4dCgpIG9yIHNlbGY6OmUyKSkgb3IgY291bnQoaWQoIkUzIil8YW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSA9IGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSk8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPjwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMzLTEwMy1JQUlLLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMzLTEwMy1JQUlLLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWMzMDEyCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYzMtMTAzLUlBSUsueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLWJhc2UtYzE0bjExc3BlYzMtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5zZWxmOjphIG9yIGFuY2VzdG9yLW9yLXNlbGY6OmQ8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPnprd1lGV2Fnb0RYNW52d0FUeU1HdThnY0lUYz08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+WE0wRlZqbGw5WEg1cWlJMFRRTmhUQWlzU044PTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYzMtMTAzLUlCTS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMy0xMDMtSUJNLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTgwNjkyCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYzMtMTAzLUlCTS54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PGRzOlJlZmVyZW5jZSBVUkk9InhtbC1iYXNlLWMxNG4xMXNwZWMzLWlucHV0LnhtbCI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48eGY6WFBhdGggeG1sbnM6eGY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPnNlbGY6OmEgb3IgYW5jZXN0b3Itb3Itc2VsZjo6ZDwveGY6WFBhdGg+PC9kczpUcmFuc2Zvcm0+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+emt3WUZXYWdvRFg1bnZ3QVR5TUd1OGdjSVRjPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT41bkNKZ0hObWpkNCt4VWJZNnVZMmtPYWNQQ1U9PC9kczpTaWduYXR1cmVWYWx1ZT48L2RzOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMy0xMDMtT1JDTC54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMy0xMDMtT1JDTC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWMwNjcyOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMzLTEwMy1PUkNMLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLWJhc2UtYzE0bjExc3BlYzMtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5zZWxmOjphIG9yIGFuY2VzdG9yLW9yLXNlbGY6OmQ8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPnprd1lGV2Fnb0RYNW52d0FUeU1HdThnY0lUYz08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj5YTTBGVmpsbDlYSDVxaUkwVFFOaFRBaXNTTjg9PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMzLTEwMy1TVU4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYzMtMTAzLVNVTi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU0NTRiZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMzLTEwMy1TVU4ueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtYmFzZS1jMTRuMTFzcGVjMy1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPnNlbGY6OmEgb3IgYW5jZXN0b3Itb3Itc2VsZjo6ZDwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+emt3WUZXYWdvRFg1bnZ3QVR5TUd1OGdjSVRjPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5YTTBGVmpsbDlYSDVxaUkwVFFOaFRBaXNTTjg9PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMy0xMDMtVVBDLm91dHB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMzLTEwMy1VUEMub3V0cHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4YzVhNDYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMy0xMDMtVVBDLm91dHB1dApAQCAtMCwwICsxLDIgQEAKKzxhIHhtbDpiYXNlPSJmb28vYmFyIj48ZCB4bWw6YmFzZT0iLi4vLi4veCI+CisgICA8L2Q+PC9hPgpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYzMtMTAzLVVQQy54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1jMTRuMTFzcGVjMy0xMDMtVVBDLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTc3ZGIzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYzMtMTAzLVVQQy54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiIC8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiIC8+PFJlZmVyZW5jZSBVUkk9InhtbC1iYXNlLWMxNG4xMXNwZWMzLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+c2VsZjo6YSBvciBhbmNlc3Rvci1vci1zZWxmOjpkPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIiAvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+PERpZ2VzdFZhbHVlPnprd1lGV2Fnb0RYNW52d0FUeU1HdThnY0lUYz08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+WE0wRlZqbGw5WEg1cWlJMFRRTmhUQWlzU044PTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtYzE0bjExc3BlYzMtMTAzLXRlbXBsYXRlLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMzLTEwMy10ZW1wbGF0ZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM4MTIwZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLWMxNG4xMXNwZWMzLTEwMy10ZW1wbGF0ZS54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLWJhc2UtYzE0bjExc3BlYzMtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5zZWxmOjphIG9yIGFuY2VzdG9yLW9yLXNlbGY6OmQ8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPjwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtMS1JQUlLLXJlZjAuZGVyZWZVUkkgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTEtSUFJSy1yZWYwLmRlcmVmVVJJCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4YzVmMjgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTEtSUFJSy1yZWYwLmRlcmVmVVJJCkBAIC0wLDAgKzEsMjAgQEAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPY3RldFN0cmVhbURhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGlldGY6YzE0bjExWG1sQmFzZURvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9Imh0dHA6Ly94bWxiYXNlLmV4YW1wbGUub3JnL3htbGJhc2UwLyI+CisgIDxpZXRmOmUxIHhtbDpiYXNlPSIveG1sYmFzZTEvIj4KKyAgICA8aWV0ZjplMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTEvIj4KKyAgICAgIDxpZXRmOmUxMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTExLyIvPgorICAgIDwvaWV0ZjplMTE+CisgICAgPGlldGY6ZTEyIGF0PSIyIj4KKyAgICAgIDxpZXRmOmUxMjEgeG1sOmJhc2U9Ii94bWxiYXNlMTIxLyIvPgorICAgIDwvaWV0ZjplMTI+CisgIDwvaWV0ZjplMT4KKyAgPGlldGY6ZTI+CisgICAgPGlldGY6ZTIxIHhtbDpiYXNlPSIveG1sYmFzZTIxLyIvPgorICA8L2lldGY6ZTI+CisgIDxpZXRmOmUzPgorICAgIDxpZXRmOmUzMSBhdD0iMyIvPgorICA8L2lldGY6ZTM+Cis8L2lldGY6YzE0bjExWG1sQmFzZURvYzE+CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTEtSUFJSy1yZWYwLmRpZ2VzdGlucHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0xLUlBSUstcmVmMC5kaWdlc3RpbnB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjAzOTBmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0xLUlBSUstcmVmMC5kaWdlc3RpbnB1dApAQCAtMCwwICsxLDE0IEBACis8aWV0ZjpjMTRuMTFYbWxCYXNlRG9jMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0iaHR0cDovL3htbGJhc2UuZXhhbXBsZS5vcmcveG1sYmFzZTAvIj4KKyAgPGlldGY6ZTEgeG1sOmJhc2U9Ii94bWxiYXNlMS8iPgorICAgIDxpZXRmOmUxMSB4bWw6YmFzZT0iL3htbGJhc2UxMS8iPgorICAgICAgPGlldGY6ZTExMSB4bWw6YmFzZT0iL3htbGJhc2UxMTEvIj48L2lldGY6ZTExMT4KKyAgICA8L2lldGY6ZTExPgorICAgIDxpZXRmOmUxMiBhdD0iMiI+CisgICAgICA8aWV0ZjplMTIxIHhtbDpiYXNlPSIveG1sYmFzZTEyMS8iPjwvaWV0ZjplMTIxPgorICAgIDwvaWV0ZjplMTI+CisgIDwvaWV0ZjplMT4KKyAgCisgIDxpZXRmOmUzPgorICAgIDxpZXRmOmUzMSBhdD0iMyI+PC9pZXRmOmUzMT4KKyAgPC9pZXRmOmUzPgorPC9pZXRmOmMxNG4xMVhtbEJhc2VEb2MxPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtMS1JQUlLLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtMS1JQUlLLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOGI5ZjczCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0xLUlBSUsueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLWJhc2UtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmMxNG4xMVhtbEJhc2VEb2MxIGFuZCBub3QoYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMik8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPnQ3ZDJjTDhJbms4QTVpM2NTOS9idTlNQkJVOD08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+K3RJMWRmVXRBT08wOGJKUmRRRlRxUEJxeU1jPTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0xLUlCTS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTEtSUJNLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjRjZDcyCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0xLUlCTS54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PGRzOlJlZmVyZW5jZSBVUkk9InhtbC1iYXNlLWlucHV0LnhtbCI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48eGY6WFBhdGggeG1sbnM6eGY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6YzE0bjExWG1sQmFzZURvYzEgYW5kIG5vdChhbmNlc3Rvci1vci1zZWxmOjppZXRmOmUyKTwveGY6WFBhdGg+PC9kczpUcmFuc2Zvcm0+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+dDdkMmNMOEluazhBNWkzY1M5L2J1OU1CQlU4PTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5pRCtQZWNCdXE5SDBPZ3AvcVNYZ29YZ2Q5KzQ9PC9kczpTaWduYXR1cmVWYWx1ZT48L2RzOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTEtT1JDTC54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTEtT1JDTC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY1NTQ4MgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtMS1PUkNMLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLWJhc2UtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmMxNG4xMVhtbEJhc2VEb2MxIGFuZCBub3QoYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMik8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPnQ3ZDJjTDhJbms4QTVpM2NTOS9idTlNQkJVOD08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4rdEkxZGZVdEFPTzA4YkpSZFFGVHFQQnF5TWM9PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtMS1TVU4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0xLVNVTi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY0OThhZAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtMS1TVU4ueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtYmFzZS1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6YzE0bjExWG1sQmFzZURvYzEgYW5kIG5vdChhbmNlc3Rvci1vci1zZWxmOjppZXRmOmUyKTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+dDdkMmNMOEluazhBNWkzY1M5L2J1OU1CQlU4PTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT4rdEkxZGZVdEFPTzA4YkpSZFFGVHFQQnF5TWM9PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTEtVVBDLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtMS1VUEMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyZmQ5MDYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTEtVVBDLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIgLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIgLz48UmVmZXJlbmNlIFVSST0ieG1sLWJhc2UtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmMxNG4xMVhtbEJhc2VEb2MxIGFuZCBub3QoYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMik8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiIC8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz48RGlnZXN0VmFsdWU+dDdkMmNMOEluazhBNWkzY1M5L2J1OU1CQlU4PTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT4rdEkxZGZVdEFPTzA4YkpSZFFGVHFQQnF5TWM9PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTEtdGVtcGxhdGUueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0xLXRlbXBsYXRlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGRhYzI2Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0xLXRlbXBsYXRlLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1iYXNlLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjpjMTRuMTFYbWxCYXNlRG9jMSBhbmQgbm90KGFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTIpPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT48L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTItSUFJSy1yZWYwLmRlcmVmVVJJIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0yLUlBSUstcmVmMC5kZXJlZlVSSQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOGM1ZjI4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0yLUlBSUstcmVmMC5kZXJlZlVSSQpAQCAtMCwwICsxLDIwIEBACistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gT2N0ZXRTdHJlYW1EYXRhIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxpZXRmOmMxNG4xMVhtbEJhc2VEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpiYXNlPSJodHRwOi8veG1sYmFzZS5leGFtcGxlLm9yZy94bWxiYXNlMC8iPgorICA8aWV0ZjplMSB4bWw6YmFzZT0iL3htbGJhc2UxLyI+CisgICAgPGlldGY6ZTExIHhtbDpiYXNlPSIveG1sYmFzZTExLyI+CisgICAgICA8aWV0ZjplMTExIHhtbDpiYXNlPSIveG1sYmFzZTExMS8iLz4KKyAgICA8L2lldGY6ZTExPgorICAgIDxpZXRmOmUxMiBhdD0iMiI+CisgICAgICA8aWV0ZjplMTIxIHhtbDpiYXNlPSIveG1sYmFzZTEyMS8iLz4KKyAgICA8L2lldGY6ZTEyPgorICA8L2lldGY6ZTE+CisgIDxpZXRmOmUyPgorICAgIDxpZXRmOmUyMSB4bWw6YmFzZT0iL3htbGJhc2UyMS8iLz4KKyAgPC9pZXRmOmUyPgorICA8aWV0ZjplMz4KKyAgICA8aWV0ZjplMzEgYXQ9IjMiLz4KKyAgPC9pZXRmOmUzPgorPC9pZXRmOmMxNG4xMVhtbEJhc2VEb2MxPgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0yLUlBSUstcmVmMC5kaWdlc3RpbnB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtMi1JQUlLLXJlZjAuZGlnZXN0aW5wdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM4YjA4NwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtMi1JQUlLLXJlZjAuZGlnZXN0aW5wdXQKQEAgLTAsMCArMSw4IEBACis8aWV0ZjplMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0iaHR0cDovL3htbGJhc2UuZXhhbXBsZS5vcmcveG1sYmFzZTEvIj4KKyAgICA8aWV0ZjplMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTEvIj4KKyAgICAgIDxpZXRmOmUxMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTExLyI+PC9pZXRmOmUxMTE+CisgICAgPC9pZXRmOmUxMT4KKyAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgPGlldGY6ZTEyMSB4bWw6YmFzZT0iL3htbGJhc2UxMjEvIj48L2lldGY6ZTEyMT4KKyAgICA8L2lldGY6ZTEyPgorICA8L2lldGY6ZTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0yLUlBSUsueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0yLUlBSUsueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczZmMwNzUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTItSUFJSy54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtYmFzZS1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTE8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPmxqMTNXSDdKZy8rRDRTa1owV1E4UGYvWEU0ND08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+emthelN3ZUNlcUorbG5DREQ2ekRtTkN4VVJnPTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0yLUlCTS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTItSUJNLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjQ4YThiCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0yLUlCTS54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PGRzOlJlZmVyZW5jZSBVUkk9InhtbC1iYXNlLWlucHV0LnhtbCI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48eGY6WFBhdGggeG1sbnM6eGY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTE8L3hmOlhQYXRoPjwvZHM6VHJhbnNmb3JtPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzOkRpZ2VzdFZhbHVlPmxqMTNXSDdKZy8rRDRTa1owV1E4UGYvWEU0ND08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU+Z095TlpzL1U5amRUV3Jrc0wySzhGdExVUGVBPTwvZHM6U2lnbmF0dXJlVmFsdWU+PC9kczpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0yLU9SQ0wueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0yLU9SQ0wueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwYjJmZjYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTItT1JDTC54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1iYXNlLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+bGoxM1dIN0pnLytENFNrWjBXUThQZi9YRTQ0PTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPnprYXpTd2VDZXFKK2xuQ0RENnpEbU5DeFVSZz08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0yLVNVTi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTItU1VOLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmE1NDY1Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0yLVNVTi54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1iYXNlLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+bGoxM1dIN0pnLytENFNrWjBXUThQZi9YRTQ0PTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT56a2F6U3dlQ2VxSitsbkNERDZ6RG1OQ3hVUmc9PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTItVVBDLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtMi1VUEMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkNDA2NjAKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTItVVBDLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIgLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIgLz48UmVmZXJlbmNlIFVSST0ieG1sLWJhc2UtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIiAvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+PERpZ2VzdFZhbHVlPmxqMTNXSDdKZy8rRDRTa1owV1E4UGYvWEU0ND08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+emthelN3ZUNlcUorbG5DREQ2ekRtTkN4VVJnPTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0yLXRlbXBsYXRlLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtMi10ZW1wbGF0ZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM2YmE0YQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtMi10ZW1wbGF0ZS54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtYmFzZS1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTE8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPjwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtMy1JQUlLLXJlZjAuZGVyZWZVUkkgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTMtSUFJSy1yZWYwLmRlcmVmVVJJCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4YzVmMjgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTMtSUFJSy1yZWYwLmRlcmVmVVJJCkBAIC0wLDAgKzEsMjAgQEAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPY3RldFN0cmVhbURhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGlldGY6YzE0bjExWG1sQmFzZURvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9Imh0dHA6Ly94bWxiYXNlLmV4YW1wbGUub3JnL3htbGJhc2UwLyI+CisgIDxpZXRmOmUxIHhtbDpiYXNlPSIveG1sYmFzZTEvIj4KKyAgICA8aWV0ZjplMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTEvIj4KKyAgICAgIDxpZXRmOmUxMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTExLyIvPgorICAgIDwvaWV0ZjplMTE+CisgICAgPGlldGY6ZTEyIGF0PSIyIj4KKyAgICAgIDxpZXRmOmUxMjEgeG1sOmJhc2U9Ii94bWxiYXNlMTIxLyIvPgorICAgIDwvaWV0ZjplMTI+CisgIDwvaWV0ZjplMT4KKyAgPGlldGY6ZTI+CisgICAgPGlldGY6ZTIxIHhtbDpiYXNlPSIveG1sYmFzZTIxLyIvPgorICA8L2lldGY6ZTI+CisgIDxpZXRmOmUzPgorICAgIDxpZXRmOmUzMSBhdD0iMyIvPgorICA8L2lldGY6ZTM+Cis8L2lldGY6YzE0bjExWG1sQmFzZURvYzE+CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTMtSUFJSy1yZWYwLmRpZ2VzdGlucHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0zLUlBSUstcmVmMC5kaWdlc3RpbnB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDNlYmU0Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0zLUlBSUstcmVmMC5kaWdlc3RpbnB1dApAQCAtMCwwICsxLDMgQEAKKzxpZXRmOmUxMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0iaHR0cDovL3htbGJhc2UuZXhhbXBsZS5vcmcveG1sYmFzZTExLyI+CisgICAgICA8aWV0ZjplMTExIHhtbDpiYXNlPSIveG1sYmFzZTExMS8iPjwvaWV0ZjplMTExPgorICAgIDwvaWV0ZjplMTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0zLUlBSUsueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0zLUlBSUsueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkYTY2MWEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTMtSUFJSy54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtYmFzZS1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTExPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT43Q0V0ZWcrZnF0UFROTExUMEhSZ0Q0TkhiTUE9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPkFEWFU2dURwT09mWktpT1BSVEN5Z3lyWGRjYz08L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtMy1JQk0ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0zLUlCTS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRjOGJkYwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtMy1JQk0ueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxkczpSZWZlcmVuY2UgVVJJPSJ4bWwtYmFzZS1pbnB1dC54bWwiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PHhmOlhQYXRoIHhtbG5zOnhmPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMTwveGY6WFBhdGg+PC9kczpUcmFuc2Zvcm0+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+N0NFdGVnK2ZxdFBUTkxMVDBIUmdENE5IYk1BPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5IM2FtcGVGcmhrQURJNkFhaExDU29DdUlDa0E9PC9kczpTaWduYXR1cmVWYWx1ZT48L2RzOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTMtT1JDTC54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTMtT1JDTC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMyZGYyOAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtMy1PUkNMLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLWJhc2UtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+N0NFdGVnK2ZxdFBUTkxMVDBIUmdENE5IYk1BPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPkFEWFU2dURwT09mWktpT1BSVEN5Z3lyWGRjYz08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0zLVNVTi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTMtU1VOLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzg5YWIxCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0zLVNVTi54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1iYXNlLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTE8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPjdDRXRlZytmcXRQVE5MTFQwSFJnRDROSGJNQT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+QURYVTZ1RHBPT2ZaS2lPUFJUQ3lneXJYZGNjPTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0zLVVQQy54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTMtVVBDLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzhiZTNmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0zLVVQQy54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiIC8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiIC8+PFJlZmVyZW5jZSBVUkk9InhtbC1iYXNlLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTE8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiIC8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz48RGlnZXN0VmFsdWU+N0NFdGVnK2ZxdFBUTkxMVDBIUmdENE5IYk1BPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5BRFhVNnVEcE9PZlpLaU9QUlRDeWd5clhkY2M9PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTMtdGVtcGxhdGUueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0zLXRlbXBsYXRlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGM0ZDU5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC0zLXRlbXBsYXRlLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1iYXNlLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTE8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPjwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNC1JQUlLLXJlZjAuZGVyZWZVUkkgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTQtSUFJSy1yZWYwLmRlcmVmVVJJCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4YzVmMjgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTQtSUFJSy1yZWYwLmRlcmVmVVJJCkBAIC0wLDAgKzEsMjAgQEAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPY3RldFN0cmVhbURhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGlldGY6YzE0bjExWG1sQmFzZURvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9Imh0dHA6Ly94bWxiYXNlLmV4YW1wbGUub3JnL3htbGJhc2UwLyI+CisgIDxpZXRmOmUxIHhtbDpiYXNlPSIveG1sYmFzZTEvIj4KKyAgICA8aWV0ZjplMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTEvIj4KKyAgICAgIDxpZXRmOmUxMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTExLyIvPgorICAgIDwvaWV0ZjplMTE+CisgICAgPGlldGY6ZTEyIGF0PSIyIj4KKyAgICAgIDxpZXRmOmUxMjEgeG1sOmJhc2U9Ii94bWxiYXNlMTIxLyIvPgorICAgIDwvaWV0ZjplMTI+CisgIDwvaWV0ZjplMT4KKyAgPGlldGY6ZTI+CisgICAgPGlldGY6ZTIxIHhtbDpiYXNlPSIveG1sYmFzZTIxLyIvPgorICA8L2lldGY6ZTI+CisgIDxpZXRmOmUzPgorICAgIDxpZXRmOmUzMSBhdD0iMyIvPgorICA8L2lldGY6ZTM+Cis8L2lldGY6YzE0bjExWG1sQmFzZURvYzE+CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTQtSUFJSy1yZWYwLmRpZ2VzdGlucHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC00LUlBSUstcmVmMC5kaWdlc3RpbnB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDQ1ODM5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC00LUlBSUstcmVmMC5kaWdlc3RpbnB1dApAQCAtMCwwICsxIEBACis8aWV0ZjplMTExIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpiYXNlPSJodHRwOi8veG1sYmFzZS5leGFtcGxlLm9yZy94bWxiYXNlMTExLyI+PC9pZXRmOmUxMTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC00LUlBSUsueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC00LUlBSUsueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4MjAyMmYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTQtSUFJSy54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtYmFzZS1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTExMTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+Q3JubFpEQS9TcTgvVWVUb1dQUlM4MWIrdDlZPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT4xWkNvWlMrU3NmNjhPMUZjcjZITXdmSERUQlE9PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTQtSUJNLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNC1JQk0ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyNmNjOWYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTQtSUJNLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48ZHM6UmVmZXJlbmNlIFVSST0ieG1sLWJhc2UtaW5wdXQueG1sIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjx4ZjpYUGF0aCB4bWxuczp4Zj0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTExPC94ZjpYUGF0aD48L2RzOlRyYW5zZm9ybT48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5Dcm5sWkRBL1NxOC9VZVRvV1BSUzgxYit0OVk9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPjdjNDFCZzlRLzhwb3FJbU9GbW9Pd3dzV3BHcz08L2RzOlNpZ25hdHVyZVZhbHVlPjwvZHM6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNC1PUkNMLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNC1PUkNMLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTI2YWQzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC00LU9SQ0wueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtYmFzZS1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTExMTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+Q3JubFpEQS9TcTgvVWVUb1dQUlM4MWIrdDlZPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjFaQ29aUytTc2Y2OE8xRmNyNkhNd2ZIRFRCUT08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC00LVNVTi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTQtU1VOLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTNkNWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC00LVNVTi54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1iYXNlLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTExPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5Dcm5sWkRBL1NxOC9VZVRvV1BSUzgxYit0OVk9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPjFaQ29aUytTc2Y2OE8xRmNyNkhNd2ZIRFRCUT08L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNC1VUEMueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC00LVVQQy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWY1NzYxNwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNC1VUEMueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIiAvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIiAvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtYmFzZS1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTExMTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIgLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPjxEaWdlc3RWYWx1ZT5Dcm5sWkRBL1NxOC9VZVRvV1BSUzgxYit0OVk9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPjFaQ29aUytTc2Y2OE8xRmNyNkhNd2ZIRFRCUT08L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNC10ZW1wbGF0ZS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTQtdGVtcGxhdGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjNzQxMjUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTQtdGVtcGxhdGUueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLWJhc2UtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMTE8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPjwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNS1JQUlLLXJlZjAuZGVyZWZVUkkgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTUtSUFJSy1yZWYwLmRlcmVmVVJJCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4YzVmMjgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTUtSUFJSy1yZWYwLmRlcmVmVVJJCkBAIC0wLDAgKzEsMjAgQEAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPY3RldFN0cmVhbURhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGlldGY6YzE0bjExWG1sQmFzZURvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9Imh0dHA6Ly94bWxiYXNlLmV4YW1wbGUub3JnL3htbGJhc2UwLyI+CisgIDxpZXRmOmUxIHhtbDpiYXNlPSIveG1sYmFzZTEvIj4KKyAgICA8aWV0ZjplMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTEvIj4KKyAgICAgIDxpZXRmOmUxMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTExLyIvPgorICAgIDwvaWV0ZjplMTE+CisgICAgPGlldGY6ZTEyIGF0PSIyIj4KKyAgICAgIDxpZXRmOmUxMjEgeG1sOmJhc2U9Ii94bWxiYXNlMTIxLyIvPgorICAgIDwvaWV0ZjplMTI+CisgIDwvaWV0ZjplMT4KKyAgPGlldGY6ZTI+CisgICAgPGlldGY6ZTIxIHhtbDpiYXNlPSIveG1sYmFzZTIxLyIvPgorICA8L2lldGY6ZTI+CisgIDxpZXRmOmUzPgorICAgIDxpZXRmOmUzMSBhdD0iMyIvPgorICA8L2lldGY6ZTM+Cis8L2lldGY6YzE0bjExWG1sQmFzZURvYzE+CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTUtSUFJSy1yZWYwLmRpZ2VzdGlucHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC01LUlBSUstcmVmMC5kaWdlc3RpbnB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWU1MWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC01LUlBSUstcmVmMC5kaWdlc3RpbnB1dApAQCAtMCwwICsxIEBACis8aWV0ZjplMjEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9Imh0dHA6Ly94bWxiYXNlLmV4YW1wbGUub3JnL3htbGJhc2UyMS8iPjwvaWV0ZjplMjE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC01LUlBSUsueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC01LUlBSUsueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZGFlOTUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTUtSUFJSy54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtYmFzZS1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTIxPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5mTDdJZ3pzMExMN2xLSEp6QUpJS1lDcGhZQm89PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPmZjQ0JNNEY5cmo3dXRCY0g2alBPZS9iLzRYST08L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNS1JQk0ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC01LUlCTS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGYwOTIxNwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNS1JQk0ueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxkczpSZWZlcmVuY2UgVVJJPSJ4bWwtYmFzZS1pbnB1dC54bWwiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PHhmOlhQYXRoIHhtbG5zOnhmPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUyMTwveGY6WFBhdGg+PC9kczpUcmFuc2Zvcm0+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+Zkw3SWd6czBMTDdsS0hKekFKSUtZQ3BoWUJvPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5YZ1MxNFNTem41MmYyeWMvTFU1eTM2MTZvcWM9PC9kczpTaWduYXR1cmVWYWx1ZT48L2RzOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTUtT1JDTC54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTUtT1JDTC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ4MzIzZAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNS1PUkNMLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLWJhc2UtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUyMTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+Zkw3SWd6czBMTDdsS0hKekFKSUtZQ3BoWUJvPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPmZjQ0JNNEY5cmo3dXRCY0g2alBPZS9iLzRYST08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC01LVNVTi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTUtU1VOLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTc0ZGE0Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC01LVNVTi54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1iYXNlLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMjE8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPmZMN0lnenMwTEw3bEtISnpBSklLWUNwaFlCbz08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+ZmNDQk00Rjlyajd1dEJjSDZqUE9lL2IvNFhJPTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC01LVVQQy54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTUtVVBDLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMGNiNTljCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC01LVVQQy54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiIC8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiIC8+PFJlZmVyZW5jZSBVUkk9InhtbC1iYXNlLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMjE8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiIC8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz48RGlnZXN0VmFsdWU+Zkw3SWd6czBMTDdsS0hKekFKSUtZQ3BoWUJvPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5mY0NCTTRGOXJqN3V0QmNINmpQT2UvYi80WEk9PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTUtdGVtcGxhdGUueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC01LXRlbXBsYXRlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWMxMzI1Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC01LXRlbXBsYXRlLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1iYXNlLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMjE8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPjwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNi1JQUlLLXJlZjAuZGVyZWZVUkkgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTYtSUFJSy1yZWYwLmRlcmVmVVJJCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4YzVmMjgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTYtSUFJSy1yZWYwLmRlcmVmVVJJCkBAIC0wLDAgKzEsMjAgQEAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPY3RldFN0cmVhbURhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGlldGY6YzE0bjExWG1sQmFzZURvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmJhc2U9Imh0dHA6Ly94bWxiYXNlLmV4YW1wbGUub3JnL3htbGJhc2UwLyI+CisgIDxpZXRmOmUxIHhtbDpiYXNlPSIveG1sYmFzZTEvIj4KKyAgICA8aWV0ZjplMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTEvIj4KKyAgICAgIDxpZXRmOmUxMTEgeG1sOmJhc2U9Ii94bWxiYXNlMTExLyIvPgorICAgIDwvaWV0ZjplMTE+CisgICAgPGlldGY6ZTEyIGF0PSIyIj4KKyAgICAgIDxpZXRmOmUxMjEgeG1sOmJhc2U9Ii94bWxiYXNlMTIxLyIvPgorICAgIDwvaWV0ZjplMTI+CisgIDwvaWV0ZjplMT4KKyAgPGlldGY6ZTI+CisgICAgPGlldGY6ZTIxIHhtbDpiYXNlPSIveG1sYmFzZTIxLyIvPgorICA8L2lldGY6ZTI+CisgIDxpZXRmOmUzPgorICAgIDxpZXRmOmUzMSBhdD0iMyIvPgorICA8L2lldGY6ZTM+Cis8L2lldGY6YzE0bjExWG1sQmFzZURvYzE+CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTYtSUFJSy1yZWYwLmRpZ2VzdGlucHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC02LUlBSUstcmVmMC5kaWdlc3RpbnB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2Y2NjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC02LUlBSUstcmVmMC5kaWdlc3RpbnB1dApAQCAtMCwwICsxLDMgQEAKKzxpZXRmOmUzIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpiYXNlPSJodHRwOi8veG1sYmFzZS5leGFtcGxlLm9yZy94bWxiYXNlMC8iPgorICAgIDxpZXRmOmUzMSBhdD0iMyI+PC9pZXRmOmUzMT4KKyAgPC9pZXRmOmUzPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNi1JQUlLLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNi1JQUlLLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWYyMWNlCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC02LUlBSUsueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLWJhc2UtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUzPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5WNDBCeHBWcnhrR20zR3BlME15aWdzTXhaN0E9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPk1GU1pnWHkxOWMwWE1aeUtNU1hMUUlQakZWUT08L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNi1JQk0ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC02LUlCTS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEwYjcyYQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNi1JQk0ueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxkczpSZWZlcmVuY2UgVVJJPSJ4bWwtYmFzZS1pbnB1dC54bWwiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PHhmOlhQYXRoIHhtbG5zOnhmPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUzPC94ZjpYUGF0aD48L2RzOlRyYW5zZm9ybT48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5WNDBCeHBWcnhrR20zR3BlME15aWdzTXhaN0E9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPmoyS0xPaER6MlljbFkvOWpScS9hWmJ4d1R4az08L2RzOlNpZ25hdHVyZVZhbHVlPjwvZHM6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNi1PUkNMLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNi1PUkNMLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmYzNTUzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC02LU9SQ0wueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtYmFzZS1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTM8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPlY0MEJ4cFZyeGtHbTNHcGUwTXlpZ3NNeFo3QT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj5NRlNaZ1h5MTljMFhNWnlLTVNYTFFJUGpGVlE9PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNi1TVU4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC02LVNVTi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVlYmEzNwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNi1TVU4ueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtYmFzZS1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTM8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPlY0MEJ4cFZyeGtHbTNHcGUwTXlpZ3NNeFo3QT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+TUZTWmdYeTE5YzBYTVp5S01TWExRSVBqRlZRPTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC02LVVQQy54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTYtVVBDLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTRmYWE2Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC02LVVQQy54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiIC8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiIC8+PFJlZmVyZW5jZSBVUkk9InhtbC1iYXNlLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMzwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIgLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPjxEaWdlc3RWYWx1ZT5WNDBCeHBWcnhrR20zR3BlME15aWdzTXhaN0E9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPk1GU1pnWHkxOWMwWE1aeUtNU1hMUUlQakZWUT08L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNi10ZW1wbGF0ZS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTYtdGVtcGxhdGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExNjRjMmEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTYtdGVtcGxhdGUueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLWJhc2UtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUzPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT48L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTctSUFJSy1yZWYwLmRlcmVmVVJJIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC03LUlBSUstcmVmMC5kZXJlZlVSSQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOGM1ZjI4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC03LUlBSUstcmVmMC5kZXJlZlVSSQpAQCAtMCwwICsxLDIwIEBACistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gT2N0ZXRTdHJlYW1EYXRhIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxpZXRmOmMxNG4xMVhtbEJhc2VEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpiYXNlPSJodHRwOi8veG1sYmFzZS5leGFtcGxlLm9yZy94bWxiYXNlMC8iPgorICA8aWV0ZjplMSB4bWw6YmFzZT0iL3htbGJhc2UxLyI+CisgICAgPGlldGY6ZTExIHhtbDpiYXNlPSIveG1sYmFzZTExLyI+CisgICAgICA8aWV0ZjplMTExIHhtbDpiYXNlPSIveG1sYmFzZTExMS8iLz4KKyAgICA8L2lldGY6ZTExPgorICAgIDxpZXRmOmUxMiBhdD0iMiI+CisgICAgICA8aWV0ZjplMTIxIHhtbDpiYXNlPSIveG1sYmFzZTEyMS8iLz4KKyAgICA8L2lldGY6ZTEyPgorICA8L2lldGY6ZTE+CisgIDxpZXRmOmUyPgorICAgIDxpZXRmOmUyMSB4bWw6YmFzZT0iL3htbGJhc2UyMS8iLz4KKyAgPC9pZXRmOmUyPgorICA8aWV0ZjplMz4KKyAgICA8aWV0ZjplMzEgYXQ9IjMiLz4KKyAgPC9pZXRmOmUzPgorPC9pZXRmOmMxNG4xMVhtbEJhc2VEb2MxPgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC03LUlBSUstcmVmMC5kaWdlc3RpbnB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNy1JQUlLLXJlZjAuZGlnZXN0aW5wdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIyY2ZlMAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNy1JQUlLLXJlZjAuZGlnZXN0aW5wdXQKQEAgLTAsMCArMSw3IEBACis8aWV0ZjpjMTRuMTFYbWxCYXNlRG9jMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0iaHR0cDovL3htbGJhc2UuZXhhbXBsZS5vcmcveG1sYmFzZTAvIj4KKyAgCisgIAorICA8aWV0ZjplMz4KKyAgICA8aWV0ZjplMzEgYXQ9IjMiPjwvaWV0ZjplMzE+CisgIDwvaWV0ZjplMz4KKzwvaWV0ZjpjMTRuMTFYbWxCYXNlRG9jMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTctSUFJSy54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTctSUFJSy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQyMTc2YQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNy1JQUlLLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1iYXNlLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjpjMTRuMTFYbWxCYXNlRG9jMSBhbmQgbm90KGFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTEgb3IgYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMik8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPk1zSG1VY2F4c0dxaFdkeEg4eG13ZUk2YkU3OD08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+ZUJwU2J2MUd5eHlxaGk0bjhublNwRUFnYmQ4PTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC03LUlCTS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTctSUJNLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZmI2ZGFmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC03LUlCTS54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PGRzOlJlZmVyZW5jZSBVUkk9InhtbC1iYXNlLWlucHV0LnhtbCI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48eGY6WFBhdGggeG1sbnM6eGY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6YzE0bjExWG1sQmFzZURvYzEgYW5kIG5vdChhbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxIG9yIGFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTIpPC94ZjpYUGF0aD48L2RzOlRyYW5zZm9ybT48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5Nc0htVWNheHNHcWhXZHhIOHhtd2VJNmJFNzg9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPnJBTktUOFRjYTFmVDREc3BRWEJHcHRUUjBNUT08L2RzOlNpZ25hdHVyZVZhbHVlPjwvZHM6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNy1PUkNMLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNy1PUkNMLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzA3ZGNiCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGJhc2UtcHJvcC03LU9SQ0wueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtYmFzZS1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6YzE0bjExWG1sQmFzZURvYzEgYW5kIG5vdChhbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxIG9yIGFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTIpPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5Nc0htVWNheHNHcWhXZHhIOHhtd2VJNmJFNzg9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWUgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+ZUJwU2J2MUd5eHlxaGk0bjhublNwRUFnYmQ4PTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTctU1VOLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNy1TVU4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3OGY1MTUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTctU1VOLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLWJhc2UtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmMxNG4xMVhtbEJhc2VEb2MxIGFuZCBub3QoYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMSBvciBhbmNlc3Rvci1vci1zZWxmOjppZXRmOmUyKTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+TXNIbVVjYXhzR3FoV2R4SDh4bXdlSTZiRTc4PTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5lQnBTYnYxR3l4eXFoaTRuOG5uU3BFQWdiZDg9PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTctVVBDLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNy1VUEMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwNjM2ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTctVVBDLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIgLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIgLz48UmVmZXJlbmNlIFVSST0ieG1sLWJhc2UtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmMxNG4xMVhtbEJhc2VEb2MxIGFuZCBub3QoYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMSBvciBhbmNlc3Rvci1vci1zZWxmOjppZXRmOmUyKTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIgLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPjxEaWdlc3RWYWx1ZT5Nc0htVWNheHNHcWhXZHhIOHhtd2VJNmJFNzg9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPmVCcFNidjFHeXh5cWhpNG44bm5TcEVBZ2JkOD08L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxiYXNlLXByb3AtNy10ZW1wbGF0ZS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTctdGVtcGxhdGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlYWQ1NzIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sYmFzZS1wcm9wLTctdGVtcGxhdGUueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLWJhc2UtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmMxNG4xMVhtbEJhc2VEb2MxIGFuZCBub3QoYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMSBvciBhbmNlc3Rvci1vci1zZWxmOjppZXRmOmUyKTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGlkLTEtSUFJSy1yZWYwLmRlcmVmVVJJIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGlkLTEtSUFJSy1yZWYwLmRlcmVmVVJJCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhMjdkMjcKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1saWQtMS1JQUlLLXJlZjAuZGVyZWZVUkkKQEAgLTAsMCArMSwxNyBAQAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE9jdGV0U3RyZWFtRGF0YSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8aWV0ZjpjMTRuMTFYbWxJZERvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgCit4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKyAgIDxpZXRmOmUxIHhtbDppZD0iSWRJbnRlcm9wIj4KKyAgICAgIDxpZXRmOmUxMT4KKyAgICAgICAgIDxpZXRmOmUxMTEgLz4KKyAgICAgIDwvaWV0ZjplMTE+CisgICAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgICAgPGlldGY6ZTEyMSAvPgorICAgICAgPC9pZXRmOmUxMj4KKyAgIDwvaWV0ZjplMT4KKyAgIDxpZXRmOmUyID4KKyAgICAgIDxpZXRmOmUyMSAvPgorICAgPC9pZXRmOmUyPiAgCis8L2lldGY6YzE0bjExWG1sSWREb2MxPgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxpZC0xLUlBSUstcmVmMC5kaWdlc3RpbnB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxpZC0xLUlBSUstcmVmMC5kaWdlc3RpbnB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjVmZTZmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGlkLTEtSUFJSy1yZWYwLmRpZ2VzdGlucHV0CkBAIC0wLDAgKzEsOCBAQAorPGlldGY6ZTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmlkPSJJZEludGVyb3AiPgorICAgICAgPGlldGY6ZTExPgorICAgICAgICAgPGlldGY6ZTExMT48L2lldGY6ZTExMT4KKyAgICAgIDwvaWV0ZjplMTE+CisgICAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgICAgPGlldGY6ZTEyMT48L2lldGY6ZTEyMT4KKyAgICAgIDwvaWV0ZjplMTI+CisgICA8L2lldGY6ZTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGlkLTEtSUFJSy54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1saWQtMS1JQUlLLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTdhOTk2Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGlkLTEtSUFJSy54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtaWQtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5rNlFIMlZvcFVOcFBZNXBzaXNyc3JXL1B5L1k9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPlhDUk1vVUV1MjBkY2dVUjBCTDNQVU1SQnk5ND08L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxpZC0xLUlCTS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1saWQtMS1JQk0ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlNzQ3M2UKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1saWQtMS1JQk0ueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxkczpSZWZlcmVuY2UgVVJJPSJ4bWwtaWQtaW5wdXQueG1sIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjx4ZjpYUGF0aCB4bWxuczp4Zj0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTwveGY6WFBhdGg+PC9kczpUcmFuc2Zvcm0+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+azZRSDJWb3BVTnBQWTVwc2lzcnNyVy9QeS9ZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5HN3NBOUZqMDcxQUhBQUQxSStrOHZVdXEvRGs9PC9kczpTaWduYXR1cmVWYWx1ZT48L2RzOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1saWQtMS1PUkNMLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxpZC0xLU9SQ0wueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MTgwY2EKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1saWQtMS1PUkNMLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLWlkLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+azZRSDJWb3BVTnBQWTVwc2lzcnNyVy9QeS9ZPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPlhDUk1vVUV1MjBkY2dVUjBCTDNQVU1SQnk5ND08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGlkLTEtU1VOLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxpZC0xLVNVTi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZjNWFmYgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxpZC0xLVNVTi54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1pZC1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTE8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPms2UUgyVm9wVU5wUFk1cHNpc3JzclcvUHkvWT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+WENSTW9VRXUyMGRjZ1VSMEJMM1BVTVJCeTk0PTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGlkLTEtVVBDLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxpZC0xLVVQQy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EwOTk0MQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxpZC0xLVVQQy54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiIC8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiIC8+PFJlZmVyZW5jZSBVUkk9InhtbC1pZC1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTE8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiIC8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz48RGlnZXN0VmFsdWU+azZRSDJWb3BVTnBQWTVwc2lzcnNyVy9QeS9ZPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5YQ1JNb1VFdTIwZGNnVVIwQkwzUFVNUkJ5OTQ9PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1saWQtMS10ZW1wbGF0ZS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1saWQtMS10ZW1wbGF0ZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ0MmI0OAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxpZC0xLXRlbXBsYXRlLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1pZC1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTE8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPjwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxpZC0yLUlBSUstcmVmMC5kZXJlZlVSSSBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxpZC0yLUlBSUstcmVmMC5kZXJlZlVSSQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTI3ZDI3Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGlkLTItSUFJSy1yZWYwLmRlcmVmVVJJCkBAIC0wLDAgKzEsMTcgQEAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPY3RldFN0cmVhbURhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGlldGY6YzE0bjExWG1sSWREb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIAoreG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisgICA8aWV0ZjplMSB4bWw6aWQ9IklkSW50ZXJvcCI+CisgICAgICA8aWV0ZjplMTE+CisgICAgICAgICA8aWV0ZjplMTExIC8+CisgICAgICA8L2lldGY6ZTExPgorICAgICAgPGlldGY6ZTEyIGF0PSIyIj4KKyAgICAgICAgIDxpZXRmOmUxMjEgLz4KKyAgICAgIDwvaWV0ZjplMTI+CisgICA8L2lldGY6ZTE+CisgICA8aWV0ZjplMiA+CisgICAgICA8aWV0ZjplMjEgLz4KKyAgIDwvaWV0ZjplMj4gIAorPC9pZXRmOmMxNG4xMVhtbElkRG9jMT4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1saWQtMi1JQUlLLXJlZjAuZGlnZXN0aW5wdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1saWQtMi1JQUlLLXJlZjAuZGlnZXN0aW5wdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODUwMjBiOAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxpZC0yLUlBSUstcmVmMC5kaWdlc3RpbnB1dApAQCAtMCwwICsxLDUgQEAKKzxpZXRmOmUxMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKyAgICAgICAgIDxpZXRmOmUxMTE+PC9pZXRmOmUxMTE+CisgICAgICA8L2lldGY6ZTExPjxpZXRmOmUxMiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiBhdD0iMiI+CisgICAgICAgICA8aWV0ZjplMTIxPjwvaWV0ZjplMTIxPgorICAgICAgPC9pZXRmOmUxMj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1saWQtMi1JQUlLLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxpZC0yLUlBSUsueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5OGY3N2YKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1saWQtMi1JQUlLLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1pZC1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTExIG9yIGFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTEyPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT45Wm5IZjA0YmRvK1JGVG96UGVuMjVvTEg0ekE9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPld5U1lFTFp6d0tIVVdVaDA3MS9lWm80alNUQT08L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxpZC0yLUlCTS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1saWQtMi1JQk0ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxMTFkYjAKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1saWQtMi1JQk0ueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxkczpSZWZlcmVuY2UgVVJJPSJ4bWwtaWQtaW5wdXQueG1sIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjx4ZjpYUGF0aCB4bWxuczp4Zj0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTEgb3IgYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTI8L3hmOlhQYXRoPjwvZHM6VHJhbnNmb3JtPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzOkRpZ2VzdFZhbHVlPjlabkhmMDRiZG8rUkZUb3pQZW4yNW9MSDR6QT08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU+SE1yQ0FjRHBTS0ZQZ1NTbGhoTHJUdTl0Rm84PTwvZHM6U2lnbmF0dXJlVmFsdWU+PC9kczpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGlkLTItT1JDTC54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1saWQtMi1PUkNMLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDgzNjBlCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGlkLTItT1JDTC54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1pZC1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTExIG9yIGFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTEyPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT45Wm5IZjA0YmRvK1JGVG96UGVuMjVvTEg0ekE9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWUgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+V3lTWUVMWnp3S0hVV1VoMDcxL2VabzRqU1RBPTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1saWQtMi1TVU4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGlkLTItU1VOLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTAyMjVmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGlkLTItU1VOLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLWlkLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTEgb3IgYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTI8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPjlabkhmMDRiZG8rUkZUb3pQZW4yNW9MSDR6QT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+V3lTWUVMWnp3S0hVV1VoMDcxL2VabzRqU1RBPTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGlkLTItVVBDLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxpZC0yLVVQQy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQxNDY3MgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxpZC0yLVVQQy54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiIC8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiIC8+PFJlZmVyZW5jZSBVUkk9InhtbC1pZC1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTExIG9yIGFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTEyPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIiAvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+PERpZ2VzdFZhbHVlPjlabkhmMDRiZG8rUkZUb3pQZW4yNW9MSDR6QT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+V3lTWUVMWnp3S0hVV1VoMDcxL2VabzRqU1RBPTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGlkLTItdGVtcGxhdGUueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGlkLTItdGVtcGxhdGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1MTY1NTEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1saWQtMi10ZW1wbGF0ZS54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtaWQtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMSBvciBhbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMjwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctMS1JQUlLLXJlZjAuZGVyZWZVUkkgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0xLUlBSUstcmVmMC5kZXJlZlVSSQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDA1ZmI4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctMS1JQUlLLXJlZjAuZGVyZWZVUkkKQEAgLTAsMCArMSwxNyBAQAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE9jdGV0U3RyZWFtRGF0YSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8aWV0ZjpjMTRuMTFYbWxsYW5nIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIAoreG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisgICA8aWV0ZjplMSB4bWw6bGFuZz0iRU4iPgorICAgICAgPGlldGY6ZTExPgorICAgICAgICAgPGlldGY6ZTExMSAvPgorICAgICAgPC9pZXRmOmUxMT4KKyAgICAgIDxpZXRmOmUxMiBhdD0iMiI+CisgICAgICAgICA8aWV0ZjplMTIxIC8+CisgICAgICA8L2lldGY6ZTEyPgorICAgPC9pZXRmOmUxPgorICAgPGlldGY6ZTIgPgorICAgICAgPGlldGY6ZTIxIC8+CisgICA8L2lldGY6ZTI+Cis8L2lldGY6YzE0bjExWG1sbGFuZz4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0xLUlBSUstcmVmMC5kaWdlc3RpbnB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTEtSUFJSy1yZWYwLmRpZ2VzdGlucHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMTZkY2UKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0xLUlBSUstcmVmMC5kaWdlc3RpbnB1dApAQCAtMCwwICsxLDggQEAKKzxpZXRmOmUxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpsYW5nPSJFTiI+CisgICAgICA8aWV0ZjplMTE+CisgICAgICAgICA8aWV0ZjplMTExPjwvaWV0ZjplMTExPgorICAgICAgPC9pZXRmOmUxMT4KKyAgICAgIDxpZXRmOmUxMiBhdD0iMiI+CisgICAgICAgICA8aWV0ZjplMTIxPjwvaWV0ZjplMTIxPgorICAgICAgPC9pZXRmOmUxMj4KKyAgIDwvaWV0ZjplMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0xLUlBSUsueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctMS1JQUlLLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2I4NTA4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctMS1JQUlLLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1sYW5nLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+ZzRHYTFPNjFRaTdDT0V0VWYxOGpnaUpvR0JFPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT55MnFuUnBsVTBPM3RJSDFLcHczRkhXeHFtYjA9PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0xLUlCTS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0xLUlCTS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThkN2EzZAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTEtSUJNLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48ZHM6UmVmZXJlbmNlIFVSST0ieG1sLWxhbmctaW5wdXQueG1sIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjx4ZjpYUGF0aCB4bWxuczp4Zj0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTwveGY6WFBhdGg+PC9kczpUcmFuc2Zvcm0+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+ZzRHYTFPNjFRaTdDT0V0VWYxOGpnaUpvR0JFPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5QdlhBNTJ4QVBTOXhOWk1uZVp0MStDUUpQdFk9PC9kczpTaWduYXR1cmVWYWx1ZT48L2RzOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0xLU9SQ0wueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctMS1PUkNMLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjg5YjI2Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctMS1PUkNMLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLWxhbmctaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5nNEdhMU82MVFpN0NPRXRVZjE4amdpSm9HQkU9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWUgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+eTJxblJwbFUwTzN0SUgxS3B3M0ZIV3hxbWIwPTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0xLVNVTi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0xLVNVTi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI0MmM5MgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTEtU1VOLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLWxhbmctaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5nNEdhMU82MVFpN0NPRXRVZjE4amdpSm9HQkU9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPnkycW5ScGxVME8zdElIMUtwdzNGSFd4cW1iMD08L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTEtVVBDLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTEtVVBDLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWIwYzhhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctMS1VUEMueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIiAvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIiAvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtbGFuZy1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTE8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiIC8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz48RGlnZXN0VmFsdWU+ZzRHYTFPNjFRaTdDT0V0VWYxOGpnaUpvR0JFPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT55MnFuUnBsVTBPM3RJSDFLcHczRkhXeHFtYjA9PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0xLXBvc2l0aXZlLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTEtcG9zaXRpdmUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZDAwNmMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0xLXBvc2l0aXZlLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDcvQ1IteG1sLWMxNG4xMS0yMDA3MDYyMSNXaXRoQ29tbWVudHMiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1sYW5nLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDcvQ1IteG1sLWMxNG4xMS0yMDA3MDYyMSNXaXRoQ29tbWVudHMiPjwvVHJhbnNmb3JtPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctMS10ZW1wbGF0ZS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0xLXRlbXBsYXRlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGQ1YmFiCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctMS10ZW1wbGF0ZS54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtbGFuZy1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTE8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPjwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTItSUFJSy1yZWYwLmRlcmVmVVJJIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctMi1JQUlLLXJlZjAuZGVyZWZVUkkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQwNWZiOAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTItSUFJSy1yZWYwLmRlcmVmVVJJCkBAIC0wLDAgKzEsMTcgQEAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPY3RldFN0cmVhbURhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGlldGY6YzE0bjExWG1sbGFuZyB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiAKK3htbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPgorICAgPGlldGY6ZTEgeG1sOmxhbmc9IkVOIj4KKyAgICAgIDxpZXRmOmUxMT4KKyAgICAgICAgIDxpZXRmOmUxMTEgLz4KKyAgICAgIDwvaWV0ZjplMTE+CisgICAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgICAgPGlldGY6ZTEyMSAvPgorICAgICAgPC9pZXRmOmUxMj4KKyAgIDwvaWV0ZjplMT4KKyAgIDxpZXRmOmUyID4KKyAgICAgIDxpZXRmOmUyMSAvPgorICAgPC9pZXRmOmUyPgorPC9pZXRmOmMxNG4xMVhtbGxhbmc+CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctMi1JQUlLLXJlZjAuZGlnZXN0aW5wdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0yLUlBSUstcmVmMC5kaWdlc3RpbnB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2E2N2IzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctMi1JQUlLLXJlZjAuZGlnZXN0aW5wdXQKQEAgLTAsMCArMSwzIEBACis8aWV0ZjplMiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKyAgICAgIDxpZXRmOmUyMT48L2lldGY6ZTIxPgorICAgPC9pZXRmOmUyPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTItSUFJSy54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0yLUlBSUsueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MTVlMWIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0yLUlBSUsueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLWxhbmctaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUyPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5saWdwNUxvdlhpQmJ1UDg3VlFzdUZ4SFpmOVk9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPlhqS1dIb2E5MFdzbC9MUDJtZ0h0cWRua2labz08L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTItSUJNLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTItSUJNLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTExODA2Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctMi1JQk0ueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxkczpSZWZlcmVuY2UgVVJJPSJ4bWwtbGFuZy1pbnB1dC54bWwiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PHhmOlhQYXRoIHhtbG5zOnhmPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUyPC94ZjpYUGF0aD48L2RzOlRyYW5zZm9ybT48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5saWdwNUxvdlhpQmJ1UDg3VlFzdUZ4SFpmOVk9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPmo2QWs3anJ2THMvcVhKa3BwQ0ViM3owdGdpQT08L2RzOlNpZ25hdHVyZVZhbHVlPjwvZHM6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTItT1JDTC54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0yLU9SQ0wueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5MTEzZTQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0yLU9SQ0wueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtbGFuZy1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTI8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPmxpZ3A1TG92WGlCYnVQODdWUXN1RnhIWmY5WT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj5YaktXSG9hOTBXc2wvTFAybWdIdHFkbmtpWm89PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTItU1VOLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTItU1VOLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzdlNDFjCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctMi1TVU4ueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtbGFuZy1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTI8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPmxpZ3A1TG92WGlCYnVQODdWUXN1RnhIWmY5WT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+WGpLV0hvYTkwV3NsL0xQMm1nSHRxZG5raVpvPTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctMi1VUEMueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctMi1VUEMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2MTdmMDYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0yLVVQQy54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiIC8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiIC8+PFJlZmVyZW5jZSBVUkk9InhtbC1sYW5nLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMjwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIgLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPjxEaWdlc3RWYWx1ZT5saWdwNUxvdlhpQmJ1UDg3VlFzdUZ4SFpmOVk9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPlhqS1dIb2E5MFdzbC9MUDJtZ0h0cWRua2labz08L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTItdGVtcGxhdGUueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctMi10ZW1wbGF0ZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE1NmZlMgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTItdGVtcGxhdGUueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLWxhbmctaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUyPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT48L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0zLUlBSUstcmVmMC5kZXJlZlVSSSBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTMtSUFJSy1yZWYwLmRlcmVmVVJJCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkMDVmYjgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0zLUlBSUstcmVmMC5kZXJlZlVSSQpAQCAtMCwwICsxLDE3IEBACistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gT2N0ZXRTdHJlYW1EYXRhIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxpZXRmOmMxNG4xMVhtbGxhbmcgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgCit4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKyAgIDxpZXRmOmUxIHhtbDpsYW5nPSJFTiI+CisgICAgICA8aWV0ZjplMTE+CisgICAgICAgICA8aWV0ZjplMTExIC8+CisgICAgICA8L2lldGY6ZTExPgorICAgICAgPGlldGY6ZTEyIGF0PSIyIj4KKyAgICAgICAgIDxpZXRmOmUxMjEgLz4KKyAgICAgIDwvaWV0ZjplMTI+CisgICA8L2lldGY6ZTE+CisgICA8aWV0ZjplMiA+CisgICAgICA8aWV0ZjplMjEgLz4KKyAgIDwvaWV0ZjplMj4KKzwvaWV0ZjpjMTRuMTFYbWxsYW5nPgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTMtSUFJSy1yZWYwLmRpZ2VzdGlucHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctMy1JQUlLLXJlZjAuZGlnZXN0aW5wdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVlOWExOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTMtSUFJSy1yZWYwLmRpZ2VzdGlucHV0CkBAIC0wLDAgKzEsMyBAQAorPGlldGY6ZTExIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpsYW5nPSJFTiI+CisgICAgICAgICA8aWV0ZjplMTExPjwvaWV0ZjplMTExPgorICAgICAgPC9pZXRmOmUxMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0zLUlBSUsueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctMy1JQUlLLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjA3MWZhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctMy1JQUlLLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1sYW5nLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTE8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPnZUVUdHV0dPcGNHYkNZdXhNYkNRSXo0bWJBbz08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+Z0hiNWM2ZmtqUTJ5b2FwNWpkeXV3RWFKRDNJPTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctMy1JQk0ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctMy1JQk0ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYmY4ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0zLUlCTS54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PGRzOlJlZmVyZW5jZSBVUkk9InhtbC1sYW5nLWlucHV0LnhtbCI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48eGY6WFBhdGggeG1sbnM6eGY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTExPC94ZjpYUGF0aD48L2RzOlRyYW5zZm9ybT48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT52VFVHR1dHT3BjR2JDWXV4TWJDUUl6NG1iQW89PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPkhnRGNQaTRVQVlQQmtGTE5WaDlsV1ltODJTMD08L2RzOlNpZ25hdHVyZVZhbHVlPjwvZHM6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTMtT1JDTC54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0zLU9SQ0wueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4MjZhNTUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0zLU9SQ0wueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtbGFuZy1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTExPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT52VFVHR1dHT3BjR2JDWXV4TWJDUUl6NG1iQW89PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWUgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+Z0hiNWM2ZmtqUTJ5b2FwNWpkeXV3RWFKRDNJPTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0zLVNVTi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0zLVNVTi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTljMjMwYQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTMtU1VOLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLWxhbmctaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+dlRVR0dXR09wY0diQ1l1eE1iQ1FJejRtYkFvPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5nSGI1YzZma2pRMnlvYXA1amR5dXdFYUpEM0k9PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0zLVVQQy54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy0zLVVQQy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI4ZDg0NwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTMtVVBDLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIgLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIgLz48UmVmZXJlbmNlIFVSST0ieG1sLWxhbmctaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIgLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPjxEaWdlc3RWYWx1ZT52VFVHR1dHT3BjR2JDWXV4TWJDUUl6NG1iQW89PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPmdIYjVjNmZralEyeW9hcDVqZHl1d0VhSkQzST08L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTMtdGVtcGxhdGUueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctMy10ZW1wbGF0ZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdjOTVkOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTMtdGVtcGxhdGUueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLWxhbmctaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctNC1JQUlLLXJlZjAuZGVyZWZVUkkgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy00LUlBSUstcmVmMC5kZXJlZlVSSQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDA1ZmI4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctNC1JQUlLLXJlZjAuZGVyZWZVUkkKQEAgLTAsMCArMSwxNyBAQAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE9jdGV0U3RyZWFtRGF0YSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8aWV0ZjpjMTRuMTFYbWxsYW5nIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIAoreG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisgICA8aWV0ZjplMSB4bWw6bGFuZz0iRU4iPgorICAgICAgPGlldGY6ZTExPgorICAgICAgICAgPGlldGY6ZTExMSAvPgorICAgICAgPC9pZXRmOmUxMT4KKyAgICAgIDxpZXRmOmUxMiBhdD0iMiI+CisgICAgICAgICA8aWV0ZjplMTIxIC8+CisgICAgICA8L2lldGY6ZTEyPgorICAgPC9pZXRmOmUxPgorICAgPGlldGY6ZTIgPgorICAgICAgPGlldGY6ZTIxIC8+CisgICA8L2lldGY6ZTI+Cis8L2lldGY6YzE0bjExWG1sbGFuZz4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy00LUlBSUstcmVmMC5kaWdlc3RpbnB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTQtSUFJSy1yZWYwLmRpZ2VzdGlucHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMDY0MDkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy00LUlBSUstcmVmMC5kaWdlc3RpbnB1dApAQCAtMCwwICsxLDUgQEAKKzxpZXRmOmUxMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6bGFuZz0iRU4iPgorICAgICAgICAgPGlldGY6ZTExMT48L2lldGY6ZTExMT4KKyAgICAgIDwvaWV0ZjplMTE+PGlldGY6ZTEyIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIGF0PSIyIiB4bWw6bGFuZz0iRU4iPgorICAgICAgICAgPGlldGY6ZTEyMT48L2lldGY6ZTEyMT4KKyAgICAgIDwvaWV0ZjplMTI+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctNC1JQUlLLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTQtSUFJSy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdlOTgxOAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTQtSUFJSy54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtbGFuZy1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTExIG9yIGFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTEyPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5rTTlRL1Z5TmZaVU04cnIybzRSa2VnRFlQTjA9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPjdJRjZiVUlPU1JCc1BIbVZlaGd2TDQ0bFB6UT08L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTQtSUJNLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTQtSUJNLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTNjODE2Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctNC1JQk0ueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxkczpSZWZlcmVuY2UgVVJJPSJ4bWwtbGFuZy1pbnB1dC54bWwiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PHhmOlhQYXRoIHhtbG5zOnhmPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMSBvciBhbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMjwveGY6WFBhdGg+PC9kczpUcmFuc2Zvcm0+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+a005US9WeU5mWlVNOHJyMm80UmtlZ0RZUE4wPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5GaFNEZWowMTdaZnFSbGVYVmp2Q1NUYTE2R0U9PC9kczpTaWduYXR1cmVWYWx1ZT48L2RzOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy00LU9SQ0wueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctNC1PUkNMLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTE2ODMzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctNC1PUkNMLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLWxhbmctaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMSBvciBhbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMjwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+a005US9WeU5mWlVNOHJyMm80UmtlZ0RZUE4wPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjdJRjZiVUlPU1JCc1BIbVZlaGd2TDQ0bFB6UT08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctNC1TVU4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctNC1TVU4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MjdhMzgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy00LVNVTi54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1sYW5nLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTEgb3IgYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTI8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPmtNOVEvVnlOZlpVTThycjJvNFJrZWdEWVBOMD08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+N0lGNmJVSU9TUkJzUEhtVmVoZ3ZMNDRsUHpRPTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctNC1VUEMueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbGxhbmctNC1VUEMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NDAwYTUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy00LVVQQy54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiIC8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiIC8+PFJlZmVyZW5jZSBVUkk9InhtbC1sYW5nLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTEgb3IgYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTI8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiIC8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz48RGlnZXN0VmFsdWU+a005US9WeU5mWlVNOHJyMm80UmtlZ0RZUE4wPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT43SUY2YlVJT1NSQnNQSG1WZWhndkw0NGxQelE9PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy00LXRlbXBsYXRlLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxsYW5nLTQtdGVtcGxhdGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlYTViNGYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sbGFuZy00LXRlbXBsYXRlLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1sYW5nLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTEgb3IgYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTI8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPjwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS0xLUlBSUstcmVmMC5kZXJlZlVSSSBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS0xLUlBSUstcmVmMC5kZXJlZlVSSQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjE1ODNhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTEtSUFJSy1yZWYwLmRlcmVmVVJJCkBAIC0wLDAgKzEsMTcgQEAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPY3RldFN0cmVhbURhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGlldGY6YzE0bjExWG1sU3BhY2VEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIAoreG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisgICA8aWV0ZjplMSB4bWw6c3BhY2U9InRydWUiPgorICAgICAgPGlldGY6ZTExPgorICAgICAgICAgPGlldGY6ZTExMSAvPgorICAgICAgPC9pZXRmOmUxMT4KKyAgICAgIDxpZXRmOmUxMiBhdD0iMiI+CisgICAgICAgICA8aWV0ZjplMTIxIC8+CisgICAgICA8L2lldGY6ZTEyPgorICAgPC9pZXRmOmUxPgorICAgPGlldGY6ZTIgPgorICAgICAgPGlldGY6ZTIxIC8+CisgICA8L2lldGY6ZTI+Cis8L2lldGY6YzE0bjExWG1sU3BhY2VEb2MxPgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS0xLUlBSUstcmVmMC5kaWdlc3RpbnB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS0xLUlBSUstcmVmMC5kaWdlc3RpbnB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDkzMDZmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTEtSUFJSy1yZWYwLmRpZ2VzdGlucHV0CkBAIC0wLDAgKzEsOCBAQAorPGlldGY6ZTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOnNwYWNlPSJ0cnVlIj4KKyAgICAgIDxpZXRmOmUxMT4KKyAgICAgICAgIDxpZXRmOmUxMTE+PC9pZXRmOmUxMTE+CisgICAgICA8L2lldGY6ZTExPgorICAgICAgPGlldGY6ZTEyIGF0PSIyIj4KKyAgICAgICAgIDxpZXRmOmUxMjE+PC9pZXRmOmUxMjE+CisgICAgICA8L2lldGY6ZTEyPgorICAgPC9pZXRmOmUxPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS0xLUlBSUsueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTEtSUFJSy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjAyOTU1NAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS0xLUlBSUsueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLXNwYWNlLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+RnV6TDFSdVVNOXcvblI0aEtYTnpzSXBxYWs4PTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT45ZXhrQXgzM0w5VFIzUkZSMHpDMmlaSDhTaGM9PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtMS1JQk0ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTEtSUJNLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzE1NDFiCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTEtSUJNLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48ZHM6UmVmZXJlbmNlIFVSST0ieG1sLXNwYWNlLWlucHV0LnhtbCI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48eGY6WFBhdGggeG1sbnM6eGY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTE8L3hmOlhQYXRoPjwvZHM6VHJhbnNmb3JtPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzOkRpZ2VzdFZhbHVlPkZ1ekwxUnVVTTl3L25SNGhLWE56c0lwcWFrOD08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU+SjRtWldWcUxERzZrclJ0RlZNTjYyZUh4azdzPTwvZHM6U2lnbmF0dXJlVmFsdWU+PC9kczpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTEtT1JDTC54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtMS1PUkNMLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWUyMjFkCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTEtT1JDTC54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1zcGFjZS1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTE8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPkZ1ekwxUnVVTTl3L25SNGhLWE56c0lwcWFrOD08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj45ZXhrQXgzM0w5VFIzUkZSMHpDMmlaSDhTaGM9PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS0xLVNVTi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtMS1TVU4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3NDBmZWMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtMS1TVU4ueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtc3BhY2UtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5GdXpMMVJ1VU05dy9uUjRoS1hOenNJcHFhazg9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPjlleGtBeDMzTDlUUjNSRlIwekMyaVpIOFNoYz08L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS0xLVVQQy54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtMS1VUEMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1NmE3MGIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtMS1VUEMueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIiAvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIiAvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtc3BhY2UtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIiAvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+PERpZ2VzdFZhbHVlPkZ1ekwxUnVVTTl3L25SNGhLWE56c0lwcWFrOD08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+OWV4a0F4MzNMOVRSM1JGUjB6QzJpWkg4U2hjPTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTEtdGVtcGxhdGUueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTEtdGVtcGxhdGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmZThiZGIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtMS10ZW1wbGF0ZS54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtc3BhY2UtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT48L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtMi1JQUlLLXJlZjAuZGVyZWZVUkkgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtMi1JQUlLLXJlZjAuZGVyZWZVUkkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWYxNTgzYQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS0yLUlBSUstcmVmMC5kZXJlZlVSSQpAQCAtMCwwICsxLDE3IEBACistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gT2N0ZXRTdHJlYW1EYXRhIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxpZXRmOmMxNG4xMVhtbFNwYWNlRG9jMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiAKK3htbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPgorICAgPGlldGY6ZTEgeG1sOnNwYWNlPSJ0cnVlIj4KKyAgICAgIDxpZXRmOmUxMT4KKyAgICAgICAgIDxpZXRmOmUxMTEgLz4KKyAgICAgIDwvaWV0ZjplMTE+CisgICAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgICAgPGlldGY6ZTEyMSAvPgorICAgICAgPC9pZXRmOmUxMj4KKyAgIDwvaWV0ZjplMT4KKyAgIDxpZXRmOmUyID4KKyAgICAgIDxpZXRmOmUyMSAvPgorICAgPC9pZXRmOmUyPgorPC9pZXRmOmMxNG4xMVhtbFNwYWNlRG9jMT4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtMi1JQUlLLXJlZjAuZGlnZXN0aW5wdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtMi1JQUlLLXJlZjAuZGlnZXN0aW5wdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNhNjdiMwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS0yLUlBSUstcmVmMC5kaWdlc3RpbnB1dApAQCAtMCwwICsxLDMgQEAKKzxpZXRmOmUyIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPgorICAgICAgPGlldGY6ZTIxPjwvaWV0ZjplMjE+CisgICA8L2lldGY6ZTI+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTItSUFJSy54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtMi1JQUlLLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmFkMjAwCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTItSUFJSy54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtc3BhY2UtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUyPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5saWdwNUxvdlhpQmJ1UDg3VlFzdUZ4SFpmOVk9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPko1NGlvcjB2MUorakZ4QjRWZm9Oak9oZE83az08L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS0yLUlCTS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtMi1JQk0ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyNzFmNzEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtMi1JQk0ueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxkczpSZWZlcmVuY2UgVVJJPSJ4bWwtc3BhY2UtaW5wdXQueG1sIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjx4ZjpYUGF0aCB4bWxuczp4Zj0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMjwveGY6WFBhdGg+PC9kczpUcmFuc2Zvcm0+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+bGlncDVMb3ZYaUJidVA4N1ZRc3VGeEhaZjlZPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT54MzVKblhqQ2dtUmVvZjI0M1BCRFl3VkxtZWM9PC9kczpTaWduYXR1cmVWYWx1ZT48L2RzOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtMi1PUkNMLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS0yLU9SQ0wueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4OTdjODkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtMi1PUkNMLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLXNwYWNlLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMjwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+bGlncDVMb3ZYaUJidVA4N1ZRc3VGeEhaZjlZPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPko1NGlvcjB2MUorakZ4QjRWZm9Oak9oZE83az08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTItU1VOLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS0yLVNVTi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Y5MWIyNwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS0yLVNVTi54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1zcGFjZS1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTI8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPmxpZ3A1TG92WGlCYnVQODdWUXN1RnhIWmY5WT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+SjU0aW9yMHYxSitqRnhCNFZmb05qT2hkTzdrPTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTItVVBDLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS0yLVVQQy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZhYzVhMQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS0yLVVQQy54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiIC8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiIC8+PFJlZmVyZW5jZSBVUkk9InhtbC1zcGFjZS1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTI8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiIC8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz48RGlnZXN0VmFsdWU+bGlncDVMb3ZYaUJidVA4N1ZRc3VGeEhaZjlZPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5KNTRpb3IwdjFKK2pGeEI0VmZvTmpPaGRPN2s9PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtMi10ZW1wbGF0ZS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtMi10ZW1wbGF0ZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMxYzAwYwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS0yLXRlbXBsYXRlLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1zcGFjZS1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTI8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPjwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS0zLUlBSUstcmVmMC5kZXJlZlVSSSBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS0zLUlBSUstcmVmMC5kZXJlZlVSSQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjE1ODNhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTMtSUFJSy1yZWYwLmRlcmVmVVJJCkBAIC0wLDAgKzEsMTcgQEAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPY3RldFN0cmVhbURhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGlldGY6YzE0bjExWG1sU3BhY2VEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIAoreG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisgICA8aWV0ZjplMSB4bWw6c3BhY2U9InRydWUiPgorICAgICAgPGlldGY6ZTExPgorICAgICAgICAgPGlldGY6ZTExMSAvPgorICAgICAgPC9pZXRmOmUxMT4KKyAgICAgIDxpZXRmOmUxMiBhdD0iMiI+CisgICAgICAgICA8aWV0ZjplMTIxIC8+CisgICAgICA8L2lldGY6ZTEyPgorICAgPC9pZXRmOmUxPgorICAgPGlldGY6ZTIgPgorICAgICAgPGlldGY6ZTIxIC8+CisgICA8L2lldGY6ZTI+Cis8L2lldGY6YzE0bjExWG1sU3BhY2VEb2MxPgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS0zLUlBSUstcmVmMC5kaWdlc3RpbnB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS0zLUlBSUstcmVmMC5kaWdlc3RpbnB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmFmZDkwCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTMtSUFJSy1yZWYwLmRpZ2VzdGlucHV0CkBAIC0wLDAgKzEsMyBAQAorPGlldGY6ZTExIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpzcGFjZT0idHJ1ZSI+CisgICAgICAgICA8aWV0ZjplMTExPjwvaWV0ZjplMTExPgorICAgICAgPC9pZXRmOmUxMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtMy1JQUlLLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS0zLUlBSUsueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4YzE1YzAKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtMy1JQUlLLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1zcGFjZS1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTExPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5EMWJ6bnFQQmVZV1AzL1JzYkxzRFlHdHFOL0E9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPjBjTUVzd3ByQ0QrMWdkVXZsNlJEcE4xdGVLVT08L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS0zLUlCTS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtMy1JQk0ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1NWFmYWMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtMy1JQk0ueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxkczpSZWZlcmVuY2UgVVJJPSJ4bWwtc3BhY2UtaW5wdXQueG1sIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjx4ZjpYUGF0aCB4bWxuczp4Zj0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTE8L3hmOlhQYXRoPjwvZHM6VHJhbnNmb3JtPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzOkRpZ2VzdFZhbHVlPkQxYnpucVBCZVlXUDMvUnNiTHNEWUd0cU4vQT08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU+bGRqemJKLzN2N0I1VTdsbHhsTFZrUklmdWZrPTwvZHM6U2lnbmF0dXJlVmFsdWU+PC9kczpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTMtT1JDTC54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtMy1PUkNMLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGNjZjM1Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTMtT1JDTC54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9InhtbC1zcGFjZS1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTExPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5EMWJ6bnFQQmVZV1AzL1JzYkxzRFlHdHFOL0E9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWUgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+MGNNRXN3cHJDRCsxZ2RVdmw2UkRwTjF0ZUtVPTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtMy1TVU4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTMtU1VOLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWMxODJmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTMtU1VOLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLXNwYWNlLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTE8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPkQxYnpucVBCZVlXUDMvUnNiTHNEWUd0cU4vQT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+MGNNRXN3cHJDRCsxZ2RVdmw2UkRwTjF0ZUtVPTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTMtVVBDLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS0zLVVQQy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDhlMTQ2MwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS0zLVVQQy54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiIC8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiIC8+PFJlZmVyZW5jZSBVUkk9InhtbC1zcGFjZS1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTExPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIiAvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+PERpZ2VzdFZhbHVlPkQxYnpucVBCZVlXUDMvUnNiTHNEWUd0cU4vQT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+MGNNRXN3cHJDRCsxZ2RVdmw2UkRwTjF0ZUtVPTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTMtdGVtcGxhdGUueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTMtdGVtcGxhdGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzYTJlOWMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtMy10ZW1wbGF0ZS54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtc3BhY2UtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTQtSUFJSy1yZWYwLmRlcmVmVVJJIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTQtSUFJSy1yZWYwLmRlcmVmVVJJCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmMTU4M2EKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtNC1JQUlLLXJlZjAuZGVyZWZVUkkKQEAgLTAsMCArMSwxNyBAQAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE9jdGV0U3RyZWFtRGF0YSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8aWV0ZjpjMTRuMTFYbWxTcGFjZURvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgCit4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKyAgIDxpZXRmOmUxIHhtbDpzcGFjZT0idHJ1ZSI+CisgICAgICA8aWV0ZjplMTE+CisgICAgICAgICA8aWV0ZjplMTExIC8+CisgICAgICA8L2lldGY6ZTExPgorICAgICAgPGlldGY6ZTEyIGF0PSIyIj4KKyAgICAgICAgIDxpZXRmOmUxMjEgLz4KKyAgICAgIDwvaWV0ZjplMTI+CisgICA8L2lldGY6ZTE+CisgICA8aWV0ZjplMiA+CisgICAgICA8aWV0ZjplMjEgLz4KKyAgIDwvaWV0ZjplMj4KKzwvaWV0ZjpjMTRuMTFYbWxTcGFjZURvYzE+CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTQtSUFJSy1yZWYwLmRpZ2VzdGlucHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTQtSUFJSy1yZWYwLmRpZ2VzdGlucHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3Y2U5MzMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtNC1JQUlLLXJlZjAuZGlnZXN0aW5wdXQKQEAgLTAsMCArMSw1IEBACis8aWV0ZjplMTEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOnNwYWNlPSJ0cnVlIj4KKyAgICAgICAgIDxpZXRmOmUxMTE+PC9pZXRmOmUxMTE+CisgICAgICA8L2lldGY6ZTExPjxpZXRmOmUxMiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiBhdD0iMiIgeG1sOnNwYWNlPSJ0cnVlIj4KKyAgICAgICAgIDxpZXRmOmUxMjE+PC9pZXRmOmUxMjE+CisgICAgICA8L2lldGY6ZTEyPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS00LUlBSUsueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTQtSUFJSy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJjZDIwOAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS00LUlBSUsueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLXNwYWNlLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTEgb3IgYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTI8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPlo4UFkrWEJXdmdhbnAvdFRjVnp0ejgrNlRRdz08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+dFlTcFRyTTdLVGVVeGFiTGR1TURObTY3VTJBPTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTQtSUJNLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS00LUlCTS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI3ODE0MgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS00LUlCTS54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PGRzOlJlZmVyZW5jZSBVUkk9InhtbC1zcGFjZS1pbnB1dC54bWwiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PHhmOlhQYXRoIHhtbG5zOnhmPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMSBvciBhbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMjwveGY6WFBhdGg+PC9kczpUcmFuc2Zvcm0+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+WjhQWStYQld2Z2FucC90VGNWenR6OCs2VFF3PTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5id3U4VVQwc000NE43cFpYNVhVWHYxbFJ0R2s9PC9kczpTaWduYXR1cmVWYWx1ZT48L2RzOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtNC1PUkNMLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS00LU9SQ0wueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmZmJmZmMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtNC1PUkNMLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0ieG1sLXNwYWNlLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTEgb3IgYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTI8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPlo4UFkrWEJXdmdhbnAvdFRjVnp0ejgrNlRRdz08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj50WVNwVHJNN0tUZVV4YWJMZHVNRE5tNjdVMkE9PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS00LVNVTi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtNC1TVU4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3MWEyZTUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtNC1TVU4ueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtc3BhY2UtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMSBvciBhbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMjwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+WjhQWStYQld2Z2FucC90VGNWenR6OCs2VFF3PTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT50WVNwVHJNN0tUZVV4YWJMZHVNRE5tNjdVMkE9PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtNC1VUEMueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTQtVVBDLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWQxYzdmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvYzE0bjExL3htbHNwYWNlLTQtVVBDLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIgLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIgLz48UmVmZXJlbmNlIFVSST0ieG1sLXNwYWNlLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTEgb3IgYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMTI8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiIC8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz48RGlnZXN0VmFsdWU+WjhQWStYQld2Z2FucC90VGNWenR6OCs2VFF3PTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT50WVNwVHJNN0tUZVV4YWJMZHVNRE5tNjdVMkE9PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtNC10ZW1wbGF0ZS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9jMTRuMTEveG1sc3BhY2UtNC10ZW1wbGF0ZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzgwNWJmNQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2MxNG4xMS94bWxzcGFjZS00LXRlbXBsYXRlLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJ4bWwtc3BhY2UtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMSBvciBhbmNlc3Rvci1vci1zZWxmOjppZXRmOmUxMjwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZGVmQ2FuLTEtSUFJSy1yZWYwLmRlcmVmVVJJIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZGVmQ2FuLTEtSUFJSy1yZWYwLmRlcmVmVVJJCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4YzVmMjgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kZWZDYW4tMS1JQUlLLXJlZjAuZGVyZWZVUkkKQEAgLTAsMCArMSwyMCBAQAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE9jdGV0U3RyZWFtRGF0YSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8aWV0ZjpjMTRuMTFYbWxCYXNlRG9jMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0iaHR0cDovL3htbGJhc2UuZXhhbXBsZS5vcmcveG1sYmFzZTAvIj4KKyAgPGlldGY6ZTEgeG1sOmJhc2U9Ii94bWxiYXNlMS8iPgorICAgIDxpZXRmOmUxMSB4bWw6YmFzZT0iL3htbGJhc2UxMS8iPgorICAgICAgPGlldGY6ZTExMSB4bWw6YmFzZT0iL3htbGJhc2UxMTEvIi8+CisgICAgPC9pZXRmOmUxMT4KKyAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgPGlldGY6ZTEyMSB4bWw6YmFzZT0iL3htbGJhc2UxMjEvIi8+CisgICAgPC9pZXRmOmUxMj4KKyAgPC9pZXRmOmUxPgorICA8aWV0ZjplMj4KKyAgICA8aWV0ZjplMjEgeG1sOmJhc2U9Ii94bWxiYXNlMjEvIi8+CisgIDwvaWV0ZjplMj4KKyAgPGlldGY6ZTM+CisgICAgPGlldGY6ZTMxIGF0PSIzIi8+CisgIDwvaWV0ZjplMz4KKzwvaWV0ZjpjMTRuMTFYbWxCYXNlRG9jMT4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RlZkNhbi0xLUlBSUstcmVmMC5kaWdlc3RpbnB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RlZkNhbi0xLUlBSUstcmVmMC5kaWdlc3RpbnB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjAzOTBmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZGVmQ2FuLTEtSUFJSy1yZWYwLmRpZ2VzdGlucHV0CkBAIC0wLDAgKzEsMTQgQEAKKzxpZXRmOmMxNG4xMVhtbEJhc2VEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpiYXNlPSJodHRwOi8veG1sYmFzZS5leGFtcGxlLm9yZy94bWxiYXNlMC8iPgorICA8aWV0ZjplMSB4bWw6YmFzZT0iL3htbGJhc2UxLyI+CisgICAgPGlldGY6ZTExIHhtbDpiYXNlPSIveG1sYmFzZTExLyI+CisgICAgICA8aWV0ZjplMTExIHhtbDpiYXNlPSIveG1sYmFzZTExMS8iPjwvaWV0ZjplMTExPgorICAgIDwvaWV0ZjplMTE+CisgICAgPGlldGY6ZTEyIGF0PSIyIj4KKyAgICAgIDxpZXRmOmUxMjEgeG1sOmJhc2U9Ii94bWxiYXNlMTIxLyI+PC9pZXRmOmUxMjE+CisgICAgPC9pZXRmOmUxMj4KKyAgPC9pZXRmOmUxPgorICAKKyAgPGlldGY6ZTM+CisgICAgPGlldGY6ZTMxIGF0PSIzIj48L2lldGY6ZTMxPgorICA8L2lldGY6ZTM+Cis8L2lldGY6YzE0bjExWG1sQmFzZURvYzE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZGVmQ2FuLTEtSUFJSy54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kZWZDYW4tMS1JQUlLLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmY5OGFlCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZGVmQ2FuLTEtSUFJSy54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJjMTRuMTEveG1sLWJhc2UtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmMxNG4xMVhtbEJhc2VEb2MxIGFuZCBub3QoYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMik8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPnQ3ZDJjTDhJbms4QTVpM2NTOS9idTlNQkJVOD08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+TFI0cytOeG9xM1ZaTzFOaUNMb2lvdmZDcEs0PTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZGVmQ2FuLTEtSUJNLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RlZkNhbi0xLUlCTS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBlZDJhYgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RlZkNhbi0xLUlCTS54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PGRzOlJlZmVyZW5jZSBVUkk9ImMxNG4xMS94bWwtYmFzZS1pbnB1dC54bWwiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PHhmOlhQYXRoIHhtbG5zOnhmPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmMxNG4xMVhtbEJhc2VEb2MxIGFuZCBub3QoYW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMik8L3hmOlhQYXRoPjwvZHM6VHJhbnNmb3JtPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzOkRpZ2VzdFZhbHVlPnQ3ZDJjTDhJbms4QTVpM2NTOS9idTlNQkJVOD08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU+MWJqa2c5bG02MmhVMjh4OTd6bjhwTy8rRy8wPTwvZHM6U2lnbmF0dXJlVmFsdWU+PC9kczpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZGVmQ2FuLTEtU1VOLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RlZkNhbi0xLVNVTi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA2ZWI1ZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RlZkNhbi0xLVNVTi54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9ImMxNG4xMS94bWwtYmFzZS1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6YzE0bjExWG1sQmFzZURvYzEgYW5kIG5vdChhbmNlc3Rvci1vci1zZWxmOjppZXRmOmUyKTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+dDdkMmNMOEluazhBNWkzY1M5L2J1OU1CQlU4PTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5MUjRzK054b3EzVlpPMU5pQ0xvaW92ZkNwSzQ9PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kZWZDYW4tMS1zaWduYXR1cmUueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZGVmQ2FuLTEtc2lnbmF0dXJlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmY5OGFlCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZGVmQ2FuLTEtc2lnbmF0dXJlLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9ImMxNG4xMS94bWwtYmFzZS1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6YzE0bjExWG1sQmFzZURvYzEgYW5kIG5vdChhbmNlc3Rvci1vci1zZWxmOjppZXRmOmUyKTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+dDdkMmNMOEluazhBNWkzY1M5L2J1OU1CQlU4PTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5MUjRzK054b3EzVlpPMU5pQ0xvaW92ZkNwSzQ9PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kZWZDYW4tMS10ZW1wbGF0ZS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kZWZDYW4tMS10ZW1wbGF0ZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgyNWVhOAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RlZkNhbi0xLXRlbXBsYXRlLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9ImMxNG4xMS94bWwtYmFzZS1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6YzE0bjExWG1sQmFzZURvYzEgYW5kIG5vdChhbmNlc3Rvci1vci1zZWxmOjppZXRmOmUyKTwvWFBhdGg+PC9UcmFuc2Zvcm0+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT48L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kZWZDYW4tMi1JQUlLLXJlZjAuZGVyZWZVUkkgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kZWZDYW4tMi1JQUlLLXJlZjAuZGVyZWZVUkkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThjNWYyOAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RlZkNhbi0yLUlBSUstcmVmMC5kZXJlZlVSSQpAQCAtMCwwICsxLDIwIEBACistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gT2N0ZXRTdHJlYW1EYXRhIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxpZXRmOmMxNG4xMVhtbEJhc2VEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpiYXNlPSJodHRwOi8veG1sYmFzZS5leGFtcGxlLm9yZy94bWxiYXNlMC8iPgorICA8aWV0ZjplMSB4bWw6YmFzZT0iL3htbGJhc2UxLyI+CisgICAgPGlldGY6ZTExIHhtbDpiYXNlPSIveG1sYmFzZTExLyI+CisgICAgICA8aWV0ZjplMTExIHhtbDpiYXNlPSIveG1sYmFzZTExMS8iLz4KKyAgICA8L2lldGY6ZTExPgorICAgIDxpZXRmOmUxMiBhdD0iMiI+CisgICAgICA8aWV0ZjplMTIxIHhtbDpiYXNlPSIveG1sYmFzZTEyMS8iLz4KKyAgICA8L2lldGY6ZTEyPgorICA8L2lldGY6ZTE+CisgIDxpZXRmOmUyPgorICAgIDxpZXRmOmUyMSB4bWw6YmFzZT0iL3htbGJhc2UyMS8iLz4KKyAgPC9pZXRmOmUyPgorICA8aWV0ZjplMz4KKyAgICA8aWV0ZjplMzEgYXQ9IjMiLz4KKyAgPC9pZXRmOmUzPgorPC9pZXRmOmMxNG4xMVhtbEJhc2VEb2MxPgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZGVmQ2FuLTItSUFJSy1yZWYwLmRpZ2VzdGlucHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZGVmQ2FuLTItSUFJSy1yZWYwLmRpZ2VzdGlucHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ZTUxZDkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kZWZDYW4tMi1JQUlLLXJlZjAuZGlnZXN0aW5wdXQKQEAgLTAsMCArMSBAQAorPGlldGY6ZTIxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIHhtbDpiYXNlPSJodHRwOi8veG1sYmFzZS5leGFtcGxlLm9yZy94bWxiYXNlMjEvIj48L2lldGY6ZTIxPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RlZkNhbi0yLUlBSUsueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZGVmQ2FuLTItSUFJSy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFhMWQzNAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RlZkNhbi0yLUlBSUsueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iYzE0bjExL3htbC1iYXNlLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMjE8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHNsdC0xOTk5MTExNiI+PHhzbDpzdHlsZXNoZWV0IHZlcnNpb249IjEuMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSIgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iPjx4c2w6dGVtcGxhdGUgbWF0Y2g9IkAqfG5vZGUoKSI+PHhzbDpjb3B5Pjx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iQCp8bm9kZSgpIi8+PC94c2w6Y29weT48L3hzbDp0ZW1wbGF0ZT48L3hzbDpzdHlsZXNoZWV0PjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPjE8L1hQYXRoPjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPmZMN0lnenMwTEw3bEtISnpBSklLWUNwaFlCbz08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+YktRTHl3WTUxVlp3anV0VVgvQ1VNc1ZzNlJFPTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZGVmQ2FuLTItc2lnbmF0dXJlLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RlZkNhbi0yLXNpZ25hdHVyZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFhMWQzNAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RlZkNhbi0yLXNpZ25hdHVyZS54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJjMTRuMTEveG1sLWJhc2UtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUyMTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14c2x0LTE5OTkxMTE2Ij48eHNsOnN0eWxlc2hlZXQgdmVyc2lvbj0iMS4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIiB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSI+PHhzbDp0ZW1wbGF0ZSBtYXRjaD0iQCp8bm9kZSgpIj48eHNsOmNvcHk+PHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJAKnxub2RlKCkiLz48L3hzbDpjb3B5PjwveHNsOnRlbXBsYXRlPjwveHNsOnN0eWxlc2hlZXQ+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+MTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+Zkw3SWd6czBMTDdsS0hKekFKSUtZQ3BoWUJvPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5iS1FMeXdZNTFWWndqdXRVWC9DVU1zVnM2UkU9PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kZWZDYW4tMi10ZW1wbGF0ZS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kZWZDYW4tMi10ZW1wbGF0ZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVkZjczOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RlZkNhbi0yLXRlbXBsYXRlLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9ImMxNG4xMS94bWwtYmFzZS1pbnB1dC54bWwiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPmFuY2VzdG9yLW9yLXNlbGY6OmlldGY6ZTIxPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHNsdC0xOTk5MTExNiI+PHhzbDpzdHlsZXNoZWV0IHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIiB2ZXJzaW9uPSIxLjAiPjx4c2w6dGVtcGxhdGUgbWF0Y2g9IkAqfG5vZGUoKSI+PHhzbDpjb3B5Pjx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iQCp8bm9kZSgpIi8+PC94c2w6Y29weT48L3hzbDp0ZW1wbGF0ZT48L3hzbDpzdHlsZXNoZWV0PjwvVHJhbnNmb3JtPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI+PFhQYXRoIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciPjE8L1hQYXRoPjwvVHJhbnNmb3JtPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZGVmQ2FuLTMtSUFJSy1yZWYwLmRlcmVmVVJJIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZGVmQ2FuLTMtSUFJSy1yZWYwLmRlcmVmVVJJCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4YzVmMjgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kZWZDYW4tMy1JQUlLLXJlZjAuZGVyZWZVUkkKQEAgLTAsMCArMSwyMCBAQAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE9jdGV0U3RyZWFtRGF0YSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8aWV0ZjpjMTRuMTFYbWxCYXNlRG9jMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0iaHR0cDovL3htbGJhc2UuZXhhbXBsZS5vcmcveG1sYmFzZTAvIj4KKyAgPGlldGY6ZTEgeG1sOmJhc2U9Ii94bWxiYXNlMS8iPgorICAgIDxpZXRmOmUxMSB4bWw6YmFzZT0iL3htbGJhc2UxMS8iPgorICAgICAgPGlldGY6ZTExMSB4bWw6YmFzZT0iL3htbGJhc2UxMTEvIi8+CisgICAgPC9pZXRmOmUxMT4KKyAgICA8aWV0ZjplMTIgYXQ9IjIiPgorICAgICAgPGlldGY6ZTEyMSB4bWw6YmFzZT0iL3htbGJhc2UxMjEvIi8+CisgICAgPC9pZXRmOmUxMj4KKyAgPC9pZXRmOmUxPgorICA8aWV0ZjplMj4KKyAgICA8aWV0ZjplMjEgeG1sOmJhc2U9Ii94bWxiYXNlMjEvIi8+CisgIDwvaWV0ZjplMj4KKyAgPGlldGY6ZTM+CisgICAgPGlldGY6ZTMxIGF0PSIzIi8+CisgIDwvaWV0ZjplMz4KKzwvaWV0ZjpjMTRuMTFYbWxCYXNlRG9jMT4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RlZkNhbi0zLUlBSUstcmVmMC5kaWdlc3RpbnB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RlZkNhbi0zLUlBSUstcmVmMC5kaWdlc3RpbnB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTAxMWMwCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZGVmQ2FuLTMtSUFJSy1yZWYwLmRpZ2VzdGlucHV0CkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48aWV0ZjplMyB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6YmFzZT0iaHR0cDovL3htbGJhc2UuZXhhbXBsZS5vcmcveG1sYmFzZTAvIj4NCisgICAgPGlldGY6ZTMxIGF0PSIzIi8+DQorICA8L2lldGY6ZTM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZGVmQ2FuLTMtSUFJSy54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kZWZDYW4tMy1JQUlLLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjdkY2VkCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZGVmQ2FuLTMtSUFJSy54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJjMTRuMTEveG1sLWJhc2UtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUzPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhzbHQtMTk5OTExMTYiPjx4c2w6c3R5bGVzaGVldCB2ZXJzaW9uPSIxLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iIHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj48eHNsOnRlbXBsYXRlIG1hdGNoPSJAKnxub2RlKCkiPjx4c2w6Y29weT48eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9IkAqfG5vZGUoKSIvPjwveHNsOmNvcHk+PC94c2w6dGVtcGxhdGU+PC94c2w6c3R5bGVzaGVldD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj4xPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhzbHQtMTk5OTExMTYiPjx4c2w6c3R5bGVzaGVldCB2ZXJzaW9uPSIxLjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iIHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj48eHNsOnRlbXBsYXRlIG1hdGNoPSJAKnxub2RlKCkiPjx4c2w6Y29weT48eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9IkAqfG5vZGUoKSIvPjwveHNsOmNvcHk+PC94c2w6dGVtcGxhdGU+PC94c2w6c3R5bGVzaGVldD48L1RyYW5zZm9ybT48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPnp4aUpabWNjS2g3ZVI4ZzNWWXFHcmhaUUw2WT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+d1hpcDAzN1kxV284aUZ6UkpsRS9tQnVOVXFNPTwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZGVmQ2FuLTMtc2lnbmF0dXJlLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RlZkNhbi0zLXNpZ25hdHVyZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNiMWI4MwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RlZkNhbi0zLXNpZ25hdHVyZS54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSJjMTRuMTEveG1sLWJhc2UtaW5wdXQueG1sIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj5hbmNlc3Rvci1vci1zZWxmOjppZXRmOmUyMTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14c2x0LTE5OTkxMTE2Ij48eHNsOnN0eWxlc2hlZXQgdmVyc2lvbj0iMS4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIiB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSI+PHhzbDp0ZW1wbGF0ZSBtYXRjaD0iQCp8bm9kZSgpIj48eHNsOmNvcHk+PHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJAKnxub2RlKCkiLz48L3hzbDpjb3B5PjwveHNsOnRlbXBsYXRlPjwveHNsOnN0eWxlc2hlZXQ+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+MTwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14c2x0LTE5OTkxMTE2Ij48eHNsOnN0eWxlc2hlZXQgdmVyc2lvbj0iMS4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIiB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSI+PHhzbDp0ZW1wbGF0ZSBtYXRjaD0iQCp8bm9kZSgpIj48eHNsOmNvcHk+PHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJAKnxub2RlKCkiLz48L3hzbDpjb3B5PjwveHNsOnRlbXBsYXRlPjwveHNsOnN0eWxlc2hlZXQ+PC9UcmFuc2Zvcm0+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5ocWFiVXU0ZkVacDdHSzVKUnlGQzI2VzVKQms9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPjkrd3AwVzl4d0w1WDNrU3R0eEFCWjdwL2tVMD08L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RlZkNhbi0zLXRlbXBsYXRlLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RlZkNhbi0zLXRlbXBsYXRlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTBlODE5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZGVmQ2FuLTMtdGVtcGxhdGUueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iYzE0bjExL3htbC1iYXNlLWlucHV0LnhtbCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGggeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyI+YW5jZXN0b3Itb3Itc2VsZjo6aWV0ZjplMzwvWFBhdGg+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhzbHQtMTk5OTExMTYiPjx4c2w6c3R5bGVzaGVldCB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSIgdmVyc2lvbj0iMS4wIj48eHNsOnRlbXBsYXRlIG1hdGNoPSJAKnxub2RlKCkiPjx4c2w6Y29weT48eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9IkAqfG5vZGUoKSIvPjwveHNsOmNvcHk+PC94c2w6dGVtcGxhdGU+PC94c2w6c3R5bGVzaGVldD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPjxYUGF0aCB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIj4xPC9YUGF0aD48L1RyYW5zZm9ybT48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHNsdC0xOTk5MTExNiI+PHhzbDpzdHlsZXNoZWV0IHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIiB2ZXJzaW9uPSIxLjAiPjx4c2w6dGVtcGxhdGUgbWF0Y2g9IkAqfG5vZGUoKSI+PHhzbDpjb3B5Pjx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iQCp8bm9kZSgpIi8+PC94c2w6Y29weT48L3hzbDp0ZW1wbGF0ZT48L3hzbDpzdHlsZXNoZWV0PjwvVHJhbnNmb3JtPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvY2VydHMvQ29udHJvbC5jcnQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9jZXJ0cy9Db250cm9sLmNydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjZjZDczCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvY2VydHMvQ29udHJvbC5jcnQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvY2VydHMvRXF1YWxzLmNydCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2NlcnRzL0VxdWFscy5jcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdkZGQzNAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2NlcnRzL0VxdWFscy5jcnQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvY2VydHMvRXNjYXBlZC5jcnQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9jZXJ0cy9Fc2NhcGVkLmNydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDE0MjBjCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvY2VydHMvRXNjYXBlZC5jcnQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvY2VydHMvSm9obi5jcnQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9jZXJ0cy9Kb2huLmNydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGEyZTgyCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvY2VydHMvSm9obi5jcnQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvY2VydHMvTnVsbC5jcnQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9jZXJ0cy9OdWxsLmNydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzRhOTdmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvY2VydHMvTnVsbC5jcnQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvY2VydHMvTnVtYmVyLmNydCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2NlcnRzL051bWJlci5jcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM0MDFiOAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2NlcnRzL051bWJlci5jcnQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvY2VydHMvU3BhY2V5LmNydCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2NlcnRzL1NwYWNleS5jcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZkM2Q3MQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2NlcnRzL1NwYWNleS5jcnQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvY2VydHMvVHJhaWxpbmcuY3J0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvY2VydHMvVHJhaWxpbmcuY3J0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MjM5YzcKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9jZXJ0cy9UcmFpbGluZy5jcnQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvY2VydHMvZXhwb3J0LnNoIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvY2VydHMvZXhwb3J0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiOGQzZWQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9jZXJ0cy9leHBvcnQuc2gKQEAgLTAsMCArMSw1IEBACisjIS9iaW4va3NoCisKK3NldCAteAorCiskSkFWQV9IT01FL2Jpbi9rZXl0b29sIC1leHBvcnRjZXJ0IC1hbGlhcyAkMSAtZmlsZSAkMS5jcnQgLXN0b3JlcGFzcyBzZWNyZXQgLWtleXN0b3JlIC4va2V5c3RvcmUuamtzCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9jZXJ0cy9rZXlzdG9yZS5qa3MgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9jZXJ0cy9rZXlzdG9yZS5qa3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY5OGQ5YQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2NlcnRzL2tleXN0b3JlLmprcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9jZXJ0cy9rZXlzdG9yZS5wMTIgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9jZXJ0cy9rZXlzdG9yZS5wMTIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNlNTI3MAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2NlcnRzL2tleXN0b3JlLnAxMgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9jZXJ0cy9ydW4uc2ggYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9jZXJ0cy9ydW4uc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ3YTVlYwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2NlcnRzL3J1bi5zaApAQCAtMCwwICsxLDUgQEAKKyMhL2Jpbi9rc2gKKworc2V0IC14CisKKyRKQVZBX0hPTUUvYmluL2tleXRvb2wgLWdlbmtleXBhaXIgLWFsaWFzICQxIC1kbmFtZSAiJDIiIC1rZXlhbGcgRFNBIC1zaWdhbGcgU0hBMVdpdGhEU0EgLXZhbGlkaXR5IDM2NTAwIC1rZXlwYXNzIHNlY3JldCAtc3RvcmVwYXNzIHNlY3JldCAta2V5c3RvcmUgLi9rZXlzdG9yZS5qa3MKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTEtSUFJSy1yZWYwLmRlcmVmVVJJIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMS1JQUlLLXJlZjAuZGVyZWZVUkkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRmOGU5ZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTEtSUFJSy1yZWYwLmRlcmVmVVJJCkBAIC0wLDAgKzEsNiBAQAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE5vZGVTZXREYXRhIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05vZGUgMSA6IFtPYmplY3Q6IG51bGxdCitOb2RlIDIgOiBJZD0ib2JqZWN0IgorTm9kZSAzIDogeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiCitOb2RlIDQgOiBbI3RleHQ6IEFwcHJvdmVkXQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTEtSUFJSy1yZWYwLmRpZ2VzdGlucHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMS1JQUlLLXJlZjAuZGlnZXN0aW5wdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA0ZDY4NgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTEtSUFJSy1yZWYwLmRpZ2VzdGlucHV0CkBAIC0wLDAgKzEgQEAKKzxPYmplY3QgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIElkPSJvYmplY3QiPkFwcHJvdmVkPC9PYmplY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMS1JQUlLLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTEtSUFJSy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg2MzgzYQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTEtSUFJSy54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiNvYmplY3QiPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5ueEdWeFR6WDN1UVZlYVo3dnRXTUxjK1Y2Q0U9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPkFjN0kxaTNNcW9DVzdyVjRLZ3htdElqNHNYaElTK0RrdTFGcTg3VVE0LzVGSU5RdkdSYVFFUT09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlTdWJqZWN0TmFtZT5DTj1Kb2huLEM9VVM8L1g1MDlTdWJqZWN0TmFtZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48T2JqZWN0IElkPSJvYmplY3QiPkFwcHJvdmVkPC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMS1PUkNMLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTEtT1JDTC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBhMmFiOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTEtT1JDTC54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPm54R1Z4VHpYM3VRVmVhWjd2dFdNTGMrVjZDRT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj5LSjVGMFo4OVhMbFZHUTNxM1k0S0Q5SllkN3hrZTlJb2RRUXFxeHNXSlFqR2FBMVlzdS9xSkE9PTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlTdWJqZWN0TmFtZT5DTj1Kb2huLEM9VVM8L1g1MDlTdWJqZWN0TmFtZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48T2JqZWN0IElkPSJvYmplY3QiPkFwcHJvdmVkPC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMS1TVU4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMS1TVU4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmZGI1Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy0xLVNVTi54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiNvYmplY3QiPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5ueEdWeFR6WDN1UVZlYVo3dnRXTUxjK1Y2Q0U9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPkRPejRLaEpIT3ZoelBpS2p4bDBXVnNyWFB1WjlYUXRkRHZLTjBLdUxRR0l6WGtsamZrRkVRQT09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlTdWJqZWN0TmFtZT5DTj1Kb2huLEM9VVM8L1g1MDlTdWJqZWN0TmFtZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48T2JqZWN0IElkPSJvYmplY3QiPkFwcHJvdmVkPC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMS1VUEMueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMS1VUEMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MWM2MjEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy0xLVVQQy54bWwKQEAgLTAsMCArMSBAQAorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIC8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIgLz48UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPjxEaWdlc3RWYWx1ZT5ueEdWeFR6WDN1UVZlYVo3dnRXTUxjK1Y2Q0U9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPlI1SFNpenlTQ3pzRjFwbmgyek4zVU5VUnJnb0IwaTRHSk5LYkhLa2FTRGJsRzA3bWtWajRQZz09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlTdWJqZWN0TmFtZT5DTj1Kb2huLEM9VVM8L1g1MDlTdWJqZWN0TmFtZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48T2JqZWN0IElkPSJvYmplY3QiPkFwcHJvdmVkPC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMS10ZW1wbGF0ZS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy0xLXRlbXBsYXRlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTBlNWJhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMS10ZW1wbGF0ZS54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0gZW52ZWxvcGluZyBpbnB1dC50eHQgLS0+DQorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiNvYmplY3QiPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT48L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlTdWJqZWN0TmFtZT5DTj1Kb2huLEM9VVM8L1g1MDlTdWJqZWN0TmFtZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48T2JqZWN0IElkPSJvYmplY3QiPjwvT2JqZWN0PjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTFhLXRlbXBsYXRlLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTFhLXRlbXBsYXRlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzZjZjdkCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMWEtdGVtcGxhdGUueG1sCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gZW52ZWxvcGluZyBpbnB1dC50eHQgLS0+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPjwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxYNTA5RGF0YT48WDUwOVN1YmplY3ROYW1lPkM9VVMsQ049Sm9objwvWDUwOVN1YmplY3ROYW1lPjwvWDUwOURhdGE+PC9LZXlJbmZvPjxPYmplY3QgSWQ9Im9iamVjdCI+PC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMi1JQUlLLXJlZjAuZGVyZWZVUkkgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy0yLUlBSUstcmVmMC5kZXJlZlVSSQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGY4ZTllCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMi1JQUlLLXJlZjAuZGVyZWZVUkkKQEAgLTAsMCArMSw2IEBACistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTm9kZVNldERhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTm9kZSAxIDogW09iamVjdDogbnVsbF0KK05vZGUgMiA6IElkPSJvYmplY3QiCitOb2RlIDMgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgNCA6IFsjdGV4dDogQXBwcm92ZWRdCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMi1JQUlLLXJlZjAuZGlnZXN0aW5wdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy0yLUlBSUstcmVmMC5kaWdlc3RpbnB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDRkNjg2Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMi1JQUlLLXJlZjAuZGlnZXN0aW5wdXQKQEAgLTAsMCArMSBAQAorPE9iamVjdCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Im9iamVjdCI+QXBwcm92ZWQ8L09iamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy0yLUlBSUsueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMi1JQUlLLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTg2ZWFlCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMi1JQUlLLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPm54R1Z4VHpYM3VRVmVhWjd2dFdNTGMrVjZDRT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+UzNnZGQveGhETVM3Wk4xZkd6eWNId1Q0ai9rRXF0a2ZkYkI0ckhVbm5GYlJjY0ZJMVVRR3ZRPT08L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxYNTA5RGF0YT48WDUwOVN1YmplY3ROYW1lPkNOPVwgU3BhY2V5XCAsQz1VUzwvWDUwOVN1YmplY3ROYW1lPjwvWDUwOURhdGE+PC9LZXlJbmZvPjxPYmplY3QgSWQ9Im9iamVjdCI+QXBwcm92ZWQ8L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy0yLU9SQ0wueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMi1PUkNMLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2U0N2U5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMi1PUkNMLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+bnhHVnhUelgzdVFWZWFaN3Z0V01MYytWNkNFPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPlJQNVk1RU5pMTVZWllDc3BkRVhhdzdFZEozWW5Ic1hkTUxmbGcyd1FLWEZmZzI0UC9BV3piQT09PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxYNTA5RGF0YT48WDUwOVN1YmplY3ROYW1lPkNOPVwgU3BhY2V5XCAsQz1VUzwvWDUwOVN1YmplY3ROYW1lPjwvWDUwOURhdGE+PC9LZXlJbmZvPjxPYmplY3QgSWQ9Im9iamVjdCI+QXBwcm92ZWQ8L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy0yLVNVTi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy0yLVNVTi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRjNDM0MgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTItU1VOLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPm54R1Z4VHpYM3VRVmVhWjd2dFdNTGMrVjZDRT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+VjE4bnhsczFwcW40SXlBL0dOb3NHZnFMSEVFNklObnl1VjlUbUhsWXQvc1lzYWFnSENIOVh3PT08L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxYNTA5RGF0YT48WDUwOVN1YmplY3ROYW1lPkNOPVwgU3BhY2V5XCAsQz1VUzwvWDUwOVN1YmplY3ROYW1lPjwvWDUwOURhdGE+PC9LZXlJbmZvPjxPYmplY3QgSWQ9Im9iamVjdCI+QXBwcm92ZWQ8L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy0yLVVQQy54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy0yLVVQQy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjU0ZWM4MAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTItVVBDLnhtbApAQCAtMCwwICsxIEBACis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIiAvPjxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+PERpZ2VzdFZhbHVlPm54R1Z4VHpYM3VRVmVhWjd2dFdNTGMrVjZDRT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+RlF4c1RSaW1QcWk4dE9Ja1NPajJVdHBtY2F3RFdKL2huSzgzVHo0RG9iZE9aa0JyMTAyNFZRPT08L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxYNTA5RGF0YT48WDUwOVN1YmplY3ROYW1lPkNOPVwgU3BhY2V5XCAsQz1VUzwvWDUwOVN1YmplY3ROYW1lPjwvWDUwOURhdGE+PC9LZXlJbmZvPjxPYmplY3QgSWQ9Im9iamVjdCI+QXBwcm92ZWQ8L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy0yLXRlbXBsYXRlLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTItdGVtcGxhdGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3ZDFjOTUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy0yLXRlbXBsYXRlLnhtbApAQCAtMCwwICsxLDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLSBlbnZlbG9waW5nIGlucHV0LnR4dCAtLT4NCis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPjwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxYNTA5RGF0YT48WDUwOVN1YmplY3ROYW1lPkNOPVwgU3BhY2V5XCAsQz1VUzwvWDUwOVN1YmplY3ROYW1lPjwvWDUwOURhdGE+PC9LZXlJbmZvPjxPYmplY3QgSWQ9Im9iamVjdCI+PC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMy1JQUlLLXJlZjAuZGVyZWZVUkkgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy0zLUlBSUstcmVmMC5kZXJlZlVSSQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGY4ZTllCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMy1JQUlLLXJlZjAuZGVyZWZVUkkKQEAgLTAsMCArMSw2IEBACistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTm9kZVNldERhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTm9kZSAxIDogW09iamVjdDogbnVsbF0KK05vZGUgMiA6IElkPSJvYmplY3QiCitOb2RlIDMgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgNCA6IFsjdGV4dDogQXBwcm92ZWRdCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMy1JQUlLLXJlZjAuZGlnZXN0aW5wdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy0zLUlBSUstcmVmMC5kaWdlc3RpbnB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDRkNjg2Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMy1JQUlLLXJlZjAuZGlnZXN0aW5wdXQKQEAgLTAsMCArMSBAQAorPE9iamVjdCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Im9iamVjdCI+QXBwcm92ZWQ8L09iamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy0zLUlBSUsueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMy1JQUlLLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGY0OWVkCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMy1JQUlLLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPm54R1Z4VHpYM3VRVmVhWjd2dFdNTGMrVjZDRT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+TmZ3RXdmTEZLUTg3YkN5U3JjSit4ZWxrbzVkL1FzUmg4VXpzQ3BzSzhHQjI3TW8yMXI0L1JnPT08L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxYNTA5RGF0YT48WDUwOVN1YmplY3ROYW1lPkNOPVwwMCxDPVVTPC9YNTA5U3ViamVjdE5hbWU+PC9YNTA5RGF0YT48L0tleUluZm8+PE9iamVjdCBJZD0ib2JqZWN0Ij5BcHByb3ZlZDwvT2JqZWN0PjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTMtT1JDTC54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy0zLU9SQ0wueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1MDIwYmUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy0zLU9SQ0wueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiNvYmplY3QiPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5ueEdWeFR6WDN1UVZlYVo3dnRXTUxjK1Y2Q0U9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWUgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+ZnIzSDNhRk9OVVlDRG5XMWNUQVprNGN3MHFNME5HbzdienhkZ1NkRGVHK0p6ME1EbDNDVlJnPT08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PFg1MDlEYXRhPjxYNTA5U3ViamVjdE5hbWU+Q049XDAwLEM9VVM8L1g1MDlTdWJqZWN0TmFtZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48T2JqZWN0IElkPSJvYmplY3QiPkFwcHJvdmVkPC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMy1TVU4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMy1TVU4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyNWRhYmUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy0zLVNVTi54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiNvYmplY3QiPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5ueEdWeFR6WDN1UVZlYVo3dnRXTUxjK1Y2Q0U9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPk42akhwWW5ZcGdncmZBREprdlpmZ2dDYVVxOWR6VTlNM0VRKzI3d0E4Zjkybld3bXJseVVRUT09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlTdWJqZWN0TmFtZT5DTj1cMDAsQz1VUzwvWDUwOVN1YmplY3ROYW1lPjwvWDUwOURhdGE+PC9LZXlJbmZvPjxPYmplY3QgSWQ9Im9iamVjdCI+QXBwcm92ZWQ8L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy0zLVVQQy54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy0zLVVQQy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA4OWRlOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTMtVVBDLnhtbApAQCAtMCwwICsxIEBACis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIiAvPjxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+PERpZ2VzdFZhbHVlPm54R1Z4VHpYM3VRVmVhWjd2dFdNTGMrVjZDRT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+aFY0VnBiNEpCdXFOK1VLb3k1UGhoT0VlNGFzRmZmRHcvTWxZMDlJN0ZTZUxFRWZKMzVmR0h3PT08L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxYNTA5RGF0YT48WDUwOVN1YmplY3ROYW1lPkNOPVwwMCxDPVVTPC9YNTA5U3ViamVjdE5hbWU+PC9YNTA5RGF0YT48L0tleUluZm8+PE9iamVjdCBJZD0ib2JqZWN0Ij5BcHByb3ZlZDwvT2JqZWN0PjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTMtdGVtcGxhdGUueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtMy10ZW1wbGF0ZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTcyNWI1MwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTMtdGVtcGxhdGUueG1sCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tIGVudmVsb3BpbmcgaW5wdXQudHh0IC0tPg0KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PFg1MDlEYXRhPjxYNTA5U3ViamVjdE5hbWU+Q049XDAwLEM9VVM8L1g1MDlTdWJqZWN0TmFtZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48T2JqZWN0IElkPSJvYmplY3QiPjwvT2JqZWN0PjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTQtSUFJSy1yZWYwLmRlcmVmVVJJIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtNC1JQUlLLXJlZjAuZGVyZWZVUkkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRmOGU5ZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTQtSUFJSy1yZWYwLmRlcmVmVVJJCkBAIC0wLDAgKzEsNiBAQAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE5vZGVTZXREYXRhIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05vZGUgMSA6IFtPYmplY3Q6IG51bGxdCitOb2RlIDIgOiBJZD0ib2JqZWN0IgorTm9kZSAzIDogeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiCitOb2RlIDQgOiBbI3RleHQ6IEFwcHJvdmVkXQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTQtSUFJSy1yZWYwLmRpZ2VzdGlucHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtNC1JQUlLLXJlZjAuZGlnZXN0aW5wdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA0ZDY4NgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTQtSUFJSy1yZWYwLmRpZ2VzdGlucHV0CkBAIC0wLDAgKzEgQEAKKzxPYmplY3QgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIElkPSJvYmplY3QiPkFwcHJvdmVkPC9PYmplY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtNC1JQUlLLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTQtSUFJSy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM3NjUzNAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTQtSUFJSy54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiNvYmplY3QiPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5ueEdWeFR6WDN1UVZlYVo3dnRXTUxjK1Y2Q0U9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPlZrSWRWSGhjajIxN2NJQjh2OVI3VENWeDIzMDNsano2ZFp3ZWRGTnhmeTJ0SjJOeGZXam4yUT09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlTdWJqZWN0TmFtZT5DTj1OdW0jYmVyLEM9VVM8L1g1MDlTdWJqZWN0TmFtZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48T2JqZWN0IElkPSJvYmplY3QiPkFwcHJvdmVkPC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtNC1PUkNMLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTQtT1JDTC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI2YzVhYgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTQtT1JDTC54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPm54R1Z4VHpYM3VRVmVhWjd2dFdNTGMrVjZDRT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj5Wa0FVZjZFSG9URm9QbUlEMzFpUzdhMVRROTVSVWhyRStZcHU5cGoxNE9iRTE3cUcvZUUzZHc9PTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlTdWJqZWN0TmFtZT5DTj1OdW0jYmVyLEM9VVM8L1g1MDlTdWJqZWN0TmFtZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48T2JqZWN0IElkPSJvYmplY3QiPkFwcHJvdmVkPC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtNC1TVU4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtNC1TVU4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3NmNiZGUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy00LVNVTi54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiNvYmplY3QiPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5ueEdWeFR6WDN1UVZlYVo3dnRXTUxjK1Y2Q0U9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPlFOOGRWVXo0Njc0Q0c3dG5ISitWU0RGS2J0dFozWXdhNXJpem9ZUzJFR1VEOC8zM1JGbFpKQT09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlTdWJqZWN0TmFtZT5DTj1OdW0jYmVyLEM9VVM8L1g1MDlTdWJqZWN0TmFtZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48T2JqZWN0IElkPSJvYmplY3QiPkFwcHJvdmVkPC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtNC1VUEMueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtNC1VUEMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1Y2I4N2QKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy00LVVQQy54bWwKQEAgLTAsMCArMSBAQAorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIC8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIgLz48UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPjxEaWdlc3RWYWx1ZT5ueEdWeFR6WDN1UVZlYVo3dnRXTUxjK1Y2Q0U9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPksySDhvbkxCSGNuYUZCajVNL1N3M1h1anhiQ1drR3J2d09KcGM0aDNnOVUydUg0bWlYZCtsZz09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlTdWJqZWN0TmFtZT5DTj1OdW1cI2JlcixDPVVTPC9YNTA5U3ViamVjdE5hbWU+PC9YNTA5RGF0YT48L0tleUluZm8+PE9iamVjdCBJZD0ib2JqZWN0Ij5BcHByb3ZlZDwvT2JqZWN0PjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTQtdGVtcGxhdGUueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtNC10ZW1wbGF0ZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNiYjFhOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTQtdGVtcGxhdGUueG1sCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tIGVudmVsb3BpbmcgaW5wdXQudHh0IC0tPg0KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PFg1MDlEYXRhPjxYNTA5U3ViamVjdE5hbWU+Q049TnVtI2JlcixDPVVTPC9YNTA5U3ViamVjdE5hbWU+PC9YNTA5RGF0YT48L0tleUluZm8+PE9iamVjdCBJZD0ib2JqZWN0Ij48L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy01LUlBSUstcmVmMC5kZXJlZlVSSSBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTUtSUFJSy1yZWYwLmRlcmVmVVJJCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkZjhlOWUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy01LUlBSUstcmVmMC5kZXJlZlVSSQpAQCAtMCwwICsxLDYgQEAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBOb2RlU2V0RGF0YSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitOb2RlIDEgOiBbT2JqZWN0OiBudWxsXQorTm9kZSAyIDogSWQ9Im9iamVjdCIKK05vZGUgMyA6IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIgorTm9kZSA0IDogWyN0ZXh0OiBBcHByb3ZlZF0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy01LUlBSUstcmVmMC5kaWdlc3RpbnB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTUtSUFJSy1yZWYwLmRpZ2VzdGlucHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwNGQ2ODYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy01LUlBSUstcmVmMC5kaWdlc3RpbnB1dApAQCAtMCwwICsxIEBACis8T2JqZWN0IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiBJZD0ib2JqZWN0Ij5BcHByb3ZlZDwvT2JqZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTUtSUFJSy54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy01LUlBSUsueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3ZTI5OGQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy01LUlBSUsueG1sCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+bnhHVnhUelgzdVFWZWFaN3Z0V01MYytWNkNFPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5nSFhTREkxSERyUFpiTFlRbVBoVkwyTnZFREpJUG1mYmkyWU9lNWU2RUxDZ0RXUURNSTlZQVE9PTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PFg1MDlEYXRhPjxYNTA5U3ViamVjdE5hbWU+Q049RXE9dWFscyxDPVVTPC9YNTA5U3ViamVjdE5hbWU+PC9YNTA5RGF0YT48L0tleUluZm8+PE9iamVjdCBJZD0ib2JqZWN0Ij5BcHByb3ZlZDwvT2JqZWN0PjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTUtT1JDTC54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy01LU9SQ0wueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMjE4N2EKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy01LU9SQ0wueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiNvYmplY3QiPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5ueEdWeFR6WDN1UVZlYVo3dnRXTUxjK1Y2Q0U9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWUgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+ZkRJVTdVV0NIcWVXdU56eEcvYlF2VS9OajFaVFJ1Y1RZUkc5bjZ4TG1qa09mWHlDbXdNWklRPT08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PFg1MDlEYXRhPjxYNTA5U3ViamVjdE5hbWU+Q049RXE9dWFscyxDPVVTPC9YNTA5U3ViamVjdE5hbWU+PC9YNTA5RGF0YT48L0tleUluZm8+PE9iamVjdCBJZD0ib2JqZWN0Ij5BcHByb3ZlZDwvT2JqZWN0PjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTUtU1VOLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTUtU1VOLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjdlYjc4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtNS1TVU4ueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJubyI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+bnhHVnhUelgzdVFWZWFaN3Z0V01MYytWNkNFPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5URUZTdTVobXI4cjVKVTc4VTlNZ1MwbWRaSVpPWFVqT1JUUnpERmFCV2g5RGhGalBqeHhXNHc9PTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PFg1MDlEYXRhPjxYNTA5U3ViamVjdE5hbWU+Q049RXE9dWFscyxDPVVTPC9YNTA5U3ViamVjdE5hbWU+PC9YNTA5RGF0YT48L0tleUluZm8+PE9iamVjdCBJZD0ib2JqZWN0Ij5BcHByb3ZlZDwvT2JqZWN0PjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTUtVVBDLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTUtVVBDLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWRjNTMxCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtNS1VUEMueG1sCkBAIC0wLDAgKzEgQEAKKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiAvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiIC8+PFJlZmVyZW5jZSBVUkk9IiNvYmplY3QiPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz48RGlnZXN0VmFsdWU+bnhHVnhUelgzdVFWZWFaN3Z0V01MYytWNkNFPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5Eanc3ck4rOFRFMzc1WnVPcGtKZTBQeG03b0NUSWY3VUVEb3JFd05sK2daY2pBaVNwQzArZ1E9PTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PFg1MDlEYXRhPjxYNTA5U3ViamVjdE5hbWU+Q049RXFcPXVhbHMsQz1VUzwvWDUwOVN1YmplY3ROYW1lPjwvWDUwOURhdGE+PC9LZXlJbmZvPjxPYmplY3QgSWQ9Im9iamVjdCI+QXBwcm92ZWQ8L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy01LXRlbXBsYXRlLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTUtdGVtcGxhdGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1OTlhZDQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy01LXRlbXBsYXRlLnhtbApAQCAtMCwwICsxLDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLSBlbnZlbG9waW5nIGlucHV0LnR4dCAtLT4NCis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPjwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxYNTA5RGF0YT48WDUwOVN1YmplY3ROYW1lPkNOPUVxPXVhbHMsQz1VUzwvWDUwOVN1YmplY3ROYW1lPjwvWDUwOURhdGE+PC9LZXlJbmZvPjxPYmplY3QgSWQ9Im9iamVjdCI+PC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtNi1VUEMueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtNi1VUEMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0ODI1ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy02LVVQQy54bWwKQEAgLTAsMCArMSBAQAorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIC8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIgLz48UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPjxEaWdlc3RWYWx1ZT5ueEdWeFR6WDN1UVZlYVo3dnRXTUxjK1Y2Q0U9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPlgvdGsvc01wUmFaMWtiQklja1JJT1c0cmEwaG5PcWl2a3FET0F6d0M2ejRyaERHYklpRGFqdz09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlTdWJqZWN0TmFtZT5DTj1UcmFpbGluZ1wgXCAsQz1VUzwvWDUwOVN1YmplY3ROYW1lPjwvWDUwOURhdGE+PC9LZXlJbmZvPjxPYmplY3QgSWQ9Im9iamVjdCI+QXBwcm92ZWQ8L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy03LVVQQy54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy03LVVQQy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI2OTA1MAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RpZmZSRkNzLTctVVBDLnhtbApAQCAtMCwwICsxIEBACis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIiAvPjxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+PERpZ2VzdFZhbHVlPm54R1Z4VHpYM3VRVmVhWjd2dFdNTGMrVjZDRT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+QWNNbHYwNFNGQlVkU2k3NExKbjN4eEplVjF0VDhlcWlWcmRxZ3lzalJUZFNoRFNFdUdYSzNRPT08L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxYNTA5RGF0YT48WDUwOVN1YmplY3ROYW1lPkNOPUNvbgl0cm9sLEM9VVM8L1g1MDlTdWJqZWN0TmFtZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48T2JqZWN0IElkPSJvYmplY3QiPkFwcHJvdmVkPC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtOC1VUEMueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZGlmZlJGQ3MtOC1VUEMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2NjJlY2QKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kaWZmUkZDcy04LVVQQy54bWwKQEAgLTAsMCArMSBAQAorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIC8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIgLz48UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPjxEaWdlc3RWYWx1ZT5ueEdWeFR6WDN1UVZlYVo3dnRXTUxjK1Y2Q0U9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPks0U3JWaTBVM0cvUnVxMHFnMGJRQ3pxdmpXZHpYVjVIUGU5ZjJ6QXJkOUlQa2ppVHcrT1h5Zz09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlTdWJqZWN0TmFtZT5DTj1FXCtzXCxjXDthcGVkLEM9VVM8L1g1MDlTdWJqZWN0TmFtZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48T2JqZWN0IElkPSJvYmplY3QiPkFwcHJvdmVkPC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctNC1JQUlLLXJlZjAuZGVyZWZVUkkgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kblN0cmluZy00LUlBSUstcmVmMC5kZXJlZlVSSQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGY4ZTllCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctNC1JQUlLLXJlZjAuZGVyZWZVUkkKQEAgLTAsMCArMSw2IEBACistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTm9kZVNldERhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTm9kZSAxIDogW09iamVjdDogbnVsbF0KK05vZGUgMiA6IElkPSJvYmplY3QiCitOb2RlIDMgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgNCA6IFsjdGV4dDogQXBwcm92ZWRdCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctNC1JQUlLLXJlZjAuZGlnZXN0aW5wdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kblN0cmluZy00LUlBSUstcmVmMC5kaWdlc3RpbnB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDRkNjg2Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctNC1JQUlLLXJlZjAuZGlnZXN0aW5wdXQKQEAgLTAsMCArMSBAQAorPE9iamVjdCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Im9iamVjdCI+QXBwcm92ZWQ8L09iamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kblN0cmluZy00LUlBSUsueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctNC1JQUlLLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDU3MzZiCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctNC1JQUlLLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPm54R1Z4VHpYM3VRVmVhWjd2dFdNTGMrVjZDRT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+TTd2SThFL1NzclVmeHFUMitjWGRndGJjdHFLUDhyMVdUUkRTWVprblgwNEVIcFg5YzIzdGh3PT08L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxYNTA5RGF0YT48WDUwOVN1YmplY3ROYW1lPkNOPVRyYWlsaW5nIFwgLEM9VVM8L1g1MDlTdWJqZWN0TmFtZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48T2JqZWN0IElkPSJvYmplY3QiPkFwcHJvdmVkPC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctNC1PUkNMLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RuU3RyaW5nLTQtT1JDTC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBjMWRmNgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RuU3RyaW5nLTQtT1JDTC54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPm54R1Z4VHpYM3VRVmVhWjd2dFdNTGMrVjZDRT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj5DUUtyWTV6QmJDaXc2RFltK2NXRW9rNEhZZ3NyQ0VlMWthYVRLTW9YK3Jrb3l0Q3BZTlI4ZUE9PTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlTdWJqZWN0TmFtZT5DTj1UcmFpbGluZ1wyMFwyMCxDPVVTPC9YNTA5U3ViamVjdE5hbWU+PC9YNTA5RGF0YT48L0tleUluZm8+PE9iamVjdCBJZD0ib2JqZWN0Ij5BcHByb3ZlZDwvT2JqZWN0PjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RuU3RyaW5nLTQtU1VOLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RuU3RyaW5nLTQtU1VOLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzAxZjU2Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctNC1TVU4ueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJubyI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+bnhHVnhUelgzdVFWZWFaN3Z0V01MYytWNkNFPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5PTmQ4T29PbnY5T1RoeWlUUGtuZUVjc2RnVnQ2NXc2QWdVQXhpZGVrSGVLbWp5UXhuWUVkV0E9PTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PFg1MDlEYXRhPjxYNTA5U3ViamVjdE5hbWU+Q049VHJhaWxpbmdcMjBcMjAsQz1VUzwvWDUwOVN1YmplY3ROYW1lPjwvWDUwOURhdGE+PC9LZXlJbmZvPjxPYmplY3QgSWQ9Im9iamVjdCI+QXBwcm92ZWQ8L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kblN0cmluZy00LVVQQy54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kblN0cmluZy00LVVQQy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ4MjVkOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RuU3RyaW5nLTQtVVBDLnhtbApAQCAtMCwwICsxIEBACis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIiAvPjxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+PERpZ2VzdFZhbHVlPm54R1Z4VHpYM3VRVmVhWjd2dFdNTGMrVjZDRT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+WC90ay9zTXBSYVoxa2JCSWNrUklPVzRyYTBobk9xaXZrcURPQXp3QzZ6NHJoREdiSWlEYWp3PT08L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxYNTA5RGF0YT48WDUwOVN1YmplY3ROYW1lPkNOPVRyYWlsaW5nXCBcICxDPVVTPC9YNTA5U3ViamVjdE5hbWU+PC9YNTA5RGF0YT48L0tleUluZm8+PE9iamVjdCBJZD0ib2JqZWN0Ij5BcHByb3ZlZDwvT2JqZWN0PjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RuU3RyaW5nLTQtdGVtcGxhdGUueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctNC10ZW1wbGF0ZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDMwOWUxMQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RuU3RyaW5nLTQtdGVtcGxhdGUueG1sCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tIGVudmVsb3BpbmcgaW5wdXQudHh0IC0tPg0KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PFg1MDlEYXRhPjxYNTA5U3ViamVjdE5hbWU+Q049VHJhaWxpbmdcMjBcMjAsQz1VUzwvWDUwOVN1YmplY3ROYW1lPjwvWDUwOURhdGE+PC9LZXlJbmZvPjxPYmplY3QgSWQ9Im9iamVjdCI+PC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctNi1JQUlLLXJlZjAuZGVyZWZVUkkgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kblN0cmluZy02LUlBSUstcmVmMC5kZXJlZlVSSQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGY4ZTllCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctNi1JQUlLLXJlZjAuZGVyZWZVUkkKQEAgLTAsMCArMSw2IEBACistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTm9kZVNldERhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTm9kZSAxIDogW09iamVjdDogbnVsbF0KK05vZGUgMiA6IElkPSJvYmplY3QiCitOb2RlIDMgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgNCA6IFsjdGV4dDogQXBwcm92ZWRdCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctNi1JQUlLLXJlZjAuZGlnZXN0aW5wdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kblN0cmluZy02LUlBSUstcmVmMC5kaWdlc3RpbnB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDRkNjg2Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctNi1JQUlLLXJlZjAuZGlnZXN0aW5wdXQKQEAgLTAsMCArMSBAQAorPE9iamVjdCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgSWQ9Im9iamVjdCI+QXBwcm92ZWQ8L09iamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kblN0cmluZy02LUlBSUsueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctNi1JQUlLLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWVkOWNkCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctNi1JQUlLLnhtbApAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPm54R1Z4VHpYM3VRVmVhWjd2dFdNTGMrVjZDRT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+aWNtMjVGRVhwblFnejNlMmxQalFYSEsvTk9nUHZCeFN6cGh5UlRBSTd5Y2lLbGo0anhMZHZBPT08L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxYNTA5RGF0YT48WDUwOVN1YmplY3ROYW1lPkNOPUNvblwwOXRyb2wsQz1VUzwvWDUwOVN1YmplY3ROYW1lPjwvWDUwOURhdGE+PC9LZXlJbmZvPjxPYmplY3QgSWQ9Im9iamVjdCI+QXBwcm92ZWQ8L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kblN0cmluZy02LU9SQ0wueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctNi1PUkNMLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDc5YTBjCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctNi1PUkNMLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+bnhHVnhUelgzdVFWZWFaN3Z0V01MYytWNkNFPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPlJjTkVnSENYZE0xWWthQ3RSc3RGc1hHNE8zc2FvdEF0R3lKUFVCbDFWR1B0UzhhUHA4aG5Kdz09PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxYNTA5RGF0YT48WDUwOVN1YmplY3ROYW1lPkNOPUNvblwwOXRyb2wsQz1VUzwvWDUwOVN1YmplY3ROYW1lPjwvWDUwOURhdGE+PC9LZXlJbmZvPjxPYmplY3QgSWQ9Im9iamVjdCI+QXBwcm92ZWQ8L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kblN0cmluZy02LVNVTi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kblN0cmluZy02LVNVTi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTBiNWE2YwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RuU3RyaW5nLTYtU1VOLnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPm54R1Z4VHpYM3VRVmVhWjd2dFdNTGMrVjZDRT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+VjM0cEtHSWZLYWN3SnRURVNoZlNYeDRNMmRoU09UcVpWQ0lMNm5PNjZsbStKVFEvL3dDS2FBPT08L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxYNTA5RGF0YT48WDUwOVN1YmplY3ROYW1lPkNOPUNvblwwOXRyb2wsQz1VUzwvWDUwOVN1YmplY3ROYW1lPjwvWDUwOURhdGE+PC9LZXlJbmZvPjxPYmplY3QgSWQ9Im9iamVjdCI+QXBwcm92ZWQ8L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kblN0cmluZy02LVVQQy54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kblN0cmluZy02LVVQQy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI2OTA1MAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RuU3RyaW5nLTYtVVBDLnhtbApAQCAtMCwwICsxIEBACis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIiAvPjxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+PERpZ2VzdFZhbHVlPm54R1Z4VHpYM3VRVmVhWjd2dFdNTGMrVjZDRT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+QWNNbHYwNFNGQlVkU2k3NExKbjN4eEplVjF0VDhlcWlWcmRxZ3lzalJUZFNoRFNFdUdYSzNRPT08L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxYNTA5RGF0YT48WDUwOVN1YmplY3ROYW1lPkNOPUNvbgl0cm9sLEM9VVM8L1g1MDlTdWJqZWN0TmFtZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48T2JqZWN0IElkPSJvYmplY3QiPkFwcHJvdmVkPC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctNi10ZW1wbGF0ZS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kblN0cmluZy02LXRlbXBsYXRlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTVjMGJlCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctNi10ZW1wbGF0ZS54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0gZW52ZWxvcGluZyBpbnB1dC50eHQgLS0+DQorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiNvYmplY3QiPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT48L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlTdWJqZWN0TmFtZT5DTj1Db25cMDl0cm9sLEM9VVM8L1g1MDlTdWJqZWN0TmFtZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48T2JqZWN0IElkPSJvYmplY3QiPjwvT2JqZWN0PjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RuU3RyaW5nLTgtSUFJSy1yZWYwLmRlcmVmVVJJIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctOC1JQUlLLXJlZjAuZGVyZWZVUkkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRmOGU5ZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RuU3RyaW5nLTgtSUFJSy1yZWYwLmRlcmVmVVJJCkBAIC0wLDAgKzEsNiBAQAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE5vZGVTZXREYXRhIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05vZGUgMSA6IFtPYmplY3Q6IG51bGxdCitOb2RlIDIgOiBJZD0ib2JqZWN0IgorTm9kZSAzIDogeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiCitOb2RlIDQgOiBbI3RleHQ6IEFwcHJvdmVkXQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RuU3RyaW5nLTgtSUFJSy1yZWYwLmRpZ2VzdGlucHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctOC1JQUlLLXJlZjAuZGlnZXN0aW5wdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA0ZDY4NgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RuU3RyaW5nLTgtSUFJSy1yZWYwLmRpZ2VzdGlucHV0CkBAIC0wLDAgKzEgQEAKKzxPYmplY3QgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIElkPSJvYmplY3QiPkFwcHJvdmVkPC9PYmplY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctOC1JQUlLLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RuU3RyaW5nLTgtSUFJSy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM0MzAyMgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RuU3RyaW5nLTgtSUFJSy54bWwKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiNvYmplY3QiPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5ueEdWeFR6WDN1UVZlYVo3dnRXTUxjK1Y2Q0U9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPkpLL01CYWIxZzJCZVE2cDJRSHRhcy9lY3J2QjFtUDZYUGNKcHhtT0trNnErQ3ZqN28rZFp5dz09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlTdWJqZWN0TmFtZT5DTj1FXCtzXCxjXDthcGVkLEM9VVM8L1g1MDlTdWJqZWN0TmFtZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48T2JqZWN0IElkPSJvYmplY3QiPkFwcHJvdmVkPC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctOC1PUkNMLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RuU3RyaW5nLTgtT1JDTC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY5YmY3MQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2RuU3RyaW5nLTgtT1JDTC54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPm54R1Z4VHpYM3VRVmVhWjd2dFdNTGMrVjZDRT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj5rK0dTM2VSNFVMY1VycU5BVzd2OXBZTkpwMzFsUFAxNjZiR0RENXZvajl4S1dqcXpBazZpb1E9PTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlTdWJqZWN0TmFtZT5DTj1FXCtzXCxjXDthcGVkLEM9VVM8L1g1MDlTdWJqZWN0TmFtZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48T2JqZWN0IElkPSJvYmplY3QiPkFwcHJvdmVkPC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctOC1TVU4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctOC1TVU4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyMjU5ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kblN0cmluZy04LVNVTi54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiNvYmplY3QiPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5ueEdWeFR6WDN1UVZlYVo3dnRXTUxjK1Y2Q0U9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPkwycitRQ2lPMHFPUGdEWXliVGhRRWJQN0E4SXE4QW9tREdCWGdRcWU0bWt1TE1ucm9UeG5HQT09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlTdWJqZWN0TmFtZT5DTj1FXCtzXCxjXDthcGVkLEM9VVM8L1g1MDlTdWJqZWN0TmFtZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48T2JqZWN0IElkPSJvYmplY3QiPkFwcHJvdmVkPC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctOC1VUEMueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctOC1VUEMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2NjJlY2QKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kblN0cmluZy04LVVQQy54bWwKQEAgLTAsMCArMSBAQAorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiIC8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIgLz48UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPjxEaWdlc3RWYWx1ZT5ueEdWeFR6WDN1UVZlYVo3dnRXTUxjK1Y2Q0U9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPks0U3JWaTBVM0cvUnVxMHFnMGJRQ3pxdmpXZHpYVjVIUGU5ZjJ6QXJkOUlQa2ppVHcrT1h5Zz09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlTdWJqZWN0TmFtZT5DTj1FXCtzXCxjXDthcGVkLEM9VVM8L1g1MDlTdWJqZWN0TmFtZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48T2JqZWN0IElkPSJvYmplY3QiPkFwcHJvdmVkPC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctOC10ZW1wbGF0ZS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9kblN0cmluZy04LXRlbXBsYXRlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2VlNzYxCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvZG5TdHJpbmctOC10ZW1wbGF0ZS54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0gZW52ZWxvcGluZyBpbnB1dC50eHQgLS0+DQorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiNvYmplY3QiPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT48L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlTdWJqZWN0TmFtZT5DTj1FXCtzXCxjXDthcGVkLEM9VVM8L1g1MDlTdWJqZWN0TmFtZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48T2JqZWN0IElkPSJvYmplY3QiPjwvT2JqZWN0PjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2lucHV0LnR4dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2RuYW1lL2lucHV0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzFiMzA2Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvaW5wdXQudHh0CkBAIC0wLDAgKzEgQEAKK0FwcHJvdmVkClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvaW52ZW50b3J5IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvZG5hbWUvaW52ZW50b3J5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0MjlhZDMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9kbmFtZS9pbnZlbnRvcnkKQEAgLTAsMCArMSwzIEBACitkblN0cmluZy00CitkblN0cmluZy02CitkblN0cmluZy04CmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9pbnZlbnRvcnkgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy9pbnZlbnRvcnkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ2Zjc2ZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL2ludmVudG9yeQpAQCAtMCwwICsxLDMgQEAKK2RlZkNhbi0xCitkZWZDYW4tMgorZGVmQ2FuLTMKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3JlcG9ydC5odG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvcmVwb3J0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDMxZDExYgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3JlcG9ydC5odG1sCkBAIC0wLDAgKzEsMzIzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIKKyAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWw6bGFuZz0iZW4iIGxhbmc9ImVuIj48aGVhZD48dGl0bGU+SW1wbGVtZW50YXRpb24gcmVwb3J0IFhNTCBTaWduYXR1cmUsIDJuZCBFZGl0aW9uPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvU3R5bGVTaGVldHMvYmFzZS5jc3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1N0eWxlU2hlZXRzL21lbWJlci5jc3MiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL3JlcG9ydC5jc3MiIC8+Cis8L2hlYWQ+Cis8Ym9keT4KKzxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLyI+PGltZyBhbHQ9IlczQyBMb2dvIiBzcmM9Imh0dHA6Ly93d3cudzMub3JnL0ljb25zL3czY19ob21lIi8+PC9hPgorPGgxPkltcGxlbWVudGF0aW9uIHJlcG9ydCBmb3IgWE1MIFNpZ25hdHVyZSwgU2Vjb25kIEVkaXRpb248L2gxPgorPGRsPgorICA8ZHQ+QXV0aG9yPC9kdD4KKyAgICA8ZGQ+RnJlZGVyaWNrIEhpcnNjaDwvZGQ+CisgICAgPGRkPlRob21hcyBSb2Vzc2xlcjwvZGQ+CisgIDxkdD5MYXN0IE1vZGlmaWVkPC9kdD4KKyAgICA8ZGQ+JERhdGU6IDIwMDgvMDIvMTUgMTU6MTY6MjIgJCBieSAkQXV0aG9yOiBmaGlyc2NoMyAkPC9kZD4KKzwvZGw+Cis8aDI+T3ZlcnZpZXc8L2gyPgorPGRpdj4KKworICA8cD4KKyAgICBUaGlzIGltcGxlbWVudGF0aW9uIHJlcG9ydCBpcyBpbnRlbmRlZCB0byBzdXBwb3J0IHRoZSB0cmFuc2l0aW9uIG9mIHRoZSBkcmFmdCA8YQorICAgIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDcveG1sc2VjL0RyYWZ0cy94bWxkc2lnLWNvcmUvIj5YTUwgU2lnbmF0dXJlLCAybmQgRWRpdGlvbjwvYT4KKyAgICBzcGVjaWZpY2F0aW9uIHRvIDxhCisgICAgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwNS8xMC9Qcm9jZXNzLTIwMDUxMDE0L3RyLmh0bWwjUHJvcG9zZWRFZGl0ZWRSZWMiPlByb3Bvc2VkIEVkaXRlZAorICAgIFJlY29tbWVuZGF0aW9uPC9hPi4KKyAgPC9wPgorCisgIDxwPgorICAgIFRoZSBzcGVjaWZpY2F0aW9uIHdhcyBwcm9kdWNlZCBieSB0aGUgPGEgaHJlZj0iLzIwMDcveG1sc2VjLyI+WE1MIFNlY3VyaXR5IFNwZWNpZmljYXRpb25zCisgICAgTWFpbnRlbmFuY2UgV29ya2luZyBHcm91cDwvYT4uICBBIDxhCisgICAgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwNy94bWxzZWMvRHJhZnRzL3htbGRzaWctY29yZS9leHBsYWluLmh0bWwiPlN1bW1hcnkgb2YgQ2hhbmdlcyBhbmQKKyAgICBDaGFuZ2UgUmF0aW9uYWxlPC9hPiBpcyBhdmFpbGFibGUuCisgIDwvcD4KKworICA8cD4KKyAgICBUZXN0aW5nIHdhcyBvcmdhbml6ZWQgYW5kIHBlcmZvcm1lZCBieSB0aGUgbWVtYmVycyBvZiB0aGUgWE1MIFNlY3VyaXR5IFNwZWNpZmljYXRpb25zCisgICAgTWFpbnRlbmFuY2UgV29ya2luZyBHcm91cC4gRml2ZSBpbXBsZW1lbnRhdGlvbnMgcGFydGljaXBhdGVkIGluIHRoZSB0ZXN0aW5nLiBBbGwgZml2ZQorICAgIGltcGxlbWVudGF0aW9ucyBzdWNjZXNzZnVsbHkgY29tcGxldGVkIHRoZSB0ZXN0IGNhc2VzIGxpc3RlZCBpbiB0aGlzIHJlcG9ydDsgc29tZSBjb21wbGV0ZWQKKyAgICBhZGRpdGlvbmFsIG9wdGlvbmFsIGNhc2VzLiAKKyAgPC9wPgorCisgIDxwPgorICAgIFRlc3QgY2FzZXMgYXJlIGRldGFpbGVkIGluIHRoZSA8YQorICAgIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDcveG1sc2VjL2ludGVyb3AveG1sc2lnLWludGVyb3AtZG9jL3Rlc3RjYXNlcy5odG1sIj5UZXN0IENhc2VzIGZvcgorICAgIEMxNE4gMS4xIGFuZCBYTUxEU2lnIEludGVyb3BlcmFiaWxpdHk8L2E+IGRvY3VtZW50LgorICA8L3A+CisKKyAgPGgyPlRlc3QgQ2FzZXM8L2gyPgorCisgIDxwPlRoZSB0ZXN0IGNhc2VzIHRlc3RlZCBieSBhbGwgaW1wbGVtZW50YXRpb25zIGNvdmVyZWQgdGhlIGZvbGxvd2luZzo8L3A+CisgIDx1bD4KKyAgICA8bGkgaWQ9ImxpLXJlZiI+CisgICAgICA8cD4gPGNvZGU+ZHM6UmVmZXJlbmNlPC9jb2RlPiA8Y29kZT5VUkk8L2NvZGU+IGF0dHJpYnV0ZSBwcm9jZXNzaW5nIGZvciBzY2hlbWEgYmFzZWQgWFBvaW50ZXJzCisgICAgICBhbmQgc2hvcnQtbmFtZSBYUG9pbnRlcnMuIFRoZXNlIHRlc3RzIGRlbW9uc3RyYXRlIHN1cHBvcnQgZm9yIHRoZSBYUG9pbnRlciBpZGlvbXMgdGhhdCBoYXZlCisgICAgICBiZWVuIG1hbmRhdG9yeSB0byBpbXBsZW1lbnQgc2luY2UgWE1MLVNpZ25hdHVyZSAxLjAsIGJ1dCB3ZXJlIGRlZmluZWQgb25seSBieSB3YXkgb2YgYQorICAgICAgbm9ybWF0aXZlIHJlZmVyZW5jZSB0byBhIENhbmRpZGF0ZSBSZWNvbW1lbmRhdGlvbiB0aGF0IGhhZCBiZWVuIHN1YnNlcXVlbnRseSB3aXRoZHJhd24uIEBAIGFkZAorICAgICAgcmVmZXJlbmNlIEBACisgICAgICA8L3A+CisKKyAgICAgIDxwPlNlZSBhbHNvOiA8YQorICAgICAgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwNy94bWxzZWMvaW50ZXJvcC94bWxzaWctaW50ZXJvcC1kb2MvdGVzdGNhc2VzLmh0bWwjVGVzdENhc2VzLVNjaGVtYUJhc2VkWFBvaW50ZXJzIj5kZXRhaWxlZAorICAgICAgZGVzY3JpcHRpb24gb2Ygc2NoZW1hIGJhc2VkIFhQb2ludGVycyBhbmQgc2hvcnQtbmFtZSBYUG9pbnRlcnMgdGVzdCBjYXNlczwvYT4uCisgICAgICA8L3A+CisgICAgPC9saT4KKyAgICA8bGkgaWQ9ImxpLWRuIj4KKyAgICAgIDxwPgorCVJlcHJlc2VudGF0aW9uIG9mIERpc3Rpbmd1aXNoZWQgTmFtZXMgYXMgU3RyaW5ncyBhcyBzcGVjaWZpZWQgYnkgUkZDIDQ1MTQuICBUaGVzZSB0ZXN0IGNhc2VzCisJcHJvdmlkZSBldmlkZW5jZSB0aGF0IHRoZSBlZGdlIGNhc2VzIHJlbGF0ZWQgdG8gYSBjaGFuZ2Ugb2Ygbm9ybWF0aXZlIHJlZmVyZW5jZXMgZnJvbSBSRkMKKwkyMjUzIHRvIFJGQyA0NTE0IGRvIG5vdCBjYXVzZSBpc3N1ZXMgaW4gaW1wbGVtZW50YXRpb25zLiAgU2luY2UgdGhlIElCTSBpbXBsZW1lbnRhdGlvbiBpcworCWtub3duIHRvIHVzZSBhbiBpZGVudGljYWwgY29kZSBiYXNpcyBmb3IgRGlzdGluZ3Vpc2hlZCBOYW1lIHByb2Nlc3NpbmcgYXMgYW5vdGhlcgorCWltcGxlbWVudGF0aW9uLCBubyB0ZXN0IHJlc3VsdHMgd2VyZSBpbmNsdWVkIGZvciB0aGlzIGltcGxlbWVudGF0aW9uLgorICAgICAgPC9wPgorICAgICAgPHA+CisJU2VlIGFsc286IDxhCisJaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwNy94bWxzZWMvaW50ZXJvcC94bWxzaWctaW50ZXJvcC1kb2MvdGVzdGNhc2VzLmh0bWwjVGVzdENhc2VzLURpc3Rpbmd1aXNoZWROYW1lLVJGQzQ1MTQiPmRldGFpbGVkCisJZGVzY3JpcHRpb24gb2YgUkZDLTQ1MTQgdGVzdCBjYXNlczwvYT4uCisgICAgICA8L3A+CisgICAgPC9saT4KKyAgPC91bD4KKyAgPHA+CisgICAgQWRkaXRpb25hbCBvcHRpb25hbCB0ZXN0IGNhc2VzIHdlcmUgY3JlYXRlZCBhbmQgcGFydGlhbGx5IHRlc3RlZCwgYnV0IGFyZSBub3QgZGV0YWlsZWQgaW4gdGhpcworICAgIHJlcG9ydC4gIFRoZXNlIGluY2x1ZGVkOgorICA8L3A+CisgIDx1bD4gCisgICAgPGxpPgorICAgICAgPHA+VGVzdCBjYXNlcyB0byB0ZXN0IG5vZGVzZXQgdG8gb2N0ZXQtc3RyZWFtIGNvbnZlcnNpb24gYnkgQzE0biAxLjEgZXhwbGljaXRseSByZWZsZWN0ZWQgaW4KKyAgICAgIHRoZSBjaGFpbiBvZiB0cmFuc2Zvcm1zICg8YQorICAgICAgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwNy94bWxzZWMvaW50ZXJvcC94bWxzaWctaW50ZXJvcC1kb2MvdGVzdGNhc2VzLmh0bWwjVGVzdENhc2VzLURlZmF1bHRDYW4iPmRldGFpbGVkCisgICAgICBkZXNjcmlwdGlvbiBvZiBkZWZDYW4gdGVzdCBjYXNlczwvYT4pPC9wPgorICAgICAgPHA+CisJVGhlIGRlZkNhbi0qIHRlc3QgY2FzZXMgd2VyZSBpbnRlbmRlZCB0byBkZW1vbnN0cmF0ZSB0aGF0IGltcGxlbWVudGF0aW9ucyBhcmUgYWJsZSB0bworCWdlbmVyYXRlIHNpZ25hdHVyZXMgdXNpbmcgQ2Fub25pY2FsIFhNTCAxLjEgYXMgYSBkZWZhdWx0LiBIb3dldmVyLCBhbGwgdGVzdCBjYXNlcyByZWx5IG9uCisJdGhlIGF2YWlsYWJpbGl0eSBvZiBhIHRlbXBsYXRpbmcgbWVjaGFuaXNtLCBhbmQgdHdvIG9mIHRoZW0gcmVseSBvbiB0aGUgKG9wdGlvbmFsKSBYU0xUCisJdHJhbnNmb3JtLiAgV2UgdGhlcmVmb3JlIGRvIG5vdCBpbmNsdWRlIGRldGFpbGVkIHJlc3VsdHMgZm9yIHRoaXMgdGVzdCBjYXNlLgorICAgICAgPC9wPgorICAgIDwvbGk+CisgIDwvdWw+CisKKyAgPHA+CisgICAgVGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDcveG1sc2VjL2ludGVyb3AveG1sZHNpZy9jMTRuMTEvcmVwb3J0Lmh0bWwiPmltcGxlbWVudGF0aW9uCisgICAgcmVwb3J0IGZvciBDYW5vbmljYWwgWE1MIDEuMTwvYT4gZGVtb25zdHJhdGVzIHN1cHBvcnQgaW4gYWxsIGZpdmUgaW1wbGVtZW50YXRpb25zIGZvciBib3RoCisgICAgZ2VuZXJhdGluZyBhbmQgdmVyaWZ5aW5nIHNpZ25hdHVyZXMgaW52b2x2aW5nIENhbm9uaWNhbCBYTUwgMS4xLiAgQWxsIHRlc3RzIGNvdmVyZWQgaW4gdGhhdAorICAgIHJlcG9ydCB3ZXJlIHBlcmZvcm1lZCBpbiB0aGUgY29udGV4dCBvZiBnZW5lcmF0aW5nIGFuZCB2ZXJpZnlpbmcgZGlnaXRhbCBzaWduYXR1cmVzIGFjY29yZGluZyB0bworICAgIHRoZSBYTUwgU2lnbmF0dXJlIHNwZWNpZmljYXRpb24uCisgIDwvcD4KKworCis8aDI+UGFydGljaXBhdGluZyBJbXBsZW1lbnRhdGlvbnM8L2gyPgorPGRsPgorICA8ZHQ+PHN0cm9uZz5JQk0gWE1MIERpZ2l0YWwgU2lnbmF0dXJlIFBhY2thZ2U8L3N0cm9uZz4gKElCTSk8L2R0PgorICAgIDxkZD48cD5UaGUgWE1MIERpZ2l0YWwgU2lnbmF0dXJlIHBhY2thZ2UgaXMgYnVuZGxlZCBpbnRvIElCTSBKUkVzIHRoYXQKKyAgICAgIHNoaXAgd2l0aCBJQk0gcHJvZHVjdHMgb3IgYXJlIGRvd25sb2FkZWQgZm9yIElCTSBzeXN0ZW1zLiBUaGUgWE1MCisgICAgICBEaWdpdGFsIFNpZ25hdHVyZSBwYWNrYWdlIGJ1bmRsZWQgaW50byBhbGwgSUJNIEpSRXMgYXQgdGhlIEphdmEgNi4wCisgICAgICBsZXZlbCBvciBoaWdoZXIsIGFuZCBieSBzcGVjaWFsIGFycmFuZ2VtZW50IGF0IGVhcmxpZXIgbGV2ZWxzLiBJdCBpcyBhCisgICAgICBzZXBhcmF0ZSBzZWN1cml0eSBwcm92aWRlciwgc28gd291bGQgZWl0aGVyIG5lZWQgdG8gYmUgaW4gdGhlIHByb3ZpZGVyCisgICAgICBsaXN0IGluIGpyZS9saWIvc2VjdXJpdHkvamF2YS5zZWN1cml0eSBvciBhZGRlZCBwcm9ncmFtbWF0aWNhbGx5IGF0CisgICAgICBydW50aW1lLiBUaGUgQzE0TjExIGNhcGFiaWxpdHkgaXMgY3VycmVudGx5ICgxMSBKYW51YXJ5LCAyMDA4KSBhCisgICAgICB0ZWNobm9sb2d5IHByZXZpZXcgdGhhdCBpcyBub3QgeWV0IGdlbmVyYWxseSBhdmFpbGFibGUuPC9wPgorICAgIDwvZGQ+CisgIDxkdD48c3Ryb25nPlN1biBKYXZhIFhNTCBEaWdpdGFsIFNpZ25hdHVyZSBBUEkgYW5kIEltcGxlbWVudGF0aW9uPC9zdHJvbmc+IChTdW4pPC9kdD4KKyAgICA8ZGQ+PHA+U3VuJ3MgWE1MIERpZ2l0YWwgU2lnbmF0dXJlIGltcGxlbWVudGF0aW9uIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mCisgICAgICB0aGUgc3RhbmRhcmQgSlNSIDEwNSBBUEkgKEphdmEgWE1MIERpZ2l0YWwgU2lnbmF0dXJlIEFQSSkgYW5kIGlzCisgICAgICBpbmNsdWRlZCBpbiBTdW4ncyBKREsgNiBhbmQgQXBwbGljYXRpb24gU2VydmVyIHByb2R1Y3RzLiBUaGUgQzE0TiAxLjEKKyAgICAgIGltcGxlbWVudGF0aW9uIGlzIG5vdCB5ZXQgZ2VuZXJhbGx5IGF2YWlsYWJsZSBidXQgaXMgdGFyZ2V0ZWQgZm9yCisgICAgICBmdXR1cmUgcmVsZWFzZXMuIDwvcD4KKyAgICA8L2RkPgorICAgIDxkdD48c3Ryb25nPk9yYWNsZSBYTUwgRGlnaXRhbCBTaWduYXR1cmUgcGFja2FnZTwvc3Ryb25nPiAoT3JhY2xlKTwvZHQ+CisgICAgPGRkPgorICAgICAgPHA+VGhlIFhNTCBEaWdpdGFsIFNpZ25hdHVyZSBwYWNrYWdlIGlzIHBhcnQgb2YgT3JhY2xlIFNlY3VyaXR5IERldmVsb3BlciBUb29scyB3aGljaCBpcyBwYXJ0IG9mCisgICAgICBPcmFjbGUncyBGdXNpb24gTWlkZGxld2FyZSBwbGF0Zm9ybS4gVGhlIHVwY29taW5nIEFTMTFSMSByZWxlYXNlIG9mIEZ1c2lvbiBNaWRkbGV3YXJlIGluY2x1ZGVzCisgICAgICBmdWxsIHN1cHBvcnQgZm9yIEMxNE4gdmVyc2lvbiAxLjEgaW4gYWRkaXRpb24gdG8gWE1MIFNpZ25hdHVyZSwgWE1MIEVuY3J5cHRpb24sIFhNTCBLZXkKKyAgICAgIE1hbmFnZW1lbnQsIFNBTUwgYW5kIFdlYiBTZXJ2aWNlcyBTZWN1cml0eSB0ZWNobm9sb2dpZXMuIFRoZSBYTUwgRGlnaXRhbCBTaWduYXR1cmUKKyAgICAgIGZ1bmN0aW9uYWxpdHkgY2FuIGJlIGFjY2Vzc2VkIHVzaW5nIHRoZSBpbmR1c3RyeSBzdGFuZGFyZCBKU1IgMTA1IEFQSXMgKGJ5IHVzaW5nIHRoZSBPcmFjbGUKKyAgICAgIHByb3ZpZGVyKSBvciB0aHJvdWdoIHRoZSBjdXJyZW50IE9TRFQgWE1MIFNlY3VyaXR5IEFQSXMuPC9wPgorICAgIDwvZGQ+CisgICAgPGR0PjxzdHJvbmc+dXBjeHNsaWIgeG1sIHNpZ25hdHVyZSBwYWNrYWdlPC9zdHJvbmc+IChVbml2ZXJzaXRhdCBQb2xpdGVjbmljYSBkZSBDYXRhbHVueWEpPC9kdD4KKyAgICA8ZGQ+PHA+CisgICAgICBUaGUgdXBjeHNsaWIgeG1sIHNpZ25hdHVyZSBwYWNrYWdlIHJ1bnMgb24gSmF2YSAxLjQuMiBvciBoaWdoZXIuIEl0IHVzZXMgU3VuJ3Mgc2VjdXJpdHkKKyAgICAgIHByb3ZpZGVyIHdpdGhpbiB0aGUgSlJFIGZvciBiYXNpYyBjcnlwdG9ncmFwaGljIHRhc2tzLiBDTjE0TiAxLjEgaXMgbm90IGdlbmVyYWxseSBhdmFpbGFibGUgYXQKKyAgICAgIHByZXNlbnQsIGJ1dCBpdHMgaW5jb3Jwb3JhdGlvbiBpcyB0YXJnZXRlZCBmb3IgYSBuZWFyIGZ1dHVyZS48L3A+CisgICAgPC9kZD4KKyAgICA8ZHQ+PHN0cm9uZz5JQUlLIFhNTCBTZWN1cml0eSBUb29sa2l0IChYU0VDVCk8L3N0cm9uZz4gKEdyYXogVW5pdmVyc2l0eSBvZiBUZWNobm9sb2d5KTwvZHQ+CisgICAgPGRkPjxwPgorICAgICAgVGhlIElBSUsgPGEgaHJlZj0iaHR0cDovL2pjZS5pYWlrLnR1Z3Jhei5hdC9zaWMvcHJvZHVjdHMveG1sX3NlY3VyaXR5L3hzZWN0Ij5YTUwgU2VjdXJpdHkgVG9vbGtpdCAoWFNFQ1QpPC9hPiBpcyB0aGUgc3VjY2Vzc29yIG9mIHRoZSBJQUlLIFhNTCBTaWduYXR1cmUgTGlicmFyeQorICAgICAgKElYU0lMKS4gWFNFQ1QgMS4xMiBvciBoaWdoZXIgaXMgc2NoZWR1bGVkIHRvIHNoaXAgaW4gUTIvMjAwOCBhbmQgd2lsbCBjb250YWluIHRoZSBDMTROIDEuMQorICAgICAgaW1wbGVtZW50YXRpb24uIEMxNE4gMS4xIHdpbGwgYmUgZW5hYmxlZCBpbiB0aGUgZGVmYXVsdCBtb2RlIGZvciBzaWduYXR1cmUgY3JlYXRpb24gYW5kIG1heSBiZQorICAgICAgdHVybmVkIG9mZiBieSBhIGNvbmZpZ3VyYXRpb24gZmxhZyBhbGxvd2luZyBmb3IgbWF4aW11bSBmbGV4aWJpbGl0eS4gWFNFQ1QgMS4xMiB3aWxsIHN1cHBvcnQKKyAgICAgIGFsbCBKYXZhXihUTSkgdmVyc2lvbnMgc2luY2UgSkRLIDEuMy4xIG9yIGhpZ2hlci4KKyAgICAgIDwvcD4KKyAgICA8L2RkPgorPC9kbD4KKworPC9kaXY+Cis8aDI+VGVzdCByZXN1bHRzPC9oMj4KKzx0YWJsZT48dGhlYWQ+PHRyPjx0aC8+Cis8dGg+U1VOPC90aD4KKzx0aD5JQUlLPC90aD4KKzx0aD5JQk08L3RoPgorPHRoPk9SQ0w8L3RoPgorPHRoPlVQQzwvdGg+Cis8L3RyPjwvdGhlYWQ+PHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJ0YyI+PGEgaHJlZj0iLi4veG1sc2lnLWludGVyb3AtZG9jL3Rlc3RjYXNlcy5odG1sI3hwb2ludGVyLXhwb2ludGVyLTEiPiB4cG9pbnRlci0xIDwvYT48L3RkPgorPHRkIGNsYXNzPSJwYXNzIj4KKzxhIGhyZWY9IiR0aGVmaWxlIj5QQVNTPC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0icGFzcyI+Cis8YSBocmVmPSIkdGhlZmlsZSI+UEFTUzwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9InBhc3MiPgorPGEgaHJlZj0iJHRoZWZpbGUiPlBBU1M8L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJwYXNzIj4KKzxhIGhyZWY9IiR0aGVmaWxlIj5QQVNTPC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0icGFzcyI+Cis8YSBocmVmPSIkdGhlZmlsZSI+UEFTUzwvYT4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJ0YyI+PGEgaHJlZj0iLi4veG1sc2lnLWludGVyb3AtZG9jL3Rlc3RjYXNlcy5odG1sI3hwb2ludGVyLXhwb2ludGVyLTIiPiB4cG9pbnRlci0yIDwvYT48L3RkPgorPHRkIGNsYXNzPSJwYXNzIj4KKzxhIGhyZWY9IiR0aGVmaWxlIj5QQVNTPC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0icGFzcyI+Cis8YSBocmVmPSIkdGhlZmlsZSI+UEFTUzwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9InBhc3MiPgorPGEgaHJlZj0iJHRoZWZpbGUiPlBBU1M8L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJwYXNzIj4KKzxhIGhyZWY9IiR0aGVmaWxlIj5QQVNTPC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0icGFzcyI+Cis8YSBocmVmPSIkdGhlZmlsZSI+UEFTUzwvYT4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJ0YyI+PGEgaHJlZj0iLi4veG1sc2lnLWludGVyb3AtZG9jL3Rlc3RjYXNlcy5odG1sI3hwb2ludGVyLXhwb2ludGVyLTMiPiB4cG9pbnRlci0zIDwvYT48L3RkPgorPHRkIGNsYXNzPSJwYXNzIj4KKzxhIGhyZWY9IiR0aGVmaWxlIj5QQVNTPC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0icGFzcyI+Cis8YSBocmVmPSIkdGhlZmlsZSI+UEFTUzwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9InBhc3MiPgorPGEgaHJlZj0iJHRoZWZpbGUiPlBBU1M8L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJwYXNzIj4KKzxhIGhyZWY9IiR0aGVmaWxlIj5QQVNTPC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0icGFzcyI+Cis8YSBocmVmPSIkdGhlZmlsZSI+UEFTUzwvYT4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJ0YyI+PGEgaHJlZj0iLi4veG1sc2lnLWludGVyb3AtZG9jL3Rlc3RjYXNlcy5odG1sI3hwb2ludGVyLXhwb2ludGVyLTQiPiB4cG9pbnRlci00IDwvYT48L3RkPgorPHRkIGNsYXNzPSJwYXNzIj4KKzxhIGhyZWY9IiR0aGVmaWxlIj5QQVNTPC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0icGFzcyI+Cis8YSBocmVmPSIkdGhlZmlsZSI+UEFTUzwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9InBhc3MiPgorPGEgaHJlZj0iJHRoZWZpbGUiPlBBU1M8L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJwYXNzIj4KKzxhIGhyZWY9IiR0aGVmaWxlIj5QQVNTPC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0icGFzcyI+Cis8YSBocmVmPSIkdGhlZmlsZSI+UEFTUzwvYT4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJ0YyI+PGEgaHJlZj0iLi4veG1sc2lnLWludGVyb3AtZG9jL3Rlc3RjYXNlcy5odG1sI3hwb2ludGVyLXhwb2ludGVyLTUiPiB4cG9pbnRlci01IDwvYT48L3RkPgorPHRkIGNsYXNzPSJwYXNzIj4KKzxhIGhyZWY9IiR0aGVmaWxlIj5QQVNTPC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0icGFzcyI+Cis8YSBocmVmPSIkdGhlZmlsZSI+UEFTUzwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9InBhc3MiPgorPGEgaHJlZj0iJHRoZWZpbGUiPlBBU1M8L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJwYXNzIj4KKzxhIGhyZWY9IiR0aGVmaWxlIj5QQVNTPC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0icGFzcyI+Cis8YSBocmVmPSIkdGhlZmlsZSI+UEFTUzwvYT4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJ0YyI+PGEgaHJlZj0iLi4veG1sc2lnLWludGVyb3AtZG9jL3Rlc3RjYXNlcy5odG1sI3hwb2ludGVyLXhwb2ludGVyLTYiPiB4cG9pbnRlci02IDwvYT48L3RkPgorPHRkIGNsYXNzPSJwYXNzIj4KKzxhIGhyZWY9IiR0aGVmaWxlIj5QQVNTPC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0icGFzcyI+Cis8YSBocmVmPSIkdGhlZmlsZSI+UEFTUzwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9InBhc3MiPgorPGEgaHJlZj0iJHRoZWZpbGUiPlBBU1M8L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJwYXNzIj4KKzxhIGhyZWY9IiR0aGVmaWxlIj5QQVNTPC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0icGFzcyI+Cis8YSBocmVmPSIkdGhlZmlsZSI+UEFTUzwvYT4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJ0YyI+PGEgaHJlZj0iLi4veG1sc2lnLWludGVyb3AtZG9jL3Rlc3RjYXNlcy5odG1sI2RuYW1lLWRuU3RyaW5nLTQiPiBkblN0cmluZy00IDwvYT48L3RkPgorPHRkIGNsYXNzPSJwYXNzIj4KKzxhIGhyZWY9IiR0aGVmaWxlIj5QQVNTPC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0icGFzcyI+Cis8YSBocmVmPSIkdGhlZmlsZSI+UEFTUzwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9Im5hIj48YSBocmVmPSIjbGktZG4iPk4vQTwvYT48L3RkPgorPHRkIGNsYXNzPSJwYXNzIj4KKzxhIGhyZWY9IiR0aGVmaWxlIj5QQVNTPC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0icGFzcyI+Cis8YSBocmVmPSIkdGhlZmlsZSI+UEFTUzwvYT4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJ0YyI+PGEgaHJlZj0iLi4veG1sc2lnLWludGVyb3AtZG9jL3Rlc3RjYXNlcy5odG1sI2RuYW1lLWRuU3RyaW5nLTYiPiBkblN0cmluZy02IDwvYT48L3RkPgorPHRkIGNsYXNzPSJwYXNzIj4KKzxhIGhyZWY9IiR0aGVmaWxlIj5QQVNTPC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0icGFzcyI+Cis8YSBocmVmPSIkdGhlZmlsZSI+UEFTUzwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9Im5hIj48YSBocmVmPSIjbGktZG4iPk4vQTwvYT48L3RkPgorPHRkIGNsYXNzPSJwYXNzIj4KKzxhIGhyZWY9IiR0aGVmaWxlIj5QQVNTPC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0icGFzcyI+Cis8YSBocmVmPSIkdGhlZmlsZSI+UEFTUzwvYT4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJ0YyI+PGEgaHJlZj0iLi4veG1sc2lnLWludGVyb3AtZG9jL3Rlc3RjYXNlcy5odG1sI2RuYW1lLWRuU3RyaW5nLTgiPiBkblN0cmluZy04IDwvYT48L3RkPgorPHRkIGNsYXNzPSJwYXNzIj4KKzxhIGhyZWY9IiR0aGVmaWxlIj5QQVNTPC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0icGFzcyI+Cis8YSBocmVmPSIkdGhlZmlsZSI+UEFTUzwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9Im5hIj48YSBocmVmPSIjbGktZG4iPk4vQTwvYT48L3RkPgorPHRkIGNsYXNzPSJwYXNzIj4KKzxhIGhyZWY9IiR0aGVmaWxlIj5QQVNTPC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0icGFzcyI+Cis8YSBocmVmPSIkdGhlZmlsZSI+UEFTUzwvYT4KKzwvdGQ+Cis8L3RyPgorPC90Ym9keT48L3RhYmxlPgorPGgyPkRpZmZlcmVuY2VzPC9oMj4KKzxwPk5vbmUgb2JzZXJ2ZWQuPC9wPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3JlcG9ydC5zaCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3JlcG9ydC5zaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODI3NzdlCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcvcmVwb3J0LnNoCkBAIC0wLDAgKzEsMTI4IEBACisjIS9iaW4vc2gKKworIyBub3RlLCBydW4gYXMgLi9yZXBvcnQuc2ggPiByZXBvcnQub3V0OyBtdiByZXBvcnQub3V0IHJlcG9ydC5odG1sCisjIGRvIG5vdCBkaXJlY3Qgb3V0cHV0IGRpcmVjdGx5IHRvIHJlcG9ydC5odG1sIGFzIHRoZSBzY3JpcHQgYXR0ZW1wdHMgdG8gcmVhZCB0aGF0IGZpbGUgYW5kIGl0IG1heSBiZSBvdmVyd3JpdHRlbiBwcmVtYXR1cmVseS4KKwordmVuZG9ycz0iU1VOIElBSUsgSUJNIE9SQ0wgVVBDIiAKKyMgd2FybmluZyAtIEhUTUwgaGFkIG1hbnVhbCBlZGl0IHRvIGxpbmsgSUJNIE4vQSB0byByZWFzb24KKworI3ZlbmRvcnM9IklCTSIgCitkaXJlY3Rvcmllcz0ieHBvaW50ZXIgZG5hbWUiCisjZGlyZWN0b3JpZXM9Inhwb2ludGVyIgorCit0ZXN0ZG9jPS4uL3htbHNpZy1pbnRlcm9wLWRvYy90ZXN0Y2FzZXMuaHRtbAoraG9tZT1gcHdkYAorCitpZiB0ZXN0IC1mIHJlcG9ydC5odG1sIDsgdGhlbgorCXNlZCAtbiAtZSAnLzxkaXY+LywvPFwvZGl2Pi9wJyByZXBvcnQuaHRtbCA+IHN1bW1hcnkuaHRtbAorZmkKKworZWNobyAnPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4nCitlY2hvICc8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIgorICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPicKK2VjaG8gJzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWw6bGFuZz0iZW4iIGxhbmc9ImVuIj48aGVhZD48dGl0bGU+SW1wbGVtZW50YXRpb24gcmVwb3J0IFhNTCBTaWduYXR1cmUsIDJuZCBFZGl0aW9uPC90aXRsZT4nCitlY2hvICc8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1N0eWxlU2hlZXRzL2Jhc2UuY3NzIiAvPicKK2VjaG8gJzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvU3R5bGVTaGVldHMvbWVtYmVyLmNzcyIgLz4nCitlY2hvICc8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL3JlcG9ydC5jc3MiIC8+JworZWNobyAiPC9oZWFkPiIKK2VjaG8gIjxib2R5PiIKK2VjaG8gJzxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLyI+PGltZyBhbHQ9IlczQyBMb2dvIiBzcmM9Imh0dHA6Ly93d3cudzMub3JnL0ljb25zL3czY19ob21lIi8+PC9hPicKK2VjaG8gIjxoMT5JbXBsZW1lbnRhdGlvbiByZXBvcnQgZm9yIFhNTCBTaWduYXR1cmUsIFNlY29uZCBFZGl0aW9uPC9oMT4iCitlY2hvICc8ZGw+CisgIDxkdD5BdXRob3I8L2R0PgorICAgIDxkZD5GcmVkZXJpY2sgSGlyc2NoPC9kZD4KKyAgICA8ZGQ+VGhvbWFzIFJvZXNzbGVyPC9kZD4KKyAgPGR0Pkxhc3QgTW9kaWZpZWQ8L2R0PgorICAgIDxkZD4kRGF0ZTogMjAwOC8wMi8xNSAxNToxNjoyMiAkIGJ5ICRBdXRob3I6IGZoaXJzY2gzICQ8L2RkPgorPC9kbD4nCisKKworZWNobyAnPGgyPk92ZXJ2aWV3PC9oMj4nCisKK2NhdCBzdW1tYXJ5Lmh0bWwKKworZWNobyAnPGgyPlRlc3QgcmVzdWx0czwvaDI+JworCitlY2hvICI8dGFibGU+PHRoZWFkPjx0cj48dGgvPiIKKworZm9yIHYgaW4gJHZlbmRvcnMgOyBkbworCWVjaG8gIjx0aD4ke3Z9PC90aD4iCitkb25lCisKK2VjaG8gIjwvdHI+PC90aGVhZD48dGJvZHk+IgorCitmb3IgZCBpbiAkZGlyZWN0b3JpZXM7IGRvCisJY2QgJGQKKwl0ZXN0Y2FzZXM9YGNhdCBpbnZlbnRvcnlgCisJZm9yIHQgaW4gJHRlc3RjYXNlcyA7IGRvCisJCWVjaG8gJzx0cj4nCisJCXU9YGVjaG8gJGQtJHR8c2VkICdzL1wuLS8vJ2AKKwkJZWNobyAnPHRkIGNsYXNzPSJ0YyI+PGEgaHJlZj0iJyR0ZXN0ZG9jJyMnJHUnIj4nICR0ICc8L2E+PC90ZD4nCisJCXN1bmZpbGU9IiR7dH0tU1VOLnhtbCIKKwkJIyB0ZXN0IGJ5IGNvbXBhcmluZyBTVU4gZGlnZXN0IHZhbHVlIHdpdGggb3RoZXJzLgorCQkjIG5lZWQgdG8gY29uc2lkZXIgY2FzZXMgb2YgYm90aCA8RGlnZXN0VmFsdWU+IGFuZCA8cHJlZml4OkRpZ2VzdFZhbHVlPgorCQlzdW5kaWdlc3Q9YGNhdCAkc3VuZmlsZXxzZWQgLW4gJy88RGlnZXN0VmFsdWU+L3AnIHxzZWQgJ3MvLipcPERpZ2VzdFZhbHVlXD4vLyd8c2VkICdzL1w8XC9EaWdlc3RWYWx1ZVw+LiovLydgCisJCWZvciB2IGluICR2ZW5kb3JzIDsgZG8KKwkJCXRoZWZpbGU9IiR7dH0tJHt2fS54bWwiCisJCQlpZiB0ZXN0IC1mICR0aGVmaWxlIDsgdGhlbgorCisJCQkJIyBpYm0gdGVzdCBjYXNlcyB3ZXJlIHZlcmlmaWVkIGR1cmluZyBpbnRlcm9wIGJ5IGFsbCBwYXJ0aWNpcGFudHMgYnkgdmVyaWZ5aW5nIHRoZSBzaWduYXR1cmVzLiBJQk0gdXNlZCBuYW1lc3BhY2UgcHJlZml4ZXMgCisJCQkJIyBhbmQgaGFkIGRpZmZlcmVudCBkaWdlc3QgYW5kIHNpZ25hdHVyZSB2YWx1ZXMKKwkJCQlpZiBbICR7dn0gPSAiSUJNIiBdCisJCQkJdGhlbgorCQkJCQllY2hvICc8dGQgY2xhc3M9InBhc3MiPicKKwkJCQkJZWNobyAnPGEgaHJlZj0iJyR0aGVmaWxlJyI+UEFTUzwvYT4nCisJCQkJCWVjaG8gJzwvdGQ+JworCQkJCQlybSAtZiAke3R9LSR7dn0uZmFpbAorCQkJCWVsc2UJCQkJCisKKwkJCQkJZGlnZXN0PWBjYXQgJHRoZWZpbGUgfHNlZCAtbiAnLzxEaWdlc3RWYWx1ZT4vcCcgfHNlZCAncy8uKlw8RGlnZXN0VmFsdWVcPi8vJ3xzZWQgJ3MvXDxcL0RpZ2VzdFZhbHVlXD4uKi8vJ2AKKworCQkJCQlpZiBbICIke3N1bmRpZ2VzdH0iID0gIiR7ZGlnZXN0fSIgXQorCQkJCQl0aGVuCisJCQkJCQllY2hvICc8dGQgY2xhc3M9InBhc3MiPicKKwkJCQkJCWVjaG8gJzxhIGhyZWY9IicnJHRoZWZpbGUnJyI+UEFTUzwvYT4nCisJCQkJCQllY2hvICc8L3RkPicKKwkJCQkJCXJtIC1mICR7dH0tJHt2fS5mYWlsCQkJCQorCQkJCQllbHNlCisJCQkJCQllY2hvICc8dGQgY2xhc3M9ImZhaWwiPjxhIGhyZWY9IiNkaWZmLScke3R9LSR7dn0nIj5GQUlMPC9hPjwvdGQ+JworCQkJCQkJZWNobyAgIlJlZmVyZW5jZSBkaWdlc3Q9JHtzdW5kaWdlc3R9IFZhbHVlPSR7ZGlnZXN0fSIgPiAke3R9LSR7dn0uZmFpbAorCQkJCQlmaQorCQkJCWZpCisJCQllbHNlCisJCQkJZWNobyAnPHRkIGNsYXNzPSJuYSI+Ti9BPC90ZD4nCisJCQlmaQorCQlkb25lCisJCWVjaG8gJzwvdHI+JworCWRvbmUKKwljZCAkaG9tZQorZG9uZQorCitlY2hvICc8L3Rib2R5PjwvdGFibGU+JworCitlY2hvICc8aDI+RGlmZmVyZW5jZXM8L2gyPicKKworZm91bmQ9MAorZm9yIGQgaW4gJGRpcmVjdG9yaWVzOyBkbworCWNkICRkCisgICAgZm9yIGYgaW4gKi5mYWlsIDsgZG8KKwkgIGlmIHRlc3QgLWYgIiRmIiA7IHRoZW4KKwkJYmFzZT1gYmFzZW5hbWUgJGYgLmZhaWxgCisJCWVjaG8gJzxoMyBpZD0iZGlmZi0nJGJhc2UnIj4nJGJhc2UnPC9oMz4nCisJCisJCWVjaG8gJzxwcmU+JworCQlzZWQgLWUgJ3MvPC9cJmx0Oy9nJyA8ICRmCisJCWVjaG8gJzwvcHJlPicKKwkJZm91bmQ9MQorCSAgZmkKKwlkb25lCisJY2QgJGhvbWUKK2RvbmUKKworaWYgdGVzdCAiJGZvdW5kIiA9ICIwIgordGhlbgorCWVjaG8gIjxwPk5vbmUgb2JzZXJ2ZWQuPC9wPiIKK2ZpCisJCitlY2hvICc8L2JvZHk+PC9odG1sPicKKwkJCQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIvaW5wdXQueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIvaW5wdXQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlZDFmM2UKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci9pbnB1dC54bWwKQEAgLTAsMCArMSwyMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxpZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciICA+CisJCTwhLS0gVGhpcyBpcyBhIHhtbCBkb2N1bWVudCBmb3IgY2hlY2tpbmcgYmVoYXZpb3VyIG9mIHRvb2xzIHdpdGggcmVnYXJkcyB0byAgY29tbWVudHMgd2hlbiB1c2luZyBzY2hlbWUtYmFzZWQgeHBvaW50ZXJzIGluIHRoZSBkczpSZWZlcmVuY2UncyBVUkkgYXR0cmlidXRlIC0tPgorCTxpZXRmOmUxIHhtbDppZD0iZTFJRCI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEgZWxlbWVudCAtLT4KKwkJPGlldGY6ZTExID4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTEgZWxlbWVudCAtLT4KKwkJCTxpZXRmOmUxMTEgLz4KKwkJPC9pZXRmOmUxMT4KKwkJPGlldGY6ZTEyIGF0PSIyIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTIgZWxlbWVudCAtLT4KKwkJCTxpZXRmOmUxMjEgLz4KKwkJPC9pZXRmOmUxMj4KKwk8L2lldGY6ZTE+CisJPGlldGY6ZTIgeG1sOmlkPSJlMklEIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMiBlbGVtZW50IC0tPgorCQk8aWV0ZjplMjEgLz4KKwk8L2lldGY6ZTI+CisJPGlldGY6ZTMgeG1sOmlkPSJlM0lEIj4KKwkJPGlldGY6ZTMxIGF0PSIzIi8+CisJPC9pZXRmOmUzPgorPC9pZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxPgpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIvaW52ZW50b3J5IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIvaW52ZW50b3J5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlYjI5NjIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci9pbnZlbnRvcnkKQEAgLTAsMCArMSw2IEBACit4cG9pbnRlci0xCit4cG9pbnRlci0yCit4cG9pbnRlci0zCit4cG9pbnRlci00Cit4cG9pbnRlci01Cit4cG9pbnRlci02CmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0xLUlBSUstcmVmMC5kZXJlZlVSSSBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTEtSUFJSy1yZWYwLmRlcmVmVVJJCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkNzBhOWYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0xLUlBSUstcmVmMC5kZXJlZlVSSQpAQCAtMCwwICsxLDEzNCBAQAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE5vZGVTZXREYXRhIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05vZGUgMSA6IFtpZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxOiBudWxsXQorTm9kZSAyIDogeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIKK05vZGUgMyA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDQgOiBbI3RleHQ6IAorCQldCitOb2RlIDUgOiBbI2NvbW1lbnQ6ICBUaGlzIGlzIGEgeG1sIGRvY3VtZW50IGZvciBjaGVja2luZyBiZWhhdmlvdXIgb2YgdG9vbHMgd2l0aCByZWdhcmRzIHRvICBjb21tZW50cyB3aGVuIHVzaW5nIHNjaGVtZS1iYXNlZCB4cG9pbnRlcnMgaW4gdGhlIGRzOlJlZmVyZW5jZSdzIFVSSSBhdHRyaWJ1dGUgXQorTm9kZSA2IDogWyN0ZXh0OiAKKwldCitOb2RlIDcgOiBbaWV0ZjplMTogbnVsbF0KK05vZGUgOCA6IHhtbDppZD0iZTFJRCIKK05vZGUgOSA6IHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciCitOb2RlIDEwIDogeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIKK05vZGUgMTEgOiBbI3RleHQ6IAorCQldCitOb2RlIDEyIDogWyNjb21tZW50OiAgVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEgZWxlbWVudCBdCitOb2RlIDEzIDogWyN0ZXh0OiAKKwkJXQorTm9kZSAxNCA6IFtpZXRmOmUxMTogbnVsbF0KK05vZGUgMTUgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSAxNiA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDE3IDogWyN0ZXh0OiAKKwkJXQorTm9kZSAxOCA6IFsjY29tbWVudDogIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMSBlbGVtZW50IF0KK05vZGUgMTkgOiBbI3RleHQ6IAorCQkJXQorTm9kZSAyMCA6IFtpZXRmOmUxMTE6IG51bGxdCitOb2RlIDIxIDogeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIKK05vZGUgMjIgOiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIgorTm9kZSAyMyA6IFsjdGV4dDogCisJCV0KK05vZGUgMjQgOiBbI3RleHQ6IAorCQldCitOb2RlIDI1IDogW2lldGY6ZTEyOiBudWxsXQorTm9kZSAyNiA6IGF0PSIyIgorTm9kZSAyNyA6IHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciCitOb2RlIDI4IDogeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIKK05vZGUgMjkgOiBbI3RleHQ6IAorCQldCitOb2RlIDMwIDogWyNjb21tZW50OiAgVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEyIGVsZW1lbnQgXQorTm9kZSAzMSA6IFsjdGV4dDogCisJCQldCitOb2RlIDMyIDogW2lldGY6ZTEyMTogbnVsbF0KK05vZGUgMzMgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSAzNCA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDM1IDogWyN0ZXh0OiAKKwkJXQorTm9kZSAzNiA6IFsjdGV4dDogCisJXQorTm9kZSAzNyA6IFsjdGV4dDogCisJXQorTm9kZSAzOCA6IFtpZXRmOmUyOiBudWxsXQorTm9kZSAzOSA6IHhtbDppZD0iZTJJRCIKK05vZGUgNDAgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSA0MSA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDQyIDogWyN0ZXh0OiAKKwkJXQorTm9kZSA0MyA6IFsjY29tbWVudDogIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUyIGVsZW1lbnQgXQorTm9kZSA0NCA6IFsjdGV4dDogCisJCV0KK05vZGUgNDUgOiBbaWV0ZjplMjE6IG51bGxdCitOb2RlIDQ2IDogeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIKK05vZGUgNDcgOiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIgorTm9kZSA0OCA6IFsjdGV4dDogCisJXQorTm9kZSA0OSA6IFsjdGV4dDogCisJXQorTm9kZSA1MCA6IFtpZXRmOmUzOiBudWxsXQorTm9kZSA1MSA6IHhtbDppZD0iZTNJRCIKK05vZGUgNTIgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSA1MyA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDU0IDogWyN0ZXh0OiAKKwkJXQorTm9kZSA1NSA6IFtpZXRmOmUzMTogbnVsbF0KK05vZGUgNTYgOiBhdD0iMyIKK05vZGUgNTcgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSA1OCA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDU5IDogWyN0ZXh0OiAKKwldCitOb2RlIDYwIDogWyN0ZXh0OiAKK10KK05vZGUgNjEgOiBbU2lnbmF0dXJlOiBudWxsXQorTm9kZSA2MiA6IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIgorTm9kZSA2MyA6IHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciCitOb2RlIDY0IDogeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIKK05vZGUgNjUgOiBbU2lnbmVkSW5mbzogbnVsbF0KK05vZGUgNjYgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgNjcgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSA2OCA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDY5IDogW0Nhbm9uaWNhbGl6YXRpb25NZXRob2Q6IG51bGxdCitOb2RlIDcwIDogQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiCitOb2RlIDcxIDogeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiCitOb2RlIDcyIDogeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIKK05vZGUgNzMgOiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIgorTm9kZSA3NCA6IFtTaWduYXR1cmVNZXRob2Q6IG51bGxdCitOb2RlIDc1IDogQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIgorTm9kZSA3NiA6IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIgorTm9kZSA3NyA6IHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciCitOb2RlIDc4IDogeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIKK05vZGUgNzkgOiBbUmVmZXJlbmNlOiBudWxsXQorTm9kZSA4MCA6IFVSST0iI3hwb2ludGVyKC8pIgorTm9kZSA4MSA6IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIgorTm9kZSA4MiA6IHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciCitOb2RlIDgzIDogeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIKK05vZGUgODQgOiBbVHJhbnNmb3JtczogbnVsbF0KK05vZGUgODUgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgODYgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSA4NyA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDg4IDogW1RyYW5zZm9ybTogbnVsbF0KK05vZGUgODkgOiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIgorTm9kZSA5MCA6IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIgorTm9kZSA5MSA6IHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciCitOb2RlIDkyIDogeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIKK05vZGUgOTMgOiBbVHJhbnNmb3JtOiBudWxsXQorTm9kZSA5NCA6IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIKK05vZGUgOTUgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgOTYgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSA5NyA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDk4IDogW0RpZ2VzdE1ldGhvZDogbnVsbF0KK05vZGUgOTkgOiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIgorTm9kZSAxMDAgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgMTAxIDogeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIKK05vZGUgMTAyIDogeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIKK05vZGUgMTAzIDogW0RpZ2VzdFZhbHVlOiBudWxsXQorTm9kZSAxMDQgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgMTA1IDogeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIKK05vZGUgMTA2IDogeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIKK05vZGUgMTA3IDogWyN0ZXh0OiBdCitOb2RlIDEwOCA6IFtTaWduYXR1cmVWYWx1ZTogbnVsbF0KK05vZGUgMTA5IDogeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiCitOb2RlIDExMCA6IHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciCitOb2RlIDExMSA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDExMiA6IFsjdGV4dDogXQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTEtSUFJSy1yZWYwLmRpZ2VzdGlucHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItMS1JQUlLLXJlZjAuZGlnZXN0aW5wdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE2N2E1NgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTEtSUFJSy1yZWYwLmRpZ2VzdGlucHV0CkBAIC0wLDAgKzEsMjEgQEAKKzxpZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPgorCQk8IS0tIFRoaXMgaXMgYSB4bWwgZG9jdW1lbnQgZm9yIGNoZWNraW5nIGJlaGF2aW91ciBvZiB0b29scyB3aXRoIHJlZ2FyZHMgdG8gIGNvbW1lbnRzIHdoZW4gdXNpbmcgc2NoZW1lLWJhc2VkIHhwb2ludGVycyBpbiB0aGUgZHM6UmVmZXJlbmNlJ3MgVVJJIGF0dHJpYnV0ZSAtLT4KKwk8aWV0ZjplMSB4bWw6aWQ9ImUxSUQiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxIGVsZW1lbnQgLS0+CisJCTxpZXRmOmUxMT4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTEgZWxlbWVudCAtLT4KKwkJCTxpZXRmOmUxMTE+PC9pZXRmOmUxMTE+CisJCTwvaWV0ZjplMTE+CisJCTxpZXRmOmUxMiBhdD0iMiI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEyIGVsZW1lbnQgLS0+CisJCQk8aWV0ZjplMTIxPjwvaWV0ZjplMTIxPgorCQk8L2lldGY6ZTEyPgorCTwvaWV0ZjplMT4KKwk8aWV0ZjplMiB4bWw6aWQ9ImUySUQiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUyIGVsZW1lbnQgLS0+CisJCTxpZXRmOmUyMT48L2lldGY6ZTIxPgorCTwvaWV0ZjplMj4KKwk8aWV0ZjplMyB4bWw6aWQ9ImUzSUQiPgorCQk8aWV0ZjplMzEgYXQ9IjMiPjwvaWV0ZjplMzE+CisJPC9pZXRmOmUzPgorPC9pZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTEtSUFJSy54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0xLUlBSUsueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmNzkwNTIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0xLUlBSUsueG1sCkBAIC0wLDAgKzEsMjIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8aWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKwkJPCEtLSBUaGlzIGlzIGEgeG1sIGRvY3VtZW50IGZvciBjaGVja2luZyBiZWhhdmlvdXIgb2YgdG9vbHMgd2l0aCByZWdhcmRzIHRvICBjb21tZW50cyB3aGVuIHVzaW5nIHNjaGVtZS1iYXNlZCB4cG9pbnRlcnMgaW4gdGhlIGRzOlJlZmVyZW5jZSdzIFVSSSBhdHRyaWJ1dGUgLS0+CisJPGlldGY6ZTEgeG1sOmlkPSJlMUlEIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMSBlbGVtZW50IC0tPgorCQk8aWV0ZjplMTE+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTExIGVsZW1lbnQgLS0+CisJCQk8aWV0ZjplMTExLz4KKwkJPC9pZXRmOmUxMT4KKwkJPGlldGY6ZTEyIGF0PSIyIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTIgZWxlbWVudCAtLT4KKwkJCTxpZXRmOmUxMjEvPgorCQk8L2lldGY6ZTEyPgorCTwvaWV0ZjplMT4KKwk8aWV0ZjplMiB4bWw6aWQ9ImUySUQiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUyIGVsZW1lbnQgLS0+CisJCTxpZXRmOmUyMS8+CisJPC9pZXRmOmUyPgorCTxpZXRmOmUzIHhtbDppZD0iZTNJRCI+CisJCTxpZXRmOmUzMSBhdD0iMyIvPgorCTwvaWV0ZjplMz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKC8pIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+L0laeUdMTDcyclhoaXNYUmtCNjE3VHhKckw4PTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5FNGd4S3dsbFZqdnZsVVFGZTlwL3NzTzdZeHc9PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT48L2lldGY6YzE0bjExWG1sUG9pbnRlckRvYzE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItMS1JQk0ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItMS1JQk0ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMjU4ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0xLUlCTS54bWwKQEAgLTAsMCArMSwyMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48aWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4NCisJCTwhLS0gVGhpcyBpcyBhIHhtbCBkb2N1bWVudCBmb3IgY2hlY2tpbmcgYmVoYXZpb3VyIG9mIHRvb2xzIHdpdGggcmVnYXJkcyB0byAgY29tbWVudHMgd2hlbiB1c2luZyBzY2hlbWUtYmFzZWQgeHBvaW50ZXJzIGluIHRoZSBkczpSZWZlcmVuY2UncyBVUkkgYXR0cmlidXRlIC0tPg0KKwk8aWV0ZjplMSB4bWw6aWQ9ImUxSUQiPg0KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMSBlbGVtZW50IC0tPg0KKwkJPGlldGY6ZTExPg0KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTEgZWxlbWVudCAtLT4NCisJCQk8aWV0ZjplMTExLz4NCisJCTwvaWV0ZjplMTE+DQorCQk8aWV0ZjplMTIgYXQ9IjIiPg0KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTIgZWxlbWVudCAtLT4NCisJCQk8aWV0ZjplMTIxLz4NCisJCTwvaWV0ZjplMTI+DQorCTwvaWV0ZjplMT4NCisJPGlldGY6ZTIgeG1sOmlkPSJlMklEIj4NCisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTIgZWxlbWVudCAtLT4NCisJCTxpZXRmOmUyMS8+DQorCTwvaWV0ZjplMj4NCisJPGlldGY6ZTMgeG1sOmlkPSJlM0lEIj4NCisJCTxpZXRmOmUzMSBhdD0iMyIvPg0KKwk8L2lldGY6ZTM+DQorPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxkczpSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoLykiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT4vSVp5R0xMNzJyWGhpc1hSa0I2MTdUeEpyTDg9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPkFiQitPS0pzb3p6SUoySkNOSWFieHFtTVNDUT08L2RzOlNpZ25hdHVyZVZhbHVlPjwvZHM6U2lnbmF0dXJlPjwvaWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0xLU9SQ0wueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItMS1PUkNMLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjk5ODkzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItMS1PUkNMLnhtbApAQCAtMCwwICsxLDIxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxpZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPgorCQk8IS0tIFRoaXMgaXMgYSB4bWwgZG9jdW1lbnQgZm9yIGNoZWNraW5nIGJlaGF2aW91ciBvZiB0b29scyB3aXRoIHJlZ2FyZHMgdG8gIGNvbW1lbnRzIHdoZW4gdXNpbmcgc2NoZW1lLWJhc2VkIHhwb2ludGVycyBpbiB0aGUgZHM6UmVmZXJlbmNlJ3MgVVJJIGF0dHJpYnV0ZSAtLT4KKwk8aWV0ZjplMSB4bWw6aWQ9ImUxSUQiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxIGVsZW1lbnQgLS0+CisJCTxpZXRmOmUxMT4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTEgZWxlbWVudCAtLT4KKwkJCTxpZXRmOmUxMTEvPgorCQk8L2lldGY6ZTExPgorCQk8aWV0ZjplMTIgYXQ9IjIiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMiBlbGVtZW50IC0tPgorCQkJPGlldGY6ZTEyMS8+CisJCTwvaWV0ZjplMTI+CisJPC9pZXRmOmUxPgorCTxpZXRmOmUyIHhtbDppZD0iZTJJRCI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTIgZWxlbWVudCAtLT4KKwkJPGlldGY6ZTIxLz4KKwk8L2lldGY6ZTI+CisJPGlldGY6ZTMgeG1sOmlkPSJlM0lEIj4KKwkJPGlldGY6ZTMxIGF0PSIzIi8+CisJPC9pZXRmOmUzPgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoLykiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT4vSVp5R0xMNzJyWGhpc1hSa0I2MTdUeEpyTDg9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWUgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+RTRneEt3bGxWanZ2bFVRRmU5cC9zc083WXh3PTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT48L2lldGY6YzE0bjExWG1sUG9pbnRlckRvYzE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItMS1TVU4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItMS1TVU4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiMDdmYWEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0xLVNVTi54bWwKQEAgLTAsMCArMSwyMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48aWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKwkJPCEtLSBUaGlzIGlzIGEgeG1sIGRvY3VtZW50IGZvciBjaGVja2luZyBiZWhhdmlvdXIgb2YgdG9vbHMgd2l0aCByZWdhcmRzIHRvICBjb21tZW50cyB3aGVuIHVzaW5nIHNjaGVtZS1iYXNlZCB4cG9pbnRlcnMgaW4gdGhlIGRzOlJlZmVyZW5jZSdzIFVSSSBhdHRyaWJ1dGUgLS0+CisJPGlldGY6ZTEgeG1sOmlkPSJlMUlEIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMSBlbGVtZW50IC0tPgorCQk8aWV0ZjplMTE+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTExIGVsZW1lbnQgLS0+CisJCQk8aWV0ZjplMTExLz4KKwkJPC9pZXRmOmUxMT4KKwkJPGlldGY6ZTEyIGF0PSIyIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTIgZWxlbWVudCAtLT4KKwkJCTxpZXRmOmUxMjEvPgorCQk8L2lldGY6ZTEyPgorCTwvaWV0ZjplMT4KKwk8aWV0ZjplMiB4bWw6aWQ9ImUySUQiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUyIGVsZW1lbnQgLS0+CisJCTxpZXRmOmUyMS8+CisJPC9pZXRmOmUyPgorCTxpZXRmOmUzIHhtbDppZD0iZTNJRCI+CisJCTxpZXRmOmUzMSBhdD0iMyIvPgorCTwvaWV0ZjplMz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKC8pIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+L0laeUdMTDcyclhoaXNYUmtCNjE3VHhKckw4PTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5FNGd4S3dsbFZqdnZsVVFGZTlwL3NzTzdZeHc9PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT48L2lldGY6YzE0bjExWG1sUG9pbnRlckRvYzE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItMS1VUEMueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItMS1VUEMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwNTdkNDEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0xLVVQQy54bWwKQEAgLTAsMCArMSwyMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48aWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKwkJPCEtLSBUaGlzIGlzIGEgeG1sIGRvY3VtZW50IGZvciBjaGVja2luZyBiZWhhdmlvdXIgb2YgdG9vbHMgd2l0aCByZWdhcmRzIHRvICBjb21tZW50cyB3aGVuIHVzaW5nIHNjaGVtZS1iYXNlZCB4cG9pbnRlcnMgaW4gdGhlIGRzOlJlZmVyZW5jZSdzIFVSSSBhdHRyaWJ1dGUgLS0+CisJPGlldGY6ZTEgeG1sOmlkPSJlMUlEIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMSBlbGVtZW50IC0tPgorCQk8aWV0ZjplMTE+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTExIGVsZW1lbnQgLS0+CisJCQk8aWV0ZjplMTExIC8+CisJCTwvaWV0ZjplMTE+CisJCTxpZXRmOmUxMiBhdD0iMiI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEyIGVsZW1lbnQgLS0+CisJCQk8aWV0ZjplMTIxIC8+CisJCTwvaWV0ZjplMTI+CisJPC9pZXRmOmUxPgorCTxpZXRmOmUyIHhtbDppZD0iZTJJRCI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTIgZWxlbWVudCAtLT4KKwkJPGlldGY6ZTIxIC8+CisJPC9pZXRmOmUyPgorCTxpZXRmOmUzIHhtbDppZD0iZTNJRCI+CisJCTxpZXRmOmUzMSBhdD0iMyIgLz4KKwk8L2lldGY6ZTM+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIgLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIgLz48UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKC8pIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiIC8+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiIC8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz48RGlnZXN0VmFsdWU+L0laeUdMTDcyclhoaXNYUmtCNjE3VHhKckw4PTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5FNGd4S3dsbFZqdnZsVVFGZTlwL3NzTzdZeHc9PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT48L2lldGY6YzE0bjExWG1sUG9pbnRlckRvYzE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItMS10ZW1wbGF0ZS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0xLXRlbXBsYXRlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTFkZTlhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItMS10ZW1wbGF0ZS54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0gZW52ZWxvcGVkIGlucHV0LnhtbCBwYXJlbnQ6ZG9jdW1lbnRlbGVtZW50IG5leHRTaWJsaW5nOm51bGwgLS0+DQorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoLykiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT48L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0xLnBvaW50ZXJ2YWx1ZSBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTEucG9pbnRlcnZhbHVlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2YmExNTUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0xLnBvaW50ZXJ2YWx1ZQpAQCAtMCwwICsxIEBACisjeHBvaW50ZXIoLykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0yLUlBSUstcmVmMC5kZXJlZlVSSSBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTItSUFJSy1yZWYwLmRlcmVmVVJJCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3MjA2NWQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0yLUlBSUstcmVmMC5kZXJlZlVSSQpAQCAtMCwwICsxLDQ3IEBACistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTm9kZVNldERhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTm9kZSAxIDogW2lldGY6ZTE6IG51bGxdCitOb2RlIDIgOiB4bWw6aWQ9ImUxSUQiCitOb2RlIDMgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgNCA6IHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciCitOb2RlIDUgOiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIgorTm9kZSA2IDogWyN0ZXh0OiAKKwkJXQorTm9kZSA3IDogWyNjb21tZW50OiAgVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEgZWxlbWVudCBdCitOb2RlIDggOiBbI3RleHQ6IAorCQldCitOb2RlIDkgOiBbaWV0ZjplMTE6IG51bGxdCitOb2RlIDEwIDogeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiCitOb2RlIDExIDogeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIKK05vZGUgMTIgOiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIgorTm9kZSAxMyA6IFsjdGV4dDogCisJCV0KK05vZGUgMTQgOiBbI2NvbW1lbnQ6ICBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTEgZWxlbWVudCBdCitOb2RlIDE1IDogWyN0ZXh0OiAKKwkJCV0KK05vZGUgMTYgOiBbaWV0ZjplMTExOiBudWxsXQorTm9kZSAxNyA6IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIgorTm9kZSAxOCA6IHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciCitOb2RlIDE5IDogeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIKK05vZGUgMjAgOiBbI3RleHQ6IAorCQldCitOb2RlIDIxIDogWyN0ZXh0OiAKKwkJXQorTm9kZSAyMiA6IFtpZXRmOmUxMjogbnVsbF0KK05vZGUgMjMgOiBhdD0iMiIKK05vZGUgMjQgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgMjUgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSAyNiA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDI3IDogWyN0ZXh0OiAKKwkJXQorTm9kZSAyOCA6IFsjY29tbWVudDogIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMiBlbGVtZW50IF0KK05vZGUgMjkgOiBbI3RleHQ6IAorCQkJXQorTm9kZSAzMCA6IFtpZXRmOmUxMjE6IG51bGxdCitOb2RlIDMxIDogeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiCitOb2RlIDMyIDogeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIKK05vZGUgMzMgOiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIgorTm9kZSAzNCA6IFsjdGV4dDogCisJCV0KK05vZGUgMzUgOiBbI3RleHQ6IAorCV0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0yLUlBSUstcmVmMC5kaWdlc3RpbnB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTItSUFJSy1yZWYwLmRpZ2VzdGlucHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4NDljNjgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0yLUlBSUstcmVmMC5kaWdlc3RpbnB1dApAQCAtMCwwICsxLDExIEBACis8aWV0ZjplMSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmlkPSJlMUlEIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMSBlbGVtZW50IC0tPgorCQk8aWV0ZjplMTE+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTExIGVsZW1lbnQgLS0+CisJCQk8aWV0ZjplMTExPjwvaWV0ZjplMTExPgorCQk8L2lldGY6ZTExPgorCQk8aWV0ZjplMTIgYXQ9IjIiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMiBlbGVtZW50IC0tPgorCQkJPGlldGY6ZTEyMT48L2lldGY6ZTEyMT4KKwkJPC9pZXRmOmUxMj4KKwk8L2lldGY6ZTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItMi1JQUlLLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTItSUFJSy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFkNjViZAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTItSUFJSy54bWwKQEAgLTAsMCArMSwyMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKGlkKCdlMUlEJykpIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+WGhTc0RwV1R0K3RpMGtjVTlYWXBsZVJESGZRPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5ickVwSUNWQTRsZzdlUXd6N2kvcmxCbVlYaVU9PC9TaWduYXR1cmVWYWx1ZT48T2JqZWN0PjxpZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKwkJPCEtLSBUaGlzIGlzIGEgeG1sIGRvY3VtZW50IGZvciBjaGVja2luZyBiZWhhdmlvdXIgb2YgdG9vbHMgd2l0aCByZWdhcmRzIHRvICBjb21tZW50cyB3aGVuIHVzaW5nIHNjaGVtZS1iYXNlZCB4cG9pbnRlcnMgaW4gdGhlIGRzOlJlZmVyZW5jZSdzIFVSSSBhdHRyaWJ1dGUgLS0+CisJPGlldGY6ZTEgeG1sOmlkPSJlMUlEIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEgZWxlbWVudCAtLT4KKwkJPGlldGY6ZTExIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTEgZWxlbWVudCAtLT4KKwkJCTxpZXRmOmUxMTEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciLz4KKwkJPC9pZXRmOmUxMT4KKwkJPGlldGY6ZTEyIGF0PSIyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEyIGVsZW1lbnQgLS0+CisJCQk8aWV0ZjplMTIxIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIi8+CisJCTwvaWV0ZjplMTI+CisJPC9pZXRmOmUxPgorCTxpZXRmOmUyIHhtbDppZD0iZTJJRCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUyIGVsZW1lbnQgLS0+CisJCTxpZXRmOmUyMSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIvPgorCTwvaWV0ZjplMj4KKwk8aWV0ZjplMyB4bWw6aWQ9ImUzSUQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKwkJPGlldGY6ZTMxIGF0PSIzIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIvPgorCTwvaWV0ZjplMz4KKzwvaWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMT48L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0yLUlCTS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0yLUlCTS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhjZGRlNgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTItSUJNLnhtbApAQCAtMCwwICsxLDIxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48ZHM6UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKGlkKCdlMUlEJykpIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+MVJwRytjVFdxblg5eUdNa0Y4aXBtcXZvNzRzPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT5ISGpWTWxJa2FGejNrc1ZnMlFrNnBGbEpCS1U9PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6T2JqZWN0PjxpZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPg0KKwkJPCEtLSBUaGlzIGlzIGEgeG1sIGRvY3VtZW50IGZvciBjaGVja2luZyBiZWhhdmlvdXIgb2YgdG9vbHMgd2l0aCByZWdhcmRzIHRvICBjb21tZW50cyB3aGVuIHVzaW5nIHNjaGVtZS1iYXNlZCB4cG9pbnRlcnMgaW4gdGhlIGRzOlJlZmVyZW5jZSdzIFVSSSBhdHRyaWJ1dGUgLS0+DQorCTxpZXRmOmUxIHhtbDppZD0iZTFJRCI+DQorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxIGVsZW1lbnQgLS0+DQorCQk8aWV0ZjplMTE+DQorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMSBlbGVtZW50IC0tPg0KKwkJCTxpZXRmOmUxMTEvPg0KKwkJPC9pZXRmOmUxMT4NCisJCTxpZXRmOmUxMiBhdD0iMiI+DQorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMiBlbGVtZW50IC0tPg0KKwkJCTxpZXRmOmUxMjEvPg0KKwkJPC9pZXRmOmUxMj4NCisJPC9pZXRmOmUxPg0KKwk8aWV0ZjplMiB4bWw6aWQ9ImUySUQiPg0KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMiBlbGVtZW50IC0tPg0KKwkJPGlldGY6ZTIxLz4NCisJPC9pZXRmOmUyPg0KKwk8aWV0ZjplMyB4bWw6aWQ9ImUzSUQiPg0KKwkJPGlldGY6ZTMxIGF0PSIzIi8+DQorCTwvaWV0ZjplMz4NCis8L2lldGY6YzE0bjExWG1sUG9pbnRlckRvYzE+PC9kczpPYmplY3Q+PC9kczpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItMi1PUkNMLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTItT1JDTC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA3YWU3NwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTItT1JDTC54bWwKQEAgLTAsMCArMSwyMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcihpZCgnZTFJRCcpKSI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPlhoU3NEcFdUdCt0aTBrY1U5WFlwbGVSREhmUT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj5ickVwSUNWQTRsZzdlUXd6N2kvcmxCbVlYaVU9PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjxPYmplY3Q+PGlldGY6YzE0bjExWG1sUG9pbnRlckRvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisJCTwhLS0gVGhpcyBpcyBhIHhtbCBkb2N1bWVudCBmb3IgY2hlY2tpbmcgYmVoYXZpb3VyIG9mIHRvb2xzIHdpdGggcmVnYXJkcyB0byAgY29tbWVudHMgd2hlbiB1c2luZyBzY2hlbWUtYmFzZWQgeHBvaW50ZXJzIGluIHRoZSBkczpSZWZlcmVuY2UncyBVUkkgYXR0cmlidXRlIC0tPgorCTxpZXRmOmUxIHhtbDppZD0iZTFJRCI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEgZWxlbWVudCAtLT4KKwkJPGlldGY6ZTExPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMSBlbGVtZW50IC0tPgorCQkJPGlldGY6ZTExMS8+CisJCTwvaWV0ZjplMTE+CisJCTxpZXRmOmUxMiBhdD0iMiI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEyIGVsZW1lbnQgLS0+CisJCQk8aWV0ZjplMTIxLz4KKwkJPC9pZXRmOmUxMj4KKwk8L2lldGY6ZTE+CisJPGlldGY6ZTIgeG1sOmlkPSJlMklEIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMiBlbGVtZW50IC0tPgorCQk8aWV0ZjplMjEvPgorCTwvaWV0ZjplMj4KKwk8aWV0ZjplMyB4bWw6aWQ9ImUzSUQiPgorCQk8aWV0ZjplMzEgYXQ9IjMiLz4KKwk8L2lldGY6ZTM+Cis8L2lldGY6YzE0bjExWG1sUG9pbnRlckRvYzE+PC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItMi1TVU4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItMi1TVU4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxYTMyMzAKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0yLVNVTi54bWwKQEAgLTAsMCArMSwyMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcihpZCgnZTFJRCcpKSI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPlhoU3NEcFdUdCt0aTBrY1U5WFlwbGVSREhmUT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+YnJFcElDVkE0bGc3ZVF3ejdpL3JsQm1ZWGlVPTwvU2lnbmF0dXJlVmFsdWU+PE9iamVjdD48aWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKwkJPCEtLSBUaGlzIGlzIGEgeG1sIGRvY3VtZW50IGZvciBjaGVja2luZyBiZWhhdmlvdXIgb2YgdG9vbHMgd2l0aCByZWdhcmRzIHRvICBjb21tZW50cyB3aGVuIHVzaW5nIHNjaGVtZS1iYXNlZCB4cG9pbnRlcnMgaW4gdGhlIGRzOlJlZmVyZW5jZSdzIFVSSSBhdHRyaWJ1dGUgLS0+CisJPGlldGY6ZTEgeG1sOmlkPSJlMUlEIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMSBlbGVtZW50IC0tPgorCQk8aWV0ZjplMTE+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTExIGVsZW1lbnQgLS0+CisJCQk8aWV0ZjplMTExLz4KKwkJPC9pZXRmOmUxMT4KKwkJPGlldGY6ZTEyIGF0PSIyIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTIgZWxlbWVudCAtLT4KKwkJCTxpZXRmOmUxMjEvPgorCQk8L2lldGY6ZTEyPgorCTwvaWV0ZjplMT4KKwk8aWV0ZjplMiB4bWw6aWQ9ImUySUQiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUyIGVsZW1lbnQgLS0+CisJCTxpZXRmOmUyMS8+CisJPC9pZXRmOmUyPgorCTxpZXRmOmUzIHhtbDppZD0iZTNJRCI+CisJCTxpZXRmOmUzMSBhdD0iMyIvPgorCTwvaWV0ZjplMz4KKzwvaWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMT48L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0yLVVQQy54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0yLVVQQy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk4ODMwZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTItVVBDLnhtbApAQCAtMCwwICsxLDIxIEBACis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIgLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIgLz48UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKGlkKCdlMUlEJykpIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIgLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPjxEaWdlc3RWYWx1ZT5YaFNzRHBXVHQrdGkwa2NVOVhZcGxlUkRIZlE9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPmJyRXBJQ1ZBNGxnN2VRd3o3aS9ybEJtWVhpVT08L1NpZ25hdHVyZVZhbHVlPjxPYmplY3Q+PGlldGY6YzE0bjExWG1sUG9pbnRlckRvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisJCTwhLS0gVGhpcyBpcyBhIHhtbCBkb2N1bWVudCBmb3IgY2hlY2tpbmcgYmVoYXZpb3VyIG9mIHRvb2xzIHdpdGggcmVnYXJkcyB0byAgY29tbWVudHMgd2hlbiB1c2luZyBzY2hlbWUtYmFzZWQgeHBvaW50ZXJzIGluIHRoZSBkczpSZWZlcmVuY2UncyBVUkkgYXR0cmlidXRlIC0tPgorCTxpZXRmOmUxIHhtbDppZD0iZTFJRCI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEgZWxlbWVudCAtLT4KKwkJPGlldGY6ZTExPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMSBlbGVtZW50IC0tPgorCQkJPGlldGY6ZTExMSAvPgorCQk8L2lldGY6ZTExPgorCQk8aWV0ZjplMTIgYXQ9IjIiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMiBlbGVtZW50IC0tPgorCQkJPGlldGY6ZTEyMSAvPgorCQk8L2lldGY6ZTEyPgorCTwvaWV0ZjplMT4KKwk8aWV0ZjplMiB4bWw6aWQ9ImUySUQiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUyIGVsZW1lbnQgLS0+CisJCTxpZXRmOmUyMSAvPgorCTwvaWV0ZjplMj4KKwk8aWV0ZjplMyB4bWw6aWQ9ImUzSUQiPgorCQk8aWV0ZjplMzEgYXQ9IjMiIC8+CisJPC9pZXRmOmUzPgorPC9pZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxPjwvT2JqZWN0PjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTItdGVtcGxhdGUueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItMi10ZW1wbGF0ZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ1Mjc1MQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTItdGVtcGxhdGUueG1sCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tIGVudmVsb3BpbmcgaW5wdXQueG1sIC0tPg0KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKGlkKCdlMUlEJykpIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlVmFsdWU+PE9iamVjdD48L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0yLnBvaW50ZXJ2YWx1ZSBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTIucG9pbnRlcnZhbHVlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwOTkyZTMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0yLnBvaW50ZXJ2YWx1ZQpAQCAtMCwwICsxIEBACisjeHBvaW50ZXIoaWQoJ2UxSUQnKSkKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTMtSUFJSy1yZWYwLmRlcmVmVVJJIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItMy1JQUlLLXJlZjAuZGVyZWZVUkkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM3YmZjZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTMtSUFJSy1yZWYwLmRlcmVmVVJJCkBAIC0wLDAgKzEsMTI5IEBACistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTm9kZVNldERhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTm9kZSAxIDogW2lldGY6YzE0bjExWG1sUG9pbnRlckRvYzE6IG51bGxdCitOb2RlIDIgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSAzIDogeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIKK05vZGUgNCA6IFsjdGV4dDogCisJCV0KK05vZGUgNSA6IFsjdGV4dDogCisJXQorTm9kZSA2IDogW2lldGY6ZTE6IG51bGxdCitOb2RlIDcgOiB4bWw6aWQ9ImUxSUQiCitOb2RlIDggOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSA5IDogeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIKK05vZGUgMTAgOiBbI3RleHQ6IAorCQldCitOb2RlIDExIDogWyN0ZXh0OiAKKwkJXQorTm9kZSAxMiA6IFtpZXRmOmUxMTogbnVsbF0KK05vZGUgMTMgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSAxNCA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDE1IDogWyN0ZXh0OiAKKwkJXQorTm9kZSAxNiA6IFsjdGV4dDogCisJCQldCitOb2RlIDE3IDogW2lldGY6ZTExMTogbnVsbF0KK05vZGUgMTggOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSAxOSA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDIwIDogWyN0ZXh0OiAKKwkJXQorTm9kZSAyMSA6IFsjdGV4dDogCisJCV0KK05vZGUgMjIgOiBbaWV0ZjplMTI6IG51bGxdCitOb2RlIDIzIDogYXQ9IjIiCitOb2RlIDI0IDogeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIKK05vZGUgMjUgOiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIgorTm9kZSAyNiA6IFsjdGV4dDogCisJCV0KK05vZGUgMjcgOiBbI3RleHQ6IAorCQkJXQorTm9kZSAyOCA6IFtpZXRmOmUxMjE6IG51bGxdCitOb2RlIDI5IDogeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIKK05vZGUgMzAgOiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIgorTm9kZSAzMSA6IFsjdGV4dDogCisJCV0KK05vZGUgMzIgOiBbI3RleHQ6IAorCV0KK05vZGUgMzMgOiBbI3RleHQ6IAorCV0KK05vZGUgMzQgOiBbaWV0ZjplMjogbnVsbF0KK05vZGUgMzUgOiB4bWw6aWQ9ImUySUQiCitOb2RlIDM2IDogeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIKK05vZGUgMzcgOiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIgorTm9kZSAzOCA6IFsjdGV4dDogCisJCV0KK05vZGUgMzkgOiBbI3RleHQ6IAorCQldCitOb2RlIDQwIDogW2lldGY6ZTIxOiBudWxsXQorTm9kZSA0MSA6IHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciCitOb2RlIDQyIDogeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIKK05vZGUgNDMgOiBbI3RleHQ6IAorCV0KK05vZGUgNDQgOiBbI3RleHQ6IAorCV0KK05vZGUgNDUgOiBbaWV0ZjplMzogbnVsbF0KK05vZGUgNDYgOiB4bWw6aWQ9ImUzSUQiCitOb2RlIDQ3IDogeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIKK05vZGUgNDggOiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIgorTm9kZSA0OSA6IFsjdGV4dDogCisJCV0KK05vZGUgNTAgOiBbaWV0ZjplMzE6IG51bGxdCitOb2RlIDUxIDogYXQ9IjMiCitOb2RlIDUyIDogeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIKK05vZGUgNTMgOiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIgorTm9kZSA1NCA6IFsjdGV4dDogCisJXQorTm9kZSA1NSA6IFsjdGV4dDogCitdCitOb2RlIDU2IDogW1NpZ25hdHVyZTogbnVsbF0KK05vZGUgNTcgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgNTggOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSA1OSA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDYwIDogW1NpZ25lZEluZm86IG51bGxdCitOb2RlIDYxIDogeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiCitOb2RlIDYyIDogeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIKK05vZGUgNjMgOiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIgorTm9kZSA2NCA6IFtDYW5vbmljYWxpemF0aW9uTWV0aG9kOiBudWxsXQorTm9kZSA2NSA6IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIgorTm9kZSA2NiA6IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIgorTm9kZSA2NyA6IHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciCitOb2RlIDY4IDogeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIKK05vZGUgNjkgOiBbU2lnbmF0dXJlTWV0aG9kOiBudWxsXQorTm9kZSA3MCA6IEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIKK05vZGUgNzEgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgNzIgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSA3MyA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDc0IDogW1JlZmVyZW5jZTogbnVsbF0KK05vZGUgNzUgOiBVUkk9IiIKK05vZGUgNzYgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgNzcgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSA3OCA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDc5IDogW1RyYW5zZm9ybXM6IG51bGxdCitOb2RlIDgwIDogeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiCitOb2RlIDgxIDogeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIKK05vZGUgODIgOiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIgorTm9kZSA4MyA6IFtUcmFuc2Zvcm06IG51bGxdCitOb2RlIDg0IDogQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIKK05vZGUgODUgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgODYgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSA4NyA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDg4IDogW1RyYW5zZm9ybTogbnVsbF0KK05vZGUgODkgOiBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiCitOb2RlIDkwIDogeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiCitOb2RlIDkxIDogeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIKK05vZGUgOTIgOiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIgorTm9kZSA5MyA6IFtEaWdlc3RNZXRob2Q6IG51bGxdCitOb2RlIDk0IDogQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIKK05vZGUgOTUgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgOTYgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSA5NyA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDk4IDogW0RpZ2VzdFZhbHVlOiBudWxsXQorTm9kZSA5OSA6IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIgorTm9kZSAxMDAgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSAxMDEgOiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIgorTm9kZSAxMDIgOiBbI3RleHQ6IF0KK05vZGUgMTAzIDogW1NpZ25hdHVyZVZhbHVlOiBudWxsXQorTm9kZSAxMDQgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgMTA1IDogeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIKK05vZGUgMTA2IDogeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIKK05vZGUgMTA3IDogWyN0ZXh0OiBdCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItMy1JQUlLLXJlZjAuZGlnZXN0aW5wdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0zLUlBSUstcmVmMC5kaWdlc3RpbnB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzcyY2I3Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItMy1JQUlLLXJlZjAuZGlnZXN0aW5wdXQKQEAgLTAsMCArMSwyMSBAQAorPGlldGY6YzE0bjExWG1sUG9pbnRlckRvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisJCQorCTxpZXRmOmUxIHhtbDppZD0iZTFJRCI+CisJCQorCQk8aWV0ZjplMTE+CisJCQorCQkJPGlldGY6ZTExMT48L2lldGY6ZTExMT4KKwkJPC9pZXRmOmUxMT4KKwkJPGlldGY6ZTEyIGF0PSIyIj4KKwkJCisJCQk8aWV0ZjplMTIxPjwvaWV0ZjplMTIxPgorCQk8L2lldGY6ZTEyPgorCTwvaWV0ZjplMT4KKwk8aWV0ZjplMiB4bWw6aWQ9ImUySUQiPgorCQkKKwkJPGlldGY6ZTIxPjwvaWV0ZjplMjE+CisJPC9pZXRmOmUyPgorCTxpZXRmOmUzIHhtbDppZD0iZTNJRCI+CisJCTxpZXRmOmUzMSBhdD0iMyI+PC9pZXRmOmUzMT4KKwk8L2lldGY6ZTM+Cis8L2lldGY6YzE0bjExWG1sUG9pbnRlckRvYzE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItMy1JQUlLLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTMtSUFJSy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ0YTY5NgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTMtSUFJSy54bWwKQEAgLTAsMCArMSwyMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxpZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPgorCQk8IS0tIFRoaXMgaXMgYSB4bWwgZG9jdW1lbnQgZm9yIGNoZWNraW5nIGJlaGF2aW91ciBvZiB0b29scyB3aXRoIHJlZ2FyZHMgdG8gIGNvbW1lbnRzIHdoZW4gdXNpbmcgc2NoZW1lLWJhc2VkIHhwb2ludGVycyBpbiB0aGUgZHM6UmVmZXJlbmNlJ3MgVVJJIGF0dHJpYnV0ZSAtLT4KKwk8aWV0ZjplMSB4bWw6aWQ9ImUxSUQiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxIGVsZW1lbnQgLS0+CisJCTxpZXRmOmUxMT4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTEgZWxlbWVudCAtLT4KKwkJCTxpZXRmOmUxMTEvPgorCQk8L2lldGY6ZTExPgorCQk8aWV0ZjplMTIgYXQ9IjIiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMiBlbGVtZW50IC0tPgorCQkJPGlldGY6ZTEyMS8+CisJCTwvaWV0ZjplMTI+CisJPC9pZXRmOmUxPgorCTxpZXRmOmUyIHhtbDppZD0iZTJJRCI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTIgZWxlbWVudCAtLT4KKwkJPGlldGY6ZTIxLz4KKwk8L2lldGY6ZTI+CisJPGlldGY6ZTMgeG1sOmlkPSJlM0lEIj4KKwkJPGlldGY6ZTMxIGF0PSIzIi8+CisJPC9pZXRmOmUzPgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSIiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5nYVY1cjdxQzNWZS90NjQxK2QzeWtOOEpGU2M9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPmdTMVFLU3dBSC82ZUUzT0ZpL0w5TzBvS0tpZz08L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPjwvaWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0zLUlCTS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0zLUlCTS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmMyZWRlOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTMtSUJNLnhtbApAQCAtMCwwICsxLDIxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxpZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPg0KKwkJPCEtLSBUaGlzIGlzIGEgeG1sIGRvY3VtZW50IGZvciBjaGVja2luZyBiZWhhdmlvdXIgb2YgdG9vbHMgd2l0aCByZWdhcmRzIHRvICBjb21tZW50cyB3aGVuIHVzaW5nIHNjaGVtZS1iYXNlZCB4cG9pbnRlcnMgaW4gdGhlIGRzOlJlZmVyZW5jZSdzIFVSSSBhdHRyaWJ1dGUgLS0+DQorCTxpZXRmOmUxIHhtbDppZD0iZTFJRCI+DQorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxIGVsZW1lbnQgLS0+DQorCQk8aWV0ZjplMTE+DQorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMSBlbGVtZW50IC0tPg0KKwkJCTxpZXRmOmUxMTEvPg0KKwkJPC9pZXRmOmUxMT4NCisJCTxpZXRmOmUxMiBhdD0iMiI+DQorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMiBlbGVtZW50IC0tPg0KKwkJCTxpZXRmOmUxMjEvPg0KKwkJPC9pZXRmOmUxMj4NCisJPC9pZXRmOmUxPg0KKwk8aWV0ZjplMiB4bWw6aWQ9ImUySUQiPg0KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMiBlbGVtZW50IC0tPg0KKwkJPGlldGY6ZTIxLz4NCisJPC9pZXRmOmUyPg0KKwk8aWV0ZjplMyB4bWw6aWQ9ImUzSUQiPg0KKwkJPGlldGY6ZTMxIGF0PSIzIi8+DQorCTwvaWV0ZjplMz4NCis8ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PGRzOlJlZmVyZW5jZSBVUkk9IiI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzOkRpZ2VzdFZhbHVlPmdhVjVyN3FDM1ZlL3Q2NDErZDN5a044SkZTYz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU+dXRCTDdoZlhJMG5wQVJIYVVRb3dvazJmWmpJPTwvZHM6U2lnbmF0dXJlVmFsdWU+PC9kczpTaWduYXR1cmU+PC9pZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTMtT1JDTC54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0zLU9SQ0wueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxODYyYWQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0zLU9SQ0wueG1sCkBAIC0wLDAgKzEsMjEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PGlldGY6YzE0bjExWG1sUG9pbnRlckRvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisJCTwhLS0gVGhpcyBpcyBhIHhtbCBkb2N1bWVudCBmb3IgY2hlY2tpbmcgYmVoYXZpb3VyIG9mIHRvb2xzIHdpdGggcmVnYXJkcyB0byAgY29tbWVudHMgd2hlbiB1c2luZyBzY2hlbWUtYmFzZWQgeHBvaW50ZXJzIGluIHRoZSBkczpSZWZlcmVuY2UncyBVUkkgYXR0cmlidXRlIC0tPgorCTxpZXRmOmUxIHhtbDppZD0iZTFJRCI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEgZWxlbWVudCAtLT4KKwkJPGlldGY6ZTExPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMSBlbGVtZW50IC0tPgorCQkJPGlldGY6ZTExMS8+CisJCTwvaWV0ZjplMTE+CisJCTxpZXRmOmUxMiBhdD0iMiI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEyIGVsZW1lbnQgLS0+CisJCQk8aWV0ZjplMTIxLz4KKwkJPC9pZXRmOmUxMj4KKwk8L2lldGY6ZTE+CisJPGlldGY6ZTIgeG1sOmlkPSJlMklEIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMiBlbGVtZW50IC0tPgorCQk8aWV0ZjplMjEvPgorCTwvaWV0ZjplMj4KKwk8aWV0ZjplMyB4bWw6aWQ9ImUzSUQiPgorCQk8aWV0ZjplMzEgYXQ9IjMiLz4KKwk8L2lldGY6ZTM+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPmdhVjVyN3FDM1ZlL3Q2NDErZDN5a044SkZTYz08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj5nUzFRS1N3QUgvNmVFM09GaS9MOU8wb0tLaWc9PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPjwvaWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0zLVNVTi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0zLVNVTi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg0NTEyMwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTMtU1VOLnhtbApAQCAtMCwwICsxLDIxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxpZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPgorCQk8IS0tIFRoaXMgaXMgYSB4bWwgZG9jdW1lbnQgZm9yIGNoZWNraW5nIGJlaGF2aW91ciBvZiB0b29scyB3aXRoIHJlZ2FyZHMgdG8gIGNvbW1lbnRzIHdoZW4gdXNpbmcgc2NoZW1lLWJhc2VkIHhwb2ludGVycyBpbiB0aGUgZHM6UmVmZXJlbmNlJ3MgVVJJIGF0dHJpYnV0ZSAtLT4KKwk8aWV0ZjplMSB4bWw6aWQ9ImUxSUQiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxIGVsZW1lbnQgLS0+CisJCTxpZXRmOmUxMT4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTEgZWxlbWVudCAtLT4KKwkJCTxpZXRmOmUxMTEvPgorCQk8L2lldGY6ZTExPgorCQk8aWV0ZjplMTIgYXQ9IjIiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMiBlbGVtZW50IC0tPgorCQkJPGlldGY6ZTEyMS8+CisJCTwvaWV0ZjplMTI+CisJPC9pZXRmOmUxPgorCTxpZXRmOmUyIHhtbDppZD0iZTJJRCI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTIgZWxlbWVudCAtLT4KKwkJPGlldGY6ZTIxLz4KKwk8L2lldGY6ZTI+CisJPGlldGY6ZTMgeG1sOmlkPSJlM0lEIj4KKwkJPGlldGY6ZTMxIGF0PSIzIi8+CisJPC9pZXRmOmUzPgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSIiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5nYVY1cjdxQzNWZS90NjQxK2QzeWtOOEpGU2M9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPmdTMVFLU3dBSC82ZUUzT0ZpL0w5TzBvS0tpZz08L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPjwvaWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0zLVVQQy54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0zLVVQQy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODczNmM5MwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTMtVVBDLnhtbApAQCAtMCwwICsxLDIxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxpZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPgorCQk8IS0tIFRoaXMgaXMgYSB4bWwgZG9jdW1lbnQgZm9yIGNoZWNraW5nIGJlaGF2aW91ciBvZiB0b29scyB3aXRoIHJlZ2FyZHMgdG8gIGNvbW1lbnRzIHdoZW4gdXNpbmcgc2NoZW1lLWJhc2VkIHhwb2ludGVycyBpbiB0aGUgZHM6UmVmZXJlbmNlJ3MgVVJJIGF0dHJpYnV0ZSAtLT4KKwk8aWV0ZjplMSB4bWw6aWQ9ImUxSUQiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxIGVsZW1lbnQgLS0+CisJCTxpZXRmOmUxMT4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTEgZWxlbWVudCAtLT4KKwkJCTxpZXRmOmUxMTEgLz4KKwkJPC9pZXRmOmUxMT4KKwkJPGlldGY6ZTEyIGF0PSIyIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTIgZWxlbWVudCAtLT4KKwkJCTxpZXRmOmUxMjEgLz4KKwkJPC9pZXRmOmUxMj4KKwk8L2lldGY6ZTE+CisJPGlldGY6ZTIgeG1sOmlkPSJlMklEIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMiBlbGVtZW50IC0tPgorCQk8aWV0ZjplMjEgLz4KKwk8L2lldGY6ZTI+CisJPGlldGY6ZTMgeG1sOmlkPSJlM0lEIj4KKwkJPGlldGY6ZTMxIGF0PSIzIiAvPgorCTwvaWV0ZjplMz4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIiAvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIiAvPjxSZWZlcmVuY2UgVVJJPSIiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIgLz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIgLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPjxEaWdlc3RWYWx1ZT5nYVY1cjdxQzNWZS90NjQxK2QzeWtOOEpGU2M9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPmdTMVFLU3dBSC82ZUUzT0ZpL0w5TzBvS0tpZz08L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPjwvaWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0zLXRlbXBsYXRlLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTMtdGVtcGxhdGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjODAwNDcKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci0zLXRlbXBsYXRlLnhtbApAQCAtMCwwICsxLDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLSBlbnZlbG9wZWQgaW5wdXQueG1sIHBhcmVudDpkb2N1bWVudGVsZW1lbnQgbmV4dFNpYmxpbmc6bnVsbCAtLT4NCis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPjwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTQtSUFJSy1yZWYwLmRlcmVmVVJJIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNC1JQUlLLXJlZjAuZGVyZWZVUkkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTkwNmQ2YQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTQtSUFJSy1yZWYwLmRlcmVmVVJJCkBAIC0wLDAgKzEsNDQgQEAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBOb2RlU2V0RGF0YSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitOb2RlIDEgOiBbaWV0ZjplMTogbnVsbF0KK05vZGUgMiA6IHhtbDppZD0iZTFJRCIKK05vZGUgMyA6IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIgorTm9kZSA0IDogeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIKK05vZGUgNSA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDYgOiBbI3RleHQ6IAorCQldCitOb2RlIDcgOiBbI3RleHQ6IAorCQldCitOb2RlIDggOiBbaWV0ZjplMTE6IG51bGxdCitOb2RlIDkgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgMTAgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSAxMSA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDEyIDogWyN0ZXh0OiAKKwkJXQorTm9kZSAxMyA6IFsjdGV4dDogCisJCQldCitOb2RlIDE0IDogW2lldGY6ZTExMTogbnVsbF0KK05vZGUgMTUgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgMTYgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSAxNyA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDE4IDogWyN0ZXh0OiAKKwkJXQorTm9kZSAxOSA6IFsjdGV4dDogCisJCV0KK05vZGUgMjAgOiBbaWV0ZjplMTI6IG51bGxdCitOb2RlIDIxIDogYXQ9IjIiCitOb2RlIDIyIDogeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiCitOb2RlIDIzIDogeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIKK05vZGUgMjQgOiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIgorTm9kZSAyNSA6IFsjdGV4dDogCisJCV0KK05vZGUgMjYgOiBbI3RleHQ6IAorCQkJXQorTm9kZSAyNyA6IFtpZXRmOmUxMjE6IG51bGxdCitOb2RlIDI4IDogeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiCitOb2RlIDI5IDogeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIKK05vZGUgMzAgOiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIgorTm9kZSAzMSA6IFsjdGV4dDogCisJCV0KK05vZGUgMzIgOiBbI3RleHQ6IAorCV0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci00LUlBSUstcmVmMC5kaWdlc3RpbnB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTQtSUFJSy1yZWYwLmRpZ2VzdGlucHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2MDI5Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci00LUlBSUstcmVmMC5kaWdlc3RpbnB1dApAQCAtMCwwICsxLDExIEBACis8aWV0ZjplMSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmlkPSJlMUlEIj4KKwkJCisJCTxpZXRmOmUxMT4KKwkJCisJCQk8aWV0ZjplMTExPjwvaWV0ZjplMTExPgorCQk8L2lldGY6ZTExPgorCQk8aWV0ZjplMTIgYXQ9IjIiPgorCQkKKwkJCTxpZXRmOmUxMjE+PC9pZXRmOmUxMjE+CisJCTwvaWV0ZjplMTI+CisJPC9pZXRmOmUxPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTQtSUFJSy54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci00LUlBSUsueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllZWE0ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci00LUlBSUsueG1sCkBAIC0wLDAgKzEsMjIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiNlMUlEIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+M0srSzRNYlIyRVc3bC9yeTU5WG9ja0txdDRnPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5kZ3lqT05VczlyQmpXN1BIMjVzZUdxY01OWlk9PC9TaWduYXR1cmVWYWx1ZT48T2JqZWN0PjxpZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKwkJPCEtLSBUaGlzIGlzIGEgeG1sIGRvY3VtZW50IGZvciBjaGVja2luZyBiZWhhdmlvdXIgb2YgdG9vbHMgd2l0aCByZWdhcmRzIHRvICBjb21tZW50cyB3aGVuIHVzaW5nIHNjaGVtZS1iYXNlZCB4cG9pbnRlcnMgaW4gdGhlIGRzOlJlZmVyZW5jZSdzIFVSSSBhdHRyaWJ1dGUgLS0+CisJPGlldGY6ZTEgeG1sOmlkPSJlMUlEIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEgZWxlbWVudCAtLT4KKwkJPGlldGY6ZTExIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTEgZWxlbWVudCAtLT4KKwkJCTxpZXRmOmUxMTEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciLz4KKwkJPC9pZXRmOmUxMT4KKwkJPGlldGY6ZTEyIGF0PSIyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEyIGVsZW1lbnQgLS0+CisJCQk8aWV0ZjplMTIxIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIi8+CisJCTwvaWV0ZjplMTI+CisJPC9pZXRmOmUxPgorCTxpZXRmOmUyIHhtbDppZD0iZTJJRCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUyIGVsZW1lbnQgLS0+CisJCTxpZXRmOmUyMSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIvPgorCTwvaWV0ZjplMj4KKwk8aWV0ZjplMyB4bWw6aWQ9ImUzSUQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKwkJPGlldGY6ZTMxIGF0PSIzIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIvPgorCTwvaWV0ZjplMz4KKzwvaWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMT48L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci00LUlCTS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci00LUlCTS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBkODI5YwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTQtSUJNLnhtbApAQCAtMCwwICsxLDIxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48ZHM6UmVmZXJlbmNlIFVSST0iI2UxSUQiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5RelN0Ny83K3M0K2NKR05wajhwVlUySWJqRHc9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPnd3UXYrdVd5ZTdYK2w0L1l4SzBlNjg1Mmc2WT08L2RzOlNpZ25hdHVyZVZhbHVlPjxkczpPYmplY3Q+PGlldGY6YzE0bjExWG1sUG9pbnRlckRvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+DQorCQk8IS0tIFRoaXMgaXMgYSB4bWwgZG9jdW1lbnQgZm9yIGNoZWNraW5nIGJlaGF2aW91ciBvZiB0b29scyB3aXRoIHJlZ2FyZHMgdG8gIGNvbW1lbnRzIHdoZW4gdXNpbmcgc2NoZW1lLWJhc2VkIHhwb2ludGVycyBpbiB0aGUgZHM6UmVmZXJlbmNlJ3MgVVJJIGF0dHJpYnV0ZSAtLT4NCisJPGlldGY6ZTEgeG1sOmlkPSJlMUlEIj4NCisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEgZWxlbWVudCAtLT4NCisJCTxpZXRmOmUxMT4NCisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTExIGVsZW1lbnQgLS0+DQorCQkJPGlldGY6ZTExMS8+DQorCQk8L2lldGY6ZTExPg0KKwkJPGlldGY6ZTEyIGF0PSIyIj4NCisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEyIGVsZW1lbnQgLS0+DQorCQkJPGlldGY6ZTEyMS8+DQorCQk8L2lldGY6ZTEyPg0KKwk8L2lldGY6ZTE+DQorCTxpZXRmOmUyIHhtbDppZD0iZTJJRCI+DQorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUyIGVsZW1lbnQgLS0+DQorCQk8aWV0ZjplMjEvPg0KKwk8L2lldGY6ZTI+DQorCTxpZXRmOmUzIHhtbDppZD0iZTNJRCI+DQorCQk8aWV0ZjplMzEgYXQ9IjMiLz4NCisJPC9pZXRmOmUzPg0KKzwvaWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMT48L2RzOk9iamVjdD48L2RzOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci00LU9SQ0wueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNC1PUkNMLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmYxODNkCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNC1PUkNMLnhtbApAQCAtMCwwICsxLDIxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iI2UxSUQiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT4zSytLNE1iUjJFVzdsL3J5NTlYb2NrS3F0NGc9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWUgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+ZGd5ak9OVXM5ckJqVzdQSDI1c2VHcWNNTlpZPTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48T2JqZWN0PjxpZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPgorCQk8IS0tIFRoaXMgaXMgYSB4bWwgZG9jdW1lbnQgZm9yIGNoZWNraW5nIGJlaGF2aW91ciBvZiB0b29scyB3aXRoIHJlZ2FyZHMgdG8gIGNvbW1lbnRzIHdoZW4gdXNpbmcgc2NoZW1lLWJhc2VkIHhwb2ludGVycyBpbiB0aGUgZHM6UmVmZXJlbmNlJ3MgVVJJIGF0dHJpYnV0ZSAtLT4KKwk8aWV0ZjplMSB4bWw6aWQ9ImUxSUQiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxIGVsZW1lbnQgLS0+CisJCTxpZXRmOmUxMT4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTEgZWxlbWVudCAtLT4KKwkJCTxpZXRmOmUxMTEvPgorCQk8L2lldGY6ZTExPgorCQk8aWV0ZjplMTIgYXQ9IjIiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMiBlbGVtZW50IC0tPgorCQkJPGlldGY6ZTEyMS8+CisJCTwvaWV0ZjplMTI+CisJPC9pZXRmOmUxPgorCTxpZXRmOmUyIHhtbDppZD0iZTJJRCI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTIgZWxlbWVudCAtLT4KKwkJPGlldGY6ZTIxLz4KKwk8L2lldGY6ZTI+CisJPGlldGY6ZTMgeG1sOmlkPSJlM0lEIj4KKwkJPGlldGY6ZTMxIGF0PSIzIi8+CisJPC9pZXRmOmUzPgorPC9pZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxPjwvT2JqZWN0PjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTQtU1VOLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTQtU1VOLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGMzODgzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNC1TVU4ueG1sCkBAIC0wLDAgKzEsMjEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSIjZTFJRCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPjNLK0s0TWJSMkVXN2wvcnk1OVhvY2tLcXQ0Zz08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+ZGd5ak9OVXM5ckJqVzdQSDI1c2VHcWNNTlpZPTwvU2lnbmF0dXJlVmFsdWU+PE9iamVjdD48aWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKwkJPCEtLSBUaGlzIGlzIGEgeG1sIGRvY3VtZW50IGZvciBjaGVja2luZyBiZWhhdmlvdXIgb2YgdG9vbHMgd2l0aCByZWdhcmRzIHRvICBjb21tZW50cyB3aGVuIHVzaW5nIHNjaGVtZS1iYXNlZCB4cG9pbnRlcnMgaW4gdGhlIGRzOlJlZmVyZW5jZSdzIFVSSSBhdHRyaWJ1dGUgLS0+CisJPGlldGY6ZTEgeG1sOmlkPSJlMUlEIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMSBlbGVtZW50IC0tPgorCQk8aWV0ZjplMTE+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTExIGVsZW1lbnQgLS0+CisJCQk8aWV0ZjplMTExLz4KKwkJPC9pZXRmOmUxMT4KKwkJPGlldGY6ZTEyIGF0PSIyIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTIgZWxlbWVudCAtLT4KKwkJCTxpZXRmOmUxMjEvPgorCQk8L2lldGY6ZTEyPgorCTwvaWV0ZjplMT4KKwk8aWV0ZjplMiB4bWw6aWQ9ImUySUQiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUyIGVsZW1lbnQgLS0+CisJCTxpZXRmOmUyMS8+CisJPC9pZXRmOmUyPgorCTxpZXRmOmUzIHhtbDppZD0iZTNJRCI+CisJCTxpZXRmOmUzMSBhdD0iMyIvPgorCTwvaWV0ZjplMz4KKzwvaWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMT48L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci00LVVQQy54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci00LVVQQy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2E2YTUyNAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTQtVVBDLnhtbApAQCAtMCwwICsxLDIxIEBACis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIgLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIgLz48UmVmZXJlbmNlIFVSST0iI2UxSUQiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIiAvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+PERpZ2VzdFZhbHVlPjNLK0s0TWJSMkVXN2wvcnk1OVhvY2tLcXQ0Zz08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+ZGd5ak9OVXM5ckJqVzdQSDI1c2VHcWNNTlpZPTwvU2lnbmF0dXJlVmFsdWU+PE9iamVjdD48aWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKwkJPCEtLSBUaGlzIGlzIGEgeG1sIGRvY3VtZW50IGZvciBjaGVja2luZyBiZWhhdmlvdXIgb2YgdG9vbHMgd2l0aCByZWdhcmRzIHRvICBjb21tZW50cyB3aGVuIHVzaW5nIHNjaGVtZS1iYXNlZCB4cG9pbnRlcnMgaW4gdGhlIGRzOlJlZmVyZW5jZSdzIFVSSSBhdHRyaWJ1dGUgLS0+CisJPGlldGY6ZTEgeG1sOmlkPSJlMUlEIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMSBlbGVtZW50IC0tPgorCQk8aWV0ZjplMTE+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTExIGVsZW1lbnQgLS0+CisJCQk8aWV0ZjplMTExIC8+CisJCTwvaWV0ZjplMTE+CisJCTxpZXRmOmUxMiBhdD0iMiI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEyIGVsZW1lbnQgLS0+CisJCQk8aWV0ZjplMTIxIC8+CisJCTwvaWV0ZjplMTI+CisJPC9pZXRmOmUxPgorCTxpZXRmOmUyIHhtbDppZD0iZTJJRCI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTIgZWxlbWVudCAtLT4KKwkJPGlldGY6ZTIxIC8+CisJPC9pZXRmOmUyPgorCTxpZXRmOmUzIHhtbDppZD0iZTNJRCI+CisJCTxpZXRmOmUzMSBhdD0iMyIgLz4KKwk8L2lldGY6ZTM+Cis8L2lldGY6YzE0bjExWG1sUG9pbnRlckRvYzE+PC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNC10ZW1wbGF0ZS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci00LXRlbXBsYXRlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Yzk4YTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNC10ZW1wbGF0ZS54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0gZW52ZWxvcGluZyBpbnB1dC54bWwgLS0+DQorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSIjZTFJRCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPjwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZVZhbHVlPjxPYmplY3Q+PC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNC5wb2ludGVydmFsdWUgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci00LnBvaW50ZXJ2YWx1ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDk3YTIyCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNC5wb2ludGVydmFsdWUKQEAgLTAsMCArMSBAQAorI2UxSUQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci01LUlBSUstcmVmMC5kZXJlZlVSSSBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTUtSUFJSy1yZWYwLmRlcmVmVVJJCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3MjA2NWQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci01LUlBSUstcmVmMC5kZXJlZlVSSQpAQCAtMCwwICsxLDQ3IEBACistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTm9kZVNldERhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTm9kZSAxIDogW2lldGY6ZTE6IG51bGxdCitOb2RlIDIgOiB4bWw6aWQ9ImUxSUQiCitOb2RlIDMgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgNCA6IHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciCitOb2RlIDUgOiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIgorTm9kZSA2IDogWyN0ZXh0OiAKKwkJXQorTm9kZSA3IDogWyNjb21tZW50OiAgVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEgZWxlbWVudCBdCitOb2RlIDggOiBbI3RleHQ6IAorCQldCitOb2RlIDkgOiBbaWV0ZjplMTE6IG51bGxdCitOb2RlIDEwIDogeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiCitOb2RlIDExIDogeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIKK05vZGUgMTIgOiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIgorTm9kZSAxMyA6IFsjdGV4dDogCisJCV0KK05vZGUgMTQgOiBbI2NvbW1lbnQ6ICBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTEgZWxlbWVudCBdCitOb2RlIDE1IDogWyN0ZXh0OiAKKwkJCV0KK05vZGUgMTYgOiBbaWV0ZjplMTExOiBudWxsXQorTm9kZSAxNyA6IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIgorTm9kZSAxOCA6IHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciCitOb2RlIDE5IDogeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIKK05vZGUgMjAgOiBbI3RleHQ6IAorCQldCitOb2RlIDIxIDogWyN0ZXh0OiAKKwkJXQorTm9kZSAyMiA6IFtpZXRmOmUxMjogbnVsbF0KK05vZGUgMjMgOiBhdD0iMiIKK05vZGUgMjQgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgMjUgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSAyNiA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDI3IDogWyN0ZXh0OiAKKwkJXQorTm9kZSAyOCA6IFsjY29tbWVudDogIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMiBlbGVtZW50IF0KK05vZGUgMjkgOiBbI3RleHQ6IAorCQkJXQorTm9kZSAzMCA6IFtpZXRmOmUxMjE6IG51bGxdCitOb2RlIDMxIDogeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiCitOb2RlIDMyIDogeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIKK05vZGUgMzMgOiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIgorTm9kZSAzNCA6IFsjdGV4dDogCisJCV0KK05vZGUgMzUgOiBbI3RleHQ6IAorCV0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci01LUlBSUstcmVmMC5kaWdlc3RpbnB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTUtSUFJSy1yZWYwLmRpZ2VzdGlucHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4NDljNjgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci01LUlBSUstcmVmMC5kaWdlc3RpbnB1dApAQCAtMCwwICsxLDExIEBACis8aWV0ZjplMSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmlkPSJlMUlEIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMSBlbGVtZW50IC0tPgorCQk8aWV0ZjplMTE+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTExIGVsZW1lbnQgLS0+CisJCQk8aWV0ZjplMTExPjwvaWV0ZjplMTExPgorCQk8L2lldGY6ZTExPgorCQk8aWV0ZjplMTIgYXQ9IjIiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMiBlbGVtZW50IC0tPgorCQkJPGlldGY6ZTEyMT48L2lldGY6ZTEyMT4KKwkJPC9pZXRmOmUxMj4KKwk8L2lldGY6ZTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNS1JQUlLLXJlZjEuZGVyZWZVUkkgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci01LUlBSUstcmVmMS5kZXJlZlVSSQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjczNWJhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNS1JQUlLLXJlZjEuZGVyZWZVUkkKQEAgLTAsMCArMSwxOCBAQAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE5vZGVTZXREYXRhIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05vZGUgMSA6IFtpZXRmOmUyOiBudWxsXQorTm9kZSAyIDogeG1sOmlkPSJlMklEIgorTm9kZSAzIDogeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiCitOb2RlIDQgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSA1IDogeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIKK05vZGUgNiA6IFsjdGV4dDogCisJCV0KK05vZGUgNyA6IFsjY29tbWVudDogIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUyIGVsZW1lbnQgXQorTm9kZSA4IDogWyN0ZXh0OiAKKwkJXQorTm9kZSA5IDogW2lldGY6ZTIxOiBudWxsXQorTm9kZSAxMCA6IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIgorTm9kZSAxMSA6IHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciCitOb2RlIDEyIDogeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIKK05vZGUgMTMgOiBbI3RleHQ6IAorCV0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci01LUlBSUstcmVmMS5kaWdlc3RpbnB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTUtSUFJSy1yZWYxLmRpZ2VzdGlucHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0ZjViYWQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci01LUlBSUstcmVmMS5kaWdlc3RpbnB1dApAQCAtMCwwICsxLDQgQEAKKzxpZXRmOmUyIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6aWQ9ImUySUQiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUyIGVsZW1lbnQgLS0+CisJCTxpZXRmOmUyMT48L2lldGY6ZTIxPgorCTwvaWV0ZjplMj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci01LUlBSUstcmVmMi5kZXJlZlVSSSBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTUtSUFJSy1yZWYyLmRlcmVmVVJJCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwNzZlNTMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci01LUlBSUstcmVmMi5kZXJlZlVSSQpAQCAtMCwwICsxLDE2IEBACistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTm9kZVNldERhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTm9kZSAxIDogW2lldGY6ZTM6IG51bGxdCitOb2RlIDIgOiB4bWw6aWQ9ImUzSUQiCitOb2RlIDMgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgNCA6IHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciCitOb2RlIDUgOiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIgorTm9kZSA2IDogWyN0ZXh0OiAKKwkJXQorTm9kZSA3IDogW2lldGY6ZTMxOiBudWxsXQorTm9kZSA4IDogYXQ9IjMiCitOb2RlIDkgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgMTAgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSAxMSA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDEyIDogWyN0ZXh0OiAKKwldCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNS1JQUlLLXJlZjIuZGlnZXN0aW5wdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci01LUlBSUstcmVmMi5kaWdlc3RpbnB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDAzYTAxCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNS1JQUlLLXJlZjIuZGlnZXN0aW5wdXQKQEAgLTAsMCArMSwzIEBACis8aWV0ZjplMyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgeG1sOmlkPSJlM0lEIj4KKwkJPGlldGY6ZTMxIGF0PSIzIj48L2lldGY6ZTMxPgorCTwvaWV0ZjplMz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci01LUlBSUsueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNS1JQUlLLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzJiOTA1Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNS1JQUlLLnhtbApAQCAtMCwwICsxLDIyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoaWQoJ2UxSUQnKSkiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5YaFNzRHBXVHQrdGkwa2NVOVhZcGxlUkRIZlE9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKGlkKCdlMklEJykpIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+YWJ5QTFqNHl6ZjFJZ1FMV3dEd0t1VTlsOElrPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PFJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcihpZCgnZTNJRCcpKSI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPlJVVUJpVWVGZjh1UnFUbHBDeXV0a1hEcW5KND08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+c0crMHBIazlUQjZ2N2pFUzlSWlVJVktNRm9zPTwvU2lnbmF0dXJlVmFsdWU+PE9iamVjdD48aWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisJCTwhLS0gVGhpcyBpcyBhIHhtbCBkb2N1bWVudCBmb3IgY2hlY2tpbmcgYmVoYXZpb3VyIG9mIHRvb2xzIHdpdGggcmVnYXJkcyB0byAgY29tbWVudHMgd2hlbiB1c2luZyBzY2hlbWUtYmFzZWQgeHBvaW50ZXJzIGluIHRoZSBkczpSZWZlcmVuY2UncyBVUkkgYXR0cmlidXRlIC0tPgorCTxpZXRmOmUxIHhtbDppZD0iZTFJRCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxIGVsZW1lbnQgLS0+CisJCTxpZXRmOmUxMSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTExIGVsZW1lbnQgLS0+CisJCQk8aWV0ZjplMTExIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIi8+CisJCTwvaWV0ZjplMTE+CisJCTxpZXRmOmUxMiBhdD0iMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMiBlbGVtZW50IC0tPgorCQkJPGlldGY6ZTEyMSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIvPgorCQk8L2lldGY6ZTEyPgorCTwvaWV0ZjplMT4KKwk8aWV0ZjplMiB4bWw6aWQ9ImUySUQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMiBlbGVtZW50IC0tPgorCQk8aWV0ZjplMjEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciLz4KKwk8L2lldGY6ZTI+CisJPGlldGY6ZTMgeG1sOmlkPSJlM0lEIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisJCTxpZXRmOmUzMSBhdD0iMyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciLz4KKwk8L2lldGY6ZTM+Cis8L2lldGY6YzE0bjExWG1sUG9pbnRlckRvYzE+PC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNS1JQk0ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNS1JQk0ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjZDNhYjkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci01LUlCTS54bWwKQEAgLTAsMCArMSwyMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHM6U2lnbmVkSW5mbz48ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PGRzOlJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcihpZCgnZTFJRCcpKSI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzOkRpZ2VzdFZhbHVlPjFScEcrY1RXcW5YOXlHTWtGOGlwbXF2bzc0cz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjxkczpSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoaWQoJ2UySUQnKSkiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5YdmQrd1pBU1Y1Z2hjRWd2V0U3VWxSc0hYck09PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48ZHM6UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKGlkKCdlM0lEJykpIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHM6RGlnZXN0VmFsdWU+UzN1b2xYdUM0MVM3L1FrNUU5QllSWTFia29zPTwvZHM6RGlnZXN0VmFsdWU+PC9kczpSZWZlcmVuY2U+PC9kczpTaWduZWRJbmZvPjxkczpTaWduYXR1cmVWYWx1ZT41ZnEyYzRRMS9tUFJmWTVpQXdObmZaSHFTZEE9PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6T2JqZWN0PjxpZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPg0KKwkJPCEtLSBUaGlzIGlzIGEgeG1sIGRvY3VtZW50IGZvciBjaGVja2luZyBiZWhhdmlvdXIgb2YgdG9vbHMgd2l0aCByZWdhcmRzIHRvICBjb21tZW50cyB3aGVuIHVzaW5nIHNjaGVtZS1iYXNlZCB4cG9pbnRlcnMgaW4gdGhlIGRzOlJlZmVyZW5jZSdzIFVSSSBhdHRyaWJ1dGUgLS0+DQorCTxpZXRmOmUxIHhtbDppZD0iZTFJRCI+DQorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxIGVsZW1lbnQgLS0+DQorCQk8aWV0ZjplMTE+DQorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMSBlbGVtZW50IC0tPg0KKwkJCTxpZXRmOmUxMTEvPg0KKwkJPC9pZXRmOmUxMT4NCisJCTxpZXRmOmUxMiBhdD0iMiI+DQorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMiBlbGVtZW50IC0tPg0KKwkJCTxpZXRmOmUxMjEvPg0KKwkJPC9pZXRmOmUxMj4NCisJPC9pZXRmOmUxPg0KKwk8aWV0ZjplMiB4bWw6aWQ9ImUySUQiPg0KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMiBlbGVtZW50IC0tPg0KKwkJPGlldGY6ZTIxLz4NCisJPC9pZXRmOmUyPg0KKwk8aWV0ZjplMyB4bWw6aWQ9ImUzSUQiPg0KKwkJPGlldGY6ZTMxIGF0PSIzIi8+DQorCTwvaWV0ZjplMz4NCis8L2lldGY6YzE0bjExWG1sUG9pbnRlckRvYzE+PC9kczpPYmplY3Q+PC9kczpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNS1PUkNMLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTUtT1JDTC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ2NDc0NAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTUtT1JDTC54bWwKQEAgLTAsMCArMSwyMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcihpZCgnZTFJRCcpKSI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPlhoU3NEcFdUdCt0aTBrY1U5WFlwbGVSREhmUT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjxSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoaWQoJ2UySUQnKSkiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5hYnlBMWo0eXpmMUlnUUxXd0R3S3VVOWw4SWs9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKGlkKCdlM0lEJykpIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+UlVVQmlVZUZmOHVScVRscEN5dXRrWERxbko0PTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPnNHKzBwSGs5VEI2djdqRVM5UlpVSVZLTUZvcz08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PE9iamVjdD48aWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKwkJPCEtLSBUaGlzIGlzIGEgeG1sIGRvY3VtZW50IGZvciBjaGVja2luZyBiZWhhdmlvdXIgb2YgdG9vbHMgd2l0aCByZWdhcmRzIHRvICBjb21tZW50cyB3aGVuIHVzaW5nIHNjaGVtZS1iYXNlZCB4cG9pbnRlcnMgaW4gdGhlIGRzOlJlZmVyZW5jZSdzIFVSSSBhdHRyaWJ1dGUgLS0+CisJPGlldGY6ZTEgeG1sOmlkPSJlMUlEIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMSBlbGVtZW50IC0tPgorCQk8aWV0ZjplMTE+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTExIGVsZW1lbnQgLS0+CisJCQk8aWV0ZjplMTExLz4KKwkJPC9pZXRmOmUxMT4KKwkJPGlldGY6ZTEyIGF0PSIyIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTIgZWxlbWVudCAtLT4KKwkJCTxpZXRmOmUxMjEvPgorCQk8L2lldGY6ZTEyPgorCTwvaWV0ZjplMT4KKwk8aWV0ZjplMiB4bWw6aWQ9ImUySUQiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUyIGVsZW1lbnQgLS0+CisJCTxpZXRmOmUyMS8+CisJPC9pZXRmOmUyPgorCTxpZXRmOmUzIHhtbDppZD0iZTNJRCI+CisJCTxpZXRmOmUzMSBhdD0iMyIvPgorCTwvaWV0ZjplMz4KKzwvaWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMT48L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci01LVNVTi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci01LVNVTi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDAxZWZmNgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTUtU1VOLnhtbApAQCAtMCwwICsxLDIxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKGlkKCdlMUlEJykpIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+WGhTc0RwV1R0K3RpMGtjVTlYWXBsZVJESGZRPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PFJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcihpZCgnZTJJRCcpKSI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPmFieUExajR5emYxSWdRTFd3RHdLdVU5bDhJaz08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjxSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoaWQoJ2UzSUQnKSkiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5SVVVCaVVlRmY4dVJxVGxwQ3l1dGtYRHFuSjQ9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPnNHKzBwSGs5VEI2djdqRVM5UlpVSVZLTUZvcz08L1NpZ25hdHVyZVZhbHVlPjxPYmplY3Q+PGlldGY6YzE0bjExWG1sUG9pbnRlckRvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisJCTwhLS0gVGhpcyBpcyBhIHhtbCBkb2N1bWVudCBmb3IgY2hlY2tpbmcgYmVoYXZpb3VyIG9mIHRvb2xzIHdpdGggcmVnYXJkcyB0byAgY29tbWVudHMgd2hlbiB1c2luZyBzY2hlbWUtYmFzZWQgeHBvaW50ZXJzIGluIHRoZSBkczpSZWZlcmVuY2UncyBVUkkgYXR0cmlidXRlIC0tPgorCTxpZXRmOmUxIHhtbDppZD0iZTFJRCI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEgZWxlbWVudCAtLT4KKwkJPGlldGY6ZTExPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMSBlbGVtZW50IC0tPgorCQkJPGlldGY6ZTExMS8+CisJCTwvaWV0ZjplMTE+CisJCTxpZXRmOmUxMiBhdD0iMiI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEyIGVsZW1lbnQgLS0+CisJCQk8aWV0ZjplMTIxLz4KKwkJPC9pZXRmOmUxMj4KKwk8L2lldGY6ZTE+CisJPGlldGY6ZTIgeG1sOmlkPSJlMklEIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMiBlbGVtZW50IC0tPgorCQk8aWV0ZjplMjEvPgorCTwvaWV0ZjplMj4KKwk8aWV0ZjplMyB4bWw6aWQ9ImUzSUQiPgorCQk8aWV0ZjplMzEgYXQ9IjMiLz4KKwk8L2lldGY6ZTM+Cis8L2lldGY6YzE0bjExWG1sUG9pbnRlckRvYzE+PC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNS1VUEMueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNS1VUEMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlYjViYTUKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci01LVVQQy54bWwKQEAgLTAsMCArMSwyMSBAQAorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiIC8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiIC8+PFJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcihpZCgnZTFJRCcpKSI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiIC8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz48RGlnZXN0VmFsdWU+WGhTc0RwV1R0K3RpMGtjVTlYWXBsZVJESGZRPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PFJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcihpZCgnZTJJRCcpKSI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiIC8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz48RGlnZXN0VmFsdWU+YWJ5QTFqNHl6ZjFJZ1FMV3dEd0t1VTlsOElrPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PFJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcihpZCgnZTNJRCcpKSI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiIC8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz48RGlnZXN0VmFsdWU+UlVVQmlVZUZmOHVScVRscEN5dXRrWERxbko0PTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5zRyswcEhrOVRCNnY3akVTOVJaVUlWS01Gb3M9PC9TaWduYXR1cmVWYWx1ZT48T2JqZWN0PjxpZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPgorCQk8IS0tIFRoaXMgaXMgYSB4bWwgZG9jdW1lbnQgZm9yIGNoZWNraW5nIGJlaGF2aW91ciBvZiB0b29scyB3aXRoIHJlZ2FyZHMgdG8gIGNvbW1lbnRzIHdoZW4gdXNpbmcgc2NoZW1lLWJhc2VkIHhwb2ludGVycyBpbiB0aGUgZHM6UmVmZXJlbmNlJ3MgVVJJIGF0dHJpYnV0ZSAtLT4KKwk8aWV0ZjplMSB4bWw6aWQ9ImUxSUQiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxIGVsZW1lbnQgLS0+CisJCTxpZXRmOmUxMT4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTEgZWxlbWVudCAtLT4KKwkJCTxpZXRmOmUxMTEgLz4KKwkJPC9pZXRmOmUxMT4KKwkJPGlldGY6ZTEyIGF0PSIyIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTIgZWxlbWVudCAtLT4KKwkJCTxpZXRmOmUxMjEgLz4KKwkJPC9pZXRmOmUxMj4KKwk8L2lldGY6ZTE+CisJPGlldGY6ZTIgeG1sOmlkPSJlMklEIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMiBlbGVtZW50IC0tPgorCQk8aWV0ZjplMjEgLz4KKwk8L2lldGY6ZTI+CisJPGlldGY6ZTMgeG1sOmlkPSJlM0lEIj4KKwkJPGlldGY6ZTMxIGF0PSIzIiAvPgorCTwvaWV0ZjplMz4KKzwvaWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMT48L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci01LWZpcnN0dXJpLnBvaW50ZXJ2YWx1ZSBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTUtZmlyc3R1cmkucG9pbnRlcnZhbHVlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwOTkyZTMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci01LWZpcnN0dXJpLnBvaW50ZXJ2YWx1ZQpAQCAtMCwwICsxIEBACisjeHBvaW50ZXIoaWQoJ2UxSUQnKSkKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTUtc2Vjb25kdXJpLnBvaW50ZXJ2YWx1ZSBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTUtc2Vjb25kdXJpLnBvaW50ZXJ2YWx1ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzhkZWUyCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNS1zZWNvbmR1cmkucG9pbnRlcnZhbHVlCkBAIC0wLDAgKzEgQEAKKyN4cG9pbnRlcihpZCgnZTJJRCcpKQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNS10ZW1wbGF0ZS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci01LXRlbXBsYXRlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjc3MTQzCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNS10ZW1wbGF0ZS54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0gZW52ZWxvcGluZyBpbnB1dC54bWwgLS0+DQorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoaWQoJ2UxSUQnKSkiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT48L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjxSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoaWQoJ2UySUQnKSkiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT48L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjxSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoaWQoJ2UzSUQnKSkiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT48L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+PC9TaWduYXR1cmVWYWx1ZT48T2JqZWN0PjwvT2JqZWN0PjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTUtdGhpcmR1cmkucG9pbnRlcnZhbHVlIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNS10aGlyZHVyaS5wb2ludGVydmFsdWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE0ZGZlNgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTUtdGhpcmR1cmkucG9pbnRlcnZhbHVlCkBAIC0wLDAgKzEgQEAKKyN4cG9pbnRlcihpZCgnZTNJRCcpKQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNi1JQUlLLXJlZjAuZGVyZWZVUkkgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci02LUlBSUstcmVmMC5kZXJlZlVSSQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTA2ZDZhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNi1JQUlLLXJlZjAuZGVyZWZVUkkKQEAgLTAsMCArMSw0NCBAQAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE5vZGVTZXREYXRhIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05vZGUgMSA6IFtpZXRmOmUxOiBudWxsXQorTm9kZSAyIDogeG1sOmlkPSJlMUlEIgorTm9kZSAzIDogeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiCitOb2RlIDQgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSA1IDogeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIKK05vZGUgNiA6IFsjdGV4dDogCisJCV0KK05vZGUgNyA6IFsjdGV4dDogCisJCV0KK05vZGUgOCA6IFtpZXRmOmUxMTogbnVsbF0KK05vZGUgOSA6IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIgorTm9kZSAxMCA6IHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciCitOb2RlIDExIDogeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIKK05vZGUgMTIgOiBbI3RleHQ6IAorCQldCitOb2RlIDEzIDogWyN0ZXh0OiAKKwkJCV0KK05vZGUgMTQgOiBbaWV0ZjplMTExOiBudWxsXQorTm9kZSAxNSA6IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIgorTm9kZSAxNiA6IHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciCitOb2RlIDE3IDogeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIKK05vZGUgMTggOiBbI3RleHQ6IAorCQldCitOb2RlIDE5IDogWyN0ZXh0OiAKKwkJXQorTm9kZSAyMCA6IFtpZXRmOmUxMjogbnVsbF0KK05vZGUgMjEgOiBhdD0iMiIKK05vZGUgMjIgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgMjMgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSAyNCA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDI1IDogWyN0ZXh0OiAKKwkJXQorTm9kZSAyNiA6IFsjdGV4dDogCisJCQldCitOb2RlIDI3IDogW2lldGY6ZTEyMTogbnVsbF0KK05vZGUgMjggOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgMjkgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSAzMCA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDMxIDogWyN0ZXh0OiAKKwkJXQorTm9kZSAzMiA6IFsjdGV4dDogCisJXQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTYtSUFJSy1yZWYwLmRpZ2VzdGlucHV0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNi1JQUlLLXJlZjAuZGlnZXN0aW5wdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDYwMjljYwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTYtSUFJSy1yZWYwLmRpZ2VzdGlucHV0CkBAIC0wLDAgKzEsMTEgQEAKKzxpZXRmOmUxIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6aWQ9ImUxSUQiPgorCQkKKwkJPGlldGY6ZTExPgorCQkKKwkJCTxpZXRmOmUxMTE+PC9pZXRmOmUxMTE+CisJCTwvaWV0ZjplMTE+CisJCTxpZXRmOmUxMiBhdD0iMiI+CisJCQorCQkJPGlldGY6ZTEyMT48L2lldGY6ZTEyMT4KKwkJPC9pZXRmOmUxMj4KKwk8L2lldGY6ZTE+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNi1JQUlLLXJlZjEuZGVyZWZVUkkgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci02LUlBSUstcmVmMS5kZXJlZlVSSQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjY4NDBkCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNi1JQUlLLXJlZjEuZGVyZWZVUkkKQEAgLTAsMCArMSwxNyBAQAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE5vZGVTZXREYXRhIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05vZGUgMSA6IFtpZXRmOmUyOiBudWxsXQorTm9kZSAyIDogeG1sOmlkPSJlMklEIgorTm9kZSAzIDogeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiCitOb2RlIDQgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSA1IDogeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIKK05vZGUgNiA6IFsjdGV4dDogCisJCV0KK05vZGUgNyA6IFsjdGV4dDogCisJCV0KK05vZGUgOCA6IFtpZXRmOmUyMTogbnVsbF0KK05vZGUgOSA6IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIgorTm9kZSAxMCA6IHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciCitOb2RlIDExIDogeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIKK05vZGUgMTIgOiBbI3RleHQ6IAorCV0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci02LUlBSUstcmVmMS5kaWdlc3RpbnB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTYtSUFJSy1yZWYxLmRpZ2VzdGlucHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2Yzc5NTcKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci02LUlBSUstcmVmMS5kaWdlc3RpbnB1dApAQCAtMCwwICsxLDQgQEAKKzxpZXRmOmUyIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6aWQ9ImUySUQiPgorCQkKKwkJPGlldGY6ZTIxPjwvaWV0ZjplMjE+CisJPC9pZXRmOmUyPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTYtSUFJSy1yZWYyLmRlcmVmVVJJIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNi1JQUlLLXJlZjIuZGVyZWZVUkkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA3NmU1MwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTYtSUFJSy1yZWYyLmRlcmVmVVJJCkBAIC0wLDAgKzEsMTYgQEAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBOb2RlU2V0RGF0YSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitOb2RlIDEgOiBbaWV0ZjplMzogbnVsbF0KK05vZGUgMiA6IHhtbDppZD0iZTNJRCIKK05vZGUgMyA6IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIgorTm9kZSA0IDogeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIKK05vZGUgNSA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDYgOiBbI3RleHQ6IAorCQldCitOb2RlIDcgOiBbaWV0ZjplMzE6IG51bGxdCitOb2RlIDggOiBhdD0iMyIKK05vZGUgOSA6IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIgorTm9kZSAxMCA6IHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciCitOb2RlIDExIDogeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIKK05vZGUgMTIgOiBbI3RleHQ6IAorCV0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci02LUlBSUstcmVmMi5kaWdlc3RpbnB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTYtSUFJSy1yZWYyLmRpZ2VzdGlucHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MDNhMDEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci02LUlBSUstcmVmMi5kaWdlc3RpbnB1dApAQCAtMCwwICsxLDMgQEAKKzxpZXRmOmUzIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiB4bWw6aWQ9ImUzSUQiPgorCQk8aWV0ZjplMzEgYXQ9IjMiPjwvaWV0ZjplMzE+CisJPC9pZXRmOmUzPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTYtSUFJSy54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci02LUlBSUsueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2Nzc1OTIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci02LUlBSUsueG1sCkBAIC0wLDAgKzEsMjIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiNlMUlEIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+M0srSzRNYlIyRVc3bC9yeTU5WG9ja0txdDRnPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PFJlZmVyZW5jZSBVUkk9IiNlMklEIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+aG5LRmpHRnIvandMQ0NUY2tacGFjbE93ZTI4PTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PFJlZmVyZW5jZSBVUkk9IiNlM0lEIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+UlVVQmlVZUZmOHVScVRscEN5dXRrWERxbko0PTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5YekVKUSt3aGhIVVlscWlDRXQ4WEZ4Qzh3cGs9PC9TaWduYXR1cmVWYWx1ZT48T2JqZWN0PjxpZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKwkJPCEtLSBUaGlzIGlzIGEgeG1sIGRvY3VtZW50IGZvciBjaGVja2luZyBiZWhhdmlvdXIgb2YgdG9vbHMgd2l0aCByZWdhcmRzIHRvICBjb21tZW50cyB3aGVuIHVzaW5nIHNjaGVtZS1iYXNlZCB4cG9pbnRlcnMgaW4gdGhlIGRzOlJlZmVyZW5jZSdzIFVSSSBhdHRyaWJ1dGUgLS0+CisJPGlldGY6ZTEgeG1sOmlkPSJlMUlEIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEgZWxlbWVudCAtLT4KKwkJPGlldGY6ZTExIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTEgZWxlbWVudCAtLT4KKwkJCTxpZXRmOmUxMTEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciLz4KKwkJPC9pZXRmOmUxMT4KKwkJPGlldGY6ZTEyIGF0PSIyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEyIGVsZW1lbnQgLS0+CisJCQk8aWV0ZjplMTIxIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIi8+CisJCTwvaWV0ZjplMTI+CisJPC9pZXRmOmUxPgorCTxpZXRmOmUyIHhtbDppZD0iZTJJRCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUyIGVsZW1lbnQgLS0+CisJCTxpZXRmOmUyMSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIvPgorCTwvaWV0ZjplMj4KKwk8aWV0ZjplMyB4bWw6aWQ9ImUzSUQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKwkJPGlldGY6ZTMxIGF0PSIzIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIvPgorCTwvaWV0ZjplMz4KKzwvaWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMT48L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci02LUlCTS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci02LUlCTS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmVlZDJmZAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTYtSUJNLnhtbApAQCAtMCwwICsxLDIxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48ZHM6UmVmZXJlbmNlIFVSST0iI2UxSUQiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5RelN0Ny83K3M0K2NKR05wajhwVlUySWJqRHc9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48ZHM6UmVmZXJlbmNlIFVSST0iI2UySUQiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5JTE1xaVd3TUQ0WitVb0s5ZUh6SHlTVVYySjA9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48ZHM6UmVmZXJlbmNlIFVSST0iI2UzSUQiPjxkczpUcmFuc2Zvcm1zPjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5TM3VvbFh1QzQxUzcvUWs1RTlCWVJZMWJrb3M9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPkFZc3FTLzNnSjNqbHJmYTlQR0pGWjM4N0RrZz08L2RzOlNpZ25hdHVyZVZhbHVlPjxkczpPYmplY3Q+PGlldGY6YzE0bjExWG1sUG9pbnRlckRvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+DQorCQk8IS0tIFRoaXMgaXMgYSB4bWwgZG9jdW1lbnQgZm9yIGNoZWNraW5nIGJlaGF2aW91ciBvZiB0b29scyB3aXRoIHJlZ2FyZHMgdG8gIGNvbW1lbnRzIHdoZW4gdXNpbmcgc2NoZW1lLWJhc2VkIHhwb2ludGVycyBpbiB0aGUgZHM6UmVmZXJlbmNlJ3MgVVJJIGF0dHJpYnV0ZSAtLT4NCisJPGlldGY6ZTEgeG1sOmlkPSJlMUlEIj4NCisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEgZWxlbWVudCAtLT4NCisJCTxpZXRmOmUxMT4NCisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTExIGVsZW1lbnQgLS0+DQorCQkJPGlldGY6ZTExMS8+DQorCQk8L2lldGY6ZTExPg0KKwkJPGlldGY6ZTEyIGF0PSIyIj4NCisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEyIGVsZW1lbnQgLS0+DQorCQkJPGlldGY6ZTEyMS8+DQorCQk8L2lldGY6ZTEyPg0KKwk8L2lldGY6ZTE+DQorCTxpZXRmOmUyIHhtbDppZD0iZTJJRCI+DQorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUyIGVsZW1lbnQgLS0+DQorCQk8aWV0ZjplMjEvPg0KKwk8L2lldGY6ZTI+DQorCTxpZXRmOmUzIHhtbDppZD0iZTNJRCI+DQorCQk8aWV0ZjplMzEgYXQ9IjMiLz4NCisJPC9pZXRmOmUzPg0KKzwvaWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMT48L2RzOk9iamVjdD48L2RzOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci02LU9SQ0wueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNi1PUkNMLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODM2OGI0Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNi1PUkNMLnhtbApAQCAtMCwwICsxLDIxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iI2UxSUQiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT4zSytLNE1iUjJFVzdsL3J5NTlYb2NrS3F0NGc9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48UmVmZXJlbmNlIFVSST0iI2UySUQiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5obktGakdGci9qd0xDQ1Rja1pwYWNsT3dlMjg9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48UmVmZXJlbmNlIFVSST0iI2UzSUQiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5SVVVCaVVlRmY4dVJxVGxwQ3l1dGtYRHFuSjQ9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWUgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+WHpFSlErd2hoSFVZbHFpQ0V0OFhGeEM4d3BrPTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48T2JqZWN0PjxpZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPgorCQk8IS0tIFRoaXMgaXMgYSB4bWwgZG9jdW1lbnQgZm9yIGNoZWNraW5nIGJlaGF2aW91ciBvZiB0b29scyB3aXRoIHJlZ2FyZHMgdG8gIGNvbW1lbnRzIHdoZW4gdXNpbmcgc2NoZW1lLWJhc2VkIHhwb2ludGVycyBpbiB0aGUgZHM6UmVmZXJlbmNlJ3MgVVJJIGF0dHJpYnV0ZSAtLT4KKwk8aWV0ZjplMSB4bWw6aWQ9ImUxSUQiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxIGVsZW1lbnQgLS0+CisJCTxpZXRmOmUxMT4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTEgZWxlbWVudCAtLT4KKwkJCTxpZXRmOmUxMTEvPgorCQk8L2lldGY6ZTExPgorCQk8aWV0ZjplMTIgYXQ9IjIiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMiBlbGVtZW50IC0tPgorCQkJPGlldGY6ZTEyMS8+CisJCTwvaWV0ZjplMTI+CisJPC9pZXRmOmUxPgorCTxpZXRmOmUyIHhtbDppZD0iZTJJRCI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTIgZWxlbWVudCAtLT4KKwkJPGlldGY6ZTIxLz4KKwk8L2lldGY6ZTI+CisJPGlldGY6ZTMgeG1sOmlkPSJlM0lEIj4KKwkJPGlldGY6ZTMxIGF0PSIzIi8+CisJPC9pZXRmOmUzPgorPC9pZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxPjwvT2JqZWN0PjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTYtU1VOLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTYtU1VOLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjEzYWFiCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNi1TVU4ueG1sCkBAIC0wLDAgKzEsMjEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSIjZTFJRCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPjNLK0s0TWJSMkVXN2wvcnk1OVhvY2tLcXQ0Zz08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjxSZWZlcmVuY2UgVVJJPSIjZTJJRCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPmhuS0ZqR0ZyL2p3TENDVGNrWnBhY2xPd2UyOD08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjxSZWZlcmVuY2UgVVJJPSIjZTNJRCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPlJVVUJpVWVGZjh1UnFUbHBDeXV0a1hEcW5KND08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+WHpFSlErd2hoSFVZbHFpQ0V0OFhGeEM4d3BrPTwvU2lnbmF0dXJlVmFsdWU+PE9iamVjdD48aWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMSB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKwkJPCEtLSBUaGlzIGlzIGEgeG1sIGRvY3VtZW50IGZvciBjaGVja2luZyBiZWhhdmlvdXIgb2YgdG9vbHMgd2l0aCByZWdhcmRzIHRvICBjb21tZW50cyB3aGVuIHVzaW5nIHNjaGVtZS1iYXNlZCB4cG9pbnRlcnMgaW4gdGhlIGRzOlJlZmVyZW5jZSdzIFVSSSBhdHRyaWJ1dGUgLS0+CisJPGlldGY6ZTEgeG1sOmlkPSJlMUlEIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMSBlbGVtZW50IC0tPgorCQk8aWV0ZjplMTE+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTExIGVsZW1lbnQgLS0+CisJCQk8aWV0ZjplMTExLz4KKwkJPC9pZXRmOmUxMT4KKwkJPGlldGY6ZTEyIGF0PSIyIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTIgZWxlbWVudCAtLT4KKwkJCTxpZXRmOmUxMjEvPgorCQk8L2lldGY6ZTEyPgorCTwvaWV0ZjplMT4KKwk8aWV0ZjplMiB4bWw6aWQ9ImUySUQiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUyIGVsZW1lbnQgLS0+CisJCTxpZXRmOmUyMS8+CisJPC9pZXRmOmUyPgorCTxpZXRmOmUzIHhtbDppZD0iZTNJRCI+CisJCTxpZXRmOmUzMSBhdD0iMyIvPgorCTwvaWV0ZjplMz4KKzwvaWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMT48L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci02LVVQQy54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci02LVVQQy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZhM2ZlNAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTYtVVBDLnhtbApAQCAtMCwwICsxLDIxIEBACis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIgLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIgLz48UmVmZXJlbmNlIFVSST0iI2UxSUQiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIiAvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIC8+PERpZ2VzdFZhbHVlPjNLK0s0TWJSMkVXN2wvcnk1OVhvY2tLcXQ0Zz08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjxSZWZlcmVuY2UgVVJJPSIjZTJJRCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiIC8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIgLz48RGlnZXN0VmFsdWU+aG5LRmpHRnIvandMQ0NUY2tacGFjbE93ZTI4PTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PFJlZmVyZW5jZSBVUkk9IiNlM0lEIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIgLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIiAvPjxEaWdlc3RWYWx1ZT5SVVVCaVVlRmY4dVJxVGxwQ3l1dGtYRHFuSjQ9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPlh6RUpRK3doaEhVWWxxaUNFdDhYRnhDOHdwaz08L1NpZ25hdHVyZVZhbHVlPjxPYmplY3Q+PGlldGY6YzE0bjExWG1sUG9pbnRlckRvYzEgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisJCTwhLS0gVGhpcyBpcyBhIHhtbCBkb2N1bWVudCBmb3IgY2hlY2tpbmcgYmVoYXZpb3VyIG9mIHRvb2xzIHdpdGggcmVnYXJkcyB0byAgY29tbWVudHMgd2hlbiB1c2luZyBzY2hlbWUtYmFzZWQgeHBvaW50ZXJzIGluIHRoZSBkczpSZWZlcmVuY2UncyBVUkkgYXR0cmlidXRlIC0tPgorCTxpZXRmOmUxIHhtbDppZD0iZTFJRCI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEgZWxlbWVudCAtLT4KKwkJPGlldGY6ZTExPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMSBlbGVtZW50IC0tPgorCQkJPGlldGY6ZTExMSAvPgorCQk8L2lldGY6ZTExPgorCQk8aWV0ZjplMTIgYXQ9IjIiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMiBlbGVtZW50IC0tPgorCQkJPGlldGY6ZTEyMSAvPgorCQk8L2lldGY6ZTEyPgorCTwvaWV0ZjplMT4KKwk8aWV0ZjplMiB4bWw6aWQ9ImUySUQiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUyIGVsZW1lbnQgLS0+CisJCTxpZXRmOmUyMSAvPgorCTwvaWV0ZjplMj4KKwk8aWV0ZjplMyB4bWw6aWQ9ImUzSUQiPgorCQk8aWV0ZjplMzEgYXQ9IjMiIC8+CisJPC9pZXRmOmUzPgorPC9pZXRmOmMxNG4xMVhtbFBvaW50ZXJEb2MxPjwvT2JqZWN0PjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTYtZmlyc3R1cmkucG9pbnRlcnZhbHVlIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNi1maXJzdHVyaS5wb2ludGVydmFsdWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ5N2EyMgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTYtZmlyc3R1cmkucG9pbnRlcnZhbHVlCkBAIC0wLDAgKzEgQEAKKyNlMUlEClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNi1zZWNvbmR1cmkucG9pbnRlcnZhbHVlIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNi1zZWNvbmR1cmkucG9pbnRlcnZhbHVlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyMjYzMWMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci02LXNlY29uZHVyaS5wb2ludGVydmFsdWUKQEAgLTAsMCArMSBAQAorI2UySUQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci02LXRlbXBsYXRlLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLTYtdGVtcGxhdGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5NTQ2NTgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci02LXRlbXBsYXRlLnhtbApAQCAtMCwwICsxLDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLSBlbnZlbG9waW5nIGlucHV0LnhtbCAtLT4NCis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiNlMUlEIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48UmVmZXJlbmNlIFVSST0iI2UySUQiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT48L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjxSZWZlcmVuY2UgVVJJPSIjZTNJRCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPjwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZVZhbHVlPjxPYmplY3Q+PC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNi10aGlyZHVyaS5wb2ludGVydmFsdWUgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci02LXRoaXJkdXJpLnBvaW50ZXJ2YWx1ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGM3NTNhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXItNi10aGlyZHVyaS5wb2ludGVydmFsdWUKQEAgLTAsMCArMSBAQAorI2UzSUQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci1vcHRpb25hbC0xLnBvaW50ZXJ2YWx1ZSBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyLW9wdGlvbmFsLTEucG9pbnRlcnZhbHVlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwYzc1M2EKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlci1vcHRpb25hbC0xLnBvaW50ZXJ2YWx1ZQpAQCAtMCwwICsxIEBACisjZTNJRApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyc2NoZW1lLTEtSUFJSy1yZWYwLmRlcmVmVVJJIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXJzY2hlbWUtMS1JQUlLLXJlZjAuZGVyZWZVUkkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTU0MmViZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyc2NoZW1lLTEtSUFJSy1yZWYwLmRlcmVmVVJJCkBAIC0wLDAgKzEsMjMgQEAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBOb2RlU2V0RGF0YSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitOb2RlIDEgOiBbaWV0ZjplMTI6IG51bGxdCitOb2RlIDIgOiBhdD0iMiIKK05vZGUgMyA6IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIgorTm9kZSA0IDogeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIKK05vZGUgNSA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDYgOiBbI3RleHQ6IAorCQldCitOb2RlIDcgOiBbI2NvbW1lbnQ6ICBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTIgZWxlbWVudCBdCitOb2RlIDggOiBbI3RleHQ6IAorCQkJXQorTm9kZSA5IDogW2lldGY6ZTEyMTogbnVsbF0KK05vZGUgMTAgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgMTEgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSAxMiA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCitOb2RlIDEzIDogWyN0ZXh0OiAKKwkJXQorTm9kZSAxNCA6IFtpZXRmOmUzMTogbnVsbF0KK05vZGUgMTUgOiBhdD0iMyIKK05vZGUgMTYgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgMTcgOiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIgorTm9kZSAxOCA6IHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXJzY2hlbWUtMS1JQUlLLXJlZjAuZGlnZXN0aW5wdXQgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlcnNjaGVtZS0xLUlBSUstcmVmMC5kaWdlc3RpbnB1dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjI2ZTZmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXJzY2hlbWUtMS1JQUlLLXJlZjAuZGlnZXN0aW5wdXQKQEAgLTAsMCArMSw0IEBACis8aWV0ZjplMTIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciIGF0PSIyIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMTIgZWxlbWVudCAtLT4KKwkJCTxpZXRmOmUxMjE+PC9pZXRmOmUxMjE+CisJCTwvaWV0ZjplMTI+PGlldGY6ZTMxIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIiBhdD0iMyI+PC9pZXRmOmUzMT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlcnNjaGVtZS0xLUlBSUstcmVmMS5kZXJlZlVSSSBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyc2NoZW1lLTEtSUFJSy1yZWYxLmRlcmVmVVJJCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyZTEwNjMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlcnNjaGVtZS0xLUlBSUstcmVmMS5kZXJlZlVSSQpAQCAtMCwwICsxLDE4IEBACistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTm9kZVNldERhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTm9kZSAxIDogW2lldGY6ZTEyOiBudWxsXQorTm9kZSAyIDogYXQ9IjIiCitOb2RlIDMgOiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKK05vZGUgNCA6IHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciCitOb2RlIDUgOiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIgorTm9kZSA2IDogWyN0ZXh0OiAKKwkJXQorTm9kZSA3IDogWyNjb21tZW50OiAgVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTEyIGVsZW1lbnQgXQorTm9kZSA4IDogWyN0ZXh0OiAKKwkJCV0KK05vZGUgOSA6IFtpZXRmOmUxMjE6IG51bGxdCitOb2RlIDEwIDogeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiCitOb2RlIDExIDogeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIKK05vZGUgMTIgOiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIgorTm9kZSAxMyA6IFsjdGV4dDogCisJCV0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlcnNjaGVtZS0xLUlBSUstcmVmMS5kaWdlc3RpbnB1dCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyc2NoZW1lLTEtSUFJSy1yZWYxLmRpZ2VzdGlucHV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1MDYzMjYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlcnNjaGVtZS0xLUlBSUstcmVmMS5kaWdlc3RpbnB1dApAQCAtMCwwICsxLDQgQEAKKzxpZXRmOmUxMiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIgYXQ9IjIiPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMiBlbGVtZW50IC0tPgorCQkJPGlldGY6ZTEyMT48L2lldGY6ZTEyMT4KKwkJPC9pZXRmOmUxMj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlcnNjaGVtZS0xLUlBSUsueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXJzY2hlbWUtMS1JQUlLLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWFmZjM2Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXJzY2hlbWUtMS1JQUlLLnhtbApAQCAtMCwwICsxLDIyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoLy8qJTVCQGF0JTIwYW5kJTIwQGF0IT0nYXpBWjA5LS5ffiEkJmFtcDsoKSorLDs9Lz86QCclNUQpIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+QU91eEVLVHFWTkxOdkxrQUZGVmQxUUZZcjdzPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PFJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlciglMkYlMkYqJTVCJTQwYXQlM0QlMjcyJTI3JTVEKSI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPllXYzFWeEtpRFdBSTdIUUJDY0hTSHNQMEU1bz08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+NGFma2Y2a0M2K0ZTT3JCY2hqOG1SVXVDTk5vPTwvU2lnbmF0dXJlVmFsdWU+PE9iamVjdD48aWV0ZjpjMTRuMTFYbWxQb2ludGVyRG9jMSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisJCTwhLS0gVGhpcyBpcyBhIHhtbCBkb2N1bWVudCBmb3IgY2hlY2tpbmcgYmVoYXZpb3VyIG9mIHRvb2xzIHdpdGggcmVnYXJkcyB0byAgY29tbWVudHMgd2hlbiB1c2luZyBzY2hlbWUtYmFzZWQgeHBvaW50ZXJzIGluIHRoZSBkczpSZWZlcmVuY2UncyBVUkkgYXR0cmlidXRlIC0tPgorCTxpZXRmOmUxIHhtbDppZD0iZTFJRCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxIGVsZW1lbnQgLS0+CisJCTxpZXRmOmUxMSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisJCTwhLS0gVGhpcyBpcyBhIGNvbW1lbnQgZm9yIGlldGY6ZTExIGVsZW1lbnQgLS0+CisJCQk8aWV0ZjplMTExIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIi8+CisJCTwvaWV0ZjplMTE+CisJCTxpZXRmOmUxMiBhdD0iMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciPgorCQk8IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBpZXRmOmUxMiBlbGVtZW50IC0tPgorCQkJPGlldGY6ZTEyMSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyIvPgorCQk8L2lldGY6ZTEyPgorCTwvaWV0ZjplMT4KKwk8aWV0ZjplMiB4bWw6aWQ9ImUySUQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxuczppZXRmPSJodHRwOi8vd3d3LmlldGYub3JnIiB4bWxuczp3M2M9Imh0dHA6Ly93d3cudzMub3JnIj4KKwkJPCEtLSBUaGlzIGlzIGEgY29tbWVudCBmb3IgaWV0ZjplMiBlbGVtZW50IC0tPgorCQk8aWV0ZjplMjEgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciLz4KKwk8L2lldGY6ZTI+CisJPGlldGY6ZTMgeG1sOmlkPSJlM0lEIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIgeG1sbnM6aWV0Zj0iaHR0cDovL3d3dy5pZXRmLm9yZyIgeG1sbnM6dzNjPSJodHRwOi8vd3d3LnczLm9yZyI+CisJCTxpZXRmOmUzMSBhdD0iMyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOmlldGY9Imh0dHA6Ly93d3cuaWV0Zi5vcmciIHhtbG5zOnczYz0iaHR0cDovL3d3dy53My5vcmciLz4KKwk8L2lldGY6ZTM+Cis8L2lldGY6YzE0bjExWG1sUG9pbnRlckRvYzE+PC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXJzY2hlbWUtMS10ZW1wbGF0ZS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlcnNjaGVtZS0xLXRlbXBsYXRlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOWIyMTIyCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXJzY2hlbWUtMS10ZW1wbGF0ZS54bWwKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0gZW52ZWxvcGluZyBpbnB1dC54bWwgLS0+DQorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSIjeHBvaW50ZXIoLy8qJTVCQGF0JTIwYW5kJTIwQGF0IT0nYXpBWjA5LS5ffiEkJmFtcDsoKSorLDs9Lz86QCclNUQpIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKCUyRiUyRiolNUIlNDBhdCUzRCUyNzIlMjclNUQpIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlVmFsdWU+PE9iamVjdD48L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlcnNjaGVtZS0yLW5lZ2F0aXZlLXRlbXBsYXRlLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnL3hwb2ludGVyL3hwb2ludGVyc2NoZW1lLTItbmVnYXRpdmUtdGVtcGxhdGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxZjllYWMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlcnNjaGVtZS0yLW5lZ2F0aXZlLXRlbXBsYXRlLnhtbApAQCAtMCwwICsxLDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLSBlbnZlbG9waW5nIGlucHV0LnhtbCAtLT4NCis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiN4cG9pbnRlcigvLypbQGF0JTIwYW5kJTIwQGF0IT0nI1tdPy0uX34hJCZhbXA7KCkqKyw7PUA6J10pIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKCUyRiUyRiolNUIlNDBhdCUzRCUyNzIlMjclNUQpIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExI1dpdGhDb21tZW50cyIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48UmVmZXJlbmNlIFVSST0iI3hwb2ludGVyKC8vKltAYXRdKSI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPjwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZVZhbHVlPjxPYmplY3Q+PC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXJzY2hlbWUtUmVhZG1lLVJGQzIzOTZfUkZDMjczMi1kaWZmLVJGQzM5ODYudHh0IGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcveHBvaW50ZXIveHBvaW50ZXJzY2hlbWUtUmVhZG1lLVJGQzIzOTZfUkZDMjczMi1kaWZmLVJGQzM5ODYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlMDU3YzcKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZy94cG9pbnRlci94cG9pbnRlcnNjaGVtZS1SZWFkbWUtUkZDMjM5Nl9SRkMyNzMyLWRpZmYtUkZDMzk4Ni50eHQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvZHNhXzEwMjRfc2hhMV9jMTRuLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2RzYV8xMDI0X3NoYTFfYzE0bi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkyMTc2YwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2RzYV8xMDI0X3NoYTFfYzE0bi54bWwKQEAgLTAsMCArMSwzIEBACis8cm9vdD4KKwk8ZWxlbWVudDE+dGVzdDwvZWxlbWVudDE+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSIiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+bFltMldkSVlWaUlVcHovTGxETW9UVVU4UEVnPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5MVktKYytieG1JNFhqT0JSeTRodGprOFo0OStJaDdpdUFBSFlBU2tnbEhEUm1lbVlJeFFnN3c9PTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PEtleVZhbHVlPjxEU0FLZXlWYWx1ZT48UD5qR3pOdUJ1VGZZZFBSeG5wV1lWY1g2bHA5VGJ0eDhod1NqdzA3empHaTVZOEJreGJNSWxwazNnbEF5TThraGF1dy9pU3IzSTNlaGl3K2tLU0h5TXZnM212OWUrOGdBaGovT09ZRHFFc2dDWEFmQ2NUc3QyQlVOalNjZGlGT0lmS1g5ZmptS3lsU3RVS29OR1haWm5LUUdpWFRFWXdYOG1peHlKVGVnNGVsRGM9PC9QPjxRPnU0OWZUWTAydEkvVFJrYkZnYVR0bS9RVndzMD08L1E+PEc+Qk9wdHhBdkg3NS9ZN0tPTFc1MHczV0NJYmc4bTZvWmRrN1Z1c051bFc3K3Njd3BwSVgvZzVlZmtYMXpMOFJmT2dmVU9XNno1MEMvYjdTNkwrMU5KSHp2T2djMzRwQWhDM2tSaXovTnlQWmtjZ1RXMGRxb0U3Nkgva3FXR3QyUXQ4ZUN3SHFOQUg3SDZEdjFxREdXT1E4U0NRR3hDZ0FZOTZBS0lMUmc1c0FZPTwvRz48WT5MTkVybk05R0Q3ZnIyQVNVb3BYRk1wc25nSTRIVXY1azdKN3JGU01SNXBXSHFVREpDK0lTRWdVOXRlNFdKSE9qNmRTMHU1YkQ2WlhVUDY2SXdSaXZ0Zzh3UmV5bFM3ZGU0VHREc3BpZXJOUk02UDI2SnB0cExlOXR6THRTdHcrNlFWSWdwNElWYzdyM2MzRll2SEtHa0VNVXFOOTJzQWFyN05tTkRmUjdYb0k9PC9ZPjwvRFNBS2V5VmFsdWU+PC9LZXlWYWx1ZT48L0tleUluZm8+PC9TaWduYXR1cmU+PC9yb290PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2RzYV8xMDI0X3NoYTFfZXhjLWMxNG4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvZHNhXzEwMjRfc2hhMV9leGMtYzE0bi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDEzZjRmMAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2RzYV8xMDI0X3NoYTFfZXhjLWMxNG4ueG1sCkBAIC0wLDAgKzEsMyBAQAorPHJvb3Q+CisJPGVsZW1lbnQxPnRlc3Q8L2VsZW1lbnQxPgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5sWW0yV2RJWVZpSVVwei9MbERNb1RVVThQRWc9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPlNvb0JiOEhPMUY1STU5dUo3U0dxTndhYy9QTWh2VmdhSGRZc2Z4U2xSb0V1VXJUT1U1cTVaQT09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48S2V5VmFsdWU+PERTQUtleVZhbHVlPjxQPmpHek51QnVUZllkUFJ4bnBXWVZjWDZscDlUYnR4OGh3U2p3MDd6akdpNVk4Qmt4Yk1JbHBrM2dsQXlNOGtoYXV3L2lTcjNJM2VoaXcra0tTSHlNdmczbXY5ZSs4Z0Foai9PT1lEcUVzZ0NYQWZDY1RzdDJCVU5qU2NkaUZPSWZLWDlmam1LeWxTdFVLb05HWFpabktRR2lYVEVZd1g4bWl4eUpUZWc0ZWxEYz08L1A+PFE+dTQ5ZlRZMDJ0SS9UUmtiRmdhVHRtL1FWd3MwPTwvUT48Rz5CT3B0eEF2SDc1L1k3S09MVzUwdzNXQ0liZzhtNm9aZGs3VnVzTnVsVzcrc2N3cHBJWC9nNWVma1gxekw4UmZPZ2ZVT1c2ejUwQy9iN1M2TCsxTkpIenZPZ2MzNHBBaEMza1Jpei9OeVBaa2NnVFcwZHFvRTc2SC9rcVdHdDJRdDhlQ3dIcU5BSDdINkR2MXFER1dPUThTQ1FHeENnQVk5NkFLSUxSZzVzQVk9PC9HPjxZPkxORXJuTTlHRDdmcjJBU1VvcFhGTXBzbmdJNEhVdjVrN0o3ckZTTVI1cFdIcVVESkMrSVNFZ1U5dGU0V0pIT2o2ZFMwdTViRDZaWFVQNjZJd1JpdnRnOHdSZXlsUzdkZTRUdERzcGllck5STTZQMjZKcHRwTGU5dHpMdFN0dys2UVZJZ3A0SVZjN3IzYzNGWXZIS0drRU1VcU45MnNBYXI3Tm1ORGZSN1hvST08L1k+PC9EU0FLZXlWYWx1ZT48L0tleVZhbHVlPjwvS2V5SW5mbz48L1NpZ25hdHVyZT48L3Jvb3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvZWNjX3AyNTZfc2hhMV9jMTRuLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2VjY19wMjU2X3NoYTFfYzE0bi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY2NWJlNwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2VjY19wMjU2X3NoYTFfYzE0bi54bWwKQEAgLTAsMCArMSwzIEBACis8cm9vdD4KKwk8ZWxlbWVudDE+dGVzdDwvZWxlbWVudDE+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPmxZbTJXZElZVmlJVXB6L0xsRE1vVFVVOFBFZz08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+aFlOMXp3cGlXSmFpUWNyMFdTR0t6SGdBK0xCV1J4eTBhMVJSdTBValJRNjNIaU1HSkdub3cvb2RkRkNGNXNBWGg1ZUhQUWxpYUtmYTB3SktFZHVPVVE9PTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PEtleVZhbHVlPjxFQ0RTQUtleVZhbHVlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSMiPjxEb21haW5QYXJhbWV0ZXJzPjxOYW1lZEN1cnZlIFVSTj0idXJuOm9pZDoxLjIuODQwLjEwMDQ1LjMuMS43Ii8+PC9Eb21haW5QYXJhbWV0ZXJzPjxQdWJsaWNLZXk+PFggVmFsdWU9Ijg1NjY5MzA5MDYyNDA4OTE0MjM3OTcwMDI0MDUwNzQ1ODkxNzczNTYzMDgzMTIyMjAxNTY3MDExNzc3MDU2NDcwMzEzMzgxOTIzMzI3Ii8+PFkgVmFsdWU9IjE4MTgzOTEzODQ2NTMyMzI5MDYxOTk2NjI3NzU1ODg0OTc2OTYxODc1NzUyNzYzNjExNzc1NzYyODQ2Mjg2NDM1NDk5MDYyNTYyNzQyIi8+PC9QdWJsaWNLZXk+PC9FQ0RTQUtleVZhbHVlPjwvS2V5VmFsdWU+PC9LZXlJbmZvPjwvU2lnbmF0dXJlPjwvcm9vdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDI1Nl9zaGExX2V4Yy1jMTRuLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2VjY19wMjU2X3NoYTFfZXhjLWMxNG4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmZWU4ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDI1Nl9zaGExX2V4Yy1jMTRuLnhtbApAQCAtMCwwICsxLDMgQEAKKzxyb290PgorCTxlbGVtZW50MT50ZXN0PC9lbGVtZW50MT4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPmxZbTJXZElZVmlJVXB6L0xsRE1vVFVVOFBFZz08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+dlVMYnlMS00yK1czSC8zUXloWUdiVVRiWC9qWkVNejhsaFB6UmFJMWxjeGcwOUFjNXhLZk5pYnBrWVV6bUZYZ3FVb1F1QkZFbm5nV016Q05BYTlUUnc9PTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PEtleVZhbHVlPjxFQ0RTQUtleVZhbHVlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSMiPjxEb21haW5QYXJhbWV0ZXJzPjxOYW1lZEN1cnZlIFVSTj0idXJuOm9pZDoxLjIuODQwLjEwMDQ1LjMuMS43Ii8+PC9Eb21haW5QYXJhbWV0ZXJzPjxQdWJsaWNLZXk+PFggVmFsdWU9Ijg1NjY5MzA5MDYyNDA4OTE0MjM3OTcwMDI0MDUwNzQ1ODkxNzczNTYzMDgzMTIyMjAxNTY3MDExNzc3MDU2NDcwMzEzMzgxOTIzMzI3Ii8+PFkgVmFsdWU9IjE4MTgzOTEzODQ2NTMyMzI5MDYxOTk2NjI3NzU1ODg0OTc2OTYxODc1NzUyNzYzNjExNzc1NzYyODQ2Mjg2NDM1NDk5MDYyNTYyNzQyIi8+PC9QdWJsaWNLZXk+PC9FQ0RTQUtleVZhbHVlPjwvS2V5VmFsdWU+PC9LZXlJbmZvPjwvU2lnbmF0dXJlPjwvcm9vdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDI1Nl9zaGEyNTZfYzE0bi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDI1Nl9zaGEyNTZfYzE0bi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFkODliNgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2VjY19wMjU2X3NoYTI1Nl9jMTRuLnhtbApAQCAtMCwwICsxLDMgQEAKKzxyb290PgorCTxlbGVtZW50MT50ZXN0PC9lbGVtZW50MT4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjZWNkc2Etc2hhMjU2Ii8+PFJlZmVyZW5jZSBVUkk9IiI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48RGlnZXN0VmFsdWU+ZWVxUGRvY2NPbGlEMlRORThPR29FRG50dzV6T0p6cHVTZFRmVTY0dkVBQT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+MXBoQW9WTUdCTXRoaFhGOVg0bDBhbXlUREtraDMxa3ZtQTB5ZVRwTzBnK0VTSzZIbldFcnRTZC9lRjlmOGlyemRJNDhPQ2xSS0ZHWVNtbjdNVWc5akE9PTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PEtleVZhbHVlPjxFQ0RTQUtleVZhbHVlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSMiPjxEb21haW5QYXJhbWV0ZXJzPjxOYW1lZEN1cnZlIFVSTj0idXJuOm9pZDoxLjIuODQwLjEwMDQ1LjMuMS43Ii8+PC9Eb21haW5QYXJhbWV0ZXJzPjxQdWJsaWNLZXk+PFggVmFsdWU9Ijg1NjY5MzA5MDYyNDA4OTE0MjM3OTcwMDI0MDUwNzQ1ODkxNzczNTYzMDgzMTIyMjAxNTY3MDExNzc3MDU2NDcwMzEzMzgxOTIzMzI3Ii8+PFkgVmFsdWU9IjE4MTgzOTEzODQ2NTMyMzI5MDYxOTk2NjI3NzU1ODg0OTc2OTYxODc1NzUyNzYzNjExNzc1NzYyODQ2Mjg2NDM1NDk5MDYyNTYyNzQyIi8+PC9QdWJsaWNLZXk+PC9FQ0RTQUtleVZhbHVlPjwvS2V5VmFsdWU+PC9LZXlJbmZvPjwvU2lnbmF0dXJlPjwvcm9vdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDI1Nl9zaGEyNTZfZXhjLWMxNG4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvZWNjX3AyNTZfc2hhMjU2X2V4Yy1jMTRuLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDIyZTZkCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvZWNjX3AyNTZfc2hhMjU2X2V4Yy1jMTRuLnhtbApAQCAtMCwwICsxLDMgQEAKKzxyb290PgorCTxlbGVtZW50MT50ZXN0PC9lbGVtZW50MT4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTI1NiIvPjxSZWZlcmVuY2UgVVJJPSIiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PERpZ2VzdFZhbHVlPmVlcVBkb2NjT2xpRDJUTkU4T0dvRURudHc1ek9KenB1U2RUZlU2NHZFQUE9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPmZlbktlRDk2b29sY0VVeU1xditaMWMxa2VkYlNuUEVNL055dSsxM010QWxjZmN4a2MwWFNmYzAwaVA2a2E3VkpBcmNPSGdFbFYrd213emNUVXppVlNnPT08L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxLZXlWYWx1ZT48RUNEU0FLZXlWYWx1ZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjIj48RG9tYWluUGFyYW1ldGVycz48TmFtZWRDdXJ2ZSBVUk49InVybjpvaWQ6MS4yLjg0MC4xMDA0NS4zLjEuNyIvPjwvRG9tYWluUGFyYW1ldGVycz48UHVibGljS2V5PjxYIFZhbHVlPSI4NTY2OTMwOTA2MjQwODkxNDIzNzk3MDAyNDA1MDc0NTg5MTc3MzU2MzA4MzEyMjIwMTU2NzAxMTc3NzA1NjQ3MDMxMzM4MTkyMzMyNyIvPjxZIFZhbHVlPSIxODE4MzkxMzg0NjUzMjMyOTA2MTk5NjYyNzc1NTg4NDk3Njk2MTg3NTc1Mjc2MzYxMTc3NTc2Mjg0NjI4NjQzNTQ5OTA2MjU2Mjc0MiIvPjwvUHVibGljS2V5PjwvRUNEU0FLZXlWYWx1ZT48L0tleVZhbHVlPjwvS2V5SW5mbz48L1NpZ25hdHVyZT48L3Jvb3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvZWNjX3AyNTZfc2hhMzg0X2MxNG4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvZWNjX3AyNTZfc2hhMzg0X2MxNG4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNDI3MmMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDI1Nl9zaGEzODRfYzE0bi54bWwKQEAgLTAsMCArMSwzIEBACis8cm9vdD4KKwk8ZWxlbWVudDE+dGVzdDwvZWxlbWVudDE+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTM4NCIvPjxSZWZlcmVuY2UgVVJJPSIiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjc2hhMzg0Ii8+PERpZ2VzdFZhbHVlPnRXUkJvQWlpWkhCcWlTVytVODNZdkIwSTZNUTZuUVZYbS9NWWVoU04xaEdnOVltZnJoZXdyWFBvZ3NCUVM2RzU8L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+eldlRnhqN0JXdkh5RTBKTkRoMFpFM1FyTnJZc3Nzbi8zMnhiNHoyMTE3TDVlNnU4Y1krUnUzUWhSNWdIaVM3Ym1Td1UzL3dEdm1tY0NtRUx4MlZDaUE9PTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PEtleVZhbHVlPjxFQ0RTQUtleVZhbHVlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSMiPjxEb21haW5QYXJhbWV0ZXJzPjxOYW1lZEN1cnZlIFVSTj0idXJuOm9pZDoxLjIuODQwLjEwMDQ1LjMuMS43Ii8+PC9Eb21haW5QYXJhbWV0ZXJzPjxQdWJsaWNLZXk+PFggVmFsdWU9Ijg1NjY5MzA5MDYyNDA4OTE0MjM3OTcwMDI0MDUwNzQ1ODkxNzczNTYzMDgzMTIyMjAxNTY3MDExNzc3MDU2NDcwMzEzMzgxOTIzMzI3Ii8+PFkgVmFsdWU9IjE4MTgzOTEzODQ2NTMyMzI5MDYxOTk2NjI3NzU1ODg0OTc2OTYxODc1NzUyNzYzNjExNzc1NzYyODQ2Mjg2NDM1NDk5MDYyNTYyNzQyIi8+PC9QdWJsaWNLZXk+PC9FQ0RTQUtleVZhbHVlPjwvS2V5VmFsdWU+PC9LZXlJbmZvPjwvU2lnbmF0dXJlPjwvcm9vdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDI1Nl9zaGEzODRfZXhjLWMxNG4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvZWNjX3AyNTZfc2hhMzg0X2V4Yy1jMTRuLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmVkNGQwCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvZWNjX3AyNTZfc2hhMzg0X2V4Yy1jMTRuLnhtbApAQCAtMCwwICsxLDMgQEAKKzxyb290PgorCTxlbGVtZW50MT50ZXN0PC9lbGVtZW50MT4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTM4NCIvPjxSZWZlcmVuY2UgVVJJPSIiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjc2hhMzg0Ii8+PERpZ2VzdFZhbHVlPnRXUkJvQWlpWkhCcWlTVytVODNZdkIwSTZNUTZuUVZYbS9NWWVoU04xaEdnOVltZnJoZXdyWFBvZ3NCUVM2RzU8L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+bzYwOGRIQVJTR3I4ejFPWTlqZCtWaFV6U0o2STFSSDZLUEE5Q2R5WFlhYTZ5Rzd1RXV2bmtXTi9Ma3JNaVFJay82K2F0Ync2cEFwNlNkYnBaL3lTanc9PTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PEtleVZhbHVlPjxFQ0RTQUtleVZhbHVlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSMiPjxEb21haW5QYXJhbWV0ZXJzPjxOYW1lZEN1cnZlIFVSTj0idXJuOm9pZDoxLjIuODQwLjEwMDQ1LjMuMS43Ii8+PC9Eb21haW5QYXJhbWV0ZXJzPjxQdWJsaWNLZXk+PFggVmFsdWU9Ijg1NjY5MzA5MDYyNDA4OTE0MjM3OTcwMDI0MDUwNzQ1ODkxNzczNTYzMDgzMTIyMjAxNTY3MDExNzc3MDU2NDcwMzEzMzgxOTIzMzI3Ii8+PFkgVmFsdWU9IjE4MTgzOTEzODQ2NTMyMzI5MDYxOTk2NjI3NzU1ODg0OTc2OTYxODc1NzUyNzYzNjExNzc1NzYyODQ2Mjg2NDM1NDk5MDYyNTYyNzQyIi8+PC9QdWJsaWNLZXk+PC9FQ0RTQUtleVZhbHVlPjwvS2V5VmFsdWU+PC9LZXlJbmZvPjwvU2lnbmF0dXJlPjwvcm9vdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDI1Nl9zaGE1MTJfYzE0bi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDI1Nl9zaGE1MTJfYzE0bi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE2ZjgzNAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2VjY19wMjU2X3NoYTUxMl9jMTRuLnhtbApAQCAtMCwwICsxLDMgQEAKKzxyb290PgorCTxlbGVtZW50MT50ZXN0PC9lbGVtZW50MT4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjZWNkc2Etc2hhNTEyIi8+PFJlZmVyZW5jZSBVUkk9IiI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGE1MTIiLz48RGlnZXN0VmFsdWU+UWxMQmtwWFdFN0hwWFREZjZwZEVnMTV6TytSNmJ0OStpRTd5OXBIU1BhU1Q4aGZsRnQxTE00SXpiSXpNbWdmU3M0SHk2eTR4RWNtanpnaU96VHd5Smc9PTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT4xb0R2SlV6N21KRHJrcyttcXc1bjhSdmNQZVVKQStIMEFTS295RXVOZVUwUGYxelAvQzlkdGQ5NjVSV2ZMOHBQWU1iZnpEWkhMTlAyQ0Y3MkNXRXM5dz09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48S2V5VmFsdWU+PEVDRFNBS2V5VmFsdWUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlIyI+PERvbWFpblBhcmFtZXRlcnM+PE5hbWVkQ3VydmUgVVJOPSJ1cm46b2lkOjEuMi44NDAuMTAwNDUuMy4xLjciLz48L0RvbWFpblBhcmFtZXRlcnM+PFB1YmxpY0tleT48WCBWYWx1ZT0iODU2NjkzMDkwNjI0MDg5MTQyMzc5NzAwMjQwNTA3NDU4OTE3NzM1NjMwODMxMjIyMDE1NjcwMTE3NzcwNTY0NzAzMTMzODE5MjMzMjciLz48WSBWYWx1ZT0iMTgxODM5MTM4NDY1MzIzMjkwNjE5OTY2Mjc3NTU4ODQ5NzY5NjE4NzU3NTI3NjM2MTE3NzU3NjI4NDYyODY0MzU0OTkwNjI1NjI3NDIiLz48L1B1YmxpY0tleT48L0VDRFNBS2V5VmFsdWU+PC9LZXlWYWx1ZT48L0tleUluZm8+PC9TaWduYXR1cmU+PC9yb290PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2VjY19wMjU2X3NoYTUxMl9leGMtYzE0bi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDI1Nl9zaGE1MTJfZXhjLWMxNG4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2ZDllOTQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDI1Nl9zaGE1MTJfZXhjLWMxNG4ueG1sCkBAIC0wLDAgKzEsMyBAQAorPHJvb3Q+CisJPGVsZW1lbnQxPnRlc3Q8L2VsZW1lbnQxPgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjZWNkc2Etc2hhNTEyIi8+PFJlZmVyZW5jZSBVUkk9IiI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGE1MTIiLz48RGlnZXN0VmFsdWU+UWxMQmtwWFdFN0hwWFREZjZwZEVnMTV6TytSNmJ0OStpRTd5OXBIU1BhU1Q4aGZsRnQxTE00SXpiSXpNbWdmU3M0SHk2eTR4RWNtanpnaU96VHd5Smc9PTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT4zeWxXREhDTEUwcUYzSXFsRmdyWnMrUVU0dFhGTTZqNUtZSXlIdHhwUExVOERob2pFTkd5dlRCQnRNWWxoOHNkMHFjcnNraUYrNlIrWnlyMDFyY3RvZz09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48S2V5VmFsdWU+PEVDRFNBS2V5VmFsdWUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlIyI+PERvbWFpblBhcmFtZXRlcnM+PE5hbWVkQ3VydmUgVVJOPSJ1cm46b2lkOjEuMi44NDAuMTAwNDUuMy4xLjciLz48L0RvbWFpblBhcmFtZXRlcnM+PFB1YmxpY0tleT48WCBWYWx1ZT0iODU2NjkzMDkwNjI0MDg5MTQyMzc5NzAwMjQwNTA3NDU4OTE3NzM1NjMwODMxMjIyMDE1NjcwMTE3NzcwNTY0NzAzMTMzODE5MjMzMjciLz48WSBWYWx1ZT0iMTgxODM5MTM4NDY1MzIzMjkwNjE5OTY2Mjc3NTU4ODQ5NzY5NjE4NzU3NTI3NjM2MTE3NzU3NjI4NDYyODY0MzU0OTkwNjI1NjI3NDIiLz48L1B1YmxpY0tleT48L0VDRFNBS2V5VmFsdWU+PC9LZXlWYWx1ZT48L0tleUluZm8+PC9TaWduYXR1cmU+PC9yb290PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2VjY19wMzg0X3NoYTFfYzE0bi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDM4NF9zaGExX2MxNG4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjYjMzNDIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDM4NF9zaGExX2MxNG4ueG1sCkBAIC0wLDAgKzEsMyBAQAorPHJvb3Q+CisJPGVsZW1lbnQxPnRlc3Q8L2VsZW1lbnQxPgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNlY2RzYS1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5sWW0yV2RJWVZpSVVwei9MbERNb1RVVThQRWc9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPkVBMWc3T3Awb1VHdDZKRGtGK2pocWlZZmhkQ0tBZmIyaG8zVUxMUDJzazhucDExOHNFMndYRXd4aUZnMEZiVGtKZU0vUnUzME95SnBzZ2RTZzEzOE9yT2xlOGQyQWxydVg3WFdtZytPVlp5ZE4xRXAwNXZZc3poTzlmNFk2SFZ4PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48S2V5VmFsdWU+PEVDRFNBS2V5VmFsdWUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlIyI+PERvbWFpblBhcmFtZXRlcnM+PE5hbWVkQ3VydmUgVVJOPSJ1cm46b2lkOjEuMy4xMzIuMC4zNCIvPjwvRG9tYWluUGFyYW1ldGVycz48UHVibGljS2V5PjxYIFZhbHVlPSIyMDcyMjI4MTcwODE2OTgzNDYyNjA1MjU2NDMzMDYyODMyNzEyNzg1MTI5MDEzMTI5MDQzOTE0MDkxNzE0Mzg1ODk0MjUxNTU3NTg3NjM0MjE1ODIyOTQ1NjQ0OTI2MTA5NTcyNzQ3MjQ4MDcwMzg4MDk4MiIvPjxZIFZhbHVlPSI1Njg2NDQwODY2NzYzMjI3OTMyNzg3MTE2Njk3NTQ0MjMyNjE0MTEzMjk2ODk0MDY0NTE2NjMxMzQ2Mjc3NzMyOTU5NDU5ODEwMzkzMTQzMTIzNjkzNjAxMDAyNjMwMTQ1OTkzMDAwMzg0MjY3NzMzMjAyIi8+PC9QdWJsaWNLZXk+PC9FQ0RTQUtleVZhbHVlPjwvS2V5VmFsdWU+PC9LZXlJbmZvPjwvU2lnbmF0dXJlPjwvcm9vdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDM4NF9zaGExX2V4Yy1jMTRuLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2VjY19wMzg0X3NoYTFfZXhjLWMxNG4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkYzUxOWEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDM4NF9zaGExX2V4Yy1jMTRuLnhtbApAQCAtMCwwICsxLDMgQEAKKzxyb290PgorCTxlbGVtZW50MT50ZXN0PC9lbGVtZW50MT4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPmxZbTJXZElZVmlJVXB6L0xsRE1vVFVVOFBFZz08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+YWNPYUVrbVRTU3NYUG13ajFxM2NFN2ZGdW1VSDZpN2VJTXJkQmgyYkp5UUJLRXV6M2xhb0dZZSs3RllIS0paemZHVlVpRkRSVWdJbTVDdUJ5U0RLYnBFQURZckRYV0tXQlVYOUhBb2tLU21GTkEyZ0Y4dTFiVklWY0JhMktsTEY8L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxLZXlWYWx1ZT48RUNEU0FLZXlWYWx1ZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjIj48RG9tYWluUGFyYW1ldGVycz48TmFtZWRDdXJ2ZSBVUk49InVybjpvaWQ6MS4zLjEzMi4wLjM0Ii8+PC9Eb21haW5QYXJhbWV0ZXJzPjxQdWJsaWNLZXk+PFggVmFsdWU9IjIwNzIyMjgxNzA4MTY5ODM0NjI2MDUyNTY0MzMwNjI4MzI3MTI3ODUxMjkwMTMxMjkwNDM5MTQwOTE3MTQzODU4OTQyNTE1NTc1ODc2MzQyMTU4MjI5NDU2NDQ5MjYxMDk1NzI3NDcyNDgwNzAzODgwOTgyIi8+PFkgVmFsdWU9IjU2ODY0NDA4NjY3NjMyMjc5MzI3ODcxMTY2OTc1NDQyMzI2MTQxMTMyOTY4OTQwNjQ1MTY2MzEzNDYyNzc3MzI5NTk0NTk4MTAzOTMxNDMxMjM2OTM2MDEwMDI2MzAxNDU5OTMwMDAzODQyNjc3MzMyMDIiLz48L1B1YmxpY0tleT48L0VDRFNBS2V5VmFsdWU+PC9LZXlWYWx1ZT48L0tleUluZm8+PC9TaWduYXR1cmU+PC9yb290PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2VjY19wMzg0X3NoYTI1Nl9jMTRuLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2VjY19wMzg0X3NoYTI1Nl9jMTRuLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTY3Y2U3Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvZWNjX3AzODRfc2hhMjU2X2MxNG4ueG1sCkBAIC0wLDAgKzEsMyBAQAorPHJvb3Q+CisJPGVsZW1lbnQxPnRlc3Q8L2VsZW1lbnQxPgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNlY2RzYS1zaGEyNTYiLz48UmVmZXJlbmNlIFVSST0iIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxEaWdlc3RWYWx1ZT5lZXFQZG9jY09saUQyVE5FOE9Hb0VEbnR3NXpPSnpwdVNkVGZVNjR2RUFBPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5iS1pEY3hJQjBnT05sVEFLSHJib3MvWkVyaFFkQUJXK3k0U2FKVjE2Si9VcXk3Mzhrd2Y1RTdnYVdWa1VjQWNxVkZKZStiWitNWnN5N3lGc0ZxQUFhd1h2WTBNaWlYM3RoSWpDZ3JRM2NvbjdsdFEvenI3R05RdXdFTmtWRHhQZDwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PEtleVZhbHVlPjxFQ0RTQUtleVZhbHVlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSMiPjxEb21haW5QYXJhbWV0ZXJzPjxOYW1lZEN1cnZlIFVSTj0idXJuOm9pZDoxLjMuMTMyLjAuMzQiLz48L0RvbWFpblBhcmFtZXRlcnM+PFB1YmxpY0tleT48WCBWYWx1ZT0iMjA3MjIyODE3MDgxNjk4MzQ2MjYwNTI1NjQzMzA2MjgzMjcxMjc4NTEyOTAxMzEyOTA0MzkxNDA5MTcxNDM4NTg5NDI1MTU1NzU4NzYzNDIxNTgyMjk0NTY0NDkyNjEwOTU3Mjc0NzI0ODA3MDM4ODA5ODIiLz48WSBWYWx1ZT0iNTY4NjQ0MDg2Njc2MzIyNzkzMjc4NzExNjY5NzU0NDIzMjYxNDExMzI5Njg5NDA2NDUxNjYzMTM0NjI3NzczMjk1OTQ1OTgxMDM5MzE0MzEyMzY5MzYwMTAwMjYzMDE0NTk5MzAwMDM4NDI2NzczMzIwMiIvPjwvUHVibGljS2V5PjwvRUNEU0FLZXlWYWx1ZT48L0tleVZhbHVlPjwvS2V5SW5mbz48L1NpZ25hdHVyZT48L3Jvb3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvZWNjX3AzODRfc2hhMjU2X2V4Yy1jMTRuLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2VjY19wMzg0X3NoYTI1Nl9leGMtYzE0bi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJjNDFkZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2VjY19wMzg0X3NoYTI1Nl9leGMtYzE0bi54bWwKQEAgLTAsMCArMSwzIEBACis8cm9vdD4KKwk8ZWxlbWVudDE+dGVzdDwvZWxlbWVudDE+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNlY2RzYS1zaGEyNTYiLz48UmVmZXJlbmNlIFVSST0iIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxEaWdlc3RWYWx1ZT5lZXFQZG9jY09saUQyVE5FOE9Hb0VEbnR3NXpPSnpwdVNkVGZVNjR2RUFBPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT4xZ2JIWlR6M1FDVVNDOWwxTlBHZ3BTWGZUTndXWG9DUmRZTEQ5c1ZIN21NL3YxZURWeGcvUnRyNk9OQ1B4eVhwWFRvbjNWS1RCUXhST1JReXNoUGZ4TjNGZ3QxUUlUUFl1VHVuMTdqNHdIY0JrS3JzY3ZRclhjVkZWZ3liWmllUjwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PEtleVZhbHVlPjxFQ0RTQUtleVZhbHVlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSMiPjxEb21haW5QYXJhbWV0ZXJzPjxOYW1lZEN1cnZlIFVSTj0idXJuOm9pZDoxLjMuMTMyLjAuMzQiLz48L0RvbWFpblBhcmFtZXRlcnM+PFB1YmxpY0tleT48WCBWYWx1ZT0iMjA3MjIyODE3MDgxNjk4MzQ2MjYwNTI1NjQzMzA2MjgzMjcxMjc4NTEyOTAxMzEyOTA0MzkxNDA5MTcxNDM4NTg5NDI1MTU1NzU4NzYzNDIxNTgyMjk0NTY0NDkyNjEwOTU3Mjc0NzI0ODA3MDM4ODA5ODIiLz48WSBWYWx1ZT0iNTY4NjQ0MDg2Njc2MzIyNzkzMjc4NzExNjY5NzU0NDIzMjYxNDExMzI5Njg5NDA2NDUxNjYzMTM0NjI3NzczMjk1OTQ1OTgxMDM5MzE0MzEyMzY5MzYwMTAwMjYzMDE0NTk5MzAwMDM4NDI2NzczMzIwMiIvPjwvUHVibGljS2V5PjwvRUNEU0FLZXlWYWx1ZT48L0tleVZhbHVlPjwvS2V5SW5mbz48L1NpZ25hdHVyZT48L3Jvb3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvZWNjX3AzODRfc2hhMzg0X2MxNG4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvZWNjX3AzODRfc2hhMzg0X2MxNG4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhYjJlNGMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDM4NF9zaGEzODRfYzE0bi54bWwKQEAgLTAsMCArMSwzIEBACis8cm9vdD4KKwk8ZWxlbWVudDE+dGVzdDwvZWxlbWVudDE+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTM4NCIvPjxSZWZlcmVuY2UgVVJJPSIiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjc2hhMzg0Ii8+PERpZ2VzdFZhbHVlPnRXUkJvQWlpWkhCcWlTVytVODNZdkIwSTZNUTZuUVZYbS9NWWVoU04xaEdnOVltZnJoZXdyWFBvZ3NCUVM2RzU8L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+VTlpb2RrNnQ1LzBlVk9mN0kwNTU4VnAvZkhlQTJMazJBdEYxYmJGTmNNUGJxZ2ZuclJQQ2RGU3ZtSnNqU3NyZ1l4dTc5dWRxV3RsNG5TdUR5K2lyWHhVSkJTQlZQNHlQQmlMSXdpUmU0cW8wcVFiT3lEcFdrVGwvd056T2QwTlY8L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxLZXlWYWx1ZT48RUNEU0FLZXlWYWx1ZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjIj48RG9tYWluUGFyYW1ldGVycz48TmFtZWRDdXJ2ZSBVUk49InVybjpvaWQ6MS4zLjEzMi4wLjM0Ii8+PC9Eb21haW5QYXJhbWV0ZXJzPjxQdWJsaWNLZXk+PFggVmFsdWU9IjIwNzIyMjgxNzA4MTY5ODM0NjI2MDUyNTY0MzMwNjI4MzI3MTI3ODUxMjkwMTMxMjkwNDM5MTQwOTE3MTQzODU4OTQyNTE1NTc1ODc2MzQyMTU4MjI5NDU2NDQ5MjYxMDk1NzI3NDcyNDgwNzAzODgwOTgyIi8+PFkgVmFsdWU9IjU2ODY0NDA4NjY3NjMyMjc5MzI3ODcxMTY2OTc1NDQyMzI2MTQxMTMyOTY4OTQwNjQ1MTY2MzEzNDYyNzc3MzI5NTk0NTk4MTAzOTMxNDMxMjM2OTM2MDEwMDI2MzAxNDU5OTMwMDAzODQyNjc3MzMyMDIiLz48L1B1YmxpY0tleT48L0VDRFNBS2V5VmFsdWU+PC9LZXlWYWx1ZT48L0tleUluZm8+PC9TaWduYXR1cmU+PC9yb290PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2VjY19wMzg0X3NoYTM4NF9leGMtYzE0bi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDM4NF9zaGEzODRfZXhjLWMxNG4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0NzAyZDIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDM4NF9zaGEzODRfZXhjLWMxNG4ueG1sCkBAIC0wLDAgKzEsMyBAQAorPHJvb3Q+CisJPGVsZW1lbnQxPnRlc3Q8L2VsZW1lbnQxPgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjZWNkc2Etc2hhMzg0Ii8+PFJlZmVyZW5jZSBVUkk9IiI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNzaGEzODQiLz48RGlnZXN0VmFsdWU+dFdSQm9BaWlaSEJxaVNXK1U4M1l2QjBJNk1RNm5RVlhtL01ZZWhTTjFoR2c5WW1mcmhld3JYUG9nc0JRUzZHNTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5CVXpUdm5yRHFvZUlBQTdobkRkU3RLY1l5M3ZETHhqbk5JOWUzRm02cDdHZEpTWTZqcnNCZzRiK2JicENyRW5UTXlNNytDS1hSZTVXN0pOWWwvNitxNHlWRXA4cVBLTSs3aUlHVlpIcTd1UTdRZnl4SkJnUjA0c3o1MXYwQUV1ODwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PEtleVZhbHVlPjxFQ0RTQUtleVZhbHVlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSMiPjxEb21haW5QYXJhbWV0ZXJzPjxOYW1lZEN1cnZlIFVSTj0idXJuOm9pZDoxLjMuMTMyLjAuMzQiLz48L0RvbWFpblBhcmFtZXRlcnM+PFB1YmxpY0tleT48WCBWYWx1ZT0iMjA3MjIyODE3MDgxNjk4MzQ2MjYwNTI1NjQzMzA2MjgzMjcxMjc4NTEyOTAxMzEyOTA0MzkxNDA5MTcxNDM4NTg5NDI1MTU1NzU4NzYzNDIxNTgyMjk0NTY0NDkyNjEwOTU3Mjc0NzI0ODA3MDM4ODA5ODIiLz48WSBWYWx1ZT0iNTY4NjQ0MDg2Njc2MzIyNzkzMjc4NzExNjY5NzU0NDIzMjYxNDExMzI5Njg5NDA2NDUxNjYzMTM0NjI3NzczMjk1OTQ1OTgxMDM5MzE0MzEyMzY5MzYwMTAwMjYzMDE0NTk5MzAwMDM4NDI2NzczMzIwMiIvPjwvUHVibGljS2V5PjwvRUNEU0FLZXlWYWx1ZT48L0tleVZhbHVlPjwvS2V5SW5mbz48L1NpZ25hdHVyZT48L3Jvb3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvZWNjX3AzODRfc2hhNTEyX2MxNG4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvZWNjX3AzODRfc2hhNTEyX2MxNG4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlMTA4OWMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDM4NF9zaGE1MTJfYzE0bi54bWwKQEAgLTAsMCArMSwzIEBACis8cm9vdD4KKwk8ZWxlbWVudDE+dGVzdDwvZWxlbWVudDE+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTUxMiIvPjxSZWZlcmVuY2UgVVJJPSIiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhNTEyIi8+PERpZ2VzdFZhbHVlPlFsTEJrcFhXRTdIcFhURGY2cGRFZzE1ek8rUjZidDkraUU3eTlwSFNQYVNUOGhmbEZ0MUxNNEl6Ykl6TW1nZlNzNEh5Nnk0eEVjbWp6Z2lPelR3eUpnPT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+aUtCeG12NjRIR25pa2U1WjBmVkdPQkpNTU43aEdlNURZMjFNNEIxK0xnbUd6blRWVWYycjNBYm1COWgzNTZKcDdDUkRpN1BIOVpSOER0TG1Xak1pbVZsSXdJQ0dkeTRqaHdRdDdhS0ZVZlNvNktwb3ZGVkRMTWJId040eHlmMEk8L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxLZXlWYWx1ZT48RUNEU0FLZXlWYWx1ZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjIj48RG9tYWluUGFyYW1ldGVycz48TmFtZWRDdXJ2ZSBVUk49InVybjpvaWQ6MS4zLjEzMi4wLjM0Ii8+PC9Eb21haW5QYXJhbWV0ZXJzPjxQdWJsaWNLZXk+PFggVmFsdWU9IjIwNzIyMjgxNzA4MTY5ODM0NjI2MDUyNTY0MzMwNjI4MzI3MTI3ODUxMjkwMTMxMjkwNDM5MTQwOTE3MTQzODU4OTQyNTE1NTc1ODc2MzQyMTU4MjI5NDU2NDQ5MjYxMDk1NzI3NDcyNDgwNzAzODgwOTgyIi8+PFkgVmFsdWU9IjU2ODY0NDA4NjY3NjMyMjc5MzI3ODcxMTY2OTc1NDQyMzI2MTQxMTMyOTY4OTQwNjQ1MTY2MzEzNDYyNzc3MzI5NTk0NTk4MTAzOTMxNDMxMjM2OTM2MDEwMDI2MzAxNDU5OTMwMDAzODQyNjc3MzMyMDIiLz48L1B1YmxpY0tleT48L0VDRFNBS2V5VmFsdWU+PC9LZXlWYWx1ZT48L0tleUluZm8+PC9TaWduYXR1cmU+PC9yb290PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2VjY19wMzg0X3NoYTUxMl9leGMtYzE0bi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDM4NF9zaGE1MTJfZXhjLWMxNG4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3NmVjYzgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDM4NF9zaGE1MTJfZXhjLWMxNG4ueG1sCkBAIC0wLDAgKzEsMyBAQAorPHJvb3Q+CisJPGVsZW1lbnQxPnRlc3Q8L2VsZW1lbnQxPgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjZWNkc2Etc2hhNTEyIi8+PFJlZmVyZW5jZSBVUkk9IiI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGE1MTIiLz48RGlnZXN0VmFsdWU+UWxMQmtwWFdFN0hwWFREZjZwZEVnMTV6TytSNmJ0OStpRTd5OXBIU1BhU1Q4aGZsRnQxTE00SXpiSXpNbWdmU3M0SHk2eTR4RWNtanpnaU96VHd5Smc9PTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5OeE9xUUU4WXM1OC93ZDVwMHpBR3AwZlo3VjhkK3FxT2xLenlUMXVvak5oS1cwcDRteit6cVZQNlRIbTY0K3VxMmVBdzNTb0t1K2VZdUdIWG1FN2ZzNEFMb1hybEpmQVdRWVFZRFhkbWtta0k2QTAwcjNhRENaVHdMci8yVDVxMDwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PEtleVZhbHVlPjxFQ0RTQUtleVZhbHVlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSMiPjxEb21haW5QYXJhbWV0ZXJzPjxOYW1lZEN1cnZlIFVSTj0idXJuOm9pZDoxLjMuMTMyLjAuMzQiLz48L0RvbWFpblBhcmFtZXRlcnM+PFB1YmxpY0tleT48WCBWYWx1ZT0iMjA3MjIyODE3MDgxNjk4MzQ2MjYwNTI1NjQzMzA2MjgzMjcxMjc4NTEyOTAxMzEyOTA0MzkxNDA5MTcxNDM4NTg5NDI1MTU1NzU4NzYzNDIxNTgyMjk0NTY0NDkyNjEwOTU3Mjc0NzI0ODA3MDM4ODA5ODIiLz48WSBWYWx1ZT0iNTY4NjQ0MDg2Njc2MzIyNzkzMjc4NzExNjY5NzU0NDIzMjYxNDExMzI5Njg5NDA2NDUxNjYzMTM0NjI3NzczMjk1OTQ1OTgxMDM5MzE0MzEyMzY5MzYwMTAwMjYzMDE0NTk5MzAwMDM4NDI2NzczMzIwMiIvPjwvUHVibGljS2V5PjwvRUNEU0FLZXlWYWx1ZT48L0tleVZhbHVlPjwvS2V5SW5mbz48L1NpZ25hdHVyZT48L3Jvb3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvZWNjX3A1MjFfc2hhMV9jMTRuLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2VjY19wNTIxX3NoYTFfYzE0bi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ0NjFjNwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2VjY19wNTIxX3NoYTFfYzE0bi54bWwKQEAgLTAsMCArMSwzIEBACis8cm9vdD4KKwk8ZWxlbWVudDE+dGVzdDwvZWxlbWVudDE+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTEiLz48UmVmZXJlbmNlIFVSST0iIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPmxZbTJXZElZVmlJVXB6L0xsRE1vVFVVOFBFZz08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+QU04ZXIxYUk2MzB3ME1DQ2M4MVNsSUVVUzYrcXFTVE5VWDR2MHZWYzJFSG5tcGI3SVFKYnRyemgxWlJWOWNlTW1jKzR6R0QzdWxPT05Fdit3TU9wUXFwREFERzBoNTlPRndDdmxMcDNVU2ZRNTFjTG5qdnBqdXR2SEY5d3FBMXJCaHB1WnVOT3lEekZHeStqWUNpNVFZdXFjT0RmYllKVDkwRU9pdmxmSE9PeXVxNnE8L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxLZXlWYWx1ZT48RUNEU0FLZXlWYWx1ZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjIj48RG9tYWluUGFyYW1ldGVycz48TmFtZWRDdXJ2ZSBVUk49InVybjpvaWQ6MS4zLjEzMi4wLjM1Ii8+PC9Eb21haW5QYXJhbWV0ZXJzPjxQdWJsaWNLZXk+PFggVmFsdWU9IjI5NTYyNjQ0OTM4NzQ4ODYzNDgyMzMwMzQ3MTc2MTI0NzgwNzM0MDc1Njc1MTEwNjA0MTA4NjkxNjg4ODA5ODIxNzgyMTcwNzIwMzMxMTg5OTc5NDQ0MTExMDEyNTQ4NzE4NzcyODAxMTU0MzIzMDc0MzY5MTU1MTIwMTk5NTM1ODc3MDI2MzQ5NzI4Nzk5MTU2NTQ4MjEyNTg0ODEiLz48WSBWYWx1ZT0iMzAyNDM4Njk4MDc2ODkwODgzMjE3NTEwNzQ1MzM0NTUyNDg5Mzg3ODE3MjQyOTA4MDU3NDAyNTIwODQ4OTUyMDA0MTE1MzMyNDIyMjM3MzQzMzIxOTcxOTY2MTAzMjI2NTMyNDE3ODczMzkyNDMzMzA3ODg3MjcwODMzNTY0ODU3MjE2NzkxNzc1OTY2MTg2NjIyMjE0NTYzODE5NiIvPjwvUHVibGljS2V5PjwvRUNEU0FLZXlWYWx1ZT48L0tleVZhbHVlPjwvS2V5SW5mbz48L1NpZ25hdHVyZT48L3Jvb3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvZWNjX3A1MjFfc2hhMV9leGMtYzE0bi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDUyMV9zaGExX2V4Yy1jMTRuLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzZiOTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvZWNjX3A1MjFfc2hhMV9leGMtYzE0bi54bWwKQEAgLTAsMCArMSwzIEBACis8cm9vdD4KKwk8ZWxlbWVudDE+dGVzdDwvZWxlbWVudDE+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNlY2RzYS1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5sWW0yV2RJWVZpSVVwei9MbERNb1RVVThQRWc9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPkFZcW42bXdsRXlOeFNuZXNSNm41ZHVoM1pUS1kzbmEvMXhtWmtGZnljTlg3Vnl5T1F1LzEzT0NzaG82VjRNeTB0QXJJM3hneEFyRjFpYUo5elVCV0YvdjVBQ05Uem1DRk9UTlBFRjNSN3FlUkdOSmc2RDh6V3QrMFpDeDZqM0pzQ21RaWdBTVJuYTlHK2laZGJRbTFFbVZRU3lvNmkydTRRT3Jad3RMbXV2Q1N1RURHPC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48S2V5VmFsdWU+PEVDRFNBS2V5VmFsdWUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlIyI+PERvbWFpblBhcmFtZXRlcnM+PE5hbWVkQ3VydmUgVVJOPSJ1cm46b2lkOjEuMy4xMzIuMC4zNSIvPjwvRG9tYWluUGFyYW1ldGVycz48UHVibGljS2V5PjxYIFZhbHVlPSIyOTU2MjY0NDkzODc0ODg2MzQ4MjMzMDM0NzE3NjEyNDc4MDczNDA3NTY3NTExMDYwNDEwODY5MTY4ODgwOTgyMTc4MjE3MDcyMDMzMTE4OTk3OTQ0NDExMTAxMjU0ODcxODc3MjgwMTE1NDMyMzA3NDM2OTE1NTEyMDE5OTUzNTg3NzAyNjM0OTcyODc5OTE1NjU0ODIxMjU4NDgxIi8+PFkgVmFsdWU9IjMwMjQzODY5ODA3Njg5MDg4MzIxNzUxMDc0NTMzNDU1MjQ4OTM4NzgxNzI0MjkwODA1NzQwMjUyMDg0ODk1MjAwNDExNTMzMjQyMjIzNzM0MzMyMTk3MTk2NjEwMzIyNjUzMjQxNzg3MzM5MjQzMzMwNzg4NzI3MDgzMzU2NDg1NzIxNjc5MTc3NTk2NjE4NjYyMjIxNDU2MzgxOTYiLz48L1B1YmxpY0tleT48L0VDRFNBS2V5VmFsdWU+PC9LZXlWYWx1ZT48L0tleUluZm8+PC9TaWduYXR1cmU+PC9yb290PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2VjY19wNTIxX3NoYTI1Nl9jMTRuLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2VjY19wNTIxX3NoYTI1Nl9jMTRuLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjY5NjE5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvZWNjX3A1MjFfc2hhMjU2X2MxNG4ueG1sCkBAIC0wLDAgKzEsMyBAQAorPHJvb3Q+CisJPGVsZW1lbnQxPnRlc3Q8L2VsZW1lbnQxPgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNlY2RzYS1zaGEyNTYiLz48UmVmZXJlbmNlIFVSST0iIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxEaWdlc3RWYWx1ZT5lZXFQZG9jY09saUQyVE5FOE9Hb0VEbnR3NXpPSnpwdVNkVGZVNjR2RUFBPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5BSlpNVjI3eG1FQWFZOWVuVk1xc2JqUU9UMTE3cDJ0dDlnOFFPNnNySXFZS056WjBSZTJPVXllUC9LUXFzOHRQV0UwcEZjNExBZFpPYjk4K1luWUR0RWR6QWUwVUJ2djlLY0hhb3BJL2drbjNnVTFoV09PU2RFK2grclg2QWpCSjZub3RSeEFKY0M1eWR3TGhZZ2daUFE5ZlZzQ1RlT2w0aWVBejNwMmlvTEJFOGF6TDwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PEtleVZhbHVlPjxFQ0RTQUtleVZhbHVlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSMiPjxEb21haW5QYXJhbWV0ZXJzPjxOYW1lZEN1cnZlIFVSTj0idXJuOm9pZDoxLjMuMTMyLjAuMzUiLz48L0RvbWFpblBhcmFtZXRlcnM+PFB1YmxpY0tleT48WCBWYWx1ZT0iMjk1NjI2NDQ5Mzg3NDg4NjM0ODIzMzAzNDcxNzYxMjQ3ODA3MzQwNzU2NzUxMTA2MDQxMDg2OTE2ODg4MDk4MjE3ODIxNzA3MjAzMzExODk5Nzk0NDQxMTEwMTI1NDg3MTg3NzI4MDExNTQzMjMwNzQzNjkxNTUxMjAxOTk1MzU4NzcwMjYzNDk3Mjg3OTkxNTY1NDgyMTI1ODQ4MSIvPjxZIFZhbHVlPSIzMDI0Mzg2OTgwNzY4OTA4ODMyMTc1MTA3NDUzMzQ1NTI0ODkzODc4MTcyNDI5MDgwNTc0MDI1MjA4NDg5NTIwMDQxMTUzMzI0MjIyMzczNDMzMjE5NzE5NjYxMDMyMjY1MzI0MTc4NzMzOTI0MzMzMDc4ODcyNzA4MzM1NjQ4NTcyMTY3OTE3NzU5NjYxODY2MjIyMTQ1NjM4MTk2Ii8+PC9QdWJsaWNLZXk+PC9FQ0RTQUtleVZhbHVlPjwvS2V5VmFsdWU+PC9LZXlJbmZvPjwvU2lnbmF0dXJlPjwvcm9vdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDUyMV9zaGEyNTZfZXhjLWMxNG4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvZWNjX3A1MjFfc2hhMjU2X2V4Yy1jMTRuLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzE4YjUyCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvZWNjX3A1MjFfc2hhMjU2X2V4Yy1jMTRuLnhtbApAQCAtMCwwICsxLDMgQEAKKzxyb290PgorCTxlbGVtZW50MT50ZXN0PC9lbGVtZW50MT4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTI1NiIvPjxSZWZlcmVuY2UgVVJJPSIiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PERpZ2VzdFZhbHVlPmVlcVBkb2NjT2xpRDJUTkU4T0dvRURudHc1ek9KenB1U2RUZlU2NHZFQUE9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPkFjSytmMHhLVUU5cXV6cHhhY3d1aEN5ZFMveFRyeEZJT2t0MFIvVXZSOHBEaVY1MlBablVML21WOTNOeFFWYUdwWEhYYWZZRlpMaWVPR3RFakNKbWRzR0hBSFU2WjUxTzlNcUpaWm1NQlVjL0pPUW5RbFpVNHdVSlQvKzIyMnNwVjFqNGFWUUY3YmZSRkZ2Mmk4SXVsaVl3QVVnVkpZT2dvUnVQTWJUN1RiT0xoYnpHPC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48S2V5VmFsdWU+PEVDRFNBS2V5VmFsdWUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlIyI+PERvbWFpblBhcmFtZXRlcnM+PE5hbWVkQ3VydmUgVVJOPSJ1cm46b2lkOjEuMy4xMzIuMC4zNSIvPjwvRG9tYWluUGFyYW1ldGVycz48UHVibGljS2V5PjxYIFZhbHVlPSIyOTU2MjY0NDkzODc0ODg2MzQ4MjMzMDM0NzE3NjEyNDc4MDczNDA3NTY3NTExMDYwNDEwODY5MTY4ODgwOTgyMTc4MjE3MDcyMDMzMTE4OTk3OTQ0NDExMTAxMjU0ODcxODc3MjgwMTE1NDMyMzA3NDM2OTE1NTEyMDE5OTUzNTg3NzAyNjM0OTcyODc5OTE1NjU0ODIxMjU4NDgxIi8+PFkgVmFsdWU9IjMwMjQzODY5ODA3Njg5MDg4MzIxNzUxMDc0NTMzNDU1MjQ4OTM4NzgxNzI0MjkwODA1NzQwMjUyMDg0ODk1MjAwNDExNTMzMjQyMjIzNzM0MzMyMTk3MTk2NjEwMzIyNjUzMjQxNzg3MzM5MjQzMzMwNzg4NzI3MDgzMzU2NDg1NzIxNjc5MTc3NTk2NjE4NjYyMjIxNDU2MzgxOTYiLz48L1B1YmxpY0tleT48L0VDRFNBS2V5VmFsdWU+PC9LZXlWYWx1ZT48L0tleUluZm8+PC9TaWduYXR1cmU+PC9yb290PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2VjY19wNTIxX3NoYTM4NF9jMTRuLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2VjY19wNTIxX3NoYTM4NF9jMTRuLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODc1Zjk3Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvZWNjX3A1MjFfc2hhMzg0X2MxNG4ueG1sCkBAIC0wLDAgKzEsMyBAQAorPHJvb3Q+CisJPGVsZW1lbnQxPnRlc3Q8L2VsZW1lbnQxPgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNlY2RzYS1zaGEzODQiLz48UmVmZXJlbmNlIFVSST0iIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3NoYTM4NCIvPjxEaWdlc3RWYWx1ZT50V1JCb0FpaVpIQnFpU1crVTgzWXZCMEk2TVE2blFWWG0vTVllaFNOMWhHZzlZbWZyaGV3clhQb2dzQlFTNkc1PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPkFJSndiVUU0Q3UybHNqMXhHMmF2dHA0OEJ5MVNIWEllbmJMNTJROUxuMGZiZ1htKytjZFJGSmNONTJWOHdwdFBXSENLVW9QL2k5ZUtvQThvSkJaZjJlcWJBVEJTMU5xL0I0NEtwcEJYQmNQTkdQMGsyVzlHTXl6VDNtSVp2RGVWMWJQVUdPbW4vdlZDOU9IV3diMkpXcHBKd1B1NXFIcldhb3ZLZ1BLRnh0Q0tPVXhDPC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48S2V5VmFsdWU+PEVDRFNBS2V5VmFsdWUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlIyI+PERvbWFpblBhcmFtZXRlcnM+PE5hbWVkQ3VydmUgVVJOPSJ1cm46b2lkOjEuMy4xMzIuMC4zNSIvPjwvRG9tYWluUGFyYW1ldGVycz48UHVibGljS2V5PjxYIFZhbHVlPSIyOTU2MjY0NDkzODc0ODg2MzQ4MjMzMDM0NzE3NjEyNDc4MDczNDA3NTY3NTExMDYwNDEwODY5MTY4ODgwOTgyMTc4MjE3MDcyMDMzMTE4OTk3OTQ0NDExMTAxMjU0ODcxODc3MjgwMTE1NDMyMzA3NDM2OTE1NTEyMDE5OTUzNTg3NzAyNjM0OTcyODc5OTE1NjU0ODIxMjU4NDgxIi8+PFkgVmFsdWU9IjMwMjQzODY5ODA3Njg5MDg4MzIxNzUxMDc0NTMzNDU1MjQ4OTM4NzgxNzI0MjkwODA1NzQwMjUyMDg0ODk1MjAwNDExNTMzMjQyMjIzNzM0MzMyMTk3MTk2NjEwMzIyNjUzMjQxNzg3MzM5MjQzMzMwNzg4NzI3MDgzMzU2NDg1NzIxNjc5MTc3NTk2NjE4NjYyMjIxNDU2MzgxOTYiLz48L1B1YmxpY0tleT48L0VDRFNBS2V5VmFsdWU+PC9LZXlWYWx1ZT48L0tleUluZm8+PC9TaWduYXR1cmU+PC9yb290PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2VjY19wNTIxX3NoYTM4NF9leGMtYzE0bi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDUyMV9zaGEzODRfZXhjLWMxNG4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkYWU5ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDUyMV9zaGEzODRfZXhjLWMxNG4ueG1sCkBAIC0wLDAgKzEsMyBAQAorPHJvb3Q+CisJPGVsZW1lbnQxPnRlc3Q8L2VsZW1lbnQxPgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjZWNkc2Etc2hhMzg0Ii8+PFJlZmVyZW5jZSBVUkk9IiI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNzaGEzODQiLz48RGlnZXN0VmFsdWU+dFdSQm9BaWlaSEJxaVNXK1U4M1l2QjBJNk1RNm5RVlhtL01ZZWhTTjFoR2c5WW1mcmhld3JYUG9nc0JRUzZHNTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5BQVRRa3Z3RVdBYlBtdkRENnp0eFlvelhNSktCNVVrTE9KTy8yTFY5b1dxcTViQmF2TGlHTFVKL2hyaVhXdU0yQzJ6Wld1T3VqNXVjelA5NHFZZ3hnUVZTQUJyNHc1UGxVdG1vdm9JdlZ6cU15S2FIa3gwSjJIcVNqeXlZcHdRY0JMby9XSDRCZFFuZERObVk2cTlMQVovR1I0RzFWU0p1TlkxYWh6bnhheXNrVTlweDwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PEtleVZhbHVlPjxFQ0RTQUtleVZhbHVlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSMiPjxEb21haW5QYXJhbWV0ZXJzPjxOYW1lZEN1cnZlIFVSTj0idXJuOm9pZDoxLjMuMTMyLjAuMzUiLz48L0RvbWFpblBhcmFtZXRlcnM+PFB1YmxpY0tleT48WCBWYWx1ZT0iMjk1NjI2NDQ5Mzg3NDg4NjM0ODIzMzAzNDcxNzYxMjQ3ODA3MzQwNzU2NzUxMTA2MDQxMDg2OTE2ODg4MDk4MjE3ODIxNzA3MjAzMzExODk5Nzk0NDQxMTEwMTI1NDg3MTg3NzI4MDExNTQzMjMwNzQzNjkxNTUxMjAxOTk1MzU4NzcwMjYzNDk3Mjg3OTkxNTY1NDgyMTI1ODQ4MSIvPjxZIFZhbHVlPSIzMDI0Mzg2OTgwNzY4OTA4ODMyMTc1MTA3NDUzMzQ1NTI0ODkzODc4MTcyNDI5MDgwNTc0MDI1MjA4NDg5NTIwMDQxMTUzMzI0MjIyMzczNDMzMjE5NzE5NjYxMDMyMjY1MzI0MTc4NzMzOTI0MzMzMDc4ODcyNzA4MzM1NjQ4NTcyMTY3OTE3NzU5NjYxODY2MjIyMTQ1NjM4MTk2Ii8+PC9QdWJsaWNLZXk+PC9FQ0RTQUtleVZhbHVlPjwvS2V5VmFsdWU+PC9LZXlJbmZvPjwvU2lnbmF0dXJlPjwvcm9vdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDUyMV9zaGE1MTJfYzE0bi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDUyMV9zaGE1MTJfYzE0bi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNjOTA5NAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2VjY19wNTIxX3NoYTUxMl9jMTRuLnhtbApAQCAtMCwwICsxLDMgQEAKKzxyb290PgorCTxlbGVtZW50MT50ZXN0PC9lbGVtZW50MT4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjZWNkc2Etc2hhNTEyIi8+PFJlZmVyZW5jZSBVUkk9IiI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGE1MTIiLz48RGlnZXN0VmFsdWU+UWxMQmtwWFdFN0hwWFREZjZwZEVnMTV6TytSNmJ0OStpRTd5OXBIU1BhU1Q4aGZsRnQxTE00SXpiSXpNbWdmU3M0SHk2eTR4RWNtanpnaU96VHd5Smc9PTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5BREJtQjI3UHMvUGV5ZTFTOTBNb2wxVG81Mng4ODQrUkp1QmRNQnBzZEQ5MEl3Vi9EbWdXU0VGTEo1Vy9EK1BXZGtMUytteUdxa2luYUhlaHhES0FFNXRyQUdsdGtNQ09zU0VEem9EMmpoYnlPRXltU3RlN0pvOVIxaVE2NmZtdFc3R2NZZWpHaG95NzF4ZEhrR3Awc3FkdDJJcEg3L2hwUEJIWC9UcGNIcWlvWXlBczwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PEtleVZhbHVlPjxFQ0RTQUtleVZhbHVlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSMiPjxEb21haW5QYXJhbWV0ZXJzPjxOYW1lZEN1cnZlIFVSTj0idXJuOm9pZDoxLjMuMTMyLjAuMzUiLz48L0RvbWFpblBhcmFtZXRlcnM+PFB1YmxpY0tleT48WCBWYWx1ZT0iMjk1NjI2NDQ5Mzg3NDg4NjM0ODIzMzAzNDcxNzYxMjQ3ODA3MzQwNzU2NzUxMTA2MDQxMDg2OTE2ODg4MDk4MjE3ODIxNzA3MjAzMzExODk5Nzk0NDQxMTEwMTI1NDg3MTg3NzI4MDExNTQzMjMwNzQzNjkxNTUxMjAxOTk1MzU4NzcwMjYzNDk3Mjg3OTkxNTY1NDgyMTI1ODQ4MSIvPjxZIFZhbHVlPSIzMDI0Mzg2OTgwNzY4OTA4ODMyMTc1MTA3NDUzMzQ1NTI0ODkzODc4MTcyNDI5MDgwNTc0MDI1MjA4NDg5NTIwMDQxMTUzMzI0MjIyMzczNDMzMjE5NzE5NjYxMDMyMjY1MzI0MTc4NzMzOTI0MzMzMDc4ODcyNzA4MzM1NjQ4NTcyMTY3OTE3NzU5NjYxODY2MjIyMTQ1NjM4MTk2Ii8+PC9QdWJsaWNLZXk+PC9FQ0RTQUtleVZhbHVlPjwvS2V5VmFsdWU+PC9LZXlJbmZvPjwvU2lnbmF0dXJlPjwvcm9vdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9lY2NfcDUyMV9zaGE1MTJfZXhjLWMxNG4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvZWNjX3A1MjFfc2hhNTEyX2V4Yy1jMTRuLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzA3NjgyCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvZWNjX3A1MjFfc2hhNTEyX2V4Yy1jMTRuLnhtbApAQCAtMCwwICsxLDMgQEAKKzxyb290PgorCTxlbGVtZW50MT50ZXN0PC9lbGVtZW50MT4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTUxMiIvPjxSZWZlcmVuY2UgVVJJPSIiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhNTEyIi8+PERpZ2VzdFZhbHVlPlFsTEJrcFhXRTdIcFhURGY2cGRFZzE1ek8rUjZidDkraUU3eTlwSFNQYVNUOGhmbEZ0MUxNNEl6Ykl6TW1nZlNzNEh5Nnk0eEVjbWp6Z2lPelR3eUpnPT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+QU1pYmg1RWlOb2xTaXZRSjVTRm5IeW05Q3p4WVlzNFdvRVhiY00yR1F2aDRXdVVYMEE2VXBTQjJvdDZySUhsZks1aGpEQVV2TnFkOFVmUkNEUzZKcXd6eUFCdHlabm5EZjNQZUpWQTNQWlZVTS91b3d1ZEVXOSt1OWVpaFV4Wmp2QkVvd1JXbjlIYVZObm1YbVEwTjNQcnROM1hOUjVEYXFKZ2dlV0VNeWFneXZMeDY8L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxLZXlWYWx1ZT48RUNEU0FLZXlWYWx1ZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjIj48RG9tYWluUGFyYW1ldGVycz48TmFtZWRDdXJ2ZSBVUk49InVybjpvaWQ6MS4zLjEzMi4wLjM1Ii8+PC9Eb21haW5QYXJhbWV0ZXJzPjxQdWJsaWNLZXk+PFggVmFsdWU9IjI5NTYyNjQ0OTM4NzQ4ODYzNDgyMzMwMzQ3MTc2MTI0NzgwNzM0MDc1Njc1MTEwNjA0MTA4NjkxNjg4ODA5ODIxNzgyMTcwNzIwMzMxMTg5OTc5NDQ0MTExMDEyNTQ4NzE4NzcyODAxMTU0MzIzMDc0MzY5MTU1MTIwMTk5NTM1ODc3MDI2MzQ5NzI4Nzk5MTU2NTQ4MjEyNTg0ODEiLz48WSBWYWx1ZT0iMzAyNDM4Njk4MDc2ODkwODgzMjE3NTEwNzQ1MzM0NTUyNDg5Mzg3ODE3MjQyOTA4MDU3NDAyNTIwODQ4OTUyMDA0MTE1MzMyNDIyMjM3MzQzMzIxOTcxOTY2MTAzMjI2NTMyNDE3ODczMzkyNDMzMzA3ODg3MjcwODMzNTY0ODU3MjE2NzkxNzc1OTY2MTg2NjIyMjE0NTYzODE5NiIvPjwvUHVibGljS2V5PjwvRUNEU0FLZXlWYWx1ZT48L0tleVZhbHVlPjwvS2V5SW5mbz48L1NpZ25hdHVyZT48L3Jvb3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvaG1hY19zaGExX2V4Yy1jMTRuLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2htYWNfc2hhMV9leGMtYzE0bi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQwY2Y1YwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2htYWNfc2hhMV9leGMtYzE0bi54bWwKQEAgLTAsMCArMSwzIEBACis8cm9vdD4KKwk8ZWxlbWVudDE+dGVzdDwvZWxlbWVudDE+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5sWW0yV2RJWVZpSVVwei9MbERNb1RVVThQRWc9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPjkycmN2MGs5dXpqRTUrNGFJL1N2b2JjSVFnZz08L1NpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlPjwvcm9vdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9obWFjX3NoYTI1Nl9leGMtYzE0bi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9obWFjX3NoYTI1Nl9leGMtYzE0bi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDAyNGFjOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2htYWNfc2hhMjU2X2V4Yy1jMTRuLnhtbApAQCAtMCwwICsxLDMgQEAKKzxyb290PgorCTxlbGVtZW50MT50ZXN0PC9lbGVtZW50MT4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2htYWMtc2hhMjU2Ii8+PFJlZmVyZW5jZSBVUkk9IiI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5sWW0yV2RJWVZpSVVwei9MbERNb1RVVThQRWc9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPlNSRkpHT0xyc1J3aEp1bWd0aUZwMmVjWjFWNHYvZG5QWE1IVGk2U01UN3c9PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT48L3Jvb3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvaG1hY19zaGEzODRfZXhjLWMxNG4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvaG1hY19zaGEzODRfZXhjLWMxNG4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NzlkN2YKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9obWFjX3NoYTM4NF9leGMtYzE0bi54bWwKQEAgLTAsMCArMSwzIEBACis8cm9vdD4KKwk8ZWxlbWVudDE+dGVzdDwvZWxlbWVudDE+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTM4NCIvPjxSZWZlcmVuY2UgVVJJPSIiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+bFltMldkSVlWaUlVcHovTGxETW9UVVU4UEVnPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5vVXM0amNHeTdvT29MMm04NzFuQ3dTQWtFZ1lCV1Vrc3A5all6eXBWVnZZd3NFbXVGR2x2RnIrVHhHclJQTFJWPC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT48L3Jvb3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvaG1hY19zaGE1MTJfZXhjLWMxNG4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvaG1hY19zaGE1MTJfZXhjLWMxNG4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyMDNlYTkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9obWFjX3NoYTUxMl9leGMtYzE0bi54bWwKQEAgLTAsMCArMSwzIEBACis8cm9vdD4KKwk8ZWxlbWVudDE+dGVzdDwvZWxlbWVudDE+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTUxMiIvPjxSZWZlcmVuY2UgVVJJPSIiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+bFltMldkSVlWaUlVcHovTGxETW9UVVU4UEVnPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT54TmxCRi9wV3pVbWkvMTIzV3czM3VvWDFUaFhoZW93aiswN3JMNTRNajgzQ3BVNmVsZWJSN01RbEpEWjlJKzRLOE82cUc4NjRtL29VWmRTczM0anJkUT09PC9TaWduYXR1cmVWYWx1ZT48L1NpZ25hdHVyZT48L3Jvb3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvaW5kZXguaHRtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RjNDE2ZAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxMzggQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iCisiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvMjAwOC94bWxzZWMvR3JvdXAvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0PC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgLzIwMDgveG1sc2VjL0dyb3VwL2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdDwvaDE+Cis8dGFibGU+PHRyPjx0aD48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+PHRyPjx0aCBjb2xzcGFuPSI1Ij48aHIgLz48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltESVJdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0iLzIwMDgveG1sc2VjL0dyb3VwL2ludGVyb3AveG1sZHNpZzExLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0iZHNhXzEwMjRfc2hhMV9jMTRuLnhtbCI+ZHNhXzEwMjRfc2hhMV9jMTRuLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA4LU1heS0yMDA5IDE2OjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0iZHNhXzEwMjRfc2hhMV9leGMtYzE0bi54bWwiPmRzYV8xMDI0X3NoYTFfZXhjLWMxNG4ueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDgtTWF5LTIwMDkgMTY6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJlY2NfcDI1Nl9zaGExX2MxNG4ueG1sIj5lY2NfcDI1Nl9zaGExX2MxNG4ueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDgtTWF5LTIwMDkgMTY6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJlY2NfcDI1Nl9zaGExX2V4Yy1jMTRuLnhtbCI+ZWNjX3AyNTZfc2hhMV9leGMtYzE0bi54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wOC1NYXktMjAwOSAxNjoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9ImVjY19wMjU2X3NoYTI1Nl9jMTRuLnhtbCI+ZWNjX3AyNTZfc2hhMjU2X2MxNG4ueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDgtTWF5LTIwMDkgMTY6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJlY2NfcDI1Nl9zaGEyNTZfZXhjLWMxNG4ueG1sIj5lY2NfcDI1Nl9zaGEyNTZfZXhjLWMxNG4ueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDgtTWF5LTIwMDkgMTY6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJlY2NfcDI1Nl9zaGEzODRfYzE0bi54bWwiPmVjY19wMjU2X3NoYTM4NF9jMTRuLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA4LU1heS0yMDA5IDE2OjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMUs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0iZWNjX3AyNTZfc2hhMzg0X2V4Yy1jMTRuLnhtbCI+ZWNjX3AyNTZfc2hhMzg0X2V4Yy1jMTRuLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA4LU1heS0yMDA5IDE2OjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMUs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0iZWNjX3AyNTZfc2hhNTEyX2MxNG4ueG1sIj5lY2NfcDI1Nl9zaGE1MTJfYzE0bi54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wOC1NYXktMjAwOSAxNjoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjFLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9ImVjY19wMjU2X3NoYTUxMl9leGMtYzE0bi54bWwiPmVjY19wMjU2X3NoYTUxMl9leGMtYzE0bi54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wOC1NYXktMjAwOSAxNjoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjFLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9ImVjY19wMzg0X3NoYTFfYzE0bi54bWwiPmVjY19wMzg0X3NoYTFfYzE0bi54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wOC1NYXktMjAwOSAxNjoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9ImVjY19wMzg0X3NoYTFfZXhjLWMxNG4ueG1sIj5lY2NfcDM4NF9zaGExX2V4Yy1jMTRuLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA4LU1heS0yMDA5IDE2OjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0iZWNjX3AzODRfc2hhMjU2X2MxNG4ueG1sIj5lY2NfcDM4NF9zaGEyNTZfYzE0bi54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wOC1NYXktMjAwOSAxNjoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9ImVjY19wMzg0X3NoYTI1Nl9leGMtYzE0bi54bWwiPmVjY19wMzg0X3NoYTI1Nl9leGMtYzE0bi54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wOC1NYXktMjAwOSAxNjoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9ImVjY19wMzg0X3NoYTM4NF9jMTRuLnhtbCI+ZWNjX3AzODRfc2hhMzg0X2MxNG4ueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDgtTWF5LTIwMDkgMTY6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJlY2NfcDM4NF9zaGEzODRfZXhjLWMxNG4ueG1sIj5lY2NfcDM4NF9zaGEzODRfZXhjLWMxNG4ueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDgtTWF5LTIwMDkgMTY6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJlY2NfcDM4NF9zaGE1MTJfYzE0bi54bWwiPmVjY19wMzg0X3NoYTUxMl9jMTRuLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA4LU1heS0yMDA5IDE2OjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0iZWNjX3AzODRfc2hhNTEyX2V4Yy1jMTRuLnhtbCI+ZWNjX3AzODRfc2hhNTEyX2V4Yy1jMTRuLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA4LU1heS0yMDA5IDE2OjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0iZWNjX3A1MjFfc2hhMV9jMTRuLnhtbCI+ZWNjX3A1MjFfc2hhMV9jMTRuLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA4LU1heS0yMDA5IDE2OjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0iZWNjX3A1MjFfc2hhMV9leGMtYzE0bi54bWwiPmVjY19wNTIxX3NoYTFfZXhjLWMxNG4ueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDgtTWF5LTIwMDkgMTY6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJlY2NfcDUyMV9zaGEyNTZfYzE0bi54bWwiPmVjY19wNTIxX3NoYTI1Nl9jMTRuLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA4LU1heS0yMDA5IDE2OjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0iZWNjX3A1MjFfc2hhMjU2X2V4Yy1jMTRuLnhtbCI+ZWNjX3A1MjFfc2hhMjU2X2V4Yy1jMTRuLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA4LU1heS0yMDA5IDE2OjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0iZWNjX3A1MjFfc2hhMzg0X2MxNG4ueG1sIj5lY2NfcDUyMV9zaGEzODRfYzE0bi54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wOC1NYXktMjAwOSAxNjoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9ImVjY19wNTIxX3NoYTM4NF9leGMtYzE0bi54bWwiPmVjY19wNTIxX3NoYTM4NF9leGMtYzE0bi54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wOC1NYXktMjAwOSAxNjoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9ImVjY19wNTIxX3NoYTUxMl9jMTRuLnhtbCI+ZWNjX3A1MjFfc2hhNTEyX2MxNG4ueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDgtTWF5LTIwMDkgMTY6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJlY2NfcDUyMV9zaGE1MTJfZXhjLWMxNG4ueG1sIj5lY2NfcDUyMV9zaGE1MTJfZXhjLWMxNG4ueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDgtTWF5LTIwMDkgMTY6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJobWFjX3NoYTFfZXhjLWMxNG4ueG1sIj5obWFjX3NoYTFfZXhjLWMxNG4ueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDktTWF5LTIwMDkgMDA6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTk4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJobWFjX3NoYTI1Nl9leGMtYzE0bi54bWwiPmhtYWNfc2hhMjU2X2V4Yy1jMTRuLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA5LU1heS0yMDA5IDAwOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYyMSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0iaG1hY19zaGEzODRfZXhjLWMxNG4ueG1sIj5obWFjX3NoYTM4NF9leGMtYzE0bi54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wOS1NYXktMjAwOSAwMDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NDEgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9ImhtYWNfc2hhNTEyX2V4Yy1jMTRuLnhtbCI+aG1hY19zaGE1MTJfZXhjLWMxNG4ueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDktTWF5LTIwMDkgMDA6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjY1IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJyc2EyMDQ4X3NoYTFfYzE0bi54bWwiPnJzYTIwNDhfc2hhMV9jMTRuLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA4LU1heS0yMDA5IDE2OjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0icnNhMjA0OF9zaGExX2V4Yy1jMTRuLnhtbCI+cnNhMjA0OF9zaGExX2V4Yy1jMTRuLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA4LU1heS0yMDA5IDE2OjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0icnNhMjA0OF9zaGEyNTZfYzE0bi54bWwiPnJzYTIwNDhfc2hhMjU2X2MxNG4ueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDgtTWF5LTIwMDkgMTY6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJyc2EyMDQ4X3NoYTI1Nl9leGMtYzE0bi54bWwiPnJzYTIwNDhfc2hhMjU2X2V4Yy1jMTRuLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA4LU1heS0yMDA5IDE2OjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0icnNhMjA0OF9zaGEzODRfYzE0bi54bWwiPnJzYTIwNDhfc2hhMzg0X2MxNG4ueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDgtTWF5LTIwMDkgMTY6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJyc2EyMDQ4X3NoYTM4NF9leGMtYzE0bi54bWwiPnJzYTIwNDhfc2hhMzg0X2V4Yy1jMTRuLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA4LU1heS0yMDA5IDE2OjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0icnNhMjA0OF9zaGE1MTJfYzE0bi54bWwiPnJzYTIwNDhfc2hhNTEyX2MxNG4ueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDgtTWF5LTIwMDkgMTY6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJyc2EyMDQ4X3NoYTUxMl9leGMtYzE0bi54bWwiPnJzYTIwNDhfc2hhNTEyX2V4Yy1jMTRuLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA4LU1heS0yMDA5IDE2OjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0ic2VjcmV0LXNoYTEuaG1hYyI+c2VjcmV0LXNoYTEuaG1hYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA5LU1heS0yMDA5IDAwOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0ic2VjcmV0LXNoYTI1Ni5obWFjIj5zZWNyZXQtc2hhMjU2LmhtYWM8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wOS1NYXktMjAwOSAwMDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xMTIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9InNlY3JldC1zaGEzODQuaG1hYyI+c2VjcmV0LXNoYTM4NC5obWFjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDktTWF5LTIwMDkgMDA6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MTY2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJzZWNyZXQtc2hhNTEyLmhtYWMiPnNlY3JldC1zaGE1MTIuaG1hYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA5LU1heS0yMDA5IDAwOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjI3OCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRoIGNvbHNwYW49IjUiPjxociAvPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8cHJlPgorVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgYSBzZXQgb2YgdGVzdCBzaWduYXR1cmVzIGZvciBYTUxEU0lHIDEuMSBpbnRlcm9wCit0ZXN0aW5nLiAgCisKK0FsbCBzaWduYXR1cmVzIGFyZSBlbnZlbG9waW5nIHNpZ25hdHVyZXMgdW5sZXNzIG90aGVyd2lzZSBub3RlZC4gIFRlc3QKK3ZlY3RvcnMgYXJlIGluY2x1ZGVkIHVzaW5nIGJvdGggSW5jbHVzaXZlLUMxNE4gMS4wIGFuZCBFeGNsdXNpdmUtQzE0TgorMS4wLCBhbmQgaGFzaCBhbGdvcml0aG1zIFNIQS0xLCBTSEEtMjU2LCBTSEEtMzg0IGFuZCBTSEEtNTEyLgorCitGT1IgRFNBLWJhc2VkIHNpZ25hdHVyZXMsIHRoZSBwdWJsaWMga2V5IHZhbHVlIGlzIGluY2x1ZGVkIGluIHRoZSBLZXlWYWx1ZS9EU0FLZXlWYWx1ZSBlbGVtZW50LgorCitGb3IgUlNBLWJhc2VkIHNpZ25hdHVyZXMsIHRoZSBwdWJsaWMga2V5IHZhbHVlIGlzIGluY2x1ZGVkIGluIHRoZSBLZXlWYWx1ZS9SU0FLZXlWYWx1ZSBlbGVtZW50LgorCitGb3IgRUNDLWJhc2VkIHNpZ25hdHVyZXMsIHRoZSBwdWJsaWMga2V5IEVDQyBwb2ludCBpcyBpbmNsdWRlZCBpbiB0aGUKK0tleVZhbHVlL0VDRFNBS2V5VmFsdWUgZWxlbWVudCB1c2luZyB0aGUgb2xkIFJGQyA0MDUwIGZvcm1hdCAoc2VlIHNlY3Rpb24KKzQuNC4yLjMuMikgZm9yIHRoZSBQdWJsaWNLZXkuCisKK0ZvciBITUFDLWJhc2VkIHNpZ25hdHVyZXMsIHRoZSBzZWNyZXQga2V5IGlzIHN0b3JlZCBhcyBhIGJpbmFyeSB2YWx1ZSBpbiBhIGNvcnJlc3BvbmRpbmcgLmhtYWMgZmlsZS4gIAorCitSRVFVSVJFRCBhbGdvcml0aG1zCisKK3JzYTIwNDhfc2hhMjU2X2MxNG4ueG1sICAgICAgICAgICAgICAgICBSU0F3aXRoU0hBMjU2LCBDMTROIDEuMAorcnNhMjA0OF9zaGEyNTZfZXhjLWMxNG4ueG1sICAgICAgICAgICAgIFJTQXdpdGhTSEEyNTYsIEV4Yy1DMTROIDEuMAorCitlY2NfcDI1Nl9zaGEyNTZfYzE0bi54bWwgICAgICAgICAgICAgICAgRUNEU0F3aXRoU0hBMjU2LCBDMTROIDEuMAorZWNjX3AyNTZfc2hhMjU2X2V4Yy1jMTRuLnhtbCAgICAgICAgICAgIEVDRFNBd2l0aFNIQTI1NiwgRXhjLUMxNE4gMS4wCisKK2RzYV8xMDI0X3NoYTFfYzE0bi54bWwgICAgICAgICAgICAgICAgICBEU0F3aXRoU0hBMSwgQzE0TiAxLjAKK2RzYV8xMDI0X3NoYTFfZXhjLWMxNG4ueG1sICAgICAgICAgICAgICBEU0F3aXRoU0hBMSwgRXhjLUMxNE4gMS4wCisKK2htYWNfc2hhMV9leGMtYzE0bi54bWwJCQlITUFDLVNIQTEsIEV4Yy1DMTROIDEuMCwgc2VjcmV0IGtleSBpbiBzZWNyZXQtc2hhMS5obWFjCisKK1JFQ09NTUVOREVEIGFsZ29yaXRobXM6CisKK3JzYTIwNDhfc2hhMV9jMTRuLnhtbCAgICAgICAgICAgICAgICAgICBSU0F3aXRoU0hBMSwgQzE0TiAxLjAKK3JzYTIwNDhfc2hhMV9leGMtYzE0bi54bWwgICAgICAgICAgICAgICBSU0F3aXRoU0hBMSwgRXhjLUMxNE4gMS4wCisKK2htYWNfc2hhMjU2X2V4Yy1jMTRuLnhtbAkJSE1BQy1TSEEyNTYsIEV4Yy1DMTROIDEuMCwgc2VjcmV0IGtleSBpbiBzZWNyZXQtc2hhMjU2LmhtYWMKKworT1BUSU9OQUwgYWxnb3JpdGhtczoKKworcnNhMjA0OF9zaGEzODRfYzE0bi54bWwgICAgICAgICAgICAgICAgIFJTQXdpdGhTSEEzODQsIEMxNE4gMS4wCityc2EyMDQ4X3NoYTM4NF9leGMtYzE0bi54bWwgICAgICAgICAgICAgUlNBd2l0aFNIQTM4NCwgRXhjLUMxNE4gMS4wCisKK3JzYTIwNDhfc2hhNTEyX2MxNG4ueG1sICAgICAgICAgICAgICAgICBSU0F3aXRoU0hBNTEyLCBDMTROIDEuMAorcnNhMjA0OF9zaGE1MTJfZXhjLWMxNG4ueG1sICAgICAgICAgICAgIFJTQXdpdGhTSEE1MTIsIEV4Yy1DMTROIDEuMAorCitlY2NfcDI1Nl9zaGExX2MxNG4ueG1sICAgICAgICAgICAgICAgICAgRUNEU0F3aXRoU0hBMSwgUC0yNTYsIEMxNE4gMS4wCitlY2NfcDI1Nl9zaGExX2V4Yy1jMTRuLnhtbCAgICAgICAgICAgICAgRUNEU0F3aXRoU0hBMSwgUC0yNTYsIEV4Yy1DMTROIDEuMAorCitlY2NfcDI1Nl9zaGEzODRfYzE0bi54bWwgICAgICAgICAgICAgICAgRUNEU0F3aXRoU0hBMzg0LCBwLTI1NiwgQzE0TiAxLjAKK2VjY19wMjU2X3NoYTM4NF9leGMtYzE0bi54bWwgICAgICAgICAgICBFQ0RTQXdpdGhTSEEzODQsIFAtMjU2LCBFeGMtQzE0TiAxLjAKKworZWNjX3AyNTZfc2hhNTEyX2MxNG4ueG1sICAgICAgICAgICAgICAgIEVDRFNBd2l0aFNIQTUxMiwgUC0yNTYsIEMxNE4gMS4wCitlY2NfcDI1Nl9zaGE1MTJfZXhjLWMxNG4ueG1sICAgICAgICAgICAgRUNEU0F3aXRoU0hBNTEyLCBQLTI1NiwgRXhjLUMxNE4gMS4wCisKK2VjY19wMzg0X3NoYTFfYzE0bi54bWwgICAgICAgICAgICAgICAgICBFQ0RTQXdpdGhTSEExLCBQLTM4NCwgQzE0TiAxLjAKK2VjY19wMzg0X3NoYTFfZXhjLWMxNG4ueG1sICAgICAgICAgICAgICBFQ0RTQXdpdGhTSEExLCBQLTM4NCwgRXhjLUMxNE4gMS4wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorZWNjX3AzODRfc2hhMjU2X2MxNG4ueG1sICAgICAgICAgICAgICAgIEVDRFNBd2l0aFNIQTI1NiwgUC0zODQsIEMxNE4gMS4wCitlY2NfcDM4NF9zaGEyNTZfZXhjLWMxNG4ueG1sICAgICAgICAgICAgRUNEU0F3aXRoU0hBMjU2LCBQLTM4NCwgRXhjLUMxNE4gMS4wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitlY2NfcDM4NF9zaGEzODRfYzE0bi54bWwgICAgICAgICAgICAgICAgRUNEU0F3aXRoU0hBMzg0LCBwLTM4NCwgQzE0TiAxLjAKK2VjY19wMzg0X3NoYTM4NF9leGMtYzE0bi54bWwgICAgICAgICAgICBFQ0RTQXdpdGhTSEEzODQsIFAtMzg0LCBFeGMtQzE0TiAxLjAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorZWNjX3AzODRfc2hhNTEyX2MxNG4ueG1sICAgICAgICAgICAgICAgIEVDRFNBd2l0aFNIQTUxMiwgUC0zODQsIEMxNE4gMS4wCitlY2NfcDM4NF9zaGE1MTJfZXhjLWMxNG4ueG1sICAgICAgICAgICAgRUNEU0F3aXRoU0hBNTEyLCBQLTM4NCwgRXhjLUMxNE4gMS4wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitlY2NfcDUyMV9zaGExX2MxNG4ueG1sICAgICAgICAgICAgICAgICAgRUNEU0F3aXRoU0hBMSwgUC01MjEsIEMxNE4gMS4wCitlY2NfcDUyMV9zaGExX2V4Yy1jMTRuLnhtbCAgICAgICAgICAgICAgRUNEU0F3aXRoU0hBMSwgUC01MjEsIEV4Yy1DMTROIDEuMAorCitlY2NfcDUyMV9zaGEyNTZfYzE0bi54bWwgICAgICAgICAgICAgICAgRUNEU0F3aXRoU0hBMjU2LCBQLTUyMSwgQzE0TiAxLjAKK2VjY19wNTIxX3NoYTI1Nl9leGMtYzE0bi54bWwgICAgICAgICAgICBFQ0RTQXdpdGhTSEEyNTYsIFAtNTIxLCBFeGMtQzE0TiAxLjAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitlY2NfcDUyMV9zaGEzODRfYzE0bi54bWwgICAgICAgICAgICAgICAgRUNEU0F3aXRoU0hBMzg0LCBwLTUyMSwgQzE0TiAxLjAKK2VjY19wNTIxX3NoYTM4NF9leGMtYzE0bi54bWwgICAgICAgICAgICBFQ0RTQXdpdGhTSEEzODQsIFAtNTIxLCBFeGMtQzE0TiAxLjAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitlY2NfcDUyMV9zaGE1MTJfYzE0bi54bWwgICAgICAgICAgICAgICAgRUNEU0F3aXRoU0hBNTEyLCBQLTUyMSwgQzE0TiAxLjAKK2VjY19wNTIxX3NoYTUxMl9leGMtYzE0bi54bWwgICAgICAgICAgICBFQ0RTQXdpdGhTSEE1MTIsIFAtNTIxLCBFeGMtQzE0TiAxLjAKKworaG1hY19zaGEzODRfZXhjLWMxNG4ueG1sCQlITUFDLVNIQTM4NCwgRXhjLUMxNE4gMS4wLCBzZWNyZXQga2V5IGluIHNlY3JldC1zaGEzODQuaG1hYworCitobWFjX3NoYTUxMl9leGMtYzE0bi54bWwJCUhNQUMtU0hBNTEyLCBFeGMtQzE0TiAxLjAsIHNlY3JldCBrZXkgaW4gc2VjcmV0LXNoYTUxMi5obWFjCis8L3ByZT4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9yc2EyMDQ4X3NoYTFfYzE0bi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9yc2EyMDQ4X3NoYTFfYzE0bi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE3NjljOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L3JzYTIwNDhfc2hhMV9jMTRuLnhtbApAQCAtMCwwICsxLDMgQEAKKzxyb290PgorCTxlbGVtZW50MT50ZXN0PC9lbGVtZW50MT4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIi8+PFJlZmVyZW5jZSBVUkk9IiI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT5sWW0yV2RJWVZpSVVwei9MbERNb1RVVThQRWc9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPkRROEpBTTdWVjYwMVNSWS9ZMzRBRWw4WDA4TVVGMkhIQmdxRndmV3ZhL2NNVlcxTUV4WDR6a3hXS2dUd3U2NzFqRmJQTEJGeUlNS3ZZZHIxa0FVQzB4ZlhwMU0xRzVjRG8zZlcvSVgrdVYybC9RdWl5RW1IMzVVYTB5eDE2cGdVQ2RVTWNYMk9JQ21VVnd0dGxNbVFCTXoyMkpqUXVmeDE0SDh0WnVxaVI5U1ZhazhCQVhwOGdQcDAxd2JIRXJpdkpNZmxKSEM0dGU5Uml2ZGErVUczVVUzallRSFdhTmNLeHZPUDRpbEtMeE52VTJhNVJuU05RVDZZQWs5UGRBYkdKRzVIY2w1ckh0N0hXUUdGS0Fla05qdXdDc1ZiUEFoaGl1RjFxZHFDREJRWTZUaThPQjc4cGRhUENhaE5EcDh5OWdVWmJPTEhsaHB6THpxaGo4R1Rwdz09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48S2V5VmFsdWU+PFJTQUtleVZhbHVlPjxNb2R1bHVzPnV1LzZZbDlNa1A1V0lxMW0zZHJIMHM4ZXNSMFllM1dvd2Z2aTN1dHpTelVGczU5SzZIMGxnNGRrYkw5WTc0cERJTHBMQmNWeUQ0VmpMbXZiMHhSekFVcmhtR2lYd3dNQ3dKRkZON3FnSnUzdk1odEE0T2lteVpsbnZYckduTFBBNW1SZTk1cGdFZEVScXdjZ1pVZ2tMbUVsS0ZDN1VDU0dkU01tdmxlbFhzeHA2QVRlQzFVeDZCVXdrSUVaUG5oNHFyeis3RU41SjlPNUg3cU5xZzRQcG43OTU5Ull3TWE2bGxCbC9LVnBBd1RmcHJxcldwNXpBZU5nMmpIRWVHby9lQlhsdGtwbEFlc3BlYkFNSVNpK3pwZkdXMS85cnQ4V1Q0S3A0WWxnaUpTUDVDNGc2RlhDeUwvMHZMeXdTWXFoL2FLc2c4NjlGZ1VPMWhtTTFaNldmdz09PC9Nb2R1bHVzPjxFeHBvbmVudD5BUUFCPC9FeHBvbmVudD48L1JTQUtleVZhbHVlPjwvS2V5VmFsdWU+PC9LZXlJbmZvPjwvU2lnbmF0dXJlPjwvcm9vdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9yc2EyMDQ4X3NoYTFfZXhjLWMxNG4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvcnNhMjA0OF9zaGExX2V4Yy1jMTRuLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MThiYTg3Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvcnNhMjA0OF9zaGExX2V4Yy1jMTRuLnhtbApAQCAtMCwwICsxLDMgQEAKKzxyb290PgorCTxlbGVtZW50MT50ZXN0PC9lbGVtZW50MT4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPjxSZWZlcmVuY2UgVVJJPSIiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+bFltMldkSVlWaUlVcHovTGxETW9UVVU4UEVnPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5WZXdsWkhFNzY1YktXK1RuMGtXdTdzdForOG5XUWR6eURkaWh6VlJpbmVFQUdSSXVzMGFTczdVRVQrZ3RJZGhJN2EvcW5adm51bTdYcVRkU1pqeFJuRFVOdnRqOXJXbGoxLzA2Nko4SGVlUFp3dllRVE1raEFlOGlsTGJVaCtlYnIwOVZ4ald2SmxSanA3R3V5V3plWnBDUGZYVDBtS2hTeVJKSzFRNzE4RXo2MWNBV0VaZ0E3MVBqeGxmd21oR3JVMTNIMWVsRFVIUzJ2dGt5NGVyNlJ3aGZ1anhTYjZ0RlF6b0w5S3pvMktyVWZRMFpBSUkwZG9SdG5UOWdrSi9rMHR1VDBIK05RdzUyN1N3T0x4bmNIUlM5d2NuQndmeE54M1hUblBLZnVQZ3JpWjBYVk4vSWJGVGVCYVRNNGg5WnB3MWQ4UTdqZENyeWtybGNwT1I5NkE9PTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PEtleVZhbHVlPjxSU0FLZXlWYWx1ZT48TW9kdWx1cz51dS82WWw5TWtQNVdJcTFtM2RySDBzOGVzUjBZZTNXb3dmdmkzdXR6U3pVRnM1OUs2SDBsZzRka2JMOVk3NHBESUxwTEJjVnlENFZqTG12YjB4UnpBVXJobUdpWHd3TUN3SkZGTjdxZ0p1M3ZNaHRBNE9pbXlabG52WHJHbkxQQTVtUmU5NXBnRWRFUnF3Y2daVWdrTG1FbEtGQzdVQ1NHZFNNbXZsZWxYc3hwNkFUZUMxVXg2QlV3a0lFWlBuaDRxcnorN0VONUo5TzVIN3FOcWc0UHBuNzk1OVJZd01hNmxsQmwvS1ZwQXdUZnBycXJXcDV6QWVOZzJqSEVlR28vZUJYbHRrcGxBZXNwZWJBTUlTaSt6cGZHVzEvOXJ0OFdUNEtwNFlsZ2lKU1A1QzRnNkZYQ3lMLzB2THl3U1lxaC9hS3NnODY5RmdVTzFobU0xWjZXZnc9PTwvTW9kdWx1cz48RXhwb25lbnQ+QVFBQjwvRXhwb25lbnQ+PC9SU0FLZXlWYWx1ZT48L0tleVZhbHVlPjwvS2V5SW5mbz48L1NpZ25hdHVyZT48L3Jvb3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvcnNhMjA0OF9zaGEyNTZfYzE0bi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9yc2EyMDQ4X3NoYTI1Nl9jMTRuLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmUwYmZlCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvcnNhMjA0OF9zaGEyNTZfYzE0bi54bWwKQEAgLTAsMCArMSwzIEBACis8cm9vdD4KKwk8ZWxlbWVudDE+dGVzdDwvZWxlbWVudDE+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48UmVmZXJlbmNlIFVSST0iIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxEaWdlc3RWYWx1ZT5lZXFQZG9jY09saUQyVE5FOE9Hb0VEbnR3NXpPSnpwdVNkVGZVNjR2RUFBPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5lUE1SdUV5dWJWWmMzbGJHeUNlTm92Y05RV0lRMzBtSzQzb2U5ZDdVT045WEd4djlJUlRkZkQzOXRLdHg4S2N1cEhvOXNCTFErQXpZc2J2SDBjQnVKSSt5dmdiakZ0WU0rdzdOS1FsaERqUWJCSFJKSHR0VHlidTBGQUlRR2tJZ3k2RnBwL2pVaHE2OTZhTXl2dzV0Mm9zT3Z4K0RHeHpiUjNGRzl5Sy9ycFJiK09qa1dReXU5WGdLdFFadXozWWh5dkFNcG41RGovWU5FV1NQOEtYRXJodjUyQldIeWZEeFU3aU9rZy9neDhqbURNQUgvN0ZvK3BNYWpKYzRmSVV1a2lWSXVEOTIzM1BPdkdqNHBTVEN4djF4UkloQkxuUG1DUGowN3BKMXFyWVJrbmpoTWJGSGlreURKS2ZGYm5iMmVxbDY0QStyMS9XbzJvOHhKNTA3cmc9PTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PEtleVZhbHVlPjxSU0FLZXlWYWx1ZT48TW9kdWx1cz51dS82WWw5TWtQNVdJcTFtM2RySDBzOGVzUjBZZTNXb3dmdmkzdXR6U3pVRnM1OUs2SDBsZzRka2JMOVk3NHBESUxwTEJjVnlENFZqTG12YjB4UnpBVXJobUdpWHd3TUN3SkZGTjdxZ0p1M3ZNaHRBNE9pbXlabG52WHJHbkxQQTVtUmU5NXBnRWRFUnF3Y2daVWdrTG1FbEtGQzdVQ1NHZFNNbXZsZWxYc3hwNkFUZUMxVXg2QlV3a0lFWlBuaDRxcnorN0VONUo5TzVIN3FOcWc0UHBuNzk1OVJZd01hNmxsQmwvS1ZwQXdUZnBycXJXcDV6QWVOZzJqSEVlR28vZUJYbHRrcGxBZXNwZWJBTUlTaSt6cGZHVzEvOXJ0OFdUNEtwNFlsZ2lKU1A1QzRnNkZYQ3lMLzB2THl3U1lxaC9hS3NnODY5RmdVTzFobU0xWjZXZnc9PTwvTW9kdWx1cz48RXhwb25lbnQ+QVFBQjwvRXhwb25lbnQ+PC9SU0FLZXlWYWx1ZT48L0tleVZhbHVlPjwvS2V5SW5mbz48L1NpZ25hdHVyZT48L3Jvb3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvcnNhMjA0OF9zaGEyNTZfZXhjLWMxNG4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvcnNhMjA0OF9zaGEyNTZfZXhjLWMxNG4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5NmQxYTAKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9yc2EyMDQ4X3NoYTI1Nl9leGMtYzE0bi54bWwKQEAgLTAsMCArMSwzIEBACis8cm9vdD4KKwk8ZWxlbWVudDE+dGVzdDwvZWxlbWVudDE+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PFJlZmVyZW5jZSBVUkk9IiI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48RGlnZXN0VmFsdWU+ZWVxUGRvY2NPbGlEMlRORThPR29FRG50dzV6T0p6cHVTZFRmVTY0dkVBQT08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+RFEvMUxQYXB2M24vRi9pdS9aQTlhWEpVaGJmd1hEY1A4bkZJZlR6N1hBdXo2VDBSYm5ncXhmRW5TME9FQWtDelR0bDdZeUR1TFk5K1l3SUxYeng1cEl2T3Z2d253blZmZUpVd1JlVmxXb00zeDM3ZFJPdittRjZEYks2T2tTWWFRaDVKRnhGOWpKTWZzR0h3R2VINmpjZzY3SVNoOFNIbjNLNWt4Y25USkl3SGlVS1RQWm1oZnRoVXppcGlVdkJDR0RONkZMTWZtbXg2bGI0SVlyQ2JsUjBEUld5Smh1VCtBWnVpRXp5MThUUjErYmQwQVo3R1dZVXNqaUdGK3JEWlpETEdvdnlMMTkwbDcyM0ozYTBXcGVGelZ1a1g3K0kyS3BqeE9HRlpORWpRcnF2bytDc2tweTQ2bW5QM2lxL2xrWUhoRHd6cWlwRUk5c1VVTTZvT0xBPT08L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxLZXlWYWx1ZT48UlNBS2V5VmFsdWU+PE1vZHVsdXM+dXUvNllsOU1rUDVXSXExbTNkckgwczhlc1IwWWUzV293ZnZpM3V0elN6VUZzNTlLNkgwbGc0ZGtiTDlZNzRwRElMcExCY1Z5RDRWakxtdmIweFJ6QVVyaG1HaVh3d01Dd0pGRk43cWdKdTN2TWh0QTRPaW15WmxudlhyR25MUEE1bVJlOTVwZ0VkRVJxd2NnWlVna0xtRWxLRkM3VUNTR2RTTW12bGVsWHN4cDZBVGVDMVV4NkJVd2tJRVpQbmg0cXJ6KzdFTjVKOU81SDdxTnFnNFBwbjc5NTlSWXdNYTZsbEJsL0tWcEF3VGZwcnFyV3A1ekFlTmcyakhFZUdvL2VCWGx0a3BsQWVzcGViQU1JU2krenBmR1cxLzlydDhXVDRLcDRZbGdpSlNQNUM0ZzZGWEN5TC8wdkx5d1NZcWgvYUtzZzg2OUZnVU8xaG1NMVo2V2Z3PT08L01vZHVsdXM+PEV4cG9uZW50PkFRQUI8L0V4cG9uZW50PjwvUlNBS2V5VmFsdWU+PC9LZXlWYWx1ZT48L0tleUluZm8+PC9TaWduYXR1cmU+PC9yb290PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L3JzYTIwNDhfc2hhMzg0X2MxNG4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvcnNhMjA0OF9zaGEzODRfYzE0bi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWVkMTIyMQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L3JzYTIwNDhfc2hhMzg0X2MxNG4ueG1sCkBAIC0wLDAgKzEsMyBAQAorPHJvb3Q+CisJPGVsZW1lbnQxPnRlc3Q8L2VsZW1lbnQxPgorPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMzg0Ii8+PFJlZmVyZW5jZSBVUkk9IiI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNzaGEzODQiLz48RGlnZXN0VmFsdWU+dFdSQm9BaWlaSEJxaVNXK1U4M1l2QjBJNk1RNm5RVlhtL01ZZWhTTjFoR2c5WW1mcmhld3JYUG9nc0JRUzZHNTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5kS1Y3aWhYR2lSU0NXTGh2eWp3cG5SampYdmpCVGlVYVdxUkVvYXFjT0Y3dzQzVGZveVhuNHd2ZEZsa2VQV3F0eUY2VE9XUGsxK0NqMkNHYzdpNXh4Mkh1UUdtTVJNeUd3R0RSY2ZHZGNVVzRIWUxTN09iNE55NFpIRWppREd6MHNiN0tNRWlTMmQvNWM4RStjKzZac05iUkh1RDBRYlpQd2NFajhvOXdvMW00QkV5NlVqTlZZcEVEQS9pSnRlenhsQnVHTnZhMEtCdmExN2JVOFR1ckMwdEFiU1h6aGtpdFZzclJFNjQvL29CazBPcTBCV2pyeEwzZEx5blZ2bGdmdnhDaEVzNnBBTlNlWUZjK2o1NDZTa0tPVTdmY2ZQYUhiU2JtY3hVcEJaK0JpcGcrYnlpRkNVOEY2cDVPc2ltbVVnTWIrWGVzWkpkUmR3NzIrVEg2YXc9PTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PEtleVZhbHVlPjxSU0FLZXlWYWx1ZT48TW9kdWx1cz51dS82WWw5TWtQNVdJcTFtM2RySDBzOGVzUjBZZTNXb3dmdmkzdXR6U3pVRnM1OUs2SDBsZzRka2JMOVk3NHBESUxwTEJjVnlENFZqTG12YjB4UnpBVXJobUdpWHd3TUN3SkZGTjdxZ0p1M3ZNaHRBNE9pbXlabG52WHJHbkxQQTVtUmU5NXBnRWRFUnF3Y2daVWdrTG1FbEtGQzdVQ1NHZFNNbXZsZWxYc3hwNkFUZUMxVXg2QlV3a0lFWlBuaDRxcnorN0VONUo5TzVIN3FOcWc0UHBuNzk1OVJZd01hNmxsQmwvS1ZwQXdUZnBycXJXcDV6QWVOZzJqSEVlR28vZUJYbHRrcGxBZXNwZWJBTUlTaSt6cGZHVzEvOXJ0OFdUNEtwNFlsZ2lKU1A1QzRnNkZYQ3lMLzB2THl3U1lxaC9hS3NnODY5RmdVTzFobU0xWjZXZnc9PTwvTW9kdWx1cz48RXhwb25lbnQ+QVFBQjwvRXhwb25lbnQ+PC9SU0FLZXlWYWx1ZT48L0tleVZhbHVlPjwvS2V5SW5mbz48L1NpZ25hdHVyZT48L3Jvb3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvcnNhMjA0OF9zaGEzODRfZXhjLWMxNG4ueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvcnNhMjA0OF9zaGEzODRfZXhjLWMxNG4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhNWVjNjgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9yc2EyMDQ4X3NoYTM4NF9leGMtYzE0bi54bWwKQEAgLTAsMCArMSwzIEBACis8cm9vdD4KKwk8ZWxlbWVudDE+dGVzdDwvZWxlbWVudDE+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMzg0Ii8+PFJlZmVyZW5jZSBVUkk9IiI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNzaGEzODQiLz48RGlnZXN0VmFsdWU+dFdSQm9BaWlaSEJxaVNXK1U4M1l2QjBJNk1RNm5RVlhtL01ZZWhTTjFoR2c5WW1mcmhld3JYUG9nc0JRUzZHNTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5vcktmalJPaFRnaElWemJCMnAyWFpTNkc4S2h3ZEZnclFoRlFoVEN2dTRleGdncHAxa3NEcmVrWmZHTkRkQzVLOW5vN3Z3SDY4azBtUC9kZWcvMlM5UWVQeUo2UTdUQmtNaGNnTElPQnZOb2FVVUxjdmY3NE13TnNkZ3NBWUoxVWIzOE92dDNWVGFkQXFZRGxWcFhMaHAxZ3FQQmhRdVBkelFRcTVhdFBSZHhDbHlnR2NRNGRXVEFlaHRjWE9FQkFkeUQwWlZYM0dLdjJ6TDY0L3ZaODBtSXdkV2FOOElWSWJWV0E4NGpYL1pYTUw2ZE10VndMbkRmelZnS3h6NGplcklYM2t0R1pydFUrSGpZUFFiOEF5RFZadTE3NnZ4VlJ3TEk0OWNoUlZzY1VDbmtTcUpLMXA0QW03emZKa0hRaDhsNExpNUVKbWpyTkdJYnZCd1FTWkE9PTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PEtleVZhbHVlPjxSU0FLZXlWYWx1ZT48TW9kdWx1cz51dS82WWw5TWtQNVdJcTFtM2RySDBzOGVzUjBZZTNXb3dmdmkzdXR6U3pVRnM1OUs2SDBsZzRka2JMOVk3NHBESUxwTEJjVnlENFZqTG12YjB4UnpBVXJobUdpWHd3TUN3SkZGTjdxZ0p1M3ZNaHRBNE9pbXlabG52WHJHbkxQQTVtUmU5NXBnRWRFUnF3Y2daVWdrTG1FbEtGQzdVQ1NHZFNNbXZsZWxYc3hwNkFUZUMxVXg2QlV3a0lFWlBuaDRxcnorN0VONUo5TzVIN3FOcWc0UHBuNzk1OVJZd01hNmxsQmwvS1ZwQXdUZnBycXJXcDV6QWVOZzJqSEVlR28vZUJYbHRrcGxBZXNwZWJBTUlTaSt6cGZHVzEvOXJ0OFdUNEtwNFlsZ2lKU1A1QzRnNkZYQ3lMLzB2THl3U1lxaC9hS3NnODY5RmdVTzFobU0xWjZXZnc9PTwvTW9kdWx1cz48RXhwb25lbnQ+QVFBQjwvRXhwb25lbnQ+PC9SU0FLZXlWYWx1ZT48L0tleVZhbHVlPjwvS2V5SW5mbz48L1NpZ25hdHVyZT48L3Jvb3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvcnNhMjA0OF9zaGE1MTJfYzE0bi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9yc2EyMDQ4X3NoYTUxMl9jMTRuLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTE1MWNhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvcnNhMjA0OF9zaGE1MTJfYzE0bi54bWwKQEAgLTAsMCArMSwzIEBACis8cm9vdD4KKwk8ZWxlbWVudDE+dGVzdDwvZWxlbWVudDE+Cis8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGE1MTIiLz48UmVmZXJlbmNlIFVSST0iIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTUxMiIvPjxEaWdlc3RWYWx1ZT5RbExCa3BYV0U3SHBYVERmNnBkRWcxNXpPK1I2YnQ5K2lFN3k5cEhTUGFTVDhoZmxGdDFMTTRJemJJek1tZ2ZTczRIeTZ5NHhFY21qemdpT3pUd3lKZz09PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPmVZakZoYzh1dzNyVHpGTXRqdkdLVzZhTWFXbUhNRENjN0NiQ2xUbmdjYnZVZ2dHajN2UGduaEJWVms4MTZ6bGl3QWt6Z25oZGVaeVp1elQzNnB3WTRBdjdLSkFRbkFyQU14ZjVZa3Y2U0NuVEh4OU4xSnMrbnB3N3RWQnMvZkluUHFxQ2dmekFiWWZJemlReWZ1RUVTQ0xuSU1GamJGUnViYmFRbFZoYk1QbGZPbTF5dWVZTnhvLzBTdXZZTU9WUjVDWXZlaWcxTWhPOUVLakpoT2huVXEyZENjOWNKV1dLQm10K25MKzB6S3ZhWjlGWlB0MVNSamJWQmVoVUk5MSt3Qi9xZTZZVG8rd28rdVlIUjdyWXkraU85UG1iRlBHMnUwaU9IMGo1Q29NbVJmd2d4a0JxbHp0dDlXUlpMQlQ3NjVNbHp0Q0d5MHNnM3ZONTYxQzdlZz09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48S2V5VmFsdWU+PFJTQUtleVZhbHVlPjxNb2R1bHVzPnV1LzZZbDlNa1A1V0lxMW0zZHJIMHM4ZXNSMFllM1dvd2Z2aTN1dHpTelVGczU5SzZIMGxnNGRrYkw5WTc0cERJTHBMQmNWeUQ0VmpMbXZiMHhSekFVcmhtR2lYd3dNQ3dKRkZON3FnSnUzdk1odEE0T2lteVpsbnZYckduTFBBNW1SZTk1cGdFZEVScXdjZ1pVZ2tMbUVsS0ZDN1VDU0dkU01tdmxlbFhzeHA2QVRlQzFVeDZCVXdrSUVaUG5oNHFyeis3RU41SjlPNUg3cU5xZzRQcG43OTU5Ull3TWE2bGxCbC9LVnBBd1RmcHJxcldwNXpBZU5nMmpIRWVHby9lQlhsdGtwbEFlc3BlYkFNSVNpK3pwZkdXMS85cnQ4V1Q0S3A0WWxnaUpTUDVDNGc2RlhDeUwvMHZMeXdTWXFoL2FLc2c4NjlGZ1VPMWhtTTFaNldmdz09PC9Nb2R1bHVzPjxFeHBvbmVudD5BUUFCPC9FeHBvbmVudD48L1JTQUtleVZhbHVlPjwvS2V5VmFsdWU+PC9LZXlJbmZvPjwvU2lnbmF0dXJlPjwvcm9vdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9yc2EyMDQ4X3NoYTUxMl9leGMtYzE0bi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9yc2EyMDQ4X3NoYTUxMl9leGMtYzE0bi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg5NGViMgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L3JzYTIwNDhfc2hhNTEyX2V4Yy1jMTRuLnhtbApAQCAtMCwwICsxLDMgQEAKKzxyb290PgorCTxlbGVtZW50MT50ZXN0PC9lbGVtZW50MT4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGE1MTIiLz48UmVmZXJlbmNlIFVSST0iIj48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTUxMiIvPjxEaWdlc3RWYWx1ZT5RbExCa3BYV0U3SHBYVERmNnBkRWcxNXpPK1I2YnQ5K2lFN3k5cEhTUGFTVDhoZmxGdDFMTTRJemJJek1tZ2ZTczRIeTZ5NHhFY21qemdpT3pUd3lKZz09PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPmhmRmcyc3NMRjdDY013Z1dDamFRbE0vVXdEd1FBYzlOTXdBcVg1ZGI4TGdnZnhmTHE5MUdYMnd3dWdXMUhSSVh1N1FFV1FRbWRoejM4WjJVeXl3NmFCVEZ1WXpESmZQWG0rTCtLb21pajgwT2dpWVhWR3Y2YU84TkNhaStISlN0Y3JTbFZ6RDliaVBsTzFnNEJnbmQvRHdtOUpsSVJXbnpWRHV2U0R4WTAwbzA1N1pFWStqbmFtNmt3dmY1bWlreUloRXhoalQ0K3JIdUFHTXo3b2U5MVgxOXB4aGkwS2RQNTYzT3FWeStqVVhNSi9mQVVOeE5TOHdxWmhhb29PMUF6eUtCa2hFOWEwRVpJNWFDQnFVOTVuRGJXYk14UkFxaVJ5d0JQK2xpcDBYOHEzRzkxbmRXdFBmLzhTTnE3UG9pUkxQRVlxOUFEODBlSTdUUFdIZ0NvQT09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48S2V5VmFsdWU+PFJTQUtleVZhbHVlPjxNb2R1bHVzPnV1LzZZbDlNa1A1V0lxMW0zZHJIMHM4ZXNSMFllM1dvd2Z2aTN1dHpTelVGczU5SzZIMGxnNGRrYkw5WTc0cERJTHBMQmNWeUQ0VmpMbXZiMHhSekFVcmhtR2lYd3dNQ3dKRkZON3FnSnUzdk1odEE0T2lteVpsbnZYckduTFBBNW1SZTk1cGdFZEVScXdjZ1pVZ2tMbUVsS0ZDN1VDU0dkU01tdmxlbFhzeHA2QVRlQzFVeDZCVXdrSUVaUG5oNHFyeis3RU41SjlPNUg3cU5xZzRQcG43OTU5Ull3TWE2bGxCbC9LVnBBd1RmcHJxcldwNXpBZU5nMmpIRWVHby9lQlhsdGtwbEFlc3BlYkFNSVNpK3pwZkdXMS85cnQ4V1Q0S3A0WWxnaUpTUDVDNGc2RlhDeUwvMHZMeXdTWXFoL2FLc2c4NjlGZ1VPMWhtTTFaNldmdz09PC9Nb2R1bHVzPjxFeHBvbmVudD5BUUFCPC9FeHBvbmVudD48L1JTQUtleVZhbHVlPjwvS2V5VmFsdWU+PC9LZXlJbmZvPjwvU2lnbmF0dXJlPjwvcm9vdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9zZWNyZXQtc2hhMS5obWFjIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvc2VjcmV0LXNoYTEuaG1hYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmViMjk5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvc2VjcmV0LXNoYTEuaG1hYwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9zZWNyZXQtc2hhMjU2LmhtYWMgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9zZWNyZXQtc2hhMjU2LmhtYWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFlNmU0NAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L3NlY3JldC1zaGEyNTYuaG1hYwpAQCAtMCwwICsxLDUgQEAKKw0KKwsMDQorDqQQERITtqcWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj8NCisLDA0KKw6kEBESE7anFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvc2VjcmV0LXNoYTM4NC5obWFjIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9taWNyb3NvZnQvc2VjcmV0LXNoYTM4NC5obWFjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0ZWExZDQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9zZWNyZXQtc2hhMzg0LmhtYWMKQEAgLTAsMCArMSw2IEBACisLDA0KKw6kEBESE7anFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/DQorCwwNCisOpBAREhO2pxYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+Pw0KKwsMDQorDqQQERITtqcWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9zZWNyZXQtc2hhNTEyLmhtYWMgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL21pY3Jvc29mdC9zZWNyZXQtc2hhNTEyLmhtYWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDcxYjE2NQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvbWljcm9zb2Z0L3NlY3JldC1zaGE1MTIuaG1hYwpAQCAtMCwwICsxLDEwIEBACisLDA0KKw6kEBESE7anFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/DQorCwwNCisOpBAREhO2pxYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+Pw0KKwsMDQorDqQQERITtqcWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj8NCisLDA0KKw6kEBESE7anFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/DQorCwwNCisOpBAREhO2pxYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+PwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL2luZGV4Lmh0bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlYTUxZjcKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9pbmRleC5odG1sCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iCisiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvMjAwOC94bWxzZWMvR3JvdXAvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgLzIwMDgveG1sc2VjL0dyb3VwL2ludGVyb3AveG1sZHNpZzExL29yYWNsZTwvaDE+Cis8dGFibGU+PHRyPjx0aD48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+PHRyPjx0aCBjb2xzcGFuPSI1Ij48aHIgLz48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltESVJdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0iLzIwMDgveG1sc2VjL0dyb3VwL2ludGVyb3AveG1sZHNpZzExLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0ic2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGEyNTYueG1sIj5zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTI1Ni54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wOC1NYXktMjAwOSAwNTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NTQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9InNpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMzg0LnhtbCI+c2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGEzODQueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDgtTWF5LTIwMDkgMDU6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc0IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJzaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTUxMi54bWwiPnNpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhNTEyLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA4LU1heS0yMDA5IDA1OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc5OCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0ic2lnbmF0dXJlLWVudmVsb3BpbmctcDI1Nl9zaGExLnhtbCI+c2lnbmF0dXJlLWVudmVsb3BpbmctcDI1Nl9zaGExLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwLU1heS0yMDA5IDA0OjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0ic2lnbmF0dXJlLWVudmVsb3BpbmctcDI1Nl9zaGExXzQwNTAueG1sIj5zaWduYXR1cmUtZW52ZWxvcGluZy1wMjU2X3NoYTFfNDA1MC54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMC1NYXktMjAwOSAwNDoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjFLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9InNpZ25hdHVyZS1lbnZlbG9waW5nLXAyNTZfc2hhMjU2LnhtbCI+c2lnbmF0dXJlLWVudmVsb3BpbmctcDI1Nl9zaGEyNTYueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAtTWF5LTIwMDkgMDQ6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJzaWduYXR1cmUtZW52ZWxvcGluZy1wMjU2X3NoYTI1Nl80MDUwLnhtbCI+c2lnbmF0dXJlLWVudmVsb3BpbmctcDI1Nl9zaGEyNTZfNDA1MC54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMC1NYXktMjAwOSAwNDoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9InNpZ25hdHVyZS1lbnZlbG9waW5nLXAyNTZfc2hhMzg0LnhtbCI+c2lnbmF0dXJlLWVudmVsb3BpbmctcDI1Nl9zaGEzODQueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAtTWF5LTIwMDkgMDQ6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJzaWduYXR1cmUtZW52ZWxvcGluZy1wMjU2X3NoYTM4NF80MDUwLnhtbCI+c2lnbmF0dXJlLWVudmVsb3BpbmctcDI1Nl9zaGEzODRfNDA1MC54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMC1NYXktMjAwOSAwNDoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9InNpZ25hdHVyZS1lbnZlbG9waW5nLXAyNTZfc2hhNTEyLnhtbCI+c2lnbmF0dXJlLWVudmVsb3BpbmctcDI1Nl9zaGE1MTIueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAtTWF5LTIwMDkgMDQ6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJzaWduYXR1cmUtZW52ZWxvcGluZy1wMjU2X3NoYTUxMl80MDUwLnhtbCI+c2lnbmF0dXJlLWVudmVsb3BpbmctcDI1Nl9zaGE1MTJfNDA1MC54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMC1NYXktMjAwOSAwNDoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9InNpZ25hdHVyZS1lbnZlbG9waW5nLXAzODRfc2hhMS54bWwiPnNpZ25hdHVyZS1lbnZlbG9waW5nLXAzODRfc2hhMS54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMC1NYXktMjAwOSAwNDoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjFLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9InNpZ25hdHVyZS1lbnZlbG9waW5nLXAzODRfc2hhMV80MDUwLnhtbCI+c2lnbmF0dXJlLWVudmVsb3BpbmctcDM4NF9zaGExXzQwNTAueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAtTWF5LTIwMDkgMDQ6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJzaWduYXR1cmUtZW52ZWxvcGluZy1wMzg0X3NoYTI1Ni54bWwiPnNpZ25hdHVyZS1lbnZlbG9waW5nLXAzODRfc2hhMjU2LnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwLU1heS0yMDA5IDA0OjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMUs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0ic2lnbmF0dXJlLWVudmVsb3BpbmctcDM4NF9zaGEyNTZfNDA1MC54bWwiPnNpZ25hdHVyZS1lbnZlbG9waW5nLXAzODRfc2hhMjU2XzQwNTAueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAtTWF5LTIwMDkgMDQ6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJzaWduYXR1cmUtZW52ZWxvcGluZy1wMzg0X3NoYTM4NC54bWwiPnNpZ25hdHVyZS1lbnZlbG9waW5nLXAzODRfc2hhMzg0LnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwLU1heS0yMDA5IDA0OjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMUs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0ic2lnbmF0dXJlLWVudmVsb3BpbmctcDM4NF9zaGEzODRfNDA1MC54bWwiPnNpZ25hdHVyZS1lbnZlbG9waW5nLXAzODRfc2hhMzg0XzQwNTAueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAtTWF5LTIwMDkgMDQ6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJzaWduYXR1cmUtZW52ZWxvcGluZy1wMzg0X3NoYTUxMi54bWwiPnNpZ25hdHVyZS1lbnZlbG9waW5nLXAzODRfc2hhNTEyLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwLU1heS0yMDA5IDA0OjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMUs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0ic2lnbmF0dXJlLWVudmVsb3BpbmctcDM4NF9zaGE1MTJfNDA1MC54bWwiPnNpZ25hdHVyZS1lbnZlbG9waW5nLXAzODRfc2hhNTEyXzQwNTAueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAtTWF5LTIwMDkgMDQ6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJzaWduYXR1cmUtZW52ZWxvcGluZy1wNTIxX3NoYTEueG1sIj5zaWduYXR1cmUtZW52ZWxvcGluZy1wNTIxX3NoYTEueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAtTWF5LTIwMDkgMDQ6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJzaWduYXR1cmUtZW52ZWxvcGluZy1wNTIxX3NoYTFfNDA1MC54bWwiPnNpZ25hdHVyZS1lbnZlbG9waW5nLXA1MjFfc2hhMV80MDUwLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwLU1heS0yMDA5IDA0OjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0ic2lnbmF0dXJlLWVudmVsb3BpbmctcDUyMV9zaGEyNTYueG1sIj5zaWduYXR1cmUtZW52ZWxvcGluZy1wNTIxX3NoYTI1Ni54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMC1NYXktMjAwOSAwNDoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9InNpZ25hdHVyZS1lbnZlbG9waW5nLXA1MjFfc2hhMjU2XzQwNTAueG1sIj5zaWduYXR1cmUtZW52ZWxvcGluZy1wNTIxX3NoYTI1Nl80MDUwLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwLU1heS0yMDA5IDA0OjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0ic2lnbmF0dXJlLWVudmVsb3BpbmctcDUyMV9zaGEzODQueG1sIj5zaWduYXR1cmUtZW52ZWxvcGluZy1wNTIxX3NoYTM4NC54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMC1NYXktMjAwOSAwNDoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9InNpZ25hdHVyZS1lbnZlbG9waW5nLXA1MjFfc2hhMzg0XzQwNTAueG1sIj5zaWduYXR1cmUtZW52ZWxvcGluZy1wNTIxX3NoYTM4NF80MDUwLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwLU1heS0yMDA5IDA0OjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0ic2lnbmF0dXJlLWVudmVsb3BpbmctcDUyMV9zaGE1MTIueG1sIj5zaWduYXR1cmUtZW52ZWxvcGluZy1wNTIxX3NoYTUxMi54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMC1NYXktMjAwOSAwNDoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9InNpZ25hdHVyZS1lbnZlbG9waW5nLXA1MjFfc2hhNTEyXzQwNTAueG1sIj5zaWduYXR1cmUtZW52ZWxvcGluZy1wNTIxX3NoYTUxMl80MDUwLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwLU1heS0yMDA5IDA0OjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0ic2lnbmF0dXJlLWVudmVsb3BpbmctcnNhLXNoYTI1Ni54bWwiPnNpZ25hdHVyZS1lbnZlbG9waW5nLXJzYS1zaGEyNTYueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDgtTWF5LTIwMDkgMDU6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJzaWduYXR1cmUtZW52ZWxvcGluZy1yc2Ffc2hhMzg0LnhtbCI+c2lnbmF0dXJlLWVudmVsb3BpbmctcnNhX3NoYTM4NC54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wOC1NYXktMjAwOSAwNTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9InNpZ25hdHVyZS1lbnZlbG9waW5nLXJzYV9zaGE1MTIueG1sIj5zaWduYXR1cmUtZW52ZWxvcGluZy1yc2Ffc2hhNTEyLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA4LU1heS0yMDA5IDA1OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0ic2lnbmF0dXJlLWVudmVsb3Bpbmctc2hhMjU2LXJzYS1zaGEyNTYueG1sIj5zaWduYXR1cmUtZW52ZWxvcGluZy1zaGEyNTYtcnNhLXNoYTI1Ni54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wOC1NYXktMjAwOSAwNTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9InNpZ25hdHVyZS1lbnZlbG9waW5nLXNoYTM4NC1yc2Ffc2hhMjU2LnhtbCI+c2lnbmF0dXJlLWVudmVsb3Bpbmctc2hhMzg0LXJzYV9zaGEyNTYueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDgtTWF5LTIwMDkgMDU6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJzaWduYXR1cmUtZW52ZWxvcGluZy1zaGE1MTItcnNhX3NoYTI1Ni54bWwiPnNpZ25hdHVyZS1lbnZlbG9waW5nLXNoYTUxMi1yc2Ffc2hhMjU2LnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA4LU1heS0yMDA5IDA1OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRoIGNvbHNwYW49IjUiPjxociAvPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8cHJlPgorSE1BQyBrZXkgaXMgInRlc3RrZXkiPC9wcmU+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGEyNTYueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGEyNTYueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxN2U2MjQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTI1Ni54bWwKQEAgLTAsMCArMSBAQAorPGRzaWc6U2lnbmF0dXJlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjaG1hYy1zaGEyNTYiLz48ZHNpZzpSZWZlcmVuY2UgVVJJPSIjRFNpZy5PYmplY3RfSTA4VjNjTUp2SG5lRnVTU1ZSYjg3QTIyIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0Ij48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPm15clQ1cUVmQTdXZW15MldPTkNaRzY2YzVRRT08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6U2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZT5zOG50QlMvMzVpWUdaWWcxNk5yVTR2d3hkVXVmRFh3L1lWTjVFOUFJVUswPTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48ZHNpZzpPYmplY3QgSWQ9IkRTaWcuT2JqZWN0X0kwOFYzY01KdkhuZUZ1U1NWUmI4N0EyMiIgTWltZVR5cGU9InRleHQveG1sIj48V2ViPnVwIHVwIGFuZCBhd2F5PC9XZWI+PC9kc2lnOk9iamVjdD48L2RzaWc6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMzg0LnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMzg0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjM3MTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGEzODQueG1sCkBAIC0wLDAgKzEgQEAKKzxkc2lnOlNpZ25hdHVyZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2htYWMtc2hhMzg0Ii8+PGRzaWc6UmVmZXJlbmNlIFVSST0iI0RTaWcuT2JqZWN0XzBxOHdqbzBxUDJvb3VtSnp5R1FXelEyMiIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT5Qc05HYnF6MDZ6ekpjZmtCYXBsQU52cHloWEk9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+allIaU1jcHI1OVByalY4cm1uZ1FjeHlkZVYxM0xNWG10OGlNdG1icFFVVE0rd1hPMWFIS3lmbnNIL1hUV1hXNjwvZHNpZzpTaWduYXR1cmVWYWx1ZT48ZHNpZzpPYmplY3QgSWQ9IkRTaWcuT2JqZWN0XzBxOHdqbzBxUDJvb3VtSnp5R1FXelEyMiIgTWltZVR5cGU9InRleHQveG1sIj48V2ViPnVwIHVwIGFuZCBhd2F5PC9XZWI+PC9kc2lnOk9iamVjdD48L2RzaWc6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhNTEyLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhNTEyLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDhhMDkxCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGE1MTIueG1sCkBAIC0wLDAgKzEgQEAKKzxkc2lnOlNpZ25hdHVyZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2htYWMtc2hhNTEyIi8+PGRzaWc6UmVmZXJlbmNlIFVSST0iI0RTaWcuT2JqZWN0X3B4cHVHdFpmMFdDTEQ0QWdPSmJqSHcyMiIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT5md205czNIcTkrZFJ5T2Y5YW45NEZqRXc0RmM9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+d0ZvWlAzRC85SFRTMU41VlIvTDZYaDJJRDQ3emxKOW9Sc2E0Tm5Hc0h4b0NlZnBTQlg5QjdwZ2d3MTNOanBxVGdrdmQxb1VRQTJKQzZCTE5ybEN2dFE9PTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48ZHNpZzpPYmplY3QgSWQ9IkRTaWcuT2JqZWN0X3B4cHVHdFpmMFdDTEQ0QWdPSmJqSHcyMiIgTWltZVR5cGU9InRleHQveG1sIj48V2ViPnVwIHVwIGFuZCBhd2F5PC9XZWI+PC9kc2lnOk9iamVjdD48L2RzaWc6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXAyNTZfc2hhMS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1wMjU2X3NoYTEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0ZTJmOTkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1wMjU2X3NoYTEueG1sCkBAIC0wLDAgKzEgQEAKKzxkc2lnOlNpZ25hdHVyZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTEiLz48ZHNpZzpSZWZlcmVuY2UgVVJJPSIjRFNpZy5PYmplY3RfMSIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT5ReVg5RkJXeUhuNFQ1ZVRuU010eWxNdyt0TlE9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+L1VJY0IwQmlScHhzNmxUS0Vzb2FDT3VwdDNKZVNoYVY5MlRaWXo2cUZDOUF1blBxVnBOV2FybGw4OTBqWTRRTHVteC8xTU9IRCtVczliUDdRU2FsclE9PTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48ZHNpZzpLZXlJbmZvPjxkc2lnOktleVZhbHVlPjxFQ0tleVZhbHVlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDA5L3htbGRzaWcxMSMiPjxOYW1lZEN1cnZlIFVSST0idXJuOm9pZDoxLjIuODQwLjEwMDQ1LjMuMS43Ii8+PFB1YmxpY0tleT5CSi95YVhObHE0RlJPYnlKQ0JoYjVqQXo4R1Z6aW5LM2JCR0xqU0RmamJKd05meWR0Z2pubFM0RXNEbXhTUmhXeUpXcTZHSXF5NXd2bmFpQVJLMDR1QjQ9PC9QdWJsaWNLZXk+PC9FQ0tleVZhbHVlPjwvZHNpZzpLZXlWYWx1ZT48L2RzaWc6S2V5SW5mbz48ZHNpZzpPYmplY3QgSWQ9IkRTaWcuT2JqZWN0XzEiIE1pbWVUeXBlPSJ0ZXh0L3htbCI+PFdlYj51cCB1cCBhbmQgYXdheTwvV2ViPjwvZHNpZzpPYmplY3Q+PC9kc2lnOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1wMjU2X3NoYTFfNDA1MC54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1wMjU2X3NoYTFfNDA1MC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTVlZWFiOQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXAyNTZfc2hhMV80MDUwLnhtbApAQCAtMCwwICsxIEBACis8ZHNpZzpTaWduYXR1cmUgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzaWc6U2lnbmVkSW5mbz48ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48ZHNpZzpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNlY2RzYS1zaGExIi8+PGRzaWc6UmVmZXJlbmNlIFVSST0iI0RTaWcuT2JqZWN0XzEiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+UXlYOUZCV3lIbjRUNWVUblNNdHlsTXcrdE5RPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjwvZHNpZzpTaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlPmMwQ0ZzWmNETkdZTzQ5ZXh5KzlHb1B1Z2dsWkFiVE9PZHZrd3c4S2YxMUY1OHVZUEtZbEs0SGJvQjkwM3hpeGxLdTEyS0dVZ1RaTksrUER5dE1WUmJRPT08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6S2V5SW5mbz48ZHNpZzpLZXlWYWx1ZT48RUNEU0FLZXlWYWx1ZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjIj48RG9tYWluUGFyYW1ldGVycz48TmFtZWRDdXJ2ZSBVUk49InVybjpvaWQ6MS4yLjg0MC4xMDA0NS4zLjEuNyIvPjwvRG9tYWluUGFyYW1ldGVycz48UHVibGljS2V5PjxYIFZhbHVlPSI3MjM0NjA0NzcwODg4MzA5OTA3Mzg1NzM1NzkxNzg0MTcxNTc1NTk0MDE3NTAwNDkyNzcxNzMxNDEyODA4MjUyNzk4MTY4Mzk3ODg2NCIvPjxZIFZhbHVlPSIyNDQxODkxNDkxNzA2MTc3NjkxODkzNjIzMTY1NzA5MDM0NDMwODQxMzc1MzUyMDA2OTczODQ4MDE4Mjg3MTQ3NDA1Njg2MDMxNzcyNiIvPjwvUHVibGljS2V5PjwvRUNEU0FLZXlWYWx1ZT48L2RzaWc6S2V5VmFsdWU+PC9kc2lnOktleUluZm8+PGRzaWc6T2JqZWN0IElkPSJEU2lnLk9iamVjdF8xIiBNaW1lVHlwZT0idGV4dC94bWwiPjxXZWI+dXAgdXAgYW5kIGF3YXk8L1dlYj48L2RzaWc6T2JqZWN0PjwvZHNpZzpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcDI1Nl9zaGEyNTYueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcDI1Nl9zaGEyNTYueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyYTk3NTAKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1wMjU2X3NoYTI1Ni54bWwKQEAgLTAsMCArMSBAQAorPGRzaWc6U2lnbmF0dXJlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjZWNkc2Etc2hhMjU2Ii8+PGRzaWc6UmVmZXJlbmNlIFVSST0iI0RTaWcuT2JqZWN0XzEiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkc2lnOkRpZ2VzdFZhbHVlPnZJZ3Y3SnRQT2gzaHBlZEtLMHJtOFhIdFlDU29CWDRlRUYwWXduQjI2RXM9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+ZVl4NEltaXJ0UEcvZUpMV2dKSG9NUzMwdm9IK3RvemVyTWZ0S2JZejI3dnRZTmdzSGZBdlY0TStvRWtOZ29pYnE1cW53c08yWjhubituZEt4aFZxRmc9PTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48ZHNpZzpLZXlJbmZvPjxkc2lnOktleVZhbHVlPjxFQ0tleVZhbHVlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDA5L3htbGRzaWcxMSMiPjxOYW1lZEN1cnZlIFVSST0idXJuOm9pZDoxLjIuODQwLjEwMDQ1LjMuMS43Ii8+PFB1YmxpY0tleT5CSi95YVhObHE0RlJPYnlKQ0JoYjVqQXo4R1Z6aW5LM2JCR0xqU0RmamJKd05meWR0Z2pubFM0RXNEbXhTUmhXeUpXcTZHSXF5NXd2bmFpQVJLMDR1QjQ9PC9QdWJsaWNLZXk+PC9FQ0tleVZhbHVlPjwvZHNpZzpLZXlWYWx1ZT48L2RzaWc6S2V5SW5mbz48ZHNpZzpPYmplY3QgSWQ9IkRTaWcuT2JqZWN0XzEiIE1pbWVUeXBlPSJ0ZXh0L3htbCI+PFdlYj51cCB1cCBhbmQgYXdheTwvV2ViPjwvZHNpZzpPYmplY3Q+PC9kc2lnOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1wMjU2X3NoYTI1Nl80MDUwLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXAyNTZfc2hhMjU2XzQwNTAueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNWJjZDQKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1wMjU2X3NoYTI1Nl80MDUwLnhtbApAQCAtMCwwICsxIEBACis8ZHNpZzpTaWduYXR1cmUgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzaWc6U2lnbmVkSW5mbz48ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48ZHNpZzpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNlY2RzYS1zaGEyNTYiLz48ZHNpZzpSZWZlcmVuY2UgVVJJPSIjRFNpZy5PYmplY3RfMSIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzaWc6RGlnZXN0VmFsdWU+dklndjdKdFBPaDNocGVkS0swcm04WEh0WUNTb0JYNGVFRjBZd25CMjZFcz08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6U2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZT4vV0VEb2tBMW1YYU1ZU0dKVzhDSkV6dWN4Wncram9Fc2Y5bUc4MkI3aWhDUDdpY2szU1czT0JQeVVOc1c0Q0x1bHlFcDVtTmVldnFBUDc0T2g4WkJ6dz09PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjxkc2lnOktleUluZm8+PGRzaWc6S2V5VmFsdWU+PEVDRFNBS2V5VmFsdWUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlIyI+PERvbWFpblBhcmFtZXRlcnM+PE5hbWVkQ3VydmUgVVJOPSJ1cm46b2lkOjEuMi44NDAuMTAwNDUuMy4xLjciLz48L0RvbWFpblBhcmFtZXRlcnM+PFB1YmxpY0tleT48WCBWYWx1ZT0iNzIzNDYwNDc3MDg4ODMwOTkwNzM4NTczNTc5MTc4NDE3MTU3NTU5NDAxNzUwMDQ5Mjc3MTczMTQxMjgwODI1Mjc5ODE2ODM5Nzg4NjQiLz48WSBWYWx1ZT0iMjQ0MTg5MTQ5MTcwNjE3NzY5MTg5MzYyMzE2NTcwOTAzNDQzMDg0MTM3NTM1MjAwNjk3Mzg0ODAxODI4NzE0NzQwNTY4NjAzMTc3MjYiLz48L1B1YmxpY0tleT48L0VDRFNBS2V5VmFsdWU+PC9kc2lnOktleVZhbHVlPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdCBJZD0iRFNpZy5PYmplY3RfMSIgTWltZVR5cGU9InRleHQveG1sIj48V2ViPnVwIHVwIGFuZCBhd2F5PC9XZWI+PC9kc2lnOk9iamVjdD48L2RzaWc6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXAyNTZfc2hhMzg0LnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXAyNTZfc2hhMzg0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzFkYjI2Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcDI1Nl9zaGEzODQueG1sCkBAIC0wLDAgKzEgQEAKKzxkc2lnOlNpZ25hdHVyZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTM4NCIvPjxkc2lnOlJlZmVyZW5jZSBVUkk9IiNEU2lnLk9iamVjdF8xIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0Ij48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNzaGEzODQiLz48ZHNpZzpEaWdlc3RWYWx1ZT5RUXpXQTVvN0FqMHgrTGdsQW5TTXFhWmxVVEdpQWlXZCt3RlF3WlFpeEJUbHk3V2t6cEZyVTNweVBMTE9JbEI3PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+ZEgzem1aZ0k0TmtIMEx6ci81WUltSDlzQjBqMHJFdVZ1ZVRrQ3preTFBQWpoVmt1LytmbUZaR2hUNVFhTDliMzIwTjMrYzYzMjdCZi9aYS8rY25ObFE9PTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48ZHNpZzpLZXlJbmZvPjxkc2lnOktleVZhbHVlPjxFQ0tleVZhbHVlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDA5L3htbGRzaWcxMSMiPjxOYW1lZEN1cnZlIFVSST0idXJuOm9pZDoxLjIuODQwLjEwMDQ1LjMuMS43Ii8+PFB1YmxpY0tleT5CSi95YVhObHE0RlJPYnlKQ0JoYjVqQXo4R1Z6aW5LM2JCR0xqU0RmamJKd05meWR0Z2pubFM0RXNEbXhTUmhXeUpXcTZHSXF5NXd2bmFpQVJLMDR1QjQ9PC9QdWJsaWNLZXk+PC9FQ0tleVZhbHVlPjwvZHNpZzpLZXlWYWx1ZT48L2RzaWc6S2V5SW5mbz48ZHNpZzpPYmplY3QgSWQ9IkRTaWcuT2JqZWN0XzEiIE1pbWVUeXBlPSJ0ZXh0L3htbCI+PFdlYj51cCB1cCBhbmQgYXdheTwvV2ViPjwvZHNpZzpPYmplY3Q+PC9kc2lnOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1wMjU2X3NoYTM4NF80MDUwLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXAyNTZfc2hhMzg0XzQwNTAueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMjhmNjAKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1wMjU2X3NoYTM4NF80MDUwLnhtbApAQCAtMCwwICsxIEBACis8ZHNpZzpTaWduYXR1cmUgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzaWc6U2lnbmVkSW5mbz48ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48ZHNpZzpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNlY2RzYS1zaGEzODQiLz48ZHNpZzpSZWZlcmVuY2UgVVJJPSIjRFNpZy5PYmplY3RfMSIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjc2hhMzg0Ii8+PGRzaWc6RGlnZXN0VmFsdWU+UVF6V0E1bzdBajB4K0xnbEFuU01xYVpsVVRHaUFpV2Qrd0ZRd1pRaXhCVGx5N1drenBGclUzcHlQTExPSWxCNzwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjwvZHNpZzpTaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlPjd3NzNJbHM0ZzNOU3cvbmdiaXlHT0MvQjc5a0hWbzFmRytTTXBVaHhjL0FkK2RreWdFWk84dS9lck1RYU5XdDJJN2Y2bzNTbzJvMTFURDN5Mk5yaVlnPT08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6S2V5SW5mbz48ZHNpZzpLZXlWYWx1ZT48RUNEU0FLZXlWYWx1ZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjIj48RG9tYWluUGFyYW1ldGVycz48TmFtZWRDdXJ2ZSBVUk49InVybjpvaWQ6MS4yLjg0MC4xMDA0NS4zLjEuNyIvPjwvRG9tYWluUGFyYW1ldGVycz48UHVibGljS2V5PjxYIFZhbHVlPSI3MjM0NjA0NzcwODg4MzA5OTA3Mzg1NzM1NzkxNzg0MTcxNTc1NTk0MDE3NTAwNDkyNzcxNzMxNDEyODA4MjUyNzk4MTY4Mzk3ODg2NCIvPjxZIFZhbHVlPSIyNDQxODkxNDkxNzA2MTc3NjkxODkzNjIzMTY1NzA5MDM0NDMwODQxMzc1MzUyMDA2OTczODQ4MDE4Mjg3MTQ3NDA1Njg2MDMxNzcyNiIvPjwvUHVibGljS2V5PjwvRUNEU0FLZXlWYWx1ZT48L2RzaWc6S2V5VmFsdWU+PC9kc2lnOktleUluZm8+PGRzaWc6T2JqZWN0IElkPSJEU2lnLk9iamVjdF8xIiBNaW1lVHlwZT0idGV4dC94bWwiPjxXZWI+dXAgdXAgYW5kIGF3YXk8L1dlYj48L2RzaWc6T2JqZWN0PjwvZHNpZzpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcDI1Nl9zaGE1MTIueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcDI1Nl9zaGE1MTIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2NDkzZTMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1wMjU2X3NoYTUxMi54bWwKQEAgLTAsMCArMSBAQAorPGRzaWc6U2lnbmF0dXJlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjZWNkc2Etc2hhNTEyIi8+PGRzaWc6UmVmZXJlbmNlIFVSST0iI0RTaWcuT2JqZWN0XzEiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTUxMiIvPjxkc2lnOkRpZ2VzdFZhbHVlPkpHRzJSQTJBNHNySXhJbmJwOXhQdUpBKy9FYVRaTTZTYjFuUUNRQlU0Ynp0c1J6aTJ3WWRvUmZTWVMxc1Q1Uk5nWlpYOFlkUGZheTYyOFl3OFBLVWlRPT08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6U2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZT44NUU4Yk1lWm1JNC9Wc2daMnRmV3lMeTJNL1VubUxhR2lFckdHcTNaY3RGZThmRytzWEVmQXVaK3d4Sk5EdUVWWHN4SXJlenVodjQwRUZYbzgwVXFmQT09PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjxkc2lnOktleUluZm8+PGRzaWc6S2V5VmFsdWU+PEVDS2V5VmFsdWUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDkveG1sZHNpZzExIyI+PE5hbWVkQ3VydmUgVVJJPSJ1cm46b2lkOjEuMi44NDAuMTAwNDUuMy4xLjciLz48UHVibGljS2V5PkJKL3lhWE5scTRGUk9ieUpDQmhiNWpBejhHVnppbkszYkJHTGpTRGZqYkp3TmZ5ZHRnam5sUzRFc0RteFNSaFd5SldxNkdJcXk1d3ZuYWlBUkswNHVCND08L1B1YmxpY0tleT48L0VDS2V5VmFsdWU+PC9kc2lnOktleVZhbHVlPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdCBJZD0iRFNpZy5PYmplY3RfMSIgTWltZVR5cGU9InRleHQveG1sIj48V2ViPnVwIHVwIGFuZCBhd2F5PC9XZWI+PC9kc2lnOk9iamVjdD48L2RzaWc6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXAyNTZfc2hhNTEyXzQwNTAueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcDI1Nl9zaGE1MTJfNDA1MC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWEzNWQyZgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXAyNTZfc2hhNTEyXzQwNTAueG1sCkBAIC0wLDAgKzEgQEAKKzxkc2lnOlNpZ25hdHVyZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTUxMiIvPjxkc2lnOlJlZmVyZW5jZSBVUkk9IiNEU2lnLk9iamVjdF8xIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0Ij48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGE1MTIiLz48ZHNpZzpEaWdlc3RWYWx1ZT5KR0cyUkEyQTRzckl4SW5icDl4UHVKQSsvRWFUWk02U2IxblFDUUJVNGJ6dHNSemkyd1lkb1JmU1lTMXNUNVJOZ1paWDhZZFBmYXk2MjhZdzhQS1VpUT09PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+eW91dHU1b3FwRmtndkJ5OC91NGVxUTlLajJqOTgrUzZiYjNPdjhGZWpoUVQ4UG9DVnNybDh3Szg1MzRrOW1OK1pVakt5WEUyOE5VbUtFZ0VRTHlxVXc9PTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48ZHNpZzpLZXlJbmZvPjxkc2lnOktleVZhbHVlPjxFQ0RTQUtleVZhbHVlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSMiPjxEb21haW5QYXJhbWV0ZXJzPjxOYW1lZEN1cnZlIFVSTj0idXJuOm9pZDoxLjIuODQwLjEwMDQ1LjMuMS43Ii8+PC9Eb21haW5QYXJhbWV0ZXJzPjxQdWJsaWNLZXk+PFggVmFsdWU9IjcyMzQ2MDQ3NzA4ODgzMDk5MDczODU3MzU3OTE3ODQxNzE1NzU1OTQwMTc1MDA0OTI3NzE3MzE0MTI4MDgyNTI3OTgxNjgzOTc4ODY0Ii8+PFkgVmFsdWU9IjI0NDE4OTE0OTE3MDYxNzc2OTE4OTM2MjMxNjU3MDkwMzQ0MzA4NDEzNzUzNTIwMDY5NzM4NDgwMTgyODcxNDc0MDU2ODYwMzE3NzI2Ii8+PC9QdWJsaWNLZXk+PC9FQ0RTQUtleVZhbHVlPjwvZHNpZzpLZXlWYWx1ZT48L2RzaWc6S2V5SW5mbz48ZHNpZzpPYmplY3QgSWQ9IkRTaWcuT2JqZWN0XzEiIE1pbWVUeXBlPSJ0ZXh0L3htbCI+PFdlYj51cCB1cCBhbmQgYXdheTwvV2ViPjwvZHNpZzpPYmplY3Q+PC9kc2lnOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1wMzg0X3NoYTEueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcDM4NF9zaGExLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTlmOGVlCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcDM4NF9zaGExLnhtbApAQCAtMCwwICsxIEBACis8ZHNpZzpTaWduYXR1cmUgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzaWc6U2lnbmVkSW5mbz48ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48ZHNpZzpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNlY2RzYS1zaGExIi8+PGRzaWc6UmVmZXJlbmNlIFVSST0iI0RTaWcuT2JqZWN0XzEiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+UXlYOUZCV3lIbjRUNWVUblNNdHlsTXcrdE5RPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjwvZHNpZzpTaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlPmYzODRpY1JxWmFTcHh2dW8zSk1LZ0o3ZnNuNEtFQUEzMWgrYjViUEFlZjdLZktGYzM3akwzaW5BR1c2ZTZLYXNGRC9tQmhlV3ZNM2lSWGhCd0FBOXphamg4aTZrOWd2UXJoMXRMS2pzTUNWT3NrSzljRTF2L1ZldnoxVDJwMGxQPC9kc2lnOlNpZ25hdHVyZVZhbHVlPjxkc2lnOktleUluZm8+PGRzaWc6S2V5VmFsdWU+PEVDS2V5VmFsdWUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDkveG1sZHNpZzExIyI+PE5hbWVkQ3VydmUgVVJJPSJ1cm46b2lkOjEuMy4xMzIuMC4zNCIvPjxQdWJsaWNLZXk+Qk8veWQvT1p6RGZqWDRxaXZEWS92c1VJdWg2S1dBeG94VzVQNHVrdndkK1Q2cFZsaldzWDJVQkpOTnk1TWRoVHdCOGUyWXdCOGtVYkp3ZHNBUy9YR2kvZno4dW5GcnMrbFZsQWdJczZzL3hCWUZiZlVvUmlBYWNEMlNwVkRlNlhCQT09PC9QdWJsaWNLZXk+PC9FQ0tleVZhbHVlPjwvZHNpZzpLZXlWYWx1ZT48L2RzaWc6S2V5SW5mbz48ZHNpZzpPYmplY3QgSWQ9IkRTaWcuT2JqZWN0XzEiIE1pbWVUeXBlPSJ0ZXh0L3htbCI+PFdlYj51cCB1cCBhbmQgYXdheTwvV2ViPjwvZHNpZzpPYmplY3Q+PC9kc2lnOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1wMzg0X3NoYTFfNDA1MC54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1wMzg0X3NoYTFfNDA1MC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg1ZjMyMwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXAzODRfc2hhMV80MDUwLnhtbApAQCAtMCwwICsxIEBACis8ZHNpZzpTaWduYXR1cmUgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzaWc6U2lnbmVkSW5mbz48ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48ZHNpZzpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNlY2RzYS1zaGExIi8+PGRzaWc6UmVmZXJlbmNlIFVSST0iI0RTaWcuT2JqZWN0XzEiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+UXlYOUZCV3lIbjRUNWVUblNNdHlsTXcrdE5RPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjwvZHNpZzpTaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlPlpuWmsxU3kvYlBhRFpaa1JsK3dpYXBEYU91NExkQ0JHTWFscHFjQ1Y5aE52K1ZqMFh0OElQMGgveTkyMk1LeEZTaDBvNlZhL2Zsc05pQ1NhZk40RXljcDQwVlNodVpERmoxM3h5NmVWeE1OZWFwMVg5QXJuT1J6NW15NE10cHpSPC9kc2lnOlNpZ25hdHVyZVZhbHVlPjxkc2lnOktleUluZm8+PGRzaWc6S2V5VmFsdWU+PEVDRFNBS2V5VmFsdWUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlIyI+PERvbWFpblBhcmFtZXRlcnM+PE5hbWVkQ3VydmUgVVJOPSJ1cm46b2lkOjEuMy4xMzIuMC4zNCIvPjwvRG9tYWluUGFyYW1ldGVycz48UHVibGljS2V5PjxYIFZhbHVlPSIzNjkzMTI0NTM0Mzg2MjY1MDEwNjQwNDE5Njg5NDA2Mjg4NjQ5NzI0OTEyMDE4ODMxNzkwODA3NzM0NzMzMzExMDkyNTU5NzY5NjE1OTk3ODY5MzIwNjE0OTQ5ODIwNDE2MTQ0OTQ5MDQxOTkzOTgyNDU3NiIvPjxZIFZhbHVlPSI0Nzg5ODg0NDEzMDQ5NzgzNzI1NzI1MTg3NTQ4OTQ5MjA3MzkzNzA5NTEzMTA0NjI5OTYwOTA5MDUwMTU5MTkyMzEwMjYxMzM5MDkyMjczNzE5NDAwODIwMzA3OTUyMTA3MTQxMjY1NDY0NDA5MTAyMDg0Ii8+PC9QdWJsaWNLZXk+PC9FQ0RTQUtleVZhbHVlPjwvZHNpZzpLZXlWYWx1ZT48L2RzaWc6S2V5SW5mbz48ZHNpZzpPYmplY3QgSWQ9IkRTaWcuT2JqZWN0XzEiIE1pbWVUeXBlPSJ0ZXh0L3htbCI+PFdlYj51cCB1cCBhbmQgYXdheTwvV2ViPjwvZHNpZzpPYmplY3Q+PC9kc2lnOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1wMzg0X3NoYTI1Ni54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1wMzg0X3NoYTI1Ni54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ5MTk4YwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXAzODRfc2hhMjU2LnhtbApAQCAtMCwwICsxIEBACis8ZHNpZzpTaWduYXR1cmUgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzaWc6U2lnbmVkSW5mbz48ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48ZHNpZzpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNlY2RzYS1zaGEyNTYiLz48ZHNpZzpSZWZlcmVuY2UgVVJJPSIjRFNpZy5PYmplY3RfMSIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzaWc6RGlnZXN0VmFsdWU+dklndjdKdFBPaDNocGVkS0swcm04WEh0WUNTb0JYNGVFRjBZd25CMjZFcz08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6U2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZT5YSkZxVzNBM05CZUNSMEdzdUdmakhEalhJcVJXQVhUY0QrT01ZK2l2Rm9zS3ZWKzEya1ozeGRhVFhiczVNQ3UwclRwK1hpajhUdmhiOFZoaDlrMnNBNUR1SmsxYWtha2hFeXJaT0tSZnhhTWlPY1VITjlGOTBZbGdxVGM1UDVNZjwvZHNpZzpTaWduYXR1cmVWYWx1ZT48ZHNpZzpLZXlJbmZvPjxkc2lnOktleVZhbHVlPjxFQ0tleVZhbHVlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDA5L3htbGRzaWcxMSMiPjxOYW1lZEN1cnZlIFVSST0idXJuOm9pZDoxLjMuMTMyLjAuMzQiLz48UHVibGljS2V5PkJPL3lkL09aekRmalg0cWl2RFkvdnNVSXVoNktXQXhveFc1UDR1a3Z3ZCtUNnBWbGpXc1gyVUJKTk55NU1kaFR3QjhlMll3QjhrVWJKd2RzQVMvWEdpL2Z6OHVuRnJzK2xWbEFnSXM2cy94QllGYmZVb1JpQWFjRDJTcFZEZTZYQkE9PTwvUHVibGljS2V5PjwvRUNLZXlWYWx1ZT48L2RzaWc6S2V5VmFsdWU+PC9kc2lnOktleUluZm8+PGRzaWc6T2JqZWN0IElkPSJEU2lnLk9iamVjdF8xIiBNaW1lVHlwZT0idGV4dC94bWwiPjxXZWI+dXAgdXAgYW5kIGF3YXk8L1dlYj48L2RzaWc6T2JqZWN0PjwvZHNpZzpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcDM4NF9zaGEyNTZfNDA1MC54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1wMzg0X3NoYTI1Nl80MDUwLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWVmZjc0Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcDM4NF9zaGEyNTZfNDA1MC54bWwKQEAgLTAsMCArMSBAQAorPGRzaWc6U2lnbmF0dXJlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjZWNkc2Etc2hhMjU2Ii8+PGRzaWc6UmVmZXJlbmNlIFVSST0iI0RTaWcuT2JqZWN0XzEiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkc2lnOkRpZ2VzdFZhbHVlPnZJZ3Y3SnRQT2gzaHBlZEtLMHJtOFhIdFlDU29CWDRlRUYwWXduQjI2RXM9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+VFRjMGJFbjBUNlNscEIrZFVKeWttaEcyVy8rbW9VeWdNQlpxL0ZuV2N1dWlDQktkR3FKTE82blNWNEQyTndWaHNXTkZuU1hxR0hoT2d1NVV3ZzdZd3JEN1JFVzUzK2Zxa1p2QnVtYlBXR0VNUnZWakFPcStRdnNZRHlobGR1b2Q8L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6S2V5SW5mbz48ZHNpZzpLZXlWYWx1ZT48RUNEU0FLZXlWYWx1ZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjIj48RG9tYWluUGFyYW1ldGVycz48TmFtZWRDdXJ2ZSBVUk49InVybjpvaWQ6MS4zLjEzMi4wLjM0Ii8+PC9Eb21haW5QYXJhbWV0ZXJzPjxQdWJsaWNLZXk+PFggVmFsdWU9IjM2OTMxMjQ1MzQzODYyNjUwMTA2NDA0MTk2ODk0MDYyODg2NDk3MjQ5MTIwMTg4MzE3OTA4MDc3MzQ3MzMzMTEwOTI1NTk3Njk2MTU5OTc4NjkzMjA2MTQ5NDk4MjA0MTYxNDQ5NDkwNDE5OTM5ODI0NTc2Ii8+PFkgVmFsdWU9IjQ3ODk4ODQ0MTMwNDk3ODM3MjU3MjUxODc1NDg5NDkyMDczOTM3MDk1MTMxMDQ2Mjk5NjA5MDkwNTAxNTkxOTIzMTAyNjEzMzkwOTIyNzM3MTk0MDA4MjAzMDc5NTIxMDcxNDEyNjU0NjQ0MDkxMDIwODQiLz48L1B1YmxpY0tleT48L0VDRFNBS2V5VmFsdWU+PC9kc2lnOktleVZhbHVlPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdCBJZD0iRFNpZy5PYmplY3RfMSIgTWltZVR5cGU9InRleHQveG1sIj48V2ViPnVwIHVwIGFuZCBhd2F5PC9XZWI+PC9kc2lnOk9iamVjdD48L2RzaWc6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXAzODRfc2hhMzg0LnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXAzODRfc2hhMzg0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTBiNzdmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcDM4NF9zaGEzODQueG1sCkBAIC0wLDAgKzEgQEAKKzxkc2lnOlNpZ25hdHVyZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTM4NCIvPjxkc2lnOlJlZmVyZW5jZSBVUkk9IiNEU2lnLk9iamVjdF8xIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0Ij48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNzaGEzODQiLz48ZHNpZzpEaWdlc3RWYWx1ZT5RUXpXQTVvN0FqMHgrTGdsQW5TTXFhWmxVVEdpQWlXZCt3RlF3WlFpeEJUbHk3V2t6cEZyVTNweVBMTE9JbEI3PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+NjJQb3FhWnVqUDFPZXVVQmFKNFh2QkJtTWNBMU9kWkFXK3lZUDB0bGxMNm9JTWNCOEh1MTF3WnRPTkRESTFYUU8wT0FGcWZWQVE4T0VielVBSDE1L3p5ZFNJdHFzMTRJelc5aWQxZE1ydVZ3SHpaQ1NaMFg5NGUwOXZMeURybmQ8L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6S2V5SW5mbz48ZHNpZzpLZXlWYWx1ZT48RUNLZXlWYWx1ZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwOS94bWxkc2lnMTEjIj48TmFtZWRDdXJ2ZSBVUkk9InVybjpvaWQ6MS4zLjEzMi4wLjM0Ii8+PFB1YmxpY0tleT5CTy95ZC9PWnpEZmpYNHFpdkRZL3ZzVUl1aDZLV0F4b3hXNVA0dWt2d2QrVDZwVmxqV3NYMlVCSk5OeTVNZGhUd0I4ZTJZd0I4a1ViSndkc0FTL1hHaS9mejh1bkZycytsVmxBZ0lzNnMveEJZRmJmVW9SaUFhY0QyU3BWRGU2WEJBPT08L1B1YmxpY0tleT48L0VDS2V5VmFsdWU+PC9kc2lnOktleVZhbHVlPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdCBJZD0iRFNpZy5PYmplY3RfMSIgTWltZVR5cGU9InRleHQveG1sIj48V2ViPnVwIHVwIGFuZCBhd2F5PC9XZWI+PC9kc2lnOk9iamVjdD48L2RzaWc6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXAzODRfc2hhMzg0XzQwNTAueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcDM4NF9zaGEzODRfNDA1MC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZkYTU0YwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXAzODRfc2hhMzg0XzQwNTAueG1sCkBAIC0wLDAgKzEgQEAKKzxkc2lnOlNpZ25hdHVyZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTM4NCIvPjxkc2lnOlJlZmVyZW5jZSBVUkk9IiNEU2lnLk9iamVjdF8xIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0Ij48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNzaGEzODQiLz48ZHNpZzpEaWdlc3RWYWx1ZT5RUXpXQTVvN0FqMHgrTGdsQW5TTXFhWmxVVEdpQWlXZCt3RlF3WlFpeEJUbHk3V2t6cEZyVTNweVBMTE9JbEI3PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+UkZxZ29hUy9hQ0psUnh0R1hBWjFjT2RxUW82Q3hLeFBOeGsxQW11N21GL3hYT0RPMDBpQ1BLMVM5bVhjelNJczRPQUQ0NFN0cnE0cWcyVTdKdkd0ME4rSmRsUFhKQXhXR1B1OEdsVllmRWpCYzdVUVFHN2NkalRuYUFyd0xncXI8L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6S2V5SW5mbz48ZHNpZzpLZXlWYWx1ZT48RUNEU0FLZXlWYWx1ZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjIj48RG9tYWluUGFyYW1ldGVycz48TmFtZWRDdXJ2ZSBVUk49InVybjpvaWQ6MS4zLjEzMi4wLjM0Ii8+PC9Eb21haW5QYXJhbWV0ZXJzPjxQdWJsaWNLZXk+PFggVmFsdWU9IjM2OTMxMjQ1MzQzODYyNjUwMTA2NDA0MTk2ODk0MDYyODg2NDk3MjQ5MTIwMTg4MzE3OTA4MDc3MzQ3MzMzMTEwOTI1NTk3Njk2MTU5OTc4NjkzMjA2MTQ5NDk4MjA0MTYxNDQ5NDkwNDE5OTM5ODI0NTc2Ii8+PFkgVmFsdWU9IjQ3ODk4ODQ0MTMwNDk3ODM3MjU3MjUxODc1NDg5NDkyMDczOTM3MDk1MTMxMDQ2Mjk5NjA5MDkwNTAxNTkxOTIzMTAyNjEzMzkwOTIyNzM3MTk0MDA4MjAzMDc5NTIxMDcxNDEyNjU0NjQ0MDkxMDIwODQiLz48L1B1YmxpY0tleT48L0VDRFNBS2V5VmFsdWU+PC9kc2lnOktleVZhbHVlPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdCBJZD0iRFNpZy5PYmplY3RfMSIgTWltZVR5cGU9InRleHQveG1sIj48V2ViPnVwIHVwIGFuZCBhd2F5PC9XZWI+PC9kc2lnOk9iamVjdD48L2RzaWc6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXAzODRfc2hhNTEyLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXAzODRfc2hhNTEyLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjE1YjI5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcDM4NF9zaGE1MTIueG1sCkBAIC0wLDAgKzEgQEAKKzxkc2lnOlNpZ25hdHVyZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTUxMiIvPjxkc2lnOlJlZmVyZW5jZSBVUkk9IiNEU2lnLk9iamVjdF8xIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0Ij48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGE1MTIiLz48ZHNpZzpEaWdlc3RWYWx1ZT5KR0cyUkEyQTRzckl4SW5icDl4UHVKQSsvRWFUWk02U2IxblFDUUJVNGJ6dHNSemkyd1lkb1JmU1lTMXNUNVJOZ1paWDhZZFBmYXk2MjhZdzhQS1VpUT09PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+YW9FeGRYSXlkb3l1dEFLYkdPbGRkSjVZNUJkZ21nVHVYdkxnbWZVQzJITGFvTmh2NERVL21hU242WDc2ZSs3OWNMelJQMGV6OG0zTGFOWEE0ZzlBVk1CNUN4c2ZpOWl2VUlPTG5UUHkzMUN5MkRGKytnT0VRNUh2bDR4L0VvU3M8L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6S2V5SW5mbz48ZHNpZzpLZXlWYWx1ZT48RUNLZXlWYWx1ZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwOS94bWxkc2lnMTEjIj48TmFtZWRDdXJ2ZSBVUkk9InVybjpvaWQ6MS4zLjEzMi4wLjM0Ii8+PFB1YmxpY0tleT5CTy95ZC9PWnpEZmpYNHFpdkRZL3ZzVUl1aDZLV0F4b3hXNVA0dWt2d2QrVDZwVmxqV3NYMlVCSk5OeTVNZGhUd0I4ZTJZd0I4a1ViSndkc0FTL1hHaS9mejh1bkZycytsVmxBZ0lzNnMveEJZRmJmVW9SaUFhY0QyU3BWRGU2WEJBPT08L1B1YmxpY0tleT48L0VDS2V5VmFsdWU+PC9kc2lnOktleVZhbHVlPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdCBJZD0iRFNpZy5PYmplY3RfMSIgTWltZVR5cGU9InRleHQveG1sIj48V2ViPnVwIHVwIGFuZCBhd2F5PC9XZWI+PC9kc2lnOk9iamVjdD48L2RzaWc6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXAzODRfc2hhNTEyXzQwNTAueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcDM4NF9zaGE1MTJfNDA1MC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQwZThhNAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXAzODRfc2hhNTEyXzQwNTAueG1sCkBAIC0wLDAgKzEgQEAKKzxkc2lnOlNpZ25hdHVyZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTUxMiIvPjxkc2lnOlJlZmVyZW5jZSBVUkk9IiNEU2lnLk9iamVjdF8xIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0Ij48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGE1MTIiLz48ZHNpZzpEaWdlc3RWYWx1ZT5KR0cyUkEyQTRzckl4SW5icDl4UHVKQSsvRWFUWk02U2IxblFDUUJVNGJ6dHNSemkyd1lkb1JmU1lTMXNUNVJOZ1paWDhZZFBmYXk2MjhZdzhQS1VpUT09PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+dXlwWEJod053dUJpQ1pWbUVHVmcrdHpzanQ5dFcwZmVpbm0xN215OWs2TU9MNDJMc1dtRXA4SkJDelFIOHBDdk93VWlsWEp0L00zWWl5a0F0aTNhRzk2Y24zZWpSNXQ0Vkw0MU9Eb1ZFTzFkV3l3S3BvWVd5bUU5RFVoYXRNMGY8L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6S2V5SW5mbz48ZHNpZzpLZXlWYWx1ZT48RUNEU0FLZXlWYWx1ZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjIj48RG9tYWluUGFyYW1ldGVycz48TmFtZWRDdXJ2ZSBVUk49InVybjpvaWQ6MS4zLjEzMi4wLjM0Ii8+PC9Eb21haW5QYXJhbWV0ZXJzPjxQdWJsaWNLZXk+PFggVmFsdWU9IjM2OTMxMjQ1MzQzODYyNjUwMTA2NDA0MTk2ODk0MDYyODg2NDk3MjQ5MTIwMTg4MzE3OTA4MDc3MzQ3MzMzMTEwOTI1NTk3Njk2MTU5OTc4NjkzMjA2MTQ5NDk4MjA0MTYxNDQ5NDkwNDE5OTM5ODI0NTc2Ii8+PFkgVmFsdWU9IjQ3ODk4ODQ0MTMwNDk3ODM3MjU3MjUxODc1NDg5NDkyMDczOTM3MDk1MTMxMDQ2Mjk5NjA5MDkwNTAxNTkxOTIzMTAyNjEzMzkwOTIyNzM3MTk0MDA4MjAzMDc5NTIxMDcxNDEyNjU0NjQ0MDkxMDIwODQiLz48L1B1YmxpY0tleT48L0VDRFNBS2V5VmFsdWU+PC9kc2lnOktleVZhbHVlPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdCBJZD0iRFNpZy5PYmplY3RfMSIgTWltZVR5cGU9InRleHQveG1sIj48V2ViPnVwIHVwIGFuZCBhd2F5PC9XZWI+PC9kc2lnOk9iamVjdD48L2RzaWc6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXA1MjFfc2hhMS54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1wNTIxX3NoYTEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxYmE5NjkKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1wNTIxX3NoYTEueG1sCkBAIC0wLDAgKzEgQEAKKzxkc2lnOlNpZ25hdHVyZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTEiLz48ZHNpZzpSZWZlcmVuY2UgVVJJPSIjRFNpZy5PYmplY3RfMSIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT5ReVg5RkJXeUhuNFQ1ZVRuU010eWxNdyt0TlE9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+QWViS3IvU3J6Z3JGdHI4N25RWHhuNXNlSlg4enR5RnZTK2hLbWgxaXUxdXRKY29Mam9GRWZHc2V6T00wRlF2cXlzRmszRUs0ZERGNXBCOVJsOWFZeFNtd0FGK0l0NEJzcFR1Y2NEcmwwTjZLY3pVaGhHSGlUTUx4clJnQlgzMjA1R2lEUVNSQXpZdVhKbXozZHB0VGhnTnprZzdEL1pyN2g1Zk5yUFlIUGVKS1VpZTc8L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6S2V5SW5mbz48ZHNpZzpLZXlWYWx1ZT48RUNLZXlWYWx1ZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwOS94bWxkc2lnMTEjIj48TmFtZWRDdXJ2ZSBVUkk9InVybjpvaWQ6MS4zLjEzMi4wLjM1Ii8+PFB1YmxpY0tleT5CQUh1OGRacTRPRnJGMGZXSXltREFwSkxLTDc3bndQY1ovdVpIa2VxeDh2T0pKOUtrQ2x2dWs1Um9jNFY0RUpYaldPQzI0czh5TFdXN01DV2drTjZ6NE1QT1FDSnB2UmhuUXc4RU5KeENUaW9ZL3NCTGo5UzRZNVliREFoMWdudEVXNzdTQVMxWGprdzdMb1o5L0JZT2JsVFRsK2w0NW9nZU5OQTY2aVJoZEFGN3Z1dWVBPT08L1B1YmxpY0tleT48L0VDS2V5VmFsdWU+PC9kc2lnOktleVZhbHVlPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdCBJZD0iRFNpZy5PYmplY3RfMSIgTWltZVR5cGU9InRleHQveG1sIj48V2ViPnVwIHVwIGFuZCBhd2F5PC9XZWI+PC9kc2lnOk9iamVjdD48L2RzaWc6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXA1MjFfc2hhMV80MDUwLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXA1MjFfc2hhMV80MDUwLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGY5OWYyCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcDUyMV9zaGExXzQwNTAueG1sCkBAIC0wLDAgKzEgQEAKKzxkc2lnOlNpZ25hdHVyZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTEiLz48ZHNpZzpSZWZlcmVuY2UgVVJJPSIjRFNpZy5PYmplY3RfMSIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT5ReVg5RkJXeUhuNFQ1ZVRuU010eWxNdyt0TlE9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+QUsyb1ljMkxVeGVtVTBqSUhkakxKeGx6dE9jaTd2a2pFYThuQkxmZzgyOXo3TzRxNXVvKzdvdzVZTGF5SmFjb3h4S1FmTnZ5RUdhdFlXbnhISEU0US84MkFMcDNjc3czYk9RWEh0VGRkbGswSmZEOVFxY1NpZk5MQUJtYjREdFp6TDVHVkNsV29qZGZHY0lHTXpmcWUwTUZwME1VRmU2QlVraGw1Wk0wcWoxejRxc2k8L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6S2V5SW5mbz48ZHNpZzpLZXlWYWx1ZT48RUNEU0FLZXlWYWx1ZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjIj48RG9tYWluUGFyYW1ldGVycz48TmFtZWRDdXJ2ZSBVUk49InVybjpvaWQ6MS4zLjEzMi4wLjM1Ii8+PC9Eb21haW5QYXJhbWV0ZXJzPjxQdWJsaWNLZXk+PFggVmFsdWU9IjY2MzYxMjMxNzg1ODg4NjAyNjMyNzYwMjExODIxODc4MTUyNjcwODQyMDU5NjA0NTY0NzU0ODA4OTcxMjk5MDE1OTgzMTM1MDMxODIyMTkzODYyMTUxNzQ5OTI4NzI3MzI2MTQ5OTQ1MzA4OTA1NDQ0MTQ2OTYxODcwMDY0NjI1NjM2MTQyODgyNjk0OTg0MDI2MjMzNzU3NDA3MjkiLz48WSBWYWx1ZT0iMTg0NTYxMzgwOTA3MzAwMjA4ODU5Nzc4NjY5NjMxOTI0MjcxMDc0MzQ1MzIxNjA0NDg5MDkxNDAwNTM4NTc5NTYwNjgzOTc2ODk0MDY5MDEyNTA1MzkxNzcyNjI1MDgwNzQ3NzY2NjcyMzU4NDIxMzY3NTYyNjg5NTE2NTkxMjQ3MTMwNjY3ODU2OTg5NjA2MDkzMzg2MjMwNTQwMCIvPjwvUHVibGljS2V5PjwvRUNEU0FLZXlWYWx1ZT48L2RzaWc6S2V5VmFsdWU+PC9kc2lnOktleUluZm8+PGRzaWc6T2JqZWN0IElkPSJEU2lnLk9iamVjdF8xIiBNaW1lVHlwZT0idGV4dC94bWwiPjxXZWI+dXAgdXAgYW5kIGF3YXk8L1dlYj48L2RzaWc6T2JqZWN0PjwvZHNpZzpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcDUyMV9zaGEyNTYueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcDUyMV9zaGEyNTYueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyMjRkNjYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1wNTIxX3NoYTI1Ni54bWwKQEAgLTAsMCArMSBAQAorPGRzaWc6U2lnbmF0dXJlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjZWNkc2Etc2hhMjU2Ii8+PGRzaWc6UmVmZXJlbmNlIFVSST0iI0RTaWcuT2JqZWN0XzEiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiIvPjxkc2lnOkRpZ2VzdFZhbHVlPnZJZ3Y3SnRQT2gzaHBlZEtLMHJtOFhIdFlDU29CWDRlRUYwWXduQjI2RXM9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+QWRTTi9YeCtYSDc2eks2TGVoWDBKaStiNzNPYlJRV0N2ZnMrRk1sV1BvaFhlbm9LM3dRZFl6N3hOSDJhMkxmSGRjRGVQZGpOZ3oybk5Nd2ZQZ3orZ21vcEFZNzNMQnNBTWJrZGJ0MDJZNlVKM1JQeEFVbXN1UXo2dmozRnVRbE5STVhoaTFZbnhNbnYvZTZUaWZsb2MybVpQNlpmbnhPN3JoZ2dPTnFSQW15K3c2WnA8L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6S2V5SW5mbz48ZHNpZzpLZXlWYWx1ZT48RUNLZXlWYWx1ZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwOS94bWxkc2lnMTEjIj48TmFtZWRDdXJ2ZSBVUkk9InVybjpvaWQ6MS4zLjEzMi4wLjM1Ii8+PFB1YmxpY0tleT5CQUh1OGRacTRPRnJGMGZXSXltREFwSkxLTDc3bndQY1ovdVpIa2VxeDh2T0pKOUtrQ2x2dWs1Um9jNFY0RUpYaldPQzI0czh5TFdXN01DV2drTjZ6NE1QT1FDSnB2UmhuUXc4RU5KeENUaW9ZL3NCTGo5UzRZNVliREFoMWdudEVXNzdTQVMxWGprdzdMb1o5L0JZT2JsVFRsK2w0NW9nZU5OQTY2aVJoZEFGN3Z1dWVBPT08L1B1YmxpY0tleT48L0VDS2V5VmFsdWU+PC9kc2lnOktleVZhbHVlPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdCBJZD0iRFNpZy5PYmplY3RfMSIgTWltZVR5cGU9InRleHQveG1sIj48V2ViPnVwIHVwIGFuZCBhd2F5PC9XZWI+PC9kc2lnOk9iamVjdD48L2RzaWc6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXA1MjFfc2hhMjU2XzQwNTAueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcDUyMV9zaGEyNTZfNDA1MC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ4YjhlMgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXA1MjFfc2hhMjU2XzQwNTAueG1sCkBAIC0wLDAgKzEgQEAKKzxkc2lnOlNpZ25hdHVyZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTI1NiIvPjxkc2lnOlJlZmVyZW5jZSBVUkk9IiNEU2lnLk9iamVjdF8xIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0Ij48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHNpZzpEaWdlc3RWYWx1ZT52SWd2N0p0UE9oM2hwZWRLSzBybThYSHRZQ1NvQlg0ZUVGMFl3bkIyNkVzPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjwvZHNpZzpTaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlPkFTWm9NQ00zZzVkUEZqTHBISmUxRlpSNzZkV1lLYVpVUGN4VjUybGRDeFpiL3FsazcwcnRhclhpaG41WG1RL0pSaGN6NEVQNDBkN3JxQWgrU1lCMlJ6czBBQTFFMEtBbFhNWWI4WmlPUHZ0TFZlNXphNVBISlg2b29hRis2VWZJSzhNR1padTBVaVoxZ1g0MUttZGVUdENiQUQ1cWc0ZFZzWkNzSVpZK1FHNUdPYitMPC9kc2lnOlNpZ25hdHVyZVZhbHVlPjxkc2lnOktleUluZm8+PGRzaWc6S2V5VmFsdWU+PEVDRFNBS2V5VmFsdWUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlIyI+PERvbWFpblBhcmFtZXRlcnM+PE5hbWVkQ3VydmUgVVJOPSJ1cm46b2lkOjEuMy4xMzIuMC4zNSIvPjwvRG9tYWluUGFyYW1ldGVycz48UHVibGljS2V5PjxYIFZhbHVlPSI2NjM2MTIzMTc4NTg4ODYwMjYzMjc2MDIxMTgyMTg3ODE1MjY3MDg0MjA1OTYwNDU2NDc1NDgwODk3MTI5OTAxNTk4MzEzNTAzMTgyMjE5Mzg2MjE1MTc0OTkyODcyNzMyNjE0OTk0NTMwODkwNTQ0NDE0Njk2MTg3MDA2NDYyNTYzNjE0Mjg4MjY5NDk4NDAyNjIzMzc1NzQwNzI5Ii8+PFkgVmFsdWU9IjE4NDU2MTM4MDkwNzMwMDIwODg1OTc3ODY2OTYzMTkyNDI3MTA3NDM0NTMyMTYwNDQ4OTA5MTQwMDUzODU3OTU2MDY4Mzk3Njg5NDA2OTAxMjUwNTM5MTc3MjYyNTA4MDc0Nzc2NjY3MjM1ODQyMTM2NzU2MjY4OTUxNjU5MTI0NzEzMDY2Nzg1Njk4OTYwNjA5MzM4NjIzMDU0MDAiLz48L1B1YmxpY0tleT48L0VDRFNBS2V5VmFsdWU+PC9kc2lnOktleVZhbHVlPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdCBJZD0iRFNpZy5PYmplY3RfMSIgTWltZVR5cGU9InRleHQveG1sIj48V2ViPnVwIHVwIGFuZCBhd2F5PC9XZWI+PC9kc2lnOk9iamVjdD48L2RzaWc6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXA1MjFfc2hhMzg0LnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXA1MjFfc2hhMzg0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2IyZjU1Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcDUyMV9zaGEzODQueG1sCkBAIC0wLDAgKzEgQEAKKzxkc2lnOlNpZ25hdHVyZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTM4NCIvPjxkc2lnOlJlZmVyZW5jZSBVUkk9IiNEU2lnLk9iamVjdF8xIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0Ij48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNzaGEzODQiLz48ZHNpZzpEaWdlc3RWYWx1ZT5RUXpXQTVvN0FqMHgrTGdsQW5TTXFhWmxVVEdpQWlXZCt3RlF3WlFpeEJUbHk3V2t6cEZyVTNweVBMTE9JbEI3PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+QVJIRlZFM1YwQUZlK3JSVVhlYytVQXpVNjZSTWVsbjIrcDV5YndtNHNaTDNKem8rY2ZKdDlHdnNmUmlUYitKbWZ4cVFkTUc3aEw3aDFkemw0RHVRZFdOeUFEcG54WVI1emh6RGJmL0psdXhUSVNvbVhtRk1ndCt3R1FWODFYeElCWGQ5UFcvVmlxR3dGRUhVbVVCYlRPMThsaGpST3dndXhkTnhxd05BTnhHOTlYYXc8L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6S2V5SW5mbz48ZHNpZzpLZXlWYWx1ZT48RUNLZXlWYWx1ZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwOS94bWxkc2lnMTEjIj48TmFtZWRDdXJ2ZSBVUkk9InVybjpvaWQ6MS4zLjEzMi4wLjM1Ii8+PFB1YmxpY0tleT5CQUh1OGRacTRPRnJGMGZXSXltREFwSkxLTDc3bndQY1ovdVpIa2VxeDh2T0pKOUtrQ2x2dWs1Um9jNFY0RUpYaldPQzI0czh5TFdXN01DV2drTjZ6NE1QT1FDSnB2UmhuUXc4RU5KeENUaW9ZL3NCTGo5UzRZNVliREFoMWdudEVXNzdTQVMxWGprdzdMb1o5L0JZT2JsVFRsK2w0NW9nZU5OQTY2aVJoZEFGN3Z1dWVBPT08L1B1YmxpY0tleT48L0VDS2V5VmFsdWU+PC9kc2lnOktleVZhbHVlPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdCBJZD0iRFNpZy5PYmplY3RfMSIgTWltZVR5cGU9InRleHQveG1sIj48V2ViPnVwIHVwIGFuZCBhd2F5PC9XZWI+PC9kc2lnOk9iamVjdD48L2RzaWc6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXA1MjFfc2hhMzg0XzQwNTAueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcDUyMV9zaGEzODRfNDA1MC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY3Mzc1YQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXA1MjFfc2hhMzg0XzQwNTAueG1sCkBAIC0wLDAgKzEgQEAKKzxkc2lnOlNpZ25hdHVyZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTM4NCIvPjxkc2lnOlJlZmVyZW5jZSBVUkk9IiNEU2lnLk9iamVjdF8xIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0Ij48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNzaGEzODQiLz48ZHNpZzpEaWdlc3RWYWx1ZT5RUXpXQTVvN0FqMHgrTGdsQW5TTXFhWmxVVEdpQWlXZCt3RlF3WlFpeEJUbHk3V2t6cEZyVTNweVBMTE9JbEI3PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+QU5RaVhrUnhmLzErc013b0JzR2JRVmtPaW5lbmhFcm5lSXhMS0xZaFA1UjFJbHA0bW5jR1Z3SWlNT2VmaGtsRkFpUnhZSWxjWDZMTDk5TW53MUhwaGMwekFVQmJWaTA1K01SUkhOb3hiZzZ6Ry9PQmZWV3B0NWpnRjBvM1ZuejBoNFBsRmZldkM3cTl5OGxLR2hseElrM3lSN2d5cXZxWFlxS1pidFR0U0hpNHpjWkw8L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6S2V5SW5mbz48ZHNpZzpLZXlWYWx1ZT48RUNEU0FLZXlWYWx1ZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjIj48RG9tYWluUGFyYW1ldGVycz48TmFtZWRDdXJ2ZSBVUk49InVybjpvaWQ6MS4zLjEzMi4wLjM1Ii8+PC9Eb21haW5QYXJhbWV0ZXJzPjxQdWJsaWNLZXk+PFggVmFsdWU9IjY2MzYxMjMxNzg1ODg4NjAyNjMyNzYwMjExODIxODc4MTUyNjcwODQyMDU5NjA0NTY0NzU0ODA4OTcxMjk5MDE1OTgzMTM1MDMxODIyMTkzODYyMTUxNzQ5OTI4NzI3MzI2MTQ5OTQ1MzA4OTA1NDQ0MTQ2OTYxODcwMDY0NjI1NjM2MTQyODgyNjk0OTg0MDI2MjMzNzU3NDA3MjkiLz48WSBWYWx1ZT0iMTg0NTYxMzgwOTA3MzAwMjA4ODU5Nzc4NjY5NjMxOTI0MjcxMDc0MzQ1MzIxNjA0NDg5MDkxNDAwNTM4NTc5NTYwNjgzOTc2ODk0MDY5MDEyNTA1MzkxNzcyNjI1MDgwNzQ3NzY2NjcyMzU4NDIxMzY3NTYyNjg5NTE2NTkxMjQ3MTMwNjY3ODU2OTg5NjA2MDkzMzg2MjMwNTQwMCIvPjwvUHVibGljS2V5PjwvRUNEU0FLZXlWYWx1ZT48L2RzaWc6S2V5VmFsdWU+PC9kc2lnOktleUluZm8+PGRzaWc6T2JqZWN0IElkPSJEU2lnLk9iamVjdF8xIiBNaW1lVHlwZT0idGV4dC94bWwiPjxXZWI+dXAgdXAgYW5kIGF3YXk8L1dlYj48L2RzaWc6T2JqZWN0PjwvZHNpZzpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcDUyMV9zaGE1MTIueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcDUyMV9zaGE1MTIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwYTBlYTgKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1wNTIxX3NoYTUxMi54bWwKQEAgLTAsMCArMSBAQAorPGRzaWc6U2lnbmF0dXJlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjZWNkc2Etc2hhNTEyIi8+PGRzaWc6UmVmZXJlbmNlIFVSST0iI0RTaWcuT2JqZWN0XzEiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTUxMiIvPjxkc2lnOkRpZ2VzdFZhbHVlPkpHRzJSQTJBNHNySXhJbmJwOXhQdUpBKy9FYVRaTTZTYjFuUUNRQlU0Ynp0c1J6aTJ3WWRvUmZTWVMxc1Q1Uk5nWlpYOFlkUGZheTYyOFl3OFBLVWlRPT08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6U2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZT5BVTlpRkgyK0lCYXdxSU11ZWYzZXhNbnpwNVhHWGZSVEpRdWhRa2xXY2M4Wld3bkUrYndDcGJybFRrWU0yUkU4cVRycFE0RTVLNlpaTjJGS0g2OWxabnFBQU5ORS9pSXZiUS9yRzlldFU5Y2lUNDJaaEZBVmV3ZEFqblhDZldtRWY1QWVzZ0pGdDBiRXJVMXhDcU15aWN2VkQwNmJIeFpUV0k3Q1lSWkpyR045ODUxMjwvZHNpZzpTaWduYXR1cmVWYWx1ZT48ZHNpZzpLZXlJbmZvPjxkc2lnOktleVZhbHVlPjxFQ0tleVZhbHVlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDA5L3htbGRzaWcxMSMiPjxOYW1lZEN1cnZlIFVSST0idXJuOm9pZDoxLjMuMTMyLjAuMzUiLz48UHVibGljS2V5PkJBSHU4ZFpxNE9GckYwZldJeW1EQXBKTEtMNzdud1BjWi91WkhrZXF4OHZPSko5S2tDbHZ1azVSb2M0VjRFSlhqV09DMjRzOHlMV1c3TUNXZ2tONno0TVBPUUNKcHZSaG5RdzhFTkp4Q1Rpb1kvc0JMajlTNFk1WWJEQWgxZ250RVc3N1NBUzFYamt3N0xvWjkvQllPYmxUVGwrbDQ1b2dlTk5BNjZpUmhkQUY3dnV1ZUE9PTwvUHVibGljS2V5PjwvRUNLZXlWYWx1ZT48L2RzaWc6S2V5VmFsdWU+PC9kc2lnOktleUluZm8+PGRzaWc6T2JqZWN0IElkPSJEU2lnLk9iamVjdF8xIiBNaW1lVHlwZT0idGV4dC94bWwiPjxXZWI+dXAgdXAgYW5kIGF3YXk8L1dlYj48L2RzaWc6T2JqZWN0PjwvZHNpZzpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcDUyMV9zaGE1MTJfNDA1MC54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1wNTIxX3NoYTUxMl80MDUwLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmMwMmFhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcDUyMV9zaGE1MTJfNDA1MC54bWwKQEAgLTAsMCArMSBAQAorPGRzaWc6U2lnbmF0dXJlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjZWNkc2Etc2hhNTEyIi8+PGRzaWc6UmVmZXJlbmNlIFVSST0iI0RTaWcuT2JqZWN0XzEiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTUxMiIvPjxkc2lnOkRpZ2VzdFZhbHVlPkpHRzJSQTJBNHNySXhJbmJwOXhQdUpBKy9FYVRaTTZTYjFuUUNRQlU0Ynp0c1J6aTJ3WWRvUmZTWVMxc1Q1Uk5nWlpYOFlkUGZheTYyOFl3OFBLVWlRPT08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6U2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZT5BY1Z6NWcvTU1RYkJaUlY3QzU3b3dEcmlLQ2dwWmlXV0FiVitYaHN2cWxRUVAvVmk2VjlzOWp5aTh3UWpSTnhwMlZLak56RGl2TGVYL2wwdkdTQjlqQzY2QVJtM0NJSUs0aDIycnlSb1V4eVhZbDVXS1RhNjhQS3NQSmh5VFZMVGNPb0haejN5RW1KSHFGdzBnUDl6MUlFMWc2ZDhrTU1sNjA4Ymd2dHdqaDlDOHk1cDwvZHNpZzpTaWduYXR1cmVWYWx1ZT48ZHNpZzpLZXlJbmZvPjxkc2lnOktleVZhbHVlPjxFQ0RTQUtleVZhbHVlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSMiPjxEb21haW5QYXJhbWV0ZXJzPjxOYW1lZEN1cnZlIFVSTj0idXJuOm9pZDoxLjMuMTMyLjAuMzUiLz48L0RvbWFpblBhcmFtZXRlcnM+PFB1YmxpY0tleT48WCBWYWx1ZT0iNjYzNjEyMzE3ODU4ODg2MDI2MzI3NjAyMTE4MjE4NzgxNTI2NzA4NDIwNTk2MDQ1NjQ3NTQ4MDg5NzEyOTkwMTU5ODMxMzUwMzE4MjIxOTM4NjIxNTE3NDk5Mjg3MjczMjYxNDk5NDUzMDg5MDU0NDQxNDY5NjE4NzAwNjQ2MjU2MzYxNDI4ODI2OTQ5ODQwMjYyMzM3NTc0MDcyOSIvPjxZIFZhbHVlPSIxODQ1NjEzODA5MDczMDAyMDg4NTk3Nzg2Njk2MzE5MjQyNzEwNzQzNDUzMjE2MDQ0ODkwOTE0MDA1Mzg1Nzk1NjA2ODM5NzY4OTQwNjkwMTI1MDUzOTE3NzI2MjUwODA3NDc3NjY2NzIzNTg0MjEzNjc1NjI2ODk1MTY1OTEyNDcxMzA2Njc4NTY5ODk2MDYwOTMzODYyMzA1NDAwIi8+PC9QdWJsaWNLZXk+PC9FQ0RTQUtleVZhbHVlPjwvZHNpZzpLZXlWYWx1ZT48L2RzaWc6S2V5SW5mbz48ZHNpZzpPYmplY3QgSWQ9IkRTaWcuT2JqZWN0XzEiIE1pbWVUeXBlPSJ0ZXh0L3htbCI+PFdlYj51cCB1cCBhbmQgYXdheTwvV2ViPjwvZHNpZzpPYmplY3Q+PC9kc2lnOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1yc2Etc2hhMjU2LnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXJzYS1zaGEyNTYueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NThmMDIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1yc2Etc2hhMjU2LnhtbApAQCAtMCwwICsxIEBACis8ZHNpZzpTaWduYXR1cmUgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzaWc6U2lnbmVkSW5mbz48ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48ZHNpZzpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzaWc6UmVmZXJlbmNlIFVSST0iI0RTaWcuT2JqZWN0X2dkSGQ1c2E5MDFzWDE0UDFGdjhRSkEyMiIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48ZHNpZzpEaWdlc3RWYWx1ZT5hOHVTNDNWek5Od3pMT002d0hjelhQcTkwNnc9PC9kc2lnOkRpZ2VzdFZhbHVlPjwvZHNpZzpSZWZlcmVuY2U+PC9kc2lnOlNpZ25lZEluZm8+PGRzaWc6U2lnbmF0dXJlVmFsdWU+YTFNVTFONm1janUyL2JwMnNwNzAxN3o0ZlV1bXV6MGNwckJMaENML2FaRFlucnlEQVgrenRCUWp0UHhreUNzUzkyd2dkM3JhY3ROeG9zb1UzTTBYbGpacXMxL3g5QjhiV09Zd2hoNCtCMEZPVHdIU3pMQXBzUHFlczhTSmllMU43MVV5UU4rUVR2c1cyU25MaERJRjRKMFpRMGJTVnNOS0RwUkxOZzB0WUNRPTwvZHNpZzpTaWduYXR1cmVWYWx1ZT48ZHNpZzpLZXlJbmZvPjxkc2lnOktleVZhbHVlPjxkc2lnOlJTQUtleVZhbHVlPjxkc2lnOk1vZHVsdXM+Z0liNm5BQjlvUy9BSTVqSWo2V3ltdlFoUnhpTWxFMDdHNGFibU1saVlpNXpXenZhRkUydG5VK1JaSUJndG9YY2dERUlVL3ZzTFF1dDduekNuOW1IeEM4SkVhVjRENFU5MWo2NEF5WmFrU2hxSnc3cWpKZnFVeHhQTDB5SnYyb0Zpb3VQRGpHdUo5SlBpME5yc1pxK3lmV2ZNNTRzNGI5U05rY09JVk15YlpVPTwvZHNpZzpNb2R1bHVzPjxkc2lnOkV4cG9uZW50PkFRQUI8L2RzaWc6RXhwb25lbnQ+PC9kc2lnOlJTQUtleVZhbHVlPjwvZHNpZzpLZXlWYWx1ZT48L2RzaWc6S2V5SW5mbz48ZHNpZzpPYmplY3QgSWQ9IkRTaWcuT2JqZWN0X2dkSGQ1c2E5MDFzWDE0UDFGdjhRSkEyMiIgTWltZVR5cGU9InRleHQveG1sIj48V2ViPnVwIHVwIGFuZCBhd2F5PC9XZWI+PC9kc2lnOk9iamVjdD48L2RzaWc6U2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXJzYV9zaGEzODQueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcnNhX3NoYTM4NC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY2Yzk5YwotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXJzYV9zaGEzODQueG1sCkBAIC0wLDAgKzEgQEAKKzxkc2lnOlNpZ25hdHVyZSB4bWxuczpkc2lnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48ZHNpZzpTaWduZWRJbmZvPjxkc2lnOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxkc2lnOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEzODQiLz48ZHNpZzpSZWZlcmVuY2UgVVJJPSIjRFNpZy5PYmplY3RfTHZjVTB4MVdvNGlRYWZJTnZpMFZRdzIyIiBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0Ij48ZHNpZzpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkc2lnOkRpZ2VzdFZhbHVlPmhjQWZINUp0UFNDYU93amE0L28yd29tSDZxbz08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6U2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZT5FY0lIcFhWNTN1N2IxVkpvWXU3ZW5pVGRzUkhBL3Nja0VnbXBBRWhqSTNtZ2I4RXFnOFN3MlhPb25Nb3VBK3dvbEtwd09haDBSTURGOVRVMUI0UEtTRUxPOUw2RlY2cEtBM2xmVU1VbXpPOWU4VVBLRGk0YjFld1VkRTZwYWFVS09URS9JVzRESlFpTkVSTnJLcEJuRFRscDJ0bXFiVjJRWTV0V3YwL0kvVjQ9PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjxkc2lnOktleUluZm8+PGRzaWc6S2V5VmFsdWU+PGRzaWc6UlNBS2V5VmFsdWU+PGRzaWc6TW9kdWx1cz5nSWI2bkFCOW9TL0FJNWpJajZXeW12UWhSeGlNbEUwN0c0YWJtTWxpWWk1eld6dmFGRTJ0blUrUlpJQmd0b1hjZ0RFSVUvdnNMUXV0N256Q245bUh4QzhKRWFWNEQ0VTkxajY0QXlaYWtTaHFKdzdxakpmcVV4eFBMMHlKdjJvRmlvdVBEakd1SjlKUGkwTnJzWnEreWZXZk01NHM0YjlTTmtjT0lWTXliWlU9PC9kc2lnOk1vZHVsdXM+PGRzaWc6RXhwb25lbnQ+QVFBQjwvZHNpZzpFeHBvbmVudD48L2RzaWc6UlNBS2V5VmFsdWU+PC9kc2lnOktleVZhbHVlPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdCBJZD0iRFNpZy5PYmplY3RfTHZjVTB4MVdvNGlRYWZJTnZpMFZRdzIyIiBNaW1lVHlwZT0idGV4dC94bWwiPjxXZWI+dXAgdXAgYW5kIGF3YXk8L1dlYj48L2RzaWc6T2JqZWN0PjwvZHNpZzpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcnNhX3NoYTUxMi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1yc2Ffc2hhNTEyLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjkzMGZkCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3BpbmctcnNhX3NoYTUxMi54bWwKQEAgLTAsMCArMSBAQAorPGRzaWc6U2lnbmF0dXJlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTUxMiIvPjxkc2lnOlJlZmVyZW5jZSBVUkk9IiNEU2lnLk9iamVjdF9nVWhENlpEVW1YSlB2Rnl0NUxSWDFRMjIiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzaWc6RGlnZXN0VmFsdWU+WVE5R0crbjN3NnpXZHZwVVZyNTFmazZ1SFBBPTwvZHNpZzpEaWdlc3RWYWx1ZT48L2RzaWc6UmVmZXJlbmNlPjwvZHNpZzpTaWduZWRJbmZvPjxkc2lnOlNpZ25hdHVyZVZhbHVlPlVBQ2dFN0lFU0JXaEczZ1cyQmlXODdwRHhyd2xNaXlFUENzNy8zckIyVTRVQlVXdVNzT0NkZythYTdOU0d5SFRpeUdJbVk3YStXRmRuYnUzVmErUnZaYk1waERETTR4ZVdjUmF1TWVMRlpqOXJabThFWTNNSEsvQXZzUUhYNXNCYUoxdDIvNVlrWWRkTGFhZzVqOTE2aWpsMWMxcUxUcUdGSnd5S1RCbXYzcz08L2RzaWc6U2lnbmF0dXJlVmFsdWU+PGRzaWc6S2V5SW5mbz48ZHNpZzpLZXlWYWx1ZT48ZHNpZzpSU0FLZXlWYWx1ZT48ZHNpZzpNb2R1bHVzPmdJYjZuQUI5b1MvQUk1aklqNld5bXZRaFJ4aU1sRTA3RzRhYm1NbGlZaTV6V3p2YUZFMnRuVStSWklCZ3RvWGNnREVJVS92c0xRdXQ3bnpDbjltSHhDOEpFYVY0RDRVOTFqNjRBeVpha1NocUp3N3FqSmZxVXh4UEwweUp2Mm9GaW91UERqR3VKOUpQaTBOcnNacSt5ZldmTTU0czRiOVNOa2NPSVZNeWJaVT08L2RzaWc6TW9kdWx1cz48ZHNpZzpFeHBvbmVudD5BUUFCPC9kc2lnOkV4cG9uZW50PjwvZHNpZzpSU0FLZXlWYWx1ZT48L2RzaWc6S2V5VmFsdWU+PC9kc2lnOktleUluZm8+PGRzaWc6T2JqZWN0IElkPSJEU2lnLk9iamVjdF9nVWhENlpEVW1YSlB2Rnl0NUxSWDFRMjIiIE1pbWVUeXBlPSJ0ZXh0L3htbCI+PFdlYj51cCB1cCBhbmQgYXdheTwvV2ViPjwvZHNpZzpPYmplY3Q+PC9kc2lnOlNpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1zaGEyNTYtcnNhLXNoYTI1Ni54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1zaGEyNTYtcnNhLXNoYTI1Ni54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA0MGY3MAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvb3JhY2xlL3NpZ25hdHVyZS1lbnZlbG9waW5nLXNoYTI1Ni1yc2Etc2hhMjU2LnhtbApAQCAtMCwwICsxIEBACis8ZHNpZzpTaWduYXR1cmUgeG1sbnM6ZHNpZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PGRzaWc6U2lnbmVkSW5mbz48ZHNpZzpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48ZHNpZzpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PGRzaWc6UmVmZXJlbmNlIFVSST0iI0RTaWcuT2JqZWN0XzZXQVBwMTdxY3YyVkx6bzIycjE3U2cyMiIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCI+PGRzaWc6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PGRzaWc6RGlnZXN0VmFsdWU+aXhSWlNxRUgwb0h0d0FDczJCNDJqbDFwTDdlQU1td3prMkRWdTRuNEhEOD08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6U2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZT5mOWMzNWdpdlhZc1RrcTJkcGlWT29Dbi9PdllQZFFZSVVKYlFublRJYXp2VG5yUkd5dndaOVYvcVBNd1RvUUhGeEI1K2QzNktHSjFrVUJTZUd0WnFnYTgzKzcrbENNTTNRbnplTndRWmJNbUtLLzFuMTlYQThLejc3TDF3S1pqemFjbDhiK0JhemRXeTFWa0V2ZFdENjdtZG1LWVdPQldDamtWYlpGTkk4Qms9PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjxkc2lnOktleUluZm8+PGRzaWc6S2V5VmFsdWU+PGRzaWc6UlNBS2V5VmFsdWU+PGRzaWc6TW9kdWx1cz5nSWI2bkFCOW9TL0FJNWpJajZXeW12UWhSeGlNbEUwN0c0YWJtTWxpWWk1eld6dmFGRTJ0blUrUlpJQmd0b1hjZ0RFSVUvdnNMUXV0N256Q245bUh4QzhKRWFWNEQ0VTkxajY0QXlaYWtTaHFKdzdxakpmcVV4eFBMMHlKdjJvRmlvdVBEakd1SjlKUGkwTnJzWnEreWZXZk01NHM0YjlTTmtjT0lWTXliWlU9PC9kc2lnOk1vZHVsdXM+PGRzaWc6RXhwb25lbnQ+QVFBQjwvZHNpZzpFeHBvbmVudD48L2RzaWc6UlNBS2V5VmFsdWU+PC9kc2lnOktleVZhbHVlPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdCBJZD0iRFNpZy5PYmplY3RfNldBUHAxN3FjdjJWTHpvMjJyMTdTZzIyIiBNaW1lVHlwZT0idGV4dC94bWwiPjxXZWI+dXAgdXAgYW5kIGF3YXk8L1dlYj48L2RzaWc6T2JqZWN0PjwvZHNpZzpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3Bpbmctc2hhMzg0LXJzYV9zaGEyNTYueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3Bpbmctc2hhMzg0LXJzYV9zaGEyNTYueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjYmM3ODEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1zaGEzODQtcnNhX3NoYTI1Ni54bWwKQEAgLTAsMCArMSBAQAorPGRzaWc6U2lnbmF0dXJlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTI1NiIvPjxkc2lnOlJlZmVyZW5jZSBVUkk9IiNEU2lnLk9iamVjdF91ZFJIZm1lanF2YlRMdjJxMG5VaWpBMjIiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3NoYTM4NCIvPjxkc2lnOkRpZ2VzdFZhbHVlPmxUMlR5dFVYanpqNHNhYy8wWURLSTloY0JJdkduclo1NXZYNTZjTkFwZnZQYndXVk5pTEYxVm5QZlNQTEcreFU8L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6U2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZT5UZE12aGRFYmtSZkhCb1hZNjFUQzNMUG1tMkMvWDVmWm4rMVBGclhvM3JRZTRGSG1BS3ovUm9vaVZYTXNwODJQVUthZVVQUUxmSENmYWhsRXhUY1FmV2YvRkNLUHBFVnFTc0dsMXN3SzF4RHRONTRQOUNVSXp2cmxmOEs3WDhxN1lWZFVxQmpEMTJ5WEtoRm1OZzZLdFNldmF1ZDJ4em5yUlhxNWVVYW5YSUk9PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjxkc2lnOktleUluZm8+PGRzaWc6S2V5VmFsdWU+PGRzaWc6UlNBS2V5VmFsdWU+PGRzaWc6TW9kdWx1cz5nSWI2bkFCOW9TL0FJNWpJajZXeW12UWhSeGlNbEUwN0c0YWJtTWxpWWk1eld6dmFGRTJ0blUrUlpJQmd0b1hjZ0RFSVUvdnNMUXV0N256Q245bUh4QzhKRWFWNEQ0VTkxajY0QXlaYWtTaHFKdzdxakpmcVV4eFBMMHlKdjJvRmlvdVBEakd1SjlKUGkwTnJzWnEreWZXZk01NHM0YjlTTmtjT0lWTXliWlU9PC9kc2lnOk1vZHVsdXM+PGRzaWc6RXhwb25lbnQ+QVFBQjwvZHNpZzpFeHBvbmVudD48L2RzaWc6UlNBS2V5VmFsdWU+PC9kc2lnOktleVZhbHVlPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdCBJZD0iRFNpZy5PYmplY3RfdWRSSGZtZWpxdmJUTHYycTBuVWlqQTIyIiBNaW1lVHlwZT0idGV4dC94bWwiPjxXZWI+dXAgdXAgYW5kIGF3YXk8L1dlYj48L2RzaWc6T2JqZWN0PjwvZHNpZzpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3Bpbmctc2hhNTEyLXJzYV9zaGEyNTYueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9vcmFjbGUvc2lnbmF0dXJlLWVudmVsb3Bpbmctc2hhNTEyLXJzYV9zaGEyNTYueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmM2JiM2IKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL29yYWNsZS9zaWduYXR1cmUtZW52ZWxvcGluZy1zaGE1MTItcnNhX3NoYTI1Ni54bWwKQEAgLTAsMCArMSBAQAorPGRzaWc6U2lnbmF0dXJlIHhtbG5zOmRzaWc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkc2lnOlNpZ25lZEluZm8+PGRzaWc6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PGRzaWc6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTI1NiIvPjxkc2lnOlJlZmVyZW5jZSBVUkk9IiNEU2lnLk9iamVjdF9EWlhrbzZ2cVJKeU4xelpHa2prMkFBMjIiIFR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiPjxkc2lnOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTUxMiIvPjxkc2lnOkRpZ2VzdFZhbHVlPld6NXpCUm5xMXlRUVV3ZXdabUZEUHlVSjNkaVB5bDJ3N3NjVy9YeUZJTkQwRWxaZExoaUVia2hIeFVVMytjRnRoREVjWjdLeUJmTTlIZnBqa2l1NExRPT08L2RzaWc6RGlnZXN0VmFsdWU+PC9kc2lnOlJlZmVyZW5jZT48L2RzaWc6U2lnbmVkSW5mbz48ZHNpZzpTaWduYXR1cmVWYWx1ZT5GNE5kQWhOZzZuOW9lUHhHWnlZSitBSE9xbjFmOHRzajY0ZmhQalMwdi9uRzQ5akZSTVJBWEdRay85WVB4L2VLVHVZOWg3LzNUZy9wMlZ5dUJhUTlvU0Q4dWtFc2xEeHZIUHQ3RGJQVjZCQWtpS1ZCdDdSTmR6Qkw3aUZYNktmSzE0a2pNckRFcUN1aGVHR2lYVEE0cWovN0o4UEFRbzVnN0dFeEwrVi95b289PC9kc2lnOlNpZ25hdHVyZVZhbHVlPjxkc2lnOktleUluZm8+PGRzaWc6S2V5VmFsdWU+PGRzaWc6UlNBS2V5VmFsdWU+PGRzaWc6TW9kdWx1cz5nSWI2bkFCOW9TL0FJNWpJajZXeW12UWhSeGlNbEUwN0c0YWJtTWxpWWk1eld6dmFGRTJ0blUrUlpJQmd0b1hjZ0RFSVUvdnNMUXV0N256Q245bUh4QzhKRWFWNEQ0VTkxajY0QXlaYWtTaHFKdzdxakpmcVV4eFBMMHlKdjJvRmlvdVBEakd1SjlKUGkwTnJzWnEreWZXZk01NHM0YjlTTmtjT0lWTXliWlU9PC9kc2lnOk1vZHVsdXM+PGRzaWc6RXhwb25lbnQ+QVFBQjwvZHNpZzpFeHBvbmVudD48L2RzaWc6UlNBS2V5VmFsdWU+PC9kc2lnOktleVZhbHVlPjwvZHNpZzpLZXlJbmZvPjxkc2lnOk9iamVjdCBJZD0iRFNpZy5PYmplY3RfRFpYa282dnFSSnlOMXpaR2tqazJBQTIyIiBNaW1lVHlwZT0idGV4dC94bWwiPjxXZWI+dXAgdXAgYW5kIGF3YXk8L1dlYj48L2RzaWc6T2JqZWN0PjwvZHNpZzpTaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9zdW4vYzE0bjEwLXNpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMjU2LnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvc3VuL2MxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTI1Ni54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJjNDgzNQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvc3VuL2MxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTI1Ni54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTI1NiIvPjxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+Ny9YVHNIYUJTT25KL2pYRDV2MHpMNlZLWXNrPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5TOFAxS3FFOUpLZlVDaEhxR1BzQjJBTTMwV25YN0hLNkxwRFI0UW90MlhJPTwvU2lnbmF0dXJlVmFsdWU+PE9iamVjdCBJZD0ib2JqZWN0Ij5zb21lIHRleHQ8L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL3N1bi9jMTRuMTAtc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGEzODQueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9zdW4vYzE0bjEwLXNpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMzg0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTAwNzY4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9zdW4vYzE0bjEwLXNpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMzg0LnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2htYWMtc2hhMzg0Ii8+PFJlZmVyZW5jZSBVUkk9IiNvYmplY3QiPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT43L1hUc0hhQlNPbkovalhENXYwekw2VktZc2s9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPkhXSTdNOUJ6cmxTRDNjckJnTGRNV0pDQWZBWW1pZlRvWlk2M09rZGVYaEVWQ0plYUpxN1hhdTBqUmhmTWFwakQ8L1NpZ25hdHVyZVZhbHVlPjxPYmplY3QgSWQ9Im9iamVjdCI+c29tZSB0ZXh0PC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9zdW4vYzE0bjEwLXNpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhNTEyLnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvc3VuL2MxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTUxMi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRhNjkyMgotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvc3VuL2MxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTUxMi54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTUxMiIvPjxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+Ny9YVHNIYUJTT25KL2pYRDV2MHpMNlZLWXNrPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT41bi9xM2NIRG9RTzdYRFBFMG1qRkFGUjdzK2IzRkovd1BHOEhiT2JINnNJNWxUa0dQbk9EeCtRR2ZEWkpNSWU4Y0dISnRsN1M2NmdaK1VGbWVOOFhtZz09PC9TaWduYXR1cmVWYWx1ZT48T2JqZWN0IElkPSJvYmplY3QiPnNvbWUgdGV4dDwvT2JqZWN0PjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvc3VuL2MxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1yc2Etc2hhMjU2LnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvc3VuL2MxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1yc2Etc2hhMjU2LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmYyMDMwCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9zdW4vYzE0bjEwLXNpZ25hdHVyZS1lbnZlbG9waW5nLXJzYS1zaGEyNTYueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJubyI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTI1NiIvPjxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+Ny9YVHNIYUJTT25KL2pYRDV2MHpMNlZLWXNrPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT55Zk45WHowTmoxcjJQV2NqQ3ZDcmVHMVFoS2NCK1ZDZEx4UGlQLzd2UlJNb0xFNjljUDl6K3IveU4wR0kyc2FLK3pUc0hxMFlIaWsvSjhBZG1TODEydz09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48S2V5VmFsdWU+PFJTQUtleVZhbHVlPjxNb2R1bHVzPnpqWTBjZDJFdDVEL05mRVdLSHFrSDdnelVndFJHa1lmR0Y3NUJkUkZObXlkeVFJRjY1N0NYMnFoSGtYYkY0Nll1WEU0d3JCUXZ6eHJaNGlSNXpPVXh3PT08L01vZHVsdXM+PEV4cG9uZW50PkFRQUI8L0V4cG9uZW50PjwvUlNBS2V5VmFsdWU+PC9LZXlWYWx1ZT48L0tleUluZm8+PE9iamVjdCBJZD0ib2JqZWN0Ij5zb21lIHRleHQ8L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL3N1bi9jMTRuMTAtc2lnbmF0dXJlLWVudmVsb3BpbmctcnNhX3NoYTM4NC54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL3N1bi9jMTRuMTAtc2lnbmF0dXJlLWVudmVsb3BpbmctcnNhX3NoYTM4NC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQzMzQ3ZQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvc3VuL2MxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1yc2Ffc2hhMzg0LnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEzODQiLz48UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPjcvWFRzSGFCU09uSi9qWEQ1djB6TDZWS1lzaz08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+aGhTYnlRVGkzLzltSDdxOHp1SjVBOVFKenNEMC9nVVBIVmhOaGVNbU01YWFqaC9xVi9ITWF6RE43bzdLSElLUXdIYTFHck1nMjVFSmJDVDZERXpQVDlCVkd3UGh1QThNdVFMdktRVlBKUjhTSkRzN3lKQ2lRbDcvMDRxWldJSU1XbFJVdldUdjJPa25ZdmJZMml1djBTV2VNYkZrQUtBV2xhMy84anM0UXhjPTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PEtleVZhbHVlPjxSU0FLZXlWYWx1ZT48TW9kdWx1cz5qTXdqYk9XcVhNc0RJcnpoRDB0QTlQN1VraDFQMm85ZUJCVXZpWlRhWXdzMFR2OGNITWJ2dk5idms4dW9kOUtxRTFlMjdGSlVOUVk3T1BrRjRVVHNBYnNsVTRNTDFMcjRiTkJ3ZjRRbWc5OHlxbVhLdDRzMjl5ZURGM2JqTDFYeUFSTlc3aEFJMjRTd1RwNHdzdkE5OFR0Qm5MMXc4S0g4Rm1KcXdaVzdLV0U9PC9Nb2R1bHVzPjxFeHBvbmVudD5BUUFCPC9FeHBvbmVudD48L1JTQUtleVZhbHVlPjwvS2V5VmFsdWU+PC9LZXlJbmZvPjxPYmplY3QgSWQ9Im9iamVjdCI+c29tZSB0ZXh0PC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9zdW4vYzE0bjEwLXNpZ25hdHVyZS1lbnZlbG9waW5nLXJzYV9zaGE1MTIueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9zdW4vYzE0bjEwLXNpZ25hdHVyZS1lbnZlbG9waW5nLXJzYV9zaGE1MTIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmYzA0M2MKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL3N1bi9jMTRuMTAtc2lnbmF0dXJlLWVudmVsb3BpbmctcnNhX3NoYTUxMi54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhNTEyIi8+PFJlZmVyZW5jZSBVUkk9IiNvYmplY3QiPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT43L1hUc0hhQlNPbkovalhENXYwekw2VktZc2s9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPktrSjN3MUdYSGlZcjl6SmxBTGxaZGlJN0hkTWZUN1Nkc0tuZ2c2VFZFQlBzRjUrTnVQeXp5K1Vwa3BDOUQ1UWV5UFZlM05SQlBNVGM3c1hVR0Q2WHpJc1A5cjUxbmZ4WWR0U0xaOWUzazJWdStaN3d0R1VsbFphMWpXQnJEaGFKa0gxOFV5Znpua21QRDd1OFZvdHEvdHk2NmxkaWdLRENBdEVIZkt0R3Rrcz08L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxLZXlWYWx1ZT48UlNBS2V5VmFsdWU+PE1vZHVsdXM+ak13amJPV3FYTXNESXJ6aEQwdEE5UDdVa2gxUDJvOWVCQlV2aVpUYVl3czBUdjhjSE1idnZOYnZrOHVvZDlLcUUxZTI3RkpVTlFZN09Qa0Y0VVRzQWJzbFU0TUwxTHI0Yk5Cd2Y0UW1nOTh5cW1YS3Q0czI5eWVERjNiakwxWHlBUk5XN2hBSTI0U3dUcDR3c3ZBOThUdEJuTDF3OEtIOEZtSnF3Wlc3S1dFPTwvTW9kdWx1cz48RXhwb25lbnQ+QVFBQjwvRXhwb25lbnQ+PC9SU0FLZXlWYWx1ZT48L0tleVZhbHVlPjwvS2V5SW5mbz48T2JqZWN0IElkPSJvYmplY3QiPnNvbWUgdGV4dDwvT2JqZWN0PjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvc3VuL2MxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1zaGEyNTYtcnNhLXNoYTI1Ni54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL3N1bi9jMTRuMTAtc2lnbmF0dXJlLWVudmVsb3Bpbmctc2hhMjU2LXJzYS1zaGEyNTYueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4YzI5ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL3N1bi9jMTRuMTAtc2lnbmF0dXJlLWVudmVsb3Bpbmctc2hhMjU2LXJzYS1zaGEyNTYueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJubyI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTI1NiIvPjxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PERpZ2VzdFZhbHVlPmlEaFl0NzhvMjk0ZkE2cHpRN2s0NCtlZWpyUU1pK1dYM2wzVXJVZHRMMVE9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPkFhNkhUeFdFVHNaWituTWRVMm9kOHAxL1NHL1hKT1prTGV3eDVoQUtTbk9STzJFVW8yQll1b0g1TzhPOWJJUW5xYU8yQzBta3RZK1JuNWhVc1hGRkpBPT08L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxLZXlWYWx1ZT48UlNBS2V5VmFsdWU+PE1vZHVsdXM+empZMGNkMkV0NUQvTmZFV0tIcWtIN2d6VWd0UkdrWWZHRjc1QmRSRk5teWR5UUlGNjU3Q1gycWhIa1hiRjQ2WXVYRTR3ckJRdnp4clo0aVI1ek9VeHc9PTwvTW9kdWx1cz48RXhwb25lbnQ+QVFBQjwvRXhwb25lbnQ+PC9SU0FLZXlWYWx1ZT48L0tleVZhbHVlPjwvS2V5SW5mbz48T2JqZWN0IElkPSJvYmplY3QiPnNvbWUgdGV4dDwvT2JqZWN0PjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvc3VuL2MxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1zaGEzODQtcnNhX3NoYTI1Ni54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL3N1bi9jMTRuMTAtc2lnbmF0dXJlLWVudmVsb3Bpbmctc2hhMzg0LXJzYV9zaGEyNTYueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhOGRhY2EKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL3N1bi9jMTRuMTAtc2lnbmF0dXJlLWVudmVsb3Bpbmctc2hhMzg0LXJzYV9zaGEyNTYueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJubyI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTI1NiIvPjxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjc2hhMzg0Ii8+PERpZ2VzdFZhbHVlPnVUeDhBZXFyVG12K25palJzV1c3VE9zMXBDSXVDdWRzRlJWbG9QNmhQaW44UTR4OWZGWDJqL3pqNTNYQjM3T0c8L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+c2pIM09KN2lJUkFRWVE3dFM2SUpuYUZvQzVSVC8ySG56dzF6aEV6ZHZ4dXJzOFhXSnNxVUlHLzQxTkpLdXhZcDJlZmJUc3BjYk5sd2FIZldvdGZ5V2c9PTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PEtleVZhbHVlPjxSU0FLZXlWYWx1ZT48TW9kdWx1cz56alkwY2QyRXQ1RC9OZkVXS0hxa0g3Z3pVZ3RSR2tZZkdGNzVCZFJGTm15ZHlRSUY2NTdDWDJxaEhrWGJGNDZZdVhFNHdyQlF2enhyWjRpUjV6T1V4dz09PC9Nb2R1bHVzPjxFeHBvbmVudD5BUUFCPC9FeHBvbmVudD48L1JTQUtleVZhbHVlPjwvS2V5VmFsdWU+PC9LZXlJbmZvPjxPYmplY3QgSWQ9Im9iamVjdCI+c29tZSB0ZXh0PC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9zdW4vYzE0bjEwLXNpZ25hdHVyZS1lbnZlbG9waW5nLXNoYTUxMi1yc2Ffc2hhMjU2LnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvc3VuL2MxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1zaGE1MTItcnNhX3NoYTI1Ni54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc3MDI5OQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvc3VuL2MxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1zaGE1MTItcnNhX3NoYTI1Ni54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PFJlZmVyZW5jZSBVUkk9IiNvYmplY3QiPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGE1MTIiLz48RGlnZXN0VmFsdWU+RTJKbzgwMXVVQ2dBSWE2NW5pTFU3alBTV1BXVWJzZ1Qrb2tQZ0Jjdy9oNzJWN2JtSTBKMmZhSis4RWJ3VndhaFhEbmJSYWYyMldxZXJ6WDF2TDBRekE9PTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT56Ym13clVzUENZUkVieVlSbncycGI5MlpaN3crODBxTnkrOENFT2p5WGtJbmk3OGIwTHFVeWJuTFlNWWxxZWtpYXdmKzExa3R5RzZQVmxPNG1xeW8ydz09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48S2V5VmFsdWU+PFJTQUtleVZhbHVlPjxNb2R1bHVzPnpqWTBjZDJFdDVEL05mRVdLSHFrSDdnelVndFJHa1lmR0Y3NUJkUkZObXlkeVFJRjY1N0NYMnFoSGtYYkY0Nll1WEU0d3JCUXZ6eHJaNGlSNXpPVXh3PT08L01vZHVsdXM+PEV4cG9uZW50PkFRQUI8L0V4cG9uZW50PjwvUlNBS2V5VmFsdWU+PC9LZXlWYWx1ZT48L0tleUluZm8+PE9iamVjdCBJZD0ib2JqZWN0Ij5zb21lIHRleHQ8L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL3N1bi9pbmRleC5odG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9zdW4vaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmUxYjA4Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9zdW4vaW5kZXguaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIgorImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgLzIwMDgveG1sc2VjL0dyb3VwL2ludGVyb3AveG1sZHNpZzExL3N1bjwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC8yMDA4L3htbHNlYy9Hcm91cC9pbnRlcm9wL3htbGRzaWcxMS9zdW48L2gxPgorPHRhYmxlPjx0cj48dGg+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPjx0cj48dGggY29sc3Bhbj0iNSI+PGhyIC8+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbRElSXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9Ii8yMDA4L3htbHNlYy9Hcm91cC9pbnRlcm9wL3htbGRzaWcxMS8iPlBhcmVudCBEaXJlY3Rvcnk8L2E+PC90ZD48dGQ+Jm5ic3A7PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9ImMxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTI1Ni54bWwiPmMxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTI1Ni54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wOC1NYXktMjAwOSAxNzozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41ODQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9ImMxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTM4NC54bWwiPmMxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTM4NC54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wOC1NYXktMjAwOSAxNzozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MDQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9ImMxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTUxMi54bWwiPmMxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTUxMi54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wOC1NYXktMjAwOSAxNzozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MjggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9ImMxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1yc2Etc2hhMjU2LnhtbCI+YzE0bjEwLXNpZ25hdHVyZS1lbnZlbG9waW5nLXJzYS1zaGEyNTYueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDgtTWF5LTIwMDkgMTc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODI2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJjMTRuMTAtc2lnbmF0dXJlLWVudmVsb3BpbmctcnNhX3NoYTM4NC54bWwiPmMxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1yc2Ffc2hhMzg0LnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA4LU1heS0yMDA5IDE3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0iYzE0bjEwLXNpZ25hdHVyZS1lbnZlbG9waW5nLXJzYV9zaGE1MTIueG1sIj5jMTRuMTAtc2lnbmF0dXJlLWVudmVsb3BpbmctcnNhX3NoYTUxMi54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wOC1NYXktMjAwOSAxNzozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9ImMxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1zaGEyNTYtcnNhLXNoYTI1Ni54bWwiPmMxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1zaGEyNTYtcnNhLXNoYTI1Ni54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wOC1NYXktMjAwOSAxNzozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9ImMxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1zaGEzODQtcnNhX3NoYTI1Ni54bWwiPmMxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1zaGEzODQtcnNhX3NoYTI1Ni54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wOC1NYXktMjAwOSAxNzozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44NjkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9ImMxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1zaGE1MTItcnNhX3NoYTI1Ni54bWwiPmMxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1zaGE1MTItcnNhX3NoYTI1Ni54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wOC1NYXktMjAwOSAxNzozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44ODcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9InNpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMjU2LnhtbCI+c2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGEyNTYueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDUtTWF5LTIwMDkgMTk6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjU5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJzaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTM4NC54bWwiPnNpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMzg0LnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA1LU1heS0yMDA5IDE5OjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY3OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0ic2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGE1MTIueG1sIj5zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTUxMi54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wNS1NYXktMjAwOSAxOToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9InNpZ25hdHVyZS1lbnZlbG9waW5nLXJzYS1zaGEyNTYueG1sIj5zaWduYXR1cmUtZW52ZWxvcGluZy1yc2Etc2hhMjU2LnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA1LU1heS0yMDA5IDE5OjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkwMSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0ic2lnbmF0dXJlLWVudmVsb3BpbmctcnNhX3NoYTM4NC54bWwiPnNpZ25hdHVyZS1lbnZlbG9waW5nLXJzYV9zaGEzODQueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDUtTWF5LTIwMDkgMTk6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJzaWduYXR1cmUtZW52ZWxvcGluZy1yc2Ffc2hhNTEyLnhtbCI+c2lnbmF0dXJlLWVudmVsb3BpbmctcnNhX3NoYTUxMi54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wNS1NYXktMjAwOSAxOToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9InNpZ25hdHVyZS1lbnZlbG9waW5nLXNoYTI1Ni1yc2Etc2hhMjU2LnhtbCI+c2lnbmF0dXJlLWVudmVsb3Bpbmctc2hhMjU2LXJzYS1zaGEyNTYueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDUtTWF5LTIwMDkgMTk6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTE4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJzaWduYXR1cmUtZW52ZWxvcGluZy1zaGEzODQtcnNhX3NoYTI1Ni54bWwiPnNpZ25hdHVyZS1lbnZlbG9waW5nLXNoYTM4NC1yc2Ffc2hhMjU2LnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA1LU1heS0yMDA5IDE5OjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk0NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0ic2lnbmF0dXJlLWVudmVsb3Bpbmctc2hhNTEyLXJzYV9zaGEyNTYueG1sIj5zaWduYXR1cmUtZW52ZWxvcGluZy1zaGE1MTItcnNhX3NoYTI1Ni54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wNS1NYXktMjAwOSAxOToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45NjIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHIgLz48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvc3VuL2luZGV4Lmh0bWw/Qz1EO089QSBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvc3VuL2luZGV4Lmh0bWw/Qz1EO089QQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWUxZDIwCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9zdW4vaW5kZXguaHRtbD9DPUQ7Tz1BCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iCisiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvMjAwOC94bWxzZWMvR3JvdXAvaW50ZXJvcC94bWxkc2lnMTEvc3VuPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgLzIwMDgveG1sc2VjL0dyb3VwL2ludGVyb3AveG1sZHNpZzExL3N1bjwvaDE+Cis8dGFibGU+PHRyPjx0aD48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1BIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1EIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+PHRyPjx0aCBjb2xzcGFuPSI1Ij48aHIgLz48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltESVJdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0iLzIwMDgveG1sc2VjL0dyb3VwL2ludGVyb3AveG1sZHNpZzExLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0iYzE0bjEwLXNpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMjU2LnhtbCI+YzE0bjEwLXNpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMjU2LnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA4LU1heS0yMDA5IDE3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU4NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0iYzE0bjEwLXNpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMzg0LnhtbCI+YzE0bjEwLXNpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMzg0LnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA4LU1heS0yMDA5IDE3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwNCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0iYzE0bjEwLXNpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhNTEyLnhtbCI+YzE0bjEwLXNpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhNTEyLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA4LU1heS0yMDA5IDE3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYyOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0iYzE0bjEwLXNpZ25hdHVyZS1lbnZlbG9waW5nLXJzYS1zaGEyNTYueG1sIj5jMTRuMTAtc2lnbmF0dXJlLWVudmVsb3BpbmctcnNhLXNoYTI1Ni54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wOC1NYXktMjAwOSAxNzozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MjYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9ImMxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1yc2Ffc2hhMzg0LnhtbCI+YzE0bjEwLXNpZ25hdHVyZS1lbnZlbG9waW5nLXJzYV9zaGEzODQueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDgtTWF5LTIwMDkgMTc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJjMTRuMTAtc2lnbmF0dXJlLWVudmVsb3BpbmctcnNhX3NoYTUxMi54bWwiPmMxNG4xMC1zaWduYXR1cmUtZW52ZWxvcGluZy1yc2Ffc2hhNTEyLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA4LU1heS0yMDA5IDE3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0iYzE0bjEwLXNpZ25hdHVyZS1lbnZlbG9waW5nLXNoYTI1Ni1yc2Etc2hhMjU2LnhtbCI+YzE0bjEwLXNpZ25hdHVyZS1lbnZlbG9waW5nLXNoYTI1Ni1yc2Etc2hhMjU2LnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA4LU1heS0yMDA5IDE3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0iYzE0bjEwLXNpZ25hdHVyZS1lbnZlbG9waW5nLXNoYTM4NC1yc2Ffc2hhMjU2LnhtbCI+YzE0bjEwLXNpZ25hdHVyZS1lbnZlbG9waW5nLXNoYTM4NC1yc2Ffc2hhMjU2LnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA4LU1heS0yMDA5IDE3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg2OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0iYzE0bjEwLXNpZ25hdHVyZS1lbnZlbG9waW5nLXNoYTUxMi1yc2Ffc2hhMjU2LnhtbCI+YzE0bjEwLXNpZ25hdHVyZS1lbnZlbG9waW5nLXNoYTUxMi1yc2Ffc2hhMjU2LnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA4LU1heS0yMDA5IDE3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg4NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0ic2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGEyNTYueG1sIj5zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTI1Ni54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wNS1NYXktMjAwOSAxOToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9InNpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMzg0LnhtbCI+c2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGEzODQueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDUtTWF5LTIwMDkgMTk6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Njc5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJzaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTUxMi54bWwiPnNpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhNTEyLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA1LU1heS0yMDA5IDE5OjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcwMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0ic2lnbmF0dXJlLWVudmVsb3BpbmctcnNhLXNoYTI1Ni54bWwiPnNpZ25hdHVyZS1lbnZlbG9waW5nLXJzYS1zaGEyNTYueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDUtTWF5LTIwMDkgMTk6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTAxIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJzaWduYXR1cmUtZW52ZWxvcGluZy1yc2Ffc2hhMzg0LnhtbCI+c2lnbmF0dXJlLWVudmVsb3BpbmctcnNhX3NoYTM4NC54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wNS1NYXktMjAwOSAxOToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9InNpZ25hdHVyZS1lbnZlbG9waW5nLXJzYV9zaGE1MTIueG1sIj5zaWduYXR1cmUtZW52ZWxvcGluZy1yc2Ffc2hhNTEyLnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA1LU1heS0yMDA5IDE5OjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIiB3aWR0aD0iMjAiIGhlaWdodD0iMjIiIC8+PC90ZD48dGQ+PGEgaHJlZj0ic2lnbmF0dXJlLWVudmVsb3Bpbmctc2hhMjU2LXJzYS1zaGEyNTYueG1sIj5zaWduYXR1cmUtZW52ZWxvcGluZy1zaGEyNTYtcnNhLXNoYTI1Ni54bWw8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wNS1NYXktMjAwOSAxOToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45MTggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIyIiAvPjwvdGQ+PHRkPjxhIGhyZWY9InNpZ25hdHVyZS1lbnZlbG9waW5nLXNoYTM4NC1yc2Ffc2hhMjU2LnhtbCI+c2lnbmF0dXJlLWVudmVsb3Bpbmctc2hhMzg0LXJzYV9zaGEyNTYueG1sPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDUtTWF5LTIwMDkgMTk6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTQ0IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMiIgLz48L3RkPjx0ZD48YSBocmVmPSJzaWduYXR1cmUtZW52ZWxvcGluZy1zaGE1MTItcnNhX3NoYTI1Ni54bWwiPnNpZ25hdHVyZS1lbnZlbG9waW5nLXNoYTUxMi1yc2Ffc2hhMjU2LnhtbDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjA1LU1heS0yMDA5IDE5OjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk2MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRoIGNvbHNwYW49IjUiPjxociAvPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9zdW4vc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGEyNTYueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9zdW4vc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGEyNTYueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5YzQ5YzIKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL3N1bi9zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTI1Ni54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjaG1hYy1zaGEyNTYiLz48UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+Ny9YVHNIYUJTT25KL2pYRDV2MHpMNlZLWXNrPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5pRnhTTUVlRkphNEdmOG9yL0dpazU4MWFBd2lFQk00SG5FV2YzK2NURmQ0PTwvU2lnbmF0dXJlVmFsdWU+PE9iamVjdCBJZD0ib2JqZWN0Ij5zb21lIHRleHQ8L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL3N1bi9zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTM4NC54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL3N1bi9zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTM4NC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFmMTMyMAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvc3VuL3NpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMzg0LnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTM4NCIvPjxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT43L1hUc0hhQlNPbkovalhENXYwekw2VktZc2s9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPjZPQlZ5SnFsTG16NHBYa1pLT3JmUnRqKzZON3BQYkh6MkFnWmxBZ2JScU5pN1gySGlNak5iSnFOb3RjbEEwK3I8L1NpZ25hdHVyZVZhbHVlPjxPYmplY3QgSWQ9Im9iamVjdCI+c29tZSB0ZXh0PC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9zdW4vc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGE1MTIueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9zdW4vc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGE1MTIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1NjNlMzEKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL3N1bi9zaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTUxMi54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjaG1hYy1zaGE1MTIiLz48UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+Ny9YVHNIYUJTT25KL2pYRDV2MHpMNlZLWXNrPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5pOG5tN09jK3dFNlE5L0VXUXlhSi9lcG1ZeldnL3Zrd1lkaUNyQU5ZTE9rYjVTb0JHcmJDaEN3bmxEbmlvSkcxQ3huY2pRZlliRDBMY2F3RFdna0V3QT09PC9TaWduYXR1cmVWYWx1ZT48T2JqZWN0IElkPSJvYmplY3QiPnNvbWUgdGV4dDwvT2JqZWN0PjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvc3VuL3NpZ25hdHVyZS1lbnZlbG9waW5nLXJzYS1zaGEyNTYueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9zdW4vc2lnbmF0dXJlLWVudmVsb3BpbmctcnNhLXNoYTI1Ni54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM5YTRjMQotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvc3VuL3NpZ25hdHVyZS1lbnZlbG9waW5nLXJzYS1zaGEyNTYueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJubyI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz48RGlnZXN0VmFsdWU+Ny9YVHNIYUJTT25KL2pYRDV2MHpMNlZLWXNrPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT5OcEdJWjFEQXhCc2RTaERzSHI0QkhTV1lxUTIvaEhkOVUwUDJMcXhnVTVtN0hNUDFPZ0lWTk1MNGFUZ3o0aEFmaVJiUXBScHpCWkQyWWw3K1ZjWDNRQT09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48S2V5VmFsdWU+PFJTQUtleVZhbHVlPjxNb2R1bHVzPnpqWTBjZDJFdDVEL05mRVdLSHFrSDdnelVndFJHa1lmR0Y3NUJkUkZObXlkeVFJRjY1N0NYMnFoSGtYYkY0Nll1WEU0d3JCUXZ6eHJaNGlSNXpPVXh3PT08L01vZHVsdXM+PEV4cG9uZW50PkFRQUI8L0V4cG9uZW50PjwvUlNBS2V5VmFsdWU+PC9LZXlWYWx1ZT48L0tleUluZm8+PE9iamVjdCBJZD0ib2JqZWN0Ij5zb21lIHRleHQ8L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL3N1bi9zaWduYXR1cmUtZW52ZWxvcGluZy1yc2Ffc2hhMzg0LnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvc3VuL3NpZ25hdHVyZS1lbnZlbG9waW5nLXJzYV9zaGEzODQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlYWMwYmMKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL3N1bi9zaWduYXR1cmUtZW52ZWxvcGluZy1yc2Ffc2hhMzg0LnhtbApAQCAtMCwwICsxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPz48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMzg0Ii8+PFJlZmVyZW5jZSBVUkk9IiNvYmplY3QiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PERpZ2VzdFZhbHVlPjcvWFRzSGFCU09uSi9qWEQ1djB6TDZWS1lzaz08L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+ZjZYMnRKR1BSaFdTUEx6cSswQXN4c2lzYytHZzVxc3lCdFVESGlIYkFlWXZjSVkwMTRRTHJWSnp5YmJlMXJzaXZpeWo3NHh1VE5JaTRHUThLVkdzVmZEZXFvcGRpQlBoZEg1cFVqcGJSNjVGa1YweHB4SXRGYjFEb21JMUljNUNRdUlHWTdmdCtjTXFUd05LUGNUdEhJblIzem9FU0VzRzF5T0tIRkRnRWtRPTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PEtleVZhbHVlPjxSU0FLZXlWYWx1ZT48TW9kdWx1cz5qTXdqYk9XcVhNc0RJcnpoRDB0QTlQN1VraDFQMm85ZUJCVXZpWlRhWXdzMFR2OGNITWJ2dk5idms4dW9kOUtxRTFlMjdGSlVOUVk3T1BrRjRVVHNBYnNsVTRNTDFMcjRiTkJ3ZjRRbWc5OHlxbVhLdDRzMjl5ZURGM2JqTDFYeUFSTlc3aEFJMjRTd1RwNHdzdkE5OFR0Qm5MMXc4S0g4Rm1KcXdaVzdLV0U9PC9Nb2R1bHVzPjxFeHBvbmVudD5BUUFCPC9FeHBvbmVudD48L1JTQUtleVZhbHVlPjwvS2V5VmFsdWU+PC9LZXlJbmZvPjxPYmplY3QgSWQ9Im9iamVjdCI+c29tZSB0ZXh0PC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9zdW4vc2lnbmF0dXJlLWVudmVsb3BpbmctcnNhX3NoYTUxMi54bWwgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL3N1bi9zaWduYXR1cmUtZW52ZWxvcGluZy1yc2Ffc2hhNTEyLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2RjOWZmCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9zdW4vc2lnbmF0dXJlLWVudmVsb3BpbmctcnNhX3NoYTUxMi54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTUxMiIvPjxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxEaWdlc3RWYWx1ZT43L1hUc0hhQlNPbkovalhENXYwekw2VktZc2s9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPlhRaGs3cnIxZWVqanR5d1F0eFI1QzJoY1RsZEhNaURiblJYV3JBajhHV2lvL0VoVndHYUNyemFtZm45bk1mY3o4TWRjRDVtSUdsVE95Z1dEbW5MQlVqZnFzclZ0Q0ZodlNmdS9pdy8zS0o3S1VKOTAyaXpGSFBBUEx5aVh0czMxbE5WZi91cjBKeXUrWTk2ZnNtUWNaTkY2NjgycDNXVm5VM3g0bEFIWnVvTT08L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxLZXlWYWx1ZT48UlNBS2V5VmFsdWU+PE1vZHVsdXM+ak13amJPV3FYTXNESXJ6aEQwdEE5UDdVa2gxUDJvOWVCQlV2aVpUYVl3czBUdjhjSE1idnZOYnZrOHVvZDlLcUUxZTI3RkpVTlFZN09Qa0Y0VVRzQWJzbFU0TUwxTHI0Yk5Cd2Y0UW1nOTh5cW1YS3Q0czI5eWVERjNiakwxWHlBUk5XN2hBSTI0U3dUcDR3c3ZBOThUdEJuTDF3OEtIOEZtSnF3Wlc3S1dFPTwvTW9kdWx1cz48RXhwb25lbnQ+QVFBQjwvRXhwb25lbnQ+PC9SU0FLZXlWYWx1ZT48L0tleVZhbHVlPjwvS2V5SW5mbz48T2JqZWN0IElkPSJvYmplY3QiPnNvbWUgdGV4dDwvT2JqZWN0PjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvc3VuL3NpZ25hdHVyZS1lbnZlbG9waW5nLXNoYTI1Ni1yc2Etc2hhMjU2LnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvc3VuL3NpZ25hdHVyZS1lbnZlbG9waW5nLXNoYTI1Ni1yc2Etc2hhMjU2LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjU4MjdjCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9zdW4vc2lnbmF0dXJlLWVudmVsb3Bpbmctc2hhMjU2LXJzYS1zaGEyNTYueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJubyI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PERpZ2VzdFZhbHVlPmlEaFl0NzhvMjk0ZkE2cHpRN2s0NCtlZWpyUU1pK1dYM2wzVXJVZHRMMVE9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPkNkck13QWd5TDd2Mkp3VTZTeGdEZ1hoS0k2UVluUk1PUklBZElhMEhsSkViM2VsZTVpOFZCa0tJYlJlZDlyNFdtbEI5OFdkRU4raS9DTC9Tc1BkSTVnPT08L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxLZXlWYWx1ZT48UlNBS2V5VmFsdWU+PE1vZHVsdXM+empZMGNkMkV0NUQvTmZFV0tIcWtIN2d6VWd0UkdrWWZHRjc1QmRSRk5teWR5UUlGNjU3Q1gycWhIa1hiRjQ2WXVYRTR3ckJRdnp4clo0aVI1ek9VeHc9PTwvTW9kdWx1cz48RXhwb25lbnQ+QVFBQjwvRXhwb25lbnQ+PC9SU0FLZXlWYWx1ZT48L0tleVZhbHVlPjwvS2V5SW5mbz48T2JqZWN0IElkPSJvYmplY3QiPnNvbWUgdGV4dDwvT2JqZWN0PjwvU2lnbmF0dXJlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvc3VuL3NpZ25hdHVyZS1lbnZlbG9waW5nLXNoYTM4NC1yc2Ffc2hhMjU2LnhtbCBiL2RhdGEvb3JnL3czYy93d3cvaW50ZXJvcC94bWxkc2lnMTEvc3VuL3NpZ25hdHVyZS1lbnZlbG9waW5nLXNoYTM4NC1yc2Ffc2hhMjU2LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2RlMmUwCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9zdW4vc2lnbmF0dXJlLWVudmVsb3Bpbmctc2hhMzg0LXJzYV9zaGEyNTYueG1sCkBAIC0wLDAgKzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJubyI/PjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48UmVmZXJlbmNlIFVSST0iI29iamVjdCI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjc2hhMzg0Ii8+PERpZ2VzdFZhbHVlPnVUeDhBZXFyVG12K25palJzV1c3VE9zMXBDSXVDdWRzRlJWbG9QNmhQaW44UTR4OWZGWDJqL3pqNTNYQjM3T0c8L0RpZ2VzdFZhbHVlPjwvUmVmZXJlbmNlPjwvU2lnbmVkSW5mbz48U2lnbmF0dXJlVmFsdWU+Sm1IaWNJVUJrYndMVFRDOERpTklReE05OWQ4S3FGQ1BqaTAvSGZ6OEhKandYMXM0ZFh4cS9PTitKbUVONWo0VVBuSnZHTkFQOWNWWExmQ01SQWJlNUE9PTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PEtleVZhbHVlPjxSU0FLZXlWYWx1ZT48TW9kdWx1cz56alkwY2QyRXQ1RC9OZkVXS0hxa0g3Z3pVZ3RSR2tZZkdGNzVCZFJGTm15ZHlRSUY2NTdDWDJxaEhrWGJGNDZZdVhFNHdyQlF2enhyWjRpUjV6T1V4dz09PC9Nb2R1bHVzPjxFeHBvbmVudD5BUUFCPC9FeHBvbmVudD48L1JTQUtleVZhbHVlPjwvS2V5VmFsdWU+PC9LZXlJbmZvPjxPYmplY3QgSWQ9Im9iamVjdCI+c29tZSB0ZXh0PC9PYmplY3Q+PC9TaWduYXR1cmU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9zdW4vc2lnbmF0dXJlLWVudmVsb3Bpbmctc2hhNTEyLXJzYV9zaGEyNTYueG1sIGIvZGF0YS9vcmcvdzNjL3d3dy9pbnRlcm9wL3htbGRzaWcxMS9zdW4vc2lnbmF0dXJlLWVudmVsb3Bpbmctc2hhNTEyLXJzYV9zaGEyNTYueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5MTA5YzYKLS0tIC9kZXYvbnVsbAorKysgYi9kYXRhL29yZy93M2Mvd3d3L2ludGVyb3AveG1sZHNpZzExL3N1bi9zaWduYXR1cmUtZW52ZWxvcGluZy1zaGE1MTItcnNhX3NoYTI1Ni54bWwKQEAgLTAsMCArMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTI1NiIvPjxSZWZlcmVuY2UgVVJJPSIjb2JqZWN0Ij48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIi8+PC9UcmFuc2Zvcm1zPjxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGE1MTIiLz48RGlnZXN0VmFsdWU+RTJKbzgwMXVVQ2dBSWE2NW5pTFU3alBTV1BXVWJzZ1Qrb2tQZ0Jjdy9oNzJWN2JtSTBKMmZhSis4RWJ3VndhaFhEbmJSYWYyMldxZXJ6WDF2TDBRekE9PTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWduYXR1cmVWYWx1ZT51QVNsSEwzanMraXhjZWQzQ0Ywb0VoTUtYNzE5S3hTdWcyL2UvVlZtRzcyZTNsWmRUR0tuOXdzSGQrUXdtaDEwcXU0NDI2Z2MxWDRqTkJ0S0hldVNFQT09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48S2V5VmFsdWU+PFJTQUtleVZhbHVlPjxNb2R1bHVzPnpqWTBjZDJFdDVEL05mRVdLSHFrSDdnelVndFJHa1lmR0Y3NUJkUkZObXlkeVFJRjY1N0NYMnFoSGtYYkY0Nll1WEU0d3JCUXZ6eHJaNGlSNXpPVXh3PT08L01vZHVsdXM+PEV4cG9uZW50PkFRQUI8L0V4cG9uZW50PjwvUlNBS2V5VmFsdWU+PC9LZXlWYWx1ZT48L0tleUluZm8+PE9iamVjdCBJZD0ib2JqZWN0Ij5zb21lIHRleHQ8L09iamVjdD48L1NpZ25hdHVyZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kYXRhL3Rlc3QuamtzIGIvZGF0YS90ZXN0LmprcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzM0MTA5Ci0tLSAvZGV2L251bGwKKysrIGIvZGF0YS90ZXN0LmprcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kYXRhL3dlYnNpZy5jb25mIGIvZGF0YS93ZWJzaWcuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lM2RhODEwCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS93ZWJzaWcuY29uZgpAQCAtMCwwICsxLDE0IEBACisjIGRlZmF1bHQgU0FYIHBhcnNlciBpcyBBcGFjaGUncyBYZXJjZXMKK0RFRkFVTFRfU0FYX1BBUlNFUiAgICAgID0gb3JnLmFwYWNoZS54ZXJjZXMucGFyc2Vycy5TQVhQYXJzZXIKKworbG9jYWxYbWxVcmwgICAgICAgICAgICAgPSBkYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvb3V0cHV0L3ZvdWNoZXJfdW5pLnhtbAorbG9jYWxHaWZVcmwgICAgICAgICAgICAgPSBkYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvaW5wdXQvVW5pTG9nb0EuZ2lmCitzaWduYXR1cmVPdXRwdXRGaWxlTmFtZSA9IGRhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9vdXRwdXQvU2lnbmF0dXJlLnhtbAorcmVtb3RlWG1sVXJsICAgICAgICAgICAgPSBodHRwOi8vd3d3LnhtbHNlY3VyaXR5Lm9yZy9zaWduZWQueG1sCityZW1vdGVHaWZVcmwgICAgICAgICAgICA9IGh0dHA6Ly93d3cueG1sc2VjdXJpdHkub3JnL3NpZ25lZC5naWYKKwora2V5c3RvcmVOYW1lICAgICAgICAgICAgPSBkYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvaW5wdXQva2V5c3RvcmUuamtzCitrZXlzdG9yZVR5cGUJCT0gSktTCitrZXlBbGlhcyAgICAgICAgICAgICAgICA9IHRlc3QKK2tleXN0b3JlUGFzc3dvcmQgICAgICAgID0geG1sc2VjdXJpdHkKK2tleVBhc3N3b3JkICAgICAgICAgICAgID0geG1sc2VjdXJpdHkKZGlmZiAtLWdpdCBhL2RhdGEvd2Vic2lnTWlmbGV0LnhtbCBiL2RhdGEvd2Vic2lnTWlmbGV0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDc0NmVjCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS93ZWJzaWdNaWZsZXQueG1sCkBAIC0wLDAgKzEsNDIgQEAKKzxCb29rPgorICAgIDxPcHRpb25zPgorICAgICAgICA8Qm9va1RpdGxlPiJUaGUgV2Vic2lnIExpYnJhcnkiPC9Cb29rVGl0bGU+CisgICAgICAgIDxCb29rU3ViVGl0bGU+InhtbHNlY3VyaXR5Lm9yZyI8L0Jvb2tTdWJUaXRsZT4KKyAgICAgICAgPEJvb2tBdXRob3I+IkNocmlzdGlhbiBHZXVlci1Qb2xsbWFubiI8L0Jvb2tBdXRob3I+CisgICAgICAgIDxCb29rVmVyc2lvbj4iVm9sdW1lIDEiPC9Cb29rVmVyc2lvbj4KKyAgICAgICAgPEJvb2tDb3B5cmlnaHQ+IkNvcHlyaWdodCBceGE5IDIwMDEgSW5zdGl0dXRlIGZvciBEYXRhIENvbW11bmljYXRpb25zIFN5c3RlbXMiPC9Cb29rQ29weXJpZ2h0PgorICAgICAgICA8Qm9va1B1Ymxpc2hlcj4iIjwvQm9va1B1Ymxpc2hlcj4KKyAgICA8L09wdGlvbnM+CisgICAgPEZyb250TWF0dGVyPgorICAgICAgICA8VGl0bGVGaWxlPnRpdGxlcGFnZS5taWY8L1RpdGxlRmlsZT4KKyAgICAgICAgPENvbnRlbnRzRmlsZT5jb250ZW50cy5taWY8L0NvbnRlbnRzRmlsZT4KKyAgICA8L0Zyb250TWF0dGVyPgorICAgIDxDaGFwdGVycz4KKyAgICAgICAgPEluc2VydEFQSURvYz5QYWNrYWdlcyBDbGFzc2VzPC9JbnNlcnRBUElEb2M+CisgICAgICAgIDxDaGFwdGVyPgorICAgICAgICAgICAgPEFsbWFuYWNGaWxlPmFsbWFuYWMubWlmPC9BbG1hbmFjRmlsZT4KKyAgICAgICAgPC9DaGFwdGVyPgorICAgIDwvQ2hhcHRlcnM+CisgICAgPEJhY2tNYXR0ZXI+CisgICAgICAgIDxTZWN0aW9uRmlsZT5zYW1wbGUtc3JjXGRvYy1maWxlc1xhcHBlbmRpeC5odG1sPC9TZWN0aW9uRmlsZT4KKyAgICAgICAgPEluZGV4RmlsZT5pbmRleC5taWY8L0luZGV4RmlsZT4KKyAgICAgICAgPFNlY3Rpb25GaWxlPnNhbXBsZS1zcmNcZG9jLWZpbGVzXGNvbG9waG9uLmh0bWw8L1NlY3Rpb25GaWxlPgorICAgIDwvQmFja01hdHRlcj4KKzwvQm9vaz4KKzwhLS0KKyAgICBOT1RFIC0gVGhlIGZvbGxvd2luZyBjb21tYW5kIGxpbmUgb3B0aW9ucyBoYXZlIG5vIGVxdWl2YWxlbnQgYXMKKyAgICBYTUwgYm9vayBvcHRpb25zIGJlY2F1c2UgdGhleSBhcmUgaW1wbGVtZW50ZWQgaW4gdGhlIGphdmFkb2MgdG9vbAorICAgIGFuZCBub3QgaW4gZG9jbGV0czogLWJvb3RjbGFzc3BhdGgsIC1jbGFzc3BhdGgsIC1kb2NsZXQsCisgICAgLWRvY2xldHBhdGgsIC1lbmNvZGluZywgLWV4dGRpcnMsIC1oZWxwLCAtSiwgLWxvY2FsZSwgLXBhY2thZ2UsCisgICAgLXByaXZhdGUsIC1wcm90ZWN0ZWQsIC1wdWJsaWMsIGFuZCAtc291cmNlcGF0aC4KKworICAgIFRoZXNlIGNvbW1hbmQgbGluZSBvcHRpb25zIGhhdmUgbm8gZXF1aXZhbGVudCBiZWNhdXNlIHRoZXJlIGFyZQorICAgIGVhc2llciB3YXlzIHRvIG9taXQgdGhlIHBhZ2VzOiAgLW5vYWxtYW5hYywgLW5vcGFja2FnZXBhZ2UuCisKKyAgICBUaGVzZSBvcHRpb25zIGFyZSBub3QgaW5jbHVkZWQgYWJvdmUgYmVjYXVzZSB0aGV5IGFyZSBub3QKKyAgICBpbXBsZW1lbnRlZCBpbiAxLjIgQmV0YSAxOiA8TGluaz4sIDxMaW5rT2ZmbGluZT4KKworICAgIFRoZSA8R3JvdXA+IG9wdGlvbiBpcyBub3QgaW5jbHVkZWQgYmVjYXVzZSBpdCBkb2VzIG5vdCBhbGxvdworICAgIHdpbGRjYXJkcy4gIFRoZSAtZ3JvdXAgb3B0aW9uIGFsbG93cyB3aWxkY2FyZHMsIGFuZCBzbyBpcyBtb3JlCisgICAgdmVyc2F0aWxlLgorLS0+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGF0YS94bWxzZWN1cml0eS5qaW4gYi9kYXRhL3htbHNlY3VyaXR5LmppbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmM1YjRhCi0tLSAvZGV2L251bGwKKysrIGIvZGF0YS94bWxzZWN1cml0eS5qaW4KQEAgLTAsMCArMSw0MjggQEAKKyMjIworIyMjIEppbmRlbnQgMy41IHByb3BlcnR5IGZpbGUgLS0gaHR0cDovL3d3dy5qaW5kZW50LmNvbQorIyMjCisKKworCisjIyMgSmluZGVudCBwcm9wZXJ0eSBmb3JtYXQKKwordmVyc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiMy41IgorCitjb252ZW50aW9uU3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICA9ICJFRUUsIE1NTSBkLCAnJ3l5IgorcGFkZGluZ1BhcmVudGhlc2lzICAgICAgICAgICAgID0gZmFsc2UKK3NwYWNlQmVmb3JlQ29uZGl0aW9uQmFuZyAgICAgICAgICA9IGZhbHNlCisKKyMjIyBHZW5lcmFsIC0tIENvbnZlbnRpb24KKworZGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiRUVFLCBNTU0gZCwgJyd5eSIKK2NvbnZlbnRpb25OYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIlhNTFNlY3VyaXR5IFN0eWxlIgorY29udmVudGlvbk5vdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiRm9ybWF0dGVkIGluICRjb252ZW50aW9uTmFtZSQgU3R5bGUgb24gJGRhdGUkIgorY29udmVudGlvbk5vdGVQb3NpdGlvbiAgICAgICAgICAgICAgICAgICAgPSAibm9uZSIKK2JsYW5rTGluZXNUb1NlcGFyYXRlQ29udmVudGlvbk5vdGUgICAgICAgID0gMgorCisKKyMjIyBHZW5lcmFsIC0tIEppbmRlbnQgTm90ZQorCitqaW5kZW50Tm90ZVBvc2l0aW9uICAgICAgICAgICAgICAgICAgICAgICA9ICJub25lIgorYmxhbmtMaW5lc1RvU2VwYXJhdGVKaW5kZW50Tm90ZSAgICAgICAgICAgPSAyCisKKworCisjIyMgSGVhZGVyL0Zvb3RlciAtLSBIZWFkZXIgVGVtcGxhdGUKKworaGVhZGVyU21hcnRNb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBpbmZpbml0ZQorCitoZWFkZXJJZGVudGlmeUtleSAgICAgICAgICAgICAgICAgICAgICAgICA9ICJSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIgorCitibGFua0xpbmVzQmVmb3JlSGVhZGVyICAgICAgICAgICAgICAgICAgICA9IDEKK2hlYWRlclswMF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIi8qIgoraGVhZGVyWzAxXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICogVGhlIEFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMSIKK2hlYWRlclswMl0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIiAqIgoraGVhZGVyWzAzXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICoiCitoZWFkZXJbMDRdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICIgKiBDb3B5cmlnaHQgKGMpIDE5OTkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgQWxsIHJpZ2h0cyAiCitoZWFkZXJbMDVdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICIgKiByZXNlcnZlZC4iCitoZWFkZXJbMDZdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICIgKiIKK2hlYWRlclswN10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCIKK2hlYWRlclswOF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyIKK2hlYWRlclswOV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIiAqIGFyZSBtZXQ6IgoraGVhZGVyWzEwXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICoiCitoZWFkZXJbMTFdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICIgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCIKK2hlYWRlclsxMl0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gIgoraGVhZGVyWzEzXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICoiCitoZWFkZXJbMTRdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICIgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCIKK2hlYWRlclsxNV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiIKK2hlYWRlclsxNl0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIiAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUiCitoZWFkZXJbMTddICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICIgKiAgICBkaXN0cmlidXRpb24uIgoraGVhZGVyWzE4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICoiCitoZWFkZXJbMTldICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICIgKiAzLiBUaGUgZW5kLXVzZXIgZG9jdW1lbnRhdGlvbiBpbmNsdWRlZCB3aXRoIHRoZSByZWRpc3RyaWJ1dGlvbiwiCitoZWFkZXJbMjBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICIgKiAgICBpZiBhbnksIG11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OiAgIgoraGVhZGVyWzIxXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICogICAgICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIgoraGVhZGVyWzIyXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICogICAgICAgIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChodHRwOi8vd3d3LmFwYWNoZS5vcmcvKS4iIgoraGVhZGVyWzIzXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICogICAgQWx0ZXJuYXRlbHksIHRoaXMgYWNrbm93bGVkZ21lbnQgbWF5IGFwcGVhciBpbiB0aGUgc29mdHdhcmUgaXRzZWxmLCIKK2hlYWRlclsyNF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIiAqICAgIGlmIGFuZCB3aGVyZXZlciBzdWNoIHRoaXJkLXBhcnR5IGFja25vd2xlZGdtZW50cyBub3JtYWxseSBhcHBlYXIuIgoraGVhZGVyWzI1XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICoiCitoZWFkZXJbMjZdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICIgKiA0LiBUaGUgbmFtZXMgIjxXZWJTaWc+IiBhbmQgIkFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIiBtdXN0IgoraGVhZGVyWzI3XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICogICAgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIgoraGVhZGVyWzI4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICogICAgc29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuICIKK2hlYWRlclsyOV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIiAqICAgIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0IGFwYWNoZUBhcGFjaGUub3JnLiIKK2hlYWRlclszMF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIiAqIgoraGVhZGVyWzMxXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIkFwYWNoZSIsIgoraGVhZGVyWzMyXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICogICAgbm9yIG1heSAiQXBhY2hlIiBhcHBlYXIgaW4gdGhlaXIgbmFtZSwgd2l0aG91dCBwcmlvciB3cml0dGVuIgoraGVhZGVyWzMzXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICogICAgcGVybWlzc2lvbiBvZiB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uIgoraGVhZGVyWzM0XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICoiCitoZWFkZXJbMzVdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICIgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1NFRCBPUiBJTVBMSUVEIgoraGVhZGVyWzM2XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICogV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMiCitoZWFkZXJbMzddICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICIgKiBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSIKK2hlYWRlclszOF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIiAqIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVBBQ0hFIFNPRlRXQVJFIEZPVU5EQVRJT04gT1IiCitoZWFkZXJbMzldICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICIgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIgoraGVhZGVyWzQwXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCIKK2hlYWRlcls0MV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIiAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YiCitoZWFkZXJbNDJdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICIgKiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIgoraGVhZGVyWzQzXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIgoraGVhZGVyWzQ0XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIgoraGVhZGVyWzQ1XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIgoraGVhZGVyWzQ2XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICogU1VDSCBEQU1BR0UuIgoraGVhZGVyWzQ3XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iCitoZWFkZXJbNDhdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICIgKiIKK2hlYWRlcls0OV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIiAqIFRoaXMgc29mdHdhcmUgY29uc2lzdHMgb2Ygdm9sdW50YXJ5IGNvbnRyaWJ1dGlvbnMgbWFkZSBieSBtYW55IgoraGVhZGVyWzUwXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICogaW5kaXZpZHVhbHMgb24gYmVoYWxmIG9mIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiBhbmQgd2FzIgoraGVhZGVyWzUxXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICogb3JpZ2luYWxseSBiYXNlZCBvbiBzb2Z0d2FyZSBjb3B5cmlnaHQgKGMpIDIwMDEsIEluc3RpdHV0ZSBmb3IiCitoZWFkZXJbNTJdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICIgKiBEYXRhIENvbW11bmljYXRpb25zIFN5c3RlbXMsIDxodHRwOi8vd3d3Lm51ZS5ldC1pbmYudW5pLXNpZWdlbi5kZS8+LiIKK2hlYWRlcls1M10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIiAqIFRoZSBkZXZlbG9wbWVudCBvZiB0aGlzIHNvZnR3YXJlIHdhcyBwYXJ0bHkgZnVuZGVkIGJ5IHRoZSBFdXJvcGVhbiAiCitoZWFkZXJbNTRdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICIgKiBDb21taXNzaW9uIGluIHRoZSA8V2ViU2lnPiBwcm9qZWN0IGluIHRoZSBJU0lTIFByb2dyYW1tZS4gIgoraGVhZGVyWzU1XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICogRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBwbGVhc2Ugc2VlIgoraGVhZGVyWzU2XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICogPGh0dHA6Ly93d3cuYXBhY2hlLm9yZy8+LiIKK2hlYWRlcls1N10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIiAqLyIKK2JsYW5rTGluZXNBZnRlckhlYWRlciAgICAgICAgICAgICAgICAgICAgID0gMAorCisKKyMjIyBIZWFkZXIvRm9vdGVyIC0tIEZvb3RlciBUZW1wbGF0ZQorCitmb290ZXJTbWFydE1vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGluZmluaXRlCisKK2Zvb3RlcklkZW50aWZ5S2V5ICAgICAgICAgICAgICAgICAgICAgICAgID0gIiIKKworYmxhbmtMaW5lc0JlZm9yZUZvb3RlciAgICAgICAgICAgICAgICAgICAgPSAwCitmb290ZXJbMDBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICIiCitibGFua0xpbmVzQWZ0ZXJGb290ZXIgICAgICAgICAgICAgICAgICAgICA9IDAKKworCisKKyMjIyBJbmRlbnRhdGlvbiAtLSBNaXNjCisKK3RhYnVsYXRvclNpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMworaW5kZW50U2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAzCitmaXJzdExldmVsSW5kZW50ICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAKK2luZGVudENhc2VGcm9tU3dpdGNoICAgICAgICAgICAgICAgICAgICAgID0gMAorbGFiZWxOZXdMaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZQoraW5kZW50TGFiZWxzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSB0cnVlCisKK21pbmltdW1Db21tZW50SW5kZW50ICAgICAgICAgICAgICAgICAgICAgID0gNAorCitpbmRlbnRMZWFkaW5nc0J5VGFicyAgICAgICAgICAgICAgICAgICAgICA9IGZhbHNlCitpbmRlbnRDb21tZW50c0J5VGFicyAgICAgICAgICAgICAgICAgICAgICA9IGZhbHNlCitpbmRlbnREZWNsYXJhdGlvbnNCeVRhYnMgICAgICAgICAgICAgICAgICA9IGZhbHNlCitpbmRlbnRBc3NpZ25tZW50c0J5VGFicyAgICAgICAgICAgICAgICAgICA9IGZhbHNlCisKKworIyMjIEluZGVudGF0aW9uIC0tIEFsaWdubWVudAorCithbGlnbkNvbW1lbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGZhbHNlCithbGlnbkRlY2xhcmF0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICA9IGZhbHNlCithbGlnbkFzc2lnbm1lbnRzICAgICAgICAgICAgICAgICAgICAgICAgICA9IGZhbHNlCithbGlnblRlcm5hcnlDb25kaXRpb25zICAgICAgICAgICAgICAgICAgICA9IHRydWUKK2FsaWduVGVybmFyeUV4cHJlc3Npb25zICAgICAgICAgICAgICAgICAgID0gdHJ1ZQorYWxpZ25Ub29Mb25nQ29tbWVudHMgICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZQorYWxpZ25Ub29Mb25nRGVjbGFyYXRpb25zICAgICAgICAgICAgICAgICAgPSBmYWxzZQorYWxpZ25Ub29Mb25nQXNzaWdubWVudHMgICAgICAgICAgICAgICAgICAgPSBmYWxzZQorCisKKworIyMjIEJyYWNlcyAtLSBTdHlsZQorCitsZWZ0QnJhY2VOZXdMaW5lR2VuZXJhbCAgICAgICAgICAgICAgICAgICA9IGZhbHNlCityaWdodEJyYWNlTmV3TGluZUdlbmVyYWwgICAgICAgICAgICAgICAgICA9IGZhbHNlCitpbmRlbnRMZWZ0QnJhY2VHZW5lcmFsICAgICAgICAgICAgICAgICAgICA9IDEKK2luZGVudFJpZ2h0QnJhY2VHZW5lcmFsICAgICAgICAgICAgICAgICAgID0gMAoraW5kZW50QWZ0ZXJSaWdodEJyYWNlR2VuZXJhbCAgICAgICAgICAgICAgPSAxCisKK2N1ZGRsZUVtcHR5QnJhY2VzR2VuZXJhbCAgICAgICAgICAgICAgICAgID0gZmFsc2UKK2luZGVudEN1ZGRsZWRCcmFjZXNHZW5lcmFsICAgICAgICAgICAgICAgID0gMQorCitub0JsYW5rTGluZXNBZnRlckxlZnRCcmFjZUdlbmVyYWwgICAgICAgICA9IGZhbHNlCisKKworbGVmdEJyYWNlTmV3TGluZUNsYXNzSW50ZXJmYWNlICAgICAgICAgICAgPSBmYWxzZQorcmlnaHRCcmFjZU5ld0xpbmVDbGFzc0ludGVyZmFjZSAgICAgICAgICAgPSBmYWxzZQoraW5kZW50TGVmdEJyYWNlQ2xhc3NJbnRlcmZhY2UgICAgICAgICAgICAgPSAxCitpbmRlbnRSaWdodEJyYWNlQ2xhc3NJbnRlcmZhY2UgICAgICAgICAgICA9IDAKK2luZGVudEFmdGVyUmlnaHRCcmFjZUNsYXNzSW50ZXJmYWNlICAgICAgID0gMQorCitjdWRkbGVFbXB0eUJyYWNlc0NsYXNzSW50ZXJmYWNlICAgICAgICAgICA9IGZhbHNlCitpbmRlbnRDdWRkbGVkQnJhY2VzQ2xhc3NJbnRlcmZhY2UgICAgICAgICA9IDEKKworbm9CbGFua0xpbmVzQWZ0ZXJMZWZ0QnJhY2VDbGFzc0ludGVyZmFjZSAgPSBmYWxzZQorCisKK2xlZnRCcmFjZU5ld0xpbmVNZXRob2QgICAgICAgICAgICAgICAgICAgID0gZmFsc2UKK3JpZ2h0QnJhY2VOZXdMaW5lTWV0aG9kICAgICAgICAgICAgICAgICAgID0gZmFsc2UKK2luZGVudExlZnRCcmFjZU1ldGhvZCAgICAgICAgICAgICAgICAgICAgID0gMQoraW5kZW50UmlnaHRCcmFjZU1ldGhvZCAgICAgICAgICAgICAgICAgICAgPSAwCitpbmRlbnRBZnRlclJpZ2h0QnJhY2VNZXRob2QgICAgICAgICAgICAgICA9IDEKKworY3VkZGxlRW1wdHlCcmFjZXNNZXRob2QgICAgICAgICAgICAgICAgICAgPSB0cnVlCitpbmRlbnRDdWRkbGVkQnJhY2VzTWV0aG9kICAgICAgICAgICAgICAgICA9IDEKKworbm9CbGFua0xpbmVzQWZ0ZXJMZWZ0QnJhY2VNZXRob2QgICAgICAgICAgPSBmYWxzZQorCisKK2xlZnRCcmFjZU5ld0xpbmVUcnlDYXRjaCAgICAgICAgICAgICAgICAgID0gZmFsc2UKK3JpZ2h0QnJhY2VOZXdMaW5lVHJ5Q2F0Y2ggICAgICAgICAgICAgICAgID0gZmFsc2UKK2luZGVudExlZnRCcmFjZVRyeUNhdGNoICAgICAgICAgICAgICAgICAgID0gMQoraW5kZW50UmlnaHRCcmFjZVRyeUNhdGNoICAgICAgICAgICAgICAgICAgPSAwCitpbmRlbnRBZnRlclJpZ2h0QnJhY2VUcnlDYXRjaCAgICAgICAgICAgICA9IDEKKworY3VkZGxlRW1wdHlCcmFjZXNUcnlDYXRjaCAgICAgICAgICAgICAgICAgPSB0cnVlCitpbmRlbnRDdWRkbGVkQnJhY2VzVHJ5Q2F0Y2ggICAgICAgICAgICAgICA9IDEKKworbm9CbGFua0xpbmVzQWZ0ZXJMZWZ0QnJhY2VUcnlDYXRjaCAgICAgICAgPSBmYWxzZQorCisKKyMjIyBCcmFjZXMgLS0gSW5zZXJ0IEF0CisKK2luc2VydEJyYWNlc0F0SWZFbHNlICAgICAgICAgICAgICAgICAgICAgID0gdHJ1ZQoraW5zZXJ0QnJhY2VzQXRGb3IgICAgICAgICAgICAgICAgICAgICAgICAgPSB0cnVlCitpbnNlcnRCcmFjZXNBdFdoaWxlICAgICAgICAgICAgICAgICAgICAgICA9IHRydWUKK2luc2VydEJyYWNlc0F0RG9XaGlsZSAgICAgICAgICAgICAgICAgICAgID0gdHJ1ZQorCitpbnNlcnRQYXJlbnRoZXNpc0F0Q29uZGl0aW9ucyAgICAgICAgICAgICA9IHRydWUKKworCisjIyMgQnJhY2VzIC0tIElmLUVsc2UKKworc2luZ2xlSWZTdGF0ZW1lbnRJbk9uZUxpbmUgICAgICAgICAgICAgICAgPSBmYWxzZQorc2luZ2xlRWxzZVN0YXRlbWVudEluT25lTGluZSAgICAgICAgICAgICAgPSBmYWxzZQorc3BlY2lhbEVsc2VJZlRyZWF0bWVudCAgICAgICAgICAgICAgICAgICAgPSB0cnVlCisKKworCisjIyMgSmF2YURvYyAtLSBNaXNjCisKK2RlbGV0ZUphdmFEb2NDb21tZW50cyAgICAgICAgICAgICAgICAgICAgID0gZmFsc2UKK2Zvcm1hdEphdmFEb2NDb21tZW50cyAgICAgICAgICAgICAgICAgICAgID0gdHJ1ZQorCitpbnNlcnRNaXNzaW5nSmF2YURvY1RhZ3MgICAgICAgICAgICAgICAgICA9IGZhbHNlCitkZWxldGVPYnNvbGV0ZUphdmFEb2NUYWdzICAgICAgICAgICAgICAgICA9IHRydWUKKworY3JlYXRlUHVibGljQ2xhc3NJbnRlcmZhY2VKYXZhRG9jcyAgICAgICAgPSB0cnVlCitjcmVhdGVGcmllbmRseUNsYXNzSW50ZXJmYWNlSmF2YURvY3MgICAgICA9IHRydWUKK2NyZWF0ZVByaXZhdGVDbGFzc0ludGVyZmFjZUphdmFEb2NzICAgICAgID0gdHJ1ZQorY3JlYXRlUHJvdGVjdGVkQ2xhc3NJbnRlcmZhY2VKYXZhRG9jcyAgICAgPSB0cnVlCisKK2NyZWF0ZVB1YmxpY01ldGhvZEphdmFEb2NzICAgICAgICAgICAgICAgID0gdHJ1ZQorY3JlYXRlRnJpZW5kbHlNZXRob2RKYXZhRG9jcyAgICAgICAgICAgICAgPSB0cnVlCitjcmVhdGVQcml2YXRlTWV0aG9kSmF2YURvY3MgICAgICAgICAgICAgICA9IGZhbHNlCitjcmVhdGVQcm90ZWN0ZWRNZXRob2RKYXZhRG9jcyAgICAgICAgICAgICA9IHRydWUKKworY3JlYXRlUHVibGljRmllbGRKYXZhRG9jcyAgICAgICAgICAgICAgICAgPSB0cnVlCitjcmVhdGVGcmllbmRseUZpZWxkSmF2YURvY3MgICAgICAgICAgICAgICA9IHRydWUKK2NyZWF0ZVByaXZhdGVGaWVsZEphdmFEb2NzICAgICAgICAgICAgICAgID0gZmFsc2UKK2NyZWF0ZVByb3RlY3RlZEZpZWxkSmF2YURvY3MgICAgICAgICAgICAgID0gdHJ1ZQorCisKKyMjIyBKYXZhRG9jIC0tIFRlbXBsYXRlcworCitzb3J0RXhjZXB0aW9uc0luVGVtcGxhdGVzICAgICAgICAgICAgICAgICA9IHRydWUKKworamF2YURvY01ldGhvZFRvcFswMF0gICAgICAgICAgICAgICAgICAgICAgPSAiLyoqIgoramF2YURvY01ldGhvZFRvcFswMV0gICAgICAgICAgICAgICAgICAgICAgPSAiICogTWV0aG9kICRvYmplY3ROYW1lJCIKK2phdmFEb2NNZXRob2RUb3BbMDJdICAgICAgICAgICAgICAgICAgICAgID0gIiAqIgoramF2YURvY01ldGhvZFBhcmFtU2VwYXJhdG9yWzAwXSAgICAgICAgICAgPSAiIgoramF2YURvY01ldGhvZFBhcmFtWzAwXSAgICAgICAgICAgICAgICAgICAgPSAiICogQHBhcmFtICRwYXJhbU5hbWUkIgoramF2YURvY01ldGhvZFJldHVyblswMF0gICAgICAgICAgICAgICAgICAgPSAiIgoramF2YURvY01ldGhvZEV4Y2VwdGlvblNlcGFyYXRvclswMF0gICAgICAgPSAiIgoramF2YURvY01ldGhvZEV4Y2VwdGlvblswMF0gICAgICAgICAgICAgICAgPSAiICogQHRocm93cyAkZXhjZXB0aW9uTmFtZSQiCitqYXZhRG9jTWV0aG9kQm90dG9tWzAwXSAgICAgICAgICAgICAgICAgICA9ICIgKi8iCisKK2phdmFEb2NDb25zdHJ1Y3RvclRvcFswMF0gICAgICAgICAgICAgICAgID0gIi8qKiIKK2phdmFEb2NDb25zdHJ1Y3RvclRvcFswMV0gICAgICAgICAgICAgICAgID0gIiAqIENvbnN0cnVjdG9yICRvYmplY3ROYW1lJCIKK2phdmFEb2NDb25zdHJ1Y3RvclRvcFswMl0gICAgICAgICAgICAgICAgID0gIiAqIgoramF2YURvY0NvbnN0cnVjdG9yUGFyYW1TZXBhcmF0b3JbMDBdICAgICAgPSAiIgoramF2YURvY0NvbnN0cnVjdG9yUGFyYW1bMDBdICAgICAgICAgICAgICAgPSAiICogQHBhcmFtICRwYXJhbU5hbWUkIgoramF2YURvY0NvbnN0cnVjdG9yRXhjZXB0aW9uU2VwYXJhdG9yWzAwXSAgPSAiIgoramF2YURvY0NvbnN0cnVjdG9yRXhjZXB0aW9uWzAwXSAgICAgICAgICAgPSAiICogQHRocm93cyAkZXhjZXB0aW9uTmFtZSQiCitqYXZhRG9jQ29uc3RydWN0b3JCb3R0b21bMDBdICAgICAgICAgICAgICA9ICIgKi8iCisKK2phdmFEb2NDbGFzc1swMF0gICAgICAgICAgICAgICAgICAgICAgICAgID0gIi8qKiIKK2phdmFEb2NDbGFzc1swMV0gICAgICAgICAgICAgICAgICAgICAgICAgID0gIiAqIENsYXNzICRvYmplY3ROYW1lJCIKK2phdmFEb2NDbGFzc1swMl0gICAgICAgICAgICAgICAgICAgICAgICAgID0gIiAqIgoramF2YURvY0NsYXNzWzAzXSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiICogQGF1dGhvciAkQXV0aG9yJCIKK2phdmFEb2NDbGFzc1swNF0gICAgICAgICAgICAgICAgICAgICAgICAgID0gIiAqIEB2ZXJzaW9uICRSZXZpc2lvbiQiCitqYXZhRG9jQ2xhc3NbMDVdICAgICAgICAgICAgICAgICAgICAgICAgICA9ICIgKi8iCisKK2phdmFEb2NJbnRlcmZhY2VbMDBdICAgICAgICAgICAgICAgICAgICAgID0gIi8qKiIKK2phdmFEb2NJbnRlcmZhY2VbMDFdICAgICAgICAgICAgICAgICAgICAgID0gIiAqIEludGVyZmFjZSAkb2JqZWN0TmFtZSQiCitqYXZhRG9jSW50ZXJmYWNlWzAyXSAgICAgICAgICAgICAgICAgICAgICA9ICIgKiIKK2phdmFEb2NJbnRlcmZhY2VbMDNdICAgICAgICAgICAgICAgICAgICAgID0gIiAqIEBhdXRob3IgJEF1dGhvciQiCitqYXZhRG9jSW50ZXJmYWNlWzA0XSAgICAgICAgICAgICAgICAgICAgICA9ICIgKiBAdmVyc2lvbiAkUmV2aXNpb24kIgoramF2YURvY0ludGVyZmFjZVswNV0gICAgICAgICAgICAgICAgICAgICAgPSAiICovIgorCitqYXZhRG9jRmllbGRbMDBdICAgICAgICAgICAgICAgICAgICAgICAgICA9ICIvKiogRmllbGQgJG9iamVjdE5hbWUkICAgICAgICAgICAqLyIKKworCisKKyMjIyBDb21tZW50cyAtLSBGb3JtYXQvRGVsZXRlCisKK2RlbGV0ZUJsb2NrQ29tbWVudHMgICAgICAgICAgICAgICAgICAgICAgID0gZmFsc2UKK2RlbGV0ZVNpbmdsZUxpbmVDb21tZW50cyAgICAgICAgICAgICAgICAgID0gZmFsc2UKK2RlbGV0ZVRyYWlsaW5nQ29tbWVudHMgICAgICAgICAgICAgICAgICAgID0gZmFsc2UKK2RlbGV0ZUVuZE9mTGluZUNvbW1lbnRzICAgICAgICAgICAgICAgICAgID0gZmFsc2UKKworZm9ybWF0QmxvY2tDb21tZW50cyAgICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZQorZm9ybWF0U2luZ2xlTGluZUNvbW1lbnRzICAgICAgICAgICAgICAgICAgPSBmYWxzZQorZm9ybWF0VHJhaWxpbmdDb21tZW50cyAgICAgICAgICAgICAgICAgICAgPSBmYWxzZQorZm9ybWF0RW5kT2ZMaW5lQ29tbWVudHMgICAgICAgICAgICAgICAgICAgPSBmYWxzZQorCisKKyMjIyBDb21tZW50cyAtLSBFeGNlcHRpb25zCisKK25ldmVySW5kZW50Rmlyc3RDb2x1bW5Db21tZW50cyAgICAgICAgICAgID0gZmFsc2UKK25ldmVyRm9ybWF0Rmlyc3RDb2x1bW5Db21tZW50cyAgICAgICAgICAgID0gZmFsc2UKKworbmV2ZXJGb3JtYXRIZWFkZXIgICAgICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZQorbmV2ZXJGb3JtYXRGb290ZXIgICAgICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZQorCisKKworIyMjIFNlcGFyYXRpb24gLS0gTWlzYworCitrZWVwQmxhbmtMaW5lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAKKworbWluTGluZXNUb0luc2VydEJsYW5rTGluZUluQ2xhc3NlcyAgICAgICAgPSAzCittaW5MaW5lc1RvSW5zZXJ0QmxhbmtMaW5lSW5NZXRob2RzICAgICAgICA9IDMKKworCisjIyMgU2VwYXJhdGlvbiAtLSBTZXBhcmF0ZQorCitzZXBhcmF0ZUNodW5rc0J5Q29tbWVudHMgICAgICAgICAgICAgICAgICA9IHRydWUKK3NlcGFyYXRlQ2h1bmtzQnlUb29Mb25nTGluZXMgICAgICAgICAgICAgID0gdHJ1ZQorYWxsb3dCcmVha1NlcGFyYXRlZEZyb21DYXNlQmxvY2sgICAgICAgICAgPSBmYWxzZQorYmxhbmtMaW5lc0JldHdlZW5DYXNlQmxvY2tzICAgICAgICAgICAgICAgPSAxCitibGFua0xpbmVzQmV0d2VlbkNodW5rcyAgICAgICAgICAgICAgICAgICA9IDEKKworY29tcGFyYWJsZUltcG9ydERlcHRoICAgICAgICAgICAgICAgICAgICAgPSAyCitibGFua0xpbmVzVG9TZXBhcmF0ZUltcG9ydHMgICAgICAgICAgICAgICA9IDAKKworYmxhbmtMaW5lc0JldHdlZW5DbGFzc0ludGVyZmFjZSAgICAgICAgICAgPSAyCisKKworIyMjIFNlcGFyYXRpb24gLS0gSW5zZXJ0IEJsYW5rIExpbmVzCisKK2JsYW5rTGluZXNBZnRlckRlY2xhcmF0aW9ucyAgICAgICAgICAgICAgID0gMQorYmxhbmtMaW5lc0FmdGVyTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgPSAxCitibGFua0xpbmVzQWZ0ZXJDbGFzc2VzICAgICAgICAgICAgICAgICAgICA9IDEKK2JsYW5rTGluZXNBZnRlckludGVyZmFjZXMgICAgICAgICAgICAgICAgID0gMQorCitibGFua0xpbmVzQmVmb3JlSmF2YURvY0NvbW1lbnRzICAgICAgICAgICA9IDEKK2JsYW5rTGluZXNBZnRlckphdmFEb2NDb21tZW50cyAgICAgICAgICAgID0gMAorCitibGFua0xpbmVzQmVmb3JlQmxvY2tDb21tZW50cyAgICAgICAgICAgICA9IDEKK2JsYW5rTGluZXNBZnRlckJsb2NrQ29tbWVudHMgICAgICAgICAgICAgID0gMAorCitibGFua0xpbmVzQmVmb3JlU2luZ2xlTGluZUNvbW1lbnRzICAgICAgICA9IDEKK2JsYW5rTGluZXNBZnRlclNpbmdsZUxpbmVDb21tZW50cyAgICAgICAgID0gMAorCitibGFua0xpbmVzQmVmb3JlRW5kT2ZMaW5lQ29tbWVudHMgICAgICAgICA9IDEKK2JsYW5rTGluZXNBZnRlckVuZE9mTGluZUNvbW1lbnRzICAgICAgICAgID0gMAorCitibGFua0xpbmVzQWZ0ZXJTd2l0Y2ggICAgICAgICAgICAgICAgICAgICA9IDEKK2JsYW5rTGluZXNBZnRlclBhY2thZ2UgICAgICAgICAgICAgICAgICAgID0gMworYmxhbmtMaW5lc0FmdGVyTGFzdEltcG9ydCAgICAgICAgICAgICAgICAgPSAyCisKK2JsYW5rTGluZXNCZWZvcmVGaWx0ZXJlZENvZGUgICAgICAgICAgICAgID0gMQorYmxhbmtMaW5lc0FmdGVyRmlsdGVyZWRDb2RlICAgICAgICAgICAgICAgPSAwCisKKworCisjIyMgV2hpdGVzcGFjZXMgLS0gUGFkZGluZworCitzZXBhcmF0ZUFzc2lnbm1lbnRPcGVyYXRvcnMgICAgICAgICAgICAgICA9IHRydWUKK3NlcGFyYXRlQ29uZGl0aW9uYWxPcGVyYXRvcnMgICAgICAgICAgICAgID0gdHJ1ZQorc2VwYXJhdGVDb21wYXJpc29uT3BlcmF0b3JzICAgICAgICAgICAgICAgPSB0cnVlCitzZXBhcmF0ZU51bWVyaWNhbE9wZXJhdG9ycyAgICAgICAgICAgICAgICA9IHRydWUKKworcGFkZGluZ0Nhc3RQYXJlbnRoZXNpcyAgICAgICAgICAgICAgICAgICAgPSBmYWxzZQorcGFkZGluZ1N0YXRlbWVudFBhcmVudGhlc2lzICAgICAgICAgICAgICAgPSBmYWxzZQorcGFkZGluZ01ldGhvZERlY2xhcmF0aW9uUGFyZW50aGVzaXMgICAgICAgPSBmYWxzZQorcGFkZGluZ01ldGhvZENhbGxQYXJlbnRoZXNpcyAgICAgICAgICAgICAgPSBmYWxzZQorCitwYWRkaW5nQnJhY2tldHMgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGZhbHNlCitwYWRkaW5nQnJhY2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHRydWUKKworCisjIyMgV2hpdGVzcGFjZXMgLS0gU3BhY2UgQmVmb3JlCisKK3NwYWNlQmVmb3JlTWV0aG9kRGVjbGFyYXRpb25QYXJlbnRoZXNpcyAgID0gZmFsc2UKK3NwYWNlQmVmb3JlTWV0aG9kQ2FsbFBhcmVudGhlc2lzICAgICAgICAgID0gZmFsc2UKK3NwYWNlQmVmb3JlQnJhY2tldHMgICAgICAgICAgICAgICAgICAgICAgID0gZmFsc2UKK3NwYWNlQmVmb3JlQnJhY2tldHNJblR5cGVzICAgICAgICAgICAgICAgID0gZmFsc2UKK3NwYWNlQmVmb3JlU3RhdGVtZW50UGFyZW50aGVzaXMgICAgICAgICAgID0gdHJ1ZQorCitzcGFjZUJlZm9yZUJhbmcgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGZhbHNlCitzcGFjZUFmdGVyQmFuZyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGZhbHNlCitzcGFjZUJlZm9yZUJhbmdBZnRlckFuZE9yICAgICAgICAgICAgICAgICA9IGZhbHNlCitzcGFjZUFmdGVyQmFuZ0FmdGVyQW5kT3IgICAgICAgICAgICAgICAgICA9IGZhbHNlCisKK3NwYWNlQmVmb3JlVGlsZGUgICAgICAgICAgICAgICAgICAgICAgICAgID0gZmFsc2UKK3NwYWNlQWZ0ZXJUaWxkZSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gZmFsc2UKKworc3BhY2VCZWZvcmVDYXNlQ29sb24gICAgICAgICAgICAgICAgICAgICAgPSB0cnVlCisKK3NwYWNlQmVmb3JlQXNzZXJ0Q29sb24gICAgICAgICAgICAgICAgICAgID0gdHJ1ZQorc3BhY2VBZnRlckFzc2VydENvbG9uICAgICAgICAgICAgICAgICAgICAgPSB0cnVlCisKKworIyMjIFdoaXRlc3BhY2VzIC0tIFNwYWNlIEFmdGVyCisKK3NwYWNlQWZ0ZXJDb21tYSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gdHJ1ZQorc3BhY2VBZnRlclNlbWljb2xvbiAgICAgICAgICAgICAgICAgICAgICAgPSB0cnVlCitzcGFjZUFmdGVyQ2FzdGluZyAgICAgICAgICAgICAgICAgICAgICAgICA9IHRydWUKKworCisjIyMgV2hpdGVzcGFjZXMgLS0gTm8gU3BhY2VzCisKK25vU3BhY2VzSW5FbXB0eUZvckV4cHJlc3Npb25zICAgICAgICAgICAgID0gdHJ1ZQorCisKKworIyMjIExpbmUgV3JhcHBpbmcgLS0gTWlzYworCittYXhGaWVsZEVsZW1lbnRzUGVyTGluZSAgICAgICAgICAgICAgICAgICA9IGluZmluaXRlCisKK3dyYXBMaW5lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gdHJ1ZQord3JhcEJlY2F1c2VPZkNvbW1lbnRzICAgICAgICAgICAgICAgICAgICAgPSB0cnVlCit3cmFwTG9uZ01ldGhvZE5hbWVzICAgICAgICAgICAgICAgICAgICAgICA9IHRydWUKK21heExpbmVMZW5ndGggICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gODAKK2RlZXBJbmRlbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gNDUKK2ZvcmNlSW5kZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gOAorZm9yY2VJbmRlbnRUb2xlcmFuY2UgICAgICAgICAgICAgICAgICAgICAgPSA0CisKK2RlZXBJbmRlbnRGb3JNdWx0aXBsZURlY2xhcmF0aW9ucyAgICAgICAgID0gNDUKKworYWxsb3dXcmFwcGluZ0FmdGVyQXNzaWdubWVudHMgICAgICAgICAgICAgPSB0cnVlCit3cmFwRGVjbGFyYXRpb25Bc3NpZ25tZW50c1RvUmlnaHRTaWRlICAgICA9IGZhbHNlCithbGxvd1dyYXBwaW5nQWZ0ZXJQYXJlbnRoZXNpcyAgICAgICAgICAgICA9IHRydWUKK3ByZWZlcldyYXBwaW5nQWZ0ZXJUaHJvd3MgICAgICAgICAgICAgICAgID0gdHJ1ZQorCit3cmFwQWZ0ZXJDb25kaXRpb25hbE9wZXJhdG9ycyAgICAgICAgICAgICA9IGZhbHNlCit3cmFwQWZ0ZXJDb21wYXJpc29uT3BlcmF0b3JzICAgICAgICAgICAgICA9IGZhbHNlCit3cmFwQWZ0ZXJOdW1lcmljYWxPcGVyYXRvcnMgICAgICAgICAgICAgICA9IGZhbHNlCisKKworYWx3YXlzV3JhcFRocm93cyAgICAgICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZQorYWx3YXlzV3JhcEV4dGVuZHMgICAgICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZQorYWx3YXlzV3JhcEltcGxlbWVudHMgICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZQorCitpbmRlbnRXcmFwcGVkVGhyb3dzICAgICAgICAgICAgICAgICAgICAgICA9IDAKK2luZGVudFdyYXBwZWRFeHRlbmRzICAgICAgICAgICAgICAgICAgICAgID0gMAoraW5kZW50V3JhcHBlZEltcGxlbWVudHMgICAgICAgICAgICAgICAgICAgPSAwCmRpZmYgLS1naXQgYS9kb2FwX1hNTF9TZWN1cml0eV9KYXZhLnJkZiBiL2RvYXBfWE1MX1NlY3VyaXR5X0phdmEucmRmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhMWY5NzYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2FwX1hNTF9TZWN1cml0eV9KYXZhLnJkZgpAQCAtMCwwICsxLDgzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzw/eG1sLXN0eWxlc2hlZXQgdHlwZT0idGV4dC94c2wiPz4KKzxyZGY6UkRGIHhtbDpsYW5nPSJlbiIKKyAgICAgICAgIHhtbG5zPSJodHRwOi8vdXNlZnVsaW5jLmNvbS9ucy9kb2FwIyIgCisgICAgICAgICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiIAorICAgICAgICAgeG1sbnM6YXNmZXh0PSJodHRwOi8vcHJvamVjdHMuYXBhY2hlLm9yZy9ucy9hc2ZleHQjIgorICAgICAgICAgeG1sbnM6Zm9hZj0iaHR0cDovL3htbG5zLmNvbS9mb2FmLzAuMS8iPgorPCEtLQorICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICBDb3B5cmlnaHQgKGMpIDIwMDYgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgCisgICBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLT4KKyAgPFByb2plY3QgcmRmOmFib3V0PSJodHRwOi8veG1sLmFwYWNoZS5vcmcvc2VjdXJpdHkiPgorICAgIDxjcmVhdGVkPjIwMDYtMDMtMjA8L2NyZWF0ZWQ+CisgICAgPGxpY2Vuc2UgcmRmOnJlc291cmNlPSJodHRwOi8vdXNlZnVsaW5jLmNvbS9kb2FwL2xpY2Vuc2VzL2FzbDIwIiAvPgorICAgIDxuYW1lPkFwYWNoZSBYTUwgU2VjdXJpdHkgSmF2YTwvbmFtZT4KKyAgICA8aG9tZXBhZ2UgcmRmOnJlc291cmNlPSJodHRwOi8veG1sLmFwYWNoZS5vcmcvc2VjdXJpdHkiIC8+CisgICAgPGFzZmV4dDpwbWMgcmRmOnJlc291cmNlPSJodHRwOi8veG1sLmFwYWNoZS5vcmciIC8+CisgICAgPHNob3J0ZGVzYz5MaWJyYXJ5IGltcGxlbWVudGluZyBYTUwgRGlnaXRhbCBTaWduYXR1cmUgU3BlY2lmaWNhdGlvbiAmYW1wOyBYTUwgRW5jcnlwdGlvbiBTcGVjaWZpY2F0aW9uPC9zaG9ydGRlc2M+CisgICAgPGJ1Zy1kYXRhYmFzZSByZGY6cmVzb3VyY2U9Imh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9idWd6aWxsYS9idWdsaXN0LmNnaT9wcm9kdWN0PVNlY3VyaXR5IiAvPgorICAgIDxtYWlsaW5nLWxpc3QgcmRmOnJlc291cmNlPSJodHRwOi8veG1sLmFwYWNoZS5vcmcvbWFpbC5odG1sI3NlY3VyaXR5LWRldiIgLz4KKyAgICA8ZG93bmxvYWQtcGFnZSByZGY6cmVzb3VyY2U9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy9zZWN1cml0eS9kaXN0IiAvPgorICAgIDxwcm9ncmFtbWluZy1sYW5ndWFnZT5KYXZhPC9wcm9ncmFtbWluZy1sYW5ndWFnZT4KKyAgICA8Y2F0ZWdvcnkgcmRmOnJlc291cmNlPSJodHRwOi8vcHJvamVjdHMuYXBhY2hlLm9yZy9jYXRlZ29yeS94bWwiIC8+CisgICAgPHJlbGVhc2U+CisgICAgICA8VmVyc2lvbj4KKyAgICAgICAgPG5hbWU+MS4zPC9uYW1lPgorICAgICAgICA8Y3JlYXRlZD4yMDA1LTEwLTIzPC9jcmVhdGVkPgorICAgICAgICA8cmV2aXNpb24+MS4zPC9yZXZpc2lvbj4KKyAgICAgIDwvVmVyc2lvbj4KKyAgICA8L3JlbGVhc2U+CisgICAgPHJlcG9zaXRvcnk+CisgICAgICA8U1ZOUmVwb3NpdG9yeT4KKyAgICAgICAgPGxvY2F0aW9uIHJkZjpyZXNvdXJjZT0iaHR0cHM6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2YveG1sL3NlY3VyaXR5LyIvPgorICAgICAgICA8YnJvd3NlIHJkZjpyZXNvdXJjZT0iaHR0cDovL3N2bi5hcGFjaGUub3JnL3ZpZXdjdnMuY2dpL3htbC9zZWN1cml0eS8iLz4KKyAgICAgIDwvU1ZOUmVwb3NpdG9yeT4KKyAgICA8L3JlcG9zaXRvcnk+CisgICAgPGFzZmV4dDppbXBsZW1lbnRzPgorICAgIDxhc2ZleHQ6U3RhbmRhcmQ+CisgICAgICA8YXNmZXh0OnRpdGxlPlhNTC1TaWduYXR1cmUgU3ludGF4IGFuZCBQcm9jZXNzaW5nPC9hc2ZleHQ6dGl0bGU+CisgICAgICA8YXNmZXh0OmJvZHk+VzNDPC9hc2ZleHQ6Ym9keT4KKyAgICAgIDxhc2ZleHQ6aWQ+WE1MIFNpZ25hdHVyZTwvYXNmZXh0OmlkPgorICAgICAgPGFzZmV4dDp1cmwgcmRmOnJlc291cmNlPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWxkc2lnLWNvcmUvIi8+CisgICAgPC9hc2ZleHQ6U3RhbmRhcmQ+CisgICAgPC9hc2ZleHQ6aW1wbGVtZW50cz4KKyAgICA8YXNmZXh0OmltcGxlbWVudHM+CisgICAgPGFzZmV4dDpTdGFuZGFyZD4KKyAgICAgIDxhc2ZleHQ6dGl0bGU+WE1MLVNpZ25hdHVyZSBTeW50YXggYW5kIFByb2Nlc3Npbmc8L2FzZmV4dDp0aXRsZT4KKyAgICAgIDxhc2ZleHQ6Ym9keT5JRVRGPC9hc2ZleHQ6Ym9keT4KKyAgICAgIDxhc2ZleHQ6aWQ+MzI3NTwvYXNmZXh0OmlkPgorICAgICAgPGFzZmV4dDp1cmwgcmRmOnJlc291cmNlPSJodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMzMjc1LnR4dCIvPgorICAgIDwvYXNmZXh0OlN0YW5kYXJkPgorICAgIDwvYXNmZXh0OmltcGxlbWVudHM+CisgICAgPGFzZmV4dDppbXBsZW1lbnRzPgorICAgIDxhc2ZleHQ6U3RhbmRhcmQ+CisgICAgICA8YXNmZXh0OnRpdGxlPkNhbm9uaWNhbCBYTUw8L2FzZmV4dDp0aXRsZT4KKyAgICAgIDxhc2ZleHQ6Ym9keT5XM0M8L2FzZmV4dDpib2R5PgorICAgICAgPGFzZmV4dDppZD5DYW5vbmljYWwgWE1MPC9hc2ZleHQ6aWQ+CisgICAgICA8YXNmZXh0OnVybCByZGY6cmVzb3VyY2U9Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+CisgICAgPC9hc2ZleHQ6U3RhbmRhcmQ+CisgICAgPC9hc2ZleHQ6aW1wbGVtZW50cz4KKyAgICA8YXNmZXh0OmltcGxlbWVudHM+CisgICAgPGFzZmV4dDpTdGFuZGFyZD4KKyAgICAgIDxhc2ZleHQ6dGl0bGU+RXhjbHVzaXZlIFhNTCBDYW5vbmljYWxpemF0aW9uPC9hc2ZleHQ6dGl0bGU+CisgICAgICA8YXNmZXh0OmJvZHk+VzNDPC9hc2ZleHQ6Ym9keT4KKyAgICAgIDxhc2ZleHQ6aWQ+RXhjbHVzaXZlIFhNTCBDYW5vbmljYWxpemF0aW9uPC9hc2ZleHQ6aWQ+CisgICAgICA8YXNmZXh0OnVybCByZGY6cmVzb3VyY2U9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1leGMtYzE0bi8iLz4KKyAgICA8L2FzZmV4dDpTdGFuZGFyZD4KKyAgICA8L2FzZmV4dDppbXBsZW1lbnRzPgorICAgIDxhc2ZleHQ6aW1wbGVtZW50cz4gICAgCisgICAgPGFzZmV4dDpTdGFuZGFyZD4KKyAgICAgIDxhc2ZleHQ6dGl0bGU+WE1MIEVuY3J5cHRpb24gU3ludGF4IGFuZCBQcm9jZXNzaW5nPC9hc2ZleHQ6dGl0bGU+CisgICAgICA8YXNmZXh0OmJvZHk+VzNDPC9hc2ZleHQ6Ym9keT4KKyAgICAgIDxhc2ZleHQ6aWQ+RXhjbHVzaXZlIFhNTCBFbmNyeXB0aW9uPC9hc2ZleHQ6aWQ+CisgICAgICA8YXNmZXh0OnVybCByZGY6cmVzb3VyY2U9Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDIvQ1IteG1sZW5jLWNvcmUtMjAwMjAzMDQvIi8+CisgICAgPC9hc2ZleHQ6U3RhbmRhcmQ+CisJPC9hc2ZleHQ6aW1wbGVtZW50cz4KKworICA8L1Byb2plY3Q+Cis8L3JkZjpSREY+CmRpZmYgLS1naXQgYS9kb2Mvc2l0ZS9mb3JyZXN0LXRhcmdldHMuZW50IGIvZG9jL3NpdGUvZm9ycmVzdC10YXJnZXRzLmVudApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTRjMGI3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NpdGUvZm9ycmVzdC10YXJnZXRzLmVudApAQCAtMCwwICsxLDE3NCBAQAorPCEtLQorVGhpcyBidWlsZC54bWwgc25pcHBldCBjb250YWlucyBGb3JyZXN0IHRhcmdldHMgZm9yIEFudCAxLjUrLiAgSXQgY2hlY2tzIHRoYXQKK3RoZSB1c2VyIGhhcyBzZXQgJHtmb3JyZXN0LmhvbWV9LCBlaXRoZXIgaW4gb25lIG9mOgorICBidWlsZC5wcm9wZXJ0aWVzCisgIHByb2plY3QucHJvcGVydGllcworICBhbnQucHJvcGVydGllcworICAuYW50LnByb3BlcnRpZXMKK29yIHdpdGggdGhlIEZPUlJFU1RfSE9NRSBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYW5kIHByaW50cyBhbiBpbmZvcm1hdGl2ZSBlcnJvcgorbWVzc2FnZSBpZiBub3QgZm91bmQuCisKK1VzYWdlOgorMSkgQ29weSB0aGlzIGZpbGUgdG8gc29tZXdoZXJlIGluIHlvdXIgcHJvamVjdC4KKzIpIEFkZCB0aGUgZm9sbG93aW5nIHRvIHRoZSB0b3Agb2YgeW91ciBwcm9qZWN0J3MgQW50IGJ1aWxkLnhtbCBzY3JpcHQKKyhhZGp1c3RpbmcgdGhlIHBhdGgpOgorCisgIDwhRE9DVFlQRSBwcm9qZWN0IFsKKyAgICA8IUVOVElUWSBmb3JyZXN0LXRhcmdldHMgU1lTVEVNICJmaWxlOi4vZm9ycmVzdC10YXJnZXRzLmVudCI+CisgIF0+CisKKzMpIEJlZm9yZSB0aGUgY2xvc2luZyAnPC9wcm9qZWN0PicgaW4geW91ciBidWlsZC54bWwsIGFkZCB0aGlzOgorCisgICZmb3JyZXN0LXRhcmdldHM7CisgIAorVGhpcyBpcyBsaWtlIGV4cGFuZGluZyBhIG1hY3JvOiBpdCBwdWxscyBpbiB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlLgorCitBIG1pbmltYWwgYnVpbGQueG1sIHdvdWxkIHRodXMgYmU6CisKKzwhRE9DVFlQRSBwcm9qZWN0IFsKKzwhRU5USVRZIGZvcnJlc3QtdGFyZ2V0cyBTWVNURU0gImZpbGU6Li9mb3JyZXN0LXRhcmdldHMuZW50Ij4KK10+CisKKzxwcm9qZWN0IGRlZmF1bHQ9InNpdGUiPgorICAgICZmb3JyZXN0LXRhcmdldHM7Cis8L3Byb2plY3Q+CistLT4KKworICA8dGFyZ2V0IG5hbWU9InNpdGUiIGRlcGVuZHM9ImZvcnJlc3QuaW5pdCIgZGVzY3JpcHRpb249IkdlbmVyYXRlcyBzdGF0aWMgSFRNTCBkb2N1bWVudGF0aW9uIj4KKyAgICA8YW50IGFudGZpbGU9IiR7Zm9ycmVzdC5ob21lfS9mb3JyZXN0LmFudHByb3h5LnhtbCIgdGFyZ2V0PSJzaXRlIi8+CisgIDwvdGFyZ2V0PgorCisgIDx0YXJnZXQgbmFtZT0id2ViYXBwIiBkZXBlbmRzPSJmb3JyZXN0LmluaXQiIGRlc2NyaXB0aW9uPSJHZW5lcmF0ZXMgYW4gdW5wYWNrYWdlZCB3ZWJhcHAgb2YgdGhlIHdlYnNpdGUiPgorICAgIDxhbnQgYW50ZmlsZT0iJHtmb3JyZXN0LmhvbWV9L2ZvcnJlc3QuYW50cHJveHkueG1sIiB0YXJnZXQ9IndlYmFwcCIvPgorICA8L3RhcmdldD4KKworICA8dGFyZ2V0IG5hbWU9IndhciIgZGVwZW5kcz0iZm9ycmVzdC5pbml0IiBkZXNjcmlwdGlvbj0iR2VuZXJhdGVzIGEgLndhciBmaWxlIGNvbnRhaW5pbmcgdGhlIHdlYnNpdGUiPgorICAgIDxhbnQgYW50ZmlsZT0iJHtmb3JyZXN0LmhvbWV9L2ZvcnJlc3QuYW50cHJveHkueG1sIiB0YXJnZXQ9IndhciIvPgorICA8L3RhcmdldD4KKworICA8dGFyZ2V0IG5hbWU9InZhbGlkYXRlIiBkZXBlbmRzPSJmb3JyZXN0LmluaXQiIGRlc2NyaXB0aW9uPSJWYWxpZGF0ZXMgWE1MIGRvY3VtZW50YXRpb24gZmlsZXMiPgorICAgIDxhbnQgYW50ZmlsZT0iJHtmb3JyZXN0LmhvbWV9L2ZvcnJlc3QuYW50cHJveHkueG1sIiB0YXJnZXQ9InZhbGlkYXRlIi8+CisgIDwvdGFyZ2V0PgorCisgIDx0YXJnZXQgbmFtZT0iZm9ycmVzdC5pbml0IiBkZXBlbmRzPSJmb3JyZXN0LnNldGhvbWUsIGZvcnJlc3QuaG9tZS5kZWZpbmVkIi8+CisKKyAgPHRhcmdldCBuYW1lPSJmb3JyZXN0LnNldGhvbWUiIGRlcGVuZHM9ImZvcnJlc3QubG9hZGVudiwKKyAgZm9ycmVzdC5jaGVja2VudiwgZm9ycmVzdC5jaGVja2hvbWUsIGZvcnJlc3QuY2hlY2stYnVpbGQucHJvcGVydGllcywKKyAgZm9ycmVzdC5jaGVjay1wcm9qZWN0LnByb3BlcnRpZXMsIGZvcnJlc3QuY2hlY2stYW50LnByb3BlcnRpZXMsCisgIGZvcnJlc3QuY2hlY2stLmFudC5wcm9wZXJ0aWVzIi8+CisKKyAgPHRhcmdldCBuYW1lPSJmb3JyZXN0LmxvYWRlbnYiIHVubGVzcz0iZm9ycmVzdC5ob21lLnByZXNlbnQiPgorICAgIDxwcm9wZXJ0eSBlbnZpcm9ubWVudD0iZW52Ii8+CisgICAgPGVjaG8gbGV2ZWw9InZlcmJvc2UiPkZvcnJlc3Q6IEdvdCAke2Vudi5GT1JSRVNUX0hPTUV9PC9lY2hvPgorICA8L3RhcmdldD4KKworICA8dGFyZ2V0IG5hbWU9ImZvcnJlc3QuY2hlY2tlbnYiIGlmPSJlbnYuRk9SUkVTVF9IT01FIj4KKyAgICA8ZWNobyBsZXZlbD0idmVyYm9zZSI+Rm91bmQgJEZPUlJFU1RfSE9NRS4uPC9lY2hvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJmb3JyZXN0LmhvbWUiIGxvY2F0aW9uPSIke2Vudi5GT1JSRVNUX0hPTUV9Ii8+CisgICAgPGVjaG8gbGV2ZWw9InZlcmJvc2UiPmZvcnJlc3QuaG9tZSBzZXQgdG8gJHtmb3JyZXN0LmhvbWV9PC9lY2hvPgorICAgIDxhdmFpbGFibGUgZmlsZT0iJHtmb3JyZXN0LmhvbWV9IiB0eXBlPSJkaXIiIHByb3BlcnR5PSJmb3JyZXN0LmhvbWUucHJlc2VudCIvPgorICA8L3RhcmdldD4KKworCisgIDx0YXJnZXQgbmFtZT0iZm9ycmVzdC5jaGVja2hvbWUiPgorICAgIDxhdmFpbGFibGUgZmlsZT0iJHtmb3JyZXN0LmhvbWV9IiB0eXBlPSJkaXIiIHByb3BlcnR5PSJmb3JyZXN0LmhvbWUucHJlc2VudCIvPgorICAgIDxhdmFpbGFibGUgZmlsZT0iYnVpbGQucHJvcGVydGllcyIgdHlwZT0iZmlsZSIgcHJvcGVydHk9ImJ1aWxkLnByb3BlcnRpZXMucHJlc2VudCIvPgorICAgIDxhdmFpbGFibGUgZmlsZT0icHJvamVjdC5wcm9wZXJ0aWVzIiB0eXBlPSJmaWxlIiBwcm9wZXJ0eT0icHJvamVjdC5wcm9wZXJ0aWVzLnByZXNlbnQiLz4KKyAgICA8YXZhaWxhYmxlIGZpbGU9ImFudC5wcm9wZXJ0aWVzIiB0eXBlPSJmaWxlIiBwcm9wZXJ0eT0iYW50LnByb3BlcnRpZXMucHJlc2VudCIvPgorICAgIDxhdmFpbGFibGUgZmlsZT0iLmFudC5wcm9wZXJ0aWVzIiB0eXBlPSJmaWxlIiBwcm9wZXJ0eT0iLmFudC5wcm9wZXJ0aWVzLnByZXNlbnQiLz4KKyAgPC90YXJnZXQ+CisKKyAgPCEtLSBObyB3ZSBjYW4ndCBleHRyYWN0IHRoZSBjb21tb25hbGl0aWVzIGJlbG93IGludG8gYW4gYW50Y2FsbCdlZCB0YXJnZXQsCisgIGJlY2F1c2UgaXQgd291bGRuJ3QgYmUgYWJsZSB0byBzZXQgZm9ycmVzdC5ob21lIC0tPgorICA8dGFyZ2V0IG5hbWU9ImZvcnJlc3QuY2hlY2stYnVpbGQucHJvcGVydGllcyIgdW5sZXNzPSJmb3JyZXN0LmhvbWUucHJlc2VudCIKKyAgaWY9ImJ1aWxkLnByb3BlcnRpZXMucHJlc2VudCI+CisgICAgPGVjaG8gbGV2ZWw9InZlcmJvc2UiPkZvcnJlc3Q6IENoZWNraW5nIGJ1aWxkLnByb3BlcnRpZXMuLjwvZWNobz4KKyAgICA8bG9hZHByb3BlcnRpZXMgc3JjZmlsZT0iYnVpbGQucHJvcGVydGllcyI+CisgICAgICA8ZmlsdGVyY2hhaW4+CisgICAgICAgIDxsaW5lY29udGFpbnM+CisgICAgICAgICAgPGNvbnRhaW5zIHZhbHVlPSJmb3JyZXN0LmhvbWUiLz4KKyAgICAgICAgPC9saW5lY29udGFpbnM+CisgICAgICA8L2ZpbHRlcmNoYWluPgorICAgIDwvbG9hZHByb3BlcnRpZXM+CisgICAgPGF2YWlsYWJsZSBmaWxlPSIke2ZvcnJlc3QuaG9tZX0iIHR5cGU9ImRpciIgcHJvcGVydHk9ImZvcnJlc3QuaG9tZS5wcmVzZW50Ii8+CisKKyAgPC90YXJnZXQ+CisKKyAgPHRhcmdldCBuYW1lPSJmb3JyZXN0LmNoZWNrLXByb2plY3QucHJvcGVydGllcyIgdW5sZXNzPSJmb3JyZXN0LmhvbWUucHJlc2VudCIKKyAgaWY9InByb2plY3QucHJvcGVydGllcy5wcmVzZW50Ij4KKyAgICA8ZWNobyBsZXZlbD0idmVyYm9zZSI+Rm9ycmVzdDogQ2hlY2tpbmcgcHJvamVjdC5wcm9wZXJ0aWVzLi48L2VjaG8+CisgICAgPGxvYWRwcm9wZXJ0aWVzIHNyY2ZpbGU9InByb2plY3QucHJvcGVydGllcyI+CisgICAgICA8ZmlsdGVyY2hhaW4+CisgICAgICAgIDxsaW5lY29udGFpbnM+CisgICAgICAgICAgPGNvbnRhaW5zIHZhbHVlPSJmb3JyZXN0LmhvbWUiLz4KKyAgICAgICAgPC9saW5lY29udGFpbnM+CisgICAgICA8L2ZpbHRlcmNoYWluPgorICAgIDwvbG9hZHByb3BlcnRpZXM+CisgICAgPGF2YWlsYWJsZSBmaWxlPSIke2ZvcnJlc3QuaG9tZX0iIHR5cGU9ImRpciIgcHJvcGVydHk9ImZvcnJlc3QuaG9tZS5wcmVzZW50Ii8+CisgIDwvdGFyZ2V0PgorCisgIDx0YXJnZXQgbmFtZT0iZm9ycmVzdC5jaGVjay1hbnQucHJvcGVydGllcyIgdW5sZXNzPSJmb3JyZXN0LmhvbWUucHJlc2VudCIKKyAgaWY9ImFudC5wcm9wZXJ0aWVzLnByZXNlbnQiPgorICAgIDxlY2hvIGxldmVsPSJ2ZXJib3NlIj5Gb3JyZXN0OiBDaGVja2luZyBhbnQucHJvcGVydGllcy4uPC9lY2hvPgorICAgIDxsb2FkcHJvcGVydGllcyBzcmNmaWxlPSJhbnQucHJvcGVydGllcyI+CisgICAgICA8ZmlsdGVyY2hhaW4+CisgICAgICAgIDxsaW5lY29udGFpbnM+CisgICAgICAgICAgPGNvbnRhaW5zIHZhbHVlPSJmb3JyZXN0LmhvbWUiLz4KKyAgICAgICAgPC9saW5lY29udGFpbnM+CisgICAgICA8L2ZpbHRlcmNoYWluPgorICAgIDwvbG9hZHByb3BlcnRpZXM+CisgICAgPGF2YWlsYWJsZSBmaWxlPSIke2ZvcnJlc3QuaG9tZX0iIHR5cGU9ImRpciIgcHJvcGVydHk9ImZvcnJlc3QuaG9tZS5wcmVzZW50Ii8+CisgIDwvdGFyZ2V0PgorCisgIDx0YXJnZXQgbmFtZT0iZm9ycmVzdC5jaGVjay0uYW50LnByb3BlcnRpZXMiIHVubGVzcz0iZm9ycmVzdC5ob21lLnByZXNlbnQiCisgIGlmPSIuYW50LnByb3BlcnRpZXMucHJlc2VudCI+CisgICAgPGVjaG8gbGV2ZWw9InZlcmJvc2UiPkZvcnJlc3Q6IENoZWNraW5nIC5hbnQucHJvcGVydGllcy4uPC9lY2hvPgorICAgIDxsb2FkcHJvcGVydGllcyBzcmNmaWxlPSIuYW50LnByb3BlcnRpZXMiPgorICAgICAgPGZpbHRlcmNoYWluPgorICAgICAgICA8bGluZWNvbnRhaW5zPgorICAgICAgICAgIDxjb250YWlucyB2YWx1ZT0iZm9ycmVzdC5ob21lIi8+CisgICAgICAgIDwvbGluZWNvbnRhaW5zPgorICAgICAgPC9maWx0ZXJjaGFpbj4KKyAgICA8L2xvYWRwcm9wZXJ0aWVzPgorICAgIDxhdmFpbGFibGUgZmlsZT0iJHtmb3JyZXN0LmhvbWV9IiB0eXBlPSJkaXIiIHByb3BlcnR5PSJmb3JyZXN0LmhvbWUucHJlc2VudCIvPgorICA8L3RhcmdldD4KKworICA8dGFyZ2V0IG5hbWU9ImZvcnJlc3QuaG9tZS5kZWZpbmVkIiBkZXBlbmRzPSJmb3JyZXN0LnNldGhvbWUiIHVubGVzcz0iZm9ycmVzdC5ob21lLnByZXNlbnQiPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJwYXRoIiB2YWx1ZT0iJHt1c2VyLmhvbWV9L3htbC1mb3JyZXN0L2J1aWxkL2Rpc3Qvc2hiYXQiLz4KKyAgICA8cGF0aGNvbnZlcnQgdGFyZ2V0b3M9IndpbmRvd3MiIHByb3BlcnR5PSJ3aW5wYXRoIj4KKyAgICAgIDxwYXRoPgorICAgICAgICA8cGF0aGVsZW1lbnQgbG9jYXRpb249IiR7cGF0aH0iLz4KKyAgICAgIDwvcGF0aD4KKyAgICA8L3BhdGhjb252ZXJ0PgorICAgIDxwYXRoY29udmVydCB0YXJnZXRvcz0idW5peCIgcHJvcGVydHk9InVuaXhwYXRoIj4KKyAgICAgIDxwYXRoPgorICAgICAgICA8cGF0aGVsZW1lbnQKKyAgICAgICAgICBsb2NhdGlvbj0iJHtwYXRofSIvPgorICAgICAgPC9wYXRoPgorICAgIDwvcGF0aGNvbnZlcnQ+CisKKyAgICA8ZWNobz4KKyAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIFRvIHJ1biB0aGlzIHRhcmdldCwgeW91IG5lZWQgRm9ycmVzdCBpbnN0YWxsZWQuCisgICAgICBQbGVhc2UgZG8gdGhlIGZvbGxvd2luZzoKKworICAgICAgZXhwb3J0IENWU1JPT1Q9OnBzZXJ2ZXI6YW5vbmN2c0BjdnMuYXBhY2hlLm9yZzovaG9tZS9jdnNwdWJsaWMKKyAgICAgIGN2cyBjaGVja291dCB4bWwtZm9ycmVzdAorICAgICAgY2QgeG1sLWZvcnJlc3QKKyAgICAgIGJ1aWxkICAgICAgKFdpbmRvd3MpCisgICAgICAuL2J1aWxkLnNoIChVbml4KQorCisgICAgICBUaGVuIGVpdGhlcjoKKworICAgICAgLSBTZXQgRk9SUkVTVF9IT01FIGFzIHRoZSBGb3JyZXN0IGJ1aWxkIGluc3RydWN0aW9ucyBkZXNjcmliZQorICAgICAgLSBDcmVhdGUgYSBidWlsZC5wcm9wZXJ0aWVzLCB3aXRoIHRoZSBmb3JyZXN0LmhvbWUgcHJvcGVydHkgcG9pbnRpbmcgdG8KKyAgICAgICAgdGhlIGZvcnJlc3Qgc2hiYXQgZGlyZWN0b3J5LCBlZzoKKworICAgICAgICBmb3JyZXN0LmhvbWU9JHt3aW5wYXRofSAgKFdpbmRvd3MpCisgICAgICAgIGZvcnJlc3QuaG9tZT0ke3VuaXhwYXRofSAgKFVuaXgpCisKKyAgICAgICAgKGFkanVzdGluZyB0aGUgcGF0aCBhY2NvcmRpbmcgdG8gd2hlcmUgeW91ciB4bWwtZm9ycmVzdCBpcykKKyAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICA8L2VjaG8+CisgICAgPGZhaWwgbWVzc2FnZT0iTmVlZCB0byBkZWZpbmUgJCR7Zm9ycmVzdC5ob21lfSIvPgorICA8L3RhcmdldD4KZGlmZiAtLWdpdCBhL2RvYy9zaXRlL2ZvcnJlc3QucHJvcGVydGllcyBiL2RvYy9zaXRlL2ZvcnJlc3QucHJvcGVydGllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGQ1ZjczCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NpdGUvZm9ycmVzdC5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsMTA2IEBACisjIENvcHlyaWdodCAyMDAyLTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjCisjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorIworIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisKKyMjIyMjIyMjIyMjIyMjCisjIFByb3BlcnRpZXMgdXNlZCBieSBmb3JyZXN0LmJ1aWxkLnhtbCBmb3IgYnVpbGRpbmcgdGhlIHdlYnNpdGUKKyMgVGhlc2UgYXJlIHRoZSBkZWZhdWx0cywgdW4tY29tbWVudCB0aGVtIGlmIHlvdSBuZWVkIHRvIGNoYW5nZSB0aGVtLgorIyMjIyMjIyMjIyMjIyMKKworIyBQcmludHMgb3V0IGEgc3VtbWFyeSBvZiBGb3JyZXN0IHNldHRpbmdzIGZvciB0aGlzIHByb2plY3QKKyNmb3JyZXN0LmVjaG89dHJ1ZSAKKworIyBQcm9qZWN0IG5hbWUgKHVzZWQgdG8gbmFtZSAud2FyIGZpbGUpCisjcHJvamVjdC5uYW1lPW15LXByb2plY3QKKworIyBTcGVjaWZpZXMgbmFtZSBvZiBGb3JyZXN0IHNraW4gdG8gdXNlCisjcHJvamVjdC5za2luPXRpZ3JpcworI3Byb2plY3Quc2tpbj1wZWx0CisKKyMgY29tbWEgc2VwYXJhdGVkIGxpc3QsIGZpbGU6Ly8gaXMgc3VwcG9ydGVkCisjZm9ycmVzdC5za2lucy5kZXNjcmlwdG9ycz1odHRwOi8vZm9ycmVzdC5hcGFjaGUub3JnL3NraW5zL3NraW5zLnhtbCxmaWxlOi8vL2M6L215c2tpbnMvc2tpbnMueG1sCisKKyMjIyMjIyMjIyMjIyMjCisjIGJlaGF2aW91cmFsIHByb3BlcnRpZXMKKyNwcm9qZWN0Lm1lbnUtc2NoZW1lPXRhYl9hdHRyaWJ1dGVzCisjcHJvamVjdC5tZW51LXNjaGVtZT1kaXJlY3RvcmllcworCisjIyMjIyMjIyMjIyMjIworIyBsYXlvdXQgcHJvcGVydGllcworCisjIFByb3BlcnRpZXMgdGhhdCBjYW4gYmUgc2V0IHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGxvY2F0aW9ucworIworIyBQYXJlbnQgcHJvcGVydGllcyBtdXN0IGJlIHNldC4gVGhpcyB1c3VhbGx5IG1lYW5zIHVuY29tbWVudGluZworIyBwcm9qZWN0LmNvbnRlbnQtZGlyIGlmIGFueSBvdGhlciBwcm9wZXJ0eSB1c2luZyBpdCBpcyB1bmNvbW1lbnRlZAorCisjcHJvamVjdC5zdGF0dXM9c3RhdHVzLnhtbAorI3Byb2plY3QuY29udGVudC1kaXI9c3JjL2RvY3VtZW50YXRpb24KK3Byb2plY3QuY29uZmlnZmlsZT0ke3Byb2plY3QuaG9tZX0vc3JjL2RvY3VtZW50YXRpb24vY29uZi9jbGkueGNvbmYKKyNwcm9qZWN0LnJhdy1jb250ZW50LWRpcj0ke3Byb2plY3QuY29udGVudC1kaXJ9L2NvbnRlbnQKKyNwcm9qZWN0LmNvbmYtZGlyPSR7cHJvamVjdC5jb250ZW50LWRpcn0vY29uZgorI3Byb2plY3Quc2l0ZW1hcC1kaXI9JHtwcm9qZWN0LmNvbnRlbnQtZGlyfQorI3Byb2plY3QueGRvY3MtZGlyPSR7cHJvamVjdC5jb250ZW50LWRpcn0vY29udGVudC94ZG9jcworI3Byb2plY3QucmVzb3VyY2VzLWRpcj0ke3Byb2plY3QuY29udGVudC1kaXJ9L3Jlc291cmNlcworI3Byb2plY3Quc3R5bGVzaGVldHMtZGlyPSR7cHJvamVjdC5yZXNvdXJjZXMtZGlyfS9zdHlsZXNoZWV0cworI3Byb2plY3QuaW1hZ2VzLWRpcj0ke3Byb2plY3QucmVzb3VyY2VzLWRpcn0vaW1hZ2VzCisjcHJvamVjdC5zY2hlbWEtZGlyPSR7cHJvamVjdC5yZXNvdXJjZXMtZGlyfS9zY2hlbWEKKyNwcm9qZWN0LnNraW5zLWRpcj0ke3Byb2plY3QuY29udGVudC1kaXJ9L3NraW5zCisjcHJvamVjdC5za2luY29uZj0ke3Byb2plY3QuY29udGVudC1kaXJ9L3NraW5jb25mLnhtbAorI3Byb2plY3QubGliLWRpcj0ke3Byb2plY3QuY29udGVudC1kaXJ9L2xpYgorI3Byb2plY3QuY2xhc3Nlcy1kaXI9JHtwcm9qZWN0LmNvbnRlbnQtZGlyfS9jbGFzc2VzCisjcHJvamVjdC50cmFuc2xhdGlvbnMtZGlyPSR7cHJvamVjdC5jb250ZW50LWRpcn0vdHJhbnNsYXRpb25zCisKKyMjIyMjIyMjIyMjIyMjCisjIHZhbGlkYXRpb24gcHJvcGVydGllcworCisjIFRoaXMgc2V0IG9mIHByb3BlcnRpZXMgZGV0ZXJtaW5lIGlmIHZhbGlkYXRpb24gaXMgcGVyZm9ybWVkCisjIFZhbHVlcyBhcmUgaW5oZXJpdGVkIHVubGVzcyBvdmVycmlkZGVuLgorIyBlLmcuIGlmIGZvcnJlc3QudmFsaWRhdGU9ZmFsc2UgdGhlbiBhbGwgb3RoZXJzIGFyZSBmYWxzZSB1bmxlc3Mgc2V0IHRvIHRydWUuCisjZm9ycmVzdC52YWxpZGF0ZT10cnVlCisjZm9ycmVzdC52YWxpZGF0ZS54ZG9jcz0ke2ZvcnJlc3QudmFsaWRhdGV9CisjZm9ycmVzdC52YWxpZGF0ZS5za2luY29uZj0ke2ZvcnJlc3QudmFsaWRhdGV9CisjZm9ycmVzdC52YWxpZGF0ZS5zaXRlbWFwPSR7Zm9ycmVzdC52YWxpZGF0ZX0KKyNmb3JyZXN0LnZhbGlkYXRlLnN0eWxlc2hlZXRzPSR7Zm9ycmVzdC52YWxpZGF0ZX0KKyNmb3JyZXN0LnZhbGlkYXRlLnNraW5zPSR7Zm9ycmVzdC52YWxpZGF0ZX0KKyNmb3JyZXN0LnZhbGlkYXRlLnNraW5zLnN0eWxlc2hlZXRzPSR7Zm9ycmVzdC52YWxpZGF0ZS5za2luc30KKworIyAqLmZhaWxvbmVycm9yPSh0cnVlfGZhbHNlKSAtIHN0b3Agd2hlbiBhbiBYTUwgZmlsZSBpcyBpbnZhbGlkCisjZm9ycmVzdC52YWxpZGF0ZS5mYWlsb25lcnJvcj10cnVlCisKKyMgKi5leGNsdWRlcz0ocGF0dGVybikgLSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBwYXRoIHBhdHRlcm5zIHRvIG5vdCB2YWxpZGF0ZQorIyBlLmcuCisjZm9ycmVzdC52YWxpZGF0ZS54ZG9jcy5leGNsdWRlcz1zYW1wbGVzL3N1YmRpci8qKiwgc2FtcGxlcy9mYXEueG1sCisjZm9ycmVzdC52YWxpZGF0ZS54ZG9jcy5leGNsdWRlcz0KKworCisjIyMjIyMjIyMjIyMjIworIyBHZW5lcmFsIEZvcnJlc3QgcHJvcGVydGllcworCisjIFRoZSBVUkwgdG8gc3RhcnQgY3Jhd2xpbmcgZnJvbQorI3Byb2plY3Quc3RhcnQtdXJpPWxpbmttYXAuaHRtbAorIyBTZXQgbG9nZ2luZyBsZXZlbCBmb3IgbWVzc2FnZXMgcHJpbnRlZCB0byB0aGUgY29uc29sZQorIyAoREVCVUcsIElORk8sIFdBUk4sIEVSUk9SLCBGQVRBTF9FUlJPUikKKyNwcm9qZWN0LmRlYnVnbGV2ZWw9RVJST1IKKyMgTWF4IG1lbW9yeSB0byBhbGxvY2F0ZSB0byBKYXZhCisjZm9ycmVzdC5tYXhtZW1vcnk9NjRtCisjIEFueSBvdGhlciBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgSlZNLiBGb3IgZXhhbXBsZSwgdG8gcnVuIG9uIGFuIFgtbGVzcworIyBzZXJ2ZXIsIHNldCB0byAtRGphdmEuYXd0LmhlYWRsZXNzPXRydWUKKyNmb3JyZXN0Lmp2bWFyZ3M9CisjIFRoZSBidWd0cmFja2luZyBVUkwgLSB0aGUgaXNzdWUgbnVtYmVyIHdpbGwgYmUgYXBwZW5kZWQKK3Byb2plY3QuYnVndHJhY2tpbmctdXJsPWh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9CisjcHJvamVjdC5idWd0cmFja2luZy11cmw9aHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlLworIyBUaGUgaXNzdWVzIGxpc3QgYXMgcnNzCisjcHJvamVjdC5pc3N1ZXMtcnNzLXVybD0KKyNJMThuIFByb3BlcnR5IG9ubHkgd29ya3MgZm9yIHRoZSAiZm9ycmVzdCBydW4iIHRhcmdldC4KKyNwcm9qZWN0LmkxOG49dHJ1ZQorcHJvamVjdC5yZXF1aXJlZC5wbHVnaW5zPW9yZy5hcGFjaGUuZm9ycmVzdC5wbHVnaW4uaW5wdXQucHJvamVjdEluZm8KZGlmZiAtLWdpdCBhL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL1JFQURNRS50eHQgYi9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9SRUFETUUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1NDViNTgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9SRUFETUUudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgaXMgdGhlIGJhc2UgZG9jdW1lbnRhdGlvbiBkaXJlY3RvcnkuIEl0IHVzdWFsbHkgY29udGFpbnMgdHdvIGZpbGVzOgorCitza2luY29uZi54bWwgICAgICMgVGhpcyBmaWxlIGN1c3RvbWl6ZXMgRm9ycmVzdCBmb3IgeW91ciBwcm9qZWN0LiBJbiBpdCwgeW91CisgICAgICAgICAgICAgICAgICMgdGVsbCBmb3JyZXN0IHRoZSBwcm9qZWN0IG5hbWUsIGxvZ28sIGNvcHlyaWdodCBpbmZvLCBldGMKKworc2l0ZW1hcC54bWFwICAgICAjIE9wdGlvbmFsLiBUaGlzIHNpdGVtYXAgb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IG9uZSBidW5kbGVkCisgICAgICAgICAgICAgICAgICMgd2l0aCBGb3JyZXN0LiBUeXBpY2FsbHksIG9uZSB3b3VsZCBjb3B5IGEgc2l0ZW1hcCBmcm9tCisgICAgICAgICAgICAgICAgICMgeG1sLWZvcnJlc3Qvc3JjL3Jlc291cmNlcy9jb25mL3NpdGVtYXAueG1hcCwgYW5kIGN1c3RvbWl6ZQorICAgICAgICAgICAgICAgICAjIGl0LgorCmRpZmYgLS1naXQgYS9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb25mL2NsaS54Y29uZiBiL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbmYvY2xpLnhjb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkYWM3NDkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb25mL2NsaS54Y29uZgpAQCAtMCwwICsxLDMxMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8IS0tCisgIENvcHlyaWdodCAyMDAyLTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisKKyAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKzwhLS0rCisgICAgfCAgVGhpcyBpcyB0aGUgQXBhY2hlIENvY29vbiBjb21tYW5kIGxpbmUgY29uZmlndXJhdGlvbiBmaWxlLiAKKyAgICB8ICBIZXJlIHlvdSBnaXZlIHRoZSBjb21tYW5kIGxpbmUgaW50ZXJmYWNlIGRldGFpbHMgb2Ygd2hlcmUKKyAgICB8ICB0byBmaW5kIHZhcmlvdXMgYXNwZWN0cyBvZiB5b3VyIENvY29vbiBpbnN0YWxsYXRpb24uCisgICAgfAorICAgIHwgIElmIHlvdSB3aXNoLCB5b3UgY2FuIGFsc28gdXNlIHRoaXMgZmlsZSB0byBzcGVjaWZ5IHRoZSBVUklzCisgICAgfCAgdGhhdCB5b3Ugd2lzaCB0byBnZW5lcmF0ZS4KKyAgICB8CisgICAgfCAgVGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBpbiB0aGlzIGZpbGUgaXMgZm9yCisgICAgfCAgYnVpbGRpbmcgdGhlIENvY29vbiBkb2N1bWVudGF0aW9uLiBUaGVyZWZvcmUsIGFsbCBsaW5rcyBoZXJlIAorICAgIHwgIGFyZSByZWxhdGl2ZSB0byB0aGUgYnVpbGQgY29udGV4dCBkaXIsIHdoaWNoLCBpbiB0aGUgYnVpbGQueG1sIAorICAgIHwgIGZpbGUsIGlzIHNldCB0byAke2J1aWxkLmNvbnRleHR9IAorICAgIHwKKyAgICB8ICBPcHRpb25zOgorICAgIHwgICAgdmVyYm9zZTogICAgICAgICAgICBpbmNyZWFzZSBhbW91bnQgb2YgaW5mb3JtYXRpb24gcHJlc2VudGVkCisgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHRvIHN0YW5kYXJkIG91dHB1dCAoZGVmYXVsdDogZmFsc2UpCisgICAgfCAgICBmb2xsb3ctbGlua3M6ICAgICAgIHdoZXRoZXIgbGlua2VkIHBhZ2VzIHNob3VsZCBhbHNvIGJlIAorICAgIHwgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZWQgKGRlZmF1bHQ6IHRydWUpCisgICAgfCAgICBwcmVjb21waWxlLW9ubHk6ICAgIHByZWNvbXBpbGUgc2l0ZW1hcHMgYW5kIFhTUCBwYWdlcywgYnV0IAorICAgIHwgICAgICAgICAgICAgICAgICAgICAgICBkbyBub3QgZ2VuZXJhdGUgYW55IHBhZ2VzIChkZWZhdWx0OiBmYWxzZSkKKyAgICB8ICAgIGNvbmZpcm0tZXh0ZW5zaW9uczogY2hlY2sgdGhlIG1pbWUgdHlwZSBmb3IgdGhlIGdlbmVyYXRlZCBwYWdlCisgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhZGp1c3QgZmlsZW5hbWUgYW5kIGxpbmtzIGV4dGVuc2lvbnMKKyAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdG8gbWF0Y2ggdGhlIG1pbWUgdHlwZSAKKyAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gdGV4dC9odG1sLT4uaHRtbCkKKyAgICB8CisgICAgfCAgTm90ZTogV2hpbHN0IHVzaW5nIGFuIHhjb25mIGZpbGUgdG8gY29uZmlndXJlIHRoZSBDb2Nvb24gCisgICAgfCAgICAgICAgQ29tbWFuZCBMaW5lIGdpdmVzIGFjY2VzcyB0byBtb3JlIGZlYXR1cmVzLCB0aGUgdXNlIG9mIAorICAgIHwgICAgICAgIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzIGlzIG1vcmUgc3RhYmxlLCBhcyB0aGVyZSBhcmUgCisgICAgfCAgICAgICAgY3VycmVudGx5IHBsYW5zIHRvIGltcHJvdmUgdGhlIHhjb25mIGZvcm1hdCB0byBhbGxvdyAKKyAgICB8ICAgICAgICBncmVhdGVyIGZsZXhpYmlsaXR5LiBJZiB5b3UgcmVxdWlyZSBhIHN0YWJsZSBhbmQKKyAgICB8ICAgICAgICBjb25zaXN0ZW50IG1ldGhvZCBmb3IgYWNjZXNzaW5nIHRoZSBDTEksIGl0IGlzIHJlY29tbWVuZGVkIAorICAgIHwgICAgICAgIHRoYXQgeW91IHVzZSB0aGUgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMgdG8gY29uZmlndXJlIAorICAgIHwgICAgICAgIHRoZSBDTEkuIFNlZSBkb2N1bWVudGF0aW9uIGF0OgorICAgIHwgICAgICAgIC91c2VyZG9jcy9vZmZsaW5lL2luZGV4Lmh0bWwgYW5kIFdpa2k6Q29tbWFuZExpbmUKKyAgICB8CisgICAgKy0tPgorICAgIAorPGNvY29vbiB2ZXJib3NlPSJ0cnVlIiAgCisgICAgICAgIGZvbGxvdy1saW5rcz0idHJ1ZSIgCisgICAgICAgIHByZWNvbXBpbGUtb25seT0iZmFsc2UiIAorICAgICAgICBjb25maXJtLWV4dGVuc2lvbnM9ImZhbHNlIj4KKworICAgPCEtLSsKKyAgICAgICB8ICBUaGUgY29udGV4dCBkaXJlY3RvcnkgaXMgdXN1YWxseSB0aGUgd2ViYXBwIGRpcmVjdG9yeQorICAgICAgIHwgIGNvbnRhaW5pbmcgdGhlIHNpdGVtYXAueG1hcCBmaWxlLgorICAgICAgIHwKKyAgICAgICB8ICBUaGUgY29uZmlnIGZpbGUgaXMgdGhlIGNvY29vbi54Y29uZiBmaWxlLgorICAgICAgIHwKKyAgICAgICB8ICBUaGUgd29yayBkaXJlY3RvcnkgaXMgdXNlZCBieSBDb2Nvb24gdG8gc3RvcmUgdGVtcG9yYXJ5CisgICAgICAgfCAgZmlsZXMgYW5kIGNhY2hlIGZpbGVzLgorICAgICAgIHwKKyAgICAgICB8ICBUaGUgZGVzdGluYXRpb24gZGlyZWN0b3J5IGlzIHdoZXJlIGdlbmVyYXRlZCBwYWdlcyB3aWxsCisgICAgICAgfCAgYmUgd3JpdHRlbiAoYXNzdW1pbmcgdGhlICdzaW1wbGUnIG1hcHBlciBpcyB1c2VkLCBzZWUgCisgICAgICAgfCAgYmVsb3cpCisgICAgICAgKy0tPgorICAgPGNvbnRleHQtZGlyPi48L2NvbnRleHQtZGlyPgorICAgPGNvbmZpZy1maWxlPldFQi1JTkYvY29jb29uLnhjb25mPC9jb25maWctZmlsZT4KKyAgIDx3b3JrLWRpcj4uLi90bXAvY29jb29uLXdvcms8L3dvcmstZGlyPgorICAgPGRlc3QtZGlyPi4uL3NpdGU8L2Rlc3QtZGlyPgorICAgCisgICA8IS0tKworICAgICAgIHwgIEEgY2hlY2tzdW0gZmlsZSBjYW4gYmUgdXNlZCB0byBzdG9yZSBjaGVja3N1bXMgZm9yIHBhZ2VzCisgICAgICAgfCAgYXMgdGhleSBhcmUgZ2VuZXJhdGVkLiBXaGVuIHRoZSBzaXRlIGlzIG5leHQgZ2VuZXJhdGVkLCAKKyAgICAgICB8ICBmaWxlcyB3aWxsIG5vdCBiZSB3cml0dGVuIGlmIHRoZWlyIGNoZWNrc3VtIGhhcyBub3QgY2hhbmdlZC4KKyAgICAgICB8ICBUaGlzIG1lYW5zIHRoYXQgaXQgd2lsbCBiZSBlYXNpZXIgdG8gZGV0ZWN0IHdoaWNoIGZpbGVzIAorICAgICAgIHwgIG5lZWQgdG8gYmUgdXBsb2FkZWQgdG8gYSBzZXJ2ZXIsIHVzaW5nIHRoZSB0aW1lc3RhbXAuCisgICAgICAgKy0tPgorICAgPCEtLSAgIDxjaGVja3N1bXMtdXJpPmJ1aWxkL3dvcmsvY2hlY2tzdW1zPC9jaGVja3N1bXMtdXJpPi0tPgorCisgICA8IS0tKworICAgICAgIHwgQnJva2VuIGxpbmsgcmVwb3J0aW5nIG9wdGlvbnM6CisgICAgICAgfCAgIFJlcG9ydCBpbnRvIGEgdGV4dCBmaWxlLCBvbmUgbGluayBwZXIgbGluZToKKyAgICAgICB8ICAgICA8YnJva2VuLWxpbmtzIHR5cGU9InRleHQiIHJlcG9ydD0iZmlsZW5hbWUiLz4KKyAgICAgICB8ICAgUmVwb3J0IGludG8gYW4gWE1MIGZpbGU6CisgICAgICAgfCAgICAgPGJyb2tlbi1saW5rcyB0eXBlPSJ4bWwiIHJlcG9ydD0iZmlsZW5hbWUiLz4KKyAgICAgICB8ICAgSWdub3JlIGJyb2tlbiBsaW5rcyAoZGVmYXVsdCk6CisgICAgICAgfCAgICAgPGJyb2tlbi1saW5rcyB0eXBlPSJub25lIi8+CisgICAgICAgfAorICAgICAgIHwgICBUd28gYXR0cmlidXRlcyB0byB0aGlzIG5vZGUgc3BlY2lmeSB3aGV0aGVyIGEgcGFnZSBzaG91bGQKKyAgICAgICB8ICAgYmUgZ2VuZXJhdGVkIHdoZW4gYW4gZXJyb3IgaGFzIG9jY3VyZWQuICdnZW5lcmF0ZScgc3BlY2lmaWVzIAorICAgICAgIHwgICB3aGV0aGVyIGEgcGFnZSBzaG91bGQgYmUgZ2VuZXJhdGVkIChkZWZhdWx0OiB0cnVlKSBhbmQKKyAgICAgICB8ICAgZXh0ZW5zaW9uIHNwZWNpZmllcyBhbiBleHRlbnNpb24gdGhhdCBzaG91bGQgYmUgYXBwZW5kZWQKKyAgICAgICB8ICAgdG8gdGhlIGdlbmVyYXRlZCBwYWdlJ3MgZmlsZW5hbWUgKGRlZmF1bHQ6IG5vbmUpCisgICAgICAgfAorICAgICAgIHwgICBVc2luZyB0aGlzLCBhIHF1aWNrIHNjYW4gdGhyb3VnaCB0aGUgZGVzdGluYXRpb24gZGlyZWN0b3J5CisgICAgICAgfCAgIHdpbGwgc2hvdyBicm9rZW4gbGlua3MsIGJ5IHRoZWlyIGZpbGVuYW1lIGV4dGVuc2lvbi4KKyAgICAgICArLS0+CisgICA8YnJva2VuLWxpbmtzIHR5cGU9InhtbCIgCisgICAgICAgICAgICAgICAgIGZpbGU9Ii4uL2Jyb2tlbmxpbmtzLnhtbCIKKyAgICAgICAgICAgICAgICAgZ2VuZXJhdGU9ImZhbHNlIgorICAgICAgICAgICAgICAgICBleHRlbnNpb249Ii5lcnJvciIvPgorICAgCisgICA8IS0tKworICAgICAgIHwgIExvYWQgY2xhc3NlcyBhdCBzdGFydHVwLiBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgZ2VuZXJhdGluZworICAgICAgIHwgIGZyb20gc2l0ZXMgdGhhdCB1c2UgU1FMIGRhdGFiYXNlcyBhbmQgSkRCQy4KKyAgICAgICB8ICBUaGUgPGxvYWQtY2xhc3M+IGVsZW1lbnQgY2FuIGJlIHJlcGVhdGVkIGlmIG11bHRpcGxlIGNsYXNzZXMKKyAgICAgICB8ICBhcmUgbmVlZGVkLgorICAgICAgICstLT4KKyAgIDwhLS0KKyAgIDxsb2FkLWNsYXNzPm9yZy5maXJlYmlyZHNxbC5qZGJjLkRyaXZlcjwvbG9hZC1jbGFzcz4KKyAgIC0tPgorCisgICA8IS0tKworICAgICAgIHwgIENvbmZpZ3VyZXMgbG9nZ2luZy4gCisgICAgICAgfCAgVGhlICdsb2cta2l0JyBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgbG9nIGtpdCAKKyAgICAgICB8ICBjb25maWd1cmF0aW9uIGZpbGUgKHVzdWFsbHkgY2FsbGVkIGxvZ2tpdC54Y29uZi4gCisgICAgICAgfCAKKyAgICAgICB8ICBMb2dnZXIgc3BlY2lmaWVzIHRoZSBsb2dnaW5nIGNhdGVnb3J5IChmb3IgYWxsIGxvZ2dpbmcgcHJpb3IgCisgICAgICAgfCAgdG8gb3RoZXIgQ29jb29uIGxvZ2dpbmcgY2F0ZWdvcmllcyB0YWtpbmcgb3ZlcikKKyAgICAgICB8CisgICAgICAgfCAgQXZhaWxhYmxlIGxvZyBsZXZlbHMgYXJlOgorICAgICAgIHwgICAgREVCVUc6ICAgICAgICBwcmludHMgYWxsIGxldmVsIG9mIGxvZyBtZXNzYWdlcy4KKyAgICAgICB8ICAgIElORk86ICAgICAgICAgcHJpbnRzIGFsbCBsZXZlbCBvZiBsb2cgbWVzc2FnZXMgZXhjZXB0IERFQlVHIAorICAgICAgIHwgICAgICAgICAgICAgICAgICBvbmVzLgorICAgICAgIHwgICAgV0FSTjogICAgICAgICBwcmludHMgYWxsIGxldmVsIG9mIGxvZyBtZXNzYWdlcyBleGNlcHQgREVCVUcgCisgICAgICAgfCAgICAgICAgICAgICAgICAgIGFuZCBJTkZPIG9uZXMuCisgICAgICAgfCAgICBFUlJPUjogICAgICAgIHByaW50cyBhbGwgbGV2ZWwgb2YgbG9nIG1lc3NhZ2VzIGV4Y2VwdCBERUJVRywgCisgICAgICAgfCAgICAgICAgICAgICAgICAgIElORk8gYW5kIFdBUk4gb25lcy4KKyAgICAgICB8ICAgIEZBVEFMX0VSUk9SOiAgcHJpbnRzIG9ubHkgbG9nIG1lc3NhZ2VzIG9mIHRoaXMgbGV2ZWwKKyAgICAgICArLS0+CisgICA8IS0tIDxsb2dnaW5nIGxvZy1raXQ9IldFQi1JTkYvbG9na2l0Lnhjb25mIiBsb2dnZXI9ImNsaSIgbGV2ZWw9IkVSUk9SIiAvPiAtLT4KKworICAgPCEtLSsKKyAgICAgICB8ICBTcGVjaWZpZXMgdGhlIGZpbGVuYW1lIHRvIGJlIGFwcGVuZGVkIHRvIFVSSXMgdGhhdAorICAgICAgIHwgIHJlZmVyIHRvIGEgZGlyZWN0b3J5IChpLmUuIGVuZCB3aXRoIGEgZm9yd2FyZCBzbGFzaCkuCisgICAgICAgKy0tPgorICAgPGRlZmF1bHQtZmlsZW5hbWU+aW5kZXguaHRtbDwvZGVmYXVsdC1maWxlbmFtZT4KKworICAgPCEtLSsKKyAgICAgICB8ICBTcGVjaWZpZXMgYSB1c2VyIGFnZW50IHN0cmluZyB0byB0aGUgc2l0ZW1hcCB3aGVuCisgICAgICAgfCAgZ2VuZXJhdGluZyB0aGUgc2l0ZS4KKyAgICAgICB8CisgICAgICAgfCAgQSBnZW5lcmljIHRlcm0gZm9yIGEgd2ViIGJyb3dzZXIgaXMgInVzZXIgYWdlbnQiLiBBbnkgCisgICAgICAgfCAgdXNlciBhZ2VudCwgd2hlbiBjb25uZWN0aW5nIHRvIGEgd2ViIHNlcnZlciwgd2lsbCBwcm92aWRlCisgICAgICAgfCAgYSBzdHJpbmcgdG8gaWRlbnRpZnkgaXRzZWxmIChlLmcuIGFzIEludGVybmV0IEV4cGxvcmVyIG9yCisgICAgICAgfCAgTW96aWxsYSkuIEl0IGlzIHBvc3NpYmxlIHRvIGhhdmUgQ29jb29uIHNlcnZlIGRpZmZlcmVudAorICAgICAgIHwgIGNvbnRlbnQgZGVwZW5kaW5nIHVwb24gdGhlIHVzZXIgYWdlbnQgc3RyaW5nIHByb3ZpZGVkIGJ5CisgICAgICAgfCAgdGhlIGJyb3dzZXIuIElmIHlvdXIgc2l0ZSBkb2VzIHRoaXMsIHRoZW4geW91IG1heSB3YW50IHRvCisgICAgICAgfCAgdXNlIHRoaXMgPHVzZXItYWdlbnQ+IGVudHJ5IHRvIHByb3ZpZGUgYSAnZmFrZScgdXNlciBhZ2VudAorICAgICAgIHwgIHRvIENvY29vbiwgc28gdGhhdCBpdCBnZW5lcmF0ZXMgdGhlIGNvcnJlY3QgdmVyc2lvbiBvZiB5b3VyCisgICAgICAgfCAgc2l0ZS4KKyAgICAgICB8IAorICAgICAgIHwgIEZvciBtb3N0IHNpdGVzLCB0aGlzIGNhbiBiZSBpZ25vcmVkLgorICAgICAgICstLT4KKyAgIDwhLS0KKyAgIDx1c2VyLWFnZW50PkNvY29vbiBDb21tYW5kIExpbmUgRW52aXJvbm1lbnQgMi4xPC91c2VyLWFnZW50PgorICAgLS0+CisKKyAgIDwhLS0rCisgICAgICAgfCAgU3BlY2lmaWVzIGFuIGFjY2VwdCBzdHJpbmcgdG8gdGhlIHNpdGVtYXAgd2hlbiBnZW5lcmF0aW5nCisgICAgICAgfCAgdGhlIHNpdGUuCisgICAgICAgfCAgVXNlciBhZ2VudHMgY2FuIHNwZWNpZnkgdG8gYW4gSFRUUCBzZXJ2ZXIgd2hhdCB0eXBlcyBvZiBjb250ZW50CisgICAgICAgfCAgKGJ5IG1pbWUtdHlwZSkgdGhleSBhcmUgYWJsZSB0byByZWNlaXZlLiBFLmcuIGEgYnJvd3NlciBtYXkgYmUgCisgICAgICAgfCAgYWJsZSB0byBoYW5kbGUganBlZ3MsIGJ1dCBub3QgcG5ncy4gVGhlIEhUVFAgYWNjZXB0IGhlYWRlciAKKyAgICAgICB8ICBhbGxvd3MgdGhlIHNlcnZlciB0byB0YWtlIHRoZSBicm93c2VyJ3MgY2FwYWJpbGl0aWVzIGludG8gYWNjb3VudCwKKyAgICAgICB8ICBhbmQgb25seSBzZW5kIGJhY2sgY29udGVudCB0aGF0IGl0IGNhbiBoYW5kbGUuCisgICAgICAgfAorICAgICAgIHwgIEZvciBtb3N0IHNpdGVzLCB0aGlzIGNhbiBiZSBpZ25vcmVkLgorICAgICAgICstLT4KKworICAgPGFjY2VwdD4qLyo8L2FjY2VwdD4KKyAgIAorICAgPCEtLSsKKyAgICAgICB8IFNwZWNpZmllcyB3aGljaCBVUklzIHNob3VsZCBiZSBpbmNsdWRlZCBvciBleGNsdWRlZCwgYWNjb3JkaW5nCisgICAgICAgfCB0byB3aWxkY2FyZCBwYXR0ZXJucy4gCisgICAgICAgfCAKKyAgICAgICB8IFRoZXNlIGluY2x1ZGVzL2V4Y2x1ZGVzIGFyZSBvbmx5IHJlbGV2YW50IHdoZW4geW91IGFyZSBmb2xsb3dpbmcKKyAgICAgICB8IGxpbmtzLiBBIGxpbmsgVVJJIG11c3QgbWF0Y2ggYW4gaW5jbHVkZSBwYXR0ZXJuIChpZiBvbmUgaXMgZ2l2ZW4pIAorICAgICAgIHwgYW5kIG5vdCBtYXRjaCBhbiBleGNsdWRlIHBhdHRlcm4sIGlmIGl0IGlzIHRvIGJlIGZvbGxvd2VkIGJ5CisgICAgICAgfCBDb2Nvb24uIEl0IGNhbiBiZSB1c2VmdWwsIGZvciBleGFtcGxlLCB3aGVyZSB0aGVyZSBhcmUgbGlua3MgaW4KKyAgICAgICB8IHlvdXIgc2l0ZSB0byBwYWdlcyB0aGF0IGFyZSBub3QgZ2VuZXJhdGVkIGJ5IENvY29vbiwgc3VjaCBhcyAKKyAgICAgICB8IHJlZmVyZW5jZXMgdG8gYXBpLWRvY3VtZW50YXRpb24uCisgICAgICAgfCAKKyAgICAgICB8IEJ5IGRlZmF1bHQsIGFsbCBVUklzIGFyZSBpbmNsdWRlZC4gSWYgYm90aCBpbmNsdWRlIGFuZCBleGNsdWRlCisgICAgICAgfCBwYXR0ZXJucyBhcmUgc3BlY2lmaWVkLCBhIFVSSSBpcyBmaXJzdCBjaGVja2VkIGFnYWluc3QgdGhlIAorICAgICAgIHwgaW5jbHVkZSBwYXR0ZXJucywgYW5kIHRoZW4gYWdhaW5zdCB0aGUgZXhjbHVkZSBwYXR0ZXJucy4KKyAgICAgICB8IAorICAgICAgIHwgTXVsdGlwbGUgcGF0dGVybnMgY2FuIGJlIGdpdmVuLCB1c2luZyBtdWxpcGxlIGluY2x1ZGUgb3IgZXhjbHVkZQorICAgICAgIHwgbm9kZXMuIAorICAgICAgIHwgCisgICAgICAgfCBUaGUgb3JkZXIgb2YgdGhlIGVsZW1lbnRzIGlzIG5vdCBzaWduaWZpY2FudCwgYXMgb25seSB0aGUgZmlyc3QgCisgICAgICAgfCBzdWNjZXNzZnVsIG1hdGNoIG9mIGVhY2ggY2F0ZWdvcnkgaXMgdXNlZC4KKyAgICAgICB8IAorICAgICAgIHwgQ3VycmVudGx5LCBvbmx5IHRoZSBjb21wbGV0ZSBzb3VyY2UgVVJJIGNhbiBiZSBtYXRjaGVkIChpbmNsdWRpbmcKKyAgICAgICB8IGFueSBVUkkgcHJlZml4KS4gRnV0dXJlIHBsYW5zIGluY2x1ZGUgZGVzdGluYXRpb24gVVJJIG1hdGNoaW5nIAorICAgICAgIHwgYW5kIHJlZ2V4cCBtYXRjaGluZy4gSWYgeW91IGhhdmUgcmVxdWlyZW1lbnRzIGZvciB0aGVzZSwgY29udGFjdAorICAgICAgIHwgZGV2QGNvY29vbi5hcGFjaGUub3JnLgorICAgICAgICstLT4KKworICAgPGV4Y2x1ZGUgcGF0dGVybj0iKiovIi8+CisgICA8ZXhjbHVkZSBwYXR0ZXJuPSIqKmFwaWRvY3MqKiIvPgorICAgPGV4Y2x1ZGUgcGF0dGVybj0iYXBpLyoqIi8+CisgICA8ZXhjbHVkZSBwYXR0ZXJuPSJjL2FwaURvY3MvKioiLz4KKyAgIDxleGNsdWRlIHBhdHRlcm49IkphdmEvYXBpLyoqIi8+CisgICAKKyAgIDxleGNsdWRlIHBhdHRlcm49InNpdGU6KioiLz4KKyAgIDxleGNsdWRlIHBhdHRlcm49ImV4dDoqKiIvPgorICAgICAgCisgICA8IS0tIEV4Y2x1ZGUgdG9rZW5zIHVzZWQgaW4gVVJMcyB0byBBU0YgbWlycm9ycyAoaW50ZXJwcmV0ZWQgYnkgYSBDR0kpIC0tPgorICAgPGV4Y2x1ZGUgcGF0dGVybj0iW3ByZWZlcnJlZF0vKioiLz4KKyAgIDxleGNsdWRlIHBhdHRlcm49Iltsb2NhdGlvbl0iLz4KKyAgIAorICAgPCEtLSAgIDxpbmNsdWRlLWxpbmtzIGV4dGVuc2lvbj0iLmh0bWwiLz4tLT4KKyAgIAorICAgPCEtLSsKKyAgICAgICB8ICA8dXJpPiBub2RlcyBzcGVjaWZ5IHRoZSBVUklzIHRoYXQgc2hvdWxkIGJlIGdlbmVyYXRlZCwgYW5kIAorICAgICAgIHwgIHdoZXJlIHJlcXVpcmVkLCB3aGF0IHNob3VsZCBiZSBkb25lIHdpdGggdGhlIGdlbmVyYXRlZCBwYWdlcy4KKyAgICAgICB8ICBUaGV5IGRlc2NyaWJlIHRoZSB3YXkgdGhlIFVSSSBvZiB0aGUgZ2VuZXJhdGVkIGZpbGUgaXMgY3JlYXRlZAorICAgICAgIHwgIGZyb20gdGhlIHNvdXJjZSBwYWdlJ3MgVVJJLiBUaGVyZSBhcmUgdGhyZWUgd2F5cyB0aGF0IGEgZ2VuZXJhdGVkCisgICAgICAgfCAgZmlsZSBVUkkgY2FuIGJlIGNyZWF0ZWQ6IGFwcGVuZCwgcmVwbGFjZSBhbmQgaW5zZXJ0LgorICAgICAgIHwKKyAgICAgICB8ICBUaGUgInR5cGUiIGF0dHJpYnV0ZSBzcGVjaWZpZXMgb25lIG9mIChhcHBlbmR8cmVwbGFjZXxpbnNlcnQpOgorICAgICAgIHwKKyAgICAgICB8ICBhcHBlbmQ6CisgICAgICAgfCAgQXBwZW5kIHRoZSBnZW5lcmF0ZWQgcGFnZSdzIFVSSSB0byB0aGUgZW5kIG9mIHRoZSBzb3VyY2UgVVJJOgorICAgICAgIHwKKyAgICAgICB8ICAgPHVyaSB0eXBlPSJhcHBlbmQiIHNyYy1wcmVmaXg9ImRvY3VtZW50cy8iIHNyYz0iaW5kZXguaHRtbCIKKyAgICAgICB8ICAgZGVzdD0iYnVpbGQvZGVzdC8iLz4KKyAgICAgICB8CisgICAgICAgfCAgVGhpcyBtZWFucyB0aGF0IAorICAgICAgIHwgICAoMSkgdGhlICJkb2N1bWVudHMvaW5kZXguaHRtbCIgcGFnZSBpcyBnZW5lcmF0ZWQKKyAgICAgICB8ICAgKDIpIHRoZSBmaWxlIHdpbGwgYmUgd3JpdHRlbiB0byAiYnVpbGQvZGVzdC9kb2N1bWVudHMvaW5kZXguaHRtbCIKKyAgICAgICB8CisgICAgICAgfCAgcmVwbGFjZToKKyAgICAgICB8ICBDb21wbGV0ZWx5IGlnbm9yZSB0aGUgZ2VuZXJhdGVkIHBhZ2UncyBVUkkgLSBqdXN0IAorICAgICAgIHwgIHVzZSB0aGUgZGVzdGluYXRpb24gVVJJOgorICAgICAgIHwKKyAgICAgICB8ICAgPHVyaSB0eXBlPSJyZXBsYWNlIiBzcmMtcHJlZml4PSJkb2N1bWVudHMvIiBzcmM9ImluZGV4Lmh0bWwiIAorICAgICAgIHwgICBkZXN0PSJidWlsZC9kZXN0L2RvY3MuaHRtbCIvPgorICAgICAgIHwgIAorICAgICAgIHwgIFRoaXMgbWVhbnMgdGhhdCAKKyAgICAgICB8ICAgKDEpIHRoZSAiZG9jdW1lbnRzL2luZGV4Lmh0bWwiIHBhZ2UgaXMgZ2VuZXJhdGVkCisgICAgICAgfCAgICgyKSB0aGUgcmVzdWx0IGlzIHdyaXR0ZW4gdG8gImJ1aWxkL2Rlc3QvZG9jcy5odG1sIgorICAgICAgIHwgICAoMykgdGhpcyB3b3JrcyBvbmx5IGZvciAic2luZ2xlIiBwYWdlcyAtIGFuZCBub3Qgd2hlbiBsaW5rcworICAgICAgIHwgICAgICAgYXJlIGZvbGxvd2VkCisgICAgICAgfAorICAgICAgIHwgIGluc2VydDoKKyAgICAgICB8ICBJbnNlcnQgZ2VuZXJhdGVkIHBhZ2UncyBVUkkgaW50byB0aGUgZGVzdGluYXRpb24gCisgICAgICAgfCAgVVJJIGF0IHRoZSBwb2ludCBtYXJrZWQgd2l0aCBhICogKGV4YW1wbGUgdXNlcyBmaWN0aW9uYWwgCisgICAgICAgfCAgemlwIHByb3RvY29sKQorICAgICAgIHwKKyAgICAgICB8ICAgPHVyaSB0eXBlPSJpbnNlcnQiIHNyYy1wcmVmaXg9ImRvY3VtZW50cy8iIHNyYz0iaW5kZXguaHRtbCIgCisgICAgICAgfCAgIGRlc3Q9InppcDovLyouemlwL3BhZ2UuaHRtbCIvPgorICAgICAgIHwKKyAgICAgICB8ICBUaGlzIG1lYW5zIHRoYXQgCisgICAgICAgfCAgICgxKQorICAgICAgIHwKKyAgICAgICB8ICBJbiBhbnkgb2YgdGhlc2Ugc2NlbmFyaW9zLCBpZiB0aGUgZGVzdCBhdHRyaWJ1dGUgaXMgb21pdHRlZCwKKyAgICAgICB8ICB0aGUgdmFsdWUgcHJvdmlkZWQgZ2xvYmFsbHkgdXNpbmcgdGhlIDxkZXN0LWRpcj4gbm9kZSB3aWxsIAorICAgICAgIHwgIGJlIHVzZWQgaW5zdGVhZC4KKyAgICAgICArLS0+CisgICA8IS0tCisgICA8dXJpIHR5cGU9InJlcGxhY2UiIAorICAgICAgICBzcmMtcHJlZml4PSJzYW1wbGVzLyIgCisgICAgICAgIHNyYz0iaGVsbG8td29ybGQvaGVsbG8uaHRtbCIKKyAgICAgICAgZGVzdD0iYnVpbGQvZGVzdC9oZWxsby13b3JsZC5odG1sIi8+CisgICAtLT4KKworICAgPCEtLSsKKyAgICAgICB8IDx1cmk+IG5vZGVzIGNhbiBiZSBncm91cGVkIHRvZ2V0aGVyIGluIGEgPHVyaXM+IG5vZGUuIFRoaXMgCisgICAgICAgfCBlbmFibGVzIGEgZ3JvdXAgb2YgVVJJcyB0byBzaGFyZSBwcm9wZXJ0aWVzLiBUaGUgZm9sbG93aW5nCisgICAgICAgfCBwcm9wZXJ0aWVzIGNhbiBiZSBzZXQgZm9yIGEgZ3JvdXAgb2YgVVJJczoKKyAgICAgICB8ICAgKiBmb2xsb3ctbGlua3M6ICAgICAgIHNob3VsZCBwYWdlcyBiZSBjcmF3bGVkIGZvciBsaW5rcworICAgICAgIHwgICAqIGNvbmZpcm0tZXh0ZW5zaW9uczogc2hvdWxkIGZpbGUgZXh0ZW5zaW9ucyBiZSBjaGVja2VkCisgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIGNvcnJlY3QgbWltZSB0eXBlCisgICAgICAgfCAgICogc3JjLXByZWZpeDogICAgICAgICBhbGwgc291cmNlIFVSSXMgc2hvdWxkIGJlIAorICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgcHJlLXBlbmRlZCB3aXRoIHRoaXMgcHJlZml4IGJlZm9yZQorICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGlvbi4gVGhlIHByZWZpeCBpcyBub3QgCisgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlZCB3aGVuIGNhbGN1bGF0aW5nIHRoZSAKKyAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uIFVSSQorICAgICAgIHwgICAqIGRlc3Q6ICAgICAgICAgICAgICAgdGhlIGJhc2UgZGVzdGluYXRpb24gVVJJIHRvIGJlCisgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWQgYnkgYWxsIHBhZ2VzIGluIHRoaXMgZ3JvdXAKKyAgICAgICB8ICAgKiB0eXBlOiAgICAgICAgICAgICAgIHRoZSBtZXRob2QgdG8gYmUgdXNlZCB0byBjYWxjdWxhdGUKKyAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBkZXN0aW5hdGlvbiBVUkkuIFNlZSBhYm92ZSAKKyAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gb24gPHVyaT4gbm9kZSBmb3IgZGV0YWlscy4KKyAgICAgICB8IAorICAgICAgIHwgRWFjaCA8dXJpcz4gbm9kZSBjYW4gaGF2ZSBhIG5hbWUgYXR0cmlidXRlLiBXaGVuIGEgbmFtZQorICAgICAgIHwgYXR0cmlidXRlIGhhcyBiZWVuIHNwZWNpZmllZCwgdGhlIC1uIHN3aXRjaCBvbiB0aGUgY29tbWFuZAorICAgICAgIHwgbGluZSBjYW4gYmUgdXNlZCB0byB0ZWxsIENvY29vbiB0byBvbmx5IHByb2Nlc3MgdGhlIFVSSXMKKyAgICAgICB8IHdpdGhpbiB0aGlzIFVSSSBncm91cC4gV2hlbiBubyAtbiBzd2l0Y2ggaXMgZ2l2ZW4sIGFsbCAKKyAgICAgICB8IDx1cmlzPiBub2RlcyBhcmUgcHJvY2Vzc2VkLiBUaHVzLCBvbmUgeGNvbmYgZmlsZSBjYW4gYmUgCisgICAgICAgfCB1c2VkIHRvIG1hbmFnZSBtdWx0aXBsZSBzaXRlcy4KKyAgICAgICArLS0+CisgICA8IS0tCisgICA8dXJpcyBuYW1lPSJtaXJyb3JzIiBmb2xsb3ctbGlua3M9ImZhbHNlIj4KKyAgICAgPHVyaSB0eXBlPSJhcHBlbmQiIHNyYz0ibWlycm9ycy5odG1sIi8+CisgICA8L3VyaXM+CisgICAtLT4KKworICAgPCEtLSsKKyAgICAgICB8ICBGaWxlIGNvbnRhaW5pbmcgVVJJcyAocGxhaW4gdGV4dCwgb25lIHBlciBsaW5lKS4KKyAgICAgICArLS0+CisgICA8IS0tCisgICA8dXJpLWZpbGU+dXJpcy50eHQ8L3VyaS1maWxlPgorICAgLS0+Cis8L2NvY29vbj4KZGlmZiAtLWdpdCBhL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbnRlbnQveGRvY3MvSmF2YS9hcGkueG1sIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9KYXZhL2FwaS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzU5YTg3YwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbnRlbnQveGRvY3MvSmF2YS9hcGkueG1sCkBAIC0wLDAgKzEsNDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgZG9jdW1lbnQgUFVCTElDICItLy9BUEFDSEUvL0RURCBEb2N1bWVudGF0aW9uIFYxLjEvL0VOIiAiZG9jdW1lbnQtdjExLmR0ZCIKK1sKKyAgPCFFTlRJVFkgJSB4bWxzZWNfZW50aXRpZXMgU1lTVEVNICIuLi94bWxzZWNfZW50aXRpZXMuZW50Ij4gCisgICV4bWxzZWNfZW50aXRpZXM7IAorXT4KKzwhLS0KK0NvcHlyaWdodCAyMDAzLTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisKK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKzxkb2N1bWVudD4gCisgIDxoZWFkZXI+IAorICAgIDx0aXRsZT5KYXZhIEFQSSBEb2N1bWVudGF0aW9uPC90aXRsZT4gCisgIDwvaGVhZGVyPiAKKyAgPGJvZHk+IAorICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPkphdmFkb2MgR2VuZXJhdGVkIERvY3VtZW50YXRpb248L3RpdGxlPgorICAgICAgPHA+JnBhY2thZ2VuYW1lbG9uZzsgY29tZXMgcGFja2FnZWQgd2l0aCBBUEkgZG9jdW1lbnRhdGlvbi48L3A+CisgICAgICA8cD5UaGlzIGRvY3VtZW50YXRpb24gaXMgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgZnJvbSB0aGUgSmF2YWRvYy1zdHlsZQorCWNvbW1lbnRzIGluc2lkZSB0aGUgc291cmNlIGZpbGVzLiAgQ2xpY2sgb24gb25lIG9mIHRoZSBsaW5rcyBiZWxvdyB0bworCWdvIHRvIHRoZSBhcHByb3ByaWF0ZSBBUEkgZG9jdW1lbnRhdGlvbi48L3A+CisgICAgPC9zZWN0aW9uPgorICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPiZwYWNrYWdlbmFtZTsgQVBJIERvY3VtZW50YXRpb248L3RpdGxlPgorICAgIDx1bD4KKyAgICAgIDxsaT48anVtcCBocmVmPSJleHQ6amF2YS9kb2NzL2Z1bGwtYXBpIj5GdWxsIEFQSSBkb2N1bWVudGF0aW9uPC9qdW1wPjwvbGk+CisgICAgICA8bGk+PGp1bXAgaHJlZj0iZXh0OmphdmEvZG9jcy9oaWVyYWNocnkiPkhpZXJhcmNoeSBmb3IgYWxsIHRoZSBwYWNrYWdlczwvanVtcD48L2xpPgorICAgIDwvdWw+CisgICAgPC9zZWN0aW9uPgorICA8L2JvZHk+Cis8L2RvY3VtZW50PgpkaWZmIC0tZ2l0IGEvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9KYXZhL2V4YW1wbGVzLnhtbCBiL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbnRlbnQveGRvY3MvSmF2YS9leGFtcGxlcy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA2YmI0NAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbnRlbnQveGRvY3MvSmF2YS9leGFtcGxlcy54bWwKQEAgLTAsMCArMSw1NyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBkb2N1bWVudCBQVUJMSUMgIi0vL0FQQUNIRS8vRFREIERvY3VtZW50YXRpb24gVjEuMS8vRU4iICJkb2N1bWVudC12MTEuZHRkIgorWworICA8IUVOVElUWSAlIHhtbHNlY19lbnRpdGllcyBTWVNURU0gIi4uL3htbHNlY19lbnRpdGllcy5lbnQiPiAKKyAgJXhtbHNlY19lbnRpdGllczsgCitdPgorPCEtLQorQ29weXJpZ2h0IDIwMDMtMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKworTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCis8ZG9jdW1lbnQ+IAorICA8aGVhZGVyPiAKKyAgICA8dGl0bGU+SmF2YSBFeGFtcGxlczwvdGl0bGU+IAorICA8L2hlYWRlcj4gCisgIDxib2R5PiAKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5YTUwgU2lnbmF0dXJlczwvdGl0bGU+CisgICAgICA8cD4KKwlQYXJ0IG9mIHRoaXMgc29mdHdhcmUgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGFuZCB2ZXJpZnkgYXJiaXRyYXJ5IGZvcm1zCisJb2YgWE1MIFNpZ25hdHVyZXMuIFRoZSBkb2N1bWVudGF0aW9uIGF2YWlsYWJsZSBoZXJlIGlzIG5vdCB2ZXJ5IGh1Z2U7CisJbXkgZmlyc3QgYXBwcm9hY2ggaXMgdG8gc3VwcGx5IHVzYWdlIGV4YW1wbGVzIHdoaWNoIGFyZSBhdmFpbGFibGUgaW4KKwl0aGUgPGNvZGU+c3JjX3NhbXBsZXMvPC9jb2RlPiBkaXJlY3RvcnkgdG8gZ2l2ZSBpbnRlcmVzdGVkIHVzZXJzIGEKKwlmaXJzdCBzdGFydGluZyBwb2ludCB0byBqdW1wLXN0YXJ0IHdpdGggWE1MIFNpZ25hdHVyZS4gCisgICAgICA8L3A+CisgICAgICA8bm90ZT4KKwlUaGUgc2FtcGxlcyBkaXZpZGUgaW50byB0d28gZ3JvdXBzOiBTYW1wbGVzIHRoYXQgPGVtPmNyZWF0ZTwvZW0+IGFuZAorCXNhbXBsZXMgdGhhdCA8ZW0+dmVyaWZ5PC9lbT4gU2lnbmF0dXJlcy4gRXZlbnR1YWxseSwgeW91IHNob3VsZCBhZGp1c3QKKwl0aGUgdmVyaWZ5aW5nIHByb2dyYW0gdG8gYW5vdGhlciBmaWxlbmFtZSBpZiB5b3UgZ2V0CisJPGNvZGU+RmlsZU5vdEZvdW5kRXhjZXB0aW9uPC9jb2RlPnMuCisgICAgICA8L25vdGU+CisgICAgPC9zZWN0aW9uPgorCTxzZWN0aW9uPgorCSAgPHRpdGxlPlhNTCBFbmNyeXB0aW9uPC90aXRsZT4KKwkgIDxwPgorCQlBcyB3aXRoIHNpZ25hdHVyZXMsIHNhbXBsZXMgYXJlIHByb3ZpZGVkIHRvIHNob3cgaG93IHRvIGVuY3J5cHQKKwkJYW5kIGRlY3J5cHQgWE1MIGNvbnRlbnQuICBTZWUgCisJCTxjb2RlPnNyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvZW5jcnlwdGlvbjwvY29kZT4uCisJICA8L3A+CisJICA8cD4KKwkJVGhlIHNhbXBsZXMgY2FuIGJlIGNvbXBpbGVkIGFuZCBydW4gdXNpbmcgPGNvZGU+YW50IGVuY3J5cHQ8L2NvZGU+CisJCWFuZCA8Y29kZT5hbnQgZGVjcnlwdDwvY29kZT4uCisJICA8L3A+CisJPC9zZWN0aW9uPgorICA8L2JvZHk+Cis8L2RvY3VtZW50PgpkaWZmIC0tZ2l0IGEvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9KYXZhL2ZhcS54bWwgYi9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL0phdmEvZmFxLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjZjZjU3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9KYXZhL2ZhcS54bWwKQEAgLTAsMCArMSwyNDYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgZmFxcyBQVUJMSUMgIi0vL0FQQUNIRS8vRFREIEZBUSBWMS4xLy9FTiIgImR0ZC9mYXEtdjExLmR0ZCIKK1sKKyAgPCFFTlRJVFkgJSB4bWxzZWNfZW50aXRpZXMgU1lTVEVNICIuLi94bWxzZWNfZW50aXRpZXMuZW50Ij4gCisgICV4bWxzZWNfZW50aXRpZXM7IAorXT4KKzwhLS0KK0NvcHlyaWdodCAyMDAzLTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisKK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKzxmYXFzIHRpdGxlPSJGcmVxdWVudGx5IEFza2VkIFF1ZXN0aW9ucyAtIEphdmEiPgorICA8cGFydCBpZD0iZ2VuZXJhbF9qIj4KKyAgICA8dGl0bGU+UXVlc3Rpb25zIGFib3V0IEphdmE8L3RpdGxlPgorICAgIDxmYXEgaWQ9InNlY3VyaXR5X2oiPgorICAgICAgPHF1ZXN0aW9uPgorCUkgaGF2ZSBhIEphdmEtKHNlY3VyaXR5L2NyeXB0b2dyYXBoeSkgcHJvYmxlbS4gQ2FuIHlvdSBoZWxwIG1lPworICAgICAgPC9xdWVzdGlvbj4KKyAgICAgIDxhbnN3ZXI+CisJPHA+CisJICBHbyB0byB0aGUgPGxpbmsgaHJlZj0iZXh0OmphdmFmb3J1bSI+amF2YSBmb3J1bTwvbGluaz4gb2YgU3VuLiBZb3UgY2FuCisJICBmaW5kIGZvcnVtcyB3aGVyZSB5b3UgY2FuIGFzayBxdWVzdGlvbnMgbGlrZSAmcXVvdDtIb3cgZG8gSSBnZW5lcmF0ZQorCSAgYSBrZXlwYWlyJnF1b3Q7LCBldGMuCisJPC9wPgorICAgICAgPC9hbnN3ZXI+CisgICAgPC9mYXE+CisgICAgPGZhcSBpZD0ieG1sX2oiPgorICAgICAgPHF1ZXN0aW9uPgorCUkgaGF2ZSBhIEphdmEtWE1MIHByb2JsZW0uCisgICAgICA8L3F1ZXN0aW9uPgorICAgICAgPGFuc3dlcj4KKwk8cD4KKwkgIEdvIHRvIHRoZSA8bGluayBocmVmPSJleHQ6amF2YWZvcnVtIj5qYXZhIGZvcnVtPC9saW5rPiBvZiBTdW4sIHNlY3Rpb24KKwkgIEphdmEgVGVjaG5vbG9neSAmYW1wOyBYTUwgYW5kIGhhdmUgYSBsb29rIGF0IDxsaW5rCisJICAgIGhyZWY9ImV4dDp4bWwuYXBhY2hlLm9yZy94bWw0ai11c2VkIj4gQXBhY2hlIFhlcmNlczwvbGluaz4uCisJPC9wPgorICAgICAgPC9hbnN3ZXI+CisgICAgPC9mYXE+CisgIDwvcGFydD4KKworICA8cGFydCBpZD0ic3BlY2lmaWNfIj4KKyAgICA8dGl0bGU+UXVlc3Rpb25zIGFib3V0IHRoaXMgcGFja2FnZTwvdGl0bGU+CisgICAgPGZhcSBpZD0ibG9nZ2luZyI+CisgICAgICA8cXVlc3Rpb24+CisJSG93IGRvIEkgZW5hYmxlL3R1cm4gb2ZmIGxvZ2dpbmc/CisgICAgICA8L3F1ZXN0aW9uPgorICAgICAgPGFuc3dlcj4KKwk8cD4KKwkgIFRoZSBsb2dnaW5nIGlzIGNvbmZpZ3VyZWQgaW4gdGhlIDxjb2RlPmNvbmZpZy54bWw8L2NvZGU+IGZpbGUgd2hpY2gKKwkgIGVpdGhlciBpbiB0aGUgPGNvZGU+eG1sc2VjLmphcjwvY29kZT4gZmlsZSBvciBpbiB0aGUgY2xhc3MgcGF0aC4gVGhpcworCSAgaXMgYSBsaXR0bGUgYml0IGNvbXBsaWNhdGVkIGFzIGNvbmZpZy54bWwgaXMgdXNlZCBib3RoIGZvciBsaWJyYXJ5CisJICB3aWRlIGNvbmZpZ3VyYXRpb25zIGxpa2UgYWxnb3JpdGhtcyBhcyB3ZWxsIGFzIGZvciB0aGUgdXNlciBzZXR0aW5nCisJICBhYm91dCBsb2c0ai4gVGhpcyB3aWxsIGJlIGNoYW5nZWQgc29tZWRheSA7LSkpCisJPC9wPgorCTxwPk9LLCBzbyBpdCBnb2VzOiBJbiB0aGUgCisJICA8anVtcAorCSAgICBocmVmPSJodHRwOi8vY3ZzLmFwYWNoZS5vcmcvdmlld2N2cy5jZ2kveG1sLXNlY3VyaXR5L3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9yZXNvdXJjZS9jb25maWcueG1sP3Jldj1IRUFEJmFtcDtjb250ZW50LXR5cGU9dGV4dC92bmQudmlld2N2cy1tYXJrdXAiPgorCSAgICA8Y29kZT54bWwtc2VjdXJpdHkvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Jlc291cmNlL2NvbmZpZy54bWw8L2NvZGU+CisJICA8L2p1bXA+IGZpbGUsIHRoZXJlIGlzIGFuIGVsZW1lbnQgY2FsbGVkCisJICA8Y29kZT4mbHQ7bG9nNGo6Y29uZmlndXJhdGlvbiZndDs8L2NvZGU+LiBUaGlzIGVsZW1lbnQgY29udGFpbnMgdGhlCisJICBYTUwgc3R5bGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBhcyBkZWZpbmVkIGluIHRoZSAKKwkgIDxqdW1wCisJICAgIGhyZWY9Imh0dHA6Ly9qYWthcnRhLmFwYWNoZS5vcmcvbG9nNGovZG9jcy9hcGkvb3JnL2FwYWNoZS9sb2c0ai94bWwvRE9NQ29uZmlndXJhdG9yLmh0bWwiPgorCSAgICBsb2c0aiBET01Db25maWd1cmF0b3IgY2xhc3MKKwkgIDwvanVtcD4uIFlvdSBjYW4gZmluZCBleGFtcGxlcyAKKwkgIDxqdW1wIGhyZWY9Imh0dHA6Ly9jdnMuYXBhY2hlLm9yZy92aWV3Y3ZzLmNnaS9qYWthcnRhLWxvZzRqL3Rlc3RzL2lucHV0L3htbC8iPmhlcmU8L2p1bXA+CisJPC9wPgorICAgICAgPC9hbnN3ZXI+CisgICAgPC9mYXE+CisgICAgPGZhcSBpZD0iYmFzZVVSSSI+CisgICAgICA8cXVlc3Rpb24+CisJV2hhdCBpcyB0aGUgbWVhbmluZyBvZiA8Y29kZT5CYXNlVVJJPC9jb2RlPj8KKyAgICAgIDwvcXVlc3Rpb24+CisgICAgICA8YW5zd2VyPgorCTxwPgorCSAgV2hlbiB5b3Ugd29yayB3aXRoIFVSSXMgbGlrZQorCSAgJnF1b3Q7PGNvZGU+aHR0cDovL3d3dy5leGFtcGxlLmNvbS9pbmRleC5odG1sPC9jb2RlPiZxdW90OywgaXQgaXMKKwkgIHF1aXRlIHN1cmUgd2hhdCB5b3UgbWVhbiBhcyB0aGlzIGlzIGFuIGFic29sdXRlIFVSTCwgaS5lLiBpdCBpcyBjbGVhcgorCSAgd2hpY2ggcHJvdG9jb2wgaXNlIHVzZWQgdG8gZmV0Y2ggd2hpY2ggZmlsZSBmcm9tIHdoaWNoIHNlcnZlci4gV2hlbgorCSAgeW91IHVzZSBzdWNoIGEgVVJMIGluc2lkZSBhIHNpZ25hdHVyZSwgdGhlIHNvZnR3YXJlIGNhbiBhdXRvbWF0aWNhbGx5CisJICBmaWd1cmUgb3V0IHdoYXQgeW91IHNpZ24uIEJ1dCB3aGVuIHlvdSBzaWduIHNvbWV0aGluZyBpbiB5b3VyIGxvY2FsCisJICBmaWxlIHN5c3RlbSBvciBpZiB5b3UgdXNlIGEgcmVsYXRpdmUgcGF0aCBsaWtlCisJICAmcXVvdDs8Y29kZT4uLi8xLnR4dDwvY29kZT4mcXVvdDssIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHVuZGVyc3RhbmQKKwkgIHRoaXMgcmVmZXJlbmNlIHdpdGhvdXQgc29tZSBjb250ZXh0LiA8ZW0+VGhpczwvZW0+IGNvbnRleHQgaXMgdGhlCisJICA8Y29kZT5CYXNlVVJJPC9jb2RlPi4gRm9yIGluc3RhbmNlLCBpZiB5b3Ugc2lnbgorCSAgPGNvZGU+VVJJPSZxdW90Oy4uLzEudHh0JnF1b3Q7PC9jb2RlPiBhbmQgdGhlCisJICA8Y29kZT5CYXNlVVJJPSZxdW90O2ZpbGU6Ly8vaG9tZS91c2VyL3dvcmsvc2lnbmF0dXJlLnhtbCZxdW90OzwvY29kZT4sIAorCSAgaXQgaXMgY2xlYXIgdGhhdCB0aGUgZmlsZQorCSAgPGNvZGU+QmFzZVVSST0mcXVvdDtmaWxlOi8vL2hvbWUvdXNlci8xLnR4dCZxdW90OzwvY29kZT4gaXMgdG8gYmUKKwkgIHNpZ25lZC4gQnV0IHdoZW4geW91IGNyZWF0ZSB0aGUgc2lnbmF0dXJlLCB0aGUgZmlsZQorCSAgPGNvZGU+QmFzZVVSST0mcXVvdDtmaWxlOi8vL2hvbWUvdXNlci93b3JrL3NpZ25hdHVyZS54bWwmcXVvdDs8L2NvZGU+CisJICBkb2VzIG5vdCB5ZXQgZXhpc3Q7IHRoZXJlZm9yZSwgeW91IGhhdmUgdG8gc3VwcGx5IHRoZSBVUkwgd2hlcmUgeW91CisJICBpbnRlbmQgdG8gc3RvcmUgdGhlIHNpZ25hdHVyZSBsYXRlciAocmVsYXRpdmUgdG8gdGhlIHNpZ25lZCBvYmplY3RzKS4gCisJPC9wPgorCTxwPgorCSAgVGhlIFN0cmluZyBCYXNlVVJJIGlzIHRoZSBzeXN0ZW1JRCBvbiB3aGljaCB0aGUgT2JqZWN0IHdpbGwgYmUgc3RvcmVkCisJICBpbiB0aGUgZnV0dXJlLiBUaGlzIGlzIG5lZWRlZCB0byByZXNvbHZlIHJlbGF0aXZlIGxpbmtzIGluIHRoZQorCSAgPGNvZGU+UmVmZXJlbmNlPC9jb2RlPiBlbGVtZW50cyB3aGljaCBwb2ludCB0byB0aGUgZmlsZXN5c3RlbSBvcgorCSAgc29tZXRoaW5nIHNpbWlsYXIuIAorCTwvcD4KKwk8cD4KKwkgIEV4YW1wbGU6IEltYWdpbmUgdGhhdCB5b3Ugd2FudCB0byBjcmVhdGUgYSBzaWduYXR1cmUgdG8gc3RvcmUgaXQgb24gYQorCSAgd2ViIHNlcnZlciBhcworCSAgPGNvZGU+aHR0cDovL3d3dy5hY21lLmNvbS9zaWduYXR1cmVzL3NpZzEueG1sPC9jb2RlPi4gU28KKwkgIDxjb2RlPkJhc2VVUkk9JnF1b3Q7aHR0cDovL3d3dy5hY21lLmNvbS9zaWcxLnhtbCZxdW90OzwvY29kZT4uIFRoaXMKKwkgIG1lYW5zIHRoYXQgaWYgeW91IGNyZWF0ZSBhIDxjb2RlPlJlZmVyZW5jZTwvY29kZT4gd2l0aAorCSAgPGNvZGU+VVJJPSZxdW90Oy4vaW5kZXguaHRtbCZxdW90OzwvY29kZT4sIHRoZSBsaWJyYXJ5IGNhbiBlYXNpbHkgdXNlCisJICBpdCdzIEhUVFBSZXNvdXJjZVJlc29sdmVyIHRvIGZldGNoCisJICA8Y29kZT5odHRwOi8vd3d3LmFjbWUuY29tL2luZGV4Lmh0bWw8L2NvZGU+IHdpdGhvdXQgdGhhdCB5b3UgaGF2ZSB0bworCSAgc2F5IDxjb2RlPlVSST0mcXVvdDtodHRwOi8vd3d3LmFjbWUuY29tL2luZGV4Lmh0bWwmcXVvdDs8L2NvZGU+LiAKKwk8L3A+CisgICAgICA8L2Fuc3dlcj4KKyAgICA8L2ZhcT4KKyAgICA8ZmFxIGlkPSJleGFtcGxlcyI+CisgICAgICA8cXVlc3Rpb24+CisJSG93IGRvIEkgdXNlIHRoZSBwYWNrYWdlIHRvIGdlbmVyYXRlIGFuZCB2ZXJpZnkgYSBzaWduYXR1cmU/CisgICAgICA8L3F1ZXN0aW9uPgorICAgICAgPGFuc3dlcj4KKwk8cD4KKwkgIENoZWNrb3V0IHRoZSBzYW1wbGVzIGluCisJICA8Y29kZT5zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3NpZ25hdHVyZS88L2NvZGU+LiAKKwk8L3A+CisJPG5vdGU+CisJICBUaGUgc2FtcGxlcyBkaXZpZGUgaW50byB0d28gZ3JvdXBzOiBTYW1wbGVzIHRoYXQgPGVtPmNyZWF0ZTwvZW0+IGFuZAorCSAgc2FtcGxlcyB0aGF0IDxlbT52ZXJpZnk8L2VtPiBTaWduYXR1cmVzLiBFdmVudHVhbGx5LCB5b3Ugc2hvdWxkCisJICBhZGp1c3QgdGhlIHZlcmlmeWluZyBwcm9ncmFtIHRvIGFub3RoZXIgZmlsZW5hbWUgaWYgeW91IGdldAorCSAgPGNvZGU+RmlsZU5vdEZvdW5kRXhjZXB0aW9uPC9jb2RlPnMuCisJPC9ub3RlPgorICAgICAgPC9hbnN3ZXI+CisgICAgPC9mYXE+CisgICAgPGZhcSBpZD0iamRrMTQwIj4KKyAgICAgIDxxdWVzdGlvbj4KKwlJJ20gdXNpbmcgU1VOIEpESyB2MS40LjAgb3IgdjEuNC4xIGFuZCBJIGdldCBzb21lIGV4Y2VwdGlvbnMuIEFueSBjbHVlcz8KKyAgICAgIDwvcXVlc3Rpb24+CisgICAgICA8YW5zd2VyPgorCTxwPgorCSAgQWZ0ZXIgU1VOIHJlbGVhc2VkIHRoZSAgPGp1bXAgaHJlZj0iZXh0OmphdmEiPiBKYXZhIChUTSkgMiBQbGF0Zm9ybQorCSAgICBTdGFuZGFyZCBFZGl0aW9uIHYxLjQuMCA8L2p1bXA+LCB0aGUgeG1sLXNlY3VyaXR5IHBhY2thZ2Ugc3RvcHBlZAorCSAgd29ya2luZy4gVGhpcyBpcyBhICAKKwkgIDxqdW1wCisJICAgIGhyZWY9Imh0dHA6Ly9kZXZlbG9wZXIuamF2YS5zdW4uY29tL2RldmVsb3Blci9idWdQYXJhZGUvYnVncy80NjE1NTgyLmh0bWwiPgorCSAgICBrbm93biAKKwkgIDwvanVtcD4gCisJICBwcm9ibGVtOiBTVU4gcGFja2FnZWQgYSBiZXRhIG9mIFhhbGFuIGludG8gdGhlIEpESzEuNC4wLCBidXQgdGhlCisJICB4bWwtc2VjdXJpdHkgcGFja2FnZSByZXF1aXJlcyBhIHN0YWJsZSB2ZXJzaW9uIG9mIFhhbGFuICh2Mi4yLjAgb3IKKwkgIGxhdGVyKS4gVG8gZml4IHRoZSBwcm9ibGVtLCB5b3UgaGF2ZSB0byBwdXQgdGhlIHhhbGFuLmphciBpbnRvIGEKKwkgIHNwZWNpYWwgZGlyZWN0b3J5IGluIHlvdXIgSkRLOgorCSAgPGNvZGU+ajJzZGsxLjQuMC9qcmUvbGliL2VuZG9yc2VkL3hhbGFuLmphcjwvY29kZT4uIElmIHlvdSBpbnN0YWxsZWQKKwkgIGFuIG91dC1vZi10aGUtYm94IEpESzEuNCAoZS5nLiBvbiBXaW5kb3dzIDIwMDApLCB0aGUKKwkgICZxdW90O2VuZG9yc2VkJnF1b3Q7IGRpcmVjdG9yeSBkb2VzIG5vdCBleGlzdDogeW91J2xsIGhhdmUgdG8gY3JlYXRlCisJICBpdCBieSBoYW5kLgorCTwvcD4KKwk8d2FybmluZz5QdXR0aW5nIHRoaXMgSkFSIHRvIGFub3RoZXIgbG9jYXRpb24gbGlrZSBsaWIvZXh0IFdJTEwgTk9UIFdPUksuIDwvd2FybmluZz4KKwk8cD4KKwkgIEZvciBtb3JlIG9uIHRoYXQsIHlvdSBjYW4gYWxzbyBjaGVjayB0aGUgIDxqdW1wCisJICAgIGhyZWY9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy9+ZWR3aW5nby9qYXhwLWZhcS5odG1sI292ZXJyaWRlIj4KKwkgICAgVW5vZmZpY2lhbCBKQVhQIEZBUSA8L2p1bXA+LiAKKwk8L3A+CisgICAgICA8L2Fuc3dlcj4KKyAgICA8L2ZhcT4KKyAgICA8ZmFxIGlkPSJudWxscHRyZXhjZXB0aW9uIj4KKyAgICAgIDxxdWVzdGlvbj4KKwlJIGdldCBhIE51bGxQb2ludGVyRXhjZXB0aW9uLCBhbmQgSSBkb24ndCBrbm93IHdoYXQncyB3cm9uZy4KKyAgICAgIDwvcXVlc3Rpb24+CisgICAgICA8YW5zd2VyPgorCTxwPgorCSAgT2Z0ZW4sIHRoaXMgcHJvYmxlbSBpcyBjYXVzZWQgYnkgdXNpbmcgRE9NMSBjYWxscyBsaWtlCisJICA8Y29kZT5jcmVhdGVFbGVtZW50KCksIHNldEF0dHJpYnV0ZSgpLCBjcmVhdGVBdHRyaWJ1dGUoKTwvY29kZT4uIFRoZXNlIGFyZQorCSAgbm9uLW5hbWVzcGFjZS1hd2FyZSBhbmQgd2lsbCBjYXVzZSBYUGF0aCBhbmQgQzE0TiBlcnJvcnMuCisJICBBbHdheXMgdXNlIHRoZSBET00yIDxjb2RlPmNyZWF0ZShBdHRyaWJ1dGV8RWxlbWVudClOUyguLi4pPC9jb2RlPgorCSAgbWV0aG9kcyBpbnN0ZWFkLCBldmVuIGlmIHlvdSdyZSBjcmVhdGluZyBhbiBlbGVtZW50IHdpdGhvdXQgYSBuYW1lc3BhY2UKKwkgIChpbiB0aGF0IGNhc2UsIHlvdSBjYW4gdXNlIG51bGwgYXMgYSBuYW1lc3BhY2UpLgorCTwvcD4KKwk8cD4KKwkgIFRoZSBYYWxhbi1KIFRlYW0gdG9sZCB1cyB0aGF0IERPTTEgY2FsbHMgYXJlIGRlcHJlY2F0ZWQgYW5kIGFyZSBub3QgdG8KKwkgIGJlIHVzZWQgaW4gY29kZS4geG1sLXNlY3VyaXR5IGhhcyBiZWVuIHJldmlld2VkIGFuZCBpcyBET00xIGNsZWFuIG5vdy4gCisJICBUaGUgWGFsYW4gZm9sa3MgdG9sZCB1cyB0aGF0IGlmIHlvdSBjcmVhdGUgRWxlbWVudHMgb3IgYXR0cmlidXRlcyAKKwkgIHVzaW5nIERPTTEgY2FsbHMgd2hpY2ggYXJlIG5vdCBuYW1lc3BhY2UgYXdhcmUsIHRoZXkgZG8gbm90IGNhcmUgYWJvdXQKKwkgIGFueSBwcm9ibGVtIHlvdSBoYXZlIGJlY2F1c2Ugb2YgaW5jb3JyZWN0IGhlaGF2aW91ciBvZiBYYWxhbi4KKwk8L3A+IAorICAgICAgPC9hbnN3ZXI+CisgICAgPC9mYXE+CisJPGZhcSBpZD0iZWxlbWVudG9yZGVyIj4KKwkgIDxxdWVzdGlvbj4KKwkJSSBzaWduIGEgZG9jdW1lbnQgYW5kIHdoZW4gSSB0cnkgdG8gdmVyaWZ5IHVzaW5nIHRoZSBzYW1lIGtleSwgaXQgZmFpbHMKKwkgIDwvcXVlc3Rpb24+CisJICA8YW5zd2VyPgorCQk8cD4KKwkJICBBZnRlciB5b3UgaGF2ZSBjcmVhdGVkIHRoZSBYTUxTaWduYXR1cmUgb2JqZWN0LCBiZWZvcmUgeW91IHNpZ24gdGhlCisJCSAgZG9jdW1lbnQsIHlvdSA8ZW0+bXVzdDwvZW0+IGVtYmVkIHRoZSBzaWduYXR1cmUgZWxlbWVudCBpbiB0aGUgb3duaW5nCisJCSAgZG9jdW1lbnQgKHVzaW5nIGEgY2FsbCB0byA8Y29kZT5YTUxTaWduYXR1cmUuZ2V0RWxlbWVudCgpPC9jb2RlPiB0bworCQkgIHJldHJpZXZlIHRoZSBuZXdseSBjcmVhdGVkIEVsZW1lbnQgbm9kZSBmcm9tIHRoZSBzaWduYXR1cmUpIGJlZm9yZQorCQkgIGNhbGxpbmcgdGhlIDxjb2RlPlhNTFNpZ25hdHVyZS5zaWduKCk8L2NvZGU+IG1ldGhvZCwKKwkJPC9wPgorCQk8cD4KKwkJICBEdXJpbmcgY2Fub25pY2FsaXNhdGlvbiBvZiB0aGUgU2lnbmVkSW5mbyBlbGVtZW50LCB0aGUgbGlicmFyeSBsb29rcworCQkgIGF0IHRoZSBwYXJlbnQgYW5kIGFuY2VzdG9yIG5vZGVzIG9mIHRoZSBTaWduYXR1cmUgZWxlbWVudCB0byBmaW5kCisJCSAgYW55IG5hbWVzcGFjZXMgdGhhdCB0aGUgU2lnbmVkSW5mbyBub2RlIGhhcyBpbmhlcml0ZWQuICBBbnkgdGhhdCBhcmUKKwkJICBmb3VuZCBhcmUgZW1iZWRkZWQgaW4gdGhlIGNhbm9uaWNhbCBmb3JtIG9mIHRoZSBTaWduZWRJbmZvLiAgKFRoaXMKKwkJICBpcyBub3QgdHJ1ZSB3aGVuIEV4Y2x1c2l2ZSBDYW5vbmljYWxpc2F0aW9uIGlzIHVzZWQsIGJ1dCBpdCBpcyBzdGlsbAorCQkgIGdvb2QgcHJhY3RpY2UgdG8gaW5zZXJ0IHRoZSBlbGVtZW50IG5vZGUgcHJpb3IgdG8gdGhlIHNpZ24oKQorCQkgIG1ldGhvZCBiZWluZyBjYWxsZWQpLgorCQk8L3A+CisJCTxwPgorCQkgIElmIHlvdSBoYXZlIG5vdCBlbWJlZGRlZCB0aGUgc2lnbmF0dXJlIG5vZGUgaW4gdGhlIGRvY3VtZW50LCBpdCB3aWxsCisJCSAgbm90IGhhdmUgYW55IHBhcmVudCBvciBhbmNlc3RvciBub2Rlcywgc28gaXQgd2lsbCBub3QgaW5oZXJpdCB0aGVpcgorCQkgIG5hbWVzcGFjZXMuICBJZiB5b3UgdGhlbiBlbWJlZCBpdCBpbiB0aGUgZG9jdW1lbnQgYW5kIGNhbGwgPGNvZGU+CisJCQl2ZXJpZnkoKTwvY29kZT4sIHRoZSBuYW1lc3BhY2VzIHdpbGwgYmUgZm91bmQgYW5kIHRoZSBjYW5vbmljYWwgCisJCSAgZm9ybSBvZiBTaWduZWRJbmZvIHdpbGwgYmUgZGlmZmVyZW50IHRvIHRoYXQgZ2VuZXJhdGVkIGR1cmluZyAKKwkJICA8Y29kZT5zaWduKCk8L2NvZGU+LgorCQk8L3A+CisJICA8L2Fuc3dlcj4KKwk8L2ZhcT4KKyAgPC9wYXJ0PgorCis8L2ZhcXM+CisKKworCis8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKK0xvY2FsIHZhcmlhYmxlczoKK21vZGU6IHhtbAorc2dtbC1vbWl0dGFnOm5pbAorc2dtbC1zaG9ydHRhZzpuaWwKK3NnbWwtbmFtZWNhc2UtZ2VuZXJhbDpuaWwKK3NnbWwtZ2VuZXJhbC1pbnNlcnQtY2FzZTpsb3dlcgorc2dtbC1taW5pbWl6ZS1hdHRyaWJ1dGVzOm5pbAorc2dtbC1hbHdheXMtcXVvdGUtYXR0cmlidXRlczp0CitzZ21sLWluZGVudC1zdGVwOjIKK3NnbWwtaW5kZW50LWRhdGE6dAorc2dtbC1wYXJlbnQtZG9jdW1lbnQ6bmlsCitzZ21sLWV4cG9zZWQtdGFnczpuaWwKK3NnbWwtbG9jYWwtY2F0YWxvZ3M6bmlsCitzZ21sLWxvY2FsLWVjYXQtZmlsZXM6bmlsCitFbmQ6CistLT4KZGlmZiAtLWdpdCBhL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbnRlbnQveGRvY3MvSmF2YS9pbmRleC54bWwgYi9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL0phdmEvaW5kZXgueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiMjU5NDEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL0phdmEvaW5kZXgueG1sCkBAIC0wLDAgKzEsMTMzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIGRvY3VtZW50IFBVQkxJQyAiLS8vQVBBQ0hFLy9EVEQgRG9jdW1lbnRhdGlvbiBWMS4xLy9FTiIgImRvY3VtZW50LXYxMS5kdGQiCitbCisgIDwhRU5USVRZICUgeG1sc2VjX2VudGl0aWVzIFNZU1RFTSAiLi4veG1sc2VjX2VudGl0aWVzLmVudCI+IAorICAleG1sc2VjX2VudGl0aWVzOyAKK10+Cis8IS0tCitDb3B5cmlnaHQgMjAwMy0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKzxkb2N1bWVudD4gCisgIDxoZWFkZXI+IAorICAgIDx0aXRsZT5UaGUgSmF2YSBzZWN0aW9uPC90aXRsZT4gCisgIDwvaGVhZGVyPiAKKyAgPGJvZHk+IAorICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlZlcnNpb24gMS40LjMgUmVsZWFzZWQ8L3RpdGxlPiAKKyAgICAgIDxwPgorICAgICAgICBWZXJzaW9uIDEuNC4zIG9mIHRoZSBKYXZhIGxpYnJhcnkgaGFzIGJlZW4gcmVsZWFzZWQuIFRoaXMgaXMgbWFpbmx5CisgICAgICAgIGEgYnVnZml4IHJlbGVhc2UgYnV0IGFsc28gY29udGFpbnMgYSBmaXggZm9yIHRoZSByZWNlbnRseSBhbm5vdW5jZWQKKyAgICAgICAgSE1BQyB2dWxuZXJhYmlsaXR5IGluIHRoZSBYTUwgU2lnbmF0dXJlIHNwZWNpZmljYXRpb24uCisgICAgICA8L3A+CisgICAgPC9zZWN0aW9uPgorICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlZlcnNpb24gMS40LjIgUmVsZWFzZWQ8L3RpdGxlPiAKKyAgICAgIDxwPgorICAgICAgICBWZXJzaW9uIDEuNC4yIG9mIHRoZSBKYXZhIGxpYnJhcnkgaGFzIGJlZW4gcmVsZWFzZWQuIFRoaXMgaXMgbWFpbmx5CisgICAgICAgIGEgYnVnZml4IHJlbGVhc2UgYnV0IGFsc28gY29udGFpbnMgYSBmZXcgbmV3IGVuaGFuY2VtZW50cyBpbmNsdWRpbmcKKyAgICAgICAgc3VwcG9ydCBmb3IgWE1MIENhbm9uaWNhbGl6YXRpb24gMS4xLgorICAgICAgPC9wPgorICAgIDwvc2VjdGlvbj4KKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5WZXJzaW9uIDEuNC4xIFJlbGVhc2VkPC90aXRsZT4gCisgICAgICA8cD4KKwlWZXJzaW9uIDEuNC4xIG9mIHRoZSBKYXZhIGxpYnJhcnkgaGFzIGJlZW4gcmVsZWFzZWQuIFRoaXMgaXMgYSBidWdmaXggCisJcmVsZWFzZSB0aGF0IGNvbnRhaW5zIGEgbWFqb3IgYnVnZml4IHRvIHRoZSBjYW5vbmljYWxpemF0aW9uIGVuZ2luZSAKKwlpbnRyb2R1Y2VkIGluIHRoZSAxLjQgcmVsZWFzZS4gSXQgaXMgcmVjb21tZW5kZWQgdGhhdCAxLjQgdXNlcnMgdXBncmFkZSAKKwl0byB0aGUgbmV3IHZlcnNpb24gYXMgc2lnbmF0dXJlcyBjb250YWluaW5nIG5vbiBhc2NpaSBjaGFyYWN0ZXJzIGNyZWF0ZWQKKwlieSB0aGlzIGxpYnJhcnkgYXJlIG5vdCBhY2NvcmRpbmcgdG8gdGhlIHN0YW5kYXJkLCBhbmQgd2lsbCBiZSBvbmx5IAorCXZhbGlkYXRlZCBieSAxLjQgbGlicmFyeS4gCisgICAgICA8L3A+CisgICAgPC9zZWN0aW9uPgorICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlZlcnNpb24gMS40IFJlbGVhc2VkPC90aXRsZT4KKyAgICAgIDxwPgorCVZlcnNpb24gMS40IG9mIHRoZSBKYXZhIGxpYnJhcnkgaGFzIGJlZW4gcmVsZWFzZWQuIAorCVRoZSBtYWluIGNoYW5nZXMgZm9yIHRoaXMgdmVyc2lvbiBhcmU6CisgICAgICA8L3A+CisgICAgICA8dWw+CisgICAgICAgIDxsaT5JbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3RhbmRhcmQgQVBJIEpTUjEwNTwvbGk+CisgICAgICAgIDxsaT5SZXdyaXR0ZW4gYzE0biB0aGF0IGluY3JlYXNlcyBwZXJmb3JtYW5jZSBmb3Igc2lnbmF0dXJlIAorICAgICAgICB3aXRoIG5vZGUtc2V0IHRyYW5zZm9ybWF0aW9ucy48L2xpPgorICAgICAgICA8bGk+TWVtb3J5IGZvb3RwcmludCByZWR1Y3Rpb24gYW5kIHNldmVyYWwgYnVnZml4ZXM8L2xpPgorICAgICAgPC91bD4gCisgICAgICA8cD4gUmVmZXIgdG8gdGhlIAorCSAgPGxpbmsgaHJlZj0ic2l0ZTpjaGFuZ2VzIj5jaGFuZ2Vsb2c8L2xpbms+IGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgPC9wPiAgICAgIAorICAgIDwvc2VjdGlvbj4KKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5PdmVydmlldyBvZiB0aGUgSmF2YSBMaWJyYXJ5PC90aXRsZT4KKyAgICAgIDxwPgorCVRoZSAmcGFja2FnZW5hbWVsb25nOyAmcGFja2FnZXZlcnNpb247IHN1cHBvcnRzCisJPGp1bXAgaHJlZj0iZXh0OnczYy94bWxkc2lnX2phdmFfc3VwcG9ydGVkIj4mc3VwcF9qYXZhX2RzaWc7CisJPC9qdW1wPiBhbmQgCisJPGp1bXAgaHJlZj0iZXh0OnczYy94bWxlbmNfamF2YV9zdXBwb3J0ZWQiPiZzdXBwX2phdmFfZW5jOworCTwvanVtcD4KKyAgICAgIDwvcD4KKyAgICAgIDxwPgorCUFzIG9mIHZlcnNpb24gMS40LCB0aGUgSmF2YSBsaWJyYXJ5IHN1cHBvcnRzIHRoZSBzdGFuZGFyZCBKYXZhIEFQSQorCTxqdW1wIGhyZWY9Imh0dHA6Ly9qY3Aub3JnL2pzci9kZXRhaWwvMTA1LmpzcCI+CisJICBKU1ItMTA1OiBYTUwgRGlnaXRhbCBTaWduYXR1cmUgQVBJcworCTwvanVtcD4gZm9yIGNyZWF0aW5nIGFuZCB2YWxpZGF0aW5nIFhNTCBTaWduYXR1cmVzLiBBIHN0YW5kYXJkIEphdmEKKwlBUEkgZm9yIFhNTCBFbmNyeXB0aW9uIAorCTxqdW1wIGhyZWY9Imh0dHA6Ly9qY3Aub3JnL2pzci9kZXRhaWwvMTA2LmpzcCI+CisJICBKU1ItMTA2OiBYTUwgRGlnaXRhbCBFbmNyeXB0aW9uIEFQSXMKKwk8L2p1bXA+IGlzIGluIHByb2dyZXNzIGFuZCBpcyBub3QgZmluYWwsIHNvIHRoaXMKKwlBUEkgaXMgbm90IHlldCBzdXBwb3J0ZWQuIFlvdSBjYW4gY29udGludWUgdG8gdXNlIHRoZSBleGlzdGluZworCW5vbi1zdGFuZGFyZCBBUElzIGluIHRoZSBKYXZhIExpYnJhcnkgKHRoZXJlIGFyZSBubyBwbGFucworCXRvIGRpc2NvbnRpbnVlIG9yIGRlcHJlY2F0ZSB0aGVtKSwgYnV0IHlvdSBzaG91bGQgY29uc2lkZXIgbW92aW5nCisJdG8gdGhlIHN0YW5kYXJkIEFQSXMuCisgICAgICA8L3A+CisgICAgPC9zZWN0aW9uPgorICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPk9sZCBOZXdzPC90aXRsZT4KKyAgICAgIDxwPgorICAgICAgICBWZXJzaW9uIDEuMyByZWxlYXNlZCBvbiAyOCBPY3RvYmVyIDIwMDUuIEltcHJvdmVzIHBlcmZvcm1hbmNlIGFuZCAKKwltZW1vcnkgdXNhZ2Ugb3ZlciAxLjIsIGFuZCBpbmNsdWRlcyBzZXZlcmFsIGJ1Z2ZpeGVzLgorICAgICAgPC9wPgorICAgICAgPHA+CisgICAgICAgIFZlcnNpb24gMS4yLjEgcmVsZWFzZWQgb24gMjggRmVicnVhcnkgMjAwNS4gSXQgaXMgYSBidWdmaXggdmVyc2lvbiAKKwlvdmVyIDEuMiBhbmQgaXQgaXMgcmVjb21lbmRlZCB0byB1cGdyYWRlIHRvIHRoaXMgdmVyc2lvbi4gCisgICAgICA8L3A+CisgICAgICA8cD4KKyAgICAgICAgVmVyc2lvbiAxLjIgcmVsZWFzZWQgb24gMTEgRGVjZW1iZXIgMjAwNC4gSW1wcm92ZXMgdGhlIHBlcmZvcm1hbmNlIGFuZCAKKwltZW1vcnkgdXNhZ2Ugb3ZlciAxLjEgcmVsZWFzZSB0b2dldGhlciB3aXRoIGFuIGVhc2llciBpbnRlZ3JhdGlvbiBvZiAKKwlKQ0UgcHJvdmlkZXJzLgorICAgICAgPC9wPgorICAgICAgPHA+CisJVmVyc2lvbiAxLjEgcmVsZWFzZWQgb24gNyBBcHJpbCAyMDA0LiBJbmNsdWRlcyBhIGJldGEgaW1wbGVtZW50YXRpb24KKwlvZiBYTUwgRW5jcnlwdGlvbiB0b2dldGhlciB3aXRoIG1pbm9yIGJ1ZyBmaXhlcyBmb3IgdGhlIFhNTCBTaWduYXR1cmUKKwljb2RlLgorICAgICAgPC9wPgorICAgIDwvc2VjdGlvbj4KKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5KREsgMS40IGlzc3VlczwvdGl0bGU+CisgICAgICA8cD4KKwlJZiB5b3UgdXNlIEpESyAxLjQgYW5kIHdhbnQgdG8gdXNlIHRoaXMgc29mdHdhcmUsIGJlIHN1cmUgdGhhdCBYYWxhbiBpcworCXByb3Blcmx5IGluc3RhbGxlZC4gQ2hlY2sgdGhlIDxqdW1wCisJICBocmVmPSJzaXRlOmphdmEvaW5zdGFsbGF0aW9uIj5pbnN0YWxsYXRpb24gZ3VpZGU8L2p1bXA+ISEhCisgICAgICA8L3A+CisgICAgICA8cD4KKwlJIGhhdmUgc28gbWFueSBjb21wbGFpbnRzIGZyb20gcGVvcGxlIHdobyBhcmd1ZSB0aGF0IHRoZSBzb2Z0d2FyZQorCXRocm93cyBleGNlcHRpb25zIGR1cmluZyBydW5uaW5nIHRoZSBleGFtcGxlcyBvciBkdXJpbmcgdW5pdAorCXRlc3RpbmcuIFRoaXMgcGFja2FnZSBORUVEUyBhIFhhbGFuIHZlcnNpb24gYWZ0ZXIgMi4yRDEzIChhbmQgU1VOCisJc2hpcHBlZCBoaXMgSkRLIDEuNC4wIGZpbmFsIHdpdGggYSBYYWxhbiBiZXRhISkuIEkgc3RhcnRlZCBpbnRlZ3JhdGluZworCXRoZSBpbnN0YWxsYXRpb24gZ3VpZGUgaW50byB0aGUgZXhjZXB0aW9uIG1lc3NhZ2VzIGNhdXNlIGl0IHNlZW1zIHRoYXQKKwlwZW9wbGUgZG9uJ3QgaGF2ZSBhIGxvb2sgYXQgdGhlIGluc3RhbGxhdGlvbiBndWlkZS4gCisgICAgICA8L3A+CisgICAgPC9zZWN0aW9uPgorICA8L2JvZHk+Cis8L2RvY3VtZW50PgpkaWZmIC0tZ2l0IGEvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9KYXZhL2luc3RhbGxhdGlvbi54bWwgYi9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL0phdmEvaW5zdGFsbGF0aW9uLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jY2ZiYWIxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9KYXZhL2luc3RhbGxhdGlvbi54bWwKQEAgLTAsMCArMSwyMDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgZG9jdW1lbnQgUFVCTElDICItLy9BUEFDSEUvL0RURCBEb2N1bWVudGF0aW9uIFYxLjEvL0VOIiAiZG9jdW1lbnQtdjExLmR0ZCIKK1sKKyAgPCFFTlRJVFkgJSB4bWxzZWNfZW50aXRpZXMgU1lTVEVNICIuLi94bWxzZWNfZW50aXRpZXMuZW50Ij4gCisgICV4bWxzZWNfZW50aXRpZXM7IAorXT4KKzwhLS0KK0NvcHlyaWdodCAyMDAzLTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisKK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworPGRvY3VtZW50PiAKKyAgPGhlYWRlcj4gCisgICAgPHRpdGxlPkluc3RhbGxhdGlvbiAtIEphdmE8L3RpdGxlPiAKKyAgPC9oZWFkZXI+IAorICA8Ym9keT4gCisgICAgPHNlY3Rpb24+IAorICAgICAgPHRpdGxlPlVzaW5nIEpESyAxLjQuMDwvdGl0bGU+CisgICAgICA8cD4KKwlBZnRlciBTVU4gcmVsZWFzZWQgdGhlIAorCTxqdW1wIGhyZWY9ImV4dDpqYXZhIj4KKwkgIEphdmEgKFRNKSAyIFBsYXRmb3JtIFN0YW5kYXJkIEVkaXRpb24gdjEuNC4wCisJPC9qdW1wPiwgdGhlIHhtbC1zZWN1cml0eSBwYWNrYWdlIHN0b3BwZWQgd29ya2luZy4gVGhpcyBpcyBhIAorCTxqdW1wIGhyZWY9Imh0dHA6Ly9kZXZlbG9wZXIuamF2YS5zdW4uY29tL2RldmVsb3Blci9idWdQYXJhZGUvYnVncy80NjE1NTgyLmh0bWwiPgorCSAga25vd24KKwk8L2p1bXA+IAorCXByb2JsZW06IFNVTiBwYWNrYWdlZCBhIGJldGEgb2YgWGFsYW4gaW50byB0aGUgSkRLIDEuNC4wLCBidXQgdGhlCisJeG1sLXNlY3VyaXR5IHBhY2thZ2UgcmVxdWlyZXMgYSBzdGFibGUgdmVyc2lvbiBvZiBYYWxhbiAodjIuMi4wIG9yCisJbGF0ZXIpLiBUbyBmaXggdGhlIHByb2JsZW0sIHlvdSBoYXZlIHRvIHB1dCB0aGUgeGFsYW4uamFyIGludG8gYQorCXNwZWNpYWwgZGlyZWN0b3J5IGluIHlvdXIgSkRLOgorCTxjb2RlPmoyc2RrMS40LjAvanJlL2xpYi9lbmRvcnNlZC94YWxhbi5qYXI8L2NvZGU+IC4gSWYgeW91IGluc3RhbGxlZAorCWFuIG91dC1vZi10aGUtYm94IEpESzEuNCAoZS5nLiBvbiBXaW5kb3dzIDIwMDApLCB0aGUgImVuZG9yc2VkIgorCWRpcmVjdG9yeSBkb2VzIG5vdCBleGlzdDogeW91J2xsIGhhdmUgdG8gY3JlYXRlIGl0IGJ5IGhhbmQuIAorICAgICAgPC9wPgorICAgICAgPHdhcm5pbmc+CisJUHV0dGluZyB0aGlzIEpBUiB0byBhbm90aGVyIGxvY2F0aW9uIGxpa2UgPGNvZGU+bGliL2V4dDwvY29kZT4gV0lMTAorCU5PVCBXT1JLLgorICAgICAgPC93YXJuaW5nPgorICAgICAgPHA+CisJRm9yIG1vcmUgb24gdGhhdCwgeW91IGNhbiBhbHNvIGNoZWNrIHRoZSAKKwk8anVtcCBocmVmPSJodHRwOi8veG1sLmFwYWNoZS5vcmcvfmVkd2luZ28vamF4cC1mYXEuaHRtbCNvdmVycmlkZSI+CisJICBVbm9mZmljaWFsIEpBWFAgRkFRCisJPC9qdW1wPi4KKyAgICAgIDwvcD4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5QcmVyZXF1aXNpdGVzPC90aXRsZT4KKyAgICAgIDxwPgorCU1ha2Ugc3VyZSB5b3UgZ2V0IHRoZSBBbnQgVG9vbCBmcm9tIAorCTxqdW1wIGhyZWY9ImV4dDphbnQiPmh0dHA6Ly9hbnQuYXBhY2hlLm9yZy88L2p1bXA+CisgICAgICA8L3A+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+R2V0dGluZyB0aGUgc291cmNlPC90aXRsZT4KKyAgICAgIDxwPgorCVlvdSBjYW4gZG93bmxvYWQgdGhlIHNvdXJjZXMgdmlhIFdXVyBmcm9tIHRoZSBkb3dubG9hZCBwYWdlCisJYXQgCisJPGp1bXAgaHJlZj0ic2l0ZTphYm91dC9kb3dubG9hZCI+CisJICBodHRwOi8veG1sLmFwYWNoZS5vcmcvc2VjdXJpdHkvZG93bmxvYWQuaHRtbAorCTwvanVtcD4KKyAgICAgIDwvcD4KKyAgICAgIDxwPgorCVRoaXMgcHJvamVjdCdzIFN1YnZlcnNpb24gcmVwb3NpdG9yeSBjYW4gYmUgY2hlY2tlZCBvdXQgYW5vbnltb3VzbHkKKwl2aWEgSFRUUCBhcyBmb2xsb3dzLiBZb3Ugd2lsbCBuZWVkIGEgU3VidmVyc2lvbiBjbGllbnQuIAorICAgICAgPC9wPgorICAgICAgPHNvdXJjZT5zdm4gY2hlY2tvdXQgaHR0cHM6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2YveG1sL3NlY3VyaXR5L3RydW5rIHhtbC1zZWN1cml0eQorICAgICAgPC9zb3VyY2U+CisgICAgICA8cD5UaGlzIHdpbGwgY2hlY2sgb3V0IHRoZSBjb2RlIGludG8gYSBzdWJkaXJlY3RvcnkgbmFtZWQgInhtbC1zZWN1cml0eSIuIAorCSBUaGUgY2hlY2tvdXQgd2lsbCBjb250YWluIGJvdGggdGhlIEphdmEgYW5kIHRoZSBDKysgc291cmNlLgorICAgICAgPC9wPgorICAgICAgPHA+CisJQSBIVFRQIGludGVyZmFjZSB0byBicm93c2UgdGhlIHNvdXJjZXMgb25saW5lIGlzIGF2YWlsYWJsZSB2aWEgCisJPGp1bXAgaHJlZj0ic2l0ZTpnZXR0aW5nLWludm9sdmVkL1NWTiI+aHR0cDovL3N2bi5hcGFjaGUub3JnL3ZpZXd2Yy94bWwvc2VjdXJpdHkvdHJ1bmsvPC9qdW1wPgorICAgICAgPC9wPgorICAgIDwvc2VjdGlvbj4KKyAgICAKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5Db21waWxpbmcgdGhlIHNvdXJjZTwvdGl0bGU+CisgICAgICA8cD4KKwlBdCB0aGUgY29tbWFuZCBwcm9tcHQgdHlwZSA8Y29kZT5hbnQgdGVzdDwvY29kZT4uIElmIHlvdSB3YW50IHRvIAorCXVzZSBqaWtlcyBpbnN0ZWFkIG9mIHlvdXIgZGVmYXVsdCBqYXZhIGNvbXBpbGVyIGxvY2F0ZSB0aGUgPGNvZGU+YnVpbGQueG1sPC9jb2RlPgorCWZpbGUgYW5kIHJlcGxhY2UgdGhlIGxpbmUKKyAgICAgIDwvcD4KKyAgICAgIDxzb3VyY2U+Jmx0O3Byb3BlcnR5IG5hbWU9ImJ1aWxkLmNvbXBpbGVyIiB2YWx1ZT0iY2xhc3NpYyIvJmd0Ozwvc291cmNlPgorICAgICAgPHA+CisJd2l0aAorICAgICAgPC9wPgorICAgICAgPHNvdXJjZT4mbHQ7cHJvcGVydHkgbmFtZT0iYnVpbGQuY29tcGlsZXIiIHZhbHVlPSJqaWtlcyIvJmd0Ozwvc291cmNlPgorICAgIDwvc2VjdGlvbj4KKyAgICAKKzwhLS0gVW5jb21tZW50ZWQgaW4gdGhlIG9yaWdpbmFsIGRvY3MgCisgICAgPHNlY3Rpb24+IAorICAgICAgPHRpdGxlPlVucGFja2luZyB0aGUgZmlsZXM8L3RpdGxlPiAKKyAgICAgIDxwPgorCSZwYWNrYWdlbmFtZTsgaXMgcGFja2FnZWQgYXMgYSBaSVAgZmlsZSBmb3IgYWxsCisJcGxhdGZvcm1zIGFuZCBvcGVyYXRpbmcgc3lzdGVtcy4gIFlvdSBjYW4gcnVuIHRoZSBKYXZhCisJPHJlZj5qYXI8L3JlZj4gY29tbWFuZCB0byB1bnBhY2sgdGhlIGRpc3RyaWJ1dGlvbi4KKyAgICAgIDwvcD4KKyAgICAgIDx1bD4KKwk8bGk+amFyIHhmICZwYWNrYWdlbmFtZTstYmluLiZwYWNrYWdldmVyc2lvbjsuemlwPC9saT4KKwk8bGk+amFyIHhmICZwYWNrYWdlbmFtZTstc3JjLiZwYWNrYWdldmVyc2lvbjsuemlwPC9saT4KKwk8bGk+VGhpcyBjb21tYW5kIGNyZWF0ZXMgYSAiJnBhY2thZ2VkaXJlY3Rvcnk7IiBzdWItZGlyZWN0b3J5IGluIHRoZQorCSAgY3VycmVudCBkaXJlY3RvcnkgY29udGFpbmluZyBhbGwgdGhlIGZpbGVzLjwvbGk+CisgICAgICA8L3VsPgorICAgIDwvc2VjdGlvbj4KKyAgICAKKyAgICA8c2VjdGlvbj4gCisgICAgICA8dGl0bGU+RmlsZXMgaW4gdGhlIGJpbmFyeSBwYWNrYWdlIHJlbGVhc2U8L3RpdGxlPgorICAgICAgPHRhYmxlPgorCTx0cj48dGQ+TElDRU5TRTwvdGQ+PHRkPkxpY2Vuc2UgZm9yICZwYWNrYWdlbmFtZTs8L3RkPjwvdHI+CisJPHRyPjx0ZD5SZWFkbWUuaHRtbDwvdGQ+PHRkPldlYiBwYWdlIHJlZGlyZWN0IHRvIGRvY3MvaHRtbC9pbmRleC5odG1sPC90ZD48L3RyPgorCTx0cj48dGQ+eGVyY2VzLmphcjwvdGQ+PHRkPkphciBmaWxlIGNvbnRhaW5pbmcgYWxsIHRoZSBwYXJzZXIgY2xhc3MgZmlsZXM8L3RkPjwvdHI+CisJPHRyPjx0ZD54ZXJjZXNTYW1wbGVzLmphcjwvdGQ+PHRkPkphciBmaWxlIGNvbnRhaW5pbmcgYWxsIHNhbXBsZSBjbGFzcyBmaWxlczwvdGQ+PC90cj4KKwk8dHI+PHRkPmRhdGEvPC90ZD48dGQ+RGlyZWN0b3J5IGNvbnRhaW5pbmcgc2FtcGxlIFhNTCBkYXRhIGZpbGVzPC90ZD48L3RyPgorCTx0cj48dGQ+ZG9jL2h0bWwvPC90ZD48dGQ+RGlyZWN0b3J5IGNvbnRhaW5pbmcgZG9jdW1lbnRhdGlvbjwvdGQ+PC90cj4KKwk8dHI+PHRkPmRvYy9odG1sL2FwaS88L3RkPjx0ZD5EaXJlY3RvcnkgY29udGFpbmluZyBKYXZhZG9jIEFQSTwvdGQ+PC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgICA8bm90ZT5UbyB1c2UgJnBhY2thZ2VuYW1lOyB5b3UgZG8gbm90IG5lZWQgdGhlIHNvdXJjZSBmaWxlcy48L25vdGU+CisgICAgPC9zZWN0aW9uPgorLS0+CisgICAgPHNlY3Rpb24+IAorICAgICAgPHRpdGxlPlRlc3RpbmcgdGhlIGRpc3RpYnV0aW9uPC90aXRsZT4KKyAgICAgIDxwPgorCVRoZSBmaXJzdCB3YXkgdG8gZW5zdXJlIHRoYXQgZXZlcnl0aGluZyBpcyBpbiBwbGFjZSBpcyB0byBydW4gdGhlIHVuaXQKKwl0ZXN0cy4gVGhpcyBpcyBzaW1wbHkgZG9uZSBieSB0eXBpbmcgPGNvZGU+YW50IHRlc3Q8L2NvZGU+LiBUaGlzIHN0YXJ0cworCXRoZSBpbmNsdWRlZCBKVW5pdCB0ZXN0IGNhc2VzLiBBY3R1YWxseSwgd2UgZG8gbm90IGhhdmUgY29tcGxldGUgdGVzdAorCWNvdmVyYWdlLCBidXQgYXMgYSBmaXJzdCBzdGFydCwgaXQgd29ya3MuCisgICAgICA8L3A+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24+IAorICAgICAgPHRpdGxlPlBsYXlpbmcgYXJvdW5kIHdpdGggdGhlIGV4YW1wbGVzIDwvdGl0bGU+CisgICAgICA8cD4KKwlUbyBzZWUgaG93IHRoZSBkaXN0cmlidXRpb24gd29ya3MsIHNpbXBseSBydW4gPGNvZGU+YW50CisJICBtZWdhLXNhbXBsZTwvY29kZT4gdG8gbGV0IGFudCBleGVjdXRlIHNldmVyYWwgZXhhbXBsZXMgZnJvbSB0aGUKKwk8Y29kZT5zcmNfc2FtcGxlcy88L2NvZGU+IGRpcmVjdG9yeS4gCisgICAgICA8L3A+CisgICAgPC9zZWN0aW9uPgorICAgIDxzZWN0aW9uPiAKKyAgICAgIDx0aXRsZT5GaWxlcyBpbiB0aGUgc291cmNlIHBhY2thZ2UgcmVsZWFzZTwvdGl0bGU+CisgICAgICA8dGFibGU+CisJPHRyPgorCSAgPHRkPmJ1aWxkLnhtbDwvdGQ+CisJICA8dGQ+VG9wIGxldmVsIDxqdW1wIGhyZWY9ImV4dDphbnQiPkFudDwvanVtcD4gTWFrZWZpbGUgLS0gcmVhZCBSRUFETUUKKwkgICAgZmlsZSBiZWZvcmUgYnVpbGRpbmc8L3RkPgorCTwvdHI+CisJPHRyPgorCSAgPHRkPkxJQ0VOU0UudHh0PC90ZD4KKwkgIDx0ZD5MaWNlbnNlIGZvciB0aGUgc29mdHdhcmU8L3RkPgorCTwvdHI+CisJPHRyPgorCSAgPHRkPlJFQURNRTwvdGQ+CisJICA8dGQ+QnVpbGQgaW5zdHJ1Y3Rpb25zPC90ZD4KKwk8L3RyPgorCTx0cj4KKwkgIDx0ZD5SZWFkbWUuaHRtbDwvdGQ+CisJICA8dGQ+V2ViIHBhZ2UgcmVkaXJlY3QgcmVxdWlyZWQgZm9yIGJ1aWxkaW5nIGRvY3VtZW50YXRpb248L3RkPgorCTwvdHI+CisJPHRyPgorCSAgPHRkPlNUQVRVUzwvdGQ+CisJICA8dGQ+Q3VycmVudCBzb3VyY2UgY29kZSBzdGF0dXMgaW5mb3JtYXRpb248L3RkPgorCTwvdHI+CisJPHRyPgorCSAgPHRkPmRhdGEvPC90ZD4KKwkgIDx0ZD5EaXJlY3RvcnkgY29udGFpbmluZyBzYW1wbGUgZGF0YSBmaWxlcyBhbmQgdGVzdCB2ZWN0b3JzIGZvciB0aGUgdW5pdCB0ZXN0czwvdGQ+CisJPC90cj4KKwk8dHI+CisJICA8dGQ+ZG9jL3htbC88L3RkPgorCSAgPHRkPkRpcmVjdG9yeSBjb250YWluaW5nIGRvY3VtZW50YXRpb24sIGluIFhNTCBmb3JtPC90ZD4KKwk8L3RyPgorCTx0cj4KKwkgIDx0ZD5zcmMvPC90ZD4KKwkgIDx0ZD5EaXJlY3RvcnkgY29udGFpbmluZyBzb3VyY2UgY29kZSBmb3IgdGhlIGNvcmUgbGlicmFyeTwvdGQ+CisJPC90cj4KKwk8dHI+CisJICA8dGQ+c3JjX3NhbXBsZXMvPC90ZD4KKwkgIDx0ZD5EaXJlY3RvcnkgY29udGFpbmluZyBzb3VyY2UgY29kZSBmb3Igc2FtcGxlczwvdGQ+CisJPC90cj4KKwk8dHI+CisJICA8dGQ+c3JjX3VuaXRUZXN0cy88L3RkPgorCSAgPHRkPkRpcmVjdG9yeSBjb250YWluaW5nIHNvdXJjZSBjb2RlIGZvciB1bml0IHRlc3RzPC90ZD4KKwk8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3NlY3Rpb24+CisgIDwvYm9keT4KKzwvZG9jdW1lbnQ+CisKKworCisKZGlmZiAtLWdpdCBhL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbnRlbnQveGRvY3MvSmF2YS9pbnRlcm9wLnhtbCBiL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbnRlbnQveGRvY3MvSmF2YS9pbnRlcm9wLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGEzZGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9KYXZhL2ludGVyb3AueG1sCkBAIC0wLDAgKzEsMTA4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIGRvY3VtZW50IFBVQkxJQyAiLS8vQVBBQ0hFLy9EVEQgRG9jdW1lbnRhdGlvbiBWMS4xLy9FTiIgImRvY3VtZW50LXYxMS5kdGQiCitbCisgIDwhRU5USVRZICUgeG1sc2VjX2VudGl0aWVzIFNZU1RFTSAiLi4veG1sc2VjX2VudGl0aWVzLmVudCI+IAorICAleG1sc2VjX2VudGl0aWVzOyAKK10+Cis8IS0tCitDb3B5cmlnaHQgMjAwMy0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+Cis8ZG9jdW1lbnQ+IAorICA8aGVhZGVyPiAKKyAgICA8dGl0bGU+SmF2YSBJbnRlcm9wZXJhYmlsaXR5PC90aXRsZT4gCisgIDwvaGVhZGVyPiAKKyAgPGJvZHk+IAorICAgIDxzZWN0aW9uPiAKKyAgICAgIDx0aXRsZT5Qcm9ibGVtczwvdGl0bGU+CisgICAgICA8cD5JbiBWZXJzaW9uIHYxLjAuNCwgdGhlcmUgaXMgb25lIHRlc3QgY2FzZSB3aGljaCBmYWlscyAoaW50ZXJvcCB0ZXN0CisJZm9yIGV4Y2x1c2l2ZSBjMTRuKS4gVGhpcyBpcyByZWxhdGVkIHRvIHZlcnkgZXNvdGVyaWMgbm9kZSBzZXRzIChUaGUgWTQKKwl0ZXN0IHZlY3RvciBmcm9tIAorCTxqdW1wCisJICBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9TaWduYXR1cmUvMjAwMi8wMi8wMS1leGMtYzE0bi1pbnRlcm9wLmh0bWwiPgorCSAgdGhlIGludGVyb3AgbWF0cml4CisJPC9qdW1wPikuIAorICAgICAgPC9wPgorICAgIDwvc2VjdGlvbj4KKyAgICA8c2VjdGlvbj4gCisgICAgICA8dGl0bGU+SW50ZXJvcGVyYWJpbGl0eSBpc3N1ZXM8L3RpdGxlPgorICAgICAgPHA+CisJQXMgaXQgY2FuIGJlIHNlZW4gb24gdGhlIAorCTxqdW1wIGhyZWY9ImV4dDp3M2MveG1sZHNpZyI+d29ya2luZyBncm91cCBob21lcGFnZTwvanVtcD4sCisJdGhlcmUgYXJlIHNvbWUgaW50ZXJvcGVyYWJpbGl0eSByZXBvcnRzLCBuYW1lbHkgZm9yIAorCTxqdW1wIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1NpZ25hdHVyZS8yMDAwLzEwLzEwLWMxNG4taW50ZXJvcC5odG1sIj4KKwkgIENhbm9uaWNhbCBYTUwKKwk8L2p1bXA+LCAKKwk8anVtcAorCSAgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvU2lnbmF0dXJlLzIwMDIvMDIvMDEtZXhjLWMxNG4taW50ZXJvcC5odG1sIj4KKwkgIEV4Y2x1c2l2ZSBDYW5vbmljYWwgWE1MCisJPC9qdW1wPiAKKwlhbmQgCisJPGp1bXAKKwkgIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbGRzaWctY29yZS8yMDAxLzA0LzA1LXhtbGRzaWctaW50ZXJvcC5odG1sIj4KKwkgIFhNTCBTaWduYXR1cmUKKwk8L2p1bXA+LgorICAgICAgPC9wPgorICAgICAgPHA+CisJSW50ZXJvcGVyYWJpbGl0eSBkZXBlbmRzIGhlYXZpbHkgb24gdGVzdCB2ZWN0b3JzLCB0aGlzIG1lYW5zIHRoYXQKKwlpbXBsZW1lbnRhdGlvbiBBIGhhcyB0byBjaGVjayB3aGV0aGVyIHRoZSBzaWduYXR1cmVzIGZyb20KKwlpbXBsZW1lbnRhdGlvbiBCIGNhbiBiZSB2ZXJpZmllZC4gRm9yIHRoaXMgcHVycG9zZSwgd2UgaGF2ZSBhCisJY29sbGVjdGlvbiBvZiBkaWZmZXJlbnQgdGVzdCB2ZWN0b3JzIGluIG91ciA8Y29kZT5kYXRhLzwvY29kZT4KKwlkaXJlY3RvcnkuIFRoZSBkaXJlY3RvcnkgaW5jbHVkZXMgdGVzdCB2ZWN0b3JzIGZyb20gICAKKyAgICAgIDwvcD4KKyAgICAgIDx1bD4KKwk8bGk+PGp1bXAgaHJlZj0iaHR0cDovL3d3dy5iYWx0aW1vcmUuY29tL2tleXRvb2xzL3htbC9pbmRleC5odG1sIj4KKwkgICAgQmFsdGltb3JlIEtleVRvb2xzIFhNTDwvanVtcD4KKwk8L2xpPgorCTxsaT48anVtcCBocmVmPSJodHRwOi8vamNld3d3LmlhaWsuYXQvcHJvZHVjdHMvaXhzaWwvaW5kZXgucGhwIj5JQUlLIElYU0lMPC9qdW1wPjwvbGk+CisJPGxpPjxqdW1wCisJICAgIGhyZWY9Imh0dHA6Ly93d3cucnNhc2VjdXJpdHkuY29tL3Byb2R1Y3RzL2JzYWZlL2NlcnRqLmh0bWwiPgorCSAgICBSU0EgU2VjdXJpdHkgQ2VydC1KPC9qdW1wPgorCTwvbGk+CisJPGxpPlRoZSB2ZWN0b3JzIGZyb20gdGhlIAorCSAgPGp1bXAKKwkgICAgaHJlZj0iaHR0cDovL3d3dy5hbHBoYXdvcmtzLmlibS5jb20vdGVjaC94bWxzZWN1cml0eXN1aXRlIj4KKwkgICAgSUJNIGFscGhhV29ya3MgWE1MIFNlY3VyaXR5IHN1aXRlCisJICA8L2p1bXA+IGNvdWxkIG5vdCBiZWVuIGluY2x1ZGVkIGluIHRoaXMgZGlzdHJpYnV0aW9uIGJlY2F1c2Ugb2YKKwkgIGxpY2Vuc2luZyBpc3N1ZXMuIEZvciBzb21lIHJlYXNvbnMgd2hpY2ggSSBkbyBub3QgdW5kZXJzdGFuZCwgdGhleQorCSAgY29weXJpZ2h0ZWQgdGhlaXIgdGVzdCBzaWduYXR1cmVzIHdoaWNoIHRoZXkgaGF2ZSBidW5kbGVkIHdpdGgKKwkgIHhzczRqLiBJZiB5b3Ugd2FudCB0byBpbmNsdWRlIGludGVyb3AgdGVzdGluZyBhZ2FpbnN0IElCTSBpbiB5b3VyCisJICB1bml0IHRlc3RzLCBzaW1wbHkgZG8gdGhlIGZvbGxvd2luZzoKKwkgIERvd25sb2FkIDxjb2RlPnhzczRqLTIwMDMwMTI3LnppcDwvY29kZT4gZnJvbSB0aGUgCisJICA8anVtcAorCSAgICBocmVmPSJodHRwOi8vd3d3LmFscGhhd29ya3MuaWJtLmNvbS9hdy5uc2YvZG93bmxvYWQveG1sc2VjdXJpdHlzdWl0ZSI+CisJICAgIGFscGhhV29ya3MgZG93bmxvYWQgcGFnZQorCSAgPC9qdW1wPi4gCisJICBDb3B5IGFsbCBmaWxlcyBmcm9tIHRoZSA8Y29kZT54c3M0ai0yMDAzMDEyNy56aXAjL3hzczRqL2RhdGE8L2NvZGU+CisJICBkaXJlY3RvcnkgaW50byB0aGUKKwkgIDxjb2RlPnhtbC1zZWN1cml0eS9kYXRhL2NvbS9pYm0veHNzNGotMjAwMzAxMjcvPC9jb2RlPgorCSAgZGlyZWN0b3J5LiBJZiB0aGUgCisJICA8anVtcCBocmVmPSJhcGkvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9JbnRlcm9wVGVzdC5odG1sIj4KKwkgICAgSW50ZXJvcAorCSAgPC9qdW1wPiBjbGFzcyBmaW5kcyB0aGVzZSBmaWxlcywgdGhlIAorCSAgPGNvZGU+b3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5pbnRlcm9wLklCTVRlc3Q8L2NvZGU+IGNsYXNzIGlzCisJICBhbHNvIGV4ZWN1dGVkIGR1cmluZyB1bml0IGludGVyb3AgdGVzdHMuIAorCTwvbGk+CisgICAgICA8L3VsPgorICAgIDwvc2VjdGlvbj4KKyAgPC9ib2R5PgorPC9kb2N1bWVudD4KKworCisKKworCisKKworCmRpZmYgLS1naXQgYS9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL0phdmEvcmVzb2x2ZXIueG1sIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9KYXZhL3Jlc29sdmVyLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTdhNjdjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9KYXZhL3Jlc29sdmVyLnhtbApAQCAtMCwwICsxLDE4NCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBkb2N1bWVudCBQVUJMSUMgIi0vL0FQQUNIRS8vRFREIERvY3VtZW50YXRpb24gVjEuMS8vRU4iICJkb2N1bWVudC12MTEuZHRkIgorWworICA8IUVOVElUWSAlIHhtbHNlY19lbnRpdGllcyBTWVNURU0gIi4uL3htbHNlY19lbnRpdGllcy5lbnQiPiAKKyAgJXhtbHNlY19lbnRpdGllczsgCitdPgorPCEtLQorQ29weXJpZ2h0IDIwMDMtMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKworTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCis8ZG9jdW1lbnQ+IAorICA8aGVhZGVyPiAKKyAgICA8dGl0bGU+UmVzb2x2ZXItTWFuaWE8L3RpdGxlPiAKKyAgPC9oZWFkZXI+IAorICA8Ym9keT4gCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+V2h5IGRvIHdlIG5lZWQgYWxsIHRoZXNlIHJlc29sdmVycz88L3RpdGxlPgorICAgICAgPHA+CisJRm9yIHNlY3VyaXR5IGFuZCBjb21mb3J0IHJlYXNvbnMuIEluIHRoZSBYTUwgU2VjdXJpdHkgcGFja2FnZSwgdGhlcmUKKwlleGlzdCBtYW55IGtpbmRzIG9mIFJlc29sdmVycyBmb3IgZGlmZmVyZW50IHB1cnBvc2VzLiBSZXNvbHZlcnMgaW4gdGhpcworCXBhY2thZ2UgZG8gdGhlIHNhbWUgam9iIGFzIGFuIEVudGl0eVJlc29sdmVyIGluIHRoZSBTQVggcGFja2FnZToKKwlyZXRyaWV2ZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBhcHJvcHJpYXRlIGxvY2F0aW9uIGFuZCBnaXZlIGl0IHRvIHRoZQorCXBhcnNlci9zb2Z0d2FyZSB3aG8gbmVlZHMgaXQuIFRoZSByZWFzb24gZm9yIG9mZmVyaW5nIHRoZXNlIGRpZmZlcmVudAorCVJlc29sdmVycyBpcyB0aGF0IGl0IHNob3VsZCBiZSB1bmRlciBjb21wbGV0ZSBjb250cm9sIG9mIHRoZQorCWFwcGxpY2F0aW9uIHdoaWNoIGNvbm5lY3Rpb25zIHRvIHRoZSBuZXR3b3JrIGFyZSBtYWRlLiBJbiB0aGUgc2VjdXJpdHkKKwlhcmVhLCBpdCB3b3VsZG4ndCBiZSBhIGdvb2QgaWRlYSB0byBpbWVkaWF0ZWx5IGZldGNoIHNvbWUgZG9jdW1lbnRzCisJZnJvbSB0aGUgd2ViIG9yIG1ha2Ugb3RoZXIgY29ubmVjdGlvbnMgb25seSBiZWNhdXNlIHlvdSB3YW50IHRvIHZlcmlmeQorCWEgU2lnbmF0dXJlLiBUaGlzIHJlc29sdmVyIGZyYW1ld29yayBnaXZlcyB0aGUgYXBwbGljYXRpb24gZGV2ZWxvcGVyCisJdGhlIGFiaWxpdHkgdG8gaGF2ZSB0b3RhbCBjb250cm9sIGFib3V0IHRoZSBpbnRlcmZhY2UgZnJvbSB0aGUgbGlicmFyeQorCXRvIHRoZSByZXN0IG9mIHRoZSB3b3JsZC4gCisgICAgICA8L3A+CisgICAgPC9zZWN0aW9uPgorICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlR5cGVzIG9mIHJlc29sdmVyczwvdGl0bGU+CisgICAgICA8c2VjdGlvbj4KKwk8dGl0bGU+UmVzb3VyY2VSZXNvbHZlcnM8L3RpdGxlPgorCTxwPgorCSAgQSAKKwkgIDxqdW1wIGhyZWY9IiZhcGlfcmVmO3V0aWxzL3Jlc29sdmVyL1Jlc291cmNlUmVzb2x2ZXIuaHRtbCI+CisJICAgIFJlc291cmNlUmVzb2x2ZXIKKwkgIDwvanVtcD4gaXMgdXNlZCBieSBhIAorCSAgPGp1bXAgaHJlZj0iJmFwaV9yZWY7c2lnbmF0dXJlL1JlZmVyZW5jZS5odG1sIj4KKwkgICAgUmVmZXJlbmNlCisJICA8L2p1bXA+IHRvIHJldHJpZXZlIHRoZSBzaWduZWQgcmVzb3VyY2UgZnJvbSBpdCdzIGxvY2F0aW9uLiBEaWZmZXJlbnQKKwkgIHJlc29sdmVycyBleGlzdCB0byBnZXQgc2lnbmVkIHBvcnRpb25zIGZyb20gdGhlIFhNTCBkb2N1bWVudCBpbiB3aGljaAorCSAgdGhlIHNpZ25hdHVyZSByZXNpZGVzLCB0byBtYWtlIEhUVFAgY29ubmVjdGlvbnMgb3IgdG8gZmV0Y2ggZmlsZXMKKwkgIGZyb20gdGhlIGxvY2FsIGZpbGUgc3lzdGVtLiA8YnIgLz4gCisJICBUaGUgY29uY2VwdCBvZiBhIAorCSAgPGp1bXAgaHJlZj0iJmFwaV9yZWY7dXRpbHMvcmVzb2x2ZXIvUmVzb3VyY2VSZXNvbHZlci5odG1sIj4KKwkgICAgUmVzb3VyY2VSZXNvbHZlcgorCSAgPC9qdW1wPiBpcyB2ZXJ5IHNpbWlsYXIgdG8gYW4gb3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXIsIGJ1dCBpbgorCSAgY29udHJhc3QgdG8gdGhhdCBJbnRlcmZhY2UsIHRoZSBSZXNvdXJjZVJlc29sdmVyIGlzIGFibGUgdG8KKwkgIGRlLXJlZmVyZW5jZSBjb250ZW50cyA8ZW0+aW5zaWRlPC9lbT4gYW4gWE1MIGRvY3VtZW50LiAgCisJPC9wPiAKKyAgICAgIDwvc2VjdGlvbj4KKyAgICAgIDxzZWN0aW9uPgorCTx0aXRsZT5TdG9yYWdlUmVzb2x2ZXI8L3RpdGxlPgorCTxwPkEgCisJICA8anVtcCBocmVmPSImYXBpX3JlZjtrZXlzL3N0b3JhZ2UvU3RvcmFnZVJlc29sdmVyLmh0bWwiPgorCSAgICBTdG9yYWdlUmVzb2x2ZXIKKwkgIDwvanVtcD4gaXMgdXNlZCBieSAKKwkgIDxqdW1wIGhyZWY9IiZhcGlfcmVmO2tleXMvS2V5SW5mby5odG1sIj4KKwkgICAgS2V5SW5mbworCSAgPC9qdW1wPiBhbmQgaXQncyBjaGlsZCBvYmplY3RzIC8gRWxlbWVudHMgdG8gcmV0cmlldmUgQ2VydGlmaWNhdGVzCisJICBmcm9tIHN0b3JhZ2UgbG9jYXRpb25zLiBUaGlzIGFwcHJvYWNoIGlzIHVzZWQgdG8gYWxsb3cgYSB1c2VyIHRvCisJICBjdXN0b21pemUgdGhlIGxpYnJhcnkgZm9yIHVzZSBpbiBhIHNwZWNpZmljIGNvcnBvcmF0ZQorCSAgZW52aXJvbm1lbnQuIEl0J3MgcG9zc2libGUgdG8gd3JpdGUgCisJICA8anVtcCBocmVmPSImYXBpX3JlZjtrZXlzL3N0b3JhZ2UvU3RvcmFnZVJlc29sdmVyLmh0bWwiPgorCSAgICBTdG9yYWdlUmVzb2x2ZXIKKwkgIDwvanVtcD5zIHdobyBtYWtlIHJlcXVlc3RzIHRvIExEQVAgc2VydmVycyBvciB0byB1c2Ugc3BlY2lmaWNpYyBQS0kKKwkgIGludGVyZmFjZXMuIDxici8+CisJICBCdW5kbGVkIHdpdGggdGhlIHNvZnR3YXJlIGNvbWUgdGhyZWUgc2FtcGxlIAorCSAgPGp1bXAgaHJlZj0iJmFwaV9yZWY7a2V5cy9zdG9yYWdlL1N0b3JhZ2VSZXNvbHZlci5odG1sIj4KKwkgICAgU3RvcmFnZVJlc29sdmVyCisJICA8L2p1bXA+cyB3aGljaCBjYW4gYmUgdXNlZCBmb3IgY29tbW9uIHRhc2tzOgorCTwvcD4KKwk8dWw+CisJICA8bGk+CisJICAgIFRoZSAKKwkgICAgPGp1bXAKKwkgICAgICBocmVmPSImYXBpX3JlZjtrZXlzL3N0b3JhZ2UvaW1wbGVtZW50YXRpb25zL0tleVN0b3JlUmVzb2x2ZXIuaHRtbCI+CisJICAgICAgS2V5U3RvcmVSZXNvbHZlcgorCSAgICA8L2p1bXA+IGlzIGFibGUgdG8gcmV0cmlldmUgQ2VydGlmaWNhdGVzIGZyb20gYSBKQVZBIEtleVN0b3JlCisJICAgIG9iamVjdC4gVGhpcyAKKwkgICAgPGp1bXAKKwkgICAgICBocmVmPSImYXBpX3JlZjtrZXlzL3N0b3JhZ2UvaW1wbGVtZW50YXRpb25zL0tleVN0b3JlUmVzb2x2ZXIuaHRtbCI+CisJICAgICAgS2V5U3RvcmVSZXNvbHZlcgorCSAgICA8L2p1bXA+IGlzIGNvbnN0cnVjdGVkIGZyb20gYW4gb3BlbiBKQVZBIEtleVN0b3JlLgorCSAgPC9saT4KKwkgIDxsaT4KKwkgICAgVGhlIAorCSAgICA8anVtcAorCSAgICAgIGhyZWY9IiZhcGlfcmVmO2tleXMvc3RvcmFnZS9pbXBsZW1lbnRhdGlvbnMvU2luZ2xlQ2VydGlmaWNhdGVSZXNvbHZlci5odG1sIj4KKwkgICAgICBTaW5nbGVDZXJ0aWZpY2F0ZVJlc29sdmVyCisJICAgIDwvanVtcD4gcmVzb2x2ZXMgb25seSB0byBhIHNpbmdsZSBDZXJ0aWZpY2F0ZS4gVGhlIAorCSAgICA8anVtcAorCSAgICAgIGhyZWY9IiZhcGlfcmVmO2tleXMvc3RvcmFnZS9pbXBsZW1lbnRhdGlvbnMvU2luZ2xlQ2VydGlmaWNhdGVSZXNvbHZlci5odG1sIj4KKwkgICAgICBTaW5nbGVDZXJ0aWZpY2F0ZVJlc29sdmVyCisJICAgIDwvanVtcD4gaXMgY29uc3RydWN0ZWQgdXNpbmcgdGhpcyBzaW5nbGUgQ2VydGlmaWNhdGUuIAorCSAgPC9saT4KKwkgIDxsaT4KKwkgICAgVGhlIAorCSAgICA8anVtcAorCSAgICAgIGhyZWY9IiZhcGlfcmVmO2tleXMvc3RvcmFnZS9pbXBsZW1lbnRhdGlvbnMvQ2VydHNJbkZpbGVzeXN0ZW1EaXJlY3RvcnlSZXNvbHZlci5odG1sIj4KKwkgICAgICBDZXJ0c0luRmlsZXN5c3RlbURpcmVjdG9yeVJlc29sdmVyCisJICAgIDwvanVtcD4gaXMgdXNlZnVsIGZvciByZXNvbHZpbmcgdG8gcmF3IFguNTA5IGNlcnRpZmljYXRlcyB3aGljaAorCSAgICByZXNpZGUgYXMgc2VwYXJhdGUgZmlsZXMgaW4gYSBkaXJlY3RvcnkgaW4gdGhlIGZpbGVzeXN0ZW0uIFN1Y2ggYQorCSAgICByZXNvbHZlciBpcyBuZWVkZWQgZm9yIHZlcmlmeWluZyB0aGUgdGVzdCBzaWduYXR1cmVzIGZyb20gTWVybGluCisJICAgIEh1Z2VzIHdoaWNoIGFyZSBidW5kbGVkIGluIGEgZGlyZWN0b3J5LgorCSAgPC9saT4gCisJPC91bD4KKwk8cD4KKwkgIDxqdW1wIGhyZWY9IiZhcGlfcmVmO2tleXMvc3RvcmFnZS9TdG9yYWdlUmVzb2x2ZXIuaHRtbCI+CisJICAgIFN0b3JhZ2VSZXNvbHZlcgorCSAgPC9qdW1wPnMgYXJlIHN1cHBsaWVkIHRvIHRoZSBLZXlJbmZvJ3MgPGNvZGU+YWRkU3RvcmFnZVJlc29sdmVyKCk8L2NvZGU+IG1ldGhvZC4KKwk8L3A+CisJPHA+CisJICBHZW5lcmFsbHksIGEgCisJICA8anVtcCBocmVmPSImYXBpX3JlZjtrZXlzL3N0b3JhZ2UvU3RvcmFnZVJlc29sdmVyLmh0bWwiPgorCSAgICBTdG9yYWdlUmVzb2x2ZXIKKwkgIDwvanVtcD4gaGFzIG9ubHkgYSBtZXRob2QgdG8gcmV0dXJuIGFuIEl0ZXJhdG9yIHdoaWNoIGl0ZXJhdGVzCisJICB0aHJvdWdoIHRoZSBhdmFpbGFibGUgQ2VydGlmaWNhdGVzLgorCTwvcD4KKyAgICAgIDwvc2VjdGlvbj4KKyAgICAgIDxzZWN0aW9uPgorCTx0aXRsZT5LZXlSZXNvbHZlcjwvdGl0bGU+CisJPHA+CisJICBBIAorCSAgPGp1bXAgaHJlZj0iJmFwaV9yZWY7a2V5cy9rZXlyZXNvbHZlci9LZXlSZXNvbHZlci5odG1sIj4KKwkgICAgS2V5UmVzb2x2ZXIKKwkgIDwvanVtcD4gaXMgdXNlZCBieSAKKwkgIDxqdW1wIGhyZWY9IiZhcGlfcmVmO2tleXMvS2V5SW5mby5odG1sIj4KKwkgICAgS2V5SW5mbworCSAgPC9qdW1wPiB0byBwcm9jZXNzIGl0J3MgY2hpbGQgRWxlbWVudHMuIFRoZXJlIGV4aXN0IHR3byBnZW5lcmFsCisJICBjbGFzc2VzIG9mIGEgCisJICA8anVtcCBocmVmPSImYXBpX3JlZjtrZXlzL2tleXJlc29sdmVyL0tleVJlc29sdmVyLmh0bWwiPgorCSAgICBLZXlSZXNvbHZlcgorCSAgPC9qdW1wPjoKKwk8L3A+CisJPHVsPgorCSAgPGxpPgorCSAgICBJZiBhIGRzOlJTQUtleVZhbHVlIG9yIGRzOkRTQUtleVZhbHVlIG9yIGRzOlg1MDlDZXJ0aWZpY2F0ZSBpcyB1c2VkCisJICAgIGluc2lkZSB0aGUgZHM6S2V5SW5mbywgdGhlIHJlc29sdmVycyBjYW4gcmV0dXJuIGEgcHVibGljIGtleSBvcgorCSAgICBDZXJ0aWZpY2F0ZSBkaXJlY3RseSB3aXRob3V0IGZ1cnRoZXIgYWN0aW9uLCBiZWNhdXNlIHRoZSBrZXkgaXRzZWxmCisJICAgIGlzIGNvbnRhaW5lZCBpbnNpZGUgdGhlIGRzOlNpZ25hdHVyZS4KKwkgIDwvbGk+CisJICA8bGk+CisJICAgIElmIHRoZXJlIGlzIG9ubHkga2V5IG1hdGVyaWFsIGlkZW50aWZpY2F0aW9uIGluZm9ybWF0aW9uIGxpa2UgYQorCSAgICBkczpLZXlOYW1lIG9yIHRoZSBzZXJpYWwgbnVtYmVyIG9mIHRoZSBDZXJ0aWZpY2F0ZSwgdGhlIEtleVJlc29sdmVyCisJICAgIG11c3QgdXNlIHRoZSBTdG9yYWdlUmVzb2x2ZXJzIHRvIHF1ZXJ5IHRoZSBhdmFpbGFibGUga2V5cyBhbmQKKwkgICAgY2VydGlmaWNhdGVzIHRvIGZpbmQgdGhlIGNvcnJlY3Qgb25lLgorCSAgPC9saT4KKwk8L3VsPgorCTxwPgorCSAgT2YgY291cnNlLCB0aGVyZSBhcmUgY3Jvc3MtZGVwZW5kZW5jaWVzOiBlLmcuIGEgS2V5UmVzb2x2ZXIgbmFtZWQgCisJICA8anVtcAorCSAgICBocmVmPSImYXBpX3JlZjtrZXlzL2tleXJlc29sdmVyL2ltcGxlbWVudGF0aW9ucy9SZXRyaWV2YWxNZXRob2RSZXNvbHZlci5odG1sIj4KKwkgICAgUmV0cmlldmFsTWV0aG9kUmVzb2x2ZXIKKwkgIDwvanVtcD4gdXNlcyB0aGUgCisJICA8anVtcCBocmVmPSImYXBpX3JlZjt1dGlscy9yZXNvbHZlci9SZXNvdXJjZVJlc29sdmVyLmh0bWwiPgorCSAgICBSZXNvdXJjZVJlc29sdmVyCisJICA8L2p1bXA+IGZyYW1ld29yayB0byByZXRyaWV2ZSBhIHB1YmxpYyBrZXkgb3IgY2VydGlmaWNhdGUgZnJvbSBhbgorCSAgYXJiaXRyYXJ5IGxvY2F0aW9uLgorCTwvcD4KKyAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisgIDwvYm9keT4KKzwvZG9jdW1lbnQ+CisKKworCisKZGlmZiAtLWdpdCBhL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbnRlbnQveGRvY3MvYm9vay1zYW1wbGUueG1sIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9ib29rLXNhbXBsZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZhMTZhMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbnRlbnQveGRvY3MvYm9vay1zYW1wbGUueG1sCkBAIC0wLDAgKzEsNTAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgYm9vayBQVUJMSUMgIi0vL0FQQUNIRS8vRFREIENvY29vbiBEb2N1bWVudGF0aW9uIEJvb2sgVjEuMC8vRU4iICJib29rLWNvY29vbi12MTAuZHRkIj4KKworPCEtLQorQ29weXJpZ2h0IDIwMDMtMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKworTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCis8IS0tCitTYW1wbGUgRm9ycmVzdCBib29rLnhtbCBmaWxlLiAgSWYgcmVuYW1lZCB0byBib29rLnhtbCwgdGhpcyBmaWxlIHdpbGwgZGV0ZXJtaW5lCit0aGUgbWVudSBmb3IgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnksIHJhdGhlciB0aGFuIGhhdmUgYSBtZW51IGJlIGF1dG8tZ2VuZXJhdGVkCitmcm9tIHNpdGUueG1sLAorCitOT1RFOgorICBJZiB5b3UgdXNlIHNpdGUueG1sIGluIGNvbmp1bmN0aW9uIHdpdGggYSBjdXN0b20gYm9vay54bWwgZmlsZSwgeW91IGNhbiB1c2UKKyAgJ3NpdGU6JyBVUkxzIGluIGJvb2sueG1sLiAgRWcsIGluc3RlYWQgb2YgaHJlZj0ic2FtcGxlLmh0bWwiLCBvbmUgY291bGQgaGF2ZQorICBocmVmPSJzaXRlOnNhbXBsZSIuCistLT4KKyAKKzxib29rIHNvZnR3YXJlPSJNeVByb2oiCisgIHRpdGxlPSJNeVByb2oiCisgIGNvcHlyaWdodD0iQHllYXJAIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiIKKyAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorCisgIDxtZW51IGxhYmVsPSJBYm91dCI+CisgICAgPG1lbnUtaXRlbSBsYWJlbD0iSW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiLz4KKyAgICA8bWVudS1pdGVtIGxhYmVsPSJTYW1wbGUgcGFnZSIgaHJlZj0ic2FtcGxlLmh0bWwiLz4KKyAgICA8bWVudS1pdGVtIGxhYmVsPSJTYW1wbGUgaWh0bWwgcGFnZSIgaHJlZj0iaWh0bWwtc2FtcGxlLmh0bWwiLz4KKyAgICA8bWVudS1pdGVtIGxhYmVsPSJTYW1wbGUgZWh0bWwgcGFnZSIgaHJlZj0iZWh0bWwtc2FtcGxlLmh0bWwiLz4KKyAgICA8bWVudS1pdGVtIGxhYmVsPSJGQVEiIGhyZWY9ImZhcS5odG1sIi8+CisgICAgPG1lbnUtaXRlbSBsYWJlbD0iQ2hhbmdlcyIgaHJlZj0iY2hhbmdlcy5odG1sIi8+CisgICAgPG1lbnUtaXRlbSBsYWJlbD0iVG9kbyIgaHJlZj0idG9kby5odG1sIi8+CisgIDwvbWVudT4KKworICA8bWVudSBsYWJlbD0iU3ViZGlyIj4KKyAgICA8bWVudS1pdGVtIGxhYmVsPSJpbmRleCIgaHJlZj0ic3ViZGlyL2luZGV4Lmh0bWwiLz4KKyAgPC9tZW51PgorCis8L2Jvb2s+CmRpZmYgLS1naXQgYS9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL2MvY3JlZGl0cy54bWwgYi9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL2MvY3JlZGl0cy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTljOWZiMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbnRlbnQveGRvY3MvYy9jcmVkaXRzLnhtbApAQCAtMCwwICsxLDc0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzwhRE9DVFlQRSBkb2N1bWVudCBQVUJMSUMgIi0vL0FQQUNIRS8vRFREIERvY3VtZW50YXRpb24gVjEuMS8vRU4iICJkb2N1bWVudC12MTEuZHRkIj4KKzwhLS0KK0NvcHlyaWdodCAyMDAzLTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisKK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworPGRvY3VtZW50PgorICA8aGVhZGVyPgorICAgIDx0aXRsZT5DcmVkaXRzPC90aXRsZT4KKyAgPC9oZWFkZXI+CisgIDxib2R5PgorICAgIDxzZWN0aW9uPgorCSAgPHRpdGxlPlNvZnR3YXJlIFVzZWQ8L3RpdGxlPgorCSAgPHA+CisJCVRoZSBYTUwtU2VjdXJpdHktQyBwYWNrYWdlIG1ha2VzIGhlYXZ5IHVzZSBvZiB0aGUgWGFsYW4tQyBhbmQKKwkJWGVyY2VzLUMrKyBsaWJyYXJpZXMgZnJvbSB0aGUgPGp1bXAgaHJlZj0iaHR0cDovL3htbC5hcGFjaGUub3JnIj4KKwkJICBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiBYTUwgUHJvamVjdDwvanVtcD4uCisJICA8L3A+CisJICA8cD4KKwkJVGhpcyBwcm9kdWN0IGluY2x1ZGVzIGNyeXB0b2dyYXBoaWMgc29mdHdhcmUgd3JpdHRlbiBieSBFcmljIFlvdW5nCisJCShlYXlAY3J5cHRzb2Z0LmNvbSkuICBUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgd3JpdHRlbiBieSBUaW0KKwkJSHVkc29uICh0amhAY3J5cHRzb2Z0LmNvbSkuCisJICA8L3A+CisJICA8cD4KKwkJVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisJCWZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoPGp1bXAgaHJlZj0iaHR0cDovL3d3dy5vcGVuc3NsLm9yZyI+CisJCSAgd3d3Lm9wZW5zc2wub3JnPC9qdW1wPikKKwkgIDwvcD4KKwkgIDxwPgorCQlUaGUgbGljZW5zZSBkb2N1bWVudHMgZm9yIFhlcmNlcywgWGFsYW4gYW5kIE9wZW5TU0wgYXJlIGNvbnRhaW5lZCBpbgorCQl0aGUgeG1sLXNlY3VyaXR5L2MvZG9jIGRpcmVjdG9yeSBpbiBDVlMgYW5kIGluIHRoZSBkb2MgZGlyZWN0b3J5IGluCisJCWRpc3RyaWJ1dGlvbnMgb2YgdGhlIEMrKyBzb3VyY2UgY29kZS4KKwkgIDwvcD4KKwkgIDxwPgorCQlUaGlzIGRvY3VtZW50YXRpb24gaGFzIGJlZW4gY3JlYXRlZCB1c2luZyBGb3JyZXN0LCBhbHNvIHBhcnQgb2YKKwkJdGhlIEFwYWNoZSBTb2Z3YXJlIEZvdW5kYXRpb24ncyBYTUwgcHJvamVjdC4KKwkgIDwvcD4KKwkgIDxwPgorCQlBUEkgRG9jdW1lbnRhdGlvbiBpcyBjcmVhdGVkIHVzaW5nCisJCTxqdW1wIGhyZWY9Imh0dHA6Ly93d3cuc3RhY2submwvfmRpbWl0cmkvZG94eWdlbi8iPkRveHlnZW48L2p1bXA+IGFuZAorCQk8anVtcCBocmVmPSJodHRwOi8vd3d3LnJlc2VhcmNoLmF0dC5jb20vc3cvdG9vbHMvZ3JhcGh2aXovIj5HcmFwaFZpejwvanVtcD4KKwkgIDwvcD4KKwk8L3NlY3Rpb24+CisgIDwvYm9keT4KKzwvZG9jdW1lbnQ+Cis8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKK0xvY2FsIHZhcmlhYmxlczoKK21vZGU6IHhtbAorc2dtbC1vbWl0dGFnOm5pbAorc2dtbC1zaG9ydHRhZzpuaWwKK3NnbWwtbmFtZWNhc2UtZ2VuZXJhbDpuaWwKK3NnbWwtZ2VuZXJhbC1pbnNlcnQtY2FzZTpsb3dlcgorc2dtbC1taW5pbWl6ZS1hdHRyaWJ1dGVzOm5pbAorc2dtbC1hbHdheXMtcXVvdGUtYXR0cmlidXRlczp0CitzZ21sLWluZGVudC1zdGVwOjIKK3NnbWwtaW5kZW50LWRhdGE6dAorc2dtbC1wYXJlbnQtZG9jdW1lbnQ6bmlsCitzZ21sLWV4cG9zZWQtdGFnczpuaWwKK3NnbWwtbG9jYWwtY2F0YWxvZ3M6bmlsCitzZ21sLWxvY2FsLWVjYXQtZmlsZXM6bmlsCitFbmQ6CistLT4KZGlmZiAtLWdpdCBhL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbnRlbnQveGRvY3MvYy9mYXEueG1sIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9jL2ZhcS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNmYmNiMAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbnRlbnQveGRvY3MvYy9mYXEueG1sCkBAIC0wLDAgKzEsMjI4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIGZhcXMgUFVCTElDICItLy9BUEFDSEUvL0RURCBGQVEgVjEuMS8vRU4iICJkdGQvZmFxLXYxMS5kdGQiCitbCisgIDwhRU5USVRZICUgeG1sc2VjX2VudGl0aWVzIFNZU1RFTSAiLi4veG1sc2VjX2VudGl0aWVzLmVudCI+IAorICAleG1sc2VjX2VudGl0aWVzOyAKK10+Cis8IS0tCitDb3B5cmlnaHQgMjAwMy0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+Cis8ZmFxcyB0aXRsZT0iRnJlcXVlbnRseSBBc2tlZCBRdWVzdGlvbnMgLSBDKysiPgorICA8cGFydCBpZD0iZ2VuZXJhbF9jIj4KKyAgICA8dGl0bGU+Q29tcGlsaW5nIGFuZCBVc2luZyB0aGUgTGlicmFyeTwvdGl0bGU+CisgICAgPGZhcSBpZD0ib3BlbnNzbF9jIj4KKwkgIDxxdWVzdGlvbj4KKwkJSXMgT3BlblNTTCByZXF1aXJlZD8KKyAgICAgIDwvcXVlc3Rpb24+CisgICAgICA8YW5zd2VyPgorCQk8cD4KKwkJICBUaGUgbWFpbiBkZXZlbG9wbWVudCB3b3JrIGZvciB0aGUgbGlicmFyeSBpcyBkb25lIHVzaW5nIE9wZW5TU0wsIHNvCisJCSAgdGhpcyBpcyB0aGUgcmVjb21tZW5kZWQgb3B0aW9uLiAgSG93ZXZlciwgV2luZG93cworCQkgIENyeXB0byBBUEkgYW5kIE5TUyBpbnRlcmZhY2VzIGFyZSBhbHNvIG5vdyBwcm92aWRlZC4KKwkJPC9wPgorCQk8cD4KKwkJICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGltcGxlbWVudCBpbnRlcmZhY2VzIGZvciBvdGhlciBjcnlwdG9ncmFwaGljCisJCSAgbGlicmFyaWVzIGFuZCBwYXNzIHRoZW0gaW50byB0aGUgeG1sLXNlY3VyaXR5LWMgbGlicmFyeSBkdXJpbmcKKwkJICBpbml0aWFsaXNhdGlvbiAodmlhIHRoZSA8ZW0+WFNFQ1BsYXRmb3JtVXRpbHM6OkluaXRpYWxpc2UoKTwvZW0+CisJCSAgY2FsbCkuCisJCTwvcD4KKyAgICAgIDwvYW5zd2VyPgorICAgIDwvZmFxPgorCTxmYXEgaWQ9Im9wZW5zc2wyX2MiPgorCSAgPHF1ZXN0aW9uPgorCQlEb2VzIHRoZSBsaWJyYXJ5IHByb3ZpZGUgYSBmdWxsIEMrKyB3cmFwcGVyIGZvciBPcGVuU1NMPworCSAgPC9xdWVzdGlvbj4KKwkgIDxhbnN3ZXI+CisJCTxwPgorCQkgIFRoZSBDKysgY3J5cHRvIGludGVyZmFjZSBsYXllciBwcm92aWRlZCBmb3IgdGhlIGxpYnJhcnkgcHJvdmlkZXMgb25seQorCQkgIHRoZSBzbWFsbGVzdCBzdWJzZXQgb2YgY3J5cHRvZ3JhcGhpYyBmdW5jdGlvbnMgbmVjZXNzYXJ5IGZvciB0aGUKKwkJICBsaWJyYXJ5IHRvIG1ha2UgY2FsbHMgdG8gdGhlIHByb3ZpZGVkIGxpYnJhcnkuICBBcHBsaWNhdGlvbnMgd2lsbAorCQkgIG5lZWQgdG8gd29yayBkaXJlY3RseSB3aXRoIE9wZW5TU0wgKG9yIG90aGVyIGxpYnJhcmllcykgdG8gcmVhZCBhbmQKKwkJICBtYW5pcHVsYXRlIGVuY3J5cHRpb24ga2V5cyB0aGF0IHNob3VsZCB0aGVuIGJlIHdyYXBwZWQgaW4gWFNFQ0NyeXB0byoKKwkJICBvYmplY3RzIGFuZCBwYXNzZWQgaW50byB0aGUgbGlicmFyeS4KKwkJPC9wPgorCSAgPC9hbnN3ZXI+CisJPC9mYXE+CisJPGZhcSBpZD0id2luY2FwaV9jIj4KKwkgIDxxdWVzdGlvbj4KKwkJV2hhdCBpcyBXaW5DQVBJPworCSAgPC9xdWVzdGlvbj4KKwkgIDxhbnN3ZXI+CisJCTxwPgorCQkgIFdpbkNBUEkgaXMgdGhlIGRldmVsb3BtZW50YWwgaW50ZXJmYWNlIGJlaW5nIGJ1aWx0IHRvIGdpdmUKKwkJICB1c2VycyBvZiB0aGUgbGlicmFyeSBhY2Nlc3MgdG8gdGhlIFdpbmRvd3MgQ3J5cHRvZ3JhcGhpYyBsaWJyYXJ5LgorCQk8L3A+CisJCTxwPgorCQkgIEl0IGlzIDxlbT5ub3Q8L2VtPiBhIEMgQVBJIHdyYXBwZXIgZm9yIHRoZSBvdmVyYWxsIGxpYnJhcnkuCisJCTwvcD4KKwkgIDwvYW5zd2VyPgorCTwvZmFxPgorICAgIDxmYXEgaWQ9InhhbGFuX2MiPgorICAgICAgPHF1ZXN0aW9uPgorCQlJcyBYYWxhbiByZXF1aXJlZD8KKyAgICAgIDwvcXVlc3Rpb24+CisgICAgICA8YW5zd2VyPgorCQk8cD4KKwkJICBUaGUgbGlicmFyeSBjYW4gYmUgY29tcGlsZWQgd2l0aG91dCBsaW5raW5nIHRvIFhhbGFuLWMuICBIb3dldmVyCisJCSAgZG9pbmcgc28gd2lsbCBkaXNhYmxlIHN1cHBvcnQgZm9yIFhQYXRoIGFuZCBYU0xUIHRyYW5zZm9ybWF0aW9ucy4KKwkJPC9wPgorCQk8cD4KKwkJICBUbyBkaXNhYmxlIFhhbGFuLWMgc3VwcG9ydCBlaXRoZXIgdXNlIC0td2l0aG91dC14YWxhbiB3aGVuIHJ1bm5pbmcKKwkJICBjb25maWd1cmUgb24gVU5JWCwgb3IgdXNlIHRoZSBWQysrICJ3aXRob3V0IFhhbGFuIiBzZXR0aW5ncy4KKwkJPC9wPgorICAgICAgPC9hbnN3ZXI+CisgICAgPC9mYXE+CisJPGZhcSBpZD0ib2xkWGFsYW5DIj4KKwkgIDxxdWVzdGlvbj4KKwkJQXJlIHZlcnNpb25zIG9mIFhhbGFuIHByaW9yIHRvIDEuNiBzdXBwb3J0ZWQ/CisJICA8L3F1ZXN0aW9uPgorCSAgPGFuc3dlcj4KKwkJPHA+CisJCSAgTm8uICBXaGlsc3QgdGhlIGZ1bmN0aW9uYWxpdHkgcmVxdWlyZWQgaXMgYXZhaWxhYmxlIGluIHByaW9yCisJCSAgdmVyc2lvbnMsIHRoZSBsb2NhdGlvbiBvZiBpbmNsdWRlIGZpbGVzIGNoYW5nZWQgaW4gMS42LiAgQQorCQkgIGRlY2lzaW9uIHdhcyBtYWRlIGluIHZlcnNpb24gMS4wLjAgb2YgeG1sLXNlY3VyaXR5LWMgdG8KKwkJICB1cGRhdGUgdGhlIHNvdXJjZSB0byBzdXBwb3J0IHRoZXNlIG5ldyBsb2NhdGlvbnMuCisJCTwvcD4KKwkgIDwvYW5zd2VyPgorCTwvZmFxPgorCTxmYXEgaWQ9ImVsZW1lbnRvcmRlciI+CisJICA8cXVlc3Rpb24+CisJCUkgc2lnbiBhIGRvY3VtZW50IGFuZCB3aGVuIEkgdHJ5IHRvIHZlcmlmeSB1c2luZyB0aGUgc2FtZSBrZXksIGl0IGZhaWxzCisJICA8L3F1ZXN0aW9uPgorCSAgPGFuc3dlcj4KKwkJPHA+CisJCSAgQWZ0ZXIgeW91IGhhdmUgY3JlYXRlZCB0aGUgWE1MU2lnbmF0dXJlIG9iamVjdCwgYmVmb3JlIHlvdSBzaWduIHRoZQorCQkgIGRvY3VtZW50LCB5b3UgPGVtPm11c3Q8L2VtPiBlbWJlZCB0aGUgc2lnbmF0dXJlIGVsZW1lbnQgaW4gdGhlIG93bmluZworCQkgIGRvY3VtZW50ICh3aGljaCBpcyByZXR1cm5lZCBieSB0aGUgY2FsbCB0byAKKwkJICA8Y29kZT5EU0lHU2lnbmF0dXJlOjpjcmVhdGVCbGFua1NpZ25hdHVyZSguLi4pPC9jb2RlPikgYmVmb3JlCisJCSAgY2FsbGluZyB0aGUgPGNvZGU+RFNJR1NpZ25hdHVyZTo6c2lnbigpPC9jb2RlPiBtZXRob2QsCisJCTwvcD4KKwkJPHA+CisJCSAgRHVyaW5nIGNhbm9uaWNhbGlzYXRpb24gb2YgdGhlIFNpZ25lZEluZm8gZWxlbWVudCwgdGhlIGxpYnJhcnkgbG9va3MKKwkJICBhdCB0aGUgcGFyZW50IGFuZCBhbmNlc3RvciBub2RlcyBvZiB0aGUgU2lnbmF0dXJlIGVsZW1lbnQgdG8gZmluZAorCQkgIGFueSBuYW1lc3BhY2VzIHRoYXQgdGhlIFNpZ25lZEluZm8gbm9kZSBoYXMgaW5oZXJpdGVkLiAgQW55IHRoYXQgYXJlCisJCSAgZm91bmQgYXJlIGVtYmVkZGVkIGluIHRoZSBjYW5vbmljYWwgZm9ybSBvZiB0aGUgU2lnbmVkSW5mby4gIChUaGlzCisJCSAgaXMgbm90IHRydWUgd2hlbiBFeGNsdXNpdmUgQ2Fub25pY2FsaXNhdGlvbiBpcyB1c2VkLCBidXQgaXQgaXMgc3RpbGwKKwkJICBnb29kIHByYWN0aWNlIHRvIGluc2VydCB0aGUgZWxlbWVudCBub2RlIHByaW9yIHRvIHRoZSBzaWduKCkKKwkJICBtZXRob2QgYmVpbmcgY2FsbGVkKS4KKwkJPC9wPgorCQk8cD4KKwkJICBJZiB5b3UgaGF2ZSBub3QgZW1iZWRkZWQgdGhlIHNpZ25hdHVyZSBub2RlIGluIHRoZSBkb2N1bWVudCwgaXQgd2lsbAorCQkgIG5vdCBoYXZlIGFueSBwYXJlbnQgb3IgYW5jZXN0b3Igbm9kZXMsIHNvIGl0IHdpbGwgbm90IGluaGVyaXQgdGhlaXIKKwkJICBuYW1lc3BhY2VzLiAgSWYgeW91IHRoZW4gZW1iZWQgaXQgaW4gdGhlIGRvY3VtZW50IGFuZCBjYWxsIDxjb2RlPgorCQkJdmVyaWZ5KCk8L2NvZGU+LCB0aGUgbmFtZXNwYWNlcyB3aWxsIGJlIGZvdW5kIGFuZCB0aGUgY2Fub25pY2FsIAorCQkgIGZvcm0gb2YgU2lnbmVkSW5mbyB3aWxsIGJlIGRpZmZlcmVudCB0byB0aGF0IGdlbmVyYXRlZCBkdXJpbmcgCisJCSAgPGNvZGU+c2lnbigpPC9jb2RlPi4KKwkJPC9wPgorCSAgPC9hbnN3ZXI+CisJPC9mYXE+CisJPGZhcSBpZD0iaWRzIj4KKwkgIDxxdWVzdGlvbj4KKwkJSG93IGRvZXMgdGhlIGxpYnJhcnkgaWRlbnRpZnkgSWQgYXR0cmlidXRlcz8KKwkgIDwvcXVlc3Rpb24+CisJICA8YW5zd2VyPgorCQk8cD4KKwkJICBEdXJpbmcgYSBzaWduaW5nIG9wZXJhdGlvbiwgZmluZGluZyB0aGUgY29ycmVjdCBJZCBhdHRyaWJ1dGUgaXMKKwkJICB2aXRhbC4gIFNob3VsZCB0aGUgd3JvbmcgSWQgQXR0cmlidXRlIGJlIHVzZWQsIHRoZSB3cm9uZworCQkgIHBhcnQgb2YgdGhlIGRvY3VtZW50IHdpbGwgYmUgaWRlbnRpZmllZCwgYW5kIHdoYXQgdGhlIHVzZXIgc2lnbnMKKwkJICB3aWxsIG5vdCBiZSB3aGF0IHRoZXkgZXhwZWN0IHRvIHNpZ24uCisJCTwvcD4KKwkJPHA+CisJCSAgVGhlIHByZWZlcnJlZCBtZXRob2QgKGFuZCB0aGUgbWV0aG9kIHRoZSBsaWJyYXJ5IHVzZXMgZmlyc3QpIG9mIAorCQkgIGZpbmRpbmcgYW4gSWQgaXMgdmlhIHRoZSBET00gTGV2ZWwgMiBjYWxsCisJCSAgPGVtPkRPTURvY3VtZW50OjpnZXRFbGVtZW50QnlJZCgpPC9lbT4uICBUaGlzIGluZGljYXRlcyB0byB0aGUKKwkJICBsaWJyYXJ5IHRoYXQgdGhlIElkIGhhcyBiZWVuIGV4cGxpY2l0bHkgaWRlbnRpZmllZCB2aWEgYSBzY2hlbWEsCisJCSAgRFREIG9yIGR1cmluZyBkb2N1bWVudCBidWlsZGluZy4gIEhvd2V2ZXIsIGlmIHRoaXMgY2FsbCBmYWlscywgdGhlCisJCSAgbGlicmFyeSB3aWxsIHRoZW4gc2VhcmNoIHRoZSBkb2N1bWVudCBmb3IgYXR0cmlidXRlcyBuYW1lZCAiSWQiIG9yCisJCSAgImlkIiB3aXRoIHRoZSBhcHByb3ByaWF0ZSB2YWx1ZS4gIFRoZSBmaXJzdCBvbmUgZm91bmQgd2lsbCBiZSB1c2VkCisJCSAgYXMgZG9jdW1lbnQgZnJhZ21lbnQgaWRlbnRpZmllci4KKwkJPC9wPgorICAgICAgICA8cD4KKyAgICAgICAgICBBcyBvZiB2ZXJzaW9uIDEuMiwgdGhlIGxpYnJhcnkgYWxzbyBwcm92aWRlcyBtZXRob2RzIHRvIGFsbG93CisgICAgICAgICAgY2FsbGVycyB0byBzZXQgYWRkaXRpb25hbCBJZCBhdHRyaWJ1dGUgbmFtZXMuICBUaGlzIGNhbiBiZQorICAgICAgICAgIGRvbmUgaW4gb25lIG9mIHR3byB3YXlzLiAgCisgICAgICAgICAgPGVtPkRTSUdTaWduYXR1cmU6OnJlZ2lzdGVySWRBdHRyaWJ1dGVOYW1lKCk8L2VtPiB3aWxsIHJlZ2lzdGVyCisgICAgICAgICAgYSBuZXcgbmFtZSB0aGF0IHdpbGwgbm90IGJlIG1hdGNoZWQgdG8gYSBuYW1lc3BhY2UuCisgICAgICAgICAgPGVtPkRTSUdEU2lnbmF0dXJlOjpyZWdpc3RlcklkQXR0cmliaXRlTmFtZU5TKCk8L2VtPiB3aWxsCisgICAgICAgICAgcmVnaXN0ZXIgYW4gYXR0cmlidXRlIG5hbWUgdG9nZXRoZXIgd2l0aCB0aGUgbmFtZXNwYWNlIGluCisgICAgICAgICAgd2hpY2ggdGhlIGF0dHJpYnV0ZSByZXNpZGVzLgorICAgICAgICA8L3A+CisJCTxwPgorCQkgIEFzIHRoaXMgaXMgYSBwb3RlbnRpYWwgc2VjdXJpdHkgZXhwb3N1cmUsIHRoaXMgYmVoYXZpb3VyIGNhbiBiZQorCQkgIGRpc2FibGVkIHVzaW5nIGEgY2FsbCB0byAKKwkJICA8ZW0+RElTR1NpZ25hdHVyZXM6OnNldElkQnlBdHRyaWJ1dGVOYW1lKGZhbHNlKTwvZW0+LiAgVGhlcmUgYXJlCisJCSAgYWxzbyBtZXRob2RzIHByb3ZpZGVkIHRvIG1vZGlmeSB0aGUgbGlzdCBvZiBhdHRyaWJ1dGVzIHRoYXQgd2lsbAorCQkgIGJlIHNlYXJjaGVkLiAgSG93ZXZlciBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHRoZXNlIG1ldGhvZHMgbm90IGJlCisJCSAgdXNlZCwgYW5kIERPTSBhdHRyaWJ1dGVzIG9mIFR5cGU9SUQgYmUgdXNlZC4KKwkJPC9wPgorCQk8d2FybmluZz4KKwkJICBJbiB2ZXJzaW9uIDEuMSBhbmQgYWJvdmUsIHRoZSBsaWJyYXJ5IGRlZmF1bHRzIHRvIHNlYXJjaGluZyBmb3IgSWQKKwkJICBhdHRyaWJ1dGVzIGJ5IG5hbWUgaWYgYSBzZWFyY2ggYnkgSWQgZmFpbHMuICBBcyB0aGlzIGlzIGEgcG90ZW50aWFsCisJCSAgc2VjdXJpdHkgcmlzaywgdGhpcyBiZWhhdmlvdXIgbWF5IGJlIGNoYW5nZWQgaW4gYSBmdXR1cmUgdmVyc2lvbgorCQkgIG9mIHRoZSBsaWJyYXJ5LgorCQk8L3dhcm5pbmc+CisJICA8L2Fuc3dlcj4KKwk8L2ZhcT4KKyAgICA8ZmFxIGlkPSJ4a21zX3N1cHBvcnQiPgorICAgICAgPHF1ZXN0aW9uPgorICAgICAgICBXaGF0IHBhcnRzIG9mIHRoZSBYS01TIHNwZWNpZmljYXRpb24gZG9lcyB0aGUgbGlicmFyeSBzdXBwb3J0PworICAgICAgPC9xdWVzdGlvbj4KKyAgICAgIDxhbnN3ZXI+CisgICAgICAgIDxwPgorICAgICAgICAgIFRoZSBsaWJyYXJ5IGN1cnJlbnRseSBzdXBwb3J0cyBYLUtJU1MgKFhNTCBLZXkgSW5mb3JtYXRpb24KKyAgICAgICAgICBTZXJ2aWNlIFNwZWNpZmljYXRpb24pIG1lc3NhZ2UgZ2VuZXJhdGlvbiBhbmQgcHJvY2Vzc2luZy4KKyAgICAgICAgICBTdXBwb3J0IGZvciBYLUtSU1MgKFhNTCBLZXkgUmVnaXN0cmF0aW9uIFNlcnZpY2UgU3BlY2lmaWNhdGlvbikKKyAgICAgICAgICB3aWxsIGJlIHByb3ZpZGVkIGluIHZlcnNpb24gMS4zIG9mIHRoZSBsaWJyYXJ5LgorICAgICAgICA8L3A+CisgICAgICA8L2Fuc3dlcj4KKyAgICA8L2ZhcT4KKwk8ZmFxIGlkPSJ4a21zX2NsaWVudCI+CisJICA8cXVlc3Rpb24+CisJCURvZXMgdGhlIGxpYnJhcnkgcHJvdmlkZSBhIHByb2dyYW1tYXRpYyBYS01TIGNsaWVudD8KKwkgIDwvcXVlc3Rpb24+CisJICA8YW5zd2VyPgorCQk8cD4KKyAgICAgICAgICBOb3QgeWV0LiAgQSBjb21tYW5kIGxpbmUgdG9vbCA8ZW0+eGtsaWVudDwvZW0+IGlzIHByb3ZpZGVkIGZvciAKKyAgICAgICAgICBnZW5lcmF0aW5nIGFuZCBwcm9jZXNzaW5nIG1lc3NhZ2VzLiAgVGhpcyBjYW4gYmUgdXNlZCBhcyBhbgorICAgICAgICAgIGV4YW1wbGUgZm9yIHByb2Nlc3NpbmcgWEtNUyBtZXNzYWdlcy4KKyAgICAgICAgPC9wPgorICAgICAgICA8cD4KKyAgICAgICAgICBBIHByb2dyYW1tYXRpYyBjbGllbnQgd2lsbCBiZSBwcm92aWRlZCBpbiB2ZXJzaW9uIDEuMyBvZiB0aGUgQysrCisgICAgICAgICAgbGlicmFyeS4KKwkJPC9wPgorCSAgPC9hbnN3ZXI+CisJPC9mYXE+CisgIDwvcGFydD4KKzwvZmFxcz4KKworCisKKzwhLS0gS2VlcCB0aGlzIGNvbW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZQorTG9jYWwgdmFyaWFibGVzOgorbW9kZTogeG1sCitzZ21sLW9taXR0YWc6bmlsCitzZ21sLXNob3J0dGFnOm5pbAorc2dtbC1uYW1lY2FzZS1nZW5lcmFsOm5pbAorc2dtbC1nZW5lcmFsLWluc2VydC1jYXNlOmxvd2VyCitzZ21sLW1pbmltaXplLWF0dHJpYnV0ZXM6bmlsCitzZ21sLWFsd2F5cy1xdW90ZS1hdHRyaWJ1dGVzOnQKK3NnbWwtaW5kZW50LXN0ZXA6Mgorc2dtbC1pbmRlbnQtZGF0YTp0CitzZ21sLXBhcmVudC1kb2N1bWVudDpuaWwKK3NnbWwtZXhwb3NlZC10YWdzOm5pbAorc2dtbC1sb2NhbC1jYXRhbG9nczpuaWwKK3NnbWwtbG9jYWwtZWNhdC1maWxlczpuaWwKK0VuZDoKKy0tPgpkaWZmIC0tZ2l0IGEvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9jL2luZGV4LnhtbCBiL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbnRlbnQveGRvY3MvYy9pbmRleC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZlYzlkYQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbnRlbnQveGRvY3MvYy9pbmRleC54bWwKQEAgLTAsMCArMSwyMjQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgZG9jdW1lbnQgUFVCTElDICItLy9BUEFDSEUvL0RURCBEb2N1bWVudGF0aW9uIFYxLjEvL0VOIiAiZG9jdW1lbnQtdjExLmR0ZCI+Cis8IS0tCitDb3B5cmlnaHQgMjAwMy0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+Cis8ZG9jdW1lbnQ+CisgIDxoZWFkZXI+CisgICAgPHRpdGxlPkMrKyBMaWJyYXJ5IERvY3VtZW50YXRpb248L3RpdGxlPgorICA8L2hlYWRlcj4KKyAgCisgIDxib2R5PgorICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlZlcnNpb24gMS41LjEgUmVsZWFzZWQ8L3RpdGxlPgorICAgICAgPHA+CisgICAgICAgIFRoZSBBcGFjaGUgWE1MIFNlY3VyaXR5IHRlYW0gYXJlIHBsZWFzZWQgdG8gYW5ub3VuY2UgdGhlIHJlbGVhc2UKKyAgICAgICAgb2YgdmVyc2lvbiAxLjUuMSBvZiB0aGUgeG1sLXNlY3VyaXR5LWMgbGlicmFyeS4gIFRoaXMgcmVsZWFzZQorICAgICAgICBwcm92aWRlcyBzb21lIGJ1ZyBmaXhlcyBhbmQgYSBmaXggZm9yIHRoZSByZWNlbnRseSBhbm5vdW5jZWQKKyAgICAgICAgSE1BQyB2dWxuZXJhYmlsaXR5IGluIHRoZSBYTUwgU2lnbmF0dXJlIHNwZWNpZmljYXRpb24uCisgICAgICA8L3A+CisgICAgPC9zZWN0aW9uPgorICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPk92ZXJ2aWV3IG9mIHRoZSBDKysgTGlicmFyeTwvdGl0bGU+CisgICAgICA8cD4KKyAgICAgICAgVGhlIEMrKyBsaWJyYXJ5IGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBYTUwgRGlnaXRhbCBTaWduYXR1cmUKKyAgICAgICAgc3BlY2lmaWNhdGlvbi4gIEl0IGlzIGRlc2lnbmVkIHRvIGJlIGVhc2lseSBwb3J0ZWQgdG8gbmV3IHBsYXRmb3JtcywKKyAgICAgICAgYW5kIGhhcyBiZWVuIHRlc3RlZCBvbiBTb2xhcmlzLCBMaW51eCwgRnJlZUJTRCwgTmV0QlNEIGFuZCBXaW5kb3dzLgorICAgICAgPC9wPgorICAgICAgPHA+CisgICAgICAgIFRoZSBsaWJyYXJ5IG1ha2VzIHVzZSBvZiB0aGUgQXBhY2hlIFhNTCBwcm9qZWN0J3MgWGVyY2VzLUMgWE1MIFBhcnNlcgorICAgICAgICBhbmQgWGFsYW4tQyBYU0xUIHByb2Nlc3Nvci4gIFRoZSBsYXR0ZXIgaXMgdXNlZCBmb3IgcHJvY2Vzc2luZyBYUGF0aAorICAgICAgICBhbmQgWFNMVCB0cmFuc2Zvcm1zLiAgVGhlIHVzZSBvZiBYYWxhbi1DIGlzIG9wdGlvbmFsLCBidXQgd2l0aG91dCBpdCwKKyAgICAgICAgWFBhdGggYW5kIFhTTFQgdHJhbnNmb3JtYXRpb25zIGNhbm5vdCBiZSBwZXJmb3JtZWQuCisgICAgICA8L3A+CisgICAgICA8cD4KKyAgICAgICAgSW4gYWRkaXRpb24sIHRoZSBsaWJyYXJ5IGN1cnJlbnRseSB1c2VzIE9wZW5TU0wgdG8gcHJvdmlkZSAKKyAgICAgICAgY3J5cHRvZ3JhcGhpYyBmdW5jdGlvbmFsaXR5LiAgVGhlIGNyeXB0b2dyYXBoaWMgaW50ZXJmYWNlIGlzCisgICAgICAgIGltcGxlbWVudGVkIHZpYSBhIHRoaW4gd3JhcHBlciBsYXllciwgYW5kIGEgZGV2ZWxvcG1lbnQgdmVyc2lvbiBvZgorCQlhbiBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIFdpbmRvd3MgQ3J5cHRvZ3JhcGhpYyBBUEkgaGFzIGFsc28gYmVlbgorCQlpbXBsZW1lbnRlZC4KKyAgICAgIDwvcD4KKyAgICA8L3NlY3Rpb24+CisJPHNlY3Rpb24+CisJICA8dGl0bGU+T2xkIE5ld3M8L3RpdGxlPgorICAgICAgPHNlY3Rpb24+CisgICAgICAgIDx0aXRsZT5WZXJzaW9uIDEuNS4wIFJlbGVhc2VkPC90aXRsZT4KKyAgICAgICAgPHA+CisgICAgICAgICAgVGhlIEFwYWNoZSBYTUwgU2VjdXJpdHkgdGVhbSBhcmUgcHJvdWQgdG8gYW5ub3VuY2UgdGhlIHJlbGVhc2UKKyAgICAgICAgICBvZiB2ZXJzaW9uIDEuNS4wIG9mIHRoZSB4bWwtc2VjdXJpdHktYyBsaWJyYXJ5LiAgVGhpcyByZWxlYXNlCisgICAgICAgICAgcHJvdmlkZXMgbW9yZSBidWcgZml4ZXMsIHBhcnRpYWwgc3VwcG9ydCBmb3IgSW5jbHVzaXZlIENhbm9uaWNhbGl6YXRpb24gMS4xLAorICAgICAgICAgIGFuZCBzdXBwb3J0IGZvciB0aGUgWGVyY2VzIDMueCBvZmZpY2lhbCByZWxlYXNlIGFuZCAzMi82NC1iaXQgcG9ydGFiaWxpdHkgQVBJcy4KKyAgICAgICAgPC9wPgorICAgICAgPC9zZWN0aW9uPgorICAgICAgPHNlY3Rpb24+CisgICAgICAgIDx0aXRsZT5WZXJzaW9uIDEuNC4wIFJlbGVhc2VkPC90aXRsZT4KKyAgICAgICAgPHA+CisgICAgICAgICAgVGhlIEFwYWNoZSBYTUwgU2VjdXJpdHkgdGVhbSBhcmUgcHJvdWQgdG8gYW5ub3VuY2UgdGhlIHJlbGVhc2UKKyAgICAgICAgICBvZiB2ZXJzaW9uIDEuNC4wIG9mIHRoZSB4bWwtc2VjdXJpdHktYyBsaWJyYXJ5LiAgVGhpcyByZWxlYXNlCisgICAgICAgICAgcHJvdmlkZXMgbW9yZSBidWcgZml4ZXMsIGltcHJvdmVkIGF1dG9tYWtlIGFuZCBSUE0gcGFja2FnaW5nLAorICAgICAgICAgIGFuZCBiZXR0ZXIgZXJyb3IgcmVwb3J0aW5nLgorICAgICAgICA8L3A+CisgICAgICAgIDxwPgorICAgICAgICAgIFRoaXMgdmVyc2lvbiBhbHNvIHByb3ZpZGVzIGluaXRpYWwgc3VwcG9ydCBmb3IgWGVyY2VzIDMuMC4gIElmCisgICAgICAgICAgeW91IGFyZSBidWlsZGluZyBmb3IgdGhlIDMuMCBsaWJyYXJ5IHVuZGVyIFdpbmRvd3MsIHlvdSB3aWxsIG5lZWQKKyAgICAgICAgICB0byBjaGFuZ2UgdGhlIFhlcmNlcyBsaWJyYXJ5IChpbiBsaW5rIGluY2x1ZGVzKSB0byB4ZXJjZXNfMz8ubGliLgorICAgICAgICA8L3A+CisgICAgICA8L3NlY3Rpb24+CisgICAgICA8c2VjdGlvbj4KKyAgICAgICAgPHRpdGxlPlZlcnNpb24gMS4zLjEgUmVsZWFzZWQ8L3RpdGxlPgorICAgICAgICAgIDxwPgorICAgICAgICAgIFRoZSBBcGFjaGUgWE1MIFNlY3VyaXR5IHRlYW0gYXJlIHByb3VkIHRvIGFubm91bmNlIHRoZSByZWxlYXNlCisgICAgICAgICAgb2YgdmVyc2lvbiAxLjMuMSBvZiB0aGUgeG1sLXNlY3VyaXR5LWMgbGlicmFyeS4gIFRoaXMgcmVsZWFzZQorICAgICAgICAgIHByb3ZpZGVzIHNvbWUgYnVnIGZpeGVzIGFuZCBhbiB1cGRhdGVkIEF1dG9tYWtlIGJhc2VkIGJ1aWxkIG9uCisgICAgICAgICAgTGludXgvU29sYXJpcy9CU0QuCisgICAgICAgIDwvcD4KKyAgICAgICAgPHA+CisgICAgICAgICAgVGhpcyB2ZXJzaW9uIGFsc28gcHJvdmlkZXMgaW5pdGlhbCBzdXBwb3J0IGZvciBYZXJjZXMgMy4wLiAgSWYKKyAgICAgICAgICB5b3UgYXJlIGJ1aWxkaW5nIGZvciB0aGUgMy4wIGxpYnJhcnkgdW5kZXIgV2luZG93cywgeW91IHdpbGwgbmVlZAorICAgICAgICAgIHRvIGNoYW5nZSB0aGUgWGVyY2VzIGxpYnJhcnkgKGluIGxpbmsgaW5jbHVkZXMpIHRvIHhlcmNlc18zPy5saWIuCisgICAgICAgIDwvcD4KKyAgICAgIDwvc2VjdGlvbj4KKyAgICAgIDxzZWN0aW9uPgorICAgICAgICA8dGl0bGU+VmVyc2lvbiAxLjMgUmVsZWFzZWQ8L3RpdGxlPgorICAgICAgICA8cD4KKyAgICAgICAgICBUaGUgQXBhY2hlIFhNTCBTZWN1cml0eSB0ZWFtIGFyZSBwcm91ZCB0byBhbm5vdW5jZSB0aGUgcmVsZWFzZQorICAgICAgICAgIG9mIHZlcnNpb24gMS4zIG9mIHRoZSB4bWwtc2VjdXJpdHktYyBsaWJyYXJ5LiAgVGhpcyByZWxlYXNlIG5vdyAKKyAgICAgICAgICBwcm92aWRlcyBmdWxsIHN1cHBvcnQgZm9yICBsb2FkaW5nIGFuZCBwcm9jZXNzaW5nIG9mIFhLTVMgbWVzc2FnZXMuCisgICAgICAgIDwvcD4KKyAgICAgICAgPHA+CisgICAgICAgICAgQSBudW1iZXIgb2Ygb3B0aW1pc2F0aW9ucyBoYXZlIG5vdyBiZWVuIGJ1aWx0IGludG8gdGhlIGNhbm9uaWNhbGlzYXRpb24KKyAgICAgICAgICByb3V0aW5lcywgY3JlYXRpbmcgc2lnbmlmaWNhbnQgc3BlZWQgaW1wcm92ZW1lbnRzIHdoZW4gcHJvY2Vzc2luZworICAgICAgICAgIGxhcmdlIGRvY3VtZW50cy4KKyAgICAgICAgPC9wPgorICAgICAgICA8cD4KKyAgICAgICAgICBUaGlzIHZlcnNpb24gYWxzbyBpbmNsdWRlcyBhIG51bWJlciBvZiBvdGhlciBjaGFuZ2VzIGFuZCBidWdmaXhlcywKKyAgICAgICAgICBpbmNsdWRpbmcgdXBkYXRlcyB0byBzdXBwb3J0IFhlcmNlcyAyLjcgd2l0aCBYYWxhbiAxLjkuCisgICAgICAgICAgU2VlIDxsaW5rIGhyZWY9Ii4uL2NoYW5nZXMuaHRtbCI+Y2hhbmdlcy5odG1sPC9saW5rPiBmb3IgbW9yZQorICAgICAgICAgIGluZm9ybWF0aW9uLgorICAgICAgICA8L3A+CisgICAgICA8L3NlY3Rpb24+CisgICAgICA8c2VjdGlvbj4KKyAgICAgICAgPHRpdGxlPlZlcnNpb24gMS4yIFJlbGVhc2VkPC90aXRsZT4KKyAgICAgICAgPHA+CisgICAgICAgICAgVGhlIEFwYWNoZSBYTUwgU2VjdXJpdHkgdGVhbSBhcmUgcHJvdWQgdG8gYW5ub3VuY2UgdGhlIHJlbGVhc2UKKyAgICAgICAgICBvZiB2ZXJzaW9uIDEuMiBvZiB0aGUgeG1sLXNlY3VyaXR5LWMgbGlicmFyeS4gIFRoaXMgaXMgdGhlIGZpcnN0CisgICAgICAgICAgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSB0byBwcm92aWRlIHByb2Nlc3NpbmcgYW5kIGhhbmRsaW5nIG9mIAorICAgICAgICAgIDxsaW5rIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWEtNUy8iPlhNTCBLZXkgTWFuYWdlbWVudAorICAgICAgICAgICAgU3BlY2lmaWNhdGlvbiAoWEtNUyk8L2xpbms+IChjdXJyZW50bHkgWE1MIEtleSBJbmZvcm1hdGlvbiBTZXJ2aWNlCisgICAgICAgICAgU3BlY2lmaWNhdGlvbiAtIFhLSVNTIC0gb25seSkgbWVzc2FnZXMgdG9nZXRoZXIgd2l0aCBhIGNvbW1hbmQKKyAgICAgICAgICBsaW5lIGNsaWVudCBmb3IgcGVyZm9ybWluZyBYS01TIHJlcXVlc3RzIGFuZCByZWFkaW5nL2R1bXBpbmcKKyAgICAgICAgICBYS01TIG1lc3NhZ2VzLgorICAgICAgICA8L3A+CisgICAgICAgIDxwPgorICAgICAgICAgIFRoZSB0ZWFtIHdlcmUgaW52b2x2ZWQgaW4gPGxpbmsgaHJlZj0iaHR0cDovL3d3dy53M2Mub3JnIj5Xb3JsZCBXaWRlCisgICAgICAgICAgICBXZWIgQ29uc29ydGl1bSAodzNjKTwvbGluaz4gaW50ZXJvcGVyYWJpbGl0eSB0ZXN0aW5nIHdpdGgKKyAgICAgICAgICBhIHJlZmVyZW5jZSBYS01TIHNlcnZlciBidWlsdCB1c2luZyB0aGUgeG1sLXNlY3VyaXR5LWMgbGlicmFyeS4KKyAgICAgICAgPC9wPgorICAgICAgICA8cD4KKyAgICAgICAgICBUaGlzIHZlcnNpb24gYWxzbyBpbmNsdWRlcyBhIG51bWJlciBvZiBvdGhlciBjaGFuZ2VzIGFuZCBidWdmaXhlcywKKyAgICAgICAgICBpbmNsdWRpbmcgdXBkYXRlcyB0byBzdXBwb3J0IFhlcmNlcyAyLjYgd2l0aCBYYWxhbiAxLjkuCisgICAgICAgICAgU2VlIDxsaW5rIGhyZWY9Ii4uL2NoYW5nZXMuaHRtbCI+Y2hhbmdlcy5odG1sPC9saW5rPiBmb3IgbW9yZQorICAgICAgICAgIGluZm9ybWF0aW9uLgorICAgICAgICA8L3A+CisgICAgICA8L3NlY3Rpb24+CisgICAgICA8c2VjdGlvbj4KKyAgICAgICAgPHRpdGxlPk5ld3MgLSBNYXJjaCAyMDA0PC90aXRsZT4KKyAgICAgICAgPHA+CisgICAgICAgICAgVmVyc2lvbiAxLjEgb2YgdGhlIEMrKyBsaWJyYXJ5IGhhcyBiZWVuIHJlbGVhc2VkLiAgU3VwcG9ydGluZworICAgICAgICAgIFhlcmNlcyAyLjUsIDIuNCBhbmQgMi4zIHRvZ2V0aGVyIHdpdGggWGFsYW4gMS42IGFuZCAxLjcsIHRoaXMKKyAgICAgICAgICB2ZXJzaW9uIHByb3ZpZGVzIDoKKyAgICAgICAgPC9wPgorICAgICAgICA8dWw+CisgICAgICAgICAgPGxpPkJldGEgaW1wbGVtZW50YXRpb24gb2YgWE1MIEVuY3J5cHRpb248L2xpPgorICAgICAgICAgIDxsaT5JbXByb3ZlZCBzdXBwb3J0IGZvciBXaW5kb3dzIENyeXB0byBBUEk8L2xpPgorICAgICAgICAgIDxsaT5CdWcgZml4ZXMgdG8gU2lnbmF0dXJlIGltcGxlbWVudGF0aW9uPC9saT4KKyAgICAgICAgPC91bD4KKyAgICAgIDwvc2VjdGlvbj4KKwkgIDxzZWN0aW9uPgorCQk8dGl0bGU+TWF5IDIwMDM8L3RpdGxlPgorCQk8cD4KKwkJICBCZXRhIDAuMiBoYXMgYmVlbiByZWxlYXNlZC4gIEl0IGNvdmVycyA6CisJCTwvcD4KKwkJPHVsPgorCQkgIDxsaT5zb21lIG1pbm9yIGJ1Zy1maXhlcyBpbiB0aGUJY29kZSBhbmQgdGhlIFVOSVggYnVpbGQgc3lzdGVtPC9saT4KKwkJICA8bGk+YSBmaXJzdCBjdXQgYXQgYSBXaW5kb3dzIENyeXB0byBBUEkgcHJvdmlkZXIgaW50ZXJmYWNlPC9saT4KKwkJICA8bGk+bWV0aG9kcyB0byBleHRyYWN0IGluZm9ybWF0aW9uIGZyb20gc2lnbmF0dXJlIG9iamVjdHM7IGFuZDwvbGk+CisJCSAgPGxpPnVwZGF0ZXMgdG8gdG9vbHMgdG8gYWxsb3cgKGFuZCBkZW1vbnN0cmF0ZSkgdXNlIG9mIFdpbmRvd3MgQ0FQSQorCQkJYW5kIG5ldyBleHRyYWN0aW9uIG1ldGhvZHM8L2xpPgorCQk8L3VsPgorCQk8cD4KKwkJICBCZXRhIDAuMiBpcyBoYXMgYmVlbiB0ZXN0ZWQgd2l0aCBYZXJjZXMtQyB2Mi4yIGFuZCB0aGUgbmV3bHkgCisJCSAgcmVsZWFzZWQgWGFsYW4tQyB2MS41LgorCQk8L3A+CisJICA8L3NlY3Rpb24+CisJICA8c2VjdGlvbj4KKwkJPHRpdGxlPkZlYnJ1YXJ5IDIwMDM8L3RpdGxlPgorCQk8cD4KKwkJICBUaGUgQysrIGxpYnJhcnkgaGFzIG5vdyBiZWVuIGZ1bGx5IHRyYW5zZmVycmVkIGludG8gdGhlIEFwYWNoZSBYTUwKKwkJICBwcm9qZWN0LiAgSXQgd2FzIHByZXZpb3VzbHkgaG9zdGVkIG9uIFNvdXJjZUZvcmdlLgorCQk8L3A+CisJCTxwPgorCQkgIFRoZSBmaXJzdCByZWxlYXNlIHVuZGVyIEFwYWNoZSBpcyAwLjEwLiAgVGhpcyBpcyBhIEJldGEgcmVsZWFzZSwKKwkJICB3aXRoIGZhaXJseSBjb21wbGV0ZSBkb2N1bWVudGF0aW9uLCBhbmQgYSBzdGFibGUgY29kZSBiYXNlLiAgSXQKKwkJICBmdWxseSB2YWxpZGF0ZXMgdGhlIHZhcmlvdXMgaW50ZXJvcCBkb2N1bWVudHMgaGVsZCBpbiB0aGUgeG1sLXNlY3VyaXR5CisJCSAgQ1ZTLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgdGhvc2UgcmVsYXRlZCB0byA6CisJCTwvcD4KKwkJPHVsPgorCQkgIDxsaT5NRDUgRGlnZXN0cyAodG8gYmUgYWRkZWQgaW4gbmV4dCBwb2ludCByZWxlYXNlKTwvbGk+CisJCSAgPGxpPlhQYXRoIEZpbHRlciAodG8gYmUgYWRkZWQgaW4gbmV4dCBwb2ludCByZWxlYXNlKTwvbGk+CisJCSAgPGxpPlhNTCBFbmNyeXB0aW9uICh0byBiZSBhZGRlZCBwb3N0IDEuMDAgcmVsZWFzZSk8L2xpPgorCQk8L3VsPgorCSAgPC9zZWN0aW9uPgorCSAgPHNlY3Rpb24+CisJCTx0aXRsZT5OZXdzIC0gQXVndXN0IDIwMDM8L3RpdGxlPgorCQk8cD4KKwkJICBWZXJzaW9uIDEuMDAgb2YgdGhlIGxpYnJhcnkgaGFzIG5vdyBiZWVuIHJlbGVhc2VkLiAgSXQgZmVhdHVyZXMgOgorCQk8L3A+CisJCTx1bD4KKwkJICA8bGk+dGhlIGZpcnN0IHN0YWJsZSByZWxlYXNlPC9saT4KKwkJICA8bGk+ZnVsbCBpbXBsZW1lbnRhdGlvbiBvZiBhbGwgbWFuZGF0b3J5IHJlcXVpcmVtZW50cyBvZiBEU0lHPC9saT4KKwkJICA8bGk+aW1wbGVtZW50YXRpb24gb2YgY2Fub25pY2FsaXNlZCBYTUw8L2xpPgorCQkgIDxsaT5pbXBsZW1lbnRhdGlvbiBvZiBleGNsdXNpdmUtY2Fub25pY2FsaXNlZCBYTUw8L2xpPgorCQkgIDxsaT5pbXBsZW1lbnRhdGlvbiBvZiBYUGF0aC1maWx0ZXI8L2xpPgorCQkgIDxsaT5GcmVlQlNELCBOZXRCU0QgYW5kIEN5Z3dpbiBidWlsZHM8L2xpPgorCQk8L3VsPgorCQk8cD4KKwkJICBWZXJzaW9uIDEuMDAgaXMgaGFzIGJlZW4gdGVzdGVkIHdpdGggWGVyY2VzLUMgdjIuMiBhbmQgdGhlIG5ld2x5IAorCQkgIHJlbGVhc2VkIFhhbGFuLUMgdjEuNi4gIFhlcmNlcy1DIHYyLjMgaXMgYWxzbyBzdXBwb3J0ZWQuICBOb3RlIHRoYXQKKwkJICB2ZXJzaW9ucyBvZiBYYWxhbiBwcmlvciB0byB2MS42IGFyZSBub3Qgc3VwcG9ydGVkIChkdWUgdG8gdGhlIG5ldworCQkgIGNoYW5nZWQgbG9jYXRpb24gb2YgaW5jbHVkZSBmaWxlcykuCisJCTwvcD4KKwkgIDwvc2VjdGlvbj4KKwk8L3NlY3Rpb24+CisgIDwvYm9keT4KKzwvZG9jdW1lbnQ+CisKKzwhLS0gS2VlcCB0aGlzIGNvbW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZQorTG9jYWwgdmFyaWFibGVzOgorbW9kZTogeG1sCitzZ21sLW9taXR0YWc6bmlsCitzZ21sLXNob3J0dGFnOm5pbAorc2dtbC1uYW1lY2FzZS1nZW5lcmFsOm5pbAorc2dtbC1nZW5lcmFsLWluc2VydC1jYXNlOmxvd2VyCitzZ21sLW1pbmltaXplLWF0dHJpYnV0ZXM6bmlsCitzZ21sLWFsd2F5cy1xdW90ZS1hdHRyaWJ1dGVzOnQKK3NnbWwtaW5kZW50LXN0ZXA6Mgorc2dtbC1pbmRlbnQtZGF0YTp0CitzZ21sLXBhcmVudC1kb2N1bWVudDpuaWwKK3NnbWwtZXhwb3NlZC10YWdzOm5pbAorc2dtbC1sb2NhbC1jYXRhbG9nczpuaWwKK3NnbWwtbG9jYWwtZWNhdC1maWxlczpuaWwKK0VuZDoKKy0tPgpkaWZmIC0tZ2l0IGEvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9jL2luc3RhbGxhdGlvbi54bWwgYi9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL2MvaW5zdGFsbGF0aW9uLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDJmMjU1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9jL2luc3RhbGxhdGlvbi54bWwKQEAgLTAsMCArMSwyNjQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgZG9jdW1lbnQgUFVCTElDICItLy9BUEFDSEUvL0RURCBEb2N1bWVudGF0aW9uIFYxLjEvL0VOIiAiZG9jdW1lbnQtdjExLmR0ZCIKK1sKKyAgPCFFTlRJVFkgJSB4bWxzZWNfZW50aXRpZXMgU1lTVEVNICIuLi94bWxzZWNfZW50aXRpZXMuZW50Ij4gCisgICV4bWxzZWNfZW50aXRpZXM7IAorXT4KKzwhLS0KK0NvcHlyaWdodCAyMDAzLTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisKK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworPGRvY3VtZW50PiAKKyAgPGhlYWRlcj4gCisgICAgPHRpdGxlPkluc3RhbGxpbmcgdGhlIEMrKyBMaWJyYXJ5PC90aXRsZT4gCisgIDwvaGVhZGVyPiAKKyAgPGJvZHk+IAorICAgIDxzZWN0aW9uPiAKKyAgICAgIDx0aXRsZT5QcmVyZXF1aXNpdGVzPC90aXRsZT4KKyAgICAgIDxwPgorCQlUaGUgbGlicmFyeSByZXF1aXJlcyBPcGVuU1NMIGZvciBjcnlwdG9ncmFwaGljIHN1cHBvcnQuICBYYWxhbi1DCisJCWlzIGFsc28gcmVxdWlyZWQgaWYgWFBhdGggYW5kL29yIFhTTFQgdHJhbnNmb3JtYXRpb25zIGFyZSByZXF1aXJlZC4KKyAgICAgIDwvcD4KKwkgIDxwPgorCQlWZXJzaW9uIDEuNS4xIG9mIHRoZSBsaWJyYXJ5IGhhcyBiZWVuIHRlc3RlZCB3aXRoIHZlcnNpb25zIDMuMC4xIGFuZAorICAgICAgICAyLjguMCBvZiBYZXJjZXMtQywgYW5kIFZlcnNpb24gMC45LjcgKGFuZCBhYm92ZSkgb2YgT3BlblNTTC4KKwkgIDwvcD4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5HZXR0aW5nIHRoZSBzb3VyY2U8L3RpdGxlPgorICAgICAgPHA+CisJCVlvdSBjYW4gZG93bmxvYWQgdGhlIHNvdXJjZXMgdmlhIFdXVyBpbiB0aGUgZGlzdHJpYnV0aW9uIGRpcmVjdG9yeQorCQlmcm9tIG9uZSBvZiB0aGUgQXBhY2hlICAKKwkJPGp1bXAgaHJlZj0ic2l0ZTphYm91dC9kb3dubG9hZCI+CisJCSAgbWlycm9ycworCQk8L2p1bXA+LgorICAgICAgPC9wPgorICAgICAgPHA+CisJCVRoaXMgcHJvamVjdCdzIFNWTiByZXBvc2l0b3J5IGNhbiBiZSBjaGVja2VkIG91dCBkaXJlY3RseSBmcm9tCisJCWh0dHBzOi8vc3ZuLmFwYWNoZS5vcmcvcmVwb3MvYXNmL3htbC9zZWN1cml0eS90cnVuay9jCisgICAgICA8L3A+CisgICAgICA8cD4KKwkJQSBIVFRQIGludGVyZmFjZSB0byBicm93c2UgdGhlIHNvdXJjZXMgb25saW5lIGlzIGF2YWlsYWJsZSB2aWEgCisJCTxqdW1wIGhyZWY9InNpdGU6Z2V0dGluZy1pbnZvbHZlZC9TVk4iPmh0dHA6Ly9zdm4uYXBhY2hlLm9yZy92aWV3dmMveG1sL3NlY3VyaXR5L3RydW5rL2MvPC9qdW1wPgorICAgICAgPC9wPgorICAgIDwvc2VjdGlvbj4KKyAgICAKKyAgICA8c2VjdGlvbj4KKwkgIDx0aXRsZT5CdWlsZGluZyBmb3IgVU5JWDwvdGl0bGU+CisJICA8cD4KKwkJWE1MLVNlY3VyaXR5LUMgaXMgY3VycmVudGx5IGZ1bGx5IHN1cHBvcnRlZCBvbiBMaW51eCwgRnJlZUJTRCBhbmQgCisJCVNvbGFyaXMuICBJdCBpcyBwYXJ0aWFsbHkgc3VwcG9ydGVkIChpbiBjYXNlcyB3aGVyZSBYYWxhbiBpcyBub3QgCisJCXJlcXVpcmVkKSBvbiBOZXRCU0QgYW5kIEN5Z3dpbi4gIEl0IGhhcyBiZWVuIGJ1aWx0IGFuZCAKKwkJdGVzdGVkIHVzaW5nIEdOVSBnY2MgMy54LzQueCwgU3VuIFdvcmtzaG9wIChTb2xhcmlzKSwgYW5kIEdOVSBtYWtlLgorCSAgPC9wPgorCSAgPHNlY3Rpb24+CisJCTx0aXRsZT5TZXQgdXAgdGhlIEVudmlyb25tZW50PC90aXRsZT4KKwkJPHA+CisJCSAgVGhlIGJ1aWxkIHByb2Nlc3MgaGFzIGJlZW4gYXV0b21hdGVkIGFzIG11Y2ggYXMgcG9zc2libGUgdG8gcmVseSBvbgorCQkgIHN0YW5kYXJkIGNvbmZpZ3VyZSBhbmQgbWFrZSBjb21tYW5kcyBhbmQgbm90IGVudmlyb25tZW50IHZhcmlhYmxlcy4KKwkJPC9wPgorCQk8cD4KKwkJICBJZiBjb25maWd1cmUgY2Fubm90IGZpbmQgYW55dGhpbmcgZm9yIFhhbGFuLCBpdCB3aWxsIGFzc3VtZSB0aGF0CisJCSAgeW91IGFyZSBub3QgaW50ZXJlc3RlZCBpbiBYUGF0aCBvciBYU0xUIHN1cHBvcnQgYW5kIHdpbGwgY29tcGlsZQorCQkgIFhTRUMgd2l0aG91dCBsaW5raW5nIHRvIFhhbGFuLiAgQW55IGF0dGVtcHQgdG8gdXNlIHRoZXNlIGZlYXR1cmVzCisJCSAgd2lsbCByYWlzZSBhbiBleGNlcHRpb24gaW4gdGhlIGxpYnJhcnkuCisJCTwvcD4KKwkgIDwvc2VjdGlvbj4KKwkgIDxzZWN0aW9uPgorCQk8dGl0bGU+Q29uZmlndXJlPC90aXRsZT4KKwkJPHA+CisJCSAgTm93IGdvIHRvIHRoZSByb290IGRpcmVjdG9yeSBhbmQgcnVuIHRoZSBjb21tYW5kCisJCSAgPGVtPi4vY29uZmlndXJlPC9lbT4uICBUaGlzIHdpbGwgY3JlYXRlIHRoZSBuZWNlc3NhcnkgbWFrZWZpbGVzCisJCSAgYW5kIGhlYWRlciBmaWxlcyBuZWNlc3NhcnkgdG8gYnVpbGQgdGhlIHBhY2thZ2UuCisJCTwvcD4KKwkJPHA+CisJCSAgSW4gYWRkaXRpb24gdG8gdGhlIHN0YW5kYXJkIG9wdGlvbnMsIDxlbT5jb25maWd1cmU8L2VtPiBjYW4gYmUgCisJCSAgcGFzc2VkIGEgbnVtYmVyIG9mIFhTRUMgc3BlY2lmaWMgb3B0aW9ucyA6CisJCTwvcD4KKwkJPHVsPgorCQkgIDxsaT48ZW0+LS13aXRob3V0LXhhbGFuPC9lbT4gZGlzYWJsZSBsaW5rYWdlIHRvIFhhbGFuLjwvbGk+CisgICAgICAgICAgPGxpPjxlbT4tLXdpdGgteGVyY2VzPSZsdDtkaXImZ3Q7PC9lbT4gZGVmaW5lIFhlcmNlcyBkaXJlY3RvcnkgCisgICAgICAgICAgICByYXRoZXIgdGhhbiB1c2UgWEVSQ0VTQ1JPT1Q8L2xpPgorICAgICAgICAgIDxsaT48ZW0+LS13aXRoLW9wZW5zc2w9Jmx0O2RpciZndDs8L2VtPiBkZWZpbmUgT3BlblNTTCBkaXJlY3RvcnkgCisgICAgICAgICAgICByYXRoZXIgdGhhbiB1c2UgT1BFTlNTTFJPT1Q8L2xpPgorCQkgIDxsaT48ZW0+LS1lbmFibGUtZGVidWc8L2VtPiBjYXVzZSB0aGUgbGlicmFyeSB0byBiZSBidWlsdCB3aXRoIHN5bWJvbHM8L2xpPgorCQk8L3VsPgorCQk8bm90ZT4KKwkJICBVc2luZyB0aGUgPGVtPi0td2l0aG91dC14YWxhbjwvZW0+IG9wdGlvbiB3aWxsIGF1dG9tYXRpY2FsbHkgbWVhbgorCQkgIHRoYXQgdGhlIGxpYnJhcnkgZG9lcyBub3Qgc3VwcG9ydCBYUGF0aCBvciBYU0xUIHRyYW5zZm9ybWF0aW9ucworCQkgIChhbHRob3VnaCBlbnZlbG9wZSB0cmFuc2Zvcm1zIHdpbGwgd29yayBhcyB0aGUgbGlicmFyeSBjYW4gbm93CisJCSAgcGVyZm9ybSB0aGVzZSB3aXRob3V0IGdvaW5nIHRocm91Z2ggYW4gWFBhdGggdHJhbnNmb3JtKS4KKwkJPC9ub3RlPgorCSAgPC9zZWN0aW9uPgorCSAgPHNlY3Rpb24+CisJCTx0aXRsZT5Db21waWxlPC90aXRsZT4KKwkJPHA+CisJCSAgQXNzdW1pbmcgdGhlIG91dHB1dCBvZiB0aGUgYWJvdmUgY29tbWFuZCBsb29rcyByZWFzb25hYmxlIHNpbXBseQorCQkgIHR5cGUgPGVtPm1ha2U8L2VtPiAob3IgPGVtPmdtYWtlPC9lbT4gLSB5b3UgbXVzdCB1c2UgdGhlIEdOVQorCQkgIG1ha2UgdXRpbGl0eSkgaW4gdGhlIGJhc2UgZGlyZWN0b3J5LiAgVGhpcworCQkgIHdpbGwgbWFrZSB0aGUgc2hhcmVkIGxpYnJhcnkuICBJbiBhZGRpdGlvbiwgIDxlbT5tYWtlIHRvb2xzPC9lbT4KKwkJICB3aWxsIG1ha2UgdGhlIHRvb2xzIChvciBleGFtcGxlcykgaW4gdGhlIHNyYy90b29scyBkaXJlY3RvcnkuCisJCTwvcD4KKwkJPHA+CisJCSAgVGhlIG1ha2UgcHJvY2VzcyB3aWxsIGNyZWF0ZSB0aHJlZSBkaXJlY3RvcmllcyBpbiB0aGUgZGlzdHJpYnV0aW9uCisJCSAgZGlyZWN0b3J5OgorCQk8L3A+CisJCTxvbD4KKwkJICA8bGk+PGVtPmluY2x1ZGU8L2VtPiAtIEFsbCBwdWJsaWMgaGVhZGVyIGZpbGVzIGFyZSBjb3BpZWQgaGVyZTwvbGk+CisJCSAgPGxpPjxlbT5iaW48L2VtPiAtIFdoZXJlIHRoZSB0b29scyBhcmUgcGxhY2VkIG9uY2UgY29tcGlsZXMgPC9saT4KKwkJICA8bGk+PGVtPmxpYjwvZW0+IC0gV2hlcmUgdGhlIHNoYXJlZCBsaWJyYXJ5IGlzIHBsYWNlPC9saT4KKwkJPC9vbD4KKwkJPHA+CisJCSAgWW91IG1heSBuZWVkIHRvIHNldCB1cCB5b3VyIDxlbT5MRF9MSUJSQVJZX1BBVEg8L2VtPiBlbnZpcm9ubWVudAorCQkgIHZhcmlhYmxlIHRvIGVuc3VyZSBsZC5zbyB3aWxsIGZpbmQgdGhlIG5ldyBzaGFyZWQgbGlicmFyaWVzLgorCQk8L3A+CisJCTxwPgorCQkgIEZpbmFsbHkgLSB5b3UgY2FuIHVzZSA8ZW0+bWFrZSBjbGVhbjwvZW0+IGFuZCA8ZW0+bWFrZSBkaXN0Y2xlYW48L2VtPgorCQkgIHRvIHJlbW92ZSBhbGwgYmluYXJpZXMgYW5kIGxpYnJhcmllcyAoZm9ybWVyKSBhbmQgYnVpbGQgc2NyaXB0cyAobGF0dGVyKQorCQk8L3A+CisJICA8L3NlY3Rpb24+CisJICA8c2VjdGlvbj4KKwkJPHRpdGxlPkluc3RhbGw8L3RpdGxlPgorCQk8cD4KKwkJICA8ZW0+bWFrZSBpbnN0YWxsPC9lbT4gY2FuIGJlIHVzZWQgdG8gaW5zdGFsbCB0aGUgbGlicmFyeSBhbmQgdGhlCisJCSAgaW5jbHVkZSBmaWxlcyBpbnRvIHRoZSByZWxldmFudCBkaXJlY3RvcmllcyAod2hpY2ggY2FuIGJlIHNldCB2aWEKKwkJICB0aGUgPGVtPmNvbmZpZ3VyZTwvZW0+IHNjcmlwdCB1c2luZyB0aGUgdmFyaW91cyA8ZW0+LS1wcmVmaXg9PC9lbT4KKwkJICBvcHRpb25zLgorCQk8L3A+CisJICA8L3NlY3Rpb24+CisJPC9zZWN0aW9uPgorCTxzZWN0aW9uPgorCSAgPHRpdGxlPkJ1aWxkaW5nIGZvciBXaW5kb3dzPC90aXRsZT4KKwkgIDxwPgorCQlYTUwtU2VjdXJpdHktQyBoYXMgYmVlbiBidWlsdCBhbmQgdGVzdGVkIG9uIE1pY3Jvc29mdCdzIFZpc3VhbCBDKysgNi4wCisJCWFuZCAyMDA1LzIwMDggY29tcGlsZXJzLiBUaGUgZm9sbG93aW5nIHN1YnNlY3Rpb25zIGJyaWVmbHkgZGVzY3JpYmUgaG93IHRvIAorCQlyZWJ1aWxkIHRoZSBsaWJyYXJ5LCB0b29scyBhbmQgc2FtcGxlcyB1c2luZyB0aGUgc3VwcGxpZWQgd29ya3NwYWNlcy4KKwkJVGhlIHNwZWNpZmljIGluZm9ybWF0aW9uIGlzIGZvciBWQzYsIGJ1dCB0aGUgcHJvY2VzcyBmb3IgMjAwNSBvciAyMDA4CisgICAgICAgIGlzIHNpbWlsYXIuCisJICA8L3A+CisJICA8bm90ZT4KKwkJQXMgb2YgdmVyc2lvbiAwLjIsIHRoZSBsaWJyYXJ5IGNhbiBiZSBidWlsdCB3aXRob3V0IE9wZW5TU0wgb24gYQorCQlXaW5kb3dzIHBsYXRmb3JtLiAgKFRoZSBXaW5DQVBJIHByb3ZpZGVyIHdpbGwgYmUgdXNlZCBpbnN0ZWFkKS4KKwkJU2VlIGJlbG93IGZvciBkZXRhaWxzIG9uIGhvdyB0byBkbyB0aGlzLiAgVGhpcyBpcyBzdGlsbCBleHBlcmltZW50YWwsCisJCWJ1dCBzaG91bGQgd29yay4KKwkgIDwvbm90ZT4KKwkgIDxzZWN0aW9uPgorCQk8dGl0bGU+U2V0dXAgRGlyZWN0b3JpZXM8L3RpdGxlPgorCQk8cD4KKwkJICBUaGUgd29ya3NwYWNlIGFuZCBwcm9qZWN0IGZpbGVzIHByb3ZpZGVkIGRvIG5vdCBtYWtlIGFueSBhc3N1bXB0aW9ucworCQkgIGFib3V0IHdoZXJlIFhlcmNlcywgWGFsYW4gb3IgT3BlblNTTCBtaWdodCBiZSBvbiB0aGUgc3lzdGVtLiAgVGhlCisJCSAgZmlyc3Qgc3RlcCBpcyB0aGVyZWZvcmUgdG8gY29uZmlndXJlIFZDIGRpcmVjdG9yaWVzIHVuZGVyIAorCQkgIFRvb2xzLT5PcHRpb25zIChEaXJlY3RvcmllcykuCisJCTwvcD4KKwkJPHA+CisJCSAgRm9yIHRoZSBJbmNsdWRlIGRpcmVjdG9yaWVzIHlvdSB3aWxsIG5lZWQgc29tZXRoaW5nIHNpbWlsYXIgdG8gbXkKKwkJICBzZXR1cCBiZWxvdyAocmVwbGFjaW5nIEQ6XFBST0dcQ0xJQlwuLiB3aXRoIHRoZSBhcHByb3ByaWF0ZSBwYXRoCisJCSAgb24geW91ciBzeXN0ZW0pLgorCQk8L3A+CisJCTxmaWd1cmUgc3JjPSJpbWFnZXMvdmM2YS5naWYiIGFsdD0iSW5jbHVkZSBEaXJlY3RvcmllcyIvPgorCQk8cD4KKwkJICBTaW1pbGFybHkgdGhlIGxpYnJhcnkgZGlyZWN0b3JpZXMgd2lsbCBuZWVkIHRvIGJlIGFkZGVkIHRvLiAgTm90ZQorCQkgIHRoYXQgaW4gdGhlIGV4YW1wbGUgYmVsb3csIEkgdXNlIGJvdGggRGVidWcgYW5kIFJlbGVhc2UgbGlicmFyaWVzCisJCSAgZm9yIFhhbGFuIGFuZCBYZXJjZXMuICBBcyBwcm92aWRlZCwgdGhlIHdvcmtzcGFjZSBwcm9qZWN0cyBsaW5rIHRvCisJCSAgdGhlIGRlYnVnIGxpYnJhcmllcyBmb3IgWFNFQyBEZWJ1ZyBhbmQgUmVsZWFzZSBmb3IgWFNFQyBSZWxlYXNlLgorCQk8L3A+CisJCQorCQk8ZmlndXJlIHNyYz0iaW1hZ2VzL3ZjNmIuZ2lmIiBhbHQ9IkxpbmsgRGlyZWN0b3JpZXMiLz4KKworCSAgPC9zZWN0aW9uPgorCSAgPHNlY3Rpb24+CisJCTx0aXRsZT5Db25maWd1cmU8L3RpdGxlPgorCQk8cD4KKwkJICBJZiB5b3UgYXJlIHVzaW5nIFhhbGFuIGFuZCBPcGVuU1NMLCBubyBjb25maWd1cmF0aW9uIGlzIHJlcXVpcmVkIHdoZW4KKwkJICBidWlsZGluZyBmcm9tIHRoZSBWaXN1YWwgQysrIHY2LjAgd29ya3NwYWNlLgorCQk8L3A+CisJCTxwPgorCQkgIElmIHlvdSB3aXNoIHRvIGRpc2FibGUgT3BlblNTTCwgeW91IHNob3VsZCBlZGl0IHRoZSBmaWxlIAorCQkgIDxlbT4uLi4vc3JjL2ZyYW1ld29yay9YU0VDVzMyQ29uZmlnLmhwcDwvZW0+IGFuZCBjb21tZW50IG91dCB0aGUgCisJCSAgbGluZSA8Y29kZT4jZGVmaW5lIEhBVkVfT1BFTlNTTCAxPC9jb2RlPi4gIFRoaXMgd2lsbCBlZmZlY3RpdmVseSByZW1vdmUKKwkJICBzdXBwb3J0IGZvciBPcGVuU1NMIGZyb20gdGhlIGxpYnJhcnkgYXMgaXQgaXMgYmVpbmcgY29tcGlsZWQuCisJCTwvcD4KKwkJPHA+CisJCSAgWW91IHdpbGwgYWxzbyBuZWVkIHRvIHJlbW92ZSB0aGUgbGlicmFyeSBtb2R1bGUgPGNvZGU+bGliZWF5MzIubGliPC9jb2RlPgorCQkgIGZyb20gdGhlIGxpbmstPkdlbmVyYWwgc2V0dGluZ3MgaW4gZWFjaCBvZiB0aGUgcHJvamVjdHMgaW4gdGhlCisJCSAgWFNFQyB3b3Jrc3BhY2UuCisJCTwvcD4KKwkJPHA+CisJCSAgVG8gZW5hYmxlIHN1cHBvcnQgZm9yIHRoZSBXaW5kb3dzIENyeXB0byBBUEksIGVkaXQgdGhlIAorCQkgIFhTRUNXMzJDb25maWcuaHBwIGZpbGUgYW5kIHVuY29tbWVudCB0aGUgbGluZSAKKwkJICA8Y29kZT4jZGVmaW5lIEhBVkVfV0lOQ0FQSSAxPC9jb2RlPgorCQk8L3A+CisJCTxwPgorCQkgIFRvIGRpc2FibGUgc3VwcG9ydCBmb3IgWGFsYW4sIGEgc2ltaWxhciBwcm9jZXNzIGlzIGZvbGxvd2VkLiAgRWRpdAorCQkgIHRoZSBYU0VDVzMyQ29uZmlnLmhwcCBmaWxlLCBhbmQgPHN0cm9uZz51bmNvbW1lbnQ8L3N0cm9uZz4gdGhlIFhTRUNfTk9fWEFMQU4KKwkJICBsaW5lLiAgVGhpcyB3aWxsIHJlbW92ZSBhbGwgc3VwcG9ydCBmb3IgWGFsYW4gZnJvbSB0aGUgdmFyaW91cworCQkgIHNvdXJjZSBjb2RlIGZpbGVzLgorCQk8L3A+CisJCTxwPgorCQkgIFdoZW4gY29tcGlsaW5nLCB1c2luZyB0aGUgIi4uLk5vIFhhbGFuIGNvbmZpZ3VyYXRpb25zIGZvciBlYWNoCisJCSAgcHJvamVjdC4gIFRoZXNlIGFyZSB0aGUgc2FtZSBhcyB0aGUgbm9ybWFsIGRlYnVnIG9yIHJlbGVhc2UgYnVpbGRzLAorCQkgIGJ1dCB0aGUgWGFsYW4gbGlicmFyeSBpcyBub3QgbGlua2VkIGluLgorCQk8L3A+CisJICA8L3NlY3Rpb24+CisJICA8c2VjdGlvbj4KKwkJPHRpdGxlPkJ1aWxkIExpYnJhcnkgYW5kIFRvb2xzPC90aXRsZT4KKwkJPHA+CisJCSAgVGhlIG1haW4gd29ya3NwYWNlIChmb3IgVkMgNi4wKSBpcyBmb3VuZCBpbiA6CisJCTwvcD4KKwkJPHA+PGVtPi4uLi9Qcm9qZWN0cy9WQzYuMC94c2VjL3hzZWMuZHN3PC9lbT48L3A+CisJCTxwPgorCQkgIFlvdSBjYW4gbG9hZCB0aGlzIHRvIGJ1aWxkIHRoZSB0b29scyBvciB0aGUgbGlicmFyeSB1c2luZyB0aGUgcmVsZXZhbnQKKwkJICBwcm9qZWN0LiAgKFRoZSBsaWJyYXJ5IGlzIHhzZWNfbGliLikgIFByb2plY3QgZmlsZXMgZm9yIFZDKysgNy4wIGFuZAorICAgICAgICAgIDguMCBhbHNvIGV4aXN0IGluIHRoZSBhcHByb3ByaWF0ZSBQcm9qZWN0IGRpcmVjdG9yaWVzLgorCQk8L3A+CisgICAgICAgIDxub3RlPgorICAgICAgICAgIE5vdGUgdGhhdCBhcyBvZiB2ZXJzaW9uIDEuMy4xLCBYZXJjZXMgMy4wIGlzIHN1cHBvcnRlZC4gIEhvd2V2ZXIKKyAgICAgICAgICB0aGlzIHVzZXMgYW4gdXBkYXRlZCBsaWJyYXJ5IGZpbGUgbmFtZSwgc28gdGhpcyBtdXN0IGJlIG1vZGlmaWVkCisgICAgICAgICAgaW4gPGVtPmFsbDwvZW0+IHRoZSBwcm9qZWN0cyBpbiB0aGUgd29ya3NwYWNlLiAgVGhpcyBjYW4gYmUgc2V0CisgICAgICAgICAgaW4gdGhlIExpbmtlciBvcHRpb24gZm9yIGFsbCB2ZXJzaW9ucyBvZiBWaXN1YWwgQysrLgorICAgICAgICA8L25vdGU+CisJCTxwPgorCQkgIFNhbXBsZXMgY2FuIGJlIGJ1aWx0IHVzaW5nIHRoZSB3b3Jrc3BhY2UgZm91bmQgaW4gOgorCQk8L3A+CisJCTxwPjxlbT4uLi4vc3JjL1Byb2plY3RzL1ZDNi4wL1NhbXBsZXMvU2FtcGxlcy5kc3c8L2VtPjwvcD4KKwkJPHA+QWxsIG91dHB1dCB3aWxsIGJlIHNlbnQgdG88L3A+CisJCTxwPjxlbT4uLi4vQnVpbGQvV2luMzIvVkM2L0RlYnVnPC9lbT48L3A+CisJCTxwPmZvciB0aGUgZGVidWcgYnVpbGRzIGFuZCBSZWxlYXNlIGZvciB0aGUgcmVsZWFzZS48L3A+CisJICA8L3NlY3Rpb24+CisJPC9zZWN0aW9uPgorICA8L2JvZHk+Cis8L2RvY3VtZW50PgorCisKKworCis8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKK0xvY2FsIHZhcmlhYmxlczoKK21vZGU6IHhtbAorc2dtbC1vbWl0dGFnOm5pbAorc2dtbC1zaG9ydHRhZzpuaWwKK3NnbWwtbmFtZWNhc2UtZ2VuZXJhbDpuaWwKK3NnbWwtZ2VuZXJhbC1pbnNlcnQtY2FzZTpsb3dlcgorc2dtbC1taW5pbWl6ZS1hdHRyaWJ1dGVzOm5pbAorc2dtbC1hbHdheXMtcXVvdGUtYXR0cmlidXRlczp0CitzZ21sLWluZGVudC1zdGVwOjIKK3NnbWwtaW5kZW50LWRhdGE6dAorc2dtbC1wYXJlbnQtZG9jdW1lbnQ6bmlsCitzZ21sLWV4cG9zZWQtdGFnczpuaWwKK3NnbWwtbG9jYWwtY2F0YWxvZ3M6bmlsCitzZ21sLWxvY2FsLWVjYXQtZmlsZXM6bmlsCitFbmQ6CistLT4KZGlmZiAtLWdpdCBhL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbnRlbnQveGRvY3MvYy9pbnRlcm9wLnhtbCBiL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbnRlbnQveGRvY3MvYy9pbnRlcm9wLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjJiMDFmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9jL2ludGVyb3AueG1sCkBAIC0wLDAgKzEsNjEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgZG9jdW1lbnQgUFVCTElDICItLy9BUEFDSEUvL0RURCBEb2N1bWVudGF0aW9uIFYxLjEvL0VOIiAiZG9jdW1lbnQtdjExLmR0ZCIKK1sKKyAgPCFFTlRJVFkgJSB4bWxzZWNfZW50aXRpZXMgU1lTVEVNICIuLi94bWxzZWNfZW50aXRpZXMuZW50Ij4gCisgICV4bWxzZWNfZW50aXRpZXM7IAorXT4KKzwhLS0KK0NvcHlyaWdodCAyMDAzLTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisKK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKzxkb2N1bWVudD4gCisgIDxoZWFkZXI+IAorICAgIDx0aXRsZT5DKysgSW50ZXJvcGVyYWJpbGl0eTwvdGl0bGU+IAorICA8L2hlYWRlcj4gCisgIDxib2R5PiAKKyAgICA8c2VjdGlvbj4gCisgICAgICA8dGl0bGU+SW50ZXJvcGVyYWJpbGl0eTwvdGl0bGU+CisgICAgICA8cD4KKyAgICAgICAgVGhlIEMrKyBsaWJyYXJ5IGlzIGRlc2lnbmVkIHRvIGJlIGZ1bGx5IGludGVyb3BlcmFibGUgd2l0aCBhbnkKKyAgICAgICAgb3RoZXIgaW1wbGVtZW50YXRpb24gb2YgdGhlIFczQyBYTUwgRGlnaXRhbCBTaWduYXR1cmUgc3RhbmRhcmQsIHN1Y2gKKyAgICAgICAgYXMgdGhlIEFwYWNoZSBYTUwtU2VjdXJpdHkgSmF2YSBsaWJyYXJ5LgorICAgICAgPC9wPgorICAgIDwvc2VjdGlvbj4KKyAgPC9ib2R5PgorPC9kb2N1bWVudD4KKworCisKKworCisKKworCis8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKK0xvY2FsIHZhcmlhYmxlczoKK21vZGU6IHhtbAorc2dtbC1vbWl0dGFnOm5pbAorc2dtbC1zaG9ydHRhZzpuaWwKK3NnbWwtbmFtZWNhc2UtZ2VuZXJhbDpuaWwKK3NnbWwtZ2VuZXJhbC1pbnNlcnQtY2FzZTpsb3dlcgorc2dtbC1taW5pbWl6ZS1hdHRyaWJ1dGVzOm5pbAorc2dtbC1hbHdheXMtcXVvdGUtYXR0cmlidXRlczp0CitzZ21sLWluZGVudC1zdGVwOjIKK3NnbWwtaW5kZW50LWRhdGE6dAorc2dtbC1wYXJlbnQtZG9jdW1lbnQ6bmlsCitzZ21sLWV4cG9zZWQtdGFnczpuaWwKK3NnbWwtbG9jYWwtY2F0YWxvZ3M6bmlsCitzZ21sLWxvY2FsLWVjYXQtZmlsZXM6bmlsCitFbmQ6CistLT4KZGlmZiAtLWdpdCBhL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbnRlbnQveGRvY3MvYy9wcm9nX2VuYy54bWwgYi9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL2MvcHJvZ19lbmMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1OTRhNzYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL2MvcHJvZ19lbmMueG1sCkBAIC0wLDAgKzEsMzk0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzwhRE9DVFlQRSBkb2N1bWVudCBQVUJMSUMgIi0vL0FQQUNIRS8vRFREIERvY3VtZW50YXRpb24gVjEuMS8vRU4iICJkb2N1bWVudC12MTEuZHRkIj4KKzwhLS0KK0NvcHlyaWdodCAyMDAzLTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisKK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworPGRvY3VtZW50PgorICA8aGVhZGVyPgorICAgIDx0aXRsZT5YTUwgRW5jcnlwdGlvbiBQcm9ncmFtbWluZzwvdGl0bGU+CisgIDwvaGVhZGVyPgorICA8Ym9keT4KKwk8c2VjdGlvbiBpZD0ib3ZlcnZpZXciPgorCSAgPHRpdGxlPk92ZXJ2aWV3PC90aXRsZT4KKwkgIDxwPgorCQlBcyB3aXRoIHNpZ25hdHVyZXMsIHRoZXJlIGFyZSB0d28gbWFpbiBtb2RlcyBvZiBvcGVyYXRpb24gZm9yIHRoZQorCQlsaWJyYXJ5IHdoZW4gcGVyZm9ybWluZyBlbmNyeXB0aW9uIGZ1bmN0aW9ucyAtIEVuY3J5cHRpb24gYW5kCisJCURlY3J5cHRpb24uICBEZWNyeXB0aW9uIGlzIGdlbmVyYWxseSBmYWlybHkgc2ltcGxlLCBhcyB0aGUgbGlicmFyeQorCQl3aWxsIGhhbmRsZSBtb3N0IG9mIHRoZSB3b3JrIGFyb3VuZCBkZS1yZWZlcmVuY2luZyBrZXkgbWF0ZXJpYWwgYW5kCisJCXJlLWNyZWF0aW5nIGEgRE9NIGRvY3VtZW50IChvciByZXR1cm5pbmcgYSBieXRlIHN0cmVhbSkuCisJICA8L3A+CisJICA8cD4KKwkJRW5jcnlwdGlvbiBpcyBmYWlybHkgc2ltcGxlIGlmIHlvdSBhcmUgdHJ5aW5nIHRvIGVuY3J5cHQgYSBET00KKwkJc3RydWN0dXJlLiAgVGhlIGxpYnJhcnkgd2lsbCBlbmNyeXB0IHRoZSBub2RlcyBhbmQgdGhlbiByZXBsYWNlIHRoZW0KKwkJd2l0aCB0aGUgZW5jcnlwdGVkIHZlcnNpb24uICBIb3dldmVyIGlmIHlvdSB3YW50IHRvIGVtYmVkIGFuCisJCWFyYml0cmFyeSBlbmNyeXB0ZWQgb2JqZWN0IGluIHRoZSBkb2N1bWVudCwgeW91IHdpbGwgbmVlZCB0bworCQllbmNyeXB0IGl0IGZpcnN0IGFuZCB0aGVuIHBhc3MgdGhlIGVuY3J5cHRlZCB0ZXh0IGludG8gdGhlIGxpYnJhcnkuCisJICA8L3A+CisJICA8cD4KKwkJVGhlIHJlc3Qgb2YgdGhpcyBwYWdlIGxvb2tzIGF0IHNvbWUgc2ltcGxlIGV4YW1wbGVzIGFyb3VuZAorCQllbmNyeXB0aW5nIGFuZCBkZWNyeXB0aW5nIG5vZGVzIHdpdGhpbiBhbiBYTUwgZG9jdW1lbnQKKwkgIDwvcD4KKwk8L3NlY3Rpb24+CisJPHNlY3Rpb24gaWQ9InNpbXBsZWVuY3J5cHQiPgorCSAgPHRpdGxlPkEgc2ltcGxlIGVuY3J5cHRpb24gZXhhbXBsZTwvdGl0bGU+CisJICA8cD4KKwkJVGhlIG5leHQgZXhhbXBsZSBlbmNyeXB0cyBhbiBlbGVtZW50IChhbmQgYWxsIGl0cyBjaGlsZHJlbikgZnJvbQorCQlhIHByZS1nZW5lcmF0ZWQgZG9jdW1lbnQuICBJdCB1c2VzIGEgcmFuZG9tbHkgZ2VuZXJhdGVkIGtleSB0bworCQloYW5kbGUgdGhlIGJ1bGsgZW5jcnlwdGlvbiwgYW5kIHRoZW4gZW5jcnlwdHMgdGhpcyB1c2luZyBhbiBSU0EKKwkJcHVibGljIGtleS4gIFRoZSByZXN1bHRhbnQgZW5jcnlwdGVkIGtleSBpcyBlbWJlZGRlZCBpbiBhbgorCQkmbHQ7RW5jcnlwdGVkS2V5Jmd0OyBlbGVtZW50LgorCSAgPC9wPgorCSAgPHA+CisJCVRoaXMgZXhhbXBsZSBjYW4gYmUgZm91bmQgaW4gdGhlIHNyYy9zYW1wbGVzIGRpcmVjdG9yeSBhcworCQk8ZW0+c2ltcGxlRW5jcnlwdC5jcHA8L2VtPi4KKwkgIDwvcD4KKwkgIDxzZWN0aW9uPgorCQk8dGl0bGU+U2V0dXA8L3RpdGxlPgorCQk8cD4KKwkJICBUaGUgZmlyc3Qgc3RlcCBpcyBpbml0aWFsaXNhdGlvbiBvZiBYZXJjZXMsIFhhbGFuIChpZiB1c2VkKSBhbmQKKwkJICBYTUwtU2VjdXJpdHkuICBPbmNlIHRoaXMgaXMgZG9uZSwgd2UgY3JlYXRlIGEgZG9jdW1lbnQuICBGb3IgCisJCSAgYnJldml0eSwgdGhlIGRldGFpbHMgb2YgdGhlIGNhbGwgdG8gPGVtPmNyZWF0ZUxldHRlcjwvZW0+IGFyZQorCQkgIG5vdCBpbmNsdWRlZCBvbiB0aGlzIHBhZ2UuICBUaGUgZnVuY3Rpb24gaXMgdmVyeSBzaW1wbGUgLSBpdCBjcmVhdGVzCisJCSAgYW4gWE1MIERPTSBkb2N1bWVudCB0aGF0IHJlcHJlc2VudHMgYSBsZXR0ZXIsIGFuZCBzZXRzIGEgZ2xvYmFsCisJCSAgdmFyaWFibGUgKDxlbT5nX3RvRW5jcnlwdDwvZW0+KSB0aGF0IHdpbGwgYmUgdXNlZCBsYXRlciBvbiB0bworCQkgIGRldGVybWluZSB3aGF0IG5vZGUgdG8gZW5jcnlwdC4KKwkJPC9wPgorCQk8c291cmNlPjwhW0NEQVRBWworaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikgeworCisgICAgdHJ5IHsKKyAgICAgICAgWE1MUGxhdGZvcm1VdGlsczo6SW5pdGlhbGl6ZSgpOworI2lmbmRlZiBYU0VDX05PX1hBTEFOCisgICAgICAgIFhhbGFuVHJhbnNmb3JtZXI6OmluaXRpYWxpemUoKTsKKyNlbmRpZgorICAgICAgICBYU0VDUGxhdGZvcm1VdGlsczo6SW5pdGlhbGlzZSgpOworICAgIH0KKyAgICBjYXRjaCAoY29uc3QgWE1MRXhjZXB0aW9uICZlKSB7CisKKyAgICAgICAgY2VyciA8PCAiRXJyb3IgZHVyaW5nIGluaXRpYWxpc2F0aW9uIG9mIFhlcmNlcyIgPDwgZW5kbDsKKyAgICAgICAgY2VyciA8PCAiRXJyb3IgTWVzc2FnZSA9IDogIgorICAgICAgICAgICAgIDw8IGUuZ2V0TWVzc2FnZSgpIDw8IGVuZGw7CisKKyAgICB9CisKKyAgICAvLyBDcmVhdGUgYSBibGFuayBEb2N1bWVudAorCisgICAgRE9NSW1wbGVtZW50YXRpb24gKmltcGwgPSAKKyAgICAgICAgRE9NSW1wbGVtZW50YXRpb25SZWdpc3RyeTo6Z2V0RE9NSW1wbGVtZW50YXRpb24oTUFLRV9VTklDT0RFX1NUUklORygiQ29yZSIpKTsKKwkKKyAgICAvLyBDcmVhdGUgYSBsZXR0ZXIKKyAgICBET01Eb2N1bWVudCAqZG9jID0gY3JlYXRlTGV0dGVyKGltcGwpOworCQkgIF1dPjwvc291cmNlPgorCSAgPC9zZWN0aW9uPgorCSAgPHNlY3Rpb24+CisJCTx0aXRsZT5TZXR1cCBmb3IgRW5jcnlwdGlvbjwvdGl0bGU+CisJCTxwPgorCQkgIE9uY2UgdGhlIGxpYnJhcnkgaXMgaW5pdGlhbGlzZWQsIHdlIGNyZWF0ZSBhIDxlbT5YRU5DQ2lwaGVyPC9lbT4KKwkJICBvYmplY3QgaW4gYSBtYW5uZXIgc2ltaWxhciB0byB0aGUgY3JlYXRpb24gb2YgYSAKKwkJICA8ZW0+RFNJR1NpZ25hdHVyZTwvZW0+IG9iamVjdC4gIFRoZSA8ZW0+WEVOQ0NpcGhlcjwvZW0+IG9iamVjdAorCQkgIGlzIHVzZWQgdG8gYWN0dWFsbHkgcGVyZm9ybSBlbmNyeXB0aW9uL2RlY3J5cHRpb24gZnVuY3Rpb25zIGFuZAorCQkgIHRvIG1hbmlwdWxhdGUgdGhlIHZhcmlvdXMgZW5jcnlwdGlvbiBvYmplY3RzIHByb3ZpZGVkIGJ5IHRoZQorCQkgIGxpYnJhcnkuCisJCTwvcD4KKwkJPHA+CisJCSAgQXMgd2VsbCBhcyBjcmVhdGluZyB0aGUgPGVtPlhFTkNDaXBoZXI8L2VtPiBvYmplY3QsIHRoZSBzYW1wbGUKKwkJICB1c2VzIHRoZSA8ZW0+UkFORF9ieXRlczwvZW0+IGZ1bmN0aW9uIHdpdGhpbiB0aGUgCisJCSAgPHN0cm9uZz5PcGVuU1NMPC9zdHJvbmc+CisJCSAgbGlicmFyeSB0byBjcmVhdGUgYSByYW5kb20ga2V5IHRoYXQgd2lsbCBiZSB1c2VkIGR1cmluZyB0aGUKKwkJICBlbmNyeXB0aW9uIHByb2Nlc3MuCisJCTwvcD4KKwkJPHNvdXJjZT48IVtDREFUQVsKKyAgICB0cnkgeworCQkKKyAgICAgICAgLyogQ3JlYXRlIHRoZSBjaXBoZXIgb2JqZWN0IHRoYXQgd2UgbmVlZCAqLworCisgICAgICAgIFhTRUNQcm92aWRlciBwcm92OworICAgICAgICBYRU5DQ2lwaGVyICpjaXBoZXI7CisKKyAgICAgICAgY2lwaGVyID0gcHJvdi5uZXdDaXBoZXIoZG9jKTsKKworICAgICAgICAvKiBOb3cgZ2VuZXJhdGUgYSByYW5kb20ga2V5IHRoYXQgd2UgY2FuIHVzZSB0byBlbmNyeXB0IHRoZSBlbGVtZW50CisgICAgICAgICAqCisgICAgICAgICAqIEZpcnN0IGNoZWNrIHRoZSBzdGF0dXMgb2YgdGhlIHJhbmRvbSBnZW5lcmF0aW9uIGluIE9wZW5TU0wKKyAgICAgICAgICovCisKKyAgICAgICAgaWYgKFJBTkRfc3RhdHVzKCkgIT0gMSkgeworCisgICAgICAgICAgICBjZXJyIDw8ICJPcGVuU1NMIHJhbmRvbSBnZW5lcmF0aW9uIG5vdCBwcm9wZXJseSBpbml0aWFsaXNlZCIgPDwgZW5kbDsKKyAgICAgICAgICAgIGV4aXQoMSk7CisKKyAgICAgICAgfQorCisgICAgICAgIHVuc2lnbmVkIGNoYXIga2V5QnVmWzI0XTsKKyAgICAgICAgaWYgKFJBTkRfYnl0ZXMoa2V5QnVmLCAyNCkgPT0gMCkgeworCisgICAgICAgICAgICBjZXJyIDw8ICJFcnJvciBvYnRhaW5pbmcgMjQgYnl0ZXMgb2YgcmFuZG9tIGZyb20gT3BlblNTTCIgPDwgZW5kbDsKKyAgICAgICAgICAgIGV4aXQoMSk7CisKKyAgICAgICAgfQorXV0+PC9zb3VyY2U+CisJICA8L3NlY3Rpb24+CisJICA8c2VjdGlvbj4KKwkJPHRpdGxlPkVuY3J5cHRpb24gb2YgRWxlbWVudDwvdGl0bGU+CisJCTxwPgorCQkgIFRoZSBhY3R1YWwgY29kZSB0byBwZXJmb3JtIGVuY3J5cHRpb24gaXMgdmVyeSBzbWFsbC4gIE1vc3Qgb2YgdGhlCisJCSAgY29tcGxleGl0eSBmb3Igc3RhbmRhcmQgZW5jcnlwdGlvbiBpcyBoaWRkZW4gd2l0aGluIHRoZSBsaWJyYXJ5LgorCQk8L3A+CisJCTxwPgorCQkgIFRoZSBmaXJzdCB0d28gbGluZXMgb2YgY29kZSB3cmFwIHRoZSBnZW5lcmF0ZWQga2V5IGJ5dGVzIGluIGFuCisJCSAgT3BlblNTTCAzREVTIGtleS4gIFRoaXMgaXMgdGhlbiBwYXNzZWQgaW50byB0aGUgPGVtPmNpcGhlcjwvZW0+CisJCSAgb2JqZWN0IHdpdGggYSBjYWxsIHRvIDxlbT5zZXRLZXkoa2V5KTwvZW0+LgorCQk8L3A+CisJCTxwPgorCQkgIFRoZSBsYXN0IGxpbmUgaW4gdGhlIGZvbGxvd2luZyBibG9jayBwZXJmb3JtcyB0aGUgYWN0dWFsIGVuY3J5cHRpb24uCisJCSAgdGhlIGZpcnN0IHBhcmFtZXRlciB0byA8ZW0+Y2lwaGVyLT5lbmNyeXB0RWxlbWVudDwvZW0+IGlzIHRoZSAKKwkJICBub2RlIHRoYXQgd2lsbCBiZSBlbmNyeXB0ZWQuICBUaGUgc2Vjb25kIGlzIHRoZSBhbGdvcml0aG0gdG8gYmUgCisJCSAgdXNlZC4gIFRoaXMgaXMgdXNlZCB0byBjYWxjdWFsdGUgdGhlIEFsZ29yaXRobSBVUkkgdG8gYmUgc2V0IGluCisJCSAgdGhlICZsdDtFbmNyeXB0ZWREYXRhJmd0OyBlbGVtZW50LgorCQk8L3A+CisJCTxwPgorCQkgIFRoaXMgY2FsbCB0byA8ZW0+RW5jcnlwdEVsZW1lbnQ8L2VtPiB3aWxsIGVuY3J5cHQgdGhlIHByb3ZpZGVkCisJCSAgZWxlbWVudCB1c2luZyB0aGUga2V5IHNldCBwcmV2aW91c2x5LiAgVGhlIHBhc3NlZCBpbiBlbGVtZW50IHdpbGwKKwkJICBiZSByZXBsYWNlZCB3aXRoIGFuICZsdDtFbmNyeXB0ZWREYXRhJmd0OyBlbGVtZW50IGNvbnRhaW5pbmcgdGhlCisJCSAgZW5jcnlwdGVkIHZlcnNpb24gb2YgdGhlIGVsZW1lbnQgYW5kIGFsbCBpdHMgY2hpbGRyZW4uCisJCTwvcD4KKwkJPHA+CisJCSAgSWYgbm8gZnVydGhlciBpbmZvcm1hdGlvbiBpcyByZXF1aXJlZCB0byBiZSBlbWJlZGRlZCBpbiB0aGUKKwkJICAmbHQ7RW5jcnlwdGVkRGF0YSZndDsgc3RydWN0dXJlIChzdWNoIGFzICZsdDtLZXlJbmZvJmd0OyBub2RlcyksCisJCSAgdGhlIHVzYWdlIG9mIHRoZSBsaWJyYXJ5IGNvdWxkIGJlIHRlcm1pbmF0ZWQgaGVyZS4KKwkJPC9wPgorCQk8c291cmNlPjwhW0NEQVRBWworICAgICAgICAvKiBXcmFwIHRoaXMgaW4gYSBTeW1tZXRyaWMgM0RFUyBrZXkgKi8KKworICAgICAgICBPcGVuU1NMQ3J5cHRvU3ltbWV0cmljS2V5ICoga2V5ID0gCisgICAgICAgICAgICBuZXcgT3BlblNTTENyeXB0b1N5bW1ldHJpY0tleShYU0VDQ3J5cHRvU3ltbWV0cmljS2V5OjpLRVlfM0RFU18xOTIpOworICAgICAgICBrZXktPnNldEtleShrZXlCdWYsIDI0KTsKKyAgICAgICAgY2lwaGVyLT5zZXRLZXkoa2V5KTsKKworICAgICAgICAvKiBFbmNyeXB0IHRoZSBlbGVtZW50IHRoYXQgbmVlZHMgdG8gYmUgaGlkZGVuICovCisgICAgICAgIGNpcGhlci0+ZW5jcnlwdEVsZW1lbnQoZ190b0VuY3J5cHQsIEVOQ1JZUFRfM0RFU19DQkMpOworXV0+PC9zb3VyY2U+CisJICA8L3NlY3Rpb24+CisJICA8c2VjdGlvbj4KKwkJPHRpdGxlPkNyZWF0ZSBhbiAmbHQ7RW5jcnlwdGVkS2V5Jmd0OzwvdGl0bGU+CisJCTxwPgorCQkgIFRoZSBmb2xsb3dpbmcgc25pcHBldCBvZiBjb2RlIHVzZXMgdGhlIHByZXZpb3VzbHkgY3JlYXRlZAorCQkgIDxlbT5YRU5DQ2lwaGVyPC9lbT4gb2JqZWN0IHRvIGVuY3J5cHQgdGhlIHBzZXVkbyByYW5kb20ga2V5IHVzaW5nCisJCSAgYW4gUlNBIGtleSBsb2FkZWQgZnJvbSBhIFguNTA5IGNlcnRpZmljYXRlLgorCQk8L3A+CisJCTxwPgorCQkgIFRoZSBmaXJzdCB0d28gbGluZXMgbG9hZCB0aGUgY2VydGlmaWNhdGUgaW50byBhbiBPcGVuU1NMQ3J5cHRvWDUwOQorCQkgIHN0cnVjdHVyZSwgd2hpY2ggaXMgdGhlbiB1c2VkIHRvIGV4dHJhY3QgdGhlIHB1YmxpYyBrZXkgZnJvbSB0aGUKKwkJICBjZXJ0aWZpY2F0ZSBhbmQgcGFzcyBpbnRvIHRoZSBjaXBoZXIuCisJCTwvcD4KKwkJPHA+CisJCSAgQSBjYWxsIHRvIDxlbT5zZXRLRUs8L2VtPiBpcyB1c2VkIHJhdGhlciB0aGFuIDxlbT5zZXRLZXk8L2VtPi4KKwkJICBUaGlzIGNhbGwgaXMgdXNlZCB0byB0ZWxsIHRoZSBjaXBoZXIgb2JqZWN0IHRoYXQgdGhlIGtleSBiZWluZyB1c2VkCisJCSAgaXMgYSBLZXkgRW5jcnlwdGlvbiBLZXksIGFuZCBzaG91bGQgYmUgdXNlZCBmb3IgZW5jcnlwdGluZy9kZWNyeXB0aW5nCisJCSAgJmx0O0VuY3J5cHRlZEtleSZndDsgZWxlbWVudHMuCisJCTwvcD4KKwkJPHA+CisJCSAgVGhlIGZpbmFsIGxpbmUgYWN0dWFsbHkgcGVyZm9ybXMgdGhlIGVuY3J5cHRpb24gYW5kIGNyZWF0ZWQKKwkJICB0aGUgJmx0O0VuY3J5cHRlZEtleSZndDsgc3RydWN0dXJlLiAgVGhlIGZpcnN0IHR3byBwYXJhbWV0ZXJzIGRlZmluZQorCQkgIHRoZSBidWZmZXIgYW5kIGl0cyBsZW5ndGggdG8gYmUgZW5jcnlwdGVkLiAgVGhlIGxhc3QgZGVmaW5lcyB0aGUKKwkJICBlbmNyeXB0aW9uIGFsZ29yaXRobSB0byBiZSB1c2VkLgorCQk8L3A+CisJCTxwPgorCQkgIFRoZSA8ZW0+ZW5jcnlwdGVkS2V5PC9lbT4gbWV0aG9kIHJldHVybnMgYW4gPGVtPlhFTkNFbmNyeXB0ZWRLZXk8L2VtPgorCQkgIG9iamVjdC4gIFRoaXMgY29udGFpbnMgdGhlIERPTSBzdHJ1Y3R1cmUgZm9yIHRoZSBvYmplY3QsIGJ1dCBpdCBpcworCQkgIG5vdCB5ZXQgcm9vdGVkIGluIGEgcGFydGljdWxhciBkb2N1bWVudC4gIChBbHRob3VnaCBpdCBpcyBjcmVhdGVkCisJCSAgdXNpbmcgdGhlIDxlbT5ET01Eb2N1bWVudDwvZW0+IHRoYXQgd2FzIHBhc3NlZCBpbiBkdXJpbmcgdGhlIGNhbGwKKwkJICB0byA8ZW0+bmV3Q2lwaGVyPC9lbT4uKQorCQk8L3A+CisJCTxzb3VyY2U+PCFbQ0RBVEFbCisgICAgICAgIC8qIE5vdyBsZXRzIGNyZWF0ZSBhbiBFbmNyeXB0ZWRLZXkgZWxlbWVudCB0byBob2xkIHRoZSBnZW5lcmF0ZWQga2V5ICovCisKKyAgICAgICAgLyogRmlyc3QgbGV0cyBsb2FkIHRoZSBwdWJsaWMga2V5IGluIHRoZSBjZXJ0aWZpY2F0ZSAqLworICAgICAgICBPcGVuU1NMQ3J5cHRvWDUwOSAqIHg1MDkgPSBuZXcgT3BlblNTTENyeXB0b1g1MDkoKTsKKyAgICAgICAgeDUwOS0+bG9hZFg1MDlCYXNlNjRCaW4oY2VydCwgc3RybGVuKGNlcnQpKTsKKwkKKyAgICAgICAgLyogTm93IHNldCB0aGUgS2V5IEVuY3J5cHRpbmcgS2V5IChOT1RFOiBOb3QgdGhlIG5vcm1hbCBrZXkpICovCisgICAgICAgIGNpcGhlci0+c2V0S0VLKHg1MDktPmNsb25lUHVibGljS2V5KCkpOworCQkKKworICAgICAgICAvKiBOb3cgZG8gdGhlIGVuY3J5cHQsIHVzaW5nIFJTQSB3aXRoIFBLQ1MgMS41IHBhZGRpbmcgKi8KKworICAgICAgICBYRU5DRW5jcnlwdGVkS2V5ICogZW5jcnlwdGVkS2V5ID0gCisgICAgICAgICAgICBjaXBoZXItPmVuY3J5cHRLZXkoa2V5QnVmLCAyNCwgRU5DUllQVF9SU0FfMTUpOworXV0+PC9zb3VyY2U+CisJICA8L3NlY3Rpb24+CisJICA8c2VjdGlvbj4KKwkJPHRpdGxlPkFwcGVuZCAmbHQ7RW5jcnlwdGVkS2V5Jmd0OyB0byAmbHQ7RW5jcnlwdGVkRGF0YSZndDs8L3RpdGxlPgorCQk8cD4KKwkJICBUaGUgZmluYWwgcGFydCAob3RoZXIgdGhhbiBvdXRwdXR0aW5nIHRoZSByZXN1bHQpIGlzIHRvIAorCQkgIHJldHJpZXZlIHRoZSAmbHQ7RW5jcnlwdGVkRGF0YSZndDsgZWxlbWVudCB0aGF0IHdhcyBwcmV2aW91c2x5IAorCQkgIGNyZWF0ZWQgYW5kIGFwcGVuZCB0aGUgbmV3bHkgY3JlYXRlZCAmbHQ7RW5jcnlwdGVkS2V5Jmd0OyBhcyBhIAorCQkgICZsdDtLZXlJbmZvJmd0OyBlbGVtZW50LgorCQk8L3A+Cis8c291cmNlPjwhW0NEQVRBWworICAgICAgICAvKgorICAgICAgICAgKiBBZGQgdGhlIGVuY3J5cHRlZCBLZXkgdG8gdGhlIHByZXZpb3VzbHkgY3JlYXRlZCBFbmNyeXB0ZWREYXRhLCB3aGljaAorICAgICAgICAgKiB3ZSBmaXJzdCByZXRyaWV2ZSBmcm9tIHRoZSBjaXBoZXIgb2JqZWN0LiAgVGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlCisgICAgICAgICAqIHRoZSBhcHByb3ByaWF0ZSA8S2V5SW5mbz4gZWxlbWVudCB3aXRoaW4gdGhlIEVuY3J5cHRlZERhdGEKKyAgICAgICAgICovCisKKyAgICAgICAgWEVOQ0VuY3J5cHRlZERhdGEgKiBlbmNyeXB0ZWREYXRhID0gY2lwaGVyLT5nZXRFbmNyeXB0ZWREYXRhKCk7CisgICAgICAgIGVuY3J5cHRlZERhdGEtPmFwcGVuZEVuY3J5cHRlZEtleShlbmNyeXB0ZWRLZXkpOworXV0+PC9zb3VyY2U+CisJICA8L3NlY3Rpb24+CisJICA8cD4KKwkJVGhlIGFib3ZlIGNvZGUgcmVzdWx0cyBpbiBhIGRvY3VtZW50IHRoYXQgY29udGFpbnMgdGhlIG5ld2x5IGNyZWF0ZWQKKwkJJmx0O0VuY3J5cHRlZERhdGEmZ3Q7IGFzIGZvbGxvd3M6CisJICA8L3A+Cis8c291cmNlPjwhW0NEQVRBWworPExldHRlcj4KKzxUb0FkZHJlc3M+VGhlIGFkZHJlc3Mgb2YgdGhlIFJlY2lwaWVudDwvVG9BZGRyZXNzPgorPEZyb21BZGRyZXNzPlRoZSBhZGRyZXNzIG9mIHRoZSBTZW5kZXI8L0Zyb21BZGRyZXNzPgorPHhlbmM6RW5jcnlwdGVkRGF0YSBUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNFbGVtZW50IiAKK3htbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+Cis8eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjdHJpcGxlZGVzLWNiYyIvPgorPGRzOktleUluZm8geG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorPHhlbmM6RW5jcnlwdGVkS2V5IHhtbG5zOnhlbmM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIyI+Cis8eGVuYzpFbmNyeXB0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcnNhLTFfNSIvPgorPHhlbmM6Q2lwaGVyRGF0YT4KKzx4ZW5jOkNpcGhlclZhbHVlPldoOHBBa0RzUWNlSGlrdEd4bmxoWEdmRU1QRE9MQjZGd1dwOFBMZWRGRUIzTDNGNnhIVW9DT2VySXZBN1BndnYKK1ZZelZxTHY0YTV4NVlkbkNxaWtrRkJMRS9mcnVBVWUyWjhaVEVuL0NhUFltcHpVNnFZSEFMQ2w3UTYxTGNicUgKK1I4N1R6cm9CWXNZd2ZIbVhtcktITDlLOXNCNnptdWVjMVRqVnptMmMvWHM9Cis8L3hlbmM6Q2lwaGVyVmFsdWU+Cis8L3hlbmM6Q2lwaGVyRGF0YT4KKzwveGVuYzpFbmNyeXB0ZWRLZXk+Cis8L2RzOktleUluZm8+Cis8eGVuYzpDaXBoZXJEYXRhPgorPHhlbmM6Q2lwaGVyVmFsdWU+WWhxUWNpaUZrTEcxejBJMVRKQzZQZXduencvZ21WdUdxY1R2SHRXcGdhay9iM05RRFJBbHYwN2xKT21CTG9IWAorMjNMUTFDZFBTeHZueWVybEpHd2tZNnhKME01dGpwRHJlZ1RWY0VDWG8vYmQreDhlSXNGMmthYXdvWkdDcUQxSworOTZUMzZGeDlySGVrOWJZL0hwMU9pUT09Cis8L3hlbmM6Q2lwaGVyVmFsdWU+Cis8L3hlbmM6Q2lwaGVyRGF0YT4KKzwveGVuYzpFbmNyeXB0ZWREYXRhPjwvTGV0dGVyPgorXV0+PC9zb3VyY2U+CisJPC9zZWN0aW9uPgorCTxzZWN0aW9uIGlkPSJzaW1wbGVkZWNyeXB0Ij4KKwkgIDx0aXRsZT5BIHNpbXBsZSBkZWNyeXB0aW9uIGV4YW1wbGU8L3RpdGxlPgorCSAgPHA+CisJCVRoZSBmaW5hbCBleGFtcGxlIHNob3dzIGhvdyB0byB1c2UgdGhlIGxpYnJhcnkgdG8gZGVjcnlwdCBhbgorCQlFbmNyeXB0ZWREYXRhIHN0cnVjdHVyZS4gIEEgcHJpdmF0ZSBrZXkgaXMgbG9hZGVkIGFzIGEgS2V5CisJCUVuY3J5cHRpb24gS2V5IChLRUspLCBhbmQgYSBjYWxsIGlzIG1hZGUgdG8gdGhlIGxpYnJhcnkgd2hpY2gKKwkJZGVjcnlwdHMgdGhlIGVuY3J5cHRlZCBkYXRhIGFuZCBpbnNlcnRzIHRoZSByZXN1bHRpbmcgRE9NIG5vZGVzCisJCWJhY2sgaW50byB0aGUgb3JpZ2luYWwgZG9jdW1lbnQuCisJICA8L3A+CisJICA8cD4KKwkJVGhpcyBleGFtcGxlIGNhbiBiZSBmb3VuZCBpbiB0aGUgc3JjL3NhbXBsZXMgZGlyZWN0b3J5IGFzCisJCTxlbT5zaW1wbGVEZWNyeXB0LmNwcDwvZW0+LgorCSAgPC9wPgorCSAgPHNlY3Rpb24+CisJCTx0aXRsZT5TZXR1cDwvdGl0bGU+CisJCTxwPgorCQkgIFRoZSBzZXR1cCBwcm9jZXNzIGlzIG11Y2ggdGhlIHNhbWUgYXMgZm9yIAorCQkgIDxqdW1wIGhyZWY9IiNzaW1wbGVkc2EiPnNpbXBsZVZlcmlmeTwvanVtcD4uICBUaGUgZG9jdW1lbnQKKwkJICAod2hpY2ggaXMgdGhlIGRvY3VtZW50IGNyZWF0ZWQgaW4gc2ltcGxlRW5jcnlwdCkgaXMgcGFyc2VkIHVzaW5nIAorCQkgIFhlcmNlcyBhbmQgYSA8ZW0+RE9NRG9jdW1lbnQ8L2VtPiBpcyByZXR1cm5lZC4KKwkJPC9wPgorCSAgPC9zZWN0aW9uPgorCSAgPHNlY3Rpb24+CisJCTx0aXRsZT5Mb2FkIFByaXZhdGUgS2V5PC90aXRsZT4KKwkJPHA+CisJCSAgVGhlIDxlbT5zaW1wbGVEZWNyeXB0PC9lbT4gdXNlcyBhIHByZWxvYWRlZCBSU0EgcHJpdmF0ZSBrZXkgZm9yCisJCSAgdGhlIGRlY3J5cHRpb24uICBBIGtleSByZXNvbHZlciAoPGVtPlhTRUNLZXlJbmZvUmVzb2x2ZXI8L2VtPikgY2FuIAorCQkgIGFsc28gYmUgdXNlZCB0byBwcm92aWRlIGEgY2FsbGJhY2sgbWVjaGFuaXNtIHN1Y2ggdGhhdCBhcHBsaWNhdGlvbnMgCisJCSAgY2FuIGRldGVybWluZSB0aGUgY29ycmVjdCBrZXkgYXQgcnVuIHRpbWUuCisJCTwvcD4KKwkJPHA+CisJCSAgVGhlIGZvbGxvd2luZyBjb2RlIHVzZXMgYSA8ZW0+WFNFQ1Byb3ZpZGVyPC9lbT4gdG8gb2J0YWluIGEKKwkJICA8ZW0+WEVOQ0NpcGhlcjwvZW0+dXNlcyBPcGVuU1NMIHRvIGxvYWQgdGhlIHByaXZhdGUga2V5IGZyb20gdGhlCisJCSAgPGVtPnNfcHJpdmF0ZUtleTwvZW0+IGNoYXIgYXJyYXkuCisJCTwvcD4KKwkJPHA+CisJCSAgVGhlIGtleSBpcyBsb2FkZWQgdXNpbmcgYSBjYWxsIHRvIDxlbT5zZXRLRUs8L2VtPi4gIFRoaXMgbWV0aG9kCisJCSAgbG9hZHMgdGhlIGtleSBhcyBhIEtleSBFbmNyeXB0aW9uIEtleSAtIHdoaWNoIG1lYW5zIGl0IHdpbGwgYmUgdXNlZAorCQkgIHRvIGRlY3J5cHQgYW4gJmx0O0VuY3J5cHRlZEtleSZndDsgc3RydWN0dXJlLgorCQk8L3A+Cis8c291cmNlPjwhW0NEQVRBWworCisgICAgICAgIFhTRUNQcm92aWRlciBwcm92OworICAgICAgICBYRU5DQ2lwaGVyICpjaXBoZXI7CisKKyAgICAgICAgY2lwaGVyID0gcHJvdi5uZXdDaXBoZXIoZG9jKTsKKworICAgICAgICAvKiBMb2FkIHRoZSBwcml2YXRlIGtleSB2aWEgT3BlblNTTCBhbmQgdGhlbiB3cmFwIGluIGFuIE9wZW5TU0xDcnlwdG8gY29uc3RydWN0ICovCisgICAgICAgIEJJTyAqIGJpb01lbSA9IEJJT19uZXcoQklPX3NfbWVtKCkpOworICAgICAgICBCSU9fcHV0cyhiaW9NZW0sIHNfcHJpdmF0ZUtleSk7CisgICAgICAgIEVWUF9QS0VZICogcGsgPSBQRU1fcmVhZF9iaW9fUHJpdmF0ZUtleShiaW9NZW0sIE5VTEwsIE5VTEwsIE5VTEwpOworCisgICAgICAgIC8qIE5PVEUgOiBGb3Igc2ltcGxpY2l0eSAtIG5vIGVycm9yIGNoZWNraW5nIGhlcmUgKi8KKworICAgICAgICBPcGVuU1NMQ3J5cHRvS2V5UlNBICogayA9IG5ldyBPcGVuU1NMQ3J5cHRvS2V5UlNBKHBrKTsKKyAgICAgICAgY2lwaGVyLT5zZXRLRUsoayk7CisKK11dPjwvc291cmNlPgorCSAgPC9zZWN0aW9uPgorCSAgPHNlY3Rpb24+CisJCTx0aXRsZT5QZXJmb3JtIERlY3J5cHRpb248L3RpdGxlPgorCQk8cD4KKwkJICBOb3cgdGhhdCB0aGUga2V5IGlzIGxvYWRlZCwgdGhlIGFjdHVhbCBkZWNyeXB0aW9uIGlzIHBlcmZvcm1lZAorCQkgIHVzaW5nIHR3byBsaW5lcyBvZiBjb2RlLiAgVGhlIGZpcnN0IGZpbmRzIHRoZSBub2RlIHRvIGJlCisJCSAgZGVjcnlwdGVkLiAgSW4gdGhpcyBjYXNlLCB0aGUgPGVtPmZpbmRYRU5DTm9kZTwvZW0+IGxpYnJhcnkKKwkJICBmdW5jdGlvbiBpcyB1c2VkLgorCQk8L3A+CisJCTxwPgorCQkgIFRoZSBzZWNvbmQgbGluZSwgPGVtPmRlY3J5cHRFbGVtZW50PC9lbT4gYWN0dWFsbHkgcGVyZm9ybXMgdGhlCisJCSAgZGVjcnlwdGlvbi4gIEl0IHBlcmZvcm1zIHRoZSBmb2xsb3dpbmcgc3RlcHMgOgorCQk8L3A+CisJCTx1bD4KKwkJICA8bGk+TG9hZCB0aGUgJmx0O0VuY3J5cHRlZERhdGEmZ3Q7IHN0cnVjdHVyZSBpbnRvIGFuIAorCQkJPGVtPlhFTkNFbmNyeXB0ZWREYXRhPC9lbT4gc3RydWN0dXJlLjwvbGk+CisJCSAgPGxpPmlmIG5vIGRlY3J5cHRpb24ga2V5IGlzIGxvYWRlZCAoaW4gdGhpcyBjYXNlLCBub25lIGlzKSwKKwkJCXNlYXJjaCB0aGUgJmx0O0tleUluZm8mZ3Q7IGxpc3QgZm9yIGFuICZsdDtFbmNyeXB0ZWRLZXkmZ3Q7CisJCQllbGVtZW50IChvbmUgd2lsbCBiZSBmb3VuZCBpbiB0aGlzIGNhc2UpLjwvbGk+CisJCSAgPGxpPlVzZSB0aGUgcHJldmlvdXNseSBsb2FkZWQgS0VLIHRvIGRlY3J5cHQgdGhlIGtleSBmb3VuZCBpbgorCQkJdGhlIHByZXZpb3VzIHN0ZXAuPC9saT4KKwkJICA8bGk+VXNlIHRoZSBkZWNyeXB0ZWQga2V5IHRvIGRlY3J5cHQgdGhlICZsdDtFbmNyeXB0ZWREYXRhJmd0OworCQkJZGF0YTwvbGk+CisJCSAgPGxpPlBhcnNlIHRoZSBkZWNyeXB0ZWQgZGF0YSBpbnRvIERPTSBub2RlczwvbGk+CisJCSAgPGxpPlJlcGxhY2UgdGhlICZsdDtFbmNyeXB0ZWREYXRhJmd0OyB3aXRoIHRoZSBET00gZnJhZ21lbnQKKwkJCXJldHVybmVkIGluIHRoZSBwcmV2aW91cyBzdGVwPC9saT4KKwkJPC91bD4KKzxzb3VyY2U+PCFbQ0RBVEFbCisJCQorICAgICAgICAvKiBGaW5kIHRoZSBFbmNyeXB0ZWREYXRhIG5vZGUgKi8KKyAgICAgICAgRE9NTm9kZSAqIGVuY3J5cHRlZE5vZGUgPSBmaW5kWEVOQ05vZGUoZG9jLCAiRW5jcnlwdGVkRGF0YSIpOworCisgICAgICAgIC8qIERvIHRoZSBkZWNyeXB0ICovCisgICAgICAgIGNpcGhlci0+ZGVjcnlwdEVsZW1lbnQoKERPTUVsZW1lbnQgKikgZW5jcnlwdGVkTm9kZSk7CisKK11dPjwvc291cmNlPgorCSAgPC9zZWN0aW9uPgorCSAgPHA+CisJCVRoZSByZXN1bHQgb2YgdGhlc2Ugc3RlcHMgaXMgdGhlIGRlY3J5cHRlZCBsZXR0ZXIuCisJICA8L3A+Cis8c291cmNlPjwhW0NEQVRBWworPExldHRlcj4KKzxUb0FkZHJlc3M+VGhlIGFkZHJlc3Mgb2YgdGhlIFJlY2lwaWVudDwvVG9BZGRyZXNzPgorPEZyb21BZGRyZXNzPlRoZSBhZGRyZXNzIG9mIHRoZSBTZW5kZXI8L0Zyb21BZGRyZXNzPgorPFRleHQ+CitUbyB3aG9tIGl0IG1heSBjb25jZXJuLCBteSBzZWNyZXQgY3JlZGl0IGNhcmQgbnVtYmVyIGlzIDogCisgIDAxMjMgNDU2NyA4OWFiIGNkZWYKKworLi4uCis8L1RleHQ+PC9MZXR0ZXI+CitdXT48L3NvdXJjZT4KKwk8L3NlY3Rpb24+CisgIDwvYm9keT4KKzwvZG9jdW1lbnQ+CmRpZmYgLS1naXQgYS9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL2MvcHJvZ3JhbW1pbmcueG1sIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9jL3Byb2dyYW1taW5nLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjI0MTM0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9jL3Byb2dyYW1taW5nLnhtbApAQCAtMCwwICsxLDQ5NyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8IURPQ1RZUEUgZG9jdW1lbnQgUFVCTElDICItLy9BUEFDSEUvL0RURCBEb2N1bWVudGF0aW9uIFYxLjEvL0VOIiAiZG9jdW1lbnQtdjExLmR0ZCI+Cis8IS0tCitDb3B5cmlnaHQgMjAwMy0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKzxkb2N1bWVudD4KKyAgPGhlYWRlcj4KKyAgICA8dGl0bGU+WE1MIFNpZ25hdHVyZSBQcm9ncmFtbWluZzwvdGl0bGU+CisgIDwvaGVhZGVyPgorICA8Ym9keT4KKyAgICA8c2VjdGlvbj4KKwkgIDx0aXRsZT5PdmVydmlldzwvdGl0bGU+CisJICA8cD4KKwkJVGhlcmUgYXJlIHR3byBtYWluIHNpZ25hdHVyZSBtb2RlcyBvZiBvcGVyYXRpb24gZm9yIHRoZSBsaWJyYXJpZXMuICAKKwkJU2lnbmluZyBhbmQgdmVyaWZ5aW5nLiAgVmVyaWZ5aW5nIGlzIHRoZSBzaW1wbGVzdCBvcGVyYXRpb24sIGFzIAorCQlpdCAoZ2VuZXJhbGx5KSBvcGVyYXRlcyBvbiBhIERPTSAmbHQ7U2lnbmF0dXJlJmd0OyBzdHJ1Y3R1cmUgdGhhdCAKKwkJaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkLgorCSAgPC9wPgorCSAgPHA+CisJCVNpZ25pbmcgb24gdGhlIG90aGVyIGhhbmQgY2FuIGJlIG1vcmUgZGlmZmljdWx0LCBhcyB0aGVyZSBtYXkgYmUgYQorCQlyZXF1aXJlbWVudCB0byBjcmVhdGUgdGhlIERPTSBzdHJ1Y3R1cmUgbmVjZXNzYXJ5IGZvciB0aGUgc2lnbmF0dXJlCisJCXByaW9yIHRvIHRoZSBhY3R1YWwgc2lnbmluZyBvcGVyYXRpb24uCisJICA8L3A+CisJICA8cD4KKwkJVGhlIHJlc3Qgb2YgdGhpcyBzZWN0aW9uIHByb3ZpZGVzIGEgdmVyeSBoaWdoIGxldmVsIG92ZXJ2aWV3IG9uIGhvdworCQl0byB1c2UgdGhlIGxpYnJhcnkgZm9yIHNpZ25pbmcgYW5kIHZlcmlmaWNhdGFpb24gb2Ygc2lnbmF0dXJlcy4gIAorCSAgPC9wPgorCSAgPG5vdGU+CisJCUZ1bGwgQVBJIGRvY3VtZW50YXRpb24gZm9yIHRoZSBjdXJyZW50IG9mZmljaWFsIHJlbGVhc2UgY2FuIGJlIGZvdW5kIAorCQk8bGluayBocmVmPSJhcGlEb2NzL2luZGV4Lmh0bWwiPmhlcmU8L2xpbms+LiAgVGhlIEFQSSBkb2N1bWVudGF0aW9uIGlzCisJCWFsc28gZ2VuZXJhdGVkIDxqdW1wIGhyZWY9Imh0dHA6Ly9uYWdveWEuYXBhY2hlLm9yZy9+YmxhdXRlbmIveG1sLXNlY3VyaXR5LWMvYXBpRG9jcy8iPm5pZ2h0bHk8L2p1bXA+IGZyb20gdGhlIENWUyByZXBvc2l0b3J5LgorCSAgPC9ub3RlPgorCSAgPHA+CisJCVR3byBzYW1wbGVzIGFyZSBwcm92aWRlZCA6CisJICA8L3A+CisJICA8dWw+CisJCTxsaT48bGluayBocmVmPSJwcm9ncmFtbWluZy5odG1sI3NpbXBsZWhtYWMiPlNpbXBsZSBITUFDIFNpZ25pbmcKKwkJICA8L2xpbms+PC9saT4KKwkJPGxpPjxsaW5rIGhyZWY9InByb2dyYW1taW5nLmh0bWwjc2ltcGxlZHNhIj5TaW1wbGUgRFNBIFZhbGlkYXRpb24KKwkJICA8L2xpbms+PC9saT4KKwkgIDwvdWw+CisJICA8cD4KKwkJVGhlIGNvZGUgc25pcHBldHMgYXJlIHRha2VuIGRpcmVjdGx5IGZyb20gc29tZSBvZiB0aGUgc2FtcGxlIGNvZGUgCisJCXByb3ZpZGVkIGluIHRoZSBzcmMvc2FtcGxlcyBkaXJlY3RvcnkgaW4gdGhlIGRpc3RyaWJ1dGlvbi4gIE1vcmUgCisJCWluZm9ybWF0aW9uIG9uIHRoZSBBUEkgY2FuIGJlIGZvdW5kIGluIHRoZSBBUEkgRG9jdW1lbnRhdGlvbi4KKwkgIDwvcD4KKwk8L3NlY3Rpb24+CisJPHNlY3Rpb24gaWQ9InNpbXBsZWhtYWMiPgorCSAgPHRpdGxlPkEgc2ltcGxlIEhNQUMgU2lnbmluZyBleGFtcGxlPC90aXRsZT4KKwkgIDxwPgorCQlUaGUgZmlyc3QgZXhhbXBsZSBpcyBiYXNlZCBvbiB0aGUgc2ltcGxlSE1BQy5jcHAgY29kZSBpbiBzYW1wbGVzLiAgSXQKKwkJY3JlYXRlcyBhbiBYTUwgbGV0dGVyLCB0aGUgYXBwZW5kcyBhIGR1bW15IHNpZ25hdHVyZSB0byB0aGUgZW5kLCB1c2luZworCQlhbiBlbnZlbG9wZWQtc2lnbmF0dXJlIHRyYW5zZm9ybS4KKwkgIDwvcD4KKwkgIDxzZWN0aW9uPgorCQk8dGl0bGU+U2V0dXA8L3RpdGxlPgorCQk8cD4KKwkJICBUaGUgZm9sbG93aW5nIGNvZGUgc25pcHBldCBpbml0aWFsaXNlcyBYZXJjZXMsIFhhbGFuIGFuZCBYU0VDLgorCQkgIE5vdGUgdGhhdCB0aGUgZW52ZWxvcGVkIHRyYW5zZm9ybSBpcyBpbXBsZW1lbnRlZCB1c2luZyBhbiBYUGF0aAorCQkgIGV4cHJlc3Npb24sIHNvIGl0IGlzIGltcGVyaXRpdmUgdGhlIFhhbGFuIGxpYnJhcmllcyBhcmUgaW5pdGlhbGlzZWQuCisJCTwvcD4KKzxzb3VyY2U+PCFbQ0RBVEFbCitpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisKKyAgICB0cnkgeworICAgICAgICBYTUxQbGF0Zm9ybVV0aWxzOjpJbml0aWFsaXplKCk7CisjaWZuZGVmIFhTRUNfTk9fWEFMQU4KKyAgICAgICAgWGFsYW5UcmFuc2Zvcm1lcjo6aW5pdGlhbGl6ZSgpOworI2VuZGlmCisgICAgICAgIFhTRUNQbGF0Zm9ybVV0aWxzOjpJbml0aWFsaXNlKCk7CisgICAgfQorICAgIGNhdGNoIChjb25zdCBYTUxFeGNlcHRpb24gJmUpIHsKKworICAgICAgICBjZXJyIDw8ICJFcnJvciBkdXJpbmcgaW5pdGlhbGlzYXRpb24gb2YgWGVyY2VzIiA8PCBlbmRsOworICAgICAgICBjZXJyIDw8ICJFcnJvciBNZXNzYWdlID0gOiAiCisJCSAgICAgPDwgZS5nZXRNZXNzYWdlKCkgPDwgZW5kbDsKKworICAgIH0KKworICAgIC8vIENyZWF0ZSBhIGJsYW5rIERvY3VtZW50CisKKyAgICBET01JbXBsZW1lbnRhdGlvbiAqaW1wbCA9IAorICAgICAgICBET01JbXBsZW1lbnRhdGlvblJlZ2lzdHJ5OjpnZXRET01JbXBsZW1lbnRhdGlvbihNQUtFX1VOSUNPREVfU1RSSU5HKCJDb3JlIikpOworCQorICAgIC8vIENyZWF0ZSBhIGxldHRlcgorICAgIERPTURvY3VtZW50ICpkb2MgPSBjcmVhdGVMZXR0ZXIoaW1wbCk7CisgICAgRE9NRWxlbWVudCAqcm9vdEVsZW0gPSBkb2MtPmdldERvY3VtZW50RWxlbWVudCgpOworCitdXT48L3NvdXJjZT4KKwkJPHA+CisJCSAgSW4gdGhlIHNhbXBsZSBhcHBsaWNhdGlvbiwgdGhlIGNhbGwgdG8gPGVtPmNyZWF0ZUxldHRlcihpbXBsKTwvZW0+IAorCQkgIHNpbXBseSBjcmVhdGVzIGEKKwkJICBsZXR0ZXIgRE9NIHN0cnVjdHVyZSB3aXRoIGEgdG8gYW5kIGZyb20gYWRkcmVzcyBhbmQgc29tZSB0ZXh0LgorCQkgIFRoaXMgaXMgZG9uZSB1c2luZyBzdGFuZGFyZCBET00gY2FsbHMgdmlhIFhlcmNlcy4KKwkJPC9wPgorCQk8cD4KKwkJICBPbmNlIHRoZSBzeXN0ZW0gaXMgaW5pdGlhbGlzZWQgYW5kIHRoZSBET00gZG9jdW1lbnQgaXMgY3JlYXRlZCwKKwkJICBhIERTSUdTaWduYXR1cmUgb2JqZWN0IGlzIGNyZWF0ZWQgdmlhIHRoZSA8ZW0+WFNFQ1Byb3ZpZGVyPC9lbT4KKwkJICBpbnRlcmZhY2UgY2xhc3MuICBUaGUgc2lnbmF0dXJlIG9iamVjdCBpcyB0aGVuIHVzZWQgdG8gY3JlYXRlCisJCSAgYSBibGFuayBzaWduYXR1cmUgRE9NIG5vZGUgc3RydWN0dXJlIHdoaWNoIGlzIHRoZW4gaW5zZXJ0ZWQgYXQgCisJCSAgdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQuCisJCTwvcD4KKwkJPHNvdXJjZT48IVtDREFUQVsKKyAgICBYU0VDUHJvdmlkZXIgcHJvdjsKKyAgICBEU0lHU2lnbmF0dXJlICpzaWc7CisgICAgRE9NRWxlbWVudCAqc2lnTm9kZTsKKworICAgIHRyeSB7CisJCQorICAgICAgICAvLyBDcmVhdGUgYSBzaWduYXR1cmUgb2JqZWN0CisKKyAgICAgICAgc2lnID0gcHJvdi5uZXdTaWduYXR1cmUoKTsKKyAgICAgICAgc2lnLT5zZXREU0lHTlNQcmVmaXgoImRzIik7CisKKyAgICAgICAgLy8gVXNlIGl0IHRvIGNyZWF0ZSBhIGJsYW5rIHNpZ25hdHVyZSBET00gc3RydWN0dXJlIGZyb20gdGhlIGRvYworCisgICAgICAgIHNpZ05vZGUgPSBzaWctPmNyZWF0ZUJsYW5rU2lnbmF0dXJlKGRvYywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQU5PTl9DMTROX0NPTSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSUdOQVRVUkVfSE1BQywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVNIX1NIQTEpOworCitdXT48L3NvdXJjZT4KKwkJPHA+CisJCSAgVGhlIGNhbGwgdG8gPGVtPm5ld1NpZ25hdHVyZTwvZW0+IGNyZWF0ZXMgYSBzaWduYXR1cmUKKwkJICBvYmplY3Qgb25seS4gIE5vIERPTSBub2RlcyBhcmUgY3JlYXRlZCBhdCB0aGlzIHBvaW50LgorCQkgIFRoZSBjYWxsIHRvIDxlbT5zZXREU0lHTlNQcmVmaXg8L2VtPiB0ZWxscyB0aGUgWFNFQworCQkgIGxpYnJhcnkgd2hhdCBuYW1lc3BhY2UgcHJlZml4IHRvIHVzZSBmb3IgdGhlIHNpZ25hdHVyZSBvYmplY3Qgd2hlbgorCQkgIGl0IHN0YXJ0cyB0byBjcmVhdGUgRE9NIG5vZGVzIChpbiB0aGlzIGNhc2UgImRzIiB3aWxsIGJlIHVzZWQpLiAgCisJCSAgQnkgZGVmYXVsdCwgdGhlIGxpYnJhcnkgd2lsbCB1c2UgImRzaWciIGFzIHRoZSBwcmVmaXggZm9yIHRoZSBuYW1lIAorCQkgIHNwYWNlIGZvciBEaWdpdGFsIFNpZ25hdHVyZXMuCisJCTwvcD4KKwkJPHA+CisJCSAgRmluYWxseSwgdGhlIGNhbGwgdG8gc2lnLT5jcmVhdGVCbGFua1NpZ25hdHVyZSBzZXRzIHVwIGJvdGggdGhlIAorCQkgIERPTSBzdHJ1Y3R1cmUgYW5kIHRoZSBYU0VDIG9iamVjdHMgZm9yIGEgbmV3IHNpZ25hdHVyZSB3aXRoIG5vCisJCSAgJmx0O1JlZmVyZW5jZSZndDsgZWxlbWVudHMuICBJbiB0aGlzIGNhc2UsIHRoZSBzaWduYXR1cmUgd2lsbCBiZQorCQkgIG1hZGUgdXNpbmcgQ29tbWVudGVkIEMxNG4gY2Fub25pY2FsaXNhdGlvbiwgYW5kIGEgSE1BQy1TSEExCisJCSAgc2lnbmF0dXJlLgorCQk8L3A+CisJCTx3YXJuaW5nPgorCQkgIFRoZSBYU0VDUHJvdmlkZXIgY2xhc3Mgc3RpbGwgIm93bnMiIHRoZSBEU0lHU2lnbmF0dXJlIG9iamVjdC4KKwkJICBUbyBkZWxldGUgdGhlIG9iamVjdCwgdGhlIG9yaWdpbmFsIHByb3ZpZGVyLnJlbGVhc2Uoc2lnKSBjYWxsCisJCSAgc2hvdWxkIGJlIHVzZWQuICBOZXZlciBkZWxldGUgYSBEU0lHU2lnbmF0dXJlIG9iamVjdCBkaXJlY3RseS4KKwkJPC93YXJuaW5nPgorCSAgPC9zZWN0aW9uPgorCSAgPHNlY3Rpb24+CisJCTx0aXRsZT5DcmVhdGUgYSBSZWZlcmVuY2UgYW5kIFNpZ248L3RpdGxlPgorCQk8cD4KKwkJICBOb3cgdGhhdCB0aGUgc2lnbmF0dXJlIG9iamVjdCBpcyBjcmVhdGVkLCB0aGUgc2lnbmF0dXJlIGlzIGluc2VydGVkCisJCSAgaW50byB0aGUgZG9jdW1lbnQsIGFuZCBhIHJlZmVyZW5jZSBpcyBjcmVhdGVkIGFuZCBzZXQgZm9yIGFuCisJCSAgZW52ZWxvcGluZyB0cmFuc2Zvcm0uCisJCTwvcD4KKwkgIDxzb3VyY2U+PCFbQ0RBVEFbCisgICAgICAgIC8vIEluc2VydCB0aGUgc2lnbmF0dXJlIERPTSBub2RlcyBpbnRvIHRoZSBkb2MKKworICAgICAgICByb290RWxlbS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZShNQUtFX1VOSUNPREVfU1RSSU5HKCJcbiIpKSk7CisgICAgICAgIHJvb3RFbGVtLT5hcHBlbmRDaGlsZChzaWdOb2RlKTsKKyAgICAgICAgcm9vdEVsZW0tPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoTUFLRV9VTklDT0RFX1NUUklORygiXG4iKSkpOworCisgICAgICAgIC8vIENyZWF0ZSBhbiBlbnZlbG9wZSByZWZlcmVuY2UgZm9yIHRoZSB0ZXh0IHRvIGJlIHNpZ25lZAorICAgICAgICBEU0lHUmVmZXJlbmNlICogcmVmID0gc2lnLT5jcmVhdGVSZWZlcmVuY2UoIiIpOworICAgICAgICByZWYtPmFwcGVuZEVudmVsb3BlZFNpZ25hdHVyZVRyYW5zZm9ybSgpOworCitdXT48L3NvdXJjZT4KKwkJPHA+CisJCSAgVGhlIDxlbT4iIjwvZW0+IHBhcmFtZXRlciB0byA8ZW0+Y3JlYXRlUmVmZXJlbmNlPC9lbT4gc2V0cyB0aGUKKwkJICBVUkkgYXR0cmlidXRlIGZvciB0aGUgcmVmZXJlbmNlIHRvIGJlICIiIC0gaW5kaWNhdGluZyB0aGUgcm9vdAorCQkgIGVsZW1lbnQgb2YgdGhlIGRvY3VtZW50IGluIHdoaWNoIHRoZSBzaWduYXR1cmUgcmVzaWRlcy4KKwkJICBUaGUgY2FsbCB0byA8ZW0+YXBwZW5kRW52ZWxvcGVkU2lnbmF0dXJlVHJhbnNmb3JtPC9lbT4gYWRkcworCQkgIGEgc3RhbmRhcmQgZW5ldmVsb3BlZC1zaWduYXR1cmUgdHJhbnNmb3JtIHRvIHRoZSBSZWZlcmVuY2Ugbm9kZS4KKwkJPC9wPgorCQk8cD4KKwkJICBUaGUgbWFjcm8gTUFLRV9VTklDT0RFX1NUUklORyBpcyBkZWZpbmVkIHdpdGhpbiB0aGUgbGlicmFyeQorCQkgIGhlYWRlciBmaWxlcyBhbmQgaXMgdXNlZCB0byB0cmFuc2NvZGUgbG9jYWwgY29kZSBwYWdlIHN0cmluZ3MuCisJCTwvcD4KKwkJPG5vdGU+CisJCSAgVGhlcmUgaXMgbm8gbmVlZCB0byBpbnNlcnQgdGhlIHJlZmVyZW5jZSBvYmplY3QgaW50byB0aGUgRE9NIHN0cnVjdHVyZS4KKwkJICBUaGlzIGlzIGRvbmUgYXV0b21hdGljYWxseSBieSB0aGUgPGVtPmNyZWF0ZVJlZmVyZW5jZTwvZW0+IGNhbGwuCisJCTwvbm90ZT4KKwkJPHA+CisJCSAgRmluYWxseSB3ZSBjcmVhdGUgYSBzaWduaW5nIGtleSBhbmQgc2lnbiB0aGUgZG9jdW1lbnQuCisJCTwvcD4KKwkJPHNvdXJjZT48IVtDREFUQVsKKworICAgICAgICAvLyBTZXQgdGhlIEhNQUMgS2V5IHRvIGJlIHRoZSBzdHJpbmcgInNlY3JldCIKKworICAgICAgICBPcGVuU1NMQ3J5cHRvS2V5SE1BQyAqIGhtYWNLZXkgPSBuZXcgT3BlblNTTENyeXB0b0tleUhNQUMoKTsKKyAgICAgICAgaG1hY0tleS0+c2V0S2V5KCh1bnNpZ25lZCBjaGFyICopICJzZWNyZXQiLCBzdHJsZW4oInNlY3JldCIpKTsKKyAgICAgICAgc2lnLT5zZXRTaWduaW5nS2V5KGhtYWNLZXkpOworCisgICAgICAgIC8vIEFkZCBhIEtleUluZm8gZWxlbWVudAorICAgICAgICBzaWctPmFwcGVuZEtleU5hbWUoIlRoZSBzZWNyZXQga2V5IGlzIFwic2VjcmV0XCIiKTsKKworICAgICAgICAvLyBTaWduCisKKyAgICAgICAgc2lnLT5zaWduKCk7CisgICAgfQorCisgICAgY2F0Y2ggKFhTRUNFeGNlcHRpb24gJmUpCisgICAgeworICAgICAgICBjZXJyIDw8ICJBbiBlcnJvciBvY2N1cmVkIGR1cmluZyBhIHNpZ25hdHVyZSBsb2FkXG4gICBNZXNzYWdlOiAiCisgICAgICAgICAgICAgPDwgZS5nZXRNc2coKSA8PCBlbmRsOworICAgICAgICBleGl0KDEpOworICAgICAgICAgICAgICAgIAorICAgIH0KK11dPjwvc291cmNlPgorCQk8cD4KKwkJICBUaGUgZmlyc3QgdHdvIGNvZGUgbGluZXMgY3JlYXRlIGFuIE9wZW5TU0xDcnlwdG9LZXlITUFDIG9iamVjdCwKKwkJICBhbmQgc2V0IHRoZSBrZXkgdmFsdWUgdG8gdGhlIHN0cmluZyAic2VjcmV0Ii4gIFRoZSBPcGVuU1NMLi4uCisJCSAgY2xhc3NlcyBhcmUgdGhlIGludGVyZmFjZSBsYXllciBiZXR3ZWVuIFhTRUMgYW5kIE9wZW5TU0wuICBNb3JlCisJCSAgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIHRoZSBBUEkgZG9jdW1lbnRhdGlvbiwgYnV0IHRoZSBtYWluCisJCSAgcG9pbnQgb2Ygbm90ZSBpcyB0aGF0IHRoZSBYU0VDIGxpYnJhcnkgbmV2ZXIgZGVhbHMgZGlyZWN0bHkgd2l0aAorCQkgIE9wZW5TU0wgLSBpdCB3b3JrcyB2aWEgdGhlIFhTRUNDcnlwdG8gYWJzdHJhY3QgY2xhc3NlcyB3aGljaCBhcmUKKwkJICBpbXBsZW1lbnRlZCBpbiB0aGUgT3BlblNTTENyeXB0byBjb2RlLiAgVGhpcyB3b3VsZCBhbGxvdyBhbm90aGVyCisJCSAgcGVyc29uIHRvIHJlLWltcGxlbWVudCB0aGUgWFNFQ0NyeXB0byBjb2RlIHRvIHVzZSBhbnkgY3J5cHRvZ3JhcGhpYworCQkgIHByb3ZpZGVyIHJlcXVpcmVkLgorCQk8L3A+CisJCTxub3RlPgorCQkgIE9uY2UgdGhlIGtleSBpcyBwYXNzZWQgdG8gdGhlIHNpZ25hdHVyZSBpdCBpcyBvd25lZCBieSB0aGUgc2lnbmF0dXJlLgorCQkgIFRoZSBzaWduYXR1cmUgb2JqZWN0IHdpbGwgZGVsZXRlIHRoZSBrZXkgd2hlbiBpdCBpcyBpdHNlbGYgZGVsZXRlZCwKKwkJICBvciBhIG5ldyBrZXkgaXMgcGFzc2VkIGluLgorCQk8L25vdGU+CisJCTxwPgorCQkgIFRoZSBjYWxsIHRvIDxlbT5zaWctPmFwcGVuZEtleU5hbWUoKTwvZW0+IGlzIHVzZWQgdG8gYXBwZW5kIGEKKwkJICAmbHQ7S2V5TmFtZSZndDsgZWxlbWVudCBpbnRvIHRoZSAmbHQ7S2V5SW5mbyZndDsgYmxvY2suICBUaGUKKwkJICBLZXlJbmZvIGJsb2NrIHdhcyBjcmVhdGVkIGFzIHBhcnQgb2YgdGhpcyBjYWxsLgorCQk8L3A+IAorCQk8cD4KKwkJICBBZnRlciB0aGUgY2FsbCB0byA8ZW0+c2lnLT5zaWduKCk8L2VtPiB0aGUgRE9NIHN0cnVjdHVyZSBoYXMgdGhlCisJCSAgY29ycmVjdCBoYXNoIGFuZCBzaWduYXR1cmUgdmFsdWVzLiAgVGhlIG93bmVyIHByb2dyYW0gY2FuIHdyaXRlLAorCQkgIHN0b3JlIG9yIGZ1cnRoZXIgbWFuaXB1bGF0ZSB0aGUgZG9jdW1lbnQgYXMgcmVxdWlyZWQuICBJZiBhIGRvY3VtZW50CisJCSAgbWFuaXB1bGF0aW9uIG1pZ2h0IGFmZmVjdCB0aGUgc2lnbmF0dXJlIChpbiB0aGlzIGNhc2UgYWxtb3N0IGFueXRoaW5nCisJCSAgd291bGQsIGFzIHdlIGFyZSB1c2luZyBhbiBlbnZlbG9waW5nIHRyYW5zZm9ybSB3aGljaCBlZmZlY3RpdmVseQorCQkgIHNpZ25zIGV2ZXJ5dGhpbmcgdGhhdCBpcyBub3QgcGFydCBvZiB0aGUgc2lnbmF0dXJlKSwgdGhlbiBhIGZ1cnRoZXIKKwkJICBjYWxsIHRvIDxlbT5zaWctPnNpZ24oKTwvZW0+IHdpbGwgcmUtc2lnbiB0aGUgY2hhbmdlcy4KKwkJPC9wPgorCQk8cD4KKwkJICBUaGUgbGFzdCBwYXJ0IG9mIHRoZSBjb2RlIGRvZXMgc29tZSB3b3JrIHRvIG91dHB1dCB0aGUgbmV3IERPTQorCQkgIHN0cnVjdHVyZS4gIFRoZSBvdXRwdXQgc2hvdWxkIGxvb2sgc29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZzoKKwkJPC9wPgorCQk8c291cmNlPjwhW0NEQVRBWworPExldHRlcj4KKzxUb0FkZHJlc3M+VGhlIGFkZHJlc3Mgb2YgdGhlIFJlY2lwaWVudDwvVG9BZGRyZXNzPgorPEZyb21BZGRyZXNzPlRoZSBhZGRyZXNzIG9mIHRoZSBTZW5kZXI8L0Zyb21BZGRyZXNzPgorPFRleHQ+CitUbyB3aG9tIGl0IG1heSBjb25jZXJuCisKKy4uLgorPC9UZXh0PgorPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+Cis8ZHM6U2lnbmVkSW5mbz4KKzxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0KKyJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHMiLz4KKzxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIi8+Cis8ZHM6UmVmZXJlbmNlIFVSST0iIj4KKzxkczpUcmFuc2Zvcm1zPgorPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09CisiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz4KKzwvZHM6VHJhbnNmb3Jtcz4KKzxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPgorPGRzOkRpZ2VzdFZhbHVlPmFza3hTL0EzQmFMQ2pGalovdHRVOWMxMmtBND08L2RzOkRpZ2VzdFZhbHVlPgorPC9kczpSZWZlcmVuY2U+Cis8L2RzOlNpZ25lZEluZm8+Cis8ZHM6U2lnbmF0dXJlVmFsdWU+b1lFZFFZRzFJSHpia1IxVWNKOVE1VnJpUlBzPQorPC9kczpTaWduYXR1cmVWYWx1ZT4KKzxkczpLZXlJbmZvPgorPGRzOktleU5hbWU+VGhlIHNlY3JldCBrZXkgaXMgInNlY3JldCI8L2RzOktleU5hbWU+Cis8L2RzOktleUluZm8+Cis8L2RzOlNpZ25hdHVyZT4KKzwvTGV0dGVyPgorXV0+PC9zb3VyY2U+CisJCTxwPk5vdGUgdGhhdCB0aGUgRGlnZXN0VmFsdWUgYW5kIFNpZ25hdHVyZVZhbHVlIGVsZW1lbnRzIGhhdmUgYmVlbgorCQkgIGZpbGxlZCBpbi4KKwkJPC9wPgorCSAgPC9zZWN0aW9uPgorCTwvc2VjdGlvbj4KKwk8c2VjdGlvbiBpZD0ic2ltcGxlZHNhIj4KKwkgIDx0aXRsZT5BIHNpbXBsZSB2YWxpZGF0aW9uIGV4YW1wbGU8L3RpdGxlPgorCSAgPHA+CisJCVRoZSBzZWNvbmQgZXhhbXBsZSB0YWtlcyBhIHByZS1zaWduZWQgZG9jdW1lbnQgYW5kIGFuIGFzc29jaWF0ZWQKKwkJY2VydGlmaWNhdGUgYW5kIHZlcmlmaWVzIHRoZSBlbWJlZGRlZCBzaWduYXR1cmUuICBUaGUgZG9jdW1lbnQgaW4KKwkJcXVlc3Rpb24gaXMgYSBzaW1wbGUgcHVyY2hhc2Ugb3JkZXIsIGFuZCBjaGFuZ2VzIGFyZSBtYWRlIHRvIHRoZQorCQl2YWx1ZSBvZiB0aGUgb3JkZXIgdG8gZGVtb25zdHJhdGUgYSBzaWduYXR1cmUgZmFpbGluZyB2ZXJpZmljYXRpb24uCisJICA8L3A+CisJICA8c2VjdGlvbj4KKwkJPHRpdGxlPlNldHVwPC90aXRsZT4KKwkJPHA+CisJCSAgQXMgaW4gdGhlIGZpcnN0IGV4YW1wbGUsIEluaXRpYWxpc2F0aW9uIG9mIHRoZSBsaWJyYXJpZXMgaXMKKwkJICBwZXJmb3JtZWQsIGFuZCBYZXJjZXMgaXMgdXNlZCB0byByZWFkIGluIHRoZSBkb2N1bWVudCAod2hpY2ggaW4KKwkJICB0aGlzIGNhc2UgaXMgc3RvcmVkIGluIGEgc3RyaW5nIGluIHRoZSBzb3VyY2UgY29kZSkuCisJCTwvcD4KKwkJPHA+CisJCSAgSW4gb3JkZXIgdG8gYmUgYWJsZSB0byBtb2RpZnkgdGhlIGNvbnRlbnRzIG9mIHRoZSBkb2N1bWVudCBsYXRlcgorCQkgIG9uLCB3ZSBhbHNvIHF1aWNrbHkgZmluZCB0aGUgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHZhbHVlIG9mIHRoZQorCQkgIHB1cmNoYXNlIG9yZGVyLgorCQk8L3A+CisJCTxwPgorCQkgIEZvciB0aGUgc2FrZSBvZiBicmV2aXR5LCB0aGUgY29kZSByZWxhdGluZyB0byBwYXJzaW5nIHRoZSBpbi1tZW1vcnkKKwkJICBkb2N1bWVudCBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIHNuaXBwZXQgYmVsb3cuCisJCTwvcD4KKwkJPHNvdXJjZT48IVtDREFUQVsKK2ludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKworICAgIHRyeSB7CisgICAgICAgIFhNTFBsYXRmb3JtVXRpbHM6OkluaXRpYWxpemUoKTsKKyNpZm5kZWYgWFNFQ19OT19YQUxBTgorICAgICAgICBYYWxhblRyYW5zZm9ybWVyOjppbml0aWFsaXplKCk7CisjZW5kaWYKKyAgICAgICAgWFNFQ1BsYXRmb3JtVXRpbHM6OkluaXRpYWxpc2UoKTsKKyAgICB9CisgICAgY2F0Y2ggKGNvbnN0IFhNTEV4Y2VwdGlvbiAmZSkgeworCisgICAgICAgIGNlcnIgPDwgIkVycm9yIGR1cmluZyBpbml0aWFsaXNhdGlvbiBvZiBYZXJjZXMiIDw8IGVuZGw7CisgICAgICAgIGNlcnIgPDwgIkVycm9yIE1lc3NhZ2UgPSA6ICIKKyAgICAgICAgICAgICA8PCBET01TdHJpbmcoZS5nZXRNZXNzYWdlKCkpIDw8IGVuZGw7CisKKyAgICB9CisKKyAgICAuLi4KKyAgICAKKyAgICBYZXJjZXMgaXMgdXNlZCB0byBwYXJzZSB0aGUgZG9jdW1lbnQgaGVyZQorICAgIAorICAgCisKKyAgICBET01fRG9jdW1lbnQgZG9jID0gcGFyc2VyLT5nZXREb2N1bWVudCgpOworCisgICAgLy8gRmluZCB0aGUgQW1vdW50IG5vZGUKKyAgICBET01Ob2RlICphbXQgPSBkb2MtPmdldERvY3VtZW50RWxlbWVudCgpOworCisgICAgaWYgKGFtdCAhPSBOVUxMKQorICAgICAgICBhbXQgPSBhbXQtPmdldEZpcnN0Q2hpbGQoKTsKKworICAgIHdoaWxlIChhbXQgIT0gTlVMTCAmJiAKKyAgICAgICAgICAgKGFtdC0+Z2V0Tm9kZVR5cGUoKSAhPSBET01Ob2RlOjpFTEVNRU5UX05PREUgfHwgCisgICAgICAgICAgICFzdHJFcXVhbHMoYW10LT5nZXROb2RlTmFtZSgpLCAiQW1vdW50IikpKQorICAgICAgICBhbXQgPSBhbXQtPmdldE5leHRTaWJsaW5nKCk7CisKKyAgICBpZiAoYW10ICE9IE5VTEwpCisgICAgICAgIGFtdCA9IGFtdC0+Z2V0Rmlyc3RDaGlsZCgpOworCisgICAgaWYgKGFtdCA9PSBOVUxMIHx8IGFtdC0+Z2V0Tm9kZVR5cGUoKSAhPSBET01Ob2RlOjpURVhUX05PREUpIHsKKyAgICAgICAgY2VyciA8PCAiRXJyb3IgZmluZGluZyBhbW91bnQgaW4gcHVyY2hhc2Ugb3JkZXIiIDw8IGVuZGw7CisgICAgICAgIGV4aXQgKDEpOworICAgIH0KK11dPjwvc291cmNlPgorCSAgPC9zZWN0aW9uPgorCSAgPHNlY3Rpb24+CisJCTx0aXRsZT5DcmVhdGUgdGhlIFNpZ25hdHVyZSBhbmQgS2V5IG9iamVjdHM8L3RpdGxlPgorCQk8cD4KKwkJICBOb3cgdGhhdCB0aGUgZG9jdW1lbnQgaXMgaW4gbWVtb3J5LCBhbiBYU0VDUHJvdmlkZXIgaXMKKwkJICBjcmVhdGVkIGFuZCB1c2VkIHRvIGNyZWF0ZSBhIG5ldyBEU0lHU2lnbmF0dXJlIG9iamVjdC4gIEluCisJCSAgYWRkaXRpb24sIHRoZSBPcGVuU1NMIGludGVyZmFjZSByb3V0aW5lcyBhcmUgdXNlZCB0bworCQkgIHJlYWQgaW4gYSBjZXJ0aWZpY2F0ZSBhbmQgb2J0YWluIHRoZSBhc3NvY2lhdGVkIHB1YmxpYworCQkgIGtleS4KKwkJPC9wPgorCQk8c291cmNlPjwhW0NEQVRBWworICAgIFhTRUNQcm92aWRlciBwcm92OworCisgICAgRFNJR1NpZ25hdHVyZSAqIHNpZyA9IHByb3YubmV3U2lnbmF0dXJlRnJvbURPTShkb2MpOworCisKKyAgICB0cnkgeworICAgICAgICAvLyBVc2UgdGhlIE9wZW5TU0wgaW50ZXJmYWNlIG9iamVjdHMgdG8gZ2V0IGEgc2lnbmluZyBrZXkKKworICAgICAgICBPcGVuU1NMQ3J5cHRvWDUwOSAqIHg1MDkgPSBuZXcgT3BlblNTTENyeXB0b1g1MDkoKTsKKyAgICAgICAgeDUwOS0+bG9hZFg1MDlCYXNlNjRCaW4oY2VydCwgc3RybGVuKGNlcnQpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgc2lnLT5sb2FkKCk7CitdXT48L3NvdXJjZT4KKwkJPHA+CisJCSAgSW4gdGhpcyBjYXNlLCB0aGUgc2lnbmF0dXJlIGlzIGNyZWF0ZSB3aXRoIHRoZSAKKwkJICA8ZW0+bmV3U2lnbmF0dXJlRnJvbURPTTwvZW0+IG1ldGhvZC4gIFRoaXMgdGVsbHMgdGhlIGxpYnJhcnkgdGhhdAorCQkgIHRoZSBzaWduYXR1cmUgc3RydWN0dXJlIChhbHRob3VnaCBub3QgbmVjZXNzYXJpbHkgYSBzaWduZWQKKwkJICBzdHJ1Y3R1cmUpIGFscmVhZHkgZXhpc3RzIGluIHRoZSBET00gbm9kZXMuICBUaGUgbGlicmFyeSBhdHRlbXB0cworCQkgIHRvIGZpbmQgdGhlICZsdDtTaWduYXR1cmUmZ3Q7IG5vZGUgc28gdGhhdCB0aGUgbG9hZCB3aWxsIHdvcmsuCisJCSAgKFRoZSBsaWJyYXJ5IHdpbGwgdGhyb3cgYW4gWFNFQ0V4Y2VwdGlvbiBpZiBpdCBjYW5ub3QgZmluZCB0aGUKKwkJICBFbGVtZW50LikKKwkJPC9wPgorCQk8cD4KKwkJICBUaGUgbGF0ZXIgY2FsbCB0byA8ZW0+c2lnLSZndDtsb2FkKCk8L2VtPiB0ZWxscyB0aGUgbGlicmFyeSB0bworCQkgIHJlYWQgdGhlIERPTSBzdHJ1Y3R1cmUgYW5kIGNyZWF0ZSB0aGUgYXBwcm9wcmlhdGUgRFNJRyBlbGVtZW50cy4KKwkJPC9wPgorCQk8cD4KKwkJICBJbiB0aGlzIGNhc2UgYW4gT3BlblNTTENyeXB0b1g1MDkgb2JqZWN0IGlzIGFsc28gY3JlYXRlZC4gIEl0IGlzCisJCSAgdXNlZCB0byByZWFkIGluIHRoZSA8ZW0+Y2VydDwvZW0+IHN0cmluZyBhbmQgY29udmVydCB0byBhbiBYNTA5CisJCSAgc3RydWN0dXJlLiAgVGhpcyBjb3VsZCBhbHNvIGJlIGRvbmUgdXNpbmcgc3RhbmRhcmQgY2FsbHMgZGlyZWN0bHkKKwkJICB0byBPcGVuU1NMLCBidXQgdGhpcyBpcyBhIHF1aWNrIHNob3J0Y3V0LgorCQk8L3A+CisJICA8L3NlY3Rpb24+CisJICA8c2VjdGlvbj4KKwkJPHRpdGxlPkZpbmQgYSBrZXk8L3RpdGxlPgorCQk8cD4KKwkJICBBcyB3ZSBhbHJlYWR5IGtub3cgdGhlIGtleSwgdGhlIGZvbGxvd2luZyBjb2RlIHNuaXBwZXQgbG9hZHMgdGhlIAorCQkgIGtleSBkaXJlY3RseSBmcm9tIHRoZSByZWxhdGVkIFg1MDkuICBIb3dldmVyIHByaW9yIHRvIGRvaW5nIHRoaXMsCisJCSAgdGhlIGNvZGUgZGVtb25zdHJhdGVzCisJCSAgdXNpbmcgdGhlIERTSUdLZXlJbmZvIHN0cnVjdHVyZXMgdG8gZmluZCB0aGUga2V5IG5hbWUgdGhhdCB3YXMKKwkJICBlbWJlZGRlZCBpbiB0aGUgY2VydGlmaWNhdGUuICBJbiBhbiBhcHBsaWNhdGlvbiwgdGhpcyBjb3VsZCBiZQorCQkgIHVzZWQgdG8gcmVmZXJlbmNlIHRoZSBjb3JyZWN0IGtleSB0byBiZSBwYXNzZWQgaW4uICAoTWF5YmUgdmlhCisJCSAgYW4gWEtNUyBjYWxsLikKKwkJPC9wPgorCQk8cD4KKwkJICB0aGUgPGVtPnNhZmVCdWZmZXI8L2VtPiB0eXBlIGlzIHVzZWQgZXh0ZW5zaXZlbHkgd2l0aGluIHRoZSBYU0VDCisJCSAgbGlicmFyeSB0byBzYWZlbHkgaGFuZGxlIHZhcmlhYmxlIGxlbmd0aCBzdHJpbmdzIGFuZCByYXcgYnVmZmVycy4KKwkJICBUaGUgY2FsbCB0byA8ZW0+cmF3Q2hhckJ1ZmZlcigpPC9lbT4gc2ltcGx5IHJldHVybnMgYSAoY2hhciAqKQorCQkgIHR5cGUgcG9pbnRlciB0byB0aGUgYnVmZmVyIHdpdGhpbiB0aGUgPGVtPnNhZmVCdWZmZXI8L2VtPgorCQk8L3A+CisJCTxwPgorCQkgIFRoZSBjYWxsIHRvIDxlbT5jbG9uZVB1YmxpY0tleSgpPC9lbT4gcmV0dXJucyBhIGNvcHkgb2YgdGhlCisJCSAgcHVibGljIGtleSBlbWJlZGRlZCBpbiB0aGUgY2VydGlmaWNhdGUuICBJdCBpcyBvd25lZCBieSB0aGUgY2FsbGVyLAorCQkgIHNvIGluIHRoaXMgY2FzZSBpdCBjYW4gc2FmZWx5IGJlIHBhc3NlZCB0byB0aGUgRFNJR1NpZ25hdHVyZSBvYmplY3QKKwkJICB3aGVyZSBpdCB3aWxsIGJlIGRlc3Ryb3llZCB3aGVuIGFub3RoZXIga2V5IGlzIGxvYWRlZCBvciB0aGUgCisJCSAgb2JqZWN0IGlzIHJlbGVhc2VkIGJ5IHRoZSBYU0VDUHJvdmlkZXIuCisJCTwvcD4KKwkJPHNvdXJjZT48IVtDREFUQVsKKyAgICAgICAgRFNJR0tleUluZm9MaXN0ICoga2luZkxpc3QgPSBzaWctPmdldEtleUluZm9MaXN0KCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgIC8vIFNlZSBpZiB3ZSBjYW4gZmluZCBhIEtleSBOYW1lCisgICAgICAgIHNhZmVCdWZmZXIga25hbWU7CisgICAgICAgIERTSUdLZXlJbmZvICoga2luZiA9IGtpbmZMaXN0LT5nZXRGaXJzdEtleUluZm8oKTsKKyAgICAgICAgd2hpbGUgKGtpbmYgIT0gTlVMTCkgeworICAgICAgICAgICAga25hbWUgPSBraW5mLT5nZXRLZXlOYW1lKCk7CisgICAgICAgICAgICBpZiAoa25hbWUuc2JTdHJjbXAoIiIpKSB7CisgICAgICAgICAgICAgICAgY291dCA8PCAiS2V5IE5hbWUgPSAiIAorICAgICAgICAgICAgICAgICAgICAgPDwga25hbWUucmF3Q2hhckJ1ZmZlcigpIDw8IGVuZGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBraW5mID0ga2luZkxpc3QtPmdldE5leHRLZXlJbmZvKCk7CisgICAgICAgIH0KKworICAgICAgICBzaWctPnNldFNpZ25pbmdLZXkoeDUwOS0+Y2xvbmVQdWJsaWNLZXkoKSk7CitdXT48L3NvdXJjZT4KKwkgIDwvc2VjdGlvbj4KKwkgIDxzZWN0aW9uPgorCQk8dGl0bGU+VmFsaWRhdGUgdGhlIHNpZ25hdHVyZTwvdGl0bGU+CisJCTxwPgorCQkgIEZpbmFsbHkgdGhlIHNpZ25hdHVyZSBpcyB2YWxpZGF0ZWQuICBJbiB0aGlzIGNhc2UsIHdlIHZhbGlkYXRlIGl0CisJCSAgdGhyZWUgdGltZXMuICBGaXJzdCB3aXRoIHRoZSBvcmlnaW5hbCBET00gc3RydWN0dXJlLCB0aGVuIHdpdGggdGhlCisJCSAgcHJpY2UgY2hhbmdlZCBhbmQgZmluYWxseSB3aXRoIHRoZSBwcmljZSBzZXQgYmFjayB0byB0aGUgb3JpZ2luYWwKKwkJICB2YWx1ZS4KKwkJPC9wPgorCQk8c291cmNlPjwhW0NEQVRBWworICAgICAgICBjb3V0IDw8ICJBbW91bnQgPSAiIDw8IGFtdCA8PCAiIC0+ICI7CisKKyAgICAgICAgaWYgKHNpZy0+dmVyaWZ5KCkpIHsKKyAgICAgICAgICAgIGNvdXQgPDwgIlNpZ25hdHVyZSBWYWxpZFxuIjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNvdXQgPDwgIkluY29ycmVjdCBTaWduYXR1cmVcbiI7CisgICAgICAgIH0KKworICAgICAgICBhbXQuc2V0Tm9kZVZhbHVlKCIkMC41MCIpOworICAgICAgICAgICAgICAgIAorICAgICAgICBjb3V0IDw8ICJBbW91bnQgPSAiIDw8IGFtdCA8PCAiIC0+ICI7CisKKyAgICAgICAgaWYgKHNpZy0+dmVyaWZ5KCkpIHsKKyAgICAgICAgICAgIGNvdXQgPDwgIlNpZ25hdHVyZSBWYWxpZFxuIjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNvdXQgPDwgIkluY29ycmVjdCBTaWduYXR1cmVcbiI7CisgICAgICAgIH0KKworICAgICAgICBhbXQuc2V0Tm9kZVZhbHVlKCIkMTYuNTAiKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgY291dCA8PCAiQW1vdW50ID0gIiA8PCBhbXQgPDwgIiAtPiAiOworCisgICAgICAgIGlmIChzaWctPnZlcmlmeSgpKSB7CisgICAgICAgICAgICBjb3V0IDw8ICJTaWduYXR1cmUgVmFsaWRcbiI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjb3V0IDw8ICJJbmNvcnJlY3QgU2lnbmF0dXJlXG4iOworICAgICAgICB9CitdXT48L3NvdXJjZT4KKwkJPHA+CisJCSAgV2hlbiBydW4sIHRoZSBwcm9ncmFtIG91dHB1dHMgdGhlIGZvbGxvd2luZzoKKwkJPC9wPgorCQk8c291cmNlPjwhW0NEQVRBWworS2V5IE5hbWUgPSBDPUFVLCBTVD1WaWMsIE89WE1MLVNlY3VyaXR5LUMgUHJvamVjdCwgCitDTj1TYW1wbGVzIERlbW8gQ2VydGlmaWNhdGUKK0Ftb3VudCA9ICQxNi41MCAtPiBTaWduYXR1cmUgVmFsaWQKK0Ftb3VudCA9ICQwLjUwIC0+IEluY29ycmVjdCBTaWduYXR1cmUKK0Ftb3VudCA9ICQxNi41MCAtPiBTaWduYXR1cmUgVmFsaWQKKwkJICBdXT48L3NvdXJjZT4KKwkgIDwvc2VjdGlvbj4KKwk8L3NlY3Rpb24+CisgIDwvYm9keT4KKzwvZG9jdW1lbnQ+CmRpZmYgLS1naXQgYS9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL2MvcmVsZWFzZXMueG1sIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9jL3JlbGVhc2VzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzJiODY2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9jL3JlbGVhc2VzLnhtbApAQCAtMCwwICsxLDQ5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzwhRE9DVFlQRSBkb2N1bWVudCBQVUJMSUMgIi0vL0FQQUNIRS8vRFREIERvY3VtZW50YXRpb24gVjEuMS8vRU4iICJkb2N1bWVudC12MTEuZHRkIj4KKzwhLS0KK0NvcHlyaWdodCAyMDAzLTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisKK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworPGRvY3VtZW50PgorICA8aGVhZGVyPgorCTx0aXRsZT5SZWxlYXNlIEluZm9ybWF0aW9uPC90aXRsZT4KKyAgPC9oZWFkZXI+CisgIDxib2R5PgorCTxzZWN0aW9uPgorCSAgPHRpdGxlPkNoYW5nZXM8L3RpdGxlPgorCSAgPHA+CisJCVBsZWFzZSBzZWUgdGhlIENIQU5HRUxPRyB0aGF0IGFjY29tcGFuaWVzIHRoZSBzb2Z0d2FyZSBmb3IgYSBoaXN0b3J5CisJCW9mIGNoYW5nZXMuCisJICA8L3A+CisJPC9zZWN0aW9uPgorICA8L2JvZHk+Cis8L2RvY3VtZW50PgorPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCitMb2NhbCB2YXJpYWJsZXM6Cittb2RlOiB4bWwKK3NnbWwtb21pdHRhZzpuaWwKK3NnbWwtc2hvcnR0YWc6bmlsCitzZ21sLW5hbWVjYXNlLWdlbmVyYWw6bmlsCitzZ21sLWdlbmVyYWwtaW5zZXJ0LWNhc2U6bG93ZXIKK3NnbWwtbWluaW1pemUtYXR0cmlidXRlczpuaWwKK3NnbWwtYWx3YXlzLXF1b3RlLWF0dHJpYnV0ZXM6dAorc2dtbC1pbmRlbnQtc3RlcDoyCitzZ21sLWluZGVudC1kYXRhOnQKK3NnbWwtcGFyZW50LWRvY3VtZW50Om5pbAorc2dtbC1leHBvc2VkLXRhZ3M6bmlsCitzZ21sLWxvY2FsLWNhdGFsb2dzOm5pbAorc2dtbC1sb2NhbC1lY2F0LWZpbGVzOm5pbAorRW5kOgorLS0+CmRpZmYgLS1naXQgYS9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL2MvdG9vbHMueG1sIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9jL3Rvb2xzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzBkMDExCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9jL3Rvb2xzLnhtbApAQCAtMCwwICsxLDg3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzwhRE9DVFlQRSBkb2N1bWVudCBQVUJMSUMgIi0vL0FQQUNIRS8vRFREIERvY3VtZW50YXRpb24gVjEuMS8vRU4iICJkb2N1bWVudC12MTEuZHRkIj4KKzwhLS0KK0NvcHlyaWdodCAyMDAzLTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisKK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworPGRvY3VtZW50PgorICA8aGVhZGVyPgorICAgIDx0aXRsZT5Ub29sczwvdGl0bGU+CisgIDwvaGVhZGVyPgorICA8Ym9keT4KKwk8c2VjdGlvbj4KKwkgIDx0aXRsZT5Qcm92aWRlZCBUb29sczwvdGl0bGU+CisJICA8cD4KKwkJQSBudW1iZXIgb2YgdmVyeSBzaW1wbGUgInRvb2xzIiAocmVhbGx5IGV4YW1wbGVzKSBhcmUgcHJvdmlkZWQgd2l0aAorCQl0aGUgWE1MIFNlY3VyaXR5IGxpYnJhcnkuICBUaGVzZSBjYW4gYmUgdXNlZCBlaXRoZXIgdG8gcHJvdmlkZSBleGFtcGxlcworCQlvZiBob3cgdG8gdXNlIHRoZSBsaWJyYXJ5IG9yIGFzIHNpbXBsZSB1dGlsaXRpZXMgaW4gdGhlaXIgb3duIHJpZ2h0IGZvcgorCQlwZXJmb3JtaW5nIGNhbm9uaWNhbGlzYXRpb24gYW5kIHNpZ25hdHVyZSBmdW5jdGlvbnMuCisJICA8L3A+CisJICA8cD4KKwkJVGhlIHRvb2xzIGFyZSA6CisJICA8L3A+CisJICA8dWw+CisJCTxsaT48ZW0+YzE0bjwvZW0+IC0gQSB0b29sIHRvIG91dHB1dCBhIENhbm9uaWNhbGlzZWQgdmVyc2lvbiBvZiBhbiAKKwkJICBpbnB1dCBkb2N1bWVudC48L2xpPgorCQk8bGk+PGVtPmNoZWNrc2lnPC9lbT4gLSBBIHRvb2wgdG8gdmFsaWRhdGUgYSBzaWduYXR1cmUgaW4gYW4gWE1MCisJCSAgaW5wdXQgZG9jdW1lbnQ8L2xpPgorCQk8bGk+PGVtPnRlbXBsYXRlc2lnbjwvZW0+IC0gQSB0b29sIHRvIHNpZ24gYW4gWE1MIGRvY3VtZW50IHRoYXQgYWxyZWFkeQorCQkgIGhhcyB0aGUgJmx0O1NpZ25hdHVyZSZndDsgc3RydWN0dXJlIGluc3RhbGxlZCwgYnV0IG5lZWRzIHRoZSByZWZlcmVuY2VzCisJCSAgaGFzaGVkIGFuZCB0aGUgU2lnbmF0dXJlVmFsdWUgc2V0LjwvbGk+CisJCTxsaT48ZW0+dHhmbW91dDwvZW0+IC0gQSB0b29sIHRvIHRha2UgYW4gWE1MIFNpZ25hdHVyZSBhbmQgb3V0cHV0CisJCSAgdGhlIGZ1bGx5IHRyYW5zZm9ybWVkIHJlZmVyZW5jZXMgdG8gc3Rkb3V0IG9yIGEgbm9taW5hdGVkIGZpbGU8L2xpPgorCQk8bGk+PGVtPnRocmVhZFRlc3Q8L2VtPiAtIEEgV2luZG93cyBvbmx5IHByb2dyYW0gdGhhdCBydW5zIHVwIGEgbnVtYmVyCisJCSAgb2YgdGhyZWFkcyB3aGljaCBzaW11bHRhbmVvdXNseSBzaWduIGFuZCB2YWxpZGF0ZSBkb2N1bWVudHMuICBBCisJCSAgbnVtYmVyIG9mIGRvY3VtZW50cyBhcmUgbW9kaWZpZWQgaW4gYmV0d2VlbiAodG8gY2F1c2UgdGhlIHNpZ25hdHVyZQorCQkgIHZhbGlkYXRpb24gdG8gZmFpbCkuPC9saT4KKwkJPGxpPjxlbT5zaWdpbmY8L2VtPiAtIEEgdG9vbCB0byByZWFkIGluIGFuIFhNTCBTaWduYXR1cmUgYW5kIGR1bXAKKwkJICB2YXJpb3VzIGRldGFpbHMgYWJvdXQgdGhlIHNpZ25hdHVyZSBhbmQgcmVmZXJlbmNlcyB0byB0aGUgdGVybWluYWwKKwkJPC9saT4KKwkJPGxpPjxlbT5jaXBoZXI8L2VtPiAtIEEgdG9vbCB0byBlbmNyeXB0IGFuZCBkZWNyeXB0IFhNTCBkb2N1bWVudHMuCisJCTwvbGk+CisJCTxsaT48ZW0+eGtsaWVudDwvZW0+IC0gQSB0b29sIHRvIGdlbmVyYXRlIGFuZCBwcm9jZXNzIFhLTVMgbWVzc2FnZXMuCisgICAgICAgICAgQ2FuIGJlIHVzZWQgdG8gc2VuZCBYS01TIHJlcXVlc3RzIHRvIFhLTVMgc2VydmVycyBvdmVyIFNPQVAgMS4xLzEuMgorICAgICAgICAgIGFuZCBIVE1MIGFuZCB0byBkdW1wIHRoZSByZXN1bHRzIHRvIHNjcmVlbi4KKwkJPC9saT4KKwkgIDwvdWw+CisJICA8cD4KKwkJVGhlIHRvb2xzIGNhbiBhbGwgYmUgcnVuIHdpdGggbm8gY29tbWFuZCBsaW5lIGFyZ3VtZW50cyB0byBzZWUgdGhlaXIKKwkJcGFyYW1ldGVycy4KKwkgIDwvcD4KKwkgIDxwPgorCQlPbmUgZXh0cmEgInRvb2wiIGlzIHByb3ZpZGVkIC0gPGVtPnh0ZXN0PC9lbT4uICBUaGlzIGlzIHJlYWxseSBhIHRlc3RpbmcKKwkJcHJvZ3JhbSB0aGF0IGV4ZXJjaXNlcyB2YXJpb3VzIGNhcGFiaWxpdGllcyBvZiB0aGUgbGlicmFyeSBhbmQgY29tcGFyZXMKKwkJdGhlIHJlc3VsdHMgd2l0aCBrbm93biBnb29kIHJlc3VsdHMuCisJICA8L3A+CisJPC9zZWN0aW9uPgorICA8L2JvZHk+Cis8L2RvY3VtZW50PgorPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCitMb2NhbCB2YXJpYWJsZXM6Cittb2RlOiB4bWwKK3NnbWwtb21pdHRhZzpuaWwKK3NnbWwtc2hvcnR0YWc6bmlsCitzZ21sLW5hbWVjYXNlLWdlbmVyYWw6bmlsCitzZ21sLWdlbmVyYWwtaW5zZXJ0LWNhc2U6bG93ZXIKK3NnbWwtbWluaW1pemUtYXR0cmlidXRlczpuaWwKK3NnbWwtYWx3YXlzLXF1b3RlLWF0dHJpYnV0ZXM6dAorc2dtbC1pbmRlbnQtc3RlcDoyCitzZ21sLWluZGVudC1kYXRhOnQKK3NnbWwtcGFyZW50LWRvY3VtZW50Om5pbAorc2dtbC1leHBvc2VkLXRhZ3M6bmlsCitzZ21sLWxvY2FsLWNhdGFsb2dzOm5pbAorc2dtbC1sb2NhbC1lY2F0LWZpbGVzOm5pbAorRW5kOgorLS0+CmRpZmYgLS1naXQgYS9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL2NvbnRyaWIueG1sIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9jb250cmliLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMWU3NmJjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9jb250cmliLnhtbApAQCAtMCwwICsxLDI3OSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBkb2N1bWVudCBQVUJMSUMgIi0vL0FQQUNIRS8vRFREIERvY3VtZW50YXRpb24gVjEuMS8vRU4iICJkb2N1bWVudC12MTEuZHRkIj4KKzwhLS0KK0NvcHlyaWdodCAyMDAzLTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisKK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKzxkb2N1bWVudD4KKyAgPGhlYWRlcj4KKyAgICA8dGl0bGU+Q29udHJpYnV0aW5nIHRvIFhNTC1TZWN1cml0eTwvdGl0bGU+CisgIDwvaGVhZGVyPgorICA8Ym9keT4KKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgorICAgICAgPHA+IAorCVRoZSBYTUwgU2VjdXJpdHkgUHJvamVjdCBpcyBhbiAKKwk8bGluayBocmVmPSJodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnLyI+T3BlbiBTb3VyY2U8L2xpbms+IAorICAgICAgICB2b2x1bnRlZXIgcHJvamVjdCByZWxlYXNlZAorCXVuZGVyIGEgdmVyeSBvcGVuIGxpY2Vuc2UuIFRoaXMgbWVhbnMgdGhlcmUgYXJlIG1hbnkgd2F5cyB0byBjb250cmlidXRlIHRvIHRoZQorCXByb2plY3QgLSBlaXRoZXIgd2l0aCBkaXJlY3QgcGFydGljaXBhdGlvbiAoY29kaW5nLCBkb2N1bWVudGluZywgYW5zd2VyaW5nCisJcXVlc3Rpb25zLCBwcm9wb3NpbmcgaWRlYXMsIHJlcG9ydGluZyBidWdzLCBzdWdnZXN0aW5nIGJ1Zy1maXhlcywgZXRjLi4pIG9yIGJ5CisJcmVzb3VyY2UgZG9uYXRpb25zIChtb25leSwgdGltZSwgcHVibGljaXR5LCBoYXJkd2FyZSwgc29mdHdhcmUsIGNvbmZlcmVuY2UKKwlwcmVzZW50YXRpb25zLCBzcGVlY2hlcywgZXRjLi4uKS4gCisgICAgICA8L3A+CisgICAgICA8cD4gCisJVG8gYmVnaW4gd2l0aCwgd2Ugc3VnZ2VzdCB5b3UgdG8gc3Vic2NyaWJlIHRvIHRoZQorICAgICAgICA8bGluayBocmVmPSJzaXRlOm1haWwtbGlzdHMiPlhNTC1TZWN1cml0eSBtYWlsaW5nIGxpc3Q8L2xpbms+IChmb2xsb3cgdGhlIGxpbmsgZm9yCisJaW5mb3JtYXRpb24gb24gaG93IHRvIHN1YnNjcmliZSBhbmQgdG8gYWNjZXNzIHRoZSBtYWlsIGxpc3QgYXJjaGl2ZXMpLgorCUxpc3Rlbi1pbiBmb3IgYSB3aGlsZSwgdG8gaGVhciBob3cgb3RoZXJzIG1ha2UgY29udHJpYnV0aW9ucy4gCisgICAgICA8L3A+CisgICAgICA8cD4KKwlZb3UgY2FuIGdldCB5b3VyIGxvY2FsIHdvcmtpbmcgY29weSBvZiB0aGUKKyAgICAgICAgPGxpbmsgaHJlZj0iaHR0cDovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi94bWwvc2VjdXJpdHkvdHJ1bmsvIj5sYXRlc3QgYW5kCisJICBncmVhdGVzdCBjb2RlPC9saW5rPiAod2hpY2ggeW91IGZpbmQgaW4gdGhlIHhtbC9zZWN1cml0eSBtb2R1bGUgaW4gdGhlIFN1YnZlcnNpb24gY29kZQorCXJlcG9zaXRvcnkpLiBSZXZpZXcgdGhlIHRvZG8gbGlzdCwgY2hvb3NlIGEgdGFzayAob3IgcGVyaGFwcyB5b3UgaGF2ZSBub3RpY2VkCisJc29tZXRoaW5nIHRoYXQgbmVlZHMgcGF0Y2hpbmcpLiBNYWtlIHRoZSBjaGFuZ2VzLCBkbyB0aGUgdGVzdGluZywgZ2VuZXJhdGUgYQorCXBhdGNoLCBhbmQgcG9zdCB0byB0aGUgZGV2IG1haWxpbmcgbGlzdC4gKERvIG5vdCB3b3JyeSAtIHRoZSBwcm9jZXNzIGlzIGVhc3kKKwlhbmQgZXhwbGFpbmVkIGJlbG93LikgCisgICAgICA8L3A+CisgICAgPC9zZWN0aW9uPgorICAgIDxzZWN0aW9uPgorICAgICA8dGl0bGU+SGVscCBXYW50ZWQgSGVyZTwvdGl0bGU+CisgICAgICA8cD4gCisJVGhlIHJlc3Qgb2YgdGhpcyBkb2N1bWVudCBpcyBtYWlubHkgYWJvdXQgY29udHJpYnV0aW5nIG5ldyBvcgorICAgICAgICBpbXByb3ZlZCBjb2RlIGFuZC9vciBkb2N1bWVudGF0aW9uLCBidXQgd2Ugd291bGQgYWxzbyBiZSBnbGFkIHRvIGhhdmUgZXh0cmEKKyAgICAgICAgaGVscCBpbiBhbnkgb2YgdGhlIGZvbGxvd2luZyBhcmVhczogCisgICAgICA8L3A+CisgICAgICA8dWw+CisgICAgICAgIDxsaT4KKwkgIEFuc3dlcmluZyBxdWVzdGlvbnMgb24gdGhlIG1haWxpbmcgbGlzdCAtIHRoZXJlCisgICAgICAgICAgaXMgb2Z0ZW4gYSBwcm9ibGVtIG9mIGhhdmluZyB0b28gbWFueSBxdWVzdGlvbmVycyBhbmQgbm90IGVub3VnaCBleHBlcnRzIHRvCisgICAgICAgICAgcmVzcG9uZCB0byBhbGwgdGhlIHF1ZXN0aW9ucy4KKwk8L2xpPgorICAgICAgICA8bGk+CisJICBUZXN0aW5nIHRoZSBwYWNrYWdlIChlc3BlY2lhbGx5IGl0cyBsZXNzLWZyZXF1ZW50bHktdXNlZCBmZWF0dXJlcykgb24KKyAgICAgICAgICB2YXJpb3VzIGNvbmZpZ3VyYXRpb25zIGFuZCByZXBvcnRpbmcgYmFjay4KKwk8L2xpPgorICAgICAgICA8bGk+CisJICBEZWJ1Z2dpbmcgLSBwcm9kdWNpbmcgcmVwcm9kdWNlYWJsZSB0ZXN0IGNhc2VzIGFuZC9vciBmaW5kaW5nCisgICAgICAgICAgY2F1c2VzIG9mIGJ1Z3MuIFNvbWUga25vd24gYnVncyBhcmUgaW5mb3JtYWxseSBsaXN0ZWQgb24gVG8gRG8sIGFuZCBzb21lIGFyZQorICAgICAgICAgIHJlY29yZGVkIGluIEJ1Z3ppbGxhIChzZWUgPGxpbmsgaHJlZj0iI3Byb2NlZHVyZSI+ZXhwbGFuYXRpb24KKwkgICAgYmVsb3c8L2xpbms+KS4KKwk8L2xpPgorICAgICAgPGxpPgorCSAgU3BlY2lmeWluZy9hbmFseXNpbmcvZGVzaWduaW5nIG5ldyBmZWF0dXJlcyAtIGFuZCBiZXlvbmQuIChJZiB5b3UKKwkgIHdpc2ggdG8gZ2V0IGludm9sdmVkIHdpdGggdGhpcywgcGxlYXNlIGpvaW4gdGhlIG1haWxpbmcgbGlzdCwgaW5zdGFsbAorCSAgYW5kIHRyeSBvdXQgeG1sLXNlY3VyaXR5IGFuZCByZWFkIHNvbWUgb2YgdGhlIAorCSAgPGxpbmsgaHJlZj0ic2l0ZTptYWlsLWxpc3RzIj5tYWlsIGFyY2hpdmVzPC9saW5rPi4gWW91IHNob3VsZCBoYXZlIGEgc3Ryb25nCisgICAgICAgICAgImZsdWVuY3kiIGluIFhNTCB0ZWNobm9sb2dpZXMgZXNwZWNpYWxseSBYTUxEU2lnIGFuZCBYTUwgRW5jcnlwdGlvbiwKKwkgIEphdmEgb3IgQysrIGFuZCBhIGJhc2ljIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGlzCisJICBwYWNrYWdlLgorCTwvbGk+CisgICAgICA8L3VsPgorICAgIDwvc2VjdGlvbj4gPGFuY2hvciBpZD0iY3ZzaG93dG8iLz4KKyAgICA8c2VjdGlvbj4KKyAgICA8dGl0bGU+U3VidmVyc2lvbiAoU1ZOKSBVc2FnZSBPdmVydmlldzwvdGl0bGU+CisgICAgICA8cD4KKwlBbiBvdmVydmlldyBvZiBob3cgdG8gdXNlIFN1YnZlcnNpb24gdG8gcGFydGljaXBhdGUgaW4gdGhlIFhNTCBTZWN1cml0eSBkZXZlbG9wbWVudC4KKyAgICAgICAgRG8gbm90IGJlIGFmcmFpZCAtIHlvdSBjYW5ub3QgYWNjaWRlbnRseSBkZXN0cm95IHRoZSBhY3R1YWwgY29kZSByZXBvc2l0b3J5LAorICAgICAgICBiZWNhdXNlIHlvdSBhcmUgd29ya2luZyB3aXRoIGEgbG9jYWwgY29weSBhcyBhbiBhbm9ueW1vdXMgdXNlci4gVGhlcmVmb3JlLCB5b3UKKyAgICAgICAgZG8gbm90IGhhdmUgdGhlIHN5c3RlbSBwZXJtaXNzaW9ucyB0byBjaGFuZ2UgYW55dGhpbmcuIFlvdSBjYW4gb25seSB1cGRhdGUgeW91cgorICAgICAgICBsb2NhbCByZXBvc2l0b3J5IGFuZCBjb21wYXJlIHlvdXIgcmV2aXNpb25zIHdpdGggdGhlIHJlYWwgcmVwb3NpdG9yeS4gCisgICAgICA8L3A+CisgICAgICA8cD4gCisJKEZ1cnRoZXIgZ2VuZXJhbCBTdWJ2ZXJzaW9uIHVzYWdlIGluZm9ybWF0aW9uIGlzIGF0CisgICAgICAgIDxsaW5rIGhyZWY9Imh0dHA6Ly9zdWJ2ZXJzaW9uLnRpZ3Jpcy5vcmcvIj5zdWJ2ZXJzaW9uLnRpZ3Jpcy5vcmc8L2xpbms+IGFuZCB5b3VyIGxvY2FsCisJdXNlciBkb2N1bWVudGF0aW9uLikgCisgICAgICA8L3A+CisgICAgICA8cD4gCisJSGF2ZSBhIGxvb2sgYXQgdGhlIDxsaW5rIGhyZWY9InNpdGU6amF2YS9pbnN0YWxsYXRpb24iPkphdmE8L2xpbms+IG9yCisJPGxpbmsgaHJlZj0ic2l0ZTpjL2luc3RhbGwiPkMrKzwvbGluaz4gaW5zdGFsbGF0aW9uIHBhZ2VzIHRvIHNlZQorCWhvdyB0byBnZXQgYSBsb2NhbCBjb3B5IG9mIHRoZSBzb3VyY2UuCisgICAgICA8L3A+CisgICAgPC9zZWN0aW9uPiA8YW5jaG9yIGlkPSJzc2giLz4KKyAgICA8c2VjdGlvbj4KKyAgICA8dGl0bGU+U3VidmVyc2lvbiBDb21taXR0ZXIgd2l0aCBIVFRQUyBhY2Nlc3M8L3RpdGxlPgorICAgICAgPHA+CisJQWZ0ZXIgYSBkZXZlbG9wZXIgaGFzIGNvbnNpc3RlbnRseSBwcm92aWRlZCBjb250cmlidXRpb25zIChjb2RlLAorICAgICAgICBkb2N1bWVudGF0aW9uIGFuZCBkaXNjdXNzaW9uKSwgdGhlbiB0aGUgcmVzdCBvZiB0aGUgZGV2IGNvbW11bml0eSBtYXkgdm90ZSB0bworICAgICAgICBncmFudCB0aGlzIGRldmVsb3BlciBjb21taXQgYWNjZXNzIHRvIFNWTi4gCisgICAgICA8L3A+CisgICAgICA8cD4KKwlZb3Ugd2lsbCBuZWVkIHNlY3VyZSBhY2Nlc3MgdG8gdGhlIHJlcG9zaXRvcnkgdG8gYmUgYWJsZSB0byBjb21taXQKKyAgICAgICAgcGF0Y2hlcy4gSGVyZSBhcmUgc29tZSByZXNvdXJjZXMgdGhhdCBoZWxwIHRvIGdldCB5b3VyIG1hY2hpbmUgY29uZmlndXJlZCB0bworICAgICAgICB1c2UgdGhlIHJlcG9zaXRvcnkgdmlhIEhUVFBTLiAKKyAgICAgIDwvcD4KKyAgICAgIDx1bD4KKyAgICAgICAgPGxpPjxsaW5rIGhyZWY9Imh0dHA6Ly9hcGFjaGUub3JnL2Rldi92ZXJzaW9uLWNvbnRyb2wuaHRtbCNodHRwcy1zdm4iPkFwYWNoZSBDb21taXR0ZXIgU3VidmVyc2lvbiBBY2Nlc3M8L2xpbms+PC9saT4KKwk8bGk+PGxpbmsgaHJlZj0iaHR0cDovL3N2bmJvb2sucmVkLWJlYW4uY29tLyI+U3VidmVyc2lvbiBib29rPC9saW5rPjwvbGk+CisgICAgICA8L3VsPgorICAgIDwvc2VjdGlvbj4gPGFuY2hvciBpZD0icHJvY2VkdXJlIi8+CisgICAgPHNlY3Rpb24+CisgICAgPHRpdGxlPlByb2NlZHVyZSBmb3IgUmFpc2luZyBEZXZlbG9wbWVudCBJc3N1ZXM8L3RpdGxlPgorICAgICAgPHA+IAorCVRoZXJlIGFyZSB0d28gbWV0aG9kcyBmb3IgZGlzY3Vzc2luZyBkZXZlbG9wbWVudCBhbmQgc3VibWl0dGluZworICAgICAgICBwYXRjaGVzLiBTbyB0aGF0IGV2ZXJ5b25lIGNhbiBiZSBwcm9kdWN0aXZlLCBpdCBpcyBpbXBvcnRhbnQgdG8ga25vdyB3aGljaAorICAgICAgICBtZXRob2QgaXMgYXBwcm9wcmlhdGUgZm9yIGEgY2VydGFpbiBzaXR1YXRpb24gYW5kIGhvdyB0byBnbyBhYm91dCBpdCB3aXRob3V0CisgICAgICAgIGNvbmZ1c2lvbi4gVGhpcyBzZWN0aW9uIGV4cGxhaW5zIHdoZW4gdG8gdXNlIHRoZSA8Y29kZT5kZXZlbG9wZXI8L2NvZGU+CisgICAgICAgIDxsaW5rIGhyZWY9InNpdGU6bWFpbC1saXN0cyI+bWFpbGluZyBsaXN0PC9saW5rPiBvciB0aGUgYnVnIGRhdGFiYXNlLiAKKyAgICAgIDwvcD4KKyAgICAgIDxwPiAKKwlSZXNlYXJjaCB5b3VyIHRvcGljIHRob3JvdWdobHkgYmVmb3JlIGJlZ2lubmluZyB0byBkaXNjdXNzIGEgbmV3CisgICAgICAgIGRldmVsb3BtZW50IGlzc3VlLiBTZWFyY2ggYW5kIGJyb3dzZSB0aHJvdWdoIHRoZSBlbWFpbCBhcmNoaXZlcyAtIHlvdXIgaXNzdWUKKyAgICAgICAgbWF5IGhhdmUgYmVlbiBkaXNjdXNzZWQgYmVmb3JlLiBQcmVwYXJlIHlvdXIgcG9zdCBjbGVhcmx5IGFuZAorCWNvbmNpc2VseS4gCisgICAgICA8L3A+CisgICAgICA8cD4gCisJTW9zdCBpc3N1ZXMgd2lsbCBiZSBkaXNjb3ZlcmVkLCByZXNvbHZlZCwgYW5kIHRoZW4gcGF0Y2hlZCBxdWlja2x5CisgICAgICAgIHZpYSB0aGUgPGNvZGU+ZGV2ZWxvcGVyPC9jb2RlPiBtYWlsaW5nIGxpc3QuIExhcmdlciBpc3N1ZXMsIGFuZCBvbmVzIHRoYXQgYXJlCisgICAgICAgIG5vdCB5ZXQgZnVsbHkgdW5kZXJzdG9vZCBvciBhcmUgaGFyZCB0byBzb2x2ZSwgYXJlIGRlc3RpbmVkIGZvcgorCUJ1Z3ppbGxhLiAKKyAgICAgIDwvcD4KKyAgICAgIDxwPiAKKwlFeHBlcmllbmNlZCBkZXZlbG9wZXJzIHVzZSBCdWd6aWxsYSBkaXJlY3RseSwgYXMgdGhleSBhcmUgdmVyeSBzdXJlCisgICAgICAgIHdoZW4gdGhleSBoYXZlIGZvdW5kIGEgYnVnIGFuZCB3aGVuIG5vdC4gSG93ZXZlciwgbGVzcyBleHBlcmllbmNlZCB1c2VycyBzaG91bGQKKyAgICAgICAgZmlyc3QgZGlzY3VzcyBpdCBvbiB0aGUgdXNlciBvciBkZXZlbG9wZXIgbWFpbGluZyBsaXN0IChhcyBhcHByb3ByaWF0ZSkuCisgICAgICAgIEltcGF0aWVudCBwZW9wbGUgYWx3YXlzIGVudGVyIGV2ZXJ5dGhpbmcgaW50byBCdWd6aWxsYSB3aXRob3V0IGNhcmluZyBpZiBpdCBpcworICAgICAgICBhIGJ1ZyBvZiBvdXIgcGFja2FnZSBvciB0aGVpciBvd24gaW5zdGFsbGF0aW9uL2NvbmZpZ3VyYXRpb24gbWlzdGFrZSAtIHBsZWFzZSBkbworICAgICAgICBub3QgZG8gdGhpcy4gCisgICAgICA8L3A+CisgICAgICA8cD4gCisJQXMgYSBydWxlLW9mLXRodW1iLCBkaXNjdXNzIGFuIGlzc3VlIG9uIHRoZSA8Y29kZT5kZXZlbG9wZXJzPC9jb2RlPgorICAgICAgICBtYWlsaW5nIGxpc3QgZmlyc3QgdG8gd29yayBvdXQgYW55IGRldGFpbHMuIEFmdGVyIGl0IGlzIGNvbmZpcm1lZCB0byBiZQorICAgICAgICB3b3J0aHdoaWxlLCBhbmQgeW91IGFyZSBjbGVhciBhYm91dCBpdCwgdGhlbiBzdWJtaXQgdGhlIGJ1ZyBkZXNjcmlwdGlvbiBvcgorICAgICAgICBwYXRjaCB2aWEgQnVnIFRyYWNraW5nLiAKKyAgICAgIDwvcD4KKyAgICAgIDxwPiAKKwlQZXJoYXBzIHlvdSBkbyBub3QgZ2V0IGFueSBhbnN3ZXIgb24geW91ciBmaXJzdCByZXBseSwgc28ganVzdCBwb3N0CisgICAgICAgIGl0IGFnYWluIHVudGlsIHlvdSBnZXQgb25lLiAoQnV0IHBsZWFzZSBub3QgZXZlcnkgaG91ciAtIGFsbG93IGEgZmV3IGRheXMgZm9yCisgICAgICAgIHRoZSBsaXN0IHRvIGRlYWwgd2l0aCBpdC4pIERvIG5vdCBiZSBpbXBhdGllbnQgLSByZW1lbWJlciB0aGF0IHRoZSB3aG9sZSB3b3JsZAorICAgICAgICBpcyBidXN5LCBub3QganVzdCB5b3UuIEJlYXIgaW4gbWluZCB0aGF0IG90aGVyIGNvdW50cmllcyB3aWxsIGhhdmUgaG9saWRheXMgYXQKKyAgICAgICAgZGlmZmVyZW50IHRpbWVzIHRvIHlvdXIgY291bnRyeSBhbmQgdGhhdCB0aGV5IGFyZSBpbiBkaWZmZXJlbnQgdGltZSB6b25lcy4gWW91CisgICAgICAgIG1pZ2h0IGFsc28gY29uc2lkZXIgcmV3cml0aW5nIHlvdXIgaW5pdGlhbCBwb3N0aW5nIC0gcGVyaGFwcyBpdCB3YXMgbm90IGNsZWFyCisgICAgICAgIGVub3VnaCBhbmQgdGhlIHJlYWRlcnMgZXllcyBnbGF6ZWQgb3Zlci4gCisgICAgICA8L3A+CisgICAgPC9zZWN0aW9uPiA8YW5jaG9yIGlkPSJ0aXBzIi8+CisgICAgPHNlY3Rpb24+CisgICAgIDx0aXRsZT5Db250cmlidXRpb24gTm90ZXMgYW5kIFRpcHM8L3RpdGxlPgorICAgICAgPHA+IAorCVRoaXMgaXMgYSBjb2xsZWN0aW9uIG9mIHRpcHMgZm9yIGNvbnRyaWJ1dGluZyB0byB0aGUgcHJvamVjdCBpbiBhCisgICAgICAgIG1hbm5lciB0aGF0IGlzIHByb2R1Y3RpdmUgZm9yIGFsbCBwYXJ0aWVzLiAKKyAgICAgIDwvcD4KKyAgICAgIDx1bD4KKyAgICAgICAgPGxpPiAKKwkgIEV2ZXJ5IGNvbnRyaWJ1dGlvbiBpcyB3b3J0aHdoaWxlLiBFdmVuIGlmIHRoZSBlbnN1aW5nIGRpc2N1c3Npb24KKyAgICAgICAgICBwcm92ZXMgaXQgdG8gYmUgb2ZmLWJlYW0sIHRoZW4gaXQgbWF5IGpvZyBpZGVhcyBmb3Igb3RoZXIgcGVvcGxlLiAKKwk8L2xpPgorICAgICAgICA8bGk+IAorCSAgVXNlIHNlbnNpYmxlIGFuZCBjb25jaXNlIGVtYWlsIHN1YmplY3QgaGVhZGluZ3MuIFNlYXJjaCBlbmdpbmVzLAorICAgICAgICAgIGFuZCBodW1hbnMgdHJ5aW5nIHRvIGJyb3dzZSBhIHZvbHVtaW5vdXMgbGlzdCwgd2lsbCByZXNwb25kIGZhdm91cmFibHkgdG8gYQorICAgICAgICAgIGRlc2NyaXB0aXZlIHRpdGxlLiAKKwk8L2xpPgorICAgICAgICA8bGk+CisJICBTdGFydCBuZXcgdGhyZWFkcyB3aXRoIGEgbmV3IFN1YmplY3QgZm9yIG5ldyB0b3BpY3MsIHJhdGhlciB0aGFuCisgICAgICAgICAgcmV1c2luZyB0aGUgcHJldmlvdXMgU3ViamVjdCBsaW5lLiAKKwk8L2xpPgorICAgICAgICA8bGk+CisJICBLZWVwIGVhY2ggdG9waWMgZm9jdXNlZC4gSWYgc29tZSBuZXcgdG9waWMgYXJpc2VzIHRoZW4gc3RhcnQgYSBuZXcKKyAgICAgICAgICBkaXNjdXNzaW9uLiBUaGlzIGxlYXZlcyB0aGUgb3JpZ2luYWwgdG9waWMgdG8gY29udGludWUgdW5jbHV0dGVyZWQuIAorCTwvbGk+CisgICAgICAgIDxsaT4KKwkgIFdoZW5ldmVyIHlvdSBkZWNpZGUgdG8gc3RhcnQgYSBuZXcgdG9waWMsIHRoZW4gc3RhcnQgd2l0aCBhIGZyZXNoCisgICAgICAgICAgbmV3IGVtYWlsIG1lc3NhZ2Ugd2luZG93LiBEbyBub3QgdXNlIHRoZSAmcXVvdDtSZXBseSB0byZxdW90OyBidXR0b24sIGJlY2F1c2UKKyAgICAgICAgICB0aHJlYWRlZCBtYWlsLXJlYWRlcnMgZ2V0IGNvbmZ1c2VkICh0aGV5IHV0aWxpc2UgdGhlIDxjb2RlPkluLXJlcGx5LXRvPC9jb2RlPgorICAgICAgICAgIGhlYWRlcikuIElmIHNvLCB0aGVuIHlvdXIgbmV3IHRvcGljIHdpbGwgZ2V0IGxvc3QgaW4gdGhlIHByZXZpb3VzIHRocmVhZCBhbmQgZ28KKyAgICAgICAgICB1bmFuc3dlcmVkLiAKKwk8L2xpPgorICAgICAgICA8bGk+IAorCSAgUHJlcGVuZCB5b3VyIGVtYWlsIHN1YmplY3QgbGluZSB3aXRoIGEgbWFya2VyIHdoZW4gdGhhdCBpcworICAgICAgICAgIGFwcHJvcHJpYXRlLCBlLmcuIDxjb2RlPltQYXRjaF08L2NvZGU+LCA8Y29kZT5bUHJvcG9zYWxdPC9jb2RlPiwKKyAgICAgICAgICA8Y29kZT5bUlRdPC9jb2RlPiAoUmFuZG9tIFRob3VnaHQgd2hpY2ggcXVpY2tseSBibG9zc29tIGludG8gcmVzZWFyY2ggdG9waWNzCisgICAgICAgICAgOi0pLCA8Y29kZT5bU1RBVFVTXTwvY29kZT4gKGRldmVsb3BtZW50IHN0YXR1cyBvZiBhIGNlcnRhaW4KKwkgIGZhY2lsaXR5KS4gCisJPC9saT4KKyAgICAgICAgPGxpPiAKKwkgIFdoZW4gbWFraW5nIGNoYW5nZXMgdG8gWE1MIGRvY3VtZW50YXRpb24sIG9yIGFueSBYTUwgZG9jdW1lbnQgZm9yCisgICAgICAgICAgdGhhdCBtYXR0ZXIsIHVzZSBhIDxsaW5rIGhyZWY9Imh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvY292ZXIvIj52YWxpZGF0aW5nCisJICAgIHBhcnNlcjwvbGluaz4gKG9uZSB0aGF0IGlzIHRyaWVkIGFuZCB0cnVlIGlzCisJICA8bGluayBocmVmPSJodHRwOi8vb3BlbmphZGUuc291cmNlZm9yZ2UubmV0LyI+T3BlblNQL29uc2dtbHM8L2xpbms+KS4gVGhpcworCSAgcHJvY2VkdXJlIHdpbGwgZGV0ZWN0IGVycm9ycyB3aXRob3V0IGhhdmluZyB0byBnbyB0aHJvdWdoIHRoZSB3aG9sZSA8Y29kZT5idWlsZAorCSAgICBkb2NzPC9jb2RlPiBwcm9jZXNzIHRvIGZpbmQgdGhlbS4gRG8gbm90IGV4cGVjdCBGb3JyZXN0IG9yIHRoZSBidWlsZCBzeXN0ZW0gdG8KKwkgIGRldGVjdCB0aGUgdmFsaWRhdGlvbiBlcnJvcnMgZm9yIHlvdSAtIHRoZXkgY2FuIGRvIGl0LCBidXQgdGhhdCBpcyBub3QgdGhlaXIKKwkgIHB1cnBvc2UuIChBbnl3YXksIG5zZ21scyB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzIGFyZSBtb3JlCisJICBpbmZvcm1hdGl2ZS4pIAorCTwvbGk+CisJPGxpPiAKKwkgIFJlbWVtYmVyIHRoYXQgbW9zdCBwZW9wbGUgYXJlIHBhcnRpY2lwYXRpbmcgaW4gZGV2ZWxvcG1lbnQgb24gYQorCSAgdm9sdW50ZWVyIGJhc2lzIGFuZCBpbiB0aGVpciAic3BhcmUgdGltZSIuIFRoZXNlIGVudGh1c2lhc3RzIHdpbGwgYXR0ZW1wdCB0bworCSAgcmVzcG9uZCB0byBpc3N1ZXMuIEl0IG1heSB0YWtlIGEgbGl0dGxlIHdoaWxlIHRvIGdldCB5b3VyIGFuc3dlcnMuIDwvbGk+CisJPGxpPiAKKwkgIFJlc2VhcmNoIHlvdXIgdG9waWMgdGhvcm91Z2hseSBiZWZvcmUgYmVnaW5uaW5nIHRvIGRpc2N1c3MgYSBuZXcKKwkgIGRldmVsb3BtZW50IGlzc3VlLiBTZWFyY2ggYW5kIGJyb3dzZSB0aHJvdWdoIHRoZSBlbWFpbCBhcmNoaXZlcyAtIHlvdXIgaXNzdWUKKwkgIG1heSBoYXZlIGJlZW4gZGlzY3Vzc2VkIGJlZm9yZS4gRG8gbm90IGp1c3QgcGVyY2VpdmUgYSBwcm9ibGVtIGFuZCB0aGVuIHJ1c2gKKwkgIG91dCB3aXRoIGEgcXVlc3Rpb24gLSBpbnN0ZWFkLCBkZWx2ZS4gCisJPC9saT4KKwk8bGk+IAorCSAgVHJ5IHRvIGF0IGxlYXN0IG9mZmVyIGEgcGFydGlhbCBzb2x1dGlvbiBhbmQgbm90IGp1c3QgYSBwcm9ibGVtCisJICBzdGF0ZW1lbnQuIAorCTwvbGk+CisJPGxpPiAKKwkgIFRha2UgdGhlIHRpbWUgdG8gY2xlYXJseSBleHBsYWluIHlvdXIgaXNzdWUgYW5kIHdyaXRlIGEgY29uY2lzZQorCSAgZW1haWwgbWVzc2FnZS4gTGVzcyBjb25mdXNpb24gZmFjaWxpdGF0ZXMgZmFzdCBhbmQgY29tcGxldGUKKwkgIHJlc29sdXRpb24uIAorCTwvbGk+CisJPGxpPiAKKwkgIERvIG5vdCBib3RoZXIgdG8gc2VuZCBhbiBlbWFpbCByZXBseSB0aGF0IHNpbXBseSBzYXlzICJ0aGFua3MiLiBXaGVuCisJICB0aGUgaXNzdWUgaXMgcmVzb2x2ZWQsIHRoYXQgaXMgdGhlIGZpbmlzaCAtIGVuZCBvZiB0aHJlYWQuIFJlZHVjZSBjbHV0dGVyLgorICAgICAgICA8L2xpPgorCTxsaT4gCisJICBZb3Ugd291bGQgdXN1YWxseSBkbyBhbnkgZGV2ZWxvcG1lbnQgd29yayBhZ2FpbnN0IHRoZSBIRUFEIGJyYW5jaCBvZgorCSAgQ1ZTLiAKKwk8L2xpPgorCTxsaT4gCisJICBXaGVuIHNlbmRpbmcgYSBwYXRjaCwgeW91IHVzdWFsbHkgZG8gbm90IG5lZWQgdG8gd29ycnkgYWJvdXQgd2hpY2gKKwkgIENWUyBicmFuY2ggaXQgc2hvdWxkIGJlIGFwcGxpZWQgdG8uIFRoZSBtYWludGFpbmVycyBvZiB0aGUgcmVwb3NpdG9yeSB3aWxsCisJICBkZWNpZGUuIAorCTwvbGk+CisJPGxpPiAKKwkgIElmIGFuIGlzc3VlIHN0YXJ0cyB0byBnZXQgYm9nZ2VkIGRvd24gaW4gbGlzdCBkaXNjdXNzaW9uLCB0aGVuIGl0CisJICBtYXkgYmUgYXBwcm9wcmlhdGUgdG8gZ28gaW50byBwcml2YXRlIG9mZi1saXN0IGRpc2N1c3Npb24gd2l0aCBhIGZldyBpbnRlcmVzdGVkCisJICBvdGhlciBwZW9wbGUuIFNwYXJlIHRoZSBsaXN0IGZyb20gdGhlIGdvcnkgZGV0YWlscy4gUmVwb3J0IGEgc3VtbWFyeSBiYWNrIHRvCisJICB0aGUgbGlzdCB0byBmaW5hbGlzZSB0aGUgdGhyZWFkLiAKKwk8L2xpPgorCTxsaT4gCisJICBCZWNvbWUgZmFtaWxpYXIgd2l0aCB0aGUgbWFpbGluZyBsaXN0cy4gQXMgeW91IGJyb3dzZSBhbmQgc2VhcmNoLAorCSAgeW91IHdpbGwgc2VlIHRoZSB3YXkgb3RoZXIgcGVvcGxlIGRvIHRoaW5ncy4gRm9sbG93IHRoZSBsZWFkaW5nCisJICBleGFtcGxlcy4gCisJPC9saT4KKyAgICAgIDwvdWw+CisgICAgPC9zZWN0aW9uPgorICA8L2JvZHk+Cis8L2RvY3VtZW50PgorPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCitMb2NhbCB2YXJpYWJsZXM6Cittb2RlOiB4bWwKK3NnbWwtb21pdHRhZzpuaWwKK3NnbWwtc2hvcnR0YWc6bmlsCitzZ21sLW5hbWVjYXNlLWdlbmVyYWw6bmlsCitzZ21sLWdlbmVyYWwtaW5zZXJ0LWNhc2U6bG93ZXIKK3NnbWwtbWluaW1pemUtYXR0cmlidXRlczpuaWwKK3NnbWwtYWx3YXlzLXF1b3RlLWF0dHJpYnV0ZXM6dAorc2dtbC1pbmRlbnQtc3RlcDoyCitzZ21sLWluZGVudC1kYXRhOnQKK3NnbWwtcGFyZW50LWRvY3VtZW50Om5pbAorc2dtbC1leHBvc2VkLXRhZ3M6bmlsCitzZ21sLWxvY2FsLWNhdGFsb2dzOm5pbAorc2dtbC1sb2NhbC1lY2F0LWZpbGVzOm5pbAorRW5kOgorLS0+CmRpZmYgLS1naXQgYS9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL2Rvd25sb2FkLnhtbCBiL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbnRlbnQveGRvY3MvZG93bmxvYWQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwZWEyNGUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL2Rvd25sb2FkLnhtbApAQCAtMCwwICsxLDEwNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBkb2N1bWVudCBQVUJMSUMgIi0vL0FQQUNIRS8vRFREIERvY3VtZW50YXRpb24gVjEuMS8vRU4iICJkb2N1bWVudC12MTEuZHRkIgorWworICA8IUVOVElUWSAlIHhtbHNlY19lbnRpdGllcyBTWVNURU0gIi4veG1sc2VjX2VudGl0aWVzLmVudCI+IAorICAleG1sc2VjX2VudGl0aWVzOyAKK10+Cis8IS0tCitDb3B5cmlnaHQgMjAwMy0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKzxkb2N1bWVudD4gCisgIDxoZWFkZXI+IAorICAgIDx0aXRsZT5Eb3dubG9hZGluZyB0aGUgTGlicmFyaWVzPC90aXRsZT4gCisgIDwvaGVhZGVyPiAKKyAgPGJvZHk+IAorCTxzZWN0aW9uPgorCSAgPHRpdGxlPk9idGFpbmluZyB0aGUgTGlicmFyaWVzPC90aXRsZT4KKwkgIDxwPgorCQlTb3VyY2UgYW5kIGJpbmFyeSBkaXN0cmlidXRpb25zIGZvciBib3RoIHRoZSBKYXZhIGFuZCBDKysgbGlicmFyaWVzCisJCWFyZSBhdmFpbGFibGUgZnJvbSBmcm9tIHRoZSAKKwkJPGp1bXAgaHJlZj0iaHR0cDovL3NhbnR1YXJpby5hcGFjaGUub3JnL2Rpc3QvIj4KKwkJICBwcm9qZWN0IHNpdGU8L2p1bXA+IG9ubHkuICBDdXJyZW50CisJCWRpc3RyaWJ1dGlvbnMgYXJlIDxlbT5ub3Q8L2VtPiBhdmFpbGFibGUgZnJvbSB0aGUgbWlycm9ycy4KKwkgIDwvcD4KKwk8L3NlY3Rpb24+CisgICAgPHNlY3Rpb24+IAorICAgICAgPHRpdGxlPlZhbGlkYXRpbmcgRGlzdHJpYnV0aW9uIFNpZ25hdHVyZXM8L3RpdGxlPgorICAgICAgPHA+CisJCUFsbCBkaXN0cmlidXRpb25zIGFyZSBwcm92aWRlZCB3aXRoIHNpZ25hdHVyZSA8ZW0+LmFzYzwvZW0+IGZpbGVzLgorCQlUaGVzZSBjb250YWluIFBHUCBzaWduYXR1cmVzIGZvciB0aGUgcmVsYXRlZCBkaXN0cmlidXRpb24uCisJCVlvdSBzaG91bGQgdmFsaWRhdGUgdGhlc2UgdXNpbmcgdGhlIGtleXMgZm91bmQgaW4gdGhlCisJCTxqdW1wIGhyZWY9Imh0dHA6Ly9zYW50dWFyaW8uYXBhY2hlLm9yZy9kaXN0L0tFWVMiPgorCQkgIGtleSBmaWxlPC9qdW1wPiBkb3dubG9hZGVkIGZyb20gdGhlIEFwYWNoZSBzaXRlLgorCSAgPC9wPgorCSAgPHAvPgorPCEtLQorCSAgVGhpcyBpcyBub3QgdmFsaWQgaWYgdGhlIG1pcnJvciBpcyBub3QgYXZhaWxhYmxlCisJICA8d2FybmluZz4KKwkJWW91IHNob3VsZCBhbHdheXMgdXNlIGEga2V5IGZpbGUgZG93bmxvYWRlZCBmcm9tIHRoZSBBcGFjaGUgc2l0ZQorCQlkaXJlY3RseSByYXRoZXIgdGhhbiBmcm9tIGEgbWlycm9yLgorCSAgPC93YXJuaW5nPgorLS0+CisJICA8cD4KKwkJVmVyaWZpY2F0aW9uIGNhbiBiZSBwZXJmb3JtZWQgdXNpbmcgOgorCSAgPC9wPgorCSAgPHNvdXJjZT4KKyUgcGdwayAtYSBLRVlTCislIHBncHYgeG1sLXNlY3VyaXR5LWJpbi0xXzRfMy56aXAuYXNjCisgIDxlbT5vcjwvZW0+CislIHBncCAta2EgS0VZUworJSBwZ3AgeG1sLXNlY3VyaXR5LWJpbi0xXzRfMy56aXAuYXNjCisgIDxlbT5vcjwvZW0+CislIGdwZyAtLWltcG9ydCBLRVlTCislIGdwZyAtLXZlcmlmeSB4bWwtc2VjdXJpdHktYmluLTFfNF8zLnppcC5hc2MKKwkgIDwvc291cmNlPgorCTwvc2VjdGlvbj4KKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5TVk4gRG93bmxvYWQ8L3RpdGxlPgorICAgICAgPHA+CisJCUZvciB0aGUgYWR2ZW50dXJvdXMsIHRoaXMgcHJvamVjdCdzIFNWTiByZXBvc2l0b3J5IGNhbiBiZSBjaGVja2VkIAorCQlvdXQgdGhyb3VnaCBhbm9ueW1vdXMgU1ZOIHdpdGggdGhlIGZvbGxvd2luZyBpbnN0cnVjdGlvbiAKKwkJc2V0LgorICAgICAgPC9wPgorICAgICAgPHNvdXJjZT5zdm4gY28gaHR0cHM6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2YveG1sL3NlY3VyaXR5L3RydW5rIHhtbC1zZWN1cml0eTwvc291cmNlPgorICAgICAgPHA+CisgICAgICAgICAgICAgICBUaGlzIHdpbGwgY2hlY2sgb3V0IHRoZSBjb2RlIGludG8gYSBzdWJkaXJlY3RvcnkgbmFtZWQKKyAgICAgICAgICAgICAgICJ4bWwtc2VjdXJpdHkiLiAgVGhlIGNoZWNrb3V0IHdpbGwgY29udGFpbiBib3RoIHRoZSBKYXZhIGFuZAorICAgICAgICAgICAgICAgdGhlIEMrKyBzb3VyY2UuCisgICAgICA8L3A+CisJPC9zZWN0aW9uPgorICA8L2JvZHk+Cis8L2RvY3VtZW50PgorCisKKworCis8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKK0xvY2FsIHZhcmlhYmxlczoKK21vZGU6IHhtbAorc2dtbC1vbWl0dGFnOm5pbAorc2dtbC1zaG9ydHRhZzpuaWwKK3NnbWwtbmFtZWNhc2UtZ2VuZXJhbDpuaWwKK3NnbWwtZ2VuZXJhbC1pbnNlcnQtY2FzZTpsb3dlcgorc2dtbC1taW5pbWl6ZS1hdHRyaWJ1dGVzOm5pbAorc2dtbC1hbHdheXMtcXVvdGUtYXR0cmlidXRlczp0CitzZ21sLWluZGVudC1zdGVwOjIKK3NnbWwtaW5kZW50LWRhdGE6dAorc2dtbC1wYXJlbnQtZG9jdW1lbnQ6bmlsCitzZ21sLWV4cG9zZWQtdGFnczpuaWwKK3NnbWwtbG9jYWwtY2F0YWxvZ3M6bmlsCitzZ21sLWxvY2FsLWVjYXQtZmlsZXM6bmlsCitFbmQ6CistLT4KZGlmZiAtLWdpdCBhL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbnRlbnQveGRvY3MvZmFxLnhtbCBiL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbnRlbnQveGRvY3MvZmFxLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzYyYTU4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9mYXEueG1sCkBAIC0wLDAgKzEsMTg4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIGZhcXMgUFVCTElDICItLy9BUEFDSEUvL0RURCBGQVEgVjEuMS8vRU4iICJkdGQvZmFxLXYxMS5kdGQiCitbCisgIDwhRU5USVRZICUgeG1sc2VjX2VudGl0aWVzIFNZU1RFTSAiLi94bWxzZWNfZW50aXRpZXMuZW50Ij4gCisgICV4bWxzZWNfZW50aXRpZXM7IAorXT4KKzwhLS0KK0NvcHlyaWdodCAyMDAzLTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisKK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKzxmYXFzIHRpdGxlPSJGcmVxdWVudGx5IEFza2VkIFF1ZXN0aW9ucyI+CisgIDxwYXJ0IGlkPSJtYWlsaW5nbGlzdCI+CisgICAgPHRpdGxlPk1haWxpbmdsaXN0PC90aXRsZT4KKyAgICA8ZmFxIGlkPSJhcmNoaXZlIj4KKyAgICAgIDxxdWVzdGlvbj4KKyAgICAgICAgV2hlcmUncyB0aGUgYXJjaGl2ZSBmb3IgdGhlIGxpc3Q/CisgICAgICA8L3F1ZXN0aW9uPgorICAgICAgPGFuc3dlcj4KKyAgICAgICAgPHA+CisJICBDdXJyZW50bHksIDxsaW5rIGhyZWY9ImV4dDpnbWFuZSI+R21hbmU8L2xpbms+IGhvbGRzIHRoZSBtZXNzYWdlcworCSAgb2YgdGhlIGxhc3QgdHdvIHdlZWtzLiBUaGlzIHNlcnZpY2UgYWxzbyBtYWtlcyB0aGUgbWFpbGluZ2xpc3QKKwkgIHJlYWNoYWJsZSB3aXRoIGEgbmV3cyByZWFkZXIuCisJPC9wPgorCTxwPgorCSAgWW91IGNhbiB1c2UgdGhlIGV6bWxtIG1haWxpbmcgbGlzdCBjb250cm9sbGVyIHRvIHJlY2lldmUgcHJldmlvdXMKKwkgIG1lc3NhZ2VzIGJ5IGVtYWlsLiBTZW5kIGFuIGVtcHR5IGVtYWlsIHRvIDxsaW5rCisJICAgIGhyZWY9ImV4dDptYWlsaGVscCI+c2VjdXJpdHktZGV2LWhlbHBAeG1sLmFwYWNoZS5vcmc8L2xpbms+IGZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiBob3cKKwkgIHRvIHVzZSB0aGlzIHNlcnZpY2UgCisJPC9wPgorICAgICAgPC9hbnN3ZXI+CisgICAgPC9mYXE+CisgICAgPCEtLSBNb3JlIGZhcXMgb3IgcGFydHMgaGVyZSAtLT4KKyAgPC9wYXJ0PgorICAKKyAgPHBhcnQgaWQ9ImdlbmVyYWwiPgorICAgIDx0aXRsZT5SZXF1aXJlZCBiYWNrZ3JvdW5kPC90aXRsZT4KKyAgICA8ZmFxIGlkPSJYTUwtZ2VuZXJhbCI+CisgICAgICA8cXVlc3Rpb24+CisJV2hlcmUgY2FuIEkgbGVhcm4gYWJvdXQgWE1MPworICAgICAgPC9xdWVzdGlvbj4KKyAgICAgIDxhbnN3ZXI+CisJPHA+CisJICBUaGVyZSBhcmUgcGxlbnR5IG9mIHJlc291cmNlcyBvbiB0aGUgd2ViLCBqdXN0IHVzZSBhbnkgc2VhcmNoCisJICBlbmdpbmUuIFlvdSBtaWdodCBzdGFydCBhdCA8bGluayBocmVmPSJleHQ6eG1sZmFxIj5YTUxGQVE8L2xpbms+IG9yIDxsaW5rIGhyZWY9ImV4dDp6dm9uIj5aVk9OPC9saW5rPi4KKwk8L3A+CisgICAgICA8L2Fuc3dlcj4KKyAgICA8L2ZhcT4KKyAgIDxmYXEgaWQ9IlhNTERTaWciPgorICAgICAgPHF1ZXN0aW9uPgorCVdoZXJlIGNhbiBJIGxlYXJuIGFib3V0IFhNTCBEaWdpdGFsIFNpZ25hdHVyZXM/CisgICAgICA8L3F1ZXN0aW9uPgorICAgICAgPGFuc3dlcj4KKwk8cD4KKwkgIFRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IGlzIDxsaW5rIGhyZWY9ImV4dDp3M2MveG1sZHNpZyI+ICZ4bWxkc2lnOyA8L2xpbms+LiAKKwk8L3A+CisgICAgICA8L2Fuc3dlcj4KKyAgICA8L2ZhcT4KKyAgIDxmYXEgaWQ9IlhNTEVuYyI+CisgICAgICA8cXVlc3Rpb24+CisJV2hlcmUgY2FuIEkgbGVhcm4gYWJvdXQgWE1MIEVuY3J5cHRpb24/CisgICAgICA8L3F1ZXN0aW9uPgorICAgICAgPGFuc3dlcj4KKwk8cD4KKwkgIFRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IGlzIDxsaW5rIGhyZWY9ImV4dDp3M2MveG1sZW5jIj4meG1sZW5jOzwvbGluaz4uCisJPC9wPgorICAgICAgPC9hbnN3ZXI+CisgICAgPC9mYXE+CisgICA8ZmFxIGlkPSJDcnlwdG8iPgorICAgICAgPHF1ZXN0aW9uPgorCVdoZXJlIGNhbiBJIGxlYXJuIGFib3V0IENyeXB0b2dyYXBoeSBpbiBnZW5lcmFsPworICAgICAgPC9xdWVzdGlvbj4KKyAgICAgIDxhbnN3ZXI+CisJPHA+IAorCSAgQSBsb3Qgb2YgcmVzb3VyY2VzIGV4aXN0IG9uIHRoZSB3ZWIsIGluY2x1ZGluZyB0aGUgJ2dyZWVuIGJpYmxlJyBmb3IKKwkgIGNyeXB0b2dyYXBoeTogPGxpbmsgaHJlZj0iZXh0OmhhYyI+JmhhYzs8L2xpbms+LiBUaGUgJmhhYzsgaXMgY29tcGxldGVseSBvbmxpbmUgYW5kCisJICBpdCBzaG91bGQgc2F0aXNmeSBtb3N0IG9mIHlvdXIgY3J5cHRvZ3JhcGhpYyBodW5nZXIuIERpc2FkdmFudGFnZSBvZgorCSAgaXQgaXMgdGhhdCBpdCBnb2VzIHJhdGhlciBkZWVwLCBzbyBpdCBpc24ndCBhIGV4ZWN1dGl2ZSBvdmVydmlldyBvciBhCisJICAmcXVvdDtMZWFybiBYWVogaW4gMjEgZGF5cyZxdW90Oy1ib29rCisJPC9wPgorICAgICAgPC9hbnN3ZXI+CisgICAgPC9mYXE+CisgIDwvcGFydD4KKworICA8cGFydCBpZD0ieG1sZHNpZyI+CisgICAgPHRpdGxlPlhNTERTaWcgcXVlc3Rpb25zPC90aXRsZT4KKyAgICA8ZmFxIGlkPSJlbnYtdHJhbnNmIj4KKyAgICAgIDxxdWVzdGlvbj4KKwlXaGF0IGlzIHRoZSBlbnZlbG9wZWQgdHJhbnNmb3JtPworICAgICAgPC9xdWVzdGlvbj4KKyAgICAgIDxhbnN3ZXI+CisJPHA+CisJICBUaGUgZW52ZWxvcGVkIHRyYW5zZm9ybSBpcyBhIHNwZWNpYWwgdHJhbnNmb3JtIHRoYXQgZW5hYmxlcyB0aGUgdXNlIG9mCisJICBzby1jYWxsZWQgZW52ZWxvcGVkIHNpZ25hdHVyZXMuCisJPC9wPgorCTxwPgorCSAgRW52ZWxvcGVkIHNpZ25hdHVyZXMgYXJlIHNpZ25hdHVyZXMgb3ZlciBhbiBlbnRpcmUgWE1MIGRvY3VtZW50LCBmb3IKKwkgIHdoaWNoIHRoZSA8Y29kZT4mbHQ7U2lnbmF0dXJlJmd0OzwvY29kZT4gZWxlbWVudCBpcyBpbmNsdWRlZCBpbiB0aGUKKwkgIGRvY3VtZW50IGl0c2VsZi4gQW4gZXhhbXBsZSBjb3VsZCBiZToKKwk8L3A+CisJPHNvdXJjZT4KKzwhW0NEQVRBWzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CisgICA8Um9vdD4KKyAgICAgPFNvbWVDb250ZW50PgorICAgICAgIC4uLiAKKyAgICAgPC9Tb21lQ29udGVudD5dXT48ZW0+PCFbQ0RBVEFbCisgICAgICAgPGRzOlNpZ25hdHVyZT4KKyAgICAgICAgIDxkczpTaWduZWRJbmZvPgorICAgICAgICAgICA8ZHM6UmVmZXJlbmNlIFVSST0iIj4KKyAgICAgICAgICAgICA8ZHM6VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgICAgIDxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPgorICAgICAgICAgICAgIDwvZHM6VHJhbnNmb3Jtcz4KKyAgICAgICAgICAgPC9kczpSZWZlcmVuY2U+CisgICAgICAgICA8L2RzOlNpZ25lZEluZm8+CisgICAgICAgICAuLi4uCisgICAgICAgPC9kczpTaWduYXR1cmU+XV0+PC9lbT48IVtDREFUQVsKKyAgIDwvUm9vdD5dXT4KKwk8L3NvdXJjZT4KKwk8cD4KKwkgIFRoZSA8Y29kZT5SZWZlcmVuY2U8L2NvZGU+IGluZGljYXRlcyB0aGF0IDxjb2RlPlJvb3Q8L2NvZGU+IGFuZCBpdCdzCisJICBkZXNjZW5kYW50cyAoZXhjZXB0IGZvciBjb21tZW50cykgYXJlIHNpZ25lZCwgYnV0IHRoZQorCSAgPGNvZGU+VHJhbnNmb3JtPC9jb2RlPiBlbGVtZW50IHNheXMgdG8gdGhyb3cgb3V0IHRoZQorCSAgPGNvZGU+U2lnbmF0dXJlPC9jb2RlPiBlbGVtZW50ICh0aGF0IGlzIHRoZSBwYXJlbnQgb2YgdGhpcworCSAgPGNvZGU+UmVmZXJlbmNlPC9jb2RlPikgZnJvbSB0aGUgc3RyZWFtIHRoYXQgaXMgdG8gYmUgc2lnbmVkLiBOb3RlCisJICB0aGF0IGlmIHRoZXJlIGFyZSBvdGhlcgorCSAgPGNvZGU+U2lnbmF0dXJlPC9jb2RlPiBlbGVtZW50cyBpbiA8Y29kZT5Sb290PC9jb2RlPiwgdGhleSB3aWxsIHJlbWFpbgorCSAgdW50b3VjaGVkLgorCTwvcD4KKyAgICAgIDwvYW5zd2VyPgorICAgIDwvZmFxPgorICAgIDxmYXEgaWQ9ImMxNE4iPgorICAgICAgPHF1ZXN0aW9uPgorCVdoYXQncyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIEMxNE4gYW5kIEV4Y2xDMTROPworICAgICAgPC9xdWVzdGlvbj4KKyAgICAgIDxhbnN3ZXI+CisJPHA+CisJICBDMTROIHdhcyBpbnRyb2R1Y2VkIHRvIHNvbHZlIHNvbWUgcHJvYmxlbXMgdGhhdCBhcmlzZSB3aGVuIHNpZ25pbmcKKwkgIFhNTC4gQmVjYXVzZSBYTUwgYWxsb3dzIHRvIGNoYW5nZSB0aGUgcmVwcmVzZW50YXRpb24gb2YgYW4gWE1MIGRvY3VtZW50CisJICB3aXRob3V0IGNoYW5naW5nIHRoZSBhY3R1YWwgY29udGVudCwgc2lnbmF0dXJlcyBtYXkgYnJlYWsgd2hlbgorCSAgZGlmZmVyZW50IHBhcnNlcnMgYXJlIHVzZWQgdG8gZ2VuZXJhdGUgYW5kIHZlcmlmeSB0aGUgc2lnbmF0dXJlLiBBIHNpbXBsZQorCSAgZXhhbXBsZSBvZiBzdWNoIGFuIGFsbG93ZWQgY2hhbmdlIGlzIGNoYW5naW5nIHRoZSBvcmRlciBvZiBhdHRyaWJ1dGVzCisJICB3aXRoaW4gYW4gZWxlbWVudC4gKFRoYXQgaXMgc29sdmVkIGJ5IEMxNE4gYnkgc29ydGluZyB0aGUgYXR0cmlidXRlcyBieQorCSAgYWxwaGFiZXQpCisJPC9wPgorCTxwPgorCSAgQmVjYXVzZSBhIEMxNE4nZWQgWE1MIGZyYWdtZW50IGluaGVyaXRzIGFsbCB0aGUgbmFtZXNwYWNlIGRlY2xhcmF0aW9ucworCSAgZnJvbSBpdCdzIGFuY2VzdG9ycywgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGVtYmVkIGEgc2lnbmVkIFhNTCBmcmFnbWVudAorCSAgaW50byBhIGRvY3VtZW50IHRoYXQgaGFzIG90aGVyIG5hbWVzcGFjZSBkZWNsYXJhdGlvbnMuCisJPC9wPgorCTxwPgorCSAgVGhpcyBpcyBzb2x2ZWQgYnkgRXhjbEMxNE4uIEV4Y2xDMTROIHRha2VzIGV4dHJhIGluZm9ybWF0aW9uIGFzIGlucHV0CisJICBpbiB3aGljaCB5b3UgY2FuIHNwZWNpZnkgd2hpY2ggb2YgdGhlIGFuY2VzdG9yJ3MgbmFtZXNwYWNlcyBzaG91bGQgYmUKKwkgIGluY2x1ZGVkLiAKKwk8L3A+CisJPHA+CisJICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIHRvcGljLCBoYXZlIGEgbG9vayBhdCB0aGUgQzE0TiBhbmQKKwkgIEV4Y2xDMTROIHNlY3Rpb25zIG9mIHRoZSA8anVtcCBocmVmPSJzaXRlOnczYy94bWxkc2lnIj5XM0MgWE1MRFNpZyBXRzwvanVtcD4uCisJPC9wPgorICAgICAgPC9hbnN3ZXI+CisgICAgPC9mYXE+CisgICAgCisgICAgPCEtLSB0ZW1wbGF0ZQorICAgIDxmYXEgaWQ9IiI+CisgICAgPHF1ZXN0aW9uPgorICA8L3F1ZXN0aW9uPgorICAgIDxhbnN3ZXI+CisgIDwvYW5zd2VyPgorICAgIDwvZmFxPgorICAgIC0tPgorCisgIDwvcGFydD4KKyAgPCEtLSBNb3JlIGZhcXMgb3IgcGFydHMgaGVyZSAtLT4KKzwvZmFxcz4KKworCisKKworCmRpZmYgLS1naXQgYS9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL2hpc3RvcnkueG1sIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9oaXN0b3J5LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWY1NWM4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9oaXN0b3J5LnhtbApAQCAtMCwwICsxLDkyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIGRvY3VtZW50IFBVQkxJQyAiLS8vQVBBQ0hFLy9EVEQgRG9jdW1lbnRhdGlvbiBWMS4xLy9FTiIgImRvY3VtZW50LXYxMS5kdGQiCitbCisgIDwhRU5USVRZICUgeG1sc2VjX2VudGl0aWVzIFNZU1RFTSAiLi94bWxzZWNfZW50aXRpZXMuZW50Ij4gCisgICV4bWxzZWNfZW50aXRpZXM7IAorXT4KKzwhLS0KK0NvcHlyaWdodCAyMDAzLTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisKK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworPGRvY3VtZW50PiAKKyAgPGhlYWRlcj4gCisgICAgPHRpdGxlPlhNTCBTZWN1cml0eSBIaXN0b3J5PC90aXRsZT4gCisgIDwvaGVhZGVyPiAKKyAgPGJvZHk+IAorICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlRoZSAmbHQ7V2ViU2lnJmd0OyBwcm9qZWN0PC90aXRsZT4KKyAgICAgIDxwPgorCUluIG1pZC0xOTk5LCB0aGUgPGp1bXAKKwkgIGhyZWY9Imh0dHA6Ly93d3cubnVlLmV0LWluZi51bmktc2llZ2VuLmRlLyI+SW5zdGl0dXRlIGZvciBEYXRhCisJICBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zPC9qdW1wPiBhdCB0aGUgPGp1bXAKKwkgIGhyZWY9Imh0dHA6Ly93d3cudW5pLXNpZWdlbi5kZS8iPlVuaXZlcnNpdHkgb2YgU2llZ2VuPC9qdW1wPiBpbgorCUdlcm1hbnkgbG9va2VkIGZvciBwYXJ0bmVycyB0byBwYXJ0aWNpcGF0ZSBpbiBhIEV1cm9wZWFuIHByb2plY3QgZm9yCisJaW1wbGVtZW50aW5nIHRoZSB1cGNvbWluZyA8anVtcCBocmVmPSJleHQ6dzNjL3htbGRzaWciPlhNTCBTaWduYXR1cmUKKwkgIHN0YW5kYXJkPC9qdW1wPi4gV2UgZm91bmQgb3VyIHBhcnRuZXJzIGluIHRoZSBjb21wYW5pZXMgPGp1bXAKKwkgIGhyZWY9Imh0dHA6Ly93d3cuZXhwbmV0LmdyLyI+RXhwZXJ0bmV0IFMuQS48L2p1bXA+IGFuZCA8anVtcAorCSAgaHJlZj0iaHR0cDovL3d3dy5wcm9vZG9zLmdyLyI+UFJPT0RPUyBTLkEuPC9qdW1wPiwgYm90aCBmcm9tIEF0aGVucywKKwl3aG8gd2VyZSB3aWxsaW5nIHRvIHVzZSBvdXIgWE1MIFNpZ25hdHVyZSBsaWJyYXJ5IGluIGEgZmlyc3QgY29tbWVyY2lhbAorCXByb2plY3QuIAorICAgICAgPC9wPgorICAgICAgPHA+CisJVGhlIHByb2plY3Qgc3RhcnRlZCBpbiBKYW51YXJ5IDIwMDAgYW5kIGVuZGVkIHVwIGluIFNlcHRlbWJlciAyMDAxLiA1MCUKKwlvZiB0aGUgY29zdHMgaGF2ZSBiZWVuIGZ1bmRlZCBieSB0aGUgRXVyb3BlYW4gQ29tbWlzc2lvbiBpbiB0aGUgPGp1bXAKKwkgIGhyZWY9Imh0dHA6Ly93d3cuaXNwby5jZWMuYmUvaXNpcy85OXdlYnNpZy5odG0iPklTSVMKKwkgIHByb2dyYW1tZTwvanVtcD4uIEdvYWwgd2FzIHRvIGRldmVsb3AgYSBKQVZBIGxpYnJhcnkgZm9yIGNyZWF0aW5nIGFuZAorCXZhbGlkYXRpbmcgWE1MIFNpZ25hdHVyZXMgYW5kIHRvIG1ha2UgdGhlIGJpbmFyaWVzIG9mIHRoaXMgc29mdHdhcmUKKwlmcmVlbHkgYXZhaWxhYmxlLiAKKyAgICAgIDwvcD4KKyAgICAgIDxwPkluIFNlcHRlbWJlciAyMDAxLCBDaHJpc3RpYW4gR2V1ZXItUG9sbG1hbm4gYW5kIHRoZSAKKyAgSW5zdGl0dXRlIGZvciBEYXRhIENvbW11bmljYXRpb25zIFN5c3RlbXMgZGVjaWRlZCB0bworCW1ha2UgdGhlIHNvdXJjZXMgZnJlZWx5IGF2YWlsYWJsZSwgdG9vLCB0byBwcm9tb3RlIHRoZSB1c2Ugb2YgZGlnaXRhbAorCXNpZ25hdHVyZXMgYW5kIHRvIGdpdmUgWE1MIFNpZ25hdHVyZSBhIHNwaW4uIFRoZSBkZWNpc2lvbiB3YXMgbWFkZSB0bworCWdpdmUgdGhlIGNvbXBsZXRlIGxpYnJhcnkgKGluY2x1ZGluZyBhbiBpbXBsZW1lbnRhdGlvbiBvZiAiQ2Fub25pY2FsCisJWE1MIiBhbmQgIlhNTCBTaWduYXR1cmUiKSB1bmRlciB0aGUgaG9vZCBvZiB0aGUgQXBhY2hlIFNvZnR3YXJlCisJRm91bmRhdGlvbiB0byBlbnN1cmUgYXZhaWxhYmxpbGl0eSBvZiB0aGUgc291cmNlIGFuZCB0byBlbmFibGUgb3RoZXIKKwlwZW9wbGUgdG8gdXNlIGl0IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZS4gCisgICAgICA8L3A+CisgICAgPC9zZWN0aW9uPgorICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlhNTCBFbmNyeXB0aW9uIGluIEphdmE8L3RpdGxlPgorICAgICAgPHA+QSBiZXRhIGltcGxlbWVudGF0aW9uIG9mIFhNTCBFbmNyeXB0aW9uIHdhcyBmaXJzdCBpbmNsdWRlZCBpbiAKKwkgdmVyc2lvbiAxLjEgb2YgdGhlIEphdmEgbGlicmFyeS48L3A+CisgICAgPC9zZWN0aW9uPiAgICAKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5UaGUgQysrIExpYnJhcnk8L3RpdGxlPgorICAgICAgPHA+VGhlIEMrKyBsaWJyYXJ5IGlzIGEgbXVjaCBtb3JlIHJlY2VudCBhZGRpdGlvbiB0byB0aGUgWE1MLVNlY3VyaXR5CisgICAgICAgIHByb2plY3QuICBJdCBzdGFydGVkIG91dCBvbiA8anVtcCBocmVmPSJodHRwOi8vd3d3LnNvdXJjZWZvcmdlLm5ldCI+CisgICAgICAgICAgU291cmNlZm9yZ2U8L2p1bXA+IGFuZCB3YXMgbWlncmF0ZWQgaW50byBYTUwgU2VjdXJpdHkgaW4gZWFybHkgMjAwMy4KKyAgICAgIDwvcD4KKyAgICA8L3NlY3Rpb24+CisgIDwvYm9keT4KKzwvZG9jdW1lbnQ+CisKKzwhLS0gS2VlcCB0aGlzIGNvbW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZQorTG9jYWwgdmFyaWFibGVzOgorbW9kZTogeG1sCitzZ21sLW9taXR0YWc6bmlsCitzZ21sLXNob3J0dGFnOm5pbAorc2dtbC1uYW1lY2FzZS1nZW5lcmFsOm5pbAorc2dtbC1nZW5lcmFsLWluc2VydC1jYXNlOmxvd2VyCitzZ21sLW1pbmltaXplLWF0dHJpYnV0ZXM6bmlsCitzZ21sLWFsd2F5cy1xdW90ZS1hdHRyaWJ1dGVzOnQKK3NnbWwtaW5kZW50LXN0ZXA6Mgorc2dtbC1pbmRlbnQtZGF0YTp0CitzZ21sLXBhcmVudC1kb2N1bWVudDpuaWwKK3NnbWwtZXhwb3NlZC10YWdzOm5pbAorc2dtbC1sb2NhbC1jYXRhbG9nczpuaWwKK3NnbWwtbG9jYWwtZWNhdC1maWxlczpuaWwKK0VuZDoKKy0tPgpkaWZmIC0tZ2l0IGEvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9pbmRleC54bWwgYi9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL2luZGV4LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDFlMTAwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9pbmRleC54bWwKQEAgLTAsMCArMSwyNjYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgZG9jdW1lbnQgUFVCTElDICItLy9BUEFDSEUvL0RURCBEb2N1bWVudGF0aW9uIFYxLjEvL0VOIiAiZG9jdW1lbnQtdjExLmR0ZCI+Cis8IS0tCitDb3B5cmlnaHQgMjAwMy0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+Cis8ZG9jdW1lbnQ+IAorICA8aGVhZGVyPiAKKyAgICA8dGl0bGU+V2VsY29tZSB0byBYTUwgU2VjdXJpdHk8L3RpdGxlPiAKKyAgPC9oZWFkZXI+IAorICA8Ym9keT4gCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+TmV3czwvdGl0bGU+CisgICAgICA8c2VjdGlvbj4gICAgICAKKyAgICAgICAgPHRpdGxlPkp1bHkgMjAwOTwvdGl0bGU+CisgICAgICAgIDxwPgorICAgICAgICAgVGhlIEFwYWNoZSBYTUwgU2VjdXJpdHkgdGVhbSBhcmUgcGxlYXNlZCB0byBhbm5vdW5jZSB0aGUgcmVsZWFzZQorICAgICAgICAgb2YgdmVyc2lvbiAxLjQuMyBvZiB0aGUgSmF2YSB4bWwtc2VjdXJpdHkgbGlicmFyeS4gVGhpcyByZWxlYXNlCisgICAgICAgICBwcm92aWRlcyBtYW55IGJ1ZyBmaXhlcyBhbmQgYSBmaXggZm9yIHRoZSByZWNlbnRseSBhbm5vdW5jZWQKKyAgICAgICAgIEhNQUMgdnVsbmVyYWJpbGl0eSBpbiB0aGUgWE1MIFNpZ25hdHVyZSBzcGVjaWZpY2F0aW9uLiBZb3Ugc2hvdWxkCisgICAgICAgICB1cGdyYWRlIHRvIHRoaXMgcmVsZWFzZSBhcyBzb29uIGFzIHBvc3NpYmxlLgorICAgICAgICA8L3A+CisgICAgICAgIDxwPgorICAgICAgICAgUGxlYXNlIHNlZSB0aGUgPGxpbmsgaHJlZj0ic2l0ZTpjaGFuZ2VzIj5jaGFuZ2Vsb2c8L2xpbms+IGZvciBtb3JlIAorICAgICAgICAgaW5mb3JtYXRpb24uCisgICAgICAgIDwvcD4KKyAgICAgIDwvc2VjdGlvbj4KKyAgICAgIDxzZWN0aW9uPiAgICAgIAorICAgICAgICA8dGl0bGU+SnVuZSAyMDA5PC90aXRsZT4KKyAgICA8cD4KKyAgICAgIFZlcnNpb24gMS41LjAgb2YgdGhlIEMrKyBsaWJyYXJ5IGhhcyBiZWVuIHJlbGVhc2VkLiBUaGlzIGlzIG1haW5seQorICAgICAgICAgIGEgYnVnZml4IHJlbGVhc2UgYW5kIGEgcG9ydCB0byBYZXJjZXMgMy54LiBJbmNvbXBsZXRlIHN1cHBvcnQKKyAgICAgICAgICBmb3IgWE1MIENhbm9uaWNhbGl6YXRpb24gMS4xIGlzIGFsc28gYWRkZWQuIAorICAgICAgICA8L3A+CisgICAgPHA+CisgICAgICBQbGVhc2Ugc2VlIDxsaW5rIGhyZWY9InNpdGU6Y2hhbmdlcyI+Y2hhbmdlbG9nPC9saW5rPiBmb3IgbW9yZSAKKyAgICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICA8L3A+CisgICAgICA8L3NlY3Rpb24+CisgICAgICA8c2VjdGlvbj4gICAgICAKKyAgICAgIAk8dGl0bGU+SnVuZSAyMDA4PC90aXRsZT4KKwk8cD4KKwkgIFZlcnNpb24gMS40LjIgb2YgdGhlIEphdmEgbGlicmFyeSBoYXMgYmVlbiByZWxlYXNlZC4gVGhpcyBpcyBtYWlubHkKKyAgICAgICAgICBhIGJ1Z2ZpeCByZWxlYXNlIGJ1dCBhbHNvIGNvbnRhaW5zIGEgZmV3IG5ldyBlbmhhbmNlbWVudHMgaW5jbHVkaW5nIAorCSAgc3VwcG9ydCBmb3IgWE1MIENhbm9uaWNhbGl6YXRpb24gMS4xLgorICAgICAgICA8L3A+CisJPHA+CisJICBQbGVhc2Ugc2VlIDxsaW5rIGhyZWY9InNpdGU6Y2hhbmdlcyI+Y2hhbmdlbG9nPC9saW5rPiBmb3IgbW9yZSAKKyAgICAgICAgICBpbmZvcm1hdGlvbi4KKwk8L3A+CisgICAgICA8L3NlY3Rpb24+CisgICAgICA8c2VjdGlvbj4gICAgICAKKyAgICAgIAk8dGl0bGU+TWF5IDIwMDc8L3RpdGxlPgorCTxwPgorCSAgVmVyc2lvbiAxLjQuMSBvZiB0aGUgSmF2YSBsaWJyYXJ5IGhhcyBiZWVuIHJlbGVhc2VkLiBUaGlzIGlzIGEgYnVnZml4IAorCSAgcmVsZWFzZSB0aGF0IGNvbnRhaW5zIGEgbWFqb3IgYnVnZml4IHRvIHRoZSBjYW5vbmljYWxpemF0aW9uIGVuZ2luZSAKKwkgIGludHJvZHVjZWQgaW4gdGhlIDEuNCByZWxlYXNlLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IDEuNCB1c2VycyAKKwkgIHVwZ3JhZGUgdG8gdGhlIG5ldyB2ZXJzaW9uIGFzIHNpZ25hdHVyZXMgY29udGFpbmluZyBub24gYXNjaWkgCisgICAgICAgICAgY2hhcmFjdGVycyBjcmVhdGVkIGJ5IHRoaXMgbGlicmFyeSBhcmUgbm90IGFjY29yZGluZyB0byB0aGUgc3RhbmRhcmQsIAorCSAgYW5kIHdpbGwgYmUgb25seSB2YWxpZGF0ZWQgYnkgMS40IGxpYnJhcnkuIAorICAgICAgICA8L3A+CisJPHA+CisJICBQbGVhc2Ugc2VlIDxsaW5rIGhyZWY9InNpdGU6Y2hhbmdlcyI+Y2hhbmdlbG9nPC9saW5rPiBmb3IgbW9yZSAKKyAgICAgICAgICBpbmZvcm1hdGlvbi4KKwk8L3A+CisgICAgICA8L3NlY3Rpb24+CisgICAgICA8c2VjdGlvbj4gICAgICAKKyAgICAgIAk8dGl0bGU+SmFudWFyeSAyMDA3PC90aXRsZT4KKwk8cD4KKwkgIFZlcnNpb24gMS4zLjEgb2YgdGhlIEMrKyBsaWJyYXJ5IGhhcyBiZWVuIHJlbGVhc2VkLiBUaGlzIHJlbGVhc2UKKyAgICAgICAgICBjb250YWlucyBzb21lIG1pbm9yIGJ1ZyBmaXhlcyBhbmQgaW5pdGlhbCB1cGRhdGVzIGZvciBYZXJjZXMgMy4wLgorICAgICAgICAgIEl0IGFsc28gcHJvdmlkZXMgYSBuZXcgYXV0b21ha2UgYmFzZWQgYnVpbGQgb24gKk5JWC4KKwkgIDxsaW5rIGhyZWY9InNpdGU6Y2hhbmdlcyI+Y2hhbmdlbG9nPC9saW5rPiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKwk8L3A+CisgICAgICA8L3NlY3Rpb24+CisgICAgICA8c2VjdGlvbj4gICAgICAKKyAgICAgIAk8dGl0bGU+SmFudWFyeSAyMDA3PC90aXRsZT4KKwk8cD4KKwkgIFZlcnNpb24gMS40IG9mIHRoZSBKYXZhIGxpYnJhcnkgaGFzIGJlZW4gcmVsZWFzZWQuIAorCSAgVGhlIG1haW4gY2hhbmdlcyBmb3IgdGhpcyB2ZXJzaW9uIGFyZToKKwk8L3A+CisJPHVsPgorICAgICAgICAgIDxsaT5JbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3RhbmRhcmQgQVBJIEpTUjEwNTwvbGk+CisgICAgICAgICAgPGxpPlJld3JpdHRlbiBjMTRuIHRoYXQgaW5jcmVhc2UgcGVyZm9ybWFuY2UgZm9yIHNpZ25hdHVyZSAKKyAgICAgICAgICB3aXRoIG5vZGUtc2V0IHRyYW5zZm9ybWF0aW9ucy48L2xpPgorICAgICAgICAgIDxsaT5NZW1vcnkgZm9vdHByaW50IHJlZHVjdGlvbiBhbmQgc2V2ZXJhbCBidWdmaXhlczwvbGk+CisgICAgICAgICA8L3VsPiAKKyAgICAgICAgPHA+IFJlZmVyIHRvIHRoZSAKKwkgIDxsaW5rIGhyZWY9InNpdGU6Y2hhbmdlcyI+Y2hhbmdlbG9nPC9saW5rPiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKwk8L3A+CisgICAgICA8L3NlY3Rpb24+ICAgICAgCisgICAgICA8c2VjdGlvbj4gICAgICAKKyAgICAgIAk8dGl0bGU+U2VwdGVtYmVyIDIwMDY8L3RpdGxlPgorCTxwPgorCSAgVmVyc2lvbiAxLjMgb2YgdGhlIEMrKyBsaWJyYXJ5IGhhcyBiZWVuIHJlbGVhc2VkLiBUaGlzIHJlbGVhc2UKKyAgICAgICAgICBmZWF0dXJlcyBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMgYW5kIGEgY29tcGxldGUgbWVzc2FnZSBzZXQKKyAgICAgICAgICBmb3IgWEtNUy4KKwkgIDxsaW5rIGhyZWY9InNpdGU6Y2hhbmdlcyI+Y2hhbmdlbG9nPC9saW5rPiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKwk8L3A+CisgICAgICA8L3NlY3Rpb24+CisgICAgICA8c2VjdGlvbj4KKwk8dGl0bGU+T2N0b2JlciAyMDA1PC90aXRsZT4KKwk8cD4KKwkgIFZlcnNpb24gMS4zIG9mIHRoZSBKYXZhIGxpYnJhcnkgaGFzIGJlZW4gcmVsZWFzZWQuICAKKwkgIFRoaXMgdmVyc2lvbiBwcm92aWRlcyA6CisJPC9wPgorCTx1bD4KKwkgIDxsaT5CZXR0ZXIgc3BlZWQgJmFtcDsgbWVtb3J5IHV0aWxpemF0aW9uLjwvbGk+CisJICA8bGk+QnVnIGZpeGVzLjwvbGk+CisJPC91bD4KKwk8cD5TZWUgdGhlIAorCSAgPGxpbmsgaHJlZj0ic2l0ZTpjaGFuZ2VzIj5jaGFuZ2Vsb2c8L2xpbms+IGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICA8L3A+CisgICAgICA8L3NlY3Rpb24+CisgICAgICA8c2VjdGlvbj4gICAgICAKKyAgICAgIAk8dGl0bGU+SnVseSAyMDA1PC90aXRsZT4KKwk8cD4KKwkgIFZlcnNpb24gMS4yLjEgb2YgdGhlIEMrKyBsaWJyYXJ5IGhhcyBiZWVuIHJlbGVhc2VkLiBUaGlzIG1pbm9yCisgICAgICAgICAgcmVsZWFzZSBmaXhlcyB2ZXJzaW9uaW5nIHByb2JsZW1zIGluIHRoZSBXaW5kb3dzIHByb2plY3QgZmlsZXMuICBTZWUgdGhlIAorCSAgPGxpbmsgaHJlZj0ic2l0ZTpjaGFuZ2VzIj5jaGFuZ2Vsb2c8L2xpbms+IGZvciBtb3JlIGluZm9ybWF0aW9uLgorCTwvcD4KKyAgICAgIDwvc2VjdGlvbj4KKyAgICAgIDxzZWN0aW9uPgorICAgICAgCTx0aXRsZT5KdW5lIDIwMDU8L3RpdGxlPgorCTxwPgorCSAgVmVyc2lvbiAxLjIgb2YgdGhlIEMrKyBsaWJyYXJ5IGhhcyBiZWVuIHJlbGVhc2VkLiAKKwkgIFRoaXMgdmVyc2lvbiBpbmNsdWRlcyBhIG51bWJlciBvZiBidWcgZml4ZXMsIHRvZ2V0aGVyIHdpdGgKKyAgICAgICAgICBhIGJldGEgcmVsZWFzZSBvZiBjb2RlIHRvIHByb2Nlc3MgYW5kIGdlbmVyYXRlIFhLTVMgbWVzc2FnZXMuCisgICAgICAgICAgU2VlIHRoZSAKKwkgIDxsaW5rIGhyZWY9InNpdGU6Y2hhbmdlcyI+Y2hhbmdlbG9nPC9saW5rPiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKwk8L3A+CisgICAgICA8L3NlY3Rpb24+CisgICAgICA8c2VjdGlvbj4KKyAgICAgIAk8dGl0bGU+RmVicnVhcnkgMjAwNTwvdGl0bGU+CisJPHA+CisJICBWZXJzaW9uIDEuMi4xIG9mIHRoZSBKYXZhIGxpYnJhcnkgaGFzIGJlZW4gcmVsZWFzZWQuIAorCSAgVGhpcyBpcyBhIGJ1Z2ZpeCB2ZXJzaW9uLCBmb3IgbW9yZSBkZXRhaWwgaW5mb3JtYXRpb24gc2VlIHRoZQorCSAgPGxpbmsgaHJlZj0ic2l0ZTpjaGFuZ2VzIj5jaGFuZ2Vsb2c8L2xpbms+LgorCTwvcD4KKyAgICAgIDwvc2VjdGlvbj4KKyAgICAgIDxzZWN0aW9uPgorCTx0aXRsZT5EZWNlbWJlciAyMDA0PC90aXRsZT4KKwk8cD4KKwkgIFZlcnNpb24gMS4yIG9mIHRoZSBKYXZhIGxpYnJhcnkgaGFzIGJlZW4gcmVsZWFzZWQuICAKKwkgIFRoaXMgdmVyc2lvbiBwcm92aWRlcyA6CisJPC9wPgorCTx1bD4KKwkgIDxsaT5CZXR0ZXIgc3BlZWQgJmFtcDsgbWVtb3J5IHV0aWxpemF0aW9uLjwvbGk+CisJICA8bGk+RWFzaWVyIEpDRSBpbnRlZ3JhdGlvbi48L2xpPgorCTwvdWw+CisgICAgICA8L3NlY3Rpb24+CisgICAgICA8c2VjdGlvbj4KKwk8dGl0bGU+QXByaWwgMjAwNDwvdGl0bGU+CisJPHA+CisJICBWZXJzaW9uIDEuMSBvZiB0aGUgSmF2YSBsaWJyYXJ5IGhhcyBiZWVuIHJlbGVhc2VkLiAgCisJICBUaGlzIHZlcnNpb24gcHJvdmlkZXMgOgorCTwvcD4KKwk8dWw+CisJICA8bGk+QmV0YSBpbXBsZW1lbnRhdGlvbiBvZiBYTUwgRW5jcnlwdGlvbjwvbGk+CisJICA8bGk+QnVnIGZpeGVzIHRvIFNpZ25hdHVyZSBpbXBsZW1lbnRhdGlvbjwvbGk+CisJPC91bD4KKyAgICAgIDwvc2VjdGlvbj4KKyAgICAgIDxzZWN0aW9uPgorCTx0aXRsZT5NYXJjaCAyMDA0PC90aXRsZT4KKwk8cD4KKwkgIFZlcnNpb24gMS4xIG9mIHRoZSBDKysgbGlicmFyeSBoYXMgYmVlbiByZWxlYXNlZC4gIFN1cHBvcnRpbmcKKwkgIFhlcmNlcyAyLjUsIDIuNCBhbmQgMi4zIHRvZ2V0aGVyIHdpdGggWGFsYW4gMS42IGFuZCAxLjcsIHRoaXMKKwkgIHZlcnNpb24gcHJvdmlkZXMgOgorCTwvcD4KKwk8dWw+CisJICA8bGk+QmV0YSBpbXBsZW1lbnRhdGlvbiBvZiBYTUwgRW5jcnlwdGlvbjwvbGk+CisJICA8bGk+SW1wcm92ZWQgc3VwcG9ydCBmb3IgV2luZG93cyBDcnlwdG8gQVBJPC9saT4KKwkgIDxsaT5CdWcgZml4ZXMgdG8gU2lnbmF0dXJlIGltcGxlbWVudGF0aW9uPC9saT4KKwk8L3VsPgorICAgICAgPC9zZWN0aW9uPgorICAgICAgPHNlY3Rpb24+CisgICAgICAgIDx0aXRsZT5BdWd1c3QgMjAwMzwvdGl0bGU+CisgICAgICAgIDxwPgorICAgICAgICAgIFZlcnNpb24gMS4wMCBvZiB0aGUgQysrIGxpYnJhcnkgaXMgbm93IHJlbGVhc2VkLiAgVGhpcyBpcyB0aGUgZmlyc3QKKyAgICAgICAgICBzdGFibGUgcmVsZWFzZSBvZiB0aGUgbGlicmFyeS4gIEZ1bmN0aW9uYWxpdHkgaXMgc3RpbGwgZmFpcmx5IGJhc2ljLAorICAgICAgICAgIGJ1dCBhbGwgbWFuZGF0b3J5IHBhcnRzIG9mIHRoZSB0aGUgRFNJRyBzdGFuZGFyZCBhcmUgaW1wbGVtZW50ZWQuCisgICAgICAgIDwvcD4KKwk8cD4KKwkgIFRoaXMgdmVyc2lvbiBzdXBwb3J0cyBYZXJjZXMgMi4yIGFuZCAyLjMgYW5kIFhhbGFuIDEuNi4KKwk8L3A+CisgICAgICA8L3NlY3Rpb24+CisgICAgICA8c2VjdGlvbj4KKwk8dGl0bGU+TWF5IDIwMDM8L3RpdGxlPgorCTxwPgorCSAgVGhlIEJldGEgMC4yMCBvZiB0aGUgQysrIGxpYnJhcnkgaGFzIG5vdyBiZWVuIHJlbGVhc2VkLiAgRmVhdHVyZXM6CisJPC9wPgorCTx1bD4KKwkgIDxsaT5BYmlsaXR5IHRvIHVzZSB0aGUgV2luZG93cyBDcnlwdG8gQVBJIGFzIGEgY3J5cHRvIHByb3ZpZGVyPC9saT4KKwkgIDxsaT5TZXZlcmFsIG1pbm9yIGJ1ZyBmaXhlcyBpbiB0cmFuc2Zvcm1zIGFuZCBVTklYIGJ1aWxkIHByb2Nlc3M8L2xpPgorCTwvdWw+CisgICAgICA8L3NlY3Rpb24+CisgICAgICA8c2VjdGlvbj4KKwk8dGl0bGU+RmVicnVhcnkgMjAwMzwvdGl0bGU+CisJPHA+CisJICBUaGUgc2l0ZSBoYXMgbm93IGJlZW4gcmUtYnVpbHQgdXNpbmcgdGhlIG5ldyB4bWwuYXBhY2hlLm9yZyBzdGFuZGFyZCwKKwkgIHVzaW5nIEZvcnJlc3QuCisJPC9wPgorICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5UaGUgUHJvamVjdDwvdGl0bGU+CisgICAgICA8cD4KKyAgICAgICAgVGhlIFhNTCBTZWN1cml0eSBwcm9qZWN0IGlzIGFpbWVkIGF0IHByb3ZpZGluZyBpbXBsZW1lbnRhdGlvbiBvZgorICAgICAgICBzZWN1cml0eSBzdGFuZGFyZHMgZm9yIFhNTC4gIEN1cnJlbnRseSB0aGUgZm9jdXMgaXMgb24gdGhlIFczQworICAgICAgICBzdGFuZGFyZHMgOgorICAgICAgPC9wPgorICAgICAgPHVsPgorICAgICAgICA8bGk+PGp1bXAgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvU2lnbmF0dXJlLyI+CisgICAgICAgICAgICBYTUwtU2lnbmF0dXJlIFN5bnRheCBhbmQgUHJvY2Vzc2luZzsgYW5kPC9qdW1wPgorICAgICAgICA8L2xpPgorICAgICAgICA8bGk+PGp1bXAgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvRW5jcnlwdGlvbi8yMDAxLyI+CisgICAgICAgICAgICBYTUwgRW5jcnlwdGlvbiBTeW50YXggYW5kIFByb2Nlc3NpbmcuPC9qdW1wPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPHA+CisgICAgICAgIE9uY2UgdGhlc2UgYXJlIGltcGxlbWVudGVkLCAKKyAgICAgICAgPGp1bXAgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YS01TIj5YTUwgS2V5IE1hbmFnZW1lbnQ8L2p1bXA+CisgICAgICAgICAgaXMgbGlrZWx5IHRvIGJlIHRoZSBuZXh0IGZvY3VzIGZvciB0aGUgcHJvamVjdC4KKyAgICAgIDwvcD4KKyAgICAgIDxwPgorICAgICAgICBUd28gbGlicmFyaWVzIGFyZSBjdXJyZW50bHkgYXZhaWxhYmxlLgorICAgICAgPC9wPgorICAgICAgPG9sPgorICAgICAgICA8bGk+QSBKYXZhIGxpYnJhcnksIHdoaWNoIGluY2x1ZGVzIGEgbWF0dXJlIERpZ2l0YWwgU2lnbmF0dXJlIAorICAgICAgICAgIGFuZCBFbmNyeXB0aW9uIGltcGxlbWVudGF0aW9uLiBJdCBhbHNvIGluY2x1ZGVzIHRoZSBzdGFuZGFyZCBKU1IKKwkgIDEwNSAoSmF2YSBYTUwgRGlnaXRhbCBTaWduYXR1cmUpIEFQSS4gQXBwbGljYXRpb25zIGNhbiB1c2UgdGhlIAorCSAgc3RhbmRhcmQgSlNSIDEwNSBBUEkgb3IgdGhlIEFwYWNoZSBYTUwgU2VjdXJpdHkgQVBJIHRvIGNyZWF0ZQorCSAgYW5kIHZhbGlkYXRlIFhNTCBTaWduYXR1cmVzLjwvbGk+CisgICAgICAgIDxsaT5BIEMrKyBsaWJyYXJ5IGlzIGFsc28gbm93IGF2YWlsYWJsZS4gIEZ1bmN0aW9uYWxpdHkgaXMgY3VycmVudGx5CisJCSAgbW9yZSBiYXNpYyB0aGFuIHRoYXQgcHJvdmlkZWQgYnkgdGhlIEphdmEgbGlicmFyeS48L2xpPgorICAgICAgPC9vbD4KKyAgICA8L3NlY3Rpb24+CisgIDwvYm9keT4KKzwvZG9jdW1lbnQ+Cis8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKK0xvY2FsIHZhcmlhYmxlczoKK21vZGU6IHhtbAorc2dtbC1vbWl0dGFnOm5pbAorc2dtbC1zaG9ydHRhZzpuaWwKK3NnbWwtbmFtZWNhc2UtZ2VuZXJhbDpuaWwKK3NnbWwtZ2VuZXJhbC1pbnNlcnQtY2FzZTpsb3dlcgorc2dtbC1taW5pbWl6ZS1hdHRyaWJ1dGVzOm5pbAorc2dtbC1hbHdheXMtcXVvdGUtYXR0cmlidXRlczp0CitzZ21sLWluZGVudC1zdGVwOjIKK3NnbWwtaW5kZW50LWRhdGE6dAorc2dtbC1wYXJlbnQtZG9jdW1lbnQ6bmlsCitzZ21sLWV4cG9zZWQtdGFnczpuaWwKK3NnbWwtbG9jYWwtY2F0YWxvZ3M6bmlsCitzZ21sLWxvY2FsLWVjYXQtZmlsZXM6bmlsCitFbmQ6CistLT4KZGlmZiAtLWdpdCBhL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbnRlbnQveGRvY3MvbGljZW5zZS54bWwgYi9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL2xpY2Vuc2UueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NTUzNDQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL2xpY2Vuc2UueG1sCkBAIC0wLDAgKzEsMjI5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIGRvY3VtZW50IFBVQkxJQyAiLS8vQVBBQ0hFLy9EVEQgRG9jdW1lbnRhdGlvbiBWMS4xLy9FTiIgImRvY3VtZW50LXYxMS5kdGQiPgorPCEtLQorQ29weXJpZ2h0IDIwMDMtMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKworTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCis8ZG9jdW1lbnQ+CisgPGhlYWRlcj4KKyAgPHRpdGxlPlRoZSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAyLjA8L3RpdGxlPgorIDwvaGVhZGVyPgorCis8Ym9keT4KKzxzb3VyY2U+PCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcGFjaGUgTGljZW5zZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNAorICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzLworCisgICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04KKworICAgMS4gRGVmaW5pdGlvbnMuCisKKyAgICAgICJMaWNlbnNlIiBzaGFsbCBtZWFuIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgdXNlLCByZXByb2R1Y3Rpb24sCisgICAgICBhbmQgZGlzdHJpYnV0aW9uIGFzIGRlZmluZWQgYnkgU2VjdGlvbnMgMSB0aHJvdWdoIDkgb2YgdGhpcyBkb2N1bWVudC4KKworICAgICAgIkxpY2Vuc29yIiBzaGFsbCBtZWFuIHRoZSBjb3B5cmlnaHQgb3duZXIgb3IgZW50aXR5IGF1dGhvcml6ZWQgYnkKKyAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIgdGhhdCBpcyBncmFudGluZyB0aGUgTGljZW5zZS4KKworICAgICAgIkxlZ2FsIEVudGl0eSIgc2hhbGwgbWVhbiB0aGUgdW5pb24gb2YgdGhlIGFjdGluZyBlbnRpdHkgYW5kIGFsbAorICAgICAgb3RoZXIgZW50aXRpZXMgdGhhdCBjb250cm9sLCBhcmUgY29udHJvbGxlZCBieSwgb3IgYXJlIHVuZGVyIGNvbW1vbgorICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKKyAgICAgICJjb250cm9sIiBtZWFucyAoaSkgdGhlIHBvd2VyLCBkaXJlY3Qgb3IgaW5kaXJlY3QsIHRvIGNhdXNlIHRoZQorICAgICAgZGlyZWN0aW9uIG9yIG1hbmFnZW1lbnQgb2Ygc3VjaCBlbnRpdHksIHdoZXRoZXIgYnkgY29udHJhY3Qgb3IKKyAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQorICAgICAgb3V0c3RhbmRpbmcgc2hhcmVzLCBvciAoaWlpKSBiZW5lZmljaWFsIG93bmVyc2hpcCBvZiBzdWNoIGVudGl0eS4KKworICAgICAgIllvdSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQorICAgICAgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5IHRoaXMgTGljZW5zZS4KKworICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMsCisgICAgICBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHNvZnR3YXJlIHNvdXJjZSBjb2RlLCBkb2N1bWVudGF0aW9uCisgICAgICBzb3VyY2UsIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzLgorCisgICAgICAiT2JqZWN0IiBmb3JtIHNoYWxsIG1lYW4gYW55IGZvcm0gcmVzdWx0aW5nIGZyb20gbWVjaGFuaWNhbAorICAgICAgdHJhbnNmb3JtYXRpb24gb3IgdHJhbnNsYXRpb24gb2YgYSBTb3VyY2UgZm9ybSwgaW5jbHVkaW5nIGJ1dAorICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAorICAgICAgYW5kIGNvbnZlcnNpb25zIHRvIG90aGVyIG1lZGlhIHR5cGVzLgorCisgICAgICAiV29yayIgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgorICAgICAgT2JqZWN0IGZvcm0sIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSBMaWNlbnNlLCBhcyBpbmRpY2F0ZWQgYnkgYQorICAgICAgY29weXJpZ2h0IG5vdGljZSB0aGF0IGlzIGluY2x1ZGVkIGluIG9yIGF0dGFjaGVkIHRvIHRoZSB3b3JrCisgICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLgorCisgICAgICAiRGVyaXZhdGl2ZSBXb3JrcyIgc2hhbGwgbWVhbiBhbnkgd29yaywgd2hldGhlciBpbiBTb3VyY2Ugb3IgT2JqZWN0CisgICAgICBmb3JtLCB0aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhlCisgICAgICBlZGl0b3JpYWwgcmV2aXNpb25zLCBhbm5vdGF0aW9ucywgZWxhYm9yYXRpb25zLCBvciBvdGhlciBtb2RpZmljYXRpb25zCisgICAgICByZXByZXNlbnQsIGFzIGEgd2hvbGUsIGFuIG9yaWdpbmFsIHdvcmsgb2YgYXV0aG9yc2hpcC4gRm9yIHRoZSBwdXJwb3NlcworICAgICAgb2YgdGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluCisgICAgICBzZXBhcmFibGUgZnJvbSwgb3IgbWVyZWx5IGxpbmsgKG9yIGJpbmQgYnkgbmFtZSkgdG8gdGhlIGludGVyZmFjZXMgb2YsCisgICAgICB0aGUgV29yayBhbmQgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLgorCisgICAgICAiQ29udHJpYnV0aW9uIiBzaGFsbCBtZWFuIGFueSB3b3JrIG9mIGF1dGhvcnNoaXAsIGluY2x1ZGluZworICAgICAgdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlIFdvcmsgYW5kIGFueSBtb2RpZmljYXRpb25zIG9yIGFkZGl0aW9ucworICAgICAgdG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25hbGx5CisgICAgICBzdWJtaXR0ZWQgdG8gTGljZW5zb3IgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yayBieSB0aGUgY29weXJpZ2h0IG93bmVyCisgICAgICBvciBieSBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eSBhdXRob3JpemVkIHRvIHN1Ym1pdCBvbiBiZWhhbGYgb2YKKyAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3VibWl0dGVkIgorICAgICAgbWVhbnMgYW55IGZvcm0gb2YgZWxlY3Ryb25pYywgdmVyYmFsLCBvciB3cml0dGVuIGNvbW11bmljYXRpb24gc2VudAorICAgICAgdG8gdGhlIExpY2Vuc29yIG9yIGl0cyByZXByZXNlbnRhdGl2ZXMsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8KKyAgICAgIGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsCisgICAgICBhbmQgaXNzdWUgdHJhY2tpbmcgc3lzdGVtcyB0aGF0IGFyZSBtYW5hZ2VkIGJ5LCBvciBvbiBiZWhhbGYgb2YsIHRoZQorICAgICAgTGljZW5zb3IgZm9yIHRoZSBwdXJwb3NlIG9mIGRpc2N1c3NpbmcgYW5kIGltcHJvdmluZyB0aGUgV29yaywgYnV0CisgICAgICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQorICAgICAgZGVzaWduYXRlZCBpbiB3cml0aW5nIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIgYXMgIk5vdCBhIENvbnRyaWJ1dGlvbi4iCisKKyAgICAgICJDb250cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CisgICAgICBvbiBiZWhhbGYgb2Ygd2hvbSBhIENvbnRyaWJ1dGlvbiBoYXMgYmVlbiByZWNlaXZlZCBieSBMaWNlbnNvciBhbmQKKyAgICAgIHN1YnNlcXVlbnRseSBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrLgorCisgICAyLiBHcmFudCBvZiBDb3B5cmlnaHQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIHRvIFlvdSBhIHBlcnBldHVhbCwKKyAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCisgICAgICBjb3B5cmlnaHQgbGljZW5zZSB0byByZXByb2R1Y2UsIHByZXBhcmUgRGVyaXZhdGl2ZSBXb3JrcyBvZiwKKyAgICAgIHB1YmxpY2x5IGRpc3BsYXksIHB1YmxpY2x5IHBlcmZvcm0sIHN1YmxpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHRoZQorICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4KKworICAgMy4gR3JhbnQgb2YgUGF0ZW50IExpY2Vuc2UuIFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCisgICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZQorICAgICAgKGV4Y2VwdCBhcyBzdGF0ZWQgaW4gdGhpcyBzZWN0aW9uKSBwYXRlbnQgbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUsCisgICAgICB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKKyAgICAgIHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlCisgICAgICBieSBzdWNoIENvbnRyaWJ1dG9yIHRoYXQgYXJlIG5lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGVpcgorICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQorICAgICAgd2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNoIENvbnRyaWJ1dGlvbihzKSB3YXMgc3VibWl0dGVkLiBJZiBZb3UKKyAgICAgIGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgKGluY2x1ZGluZyBhCisgICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBXb3JrCisgICAgICBvciBhIENvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzIGRpcmVjdAorICAgICAgb3IgY29udHJpYnV0b3J5IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcworICAgICAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlCisgICAgICBhcyBvZiB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuCisKKyAgIDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlCisgICAgICBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiBpbiBhbnkgbWVkaXVtLCB3aXRoIG9yIHdpdGhvdXQKKyAgICAgIG1vZGlmaWNhdGlvbnMsIGFuZCBpbiBTb3VyY2Ugb3IgT2JqZWN0IGZvcm0sIHByb3ZpZGVkIHRoYXQgWW91CisgICAgICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworICAgICAgKGEpIFlvdSBtdXN0IGdpdmUgYW55IG90aGVyIHJlY2lwaWVudHMgb2YgdGhlIFdvcmsgb3IKKyAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExpY2Vuc2U7IGFuZAorCisgICAgICAoYikgWW91IG11c3QgY2F1c2UgYW55IG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCisgICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kCisKKyAgICAgIChjKSBZb3UgbXVzdCByZXRhaW4sIGluIHRoZSBTb3VyY2UgZm9ybSBvZiBhbnkgRGVyaXZhdGl2ZSBXb3JrcworICAgICAgICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBhbmQKKyAgICAgICAgICBhdHRyaWJ1dGlvbiBub3RpY2VzIGZyb20gdGhlIFNvdXJjZSBmb3JtIG9mIHRoZSBXb3JrLAorICAgICAgICAgIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90IHBlcnRhaW4gdG8gYW55IHBhcnQgb2YKKyAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3JrczsgYW5kCisKKyAgICAgIChkKSBJZiB0aGUgV29yayBpbmNsdWRlcyBhICJOT1RJQ0UiIHRleHQgZmlsZSBhcyBwYXJ0IG9mIGl0cworICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKKyAgICAgICAgICBpbmNsdWRlIGEgcmVhZGFibGUgY29weSBvZiB0aGUgYXR0cmlidXRpb24gbm90aWNlcyBjb250YWluZWQKKyAgICAgICAgICB3aXRoaW4gc3VjaCBOT1RJQ0UgZmlsZSwgZXhjbHVkaW5nIHRob3NlIG5vdGljZXMgdGhhdCBkbyBub3QKKyAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKKyAgICAgICAgICBvZiB0aGUgZm9sbG93aW5nIHBsYWNlczogd2l0aGluIGEgTk9USUNFIHRleHQgZmlsZSBkaXN0cmlidXRlZAorICAgICAgICAgIGFzIHBhcnQgb2YgdGhlIERlcml2YXRpdmUgV29ya3M7IHdpdGhpbiB0aGUgU291cmNlIGZvcm0gb3IKKyAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwKKyAgICAgICAgICB3aXRoaW4gYSBkaXNwbGF5IGdlbmVyYXRlZCBieSB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaWYgYW5kCisgICAgICAgICAgd2hlcmV2ZXIgc3VjaCB0aGlyZC1wYXJ0eSBub3RpY2VzIG5vcm1hbGx5IGFwcGVhci4gVGhlIGNvbnRlbnRzCisgICAgICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZAorICAgICAgICAgIGRvIG5vdCBtb2RpZnkgdGhlIExpY2Vuc2UuIFlvdSBtYXkgYWRkIFlvdXIgb3duIGF0dHJpYnV0aW9uCisgICAgICAgICAgbm90aWNlcyB3aXRoaW4gRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlLCBhbG9uZ3NpZGUKKyAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKKyAgICAgICAgICB0aGF0IHN1Y2ggYWRkaXRpb25hbCBhdHRyaWJ1dGlvbiBub3RpY2VzIGNhbm5vdCBiZSBjb25zdHJ1ZWQKKyAgICAgICAgICBhcyBtb2RpZnlpbmcgdGhlIExpY2Vuc2UuCisKKyAgICAgIFlvdSBtYXkgYWRkIFlvdXIgb3duIGNvcHlyaWdodCBzdGF0ZW1lbnQgdG8gWW91ciBtb2RpZmljYXRpb25zIGFuZAorICAgICAgbWF5IHByb3ZpZGUgYWRkaXRpb25hbCBvciBkaWZmZXJlbnQgbGljZW5zZSB0ZXJtcyBhbmQgY29uZGl0aW9ucworICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgorICAgICAgZm9yIGFueSBzdWNoIERlcml2YXRpdmUgV29ya3MgYXMgYSB3aG9sZSwgcHJvdmlkZWQgWW91ciB1c2UsCisgICAgICByZXByb2R1Y3Rpb24sIGFuZCBkaXN0cmlidXRpb24gb2YgdGhlIFdvcmsgb3RoZXJ3aXNlIGNvbXBsaWVzIHdpdGgKKyAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCisKKyAgIDUuIFN1Ym1pc3Npb24gb2YgQ29udHJpYnV0aW9ucy4gVW5sZXNzIFlvdSBleHBsaWNpdGx5IHN0YXRlIG90aGVyd2lzZSwKKyAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yaworICAgICAgYnkgWW91IHRvIHRoZSBMaWNlbnNvciBzaGFsbCBiZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwgd2l0aG91dCBhbnkgYWRkaXRpb25hbCB0ZXJtcyBvciBjb25kaXRpb25zLgorICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlmeQorICAgICAgdGhlIHRlcm1zIG9mIGFueSBzZXBhcmF0ZSBsaWNlbnNlIGFncmVlbWVudCB5b3UgbWF5IGhhdmUgZXhlY3V0ZWQKKyAgICAgIHdpdGggTGljZW5zb3IgcmVnYXJkaW5nIHN1Y2ggQ29udHJpYnV0aW9ucy4KKworICAgNi4gVHJhZGVtYXJrcy4gVGhpcyBMaWNlbnNlIGRvZXMgbm90IGdyYW50IHBlcm1pc3Npb24gdG8gdXNlIHRoZSB0cmFkZQorICAgICAgbmFtZXMsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3MsIG9yIHByb2R1Y3QgbmFtZXMgb2YgdGhlIExpY2Vuc29yLAorICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCisgICAgICBvcmlnaW4gb2YgdGhlIFdvcmsgYW5kIHJlcHJvZHVjaW5nIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4KKworICAgNy4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yCisgICAgICBhZ3JlZWQgdG8gaW4gd3JpdGluZywgTGljZW5zb3IgcHJvdmlkZXMgdGhlIFdvcmsgKGFuZCBlYWNoCisgICAgICBDb250cmlidXRvciBwcm92aWRlcyBpdHMgQ29udHJpYnV0aW9ucykgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgorICAgICAgaW1wbGllZCwgaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIGFueSB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMKKyAgICAgIG9mIFRJVExFLCBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFksIG9yIEZJVE5FU1MgRk9SIEEKKyAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQorICAgICAgYXBwcm9wcmlhdGVuZXNzIG9mIHVzaW5nIG9yIHJlZGlzdHJpYnV0aW5nIHRoZSBXb3JrIGFuZCBhc3N1bWUgYW55CisgICAgICByaXNrcyBhc3NvY2lhdGVkIHdpdGggWW91ciBleGVyY2lzZSBvZiBwZXJtaXNzaW9ucyB1bmRlciB0aGlzIExpY2Vuc2UuCisKKyAgIDguIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5LiBJbiBubyBldmVudCBhbmQgdW5kZXIgbm8gbGVnYWwgdGhlb3J5LAorICAgICAgd2hldGhlciBpbiB0b3J0IChpbmNsdWRpbmcgbmVnbGlnZW5jZSksIGNvbnRyYWN0LCBvciBvdGhlcndpc2UsCisgICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQorICAgICAgbmVnbGlnZW50IGFjdHMpIG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzaGFsbCBhbnkgQ29udHJpYnV0b3IgYmUKKyAgICAgIGxpYWJsZSB0byBZb3UgZm9yIGRhbWFnZXMsIGluY2x1ZGluZyBhbnkgZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwKKyAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQorICAgICAgcmVzdWx0IG9mIHRoaXMgTGljZW5zZSBvciBvdXQgb2YgdGhlIHVzZSBvciBpbmFiaWxpdHkgdG8gdXNlIHRoZQorICAgICAgV29yayAoaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBkYW1hZ2VzIGZvciBsb3NzIG9mIGdvb2R3aWxsLAorICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKKyAgICAgIG90aGVyIGNvbW1lcmNpYWwgZGFtYWdlcyBvciBsb3NzZXMpLCBldmVuIGlmIHN1Y2ggQ29udHJpYnV0b3IKKyAgICAgIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHN1Y2ggZGFtYWdlcy4KKworICAgOS4gQWNjZXB0aW5nIFdhcnJhbnR5IG9yIEFkZGl0aW9uYWwgTGlhYmlsaXR5LiBXaGlsZSByZWRpc3RyaWJ1dGluZworICAgICAgdGhlIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLCBZb3UgbWF5IGNob29zZSB0byBvZmZlciwKKyAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCisgICAgICBvciBvdGhlciBsaWFiaWxpdHkgb2JsaWdhdGlvbnMgYW5kL29yIHJpZ2h0cyBjb25zaXN0ZW50IHdpdGggdGhpcworICAgICAgTGljZW5zZS4gSG93ZXZlciwgaW4gYWNjZXB0aW5nIHN1Y2ggb2JsaWdhdGlvbnMsIFlvdSBtYXkgYWN0IG9ubHkKKyAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCisgICAgICBvZiBhbnkgb3RoZXIgQ29udHJpYnV0b3IsIGFuZCBvbmx5IGlmIFlvdSBhZ3JlZSB0byBpbmRlbW5pZnksCisgICAgICBkZWZlbmQsIGFuZCBob2xkIGVhY2ggQ29udHJpYnV0b3IgaGFybWxlc3MgZm9yIGFueSBsaWFiaWxpdHkKKyAgICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRvciBieSByZWFzb24KKyAgICAgIG9mIHlvdXIgYWNjZXB0aW5nIGFueSBzdWNoIHdhcnJhbnR5IG9yIGFkZGl0aW9uYWwgbGlhYmlsaXR5LgorCisgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKKworICAgQVBQRU5ESVg6IEhvdyB0byBhcHBseSB0aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91ciB3b3JrLgorCisgICAgICBUbyBhcHBseSB0aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91ciB3b3JrLCBhdHRhY2ggdGhlIGZvbGxvd2luZworICAgICAgYm9pbGVycGxhdGUgbm90aWNlLCB3aXRoIHRoZSBmaWVsZHMgZW5jbG9zZWQgYnkgYnJhY2tldHMgIltdIgorICAgICAgcmVwbGFjZWQgd2l0aCB5b3VyIG93biBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4gKERvbid0IGluY2x1ZGUKKyAgICAgIHRoZSBicmFja2V0cyEpICBUaGUgdGV4dCBzaG91bGQgYmUgZW5jbG9zZWQgaW4gdGhlIGFwcHJvcHJpYXRlCisgICAgICBjb21tZW50IHN5bnRheCBmb3IgdGhlIGZpbGUgZm9ybWF0LiBXZSBhbHNvIHJlY29tbWVuZCB0aGF0IGEKKyAgICAgIGZpbGUgb3IgY2xhc3MgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgcHVycG9zZSBiZSBpbmNsdWRlZCBvbiB0aGUKKyAgICAgIHNhbWUgInByaW50ZWQgcGFnZSIgYXMgdGhlIGNvcHlyaWdodCBub3RpY2UgZm9yIGVhc2llcgorICAgICAgaWRlbnRpZmljYXRpb24gd2l0aGluIHRoaXJkLXBhcnR5IGFyY2hpdmVzLgorCisgICBDb3B5cmlnaHQgW3l5eXldIFtuYW1lIG9mIGNvcHlyaWdodCBvd25lcl0KKworICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KK11dPjwvc291cmNlPgorPC9ib2R5PgorPC9kb2N1bWVudD4KZGlmZiAtLWdpdCBhL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbnRlbnQveGRvY3MvbWFpbC1saXN0cy54bWwgYi9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL21haWwtbGlzdHMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxYTAzM2YKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL21haWwtbGlzdHMueG1sCkBAIC0wLDAgKzEsNjIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgZG9jdW1lbnQgUFVCTElDICItLy9BUEFDSEUvL0RURCBEb2N1bWVudGF0aW9uIFYxLjEvL0VOIiAiZG9jdW1lbnQtdjExLmR0ZCI+Cis8IS0tCitDb3B5cmlnaHQgMjAwMy0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+Cis8ZG9jdW1lbnQ+IAorICA8aGVhZGVyPiAKKyAgICA8dGl0bGU+WE1MIHNlY3VyaXR5IG1haWxpbmcgbGlzdDwvdGl0bGU+IAorICA8L2hlYWRlcj4gCisgIDxib2R5PiAKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5YTUwgc2VjdXJpdHkgbWFpbGluZyBsaXN0PC90aXRsZT4KKyAgICAgIDxwPgorCVRoZXJlIGV4aXN0cyBhIG1haWxpbmcgbGlzdCB3aGljaCB5b3UgY2FuIHN1YnNjcmliZSB0byBhc2sgcXVlc3Rpb25zOgorICAgICAgPC9wPgorICAgICAgPHA+CisJVGhlIDxqdW1wIGhyZWY9ImV4dDp4bWwuYXBhY2hlLm9yZy9tYWlsIj5lem1sbSBtYWlsaW5nIGxpc3QgY29udHJvbGxlcjwvanVtcD4gCisJYWNjZXB0cyBjb21tYW5kcyBieSBzZW5kaW5nIGVtYWlscyB0byBpdCwgZ2VuZXJhbGx5CisJbGlrZSB0aGUgZm9sbG93aW5nOgorICAgICAgPC9wPgorICAgICAgPHVsPgorCTxsaT4KKwkgIDxqdW1wIGhyZWY9ImV4dDptYWlsc3ViIj5zZWN1cml0eS1kZXYtc3Vic2NyaWJlPC9qdW1wPiB0byBzdWJzY3JpYmUKKwkgIHlvdXIgY3VycmVudCBlbWFpbCBhZGRyZXNzIHRvIHRoZSBsaXN0LgorCTwvbGk+CisJPGxpPgorCSAgPGp1bXAgaHJlZj0iZXh0Om1haWx1bnN1YiI+c2VjdXJpdHktZGV2LXVuc3Vic2NyaWJlPC9qdW1wPiB0bworCSAgPGVtPnVuPC9lbT5zdWJzY3JpYmUgeW91ciAqY3VycmVudCogZW1haWwgYWRkcmVzcyBmcm9tIHRoZSBsaXN0LgorCTwvbGk+CisJPGxpPgorCSAgPGp1bXAgaHJlZj0iZXh0Om1haWxoZWxwIj5zZWN1cml0eS1kZXYtaGVscDwvanVtcD4gdG8gZ2V0IEhlbHAgb24KKwkgIG1haWxpbmcgbGlzdCBjb21tYW5kcy4KKwk8L2xpPgorICAgICAgPC91bD4KKyAgICA8L3NlY3Rpb24+CisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+TWFpbCBBcmNoaXZlczwvdGl0bGU+CisgICAgICA8cD4KKwlBbiBhcmNoaXZlIG9mIHRoaXMgbGlzdCBpcyBrZXB0IHVuZGVyIAorCTxqdW1wIGhyZWY9ImV4dDpnbWFuZSI+CisJICBodHRwOi8vbmV3cy5nbWFuZS5vcmcvdGhyZWFkLnBocD9ncm91cD1nbWFuZS50ZXh0LnhtbC5zZWN1cml0eS5kZXZlbAorCTwvanVtcD4KKyAgICAgIDwvcD4KKyAgICAgIDxwPgorCUFub3RoZXIgYXJjaGl2ZSBpcyBoZWxkIGJ5IDxqdW1wIGhyZWY9ImV4dDpuYWdveWEiPlRoZSBFeWVCcm93c2UgTWFpbCBBcmNoaXZlCisJPC9qdW1wPi4KKyAgICAgIDwvcD4KKyAgICA8L3NlY3Rpb24+CisgIDwvYm9keT4KKzwvZG9jdW1lbnQ+CmRpZmYgLS1naXQgYS9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL3NpdGUueG1sIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9zaXRlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTY5ZWMxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy9zaXRlLnhtbApAQCAtMCwwICsxLDE5NiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8IURPQ1RZUEUgc2l0ZQorWworICA8IUVOVElUWSAlIHhtbHNlY19lbnRpdGllcyBTWVNURU0gInhtbHNlY19lbnRpdGllcy5lbnQiPiAKKyAgJXhtbHNlY19lbnRpdGllczsgCitdPgorPCEtLQorQ29weXJpZ2h0IDIwMDMtMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKworTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorPHNpdGUgbGFiZWw9IlhNTCBTZWN1cml0eSIgaHJlZj0iIiB4bWxucz0iaHR0cDovL2FwYWNoZS5vcmcvZm9ycmVzdC9saW5rbWFwLzEuMCIgdGFiPSJob21lIj4KKworICA8YWJvdXQgbGFiZWw9IkFib3V0Ij4KKyAgICA8aW5kZXggbGFiZWw9IkluZGV4IiBocmVmPSJpbmRleC5odG1sIi8+CisgICAgPCEtLSAgICA8ZG93bmxvYWQgbGFiZWw9IkRvd25sb2FkIiBocmVmPSJodHRwOi8veG1sLmFwYWNoZS5vcmcvc2VjdXJpdHkvZGlzdC8iLz4gLS0+CisgICAgPCEtLSA8ZG93bmxvYWQgbGFiZWw9IkRvd25sb2FkIiBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvZHluL2Nsb3Nlci5jZ2kveG1sL3NlY3VyaXR5LyIvPiAtLT4KKwk8ZG93bmxvYWQgbGFiZWw9IkRvd25sb2FkIiBocmVmPSJkb3dubG9hZC5odG1sIi8+CisgICAgPGZhcSBsYWJlbD0iRkFRcyIgaHJlZj0iZmFxLmh0bWwiLz4KKyAgICA8d2hvIGxhYmVsPSJXaG8gd2UgYXJlIiBocmVmPSJ3aG8uaHRtbCIvPgorICAgIDx0b2RvIGxhYmVsPSJUb2RvIiBocmVmPSJ0b2RvLmh0bWwiLz4KKyAgICA8Y2hhbmdlcyBsYWJlbD0iQ2hhbmdlcyIgaHJlZj0iY2hhbmdlcy5odG1sIi8+CisgICAgPGhpc3RvcnkgbGFiZWw9Ikhpc3RvcnkiIGhyZWY9Imhpc3RvcnkuaHRtbCIvPgorICAgIDxsaWNlbnNlIGxhYmVsPSJMaWNlbnNlIiBocmVmPSJsaWNlbnNlLmh0bWwiLz4KKyAgPC9hYm91dD4KKworICA8Z2V0dGluZy1pbnZvbHZlZCBsYWJlbD0iR2V0dGluZyBJbnZvbHZlZCI+CisgICAgPGNvbnRyaWIgbGFiZWw9IkNvbnRyaWJ1dGluZyIgaHJlZj0iY29udHJpYi5odG1sIi8+CisgICAgPFNWTiBsYWJlbD0iU1ZOIiBocmVmPSJodHRwOi8vc3ZuLmFwYWNoZS5vcmcvdmlld3ZjL3htbC9zZWN1cml0eS90cnVuay8iLz4KKyAgICA8bWFpbC1saXN0cyBsYWJlbD0iTWFpbCBsaXN0cyIgaHJlZj0ibWFpbC1saXN0cy5odG1sIi8+CisgIDwvZ2V0dGluZy1pbnZvbHZlZD4KKworICA8amF2YSBsYWJlbD0iSmF2YSIgaHJlZj0iSmF2YS8iIHRhYj0iamF2YSI+CisgICAgPCEtLSBjaGFuZ2VzIGxhYmVsPSJDaGFuZ2VzIiBocmVmPSJjaGFuZ2VzLmh0bWwiLyAtLT4KKyAgICA8aW5kZXggbGFiZWw9IkluZGV4IiBocmVmPSJpbmRleC5odG1sIi8+CisgICAgPGluc3RhbGxhdGlvbiBsYWJlbD0iSW5zdGFsbGF0aW9uIiBocmVmPSJpbnN0YWxsYXRpb24uaHRtbCIgLz4KKyAgICA8ZXhhbXBsZXMgbGFiZWw9IkV4YW1wbGVzIiBocmVmPSJleGFtcGxlcy5odG1sIi8+CisgICAgPGZhcV9qIGxhYmVsPSJGQVFzIiBocmVmPSJmYXEuaHRtbCIvPgorICAgIDxhcGkgbGFiZWw9IkFQSSBEb2NzIiBocmVmPSJhcGkuaHRtbCIgLz4KKyAgICA8aW50ZXJvcCBsYWJlbD0iSW50ZXJvcGVyYWJpbGl0eSIgaHJlZj0iaW50ZXJvcC5odG1sIi8+CisgICAgPGd1bXAgbGFiZWw9Ikd1bXAgcmVzdWx0cyIKKwkJICBocmVmPSJodHRwOi8vbHNkLnN0dWRlbnQudXR3ZW50ZS5ubC9ndW1wL3htbC1zZWN1cml0eS94bWwtc2VjdXJpdHkuaHRtbCIgLz4KKyAgICA8cmVzb2x2ZXJzIGxhYmVsPSJSZXNvbHZlcm1hbmlhIiBocmVmPSJyZXNvbHZlci5odG1sIi8+CisgIDwvamF2YT4KKworICA8YyBsYWJlbD0iQysrIiBocmVmPSJjLyIgdGFiPSJjcHAiPgorICAgIDxpbmRleCBsYWJlbD0iSW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiLz4KKwk8aW5zdGFsbCBsYWJlbD0iSW5zdGFsbGF0aW9uIiBocmVmPSJpbnN0YWxsYXRpb24uaHRtbCIvPgorICAgIDxjZmFxIGxhYmVsPSJGQVFzIiBocmVmPSJmYXEuaHRtbCIvPgorCTxleHRlcm5hbCBsYWJlbD0iQVBJIERvY3MiIGhyZWY9ImFwaURvY3MvaW5kZXguaHRtbCIvPgorCTxleHRlcm5hbCBsYWJlbD0iTmlnaHRseSBBUEkgYnVpbGQiIGhyZWY9Imh0dHA6Ly9uYWdveWEuYXBhY2hlLm9yZy9+YmxhdXRlbmIveG1sLXNlY3VyaXR5LWMvYXBpRG9jcy8iLz4KKyAgICA8dG9vbHMgbGFiZWw9IlRvb2xzIiBocmVmPSJ0b29scy5odG1sIi8+CisgICAgPHJlbGVhc2VzIGxhYmVsPSJSZWxlYXNlIEluZm9ybWF0aW9uIiBocmVmPSJyZWxlYXNlcy5odG1sIi8+CisgICAgPGNyZWRpdHMgbGFiZWw9IkNyZWRpdHMiIGhyZWY9ImNyZWRpdHMuaHRtbCIvPgorICAgIDxpbnRlcm9wIGxhYmVsPSJJbnRlcm9wZXJhYmlsaXR5IiBocmVmPSJpbnRlcm9wLmh0bWwiLz4KKyAgPC9jPgorCisgIDxjcHJvZyBsYWJlbD0iUHJvZ3JhbW1pbmciIGhyZWY9ImMvIiB0YWI9ImNwcCI+CisJPHNpZ25hdHVyZSBsYWJlbD0iU2lnbmF0dXJlcyIgaHJlZj0icHJvZ3JhbW1pbmcuaHRtbCIvPgorCTxlbmMgbGFiZWw9IkVuY3J5cHRpb24iIGhyZWY9InByb2dfZW5jLmh0bWwiLz4KKyAgPC9jcHJvZz4KKworICA8cmVmZXJlbmNlcyBsYWJlbD0iUmVmZXJlbmNlcyI+CisgICAgPHhtbGRzaWcgbGFiZWw9IlczQyBYTUwgRFNpZyIgaHJlZj0iaHR0cDovL3d3dy53M2Mub3JnL1NpZ25hdHVyZS8iLz4KKyAgICA8eG1sZW5jIGxhYmVsPSJXM0MgWE1MIEVuYyIgaHJlZj0iaHR0cDovL3d3dy53M2Mub3JnL0VuY3J5cHRpb24vIi8+CisgICAgPHhtbHhrbXMgbGFiZWw9IlczQyBYTUwgWEtNUyIgaHJlZj0iaHR0cDovL3d3dy53M2Mub3JnLzIwMDEvWEtNUy8iLz4KKyAgPC9yZWZlcmVuY2VzPgorCisgIDxleHRlcm5hbC1yZWZzPgorICAgIDwhLS0gTk9URTogdGhlIGxhYmVsIGF0dHMgYXJlIG5vdCBkZWZpbmVkL3VzZWQgaW4gRm9ycmVzdDsgSSBhZGRlZCB0aGVtIGZvciAtLT4KKyAgICA8IS0tIGxhdGVyIHVzZS4gS2FyZWwuIC0tPgorCisgICAgPCEtLSBDaHJpc3RpYW4ncyBzZWN1cml0eSBwYWdlIC0tPgorICAgIDxjaHJpc3QtcGFnZSBsYWJlbD0iVGhlIFhNTCBTZWN1cml0eSBwYWdlIiBocmVmPSJodHRwOi8vd3d3Lm51ZS5ldC1pbmYudW5pLXNpZWdlbi5kZS9+Z2V1ZXItcG9sbG1hbm4veG1sX3NlY3VyaXR5Lmh0bWwiLz4KKworICAgIDwhLS0gVzNDIC0tPgorICAgIDx3M2MgaHJlZj0iaHR0cDovL3d3dy53M2Mub3JnLyI+CisgICAgICA8eG1sZHNpZyBsYWJlbD0iJnhtbGRzaWc7IiBocmVmPSJTaWduYXR1cmUiLz4KKyAgICAgIDx4bWxkc2lnX2phdmFfc3VwcG9ydGVkIGxhYmVsPSImc3VwcF9qYXZhX2RzaWc7IiBocmVmPSImc3VwcF9qYXZhX2RzaWdfcmVmOyIvPiAKKyAgICAgIDx4bWxkc2lnX0Nfc3VwcG9ydGVkIGxhYmVsPSImc3VwcF9DX2RzaWc7IiBocmVmPSImc3VwcF9DX2RzaWdfcmVmOyIvPiAKKyAgICAgIDx4bWxlbmNfamF2YV9zdXBwb3J0ZWQgbGFiZWw9IiZzdXBwX2phdmFfZW5jOyIgaHJlZj0iJnN1cHBfamF2YV9lbmNfcmVmOyIvPiAKKyAgICAgIDx4bWxlbmNfQ19zdXBwb3J0ZWQgbGFiZWw9IiZzdXBwX0NfZW5jOyIgaHJlZj0iJnN1cHBfQ19lbmNfcmVmOyIvPiAKKyAgICAgIDx4bWxlbmMgbGFiZWw9IiZ4bWxlbmM7IiBocmVmPSJFbmNyeXB0aW9uIi8+CisgICAgICA8YzE0biBsYWJlbD0iQzE0Ti1zdXBwb3J0ZWQiIGhyZWY9IlRSLzIwMDIvUkVDLXhtbC1leGMtYzE0bi0yMDAyMDcxOC8iIC8+CisgICAgICA8YzE0bi1pbnRlcm9wIGxhYmVsPSJDMTROIHRlc3RzIiBocmVmPSJTaWduYXR1cmUvMjAwMi8wMi8wMS1leGMtYzE0bi1pbnRlcm9wLmh0bWwiIC8+CisgICAgICA8eHBhdGgtZmlsdGVydjIgbGFiZWw9IlhNTERTaWcgWFBhdGggRmlsdGVyIDIuMCIgaHJlZj0iVFIvMjAwMi9DUi14bWxkc2lnLWZpbHRlcjItMjAwMjA3MTgvIiAvPgorICAgICAgPHhwYXRoIGxhYmVsPSJYTUwgUGF0aCBMYW5ndWFnZSAoWFBhdGgpIFZlcnNpb24gMS4wIiBocmVmPSJUUi94cGF0aCIvPgorICAgICAgPGRvbSBsYWJlbD0iRE9NIiBocmVmPSJET00iLz4KKyAgICAgIDxkb20yIGxhYmVsPSJET00gbGV2ZWwgMiIgaHJlZj0iRE9NLUxldmVsLTIvIi8+ICAgICAgCisgICAgPC93M2M+CisKKyAgICA8IS0tIFNBWCAtLT4KKyAgICA8c2F4IGxhYmVsPSJTQVgiIGhyZWY9Imh0dHA6Ly93d3cubWVnZ2luc29uLmNvbS9TQVgvc2F4Lmh0bWwiLz4KKyAgICA8c2F4MiBsYWJlbD0iU0FYIDIiIGhyZWY9Imh0dHA6Ly93d3cubWVnZ2luc29uLmNvbS9TQVgvSmF2YS9pbmRleC5odG1sIi8+CisKKyAgICA8IS0tIEFwYWNoZSAtLT4KKyAgICA8eG1sLmFwYWNoZS5vcmcgaHJlZj0iaHR0cDovL3htbC5hcGFjaGUub3JnLyI+CisgICAgICA8eG1sNGotdXNlZCBsYWJlbD0iQXBhY2hlIFhlcmNlczIiIGhyZWY9InhlcmNlczItai9pbmRleC5odG1sIi8+CisgICAgICA8QXBhY2hlTGljZW5zZSBsYWJlbD0iVGhlIEFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMSIgaHJlZj0iZGlzdC9MSUNFTlNFLnR4dCIvPgorICAgICAgPGZvcnJlc3QgaHJlZj0iZm9ycmVzdC8iLz4KKyAgICAgIDxtYWlsIGhyZWY9Im1haWwuaHRtbCIvPgorICAgIDwveG1sLmFwYWNoZS5vcmc+CisgICAgPGFudCBsYWJlbD0iQW50IiBocmVmPSJodHRwOi8vamFrYXJ0YS5hcGFjaGUub3JnL2FudC9pbmRleC5odG1sIi8+CisgICAgPGJ1Z3ppbGxhIGxhYmVsPSJCdWd6aWxsYSAodGhlIEFwYWNoZSBidWcgZGF0YWJhc2UpIiBocmVmPSJodHRwOi8vbmFnb3lhLmFwYWNoZS5vcmcvYnVnemlsbGEiLz4KKyAgICA8YnVnbGlzdCBsYWJlbD0iWGFsYW5KMiBvcGVuIGJ1Z3MiIGhyZWY9Imh0dHA6Ly9uYWdveWEuYXBhY2hlLm9yZy9idWd6aWxsYS9idWdsaXN0LmNnaT9idWdfc3RhdHVzPU5FVyZhbXA7YnVnX3N0YXR1cz1BU1NJR05FRCZhbXA7YnVnX3N0YXR1cz1SRU9QRU5FRCZhbXA7ZW1haWwxPSZhbXA7ZW1haWx0eXBlMT1zdWJzdHJpbmcmYW1wO2VtYWlsYXNzaWduZWRfdG8xPTEmYW1wO2VtYWlsMj0mYW1wO2VtYWlsdHlwZTI9c3Vic3RyaW5nJmFtcDtlbWFpbHJlcG9ydGVyMj0xJmFtcDtidWdpZHR5cGU9aW5jbHVkZSZhbXA7YnVnX2lkPSZhbXA7Y2hhbmdlZGluPSZhbXA7dm90ZXM9JmFtcDtjaGZpZWxkZnJvbT0mYW1wO2NoZmllbGR0bz1Ob3cmYW1wO2NoZmllbGR2YWx1ZT0mYW1wO3Byb2R1Y3Q9WGFsYW5KMiZhbXA7c2hvcnRfZGVzYz0mYW1wO3Nob3J0X2Rlc2NfdHlwZT1zdWJzdHJpbmcmYW1wO2xvbmdfZGVzYz0mYW1wO2xvbmdfZGVzY190eXBlPXN1YnN0cmluZyZhbXA7YnVnX2ZpbGVfbG9jPSZhbXA7YnVnX2ZpbGVfbG9jX3R5cGU9c3Vic3RyaW5nJmFtcDtrZXl3b3Jkcz0mYW1wO2tleXdvcmRzX3R5cGU9YW55d29yZHMmYW1wO2ZpZWxkMC0wLTA9bm9vcCZhbXA7dHlwZTAtMC0wPW5vb3AmYW1wO3ZhbHVlMC0wLTA9JmFtcDtjbWR0eXBlPWRvaXQmYW1wO29yZGVyPSUyN0ltcG9ydGFuY2UlMjciLz4KKyAgICAKKyAgICA8IS0tIEphdmEgLS0+CisgICAgPGphdmE+CisgICAgICA8ZG9jcz4KKwk8ZnVsbC1hcGkgaHJlZj0iSmF2YS9hcGkvaW5kZXguaHRtbCIvPgorCTxoaWVyYWNocnkgaHJlZj0iSmF2YS9hcGkvb3ZlcnZpZXctdHJlZS5odG1sIi8+CisJPGd1bXBkb2NzIGhyZWY9Imh0dHA6Ly9uYWdveWEuYXBhY2hlLm9yZy9ndW1wL2phdmFkb2MveG1sLXNlY3VyaXR5L2J1aWxkL2RvYy9odG1sL2FwaS9pbmRleC5odG1sIiAvPgorICAgICAgPC9kb2NzPgorICAgICAgPGpjZT4KKwk8ZG93bmxvYWQgaHJlZj0iaHR0cDovL3d3dy5ib3VuY3ljYXN0bGUub3JnL2Rvd25sb2FkLyI+CisJICA8ZmlsZSBocmVmPSImamNlX2Rvd25sb2FkX2ZpbGU7Ii8+CisJPC9kb3dubG9hZD4KKyAgICAgIDwvamNlPgorICAgIDwvamF2YT4KKworICAgIDwhLS0gQ3J5cHRvIGFuZCBDU1BzIC0tPgorICAgIDxoYWMgbGFiZWw9IiZoYWM7IiBocmVmPSJodHRwOi8vd3d3LmNhY3IubWF0aC51d2F0ZXJsb28uY2EvaGFjLyIvPgorICAgIDxib3VuY3kgbGFiZWw9IkJvdWN5IENhc3RsZSIgaHJlZj0iaHR0cDovL3d3dy5ib3VuY3ljYXN0bGUub3JnLyIvPgorCisgICAgPCEtLSBTVU4gLS0+CisgICAgPGphdmEgbGFiZWw9IkphdmEgKFRNKSAyIFBsYXRmb3JtIFN0YW5kYXJkIEVkaXRpb24gdjEuNC4wIgorCWhyZWY9Imh0dHA6Ly9qYXZhLnN1bi5jb20vajJzZS8xLjQvaW5kZXguaHRtbCIvPgorICAgIDxqYXZhZm9ydW0gbGFiZWw9IlNVTiBqYXZhIGZvcnVtIiBocmVmPSJodHRwOi8vZm9ydW0uamF2YS5zdW4uY29tLyIvPgorICAgIDxqYXhwIGxhYmVsPSJKYXZhIEFQSSBmb3IgWE1MIFBhcnNpbmcgMS4wIiBocmVmPSJodHRwOi8vamF2YS5zdW4uY29tL3htbC9kb2NzL2FwaS9pbmRleC5odG1sIi8+CisKKyAgICA8IS0tIEdlbmVyYWwgaW5mb3JtYXRpb24gLS0+CisgICAgPHp2b24gbGFiZWw9IlpWT04iIGhyZWY9Imh0dHA6Ly93d3cuenZvbi5vcmcvIi8+CisgICAgPHhtbGZhcSBsYWJlbD0iWE1MRkFRIiBocmVmPSJodHRwOi8vd3d3LnVjYy5pZS94bWwvIi8+CisgICAgPGJzZiBsYWJlbD0iQmVhbiBTY3JpcHRpbmcgRnJhbWV3b3JrIChCU0YpIiBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vZGV2ZWxvcGVyd29ya3MvcHJvamVjdHMvYnNmIi8+CisKKyAgICA8IS0tIE1haWxpbmcgbGlzdCAtLT4KKyAgICA8bmFnb3lhIGxhYmVsPSJFeWVCcm93c2VMaXN0IiBocmVmPSJodHRwOi8vbmFnb3lhLmFwYWNoZS5vcmcvZXllYnJvd3NlL1N1bW1hcml6ZUxpc3Q/bGlzdElkPTcyIi8+CisgICAgPGdtYW5lIGxhYmVsPSJHbWFuZSIgaHJlZj0iaHR0cDovL25ld3MuZ21hbmUub3JnL3RocmVhZC5waHA/Z3JvdXA9Z21hbmUudGV4dC54bWwuc2VjdXJpdHkuZGV2ZWwiLz4KKyAgICA8bWFpbGhlbHAgbGFiZWw9Im1haWxpbmdsaXN0aGVscCIgaHJlZj0ibWFpbHRvOnNlY3VyaXR5LWRldi1oZWxwQHhtbC5hcGFjaGUub3JnIi8+CisgICAgPG1haWxzdWIgbGFiZWw9Im1haWxpbmdsaXN0c3Vic2NyaWJlIiBocmVmPSJtYWlsdG86c2VjdXJpdHktZGV2LXN1YnNjcmliZUB4bWwuYXBhY2hlLm9yZyIvPgorICAgIDxtYWlsdW5zdWIgbGFiZWw9Im1haWxpbmdsaXN0dW5zdWJzY3JpYmUiIGhyZWY9Im1haWx0bzpzZWN1cml0eS1kZXYtdW5zdWJzY3JpYmVAeG1sLmFwYWNoZS5vcmciLz4KKworICAgIDwhLS0gQ29udGFjdHMgKHRoaXMgc2hvdWxkIGNoYW5nZSBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIEZvcnJlc3QpIC0tPgorICAgIDxnZXVlcnAgbGFiZWw9IkNocmlzdGlhbiBHZXVlci1Qb2xsbWFubiIgaHJlZj0ibWFpbHRvOmdldWVycEBhcGFjaGUub3JnIi8+CisKKyAgICA8IS0tIExpbmtzIHRvIHNwZWNpZmljIGVtYWlscyAtLT4gICAgICAKKyAgICA8bWFpbD4KKyAgICAgIDxsaW5rbWFwcyBocmVmPSJodHRwOi8vbWFyYy50aGVhaW1zZ3JvdXAuY29tLz9sPWZvcnJlc3QtZGV2JmFtcDttPTEwMzQ0NDAyODEyOTI4MSZhbXA7dz0yIi8+CisgICAgICA8c2VtYW50aWMtbGlua2luZyBocmVmPSJodHRwOi8vbWFyYy50aGVhaW1zZ3JvdXAuY29tLz9sPWZvcnJlc3QtZGV2JmFtcDttPTEwMzA5NzgwODMxODc3MyZhbXA7dz0yIi8+CisgICAgICA8aW5wdXRtb2R1bGV0cmFuc2Zvcm1lcgorICAgICAgICBocmVmPSJodHRwOi8vbWFyYy50aGVhaW1zZ3JvdXAuY29tLz90PTEwMzk5MjcwODgwMDAwMSZhbXA7cj0xJmFtcDt3PTIiLz4KKyAgICAgIDxsaW5rcmV3cml0ZXJ0cmFuc2Zvcm1lciBocmVmPSJodHRwOi8vbmFnb3lhLmFwYWNoZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE1NjExIi8+CisgICAgICA8eHBhdGh0cmFuc2Zvcm1lciBocmVmPSJodHRwOi8vbmFnb3lhLmFwYWNoZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTEyMjM1Ii8+CisgICAgPC9tYWlsPgorICA8L2V4dGVybmFsLXJlZnM+CisKKzwvc2l0ZT4KKworCisKKworCisKKworCisKKworCisKKzwhLS0gS2VlcCB0aGlzIGNvbW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZQorTG9jYWwgdmFyaWFibGVzOgorbW9kZTogeG1sCitzZ21sLW9taXR0YWc6bmlsCitzZ21sLXNob3J0dGFnOm5pbAorc2dtbC1uYW1lY2FzZS1nZW5lcmFsOm5pbAorc2dtbC1nZW5lcmFsLWluc2VydC1jYXNlOmxvd2VyCitzZ21sLW1pbmltaXplLWF0dHJpYnV0ZXM6bmlsCitzZ21sLWFsd2F5cy1xdW90ZS1hdHRyaWJ1dGVzOnQKK3NnbWwtaW5kZW50LXN0ZXA6Mgorc2dtbC1pbmRlbnQtZGF0YTp0CitzZ21sLXBhcmVudC1kb2N1bWVudDpuaWwKK3NnbWwtZXhwb3NlZC10YWdzOm5pbAorc2dtbC1sb2NhbC1jYXRhbG9nczpuaWwKK3NnbWwtbG9jYWwtZWNhdC1maWxlczpuaWwKK0VuZDoKKy0tPgpkaWZmIC0tZ2l0IGEvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy90YWJzLnhtbCBiL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbnRlbnQveGRvY3MvdGFicy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjE3NmFjNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbnRlbnQveGRvY3MvdGFicy54bWwKQEAgLTAsMCArMSwzNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSB0YWJzIFBVQkxJQyAiLS8vQVBBQ0hFLy9EVEQgQ29jb29uIERvY3VtZW50YXRpb24gVGFiIFYxLjAvL0VOIiAidGFiLWNvY29vbi12MTAuZHRkIj4KKzwhLS0KK0NvcHlyaWdodCAyMDAzLTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisKK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworPHRhYnMgc29mdHdhcmU9IlhNTCBTZWN1cml0eSIKKyAgICB0aXRsZT0iQXBhY2hlIFhNTCBTZWN1cml0eSIKKyAgICBjb3B5cmlnaHQ9IkB5ZWFyQCBUaGUgQXBhY2hlIEZvdW5kYXRpb24iCisgICAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorCisgICAgPCEtLSBUaGUgcnVsZXMgYXJlOgorICAgIEBkaXIgd2lsbCBhbHdheXMgaGF2ZSAvaW5kZXguaHRtbCBhZGRlZC4KKyAgICBAaHJlZiBpcyBub3QgbW9kaWZpZWQgdW5sZXNzIGl0IGlzIHJvb3QtcmVsYXRpdmUgYW5kIG9idmlvdXNseSBzcGVjaWZpZXMgYQorICAgIGRpcmVjdG9yeSAoZW5kcyBpbiAnLycpLCBpbiB3aGljaCBjYXNlIC9pbmRleC5odG1sIHdpbGwgYmUgYWRkZWQKKyAgICAtLT4KKworICAgIDx0YWIgaWQ9ImhvbWUiIGxhYmVsPSJIb21lIiBkaXI9IiIvPgorICAgIDx0YWIgaWQ9ImphdmEiIGxhYmVsPSJKYXZhIiBkaXI9IkphdmEiLz4KKyAgICA8dGFiIGlkPSJjcHAiIGxhYmVsPSJDKysiIGRpcj0iYyIvPgorCis8L3RhYnM+CmRpZmYgLS1naXQgYS9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL3doby54bWwgYi9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL3doby54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk2YmRkZgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL2NvbnRlbnQveGRvY3Mvd2hvLnhtbApAQCAtMCwwICsxLDgyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIGRvY3VtZW50IFBVQkxJQyAiLS8vQVBBQ0hFLy9EVEQgRG9jdW1lbnRhdGlvbiBWMS4xLy9FTiIgImRvY3VtZW50LXYxMS5kdGQiPgorPCEtLQorQ29weXJpZ2h0IDIwMDMtMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKworTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorPGRvY3VtZW50PgorICA8aGVhZGVyPgorICAgIDx0aXRsZT5XaG8gd2UgYXJlPC90aXRsZT4KKyAgPC9oZWFkZXI+CisgIDxib2R5PgorICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlRoZSBBcGFjaGUgWE1MLVNlY3VyaXR5IENvbW11bml0eTwvdGl0bGU+CisgICAgICA8cD4gVGhlIFhNTC1TZWN1cml0eSBQcm9qZWN0IG9wZXJhdGVzIG9uIGEgbWVyaXRvY3JhY3k6IHRoZSBtb3JlIHlvdSBkbywgdGhlCisgICAgICAgIG1vcmUgcmVzcG9uc2liaWxpdHkgeW91IHdpbGwgb2J0YWluLiBUaGlzIHBhZ2UgbGlzdHMgYWxsIG9mIHRoZSBwZW9wbGUgd2hvIGhhdmUKKyAgICAgICAgZ29uZSB0aGUgZXh0cmEgbWlsZSBhbmQgYXJlIENvbW1pdHRlcnMuIElmIHlvdSB3b3VsZCBsaWtlIHRvIGdldCBpbnZvbHZlZCwgdGhlCisgICAgICAgIGZpcnN0IHN0ZXAgaXMgdG8gam9pbiB0aGUgbWFpbGluZyBsaXN0cy4gPC9wPgorICAgICAgPHA+IFdlIGFzayB0aGF0IHlvdSBwbGVhc2UgZG8gbm90IHNlbmQgdXMgZW1haWxzIHByaXZhdGVseSBhc2tpbmcgZm9yCisgICAgICAgIHN1cHBvcnQuIFdlIGFyZSBub24tcGFpZCB2b2x1bnRlZXJzIHdobyBoZWxwIG91dCB3aXRoIHRoZSBwcm9qZWN0IGFuZCB3ZSBkbyBub3QKKyAgICAgICAgbmVjZXNzYXJpbHkgaGF2ZSB0aGUgdGltZSBvciBlbmVyZ3kgdG8gaGVscCBwZW9wbGUgb24gYW4gaW5kaXZpZHVhbCBiYXNpcy4KKyAgICAgICAgSW5zdGVhZCwgd2UgaGF2ZSBzZXQgdXAgbWFpbGluZyBsaXN0cyB3aGljaCBvZnRlbiBjb250YWluIGh1bmRyZWRzIG9mCisgICAgICAgIGluZGl2aWR1YWxzIHdobyB3aWxsIGhlbHAgYW5zd2VyIGRldGFpbGVkIHJlcXVlc3RzIGZvciBoZWxwLiBUaGUgYmVuZWZpdCBvZgorICAgICAgICB1c2luZyBtYWlsaW5nIGxpc3RzIG92ZXIgcHJpdmF0ZSBjb21tdW5pY2F0aW9uIGlzIHRoYXQgaXQgaXMgYSBzaGFyZWQgcmVzb3VyY2UKKyAgICAgICAgd2hlcmUgb3RoZXJzIGNhbiBhbHNvIGxlYXJuIGZyb20gY29tbW9uIG1pc3Rha2VzIGFuZCBhcyBhIGNvbW11bml0eSB3ZSBhbGwgZ3JvdworICAgICAgICB0b2dldGhlci48L3A+CisgICAgPC9zZWN0aW9uPgorICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPkNvbW1pdHRlcnM8L3RpdGxlPgorICAgICAgPHA+CisgICAgICAgIFRoZSBmb2xsb3dpbmcgcGVvcGxlIGFyZSBjdXJyZW50bHkgYWN0aXZlIGluIHRoZSBYTUwgU2VjdXJpdHkgcHJvamVjdCA6CisgICAgICA8L3A+CisgICAgICA8dWw+CisgICAgICAgIDxsaT4gW0JMXSBCZXJpbiBMYXV0ZW5iYWNoIChiZXJpbkFUb3plbWFpbC5jb20uYXUpIDwvbGk+CisgICAgICAgIDxsaT4gW0FYTF0gQXhsIE1hdHRoZXVzIChhbWF0dGhldUFUYXBhY2hlLm9yZykgPC9saT4KKyAgICAgICAgPGxpPiBbRUtdIEVyd2luIHZhbiBkZXIgS29vZ2ggKGVyd2luQVRrb29naC5jb20pIDwvbGk+CisgICAgICAgIDxsaT4gW1JCXSBSYXVsIEJlbml0byBHYXJjaWEgKHJhdWwtaW5mb0FUci1iZy5jb20pIDwvbGk+CisgICAgICAgIDxsaT4gW1ZNXSBWaXNoYWwgTWFoYWphbiAodm1haGFqYW5BVGFtYmVycG9pbnQuY29tKSA8L2xpPgorICAgICAgICA8bGk+IFtNVF0gTWlsYW4gVG9taWMgKG1pbGFuLnNldGNjZS5vcmcpIDwvbGk+CisgICAgICAgIDxsaT4gW1NNXSBTZWFuIE11bGxhbiAoc2Vhbi5tdWxsYW5BVHN1bi5jb20pIDwvbGk+CisgICAgICAgIDxsaT4gW1NDXSBTY290dCBDYW50b3IgKGNhbnRvci4yQVRvc3UuZWR1KSA8L2xpPgorICAgICAgICA8bGk+IFtDT10gQ29sbSBPIGhFaWdlYXJ0YWlnaCAoY29oZWlnZWFBVGFwYWNoZS5vcmcpIDwvbGk+CisgICAgICA8L3VsPgorICAgICAgPHA+CisgICAgICAgIFRoZSBmb2xsb3dpbmcgcGVvcGxlIGFyZSBjdXJyZW50bHkgbm90IGFjdGl2ZSBpbiB0aGUgcHJvamVjdCA6CisgICAgICA8L3A+CisgICAgICA8dWw+CisgICAgICAgIDxsaT4gW0NHUF0gQ2hyaXN0aWFuIEdldWVyLVBvbGxtYW5uIChjaHJpc3RpYW4uZ2V1ZXItcG9sbG1hbm5BVHdlYi5kZSkgPGJyLz4KKyAgICAgICAgICAgICBDaHJpc3RpYW4gZnVuZGVkIHRoZSBYTUwgU2VjdXJpdHkgcHJvamVjdCBpbiAyMDAyIGJ1dCBtdXN0IG5vdCBiZSAKKyAgICAgICAgICAgICBhY3RpdmVseSBjb250cmlidXRpbmcgd2hpbGUgd29ya2luZyBmb3IgTWljcm9zb2Z0LiA8L2xpPgorICAgICAgPC91bD4KKyAgICA8L3NlY3Rpb24+CisgIDwvYm9keT4KKzwvZG9jdW1lbnQ+CisKKzwhLS0gS2VlcCB0aGlzIGNvbW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZQorTG9jYWwgdmFyaWFibGVzOgorbW9kZTogeG1sCitzZ21sLW9taXR0YWc6bmlsCitzZ21sLXNob3J0dGFnOm5pbAorc2dtbC1uYW1lY2FzZS1nZW5lcmFsOm5pbAorc2dtbC1nZW5lcmFsLWluc2VydC1jYXNlOmxvd2VyCitzZ21sLW1pbmltaXplLWF0dHJpYnV0ZXM6bmlsCitzZ21sLWFsd2F5cy1xdW90ZS1hdHRyaWJ1dGVzOnQKK3NnbWwtaW5kZW50LXN0ZXA6Mgorc2dtbC1pbmRlbnQtZGF0YTp0CitzZ21sLXBhcmVudC1kb2N1bWVudDpuaWwKK3NnbWwtZXhwb3NlZC10YWdzOm5pbAorc2dtbC1sb2NhbC1jYXRhbG9nczpuaWwKK3NnbWwtbG9jYWwtZWNhdC1maWxlczpuaWwKK0VuZDoKKy0tPgpkaWZmIC0tZ2l0IGEvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy94bWxzZWNfZW50aXRpZXMuZW50IGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vY29udGVudC94ZG9jcy94bWxzZWNfZW50aXRpZXMuZW50Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1ZDdiMDAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9jb250ZW50L3hkb2NzL3htbHNlY19lbnRpdGllcy5lbnQKQEAgLTAsMCArMSwzMiBAQAorPCFFTlRJVFkgcGFja2FnZW5hbWVsb25nICAiQXBhY2hlLVhNTC1TZWN1cml0eS1KIj4KKzwhRU5USVRZIHBhY2thZ2VuYW1lICAgICAgInhtbC1zZWN1cml0eSI+Cis8IUVOVElUWSBwYWNrYWdldmVyc2lvbiAgICIxLjQiPgorPCFFTlRJVFkgcGFja2FnZWRpcmVjdG9yeSAiTk9UIFVTRUQgPz8iPgorPCFFTlRJVFkgcGFja2FnZWRpc3RuYW1lICAiQXBhY2hlLVhNTC1TZWN1cml0eS1KIj4KKworPCFFTlRJVFkgamNlX2Rvd25sb2FkX2ZpbGUgImpjZS1qZGsxMy0xMjQuamFyIj4KKzwhRU5USVRZIGxpYl9qY2UgIi4vbGlicy9iYy0mamNlX2Rvd25sb2FkX2ZpbGU7Ij4KKworPCEtLSBFTlRJVFkgcGFja2FnZW5hbWVsb25nICAiQEBwYWNrYWdlbmFtZWxvbmdAQCItLT4KKzwhLS0gRU5USVRZIHBhY2thZ2VuYW1lICAgICAgIkBAcGFja2FnZW5hbWVAQCItLT4KKzwhLS0gRU5USVRZIHBhY2thZ2V2ZXJzaW9uICAgIkBAcGFja2FnZXZlcnNpb25AQCItLT4KKzwhLS0gRU5USVRZIHBhY2thZ2VkaXJlY3RvcnkgIkBAcGFja2FnZWRpcmVjdG9yeUBAICItLT4KKzwhLS0gRU5USVRZIHBhY2thZ2VkaXN0bmFtZSAgIkBAcGFja2FnZWRpc3RuYW1lQEAgIEFwYWNoZS1YTUwtU2VjdXJpdHktSiItLT4KKworPCFFTlRJVFkgeG1sc2VjICAiQXBhY2hlLVhNTC1TZWN1cml0eS1KIj4KKzwhRU5USVRZIHhtbGRzaWcgIlczQyBYTUwtU2lnbmF0dXJlIFN5bnRheCBhbmQgUHJvY2Vzc2luZyI+Cis8IUVOVElUWSB4bWxlbmMgICJXM0MgWE1MIEVuY3J5cHRpb24gU3ludGF4IGFuZCBQcm9jZXNzaW5nIj4KKzwhRU5USVRZIHhtbHhrbXMgICJXM0MgWE1MIEtleSBNYW5hZ2VtZW50IFNwZWNpZmljYXRpb24iPgorPCFFTlRJVFkgaGFjICAgICAiSGFuZGJvb2sgb2YgQXBwbGllZCBDcnlwdG9ncmFwaHkiPgorPCFFTlRJVFkgY2hyaXN0cGFnZSAgICAgIlRoZSBYTUwgU2VjdXJpdHkgUGFnZSI+Cis8IUVOVElUWSBzdXBwX2phdmFfZHNpZyAiWE1MLVNpZ25hdHVyZSBTeW50YXggYW5kIFByb2Nlc3NpbmcsICBXM0MgUmVjb21tZW5kYXRpb24gMTIgRmVicnVhcnkgMjAwMiI+Cis8IUVOVElUWSBzdXBwX2phdmFfZHNpZ19yZWYgIlRSLzIwMDIvUkVDLXhtbGRzaWctY29yZS0yMDAyMDIxMi8iPgorPCFFTlRJVFkgc3VwcF9DX2RzaWcgIlhNTC1TaWduYXR1cmUgU3ludGF4IGFuZCBQcm9jZXNzaW5nLCAgVzNDIFJlY29tbWVuZGF0aW9uIDEyIEZlYnJ1YXJ5IDIwMDIiPgorPCFFTlRJVFkgc3VwcF9DX2RzaWdfcmVmICJUUi8yMDAyL1JFQy14bWxkc2lnLWNvcmUtMjAwMjAyMTIvIj4KKzwhRU5USVRZIHN1cHBfamF2YV9lbmMgIlhNTCBFbmNyeXB0aW9uIFN5bnRheCBhbmQgUHJvY2Vzc2luZywgVzNDIFJlY29tbWVuZGF0aW9uIDEwIERlY2VtYmVyIDIwMDIiPgorPCFFTlRJVFkgc3VwcF9qYXZhX2VuY19yZWYgIlRSLzIwMDIvUkVDLXhtbGVuYy1jb3JlLTIwMDIxMjEwLyI+Cis8IUVOVElUWSBzdXBwX0NfZW5jICJYTUwgRW5jcnlwdGlvbiBTeW50YXggYW5kIFByb2Nlc3NpbmcsIFczQyBSZWNvbW1lbmRhdGlvbiAxMCBEZWNlbWJlciAyMDAyIj4KKzwhRU5USVRZIHN1cHBfQ19lbmNfcmVmICJUUi8yMDAyL1JFQy14bWxlbmMtY29yZS0yMDAyMTIxMC8iPgorPCFFTlRJVFkgYXBpX3JlZiAiYXBpL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5LyI+CisKKwpkaWZmIC0tZ2l0IGEvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vcmVzb3VyY2VzL2ltYWdlcy9ncm91cC1sb2dvLmdpZiBiL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL3Jlc291cmNlcy9pbWFnZXMvZ3JvdXAtbG9nby5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdlNGIzNgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL3Jlc291cmNlcy9pbWFnZXMvZ3JvdXAtbG9nby5naWYKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vcmVzb3VyY2VzL2ltYWdlcy9pY29uLnBuZyBiL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL3Jlc291cmNlcy9pbWFnZXMvaWNvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JlOGJiYgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL3Jlc291cmNlcy9pbWFnZXMvaWNvbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vcmVzb3VyY2VzL2ltYWdlcy9wcm9qZWN0LWxvZ28uZ2lmIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vcmVzb3VyY2VzL2ltYWdlcy9wcm9qZWN0LWxvZ28uZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5ODJjOGUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9yZXNvdXJjZXMvaW1hZ2VzL3Byb2plY3QtbG9nby5naWYKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vcmVzb3VyY2VzL2ltYWdlcy92YzZhLmdpZiBiL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL3Jlc291cmNlcy9pbWFnZXMvdmM2YS5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdiNTI2ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL3Jlc291cmNlcy9pbWFnZXMvdmM2YS5naWYKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vcmVzb3VyY2VzL2ltYWdlcy92YzZiLmdpZiBiL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL3Jlc291cmNlcy9pbWFnZXMvdmM2Yi5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY4YWIxMQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zaXRlL3NyYy9kb2N1bWVudGF0aW9uL3Jlc291cmNlcy9pbWFnZXMvdmM2Yi5naWYKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vc2tpbmNvbmYueG1sIGIvZG9jL3NpdGUvc3JjL2RvY3VtZW50YXRpb24vc2tpbmNvbmYueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiMDg4ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc2l0ZS9zcmMvZG9jdW1lbnRhdGlvbi9za2luY29uZi54bWwKQEAgLTAsMCArMSwxMjAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPCEtLQorQ29weXJpZ2h0IDIwMDMtMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKworTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCis8IS0tCitTa2luIGNvbmZpZ3VyYXRpb24gZmlsZS4gVGhpcyBmaWxlIGNvbnRhaW5zIGRldGFpbHMgb2YgeW91ciBwcm9qZWN0LCB3aGljaCB3aWxsCitiZSB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgY2hvc2VuIEZvcnJlc3Qgc2tpbi4KKy0tPgorCisgPCFET0NUWVBFIHNraW5jb25maWcgUFVCTElDCisgICAgICAgICItLy9BUEFDSEUvL0RURCBTa2luIENvbmZpZ3VyYXRpb24gVjAuNi0xLy9FTiIKKyAgICAgICAgInNraW5jb25maWctdjA2LTIuZHRkIj4KKworPHNraW5jb25maWc+CisgIDwhLS0gRG8gd2Ugd2FudCB0byBkaXNhYmxlIHRoZSBHb29nbGUgc2VhcmNoIGJveD8gLS0+CisgIDxzZWFyY2ggbmFtZT0iQXBhY2hlIFhNTCBTZWN1cml0eSIgZG9tYWluPSJ4bWwuYXBhY2hlLm9yZy9zZWN1cml0eSIgcHJvdmlkZXI9Imdvb2dsZSIgLz4KKyAgPGRpc2FibGUtY29tcGxpYW5jZS1saW5rcz5mYWxzZTwvZGlzYWJsZS1jb21wbGlhbmNlLWxpbmtzPgorCisgIDwhLS0gbWFuZGF0b3J5IHByb2plY3QgbG9nbworICAgICAgIHNraW46IGZvcnJlc3Qtc2l0ZSByZW5kZXJzIGl0IGF0IHRoZSB0b3AgLS0+CisgIDxwcm9qZWN0LW5hbWU+QXBhY2hlIFhNTCBTZWN1cml0eTwvcHJvamVjdC1uYW1lPgorICA8cHJvamVjdC11cmw+aHR0cDovL3htbC5hcGFjaGUub3JnL3NlY3VyaXR5PC9wcm9qZWN0LXVybD4KKyAgPHByb2plY3QtbG9nbz5pbWFnZXMvcHJvamVjdC1sb2dvLmdpZjwvcHJvamVjdC1sb2dvPgorCisgIDwhLS0gb3B0aW9uYWwgZ3JvdXAgbG9nbworICAgICAgIHNraW46IGZvcnJlc3Qtc2l0ZSByZW5kZXJzIGl0IGF0IHRoZSB0b3AtbGVmdCBjb3JuZXIgLS0+CisgIDxncm91cC1uYW1lPkFwYWNoZSBYTUw8L2dyb3VwLW5hbWU+CisgIDxncm91cC11cmw+aHR0cDovLy94bWwuYXBhY2hlLm9yZzwvZ3JvdXAtdXJsPgorICA8Z3JvdXAtbG9nbz5pbWFnZXMvZ3JvdXAtbG9nby5naWY8L2dyb3VwLWxvZ28+CisKKyAgPCEtLSBvcHRpb25hbCBob3N0IGxvZ28gKGUuZy4gc291cmNlZm9yZ2UgbG9nbykKKyAgICAgICBza2luOiBmb3JyZXN0LXNpdGUgcmVuZGVycyBpdCBhdCB0aGUgYm90dG9tLWxlZnQgY29ybmVyIC0tPgorICA8aG9zdC11cmw+PC9ob3N0LXVybD4KKyAgPGhvc3QtbG9nbz48L2hvc3QtbG9nbz4KKworICA8IS0tIFRoZSBmb2xsb3dpbmcgYXJlIHVzZWQgdG8gY29uc3RydWN0IGEgY29weXJpZ2h0IHN0YXRlbWVudCAtLT4KKyAgPHllYXI+MjAwMi0yMDA2PC95ZWFyPgorICA8dmVuZG9yPlRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi48L3ZlbmRvcj4KKworICA8IS0tIFNvbWUgc2tpbnMgdXNlIHRoaXMgdG8gZm9ybSBhICdicmVhZGNydW1iIHRyYWlsJyBvZiBsaW5rcy4gSWYgeW91IGRvbid0CisgIHdhbnQgdGhlc2UsIHNldCB0aGUgYXR0cmlidXRlcyB0byBibGFuay4gVGhlIERURCBwdXJwb3NlZnVsbHkgcmVxdWlyZXMgdGhlbS4KKyAgLS0+CisgIDx0cmFpbD4KKyAgICA8bGluazEgbmFtZT0iYXBhY2hlIiBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi8+CisgICAgPGxpbmsyIG5hbWU9InhtbC5hcGFjaGUiIGhyZWY9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy8iLz4KKyAgICA8bGluazMgbmFtZT0iIiBocmVmPSIiLz4KKyAgPC90cmFpbD4KKworICA8IS0tIFNldHVwIENvbG91cnMgLSByZXF1aXJlZCBhcyBvZiBWIDAuNiAtLT4KKyAgPGNvbG9ycz4KKyAgICA8Y29sb3IgbmFtZT0iaGVhZGVyIiAgICB2YWx1ZT0iIzI5NDU2MyIvPgorCisgICAgPGNvbG9yIG5hbWU9InRhYi1zZWxlY3RlZCIgdmFsdWU9IiM0YTZkOGMiIGxpbms9IiMwRjM2NjAiIHZsaW5rPSIjMEYzNjYwIiBobGluaz0iIzAwMDA2NiIvPgorICAgIDxjb2xvciBuYW1lPSJ0YWItdW5zZWxlY3RlZCIgdmFsdWU9IiNiNWM3ZTciIGxpbms9IiMwRjM2NjAiIHZsaW5rPSIjMEYzNjYwIiBobGluaz0iIzAwMDA2NiIvPgorICAgIDxjb2xvciBuYW1lPSJzdWJ0YWItc2VsZWN0ZWQiIHZhbHVlPSIjNGE2ZDhjIiBsaW5rPSIjMEYzNjYwIiB2bGluaz0iIzBGMzY2MCIgaGxpbms9IiMwMDAwNjYiLz4KKyAgICA8Y29sb3IgbmFtZT0ic3VidGFiLXVuc2VsZWN0ZWQiIHZhbHVlPSIjNGE2ZDhjIiBsaW5rPSIjMEYzNjYwIiB2bGluaz0iIzBGMzY2MCIgaGxpbms9IiMwMDAwNjYiLz4KKworICAgIDxjb2xvciBuYW1lPSJoZWFkaW5nIiB2YWx1ZT0iIzI5NDU2MyIvPgorICAgIDxjb2xvciBuYW1lPSJzdWJoZWFkaW5nIiB2YWx1ZT0iIzRhNmQ4YyIvPgorICAgICAgICAKKyAgICA8Y29sb3IgbmFtZT0icHVibGlzaGVkIiB2YWx1ZT0iIzRDNkM4RiIgZm9udD0iI0ZGRkZGRiIvPgorICAgIDxjb2xvciBuYW1lPSJmZWVkYmFjayIgdmFsdWU9IiM0QzZDOEYiIGZvbnQ9IiNGRkZGRkYiIC8+CisJICAgICAgICAKKyAgICA8Y29sb3IgbmFtZT0ibmF2c3RyaXAiIHZhbHVlPSIjNGE2ZDhjIiBmb250PSIjZmZmZmZmIiBsaW5rPSIjMEYzNjYwIiB2bGluaz0iIzBGMzY2MCIgaGxpbms9IiMwMDAwNjYiLz4KKyAgICA8Y29sb3IgbmFtZT0idG9vbGJveCIgdmFsdWU9IiM0YTZkOGMiLz4KKyAgICA8Y29sb3IgbmFtZT0iYm9yZGVyIiB2YWx1ZT0iIzI5NDU2MyIvPgorICAgIAorICAgIDxjb2xvciBuYW1lPSJtZW51IiB2YWx1ZT0iIzRhNmQ4YyIgZm9udD0iI2NlZGZlZiIgbGluaz0iI2ZmZmZmZiIgdmxpbms9IiNmZmZmZmYiIGhsaW5rPSIjZmZjZjAwIi8+ICAgCisgICAgCisgICAgPGNvbG9yIG5hbWU9Im1lbnVoZWFkaW5nIiB2YWx1ZT0iI2NmZGNlZCIgZm9udD0iIzAwMDAwMCIgLz4KKyAgICA8Y29sb3IgbmFtZT0ic2VhcmNoYm94IiB2YWx1ZT0iI0U1RTREOSIgZm9udD0iIzAwMDAwMCIvPgorICAgICAgICAgCisgICAgPGNvbG9yIG5hbWU9ImRpYWxvZyIgdmFsdWU9IiM0YTZkOGMiLz4KKyAgICA8Y29sb3IgbmFtZT0iYm9keSIgdmFsdWU9IiNmZmZmZmYiICBsaW5rPSIjMEYzNjYwIiB2bGluaz0iIzAwOTk5OSIgaGxpbms9IiMwMDAwNjYiLz4KKyAgICAKKyAgICA8Y29sb3IgbmFtZT0idGFibGUiIHZhbHVlPSIjNzA5OUM1Ii8+ICAgIAorICAgIDxjb2xvciBuYW1lPSJ0YWJsZS1jZWxsIiB2YWx1ZT0iI2YwZjBmZiIvPiAgICAKKyAgICA8Y29sb3IgbmFtZT0iaGlnaGxpZ2h0IiB2YWx1ZT0iI2ZmZmYwMCIvPgorICAgIDxjb2xvciBuYW1lPSJmaXhtZSIgdmFsdWU9IiNjYzY2MDAiLz4KKyAgICA8Y29sb3IgbmFtZT0ibm90ZSIgdmFsdWU9IiMwMDY2OTkiLz4KKyAgICA8Y29sb3IgbmFtZT0id2FybmluZyIgdmFsdWU9IiM5OTAwMDAiLz4KKyAgICA8Y29sb3IgbmFtZT0iY29kZSIgdmFsdWU9IiNDRkRDRUQiLz4KKyAgICAgICAgCisgICAgPGNvbG9yIG5hbWU9ImZvb3RlciIgdmFsdWU9IiNjZWRmZWYiLz4KKyAgPC9jb2xvcnM+CisKKyAgPCEtLSBDcmVkaXRzIGFyZSB0eXBpY2FsbHkgcmVuZGVyZWQgYXMgYSBzZXQgb2Ygc21hbGwgY2xpY2thYmxlIGltYWdlcyBpbiB0aGUKKyAgcGFnZSBmb290ZXIgLS0+CisgIDxjcmVkaXRzPgorICAgIDxjcmVkaXQ+CisgICAgICA8bmFtZT5CdWlsdCB3aXRoIEFwYWNoZSBGb3JyZXN0PC9uYW1lPgorICAgICAgPHVybD5odHRwOi8veG1sLmFwYWNoZS5vcmcvZm9ycmVzdC88L3VybD4KKyAgICAgIDxpbWFnZT5pbWFnZXMvYnVpbHQtd2l0aC1mb3JyZXN0LWJ1dHRvbi5wbmc8L2ltYWdlPgorICAgICAgPHdpZHRoPjg4PC93aWR0aD4KKyAgICAgIDxoZWlnaHQ+MzE8L2hlaWdodD4KKyAgICA8L2NyZWRpdD4KKyAgICA8IS0tIEEgY3JlZGl0IHdpdGggQHJvbGU9J3BkZicgd2lsbCBoYXZlIGl0cyBuYW1lIGFuZCB1cmwgZGlzcGxheWVkIGluIHRoZQorICAgIFBERiBwYWdlJ3MgZm9vdGVyLiAtLT4KKyAgPC9jcmVkaXRzPgorCis8L3NraW5jb25maWc+CisKKworCisKKworCmRpZmYgLS1naXQgYS9kb2Mvc2l0ZS9zdGF0dXMueG1sIGIvZG9jL3NpdGUvc3RhdHVzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGY4M2JjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NpdGUvc3RhdHVzLnhtbApAQCAtMCwwICsxLDgxMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8IS0tCitDb3B5cmlnaHQgMjAwMy0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKzxzdGF0dXM+ICAKKyAgPGRldmVsb3BlcnM+CisgICAgPHBlcnNvbiBuYW1lPSJDaHJpc3RpYW4gR2V1ZXItUG9sbG1hbm4iICBlbWFpbD0iZ2V1ZXItcG9sbG1hbm5AbnVlLmV0LWluZi51bmktc2llZ2VuLmRlIiAgaWQ9IkNHUCIgLz4KKyAgICA8cGVyc29uIG5hbWU9IkJlcmluIExhdXRlbmJhY2giICAgICAgZW1haWw9ImJlcmluQHdpbmdzb2ZoZXJtZXMub3JnIiAgICAgIGlkPSJCTCIgLz4KKyAgICA8cGVyc29uIG5hbWU9IkF4bCBNYXR0aGV1cyIgICAgICBlbWFpbD0iYXhsLm1hdHRoZXVzQHN1bi5jb20iICAgICAgaWQ9IkFYTCIgLz4KKyAgICA8cGVyc29uIG5hbWU9IkVyd2luIHZhbiBkZXIgS29vZ2giIGVtYWlsPSJlcndpbkBrb29naC5jb20iIGlkPSJFSyIgLz4KKyAgICA8cGVyc29uIG5hbWU9IkthcmVsIFdvdXRlcnMiICAgICAgZW1haWw9ImthcmVsLndvdXRlcnNAZXNhdC5rdWxldXZlbi5hYy5iZSIgICAgICBpZD0iS1ciIC8+CisgICAgPHBlcnNvbiBuYW1lPSJSYXVsIEJlbml0byBHYXJjaWEiIGVtYWlsPSJyYXVsQGFwYWNoZS5vcmciIGlkPSJSQiIvPgorICAgIDxwZXJzb24gbmFtZT0iVmlzaGFsIE1haGFqYW4iIGVtYWlsPSJ2bWFoYWphbkBhbWJlcnBvaW50LmNvbSIgaWQ9IlZNIi8+CisgICAgPHBlcnNvbiBuYW1lPSJNaWxhbiBUb21pYyIgZW1haWw9Im1pbGFuQHNldGNjZS5vcmciIGlkPSJNVCIvPgorICAgIDxwZXJzb24gbmFtZT0iU2VhbiBNdWxsYW4iIGVtYWlsPSJzZWFuLm11bGxhbkBzdW4uY29tIiBpZD0iU00iLz4KKyAgICA8cGVyc29uIG5hbWU9IlNjb3R0IENhbnRvciIgZW1haWw9ImNhbnRvci4yQG9zdS5lZHUiIGlkPSJTQyIvPgorICAgIDxwZXJzb24gbmFtZT0iQ29sbSBPIGhFaWdlYXJ0YWlnaCIgZW1haWw9ImNvaGVpZ2VhQGFwYWNoZS5vcmciIGlkPSJDTyIvPgorICAgIDwhLS0gQWRkIG1vcmUgcGVvcGxlIGhlcmUgLS0+CisgIDwvZGV2ZWxvcGVycz4KKyAgCisgIDxjaGFuZ2VzPgorICAgIDwhLS0gQWRkIG5ldyByZWxlYXNlcyBoZXJlOyBhY3Rpb24gYXR0cmlidXRlczogdHlwZTooYWRkIHwgZml4IHwgdXBkYXRlKTsgLS0+CisgICAgPCEtLSBjb250ZXh0Oihkb2NzIHwgamF2YV9zb21ldGhpbmcgfCBjX3NvbWV0aGluZyApIC0tPgorCisgICAgPHJlbGVhc2UgdmVyc2lvbj0iSmF2YSAxLjQuMyIgZGF0ZT0iSnVseSAyMDA5Ij4gICAgCisgICAgICA8YWN0aW9uIGRldj0iU00iIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSI0NzUyNiIgY29udGV4dD0iamF2YV9nZW5lcmFsIiAKKwlkdWUtdG89IlNlYW4gTXVsbGFuIj4KKyAgICAgICAgWE1MIHNpZ25hdHVyZSBITUFDIHRydW5jYXRpb24gYXV0aGVudGljYXRpb24gYnlwYXNzCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJDTyIgdHlwZT0iZml4IiBmaXhlcy1idWc9IjQ3NTI1IiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiPgorICAgICAgICBGaXggY2hlY2tzdHlsZSBwcm9ibGVtcyB3aXRoIHNvdXJjZSBhbmQgdGVzdHMuCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJDTyIgdHlwZT0iZml4IiBmaXhlcy1idWc9IjQyMjM5IiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiPgorICAgICAgICBFQ0RTQSBzaWduYXR1cmUgdmFsdWUgaW50ZXJvcGFiaWxpdHkgcGF0Y2guCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJDTyIgdHlwZT0iZml4IiBmaXhlcy1idWc9IjQ1NzQ0IiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiPgorICAgICAgICBYUGF0aCB0cmFuc2Zvcm0gYW5kIHhtbC1zdHlsZXNoZWV0LgorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iQ08iIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSI0Mjk4NiIgY29udGV4dD0iamF2YV9nZW5lcmFsIj4KKyAgICAgICAgVGhlICZsdDsvI2RvY3VtZW50IG5vZGUmZ3Q7IGluc2VydGVkIGF0IHRoZSBlbmQgb2YgU09BUEVudmVsb3BlLgorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iQ08iIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSI0NzAyOSIgY29udGV4dD0iamF2YV9nZW5lcmFsIj4KKyAgICAgICAgVW5uZWNlc3NhcnkgbmFtZXNwYWNlIGRlY2xhcmF0aW9ucyBvbiBFbmNyeXB0ZWREYXRhIGNoaWxkcmVuLgorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iQ08iIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSI0NDMzNSIgY29udGV4dD0iamF2YV9nZW5lcmFsIj4KKyAgICAgICAgQ2FuJ3QgdmFsaWRhdGUgYWZ0ZXIgaW52YWxpZCB2YWxpZGF0aW9uLgorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iQ08iIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSI0NzI2MCIgY29udGV4dD0iamF2YV9nZW5lcmFsIj4KKyAgICAgICAgSW1wcm92ZSBKYXZhIHVuaXQgdGVzdGluZy4KKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IkNPIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iNDcyNjUiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCI+CisgICAgICAgIFNvbWUgd2Vic2l0ZSB1cGRhdGVzLgorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iQ08iIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSI0NTM4OCIgY29udGV4dD0iamF2YV9nZW5lcmFsIj4KKyAgICAgICAgV2UgbmVlZCBhIFBPTSBmaWxlIGFkZGVkIHRvIHRoZSBNYXZlbiByZXBvc2l0b3J5LgorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iU00iIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSI0NzQ4MyIgY29udGV4dD0iamF2YV9nZW5lcmFsIj4KKyAgICAgICAgUmVtb3ZlIEpESyAxLjUgQVBJIGRlcGVuZGVuY2llcworICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iU00iIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSI0NzA1NyIgY29udGV4dD0iamF2YV9nZW5lcmFsIgorCWR1ZS10bz0iQ29sbSBPIGhFaWdlYXJ0YWlnaCI+CisgICAgICAgIERvd25ncmFkZSBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGxvZ2dpbmcgZnJvbSAiaW5mbyIuCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJTTSIgdHlwZT0iZml4IiBmaXhlcy1idWc9IjQyMDYxIiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiIAorCWR1ZS10bz0iQ29sbSBPIGhFaWdlYXJ0YWlnaCI+CisgICAgICAgIE1ldGhvZCB0byBkaXNhYmxlIFhNTFV0aWxzLmFkZFJldHVyblRvRWxlbWVudCAocmVvcGVuZWQpOiBjaGFuZ2VkIEJhc2U2NCBjb2RlIHRvIGlnbm9yZSBsaW5lIGJyZWFrcywgaWYgZW5hYmxlZC4KKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IlNNIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iNDcwOTciIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCIgCisJZHVlLXRvPSJCcnVubyBIYXJidWxvdCI+CisgICAgICAgIFJldXNpbmcgWE1MU2lnbmF0dXJlIGZvciBzaWduaW5nIGFuZCB2ZXJpZnlpbmcgZmFpbHMgb24gc2FtZSB0aHJlYWQuCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJTTSIgdHlwZT0iZml4IiBmaXhlcy1idWc9IjQ2NzMyIiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiPgorICAgICAgICBGYWlsZWQgdG8gYWRkIG1vcmUgdGhhbiBvbmUgY2hpbGQgZWxlbWVudCB0byBFbmNyeXB0aW9uTWV0aG9kLgorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iU00iIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSI0NjEwMSIgY29udGV4dD0iamF2YV9nZW5lcmFsIj4KKyAgICAgICAgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuSWRSZXNvbHZlciBpcyBub3QgdGhyZWFkIHNhZmUKKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IlNNIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iNDU5NjEiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCIgCisJZHVlLXRvPSJBbnRvbiBLb3N5YWtvdiI+CisgICAgICAgIHZlcmlmeSB3aXRoIG93biBjYW5vbmljYWxpemF0aW9uIG1ldGhvZC4KKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IlNNIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iNDU0NzUiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCI+CisgICAgICAgIFhNTFNpZ25hdHVyZTo6Z2V0S2V5SW5mbyBtZXRob2QgbW9kaWZpZXMgZG9jdW1lbnQKKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IlNNIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iNDU4MTEiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCI+CisgICAgICAgIEZpeCBYTUxTZWMgMS40LjIgcHJvYmxlbXMgcmVwb3J0ZWQgYnkgZmluZGJ1Z3MKKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IlNNIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iNDU3MDYiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCI+CisgICAgICAgIFRyYW5zZm9ybS5yZWdpc3RlciBjbGFzcyBsb2FkaW5nIGFuZCByZWN1cnNpdmUgaW5zdGFudGlhdGlvbiBwcm9ibGVtcworICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iU00iIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSI0NTY2NCIgY29udGV4dD0iamF2YV9nZW5lcmFsIj4KKyAgICAgICAgU29tZSBjYWxscyBzaG91bGQgYmUgd3JhcHBlZCBpbiBBY2Nlc3NDb250cm9sbGVyLmRvUHJpdmlsZWdlZAorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iU00iIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSI0NTYzNCIgY29udGV4dD0iamF2YV9nZW5lcmFsIj4KKyAgICAgICAgUmVzdG9yZSBYTUxVdGlscy5jcmVhdGVEU2N0eCBtZXRob2QuCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJTTSIgdHlwZT0iZml4IiBmaXhlcy1idWc9IjQ1MDk1IiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiIAorCWR1ZS10bz0iSm9hY2hpbSBSb3Vzc2VhdSI+CisgICAgICAgIGxvZzRqLnByb3BlcnRpZXMgaW4geG1sc2VjIHNvdXJjZXMgYW5kIGJ1aWxkcyBoYXMgc2lkZSBlZmZlY3RzIGluIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQuIAorICAgICAgPC9hY3Rpb24+CisgICAgPC9yZWxlYXNlPgorCisgICAgPHJlbGVhc2UgdmVyc2lvbj0iQysrIDEuNS4xIiBkYXRlPSJKdWx5IDIwMDkiPgorICAgICAgPGFjdGlvbiBkZXY9IlNDIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iNDczNTMiIGNvbnRleHQ9ImNfcmVsIj4KKyAgICAgICAgRml4IGZvciBjMTRuIG9mIGRlZmF1bHQgbmFtZXNwYWNlcworICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iU0MiIHR5cGU9ImZpeCIgY29udGV4dD0iY19yZWwiPgorICAgICAgICBGaXggU3BhcmMgY29tcGlsYXRpb24gYnVnCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJTQyIgdHlwZT0iZml4IiBmaXhlcy1idWc9IjQ3NTI3IiBjb250ZXh0PSJjX3JlbCI+CisgICAgICAgIEZpeCBmb3IgQ1ZFLTIwMDktMDIxNworICAgICAgPC9hY3Rpb24+CisgICAgPC9yZWxlYXNlPgorCisgICAgPHJlbGVhc2UgdmVyc2lvbj0iQysrIDEuNS4wIiBkYXRlPSJKdW5lIDIwMDkiPgorICAgICAgPGFjdGlvbiBkZXY9IlNDIiB0eXBlPSJ1cGRhdGUiIGNvbnRleHQ9ImNfcmVsIj4KKyAgICAgICAgTWFrZSBTSEEtMSB0aGUgaW1wbGljaXQgZGVmYXVsdCBEaWdlc3RNZXRob2QgZm9yIFJTQS1PQUVQCisgICAgICAgIGtleSB0cmFuc3BvcnQsIGFsbG93aW5nIGZvciBpbnRlcm9wIHVudGlsIGJyb2tlbiBpbXBscyBhcmUgZml4ZWQKKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IlNDIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iNDU4MjgiIGNvbnRleHQ9ImNfcmVsIj4KKyAgICAgICAgRml4IG1lbW9yeSBsZWFrIGluIE9wZW5TU0wgUlNBL0RTQSBrZXkgY2xvbmluZworICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iU0MiIHR5cGU9ImFkZCIgY29udGV4dD0iY19yZWwiPgorICAgICAgICBFeHBvc2UgS2V5SW5mbyBleHRlbnNpb25zIHZpYSBET00KKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IlNDIiB0eXBlPSJmaXgiIGNvbnRleHQ9ImNfcmVsIj4KKyAgICAgICAgRml4IGMxNG4gdG8gb21pdCBzdGFuZGFyZCB4bWxuczp4bWwgZGVjbGFyYXRpb25zCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJTQyIgdHlwZT0iYWRkIiBjb250ZXh0PSJjX3JlbCI+CisgICAgICAgIEFkZCBwYXJ0aWFsIHN1cHBvcnQgZm9yIEluY2x1c2l2ZSBDMTROIDEuMSB3aXRoIHJlZ2FyZCB0byB4bWw6aWQgYnV0IG5vdCB4bWw6YmFzZQorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iU0MiIHR5cGU9InVwZGF0ZSIgY29udGV4dD0iY19yZWwiPgorICAgICAgICBGaW5pc2ggcG9ydCB0byBYZXJjZXMgMy54IGFuZCA2NC1iaXQgQVBJIGNoYW5nZXMKKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IlNDIiB0eXBlPSJhZGQiIGNvbnRleHQ9ImNfcmVsIj4KKyAgICAgICAgQWRkIFZDOSBidWlsZCBmaWxlcworICAgICAgPC9hY3Rpb24+CisgICAgPC9yZWxlYXNlPgorCisgICAgPHJlbGVhc2UgdmVyc2lvbj0iSmF2YSAxLjQuMiIgZGF0ZT0iSnVuZSAyMDA4Ij4gICAgCisgICAgICA8YWN0aW9uIGRldj0iU00iIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSI0NDk5OSIgY29udGV4dD0iamF2YV9nZW5lcmFsIiAKKwlkdWUtdG89IkdpZWRyaXVzIE5vcmVpa2lzIj4KKyAgICAgICAgRE9NRXhjZXB0aW9uIGlzIHRocm93biBhdCBYTUxTaWduYXR1cmUgY3JlYXRpb24uIAorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iU00iIHR5cGU9InVwZGF0ZSIgZml4ZXMtYnVnPSI0NDg2MyIgY29udGV4dD0iamF2YV9nZW5lcmFsIiAKKwlkdWUtdG89IldhbGx5IERlbm5pcyI+CisgICAgICAgIEltcHJvdmVkIGxvZ2dpbmcgaW4gc2lnbmF0dXJlIGhhbmRsaW5nLiBUaGFua3MgdG8gV2FsbHkgRGVubmlzLgorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iUkIiIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSI0NDk1NiIgY29udGV4dD0iamF2YV9nZW5lcmFsIiAKKwlkdWUtdG89IkdpZWRyaXVzIE5vcmVpa2lzIj4KKyAgICAgICAgQ29uY3VycmVudCBjcmVhdGlvbiBvZiBhIFhNTFNpZ25hdHVyZSBpbnN0YW5jZSBwcm9kdWNlcyBhbiAKKyAgICAgICAgQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLiBUaGFua3MgdG8gR2llZHJpdXMgTm9yZWlraXMKKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IlJCIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iNDQ5OTEiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCIgCisJZHVlLXRvPSJHaWVkcml1cyBOb3JlaWtpcyI+CisgICAgICAgIENvbmN1cnJlbnQgaW52b2NhdGlvbiBvZiBLZXlJbmZvLmdldFg1MDlDZXJ0aWZpY2F0ZSgpIG9jY2FzaW9uYWxseSBmYWlscworICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iU00iIHR5cGU9ImFkZCIgZml4ZXMtYnVnPSI0NDgxMCIgY29udGV4dD0iamF2YV9nZW5lcmFsIj4KKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIG1vcmUgWE1MRFNpZyBhbGdvcml0aG1zIGxpc3RlZCBpbiBSRkMgNDA1MQorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iU00iIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSI0NDYyOSIgY29udGV4dD0iamF2YV9nZW5lcmFsIj4KKyAgICAgICAgU3dpdGNoIG9yZGVyIG9mIFhNTCBTaWduYXR1cmUgdmFsaWRhdGlvbiBzdGVwcworICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iU00iIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSI0NDYxNyIgY29udGV4dD0iamF2YV9nZW5lcmFsIj4KKyAgICAgICAgUmVncmVzc2lvbiB3aGVuIHByb2Nlc3NpbmcgWFBhdGggdHJhbnNmb3JtIChhZGRpdGlvbmFsIGZpeCkKKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IlNNIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iNDQ1ODYiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCI+CisgICAgICAgIFhNTFg1MDlJc3N1ZXJTZXJpYWwuZ2V0SXNzdWVyTmFtZSBpbmNvcnJlY3RseSBlc2NhcGVzICcjJyBpbiBoZXggdmFsdWVzCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJTTSIgdHlwZT0iYWRkIiBmaXhlcy1idWc9IjQyNjUzIiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiCisJZHVlLXRvPSJTZWFuIE11bGxhbiI+CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBDMTROIDEuMSB0byBKYXZhIGltcGxlbWVudGF0aW9uLgorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iU00iIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSI0NDIwNSIgY29udGV4dD0iamF2YV9nZW5lcmFsIgorCWR1ZS10bz0iVmlzaGFsIE1haGFqYW4iPgorICAgICAgICBYTUxYNTA5Q2VydGlmaWNhdGUuZ2V0WDUwOUNlcnRpZmljYXRlKCkgcmVzdWx0cyBpbiBjZXJ0aWZpY2F0ZSBwYXJzaW5nIAorICAgICAgICBlcnJvci4KKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IlJCIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iNDQxNzciIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCIKKwlkdWUtdG89Ik1hdGVqIFNwaWxsZXIiPgorICAgICAgICBXaGVuIHVzaW5nIHhzbHQgdHJhbnNmb3JtYXRpb24gdGhlcmUgaXMgcHJvYmxlbSB3aXRoIHhhbGFuIG5ld2xpbmUuCisgICAgICAgIFNtYWxsIHJlZmFjdG9yIGZvciBFbGVtZW50UHJveHkgdG8gZ2V0IHJpZCBvZiB0aGUgc3RhdGUsIGl0IHdhcyBhbiBvbGQKKyAgICAgICAgdmVzdGlnZSB0aGF0IHdoZXJlIHRha2luZyBzcGFjZSBhbmQgb2JmdXNjYXRpbmcgdGhlIGNvZGUuCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJSQiIgdHlwZT0iZml4IiBmaXhlcy1idWc9IjQwODk3IiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiCisJZHVlLXRvPSJWaXNoYWwgTWFoYWphbiI+CisgICAgICAgIFN0cmluZyBjb21wYXJpc29ucyB1c2luZyAnPT0nIGNhdXNlcyB2YWxpZGF0aW9uIGVycm9ycyB3aXRoIHNvbWUgcGFyc2VycworICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iU00iIHR5cGU9ImFkZCIgZml4ZXMtYnVnPSI0MzA1NiIgY29udGV4dD0iamF2YV9nZW5lcmFsIgorCWR1ZS10bz0iQWxvbiBCYXItTGV2Ij4KKyAgICAgICAgTGlicmFyeSBkb2VzIG5vdCBhbGxvdyBzcGVjaWZ5IHByb3ZpZGVyIGZvciBwcml2YXRlIGtleSBvcGVyYXRpb25zLiAKKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IlNNIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iNDQxMDIiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCIKKwlkdWUtdG89IkJ1dGxlciI+CisgICAgICAgIFhNTENpcGhlciBsb2FkRW5jcnlwdGVkS2V5IGVycm9yLgorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iU00iIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSI0MzIzOSIgY29udGV4dD0iamF2YV9nZW5lcmFsIgorCWR1ZS10bz0iTWF0dGhpYXMgR2VybWFubiI+CisgICAgICAgIE5vIGluc3RhbGxlZCBwcm92aWRlciBzdXBwb3J0cyB0aGlzIGtleSB3aGVuIGNoZWNraW5nIGEgUlNBIHNpZ25hdHVyZSAKKyAgICAgICAgYWdhaW5zdCBhIERTQSBrZXkgYmVmb3JlIFJTQSBrZXkuCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJTTSIgdHlwZT0iZml4IiBmaXhlcy1idWc9IjQyNTk3IiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiCisJZHVlLXRvPSJCcmVudCBQdXRuYW0iPgorICAgICAgICBVbm5lY2Vzc2FyeSBuYW1lc3BhY2UgZGVjbGFyYXRpb25zIG9uIFNpZ25hdHVyZSBjaGlsZHJlbi4KKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IlNNIiB0eXBlPSJhZGQiIGZpeGVzLWJ1Zz0iNDIwNjEiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCIKKwlkdWUtdG89Ik1pY2hhZWwgTWNJbnRvc2giPgorICAgICAgICBNZXRob2QgdG8gZGlzYWJsZSBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQuCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJTTSIgdHlwZT0iZml4IiBmaXhlcy1idWc9IjQyODY1IiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiCisJZHVlLXRvPSJGcmFuayBDb3JuZWxpcyI+CisgICAgICAgIFByb2JsZW0gd2l0aCBlbXB0eSBCYXNlVVJJIGluIFJlc29sdmVyTG9jYWxGaWxlc3lzdGVtLgorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iU00iIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSI0MzIzMCIgY29udGV4dD0iamF2YV9nZW5lcmFsIj4KKyAgICAgICAgSW5jbHVzaXZlIEMxNG4gZG9lc24ndCBhbHdheXMgaGFuZGxlIHhtbDpzcGFjZSBhbmQgeG1sOmxhbmcKKyAgICAgICAgYXR0cmlidXRlcyBjb3JyZWN0bHkKKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IlNNIiB0eXBlPSJhZGQiIGZpeGVzLWJ1Zz0iMzg2NjgiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCIKKwlkdWUtdG89IlZsYWRtaXIgSW9uZXNjdSI+CisgICAgICAgIEFkZCBYTUxDaXBoZXIuZW5jcnlwdERhdGEgbWV0aG9kIHRoYXQgdGFrZXMgc2VyaWFsaXplZAorICAgICAgICBkYXRhIGFzIHBhcmFtZXRlci4KKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IlNNIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iNDI4ODYiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCIKKwlkdWUtdG89Ikp1bGllbiBUYXVwaW4sIERhbmllbGUgR2FnbGlhcmRpIj4KKyAgICAgICAgRXJyb3Igd2hlbiByZW1vdmluZyBlbmNyeXB0ZWQgY29udGVudCBpbiAxLjQuMS4KKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IlNNIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iNDI4MjAiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCIKKwlkdWUtdG89IkphbWVzIFdhc2hpbmd0b24iPgorICAgICAgICBDbGFzc0xvYWRlciBpc3N1ZSBjYXVzaW5nIE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiBsb2FkaW5nCisgICAgICAgIFByb3ZpZGVyIEltcGxlbWVudGF0aW9uLgorICAgICAgPC9hY3Rpb24+CisgICAgPC9yZWxlYXNlPgorCisgICAgPHJlbGVhc2UgdmVyc2lvbj0iQysrIDEuNC4wIiBkYXRlPSJOb3ZlbWJlciAyMDA3Ij4KKyAgICAgIDxhY3Rpb24gZGV2PSJCTCIgdHlwZT0iZml4IiBjb250ZXh0PSJjX3JlbCI+CisgICAgICAgIEZpeCBleGNsdXNpdmUgYzE0biBuYW1lc3BhY2UgYnVnIChyZXYuIDUyNjkzOSkKKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IlNDIiB0eXBlPSJhZGQiIGNvbnRleHQ9ImNfcmVsIj4KKyAgICAgICAgQWRkIGNvbnN0IHNwZWNpZmllcnMgYW5kIG1ldGhvZHMgdG8gdmFyaW91cyBjbGFzc2VzCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJTQyIgdHlwZT0iYWRkIiBjb250ZXh0PSJjX3JlbCI+CisgICAgICAgIEFkZCBiZXR0ZXIgZXh0cmFjdGlvbiBvZiBvcGVuc3NsIGJ1aWxkIHNldHRpbmdzIHVzaW5nIHBrZy1jb25maWcKKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IlNDIiB0eXBlPSJmaXgiIGNvbnRleHQ9ImNfcmVsIj4KKyAgICAgICAgRml4IFhTRUNuZXcgbWFjcm8gdG8gc3RvcCBjYXRjaGluZyBhcmJpdHJhcnkgZXJyb3JzIGFuZCByZXBvcnQKKyAgICAgICAgY3J5cHRvIGV4Y2VwdGlvbnMgaW5zdGVhZCBvZiB0dXJuaW5nIHRoZW0gaW50byBhbGxvY2F0aW9uIGVycm9ycworICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iU0MiIHR5cGU9ImZpeCIgY29udGV4dD0iY19yZWwiPgorICAgICAgICBBZGQgdmFyaW91cyBtaXNzaW5nIGZpbGVzIHRvIGRpc3QgdGFyZ2V0CisgICAgICA8L2FjdGlvbj4KKyAgICA8L3JlbGVhc2U+CisgICAgICAKKyAgICA8cmVsZWFzZSB2ZXJzaW9uPSJKYXZhIDEuNC4xIiBkYXRlPSJNYXkgMjAwNyI+ICAgIAorICAgICAgPGFjdGlvbiBkZXY9IlNNIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iNDE4OTIiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCIgZHVlLXRvPSJEZXJlayBNb3JyIj4KKyAgICAJWE1MIFNlY3VyaXR5IDEuNC4wIGRvZXMgbm90IGJ1aWxkIHdpdGggSUJNJ3MgSkRLLiAgIAorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iU00iIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSI0MTkyNyIgY29udGV4dD0iamF2YV9nZW5lcmFsIiBkdWUtdG89IkxpanVuIExpYW8iPgorICAgIAlDYW5ub3QgY2Fub25pY2FsaXplIHdpdGggWFNMVCB0cmFuc2Zvcm0uICAgCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJTTSIgdHlwZT0iZml4IiBmaXhlcy1idWc9IjQxODA1IiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiIGR1ZS10bz0iQnJlbnQgUHV0bWFuIj4KKyAgICAJUmVzb2x1dGlvbiBvZiBTQU1MIDEueCBJRCBhdHRyaWJ1dGVzLCBpbmNvcnJlY3QgbmFtZXNwYWNlLiAgCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJTTSIgdHlwZT0iZml4IiBmaXhlcy1idWc9IjQxNDc0IiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiIGR1ZS10bz0iTGlqdW4gTGlhbyI+CisgICAgCVR3byB0ZXh0IG5vZGVzIHdpdGggdGhlIHZhbHVlICdcbicgaW4gc3VjY2Vzc2lvbiB3aXRoaW4gJmx0O2RzOlNpZ25lZEluZm8mZ3Q7IGFuZCAmbHQ7ZHM6WDUwOUlzc3VlclNlcmlhbCZndDsuICAKKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IlNNIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iNDE1MTAiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCIgZHVlLXRvPSJTdGVwYW4gSHJiYWNlayI+CisgICAgCW9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC5LZXlWYWx1ZS5nZXRQdWJsaWNLZXkoKSByZXR1cm5zIG51bGwgZm9yIERTQSBrZXkuIAorICAgICAgPC9hY3Rpb24+ICAgICAgCisgICAgICA8YWN0aW9uIGRldj0iU00iIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSI0MTU3MyIgY29udGV4dD0iamF2YV9nZW5lcmFsIiBkdWUtdG89Ik1hcmVrIEphYmxvbnNraSI+CisgICAgCVhNTENpcGhlciBTdGFja092ZXJmbG93RXJyb3IuIAorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iU00iIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSI0MTU2OSIgY29udGV4dD0iamF2YV9nZW5lcmFsIiBkdWUtdG89Ikp1bGllbiBQYXNxdWllciI+CisgICAgCUNhbm5vdCBzcGVjaWZ5IGR5bmFtaWNhbGx5IGEgc3BlY2lmaWMgSkNFIFByb3ZpZGVyIHdpdGggdGhlIERTQSBTaWduYXR1cmUuCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJSQiIgdHlwZT0iZml4IiBmaXhlcy1idWc9IjQyMjM5IiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiIGR1ZS10bz0iV29sZmdhbmcgR2xhcyI+CisgICAgCUVDRFNBIHNpZ25hdHVyZSB2YWx1ZSBpbnRlcm9wZXJhYmlsaXR5IHBhdGNoLgorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iUkIiIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSI0MTUyMCIgY29udGV4dD0iamF2YV9nZW5lcmFsIiBkdWUtdG89IkxpanVuIExpYW8iPgorICAgIAlDYW5ub3QgZ2VuZXJhdGUgc2lnbmF0dXJlcyB3aXRoIHRoZSBzYW1lIGtleSBidXQgZGlmZmVyZW50IGFsZ29yaXRobXMgaW4gc3VjZXNzaW9uLgorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iUkIiIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSI0MTQ2MiIgY29udGV4dD0iamF2YV9nZW5lcmFsIiBkdWUtdG89Ikthcm9sIFJld2VyYSI+CisgICAgCVhtbCBjYW5vbml6YXRpb24gLSBVVEYtOCBlbmNvZGluZyBpc3N1ZSBpbiBYbWwgc2VjdXJpdHkgMS40LjAuCisgICAgICA8L2FjdGlvbj4KKyAgICA8L3JlbGVhc2U+CisgICAgICAKKyAgICA8cmVsZWFzZSB2ZXJzaW9uPSJDKysgMS4zLjEiIGRhdGU9IkphbnVhcnkgMjAwNyI+CisgICAgICA8YWN0aW9uIGRldj0iQkwiIHR5cGU9InVwZGF0ZSIgY29udGV4dD0iY19yZWwiPgorICAgICAgICBSZWZhY3RvciBOSVggYnVpbGQgdG8gdXNlIGF1dG9tYWtlIGFuZCBsaWJ0b29sCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJCTCIgdHlwZT0iYWRkIiBjb250ZXh0PSJjX3JlbCI+CisgICAgICAgIEluaXRpYWwgc3VwcG9ydCBmb3IgQVBJIGNoYW5nZXMgaW4gWGVyY2VzIDMuMAorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iQkwiIHR5cGU9ImZpeCIgY29udGV4dD0iY19yZWwiPgorICAgICAgICBGaXggYnVnIGluIGF1dG9jb25mIHRoYXQgd291bGQgcHJldmVudCBwcm9wZXIgZGV0ZWN0aW9uCisgICAgICAgIG9mIFhlcmNlcyBhYmlsaXR5IHRvIHNldCBJZCBhdHRyaWJ1dGVzCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJCTCIgdHlwZT0iZml4IiBjb250ZXh0PSJjX3JlbCI+CisgICAgICAgIEZpeCBidWcgNDAwODUgLSBpbmNvcnJlY3QgT0lEcyBvbiBub24gU0hBMSBiYXNlZCBSU0Egc2lncworICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iQkwiIHR5cGU9ImZpeCIgY29udGV4dD0iY19yZWwiPgorICAgICAgICBSZW1vdmUgcmVkdW5kYW50IGNvZGUgaW4gU2lnbmVkSW5mbyB0aGF0IHdhcyBwcmV2ZW50aW5nCisgICAgICAgIHRoZSBsb2FkaW5nIG9mIHNpZ25hdHVyZXMgd2l0aCBhbGdvcml0aG1zIG5vdCBoYXJkIGNvZGVkCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJCTCIgdHlwZT0iZml4IiBjb250ZXh0PSJjX3JlbCI+CisgICAgICAgIEZpeCBidWcgaW4gRW52ZWxvcGUgdHJhbnNmb3JtCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJCTCIgdHlwZT0iZml4IiBjb250ZXh0PSJjX3JlbCI+CisgICAgICAgIEZpeCBidWcgaW4gRFNJR1hQYXRoRmlsdGVyRXhwciB3aXRoIG5vbi1pbml0YWxpc2VkIHZhcnMuCisgICAgICAgIFJlcG9ydGVkIGJ5IFJhbGYgIlNhYm8iIFNhYm9yb3dza2kuCisgICAgICA8L2FjdGlvbj4KKyAgICA8L3JlbGVhc2U+CisgICAgCisgICA8cmVsZWFzZSB2ZXJzaW9uPSJKYXZhIDEuNCIgZGF0ZT0iSmFudWFyeSAyMDA3Ij4KKyAgICAgICA8YWN0aW9uIGRldj0iU00iIHR5cGU9ImFkZCIgY29udGV4dD0iamF2YV9nZW5lcmFsIj4gCisJCUpTUiAxMDUgaW1wbGVtZW50YXRpb24uCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJSQiIgdHlwZT0idXBkYXRlIiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiPgorICAgICAgIE1ham9yIG9wdGltaXphdGlvbnMgZm9yIHNpZ25hdHVyZXMgdGhhdCB1c2Ugbm9kZS1zZXQgdHJhbnNmb3JtYXRpb25zKHhwYXRoLHhwYXRoMixldGMpLCAyMC00MCUgc3BlZWQtdXAuICAKKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IlJCIiB0eXBlPSJ1cGRhdGUiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCI+CisgICAgICAgTWFqb3Igb3B0aW1pemF0aW9ucyBmb3Igc2lnbmF0dXJlcyB0aGF0IHVzZSB4cGF0aDIgdHJhbnNmb3JtYXRpb24uICAKKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IlJCIiB0eXBlPSJ1cGRhdGUiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCI+CisgICAgICAgTWFqb3Igb3B0aW1pemF0aW9ucyBpbiBpbmNsdXNpdmUgYzE0biB3aGVuIHVzaW5nIHhtbDoqIGF0dHJpYnV0dGVzLiAgCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJSQiIgdHlwZT0idXBkYXRlIiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiPgorICAgICAgIE1lbW9yeSBmb290cHJpbnQgcmVkdWN0aW9uOiBMZXNzIG9iamVjdCBjcmVhdGlvbi4gUmV1c2Ugb2YgImV4cGVuc2l2ZSIgb2JqZWN0cyBiZXR3ZWVuIAorICAgICAgIG9wZXJhdGlvbnMgaW4gdGhlIHNhbWUgdGhyZWFkLiAgCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJSQiIgdHlwZT0idXBkYXRlIiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiPgorICAgICAgIE1pbm9yIE9wdGltaXphdGlvbnMuIFJldXNlIHRoZSBzYW1lIFNpZ25hdHVyZSBvYmplY3QgaWYgdGhlIGtleSBhcmUgaWRlbnRpY2FsLiAgCisgICAgICA8L2FjdGlvbj4KKyAgICAgICAgPGFjdGlvbiBkZXY9IlNNIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iNDA3ODMiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCIgZHVlLXRvPSJGcmFuayBDb3JuZWxpcyI+CisgICAgCU5QRSBpbiBSZXNvbHZlckRpcmVjdEhUVFAuZW5naW5lQ2FuUmVzb2x2ZS4KKyAgICAJPC9hY3Rpb24+ICAgIAkKKyAgICAJPGFjdGlvbiBkZXY9IlJCIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iNDAzNjAiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCIgZHVlLXRvPSJKZWFuLUx1YyBDb29rZSI+CisgICAgCUF4aXNTaWduZXIuamF2YSBkb2Vzbid0IHdvcmsgb3V0IG9mIHRoZSBib3ggICAgCQorICAgIAk8L2FjdGlvbj4KKyAgICAJPGFjdGlvbiBkZXY9IlJCIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iNDA0MDQiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCIgZHVlLXRvPSJKZWFuLUx1YyBDb29rZSI+CisgICAgCUltcG9zc2libGUgdG8gYWRkIFg1MDkgc3ViZWxlbWVudHMgZm9yIHNpZ25pbmcgICAgCQorICAgIAk8L2FjdGlvbj4KKyAgICAJPGFjdGlvbiBkZXY9IlJCIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iNDAyMTUiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCIgZHVlLXRvPSJBQ2FzdHJvIj4KKyAgICAJQmFzZTY0IGRvZXMgbm90IHdvcmsgaW4gRUJDRElDIG1hY2hpbmVzLiAgICAgCQorICAgIAk8L2FjdGlvbj4KKyAgICAJPGFjdGlvbiBkZXY9IlJCIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iNDAwMzIiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCIgZHVlLXRvPSJCb2IgU2hhbmFoYW4gIj4KKyAgICAJU3VidHJlZSBjYW5vbmljYWxpemF0aW9uIHByb2R1Y2UgaW5jb3JyZWN0IHJlc3VsdHMgaW4gY2VydGFpbiBjYXNlcy4gCQorICAgIAk8L2FjdGlvbj4gICAgCSAgICAKKyAgICAJPGFjdGlvbiBkZXY9IlJCIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iNDA4OTYiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCIgZHVlLXRvPSJSdWNoaXRoIEZlcm5hbmRvIj4KKyAgICAJSW50ZXJuYWwuIENhbm5vdCBzaWduLXZlcmlmeSB0d2ljZSBpbiB0aGUgc2FtZSB0aHJlYWQgd2l0aCBkaWZmZXJlbnQgWE1MU2lnbmF0dXJlIGluc3RhbmNlcy4KKyAgICAJPC9hY3Rpb24+CisgICAgCTxhY3Rpb24gZGV2PSJSQiIgdHlwZT0iZml4IiBmaXhlcy1idWc9IjQwNzk2IiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiIGR1ZS10bz0iRnJhbmsgQ29ybmVsaXMiPgorICAgIAlJbnRlcm5hbC4gS2V5UmVzb2x2ZXJTcGkgZGVyaXZlZCBjbGFzc2VzIHJlcXVpcmUgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KKyAgICAJPC9hY3Rpb24+ICAgIAkKKyAgICAJPGFjdGlvbiBkZXY9IlNNIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iMzc3MDgiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCIgZHVlLXRvPSJQZXRlIEhlbmRyeSI+CisgICAgCURpZmZlcmVudCBiZWhhdmlvdXIgd2l0aCBOb2RlU2V0IGFuZCBSb290Tm9kZSB3aXRoIEluY2x1c2l2ZU5hbWVzcGFjZXMgICAgCSAgCisgICAgCTwvYWN0aW9uPgorICAgIAk8YWN0aW9uIGRldj0iU00iIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSIzNzQ1NiIgY29udGV4dD0iamF2YV9nZW5lcmFsIiBkdWUtdG89IlZpc2hhbCBNYWhhamFuIj4KKyAgICAJU2lnbmluZyB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIGN1c3RvbSByZXNvdXJjZSByZXNvbHZlciBpcyByZWdpc3RlcmVkICAgIAkgIAorICAgIAk8L2FjdGlvbj4KKyAgICAJPGFjdGlvbiBkZXY9IlJCIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iMzg2NTUiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCIgZHVlLXRvPSJrYXRveSI+ICAKKyAgICAJQ2Fub25pY2FsaXplciBnZXRzIGV4Y2VwdGlvbiBpbiBtYW55IG5hbWVzcGFjZXMuICAJICAKKyAgICAJPC9hY3Rpb24+CisgICAgCTxhY3Rpb24gZGV2PSJSQiIgdHlwZT0iZml4IiBmaXhlcy1idWc9IjM4NDQ0IiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiIGR1ZS10bz0iU3RlZmFubyBEZWwgU2FsIj4gICAKKyAgICAJVHJhbnNmb3JtIFRSQU5TRk9STV9YUEFUSDJGSUxURVIgc3VidHJhY3QgZmlsdGVyIGRvZXMgbm90IHdvcmsgY29ycmVjdGx5LgkgIAorICAgIAk8L2FjdGlvbj4KKyAgICAJPGFjdGlvbiBkZXY9IlJCIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iMzg2MDUiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCIgZHVlLXRvPSJQZXRlciBCYWNpayI+ICAgCisgICAgCVg1MDlDZXJ0aWZpY2F0ZVJlc29sdmVyIGRvZXMgbm90IHdvcmsgaW4gbXVsdGl0aHJlYWQgZW52aXJvbm1lbnQgCSAgCisgICAgCTwvYWN0aW9uPgorICAgIAk8YWN0aW9uIGRldj0iUkIiIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSIzOTIwMCIgY29udGV4dD0iamF2YV9nZW5lcmFsIiBkdWUtdG89Ill2YW4gSGVzcyI+IAorICAgIAlYTUxDaXBoZXItbG9hZEVuY3J5cHRlZEtleSgpIGRvZXNuJ3Qgc2V0IHRoZSBjb3JyZWN0IENhcnJpZWRLZXlOYW1lIGVsZW1lbnQuICAgCSAgCisgICAgCTwvYWN0aW9uPgorICAgIAk8YWN0aW9uIGRldj0iU00iIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSIzOTY4NSIgY29udGV4dD0iamF2YV9nZW5lcmFsIiBkdWUtdG89IlNlYW4gTXVsbGFuIj4KKyAgICAJRmluZGJ1Z3MgcmVwb3J0aW5nIGZpeGVkLiAgICAJICAKKyAgICAJPC9hY3Rpb24+CisgICAgCTxhY3Rpb24gZGV2PSJTTSIgdHlwZT0iYWRkIiBmaXhlcy1idWc9IjM4NjY4IiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiIGR1ZS10bz0iIj4gICAKKyAgICAJQWRkIFhNTENpcGhlci5lbmNyeXB0RGF0YSBtZXRob2QgdGhhdCB0YWtlcyBzZXJpYWxpemVkIGRhdGEgYXMgcGFyYW1ldGVyIAkgIAorICAgIAk8L2FjdGlvbj4gICAgCQorICAgIAk8IS0tCisgICAgCTxhY3Rpb24gZGV2PSJSQiIgdHlwZT0iZml4IiBmaXhlcy1idWc9IjQwMjkwIiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiIGR1ZS10bz0iRklYTUUiPgorICAgIAlJbnRlcm5hbCAgICAJCisgICAgCTwvYWN0aW9uPgorICAgIAk8YWN0aW9uIGRldj0iUkIiIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSI0MDI5OCIgY29udGV4dD0iamF2YV9nZW5lcmFsIiBkdWUtdG89IkZJWE1FIj4gICAKKyAgICAJSW50ZXJuYWwgCQorICAgIAk8L2FjdGlvbj4KKyAgICAJPGFjdGlvbiBkZXY9IiIgdHlwZT0iZml4IiBmaXhlcy1idWc9IjM4NDA1IiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiIGR1ZS10bz0iRklYTUUiPgorICAgIAlJbnRlcm5hbCAgICAJCisgICAgCTwvYWN0aW9uPgorICAgIAk8YWN0aW9uIGRldj0iIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iMzkyNzMiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCIgZHVlLXRvPSJGSVhNRSI+ICAKKyAgICAJSW50ZXJuYWwgIAkgIAorICAgIAk8L2FjdGlvbj4KKyAgICAJLS0+CisgICAgCQorICAgIAkKKyAgICA8L3JlbGVhc2U+ICAgIAorCisgICAgPHJlbGVhc2UgdmVyc2lvbj0iQysrIDEuMyIgZGF0ZT0iU2VwdGVtYmVyIDIwMDYiPgorICAgICAgPGFjdGlvbiBkZXY9IkJMIiB0eXBlPSJmaXgiIGNvbnRleHQ9ImNfcmVsIj4KKyAgICAgICAgUGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzIGluIGNhbm9uaWNhbGlzYXRpb24KKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IkJMIiB0eXBlPSJhZGQiIGNvbnRleHQ9ImNfcmVsIj4KKyAgICAgICAgSW1wbGVtZW50ZWQgYWxnb3JpdGhtIGhhbmRsZXJzIGZvciB0aGUgZGlnaXRhbCBzaWduYXR1cmUKKyAgICAgICAgY2xhc3NlcywgdG8gcHJvdmlkZSBhbGdvcml0aG0gZXh0ZW5zaWJpbGl0eQorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iQkwiIHR5cGU9InVwZGF0ZSIgY29udGV4dD0iY19yZWwiPgorICAgICAgICBVcGRhdGUgc2lnbmF0dXJlIGNsYXNzZXMgdG8gcGFzcyBpbiByZXF1ZXN0ZWQgYWxnb3JpdGhtcyBhcyBVUklzCisgICAgICAgIHJhdGhlciB0aGFuIGVudW1zLiAgRW51bSBiYXNlZCBtZXRob2RzIGFyZSBub3cgIGRlcHJlY2F0ZWQuCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJCTCIgdHlwZT0iZml4IiBjb250ZXh0PSJjX3JlbCI+CisgICAgICAgIEZpeCBtZW1vcnkgbGVha3MgaW4gT3BlblNTTCB3cmFwcGluZyBjb2RlCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJCTCIgdHlwZT0idXBkYXRlIiBjb250ZXh0PSJjX3JlbCI+CisgICAgICAgIFByb3ZpZGUgYWJpbGl0eSBmb3IgY2FsbGluZyBhcHBsaWNhdGlvbiB0byBkZWZpbmUgd2hldGhlcgorICAgICAgICByZWZlcmVuY2VzIGFyZSBpbnRlcmxvY2tpbmcuCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJCTCIgdHlwZT0iZml4IiBjb250ZXh0PSJjX3JlbCI+CisgICAgICAgIFByb3ZpZGUgc29tZSBzdGFiaWxpdHkgaWYgdGhlIEFwYWNoZSBrZXlzdG9yZSBpcyBjb3JydXB0ZWQgdW5kZXIKKyAgICAgICAgV2luZG93cy4KKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9Ik1UIiB0eXBlPSJhZGQiIGNvbnRleHQ9ImNfcmVsIj4KKyAgICAgICAgSW5pdGlhbCBpbXBvcnQgb2YgYmV0YSBOU1MgY3J5cHRvIHN1cHBvcnQKKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IkJMIiB0eXBlPSJhZGQiIGNvbnRleHQ9ImNfcmVsIj4KKyAgICAgICAgQ29tcGxldGUgaW1wbGVtZW50YXRpb24gb2YgWEtNUyBtZXNzYWdlIHNldAorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iQkwiIHR5cGU9ImFkZCIgY29udGV4dD0iY19yZWwiPgorICAgICAgICBNZXRob2RzIHRvIGFsbG93IGxvYWRpbmcgb2YgZW5jcnlwdGVkIGRhdGEgd2l0aG91dCBkb2luZyBkZWNyeXB0CisgICAgICAgIGFuZCB0byBwcm9jZXNzIGEgZGVjcnlwdC9lbmNyeXB0IG9wZXJhdGlvbiB3aXRob3V0IHJlcGxhY2luZyB0aGUKKyAgICAgICAgb3JpZ2luYWwgbm9kZXMKKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IkJMIiB0eXBlPSJhZGQiIGNvbnRleHQ9ImNfcmVsIj4KKyAgICAgICAgUHJvdmlkZSAgTVMgVkMrKyAyMDA1IHByb2plY3QgZmlsZXMKKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IkJMIiB0eXBlPSJmaXgiIGNvbnRleHQ9ImNfcmVsIj4KKyAgICAgICAgRml4IGJ1ZyB3aGVuIGVuY3J5cHRpbmcgc21hbGwgaW5wdXQgZG9jcworICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iQkwiIHR5cGU9InVwZGF0ZSIgY29udGV4dD0iY19yZWwiPgorICAgICAgICBJbXBsZW1lbnQgY2hlY2tzIGZvciBicm9rZW4gT3BlblNTTCBzdXBwb3J0IHVuZGVyIFNvbGFyaXMgMTAKKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IkJMIiB0eXBlPSJ1cGRhdGUiIGNvbnRleHQ9ImNfcmVsIj4KKyAgICAgICAgQWRkIC0td2l0aC14YWxhbiwgLS13aXRoLW9wZW5zc2wsIC0td2l0aC14ZXJjZXMgYW5kIC0tZW5hYmxlLXdhcm5lcnJvcgorICAgICAgICBmbGFncyBpbiBjb25maWd1cmUKKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IkJMIiB0eXBlPSJ1cGRhdGUiIGNvbnRleHQ9ImNfcmVsIj4KKyAgICAgICAgQ29uZmlndXJlIG5vdyBkZXRlY3RzIGlmIFhhbGFuIGlzIGluc3RhbGxlZCByYXRoZXIgdGhhbiBoYXZpbmcKKyAgICAgICAgWEFMQU5DUk9PVCBiZWluZyBhIHBvaW50ZXIgdG8gdGhlIGNvbXBpbGUgZGlyZWN0b3J5CisgICAgICA8L2FjdGlvbj4KKyAgICA8L3JlbGVhc2U+CisgICAgPHJlbGVhc2UgdmVyc2lvbj0iSmF2YSAxLjMiIGRhdGU9Ik9jdG9iZXIgMjAwNSI+CisgICAgCTxhY3Rpb24gZGV2PSJTTSIgdHlwZT0iZml4IiBmaXhlcy1idWc9IjM2MDQ0IiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiPgorCUNhbm9uaWNhbGl6aW5nIGFuIGVtcHR5IG5vZGUtc2V0IHRocm93cyBhbiBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24uIEFsc28gYWRkZWQgbmV3IHVuaXQgdGVzdCBmb3IgZ2VuZXJhdGluZyBzaWduYXR1cmVzLgorICAgIAk8L2FjdGlvbj4KKyAgICAJPGFjdGlvbiBkZXY9IlNNIiB0eXBlPSJmaXgiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCI+CisJRml4ZWQgTnVsbFBvaW50ZXJFeGNlcHRpb24gYnVncyBpbiBlbmdpbmVDYW5vbmljYWxpemUuCisgICAgCTwvYWN0aW9uPgorICAgIAk8YWN0aW9uIGRldj0iU00iIHR5cGU9ImZpeCIgY29udGV4dD0iamF2YV9nZW5lcmFsIiBkdWUtdG89IkNsaXZlIEJyZXR0aW5naGFtLU1vb3JlIj4KKwlGaXggYnVnIHdoZW4gcGFyc2luZyByZWZlcmVuY2UgbGlzdHMgZHVyaW5nIGRlY3J5cHRpb247IHByb3Blcmx5IGhhbmRsZSByZWxhdGl2ZSBVUklzIGFuZCBsaXN0cyBvZiBtb3JlIHRoYW4gb25lIGVsZW1lbnQuCisgICAgCTwvYWN0aW9uPgorICAgIAk8YWN0aW9uIGRldj0iU00iIHR5cGU9ImZpeCIgY29udGV4dD0iamF2YV9nZW5lcmFsIj4KKwlNYWtlIFhNTENpcGhlci5lbmNyeXB0RGF0YShEb2N1bWVudCwgRWxlbWVudCwgYm9vbGVhbikgcHVibGljIHNvIGl0IGNhbiBiZSB1c2VkIGJ5IGFwcGxpY2F0aW9ucy4KKyAgICAJPC9hY3Rpb24+CisgICAgCTxhY3Rpb24gZGV2PSJTTSIgdHlwZT0iZml4IiBmaXhlcy1idWc9IjM1OTE3IiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiIGR1ZS10bz0iSnVsaWVuIFRhdXBpbiI+CisJRXJyb3IgaW4gQ2FycmllZEtleU5hbWVEZWZpbml0aW9uIEVuY3J5cHRlZEtleUltcGwuCisgICAgCTwvYWN0aW9uPgorICAgIAk8YWN0aW9uIGRldj0iU00iIHR5cGU9ImZpeCIgY29udGV4dD0iamF2YV9nZW5lcmFsIj4KKwlDaGFuZ2UgbG9nZ2luZyBtZXNzYWdlIGluIFhNTENpcGhlci5kZWNyeXB0S2V5IGZyb20gaW5mbyB0byBkZWJ1ZyBsZXZlbCAodG9vIG5vaXN5IGZvciBpbmZvIGxldmVsKS4KKyAgICAJPC9hY3Rpb24+CisgICAgCTxhY3Rpb24gZGV2PSJTTSIgdHlwZT0iYWRkIiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiPgorCUFkZCBuZXcgbXNnIGlkIG5hbWVkIGRlY29kaW5nLmRpdmlzaWJsZS5mb3VyIGFuZCBmaXggYnVnIGluIEJhc2U2NCBUcmFuc2Zvcm0gdG8gdGhyb3cgQmFzZTY0RGVjb2RpbmdFeGMgd2l0aCB0aGlzIG1zZyBpZCBpbnN0ZWFkIG9mICJJdCBzaG91bGQgYmUgZGl2ZWQgYnkgZm91ciIuCisgICAgCTwvYWN0aW9uPgorICAgIAk8YWN0aW9uIGRldj0iU00iIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSIzNTU4MCIgY29udGV4dD0iamF2YV9nZW5lcmFsIiBkdWUtdG89IlJ1bmUgRnJpaXMtSmVuc2VuIj4KKwlGaXggZmlsZSBkZXNjcmlwdG9yIGxlYWsgaW4gWE1MU2lnbmF0dXJlSW5wdXQuCisgICAgCTwvYWN0aW9uPgorICAgIAk8YWN0aW9uIGRldj0iU00iIHR5cGU9ImZpeCIgY29udGV4dD0iamF2YV9nZW5lcmFsIj4KKwlGaXggTnVsbFBvaW50ZXJFeGNlcHRpb24gaW4gVHJhbnNmb3JtWFBhdGhGaWx0ZXIyLmVuZ2luZVRyYW5zZm9ybSBpZiBYTUxTaWduYXR1cmVJbnB1dCBpcyBhIG5vZGUtc2V0IChpbnN0ZWFkIG9mIGFuIGVsZW1lbnQgc3VidHJlZSkuCisgICAgCTwvYWN0aW9uPgorICAgIAk8YWN0aW9uIGRldj0iU00iIHR5cGU9ImZpeCIgY29udGV4dD0iamF2YV9nZW5lcmFsIiBkdWUtdG89ImJvZGlndWlsbGF1bWUtZGV2QHlhaG9vLmZyIj4KKwlGaXggY29uZGl0aW9uIGluIEVsZW1lbnRQcm94eS5ndWFyYW50ZWVUaGF0RWxlbWVudEluQ29ycmVjdFNwYWNlKCkuCisgICAgCTwvYWN0aW9uPgorICAgIAk8YWN0aW9uIGRldj0iU00iIHR5cGU9ImZpeCIgY29udGV4dD0iamF2YV9nZW5lcmFsIj4KKwlGaXggTnVsbFBvaW50ZXJFeGNlcHRpb24gaW4gbG9nIG1lc3NhZ2UgZW1pdHRlZCBieSBSZXNvbHZlckRpcmVjdEhUVFAuZW5naW5lQ2FuUmVzb2x2ZS4KKyAgICAJPC9hY3Rpb24+CisgICAgCTxhY3Rpb24gZGV2PSJTTSIgdHlwZT0iZml4IiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiPgorCUZpeCBOdWxsUG9pbnRlckV4Y2VwdGlvbiBidWcgaW4gUmVzb2x2ZXJYUG9pbnRlci5lbmdpbmVSZXNvbHZlOyBjaGVjayBpZiBCYXNlVVJJIGlzIG51bGwgYmVmb3JlIHNldHRpbmcgc291cmNlIFVSSS4KKyAgICAJPC9hY3Rpb24+CisgICAgCSAgICA8YWN0aW9uIGRldj0iUkIiIHR5cGU9InVwZGF0ZSIgY29udGV4dD0iamF2YV9nZW5lcmFsIj4gCisgICAgICAgIE91dCBvZiB0aGUgYm94IGoyc2UgMS41IHJlYWR5KG5vIGFkZGluZyB4YWxhbiBpbiB0aGUgY2xhc3NwYXRoIG9yIGVuZG9yc2VkIGlmIG5vCisJICAgeHBhdGggdHJhbnNmb3JtYXRpb24gaXMgbmVlZGVkKQorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iUkIiIHR5cGU9InJlbW92ZSIgY29udGV4dD0iamF2YV90cmFuc2Zvcm1hdGlvbnMiPiAKKwkJUmVtb3ZlZCBodHRwOi8vd3d3Lm51ZS5ldC1pbmYudW5pLXNpZWdlbi5kZS9+Z2V1ZXItcG9sbG1hbm4vI3hwYXRoRmlsdGVyIHRyYW5zZm9ybWF0aW9uLgorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iUkIiIHR5cGU9InVwZGF0ZSIgY29udGV4dD0iamF2YV9jMTRuIj4gCisgICAgICAJUGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgaW4gQzE0biwgZHVlIHRvIGNoYW5nZXMgaW4gaW50ZXJuYWwgc3RydWN0dXJlLAorICAgICAgCWFuZCBhIG5vbiByZWN1cnNpdmUgYWxnb3JpdGhtLgorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iUkIiIHR5cGU9InVwZGF0ZSIgY29udGV4dD0iamF2YV9jMTRuIj4gCisgICAgICAJUmVkdWNlIG1lbW9yeSBjb25zdW1wdGlvbiBpbiBjMTRuLgorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iUkIiIHR5cGU9InVwZGF0ZSIgY29udGV4dD0iamF2YV9nZW5lcmFsIj4gCisgICAgICAJR2VuZXJhbCBzbWFsbCBvcHRpbWl6YXRpb25zKGI2NCBzcGVlZC11cHMsIGxpc3QgaW5zdGVhZCBvZiB2ZWN0b3IsIGV0Yy4uLikuCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJSQiIgdHlwZT0icmVtb3ZlIiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiPiAKKwkJUmVtb3ZlIG9mIFBSTkcsIEhleER1bXAsIFg1MDlDZXJ0aWZpY2F0ZVZhbGlkYXRvciBjbGFzc2VzLgorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iUkIiIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSIzNDc0MyIgY29udGV4dD0iamF2YV9nZW5lcmFsIiBkdWUtdG89IkxlZSBDb29tYmVyIj4KKyAgICAgIAlGaXggTlBFIHdoZW4gYW4gdW5rbm93biB0cmFuc2Zvcm0gYWxnb3JpdGhtIGlzIHVzZWQuCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJSQiIgdHlwZT0iZml4IiBmaXhlcy1idWc9IjMzOTM2IiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiIGR1ZS10bz0iUmF5bW9uZCBXb25nIj4KKyAgICAgIAlSZW1vdmVkIHN5c3RlbS5lcnIucHJpbnRsbiB0byBhIHJlYWwgbG9nLgorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iUkIiIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSIzNTkxOSIgY29udGV4dD0iamF2YV9nZW5lcmFsIiBkdWUtdG89Ikx1ZGEiPgorICAgICAgCUZpeCBhIGJ1ZyBpbiBYcGF0aCBhbmQgQmFzZTY0IHRyYW5zZm9ybSBpcyB1c2VkIHRvZ2V0aGVyLgorICAgICAgPC9hY3Rpb24+CisJPGFjdGlvbiBkZXY9IlZNIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iMzY2MzgiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCI+CisJQ2Fub25pY2FsaXphdGlvbiBvZiBhIERvY3VtZW50RnJhZ21lbnQgbm9kZSBhbHdheXMgdGhyb3dzIGEgYzE0biBleGNlcHRpb24KKyAgICAJPC9hY3Rpb24+CisJPGFjdGlvbiBkZXY9IlZNIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iMzY2MzkiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCI+CisJS2V5VmFsdWUuZ2V0UHVibGljS2V5IGRvZXMgbm90IHdvcmsKKyAgICAJPC9hY3Rpb24+CisJPGFjdGlvbiBkZXY9IlZNIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iMzY2NDAiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCI+CisJU2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBpZ25vcmVzIHRoZSBpbmNsdXNpdmUgbmFtZXNwYWNlcyBwYXJhbWV0ZXIgb2YgYSBleGNsIGMxNG4gZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZAorICAgIAk8L2FjdGlvbj4KKyAgICA8L3JlbGVhc2U+CisgICAgCisgICAgPHJlbGVhc2UgdmVyc2lvbj0iQysrIDEuMi4xIiBkYXRlPSJKdWx5IDIwMDUiPgorICAgICAgPGFjdGlvbiBkZXY9IkJMIiB0eXBlPSJmaXgiIGNvbnRleHQ9ImNfcmVsIj4gCisgICAgICAgIEFkZCB4a2xpZW50ICJObyBYYWxhbiIgYnVpbGRzIGluIFZDIDYuMCBwcm9qZWN0IGZpbGVzCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJCTCIgdHlwZT0iZml4IiBjb250ZXh0PSJjX3JlbCI+IAorICAgICAgICBGaXggdmVyc2lvbiBzdWZmaXhlcyBvbiBETEwgZmlsZXMgaW4gVkMgNi4wICJObyBYYWxhbiIgYnVpbGQuCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJCTCIgdHlwZT0iZml4IiBjb250ZXh0PSJjX3JlbCI+IAorICAgICAgICBBZGQgIk5vIFhhbGFuIiBzdXBwb3J0IGludG8gVkMgNy4wIHByb2plY3QgZmlsZXMuCisgICAgICA8L2FjdGlvbj4KKyAgICA8L3JlbGVhc2U+CisgICAgPHJlbGVhc2UgdmVyc2lvbj0iQysrIDEuMi4wIiBkYXRlPSJKdW5lIDIwMDUiPgorICAgICAgPGFjdGlvbiBkZXY9IkJMIiB0eXBlPSJmaXgiIGNvbnRleHQ9ImNfcmVsIj4gCisgICAgICAgIFJlbW92ZSBNRkMgZGVwZW5kZW5jeSBhbmQgY2xlYW4gdXAgbWVtb3J5IGRlYnVnZ2luZworICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iQkwiIHR5cGU9InVwZGF0ZSIgY29udGV4dD0iY19yZWwiPiAKKyAgICAgICAgUmVtb3ZlIGR5bmFtaWNfY2FzdHMgYW5kIFJUVEkgcmVxdWlyZW1lbnQKKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IkJMIiB0eXBlPSJhZGQiIGNvbnRleHQ9ImNfcmVsIj4gCisgICAgICAgIEltcGxlbWVudGVkIFhLTVMgTWVzc2FnZSBnZW5lcmF0aW9uIGFuZCBwcm9jZXNzaW5nCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJCTCIgdHlwZT0iYWRkIiBjb250ZXh0PSJjX3JlbCI+IAorICAgICAgICBJbXBsZW1lbnRlZCBjb21tYW5kIGxpbmUgWEtNUyB0b29sIGZvciBnZW5lcmF0aW5nIGFuZCBkdW1waW5nIFhLTVMgbWVzc2FnZXMKKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IkJMIiBmaXhlcy1idWc9IjI4NTIwIiB0eXBlPSJmaXgiIGNvbnRleHQ9ImNfcmVsIj4gCisgICAgICAgIFN1cHBvcnQgZm9yIERFU1RESVIgYXMgcHJvdmlkZWQgYnkgVmlsbGUgU2t5dHRhIGluIEJ1Z3ppbGxhIDI4NTIwCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJNVCIgdHlwZT0iZml4IiBjb250ZXh0PSJjX3JlbCI+IAorICAgICAgICBVcGRhdGUgdG8gQXBhY2hlIGxpY2VuY2UgMi4wLgorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iQkwiIHR5cGU9ImFkZCIgY29udGV4dD0iY19yZWwiPiAKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFNIQTIyNC8yNTYvMzg0LzUxMiAocmVxdWlyZXMgT3BlblNTTCAwLjkuOCBCZXRhKQorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iQkwiIHR5cGU9ImFkZCIgZml4ZXMtYnVnPSIzNDkyMCIgY29udGV4dD0iY19yZWwiPiAKKyAgICAgICAgUGF0Y2ggZm9yIE1hYyBPUyBYIGNvbXBpbGUgLSBwcm92aWRlZCBieSBTY290dCBDYW50b3IgLSBTZWUgQnVnemlsbGEgIzM0OTIwCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJCTCIgdHlwZT0idXBkYXRlIiBjb250ZXh0PSJjX3JlbCI+IAorICAgICAgICBVcGRhdGVzIHRvIGNvbXBpbGUgYWdhaW5zdCBYYWxhbiAxLjkKKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IkJMIiB0eXBlPSJ1cGRhdGUiIGNvbnRleHQ9ImNfcmVsIj4gCisgICAgICAgIEJhY2twb3J0IHRvIGNvbXBpbGUgd2l0aCBYZXJjZXMgMi4xCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJCTCIgdHlwZT0iZml4IiBjb250ZXh0PSJjX3JlbCI+IAorICAgICAgICBGaXggYnVnIHdpdGggTlVMTCBwb2ludGVyIHdoZW4gdmFsaWRhdGluZyBvciBzaWduaW5nIGVtcHR5IHJlZmVyZW5jZSBsaXN0cyAtIGZpeCBhcyBzdWdnZXN0ZWQgYnkgSmVzc2UgUGVsdG9uIG9uIDIzIE1hcmNoIDIwMDUgb24gc2VjdXJpdHktZGV2CisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJCTCIgdHlwZT0idXBkYXRlIiBjb250ZXh0PSJjX3JlbCI+IAorICAgICAgICBQcm92aWRlZCBzdXBwb3J0IGZvciBub21pbmF0aW5nIG5hbWVzcGFjZSBiYXNlZCBJZCBhdHRyaWJ1dGVzCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJCTCIgdHlwZT0iZml4IiBjb250ZXh0PSJjX3JlbCI+IAorICAgICAgICBDaGFuZ2UgdG8gYWxsb3cgYXBwcyB0byBjYWxjdWxhdGUgYW5kIG9idGFpbiBzaWduZWQgaW5mbyBoYXNoIC0gZnJvbSBFY2tlaGFyZCBIZXJtYW5uIC0gc2VlIGVtYWlsIG9mIDIgTWFyY2ggMjAwNSBvbiBzZWN1cml0eS1kZXYKKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IkJMIiB0eXBlPSJmaXgiIGNvbnRleHQ9ImNfcmVsIj4gCisgICAgICAgIFBhdGNoIGZvciBsb25nIFJTQSBrZXlzIHByb3ZpZGVkIGJ5IE1pY2hhZWwgQnJhdW5vZWRlciB0byBzZWN1cml0eS1kZXYgb24gMTYgTm92IDIwMDUKKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IkJMIiB0eXBlPSJmaXgiIGNvbnRleHQ9ImNfcmVsIj4gCisgICAgICAgIE1lbW9yeSBsZWFrIGluIE9wZW5TU0xDcnlwdG9CYXNlNjQgcmVwb3J0ZWQgYnkgSmVzc2UgUGVsdG9uIGZpeGVkLgorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iQkwiIHR5cGU9ImZpeCIgY29udGV4dD0iY19yZWwiPiAKKyAgICAgICAgTW92ZSB0byBpbnRlcm5hbCBCYXNlNjQgZGVjb2RlciBpbiBhIG51bWJlciBvZiBtZXRob2RzIHRvIGhhbmRsZSBub24td3JhcHBpbmcgZGF0YQorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iQkwiIHR5cGU9ImZpeCIgY29udGV4dD0iY19yZWwiPiAKKyAgICAgICAgUmVzaXplIGJ1ZmZlciBpbiBPcGVuU1NMQ3J5cHRvS2V5UlNBIGZvciBsYXJnZXIgUlNBIGtleXMgLSBhcyBzdWJtaXR0ZWQgYnkgVmFkaW0gSXNtYWlsb3YgMyBEZWNlbWJlciAyMDA1CisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJCTCIgdHlwZT0iZml4IiBjb250ZXh0PSJjX3JlbCI+IAorICAgICAgICBSZW1vdmUgcmVkdW5kYW50IG1fa2V5VHlwZSBjbGFzcyB2YXJpYWJsZSBmcm9tIE9wZW5TU0xDcnlwdG9LZXlSU0EgYXMgcmVwb3J0ZWQgYnkgSmVzc2UgUGVsdG9uIG9uIHNlY3VyaXR5LWRldgorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iQkwiIHR5cGU9ImZpeCIgY29udGV4dD0iY19yZWwiPiAKKyAgICAgICAgRG9uJ3QgdGhyb3cgYW4gZXhjZXB0aW9uIHdoZW4gYW4gUlNBIGRlY3J5cHQgZmFpbHMgZHVyaW5nIHNpZyB2YWxpZGF0aW9uIC0gdGhpcyBpcyBhIGZhaWxlZCB2YWxpZGF0ZSwgbm90IGFuIGVycm9yCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJCTCIgdHlwZT0iZml4IiBjb250ZXh0PSJjX3JlbCI+IAorICAgICAgICBTaHV0ZG93biBPcGVuU1NMIHByb3Blcmx5IC0gYXMgc3VnZ2VzdGVkIGJ5IEplc3NlIFBlbHRvbiBpbiBlLW1haWwgdG8gc2VjdXJpdHktZGV2IG9uIDkgTWFyY2ggMjAwNQorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iQkwiIHR5cGU9ImZpeCIgY29udGV4dD0iY19yZWwiPiAKKyAgICAgICAgQ2hhbmdlZCBzY29wZSBvZiBXaW5DYXBpQ3J5cHRvS2V5OjppbXBvcnRLZXkoKSBmcm9tIHByaXZhdGUgdG8gcHVibGljLiBJdCByZXR1cm5zIGtleSBub3csIGluc3RlYWQgb2Ygdm9pZC4KKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IkJMIiB0eXBlPSJmaXgiIGNvbnRleHQ9ImNfcmVsIj4gCisgICAgICAgIEZpeCBwcm9ibGVtIGluIFdpbmRvd3MgQ0FQSSB3aGVyZSBYU0VDIGRvZXNuJ3Qgd29yayBpZiB1c2VyIGRvZXNuJ3QgaGF2ZSBhZG1pbiByaWdodHMuCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJCTCIgdHlwZT0iZml4IiBjb250ZXh0PSJjX3JlbCI+IAorICAgICAgICBCdWcgZml4IGluIFdpbmRvd3MgQ0FQSSBjb2RlIGZvciBzb21lIFcySyBtYWNoaW5lcyAtIHJlcG9ydGVkIGJ5IEFuZHJ6ZWogTWF0ZWprbyA0LzUvMjAwNAorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iTVQiIHR5cGU9ImZpeCIgY29udGV4dD0iY19yZWwiPiAKKyAgICAgICAgRml4IGJ1aWxkIG9uIG5vbiBXSU5DQVBJIHN5c3RlbXMsIGFzIHJlcG9ydGVkIGJ5IE1pbGFuIFRvbWljIG9uIDIyLzQvMjAwNAorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iTVQiIHR5cGU9ImZpeCIgY29udGV4dD0iY19yZWwiPiAKKyAgICAgICAgTmV3IGNvbnN0cnVjdG9yIGFkZGVkIHRvIFdpbkNhcGlYNTA5CisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJCTCIgdHlwZT0iZml4IiBjb250ZXh0PSJjX3JlbCI+IAorICAgICAgICBGaXhlZCBCdWcgaW4gZW5jb2RlKCkgWFNDcnlwdENyeXB0b0Jhc2U2NC4KKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IkJMIiB0eXBlPSJmaXgiIGNvbnRleHQ9ImNfcmVsIj4gCisgICAgICAgIEZpeCBidWcgaW4gWFBhdGhGaWx0ZXIgdHJhbnNmb3JtIHdoZW4gY2hlY2tpbmcgaWYgYW4gYXR0cmlidXRlIGlzIGluIHRoZSBpbnB1dCBub2RlIHNldC4KKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IkJMIiB0eXBlPSJmaXgiIGNvbnRleHQ9ImNfcmVsIj4gCisgICAgICAgIEZpeCBidWcgaW4gaW4gVVRGIHRyYW5zY29kZXIgZm9yIGNvdW50aW5nIG9mIHRyYW5zY29kZWQgY2hhcmFjdGVycyAoY291bnQgY2hhcmFjdGVycyBub3QgYnl0ZXMpIHJlcG9ydGVkIGJ5IE1pbGFuIFRvbWljCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJCTCIgdHlwZT0iZml4IiBjb250ZXh0PSJjX3JlbCI+IAorICAgICAgICBNb3ZlIGZ1bmN0aW9uIGRlZmluaXRpb25zIGluIHRoZSBXaW5kb3dzIEJpbklucHV0IHN0cmVhbSBjbGFzcyB0byBzdGF0aWMgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggWGVyY2VzLiAgQXMgc3VnZ2VzdGVkIGJ5IEplc3NlIFBlbHRvbiBvbiAyIEZlYiAyMDA1IGluIHNlY3VyaXR5LWRldgorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iTVQiIHR5cGU9ImFkZCIgY29udGV4dD0iY19yZWwiPiAKKyAgICAgICAgQWRkZWQgY29tcGxldGUgS2V5SW5mbyBoYW5kbGluZyBmb3IgWEVOQ0VuY3J5cHRlZFR5cGUKKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBkZXY9IkJMIiB0eXBlPSJmaXgiIGNvbnRleHQ9ImNfcmVsIj4gCisgICAgICAgIEZpeCB0byBzdG9wIHJlLXVzZSBvZiBkZXJpdmVkIGtleSBlbmNyeXB0aW5nIGtleSB3aGVuIGRlY3J5cHRpbmcgbXVsdGlwbGUgZWxlbWVudHMgaW4gYSBkb2N1bWVudAorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iQkwiIHR5cGU9ImZpeCIgY29udGV4dD0iY19yZWwiPiAKKyAgICAgICAgRml4IHRvIGlnbm9yZSBlbmNyeXB0aW9uIGV4Y2VwdGlvbnMgZHVyaW5nIGEgcHJpdmF0ZSBrZXkgZGVjcnlwdAorICAgICAgPC9hY3Rpb24+CisgICAgPC9yZWxlYXNlPiAgICAKKworCisKKyAgICA8cmVsZWFzZSB2ZXJzaW9uPSJKYXZhIDEuMi4xIiBkYXRlPSJGZWJydWFyeSAyMDA1Ij4KKyAgICAJPGFjdGlvbiBkZXY9IlJCIiB0eXBlPSJmaXgiIGZpeGVzLWJ1Zz0iMzI4MzYiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCIgZHVlLXRvPSJTeWx2YWluIER1c2FydCI+CisgICAgCUZpeCBhIG1lbW9yeSBsZWFrIHdoZW4gdXNpbmcgeHBhdGggb3IgdXNpbmcgUmVzb3VyY2VSZXNvbHZlciBhbmQgbm90IGhpdHRpbmcgZ2V0RWxlbWVudEJ5SWRVc2luZ0RPTSgpCisgICAgCTwvYWN0aW9uPgorICAgICAgICA8YWN0aW9uIGRldj0iUkIiIHR5cGU9ImZpeCIgY29udGV4dD0iamF2YV9nZW5lcmFsIj4KKyAgICAgICAgRml4IGVycm9uZW91cyBjcmVhdGlvbi92ZXJpZmljYXRpb24gd2hlbiB1c2luZyBYUGF0aDJGaWx0ZXIgYW5kIGluY2x1c2l2ZSBjMTRuLjwvYWN0aW9uPgorICAgICAgICA8YWN0aW9uIGRldj0iUkIiIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSIyMzU1NCIgY29udGV4dD0iamF2YV9nZW5lcmFsIiBkdWUtdG89IlJheW1vbmQgV29uZyI+CisgICAgICAgIExpYnJhcnkgbm93IHRocm93cyBhbiBleGNlcHRpb24gd2hlbiBhc2tlZCB0byBzaWduL3ZlcmlmeSBhbiBpbmV4aXN0ZW50IGZyYWdtZW50LjwvYWN0aW9uPgorIAkJPGFjdGlvbiBkZXY9IlJCIiB0eXBlPSJmaXgiIGNvbnRleHQ9ImphdmFfZ2VuZXJhbCI+CisgCQlSZXN0b3JlIHJlc2V0IGJlaGF2aW91ciBhcyBkZWZhdWx0IHdoZW4gcmV1c2luZyBDYW5vbmljYWxpemVycyhidXQgYW4gYXBwZW5kIG9uZSBjYW4gc3RpbGwgYmUgdXNlZCkuPC9hY3Rpb24+CisgICAgICAgIDxhY3Rpb24gZGV2PSJSQiIgdHlwZT0iZml4IiBmaXhlcy1idWc9IjMzMzkzIiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiIGR1ZS10bz0iU2VhbiBNdWxsYW4iPgorICAgICAgICBGaXggYSBidWcgd2hlbiB1c2luZyBiYXNlNjR0cmFuc2Zvcm1hdGlvbiBhbmQgZXh0ZXJuYWwgcmVzb3VyY2VzLjwvYWN0aW9uPgorICAgICAgICA8YWN0aW9uIGRldj0iUkIiIHR5cGU9ImZpeCIgY29udGV4dD0iamF2YV9nZW5lcmFsIj4KKyAgICAgICAgRml4IGEgYnVnIHdoZW4gcGFzc2luZyBYTUxzaWduYXR1cmVJbnB1dChJbnB1dFN0cmVhbSkgc3RyZWFtcyB0aGF0IGRvbid0IGFja25vd2xlZGdlIHJlc2V0KCkgYXMgZXhwZWN0ZWQuCisgICAgICAgIDwvYWN0aW9uPgorICAgICAgICA8YWN0aW9uIGRldj0iUkIiIHR5cGU9ImZpeCIgZml4ZXMtYnVnPSIzMjk5NiIgY29udGV4dD0iamF2YV9nZW5lcmFsIiBkdWUtdG89IlNlYW4gTXVsbGFuIj4KKyAgICAgICAgQWRkZWQgaTE0biBCYXNlNjQgZXJyb3IgbWVzc2FnZS4KKyAgICAgICAgPC9hY3Rpb24+CisgICAgICAgIDxhY3Rpb24gZGV2PSJSQiIgdHlwZT0icmVtb3ZlIiBjb250ZXh0PSJleHRlcm5hbC1saWJzIj4KKyAgICAgICAgQ2xlYW4gdW51c2VkIGphciAoeG1sUGFyc2VyQVBJLmphcixldGMpIGFuZCBjaGVjayBhbmQgc3RvcmVkIG5ldyB2ZXJzaW9ucy4KKyAgICAgICAgPC9hY3Rpb24+CisgICAgICAgIDxhY3Rpb24gZGV2PSJSQiIgdHlwZT0idXBkYXRlIiBjb250ZXh0PSJleHRlcm5hbC1saWJzIj4KKyAgICAgICAgR2VuZXJhdGVkIHRoZSBkaXN0IGphciB3aXRoIHZlcnNpb24gKGkuZS4geG1sc2VjLTEuMi4xLmphciBpbnN0ZWFkIG9mIHBsYWluIHhtbHNlYy5qYXIpCisgICAgICAgIDwvYWN0aW9uPgorCSAgICA8YWN0aW9uIGRldj0iUkIiIHR5cGU9InJlbW92ZSIgY29udGV4dD0iYnVpbGQiPgorICAgIAlDbGVhbiB1bnVzZWQgYnVpbGQqLnhtbCBmaWxlcy4KKwkgICAgPC9hY3Rpb24+CisgICAgPC9yZWxlYXNlPgorICAgIAorICAgIDxyZWxlYXNlIHZlcnNpb249IkphdmEgMS4yIiBkYXRlPSJEZWNlbWJlciAyMDA0Ij4KKyAgICAgIDxhY3Rpb24gZGV2PSJSQiIgdHlwZT0idXBkYXRlIiBjb250ZXh0PSJqYXZhX2MxNG4iPgorCSBSZXdvcmsgdGhlIGNhbm9uaWNhbGl6YXRpb24gZm9yIHNwZWVkLXVwIGNvbW1vbiBjYXNlcworICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iUkIiIHR5cGU9InVwZGF0ZSIgY29udGV4dD0iamF2YV9nZW5lcmFsIj4KKwlHZW5lcmFsIG1lbW9yeSBmb290cHJpbnQgaW1wcm92ZW1lbnRzCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJSQiIgdHlwZT0idXBkYXRlIiBjb250ZXh0PSJqYXZhX2dlbmVyYWwiPgorCSAgR2VuZXJhbCBzcGVlZCBvcHRpbWl6YXRpb25zCisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJWTSIgdHlwZT0idXBkYXRlIiBjb250ZXh0PSJqYXZhX2NzcCI+CisJIFVwZGF0ZSB0aGUgSkNFIGFsZ29yaXRoIG1lY2hhbmlzbQorICAgICAgPC9hY3Rpb24+CisgICAgPC9yZWxlYXNlPgorICAgIDxyZWxlYXNlIHZlcnNpb249IkMrKyAxLjEwIiBkYXRlPSJNYXJjaCAyMDA0Ij4KKyAgICAgIDxhY3Rpb24gZGV2PSJCTCIgdHlwZT0iYWRkIiBjb250ZXh0PSJjX3JlbCI+CisJICAgIDx1bD4KKwkJICA8bGk+QnVnIGZpeGVzIGZvciBzaWduYXR1cmUgY29kZTwvbGk+CisJCSAgPGxpPkJldGEgaW1wbGVtZW50YXRpb24gb2YgWE1MIEVuY3J5cHRpb248L2xpPgorCQkgIDxsaT5Jbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIHBsdWdnYWJsZSBhbGdvcml0aG0gaGFuZGxlcnM8L2xpPgorCQk8L3VsPgorICAgICAgPC9hY3Rpb24+CisJPC9yZWxlYXNlPgorICAgIDxyZWxlYXNlIHZlcnNpb249IkMrKyAxLjAwIiBkYXRlPSJKdWx5IDIwMDMiPgorICAgICAgPGFjdGlvbiBkZXY9IkJMIiB0eXBlPSJhZGQiIGNvbnRleHQ9ImNfcmVsIj4KKwkgICAgPHVsPgorCQkgIDxsaT5GaXJzdCBzdGFibGUgcmVsZWFzZTwvbGk+CisJCSAgPGxpPlN1cHBvcnQgZm9yIEZyZWVCU0QsIE5ldEJTRCBhbmQgQ3lnd2luIGJ1aWxkczwvbGk+CisJCSAgPGxpPkFsbCBLZXlJbmZvIGVsZW1lbnRzIG5vdyBhdmFpbGFibGU8L2xpPgorCQkgIDxsaT5WYXJpb3VzIGJ1ZyBmaXhlczwvbGk+CisJCTwvdWw+CisgICAgICA8L2FjdGlvbj4KKwk8L3JlbGVhc2U+CisgICAgPHJlbGVhc2UgdmVyc2lvbj0iQysrIDAuMjAiIGRhdGU9Ik1heSAyMDAzIj4KKyAgICAgIDxhY3Rpb24gZGV2PSJCTCIgdHlwZT0iYWRkIiBjb250ZXh0PSJjX3JlbCI+CisJICAgIDx1bD4KKwkJPGxpPldpbmRvd3MgQ3J5cHRvIEFQSSBpbnRlcmZhY2U8L2xpPgorCQk8bGk+QmFzaWMgZnVuY3Rpb25zIHRvIGV4dHJhY3QgaW5mb3JtYXRpb24gZnJvbSBzaWduYXR1cmUgb2JqZWN0czwvbGk+CisJCTxsaT5WYXJpb3VzIGJ1ZyBmaXhlczwvbGk+CisJCTwvdWw+CisgICAgICA8L2FjdGlvbj4KKwk8L3JlbGVhc2U+CisgICAgPHJlbGVhc2UgdmVyc2lvbj0iSmF2YSAxLjAuNSIgZGF0ZT0idW5yZWxlYXNlZCI+CisgICAgICA8YWN0aW9uIGRldj0iS1ciIHR5cGU9InVwZGF0ZSIgY29udGV4dD0iZG9jcyI+CisJPHA+UG9ydGVkIHRoZSBkb2NzIHRvIEZvcnJlc3Q8L3A+CisgICAgICA8L2FjdGlvbj4KKyAgICA8L3JlbGVhc2U+CisgICAgPHJlbGVhc2UgdmVyc2lvbj0iQysrIDAuMTAiIGRhdGU9InVucmVsZWFzZWQiPgorICAgICAgPGFjdGlvbiBkZXY9IkJMIiB0eXBlPSJhZGQiIGNvbnRleHQ9ImNfcmVsIj4KKyAgICAgICAgPHA+CisgICAgICAgICAgRmlyc3QgcmVsZWFzZSBvZiBhIEJldGEgZm9yIHRoZSBDKysgbGlicmFyeS4KKyAgICAgICAgPC9wPgorICAgICAgPC9hY3Rpb24+CisgICAgPC9yZWxlYXNlPgorICAgIDxyZWxlYXNlIHZlcnNpb249IkphdmEgMS4wLjQiIGRhdGU9IjE1IEp1bHkgMjAwMiI+CisgICAgICA8YWN0aW9uIGRldj0iQ0dQIiB0eXBlPSJ1cGRhdGUiIGNvbnRleHQ9ImphdmFfamRrIj4KKwk8cD5KYXZhIC0gUGVvcGxlIHdobyBkaWQgbm90IGluc3RhbGwgWGFsYW4gcHJvcGVybHkgdW5kZXIgSkRLIDEuNC4wIG5vdworCWdldCBhIG1vcmUgc3BlY2lmaWMgZXJyb3IgbWVzc2FnZS48L3A+CisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gZGV2PSJDR1AiIHR5cGU9InVwZGF0ZSIgY29udGV4dD0iamF2YV9jc3AiPgorCTxwPkphdmEgLSBXZSB1c2UgdGhlIG1vc3QgcmVjZW50IHZlcnNpb24gb2YgdGhlIEJvdW5jeUNhc3RsZSBKQ0Ugbm93LjwvcD4KKyAgICAgIDwvYWN0aW9uPgorICAgIDwvcmVsZWFzZT4KKyAgICA8cmVsZWFzZSB2ZXJzaW9uPSJKYXZhIDEuMC4zIiBkYXRlPSJ1bmtub3duIj4KKyAgICAgIDxhY3Rpb24gZGV2PSJDR1AiIHR5cGU9ImFkZCIgY29udGV4dD0iamF2YV9leGNfYzE0biI+CisJPHA+SmF2YSAtIEFkZGVkIHN1cHBvcnQgPGxpbmsgaHJlZj0iZXh0OnczYy9jMTRuIj4gRXhjbHVzaXZlIFhNTAorCSAgQ2Fub25pY2FsaXphdGlvbiBWZXJzaW9uIDEuMCwgVzNDIFJlY29tbWVuZGF0aW9uIDE4IEp1bHkgMjAwMgorCTwvbGluaz4uIChUaGVyZSBpcyBubyBpbnRlcm9wIHRvIHRlc3QgdmVjdG9yIDxsaW5rCisJICBocmVmPSJleHQ6dzNjL2MxNG4taW50ZXJvcCI+WTQ8L2xpbms+IGJlY2F1c2Ugb2YgYSBwcm9ibGVtIGluIFhhbGFuKSA8L3A+CisJPHA+Q2Fub25pY2FsaXphdGlvbiBpcyB3cml0dGVuIGNvbXBsZXRlbHkgbmV3OiBpdCdzIGFib3V0IDUtODAgdGltZXMKKwlmYXN0ZXIgdGhhbiB0aGUgaW1wbGVtZW50YXRpb24gaW4gdmVyc2lvbiAxLjAuMi4gSXQncyBoaWdobHkKKwlyZWNvbW1lbmRlZCB0byB1cGdyYWRlIHRvIHRoZSBuZXcgdmVyc2lvbi4gPC9wPgorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGRldj0iQ0dQIiB0eXBlPSJ1cGRhdGUiIGNvbnRleHQ9ImphdmFfeHBhdGgyIj4KKwkgPHA+SmF2YSAtIEFkZGVkIHN1cHBvcnQgZm9yIDxsaW5rIGhyZWY9ImV4dDp3M2MveHBhdGgtZmlsdGVydjIiPgorCSAgICBYTUwtU2lnbmF0dXJlIFhQYXRoIEZpbHRlciAyLjAsIFczQyBDYW5kaWRhdGUgUmVjb21tZW5kYXRpb24gMTgKKwkgICAgSnVseSAyMDAyIAorCSAgPC9saW5rPgorCSAgPC9wPgorICAgICAgPC9hY3Rpb24+CisgICAgPC9yZWxlYXNlPgorICA8L2NoYW5nZXM+CisgIAorICA8dG9kbz4KKyAgICA8YWN0aW9ucyBwcmlvcml0eT0iaGlnaCI+CisgICAgICA8YWN0aW9uIGNvbnRleHQ9IkMrKyBjb2RlIiBkZXY9IkJMIj4KKyAgICAgICAgSW1wbGVtZW50IFhLTVMgY2xpZW50CisgICAgICA8L2FjdGlvbj4KKyAgICAgIDxhY3Rpb24gY29udGV4dD0iQysrIGNvZGUiIGRldj0iTVQiPgorICAgICAgICBJbXBsZW1lbnQgTlNTIENyeXB0byBpbnRlcmZhY2UKKyAgICAgIDwvYWN0aW9uPgorICAgIDwvYWN0aW9ucz4KKyAgICA8YWN0aW9ucyBwcmlvcml0eT0ibWVkaXVtIj4KKyAgICAgIDxhY3Rpb24gY29udGV4dD0iSmF2YS1jb2RlIiBkZXY9Im9wZW4iPgorCUNvbnN0cnVjdCBtb3JlIGV4YW1wbGVzLgorICAgICAgPC9hY3Rpb24+CisgICAgICA8YWN0aW9uIGNvbnRleHQ9IkMrKyBjb2RlIiBkZXY9IkJMIj4KKyAgICAgICAgQnVpbGQgYSBQR1AvR1BHIHNpZ25hdHVyZSBjYXBhYmlsaXR5LgorICAgICAgPC9hY3Rpb24+CisgICAgPC9hY3Rpb25zPgorICAgIDxhY3Rpb25zIHByaW9yaXR5PSJsb3ciPgorICAgICAgPGFjdGlvbiBjb250ZXh0PSJkb2NzIiBkZXY9IktXIj4KKyAgICAgICAgUG9saXNoIHRoZSBwb3J0ZWQgZG9jcy4gQWRkIG1vcmUgY29udGVudC4gVG9kbyBhbmQgY2hhbmdlcyBhcmUgaW4gPGNvZGU+c3RhdHVzLnhtbDwvY29kZT4KKyAgICAgIDwvYWN0aW9uPgorICAgICAgPGFjdGlvbiBjb250ZXh0PSJKYXZhLWNvZGUgYW5kIEMrKyBjb2RlIiBkZXY9Im9wZW4iPgorICAgICAgICBJbXBsZW1lbnQgYW4gWEtNUyBjbGllbnQuCisgICAgICA8L2FjdGlvbj4KKyAgICA8L2FjdGlvbnM+CisgIDwvdG9kbz4KKzwvc3RhdHVzPgorCisKKworCisKKworCis8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKK0xvY2FsIHZhcmlhYmxlczoKK21vZGU6IHhtbAorc2dtbC1vbWl0dGFnOm5pbAorc2dtbC1zaG9ydHRhZzpuaWwKK3NnbWwtbmFtZWNhc2UtZ2VuZXJhbDpuaWwKK3NnbWwtZ2VuZXJhbC1pbnNlcnQtY2FzZTpsb3dlcgorc2dtbC1taW5pbWl6ZS1hdHRyaWJ1dGVzOm5pbAorc2dtbC1hbHdheXMtcXVvdGUtYXR0cmlidXRlczp0CitzZ21sLWluZGVudC1zdGVwOjIKK3NnbWwtaW5kZW50LWRhdGE6dAorc2dtbC1wYXJlbnQtZG9jdW1lbnQ6bmlsCitzZ21sLWV4cG9zZWQtdGFnczpuaWwKK3NnbWwtbG9jYWwtY2F0YWxvZ3M6bmlsCitzZ21sLWxvY2FsLWVjYXQtZmlsZXM6bmlsCitFbmQ6CistLT4KZGlmZiAtLWdpdCBhL2xpYnMvLmN2c2lnbm9yZSBiL2xpYnMvLmN2c2lnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjU5MDJiCi0tLSAvZGV2L251bGwKKysrIGIvbGlicy8uY3ZzaWdub3JlCkBAIC0wLDAgKzEsMiBAQAoramNlKi5qYXIKK2JjKi5qYXIKZGlmZiAtLWdpdCBhL2xpYnMvY29tbW9ucy1sb2dnaW5nLWFwaS5qYXIgYi9saWJzL2NvbW1vbnMtbG9nZ2luZy1hcGkuamFyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkZTlhMTMKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL2NvbW1vbnMtbG9nZ2luZy1hcGkuamFyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYnMvY29tbW9ucy1sb2dnaW5nLkxJQ0VOU0UudHh0IGIvbGlicy9jb21tb25zLWxvZ2dpbmcuTElDRU5TRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY0NTY5NQotLS0gL2Rldi9udWxsCisrKyBiL2xpYnMvY29tbW9ucy1sb2dnaW5nLkxJQ0VOU0UudHh0CkBAIC0wLDAgKzEsMjAyIEBACisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwYWNoZSBMaWNlbnNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDIuMCwgSmFudWFyeSAyMDA0CisgICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvCisKKyAgIFRFUk1TIEFORCBDT05ESVRJT05TIEZPUiBVU0UsIFJFUFJPRFVDVElPTiwgQU5EIERJU1RSSUJVVElPTgorCisgICAxLiBEZWZpbml0aW9ucy4KKworICAgICAgIkxpY2Vuc2UiIHNoYWxsIG1lYW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwKKyAgICAgIGFuZCBkaXN0cmlidXRpb24gYXMgZGVmaW5lZCBieSBTZWN0aW9ucyAxIHRocm91Z2ggOSBvZiB0aGlzIGRvY3VtZW50LgorCisgICAgICAiTGljZW5zb3IiIHNoYWxsIG1lYW4gdGhlIGNvcHlyaWdodCBvd25lciBvciBlbnRpdHkgYXV0aG9yaXplZCBieQorICAgICAgdGhlIGNvcHlyaWdodCBvd25lciB0aGF0IGlzIGdyYW50aW5nIHRoZSBMaWNlbnNlLgorCisgICAgICAiTGVnYWwgRW50aXR5IiBzaGFsbCBtZWFuIHRoZSB1bmlvbiBvZiB0aGUgYWN0aW5nIGVudGl0eSBhbmQgYWxsCisgICAgICBvdGhlciBlbnRpdGllcyB0aGF0IGNvbnRyb2wsIGFyZSBjb250cm9sbGVkIGJ5LCBvciBhcmUgdW5kZXIgY29tbW9uCisgICAgICBjb250cm9sIHdpdGggdGhhdCBlbnRpdHkuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLAorICAgICAgImNvbnRyb2wiIG1lYW5zIChpKSB0aGUgcG93ZXIsIGRpcmVjdCBvciBpbmRpcmVjdCwgdG8gY2F1c2UgdGhlCisgICAgICBkaXJlY3Rpb24gb3IgbWFuYWdlbWVudCBvZiBzdWNoIGVudGl0eSwgd2hldGhlciBieSBjb250cmFjdCBvcgorICAgICAgb3RoZXJ3aXNlLCBvciAoaWkpIG93bmVyc2hpcCBvZiBmaWZ0eSBwZXJjZW50ICg1MCUpIG9yIG1vcmUgb2YgdGhlCisgICAgICBvdXRzdGFuZGluZyBzaGFyZXMsIG9yIChpaWkpIGJlbmVmaWNpYWwgb3duZXJzaGlwIG9mIHN1Y2ggZW50aXR5LgorCisgICAgICAiWW91IiAob3IgIllvdXIiKSBzaGFsbCBtZWFuIGFuIGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CisgICAgICBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhpcyBMaWNlbnNlLgorCisgICAgICAiU291cmNlIiBmb3JtIHNoYWxsIG1lYW4gdGhlIHByZWZlcnJlZCBmb3JtIGZvciBtYWtpbmcgbW9kaWZpY2F0aW9ucywKKyAgICAgIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gc29mdHdhcmUgc291cmNlIGNvZGUsIGRvY3VtZW50YXRpb24KKyAgICAgIHNvdXJjZSwgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMuCisKKyAgICAgICJPYmplY3QiIGZvcm0gc2hhbGwgbWVhbiBhbnkgZm9ybSByZXN1bHRpbmcgZnJvbSBtZWNoYW5pY2FsCisgICAgICB0cmFuc2Zvcm1hdGlvbiBvciB0cmFuc2xhdGlvbiBvZiBhIFNvdXJjZSBmb3JtLCBpbmNsdWRpbmcgYnV0CisgICAgICBub3QgbGltaXRlZCB0byBjb21waWxlZCBvYmplY3QgY29kZSwgZ2VuZXJhdGVkIGRvY3VtZW50YXRpb24sCisgICAgICBhbmQgY29udmVyc2lvbnMgdG8gb3RoZXIgbWVkaWEgdHlwZXMuCisKKyAgICAgICJXb3JrIiBzaGFsbCBtZWFuIHRoZSB3b3JrIG9mIGF1dGhvcnNoaXAsIHdoZXRoZXIgaW4gU291cmNlIG9yCisgICAgICBPYmplY3QgZm9ybSwgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIExpY2Vuc2UsIGFzIGluZGljYXRlZCBieSBhCisgICAgICBjb3B5cmlnaHQgbm90aWNlIHRoYXQgaXMgaW5jbHVkZWQgaW4gb3IgYXR0YWNoZWQgdG8gdGhlIHdvcmsKKyAgICAgIChhbiBleGFtcGxlIGlzIHByb3ZpZGVkIGluIHRoZSBBcHBlbmRpeCBiZWxvdykuCisKKyAgICAgICJEZXJpdmF0aXZlIFdvcmtzIiBzaGFsbCBtZWFuIGFueSB3b3JrLCB3aGV0aGVyIGluIFNvdXJjZSBvciBPYmplY3QKKyAgICAgIGZvcm0sIHRoYXQgaXMgYmFzZWQgb24gKG9yIGRlcml2ZWQgZnJvbSkgdGhlIFdvcmsgYW5kIGZvciB3aGljaCB0aGUKKyAgICAgIGVkaXRvcmlhbCByZXZpc2lvbnMsIGFubm90YXRpb25zLCBlbGFib3JhdGlvbnMsIG9yIG90aGVyIG1vZGlmaWNhdGlvbnMKKyAgICAgIHJlcHJlc2VudCwgYXMgYSB3aG9sZSwgYW4gb3JpZ2luYWwgd29yayBvZiBhdXRob3JzaGlwLiBGb3IgdGhlIHB1cnBvc2VzCisgICAgICBvZiB0aGlzIExpY2Vuc2UsIERlcml2YXRpdmUgV29ya3Mgc2hhbGwgbm90IGluY2x1ZGUgd29ya3MgdGhhdCByZW1haW4KKyAgICAgIHNlcGFyYWJsZSBmcm9tLCBvciBtZXJlbHkgbGluayAob3IgYmluZCBieSBuYW1lKSB0byB0aGUgaW50ZXJmYWNlcyBvZiwKKyAgICAgIHRoZSBXb3JrIGFuZCBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YuCisKKyAgICAgICJDb250cmlidXRpb24iIHNoYWxsIG1lYW4gYW55IHdvcmsgb2YgYXV0aG9yc2hpcCwgaW5jbHVkaW5nCisgICAgICB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUgV29yayBhbmQgYW55IG1vZGlmaWNhdGlvbnMgb3IgYWRkaXRpb25zCisgICAgICB0byB0aGF0IFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLCB0aGF0IGlzIGludGVudGlvbmFsbHkKKyAgICAgIHN1Ym1pdHRlZCB0byBMaWNlbnNvciBmb3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIKKyAgICAgIG9yIGJ5IGFuIGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5IGF1dGhvcml6ZWQgdG8gc3VibWl0IG9uIGJlaGFsZiBvZgorICAgICAgdGhlIGNvcHlyaWdodCBvd25lci4gRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIGRlZmluaXRpb24sICJzdWJtaXR0ZWQiCisgICAgICBtZWFucyBhbnkgZm9ybSBvZiBlbGVjdHJvbmljLCB2ZXJiYWwsIG9yIHdyaXR0ZW4gY29tbXVuaWNhdGlvbiBzZW50CisgICAgICB0byB0aGUgTGljZW5zb3Igb3IgaXRzIHJlcHJlc2VudGF0aXZlcywgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0bworICAgICAgY29tbXVuaWNhdGlvbiBvbiBlbGVjdHJvbmljIG1haWxpbmcgbGlzdHMsIHNvdXJjZSBjb2RlIGNvbnRyb2wgc3lzdGVtcywKKyAgICAgIGFuZCBpc3N1ZSB0cmFja2luZyBzeXN0ZW1zIHRoYXQgYXJlIG1hbmFnZWQgYnksIG9yIG9uIGJlaGFsZiBvZiwgdGhlCisgICAgICBMaWNlbnNvciBmb3IgdGhlIHB1cnBvc2Ugb2YgZGlzY3Vzc2luZyBhbmQgaW1wcm92aW5nIHRoZSBXb3JrLCBidXQKKyAgICAgIGV4Y2x1ZGluZyBjb21tdW5pY2F0aW9uIHRoYXQgaXMgY29uc3BpY3VvdXNseSBtYXJrZWQgb3Igb3RoZXJ3aXNlCisgICAgICBkZXNpZ25hdGVkIGluIHdyaXRpbmcgYnkgdGhlIGNvcHlyaWdodCBvd25lciBhcyAiTm90IGEgQ29udHJpYnV0aW9uLiIKKworICAgICAgIkNvbnRyaWJ1dG9yIiBzaGFsbCBtZWFuIExpY2Vuc29yIGFuZCBhbnkgaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkKKyAgICAgIG9uIGJlaGFsZiBvZiB3aG9tIGEgQ29udHJpYnV0aW9uIGhhcyBiZWVuIHJlY2VpdmVkIGJ5IExpY2Vuc29yIGFuZAorICAgICAgc3Vic2VxdWVudGx5IGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsuCisKKyAgIDIuIEdyYW50IG9mIENvcHlyaWdodCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgorICAgICAgdGhpcyBMaWNlbnNlLCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMgdG8gWW91IGEgcGVycGV0dWFsLAorICAgICAgd29ybGR3aWRlLCBub24tZXhjbHVzaXZlLCBuby1jaGFyZ2UsIHJveWFsdHktZnJlZSwgaXJyZXZvY2FibGUKKyAgICAgIGNvcHlyaWdodCBsaWNlbnNlIHRvIHJlcHJvZHVjZSwgcHJlcGFyZSBEZXJpdmF0aXZlIFdvcmtzIG9mLAorICAgICAgcHVibGljbHkgZGlzcGxheSwgcHVibGljbHkgcGVyZm9ybSwgc3VibGljZW5zZSwgYW5kIGRpc3RyaWJ1dGUgdGhlCisgICAgICBXb3JrIGFuZCBzdWNoIERlcml2YXRpdmUgV29ya3MgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLgorCisgICAzLiBHcmFudCBvZiBQYXRlbnQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIHRvIFlvdSBhIHBlcnBldHVhbCwKKyAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCisgICAgICAoZXhjZXB0IGFzIHN0YXRlZCBpbiB0aGlzIHNlY3Rpb24pIHBhdGVudCBsaWNlbnNlIHRvIG1ha2UsIGhhdmUgbWFkZSwKKyAgICAgIHVzZSwgb2ZmZXIgdG8gc2VsbCwgc2VsbCwgaW1wb3J0LCBhbmQgb3RoZXJ3aXNlIHRyYW5zZmVyIHRoZSBXb3JrLAorICAgICAgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUKKyAgICAgIGJ5IHN1Y2ggQ29udHJpYnV0b3IgdGhhdCBhcmUgbmVjZXNzYXJpbHkgaW5mcmluZ2VkIGJ5IHRoZWlyCisgICAgICBDb250cmlidXRpb24ocykgYWxvbmUgb3IgYnkgY29tYmluYXRpb24gb2YgdGhlaXIgQ29udHJpYnV0aW9uKHMpCisgICAgICB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggQ29udHJpYnV0aW9uKHMpIHdhcyBzdWJtaXR0ZWQuIElmIFlvdQorICAgICAgaW5zdGl0dXRlIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYW55IGVudGl0eSAoaW5jbHVkaW5nIGEKKyAgICAgIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQgdGhlIFdvcmsKKyAgICAgIG9yIGEgQ29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgZGlyZWN0CisgICAgICBvciBjb250cmlidXRvcnkgcGF0ZW50IGluZnJpbmdlbWVudCwgdGhlbiBhbnkgcGF0ZW50IGxpY2Vuc2VzCisgICAgICBncmFudGVkIHRvIFlvdSB1bmRlciB0aGlzIExpY2Vuc2UgZm9yIHRoYXQgV29yayBzaGFsbCB0ZXJtaW5hdGUKKyAgICAgIGFzIG9mIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4KKworICAgNC4gUmVkaXN0cmlidXRpb24uIFlvdSBtYXkgcmVwcm9kdWNlIGFuZCBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUKKyAgICAgIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mIGluIGFueSBtZWRpdW0sIHdpdGggb3Igd2l0aG91dAorICAgICAgbW9kaWZpY2F0aW9ucywgYW5kIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybSwgcHJvdmlkZWQgdGhhdCBZb3UKKyAgICAgIG1lZXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisgICAgICAoYSkgWW91IG11c3QgZ2l2ZSBhbnkgb3RoZXIgcmVjaXBpZW50cyBvZiB0aGUgV29yayBvcgorICAgICAgICAgIERlcml2YXRpdmUgV29ya3MgYSBjb3B5IG9mIHRoaXMgTGljZW5zZTsgYW5kCisKKyAgICAgIChiKSBZb3UgbXVzdCBjYXVzZSBhbnkgbW9kaWZpZWQgZmlsZXMgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMKKyAgICAgICAgICBzdGF0aW5nIHRoYXQgWW91IGNoYW5nZWQgdGhlIGZpbGVzOyBhbmQKKworICAgICAgKGMpIFlvdSBtdXN0IHJldGFpbiwgaW4gdGhlIFNvdXJjZSBmb3JtIG9mIGFueSBEZXJpdmF0aXZlIFdvcmtzCisgICAgICAgICAgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxsIGNvcHlyaWdodCwgcGF0ZW50LCB0cmFkZW1hcmssIGFuZAorICAgICAgICAgIGF0dHJpYnV0aW9uIG5vdGljZXMgZnJvbSB0aGUgU291cmNlIGZvcm0gb2YgdGhlIFdvcmssCisgICAgICAgICAgZXhjbHVkaW5nIHRob3NlIG5vdGljZXMgdGhhdCBkbyBub3QgcGVydGFpbiB0byBhbnkgcGFydCBvZgorICAgICAgICAgIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBhbmQKKworICAgICAgKGQpIElmIHRoZSBXb3JrIGluY2x1ZGVzIGEgIk5PVElDRSIgdGV4dCBmaWxlIGFzIHBhcnQgb2YgaXRzCisgICAgICAgICAgZGlzdHJpYnV0aW9uLCB0aGVuIGFueSBEZXJpdmF0aXZlIFdvcmtzIHRoYXQgWW91IGRpc3RyaWJ1dGUgbXVzdAorICAgICAgICAgIGluY2x1ZGUgYSByZWFkYWJsZSBjb3B5IG9mIHRoZSBhdHRyaWJ1dGlvbiBub3RpY2VzIGNvbnRhaW5lZAorICAgICAgICAgIHdpdGhpbiBzdWNoIE5PVElDRSBmaWxlLCBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdAorICAgICAgICAgIHBlcnRhaW4gdG8gYW55IHBhcnQgb2YgdGhlIERlcml2YXRpdmUgV29ya3MsIGluIGF0IGxlYXN0IG9uZQorICAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmcgcGxhY2VzOiB3aXRoaW4gYSBOT1RJQ0UgdGV4dCBmaWxlIGRpc3RyaWJ1dGVkCisgICAgICAgICAgYXMgcGFydCBvZiB0aGUgRGVyaXZhdGl2ZSBXb3Jrczsgd2l0aGluIHRoZSBTb3VyY2UgZm9ybSBvcgorICAgICAgICAgIGRvY3VtZW50YXRpb24sIGlmIHByb3ZpZGVkIGFsb25nIHdpdGggdGhlIERlcml2YXRpdmUgV29ya3M7IG9yLAorICAgICAgICAgIHdpdGhpbiBhIGRpc3BsYXkgZ2VuZXJhdGVkIGJ5IHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpZiBhbmQKKyAgICAgICAgICB3aGVyZXZlciBzdWNoIHRoaXJkLXBhcnR5IG5vdGljZXMgbm9ybWFsbHkgYXBwZWFyLiBUaGUgY29udGVudHMKKyAgICAgICAgICBvZiB0aGUgTk9USUNFIGZpbGUgYXJlIGZvciBpbmZvcm1hdGlvbmFsIHB1cnBvc2VzIG9ubHkgYW5kCisgICAgICAgICAgZG8gbm90IG1vZGlmeSB0aGUgTGljZW5zZS4gWW91IG1heSBhZGQgWW91ciBvd24gYXR0cmlidXRpb24KKyAgICAgICAgICBub3RpY2VzIHdpdGhpbiBEZXJpdmF0aXZlIFdvcmtzIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsb25nc2lkZQorICAgICAgICAgIG9yIGFzIGFuIGFkZGVuZHVtIHRvIHRoZSBOT1RJQ0UgdGV4dCBmcm9tIHRoZSBXb3JrLCBwcm92aWRlZAorICAgICAgICAgIHRoYXQgc3VjaCBhZGRpdGlvbmFsIGF0dHJpYnV0aW9uIG5vdGljZXMgY2Fubm90IGJlIGNvbnN0cnVlZAorICAgICAgICAgIGFzIG1vZGlmeWluZyB0aGUgTGljZW5zZS4KKworICAgICAgWW91IG1heSBhZGQgWW91ciBvd24gY29weXJpZ2h0IHN0YXRlbWVudCB0byBZb3VyIG1vZGlmaWNhdGlvbnMgYW5kCisgICAgICBtYXkgcHJvdmlkZSBhZGRpdGlvbmFsIG9yIGRpZmZlcmVudCBsaWNlbnNlIHRlcm1zIGFuZCBjb25kaXRpb25zCisgICAgICBmb3IgdXNlLCByZXByb2R1Y3Rpb24sIG9yIGRpc3RyaWJ1dGlvbiBvZiBZb3VyIG1vZGlmaWNhdGlvbnMsIG9yCisgICAgICBmb3IgYW55IHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBhcyBhIHdob2xlLCBwcm92aWRlZCBZb3VyIHVzZSwKKyAgICAgIHJlcHJvZHVjdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGUgV29yayBvdGhlcndpc2UgY29tcGxpZXMgd2l0aAorICAgICAgdGhlIGNvbmRpdGlvbnMgc3RhdGVkIGluIHRoaXMgTGljZW5zZS4KKworICAgNS4gU3VibWlzc2lvbiBvZiBDb250cmlidXRpb25zLiBVbmxlc3MgWW91IGV4cGxpY2l0bHkgc3RhdGUgb3RoZXJ3aXNlLAorICAgICAgYW55IENvbnRyaWJ1dGlvbiBpbnRlbnRpb25hbGx5IHN1Ym1pdHRlZCBmb3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrCisgICAgICBieSBZb3UgdG8gdGhlIExpY2Vuc29yIHNoYWxsIGJlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgorICAgICAgdGhpcyBMaWNlbnNlLCB3aXRob3V0IGFueSBhZGRpdGlvbmFsIHRlcm1zIG9yIGNvbmRpdGlvbnMuCisgICAgICBOb3R3aXRoc3RhbmRpbmcgdGhlIGFib3ZlLCBub3RoaW5nIGhlcmVpbiBzaGFsbCBzdXBlcnNlZGUgb3IgbW9kaWZ5CisgICAgICB0aGUgdGVybXMgb2YgYW55IHNlcGFyYXRlIGxpY2Vuc2UgYWdyZWVtZW50IHlvdSBtYXkgaGF2ZSBleGVjdXRlZAorICAgICAgd2l0aCBMaWNlbnNvciByZWdhcmRpbmcgc3VjaCBDb250cmlidXRpb25zLgorCisgICA2LiBUcmFkZW1hcmtzLiBUaGlzIExpY2Vuc2UgZG9lcyBub3QgZ3JhbnQgcGVybWlzc2lvbiB0byB1c2UgdGhlIHRyYWRlCisgICAgICBuYW1lcywgdHJhZGVtYXJrcywgc2VydmljZSBtYXJrcywgb3IgcHJvZHVjdCBuYW1lcyBvZiB0aGUgTGljZW5zb3IsCisgICAgICBleGNlcHQgYXMgcmVxdWlyZWQgZm9yIHJlYXNvbmFibGUgYW5kIGN1c3RvbWFyeSB1c2UgaW4gZGVzY3JpYmluZyB0aGUKKyAgICAgIG9yaWdpbiBvZiB0aGUgV29yayBhbmQgcmVwcm9kdWNpbmcgdGhlIGNvbnRlbnQgb2YgdGhlIE5PVElDRSBmaWxlLgorCisgICA3LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5LiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IKKyAgICAgIGFncmVlZCB0byBpbiB3cml0aW5nLCBMaWNlbnNvciBwcm92aWRlcyB0aGUgV29yayAoYW5kIGVhY2gKKyAgICAgIENvbnRyaWJ1dG9yIHByb3ZpZGVzIGl0cyBDb250cmlidXRpb25zKSBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCisgICAgICBpbXBsaWVkLCBpbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgYW55IHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucworICAgICAgb2YgVElUTEUsIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSwgb3IgRklUTkVTUyBGT1IgQQorICAgICAgUEFSVElDVUxBUiBQVVJQT1NFLiBZb3UgYXJlIHNvbGVseSByZXNwb25zaWJsZSBmb3IgZGV0ZXJtaW5pbmcgdGhlCisgICAgICBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgb3IgcmVkaXN0cmlidXRpbmcgdGhlIFdvcmsgYW5kIGFzc3VtZSBhbnkKKyAgICAgIHJpc2tzIGFzc29jaWF0ZWQgd2l0aCBZb3VyIGV4ZXJjaXNlIG9mIHBlcm1pc3Npb25zIHVuZGVyIHRoaXMgTGljZW5zZS4KKworICAgOC4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuIEluIG5vIGV2ZW50IGFuZCB1bmRlciBubyBsZWdhbCB0aGVvcnksCisgICAgICB3aGV0aGVyIGluIHRvcnQgKGluY2x1ZGluZyBuZWdsaWdlbmNlKSwgY29udHJhY3QsIG9yIG90aGVyd2lzZSwKKyAgICAgIHVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyAoc3VjaCBhcyBkZWxpYmVyYXRlIGFuZCBncm9zc2x5CisgICAgICBuZWdsaWdlbnQgYWN0cykgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNoYWxsIGFueSBDb250cmlidXRvciBiZQorICAgICAgbGlhYmxlIHRvIFlvdSBmb3IgZGFtYWdlcywgaW5jbHVkaW5nIGFueSBkaXJlY3QsIGluZGlyZWN0LCBzcGVjaWFsLAorICAgICAgaW5jaWRlbnRhbCwgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9mIGFueSBjaGFyYWN0ZXIgYXJpc2luZyBhcyBhCisgICAgICByZXN1bHQgb2YgdGhpcyBMaWNlbnNlIG9yIG91dCBvZiB0aGUgdXNlIG9yIGluYWJpbGl0eSB0byB1c2UgdGhlCisgICAgICBXb3JrIChpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGRhbWFnZXMgZm9yIGxvc3Mgb2YgZ29vZHdpbGwsCisgICAgICB3b3JrIHN0b3BwYWdlLCBjb21wdXRlciBmYWlsdXJlIG9yIG1hbGZ1bmN0aW9uLCBvciBhbnkgYW5kIGFsbAorICAgICAgb3RoZXIgY29tbWVyY2lhbCBkYW1hZ2VzIG9yIGxvc3NlcyksIGV2ZW4gaWYgc3VjaCBDb250cmlidXRvcgorICAgICAgaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2Ygc3VjaCBkYW1hZ2VzLgorCisgICA5LiBBY2NlcHRpbmcgV2FycmFudHkgb3IgQWRkaXRpb25hbCBMaWFiaWxpdHkuIFdoaWxlIHJlZGlzdHJpYnV0aW5nCisgICAgICB0aGUgV29yayBvciBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YsIFlvdSBtYXkgY2hvb3NlIHRvIG9mZmVyLAorICAgICAgYW5kIGNoYXJnZSBhIGZlZSBmb3IsIGFjY2VwdGFuY2Ugb2Ygc3VwcG9ydCwgd2FycmFudHksIGluZGVtbml0eSwKKyAgICAgIG9yIG90aGVyIGxpYWJpbGl0eSBvYmxpZ2F0aW9ucyBhbmQvb3IgcmlnaHRzIGNvbnNpc3RlbnQgd2l0aCB0aGlzCisgICAgICBMaWNlbnNlLiBIb3dldmVyLCBpbiBhY2NlcHRpbmcgc3VjaCBvYmxpZ2F0aW9ucywgWW91IG1heSBhY3Qgb25seQorICAgICAgb24gWW91ciBvd24gYmVoYWxmIGFuZCBvbiBZb3VyIHNvbGUgcmVzcG9uc2liaWxpdHksIG5vdCBvbiBiZWhhbGYKKyAgICAgIG9mIGFueSBvdGhlciBDb250cmlidXRvciwgYW5kIG9ubHkgaWYgWW91IGFncmVlIHRvIGluZGVtbmlmeSwKKyAgICAgIGRlZmVuZCwgYW5kIGhvbGQgZWFjaCBDb250cmlidXRvciBoYXJtbGVzcyBmb3IgYW55IGxpYWJpbGl0eQorICAgICAgaW5jdXJyZWQgYnksIG9yIGNsYWltcyBhc3NlcnRlZCBhZ2FpbnN0LCBzdWNoIENvbnRyaWJ1dG9yIGJ5IHJlYXNvbgorICAgICAgb2YgeW91ciBhY2NlcHRpbmcgYW55IHN1Y2ggd2FycmFudHkgb3IgYWRkaXRpb25hbCBsaWFiaWxpdHkuCisKKyAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUworCisgICBBUFBFTkRJWDogSG93IHRvIGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmsuCisKKyAgICAgIFRvIGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmssIGF0dGFjaCB0aGUgZm9sbG93aW5nCisgICAgICBib2lsZXJwbGF0ZSBub3RpY2UsIHdpdGggdGhlIGZpZWxkcyBlbmNsb3NlZCBieSBicmFja2V0cyAiW10iCisgICAgICByZXBsYWNlZCB3aXRoIHlvdXIgb3duIGlkZW50aWZ5aW5nIGluZm9ybWF0aW9uLiAoRG9uJ3QgaW5jbHVkZQorICAgICAgdGhlIGJyYWNrZXRzISkgIFRoZSB0ZXh0IHNob3VsZCBiZSBlbmNsb3NlZCBpbiB0aGUgYXBwcm9wcmlhdGUKKyAgICAgIGNvbW1lbnQgc3ludGF4IGZvciB0aGUgZmlsZSBmb3JtYXQuIFdlIGFsc28gcmVjb21tZW5kIHRoYXQgYQorICAgICAgZmlsZSBvciBjbGFzcyBuYW1lIGFuZCBkZXNjcmlwdGlvbiBvZiBwdXJwb3NlIGJlIGluY2x1ZGVkIG9uIHRoZQorICAgICAgc2FtZSAicHJpbnRlZCBwYWdlIiBhcyB0aGUgY29weXJpZ2h0IG5vdGljZSBmb3IgZWFzaWVyCisgICAgICBpZGVudGlmaWNhdGlvbiB3aXRoaW4gdGhpcmQtcGFydHkgYXJjaGl2ZXMuCisKKyAgIENvcHlyaWdodCBbeXl5eV0gW25hbWUgb2YgY29weXJpZ2h0IG93bmVyXQorCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgpkaWZmIC0tZ2l0IGEvbGlicy9jb21tb25zLWxvZ2dpbmcuTk9USUNFLnR4dCBiL2xpYnMvY29tbW9ucy1sb2dnaW5nLk5PVElDRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM5ZWI4MwotLS0gL2Rldi9udWxsCisrKyBiL2xpYnMvY29tbW9ucy1sb2dnaW5nLk5PVElDRS50eHQKQEAgLTAsMCArMSwzIEBACitUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5CitUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKGh0dHA6Ly93d3cuYXBhY2hlLm9yZy8pLgorCmRpZmYgLS1naXQgYS9saWJzL2NvbW1vbnMtbG9nZ2luZy5qYXIgYi9saWJzL2NvbW1vbnMtbG9nZ2luZy5qYXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjczYTgwZgotLS0gL2Rldi9udWxsCisrKyBiL2xpYnMvY29tbW9ucy1sb2dnaW5nLmphcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9saWJzL3NlcmlhbGl6ZXIuTElDRU5TRS50eHQgYi9saWJzL3NlcmlhbGl6ZXIuTElDRU5TRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjYxZWViOQotLS0gL2Rldi9udWxsCisrKyBiL2xpYnMvc2VyaWFsaXplci5MSUNFTlNFLnR4dApAQCAtMCwwICsxLDIwMSBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBhY2hlIExpY2Vuc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMi4wLCBKYW51YXJ5IDIwMDQKKyAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy8KKworICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIFVTRSwgUkVQUk9EVUNUSU9OLCBBTkQgRElTVFJJQlVUSU9OCisKKyAgIDEuIERlZmluaXRpb25zLgorCisgICAgICAiTGljZW5zZSIgc2hhbGwgbWVhbiB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLAorICAgICAgYW5kIGRpc3RyaWJ1dGlvbiBhcyBkZWZpbmVkIGJ5IFNlY3Rpb25zIDEgdGhyb3VnaCA5IG9mIHRoaXMgZG9jdW1lbnQuCisKKyAgICAgICJMaWNlbnNvciIgc2hhbGwgbWVhbiB0aGUgY29weXJpZ2h0IG93bmVyIG9yIGVudGl0eSBhdXRob3JpemVkIGJ5CisgICAgICB0aGUgY29weXJpZ2h0IG93bmVyIHRoYXQgaXMgZ3JhbnRpbmcgdGhlIExpY2Vuc2UuCisKKyAgICAgICJMZWdhbCBFbnRpdHkiIHNoYWxsIG1lYW4gdGhlIHVuaW9uIG9mIHRoZSBhY3RpbmcgZW50aXR5IGFuZCBhbGwKKyAgICAgIG90aGVyIGVudGl0aWVzIHRoYXQgY29udHJvbCwgYXJlIGNvbnRyb2xsZWQgYnksIG9yIGFyZSB1bmRlciBjb21tb24KKyAgICAgIGNvbnRyb2wgd2l0aCB0aGF0IGVudGl0eS4gRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIGRlZmluaXRpb24sCisgICAgICAiY29udHJvbCIgbWVhbnMgKGkpIHRoZSBwb3dlciwgZGlyZWN0IG9yIGluZGlyZWN0LCB0byBjYXVzZSB0aGUKKyAgICAgIGRpcmVjdGlvbiBvciBtYW5hZ2VtZW50IG9mIHN1Y2ggZW50aXR5LCB3aGV0aGVyIGJ5IGNvbnRyYWN0IG9yCisgICAgICBvdGhlcndpc2UsIG9yIChpaSkgb3duZXJzaGlwIG9mIGZpZnR5IHBlcmNlbnQgKDUwJSkgb3IgbW9yZSBvZiB0aGUKKyAgICAgIG91dHN0YW5kaW5nIHNoYXJlcywgb3IgKGlpaSkgYmVuZWZpY2lhbCBvd25lcnNoaXAgb2Ygc3VjaCBlbnRpdHkuCisKKyAgICAgICJZb3UiIChvciAiWW91ciIpIHNoYWxsIG1lYW4gYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkKKyAgICAgIGV4ZXJjaXNpbmcgcGVybWlzc2lvbnMgZ3JhbnRlZCBieSB0aGlzIExpY2Vuc2UuCisKKyAgICAgICJTb3VyY2UiIGZvcm0gc2hhbGwgbWVhbiB0aGUgcHJlZmVycmVkIGZvcm0gZm9yIG1ha2luZyBtb2RpZmljYXRpb25zLAorICAgICAgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBzb2Z0d2FyZSBzb3VyY2UgY29kZSwgZG9jdW1lbnRhdGlvbgorICAgICAgc291cmNlLCBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4KKworICAgICAgIk9iamVjdCIgZm9ybSBzaGFsbCBtZWFuIGFueSBmb3JtIHJlc3VsdGluZyBmcm9tIG1lY2hhbmljYWwKKyAgICAgIHRyYW5zZm9ybWF0aW9uIG9yIHRyYW5zbGF0aW9uIG9mIGEgU291cmNlIGZvcm0sIGluY2x1ZGluZyBidXQKKyAgICAgIG5vdCBsaW1pdGVkIHRvIGNvbXBpbGVkIG9iamVjdCBjb2RlLCBnZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiwKKyAgICAgIGFuZCBjb252ZXJzaW9ucyB0byBvdGhlciBtZWRpYSB0eXBlcy4KKworICAgICAgIldvcmsiIHNoYWxsIG1lYW4gdGhlIHdvcmsgb2YgYXV0aG9yc2hpcCwgd2hldGhlciBpbiBTb3VyY2Ugb3IKKyAgICAgIE9iamVjdCBmb3JtLCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgTGljZW5zZSwgYXMgaW5kaWNhdGVkIGJ5IGEKKyAgICAgIGNvcHlyaWdodCBub3RpY2UgdGhhdCBpcyBpbmNsdWRlZCBpbiBvciBhdHRhY2hlZCB0byB0aGUgd29yaworICAgICAgKGFuIGV4YW1wbGUgaXMgcHJvdmlkZWQgaW4gdGhlIEFwcGVuZGl4IGJlbG93KS4KKworICAgICAgIkRlcml2YXRpdmUgV29ya3MiIHNoYWxsIG1lYW4gYW55IHdvcmssIHdoZXRoZXIgaW4gU291cmNlIG9yIE9iamVjdAorICAgICAgZm9ybSwgdGhhdCBpcyBiYXNlZCBvbiAob3IgZGVyaXZlZCBmcm9tKSB0aGUgV29yayBhbmQgZm9yIHdoaWNoIHRoZQorICAgICAgZWRpdG9yaWFsIHJldmlzaW9ucywgYW5ub3RhdGlvbnMsIGVsYWJvcmF0aW9ucywgb3Igb3RoZXIgbW9kaWZpY2F0aW9ucworICAgICAgcmVwcmVzZW50LCBhcyBhIHdob2xlLCBhbiBvcmlnaW5hbCB3b3JrIG9mIGF1dGhvcnNoaXAuIEZvciB0aGUgcHVycG9zZXMKKyAgICAgIG9mIHRoaXMgTGljZW5zZSwgRGVyaXZhdGl2ZSBXb3JrcyBzaGFsbCBub3QgaW5jbHVkZSB3b3JrcyB0aGF0IHJlbWFpbgorICAgICAgc2VwYXJhYmxlIGZyb20sIG9yIG1lcmVseSBsaW5rIChvciBiaW5kIGJ5IG5hbWUpIHRvIHRoZSBpbnRlcmZhY2VzIG9mLAorICAgICAgdGhlIFdvcmsgYW5kIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZi4KKworICAgICAgIkNvbnRyaWJ1dGlvbiIgc2hhbGwgbWVhbiBhbnkgd29yayBvZiBhdXRob3JzaGlwLCBpbmNsdWRpbmcKKyAgICAgIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoZSBXb3JrIGFuZCBhbnkgbW9kaWZpY2F0aW9ucyBvciBhZGRpdGlvbnMKKyAgICAgIHRvIHRoYXQgV29yayBvciBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YsIHRoYXQgaXMgaW50ZW50aW9uYWxseQorICAgICAgc3VibWl0dGVkIHRvIExpY2Vuc29yIGZvciBpbmNsdXNpb24gaW4gdGhlIFdvcmsgYnkgdGhlIGNvcHlyaWdodCBvd25lcgorICAgICAgb3IgYnkgYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkgYXV0aG9yaXplZCB0byBzdWJtaXQgb24gYmVoYWxmIG9mCisgICAgICB0aGUgY29weXJpZ2h0IG93bmVyLiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwgInN1Ym1pdHRlZCIKKyAgICAgIG1lYW5zIGFueSBmb3JtIG9mIGVsZWN0cm9uaWMsIHZlcmJhbCwgb3Igd3JpdHRlbiBjb21tdW5pY2F0aW9uIHNlbnQKKyAgICAgIHRvIHRoZSBMaWNlbnNvciBvciBpdHMgcmVwcmVzZW50YXRpdmVzLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvCisgICAgICBjb21tdW5pY2F0aW9uIG9uIGVsZWN0cm9uaWMgbWFpbGluZyBsaXN0cywgc291cmNlIGNvZGUgY29udHJvbCBzeXN0ZW1zLAorICAgICAgYW5kIGlzc3VlIHRyYWNraW5nIHN5c3RlbXMgdGhhdCBhcmUgbWFuYWdlZCBieSwgb3Igb24gYmVoYWxmIG9mLCB0aGUKKyAgICAgIExpY2Vuc29yIGZvciB0aGUgcHVycG9zZSBvZiBkaXNjdXNzaW5nIGFuZCBpbXByb3ZpbmcgdGhlIFdvcmssIGJ1dAorICAgICAgZXhjbHVkaW5nIGNvbW11bmljYXRpb24gdGhhdCBpcyBjb25zcGljdW91c2x5IG1hcmtlZCBvciBvdGhlcndpc2UKKyAgICAgIGRlc2lnbmF0ZWQgaW4gd3JpdGluZyBieSB0aGUgY29weXJpZ2h0IG93bmVyIGFzICJOb3QgYSBDb250cmlidXRpb24uIgorCisgICAgICAiQ29udHJpYnV0b3IiIHNoYWxsIG1lYW4gTGljZW5zb3IgYW5kIGFueSBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQorICAgICAgb24gYmVoYWxmIG9mIHdob20gYSBDb250cmlidXRpb24gaGFzIGJlZW4gcmVjZWl2ZWQgYnkgTGljZW5zb3IgYW5kCisgICAgICBzdWJzZXF1ZW50bHkgaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yay4KKworICAgMi4gR3JhbnQgb2YgQ29weXJpZ2h0IExpY2Vuc2UuIFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCisgICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZQorICAgICAgY29weXJpZ2h0IGxpY2Vuc2UgdG8gcmVwcm9kdWNlLCBwcmVwYXJlIERlcml2YXRpdmUgV29ya3Mgb2YsCisgICAgICBwdWJsaWNseSBkaXNwbGF5LCBwdWJsaWNseSBwZXJmb3JtLCBzdWJsaWNlbnNlLCBhbmQgZGlzdHJpYnV0ZSB0aGUKKyAgICAgIFdvcmsgYW5kIHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBpbiBTb3VyY2Ugb3IgT2JqZWN0IGZvcm0uCisKKyAgIDMuIEdyYW50IG9mIFBhdGVudCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgorICAgICAgdGhpcyBMaWNlbnNlLCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMgdG8gWW91IGEgcGVycGV0dWFsLAorICAgICAgd29ybGR3aWRlLCBub24tZXhjbHVzaXZlLCBuby1jaGFyZ2UsIHJveWFsdHktZnJlZSwgaXJyZXZvY2FibGUKKyAgICAgIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50IGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLAorICAgICAgdXNlLCBvZmZlciB0byBzZWxsLCBzZWxsLCBpbXBvcnQsIGFuZCBvdGhlcndpc2UgdHJhbnNmZXIgdGhlIFdvcmssCisgICAgICB3aGVyZSBzdWNoIGxpY2Vuc2UgYXBwbGllcyBvbmx5IHRvIHRob3NlIHBhdGVudCBjbGFpbXMgbGljZW5zYWJsZQorICAgICAgYnkgc3VjaCBDb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlaXIKKyAgICAgIENvbnRyaWJ1dGlvbihzKSBhbG9uZSBvciBieSBjb21iaW5hdGlvbiBvZiB0aGVpciBDb250cmlidXRpb24ocykKKyAgICAgIHdpdGggdGhlIFdvcmsgdG8gd2hpY2ggc3VjaCBDb250cmlidXRpb24ocykgd2FzIHN1Ym1pdHRlZC4gSWYgWW91CisgICAgICBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYQorICAgICAgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkgYWxsZWdpbmcgdGhhdCB0aGUgV29yaworICAgICAgb3IgYSBDb250cmlidXRpb24gaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yayBjb25zdGl0dXRlcyBkaXJlY3QKKyAgICAgIG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMKKyAgICAgIGdyYW50ZWQgdG8gWW91IHVuZGVyIHRoaXMgTGljZW5zZSBmb3IgdGhhdCBXb3JrIHNoYWxsIHRlcm1pbmF0ZQorICAgICAgYXMgb2YgdGhlIGRhdGUgc3VjaCBsaXRpZ2F0aW9uIGlzIGZpbGVkLgorCisgICA0LiBSZWRpc3RyaWJ1dGlvbi4gWW91IG1heSByZXByb2R1Y2UgYW5kIGRpc3RyaWJ1dGUgY29waWVzIG9mIHRoZQorICAgICAgV29yayBvciBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YgaW4gYW55IG1lZGl1bSwgd2l0aCBvciB3aXRob3V0CisgICAgICBtb2RpZmljYXRpb25zLCBhbmQgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLCBwcm92aWRlZCB0aGF0IFlvdQorICAgICAgbWVldCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKyAgICAgIChhKSBZb3UgbXVzdCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBXb3JrIG9yCisgICAgICAgICAgRGVyaXZhdGl2ZSBXb3JrcyBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlOyBhbmQKKworICAgICAgKGIpIFlvdSBtdXN0IGNhdXNlIGFueSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcworICAgICAgICAgIHN0YXRpbmcgdGhhdCBZb3UgY2hhbmdlZCB0aGUgZmlsZXM7IGFuZAorCisgICAgICAoYykgWW91IG11c3QgcmV0YWluLCBpbiB0aGUgU291cmNlIGZvcm0gb2YgYW55IERlcml2YXRpdmUgV29ya3MKKyAgICAgICAgICB0aGF0IFlvdSBkaXN0cmlidXRlLCBhbGwgY29weXJpZ2h0LCBwYXRlbnQsIHRyYWRlbWFyaywgYW5kCisgICAgICAgICAgYXR0cmlidXRpb24gbm90aWNlcyBmcm9tIHRoZSBTb3VyY2UgZm9ybSBvZiB0aGUgV29yaywKKyAgICAgICAgICBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdCBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mCisgICAgICAgICAgdGhlIERlcml2YXRpdmUgV29ya3M7IGFuZAorCisgICAgICAoZCkgSWYgdGhlIFdvcmsgaW5jbHVkZXMgYSAiTk9USUNFIiB0ZXh0IGZpbGUgYXMgcGFydCBvZiBpdHMKKyAgICAgICAgICBkaXN0cmlidXRpb24sIHRoZW4gYW55IERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSBtdXN0CisgICAgICAgICAgaW5jbHVkZSBhIHJlYWRhYmxlIGNvcHkgb2YgdGhlIGF0dHJpYnV0aW9uIG5vdGljZXMgY29udGFpbmVkCisgICAgICAgICAgd2l0aGluIHN1Y2ggTk9USUNFIGZpbGUsIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90CisgICAgICAgICAgcGVydGFpbiB0byBhbnkgcGFydCBvZiB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaW4gYXQgbGVhc3Qgb25lCisgICAgICAgICAgb2YgdGhlIGZvbGxvd2luZyBwbGFjZXM6IHdpdGhpbiBhIE5PVElDRSB0ZXh0IGZpbGUgZGlzdHJpYnV0ZWQKKyAgICAgICAgICBhcyBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyB3aXRoaW4gdGhlIFNvdXJjZSBmb3JtIG9yCisgICAgICAgICAgZG9jdW1lbnRhdGlvbiwgaWYgcHJvdmlkZWQgYWxvbmcgd2l0aCB0aGUgRGVyaXZhdGl2ZSBXb3Jrczsgb3IsCisgICAgICAgICAgd2l0aGluIGEgZGlzcGxheSBnZW5lcmF0ZWQgYnkgdGhlIERlcml2YXRpdmUgV29ya3MsIGlmIGFuZAorICAgICAgICAgIHdoZXJldmVyIHN1Y2ggdGhpcmQtcGFydHkgbm90aWNlcyBub3JtYWxseSBhcHBlYXIuIFRoZSBjb250ZW50cworICAgICAgICAgIG9mIHRoZSBOT1RJQ0UgZmlsZSBhcmUgZm9yIGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seSBhbmQKKyAgICAgICAgICBkbyBub3QgbW9kaWZ5IHRoZSBMaWNlbnNlLiBZb3UgbWF5IGFkZCBZb3VyIG93biBhdHRyaWJ1dGlvbgorICAgICAgICAgIG5vdGljZXMgd2l0aGluIERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxvbmdzaWRlCisgICAgICAgICAgb3IgYXMgYW4gYWRkZW5kdW0gdG8gdGhlIE5PVElDRSB0ZXh0IGZyb20gdGhlIFdvcmssIHByb3ZpZGVkCisgICAgICAgICAgdGhhdCBzdWNoIGFkZGl0aW9uYWwgYXR0cmlidXRpb24gbm90aWNlcyBjYW5ub3QgYmUgY29uc3RydWVkCisgICAgICAgICAgYXMgbW9kaWZ5aW5nIHRoZSBMaWNlbnNlLgorCisgICAgICBZb3UgbWF5IGFkZCBZb3VyIG93biBjb3B5cmlnaHQgc3RhdGVtZW50IHRvIFlvdXIgbW9kaWZpY2F0aW9ucyBhbmQKKyAgICAgIG1heSBwcm92aWRlIGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50IGxpY2Vuc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMKKyAgICAgIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwgb3IgZGlzdHJpYnV0aW9uIG9mIFlvdXIgbW9kaWZpY2F0aW9ucywgb3IKKyAgICAgIGZvciBhbnkgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGFzIGEgd2hvbGUsIHByb3ZpZGVkIFlvdXIgdXNlLAorICAgICAgcmVwcm9kdWN0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoZSBXb3JrIG90aGVyd2lzZSBjb21wbGllcyB3aXRoCisgICAgICB0aGUgY29uZGl0aW9ucyBzdGF0ZWQgaW4gdGhpcyBMaWNlbnNlLgorCisgICA1LiBTdWJtaXNzaW9uIG9mIENvbnRyaWJ1dGlvbnMuIFVubGVzcyBZb3UgZXhwbGljaXRseSBzdGF0ZSBvdGhlcndpc2UsCisgICAgICBhbnkgQ29udHJpYnV0aW9uIGludGVudGlvbmFsbHkgc3VibWl0dGVkIGZvciBpbmNsdXNpb24gaW4gdGhlIFdvcmsKKyAgICAgIGJ5IFlvdSB0byB0aGUgTGljZW5zb3Igc2hhbGwgYmUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAgICB0aGlzIExpY2Vuc2UsIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgdGVybXMgb3IgY29uZGl0aW9ucy4KKyAgICAgIE5vdHdpdGhzdGFuZGluZyB0aGUgYWJvdmUsIG5vdGhpbmcgaGVyZWluIHNoYWxsIHN1cGVyc2VkZSBvciBtb2RpZnkKKyAgICAgIHRoZSB0ZXJtcyBvZiBhbnkgc2VwYXJhdGUgbGljZW5zZSBhZ3JlZW1lbnQgeW91IG1heSBoYXZlIGV4ZWN1dGVkCisgICAgICB3aXRoIExpY2Vuc29yIHJlZ2FyZGluZyBzdWNoIENvbnRyaWJ1dGlvbnMuCisKKyAgIDYuIFRyYWRlbWFya3MuIFRoaXMgTGljZW5zZSBkb2VzIG5vdCBncmFudCBwZXJtaXNzaW9uIHRvIHVzZSB0aGUgdHJhZGUKKyAgICAgIG5hbWVzLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzLCBvciBwcm9kdWN0IG5hbWVzIG9mIHRoZSBMaWNlbnNvciwKKyAgICAgIGV4Y2VwdCBhcyByZXF1aXJlZCBmb3IgcmVhc29uYWJsZSBhbmQgY3VzdG9tYXJ5IHVzZSBpbiBkZXNjcmliaW5nIHRoZQorICAgICAgb3JpZ2luIG9mIHRoZSBXb3JrIGFuZCByZXByb2R1Y2luZyB0aGUgY29udGVudCBvZiB0aGUgTk9USUNFIGZpbGUuCisKKyAgIDcuIERpc2NsYWltZXIgb2YgV2FycmFudHkuIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvcgorICAgICAgYWdyZWVkIHRvIGluIHdyaXRpbmcsIExpY2Vuc29yIHByb3ZpZGVzIHRoZSBXb3JrIChhbmQgZWFjaAorICAgICAgQ29udHJpYnV0b3IgcHJvdmlkZXMgaXRzIENvbnRyaWJ1dGlvbnMpIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKKyAgICAgIGltcGxpZWQsIGluY2x1ZGluZywgd2l0aG91dCBsaW1pdGF0aW9uLCBhbnkgd2FycmFudGllcyBvciBjb25kaXRpb25zCisgICAgICBvZiBUSVRMRSwgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZLCBvciBGSVRORVNTIEZPUiBBCisgICAgICBQQVJUSUNVTEFSIFBVUlBPU0UuIFlvdSBhcmUgc29sZWx5IHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUKKyAgICAgIGFwcHJvcHJpYXRlbmVzcyBvZiB1c2luZyBvciByZWRpc3RyaWJ1dGluZyB0aGUgV29yayBhbmQgYXNzdW1lIGFueQorICAgICAgcmlza3MgYXNzb2NpYXRlZCB3aXRoIFlvdXIgZXhlcmNpc2Ugb2YgcGVybWlzc2lvbnMgdW5kZXIgdGhpcyBMaWNlbnNlLgorCisgICA4LiBMaW1pdGF0aW9uIG9mIExpYWJpbGl0eS4gSW4gbm8gZXZlbnQgYW5kIHVuZGVyIG5vIGxlZ2FsIHRoZW9yeSwKKyAgICAgIHdoZXRoZXIgaW4gdG9ydCAoaW5jbHVkaW5nIG5lZ2xpZ2VuY2UpLCBjb250cmFjdCwgb3Igb3RoZXJ3aXNlLAorICAgICAgdW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IChzdWNoIGFzIGRlbGliZXJhdGUgYW5kIGdyb3NzbHkKKyAgICAgIG5lZ2xpZ2VudCBhY3RzKSBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc2hhbGwgYW55IENvbnRyaWJ1dG9yIGJlCisgICAgICBsaWFibGUgdG8gWW91IGZvciBkYW1hZ2VzLCBpbmNsdWRpbmcgYW55IGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNpYWwsCisgICAgICBpbmNpZGVudGFsLCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb2YgYW55IGNoYXJhY3RlciBhcmlzaW5nIGFzIGEKKyAgICAgIHJlc3VsdCBvZiB0aGlzIExpY2Vuc2Ugb3Igb3V0IG9mIHRoZSB1c2Ugb3IgaW5hYmlsaXR5IHRvIHVzZSB0aGUKKyAgICAgIFdvcmsgKGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gZGFtYWdlcyBmb3IgbG9zcyBvZiBnb29kd2lsbCwKKyAgICAgIHdvcmsgc3RvcHBhZ2UsIGNvbXB1dGVyIGZhaWx1cmUgb3IgbWFsZnVuY3Rpb24sIG9yIGFueSBhbmQgYWxsCisgICAgICBvdGhlciBjb21tZXJjaWFsIGRhbWFnZXMgb3IgbG9zc2VzKSwgZXZlbiBpZiBzdWNoIENvbnRyaWJ1dG9yCisgICAgICBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiBzdWNoIGRhbWFnZXMuCisKKyAgIDkuIEFjY2VwdGluZyBXYXJyYW50eSBvciBBZGRpdGlvbmFsIExpYWJpbGl0eS4gV2hpbGUgcmVkaXN0cmlidXRpbmcKKyAgICAgIHRoZSBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgWW91IG1heSBjaG9vc2UgdG8gb2ZmZXIsCisgICAgICBhbmQgY2hhcmdlIGEgZmVlIGZvciwgYWNjZXB0YW5jZSBvZiBzdXBwb3J0LCB3YXJyYW50eSwgaW5kZW1uaXR5LAorICAgICAgb3Igb3RoZXIgbGlhYmlsaXR5IG9ibGlnYXRpb25zIGFuZC9vciByaWdodHMgY29uc2lzdGVudCB3aXRoIHRoaXMKKyAgICAgIExpY2Vuc2UuIEhvd2V2ZXIsIGluIGFjY2VwdGluZyBzdWNoIG9ibGlnYXRpb25zLCBZb3UgbWF5IGFjdCBvbmx5CisgICAgICBvbiBZb3VyIG93biBiZWhhbGYgYW5kIG9uIFlvdXIgc29sZSByZXNwb25zaWJpbGl0eSwgbm90IG9uIGJlaGFsZgorICAgICAgb2YgYW55IG90aGVyIENvbnRyaWJ1dG9yLCBhbmQgb25seSBpZiBZb3UgYWdyZWUgdG8gaW5kZW1uaWZ5LAorICAgICAgZGVmZW5kLCBhbmQgaG9sZCBlYWNoIENvbnRyaWJ1dG9yIGhhcm1sZXNzIGZvciBhbnkgbGlhYmlsaXR5CisgICAgICBpbmN1cnJlZCBieSwgb3IgY2xhaW1zIGFzc2VydGVkIGFnYWluc3QsIHN1Y2ggQ29udHJpYnV0b3IgYnkgcmVhc29uCisgICAgICBvZiB5b3VyIGFjY2VwdGluZyBhbnkgc3VjaCB3YXJyYW50eSBvciBhZGRpdGlvbmFsIGxpYWJpbGl0eS4KKworICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCisKKyAgIEFQUEVORElYOiBIb3cgdG8gYXBwbHkgdGhlIEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yay4KKworICAgICAgVG8gYXBwbHkgdGhlIEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yaywgYXR0YWNoIHRoZSBmb2xsb3dpbmcKKyAgICAgIGJvaWxlcnBsYXRlIG5vdGljZSwgd2l0aCB0aGUgZmllbGRzIGVuY2xvc2VkIGJ5IGJyYWNrZXRzICJbXSIKKyAgICAgIHJlcGxhY2VkIHdpdGggeW91ciBvd24gaWRlbnRpZnlpbmcgaW5mb3JtYXRpb24uIChEb24ndCBpbmNsdWRlCisgICAgICB0aGUgYnJhY2tldHMhKSAgVGhlIHRleHQgc2hvdWxkIGJlIGVuY2xvc2VkIGluIHRoZSBhcHByb3ByaWF0ZQorICAgICAgY29tbWVudCBzeW50YXggZm9yIHRoZSBmaWxlIGZvcm1hdC4gV2UgYWxzbyByZWNvbW1lbmQgdGhhdCBhCisgICAgICBmaWxlIG9yIGNsYXNzIG5hbWUgYW5kIGRlc2NyaXB0aW9uIG9mIHB1cnBvc2UgYmUgaW5jbHVkZWQgb24gdGhlCisgICAgICBzYW1lICJwcmludGVkIHBhZ2UiIGFzIHRoZSBjb3B5cmlnaHQgbm90aWNlIGZvciBlYXNpZXIKKyAgICAgIGlkZW50aWZpY2F0aW9uIHdpdGhpbiB0aGlyZC1wYXJ0eSBhcmNoaXZlcy4KKworICAgQ29weXJpZ2h0IFt5eXl5XSBbbmFtZSBvZiBjb3B5cmlnaHQgb3duZXJdCisKKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCmRpZmYgLS1naXQgYS9saWJzL3NlcmlhbGl6ZXIuTk9USUNFLnR4dCBiL2xpYnMvc2VyaWFsaXplci5OT1RJQ0UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0Y2VhMTIKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL3NlcmlhbGl6ZXIuTk9USUNFLnR4dApAQCAtMCwwICsxLDE1IEBACisgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICA9PSAgTk9USUNFIGZpbGUgY29ycmVzcG9uZGluZyB0byBzZWN0aW9uIDQoZCkgb2YgdGhlIEFwYWNoZSBMaWNlbnNlLCAgID09CisgICA9PSAgVmVyc2lvbiAyLjAsIGluIHRoaXMgY2FzZSBmb3IgdGhlIEFwYWNoZSBYYWxhbiBzZXJpYWxpemVyICAgICAgICAgID09CisgICA9PSAgZGlzdHJpYnV0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09CisgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgIFRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgSUJNIENvcnBvcmF0aW9uIChodHRwOi8vd3d3LmlibS5jb20pCisgICBhbmQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChodHRwOi8vd3d3LmFwYWNoZS5vcmcvKS4KKworICAgUG9ydGlvbnMgb2YgdGhpcyBzb2Z0d2FyZSB3YXMgb3JpZ2luYWxseSBiYXNlZCBvbiB0aGUgZm9sbG93aW5nOgorICAgICAtIHNvZnR3YXJlIGNvcHlyaWdodCAoYykgMTk5OS0yMDAyLCBMb3R1cyBEZXZlbG9wbWVudCBDb3Jwb3JhdGlvbi4sCisgICAgICAgaHR0cDovL3d3dy5sb3R1cy5jb20uCisgICAgIC0gc29mdHdhcmUgY29weXJpZ2h0IChjKSAyMDAxLTIwMDIsIFN1biBNaWNyb3N5c3RlbXMuLAorICAgICAgIGh0dHA6Ly93d3cuc3VuLmNvbS4KKyAgICAgLSBzb2Z0d2FyZSBjb3B5cmlnaHQgKGMpIDIwMDMsIElCTSBDb3Jwb3JhdGlvbi4sIGh0dHA6Ly93d3cuaWJtLmNvbS4KZGlmZiAtLWdpdCBhL2xpYnMvc2VyaWFsaXplci5qYXIgYi9saWJzL3NlcmlhbGl6ZXIuamFyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjZDgwNjkKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL3NlcmlhbGl6ZXIuamFyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYnMveGFsYW4uTElDRU5TRS50eHQgYi9saWJzL3hhbGFuLkxJQ0VOU0UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3YmM4OGEKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL3hhbGFuLkxJQ0VOU0UudHh0CkBAIC0wLDAgKzEsMjAyIEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcGFjaGUgTGljZW5zZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNAorICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzLworCisgICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04KKworICAgMS4gRGVmaW5pdGlvbnMuCisKKyAgICAgICJMaWNlbnNlIiBzaGFsbCBtZWFuIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgdXNlLCByZXByb2R1Y3Rpb24sCisgICAgICBhbmQgZGlzdHJpYnV0aW9uIGFzIGRlZmluZWQgYnkgU2VjdGlvbnMgMSB0aHJvdWdoIDkgb2YgdGhpcyBkb2N1bWVudC4KKworICAgICAgIkxpY2Vuc29yIiBzaGFsbCBtZWFuIHRoZSBjb3B5cmlnaHQgb3duZXIgb3IgZW50aXR5IGF1dGhvcml6ZWQgYnkKKyAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIgdGhhdCBpcyBncmFudGluZyB0aGUgTGljZW5zZS4KKworICAgICAgIkxlZ2FsIEVudGl0eSIgc2hhbGwgbWVhbiB0aGUgdW5pb24gb2YgdGhlIGFjdGluZyBlbnRpdHkgYW5kIGFsbAorICAgICAgb3RoZXIgZW50aXRpZXMgdGhhdCBjb250cm9sLCBhcmUgY29udHJvbGxlZCBieSwgb3IgYXJlIHVuZGVyIGNvbW1vbgorICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKKyAgICAgICJjb250cm9sIiBtZWFucyAoaSkgdGhlIHBvd2VyLCBkaXJlY3Qgb3IgaW5kaXJlY3QsIHRvIGNhdXNlIHRoZQorICAgICAgZGlyZWN0aW9uIG9yIG1hbmFnZW1lbnQgb2Ygc3VjaCBlbnRpdHksIHdoZXRoZXIgYnkgY29udHJhY3Qgb3IKKyAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQorICAgICAgb3V0c3RhbmRpbmcgc2hhcmVzLCBvciAoaWlpKSBiZW5lZmljaWFsIG93bmVyc2hpcCBvZiBzdWNoIGVudGl0eS4KKworICAgICAgIllvdSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQorICAgICAgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5IHRoaXMgTGljZW5zZS4KKworICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMsCisgICAgICBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHNvZnR3YXJlIHNvdXJjZSBjb2RlLCBkb2N1bWVudGF0aW9uCisgICAgICBzb3VyY2UsIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzLgorCisgICAgICAiT2JqZWN0IiBmb3JtIHNoYWxsIG1lYW4gYW55IGZvcm0gcmVzdWx0aW5nIGZyb20gbWVjaGFuaWNhbAorICAgICAgdHJhbnNmb3JtYXRpb24gb3IgdHJhbnNsYXRpb24gb2YgYSBTb3VyY2UgZm9ybSwgaW5jbHVkaW5nIGJ1dAorICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAorICAgICAgYW5kIGNvbnZlcnNpb25zIHRvIG90aGVyIG1lZGlhIHR5cGVzLgorCisgICAgICAiV29yayIgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgorICAgICAgT2JqZWN0IGZvcm0sIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSBMaWNlbnNlLCBhcyBpbmRpY2F0ZWQgYnkgYQorICAgICAgY29weXJpZ2h0IG5vdGljZSB0aGF0IGlzIGluY2x1ZGVkIGluIG9yIGF0dGFjaGVkIHRvIHRoZSB3b3JrCisgICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLgorCisgICAgICAiRGVyaXZhdGl2ZSBXb3JrcyIgc2hhbGwgbWVhbiBhbnkgd29yaywgd2hldGhlciBpbiBTb3VyY2Ugb3IgT2JqZWN0CisgICAgICBmb3JtLCB0aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhlCisgICAgICBlZGl0b3JpYWwgcmV2aXNpb25zLCBhbm5vdGF0aW9ucywgZWxhYm9yYXRpb25zLCBvciBvdGhlciBtb2RpZmljYXRpb25zCisgICAgICByZXByZXNlbnQsIGFzIGEgd2hvbGUsIGFuIG9yaWdpbmFsIHdvcmsgb2YgYXV0aG9yc2hpcC4gRm9yIHRoZSBwdXJwb3NlcworICAgICAgb2YgdGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluCisgICAgICBzZXBhcmFibGUgZnJvbSwgb3IgbWVyZWx5IGxpbmsgKG9yIGJpbmQgYnkgbmFtZSkgdG8gdGhlIGludGVyZmFjZXMgb2YsCisgICAgICB0aGUgV29yayBhbmQgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLgorCisgICAgICAiQ29udHJpYnV0aW9uIiBzaGFsbCBtZWFuIGFueSB3b3JrIG9mIGF1dGhvcnNoaXAsIGluY2x1ZGluZworICAgICAgdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlIFdvcmsgYW5kIGFueSBtb2RpZmljYXRpb25zIG9yIGFkZGl0aW9ucworICAgICAgdG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25hbGx5CisgICAgICBzdWJtaXR0ZWQgdG8gTGljZW5zb3IgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yayBieSB0aGUgY29weXJpZ2h0IG93bmVyCisgICAgICBvciBieSBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eSBhdXRob3JpemVkIHRvIHN1Ym1pdCBvbiBiZWhhbGYgb2YKKyAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3VibWl0dGVkIgorICAgICAgbWVhbnMgYW55IGZvcm0gb2YgZWxlY3Ryb25pYywgdmVyYmFsLCBvciB3cml0dGVuIGNvbW11bmljYXRpb24gc2VudAorICAgICAgdG8gdGhlIExpY2Vuc29yIG9yIGl0cyByZXByZXNlbnRhdGl2ZXMsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8KKyAgICAgIGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsCisgICAgICBhbmQgaXNzdWUgdHJhY2tpbmcgc3lzdGVtcyB0aGF0IGFyZSBtYW5hZ2VkIGJ5LCBvciBvbiBiZWhhbGYgb2YsIHRoZQorICAgICAgTGljZW5zb3IgZm9yIHRoZSBwdXJwb3NlIG9mIGRpc2N1c3NpbmcgYW5kIGltcHJvdmluZyB0aGUgV29yaywgYnV0CisgICAgICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQorICAgICAgZGVzaWduYXRlZCBpbiB3cml0aW5nIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIgYXMgIk5vdCBhIENvbnRyaWJ1dGlvbi4iCisKKyAgICAgICJDb250cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CisgICAgICBvbiBiZWhhbGYgb2Ygd2hvbSBhIENvbnRyaWJ1dGlvbiBoYXMgYmVlbiByZWNlaXZlZCBieSBMaWNlbnNvciBhbmQKKyAgICAgIHN1YnNlcXVlbnRseSBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrLgorCisgICAyLiBHcmFudCBvZiBDb3B5cmlnaHQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIHRvIFlvdSBhIHBlcnBldHVhbCwKKyAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCisgICAgICBjb3B5cmlnaHQgbGljZW5zZSB0byByZXByb2R1Y2UsIHByZXBhcmUgRGVyaXZhdGl2ZSBXb3JrcyBvZiwKKyAgICAgIHB1YmxpY2x5IGRpc3BsYXksIHB1YmxpY2x5IHBlcmZvcm0sIHN1YmxpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHRoZQorICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4KKworICAgMy4gR3JhbnQgb2YgUGF0ZW50IExpY2Vuc2UuIFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCisgICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZQorICAgICAgKGV4Y2VwdCBhcyBzdGF0ZWQgaW4gdGhpcyBzZWN0aW9uKSBwYXRlbnQgbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUsCisgICAgICB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKKyAgICAgIHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlCisgICAgICBieSBzdWNoIENvbnRyaWJ1dG9yIHRoYXQgYXJlIG5lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGVpcgorICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQorICAgICAgd2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNoIENvbnRyaWJ1dGlvbihzKSB3YXMgc3VibWl0dGVkLiBJZiBZb3UKKyAgICAgIGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgKGluY2x1ZGluZyBhCisgICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBXb3JrCisgICAgICBvciBhIENvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzIGRpcmVjdAorICAgICAgb3IgY29udHJpYnV0b3J5IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcworICAgICAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlCisgICAgICBhcyBvZiB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuCisKKyAgIDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlCisgICAgICBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiBpbiBhbnkgbWVkaXVtLCB3aXRoIG9yIHdpdGhvdXQKKyAgICAgIG1vZGlmaWNhdGlvbnMsIGFuZCBpbiBTb3VyY2Ugb3IgT2JqZWN0IGZvcm0sIHByb3ZpZGVkIHRoYXQgWW91CisgICAgICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworICAgICAgKGEpIFlvdSBtdXN0IGdpdmUgYW55IG90aGVyIHJlY2lwaWVudHMgb2YgdGhlIFdvcmsgb3IKKyAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExpY2Vuc2U7IGFuZAorCisgICAgICAoYikgWW91IG11c3QgY2F1c2UgYW55IG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCisgICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kCisKKyAgICAgIChjKSBZb3UgbXVzdCByZXRhaW4sIGluIHRoZSBTb3VyY2UgZm9ybSBvZiBhbnkgRGVyaXZhdGl2ZSBXb3JrcworICAgICAgICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBhbmQKKyAgICAgICAgICBhdHRyaWJ1dGlvbiBub3RpY2VzIGZyb20gdGhlIFNvdXJjZSBmb3JtIG9mIHRoZSBXb3JrLAorICAgICAgICAgIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90IHBlcnRhaW4gdG8gYW55IHBhcnQgb2YKKyAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3JrczsgYW5kCisKKyAgICAgIChkKSBJZiB0aGUgV29yayBpbmNsdWRlcyBhICJOT1RJQ0UiIHRleHQgZmlsZSBhcyBwYXJ0IG9mIGl0cworICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKKyAgICAgICAgICBpbmNsdWRlIGEgcmVhZGFibGUgY29weSBvZiB0aGUgYXR0cmlidXRpb24gbm90aWNlcyBjb250YWluZWQKKyAgICAgICAgICB3aXRoaW4gc3VjaCBOT1RJQ0UgZmlsZSwgZXhjbHVkaW5nIHRob3NlIG5vdGljZXMgdGhhdCBkbyBub3QKKyAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKKyAgICAgICAgICBvZiB0aGUgZm9sbG93aW5nIHBsYWNlczogd2l0aGluIGEgTk9USUNFIHRleHQgZmlsZSBkaXN0cmlidXRlZAorICAgICAgICAgIGFzIHBhcnQgb2YgdGhlIERlcml2YXRpdmUgV29ya3M7IHdpdGhpbiB0aGUgU291cmNlIGZvcm0gb3IKKyAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwKKyAgICAgICAgICB3aXRoaW4gYSBkaXNwbGF5IGdlbmVyYXRlZCBieSB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaWYgYW5kCisgICAgICAgICAgd2hlcmV2ZXIgc3VjaCB0aGlyZC1wYXJ0eSBub3RpY2VzIG5vcm1hbGx5IGFwcGVhci4gVGhlIGNvbnRlbnRzCisgICAgICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZAorICAgICAgICAgIGRvIG5vdCBtb2RpZnkgdGhlIExpY2Vuc2UuIFlvdSBtYXkgYWRkIFlvdXIgb3duIGF0dHJpYnV0aW9uCisgICAgICAgICAgbm90aWNlcyB3aXRoaW4gRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlLCBhbG9uZ3NpZGUKKyAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKKyAgICAgICAgICB0aGF0IHN1Y2ggYWRkaXRpb25hbCBhdHRyaWJ1dGlvbiBub3RpY2VzIGNhbm5vdCBiZSBjb25zdHJ1ZWQKKyAgICAgICAgICBhcyBtb2RpZnlpbmcgdGhlIExpY2Vuc2UuCisKKyAgICAgIFlvdSBtYXkgYWRkIFlvdXIgb3duIGNvcHlyaWdodCBzdGF0ZW1lbnQgdG8gWW91ciBtb2RpZmljYXRpb25zIGFuZAorICAgICAgbWF5IHByb3ZpZGUgYWRkaXRpb25hbCBvciBkaWZmZXJlbnQgbGljZW5zZSB0ZXJtcyBhbmQgY29uZGl0aW9ucworICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgorICAgICAgZm9yIGFueSBzdWNoIERlcml2YXRpdmUgV29ya3MgYXMgYSB3aG9sZSwgcHJvdmlkZWQgWW91ciB1c2UsCisgICAgICByZXByb2R1Y3Rpb24sIGFuZCBkaXN0cmlidXRpb24gb2YgdGhlIFdvcmsgb3RoZXJ3aXNlIGNvbXBsaWVzIHdpdGgKKyAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCisKKyAgIDUuIFN1Ym1pc3Npb24gb2YgQ29udHJpYnV0aW9ucy4gVW5sZXNzIFlvdSBleHBsaWNpdGx5IHN0YXRlIG90aGVyd2lzZSwKKyAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yaworICAgICAgYnkgWW91IHRvIHRoZSBMaWNlbnNvciBzaGFsbCBiZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwgd2l0aG91dCBhbnkgYWRkaXRpb25hbCB0ZXJtcyBvciBjb25kaXRpb25zLgorICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlmeQorICAgICAgdGhlIHRlcm1zIG9mIGFueSBzZXBhcmF0ZSBsaWNlbnNlIGFncmVlbWVudCB5b3UgbWF5IGhhdmUgZXhlY3V0ZWQKKyAgICAgIHdpdGggTGljZW5zb3IgcmVnYXJkaW5nIHN1Y2ggQ29udHJpYnV0aW9ucy4KKworICAgNi4gVHJhZGVtYXJrcy4gVGhpcyBMaWNlbnNlIGRvZXMgbm90IGdyYW50IHBlcm1pc3Npb24gdG8gdXNlIHRoZSB0cmFkZQorICAgICAgbmFtZXMsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3MsIG9yIHByb2R1Y3QgbmFtZXMgb2YgdGhlIExpY2Vuc29yLAorICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCisgICAgICBvcmlnaW4gb2YgdGhlIFdvcmsgYW5kIHJlcHJvZHVjaW5nIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4KKworICAgNy4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yCisgICAgICBhZ3JlZWQgdG8gaW4gd3JpdGluZywgTGljZW5zb3IgcHJvdmlkZXMgdGhlIFdvcmsgKGFuZCBlYWNoCisgICAgICBDb250cmlidXRvciBwcm92aWRlcyBpdHMgQ29udHJpYnV0aW9ucykgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgorICAgICAgaW1wbGllZCwgaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIGFueSB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMKKyAgICAgIG9mIFRJVExFLCBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFksIG9yIEZJVE5FU1MgRk9SIEEKKyAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQorICAgICAgYXBwcm9wcmlhdGVuZXNzIG9mIHVzaW5nIG9yIHJlZGlzdHJpYnV0aW5nIHRoZSBXb3JrIGFuZCBhc3N1bWUgYW55CisgICAgICByaXNrcyBhc3NvY2lhdGVkIHdpdGggWW91ciBleGVyY2lzZSBvZiBwZXJtaXNzaW9ucyB1bmRlciB0aGlzIExpY2Vuc2UuCisKKyAgIDguIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5LiBJbiBubyBldmVudCBhbmQgdW5kZXIgbm8gbGVnYWwgdGhlb3J5LAorICAgICAgd2hldGhlciBpbiB0b3J0IChpbmNsdWRpbmcgbmVnbGlnZW5jZSksIGNvbnRyYWN0LCBvciBvdGhlcndpc2UsCisgICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQorICAgICAgbmVnbGlnZW50IGFjdHMpIG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzaGFsbCBhbnkgQ29udHJpYnV0b3IgYmUKKyAgICAgIGxpYWJsZSB0byBZb3UgZm9yIGRhbWFnZXMsIGluY2x1ZGluZyBhbnkgZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwKKyAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQorICAgICAgcmVzdWx0IG9mIHRoaXMgTGljZW5zZSBvciBvdXQgb2YgdGhlIHVzZSBvciBpbmFiaWxpdHkgdG8gdXNlIHRoZQorICAgICAgV29yayAoaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBkYW1hZ2VzIGZvciBsb3NzIG9mIGdvb2R3aWxsLAorICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKKyAgICAgIG90aGVyIGNvbW1lcmNpYWwgZGFtYWdlcyBvciBsb3NzZXMpLCBldmVuIGlmIHN1Y2ggQ29udHJpYnV0b3IKKyAgICAgIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHN1Y2ggZGFtYWdlcy4KKworICAgOS4gQWNjZXB0aW5nIFdhcnJhbnR5IG9yIEFkZGl0aW9uYWwgTGlhYmlsaXR5LiBXaGlsZSByZWRpc3RyaWJ1dGluZworICAgICAgdGhlIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLCBZb3UgbWF5IGNob29zZSB0byBvZmZlciwKKyAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCisgICAgICBvciBvdGhlciBsaWFiaWxpdHkgb2JsaWdhdGlvbnMgYW5kL29yIHJpZ2h0cyBjb25zaXN0ZW50IHdpdGggdGhpcworICAgICAgTGljZW5zZS4gSG93ZXZlciwgaW4gYWNjZXB0aW5nIHN1Y2ggb2JsaWdhdGlvbnMsIFlvdSBtYXkgYWN0IG9ubHkKKyAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCisgICAgICBvZiBhbnkgb3RoZXIgQ29udHJpYnV0b3IsIGFuZCBvbmx5IGlmIFlvdSBhZ3JlZSB0byBpbmRlbW5pZnksCisgICAgICBkZWZlbmQsIGFuZCBob2xkIGVhY2ggQ29udHJpYnV0b3IgaGFybWxlc3MgZm9yIGFueSBsaWFiaWxpdHkKKyAgICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRvciBieSByZWFzb24KKyAgICAgIG9mIHlvdXIgYWNjZXB0aW5nIGFueSBzdWNoIHdhcnJhbnR5IG9yIGFkZGl0aW9uYWwgbGlhYmlsaXR5LgorCisgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKKworICAgQVBQRU5ESVg6IEhvdyB0byBhcHBseSB0aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91ciB3b3JrLgorCisgICAgICBUbyBhcHBseSB0aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91ciB3b3JrLCBhdHRhY2ggdGhlIGZvbGxvd2luZworICAgICAgYm9pbGVycGxhdGUgbm90aWNlLCB3aXRoIHRoZSBmaWVsZHMgZW5jbG9zZWQgYnkgYnJhY2tldHMgIltdIgorICAgICAgcmVwbGFjZWQgd2l0aCB5b3VyIG93biBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4gKERvbid0IGluY2x1ZGUKKyAgICAgIHRoZSBicmFja2V0cyEpICBUaGUgdGV4dCBzaG91bGQgYmUgZW5jbG9zZWQgaW4gdGhlIGFwcHJvcHJpYXRlCisgICAgICBjb21tZW50IHN5bnRheCBmb3IgdGhlIGZpbGUgZm9ybWF0LiBXZSBhbHNvIHJlY29tbWVuZCB0aGF0IGEKKyAgICAgIGZpbGUgb3IgY2xhc3MgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgcHVycG9zZSBiZSBpbmNsdWRlZCBvbiB0aGUKKyAgICAgIHNhbWUgInByaW50ZWQgcGFnZSIgYXMgdGhlIGNvcHlyaWdodCBub3RpY2UgZm9yIGVhc2llcgorICAgICAgaWRlbnRpZmljYXRpb24gd2l0aGluIHRoaXJkLXBhcnR5IGFyY2hpdmVzLgorCisgICBDb3B5cmlnaHQgW3l5eXldIFtuYW1lIG9mIGNvcHlyaWdodCBvd25lcl0KKworICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKwpkaWZmIC0tZ2l0IGEvbGlicy94YWxhbi5OT1RJQ0UudHh0IGIvbGlicy94YWxhbi5OT1RJQ0UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxY2U3NzUKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL3hhbGFuLk5PVElDRS50eHQKQEAgLTAsMCArMSw0NCBAQAorICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgPT0gIE5PVElDRSBmaWxlIGNvcnJlc3BvbmRpbmcgdG8gc2VjdGlvbiA0KGQpIG9mIHRoZSBBcGFjaGUgTGljZW5zZSwgICA9PQorICAgPT0gIFZlcnNpb24gMi4wLCBpbiB0aGlzIGNhc2UgZm9yIHRoZSBBcGFjaGUgWGFsYW4gZGlzdHJpYnV0aW9uLiAgICAgICA9PQorICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICBUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5CisgICBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKGh0dHA6Ly93d3cuYXBhY2hlLm9yZy8pLgorCisgICBQb3J0aW9ucyBvZiB0aGlzIHNvZnR3YXJlIHdhcyBvcmlnaW5hbGx5IGJhc2VkIG9uIHRoZSBmb2xsb3dpbmc6CisgICAgIC0gc29mdHdhcmUgY29weXJpZ2h0IChjKSAxOTk5LTIwMDIsIExvdHVzIERldmVsb3BtZW50IENvcnBvcmF0aW9uLiwKKyAgICAgICBodHRwOi8vd3d3LmxvdHVzLmNvbS4KKyAgICAgLSBzb2Z0d2FyZSBjb3B5cmlnaHQgKGMpIDIwMDEtMjAwMiwgU3VuIE1pY3Jvc3lzdGVtcy4sCisgICAgICAgaHR0cDovL3d3dy5zdW4uY29tLgorICAgICAtIHNvZnR3YXJlIGNvcHlyaWdodCAoYykgMjAwMywgSUJNIENvcnBvcmF0aW9uLiwgaHR0cDovL3d3dy5pYm0uY29tLgorICAgICAtIHZvbHVudGFyeSBjb250cmlidXRpb25zIG1hZGUgYnkgT3ZpZGl1IFByZWRlc2N1IDxvdmlkaXVAY3VwLmhwLmNvbT4gb24KKyAgICAgICBiZWhhbGYgb2YgdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIHRoYXQgd2FzIG9yaWdpbmFsbHkgZGV2ZWxvcGVkCisgICAgICAgYXQgSGV3bGV0dCBQYWNrYXJkIENvbXBhbnkuIAorCisgICBUaGUgYmluYXJ5IGRpc3RyaWJ1dGlvbiBwYWNrYWdlIChpZS4gamFycywgc2FtcGxlcyBhbmQgZG9jdW1lbnRhdGlvbikgb2YKKyAgIHRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIGZvbGxvd2luZzoKKyAgICAgICAKKyAgICAgLSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gCisgICAgICAgICAtIFhlcmNlcyBKYXZhIC0gc2VlIHhlcmNlc0ltcGwuUkVBRE1FLnR4dCAKKyAgICAgICAgIC0gSkFYUCAxLjMgQVBJcyAtIHNlZSB4bWwtYXBpcy5SRUFETUUudHh0CisgICAgICAgICAtIEJ5dGVjb2RlIEVuZ2luZWVyaW5nIExpYnJhcnkgLSBzZWUgQkNFTC5SRUFETUUudHh0CisgICAgICAgICAtIFJlZ3VsYXIgRXhwcmVzc2lvbiAtIHNlZSByZWdleHAuUkVBRE1FLnR4dAorICAgICAgIAorICAgICAtIFNjb3R0IEh1ZHNvbiwgRnJhbmsgRmxhbm5lcnksIEMuIFNjb3R0IEFuYW5pYW4gCisgICAgICAgICAtIENVUCBQYXJzZXIgR2VuZXJhdG9yIHJ1bnRpbWUgKGphdmFjdXBccnVudGltZSkgLSBzZWUgcnVudGltZS5SRUFETUUudHh0IAorIAorIAorICAgVGhlIHNvdXJjZSBkaXN0cmlidXRpb24gcGFja2FnZSAoaWUuIGFsbCBzb3VyY2UgYW5kIHRvb2xzIHJlcXVpcmVkIHRvIGJ1aWxkCisgICBYYWxhbiBKYXZhKSBvZiB0aGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBmb2xsb3dpbmc6CisgICAgICAgCisgICAgIC0gVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAtIFhlcmNlcyBKYXZhIC0gc2VlIHhlcmNlc0ltcGwuUkVBRE1FLnR4dCAKKyAgICAgICAgIC0gSkFYUCAxLjMgQVBJcyAtIHNlZSB4bWwtYXBpcy5SRUFETUUudHh0CisgICAgICAgICAtIEJ5dGVjb2RlIEVuZ2luZWVyaW5nIExpYnJhcnkgLSBzZWUgQkNFTC5SRUFETUUudHh0CisgICAgICAgICAtIFJlZ3VsYXIgRXhwcmVzc2lvbiAtIHNlZSByZWdleHAuUkVBRE1FLnR4dAorICAgICAgICAgLSBBbnQgLSBzZWUgYW50LlJFQURNRS50eHQKKyAgICAgICAgIC0gU3R5bGVib29rIGRvYyB0b29sIC0gc2VlIHN0eWxlYm9vay0xLjAtYjNfeGFsYW4tMi5SRUFETUUudHh0ICAgIAorICAgICAgIAorICAgICAtIEVsbGlvdCBKb2VsIEJlcmsgYW5kIEMuIFNjb3R0IEFuYW5pYW4gCisgICAgICAgICAtIExleGljYWwgQW5hbHl6ZXIgR2VuZXJhdG9yIChKTGV4KSAtIHNlZSBKTGV4LlJFQURNRS50eHQKZGlmZiAtLWdpdCBhL2xpYnMveGFsYW4uamFyIGIvbGlicy94YWxhbi5qYXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc5ZWU3NgotLS0gL2Rldi9udWxsCisrKyBiL2xpYnMveGFsYW4uamFyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYnMveGVyY2VzSW1wbC5MSUNFTlNFLnR4dCBiL2xpYnMveGVyY2VzSW1wbC5MSUNFTlNFLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjFlZWI5Ci0tLSAvZGV2L251bGwKKysrIGIvbGlicy94ZXJjZXNJbXBsLkxJQ0VOU0UudHh0CkBAIC0wLDAgKzEsMjAxIEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcGFjaGUgTGljZW5zZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNAorICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzLworCisgICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04KKworICAgMS4gRGVmaW5pdGlvbnMuCisKKyAgICAgICJMaWNlbnNlIiBzaGFsbCBtZWFuIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgdXNlLCByZXByb2R1Y3Rpb24sCisgICAgICBhbmQgZGlzdHJpYnV0aW9uIGFzIGRlZmluZWQgYnkgU2VjdGlvbnMgMSB0aHJvdWdoIDkgb2YgdGhpcyBkb2N1bWVudC4KKworICAgICAgIkxpY2Vuc29yIiBzaGFsbCBtZWFuIHRoZSBjb3B5cmlnaHQgb3duZXIgb3IgZW50aXR5IGF1dGhvcml6ZWQgYnkKKyAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIgdGhhdCBpcyBncmFudGluZyB0aGUgTGljZW5zZS4KKworICAgICAgIkxlZ2FsIEVudGl0eSIgc2hhbGwgbWVhbiB0aGUgdW5pb24gb2YgdGhlIGFjdGluZyBlbnRpdHkgYW5kIGFsbAorICAgICAgb3RoZXIgZW50aXRpZXMgdGhhdCBjb250cm9sLCBhcmUgY29udHJvbGxlZCBieSwgb3IgYXJlIHVuZGVyIGNvbW1vbgorICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKKyAgICAgICJjb250cm9sIiBtZWFucyAoaSkgdGhlIHBvd2VyLCBkaXJlY3Qgb3IgaW5kaXJlY3QsIHRvIGNhdXNlIHRoZQorICAgICAgZGlyZWN0aW9uIG9yIG1hbmFnZW1lbnQgb2Ygc3VjaCBlbnRpdHksIHdoZXRoZXIgYnkgY29udHJhY3Qgb3IKKyAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQorICAgICAgb3V0c3RhbmRpbmcgc2hhcmVzLCBvciAoaWlpKSBiZW5lZmljaWFsIG93bmVyc2hpcCBvZiBzdWNoIGVudGl0eS4KKworICAgICAgIllvdSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQorICAgICAgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5IHRoaXMgTGljZW5zZS4KKworICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMsCisgICAgICBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHNvZnR3YXJlIHNvdXJjZSBjb2RlLCBkb2N1bWVudGF0aW9uCisgICAgICBzb3VyY2UsIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzLgorCisgICAgICAiT2JqZWN0IiBmb3JtIHNoYWxsIG1lYW4gYW55IGZvcm0gcmVzdWx0aW5nIGZyb20gbWVjaGFuaWNhbAorICAgICAgdHJhbnNmb3JtYXRpb24gb3IgdHJhbnNsYXRpb24gb2YgYSBTb3VyY2UgZm9ybSwgaW5jbHVkaW5nIGJ1dAorICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAorICAgICAgYW5kIGNvbnZlcnNpb25zIHRvIG90aGVyIG1lZGlhIHR5cGVzLgorCisgICAgICAiV29yayIgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgorICAgICAgT2JqZWN0IGZvcm0sIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSBMaWNlbnNlLCBhcyBpbmRpY2F0ZWQgYnkgYQorICAgICAgY29weXJpZ2h0IG5vdGljZSB0aGF0IGlzIGluY2x1ZGVkIGluIG9yIGF0dGFjaGVkIHRvIHRoZSB3b3JrCisgICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLgorCisgICAgICAiRGVyaXZhdGl2ZSBXb3JrcyIgc2hhbGwgbWVhbiBhbnkgd29yaywgd2hldGhlciBpbiBTb3VyY2Ugb3IgT2JqZWN0CisgICAgICBmb3JtLCB0aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhlCisgICAgICBlZGl0b3JpYWwgcmV2aXNpb25zLCBhbm5vdGF0aW9ucywgZWxhYm9yYXRpb25zLCBvciBvdGhlciBtb2RpZmljYXRpb25zCisgICAgICByZXByZXNlbnQsIGFzIGEgd2hvbGUsIGFuIG9yaWdpbmFsIHdvcmsgb2YgYXV0aG9yc2hpcC4gRm9yIHRoZSBwdXJwb3NlcworICAgICAgb2YgdGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluCisgICAgICBzZXBhcmFibGUgZnJvbSwgb3IgbWVyZWx5IGxpbmsgKG9yIGJpbmQgYnkgbmFtZSkgdG8gdGhlIGludGVyZmFjZXMgb2YsCisgICAgICB0aGUgV29yayBhbmQgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLgorCisgICAgICAiQ29udHJpYnV0aW9uIiBzaGFsbCBtZWFuIGFueSB3b3JrIG9mIGF1dGhvcnNoaXAsIGluY2x1ZGluZworICAgICAgdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlIFdvcmsgYW5kIGFueSBtb2RpZmljYXRpb25zIG9yIGFkZGl0aW9ucworICAgICAgdG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25hbGx5CisgICAgICBzdWJtaXR0ZWQgdG8gTGljZW5zb3IgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yayBieSB0aGUgY29weXJpZ2h0IG93bmVyCisgICAgICBvciBieSBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eSBhdXRob3JpemVkIHRvIHN1Ym1pdCBvbiBiZWhhbGYgb2YKKyAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3VibWl0dGVkIgorICAgICAgbWVhbnMgYW55IGZvcm0gb2YgZWxlY3Ryb25pYywgdmVyYmFsLCBvciB3cml0dGVuIGNvbW11bmljYXRpb24gc2VudAorICAgICAgdG8gdGhlIExpY2Vuc29yIG9yIGl0cyByZXByZXNlbnRhdGl2ZXMsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8KKyAgICAgIGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsCisgICAgICBhbmQgaXNzdWUgdHJhY2tpbmcgc3lzdGVtcyB0aGF0IGFyZSBtYW5hZ2VkIGJ5LCBvciBvbiBiZWhhbGYgb2YsIHRoZQorICAgICAgTGljZW5zb3IgZm9yIHRoZSBwdXJwb3NlIG9mIGRpc2N1c3NpbmcgYW5kIGltcHJvdmluZyB0aGUgV29yaywgYnV0CisgICAgICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQorICAgICAgZGVzaWduYXRlZCBpbiB3cml0aW5nIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIgYXMgIk5vdCBhIENvbnRyaWJ1dGlvbi4iCisKKyAgICAgICJDb250cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CisgICAgICBvbiBiZWhhbGYgb2Ygd2hvbSBhIENvbnRyaWJ1dGlvbiBoYXMgYmVlbiByZWNlaXZlZCBieSBMaWNlbnNvciBhbmQKKyAgICAgIHN1YnNlcXVlbnRseSBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrLgorCisgICAyLiBHcmFudCBvZiBDb3B5cmlnaHQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIHRvIFlvdSBhIHBlcnBldHVhbCwKKyAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCisgICAgICBjb3B5cmlnaHQgbGljZW5zZSB0byByZXByb2R1Y2UsIHByZXBhcmUgRGVyaXZhdGl2ZSBXb3JrcyBvZiwKKyAgICAgIHB1YmxpY2x5IGRpc3BsYXksIHB1YmxpY2x5IHBlcmZvcm0sIHN1YmxpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHRoZQorICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4KKworICAgMy4gR3JhbnQgb2YgUGF0ZW50IExpY2Vuc2UuIFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCisgICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZQorICAgICAgKGV4Y2VwdCBhcyBzdGF0ZWQgaW4gdGhpcyBzZWN0aW9uKSBwYXRlbnQgbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUsCisgICAgICB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKKyAgICAgIHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlCisgICAgICBieSBzdWNoIENvbnRyaWJ1dG9yIHRoYXQgYXJlIG5lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGVpcgorICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQorICAgICAgd2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNoIENvbnRyaWJ1dGlvbihzKSB3YXMgc3VibWl0dGVkLiBJZiBZb3UKKyAgICAgIGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgKGluY2x1ZGluZyBhCisgICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBXb3JrCisgICAgICBvciBhIENvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzIGRpcmVjdAorICAgICAgb3IgY29udHJpYnV0b3J5IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcworICAgICAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlCisgICAgICBhcyBvZiB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuCisKKyAgIDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlCisgICAgICBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiBpbiBhbnkgbWVkaXVtLCB3aXRoIG9yIHdpdGhvdXQKKyAgICAgIG1vZGlmaWNhdGlvbnMsIGFuZCBpbiBTb3VyY2Ugb3IgT2JqZWN0IGZvcm0sIHByb3ZpZGVkIHRoYXQgWW91CisgICAgICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworICAgICAgKGEpIFlvdSBtdXN0IGdpdmUgYW55IG90aGVyIHJlY2lwaWVudHMgb2YgdGhlIFdvcmsgb3IKKyAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExpY2Vuc2U7IGFuZAorCisgICAgICAoYikgWW91IG11c3QgY2F1c2UgYW55IG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCisgICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kCisKKyAgICAgIChjKSBZb3UgbXVzdCByZXRhaW4sIGluIHRoZSBTb3VyY2UgZm9ybSBvZiBhbnkgRGVyaXZhdGl2ZSBXb3JrcworICAgICAgICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBhbmQKKyAgICAgICAgICBhdHRyaWJ1dGlvbiBub3RpY2VzIGZyb20gdGhlIFNvdXJjZSBmb3JtIG9mIHRoZSBXb3JrLAorICAgICAgICAgIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90IHBlcnRhaW4gdG8gYW55IHBhcnQgb2YKKyAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3JrczsgYW5kCisKKyAgICAgIChkKSBJZiB0aGUgV29yayBpbmNsdWRlcyBhICJOT1RJQ0UiIHRleHQgZmlsZSBhcyBwYXJ0IG9mIGl0cworICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKKyAgICAgICAgICBpbmNsdWRlIGEgcmVhZGFibGUgY29weSBvZiB0aGUgYXR0cmlidXRpb24gbm90aWNlcyBjb250YWluZWQKKyAgICAgICAgICB3aXRoaW4gc3VjaCBOT1RJQ0UgZmlsZSwgZXhjbHVkaW5nIHRob3NlIG5vdGljZXMgdGhhdCBkbyBub3QKKyAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKKyAgICAgICAgICBvZiB0aGUgZm9sbG93aW5nIHBsYWNlczogd2l0aGluIGEgTk9USUNFIHRleHQgZmlsZSBkaXN0cmlidXRlZAorICAgICAgICAgIGFzIHBhcnQgb2YgdGhlIERlcml2YXRpdmUgV29ya3M7IHdpdGhpbiB0aGUgU291cmNlIGZvcm0gb3IKKyAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwKKyAgICAgICAgICB3aXRoaW4gYSBkaXNwbGF5IGdlbmVyYXRlZCBieSB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaWYgYW5kCisgICAgICAgICAgd2hlcmV2ZXIgc3VjaCB0aGlyZC1wYXJ0eSBub3RpY2VzIG5vcm1hbGx5IGFwcGVhci4gVGhlIGNvbnRlbnRzCisgICAgICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZAorICAgICAgICAgIGRvIG5vdCBtb2RpZnkgdGhlIExpY2Vuc2UuIFlvdSBtYXkgYWRkIFlvdXIgb3duIGF0dHJpYnV0aW9uCisgICAgICAgICAgbm90aWNlcyB3aXRoaW4gRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlLCBhbG9uZ3NpZGUKKyAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKKyAgICAgICAgICB0aGF0IHN1Y2ggYWRkaXRpb25hbCBhdHRyaWJ1dGlvbiBub3RpY2VzIGNhbm5vdCBiZSBjb25zdHJ1ZWQKKyAgICAgICAgICBhcyBtb2RpZnlpbmcgdGhlIExpY2Vuc2UuCisKKyAgICAgIFlvdSBtYXkgYWRkIFlvdXIgb3duIGNvcHlyaWdodCBzdGF0ZW1lbnQgdG8gWW91ciBtb2RpZmljYXRpb25zIGFuZAorICAgICAgbWF5IHByb3ZpZGUgYWRkaXRpb25hbCBvciBkaWZmZXJlbnQgbGljZW5zZSB0ZXJtcyBhbmQgY29uZGl0aW9ucworICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgorICAgICAgZm9yIGFueSBzdWNoIERlcml2YXRpdmUgV29ya3MgYXMgYSB3aG9sZSwgcHJvdmlkZWQgWW91ciB1c2UsCisgICAgICByZXByb2R1Y3Rpb24sIGFuZCBkaXN0cmlidXRpb24gb2YgdGhlIFdvcmsgb3RoZXJ3aXNlIGNvbXBsaWVzIHdpdGgKKyAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCisKKyAgIDUuIFN1Ym1pc3Npb24gb2YgQ29udHJpYnV0aW9ucy4gVW5sZXNzIFlvdSBleHBsaWNpdGx5IHN0YXRlIG90aGVyd2lzZSwKKyAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yaworICAgICAgYnkgWW91IHRvIHRoZSBMaWNlbnNvciBzaGFsbCBiZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwgd2l0aG91dCBhbnkgYWRkaXRpb25hbCB0ZXJtcyBvciBjb25kaXRpb25zLgorICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlmeQorICAgICAgdGhlIHRlcm1zIG9mIGFueSBzZXBhcmF0ZSBsaWNlbnNlIGFncmVlbWVudCB5b3UgbWF5IGhhdmUgZXhlY3V0ZWQKKyAgICAgIHdpdGggTGljZW5zb3IgcmVnYXJkaW5nIHN1Y2ggQ29udHJpYnV0aW9ucy4KKworICAgNi4gVHJhZGVtYXJrcy4gVGhpcyBMaWNlbnNlIGRvZXMgbm90IGdyYW50IHBlcm1pc3Npb24gdG8gdXNlIHRoZSB0cmFkZQorICAgICAgbmFtZXMsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3MsIG9yIHByb2R1Y3QgbmFtZXMgb2YgdGhlIExpY2Vuc29yLAorICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCisgICAgICBvcmlnaW4gb2YgdGhlIFdvcmsgYW5kIHJlcHJvZHVjaW5nIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4KKworICAgNy4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yCisgICAgICBhZ3JlZWQgdG8gaW4gd3JpdGluZywgTGljZW5zb3IgcHJvdmlkZXMgdGhlIFdvcmsgKGFuZCBlYWNoCisgICAgICBDb250cmlidXRvciBwcm92aWRlcyBpdHMgQ29udHJpYnV0aW9ucykgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgorICAgICAgaW1wbGllZCwgaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIGFueSB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMKKyAgICAgIG9mIFRJVExFLCBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFksIG9yIEZJVE5FU1MgRk9SIEEKKyAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQorICAgICAgYXBwcm9wcmlhdGVuZXNzIG9mIHVzaW5nIG9yIHJlZGlzdHJpYnV0aW5nIHRoZSBXb3JrIGFuZCBhc3N1bWUgYW55CisgICAgICByaXNrcyBhc3NvY2lhdGVkIHdpdGggWW91ciBleGVyY2lzZSBvZiBwZXJtaXNzaW9ucyB1bmRlciB0aGlzIExpY2Vuc2UuCisKKyAgIDguIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5LiBJbiBubyBldmVudCBhbmQgdW5kZXIgbm8gbGVnYWwgdGhlb3J5LAorICAgICAgd2hldGhlciBpbiB0b3J0IChpbmNsdWRpbmcgbmVnbGlnZW5jZSksIGNvbnRyYWN0LCBvciBvdGhlcndpc2UsCisgICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQorICAgICAgbmVnbGlnZW50IGFjdHMpIG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzaGFsbCBhbnkgQ29udHJpYnV0b3IgYmUKKyAgICAgIGxpYWJsZSB0byBZb3UgZm9yIGRhbWFnZXMsIGluY2x1ZGluZyBhbnkgZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwKKyAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQorICAgICAgcmVzdWx0IG9mIHRoaXMgTGljZW5zZSBvciBvdXQgb2YgdGhlIHVzZSBvciBpbmFiaWxpdHkgdG8gdXNlIHRoZQorICAgICAgV29yayAoaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBkYW1hZ2VzIGZvciBsb3NzIG9mIGdvb2R3aWxsLAorICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKKyAgICAgIG90aGVyIGNvbW1lcmNpYWwgZGFtYWdlcyBvciBsb3NzZXMpLCBldmVuIGlmIHN1Y2ggQ29udHJpYnV0b3IKKyAgICAgIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHN1Y2ggZGFtYWdlcy4KKworICAgOS4gQWNjZXB0aW5nIFdhcnJhbnR5IG9yIEFkZGl0aW9uYWwgTGlhYmlsaXR5LiBXaGlsZSByZWRpc3RyaWJ1dGluZworICAgICAgdGhlIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLCBZb3UgbWF5IGNob29zZSB0byBvZmZlciwKKyAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCisgICAgICBvciBvdGhlciBsaWFiaWxpdHkgb2JsaWdhdGlvbnMgYW5kL29yIHJpZ2h0cyBjb25zaXN0ZW50IHdpdGggdGhpcworICAgICAgTGljZW5zZS4gSG93ZXZlciwgaW4gYWNjZXB0aW5nIHN1Y2ggb2JsaWdhdGlvbnMsIFlvdSBtYXkgYWN0IG9ubHkKKyAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCisgICAgICBvZiBhbnkgb3RoZXIgQ29udHJpYnV0b3IsIGFuZCBvbmx5IGlmIFlvdSBhZ3JlZSB0byBpbmRlbW5pZnksCisgICAgICBkZWZlbmQsIGFuZCBob2xkIGVhY2ggQ29udHJpYnV0b3IgaGFybWxlc3MgZm9yIGFueSBsaWFiaWxpdHkKKyAgICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRvciBieSByZWFzb24KKyAgICAgIG9mIHlvdXIgYWNjZXB0aW5nIGFueSBzdWNoIHdhcnJhbnR5IG9yIGFkZGl0aW9uYWwgbGlhYmlsaXR5LgorCisgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKKworICAgQVBQRU5ESVg6IEhvdyB0byBhcHBseSB0aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91ciB3b3JrLgorCisgICAgICBUbyBhcHBseSB0aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91ciB3b3JrLCBhdHRhY2ggdGhlIGZvbGxvd2luZworICAgICAgYm9pbGVycGxhdGUgbm90aWNlLCB3aXRoIHRoZSBmaWVsZHMgZW5jbG9zZWQgYnkgYnJhY2tldHMgIltdIgorICAgICAgcmVwbGFjZWQgd2l0aCB5b3VyIG93biBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4gKERvbid0IGluY2x1ZGUKKyAgICAgIHRoZSBicmFja2V0cyEpICBUaGUgdGV4dCBzaG91bGQgYmUgZW5jbG9zZWQgaW4gdGhlIGFwcHJvcHJpYXRlCisgICAgICBjb21tZW50IHN5bnRheCBmb3IgdGhlIGZpbGUgZm9ybWF0LiBXZSBhbHNvIHJlY29tbWVuZCB0aGF0IGEKKyAgICAgIGZpbGUgb3IgY2xhc3MgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgcHVycG9zZSBiZSBpbmNsdWRlZCBvbiB0aGUKKyAgICAgIHNhbWUgInByaW50ZWQgcGFnZSIgYXMgdGhlIGNvcHlyaWdodCBub3RpY2UgZm9yIGVhc2llcgorICAgICAgaWRlbnRpZmljYXRpb24gd2l0aGluIHRoaXJkLXBhcnR5IGFyY2hpdmVzLgorCisgICBDb3B5cmlnaHQgW3l5eXldIFtuYW1lIG9mIGNvcHlyaWdodCBvd25lcl0KKworICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KZGlmZiAtLWdpdCBhL2xpYnMveGVyY2VzSW1wbC5OT1RJQ0UudHh0IGIvbGlicy94ZXJjZXNJbXBsLk5PVElDRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdkYzE0YwotLS0gL2Rldi9udWxsCisrKyBiL2xpYnMveGVyY2VzSW1wbC5OT1RJQ0UudHh0CkBAIC0wLDAgKzEsMTQgQEAKKyAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgID09ICBOT1RJQ0UgZmlsZSBjb3JyZXNwb25kaW5nIHRvIHNlY3Rpb24gNChkKSBvZiB0aGUgQXBhY2hlIExpY2Vuc2UsICAgPT0KKyAgID09ICBWZXJzaW9uIDIuMCwgaW4gdGhpcyBjYXNlIGZvciB0aGUgQXBhY2hlIFhlcmNlcyBkaXN0cmlidXRpb24uICAgICAgPT0KKyAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieQorICAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChodHRwOi8vd3d3LmFwYWNoZS5vcmcvKS4KKworICAgUG9ydGlvbnMgb2YgdGhpcyBzb2Z0d2FyZSB3ZXJlIG9yaWdpbmFsbHkgYmFzZWQgb24gdGhlIGZvbGxvd2luZzoKKyAgICAgLSBzb2Z0d2FyZSBjb3B5cmlnaHQgKGMpIDE5OTksIElCTSBDb3Jwb3JhdGlvbi4sIGh0dHA6Ly93d3cuaWJtLmNvbS4KKyAgICAgLSBzb2Z0d2FyZSBjb3B5cmlnaHQgKGMpIDE5OTksIFN1biBNaWNyb3N5c3RlbXMuLCBodHRwOi8vd3d3LnN1bi5jb20uCisgICAgIC0gdm9sdW50YXJ5IGNvbnRyaWJ1dGlvbnMgbWFkZSBieSBQYXVsIEVuZyBvbiBiZWhhbGYgb2YgdGhlIAorICAgICAgIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIHRoYXQgd2VyZSBvcmlnaW5hbGx5IGRldmVsb3BlZCBhdCBpQ2xpY2ssIEluYy4sCisgICAgICAgc29mdHdhcmUgY29weXJpZ2h0IChjKSAxOTk5LgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2xpYnMveGVyY2VzSW1wbC5qYXIgYi9saWJzL3hlcmNlc0ltcGwuamFyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhYzc1YWUKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL3hlcmNlc0ltcGwuamFyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2xpYnMveG1sLWFwaXMuTElDRU5TRS50eHQgYi9saWJzL3htbC1hcGlzLkxJQ0VOU0UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2MWVlYjkKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL3htbC1hcGlzLkxJQ0VOU0UudHh0CkBAIC0wLDAgKzEsMjAxIEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcGFjaGUgTGljZW5zZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNAorICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzLworCisgICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04KKworICAgMS4gRGVmaW5pdGlvbnMuCisKKyAgICAgICJMaWNlbnNlIiBzaGFsbCBtZWFuIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgdXNlLCByZXByb2R1Y3Rpb24sCisgICAgICBhbmQgZGlzdHJpYnV0aW9uIGFzIGRlZmluZWQgYnkgU2VjdGlvbnMgMSB0aHJvdWdoIDkgb2YgdGhpcyBkb2N1bWVudC4KKworICAgICAgIkxpY2Vuc29yIiBzaGFsbCBtZWFuIHRoZSBjb3B5cmlnaHQgb3duZXIgb3IgZW50aXR5IGF1dGhvcml6ZWQgYnkKKyAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIgdGhhdCBpcyBncmFudGluZyB0aGUgTGljZW5zZS4KKworICAgICAgIkxlZ2FsIEVudGl0eSIgc2hhbGwgbWVhbiB0aGUgdW5pb24gb2YgdGhlIGFjdGluZyBlbnRpdHkgYW5kIGFsbAorICAgICAgb3RoZXIgZW50aXRpZXMgdGhhdCBjb250cm9sLCBhcmUgY29udHJvbGxlZCBieSwgb3IgYXJlIHVuZGVyIGNvbW1vbgorICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKKyAgICAgICJjb250cm9sIiBtZWFucyAoaSkgdGhlIHBvd2VyLCBkaXJlY3Qgb3IgaW5kaXJlY3QsIHRvIGNhdXNlIHRoZQorICAgICAgZGlyZWN0aW9uIG9yIG1hbmFnZW1lbnQgb2Ygc3VjaCBlbnRpdHksIHdoZXRoZXIgYnkgY29udHJhY3Qgb3IKKyAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQorICAgICAgb3V0c3RhbmRpbmcgc2hhcmVzLCBvciAoaWlpKSBiZW5lZmljaWFsIG93bmVyc2hpcCBvZiBzdWNoIGVudGl0eS4KKworICAgICAgIllvdSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQorICAgICAgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5IHRoaXMgTGljZW5zZS4KKworICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMsCisgICAgICBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHNvZnR3YXJlIHNvdXJjZSBjb2RlLCBkb2N1bWVudGF0aW9uCisgICAgICBzb3VyY2UsIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzLgorCisgICAgICAiT2JqZWN0IiBmb3JtIHNoYWxsIG1lYW4gYW55IGZvcm0gcmVzdWx0aW5nIGZyb20gbWVjaGFuaWNhbAorICAgICAgdHJhbnNmb3JtYXRpb24gb3IgdHJhbnNsYXRpb24gb2YgYSBTb3VyY2UgZm9ybSwgaW5jbHVkaW5nIGJ1dAorICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAorICAgICAgYW5kIGNvbnZlcnNpb25zIHRvIG90aGVyIG1lZGlhIHR5cGVzLgorCisgICAgICAiV29yayIgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgorICAgICAgT2JqZWN0IGZvcm0sIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSBMaWNlbnNlLCBhcyBpbmRpY2F0ZWQgYnkgYQorICAgICAgY29weXJpZ2h0IG5vdGljZSB0aGF0IGlzIGluY2x1ZGVkIGluIG9yIGF0dGFjaGVkIHRvIHRoZSB3b3JrCisgICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLgorCisgICAgICAiRGVyaXZhdGl2ZSBXb3JrcyIgc2hhbGwgbWVhbiBhbnkgd29yaywgd2hldGhlciBpbiBTb3VyY2Ugb3IgT2JqZWN0CisgICAgICBmb3JtLCB0aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhlCisgICAgICBlZGl0b3JpYWwgcmV2aXNpb25zLCBhbm5vdGF0aW9ucywgZWxhYm9yYXRpb25zLCBvciBvdGhlciBtb2RpZmljYXRpb25zCisgICAgICByZXByZXNlbnQsIGFzIGEgd2hvbGUsIGFuIG9yaWdpbmFsIHdvcmsgb2YgYXV0aG9yc2hpcC4gRm9yIHRoZSBwdXJwb3NlcworICAgICAgb2YgdGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluCisgICAgICBzZXBhcmFibGUgZnJvbSwgb3IgbWVyZWx5IGxpbmsgKG9yIGJpbmQgYnkgbmFtZSkgdG8gdGhlIGludGVyZmFjZXMgb2YsCisgICAgICB0aGUgV29yayBhbmQgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLgorCisgICAgICAiQ29udHJpYnV0aW9uIiBzaGFsbCBtZWFuIGFueSB3b3JrIG9mIGF1dGhvcnNoaXAsIGluY2x1ZGluZworICAgICAgdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlIFdvcmsgYW5kIGFueSBtb2RpZmljYXRpb25zIG9yIGFkZGl0aW9ucworICAgICAgdG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25hbGx5CisgICAgICBzdWJtaXR0ZWQgdG8gTGljZW5zb3IgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yayBieSB0aGUgY29weXJpZ2h0IG93bmVyCisgICAgICBvciBieSBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eSBhdXRob3JpemVkIHRvIHN1Ym1pdCBvbiBiZWhhbGYgb2YKKyAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3VibWl0dGVkIgorICAgICAgbWVhbnMgYW55IGZvcm0gb2YgZWxlY3Ryb25pYywgdmVyYmFsLCBvciB3cml0dGVuIGNvbW11bmljYXRpb24gc2VudAorICAgICAgdG8gdGhlIExpY2Vuc29yIG9yIGl0cyByZXByZXNlbnRhdGl2ZXMsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8KKyAgICAgIGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsCisgICAgICBhbmQgaXNzdWUgdHJhY2tpbmcgc3lzdGVtcyB0aGF0IGFyZSBtYW5hZ2VkIGJ5LCBvciBvbiBiZWhhbGYgb2YsIHRoZQorICAgICAgTGljZW5zb3IgZm9yIHRoZSBwdXJwb3NlIG9mIGRpc2N1c3NpbmcgYW5kIGltcHJvdmluZyB0aGUgV29yaywgYnV0CisgICAgICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQorICAgICAgZGVzaWduYXRlZCBpbiB3cml0aW5nIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIgYXMgIk5vdCBhIENvbnRyaWJ1dGlvbi4iCisKKyAgICAgICJDb250cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CisgICAgICBvbiBiZWhhbGYgb2Ygd2hvbSBhIENvbnRyaWJ1dGlvbiBoYXMgYmVlbiByZWNlaXZlZCBieSBMaWNlbnNvciBhbmQKKyAgICAgIHN1YnNlcXVlbnRseSBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrLgorCisgICAyLiBHcmFudCBvZiBDb3B5cmlnaHQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIHRvIFlvdSBhIHBlcnBldHVhbCwKKyAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCisgICAgICBjb3B5cmlnaHQgbGljZW5zZSB0byByZXByb2R1Y2UsIHByZXBhcmUgRGVyaXZhdGl2ZSBXb3JrcyBvZiwKKyAgICAgIHB1YmxpY2x5IGRpc3BsYXksIHB1YmxpY2x5IHBlcmZvcm0sIHN1YmxpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHRoZQorICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4KKworICAgMy4gR3JhbnQgb2YgUGF0ZW50IExpY2Vuc2UuIFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCisgICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZQorICAgICAgKGV4Y2VwdCBhcyBzdGF0ZWQgaW4gdGhpcyBzZWN0aW9uKSBwYXRlbnQgbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUsCisgICAgICB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKKyAgICAgIHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlCisgICAgICBieSBzdWNoIENvbnRyaWJ1dG9yIHRoYXQgYXJlIG5lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGVpcgorICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQorICAgICAgd2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNoIENvbnRyaWJ1dGlvbihzKSB3YXMgc3VibWl0dGVkLiBJZiBZb3UKKyAgICAgIGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgKGluY2x1ZGluZyBhCisgICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBXb3JrCisgICAgICBvciBhIENvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzIGRpcmVjdAorICAgICAgb3IgY29udHJpYnV0b3J5IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcworICAgICAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlCisgICAgICBhcyBvZiB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuCisKKyAgIDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlCisgICAgICBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiBpbiBhbnkgbWVkaXVtLCB3aXRoIG9yIHdpdGhvdXQKKyAgICAgIG1vZGlmaWNhdGlvbnMsIGFuZCBpbiBTb3VyY2Ugb3IgT2JqZWN0IGZvcm0sIHByb3ZpZGVkIHRoYXQgWW91CisgICAgICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworICAgICAgKGEpIFlvdSBtdXN0IGdpdmUgYW55IG90aGVyIHJlY2lwaWVudHMgb2YgdGhlIFdvcmsgb3IKKyAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExpY2Vuc2U7IGFuZAorCisgICAgICAoYikgWW91IG11c3QgY2F1c2UgYW55IG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCisgICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kCisKKyAgICAgIChjKSBZb3UgbXVzdCByZXRhaW4sIGluIHRoZSBTb3VyY2UgZm9ybSBvZiBhbnkgRGVyaXZhdGl2ZSBXb3JrcworICAgICAgICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBhbmQKKyAgICAgICAgICBhdHRyaWJ1dGlvbiBub3RpY2VzIGZyb20gdGhlIFNvdXJjZSBmb3JtIG9mIHRoZSBXb3JrLAorICAgICAgICAgIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90IHBlcnRhaW4gdG8gYW55IHBhcnQgb2YKKyAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3JrczsgYW5kCisKKyAgICAgIChkKSBJZiB0aGUgV29yayBpbmNsdWRlcyBhICJOT1RJQ0UiIHRleHQgZmlsZSBhcyBwYXJ0IG9mIGl0cworICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKKyAgICAgICAgICBpbmNsdWRlIGEgcmVhZGFibGUgY29weSBvZiB0aGUgYXR0cmlidXRpb24gbm90aWNlcyBjb250YWluZWQKKyAgICAgICAgICB3aXRoaW4gc3VjaCBOT1RJQ0UgZmlsZSwgZXhjbHVkaW5nIHRob3NlIG5vdGljZXMgdGhhdCBkbyBub3QKKyAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKKyAgICAgICAgICBvZiB0aGUgZm9sbG93aW5nIHBsYWNlczogd2l0aGluIGEgTk9USUNFIHRleHQgZmlsZSBkaXN0cmlidXRlZAorICAgICAgICAgIGFzIHBhcnQgb2YgdGhlIERlcml2YXRpdmUgV29ya3M7IHdpdGhpbiB0aGUgU291cmNlIGZvcm0gb3IKKyAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwKKyAgICAgICAgICB3aXRoaW4gYSBkaXNwbGF5IGdlbmVyYXRlZCBieSB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaWYgYW5kCisgICAgICAgICAgd2hlcmV2ZXIgc3VjaCB0aGlyZC1wYXJ0eSBub3RpY2VzIG5vcm1hbGx5IGFwcGVhci4gVGhlIGNvbnRlbnRzCisgICAgICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZAorICAgICAgICAgIGRvIG5vdCBtb2RpZnkgdGhlIExpY2Vuc2UuIFlvdSBtYXkgYWRkIFlvdXIgb3duIGF0dHJpYnV0aW9uCisgICAgICAgICAgbm90aWNlcyB3aXRoaW4gRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlLCBhbG9uZ3NpZGUKKyAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKKyAgICAgICAgICB0aGF0IHN1Y2ggYWRkaXRpb25hbCBhdHRyaWJ1dGlvbiBub3RpY2VzIGNhbm5vdCBiZSBjb25zdHJ1ZWQKKyAgICAgICAgICBhcyBtb2RpZnlpbmcgdGhlIExpY2Vuc2UuCisKKyAgICAgIFlvdSBtYXkgYWRkIFlvdXIgb3duIGNvcHlyaWdodCBzdGF0ZW1lbnQgdG8gWW91ciBtb2RpZmljYXRpb25zIGFuZAorICAgICAgbWF5IHByb3ZpZGUgYWRkaXRpb25hbCBvciBkaWZmZXJlbnQgbGljZW5zZSB0ZXJtcyBhbmQgY29uZGl0aW9ucworICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgorICAgICAgZm9yIGFueSBzdWNoIERlcml2YXRpdmUgV29ya3MgYXMgYSB3aG9sZSwgcHJvdmlkZWQgWW91ciB1c2UsCisgICAgICByZXByb2R1Y3Rpb24sIGFuZCBkaXN0cmlidXRpb24gb2YgdGhlIFdvcmsgb3RoZXJ3aXNlIGNvbXBsaWVzIHdpdGgKKyAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCisKKyAgIDUuIFN1Ym1pc3Npb24gb2YgQ29udHJpYnV0aW9ucy4gVW5sZXNzIFlvdSBleHBsaWNpdGx5IHN0YXRlIG90aGVyd2lzZSwKKyAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yaworICAgICAgYnkgWW91IHRvIHRoZSBMaWNlbnNvciBzaGFsbCBiZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwgd2l0aG91dCBhbnkgYWRkaXRpb25hbCB0ZXJtcyBvciBjb25kaXRpb25zLgorICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlmeQorICAgICAgdGhlIHRlcm1zIG9mIGFueSBzZXBhcmF0ZSBsaWNlbnNlIGFncmVlbWVudCB5b3UgbWF5IGhhdmUgZXhlY3V0ZWQKKyAgICAgIHdpdGggTGljZW5zb3IgcmVnYXJkaW5nIHN1Y2ggQ29udHJpYnV0aW9ucy4KKworICAgNi4gVHJhZGVtYXJrcy4gVGhpcyBMaWNlbnNlIGRvZXMgbm90IGdyYW50IHBlcm1pc3Npb24gdG8gdXNlIHRoZSB0cmFkZQorICAgICAgbmFtZXMsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3MsIG9yIHByb2R1Y3QgbmFtZXMgb2YgdGhlIExpY2Vuc29yLAorICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCisgICAgICBvcmlnaW4gb2YgdGhlIFdvcmsgYW5kIHJlcHJvZHVjaW5nIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4KKworICAgNy4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yCisgICAgICBhZ3JlZWQgdG8gaW4gd3JpdGluZywgTGljZW5zb3IgcHJvdmlkZXMgdGhlIFdvcmsgKGFuZCBlYWNoCisgICAgICBDb250cmlidXRvciBwcm92aWRlcyBpdHMgQ29udHJpYnV0aW9ucykgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgorICAgICAgaW1wbGllZCwgaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIGFueSB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMKKyAgICAgIG9mIFRJVExFLCBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFksIG9yIEZJVE5FU1MgRk9SIEEKKyAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQorICAgICAgYXBwcm9wcmlhdGVuZXNzIG9mIHVzaW5nIG9yIHJlZGlzdHJpYnV0aW5nIHRoZSBXb3JrIGFuZCBhc3N1bWUgYW55CisgICAgICByaXNrcyBhc3NvY2lhdGVkIHdpdGggWW91ciBleGVyY2lzZSBvZiBwZXJtaXNzaW9ucyB1bmRlciB0aGlzIExpY2Vuc2UuCisKKyAgIDguIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5LiBJbiBubyBldmVudCBhbmQgdW5kZXIgbm8gbGVnYWwgdGhlb3J5LAorICAgICAgd2hldGhlciBpbiB0b3J0IChpbmNsdWRpbmcgbmVnbGlnZW5jZSksIGNvbnRyYWN0LCBvciBvdGhlcndpc2UsCisgICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQorICAgICAgbmVnbGlnZW50IGFjdHMpIG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzaGFsbCBhbnkgQ29udHJpYnV0b3IgYmUKKyAgICAgIGxpYWJsZSB0byBZb3UgZm9yIGRhbWFnZXMsIGluY2x1ZGluZyBhbnkgZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwKKyAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQorICAgICAgcmVzdWx0IG9mIHRoaXMgTGljZW5zZSBvciBvdXQgb2YgdGhlIHVzZSBvciBpbmFiaWxpdHkgdG8gdXNlIHRoZQorICAgICAgV29yayAoaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBkYW1hZ2VzIGZvciBsb3NzIG9mIGdvb2R3aWxsLAorICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKKyAgICAgIG90aGVyIGNvbW1lcmNpYWwgZGFtYWdlcyBvciBsb3NzZXMpLCBldmVuIGlmIHN1Y2ggQ29udHJpYnV0b3IKKyAgICAgIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHN1Y2ggZGFtYWdlcy4KKworICAgOS4gQWNjZXB0aW5nIFdhcnJhbnR5IG9yIEFkZGl0aW9uYWwgTGlhYmlsaXR5LiBXaGlsZSByZWRpc3RyaWJ1dGluZworICAgICAgdGhlIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLCBZb3UgbWF5IGNob29zZSB0byBvZmZlciwKKyAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCisgICAgICBvciBvdGhlciBsaWFiaWxpdHkgb2JsaWdhdGlvbnMgYW5kL29yIHJpZ2h0cyBjb25zaXN0ZW50IHdpdGggdGhpcworICAgICAgTGljZW5zZS4gSG93ZXZlciwgaW4gYWNjZXB0aW5nIHN1Y2ggb2JsaWdhdGlvbnMsIFlvdSBtYXkgYWN0IG9ubHkKKyAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCisgICAgICBvZiBhbnkgb3RoZXIgQ29udHJpYnV0b3IsIGFuZCBvbmx5IGlmIFlvdSBhZ3JlZSB0byBpbmRlbW5pZnksCisgICAgICBkZWZlbmQsIGFuZCBob2xkIGVhY2ggQ29udHJpYnV0b3IgaGFybWxlc3MgZm9yIGFueSBsaWFiaWxpdHkKKyAgICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRvciBieSByZWFzb24KKyAgICAgIG9mIHlvdXIgYWNjZXB0aW5nIGFueSBzdWNoIHdhcnJhbnR5IG9yIGFkZGl0aW9uYWwgbGlhYmlsaXR5LgorCisgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKKworICAgQVBQRU5ESVg6IEhvdyB0byBhcHBseSB0aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91ciB3b3JrLgorCisgICAgICBUbyBhcHBseSB0aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91ciB3b3JrLCBhdHRhY2ggdGhlIGZvbGxvd2luZworICAgICAgYm9pbGVycGxhdGUgbm90aWNlLCB3aXRoIHRoZSBmaWVsZHMgZW5jbG9zZWQgYnkgYnJhY2tldHMgIltdIgorICAgICAgcmVwbGFjZWQgd2l0aCB5b3VyIG93biBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4gKERvbid0IGluY2x1ZGUKKyAgICAgIHRoZSBicmFja2V0cyEpICBUaGUgdGV4dCBzaG91bGQgYmUgZW5jbG9zZWQgaW4gdGhlIGFwcHJvcHJpYXRlCisgICAgICBjb21tZW50IHN5bnRheCBmb3IgdGhlIGZpbGUgZm9ybWF0LiBXZSBhbHNvIHJlY29tbWVuZCB0aGF0IGEKKyAgICAgIGZpbGUgb3IgY2xhc3MgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgcHVycG9zZSBiZSBpbmNsdWRlZCBvbiB0aGUKKyAgICAgIHNhbWUgInByaW50ZWQgcGFnZSIgYXMgdGhlIGNvcHlyaWdodCBub3RpY2UgZm9yIGVhc2llcgorICAgICAgaWRlbnRpZmljYXRpb24gd2l0aGluIHRoaXJkLXBhcnR5IGFyY2hpdmVzLgorCisgICBDb3B5cmlnaHQgW3l5eXldIFtuYW1lIG9mIGNvcHlyaWdodCBvd25lcl0KKworICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KZGlmZiAtLWdpdCBhL2xpYnMveG1sLWFwaXMuTk9USUNFLnR4dCBiL2xpYnMveG1sLWFwaXMuTk9USUNFLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDY5NGU1Ci0tLSAvZGV2L251bGwKKysrIGIvbGlicy94bWwtYXBpcy5OT1RJQ0UudHh0CkBAIC0wLDAgKzEsMTMgQEAKKyAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgID09ICBOT1RJQ0UgZmlsZSBjb3JyZXNwb25kaW5nIHRvIHNlY3Rpb24gNChkKSBvZiB0aGUgQXBhY2hlIExpY2Vuc2UsICAgPT0KKyAgID09ICBWZXJzaW9uIDIuMCwgaW4gdGhpcyBjYXNlIGZvciB0aGUgQXBhY2hlIHhtbC1jb21tb25zIHhtbC1hcGlzICAgICAgPT0KKyAgID09ICBkaXN0cmlidXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0KKyAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gCisgICAoaHR0cDovL3d3dy5hcGFjaGUub3JnLykuCisKKyAgIFBvcnRpb25zIG9mIHRoaXMgc29mdHdhcmUgd2VyZSBvcmlnaW5hbGx5IGJhc2VkIG9uIHRoZSBmb2xsb3dpbmc6CisgICAgIC0gc29mdHdhcmUgY29weXJpZ2h0IChjKSAxOTk5LCBJQk0gQ29ycG9yYXRpb24uLCBodHRwOi8vd3d3LmlibS5jb20uCisgICAgIC0gc29mdHdhcmUgY29weXJpZ2h0IChjKSAxOTk5LCBTdW4gTWljcm9zeXN0ZW1zLiwgaHR0cDovL3d3dy5zdW4uY29tLgorICAgICAtIHNvZnR3YXJlIGNvcHlyaWdodCAoYykgMjAwMCBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCBodHRwOi8vd3d3LnczLm9yZwpkaWZmIC0tZ2l0IGEvbGlicy94bWwtYXBpcy5qYXIgYi9saWJzL3htbC1hcGlzLmphcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDNlYWVhCi0tLSAvZGV2L251bGwKKysrIGIvbGlicy94bWwtYXBpcy5qYXIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9tLnhtbCBiL3BvbS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODIyMjc3MgotLS0gL2Rldi9udWxsCisrKyBiL3BvbS54bWwKQEAgLTAsMCArMSwyNzYgQEAKKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKzxwcm9qZWN0IHhtbG5zPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAiCisgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKKyAgICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCBodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9tYXZlbi12NF8wXzAueHNkIj4KKyAgICA8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+CisgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5zYW50dWFyaW88L2dyb3VwSWQ+CisgICAgPGFydGlmYWN0SWQ+eG1sc2VjPC9hcnRpZmFjdElkPgorICAgIDxwYWNrYWdpbmc+YnVuZGxlPC9wYWNrYWdpbmc+CisgICAgPG5hbWU+WE1MIFNlY3VyaXR5PC9uYW1lPgorICAgIDx2ZXJzaW9uPjEuNC40LVNOQVBTSE9UPC92ZXJzaW9uPgorICAgIDxkZXNjcmlwdGlvbj4KKyAgICAgICAgQXBhY2hlIFhNTCBTZWN1cml0eSBzdXBwb3J0cyBYTUwtU2lnbmF0dXJlIFN5bnRheCBhbmQgUHJvY2Vzc2luZywKKyAgICAgICAgVzNDIFJlY29tbWVuZGF0aW9uIDEyIEZlYnJ1YXJ5IDIwMDIsIGFuZCBYTUwgRW5jcnlwdGlvbiBTeW50YXggYW5kCisgICAgICAgIFByb2Nlc3NpbmcsIFczQyBSZWNvbW1lbmRhdGlvbiAxMCBEZWNlbWJlciAyMDAyLiBBcyBvZiB2ZXJzaW9uIDEuNCwKKyAgICAgICAgdGhlIEphdmEgbGlicmFyeSBzdXBwb3J0cyB0aGUgc3RhbmRhcmQgSmF2YSBBUEkgSlNSLTEwNTogWE1MIERpZ2l0YWwKKyAgICAgICAgU2lnbmF0dXJlIEFQSXMuCisgICAgPC9kZXNjcmlwdGlvbj4KKyAgICA8dXJsPmh0dHA6Ly9zYW50dWFyaW8uYXBhY2hlLm9yZy88L3VybD4KKyAgICA8aXNzdWVNYW5hZ2VtZW50PgorICAgICAgICA8c3lzdGVtPkJ1Z3ppbGxhPC9zeXN0ZW0+CisgICAgICAgIDx1cmw+aHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2J1Z3ppbGxhPC91cmw+CisgICAgPC9pc3N1ZU1hbmFnZW1lbnQ+CisgICAgPG1haWxpbmdMaXN0cz4KKyAgICAgICAgPG1haWxpbmdMaXN0PgorICAgICAgICAgICAgPG5hbWU+WE1MIFNlY3VyaXR5IERldmVsb3BlciBMaXN0PC9uYW1lPgorICAgICAgICAgICAgPHN1YnNjcmliZT5zZWN1cml0eS1kZXYtc3Vic2NyaWJlQHhtbC5hcGFjaGUub3JnPC9zdWJzY3JpYmU+CisgICAgICAgICAgICA8dW5zdWJzY3JpYmU+CisgICAgICAgICAgICAgICAgc2VjdXJpdHktZGV2LXVuc3Vic2NyaWJlQHhtbC5hcGFjaGUub3JnCisgICAgICAgICAgICA8L3Vuc3Vic2NyaWJlPgorICAgICAgICAgICAgPHBvc3Q+c2VjdXJpdHktZGV2QHhtbC5hcGFjaGUub3JnPC9wb3N0PgorICAgICAgICAgICAgPGFyY2hpdmU+CisgICAgICAgICAgICAgICAgaHR0cDovL25ld3MuZ21hbmUub3JnL3RocmVhZC5waHA/Z3JvdXA9Z21hbmUudGV4dC54bWwuc2VjdXJpdHkuZGV2ZWwgCisgICAgICAgICAgICA8L2FyY2hpdmU+CisgICAgICAgIDwvbWFpbGluZ0xpc3Q+CisgICAgPC9tYWlsaW5nTGlzdHM+CisgICAgPGluY2VwdGlvblllYXI+MjAwMDwvaW5jZXB0aW9uWWVhcj4KKyAgICA8IS0tIHdobyB0aGUgZGV2ZWxvcGVycyBhcmUgZm9yIHRoZSBwcm9qZWN0IC0tPgorICAgIDxkZXZlbG9wZXJzPgorICAgICAgICA8ZGV2ZWxvcGVyPgorICAgICAgICAgICAgPG5hbWU+U2VhbiBNdWxsYW48L25hbWU+CisgICAgICAgICAgICA8ZW1haWw+c2Vhbi5tdWxsYW5Ac3VuLmNvbTwvZW1haWw+CisgICAgICAgIDwvZGV2ZWxvcGVyPgorICAgICAgICA8ZGV2ZWxvcGVyPgorICAgICAgICAgICAgPG5hbWU+QmVyaW4gTGF1dGVuYmFjaDwvbmFtZT4KKyAgICAgICAgICAgIDxlbWFpbD5iZXJpbkBvemVtYWlsLmNvbS5hdTwvZW1haWw+CisgICAgICAgIDwvZGV2ZWxvcGVyPgorICAgICAgICA8ZGV2ZWxvcGVyPgorICAgICAgICAgICAgPG5hbWU+QXhsIE1hdHRoZXVzPC9uYW1lPgorICAgICAgICAgICAgPGVtYWlsPmFtYXR0aGV1QGFwYWNoZS5vcmc8L2VtYWlsPgorICAgICAgICA8L2RldmVsb3Blcj4KKyAgICAgICAgPGRldmVsb3Blcj4KKyAgICAgICAgICAgIDxuYW1lPkVyd2luIHZhbiBkZXIgS29vZzwvbmFtZT4KKyAgICAgICAgICAgIDxlbWFpbD5lcndpbkBrb29naC5jb208L2VtYWlsPgorICAgICAgICA8L2RldmVsb3Blcj4KKyAgICAgICAgPGRldmVsb3Blcj4KKyAgICAgICAgICAgIDxuYW1lPlJhdWwgQmVuaXRvIEdhcmNpYTwvbmFtZT4KKyAgICAgICAgICAgIDxlbWFpbD5yYXVsLWluZm9Aci1iZy5jb208L2VtYWlsPgorICAgICAgICA8L2RldmVsb3Blcj4KKyAgICAgICAgPGRldmVsb3Blcj4KKyAgICAgICAgICAgIDxuYW1lPlZpc2hhbCBNYWhhamFuPC9uYW1lPgorICAgICAgICAgICAgPGVtYWlsPnZtYWhhamFuQGFtYmVycG9pbnQuY29tPC9lbWFpbD4KKyAgICAgICAgPC9kZXZlbG9wZXI+CisgICAgICAgIDxkZXZlbG9wZXI+CisgICAgICAgICAgICA8bmFtZT5NaWxhbiBUb21pYzwvbmFtZT4KKyAgICAgICAgICAgIDxlbWFpbD5taWxhbkBzZXRjY2Uub3JnPC9lbWFpbD4KKyAgICAgICAgPC9kZXZlbG9wZXI+CisgICAgICAgIDxkZXZlbG9wZXI+CisgICAgICAgICAgICA8bmFtZT5Db2xtIE8gaEVpZ2VhcnRhaWdoPC9uYW1lPgorICAgICAgICAgICAgPGVtYWlsPmNvaGVpZ2VhQGFwYWNoZS5vcmc8L2VtYWlsPgorICAgICAgICA8L2RldmVsb3Blcj4KKyAgICA8L2RldmVsb3BlcnM+CisgICAgPGxpY2Vuc2VzPgorICAgICAgICA8bGljZW5zZT4KKyAgICAgICAgICAgIDxuYW1lPlRoZSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAyLjA8L25hbWU+CisgICAgICAgICAgICA8dXJsPmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMC50eHQ8L3VybD4KKyAgICAgICAgICAgIDxkaXN0cmlidXRpb24+cmVwbzwvZGlzdHJpYnV0aW9uPgorICAgICAgICA8L2xpY2Vuc2U+CisgICAgPC9saWNlbnNlcz4KKyAgICA8c2NtPgorICAgICAgICA8Y29ubmVjdGlvbj4KKyAgICAgICAgICAgIHNjbTpzdm46aHR0cDovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi94bWwvc2VjdXJpdHkvdHJ1bmsKKyAgICAgICAgPC9jb25uZWN0aW9uPgorICAgICAgICA8ZGV2ZWxvcGVyQ29ubmVjdGlvbj4KKyAgICAgICAgICAgIHNjbTpzdm46aHR0cHM6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2YveG1sL3NlY3VyaXR5L3RydW5rCisgICAgICAgIDwvZGV2ZWxvcGVyQ29ubmVjdGlvbj4KKyAgICAgICAgPHVybD5odHRwOi8vc3ZuLmFwYWNoZS5vcmcvdmlld3ZjL3htbC9zZWN1cml0eS90cnVuazwvdXJsPgorICAgIDwvc2NtPgorICAgIDxvcmdhbml6YXRpb24+CisgICAgICAgIDxuYW1lPlRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbjwvbmFtZT4KKyAgICAgICAgPHVybD5odHRwOi8vd3d3LmFwYWNoZS5vcmcvPC91cmw+CisgICAgPC9vcmdhbml6YXRpb24+CisKKworICAgIDxidWlsZD4KKyAgICAgICAgPHNvdXJjZURpcmVjdG9yeT5zcmM8L3NvdXJjZURpcmVjdG9yeT4KKyAgICAgICAgPHRlc3RTb3VyY2VEaXJlY3Rvcnk+c3JjX3VuaXRUZXN0czwvdGVzdFNvdXJjZURpcmVjdG9yeT4KKyAgICAgICAgPHJlc291cmNlcz4KKyAgICAgICAgICAgIDxyZXNvdXJjZT4KKyAgICAgICAgICAgICAgICA8ZGlyZWN0b3J5PnNyYzwvZGlyZWN0b3J5PgorICAgICAgICAgICAgICAgIDxpbmNsdWRlcz4KKyAgICAgICAgICAgICAgICAgICAgPGluY2x1ZGU+b3JnLyoqLyoucHJvcGVydGllczwvaW5jbHVkZT4KKyAgICAgICAgICAgICAgICAgICAgPGluY2x1ZGU+b3JnLyoqLyoueG1sPC9pbmNsdWRlPgorICAgICAgICAgICAgICAgIDwvaW5jbHVkZXM+CisgICAgICAgICAgICAgICAgPGZpbHRlcmluZz5mYWxzZTwvZmlsdGVyaW5nPgorICAgICAgICAgICAgPC9yZXNvdXJjZT4KKyAgICAgICAgPC9yZXNvdXJjZXM+CisgICAgICAgIDx0ZXN0UmVzb3VyY2VzPgorICAgICAgICAgICAgPHRlc3RSZXNvdXJjZT4KKyAgICAgICAgICAgICAgICA8ZGlyZWN0b3J5PnNyY191bml0VGVzdHM8L2RpcmVjdG9yeT4KKyAgICAgICAgICAgICAgICA8aW5jbHVkZXM+CisgICAgICAgICAgICAgICAgICAgIDxpbmNsdWRlPm9yZy8qKi8qLnppcDwvaW5jbHVkZT4KKyAgICAgICAgICAgICAgICA8L2luY2x1ZGVzPgorICAgICAgICAgICAgPC90ZXN0UmVzb3VyY2U+CisgICAgICAgIDwvdGVzdFJlc291cmNlcz4KKworICAgICAgICA8cGx1Z2lucz4KKyAgICAgICAgICAgIDxwbHVnaW4+CisgICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zPC9ncm91cElkPgorICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLWNvbXBpbGVyLXBsdWdpbjwvYXJ0aWZhY3RJZD4KKyAgICAgICAgICAgICAgICA8Y29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgPHNvdXJjZT4xLjQ8L3NvdXJjZT4KKyAgICAgICAgICAgICAgICAgICAgPHRhcmdldD4xLjQ8L3RhcmdldD4KKyAgICAgICAgICAgICAgICA8L2NvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICA8L3BsdWdpbj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPHBsdWdpbj4KKyAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLmZlbGl4PC9ncm91cElkPgorICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLWJ1bmRsZS1wbHVnaW48L2FydGlmYWN0SWQ+CisgICAgICAgICAgICAgICAgPHZlcnNpb24+MS40LjA8L3ZlcnNpb24+CisgICAgICAgICAgICAgICAgPGV4dGVuc2lvbnM+dHJ1ZTwvZXh0ZW5zaW9ucz4KKyAgICAgICAgICAgICAgICA8Y29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgPGluc3RydWN0aW9ucz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxJbXBsZW1lbnRhdGlvbi1UaXRsZT5BcGFjaGUgWE1MIFNlY3VyaXR5PC9JbXBsZW1lbnRhdGlvbi1UaXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxJbXBsZW1lbnRhdGlvbi1WZW5kb3I+VGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uPC9JbXBsZW1lbnRhdGlvbi1WZW5kb3I+CisgICAgICAgICAgICAgICAgICAgICAgICA8SW1wbGVtZW50YXRpb24tVmVuZG9yLUlkPm9yZy5hcGFjaGU8L0ltcGxlbWVudGF0aW9uLVZlbmRvci1JZD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxJbXBsZW1lbnRhdGlvbi1WZXJzaW9uPiR7cG9tLnZlcnNpb259PC9JbXBsZW1lbnRhdGlvbi1WZXJzaW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgPFNwZWNpZmljYXRpb24tVGl0bGU+QXBhY2hlIFhNTCBTZWN1cml0eTwvU3BlY2lmaWNhdGlvbi1UaXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxTcGVjaWZpY2F0aW9uLVZlbmRvcj5UaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb248L1NwZWNpZmljYXRpb24tVmVuZG9yPgorICAgICAgICAgICAgICAgICAgICAgICAgPFNwZWNpZmljYXRpb24tVmVyc2lvbj4ke3BvbS52ZXJzaW9ufTwvU3BlY2lmaWNhdGlvbi1WZXJzaW9uPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8RXhwb3J0LVBhY2thZ2U+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS4qLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YXgueG1sLmNyeXB0by4qLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC4qLAorICAgICAgICAgICAgICAgICAgICAgICAgPC9FeHBvcnQtUGFja2FnZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxJbXBvcnQtUGFja2FnZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS4qLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIW9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICo7cmVzb2x1dGlvbjo9b3B0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvSW1wb3J0LVBhY2thZ2U+CisgICAgICAgICAgICAgICAgICAgICAgICA8RHluYW1pY0ltcG9ydC1QYWNrYWdlPio8L0R5bmFtaWNJbXBvcnQtUGFja2FnZT4KKyAgICAgICAgICAgICAgICAgICAgPC9pbnN0cnVjdGlvbnM+CisgICAgICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPgorICAgICAgICAgICAgPC9wbHVnaW4+CisgICAgICAgIDwvcGx1Z2lucz4KKworICAgICAgICA8cGx1Z2luTWFuYWdlbWVudD4KKyAgICAgICAgICAgIDxwbHVnaW5zPgorICAgICAgICAgICAgICAgIDxwbHVnaW4+CisgICAgICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUubWF2ZW4ucGx1Z2luczwvZ3JvdXBJZD4KKyAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+bWF2ZW4tc291cmNlLXBsdWdpbjwvYXJ0aWZhY3RJZD4KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+Mi4wLjQ8L3ZlcnNpb24+CisgICAgICAgICAgICAgICAgICAgIDxleGVjdXRpb25zPgorICAgICAgICAgICAgICAgICAgICAgICAgPGV4ZWN1dGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbHM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnb2FsPmphcjwvZ29hbD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dvYWxzPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9leGVjdXRpb24+CisgICAgICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9ucz4KKyAgICAgICAgICAgICAgICAgICAgPGNvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICA8YXR0YWNoPnRydWU8L2F0dGFjaD4KKyAgICAgICAgICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgIDwvcGx1Z2luPgorCisgICAgICAgICAgICAgICAgPHBsdWdpbj4KKyAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zPC9ncm91cElkPgorICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1zdXJlZmlyZS1wbHVnaW48L2FydGlmYWN0SWQ+CisgICAgICAgICAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgPHJlcG9ydEZvcm1hdD5icmllZjwvcmVwb3J0Rm9ybWF0PgorICAgICAgICAgICAgICAgICAgICAgICAgPHVzZUZpbGU+ZmFsc2U8L3VzZUZpbGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ya01vZGU+cGVydGVzdDwvZm9ya01vZGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGREZWxlZ2F0aW9uPmZhbHNlPC9jaGlsZERlbGVnYXRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW5jbHVkZXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGluY2x1ZGU+b3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9BbGxUZXN0cy5qYXZhPC9pbmNsdWRlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9pbmNsdWRlcz4KKyAgICAgICAgICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgIDwvcGx1Z2luPgorICAKKyAgICAgICAgICAgIDwvcGx1Z2lucz4KKyAgICAgICAgPC9wbHVnaW5NYW5hZ2VtZW50PgorCisgICAgICAgIDxkZWZhdWx0R29hbD5pbnN0YWxsPC9kZWZhdWx0R29hbD4KKyAgICA8L2J1aWxkPgorCisKKyAgICA8cHJvZmlsZXM+CisgICAgICAgIDxwcm9maWxlPgorICAgICAgICAgICAgPGlkPmpkazE0PC9pZD4KKyAgICAgICAgICAgIDxhY3RpdmF0aW9uPgorICAgICAgICAgICAgICAgIDxhY3RpdmVCeURlZmF1bHQ+dHJ1ZTwvYWN0aXZlQnlEZWZhdWx0PgorICAgICAgICAgICAgICAgIDxqZGs+MS40PC9qZGs+CisgICAgICAgICAgICA8L2FjdGl2YXRpb24+CisgICAgICAgIDwvcHJvZmlsZT4KKyAgICAgICAgPHByb2ZpbGU+CisgICAgICAgICAgICA8aWQ+amRrMTU8L2lkPgorICAgICAgICAgICAgPGFjdGl2YXRpb24+CisgICAgICAgICAgICAgICAgPGpkaz4xLjU8L2pkaz4KKyAgICAgICAgICAgIDwvYWN0aXZhdGlvbj4KKyAgICAgICAgPC9wcm9maWxlPgorICAgICAgICA8cHJvZmlsZT4KKyAgICAgICAgICAgIDxpZD5mYXN0aW5zdGFsbDwvaWQ+CisgICAgICAgICAgICA8cHJvcGVydGllcz4KKyAgICAgICAgICAgICAgICA8bWF2ZW4udGVzdC5za2lwPnRydWU8L21hdmVuLnRlc3Quc2tpcD4KKyAgICAgICAgICAgIDwvcHJvcGVydGllcz4KKyAgICAgICAgPC9wcm9maWxlPgorICAgIDwvcHJvZmlsZXM+CisKKyAgICA8cHJvcGVydGllcz4KKyAgICAgICAgPHhtbC5hcGlzLnZlcnNpb24+MS4zLjAzPC94bWwuYXBpcy52ZXJzaW9uPgorICAgICAgICA8Y29tbW9ucy5sb2dnaW5nLnZlcnNpb24+MS4xPC9jb21tb25zLmxvZ2dpbmcudmVyc2lvbj4KKyAgICAgICAgPHhhbGFuLnZlcnNpb24+Mi43LjE8L3hhbGFuLnZlcnNpb24+CisgICAgICAgIDx4ZXJjZXMudmVyc2lvbj4yLjkuMTwveGVyY2VzLnZlcnNpb24+CisgICAgICAgIDxqdW5pdC52ZXJzaW9uPjMuOC4xPC9qdW5pdC52ZXJzaW9uPgorICAgIDwvcHJvcGVydGllcz4KKyAgICAKKyAgICA8ZGVwZW5kZW5jaWVzPgorICAgICAgICA8ZGVwZW5kZW5jeT4KKyAgICAgICAgICAgIDxncm91cElkPmNvbW1vbnMtbG9nZ2luZzwvZ3JvdXBJZD4KKyAgICAgICAgICAgIDxhcnRpZmFjdElkPmNvbW1vbnMtbG9nZ2luZzwvYXJ0aWZhY3RJZD4KKyAgICAgICAgICAgIDx2ZXJzaW9uPiR7Y29tbW9ucy5sb2dnaW5nLnZlcnNpb259PC92ZXJzaW9uPgorICAgICAgICAgICAgPHNjb3BlPmNvbXBpbGU8L3Njb3BlPgorICAgICAgICA8L2RlcGVuZGVuY3k+CisgICAgICAgIDxkZXBlbmRlbmN5PgorICAgICAgICAgICAgPGdyb3VwSWQ+anVuaXQ8L2dyb3VwSWQ+CisgICAgICAgICAgICA8YXJ0aWZhY3RJZD5qdW5pdDwvYXJ0aWZhY3RJZD4KKyAgICAgICAgICAgIDx2ZXJzaW9uPiR7anVuaXQudmVyc2lvbn08L3ZlcnNpb24+CisgICAgICAgICAgICA8c2NvcGU+dGVzdDwvc2NvcGU+CisgICAgICAgIDwvZGVwZW5kZW5jeT4KKyAgICAgICAgPGRlcGVuZGVuY3k+CisgICAgICAgICAgICA8Z3JvdXBJZD54YWxhbjwvZ3JvdXBJZD4KKyAgICAgICAgICAgIDxhcnRpZmFjdElkPnhhbGFuPC9hcnRpZmFjdElkPgorICAgICAgICAgICAgPHZlcnNpb24+JHt4YWxhbi52ZXJzaW9ufTwvdmVyc2lvbj4KKyAgICAgICAgICAgIDxzY29wZT5wcm92aWRlZDwvc2NvcGU+CisgICAgICAgIDwvZGVwZW5kZW5jeT4KKyAgICAgICAgPGRlcGVuZGVuY3k+CisgICAgICAgICAgICA8Z3JvdXBJZD54ZXJjZXM8L2dyb3VwSWQ+CisgICAgICAgICAgICA8YXJ0aWZhY3RJZD54ZXJjZXNJbXBsPC9hcnRpZmFjdElkPgorICAgICAgICAgICAgPHZlcnNpb24+JHt4ZXJjZXMudmVyc2lvbn08L3ZlcnNpb24+CisgICAgICAgICAgICA8c2NvcGU+cHJvdmlkZWQ8L3Njb3BlPgorICAgICAgICA8L2RlcGVuZGVuY3k+CisgICAgICAgIDxkZXBlbmRlbmN5PgorICAgICAgICAgICAgPGdyb3VwSWQ+eG1sLWFwaXM8L2dyb3VwSWQ+CisgICAgICAgICAgICA8YXJ0aWZhY3RJZD54bWwtYXBpczwvYXJ0aWZhY3RJZD4KKyAgICAgICAgICAgIDx2ZXJzaW9uPiR7eG1sLmFwaXMudmVyc2lvbn08L3ZlcnNpb24+CisgICAgICAgICAgICA8c2NvcGU+cHJvdmlkZWQ8L3Njb3BlPgorICAgICAgICA8L2RlcGVuZGVuY3k+CisgICAgPC9kZXBlbmRlbmNpZXM+CisKKzwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL3Byb3ZpZGVyLnByb3BlcnRpZXMgYi9wcm92aWRlci5wcm9wZXJ0aWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjMDI1YmQKLS0tIC9kZXYvbnVsbAorKysgYi9wcm92aWRlci5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsNTMgQEAKKyMgVGhlIFhNTCBTZWN1cml0eSBQcm9qZWN0IHVzZXMgYSB0aGlyZCBwYXJ0eSBjcnlwdG9ncmFwaGljIHByb3ZpZGVyCisjIGJlY2F1c2UgdGhlIEpDRSBkb2VzIG5vdCBzdXBwbHkgYWxsIHRoZSByZWxldmFudCBhbGdvcml0aG1zLgorIworIyBVc2UgdGhpcyBmaWxlIHRvIHNwZWNpZnkgdGhlIHByb3ZpZGVyIGluZm9ybWF0aW9uLiBUaGUgWE1MIFNlY3VyaXR5CisjIGltcGxlbWVudGF0aW9uIHVzZXMgVGhlIExlZ2lvbiBvZiB0aGUgQm91bmN5IENhc3RsZSdzIHByb3ZpZGVyLgorCisjIFNwZWNpZnkgeW91ciBwcmVmZXJyZWQgcHJvdmlkZXIsIHRvZ2V0aGVyIHdpdGggdGhlIGRvd25sb2FkIGxvY2F0aW9uCisjIG9mIHRoZSBwcm92aWRlciBmaWxlIGluIHRoaXMgc2VjdGlvbi4KK2pjZS5wcm92aWRlci5zb3VyY2UgICAgID0gaHR0cDovL3d3dy5ib3VuY3ljYXN0bGUub3JnL2Rvd25sb2FkCitqY2UucHJvdmlkZXIucHJlZml4ICAgICA9IGJjCitqY2UucHJvdmlkZXIuamFyICAgICAgICA9IGpjZS1qZGsxMy0xMjkuamFyCisKKyMgU3BlY2lmeSBhIGNoZWNrc3VtIGFsZ29yaXRtIGFuZCBhIGNoZWNrc3VtIHZhbHVlIGZvciBKQ0UgcHJvdmlkZXIKKyMgaW4gdGhpcyBzZWN0aW9uLiBUaGUgY2hlY2tzdW0gaXMgdXNlZCB0byBlbnN1cmUgdGhhdCBubyBkYXRhCisjIGNvcnJ1cHRpb24gb2NjdXJlZCBkdXJpbmcgdGhlIGRvd25sb2FkIG9mIHRoZSBwcm92aWRlci4KK2NoZWNrc3VtLmFsZ29yaXRobSAgICAgID0gbWQ1CitjaGVja3N1bS52YWx1ZSAgICAgICAgICA9IDNkNDhhZWY4MzM4Y2E3NWQxZjBmMGViNTI3YzNkNTQ1CisKKworIyBPdGhlciB1c2VmdWxsIHZhbHVlcworIworIyBNRDUKKyMgOGE5MGYxMDgyNmMwYjhhNDQ2MDIzMWRjZWYwZTBlNDUgICAgICAgICAgamNlLWpkazEzLTExNC5qYXIKKyMgMzhjNDBhYTVjMzg2ZTNiYTVmYWM3MDkxNmJjYzViMGQgICAgICAgICAgamNlLWpkazEzLTExNS5qYXIKKyMgODVjNjRjZDc1NDcxOWE0YmM4ZGE3ZTlhYTBlMTEzZmQgICAgICAgICAgamNlLWpkazEzLTExNi5qYXIKKyMgNmYyMDFlNzRiOGQ0NTVjMTk2MGQyYWFkYzZlYmE3ZGQgICAgICAgICAgamNlLWpkazEzLTExNy5qYXIKKyMgZTRhNTZhZTQ5Y2Y2ZDUyM2Q5NGMyNjgyYzU0NzUxNDQgICAgICAgICAgamNlLWpkazEzLTExOC5qYXIKKyMgNTIxZDBkNjhiZDFiYWQ1YWQ4NjI2MmI5NmYwNWQ4ZjEgICAgICAgICAgamNlLWpkazEzLTExOS5qYXIKKyMgZTI0Y2I1Y2ZiZmVlZDdhNTIxNjc2ZDU1ZGZlNGIwZDUJCQlqY2UtamRrMTMtMTIyLmphcgorIyAyZDkzY2UzZGQ1ZTdlM2Y1OThmMzI0MTQ2ZDFlMjVkMAkJCWpjZS1qZGsxMy0xMjMuamFyCisjIGUyNGNiNWNmYmZlZWQ3YTUyMTY3NmQ1NWRmZTRiMGQ1ICAgICAgICAgIGpjZS1qZGsxMy0xMjQuamFyCisjIDZiN2M5MzUyZDFmNjAxNGE4ZTBkYTUxZDU3ZTQ5NjRiICAgICAgICAgIGJjcHJvdi1qZGsxNC0xMTUuamFyCisjIGFkODUyNmVhMmQyYzgzYjg2ZDE0YjliM2E2OGRmNmQwICAgICAgICAgIGJjcHJvdi1qZGsxNC0xMTYuamFyCisjIDA3N2I2ZDdiZDgyNjQwYTYxZWRhMWJjYmI1NTk5NGQxICAgICAgICAgIGJjcHJvdi1qZGsxNC0xMTcuamFyCisjIDE1MGZiMTEzMjAwM2I4MjRjMjY5MzlhZDJjYjI0N2FmICAgICAgICAgIGJjcHJvdi1qZGsxNC0xMTguamFyCisjIDg2YWRkNzc4ZmJiZDJlZjEzYTJlNTJjNzU4N2Y1MjM0ICAgICAgICAgIGJjcHJvdi1qZGsxNC0xMTkuamFyCisjIDExMWZiZmViODNkOTIyY2I2ZTA5MmZlNzE3NjVhYjgyCQkJYmNwcm92LWpkazE0LTEyMi5qYXIKKyMKKyMgU0hBMQorIyBmM2NmMjY3N2FkOGZhN2EwMzhhYjNhNjJlMDVhZmVmOTYxNWVhNTc5ICBqY2UtamRrMTMtMTE0LmphcgorIyAxNWY1YWY3ZmM3M2U0ZmY1YzA1OWY4M2Y0NzUwOWI5NzIwZTEyOWU3ICBqY2UtamRrMTMtMTE1LmphcgorIyBjMWYwZTk3NWU4YzhlMGEwMTA1Nzg3YjI0OWE1MDYxNWI0ODVkMTA5ICBqY2UtamRrMTMtMTE2LmphcgorIyBhNmM0YjQyNWRiODQ1ZjRkMDBjODRkOGZmZWQ0MzdmZTBjY2EwNTQ4ICBqY2UtamRrMTMtMTE3LmphcgorIyAyM2Y5OTJkM2Q3NDZmZTY3NTZlYzYxMjEwODliZDUzNWU2NWM0ZTVlICBqY2UtamRrMTMtMTE4LmphcgorIyBlOGQzOGYwNjZmZTUxZDdmODZjYjQ4ZDliYjEyNGZlNDk1ODRhMmM5ICBqY2UtamRrMTMtMTE5LmphcgorIyA5MjUzNmMzN2QxYWUyNDFkNWZiMWEwMzM3NWVjNmZlYzZjY2IwY2U4ICBqY2UtamRrMTMtMTIyLmphcgorIyBkZjE4OWUxZjAxODMzMjQ2ODA1NWRjMjY5OGY0MzMzNDllNDQ5NDM5ICBqY2UtamRrMTMtMTI0LmphcgorIyAzMWMwM2M1NTMwNDRhMWMwZmU4ODRjN2U5YTVhMDlkZTU4ODUwYTRmICBiY3Byb3YtamRrMTQtMTE1LmphcgorIyBkNjM1NDA1Yzc4MTAxY2VkYmM3MTBkYTEyZWQwY2Y1N2MwZTBmODk1ICBiY3Byb3YtamRrMTQtMTE2LmphcgorIyBkNTZiYjg3YWJiOTQyYjQ4MWZmZGNiMDNkZmRlNWM0YThjNWUxMzY1ICBiY3Byb3YtamRrMTQtMTE3LmphcgorIyAzYmU4OGM0YjRiNjAzNzE3MzE5NTA5NzNlMTg2ODMyNWExY2JmMjdkICBiY3Byb3YtamRrMTQtMTE4LmphcgorIyBiYTUzOTEzOWJlZWRiYTFjNGI2NzVhNDYyM2EyNDJlMzhjNzNiNTQwICBiY3Byb3YtamRrMTQtMTE5LmphcgorIyA0MTVhOWZhNjM5OWM1Y2MwYjFjNWMxNjA4NjgyZGZjOGZkYTVmMTViICBiY3Byb3YtamRrMTQtMTIyLmphcgpkaWZmIC0tZ2l0IGEvcHJveHkucHJvcGVydGllcyBiL3Byb3h5LnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzI5YmRjOAotLS0gL2Rldi9udWxsCisrKyBiL3Byb3h5LnByb3BlcnRpZXMKQEAgLTAsMCArMSwzIEBACisjIFNldCB0aGVzZSB2YWx1ZXMgaWYgeW91IGFyZSBiZWhpbmQgYSBmaXJld2FsbAorcHJveHkuaG9zdCA9IHlvdXIucHJveHkuZ29lcy5oZXJlCitwcm94eS5wb3J0ID0gODA4MApkaWZmIC0tZ2l0IGEvc3JjL2phdmF4L3htbC9jcnlwdG8vQWxnb3JpdGhtTWV0aG9kLmphdmEgYi9zcmMvamF2YXgveG1sL2NyeXB0by9BbGdvcml0aG1NZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWI5NjVjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vQWxnb3JpdGhtTWV0aG9kLmphdmEKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0bzsKKworaW1wb3J0IGphdmEuc2VjdXJpdHkuc3BlYy5BbGdvcml0aG1QYXJhbWV0ZXJTcGVjOworCisvKioKKyAqIEFuIGFic3RyYWN0IHJlcHJlc2VudGF0aW9uIG9mIGFuIGFsZ29yaXRobSBkZWZpbmVkIGluIHRoZSBYTUwgU2VjdXJpdHkgCisgKiBzcGVjaWZpY2F0aW9ucy4gU3ViY2xhc3NlcyByZXByZXNlbnQgc3BlY2lmaWMgdHlwZXMgb2YgWE1MIHNlY3VyaXR5CisgKiBhbGdvcml0aG1zLCBzdWNoIGFzIGEge0BsaW5rIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5UcmFuc2Zvcm19LgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgSlNSIDEwNSBFeHBlcnQgR3JvdXAKKyAqLyAKK3B1YmxpYyBpbnRlcmZhY2UgQWxnb3JpdGhtTWV0aG9kIHsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGFsZ29yaXRobSBVUkkgb2YgdGhpcyA8Y29kZT5BbGdvcml0aG1NZXRob2Q8L2NvZGU+LgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgYWxnb3JpdGhtIFVSSSBvZiB0aGlzIDxjb2RlPkFsZ29yaXRobU1ldGhvZDwvY29kZT4KKyAgICAgKi8KKyAgICBTdHJpbmcgZ2V0QWxnb3JpdGhtKCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBhbGdvcml0aG0gcGFyYW1ldGVycyBvZiB0aGlzIDxjb2RlPkFsZ29yaXRobU1ldGhvZDwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBhbGdvcml0aG0gcGFyYW1ldGVycyBvZiB0aGlzIDxjb2RlPkFsZ29yaXRobU1ldGhvZDwvY29kZT4uCisgICAgICogICAgUmV0dXJucyA8Y29kZT5udWxsPC9jb2RlPiBpZiB0aGlzIDxjb2RlPkFsZ29yaXRobU1ldGhvZDwvY29kZT4gZG9lcworICAgICAqICAgIG5vdCByZXF1aXJlIHBhcmFtZXRlcnMgYW5kIHRoZXkgYXJlIG5vdCBzcGVjaWZpZWQuCisgICAgICovCisgICAgQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyBnZXRQYXJhbWV0ZXJTcGVjKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvamF2YXgveG1sL2NyeXB0by9EYXRhLmphdmEgYi9zcmMvamF2YXgveG1sL2NyeXB0by9EYXRhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjhlNzU3MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9qYXZheC94bWwvY3J5cHRvL0RhdGEuamF2YQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IDIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvOworCitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLlRyYW5zZm9ybTsKKworLyoqCisgKiBBbiBhYnN0cmFjdCByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVzdWx0IG9mIGRlcmVmZXJlbmNpbmcgYSAKKyAqIHtAbGluayBVUklSZWZlcmVuY2V9IG9yIHRoZSBpbnB1dC9vdXRwdXQgb2Ygc3Vic2VxdWVudCB7QGxpbmsgVHJhbnNmb3JtfXMuCisgKiBUaGUgcHJpbWFyeSBwdXJwb3NlIG9mIHRoaXMgaW50ZXJmYWNlIGlzIHRvIGdyb3VwIGFuZCBwcm92aWRlIHR5cGUgc2FmZXR5CisgKiBmb3IgYWxsIDxjb2RlPkRhdGE8L2NvZGU+IHN1YnR5cGVzLgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgSlNSIDEwNSBFeHBlcnQgR3JvdXAKKyAqLworcHVibGljIGludGVyZmFjZSBEYXRhIHsgfQpkaWZmIC0tZ2l0IGEvc3JjL2phdmF4L3htbC9jcnlwdG8vS2V5U2VsZWN0b3IuamF2YSBiL3NyYy9qYXZheC94bWwvY3J5cHRvL0tleVNlbGVjdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y3NzVkZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9qYXZheC94bWwvY3J5cHRvL0tleVNlbGVjdG9yLmphdmEKQEAgLTAsMCArMSwxNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG87CisKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LktleTsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcua2V5aW5mby5LZXlJbmZvOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvLlJldHJpZXZhbE1ldGhvZDsKKworLyoqCisgKiBBIHNlbGVjdG9yIHRoYXQgZmluZHMgYW5kIHJldHVybnMgYSBrZXkgdXNpbmcgdGhlIGRhdGEgY29udGFpbmVkIGluIGEKKyAqIHtAbGluayBLZXlJbmZvfSBvYmplY3QuIEFuIGV4YW1wbGUgb2YgYW4gaW1wbGVtZW50YXRpb24gb2YKKyAqIHRoaXMgY2xhc3MgaXMgb25lIHRoYXQgc2VhcmNocyBhIHtAbGluayBqYXZhLnNlY3VyaXR5LktleVN0b3JlfSBmb3IgCisgKiB0cnVzdGVkIGtleXMgdGhhdCBtYXRjaCBpbmZvcm1hdGlvbiBjb250YWluZWQgaW4gYSA8Y29kZT5LZXlJbmZvPC9jb2RlPi4KKyAqCisgKiA8cD5XaGV0aGVyIG9yIG5vdCB0aGUgcmV0dXJuZWQga2V5IGlzIHRydXN0ZWQgYW5kIHRoZSBtZWNoYW5pc21zIAorICogdXNlZCB0byBkZXRlcm1pbmUgdGhhdCBpcyBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYy4KKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKiBAYXV0aG9yIEpTUiAxMDUgRXhwZXJ0IEdyb3VwCisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBLZXlTZWxlY3RvciB7CisKKyAgICAvKioKKyAgICAgKiBUaGUgcHVycG9zZSBvZiB0aGUga2V5IHRoYXQgaXMgdG8gYmUgc2VsZWN0ZWQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBQdXJwb3NlIHsKKworCXByaXZhdGUgZmluYWwgU3RyaW5nIG5hbWU7CisKKwlwcml2YXRlIFB1cnBvc2UoU3RyaW5nIG5hbWUpIAl7IHRoaXMubmFtZSA9IG5hbWU7IH0KKworCS8qKgorCSAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBwdXJwb3NlICgic2lnbiIsCisJICogInZlcmlmeSIsICJlbmNyeXB0Iiwgb3IgImRlY3J5cHQiKS4KKwkgKgorCSAqIEByZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBwdXJwb3NlCisJICovCisJcHVibGljIFN0cmluZyB0b1N0cmluZygpCXsgcmV0dXJuIG5hbWU7IH0gCQorCisJLyoqCisJICogQSBrZXkgZm9yIHNpZ25pbmcuCisJICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgUHVycG9zZSBTSUdOID0gbmV3IFB1cnBvc2UoInNpZ24iKTsKKwkvKioKKwkgKiBBIGtleSBmb3IgdmVyaWZ5aW5nLgorCSAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFB1cnBvc2UgVkVSSUZZID0gbmV3IFB1cnBvc2UoInZlcmlmeSIpOworCS8qKgorCSAqIEEga2V5IGZvciBlbmNyeXB0aW5nLgorCSAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFB1cnBvc2UgRU5DUllQVCA9IG5ldyBQdXJwb3NlKCJlbmNyeXB0Iik7CisJLyoqCisJICogQSBrZXkgZm9yIGRlY3J5cHRpbmcuCisJICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgUHVycG9zZSBERUNSWVBUID0gbmV3IFB1cnBvc2UoImRlY3J5cHQiKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZWZhdWx0IG5vLWFyZ3MgY29uc3RydWN0b3I7IGludGVuZGVkIGZvciBpbnZvY2F0aW9uIGJ5IHN1YmNsYXNzZXMgb25seS4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgS2V5U2VsZWN0b3IoKSB7fQorCisgICAgLyoqCisgICAgICogQXR0ZW1wdHMgdG8gZmluZCBhIGtleSB0aGF0IHNhdGlzZmllcyB0aGUgc3BlY2lmaWVkIGNvbnN0cmFpbnRzLgorICAgICAqCisgICAgICogQHBhcmFtIGtleUluZm8gYSA8Y29kZT5LZXlJbmZvPC9jb2RlPiAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+KQorICAgICAqIEBwYXJhbSBwdXJwb3NlIHRoZSBrZXkncyBwdXJwb3NlICh7QGxpbmsgUHVycG9zZSNTSUdOfSwgCisgICAgICogICAge0BsaW5rIFB1cnBvc2UjVkVSSUZZfSwge0BsaW5rIFB1cnBvc2UjRU5DUllQVH0sIG9yIAorICAgICAqICAgIHtAbGluayBQdXJwb3NlI0RFQ1JZUFR9KQorICAgICAqIEBwYXJhbSBtZXRob2QgdGhlIGFsZ29yaXRobSBtZXRob2QgdGhhdCB0aGlzIGtleSBpcyB0byBiZSB1c2VkIGZvci4KKyAgICAgKiAgICBPbmx5IGtleXMgdGhhdCBhcmUgY29tcGF0aWJsZSB3aXRoIHRoZSBhbGdvcml0aG0gYW5kIG1lZXQgdGhlIAorICAgICAqICAgIGNvbnN0cmFpbnRzIG9mIHRoZSBzcGVjaWZpZWQgYWxnb3JpdGhtIHNob3VsZCBiZSByZXR1cm5lZC4KKyAgICAgKiBAcGFyYW0gY29udGV4dCBhbiA8Y29kZT5YTUxDcnlwdG9Db250ZXh0PC9jb2RlPiB0aGF0IG1heSBjb250YWluCisgICAgICogICAgdXNlZnVsIGluZm9ybWF0aW9uIGZvciBmaW5kaW5nIGFuIGFwcHJvcHJpYXRlIGtleS4gSWYgdGhpcyBrZXkgCisgICAgICogICAgc2VsZWN0b3Igc3VwcG9ydHMgcmVzb2x2aW5nIHtAbGluayBSZXRyaWV2YWxNZXRob2R9IHR5cGVzLCB0aGUgCisgICAgICogICAgY29udGV4dCdzIDxjb2RlPmJhc2VVUkk8L2NvZGU+IGFuZCA8Y29kZT5kZXJlZmVyZW5jZXI8L2NvZGU+IAorICAgICAqICAgIHBhcmFtZXRlcnMgKGlmIHNwZWNpZmllZCkgc2hvdWxkIGJlIHVzZWQgYnkgdGhlIHNlbGVjdG9yIHRvIAorICAgICAqICAgIHJlc29sdmUgYW5kIGRlcmVmZXJlbmNlIHRoZSBVUkkuCisgICAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBrZXkgc2VsZWN0b3IKKyAgICAgKiBAdGhyb3dzIEtleVNlbGVjdG9yRXhjZXB0aW9uIGlmIGFuIGV4Y2VwdGlvbmFsIGNvbmRpdGlvbiBvY2N1cnMgd2hpbGUgCisgICAgICogICAgYXR0ZW1wdGluZyB0byBmaW5kIGEga2V5LiBOb3RlIHRoYXQgYW4gaW5hYmlsaXR5IHRvIGZpbmQgYSBrZXkgaXMgbm90IAorICAgICAqICAgIGNvbnNpZGVyZWQgYW4gZXhjZXB0aW9uICg8Y29kZT5udWxsPC9jb2RlPiBzaG91bGQgYmUKKyAgICAgKiAgICByZXR1cm5lZCBpbiB0aGF0IGNhc2UpLiBIb3dldmVyLCBhbiBlcnJvciBjb25kaXRpb24gKGV4OiBuZXR3b3JrIAorICAgICAqICAgIGNvbW11bmljYXRpb25zIGZhaWx1cmUpIHRoYXQgcHJldmVudGVkIHRoZSA8Y29kZT5LZXlTZWxlY3RvcjwvY29kZT4KKyAgICAgKiAgICBmcm9tIGZpbmRpbmcgYSBwb3RlbnRpYWwga2V5IHNob3VsZCBiZSBjb25zaWRlcmVkIGFuIGV4Y2VwdGlvbi4KKyAgICAgKiBAdGhyb3dzIENsYXNzQ2FzdEV4Y2VwdGlvbiBpZiB0aGUgZGF0YSB0eXBlIG9mIDxjb2RlPm1ldGhvZDwvY29kZT4gCisgICAgICogICAgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGtleSBzZWxlY3RvcgorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBLZXlTZWxlY3RvclJlc3VsdCBzZWxlY3QoS2V5SW5mbyBrZXlJbmZvLCBQdXJwb3NlIHB1cnBvc2UsIAorCUFsZ29yaXRobU1ldGhvZCBtZXRob2QsIFhNTENyeXB0b0NvbnRleHQgY29udGV4dCkgCisJdGhyb3dzIEtleVNlbGVjdG9yRXhjZXB0aW9uOworCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIDxjb2RlPktleVNlbGVjdG9yPC9jb2RlPiB0aGF0IGFsd2F5cyBzZWxlY3RzIHRoZSBzcGVjaWZpZWQKKyAgICAgKiBrZXksIHJlZ2FyZGxlc3Mgb2YgdGhlIDxjb2RlPktleUluZm88L2NvZGU+IHBhc3NlZCB0byBpdC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBrZXkgdGhlIHNvbGUga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUga2V5IHNlbGVjdG9yCisgICAgICogQHJldHVybiBhIGtleSBzZWxlY3RvciB0aGF0IGFsd2F5cyBzZWxlY3RzIHRoZSBzcGVjaWZpZWQga2V5CisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5rZXk8L2NvZGU+IGlzIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBLZXlTZWxlY3RvciBzaW5nbGV0b25LZXlTZWxlY3RvcihLZXkga2V5KSB7CisgICAgICAgIHJldHVybiBuZXcgU2luZ2xldG9uS2V5U2VsZWN0b3Ioa2V5KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBTaW5nbGV0b25LZXlTZWxlY3RvciBleHRlbmRzIEtleVNlbGVjdG9yIHsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBLZXkga2V5OworCisgICAgICAgIFNpbmdsZXRvbktleVNlbGVjdG9yKEtleSBrZXkpIHsKKyAgICAgICAgICAgIGlmIChrZXkgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5rZXkgPSBrZXk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgS2V5U2VsZWN0b3JSZXN1bHQgc2VsZWN0KEtleUluZm8ga2V5SW5mbywgUHVycG9zZSBwdXJwb3NlLAorCSAgICBBbGdvcml0aG1NZXRob2QgbWV0aG9kLCBYTUxDcnlwdG9Db250ZXh0IGNvbnRleHQpIAorCSAgICB0aHJvd3MgS2V5U2VsZWN0b3JFeGNlcHRpb24geworCisgICAgICAgICAgICByZXR1cm4gbmV3IEtleVNlbGVjdG9yUmVzdWx0KCkgeworCQlwdWJsaWMgS2V5IGdldEtleSgpIHsKKwkJICAgIHJldHVybiBrZXk7CisJCX0KKwkgICAgfTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9qYXZheC94bWwvY3J5cHRvL0tleVNlbGVjdG9yRXhjZXB0aW9uLmphdmEgYi9zcmMvamF2YXgveG1sL2NyeXB0by9LZXlTZWxlY3RvckV4Y2VwdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllZjZlMjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvamF2YXgveG1sL2NyeXB0by9LZXlTZWxlY3RvckV4Y2VwdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTQyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvOworCitpbXBvcnQgamF2YS5pby5QcmludFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOworCisvKioKKyAqIEluZGljYXRlcyBhbiBleGNlcHRpb25hbCBjb25kaXRpb24gdGhyb3duIGJ5IGEge0BsaW5rIEtleVNlbGVjdG9yfS4KKyAqCisgKiA8cD5BIDxjb2RlPktleVNlbGVjdG9yRXhjZXB0aW9uPC9jb2RlPiBjYW4gY29udGFpbiBhIGNhdXNlOiBhbm90aGVyIAorICogdGhyb3dhYmxlIHRoYXQgY2F1c2VkIHRoaXMgPGNvZGU+S2V5U2VsZWN0b3JFeGNlcHRpb248L2NvZGU+IHRvIGdldCB0aHJvd24uIAorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgSlNSIDEwNSBFeHBlcnQgR3JvdXAKKyAqLworcHVibGljIGNsYXNzIEtleVNlbGVjdG9yRXhjZXB0aW9uIGV4dGVuZHMgRXhjZXB0aW9uIHsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC03NDgwMDMzNjM5MzIyNTMxMTA5TDsKKworICAgIC8qKgorICAgICAqIFRoZSB0aHJvd2FibGUgdGhhdCBjYXVzZWQgdGhpcyBleGNlcHRpb24gdG8gZ2V0IHRocm93biwgb3IgCisgICAgICogPGNvZGU+bnVsbDwvY29kZT4gaWYgdGhpcyBleGNlcHRpb24gd2FzIG5vdCBjYXVzZWQgYnkgYW5vdGhlciB0aHJvd2FibGUgCisgICAgICogb3IgaWYgdGhlIGNhdXNhdGl2ZSB0aHJvd2FibGUgaXMgdW5rbm93bi4gCisgICAgICoKKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgcHJpdmF0ZSBUaHJvd2FibGUgY2F1c2U7CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IDxjb2RlPktleVNlbGVjdG9yRXhjZXB0aW9uPC9jb2RlPiB3aXRoIAorICAgICAqIDxjb2RlPm51bGw8L2NvZGU+IGFzIGl0cyBkZXRhaWwgbWVzc2FnZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgS2V5U2VsZWN0b3JFeGNlcHRpb24oKSB7CisgICAgICAgIHN1cGVyKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIG5ldyA8Y29kZT5LZXlTZWxlY3RvckV4Y2VwdGlvbjwvY29kZT4gd2l0aCB0aGUgc3BlY2lmaWVkIAorICAgICAqIGRldGFpbCBtZXNzYWdlLiAKKyAgICAgKgorICAgICAqIEBwYXJhbSBtZXNzYWdlIHRoZSBkZXRhaWwgbWVzc2FnZQorICAgICAqLworICAgIHB1YmxpYyBLZXlTZWxlY3RvckV4Y2VwdGlvbihTdHJpbmcgbWVzc2FnZSkgeworICAgICAgICBzdXBlcihtZXNzYWdlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IDxjb2RlPktleVNlbGVjdG9yRXhjZXB0aW9uPC9jb2RlPiB3aXRoIHRoZSAKKyAgICAgKiBzcGVjaWZpZWQgZGV0YWlsIG1lc3NhZ2UgYW5kIGNhdXNlLiAgCisgICAgICogPHA+Tm90ZSB0aGF0IHRoZSBkZXRhaWwgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGgKKyAgICAgKiA8Y29kZT5jYXVzZTwvY29kZT4gaXMgPGk+bm90PC9pPiBhdXRvbWF0aWNhbGx5IGluY29ycG9yYXRlZCBpbgorICAgICAqIHRoaXMgZXhjZXB0aW9uJ3MgZGV0YWlsIG1lc3NhZ2UuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbWVzc2FnZSB0aGUgZGV0YWlsIG1lc3NhZ2UgCisgICAgICogQHBhcmFtIGNhdXNlIHRoZSBjYXVzZSAoQSA8dHQ+bnVsbDwvdHQ+IHZhbHVlIGlzIHBlcm1pdHRlZCwgYW5kIAorICAgICAqCSAgICAgIGluZGljYXRlcyB0aGF0IHRoZSBjYXVzZSBpcyBub25leGlzdGVudCBvciB1bmtub3duLikKKyAgICAgKi8KKyAgICBwdWJsaWMgS2V5U2VsZWN0b3JFeGNlcHRpb24oU3RyaW5nIG1lc3NhZ2UsIFRocm93YWJsZSBjYXVzZSkgeworICAgICAgICBzdXBlcihtZXNzYWdlKTsKKyAgICAgICAgdGhpcy5jYXVzZSA9IGNhdXNlOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBuZXcgPGNvZGU+S2V5U2VsZWN0b3JFeGNlcHRpb248L2NvZGU+IHdpdGggdGhlIHNwZWNpZmllZCAKKyAgICAgKiBjYXVzZSBhbmQgYSBkZXRhaWwgbWVzc2FnZSBvZiAKKyAgICAgKiA8Y29kZT4oY2F1c2U9PW51bGwgPyBudWxsIDogY2F1c2UudG9TdHJpbmcoKSk8L2NvZGU+CisgICAgICogKHdoaWNoIHR5cGljYWxseSBjb250YWlucyB0aGUgY2xhc3MgYW5kIGRldGFpbCBtZXNzYWdlIG9mIAorICAgICAqIDxjb2RlPmNhdXNlPC9jb2RlPikuCisgICAgICoKKyAgICAgKiBAcGFyYW0gY2F1c2UgdGhlIGNhdXNlIChBIDx0dD5udWxsPC90dD4gdmFsdWUgaXMgcGVybWl0dGVkLCBhbmQgCisgICAgICogICAgICAgIGluZGljYXRlcyB0aGF0IHRoZSBjYXVzZSBpcyBub25leGlzdGVudCBvciB1bmtub3duLikKKyAgICAgKi8KKyAgICBwdWJsaWMgS2V5U2VsZWN0b3JFeGNlcHRpb24oVGhyb3dhYmxlIGNhdXNlKSB7CisgICAgICAgIHN1cGVyKGNhdXNlPT1udWxsID8gbnVsbCA6IGNhdXNlLnRvU3RyaW5nKCkpOworICAgICAgICB0aGlzLmNhdXNlID0gY2F1c2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgY2F1c2Ugb2YgdGhpcyA8Y29kZT5LZXlTZWxlY3RvckV4Y2VwdGlvbjwvY29kZT4gb3IgCisgICAgICogPGNvZGU+bnVsbDwvY29kZT4gaWYgdGhlIGNhdXNlIGlzIG5vbmV4aXN0ZW50IG9yIHVua25vd24uICAoVGhlIAorICAgICAqIGNhdXNlIGlzIHRoZSB0aHJvd2FibGUgdGhhdCBjYXVzZWQgdGhpcyAKKyAgICAgKiA8Y29kZT5LZXlTZWxlY3RvckV4Y2VwdGlvbjwvY29kZT4gdG8gZ2V0IHRocm93bi4pCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBjYXVzZSBvZiB0aGlzIDxjb2RlPktleVNlbGVjdG9yRXhjZXB0aW9uPC9jb2RlPiBvciAKKyAgICAgKiAgICAgICAgIDxjb2RlPm51bGw8L2NvZGU+IGlmIHRoZSBjYXVzZSBpcyBub25leGlzdGVudCBvciB1bmtub3duLgorICAgICAqLworICAgIHB1YmxpYyBUaHJvd2FibGUgZ2V0Q2F1c2UoKSB7CisgICAgICAgIHJldHVybiBjYXVzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQcmludHMgdGhpcyA8Y29kZT5LZXlTZWxlY3RvckV4Y2VwdGlvbjwvY29kZT4sIGl0cyBiYWNrdHJhY2UgYW5kCisgICAgICogdGhlIGNhdXNlJ3MgYmFja3RyYWNlIHRvIHRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW0uCisgICAgICovCisgICAgcHVibGljIHZvaWQgcHJpbnRTdGFja1RyYWNlKCkgeworCXN1cGVyLnByaW50U3RhY2tUcmFjZSgpOworCS8vWFhYIHByaW50IGJhY2t0cmFjZSBvZiBjYXVzZQorICAgIH0KKworICAgIC8qKgorICAgICAqIFByaW50cyB0aGlzIDxjb2RlPktleVNlbGVjdG9yRXhjZXB0aW9uPC9jb2RlPiwgaXRzIGJhY2t0cmFjZSBhbmQKKyAgICAgKiB0aGUgY2F1c2UncyBiYWNrdHJhY2UgdG8gdGhlIHNwZWNpZmllZCBwcmludCBzdHJlYW0uCisgICAgICoKKyAgICAgKiBAcGFyYW0gcyA8Y29kZT5QcmludFN0cmVhbTwvY29kZT4gdG8gdXNlIGZvciBvdXRwdXQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBwcmludFN0YWNrVHJhY2UoUHJpbnRTdHJlYW0gcykgeworCXN1cGVyLnByaW50U3RhY2tUcmFjZShzKTsKKwkvL1hYWCBwcmludCBiYWNrdHJhY2Ugb2YgY2F1c2UKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQcmludHMgdGhpcyA8Y29kZT5LZXlTZWxlY3RvckV4Y2VwdGlvbjwvY29kZT4sIGl0cyBiYWNrdHJhY2UgYW5kCisgICAgICogdGhlIGNhdXNlJ3MgYmFja3RyYWNlIHRvIHRoZSBzcGVjaWZpZWQgcHJpbnQgd3JpdGVyLgorICAgICAqCisgICAgICogQHBhcmFtIHMgPGNvZGU+UHJpbnRXcml0ZXI8L2NvZGU+IHRvIHVzZSBmb3Igb3V0cHV0CisgICAgICovCisgICAgcHVibGljIHZvaWQgcHJpbnRTdGFja1RyYWNlKFByaW50V3JpdGVyIHMpIHsKKyAgICAgICAgc3VwZXIucHJpbnRTdGFja1RyYWNlKHMpOworCS8vWFhYIHByaW50IGJhY2t0cmFjZSBvZiBjYXVzZQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9qYXZheC94bWwvY3J5cHRvL0tleVNlbGVjdG9yUmVzdWx0LmphdmEgYi9zcmMvamF2YXgveG1sL2NyeXB0by9LZXlTZWxlY3RvclJlc3VsdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzMTVkNGMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvamF2YXgveG1sL2NyeXB0by9LZXlTZWxlY3RvclJlc3VsdC5qYXZhCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG87CisKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LktleTsKKworLyoqCisgKiBUaGUgcmVzdWx0IHJldHVybmVkIGJ5IHRoZSB7QGxpbmsgS2V5U2VsZWN0b3Ijc2VsZWN0IEtleVNlbGVjdG9yLnNlbGVjdH0gCisgKiBtZXRob2QuCisgKiA8cD4KKyAqIEF0IGEgbWluaW11bSwgYSA8Y29kZT5LZXlTZWxlY3RvclJlc3VsdDwvY29kZT4gY29udGFpbnMgdGhlIDxjb2RlPktleTwvY29kZT4KKyAqIHNlbGVjdGVkIGJ5IHRoZSA8Y29kZT5LZXlTZWxlY3RvcjwvY29kZT4uIEltcGxlbWVudGF0aW9ucyBvZiB0aGlzIGludGVyZmFjZQorICogbWF5IGFkZCBtZXRob2RzIHRvIHJldHVybiBpbXBsZW1lbnRhdGlvbiBvciBhbGdvcml0aG0gc3BlY2lmaWMgaW5mb3JtYXRpb24sCisgKiBzdWNoIGFzIGEgY2hhaW4gb2YgY2VydGlmaWNhdGVzIG9yIGRlYnVnZ2luZyBpbmZvcm1hdGlvbi4KKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKiBAYXV0aG9yIEpTUiAxMDUgRXhwZXJ0IEdyb3VwCisgKiBAc2VlIEtleVNlbGVjdG9yCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgS2V5U2VsZWN0b3JSZXN1bHQgeworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgc2VsZWN0ZWQga2V5LgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgc2VsZWN0ZWQga2V5LCBvciA8Y29kZT5udWxsPC9jb2RlPiBpZiBub25lIGNhbiBiZSBmb3VuZAorICAgICAqLworICAgIEtleSBnZXRLZXkoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9qYXZheC94bWwvY3J5cHRvL01hcnNoYWxFeGNlcHRpb24uamF2YSBiL3NyYy9qYXZheC94bWwvY3J5cHRvL01hcnNoYWxFeGNlcHRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmVjMzc5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vTWFyc2hhbEV4Y2VwdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJpZ2h0IDIwMDUtMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG87CisKK2ltcG9ydCBqYXZhLmlvLlByaW50U3RyZWFtOworaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLlhNTFNpZ25hdHVyZTsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuWE1MU2lnbmF0dXJlRmFjdG9yeTsKKworLyoqCisgKiBJbmRpY2F0ZXMgYW4gZXhjZXB0aW9uYWwgY29uZGl0aW9uIHRoYXQgb2NjdXJlZCBkdXJpbmcgdGhlIFhNTAorICogbWFyc2hhbGxpbmcgb3IgdW5tYXJzaGFsbGluZyBwcm9jZXNzLgorICoKKyAqIDxwPkEgPGNvZGU+TWFyc2hhbEV4Y2VwdGlvbjwvY29kZT4gY2FuIGNvbnRhaW4gYSBjYXVzZTogYW5vdGhlciAKKyAqIHRocm93YWJsZSB0aGF0IGNhdXNlZCB0aGlzIDxjb2RlPk1hcnNoYWxFeGNlcHRpb248L2NvZGU+IHRvIGdldCB0aHJvd24uIAorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgSlNSIDEwNSBFeHBlcnQgR3JvdXAKKyAqIEBzZWUgWE1MU2lnbmF0dXJlI3NpZ24oWE1MU2lnbkNvbnRleHQpCisgKiBAc2VlIFhNTFNpZ25hdHVyZUZhY3RvcnkjdW5tYXJzaGFsWE1MU2lnbmF0dXJlKFhNTFZhbGlkYXRlQ29udGV4dCkKKyAqLworcHVibGljIGNsYXNzIE1hcnNoYWxFeGNlcHRpb24gZXh0ZW5kcyBFeGNlcHRpb24geworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTg2MzE4NTU4MDMzMjY0MzU0N0w7CisKKyAgICAvKioKKyAgICAgKiBUaGUgdGhyb3dhYmxlIHRoYXQgY2F1c2VkIHRoaXMgZXhjZXB0aW9uIHRvIGdldCB0aHJvd24sIG9yIG51bGwgaWYgdGhpcworICAgICAqIGV4Y2VwdGlvbiB3YXMgbm90IGNhdXNlZCBieSBhbm90aGVyIHRocm93YWJsZSBvciBpZiB0aGUgY2F1c2F0aXZlCisgICAgICogdGhyb3dhYmxlIGlzIHVua25vd24uIAorICAgICAqCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIHByaXZhdGUgVGhyb3dhYmxlIGNhdXNlOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIG5ldyA8Y29kZT5NYXJzaGFsRXhjZXB0aW9uPC9jb2RlPiB3aXRoIAorICAgICAqIDxjb2RlPm51bGw8L2NvZGU+IGFzIGl0cyBkZXRhaWwgbWVzc2FnZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgTWFyc2hhbEV4Y2VwdGlvbigpIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IDxjb2RlPk1hcnNoYWxFeGNlcHRpb248L2NvZGU+IHdpdGggdGhlIHNwZWNpZmllZCAKKyAgICAgKiBkZXRhaWwgbWVzc2FnZS4gCisgICAgICoKKyAgICAgKiBAcGFyYW0gbWVzc2FnZSB0aGUgZGV0YWlsIG1lc3NhZ2UKKyAgICAgKi8KKyAgICBwdWJsaWMgTWFyc2hhbEV4Y2VwdGlvbihTdHJpbmcgbWVzc2FnZSkgeworICAgICAgICBzdXBlcihtZXNzYWdlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IDxjb2RlPk1hcnNoYWxFeGNlcHRpb248L2NvZGU+IHdpdGggdGhlIAorICAgICAqIHNwZWNpZmllZCBkZXRhaWwgbWVzc2FnZSBhbmQgY2F1c2UuICAKKyAgICAgKiA8cD5Ob3RlIHRoYXQgdGhlIGRldGFpbCBtZXNzYWdlIGFzc29jaWF0ZWQgd2l0aAorICAgICAqIDxjb2RlPmNhdXNlPC9jb2RlPiBpcyA8aT5ub3Q8L2k+IGF1dG9tYXRpY2FsbHkgaW5jb3Jwb3JhdGVkIGluCisgICAgICogdGhpcyBleGNlcHRpb24ncyBkZXRhaWwgbWVzc2FnZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBtZXNzYWdlIHRoZSBkZXRhaWwgbWVzc2FnZSAKKyAgICAgKiBAcGFyYW0gY2F1c2UgdGhlIGNhdXNlIChBIDx0dD5udWxsPC90dD4gdmFsdWUgaXMgcGVybWl0dGVkLCBhbmQgCisgICAgICoJICAgICAgaW5kaWNhdGVzIHRoYXQgdGhlIGNhdXNlIGlzIG5vbmV4aXN0ZW50IG9yIHVua25vd24uKQorICAgICAqLworICAgIHB1YmxpYyBNYXJzaGFsRXhjZXB0aW9uKFN0cmluZyBtZXNzYWdlLCBUaHJvd2FibGUgY2F1c2UpIHsKKyAgICAgICAgc3VwZXIobWVzc2FnZSk7CisgICAgICAgIHRoaXMuY2F1c2UgPSBjYXVzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IDxjb2RlPk1hcnNoYWxFeGNlcHRpb248L2NvZGU+IHdpdGggdGhlIHNwZWNpZmllZCBjYXVzZSAKKyAgICAgKiBhbmQgYSBkZXRhaWwgbWVzc2FnZSBvZiA8Y29kZT4oY2F1c2U9PW51bGwgPyBudWxsIDogY2F1c2UudG9TdHJpbmcoKSkKKyAgICAgKiA8L2NvZGU+ICh3aGljaCB0eXBpY2FsbHkgY29udGFpbnMgdGhlIGNsYXNzIGFuZCBkZXRhaWwgbWVzc2FnZSBvZiAKKyAgICAgKiA8Y29kZT5jYXVzZTwvY29kZT4pLgorICAgICAqCisgICAgICogQHBhcmFtIGNhdXNlIHRoZSBjYXVzZSAoQSA8dHQ+bnVsbDwvdHQ+IHZhbHVlIGlzIHBlcm1pdHRlZCwgYW5kIAorICAgICAqICAgICAgICBpbmRpY2F0ZXMgdGhhdCB0aGUgY2F1c2UgaXMgbm9uZXhpc3RlbnQgb3IgdW5rbm93bi4pCisgICAgICovCisgICAgcHVibGljIE1hcnNoYWxFeGNlcHRpb24oVGhyb3dhYmxlIGNhdXNlKSB7CisgICAgICAgIHN1cGVyKGNhdXNlPT1udWxsID8gbnVsbCA6IGNhdXNlLnRvU3RyaW5nKCkpOworICAgICAgICB0aGlzLmNhdXNlID0gY2F1c2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgY2F1c2Ugb2YgdGhpcyA8Y29kZT5NYXJzaGFsRXhjZXB0aW9uPC9jb2RlPiBvciAKKyAgICAgKiA8Y29kZT5udWxsPC9jb2RlPiBpZiB0aGUgY2F1c2UgaXMgbm9uZXhpc3RlbnQgb3IgdW5rbm93bi4gIChUaGUgCisgICAgICogY2F1c2UgaXMgdGhlIHRocm93YWJsZSB0aGF0IGNhdXNlZCB0aGlzIAorICAgICAqIDxjb2RlPk1hcnNoYWxFeGNlcHRpb248L2NvZGU+IHRvIGdldCB0aHJvd24uKQorICAgICAqCisgICAgICogQHJldHVybiB0aGUgY2F1c2Ugb2YgdGhpcyA8Y29kZT5NYXJzaGFsRXhjZXB0aW9uPC9jb2RlPiBvciAKKyAgICAgKiAgICAgICAgIDxjb2RlPm51bGw8L2NvZGU+IGlmIHRoZSBjYXVzZSBpcyBub25leGlzdGVudCBvciB1bmtub3duLgorICAgICAqLworICAgIHB1YmxpYyBUaHJvd2FibGUgZ2V0Q2F1c2UoKSB7CisgICAgICAgIHJldHVybiBjYXVzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQcmludHMgdGhpcyA8Y29kZT5NYXJzaGFsRXhjZXB0aW9uPC9jb2RlPiwgaXRzIGJhY2t0cmFjZSBhbmQKKyAgICAgKiB0aGUgY2F1c2UncyBiYWNrdHJhY2UgdG8gdGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBwcmludFN0YWNrVHJhY2UoKSB7CisJc3VwZXIucHJpbnRTdGFja1RyYWNlKCk7CisJLy9YWFggcHJpbnQgYmFja3RyYWNlIG9mIGNhdXNlCisgICAgfQorCisgICAgLyoqCisgICAgICogUHJpbnRzIHRoaXMgPGNvZGU+TWFyc2hhbEV4Y2VwdGlvbjwvY29kZT4sIGl0cyBiYWNrdHJhY2UgYW5kCisgICAgICogdGhlIGNhdXNlJ3MgYmFja3RyYWNlIHRvIHRoZSBzcGVjaWZpZWQgcHJpbnQgc3RyZWFtLgorICAgICAqCisgICAgICogQHBhcmFtIHMgPGNvZGU+UHJpbnRTdHJlYW08L2NvZGU+IHRvIHVzZSBmb3Igb3V0cHV0CisgICAgICovCisgICAgcHVibGljIHZvaWQgcHJpbnRTdGFja1RyYWNlKFByaW50U3RyZWFtIHMpIHsKKwlzdXBlci5wcmludFN0YWNrVHJhY2Uocyk7CisJLy9YWFggcHJpbnQgYmFja3RyYWNlIG9mIGNhdXNlCisgICAgfQorCisgICAgLyoqCisgICAgICogUHJpbnRzIHRoaXMgPGNvZGU+TWFyc2hhbEV4Y2VwdGlvbjwvY29kZT4sIGl0cyBiYWNrdHJhY2UgYW5kCisgICAgICogdGhlIGNhdXNlJ3MgYmFja3RyYWNlIHRvIHRoZSBzcGVjaWZpZWQgcHJpbnQgd3JpdGVyLgorICAgICAqCisgICAgICogQHBhcmFtIHMgPGNvZGU+UHJpbnRXcml0ZXI8L2NvZGU+IHRvIHVzZSBmb3Igb3V0cHV0CisgICAgICovCisgICAgcHVibGljIHZvaWQgcHJpbnRTdGFja1RyYWNlKFByaW50V3JpdGVyIHMpIHsKKyAgICAgICAgc3VwZXIucHJpbnRTdGFja1RyYWNlKHMpOworCS8vWFhYIHByaW50IGJhY2t0cmFjZSBvZiBjYXVzZQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9qYXZheC94bWwvY3J5cHRvL05vU3VjaE1lY2hhbmlzbUV4Y2VwdGlvbi5qYXZhIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vTm9TdWNoTWVjaGFuaXNtRXhjZXB0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdiZDU3OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9qYXZheC94bWwvY3J5cHRvL05vU3VjaE1lY2hhbmlzbUV4Y2VwdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICogQ29weXJpZ2h0IDIwMDUtMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG87CisKK2ltcG9ydCBqYXZhLmlvLlByaW50U3RyZWFtOworaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLlhNTFNpZ25hdHVyZUZhY3Rvcnk7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLmtleWluZm8uS2V5SW5mb0ZhY3Rvcnk7CisKKy8qKgorICogVGhpcyBleGNlcHRpb24gaXMgdGhyb3duIHdoZW4gYSBwYXJ0aWN1bGFyIFhNTCBtZWNoYW5pc20gaXMgcmVxdWVzdGVkIGJ1dAorICogaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgZW52aXJvbm1lbnQuCisgKgorICogPHA+QSA8Y29kZT5Ob1N1Y2hNZWNoYW5pc21FeGNlcHRpb248L2NvZGU+IGNhbiBjb250YWluIGEgY2F1c2U6IGFub3RoZXIgCisgKiB0aHJvd2FibGUgdGhhdCBjYXVzZWQgdGhpcyA8Y29kZT5Ob1N1Y2hNZWNoYW5pc21FeGNlcHRpb248L2NvZGU+IHRvIGdldCAKKyAqIHRocm93bi4gCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICogQGF1dGhvciBKU1IgMTA1IEV4cGVydCBHcm91cAorICogQHNlZSBYTUxTaWduYXR1cmVGYWN0b3J5I2dldEluc3RhbmNlIFhNTFNpZ25hdHVyZUZhY3RvcnkuZ2V0SW5zdGFuY2UKKyAqIEBzZWUgS2V5SW5mb0ZhY3RvcnkjZ2V0SW5zdGFuY2UgS2V5SW5mb0ZhY3RvcnkuZ2V0SW5zdGFuY2UKKyAqLworcHVibGljIGNsYXNzIE5vU3VjaE1lY2hhbmlzbUV4Y2VwdGlvbiBleHRlbmRzIFJ1bnRpbWVFeGNlcHRpb24geworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gNDE4OTY2OTA2OTU3MDY2MDE2Nkw7CisKKyAgICAvKioKKyAgICAgKiBUaGUgdGhyb3dhYmxlIHRoYXQgY2F1c2VkIHRoaXMgZXhjZXB0aW9uIHRvIGdldCB0aHJvd24sIG9yIG51bGwgaWYgdGhpcworICAgICAqIGV4Y2VwdGlvbiB3YXMgbm90IGNhdXNlZCBieSBhbm90aGVyIHRocm93YWJsZSBvciBpZiB0aGUgY2F1c2F0aXZlCisgICAgICogdGhyb3dhYmxlIGlzIHVua25vd24uIAorICAgICAqCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIHByaXZhdGUgVGhyb3dhYmxlIGNhdXNlOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIG5ldyA8Y29kZT5Ob1N1Y2hNZWNoYW5pc21FeGNlcHRpb248L2NvZGU+IHdpdGggCisgICAgICogPGNvZGU+bnVsbDwvY29kZT4gYXMgaXRzIGRldGFpbCBtZXNzYWdlLgorICAgICAqLworICAgIHB1YmxpYyBOb1N1Y2hNZWNoYW5pc21FeGNlcHRpb24oKSB7CisgICAgICAgIHN1cGVyKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIG5ldyA8Y29kZT5Ob1N1Y2hNZWNoYW5pc21FeGNlcHRpb248L2NvZGU+IHdpdGggdGhlIAorICAgICAqIHNwZWNpZmllZCBkZXRhaWwgbWVzc2FnZS4gCisgICAgICoKKyAgICAgKiBAcGFyYW0gbWVzc2FnZSB0aGUgZGV0YWlsIG1lc3NhZ2UKKyAgICAgKi8KKyAgICBwdWJsaWMgTm9TdWNoTWVjaGFuaXNtRXhjZXB0aW9uKFN0cmluZyBtZXNzYWdlKSB7CisgICAgICAgIHN1cGVyKG1lc3NhZ2UpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBuZXcgPGNvZGU+Tm9TdWNoTWVjaGFuaXNtRXhjZXB0aW9uPC9jb2RlPiB3aXRoIHRoZSAKKyAgICAgKiBzcGVjaWZpZWQgZGV0YWlsIG1lc3NhZ2UgYW5kIGNhdXNlLiAgCisgICAgICogPHA+Tm90ZSB0aGF0IHRoZSBkZXRhaWwgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGgKKyAgICAgKiA8Y29kZT5jYXVzZTwvY29kZT4gaXMgPGk+bm90PC9pPiBhdXRvbWF0aWNhbGx5IGluY29ycG9yYXRlZCBpbgorICAgICAqIHRoaXMgZXhjZXB0aW9uJ3MgZGV0YWlsIG1lc3NhZ2UuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbWVzc2FnZSB0aGUgZGV0YWlsIG1lc3NhZ2UgCisgICAgICogQHBhcmFtIGNhdXNlIHRoZSBjYXVzZSAoQSA8dHQ+bnVsbDwvdHQ+IHZhbHVlIGlzIHBlcm1pdHRlZCwgYW5kIAorICAgICAqCSAgICAgIGluZGljYXRlcyB0aGF0IHRoZSBjYXVzZSBpcyBub25leGlzdGVudCBvciB1bmtub3duLikKKyAgICAgKi8KKyAgICBwdWJsaWMgTm9TdWNoTWVjaGFuaXNtRXhjZXB0aW9uKFN0cmluZyBtZXNzYWdlLCBUaHJvd2FibGUgY2F1c2UpIHsKKyAgICAgICAgc3VwZXIobWVzc2FnZSk7CisgICAgICAgIHRoaXMuY2F1c2UgPSBjYXVzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IDxjb2RlPk5vU3VjaE1lY2hhbmlzbUV4Y2VwdGlvbjwvY29kZT4gd2l0aCB0aGUgCisgICAgICogc3BlY2lmaWVkIGNhdXNlIGFuZCBhIGRldGFpbCBtZXNzYWdlIG9mIAorICAgICAqIDxjb2RlPihjYXVzZT09bnVsbCA/IG51bGwgOiBjYXVzZS50b1N0cmluZygpKTwvY29kZT4gKHdoaWNoIHR5cGljYWxseSAKKyAgICAgKiBjb250YWlucyB0aGUgY2xhc3MgYW5kIGRldGFpbCBtZXNzYWdlIG9mIDxjb2RlPmNhdXNlPC9jb2RlPikuCisgICAgICoKKyAgICAgKiBAcGFyYW0gY2F1c2UgdGhlIGNhdXNlIChBIDx0dD5udWxsPC90dD4gdmFsdWUgaXMgcGVybWl0dGVkLCBhbmQgCisgICAgICogICAgICAgIGluZGljYXRlcyB0aGF0IHRoZSBjYXVzZSBpcyBub25leGlzdGVudCBvciB1bmtub3duLikKKyAgICAgKi8KKyAgICBwdWJsaWMgTm9TdWNoTWVjaGFuaXNtRXhjZXB0aW9uKFRocm93YWJsZSBjYXVzZSkgeworICAgICAgICBzdXBlcihjYXVzZT09bnVsbCA/IG51bGwgOiBjYXVzZS50b1N0cmluZygpKTsKKyAgICAgICAgdGhpcy5jYXVzZSA9IGNhdXNlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGNhdXNlIG9mIHRoaXMgPGNvZGU+Tm9TdWNoTWVjaGFuaXNtRXhjZXB0aW9uPC9jb2RlPiBvciAKKyAgICAgKiA8Y29kZT5udWxsPC9jb2RlPiBpZiB0aGUgY2F1c2UgaXMgbm9uZXhpc3RlbnQgb3IgdW5rbm93bi4gIChUaGUgCisgICAgICogY2F1c2UgaXMgdGhlIHRocm93YWJsZSB0aGF0IGNhdXNlZCB0aGlzIAorICAgICAqIDxjb2RlPk5vU3VjaE1lY2hhbmlzbUV4Y2VwdGlvbjwvY29kZT4gdG8gZ2V0IHRocm93bi4pCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBjYXVzZSBvZiB0aGlzIDxjb2RlPk5vU3VjaE1lY2hhbmlzbUV4Y2VwdGlvbjwvY29kZT4gb3IgCisgICAgICogICAgICAgICA8Y29kZT5udWxsPC9jb2RlPiBpZiB0aGUgY2F1c2UgaXMgbm9uZXhpc3RlbnQgb3IgdW5rbm93bi4KKyAgICAgKi8KKyAgICBwdWJsaWMgVGhyb3dhYmxlIGdldENhdXNlKCkgeworICAgICAgICByZXR1cm4gY2F1c2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogUHJpbnRzIHRoaXMgPGNvZGU+Tm9TdWNoTWVjaGFuaXNtRXhjZXB0aW9uPC9jb2RlPiwgaXRzIGJhY2t0cmFjZSBhbmQKKyAgICAgKiB0aGUgY2F1c2UncyBiYWNrdHJhY2UgdG8gdGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBwcmludFN0YWNrVHJhY2UoKSB7CisJc3VwZXIucHJpbnRTdGFja1RyYWNlKCk7CisJLy9YWFggcHJpbnQgYmFja3RyYWNlIG9mIGNhdXNlCisgICAgfQorCisgICAgLyoqCisgICAgICogUHJpbnRzIHRoaXMgPGNvZGU+Tm9TdWNoTWVjaGFuaXNtRXhjZXB0aW9uPC9jb2RlPiwgaXRzIGJhY2t0cmFjZSBhbmQKKyAgICAgKiB0aGUgY2F1c2UncyBiYWNrdHJhY2UgdG8gdGhlIHNwZWNpZmllZCBwcmludCBzdHJlYW0uCisgICAgICoKKyAgICAgKiBAcGFyYW0gcyA8Y29kZT5QcmludFN0cmVhbTwvY29kZT4gdG8gdXNlIGZvciBvdXRwdXQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBwcmludFN0YWNrVHJhY2UoUHJpbnRTdHJlYW0gcykgeworCXN1cGVyLnByaW50U3RhY2tUcmFjZShzKTsKKwkvL1hYWCBwcmludCBiYWNrdHJhY2Ugb2YgY2F1c2UKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQcmludHMgdGhpcyA8Y29kZT5Ob1N1Y2hNZWNoYW5pc21FeGNlcHRpb248L2NvZGU+LCBpdHMgYmFja3RyYWNlIGFuZAorICAgICAqIHRoZSBjYXVzZSdzIGJhY2t0cmFjZSB0byB0aGUgc3BlY2lmaWVkIHByaW50IHdyaXRlci4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzIDxjb2RlPlByaW50V3JpdGVyPC9jb2RlPiB0byB1c2UgZm9yIG91dHB1dAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHByaW50U3RhY2tUcmFjZShQcmludFdyaXRlciBzKSB7CisgICAgICAgIHN1cGVyLnByaW50U3RhY2tUcmFjZShzKTsKKwkvL1hYWCBwcmludCBiYWNrdHJhY2Ugb2YgY2F1c2UKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvamF2YXgveG1sL2NyeXB0by9Ob2RlU2V0RGF0YS5qYXZhIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vTm9kZVNldERhdGEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGIyNmJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vTm9kZVNldERhdGEuamF2YQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvOworCitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworCisvKioKKyAqIEFuIGFic3RyYWN0IHJlcHJlc2VudGF0aW9uIG9mIGEgPGNvZGU+RGF0YTwvY29kZT4gdHlwZSBjb250YWluaW5nIGEgCisgKiBub2RlLXNldC4gVGhlIHR5cGUgKGNsYXNzKSBhbmQgb3JkZXJpbmcgb2YgdGhlIG5vZGVzIGNvbnRhaW5lZCBpbiB0aGUgc2V0IAorICogYXJlIG5vdCBkZWZpbmVkIGJ5IHRoaXMgY2xhc3M7IGluc3RlYWQgdGhhdCBiZWhhdmlvciBzaG91bGQgYmUgCisgKiBkZWZpbmVkIGJ5IDxjb2RlPk5vZGVTZXREYXRhPC9jb2RlPiBzdWJjbGFzc2VzLgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgSlNSIDEwNSBFeHBlcnQgR3JvdXAKKyAqLworcHVibGljIGludGVyZmFjZSBOb2RlU2V0RGF0YSBleHRlbmRzIERhdGEgeworCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIHJlYWQtb25seSBpdGVyYXRvciBvdmVyIHRoZSBub2RlcyBjb250YWluZWQgaW4gdGhpcyAKKyAgICAgKiA8Y29kZT5Ob2RlU2V0RGF0YTwvY29kZT4gaW4gCisgICAgICogPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYjZHQtZG9jdW1lbnQtb3JkZXIiPgorICAgICAqIGRvY3VtZW50IG9yZGVyPC9hPi4gQXR0ZW1wdHMgdG8gbW9kaWZ5IHRoZSByZXR1cm5lZCBpdGVyYXRvcgorICAgICAqIHZpYSB0aGUgPGNvZGU+cmVtb3ZlPC9jb2RlPiBtZXRob2QgdGhyb3cgCisgICAgICogPGNvZGU+VW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb248L2NvZGU+LgorICAgICAqCisgICAgICogQHJldHVybiBhbiA8Y29kZT5JdGVyYXRvcjwvY29kZT4gb3ZlciB0aGUgbm9kZXMgaW4gdGhpcyAKKyAgICAgKiAgICA8Y29kZT5Ob2RlU2V0RGF0YTwvY29kZT4gaW4gZG9jdW1lbnQgb3JkZXIKKyAgICAgKi8KKyAgICBJdGVyYXRvciBpdGVyYXRvcigpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2phdmF4L3htbC9jcnlwdG8vT2N0ZXRTdHJlYW1EYXRhLmphdmEgYi9zcmMvamF2YXgveG1sL2NyeXB0by9PY3RldFN0cmVhbURhdGEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2M0ZTIzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vT2N0ZXRTdHJlYW1EYXRhLmphdmEKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgSlNSIDEwNSBFeHBlcnQgR3JvdXAKKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvOworCitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKKworLyoqCisgKiBBIHJlcHJlc2VudGF0aW9uIG9mIGEgPGNvZGU+RGF0YTwvY29kZT4gdHlwZSBjb250YWluaW5nIGFuIG9jdGV0IHN0cmVhbS4KKyAqLworcHVibGljIGNsYXNzIE9jdGV0U3RyZWFtRGF0YSBpbXBsZW1lbnRzIERhdGEgeworICAKKyAgICBwcml2YXRlIElucHV0U3RyZWFtIG9jdGV0U3RyZWFtOworICAgIHByaXZhdGUgU3RyaW5nIHVyaTsKKyAgICBwcml2YXRlIFN0cmluZyBtaW1lVHlwZTsKKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBuZXcgPGNvZGU+T2N0ZXRTdHJlYW1EYXRhPC9jb2RlPi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBvY3RldFN0cmVhbSB0aGUgaW5wdXQgc3RyZWFtIGNvbnRhaW5pbmcgdGhlIG9jdGV0cworICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+b2N0ZXRTdHJlYW08L2NvZGU+IGlzIAorICAgICAqICAgIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICovCisgICAgcHVibGljIE9jdGV0U3RyZWFtRGF0YShJbnB1dFN0cmVhbSBvY3RldFN0cmVhbSkgeworCWlmIChvY3RldFN0cmVhbSA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigib2N0ZXRTdHJlYW0gaXMgbnVsbCIpOworCX0KKwl0aGlzLm9jdGV0U3RyZWFtID0gb2N0ZXRTdHJlYW07CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIG5ldyA8Y29kZT5PY3RldFN0cmVhbURhdGE8L2NvZGU+LgorICAgICAqCisgICAgICogQHBhcmFtIG9jdGV0U3RyZWFtIHRoZSBpbnB1dCBzdHJlYW0gY29udGFpbmluZyB0aGUgb2N0ZXRzCisgICAgICogQHBhcmFtIHVyaSB0aGUgVVJJIFN0cmluZyBpZGVudGlmeWluZyB0aGUgZGF0YSBvYmplY3QgKG1heSBiZSAKKyAgICAgKiAgICA8Y29kZT5udWxsPC9jb2RlPikgCisgICAgICogQHBhcmFtIG1pbWVUeXBlIHRoZSBNSU1FIHR5cGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBkYXRhIG9iamVjdCAobWF5IGJlIAorICAgICAqICAgIDxjb2RlPm51bGw8L2NvZGU+KSAKKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPm9jdGV0U3RyZWFtPC9jb2RlPiBpcyAKKyAgICAgKiAgICA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqLworICAgIHB1YmxpYyBPY3RldFN0cmVhbURhdGEoSW5wdXRTdHJlYW0gb2N0ZXRTdHJlYW0sIFN0cmluZyB1cmksIAorCVN0cmluZyBtaW1lVHlwZSkgeworCWlmIChvY3RldFN0cmVhbSA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigib2N0ZXRTdHJlYW0gaXMgbnVsbCIpOworCX0KKwl0aGlzLm9jdGV0U3RyZWFtID0gb2N0ZXRTdHJlYW07CisJdGhpcy51cmkgPSB1cmk7CisJdGhpcy5taW1lVHlwZSA9IG1pbWVUeXBlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGlucHV0IHN0cmVhbSBvZiB0aGlzIDxjb2RlPk9jdGV0U3RyZWFtRGF0YTwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBpbnB1dCBzdHJlYW0gb2YgdGhpcyA8Y29kZT5PY3RldFN0cmVhbURhdGE8L2NvZGU+LgorICAgICAqLworICAgIHB1YmxpYyBJbnB1dFN0cmVhbSBnZXRPY3RldFN0cmVhbSgpIHsKKwlyZXR1cm4gb2N0ZXRTdHJlYW07CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgVVJJIFN0cmluZyBpZGVudGlmeWluZyB0aGUgZGF0YSBvYmplY3QgcmVwcmVzZW50ZWQgYnkgdGhpcworICAgICAqIDxjb2RlPk9jdGV0U3RyZWFtRGF0YTwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBVUkkgU3RyaW5nIG9yIDxjb2RlPm51bGw8L2NvZGU+IGlmIG5vdCBhcHBsaWNhYmxlCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXRVUkkoKSB7CisJcmV0dXJuIHVyaTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBNSU1FIHR5cGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBkYXRhIG9iamVjdCByZXByZXNlbnRlZCBieSB0aGlzCisgICAgICogPGNvZGU+T2N0ZXRTdHJlYW1EYXRhPC9jb2RlPi4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIE1JTUUgdHlwZSBvciA8Y29kZT5udWxsPC9jb2RlPiBpZiBub3QgYXBwbGljYWJsZQorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0TWltZVR5cGUoKSB7CisJcmV0dXJuIG1pbWVUeXBlOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9qYXZheC94bWwvY3J5cHRvL1VSSURlcmVmZXJlbmNlci5qYXZhIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vVVJJRGVyZWZlcmVuY2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBjNzZjOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9qYXZheC94bWwvY3J5cHRvL1VSSURlcmVmZXJlbmNlci5qYXZhCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogUG9ydGlvbnMgY29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvOworCisvKioKKyAqIEEgZGVyZWZlcmVuY2VyIG9mIHtAbGluayBVUklSZWZlcmVuY2V9cy4KKyAqIDxwPgorICogVGhlIHJlc3VsdCBvZiBkZXJlZmVyZW5jaW5nIGEgPGNvZGU+VVJJUmVmZXJlbmNlPC9jb2RlPiBpcyBlaXRoZXIgYW4gCisgKiBpbnN0YW5jZSBvZiB7QGxpbmsgT2N0ZXRTdHJlYW1EYXRhfSBvciB7QGxpbmsgTm9kZVNldERhdGF9LiBVbmxlc3MgdGhlCisgKiA8Y29kZT5VUklSZWZlcmVuY2U8L2NvZGU+IGlzIGEgPGk+c2FtZS1kb2N1bWVudCByZWZlcmVuY2U8L2k+IGFzIGRlZmluZWQKKyAqIGluIHNlY3Rpb24gNC4yIG9mIHRoZSBXM0MgUmVjb21tZW5kYXRpb24gZm9yIFhNTC1TaWduYXR1cmUgU3ludGF4IGFuZCAKKyAqIFByb2Nlc3NpbmcsIHRoZSByZXN1bHQgb2YgZGVyZWZlcmVuY2luZyB0aGUgPGNvZGU+VVJJUmVmZXJlbmNlPC9jb2RlPgorICogTVVTVCBiZSBhbiA8Y29kZT5PY3RldFN0cmVhbURhdGE8L2NvZGU+LgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgSm95Y2UgTGV1bmcKKyAqIEBhdXRob3IgSlNSIDEwNSBFeHBlcnQgR3JvdXAKKyAqIEBzZWUgWE1MQ3J5cHRvQ29udGV4dCNzZXRVUklEZXJlZmVyZW5jZXIoVVJJRGVyZWZlcmVuY2VyKQorICogQHNlZSBYTUxDcnlwdG9Db250ZXh0I2dldFVSSURlcmVmZXJlbmNlcgorICovCitwdWJsaWMgaW50ZXJmYWNlIFVSSURlcmVmZXJlbmNlciB7CisKKyAgICAvKioKKyAgICAgKiBEZXJlZmVyZW5jZXMgdGhlIHNwZWNpZmllZCA8Y29kZT5VUklSZWZlcmVuY2U8L2NvZGU+IGFuZCByZXR1cm5zIHRoZSAKKyAgICAgKiBkZXJlZmVyZW5jZWQgZGF0YS4KKyAgICAgKgorICAgICAqIEBwYXJhbSB1cmlSZWZlcmVuY2UgdGhlIDxjb2RlPlVSSVJlZmVyZW5jZTwvY29kZT4KKyAgICAgKiBAcGFyYW0gY29udGV4dCBhbiA8Y29kZT5YTUxDcnlwdG9Db250ZXh0PC9jb2RlPiB0aGF0IG1heSAKKyAgICAgKiAgICBjb250YWluIGFkZGl0aW9uYWwgdXNlZnVsIGluZm9ybWF0aW9uIGZvciBkZXJlZmVyZW5jaW5nIHRoZSBVUkkuIFRoaXMgCisgICAgICogICAgaW1wbGVtZW50YXRpb24gc2hvdWxkIGRlcmVmZXJlbmNlIHRoZSBzcGVjaWZpZWQgCisgICAgICogICAgPGNvZGU+VVJJUmVmZXJlbmNlPC9jb2RlPiBhZ2FpbnN0IHRoZSBjb250ZXh0J3MgPGNvZGU+YmFzZVVSSTwvY29kZT4gCisgICAgICogICAgcGFyYW1ldGVyLCBpZiBzcGVjaWZpZWQuCisgICAgICogQHJldHVybiB0aGUgZGVyZWZlcmVuY2VkIGRhdGEgCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT51cmlSZWZlcmVuY2U8L2NvZGU+IG9yIAorICAgICAqICAgIDxjb2RlPmNvbnRleHQ8L2NvZGU+IGFyZSA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEB0aHJvd3MgVVJJUmVmZXJlbmNlRXhjZXB0aW9uIGlmIGFuIGV4Y2VwdGlvbiBvY2N1cnMgd2hpbGUgCisgICAgICogICAgZGVyZWZlcmVuY2luZyB0aGUgc3BlY2lmaWVkIDxjb2RlPnVyaVJlZmVyZW5jZTwvY29kZT4KKyAgICAgKi8KKyAgICBEYXRhIGRlcmVmZXJlbmNlKFVSSVJlZmVyZW5jZSB1cmlSZWZlcmVuY2UsIFhNTENyeXB0b0NvbnRleHQgY29udGV4dCkgCisJdGhyb3dzIFVSSVJlZmVyZW5jZUV4Y2VwdGlvbjsKK30KZGlmZiAtLWdpdCBhL3NyYy9qYXZheC94bWwvY3J5cHRvL1VSSVJlZmVyZW5jZS5qYXZhIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vVVJJUmVmZXJlbmNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTMxOTdjNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9qYXZheC94bWwvY3J5cHRvL1VSSVJlZmVyZW5jZS5qYXZhCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG87CisKKy8qKgorICogSWRlbnRpZmllcyBhIGRhdGEgb2JqZWN0IHZpYSBhIFVSSS1SZWZlcmVuY2UsIGFzIHNwZWNpZmllZCBieSAKKyAqIDxhIGhyZWY9Imh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzIzOTYudHh0Ij5SRkMgMjM5NjwvYT4uCisgKgorICogPHA+Tm90ZSB0aGF0IHNvbWUgc3ViY2xhc3NlcyBtYXkgbm90IGhhdmUgYSA8Y29kZT50eXBlPC9jb2RlPiBhdHRyaWJ1dGUKKyAqIGFuZCBmb3Igb2JqZWN0cyBvZiB0aG9zZSB0eXBlcywgdGhlIHtAbGluayAjZ2V0VHlwZX0gbWV0aG9kIGFsd2F5cyByZXR1cm5zIAorICogPGNvZGU+bnVsbDwvY29kZT4uIAorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgSlNSIDEwNSBFeHBlcnQgR3JvdXAKKyAqIEBzZWUgVVJJRGVyZWZlcmVuY2VyCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgVVJJUmVmZXJlbmNlIHsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIFVSSSBvZiB0aGUgcmVmZXJlbmNlZCBkYXRhIG9iamVjdC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIFVSSSBvZiB0aGUgZGF0YSBvYmplY3QgaW4gUkZDIDIzOTYgZm9ybWF0IChtYXkgYmUKKyAgICAgKiAgICA8Y29kZT5udWxsPC9jb2RlPiBpZiBub3Qgc3BlY2lmaWVkKQorICAgICAqLworICAgIFN0cmluZyBnZXRVUkkoKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHR5cGUgb2YgZGF0YSByZWZlcmVuY2VkIGJ5IHRoaXMgVVJJLgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgdHlwZSAoYSBVUkkpIG9mIHRoZSBkYXRhIG9iamVjdCAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+IAorICAgICAqICAgIGlmIG5vdCBzcGVjaWZpZWQpCisgICAgICovCisgICAgU3RyaW5nIGdldFR5cGUoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9qYXZheC94bWwvY3J5cHRvL1VSSVJlZmVyZW5jZUV4Y2VwdGlvbi5qYXZhIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vVVJJUmVmZXJlbmNlRXhjZXB0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVmOTlmNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9qYXZheC94bWwvY3J5cHRvL1VSSVJlZmVyZW5jZUV4Y2VwdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTgyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvOworCitpbXBvcnQgamF2YS5pby5QcmludFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvLlJldHJpZXZhbE1ldGhvZDsKKworLyoqCisgKiBJbmRpY2F0ZXMgYW4gZXhjZXB0aW9uYWwgY29uZGl0aW9uIHRocm93biB3aGlsZSBkZXJlZmVyZW5jaW5nIGEgCisgKiB7QGxpbmsgVVJJUmVmZXJlbmNlfS4KKyAqCisgKiA8cD5BIDxjb2RlPlVSSVJlZmVyZW5jZUV4Y2VwdGlvbjwvY29kZT4gY2FuIGNvbnRhaW4gYSBjYXVzZTogYW5vdGhlciAKKyAqIHRocm93YWJsZSB0aGF0IGNhdXNlZCB0aGlzIDxjb2RlPlVSSVJlZmVyZW5jZUV4Y2VwdGlvbjwvY29kZT4gdG8gZ2V0IHRocm93bi4gCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICogQGF1dGhvciBKU1IgMTA1IEV4cGVydCBHcm91cAorICogQHNlZSBVUklEZXJlZmVyZW5jZXIjZGVyZWZlcmVuY2UoVVJJUmVmZXJlbmNlLCBYTUxDcnlwdG9Db250ZXh0KQorICogQHNlZSBSZXRyaWV2YWxNZXRob2QjZGVyZWZlcmVuY2UoWE1MQ3J5cHRvQ29udGV4dCkKKyAqLworcHVibGljIGNsYXNzIFVSSVJlZmVyZW5jZUV4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbiB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA3MTczNDY5NzAzOTMyNTYxNDE5TDsKKworICAgIC8qKgorICAgICAqIFRoZSB0aHJvd2FibGUgdGhhdCBjYXVzZWQgdGhpcyBleGNlcHRpb24gdG8gZ2V0IHRocm93biwgb3IgbnVsbCBpZiB0aGlzCisgICAgICogZXhjZXB0aW9uIHdhcyBub3QgY2F1c2VkIGJ5IGFub3RoZXIgdGhyb3dhYmxlIG9yIGlmIHRoZSBjYXVzYXRpdmUKKyAgICAgKiB0aHJvd2FibGUgaXMgdW5rbm93bi4gCisgICAgICoKKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgcHJpdmF0ZSBUaHJvd2FibGUgY2F1c2U7CisKKyAgICBwcml2YXRlIFVSSVJlZmVyZW5jZSB1cmlSZWZlcmVuY2U7CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IDxjb2RlPlVSSVJlZmVyZW5jZUV4Y2VwdGlvbjwvY29kZT4gd2l0aCAKKyAgICAgKiA8Y29kZT5udWxsPC9jb2RlPiBhcyBpdHMgZGV0YWlsIG1lc3NhZ2UuCisgICAgICovCisgICAgcHVibGljIFVSSVJlZmVyZW5jZUV4Y2VwdGlvbigpIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IDxjb2RlPlVSSVJlZmVyZW5jZUV4Y2VwdGlvbjwvY29kZT4gd2l0aCB0aGUgc3BlY2lmaWVkIAorICAgICAqIGRldGFpbCBtZXNzYWdlLiAKKyAgICAgKgorICAgICAqIEBwYXJhbSBtZXNzYWdlIHRoZSBkZXRhaWwgbWVzc2FnZQorICAgICAqLworICAgIHB1YmxpYyBVUklSZWZlcmVuY2VFeGNlcHRpb24oU3RyaW5nIG1lc3NhZ2UpIHsKKyAgICAgICAgc3VwZXIobWVzc2FnZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIG5ldyA8Y29kZT5VUklSZWZlcmVuY2VFeGNlcHRpb248L2NvZGU+IHdpdGggdGhlIAorICAgICAqIHNwZWNpZmllZCBkZXRhaWwgbWVzc2FnZSBhbmQgY2F1c2UuICAKKyAgICAgKiA8cD5Ob3RlIHRoYXQgdGhlIGRldGFpbCBtZXNzYWdlIGFzc29jaWF0ZWQgd2l0aAorICAgICAqIDxjb2RlPmNhdXNlPC9jb2RlPiBpcyA8aT5ub3Q8L2k+IGF1dG9tYXRpY2FsbHkgaW5jb3Jwb3JhdGVkIGluCisgICAgICogdGhpcyBleGNlcHRpb24ncyBkZXRhaWwgbWVzc2FnZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBtZXNzYWdlIHRoZSBkZXRhaWwgbWVzc2FnZSAKKyAgICAgKiBAcGFyYW0gY2F1c2UgdGhlIGNhdXNlIChBIDx0dD5udWxsPC90dD4gdmFsdWUgaXMgcGVybWl0dGVkLCBhbmQgCisgICAgICoJICAgICAgaW5kaWNhdGVzIHRoYXQgdGhlIGNhdXNlIGlzIG5vbmV4aXN0ZW50IG9yIHVua25vd24uKQorICAgICAqLworICAgIHB1YmxpYyBVUklSZWZlcmVuY2VFeGNlcHRpb24oU3RyaW5nIG1lc3NhZ2UsIFRocm93YWJsZSBjYXVzZSkgeworICAgICAgICBzdXBlcihtZXNzYWdlKTsKKyAgICAgICAgdGhpcy5jYXVzZSA9IGNhdXNlOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBuZXcgPGNvZGU+VVJJUmVmZXJlbmNlRXhjZXB0aW9uPC9jb2RlPiB3aXRoIHRoZSAKKyAgICAgKiBzcGVjaWZpZWQgZGV0YWlsIG1lc3NhZ2UsIGNhdXNlIGFuZCA8Y29kZT5VUklSZWZlcmVuY2U8L2NvZGU+LgorICAgICAqIDxwPk5vdGUgdGhhdCB0aGUgZGV0YWlsIG1lc3NhZ2UgYXNzb2NpYXRlZCB3aXRoCisgICAgICogPGNvZGU+Y2F1c2U8L2NvZGU+IGlzIDxpPm5vdDwvaT4gYXV0b21hdGljYWxseSBpbmNvcnBvcmF0ZWQgaW4KKyAgICAgKiB0aGlzIGV4Y2VwdGlvbidzIGRldGFpbCBtZXNzYWdlLgorICAgICAqCisgICAgICogQHBhcmFtIG1lc3NhZ2UgdGhlIGRldGFpbCBtZXNzYWdlIAorICAgICAqIEBwYXJhbSBjYXVzZSB0aGUgY2F1c2UgKEEgPHR0Pm51bGw8L3R0PiB2YWx1ZSBpcyBwZXJtaXR0ZWQsIGFuZCAKKyAgICAgKgkgICAgICBpbmRpY2F0ZXMgdGhhdCB0aGUgY2F1c2UgaXMgbm9uZXhpc3RlbnQgb3IgdW5rbm93bi4pCisgICAgICogQHBhcmFtIHVyaVJlZmVyZW5jZSB0aGUgPGNvZGU+VVJJUmVmZXJlbmNlPC9jb2RlPiB0aGF0IHdhcyBiZWluZworICAgICAqICAgIGRlcmVmZXJlbmNlZCB3aGVuIHRoZSBlcnJvciB3YXMgZW5jb3VudGVyZWQKKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPnVyaVJlZmVyZW5jZTwvY29kZT4gaXMKKyAgICAgKiAgICA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqLworICAgIHB1YmxpYyBVUklSZWZlcmVuY2VFeGNlcHRpb24oU3RyaW5nIG1lc3NhZ2UsIFRocm93YWJsZSBjYXVzZSwgCisJVVJJUmVmZXJlbmNlIHVyaVJlZmVyZW5jZSkgeworCXRoaXMobWVzc2FnZSwgY2F1c2UpOworCWlmICh1cmlSZWZlcmVuY2UgPT0gbnVsbCkgeworCSAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oInVyaVJlZmVyZW5jZSBjYW5ub3QgYmUgbnVsbCIpOworCX0KKwl0aGlzLnVyaVJlZmVyZW5jZSA9IHVyaVJlZmVyZW5jZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IDxjb2RlPlVSSVJlZmVyZW5jZUV4Y2VwdGlvbjwvY29kZT4gd2l0aCB0aGUgc3BlY2lmaWVkIAorICAgICAqIGNhdXNlIGFuZCBhIGRldGFpbCBtZXNzYWdlIG9mIDxjb2RlPihjYXVzZT09bnVsbCA/IG51bGwgOiAKKyAgICAgKiBjYXVzZS50b1N0cmluZygpKTwvY29kZT4gKHdoaWNoIHR5cGljYWxseSBjb250YWlucyB0aGUgY2xhc3MgYW5kIGRldGFpbCAKKyAgICAgKiBtZXNzYWdlIG9mIDxjb2RlPmNhdXNlPC9jb2RlPikuCisgICAgICoKKyAgICAgKiBAcGFyYW0gY2F1c2UgdGhlIGNhdXNlIChBIDx0dD5udWxsPC90dD4gdmFsdWUgaXMgcGVybWl0dGVkLCBhbmQgCisgICAgICogICAgICAgIGluZGljYXRlcyB0aGF0IHRoZSBjYXVzZSBpcyBub25leGlzdGVudCBvciB1bmtub3duLikKKyAgICAgKi8KKyAgICBwdWJsaWMgVVJJUmVmZXJlbmNlRXhjZXB0aW9uKFRocm93YWJsZSBjYXVzZSkgeworICAgICAgICBzdXBlcihjYXVzZT09bnVsbCA/IG51bGwgOiBjYXVzZS50b1N0cmluZygpKTsKKyAgICAgICAgdGhpcy5jYXVzZSA9IGNhdXNlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIDxjb2RlPlVSSVJlZmVyZW5jZTwvY29kZT4gdGhhdCB3YXMgYmVpbmcgZGVyZWZlcmVuY2VkCisgICAgICogd2hlbiB0aGUgZXhjZXB0aW9uIHdhcyB0aHJvd24uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSA8Y29kZT5VUklSZWZlcmVuY2U8L2NvZGU+IHRoYXQgd2FzIGJlaW5nIGRlcmVmZXJlbmNlZAorICAgICAqIHdoZW4gdGhlIGV4Y2VwdGlvbiB3YXMgdGhyb3duLCBvciA8Y29kZT5udWxsPC9jb2RlPiBpZiBub3Qgc3BlY2lmaWVkCisgICAgICovCisgICAgcHVibGljIFVSSVJlZmVyZW5jZSBnZXRVUklSZWZlcmVuY2UoKSB7CisJcmV0dXJuIHVyaVJlZmVyZW5jZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBjYXVzZSBvZiB0aGlzIDxjb2RlPlVSSVJlZmVyZW5jZUV4Y2VwdGlvbjwvY29kZT4gb3IgCisgICAgICogPGNvZGU+bnVsbDwvY29kZT4gaWYgdGhlIGNhdXNlIGlzIG5vbmV4aXN0ZW50IG9yIHVua25vd24uICAoVGhlIAorICAgICAqIGNhdXNlIGlzIHRoZSB0aHJvd2FibGUgdGhhdCBjYXVzZWQgdGhpcyAKKyAgICAgKiA8Y29kZT5VUklSZWZlcmVuY2VFeGNlcHRpb248L2NvZGU+IHRvIGdldCB0aHJvd24uKQorICAgICAqCisgICAgICogQHJldHVybiB0aGUgY2F1c2Ugb2YgdGhpcyA8Y29kZT5VUklSZWZlcmVuY2VFeGNlcHRpb248L2NvZGU+IG9yIAorICAgICAqICAgIDxjb2RlPm51bGw8L2NvZGU+IGlmIHRoZSBjYXVzZSBpcyBub25leGlzdGVudCBvciB1bmtub3duLgorICAgICAqLworICAgIHB1YmxpYyBUaHJvd2FibGUgZ2V0Q2F1c2UoKSB7CisgICAgICAgIHJldHVybiBjYXVzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQcmludHMgdGhpcyA8Y29kZT5VUklSZWZlcmVuY2VFeGNlcHRpb248L2NvZGU+LCBpdHMgYmFja3RyYWNlIGFuZAorICAgICAqIHRoZSBjYXVzZSdzIGJhY2t0cmFjZSB0byB0aGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHByaW50U3RhY2tUcmFjZSgpIHsKKwlzdXBlci5wcmludFN0YWNrVHJhY2UoKTsKKwkvL1hYWCBwcmludCBiYWNrdHJhY2Ugb2YgY2F1c2UKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQcmludHMgdGhpcyA8Y29kZT5VUklSZWZlcmVuY2VFeGNlcHRpb248L2NvZGU+LCBpdHMgYmFja3RyYWNlIGFuZAorICAgICAqIHRoZSBjYXVzZSdzIGJhY2t0cmFjZSB0byB0aGUgc3BlY2lmaWVkIHByaW50IHN0cmVhbS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzIDxjb2RlPlByaW50U3RyZWFtPC9jb2RlPiB0byB1c2UgZm9yIG91dHB1dAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHByaW50U3RhY2tUcmFjZShQcmludFN0cmVhbSBzKSB7CisJc3VwZXIucHJpbnRTdGFja1RyYWNlKHMpOworCS8vWFhYIHByaW50IGJhY2t0cmFjZSBvZiBjYXVzZQorICAgIH0KKworICAgIC8qKgorICAgICAqIFByaW50cyB0aGlzIDxjb2RlPlVSSVJlZmVyZW5jZUV4Y2VwdGlvbjwvY29kZT4sIGl0cyBiYWNrdHJhY2UgYW5kCisgICAgICogdGhlIGNhdXNlJ3MgYmFja3RyYWNlIHRvIHRoZSBzcGVjaWZpZWQgcHJpbnQgd3JpdGVyLgorICAgICAqCisgICAgICogQHBhcmFtIHMgPGNvZGU+UHJpbnRXcml0ZXI8L2NvZGU+IHRvIHVzZSBmb3Igb3V0cHV0CisgICAgICovCisgICAgcHVibGljIHZvaWQgcHJpbnRTdGFja1RyYWNlKFByaW50V3JpdGVyIHMpIHsKKyAgICAgICAgc3VwZXIucHJpbnRTdGFja1RyYWNlKHMpOworCS8vWFhYIHByaW50IGJhY2t0cmFjZSBvZiBjYXVzZQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9qYXZheC94bWwvY3J5cHRvL1hNTENyeXB0b0NvbnRleHQuamF2YSBiL3NyYy9qYXZheC94bWwvY3J5cHRvL1hNTENyeXB0b0NvbnRleHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTA5ZTVkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vWE1MQ3J5cHRvQ29udGV4dC5qYXZhCkBAIC0wLDAgKzEsMjIwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvOworCisvKioKKyAqIENvbnRhaW5zIGNvbW1vbiBjb250ZXh0IGluZm9ybWF0aW9uIGZvciBYTUwgY3J5cHRvZ3JhcGhpYyBvcGVyYXRpb25zLgorICoKKyAqIDxwPlRoaXMgaW50ZXJmYWNlIGNvbnRhaW5zIG1ldGhvZHMgZm9yIHNldHRpbmcgYW5kIHJldHJpZXZpbmcgcHJvcGVydGllcyAKKyAqIHRoYXQgYWZmZWN0IHRoZSBwcm9jZXNzaW5nIG9mIFhNTCBzaWduYXR1cmVzIG9yIFhNTCBlbmNyeXB0ZWQgc3RydWN0dXJlcy4KKyAqCisgKiA8cD5Ob3RlIHRoYXQgPGNvZGU+WE1MQ3J5cHRvQ29udGV4dDwvY29kZT4gaW5zdGFuY2VzIGNhbiBjb250YWluIGluZm9ybWF0aW9uCisgKiBhbmQgc3RhdGUgc3BlY2lmaWMgdG8gdGhlIFhNTCBjcnlwdG9ncmFwaGljIHN0cnVjdHVyZSBpdCBpcyB1c2VkIHdpdGguCisgKiBUaGUgcmVzdWx0cyBhcmUgdW5wcmVkaWN0YWJsZSBpZiBhbiA8Y29kZT5YTUxDcnlwdG9Db250ZXh0PC9jb2RlPiBpcyAKKyAqIHVzZWQgd2l0aCBtdWx0aXBsZSBzdHJ1Y3R1cmVzIChmb3IgZXhhbXBsZSwgeW91IHNob3VsZCBub3QgdXNlIHRoZSBzYW1lIAorICoge0BsaW5rIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5YTUxWYWxpZGF0ZUNvbnRleHR9IGluc3RhbmNlIHRvIHZhbGlkYXRlIHR3byAKKyAqIGRpZmZlcmVudCB7QGxpbmsgamF2YXgueG1sLmNyeXB0by5kc2lnLlhNTFNpZ25hdHVyZX0gb2JqZWN0cykuIAorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgSlNSIDEwNSBFeHBlcnQgR3JvdXAKKyAqLworcHVibGljIGludGVyZmFjZSBYTUxDcnlwdG9Db250ZXh0IHsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGJhc2UgVVJJLgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgYmFzZSBVUkksIG9yIDxjb2RlPm51bGw8L2NvZGU+IGlmIG5vdCBzcGVjaWZpZWQKKyAgICAgKiBAc2VlICNzZXRCYXNlVVJJKFN0cmluZykKKyAgICAgKi8KKyAgICBTdHJpbmcgZ2V0QmFzZVVSSSgpOworCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgYmFzZSBVUkkuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYmFzZVVSSSB0aGUgYmFzZSBVUkksIG9yIDxjb2RlPm51bGw8L2NvZGU+IHRvIHJlbW92ZSBjdXJyZW50CisgICAgICogICAgdmFsdWUKKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiA8Y29kZT5iYXNlVVJJPC9jb2RlPiBpcyBub3QgUkZDCisgICAgICogICAgMjM5NiBjb21wbGlhbnQKKyAgICAgKiBAc2VlICNnZXRCYXNlVVJJCisgICAgICovCisgICAgdm9pZCBzZXRCYXNlVVJJKFN0cmluZyBiYXNlVVJJKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGtleSBzZWxlY3RvciBmb3IgZmluZGluZyBhIGtleS4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIGtleSBzZWxlY3Rvciwgb3IgPGNvZGU+bnVsbDwvY29kZT4gaWYgbm90IHNwZWNpZmllZAorICAgICAqIEBzZWUgI3NldEtleVNlbGVjdG9yKEtleVNlbGVjdG9yKQorICAgICAqLworICAgIEtleVNlbGVjdG9yIGdldEtleVNlbGVjdG9yKCk7CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBrZXkgc2VsZWN0b3IgZm9yIGZpbmRpbmcgYSBrZXkuCisgICAgICoKKyAgICAgKiBAcGFyYW0ga3MgdGhlIGtleSBzZWxlY3Rvciwgb3IgPGNvZGU+bnVsbDwvY29kZT4gdG8gcmVtb3ZlIHRoZSBjdXJyZW50CisgICAgICogICAgc2V0dGluZworICAgICAqIEBzZWUgI2dldEtleVNlbGVjdG9yCisgICAgICovCisgICAgdm9pZCBzZXRLZXlTZWxlY3RvcihLZXlTZWxlY3RvciBrcyk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgPGNvZGU+VVJJRGVyZWZlcmVuY2VyPC9jb2RlPiB0aGF0IGlzIHVzZWQgdG8gZGVyZWZlcmVuY2UKKyAgICAgKiB7QGxpbmsgVVJJUmVmZXJlbmNlfXMuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSA8Y29kZT5VUklEZXJlZmVyZW5jZXI8L2NvZGU+LCBvciA8Y29kZT5udWxsPC9jb2RlPiBpZiBub3QKKyAgICAgKiAgICBzcGVjaWZpZWQKKyAgICAgKiBAc2VlICNzZXRVUklEZXJlZmVyZW5jZXIoVVJJRGVyZWZlcmVuY2VyKQorICAgICAqLworICAgIFVSSURlcmVmZXJlbmNlciBnZXRVUklEZXJlZmVyZW5jZXIoKTsKKworICAgIC8qKgorICAgICAqIFNldHMgYSA8Y29kZT5VUklEZXJlZmVyZW5jZXI8L2NvZGU+IHRoYXQgaXMgdXNlZCB0byBkZXJlZmVyZW5jZQorICAgICAqIHtAbGluayBVUklSZWZlcmVuY2V9cy4gVGhlIHNwZWNpZmllZCA8Y29kZT5VUklEZXJlZmVyZW5jZXI8L2NvZGU+CisgICAgICogaXMgdXNlZCBpbiBwbGFjZSBvZiBhbiBpbXBsZW1lbnRhdGlvbidzIGRlZmF1bHQgCisgICAgICogPGNvZGU+VVJJRGVyZWZlcmVuY2VyPC9jb2RlPi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkZXJlZmVyZW5jZXIgdGhlIDxjb2RlPlVSSURlcmVmZXJlbmNlcjwvY29kZT4sIG9yIAorICAgICAqICAgIDxjb2RlPm51bGw8L2NvZGU+IHRvIHJlbW92ZSBhbnkgY3VycmVudCBzZXR0aW5nCisgICAgICogQHNlZSAjZ2V0VVJJRGVyZWZlcmVuY2VyCisgICAgICovCisgICAgdm9pZCBzZXRVUklEZXJlZmVyZW5jZXIoVVJJRGVyZWZlcmVuY2VyIGRlcmVmZXJlbmNlcik7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBuYW1lc3BhY2UgcHJlZml4IHRoYXQgdGhlIHNwZWNpZmllZCBuYW1lc3BhY2UgVVJJIGlzCisgICAgICogYXNzb2NpYXRlZCB3aXRoLiBSZXR1cm5zIHRoZSBzcGVjaWZpZWQgZGVmYXVsdCBwcmVmaXggaWYgdGhlIHNwZWNpZmllZAorICAgICAqIG5hbWVzcGFjZSBVUkkgaGFzIG5vdCBiZWVuIGJvdW5kIHRvIGEgcHJlZml4LiBUbyBiaW5kIGEgbmFtZXNwYWNlIFVSSQorICAgICAqIHRvIGEgcHJlZml4LCBjYWxsIHRoZSB7QGxpbmsgI3B1dE5hbWVzcGFjZVByZWZpeCBwdXROYW1lc3BhY2VQcmVmaXh9CisgICAgICogbWV0aG9kLgorICAgICAqCisgICAgICogQHBhcmFtIG5hbWVzcGFjZVVSSSBhIG5hbWVzcGFjZSBVUkkKKyAgICAgKiBAcGFyYW0gZGVmYXVsdFByZWZpeCB0aGUgcHJlZml4IHRvIGJlIHJldHVybmVkIGluIHRoZSBldmVudCB0aGF0IHRoZQorICAgICAqICAgIHRoZSBzcGVjaWZpZWQgbmFtZXNwYWNlIFVSSSBoYXMgbm90IGJlZW4gYm91bmQgdG8gYSBwcmVmaXguCisgICAgICogQHJldHVybiB0aGUgcHJlZml4IHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZXNwYWNlIFVSSSwKKyAgICAgKiAgICBvciA8Y29kZT5kZWZhdWx0UHJlZml4PC9jb2RlPiBpZiB0aGUgVVJJIGlzIG5vdCByZWdpc3RlcmVkLiBJZgorICAgICAqICAgIHRoZSBuYW1lc3BhY2UgVVJJIGlzIHJlZ2lzdGVyZWQgYnV0IGhhcyBubyBwcmVmaXgsIGFuIGVtcHR5IHN0cmluZworICAgICAqICAgICg8Y29kZT4iIjwvY29kZT4pIGlzIHJldHVybmVkLgorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+bmFtZXNwYWNlVVJJPC9jb2RlPiBpcworICAgICAqICAgIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogQHNlZSAjcHV0TmFtZXNwYWNlUHJlZml4KFN0cmluZywgU3RyaW5nKQorICAgICAqLworICAgIFN0cmluZyBnZXROYW1lc3BhY2VQcmVmaXgoU3RyaW5nIG5hbWVzcGFjZVVSSSwgU3RyaW5nIGRlZmF1bHRQcmVmaXgpOworCisgICAgLyoqCisgICAgICogTWFwcyB0aGUgc3BlY2lmaWVkIG5hbWVzcGFjZSBVUkkgdG8gdGhlIHNwZWNpZmllZCBwcmVmaXguIElmIHRoZXJlIGlzCisgICAgICogYWxyZWFkeSBhIHByZWZpeCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lc3BhY2UgVVJJLCB0aGUgb2xkCisgICAgICogcHJlZml4IGlzIHJlcGxhY2VkIGJ5IHRoZSBzcGVjaWZpZWQgcHJlZml4LgorICAgICAqCisgICAgICogQHBhcmFtIG5hbWVzcGFjZVVSSSBhIG5hbWVzcGFjZSBVUkkKKyAgICAgKiBAcGFyYW0gcHJlZml4IGEgbmFtZXNwYWNlIHByZWZpeCAob3IgPGNvZGU+bnVsbDwvY29kZT4gdG8gcmVtb3ZlIGFueQorICAgICAqICAgIGV4aXN0aW5nIG1hcHBpbmcpLiBTcGVjaWZ5aW5nIHRoZSBlbXB0eSBzdHJpbmcgKDxjb2RlPiIiPC9jb2RlPikKKyAgICAgKiAgICBiaW5kcyBubyBwcmVmaXggdG8gdGhlIG5hbWVzcGFjZSBVUkkuCisgICAgICogQHJldHVybiB0aGUgcHJldmlvdXMgcHJlZml4IGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWVzcGFjZQorICAgICAqICAgIFVSSSwgb3IgPGNvZGU+bnVsbDwvY29kZT4gaWYgdGhlcmUgd2FzIG5vbmUKKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPm5hbWVzcGFjZVVSSTwvY29kZT4gaXMKKyAgICAgKiAgICA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEBzZWUgI2dldE5hbWVzcGFjZVByZWZpeChTdHJpbmcsIFN0cmluZykKKyAgICAgKi8KKyAgICBTdHJpbmcgcHV0TmFtZXNwYWNlUHJlZml4KFN0cmluZyBuYW1lc3BhY2VVUkksIFN0cmluZyBwcmVmaXgpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgZGVmYXVsdCBuYW1lc3BhY2UgcHJlZml4LiBUaGUgZGVmYXVsdCBuYW1lc3BhY2UgcHJlZml4CisgICAgICogaXMgdGhlIHByZWZpeCBmb3IgYWxsIG5hbWVzcGFjZSBVUklzIG5vdCBleHBsaWNpdGx5IHNldCBieSB0aGUKKyAgICAgKiB7QGxpbmsgI3B1dE5hbWVzcGFjZVByZWZpeCBwdXROYW1lc3BhY2VQcmVmaXh9IG1ldGhvZC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIGRlZmF1bHQgbmFtZXNwYWNlIHByZWZpeCwgb3IgPGNvZGU+bnVsbDwvY29kZT4gaWYgbm9uZSBoYXMKKyAgICAgKiAgICBiZWVuIHNldC4KKyAgICAgKiBAc2VlICNzZXREZWZhdWx0TmFtZXNwYWNlUHJlZml4KFN0cmluZykKKyAgICAgKi8KKyAgICBTdHJpbmcgZ2V0RGVmYXVsdE5hbWVzcGFjZVByZWZpeCgpOworCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgZGVmYXVsdCBuYW1lc3BhY2UgcHJlZml4LiBUaGlzIHNldHMgdGhlIG5hbWVzcGFjZSBwcmVmaXggZm9yCisgICAgICogYWxsIG5hbWVzcGFjZSBVUklzIG5vdCBleHBsaWNpdGx5IHNldCBieSB0aGUge0BsaW5rICNwdXROYW1lc3BhY2VQcmVmaXgKKyAgICAgKiBwdXROYW1lc3BhY2VQcmVmaXh9IG1ldGhvZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkZWZhdWx0UHJlZml4IHRoZSBkZWZhdWx0IG5hbWVzcGFjZSBwcmVmaXgsIG9yIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogICAgdG8gcmVtb3ZlIHRoZSBjdXJyZW50IHNldHRpbmcuIFNwZWNpZnkgdGhlIGVtcHR5IHN0cmluZworICAgICAqICAgICg8Y29kZT4iIjwvY29kZT4pIHRvIGJpbmQgbm8gcHJlZml4LgorICAgICAqIEBzZWUgI2dldERlZmF1bHROYW1lc3BhY2VQcmVmaXgKKyAgICAgKi8KKyAgICB2b2lkIHNldERlZmF1bHROYW1lc3BhY2VQcmVmaXgoU3RyaW5nIGRlZmF1bHRQcmVmaXgpOworCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgc3BlY2lmaWVkIHByb3BlcnR5LgorICAgICAqCisgICAgICogQHBhcmFtIG5hbWUgdGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5CisgICAgICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgdG8gYmUgc2V0CisgICAgICogQHJldHVybiB0aGUgcHJldmlvdXMgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBwcm9wZXJ0eSwgb3IKKyAgICAgKiAgICA8Y29kZT5udWxsPC9jb2RlPiBpZiBpdCBkaWQgbm90IGhhdmUgYSB2YWx1ZQorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+bmFtZTwvY29kZT4gaXMgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiBAc2VlICNnZXRQcm9wZXJ0eShTdHJpbmcpCisgICAgICovCisgICAgT2JqZWN0IHNldFByb3BlcnR5KFN0cmluZyBuYW1lLCBPYmplY3QgdmFsdWUpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBwcm9wZXJ0eS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBuYW1lIHRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eQorICAgICAqIEByZXR1cm4gdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBwcm9wZXJ0eSwgb3IKKyAgICAgKiAgICA8Y29kZT5udWxsPC9jb2RlPiBpZiBpdCBkb2VzIG5vdCBoYXZlIGEgdmFsdWUKKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPm5hbWU8L2NvZGU+IGlzIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogQHNlZSAjc2V0UHJvcGVydHkoU3RyaW5nLCBPYmplY3QpCisgICAgICovCisgICAgT2JqZWN0IGdldFByb3BlcnR5KFN0cmluZyBuYW1lKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHZhbHVlIHRvIHdoaWNoIHRoaXMgY29udGV4dCBtYXBzIHRoZSBzcGVjaWZpZWQga2V5LgorICAgICAqCisgICAgICogPHA+TW9yZSBmb3JtYWxseSwgaWYgdGhpcyBjb250ZXh0IGNvbnRhaW5zIGEgbWFwcGluZyBmcm9tIGEga2V5IAorICAgICAqIDxjb2RlPms8L2NvZGU+IHRvIGEgdmFsdWUgPGNvZGU+djwvY29kZT4gc3VjaCB0aGF0IAorICAgICAqIDxjb2RlPihrZXk9PW51bGwgPyBrPT1udWxsIDoga2V5LmVxdWFscyhrKSk8L2NvZGU+LCB0aGVuIHRoaXMgbWV0aG9kIAorICAgICAqIHJldHVybnMgPGNvZGU+djwvY29kZT47IG90aGVyd2lzZSBpdCByZXR1cm5zIDxjb2RlPm51bGw8L2NvZGU+LiAoVGhlcmUgCisgICAgICogY2FuIGJlIGF0IG1vc3Qgb25lIHN1Y2ggbWFwcGluZy4pCisgICAgICoKKyAgICAgKiA8cD5UaGlzIG1ldGhvZCBpcyB1c2VmdWwgZm9yIHJldHJpZXZpbmcgYXJiaXRyYXJ5IGluZm9ybWF0aW9uIHRoYXQgaXMKKyAgICAgKiBzcGVjaWZpYyB0byB0aGUgY3J5cHRvZ3JhcGhpYyBvcGVyYXRpb24gdGhhdCB0aGlzIGNvbnRleHQgaXMgdXNlZCBmb3IuIAorICAgICAqCisgICAgICogQHBhcmFtIGtleSB0aGUga2V5IHdob3NlIGFzc29jaWF0ZWQgdmFsdWUgaXMgdG8gYmUgcmV0dXJuZWQKKyAgICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSB0byB3aGljaCB0aGlzIGNvbnRleHQgbWFwcyB0aGUgc3BlY2lmaWVkIGtleSwgb3IKKyAgICAgKiAgICA8Y29kZT5udWxsPC9jb2RlPiBpZiB0aGVyZSBpcyBubyBtYXBwaW5nIGZvciB0aGUga2V5CisgICAgICogQHNlZSAjcHV0KE9iamVjdCwgT2JqZWN0KQorICAgICAqLyAKKyAgICBPYmplY3QgZ2V0KE9iamVjdCBrZXkpOworCisgICAgLyoqCisgICAgICogQXNzb2NpYXRlcyB0aGUgc3BlY2lmaWVkIHZhbHVlIHdpdGggdGhlIHNwZWNpZmllZCBrZXkgaW4gdGhpcyBjb250ZXh0LgorICAgICAqIElmIHRoZSBjb250ZXh0IHByZXZpb3VzbHkgY29udGFpbmVkIGEgbWFwcGluZyBmb3IgdGhpcyBrZXksIHRoZSBvbGQKKyAgICAgKiB2YWx1ZSBpcyByZXBsYWNlZCBieSB0aGUgc3BlY2lmaWVkIHZhbHVlLgorICAgICAqCisgICAgICogPHA+VGhpcyBtZXRob2QgaXMgdXNlZnVsIGZvciBzdG9yaW5nIGFyYml0cmFyeSBpbmZvcm1hdGlvbiB0aGF0IGlzCisgICAgICogc3BlY2lmaWMgdG8gdGhlIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9uIHRoYXQgdGhpcyBjb250ZXh0IGlzIHVzZWQgZm9yLiAKKyAgICAgKgorICAgICAqIEBwYXJhbSBrZXkga2V5IHdpdGggd2hpY2ggdGhlIHNwZWNpZmllZCB2YWx1ZSBpcyB0byBiZSBhc3NvY2lhdGVkIHdpdGgKKyAgICAgKiBAcGFyYW0gdmFsdWUgdmFsdWUgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQga2V5CisgICAgICogQHJldHVybiB0aGUgcHJldmlvdXMgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBrZXksIG9yIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogICAgaWYgdGhlcmUgd2FzIG5vIG1hcHBpbmcgZm9yIHRoZSBrZXkKKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBzb21lIGFzcGVjdCBvZiB0aGlzIGtleSBvciB2YWx1ZQorICAgICAqICAgIHByZXZlbnRzIGl0IGZyb20gYmVpbmcgc3RvcmVkIGluIHRoaXMgY29udGV4dAorICAgICAqIEBzZWUgI2dldChPYmplY3QpCisgICAgICovCisgICAgT2JqZWN0IHB1dChPYmplY3Qga2V5LCBPYmplY3QgdmFsdWUpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2phdmF4L3htbC9jcnlwdG8vWE1MU3RydWN0dXJlLmphdmEgYi9zcmMvamF2YXgveG1sL2NyeXB0by9YTUxTdHJ1Y3R1cmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmQxNDY3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vWE1MU3RydWN0dXJlLmphdmEKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0bzsKKworLyoqCisgKiBBIHJlcHJlc2VudGF0aW9uIG9mIGFuIFhNTCBzdHJ1Y3R1cmUgZnJvbSBhbnkgbmFtZXNwYWNlLiBUaGUgcHVycG9zZSBvZiAKKyAqIHRoaXMgaW50ZXJmYWNlIGlzIHRvIGdyb3VwIChhbmQgcHJvdmlkZSB0eXBlIHNhZmV0eSBmb3IpIGFsbCAKKyAqIHJlcHJlc2VudGF0aW9ucyBvZiBYTUwgc3RydWN0dXJlcy4KKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKiBAYXV0aG9yIEpTUiAxMDUgRXhwZXJ0IEdyb3VwCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgWE1MU3RydWN0dXJlIHsKKworICAgIC8qKgorICAgICAqIEluZGljYXRlcyB3aGV0aGVyIGEgc3BlY2lmaWVkIGZlYXR1cmUgaXMgc3VwcG9ydGVkLgorICAgICAqCisgICAgICogQHBhcmFtIGZlYXR1cmUgdGhlIGZlYXR1cmUgbmFtZSAoYXMgYW4gYWJzb2x1dGUgVVJJKQorICAgICAqIEByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIHNwZWNpZmllZCBmZWF0dXJlIGlzIHN1cHBvcnRlZCwKKyAgICAgKiAgICA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5mZWF0dXJlPC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqLworICAgIGJvb2xlYW4gaXNGZWF0dXJlU3VwcG9ydGVkKFN0cmluZyBmZWF0dXJlKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9qYXZheC94bWwvY3J5cHRvL2RvbS9ET01DcnlwdG9Db250ZXh0LmphdmEgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kb20vRE9NQ3J5cHRvQ29udGV4dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkMzY4NzYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kb20vRE9NQ3J5cHRvQ29udGV4dC5qYXZhCkBAIC0wLDAgKzEsMjM3IEBACisvKgorICogQ29weXJpZ2h0IDIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLmRvbTsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uS2V5U2VsZWN0b3I7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5VUklEZXJlZmVyZW5jZXI7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5YTUxDcnlwdG9Db250ZXh0OworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworLyoqCisgKiBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgRE9NLXNwZWNpZmljIGltcGxlbWVudGF0aW9uIG9mIHRoZQorICoge0BsaW5rIFhNTENyeXB0b0NvbnRleHR9IGludGVyZmFjZS4gSXQgYWxzbyBpbmNsdWRlcyBhZGRpdGlvbmFsCisgKiBtZXRob2RzIHRoYXQgYXJlIHNwZWNpZmljIHRvIGEgRE9NLWJhc2VkIGltcGxlbWVudGF0aW9uIGZvciByZWdpc3RlcmluZworICogYW5kIHJldHJpZXZpbmcgZWxlbWVudHMgdGhhdCBjb250YWluIGF0dHJpYnV0ZXMgb2YgdHlwZSBJRC4gCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICogQGF1dGhvciBKU1IgMTA1IEV4cGVydCBHcm91cAorICovCitwdWJsaWMgY2xhc3MgRE9NQ3J5cHRvQ29udGV4dCBpbXBsZW1lbnRzIFhNTENyeXB0b0NvbnRleHQgeworCisgICAgcHJpdmF0ZSBIYXNoTWFwIG5zTWFwID0gbmV3IEhhc2hNYXAoKTsKKyAgICBwcml2YXRlIEhhc2hNYXAgaWRNYXAgPSBuZXcgSGFzaE1hcCgpOworICAgIHByaXZhdGUgSGFzaE1hcCBvYmpNYXAgPSBuZXcgSGFzaE1hcCgpOworICAgIHByaXZhdGUgU3RyaW5nIGJhc2VVUkk7CisgICAgcHJpdmF0ZSBLZXlTZWxlY3RvciBrczsKKyAgICBwcml2YXRlIFVSSURlcmVmZXJlbmNlciBkZXJlZmVyZW5jZXI7CisgICAgcHJpdmF0ZSBIYXNoTWFwIHByb3BNYXAgPSBuZXcgSGFzaE1hcCgpOworICAgIHByaXZhdGUgU3RyaW5nIGRlZmF1bHRQcmVmaXg7CisKKyAgICAvKioKKyAgICAgKiBEZWZhdWx0IGNvbnN0cnVjdG9yLiAoRm9yIGludm9jYXRpb24gYnkgc3ViY2xhc3MgY29uc3RydWN0b3JzKS4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgRE9NQ3J5cHRvQ29udGV4dCgpIHt9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHVzZXMgYW4gaW50ZXJuYWwge0BsaW5rIEhhc2hNYXB9IHRvIGdldCB0aGUgcHJlZml4IAorICAgICAqIHRoYXQgdGhlIHNwZWNpZmllZCBVUkkgbWFwcyB0by4gSXQgcmV0dXJucyB0aGUgPGNvZGU+ZGVmYXVsdFByZWZpeDwvY29kZT4KKyAgICAgKiBpZiBpdCBtYXBzIHRvIDxjb2RlPm51bGw8L2NvZGU+LgorICAgICAqCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiB7QGluaGVyaXREb2N9CisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXROYW1lc3BhY2VQcmVmaXgoU3RyaW5nIG5hbWVzcGFjZVVSSSwgCisJU3RyaW5nIGRlZmF1bHRQcmVmaXgpIHsKKyAgICAgICAgaWYgKG5hbWVzcGFjZVVSSSA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oIm5hbWVzcGFjZVVSSSBjYW5ub3QgYmUgbnVsbCIpOworICAgICAgICB9CisJU3RyaW5nIHByZWZpeCA9IChTdHJpbmcpIG5zTWFwLmdldChuYW1lc3BhY2VVUkkpOworCXJldHVybiAocHJlZml4ICE9IG51bGwgPyBwcmVmaXggOiBkZWZhdWx0UHJlZml4KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHVzZXMgYW4gaW50ZXJuYWwge0BsaW5rIEhhc2hNYXB9IHRvIG1hcCB0aGUgVVJJCisgICAgICogdG8gdGhlIHNwZWNpZmllZCBwcmVmaXguCisgICAgICoKKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIHtAaW5oZXJpdERvY30KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHB1dE5hbWVzcGFjZVByZWZpeChTdHJpbmcgbmFtZXNwYWNlVVJJLCBTdHJpbmcgcHJlZml4KSB7CisgICAgICAgIGlmIChuYW1lc3BhY2VVUkkgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJuYW1lc3BhY2VVUkkgaXMgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAoU3RyaW5nKSBuc01hcC5wdXQobmFtZXNwYWNlVVJJLCBwcmVmaXgpOworICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0RGVmYXVsdE5hbWVzcGFjZVByZWZpeCgpIHsKKwlyZXR1cm4gZGVmYXVsdFByZWZpeDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXREZWZhdWx0TmFtZXNwYWNlUHJlZml4KFN0cmluZyBkZWZhdWx0UHJlZml4KSB7CisJdGhpcy5kZWZhdWx0UHJlZml4ID0gZGVmYXVsdFByZWZpeDsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldEJhc2VVUkkoKSB7CisgICAgICAgIHJldHVybiBiYXNlVVJJOworICAgIH0KKworICAgIC8qKgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHtAaW5oZXJpdERvY30KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRCYXNlVVJJKFN0cmluZyBiYXNlVVJJKSB7CisJaWYgKGJhc2VVUkkgIT0gbnVsbCkgeworCSAgICBqYXZhLm5ldC5VUkkuY3JlYXRlKGJhc2VVUkkpOworCX0KKyAgICAgICAgdGhpcy5iYXNlVVJJID0gYmFzZVVSSTsKKyAgICB9CisKKyAgICBwdWJsaWMgVVJJRGVyZWZlcmVuY2VyIGdldFVSSURlcmVmZXJlbmNlcigpIHsKKyAgICAgICAgcmV0dXJuIGRlcmVmZXJlbmNlcjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRVUklEZXJlZmVyZW5jZXIoVVJJRGVyZWZlcmVuY2VyIGRlcmVmZXJlbmNlcikgeworICAgICAgICB0aGlzLmRlcmVmZXJlbmNlciA9IGRlcmVmZXJlbmNlcjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHVzZXMgYW4gaW50ZXJuYWwge0BsaW5rIEhhc2hNYXB9IHRvIGdldCB0aGUgb2JqZWN0IAorICAgICAqIHRoYXQgdGhlIHNwZWNpZmllZCBuYW1lIG1hcHMgdG8uIAorICAgICAqCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiB7QGluaGVyaXREb2N9CisgICAgICovCisgICAgcHVibGljIE9iamVjdCBnZXRQcm9wZXJ0eShTdHJpbmcgbmFtZSkgeworICAgICAgICBpZiAobmFtZSA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oIm5hbWUgaXMgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBwcm9wTWFwLmdldChuYW1lKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHVzZXMgYW4gaW50ZXJuYWwge0BsaW5rIEhhc2hNYXB9IHRvIG1hcCB0aGUgbmFtZQorICAgICAqIHRvIHRoZSBzcGVjaWZpZWQgb2JqZWN0LgorICAgICAqCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiB7QGluaGVyaXREb2N9CisgICAgICovCisgICAgcHVibGljIE9iamVjdCBzZXRQcm9wZXJ0eShTdHJpbmcgbmFtZSwgT2JqZWN0IHZhbHVlKSB7CisgICAgICAgIGlmIChuYW1lID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigibmFtZSBpcyBudWxsIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHByb3BNYXAucHV0KG5hbWUsIHZhbHVlKTsKKyAgICB9CisKKyAgICBwdWJsaWMgS2V5U2VsZWN0b3IgZ2V0S2V5U2VsZWN0b3IoKSB7CisgICAgICAgIHJldHVybiBrczsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRLZXlTZWxlY3RvcihLZXlTZWxlY3RvciBrcykgeworICAgICAgICB0aGlzLmtzID0ga3M7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgPGNvZGU+RWxlbWVudDwvY29kZT4gd2l0aCB0aGUgc3BlY2lmaWVkIElEIGF0dHJpYnV0ZSB2YWx1ZS4KKyAgICAgKgorICAgICAqIDxwPlRoaXMgaW1wbGVtZW50YXRpb24gdXNlcyBhbiBpbnRlcm5hbCB7QGxpbmsgSGFzaE1hcH0gdG8gZ2V0IHRoZSAKKyAgICAgKiBlbGVtZW50IHRoYXQgdGhlIHNwZWNpZmllZCBhdHRyaWJ1dGUgdmFsdWUgbWFwcyB0by4gCisgICAgICoKKyAgICAgKiBAcGFyYW0gaWRWYWx1ZSB0aGUgdmFsdWUgb2YgdGhlIElECisgICAgICogQHJldHVybiB0aGUgPGNvZGU+RWxlbWVudDwvY29kZT4gd2l0aCB0aGUgc3BlY2lmaWVkIElEIGF0dHJpYnV0ZSB2YWx1ZSwKKyAgICAgKiAgICBvciA8Y29kZT5udWxsPC9jb2RlPiBpZiBub25lLgorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+aWRWYWx1ZTwvY29kZT4gaXMgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiBAc2VlICNzZXRJZEF0dHJpYnV0ZU5TCisgICAgICovCisgICAgcHVibGljIEVsZW1lbnQgZ2V0RWxlbWVudEJ5SWQoU3RyaW5nIGlkVmFsdWUpIHsKKyAgICAgICAgaWYgKGlkVmFsdWUgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJpZFZhbHVlIGlzIG51bGwiKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKEVsZW1lbnQpIGlkTWFwLmdldChpZFZhbHVlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWdpc3RlcnMgdGhlIGVsZW1lbnQncyBhdHRyaWJ1dGUgc3BlY2lmaWVkIGJ5IHRoZSBuYW1lc3BhY2UgVVJJIGFuZAorICAgICAqIGxvY2FsIG5hbWUgdG8gYmUgb2YgdHlwZSBJRC4gVGhlIGF0dHJpYnV0ZSBtdXN0IGhhdmUgYSBub24tZW1wdHkgdmFsdWUuCisgICAgICoKKyAgICAgKiA8cD5UaGlzIGltcGxlbWVudGF0aW9uIHVzZXMgYW4gaW50ZXJuYWwge0BsaW5rIEhhc2hNYXB9IHRvIG1hcCB0aGUgCisgICAgICogYXR0cmlidXRlJ3MgdmFsdWUgdG8gdGhlIHNwZWNpZmllZCBlbGVtZW50LgorICAgICAqCisgICAgICogQHBhcmFtIGVsZW1lbnQgdGhlIGVsZW1lbnQKKyAgICAgKiBAcGFyYW0gbmFtZXNwYWNlVVJJIHRoZSBuYW1lc3BhY2UgVVJJIG9mIHRoZSBhdHRyaWJ1dGUgKHNwZWNpZnkKKyAgICAgKiAgICA8Y29kZT5udWxsPC9jb2RlPiBpZiBub3QgYXBwbGljYWJsZSkKKyAgICAgKiBAcGFyYW0gbG9jYWxOYW1lIHRoZSBsb2NhbCBuYW1lIG9mIHRoZSBhdHRyaWJ1dGUKKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiA8Y29kZT5sb2NhbE5hbWU8L2NvZGU+IGlzIG5vdCBhbgorICAgICAqICAgIGF0dHJpYnV0ZSBvZiB0aGUgc3BlY2lmaWVkIGVsZW1lbnQgb3IgaXQgZG9lcyBub3QgY29udGFpbiBhIHNwZWNpZmljCisgICAgICogICAgdmFsdWUKKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPmVsZW1lbnQ8L2NvZGU+IG9yCisgICAgICogICAgPGNvZGU+bG9jYWxOYW1lPC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEBzZWUgI2dldEVsZW1lbnRCeUlkCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0SWRBdHRyaWJ1dGVOUyhFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBuYW1lc3BhY2VVUkksIAorCVN0cmluZyBsb2NhbE5hbWUpIHsKKwlpZiAoZWxlbWVudCA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigiZWxlbWVudCBpcyBudWxsIik7CisJfQorCWlmIChsb2NhbE5hbWUgPT0gbnVsbCkgeworCSAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oImxvY2FsTmFtZSBpcyBudWxsIik7CisJfQorCVN0cmluZyBpZFZhbHVlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7CisJaWYgKGlkVmFsdWUgPT0gbnVsbCB8fCBpZFZhbHVlLmxlbmd0aCgpID09IDApIHsKKwkgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbihsb2NhbE5hbWUgKyAiIGlzIG5vdCBhbiAiICsKKwkJImF0dHJpYnV0ZSIpOworCX0KKwlpZE1hcC5wdXQoaWRWYWx1ZSwgZWxlbWVudCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIHJlYWQtb25seSBpdGVyYXRvciBvdmVyIHRoZSBzZXQgb2YgSWQvRWxlbWVudCBtYXBwaW5ncyBvZiAKKyAgICAgKiB0aGlzIDxjb2RlPkRPTUNyeXB0b0NvbnRleHQ8L2NvZGU+LiBBdHRlbXB0cyB0byBtb2RpZnkgdGhlIHNldCB2aWEgdGhlCisgICAgICoge0BsaW5rIEl0ZXJhdG9yI3JlbW92ZX0gbWV0aG9kIHRocm93IGFuCisgICAgICogPGNvZGU+VW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb248L2NvZGU+LiBUaGUgbWFwcGluZ3MgYXJlIHJldHVybmVkCisgICAgICogaW4gbm8gcGFydGljdWxhciBvcmRlci4gRWFjaCBlbGVtZW50IGluIHRoZSBpdGVyYXRpb24gaXMgcmVwcmVzZW50ZWQgYXMgYQorICAgICAqIHtAbGluayBqYXZhLnV0aWwuTWFwLkVudHJ5fS4gSWYgdGhlIDxjb2RlPkRPTUNyeXB0b0NvbnRleHQ8L2NvZGU+IGlzIAorICAgICAqIG1vZGlmaWVkIHdoaWxlIGFuIGl0ZXJhdGlvbiBpcyBpbiBwcm9ncmVzcywgdGhlIHJlc3VsdHMgb2YgdGhlIAorICAgICAqIGl0ZXJhdGlvbiBhcmUgdW5kZWZpbmVkLgorICAgICAqCisgICAgICogQHJldHVybiBhIHJlYWQtb25seSBpdGVyYXRvciBvdmVyIHRoZSBzZXQgb2YgbWFwcGluZ3MKKyAgICAgKi8KKyAgICBwdWJsaWMgSXRlcmF0b3IgaXRlcmF0b3IoKSB7CisJcmV0dXJuIENvbGxlY3Rpb25zLnVubW9kaWZpYWJsZU1hcChpZE1hcCkuZW50cnlTZXQoKS5pdGVyYXRvcigpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgaW1wbGVtZW50YXRpb24gdXNlcyBhbiBpbnRlcm5hbCB7QGxpbmsgSGFzaE1hcH0gdG8gZ2V0IHRoZSBvYmplY3QgCisgICAgICogdGhhdCB0aGUgc3BlY2lmaWVkIGtleSBtYXBzIHRvLiAKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGdldChPYmplY3Qga2V5KSB7CisJcmV0dXJuIG9iak1hcC5nZXQoa2V5KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHVzZXMgYW4gaW50ZXJuYWwge0BsaW5rIEhhc2hNYXB9IHRvIG1hcCB0aGUga2V5CisgICAgICogdG8gdGhlIHNwZWNpZmllZCBvYmplY3QuCisgICAgICoKKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB7QGluaGVyaXREb2N9CisgICAgICovCisgICAgcHVibGljIE9iamVjdCBwdXQoT2JqZWN0IGtleSwgT2JqZWN0IHZhbHVlKSB7CisJcmV0dXJuIG9iak1hcC5wdXQoa2V5LCB2YWx1ZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2phdmF4L3htbC9jcnlwdG8vZG9tL0RPTVN0cnVjdHVyZS5qYXZhIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZG9tL0RPTVN0cnVjdHVyZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3ODY2NjYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kb20vRE9NU3RydWN0dXJlLmphdmEKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by5kb207CisKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uWE1MU3RydWN0dXJlOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5YTUxTaWduYXR1cmU7CisKKy8qKgorICogQSBET00tc3BlY2lmaWMge0BsaW5rIFhNTFN0cnVjdHVyZX0uIFRoZSBwdXJwb3NlIG9mIHRoaXMgY2xhc3MgaXMgdG8KKyAqIGFsbG93IGEgRE9NIG5vZGUgdG8gYmUgdXNlZCB0byByZXByZXNlbnQgZXh0ZW5zaWJsZSBjb250ZW50IChhbnkgZWxlbWVudHMKKyAqIG9yIG1peGVkIGNvbnRlbnQpIGluIFhNTCBTaWduYXR1cmUgc3RydWN0dXJlcy4KKyAqCisgKiA8cD5JZiBhIHNlcXVlbmNlIG9mIG5vZGVzIGlzIG5lZWRlZCwgdGhlIG5vZGUgY29udGFpbmVkIGluIHRoZQorICogPGNvZGU+RE9NU3RydWN0dXJlPC9jb2RlPiBpcyB0aGUgZmlyc3Qgbm9kZSBvZiB0aGUgc2VxdWVuY2UgYW5kIHN1Y2Nlc3NpdmUKKyAqIG5vZGVzIGNhbiBiZSBhY2Nlc3NlZCBieSBpbnZva2luZyB7QGxpbmsgTm9kZSNnZXROZXh0U2libGluZ30uCisgKgorICogPHA+SWYgdGhlIG93bmVyIGRvY3VtZW50IG9mIHRoZSA8Y29kZT5ET01TdHJ1Y3R1cmU8L2NvZGU+IGlzIGRpZmZlcmVudCB0aGFuIAorICogdGhlIHRhcmdldCBkb2N1bWVudCBvZiBhbiA8Y29kZT5YTUxTaWduYXR1cmU8L2NvZGU+LCB0aGUgICAKKyAqIHtAbGluayBYTUxTaWduYXR1cmUjc2lnbihYTUxTaWduQ29udGV4dCl9IG1ldGhvZCBpbXBvcnRzIHRoZSBub2RlIGludG8gdGhlIAorICogdGFyZ2V0IGRvY3VtZW50IGJlZm9yZSBnZW5lcmF0aW5nIHRoZSBzaWduYXR1cmUuCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICogQGF1dGhvciBKU1IgMTA1IEV4cGVydCBHcm91cAorICovCitwdWJsaWMgY2xhc3MgRE9NU3RydWN0dXJlIGltcGxlbWVudHMgWE1MU3RydWN0dXJlIHsKKworICAgIHByaXZhdGUgZmluYWwgTm9kZSBub2RlOworCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIDxjb2RlPkRPTVN0cnVjdHVyZTwvY29kZT4gY29udGFpbmluZyB0aGUgc3BlY2lmaWVkIG5vZGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbm9kZSB0aGUgbm9kZQorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+bm9kZTwvY29kZT4gaXMgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKi8KKyAgICBwdWJsaWMgRE9NU3RydWN0dXJlKE5vZGUgbm9kZSkgeworICAgICAgICBpZiAobm9kZSA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigibm9kZSBjYW5ub3QgYmUgbnVsbCIpOworCX0KKwl0aGlzLm5vZGUgPSBub2RlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG5vZGUgY29udGFpbmVkIGluIHRoaXMgPGNvZGU+RE9NU3RydWN0dXJlPC9jb2RlPi4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIG5vZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgTm9kZSBnZXROb2RlKCkgeworCXJldHVybiBub2RlOworICAgIH0KKworICAgIC8qKgorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24ge0Bpbmhlcml0RG9jfQorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzRmVhdHVyZVN1cHBvcnRlZChTdHJpbmcgZmVhdHVyZSkgeworICAgICAgICBpZiAoZmVhdHVyZSA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9qYXZheC94bWwvY3J5cHRvL2RvbS9ET01VUklSZWZlcmVuY2UuamF2YSBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RvbS9ET01VUklSZWZlcmVuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTMwMmM1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZG9tL0RPTVVSSVJlZmVyZW5jZS5qYXZhCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8uZG9tOworCitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5VUklSZWZlcmVuY2U7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKKworLyoqCisgKiBBIERPTS1zcGVjaWZpYyB7QGxpbmsgVVJJUmVmZXJlbmNlfS4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBjbGFzcyBpcyB0byAKKyAqIHByb3ZpZGUgYWRkaXRpb25hbCBjb250ZXh0IG5lY2Vzc2FyeSBmb3IgcmVzb2x2aW5nIFhQb2ludGVyIFVSSXMgb3IgCisgKiBzYW1lLWRvY3VtZW50IHJlZmVyZW5jZXMuIAorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgSlNSIDEwNSBFeHBlcnQgR3JvdXAKKyAqLworcHVibGljIGludGVyZmFjZSBET01VUklSZWZlcmVuY2UgZXh0ZW5kcyBVUklSZWZlcmVuY2UgeworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgaGVyZSBub2RlLgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgYXR0cmlidXRlIG9yIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gbm9kZSBvciB0aGUKKyAgICAgKiAgICBwYXJlbnQgZWxlbWVudCBvZiB0aGUgdGV4dCBub2RlIHRoYXQgZGlyZWN0bHkgY29udGFpbnMgdGhlIFVSSSAKKyAgICAgKi8KKyAgICBOb2RlIGdldEhlcmUoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9qYXZheC94bWwvY3J5cHRvL2RvbS9wYWNrYWdlLmh0bWwgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kb20vcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhYTQ4YTcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kb20vcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsNDQgQEAKKzxodG1sPgorPGhlYWQ+Cis8IS0tCisvKgorICogQ29weXJpZ2h0IDIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLS0+Cis8IS0tCisgQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLS0+Cis8L2hlYWQ+Cis8Ym9keT4KK0RPTS1zcGVjaWZpYyBjbGFzc2VzIGZvciB0aGUge0BsaW5rIGphdmF4LnhtbC5jcnlwdG99IHBhY2thZ2UuIAorT25seSB1c2VycyB3aG8gYXJlIHVzaW5nIGEgRE9NLWJhc2VkIFhNTCBjcnlwdG9ncmFwaGljIGltcGxlbWVudGF0aW9ucyAoZXg6IAore0BsaW5rIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5YTUxTaWduYXR1cmVGYWN0b3J5IFhNTFNpZ25hdHVyZUZhY3Rvcnl9IG9yIAore0BsaW5rIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvLktleUluZm9GYWN0b3J5fSkgCitzaG91bGQgbmVlZCB0byBtYWtlIGRpcmVjdCB1c2Ugb2YgdGhpcyBwYWNrYWdlLgorCis8aDI+UGFja2FnZSBTcGVjaWZpY2F0aW9uPC9oMj4KKworPHVsPgorPGxpPgorPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sZHNpZy1jb3JlLyI+CitYTUwtU2lnbmF0dXJlIFN5bnRheCBhbmQgUHJvY2Vzc2luZzogVzNDIFJlY29tbWVuZGF0aW9uPC9hPgorPGxpPgorPGEgaHJlZj0iaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMzI3NS50eHQiPgorUkZDIDMyNzU6IFhNTC1TaWduYXR1cmUgU3ludGF4IGFuZCBQcm9jZXNzaW5nPC9hPgorPC91bD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9DYW5vbmljYWxpemF0aW9uTWV0aG9kLmphdmEgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL0Nhbm9uaWNhbGl6YXRpb25NZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjUzN2U1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9DYW5vbmljYWxpemF0aW9uTWV0aG9kLmphdmEKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by5kc2lnOworCitpbXBvcnQgamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWM7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLnNwZWMuQzE0Tk1ldGhvZFBhcmFtZXRlclNwZWM7CisKKy8qKgorICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgWE1MIDxjb2RlPkNhbm9uaWNhbGl6YXRpb25NZXRob2Q8L2NvZGU+IAorICogZWxlbWVudCBhcyBkZWZpbmVkIGluIHRoZSAKKyAqIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbGRzaWctY29yZS8iPgorICogVzNDIFJlY29tbWVuZGF0aW9uIGZvciBYTUwtU2lnbmF0dXJlIFN5bnRheCBhbmQgUHJvY2Vzc2luZzwvYT4uIFRoZSBYTUwgCisgKiBTY2hlbWEgRGVmaW5pdGlvbiBpcyBkZWZpbmVkIGFzOgorICogPHA+CisgKiA8cHJlPgorICogICAmbHQ7ZWxlbWVudCBuYW1lPSJDYW5vbmljYWxpemF0aW9uTWV0aG9kIiB0eXBlPSJkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kVHlwZSIvJmd0OworICogICAgICZsdDtjb21wbGV4VHlwZSBuYW1lPSJDYW5vbmljYWxpemF0aW9uTWV0aG9kVHlwZSIgbWl4ZWQ9InRydWUiJmd0OworICogICAgICAgJmx0O3NlcXVlbmNlJmd0OworICogICAgICAgICAmbHQ7YW55IG5hbWVzcGFjZT0iIyNhbnkiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLyZndDsKKyAqICAgICAgICAgICAmbHQ7IS0tICgwLHVuYm91bmRlZCkgZWxlbWVudHMgZnJvbSAoMSwxKSBuYW1lc3BhY2UgLS0mZ3Q7CisgKiAgICAgICAmbHQ7L3NlcXVlbmNlJmd0OworICogICAgICAgJmx0O2F0dHJpYnV0ZSBuYW1lPSJBbGdvcml0aG0iIHR5cGU9ImFueVVSSSIgdXNlPSJyZXF1aXJlZCIvJmd0OworICogICAgICZsdDsvY29tcGxleFR5cGUmZ3Q7CisgKiA8L3ByZT4KKyAqCisgKiBBIDxjb2RlPkNhbm9uaWNhbGl6YXRpb25NZXRob2Q8L2NvZGU+IGluc3RhbmNlIG1heSBiZSBjcmVhdGVkIGJ5IGludm9raW5nIAorICogdGhlIHtAbGluayBYTUxTaWduYXR1cmVGYWN0b3J5I25ld0Nhbm9uaWNhbGl6YXRpb25NZXRob2QgCisgKiBuZXdDYW5vbmljYWxpemF0aW9uTWV0aG9kfSBtZXRob2Qgb2YgdGhlIHtAbGluayBYTUxTaWduYXR1cmVGYWN0b3J5fSBjbGFzcy4KKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKiBAYXV0aG9yIEpTUiAxMDUgRXhwZXJ0IEdyb3VwCisgKiBAc2VlIFhNTFNpZ25hdHVyZUZhY3RvcnkjbmV3Q2Fub25pY2FsaXphdGlvbk1ldGhvZChTdHJpbmcsIEMxNE5NZXRob2RQYXJhbWV0ZXJTcGVjKQorICovCitwdWJsaWMgaW50ZXJmYWNlIENhbm9uaWNhbGl6YXRpb25NZXRob2QgZXh0ZW5kcyBUcmFuc2Zvcm0geworCisgICAgLyoqCisgICAgICogVGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ij5DYW5vbmljYWwgCisgICAgICogWE1MICh3aXRob3V0IGNvbW1lbnRzKTwvYT4gY2Fub25pY2FsaXphdGlvbiBtZXRob2QgYWxnb3JpdGhtIFVSSS4KKyAgICAgKi8KKyAgICBmaW5hbCBzdGF0aWMgU3RyaW5nIElOQ0xVU0lWRSA9IAorCSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI7CisKKyAgICAvKioKKyAgICAgKiBUaGUgCisgICAgICogPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUjV2l0aENvbW1lbnRzIj4KKyAgICAgKiBDYW5vbmljYWwgWE1MIHdpdGggY29tbWVudHM8L2E+IGNhbm9uaWNhbGl6YXRpb24gbWV0aG9kIGFsZ29yaXRobSBVUkkuCisgICAgICovCisgICAgZmluYWwgc3RhdGljIFN0cmluZyBJTkNMVVNJVkVfV0lUSF9DT01NRU5UUyA9CisgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHMiOworCisgICAgLyoqCisgICAgICogVGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI+RXhjbHVzaXZlIAorICAgICAqIENhbm9uaWNhbCBYTUwgKHdpdGhvdXQgY29tbWVudHMpPC9hPiBjYW5vbmljYWxpemF0aW9uIG1ldGhvZCBhbGdvcml0aG0KKyAgICAgKiBVUkkuCisgICAgICovCisgICAgZmluYWwgc3RhdGljIFN0cmluZyBFWENMVVNJVkUgPQorICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjsKKworICAgIC8qKgorICAgICAqIFRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biNXaXRoQ29tbWVudHMiPgorICAgICAqIEV4Y2x1c2l2ZSBDYW5vbmljYWwgWE1MIHdpdGggY29tbWVudHM8L2E+IGNhbm9uaWNhbGl6YXRpb24gbWV0aG9kIAorICAgICAqIGFsZ29yaXRobSBVUkkuCisgICAgICovCisgICAgZmluYWwgc3RhdGljIFN0cmluZyBFWENMVVNJVkVfV0lUSF9DT01NRU5UUyA9CisgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biNXaXRoQ29tbWVudHMiOworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgYWxnb3JpdGhtLXNwZWNpZmljIGlucHV0IHBhcmFtZXRlcnMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgCisgICAgICogPGNvZGU+Q2Fub25pY2FsaXphdGlvbk1ldGhvZDwvY29kZT4uCisgICAgICoKKyAgICAgKiA8cD5UaGUgcmV0dXJuZWQgcGFyYW1ldGVycyBjYW4gYmUgdHlwZWNhc3QgdG8gYSAKKyAgICAgKiB7QGxpbmsgQzE0Tk1ldGhvZFBhcmFtZXRlclNwZWN9IG9iamVjdC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIGFsZ29yaXRobS1zcGVjaWZpYyBpbnB1dCBwYXJhbWV0ZXJzIChtYXkgYmUgCisgICAgICogICAgPGNvZGU+bnVsbDwvY29kZT4gaWYgbm90IHNwZWNpZmllZCkKKyAgICAgKi8KKyAgICBBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIGdldFBhcmFtZXRlclNwZWMoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvRGlnZXN0TWV0aG9kLmphdmEgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL0RpZ2VzdE1ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1YWMwZTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL0RpZ2VzdE1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8uZHNpZzsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uQWxnb3JpdGhtTWV0aG9kOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uWE1MU3RydWN0dXJlOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5zcGVjLkRpZ2VzdE1ldGhvZFBhcmFtZXRlclNwZWM7CitpbXBvcnQgamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWM7CisKKy8qKgorICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgWE1MIDxjb2RlPkRpZ2VzdE1ldGhvZDwvY29kZT4gZWxlbWVudCBhcyAKKyAqIGRlZmluZWQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbGRzaWctY29yZS8iPgorICogVzNDIFJlY29tbWVuZGF0aW9uIGZvciBYTUwtU2lnbmF0dXJlIFN5bnRheCBhbmQgUHJvY2Vzc2luZzwvYT4uIAorICogVGhlIFhNTCBTY2hlbWEgRGVmaW5pdGlvbiBpcyBkZWZpbmVkIGFzOgorICogPHA+CisgKiA8cHJlPgorICogICAmbHQ7ZWxlbWVudCBuYW1lPSJEaWdlc3RNZXRob2QiIHR5cGU9ImRzOkRpZ2VzdE1ldGhvZFR5cGUiLyZndDsKKyAqICAgICAmbHQ7Y29tcGxleFR5cGUgbmFtZT0iRGlnZXN0TWV0aG9kVHlwZSIgbWl4ZWQ9InRydWUiJmd0OworICogICAgICAgJmx0O3NlcXVlbmNlJmd0OworICogICAgICAgICAmbHQ7YW55IG5hbWVzcGFjZT0iIyNhbnkiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLyZndDsKKyAqICAgICAgICAgICAmbHQ7IS0tICgwLHVuYm91bmRlZCkgZWxlbWVudHMgZnJvbSAoMSwxKSBuYW1lc3BhY2UgLS0mZ3Q7CisgKiAgICAgICAmbHQ7L3NlcXVlbmNlJmd0OworICogICAgICAgJmx0O2F0dHJpYnV0ZSBuYW1lPSJBbGdvcml0aG0iIHR5cGU9ImFueVVSSSIgdXNlPSJyZXF1aXJlZCIvJmd0OworICogICAgICZsdDsvY29tcGxleFR5cGUmZ3Q7CisgKiA8L3ByZT4KKyAqCisgKiBBIDxjb2RlPkRpZ2VzdE1ldGhvZDwvY29kZT4gaW5zdGFuY2UgbWF5IGJlIGNyZWF0ZWQgYnkgaW52b2tpbmcgdGhlIAorICoge0BsaW5rIFhNTFNpZ25hdHVyZUZhY3RvcnkjbmV3RGlnZXN0TWV0aG9kIG5ld0RpZ2VzdE1ldGhvZH0gbWV0aG9kIAorICogb2YgdGhlIHtAbGluayBYTUxTaWduYXR1cmVGYWN0b3J5fSBjbGFzcy4KKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKiBAYXV0aG9yIEpTUiAxMDUgRXhwZXJ0IEdyb3VwCisgKiBAc2VlIFhNTFNpZ25hdHVyZUZhY3RvcnkjbmV3RGlnZXN0TWV0aG9kKFN0cmluZywgRGlnZXN0TWV0aG9kUGFyYW1ldGVyU3BlYykKKyAqLworcHVibGljIGludGVyZmFjZSBEaWdlc3RNZXRob2QgZXh0ZW5kcyBYTUxTdHJ1Y3R1cmUsIEFsZ29yaXRobU1ldGhvZCB7CisKKyAgICAvKioKKyAgICAgKiBUaGUgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiPgorICAgICAqIFNIQTE8L2E+IGRpZ2VzdCBtZXRob2QgYWxnb3JpdGhtIFVSSS4KKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIFNIQTEgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiOworCisgICAgLyoqCisgICAgICogVGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiI+CisgICAgICogU0hBMjU2PC9hPiBkaWdlc3QgbWV0aG9kIGFsZ29yaXRobSBVUkkuCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBTSEEyNTYgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2IjsKKworICAgIC8qKgorICAgICAqIFRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGE1MTIiPgorICAgICAqIFNIQTUxMjwvYT4gZGlnZXN0IG1ldGhvZCBhbGdvcml0aG0gVVJJLgorICAgICAqLworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0hBNTEyID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTUxMiI7CisKKyAgICAvKioKKyAgICAgKiBUaGUgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcmlwZW1kMTYwIj4KKyAgICAgKiBSSVBFTUQtMTYwPC9hPiBkaWdlc3QgbWV0aG9kIGFsZ29yaXRobSBVUkkuCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBSSVBFTUQxNjAgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjcmlwZW1kMTYwIjsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGFsZ29yaXRobS1zcGVjaWZpYyBpbnB1dCBwYXJhbWV0ZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGlzCisgICAgICogPGNvZGU+RGlnZXN0TWV0aG9kPC9jb2RlPi4KKyAgICAgKgorICAgICAqIDxwPlRoZSByZXR1cm5lZCBwYXJhbWV0ZXJzIGNhbiBiZSB0eXBlY2FzdCB0byBhIHtAbGluayAKKyAgICAgKiBEaWdlc3RNZXRob2RQYXJhbWV0ZXJTcGVjfSBvYmplY3QuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBhbGdvcml0aG0tc3BlY2lmaWMgcGFyYW1ldGVycyAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+IGlmCisgICAgICogICAgbm90IHNwZWNpZmllZCkKKyAgICAgKi8KKyAgICBBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIGdldFBhcmFtZXRlclNwZWMoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvTWFuaWZlc3QuamF2YSBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvTWFuaWZlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjI2MGU1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9NYW5pZmVzdC5qYXZhCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8uZHNpZzsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uWE1MU3RydWN0dXJlOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCisvKioKKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIFhNTCA8Y29kZT5NYW5pZmVzdDwvY29kZT4gZWxlbWVudCBhcyBkZWZpbmVkIGluIAorICogdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbGRzaWctY29yZS8iPgorICogVzNDIFJlY29tbWVuZGF0aW9uIGZvciBYTUwtU2lnbmF0dXJlIFN5bnRheCBhbmQgUHJvY2Vzc2luZzwvYT4uCisgKiBUaGUgWE1MIFNjaGVtYSBEZWZpbml0aW9uIGlzIGRlZmluZWQgYXM6CisgKiA8cHJlPjxjb2RlPgorICogJmx0O2VsZW1lbnQgbmFtZT0iTWFuaWZlc3QiIHR5cGU9ImRzOk1hbmlmZXN0VHlwZSIvJmd0OyAKKyAqICAgJmx0O2NvbXBsZXhUeXBlIG5hbWU9Ik1hbmlmZXN0VHlwZSImZ3Q7CisgKiAgICAgJmx0O3NlcXVlbmNlPgorICogICAgICAgJmx0O2VsZW1lbnQgcmVmPSJkczpSZWZlcmVuY2UiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8mZ3Q7IAorICogICAgICZsdDsvc2VxdWVuY2UmZ3Q7ICAKKyAqICAgICAmbHQ7YXR0cmlidXRlIG5hbWU9IklkIiB0eXBlPSJJRCIgdXNlPSJvcHRpb25hbCIvJmd0OyAKKyAqICAgJmx0Oy9jb21wbGV4VHlwZSZndDsKKyAqIDwvY29kZT48L3ByZT4KKyAqCisgKiBBIDxjb2RlPk1hbmlmZXN0PC9jb2RlPiBpbnN0YW5jZSBtYXkgYmUgY3JlYXRlZCBieSBpbnZva2luZworICogb25lIG9mIHRoZSB7QGxpbmsgWE1MU2lnbmF0dXJlRmFjdG9yeSNuZXdNYW5pZmVzdCBuZXdNYW5pZmVzdH0gCisgKiBtZXRob2RzIG9mIHRoZSB7QGxpbmsgWE1MU2lnbmF0dXJlRmFjdG9yeX0gY2xhc3M7IGZvciBleGFtcGxlOiAKKyAqCisgKiA8cHJlPgorICogICBYTUxTaWduYXR1cmVGYWN0b3J5IGZhY3RvcnkgPSBYTUxTaWduYXR1cmVGYWN0b3J5LmdldEluc3RhbmNlKCJET00iKTsKKyAqICAgTGlzdCByZWZlcmVuY2VzID0gQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChmYWN0b3J5Lm5ld1JlZmVyZW5jZQorICogICAgICAgKCIjcmVmZXJlbmNlLTEiLCBEaWdlc3RNZXRob2QuU0hBMSkpOworICogICBNYW5pZmVzdCBtYW5pZmVzdCA9IGZhY3RvcnkubmV3TWFuaWZlc3QocmVmZXJlbmNlcywgIm1hbmlmZXN0LTEiKTsKKyAqIDwvcHJlPgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgSlNSIDEwNSBFeHBlcnQgR3JvdXAKKyAqIEBzZWUgWE1MU2lnbmF0dXJlRmFjdG9yeSNuZXdNYW5pZmVzdChMaXN0KQorICogQHNlZSBYTUxTaWduYXR1cmVGYWN0b3J5I25ld01hbmlmZXN0KExpc3QsIFN0cmluZykKKyAqLworcHVibGljIGludGVyZmFjZSBNYW5pZmVzdCBleHRlbmRzIFhNTFN0cnVjdHVyZSB7CisKKyAgICAvKioKKyAgICAgKiBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSA8Y29kZT5NYW5pZmVzdDwvY29kZT4gZWxlbWVudCAodGhpcyBjYW4gYmUgCisgICAgICogc3BlY2lmaWVkIGFzIHRoZSB2YWx1ZSBvZiB0aGUgPGNvZGU+dHlwZTwvY29kZT4gcGFyYW1ldGVyIG9mIHRoZSAKKyAgICAgKiB7QGxpbmsgUmVmZXJlbmNlfSBjbGFzcyB0byBpZGVudGlmeSB0aGUgcmVmZXJlbnQncyB0eXBlKS4KKyAgICAgKi8KKyAgICBmaW5hbCBzdGF0aWMgU3RyaW5nIFRZUEUgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI01hbmlmZXN0IjsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIElkIG9mIHRoaXMgPGNvZGU+TWFuaWZlc3Q8L2NvZGU+LgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgSWQgIG9mIHRoaXMgPGNvZGU+TWFuaWZlc3Q8L2NvZGU+IChvciA8Y29kZT5udWxsPC9jb2RlPiAKKyAgICAgKiAgICBpZiBub3Qgc3BlY2lmaWVkKQorICAgICAqLworICAgIFN0cmluZyBnZXRJZCgpOworICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgYW4ge0BsaW5rIGphdmEudXRpbC5Db2xsZWN0aW9ucyN1bm1vZGlmaWFibGVMaXN0IHVubW9kaWZpYWJsZSAKKyAgICAgKiBsaXN0fSBvZiBvbmUgb3IgbW9yZSB7QGxpbmsgUmVmZXJlbmNlfXMgdGhhdCBhcmUgY29udGFpbmVkIGluIHRoaXMKKyAgICAgKiA8Y29kZT5NYW5pZmVzdDwvY29kZT4uIAorICAgICAqCisgICAgICogQHJldHVybiBhbiB1bm1vZGlmaWFibGUgbGlzdCBvZiBvbmUgb3IgbW9yZSA8Y29kZT5SZWZlcmVuY2U8L2NvZGU+cyAKKyAgICAgKi8KKyAgICBMaXN0IGdldFJlZmVyZW5jZXMoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvUmVmZXJlbmNlLmphdmEgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL1JlZmVyZW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyYjJiMTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL1JlZmVyZW5jZS5qYXZhCkBAIC0wLDAgKzEsMTYyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLmRzaWc7CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLkRhdGE7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5VUklSZWZlcmVuY2U7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5YTUxTdHJ1Y3R1cmU7CitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworLyoqCisgKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSA8Y29kZT5SZWZlcmVuY2U8L2NvZGU+IGVsZW1lbnQgYXMgZGVmaW5lZCBpbiB0aGUgCisgKiA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWxkc2lnLWNvcmUvIj4KKyAqIFczQyBSZWNvbW1lbmRhdGlvbiBmb3IgWE1MLVNpZ25hdHVyZSBTeW50YXggYW5kIFByb2Nlc3Npbmc8L2E+LiAKKyAqIFRoZSBYTUwgc2NoZW1hIGlzIGRlZmluZWQgYXM6IAorICogPGNvZGU+PHByZT4KKyAqICZsdDtlbGVtZW50IG5hbWU9IlJlZmVyZW5jZSIgdHlwZT0iZHM6UmVmZXJlbmNlVHlwZSIvJmd0OworICogJmx0O2NvbXBsZXhUeXBlIG5hbWU9IlJlZmVyZW5jZVR5cGUiJmd0OworICogICAmbHQ7c2VxdWVuY2UmZ3Q7CisgKiAgICAgJmx0O2VsZW1lbnQgcmVmPSJkczpUcmFuc2Zvcm1zIiBtaW5PY2N1cnM9IjAiLyZndDsKKyAqICAgICAmbHQ7ZWxlbWVudCByZWY9ImRzOkRpZ2VzdE1ldGhvZCIvJmd0OworICogICAgICZsdDtlbGVtZW50IHJlZj0iZHM6RGlnZXN0VmFsdWUiLyZndDsKKyAqICAgJmx0Oy9zZXF1ZW5jZSZndDsKKyAqICAgJmx0O2F0dHJpYnV0ZSBuYW1lPSJJZCIgdHlwZT0iSUQiIHVzZT0ib3B0aW9uYWwiLyZndDsKKyAqICAgJmx0O2F0dHJpYnV0ZSBuYW1lPSJVUkkiIHR5cGU9ImFueVVSSSIgdXNlPSJvcHRpb25hbCIvJmd0OworICogICAmbHQ7YXR0cmlidXRlIG5hbWU9IlR5cGUiIHR5cGU9ImFueVVSSSIgdXNlPSJvcHRpb25hbCIvJmd0OworICogJmx0Oy9jb21wbGV4VHlwZSZndDsKKyAqCisgKiAmbHQ7ZWxlbWVudCBuYW1lPSJEaWdlc3RWYWx1ZSIgdHlwZT0iZHM6RGlnZXN0VmFsdWVUeXBlIi8mZ3Q7CisgKiAmbHQ7c2ltcGxlVHlwZSBuYW1lPSJEaWdlc3RWYWx1ZVR5cGUiJmd0OworICogICAmbHQ7cmVzdHJpY3Rpb24gYmFzZT0iYmFzZTY0QmluYXJ5Ii8mZ3Q7CisgKiAmbHQ7L3NpbXBsZVR5cGUmZ3Q7CisgKiA8L3ByZT48L2NvZGU+CisgKgorICogPHA+QSA8Y29kZT5SZWZlcmVuY2U8L2NvZGU+IGluc3RhbmNlIG1heSBiZSBjcmVhdGVkIGJ5IGludm9raW5nIG9uZSBvZiB0aGUgCisgKiB7QGxpbmsgWE1MU2lnbmF0dXJlRmFjdG9yeSNuZXdSZWZlcmVuY2UgbmV3UmVmZXJlbmNlfSBtZXRob2RzIG9mIHRoZQorICoge0BsaW5rIFhNTFNpZ25hdHVyZUZhY3Rvcnl9IGNsYXNzOyBmb3IgZXhhbXBsZToKKyAqCisgKiA8cHJlPgorICogICBYTUxTaWduYXR1cmVGYWN0b3J5IGZhY3RvcnkgPSBYTUxTaWduYXR1cmVGYWN0b3J5LmdldEluc3RhbmNlKCJET00iKTsKKyAqICAgUmVmZXJlbmNlIHJlZiA9IGZhY3RvcnkubmV3UmVmZXJlbmNlCisgKiAgICAgKCJodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMzMjc1LnR4dCIsIAorICoJZmFjdG9yeS5uZXdEaWdlc3RNZXRob2QoRGlnZXN0TWV0aG9kLlNIQTEsIG51bGwpKTsKKyAqIDwvcHJlPgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgRXJ3aW4gdmFuIGRlciBLb29naCAKKyAqIEBhdXRob3IgSlNSIDEwNSBFeHBlcnQgR3JvdXAKKyAqIEBzZWUgWE1MU2lnbmF0dXJlRmFjdG9yeSNuZXdSZWZlcmVuY2UoU3RyaW5nLCBEaWdlc3RNZXRob2QpCisgKiBAc2VlIFhNTFNpZ25hdHVyZUZhY3RvcnkjbmV3UmVmZXJlbmNlKFN0cmluZywgRGlnZXN0TWV0aG9kLCBMaXN0LCBTdHJpbmcsIFN0cmluZykKKyAqLworcHVibGljIGludGVyZmFjZSBSZWZlcmVuY2UgZXh0ZW5kcyBVUklSZWZlcmVuY2UsIFhNTFN0cnVjdHVyZSB7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGFuIHtAbGluayBqYXZhLnV0aWwuQ29sbGVjdGlvbnMjdW5tb2RpZmlhYmxlTGlzdCB1bm1vZGlmaWFibGUgCisgICAgICogbGlzdH0gb2Yge0BsaW5rIFRyYW5zZm9ybX1zIHRoYXQgYXJlIGNvbnRhaW5lZCBpbiB0aGlzIAorICAgICAqIDxjb2RlPlJlZmVyZW5jZTwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIGFuIHVubW9kaWZpYWJsZSBsaXN0IG9mIDxjb2RlPlRyYW5zZm9ybTwvY29kZT5zCisgICAgICogICAgKG1heSBiZSBlbXB0eSBidXQgbmV2ZXIgPGNvZGU+bnVsbDwvY29kZT4pCisgICAgICovCisgICAgTGlzdCBnZXRUcmFuc2Zvcm1zKCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBkaWdlc3QgbWV0aG9kIG9mIHRoaXMgPGNvZGU+UmVmZXJlbmNlPC9jb2RlPi4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIGRpZ2VzdCBtZXRob2QKKyAgICAgKi8KKyAgICBEaWdlc3RNZXRob2QgZ2V0RGlnZXN0TWV0aG9kKCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBvcHRpb25hbCA8Y29kZT5JZDwvY29kZT4gYXR0cmlidXRlIG9mIHRoaXMgCisgICAgICogPGNvZGU+UmVmZXJlbmNlPC9jb2RlPiwgd2hpY2ggcGVybWl0cyB0aGlzIHJlZmVyZW5jZSB0byBiZSAKKyAgICAgKiByZWZlcmVuY2VkIGZyb20gZWxzZXdoZXJlLgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgPGNvZGU+SWQ8L2NvZGU+IGF0dHJpYnV0ZSAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+IGlmIG5vdCAKKyAgICAgKiAgICBzcGVjaWZpZWQpIAorICAgICAqLworICAgIFN0cmluZyBnZXRJZCgpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgZGlnZXN0IHZhbHVlIG9mIHRoaXMgPGNvZGU+UmVmZXJlbmNlPC9jb2RlPi4KKyAgICAgKiAKKyAgICAgKiBAcmV0dXJuIHRoZSByYXcgZGlnZXN0IHZhbHVlLCBvciA8Y29kZT5udWxsPC9jb2RlPiBpZiB0aGlzIHJlZmVyZW5jZSBoYXMKKyAgICAgKiAgICBub3QgYmVlbiBkaWdlc3RlZCB5ZXQuIEVhY2ggaW52b2NhdGlvbiBvZiB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3CisgICAgICogICAgY2xvbmUgdG8gcHJvdGVjdCBhZ2FpbnN0IHN1YnNlcXVlbnQgbW9kaWZpY2F0aW9uLgorICAgICAqLworICAgIGJ5dGVbXSBnZXREaWdlc3RWYWx1ZSgpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgY2FsY3VsYXRlZCBkaWdlc3QgdmFsdWUgb2YgdGhpcyA8Y29kZT5SZWZlcmVuY2U8L2NvZGU+CisgICAgICogYWZ0ZXIgYSB2YWxpZGF0aW9uIG9wZXJhdGlvbi4gVGhpcyBtZXRob2QgaXMgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgaWYKKyAgICAgKiB0aGUgcmVmZXJlbmNlIGZhaWxzIHRvIHZhbGlkYXRlLgorICAgICAqIAorICAgICAqIEByZXR1cm4gdGhlIGNhbGN1bGF0ZWQgZGlnZXN0IHZhbHVlLCBvciA8Y29kZT5udWxsPC9jb2RlPiBpZiB0aGlzIAorICAgICAqICAgIHJlZmVyZW5jZSBoYXMgbm90IGJlZW4gdmFsaWRhdGVkIHlldC4gRWFjaCBpbnZvY2F0aW9uIG9mIHRoaXMgbWV0aG9kIAorICAgICAqICAgIHJldHVybnMgYSBuZXcgY2xvbmUgdG8gcHJvdGVjdCBhZ2FpbnN0IHN1YnNlcXVlbnQgbW9kaWZpY2F0aW9uLgorICAgICAqLworICAgIGJ5dGVbXSBnZXRDYWxjdWxhdGVkRGlnZXN0VmFsdWUoKTsKKworICAgIC8qKgorICAgICAqIFZhbGlkYXRlcyB0aGlzIHJlZmVyZW5jZS4gVGhpcyBtZXRob2QgdmVyaWZpZXMgdGhlIGRpZ2VzdCBvZiB0aGlzIAorICAgICAqIHJlZmVyZW5jZS4KKyAgICAgKgorICAgICAqIDxwPlRoaXMgbWV0aG9kIG9ubHkgdmFsaWRhdGVzIHRoZSByZWZlcmVuY2UgdGhlIGZpcnN0IHRpbWUgaXQgaXMgCisgICAgICogaW52b2tlZC4gT24gc3Vic2VxdWVudCBpbnZvY2F0aW9ucywgaXQgcmV0dXJucyBhIGNhY2hlZCByZXN1bHQuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoaXMgcmVmZXJlbmNlIHdhcyB2YWxpZGF0ZWQgc3VjY2Vzc2Z1bGx5OworICAgICAqICAgIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UKKyAgICAgKiBAcGFyYW0gdmFsaWRhdGVDb250ZXh0IHRoZSB2YWxpZGF0aW5nIGNvbnRleHQKKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPnZhbGlkYXRlQ29udGV4dDwvY29kZT4gaXMgCisgICAgICogICAgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiBpZiBhbiB1bmV4cGVjdGVkIGV4Y2VwdGlvbiBvY2N1cnMgd2hpbGUgCisgICAgICogICAgdmFsaWRhdGluZyB0aGUgcmVmZXJlbmNlIAorICAgICAqLworICAgIGJvb2xlYW4gdmFsaWRhdGUoWE1MVmFsaWRhdGVDb250ZXh0IHZhbGlkYXRlQ29udGV4dCkgCisJdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbjsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGRlcmVmZXJlbmNlZCBkYXRhLCBpZiAKKyAgICAgKiA8YSBocmVmPSJYTUxTaWduQ29udGV4dC5odG1sI1N1cHBvcnRlZCBQcm9wZXJ0aWVzIj5yZWZlcmVuY2UgY2FjaGluZzwvYT4KKyAgICAgKiBpcyBlbmFibGVkLiBUaGlzIGlzIHRoZSByZXN1bHQgb2YgZGVyZWZlcmVuY2luZyB0aGUgVVJJIG9mIHRoaXMgCisgICAgICogcmVmZXJlbmNlIGR1cmluZyBhIHZhbGlkYXRpb24gb3IgZ2VuZXJhdGlvbiBvcGVyYXRpb24uIAorICAgICAqCisgICAgICogQHJldHVybiB0aGUgZGVyZWZlcmVuY2VkIGRhdGEsIG9yIDxjb2RlPm51bGw8L2NvZGU+IGlmIHJlZmVyZW5jZSAKKyAgICAgKiAgICBjYWNoaW5nIGlzIG5vdCBlbmFibGVkIG9yIHRoaXMgcmVmZXJlbmNlIGhhcyBub3QgYmVlbiBnZW5lcmF0ZWQgb3IKKyAgICAgKiAgICB2YWxpZGF0ZWQKKyAgICAgKi8KKyAgICBEYXRhIGdldERlcmVmZXJlbmNlZERhdGEoKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHByZS1kaWdlc3RlZCBpbnB1dCBzdHJlYW0sIGlmCisgICAgICogPGEgaHJlZj0iWE1MU2lnbkNvbnRleHQuaHRtbCNTdXBwb3J0ZWQgUHJvcGVydGllcyI+cmVmZXJlbmNlIGNhY2hpbmc8L2E+CisgICAgICogaXMgZW5hYmxlZC4gVGhpcyBpcyB0aGUgaW5wdXQgdG8gdGhlIGRpZ2VzdCBvcGVyYXRpb24gZHVyaW5nIGEKKyAgICAgKiB2YWxpZGF0aW9uIG9yIHNpZ25pbmcgb3BlcmF0aW9uLiAKKyAgICAgKgorICAgICAqIEByZXR1cm4gYW4gaW5wdXQgc3RyZWFtIGNvbnRhaW5pbmcgdGhlIHByZS1kaWdlc3RlZCBpbnB1dCwgb3IKKyAgICAgKiAgICA8Y29kZT5udWxsPC9jb2RlPiBpZiByZWZlcmVuY2UgY2FjaGluZyBpcyBub3QgZW5hYmxlZCBvciB0aGlzCisgICAgICogICAgcmVmZXJlbmNlIGhhcyBub3QgYmVlbiBnZW5lcmF0ZWQgb3IgdmFsaWRhdGVkCisgICAgICovCisgICAgSW5wdXRTdHJlYW0gZ2V0RGlnZXN0SW5wdXRTdHJlYW0oKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvU2lnbmF0dXJlTWV0aG9kLmphdmEgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL1NpZ25hdHVyZU1ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwOTk1MWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL1NpZ25hdHVyZU1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8uZHNpZzsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uQWxnb3JpdGhtTWV0aG9kOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uWE1MU3RydWN0dXJlOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5zcGVjLlNpZ25hdHVyZU1ldGhvZFBhcmFtZXRlclNwZWM7CitpbXBvcnQgamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWM7CisKKy8qKgorICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgWE1MIDxjb2RlPlNpZ25hdHVyZU1ldGhvZDwvY29kZT4gZWxlbWVudCAKKyAqIGFzIGRlZmluZWQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbGRzaWctY29yZS8iPgorICogVzNDIFJlY29tbWVuZGF0aW9uIGZvciBYTUwtU2lnbmF0dXJlIFN5bnRheCBhbmQgUHJvY2Vzc2luZzwvYT4uCisgKiBUaGUgWE1MIFNjaGVtYSBEZWZpbml0aW9uIGlzIGRlZmluZWQgYXM6CisgKiA8cD4KKyAqIDxwcmU+CisgKiAgICZsdDtlbGVtZW50IG5hbWU9IlNpZ25hdHVyZU1ldGhvZCIgdHlwZT0iZHM6U2lnbmF0dXJlTWV0aG9kVHlwZSIvJmd0OworICogICAgICZsdDtjb21wbGV4VHlwZSBuYW1lPSJTaWduYXR1cmVNZXRob2RUeXBlIiBtaXhlZD0idHJ1ZSImZ3Q7CisgKiAgICAgICAmbHQ7c2VxdWVuY2UmZ3Q7CisgKiAgICAgICAgICZsdDtlbGVtZW50IG5hbWU9IkhNQUNPdXRwdXRMZW5ndGgiIG1pbk9jY3Vycz0iMCIgdHlwZT0iZHM6SE1BQ091dHB1dExlbmd0aFR5cGUiLyZndDsKKyAqICAgICAgICAgJmx0O2FueSBuYW1lc3BhY2U9IiMjYW55IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8mZ3Q7CisgKiAgICAgICAgICAgJmx0OyEtLSAoMCx1bmJvdW5kZWQpIGVsZW1lbnRzIGZyb20gKDEsMSkgbmFtZXNwYWNlIC0tJmd0OworICogICAgICAgJmx0Oy9zZXF1ZW5jZSZndDsKKyAqICAgICAgICZsdDthdHRyaWJ1dGUgbmFtZT0iQWxnb3JpdGhtIiB0eXBlPSJhbnlVUkkiIHVzZT0icmVxdWlyZWQiLyZndDsKKyAqICAgICAmbHQ7L2NvbXBsZXhUeXBlJmd0OworICogPC9wcmU+CisgKgorICogQSA8Y29kZT5TaWduYXR1cmVNZXRob2Q8L2NvZGU+IGluc3RhbmNlIG1heSBiZSBjcmVhdGVkIGJ5IGludm9raW5nIHRoZQorICoge0BsaW5rIFhNTFNpZ25hdHVyZUZhY3RvcnkjbmV3U2lnbmF0dXJlTWV0aG9kIG5ld1NpZ25hdHVyZU1ldGhvZH0gbWV0aG9kCisgKiBvZiB0aGUge0BsaW5rIFhNTFNpZ25hdHVyZUZhY3Rvcnl9IGNsYXNzLgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgSlNSIDEwNSBFeHBlcnQgR3JvdXAKKyAqIEBzZWUgWE1MU2lnbmF0dXJlRmFjdG9yeSNuZXdTaWduYXR1cmVNZXRob2QoU3RyaW5nLCBTaWduYXR1cmVNZXRob2RQYXJhbWV0ZXJTcGVjKQorICovCitwdWJsaWMgaW50ZXJmYWNlIFNpZ25hdHVyZU1ldGhvZCBleHRlbmRzIFhNTFN0cnVjdHVyZSwgQWxnb3JpdGhtTWV0aG9kIHsKKworICAgIC8qKgorICAgICAqIFRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiPkRTQXdpdGhTSEExPC9hPgorICAgICAqIChEU1MpIHNpZ25hdHVyZSBtZXRob2QgYWxnb3JpdGhtIFVSSS4KKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIERTQV9TSEExID0KKwkiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIjsKKworICAgIC8qKgorICAgICAqIFRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiPlJTQXdpdGhTSEExPC9hPgorICAgICAqIChQS0NTICMxKSBzaWduYXR1cmUgbWV0aG9kIGFsZ29yaXRobSBVUkkuCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBSU0FfU0hBMSA9IAorCSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEiOworCisgICAgLyoqCisgICAgICogVGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiPkhNQUMtU0hBMTwvYT4KKyAgICAgKiBNQUMgc2lnbmF0dXJlIG1ldGhvZCBhbGdvcml0aG0gVVJJIAorICAgICAqLworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgSE1BQ19TSEExID0KKwkiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSI7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBhbGdvcml0aG0tc3BlY2lmaWMgaW5wdXQgcGFyYW1ldGVycyBvZiB0aGlzICAKKyAgICAgKiA8Y29kZT5TaWduYXR1cmVNZXRob2Q8L2NvZGU+LgorICAgICAqCisgICAgICogPHA+VGhlIHJldHVybmVkIHBhcmFtZXRlcnMgY2FuIGJlIHR5cGVjYXN0IHRvIGEge0BsaW5rCisgICAgICogU2lnbmF0dXJlTWV0aG9kUGFyYW1ldGVyU3BlY30gb2JqZWN0LgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgYWxnb3JpdGhtLXNwZWNpZmljIGlucHV0IHBhcmFtZXRlcnMgb2YgdGhpcyAKKyAgICAgKiAgICA8Y29kZT5TaWduYXR1cmVNZXRob2Q8L2NvZGU+IChtYXkgYmUgPGNvZGU+bnVsbDwvY29kZT4gaWYgbm90IAorICAgICAqICAgIHNwZWNpZmllZCkKKyAgICAgKi8KKyAgICBBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIGdldFBhcmFtZXRlclNwZWMoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvU2lnbmF0dXJlUHJvcGVydGllcy5qYXZhIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9TaWduYXR1cmVQcm9wZXJ0aWVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ4M2Q0MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvU2lnbmF0dXJlUHJvcGVydGllcy5qYXZhCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8uZHNpZzsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uWE1MU3RydWN0dXJlOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCisvKioKKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIFhNTCA8Y29kZT5TaWduYXR1cmVQcm9wZXJ0aWVzPC9jb2RlPiBlbGVtZW50IGFzIAorICogZGVmaW5lZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sZHNpZy1jb3JlLyI+CisgKiBXM0MgUmVjb21tZW5kYXRpb24gZm9yIFhNTC1TaWduYXR1cmUgU3ludGF4IGFuZCBQcm9jZXNzaW5nPC9hPi4gCisgKiBUaGUgWE1MIFNjaGVtYSBEZWZpbml0aW9uIGlzIGRlZmluZWQgYXM6CisgKiA8cHJlPjxjb2RlPgorICombHQ7ZWxlbWVudCBuYW1lPSJTaWduYXR1cmVQcm9wZXJ0aWVzIiB0eXBlPSJkczpTaWduYXR1cmVQcm9wZXJ0aWVzVHlwZSIvJmd0OyAKKyAqICAgJmx0O2NvbXBsZXhUeXBlIG5hbWU9IlNpZ25hdHVyZVByb3BlcnRpZXNUeXBlIiZndDsKKyAqICAgICAmbHQ7c2VxdWVuY2UmZ3Q7CisgKiAgICAgICAmbHQ7ZWxlbWVudCByZWY9ImRzOlNpZ25hdHVyZVByb3BlcnR5IiBtYXhPY2N1cnM9InVuYm91bmRlZCIvJmd0OyAKKyAqICAgICAmbHQ7L3NlcXVlbmNlJmd0OworICogICAgICZsdDthdHRyaWJ1dGUgbmFtZT0iSWQiIHR5cGU9IklEIiB1c2U9Im9wdGlvbmFsIi8mZ3Q7IAorICogICAmbHQ7L2NvbXBsZXhUeXBlJmd0OworICogPC9jb2RlPjwvcHJlPgorICoKKyAqIEEgPGNvZGU+U2lnbmF0dXJlUHJvcGVydGllczwvY29kZT4gaW5zdGFuY2UgbWF5IGJlIGNyZWF0ZWQgYnkgaW52b2tpbmcgdGhlCisgKiB7QGxpbmsgWE1MU2lnbmF0dXJlRmFjdG9yeSNuZXdTaWduYXR1cmVQcm9wZXJ0aWVzIG5ld1NpZ25hdHVyZVByb3BlcnRpZXN9IAorICogbWV0aG9kIG9mIHRoZSB7QGxpbmsgWE1MU2lnbmF0dXJlRmFjdG9yeX0gY2xhc3M7IGZvciBleGFtcGxlOiAKKyAqCisgKiA8cHJlPgorICogICBYTUxTaWduYXR1cmVGYWN0b3J5IGZhY3RvcnkgPSBYTUxTaWduYXR1cmVGYWN0b3J5LmdldEluc3RhbmNlKCJET00iKTsKKyAqICAgU2lnbmF0dXJlUHJvcGVydGllcyBwcm9wZXJ0aWVzID0gCisgKglmYWN0b3J5Lm5ld1NpZ25hdHVyZVByb3BlcnRpZXMocHJvcHMsICJzaWduYXR1cmUtcHJvcGVydGllcy0xIik7CisgKiA8L3ByZT4KKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKiBAYXV0aG9yIEpTUiAxMDUgRXhwZXJ0IEdyb3VwCisgKiBAc2VlIFhNTFNpZ25hdHVyZUZhY3RvcnkjbmV3U2lnbmF0dXJlUHJvcGVydGllcyhMaXN0LCBTdHJpbmcpCisgKiBAc2VlIFNpZ25hdHVyZVByb3BlcnR5CisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgU2lnbmF0dXJlUHJvcGVydGllcyBleHRlbmRzIFhNTFN0cnVjdHVyZSB7CisKKyAgICAvKioKKyAgICAgKiBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSA8Y29kZT5TaWduYXR1cmVQcm9wZXJ0aWVzPC9jb2RlPiBlbGVtZW50ICh0aGlzIAorICAgICAqIGNhbiBiZSBzcGVjaWZpZWQgYXMgdGhlIHZhbHVlIG9mIHRoZSA8Y29kZT50eXBlPC9jb2RlPiBwYXJhbWV0ZXIgb2YgdGhlIAorICAgICAqIHtAbGluayBSZWZlcmVuY2V9IGNsYXNzIHRvIGlkZW50aWZ5IHRoZSByZWZlcmVudCdzIHR5cGUpLgorICAgICAqLworICAgIGZpbmFsIHN0YXRpYyBTdHJpbmcgVFlQRSA9CisgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjU2lnbmF0dXJlUHJvcGVydGllcyI7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBJZCBvZiB0aGlzIDxjb2RlPlNpZ25hdHVyZVByb3BlcnRpZXM8L2NvZGU+LgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgSWQgb2YgdGhpcyA8Y29kZT5TaWduYXR1cmVQcm9wZXJ0aWVzPC9jb2RlPiAob3IgCisgICAgICogICAgPGNvZGU+bnVsbDwvY29kZT4gaWYgbm90IHNwZWNpZmllZCkKKyAgICAgKi8KKyAgICBTdHJpbmcgZ2V0SWQoKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGFuIHtAbGluayBqYXZhLnV0aWwuQ29sbGVjdGlvbnMjdW5tb2RpZmlhYmxlTGlzdCB1bm1vZGlmaWFibGUgCisgICAgICogbGlzdH0gb2Ygb25lIG9yIG1vcmUge0BsaW5rIFNpZ25hdHVyZVByb3BlcnR5fXMgdGhhdCBhcmUgY29udGFpbmVkIGluIAorICAgICAqIHRoaXMgPGNvZGU+U2lnbmF0dXJlUHJvcGVydGllczwvY29kZT4uIAorICAgICAqCisgICAgICogQHJldHVybiBhbiB1bm1vZGlmaWFibGUgbGlzdCBvZiBvbmUgb3IgbW9yZSAKKyAgICAgKiAgICA8Y29kZT5TaWduYXR1cmVQcm9wZXJ0eTwvY29kZT5zIAorICAgICAqLworICAgIExpc3QgZ2V0UHJvcGVydGllcygpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9TaWduYXR1cmVQcm9wZXJ0eS5qYXZhIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9TaWduYXR1cmVQcm9wZXJ0eS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5MDkzNmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL1NpZ25hdHVyZVByb3BlcnR5LmphdmEKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by5kc2lnOworCitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5YTUxTdHJ1Y3R1cmU7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKKy8qKgorICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgWE1MIDxjb2RlPlNpZ25hdHVyZVByb3BlcnR5PC9jb2RlPiBlbGVtZW50IGFzIAorICogZGVmaW5lZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sZHNpZy1jb3JlLyI+CisgKiBXM0MgUmVjb21tZW5kYXRpb24gZm9yIFhNTC1TaWduYXR1cmUgU3ludGF4IGFuZCBQcm9jZXNzaW5nPC9hPi4KKyAqIFRoZSBYTUwgU2NoZW1hIERlZmluaXRpb24gaXMgZGVmaW5lZCBhczoKKyAqIDxwcmU+PGNvZGU+CisgKiZsdDtlbGVtZW50IG5hbWU9IlNpZ25hdHVyZVByb3BlcnR5IiB0eXBlPSJkczpTaWduYXR1cmVQcm9wZXJ0eVR5cGUiLyZndDsgCisgKiAgICZsdDtjb21wbGV4VHlwZSBuYW1lPSJTaWduYXR1cmVQcm9wZXJ0eVR5cGUiIG1peGVkPSJ0cnVlIiZndDsKKyAqICAgICAmbHQ7Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIiZndDsgCisgKiAgICAgICAmbHQ7YW55IG5hbWVzcGFjZT0iIyNvdGhlciIgcHJvY2Vzc0NvbnRlbnRzPSJsYXgiLyZndDsKKyAqICAgICAgICZsdDshLS0gKDEsMSkgZWxlbWVudHMgZnJvbSAoMSwgdW5ib3VuZGVkKSBuYW1lc3BhY2VzIC0tJmd0OworICogICAgICZsdDsvY2hvaWNlJmd0OworICogICAgICZsdDthdHRyaWJ1dGUgbmFtZT0iVGFyZ2V0IiB0eXBlPSJhbnlVUkkiIHVzZT0icmVxdWlyZWQiLyZndDsgCisgKiAgICAgJmx0O2F0dHJpYnV0ZSBuYW1lPSJJZCIgdHlwZT0iSUQiIHVzZT0ib3B0aW9uYWwiLyZndDsgCisgKiAgICZsdDsvY29tcGxleFR5cGUmZ3Q7CisgKiA8L2NvZGU+PC9wcmU+CisgKgorICogQSA8Y29kZT5TaWduYXR1cmVQcm9wZXJ0eTwvY29kZT4gaW5zdGFuY2UgbWF5IGJlIGNyZWF0ZWQgYnkgaW52b2tpbmcgdGhlCisgKiB7QGxpbmsgWE1MU2lnbmF0dXJlRmFjdG9yeSNuZXdTaWduYXR1cmVQcm9wZXJ0eSBuZXdTaWduYXR1cmVQcm9wZXJ0eX0gCisgKiBtZXRob2Qgb2YgdGhlIHtAbGluayBYTUxTaWduYXR1cmVGYWN0b3J5fSBjbGFzczsgZm9yIGV4YW1wbGU6IAorICoKKyAqIDxwcmU+CisgKiAgIFhNTFNpZ25hdHVyZUZhY3RvcnkgZmFjdG9yeSA9IFhNTFNpZ25hdHVyZUZhY3RvcnkuZ2V0SW5zdGFuY2UoIkRPTSIpOworICogICBTaWduYXR1cmVQcm9wZXJ0eSBwcm9wZXJ0eSA9IGZhY3RvcnkubmV3U2lnbmF0dXJlUHJvcGVydHkKKyAqCShDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KGNvbnRlbnQpLCAiI1NpZ25hdHVyZS0xIiwgIlRpbWVTdGFtcCIpOworICogPC9wcmU+CisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICogQGF1dGhvciBKU1IgMTA1IEV4cGVydCBHcm91cAorICogQHNlZSBYTUxTaWduYXR1cmVGYWN0b3J5I25ld1NpZ25hdHVyZVByb3BlcnR5KExpc3QsIFN0cmluZywgU3RyaW5nKQorICogQHNlZSBTaWduYXR1cmVQcm9wZXJ0aWVzCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgU2lnbmF0dXJlUHJvcGVydHkgZXh0ZW5kcyBYTUxTdHJ1Y3R1cmUgeworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgdGFyZ2V0IFVSSSBvZiB0aGlzIDxjb2RlPlNpZ25hdHVyZVByb3BlcnR5PC9jb2RlPi4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIHRhcmdldCBVUkkgb2YgdGhpcyA8Y29kZT5TaWduYXR1cmVQcm9wZXJ0eTwvY29kZT4gKG5ldmVyIAorICAgICAqICAgIDxjb2RlPm51bGw8L2NvZGU+KQorICAgICAqLworICAgIFN0cmluZyBnZXRUYXJnZXQoKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIElkIG9mIHRoaXMgPGNvZGU+U2lnbmF0dXJlUHJvcGVydHk8L2NvZGU+LgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgSWQgb2YgdGhpcyA8Y29kZT5TaWduYXR1cmVQcm9wZXJ0eTwvY29kZT4gKG9yIAorICAgICAqICAgIDxjb2RlPm51bGw8L2NvZGU+IGlmIG5vdCBzcGVjaWZpZWQpCisgICAgICovCisgICAgU3RyaW5nIGdldElkKCk7CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJucyBhbiB7QGxpbmsgamF2YS51dGlsLkNvbGxlY3Rpb25zI3VubW9kaWZpYWJsZUxpc3QgdW5tb2RpZmlhYmxlIAorICAgICAqIGxpc3R9IG9mIG9uZSBvciBtb3JlIHtAbGluayBYTUxTdHJ1Y3R1cmV9cyB0aGF0IGFyZSBjb250YWluZWQgaW4gCisgICAgICogdGhpcyA8Y29kZT5TaWduYXR1cmVQcm9wZXJ0eTwvY29kZT4uIFRoZXNlIHJlcHJlc2VudCBhZGRpdGlvbmFsCisgICAgICogaW5mb3JtYXRpb24gaXRlbXMgY29uY2VybmluZyB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUge0BsaW5rIFhNTFNpZ25hdHVyZX0KKyAgICAgKiAoaS5lLiBkYXRlL3RpbWUgc3RhbXAgb3Igc2VyaWFsIG51bWJlcnMgb2YgY3J5cHRvZ3JhcGhpYyBoYXJkd2FyZSB1c2VkCisgICAgICogaW4gc2lnbmF0dXJlIGdlbmVyYXRpb24pLgorICAgICAqCisgICAgICogQHJldHVybiBhbiB1bm1vZGlmaWFibGUgbGlzdCBvZiBvbmUgb3IgbW9yZSA8Y29kZT5YTUxTdHJ1Y3R1cmU8L2NvZGU+cyAKKyAgICAgKi8KKyAgICBMaXN0IGdldENvbnRlbnQoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvU2lnbmVkSW5mby5qYXZhIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9TaWduZWRJbmZvLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNmY2VjNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvU2lnbmVkSW5mby5qYXZhCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8uZHNpZzsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uWE1MU3RydWN0dXJlOworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKKy8qKgorICogQW4gcmVwcmVzZW50YXRpb24gb2YgdGhlIFhNTCA8Y29kZT5TaWduZWRJbmZvPC9jb2RlPiBlbGVtZW50IGFzIAorICogZGVmaW5lZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sZHNpZy1jb3JlLyI+CisgKiBXM0MgUmVjb21tZW5kYXRpb24gZm9yIFhNTC1TaWduYXR1cmUgU3ludGF4IGFuZCBQcm9jZXNzaW5nPC9hPi4KKyAqIFRoZSBYTUwgU2NoZW1hIERlZmluaXRpb24gaXMgZGVmaW5lZCBhczoKKyAqIDxwcmU+PGNvZGU+CisgKiAmbHQ7ZWxlbWVudCBuYW1lPSJTaWduZWRJbmZvIiB0eXBlPSJkczpTaWduZWRJbmZvVHlwZSIvJmd0OyAKKyAqICZsdDtjb21wbGV4VHlwZSBuYW1lPSJTaWduZWRJbmZvVHlwZSImZ3Q7CisgKiAgICZsdDtzZXF1ZW5jZSZndDsgCisgKiAgICAgJmx0O2VsZW1lbnQgcmVmPSJkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIi8mZ3Q7IAorICogICAgICZsdDtlbGVtZW50IHJlZj0iZHM6U2lnbmF0dXJlTWV0aG9kIi8mZ3Q7IAorICogICAgICZsdDtlbGVtZW50IHJlZj0iZHM6UmVmZXJlbmNlIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvJmd0OyAKKyAqICAgJmx0Oy9zZXF1ZW5jZSZndDsgIAorICogICAmbHQ7YXR0cmlidXRlIG5hbWU9IklkIiB0eXBlPSJJRCIgdXNlPSJvcHRpb25hbCIvJmd0OyAKKyAqICZsdDsvY29tcGxleFR5cGUmZ3Q7CisgKiA8L2NvZGU+PC9wcmU+CisgKgorICogQSA8Y29kZT5TaWduZWRJbmZvPC9jb2RlPiBpbnN0YW5jZSBtYXkgYmUgY3JlYXRlZCBieSBpbnZva2luZyBvbmUgb2YgdGhlCisgKiB7QGxpbmsgWE1MU2lnbmF0dXJlRmFjdG9yeSNuZXdTaWduZWRJbmZvIG5ld1NpZ25lZEluZm99IG1ldGhvZHMgb2YgdGhlCisgKiB7QGxpbmsgWE1MU2lnbmF0dXJlRmFjdG9yeX0gY2xhc3MuCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICogQGF1dGhvciBKU1IgMTA1IEV4cGVydCBHcm91cAorICogQHNlZSBYTUxTaWduYXR1cmVGYWN0b3J5I25ld1NpZ25lZEluZm8oQ2Fub25pY2FsaXphdGlvbk1ldGhvZCwgU2lnbmF0dXJlTWV0aG9kLCBMaXN0KQorICogQHNlZSBYTUxTaWduYXR1cmVGYWN0b3J5I25ld1NpZ25lZEluZm8oQ2Fub25pY2FsaXphdGlvbk1ldGhvZCwgU2lnbmF0dXJlTWV0aG9kLCBMaXN0LCBTdHJpbmcpCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgU2lnbmVkSW5mbyBleHRlbmRzIFhNTFN0cnVjdHVyZSB7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBjYW5vbmljYWxpemF0aW9uIG1ldGhvZCBvZiB0aGlzIDxjb2RlPlNpZ25lZEluZm88L2NvZGU+LgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgY2Fub25pY2FsaXphdGlvbiBtZXRob2QKKyAgICAgKi8KKyAgICBDYW5vbmljYWxpemF0aW9uTWV0aG9kIGdldENhbm9uaWNhbGl6YXRpb25NZXRob2QoKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBzaWduYXR1cmUgbWV0aG9kIG9mIHRoaXMgPGNvZGU+U2lnbmVkSW5mbzwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBzaWduYXR1cmUgbWV0aG9kCisgICAgICovCisgICAgU2lnbmF0dXJlTWV0aG9kIGdldFNpZ25hdHVyZU1ldGhvZCgpOworICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgYW4ge0BsaW5rIGphdmEudXRpbC5Db2xsZWN0aW9ucyN1bm1vZGlmaWFibGVMaXN0IAorICAgICAqIHVubW9kaWZpYWJsZSBsaXN0fSBvZiBvbmUgb3IgbW9yZSB7QGxpbmsgUmVmZXJlbmNlfXMuIAorICAgICAqCisgICAgICogQHJldHVybiBhbiB1bm1vZGlmaWFibGUgbGlzdCBvZiBvbmUgb3IgbW9yZSB7QGxpbmsgUmVmZXJlbmNlfXMKKyAgICAgKi8KKyAgICBMaXN0IGdldFJlZmVyZW5jZXMoKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBvcHRpb25hbCA8Y29kZT5JZDwvY29kZT4gYXR0cmlidXRlIG9mIHRoaXMgCisgICAgICogPGNvZGU+U2lnbmVkSW5mbzwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBpZCAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+IGlmIG5vdCBzcGVjaWZpZWQpCisgICAgICovCisgICAgU3RyaW5nIGdldElkKCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBjYW5vbmljYWxpemVkIHNpZ25lZCBpbmZvIGJ5dGVzIGFmdGVyIGEgc2lnbmluZyBvciAKKyAgICAgKiB2YWxpZGF0aW9uIG9wZXJhdGlvbi4gVGhpcyBtZXRob2QgaXMgdXNlZnVsIGZvciBkZWJ1Z2dpbmcuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIGFuIDxjb2RlPklucHV0U3RyZWFtPC9jb2RlPiBjb250YWluaW5nIHRoZSBjYW5vbmljYWxpemVkIGJ5dGVzLCAKKyAgICAgKiAgICBvciA8Y29kZT5udWxsPC9jb2RlPiBpZiB0aGlzIDxjb2RlPlNpZ25lZEluZm88L2NvZGU+IGhhcyBub3QgYmVlbiAKKyAgICAgKiAgICBzaWduZWQgb3IgdmFsaWRhdGVkIHlldAorICAgICAqLworICAgIElucHV0U3RyZWFtIGdldENhbm9uaWNhbGl6ZWREYXRhKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL1RyYW5zZm9ybS5qYXZhIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9UcmFuc2Zvcm0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTU3YjZhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9UcmFuc2Zvcm0uamF2YQpAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLmRzaWc7CisKK2ltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYzsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLkFsZ29yaXRobU1ldGhvZDsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLkRhdGE7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5YTUxDcnlwdG9Db250ZXh0OworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uWE1MU3RydWN0dXJlOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5zcGVjLlRyYW5zZm9ybVBhcmFtZXRlclNwZWM7CisKKy8qKgorICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgWE1MIDxjb2RlPlRyYW5zZm9ybTwvY29kZT4gZWxlbWVudCBhcyAKKyAqIGRlZmluZWQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbGRzaWctY29yZS8iPgorICogVzNDIFJlY29tbWVuZGF0aW9uIGZvciBYTUwtU2lnbmF0dXJlIFN5bnRheCBhbmQgUHJvY2Vzc2luZzwvYT4uIAorICogVGhlIFhNTCBTY2hlbWEgRGVmaW5pdGlvbiBpcyBkZWZpbmVkIGFzOgorICoKKyAqIDxwcmU+CisgKiAmbHQ7ZWxlbWVudCBuYW1lPSJUcmFuc2Zvcm0iIHR5cGU9ImRzOlRyYW5zZm9ybVR5cGUiLyZndDsKKyAqICAgJmx0O2NvbXBsZXhUeXBlIG5hbWU9IlRyYW5zZm9ybVR5cGUiIG1peGVkPSJ0cnVlIiZndDsKKyAqICAgICAmbHQ7Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiJmd0OworICogICAgICAgJmx0O2FueSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4Ii8mZ3Q7CisgKiAgICAgICAmbHQ7IS0tICgxLDEpIGVsZW1lbnRzIGZyb20gKDAsdW5ib3VuZGVkKSBuYW1lc3BhY2VzIC0tJmd0OworICogICAgICAgJmx0O2VsZW1lbnQgbmFtZT0iWFBhdGgiIHR5cGU9InN0cmluZyIvJmd0OworICogICAgICZsdDsvY2hvaWNlJmd0OworICogICAgICZsdDthdHRyaWJ1dGUgbmFtZT0iQWxnb3JpdGhtIiB0eXBlPSJhbnlVUkkiIHVzZT0icmVxdWlyZWQiLyZndDsKKyAqICAgJmx0Oy9jb21wbGV4VHlwZSZndDsKKyAqIDwvcHJlPgorICoKKyAqIEEgPGNvZGU+VHJhbnNmb3JtPC9jb2RlPiBpbnN0YW5jZSBtYXkgYmUgY3JlYXRlZCBieSBpbnZva2luZyB0aGUKKyAqIHtAbGluayBYTUxTaWduYXR1cmVGYWN0b3J5I25ld1RyYW5zZm9ybSBuZXdUcmFuc2Zvcm19IG1ldGhvZCAKKyAqIG9mIHRoZSB7QGxpbmsgWE1MU2lnbmF0dXJlRmFjdG9yeX0gY2xhc3MuCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICogQGF1dGhvciBKU1IgMTA1IEV4cGVydCBHcm91cAorICogQHNlZSBYTUxTaWduYXR1cmVGYWN0b3J5I25ld1RyYW5zZm9ybShTdHJpbmcsIFRyYW5zZm9ybVBhcmFtZXRlclNwZWMpCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgVHJhbnNmb3JtIGV4dGVuZHMgWE1MU3RydWN0dXJlLCBBbGdvcml0aG1NZXRob2QgeworCisgICAgLyoqCisgICAgICogVGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNiYXNlNjQiPkJhc2U2NDwvYT4gCisgICAgICogdHJhbnNmb3JtIGFsZ29yaXRobSBVUkkuCisgICAgICovCisgICAgZmluYWwgc3RhdGljIFN0cmluZyBCQVNFNjQgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2Jhc2U2NCI7CisKKyAgICAvKioKKyAgICAgKiBUaGUgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiPgorICAgICAqIEVudmVsb3BlZCBTaWduYXR1cmU8L2E+IHRyYW5zZm9ybSBhbGdvcml0aG0gVVJJLgorICAgICAqLworICAgIGZpbmFsIHN0YXRpYyBTdHJpbmcgRU5WRUxPUEVEID0gCisgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSI7CisKKyAgICAvKioKKyAgICAgKiBUaGUgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPlhQYXRoPC9hPiAKKyAgICAgKiB0cmFuc2Zvcm0gYWxnb3JpdGhtIFVSSS4KKyAgICAgKi8KKyAgICBmaW5hbCBzdGF0aWMgU3RyaW5nIFhQQVRIID0gImh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2IjsKKworICAgIC8qKgorICAgICAqIFRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA2L3htbGRzaWctZmlsdGVyMiI+CisgICAgICogWFBhdGggRmlsdGVyIDI8L2E+IHRyYW5zZm9ybSBhbGdvcml0aG0gVVJJLgorICAgICAqLworICAgIGZpbmFsIHN0YXRpYyBTdHJpbmcgWFBBVEgyID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDYveG1sZHNpZy1maWx0ZXIyIjsKKworICAgIC8qKgorICAgICAqIFRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14c2x0LTE5OTkxMTE2Ij5YU0xUPC9hPiAKKyAgICAgKiB0cmFuc2Zvcm0gYWxnb3JpdGhtIFVSSS4KKyAgICAgKi8KKyAgICBmaW5hbCBzdGF0aWMgU3RyaW5nIFhTTFQgPSAiaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHNsdC0xOTk5MTExNiI7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBhbGdvcml0aG0tc3BlY2lmaWMgaW5wdXQgcGFyYW1ldGVycyBhc3NvY2lhdGVkIHdpdGggdGhpcworICAgICAqIDxjb2RlPlRyYW5zZm9ybTwvY29kZT4uCisgICAgICogPHA+CisgICAgICogVGhlIHJldHVybmVkIHBhcmFtZXRlcnMgY2FuIGJlIHR5cGVjYXN0IHRvIGEgCisgICAgICoge0BsaW5rIFRyYW5zZm9ybVBhcmFtZXRlclNwZWN9IG9iamVjdC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIGFsZ29yaXRobS1zcGVjaWZpYyBpbnB1dCBwYXJhbWV0ZXJzIChtYXkgYmUgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiAgICBpZiBub3Qgc3BlY2lmaWVkKQorICAgICAqLworICAgIEFsZ29yaXRobVBhcmFtZXRlclNwZWMgZ2V0UGFyYW1ldGVyU3BlYygpOworCisgICAgLyoqCisgICAgICogVHJhbnNmb3JtcyB0aGUgc3BlY2lmaWVkIGRhdGEgdXNpbmcgdGhlIHVuZGVybHlpbmcgdHJhbnNmb3JtIGFsZ29yaXRobS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXRhIHRoZSBkYXRhIHRvIGJlIHRyYW5zZm9ybWVkCisgICAgICogQHBhcmFtIGNvbnRleHQgdGhlIDxjb2RlPlhNTENyeXB0b0NvbnRleHQ8L2NvZGU+IGNvbnRhaW5pbmcKKyAgICAgKiAgICBhZGRpdGlvbmFsIGNvbnRleHQgKG1heSBiZSA8Y29kZT5udWxsPC9jb2RlPiBpZiBub3QgYXBwbGljYWJsZSkKKyAgICAgKiBAcmV0dXJuIHRoZSB0cmFuc2Zvcm1lZCBkYXRhCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5kYXRhPC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEB0aHJvd3MgVHJhbnNmb3JtRXhjZXB0aW9uIGlmIGFuIGVycm9yIG9jY3VycyB3aGlsZSBleGVjdXRpbmcgdGhlCisgICAgICogICAgdHJhbnNmb3JtCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IERhdGEgdHJhbnNmb3JtKERhdGEgZGF0YSwgWE1MQ3J5cHRvQ29udGV4dCBjb250ZXh0KQorICAgICAgICB0aHJvd3MgVHJhbnNmb3JtRXhjZXB0aW9uOworCisgICAgLyoqCisgICAgICogVHJhbnNmb3JtcyB0aGUgc3BlY2lmaWVkIGRhdGEgdXNpbmcgdGhlIHVuZGVybHlpbmcgdHJhbnNmb3JtIGFsZ29yaXRobS4KKyAgICAgKiBJZiB0aGUgb3V0cHV0IG9mIHRoaXMgdHJhbnNmb3JtIGlzIGFuIDxjb2RlPk9jdGV0U3RyZWFtRGF0YTwvY29kZT4sIHRoZW4gCisgICAgICogdGhpcyBtZXRob2QgcmV0dXJucyA8Y29kZT5udWxsPC9jb2RlPiBhbmQgdGhlIGJ5dGVzIGFyZSB3cml0dGVuIHRvIHRoZSAKKyAgICAgKiBzcGVjaWZpZWQgPGNvZGU+T3V0cHV0U3RyZWFtPC9jb2RlPi4gT3RoZXJ3aXNlLCB0aGUgCisgICAgICogPGNvZGU+T3V0cHV0U3RyZWFtPC9jb2RlPiBpcyBpZ25vcmVkIGFuZCB0aGUgbWV0aG9kIGJlaGF2ZXMgYXMgaWYgCisgICAgICoge0BsaW5rICN0cmFuc2Zvcm0oRGF0YSwgWE1MQ3J5cHRvQ29udGV4dCl9IHdlcmUgaW52b2tlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXRhIHRoZSBkYXRhIHRvIGJlIHRyYW5zZm9ybWVkCisgICAgICogQHBhcmFtIGNvbnRleHQgdGhlIDxjb2RlPlhNTENyeXB0b0NvbnRleHQ8L2NvZGU+IGNvbnRhaW5pbmcKKyAgICAgKiAgICBhZGRpdGlvbmFsIGNvbnRleHQgKG1heSBiZSA8Y29kZT5udWxsPC9jb2RlPiBpZiBub3QgYXBwbGljYWJsZSkKKyAgICAgKiBAcGFyYW0gb3MgdGhlIDxjb2RlPk91dHB1dFN0cmVhbTwvY29kZT4gdGhhdCBzaG91bGQgYmUgdXNlZCB0byB3cml0ZQorICAgICAqICAgIHRoZSB0cmFuc2Zvcm1lZCBkYXRhIHRvCisgICAgICogQHJldHVybiB0aGUgdHJhbnNmb3JtZWQgZGF0YSAob3IgPGNvZGU+bnVsbDwvY29kZT4gaWYgdGhlIGRhdGEgd2FzCisgICAgICogICAgd3JpdHRlbiB0byB0aGUgPGNvZGU+T3V0cHV0U3RyZWFtPC9jb2RlPiBwYXJhbWV0ZXIpCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5kYXRhPC9jb2RlPiBvciA8Y29kZT5vczwvY29kZT4KKyAgICAgKiAgICBpcyA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEB0aHJvd3MgVHJhbnNmb3JtRXhjZXB0aW9uIGlmIGFuIGVycm9yIG9jY3VycyB3aGlsZSBleGVjdXRpbmcgdGhlCisgICAgICogICAgdHJhbnNmb3JtCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IERhdGEgdHJhbnNmb3JtCisgICAgICAgIChEYXRhIGRhdGEsIFhNTENyeXB0b0NvbnRleHQgY29udGV4dCwgT3V0cHV0U3RyZWFtIG9zKQorICAgICAgICB0aHJvd3MgVHJhbnNmb3JtRXhjZXB0aW9uOworfQpkaWZmIC0tZ2l0IGEvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9UcmFuc2Zvcm1FeGNlcHRpb24uamF2YSBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvVHJhbnNmb3JtRXhjZXB0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDc1ZTk5ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvVHJhbnNmb3JtRXhjZXB0aW9uLmphdmEKQEAgLTAsMCArMSwxNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8uZHNpZzsKKworaW1wb3J0IGphdmEuaW8uUHJpbnRTdHJlYW07CitpbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKKworLyoqCisgKiBJbmRpY2F0ZXMgYW4gZXhjZXB0aW9uYWwgY29uZGl0aW9uIHRoYXQgb2NjdXJlZCB3aGlsZSBleGVjdXRpbmcgYQorICogdHJhbnNmb3JtIGFsZ29yaXRobS4KKyAqCisgKiA8cD5BIDxjb2RlPlRyYW5zZm9ybUV4Y2VwdGlvbjwvY29kZT4gY2FuIGNvbnRhaW4gYSBjYXVzZTogYW5vdGhlciAKKyAqIHRocm93YWJsZSB0aGF0IGNhdXNlZCB0aGlzIDxjb2RlPlRyYW5zZm9ybUV4Y2VwdGlvbjwvY29kZT4gdG8gZ2V0IHRocm93bi4gCisgKgorICogQHNlZSBUcmFuc2Zvcm0jdHJhbnNmb3JtCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKiBAYXV0aG9yIEpTUiAxMDUgRXhwZXJ0IEdyb3VwCisgKi8KK3B1YmxpYyBjbGFzcyBUcmFuc2Zvcm1FeGNlcHRpb24gZXh0ZW5kcyBFeGNlcHRpb24geworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gNTA4MjYzNDgwMTM2MDQyNzgwMEw7CisKKyAgICAvKioKKyAgICAgKiBUaGUgdGhyb3dhYmxlIHRoYXQgY2F1c2VkIHRoaXMgZXhjZXB0aW9uIHRvIGdldCB0aHJvd24sIG9yIG51bGwgaWYgdGhpcworICAgICAqIGV4Y2VwdGlvbiB3YXMgbm90IGNhdXNlZCBieSBhbm90aGVyIHRocm93YWJsZSBvciBpZiB0aGUgY2F1c2F0aXZlCisgICAgICogdGhyb3dhYmxlIGlzIHVua25vd24uIAorICAgICAqCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIHByaXZhdGUgVGhyb3dhYmxlIGNhdXNlOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIG5ldyA8Y29kZT5UcmFuc2Zvcm1FeGNlcHRpb248L2NvZGU+IHdpdGggCisgICAgICogPGNvZGU+bnVsbDwvY29kZT4gYXMgaXRzIGRldGFpbCBtZXNzYWdlLgorICAgICAqLworICAgIHB1YmxpYyBUcmFuc2Zvcm1FeGNlcHRpb24oKSB7CisgICAgICAgIHN1cGVyKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIG5ldyA8Y29kZT5UcmFuc2Zvcm1FeGNlcHRpb248L2NvZGU+IHdpdGggdGhlIHNwZWNpZmllZCAKKyAgICAgKiBkZXRhaWwgbWVzc2FnZS4gCisgICAgICoKKyAgICAgKiBAcGFyYW0gbWVzc2FnZSB0aGUgZGV0YWlsIG1lc3NhZ2UKKyAgICAgKi8KKyAgICBwdWJsaWMgVHJhbnNmb3JtRXhjZXB0aW9uKFN0cmluZyBtZXNzYWdlKSB7CisgICAgICAgIHN1cGVyKG1lc3NhZ2UpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBuZXcgPGNvZGU+VHJhbnNmb3JtRXhjZXB0aW9uPC9jb2RlPiB3aXRoIHRoZSAKKyAgICAgKiBzcGVjaWZpZWQgZGV0YWlsIG1lc3NhZ2UgYW5kIGNhdXNlLiAgCisgICAgICogPHA+Tm90ZSB0aGF0IHRoZSBkZXRhaWwgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGgKKyAgICAgKiA8Y29kZT5jYXVzZTwvY29kZT4gaXMgPGk+bm90PC9pPiBhdXRvbWF0aWNhbGx5IGluY29ycG9yYXRlZCBpbgorICAgICAqIHRoaXMgZXhjZXB0aW9uJ3MgZGV0YWlsIG1lc3NhZ2UuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbWVzc2FnZSB0aGUgZGV0YWlsIG1lc3NhZ2UgCisgICAgICogQHBhcmFtIGNhdXNlIHRoZSBjYXVzZSAoQSA8dHQ+bnVsbDwvdHQ+IHZhbHVlIGlzIHBlcm1pdHRlZCwgYW5kIAorICAgICAqCSAgICAgIGluZGljYXRlcyB0aGF0IHRoZSBjYXVzZSBpcyBub25leGlzdGVudCBvciB1bmtub3duLikKKyAgICAgKi8KKyAgICBwdWJsaWMgVHJhbnNmb3JtRXhjZXB0aW9uKFN0cmluZyBtZXNzYWdlLCBUaHJvd2FibGUgY2F1c2UpIHsKKyAgICAgICAgc3VwZXIobWVzc2FnZSk7CisgICAgICAgIHRoaXMuY2F1c2UgPSBjYXVzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IDxjb2RlPlRyYW5zZm9ybUV4Y2VwdGlvbjwvY29kZT4gd2l0aCB0aGUgc3BlY2lmaWVkIAorICAgICAqIGNhdXNlIGFuZCBhIGRldGFpbCBtZXNzYWdlIG9mIAorICAgICAqIDxjb2RlPihjYXVzZT09bnVsbCA/IG51bGwgOiBjYXVzZS50b1N0cmluZygpKTwvY29kZT4KKyAgICAgKiAod2hpY2ggdHlwaWNhbGx5IGNvbnRhaW5zIHRoZSBjbGFzcyBhbmQgZGV0YWlsIG1lc3NhZ2Ugb2YgCisgICAgICogPGNvZGU+Y2F1c2U8L2NvZGU+KS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjYXVzZSB0aGUgY2F1c2UgKEEgPHR0Pm51bGw8L3R0PiB2YWx1ZSBpcyBwZXJtaXR0ZWQsIGFuZCAKKyAgICAgKiAgICAgICAgaW5kaWNhdGVzIHRoYXQgdGhlIGNhdXNlIGlzIG5vbmV4aXN0ZW50IG9yIHVua25vd24uKQorICAgICAqLworICAgIHB1YmxpYyBUcmFuc2Zvcm1FeGNlcHRpb24oVGhyb3dhYmxlIGNhdXNlKSB7CisgICAgICAgIHN1cGVyKGNhdXNlPT1udWxsID8gbnVsbCA6IGNhdXNlLnRvU3RyaW5nKCkpOworICAgICAgICB0aGlzLmNhdXNlID0gY2F1c2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgY2F1c2Ugb2YgdGhpcyA8Y29kZT5UcmFuc2Zvcm1FeGNlcHRpb248L2NvZGU+IG9yIAorICAgICAqIDxjb2RlPm51bGw8L2NvZGU+IGlmIHRoZSBjYXVzZSBpcyBub25leGlzdGVudCBvciB1bmtub3duLiAgKFRoZSAKKyAgICAgKiBjYXVzZSBpcyB0aGUgdGhyb3dhYmxlIHRoYXQgY2F1c2VkIHRoaXMgCisgICAgICogPGNvZGU+VHJhbnNmb3JtRXhjZXB0aW9uPC9jb2RlPiB0byBnZXQgdGhyb3duLikKKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIGNhdXNlIG9mIHRoaXMgPGNvZGU+VHJhbnNmb3JtRXhjZXB0aW9uPC9jb2RlPiBvciAKKyAgICAgKiAgICAgICAgIDxjb2RlPm51bGw8L2NvZGU+IGlmIHRoZSBjYXVzZSBpcyBub25leGlzdGVudCBvciB1bmtub3duLgorICAgICAqLworICAgIHB1YmxpYyBUaHJvd2FibGUgZ2V0Q2F1c2UoKSB7CisgICAgICAgIHJldHVybiBjYXVzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQcmludHMgdGhpcyA8Y29kZT5UcmFuc2Zvcm1FeGNlcHRpb248L2NvZGU+LCBpdHMgYmFja3RyYWNlIGFuZAorICAgICAqIHRoZSBjYXVzZSdzIGJhY2t0cmFjZSB0byB0aGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHByaW50U3RhY2tUcmFjZSgpIHsKKwlzdXBlci5wcmludFN0YWNrVHJhY2UoKTsKKwlpZiAoY2F1c2UgIT0gbnVsbCkgeworCSAgICBjYXVzZS5wcmludFN0YWNrVHJhY2UoKTsKKwl9CisgICAgfQorCisgICAgLyoqCisgICAgICogUHJpbnRzIHRoaXMgPGNvZGU+VHJhbnNmb3JtRXhjZXB0aW9uPC9jb2RlPiwgaXRzIGJhY2t0cmFjZSBhbmQKKyAgICAgKiB0aGUgY2F1c2UncyBiYWNrdHJhY2UgdG8gdGhlIHNwZWNpZmllZCBwcmludCBzdHJlYW0uCisgICAgICoKKyAgICAgKiBAcGFyYW0gcyA8Y29kZT5QcmludFN0cmVhbTwvY29kZT4gdG8gdXNlIGZvciBvdXRwdXQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBwcmludFN0YWNrVHJhY2UoUHJpbnRTdHJlYW0gcykgeworCXN1cGVyLnByaW50U3RhY2tUcmFjZShzKTsKKwlpZiAoY2F1c2UgIT0gbnVsbCkgeworCSAgICBjYXVzZS5wcmludFN0YWNrVHJhY2Uocyk7CisJfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFByaW50cyB0aGlzIDxjb2RlPlRyYW5zZm9ybUV4Y2VwdGlvbjwvY29kZT4sIGl0cyBiYWNrdHJhY2UgYW5kCisgICAgICogdGhlIGNhdXNlJ3MgYmFja3RyYWNlIHRvIHRoZSBzcGVjaWZpZWQgcHJpbnQgd3JpdGVyLgorICAgICAqCisgICAgICogQHBhcmFtIHMgPGNvZGU+UHJpbnRXcml0ZXI8L2NvZGU+IHRvIHVzZSBmb3Igb3V0cHV0CisgICAgICovCisgICAgcHVibGljIHZvaWQgcHJpbnRTdGFja1RyYWNlKFByaW50V3JpdGVyIHMpIHsKKyAgICAgICAgc3VwZXIucHJpbnRTdGFja1RyYWNlKHMpOworCWlmIChjYXVzZSAhPSBudWxsKSB7CisJICAgIGNhdXNlLnByaW50U3RhY2tUcmFjZShzKTsKKwl9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9UcmFuc2Zvcm1TZXJ2aWNlLmphdmEgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL1RyYW5zZm9ybVNlcnZpY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzNiMmYwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9UcmFuc2Zvcm1TZXJ2aWNlLmphdmEKQEAgLTAsMCArMSwzNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8uZHNpZzsKKworaW1wb3J0IGphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHJvdmlkZXI7CitpbXBvcnQgamF2YS5zZWN1cml0eS5TZWN1cml0eTsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLk1hcnNoYWxFeGNlcHRpb247CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5YTUxTdHJ1Y3R1cmU7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5YTUxDcnlwdG9Db250ZXh0OworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5zcGVjLlRyYW5zZm9ybVBhcmFtZXRlclNwZWM7CisKKy8qKgorICogQSBTZXJ2aWNlIFByb3ZpZGVyIEludGVyZmFjZSBmb3IgdHJhbnNmb3JtIGFuZCBjYW5vbmljYWxpemF0aW9uIGFsZ29yaXRobXMuCisgKgorICogPHA+RWFjaCBpbnN0YW5jZSBvZiA8Y29kZT5UcmFuc2Zvcm1TZXJ2aWNlPC9jb2RlPiBzdXBwb3J0cyBhIHNwZWNpZmljIAorICogdHJhbnNmb3JtIG9yIGNhbm9uaWNhbGl6YXRpb24gYWxnb3JpdGhtIGFuZCBYTUwgbWVjaGFuaXNtIHR5cGUuIFRvIGNyZWF0ZSBhIAorICogPGNvZGU+VHJhbnNmb3JtU2VydmljZTwvY29kZT4sIGNhbGwgb25lIG9mIHRoZSBzdGF0aWMgCisgKiB7QGxpbmsgI2dldEluc3RhbmNlIGdldEluc3RhbmNlfSBtZXRob2RzLCBwYXNzaW5nIGluIHRoZSBhbGdvcml0aG0gVVJJIGFuZCAKKyAqIFhNTCBtZWNoYW5pc20gdHlwZSBkZXNpcmVkLCBmb3IgZXhhbXBsZToKKyAqCisgKiA8YmxvY2txdW90ZT48Y29kZT4KKyAqIFRyYW5zZm9ybVNlcnZpY2UgdHMgPSBUcmFuc2Zvcm1TZXJ2aWNlLmdldEluc3RhbmNlKFRyYW5zZm9ybS5YUEFUSDIsICJET00iKTsKKyAqIDwvY29kZT48L2Jsb2NrcXVvdGU+CisgKgorICogPHA+PGNvZGU+VHJhbnNmb3JtU2VydmljZTwvY29kZT4gaW1wbGVtZW50YXRpb25zIGFyZSByZWdpc3RlcmVkIGFuZCBsb2FkZWQgCisgKiB1c2luZyB0aGUge0BsaW5rIGphdmEuc2VjdXJpdHkuUHJvdmlkZXJ9IG1lY2hhbmlzbS4gIEVhY2ggCisgKiA8Y29kZT5UcmFuc2Zvcm1TZXJ2aWNlPC9jb2RlPiBzZXJ2aWNlIHByb3ZpZGVyIGltcGxlbWVudGF0aW9uIHNob3VsZCBpbmNsdWRlIAorICogYSA8Y29kZT5NZWNoYW5pc21UeXBlPC9jb2RlPiBzZXJ2aWNlIGF0dHJpYnV0ZSB0aGF0IGlkZW50aWZpZXMgdGhlIFhNTCAKKyAqIG1lY2hhbmlzbSB0eXBlIHRoYXQgaXQgc3VwcG9ydHMuIElmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwKKyAqICJET00iIGlzIGFzc3VtZWQuIEZvciBleGFtcGxlLCBhIHNlcnZpY2UgcHJvdmlkZXIgdGhhdCBzdXBwb3J0cyB0aGUKKyAqIFhQYXRoIEZpbHRlciAyIFRyYW5zZm9ybSBhbmQgRE9NIG1lY2hhbmlzbSB3b3VsZCBiZSBzcGVjaWZpZWQgaW4gdGhlIAorICogPGNvZGU+UHJvdmlkZXI8L2NvZGU+IHN1YmNsYXNzIGFzOgorICogPHByZT4KKyAqICAgICBwdXQoIlRyYW5zZm9ybVNlcnZpY2UuIiArIFRyYW5zZm9ybS5YUEFUSDIsCisgKiAgICAgICAgICJvcmcuZXhhbXBsZS5YUGF0aDJUcmFuc2Zvcm1TZXJ2aWNlIik7CisgKiAgICAgcHV0KCJUcmFuc2Zvcm1TZXJ2aWNlLiIgKyBUcmFuc2Zvcm0uWFBBVEgyICsgIiBNZWNoYW5pc21UeXBlIiwgIkRPTSIpOworICogPC9wcmU+CisgKiA8Y29kZT5UcmFuc2Zvcm1TZXJ2aWNlPC9jb2RlPiBpbXBsZW1lbnRhdGlvbnMgdGhhdCBzdXBwb3J0IHRoZSBET00KKyAqIG1lY2hhbmlzbSB0eXBlIG11c3QgYWJpZGUgYnkgdGhlIERPTSBpbnRlcm9wZXJhYmlsaXR5IHJlcXVpcmVtZW50cyBkZWZpbmVkIAorICogaW4gdGhlIAorICogPGEgaHJlZj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sI0RPTSBNZWNoYW5pc20gUmVxdWlyZW1lbnRzIj5ET00KKyAqIE1lY2hhbmlzbSBSZXF1aXJlbWVudHM8L2E+IHNlY3Rpb24gb2YgdGhlIEFQSSBvdmVydmlldy4gU2VlIHRoZQorICogPGEgaHJlZj0iLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sI1NlcnZpY2UgUHJvdmlkZXIiPlNlcnZpY2UKKyAqIFByb3ZpZGVyczwvYT4gc2VjdGlvbiBvZiB0aGUgQVBJIG92ZXJ2aWV3IGZvciBhIGxpc3Qgb2Ygc3RhbmRhcmQgbWVjaGFuaXNtCisgKiB0eXBlcy4KKyAqIDxwPgorICogT25jZSBhIDxjb2RlPlRyYW5zZm9ybVNlcnZpY2U8L2NvZGU+IGhhcyBiZWVuIGNyZWF0ZWQsIGl0IGNhbiBiZSB1c2VkCisgKiB0byBwcm9jZXNzIDxjb2RlPlRyYW5zZm9ybTwvY29kZT4gb3IgPGNvZGU+Q2Fub25pY2FsaXphdGlvbk1ldGhvZDwvY29kZT4KKyAqIG9iamVjdHMuIElmIHRoZSA8Y29kZT5UcmFuc2Zvcm08L2NvZGU+IG9yIDxjb2RlPkNhbm9uaWNhbGl6YXRpb25NZXRob2Q8L2NvZGU+CisgKiBleGlzdHMgaW4gWE1MIGZvcm0gKGZvciBleGFtcGxlLCB3aGVuIHZhbGlkYXRpbmcgYW4gZXhpc3RpbmcgCisgKiA8Y29kZT5YTUxTaWduYXR1cmU8L2NvZGU+KSwgdGhlIHtAbGluayAjaW5pdChYTUxTdHJ1Y3R1cmUsIFhNTENyeXB0b0NvbnRleHQpfQorICogbWV0aG9kIG11c3QgYmUgZmlyc3QgY2FsbGVkIHRvIGluaXRpYWxpemUgdGhlIHRyYW5zZm9ybSBhbmQgcHJvdmlkZSBkb2N1bWVudAorICogY29udGV4dCAoZXZlbiBpZiB0aGVyZSBhcmUgbm8gcGFyYW1ldGVycykuIEFsdGVybmF0aXZlbHksIGlmIHRoZSAKKyAqIDxjb2RlPlRyYW5zZm9ybTwvY29kZT4gb3IgPGNvZGU+Q2Fub25pY2FsaXphdGlvbk1ldGhvZDwvY29kZT4gaXMgYmVpbmcKKyAqIGNyZWF0ZWQgZnJvbSBzY3JhdGNoLCB0aGUge0BsaW5rICNpbml0KFRyYW5zZm9ybVBhcmFtZXRlclNwZWMpfSBtZXRob2QKKyAqIGlzIGNhbGxlZCB0byBpbml0aWFsaXplIHRoZSB0cmFuc2Zvcm0gd2l0aCBwYXJhbWV0ZXJzIGFuZCB0aGUgCisgKiB7QGxpbmsgI21hcnNoYWxQYXJhbXMgbWFyc2hhbFBhcmFtc30gbWV0aG9kIGlzIGNhbGxlZCB0byBtYXJzaGFsIHRoZSAKKyAqIHBhcmFtZXRlcnMgdG8gWE1MIGFuZCBwcm92aWRlIHRoZSB0cmFuc2Zvcm0gd2l0aCBkb2N1bWVudCBjb250ZXh0LiBGaW5hbGx5LCAKKyAqIHRoZSB7QGxpbmsgI3RyYW5zZm9ybSB0cmFuc2Zvcm19IG1ldGhvZCBpcyBjYWxsZWQgdG8gcGVyZm9ybSB0aGUgCisgKiB0cmFuc2Zvcm1hdGlvbi4KKyAqIDxwPgorICogPGI+Q29uY3VycmVudCBBY2Nlc3M8L2I+CisgKiA8cD5UaGUgc3RhdGljIG1ldGhvZHMgb2YgdGhpcyBjbGFzcyBhcmUgZ3VhcmFudGVlZCB0byBiZSB0aHJlYWQtc2FmZS4KKyAqIE11bHRpcGxlIHRocmVhZHMgbWF5IGNvbmN1cnJlbnRseSBpbnZva2UgdGhlIHN0YXRpYyBtZXRob2RzIGRlZmluZWQgaW4gdGhpcworICogY2xhc3Mgd2l0aCBubyBpbGwgZWZmZWN0cy4KKyAqCisgKiA8cD5Ib3dldmVyLCB0aGlzIGlzIG5vdCB0cnVlIGZvciB0aGUgbm9uLXN0YXRpYyBtZXRob2RzIGRlZmluZWQgYnkgdGhpcworICogY2xhc3MuIFVubGVzcyBvdGhlcndpc2UgZG9jdW1lbnRlZCBieSBhIHNwZWNpZmljIHByb3ZpZGVyLCB0aHJlYWRzIHRoYXQKKyAqIG5lZWQgdG8gYWNjZXNzIGEgc2luZ2xlIDxjb2RlPlRyYW5zZm9ybVNlcnZpY2U8L2NvZGU+IGluc3RhbmNlCisgKiBjb25jdXJyZW50bHkgc2hvdWxkIHN5bmNocm9uaXplIGFtb25nc3QgdGhlbXNlbHZlcyBhbmQgcHJvdmlkZSB0aGUKKyAqIG5lY2Vzc2FyeSBsb2NraW5nLiBNdWx0aXBsZSB0aHJlYWRzIGVhY2ggbWFuaXB1bGF0aW5nIGEgZGlmZmVyZW50CisgKiA8Y29kZT5UcmFuc2Zvcm1TZXJ2aWNlPC9jb2RlPiBpbnN0YW5jZSBuZWVkIG5vdCBzeW5jaHJvbml6ZS4KKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKiBAYXV0aG9yIEpTUiAxMDUgRXhwZXJ0IEdyb3VwCisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBUcmFuc2Zvcm1TZXJ2aWNlIGltcGxlbWVudHMgVHJhbnNmb3JtIHsKKworICAgIHByaXZhdGUgU3RyaW5nIGFsZ29yaXRobTsKKyAgICBwcml2YXRlIFN0cmluZyBtZWNoYW5pc207CisgICAgcHJpdmF0ZSBQcm92aWRlciBwcm92aWRlcjsKKworICAgIC8qKgorICAgICAqIERlZmF1bHQgY29uc3RydWN0b3IsIGZvciBpbnZvY2F0aW9uIGJ5IHN1YmNsYXNzZXMuCisgICAgICovCisgICAgcHJvdGVjdGVkIFRyYW5zZm9ybVNlcnZpY2UoKSB7fQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIDxjb2RlPlRyYW5zZm9ybVNlcnZpY2U8L2NvZGU+IHRoYXQgc3VwcG9ydHMgdGhlIHNwZWNpZmllZCAKKyAgICAgKiBhbGdvcml0aG0gVVJJIChleDoge0BsaW5rIFRyYW5zZm9ybSNYUEFUSDJ9KSBhbmQgbWVjaGFuaXNtIHR5cGUgCisgICAgICogKGV4OiBET00pLgorICAgICAqCisgICAgICogPHA+VGhpcyBtZXRob2QgdXNlcyB0aGUgc3RhbmRhcmQgSkNBIHByb3ZpZGVyIGxvb2t1cCBtZWNoYW5pc20gdG8KKyAgICAgKiBsb2NhdGUgYW5kIGluc3RhbnRpYXRlIGEgPGNvZGU+VHJhbnNmb3JtU2VydmljZTwvY29kZT4gaW1wbGVtZW50YXRpb24KKyAgICAgKiBvZiB0aGUgZGVzaXJlZCBhbGdvcml0aG0gYW5kIDxjb2RlPk1lY2hhbmlzbVR5cGU8L2NvZGU+IHNlcnZpY2UgCisgICAgICogYXR0cmlidXRlLiBJdCB0cmF2ZXJzZXMgdGhlIGxpc3Qgb2YgcmVnaXN0ZXJlZCBzZWN1cml0eSAKKyAgICAgKiA8Y29kZT5Qcm92aWRlcjwvY29kZT5zLCBzdGFydGluZyB3aXRoIHRoZSBtb3N0IHByZWZlcnJlZCAKKyAgICAgKiA8Y29kZT5Qcm92aWRlcjwvY29kZT4uIEEgbmV3IDxjb2RlPlRyYW5zZm9ybVNlcnZpY2U8L2NvZGU+IG9iamVjdAorICAgICAqIGZyb20gdGhlIGZpcnN0IDxjb2RlPlByb3ZpZGVyPC9jb2RlPiB0aGF0IHN1cHBvcnRzIHRoZSBzcGVjaWZpZWQgCisgICAgICogYWxnb3JpdGhtIGFuZCBtZWNoYW5pc20gdHlwZSBpcyByZXR1cm5lZC4gCisgICAgICogCisgICAgICogPHA+IE5vdGUgdGhhdCB0aGUgbGlzdCBvZiByZWdpc3RlcmVkIHByb3ZpZGVycyBtYXkgYmUgcmV0cmlldmVkIHZpYSAKKyAgICAgKiB0aGUge0BsaW5rIFNlY3VyaXR5I2dldFByb3ZpZGVycygpIFNlY3VyaXR5LmdldFByb3ZpZGVycygpfSBtZXRob2QuIAorICAgICAqCisgICAgICogQHBhcmFtIGFsZ29yaXRobSB0aGUgVVJJIG9mIHRoZSBhbGdvcml0aG0KKyAgICAgKiBAcGFyYW0gbWVjaGFuaXNtVHlwZSB0aGUgdHlwZSBvZiB0aGUgWE1MIHByb2Nlc3NpbmcgbWVjaGFuaXNtIGFuZCAKKyAgICAgKiAgIHJlcHJlc2VudGF0aW9uCisgICAgICogQHJldHVybiBhIG5ldyA8Y29kZT5UcmFuc2Zvcm1TZXJ2aWNlPC9jb2RlPgorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+YWxnb3JpdGhtPC9jb2RlPiBvciAKKyAgICAgKiAgIDxjb2RlPm1lY2hhbmlzbVR5cGU8L2NvZGU+IGlzICA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEB0aHJvd3MgTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIGlmIG5vIDxjb2RlPlByb3ZpZGVyPC9jb2RlPiBzdXBwb3J0cyBhCisgICAgICogICA8Y29kZT5UcmFuc2Zvcm1TZXJ2aWNlPC9jb2RlPiBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIHNwZWNpZmllZCAKKyAgICAgKiAgIGFsZ29yaXRobSBhbmQgbWVjaGFuaXNtIHR5cGUKKyAgICAgKiBAc2VlIFByb3ZpZGVyCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBUcmFuc2Zvcm1TZXJ2aWNlIGdldEluc3RhbmNlCisJKFN0cmluZyBhbGdvcml0aG0sIFN0cmluZyBtZWNoYW5pc21UeXBlKSAKKwl0aHJvd3MgTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIHsKKwlpZiAobWVjaGFuaXNtVHlwZSA9PSBudWxsIHx8IGFsZ29yaXRobSA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigpOworCX0KKwlyZXR1cm4gZmluZEluc3RhbmNlKGFsZ29yaXRobSwgbWVjaGFuaXNtVHlwZSwgbnVsbCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIDxjb2RlPlRyYW5zZm9ybVNlcnZpY2U8L2NvZGU+IHRoYXQgc3VwcG9ydHMgdGhlIHNwZWNpZmllZCAKKyAgICAgKiBhbGdvcml0aG0gVVJJIChleDoge0BsaW5rIFRyYW5zZm9ybSNYUEFUSDJ9KSBhbmQgbWVjaGFuaXNtIHR5cGUgCisgICAgICogKGV4OiBET00pIGFzIHN1cHBsaWVkIGJ5IHRoZSBzcGVjaWZpZWQgcHJvdmlkZXIuIE5vdGUgdGhhdCB0aGUgc3BlY2lmaWVkIAorICAgICAqIDxjb2RlPlByb3ZpZGVyPC9jb2RlPiBvYmplY3QgZG9lcyBub3QgaGF2ZSB0byBiZSByZWdpc3RlcmVkIGluIHRoZSAKKyAgICAgKiBwcm92aWRlciBsaXN0LiAKKyAgICAgKgorICAgICAqIEBwYXJhbSBhbGdvcml0aG0gdGhlIFVSSSBvZiB0aGUgYWxnb3JpdGhtCisgICAgICogQHBhcmFtIG1lY2hhbmlzbVR5cGUgdGhlIHR5cGUgb2YgdGhlIFhNTCBwcm9jZXNzaW5nIG1lY2hhbmlzbSBhbmQgCisgICAgICogICByZXByZXNlbnRhdGlvbgorICAgICAqIEBwYXJhbSBwcm92aWRlciB0aGUgPGNvZGU+UHJvdmlkZXI8L2NvZGU+IG9iamVjdAorICAgICAqIEByZXR1cm4gYSBuZXcgPGNvZGU+VHJhbnNmb3JtU2VydmljZTwvY29kZT4KKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPnByb3ZpZGVyPC9jb2RlPiwgCisgICAgICogICA8Y29kZT5hbGdvcml0aG08L2NvZGU+LCBvciA8Y29kZT5tZWNoYW5pc21UeXBlPC9jb2RlPiBpcyAKKyAgICAgKiAgIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogQHRocm93cyBOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24gaWYgYSA8Y29kZT5UcmFuc2Zvcm1TZXJ2aWNlPC9jb2RlPiAKKyAgICAgKiAgIGltcGxlbWVudGF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIGFsZ29yaXRobSBhbmQgbWVjaGFuaXNtIHR5cGUgaXMgbm90IAorICAgICAqICAgYXZhaWxhYmxlIGZyb20gdGhlIHNwZWNpZmllZCA8Y29kZT5Qcm92aWRlcjwvY29kZT4gb2JqZWN0CisgICAgICogQHNlZSBQcm92aWRlcgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgVHJhbnNmb3JtU2VydmljZSBnZXRJbnN0YW5jZQorCShTdHJpbmcgYWxnb3JpdGhtLCBTdHJpbmcgbWVjaGFuaXNtVHlwZSwgUHJvdmlkZXIgcHJvdmlkZXIpIAorCXRocm93cyBOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24geworCWlmIChtZWNoYW5pc21UeXBlID09IG51bGwgfHwgYWxnb3JpdGhtID09IG51bGwgfHwgcHJvdmlkZXIgPT0gbnVsbCkgeworCSAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oKTsKKwl9CisJcmV0dXJuIGZpbmRJbnN0YW5jZShhbGdvcml0aG0sIG1lY2hhbmlzbVR5cGUsIHByb3ZpZGVyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgPGNvZGU+VHJhbnNmb3JtU2VydmljZTwvY29kZT4gdGhhdCBzdXBwb3J0cyB0aGUgc3BlY2lmaWVkIAorICAgICAqIGFsZ29yaXRobSBVUkkgKGV4OiB7QGxpbmsgVHJhbnNmb3JtI1hQQVRIMn0pIGFuZCBtZWNoYW5pc20gdHlwZSAKKyAgICAgKiAoZXg6IERPTSkgYXMgc3VwcGxpZWQgYnkgdGhlIHNwZWNpZmllZCBwcm92aWRlci4gVGhlIHNwZWNpZmllZCBwcm92aWRlciAKKyAgICAgKiBtdXN0IGJlIHJlZ2lzdGVyZWQgaW4gdGhlIHNlY3VyaXR5IHByb3ZpZGVyIGxpc3QuIAorICAgICAqCisgICAgICogPHA+Tm90ZSB0aGF0IHRoZSBsaXN0IG9mIHJlZ2lzdGVyZWQgcHJvdmlkZXJzIG1heSBiZSByZXRyaWV2ZWQgdmlhIAorICAgICAqIHRoZSB7QGxpbmsgU2VjdXJpdHkjZ2V0UHJvdmlkZXJzKCkgU2VjdXJpdHkuZ2V0UHJvdmlkZXJzKCl9IG1ldGhvZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBhbGdvcml0aG0gdGhlIFVSSSBvZiB0aGUgYWxnb3JpdGhtCisgICAgICogQHBhcmFtIG1lY2hhbmlzbVR5cGUgdGhlIHR5cGUgb2YgdGhlIFhNTCBwcm9jZXNzaW5nIG1lY2hhbmlzbSBhbmQgCisgICAgICogICByZXByZXNlbnRhdGlvbgorICAgICAqIEBwYXJhbSBwcm92aWRlciB0aGUgc3RyaW5nIG5hbWUgb2YgdGhlIHByb3ZpZGVyCisgICAgICogQHJldHVybiBhIG5ldyA8Y29kZT5UcmFuc2Zvcm1TZXJ2aWNlPC9jb2RlPgorICAgICAqIEB0aHJvd3MgTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24gaWYgdGhlIHNwZWNpZmllZCBwcm92aWRlciBpcyBub3QgCisgICAgICogICByZWdpc3RlcmVkIGluIHRoZSBzZWN1cml0eSBwcm92aWRlciBsaXN0CisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5wcm92aWRlcjwvY29kZT4sIAorICAgICAqICAgPGNvZGU+bWVjaGFuaXNtVHlwZTwvY29kZT4sIG9yIDxjb2RlPmFsZ29yaXRobTwvY29kZT4gaXMgCisgICAgICogICA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEB0aHJvd3MgTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIGlmIGEgPGNvZGU+VHJhbnNmb3JtU2VydmljZTwvY29kZT4gCisgICAgICogICBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBhbGdvcml0aG0gYW5kIG1lY2hhbmlzbSB0eXBlIGlzIG5vdCAKKyAgICAgKiAgIGF2YWlsYWJsZSBmcm9tIHRoZSBzcGVjaWZpZWQgcHJvdmlkZXIKKyAgICAgKiBAc2VlIFByb3ZpZGVyCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBUcmFuc2Zvcm1TZXJ2aWNlIGdldEluc3RhbmNlCisJKFN0cmluZyBhbGdvcml0aG0sIFN0cmluZyBtZWNoYW5pc21UeXBlLCBTdHJpbmcgcHJvdmlkZXIpIAorCXRocm93cyBOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24sIE5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIHsKKwlpZiAobWVjaGFuaXNtVHlwZSA9PSBudWxsIHx8IGFsZ29yaXRobSA9PSBudWxsIHx8IHByb3ZpZGVyID09IG51bGwpIHsKKwkgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCk7CisJfQorCVByb3ZpZGVyIHByb3YgPSBTZWN1cml0eS5nZXRQcm92aWRlcihwcm92aWRlcik7CisJaWYgKHByb3YgPT0gbnVsbCkgeworCSAgICB0aHJvdyBuZXcgTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24oImNhbm5vdCBmaW5kIHByb3ZpZGVyIG5hbWVkICIKKwkJKyBwcm92aWRlcik7CisJfQorCXJldHVybiBmaW5kSW5zdGFuY2UoYWxnb3JpdGhtLCBtZWNoYW5pc21UeXBlLCBwcm92KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBUcmFuc2Zvcm1TZXJ2aWNlIGZpbmRJbnN0YW5jZShTdHJpbmcgYWxnb3JpdGhtLCAKKwlTdHJpbmcgbWVjaGFuaXNtVHlwZSwgUHJvdmlkZXIgcHJvdmlkZXIpIAorCXRocm93cyBOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24geworCisJT2JqZWN0W10gb2JqcyA9IChPYmplY3RbXSkgWE1MRFNpZ1NlY3VyaXR5LmdldEltcGwKKwkgICAgKGFsZ29yaXRobSwgbmV3IE1lY2hhbmlzbU1hcEVudHJ5KGFsZ29yaXRobSwgbWVjaGFuaXNtVHlwZSksCisJICAgICJUcmFuc2Zvcm1TZXJ2aWNlIiwgcHJvdmlkZXIpOworCisgICAgICAgIFRyYW5zZm9ybVNlcnZpY2Ugc3BpID0gKFRyYW5zZm9ybVNlcnZpY2UpIG9ianNbMF07CisgICAgICAgIHNwaS5tZWNoYW5pc20gPSBtZWNoYW5pc21UeXBlOworICAgICAgICBzcGkuYWxnb3JpdGhtID0gYWxnb3JpdGhtOworICAgICAgICBzcGkucHJvdmlkZXIgPSAoUHJvdmlkZXIpIG9ianNbMV07CisgICAgICAgIHJldHVybiBzcGk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgTWVjaGFuaXNtTWFwRW50cnkgaW1wbGVtZW50cyBNYXAuRW50cnkgeworCXByaXZhdGUgZmluYWwgU3RyaW5nIG1lY2hhbmlzbTsKKwlwcml2YXRlIGZpbmFsIFN0cmluZyBrZXk7CisJTWVjaGFuaXNtTWFwRW50cnkoU3RyaW5nIGFsZ29yaXRobSwgU3RyaW5nIG1lY2hhbmlzbSkgeworCSAgICB0aGlzLm1lY2hhbmlzbSA9IG1lY2hhbmlzbTsKKwkgICAgdGhpcy5rZXkgPSAiVHJhbnNmb3JtU2VydmljZS4iICsgYWxnb3JpdGhtICsgIiBNZWNoYW5pc21UeXBlIjsKKwl9CisJcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvKSB7CisJICAgIGlmICghKG8gaW5zdGFuY2VvZiBNYXAuRW50cnkpKSB7CisJCXJldHVybiBmYWxzZTsKKwkgICAgfQorCSAgICBNYXAuRW50cnkgZSA9IChNYXAuRW50cnkpIG87CisJICAgIHJldHVybiAoZ2V0S2V5KCk9PW51bGwgPyAKKwkJICAgIGUuZ2V0S2V5KCk9PW51bGwgOiBnZXRLZXkoKS5lcXVhbHMoZS5nZXRLZXkoKSkpICYmCisgICAgIAkJICAgKGdldFZhbHVlKCk9PW51bGwgPworICAgICAgCQkgICAgZS5nZXRWYWx1ZSgpPT1udWxsIDogZ2V0VmFsdWUoKS5lcXVhbHMoZS5nZXRWYWx1ZSgpKSk7CisJfQorCXB1YmxpYyBPYmplY3QgZ2V0S2V5KCkgeworCSAgICByZXR1cm4ga2V5OworCX0KKwlwdWJsaWMgT2JqZWN0IGdldFZhbHVlKCkgeworCSAgICByZXR1cm4gbWVjaGFuaXNtOworCX0KKwlwdWJsaWMgT2JqZWN0IHNldFZhbHVlKE9iamVjdCB2YWx1ZSkgeworCSAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsKKwl9CisJcHVibGljIGludCBoYXNoQ29kZSgpIHsKKwkgICAgcmV0dXJuIChnZXRLZXkoKT09bnVsbCA/IDAgOiBnZXRLZXkoKS5oYXNoQ29kZSgpKSBeCisgICAgIAkJICAgKGdldFZhbHVlKCk9PW51bGwgPyAwIDogZ2V0VmFsdWUoKS5oYXNoQ29kZSgpKTsKKwl9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbWVjaGFuaXNtIHR5cGUgc3VwcG9ydGVkIGJ5IHRoaXMgPGNvZGU+VHJhbnNmb3JtU2VydmljZTwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBtZWNoYW5pc20gdHlwZQorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0TWVjaGFuaXNtVHlwZSgpIHsKKwlyZXR1cm4gbWVjaGFuaXNtOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIFVSSSBvZiB0aGUgYWxnb3JpdGhtIHN1cHBvcnRlZCBieSB0aGlzCisgICAgICogPGNvZGU+VHJhbnNmb3JtU2VydmljZTwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBhbGdvcml0aG0gVVJJCisgICAgICovCisgICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRBbGdvcml0aG0oKSB7CisJcmV0dXJuIGFsZ29yaXRobTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBwcm92aWRlciBvZiB0aGlzIDxjb2RlPlRyYW5zZm9ybVNlcnZpY2U8L2NvZGU+LgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgcHJvdmlkZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgUHJvdmlkZXIgZ2V0UHJvdmlkZXIoKSB7CisJcmV0dXJuIHByb3ZpZGVyOworICAgIH0KKworICAgIC8qKgorICAgICAqIEluaXRpYWxpemVzIHRoaXMgPGNvZGU+VHJhbnNmb3JtU2VydmljZTwvY29kZT4gd2l0aCB0aGUgc3BlY2lmaWVkIAorICAgICAqIHBhcmFtZXRlcnMuCisgICAgICoKKyAgICAgKiA8cD5JZiB0aGUgcGFyYW1ldGVycyBleGlzdCBpbiBYTUwgZm9ybSwgdGhlIAorICAgICAqIHtAbGluayAjaW5pdChYTUxTdHJ1Y3R1cmUsIFhNTENyeXB0b0NvbnRleHQpfSBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgdG8gCisgICAgICogaW5pdGlhbGl6ZSB0aGUgPGNvZGU+VHJhbnNmb3JtU2VydmljZTwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcGFyYW0gcGFyYW1zIHRoZSBhbGdvcml0aG0gcGFyYW1ldGVycyAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+IGlmIAorICAgICAqICAgbm90IHJlcXVpcmVkIG9yIG9wdGlvbmFsKQorICAgICAqIEB0aHJvd3MgSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiBpZiB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMgCisgICAgICogICBhcmUgaW52YWxpZCBmb3IgdGhpcyBhbGdvcml0aG0KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBpbml0KFRyYW5zZm9ybVBhcmFtZXRlclNwZWMgcGFyYW1zKQorCXRocm93cyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uOworCisgICAgLyoqCisgICAgICogTWFyc2hhbHMgdGhlIGFsZ29yaXRobS1zcGVjaWZpYyBwYXJhbWV0ZXJzLiBJZiB0aGVyZSBhcmUgbm8gcGFyYW1ldGVycworICAgICAqIHRvIGJlIG1hcnNoYWxsZWQsIHRoaXMgbWV0aG9kIHJldHVybnMgd2l0aG91dCB0aHJvd2luZyBhbiBleGNlcHRpb24uCisgICAgICoKKyAgICAgKiBAcGFyYW0gcGFyZW50IGEgbWVjaGFuaXNtLXNwZWNpZmljIHN0cnVjdHVyZSBjb250YWluaW5nIHRoZSBwYXJlbnQKKyAgICAgKiAgICBub2RlIHRoYXQgdGhlIG1hcnNoYWxsZWQgcGFyYW1ldGVycyBzaG91bGQgYmUgYXBwZW5kZWQgdG8KKyAgICAgKiBAcGFyYW0gY29udGV4dCB0aGUgPGNvZGU+WE1MQ3J5cHRvQ29udGV4dDwvY29kZT4gY29udGFpbmluZworICAgICAqICAgIGFkZGl0aW9uYWwgY29udGV4dCAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+IGlmIG5vdCBhcHBsaWNhYmxlKQorICAgICAqIEB0aHJvd3MgQ2xhc3NDYXN0RXhjZXB0aW9uIGlmIHRoZSB0eXBlIG9mIDxjb2RlPnBhcmVudDwvY29kZT4gb3IKKyAgICAgKiAgICA8Y29kZT5jb250ZXh0PC9jb2RlPiBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoaXMKKyAgICAgKiAgICA8Y29kZT5UcmFuc2Zvcm1TZXJ2aWNlPC9jb2RlPgorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+cGFyZW50PC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiBpZiB0aGUgcGFyYW1ldGVycyBjYW5ub3QgYmUgbWFyc2hhbGxlZAorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIG1hcnNoYWxQYXJhbXMKKwkoWE1MU3RydWN0dXJlIHBhcmVudCwgWE1MQ3J5cHRvQ29udGV4dCBjb250ZXh0KQorCXRocm93cyBNYXJzaGFsRXhjZXB0aW9uOworCisgICAgLyoqCisgICAgICogSW5pdGlhbGl6ZXMgdGhpcyA8Y29kZT5UcmFuc2Zvcm1TZXJ2aWNlPC9jb2RlPiB3aXRoIHRoZSBzcGVjaWZpZWQgCisgICAgICogcGFyYW1ldGVycyBhbmQgZG9jdW1lbnQgY29udGV4dC4gCisgICAgICoKKyAgICAgKiBAcGFyYW0gcGFyZW50IGEgbWVjaGFuaXNtLXNwZWNpZmljIHN0cnVjdHVyZSBjb250YWluaW5nIHRoZSBwYXJlbnQKKyAgICAgKiAgICBzdHJ1Y3R1cmUKKyAgICAgKiBAcGFyYW0gY29udGV4dCB0aGUgPGNvZGU+WE1MQ3J5cHRvQ29udGV4dDwvY29kZT4gY29udGFpbmluZworICAgICAqICAgIGFkZGl0aW9uYWwgY29udGV4dCAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+IGlmIG5vdCBhcHBsaWNhYmxlKQorICAgICAqIEB0aHJvd3MgQ2xhc3NDYXN0RXhjZXB0aW9uIGlmIHRoZSB0eXBlIG9mIDxjb2RlPnBhcmVudDwvY29kZT4gb3IKKyAgICAgKiAgICA8Y29kZT5jb250ZXh0PC9jb2RlPiBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoaXMKKyAgICAgKiAgICA8Y29kZT5UcmFuc2Zvcm1TZXJ2aWNlPC9jb2RlPgorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+cGFyZW50PC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEB0aHJvd3MgSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiBpZiB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMgCisgICAgICogICBhcmUgaW52YWxpZCBmb3IgdGhpcyBhbGdvcml0aG0KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBpbml0KFhNTFN0cnVjdHVyZSBwYXJlbnQsIFhNTENyeXB0b0NvbnRleHQgY29udGV4dCkKKyAJdGhyb3dzIEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb247Cit9CmRpZmYgLS1naXQgYS9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL1hNTERTaWdTZWN1cml0eS5qYXZhIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9YTUxEU2lnU2VjdXJpdHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2ZkMDU1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9YTUxEU2lnU2VjdXJpdHkuamF2YQpAQCAtMCwwICsxLDI3NiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAzIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKi8KKy8qCisgKiBQb3J0aW9ucyBjb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by5kc2lnOworCitpbXBvcnQgamF2YS5zZWN1cml0eS5Qcm92aWRlcjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlNlY3VyaXR5OworaW1wb3J0IGphdmEudXRpbC4qOworaW1wb3J0IGphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uTm9TdWNoTWVjaGFuaXNtRXhjZXB0aW9uOworCisvKioKKyAqIEBhdXRob3IgSm95Y2UgTGV1bmcKKyAqLworCitmaW5hbCBjbGFzcyBYTUxEU2lnU2VjdXJpdHkgeworCisgICAgLy8gQW4gZWxlbWVudCBpbiB0aGUgY2FjaGUKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBQcm92aWRlclByb3BlcnR5IHsKKwlTdHJpbmcgY2xhc3NOYW1lOworCVByb3ZpZGVyIHByb3ZpZGVyOworICAgIH0KKworICAgIC8qKgorICAgICAqIERvbid0IGxldCBhbnlvbmUgaW5zdGFudGlhdGUgdGhpcy4gCisgICAgICovCisgICAgcHJpdmF0ZSBYTUxEU2lnU2VjdXJpdHkoKSB7IH0gICAgICAgICAgICAgICAgICAgIAorCisgICAgLyoKKyAgICAgKiBMb29rdXAgdGhlIG1lY2hhbmlzbSB0eXBlIGluIG91ciBsaXN0IG9mIHByb3ZpZGVycy4gUHJvY2VzcworICAgICAqIGVhY2ggcHJvdmlkZXIgaW4gcHJpb3JpdHkgb3JkZXIgb25lIGF0IGEgdGltZSBsb29raW5nIGZvcgorICAgICAqIGVpdGhlciB0aGUgZGlyZWN0IGVuZ2luZSBwcm9wZXJ0eSBvciBhIG1hdGNoaW5nIGFsaWFzLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIFByb3ZpZGVyUHJvcGVydHkgZ2V0RW5naW5lQ2xhc3NOYW1lKFN0cmluZyBhbGcsIAorCU1hcC5FbnRyeSBhdHRyLCBTdHJpbmcgZW5naW5lVHlwZSwgU3RyaW5nIGtleSwgYm9vbGVhbiBtZWNoKSAKKwl0aHJvd3MgTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uCisgICAgeworCS8vIGdldCBhbGwgY3VycmVudGx5IGluc3RhbGxlZCBwcm92aWRlcnMKKwlQcm92aWRlcltdIHByb3ZzID0gU2VjdXJpdHkuZ2V0UHJvdmlkZXJzKCk7CisKKyAgICAgICAgLy8gZ2V0IHRoZSBpbXBsZW1lbnRhdGlvbiBjbGFzcyBmcm9tIHRoZSBmaXJzdCBwcm92aWRlcgorICAgICAgICAvLyB0aGF0IHN1cHBsaWVzIGFuIGltcGxlbWVudGF0aW9uIHRoYXQgd2UgY2FuIGxvYWQKKyAgICAgICAgYm9vbGVhbiBmb3VuZCA9IGZhbHNlOworICAgICAgICBQcm92aWRlclByb3BlcnR5IGVudHJ5ID0gbnVsbDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IChpIDwgcHJvdnMubGVuZ3RoKSAmJiAoIWZvdW5kKTsgaSsrKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGVudHJ5ID0gZ2V0RW5naW5lQ2xhc3NOYW1lCisJCSAgICAoYWxnLCBhdHRyLCBlbmdpbmVUeXBlLCBrZXksIHByb3ZzW2ldLCBtZWNoKTsKKyAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCSAgICAgICAgLy8gZG8gbm90aGluZywgY2hlY2sgdGhlIG5leHQgcHJvdmlkZXIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCWlmICghZm91bmQpIHsKKwkgICAgaWYgKG1lY2gpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm9TdWNoTWVjaGFuaXNtRXhjZXB0aW9uKCJNZWNoYW5pc20gdHlwZSAiICsgYWxnCisJCQkJCSAgICsgIiBub3QgYXZhaWxhYmxlIik7CisJICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbigiQWxnb3JpdGhtIHR5cGUgIiArIGFsZworCQkJCQkgICArICIgbm90IGF2YWlsYWJsZSIpOworCSAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGVudHJ5OworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoZSBwYXJhbWV0ZXIgcHJvdmlkZXIgY2Fubm90IGJlIG51bGwuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgUHJvdmlkZXJQcm9wZXJ0eSBnZXRFbmdpbmVDbGFzc05hbWUoU3RyaW5nIGFsZywKKwlNYXAuRW50cnkgYXR0ciwgU3RyaW5nIGVuZ2luZVR5cGUsIFN0cmluZyBrZXksIFByb3ZpZGVyIHByb3ZpZGVyLCAKKwlib29sZWFuIG1lY2gpIHRocm93cyBOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24KKyAgICB7CisJU3RyaW5nIGNsYXNzTmFtZSA9IGdldFByb3ZpZGVyUHJvcGVydHkoa2V5LCBhdHRyLCBwcm92aWRlcik7CisJaWYgKGNsYXNzTmFtZSA9PSBudWxsKSB7CisgICAgICAgICAgICAvLyB0cnkgYWxnIGFzIGFsaWFzIG5hbWUKKwkgICAgU3RyaW5nIHN0ZE5hbWUgPSBnZXRTdGFuZGFyZE5hbWUoYWxnLCBlbmdpbmVUeXBlLCBwcm92aWRlcik7CisJICAgIGlmIChzdGROYW1lICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBrZXkgPSBlbmdpbmVUeXBlICsgIi4iICsgc3RkTmFtZTsKKwkgICAgfQorCSAgICBpZiAoKHN0ZE5hbWUgPT0gbnVsbCkKKwkgICAgICAgIHx8IChjbGFzc05hbWUgPSBnZXRQcm92aWRlclByb3BlcnR5KGtleSwgYXR0ciwgcHJvdmlkZXIpKSA9PSBudWxsKSB7CisJCWlmIChtZWNoKSB7CisJICAgICAgICAgICAgdGhyb3cgbmV3IE5vU3VjaE1lY2hhbmlzbUV4Y2VwdGlvbgorCQkJKCJubyBzdWNoIG1lY2hhbmlzbSB0eXBlOiAiICsgYWxnICsgIiBmb3IgcHJvdmlkZXIgIiArCisJCQkgcHJvdmlkZXIuZ2V0TmFtZSgpKTsKKwkJfSBlbHNlIHsKKwkgICAgICAgICAgICB0aHJvdyBuZXcgTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uCisJCQkoIm5vIHN1Y2ggYWxnb3JpdGhtOiAiICsgYWxnICsgIiBmb3IgcHJvdmlkZXIgIiArCisJCSAgICAgICAgIHByb3ZpZGVyLmdldE5hbWUoKSk7CisJCX0KKwkgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBQcm92aWRlclByb3BlcnR5IGVudHJ5ID0gbmV3IFByb3ZpZGVyUHJvcGVydHkoKTsKKwllbnRyeS5jbGFzc05hbWUgPSBjbGFzc05hbWU7CisJZW50cnkucHJvdmlkZXIgPSBwcm92aWRlcjsKKwlyZXR1cm4gZW50cnk7CisgICAgfSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gY2hlY2tTdXBlcmNsYXNzKENsYXNzIHN1YmNsYXNzLCBDbGFzcyBzdXBlcmNsYXNzKSB7CisJcmV0dXJuIHN1cGVyY2xhc3MuaXNBc3NpZ25hYmxlRnJvbShzdWJjbGFzcyk7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIG9iamVjdHM6IHRoZSBmaXJzdCBvYmplY3QgaW4gdGhlIGFycmF5IGlzCisgICAgICogYW4gaW5zdGFuY2Ugb2YgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIHJlcXVlc3RlZCBtZWNoYW5pc20gdHlwZQorICAgICAqIGFuZCB0eXBlLCBhbmQgdGhlIHNlY29uZCBvYmplY3QgaW4gdGhlIGFycmF5IGlkZW50aWZpZXMgdGhlIHByb3ZpZGVyCisgICAgICogb2YgdGhhdCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgKiBUaGUgPGNvZGU+cHJvdmlkZXI8L2NvZGU+IGFyZ3VtZW50IGNhbiBiZSBudWxsLCBpbiB3aGljaCBjYXNlIGFsbAorICAgICAqIGNvbmZpZ3VyZWQgcHJvdmlkZXJzIHdpbGwgYmUgc2VhcmNoZWQgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZS4KKyAgICAgKi8KKyAgICBzdGF0aWMgT2JqZWN0W10gZ2V0SW1wbChTdHJpbmcgbWVjaFR5cGUsIFN0cmluZyB0eXBlLCBQcm92aWRlciBwcm92aWRlcikKKwl0aHJvd3MgTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uCisgICAgeworCXJldHVybiBnZXRJbXBsKG1lY2hUeXBlLCBudWxsLCB0eXBlLCBwcm92aWRlcik7CisgICAgfQorCisgICAgc3RhdGljIE9iamVjdFtdIGdldEltcGwoU3RyaW5nIGFsZywgTWFwLkVudHJ5IGF0dHIsIFN0cmluZyB0eXBlLCAKKwlQcm92aWRlciBwcm92aWRlcikgdGhyb3dzIE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiB7CisgICAgICAgIENsYXNzIHR5cGVDbGFzcyA9IG51bGw7CisJYm9vbGVhbiBtID0gdHJ1ZTsKKwlpZiAodHlwZS5lcXVhbHMoIlhNTFNpZ25hdHVyZUZhY3RvcnkiKSkgeworCSAgICB0eXBlQ2xhc3MgPSBqYXZheC54bWwuY3J5cHRvLmRzaWcuWE1MU2lnbmF0dXJlRmFjdG9yeS5jbGFzczsKKwl9IGVsc2UgaWYgKHR5cGUuZXF1YWxzKCJLZXlJbmZvRmFjdG9yeSIpKSB7CisJICAgIHR5cGVDbGFzcyA9IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvLktleUluZm9GYWN0b3J5LmNsYXNzOworCX0gZWxzZSBpZiAodHlwZS5lcXVhbHMoIlRyYW5zZm9ybVNlcnZpY2UiKSkgeworCSAgICB0eXBlQ2xhc3MgPSBqYXZheC54bWwuY3J5cHRvLmRzaWcuVHJhbnNmb3JtU2VydmljZS5jbGFzczsKKwkgICAgbSA9IGZhbHNlOworCX0KKwlTdHJpbmcga2V5ID0gdHlwZSArICIuIiArIGFsZzsKKyAgICAgICAgaWYgKHByb3ZpZGVyID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBkb0dldEltcGwKKwkJKHR5cGUsIHR5cGVDbGFzcywgCisJCSBnZXRFbmdpbmVDbGFzc05hbWUoYWxnLCBhdHRyLCB0eXBlLCBrZXksIG0pLCBtKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBkb0dldEltcGwKKwkJKHR5cGUsIHR5cGVDbGFzcywgZ2V0RW5naW5lQ2xhc3NOYW1lKGFsZywgYXR0ciwgdHlwZSwga2V5LAorCQkgcHJvdmlkZXIsIG0pLCBtKTsKKyAgICAgICAgfQorICAgIH0KKyAgIAorICAgIHByaXZhdGUgc3RhdGljIE9iamVjdFtdIGRvR2V0SW1wbChTdHJpbmcgdHlwZSwgQ2xhc3MgdHlwZUNsYXNzLCAKKwlQcm92aWRlclByb3BlcnR5IHBwLCBib29sZWFuIG1lY2gpIHRocm93cyBOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24KKyAgICB7CisgICAgICAgIFN0cmluZyBjbGFzc05hbWUgPSBwcC5jbGFzc05hbWU7CisgICAgICAgIFN0cmluZyBwcm92aWRlck5hbWUgPSBwcC5wcm92aWRlci5nZXROYW1lKCk7CisKKyAgICAJdHJ5IHsKKyAgICAgICAgICAgIC8vIExvYWQgdGhlIGltcGxlbWVudGF0aW9uIGNsYXNzIHVzaW5nIHRoZSBjbGFzcyBsb2FkZXIgb2YgCisJICAgIC8vIHR5cGVDbGFzcy4gVGhpcyBpbnN1cmVzIGNoZWNrU3VwZXJDbGFzcyB3b24ndCBmYWlsIGR1ZSB0bworCSAgICAvLyB0eXBlQ2xhc3MgYW5kIHRoZSBpbXBsZW1lbnRhdGlvbiBjbGFzcyBiZWluZyBsb2FkZWQgZnJvbQorCSAgICAvLyB0d28gZGlmZmVyZW50IGNsYXNzIGxvYWRlcnMuCisJICAgIENsYXNzTG9hZGVyIGNsID0gdHlwZUNsYXNzLmdldENsYXNzTG9hZGVyKCk7CisJICAgIENsYXNzIGltcGxDbGFzczsKKwkgICAgaWYgKGNsICE9IG51bGwpIHsKKwkJaW1wbENsYXNzID0gY2wubG9hZENsYXNzKGNsYXNzTmFtZSk7CisJICAgIH0gZWxzZSB7CisJCWltcGxDbGFzcyA9IENsYXNzLmZvck5hbWUoY2xhc3NOYW1lKTsKKwkgICAgfQorCisJICAgIGlmIChjaGVja1N1cGVyY2xhc3MoaW1wbENsYXNzLCB0eXBlQ2xhc3MpKSB7CisJCXJldHVybiBuZXcgT2JqZWN0W10geyBpbXBsQ2xhc3MubmV3SW5zdGFuY2UoKSwgcHAucHJvdmlkZXIgfTsKKwkgICAgfSBlbHNlIHsKKwkJaWYgKG1lY2gpIHsKKwkJICAgIHRocm93IG5ldyBOb1N1Y2hNZWNoYW5pc21FeGNlcHRpb24KKwkJCSgiY2xhc3MgY29uZmlndXJlZCBmb3IgIiArIHR5cGUgKyAiOiAiICsgY2xhc3NOYW1lICsgCisJCSAgICAgICAgICIgbm90IGEgIiArIHR5cGUpOworCQl9IGVsc2UgeworCQkgICAgdGhyb3cgbmV3IE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbgorCQkJKCJjbGFzcyBjb25maWd1cmVkIGZvciAiICsgdHlwZSArICI6ICIgKyBjbGFzc05hbWUgKyAKKwkJICAgICAgICAgIiBub3QgYSAiICsgdHlwZSk7CisJCX0KKwkgICAgfQorCX0gY2F0Y2ggKENsYXNzTm90Rm91bmRFeGNlcHRpb24gZSkgeworCSAgICBpZiAobWVjaCkgeworCSAgICAgICAgdGhyb3cgbmV3IE5vU3VjaE1lY2hhbmlzbUV4Y2VwdGlvbgorCQkgICAgKCJjbGFzcyBjb25maWd1cmVkIGZvciAiICsgdHlwZSArICIocHJvdmlkZXI6ICIgKyAKKwkgICAgICAgICAgICAgcHJvdmlkZXJOYW1lICsgIikiICsgImNhbm5vdCBiZSBmb3VuZC5cbiIsIGUpOworCSAgICB9IGVsc2UgeworCSAgICAgICAgdGhyb3cgKE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbikgbmV3IE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbgorCQkgICAgKCJjbGFzcyBjb25maWd1cmVkIGZvciAiICsgdHlwZSArICIocHJvdmlkZXI6ICIgKyAKKwkgICAgICAgICAgICAgcHJvdmlkZXJOYW1lICsgIikiICsgImNhbm5vdCBiZSBmb3VuZC5cbiIpLmluaXRDYXVzZShlKTsKKwkgICAgfQorCX0gY2F0Y2ggKEluc3RhbnRpYXRpb25FeGNlcHRpb24gZSkgeworCSAgICBpZiAobWVjaCkgeworCSAgICAgICAgdGhyb3cgbmV3IE5vU3VjaE1lY2hhbmlzbUV4Y2VwdGlvbgorCQkgICAgKCJjbGFzcyAiICsgY2xhc3NOYW1lICsgIiBjb25maWd1cmVkIGZvciAiICsgdHlwZSArCisgICAgICAgICAgICAgICAgICAgICAiKHByb3ZpZGVyOiAiICsgcHJvdmlkZXJOYW1lICsgIikgY2Fubm90IGJlICIgKworICAgICAgICAgICAgICAgICAgICAgImluc3RhbnRpYXRlZC4gIiwgZSk7CisJICAgIH0gZWxzZSB7CisJICAgICAgICB0aHJvdyAoTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uKSBuZXcgTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uCisJCSAgICAoImNsYXNzICIgKyBjbGFzc05hbWUgKyAiIGNvbmZpZ3VyZWQgZm9yICIgKyB0eXBlICsKKyAgICAgICAgICAgICAgICAgICAgICIocHJvdmlkZXI6ICIgKyBwcm92aWRlck5hbWUgKyAiKSBjYW5ub3QgYmUgIiArCisgICAgICAgICAgICAgICAgICAgICAiaW5zdGFudGlhdGVkLiAiKS5pbml0Q2F1c2UoZSk7CisJICAgIH0KKwl9IGNhdGNoIChJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIGUpIHsKKwkgICAgaWYgKG1lY2gpIHsKKwkgICAgICAgIHRocm93IG5ldyBOb1N1Y2hNZWNoYW5pc21FeGNlcHRpb24KKwkJICAgICgiY2xhc3MgIiArIGNsYXNzTmFtZSArICIgY29uZmlndXJlZCBmb3IgIiArIHR5cGUgKworICAgICAgICAgICAgICAgICAgICAgIihwcm92aWRlcjogIiArIHByb3ZpZGVyTmFtZSArCisgICAgICAgICAgICAgICAgICAgICAiKSBjYW5ub3QgYmUgYWNjZXNzZWQuXG4iLCBlKTsKKwkgICAgfSBlbHNlIHsKKwkgICAgICAgIHRocm93IChOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24pIG5ldyBOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24KKwkJICAgICgiY2xhc3MgIiArIGNsYXNzTmFtZSArICIgY29uZmlndXJlZCBmb3IgIiArIHR5cGUgKworICAgICAgICAgICAgICAgICAgICAgIihwcm92aWRlcjogIiArIHByb3ZpZGVyTmFtZSArCisgICAgICAgICAgICAgICAgICAgICAiKSBjYW5ub3QgYmUgYWNjZXNzZWQuXG4iKS5pbml0Q2F1c2UoZSk7CisJICAgIH0KKwl9CisgICAgfSAgCisgICAgCisgICAgLyoKKyAgICAgKiBSZXRyaWV2ZXMgdGhlIHByb3BlcnR5IHdpdGggdGhlIGdpdmVuIGtleSBmcm9tIHRoZSBnaXZlbiBwcm92aWRlci4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgZ2V0UHJvdmlkZXJQcm9wZXJ0eShTdHJpbmcga2V5LCBNYXAuRW50cnkgYXR0ciwgCisJUHJvdmlkZXIgcHJvdikgeworCVN0cmluZyBwcm9wID0gcHJvdi5nZXRQcm9wZXJ0eShrZXkpOworCWlmIChwcm9wID09IG51bGwpIHsKKwkgICAgLy8gSXMgdGhlcmUgYSBtYXRjaCBpZiB3ZSBkbyBhIGNhc2UtaW5zZW5zaXRpdmUgcHJvcGVydHkgbmFtZQorCSAgICAvLyBjb21wYXJpc29uPyBMZXQncyB0cnkgLi4uCisJICAgIGZvciAoRW51bWVyYXRpb24gZSA9IHByb3Yua2V5cygpOyBlLmhhc01vcmVFbGVtZW50cygpOyApIHsKKwkgICAgICAgIFN0cmluZyBtYXRjaEtleSA9IChTdHJpbmcpZS5uZXh0RWxlbWVudCgpOworCSAgICAgICAgaWYgKGtleS5lcXVhbHNJZ25vcmVDYXNlKG1hdGNoS2V5KSkgeworCQkgICAgcHJvcCA9IHByb3YuZ2V0UHJvcGVydHkobWF0Y2hLZXkpOworCQkgICAgYnJlYWs7CisJICAgICAgICB9CisJICAgIH0KKwl9CisKKwlpZiAocHJvcCAhPSBudWxsICYmIGF0dHIgIT0gbnVsbCkgeworCSAgICBpZiAoIXByb3YuZW50cnlTZXQoKS5jb250YWlucyhhdHRyKSkgeworCQkvLyBpZiBubyBhdHRyaWJ1dGUsIGFzc3VtZSBET00gZGVmYXVsdCBpZiByZXF1ZXN0ZWQKKwkJaWYgKCFhdHRyLmdldFZhbHVlKCkuZXF1YWxzKCJET00iKSB8fCAKKwkJICAgIHByb3YuZ2V0KGF0dHIuZ2V0S2V5KCkpICE9IG51bGwpIHsKKwkJICAgIHByb3AgPSBudWxsOworCQl9CisJICAgIH0KKwl9CisKKwlyZXR1cm4gcHJvcDsKKyAgICB9CisKKyAgICAvKgorICAgICAqIENvbnZlcnRzIGFuIGFsaWFzIG5hbWUgdG8gdGhlIHN0YW5kYXJkIG5hbWUuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGdldFN0YW5kYXJkTmFtZShTdHJpbmcgYWxpYXMsIFN0cmluZyBlbmdpbmVUeXBlLAorCQkJCQkgIFByb3ZpZGVyIHByb3YpIHsKKwlyZXR1cm4gZ2V0UHJvdmlkZXJQcm9wZXJ0eSgiQWxnLkFsaWFzLiIgKyBlbmdpbmVUeXBlICsgIi4iICsgYWxpYXMsCisJCQkJICAgbnVsbCwgcHJvdik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9YTUxPYmplY3QuamF2YSBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvWE1MT2JqZWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU5YmQ4YwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvWE1MT2JqZWN0LmphdmEKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogUG9ydGlvbnMgY29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLmRzaWc7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLlhNTFN0cnVjdHVyZTsKKworLyoqCisgKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBYTUwgPGNvZGU+T2JqZWN0PC9jb2RlPiBlbGVtZW50IGFzIGRlZmluZWQgaW4KKyAqIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWxkc2lnLWNvcmUvIj4KKyAqIFczQyBSZWNvbW1lbmRhdGlvbiBmb3IgWE1MLVNpZ25hdHVyZSBTeW50YXggYW5kIFByb2Nlc3Npbmc8L2E+LgorICogQW4gPGNvZGU+WE1MT2JqZWN0PC9jb2RlPiBtYXkgY29udGFpbiBhbnkgZGF0YSBhbmQgbWF5IGluY2x1ZGUgb3B0aW9uYWwgCisgKiBNSU1FIHR5cGUsIElELCBhbmQgZW5jb2RpbmcgYXR0cmlidXRlcy4gVGhlIFhNTCBTY2hlbWEgRGVmaW5pdGlvbiBpcyAKKyAqIGRlZmluZWQgYXM6CisgKgorICogPHByZT48Y29kZT4KKyAqICZsdDtlbGVtZW50IG5hbWU9Ik9iamVjdCIgdHlwZT0iZHM6T2JqZWN0VHlwZSIvJmd0OyAKKyAqICZsdDtjb21wbGV4VHlwZSBuYW1lPSJPYmplY3RUeXBlIiBtaXhlZD0idHJ1ZSImZ3Q7CisgKiAgICZsdDtzZXF1ZW5jZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiZndDsKKyAqICAgICAmbHQ7YW55IG5hbWVzcGFjZT0iIyNhbnkiIHByb2Nlc3NDb250ZW50cz0ibGF4Ii8mZ3Q7CisgKiAgICZsdDsvc2VxdWVuY2UmZ3Q7CisgKiAgICZsdDthdHRyaWJ1dGUgbmFtZT0iSWQiIHR5cGU9IklEIiB1c2U9Im9wdGlvbmFsIi8mZ3Q7IAorICogICAmbHQ7YXR0cmlidXRlIG5hbWU9Ik1pbWVUeXBlIiB0eXBlPSJzdHJpbmciIHVzZT0ib3B0aW9uYWwiLyZndDsKKyAqICAgJmx0O2F0dHJpYnV0ZSBuYW1lPSJFbmNvZGluZyIgdHlwZT0iYW55VVJJIiB1c2U9Im9wdGlvbmFsIi8mZ3Q7IAorICogJmx0Oy9jb21wbGV4VHlwZSZndDsKKyAqIDwvY29kZT48L3ByZT4KKyAqCisgKiBBIDxjb2RlPlhNTE9iamVjdDwvY29kZT4gaW5zdGFuY2UgbWF5IGJlIGNyZWF0ZWQgYnkgaW52b2tpbmcgdGhlCisgKiB7QGxpbmsgWE1MU2lnbmF0dXJlRmFjdG9yeSNuZXdYTUxPYmplY3QgbmV3WE1MT2JqZWN0fSBtZXRob2Qgb2YgdGhlCisgKiB7QGxpbmsgWE1MU2lnbmF0dXJlRmFjdG9yeX0gY2xhc3M7IGZvciBleGFtcGxlOgorICoKKyAqIDxwcmU+CisgKiAgIFhNTFNpZ25hdHVyZUZhY3RvcnkgZmFjID0gWE1MU2lnbmF0dXJlRmFjdG9yeS5nZXRJbnN0YW5jZSgiRE9NIik7CisgKiAgIExpc3QgY29udGVudCA9IENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoZmFjLm5ld01hbmlmZXN0KHJlZmVyZW5jZXMpKSk7CisgKiAgIFhNTE9iamVjdCBvYmplY3QgPSBmYWN0b3J5Lm5ld1hNTE9iamVjdChjb250ZW50LCAib2JqZWN0LTEiLCBudWxsLCBudWxsKTsKKyAqIDwvcHJlPgorICoKKyAqIDxwPk5vdGUgdGhhdCB0aGlzIGNsYXNzIGlzIG5hbWVkIDxjb2RlPlhNTE9iamVjdDwvY29kZT4gcmF0aGVyIHRoYW4KKyAqIDxjb2RlPk9iamVjdDwvY29kZT4gdG8gYXZvaWQgbmFtaW5nIGNsYXNoZXMgd2l0aCB0aGUgZXhpc3RpbmcgCisgKiB7QGxpbmsgamF2YS5sYW5nLk9iamVjdCBqYXZhLmxhbmcuT2JqZWN0fSBjbGFzcy4KKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKiBAYXV0aG9yIEpTUiAxMDUgRXhwZXJ0IEdyb3VwCisgKiBAYXV0aG9yIEpveWNlIEwuIExldW5nCisgKiBAc2VlIFhNTFNpZ25hdHVyZUZhY3RvcnkjbmV3WE1MT2JqZWN0KExpc3QsIFN0cmluZywgU3RyaW5nLCBTdHJpbmcpCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgWE1MT2JqZWN0IGV4dGVuZHMgWE1MU3RydWN0dXJlIHsKKworICAgIC8qKgorICAgICAqIFVSSSB0aGF0IGlkZW50aWZpZXMgdGhlIDxjb2RlPk9iamVjdDwvY29kZT4gZWxlbWVudCAodGhpcyBjYW4gYmUgCisgICAgICogc3BlY2lmaWVkIGFzIHRoZSB2YWx1ZSBvZiB0aGUgPGNvZGU+dHlwZTwvY29kZT4gcGFyYW1ldGVyIG9mIHRoZSAKKyAgICAgKiB7QGxpbmsgUmVmZXJlbmNlfSBjbGFzcyB0byBpZGVudGlmeSB0aGUgcmVmZXJlbnQncyB0eXBlKS4KKyAgICAgKi8KKyAgICBmaW5hbCBzdGF0aWMgU3RyaW5nIFRZUEUgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCI7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGFuIHtAbGluayBqYXZhLnV0aWwuQ29sbGVjdGlvbnMjdW5tb2RpZmlhYmxlTGlzdCB1bm1vZGlmaWFibGUgCisgICAgICogbGlzdH0gb2Yge0BsaW5rIFhNTFN0cnVjdHVyZX1zIGNvbnRhaW5lZCBpbiB0aGlzIDxjb2RlPlhNTE9iamVjdDwvY29kZT4sCisgICAgICogd2hpY2ggcmVwcmVzZW50IGVsZW1lbnRzIGZyb20gYW55IG5hbWVzcGFjZS4gCisgICAgICoKKyAgICAgKjxwPklmIHRoZXJlIGlzIGEgcHVibGljIHN1YmNsYXNzIHJlcHJlc2VudGluZyB0aGUgdHlwZSBvZiAKKyAgICAgKiA8Y29kZT5YTUxTdHJ1Y3R1cmU8L2NvZGU+LCBpdCBpcyByZXR1cm5lZCBhcyBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzCisgICAgICogKGV4OiBhIDxjb2RlPlNpZ25hdHVyZVByb3BlcnRpZXM8L2NvZGU+IGVsZW1lbnQgd291bGQgYmUgcmV0dXJuZWQKKyAgICAgKiBhcyBhbiBpbnN0YW5jZSBvZiB7QGxpbmsgamF2YXgueG1sLmNyeXB0by5kc2lnLlNpZ25hdHVyZVByb3BlcnRpZXN9KS4KKyAgICAgKgorICAgICAqIEByZXR1cm4gYW4gdW5tb2RpZmlhYmxlIGxpc3Qgb2YgPGNvZGU+WE1MU3RydWN0dXJlPC9jb2RlPnMgKG1heSBiZSBlbXB0eSAKKyAgICAgKiAgICBidXQgbmV2ZXIgPGNvZGU+bnVsbDwvY29kZT4pCisgICAgICovCisgICAgTGlzdCBnZXRDb250ZW50KCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBJZCBvZiB0aGlzIDxjb2RlPlhNTE9iamVjdDwvY29kZT4uCisgICAgICogCisgICAgICogQHJldHVybiB0aGUgSWQgKG9yIDxjb2RlPm51bGw8L2NvZGU+IGlmIG5vdCBzcGVjaWZpZWQpCisgICAgICovCisgICAgU3RyaW5nIGdldElkKCk7CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbWltZSB0eXBlIG9mIHRoaXMgPGNvZGU+WE1MT2JqZWN0PC9jb2RlPi4gVGhlCisgICAgICogbWltZSB0eXBlIGlzIGFuIG9wdGlvbmFsIGF0dHJpYnV0ZSB3aGljaCBkZXNjcmliZXMgdGhlIGRhdGEgd2l0aGluIHRoaXMKKyAgICAgKiA8Y29kZT5YTUxPYmplY3Q8L2NvZGU+IChpbmRlcGVuZGVudCBvZiBpdHMgZW5jb2RpbmcpLgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgbWltZSB0eXBlIChvciA8Y29kZT5udWxsPC9jb2RlPiBpZiBub3Qgc3BlY2lmaWVkKQorICAgICAqLworICAgIFN0cmluZyBnZXRNaW1lVHlwZSgpOworICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGVuY29kaW5nIFVSSSBvZiB0aGlzIDxjb2RlPlhNTE9iamVjdDwvY29kZT4uIFRoZSBlbmNvZGluZworICAgICAqIFVSSSBpZGVudGlmaWVzIHRoZSBtZXRob2QgYnkgd2hpY2ggdGhlIG9iamVjdCBpcyBlbmNvZGVkLgorICAgICAqIAorICAgICAqIEByZXR1cm4gdGhlIGVuY29kaW5nIFVSSSAob3IgPGNvZGU+bnVsbDwvY29kZT4gaWYgbm90IHNwZWNpZmllZCkKKyAgICAgKi8KKyAgICBTdHJpbmcgZ2V0RW5jb2RpbmcoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvWE1MU2lnbkNvbnRleHQuamF2YSBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvWE1MU2lnbkNvbnRleHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjFjYzFlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9YTUxTaWduQ29udGV4dC5qYXZhCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNS0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by5kc2lnOworCitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5YTUxDcnlwdG9Db250ZXh0OworCisvKioKKyAqIENvbnRhaW5zIGNvbnRleHQgaW5mb3JtYXRpb24gZm9yIGdlbmVyYXRpbmcgWE1MIFNpZ25hdHVyZXMuIFRoaXMgaW50ZXJmYWNlCisgKiBpcyBwcmltYXJpbHkgaW50ZW5kZWQgZm9yIHR5cGUtc2FmZXR5LgorICoKKyAqIDxwPk5vdGUgdGhhdCA8Y29kZT5YTUxTaWduQ29udGV4dDwvY29kZT4gaW5zdGFuY2VzIGNhbiBjb250YWluCisgKiBpbmZvcm1hdGlvbiBhbmQgc3RhdGUgc3BlY2lmaWMgdG8gdGhlIFhNTCBzaWduYXR1cmUgc3RydWN0dXJlIGl0IGlzCisgKiB1c2VkIHdpdGguIFRoZSByZXN1bHRzIGFyZSB1bnByZWRpY3RhYmxlIGlmIGFuCisgKiA8Y29kZT5YTUxTaWduQ29udGV4dDwvY29kZT4gaXMgdXNlZCB3aXRoIGRpZmZlcmVudCBzaWduYXR1cmUgc3RydWN0dXJlcworICogKGZvciBleGFtcGxlLCB5b3Ugc2hvdWxkIG5vdCB1c2UgdGhlIHNhbWUgPGNvZGU+WE1MU2lnbkNvbnRleHQ8L2NvZGU+CisgKiBpbnN0YW5jZSB0byBzaWduIHR3byBkaWZmZXJlbnQge0BsaW5rIFhNTFNpZ25hdHVyZX0gb2JqZWN0cykuCisgKiA8cD4KKyAqIDxiPjxhIG5hbWU9IlN1cHBvcnRlZCBQcm9wZXJ0aWVzIj48L2E+U3VwcG9ydGVkIFByb3BlcnRpZXM8L2I+CisgKiA8cD5UaGUgZm9sbG93aW5nIHByb3BlcnRpZXMgY2FuIGJlIHNldCB1c2luZyB0aGUgCisgKiB7QGxpbmsgI3NldFByb3BlcnR5IHNldFByb3BlcnR5fSBtZXRob2QuCisgKiA8dWw+CisgKiAgIDxsaT48Y29kZT5qYXZheC54bWwuY3J5cHRvLmRzaWcuY2FjaGVSZWZlcmVuY2U8L2NvZGU+OiB2YWx1ZSBtdXN0IGJlIGEKKyAqICAgICAge0BsaW5rIEJvb2xlYW59LiBUaGlzIHByb3BlcnR5IGNvbnRyb2xzIHdoZXRoZXIgb3Igbm90IHRoZSBkaWdlc3RlZAorICogICAgICB7QGxpbmsgUmVmZXJlbmNlfSBvYmplY3RzIHdpbGwgY2FjaGUgdGhlIGRlcmVmZXJlbmNlZCBjb250ZW50IGFuZCAKKyAqICAgICAgcHJlLWRpZ2VzdGVkIGlucHV0IGZvciBzdWJzZXF1ZW50IHJldHJpZXZhbCB2aWEgdGhlCisgKiAgICAgIHtAbGluayBSZWZlcmVuY2UjZ2V0RGVyZWZlcmVuY2VkRGF0YSBSZWZlcmVuY2UuZ2V0RGVyZWZlcmVuY2VkRGF0YX0gYW5kCisgKgl7QGxpbmsgUmVmZXJlbmNlI2dldERpZ2VzdElucHV0U3RyZWFtIFJlZmVyZW5jZS5nZXREaWdlc3RJbnB1dFN0cmVhbX0KKyAqICAgICAgbWV0aG9kcy4gVGhlIGRlZmF1bHQgdmFsdWUgaWYgbm90IHNwZWNpZmllZCBpcyAKKyAqCTxjb2RlPkJvb2xlYW4uRkFMU0U8L2NvZGU+LgorICogPC91bD4KKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKiBAYXV0aG9yIEpTUiAxMDUgRXhwZXJ0IEdyb3VwCisgKiBAc2VlIFhNTFNpZ25hdHVyZSNzaWduKFhNTFNpZ25Db250ZXh0KQorICovCitwdWJsaWMgaW50ZXJmYWNlIFhNTFNpZ25Db250ZXh0IGV4dGVuZHMgWE1MQ3J5cHRvQ29udGV4dCB7fQpkaWZmIC0tZ2l0IGEvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9YTUxTaWduYXR1cmUuamF2YSBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvWE1MU2lnbmF0dXJlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWExMmUyOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvWE1MU2lnbmF0dXJlLmphdmEKQEAgLTAsMCArMSwyMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogUG9ydGlvbnMgY29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLmRzaWc7CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLktleVNlbGVjdG9yOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uS2V5U2VsZWN0b3JSZXN1bHQ7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5NYXJzaGFsRXhjZXB0aW9uOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uWE1MU3RydWN0dXJlOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvLktleUluZm87CitpbXBvcnQgamF2YS5zZWN1cml0eS5TaWduYXR1cmU7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKKy8qKgorICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgWE1MIDxjb2RlPlNpZ25hdHVyZTwvY29kZT4gZWxlbWVudCBhcyAKKyAqIGRlZmluZWQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbGRzaWctY29yZS8iPgorICogVzNDIFJlY29tbWVuZGF0aW9uIGZvciBYTUwtU2lnbmF0dXJlIFN5bnRheCBhbmQgUHJvY2Vzc2luZzwvYT4uCisgKiBUaGlzIGNsYXNzIGNvbnRhaW5zIG1ldGhvZHMgZm9yIHNpZ25pbmcgYW5kIHZhbGlkYXRpbmcgWE1MIHNpZ25hdHVyZXMKKyAqIHdpdGggYmVoYXZpb3IgYXMgZGVmaW5lZCBieSB0aGUgVzNDIHNwZWNpZmljYXRpb24uIFRoZSBYTUwgU2NoZW1hIERlZmluaXRpb24gCisgKiBpcyBkZWZpbmVkIGFzOgorICogPHByZT48Y29kZT4KKyAqICZsdDtlbGVtZW50IG5hbWU9IlNpZ25hdHVyZSIgdHlwZT0iZHM6U2lnbmF0dXJlVHlwZSIvJmd0OworICogJmx0O2NvbXBsZXhUeXBlIG5hbWU9IlNpZ25hdHVyZVR5cGUiJmd0OworICogICAgJmx0O3NlcXVlbmNlJmd0OyAKKyAqICAgICAgJmx0O2VsZW1lbnQgcmVmPSJkczpTaWduZWRJbmZvIi8mZ3Q7IAorICogICAgICAmbHQ7ZWxlbWVudCByZWY9ImRzOlNpZ25hdHVyZVZhbHVlIi8mZ3Q7IAorICogICAgICAmbHQ7ZWxlbWVudCByZWY9ImRzOktleUluZm8iIG1pbk9jY3Vycz0iMCIvJmd0OyAKKyAqICAgICAgJmx0O2VsZW1lbnQgcmVmPSJkczpPYmplY3QiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLyZndDsgCisgKiAgICAmbHQ7L3NlcXVlbmNlJmd0OyAgCisgKiAgICAmbHQ7YXR0cmlidXRlIG5hbWU9IklkIiB0eXBlPSJJRCIgdXNlPSJvcHRpb25hbCIvJmd0OworICogJmx0Oy9jb21wbGV4VHlwZSZndDsKKyAqIDwvY29kZT48L3ByZT4KKyAqIDxwPgorICogQW4gPGNvZGU+WE1MU2lnbmF0dXJlPC9jb2RlPiBpbnN0YW5jZSBtYXkgYmUgY3JlYXRlZCBieSBpbnZva2luZyBvbmUgb2YgdGhlCisgKiB7QGxpbmsgWE1MU2lnbmF0dXJlRmFjdG9yeSNuZXdYTUxTaWduYXR1cmUgbmV3WE1MU2lnbmF0dXJlfSBtZXRob2RzIG9mIHRoZQorICoge0BsaW5rIFhNTFNpZ25hdHVyZUZhY3Rvcnl9IGNsYXNzLgorICoKKyAqIDxwPklmIHRoZSBjb250ZW50cyBvZiB0aGUgdW5kZXJseWluZyBkb2N1bWVudCBjb250YWluaW5nIHRoZSAKKyAqIDxjb2RlPlhNTFNpZ25hdHVyZTwvY29kZT4gYXJlIHN1YnNlcXVlbnRseSBtb2RpZmllZCwgdGhlIGJlaGF2aW9yIGlzCisgKiB1bmRlZmluZWQuCisgKgorICogPHA+Tm90ZSB0aGF0IHRoaXMgY2xhc3MgaXMgbmFtZWQgPGNvZGU+WE1MU2lnbmF0dXJlPC9jb2RlPiByYXRoZXIgdGhhbgorICogPGNvZGU+U2lnbmF0dXJlPC9jb2RlPiB0byBhdm9pZCBuYW1pbmcgY2xhc2hlcyB3aXRoIHRoZSBleGlzdGluZworICoge0BsaW5rIFNpZ25hdHVyZSBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZX0gY2xhc3MuCisgKgorICogQHNlZSBYTUxTaWduYXR1cmVGYWN0b3J5I25ld1hNTFNpZ25hdHVyZShTaWduZWRJbmZvLCBLZXlJbmZvKQorICogQHNlZSBYTUxTaWduYXR1cmVGYWN0b3J5I25ld1hNTFNpZ25hdHVyZShTaWduZWRJbmZvLCBLZXlJbmZvLCBMaXN0LCBTdHJpbmcsIFN0cmluZykKKyAqIEBhdXRob3IgSm95Y2UgTC4gTGV1bmcKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgRXJ3aW4gdmFuIGRlciBLb29naAorICogQGF1dGhvciBKU1IgMTA1IEV4cGVydCBHcm91cAorICovCitwdWJsaWMgaW50ZXJmYWNlIFhNTFNpZ25hdHVyZSBleHRlbmRzIFhNTFN0cnVjdHVyZSB7CisKKyAgICAvKioKKyAgICAgKiBUaGUgWE1MIE5hbWVzcGFjZSBVUkkgb2YgdGhlIFczQyBSZWNvbW1lbmRhdGlvbiBmb3IgWE1MLVNpZ25hdHVyZQorICAgICAqIFN5bnRheCBhbmQgUHJvY2Vzc2luZy4KKyAgICAgKi8KKyAgICBmaW5hbCBzdGF0aWMgU3RyaW5nIFhNTE5TID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiOworCisgICAgLyoqCisgICAgICogVmFsaWRhdGVzIHRoZSBzaWduYXR1cmUgYWNjb3JkaW5nIHRvIHRoZSAKKyAgICAgKiA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWxkc2lnLWNvcmUvI3NlYy1Db3JlVmFsaWRhdGlvbiI+CisgICAgICogY29yZSB2YWxpZGF0aW9uIHByb2Nlc3NpbmcgcnVsZXM8L2E+LiBUaGlzIG1ldGhvZCB2YWxpZGF0ZXMgdGhlIAorICAgICAqIHNpZ25hdHVyZSB1c2luZyB0aGUgZXhpc3Rpbmcgc3RhdGUsIGl0IGRvZXMgbm90IHVubWFyc2hhbCBhbmQgCisgICAgICogcmVpbml0aWFsaXplIHRoZSBjb250ZW50cyBvZiB0aGUgPGNvZGU+WE1MU2lnbmF0dXJlPC9jb2RlPiB1c2luZyB0aGUgCisgICAgICogbG9jYXRpb24gaW5mb3JtYXRpb24gc3BlY2lmaWVkIGluIHRoZSBjb250ZXh0LiAgCisgICAgICoKKyAgICAgKiA8cD5UaGlzIG1ldGhvZCBvbmx5IHZhbGlkYXRlcyB0aGUgc2lnbmF0dXJlIHRoZSBmaXJzdCB0aW1lIGl0IGlzIAorICAgICAqIGludm9rZWQuIE9uIHN1YnNlcXVlbnQgaW52b2NhdGlvbnMsIGl0IHJldHVybnMgYSBjYWNoZWQgcmVzdWx0LgorICAgICAqCisgICAgICogQHBhcmFtIHZhbGlkYXRlQ29udGV4dCB0aGUgdmFsaWRhdGluZyBjb250ZXh0CisgICAgICogQHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgc2lnbmF0dXJlIHBhc3NlZCBjb3JlIHZhbGlkYXRpb24sCisgICAgICogICAgb3RoZXJ3aXNlIDxjb2RlPmZhbHNlPC9jb2RlPgorICAgICAqIEB0aHJvd3MgQ2xhc3NDYXN0RXhjZXB0aW9uIGlmIHRoZSB0eXBlIG9mIDxjb2RlPnZhbGlkYXRlQ29udGV4dDwvY29kZT4KKyAgICAgKiAgICBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoaXMgPGNvZGU+WE1MU2lnbmF0dXJlPC9jb2RlPgorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+dmFsaWRhdGVDb250ZXh0PC9jb2RlPiBpcyAKKyAgICAgKiAgICA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIGlmIGFuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJzIGR1cmluZyAKKyAgICAgKiAgICB2YWxpZGF0aW9uIHRoYXQgcHJldmVudGVkIHRoZSB2YWxpZGF0aW9uIG9wZXJhdGlvbiBmcm9tIGNvbXBsZXRpbmcKKyAgICAgKi8KKyAgICBib29sZWFuIHZhbGlkYXRlKFhNTFZhbGlkYXRlQ29udGV4dCB2YWxpZGF0ZUNvbnRleHQpIAorCXRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb247CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBrZXkgaW5mbyBvZiB0aGlzIDxjb2RlPlhNTFNpZ25hdHVyZTwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBrZXkgaW5mbyAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+IGlmIG5vdCBzcGVjaWZpZWQpCisgICAgICovCisgICAgS2V5SW5mbyBnZXRLZXlJbmZvKCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBzaWduZWQgaW5mbyBvZiB0aGlzIDxjb2RlPlhNTFNpZ25hdHVyZTwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBzaWduZWQgaW5mbyAobmV2ZXIgPGNvZGU+bnVsbDwvY29kZT4pCisgICAgICovCisgICAgU2lnbmVkSW5mbyBnZXRTaWduZWRJbmZvKCk7CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJucyBhbiB7QGxpbmsgamF2YS51dGlsLkNvbGxlY3Rpb25zI3VubW9kaWZpYWJsZUxpc3QgdW5tb2RpZmlhYmxlCisgICAgICogbGlzdH0gb2Yge0BsaW5rIFhNTE9iamVjdH1zIGNvbnRhaW5lZCBpbiB0aGlzIDxjb2RlPlhNTFNpZ25hdHVyZTwvY29kZT4uIAorICAgICAqCisgICAgICogQHJldHVybiBhbiB1bm1vZGlmaWFibGUgbGlzdCBvZiA8Y29kZT5YTUxPYmplY3Q8L2NvZGU+cyAobWF5IGJlIGVtcHR5IAorICAgICAqICAgIGJ1dCBuZXZlciA8Y29kZT5udWxsPC9jb2RlPikKKyAgICAgKi8KKyAgICBMaXN0IGdldE9iamVjdHMoKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG9wdGlvbmFsIElkIG9mIHRoaXMgPGNvZGU+WE1MU2lnbmF0dXJlPC9jb2RlPi4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIElkIChtYXkgYmUgPGNvZGU+bnVsbDwvY29kZT4gaWYgbm90IHNwZWNpZmllZCkKKyAgICAgKi8KKyAgICBTdHJpbmcgZ2V0SWQoKTsKKyAgICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHNpZ25hdHVyZSB2YWx1ZSBvZiB0aGlzIDxjb2RlPlhNTFNpZ25hdHVyZTwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBzaWduYXR1cmUgdmFsdWUgCisgICAgICovCisgICAgU2lnbmF0dXJlVmFsdWUgZ2V0U2lnbmF0dXJlVmFsdWUoKTsKKworICAgIC8qKgorICAgICAqIFNpZ25zIHRoaXMgPGNvZGU+WE1MU2lnbmF0dXJlPC9jb2RlPi4KKyAgICAgKgorICAgICAqIDxwPklmIHRoaXMgbWV0aG9kIHRocm93cyBhbiBleGNlcHRpb24sIHRoaXMgPGNvZGU+WE1MU2lnbmF0dXJlPC9jb2RlPiBhbmQKKyAgICAgKiB0aGUgPGNvZGU+c2lnbkNvbnRleHQ8L2NvZGU+IHBhcmFtZXRlciB3aWxsIGJlIGxlZnQgaW4gdGhlIHN0YXRlIHRoYXQgCisgICAgICogaXQgd2FzIGluIHByaW9yIHRvIHRoZSBpbnZvY2F0aW9uLgorICAgICAqCisgICAgICogQHBhcmFtIHNpZ25Db250ZXh0IHRoZSBzaWduaW5nIGNvbnRleHQKKyAgICAgKiBAdGhyb3dzIENsYXNzQ2FzdEV4Y2VwdGlvbiBpZiB0aGUgdHlwZSBvZiA8Y29kZT5zaWduQ29udGV4dDwvY29kZT4gaXMKKyAgICAgKiAgICBub3QgY29tcGF0aWJsZSB3aXRoIHRoaXMgPGNvZGU+WE1MU2lnbmF0dXJlPC9jb2RlPgorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+c2lnbkNvbnRleHQ8L2NvZGU+IGlzIAorICAgICAqICAgIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogQHRocm93cyBNYXJzaGFsRXhjZXB0aW9uIGlmIGFuIGV4Y2VwdGlvbiBvY2N1cnMgd2hpbGUgbWFyc2hhbGxpbmcKKyAgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiBpZiBhbiB1bmV4cGVjdGVkIGV4Y2VwdGlvbiBvY2N1cnMgd2hpbGUKKyAgICAgKiAgICBnZW5lcmF0aW5nIHRoZSBzaWduYXR1cmUKKyAgICAgKi8KKyAgICB2b2lkIHNpZ24oWE1MU2lnbkNvbnRleHQgc2lnbkNvbnRleHQpIHRocm93cyBNYXJzaGFsRXhjZXB0aW9uLCAKKwlYTUxTaWduYXR1cmVFeGNlcHRpb247CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIHtAbGluayBLZXlTZWxlY3Rvcn0sIGlmIHNwZWNpZmllZCwgYWZ0ZXIKKyAgICAgKiB0aGlzIDxjb2RlPlhNTFNpZ25hdHVyZTwvY29kZT4gaGFzIGJlZW4gc2lnbmVkIG9yIHZhbGlkYXRlZC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIGtleSBzZWxlY3RvciByZXN1bHQsIG9yIDxjb2RlPm51bGw8L2NvZGU+IGlmIGEga2V5CisgICAgICoJICBzZWxlY3RvciBoYXMgbm90IGJlZW4gc3BlY2lmaWVkIG9yIHRoaXMgPGNvZGU+WE1MU2lnbmF0dXJlPC9jb2RlPgorICAgICAqCSAgaGFzIG5vdCBiZWVuIHNpZ25lZCBvciB2YWxpZGF0ZWQKKyAgICAgKi8KKyAgICBLZXlTZWxlY3RvclJlc3VsdCBnZXRLZXlTZWxlY3RvclJlc3VsdCgpOworCisgICAgLyoqCisgICAgICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgWE1MIDxjb2RlPlNpZ25hdHVyZVZhbHVlPC9jb2RlPiBlbGVtZW50IGFzIAorICAgICAqIGRlZmluZWQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbGRzaWctY29yZS8iPgorICAgICAqIFczQyBSZWNvbW1lbmRhdGlvbiBmb3IgWE1MLVNpZ25hdHVyZSBTeW50YXggYW5kIFByb2Nlc3Npbmc8L2E+LiAKKyAgICAgKiBUaGUgWE1MIFNjaGVtYSBEZWZpbml0aW9uIGlzIGRlZmluZWQgYXM6CisgICAgICogPHA+CisgICAgICogPHByZT4KKyAgICAgKiAgICZsdDtlbGVtZW50IG5hbWU9IlNpZ25hdHVyZVZhbHVlIiB0eXBlPSJkczpTaWduYXR1cmVWYWx1ZVR5cGUiLyZndDsKKyAgICAgKiAgICAgJmx0O2NvbXBsZXhUeXBlIG5hbWU9IlNpZ25hdHVyZVZhbHVlVHlwZSImZ3Q7CisgICAgICogICAgICAgJmx0O3NpbXBsZUNvbnRlbnQmZ3Q7CisgICAgICogICAgICAgICAmbHQ7ZXh0ZW5zaW9uIGJhc2U9ImJhc2U2NEJpbmFyeSImZ3Q7CisgICAgICogICAgICAgICAgICZsdDthdHRyaWJ1dGUgbmFtZT0iSWQiIHR5cGU9IklEIiB1c2U9Im9wdGlvbmFsIi8mZ3Q7CisgICAgICogICAgICAgICAmbHQ7L2V4dGVuc2lvbiZndDsKKyAgICAgKiAgICAgICAmbHQ7L3NpbXBsZUNvbnRlbnQmZ3Q7CisgICAgICogICAgICZsdDsvY29tcGxleFR5cGUmZ3Q7CisgICAgICogPC9wcmU+CisgICAgICoKKyAgICAgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgICAgICogQGF1dGhvciBKU1IgMTA1IEV4cGVydCBHcm91cAorICAgICAqLworICAgIHB1YmxpYyBpbnRlcmZhY2UgU2lnbmF0dXJlVmFsdWUgZXh0ZW5kcyBYTUxTdHJ1Y3R1cmUgeworICAgICAgICAvKioKKyAgICAgICAgICogUmV0dXJucyB0aGUgb3B0aW9uYWwgPGNvZGU+SWQ8L2NvZGU+IGF0dHJpYnV0ZSBvZiB0aGlzCisgICAgICAgICAqIDxjb2RlPlNpZ25hdHVyZVZhbHVlPC9jb2RlPiwgd2hpY2ggcGVybWl0cyB0aGlzIGVsZW1lbnQgdG8gYmUKKyAgICAgICAgICogcmVmZXJlbmNlZCBmcm9tIGVsc2V3aGVyZS4KKyAgICAgICAgICoKKyAgICAgICAgICogQHJldHVybiB0aGUgPGNvZGU+SWQ8L2NvZGU+IGF0dHJpYnV0ZSAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+IGlmIAorCSAqICAgIG5vdCBzcGVjaWZpZWQpCisgICAgICAgICAqLworICAgICAgICBTdHJpbmcgZ2V0SWQoKTsKKworICAgICAgICAvKioKKyAgICAgICAgICogUmV0dXJucyB0aGUgc2lnbmF0dXJlIHZhbHVlIG9mIHRoaXMgPGNvZGU+U2lnbmF0dXJlVmFsdWU8L2NvZGU+LgorICAgICAgICAgKgorICAgICAgICAgKiBAcmV0dXJuIHRoZSBzaWduYXR1cmUgdmFsdWUgKG1heSBiZSA8Y29kZT5udWxsPC9jb2RlPiBpZiB0aGUKKyAgICAgICAgICogICAgPGNvZGU+WE1MU2lnbmF0dXJlPC9jb2RlPiBoYXMgbm90IGJlZW4gc2lnbmVkIHlldCkuIEVhY2ggCisJICogICAgaW52b2NhdGlvbiBvZiB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGNsb25lIG9mIHRoZSBhcnJheSB0byAKKwkgKiAgICBwcmV2ZW50IHN1YnNlcXVlbnQgbW9kaWZpY2F0aW9uLgorICAgICAgICAgKi8KKyAgICAgICAgYnl0ZVtdIGdldFZhbHVlKCk7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFZhbGlkYXRlcyB0aGUgc2lnbmF0dXJlIHZhbHVlLiBUaGlzIG1ldGhvZCBwZXJmb3JtcyBhCisgICAgICAgICAqIGNyeXB0b2dyYXBoaWMgdmFsaWRhdGlvbiBvZiB0aGUgc2lnbmF0dXJlIGNhbGN1bGF0ZWQgb3ZlciB0aGUKKyAgICAgICAgICogPGNvZGU+U2lnbmVkSW5mbzwvY29kZT4gb2YgdGhlIDxjb2RlPlhNTFNpZ25hdHVyZTwvY29kZT4uCisgICAgICAgICAqCisgICAgICAgICAqIDxwPlRoaXMgbWV0aG9kIG9ubHkgdmFsaWRhdGVzIHRoZSBzaWduYXR1cmUgdGhlIGZpcnN0CisgICAgICAgICAqIHRpbWUgaXQgaXMgaW52b2tlZC4gT24gc3Vic2VxdWVudCBpbnZvY2F0aW9ucywgaXQgcmV0dXJucyBhIGNhY2hlZAorICAgICAgICAgKiByZXN1bHQuCisgICAgICAgICAqCisgICAgICAgICAqIEByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIHNpZ25hdHVyZSB3YXMKKyAgICAgICAgICogICAgdmFsaWRhdGVkIHN1Y2Nlc3NmdWxseTsgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZQorICAgICAgICAgKiBAcGFyYW0gdmFsaWRhdGVDb250ZXh0IHRoZSB2YWxpZGF0aW5nIGNvbnRleHQKKyAgICAgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT52YWxpZGF0ZUNvbnRleHQ8L2NvZGU+IGlzCisgICAgICAgICAqICAgIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIGlmIGFuIHVuZXhwZWN0ZWQgZXhjZXB0aW9uIG9jY3VycyB3aGlsZQorICAgICAgICAgKiAgICB2YWxpZGF0aW5nIHRoZSBzaWduYXR1cmUKKyAgICAgICAgICovCisgICAgICAgIGJvb2xlYW4gdmFsaWRhdGUoWE1MVmFsaWRhdGVDb250ZXh0IHZhbGlkYXRlQ29udGV4dCkKKyAgICAgICAgICAgIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb247CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9YTUxTaWduYXR1cmVFeGNlcHRpb24uamF2YSBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvWE1MU2lnbmF0dXJlRXhjZXB0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU3NDlhNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvWE1MU2lnbmF0dXJlRXhjZXB0aW9uLmphdmEKQEAgLTAsMCArMSwxNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8uZHNpZzsKKworaW1wb3J0IGphdmEuaW8uUHJpbnRTdHJlYW07CitpbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKKworLyoqCisgKiBJbmRpY2F0ZXMgYW4gZXhjZXB0aW9uYWwgY29uZGl0aW9uIHRoYXQgb2NjdXJlZCBkdXJpbmcgdGhlIFhNTAorICogc2lnbmF0dXJlIGdlbmVyYXRpb24gb3IgdmFsaWRhdGlvbiBwcm9jZXNzLgorICoKKyAqIDxwPkFuIDxjb2RlPlhNTFNpZ25hdHVyZUV4Y2VwdGlvbjwvY29kZT4gY2FuIGNvbnRhaW4gYSBjYXVzZTogYW5vdGhlciAKKyAqIHRocm93YWJsZSB0aGF0IGNhdXNlZCB0aGlzIDxjb2RlPlhNTFNpZ25hdHVyZUV4Y2VwdGlvbjwvY29kZT4gdG8gZ2V0IHRocm93bi4gCisgKi8KK3B1YmxpYyBjbGFzcyBYTUxTaWduYXR1cmVFeGNlcHRpb24gZXh0ZW5kcyBFeGNlcHRpb24geworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTM0MzgxMDI0OTEwMTM4Njk5OTVMOworCisgICAgLyoqCisgICAgICogVGhlIHRocm93YWJsZSB0aGF0IGNhdXNlZCB0aGlzIGV4Y2VwdGlvbiB0byBnZXQgdGhyb3duLCBvciBudWxsIGlmIHRoaXMKKyAgICAgKiBleGNlcHRpb24gd2FzIG5vdCBjYXVzZWQgYnkgYW5vdGhlciB0aHJvd2FibGUgb3IgaWYgdGhlIGNhdXNhdGl2ZQorICAgICAqIHRocm93YWJsZSBpcyB1bmtub3duLiAKKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBwcml2YXRlIFRocm93YWJsZSBjYXVzZTsKKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBuZXcgPGNvZGU+WE1MU2lnbmF0dXJlRXhjZXB0aW9uPC9jb2RlPiB3aXRoIAorICAgICAqIDxjb2RlPm51bGw8L2NvZGU+IGFzIGl0cyBkZXRhaWwgbWVzc2FnZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCkgeworICAgICAgICBzdXBlcigpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBuZXcgPGNvZGU+WE1MU2lnbmF0dXJlRXhjZXB0aW9uPC9jb2RlPiB3aXRoIHRoZSBzcGVjaWZpZWQgCisgICAgICogZGV0YWlsIG1lc3NhZ2UuIAorICAgICAqCisgICAgICogQHBhcmFtIG1lc3NhZ2UgdGhlIGRldGFpbCBtZXNzYWdlCisgICAgICovCisgICAgcHVibGljIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbihTdHJpbmcgbWVzc2FnZSkgeworICAgICAgICBzdXBlcihtZXNzYWdlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IDxjb2RlPlhNTFNpZ25hdHVyZUV4Y2VwdGlvbjwvY29kZT4gd2l0aCB0aGUgCisgICAgICogc3BlY2lmaWVkIGRldGFpbCBtZXNzYWdlIGFuZCBjYXVzZS4gIAorICAgICAqIDxwPk5vdGUgdGhhdCB0aGUgZGV0YWlsIG1lc3NhZ2UgYXNzb2NpYXRlZCB3aXRoCisgICAgICogPGNvZGU+Y2F1c2U8L2NvZGU+IGlzIDxpPm5vdDwvaT4gYXV0b21hdGljYWxseSBpbmNvcnBvcmF0ZWQgaW4KKyAgICAgKiB0aGlzIGV4Y2VwdGlvbidzIGRldGFpbCBtZXNzYWdlLgorICAgICAqCisgICAgICogQHBhcmFtIG1lc3NhZ2UgdGhlIGRldGFpbCBtZXNzYWdlIAorICAgICAqIEBwYXJhbSBjYXVzZSB0aGUgY2F1c2UgKEEgPHR0Pm51bGw8L3R0PiB2YWx1ZSBpcyBwZXJtaXR0ZWQsIGFuZCAKKyAgICAgKgkgICAgICBpbmRpY2F0ZXMgdGhhdCB0aGUgY2F1c2UgaXMgbm9uZXhpc3RlbnQgb3IgdW5rbm93bi4pCisgICAgICovCisgICAgcHVibGljIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbihTdHJpbmcgbWVzc2FnZSwgVGhyb3dhYmxlIGNhdXNlKSB7CisgICAgICAgIHN1cGVyKG1lc3NhZ2UpOworICAgICAgICB0aGlzLmNhdXNlID0gY2F1c2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIG5ldyA8Y29kZT5YTUxTaWduYXR1cmVFeGNlcHRpb248L2NvZGU+IHdpdGggdGhlIHNwZWNpZmllZCAKKyAgICAgKiBjYXVzZSBhbmQgYSBkZXRhaWwgbWVzc2FnZSBvZiAKKyAgICAgKiA8Y29kZT4oY2F1c2U9PW51bGwgPyBudWxsIDogY2F1c2UudG9TdHJpbmcoKSk8L2NvZGU+CisgICAgICogKHdoaWNoIHR5cGljYWxseSBjb250YWlucyB0aGUgY2xhc3MgYW5kIGRldGFpbCBtZXNzYWdlIG9mIAorICAgICAqIDxjb2RlPmNhdXNlPC9jb2RlPikuCisgICAgICoKKyAgICAgKiBAcGFyYW0gY2F1c2UgdGhlIGNhdXNlIChBIDx0dD5udWxsPC90dD4gdmFsdWUgaXMgcGVybWl0dGVkLCBhbmQgCisgICAgICogICAgICAgIGluZGljYXRlcyB0aGF0IHRoZSBjYXVzZSBpcyBub25leGlzdGVudCBvciB1bmtub3duLikKKyAgICAgKi8KKyAgICBwdWJsaWMgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKFRocm93YWJsZSBjYXVzZSkgeworICAgICAgICBzdXBlcihjYXVzZT09bnVsbCA/IG51bGwgOiBjYXVzZS50b1N0cmluZygpKTsKKyAgICAgICAgdGhpcy5jYXVzZSA9IGNhdXNlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGNhdXNlIG9mIHRoaXMgPGNvZGU+WE1MU2lnbmF0dXJlRXhjZXB0aW9uPC9jb2RlPiBvciAKKyAgICAgKiA8Y29kZT5udWxsPC9jb2RlPiBpZiB0aGUgY2F1c2UgaXMgbm9uZXhpc3RlbnQgb3IgdW5rbm93bi4gIChUaGUgCisgICAgICogY2F1c2UgaXMgdGhlIHRocm93YWJsZSB0aGF0IGNhdXNlZCB0aGlzIAorICAgICAqIDxjb2RlPlhNTFNpZ25hdHVyZUV4Y2VwdGlvbjwvY29kZT4gdG8gZ2V0IHRocm93bi4pCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBjYXVzZSBvZiB0aGlzIDxjb2RlPlhNTFNpZ25hdHVyZUV4Y2VwdGlvbjwvY29kZT4gb3IgCisgICAgICogICAgICAgICA8Y29kZT5udWxsPC9jb2RlPiBpZiB0aGUgY2F1c2UgaXMgbm9uZXhpc3RlbnQgb3IgdW5rbm93bi4KKyAgICAgKi8KKyAgICBwdWJsaWMgVGhyb3dhYmxlIGdldENhdXNlKCkgeworICAgICAgICByZXR1cm4gY2F1c2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogUHJpbnRzIHRoaXMgPGNvZGU+WE1MU2lnbmF0dXJlRXhjZXB0aW9uPC9jb2RlPiwgaXRzIGJhY2t0cmFjZSBhbmQKKyAgICAgKiB0aGUgY2F1c2UncyBiYWNrdHJhY2UgdG8gdGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBwcmludFN0YWNrVHJhY2UoKSB7CisJc3VwZXIucHJpbnRTdGFja1RyYWNlKCk7CisJaWYgKGNhdXNlICE9IG51bGwpIHsKKwkgICAgY2F1c2UucHJpbnRTdGFja1RyYWNlKCk7CisJfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFByaW50cyB0aGlzIDxjb2RlPlhNTFNpZ25hdHVyZUV4Y2VwdGlvbjwvY29kZT4sIGl0cyBiYWNrdHJhY2UgYW5kCisgICAgICogdGhlIGNhdXNlJ3MgYmFja3RyYWNlIHRvIHRoZSBzcGVjaWZpZWQgcHJpbnQgc3RyZWFtLgorICAgICAqCisgICAgICogQHBhcmFtIHMgPGNvZGU+UHJpbnRTdHJlYW08L2NvZGU+IHRvIHVzZSBmb3Igb3V0cHV0CisgICAgICovCisgICAgcHVibGljIHZvaWQgcHJpbnRTdGFja1RyYWNlKFByaW50U3RyZWFtIHMpIHsKKwlzdXBlci5wcmludFN0YWNrVHJhY2Uocyk7CisJaWYgKGNhdXNlICE9IG51bGwpIHsKKwkgICAgY2F1c2UucHJpbnRTdGFja1RyYWNlKHMpOworCX0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQcmludHMgdGhpcyA8Y29kZT5YTUxTaWduYXR1cmVFeGNlcHRpb248L2NvZGU+LCBpdHMgYmFja3RyYWNlIGFuZAorICAgICAqIHRoZSBjYXVzZSdzIGJhY2t0cmFjZSB0byB0aGUgc3BlY2lmaWVkIHByaW50IHdyaXRlci4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzIDxjb2RlPlByaW50V3JpdGVyPC9jb2RlPiB0byB1c2UgZm9yIG91dHB1dAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHByaW50U3RhY2tUcmFjZShQcmludFdyaXRlciBzKSB7CisgICAgICAgIHN1cGVyLnByaW50U3RhY2tUcmFjZShzKTsKKwlpZiAoY2F1c2UgIT0gbnVsbCkgeworCSAgICBjYXVzZS5wcmludFN0YWNrVHJhY2Uocyk7CisJfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvWE1MU2lnbmF0dXJlRmFjdG9yeS5qYXZhIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9YTUxTaWduYXR1cmVGYWN0b3J5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdjZDkyMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvWE1MU2lnbmF0dXJlRmFjdG9yeS5qYXZhCkBAIC0wLDAgKzEsNzc3IEBACisvKgorICogQ29weXJpZ2h0IDIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLmRzaWc7CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLkRhdGE7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5NYXJzaGFsRXhjZXB0aW9uOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uTm9TdWNoTWVjaGFuaXNtRXhjZXB0aW9uOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uVVJJRGVyZWZlcmVuY2VyOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uWE1MU3RydWN0dXJlOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZG9tLkRPTVN0cnVjdHVyZTsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcua2V5aW5mby5LZXlJbmZvOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvLktleUluZm9GYWN0b3J5OworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5zcGVjLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLmRvbS5ET01WYWxpZGF0ZUNvbnRleHQ7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLmRvbS5ET01TaWduQ29udGV4dDsKKworaW1wb3J0IGphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHJvdmlkZXI7CitpbXBvcnQgamF2YS5zZWN1cml0eS5TZWN1cml0eTsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworLyoqCisgKiBBIGZhY3RvcnkgZm9yIGNyZWF0aW5nIHtAbGluayBYTUxTaWduYXR1cmV9IG9iamVjdHMgZnJvbSBzY3JhdGNoIG9yIAorICogZm9yIHVubWFyc2hhbGxpbmcgYW4gPGNvZGU+WE1MU2lnbmF0dXJlPC9jb2RlPiBvYmplY3QgZnJvbSBhIGNvcnJlc3BvbmRpbmcKKyAqIFhNTCByZXByZXNlbnRhdGlvbi4KKyAqCisgKiA8aDI+WE1MU2lnbmF0dXJlRmFjdG9yeSBUeXBlPC9oMj4KKyAqCisgKiA8cD5FYWNoIGluc3RhbmNlIG9mIDxjb2RlPlhNTFNpZ25hdHVyZUZhY3Rvcnk8L2NvZGU+IHN1cHBvcnRzIGEgc3BlY2lmaWMKKyAqIFhNTCBtZWNoYW5pc20gdHlwZS4gVG8gY3JlYXRlIGFuIDxjb2RlPlhNTFNpZ25hdHVyZUZhY3Rvcnk8L2NvZGU+LCBjYWxsIG9uZQorICogb2YgdGhlIHN0YXRpYyB7QGxpbmsgI2dldEluc3RhbmNlIGdldEluc3RhbmNlfSBtZXRob2RzLCBwYXNzaW5nIGluIHRoZSBYTUwgCisgKiBtZWNoYW5pc20gdHlwZSBkZXNpcmVkLCBmb3IgZXhhbXBsZToKKyAqCisgKiA8YmxvY2txdW90ZT48Y29kZT4KKyAqIFhNTFNpZ25hdHVyZUZhY3RvcnkgZmFjdG9yeSA9IFhNTFNpZ25hdHVyZUZhY3RvcnkuZ2V0SW5zdGFuY2UoIkRPTSIpOworICogPC9jb2RlPjwvYmxvY2txdW90ZT4KKyAqCisgKiA8cD5UaGUgb2JqZWN0cyB0aGF0IHRoaXMgZmFjdG9yeSBwcm9kdWNlcyB3aWxsIGJlIGJhc2VkCisgKiBvbiBET00gYW5kIGFiaWRlIGJ5IHRoZSBET00gaW50ZXJvcGVyYWJpbGl0eSByZXF1aXJlbWVudHMgYXMgZGVmaW5lZCBpbiB0aGUKKyAqIDxhIGhyZWY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCNET00gTWVjaGFuaXNtIFJlcXVpcmVtZW50cyI+RE9NCisgKiBNZWNoYW5pc20gUmVxdWlyZW1lbnRzPC9hPiBzZWN0aW9uIG9mIHRoZSBBUEkgb3ZlcnZpZXcuIFNlZSB0aGUKKyAqIDxhIGhyZWY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCNTZXJ2aWNlIFByb3ZpZGVyIj5TZXJ2aWNlIAorICogUHJvdmlkZXJzPC9hPiBzZWN0aW9uIG9mIHRoZSBBUEkgb3ZlcnZpZXcgZm9yIGEgbGlzdCBvZiBzdGFuZGFyZCBtZWNoYW5pc20gCisgKiB0eXBlcy4KKyAqCisgKiA8cD48Y29kZT5YTUxTaWduYXR1cmVGYWN0b3J5PC9jb2RlPiBpbXBsZW1lbnRhdGlvbnMgYXJlIHJlZ2lzdGVyZWQgYW5kIGxvYWRlZAorICogdXNpbmcgdGhlIHtAbGluayBqYXZhLnNlY3VyaXR5LlByb3ZpZGVyfSBtZWNoYW5pc20uICAKKyAqIEZvciBleGFtcGxlLCBhIHNlcnZpY2UgcHJvdmlkZXIgdGhhdCBzdXBwb3J0cyB0aGUKKyAqIERPTSBtZWNoYW5pc20gd291bGQgYmUgc3BlY2lmaWVkIGluIHRoZSA8Y29kZT5Qcm92aWRlcjwvY29kZT4gc3ViY2xhc3MgYXM6CisgKiA8cHJlPgorICogICAgIHB1dCgiWE1MU2lnbmF0dXJlRmFjdG9yeS5ET00iLCAib3JnLmV4YW1wbGUuRE9NWE1MU2lnbmF0dXJlRmFjdG9yeSIpOworICogPC9wcmU+CisgKgorICogPHA+QW4gaW1wbGVtZW50YXRpb24gTVVTVCBtaW5pbWFsbHkgc3VwcG9ydCB0aGUgZGVmYXVsdCBtZWNoYW5pc20gdHlwZTogRE9NLiAKKyAqCisgKiA8cD5Ob3RlIHRoYXQgYSBjYWxsZXIgbXVzdCB1c2UgdGhlIHNhbWUgPGNvZGU+WE1MU2lnbmF0dXJlRmFjdG9yeTwvY29kZT4KKyAqIGluc3RhbmNlIHRvIGNyZWF0ZSB0aGUgPGNvZGU+WE1MU3RydWN0dXJlPC9jb2RlPnMgb2YgYSBwYXJ0aWN1bGFyIAorICogPGNvZGU+WE1MU2lnbmF0dXJlPC9jb2RlPiB0aGF0IGlzIHRvIGJlIGdlbmVyYXRlZC4gVGhlIGJlaGF2aW9yIGlzCisgKiB1bmRlZmluZWQgaWYgPGNvZGU+WE1MU3RydWN0dXJlPC9jb2RlPnMgZnJvbSBkaWZmZXJlbnQgcHJvdmlkZXJzIG9yIAorICogZGlmZmVyZW50IG1lY2hhbmlzbSB0eXBlcyBhcmUgdXNlZCB0b2dldGhlci4KKyAqCisgKiA8cD5BbHNvLCB0aGUgPGNvZGU+WE1MU3RydWN0dXJlPC9jb2RlPnMgdGhhdCBhcmUgY3JlYXRlZCBieSB0aGlzIGZhY3RvcnkKKyAqIG1heSBjb250YWluIHN0YXRlIHNwZWNpZmljIHRvIHRoZSA8Y29kZT5YTUxTaWduYXR1cmU8L2NvZGU+IGFuZCBhcmUgbm90CisgKiBpbnRlbmRlZCB0byBiZSByZXVzYWJsZS4KKyAqCisgKiA8aDI+Q3JlYXRpbmcgWE1MU2lnbmF0dXJlcyBmcm9tIHNjcmF0Y2g8L2gyPgorICoKKyAqIDxwPk9uY2UgdGhlIDxjb2RlPlhNTFNpZ25hdHVyZUZhY3Rvcnk8L2NvZGU+IGhhcyBiZWVuIGNyZWF0ZWQsIG9iamVjdHMKKyAqIGNhbiBiZSBpbnN0YW50aWF0ZWQgYnkgY2FsbGluZyB0aGUgYXBwcm9wcmlhdGUgbWV0aG9kLiBGb3IgZXhhbXBsZSwgYQorICoge0BsaW5rIFJlZmVyZW5jZX0gaW5zdGFuY2UgbWF5IGJlIGNyZWF0ZWQgYnkgaW52b2tpbmcgb25lIG9mIHRoZQorICoge0BsaW5rICNuZXdSZWZlcmVuY2UgbmV3UmVmZXJlbmNlfSBtZXRob2RzLgorICoKKyAqIDxoMj5Vbm1hcnNoYWxsaW5nIFhNTFNpZ25hdHVyZXMgZnJvbSBYTUw8L2gyPgorICoKKyAqIDxwPkFsdGVybmF0aXZlbHksIGFuIDxjb2RlPlhNTFNpZ25hdHVyZTwvY29kZT4gbWF5IGJlIGNyZWF0ZWQgZnJvbSBhbgorICogZXhpc3RpbmcgWE1MIHJlcHJlc2VudGF0aW9uIGJ5IGludm9raW5nIHRoZSB7QGxpbmsgI3VubWFyc2hhbFhNTFNpZ25hdHVyZQorICogdW5tYXJzaGFsWE1MU2lnbmF0dXJlfSBtZXRob2QgYW5kIHBhc3NpbmcgaXQgYSBtZWNoYW5pc20tc3BlY2lmaWMgCisgKiB7QGxpbmsgWE1MVmFsaWRhdGVDb250ZXh0fSBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBYTUwgY29udGVudDoKKyAqCisgKiA8cHJlPgorICogRE9NVmFsaWRhdGVDb250ZXh0IGNvbnRleHQgPSBuZXcgRE9NVmFsaWRhdGVDb250ZXh0KGtleSwgc2lnbmF0dXJlRWxlbWVudCk7CisgKiBYTUxTaWduYXR1cmUgc2lnbmF0dXJlID0gZmFjdG9yeS51bm1hcnNoYWxYTUxTaWduYXR1cmUoY29udGV4dCk7CisgKiA8L3ByZT4KKyAqCisgKiBFYWNoIDxjb2RlPlhNTFNpZ25hdHVyZUZhY3Rvcnk8L2NvZGU+IG11c3Qgc3VwcG9ydCB0aGUgcmVxdWlyZWQgCisgKiA8Y29kZT5YTUxWYWxpZGF0ZUNvbnRleHQ8L2NvZGU+IHR5cGVzIGZvciB0aGF0IGZhY3RvcnkgdHlwZSwgYnV0IG1heSBzdXBwb3J0IAorICogb3RoZXJzLiBBIERPTSA8Y29kZT5YTUxTaWduYXR1cmVGYWN0b3J5PC9jb2RlPiBtdXN0IHN1cHBvcnQge0BsaW5rIAorICogRE9NVmFsaWRhdGVDb250ZXh0fSBvYmplY3RzLgorICogCisgKiA8aDI+U2lnbmluZyBhbmQgbWFyc2hhbGxpbmcgWE1MU2lnbmF0dXJlcyB0byBYTUw8L2gyPgorICoKKyAqIEVhY2ggPGNvZGU+WE1MU2lnbmF0dXJlPC9jb2RlPiBjcmVhdGVkIGJ5IHRoZSBmYWN0b3J5IGNhbiBhbHNvIGJlIAorICogbWFyc2hhbGxlZCB0byBhbiBYTUwgcmVwcmVzZW50YXRpb24gYW5kIHNpZ25lZCwgYnkgaW52b2tpbmcgdGhlIAorICoge0BsaW5rIFhNTFNpZ25hdHVyZSNzaWduIHNpZ259IG1ldGhvZCBvZiB0aGUgCisgKiB7QGxpbmsgWE1MU2lnbmF0dXJlfSBvYmplY3QgYW5kIHBhc3NpbmcgaXQgYSBtZWNoYW5pc20tc3BlY2lmaWMgCisgKiB7QGxpbmsgWE1MU2lnbkNvbnRleHR9IG9iamVjdCBjb250YWluaW5nIHRoZSBzaWduaW5nIGtleSBhbmQgCisgKiBtYXJzaGFsbGluZyBwYXJhbWV0ZXJzIChzZWUge0BsaW5rIERPTVNpZ25Db250ZXh0fSkuCisgKiBGb3IgZXhhbXBsZTogCisgKgorICogPHByZT4KKyAqICAgIERPTVNpZ25Db250ZXh0IGNvbnRleHQgPSBuZXcgRE9NU2lnbkNvbnRleHQocHJpdmF0ZUtleSwgZG9jdW1lbnQpOworICogICAgc2lnbmF0dXJlLnNpZ24oY29udGV4dCk7CisgKiA8L3ByZT4KKyAqCisgKiA8Yj5Db25jdXJyZW50IEFjY2VzczwvYj4KKyAqIDxwPlRoZSBzdGF0aWMgbWV0aG9kcyBvZiB0aGlzIGNsYXNzIGFyZSBndWFyYW50ZWVkIHRvIGJlIHRocmVhZC1zYWZlLiAKKyAqIE11bHRpcGxlIHRocmVhZHMgbWF5IGNvbmN1cnJlbnRseSBpbnZva2UgdGhlIHN0YXRpYyBtZXRob2RzIGRlZmluZWQgaW4gdGhpcyAKKyAqIGNsYXNzIHdpdGggbm8gaWxsIGVmZmVjdHMuIAorICoKKyAqIDxwPkhvd2V2ZXIsIHRoaXMgaXMgbm90IHRydWUgZm9yIHRoZSBub24tc3RhdGljIG1ldGhvZHMgZGVmaW5lZCBieSB0aGlzIAorICogY2xhc3MuIFVubGVzcyBvdGhlcndpc2UgZG9jdW1lbnRlZCBieSBhIHNwZWNpZmljIHByb3ZpZGVyLCB0aHJlYWRzIHRoYXQgCisgKiBuZWVkIHRvIGFjY2VzcyBhIHNpbmdsZSA8Y29kZT5YTUxTaWduYXR1cmVGYWN0b3J5PC9jb2RlPiBpbnN0YW5jZSAKKyAqIGNvbmN1cnJlbnRseSBzaG91bGQgc3luY2hyb25pemUgYW1vbmdzdCB0aGVtc2VsdmVzIGFuZCBwcm92aWRlIHRoZSAKKyAqIG5lY2Vzc2FyeSBsb2NraW5nLiBNdWx0aXBsZSB0aHJlYWRzIGVhY2ggbWFuaXB1bGF0aW5nIGEgZGlmZmVyZW50IAorICogPGNvZGU+WE1MU2lnbmF0dXJlRmFjdG9yeTwvY29kZT4gaW5zdGFuY2UgbmVlZCBub3Qgc3luY2hyb25pemUuIAorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgSlNSIDEwNSBFeHBlcnQgR3JvdXAKKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIFhNTFNpZ25hdHVyZUZhY3RvcnkgeworCisgICAgcHJpdmF0ZSBTdHJpbmcgbWVjaGFuaXNtVHlwZTsKKyAgICBwcml2YXRlIFByb3ZpZGVyIHByb3ZpZGVyOworCisgICAgLyoqCisgICAgICogRGVmYXVsdCBjb25zdHJ1Y3RvciwgZm9yIGludm9jYXRpb24gYnkgc3ViY2xhc3Nlcy4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgWE1MU2lnbmF0dXJlRmFjdG9yeSgpIHt9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGFuIDxjb2RlPlhNTFNpZ25hdHVyZUZhY3Rvcnk8L2NvZGU+IHRoYXQgc3VwcG9ydHMgdGhlCisgICAgICogc3BlY2lmaWVkIFhNTCBwcm9jZXNzaW5nIG1lY2hhbmlzbSBhbmQgcmVwcmVzZW50YXRpb24gdHlwZSAoZXg6ICJET00iKS4KKyAgICAgKgorICAgICAqIDxwPlRoaXMgbWV0aG9kIHVzZXMgdGhlIHN0YW5kYXJkIEpDQSBwcm92aWRlciBsb29rdXAgbWVjaGFuaXNtIHRvCisgICAgICogbG9jYXRlIGFuZCBpbnN0YW50aWF0ZSBhbiA8Y29kZT5YTUxTaWduYXR1cmVGYWN0b3J5PC9jb2RlPiAKKyAgICAgKiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGVzaXJlZCBtZWNoYW5pc20gdHlwZS4gSXQgdHJhdmVyc2VzIHRoZSBsaXN0IG9mIAorICAgICAqIHJlZ2lzdGVyZWQgc2VjdXJpdHkgPGNvZGU+UHJvdmlkZXI8L2NvZGU+cywgc3RhcnRpbmcgd2l0aCB0aGUgbW9zdCAKKyAgICAgKiBwcmVmZXJyZWQgPGNvZGU+UHJvdmlkZXI8L2NvZGU+LiAgQSBuZXcgPGNvZGU+WE1MU2lnbmF0dXJlRmFjdG9yeTwvY29kZT4gCisgICAgICogb2JqZWN0IGZyb20gdGhlIGZpcnN0IDxjb2RlPlByb3ZpZGVyPC9jb2RlPiB0aGF0IHN1cHBvcnRzIHRoZSBzcGVjaWZpZWQgCisgICAgICogbWVjaGFuaXNtIGlzIHJldHVybmVkLiAKKyAgICAgKgorICAgICAqIDxwPk5vdGUgdGhhdCB0aGUgbGlzdCBvZiByZWdpc3RlcmVkIHByb3ZpZGVycyBtYXkgYmUgcmV0cmlldmVkIHZpYSAKKyAgICAgKiB0aGUge0BsaW5rIFNlY3VyaXR5I2dldFByb3ZpZGVycygpIFNlY3VyaXR5LmdldFByb3ZpZGVycygpfSBtZXRob2QuIAorICAgICAqCisgICAgICogQHBhcmFtIG1lY2hhbmlzbVR5cGUgdGhlIHR5cGUgb2YgdGhlIFhNTCBwcm9jZXNzaW5nIG1lY2hhbmlzbSBhbmQKKyAgICAgKiAgICByZXByZXNlbnRhdGlvbi4gU2VlIHRoZSA8YSAKKyAgICAgKiAgICBocmVmPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwjU2VydmljZSBQcm92aWRlciI+U2VydmljZSAKKyAgICAgKiAgICBQcm92aWRlcnM8L2E+IHNlY3Rpb24gb2YgdGhlIEFQSSBvdmVydmlldyBmb3IgYSBsaXN0IG9mIHN0YW5kYXJkIAorICAgICAqICAgIG1lY2hhbmlzbSB0eXBlcy4KKyAgICAgKiBAcmV0dXJuIGEgbmV3IDxjb2RlPlhNTFNpZ25hdHVyZUZhY3Rvcnk8L2NvZGU+CisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5tZWNoYW5pc21UeXBlPC9jb2RlPiBpcyAKKyAgICAgKiAgICA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEB0aHJvd3MgTm9TdWNoTWVjaGFuaXNtRXhjZXB0aW9uIGlmIG5vIDxjb2RlPlByb3ZpZGVyPC9jb2RlPiBzdXBwb3J0cyBhbiAKKyAgICAgKiAgICA8Y29kZT5YTUxTaWduYXR1cmVGYWN0b3J5PC9jb2RlPiBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIHNwZWNpZmllZCAKKyAgICAgKiAgICBtZWNoYW5pc20KKyAgICAgKiBAc2VlIFByb3ZpZGVyCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBYTUxTaWduYXR1cmVGYWN0b3J5IGdldEluc3RhbmNlKFN0cmluZyBtZWNoYW5pc21UeXBlKSB7CisJaWYgKG1lY2hhbmlzbVR5cGUgPT0gbnVsbCkgeworCSAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oIm1lY2hhbmlzbVR5cGUgY2Fubm90IGJlIG51bGwiKTsKKwl9CisKKwlyZXR1cm4gZmluZEluc3RhbmNlKG1lY2hhbmlzbVR5cGUsIG51bGwpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIFhNTFNpZ25hdHVyZUZhY3RvcnkgZmluZEluc3RhbmNlKFN0cmluZyBtZWNoYW5pc21UeXBlLAorCVByb3ZpZGVyIHByb3ZpZGVyKSB7CisKKwlPYmplY3RbXSBvYmpzID0gbnVsbDsKKwl0cnkgeworCSAgICBvYmpzID0gKE9iamVjdFtdKSBYTUxEU2lnU2VjdXJpdHkuZ2V0SW1wbAorCQkobWVjaGFuaXNtVHlwZSwgIlhNTFNpZ25hdHVyZUZhY3RvcnkiLCBwcm92aWRlcik7CisJfSBjYXRjaCAoTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIG5zYWUpIHsKKwkgICAgdGhyb3cgbmV3IE5vU3VjaE1lY2hhbmlzbUV4Y2VwdGlvbgorCQkoIkNhbm5vdCBmaW5kICIgKyBtZWNoYW5pc21UeXBlICsgIiBtZWNoYW5pc20gdHlwZSIsIG5zYWUpOworCX0KKworCVhNTFNpZ25hdHVyZUZhY3RvcnkgZmFjdG9yeSA9IChYTUxTaWduYXR1cmVGYWN0b3J5KSBvYmpzWzBdOworCWZhY3RvcnkubWVjaGFuaXNtVHlwZSA9IG1lY2hhbmlzbVR5cGU7CisJZmFjdG9yeS5wcm92aWRlciA9IChQcm92aWRlcikgb2Jqc1sxXTsKKwlyZXR1cm4gZmFjdG9yeTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGFuIDxjb2RlPlhNTFNpZ25hdHVyZUZhY3Rvcnk8L2NvZGU+IHRoYXQgc3VwcG9ydHMgdGhlCisgICAgICogcmVxdWVzdGVkIFhNTCBwcm9jZXNzaW5nIG1lY2hhbmlzbSBhbmQgcmVwcmVzZW50YXRpb24gdHlwZSAoZXg6ICJET00iKSwKKyAgICAgKiBhcyBzdXBwbGllZCBieSB0aGUgc3BlY2lmaWVkIHByb3ZpZGVyLiBOb3RlIHRoYXQgdGhlIHNwZWNpZmllZCAKKyAgICAgKiA8Y29kZT5Qcm92aWRlcjwvY29kZT4gb2JqZWN0IGRvZXMgbm90IGhhdmUgdG8gYmUgcmVnaXN0ZXJlZCBpbiB0aGUgCisgICAgICogcHJvdmlkZXIgbGlzdC4gCisgICAgICoKKyAgICAgKiBAcGFyYW0gbWVjaGFuaXNtVHlwZSB0aGUgdHlwZSBvZiB0aGUgWE1MIHByb2Nlc3NpbmcgbWVjaGFuaXNtIGFuZAorICAgICAqICAgIHJlcHJlc2VudGF0aW9uLiBTZWUgdGhlIDxhIAorICAgICAqICAgIGhyZWY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCNTZXJ2aWNlIFByb3ZpZGVyIj5TZXJ2aWNlIAorICAgICAqICAgIFByb3ZpZGVyczwvYT4gc2VjdGlvbiBvZiB0aGUgQVBJIG92ZXJ2aWV3IGZvciBhIGxpc3Qgb2Ygc3RhbmRhcmQgCisgICAgICogICAgbWVjaGFuaXNtIHR5cGVzLgorICAgICAqIEBwYXJhbSBwcm92aWRlciB0aGUgPGNvZGU+UHJvdmlkZXI8L2NvZGU+IG9iamVjdAorICAgICAqIEByZXR1cm4gYSBuZXcgPGNvZGU+WE1MU2lnbmF0dXJlRmFjdG9yeTwvY29kZT4KKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPnByb3ZpZGVyPC9jb2RlPiBvciAKKyAgICAgKiAgICA8Y29kZT5tZWNoYW5pc21UeXBlPC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEB0aHJvd3MgTm9TdWNoTWVjaGFuaXNtRXhjZXB0aW9uIGlmIGFuIDxjb2RlPlhNTFNpZ25hdHVyZUZhY3Rvcnk8L2NvZGU+IAorICAgICAqICAgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgbWVjaGFuaXNtIGlzIG5vdCBhdmFpbGFibGUgCisgICAgICogICBmcm9tIHRoZSBzcGVjaWZpZWQgPGNvZGU+UHJvdmlkZXI8L2NvZGU+IG9iamVjdAorICAgICAqIEBzZWUgUHJvdmlkZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFhNTFNpZ25hdHVyZUZhY3RvcnkgZ2V0SW5zdGFuY2UoU3RyaW5nIG1lY2hhbmlzbVR5cGUsCisJUHJvdmlkZXIgcHJvdmlkZXIpIHsgCisJaWYgKG1lY2hhbmlzbVR5cGUgPT0gbnVsbCkgeworCSAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oIm1lY2hhbmlzbVR5cGUgY2Fubm90IGJlIG51bGwiKTsKKwl9IGVsc2UgaWYgKHByb3ZpZGVyID09IG51bGwpIHsKKwkgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJwcm92aWRlciBjYW5ub3QgYmUgbnVsbCIpOworCX0KKworCXJldHVybiBmaW5kSW5zdGFuY2UobWVjaGFuaXNtVHlwZSwgcHJvdmlkZXIpOworICAgIH0gICAgCisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGFuIDxjb2RlPlhNTFNpZ25hdHVyZUZhY3Rvcnk8L2NvZGU+IHRoYXQgc3VwcG9ydHMgdGhlCisgICAgICogcmVxdWVzdGVkIFhNTCBwcm9jZXNzaW5nIG1lY2hhbmlzbSBhbmQgcmVwcmVzZW50YXRpb24gdHlwZSAoZXg6ICJET00iKSwKKyAgICAgKiBhcyBzdXBwbGllZCBieSB0aGUgc3BlY2lmaWVkIHByb3ZpZGVyLiBUaGUgc3BlY2lmaWVkIHByb3ZpZGVyIG11c3QgYmUgCisgICAgICogcmVnaXN0ZXJlZCBpbiB0aGUgc2VjdXJpdHkgcHJvdmlkZXIgbGlzdC4gCisgICAgICoKKyAgICAgKiA8cD5Ob3RlIHRoYXQgdGhlIGxpc3Qgb2YgcmVnaXN0ZXJlZCBwcm92aWRlcnMgbWF5IGJlIHJldHJpZXZlZCB2aWEgCisgICAgICogdGhlIHtAbGluayBTZWN1cml0eSNnZXRQcm92aWRlcnMoKSBTZWN1cml0eS5nZXRQcm92aWRlcnMoKX0gbWV0aG9kLgorICAgICAqCisgICAgICogQHBhcmFtIG1lY2hhbmlzbVR5cGUgdGhlIHR5cGUgb2YgdGhlIFhNTCBwcm9jZXNzaW5nIG1lY2hhbmlzbSBhbmQKKyAgICAgKiAgICByZXByZXNlbnRhdGlvbi4gU2VlIHRoZSA8YSAKKyAgICAgKiAgICBocmVmPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwjU2VydmljZSBQcm92aWRlciI+U2VydmljZSAKKyAgICAgKiAgICBQcm92aWRlcnM8L2E+IHNlY3Rpb24gb2YgdGhlIEFQSSBvdmVydmlldyBmb3IgYSBsaXN0IG9mIHN0YW5kYXJkIAorICAgICAqICAgIG1lY2hhbmlzbSB0eXBlcy4KKyAgICAgKiBAcGFyYW0gcHJvdmlkZXIgdGhlIHN0cmluZyBuYW1lIG9mIHRoZSBwcm92aWRlcgorICAgICAqIEByZXR1cm4gYSBuZXcgPGNvZGU+WE1MU2lnbmF0dXJlRmFjdG9yeTwvY29kZT4KKyAgICAgKiBAdGhyb3dzIE5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIGlmIHRoZSBzcGVjaWZpZWQgcHJvdmlkZXIgaXMgbm90IAorICAgICAqICAgIHJlZ2lzdGVyZWQgaW4gdGhlIHNlY3VyaXR5IHByb3ZpZGVyIGxpc3QKKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPnByb3ZpZGVyPC9jb2RlPiBvciAKKyAgICAgKiAgICA8Y29kZT5tZWNoYW5pc21UeXBlPC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEB0aHJvd3MgTm9TdWNoTWVjaGFuaXNtRXhjZXB0aW9uIGlmIGFuIDxjb2RlPlhNTFNpZ25hdHVyZUZhY3Rvcnk8L2NvZGU+IAorICAgICAqICAgIGltcGxlbWVudGF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIG1lY2hhbmlzbSBpcyBub3QgCisgICAgICogICAgYXZhaWxhYmxlIGZyb20gdGhlIHNwZWNpZmllZCBwcm92aWRlcgorICAgICAqIEBzZWUgUHJvdmlkZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFhNTFNpZ25hdHVyZUZhY3RvcnkgZ2V0SW5zdGFuY2UoU3RyaW5nIG1lY2hhbmlzbVR5cGUsCisJU3RyaW5nIHByb3ZpZGVyKSB0aHJvd3MgTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24geworCWlmIChtZWNoYW5pc21UeXBlID09IG51bGwpIHsKKwkgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJtZWNoYW5pc21UeXBlIGNhbm5vdCBiZSBudWxsIik7CisJfSBlbHNlIGlmIChwcm92aWRlciA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigicHJvdmlkZXIgY2Fubm90IGJlIG51bGwiKTsKKwl9CisKKwlQcm92aWRlciBwcm92ID0gU2VjdXJpdHkuZ2V0UHJvdmlkZXIocHJvdmlkZXIpOworCWlmIChwcm92ID09IG51bGwpIHsKKwkgICAgdGhyb3cgbmV3IE5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uKCJjYW5ub3QgZmluZCBwcm92aWRlciBuYW1lZCAiCisJCSsgcHJvdmlkZXIpOworCX0KKworCXJldHVybiBmaW5kSW5zdGFuY2UobWVjaGFuaXNtVHlwZSwgcHJvdik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhbiA8Y29kZT5YTUxTaWduYXR1cmVGYWN0b3J5PC9jb2RlPiB0aGF0IHN1cHBvcnRzIHRoZQorICAgICAqIGRlZmF1bHQgWE1MIHByb2Nlc3NpbmcgbWVjaGFuaXNtIGFuZCByZXByZXNlbnRhdGlvbiB0eXBlICgiRE9NIikuCisgICAgICoKKyAgICAgKiA8cD5UaGlzIG1ldGhvZCB1c2VzIHRoZSBzdGFuZGFyZCBKQ0EgcHJvdmlkZXIgbG9va3VwIG1lY2hhbmlzbSB0bworICAgICAqIGxvY2F0ZSBhbmQgaW5zdGFudGlhdGUgYW4gPGNvZGU+WE1MU2lnbmF0dXJlRmFjdG9yeTwvY29kZT4gCisgICAgICogaW1wbGVtZW50YXRpb24gb2YgdGhlIGRlZmF1bHQgbWVjaGFuaXNtIHR5cGUuIEl0IHRyYXZlcnNlcyB0aGUgbGlzdCBvZiAKKyAgICAgKiByZWdpc3RlcmVkIHNlY3VyaXR5IDxjb2RlPlByb3ZpZGVyPC9jb2RlPnMsIHN0YXJ0aW5nIHdpdGggdGhlIG1vc3QgCisgICAgICogcHJlZmVycmVkIDxjb2RlPlByb3ZpZGVyPC9jb2RlPi4gIEEgbmV3IDxjb2RlPlhNTFNpZ25hdHVyZUZhY3Rvcnk8L2NvZGU+IAorICAgICAqIG9iamVjdCBmcm9tIHRoZSBmaXJzdCA8Y29kZT5Qcm92aWRlcjwvY29kZT4gdGhhdCBzdXBwb3J0cyB0aGUgRE9NIAorICAgICAqIG1lY2hhbmlzbSBpcyByZXR1cm5lZC4gCisgICAgICoKKyAgICAgKiA8cD5Ob3RlIHRoYXQgdGhlIGxpc3Qgb2YgcmVnaXN0ZXJlZCBwcm92aWRlcnMgbWF5IGJlIHJldHJpZXZlZCB2aWEgCisgICAgICogdGhlIHtAbGluayBTZWN1cml0eSNnZXRQcm92aWRlcnMoKSBTZWN1cml0eS5nZXRQcm92aWRlcnMoKX0gbWV0aG9kLiAKKyAgICAgKgorICAgICAqIEByZXR1cm4gYSBuZXcgPGNvZGU+WE1MU2lnbmF0dXJlRmFjdG9yeTwvY29kZT4KKyAgICAgKiBAdGhyb3dzIE5vU3VjaE1lY2hhbmlzbUV4Y2VwdGlvbiBpZiBubyA8Y29kZT5Qcm92aWRlcjwvY29kZT4gc3VwcG9ydHMgYW4gCisgICAgICogICAgPGNvZGU+WE1MU2lnbmF0dXJlRmFjdG9yeTwvY29kZT4gaW1wbGVtZW50YXRpb24gZm9yIHRoZSBET00gCisgICAgICogICAgbWVjaGFuaXNtCisgICAgICogQHNlZSBQcm92aWRlcgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgWE1MU2lnbmF0dXJlRmFjdG9yeSBnZXRJbnN0YW5jZSgpIHsKKwlyZXR1cm4gZ2V0SW5zdGFuY2UoIkRPTSIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHR5cGUgb2YgdGhlIFhNTCBwcm9jZXNzaW5nIG1lY2hhbmlzbSBhbmQgcmVwcmVzZW50YXRpb24KKyAgICAgKiBzdXBwb3J0ZWQgYnkgdGhpcyA8Y29kZT5YTUxTaWduYXR1cmVGYWN0b3J5PC9jb2RlPiAoZXg6ICJET00iKS4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIFhNTCBwcm9jZXNzaW5nIG1lY2hhbmlzbSB0eXBlIHN1cHBvcnRlZCBieSB0aGlzCisgICAgICogICAgPGNvZGU+WE1MU2lnbmF0dXJlRmFjdG9yeTwvY29kZT4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldE1lY2hhbmlzbVR5cGUoKSB7CisgICAgICAgIHJldHVybiBtZWNoYW5pc21UeXBlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHByb3ZpZGVyIG9mIHRoaXMgPGNvZGU+WE1MU2lnbmF0dXJlRmFjdG9yeTwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBwcm92aWRlciBvZiB0aGlzIDxjb2RlPlhNTFNpZ25hdHVyZUZhY3Rvcnk8L2NvZGU+CisgICAgICovCisgICAgcHVibGljIGZpbmFsIFByb3ZpZGVyIGdldFByb3ZpZGVyKCkgeworCXJldHVybiBwcm92aWRlcjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGFuIDxjb2RlPlhNTFNpZ25hdHVyZTwvY29kZT4gYW5kIGluaXRpYWxpemVzIGl0IHdpdGggdGhlIGNvbnRlbnRzCisgICAgICogb2YgdGhlIHNwZWNpZmllZCA8Y29kZT5TaWduZWRJbmZvPC9jb2RlPiBhbmQgPGNvZGU+S2V5SW5mbzwvY29kZT4gCisgICAgICogb2JqZWN0cy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzaSB0aGUgc2lnbmVkIGluZm8KKyAgICAgKiBAcGFyYW0ga2kgdGhlIGtleSBpbmZvIChtYXkgYmUgPGNvZGU+bnVsbDwvY29kZT4pCisgICAgICogQHJldHVybiBhbiA8Y29kZT5YTUxTaWduYXR1cmU8L2NvZGU+CisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5zaTwvY29kZT4gaXMgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgWE1MU2lnbmF0dXJlIG5ld1hNTFNpZ25hdHVyZShTaWduZWRJbmZvIHNpLCBLZXlJbmZvIGtpKTsKKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYW4gPGNvZGU+WE1MU2lnbmF0dXJlPC9jb2RlPiBhbmQgaW5pdGlhbGl6ZXMgaXQgd2l0aCB0aGUKKyAgICAgKiBzcGVjaWZpZWQgcGFyYW1ldGVycy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzaSB0aGUgc2lnbmVkIGluZm8KKyAgICAgKiBAcGFyYW0ga2kgdGhlIGtleSBpbmZvIChtYXkgYmUgPGNvZGU+bnVsbDwvY29kZT4pCisgICAgICogQHBhcmFtIG9iamVjdHMgYSBsaXN0IG9mIHtAbGluayBYTUxPYmplY3R9cyAobWF5IGJlIGVtcHR5IG9yCisgICAgICogICAgPGNvZGU+bnVsbDwvY29kZT4pCisgICAgICogQHBhcmFtIGlkIHRoZSBJZCAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+KQorICAgICAqIEBwYXJhbSBzaWduYXR1cmVWYWx1ZUlkIHRoZSBTaWduYXR1cmVWYWx1ZSBJZCAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+KQorICAgICAqIEByZXR1cm4gYW4gPGNvZGU+WE1MU2lnbmF0dXJlPC9jb2RlPgorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+c2k8L2NvZGU+IGlzIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogQHRocm93cyBDbGFzc0Nhc3RFeGNlcHRpb24gaWYgYW55IG9mIHRoZSA8Y29kZT5vYmplY3RzPC9jb2RlPiBhcmUgbm90IG9mCisgICAgICogICAgdHlwZSA8Y29kZT5YTUxPYmplY3Q8L2NvZGU+IAorICAgICAqLyAKKyAgICBwdWJsaWMgYWJzdHJhY3QgWE1MU2lnbmF0dXJlIG5ld1hNTFNpZ25hdHVyZShTaWduZWRJbmZvIHNpLCBLZXlJbmZvIGtpLAorCUxpc3Qgb2JqZWN0cywgU3RyaW5nIGlkLCBTdHJpbmcgc2lnbmF0dXJlVmFsdWVJZCk7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+UmVmZXJlbmNlPC9jb2RlPiB3aXRoIHRoZSBzcGVjaWZpZWQgVVJJIGFuZCBkaWdlc3QKKyAgICAgKiBtZXRob2QuCisgICAgICoKKyAgICAgKiBAcGFyYW0gdXJpIHRoZSByZWZlcmVuY2UgVVJJIChtYXkgYmUgPGNvZGU+bnVsbDwvY29kZT4pCisgICAgICogQHBhcmFtIGRtIHRoZSBkaWdlc3QgbWV0aG9kCisgICAgICogQHJldHVybiBhIDxjb2RlPlJlZmVyZW5jZTwvY29kZT4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiA8Y29kZT51cmk8L2NvZGU+IGlzIG5vdCBSRkMgMjM5NgorICAgICAqICAgIGNvbXBsaWFudAorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+ZG08L2NvZGU+IGlzIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IFJlZmVyZW5jZSBuZXdSZWZlcmVuY2UoU3RyaW5nIHVyaSwgRGlnZXN0TWV0aG9kIGRtKTsKKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSA8Y29kZT5SZWZlcmVuY2U8L2NvZGU+IHdpdGggdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzLgorICAgICAqCisgICAgICogQHBhcmFtIHVyaSB0aGUgcmVmZXJlbmNlIFVSSSAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+KQorICAgICAqIEBwYXJhbSBkbSB0aGUgZGlnZXN0IG1ldGhvZAorICAgICAqIEBwYXJhbSB0cmFuc2Zvcm1zIGEgbGlzdCBvZiB7QGxpbmsgVHJhbnNmb3JtfXMuIFRoZSBsaXN0IGlzIGRlZmVuc2l2ZWx5IAorICAgICAqICAgIGNvcGllZCB0byBwcm90ZWN0IGFnYWluc3Qgc3Vic2VxdWVudCBtb2RpZmljYXRpb24uIE1heSBiZSAKKyAgICAgKiAgICA8Y29kZT5udWxsPC9jb2RlPiBvciBlbXB0eS4KKyAgICAgKiBAcGFyYW0gdHlwZSB0aGUgcmVmZXJlbmNlIHR5cGUsIGFzIGEgVVJJIChtYXkgYmUgPGNvZGU+bnVsbDwvY29kZT4pCisgICAgICogQHBhcmFtIGlkIHRoZSByZWZlcmVuY2UgSUQgKG1heSBiZSA8Y29kZT5udWxsPC9jb2RlPikKKyAgICAgKiBAcmV0dXJuIGEgPGNvZGU+UmVmZXJlbmNlPC9jb2RlPgorICAgICAqIEB0aHJvd3MgQ2xhc3NDYXN0RXhjZXB0aW9uIGlmIGFueSBvZiB0aGUgPGNvZGU+dHJhbnNmb3JtczwvY29kZT4gYXJlIAorICAgICAqICAgIG5vdCBvZiB0eXBlIDxjb2RlPlRyYW5zZm9ybTwvY29kZT4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiA8Y29kZT51cmk8L2NvZGU+IGlzIG5vdCBSRkMgMjM5NgorICAgICAqICAgIGNvbXBsaWFudAorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+ZG08L2NvZGU+IGlzIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IFJlZmVyZW5jZSBuZXdSZWZlcmVuY2UoU3RyaW5nIHVyaSwgRGlnZXN0TWV0aG9kIGRtLCAKKwlMaXN0IHRyYW5zZm9ybXMsIFN0cmluZyB0eXBlLCBTdHJpbmcgaWQpOworCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIDxjb2RlPlJlZmVyZW5jZTwvY29kZT4gd2l0aCB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMgYW5kCisgICAgICogcHJlLWNhbGN1bGF0ZWQgZGlnZXN0IHZhbHVlLiAKKyAgICAgKgorICAgICAqIDxwPlRoaXMgbWV0aG9kIGlzIHVzZWZ1bCB3aGVuIHRoZSBkaWdlc3QgdmFsdWUgb2YgYSAKKyAgICAgKiA8Y29kZT5SZWZlcmVuY2U8L2NvZGU+IGhhcyBiZWVuIHByZXZpb3VzbHkgY29tcHV0ZWQuIFNlZSBmb3IgZXhhbXBsZSwKKyAgICAgKiB0aGUgCisgICAgICogPGEgaHJlZj0iaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9jb21taXR0ZWVzL3RjX2hvbWUucGhwP3dnX2FiYnJldj1kc3MiPgorICAgICAqIE9BU0lTLURTUyAoRGlnaXRhbCBTaWduYXR1cmUgU2VydmljZXMpPC9hPiBzcGVjaWZpY2F0aW9uLgorICAgICAqIAorICAgICAqIEBwYXJhbSB1cmkgdGhlIHJlZmVyZW5jZSBVUkkgKG1heSBiZSA8Y29kZT5udWxsPC9jb2RlPikKKyAgICAgKiBAcGFyYW0gZG0gdGhlIGRpZ2VzdCBtZXRob2QKKyAgICAgKiBAcGFyYW0gdHJhbnNmb3JtcyBhIGxpc3Qgb2Yge0BsaW5rIFRyYW5zZm9ybX1zLiBUaGUgbGlzdCBpcyBkZWZlbnNpdmVseSAKKyAgICAgKiAgICBjb3BpZWQgdG8gcHJvdGVjdCBhZ2FpbnN0IHN1YnNlcXVlbnQgbW9kaWZpY2F0aW9uLiBNYXkgYmUgCisgICAgICogICAgPGNvZGU+bnVsbDwvY29kZT4gb3IgZW1wdHkuCisgICAgICogQHBhcmFtIHR5cGUgdGhlIHJlZmVyZW5jZSB0eXBlLCBhcyBhIFVSSSAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+KQorICAgICAqIEBwYXJhbSBpZCB0aGUgcmVmZXJlbmNlIElEIChtYXkgYmUgPGNvZGU+bnVsbDwvY29kZT4pCisgICAgICogQHBhcmFtIGRpZ2VzdFZhbHVlIHRoZSBkaWdlc3QgdmFsdWUuIFRoZSBhcnJheSBpcyBjbG9uZWQgdG8gcHJvdGVjdAorICAgICAqICAgIGFnYWluc3Qgc3Vic2VxdWVudCBtb2RpZmljYXRpb24uCisgICAgICogQHJldHVybiBhIDxjb2RlPlJlZmVyZW5jZTwvY29kZT4KKyAgICAgKiBAdGhyb3dzIENsYXNzQ2FzdEV4Y2VwdGlvbiBpZiBhbnkgb2YgdGhlIDxjb2RlPnRyYW5zZm9ybXM8L2NvZGU+IGFyZSAKKyAgICAgKiAgICBub3Qgb2YgdHlwZSA8Y29kZT5UcmFuc2Zvcm08L2NvZGU+CisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgPGNvZGU+dXJpPC9jb2RlPiBpcyBub3QgUkZDIDIzOTYKKyAgICAgKiAgICBjb21wbGlhbnQKKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPmRtPC9jb2RlPiBvciAKKyAgICAgKiAgICA8Y29kZT5kaWdlc3RWYWx1ZTwvY29kZT4gaXMgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgUmVmZXJlbmNlIG5ld1JlZmVyZW5jZShTdHJpbmcgdXJpLCBEaWdlc3RNZXRob2QgZG0sIAorCUxpc3QgdHJhbnNmb3JtcywgU3RyaW5nIHR5cGUsIFN0cmluZyBpZCwgYnl0ZVtdIGRpZ2VzdFZhbHVlKTsKKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSA8Y29kZT5SZWZlcmVuY2U8L2NvZGU+IHdpdGggdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzLgorICAgICAqCisgICAgICogPHA+VGhpcyBtZXRob2QgaXMgdXNlZnVsIHdoZW4gYSBsaXN0IG9mIHRyYW5zZm9ybXMgaGF2ZSBhbHJlYWR5IGJlZW4KKyAgICAgKiBhcHBsaWVkIHRvIHRoZSA8Y29kZT5SZWZlcmVuY2U8L2NvZGU+LiBTZWUgZm9yIGV4YW1wbGUsCisgICAgICogdGhlIAorICAgICAqIDxhIGhyZWY9Imh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvY29tbWl0dGVlcy90Y19ob21lLnBocD93Z19hYmJyZXY9ZHNzIj4KKyAgICAgKiBPQVNJUy1EU1MgKERpZ2l0YWwgU2lnbmF0dXJlIFNlcnZpY2VzKTwvYT4gc3BlY2lmaWNhdGlvbi4KKyAgICAgKgorICAgICAqIDxwPldoZW4gYW4gPGNvZGU+WE1MU2lnbmF0dXJlPC9jb2RlPiBjb250YWluaW5nIHRoaXMgcmVmZXJlbmNlIGlzIAorICAgICAqIGdlbmVyYXRlZCwgdGhlIHNwZWNpZmllZCA8Y29kZT50cmFuc2Zvcm1zPC9jb2RlPiAoaWYgbm9uLW51bGwpIGFyZSAKKyAgICAgKiBhcHBsaWVkIHRvIHRoZSBzcGVjaWZpZWQgPGNvZGU+cmVzdWx0PC9jb2RlPi4gVGhlIAorICAgICAqIDxjb2RlPlRyYW5zZm9ybXM8L2NvZGU+IGVsZW1lbnQgb2YgdGhlIHJlc3VsdGluZyA8Y29kZT5SZWZlcmVuY2U8L2NvZGU+IAorICAgICAqIGVsZW1lbnQgaXMgc2V0IHRvIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSAKKyAgICAgKiA8Y29kZT5hcHBsaWVkVHJhbnNmb3JtczwvY29kZT4gYW5kIDxjb2RlPnRyYW5zZm9ybXM8L2NvZGU+LgorICAgICAqIAorICAgICAqIEBwYXJhbSB1cmkgdGhlIHJlZmVyZW5jZSBVUkkgKG1heSBiZSA8Y29kZT5udWxsPC9jb2RlPikKKyAgICAgKiBAcGFyYW0gZG0gdGhlIGRpZ2VzdCBtZXRob2QKKyAgICAgKiBAcGFyYW0gYXBwbGllZFRyYW5zZm9ybXMgYSBsaXN0IG9mIHtAbGluayBUcmFuc2Zvcm19cyB0aGF0IGhhdmUgCisgICAgICogICAgYWxyZWFkeSBiZWVuIGFwcGxpZWQuIFRoZSBsaXN0IGlzIGRlZmVuc2l2ZWx5IAorICAgICAqICAgIGNvcGllZCB0byBwcm90ZWN0IGFnYWluc3Qgc3Vic2VxdWVudCBtb2RpZmljYXRpb24uIFRoZSBsaXN0IG11c3QgCisgICAgICogICAgY29udGFpbiBhdCBsZWFzdCBvbmUgZW50cnkuCisgICAgICogQHBhcmFtIHJlc3VsdCB0aGUgcmVzdWx0IG9mIHByb2Nlc3NpbmcgdGhlIHNlcXVlbmNlIG9mIAorICAgICAqICAgIDxjb2RlPmFwcGxpZWRUcmFuc2Zvcm1zPC9jb2RlPgorICAgICAqIEBwYXJhbSB0cmFuc2Zvcm1zIGEgbGlzdCBvZiB7QGxpbmsgVHJhbnNmb3JtfXMgdGhhdCBhcmUgdG8gYmUgYXBwbGllZAorICAgICAqICAgIHdoZW4gZ2VuZXJhdGluZyB0aGUgc2lnbmF0dXJlLiBUaGUgbGlzdCBpcyBkZWZlbnNpdmVseSBjb3BpZWQgdG8gCisgICAgICogICAgcHJvdGVjdCBhZ2FpbnN0IHN1YnNlcXVlbnQgbW9kaWZpY2F0aW9uLiBNYXkgYmUgPGNvZGU+bnVsbDwvY29kZT4gCisgICAgICogICAgb3IgZW1wdHkuCisgICAgICogQHBhcmFtIHR5cGUgdGhlIHJlZmVyZW5jZSB0eXBlLCBhcyBhIFVSSSAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+KQorICAgICAqIEBwYXJhbSBpZCB0aGUgcmVmZXJlbmNlIElEIChtYXkgYmUgPGNvZGU+bnVsbDwvY29kZT4pCisgICAgICogQHJldHVybiBhIDxjb2RlPlJlZmVyZW5jZTwvY29kZT4KKyAgICAgKiBAdGhyb3dzIENsYXNzQ2FzdEV4Y2VwdGlvbiBpZiBhbnkgb2YgdGhlIHRyYW5zZm9ybXMgKGluIGVpdGhlciBsaXN0KSAKKyAgICAgKiAgICBhcmUgbm90IG9mIHR5cGUgPGNvZGU+VHJhbnNmb3JtPC9jb2RlPgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIDxjb2RlPnVyaTwvY29kZT4gaXMgbm90IFJGQyAyMzk2CisgICAgICogICAgY29tcGxpYW50IG9yIDxjb2RlPmFwcGxpZWRUcmFuc2Zvcm1zPC9jb2RlPiBpcyBlbXB0eQorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+ZG08L2NvZGU+LCAKKyAgICAgKiAgICA8Y29kZT5hcHBsaWVkVHJhbnNmb3JtczwvY29kZT4gb3IgPGNvZGU+cmVzdWx0PC9jb2RlPiBpcyAKKyAgICAgKiAgICA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBSZWZlcmVuY2UgbmV3UmVmZXJlbmNlKFN0cmluZyB1cmksIERpZ2VzdE1ldGhvZCBkbSwgCisJTGlzdCBhcHBsaWVkVHJhbnNmb3JtcywgRGF0YSByZXN1bHQsIExpc3QgdHJhbnNmb3JtcywgU3RyaW5nIHR5cGUsIAorCVN0cmluZyBpZCk7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+U2lnbmVkSW5mbzwvY29kZT4gd2l0aCB0aGUgc3BlY2lmaWVkIGNhbm9uaWNhbGl6YXRpb24KKyAgICAgKiBhbmQgc2lnbmF0dXJlIG1ldGhvZHMsIGFuZCBsaXN0IG9mIG9uZSBvciBtb3JlIHJlZmVyZW5jZXMuIAorICAgICAqCisgICAgICogQHBhcmFtIGNtIHRoZSBjYW5vbmljYWxpemF0aW9uIG1ldGhvZAorICAgICAqIEBwYXJhbSBzbSB0aGUgc2lnbmF0dXJlIG1ldGhvZAorICAgICAqIEBwYXJhbSByZWZlcmVuY2VzIGEgbGlzdCBvZiBvbmUgb3IgbW9yZSB7QGxpbmsgUmVmZXJlbmNlfXMuIFRoZSBsaXN0IGlzCisgICAgICogICAgZGVmZW5zaXZlbHkgY29waWVkIHRvIHByb3RlY3QgYWdhaW5zdCBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbi4KKyAgICAgKiBAcmV0dXJuIGEgPGNvZGU+U2lnbmVkSW5mbzwvY29kZT4KKyAgICAgKiBAdGhyb3dzIENsYXNzQ2FzdEV4Y2VwdGlvbiBpZiBhbnkgb2YgdGhlIHJlZmVyZW5jZXMgYXJlIG5vdCBvZgorICAgICAqICAgIHR5cGUgPGNvZGU+UmVmZXJlbmNlPC9jb2RlPiAKKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiA8Y29kZT5yZWZlcmVuY2VzPC9jb2RlPiBpcyBlbXB0eQorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgYW55IG9mIHRoZSBwYXJhbWV0ZXJzCisgICAgICogICAgYXJlIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IFNpZ25lZEluZm8gbmV3U2lnbmVkSW5mbyhDYW5vbmljYWxpemF0aW9uTWV0aG9kIGNtLAorCVNpZ25hdHVyZU1ldGhvZCBzbSwgTGlzdCByZWZlcmVuY2VzKTsKKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSA8Y29kZT5TaWduZWRJbmZvPC9jb2RlPiB3aXRoIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVycy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjbSB0aGUgY2Fub25pY2FsaXphdGlvbiBtZXRob2QKKyAgICAgKiBAcGFyYW0gc20gdGhlIHNpZ25hdHVyZSBtZXRob2QKKyAgICAgKiBAcGFyYW0gcmVmZXJlbmNlcyBhIGxpc3Qgb2Ygb25lIG9yIG1vcmUge0BsaW5rIFJlZmVyZW5jZX1zLiBUaGUgbGlzdCBpcworICAgICAqICAgIGRlZmVuc2l2ZWx5IGNvcGllZCB0byBwcm90ZWN0IGFnYWluc3Qgc3Vic2VxdWVudCBtb2RpZmljYXRpb24uCisgICAgICogQHBhcmFtIGlkIHRoZSBpZCAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+KQorICAgICAqIEByZXR1cm4gYSA8Y29kZT5TaWduZWRJbmZvPC9jb2RlPgorICAgICAqIEB0aHJvd3MgQ2xhc3NDYXN0RXhjZXB0aW9uIGlmIGFueSBvZiB0aGUgcmVmZXJlbmNlcyBhcmUgbm90IG9mCisgICAgICogICAgdHlwZSA8Y29kZT5SZWZlcmVuY2U8L2NvZGU+IAorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIDxjb2RlPnJlZmVyZW5jZXM8L2NvZGU+IGlzIGVtcHR5CisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5jbTwvY29kZT4sIDxjb2RlPnNtPC9jb2RlPiwgb3IKKyAgICAgKiAgICA8Y29kZT5yZWZlcmVuY2VzPC9jb2RlPiBhcmUgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgU2lnbmVkSW5mbyBuZXdTaWduZWRJbmZvKENhbm9uaWNhbGl6YXRpb25NZXRob2QgY20sCisJU2lnbmF0dXJlTWV0aG9kIHNtLCBMaXN0IHJlZmVyZW5jZXMsIFN0cmluZyBpZCk7CisKKyAgICAvLyBPYmplY3QgZmFjdG9yeSBtZXRob2RzCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhbiA8Y29kZT5YTUxPYmplY3Q8L2NvZGU+IGZyb20gdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzLgorICAgICAqCisgICAgICogQHBhcmFtIGNvbnRlbnQgYSBsaXN0IG9mIHtAbGluayBYTUxTdHJ1Y3R1cmV9cy4gVGhlIGxpc3QKKyAgICAgKiAgICBpcyBkZWZlbnNpdmVseSBjb3BpZWQgdG8gcHJvdGVjdCBhZ2FpbnN0IHN1YnNlcXVlbnQgbW9kaWZpY2F0aW9uLgorICAgICAqICAgIE1heSBiZSA8Y29kZT5udWxsPC9jb2RlPiBvciBlbXB0eS4KKyAgICAgKiBAcGFyYW0gaWQgdGhlIElkIChtYXkgYmUgPGNvZGU+bnVsbDwvY29kZT4pCisgICAgICogQHBhcmFtIG1pbWVUeXBlIHRoZSBtaW1lIHR5cGUgKG1heSBiZSA8Y29kZT5udWxsPC9jb2RlPikKKyAgICAgKiBAcGFyYW0gZW5jb2RpbmcgdGhlIGVuY29kaW5nIChtYXkgYmUgPGNvZGU+bnVsbDwvY29kZT4pCisgICAgICogQHJldHVybiBhbiA8Y29kZT5YTUxPYmplY3Q8L2NvZGU+CisgICAgICogQHRocm93cyBDbGFzc0Nhc3RFeGNlcHRpb24gaWYgPGNvZGU+Y29udGVudDwvY29kZT4gY29udGFpbnMgYW55IAorICAgICAqICAgIGVudHJpZXMgdGhhdCBhcmUgbm90IG9mIHR5cGUge0BsaW5rIFhNTFN0cnVjdHVyZX0KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgWE1MT2JqZWN0IG5ld1hNTE9iamVjdChMaXN0IGNvbnRlbnQsIFN0cmluZyBpZCwgCisJU3RyaW5nIG1pbWVUeXBlLCBTdHJpbmcgZW5jb2RpbmcpOworCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIDxjb2RlPk1hbmlmZXN0PC9jb2RlPiBjb250YWluaW5nIHRoZSBzcGVjaWZpZWQgCisgICAgICogbGlzdCBvZiB7QGxpbmsgUmVmZXJlbmNlfXMuIAorICAgICAqCisgICAgICogQHBhcmFtIHJlZmVyZW5jZXMgYSBsaXN0IG9mIG9uZSBvciBtb3JlIDxjb2RlPlJlZmVyZW5jZTwvY29kZT5zLiBUaGUgbGlzdAorICAgICAqICAgIGlzIGRlZmVuc2l2ZWx5IGNvcGllZCB0byBwcm90ZWN0IGFnYWluc3Qgc3Vic2VxdWVudCBtb2RpZmljYXRpb24uCisgICAgICogQHJldHVybiBhIDxjb2RlPk1hbmlmZXN0PC9jb2RlPgorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+cmVmZXJlbmNlczwvY29kZT4gaXMgCisgICAgICogICAgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiA8Y29kZT5yZWZlcmVuY2VzPC9jb2RlPiBpcyBlbXB0eQorICAgICAqIEB0aHJvd3MgQ2xhc3NDYXN0RXhjZXB0aW9uIGlmIDxjb2RlPnJlZmVyZW5jZXM8L2NvZGU+IGNvbnRhaW5zIGFueSAKKyAgICAgKiAgICBlbnRyaWVzIHRoYXQgYXJlIG5vdCBvZiB0eXBlIHtAbGluayBSZWZlcmVuY2V9CisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IE1hbmlmZXN0IG5ld01hbmlmZXN0KExpc3QgcmVmZXJlbmNlcyk7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+TWFuaWZlc3Q8L2NvZGU+IGNvbnRhaW5pbmcgdGhlIHNwZWNpZmllZCAKKyAgICAgKiBsaXN0IG9mIHtAbGluayBSZWZlcmVuY2V9cyBhbmQgb3B0aW9uYWwgaWQuIAorICAgICAqCisgICAgICogQHBhcmFtIHJlZmVyZW5jZXMgYSBsaXN0IG9mIG9uZSBvciBtb3JlIDxjb2RlPlJlZmVyZW5jZTwvY29kZT5zLiBUaGUgbGlzdAorICAgICAqICAgIGlzIGRlZmVuc2l2ZWx5IGNvcGllZCB0byBwcm90ZWN0IGFnYWluc3Qgc3Vic2VxdWVudCBtb2RpZmljYXRpb24uCisgICAgICogQHBhcmFtIGlkIHRoZSBpZCAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+KQorICAgICAqIEByZXR1cm4gYSA8Y29kZT5NYW5pZmVzdDwvY29kZT4KKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPnJlZmVyZW5jZXM8L2NvZGU+IGlzIAorICAgICAqICAgIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgPGNvZGU+cmVmZXJlbmNlczwvY29kZT4gaXMgZW1wdHkKKyAgICAgKiBAdGhyb3dzIENsYXNzQ2FzdEV4Y2VwdGlvbiBpZiA8Y29kZT5yZWZlcmVuY2VzPC9jb2RlPiBjb250YWlucyBhbnkgCisgICAgICogICAgZW50cmllcyB0aGF0IGFyZSBub3Qgb2YgdHlwZSB7QGxpbmsgUmVmZXJlbmNlfQorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBNYW5pZmVzdCBuZXdNYW5pZmVzdChMaXN0IHJlZmVyZW5jZXMsIFN0cmluZyBpZCk7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+U2lnbmF0dXJlUHJvcGVydHk8L2NvZGU+IGNvbnRhaW5pbmcgdGhlIHNwZWNpZmllZCAKKyAgICAgKiBsaXN0IG9mIHtAbGluayBYTUxTdHJ1Y3R1cmV9cywgdGFyZ2V0IFVSSSBhbmQgb3B0aW9uYWwgaWQuIAorICAgICAqCisgICAgICogQHBhcmFtIGNvbnRlbnQgYSBsaXN0IG9mIG9uZSBvciBtb3JlIDxjb2RlPlhNTFN0cnVjdHVyZTwvY29kZT5zLiBUaGUgbGlzdAorICAgICAqICAgIGlzIGRlZmVuc2l2ZWx5IGNvcGllZCB0byBwcm90ZWN0IGFnYWluc3Qgc3Vic2VxdWVudCBtb2RpZmljYXRpb24uCisgICAgICogQHBhcmFtIHRhcmdldCB0aGUgdGFyZ2V0IFVSSSBvZiB0aGUgU2lnbmF0dXJlIHRoYXQgdGhpcyBwcm9wZXJ0eSBhcHBsaWVzIAorICAgICAqICAgIHRvCisgICAgICogQHBhcmFtIGlkIHRoZSBpZCAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+KQorICAgICAqIEByZXR1cm4gYSA8Y29kZT5TaWduYXR1cmVQcm9wZXJ0eTwvY29kZT4KKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPmNvbnRlbnQ8L2NvZGU+IG9yIAorICAgICAqICAgIDxjb2RlPnRhcmdldDwvY29kZT4gaXMgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiA8Y29kZT5jb250ZW50PC9jb2RlPiBpcyBlbXB0eQorICAgICAqIEB0aHJvd3MgQ2xhc3NDYXN0RXhjZXB0aW9uIGlmIDxjb2RlPmNvbnRlbnQ8L2NvZGU+IGNvbnRhaW5zIGFueSAKKyAgICAgKiAgICBlbnRyaWVzIHRoYXQgYXJlIG5vdCBvZiB0eXBlIHtAbGluayBYTUxTdHJ1Y3R1cmV9CisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IFNpZ25hdHVyZVByb3BlcnR5IG5ld1NpZ25hdHVyZVByb3BlcnR5CisJKExpc3QgY29udGVudCwgU3RyaW5nIHRhcmdldCwgU3RyaW5nIGlkKTsKKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSA8Y29kZT5TaWduYXR1cmVQcm9wZXJ0aWVzPC9jb2RlPiBjb250YWluaW5nIHRoZSBzcGVjaWZpZWQgCisgICAgICogbGlzdCBvZiB7QGxpbmsgU2lnbmF0dXJlUHJvcGVydHl9cyBhbmQgb3B0aW9uYWwgaWQuIAorICAgICAqCisgICAgICogQHBhcmFtIHByb3BlcnRpZXMgYSBsaXN0IG9mIG9uZSBvciBtb3JlIDxjb2RlPlNpZ25hdHVyZVByb3BlcnR5PC9jb2RlPnMuIAorICAgICAqICAgIFRoZSBsaXN0IGlzIGRlZmVuc2l2ZWx5IGNvcGllZCB0byBwcm90ZWN0IGFnYWluc3Qgc3Vic2VxdWVudCAKKyAgICAgKiAgICBtb2RpZmljYXRpb24uCisgICAgICogQHBhcmFtIGlkIHRoZSBpZCAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+KQorICAgICAqIEByZXR1cm4gYSA8Y29kZT5TaWduYXR1cmVQcm9wZXJ0aWVzPC9jb2RlPgorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+cHJvcGVydGllczwvY29kZT4KKyAgICAgKiAgICBpcyA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIDxjb2RlPnByb3BlcnRpZXM8L2NvZGU+IGlzIGVtcHR5CisgICAgICogQHRocm93cyBDbGFzc0Nhc3RFeGNlcHRpb24gaWYgPGNvZGU+cHJvcGVydGllczwvY29kZT4gY29udGFpbnMgYW55IAorICAgICAqICAgIGVudHJpZXMgdGhhdCBhcmUgbm90IG9mIHR5cGUge0BsaW5rIFNpZ25hdHVyZVByb3BlcnR5fQorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBTaWduYXR1cmVQcm9wZXJ0aWVzIG5ld1NpZ25hdHVyZVByb3BlcnRpZXMKKwkoTGlzdCBwcm9wZXJ0aWVzLCBTdHJpbmcgaWQpOworCisgICAgLy8gQWxnb3JpdGhtIGZhY3RvcnkgbWV0aG9kcworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSA8Y29kZT5EaWdlc3RNZXRob2Q8L2NvZGU+IGZvciB0aGUgc3BlY2lmaWVkIGFsZ29yaXRobSBVUkkgCisgICAgICogYW5kIHBhcmFtZXRlcnMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYWxnb3JpdGhtIHRoZSBVUkkgaWRlbnRpZnlpbmcgdGhlIGRpZ2VzdCBhbGdvcml0aG0KKyAgICAgKiBAcGFyYW0gcGFyYW1zIGFsZ29yaXRobS1zcGVjaWZpYyBkaWdlc3QgcGFyYW1ldGVycyAobWF5IGJlIAorICAgICAqICAgIDxjb2RlPm51bGw8L2NvZGU+KQorICAgICAqIEByZXR1cm4gdGhlIDxjb2RlPkRpZ2VzdE1ldGhvZDwvY29kZT4KKyAgICAgKiBAdGhyb3dzIEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24gaWYgdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzCisgICAgICogICAgYXJlIGluYXBwcm9wcmlhdGUgZm9yIHRoZSByZXF1ZXN0ZWQgYWxnb3JpdGhtCisgICAgICogQHRocm93cyBOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24gaWYgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlCisgICAgICogICAgc3BlY2lmaWVkIGFsZ29yaXRobSBjYW5ub3QgYmUgZm91bmQKKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPmFsZ29yaXRobTwvY29kZT4gaXMgCisgICAgICogICAgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgRGlnZXN0TWV0aG9kIG5ld0RpZ2VzdE1ldGhvZChTdHJpbmcgYWxnb3JpdGhtLCAKKwlEaWdlc3RNZXRob2RQYXJhbWV0ZXJTcGVjIHBhcmFtcykgdGhyb3dzIE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiwKKwlJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uOworCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIDxjb2RlPlNpZ25hdHVyZU1ldGhvZDwvY29kZT4gZm9yIHRoZSBzcGVjaWZpZWQgYWxnb3JpdGhtIFVSSSAKKyAgICAgKiBhbmQgcGFyYW1ldGVycy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBhbGdvcml0aG0gdGhlIFVSSSBpZGVudGlmeWluZyB0aGUgc2lnbmF0dXJlIGFsZ29yaXRobQorICAgICAqIEBwYXJhbSBwYXJhbXMgYWxnb3JpdGhtLXNwZWNpZmljIHNpZ25hdHVyZSBwYXJhbWV0ZXJzIChtYXkgYmUgCisgICAgICogICAgPGNvZGU+bnVsbDwvY29kZT4pCisgICAgICogQHJldHVybiB0aGUgPGNvZGU+U2lnbmF0dXJlTWV0aG9kPC9jb2RlPgorICAgICAqIEB0aHJvd3MgSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiBpZiB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMKKyAgICAgKiAgICBhcmUgaW5hcHByb3ByaWF0ZSBmb3IgdGhlIHJlcXVlc3RlZCBhbGdvcml0aG0KKyAgICAgKiBAdGhyb3dzIE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiBpZiBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKKyAgICAgKiAgICBzcGVjaWZpZWQgYWxnb3JpdGhtIGNhbm5vdCBiZSBmb3VuZAorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+YWxnb3JpdGhtPC9jb2RlPiBpcyAKKyAgICAgKiAgICA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBTaWduYXR1cmVNZXRob2QgbmV3U2lnbmF0dXJlTWV0aG9kKFN0cmluZyBhbGdvcml0aG0sIAorCVNpZ25hdHVyZU1ldGhvZFBhcmFtZXRlclNwZWMgcGFyYW1zKSB0aHJvd3MgTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uLAorCUludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb247CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+VHJhbnNmb3JtPC9jb2RlPiBmb3IgdGhlIHNwZWNpZmllZCBhbGdvcml0aG0gVVJJIAorICAgICAqIGFuZCBwYXJhbWV0ZXJzLgorICAgICAqCisgICAgICogQHBhcmFtIGFsZ29yaXRobSB0aGUgVVJJIGlkZW50aWZ5aW5nIHRoZSB0cmFuc2Zvcm0gYWxnb3JpdGhtCisgICAgICogQHBhcmFtIHBhcmFtcyBhbGdvcml0aG0tc3BlY2lmaWMgdHJhbnNmb3JtIHBhcmFtZXRlcnMgKG1heSBiZSAKKyAgICAgKiAgICA8Y29kZT5udWxsPC9jb2RlPikKKyAgICAgKiBAcmV0dXJuIHRoZSA8Y29kZT5UcmFuc2Zvcm08L2NvZGU+CisgICAgICogQHRocm93cyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIGlmIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVycworICAgICAqICAgIGFyZSBpbmFwcHJvcHJpYXRlIGZvciB0aGUgcmVxdWVzdGVkIGFsZ29yaXRobQorICAgICAqIEB0aHJvd3MgTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIGlmIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZQorICAgICAqICAgIHNwZWNpZmllZCBhbGdvcml0aG0gY2Fubm90IGJlIGZvdW5kCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5hbGdvcml0aG08L2NvZGU+IGlzIAorICAgICAqICAgIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IFRyYW5zZm9ybSBuZXdUcmFuc2Zvcm0oU3RyaW5nIGFsZ29yaXRobSwgCisJVHJhbnNmb3JtUGFyYW1ldGVyU3BlYyBwYXJhbXMpIHRocm93cyBOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24sCisJSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbjsKKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSA8Y29kZT5UcmFuc2Zvcm08L2NvZGU+IGZvciB0aGUgc3BlY2lmaWVkIGFsZ29yaXRobSBVUkkgCisgICAgICogYW5kIHBhcmFtZXRlcnMuIFRoZSBwYXJhbWV0ZXJzIGFyZSBzcGVjaWZpZWQgYXMgYSBtZWNoYW5pc20tc3BlY2lmaWMKKyAgICAgKiA8Y29kZT5YTUxTdHJ1Y3R1cmU8L2NvZGU+IChleDoge0BsaW5rIERPTVN0cnVjdHVyZX0pLiBUaGlzIG1ldGhvZCBpcyAKKyAgICAgKiB1c2VmdWwgd2hlbiB0aGUgcGFyYW1ldGVycyBhcmUgaW4gWE1MIGZvcm0gb3IgdGhlcmUgaXMgbm8gc3RhbmRhcmQgCisgICAgICogY2xhc3MgZm9yIHNwZWNpZnlpbmcgdGhlIHBhcmFtZXRlcnMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYWxnb3JpdGhtIHRoZSBVUkkgaWRlbnRpZnlpbmcgdGhlIHRyYW5zZm9ybSBhbGdvcml0aG0KKyAgICAgKiBAcGFyYW0gcGFyYW1zIGEgbWVjaGFuaXNtLXNwZWNpZmljIFhNTCBzdHJ1Y3R1cmUgZnJvbSB3aGljaCB0bworICAgICAqICAgdW5tYXJzaGFsIHRoZSBwYXJhbWV0ZXJzIGZyb20gKG1heSBiZSA8Y29kZT5udWxsPC9jb2RlPiBpZgorICAgICAqICAgbm90IHJlcXVpcmVkIG9yIG9wdGlvbmFsKQorICAgICAqIEByZXR1cm4gdGhlIDxjb2RlPlRyYW5zZm9ybTwvY29kZT4KKyAgICAgKiBAdGhyb3dzIENsYXNzQ2FzdEV4Y2VwdGlvbiBpZiB0aGUgdHlwZSBvZiA8Y29kZT5wYXJhbXM8L2NvZGU+IGlzCisgICAgICogICBpbmFwcHJvcHJpYXRlIGZvciB0aGlzIDxjb2RlPlhNTFNpZ25hdHVyZUZhY3Rvcnk8L2NvZGU+CisgICAgICogQHRocm93cyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIGlmIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVycworICAgICAqICAgIGFyZSBpbmFwcHJvcHJpYXRlIGZvciB0aGUgcmVxdWVzdGVkIGFsZ29yaXRobQorICAgICAqIEB0aHJvd3MgTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIGlmIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZQorICAgICAqICAgIHNwZWNpZmllZCBhbGdvcml0aG0gY2Fubm90IGJlIGZvdW5kCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5hbGdvcml0aG08L2NvZGU+IGlzIAorICAgICAqICAgIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IFRyYW5zZm9ybSBuZXdUcmFuc2Zvcm0oU3RyaW5nIGFsZ29yaXRobSwgCisJWE1MU3RydWN0dXJlIHBhcmFtcykgdGhyb3dzIE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiwKKwlJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uOworCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIDxjb2RlPkNhbm9uaWNhbGl6YXRpb25NZXRob2Q8L2NvZGU+IGZvciB0aGUgc3BlY2lmaWVkIAorICAgICAqIGFsZ29yaXRobSBVUkkgYW5kIHBhcmFtZXRlcnMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYWxnb3JpdGhtIHRoZSBVUkkgaWRlbnRpZnlpbmcgdGhlIGNhbm9uaWNhbGl6YXRpb24gYWxnb3JpdGhtCisgICAgICogQHBhcmFtIHBhcmFtcyBhbGdvcml0aG0tc3BlY2lmaWMgY2Fub25pY2FsaXphdGlvbiBwYXJhbWV0ZXJzIChtYXkgYmUgCisgICAgICogICAgPGNvZGU+bnVsbDwvY29kZT4pCisgICAgICogQHJldHVybiB0aGUgPGNvZGU+Q2Fub25pY2FsaXphdGlvbk1ldGhvZDwvY29kZT4KKyAgICAgKiBAdGhyb3dzIEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24gaWYgdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzCisgICAgICogICAgYXJlIGluYXBwcm9wcmlhdGUgZm9yIHRoZSByZXF1ZXN0ZWQgYWxnb3JpdGhtCisgICAgICogQHRocm93cyBOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24gaWYgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlCisgICAgICogICAgc3BlY2lmaWVkIGFsZ29yaXRobSBjYW5ub3QgYmUgZm91bmQKKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPmFsZ29yaXRobTwvY29kZT4gaXMgCisgICAgICogICAgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgQ2Fub25pY2FsaXphdGlvbk1ldGhvZCBuZXdDYW5vbmljYWxpemF0aW9uTWV0aG9kKAorCVN0cmluZyBhbGdvcml0aG0sIEMxNE5NZXRob2RQYXJhbWV0ZXJTcGVjIHBhcmFtcykgCisJdGhyb3dzIE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiwgSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbjsKKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSA8Y29kZT5DYW5vbmljYWxpemF0aW9uTWV0aG9kPC9jb2RlPiBmb3IgdGhlIHNwZWNpZmllZCAKKyAgICAgKiBhbGdvcml0aG0gVVJJIGFuZCBwYXJhbWV0ZXJzLiBUaGUgcGFyYW1ldGVycyBhcmUgc3BlY2lmaWVkIGFzIGEgCisgICAgICogbWVjaGFuaXNtLXNwZWNpZmljIDxjb2RlPlhNTFN0cnVjdHVyZTwvY29kZT4gKGV4OiB7QGxpbmsgRE9NU3RydWN0dXJlfSkuIAorICAgICAqIFRoaXMgbWV0aG9kIGlzIHVzZWZ1bCB3aGVuIHRoZSBwYXJhbWV0ZXJzIGFyZSBpbiBYTUwgZm9ybSBvciB0aGVyZSBpcyAKKyAgICAgKiBubyBzdGFuZGFyZCBjbGFzcyBmb3Igc3BlY2lmeWluZyB0aGUgcGFyYW1ldGVycy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBhbGdvcml0aG0gdGhlIFVSSSBpZGVudGlmeWluZyB0aGUgY2Fub25pY2FsaXphdGlvbiBhbGdvcml0aG0KKyAgICAgKiBAcGFyYW0gcGFyYW1zIGEgbWVjaGFuaXNtLXNwZWNpZmljIFhNTCBzdHJ1Y3R1cmUgZnJvbSB3aGljaCB0bworICAgICAqICAgdW5tYXJzaGFsIHRoZSBwYXJhbWV0ZXJzIGZyb20gKG1heSBiZSA8Y29kZT5udWxsPC9jb2RlPiBpZgorICAgICAqICAgbm90IHJlcXVpcmVkIG9yIG9wdGlvbmFsKQorICAgICAqIEByZXR1cm4gdGhlIDxjb2RlPkNhbm9uaWNhbGl6YXRpb25NZXRob2Q8L2NvZGU+CisgICAgICogQHRocm93cyBDbGFzc0Nhc3RFeGNlcHRpb24gaWYgdGhlIHR5cGUgb2YgPGNvZGU+cGFyYW1zPC9jb2RlPiBpcworICAgICAqICAgaW5hcHByb3ByaWF0ZSBmb3IgdGhpcyA8Y29kZT5YTUxTaWduYXR1cmVGYWN0b3J5PC9jb2RlPgorICAgICAqIEB0aHJvd3MgSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiBpZiB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMKKyAgICAgKiAgICBhcmUgaW5hcHByb3ByaWF0ZSBmb3IgdGhlIHJlcXVlc3RlZCBhbGdvcml0aG0KKyAgICAgKiBAdGhyb3dzIE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiBpZiBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKKyAgICAgKiAgICBzcGVjaWZpZWQgYWxnb3JpdGhtIGNhbm5vdCBiZSBmb3VuZAorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+YWxnb3JpdGhtPC9jb2RlPiBpcyAKKyAgICAgKiAgICA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBDYW5vbmljYWxpemF0aW9uTWV0aG9kIG5ld0Nhbm9uaWNhbGl6YXRpb25NZXRob2QoCisJU3RyaW5nIGFsZ29yaXRobSwgWE1MU3RydWN0dXJlIHBhcmFtcykgCisJdGhyb3dzIE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiwgSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbjsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSA8Y29kZT5LZXlJbmZvRmFjdG9yeTwvY29kZT4gdGhhdCBjcmVhdGVzIDxjb2RlPktleUluZm88L2NvZGU+CisgICAgICogb2JqZWN0cy4gVGhlIHJldHVybmVkIDxjb2RlPktleUluZm9GYWN0b3J5PC9jb2RlPiBoYXMgdGhlIHNhbWUgCisgICAgICogbWVjaGFuaXNtIHR5cGUgYW5kIHByb3ZpZGVyIGFzIHRoaXMgPGNvZGU+WE1MU2lnbmF0dXJlRmFjdG9yeTwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIGEgPGNvZGU+S2V5SW5mb0ZhY3Rvcnk8L2NvZGU+CisgICAgICogQHRocm93cyBOb1N1Y2hNZWNoYW5pc21FeGNlcHRpb24gaWYgYSA8Y29kZT5LZXlGYWN0b3J5PC9jb2RlPiAKKyAgICAgKiAgICBpbXBsZW1lbnRhdGlvbiB3aXRoIHRoZSBzYW1lIG1lY2hhbmlzbSB0eXBlIGFuZCBwcm92aWRlcgorICAgICAqICAgIGlzIG5vdCBhdmFpbGFibGUKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgS2V5SW5mb0ZhY3RvcnkgZ2V0S2V5SW5mb0ZhY3RvcnkoKSB7CisJcmV0dXJuIEtleUluZm9GYWN0b3J5LmdldEluc3RhbmNlKGdldE1lY2hhbmlzbVR5cGUoKSwgZ2V0UHJvdmlkZXIoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVW5tYXJzaGFscyBhIG5ldyA8Y29kZT5YTUxTaWduYXR1cmU8L2NvZGU+IGluc3RhbmNlIGZyb20gYQorICAgICAqIG1lY2hhbmlzbS1zcGVjaWZpYyA8Y29kZT5YTUxWYWxpZGF0ZUNvbnRleHQ8L2NvZGU+IGluc3RhbmNlLgorICAgICAqCisgICAgICogQHBhcmFtIGNvbnRleHQgYSBtZWNoYW5pc20tc3BlY2lmaWMgY29udGV4dCBmcm9tIHdoaWNoIHRvIHVubWFyc2hhbCB0aGUKKyAgICAgKiAgICBzaWduYXR1cmUgZnJvbQorICAgICAqIEByZXR1cm4gdGhlIDxjb2RlPlhNTFNpZ25hdHVyZTwvY29kZT4KKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPmNvbnRleHQ8L2NvZGU+IGlzIAorICAgICAqICAgIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogQHRocm93cyBDbGFzc0Nhc3RFeGNlcHRpb24gaWYgdGhlIHR5cGUgb2YgPGNvZGU+Y29udGV4dDwvY29kZT4gaXMKKyAgICAgKiAgICBpbmFwcHJvcHJpYXRlIGZvciB0aGlzIGZhY3RvcnkKKyAgICAgKiBAdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24gaWYgYW4gdW5yZWNvdmVyYWJsZSBleGNlcHRpb24gb2NjdXJzIAorICAgICAqICAgIGR1cmluZyB1bm1hcnNoYWxsaW5nCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IFhNTFNpZ25hdHVyZSB1bm1hcnNoYWxYTUxTaWduYXR1cmUKKwkoWE1MVmFsaWRhdGVDb250ZXh0IGNvbnRleHQpIHRocm93cyBNYXJzaGFsRXhjZXB0aW9uOworCisgICAgLyoqCisgICAgICogVW5tYXJzaGFscyBhIG5ldyA8Y29kZT5YTUxTaWduYXR1cmU8L2NvZGU+IGluc3RhbmNlIGZyb20gYQorICAgICAqIG1lY2hhbmlzbS1zcGVjaWZpYyA8Y29kZT5YTUxTdHJ1Y3R1cmU8L2NvZGU+IGluc3RhbmNlLgorICAgICAqIFRoaXMgbWV0aG9kIGlzIHVzZWZ1bCBpZiB5b3Ugb25seSB3YW50IHRvIHVubWFyc2hhbCAoYW5kIG5vdAorICAgICAqIHZhbGlkYXRlKSBhbiA8Y29kZT5YTUxTaWduYXR1cmU8L2NvZGU+LgorICAgICAqCisgICAgICogQHBhcmFtIHhtbFN0cnVjdHVyZSBhIG1lY2hhbmlzbS1zcGVjaWZpYyBYTUwgc3RydWN0dXJlIGZyb20gd2hpY2ggdG8gCisgICAgICogICAgdW5tYXJzaGFsIHRoZSBzaWduYXR1cmUgZnJvbQorICAgICAqIEByZXR1cm4gdGhlIDxjb2RlPlhNTFNpZ25hdHVyZTwvY29kZT4KKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPnhtbFN0cnVjdHVyZTwvY29kZT4gaXMgCisgICAgICogICAgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiBAdGhyb3dzIENsYXNzQ2FzdEV4Y2VwdGlvbiBpZiB0aGUgdHlwZSBvZiA8Y29kZT54bWxTdHJ1Y3R1cmU8L2NvZGU+IGlzCisgICAgICogICAgaW5hcHByb3ByaWF0ZSBmb3IgdGhpcyBmYWN0b3J5CisgICAgICogQHRocm93cyBNYXJzaGFsRXhjZXB0aW9uIGlmIGFuIHVucmVjb3ZlcmFibGUgZXhjZXB0aW9uIG9jY3VycyAKKyAgICAgKiAgICBkdXJpbmcgdW5tYXJzaGFsbGluZworICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBYTUxTaWduYXR1cmUgdW5tYXJzaGFsWE1MU2lnbmF0dXJlCisJKFhNTFN0cnVjdHVyZSB4bWxTdHJ1Y3R1cmUpIHRocm93cyBNYXJzaGFsRXhjZXB0aW9uOworCisgICAgLyoqCisgICAgICogSW5kaWNhdGVzIHdoZXRoZXIgYSBzcGVjaWZpZWQgZmVhdHVyZSBpcyBzdXBwb3J0ZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZmVhdHVyZSB0aGUgZmVhdHVyZSBuYW1lIChhcyBhbiBhYnNvbHV0ZSBVUkkpCisgICAgICogQHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgc3BlY2lmaWVkIGZlYXR1cmUgaXMgc3VwcG9ydGVkLAorICAgICAqICAgIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UKKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPmZlYXR1cmU8L2NvZGU+IGlzIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IGJvb2xlYW4gaXNGZWF0dXJlU3VwcG9ydGVkKFN0cmluZyBmZWF0dXJlKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIDxjb2RlPlVSSURlcmVmZXJlbmNlcjwvY29kZT4gdGhhdCBpcyB1c2VkIGJ5IAorICAgICAqIGRlZmF1bHQgdG8gZGVyZWZlcmVuY2UgVVJJcyBpbiB7QGxpbmsgUmVmZXJlbmNlfSBvYmplY3RzLgorICAgICAqCisgICAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGUgZGVmYXVsdCA8Y29kZT5VUklEZXJlZmVyZW5jZXI8L2NvZGU+IChuZXZlcgorICAgICAqICAgIDxjb2RlPm51bGw8L2NvZGU+KQorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBVUklEZXJlZmVyZW5jZXIgZ2V0VVJJRGVyZWZlcmVuY2VyKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL1hNTFZhbGlkYXRlQ29udGV4dC5qYXZhIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9YTUxWYWxpZGF0ZUNvbnRleHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWU4NzlmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9YTUxWYWxpZGF0ZUNvbnRleHQuamF2YQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IDIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLmRzaWc7CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLlhNTENyeXB0b0NvbnRleHQ7CisKKy8qKgorICogQ29udGFpbnMgY29udGV4dCBpbmZvcm1hdGlvbiBmb3IgdmFsaWRhdGluZyBYTUwgU2lnbmF0dXJlcy4gVGhpcyBpbnRlcmZhY2UKKyAqIGlzIHByaW1hcmlseSBpbnRlbmRlZCBmb3IgdHlwZS1zYWZldHkuCisgKgorICogPHA+Tm90ZSB0aGF0IDxjb2RlPlhNTFZhbGlkYXRlQ29udGV4dDwvY29kZT4gaW5zdGFuY2VzIGNhbiBjb250YWluIAorICogaW5mb3JtYXRpb24gYW5kIHN0YXRlIHNwZWNpZmljIHRvIHRoZSBYTUwgc2lnbmF0dXJlIHN0cnVjdHVyZSBpdCBpcyAKKyAqIHVzZWQgd2l0aC4gVGhlIHJlc3VsdHMgYXJlIHVucHJlZGljdGFibGUgaWYgYW4gCisgKiA8Y29kZT5YTUxWYWxpZGF0ZUNvbnRleHQ8L2NvZGU+IGlzIHVzZWQgd2l0aCBkaWZmZXJlbnQgc2lnbmF0dXJlIHN0cnVjdHVyZXMgCisgKiAoZm9yIGV4YW1wbGUsIHlvdSBzaG91bGQgbm90IHVzZSB0aGUgc2FtZSA8Y29kZT5YTUxWYWxpZGF0ZUNvbnRleHQ8L2NvZGU+IAorICogaW5zdGFuY2UgdG8gdmFsaWRhdGUgdHdvIGRpZmZlcmVudCB7QGxpbmsgWE1MU2lnbmF0dXJlfSBvYmplY3RzKS4KKyAqIDxwPgorICogPGI+PGEgbmFtZT0iU3VwcG9ydGVkIFByb3BlcnRpZXMiPjwvYT5TdXBwb3J0ZWQgUHJvcGVydGllczwvYj4KKyAqIDxwPlRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBjYW4gYmUgc2V0IGJ5IGFuIGFwcGxpY2F0aW9uIHVzaW5nIHRoZSAKKyAqIHtAbGluayAjc2V0UHJvcGVydHkgc2V0UHJvcGVydHl9IG1ldGhvZC4KKyAqIDx1bD4KKyAqICAgPGxpPjxjb2RlPmphdmF4LnhtbC5jcnlwdG8uZHNpZy5jYWNoZVJlZmVyZW5jZTwvY29kZT46IHZhbHVlIG11c3QgYmUgYQorICoJe0BsaW5rIEJvb2xlYW59LiBUaGlzIHByb3BlcnR5IGNvbnRyb2xzIHdoZXRoZXIgb3Igbm90IHRoZQorICoJe0BsaW5rIFJlZmVyZW5jZSN2YWxpZGF0ZSBSZWZlcmVuY2UudmFsaWRhdGV9IG1ldGhvZCB3aWxsIGNhY2hlIHRoZSAKKyAqCWRlcmVmZXJlbmNlZCBjb250ZW50IGFuZCBwcmUtZGlnZXN0ZWQgaW5wdXQgZm9yIHN1YnNlcXVlbnQgcmV0cmlldmFsIHZpYQorICogICAgICB0aGUge0BsaW5rIFJlZmVyZW5jZSNnZXREZXJlZmVyZW5jZWREYXRhIFJlZmVyZW5jZS5nZXREZXJlZmVyZW5jZWREYXRhfQorICoJYW5kIHtAbGluayBSZWZlcmVuY2UjZ2V0RGlnZXN0SW5wdXRTdHJlYW0gCisgKglSZWZlcmVuY2UuZ2V0RGlnZXN0SW5wdXRTdHJlYW19IG1ldGhvZHMuIFRoZSBkZWZhdWx0IHZhbHVlIGlmIG5vdCAKKyAqCXNwZWNpZmllZCBpcyA8Y29kZT5Cb29sZWFuLkZBTFNFPC9jb2RlPi4KKyAqIDwvdWw+CisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICogQGF1dGhvciBKU1IgMTA1IEV4cGVydCBHcm91cAorICogQHNlZSBYTUxTaWduYXR1cmUjdmFsaWRhdGUoWE1MVmFsaWRhdGVDb250ZXh0KQorICogQHNlZSBSZWZlcmVuY2UjdmFsaWRhdGUoWE1MVmFsaWRhdGVDb250ZXh0KQorICovCitwdWJsaWMgaW50ZXJmYWNlIFhNTFZhbGlkYXRlQ29udGV4dCBleHRlbmRzIFhNTENyeXB0b0NvbnRleHQge30KZGlmZiAtLWdpdCBhL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvZG9tL0RPTVNpZ25Db250ZXh0LmphdmEgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL2RvbS9ET01TaWduQ29udGV4dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMzdkNTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL2RvbS9ET01TaWduQ29udGV4dC5qYXZhCkBAIC0wLDAgKzEsMjAzIEBACisvKgorICogQ29weXJpZ2h0IDIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLmRzaWcuZG9tOworCitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5LZXlTZWxlY3RvcjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRvbS5ET01DcnlwdG9Db250ZXh0OworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5YTUxTaWduQ29udGV4dDsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuWE1MU2lnbmF0dXJlOworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CisKKy8qKgorICogQSBET00tc3BlY2lmaWMge0BsaW5rIFhNTFNpZ25Db250ZXh0fS4gVGhpcyBjbGFzcyBjb250YWlucyBhZGRpdGlvbmFsIG1ldGhvZHMKKyAqIHRvIHNwZWNpZnkgdGhlIGxvY2F0aW9uIGluIGEgRE9NIHRyZWUgd2hlcmUgYW4ge0BsaW5rIFhNTFNpZ25hdHVyZX0KKyAqIG9iamVjdCBpcyB0byBiZSBtYXJzaGFsbGVkIHdoZW4gZ2VuZXJhdGluZyB0aGUgc2lnbmF0dXJlLgorICoKKyAqIDxwPk5vdGUgdGhhdCA8Y29kZT5ET01TaWduQ29udGV4dDwvY29kZT4gaW5zdGFuY2VzIGNhbiBjb250YWluCisgKiBpbmZvcm1hdGlvbiBhbmQgc3RhdGUgc3BlY2lmaWMgdG8gdGhlIFhNTCBzaWduYXR1cmUgc3RydWN0dXJlIGl0IGlzCisgKiB1c2VkIHdpdGguIFRoZSByZXN1bHRzIGFyZSB1bnByZWRpY3RhYmxlIGlmIGEKKyAqIDxjb2RlPkRPTVNpZ25Db250ZXh0PC9jb2RlPiBpcyB1c2VkIHdpdGggZGlmZmVyZW50IHNpZ25hdHVyZSBzdHJ1Y3R1cmVzCisgKiAoZm9yIGV4YW1wbGUsIHlvdSBzaG91bGQgbm90IHVzZSB0aGUgc2FtZSA8Y29kZT5ET01TaWduQ29udGV4dDwvY29kZT4KKyAqIGluc3RhbmNlIHRvIHNpZ24gdHdvIGRpZmZlcmVudCB7QGxpbmsgWE1MU2lnbmF0dXJlfSBvYmplY3RzKS4KKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKiBAYXV0aG9yIEpTUiAxMDUgRXhwZXJ0IEdyb3VwCisgKi8KK3B1YmxpYyBjbGFzcyBET01TaWduQ29udGV4dCBleHRlbmRzIERPTUNyeXB0b0NvbnRleHQgaW1wbGVtZW50cyBYTUxTaWduQ29udGV4dCB7CisKKyAgICBwcml2YXRlIE5vZGUgcGFyZW50OworICAgIHByaXZhdGUgTm9kZSBuZXh0U2libGluZzsKKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSA8Y29kZT5ET01TaWduQ29udGV4dDwvY29kZT4gd2l0aCB0aGUgc3BlY2lmaWVkIHNpZ25pbmcga2V5CisgICAgICogYW5kIHBhcmVudCBub2RlLiBUaGUgc2lnbmluZyBrZXkgaXMgc3RvcmVkIGluIGEKKyAgICAgKiB7QGxpbmsgS2V5U2VsZWN0b3Ijc2luZ2xldG9uS2V5U2VsZWN0b3Igc2luZ2xldG9uIEtleVNlbGVjdG9yfSB0aGF0IGlzCisgICAgICogcmV0dXJuZWQgYnkgdGhlIHtAbGluayAjZ2V0S2V5U2VsZWN0b3IgZ2V0S2V5U2VsZWN0b3J9IG1ldGhvZC4KKyAgICAgKiBUaGUgbWFyc2hhbGxlZCA8Y29kZT5YTUxTaWduYXR1cmU8L2NvZGU+IHdpbGwgYmUgYWRkZWQgYXMgdGhlIGxhc3QgCisgICAgICogY2hpbGQgZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHBhcmVudCBub2RlIHVubGVzcyBhIG5leHQgc2libGluZyBub2RlIGlzIAorICAgICAqIHNwZWNpZmllZCBieSBpbnZva2luZyB0aGUge0BsaW5rICNzZXROZXh0U2libGluZyBzZXROZXh0U2libGluZ30gbWV0aG9kLgorICAgICAqCisgICAgICogQHBhcmFtIHNpZ25pbmdLZXkgdGhlIHNpZ25pbmcga2V5CisgICAgICogQHBhcmFtIHBhcmVudCB0aGUgcGFyZW50IG5vZGUKKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPnNpZ25pbmdLZXk8L2NvZGU+IG9yIAorICAgICAqICAgIDxjb2RlPnBhcmVudDwvY29kZT4gaXMgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKi8KKyAgICBwdWJsaWMgRE9NU2lnbkNvbnRleHQoS2V5IHNpZ25pbmdLZXksIE5vZGUgcGFyZW50KSB7IAorICAgICAgICBpZiAoc2lnbmluZ0tleSA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oInNpZ25pbmdLZXkgY2Fubm90IGJlIG51bGwiKTsKKyAgICAgICAgfSAKKyAgICAgICAgaWYgKHBhcmVudCA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oInBhcmVudCBjYW5ub3QgYmUgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIHNldEtleVNlbGVjdG9yKEtleVNlbGVjdG9yLnNpbmdsZXRvbktleVNlbGVjdG9yKHNpZ25pbmdLZXkpKTsKKyAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIDxjb2RlPkRPTVNpZ25Db250ZXh0PC9jb2RlPiB3aXRoIHRoZSBzcGVjaWZpZWQgc2lnbmluZyBrZXksCisgICAgICogcGFyZW50IGFuZCBuZXh0IHNpYmxpbmcgbm9kZXMuIFRoZSBzaWduaW5nIGtleSBpcyBzdG9yZWQgaW4gYQorICAgICAqIHtAbGluayBLZXlTZWxlY3RvciNzaW5nbGV0b25LZXlTZWxlY3RvciBzaW5nbGV0b24gS2V5U2VsZWN0b3J9IHRoYXQgaXMKKyAgICAgKiByZXR1cm5lZCBieSB0aGUge0BsaW5rICNnZXRLZXlTZWxlY3RvciBnZXRLZXlTZWxlY3Rvcn0gbWV0aG9kLgorICAgICAqIFRoZSBtYXJzaGFsbGVkIDxjb2RlPlhNTFNpZ25hdHVyZTwvY29kZT4gd2lsbCBiZSBpbnNlcnRlZCBhcyBhIGNoaWxkIAorICAgICAqIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCBwYXJlbnQgbm9kZSBhbmQgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSAKKyAgICAgKiBzcGVjaWZpZWQgbmV4dCBzaWJsaW5nIG5vZGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc2lnbmluZ0tleSB0aGUgc2lnbmluZyBrZXkKKyAgICAgKiBAcGFyYW0gcGFyZW50IHRoZSBwYXJlbnQgbm9kZQorICAgICAqIEBwYXJhbSBuZXh0U2libGluZyB0aGUgbmV4dCBzaWJsaW5nIG5vZGUKKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPnNpZ25pbmdLZXk8L2NvZGU+LCAKKyAgICAgKiAgICA8Y29kZT5wYXJlbnQ8L2NvZGU+IG9yIDxjb2RlPm5leHRTaWJsaW5nPC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqLworICAgIHB1YmxpYyBET01TaWduQ29udGV4dChLZXkgc2lnbmluZ0tleSwgTm9kZSBwYXJlbnQsIE5vZGUgbmV4dFNpYmxpbmcpIHsgCisgICAgICAgIGlmIChzaWduaW5nS2V5ID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigic2lnbmluZ0tleSBjYW5ub3QgYmUgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIGlmIChwYXJlbnQgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJwYXJlbnQgY2Fubm90IGJlIG51bGwiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobmV4dFNpYmxpbmcgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJuZXh0U2libGluZyBjYW5ub3QgYmUgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIHNldEtleVNlbGVjdG9yKEtleVNlbGVjdG9yLnNpbmdsZXRvbktleVNlbGVjdG9yKHNpZ25pbmdLZXkpKTsKKyAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7CisgICAgICAgIHRoaXMubmV4dFNpYmxpbmcgPSBuZXh0U2libGluZzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+RE9NU2lnbkNvbnRleHQ8L2NvZGU+IHdpdGggdGhlIHNwZWNpZmllZCBrZXkgc2VsZWN0b3IKKyAgICAgKiBhbmQgcGFyZW50IG5vZGUuIFRoZSBtYXJzaGFsbGVkIDxjb2RlPlhNTFNpZ25hdHVyZTwvY29kZT4gd2lsbCBiZSBhZGRlZCAKKyAgICAgKiBhcyB0aGUgbGFzdCBjaGlsZCBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQgcGFyZW50IG5vZGUgdW5sZXNzIGEgbmV4dCAKKyAgICAgKiBzaWJsaW5nIG5vZGUgaXMgc3BlY2lmaWVkIGJ5IGludm9raW5nIHRoZSAKKyAgICAgKiB7QGxpbmsgI3NldE5leHRTaWJsaW5nIHNldE5leHRTaWJsaW5nfSBtZXRob2QuCisgICAgICoKKyAgICAgKiBAcGFyYW0ga3MgdGhlIGtleSBzZWxlY3RvcgorICAgICAqIEBwYXJhbSBwYXJlbnQgdGhlIHBhcmVudCBub2RlCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5rczwvY29kZT4gb3IgPGNvZGU+cGFyZW50PC9jb2RlPiAKKyAgICAgKiAgICBpcyA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqLworICAgIHB1YmxpYyBET01TaWduQ29udGV4dChLZXlTZWxlY3RvciBrcywgTm9kZSBwYXJlbnQpIHsKKyAgICAgICAgaWYgKGtzID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigia2V5IHNlbGVjdG9yIGNhbm5vdCBiZSBudWxsIik7CisgICAgICAgIH0gCisgICAgICAgIGlmIChwYXJlbnQgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJwYXJlbnQgY2Fubm90IGJlIG51bGwiKTsKKyAgICAgICAgfQorICAgICAgICBzZXRLZXlTZWxlY3Rvcihrcyk7CisgICAgICAgIHRoaXMucGFyZW50ID0gcGFyZW50OworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSA8Y29kZT5ET01TaWduQ29udGV4dDwvY29kZT4gd2l0aCB0aGUgc3BlY2lmaWVkIGtleSBzZWxlY3RvciwKKyAgICAgKiBwYXJlbnQgYW5kIG5leHQgc2libGluZyBub2Rlcy4gVGhlIG1hcnNoYWxsZWQgPGNvZGU+WE1MU2lnbmF0dXJlPC9jb2RlPiAKKyAgICAgKiB3aWxsIGJlIGluc2VydGVkIGFzIGEgY2hpbGQgZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIHBhcmVudCBub2RlIGFuZCAKKyAgICAgKiBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIHNwZWNpZmllZCBuZXh0IHNpYmxpbmcgbm9kZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBrcyB0aGUga2V5IHNlbGVjdG9yCisgICAgICogQHBhcmFtIHBhcmVudCB0aGUgcGFyZW50IG5vZGUKKyAgICAgKiBAcGFyYW0gbmV4dFNpYmxpbmcgdGhlIG5leHQgc2libGluZyBub2RlCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5rczwvY29kZT4sIDxjb2RlPnBhcmVudDwvY29kZT4gb3IgCisgICAgICogICAgPGNvZGU+bmV4dFNpYmxpbmc8L2NvZGU+IGlzIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICovCisgICAgcHVibGljIERPTVNpZ25Db250ZXh0KEtleVNlbGVjdG9yIGtzLCBOb2RlIHBhcmVudCwgTm9kZSBuZXh0U2libGluZykgeyAKKyAgICAgICAgaWYgKGtzID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigia2V5IHNlbGVjdG9yIGNhbm5vdCBiZSBudWxsIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBhcmVudCA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oInBhcmVudCBjYW5ub3QgYmUgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIGlmIChuZXh0U2libGluZyA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oIm5leHRTaWJsaW5nIGNhbm5vdCBiZSBudWxsIik7CisgICAgICAgIH0KKyAgICAgICAgc2V0S2V5U2VsZWN0b3Ioa3MpOworICAgICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDsKKyAgICAgICAgdGhpcy5uZXh0U2libGluZyA9IG5leHRTaWJsaW5nOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHBhcmVudCBub2RlLgorICAgICAqCisgICAgICogQHBhcmFtIHBhcmVudCB0aGUgcGFyZW50IG5vZGUuIFRoZSBtYXJzaGFsbGVkIDxjb2RlPlhNTFNpZ25hdHVyZTwvY29kZT4gCisgICAgICogICAgd2lsbCBiZSBhZGRlZCBhcyBhIGNoaWxkIGVsZW1lbnQgb2YgdGhpcyBub2RlLgorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+cGFyZW50PC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEBzZWUgI2dldFBhcmVudAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFBhcmVudChOb2RlIHBhcmVudCkgeworCWlmIChwYXJlbnQgPT0gbnVsbCkgeworCSAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oInBhcmVudCBpcyBudWxsIik7CisJfQorCXRoaXMucGFyZW50ID0gcGFyZW50OworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIG5leHQgc2libGluZyBub2RlLiAKKyAgICAgKgorICAgICAqIEBwYXJhbSBuZXh0U2libGluZyB0aGUgbmV4dCBzaWJsaW5nIG5vZGUuIFRoZSBtYXJzaGFsbGVkIAorICAgICAqICAgIDxjb2RlPlhNTFNpZ25hdHVyZTwvY29kZT4gd2lsbCBiZSBpbnNlcnRlZCBpbW1lZGlhdGVseSBiZWZvcmUgdGhpcyAKKyAgICAgKiAgICBub2RlLiBTcGVjaWZ5IDxjb2RlPm51bGw8L2NvZGU+IHRvIHJlbW92ZSB0aGUgY3VycmVudCBzZXR0aW5nLiAKKyAgICAgKiBAc2VlICNnZXROZXh0U2libGluZworICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldE5leHRTaWJsaW5nKE5vZGUgbmV4dFNpYmxpbmcpIHsKKwl0aGlzLm5leHRTaWJsaW5nID0gbmV4dFNpYmxpbmc7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgcGFyZW50IG5vZGUuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBwYXJlbnQgbm9kZSAobmV2ZXIgPGNvZGU+bnVsbDwvY29kZT4pCisgICAgICogQHNlZSAjc2V0UGFyZW50KE5vZGUpCisgICAgICovCisgICAgcHVibGljIE5vZGUgZ2V0UGFyZW50KCkgeworCXJldHVybiBwYXJlbnQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbmV4dFNpYmxpbmcgbm9kZS4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIG5leHRTaWJsaW5nIG5vZGUsIG9yIDxjb2RlPm51bGw8L2NvZGU+IGlmIG5vdCBzcGVjaWZpZWQuCisgICAgICogQHNlZSAjc2V0TmV4dFNpYmxpbmcoTm9kZSkKKyAgICAgKi8KKyAgICBwdWJsaWMgTm9kZSBnZXROZXh0U2libGluZygpIHsKKwlyZXR1cm4gbmV4dFNpYmxpbmc7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9kb20vRE9NVmFsaWRhdGVDb250ZXh0LmphdmEgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL2RvbS9ET01WYWxpZGF0ZUNvbnRleHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjNmZmVhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9kb20vRE9NVmFsaWRhdGVDb250ZXh0LmphdmEKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5kb207CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLktleVNlbGVjdG9yOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZG9tLkRPTUNyeXB0b0NvbnRleHQ7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLlhNTFNpZ25hdHVyZTsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuWE1MU2lnbmF0dXJlRmFjdG9yeTsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuWE1MVmFsaWRhdGVDb250ZXh0OworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CisKKy8qKgorICogQSBET00tc3BlY2lmaWMge0BsaW5rIFhNTFZhbGlkYXRlQ29udGV4dH0uIFRoaXMgY2xhc3MgY29udGFpbnMgYWRkaXRpb25hbCAKKyAqIG1ldGhvZHMgdG8gc3BlY2lmeSB0aGUgbG9jYXRpb24gaW4gYSBET00gdHJlZSB3aGVyZSBhbiB7QGxpbmsgWE1MU2lnbmF0dXJlfSAKKyAqIGlzIHRvIGJlIHVubWFyc2hhbGxlZCBhbmQgdmFsaWRhdGVkIGZyb20uCisgKgorICogPHA+Tm90ZSB0aGF0IHRoZSBiZWhhdmlvciBvZiBhbiB1bm1hcnNoYWxsZWQgPGNvZGU+WE1MU2lnbmF0dXJlPC9jb2RlPiAKKyAqIGlzIHVuZGVmaW5lZCBpZiB0aGUgY29udGVudHMgb2YgdGhlIHVuZGVybHlpbmcgRE9NIHRyZWUgYXJlIG1vZGlmaWVkIGJ5IHRoZSAKKyAqIGNhbGxlciBhZnRlciB0aGUgPGNvZGU+WE1MU2lnbmF0dXJlPC9jb2RlPiBpcyBjcmVhdGVkLgorICoKKyAqIDxwPkFsc28sIG5vdGUgdGhhdCA8Y29kZT5ET01WYWxpZGF0ZUNvbnRleHQ8L2NvZGU+IGluc3RhbmNlcyBjYW4gY29udGFpbgorICogaW5mb3JtYXRpb24gYW5kIHN0YXRlIHNwZWNpZmljIHRvIHRoZSBYTUwgc2lnbmF0dXJlIHN0cnVjdHVyZSBpdCBpcworICogdXNlZCB3aXRoLiBUaGUgcmVzdWx0cyBhcmUgdW5wcmVkaWN0YWJsZSBpZiBhCisgKiA8Y29kZT5ET01WYWxpZGF0ZUNvbnRleHQ8L2NvZGU+IGlzIHVzZWQgd2l0aCBkaWZmZXJlbnQgc2lnbmF0dXJlIHN0cnVjdHVyZXMKKyAqIChmb3IgZXhhbXBsZSwgeW91IHNob3VsZCBub3QgdXNlIHRoZSBzYW1lIDxjb2RlPkRPTVZhbGlkYXRlQ29udGV4dDwvY29kZT4KKyAqIGluc3RhbmNlIHRvIHZhbGlkYXRlIHR3byBkaWZmZXJlbnQge0BsaW5rIFhNTFNpZ25hdHVyZX0gb2JqZWN0cykuCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICogQGF1dGhvciBKU1IgMTA1IEV4cGVydCBHcm91cAorICogQHNlZSBYTUxTaWduYXR1cmVGYWN0b3J5I3VubWFyc2hhbFhNTFNpZ25hdHVyZShYTUxWYWxpZGF0ZUNvbnRleHQpCisgKi8KK3B1YmxpYyBjbGFzcyBET01WYWxpZGF0ZUNvbnRleHQgZXh0ZW5kcyBET01DcnlwdG9Db250ZXh0IAorICAgIGltcGxlbWVudHMgWE1MVmFsaWRhdGVDb250ZXh0IHsKKworICAgIHByaXZhdGUgTm9kZSBub2RlOworCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIDxjb2RlPkRPTVZhbGlkYXRlQ29udGV4dDwvY29kZT4gY29udGFpbmluZyB0aGUgc3BlY2lmaWVkIGtleQorICAgICAqIHNlbGVjdG9yIGFuZCBub2RlLgorICAgICAqCisgICAgICogQHBhcmFtIGtzIGEga2V5IHNlbGVjdG9yIGZvciBmaW5kaW5nIGEgdmFsaWRhdGlvbiBrZXkKKyAgICAgKiBAcGFyYW0gbm9kZSB0aGUgbm9kZQorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+a3M8L2NvZGU+IG9yIDxjb2RlPm5vZGU8L2NvZGU+IGlzIAorICAgICAqICAgIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICovCisgICAgcHVibGljIERPTVZhbGlkYXRlQ29udGV4dChLZXlTZWxlY3RvciBrcywgTm9kZSBub2RlKSB7IAorCWlmIChrcyA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigia2V5IHNlbGVjdG9yIGlzIG51bGwiKTsKKwl9IAorCWlmIChub2RlID09IG51bGwpIHsKKwkgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJub2RlIGlzIG51bGwiKTsKKwl9CisJc2V0S2V5U2VsZWN0b3Ioa3MpOworCXRoaXMubm9kZSA9IG5vZGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIDxjb2RlPkRPTVZhbGlkYXRlQ29udGV4dDwvY29kZT4gY29udGFpbmluZyB0aGUgc3BlY2lmaWVkIGtleQorICAgICAqIGFuZCBub2RlLiBUaGUgdmFsaWRhdGluZyBrZXkgd2lsbCBiZSBzdG9yZWQgaW4gYSAKKyAgICAgKiB7QGxpbmsgS2V5U2VsZWN0b3Ijc2luZ2xldG9uS2V5U2VsZWN0b3Igc2luZ2xldG9uIEtleVNlbGVjdG9yfSB0aGF0CisgICAgICogaXMgcmV0dXJuZWQgd2hlbiB0aGUge0BsaW5rICNnZXRLZXlTZWxlY3RvciBnZXRLZXlTZWxlY3Rvcn0gCisgICAgICogbWV0aG9kIGlzIGNhbGxlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSB2YWxpZGF0aW5nS2V5IHRoZSB2YWxpZGF0aW5nIGtleQorICAgICAqIEBwYXJhbSBub2RlIHRoZSBub2RlCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT52YWxpZGF0aW5nS2V5PC9jb2RlPiBvciAKKyAgICAgKiAgICA8Y29kZT5ub2RlPC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqLworICAgIHB1YmxpYyBET01WYWxpZGF0ZUNvbnRleHQoS2V5IHZhbGlkYXRpbmdLZXksIE5vZGUgbm9kZSkgeyAKKwlpZiAodmFsaWRhdGluZ0tleSA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigidmFsaWRhdGluZ0tleSBpcyBudWxsIik7CisJfQorCWlmIChub2RlID09IG51bGwpIHsKKwkgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJub2RlIGlzIG51bGwiKTsKKwl9CisJc2V0S2V5U2VsZWN0b3IoS2V5U2VsZWN0b3Iuc2luZ2xldG9uS2V5U2VsZWN0b3IodmFsaWRhdGluZ0tleSkpOworCXRoaXMubm9kZSA9IG5vZGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgbm9kZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBub2RlIHRoZSBub2RlIAorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+bm9kZTwvY29kZT4gaXMgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiBAc2VlICNnZXROb2RlCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0Tm9kZShOb2RlIG5vZGUpIHsKKwlpZiAobm9kZSA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigpOworCX0KKwl0aGlzLm5vZGUgPSBub2RlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG5vZGUuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBub2RlIChuZXZlciA8Y29kZT5udWxsPC9jb2RlPikKKyAgICAgKiBAc2VlICNzZXROb2RlKE5vZGUpCisgICAgICovCisgICAgcHVibGljIE5vZGUgZ2V0Tm9kZSgpIHsKKwlyZXR1cm4gbm9kZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL2RvbS9wYWNrYWdlLmh0bWwgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL2RvbS9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU2MWM2ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvZG9tL3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8aHRtbD4KKzxoZWFkPgorPCEtLQorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy0tPgorPCEtLQorIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy0tPgorPC9oZWFkPgorPGJvZHk+CitET00tc3BlY2lmaWMgY2xhc3NlcyBmb3IgdGhlIHtAbGluayBqYXZheC54bWwuY3J5cHRvLmRzaWd9IHBhY2thZ2UuIAorT25seSB1c2VycyB3aG8gYXJlIHVzaW5nIGEgRE9NLWJhc2VkIHtAbGluayAKK2phdmF4LnhtbC5jcnlwdG8uZHNpZy5YTUxTaWduYXR1cmVGYWN0b3J5IFhNTFNpZ25hdHVyZUZhY3Rvcnl9IG9yIAore0BsaW5rIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvLktleUluZm9GYWN0b3J5fSAKK3Nob3VsZCBuZWVkIHRvIG1ha2UgZGlyZWN0IHVzZSBvZiB0aGlzIHBhY2thZ2UuCisKKzxoMj5QYWNrYWdlIFNwZWNpZmljYXRpb248L2gyPgorCis8dWw+Cis8bGk+Cis8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWxkc2lnLWNvcmUvIj4KK1hNTC1TaWduYXR1cmUgU3ludGF4IGFuZCBQcm9jZXNzaW5nOiBXM0MgUmVjb21tZW5kYXRpb248L2E+Cis8bGk+Cis8YSBocmVmPSJodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMzMjc1LnR4dCI+CitSRkMgMzI3NTogWE1MLVNpZ25hdHVyZSBTeW50YXggYW5kIFByb2Nlc3Npbmc8L2E+Cis8L3VsPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL2tleWluZm8vS2V5SW5mby5qYXZhIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9rZXlpbmZvL0tleUluZm8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODE5MmNmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9rZXlpbmZvL0tleUluZm8uamF2YQpAQCAtMCwwICsxLDExNyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by5kc2lnLmtleWluZm87CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLk1hcnNoYWxFeGNlcHRpb247CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5YTUxDcnlwdG9Db250ZXh0OworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uWE1MU3RydWN0dXJlOworCisvKioKKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIFhNTCA8Y29kZT5LZXlJbmZvPC9jb2RlPiBlbGVtZW50IGFzIGRlZmluZWQgaW4KKyAqIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWxkc2lnLWNvcmUvIj4KKyAqIFczQyBSZWNvbW1lbmRhdGlvbiBmb3IgWE1MLVNpZ25hdHVyZSBTeW50YXggYW5kIFByb2Nlc3Npbmc8L2E+LgorICogQSA8Y29kZT5LZXlJbmZvPC9jb2RlPiBjb250YWlucyBhIGxpc3Qgb2Yge0BsaW5rIFhNTFN0cnVjdHVyZX1zLCBlYWNoIG9mIAorICogd2hpY2ggY29udGFpbiBpbmZvcm1hdGlvbiB0aGF0IGVuYWJsZXMgdGhlIHJlY2lwaWVudChzKSB0byBvYnRhaW4gdGhlIGtleSAKKyAqIG5lZWRlZCB0byB2YWxpZGF0ZSBhbiBYTUwgc2lnbmF0dXJlLiBUaGUgWE1MIFNjaGVtYSBEZWZpbml0aW9uIGlzIGRlZmluZWQgYXM6CisgKgorICogPHByZT4KKyAqICZsdDtlbGVtZW50IG5hbWU9IktleUluZm8iIHR5cGU9ImRzOktleUluZm9UeXBlIi8mZ3Q7IAorICogJmx0O2NvbXBsZXhUeXBlIG5hbWU9IktleUluZm9UeXBlIiBtaXhlZD0idHJ1ZSImZ3Q7CisgKiAgICZsdDtjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiJmd0OyAgICAgCisgKiAgICAgJmx0O2VsZW1lbnQgcmVmPSJkczpLZXlOYW1lIi8mZ3Q7IAorICogICAgICZsdDtlbGVtZW50IHJlZj0iZHM6S2V5VmFsdWUiLyZndDsgCisgKiAgICAgJmx0O2VsZW1lbnQgcmVmPSJkczpSZXRyaWV2YWxNZXRob2QiLyZndDsKKyAqICAgICAmbHQ7ZWxlbWVudCByZWY9ImRzOlg1MDlEYXRhIi8mZ3Q7CisgKiAgICAgJmx0O2VsZW1lbnQgcmVmPSJkczpQR1BEYXRhIi8mZ3Q7CisgKiAgICAgJmx0O2VsZW1lbnQgcmVmPSJkczpTUEtJRGF0YSIvJmd0OworICogICAgICZsdDtlbGVtZW50IHJlZj0iZHM6TWdtdERhdGEiLyZndDsKKyAqICAgICAmbHQ7YW55IHByb2Nlc3NDb250ZW50cz0ibGF4IiBuYW1lc3BhY2U9IiMjb3RoZXIiLyZndDsKKyAqICAgICAmbHQ7IS0tICgxLDEpIGVsZW1lbnRzIGZyb20gKDAsdW5ib3VuZGVkKSBuYW1lc3BhY2VzIC0tJmd0OworICogICAmbHQ7L2Nob2ljZSZndDsKKyAqICAgJmx0O2F0dHJpYnV0ZSBuYW1lPSJJZCIgdHlwZT0iSUQiIHVzZT0ib3B0aW9uYWwiLyZndDsgCisgKiAmbHQ7L2NvbXBsZXhUeXBlJmd0OworICogPC9wcmU+CisgKiAKKyAqIEEgPGNvZGU+S2V5SW5mbzwvY29kZT4gaW5zdGFuY2UgbWF5IGJlIGNyZWF0ZWQgYnkgaW52b2tpbmcgb25lIG9mIHRoZSAKKyAqIHtAbGluayBLZXlJbmZvRmFjdG9yeSNuZXdLZXlJbmZvIG5ld0tleUluZm99IG1ldGhvZHMgb2YgdGhlCisgKiB7QGxpbmsgS2V5SW5mb0ZhY3Rvcnl9IGNsYXNzLCBhbmQgcGFzc2luZyBpdCBhIGxpc3Qgb2Ygb25lIG9yIG1vcmUgCisgKiA8Y29kZT5YTUxTdHJ1Y3R1cmU8L2NvZGU+cyBhbmQgYW4gb3B0aW9uYWwgaWQgcGFyYW1ldGVyOworICogZm9yIGV4YW1wbGU6CisgKiA8cHJlPgorICogICBLZXlJbmZvRmFjdG9yeSBmYWN0b3J5ID0gS2V5SW5mb0ZhY3RvcnkuZ2V0SW5zdGFuY2UoIkRPTSIpOworICogICBLZXlJbmZvIGtleUluZm8gPSBmYWN0b3J5Lm5ld0tleUluZm8KKyAqCShDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KGZhY3RvcnkubmV3S2V5TmFtZSgiQWxpY2UiKSwgImtleWluZm8tMSIpKTsKKyAqIDwvcHJlPgorICoKKyAqIDxwPjxjb2RlPktleUluZm88L2NvZGU+IG9iamVjdHMgY2FuIGFsc28gYmUgbWFyc2hhbGxlZCB0byBYTUwgYnkgaW52b2tpbmcKKyAqIHRoZSB7QGxpbmsgI21hcnNoYWwgbWFyc2hhbH0gbWV0aG9kLgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgSlNSIDEwNSBFeHBlcnQgR3JvdXAKKyAqIEBzZWUgS2V5SW5mb0ZhY3RvcnkjbmV3S2V5SW5mbyhMaXN0KQorICogQHNlZSBLZXlJbmZvRmFjdG9yeSNuZXdLZXlJbmZvKExpc3QsIFN0cmluZykKKyAqLworcHVibGljIGludGVyZmFjZSBLZXlJbmZvIGV4dGVuZHMgWE1MU3RydWN0dXJlIHsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgYW4ge0BsaW5rIGphdmEudXRpbC5Db2xsZWN0aW9ucyN1bm1vZGlmaWFibGVMaXN0IHVubW9kaWZpYWJsZSAKKyAgICAgKiBsaXN0fSBjb250YWluaW5nIHRoZSBrZXkgaW5mb3JtYXRpb24uIEVhY2ggZW50cnkgb2YgdGhlIGxpc3QgaXMgCisgICAgICogYW4ge0BsaW5rIFhNTFN0cnVjdHVyZX0uCisgICAgICoKKyAgICAgKiA8cD5JZiB0aGVyZSBpcyBhIHB1YmxpYyBzdWJjbGFzcyByZXByZXNlbnRpbmcgdGhlIHR5cGUgb2YgCisgICAgICogPGNvZGU+WE1MU3RydWN0dXJlPC9jb2RlPiwgaXQgaXMgcmV0dXJuZWQgYXMgYW4gaW5zdGFuY2Ugb2YgdGhhdAorICAgICAqIGNsYXNzIChleDogYW4gPGNvZGU+WDUwOURhdGE8L2NvZGU+IGVsZW1lbnQgd291bGQgYmUgcmV0dXJuZWQgYXMgYW4KKyAgICAgKiBpbnN0YW5jZSBvZiB7QGxpbmsgamF2YXgueG1sLmNyeXB0by5kc2lnLmtleWluZm8uWDUwOURhdGF9KS4KKyAgICAgKgorICAgICAqIEByZXR1cm4gYW4gdW5tb2RpZmlhYmxlIGxpc3Qgb2Ygb25lIG9yIG1vcmUgPGNvZGU+WE1MU3RydWN0dXJlPC9jb2RlPnMgCisgICAgICogICAgaW4gdGhpcyA8Y29kZT5LZXlJbmZvPC9jb2RlPi4gTmV2ZXIgcmV0dXJucyA8Y29kZT5udWxsPC9jb2RlPiBvciBhbgorICAgICAqICAgIGVtcHR5IGxpc3QuCisgICAgICovCisgICAgTGlzdCBnZXRDb250ZW50KCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG9wdGlvbmFsIElkIGF0dHJpYnV0ZSBvZiB0aGlzIDxjb2RlPktleUluZm88L2NvZGU+LCB3aGljaAorICAgICAqIG1heSBiZSB1c2VmdWwgZm9yIHJlZmVyZW5jaW5nIHRoaXMgPGNvZGU+S2V5SW5mbzwvY29kZT4gZnJvbSBvdGhlciAKKyAgICAgKiBYTUwgc3RydWN0dXJlcy4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIElkIGF0dHJpYnV0ZSBvZiB0aGlzIDxjb2RlPktleUluZm88L2NvZGU+IChtYXkgYmUgCisgICAgICogICAgPGNvZGU+bnVsbDwvY29kZT4gaWYgbm90IHNwZWNpZmllZCkKKyAgICAgKi8KKyAgICBTdHJpbmcgZ2V0SWQoKTsKKworICAgIC8qKgorICAgICAqIE1hcnNoYWxzIHRoZSBrZXkgaW5mbyB0byBYTUwuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcGFyZW50IGEgbWVjaGFuaXNtLXNwZWNpZmljIHN0cnVjdHVyZSBjb250YWluaW5nIHRoZSBwYXJlbnQgbm9kZQorICAgICAqICAgIHRoYXQgdGhlIG1hcnNoYWxsZWQga2V5IGluZm8gd2lsbCBiZSBhcHBlbmRlZCB0bworICAgICAqIEBwYXJhbSBjb250ZXh0IHRoZSA8Y29kZT5YTUxDcnlwdG9Db250ZXh0PC9jb2RlPiBjb250YWluaW5nIGFkZGl0aW9uYWwKKyAgICAgKiAgICBjb250ZXh0IChtYXkgYmUgbnVsbCBpZiBub3QgYXBwbGljYWJsZSkKKyAgICAgKiBAdGhyb3dzIENsYXNzQ2FzdEV4Y2VwdGlvbiBpZiB0aGUgdHlwZSBvZiA8Y29kZT5wYXJlbnQ8L2NvZGU+IG9yCisgICAgICogICAgPGNvZGU+Y29udGV4dDwvY29kZT4gaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGlzIGtleSBpbmZvCisgICAgICogQHRocm93cyBNYXJzaGFsRXhjZXB0aW9uIGlmIHRoZSBrZXkgaW5mbyBjYW5ub3QgYmUgbWFyc2hhbGxlZAorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+cGFyZW50PC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqLworICAgIHZvaWQgbWFyc2hhbChYTUxTdHJ1Y3R1cmUgcGFyZW50LCBYTUxDcnlwdG9Db250ZXh0IGNvbnRleHQpCisgICAgICAgIHRocm93cyBNYXJzaGFsRXhjZXB0aW9uOworfQpkaWZmIC0tZ2l0IGEvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9rZXlpbmZvL0tleUluZm9GYWN0b3J5LmphdmEgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL2tleWluZm8vS2V5SW5mb0ZhY3RvcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjZlZmFlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9rZXlpbmZvL0tleUluZm9GYWN0b3J5LmphdmEKQEAgLTAsMCArMSw1MzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvOworCitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5NZXRob2Q7CitpbXBvcnQgamF2YS5tYXRoLkJpZ0ludGVnZXI7CitpbXBvcnQgamF2YS5zZWN1cml0eS5BY2Nlc3NDb250cm9sbGVyOworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5RXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb247CitpbXBvcnQgamF2YS5zZWN1cml0eS5Qcml2aWxlZ2VkQWN0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHJvdmlkZXI7CitpbXBvcnQgamF2YS5zZWN1cml0eS5QdWJsaWNLZXk7CitpbXBvcnQgamF2YS5zZWN1cml0eS5TZWN1cml0eTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNSTDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLk1hcnNoYWxFeGNlcHRpb247CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5Ob1N1Y2hNZWNoYW5pc21FeGNlcHRpb247CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5VUklEZXJlZmVyZW5jZXI7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5YTUxTdHJ1Y3R1cmU7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kb20uRE9NU3RydWN0dXJlOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy4qOworCisvKioKKyAqIEEgZmFjdG9yeSBmb3IgY3JlYXRpbmcge0BsaW5rIEtleUluZm99IG9iamVjdHMgZnJvbSBzY3JhdGNoIG9yIGZvcgorICogdW5tYXJzaGFsbGluZyBhIDxjb2RlPktleUluZm88L2NvZGU+IG9iamVjdCBmcm9tIGEgY29ycmVzcG9uZGluZyBYTUwgCisgKiByZXByZXNlbnRhdGlvbi4KKyAqCisgKiA8cD5FYWNoIGluc3RhbmNlIG9mIDxjb2RlPktleUluZm9GYWN0b3J5PC9jb2RlPiBzdXBwb3J0cyBhIHNwZWNpZmljCisgKiBYTUwgbWVjaGFuaXNtIHR5cGUuIFRvIGNyZWF0ZSBhIDxjb2RlPktleUluZm9GYWN0b3J5PC9jb2RlPiwgY2FsbCBvbmUgb2YgdGhlCisgKiBzdGF0aWMge0BsaW5rICNnZXRJbnN0YW5jZSBnZXRJbnN0YW5jZX0gbWV0aG9kcywgcGFzc2luZyBpbiB0aGUgWE1MIAorICogbWVjaGFuaXNtIHR5cGUgZGVzaXJlZCwgZm9yIGV4YW1wbGU6CisgKgorICogPGJsb2NrcXVvdGU+PGNvZGU+CisgKiAgIEtleUluZm9GYWN0b3J5IGZhY3RvcnkgPSBLZXlJbmZvRmFjdG9yeS5nZXRJbnN0YW5jZSgiRE9NIik7CisgKiA8L2NvZGU+PC9ibG9ja3F1b3RlPgorICoKKyAqIDxwPlRoZSBvYmplY3RzIHRoYXQgdGhpcyBmYWN0b3J5IHByb2R1Y2VzIHdpbGwgYmUgYmFzZWQKKyAqIG9uIERPTSBhbmQgYWJpZGUgYnkgdGhlIERPTSBpbnRlcm9wZXJhYmlsaXR5IHJlcXVpcmVtZW50cyBhcyBkZWZpbmVkIGluIHRoZQorICogPGEgaHJlZj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sI0RPTSBNZWNoYW5pc20gUmVxdWlyZW1lbnRzIj4KKyAqIERPTSBNZWNoYW5pc20gUmVxdWlyZW1lbnRzPC9hPiBzZWN0aW9uIG9mIHRoZSBBUEkgb3ZlcnZpZXcuIFNlZSB0aGUKKyAqIDxhIGhyZWY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCNTZXJ2aWNlIFByb3ZpZGVyIj5TZXJ2aWNlIAorICogUHJvdmlkZXJzPC9hPiBzZWN0aW9uIG9mIHRoZSBBUEkgb3ZlcnZpZXcgZm9yIGEgbGlzdCBvZiBzdGFuZGFyZCBtZWNoYW5pc20gCisgKiB0eXBlcy4KKyAqCisgKiA8cD48Y29kZT5LZXlJbmZvRmFjdG9yeTwvY29kZT4gaW1wbGVtZW50YXRpb25zIGFyZSByZWdpc3RlcmVkIGFuZCBsb2FkZWQKKyAqIHVzaW5nIHRoZSB7QGxpbmsgamF2YS5zZWN1cml0eS5Qcm92aWRlcn0gbWVjaGFuaXNtLgorICogRm9yIGV4YW1wbGUsIGEgc2VydmljZSBwcm92aWRlciB0aGF0IHN1cHBvcnRzIHRoZQorICogRE9NIG1lY2hhbmlzbSB3b3VsZCBiZSBzcGVjaWZpZWQgaW4gdGhlIDxjb2RlPlByb3ZpZGVyPC9jb2RlPiBzdWJjbGFzcyBhczoKKyAqIDxwcmU+CisgKiAgICAgcHV0KCJLZXlJbmZvRmFjdG9yeS5ET00iLCAib3JnLmV4YW1wbGUuRE9NS2V5SW5mb0ZhY3RvcnkiKTsKKyAqIDwvcHJlPgorICoKKyAqIDxwPkFsc28sIHRoZSA8Y29kZT5YTUxTdHJ1Y3R1cmU8L2NvZGU+cyB0aGF0IGFyZSBjcmVhdGVkIGJ5IHRoaXMgZmFjdG9yeQorICogbWF5IGNvbnRhaW4gc3RhdGUgc3BlY2lmaWMgdG8gdGhlIDxjb2RlPktleUluZm88L2NvZGU+IGFuZCBhcmUgbm90CisgKiBpbnRlbmRlZCB0byBiZSByZXVzYWJsZS4KKyAqCisgKiA8cD5BbiBpbXBsZW1lbnRhdGlvbiBNVVNUIG1pbmltYWxseSBzdXBwb3J0IHRoZSBkZWZhdWx0IG1lY2hhbmlzbSB0eXBlOiBET00uCisgKgorICogPHA+Tm90ZSB0aGF0IGEgY2FsbGVyIG11c3QgdXNlIHRoZSBzYW1lIDxjb2RlPktleUluZm9GYWN0b3J5PC9jb2RlPgorICogaW5zdGFuY2UgdG8gY3JlYXRlIHRoZSA8Y29kZT5YTUxTdHJ1Y3R1cmU8L2NvZGU+cyBvZiBhIHBhcnRpY3VsYXIKKyAqIDxjb2RlPktleUluZm88L2NvZGU+IG9iamVjdC4gVGhlIGJlaGF2aW9yIGlzIHVuZGVmaW5lZCBpZiAKKyAqIDxjb2RlPlhNTFN0cnVjdHVyZTwvY29kZT5zIGZyb20gZGlmZmVyZW50IHByb3ZpZGVycyBvciBkaWZmZXJlbnQgbWVjaGFuaXNtIAorICogdHlwZXMgYXJlIHVzZWQgdG9nZXRoZXIuCisgKgorICogPHA+PGI+Q29uY3VycmVudCBBY2Nlc3M8L2I+CisgKiA8cD5UaGUgc3RhdGljIG1ldGhvZHMgb2YgdGhpcyBjbGFzcyBhcmUgZ3VhcmFudGVlZCB0byBiZSB0aHJlYWQtc2FmZS4gCisgKiBNdWx0aXBsZSB0aHJlYWRzIG1heSBjb25jdXJyZW50bHkgaW52b2tlIHRoZSBzdGF0aWMgbWV0aG9kcyBkZWZpbmVkIGluIHRoaXMgCisgKiBjbGFzcyB3aXRoIG5vIGlsbCBlZmZlY3RzLgorICoKKyAqIDxwPkhvd2V2ZXIsIHRoaXMgaXMgbm90IHRydWUgZm9yIHRoZSBub24tc3RhdGljIG1ldGhvZHMgZGVmaW5lZCBieSB0aGlzIAorICogY2xhc3MuIFVubGVzcyBvdGhlcndpc2UgZG9jdW1lbnRlZCBieSBhIHNwZWNpZmljIHByb3ZpZGVyLCB0aHJlYWRzIHRoYXQgCisgKiBuZWVkIHRvIGFjY2VzcyBhIHNpbmdsZSA8Y29kZT5LZXlJbmZvRmFjdG9yeTwvY29kZT4gaW5zdGFuY2UgY29uY3VycmVudGx5IAorICogc2hvdWxkIHN5bmNocm9uaXplIGFtb25nc3QgdGhlbXNlbHZlcyBhbmQgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGxvY2tpbmcuIAorICogTXVsdGlwbGUgdGhyZWFkcyBlYWNoIG1hbmlwdWxhdGluZyBhIGRpZmZlcmVudCA8Y29kZT5LZXlJbmZvRmFjdG9yeTwvY29kZT4gCisgKiBpbnN0YW5jZSBuZWVkIG5vdCBzeW5jaHJvbml6ZS4KKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKiBAYXV0aG9yIEpTUiAxMDUgRXhwZXJ0IEdyb3VwCisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBLZXlJbmZvRmFjdG9yeSB7CisKKyAgICBwcml2YXRlIFN0cmluZyBtZWNoYW5pc21UeXBlOworICAgIHByaXZhdGUgUHJvdmlkZXIgcHJvdmlkZXI7CisKKyAgICBwcml2YXRlIHN0YXRpYyBDbGFzcyBjbDsgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQ2xhc3NbXSBnZXRJbXBsUGFyYW1zID0gCisJeyBTdHJpbmcuY2xhc3MsIFN0cmluZy5jbGFzcywgUHJvdmlkZXIuY2xhc3MgfTsKKyAgICBwcml2YXRlIHN0YXRpYyBNZXRob2QgZ2V0SW1wbE1ldGhvZDsKKyAgICBzdGF0aWMgeworCXRyeSB7CisJICAgIGNsID0gQ2xhc3MuZm9yTmFtZSgiamF2YXgueG1sLmNyeXB0by5kc2lnLlhNTERTaWdTZWN1cml0eSIpOworCX0gY2F0Y2ggKENsYXNzTm90Rm91bmRFeGNlcHRpb24gY25mZSkgeyB9CisJZ2V0SW1wbE1ldGhvZCA9IChNZXRob2QpCisgICAgICAgICAgICBBY2Nlc3NDb250cm9sbGVyLmRvUHJpdmlsZWdlZChuZXcgUHJpdmlsZWdlZEFjdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyBPYmplY3QgcnVuKCkgeworCQlNZXRob2QgbSA9IG51bGw7CisJCXRyeSB7CisgICAgICAgICAgICAgICAgICAgIG0gPSBjbC5nZXREZWNsYXJlZE1ldGhvZCgiZ2V0SW1wbCIsIGdldEltcGxQYXJhbXMpOworICAgICAgICAgICAgICAgICAgICBpZiAobSAhPSBudWxsKQorCQkJbS5zZXRBY2Nlc3NpYmxlKHRydWUpOworCQl9IGNhdGNoIChOb1N1Y2hNZXRob2RFeGNlcHRpb24gbnNtZSkgeyB9CisgICAgICAgICAgICAgICAgcmV0dXJuIG07CisgICAgICAgICAgICB9CisJfSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGVmYXVsdCBjb25zdHJ1Y3RvciwgZm9yIGludm9jYXRpb24gYnkgc3ViY2xhc3Nlcy4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgS2V5SW5mb0ZhY3RvcnkoKSB7fQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIDxjb2RlPktleUluZm9GYWN0b3J5PC9jb2RlPiB0aGF0IHN1cHBvcnRzIHRoZQorICAgICAqIHNwZWNpZmllZCBYTUwgcHJvY2Vzc2luZyBtZWNoYW5pc20gYW5kIHJlcHJlc2VudGF0aW9uIHR5cGUgKGV4OiAiRE9NIikuCisgICAgICoKKyAgICAgKiA8cD5UaGlzIG1ldGhvZCB1c2VzIHRoZSBzdGFuZGFyZCBKQ0EgcHJvdmlkZXIgbG9va3VwIG1lY2hhbmlzbSB0byAKKyAgICAgKiBsb2NhdGUgYW5kIGluc3RhbnRpYXRlIGEgPGNvZGU+S2V5SW5mb0ZhY3Rvcnk8L2NvZGU+IGltcGxlbWVudGF0aW9uIG9mIAorICAgICAqIHRoZSBkZXNpcmVkIG1lY2hhbmlzbSB0eXBlLiBJdCB0cmF2ZXJzZXMgdGhlIGxpc3Qgb2YgcmVnaXN0ZXJlZCBzZWN1cml0eSAKKyAgICAgKiA8Y29kZT5Qcm92aWRlcjwvY29kZT5zLCBzdGFydGluZyB3aXRoIHRoZSBtb3N0IHByZWZlcnJlZCAKKyAgICAgKiA8Y29kZT5Qcm92aWRlcjwvY29kZT4uIEEgbmV3IDxjb2RlPktleUluZm9GYWN0b3J5PC9jb2RlPiBvYmplY3QgCisgICAgICogZnJvbSB0aGUgZmlyc3QgPGNvZGU+UHJvdmlkZXI8L2NvZGU+IHRoYXQgc3VwcG9ydHMgdGhlIHNwZWNpZmllZCAKKyAgICAgKiBtZWNoYW5pc20gaXMgcmV0dXJuZWQuIAorICAgICAqIAorICAgICAqIDxwPiBOb3RlIHRoYXQgdGhlIGxpc3Qgb2YgcmVnaXN0ZXJlZCBwcm92aWRlcnMgbWF5IGJlIHJldHJpZXZlZCB2aWEgCisgICAgICogdGhlIHtAbGluayBTZWN1cml0eSNnZXRQcm92aWRlcnMoKSBTZWN1cml0eS5nZXRQcm92aWRlcnMoKX0gbWV0aG9kLiAKKyAgICAgKgorICAgICAqIEBwYXJhbSBtZWNoYW5pc21UeXBlIHRoZSB0eXBlIG9mIHRoZSBYTUwgcHJvY2Vzc2luZyBtZWNoYW5pc20gYW5kCisgICAgICogICAgcmVwcmVzZW50YXRpb24uIFNlZSB0aGUgPGEgCisgICAgICogICAgaHJlZj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sI1NlcnZpY2UgUHJvdmlkZXIiPlNlcnZpY2UgCisgICAgICogICAgUHJvdmlkZXJzPC9hPiBzZWN0aW9uIG9mIHRoZSBBUEkgb3ZlcnZpZXcgZm9yIGEgbGlzdCBvZiBzdGFuZGFyZCAKKyAgICAgKiAgICBtZWNoYW5pc20gdHlwZXMuCisgICAgICogQHJldHVybiBhIG5ldyA8Y29kZT5LZXlJbmZvRmFjdG9yeTwvY29kZT4KKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPm1lY2hhbmlzbVR5cGU8L2NvZGU+IGlzCisgICAgICogICAgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiBAdGhyb3dzIE5vU3VjaE1lY2hhbmlzbUV4Y2VwdGlvbiBpZiBubyA8Y29kZT5Qcm92aWRlcjwvY29kZT4gc3VwcG9ydHMgYQorICAgICAqICAgIDxjb2RlPktleUluZm9GYWN0b3J5PC9jb2RlPiBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBtZWNoYW5pc20KKyAgICAgKiBAc2VlIFByb3ZpZGVyCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBLZXlJbmZvRmFjdG9yeSBnZXRJbnN0YW5jZShTdHJpbmcgbWVjaGFuaXNtVHlwZSkgeworCWlmIChtZWNoYW5pc21UeXBlID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigibWVjaGFuaXNtVHlwZSBjYW5ub3QgYmUgbnVsbCIpOworCX0KKworCXJldHVybiBmaW5kSW5zdGFuY2UobWVjaGFuaXNtVHlwZSwgbnVsbCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgS2V5SW5mb0ZhY3RvcnkgZmluZEluc3RhbmNlKFN0cmluZyBtZWNoYW5pc21UeXBlLCAKKwlQcm92aWRlciBwcm92aWRlcikgeworCisJaWYgKGdldEltcGxNZXRob2QgPT0gbnVsbCkgeworCSAgICB0aHJvdyBuZXcgTm9TdWNoTWVjaGFuaXNtRXhjZXB0aW9uCisJCSgiQ2Fubm90IGZpbmQgIiArIG1lY2hhbmlzbVR5cGUgKyAiIG1lY2hhbmlzbSB0eXBlIik7CisJfQorCisgICAgICAgIE9iamVjdFtdIG9ianMgPSBudWxsOworCXRyeSB7CisgICAgICAgICAgICBvYmpzID0gKE9iamVjdFtdKSBnZXRJbXBsTWV0aG9kLmludm9rZShudWxsLCBuZXcgT2JqZWN0W10gCisJICAgICAgICB7bWVjaGFuaXNtVHlwZSwgIktleUluZm9GYWN0b3J5IiwgcHJvdmlkZXJ9KTsKKwl9IGNhdGNoIChJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIGlhZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE5vU3VjaE1lY2hhbmlzbUV4Y2VwdGlvbgorCQkoIkNhbm5vdCBmaW5kICIgKyBtZWNoYW5pc21UeXBlICsgIiBtZWNoYW5pc20gdHlwZSIsIGlhZSk7CisJfSBjYXRjaCAoSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiBpdGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBOb1N1Y2hNZWNoYW5pc21FeGNlcHRpb24KKwkJKCJDYW5ub3QgZmluZCAiICsgbWVjaGFuaXNtVHlwZSArICIgbWVjaGFuaXNtIHR5cGUiLCBpdGUpOworCX0KKworICAgICAgICBLZXlJbmZvRmFjdG9yeSBmYWN0b3J5ID0gKEtleUluZm9GYWN0b3J5KSBvYmpzWzBdOworICAgICAgICBmYWN0b3J5Lm1lY2hhbmlzbVR5cGUgPSBtZWNoYW5pc21UeXBlOworICAgICAgICBmYWN0b3J5LnByb3ZpZGVyID0gKFByb3ZpZGVyKSBvYmpzWzFdOworICAgICAgICByZXR1cm4gZmFjdG9yeTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgPGNvZGU+S2V5SW5mb0ZhY3Rvcnk8L2NvZGU+IHRoYXQgc3VwcG9ydHMgdGhlCisgICAgICogcmVxdWVzdGVkIFhNTCBwcm9jZXNzaW5nIG1lY2hhbmlzbSBhbmQgcmVwcmVzZW50YXRpb24gdHlwZSAoZXg6ICJET00iKSwKKyAgICAgKiBhcyBzdXBwbGllZCBieSB0aGUgc3BlY2lmaWVkIHByb3ZpZGVyLiBOb3RlIHRoYXQgdGhlIHNwZWNpZmllZCAKKyAgICAgKiA8Y29kZT5Qcm92aWRlcjwvY29kZT4gb2JqZWN0IGRvZXMgbm90IGhhdmUgdG8gYmUgcmVnaXN0ZXJlZCBpbiB0aGUgCisgICAgICogcHJvdmlkZXIgbGlzdC4gCisgICAgICoKKyAgICAgKiBAcGFyYW0gbWVjaGFuaXNtVHlwZSB0aGUgdHlwZSBvZiB0aGUgWE1MIHByb2Nlc3NpbmcgbWVjaGFuaXNtIGFuZAorICAgICAqICAgIHJlcHJlc2VudGF0aW9uLiBTZWUgdGhlIDxhIAorICAgICAqICAgIGhyZWY9Ii4uLy4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCNTZXJ2aWNlIFByb3ZpZGVyIj5TZXJ2aWNlIAorICAgICAqICAgIFByb3ZpZGVyczwvYT4gc2VjdGlvbiBvZiB0aGUgQVBJIG92ZXJ2aWV3IGZvciBhIGxpc3Qgb2Ygc3RhbmRhcmQgCisgICAgICogICAgbWVjaGFuaXNtIHR5cGVzLgorICAgICAqIEBwYXJhbSBwcm92aWRlciB0aGUgPGNvZGU+UHJvdmlkZXI8L2NvZGU+IG9iamVjdAorICAgICAqIEByZXR1cm4gYSBuZXcgPGNvZGU+S2V5SW5mb0ZhY3Rvcnk8L2NvZGU+CisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5tZWNoYW5pc21UeXBlPC9jb2RlPiBvcgorICAgICAqICAgIDxjb2RlPnByb3ZpZGVyPC9jb2RlPiBhcmUgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiBAdGhyb3dzIE5vU3VjaE1lY2hhbmlzbUV4Y2VwdGlvbiBpZiBhIDxjb2RlPktleUluZm9GYWN0b3J5PC9jb2RlPiAKKyAgICAgKiAgICBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBtZWNoYW5pc20gaXMgbm90IGF2YWlsYWJsZSBmcm9tIHRoZSAKKyAgICAgKiAgICBzcGVjaWZpZWQgPGNvZGU+UHJvdmlkZXI8L2NvZGU+IG9iamVjdAorICAgICAqIEBzZWUgUHJvdmlkZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEtleUluZm9GYWN0b3J5IGdldEluc3RhbmNlKFN0cmluZyBtZWNoYW5pc21UeXBlLAorCVByb3ZpZGVyIHByb3ZpZGVyKSB7CisJaWYgKG1lY2hhbmlzbVR5cGUgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJtZWNoYW5pc21UeXBlIGNhbm5vdCBiZSBudWxsIik7CisJfSBlbHNlIGlmIChwcm92aWRlciA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigicHJvdmlkZXIgY2Fubm90IGJlIG51bGwiKTsKKwl9CisKKwlyZXR1cm4gZmluZEluc3RhbmNlKG1lY2hhbmlzbVR5cGUsIHByb3ZpZGVyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgPGNvZGU+S2V5SW5mb0ZhY3Rvcnk8L2NvZGU+IHRoYXQgc3VwcG9ydHMgdGhlCisgICAgICogcmVxdWVzdGVkIFhNTCBwcm9jZXNzaW5nIG1lY2hhbmlzbSBhbmQgcmVwcmVzZW50YXRpb24gdHlwZSAoZXg6ICJET00iKSwKKyAgICAgKiBhcyBzdXBwbGllZCBieSB0aGUgc3BlY2lmaWVkIHByb3ZpZGVyLiBUaGUgc3BlY2lmaWVkIHByb3ZpZGVyIG11c3QgYmUgCisgICAgICogcmVnaXN0ZXJlZCBpbiB0aGUgc2VjdXJpdHkgcHJvdmlkZXIgbGlzdC4gCisgICAgICoKKyAgICAgKiA8cD5Ob3RlIHRoYXQgdGhlIGxpc3Qgb2YgcmVnaXN0ZXJlZCBwcm92aWRlcnMgbWF5IGJlIHJldHJpZXZlZCB2aWEgCisgICAgICogdGhlIHtAbGluayBTZWN1cml0eSNnZXRQcm92aWRlcnMoKSBTZWN1cml0eS5nZXRQcm92aWRlcnMoKX0gbWV0aG9kLiAKKyAgICAgKgorICAgICAqIEBwYXJhbSBtZWNoYW5pc21UeXBlIHRoZSB0eXBlIG9mIHRoZSBYTUwgcHJvY2Vzc2luZyBtZWNoYW5pc20gYW5kCisgICAgICogICAgcmVwcmVzZW50YXRpb24uIFNlZSB0aGUgPGEgCisgICAgICogICAgaHJlZj0iLi4vLi4vLi4vLi4vLi4vb3ZlcnZpZXctc3VtbWFyeS5odG1sI1NlcnZpY2UgUHJvdmlkZXIiPlNlcnZpY2UgCisgICAgICogICAgUHJvdmlkZXJzPC9hPiBzZWN0aW9uIG9mIHRoZSBBUEkgb3ZlcnZpZXcgZm9yIGEgbGlzdCBvZiBzdGFuZGFyZCAKKyAgICAgKiAgICBtZWNoYW5pc20gdHlwZXMuCisgICAgICogQHBhcmFtIHByb3ZpZGVyIHRoZSBzdHJpbmcgbmFtZSBvZiB0aGUgcHJvdmlkZXIKKyAgICAgKiBAcmV0dXJuIGEgbmV3IDxjb2RlPktleUluZm9GYWN0b3J5PC9jb2RlPgorICAgICAqIEB0aHJvd3MgTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24gaWYgdGhlIHNwZWNpZmllZCBwcm92aWRlciBpcyBub3QgCisgICAgICogICAgcmVnaXN0ZXJlZCBpbiB0aGUgc2VjdXJpdHkgcHJvdmlkZXIgbGlzdAorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+bWVjaGFuaXNtVHlwZTwvY29kZT4gb3IKKyAgICAgKiAgICA8Y29kZT5wcm92aWRlcjwvY29kZT4gYXJlIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogQHRocm93cyBOb1N1Y2hNZWNoYW5pc21FeGNlcHRpb24gaWYgYSA8Y29kZT5LZXlJbmZvRmFjdG9yeTwvY29kZT4gCisgICAgICogICAgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgbWVjaGFuaXNtIGlzIG5vdCBhdmFpbGFibGUgZnJvbSB0aGUgCisgICAgICogICAgc3BlY2lmaWVkIHByb3ZpZGVyCisgICAgICogQHNlZSBQcm92aWRlcgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgS2V5SW5mb0ZhY3RvcnkgZ2V0SW5zdGFuY2UoU3RyaW5nIG1lY2hhbmlzbVR5cGUsCisJU3RyaW5nIHByb3ZpZGVyKSB0aHJvd3MgTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24geworCWlmIChtZWNoYW5pc21UeXBlID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigibWVjaGFuaXNtVHlwZSBjYW5ub3QgYmUgbnVsbCIpOworCX0gZWxzZSBpZiAocHJvdmlkZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJwcm92aWRlciBjYW5ub3QgYmUgbnVsbCIpOworCX0KKworCVByb3ZpZGVyIHByb3YgPSBTZWN1cml0eS5nZXRQcm92aWRlcihwcm92aWRlcik7CisJaWYgKHByb3YgPT0gbnVsbCkgeworCSAgICB0aHJvdyBuZXcgTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24oImNhbm5vdCBmaW5kIHByb3ZpZGVyIG5hbWVkICIgCisJCSsgcHJvdmlkZXIpOworCX0KKworCXJldHVybiBmaW5kSW5zdGFuY2UobWVjaGFuaXNtVHlwZSwgcHJvdik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIDxjb2RlPktleUluZm9GYWN0b3J5PC9jb2RlPiB0aGF0IHN1cHBvcnRzIHRoZQorICAgICAqIGRlZmF1bHQgWE1MIHByb2Nlc3NpbmcgbWVjaGFuaXNtIGFuZCByZXByZXNlbnRhdGlvbiB0eXBlICgiRE9NIikuCisgICAgICoKKyAgICAgKiA8cD5UaGlzIG1ldGhvZCB1c2VzIHRoZSBzdGFuZGFyZCBKQ0EgcHJvdmlkZXIgbG9va3VwIG1lY2hhbmlzbSB0byAKKyAgICAgKiBsb2NhdGUgYW5kIGluc3RhbnRpYXRlIGEgPGNvZGU+S2V5SW5mb0ZhY3Rvcnk8L2NvZGU+IGltcGxlbWVudGF0aW9uIG9mIAorICAgICAqIHRoZSBkZWZhdWx0IG1lY2hhbmlzbSB0eXBlLiBJdCB0cmF2ZXJzZXMgdGhlIGxpc3Qgb2YgcmVnaXN0ZXJlZCBzZWN1cml0eSAKKyAgICAgKiA8Y29kZT5Qcm92aWRlcjwvY29kZT5zLCBzdGFydGluZyB3aXRoIHRoZSBtb3N0IHByZWZlcnJlZAorICAgICAqIDxjb2RlPlByb3ZpZGVyPC9jb2RlPi4gIEEgbmV3IDxjb2RlPktleUluZm9GYWN0b3J5PC9jb2RlPiBvYmplY3QKKyAgICAgKiBmcm9tIHRoZSBmaXJzdCA8Y29kZT5Qcm92aWRlcjwvY29kZT4gdGhhdCBzdXBwb3J0cyB0aGUgRE9NIG1lY2hhbmlzbSBpcyAKKyAgICAgKiByZXR1cm5lZC4gCisgICAgICogCisgICAgICogPHA+IE5vdGUgdGhhdCB0aGUgbGlzdCBvZiByZWdpc3RlcmVkIHByb3ZpZGVycyBtYXkgYmUgcmV0cmlldmVkIHZpYSAKKyAgICAgKiB0aGUge0BsaW5rIFNlY3VyaXR5I2dldFByb3ZpZGVycygpIFNlY3VyaXR5LmdldFByb3ZpZGVycygpfSBtZXRob2QuIAorICAgICAqCisgICAgICogQHJldHVybiBhIG5ldyA8Y29kZT5LZXlJbmZvRmFjdG9yeTwvY29kZT4KKyAgICAgKiBAdGhyb3dzIE5vU3VjaE1lY2hhbmlzbUV4Y2VwdGlvbiBpZiBubyA8Y29kZT5Qcm92aWRlcjwvY29kZT4gc3VwcG9ydHMgYSAKKyAgICAgKiAgICA8Y29kZT5LZXlJbmZvRmFjdG9yeTwvY29kZT4gaW1wbGVtZW50YXRpb24gZm9yIHRoZSBET00gbWVjaGFuaXNtCisgICAgICogQHNlZSBQcm92aWRlcgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgS2V5SW5mb0ZhY3RvcnkgZ2V0SW5zdGFuY2UoKSB7CisgICAgICAgIHJldHVybiBnZXRJbnN0YW5jZSgiRE9NIik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgdHlwZSBvZiB0aGUgWE1MIHByb2Nlc3NpbmcgbWVjaGFuaXNtIGFuZCByZXByZXNlbnRhdGlvbgorICAgICAqIHN1cHBvcnRlZCBieSB0aGlzIDxjb2RlPktleUluZm9GYWN0b3J5PC9jb2RlPiAoZXg6ICJET00iKQorICAgICAqCisgICAgICogQHJldHVybiB0aGUgWE1MIHByb2Nlc3NpbmcgbWVjaGFuaXNtIHR5cGUgc3VwcG9ydGVkIGJ5IHRoaXMKKyAgICAgKiAgICA8Y29kZT5LZXlJbmZvRmFjdG9yeTwvY29kZT4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldE1lY2hhbmlzbVR5cGUoKSB7CisgICAgICAgIHJldHVybiBtZWNoYW5pc21UeXBlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHByb3ZpZGVyIG9mIHRoaXMgPGNvZGU+S2V5SW5mb0ZhY3Rvcnk8L2NvZGU+LgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgcHJvdmlkZXIgb2YgdGhpcyA8Y29kZT5LZXlJbmZvRmFjdG9yeTwvY29kZT4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgUHJvdmlkZXIgZ2V0UHJvdmlkZXIoKSB7CisJcmV0dXJuIHByb3ZpZGVyOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSA8Y29kZT5LZXlJbmZvPC9jb2RlPiBjb250YWluaW5nIHRoZSBzcGVjaWZpZWQgbGlzdCBvZgorICAgICAqIGtleSBpbmZvcm1hdGlvbiB0eXBlcy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjb250ZW50IGEgbGlzdCBvZiBvbmUgb3IgbW9yZSB7QGxpbmsgWE1MU3RydWN0dXJlfXMgcmVwcmVzZW50aW5nIAorICAgICAqICAgIGtleSBpbmZvcm1hdGlvbiB0eXBlcy4gVGhlIGxpc3QgaXMgZGVmZW5zaXZlbHkgY29waWVkIHRvIHByb3RlY3QKKyAgICAgKiAgICBhZ2FpbnN0IHN1YnNlcXVlbnQgbW9kaWZpY2F0aW9uLgorICAgICAqIEByZXR1cm4gYSA8Y29kZT5LZXlJbmZvPC9jb2RlPgorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+Y29udGVudDwvY29kZT4gaXMgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiA8Y29kZT5jb250ZW50PC9jb2RlPiBpcyBlbXB0eQorICAgICAqIEB0aHJvd3MgQ2xhc3NDYXN0RXhjZXB0aW9uIGlmIDxjb2RlPmNvbnRlbnQ8L2NvZGU+IGNvbnRhaW5zIGFueSBlbnRyaWVzCisgICAgICogICAgdGhhdCBhcmUgbm90IG9mIHR5cGUge0BsaW5rIFhNTFN0cnVjdHVyZX0KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgS2V5SW5mbyBuZXdLZXlJbmZvKExpc3QgY29udGVudCk7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+S2V5SW5mbzwvY29kZT4gY29udGFpbmluZyB0aGUgc3BlY2lmaWVkIGxpc3Qgb2Yga2V5CisgICAgICogaW5mb3JtYXRpb24gdHlwZXMgYW5kIG9wdGlvbmFsIGlkLiBUaGUKKyAgICAgKiA8Y29kZT5pZDwvY29kZT4gcGFyYW1ldGVyIHJlcHJlc2VudHMgdGhlIHZhbHVlIG9mIGFuIFhNTAorICAgICAqIDxjb2RlPklEPC9jb2RlPiBhdHRyaWJ1dGUgYW5kIGlzIHVzZWZ1bCBmb3IgcmVmZXJlbmNpbmcKKyAgICAgKiB0aGUgPGNvZGU+S2V5SW5mbzwvY29kZT4gZnJvbSBvdGhlciBYTUwgc3RydWN0dXJlcy4gCisgICAgICoKKyAgICAgKiBAcGFyYW0gY29udGVudCBhIGxpc3Qgb2Ygb25lIG9yIG1vcmUge0BsaW5rIFhNTFN0cnVjdHVyZX1zIHJlcHJlc2VudGluZyAKKyAgICAgKiAgICBrZXkgaW5mb3JtYXRpb24gdHlwZXMuIFRoZSBsaXN0IGlzIGRlZmVuc2l2ZWx5IGNvcGllZCB0byBwcm90ZWN0CisgICAgICogICAgYWdhaW5zdCBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbi4KKyAgICAgKiBAcGFyYW0gaWQgdGhlIHZhbHVlIG9mIGFuIFhNTCA8Y29kZT5JRDwvY29kZT4gKG1heSBiZSA8Y29kZT5udWxsPC9jb2RlPikKKyAgICAgKiBAcmV0dXJuIGEgPGNvZGU+S2V5SW5mbzwvY29kZT4KKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPmNvbnRlbnQ8L2NvZGU+IGlzIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgPGNvZGU+Y29udGVudDwvY29kZT4gaXMgZW1wdHkKKyAgICAgKiBAdGhyb3dzIENsYXNzQ2FzdEV4Y2VwdGlvbiBpZiA8Y29kZT5jb250ZW50PC9jb2RlPiBjb250YWlucyBhbnkgZW50cmllcworICAgICAqICAgIHRoYXQgYXJlIG5vdCBvZiB0eXBlIHtAbGluayBYTUxTdHJ1Y3R1cmV9CisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IEtleUluZm8gbmV3S2V5SW5mbyhMaXN0IGNvbnRlbnQsIFN0cmluZyBpZCk7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+S2V5TmFtZTwvY29kZT4gZnJvbSB0aGUgc3BlY2lmaWVkIG5hbWUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbmFtZSB0aGUgbmFtZSB0aGF0IGlkZW50aWZpZXMgdGhlIGtleQorICAgICAqIEByZXR1cm4gYSA8Y29kZT5LZXlOYW1lPC9jb2RlPgorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+bmFtZTwvY29kZT4gaXMgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgS2V5TmFtZSBuZXdLZXlOYW1lKFN0cmluZyBuYW1lKTsKKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSA8Y29kZT5LZXlWYWx1ZTwvY29kZT4gZnJvbSB0aGUgc3BlY2lmaWVkIHB1YmxpYyBrZXkuCisgICAgICoKKyAgICAgKiBAcGFyYW0ga2V5IHRoZSBwdWJsaWMga2V5CisgICAgICogQHJldHVybiBhIDxjb2RlPktleVZhbHVlPC9jb2RlPgorICAgICAqIEB0aHJvd3MgS2V5RXhjZXB0aW9uIGlmIHRoZSA8Y29kZT5rZXk8L2NvZGU+J3MgYWxnb3JpdGhtIGlzIG5vdCAKKyAgICAgKiAgICByZWNvZ25pemVkIG9yIHN1cHBvcnRlZCBieSB0aGlzIDxjb2RlPktleUluZm9GYWN0b3J5PC9jb2RlPgorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+a2V5PC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBLZXlWYWx1ZSBuZXdLZXlWYWx1ZShQdWJsaWNLZXkga2V5KSB0aHJvd3MgS2V5RXhjZXB0aW9uOworCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIDxjb2RlPlBHUERhdGE8L2NvZGU+IGZyb20gdGhlIHNwZWNpZmllZCBQR1AgcHVibGljIGtleQorICAgICAqIGlkZW50aWZpZXIuCisgICAgICoKKyAgICAgKiBAcGFyYW0ga2V5SWQgYSBQR1AgcHVibGljIGtleSBpZGVudGlmaWVyIGFzIGRlZmluZWQgaW4gPGEgaHJlZj0KKyAgICAgKiAgICAiaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjQ0MC50eHQiPlJGQyAyNDQwPC9hPiwgc2VjdGlvbiAxMS4yLgorICAgICAqICAgIFRoZSBhcnJheSBpcyBjbG9uZWQgdG8gcHJvdGVjdCBhZ2FpbnN0IHN1YnNlcXVlbnQgbW9kaWZpY2F0aW9uLgorICAgICAqIEByZXR1cm4gYSA8Y29kZT5QR1BEYXRhPC9jb2RlPgorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+a2V5SWQ8L2NvZGU+IGlzIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGtleSBpZCBpcyBub3QgaW4gdGhlIGNvcnJlY3QKKyAgICAgKiAgICBmb3JtYXQKKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgUEdQRGF0YSBuZXdQR1BEYXRhKGJ5dGVbXSBrZXlJZCk7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+UEdQRGF0YTwvY29kZT4gZnJvbSB0aGUgc3BlY2lmaWVkIFBHUCBwdWJsaWMga2V5CisgICAgICogaWRlbnRpZmllciwgYW5kIG9wdGlvbmFsIGtleSBtYXRlcmlhbCBwYWNrZXQgYW5kIGxpc3Qgb2YgZXh0ZXJuYWwgCisgICAgICogZWxlbWVudHMuCisgICAgICoKKyAgICAgKiBAcGFyYW0ga2V5SWQgYSBQR1AgcHVibGljIGtleSBpZGVudGlmaWVyIGFzIGRlZmluZWQgaW4gPGEgaHJlZj0KKyAgICAgKiAgICAiaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjQ0MC50eHQiPlJGQyAyNDQwPC9hPiwgc2VjdGlvbiAxMS4yLgorICAgICAqICAgIFRoZSBhcnJheSBpcyBjbG9uZWQgdG8gcHJvdGVjdCBhZ2FpbnN0IHN1YnNlcXVlbnQgbW9kaWZpY2F0aW9uLgorICAgICAqIEBwYXJhbSBrZXlQYWNrZXQgYSBQR1Aga2V5IG1hdGVyaWFsIHBhY2tldCBhcyBkZWZpbmVkIGluIDxhIGhyZWY9CisgICAgICogICAgImh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzI0NDAudHh0Ij5SRkMgMjQ0MDwvYT4sIHNlY3Rpb24gNS41LgorICAgICAqICAgIFRoZSBhcnJheSBpcyBjbG9uZWQgdG8gcHJvdGVjdCBhZ2FpbnN0IHN1YnNlcXVlbnQgbW9kaWZpY2F0aW9uLiBNYXkgCisgICAgICogICAgYmUgPGNvZGU+bnVsbDwvY29kZT4uCisgICAgICogQHBhcmFtIG90aGVyIGEgbGlzdCBvZiB7QGxpbmsgWE1MU3RydWN0dXJlfXMgcmVwcmVzZW50aW5nIGVsZW1lbnRzIGZyb20KKyAgICAgKiAgICBhbiBleHRlcm5hbCBuYW1lc3BhY2UuIFRoZSBsaXN0IGlzIGRlZmVuc2l2ZWx5IGNvcGllZCB0byBwcm90ZWN0CisgICAgICogICAgYWdhaW5zdCBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbi4gTWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+IG9yIGVtcHR5LgorICAgICAqIEByZXR1cm4gYSA8Y29kZT5QR1BEYXRhPC9jb2RlPgorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+a2V5SWQ8L2NvZGU+IGlzIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIDxjb2RlPmtleUlkPC9jb2RlPiBvciAKKyAgICAgKiAgICA8Y29kZT5rZXlQYWNrZXQ8L2NvZGU+IGlzIG5vdCBpbiB0aGUgY29ycmVjdCBmb3JtYXQuIEZvciAKKyAgICAgKiAgICA8Y29kZT5rZXlQYWNrZXQ8L2NvZGU+LCB0aGUgZm9ybWF0IG9mIHRoZSBwYWNrZXQgaGVhZGVyIGlzIAorICAgICAqICAgIGNoZWNrZWQgYW5kIHRoZSB0YWcgaXMgdmVyaWZpZWQgdGhhdCBpdCBpcyBvZiB0eXBlIGtleSBtYXRlcmlhbC4gVGhlCisgICAgICogICAgY29udGVudHMgYW5kIGZvcm1hdCBvZiB0aGUgcGFja2V0IGJvZHkgYXJlIG5vdCBjaGVja2VkLgorICAgICAqIEB0aHJvd3MgQ2xhc3NDYXN0RXhjZXB0aW9uIGlmIDxjb2RlPm90aGVyPC9jb2RlPiBjb250YWlucyBhbnkKKyAgICAgKiAgICBlbnRyaWVzIHRoYXQgYXJlIG5vdCBvZiB0eXBlIHtAbGluayBYTUxTdHJ1Y3R1cmV9CisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IFBHUERhdGEgbmV3UEdQRGF0YShieXRlW10ga2V5SWQsIGJ5dGVbXSBrZXlQYWNrZXQsCisJTGlzdCBvdGhlcik7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+UEdQRGF0YTwvY29kZT4gZnJvbSB0aGUgc3BlY2lmaWVkIFBHUCBrZXkgbWF0ZXJpYWwKKyAgICAgKiBwYWNrZXQgYW5kIG9wdGlvbmFsIGxpc3Qgb2YgZXh0ZXJuYWwgZWxlbWVudHMuCisgICAgICoKKyAgICAgKiBAcGFyYW0ga2V5UGFja2V0IGEgUEdQIGtleSBtYXRlcmlhbCBwYWNrZXQgYXMgZGVmaW5lZCBpbiA8YSBocmVmPQorICAgICAqICAgICJodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyNDQwLnR4dCI+UkZDIDI0NDA8L2E+LCBzZWN0aW9uIDUuNS4KKyAgICAgKiAgICBUaGUgYXJyYXkgaXMgY2xvbmVkIHRvIHByb3RlY3QgYWdhaW5zdCBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbi4KKyAgICAgKiBAcGFyYW0gb3RoZXIgYSBsaXN0IG9mIHtAbGluayBYTUxTdHJ1Y3R1cmV9cyByZXByZXNlbnRpbmcgZWxlbWVudHMgZnJvbQorICAgICAqICAgIGFuIGV4dGVybmFsIG5hbWVzcGFjZS4gVGhlIGxpc3QgaXMgZGVmZW5zaXZlbHkgY29waWVkIHRvIHByb3RlY3QgCisgICAgICogICAgYWdhaW5zdCBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbi4gTWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+IG9yIGVtcHR5LgorICAgICAqIEByZXR1cm4gYSA8Y29kZT5QR1BEYXRhPC9jb2RlPgorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+a2V5UGFja2V0PC9jb2RlPiBpcyAKKyAgICAgKiAgICA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIDxjb2RlPmtleVBhY2tldDwvY29kZT4gaXMgbm90IGluIHRoZSAKKyAgICAgKiAgICBjb3JyZWN0IGZvcm1hdC4gRm9yIDxjb2RlPmtleVBhY2tldDwvY29kZT4sIHRoZSBmb3JtYXQgb2YgdGhlIHBhY2tldCAKKyAgICAgKiAgICBoZWFkZXIgaXMgY2hlY2tlZCBhbmQgdGhlIHRhZyBpcyB2ZXJpZmllZCB0aGF0IGl0IGlzIG9mIHR5cGUga2V5IAorICAgICAqICAgIG1hdGVyaWFsLiBUaGUgY29udGVudHMgYW5kIGZvcm1hdCBvZiB0aGUgcGFja2V0IGJvZHkgYXJlIG5vdCBjaGVja2VkLgorICAgICAqIEB0aHJvd3MgQ2xhc3NDYXN0RXhjZXB0aW9uIGlmIDxjb2RlPm90aGVyPC9jb2RlPiBjb250YWlucyBhbnkKKyAgICAgKiAgICBlbnRyaWVzIHRoYXQgYXJlIG5vdCBvZiB0eXBlIHtAbGluayBYTUxTdHJ1Y3R1cmV9CisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IFBHUERhdGEgbmV3UEdQRGF0YShieXRlW10ga2V5UGFja2V0LCBMaXN0IG90aGVyKTsKKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSA8Y29kZT5SZXRyaWV2YWxNZXRob2Q8L2NvZGU+IGZyb20gdGhlIHNwZWNpZmllZCBVUkkuCisgICAgICoKKyAgICAgKiBAcGFyYW0gdXJpIHRoZSBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSA8Y29kZT5LZXlJbmZvPC9jb2RlPiBpbmZvcm1hdGlvbiAKKyAgICAgKiAgICB0byBiZSByZXRyaWV2ZWQKKyAgICAgKiBAcmV0dXJuIGEgPGNvZGU+UmV0cmlldmFsTWV0aG9kPC9jb2RlPgorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+dXJpPC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIDxjb2RlPnVyaTwvY29kZT4gaXMgbm90IFJGQyAyMzk2CisgICAgICogICAgY29tcGxpYW50CisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IFJldHJpZXZhbE1ldGhvZCBuZXdSZXRyaWV2YWxNZXRob2QoU3RyaW5nIHVyaSk7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+UmV0cmlldmFsTWV0aG9kPC9jb2RlPiBmcm9tIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVycy4KKyAgICAgKgorICAgICAqIEBwYXJhbSB1cmkgdGhlIFVSSSB0aGF0IGlkZW50aWZpZXMgdGhlIDxjb2RlPktleUluZm88L2NvZGU+IGluZm9ybWF0aW9uIAorICAgICAqICAgIHRvIGJlIHJldHJpZXZlZAorICAgICAqIEBwYXJhbSB0eXBlIGEgVVJJIHRoYXQgaWRlbnRpZmllcyB0aGUgdHlwZSBvZiA8Y29kZT5LZXlJbmZvPC9jb2RlPiAKKyAgICAgKiAgICBpbmZvcm1hdGlvbiB0byBiZSByZXRyaWV2ZWQgKG1heSBiZSA8Y29kZT5udWxsPC9jb2RlPikKKyAgICAgKiBAcGFyYW0gdHJhbnNmb3JtcyBhIGxpc3Qgb2Yge0BsaW5rIFRyYW5zZm9ybX1zLiBUaGUgbGlzdCBpcyBkZWZlbnNpdmVseQorICAgICAqICAgIGNvcGllZCB0byBwcm90ZWN0IGFnYWluc3Qgc3Vic2VxdWVudCBtb2RpZmljYXRpb24uIE1heSBiZSAKKyAgICAgKiAgICA8Y29kZT5udWxsPC9jb2RlPiBvciBlbXB0eS4KKyAgICAgKiBAcmV0dXJuIGEgPGNvZGU+UmV0cmlldmFsTWV0aG9kPC9jb2RlPgorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+dXJpPC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIDxjb2RlPnVyaTwvY29kZT4gaXMgbm90IFJGQyAyMzk2CisgICAgICogICAgY29tcGxpYW50CisgICAgICogQHRocm93cyBDbGFzc0Nhc3RFeGNlcHRpb24gaWYgPGNvZGU+dHJhbnNmb3JtczwvY29kZT4gY29udGFpbnMgYW55CisgICAgICogICAgZW50cmllcyB0aGF0IGFyZSBub3Qgb2YgdHlwZSB7QGxpbmsgVHJhbnNmb3JtfQorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBSZXRyaWV2YWxNZXRob2QgbmV3UmV0cmlldmFsTWV0aG9kKFN0cmluZyB1cmksIFN0cmluZyB0eXBlLAorCUxpc3QgdHJhbnNmb3Jtcyk7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+WDUwOURhdGE8L2NvZGU+IGNvbnRhaW5pbmcgdGhlIHNwZWNpZmllZCBsaXN0IG9mCisgICAgICogWC41MDkgY29udGVudC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjb250ZW50IGEgbGlzdCBvZiBvbmUgb3IgbW9yZSBYLjUwOSBjb250ZW50IHR5cGVzLiBWYWxpZCB0eXBlcyBhcmUKKyAgICAgKiAgICB7QGxpbmsgU3RyaW5nfSAoc3ViamVjdCBuYW1lcyksIDxjb2RlPmJ5dGVbXTwvY29kZT4gKHN1YmplY3Qga2V5IGlkcyksCisgICAgICogICAge0BsaW5rIGphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGV9LCB7QGxpbmsgWDUwOUNSTH0sCisgICAgICogICAgb3Ige0BsaW5rIFhNTFN0cnVjdHVyZX0gKHtAbGluayBYNTA5SXNzdWVyU2VyaWFsfQorICAgICAqICAgIG9iamVjdHMgb3IgZWxlbWVudHMgZnJvbSBhbiBleHRlcm5hbCBuYW1lc3BhY2UpLiBTdWJqZWN0IG5hbWVzIGFyZSAKKyAgICAgKiAgICBkaXN0aW5ndWlzaGVkIG5hbWVzIGluIFJGQyAyMjUzIFN0cmluZyBmb3JtYXQuIEltcGxlbWVudGF0aW9ucyBNVVNUIAorICAgICAqICAgIHN1cHBvcnQgdGhlIGF0dHJpYnV0ZSB0eXBlIGtleXdvcmRzIGRlZmluZWQgaW4gUkZDIDIyNTMgKENOLCBMLCBTVCwgCisgICAgICogICAgTywgT1UsIEMsIFNUUkVFVCwgREMgYW5kIFVJRCkuIEltcGxlbWVudGF0aW9ucyBNQVkgc3VwcG9ydCBhZGRpdGlvbmFsIAorICAgICAqICAgIGtleXdvcmRzLiBUaGUgbGlzdCBpcyBkZWZlbnNpdmVseSBjb3BpZWQgdG8gcHJvdGVjdCBhZ2FpbnN0IAorICAgICAqICAgIHN1YnNlcXVlbnQgbW9kaWZpY2F0aW9uLgorICAgICAqIEByZXR1cm4gYSA8Y29kZT5YNTA5RGF0YTwvY29kZT4KKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPmNvbnRlbnQ8L2NvZGU+IGlzIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgPGNvZGU+Y29udGVudDwvY29kZT4gaXMgZW1wdHksIG9yCisgICAgICogICAgaWYgYSBzdWJqZWN0IG5hbWUgaXMgbm90IFJGQyAyMjUzIGNvbXBsaWFudCBvciBvbmUgb2YgdGhlIGF0dHJpYnV0ZSAKKyAgICAgKiAgICB0eXBlIGtleXdvcmRzIGlzIG5vdCByZWNvZ25pemVkLgorICAgICAqIEB0aHJvd3MgQ2xhc3NDYXN0RXhjZXB0aW9uIGlmIDxjb2RlPmNvbnRlbnQ8L2NvZGU+IGNvbnRhaW5zIGFueSBlbnRyaWVzCisgICAgICogICAgdGhhdCBhcmUgbm90IG9mIG9uZSBvZiB0aGUgdmFsaWQgdHlwZXMgbWVudGlvbmVkIGFib3ZlCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IFg1MDlEYXRhIG5ld1g1MDlEYXRhKExpc3QgY29udGVudCk7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGFuIDxjb2RlPlg1MDlJc3N1ZXJTZXJpYWw8L2NvZGU+IGZyb20gdGhlIHNwZWNpZmllZCBYLjUwMCBpc3N1ZXIKKyAgICAgKiBkaXN0aW5ndWlzaGVkIG5hbWUgYW5kIHNlcmlhbCBudW1iZXIuCisgICAgICoKKyAgICAgKiBAcGFyYW0gaXNzdWVyTmFtZSB0aGUgaXNzdWVyJ3MgZGlzdGluZ3Vpc2hlZCBuYW1lIGluIFJGQyAyMjUzIFN0cmluZworICAgICAqICAgIGZvcm1hdC4gSW1wbGVtZW50YXRpb25zIE1VU1Qgc3VwcG9ydCB0aGUgYXR0cmlidXRlIHR5cGUga2V5d29yZHMgCisgICAgICogICAgZGVmaW5lZCBpbiBSRkMgMjI1MyAoQ04sIEwsIFNULCBPLCBPVSwgQywgU1RSRUVULCBEQyBhbmQgVUlEKS4gCisgICAgICogICAgSW1wbGVtZW50YXRpb25zIE1BWSBzdXBwb3J0IGFkZGl0aW9uYWwga2V5d29yZHMuCisgICAgICogQHBhcmFtIHNlcmlhbE51bWJlciB0aGUgc2VyaWFsIG51bWJlcgorICAgICAqIEByZXR1cm4gYW4gPGNvZGU+WDUwOUlzc3VlclNlcmlhbDwvY29kZT4KKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPmlzc3Vlck5hbWU8L2NvZGU+IG9yIAorICAgICAqICAgIDxjb2RlPnNlcmlhbE51bWJlcjwvY29kZT4gYXJlIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGlzc3VlciBuYW1lIGlzIG5vdCBSRkMgMjI1MworICAgICAqICAgIGNvbXBsaWFudCBvciBvbmUgb2YgdGhlIGF0dHJpYnV0ZSB0eXBlIGtleXdvcmRzIGlzIG5vdCByZWNvZ25pemVkLgorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBYNTA5SXNzdWVyU2VyaWFsIG5ld1g1MDlJc3N1ZXJTZXJpYWwKKyAgICAgICAgKFN0cmluZyBpc3N1ZXJOYW1lLCBCaWdJbnRlZ2VyIHNlcmlhbE51bWJlcik7CisKKyAgICAvKioKKyAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciBhIHNwZWNpZmllZCBmZWF0dXJlIGlzIHN1cHBvcnRlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBmZWF0dXJlIHRoZSBmZWF0dXJlIG5hbWUgKGFzIGFuIGFic29sdXRlIFVSSSkKKyAgICAgKiBAcmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBzcGVjaWZpZWQgZmVhdHVyZSBpcyBzdXBwb3J0ZWQsCisgICAgICogICAgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZQorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+ZmVhdHVyZTwvY29kZT4gaXMgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgYm9vbGVhbiBpc0ZlYXR1cmVTdXBwb3J0ZWQoU3RyaW5nIGZlYXR1cmUpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgPGNvZGU+VVJJRGVyZWZlcmVuY2VyPC9jb2RlPiB0aGF0IGlzIHVzZWQgYnkgCisgICAgICogZGVmYXVsdCB0byBkZXJlZmVyZW5jZSBVUklzIGluIHtAbGluayBSZXRyaWV2YWxNZXRob2R9IG9iamVjdHMuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoZSBkZWZhdWx0IDxjb2RlPlVSSURlcmVmZXJlbmNlcjwvY29kZT4KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgVVJJRGVyZWZlcmVuY2VyIGdldFVSSURlcmVmZXJlbmNlcigpOworCisgICAgLyoqCisgICAgICogVW5tYXJzaGFscyBhIG5ldyA8Y29kZT5LZXlJbmZvPC9jb2RlPiBpbnN0YW5jZSBmcm9tIGEgCisgICAgICogbWVjaGFuaXNtLXNwZWNpZmljIDxjb2RlPlhNTFN0cnVjdHVyZTwvY29kZT4gKGV4OiB7QGxpbmsgRE9NU3RydWN0dXJlfSkgCisgICAgICogaW5zdGFuY2UuCisgICAgICoKKyAgICAgKiBAcGFyYW0geG1sU3RydWN0dXJlIGEgbWVjaGFuaXNtLXNwZWNpZmljIFhNTCBzdHJ1Y3R1cmUgZnJvbSB3aGljaCB0byAKKyAgICAgKiAgIHVubWFyc2hhbCB0aGUga2V5aW5mbyBmcm9tCisgICAgICogQHJldHVybiB0aGUgPGNvZGU+S2V5SW5mbzwvY29kZT4KKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPnhtbFN0cnVjdHVyZTwvY29kZT4gaXMgCisgICAgICogICA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEB0aHJvd3MgQ2xhc3NDYXN0RXhjZXB0aW9uIGlmIHRoZSB0eXBlIG9mIDxjb2RlPnhtbFN0cnVjdHVyZTwvY29kZT4gaXMKKyAgICAgKiAgIGluYXBwcm9wcmlhdGUgZm9yIHRoaXMgZmFjdG9yeQorICAgICAqIEB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiBpZiBhbiB1bnJlY292ZXJhYmxlIGV4Y2VwdGlvbiBvY2N1cnMgZHVyaW5nIAorICAgICAqICAgdW5tYXJzaGFsbGluZworICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBLZXlJbmZvIHVubWFyc2hhbEtleUluZm8oWE1MU3RydWN0dXJlIHhtbFN0cnVjdHVyZSkKKwl0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbjsKK30KZGlmZiAtLWdpdCBhL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcva2V5aW5mby9LZXlOYW1lLmphdmEgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL2tleWluZm8vS2V5TmFtZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzYTQxNzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL2tleWluZm8vS2V5TmFtZS5qYXZhCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvOworCitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5YTUxTdHJ1Y3R1cmU7CisKKy8qKgorICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgWE1MIDxjb2RlPktleU5hbWU8L2NvZGU+IGVsZW1lbnQgYXMgCisgKiBkZWZpbmVkIGluIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWxkc2lnLWNvcmUvIj4KKyAqIFczQyBSZWNvbW1lbmRhdGlvbiBmb3IgWE1MLVNpZ25hdHVyZSBTeW50YXggYW5kIFByb2Nlc3Npbmc8L2E+LgorICogQSA8Y29kZT5LZXlOYW1lPC9jb2RlPiBvYmplY3QgY29udGFpbnMgYSBzdHJpbmcgdmFsdWUgd2hpY2ggbWF5IGJlIHVzZWQKKyAqIGJ5IHRoZSBzaWduZXIgdG8gY29tbXVuaWNhdGUgYSBrZXkgaWRlbnRpZmllciB0byB0aGUgcmVjaXBpZW50LiBUaGUKKyAqIFhNTCBTY2hlbWEgRGVmaW5pdGlvbiBpcyBkZWZpbmVkIGFzOgorICoKKyAqIDxwcmU+CisgKiAmbHQ7ZWxlbWVudCBuYW1lPSJLZXlOYW1lIiB0eXBlPSJzdHJpbmciLyZndDsKKyAqIDwvcHJlPgorICogCisgKiBBIDxjb2RlPktleU5hbWU8L2NvZGU+IGluc3RhbmNlIG1heSBiZSBjcmVhdGVkIGJ5IGludm9raW5nIHRoZQorICoge0BsaW5rIEtleUluZm9GYWN0b3J5I25ld0tleU5hbWUgbmV3S2V5TmFtZX0gbWV0aG9kIG9mIHRoZQorICoge0BsaW5rIEtleUluZm9GYWN0b3J5fSBjbGFzcywgYW5kIHBhc3NpbmcgaXQgYSA8Y29kZT5TdHJpbmc8L2NvZGU+IAorICogcmVwcmVzZW50aW5nIHRoZSBuYW1lIG9mIHRoZSBrZXk7IGZvciBleGFtcGxlOgorICogPHByZT4KKyAqIEtleUluZm9GYWN0b3J5IGZhY3RvcnkgPSBLZXlJbmZvRmFjdG9yeS5nZXRJbnN0YW5jZSgiRE9NIik7CisgKiBLZXlOYW1lIGtleU5hbWUgPSBmYWN0b3J5Lm5ld0tleU5hbWUoIkFsaWNlIik7ICAgCisgKiA8L3ByZT4KKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKiBAYXV0aG9yIEpTUiAxMDUgRXhwZXJ0IEdyb3VwCisgKiBAc2VlIEtleUluZm9GYWN0b3J5I25ld0tleU5hbWUoU3RyaW5nKQorICovCitwdWJsaWMgaW50ZXJmYWNlIEtleU5hbWUgZXh0ZW5kcyBYTUxTdHJ1Y3R1cmUgeworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbmFtZSBvZiB0aGlzIDxjb2RlPktleU5hbWU8L2NvZGU+LgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgbmFtZSBvZiB0aGlzIDxjb2RlPktleU5hbWU8L2NvZGU+IChuZXZlciAKKyAgICAgKiAgICA8Y29kZT5udWxsPC9jb2RlPikKKyAgICAgKi8KKyAgICBTdHJpbmcgZ2V0TmFtZSgpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9rZXlpbmZvL0tleVZhbHVlLmphdmEgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL2tleWluZm8vS2V5VmFsdWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lM2M2N2M2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9rZXlpbmZvL0tleVZhbHVlLmphdmEKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNS0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by5kc2lnLmtleWluZm87CisKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LktleUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlB1YmxpY0tleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmludGVyZmFjZXMuRFNBUHVibGljS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuaW50ZXJmYWNlcy5SU0FQdWJsaWNLZXk7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5YTUxTdHJ1Y3R1cmU7CisKKy8qKgorICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgWE1MIDxjb2RlPktleVZhbHVlPC9jb2RlPiBlbGVtZW50IGFzIGRlZmluZWQKKyAqIGluIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWxkc2lnLWNvcmUvIj4KKyAqIFczQyBSZWNvbW1lbmRhdGlvbiBmb3IgWE1MLVNpZ25hdHVyZSBTeW50YXggYW5kIFByb2Nlc3Npbmc8L2E+LiBBIAorICogPGNvZGU+S2V5VmFsdWU8L2NvZGU+IG9iamVjdCBjb250YWlucyBhIHNpbmdsZSBwdWJsaWMga2V5IHRoYXQgbWF5IGJlCisgKiB1c2VmdWwgaW4gdmFsaWRhdGluZyB0aGUgc2lnbmF0dXJlLiBUaGUgWE1MIHNjaGVtYSBkZWZpbml0aW9uIGlzIGRlZmluZWQgYXM6CisgKgorICogPHByZT4KKyAqICAgICZsdDtlbGVtZW50IG5hbWU9IktleVZhbHVlIiB0eXBlPSJkczpLZXlWYWx1ZVR5cGUiLyZndDsKKyAqICAgICZsdDtjb21wbGV4VHlwZSBuYW1lPSJLZXlWYWx1ZVR5cGUiIG1peGVkPSJ0cnVlIiZndDsKKyAqICAgICAgJmx0O2Nob2ljZSZndDsKKyAqICAgICAgICAmbHQ7ZWxlbWVudCByZWY9ImRzOkRTQUtleVZhbHVlIi8mZ3Q7CisgKiAgICAgICAgJmx0O2VsZW1lbnQgcmVmPSJkczpSU0FLZXlWYWx1ZSIvJmd0OworICogICAgICAgICZsdDthbnkgbmFtZXNwYWNlPSIjI290aGVyIiBwcm9jZXNzQ29udGVudHM9ImxheCIvJmd0OworICogICAgICAmbHQ7L2Nob2ljZSZndDsKKyAqICAgICZsdDsvY29tcGxleFR5cGUmZ3Q7CisgKgorICogICAgJmx0O2VsZW1lbnQgbmFtZT0iRFNBS2V5VmFsdWUiIHR5cGU9ImRzOkRTQUtleVZhbHVlVHlwZSIvJmd0OworICogICAgJmx0O2NvbXBsZXhUeXBlIG5hbWU9IkRTQUtleVZhbHVlVHlwZSImZ3Q7CisgKiAgICAgICZsdDtzZXF1ZW5jZSZndDsKKyAqICAgICAgICAmbHQ7c2VxdWVuY2UgbWluT2NjdXJzPSIwIiZndDsKKyAqICAgICAgICAgICZsdDtlbGVtZW50IG5hbWU9IlAiIHR5cGU9ImRzOkNyeXB0b0JpbmFyeSIvJmd0OworICogICAgICAgICAgJmx0O2VsZW1lbnQgbmFtZT0iUSIgdHlwZT0iZHM6Q3J5cHRvQmluYXJ5Ii8mZ3Q7CisgKiAgICAgICAgJmx0Oy9zZXF1ZW5jZSZndDsKKyAqICAgICAgICAmbHQ7ZWxlbWVudCBuYW1lPSJHIiB0eXBlPSJkczpDcnlwdG9CaW5hcnkiIG1pbk9jY3Vycz0iMCIvJmd0OyAKKyAqICAgICAgICAmbHQ7ZWxlbWVudCBuYW1lPSJZIiB0eXBlPSJkczpDcnlwdG9CaW5hcnkiLyZndDsgCisgKiAgICAgICAgJmx0O2VsZW1lbnQgbmFtZT0iSiIgdHlwZT0iZHM6Q3J5cHRvQmluYXJ5IiBtaW5PY2N1cnM9IjAiLyZndDsKKyAqICAgICAgICAmbHQ7c2VxdWVuY2UgbWluT2NjdXJzPSIwIiZndDsKKyAqICAgICAgICAgICZsdDtlbGVtZW50IG5hbWU9IlNlZWQiIHR5cGU9ImRzOkNyeXB0b0JpbmFyeSIvJmd0OyAKKyAqICAgICAgICAgICZsdDtlbGVtZW50IG5hbWU9IlBnZW5Db3VudGVyIiB0eXBlPSJkczpDcnlwdG9CaW5hcnkiLyZndDsgCisgKiAgICAgICAgJmx0Oy9zZXF1ZW5jZSZndDsKKyAqICAgICAgJmx0Oy9zZXF1ZW5jZSZndDsKKyAqICAgICZsdDsvY29tcGxleFR5cGUmZ3Q7CisgKgorICogICAgJmx0O2VsZW1lbnQgbmFtZT0iUlNBS2V5VmFsdWUiIHR5cGU9ImRzOlJTQUtleVZhbHVlVHlwZSIvJmd0OworICogICAgJmx0O2NvbXBsZXhUeXBlIG5hbWU9IlJTQUtleVZhbHVlVHlwZSImZ3Q7CisgKiAgICAgICZsdDtzZXF1ZW5jZSZndDsKKyAqICAgICAgICAmbHQ7ZWxlbWVudCBuYW1lPSJNb2R1bHVzIiB0eXBlPSJkczpDcnlwdG9CaW5hcnkiLyZndDsgCisgKiAgICAgICAgJmx0O2VsZW1lbnQgbmFtZT0iRXhwb25lbnQiIHR5cGU9ImRzOkNyeXB0b0JpbmFyeSIvJmd0OworICogICAgICAmbHQ7L3NlcXVlbmNlJmd0OworICogICAgJmx0Oy9jb21wbGV4VHlwZSZndDsKKyAqIDwvcHJlPgorICogQSA8Y29kZT5LZXlWYWx1ZTwvY29kZT4gaW5zdGFuY2UgbWF5IGJlIGNyZWF0ZWQgYnkgaW52b2tpbmcgdGhlCisgKiB7QGxpbmsgS2V5SW5mb0ZhY3RvcnkjbmV3S2V5VmFsdWUgbmV3S2V5VmFsdWV9IG1ldGhvZCBvZiB0aGUKKyAqIHtAbGluayBLZXlJbmZvRmFjdG9yeX0gY2xhc3MsIGFuZCBwYXNzaW5nIGl0IGEge0BsaW5rIAorICogamF2YS5zZWN1cml0eS5QdWJsaWNLZXl9IHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgdGhlIHB1YmxpYyBrZXkuIEhlcmUgaXMgCisgKiBhbiBleGFtcGxlIG9mIGNyZWF0aW5nIGEgPGNvZGU+S2V5VmFsdWU8L2NvZGU+IGZyb20gYSB7QGxpbmsgRFNBUHVibGljS2V5fSAKKyAqIG9mIGEge0BsaW5rIGphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZX0gc3RvcmVkIGluIGEgCisgKiB7QGxpbmsgamF2YS5zZWN1cml0eS5LZXlTdG9yZX06CisgKiA8cHJlPgorICogS2V5U3RvcmUga2V5U3RvcmUgPSBLZXlTdG9yZS5nZXRJbnN0YW5jZShLZXlTdG9yZS5nZXREZWZhdWx0VHlwZSgpKTsKKyAqIFB1YmxpY0tleSBkc2FQdWJsaWNLZXkgPSBrZXlTdG9yZS5nZXRDZXJ0aWZpY2F0ZSgibXlEU0FTaWduaW5nQ2VydCIpLmdldFB1YmxpY0tleSgpOworICogS2V5SW5mb0ZhY3RvcnkgZmFjdG9yeSA9IEtleUluZm9GYWN0b3J5LmdldEluc3RhbmNlKCJET00iKTsKKyAqIEtleVZhbHVlIGtleVZhbHVlID0gZmFjdG9yeS5uZXdLZXlWYWx1ZShkc2FQdWJsaWNLZXkpOworICogPC9wcmU+CisgKgorICogVGhpcyBjbGFzcyByZXR1cm5zIHRoZSA8Y29kZT5EU0FLZXlWYWx1ZTwvY29kZT4gYW5kIAorICogPGNvZGU+UlNBS2V5VmFsdWU8L2NvZGU+IGVsZW1lbnRzIGFzIG9iamVjdHMgb2YgdHlwZSAKKyAqIHtAbGluayBEU0FQdWJsaWNLZXl9IGFuZCB7QGxpbmsgUlNBUHVibGljS2V5fSwgcmVzcGVjdGl2ZWx5LiBOb3RlIHRoYXQgbm90IAorICogYWxsIG9mIHRoZSBmaWVsZHMgaW4gdGhlIHNjaGVtYSBhcmUgYWNjZXNzaWJsZSBhcyBwYXJhbWV0ZXJzIG9mIHRoZXNlIAorICogdHlwZXMuIAorICogCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKiBAYXV0aG9yIEpTUiAxMDUgRXhwZXJ0IEdyb3VwCisgKiBAc2VlIEtleUluZm9GYWN0b3J5I25ld0tleVZhbHVlKFB1YmxpY0tleSkKKyAqLworcHVibGljIGludGVyZmFjZSBLZXlWYWx1ZSBleHRlbmRzIFhNTFN0cnVjdHVyZSB7CisKKyAgICAvKioKKyAgICAgKiBVUkkgaWRlbnRpZnlpbmcgdGhlIERTQSBLZXlWYWx1ZSBLZXlJbmZvIHR5cGU6CisgICAgICogaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI0RTQUtleVZhbHVlLiBUaGlzIGNhbiBiZSBzcGVjaWZpZWQgYXMgCisgICAgICogdGhlIHZhbHVlIG9mIHRoZSA8Y29kZT50eXBlPC9jb2RlPiBwYXJhbWV0ZXIgb2YgdGhlIAorICAgICAqIHtAbGluayBSZXRyaWV2YWxNZXRob2R9IGNsYXNzIHRvIGRlc2NyaWJlIGEgcmVtb3RlIAorICAgICAqIDxjb2RlPkRTQUtleVZhbHVlPC9jb2RlPiBzdHJ1Y3R1cmUuCisgICAgICovCisgICAgZmluYWwgc3RhdGljIFN0cmluZyBEU0FfVFlQRSA9CisgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjRFNBS2V5VmFsdWUiOworCisgICAgLyoqCisgICAgICogVVJJIGlkZW50aWZ5aW5nIHRoZSBSU0EgS2V5VmFsdWUgS2V5SW5mbyB0eXBlOgorICAgICAqIGh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNSU0FLZXlWYWx1ZS4gVGhpcyBjYW4gYmUgc3BlY2lmaWVkIGFzCisgICAgICogdGhlIHZhbHVlIG9mIHRoZSA8Y29kZT50eXBlPC9jb2RlPiBwYXJhbWV0ZXIgb2YgdGhlIAorICAgICAqIHtAbGluayBSZXRyaWV2YWxNZXRob2R9IGNsYXNzIHRvIGRlc2NyaWJlIGEgcmVtb3RlIAorICAgICAqIDxjb2RlPlJTQUtleVZhbHVlPC9jb2RlPiBzdHJ1Y3R1cmUuCisgICAgICovCisgICAgZmluYWwgc3RhdGljIFN0cmluZyBSU0FfVFlQRSA9CisgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjUlNBS2V5VmFsdWUiOworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgcHVibGljIGtleSBvZiB0aGlzIDxjb2RlPktleVZhbHVlPC9jb2RlPi4gCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBwdWJsaWMga2V5IG9mIHRoaXMgPGNvZGU+S2V5VmFsdWU8L2NvZGU+CisgICAgICogQHRocm93cyBLZXlFeGNlcHRpb24gaWYgdGhpcyA8Y29kZT5LZXlWYWx1ZTwvY29kZT4gY2Fubm90IGJlIGNvbnZlcnRlZAorICAgICAqICAgIHRvIGEgPGNvZGU+UHVibGljS2V5PC9jb2RlPgorICAgICAqLworICAgIFB1YmxpY0tleSBnZXRQdWJsaWNLZXkoKSB0aHJvd3MgS2V5RXhjZXB0aW9uOworfQpkaWZmIC0tZ2l0IGEvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9rZXlpbmZvL1BHUERhdGEuamF2YSBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcva2V5aW5mby9QR1BEYXRhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGMzMzMxZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcva2V5aW5mby9QR1BEYXRhLmphdmEKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvOworCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uWE1MU3RydWN0dXJlOworCisvKioKKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIFhNTCA8Y29kZT5QR1BEYXRhPC9jb2RlPiBlbGVtZW50IGFzIGRlZmluZWQgaW4gCisgKiB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sZHNpZy1jb3JlLyI+CisgKiBXM0MgUmVjb21tZW5kYXRpb24gZm9yIFhNTC1TaWduYXR1cmUgU3ludGF4IGFuZCBQcm9jZXNzaW5nPC9hPi4gQQorICogPGNvZGU+UEdQRGF0YTwvY29kZT4gb2JqZWN0IGlzIHVzZWQgdG8gY29udmV5IGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gCisgKiBQR1AgcHVibGljIGtleSBwYWlycyBhbmQgc2lnbmF0dXJlcyBvbiBzdWNoIGtleXMuIFRoZSBYTUwgU2NoZW1hIERlZmluaXRpb24gCisgKiBpcyBkZWZpbmVkIGFzOgorICogCisgKiA8cHJlPgorICogICAgJmx0O2VsZW1lbnQgbmFtZT0iUEdQRGF0YSIgdHlwZT0iZHM6UEdQRGF0YVR5cGUiLyZndDsgCisgKiAgICAmbHQ7Y29tcGxleFR5cGUgbmFtZT0iUEdQRGF0YVR5cGUiJmd0OyAKKyAqICAgICAgJmx0O2Nob2ljZSZndDsKKyAqICAgICAgICAmbHQ7c2VxdWVuY2UmZ3Q7CisgKiAgICAgICAgICAmbHQ7ZWxlbWVudCBuYW1lPSJQR1BLZXlJRCIgdHlwZT0iYmFzZTY0QmluYXJ5Ii8mZ3Q7IAorICogICAgICAgICAgJmx0O2VsZW1lbnQgbmFtZT0iUEdQS2V5UGFja2V0IiB0eXBlPSJiYXNlNjRCaW5hcnkiIG1pbk9jY3Vycz0iMCIvJmd0OyAKKyAqICAgICAgICAgICZsdDthbnkgbmFtZXNwYWNlPSIjI290aGVyIiBwcm9jZXNzQ29udGVudHM9ImxheCIgbWluT2NjdXJzPSIwIgorICogICAgICAgICAgIG1heE9jY3Vycz0idW5ib3VuZGVkIi8mZ3Q7CisgKiAgICAgICAgJmx0Oy9zZXF1ZW5jZSZndDsKKyAqICAgICAgICAmbHQ7c2VxdWVuY2UmZ3Q7CisgKiAgICAgICAgICAmbHQ7ZWxlbWVudCBuYW1lPSJQR1BLZXlQYWNrZXQiIHR5cGU9ImJhc2U2NEJpbmFyeSIvJmd0OyAKKyAqICAgICAgICAgICZsdDthbnkgbmFtZXNwYWNlPSIjI290aGVyIiBwcm9jZXNzQ29udGVudHM9ImxheCIgbWluT2NjdXJzPSIwIgorICogICAgICAgICAgIG1heE9jY3Vycz0idW5ib3VuZGVkIi8mZ3Q7CisgKiAgICAgICAgJmx0Oy9zZXF1ZW5jZSZndDsKKyAqICAgICAgJmx0Oy9jaG9pY2UmZ3Q7CisgKiAgICAmbHQ7L2NvbXBsZXhUeXBlJmd0OworICogPC9wcmU+CisgKgorICogQSA8Y29kZT5QR1BEYXRhPC9jb2RlPiBpbnN0YW5jZSBtYXkgYmUgY3JlYXRlZCBieSBpbnZva2luZyBvbmUgb2YgdGhlCisgKiB7QGxpbmsgS2V5SW5mb0ZhY3RvcnkjbmV3UEdQRGF0YSBuZXdQR1BEYXRhfSBtZXRob2RzIG9mIHRoZSB7QGxpbmsKKyAqIEtleUluZm9GYWN0b3J5fSBjbGFzcywgYW5kIHBhc3NpbmcgaXQgCisgKiA8Y29kZT5ieXRlPC9jb2RlPiBhcnJheXMgcmVwcmVzZW50aW5nIHRoZSBjb250ZW50cyBvZiB0aGUgUEdQIHB1YmxpYyBrZXkgCisgKiBpZGVudGlmaWVyIGFuZC9vciBQR1Aga2V5IG1hdGVyaWFsIHBhY2tldCwgYW5kIGFuIG9wdGlvbmFsIGxpc3Qgb2YKKyAqIGVsZW1lbnRzIGZyb20gYW4gZXh0ZXJuYWwgbmFtZXNwYWNlLgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgSlNSIDEwNSBFeHBlcnQgR3JvdXAKKyAqIEBzZWUgS2V5SW5mb0ZhY3RvcnkjbmV3UEdQRGF0YShieXRlW10pCisgKiBAc2VlIEtleUluZm9GYWN0b3J5I25ld1BHUERhdGEoYnl0ZVtdLCBieXRlW10sIExpc3QpCisgKiBAc2VlIEtleUluZm9GYWN0b3J5I25ld1BHUERhdGEoYnl0ZVtdLCBMaXN0KQorICovCitwdWJsaWMgaW50ZXJmYWNlIFBHUERhdGEgZXh0ZW5kcyBYTUxTdHJ1Y3R1cmUgeworCisgICAgLyoqCisgICAgICogVVJJIGlkZW50aWZ5aW5nIHRoZSBQR1BEYXRhIEtleUluZm8gdHlwZToKKyAgICAgKiBodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjUEdQRGF0YS4gVGhpcyBjYW4gYmUgc3BlY2lmaWVkIGFzIHRoZSAKKyAgICAgKiB2YWx1ZSBvZiB0aGUgPGNvZGU+dHlwZTwvY29kZT4gcGFyYW1ldGVyIG9mIHRoZSB7QGxpbmsgUmV0cmlldmFsTWV0aG9kfSAKKyAgICAgKiBjbGFzcyB0byBkZXNjcmliZSBhIHJlbW90ZSA8Y29kZT5QR1BEYXRhPC9jb2RlPiBzdHJ1Y3R1cmUuCisgICAgICovCisgICAgZmluYWwgc3RhdGljIFN0cmluZyBUWVBFID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNQR1BEYXRhIjsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIFBHUCBwdWJsaWMga2V5IGlkZW50aWZpZXIgb2YgdGhpcyA8Y29kZT5QR1BEYXRhPC9jb2RlPiBhcyAKKyAgICAgKiBkZWZpbmVkIGluIDxhIGhyZWY9Imh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzI0NDAudHh0Ij5SRkMgMjQ0MDwvYT4sIAorICAgICAqIHNlY3Rpb24gMTEuMi4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIFBHUCBwdWJsaWMga2V5IGlkZW50aWZpZXIgKG1heSBiZSA8Y29kZT5udWxsPC9jb2RlPiBpZiAKKyAgICAgKiAgICBub3Qgc3BlY2lmaWVkKS4gRWFjaCBpbnZvY2F0aW9uIG9mIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgY2xvbmUgCisgICAgICogICAgdG8gcHJvdGVjdCBhZ2FpbnN0IHN1YnNlcXVlbnQgbW9kaWZpY2F0aW9uLgorICAgICAqLworICAgIGJ5dGVbXSBnZXRLZXlJZCgpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgUEdQIGtleSBtYXRlcmlhbCBwYWNrZXQgb2YgdGhpcyA8Y29kZT5QR1BEYXRhPC9jb2RlPiBhcworICAgICAqIGRlZmluZWQgaW4gPGEgaHJlZj0iaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjQ0MC50eHQiPlJGQyAyNDQwPC9hPiwgCisgICAgICogc2VjdGlvbiA1LjUuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBQR1Aga2V5IG1hdGVyaWFsIHBhY2tldCAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+IGlmIG5vdCAKKyAgICAgKiAgICBzcGVjaWZpZWQpLiBFYWNoIGludm9jYXRpb24gb2YgdGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBjbG9uZSB0byAKKyAgICAgKiAgICBwcm90ZWN0IGFnYWluc3Qgc3Vic2VxdWVudCBtb2RpZmljYXRpb24uCisgICAgICovCisgICAgYnl0ZVtdIGdldEtleVBhY2tldCgpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyBhbiB7QGxpbmsgQ29sbGVjdGlvbnMjdW5tb2RpZmlhYmxlTGlzdCB1bm1vZGlmaWFibGUgbGlzdH0KKyAgICAgKiBvZiB7QGxpbmsgWE1MU3RydWN0dXJlfXMgcmVwcmVzZW50aW5nIGVsZW1lbnRzIGZyb20gYW4gZXh0ZXJuYWwgCisgICAgICogbmFtZXNwYWNlLiAKKyAgICAgKgorICAgICAqIEByZXR1cm4gYW4gdW5tb2RpZmlhYmxlIGxpc3Qgb2YgPGNvZGU+WE1MU3RydWN0dXJlPC9jb2RlPnMgKG1heSBiZSAKKyAgICAgKiAgICBlbXB0eSwgYnV0IG5ldmVyIDxjb2RlPm51bGw8L2NvZGU+KQorICAgICAqLworICAgIExpc3QgZ2V0RXh0ZXJuYWxFbGVtZW50cygpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9rZXlpbmZvL1JldHJpZXZhbE1ldGhvZC5qYXZhIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9rZXlpbmZvL1JldHJpZXZhbE1ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmZjRjYWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL2tleWluZm8vUmV0cmlldmFsTWV0aG9kLmphdmEKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvOworCitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5EYXRhOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uVVJJUmVmZXJlbmNlOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uVVJJUmVmZXJlbmNlRXhjZXB0aW9uOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uWE1MQ3J5cHRvQ29udGV4dDsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLlhNTFN0cnVjdHVyZTsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuVHJhbnNmb3JtOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCisvKioKKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIFhNTCA8Y29kZT5SZXRyaWV2YWxNZXRob2Q8L2NvZGU+IGVsZW1lbnQgYXMgCisgKiBkZWZpbmVkIGluIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWxkc2lnLWNvcmUvIj4KKyAqIFczQyBSZWNvbW1lbmRhdGlvbiBmb3IgWE1MLVNpZ25hdHVyZSBTeW50YXggYW5kIFByb2Nlc3Npbmc8L2E+LiAKKyAqIEEgPGNvZGU+UmV0cmlldmFsTWV0aG9kPC9jb2RlPiBvYmplY3QgaXMgdXNlZCB0byBjb252ZXkgYSByZWZlcmVuY2UgdG8KKyAqIDxjb2RlPktleUluZm88L2NvZGU+IGluZm9ybWF0aW9uIHRoYXQgaXMgc3RvcmVkIGF0IGFub3RoZXIgbG9jYXRpb24uCisgKiBUaGUgWE1MIHNjaGVtYSBkZWZpbml0aW9uIGlzIGRlZmluZWQgYXM6IAorICoKKyAqIDxwcmU+CisgKiAgICZsdDtlbGVtZW50IG5hbWU9IlJldHJpZXZhbE1ldGhvZCIgdHlwZT0iZHM6UmV0cmlldmFsTWV0aG9kVHlwZSIvJmd0OworICogICAmbHQ7Y29tcGxleFR5cGUgbmFtZT0iUmV0cmlldmFsTWV0aG9kVHlwZSImZ3Q7CisgKiAgICAgJmx0O3NlcXVlbmNlJmd0OworICogICAgICAgJmx0O2VsZW1lbnQgbmFtZT0iVHJhbnNmb3JtcyIgdHlwZT0iZHM6VHJhbnNmb3Jtc1R5cGUiIG1pbk9jY3Vycz0iMCIvJmd0OyAKKyAqICAgICAmbHQ7L3NlcXVlbmNlJmd0OyAgCisgKiAgICAgJmx0O2F0dHJpYnV0ZSBuYW1lPSJVUkkiIHR5cGU9ImFueVVSSSIvJmd0OworICogICAgICZsdDthdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdHlwZT0iYW55VVJJIiB1c2U9Im9wdGlvbmFsIi8mZ3Q7CisgKiAgICZsdDsvY29tcGxleFR5cGUmZ3Q7CisgKiA8L3ByZT4KKyAqCisgKiBBIDxjb2RlPlJldHJpZXZhbE1ldGhvZDwvY29kZT4gaW5zdGFuY2UgbWF5IGJlIGNyZWF0ZWQgYnkgaW52b2tpbmcgb25lIG9mIHRoZQorICoge0BsaW5rIEtleUluZm9GYWN0b3J5I25ld1JldHJpZXZhbE1ldGhvZCBuZXdSZXRyaWV2YWxNZXRob2R9IG1ldGhvZHMgCisgKiBvZiB0aGUge0BsaW5rIEtleUluZm9GYWN0b3J5fSBjbGFzcywgYW5kIHBhc3NpbmcgaXQgdGhlIFVSSSAKKyAqIGlkZW50aWZ5aW5nIHRoZSBsb2NhdGlvbiBvZiB0aGUgS2V5SW5mbywgYW4gb3B0aW9uYWwgdHlwZSBVUkkgaWRlbnRpZnlpbmcgCisgKiB0aGUgdHlwZSBvZiBLZXlJbmZvLCBhbmQgYW4gb3B0aW9uYWwgbGlzdCBvZiB7QGxpbmsgVHJhbnNmb3JtfXM7IGZvciBleGFtcGxlOgorICogPHByZT4KKyAqICAgS2V5SW5mb0ZhY3RvcnkgZmFjdG9yeSA9IEtleUluZm9GYWN0b3J5LmdldEluc3RhbmNlKCJET00iKTsKKyAqICAgUmV0cmlldmFsTWV0aG9kIHJtID0gZmFjdG9yeS5uZXdSZXRyaWV2YWxNZXRob2QKKyAqICAgICAgKCIjS2V5VmFsdWUtMSIsIEtleVZhbHVlLkRTQV9UWVBFLCBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KFRyYW5zZm9ybS5CQVNFNjQpKTsKKyAqIDwvcHJlPgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgSlNSIDEwNSBFeHBlcnQgR3JvdXAKKyAqIEBzZWUgS2V5SW5mb0ZhY3RvcnkjbmV3UmV0cmlldmFsTWV0aG9kKFN0cmluZykKKyAqIEBzZWUgS2V5SW5mb0ZhY3RvcnkjbmV3UmV0cmlldmFsTWV0aG9kKFN0cmluZywgU3RyaW5nLCBMaXN0KQorICovCitwdWJsaWMgaW50ZXJmYWNlIFJldHJpZXZhbE1ldGhvZCBleHRlbmRzIFVSSVJlZmVyZW5jZSwgWE1MU3RydWN0dXJlIHsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgYW4ge0BsaW5rIGphdmEudXRpbC5Db2xsZWN0aW9ucyN1bm1vZGlmaWFibGVMaXN0IHVubW9kaWZpYWJsZSAKKyAgICAgKiBsaXN0fSBvZiB7QGxpbmsgVHJhbnNmb3JtfXMgb2YgdGhpcyA8Y29kZT5SZXRyaWV2YWxNZXRob2Q8L2NvZGU+LiAKKyAgICAgKgorICAgICAqIEByZXR1cm4gYW4gdW5tb2RpZmlhYmxlIGxpc3Qgb2YgPGNvZGU+VHJhbnNmb3JtPC9jb2RlPiBvYmplY3RzIChtYXkgYmUgCisgICAgICogICAgZW1wdHkgYnV0IG5ldmVyIDxjb2RlPm51bGw8L2NvZGU+KS4gCisgICAgICovCisgICAgTGlzdCBnZXRUcmFuc2Zvcm1zKCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBVUkkgb2YgdGhlIHJlZmVyZW5jZWQgPGNvZGU+S2V5SW5mbzwvY29kZT4gaW5mb3JtYXRpb24uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBVUkkgb2YgdGhlIHJlZmVyZW5jZWQgPGNvZGU+S2V5SW5mbzwvY29kZT4gaW5mb3JtYXRpb24gaW4gCisgICAgICogICAgUkZDIDIzOTYgZm9ybWF0IChuZXZlciA8Y29kZT5udWxsPC9jb2RlPikKKyAgICAgKi8KKyAgICBTdHJpbmcgZ2V0VVJJKCk7CisKKyAgIC8qKgorICAgICogRGVyZWZlcmVuY2VzIHRoZSA8Y29kZT5LZXlJbmZvPC9jb2RlPiBpbmZvcm1hdGlvbiByZWZlcmVuY2VkIGJ5IHRoaXMgCisgICAgKiA8Y29kZT5SZXRyaWV2YWxNZXRob2Q8L2NvZGU+IGFuZCBhcHBsaWVzIHRoZSBzcGVjaWZpZWQgCisgICAgKiA8Y29kZT5UcmFuc2Zvcm08L2NvZGU+cy4KKyAgICAqCisgICAgKiBAcGFyYW0gY29udGV4dCBhbiA8Y29kZT5YTUxDcnlwdG9Db250ZXh0PC9jb2RlPiB0aGF0IG1heSBjb250YWluIAorICAgICogICAgYWRkaXRpb25hbCB1c2VmdWwgaW5mb3JtYXRpb24gZm9yIGRlcmVmZXJlbmNpbmcgdGhlIFVSSS4gVGhlIAorICAgICogICAgY29udGV4dCdzIDxjb2RlPmJhc2VVUkk8L2NvZGU+IGFuZCA8Y29kZT5kZXJlZmVyZW5jZXI8L2NvZGU+IAorICAgICogICAgcGFyYW1ldGVycyAoaWYgc3BlY2lmaWVkKSBhcmUgdXNlZCB0byByZXNvbHZlIGFuZCBkZXJlZmVyZW5jZSB0aGlzCisgICAgKiAgICA8Y29kZT5SZXRyaWV2YWxNZXRob2Q8L2NvZGU+CisgICAgKiBAcmV0dXJuIGEgPGNvZGU+RGF0YTwvY29kZT4gb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgcmF3IGNvbnRlbnRzIG9mIHRoZQorICAgICogICAgPGNvZGU+S2V5SW5mbzwvY29kZT4gaW5mb3JtYXRpb24gcmVmZXJlbmNlZCBieSB0aGlzIAorICAgICogICAgPGNvZGU+UmV0cmlldmFsTWV0aG9kPC9jb2RlPi4gSXQgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvCisgICAgKiAgICBjb252ZXJ0IHRoZSByZXR1cm5lZCBkYXRhIHRvIGFuIGFwcHJvcHJpYXRlIAorICAgICogICAgPGNvZGU+S2V5SW5mbzwvY29kZT4gb2JqZWN0LgorICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5jb250ZXh0PC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPgorICAgICogQHRocm93cyBVUklSZWZlcmVuY2VFeGNlcHRpb24gaWYgdGhlcmUgaXMgYW4gZXJyb3Igd2hpbGUgZGVyZWZlcmVuY2luZworICAgICovCisgICAgRGF0YSBkZXJlZmVyZW5jZShYTUxDcnlwdG9Db250ZXh0IGNvbnRleHQpIHRocm93cyBVUklSZWZlcmVuY2VFeGNlcHRpb247Cit9CmRpZmYgLS1naXQgYS9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL2tleWluZm8vWDUwOURhdGEuamF2YSBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcva2V5aW5mby9YNTA5RGF0YS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwMjI3MzUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL2tleWluZm8vWDUwOURhdGEuamF2YQpAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by5kc2lnLmtleWluZm87CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLlhNTFN0cnVjdHVyZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNSTDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworLyoqCisgKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBYTUwgPGNvZGU+WDUwOURhdGE8L2NvZGU+IGVsZW1lbnQgYXMgZGVmaW5lZCBpbiAKKyAqIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWxkc2lnLWNvcmUvIj4KKyAqIFczQyBSZWNvbW1lbmRhdGlvbiBmb3IgWE1MLVNpZ25hdHVyZSBTeW50YXggYW5kIFByb2Nlc3Npbmc8L2E+LiBBbgorICogPGNvZGU+WDUwOURhdGE8L2NvZGU+IG9iamVjdCBjb250YWlucyBvbmUgb3IgbW9yZSBpZGVudGlmZXJzIG9mIGtleXMgCisgKiBvciBYLjUwOSBjZXJ0aWZpY2F0ZXMgKG9yIGNlcnRpZmljYXRlcycgaWRlbnRpZmllcnMgb3IgYSByZXZvY2F0aW9uIGxpc3QpLiAKKyAqIFRoZSBYTUwgU2NoZW1hIERlZmluaXRpb24gaXMgZGVmaW5lZCBhczoKKyAqIAorICogPHByZT4KKyAqICAgICZsdDtlbGVtZW50IG5hbWU9Ilg1MDlEYXRhIiB0eXBlPSJkczpYNTA5RGF0YVR5cGUiLyZndDsKKyAqICAgICZsdDtjb21wbGV4VHlwZSBuYW1lPSJYNTA5RGF0YVR5cGUiJmd0OyAKKyAqICAgICAgICAmbHQ7c2VxdWVuY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiJmd0OyAKKyAqICAgICAgICAgICZsdDtjaG9pY2UmZ3Q7IAorICogICAgICAgICAgICAmbHQ7ZWxlbWVudCBuYW1lPSJYNTA5SXNzdWVyU2VyaWFsIiB0eXBlPSJkczpYNTA5SXNzdWVyU2VyaWFsVHlwZSIvJmd0OworICogICAgICAgICAgICAmbHQ7ZWxlbWVudCBuYW1lPSJYNTA5U0tJIiB0eXBlPSJiYXNlNjRCaW5hcnkiLyZndDsKKyAqICAgICAgICAgICAgJmx0O2VsZW1lbnQgbmFtZT0iWDUwOVN1YmplY3ROYW1lIiB0eXBlPSJzdHJpbmciLyZndDsgCisgKiAgICAgICAgICAgICZsdDtlbGVtZW50IG5hbWU9Ilg1MDlDZXJ0aWZpY2F0ZSIgdHlwZT0iYmFzZTY0QmluYXJ5Ii8mZ3Q7CisgKiAgICAgICAgICAgICZsdDtlbGVtZW50IG5hbWU9Ilg1MDlDUkwiIHR5cGU9ImJhc2U2NEJpbmFyeSIvJmd0OyAKKyAqICAgICAgICAgICAgJmx0O2FueSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4Ii8mZ3Q7CisgKiAgICAgICAgICAmbHQ7L2Nob2ljZSZndDsgIAorICogICAgICAgICZsdDsvc2VxdWVuY2UmZ3Q7CisgKiAgICAmbHQ7L2NvbXBsZXhUeXBlJmd0OworICoKKyAqICAgICZsdDtjb21wbGV4VHlwZSBuYW1lPSJYNTA5SXNzdWVyU2VyaWFsVHlwZSImZ3Q7IAorICogICAgICAmbHQ7c2VxdWVuY2UmZ3Q7IAorICogICAgICAgICZsdDtlbGVtZW50IG5hbWU9Ilg1MDlJc3N1ZXJOYW1lIiB0eXBlPSJzdHJpbmciLyZndDsgCisgKiAgICAgICAgJmx0O2VsZW1lbnQgbmFtZT0iWDUwOVNlcmlhbE51bWJlciIgdHlwZT0iaW50ZWdlciIvJmd0OyAKKyAqICAgICAgJmx0Oy9zZXF1ZW5jZSZndDsKKyAqICAgICZsdDsvY29tcGxleFR5cGUmZ3Q7CisgKiA8L3ByZT4KKyAqCisgKiBBbiA8Y29kZT5YNTA5RGF0YTwvY29kZT4gaW5zdGFuY2UgbWF5IGJlIGNyZWF0ZWQgYnkgaW52b2tpbmcgdGhlCisgKiB7QGxpbmsgS2V5SW5mb0ZhY3RvcnkjbmV3WDUwOURhdGEgbmV3WDUwOURhdGF9IG1ldGhvZHMgb2YgdGhlCisgKiB7QGxpbmsgS2V5SW5mb0ZhY3Rvcnl9IGNsYXNzIGFuZCBwYXNzaW5nIGl0IGEgbGlzdCBvZiBvbmUgb3IgbW9yZSAKKyAqIHtAbGluayBYTUxTdHJ1Y3R1cmV9cyByZXByZXNlbnRpbmcgWC41MDkgY29udGVudDsgZm9yIGV4YW1wbGU6CisgKiA8cHJlPgorICogICBLZXlJbmZvRmFjdG9yeSBmYWN0b3J5ID0gS2V5SW5mb0ZhY3RvcnkuZ2V0SW5zdGFuY2UoIkRPTSIpOworICogICBYNTA5RGF0YSB4NTA5RGF0YSA9IGZhY3RvcnkubmV3WDUwOURhdGEKKyAqICAgICAgIChDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KCJjbj1BbGljZSIpKTsKKyAqIDwvcHJlPgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgSlNSIDEwNSBFeHBlcnQgR3JvdXAKKyAqIEBzZWUgS2V5SW5mb0ZhY3RvcnkjbmV3WDUwOURhdGEoTGlzdCkKKyAqLworLy9AQEAgY2hlY2sgZm9yIGlsbGVnYWwgY29tYmluYXRpb25zIG9mIGRhdGEgdmlvbGF0aW5nIE1VU1RzIGluIFczYyBzcGVjCitwdWJsaWMgaW50ZXJmYWNlIFg1MDlEYXRhIGV4dGVuZHMgWE1MU3RydWN0dXJlIHsKKworICAgIC8qKgorICAgICAqIFVSSSBpZGVudGlmeWluZyB0aGUgWDUwOURhdGEgS2V5SW5mbyB0eXBlOgorICAgICAqIGh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNYNTA5RGF0YS4gVGhpcyBjYW4gYmUgc3BlY2lmaWVkIGFzCisgICAgICogdGhlIHZhbHVlIG9mIHRoZSA8Y29kZT50eXBlPC9jb2RlPiBwYXJhbWV0ZXIgb2YgdGhlCisgICAgICoge0BsaW5rIFJldHJpZXZhbE1ldGhvZH0gY2xhc3MgdG8gZGVzY3JpYmUgYSByZW1vdGUKKyAgICAgKiA8Y29kZT5YNTA5RGF0YTwvY29kZT4gc3RydWN0dXJlLgorICAgICAqLworICAgIGZpbmFsIHN0YXRpYyBTdHJpbmcgVFlQRSA9ICJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjWDUwOURhdGEiOworCisgICAgLyoqCisgICAgICogVVJJIGlkZW50aWZ5aW5nIHRoZSBiaW5hcnkgKEFTTi4xIERFUikgWC41MDkgQ2VydGlmaWNhdGUgS2V5SW5mbyB0eXBlOgorICAgICAqIGh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyYXdYNTA5Q2VydGlmaWNhdGUuIFRoaXMgY2FuIGJlIAorICAgICAqIHNwZWNpZmllZCBhcyB0aGUgdmFsdWUgb2YgdGhlIDxjb2RlPnR5cGU8L2NvZGU+IHBhcmFtZXRlciBvZiB0aGUKKyAgICAgKiB7QGxpbmsgUmV0cmlldmFsTWV0aG9kfSBjbGFzcyB0byBkZXNjcmliZSBhIHJlbW90ZSBYNTA5IENlcnRpZmljYXRlLgorICAgICAqLworICAgIGZpbmFsIHN0YXRpYyBTdHJpbmcgUkFXX1g1MDlfQ0VSVElGSUNBVEVfVFlQRSA9CisgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcmF3WDUwOUNlcnRpZmljYXRlIjsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgYW4ge0BsaW5rIGphdmEudXRpbC5Db2xsZWN0aW9ucyN1bm1vZGlmaWFibGVMaXN0IHVubW9kaWZpYWJsZSAKKyAgICAgKiBsaXN0fSBvZiB0aGUgY29udGVudCBpbiB0aGlzIDxjb2RlPlg1MDlEYXRhPC9jb2RlPi4gVmFsaWQgdHlwZXMgYXJlIAorICAgICAqIHtAbGluayBTdHJpbmd9IChzdWJqZWN0IG5hbWVzKSwgPGNvZGU+Ynl0ZVtdPC9jb2RlPiAoc3ViamVjdCBrZXkgaWRzKSwgCisgICAgICoge0BsaW5rIGphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGV9LCB7QGxpbmsgWDUwOUNSTH0sIAorICAgICAqIG9yIHtAbGluayBYTUxTdHJ1Y3R1cmV9ICh7QGxpbmsgWDUwOUlzc3VlclNlcmlhbH0KKyAgICAgKiBvYmplY3RzIG9yIGVsZW1lbnRzIGZyb20gYW4gZXh0ZXJuYWwgbmFtZXNwYWNlKS4gCisgICAgICoKKyAgICAgKiBAcmV0dXJuIGFuIHVubW9kaWZpYWJsZSBsaXN0IG9mIHRoZSBjb250ZW50IGluIHRoaXMgPGNvZGU+WDUwOURhdGE8L2NvZGU+CisgICAgICogICAgKG5ldmVyIDxjb2RlPm51bGw8L2NvZGU+IG9yIGVtcHR5KQorICAgICAqLworICAgIExpc3QgZ2V0Q29udGVudCgpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9rZXlpbmZvL1g1MDlJc3N1ZXJTZXJpYWwuamF2YSBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcva2V5aW5mby9YNTA5SXNzdWVyU2VyaWFsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNlMzhiZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcva2V5aW5mby9YNTA5SXNzdWVyU2VyaWFsLmphdmEKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by5kc2lnLmtleWluZm87CisKK2ltcG9ydCBqYXZhLm1hdGguQmlnSW50ZWdlcjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uWE1MU3RydWN0dXJlOworCisvKioKKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIFhNTCA8Y29kZT5YNTA5SXNzdWVyU2VyaWFsPC9jb2RlPiBlbGVtZW50IGFzIAorICogZGVmaW5lZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sZHNpZy1jb3JlLyI+CisgKiBXM0MgUmVjb21tZW5kYXRpb24gZm9yIFhNTC1TaWduYXR1cmUgU3ludGF4IGFuZCBQcm9jZXNzaW5nPC9hPi4gCisgKiBBbiA8Y29kZT5YNTA5SXNzdWVyU2VyaWFsPC9jb2RlPiBvYmplY3QgY29udGFpbnMgYW4gWC41MDkgaXNzdWVyIAorICogZGlzdGluZ3Vpc2hlZCBuYW1lIChETikgYW5kIHNlcmlhbCBudW1iZXIgcGFpci4gVGhlIFhNTCBzY2hlbWEgZGVmaW5pdGlvbiBpcyAKKyAqIGRlZmluZWQgYXM6IAorICoKKyAqIDxwcmU+CisgKiAgICZsdDtlbGVtZW50IG5hbWU9Ilg1MDlJc3N1ZXJTZXJpYWwiIHR5cGU9ImRzOlg1MDlJc3N1ZXJTZXJpYWxUeXBlIi8mZ3Q7CisgKiAgICZsdDtjb21wbGV4VHlwZSBuYW1lPSJYNTA5SXNzdWVyU2VyaWFsVHlwZSImZ3Q7CisgKiAgICAgJmx0O3NlcXVlbmNlJmd0OworICogICAgICAgJmx0O2VsZW1lbnQgbmFtZT0iWDUwOUlzc3Vlck5hbWUiIHR5cGU9InN0cmluZyIvJmd0OyAKKyAqICAgICAgICZsdDtlbGVtZW50IG5hbWU9Ilg1MDlTZXJpYWxOdW1iZXIiIHR5cGU9ImludGVnZXIiLyZndDsgCisgKiAgICAgJmx0Oy9zZXF1ZW5jZSZndDsgIAorICogICAmbHQ7L2NvbXBsZXhUeXBlJmd0OworICogPC9wcmU+CisgKgorICogQW4gPGNvZGU+WDUwOUlzc3VlclNlcmlhbDwvY29kZT4gaW5zdGFuY2UgbWF5IGJlIGNyZWF0ZWQgYnkgaW52b2tpbmcgdGhlCisgKiB7QGxpbmsgS2V5SW5mb0ZhY3RvcnkjbmV3WDUwOUlzc3VlclNlcmlhbCBuZXdYNTA5SXNzdWVyU2VyaWFsfSBtZXRob2QgCisgKiBvZiB0aGUge0BsaW5rIEtleUluZm9GYWN0b3J5fSBjbGFzcywgYW5kIHBhc3NpbmcgaXQgYSAKKyAqIDxjb2RlPlN0cmluZzwvY29kZT4gYW5kIDxjb2RlPkJpZ0ludGVnZXI8L2NvZGU+IHJlcHJlc2VudGluZyB0aGUgWC41MDAKKyAqIEROIGFuZCBzZXJpYWwgbnVtYmVyLiBIZXJlIGlzIGFuIGV4YW1wbGUgb2YgY3JlYXRpbmcgYW4gCisgKiA8Y29kZT5YNTA5SXNzdWVyU2VyaWFsPC9jb2RlPiBmcm9tIHRoZSBpc3N1ZXIgRE4gYW5kIHNlcmlhbCBudW1iZXIgb2YgYW4gCisgKiBleGlzdGluZyB7QGxpbmsgWDUwOUNlcnRpZmljYXRlfToKKyAqIDxwcmU+CisgKiBLZXlJbmZvRmFjdG9yeSBmYWN0b3J5ID0gS2V5SW5mb0ZhY3RvcnkuZ2V0SW5zdGFuY2UoIkRPTSIpOworICogWDUwOUlzc3VlclNlcmlhbCBpc3N1ZXIgPSBmYWN0b3J5Lm5ld1g1MDlJc3N1ZXJTZXJpYWwKKyAqICAgICAoY2VydC5nZXRJc3N1ZXJYNTAwUHJpbmNpcGFsKCkuZ2V0TmFtZSgpLCBjZXJ0LmdldFNlcmlhbE51bWJlcigpKTsKKyAqIDwvcHJlPgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgSlNSIDEwNSBFeHBlcnQgR3JvdXAKKyAqIEBzZWUgWDUwOURhdGEjZ2V0Q29udGVudAorICogQHNlZSBLZXlJbmZvRmFjdG9yeSNuZXdYNTA5SXNzdWVyU2VyaWFsKFN0cmluZywgQmlnSW50ZWdlcikKKyAqLworcHVibGljIGludGVyZmFjZSBYNTA5SXNzdWVyU2VyaWFsIGV4dGVuZHMgWE1MU3RydWN0dXJlIHsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIFguNTAwIGRpc3Rpbmd1aXNoZWQgbmFtZSBvZiB0aGlzIAorICAgICAqIDxjb2RlPlg1MDlJc3N1ZXJTZXJpYWw8L2NvZGU+IGluIAorICAgICAqIDxhIGhyZWY9Imh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzIyNTMudHh0Ij5SRkMgMjI1MzwvYT4gU3RyaW5nIGZvcm1hdC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIFguNTAwIGRpc3Rpbmd1aXNoZWQgbmFtZSBpbiBSRkMgMjI1MyBTdHJpbmcgZm9ybWF0IChuZXZlciAKKyAgICAgKiAgICA8Y29kZT5udWxsPC9jb2RlPikKKyAgICAgKi8KKyAgICBTdHJpbmcgZ2V0SXNzdWVyTmFtZSgpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgc2VyaWFsIG51bWJlciBvZiB0aGlzIDxjb2RlPlg1MDlJc3N1ZXJTZXJpYWw8L2NvZGU+LgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgc2VyaWFsIG51bWJlciAobmV2ZXIgPGNvZGU+bnVsbDwvY29kZT4pCisgICAgICovCisgICAgQmlnSW50ZWdlciBnZXRTZXJpYWxOdW1iZXIoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcva2V5aW5mby9wYWNrYWdlLmh0bWwgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL2tleWluZm8vcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkMDE2YzQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL2tleWluZm8vcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsNTUgQEAKKzxodG1sPgorPGhlYWQ+Cis8IS0tCisvKgorICogQ29weXJpZ2h0IDIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLS0+Cis8IS0tCisgQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLS0+Cis8L2hlYWQ+Cis8Ym9keT4KK0NsYXNzZXMgZm9yIHBhcnNpbmcgYW5kIHByb2Nlc3Npbmcge0BsaW5rIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvLktleUluZm8gCitLZXlJbmZvfSBlbGVtZW50cyBhbmQgc3RydWN0dXJlcy4gPGNvZGU+S2V5SW5mbzwvY29kZT4gaXMgYW4gb3B0aW9uYWwgZWxlbWVudAordGhhdCBlbmFibGVzIHRoZSByZWNpcGllbnQocykgdG8gb2J0YWluIHRoZSBrZXkgbmVlZGVkIHRvIHZhbGlkYXRlIGFuIAore0BsaW5rIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5YTUxTaWduYXR1cmUgWE1MU2lnbmF0dXJlfS4gPGNvZGU+S2V5SW5mbzwvY29kZT4gCittYXkgY29udGFpbiBrZXlzLCBuYW1lcywgY2VydGlmaWNhdGVzIGFuZCBvdGhlciBwdWJsaWMga2V5IG1hbmFnZW1lbnQgCitpbmZvcm1hdGlvbiwgc3VjaCBhcyBpbi1iYW5kIGtleSBkaXN0cmlidXRpb24gb3Iga2V5IGFncmVlbWVudCBkYXRhLiBUaGlzIAorcGFja2FnZSBjb250YWlucyBjbGFzc2VzIHJlcHJlc2VudGluZyB0eXBlcyBkZWZpbmVkIGluIHRoZSBXM0Mgc3BlY2lmaWNhdGlvbiAKK2ZvciBYTUwgU2lnbmF0dXJlcywgc3VjaCBhcyAKK3tAbGluayBqYXZheC54bWwuY3J5cHRvLmRzaWcua2V5aW5mby5LZXlOYW1lIEtleU5hbWV9LAore0BsaW5rIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvLktleVZhbHVlIEtleVZhbHVlfSwKK3tAbGluayBqYXZheC54bWwuY3J5cHRvLmRzaWcua2V5aW5mby5SZXRyaWV2YWxNZXRob2QgUmV0cmlldmFsTWV0aG9kfSwKK3tAbGluayBqYXZheC54bWwuY3J5cHRvLmRzaWcua2V5aW5mby5YNTA5RGF0YSBYNTA5RGF0YX0sCit7QGxpbmsgamF2YXgueG1sLmNyeXB0by5kc2lnLmtleWluZm8uWDUwOUlzc3VlclNlcmlhbCBYNTA5SXNzdWVyU2VyaWFsfSwgYW5kCit7QGxpbmsgamF2YXgueG1sLmNyeXB0by5kc2lnLmtleWluZm8uUEdQRGF0YSBQR1BEYXRhfS4KK3tAbGluayBqYXZheC54bWwuY3J5cHRvLmRzaWcua2V5aW5mby5LZXlJbmZvRmFjdG9yeSBLZXlJbmZvRmFjdG9yeX0KK2lzIGFuIGFic3RyYWN0IGZhY3RvcnkgdGhhdCBjcmVhdGVzIDxjb2RlPktleUluZm88L2NvZGU+IG9iamVjdHMgZnJvbSBzY3JhdGNoLgorCis8aDI+UGFja2FnZSBTcGVjaWZpY2F0aW9uPC9oMj4KKworPHVsPgorPGxpPgorPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sZHNpZy1jb3JlLyI+CitYTUwtU2lnbmF0dXJlIFN5bnRheCBhbmQgUHJvY2Vzc2luZzogVzNDIFJlY29tbWVuZGF0aW9uPC9hPgorPGxpPgorPGEgaHJlZj0iaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMzI3NS50eHQiPgorUkZDIDMyNzU6IFhNTC1TaWduYXR1cmUgU3ludGF4IGFuZCBQcm9jZXNzaW5nPC9hPgorPC91bD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9wYWNrYWdlLmh0bWwgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDU0ODNhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSw2NSBAQAorPGh0bWw+Cis8aGVhZD4KKzwhLS0KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCistLT4KKzwhLS0KKyBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCistLT4KKzwvaGVhZD4KKzxib2R5PgorQ2xhc3NlcyBmb3IgZ2VuZXJhdGluZyBhbmQgdmFsaWRhdGluZyBYTUwgZGlnaXRhbAorc2lnbmF0dXJlcy4gVGhpcyBwYWNrYWdlIGluY2x1ZGVzIGNsYXNzZXMgdGhhdCByZXByZXNlbnQgdGhlIGNvcmUgZWxlbWVudHMgCitkZWZpbmVkIGluIHRoZSBXM0MgWE1MIGRpZ2l0YWwgc2lnbmF0dXJlIHNwZWNpZmljYXRpb246Cit7QGxpbmsgamF2YXgueG1sLmNyeXB0by5kc2lnLlhNTFNpZ25hdHVyZSBYTUxTaWduYXR1cmV9LAore0BsaW5rIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5TaWduZWRJbmZvIFNpZ25lZEluZm99LAore0BsaW5rIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5DYW5vbmljYWxpemF0aW9uTWV0aG9kIENhbm9uaWNhbGl6YXRpb25NZXRob2R9LAore0BsaW5rIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5TaWduYXR1cmVNZXRob2QgU2lnbmF0dXJlTWV0aG9kfSwKK3tAbGluayBqYXZheC54bWwuY3J5cHRvLmRzaWcuUmVmZXJlbmNlIFJlZmVyZW5jZX0sIAore0BsaW5rIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5EaWdlc3RNZXRob2QgRGlnZXN0TWV0aG9kfSwKK3tAbGluayBqYXZheC54bWwuY3J5cHRvLmRzaWcuWE1MT2JqZWN0IFhNTE9iamVjdH0sIAore0BsaW5rIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5NYW5pZmVzdCBNYW5pZmVzdH0sCit7QGxpbmsgamF2YXgueG1sLmNyeXB0by5kc2lnLlNpZ25hdHVyZVByb3BlcnRpZXMgU2lnbmF0dXJlUHJvcGVydGllc30sIGFuZAore0BsaW5rIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5TaWduYXR1cmVQcm9wZXJ0eSBTaWduYXR1cmVQcm9wZXJ0eX0uIAorPGNvZGU+S2V5SW5mbzwvY29kZT4gdHlwZXMKK2FyZSBkZWZpbmVkIGluIHRoZSB7QGxpbmsgamF2YXgueG1sLmNyeXB0by5kc2lnLmtleWluZm99IHN1YnBhY2thZ2UuCit7QGxpbmsgamF2YXgueG1sLmNyeXB0by5kc2lnLlhNTFNpZ25hdHVyZUZhY3RvcnkgWE1MU2lnbmF0dXJlRmFjdG9yeX0KK2lzIGFuIGFic3RyYWN0IGZhY3RvcnkgdGhhdCBjcmVhdGVzIAore0BsaW5rIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5YTUxTaWduYXR1cmUgWE1MU2lnbmF0dXJlfSBvYmplY3RzIGZyb20gc2NyYXRjaAorb3IgZnJvbSBhIHByZS1leGlzdGluZyBYTUwgcmVwcmVzZW50YXRpb24sIHN1Y2ggYXMgYSBET00gbm9kZS4KK3tAbGluayBqYXZheC54bWwuY3J5cHRvLmRzaWcuVHJhbnNmb3JtU2VydmljZX0gaXMgYSBzZXJ2aWNlIHByb3ZpZGVyCitpbnRlcmZhY2UgZm9yIGNyZWF0aW5nIGFuZCBwbHVnZ2luZyBpbiBpbXBsZW1lbnRhdGlvbnMgb2YKK3RyYW5zZm9ybSBhbmQgY2Fub25pY2FsaXphdGlvbiBhbGdvcml0aG1zLgorCis8cD5PZiBwcmltYXJ5IHNpZ25pZmljYW5jZSBpbiB0aGlzIHBhY2thZ2UgaXMgdGhlIAore0BsaW5rIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5YTUxTaWduYXR1cmUgWE1MU2lnbmF0dXJlfSBjbGFzcywKK3doaWNoIGFsbG93cyB5b3UgdG8gc2lnbiBhbmQgdmFsaWRhdGUgYW4gWE1MIGRpZ2l0YWwgc2lnbmF0dXJlLgorCis8aDI+UGFja2FnZSBTcGVjaWZpY2F0aW9uPC9oMj4KKworPHVsPgorPGxpPgorPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sZHNpZy1jb3JlLyI+CitYTUwtU2lnbmF0dXJlIFN5bnRheCBhbmQgUHJvY2Vzc2luZzogVzNDIFJlY29tbWVuZGF0aW9uPC9hPgorPGxpPgorPGEgaHJlZj0iaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMzI3NS50eHQiPgorUkZDIDMyNzU6IFhNTC1TaWduYXR1cmUgU3ludGF4IGFuZCBQcm9jZXNzaW5nPC9hPgorPC91bD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9zcGVjL0MxNE5NZXRob2RQYXJhbWV0ZXJTcGVjLmphdmEgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL3NwZWMvQzE0Tk1ldGhvZFBhcmFtZXRlclNwZWMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjM2NmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9zcGVjL0MxNE5NZXRob2RQYXJhbWV0ZXJTcGVjLmphdmEKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by5kc2lnLnNwZWM7CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuQ2Fub25pY2FsaXphdGlvbk1ldGhvZDsKKworLyoqCisgKiBBIHNwZWNpZmljYXRpb24gb2YgYWxnb3JpdGhtIHBhcmFtZXRlcnMgZm9yIGEge0BsaW5rIENhbm9uaWNhbGl6YXRpb25NZXRob2R9CisgKiBBbGdvcml0aG0uIFRoZSBwdXJwb3NlIG9mIHRoaXMgaW50ZXJmYWNlIGlzIHRvIGdyb3VwIChhbmQgcHJvdmlkZSB0eXBlIAorICogc2FmZXR5IGZvcikgYWxsIGNhbm9uaWNhbGl6YXRpb24gKEMxNE4pIHBhcmFtZXRlciBzcGVjaWZpY2F0aW9ucy4gQWxsIAorICogY2Fub25pY2FsaXphdGlvbiBwYXJhbWV0ZXIgc3BlY2lmaWNhdGlvbnMgbXVzdCBpbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UuCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICogQGF1dGhvciBKU1IgMTA1IEV4cGVydCBHcm91cAorICogQHNlZSBDYW5vbmljYWxpemF0aW9uTWV0aG9kCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgQzE0Tk1ldGhvZFBhcmFtZXRlclNwZWMgZXh0ZW5kcyBUcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjIHt9CmRpZmYgLS1naXQgYS9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL3NwZWMvRGlnZXN0TWV0aG9kUGFyYW1ldGVyU3BlYy5qYXZhIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9zcGVjL0RpZ2VzdE1ldGhvZFBhcmFtZXRlclNwZWMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTYwYTlhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9zcGVjL0RpZ2VzdE1ldGhvZFBhcmFtZXRlclNwZWMuamF2YQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IDIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLmRzaWcuc3BlYzsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5EaWdlc3RNZXRob2Q7CitpbXBvcnQgamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWM7CisKKy8qKgorICogQSBzcGVjaWZpY2F0aW9uIG9mIGFsZ29yaXRobSBwYXJhbWV0ZXJzIGZvciBhIHtAbGluayBEaWdlc3RNZXRob2R9CisgKiBhbGdvcml0aG0uIFRoZSBwdXJwb3NlIG9mIHRoaXMgaW50ZXJmYWNlIGlzIHRvIGdyb3VwIChhbmQgcHJvdmlkZSB0eXBlIAorICogc2FmZXR5IGZvcikgYWxsIGRpZ2VzdCBtZXRob2QgcGFyYW1ldGVyIHNwZWNpZmljYXRpb25zLiBBbGwgZGlnZXN0IG1ldGhvZAorICogcGFyYW1ldGVyIHNwZWNpZmljYXRpb25zIG11c3QgaW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlLgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgSlNSIDEwNSBFeHBlcnQgR3JvdXAKKyAqIEBzZWUgRGlnZXN0TWV0aG9kCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgRGlnZXN0TWV0aG9kUGFyYW1ldGVyU3BlYyBleHRlbmRzIEFsZ29yaXRobVBhcmFtZXRlclNwZWMge30KZGlmZiAtLWdpdCBhL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvc3BlYy9FeGNDMTROUGFyYW1ldGVyU3BlYy5qYXZhIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9zcGVjL0V4Y0MxNE5QYXJhbWV0ZXJTcGVjLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRhNDhjOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvc3BlYy9FeGNDMTROUGFyYW1ldGVyU3BlYy5qYXZhCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IDIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLmRzaWcuc3BlYzsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5DYW5vbmljYWxpemF0aW9uTWV0aG9kOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCisvKioKKyAqIFBhcmFtZXRlcnMgZm9yIHRoZSBXM0MgUmVjb21tZW5kYXRpb246CisgKiA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtZXhjLWMxNG4vIj4KKyAqIEV4Y2x1c2l2ZSBYTUwgQ2Fub25pY2FsaXphdGlvbiAoQzE0TikgYWxnb3JpdGhtPC9hPi4gVGhlCisgKiBwYXJhbWV0ZXJzIGluY2x1ZGUgYW4gb3B0aW9uYWwgaW5jbHVzaXZlIG5hbWVzcGFjZSBwcmVmaXggbGlzdC4gVGhlIFhNTCAKKyAqIFNjaGVtYSBEZWZpbml0aW9uIG9mIHRoZSBFeGNsdXNpdmUgWE1MIENhbm9uaWNhbGl6YXRpb24gcGFyYW1ldGVycyBpcworICogZGVmaW5lZCBhczoKKyAqIDxwcmU+PGNvZGU+CisgKiAmbHQ7c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKKyAqICAgICAgICAgeG1sbnM6ZWM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIKKyAqICAgICAgICAgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiCisgKiAgICAgICAgIHZlcnNpb249IjAuMSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiJmd0OworICoKKyAqICZsdDtlbGVtZW50IG5hbWU9IkluY2x1c2l2ZU5hbWVzcGFjZXMiIHR5cGU9ImVjOkluY2x1c2l2ZU5hbWVzcGFjZXMiLyZndDsKKyAqICZsdDtjb21wbGV4VHlwZSBuYW1lPSJJbmNsdXNpdmVOYW1lc3BhY2VzIiZndDsKKyAqICAgJmx0O2F0dHJpYnV0ZSBuYW1lPSJQcmVmaXhMaXN0IiB0eXBlPSJ4c2Q6c3RyaW5nIi8mZ3Q7CisgKiAmbHQ7L2NvbXBsZXhUeXBlJmd0OworICogJmx0Oy9zY2hlbWEmZ3Q7CisgKiA8L2NvZGU+PC9wcmU+CisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICogQGF1dGhvciBKU1IgMTA1IEV4cGVydCBHcm91cAorICogQHNlZSBDYW5vbmljYWxpemF0aW9uTWV0aG9kCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBFeGNDMTROUGFyYW1ldGVyU3BlYyBpbXBsZW1lbnRzIEMxNE5NZXRob2RQYXJhbWV0ZXJTcGVjIHsKKworICAgIHByaXZhdGUgTGlzdCBwcmVMaXN0OworCisgICAgLyoqCisgICAgICogSW5kaWNhdGVzIHRoZSBkZWZhdWx0IG5hbWVzcGFjZSAoIiNkZWZhdWx0IikuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgREVGQVVMVCA9ICIjZGVmYXVsdCI7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+RXhjQzE0TlBhcmFtZXRlclNwZWM8L2NvZGU+IHdpdGggYW4gZW1wdHkgcHJlZml4IAorICAgICAqIGxpc3QuCisgICAgICovCisgICAgcHVibGljIEV4Y0MxNE5QYXJhbWV0ZXJTcGVjKCkgeworCXByZUxpc3QgPSBDb2xsZWN0aW9ucy5FTVBUWV9MSVNUOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSA8Y29kZT5FeGNDMTROUGFyYW1ldGVyU3BlYzwvY29kZT4gd2l0aCB0aGUgc3BlY2lmaWVkIGxpc3QKKyAgICAgKiBvZiBwcmVmaXhlcy4gVGhlIGxpc3QgaXMgY29waWVkIHRvIHByb3RlY3QgYWdhaW5zdCBzdWJzZXF1ZW50IAorICAgICAqIG1vZGlmaWNhdGlvbi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwcmVmaXhMaXN0IHRoZSBpbmNsdXNpdmUgbmFtZXNwYWNlIHByZWZpeCBsaXN0LiBFYWNoIGVudHJ5IGluCisgICAgICogICAgdGhlIGxpc3QgaXMgYSA8Y29kZT5TdHJpbmc8L2NvZGU+IHRoYXQgcmVwcmVzZW50cyBhIG5hbWVzcGFjZSBwcmVmaXguCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5wcmVmaXhMaXN0PC9jb2RlPiBpcyAKKyAgICAgKiAgICA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEB0aHJvd3MgQ2xhc3NDYXN0RXhjZXB0aW9uIGlmIGFueSBvZiB0aGUgZW50cmllcyBpbiB0aGUgbGlzdCBhcmUgbm90CisgICAgICogICAgb2YgdHlwZSA8Y29kZT5TdHJpbmc8L2NvZGU+CisgICAgICovCisgICAgcHVibGljIEV4Y0MxNE5QYXJhbWV0ZXJTcGVjKExpc3QgcHJlZml4TGlzdCkgeworCWlmIChwcmVmaXhMaXN0ID09IG51bGwpIHsKKwkgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJwcmVmaXhMaXN0IGNhbm5vdCBiZSBudWxsIik7CisJfQorCXRoaXMucHJlTGlzdCA9IG5ldyBBcnJheUxpc3QocHJlZml4TGlzdCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwLCBzaXplID0gcHJlTGlzdC5zaXplKCk7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgIGlmICghKHByZUxpc3QuZ2V0KGkpIGluc3RhbmNlb2YgU3RyaW5nKSkgeworCQl0aHJvdyBuZXcgQ2xhc3NDYXN0RXhjZXB0aW9uKCJub3QgYSBTdHJpbmciKTsKKwkgICAgfQorCX0KKwlwcmVMaXN0ID0gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlTGlzdChwcmVMaXN0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBpbmNsdXNpdmUgbmFtZXNwYWNlIHByZWZpeCBsaXN0LiBFYWNoIGVudHJ5IGluIHRoZSBsaXN0CisgICAgICogaXMgYSA8Y29kZT5TdHJpbmc8L2NvZGU+IHRoYXQgcmVwcmVzZW50cyBhIG5hbWVzcGFjZSBwcmVmaXguCisgICAgICoKKyAgICAgKiA8cD5UaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgYW4ge0BsaW5rCisgICAgICogamF2YS51dGlsLkNvbGxlY3Rpb25zI3VubW9kaWZpYWJsZUxpc3QgdW5tb2RpZmlhYmxlIGxpc3R9LgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgaW5jbHVzaXZlIG5hbWVzcGFjZSBwcmVmaXggbGlzdCAobWF5IGJlIGVtcHR5IGJ1dCBuZXZlcgorICAgICAqICAgIDxjb2RlPm51bGw8L2NvZGU+KQorICAgICAqLworICAgIHB1YmxpYyBMaXN0IGdldFByZWZpeExpc3QoKSB7CisJcmV0dXJuIHByZUxpc3Q7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9zcGVjL0hNQUNQYXJhbWV0ZXJTcGVjLmphdmEgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL3NwZWMvSE1BQ1BhcmFtZXRlclNwZWMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWJhYTA3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9zcGVjL0hNQUNQYXJhbWV0ZXJTcGVjLmphdmEKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by5kc2lnLnNwZWM7CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuU2lnbmF0dXJlTWV0aG9kOworCisvKioKKyAqIFBhcmFtZXRlcnMgZm9yIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWxkc2lnLWNvcmUvI3NlYy1NQUNzIj4KKyAqIFhNTCBTaWduYXR1cmUgSE1BQyBBbGdvcml0aG08L2E+LiBUaGUgcGFyYW1ldGVycyBpbmNsdWRlIGFuIG9wdGlvbmFsIG91dHB1dCAKKyAqIGxlbmd0aCB3aGljaCBzcGVjaWZpZXMgdGhlIE1BQyB0cnVuY2F0aW9uIGxlbmd0aCBpbiBiaXRzLiBUaGUgcmVzdWx0aW5nIAorICogSE1BQyB3aWxsIGJlIHRydW5jYXRlZCB0byB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBiaXRzLiBJZiB0aGUgcGFyYW1ldGVyIGlzIAorICogbm90IHNwZWNpZmllZCwgdGhlbiB0aGlzIGltcGxpZXMgdGhhdCBhbGwgdGhlIGJpdHMgb2YgdGhlIGhhc2ggYXJlIHRvIGJlIAorICogb3V0cHV0LiBUaGUgWE1MIFNjaGVtYSBEZWZpbml0aW9uIG9mIHRoZSA8Y29kZT5ITUFDT3V0cHV0TGVuZ3RoPC9jb2RlPiAKKyAqIGVsZW1lbnQgaXMgZGVmaW5lZCBhczoKKyAqIDxwcmU+PGNvZGU+CisgKiAmbHQ7ZWxlbWVudCBuYW1lPSJITUFDT3V0cHV0TGVuZ3RoIiBtaW5PY2N1cnM9IjAiIHR5cGU9ImRzOkhNQUNPdXRwdXRMZW5ndGhUeXBlIi8mZ3Q7CisgKiAmbHQ7c2ltcGxlVHlwZSBuYW1lPSJITUFDT3V0cHV0TGVuZ3RoVHlwZSImZ3Q7CisgKiAgICZsdDtyZXN0cmljdGlvbiBiYXNlPSJpbnRlZ2VyIi8mZ3Q7CisgKiAmbHQ7L3NpbXBsZVR5cGUmZ3Q7CisgKiA8L2NvZGU+PC9wcmU+CisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICogQGF1dGhvciBKU1IgMTA1IEV4cGVydCBHcm91cAorICogQHNlZSBTaWduYXR1cmVNZXRob2QKKyAqIEBzZWUgPGEgaHJlZj0iaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjEwNC50eHQiPlJGQyAyMTA0PC9hPgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgSE1BQ1BhcmFtZXRlclNwZWMgaW1wbGVtZW50cyBTaWduYXR1cmVNZXRob2RQYXJhbWV0ZXJTcGVjIHsKKworICAgIHByaXZhdGUgaW50CW91dHB1dExlbmd0aDsKKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYW4gPGNvZGU+SE1BQ1BhcmFtZXRlclNwZWM8L2NvZGU+IHdpdGggdGhlIHNwZWNpZmllZCB0cnVuY2F0aW9uCisgICAgICogbGVuZ3RoLgorICAgICAqCisgICAgICogQHBhcmFtIG91dHB1dExlbmd0aCB0aGUgdHJ1bmNhdGlvbiBsZW5ndGggaW4gbnVtYmVyIG9mIGJpdHMKKyAgICAgKi8KKyAgICBwdWJsaWMgSE1BQ1BhcmFtZXRlclNwZWMoaW50IG91dHB1dExlbmd0aCkgeworCXRoaXMub3V0cHV0TGVuZ3RoID0gb3V0cHV0TGVuZ3RoOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHRydW5jYXRpb24gbGVuZ3RoLgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgdHJ1bmNhdGlvbiBsZW5ndGggaW4gbnVtYmVyIG9mIGJpdHMKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldE91dHB1dExlbmd0aCgpIHsKKwlyZXR1cm4gb3V0cHV0TGVuZ3RoOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvc3BlYy9TaWduYXR1cmVNZXRob2RQYXJhbWV0ZXJTcGVjLmphdmEgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL3NwZWMvU2lnbmF0dXJlTWV0aG9kUGFyYW1ldGVyU3BlYy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiNGY0ODkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL3NwZWMvU2lnbmF0dXJlTWV0aG9kUGFyYW1ldGVyU3BlYy5qYXZhCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5zcGVjOworCitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLlNpZ25hdHVyZU1ldGhvZDsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYzsKKworLyoqCisgKiBBIHNwZWNpZmljYXRpb24gb2YgYWxnb3JpdGhtIHBhcmFtZXRlcnMgZm9yIGFuIFhNTCB7QGxpbmsgU2lnbmF0dXJlTWV0aG9kfSAKKyAqIGFsZ29yaXRobS4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBpbnRlcmZhY2UgaXMgdG8gZ3JvdXAgKGFuZCBwcm92aWRlIHR5cGUgCisgKiBzYWZldHkgZm9yKSBhbGwgc2lnbmF0dXJlIG1ldGhvZCBwYXJhbWV0ZXIgc3BlY2lmaWNhdGlvbnMuIEFsbCBzaWduYXR1cmUKKyAqIG1ldGhvZCBwYXJhbWV0ZXIgc3BlY2lmaWNhdGlvbnMgbXVzdCBpbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UuCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICogQGF1dGhvciBKU1IgMTA1IEV4cGVydCBHcm91cAorICogQHNlZSBTaWduYXR1cmVNZXRob2QKKyAqLworcHVibGljIGludGVyZmFjZSBTaWduYXR1cmVNZXRob2RQYXJhbWV0ZXJTcGVjIGV4dGVuZHMgQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyB7fQpkaWZmIC0tZ2l0IGEvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9zcGVjL1RyYW5zZm9ybVBhcmFtZXRlclNwZWMuamF2YSBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvc3BlYy9UcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDUxOWIwNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvc3BlYy9UcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjLmphdmEKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by5kc2lnLnNwZWM7CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuVHJhbnNmb3JtOworaW1wb3J0IGphdmEuc2VjdXJpdHkuc3BlYy5BbGdvcml0aG1QYXJhbWV0ZXJTcGVjOworCisvKioKKyAqIEEgc3BlY2lmaWNhdGlvbiBvZiBhbGdvcml0aG0gcGFyYW1ldGVycyBmb3IgYSB7QGxpbmsgVHJhbnNmb3JtfSAKKyAqIGFsZ29yaXRobS4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBpbnRlcmZhY2UgaXMgdG8gZ3JvdXAgKGFuZCBwcm92aWRlIHR5cGUgCisgKiBzYWZldHkgZm9yKSBhbGwgdHJhbnNmb3JtIHBhcmFtZXRlciBzcGVjaWZpY2F0aW9ucy4gQWxsIHRyYW5zZm9ybSBwYXJhbWV0ZXIgCisgKiBzcGVjaWZpY2F0aW9ucyBtdXN0IGltcGxlbWVudCB0aGlzIGludGVyZmFjZS4KKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKiBAYXV0aG9yIEpTUiAxMDUgRXhwZXJ0IEdyb3VwCisgKiBAc2VlIFRyYW5zZm9ybQorICovCitwdWJsaWMgaW50ZXJmYWNlIFRyYW5zZm9ybVBhcmFtZXRlclNwZWMgZXh0ZW5kcyBBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIHt9CmRpZmYgLS1naXQgYS9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL3NwZWMvWFBhdGhGaWx0ZXIyUGFyYW1ldGVyU3BlYy5qYXZhIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9zcGVjL1hQYXRoRmlsdGVyMlBhcmFtZXRlclNwZWMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmNmY2ZhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9zcGVjL1hQYXRoRmlsdGVyMlBhcmFtZXRlclNwZWMuamF2YQpAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IDIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLmRzaWcuc3BlYzsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5UcmFuc2Zvcm07CisKKy8qKgorICogUGFyYW1ldGVycyBmb3IgdGhlIFczQyBSZWNvbW1lbmRhdGlvbgorICogPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sZHNpZy1maWx0ZXIyLyI+CisgKiBYUGF0aCBGaWx0ZXIgMi4wIFRyYW5zZm9ybSBBbGdvcml0aG08L2E+LgorICogVGhlIHBhcmFtZXRlcnMgaW5jbHVkZSBhIGxpc3Qgb2Ygb25lIG9yIG1vcmUge0BsaW5rIFhQYXRoVHlwZX0gb2JqZWN0cy4KKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKiBAYXV0aG9yIEpTUiAxMDUgRXhwZXJ0IEdyb3VwCisgKiBAc2VlIFRyYW5zZm9ybQorICogQHNlZSBYUGF0aEZpbHRlclBhcmFtZXRlclNwZWMKKyAqLworcHVibGljIGZpbmFsIGNsYXNzIFhQYXRoRmlsdGVyMlBhcmFtZXRlclNwZWMgaW1wbGVtZW50cyBUcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjIHsKKworICAgIHByaXZhdGUgZmluYWwgTGlzdCB4UGF0aExpc3Q7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGFuIDxjb2RlPlhQYXRoRmlsdGVyMlBhcmFtZXRlclNwZWM8L2NvZGU+LgorICAgICAqCisgICAgICogQHBhcmFtIHhQYXRoTGlzdCBhIGxpc3Qgb2Ygb25lIG9yIG1vcmUge0BsaW5rIFhQYXRoVHlwZX0gb2JqZWN0cy4gVGhlIAorICAgICAqICAgIGxpc3QgaXMgZGVmZW5zaXZlbHkgY29waWVkIHRvIHByb3RlY3QgYWdhaW5zdCBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbi4KKyAgICAgKiBAdGhyb3dzIENsYXNzQ2FzdEV4Y2VwdGlvbiBpZiA8Y29kZT54UGF0aExpc3Q8L2NvZGU+IGNvbnRhaW5zIGFueQorICAgICAqICAgIGVudHJpZXMgdGhhdCBhcmUgbm90IG9mIHR5cGUge0BsaW5rIFhQYXRoVHlwZX0KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiA8Y29kZT54UGF0aExpc3Q8L2NvZGU+IGlzIGVtcHR5CisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT54UGF0aExpc3Q8L2NvZGU+IGlzIAorICAgICAqICAgIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICovCisgICAgcHVibGljIFhQYXRoRmlsdGVyMlBhcmFtZXRlclNwZWMoTGlzdCB4UGF0aExpc3QpIHsKKwlpZiAoeFBhdGhMaXN0ID09IG51bGwpIHsKKwkgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJ4UGF0aExpc3QgY2Fubm90IGJlIG51bGwiKTsKKwl9CisgICAgICAgIExpc3QgeFBhdGhMaXN0Q29weSA9IG5ldyBBcnJheUxpc3QoeFBhdGhMaXN0KTsKKwlpZiAoeFBhdGhMaXN0Q29weS5pc0VtcHR5KCkpIHsKKwkgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigieFBhdGhMaXN0IGNhbm5vdCBiZSBlbXB0eSIpOworCX0KKyAgICAgICAgaW50IHNpemUgPSB4UGF0aExpc3RDb3B5LnNpemUoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgIGlmICghKHhQYXRoTGlzdENvcHkuZ2V0KGkpIGluc3RhbmNlb2YgWFBhdGhUeXBlKSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBDbGFzc0Nhc3RFeGNlcHRpb24KKyAgICAgICAgICAgICAgICAgICAgKCJ4UGF0aExpc3RbIitpKyJdIGlzIG5vdCBhIHZhbGlkIHR5cGUiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCXRoaXMueFBhdGhMaXN0ID0gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlTGlzdCh4UGF0aExpc3RDb3B5KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBvbmUgb3IgbW9yZSB7QGxpbmsgWFBhdGhUeXBlfSBvYmplY3RzLiAKKyAgICAgKiA8cD4KKyAgICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgYW4ge0BsaW5rIENvbGxlY3Rpb25zI3VubW9kaWZpYWJsZUxpc3QKKyAgICAgKiB1bm1vZGlmaWFibGUgbGlzdH0uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIGEgPGNvZGU+TGlzdDwvY29kZT4gb2YgPGNvZGU+WFBhdGhUeXBlPC9jb2RlPiBvYmplY3RzCisgICAgICogICAgKG5ldmVyIDxjb2RlPm51bGw8L2NvZGU+IG9yIGVtcHR5KQorICAgICAqLworICAgIHB1YmxpYyBMaXN0IGdldFhQYXRoTGlzdCgpIHsKKwlyZXR1cm4geFBhdGhMaXN0OworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvc3BlYy9YUGF0aEZpbHRlclBhcmFtZXRlclNwZWMuamF2YSBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvc3BlYy9YUGF0aEZpbHRlclBhcmFtZXRlclNwZWMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjYxYzk2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9zcGVjL1hQYXRoRmlsdGVyUGFyYW1ldGVyU3BlYy5qYXZhCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IDIwMDUtMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5zcGVjOworCitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLlRyYW5zZm9ybTsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKKy8qKgorICogUGFyYW1ldGVycyBmb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbGRzaWctY29yZS8jc2VjLVhQYXRoIj4KKyAqIFhQYXRoIEZpbHRlcmluZyBUcmFuc2Zvcm0gQWxnb3JpdGhtPC9hPi4KKyAqIFRoZSBwYXJhbWV0ZXJzIGluY2x1ZGUgdGhlIFhQYXRoIGV4cHJlc3Npb24gYW5kIGFuIG9wdGlvbmFsIDxjb2RlPk1hcDwvY29kZT4gCisgKiBvZiBhZGRpdGlvbmFsIG5hbWVzcGFjZSBwcmVmaXggbWFwcGluZ3MuIFRoZSBYTUwgU2NoZW1hIERlZmluaXRpb24gb2YKKyAqIHRoZSBYUGF0aCBGaWx0ZXJpbmcgdHJhbnNmb3JtIHBhcmFtZXRlcnMgaXMgZGVmaW5lZCBhczoKKyAqIDxwcmU+PGNvZGU+CisgKiAmbHQ7ZWxlbWVudCBuYW1lPSJYUGF0aCIgdHlwZT0ic3RyaW5nIi8mZ3Q7CisgKiA8L2NvZGU+PC9wcmU+CisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICogQGF1dGhvciBKU1IgMTA1IEV4cGVydCBHcm91cAorICogQHNlZSBUcmFuc2Zvcm0KKyAqLworcHVibGljIGZpbmFsIGNsYXNzIFhQYXRoRmlsdGVyUGFyYW1ldGVyU3BlYyBpbXBsZW1lbnRzIFRyYW5zZm9ybVBhcmFtZXRlclNwZWMgeworCisgICAgcHJpdmF0ZSBTdHJpbmcgeFBhdGg7CisgICAgcHJpdmF0ZSBNYXAgbnNNYXA7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGFuIDxjb2RlPlhQYXRoRmlsdGVyUGFyYW1ldGVyU3BlYzwvY29kZT4gd2l0aCB0aGUgc3BlY2lmaWVkIAorICAgICAqIFhQYXRoIGV4cHJlc3Npb24uCisgICAgICoKKyAgICAgKiBAcGFyYW0geFBhdGggdGhlIFhQYXRoIGV4cHJlc3Npb24gdG8gYmUgZXZhbHVhdGVkCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT54UGF0aDwvY29kZT4gaXMgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKi8KKyAgICBwdWJsaWMgWFBhdGhGaWx0ZXJQYXJhbWV0ZXJTcGVjKFN0cmluZyB4UGF0aCkgeworCWlmICh4UGF0aCA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigpOworCX0KKwl0aGlzLnhQYXRoID0geFBhdGg7CisJdGhpcy5uc01hcCA9IENvbGxlY3Rpb25zLkVNUFRZX01BUDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGFuIDxjb2RlPlhQYXRoRmlsdGVyUGFyYW1ldGVyU3BlYzwvY29kZT4gd2l0aCB0aGUgc3BlY2lmaWVkIAorICAgICAqIFhQYXRoIGV4cHJlc3Npb24gYW5kIG5hbWVzcGFjZSBtYXAuIFRoZSBtYXAgaXMgY29waWVkIHRvIHByb3RlY3QgYWdhaW5zdAorICAgICAqIHN1YnNlcXVlbnQgbW9kaWZpY2F0aW9uLgorICAgICAqCisgICAgICogQHBhcmFtIHhQYXRoIHRoZSBYUGF0aCBleHByZXNzaW9uIHRvIGJlIGV2YWx1YXRlZAorICAgICAqIEBwYXJhbSBuYW1lc3BhY2VNYXAgdGhlIG1hcCBvZiBuYW1lc3BhY2UgcHJlZml4ZXMuIEVhY2gga2V5IGlzIGEKKyAgICAgKiAgICBuYW1lc3BhY2UgcHJlZml4IDxjb2RlPlN0cmluZzwvY29kZT4gdGhhdCBtYXBzIHRvIGEgY29ycmVzcG9uZGluZworICAgICAqICAgIG5hbWVzcGFjZSBVUkkgPGNvZGU+U3RyaW5nPC9jb2RlPi4KKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPnhQYXRoPC9jb2RlPiBvcgorICAgICAqICAgIDxjb2RlPm5hbWVzcGFjZU1hcDwvY29kZT4gYXJlIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogQHRocm93cyBDbGFzc0Nhc3RFeGNlcHRpb24gaWYgYW55IG9mIHRoZSBtYXAncyBrZXlzIG9yIGVudHJpZXMgYXJlIG5vdAorICAgICAqICAgIG9mIHR5cGUgPGNvZGU+U3RyaW5nPC9jb2RlPgorICAgICAqLworICAgIHB1YmxpYyBYUGF0aEZpbHRlclBhcmFtZXRlclNwZWMoU3RyaW5nIHhQYXRoLCBNYXAgbmFtZXNwYWNlTWFwKSB7CisgICAgICAgIGlmICh4UGF0aCA9PSBudWxsIHx8IG5hbWVzcGFjZU1hcCA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLnhQYXRoID0geFBhdGg7CisJbnNNYXAgPSBuZXcgSGFzaE1hcChuYW1lc3BhY2VNYXApOworCUl0ZXJhdG9yIGVudHJpZXMgPSBuc01hcC5lbnRyeVNldCgpLml0ZXJhdG9yKCk7CisJd2hpbGUgKGVudHJpZXMuaGFzTmV4dCgpKSB7CisJICAgIE1hcC5FbnRyeSBtZSA9IChNYXAuRW50cnkpIGVudHJpZXMubmV4dCgpOworCSAgICBpZiAoIShtZS5nZXRLZXkoKSBpbnN0YW5jZW9mIFN0cmluZykgfHwgCisJCSEobWUuZ2V0VmFsdWUoKSBpbnN0YW5jZW9mIFN0cmluZykpIHsKKwkJdGhyb3cgbmV3IENsYXNzQ2FzdEV4Y2VwdGlvbigibm90IGEgU3RyaW5nIik7CisJICAgIH0KKwl9CisJbnNNYXAgPSBDb2xsZWN0aW9ucy51bm1vZGlmaWFibGVNYXAobnNNYXApOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIFhQYXRoIGV4cHJlc3Npb24gdG8gYmUgZXZhbHVhdGVkLgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgWFBhdGggZXhwcmVzc2lvbiB0byBiZSBldmFsdWF0ZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldFhQYXRoKCkgeworCXJldHVybiB4UGF0aDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgbWFwIG9mIG5hbWVzcGFjZSBwcmVmaXhlcy4gRWFjaCBrZXkgaXMgYSBuYW1lc3BhY2UgcHJlZml4IAorICAgICAqIDxjb2RlPlN0cmluZzwvY29kZT4gdGhhdCBtYXBzIHRvIGEgY29ycmVzcG9uZGluZyBuYW1lc3BhY2UgVVJJIAorICAgICAqIDxjb2RlPlN0cmluZzwvY29kZT4uCisgICAgICogPHA+CisgICAgICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIGFuIHtAbGluayBDb2xsZWN0aW9ucyN1bm1vZGlmaWFibGVNYXAgCisgICAgICogdW5tb2RpZmlhYmxlIG1hcH0uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIGEgPGNvZGU+TWFwPC9jb2RlPiBvZiBuYW1lc3BhY2UgcHJlZml4ZXMgdG8gbmFtZXNwYWNlIFVSSXMgKG1heSAKKyAgICAgKiAgICBiZSBlbXB0eSwgYnV0IG5ldmVyIDxjb2RlPm51bGw8L2NvZGU+KQorICAgICAqLworICAgIHB1YmxpYyBNYXAgZ2V0TmFtZXNwYWNlTWFwKCkgeworCXJldHVybiBuc01hcDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL3NwZWMvWFBhdGhUeXBlLmphdmEgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL3NwZWMvWFBhdGhUeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGU2M2IyOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvc3BlYy9YUGF0aFR5cGUuamF2YQpAQCAtMCwwICsxLDE5MyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by5kc2lnLnNwZWM7CisKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKKy8qKgorICogVGhlIFhNTCBTY2hlbWEgRGVmaW5pdGlvbiBvZiB0aGUgPGNvZGU+WFBhdGg8L2NvZGU+IGVsZW1lbnQgYXMgZGVmaW5lZCBpbiB0aGUKKyAqIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbGRzaWctZmlsdGVyMiI+CisgKiBXM0MgUmVjb21tZW5kYXRpb24gZm9yIFhNTC1TaWduYXR1cmUgWFBhdGggRmlsdGVyIDIuMDwvYT46CisgKiA8cHJlPjxjb2RlPgorICogJmx0O3NjaGVtYSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCisgKiAgICAgICAgIHhtbG5zOnhmPSJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA2L3htbGRzaWctZmlsdGVyMiIKKyAqICAgICAgICAgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA2L3htbGRzaWctZmlsdGVyMiIKKyAqICAgICAgICAgdmVyc2lvbj0iMC4xIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCImZ3Q7CisgKgorICogJmx0O2VsZW1lbnQgbmFtZT0iWFBhdGgiCisgKiAgICAgICAgICB0eXBlPSJ4ZjpYUGF0aFR5cGUiLyZndDsKKyAqCisgKiAmbHQ7Y29tcGxleFR5cGUgbmFtZT0iWFBhdGhUeXBlIiZndDsKKyAqICAgJmx0O3NpbXBsZUNvbnRlbnQmZ3Q7CisgKiAgICAgJmx0O2V4dGVuc2lvbiBiYXNlPSJzdHJpbmciJmd0OworICogICAgICAgJmx0O2F0dHJpYnV0ZSBuYW1lPSJGaWx0ZXIiJmd0OworICogICAgICAgICAmbHQ7c2ltcGxlVHlwZSZndDsKKyAqICAgICAgICAgICAmbHQ7cmVzdHJpY3Rpb24gYmFzZT0ic3RyaW5nIiZndDsKKyAqICAgICAgICAgICAgICZsdDtlbnVtZXJhdGlvbiB2YWx1ZT0iaW50ZXJzZWN0Ii8mZ3Q7CisgKiAgICAgICAgICAgICAmbHQ7ZW51bWVyYXRpb24gdmFsdWU9InN1YnRyYWN0Ii8mZ3Q7CisgKiAgICAgICAgICAgICAmbHQ7ZW51bWVyYXRpb24gdmFsdWU9InVuaW9uIi8mZ3Q7CisgKiAgICAgICAgICAgJmx0Oy9yZXN0cmljdGlvbiZndDsKKyAqICAgICAgICAgJmx0Oy9zaW1wbGVUeXBlJmd0OworICogICAgICAgJmx0Oy9hdHRyaWJ1dGUmZ3Q7CisgKiAgICAgJmx0Oy9leHRlbnNpb24mZ3Q7CisgKiAgICZsdDsvc2ltcGxlQ29udGVudCZndDsKKyAqICZsdDsvY29tcGxleFR5cGUmZ3Q7CisgKiA8L2NvZGU+PC9wcmU+CisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICogQGF1dGhvciBKU1IgMTA1IEV4cGVydCBHcm91cAorICogQHNlZSBYUGF0aEZpbHRlcjJQYXJhbWV0ZXJTcGVjCisgKi8KK3B1YmxpYyBjbGFzcyBYUGF0aFR5cGUgeworCisgICAgLyoqCisgICAgICogUmVwcmVzZW50cyB0aGUgZmlsdGVyIHNldCBvcGVyYXRpb24uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBGaWx0ZXIgeworICAgICAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBvcGVyYXRpb247CisKKyAgICAgICAgcHJpdmF0ZSBGaWx0ZXIoU3RyaW5nIG9wZXJhdGlvbikgeworICAgICAgICAgICAgdGhpcy5vcGVyYXRpb24gPSBvcGVyYXRpb247CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogUmV0dXJucyB0aGUgc3RyaW5nIGZvcm0gb2YgdGhlIG9wZXJhdGlvbi4KKyAgICAgICAgICoKKyAgICAgICAgICogQHJldHVybiB0aGUgc3RyaW5nIGZvcm0gb2YgdGhlIG9wZXJhdGlvbgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb247CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIGludGVyc2VjdCBmaWx0ZXIgb3BlcmF0aW9uLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBGaWx0ZXIgSU5URVJTRUNUID0gbmV3IEZpbHRlcigiaW50ZXJzZWN0Iik7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoZSBzdWJ0cmFjdCBmaWx0ZXIgb3BlcmF0aW9uLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBGaWx0ZXIgU1VCVFJBQ1QgPSBuZXcgRmlsdGVyKCJzdWJ0cmFjdCIpOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgdW5pb24gZmlsdGVyIG9wZXJhdGlvbi4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgRmlsdGVyIFVOSU9OID0gbmV3IEZpbHRlcigidW5pb24iKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBleHByZXNzaW9uOworICAgIHByaXZhdGUgZmluYWwgRmlsdGVyIGZpbHRlcjsKKyAgICBwcml2YXRlIE1hcCBuc01hcDsKKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYW4gPGNvZGU+WFBhdGhUeXBlPC9jb2RlPiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgWFBhdGgKKyAgICAgKiBleHByZXNzaW9uIGFuZCBmaWx0ZXIuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZXhwcmVzc2lvbiB0aGUgWFBhdGggZXhwcmVzc2lvbiB0byBiZSBldmFsdWF0ZWQKKyAgICAgKiBAcGFyYW0gZmlsdGVyIHRoZSBmaWx0ZXIgb3BlcmF0aW9uICh7QGxpbmsgRmlsdGVyI0lOVEVSU0VDVH0sCisgICAgICogICAge0BsaW5rIEZpbHRlciNTVUJUUkFDVH0sIG9yIHtAbGluayBGaWx0ZXIjVU5JT059KQorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+ZXhwcmVzc2lvbjwvY29kZT4gb3IKKyAgICAgKiAgICA8Y29kZT5maWx0ZXI8L2NvZGU+IGlzIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICovCisgICAgcHVibGljIFhQYXRoVHlwZShTdHJpbmcgZXhwcmVzc2lvbiwgRmlsdGVyIGZpbHRlcikgeworICAgICAgICBpZiAoZXhwcmVzc2lvbiA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oImV4cHJlc3Npb24gY2Fubm90IGJlIG51bGwiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZmlsdGVyID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigiZmlsdGVyIGNhbm5vdCBiZSBudWxsIik7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5leHByZXNzaW9uID0gZXhwcmVzc2lvbjsKKyAgICAgICAgdGhpcy5maWx0ZXIgPSBmaWx0ZXI7CisgICAgICAgIHRoaXMubnNNYXAgPSBDb2xsZWN0aW9ucy5FTVBUWV9NQVA7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhbiA8Y29kZT5YUGF0aFR5cGU8L2NvZGU+IGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBYUGF0aAorICAgICAqIGV4cHJlc3Npb24sIGZpbHRlciwgYW5kIG5hbWVzcGFjZSBtYXAuIFRoZSBtYXAgaXMgY29waWVkIHRvIHByb3RlY3QKKyAgICAgKiBhZ2FpbnN0IHN1YnNlcXVlbnQgbW9kaWZpY2F0aW9uLgorICAgICAqCisgICAgICogQHBhcmFtIGV4cHJlc3Npb24gdGhlIFhQYXRoIGV4cHJlc3Npb24gdG8gYmUgZXZhbHVhdGVkCisgICAgICogQHBhcmFtIGZpbHRlciB0aGUgZmlsdGVyIG9wZXJhdGlvbiAoe0BsaW5rIEZpbHRlciNJTlRFUlNFQ1R9LAorICAgICAqICAgIHtAbGluayBGaWx0ZXIjU1VCVFJBQ1R9LCBvciB7QGxpbmsgRmlsdGVyI1VOSU9OfSkKKyAgICAgKiBAcGFyYW0gbmFtZXNwYWNlTWFwIHRoZSBtYXAgb2YgbmFtZXNwYWNlIHByZWZpeGVzLiBFYWNoIGtleSBpcyBhCisgICAgICogICAgbmFtZXNwYWNlIHByZWZpeCA8Y29kZT5TdHJpbmc8L2NvZGU+IHRoYXQgbWFwcyB0byBhIGNvcnJlc3BvbmRpbmcKKyAgICAgKiAgICBuYW1lc3BhY2UgVVJJIDxjb2RlPlN0cmluZzwvY29kZT4uCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5leHByZXNzaW9uPC9jb2RlPiwKKyAgICAgKiAgICA8Y29kZT5maWx0ZXI8L2NvZGU+IG9yIDxjb2RlPm5hbWVzcGFjZU1hcDwvY29kZT4gYXJlCisgICAgICogICAgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiBAdGhyb3dzIENsYXNzQ2FzdEV4Y2VwdGlvbiBpZiBhbnkgb2YgdGhlIG1hcCdzIGtleXMgb3IgZW50cmllcyBhcmUKKyAgICAgKiAgICBub3Qgb2YgdHlwZSA8Y29kZT5TdHJpbmc8L2NvZGU+CisgICAgICovCisgICAgcHVibGljIFhQYXRoVHlwZShTdHJpbmcgZXhwcmVzc2lvbiwgRmlsdGVyIGZpbHRlciwgTWFwIG5hbWVzcGFjZU1hcCkgeworICAgICAgICB0aGlzKGV4cHJlc3Npb24sIGZpbHRlcik7CisgICAgICAgIGlmIChuYW1lc3BhY2VNYXAgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJuYW1lc3BhY2VNYXAgY2Fubm90IGJlIG51bGwiKTsKKyAgICAgICAgfQorICAgICAgICBuc01hcCA9IG5ldyBIYXNoTWFwKG5hbWVzcGFjZU1hcCk7CisgICAgICAgIEl0ZXJhdG9yIGVudHJpZXMgPSBuc01hcC5lbnRyeVNldCgpLml0ZXJhdG9yKCk7CisgICAgICAgIHdoaWxlIChlbnRyaWVzLmhhc05leHQoKSkgeworICAgICAgICAgICAgTWFwLkVudHJ5IG1lID0gKE1hcC5FbnRyeSkgZW50cmllcy5uZXh0KCk7CisgICAgICAgICAgICBpZiAoIShtZS5nZXRLZXkoKSBpbnN0YW5jZW9mIFN0cmluZykgfHwKKyAgICAgICAgICAgICAgICAhKG1lLmdldFZhbHVlKCkgaW5zdGFuY2VvZiBTdHJpbmcpKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IENsYXNzQ2FzdEV4Y2VwdGlvbigibm90IGEgU3RyaW5nIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbnNNYXAgPSBDb2xsZWN0aW9ucy51bm1vZGlmaWFibGVNYXAobnNNYXApOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIFhQYXRoIGV4cHJlc3Npb24gdG8gYmUgZXZhbHVhdGVkLgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgWFBhdGggZXhwcmVzc2lvbiB0byBiZSBldmFsdWF0ZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldEV4cHJlc3Npb24oKSB7CisgICAgICAgIHJldHVybiBleHByZXNzaW9uOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGZpbHRlciBvcGVyYXRpb24uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBmaWx0ZXIgb3BlcmF0aW9uCisgICAgICovCisgICAgcHVibGljIEZpbHRlciBnZXRGaWx0ZXIoKSB7CisgICAgICAgIHJldHVybiBmaWx0ZXI7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIG1hcCBvZiBuYW1lc3BhY2UgcHJlZml4ZXMuIEVhY2gga2V5IGlzIGEgbmFtZXNwYWNlIHByZWZpeAorICAgICAqIDxjb2RlPlN0cmluZzwvY29kZT4gdGhhdCBtYXBzIHRvIGEgY29ycmVzcG9uZGluZyBuYW1lc3BhY2UgVVJJCisgICAgICogPGNvZGU+U3RyaW5nPC9jb2RlPi4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgYW4ge0BsaW5rIENvbGxlY3Rpb25zI3VubW9kaWZpYWJsZU1hcAorICAgICAqIHVubW9kaWZpYWJsZSBtYXB9LgorICAgICAqCisgICAgICogQHJldHVybiBhIDxjb2RlPk1hcDwvY29kZT4gb2YgbmFtZXNwYWNlIHByZWZpeGVzIHRvIG5hbWVzcGFjZSBVUklzCisgICAgICogICAgKG1heSBiZSBlbXB0eSwgYnV0IG5ldmVyIDxjb2RlPm51bGw8L2NvZGU+KQorICAgICAqLworICAgIHB1YmxpYyBNYXAgZ2V0TmFtZXNwYWNlTWFwKCkgeworICAgICAgICByZXR1cm4gbnNNYXA7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9zcGVjL1hTTFRUcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjLmphdmEgYi9zcmMvamF2YXgveG1sL2NyeXB0by9kc2lnL3NwZWMvWFNMVFRyYW5zZm9ybVBhcmFtZXRlclNwZWMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjc1OWZhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9zcGVjL1hTTFRUcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjLmphdmEKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by5kc2lnLnNwZWM7CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuVHJhbnNmb3JtOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uWE1MU3RydWN0dXJlOworCisvKioKKyAqIFBhcmFtZXRlcnMgZm9yIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14c2x0LTE5OTkxMTE2Ij4KKyAqIFhTTFQgVHJhbnNmb3JtIEFsZ29yaXRobTwvYT4uCisgKiBUaGUgcGFyYW1ldGVycyBpbmNsdWRlIGEgbmFtZXNwYWNlLXF1YWxpZmllZCBzdHlsZXNoZWV0IGVsZW1lbnQuCisgKgorICogPHA+QW4gPGNvZGU+WFNMVFRyYW5zZm9ybVBhcmFtZXRlclNwZWM8L2NvZGU+IGlzIGluc3RhbnRpYXRlZCB3aXRoIGEKKyAqIG1lY2hhbmlzbS1kZXBlbmRlbnQgKGV4OiBET00pIHN0eWxlc2hlZXQgZWxlbWVudC4gRm9yIGV4YW1wbGU6CisgKiA8cHJlPgorICogICBET01TdHJ1Y3R1cmUgc3R5bGVzaGVldCA9IG5ldyBET01TdHJ1Y3R1cmUoZWxlbWVudCkKKyAqICAgWFNMVFRyYW5zZm9ybVBhcmFtZXRlclNwZWMgc3BlYyA9IG5ldyBYU0xUcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjKHN0eWxlc2hlZXQpOworICogPC9wcmU+CisgKiB3aGVyZSA8Y29kZT5lbGVtZW50PC9jb2RlPiBpcyBhbiB7QGxpbmsgb3JnLnczYy5kb20uRWxlbWVudH0gY29udGFpbmluZworICogdGhlIG5hbWVzcGFjZS1xdWFsaWZpZWQgc3R5bGVzaGVldCBlbGVtZW50LgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgSlNSIDEwNSBFeHBlcnQgR3JvdXAKKyAqIEBzZWUgVHJhbnNmb3JtCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBYU0xUVHJhbnNmb3JtUGFyYW1ldGVyU3BlYyBpbXBsZW1lbnRzIFRyYW5zZm9ybVBhcmFtZXRlclNwZWN7CisgICAgcHJpdmF0ZSBYTUxTdHJ1Y3R1cmUgc3R5bGVzaGVldDsKKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYW4gPGNvZGU+WFNMVFRyYW5zZm9ybVBhcmFtZXRlclNwZWM8L2NvZGU+IHdpdGggdGhlIHNwZWNpZmllZCAKKyAgICAgKiBzdHlsZXNoZWV0LgorICAgICAqCisgICAgICogQHBhcmFtIHN0eWxlc2hlZXQgdGhlIFhTTFQgc3R5bGVzaGVldCB0byBiZSB1c2VkCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5zdHlsZXNoZWV0PC9jb2RlPiBpcyAKKyAgICAgKiAgICA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqLworICAgIHB1YmxpYyBYU0xUVHJhbnNmb3JtUGFyYW1ldGVyU3BlYyhYTUxTdHJ1Y3R1cmUgc3R5bGVzaGVldCkgeworCWlmIChzdHlsZXNoZWV0ID09IG51bGwpIHsKKwkgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCk7CisJfQorCXRoaXMuc3R5bGVzaGVldCA9IHN0eWxlc2hlZXQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgc3R5bGVzaGVldC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIHN0eWxlc2hlZXQKKyAgICAgKi8KKyAgICBwdWJsaWMgWE1MU3RydWN0dXJlIGdldFN0eWxlc2hlZXQoKSB7CisJcmV0dXJuIHN0eWxlc2hlZXQ7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2phdmF4L3htbC9jcnlwdG8vZHNpZy9zcGVjL3BhY2thZ2UuaHRtbCBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvc3BlYy9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjJlOWVkNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9qYXZheC94bWwvY3J5cHRvL2RzaWcvc3BlYy9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPGh0bWw+Cis8aGVhZD4KKzwhLS0KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCistLT4KKzwhLS0KKyBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCistLT4KKzwvaGVhZD4KKzxib2R5PgorUGFyYW1ldGVyIGNsYXNzZXMgZm9yIFhNTCBkaWdpdGFsIHNpZ25hdHVyZXMuIFRoaXMgcGFja2FnZQorY29udGFpbnMgaW50ZXJmYWNlcyBhbmQgY2xhc3NlcyByZXByZXNlbnRpbmcgaW5wdXQgcGFyYW1ldGVycyBmb3IgdGhlCitkaWdlc3QsIHNpZ25hdHVyZSwgdHJhbnNmb3JtLCBvciBjYW5vbmljYWxpemF0aW9uIGFsZ29yaXRobXMgdXNlZCBpbgordGhlIHByb2Nlc3Npbmcgb2YgWE1MIHNpZ25hdHVyZXMuIAorCis8aDI+UGFja2FnZSBTcGVjaWZpY2F0aW9uPC9oMj4KKworPHVsPgorPGxpPgorPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sZHNpZy1jb3JlLyI+CitYTUwtU2lnbmF0dXJlIFN5bnRheCBhbmQgUHJvY2Vzc2luZzogVzNDIFJlY29tbWVuZGF0aW9uPC9hPgorPGxpPgorPGEgaHJlZj0iaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMzI3NS50eHQiPgorUkZDIDMyNzU6IFhNTC1TaWduYXR1cmUgU3ludGF4IGFuZCBQcm9jZXNzaW5nPC9hPgorPGxpPgorPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sLWV4Yy1jMTRuLyI+CitFeGNsdXNpdmUgWE1MIENhbm9uaWNhbGl6YXRpb24gYWxnb3JpdGhtOiBXM0MgUmVjb21tZW5kYXRpb248L2E+Cis8bGk+Cis8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWxkc2lnLWZpbHRlcjIvIj4KK1hQYXRoIEZpbHRlciAyLjAgVHJhbnNmb3JtIEFsZ29yaXRobTogVzNDIFJlY29tbWVuZGF0aW9uPC9hPgorPC91bD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvc3JjL2phdmF4L3htbC9jcnlwdG8vcGFja2FnZS5odG1sIGIvc3JjL2phdmF4L3htbC9jcnlwdG8vcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhMTRmODUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvamF2YXgveG1sL2NyeXB0by9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSw0MiBAQAorPGh0bWw+Cis8aGVhZD4KKzwhLS0KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCistLT4KKzwhLS0KKyBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCistLT4KKzwvaGVhZD4KKzxib2R5PgorQ29tbW9uIGNsYXNzZXMgZm9yIFhNTCBjcnlwdG9ncmFwaHkuIFRoaXMgcGFja2FnZSBpbmNsdWRlcyBjb21tb24gY2xhc3NlcyB0aGF0IAorYXJlIHVzZWQgdG8gcGVyZm9ybSBYTUwgY3J5cHRvZ3JhcGhpYyBvcGVyYXRpb25zLCBzdWNoIGFzIGdlbmVyYXRpbmcKK2FuIFhNTCBzaWduYXR1cmUgb3IgZW5jcnlwdGluZyBYTUwgZGF0YS4gCisKKzxoMj5QYWNrYWdlIFNwZWNpZmljYXRpb248L2gyPgorCis8dWw+Cis8bGk+Cis8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWxkc2lnLWNvcmUvIj4KK1hNTC1TaWduYXR1cmUgU3ludGF4IGFuZCBQcm9jZXNzaW5nOiBXM0MgUmVjb21tZW5kYXRpb248L2E+Cis8bGk+Cis8YSBocmVmPSJodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMzMjc1LnR4dCI+CitSRkMgMzI3NTogWE1MLVNpZ25hdHVyZSBTeW50YXggYW5kIFByb2Nlc3Npbmc8L2E+Cis8L3VsPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvSW5pdC5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L0luaXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWNhNzBiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L0luaXQuamF2YQpAQCAtMCwwICsxLDQwOCBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHk7CisKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworaW1wb3J0IGphdmEuc2VjdXJpdHkuQWNjZXNzQ29udHJvbGxlcjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlByaXZpbGVnZWRBY3Rpb247CitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyOworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3Rvcnk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5hbGdvcml0aG1zLkpDRU1hcHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5hbGdvcml0aG1zLlNpZ25hdHVyZUFsZ29yaXRobTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkNhbm9uaWNhbGl6ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5LZXlJbmZvOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMua2V5cmVzb2x2ZXIuS2V5UmVzb2x2ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm07CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuSTE4bjsKKy8vaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlBSTkc7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMucmVzb2x2ZXIuUmVzb3VyY2VSZXNvbHZlcjsKK2ltcG9ydCBvcmcudzNjLmRvbS5BdHRyOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKKworCisvKioKKyAqIFRoaXMgY2xhc3MgZG9lcyB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgbGlicmFyeS4gVGhpcyBpbmNsdWRlcyBjcmVhdGluZworICogdGhlIG1hcHBpbmcgb2YgQ2Fub25pY2FsaXphdGlvbiBhbmQgVHJhbnNmb3JtIGFsZ29yaXRobXMuIEluaXRpYWxpemF0aW9uIGlzCisgKiBkb25lIGJ5IGNhbGxpbmcge0BsaW5rIEluaXQjaW5pdH0gd2hpY2ggc2hvdWxkIGJlIGRvbmUgaW4gYW55IHN0YXRpYyBibG9jaworICogb2YgdGhlIGZpbGVzIG9mIHRoaXMgbGlicmFyeS4gV2UgZW5zdXJlIHRoYXQgdGhpcyBjYWxsIGlzIG9ubHkgZXhlY3V0ZWQgb25jZS4KKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKi8KK3B1YmxpYyBjbGFzcyBJbml0IHsKKworICAvKioge0BsaW5rIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nfSBsb2dnaW5nIGZhY2lsaXR5ICovCisgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKEluaXQuY2xhc3MuZ2V0TmFtZSgpKTsKKworICAgLyoqIEZpZWxkIF9pbml0aWFsaXplZCAqLworICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBfYWxyZWFkeUluaXRpYWxpemVkID0gZmFsc2U7CisgICAKKyAgIC8qKiBUaGUgbmFtZXNwYWNlIGZvciBDT05GIGZpbGUgKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDT05GX05TPSJodHRwOi8vd3d3LnhtbHNlY3VyaXR5Lm9yZy9OUy8jY29uZmlndXJhdGlvbiI7CisKKyAgIC8qKgorICAgICogTWV0aG9kIGlzSW5pdGlhbGl6ZWQKKyAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgbGlicmFpcnkgaXMgYWxyZWFkeSBpbml0aWFsaXplZC4gICAgIAorICAgICoKKyAgICAqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBib29sZWFuIGlzSW5pdGlhbGl6ZWQoKSB7CisgICAgICByZXR1cm4gSW5pdC5fYWxyZWFkeUluaXRpYWxpemVkOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBpbml0CisgICAgKgorICAgICovCisgICBwdWJsaWMgc3luY2hyb25pemVkIHN0YXRpYyB2b2lkIGluaXQoKSB7CisKKyAgICAgIGlmIChfYWxyZWFkeUluaXRpYWxpemVkKSB7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAgICAgIGxvbmcgWFhfY29uZmlndXJlX2kxOG5fZW5kPTA7CisgICAgICBsb25nIFhYX2NvbmZpZ3VyZV9yZWdfYzE0bl9zdGFydD0wOworICAgICAgbG9uZyBYWF9jb25maWd1cmVfcmVnX2MxNG5fZW5kPTA7CisgICAgICBsb25nIFhYX2NvbmZpZ3VyZV9yZWdfamNlbWFwcGVyX2VuZD0wOworICAgICAgbG9uZyBYWF9jb25maWd1cmVfcmVnX2tleUluZm9fc3RhcnQ9MDsKKyAgICAgIGxvbmcgWFhfY29uZmlndXJlX3JlZ19rZXlSZXNvbHZlcl9lbmQ9MDsKKyAgICAgIGxvbmcgWFhfY29uZmlndXJlX3JlZ19wcmVmaXhlc19zdGFydD0wOworICAgICAgbG9uZyBYWF9jb25maWd1cmVfcmVnX3Jlc291cmNlcmVzb2x2ZXJfc3RhcnQ9MDsKKyAgICAgIGxvbmcgWFhfY29uZmlndXJlX3JlZ19zaWdhbGdvc19lbmQ9MDsKKyAgICAgIGxvbmcgWFhfY29uZmlndXJlX3JlZ190cmFuc2Zvcm1zX2VuZD0wOworICAgICAgbG9uZyBYWF9jb25maWd1cmVfcmVnX2tleUluZm9fZW5kPTA7CisgICAgICBsb25nIFhYX2NvbmZpZ3VyZV9yZWdfa2V5UmVzb2x2ZXJfc3RhcnQ9MDsKKyAgICAgICAgIF9hbHJlYWR5SW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgICAgICB0cnkgeworICAgICAgICAgICAgbG9uZyBYWF9pbml0X3N0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICAgICBsb25nIFhYX3Bybmdfc3RhcnQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKworICAgICAgICAgICAgLy9QUk5HLmluaXQobmV3IGphdmEuc2VjdXJpdHkuU2VjdXJlUmFuZG9tKCkpOworCisgICAgICAgICAgICBsb25nIFhYX3BybmdfZW5kID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisKKyAgICAgICAgICAgIC8qIHJlYWQgbGlicmFyeSBjb25maWd1cmF0aW9uIGZpbGUgKi8KKyAgICAgICAgICAgIGxvbmcgWFhfcGFyc2luZ19zdGFydCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisKKyAgICAgICAgICAgIGRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKyAgICAgICAgICAgIGRiZi5zZXRWYWxpZGF0aW5nKGZhbHNlKTsKKworICAgICAgICAgICAgRG9jdW1lbnRCdWlsZGVyIGRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOworICAgICAgICAgICAgLy8gSW5wdXRTdHJlYW0gaXMgPSBDbGFzcy5mb3JOYW1lKCJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0IikuZ2V0UmVzb3VyY2VBc1N0cmVhbSgicmVzb3VyY2UvY29uZmlnLnhtbCIpOworICAgICAgICAgICAgSW5wdXRTdHJlYW0gaXMgPSAoSW5wdXRTdHJlYW0pIEFjY2Vzc0NvbnRyb2xsZXIuZG9Qcml2aWxlZ2VkKAorCQluZXcgUHJpdmlsZWdlZEFjdGlvbigpIHsKKwkJICAgIHB1YmxpYyBPYmplY3QgcnVuKCkgeworICAgICAgICAgICAgCQlTdHJpbmcgY2ZpbGUgPSBTeXN0ZW0uZ2V0UHJvcGVydHkKKwkJCSAgICAoIm9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnJlc291cmNlLmNvbmZpZyIpOworICAgICAgICAgICAgICAgCQlyZXR1cm4gZ2V0Q2xhc3MoKS5nZXRSZXNvdXJjZUFzU3RyZWFtCisJCQkgICAgKGNmaWxlICE9IG51bGwgPyBjZmlsZSA6ICJyZXNvdXJjZS9jb25maWcueG1sIik7CisJCSAgICB9CisJCX0pOworCisgICAgICAgICAgICBEb2N1bWVudCBkb2MgPSBkYi5wYXJzZShpcyk7CisgICAgICAgICAgICBsb25nIFhYX3BhcnNpbmdfZW5kID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGxvbmcgWFhfY29uZmlndXJlX2kxOG5fc3RhcnQgPSAwOyAgICAgICAgICAgIAorICAgICAgICAgICAgCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgWFhfY29uZmlndXJlX3JlZ19rZXlJbmZvX3N0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgS2V5SW5mby5pbml0KCk7CisgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKworICAgICAgICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIFhYX2NvbmZpZ3VyZV9yZWdfa2V5SW5mb19lbmQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorCQkJbG9uZyBYWF9jb25maWd1cmVfcmVnX3RyYW5zZm9ybXNfc3RhcnQ9MDsKKwkJCWxvbmcgWFhfY29uZmlndXJlX3JlZ19qY2VtYXBwZXJfc3RhcnQ9MDsKKwkJCWxvbmcgWFhfY29uZmlndXJlX3JlZ19zaWdhbGdvc19zdGFydD0wOworCQkJbG9uZyBYWF9jb25maWd1cmVfcmVnX3Jlc291cmNlcmVzb2x2ZXJfZW5kPTA7CisJCQlsb25nIFhYX2NvbmZpZ3VyZV9yZWdfcHJlZml4ZXNfZW5kPTA7CisgICAgICAgICAgICBOb2RlIGNvbmZpZz1kb2MuZ2V0Rmlyc3RDaGlsZCgpOworICAgICAgICAgICAgZm9yICg7Y29uZmlnIT1udWxsO2NvbmZpZz1jb25maWcuZ2V0TmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgCWlmICgiQ29uZmlndXJhdGlvbiIuZXF1YWxzKGNvbmZpZy5nZXRMb2NhbE5hbWUoKSkpIHsKKyAgICAgICAgICAgIAkJYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCQkJZm9yIChOb2RlIGVsPWNvbmZpZy5nZXRGaXJzdENoaWxkKCk7ZWwhPW51bGw7ZWw9ZWwuZ2V0TmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgICAgIGlmIChlbCA9PSBudWxsIHx8IE5vZGUuRUxFTUVOVF9OT0RFICE9IGVsLmdldE5vZGVUeXBlKCkpIHsKKyAgICAgICAgICAgICAgICAJY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFN0cmluZyB0YWc9ZWwuZ2V0TG9jYWxOYW1lKCk7CisgICAgICAgICAgICBpZiAodGFnLmVxdWFscygiUmVzb3VyY2VCdW5kbGVzIikpeworICAgICAgICAgICAgICAgIFhYX2NvbmZpZ3VyZV9pMThuX3N0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICAgICAJRWxlbWVudCByZXNvdXJjZT0oRWxlbWVudCllbDsKKyAgICAgICAgICAgICAgIC8qIGNvbmZpZ3VyZSBpbnRlcm5hdGlvbmFsaXphdGlvbiAqLworICAgICAgICAgICAgICAgQXR0ciBsYW5nQXR0ciA9IHJlc291cmNlLmdldEF0dHJpYnV0ZU5vZGUoImRlZmF1bHRMYW5ndWFnZUNvZGUiKTsKKyAgICAgICAgICAgICAgIEF0dHIgY291bnRyeUF0dHIgPSByZXNvdXJjZS5nZXRBdHRyaWJ1dGVOb2RlKCJkZWZhdWx0Q291bnRyeUNvZGUiKTsKKyAgICAgICAgICAgICAgIFN0cmluZyBsYW5ndWFnZUNvZGUgPSAobGFuZ0F0dHIgPT0gbnVsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG51bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhbmdBdHRyLmdldE5vZGVWYWx1ZSgpOworICAgICAgICAgICAgICAgU3RyaW5nIGNvdW50cnlDb2RlID0gKGNvdW50cnlBdHRyID09IG51bGwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG51bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY291bnRyeUF0dHIuZ2V0Tm9kZVZhbHVlKCk7CisKKyAgICAgICAgICAgICAgIEkxOG4uaW5pdChsYW5ndWFnZUNvZGUsIGNvdW50cnlDb2RlKTsKKyAgICAgICAgICAgICAgIFhYX2NvbmZpZ3VyZV9pMThuX2VuZCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh0YWcuZXF1YWxzKCJDYW5vbmljYWxpemF0aW9uTWV0aG9kcyIpKXsKKyAgICAgICAgICAgICAgICBYWF9jb25maWd1cmVfcmVnX2MxNG5fc3RhcnQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgICAgICAgIENhbm9uaWNhbGl6ZXIuaW5pdCgpOworICAgICAgICAgICAgICAgRWxlbWVudFtdIGxpc3Q9WE1MVXRpbHMuc2VsZWN0Tm9kZXMoZWwuZ2V0Rmlyc3RDaGlsZCgpLENPTkZfTlMsIkNhbm9uaWNhbGl6YXRpb25NZXRob2QiKTsgICAgICAgICAgICAgICAKKworICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICBTdHJpbmcgVVJJID0gbGlzdFtpXS5nZXRBdHRyaWJ1dGVOUyhudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVUkkiKTsKKyAgICAgICAgICAgICAgICAgIFN0cmluZyBKQVZBQ0xBU1MgPQorICAgICAgICAgICAgICAgICAgICAgbGlzdFtpXS5nZXRBdHRyaWJ1dGVOUyhudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgIkpBVkFDTEFTUyIpOworICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICBDbGFzcy5mb3JOYW1lKEpBVkFDTEFTUyk7CisvKiAgICAgICAgICAgICAgICAgICAgIE1ldGhvZCBtZXRob2RzW10gPSBjLmdldE1ldGhvZHMoKTsKKworICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtZXRob2RzLmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBNZXRob2QgY3Vyck1ldGggPSBtZXRob2RzW2pdOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3Vyck1ldGguZ2V0RGVjbGFyaW5nQ2xhc3MoKS5nZXROYW1lKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmVxdWFscyhKQVZBQ0xBU1MpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2cuZGVidWcoY3Vyck1ldGguZ2V0RGVjbGFyaW5nQ2xhc3MoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICB9Ki8KKyAgICAgICAgICAgICAgICAgICAgICBpZiAobG9nLmlzRGVidWdFbmFibGVkKCkpCisgICAgICAgICAgICAgICAgICAgICAgCWxvZy5kZWJ1ZygiQ2Fub25pY2FsaXplci5yZWdpc3RlcigiICsgVVJJICsgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgSkFWQUNMQVNTICsgIikiKTsKKyAgICAgICAgICAgICAgICAgICAgIENhbm9uaWNhbGl6ZXIucmVnaXN0ZXIoVVJJLCBKQVZBQ0xBU1MpOworICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgICBPYmplY3QgZXhBcmdzW10gPSB7IFVSSSwgSkFWQUNMQVNTIH07CisKKyAgICAgICAgICAgICAgICAgICAgIGxvZy5mYXRhbChJMThuLnRyYW5zbGF0ZSgiYWxnb3JpdGhtLmNsYXNzRG9lc05vdEV4aXN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleEFyZ3MpKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIFhYX2NvbmZpZ3VyZV9yZWdfYzE0bl9lbmQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHRhZy5lcXVhbHMoIlRyYW5zZm9ybUFsZ29yaXRobXMiKSl7CisgICAgICAgICAgICAgICBYWF9jb25maWd1cmVfcmVnX3RyYW5zZm9ybXNfc3RhcnQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgICAgICAgIFRyYW5zZm9ybS5pbml0KCk7CisKKyAgICAgICAgICAgICAgIEVsZW1lbnRbXSB0cmFuRWxlbSA9IFhNTFV0aWxzLnNlbGVjdE5vZGVzKGVsLmdldEZpcnN0Q2hpbGQoKSxDT05GX05TLCJUcmFuc2Zvcm1BbGdvcml0aG0iKTsKKworICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0cmFuRWxlbS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgU3RyaW5nIFVSSSA9IHRyYW5FbGVtW2ldLmdldEF0dHJpYnV0ZU5TKG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVSSSIpOworICAgICAgICAgICAgICAgICAgU3RyaW5nIEpBVkFDTEFTUyA9CisgICAgICAgICAgICAgICAgICAgICB0cmFuRWxlbVtpXS5nZXRBdHRyaWJ1dGVOUyhudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgIkpBVkFDTEFTUyIpOworICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgIENsYXNzLmZvck5hbWUoSkFWQUNMQVNTKTsKKyAgICAgICAgICAgICAgICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgIAlsb2cuZGVidWcoIlRyYW5zZm9ybS5yZWdpc3RlcigiICsgVVJJICsgIiwgIiArIEpBVkFDTEFTUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIikiKTsKKyAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybS5yZWdpc3RlcihVUkksIEpBVkFDTEFTUyk7CisgICAgICAgICAgICAgICAgICB9IGNhdGNoIChDbGFzc05vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgIE9iamVjdCBleEFyZ3NbXSA9IHsgVVJJLCBKQVZBQ0xBU1MgfTsKKworICAgICAgICAgICAgICAgICAgICAgbG9nLmZhdGFsKEkxOG4udHJhbnNsYXRlKCJhbGdvcml0aG0uY2xhc3NEb2VzTm90RXhpc3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4QXJncykpOworCisgICAgICAgICAgICAgICAgICB9IGNhdGNoIChOb0NsYXNzRGVmRm91bmRFcnJvciBleCkgeworCQkJCQkgIGxvZy53YXJuKCJOb3QgYWJsZSB0byBmb3VuZCBkZXBlbmRlY2llcyBmb3IgYWxnb3JpdGhtLCBJJ20ga2VlcCB3b3JraW5nLiIpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgWFhfY29uZmlndXJlX3JlZ190cmFuc2Zvcm1zX2VuZCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICAgICAgICAgIGlmICgiSkNFQWxnb3JpdGhtTWFwcGluZ3MiLmVxdWFscyh0YWcpKXsKKyAgICAgICAgICAgICAgIFhYX2NvbmZpZ3VyZV9yZWdfamNlbWFwcGVyX3N0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICAgICAgICBKQ0VNYXBwZXIuaW5pdCgoRWxlbWVudCllbCk7CisgICAgICAgICAgICAgICBYWF9jb25maWd1cmVfcmVnX2pjZW1hcHBlcl9lbmQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICAgICAgICAgIGlmICh0YWcuZXF1YWxzKCJTaWduYXR1cmVBbGdvcml0aG1zIikpeworICAgICAgICAgICAgICAgWFhfY29uZmlndXJlX3JlZ19zaWdhbGdvc19zdGFydCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgICAgICAgU2lnbmF0dXJlQWxnb3JpdGhtLnByb3ZpZGVySW5pdCgpOworCisgICAgICAgICAgICAgICBFbGVtZW50W10gc2lnRWxlbXMgPSBYTUxVdGlscy5zZWxlY3ROb2RlcyhlbC5nZXRGaXJzdENoaWxkKCksIENPTkZfTlMsICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAiU2lnbmF0dXJlQWxnb3JpdGhtIik7CisKKyAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2lnRWxlbXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgIFN0cmluZyBVUkkgPSBzaWdFbGVtc1tpXS5nZXRBdHRyaWJ1dGVOUyhudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVUkkiKTsKKyAgICAgICAgICAgICAgICAgIFN0cmluZyBKQVZBQ0xBU1MgPQorICAgICAgICAgICAgICAgICAgICBzaWdFbGVtc1tpXS5nZXRBdHRyaWJ1dGVOUyhudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgIkpBVkFDTEFTUyIpOworCisgICAgICAgICAgICAgICAgICAvKiogJHRvZG8kIGhhbmRsZSByZWdpc3RlcmluZyAqLworCisgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgIENsYXNzLmZvck5hbWUoSkFWQUNMQVNTKTsKKyAvLyAgICAgICAgICAgICAgICAgICAgTWV0aG9kIG1ldGhvZHNbXSA9IGMuZ2V0TWV0aG9kcygpOworCisvLyAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbWV0aG9kcy5sZW5ndGg7IGorKykgeworLy8gICAgICAgICAgICAgICAgICAgICAgICBNZXRob2QgY3Vyck1ldGggPSBtZXRob2RzW2pdOworLy8KKy8vICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJNZXRoLmdldERlY2xhcmluZ0NsYXNzKCkuZ2V0TmFtZSgpCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmVxdWFscyhKQVZBQ0xBU1MpKSB7CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZyhjdXJyTWV0aC5nZXREZWNsYXJpbmdDbGFzcygpKTsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgfQorLy8gICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKQorICAgICAgICAgICAgICAgICAgICAgIAlsb2cuZGVidWcoIlNpZ25hdHVyZUFsZ29yaXRobS5yZWdpc3RlcigiICsgVVJJICsgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgSkFWQUNMQVNTICsgIikiKTsKKyAgICAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZUFsZ29yaXRobS5yZWdpc3RlcihVUkksIEpBVkFDTEFTUyk7CisgICAgICAgICAgICAgICAgICB9IGNhdGNoIChDbGFzc05vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgIE9iamVjdCBleEFyZ3NbXSA9IHsgVVJJLCBKQVZBQ0xBU1MgfTsKKworICAgICAgICAgICAgICAgICAgICAgbG9nLmZhdGFsKEkxOG4udHJhbnNsYXRlKCJhbGdvcml0aG0uY2xhc3NEb2VzTm90RXhpc3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4QXJncykpOworCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICBYWF9jb25maWd1cmVfcmVnX3NpZ2FsZ29zX2VuZCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHRhZy5lcXVhbHMoIlJlc291cmNlUmVzb2x2ZXJzIikpeworICAgICAgICAgICAgICAgWFhfY29uZmlndXJlX3JlZ19yZXNvdXJjZXJlc29sdmVyX3N0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICAgICAgICBSZXNvdXJjZVJlc29sdmVyLmluaXQoKTsKKworICAgICAgICAgICAgICAgRWxlbWVudFtdcmVzb2x2ZXJFbGVtID0gWE1MVXRpbHMuc2VsZWN0Tm9kZXMoZWwuZ2V0Rmlyc3RDaGlsZCgpLENPTkZfTlMsCisgICAgICAgICAgICAgICAgICAiUmVzb2x2ZXIiKTsKKworICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXNvbHZlckVsZW0ubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgIFN0cmluZyBKQVZBQ0xBU1MgPQorICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVyRWxlbVtpXS5nZXRBdHRyaWJ1dGVOUyhudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgIkpBVkFDTEFTUyIpOworICAgICAgICAgICAgICAgICAgU3RyaW5nIERlc2NyaXB0aW9uID0KKyAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVyRWxlbVtpXS5nZXRBdHRyaWJ1dGVOUyhudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgIkRFU0NSSVBUSU9OIik7CisKKyAgICAgICAgICAgICAgICAgIGlmICgoRGVzY3JpcHRpb24gIT0gbnVsbCkgJiYgKERlc2NyaXB0aW9uLmxlbmd0aCgpID4gMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKQorICAgICAgICAgICAgICAgICAgICAJbG9nLmRlYnVnKCJSZWdpc3RlciBSZXNvbHZlcjogIiArIEpBVkFDTEFTUyArICI6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIERlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgCWxvZy5kZWJ1ZygiUmVnaXN0ZXIgUmVzb2x2ZXI6ICIgKyBKQVZBQ0xBU1MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICI6IEZvciB1bmtub3duIHB1cnBvc2VzIik7CisgICAgICAgICAgICAgICAgICB9CisJCQkJICB0cnkgeworCQkJCQkgIFJlc291cmNlUmVzb2x2ZXIucmVnaXN0ZXIoSkFWQUNMQVNTKTsKKwkJCQkgIH0gY2F0Y2ggKFRocm93YWJsZSBlKSB7CisJCQkJCSAgbG9nLndhcm4oIkNhbm5vdCByZWdpc3RlcjoiK0pBVkFDTEFTUysiIHBlcmhhcHMgc29tZSBuZWVkZWQgamFycyBhcmUgbm90IGluc3RhbGxlZCIsZSk7CisJCQkJICB9CisgICAgICAgICAgICAgICAgICBYWF9jb25maWd1cmVfcmVnX3Jlc291cmNlcmVzb2x2ZXJfZW5kID0KKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgCisKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgCisKKyAgICAgICAgICAgIAorCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh0YWcuZXF1YWxzKCJLZXlSZXNvbHZlciIpKXsKKyAgICAgICAgICAgICAgIFhYX2NvbmZpZ3VyZV9yZWdfa2V5UmVzb2x2ZXJfc3RhcnQgPVN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgICAgICAgS2V5UmVzb2x2ZXIuaW5pdCgpOworCisgICAgICAgICAgICAgICBFbGVtZW50W10gcmVzb2x2ZXJFbGVtID0gWE1MVXRpbHMuc2VsZWN0Tm9kZXMoZWwuZ2V0Rmlyc3RDaGlsZCgpLCBDT05GX05TLCJSZXNvbHZlciIpOworCisgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlc29sdmVyRWxlbS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgU3RyaW5nIEpBVkFDTEFTUyA9CisgICAgICAgICAgICAgICAgICAgICByZXNvbHZlckVsZW1baV0uZ2V0QXR0cmlidXRlTlMobnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJKQVZBQ0xBU1MiKTsKKyAgICAgICAgICAgICAgICAgIFN0cmluZyBEZXNjcmlwdGlvbiA9CisgICAgICAgICAgICAgICAgICAgICByZXNvbHZlckVsZW1baV0uZ2V0QXR0cmlidXRlTlMobnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJERVNDUklQVElPTiIpOworCisgICAgICAgICAgICAgICAgICBpZiAoKERlc2NyaXB0aW9uICE9IG51bGwpICYmIChEZXNjcmlwdGlvbi5sZW5ndGgoKSA+IDApKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgCWxvZy5kZWJ1ZygiUmVnaXN0ZXIgUmVzb2x2ZXI6ICIgKyBKQVZBQ0xBU1MgKyAiOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBEZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAobG9nLmlzRGVidWdFbmFibGVkKCkpCisgICAgICAgICAgICAgICAgICAgIAlsb2cuZGVidWcoIlJlZ2lzdGVyIFJlc29sdmVyOiAiICsgSkFWQUNMQVNTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiOiBGb3IgdW5rbm93biBwdXJwb3NlcyIpOworICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICBLZXlSZXNvbHZlci5yZWdpc3RlcihKQVZBQ0xBU1MpOworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgWFhfY29uZmlndXJlX3JlZ19rZXlSZXNvbHZlcl9lbmQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAodGFnLmVxdWFscygiUHJlZml4TWFwcGluZ3MiKSl7CisgICAgICAgICAgICAgICAgWFhfY29uZmlndXJlX3JlZ19wcmVmaXhlc19zdGFydCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICAJbG9nLmRlYnVnKCJOb3cgSSB0cnkgdG8gYmluZCBwcmVmaXhlczoiKTsKKworICAgICAgICAgICAgICAgRWxlbWVudFtdIG5sID0gWE1MVXRpbHMuc2VsZWN0Tm9kZXMoZWwuZ2V0Rmlyc3RDaGlsZCgpLCBDT05GX05TLCJQcmVmaXhNYXBwaW5nIik7CisKKyAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbmwubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgIFN0cmluZyBuYW1lc3BhY2UgPSBubFtpXS5nZXRBdHRyaWJ1dGVOUyhudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lc3BhY2UiKTsKKyAgICAgICAgICAgICAgICAgIFN0cmluZyBwcmVmaXggPSBubFtpXS5nZXRBdHRyaWJ1dGVOUyhudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcmVmaXgiKTsKKyAgICAgICAgICAgICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICAgIAlsb2cuZGVidWcoIk5vdyBJIHRyeSB0byBiaW5kICIgKyBwcmVmaXggKyAiIHRvICIgKyBuYW1lc3BhY2UpOworICAgICAgICAgICAgICAgICAgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuRWxlbWVudFByb3h5CisgICAgICAgICAgICAgICAgICAgICAuc2V0RGVmYXVsdFByZWZpeChuYW1lc3BhY2UsIHByZWZpeCk7CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICBYWF9jb25maWd1cmVfcmVnX3ByZWZpeGVzX2VuZCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBsb25nIFhYX2luaXRfZW5kID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisKKyAgICAgICAgICAgIC8vSi0KKyAgICAgICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkgeworICAgICAgICAgICAgCWxvZy5kZWJ1ZygiWFhfaW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiArICgoaW50KShYWF9pbml0X2VuZCAtIFhYX2luaXRfc3RhcnQpKSArICIgbXMiKTsKKyAgICAgICAgICAgICAgICBsb2cuZGVidWcoIiAgWFhfcHJuZyAgICAgICAgICAgICAgICAgICAgICAgICAgICIgKyAoKGludCkoWFhfcHJuZ19lbmQgLSBYWF9wcm5nX3N0YXJ0KSkgKyAiIG1zIik7CisgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCIgIFhYX3BhcnNpbmcgICAgICAgICAgICAgICAgICAgICAgICAiICsgKChpbnQpKFhYX3BhcnNpbmdfZW5kIC0gWFhfcGFyc2luZ19zdGFydCkpICsgIiBtcyIpOyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygiICBYWF9jb25maWd1cmVfaTE4biAgICAgICAgICAgICAgICAgIiArICgoaW50KShYWF9jb25maWd1cmVfaTE4bl9lbmQtIFhYX2NvbmZpZ3VyZV9pMThuX3N0YXJ0KSkgKyAiIG1zIik7CisgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCIgIFhYX2NvbmZpZ3VyZV9yZWdfYzE0biAgICAgICAgICAgICAiICsgKChpbnQpKFhYX2NvbmZpZ3VyZV9yZWdfYzE0bl9lbmQtIFhYX2NvbmZpZ3VyZV9yZWdfYzE0bl9zdGFydCkpICsgIiBtcyIpOyAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCIgIFhYX2NvbmZpZ3VyZV9yZWdfamNlbWFwcGVyICAgICAgICAiICsgKChpbnQpKFhYX2NvbmZpZ3VyZV9yZWdfamNlbWFwcGVyX2VuZC0gWFhfY29uZmlndXJlX3JlZ19qY2VtYXBwZXJfc3RhcnQpKSArICIgbXMiKTsKKyAgICAgICAgICAgICAgICBsb2cuZGVidWcoIiAgWFhfY29uZmlndXJlX3JlZ19rZXlJbmZvICAgICAgICAgICIgKyAoKGludCkoWFhfY29uZmlndXJlX3JlZ19rZXlJbmZvX2VuZC0gWFhfY29uZmlndXJlX3JlZ19rZXlJbmZvX3N0YXJ0KSkgKyAiIG1zIik7CisgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCIgIFhYX2NvbmZpZ3VyZV9yZWdfa2V5UmVzb2x2ZXIgICAgICAiICsgKChpbnQpKFhYX2NvbmZpZ3VyZV9yZWdfa2V5UmVzb2x2ZXJfZW5kLSBYWF9jb25maWd1cmVfcmVnX2tleVJlc29sdmVyX3N0YXJ0KSkgKyAiIG1zIik7CisgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCIgIFhYX2NvbmZpZ3VyZV9yZWdfcHJlZml4ZXMgICAgICAgICAiICsgKChpbnQpKFhYX2NvbmZpZ3VyZV9yZWdfcHJlZml4ZXNfZW5kLSBYWF9jb25maWd1cmVfcmVnX3ByZWZpeGVzX3N0YXJ0KSkgKyAiIG1zIik7ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCIgIFhYX2NvbmZpZ3VyZV9yZWdfcmVzb3VyY2VyZXNvbHZlciAiICsgKChpbnQpKFhYX2NvbmZpZ3VyZV9yZWdfcmVzb3VyY2VyZXNvbHZlcl9lbmQtIFhYX2NvbmZpZ3VyZV9yZWdfcmVzb3VyY2VyZXNvbHZlcl9zdGFydCkpICsgIiBtcyIpOworICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygiICBYWF9jb25maWd1cmVfcmVnX3NpZ2FsZ29zICAgICAgICAgIiArICgoaW50KShYWF9jb25maWd1cmVfcmVnX3NpZ2FsZ29zX2VuZC0gWFhfY29uZmlndXJlX3JlZ19zaWdhbGdvc19zdGFydCkpICsgIiBtcyIpOworICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygiICBYWF9jb25maWd1cmVfcmVnX3RyYW5zZm9ybXMgICAgICAgIiArICgoaW50KShYWF9jb25maWd1cmVfcmVnX3RyYW5zZm9ybXNfZW5kLSBYWF9jb25maWd1cmVfcmVnX3RyYW5zZm9ybXNfc3RhcnQpKSArICIgbXMiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBsb2cuZmF0YWwoIkJhZDogIiwgZSk7CisgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICAgfQorICAgICAgCisgICB9CisKKyAgCit9CisKZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9hbGdvcml0aG1zL0FsZ29yaXRobS5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2FsZ29yaXRobXMvQWxnb3JpdGhtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZjMjcyMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9hbGdvcml0aG1zL0FsZ29yaXRobS5qYXZhCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmFsZ29yaXRobXM7CisKKworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuU2lnbmF0dXJlRWxlbWVudFByb3h5OworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CisKKworLyoqCisgKiBUaGUgQWxnb3JpdGhtIGNsYXNzIHdoaWNoIHN0b3JlcyB0aGUgQWxnb3JpdGhtIFVSSSBhcyBhIHN0cmluZy4KKyAqCisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBBbGdvcml0aG0gZXh0ZW5kcyBTaWduYXR1cmVFbGVtZW50UHJveHkgeworCisgICAvKioKKyAgICAqCisgICAgKiBAcGFyYW0gZG9jCisgICAgKiBAcGFyYW0gYWxnb3JpdGhtVVJJIGlzIHRoZSBVUkkgb2YgdGhlIGFsZ29yaXRobSBhcyBTdHJpbmcKKyAgICAqLworICAgcHVibGljIEFsZ29yaXRobShEb2N1bWVudCBkb2MsIFN0cmluZyBhbGdvcml0aG1VUkkpIHsKKworICAgICAgc3VwZXIoZG9jKTsKKworICAgICAgdGhpcy5zZXRBbGdvcml0aG1VUkkoYWxnb3JpdGhtVVJJKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBBbGdvcml0aG0KKyAgICAqCisgICAgKiBAcGFyYW0gZWxlbWVudAorICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIEFsZ29yaXRobShFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJKQorICAgICAgICAgICB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworICAgICAgc3VwZXIoZWxlbWVudCwgQmFzZVVSSSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGdldEFsZ29yaXRobVVSSQorICAgICoKKyAgICAqIEByZXR1cm4gVGhlIFVSSSBvZiB0aGUgYWxvZ3JpdGhtCisgICAgKi8KKyAgIHB1YmxpYyBTdHJpbmcgZ2V0QWxnb3JpdGhtVVJJKCkgeworICAgICAgcmV0dXJuIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0QXR0cmlidXRlTlMobnVsbCwgQ29uc3RhbnRzLl9BVFRfQUxHT1JJVEhNKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBTZXRzIHRoZSBhbGdvcml0aG0ncyBVUkkgYXMgdXNlZCBpbiB0aGUgc2lnbmF0dXJlLgorICAgICoKKyAgICAqIEBwYXJhbSBhbGdvcml0aG1VUkkgaXMgdGhlIFVSSSBvZiB0aGUgYWxnb3JpdGhtIGFzIFN0cmluZworICAgICovCisgICBwcm90ZWN0ZWQgdm9pZCBzZXRBbGdvcml0aG1VUkkoU3RyaW5nIGFsZ29yaXRobVVSSSkgeworCisgICAgICBpZiAoIChhbGdvcml0aG1VUkkgIT0gbnVsbCkpIHsKKyAgICAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuc2V0QXR0cmlidXRlTlMobnVsbCwgQ29uc3RhbnRzLl9BVFRfQUxHT1JJVEhNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxnb3JpdGhtVVJJKTsKKyAgICAgIH0KKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9hbGdvcml0aG1zL0pDRU1hcHBlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2FsZ29yaXRobXMvSkNFTWFwcGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNkNWYzZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9hbGdvcml0aG1zL0pDRU1hcHBlci5qYXZhCkBAIC0wLDAgKzEsMTY0IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5hbGdvcml0aG1zOworCisKKworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQ7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworCisKKy8qKgorICogVGhpcyBjbGFzcyBtYXBzIGFsZ29yaXRobSBpZGVudGlmaWVyIFVSSXMgdG8gSkFWQSBKQ0UgY2xhc3MgbmFtZXMuCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICovCitwdWJsaWMgY2xhc3MgSkNFTWFwcGVyIHsKKworICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKEpDRU1hcHBlci5jbGFzcy5nZXROYW1lKCkpOworCisKKyAgIAorICAgcHJpdmF0ZSBzdGF0aWMgTWFwIHVyaVRvSkNFTmFtZTsKKyAgIAorICAgcHJpdmF0ZSBzdGF0aWMgTWFwIGFsZ29yaXRobXNNYXA7CisKKyAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBwcm92aWRlck5hbWUgPSBudWxsOworICAgLyoqCisgICAgKiBNZXRob2QgaW5pdAorICAgICoKKyAgICAqIEBwYXJhbSBtYXBwaW5nRWxlbWVudAorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIGluaXQoRWxlbWVudCBtYXBwaW5nRWxlbWVudCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIGxvYWRBbGdvcml0aG1zKChFbGVtZW50KW1hcHBpbmdFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJBbGdvcml0aG1zIikuaXRlbSgwKSk7CisgICB9CisKKyAgIHN0YXRpYyB2b2lkIGxvYWRBbGdvcml0aG1zKCBFbGVtZW50IGFsZ29yaXRobXNFbCkgeworICAgICAgIEVsZW1lbnRbXSBhbGdvcml0aG1zID0gWE1MVXRpbHMuc2VsZWN0Tm9kZXMoYWxnb3JpdGhtc0VsLmdldEZpcnN0Q2hpbGQoKSxJbml0LkNPTkZfTlMsIkFsZ29yaXRobSIpOworICAgICAgIHVyaVRvSkNFTmFtZSA9IG5ldyBIYXNoTWFwKCBhbGdvcml0aG1zLmxlbmd0aCAqIDIpOyAKKyAgICAgICBhbGdvcml0aG1zTWFwID0gbmV3IEhhc2hNYXAoIGFsZ29yaXRobXMubGVuZ3RoICogMik7CisgICAgICAgZm9yIChpbnQgaSA9IDAgO2kgPCBhbGdvcml0aG1zLmxlbmd0aCA7aSArKykgeworICAgICAgICAgICBFbGVtZW50IGVsID0gYWxnb3JpdGhtc1tpXTsKKyAgICAgICAgICAgU3RyaW5nIGlkID0gZWwuZ2V0QXR0cmlidXRlKCJVUkkiKTsKKyAgICAgICAgICAgU3RyaW5nIGpjZU5hbWUgPSBlbC5nZXRBdHRyaWJ1dGUoIkpDRU5hbWUiKTsKKyAgICAgICAgICAgdXJpVG9KQ0VOYW1lLnB1dChpZCwgamNlTmFtZSk7CisgICAgICAgICAgIGFsZ29yaXRobXNNYXAucHV0KGlkLCBuZXcgQWxnb3JpdGhtKGVsKSk7CisgICAgICAgfQorICAgICAgIAorICAgfQorCisgICBzdGF0aWMgQWxnb3JpdGhtIGdldEFsZ29yaXRobU1hcHBpbmcoU3RyaW5nIGFsZ29VUkkpIHsKKyAgIAkgICByZXR1cm4gKChBbGdvcml0aG0pYWxnb3JpdGhtc01hcC5nZXQoYWxnb1VSSSkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0cmFuc2xhdGVVUkl0b0pDRUlECisgICAgKgorICAgICogQHBhcmFtIEFsZ29yaXRobVVSSQorICAgICogQHJldHVybiB0aGUgSkNFIHN0YW5kYXJkIG5hbWUgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gVVJJCisgICAgKgorICAgICovCisgICBwdWJsaWMgc3RhdGljIFN0cmluZyB0cmFuc2xhdGVVUkl0b0pDRUlEKFN0cmluZyBBbGdvcml0aG1VUkkpIHsKKyAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkKKyAgICAgICAgICBsb2cuZGVidWcoIlJlcXVlc3QgZm9yIFVSSSAiICsgQWxnb3JpdGhtVVJJKTsKKworICAgICAgU3RyaW5nIGpjZU5hbWUgPSAoU3RyaW5nKSB1cmlUb0pDRU5hbWUuZ2V0KEFsZ29yaXRobVVSSSk7CisgICAgICByZXR1cm4gamNlTmFtZTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0QWxnb3JpdGhtQ2xhc3NGcm9tVVJJCisgICAgKiBOT1RFKFJhdWwgQmVuaXRvKSBJdCBzZWVtcyBhIGJ1Z2d5IGZ1bmN0aW9uIHRoZSBsb29wIGRvZXNuJ3QgZG8KKyAgICAqIGFueXRoaW5nPz8KKyAgICAqIEBwYXJhbSBBbGdvcml0aG1VUkkKKyAgICAqIEByZXR1cm4gdGhlIGNsYXNzIG5hbWUgdGhhdCBpbXBsZW1lbnRzIHRoaXMgYWxnb3JpdGhtCisgICAgKgorICAgICovCisgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRBbGdvcml0aG1DbGFzc0Zyb21VUkkoU3RyaW5nIEFsZ29yaXRobVVSSSkgeworICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkKKyAgICAgICAgICAgbG9nLmRlYnVnKCJSZXF1ZXN0IGZvciBVUkkgIiArIEFsZ29yaXRobVVSSSk7CisKKyAgICAgICByZXR1cm4gKChBbGdvcml0aG0pIGFsZ29yaXRobXNNYXAuZ2V0KEFsZ29yaXRobVVSSSkpLmFsZ29yaXRobUNsYXNzOworICAgfQorCisgICAvKioKKyAgICAqIFJldHVybnMgdGhlIGtleWxlbmd0aCBpbiBiaXQgZm9yIGEgcGFydGljdWxhciBhbGdvcml0aG0uCisgICAgKgorICAgICogQHBhcmFtIEFsZ29yaXRobVVSSQorICAgICogQHJldHVybiBUaGUgbGVuZ3RoIG9mIHRoZSBrZXkgdXNlZCBpbiB0aGUgYWxvZ3JpdGhtCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgaW50IGdldEtleUxlbmd0aEZyb21VUkkoU3RyaW5nIEFsZ29yaXRobVVSSSkgeworICAgICAgIHJldHVybiBJbnRlZ2VyLnBhcnNlSW50KCgoQWxnb3JpdGhtKSBhbGdvcml0aG1zTWFwLmdldChBbGdvcml0aG1VUkkpKS5rZXlMZW5ndGgpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRKQ0VLZXlBbGdvcml0aG1Gcm9tVVJJCisgICAgKgorICAgICogQHBhcmFtIEFsZ29yaXRobVVSSQorICAgICogQHJldHVybiBUaGUgS2V5QWxnb3JpdGhtIGZvciB0aGUgZ2l2ZW4gVVJJLgorICAgICoKKyAgICAqLworICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0SkNFS2V5QWxnb3JpdGhtRnJvbVVSSShTdHJpbmcgQWxnb3JpdGhtVVJJKSB7CisKKyAgICAgICAgcmV0dXJuICAoKEFsZ29yaXRobSkgYWxnb3JpdGhtc01hcC5nZXQoQWxnb3JpdGhtVVJJKSkucmVxdWlyZWRLZXk7CisKKyAgIH0KKworICAgLyoqCisgICAgKiBHZXRzIHRoZSBkZWZhdWx0IFByb3ZpZGVyIGZvciBvYnRhaW5pbmcgdGhlIHNlY3VyaXR5IGFsZ29yaXRobXMKKyAgICAqIEByZXR1cm4gdGhlIGRlZmF1bHQgcHJvdmlkZXJJZC4gIAorICAgICovCisgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRQcm92aWRlcklkKCkgeworICAgCQlyZXR1cm4gcHJvdmlkZXJOYW1lOworICAgfQorICAgCisgICAvKioKKyAgICAqIFNldHMgdGhlIGRlZmF1bHQgUHJvdmlkZXIgZm9yIG9idGFpbmluZyB0aGUgc2VjdXJpdHkgYWxnb3JpdGhtcworICAgICogQHBhcmFtIHByb3ZpZGVyIHRoZSBkZWZhdWx0IHByb3ZpZGVySWQuICAKKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIHNldFByb3ZpZGVySWQoU3RyaW5nIHByb3ZpZGVyKSB7CisgICAJCXByb3ZpZGVyTmFtZT1wcm92aWRlcjsKKyAgIH0KKyAgIAorICAgLyoqCisgICAgKiBSZXByZXNlbnRzIHRoZSBBbGdvcml0aG0geG1sIGVsZW1lbnQKKyAgICAqLyAgIAorICAgcHVibGljIHN0YXRpYyBjbGFzcyBBbGdvcml0aG0geworICAgCSAgICBTdHJpbmcgYWxnb3JpdGhtQ2xhc3M7CisgICAJICAgIFN0cmluZyBrZXlMZW5ndGg7CisgICAgICAgICAgICBTdHJpbmcgcmVxdWlyZWRLZXk7CisgICAgICAgIC8qKgorICAgICAgICAgKiBHZXRzIGRhdGEgZnJvbSBlbGVtZW50CisgICAgICAgICAqIEBwYXJhbSBlbAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIEFsZ29yaXRobShFbGVtZW50IGVsKSB7CisgICAgICAgIAlhbGdvcml0aG1DbGFzcz1lbC5nZXRBdHRyaWJ1dGUoIkFsZ29yaXRobUNsYXNzIik7CisgICAgICAgICAgICBrZXlMZW5ndGg9ZWwuZ2V0QXR0cmlidXRlKCJLZXlMZW5ndGgiKTsKKyAgICAgICAgICAgIHJlcXVpcmVkS2V5PWVsLmdldEF0dHJpYnV0ZSgiUmVxdWlyZWRLZXkiKTsKKyAgICAgICAgfQorICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2FsZ29yaXRobXMvTWVzc2FnZURpZ2VzdEFsZ29yaXRobS5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2FsZ29yaXRobXMvTWVzc2FnZURpZ2VzdEFsZ29yaXRobS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkNmJjMTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYWxnb3JpdGhtcy9NZXNzYWdlRGlnZXN0QWxnb3JpdGhtLmphdmEKQEAgLTAsMCArMSwyNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmFsZ29yaXRobXM7CisKK2ltcG9ydCBqYXZhLnNlY3VyaXR5Lk1lc3NhZ2VEaWdlc3Q7CitpbXBvcnQgamF2YS5zZWN1cml0eS5Ob1N1Y2hQcm92aWRlckV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuRW5jcnlwdGlvbkNvbnN0YW50czsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKKworCisvKioKKyAqIERpZ2VzdCBNZXNzYWdlIHdyYXBwZXIgJiBzZWxlY3RvciBjbGFzcy4KKyAqCisgKiA8cHJlPgorICogTWVzc2FnZURpZ2VzdEFsZ29yaXRobS5nZXRJbnN0YW5jZSgpCisgKiA8L3ByZT4KKyAqCisgKi8KK3B1YmxpYyBjbGFzcyBNZXNzYWdlRGlnZXN0QWxnb3JpdGhtIGV4dGVuZHMgQWxnb3JpdGhtIHsKKworICAgIC8qKiBNZXNzYWdlIERpZ2VzdCAtIE5PVCBSRUNPTU1FTkRFRCBNRDUqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUxHT19JRF9ESUdFU1RfTk9UX1JFQ09NTUVOREVEX01ENSA9IENvbnN0YW50cy5Nb3JlQWxnb3JpdGhtc1NwZWNOUyArICJtZDUiOworICAgLyoqIERpZ2VzdCAtIFJlcXVpcmVkIFNIQTEqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUxHT19JRF9ESUdFU1RfU0hBMSA9IENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMgKyAic2hhMSI7CisgICAvKiogTWVzc2FnZSBEaWdlc3QgLSBSRUNPTU1FTkRFRCBTSEEyNTYqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUxHT19JRF9ESUdFU1RfU0hBMjU2ID0gRW5jcnlwdGlvbkNvbnN0YW50cy5FbmNyeXB0aW9uU3BlY05TICsgInNoYTI1NiI7CisgICAvKiogTWVzc2FnZSBEaWdlc3QgLSBPUFRJT05BTCBTSEEzODQqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUxHT19JRF9ESUdFU1RfU0hBMzg0ID0gQ29uc3RhbnRzLk1vcmVBbGdvcml0aG1zU3BlY05TICsgInNoYTM4NCI7CisgICAvKiogTWVzc2FnZSBEaWdlc3QgLSBPUFRJT05BTCBTSEE1MTIqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUxHT19JRF9ESUdFU1RfU0hBNTEyID0gRW5jcnlwdGlvbkNvbnN0YW50cy5FbmNyeXB0aW9uU3BlY05TICsgInNoYTUxMiI7CisgICAvKiogTWVzc2FnZSBEaWdlc3QgLSBPUFRJT05BTCBSSVBFTUQtMTYwKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFMR09fSURfRElHRVNUX1JJUEVNRDE2MCA9IEVuY3J5cHRpb25Db25zdGFudHMuRW5jcnlwdGlvblNwZWNOUyArICJyaXBlbWQxNjAiOworCisgICAvKiogRmllbGQgYWxnb3JpdGhtIHN0b3JlcyB0aGUgYWN0dWFsIHtAbGluayBqYXZhLnNlY3VyaXR5Lk1lc3NhZ2VEaWdlc3R9ICovCisgICBqYXZhLnNlY3VyaXR5Lk1lc3NhZ2VEaWdlc3QgYWxnb3JpdGhtID0gbnVsbDsKKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBmb3IgdGhlIGJyYXZlIHdobyBwYXNzIHRoZWlyIG93biBtZXNzYWdlIGRpZ2VzdCBhbGdvcml0aG1zIGFuZCB0aGUgY29ycmVzcG9uZGluZyBVUkkuCisgICAgKiBAcGFyYW0gZG9jCisgICAgKiBAcGFyYW0gbWVzc2FnZURpZ2VzdAorICAgICogQHBhcmFtIGFsZ29yaXRobVVSSQorICAgICovCisgICBwcml2YXRlIE1lc3NhZ2VEaWdlc3RBbGdvcml0aG0oRG9jdW1lbnQgZG9jLCBNZXNzYWdlRGlnZXN0IG1lc3NhZ2VEaWdlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGFsZ29yaXRobVVSSSkgeworCisgICAgICBzdXBlcihkb2MsIGFsZ29yaXRobVVSSSk7CisKKyAgICAgIHRoaXMuYWxnb3JpdGhtID0gbWVzc2FnZURpZ2VzdDsKKyAgIH0KKyAgIAorICAgc3RhdGljIFRocmVhZExvY2FsIGluc3RhbmNlcz1uZXcgVGhyZWFkTG9jYWwoKSB7CisJICAgcHJvdGVjdGVkIE9iamVjdCBpbml0aWFsVmFsdWUoKSB7CisJCSAgIHJldHVybiBuZXcgSGFzaE1hcCgpOworCSAgIH07CisgICB9OworCisgICAvKioKKyAgICAqIEZhY3RvcnkgbWV0aG9kIGZvciBjb25zdHJ1Y3RpbmcgYSBtZXNzYWdlIGRpZ2VzdCBhbGdvcml0aG0gYnkgbmFtZS4KKyAgICAqCisgICAgKiBAcGFyYW0gZG9jCisgICAgKiBAcGFyYW0gYWxnb3JpdGhtVVJJCisgICAgKiBAcmV0dXJuIFRoZSBNZXNzYWdlRGlnZXN0QWxnb3JpdGhtIGVsZW1lbnQgdG8gYXR0YWNoIGluIGRvY3VtZW50IGFuZCB0byBkaWdlc3QKKyAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgTWVzc2FnZURpZ2VzdEFsZ29yaXRobSBnZXRJbnN0YW5jZSgKKyAgICAgICAgICAgRG9jdW1lbnQgZG9jLCBTdHJpbmcgYWxnb3JpdGhtVVJJKSB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKwkgIE1lc3NhZ2VEaWdlc3QgbWQgPSBnZXREaWdlc3RJbnN0YW5jZShhbGdvcml0aG1VUkkpOworICAgICAgcmV0dXJuIG5ldyBNZXNzYWdlRGlnZXN0QWxnb3JpdGhtKGRvYywgbWQsIGFsZ29yaXRobVVSSSk7CisgICB9CisKK3ByaXZhdGUgc3RhdGljIE1lc3NhZ2VEaWdlc3QgZ2V0RGlnZXN0SW5zdGFuY2UoU3RyaW5nIGFsZ29yaXRobVVSSSkgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisJTWVzc2FnZURpZ2VzdCByZXN1bHQ9KE1lc3NhZ2VEaWdlc3QpICgoTWFwKWluc3RhbmNlcy5nZXQoKSkuZ2V0KGFsZ29yaXRobVVSSSk7CisJaWYgKHJlc3VsdCE9bnVsbCkKKwkJcmV0dXJuIHJlc3VsdDsKKyAgICBTdHJpbmcgYWxnb3JpdGhtSUQgPSBKQ0VNYXBwZXIudHJhbnNsYXRlVVJJdG9KQ0VJRChhbGdvcml0aG1VUkkpOworCisJICBpZiAoYWxnb3JpdGhtSUQgPT0gbnVsbCkgeworCQkgIE9iamVjdFtdIGV4QXJncyA9IHsgYWxnb3JpdGhtVVJJIH07CisJCSAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiYWxnb3JpdGhtcy5Ob1N1Y2hNYXAiLCBleEFyZ3MpOworCSAgfQorCisgICAgICBNZXNzYWdlRGlnZXN0IG1kOworICAgICAgU3RyaW5nIHByb3ZpZGVyPUpDRU1hcHBlci5nZXRQcm92aWRlcklkKCk7CisgICAgICB0cnkgeyAgICAgIAkKKyAgICAgIAkgaWYgKHByb3ZpZGVyPT1udWxsKSB7CisgICAgICAJIAltZCA9IE1lc3NhZ2VEaWdlc3QuZ2V0SW5zdGFuY2UoYWxnb3JpdGhtSUQpOworICAgICAgCSB9IGVsc2UgeworICAgICAgCSAJbWQgPSBNZXNzYWdlRGlnZXN0LmdldEluc3RhbmNlKGFsZ29yaXRobUlELHByb3ZpZGVyKTsKKyAgICAgIAkgfQorICAgICAgfSBjYXRjaCAoamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIE9iamVjdFtdIGV4QXJncyA9IHsgYWxnb3JpdGhtSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4LmdldExvY2FsaXplZE1lc3NhZ2UoKSB9OworCisgICAgICAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJhbGdvcml0aG1zLk5vU3VjaEFsZ29yaXRobSIsIGV4QXJncyk7CisgICAgICB9IGNhdGNoIChOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiBleCkgeworICAgICAgCU9iamVjdFtdIGV4QXJncyA9IHsgYWxnb3JpdGhtSUQsCisgICAgICAJCQkJCQlleC5nZXRMb2NhbGl6ZWRNZXNzYWdlKCkgfTsKKyAgICAgIAkKKyAgICAgIAl0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJhbGdvcml0aG1zLk5vU3VjaEFsZ29yaXRobSIsIGV4QXJncyk7CisJfQorICAgICAgKChNYXApaW5zdGFuY2VzLmdldCgpKS5wdXQoYWxnb3JpdGhtVVJJLCBtZCk7ICAKKwlyZXR1cm4gbWQ7Cit9CisKKyAgIC8qKgorICAgICogUmV0dXJucyB0aGUgYWN0dWFsIHtAbGluayBqYXZhLnNlY3VyaXR5Lk1lc3NhZ2VEaWdlc3R9IGFsZ29yaXRobSBvYmplY3QKKyAgICAqCisgICAgKiBAcmV0dXJuIHRoZSBhY3R1YWwge0BsaW5rIGphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdH0gYWxnb3JpdGhtIG9iamVjdAorICAgICovCisgICBwdWJsaWMgamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0IGdldEFsZ29yaXRobSgpIHsKKyAgICAgIHJldHVybiB0aGlzLmFsZ29yaXRobTsKKyAgIH0KKworICAgLyoqCisgICAgKiBQcm94eSBtZXRob2QgZm9yIHtAbGluayBqYXZhLnNlY3VyaXR5Lk1lc3NhZ2VEaWdlc3QjaXNFcXVhbH0KKyAgICAqIHdoaWNoIGlzIGV4ZWN1dGVkIG9uIHRoZSBpbnRlcm5hbCB7QGxpbmsgamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0fSBvYmplY3QuCisgICAgKgorICAgICogQHBhcmFtIGRpZ2VzdGEKKyAgICAqIEBwYXJhbSBkaWdlc3RiCisgICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIHtAbGluayBqYXZhLnNlY3VyaXR5Lk1lc3NhZ2VEaWdlc3QjaXNFcXVhbH0gbWV0aG9kCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0VxdWFsKGJ5dGVbXSBkaWdlc3RhLCBieXRlW10gZGlnZXN0YikgeworICAgICAgcmV0dXJuIGphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdC5pc0VxdWFsKGRpZ2VzdGEsIGRpZ2VzdGIpOworICAgfQorCisgICAvKioKKyAgICAqIFByb3h5IG1ldGhvZCBmb3Ige0BsaW5rIGphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdCNkaWdlc3QoKX0KKyAgICAqIHdoaWNoIGlzIGV4ZWN1dGVkIG9uIHRoZSBpbnRlcm5hbCB7QGxpbmsgamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0fSBvYmplY3QuCisgICAgKgorICAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSB7QGxpbmsgamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0I2RpZ2VzdCgpfSBtZXRob2QKKyAgICAqLworICAgcHVibGljIGJ5dGVbXSBkaWdlc3QoKSB7CisgICAgICByZXR1cm4gdGhpcy5hbGdvcml0aG0uZGlnZXN0KCk7CisgICB9CisKKyAgIC8qKgorICAgICogUHJveHkgbWV0aG9kIGZvciB7QGxpbmsgamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0I2RpZ2VzdChieXRlW10pfQorICAgICogd2hpY2ggaXMgZXhlY3V0ZWQgb24gdGhlIGludGVybmFsIHtAbGluayBqYXZhLnNlY3VyaXR5Lk1lc3NhZ2VEaWdlc3R9IG9iamVjdC4KKyAgICAqCisgICAgKiBAcGFyYW0gaW5wdXQKKyAgICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUge0BsaW5rIGphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdCNkaWdlc3QoYnl0ZVtdKX0gbWV0aG9kCisgICAgKi8KKyAgIHB1YmxpYyBieXRlW10gZGlnZXN0KGJ5dGUgaW5wdXRbXSkgeworICAgICAgcmV0dXJuIHRoaXMuYWxnb3JpdGhtLmRpZ2VzdChpbnB1dCk7CisgICB9CisKKyAgIC8qKgorICAgICogUHJveHkgbWV0aG9kIGZvciB7QGxpbmsgamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0I2RpZ2VzdChieXRlW10sIGludCwgaW50KX0KKyAgICAqIHdoaWNoIGlzIGV4ZWN1dGVkIG9uIHRoZSBpbnRlcm5hbCB7QGxpbmsgamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0fSBvYmplY3QuCisgICAgKgorICAgICogQHBhcmFtIGJ1ZgorICAgICogQHBhcmFtIG9mZnNldAorICAgICogQHBhcmFtIGxlbgorICAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSB7QGxpbmsgamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0I2RpZ2VzdChieXRlW10sIGludCwgaW50KX0gbWV0aG9kCisgICAgKiBAdGhyb3dzIGphdmEuc2VjdXJpdHkuRGlnZXN0RXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBpbnQgZGlnZXN0KGJ5dGUgYnVmW10sIGludCBvZmZzZXQsIGludCBsZW4pCisgICAgICAgICAgIHRocm93cyBqYXZhLnNlY3VyaXR5LkRpZ2VzdEV4Y2VwdGlvbiB7CisgICAgICByZXR1cm4gdGhpcy5hbGdvcml0aG0uZGlnZXN0KGJ1Ziwgb2Zmc2V0LCBsZW4pOworICAgfQorCisgICAvKioKKyAgICAqIFByb3h5IG1ldGhvZCBmb3Ige0BsaW5rIGphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdCNnZXRBbGdvcml0aG19CisgICAgKiB3aGljaCBpcyBleGVjdXRlZCBvbiB0aGUgaW50ZXJuYWwge0BsaW5rIGphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdH0gb2JqZWN0LgorICAgICoKKyAgICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUge0BsaW5rIGphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdCNnZXRBbGdvcml0aG19IG1ldGhvZAorICAgICovCisgICBwdWJsaWMgU3RyaW5nIGdldEpDRUFsZ29yaXRobVN0cmluZygpIHsKKyAgICAgIHJldHVybiB0aGlzLmFsZ29yaXRobS5nZXRBbGdvcml0aG0oKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBQcm94eSBtZXRob2QgZm9yIHtAbGluayBqYXZhLnNlY3VyaXR5Lk1lc3NhZ2VEaWdlc3QjZ2V0UHJvdmlkZXJ9CisgICAgKiB3aGljaCBpcyBleGVjdXRlZCBvbiB0aGUgaW50ZXJuYWwge0BsaW5rIGphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdH0gb2JqZWN0LgorICAgICoKKyAgICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUge0BsaW5rIGphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdCNnZXRQcm92aWRlcn0gbWV0aG9kCisgICAgKi8KKyAgIHB1YmxpYyBqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIGdldEpDRVByb3ZpZGVyKCkgeworICAgICAgcmV0dXJuIHRoaXMuYWxnb3JpdGhtLmdldFByb3ZpZGVyKCk7CisgICB9CisKKyAgIC8qKgorICAgICogUHJveHkgbWV0aG9kIGZvciB7QGxpbmsgamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0I2dldERpZ2VzdExlbmd0aH0KKyAgICAqIHdoaWNoIGlzIGV4ZWN1dGVkIG9uIHRoZSBpbnRlcm5hbCB7QGxpbmsgamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0fSBvYmplY3QuCisgICAgKgorICAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSB7QGxpbmsgamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0I2dldERpZ2VzdExlbmd0aH0gbWV0aG9kCisgICAgKi8KKyAgIHB1YmxpYyBpbnQgZ2V0RGlnZXN0TGVuZ3RoKCkgeworICAgICAgcmV0dXJuIHRoaXMuYWxnb3JpdGhtLmdldERpZ2VzdExlbmd0aCgpOworICAgfQorCisgICAvKioKKyAgICAqIFByb3h5IG1ldGhvZCBmb3Ige0BsaW5rIGphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdCNyZXNldH0KKyAgICAqIHdoaWNoIGlzIGV4ZWN1dGVkIG9uIHRoZSBpbnRlcm5hbCB7QGxpbmsgamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0fSBvYmplY3QuCisgICAgKgorICAgICovCisgICBwdWJsaWMgdm9pZCByZXNldCgpIHsKKyAgICAgIHRoaXMuYWxnb3JpdGhtLnJlc2V0KCk7CisgICB9CisKKyAgIC8qKgorICAgICogUHJveHkgbWV0aG9kIGZvciB7QGxpbmsgamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0I3VwZGF0ZShieXRlW10pfQorICAgICogd2hpY2ggaXMgZXhlY3V0ZWQgb24gdGhlIGludGVybmFsIHtAbGluayBqYXZhLnNlY3VyaXR5Lk1lc3NhZ2VEaWdlc3R9IG9iamVjdC4KKyAgICAqCisgICAgKiBAcGFyYW0gaW5wdXQKKyAgICAqLworICAgcHVibGljIHZvaWQgdXBkYXRlKGJ5dGVbXSBpbnB1dCkgeworICAgICAgdGhpcy5hbGdvcml0aG0udXBkYXRlKGlucHV0KTsKKyAgIH0KKworICAgLyoqCisgICAgKiBQcm94eSBtZXRob2QgZm9yIHtAbGluayBqYXZhLnNlY3VyaXR5Lk1lc3NhZ2VEaWdlc3QjdXBkYXRlKGJ5dGUpfQorICAgICogd2hpY2ggaXMgZXhlY3V0ZWQgb24gdGhlIGludGVybmFsIHtAbGluayBqYXZhLnNlY3VyaXR5Lk1lc3NhZ2VEaWdlc3R9IG9iamVjdC4KKyAgICAqCisgICAgKiBAcGFyYW0gaW5wdXQKKyAgICAqLworICAgcHVibGljIHZvaWQgdXBkYXRlKGJ5dGUgaW5wdXQpIHsKKyAgICAgIHRoaXMuYWxnb3JpdGhtLnVwZGF0ZShpbnB1dCk7CisgICB9CisKKyAgIC8qKgorICAgICogUHJveHkgbWV0aG9kIGZvciB7QGxpbmsgamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0I3VwZGF0ZShieXRlW10sIGludCwgaW50KX0KKyAgICAqIHdoaWNoIGlzIGV4ZWN1dGVkIG9uIHRoZSBpbnRlcm5hbCB7QGxpbmsgamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0fSBvYmplY3QuCisgICAgKgorICAgICogQHBhcmFtIGJ1ZgorICAgICogQHBhcmFtIG9mZnNldAorICAgICogQHBhcmFtIGxlbgorICAgICovCisgICBwdWJsaWMgdm9pZCB1cGRhdGUoYnl0ZSBidWZbXSwgaW50IG9mZnNldCwgaW50IGxlbikgeworICAgICAgdGhpcy5hbGdvcml0aG0udXBkYXRlKGJ1Ziwgb2Zmc2V0LCBsZW4pOworICAgfQorCisgICAvKiogQGluaGVyaXREb2MgKi8KKyAgIHB1YmxpYyBTdHJpbmcgZ2V0QmFzZU5hbWVzcGFjZSgpIHsKKyAgICAgIHJldHVybiBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TOworICAgfQorCisgICAvKiogQGluaGVyaXREb2MgKi8KKyAgIHB1YmxpYyBTdHJpbmcgZ2V0QmFzZUxvY2FsTmFtZSgpIHsKKyAgICAgIHJldHVybiBDb25zdGFudHMuX1RBR19ESUdFU1RNRVRIT0Q7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYWxnb3JpdGhtcy9TaWduYXR1cmVBbGdvcml0aG0uamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9hbGdvcml0aG1zL1NpZ25hdHVyZUFsZ29yaXRobS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2ZDE2YTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYWxnb3JpdGhtcy9TaWduYXR1cmVBbGdvcml0aG0uamF2YQpAQCAtMCwwICsxLDQ3MSBAQAorLyoKKyAqIENvcHlyaWdodCAxOTk5LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5hbGdvcml0aG1zOworCitpbXBvcnQgamF2YS5zZWN1cml0eS5LZXk7CitpbXBvcnQgamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb207CitpbXBvcnQgamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWM7CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmFsZ29yaXRobXMuaW1wbGVtZW50YXRpb25zLkludGVncml0eUhtYWM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5BbGdvcml0aG1BbHJlYWR5UmVnaXN0ZXJlZEV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLlhNTFNlY3VyaXR5RXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmVFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CisKKy8qKgorICogQWxsb3dzIHNlbGVjdGlvbiBvZiBkaWdpdGFsIHNpZ25hdHVyZSdzIGFsZ29yaXRobSwgcHJpdmF0ZSBrZXlzLCBvdGhlciAKKyAqIHNlY3VyaXR5IHBhcmFtZXRlcnMsIGFuZCBhbGdvcml0aG0ncyBJRC4KKyAqCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubgorICovCitwdWJsaWMgY2xhc3MgU2lnbmF0dXJlQWxnb3JpdGhtIGV4dGVuZHMgQWxnb3JpdGhtIHsKKworICAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZworICAgICAgICAgICAgKFNpZ25hdHVyZUFsZ29yaXRobS5jbGFzcy5nZXROYW1lKCkpOworCisgICAgLyoqIEZpZWxkIF9hbHJlYWR5SW5pdGlhbGl6ZWQgKi8KKyAgICBzdGF0aWMgYm9vbGVhbiBfYWxyZWFkeUluaXRpYWxpemVkID0gZmFsc2U7CisKKyAgICAvKiogQWxsIGF2YWlsYWJsZSBhbGdvcml0aG0gY2xhc3NlcyBhcmUgcmVnaXN0ZXJlZCBoZXJlICovCisgICAgc3RhdGljIEhhc2hNYXAgX2FsZ29yaXRobUhhc2ggPSBudWxsOworICAgCisgICAgc3RhdGljIFRocmVhZExvY2FsIGluc3RhbmNlc1NpZ25pbmc9bmV3IFRocmVhZExvY2FsKCkgeworICAgICAgICBwcm90ZWN0ZWQgT2JqZWN0IGluaXRpYWxWYWx1ZSgpIHsKKwkgICAgcmV0dXJuIG5ldyBIYXNoTWFwKCk7CisgICAgICAgIH07CisgICAgfTsKKyAgIAorICAgIHN0YXRpYyBUaHJlYWRMb2NhbCBpbnN0YW5jZXNWZXJpZnk9bmV3IFRocmVhZExvY2FsKCkgeworICAgICAgICBwcm90ZWN0ZWQgT2JqZWN0IGluaXRpYWxWYWx1ZSgpIHsKKwkgICAgcmV0dXJuIG5ldyBIYXNoTWFwKCk7CisgICAgICAgIH07CisgICAgfTsKKyAgIAorICAgIHN0YXRpYyBUaHJlYWRMb2NhbCBrZXlzU2lnbmluZz1uZXcgVGhyZWFkTG9jYWwoKSB7CisgICAgICAgIHByb3RlY3RlZCBPYmplY3QgaW5pdGlhbFZhbHVlKCkgeworIAkgICAgcmV0dXJuIG5ldyBIYXNoTWFwKCk7CisgICAgICAgIH07CisgICAgfTsKKworICAgIHN0YXRpYyBUaHJlYWRMb2NhbCBrZXlzVmVyaWZ5PW5ldyBUaHJlYWRMb2NhbCgpIHsKKyAgICAgICAgcHJvdGVjdGVkIE9iamVjdCBpbml0aWFsVmFsdWUoKSB7CisgCSAgICByZXR1cm4gbmV3IEhhc2hNYXAoKTsKKyAgICAgICAgfTsKKyAgICB9OworCisgICAgLyoqIEZpZWxkIF9zaWduYXR1cmVBbGdvcml0aG0gKi8KKyAgICBwcm90ZWN0ZWQgU2lnbmF0dXJlQWxnb3JpdGhtU3BpIF9zaWduYXR1cmVBbGdvcml0aG0gPSBudWxsOworCisgICAgcHJpdmF0ZSBTdHJpbmcgYWxnb3JpdGhtVVJJOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IgU2lnbmF0dXJlQWxnb3JpdGhtCisgICAgICoKKyAgICAgKiBAcGFyYW0gZG9jCisgICAgICogQHBhcmFtIGFsZ29yaXRobVVSSQorICAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgU2lnbmF0dXJlQWxnb3JpdGhtKERvY3VtZW50IGRvYywgU3RyaW5nIGFsZ29yaXRobVVSSSkKKyAgICAgICAgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKyAgICAgICAgc3VwZXIoZG9jLCBhbGdvcml0aG1VUkkpOworICAgICAgICB0aGlzLmFsZ29yaXRobVVSSSA9IGFsZ29yaXRobVVSSTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgaW5pdGlhbGl6ZUFsZ29yaXRobShib29sZWFuIGlzRm9yU2lnbmluZykgCisgICAgICAgIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworICAgICAgICBfc2lnbmF0dXJlQWxnb3JpdGhtPWlzRm9yU2lnbmluZyA/IGdldEluc3RhbmNlRm9yU2lnbmluZyhhbGdvcml0aG1VUkkpIDoKKyAgICAgICAgICAgIGdldEluc3RhbmNlRm9yVmVyaWZ5KGFsZ29yaXRobVVSSSk7CSAgIAorCXRoaXMuX3NpZ25hdHVyZUFsZ29yaXRobQorICAgICAgICAgICAgLmVuZ2luZUdldENvbnRleHRGcm9tRWxlbWVudCh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBTaWduYXR1cmVBbGdvcml0aG1TcGkgZ2V0SW5zdGFuY2VGb3JTaWduaW5nCisgICAgICAgIChTdHJpbmcgYWxnb3JpdGhtVVJJKSB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKyAgICAgICAgU2lnbmF0dXJlQWxnb3JpdGhtU3BpIHJlc3VsdD0oU2lnbmF0dXJlQWxnb3JpdGhtU3BpKSAKKyAgICAgICAgICAgICgoTWFwKWluc3RhbmNlc1NpZ25pbmcuZ2V0KCkpLmdldChhbGdvcml0aG1VUkkpOworICAgICAgICBpZiAocmVzdWx0IT1udWxsKSB7CisgICAgICAgICAgICByZXN1bHQucmVzZXQoKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0PWJ1aWxkU2lnbmVyKGFsZ29yaXRobVVSSSk7CisgICAgICAgICgoTWFwKWluc3RhbmNlc1NpZ25pbmcuZ2V0KCkpLnB1dChhbGdvcml0aG1VUkkscmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBTaWduYXR1cmVBbGdvcml0aG1TcGkgZ2V0SW5zdGFuY2VGb3JWZXJpZnkKKyAgICAgICAgKFN0cmluZyBhbGdvcml0aG1VUkkpIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworICAgICAgICBTaWduYXR1cmVBbGdvcml0aG1TcGkgcmVzdWx0PShTaWduYXR1cmVBbGdvcml0aG1TcGkpIAorICAgICAgICAgICAgKChNYXApaW5zdGFuY2VzVmVyaWZ5LmdldCgpKS5nZXQoYWxnb3JpdGhtVVJJKTsKKyAgICAgICAgaWYgKHJlc3VsdCE9bnVsbCkgeworCSAgICByZXN1bHQucmVzZXQoKTsKKwkgICAgcmV0dXJuIHJlc3VsdDsKKwl9CisJcmVzdWx0PWJ1aWxkU2lnbmVyKGFsZ29yaXRobVVSSSk7CisJKChNYXApaW5zdGFuY2VzVmVyaWZ5LmdldCgpKS5wdXQoYWxnb3JpdGhtVVJJLHJlc3VsdCk7CisJcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBTaWduYXR1cmVBbGdvcml0aG1TcGkgYnVpbGRTaWduZXIoU3RyaW5nIGFsZ29yaXRobVVSSSkgCisgICAgICAgIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworICAgICAgICB0cnkgeworICAgICAgICAgICAgQ2xhc3MgaW1wbGVtZW50aW5nQ2xhc3MgPQorICAgICAgICAgICAgICAgIFNpZ25hdHVyZUFsZ29yaXRobS5nZXRJbXBsZW1lbnRpbmdDbGFzcyhhbGdvcml0aG1VUkkpOworICAgICAgICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKQorICAgICAgICAgCWxvZy5kZWJ1ZygiQ3JlYXRlIFVSSSBcIiIgKyBhbGdvcml0aG1VUkkgKyAiXCIgY2xhc3MgXCIiCisgICAgICAgICAgICAgICAgICAgKyBpbXBsZW1lbnRpbmdDbGFzcyArICJcIiIpOworICAgICAgICAgICAgcmV0dXJuIChTaWduYXR1cmVBbGdvcml0aG1TcGkpIGltcGxlbWVudGluZ0NsYXNzLm5ld0luc3RhbmNlKCk7ICAgCisgICAgICAgIH0gIGNhdGNoIChJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBPYmplY3QgZXhBcmdzW10gPSB7IGFsZ29yaXRobVVSSSwgZXguZ2V0TWVzc2FnZSgpIH07CisKKyAgICAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAgICAgICAgICAgICAoImFsZ29yaXRobXMuTm9TdWNoQWxnb3JpdGhtIiwgZXhBcmdzLCBleCk7CisgICAgICAgIH0gY2F0Y2ggKEluc3RhbnRpYXRpb25FeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIE9iamVjdCBleEFyZ3NbXSA9IHsgYWxnb3JpdGhtVVJJLCBleC5nZXRNZXNzYWdlKCkgfTsKKyAgICAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAgICAgICAgICAgICAoImFsZ29yaXRobXMuTm9TdWNoQWxnb3JpdGhtIiwgZXhBcmdzLCBleCk7CisgICAgICAgIH0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBPYmplY3QgZXhBcmdzW10gPSB7IGFsZ29yaXRobVVSSSwgZXguZ2V0TWVzc2FnZSgpIH07CisgICAgICAgICAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgICAgICAgICAgICAgKCJhbGdvcml0aG1zLk5vU3VjaEFsZ29yaXRobSIsIGV4QXJncywgZXgpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IgU2lnbmF0dXJlQWxnb3JpdGhtCisgICAgICoKKyAgICAgKiBAcGFyYW0gZG9jCisgICAgICogQHBhcmFtIGFsZ29yaXRobVVSSQorICAgICAqIEBwYXJhbSBITUFDT3V0cHV0TGVuZ3RoCisgICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBTaWduYXR1cmVBbGdvcml0aG0oCisgICAgICAgICAgIERvY3VtZW50IGRvYywgU3RyaW5nIGFsZ29yaXRobVVSSSwgaW50IEhNQUNPdXRwdXRMZW5ndGgpCisgICAgICAgICAgICAgIHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisKKyAgICAgICAgdGhpcyhkb2MsIGFsZ29yaXRobVVSSSk7CisgICAgICAgIHRoaXMuYWxnb3JpdGhtVVJJPWFsZ29yaXRobVVSSTsKKyAgICAgICAgaW5pdGlhbGl6ZUFsZ29yaXRobSh0cnVlKTsKKyAgICAgICAgdGhpcy5fc2lnbmF0dXJlQWxnb3JpdGhtLmVuZ2luZVNldEhNQUNPdXRwdXRMZW5ndGgoSE1BQ091dHB1dExlbmd0aCk7CisgICAgICAgICgoSW50ZWdyaXR5SG1hYyl0aGlzLl9zaWduYXR1cmVBbGdvcml0aG0pCisgICAgICAgICAgICAuZW5naW5lQWRkQ29udGV4dFRvRWxlbWVudCh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RvciBTaWduYXR1cmVBbGdvcml0aG0KKyAgICAgKgorICAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIFNpZ25hdHVyZUFsZ29yaXRobShFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJKQorICAgICAgICAgICB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworCisgICAgICAgIHN1cGVyKGVsZW1lbnQsIEJhc2VVUkkpOyAgICAgIAorICAgICAgICBhbGdvcml0aG1VUkkgPSB0aGlzLmdldFVSSSgpOyAgICAgICAgICAgCisgICAgfQorCisgICAgLyoqCisgICAgICogUHJveHkgbWV0aG9kIGZvciB7QGxpbmsgamF2YS5zZWN1cml0eS5TaWduYXR1cmUjc2lnbigpfQorICAgICAqIHdoaWNoIGlzIGV4ZWN1dGVkIG9uIHRoZSBpbnRlcm5hbCB7QGxpbmsgamF2YS5zZWN1cml0eS5TaWduYXR1cmV9IG9iamVjdC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUge0BsaW5rIGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlI3NpZ24oKX0gbWV0aG9kCisgICAgICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgYnl0ZVtdIHNpZ24oKSB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NpZ25hdHVyZUFsZ29yaXRobS5lbmdpbmVTaWduKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUHJveHkgbWV0aG9kIGZvciB7QGxpbmsgamF2YS5zZWN1cml0eS5TaWduYXR1cmUjZ2V0QWxnb3JpdGhtfQorICAgICAqIHdoaWNoIGlzIGV4ZWN1dGVkIG9uIHRoZSBpbnRlcm5hbCB7QGxpbmsgamF2YS5zZWN1cml0eS5TaWduYXR1cmV9IG9iamVjdC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUge0BsaW5rIGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlI2dldEFsZ29yaXRobX0gbWV0aG9kCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXRKQ0VBbGdvcml0aG1TdHJpbmcoKSB7CisgICAgICAgIHRyeSB7CisJICAgIHJldHVybiBnZXRJbnN0YW5jZUZvclZlcmlmeShhbGdvcml0aG1VUkkpLmVuZ2luZUdldEpDRUFsZ29yaXRobVN0cmluZygpOworCX0gY2F0Y2ggKFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiBlKSB7CisJICAgIC8vSWdub3JlLgorCSAgICByZXR1cm4gbnVsbDsKKwl9CisgICAgfQorCisgICAgLyoqCisgICAgICogTWV0aG9kIGdldEpDRVByb3ZpZGVyTmFtZQorICAgICAqCisgICAgICogQHJldHVybiBUaGUgUHJvdmlkZXIgb2YgdGhpcyBTaWduYXR1cmUgQWxvZ3JpdGhtCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXRKQ0VQcm92aWRlck5hbWUoKSB7CisgICAgICAgIHRyeSB7CisJICAgIHJldHVybiBnZXRJbnN0YW5jZUZvclZlcmlmeShhbGdvcml0aG1VUkkpLmVuZ2luZUdldEpDRVByb3ZpZGVyTmFtZSgpOworCX0gY2F0Y2ggKFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiBlKSB7CisJICAgIHJldHVybiBudWxsOworCX0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQcm94eSBtZXRob2QgZm9yIHtAbGluayBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZSN1cGRhdGUoYnl0ZVtdKX0KKyAgICAgKiB3aGljaCBpcyBleGVjdXRlZCBvbiB0aGUgaW50ZXJuYWwge0BsaW5rIGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlfSBvYmplY3QuCisgICAgICoKKyAgICAgKiBAcGFyYW0gaW5wdXQKKyAgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHVwZGF0ZShieXRlW10gaW5wdXQpIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworICAgICAgICB0aGlzLl9zaWduYXR1cmVBbGdvcml0aG0uZW5naW5lVXBkYXRlKGlucHV0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQcm94eSBtZXRob2QgZm9yIHtAbGluayBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZSN1cGRhdGUoYnl0ZSl9CisgICAgICogd2hpY2ggaXMgZXhlY3V0ZWQgb24gdGhlIGludGVybmFsIHtAbGluayBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZX0gb2JqZWN0LgorICAgICAqCisgICAgICogQHBhcmFtIGlucHV0CisgICAgICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCB1cGRhdGUoYnl0ZSBpbnB1dCkgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisgICAgICAgIHRoaXMuX3NpZ25hdHVyZUFsZ29yaXRobS5lbmdpbmVVcGRhdGUoaW5wdXQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFByb3h5IG1ldGhvZCBmb3Ige0BsaW5rIGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlI3VwZGF0ZShieXRlW10sIGludCwgaW50KX0KKyAgICAgKiB3aGljaCBpcyBleGVjdXRlZCBvbiB0aGUgaW50ZXJuYWwge0BsaW5rIGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlfSBvYmplY3QuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYnVmCisgICAgICogQHBhcmFtIG9mZnNldAorICAgICAqIEBwYXJhbSBsZW4KKyAgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHVwZGF0ZShieXRlIGJ1ZltdLCBpbnQgb2Zmc2V0LCBpbnQgbGVuKQorICAgICAgICAgICB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKyAgICAgICAgdGhpcy5fc2lnbmF0dXJlQWxnb3JpdGhtLmVuZ2luZVVwZGF0ZShidWYsIG9mZnNldCwgbGVuKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQcm94eSBtZXRob2QgZm9yIHtAbGluayBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZSNpbml0U2lnbihqYXZhLnNlY3VyaXR5LlByaXZhdGVLZXkpfQorICAgICAqIHdoaWNoIGlzIGV4ZWN1dGVkIG9uIHRoZSBpbnRlcm5hbCB7QGxpbmsgamF2YS5zZWN1cml0eS5TaWduYXR1cmV9IG9iamVjdC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzaWduaW5nS2V5CisgICAgICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBpbml0U2lnbihLZXkgc2lnbmluZ0tleSkgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CSAgIAorICAgICAgICBpbml0aWFsaXplQWxnb3JpdGhtKHRydWUpOworICAgICAgICBNYXAgbWFwPShNYXApa2V5c1NpZ25pbmcuZ2V0KCk7CisgICAgICAgIGlmIChtYXAuZ2V0KHRoaXMuYWxnb3JpdGhtVVJJKT09c2lnbmluZ0tleSkgeworICAgIAkgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1hcC5wdXQodGhpcy5hbGdvcml0aG1VUkksc2lnbmluZ0tleSk7CisgICAgICAgIHRoaXMuX3NpZ25hdHVyZUFsZ29yaXRobS5lbmdpbmVJbml0U2lnbihzaWduaW5nS2V5KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQcm94eSBtZXRob2QgZm9yIHtAbGluayBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZSNpbml0U2lnbihqYXZhLnNlY3VyaXR5LlByaXZhdGVLZXksIGphdmEuc2VjdXJpdHkuU2VjdXJlUmFuZG9tKX0KKyAgICAgKiB3aGljaCBpcyBleGVjdXRlZCBvbiB0aGUgaW50ZXJuYWwge0BsaW5rIGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlfSBvYmplY3QuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc2lnbmluZ0tleQorICAgICAqIEBwYXJhbSBzZWN1cmVSYW5kb20KKyAgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGluaXRTaWduKEtleSBzaWduaW5nS2V5LCBTZWN1cmVSYW5kb20gc2VjdXJlUmFuZG9tKQorICAgICAgICAgICB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKyAgICAgICAgaW5pdGlhbGl6ZUFsZ29yaXRobSh0cnVlKTsKKyAgICAgICAgdGhpcy5fc2lnbmF0dXJlQWxnb3JpdGhtLmVuZ2luZUluaXRTaWduKHNpZ25pbmdLZXksIHNlY3VyZVJhbmRvbSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUHJveHkgbWV0aG9kIGZvciB7QGxpbmsgamF2YS5zZWN1cml0eS5TaWduYXR1cmUjaW5pdFNpZ24oamF2YS5zZWN1cml0eS5Qcml2YXRlS2V5KX0KKyAgICAgKiB3aGljaCBpcyBleGVjdXRlZCBvbiB0aGUgaW50ZXJuYWwge0BsaW5rIGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlfSBvYmplY3QuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc2lnbmluZ0tleQorICAgICAqIEBwYXJhbSBhbGdvcml0aG1QYXJhbWV0ZXJTcGVjCisgICAgICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBpbml0U2lnbigKKyAgICAgICAgICAgS2V5IHNpZ25pbmdLZXksIEFsZ29yaXRobVBhcmFtZXRlclNwZWMgYWxnb3JpdGhtUGFyYW1ldGVyU3BlYykKKyAgICAgICAgICAgICAgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisgICAgICAgIGluaXRpYWxpemVBbGdvcml0aG0odHJ1ZSk7CisgICAgICAgIHRoaXMuX3NpZ25hdHVyZUFsZ29yaXRobS5lbmdpbmVJbml0U2lnbihzaWduaW5nS2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsZ29yaXRobVBhcmFtZXRlclNwZWMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFByb3h5IG1ldGhvZCBmb3Ige0BsaW5rIGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlI3NldFBhcmFtZXRlcihqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyl9CisgICAgICogd2hpY2ggaXMgZXhlY3V0ZWQgb24gdGhlIGludGVybmFsIHtAbGluayBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZX0gb2JqZWN0LgorICAgICAqCisgICAgICogQHBhcmFtIHBhcmFtcworICAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0UGFyYW1ldGVyKEFsZ29yaXRobVBhcmFtZXRlclNwZWMgcGFyYW1zKQorICAgICAgICAgICB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKyAgICAgICAgdGhpcy5fc2lnbmF0dXJlQWxnb3JpdGhtLmVuZ2luZVNldFBhcmFtZXRlcihwYXJhbXMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFByb3h5IG1ldGhvZCBmb3Ige0BsaW5rIGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlI2luaXRWZXJpZnkoamF2YS5zZWN1cml0eS5QdWJsaWNLZXkpfQorICAgICAqIHdoaWNoIGlzIGV4ZWN1dGVkIG9uIHRoZSBpbnRlcm5hbCB7QGxpbmsgamF2YS5zZWN1cml0eS5TaWduYXR1cmV9IG9iamVjdC4KKyAgICAgKgorICAgICAqIEBwYXJhbSB2ZXJpZmljYXRpb25LZXkKKyAgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGluaXRWZXJpZnkoS2V5IHZlcmlmaWNhdGlvbktleSkgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisgICAgICAgIGluaXRpYWxpemVBbGdvcml0aG0oZmFsc2UpOworICAgICAgICBNYXAgbWFwPShNYXApa2V5c1ZlcmlmeS5nZXQoKTsKKyAgICAgICAgaWYgKG1hcC5nZXQodGhpcy5hbGdvcml0aG1VUkkpPT12ZXJpZmljYXRpb25LZXkpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtYXAucHV0KHRoaXMuYWxnb3JpdGhtVVJJLHZlcmlmaWNhdGlvbktleSk7CisgICAgICAgIHRoaXMuX3NpZ25hdHVyZUFsZ29yaXRobS5lbmdpbmVJbml0VmVyaWZ5KHZlcmlmaWNhdGlvbktleSk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENsZWFyIHRoZSB2ZXJpZmljYXRpb24gY2FjaGVzIGtleXNWZXJpZnkgYW5kIGluc3RhbmNlc1ZlcmlmeS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjbGVhclZlcmlmaWNhdGlvbkNhY2hlKCkgeworICAgICAgICBNYXAga2V5c01hcCA9IChNYXApa2V5c1ZlcmlmeS5nZXQoKTsKKyAgICAgICAga2V5c01hcC5jbGVhcigpOworICAgICAgICBNYXAgaW5zdGFuY2VzTWFwID0gKE1hcClpbnN0YW5jZXNWZXJpZnkuZ2V0KCk7CisgICAgICAgIGluc3RhbmNlc01hcC5jbGVhcigpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDbGVhciB0aGUgc2lnbmF0dXJlIGNhY2hlcyBrZXlzU2lnbmluZyBhbmQgaW5zdGFuY2VzU2lnbmluZy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjbGVhclNpZ25hdHVyZUNhY2hlKCkgeworICAgICAgICBNYXAga2V5c01hcCA9IChNYXApa2V5c1NpZ25pbmcuZ2V0KCk7CisgICAgICAgIGtleXNNYXAuY2xlYXIoKTsKKyAgICAgICAgTWFwIGluc3RhbmNlc01hcCA9IChNYXApaW5zdGFuY2VzU2lnbmluZy5nZXQoKTsKKyAgICAgICAgaW5zdGFuY2VzTWFwLmNsZWFyKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUHJveHkgbWV0aG9kIGZvciB7QGxpbmsgamF2YS5zZWN1cml0eS5TaWduYXR1cmUjdmVyaWZ5KGJ5dGVbXSl9CisgICAgICogd2hpY2ggaXMgZXhlY3V0ZWQgb24gdGhlIGludGVybmFsIHtAbGluayBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZX0gb2JqZWN0LgorICAgICAqCisgICAgICogQHBhcmFtIHNpZ25hdHVyZQorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiBpZiB0aGUgc2lnbmF0dXJlIGlzIHZhbGlkLgorICAgICAqIAorICAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gdmVyaWZ5KGJ5dGVbXSBzaWduYXR1cmUpIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworICAgICAgICByZXR1cm4gdGhpcy5fc2lnbmF0dXJlQWxnb3JpdGhtLmVuZ2luZVZlcmlmeShzaWduYXR1cmUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIFVSSSByZXByZXNlbnRhdGlvbiBvZiBUcmFuc2Zvcm1hdGlvbiBhbGdvcml0aG0KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIFVSSSByZXByZXNlbnRhdGlvbiBvZiBUcmFuc2Zvcm1hdGlvbiBhbGdvcml0aG0KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFVSSSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0QXR0cmlidXRlTlMobnVsbCwKKyAgICAgICAgICAgICAgQ29uc3RhbnRzLl9BVFRfQUxHT1JJVEhNKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbml0YWxpemVzIGZvciB0aGlzIHtAbGluayBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybX0KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgcHJvdmlkZXJJbml0KCkgeworICAgICAgICBpZiAoU2lnbmF0dXJlQWxnb3JpdGhtLmxvZyA9PSBudWxsKSB7CisgICAgICAgICAgICBTaWduYXR1cmVBbGdvcml0aG0ubG9nID0KKyAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5CisgICAgICAgICAgICAgICAgICAgIC5nZXRMb2coU2lnbmF0dXJlQWxnb3JpdGhtLmNsYXNzLmdldE5hbWUoKSk7CisgICAgICAgIH0KKworICAgICAgICBsb2cuZGVidWcoIkluaXQoKSBjYWxsZWQiKTsKKworICAgICAgICBpZiAoIVNpZ25hdHVyZUFsZ29yaXRobS5fYWxyZWFkeUluaXRpYWxpemVkKSB7CisgICAgICAgICAgICBTaWduYXR1cmVBbGdvcml0aG0uX2FsZ29yaXRobUhhc2ggPSBuZXcgSGFzaE1hcCgxMCk7CisgICAgICAgICAgICBTaWduYXR1cmVBbGdvcml0aG0uX2FscmVhZHlJbml0aWFsaXplZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWdpc3RlcnMgaW1wbGVtZW50aW5nIGNsYXNzIG9mIHRoZSBUcmFuc2Zvcm0gYWxnb3JpdGhtIHdpdGggYWxnb3JpdGhtVVJJCisgICAgICoKKyAgICAgKiBAcGFyYW0gYWxnb3JpdGhtVVJJIGFsZ29yaXRobVVSSSBVUkkgcmVwcmVzZW50YXRpb24gb2YgPGNvZGU+VHJhbnNmb3JtIGFsZ29yaXRobTwvY29kZT4uCisgICAgICogQHBhcmFtIGltcGxlbWVudGluZ0NsYXNzIDxjb2RlPmltcGxlbWVudGluZ0NsYXNzPC9jb2RlPiB0aGUgaW1wbGVtZW50aW5nIGNsYXNzIG9mIHtAbGluayBTaWduYXR1cmVBbGdvcml0aG1TcGl9CisgICAgICogQHRocm93cyBBbGdvcml0aG1BbHJlYWR5UmVnaXN0ZXJlZEV4Y2VwdGlvbiBpZiBzcGVjaWZpZWQgYWxnb3JpdGhtVVJJIGlzIGFscmVhZHkgcmVnaXN0ZXJlZAorICAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCByZWdpc3RlcihTdHJpbmcgYWxnb3JpdGhtVVJJLCBTdHJpbmcgaW1wbGVtZW50aW5nQ2xhc3MpCisgICAgICAgICAgIHRocm93cyBBbGdvcml0aG1BbHJlYWR5UmVnaXN0ZXJlZEV4Y2VwdGlvbixYTUxTaWduYXR1cmVFeGNlcHRpb24geworCisgICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkKKyAgICAgICAJICAgIGxvZy5kZWJ1ZygiVHJ5IHRvIHJlZ2lzdGVyICIgKyBhbGdvcml0aG1VUkkgKyAiICIgKyBpbXBsZW1lbnRpbmdDbGFzcyk7CisKKyAgICAgICAgLy8gYXJlIHdlIGFscmVhZHkgcmVnaXN0ZXJlZD8KKyAgICAgICAgQ2xhc3MgcmVnaXN0ZXJlZENsYXNzQ2xhc3MgPQorICAgICAgICAgICAgU2lnbmF0dXJlQWxnb3JpdGhtLmdldEltcGxlbWVudGluZ0NsYXNzKGFsZ29yaXRobVVSSSk7CisgICAgICAgIGlmIChyZWdpc3RlcmVkQ2xhc3NDbGFzcyE9bnVsbCkgeworICAgICAgICAgICAgU3RyaW5nIHJlZ2lzdGVyZWRDbGFzcyA9IHJlZ2lzdGVyZWRDbGFzc0NsYXNzLmdldE5hbWUoKTsKKworCSAgICBpZiAoKHJlZ2lzdGVyZWRDbGFzcyAhPSBudWxsKSAmJiAocmVnaXN0ZXJlZENsYXNzLmxlbmd0aCgpICE9IDApKSB7CisJICAgICAgICBPYmplY3QgZXhBcmdzW10gPSB7IGFsZ29yaXRobVVSSSwgcmVnaXN0ZXJlZENsYXNzIH07CisKKwkgICAgICAgIHRocm93IG5ldyBBbGdvcml0aG1BbHJlYWR5UmVnaXN0ZXJlZEV4Y2VwdGlvbigKKwkgICAgICAgICAgICAiYWxnb3JpdGhtLmFscmVhZHlSZWdpc3RlcmVkIiwgZXhBcmdzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB0cnkgewkgICAgICAgICAJICAgCQkJIAorICAgICAgICAgICAgU2lnbmF0dXJlQWxnb3JpdGhtLl9hbGdvcml0aG1IYXNoLnB1dAorICAgICAgICAgICAgICAgIChhbGdvcml0aG1VUkksIENsYXNzLmZvck5hbWUoaW1wbGVtZW50aW5nQ2xhc3MpKTsKKyAgICAgICAgfSBjYXRjaCAoQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyBhbGdvcml0aG1VUkksIGV4LmdldE1lc3NhZ2UoKSB9OworCSAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgICAgICAgICAgICAgKCJhbGdvcml0aG1zLk5vU3VjaEFsZ29yaXRobSIsIGV4QXJncywgZXgpOworICAgICAgICB9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyBhbGdvcml0aG1VUkksIGV4LmdldE1lc3NhZ2UoKSB9OworCSAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgICAgICAgICAgICAgKCJhbGdvcml0aG1zLk5vU3VjaEFsZ29yaXRobSIsIGV4QXJncywgZXgpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogTWV0aG9kIGdldEltcGxlbWVudGluZ0NsYXNzCisgICAgICoKKyAgICAgKiBAcGFyYW0gVVJJCisgICAgICogQHJldHVybiB0aGUgY2xhc3MgdGhhdCBpbXBsZW1lbnRzIHRoZSBVUkkKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBDbGFzcyBnZXRJbXBsZW1lbnRpbmdDbGFzcyhTdHJpbmcgVVJJKSB7CisgICAgICAgIGlmIChTaWduYXR1cmVBbGdvcml0aG0uX2FsZ29yaXRobUhhc2ggPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gKENsYXNzKSBTaWduYXR1cmVBbGdvcml0aG0uX2FsZ29yaXRobUhhc2guZ2V0KFVSSSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogTWV0aG9kIGdldEJhc2VOYW1lc3BhY2UKKyAgICAgKgorICAgICAqIEByZXR1cm4gVVJJIG9mIHRoaXMgZWxlbWVudAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0QmFzZU5hbWVzcGFjZSgpIHsKKyAgICAgICAgcmV0dXJuIENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlM7CisgICAgfQorCisgICAgLyoqCisgICAgICogTWV0aG9kIGdldEJhc2VMb2NhbE5hbWUKKyAgICAgKgorICAgICAqIEByZXR1cm4gTG9jYWwgbmFtZQorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0QmFzZUxvY2FsTmFtZSgpIHsKKyAgICAgICAgcmV0dXJuIENvbnN0YW50cy5fVEFHX1NJR05BVFVSRU1FVEhPRDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYWxnb3JpdGhtcy9TaWduYXR1cmVBbGdvcml0aG1TcGkuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9hbGdvcml0aG1zL1NpZ25hdHVyZUFsZ29yaXRobVNwaS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4YjA4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYWxnb3JpdGhtcy9TaWduYXR1cmVBbGdvcml0aG1TcGkuamF2YQpAQCAtMCwwICsxLDE3OSBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYWxnb3JpdGhtczsKKworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuU2VjdXJlUmFuZG9tOworaW1wb3J0IGphdmEuc2VjdXJpdHkuc3BlYy5BbGdvcml0aG1QYXJhbWV0ZXJTcGVjOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworCisKKy8qKgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIFNpZ25hdHVyZUFsZ29yaXRobVNwaSB7CisKKyAgIC8qKgorICAgICogUmV0dXJucyB0aGUgVVJJIHJlcHJlc2VudGF0aW9uIG9mIDxjb2RlPlRyYW5zZm9ybWF0aW9uIGFsZ29yaXRobTwvY29kZT4KKyAgICAqCisgICAgKiBAcmV0dXJuIHRoZSBVUkkgcmVwcmVzZW50YXRpb24gb2YgPGNvZGU+VHJhbnNmb3JtYXRpb24gYWxnb3JpdGhtPC9jb2RlPgorICAgICovCisgICBwcm90ZWN0ZWQgYWJzdHJhY3QgU3RyaW5nIGVuZ2luZUdldFVSSSgpOworCisgICAvKioKKyAgICAqIFByb3h5IG1ldGhvZCBmb3Ige0BsaW5rIGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlI2dldEFsZ29yaXRobX0KKyAgICAqIHdoaWNoIGlzIGV4ZWN1dGVkIG9uIHRoZSBpbnRlcm5hbCB7QGxpbmsgamF2YS5zZWN1cml0eS5TaWduYXR1cmV9IG9iamVjdC4KKyAgICAqCisgICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIHtAbGluayBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZSNnZXRBbGdvcml0aG19IG1ldGhvZAorICAgICovCisgICBwcm90ZWN0ZWQgYWJzdHJhY3QgU3RyaW5nIGVuZ2luZUdldEpDRUFsZ29yaXRobVN0cmluZygpOworCisgICAvKioKKyAgICAqIE1ldGhvZCBlbmdpbmVHZXRKQ0VQcm92aWRlck5hbWUKKyAgICAqCisgICAgKiBAcmV0dXJuIHRoZSBKQ0UgUHJvdmlkZXJOYW1lCisgICAgKi8KKyAgIHByb3RlY3RlZCBhYnN0cmFjdCBTdHJpbmcgZW5naW5lR2V0SkNFUHJvdmlkZXJOYW1lKCk7CisKKyAgIC8qKgorICAgICogUHJveHkgbWV0aG9kIGZvciB7QGxpbmsgamF2YS5zZWN1cml0eS5TaWduYXR1cmUjdXBkYXRlKGJ5dGVbXSl9CisgICAgKiB3aGljaCBpcyBleGVjdXRlZCBvbiB0aGUgaW50ZXJuYWwge0BsaW5rIGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlfSBvYmplY3QuCisgICAgKgorICAgICogQHBhcmFtIGlucHV0CisgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICovCisgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgdm9pZCBlbmdpbmVVcGRhdGUoYnl0ZVtdIGlucHV0KQorICAgICAgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbjsKKworICAgLyoqCisgICAgKiBQcm94eSBtZXRob2QgZm9yIHtAbGluayBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZSN1cGRhdGUoYnl0ZVtdKX0KKyAgICAqIHdoaWNoIGlzIGV4ZWN1dGVkIG9uIHRoZSBpbnRlcm5hbCB7QGxpbmsgamF2YS5zZWN1cml0eS5TaWduYXR1cmV9IG9iamVjdC4KKyAgICAqCisgICAgKiBAcGFyYW0gaW5wdXQKKyAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgKi8KKyAgIHByb3RlY3RlZCBhYnN0cmFjdCB2b2lkIGVuZ2luZVVwZGF0ZShieXRlIGlucHV0KQorICAgICAgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbjsKKworICAgLyoqCisgICAgKiBQcm94eSBtZXRob2QgZm9yIHtAbGluayBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZSN1cGRhdGUoYnl0ZVtdLCBpbnQsIGludCl9CisgICAgKiB3aGljaCBpcyBleGVjdXRlZCBvbiB0aGUgaW50ZXJuYWwge0BsaW5rIGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlfSBvYmplY3QuCisgICAgKgorICAgICogQHBhcmFtIGJ1ZgorICAgICogQHBhcmFtIG9mZnNldAorICAgICogQHBhcmFtIGxlbgorICAgICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAqLworICAgcHJvdGVjdGVkIGFic3RyYWN0IHZvaWQgZW5naW5lVXBkYXRlKGJ5dGUgYnVmW10sIGludCBvZmZzZXQsIGludCBsZW4pCisgICAgICB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uOworCisgICAvKioKKyAgICAqIFByb3h5IG1ldGhvZCBmb3Ige0BsaW5rIGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlI2luaXRTaWduKGphdmEuc2VjdXJpdHkuUHJpdmF0ZUtleSl9CisgICAgKiB3aGljaCBpcyBleGVjdXRlZCBvbiB0aGUgaW50ZXJuYWwge0BsaW5rIGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlfSBvYmplY3QuCisgICAgKgorICAgICogQHBhcmFtIHNpZ25pbmdLZXkKKyAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIGlmIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiBhIE1BQworICAgICovCisgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgdm9pZCBlbmdpbmVJbml0U2lnbihLZXkgc2lnbmluZ0tleSkKKyAgICAgIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb247CisKKyAgIC8qKgorICAgICogUHJveHkgbWV0aG9kIGZvciB7QGxpbmsgamF2YS5zZWN1cml0eS5TaWduYXR1cmUjaW5pdFNpZ24oamF2YS5zZWN1cml0eS5Qcml2YXRlS2V5LCBqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSl9CisgICAgKiB3aGljaCBpcyBleGVjdXRlZCBvbiB0aGUgaW50ZXJuYWwge0BsaW5rIGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlfSBvYmplY3QuCisgICAgKgorICAgICogQHBhcmFtIHNpZ25pbmdLZXkKKyAgICAqIEBwYXJhbSBzZWN1cmVSYW5kb20KKyAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIGlmIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiBhIE1BQworICAgICovCisgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgdm9pZCBlbmdpbmVJbml0U2lnbigKKyAgICAgIEtleSBzaWduaW5nS2V5LCBTZWN1cmVSYW5kb20gc2VjdXJlUmFuZG9tKSB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uOworCisgICAvKioKKyAgICAqIFByb3h5IG1ldGhvZCBmb3Ige0BsaW5rIGphdmF4LmNyeXB0by5NYWN9CisgICAgKiB3aGljaCBpcyBleGVjdXRlZCBvbiB0aGUgaW50ZXJuYWwge0BsaW5rIGphdmF4LmNyeXB0by5NYWMjaW5pdChLZXkpfSBvYmplY3QuCisgICAgKgorICAgICogQHBhcmFtIHNpZ25pbmdLZXkKKyAgICAqIEBwYXJhbSBhbGdvcml0aG1QYXJhbWV0ZXJTcGVjCisgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiBpZiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gYSBTaWduYXR1cmUKKyAgICAqLworICAgcHJvdGVjdGVkIGFic3RyYWN0IHZvaWQgZW5naW5lSW5pdFNpZ24oCisgICAgICBLZXkgc2lnbmluZ0tleSwgQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyBhbGdvcml0aG1QYXJhbWV0ZXJTcGVjKQorICAgICAgICAgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbjsKKworICAgLyoqCisgICAgKiBQcm94eSBtZXRob2QgZm9yIHtAbGluayBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZSNzaWduKCl9CisgICAgKiB3aGljaCBpcyBleGVjdXRlZCBvbiB0aGUgaW50ZXJuYWwge0BsaW5rIGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlfSBvYmplY3QuCisgICAgKgorICAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSB7QGxpbmsgamF2YS5zZWN1cml0eS5TaWduYXR1cmUjc2lnbigpfSBtZXRob2QKKyAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgKi8KKyAgIHByb3RlY3RlZCBhYnN0cmFjdCBieXRlW10gZW5naW5lU2lnbigpIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb247CisKKyAgIC8qKgorICAgICogTWV0aG9kIGVuZ2luZUluaXRWZXJpZnkKKyAgICAqCisgICAgKiBAcGFyYW0gdmVyaWZpY2F0aW9uS2V5CisgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICovCisgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgdm9pZCBlbmdpbmVJbml0VmVyaWZ5KEtleSB2ZXJpZmljYXRpb25LZXkpCisgICAgICB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uOworCisgICAvKioKKyAgICAqIFByb3h5IG1ldGhvZCBmb3Ige0BsaW5rIGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlI3ZlcmlmeShieXRlW10pfQorICAgICogd2hpY2ggaXMgZXhlY3V0ZWQgb24gdGhlIGludGVybmFsIHtAbGluayBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZX0gb2JqZWN0LgorICAgICoKKyAgICAqIEBwYXJhbSBzaWduYXR1cmUKKyAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgc2lnbmF0dXJlIGlzIGNvcnJlY3QKKyAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgKi8KKyAgIHByb3RlY3RlZCBhYnN0cmFjdCBib29sZWFuIGVuZ2luZVZlcmlmeShieXRlW10gc2lnbmF0dXJlKQorICAgICAgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbjsKKworICAgLyoqCisgICAgKiBQcm94eSBtZXRob2QgZm9yIHtAbGluayBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZSNzZXRQYXJhbWV0ZXIoamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMpfQorICAgICogd2hpY2ggaXMgZXhlY3V0ZWQgb24gdGhlIGludGVybmFsIHtAbGluayBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZX0gb2JqZWN0LgorICAgICoKKyAgICAqIEBwYXJhbSBwYXJhbXMKKyAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgKi8KKyAgIHByb3RlY3RlZCBhYnN0cmFjdCB2b2lkIGVuZ2luZVNldFBhcmFtZXRlcihBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIHBhcmFtcykKKyAgICAgIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb247CisKKyAgIAorICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lR2V0Q29udGV4dEZyb21FbGVtZW50CisgICAgKgorICAgICogQHBhcmFtIGVsZW1lbnQKKyAgICAqLworICAgcHJvdGVjdGVkIHZvaWQgZW5naW5lR2V0Q29udGV4dEZyb21FbGVtZW50KEVsZW1lbnQgZWxlbWVudCkgeworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBlbmdpbmVTZXRITUFDT3V0cHV0TGVuZ3RoCisgICAgKgorICAgICogQHBhcmFtIEhNQUNPdXRwdXRMZW5ndGgKKyAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgKi8KKyAgIHByb3RlY3RlZCBhYnN0cmFjdCB2b2lkIGVuZ2luZVNldEhNQUNPdXRwdXRMZW5ndGgoaW50IEhNQUNPdXRwdXRMZW5ndGgpCisgICAgICB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uOworCisgICAgcHVibGljIHZvaWQgcmVzZXQoKSB7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2FsZ29yaXRobXMvaW1wbGVtZW50YXRpb25zL0ludGVncml0eUhtYWMuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9hbGdvcml0aG1zL2ltcGxlbWVudGF0aW9ucy9JbnRlZ3JpdHlIbWFjLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZhMWFhZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9hbGdvcml0aG1zL2ltcGxlbWVudGF0aW9ucy9JbnRlZ3JpdHlIbWFjLmphdmEKQEAgLTAsMCArMSw2MDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMTk5OS0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYWxnb3JpdGhtcy5pbXBsZW1lbnRhdGlvbnM7CisKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb247CitpbXBvcnQgamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuU2VjdXJlUmFuZG9tOworaW1wb3J0IGphdmEuc2VjdXJpdHkuc3BlYy5BbGdvcml0aG1QYXJhbWV0ZXJTcGVjOworCitpbXBvcnQgamF2YXguY3J5cHRvLk1hYzsKK2ltcG9ydCBqYXZheC5jcnlwdG8uU2VjcmV0S2V5OworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYWxnb3JpdGhtcy5KQ0VNYXBwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYWxnb3JpdGhtcy5NZXNzYWdlRGlnZXN0QWxnb3JpdGhtOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmFsZ29yaXRobXMuU2lnbmF0dXJlQWxnb3JpdGhtU3BpOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmU7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5UZXh0OworCisvKioKKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBJbnRlZ3JpdHlIbWFjIGV4dGVuZHMgU2lnbmF0dXJlQWxnb3JpdGhtU3BpIHsKKyAgICAKKyAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZyhJbnRlZ3JpdHlIbWFjU0hBMS5jbGFzcy5nZXROYW1lKCkpOworCisgICAvKioKKyAgICAqIE1ldGhvZCBlbmdpbmVHZXRVUkkKKyAgICAqCisgICAgKkBpbmhlcml0RG9jCisgICAgKi8KKyAgIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmcgZW5naW5lR2V0VVJJKCk7CisKKyAgIC8qKgorICAgICogUmV0dXJucyB0aGUgb3V0cHV0IGxlbmd0aCBvZiB0aGUgaGFzaC9kaWdlc3QuCisgICAgKi8KKyAgIGFic3RyYWN0IGludCBnZXREaWdlc3RMZW5ndGgoKTsKKworICAgLyoqIEZpZWxkIF9tYWNBbGdvcml0aG0gKi8KKyAgIHByaXZhdGUgTWFjIF9tYWNBbGdvcml0aG0gPSBudWxsOworCisgICAvKiogRmllbGQgX0hNQUNPdXRwdXRMZW5ndGggKi8KKyAgIGludCBfSE1BQ091dHB1dExlbmd0aCA9IDA7CisgICBwcml2YXRlIGJvb2xlYW4gX0hNQUNPdXRwdXRMZW5ndGhTZXQgPSBmYWxzZTsKKworICAgLyoqCisgICAgKiBNZXRob2QgSW50ZWdyaXR5SG1hY1NIQTFkYXMKKyAgICAqCisgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgSW50ZWdyaXR5SG1hYygpIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgYWxnb3JpdGhtSUQgPSBKQ0VNYXBwZXIudHJhbnNsYXRlVVJJdG9KQ0VJRCh0aGlzLmVuZ2luZUdldFVSSSgpKTsKKyAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkKKyAgICAgIAlsb2cuZGVidWcoIkNyZWF0ZWQgSW50ZWdyaXR5SG1hY1NIQTEgdXNpbmcgIiArIGFsZ29yaXRobUlEKTsKKworICAgICAgdHJ5IHsKKyAgICAgICAgIHRoaXMuX21hY0FsZ29yaXRobSA9IE1hYy5nZXRJbnN0YW5jZShhbGdvcml0aG1JRCk7CisgICAgICB9IGNhdGNoIChqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgT2JqZWN0W10gZXhBcmdzID0geyBhbGdvcml0aG1JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXguZ2V0TG9jYWxpemVkTWVzc2FnZSgpIH07CisKKyAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImFsZ29yaXRobXMuTm9TdWNoQWxnb3JpdGhtIiwgZXhBcmdzKTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBQcm94eSBtZXRob2QgZm9yIHtAbGluayBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZSNzZXRQYXJhbWV0ZXIoamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMpfQorICAgICogd2hpY2ggaXMgZXhlY3V0ZWQgb24gdGhlIGludGVybmFsIHtAbGluayBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZX0gb2JqZWN0LgorICAgICoKKyAgICAqIEBwYXJhbSBwYXJhbXMKKyAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgKi8KKyAgIHByb3RlY3RlZCB2b2lkIGVuZ2luZVNldFBhcmFtZXRlcihBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIHBhcmFtcykKKyAgICAgICAgICAgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisgICAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJlbXB0eSIpOworICAgfQorCisgICBwdWJsaWMgdm9pZCByZXNldCgpIHsKKyAgICAgICBfSE1BQ091dHB1dExlbmd0aD0wOworICAgICAgIF9ITUFDT3V0cHV0TGVuZ3RoU2V0ID0gZmFsc2U7CisgICAgICAgdGhpcy5fbWFjQWxnb3JpdGhtLnJlc2V0KCk7CisgICB9CisKKyAgIC8qKgorICAgICogUHJveHkgbWV0aG9kIGZvciB7QGxpbmsgamF2YS5zZWN1cml0eS5TaWduYXR1cmUjdmVyaWZ5KGJ5dGVbXSl9CisgICAgKiB3aGljaCBpcyBleGVjdXRlZCBvbiB0aGUgaW50ZXJuYWwge0BsaW5rIGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlfSBvYmplY3QuCisgICAgKgorICAgICogQHBhcmFtIHNpZ25hdHVyZQorICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBzaWduYXR1cmUgaXMgY29ycmVjdAorICAgICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAqLworICAgcHJvdGVjdGVkIGJvb2xlYW4gZW5naW5lVmVyaWZ5KGJ5dGVbXSBzaWduYXR1cmUpCisgICAgICAgICAgIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworCisgICAgICB0cnkgeworICAgICAgICAgaWYgKHRoaXMuX0hNQUNPdXRwdXRMZW5ndGhTZXQgJiYgdGhpcy5fSE1BQ091dHB1dExlbmd0aCA8IGdldERpZ2VzdExlbmd0aCgpKQoreworICAgICAgICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKSB7CisgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCJITUFDT3V0cHV0TGVuZ3RoIG11c3Qgbm90IGJlIGxlc3MgdGhhbiAiICsgZ2V0RGlnZXN0TGVuZ3RoKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgT2JqZWN0W10gZXhBcmdzID0geyBTdHJpbmcudmFsdWVPZihnZXREaWdlc3RMZW5ndGgoKSkgfTsKKyAgICAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAgICAgICAgICAgICAoImFsZ29yaXRobXMuSE1BQ091dHB1dExlbmd0aE1pbiIsIGV4QXJncyk7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYnl0ZVtdIGNvbXBsZXRlUmVzdWx0ID0gdGhpcy5fbWFjQWxnb3JpdGhtLmRvRmluYWwoKTsKKyAgICAgICAgICAgIHJldHVybiBNZXNzYWdlRGlnZXN0QWxnb3JpdGhtLmlzRXF1YWwoY29tcGxldGVSZXN1bHQsIHNpZ25hdHVyZSk7CisgICAgICAgICB9CisgICAgICB9IGNhdGNoIChJbGxlZ2FsU3RhdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIFByb3h5IG1ldGhvZCBmb3Ige0BsaW5rIGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlI2luaXRWZXJpZnkoamF2YS5zZWN1cml0eS5QdWJsaWNLZXkpfQorICAgICogd2hpY2ggaXMgZXhlY3V0ZWQgb24gdGhlIGludGVybmFsIHtAbGluayBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZX0gb2JqZWN0LgorICAgICoKKyAgICAqIEBwYXJhbSBzZWNyZXRLZXkKKyAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgKi8KKyAgIHByb3RlY3RlZCB2b2lkIGVuZ2luZUluaXRWZXJpZnkoS2V5IHNlY3JldEtleSkgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisKKyAgICAgIGlmICghKHNlY3JldEtleSBpbnN0YW5jZW9mIFNlY3JldEtleSkpIHsKKyAgICAgICAgIFN0cmluZyBzdXBwbGllZCA9IHNlY3JldEtleS5nZXRDbGFzcygpLmdldE5hbWUoKTsKKyAgICAgICAgIFN0cmluZyBuZWVkZWQgPSBTZWNyZXRLZXkuY2xhc3MuZ2V0TmFtZSgpOworICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyBzdXBwbGllZCwgbmVlZGVkIH07CisKKyAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImFsZ29yaXRobXMuV3JvbmdLZXlGb3JUaGlzT3BlcmF0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhBcmdzKTsKKyAgICAgIH0KKworICAgICAgdHJ5IHsKKyAgICAgICAgIHRoaXMuX21hY0FsZ29yaXRobS5pbml0KHNlY3JldEtleSk7CisgICAgICB9IGNhdGNoIChJbnZhbGlkS2V5RXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAvLyByZWluc3RhbnRpYXRlIE1hYyBvYmplY3QgdG8gd29yayBhcm91bmQgYnVnIGluIEpESworICAgICAgICAgICAgLy8gc2VlOiBodHRwOi8vYnVncy5zdW4uY29tL3ZpZXdfYnVnLmRvP2J1Z19pZD00OTUzNTU1CisgICAgICAgICAgICBNYWMgbWFjID0gdGhpcy5fbWFjQWxnb3JpdGhtOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB0aGlzLl9tYWNBbGdvcml0aG0gPSBNYWMuZ2V0SW5zdGFuY2UKKyAgICAgICAgICAgICAgICAgICAgKF9tYWNBbGdvcml0aG0uZ2V0QWxnb3JpdGhtKCkpOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAvLyB0aGlzIHNob3VsZG4ndCBvY2N1ciwgYnV0IGlmIGl0IGRvZXMsIHJlc3RvcmUgcHJldmlvdXMgTWFjCisgICAgICAgICAgICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygiRXhjZXB0aW9uIHdoZW4gcmVpbnN0YW50aWF0aW5nIE1hYzoiICsgZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRoaXMuX21hY0FsZ29yaXRobSA9IG1hYzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIFByb3h5IG1ldGhvZCBmb3Ige0BsaW5rIGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlI3NpZ24oKX0KKyAgICAqIHdoaWNoIGlzIGV4ZWN1dGVkIG9uIHRoZSBpbnRlcm5hbCB7QGxpbmsgamF2YS5zZWN1cml0eS5TaWduYXR1cmV9IG9iamVjdC4KKyAgICAqCisgICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIHtAbGluayBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZSNzaWduKCl9IG1ldGhvZAorICAgICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAqLworICAgcHJvdGVjdGVkIGJ5dGVbXSBlbmdpbmVTaWduKCkgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisKKyAgICAgIHRyeSB7CisgICAgICAgICBpZiAodGhpcy5fSE1BQ091dHB1dExlbmd0aFNldCAmJiB0aGlzLl9ITUFDT3V0cHV0TGVuZ3RoIDwgZ2V0RGlnZXN0TGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkgeworICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygiSE1BQ091dHB1dExlbmd0aCBtdXN0IG5vdCBiZSBsZXNzIHRoYW4gIiArIGdldERpZ2VzdExlbmd0aCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIE9iamVjdFtdIGV4QXJncyA9IHsgU3RyaW5nLnZhbHVlT2YoZ2V0RGlnZXN0TGVuZ3RoKCkpIH07CisgICAgICAgICAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgICAgICAgICAgICAgKCJhbGdvcml0aG1zLkhNQUNPdXRwdXRMZW5ndGhNaW4iLCBleEFyZ3MpOworICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9tYWNBbGdvcml0aG0uZG9GaW5hbCgpOworICAgICAgICAgfQorICAgICAgfSBjYXRjaCAoSWxsZWdhbFN0YXRlRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgcmVkdWNlQml0TGVuZ3RoCisgICAgKgorICAgICogQHBhcmFtIGNvbXBsZXRlUmVzdWx0CisgICAgKiBAcmV0dXJuIHRoZSByZWR1Y2VkIGJpdHMuCisgICAgKiBAcGFyYW0gbGVuZ3RoCisgICAgKgorICAgICovCisgICBwcml2YXRlIHN0YXRpYyBieXRlW10gcmVkdWNlQml0TGVuZ3RoKGJ5dGUgY29tcGxldGVSZXN1bHRbXSwgaW50IGxlbmd0aCkgeworCisgICAgICBpbnQgYnl0ZXMgPSBsZW5ndGggLyA4OworICAgICAgaW50IGFiaXRzID0gbGVuZ3RoICUgODsKKyAgICAgIGJ5dGVbXSBzdHJpcHBlZFJlc3VsdCA9IG5ldyBieXRlW2J5dGVzICsgKChhYml0cyA9PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDEpXTsKKworICAgICAgU3lzdGVtLmFycmF5Y29weShjb21wbGV0ZVJlc3VsdCwgMCwgc3RyaXBwZWRSZXN1bHQsIDAsIGJ5dGVzKTsKKworICAgICAgaWYgKGFiaXRzID4gMCkgeworICAgICAgICAgYnl0ZVtdIE1BU0sgPSB7IChieXRlKSAweDAwLCAoYnl0ZSkgMHg4MCwgKGJ5dGUpIDB4QzAsIChieXRlKSAweEUwLAorICAgICAgICAgICAgICAgICAgICAgICAgIChieXRlKSAweEYwLCAoYnl0ZSkgMHhGOCwgKGJ5dGUpIDB4RkMsIChieXRlKSAweEZFIH07CisKKyAgICAgICAgIHN0cmlwcGVkUmVzdWx0W2J5dGVzXSA9IChieXRlKSAoY29tcGxldGVSZXN1bHRbYnl0ZXNdICYgTUFTS1thYml0c10pOworICAgICAgfQorCisgICAgICByZXR1cm4gc3RyaXBwZWRSZXN1bHQ7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGVuZ2luZUluaXRTaWduCisgICAgKgorICAgICogQHBhcmFtIHNlY3JldEtleQorICAgICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAqLworICAgcHJvdGVjdGVkIHZvaWQgZW5naW5lSW5pdFNpZ24oS2V5IHNlY3JldEtleSkgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisKKyAgICAgIGlmICghKHNlY3JldEtleSBpbnN0YW5jZW9mIFNlY3JldEtleSkpIHsKKyAgICAgICAgIFN0cmluZyBzdXBwbGllZCA9IHNlY3JldEtleS5nZXRDbGFzcygpLmdldE5hbWUoKTsKKyAgICAgICAgIFN0cmluZyBuZWVkZWQgPSBTZWNyZXRLZXkuY2xhc3MuZ2V0TmFtZSgpOworICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyBzdXBwbGllZCwgbmVlZGVkIH07CisKKyAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImFsZ29yaXRobXMuV3JvbmdLZXlGb3JUaGlzT3BlcmF0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhBcmdzKTsKKyAgICAgIH0KKworICAgICAgdHJ5IHsKKyAgICAgICAgIHRoaXMuX21hY0FsZ29yaXRobS5pbml0KHNlY3JldEtleSk7CisgICAgICB9IGNhdGNoIChJbnZhbGlkS2V5RXhjZXB0aW9uIGV4KSB7CisgICAgICAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lSW5pdFNpZ24KKyAgICAqCisgICAgKiBAcGFyYW0gc2VjcmV0S2V5CisgICAgKiBAcGFyYW0gYWxnb3JpdGhtUGFyYW1ldGVyU3BlYworICAgICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAqLworICAgcHJvdGVjdGVkIHZvaWQgZW5naW5lSW5pdFNpZ24oCisgICAgICAgICAgIEtleSBzZWNyZXRLZXksIEFsZ29yaXRobVBhcmFtZXRlclNwZWMgYWxnb3JpdGhtUGFyYW1ldGVyU3BlYykKKyAgICAgICAgICAgICAgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisKKyAgICAgIGlmICghKHNlY3JldEtleSBpbnN0YW5jZW9mIFNlY3JldEtleSkpIHsKKyAgICAgICAgIFN0cmluZyBzdXBwbGllZCA9IHNlY3JldEtleS5nZXRDbGFzcygpLmdldE5hbWUoKTsKKyAgICAgICAgIFN0cmluZyBuZWVkZWQgPSBTZWNyZXRLZXkuY2xhc3MuZ2V0TmFtZSgpOworICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyBzdXBwbGllZCwgbmVlZGVkIH07CisKKyAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImFsZ29yaXRobXMuV3JvbmdLZXlGb3JUaGlzT3BlcmF0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhBcmdzKTsKKyAgICAgIH0KKworICAgICAgdHJ5IHsKKyAgICAgICAgIHRoaXMuX21hY0FsZ29yaXRobS5pbml0KHNlY3JldEtleSwgYWxnb3JpdGhtUGFyYW1ldGVyU3BlYyk7CisgICAgICB9IGNhdGNoIChJbnZhbGlkS2V5RXhjZXB0aW9uIGV4KSB7CisgICAgICAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgIH0gY2F0Y2ggKEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBlbmdpbmVJbml0U2lnbgorICAgICoKKyAgICAqIEBwYXJhbSBzZWNyZXRLZXkKKyAgICAqIEBwYXJhbSBzZWN1cmVSYW5kb20KKyAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgKi8KKyAgIHByb3RlY3RlZCB2b2lkIGVuZ2luZUluaXRTaWduKEtleSBzZWNyZXRLZXksIFNlY3VyZVJhbmRvbSBzZWN1cmVSYW5kb20pCisgICAgICAgICAgIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiYWxnb3JpdGhtcy5DYW5ub3RVc2VTZWN1cmVSYW5kb21Pbk1BQyIpOworICAgfQorCisgICAvKioKKyAgICAqIFByb3h5IG1ldGhvZCBmb3Ige0BsaW5rIGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlI3VwZGF0ZShieXRlW10pfQorICAgICogd2hpY2ggaXMgZXhlY3V0ZWQgb24gdGhlIGludGVybmFsIHtAbGluayBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZX0gb2JqZWN0LgorICAgICoKKyAgICAqIEBwYXJhbSBpbnB1dAorICAgICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAqLworICAgcHJvdGVjdGVkIHZvaWQgZW5naW5lVXBkYXRlKGJ5dGVbXSBpbnB1dCkgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisKKyAgICAgIHRyeSB7CisgICAgICAgICB0aGlzLl9tYWNBbGdvcml0aG0udXBkYXRlKGlucHV0KTsKKyAgICAgIH0gY2F0Y2ggKElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICB9CisgICB9CisKKyAgIC8qKgorICAgICogUHJveHkgbWV0aG9kIGZvciB7QGxpbmsgamF2YS5zZWN1cml0eS5TaWduYXR1cmUjdXBkYXRlKGJ5dGUpfQorICAgICogd2hpY2ggaXMgZXhlY3V0ZWQgb24gdGhlIGludGVybmFsIHtAbGluayBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZX0gb2JqZWN0LgorICAgICoKKyAgICAqIEBwYXJhbSBpbnB1dAorICAgICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAqLworICAgcHJvdGVjdGVkIHZvaWQgZW5naW5lVXBkYXRlKGJ5dGUgaW5wdXQpIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworCisgICAgICB0cnkgeworICAgICAgICAgdGhpcy5fbWFjQWxnb3JpdGhtLnVwZGF0ZShpbnB1dCk7CisgICAgICB9IGNhdGNoIChJbGxlZ2FsU3RhdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIFByb3h5IG1ldGhvZCBmb3Ige0BsaW5rIGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlI3VwZGF0ZShieXRlW10sIGludCwgaW50KX0KKyAgICAqIHdoaWNoIGlzIGV4ZWN1dGVkIG9uIHRoZSBpbnRlcm5hbCB7QGxpbmsgamF2YS5zZWN1cml0eS5TaWduYXR1cmV9IG9iamVjdC4KKyAgICAqCisgICAgKiBAcGFyYW0gYnVmCisgICAgKiBAcGFyYW0gb2Zmc2V0CisgICAgKiBAcGFyYW0gbGVuCisgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICovCisgICBwcm90ZWN0ZWQgdm9pZCBlbmdpbmVVcGRhdGUoYnl0ZSBidWZbXSwgaW50IG9mZnNldCwgaW50IGxlbikKKyAgICAgICAgICAgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisKKyAgICAgIHRyeSB7CisgICAgICAgICB0aGlzLl9tYWNBbGdvcml0aG0udXBkYXRlKGJ1Ziwgb2Zmc2V0LCBsZW4pOworICAgICAgfSBjYXRjaCAoSWxsZWdhbFN0YXRlRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lR2V0SkNFQWxnb3JpdGhtU3RyaW5nCisgICAgKiBAaW5oZXJpdERvYworICAgICoKKyAgICAqLworICAgcHJvdGVjdGVkIFN0cmluZyBlbmdpbmVHZXRKQ0VBbGdvcml0aG1TdHJpbmcoKSB7CisKKyAgICAgIGxvZy5kZWJ1ZygiZW5naW5lR2V0SkNFQWxnb3JpdGhtU3RyaW5nKCkiKTsKKworICAgICAgcmV0dXJuIHRoaXMuX21hY0FsZ29yaXRobS5nZXRBbGdvcml0aG0oKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lR2V0SkNFQWxnb3JpdGhtU3RyaW5nCisgICAgKgorICAgICogQGluaGVyaXREb2MKKyAgICAqLworICAgcHJvdGVjdGVkIFN0cmluZyBlbmdpbmVHZXRKQ0VQcm92aWRlck5hbWUoKSB7CisgICAgICByZXR1cm4gdGhpcy5fbWFjQWxnb3JpdGhtLmdldFByb3ZpZGVyKCkuZ2V0TmFtZSgpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBlbmdpbmVTZXRITUFDT3V0cHV0TGVuZ3RoCisgICAgKgorICAgICogQHBhcmFtIEhNQUNPdXRwdXRMZW5ndGgKKyAgICAqLworICAgcHJvdGVjdGVkIHZvaWQgZW5naW5lU2V0SE1BQ091dHB1dExlbmd0aChpbnQgSE1BQ091dHB1dExlbmd0aCkgeworICAgICAgdGhpcy5fSE1BQ091dHB1dExlbmd0aCA9IEhNQUNPdXRwdXRMZW5ndGg7CisgICAgICB0aGlzLl9ITUFDT3V0cHV0TGVuZ3RoU2V0ID0gdHJ1ZTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lR2V0Q29udGV4dEZyb21FbGVtZW50CisgICAgKgorICAgICogQHBhcmFtIGVsZW1lbnQKKyAgICAqLworICAgcHJvdGVjdGVkIHZvaWQgZW5naW5lR2V0Q29udGV4dEZyb21FbGVtZW50KEVsZW1lbnQgZWxlbWVudCkgeworCisgICAgICBzdXBlci5lbmdpbmVHZXRDb250ZXh0RnJvbUVsZW1lbnQoZWxlbWVudCk7CisKKyAgICAgIGlmIChlbGVtZW50ID09IG51bGwpIHsKKyAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImVsZW1lbnQgbnVsbCIpOworICAgICAgfQorCisgICAgICBUZXh0IGhtYWNsZW5ndGggPVhNTFV0aWxzLnNlbGVjdERzTm9kZVRleHQoZWxlbWVudC5nZXRGaXJzdENoaWxkKCksCisgICAgICAgICBDb25zdGFudHMuX1RBR19ITUFDT1VUUFVUTEVOR1RILDApOyAgICAgICAgICAgICAgIAorCisgICAgICBpZiAoaG1hY2xlbmd0aCAhPSBudWxsKSB7CisgICAgICAgICB0aGlzLl9ITUFDT3V0cHV0TGVuZ3RoID0gSW50ZWdlci5wYXJzZUludChobWFjbGVuZ3RoLmdldERhdGEoKSk7CisgICAgICAgICB0aGlzLl9ITUFDT3V0cHV0TGVuZ3RoU2V0ID0gdHJ1ZTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lQWRkQ29udGV4dFRvRWxlbWVudAorICAgICoKKyAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIGVuZ2luZUFkZENvbnRleHRUb0VsZW1lbnQoRWxlbWVudCBlbGVtZW50KSB7CisKKyAgICAgIGlmIChlbGVtZW50ID09IG51bGwpIHsKKyAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIm51bGwgZWxlbWVudCIpOworICAgICAgfQorCisgICAgICBpZiAodGhpcy5fSE1BQ091dHB1dExlbmd0aFNldCkgeworICAgICAgICAgRG9jdW1lbnQgZG9jID0gZWxlbWVudC5nZXRPd25lckRvY3VtZW50KCk7CisgICAgICAgICBFbGVtZW50IEhNRWxlbSA9IFhNTFV0aWxzLmNyZWF0ZUVsZW1lbnRJblNpZ25hdHVyZVNwYWNlKGRvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLl9UQUdfSE1BQ09VVFBVVExFTkdUSCk7CisgICAgICAgICBUZXh0IEhNVGV4dCA9CisgICAgICAgICAgICBkb2MuY3JlYXRlVGV4dE5vZGUobmV3IEludGVnZXIodGhpcy5fSE1BQ091dHB1dExlbmd0aCkudG9TdHJpbmcoKSk7CisKKyAgICAgICAgIEhNRWxlbS5hcHBlbmRDaGlsZChITVRleHQpOworICAgICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KGVsZW1lbnQpOworICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChITUVsZW0pOworICAgICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KGVsZW1lbnQpOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIENsYXNzIEludGVncml0eUhtYWNTSEExCisgICAgKgorICAgICogQGF1dGhvciAkQXV0aG9yJAorICAgICogQHZlcnNpb24gJFJldmlzaW9uJAorICAgICovCisgICBwdWJsaWMgc3RhdGljIGNsYXNzIEludGVncml0eUhtYWNTSEExIGV4dGVuZHMgSW50ZWdyaXR5SG1hYyB7CisKKyAgICAgIC8qKgorICAgICAgICogQ29uc3RydWN0b3IgSW50ZWdyaXR5SG1hY1NIQTEKKyAgICAgICAqCisgICAgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICAgICovCisgICAgICBwdWJsaWMgSW50ZWdyaXR5SG1hY1NIQTEoKSB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKyAgICAgICAgIHN1cGVyKCk7CisgICAgICB9CisKKyAgICAgIC8qKgorICAgICAgICogTWV0aG9kIGVuZ2luZUdldFVSSQorICAgICAgICogQGluaGVyaXREb2MKKyAgICAgICAqCisgICAgICAgKi8KKyAgICAgIHB1YmxpYyBTdHJpbmcgZW5naW5lR2V0VVJJKCkgeworICAgICAgICAgcmV0dXJuIFhNTFNpZ25hdHVyZS5BTEdPX0lEX01BQ19ITUFDX1NIQTE7CisgICAgICB9CisKKyAgICAgIGludCBnZXREaWdlc3RMZW5ndGgoKSB7CisgICAgICAgICAgcmV0dXJuIDE2MDsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBDbGFzcyBJbnRlZ3JpdHlIbWFjU0hBMjU2CisgICAgKgorICAgICogQGF1dGhvciAkQXV0aG9yJAorICAgICogQHZlcnNpb24gJFJldmlzaW9uJAorICAgICovCisgICBwdWJsaWMgc3RhdGljIGNsYXNzIEludGVncml0eUhtYWNTSEEyNTYgZXh0ZW5kcyBJbnRlZ3JpdHlIbWFjIHsKKworICAgICAgLyoqCisgICAgICAgKiBDb25zdHJ1Y3RvciBJbnRlZ3JpdHlIbWFjU0hBMjU2CisgICAgICAgKgorICAgICAgICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAgICAqLworICAgICAgcHVibGljIEludGVncml0eUhtYWNTSEEyNTYoKSB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKyAgICAgICAgIHN1cGVyKCk7CisgICAgICB9CisKKyAgICAgIC8qKgorICAgICAgICogTWV0aG9kIGVuZ2luZUdldFVSSQorICAgICAgICoKKyAgICAgICAqIEBpbmhlcml0RG9jCisgICAgICAgKi8KKyAgICAgIHB1YmxpYyBTdHJpbmcgZW5naW5lR2V0VVJJKCkgeworICAgICAgICAgcmV0dXJuIFhNTFNpZ25hdHVyZS5BTEdPX0lEX01BQ19ITUFDX1NIQTI1NjsKKyAgICAgIH0KKworICAgICAgaW50IGdldERpZ2VzdExlbmd0aCgpIHsKKyAgICAgICAgICByZXR1cm4gMjU2OworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIENsYXNzIEludGVncml0eUhtYWNTSEEzODQKKyAgICAqCisgICAgKiBAYXV0aG9yICRBdXRob3IkCisgICAgKiBAdmVyc2lvbiAkUmV2aXNpb24kCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgSW50ZWdyaXR5SG1hY1NIQTM4NCBleHRlbmRzIEludGVncml0eUhtYWMgeworCisgICAgICAvKioKKyAgICAgICAqIENvbnN0cnVjdG9yIEludGVncml0eUhtYWNTSEEzODQKKyAgICAgICAqCisgICAgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICAgICovCisgICAgICBwdWJsaWMgSW50ZWdyaXR5SG1hY1NIQTM4NCgpIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworICAgICAgICAgc3VwZXIoKTsKKyAgICAgIH0KKworICAgICAgLyoqCisgICAgICAgKiBNZXRob2QgZW5naW5lR2V0VVJJCisgICAgICAgKiBAaW5oZXJpdERvYworICAgICAgICoKKyAgICAgICAqLworICAgICAgcHVibGljIFN0cmluZyBlbmdpbmVHZXRVUkkoKSB7CisgICAgICAgICByZXR1cm4gWE1MU2lnbmF0dXJlLkFMR09fSURfTUFDX0hNQUNfU0hBMzg0OworICAgICAgfQorCisgICAgICBpbnQgZ2V0RGlnZXN0TGVuZ3RoKCkgeworICAgICAgICAgIHJldHVybiAzODQ7CisgICAgICB9CisgICB9CisKKyAgIC8qKgorICAgICogQ2xhc3MgSW50ZWdyaXR5SG1hY1NIQTUxMgorICAgICoKKyAgICAqIEBhdXRob3IgJEF1dGhvciQKKyAgICAqIEB2ZXJzaW9uICRSZXZpc2lvbiQKKyAgICAqLworICAgcHVibGljIHN0YXRpYyBjbGFzcyBJbnRlZ3JpdHlIbWFjU0hBNTEyIGV4dGVuZHMgSW50ZWdyaXR5SG1hYyB7CisKKyAgICAgIC8qKgorICAgICAgICogQ29uc3RydWN0b3IgSW50ZWdyaXR5SG1hY1NIQTUxMgorICAgICAgICoKKyAgICAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgICAgKi8KKyAgICAgIHB1YmxpYyBJbnRlZ3JpdHlIbWFjU0hBNTEyKCkgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisgICAgICAgICBzdXBlcigpOworICAgICAgfQorCisgICAgICAvKioKKyAgICAgICAqIE1ldGhvZCBlbmdpbmVHZXRVUkkKKyAgICAgICAqIEBpbmhlcml0RG9jCisgICAgICAgKgorICAgICAgICovCisgICAgICBwdWJsaWMgU3RyaW5nIGVuZ2luZUdldFVSSSgpIHsKKyAgICAgICAgIHJldHVybiBYTUxTaWduYXR1cmUuQUxHT19JRF9NQUNfSE1BQ19TSEE1MTI7CisgICAgICB9CisKKyAgICAgIGludCBnZXREaWdlc3RMZW5ndGgoKSB7CisgICAgICAgICAgcmV0dXJuIDUxMjsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBDbGFzcyBJbnRlZ3JpdHlIbWFjUklQRU1EMTYwCisgICAgKgorICAgICogQGF1dGhvciAkQXV0aG9yJAorICAgICogQHZlcnNpb24gJFJldmlzaW9uJAorICAgICovCisgICBwdWJsaWMgc3RhdGljIGNsYXNzIEludGVncml0eUhtYWNSSVBFTUQxNjAgZXh0ZW5kcyBJbnRlZ3JpdHlIbWFjIHsKKworICAgICAgLyoqCisgICAgICAgKiBDb25zdHJ1Y3RvciBJbnRlZ3JpdHlIbWFjUklQRU1EMTYwCisgICAgICAgKgorICAgICAgICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAgICAqLworICAgICAgcHVibGljIEludGVncml0eUhtYWNSSVBFTUQxNjAoKSB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKyAgICAgICAgIHN1cGVyKCk7CisgICAgICB9CisKKyAgICAgIC8qKgorICAgICAgICogTWV0aG9kIGVuZ2luZUdldFVSSQorICAgICAgICoKKyAgICAgICAqIEBpbmhlcml0RG9jCisgICAgICAgKi8KKyAgICAgIHB1YmxpYyBTdHJpbmcgZW5naW5lR2V0VVJJKCkgeworICAgICAgICAgcmV0dXJuIFhNTFNpZ25hdHVyZS5BTEdPX0lEX01BQ19ITUFDX1JJUEVNRDE2MDsKKyAgICAgIH0KKworICAgICAgaW50IGdldERpZ2VzdExlbmd0aCgpIHsKKyAgICAgICAgICByZXR1cm4gMTYwOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIENsYXNzIEludGVncml0eUhtYWNNRDUKKyAgICAqCisgICAgKiBAYXV0aG9yICRBdXRob3IkCisgICAgKiBAdmVyc2lvbiAkUmV2aXNpb24kCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgSW50ZWdyaXR5SG1hY01ENSBleHRlbmRzIEludGVncml0eUhtYWMgeworCisgICAgICAvKioKKyAgICAgICAqIENvbnN0cnVjdG9yIEludGVncml0eUhtYWNNRDUKKyAgICAgICAqCisgICAgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICAgICovCisgICAgICBwdWJsaWMgSW50ZWdyaXR5SG1hY01ENSgpIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworICAgICAgICAgc3VwZXIoKTsKKyAgICAgIH0KKworICAgICAgLyoqCisgICAgICAgKiBNZXRob2QgZW5naW5lR2V0VVJJCisgICAgICAgKgorICAgICAgICogQGluaGVyaXREb2MKKyAgICAgICAqLworICAgICAgcHVibGljIFN0cmluZyBlbmdpbmVHZXRVUkkoKSB7CisgICAgICAgICByZXR1cm4gWE1MU2lnbmF0dXJlLkFMR09fSURfTUFDX0hNQUNfTk9UX1JFQ09NTUVOREVEX01ENTsKKyAgICAgIH0KKworICAgICAgaW50IGdldERpZ2VzdExlbmd0aCgpIHsKKyAgICAgICAgICByZXR1cm4gMTI4OworICAgICAgfQorICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2FsZ29yaXRobXMvaW1wbGVtZW50YXRpb25zL1NpZ25hdHVyZUJhc2VSU0EuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9hbGdvcml0aG1zL2ltcGxlbWVudGF0aW9ucy9TaWduYXR1cmVCYXNlUlNBLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGRhZmZhMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9hbGdvcml0aG1zL2ltcGxlbWVudGF0aW9ucy9TaWduYXR1cmVCYXNlUlNBLmphdmEKQEAgLTAsMCArMSwzNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNyBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmFsZ29yaXRobXMuaW1wbGVtZW50YXRpb25zOworCitpbXBvcnQgamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LktleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHJpdmF0ZUtleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlB1YmxpY0tleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYzsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmFsZ29yaXRobXMuSkNFTWFwcGVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmFsZ29yaXRobXMuU2lnbmF0dXJlQWxnb3JpdGhtU3BpOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmU7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZUV4Y2VwdGlvbjsKKworLyoqCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICovCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgU2lnbmF0dXJlQmFzZVJTQSBleHRlbmRzIFNpZ25hdHVyZUFsZ29yaXRobVNwaSB7CisKKyAgICAvKioge0BsaW5rIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nfSBsb2dnaW5nIGZhY2lsaXR5ICovCisgICAgc3RhdGljIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZyBsb2cgPSAKKyAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeS5nZXRMb2cKKwkoU2lnbmF0dXJlQmFzZVJTQS5jbGFzcy5nZXROYW1lKCkpOworCisgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgcHVibGljIGFic3RyYWN0IFN0cmluZyBlbmdpbmVHZXRVUkkoKTsKKworICAgIC8qKiBGaWVsZCBhbGdvcml0aG0gKi8KKyAgICBwcml2YXRlIGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlIF9zaWduYXR1cmVBbGdvcml0aG0gPSBudWxsOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IgU2lnbmF0dXJlUlNBCisgICAgICoKKyAgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBTaWduYXR1cmVCYXNlUlNBKCkgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisKKwlTdHJpbmcgYWxnb3JpdGhtSUQgPSBKQ0VNYXBwZXIudHJhbnNsYXRlVVJJdG9KQ0VJRCh0aGlzLmVuZ2luZUdldFVSSSgpKTsKKworCWlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkKKyAgICAgIAkgICAgbG9nLmRlYnVnKCJDcmVhdGVkIFNpZ25hdHVyZVJTQSB1c2luZyAiICsgYWxnb3JpdGhtSUQpOworCVN0cmluZyBwcm92aWRlcj1KQ0VNYXBwZXIuZ2V0UHJvdmlkZXJJZCgpOworCXRyeSB7CisJICAgIGlmIChwcm92aWRlcj09bnVsbCkgeworCQl0aGlzLl9zaWduYXR1cmVBbGdvcml0aG0gPSBTaWduYXR1cmUuZ2V0SW5zdGFuY2UoYWxnb3JpdGhtSUQpOworCSAgICB9IGVsc2UgeworICAgICAgCSAJdGhpcy5fc2lnbmF0dXJlQWxnb3JpdGhtID0gU2lnbmF0dXJlLmdldEluc3RhbmNlKGFsZ29yaXRobUlELHByb3ZpZGVyKTsKKwkgICAgfQorCX0gY2F0Y2ggKGphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIGV4KSB7CisJICAgIE9iamVjdFtdIGV4QXJncyA9IHsgYWxnb3JpdGhtSUQsIGV4LmdldExvY2FsaXplZE1lc3NhZ2UoKSB9OworCisJICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImFsZ29yaXRobXMuTm9TdWNoQWxnb3JpdGhtIiwgZXhBcmdzKTsKKwl9IGNhdGNoIChOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiBleCkgeworCSAgICBPYmplY3RbXSBleEFyZ3MgPSB7IGFsZ29yaXRobUlELCBleC5nZXRMb2NhbGl6ZWRNZXNzYWdlKCkgfTsKKworCSAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJhbGdvcml0aG1zLk5vU3VjaEFsZ29yaXRobSIsIGV4QXJncyk7CisJfQorICAgIH0KKworICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgIHByb3RlY3RlZCB2b2lkIGVuZ2luZVNldFBhcmFtZXRlcihBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIHBhcmFtcykKKwl0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKworCXRyeSB7CisJICAgIHRoaXMuX3NpZ25hdHVyZUFsZ29yaXRobS5zZXRQYXJhbWV0ZXIocGFyYW1zKTsKKwl9IGNhdGNoIChJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIGV4KSB7CisJICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImVtcHR5IiwgZXgpOworCX0KKyAgICB9CisKKyAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICBwcm90ZWN0ZWQgYm9vbGVhbiBlbmdpbmVWZXJpZnkoYnl0ZVtdIHNpZ25hdHVyZSkKKyAgICAgICAgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisKKwl0cnkgeworCSAgICByZXR1cm4gdGhpcy5fc2lnbmF0dXJlQWxnb3JpdGhtLnZlcmlmeShzaWduYXR1cmUpOworCX0gY2F0Y2ggKFNpZ25hdHVyZUV4Y2VwdGlvbiBleCkgeworCSAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKwl9CisgICAgfQorCisgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgcHJvdGVjdGVkIHZvaWQgZW5naW5lSW5pdFZlcmlmeShLZXkgcHVibGljS2V5KSB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKworCWlmICghKHB1YmxpY0tleSBpbnN0YW5jZW9mIFB1YmxpY0tleSkpIHsKKwkgICAgU3RyaW5nIHN1cHBsaWVkID0gcHVibGljS2V5LmdldENsYXNzKCkuZ2V0TmFtZSgpOworCSAgICBTdHJpbmcgbmVlZGVkID0gUHVibGljS2V5LmNsYXNzLmdldE5hbWUoKTsKKwkgICAgT2JqZWN0IGV4QXJnc1tdID0geyBzdXBwbGllZCwgbmVlZGVkIH07CisKKwkgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorCQkoImFsZ29yaXRobXMuV3JvbmdLZXlGb3JUaGlzT3BlcmF0aW9uIiwgZXhBcmdzKTsKKwl9CisKKwl0cnkgeworCSAgICB0aGlzLl9zaWduYXR1cmVBbGdvcml0aG0uaW5pdFZlcmlmeSgoUHVibGljS2V5KSBwdWJsaWNLZXkpOworCX0gY2F0Y2ggKEludmFsaWRLZXlFeGNlcHRpb24gZXgpIHsKKwkgICAgLy8gcmVpbnN0YW50aWF0ZSBTaWduYXR1cmUgb2JqZWN0IHRvIHdvcmsgYXJvdW5kIGJ1ZyBpbiBKREsKKwkgICAgLy8gc2VlOiBodHRwOi8vYnVncy5zdW4uY29tL3ZpZXdfYnVnLmRvP2J1Z19pZD00OTUzNTU1CisJICAgIFNpZ25hdHVyZSBzaWcgPSB0aGlzLl9zaWduYXR1cmVBbGdvcml0aG07CisJICAgIHRyeSB7CisgCSAgICAgICAgdGhpcy5fc2lnbmF0dXJlQWxnb3JpdGhtID0gU2lnbmF0dXJlLmdldEluc3RhbmNlCisJCSAgICAoX3NpZ25hdHVyZUFsZ29yaXRobS5nZXRBbGdvcml0aG0oKSk7CisJICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCS8vIHRoaXMgc2hvdWxkbid0IG9jY3VyLCBidXQgaWYgaXQgZG9lcywgcmVzdG9yZSBwcmV2aW91cyAKKwkJLy8gU2lnbmF0dXJlCisJICAgICAgICBpZiAobG9nLmlzRGVidWdFbmFibGVkKCkpIHsKKyAgICAgIAkgICAgICAgICAgICBsb2cuZGVidWcoIkV4Y2VwdGlvbiB3aGVuIHJlaW5zdGFudGlhdGluZyBTaWduYXR1cmU6IiArIGUpOworCQl9CisJCXRoaXMuX3NpZ25hdHVyZUFsZ29yaXRobSA9IHNpZzsKKwkgICAgfQorCSAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKwl9IAorICAgIH0KKworICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgIHByb3RlY3RlZCBieXRlW10gZW5naW5lU2lnbigpIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworCXRyeSB7CisJICAgIHJldHVybiB0aGlzLl9zaWduYXR1cmVBbGdvcml0aG0uc2lnbigpOworCX0gY2F0Y2ggKFNpZ25hdHVyZUV4Y2VwdGlvbiBleCkgeworCSAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKwl9CisgICAgfQorCisgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgcHJvdGVjdGVkIHZvaWQgZW5naW5lSW5pdFNpZ24oS2V5IHByaXZhdGVLZXksIFNlY3VyZVJhbmRvbSBzZWN1cmVSYW5kb20pCisJdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisKKwlpZiAoIShwcml2YXRlS2V5IGluc3RhbmNlb2YgUHJpdmF0ZUtleSkpIHsKKwkgICAgU3RyaW5nIHN1cHBsaWVkID0gcHJpdmF0ZUtleS5nZXRDbGFzcygpLmdldE5hbWUoKTsKKwkgICAgU3RyaW5nIG5lZWRlZCA9IFByaXZhdGVLZXkuY2xhc3MuZ2V0TmFtZSgpOworCSAgICBPYmplY3QgZXhBcmdzW10gPSB7IHN1cHBsaWVkLCBuZWVkZWQgfTsKKworCSAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisJCSgiYWxnb3JpdGhtcy5Xcm9uZ0tleUZvclRoaXNPcGVyYXRpb24iLCBleEFyZ3MpOworCX0KKworCXRyeSB7CisJICAgIHRoaXMuX3NpZ25hdHVyZUFsZ29yaXRobS5pbml0U2lnbgorCQkoKFByaXZhdGVLZXkpIHByaXZhdGVLZXksIHNlY3VyZVJhbmRvbSk7CisJfSBjYXRjaCAoSW52YWxpZEtleUV4Y2VwdGlvbiBleCkgeworCSAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKwl9CisgICAgfQorCisgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgcHJvdGVjdGVkIHZvaWQgZW5naW5lSW5pdFNpZ24oS2V5IHByaXZhdGVLZXkpIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworCisJaWYgKCEocHJpdmF0ZUtleSBpbnN0YW5jZW9mIFByaXZhdGVLZXkpKSB7CisJICAgIFN0cmluZyBzdXBwbGllZCA9IHByaXZhdGVLZXkuZ2V0Q2xhc3MoKS5nZXROYW1lKCk7CisJICAgIFN0cmluZyBuZWVkZWQgPSBQcml2YXRlS2V5LmNsYXNzLmdldE5hbWUoKTsKKwkgICAgT2JqZWN0IGV4QXJnc1tdID0geyBzdXBwbGllZCwgbmVlZGVkIH07CisKKwkgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorCQkoImFsZ29yaXRobXMuV3JvbmdLZXlGb3JUaGlzT3BlcmF0aW9uIiwgZXhBcmdzKTsKKwl9CisKKwl0cnkgeworCSAgICB0aGlzLl9zaWduYXR1cmVBbGdvcml0aG0uaW5pdFNpZ24oKFByaXZhdGVLZXkpIHByaXZhdGVLZXkpOworCX0gY2F0Y2ggKEludmFsaWRLZXlFeGNlcHRpb24gZXgpIHsKKwkgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisJfQorICAgIH0KKworICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgIHByb3RlY3RlZCB2b2lkIGVuZ2luZVVwZGF0ZShieXRlW10gaW5wdXQpIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworCXRyeSB7CisJICAgIHRoaXMuX3NpZ25hdHVyZUFsZ29yaXRobS51cGRhdGUoaW5wdXQpOworCX0gY2F0Y2ggKFNpZ25hdHVyZUV4Y2VwdGlvbiBleCkgeworCSAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKwl9CisgICAgfQorCisgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgcHJvdGVjdGVkIHZvaWQgZW5naW5lVXBkYXRlKGJ5dGUgaW5wdXQpIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworCXRyeSB7CisJICAgIHRoaXMuX3NpZ25hdHVyZUFsZ29yaXRobS51cGRhdGUoaW5wdXQpOworCX0gY2F0Y2ggKFNpZ25hdHVyZUV4Y2VwdGlvbiBleCkgeworCSAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKwl9CisgICAgfQorCisgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgcHJvdGVjdGVkIHZvaWQgZW5naW5lVXBkYXRlKGJ5dGUgYnVmW10sIGludCBvZmZzZXQsIGludCBsZW4pCisJdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisJdHJ5IHsKKwkgICAgdGhpcy5fc2lnbmF0dXJlQWxnb3JpdGhtLnVwZGF0ZShidWYsIG9mZnNldCwgbGVuKTsKKwl9IGNhdGNoIChTaWduYXR1cmVFeGNlcHRpb24gZXgpIHsKKwkgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisJfQorICAgIH0KKworICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgIHByb3RlY3RlZCBTdHJpbmcgZW5naW5lR2V0SkNFQWxnb3JpdGhtU3RyaW5nKCkgeworCXJldHVybiB0aGlzLl9zaWduYXR1cmVBbGdvcml0aG0uZ2V0QWxnb3JpdGhtKCk7CisgICAgfQorCisgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgcHJvdGVjdGVkIFN0cmluZyBlbmdpbmVHZXRKQ0VQcm92aWRlck5hbWUoKSB7CisJcmV0dXJuIHRoaXMuX3NpZ25hdHVyZUFsZ29yaXRobS5nZXRQcm92aWRlcigpLmdldE5hbWUoKTsKKyAgICB9CisKKyAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBlbmdpbmVTZXRITUFDT3V0cHV0TGVuZ3RoKGludCBITUFDT3V0cHV0TGVuZ3RoKQorCXRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworCXRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKwkgICAgKCJhbGdvcml0aG1zLkhNQUNPdXRwdXRMZW5ndGhPbmx5Rm9ySE1BQyIpOworICAgIH0KKworICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgIHByb3RlY3RlZCB2b2lkIGVuZ2luZUluaXRTaWduKAorCUtleSBzaWduaW5nS2V5LCBBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIGFsZ29yaXRobVBhcmFtZXRlclNwZWMpCisJdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisJdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigKKwkgICAgImFsZ29yaXRobXMuQ2Fubm90VXNlQWxnb3JpdGhtUGFyYW1ldGVyU3BlY09uUlNBIik7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2xhc3MgU2lnbmF0dXJlUlNBU0hBMQorICAgICAqCisgICAgICogQGF1dGhvciAkQXV0aG9yJAorICAgICAqIEB2ZXJzaW9uICRSZXZpc2lvbiQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFNpZ25hdHVyZVJTQVNIQTEgZXh0ZW5kcyBTaWduYXR1cmVCYXNlUlNBIHsKKworCS8qKgorCSAqIENvbnN0cnVjdG9yIFNpZ25hdHVyZVJTQVNIQTEKKwkgKgorCSAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisJICovCisJcHVibGljIFNpZ25hdHVyZVJTQVNIQTEoKSB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKwkgICAgc3VwZXIoKTsKKwl9CisKKwkvKiogQGluaGVyaXREb2MgKi8KKwlwdWJsaWMgU3RyaW5nIGVuZ2luZUdldFVSSSgpIHsKKwkgICAgcmV0dXJuIFhNTFNpZ25hdHVyZS5BTEdPX0lEX1NJR05BVFVSRV9SU0FfU0hBMTsKKwl9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2xhc3MgU2lnbmF0dXJlUlNBU0hBMjU2CisgICAgICoKKyAgICAgKiBAYXV0aG9yICRBdXRob3IkCisgICAgICogQHZlcnNpb24gJFJldmlzaW9uJAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgU2lnbmF0dXJlUlNBU0hBMjU2IGV4dGVuZHMgU2lnbmF0dXJlQmFzZVJTQSB7CisgCisJLyoqCisJICogQ29uc3RydWN0b3IgU2lnbmF0dXJlUlNBU0hBMjU2CisJICoKKwkgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorCSAqLworCXB1YmxpYyBTaWduYXR1cmVSU0FTSEEyNTYoKSB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKwkgICAgc3VwZXIoKTsKKwl9CisKKwkvKiogQGluaGVyaXREb2MgKi8KKwlwdWJsaWMgU3RyaW5nIGVuZ2luZUdldFVSSSgpIHsKKwkgICAgcmV0dXJuIFhNTFNpZ25hdHVyZS5BTEdPX0lEX1NJR05BVFVSRV9SU0FfU0hBMjU2OworCX0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDbGFzcyBTaWduYXR1cmVSU0FTSEEzODQKKyAgICAgKgorICAgICAqIEBhdXRob3IgJEF1dGhvciQKKyAgICAgKiBAdmVyc2lvbiAkUmV2aXNpb24kCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBTaWduYXR1cmVSU0FTSEEzODQgZXh0ZW5kcyBTaWduYXR1cmVCYXNlUlNBIHsKKworCS8qKgorCSAqIENvbnN0cnVjdG9yIFNpZ25hdHVyZVJTQVNIQTM4NAorCSAqCisJICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKwkgKi8KKwlwdWJsaWMgU2lnbmF0dXJlUlNBU0hBMzg0KCkgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisJICAgIHN1cGVyKCk7CisJfQorCisJLyoqIEBpbmhlcml0RG9jICovCisJcHVibGljIFN0cmluZyBlbmdpbmVHZXRVUkkoKSB7CisJICAgIHJldHVybiBYTUxTaWduYXR1cmUuQUxHT19JRF9TSUdOQVRVUkVfUlNBX1NIQTM4NDsKKwl9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2xhc3MgU2lnbmF0dXJlUlNBU0hBNTEyCisgICAgICoKKyAgICAgKiBAYXV0aG9yICRBdXRob3IkCisgICAgICogQHZlcnNpb24gJFJldmlzaW9uJAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgU2lnbmF0dXJlUlNBU0hBNTEyIGV4dGVuZHMgU2lnbmF0dXJlQmFzZVJTQSB7CisKKwkvKioKKwkgKiBDb25zdHJ1Y3RvciBTaWduYXR1cmVSU0FTSEE1MTIKKwkgKgorCSAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisJICovCisJcHVibGljIFNpZ25hdHVyZVJTQVNIQTUxMigpIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworCSAgICBzdXBlcigpOworCX0KKworCS8qKiBAaW5oZXJpdERvYyAqLworCXB1YmxpYyBTdHJpbmcgZW5naW5lR2V0VVJJKCkgeworCSAgICByZXR1cm4gWE1MU2lnbmF0dXJlLkFMR09fSURfU0lHTkFUVVJFX1JTQV9TSEE1MTI7CisJfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENsYXNzIFNpZ25hdHVyZVJTQVJJUEVNRDE2MAorICAgICAqCisgICAgICogQGF1dGhvciAkQXV0aG9yJAorICAgICAqIEB2ZXJzaW9uICRSZXZpc2lvbiQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFNpZ25hdHVyZVJTQVJJUEVNRDE2MCBleHRlbmRzIFNpZ25hdHVyZUJhc2VSU0EgeworCisJLyoqCisJICogQ29uc3RydWN0b3IgU2lnbmF0dXJlUlNBUklQRU1EMTYwCisJICoKKwkgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorCSAqLworCXB1YmxpYyBTaWduYXR1cmVSU0FSSVBFTUQxNjAoKSB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKwkgICAgc3VwZXIoKTsKKwl9CisKKwkvKiogQGluaGVyaXREb2MgKi8KKwlwdWJsaWMgU3RyaW5nIGVuZ2luZUdldFVSSSgpIHsKKwkgICAgcmV0dXJuIFhNTFNpZ25hdHVyZS5BTEdPX0lEX1NJR05BVFVSRV9SU0FfUklQRU1EMTYwOworCX0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDbGFzcyBTaWduYXR1cmVSU0FNRDUKKyAgICAgKgorICAgICAqIEBhdXRob3IgJEF1dGhvciQKKyAgICAgKiBAdmVyc2lvbiAkUmV2aXNpb24kCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBTaWduYXR1cmVSU0FNRDUgZXh0ZW5kcyBTaWduYXR1cmVCYXNlUlNBIHsKKworCS8qKgorCSAqIENvbnN0cnVjdG9yIFNpZ25hdHVyZVJTQU1ENQorCSAqCisJICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKwkgKi8KKwlwdWJsaWMgU2lnbmF0dXJlUlNBTUQ1KCkgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisJICAgIHN1cGVyKCk7CisJfQorCisJLyoqIEBpbmhlcml0RG9jICovCisJcHVibGljIFN0cmluZyBlbmdpbmVHZXRVUkkoKSB7CisJICAgIHJldHVybiBYTUxTaWduYXR1cmUuQUxHT19JRF9TSUdOQVRVUkVfTk9UX1JFQ09NTUVOREVEX1JTQV9NRDU7CisJfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9hbGdvcml0aG1zL2ltcGxlbWVudGF0aW9ucy9TaWduYXR1cmVEU0EuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9hbGdvcml0aG1zL2ltcGxlbWVudGF0aW9ucy9TaWduYXR1cmVEU0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzhjZWNhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2FsZ29yaXRobXMvaW1wbGVtZW50YXRpb25zL1NpZ25hdHVyZURTQS5qYXZhCkBAIC0wLDAgKzEsMzkxIEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5hbGdvcml0aG1zLmltcGxlbWVudGF0aW9uczsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LktleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlByaXZhdGVLZXk7CitpbXBvcnQgamF2YS5zZWN1cml0eS5QdWJsaWNLZXk7CitpbXBvcnQgamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb207CitpbXBvcnQgamF2YS5zZWN1cml0eS5TaWduYXR1cmU7CitpbXBvcnQgamF2YS5zZWN1cml0eS5TaWduYXR1cmVFeGNlcHRpb247CitpbXBvcnQgamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5hbGdvcml0aG1zLkpDRU1hcHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5hbGdvcml0aG1zLlNpZ25hdHVyZUFsZ29yaXRobVNwaTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkJhc2U2NDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CisKKy8qKgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGNsYXNzIFNpZ25hdHVyZURTQSBleHRlbmRzIFNpZ25hdHVyZUFsZ29yaXRobVNwaSB7CisKKyAgICAvKioge0BsaW5rIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nfSBsb2dnaW5nIGZhY2lsaXR5ICovCisgICAgc3RhdGljIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZyBsb2cgPSAKKyAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeS5nZXRMb2coU2lnbmF0dXJlRFNBLmNsYXNzLmdldE5hbWUoKSk7CisKKyAgICAvKiogRmllbGQgX1VSSSAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9VUkkgPSBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TICsgImRzYS1zaGExIjsKKworICAgIC8qKiBGaWVsZCBhbGdvcml0aG0gKi8KKyAgICBwcml2YXRlIGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlIF9zaWduYXR1cmVBbGdvcml0aG0gPSBudWxsOworCisgICAgLyoqCisgICAgICogTWV0aG9kIGVuZ2luZUdldFVSSQorICAgICAqCisgICAgICogQGluaGVyaXREb2MKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgU3RyaW5nIGVuZ2luZUdldFVSSSgpIHsKKyAgICAgICAgcmV0dXJuIFNpZ25hdHVyZURTQS5fVVJJOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdG9yIFNpZ25hdHVyZURTQQorICAgICAqCisgICAgICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgU2lnbmF0dXJlRFNBKCkgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisKKyAgICAgICAgU3RyaW5nIGFsZ29yaXRobUlEID0gSkNFTWFwcGVyLnRyYW5zbGF0ZVVSSXRvSkNFSUQoU2lnbmF0dXJlRFNBLl9VUkkpOworICAgICAgICBpZiAobG9nLmlzRGVidWdFbmFibGVkKCkpCisgICAgICAJICAgIGxvZy5kZWJ1ZygiQ3JlYXRlZCBTaWduYXR1cmVEU0EgdXNpbmcgIiArIGFsZ29yaXRobUlEKTsKKworCVN0cmluZyBwcm92aWRlciA9IEpDRU1hcHBlci5nZXRQcm92aWRlcklkKCk7CisgICAgICAgIHRyeSB7CisJICAgIGlmIChwcm92aWRlciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fc2lnbmF0dXJlQWxnb3JpdGhtID0gU2lnbmF0dXJlLmdldEluc3RhbmNlKGFsZ29yaXRobUlEKTsKKwkgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9zaWduYXR1cmVBbGdvcml0aG0gPSAKKwkJICAgIFNpZ25hdHVyZS5nZXRJbnN0YW5jZShhbGdvcml0aG1JRCwgcHJvdmlkZXIpOworCSAgICB9CisgICAgICAgIH0gY2F0Y2ggKGphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBPYmplY3RbXSBleEFyZ3MgPSB7IGFsZ29yaXRobUlELCBleC5nZXRMb2NhbGl6ZWRNZXNzYWdlKCkgfTsKKyAgICAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImFsZ29yaXRobXMuTm9TdWNoQWxnb3JpdGhtIiwgZXhBcmdzKTsKKyAgICAgICAgfSBjYXRjaCAoamF2YS5zZWN1cml0eS5Ob1N1Y2hQcm92aWRlckV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgT2JqZWN0W10gZXhBcmdzID0geyBhbGdvcml0aG1JRCwgZXguZ2V0TG9jYWxpemVkTWVzc2FnZSgpIH07CisgICAgICAgICAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJhbGdvcml0aG1zLk5vU3VjaEFsZ29yaXRobSIsIGV4QXJncyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAaW5oZXJpdERvYworICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIGVuZ2luZVNldFBhcmFtZXRlcihBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIHBhcmFtcykKKyAgICAgICAgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHRoaXMuX3NpZ25hdHVyZUFsZ29yaXRobS5zZXRQYXJhbWV0ZXIocGFyYW1zKTsKKyAgICAgICAgfSBjYXRjaCAoSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiBleCkgeworCSAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEBpbmhlcml0RG9jCisgICAgICovCisgICAgcHJvdGVjdGVkIGJvb2xlYW4gZW5naW5lVmVyaWZ5KGJ5dGVbXSBzaWduYXR1cmUpCisgICAgICAgICAgIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpZiAobG9nLmlzRGVidWdFbmFibGVkKCkpCisgICAgICAgICAJbG9nLmRlYnVnKCJDYWxsZWQgRFNBLnZlcmlmeSgpIG9uICIgKyBCYXNlNjQuZW5jb2RlKHNpZ25hdHVyZSkpOworCisgICAgICAgICAgICBieXRlW10gamNlYnl0ZXMgPSBTaWduYXR1cmVEU0EuY29udmVydFhNTERTSUd0b0FTTjEoc2lnbmF0dXJlKTsKKworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NpZ25hdHVyZUFsZ29yaXRobS52ZXJpZnkoamNlYnl0ZXMpOworICAgICAgICB9IGNhdGNoIChTaWduYXR1cmVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAaW5oZXJpdERvYworICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIGVuZ2luZUluaXRWZXJpZnkoS2V5IHB1YmxpY0tleSkgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisKKyAgICAgICAgaWYgKCEocHVibGljS2V5IGluc3RhbmNlb2YgUHVibGljS2V5KSkgeworICAgICAgICAgICAgU3RyaW5nIHN1cHBsaWVkID0gcHVibGljS2V5LmdldENsYXNzKCkuZ2V0TmFtZSgpOworICAgICAgICAgICAgU3RyaW5nIG5lZWRlZCA9IFB1YmxpY0tleS5jbGFzcy5nZXROYW1lKCk7CisgICAgICAgICAgICBPYmplY3QgZXhBcmdzW10gPSB7IHN1cHBsaWVkLCBuZWVkZWQgfTsKKworICAgICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorCQkoImFsZ29yaXRobXMuV3JvbmdLZXlGb3JUaGlzT3BlcmF0aW9uIiwgZXhBcmdzKTsKKyAgICAgICAgfQorCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB0aGlzLl9zaWduYXR1cmVBbGdvcml0aG0uaW5pdFZlcmlmeSgoUHVibGljS2V5KSBwdWJsaWNLZXkpOworICAgICAgICB9IGNhdGNoIChJbnZhbGlkS2V5RXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAvLyByZWluc3RhbnRpYXRlIFNpZ25hdHVyZSBvYmplY3QgdG8gd29yayBhcm91bmQgYnVnIGluIEpESworICAgICAgICAgICAgLy8gc2VlOiBodHRwOi8vYnVncy5zdW4uY29tL3ZpZXdfYnVnLmRvP2J1Z19pZD00OTUzNTU1CisgICAgICAgICAgICBTaWduYXR1cmUgc2lnID0gdGhpcy5fc2lnbmF0dXJlQWxnb3JpdGhtOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB0aGlzLl9zaWduYXR1cmVBbGdvcml0aG0gPSBTaWduYXR1cmUuZ2V0SW5zdGFuY2UKKyAgICAgICAgICAgICAgICAgICAgKF9zaWduYXR1cmVBbGdvcml0aG0uZ2V0QWxnb3JpdGhtKCkpOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAvLyB0aGlzIHNob3VsZG4ndCBvY2N1ciwgYnV0IGlmIGl0IGRvZXMsIHJlc3RvcmUgcHJldmlvdXMKKyAgICAgICAgICAgICAgICAvLyBTaWduYXR1cmUKKyAgICAgICAgICAgICAgICBpZiAobG9nLmlzRGVidWdFbmFibGVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCJFeGNlcHRpb24gd2hlbiByZWluc3RhbnRpYXRpbmcgU2lnbmF0dXJlOiIgKyBlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGhpcy5fc2lnbmF0dXJlQWxnb3JpdGhtID0gc2lnOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAaW5oZXJpdERvYworICAgICAqLworICAgIHByb3RlY3RlZCBieXRlW10gZW5naW5lU2lnbigpIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBieXRlIGpjZWJ5dGVzW10gPSB0aGlzLl9zaWduYXR1cmVBbGdvcml0aG0uc2lnbigpOworCisgICAgICAgICAgICByZXR1cm4gU2lnbmF0dXJlRFNBLmNvbnZlcnRBU04xdG9YTUxEU0lHKGpjZWJ5dGVzKTsKKyAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgICB9IGNhdGNoIChTaWduYXR1cmVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQGluaGVyaXREb2MKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBlbmdpbmVJbml0U2lnbihLZXkgcHJpdmF0ZUtleSwgU2VjdXJlUmFuZG9tIHNlY3VyZVJhbmRvbSkKKyAgICAgICAgICAgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisKKyAgICAgICAgaWYgKCEocHJpdmF0ZUtleSBpbnN0YW5jZW9mIFByaXZhdGVLZXkpKSB7CisgICAgICAgICAgICBTdHJpbmcgc3VwcGxpZWQgPSBwcml2YXRlS2V5LmdldENsYXNzKCkuZ2V0TmFtZSgpOworICAgICAgICAgICAgU3RyaW5nIG5lZWRlZCA9IFByaXZhdGVLZXkuY2xhc3MuZ2V0TmFtZSgpOworICAgICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyBzdXBwbGllZCwgbmVlZGVkIH07CisKKyAgICAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKwkJKCJhbGdvcml0aG1zLldyb25nS2V5Rm9yVGhpc09wZXJhdGlvbiIsIGV4QXJncyk7CisgICAgICAgIH0KKworICAgICAgICB0cnkgeworICAgICAgICAgICAgdGhpcy5fc2lnbmF0dXJlQWxnb3JpdGhtLmluaXRTaWduKChQcml2YXRlS2V5KSBwcml2YXRlS2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3VyZVJhbmRvbSk7CisgICAgICAgIH0gY2F0Y2ggKEludmFsaWRLZXlFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQGluaGVyaXREb2MKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBlbmdpbmVJbml0U2lnbihLZXkgcHJpdmF0ZUtleSkgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisKKyAgICAgICAgaWYgKCEocHJpdmF0ZUtleSBpbnN0YW5jZW9mIFByaXZhdGVLZXkpKSB7CisgICAgICAgICAgICBTdHJpbmcgc3VwcGxpZWQgPSBwcml2YXRlS2V5LmdldENsYXNzKCkuZ2V0TmFtZSgpOworICAgICAgICAgICAgU3RyaW5nIG5lZWRlZCA9IFByaXZhdGVLZXkuY2xhc3MuZ2V0TmFtZSgpOworICAgICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyBzdXBwbGllZCwgbmVlZGVkIH07CisKKyAgICAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKwkJKCJhbGdvcml0aG1zLldyb25nS2V5Rm9yVGhpc09wZXJhdGlvbiIsIGV4QXJncyk7CisgICAgICAgIH0KKworICAgICAgICB0cnkgeworICAgICAgICAgICAgdGhpcy5fc2lnbmF0dXJlQWxnb3JpdGhtLmluaXRTaWduKChQcml2YXRlS2V5KSBwcml2YXRlS2V5KTsKKyAgICAgICAgfSBjYXRjaCAoSW52YWxpZEtleUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAaW5oZXJpdERvYworICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIGVuZ2luZVVwZGF0ZShieXRlW10gaW5wdXQpIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworICAgICAgICB0cnkgeworICAgICAgICAgICAgdGhpcy5fc2lnbmF0dXJlQWxnb3JpdGhtLnVwZGF0ZShpbnB1dCk7CisgICAgICAgIH0gY2F0Y2ggKFNpZ25hdHVyZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAaW5oZXJpdERvYworICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIGVuZ2luZVVwZGF0ZShieXRlIGlucHV0KSB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHRoaXMuX3NpZ25hdHVyZUFsZ29yaXRobS51cGRhdGUoaW5wdXQpOworICAgICAgICB9IGNhdGNoIChTaWduYXR1cmVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQGluaGVyaXREb2MKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBlbmdpbmVVcGRhdGUoYnl0ZSBidWZbXSwgaW50IG9mZnNldCwgaW50IGxlbikKKyAgICAgICAgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB0aGlzLl9zaWduYXR1cmVBbGdvcml0aG0udXBkYXRlKGJ1Ziwgb2Zmc2V0LCBsZW4pOworICAgICAgICB9IGNhdGNoIChTaWduYXR1cmVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogTWV0aG9kIGVuZ2luZUdldEpDRUFsZ29yaXRobVN0cmluZworICAgICAqCisgICAgICogQGluaGVyaXREb2MKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgU3RyaW5nIGVuZ2luZUdldEpDRUFsZ29yaXRobVN0cmluZygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NpZ25hdHVyZUFsZ29yaXRobS5nZXRBbGdvcml0aG0oKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNZXRob2QgZW5naW5lR2V0SkNFUHJvdmlkZXJOYW1lCisgICAgICoKKyAgICAgKiBAaW5oZXJpdERvYworICAgICAqLworICAgIHByb3RlY3RlZCBTdHJpbmcgZW5naW5lR2V0SkNFUHJvdmlkZXJOYW1lKCkgeworICAgICAgICByZXR1cm4gdGhpcy5fc2lnbmF0dXJlQWxnb3JpdGhtLmdldFByb3ZpZGVyKCkuZ2V0TmFtZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlcnRzIGFuIEFTTi4xIERTQSB2YWx1ZSB0byBhIFhNTCBTaWduYXR1cmUgRFNBIFZhbHVlLgorICAgICAqCisgICAgICogVGhlIEpBVkEgSkNFIERTQSBTaWduYXR1cmUgYWxnb3JpdGhtIGNyZWF0ZXMgQVNOLjEgZW5jb2RlZCAocixzKSB2YWx1ZQorICAgICAqIHBhaXJzOyB0aGUgWE1MIFNpZ25hdHVyZSByZXF1aXJlcyB0aGUgY29yZSBCaWdJbnRlZ2VyIHZhbHVlcy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBhc24xQnl0ZXMKKyAgICAgKiBAcmV0dXJuIHRoZSBkZWNvZGUgYnl0ZXMKKyAgICAgKgorICAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAgKiBAc2VlIDxBIEhSRUY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbGRzaWctY29yZS8jZHNhLXNoYTEiPjYuNC4xIERTQTwvQT4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBieXRlW10gY29udmVydEFTTjF0b1hNTERTSUcoYnl0ZSBhc24xQnl0ZXNbXSkKKyAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uIHsKKworICAgICAgICBieXRlIHJMZW5ndGggPSBhc24xQnl0ZXNbM107CisgICAgICAgIGludCBpOworCisgICAgICAgIGZvciAoaSA9IHJMZW5ndGg7IChpID4gMCkgJiYgKGFzbjFCeXRlc1soNCArIHJMZW5ndGgpIC0gaV0gPT0gMCk7IGktLSk7CisKKyAgICAgICAgYnl0ZSBzTGVuZ3RoID0gYXNuMUJ5dGVzWzUgKyByTGVuZ3RoXTsKKyAgICAgICAgaW50IGo7CisKKyAgICAgICAgZm9yIChqID0gc0xlbmd0aDsKKyAgICAgICAgICAgICAgKGogPiAwKSAmJiAoYXNuMUJ5dGVzWyg2ICsgckxlbmd0aCArIHNMZW5ndGgpIC0gal0gPT0gMCk7IGotLSk7CisKKyAgICAgICAgaWYgKChhc24xQnl0ZXNbMF0gIT0gNDgpIHx8IChhc24xQnl0ZXNbMV0gIT0gYXNuMUJ5dGVzLmxlbmd0aCAtIDIpCisgICAgICAgICAgICAgIHx8IChhc24xQnl0ZXNbMl0gIT0gMikgfHwgKGkgPiAyMCkKKyAgICAgICAgICAgICAgfHwgKGFzbjFCeXRlc1s0ICsgckxlbmd0aF0gIT0gMikgfHwgKGogPiAyMCkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigiSW52YWxpZCBBU04uMSBmb3JtYXQgb2YgRFNBIHNpZ25hdHVyZSIpOworICAgICAgICB9IAorICAgICAgICBieXRlIHhtbGRzaWdCeXRlc1tdID0gbmV3IGJ5dGVbNDBdOworCisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoYXNuMUJ5dGVzLCAoNCArIHJMZW5ndGgpIC0gaSwgeG1sZHNpZ0J5dGVzLCAyMCAtIGksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGkpOworICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGFzbjFCeXRlcywgKDYgKyByTGVuZ3RoICsgc0xlbmd0aCkgLSBqLCB4bWxkc2lnQnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDQwIC0gaiwgaik7CisKKyAgICAgICAgcmV0dXJuIHhtbGRzaWdCeXRlczsgICAgICAKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0cyBhIFhNTCBTaWduYXR1cmUgRFNBIFZhbHVlIHRvIGFuIEFTTi4xIERTQSB2YWx1ZS4KKyAgICAgKgorICAgICAqIFRoZSBKQVZBIEpDRSBEU0EgU2lnbmF0dXJlIGFsZ29yaXRobSBjcmVhdGVzIEFTTi4xIGVuY29kZWQgKHIscykgdmFsdWUKKyAgICAgKiBwYWlyczsgdGhlIFhNTCBTaWduYXR1cmUgcmVxdWlyZXMgdGhlIGNvcmUgQmlnSW50ZWdlciB2YWx1ZXMuCisgICAgICoKKyAgICAgKiBAcGFyYW0geG1sZHNpZ0J5dGVzCisgICAgICogQHJldHVybiB0aGUgZW5jb2RlZCBBU04uMSBieXRlcworICAgICAqCisgICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorICAgICAqIEBzZWUgPEEgSFJFRj0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sZHNpZy1jb3JlLyNkc2Etc2hhMSI+Ni40LjEgRFNBPC9BPgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGJ5dGVbXSBjb252ZXJ0WE1MRFNJR3RvQVNOMShieXRlIHhtbGRzaWdCeXRlc1tdKQorICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24geworCisgICAgICAgIGlmICh4bWxkc2lnQnl0ZXMubGVuZ3RoICE9IDQwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oIkludmFsaWQgWE1MRFNJRyBmb3JtYXQgb2YgRFNBIHNpZ25hdHVyZSIpOworICAgICAgICB9CisKKyAgICAgICAgaW50IGk7CisKKyAgICAgICAgZm9yIChpID0gMjA7IChpID4gMCkgJiYgKHhtbGRzaWdCeXRlc1syMCAtIGldID09IDApOyBpLS0pOworCisgICAgICAgIGludCBqID0gaTsKKworICAgICAgICBpZiAoeG1sZHNpZ0J5dGVzWzIwIC0gaV0gPCAwKSB7CisgICAgICAgICBqICs9IDE7CisgICAgICAgIH0KKworICAgICAgICBpbnQgazsKKworICAgICAgICBmb3IgKGsgPSAyMDsgKGsgPiAwKSAmJiAoeG1sZHNpZ0J5dGVzWzQwIC0ga10gPT0gMCk7IGstLSk7CisKKyAgICAgICAgaW50IGwgPSBrOworCisgICAgICAgIGlmICh4bWxkc2lnQnl0ZXNbNDAgLSBrXSA8IDApIHsKKyAgICAgICAgICAgIGwgKz0gMTsKKyAgICAgICAgfQorCisgICAgICAgIGJ5dGUgYXNuMUJ5dGVzW10gPSBuZXcgYnl0ZVs2ICsgaiArIGxdOworCisgICAgICAgIGFzbjFCeXRlc1swXSA9IDQ4OworICAgICAgICBhc24xQnl0ZXNbMV0gPSAoYnl0ZSkgKDQgKyBqICsgbCk7CisgICAgICAgIGFzbjFCeXRlc1syXSA9IDI7CisgICAgICAgIGFzbjFCeXRlc1szXSA9IChieXRlKSBqOworCisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoeG1sZHNpZ0J5dGVzLCAyMCAtIGksIGFzbjFCeXRlcywgKDQgKyBqKSAtIGksIGkpOworCisgICAgICAgIGFzbjFCeXRlc1s0ICsgal0gPSAyOworICAgICAgICBhc24xQnl0ZXNbNSArIGpdID0gKGJ5dGUpIGw7CisKKyAgICAgICAgU3lzdGVtLmFycmF5Y29weSh4bWxkc2lnQnl0ZXMsIDQwIC0gaywgYXNuMUJ5dGVzLCAoNiArIGogKyBsKSAtIGssIGspOworCisgICAgICAgIHJldHVybiBhc24xQnl0ZXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogTWV0aG9kIGVuZ2luZVNldEhNQUNPdXRwdXRMZW5ndGgKKyAgICAgKgorICAgICAqIEBwYXJhbSBITUFDT3V0cHV0TGVuZ3RoCisgICAgICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBlbmdpbmVTZXRITUFDT3V0cHV0TGVuZ3RoKGludCBITUFDT3V0cHV0TGVuZ3RoKQorICAgICAgICAgICAgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oCisJICAgICJhbGdvcml0aG1zLkhNQUNPdXRwdXRMZW5ndGhPbmx5Rm9ySE1BQyIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1ldGhvZCBlbmdpbmVJbml0U2lnbgorICAgICAqCisgICAgICogQHBhcmFtIHNpZ25pbmdLZXkKKyAgICAgKiBAcGFyYW0gYWxnb3JpdGhtUGFyYW1ldGVyU3BlYworICAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgZW5naW5lSW5pdFNpZ24oCisgICAgICAgIEtleSBzaWduaW5nS2V5LCBBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIGFsZ29yaXRobVBhcmFtZXRlclNwZWMpCisgICAgICAgICAgICB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKyAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICJhbGdvcml0aG1zLkNhbm5vdFVzZUFsZ29yaXRobVBhcmFtZXRlclNwZWNPbkRTQSIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9hbGdvcml0aG1zL2ltcGxlbWVudGF0aW9ucy9TaWduYXR1cmVFQ0RTQS5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2FsZ29yaXRobXMvaW1wbGVtZW50YXRpb25zL1NpZ25hdHVyZUVDRFNBLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjIyM2FmMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9hbGdvcml0aG1zL2ltcGxlbWVudGF0aW9ucy9TaWduYXR1cmVFQ0RTQS5qYXZhCkBAIC0wLDAgKzEsMzg5IEBACisvKgorICogQ29weXJpZ2h0IDE5OTktMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmFsZ29yaXRobXMuaW1wbGVtZW50YXRpb25zOworCisKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LktleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHJpdmF0ZUtleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlB1YmxpY0tleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYzsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmFsZ29yaXRobXMuSkNFTWFwcGVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmFsZ29yaXRobXMuU2lnbmF0dXJlQWxnb3JpdGhtU3BpOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmU7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5CYXNlNjQ7CisKKworLyoqCisgKgorICogQGF1dGhvciAkQXV0aG9yOiByYXVsICQKKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIFNpZ25hdHVyZUVDRFNBIGV4dGVuZHMgU2lnbmF0dXJlQWxnb3JpdGhtU3BpIHsKKworICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKFNpZ25hdHVyZUVDRFNBLmNsYXNzLmdldE5hbWUoKSk7CisKKyAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmcgZW5naW5lR2V0VVJJKCk7CisKKyAgIC8qKiBGaWVsZCBhbGdvcml0aG0gKi8KKyAgIHByaXZhdGUgamF2YS5zZWN1cml0eS5TaWduYXR1cmUgX3NpZ25hdHVyZUFsZ29yaXRobSA9IG51bGw7CisKKyAgIC8qKgorICAgICogQ29udmVydHMgYW4gQVNOLjEgRUNEU0EgdmFsdWUgdG8gYSBYTUwgU2lnbmF0dXJlIEVDRFNBIFZhbHVlLgorICAgICoKKyAgICAqIFRoZSBKQVZBIEpDRSBFQ0RTQSBTaWduYXR1cmUgYWxnb3JpdGhtIGNyZWF0ZXMgQVNOLjEgZW5jb2RlZCAocixzKSB2YWx1ZQorICAgICogcGFpcnM7IHRoZSBYTUwgU2lnbmF0dXJlIHJlcXVpcmVzIHRoZSBjb3JlIEJpZ0ludGVnZXIgdmFsdWVzLgorICAgICoKKyAgICAqIEBwYXJhbSBhc24xQnl0ZXMKKyAgICAqIEByZXR1cm4gdGhlIGRlY29kZSBieXRlcworICAgICoKKyAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAqIEBzZWUgPEEgSFJFRj0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sZHNpZy1jb3JlLyNkc2Etc2hhMSI+Ni40LjEgRFNBPC9BPgorICAgICogQHNlZSA8QSBIUkVGPSJmdHA6Ly9mdHAucmZjLWVkaXRvci5vcmcvaW4tbm90ZXMvcmZjNDA1MC50eHQiPjMuMy4gRUNEU0EgU2lnbmF0dXJlczwvQT4KKyAgICAqLworICAgcHVibGljIHN0YXRpYyBieXRlW10gY29udmVydEFTTjF0b1hNTERTSUcoYnl0ZSBhc24xQnl0ZXNbXSkKKyAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uIHsKKworICAgICAgYnl0ZSByTGVuZ3RoID0gYXNuMUJ5dGVzWzNdOworICAgICAgaW50IGk7CisKKyAgICAgIGZvciAoaSA9IHJMZW5ndGg7IChpID4gMCkgJiYgKGFzbjFCeXRlc1soNCArIHJMZW5ndGgpIC0gaV0gPT0gMCk7IGktLSk7CisKKyAgICAgIGJ5dGUgc0xlbmd0aCA9IGFzbjFCeXRlc1s1ICsgckxlbmd0aF07CisgICAgICBpbnQgajsKKworICAgICAgZm9yIChqID0gc0xlbmd0aDsKKyAgICAgICAgICAgICAgKGogPiAwKSAmJiAoYXNuMUJ5dGVzWyg2ICsgckxlbmd0aCArIHNMZW5ndGgpIC0gal0gPT0gMCk7IGotLSk7CisKKyAgICAgIGludCByYXdMZW4gPSAoKGkrNykvOCkqODsKKyAgICAgIAorICAgICAgaW50IHRtcCA9ICgoais3KS84KSo4OworICAgICAgCisgICAgICBpZiAodG1wID4gcmF3TGVuKQorICAgICAgICAgIHJhd0xlbiA9IHRtcDsKKyAgICAgIAorICAgICAgaWYgKChhc24xQnl0ZXNbMF0gIT0gNDgpIHx8IChhc24xQnl0ZXNbMV0gIT0gYXNuMUJ5dGVzLmxlbmd0aCAtIDIpCisgICAgICAgICAgICAgIHx8IChhc24xQnl0ZXNbMl0gIT0gMikgfHwgcmF3TGVuIDwgMjQKKyAgICAgICAgICAgICAgfHwgKGFzbjFCeXRlc1s0ICsgckxlbmd0aF0gIT0gMikgICAgICkgeworICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJJbnZhbGlkIEFTTi4xIGZvcm1hdCBvZiBFQ0RTQSBzaWduYXR1cmUiKTsKKyAgICAgIH0gCisgICAgICBieXRlIHhtbGRzaWdCeXRlc1tdID0gbmV3IGJ5dGVbMipyYXdMZW5dOworCisgICAgICBTeXN0ZW0uYXJyYXljb3B5KGFzbjFCeXRlcywgKDQgKyByTGVuZ3RoKSAtIGksIHhtbGRzaWdCeXRlcywgcmF3TGVuIC0gaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaSk7CisgICAgICBTeXN0ZW0uYXJyYXljb3B5KGFzbjFCeXRlcywgKDYgKyByTGVuZ3RoICsgc0xlbmd0aCkgLSBqLCB4bWxkc2lnQnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgIDIqcmF3TGVuIC0gaiwgaik7CisKKyAgICAgICByZXR1cm4geG1sZHNpZ0J5dGVzOyAgICAgIAorICAgfQorCisgICAvKioKKyAgICAqIENvbnZlcnRzIGEgWE1MIFNpZ25hdHVyZSBFQ0RTQSBWYWx1ZSB0byBhbiBBU04uMSBEU0EgdmFsdWUuCisgICAgKgorICAgICogVGhlIEpBVkEgSkNFIEVDRFNBIFNpZ25hdHVyZSBhbGdvcml0aG0gY3JlYXRlcyBBU04uMSBlbmNvZGVkIChyLHMpIHZhbHVlCisgICAgKiBwYWlyczsgdGhlIFhNTCBTaWduYXR1cmUgcmVxdWlyZXMgdGhlIGNvcmUgQmlnSW50ZWdlciB2YWx1ZXMuCisgICAgKgorICAgICogQHBhcmFtIHhtbGRzaWdCeXRlcworICAgICogQHJldHVybiB0aGUgZW5jb2RlZCBBU04uMSBieXRlcworICAgICoKKyAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAqIEBzZWUgPEEgSFJFRj0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sZHNpZy1jb3JlLyNkc2Etc2hhMSI+Ni40LjEgRFNBPC9BPgorICAgICogQHNlZSA8QSBIUkVGPSJmdHA6Ly9mdHAucmZjLWVkaXRvci5vcmcvaW4tbm90ZXMvcmZjNDA1MC50eHQiPjMuMy4gRUNEU0EgU2lnbmF0dXJlczwvQT4KKyAgICAqLworICAgcHVibGljIHN0YXRpYyBieXRlW10gY29udmVydFhNTERTSUd0b0FTTjEoYnl0ZSB4bWxkc2lnQnl0ZXNbXSkKKyAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uIHsKKworICAgICAgaWYgKHhtbGRzaWdCeXRlcy5sZW5ndGggPCA0OCkgeworICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJJbnZhbGlkIFhNTERTSUcgZm9ybWF0IG9mIEVDRFNBIHNpZ25hdHVyZSIpOworICAgICAgfQorCisgICAgICBpbnQgcmF3TGVuID0geG1sZHNpZ0J5dGVzLmxlbmd0aC8yOworICAgICAgCisgICAgICBpbnQgaTsKKworICAgICAgZm9yIChpID0gcmF3TGVuOyAoaSA+IDApICYmICh4bWxkc2lnQnl0ZXNbcmF3TGVuIC0gaV0gPT0gMCk7IGktLSk7CisKKyAgICAgIGludCBqID0gaTsKKworICAgICAgaWYgKHhtbGRzaWdCeXRlc1tyYXdMZW4gLSBpXSA8IDApIHsKKyAgICAgICAgIGogKz0gMTsKKyAgICAgIH0KKworICAgICAgaW50IGs7CisKKyAgICAgIGZvciAoayA9IHJhd0xlbjsgKGsgPiAwKSAmJiAoeG1sZHNpZ0J5dGVzWzIqcmF3TGVuIC0ga10gPT0gMCk7IGstLSk7CisKKyAgICAgIGludCBsID0gazsKKworICAgICAgaWYgKHhtbGRzaWdCeXRlc1syKnJhd0xlbiAtIGtdIDwgMCkgeworICAgICAgICAgbCArPSAxOworICAgICAgfQorCisgICAgICBieXRlIGFzbjFCeXRlc1tdID0gbmV3IGJ5dGVbNiArIGogKyBsXTsKKworICAgICAgYXNuMUJ5dGVzWzBdID0gNDg7CisgICAgICBhc24xQnl0ZXNbMV0gPSAoYnl0ZSkgKDQgKyBqICsgbCk7CisgICAgICBhc24xQnl0ZXNbMl0gPSAyOworICAgICAgYXNuMUJ5dGVzWzNdID0gKGJ5dGUpIGo7CisKKyAgICAgIFN5c3RlbS5hcnJheWNvcHkoeG1sZHNpZ0J5dGVzLCByYXdMZW4gLSBpLCBhc24xQnl0ZXMsICg0ICsgaikgLSBpLCBpKTsKKworICAgICAgYXNuMUJ5dGVzWzQgKyBqXSA9IDI7CisgICAgICBhc24xQnl0ZXNbNSArIGpdID0gKGJ5dGUpIGw7CisKKyAgICAgIFN5c3RlbS5hcnJheWNvcHkoeG1sZHNpZ0J5dGVzLCAyKnJhd0xlbiAtIGssIGFzbjFCeXRlcywgKDYgKyBqICsgbCkgLSBrLCBrKTsKKworICAgICAgcmV0dXJuIGFzbjFCeXRlczsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBTaWduYXR1cmVSU0EKKyAgICAqCisgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgU2lnbmF0dXJlRUNEU0EoKSB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIGFsZ29yaXRobUlEID0gSkNFTWFwcGVyLnRyYW5zbGF0ZVVSSXRvSkNFSUQodGhpcy5lbmdpbmVHZXRVUkkoKSk7CisKKyAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkKKyAgICAgIAlsb2cuZGVidWcoIkNyZWF0ZWQgU2lnbmF0dXJlRUNEU0EgdXNpbmcgIiArIGFsZ29yaXRobUlEKTsKKyAgICAgIFN0cmluZyBwcm92aWRlcj1KQ0VNYXBwZXIuZ2V0UHJvdmlkZXJJZCgpOworICAgICAgdHJ5IHsKKyAgICAgIAkgaWYgKHByb3ZpZGVyPT1udWxsKSB7CisgICAgICAJIAl0aGlzLl9zaWduYXR1cmVBbGdvcml0aG0gPSBTaWduYXR1cmUuZ2V0SW5zdGFuY2UoYWxnb3JpdGhtSUQpOworICAgICAgCSB9IGVsc2UgeworICAgICAgCSAJdGhpcy5fc2lnbmF0dXJlQWxnb3JpdGhtID0gU2lnbmF0dXJlLmdldEluc3RhbmNlKGFsZ29yaXRobUlELHByb3ZpZGVyKTsKKyAgICAgIAkgfQorICAgICAgfSBjYXRjaCAoamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIE9iamVjdFtdIGV4QXJncyA9IHsgYWxnb3JpdGhtSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4LmdldExvY2FsaXplZE1lc3NhZ2UoKSB9OworCisgICAgICAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJhbGdvcml0aG1zLk5vU3VjaEFsZ29yaXRobSIsIGV4QXJncyk7CisgICAgICB9IGNhdGNoIChOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiBleCkgeworICAgICAgCSBPYmplY3RbXSBleEFyZ3MgPSB7IGFsZ29yaXRobUlELAorICAgICAgCSAJCQkJCSBleC5nZXRMb2NhbGl6ZWRNZXNzYWdlKCkgfTsKKworICAgICAgCSB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJhbGdvcml0aG1zLk5vU3VjaEFsZ29yaXRobSIsIGV4QXJncyk7CisJfQorICAgfQorCisgICAvKiogQGluaGVyaXREb2MgKi8KKyAgIHByb3RlY3RlZCB2b2lkIGVuZ2luZVNldFBhcmFtZXRlcihBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIHBhcmFtcykKKyAgICAgICAgICAgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisKKyAgICAgIHRyeSB7CisgICAgICAgICB0aGlzLl9zaWduYXR1cmVBbGdvcml0aG0uc2V0UGFyYW1ldGVyKHBhcmFtcyk7CisgICAgICB9IGNhdGNoIChJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwcm90ZWN0ZWQgYm9vbGVhbiBlbmdpbmVWZXJpZnkoYnl0ZVtdIHNpZ25hdHVyZSkKKyAgICAgICAgICAgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisKKyAgICAgIHRyeSB7CisgICAgICAgICBieXRlW10gamNlYnl0ZXMgPSBTaWduYXR1cmVFQ0RTQS5jb252ZXJ0WE1MRFNJR3RvQVNOMShzaWduYXR1cmUpOworCisgICAgICAgICBpZiAobG9nLmlzRGVidWdFbmFibGVkKCkpCisgICAgICAgICAgICBsb2cuZGVidWcoIkNhbGxlZCBFQ0RTQS52ZXJpZnkoKSBvbiAiICsgQmFzZTY0LmVuY29kZShzaWduYXR1cmUpKTsKKyAgICAgICAgICAKKyAgICAgICAgIHJldHVybiB0aGlzLl9zaWduYXR1cmVBbGdvcml0aG0udmVyaWZ5KGpjZWJ5dGVzKTsKKyAgICAgIH0gY2F0Y2ggKFNpZ25hdHVyZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICB9CisgICB9CisKKyAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgcHJvdGVjdGVkIHZvaWQgZW5naW5lSW5pdFZlcmlmeShLZXkgcHVibGljS2V5KSB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKworICAgICAgaWYgKCEocHVibGljS2V5IGluc3RhbmNlb2YgUHVibGljS2V5KSkgeworICAgICAgICAgU3RyaW5nIHN1cHBsaWVkID0gcHVibGljS2V5LmdldENsYXNzKCkuZ2V0TmFtZSgpOworICAgICAgICAgU3RyaW5nIG5lZWRlZCA9IFB1YmxpY0tleS5jbGFzcy5nZXROYW1lKCk7CisgICAgICAgICBPYmplY3QgZXhBcmdzW10gPSB7IHN1cHBsaWVkLCBuZWVkZWQgfTsKKworICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiYWxnb3JpdGhtcy5Xcm9uZ0tleUZvclRoaXNPcGVyYXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleEFyZ3MpOworICAgICAgfQorCisgICAgICB0cnkgeworICAgICAgICAgdGhpcy5fc2lnbmF0dXJlQWxnb3JpdGhtLmluaXRWZXJpZnkoKFB1YmxpY0tleSkgcHVibGljS2V5KTsKKyAgICAgIH0gY2F0Y2ggKEludmFsaWRLZXlFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIC8vIHJlaW5zdGFudGlhdGUgU2lnbmF0dXJlIG9iamVjdCB0byB3b3JrIGFyb3VuZCBidWcgaW4gSkRLCisgICAgICAgICAgICAvLyBzZWU6IGh0dHA6Ly9idWdzLnN1bi5jb20vdmlld19idWcuZG8/YnVnX2lkPTQ5NTM1NTUKKyAgICAgICAgICAgIFNpZ25hdHVyZSBzaWcgPSB0aGlzLl9zaWduYXR1cmVBbGdvcml0aG07CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHRoaXMuX3NpZ25hdHVyZUFsZ29yaXRobSA9IFNpZ25hdHVyZS5nZXRJbnN0YW5jZQorICAgICAgICAgICAgICAgICAgICAoX3NpZ25hdHVyZUFsZ29yaXRobS5nZXRBbGdvcml0aG0oKSk7CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIC8vIHRoaXMgc2hvdWxkbid0IG9jY3VyLCBidXQgaWYgaXQgZG9lcywgcmVzdG9yZSBwcmV2aW91cworICAgICAgICAgICAgICAgIC8vIFNpZ25hdHVyZQorICAgICAgICAgICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBsb2cuZGVidWcoIkV4Y2VwdGlvbiB3aGVuIHJlaW5zdGFudGlhdGluZyBTaWduYXR1cmU6IiArIGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0aGlzLl9zaWduYXR1cmVBbGdvcml0aG0gPSBzaWc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwcm90ZWN0ZWQgYnl0ZVtdIGVuZ2luZVNpZ24oKSB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKworICAgICAgdHJ5IHsKKyAgICAgICAgIGJ5dGUgamNlYnl0ZXNbXSA9IHRoaXMuX3NpZ25hdHVyZUFsZ29yaXRobS5zaWduKCk7CisKKyAgICAgICAgIHJldHVybiBTaWduYXR1cmVFQ0RTQS5jb252ZXJ0QVNOMXRvWE1MRFNJRyhqY2VieXRlcyk7CisgICAgICB9IGNhdGNoIChTaWduYXR1cmVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwcm90ZWN0ZWQgdm9pZCBlbmdpbmVJbml0U2lnbihLZXkgcHJpdmF0ZUtleSwgU2VjdXJlUmFuZG9tIHNlY3VyZVJhbmRvbSkKKyAgICAgICAgICAgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisKKyAgICAgIGlmICghKHByaXZhdGVLZXkgaW5zdGFuY2VvZiBQcml2YXRlS2V5KSkgeworICAgICAgICAgU3RyaW5nIHN1cHBsaWVkID0gcHJpdmF0ZUtleS5nZXRDbGFzcygpLmdldE5hbWUoKTsKKyAgICAgICAgIFN0cmluZyBuZWVkZWQgPSBQcml2YXRlS2V5LmNsYXNzLmdldE5hbWUoKTsKKyAgICAgICAgIE9iamVjdCBleEFyZ3NbXSA9IHsgc3VwcGxpZWQsIG5lZWRlZCB9OworCisgICAgICAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJhbGdvcml0aG1zLldyb25nS2V5Rm9yVGhpc09wZXJhdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4QXJncyk7CisgICAgICB9CisKKyAgICAgIHRyeSB7CisgICAgICAgICB0aGlzLl9zaWduYXR1cmVBbGdvcml0aG0uaW5pdFNpZ24oKFByaXZhdGVLZXkpIHByaXZhdGVLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdXJlUmFuZG9tKTsKKyAgICAgIH0gY2F0Y2ggKEludmFsaWRLZXlFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgfQorICAgfQorCisgICAvKiogQGluaGVyaXREb2MgKi8KKyAgIHByb3RlY3RlZCB2b2lkIGVuZ2luZUluaXRTaWduKEtleSBwcml2YXRlS2V5KSB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKworICAgICAgaWYgKCEocHJpdmF0ZUtleSBpbnN0YW5jZW9mIFByaXZhdGVLZXkpKSB7CisgICAgICAgICBTdHJpbmcgc3VwcGxpZWQgPSBwcml2YXRlS2V5LmdldENsYXNzKCkuZ2V0TmFtZSgpOworICAgICAgICAgU3RyaW5nIG5lZWRlZCA9IFByaXZhdGVLZXkuY2xhc3MuZ2V0TmFtZSgpOworICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyBzdXBwbGllZCwgbmVlZGVkIH07CisKKyAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImFsZ29yaXRobXMuV3JvbmdLZXlGb3JUaGlzT3BlcmF0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhBcmdzKTsKKyAgICAgIH0KKworICAgICAgdHJ5IHsKKyAgICAgICAgIHRoaXMuX3NpZ25hdHVyZUFsZ29yaXRobS5pbml0U2lnbigoUHJpdmF0ZUtleSkgcHJpdmF0ZUtleSk7CisgICAgICB9IGNhdGNoIChJbnZhbGlkS2V5RXhjZXB0aW9uIGV4KSB7CisgICAgICAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwcm90ZWN0ZWQgdm9pZCBlbmdpbmVVcGRhdGUoYnl0ZVtdIGlucHV0KSB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKworICAgICAgdHJ5IHsKKyAgICAgICAgIHRoaXMuX3NpZ25hdHVyZUFsZ29yaXRobS51cGRhdGUoaW5wdXQpOworICAgICAgfSBjYXRjaCAoU2lnbmF0dXJlRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwcm90ZWN0ZWQgdm9pZCBlbmdpbmVVcGRhdGUoYnl0ZSBpbnB1dCkgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisKKyAgICAgIHRyeSB7CisgICAgICAgICB0aGlzLl9zaWduYXR1cmVBbGdvcml0aG0udXBkYXRlKGlucHV0KTsKKyAgICAgIH0gY2F0Y2ggKFNpZ25hdHVyZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICB9CisgICB9CisKKyAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgcHJvdGVjdGVkIHZvaWQgZW5naW5lVXBkYXRlKGJ5dGUgYnVmW10sIGludCBvZmZzZXQsIGludCBsZW4pCisgICAgICAgICAgIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworCisgICAgICB0cnkgeworICAgICAgICAgdGhpcy5fc2lnbmF0dXJlQWxnb3JpdGhtLnVwZGF0ZShidWYsIG9mZnNldCwgbGVuKTsKKyAgICAgIH0gY2F0Y2ggKFNpZ25hdHVyZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICB9CisgICB9CisKKyAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgcHJvdGVjdGVkIFN0cmluZyBlbmdpbmVHZXRKQ0VBbGdvcml0aG1TdHJpbmcoKSB7CisgICAgICByZXR1cm4gdGhpcy5fc2lnbmF0dXJlQWxnb3JpdGhtLmdldEFsZ29yaXRobSgpOworICAgfQorCisgICAvKiogQGluaGVyaXREb2MgKi8KKyAgIHByb3RlY3RlZCBTdHJpbmcgZW5naW5lR2V0SkNFUHJvdmlkZXJOYW1lKCkgeworICAgICAgcmV0dXJuIHRoaXMuX3NpZ25hdHVyZUFsZ29yaXRobS5nZXRQcm92aWRlcigpLmdldE5hbWUoKTsKKyAgIH0KKworICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwcm90ZWN0ZWQgdm9pZCBlbmdpbmVTZXRITUFDT3V0cHV0TGVuZ3RoKGludCBITUFDT3V0cHV0TGVuZ3RoKQorICAgICAgICAgICB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKyAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImFsZ29yaXRobXMuSE1BQ091dHB1dExlbmd0aE9ubHlGb3JITUFDIik7CisgICB9CisKKyAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgcHJvdGVjdGVkIHZvaWQgZW5naW5lSW5pdFNpZ24oCisgICAgICAgICAgIEtleSBzaWduaW5nS2V5LCBBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIGFsZ29yaXRobVBhcmFtZXRlclNwZWMpCisgICAgICAgICAgICAgIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigKKyAgICAgICAgICJhbGdvcml0aG1zLkNhbm5vdFVzZUFsZ29yaXRobVBhcmFtZXRlclNwZWNPblJTQSIpOworICAgfQorCisgICAvKioKKyAgICAqIENsYXNzIFNpZ25hdHVyZVJTQVNIQTEKKyAgICAqCisgICAgKiBAYXV0aG9yICRBdXRob3I6IG1hcmN4ICQKKyAgICAqIEB2ZXJzaW9uICRSZXZpc2lvbjogMzUxMTc2ICQKKyAgICAqLworICAgcHVibGljIHN0YXRpYyBjbGFzcyBTaWduYXR1cmVFQ0RTQVNIQTEgZXh0ZW5kcyBTaWduYXR1cmVFQ0RTQSB7CisKKyAgICAgIC8qKgorICAgICAgICogQ29uc3RydWN0b3IgU2lnbmF0dXJlUlNBU0hBMQorICAgICAgICoKKyAgICAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgICAgKi8KKyAgICAgIHB1YmxpYyBTaWduYXR1cmVFQ0RTQVNIQTEoKSB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKyAgICAgICAgIHN1cGVyKCk7CisgICAgICB9CisKKyAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgICAgcHVibGljIFN0cmluZyBlbmdpbmVHZXRVUkkoKSB7CisgICAgICAgICByZXR1cm4gWE1MU2lnbmF0dXJlLkFMR09fSURfU0lHTkFUVVJFX0VDRFNBX1NIQTE7CisgICAgICB9CisgICB9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9hbGdvcml0aG1zL2ltcGxlbWVudGF0aW9ucy9wYWNrYWdlLmh0bWwgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYWxnb3JpdGhtcy9pbXBsZW1lbnRhdGlvbnMvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4Mjg5NzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYWxnb3JpdGhtcy9pbXBsZW1lbnRhdGlvbnMvcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsMyBAQAorPEhUTUw+IDxIRUFEPiA8L0hFQUQ+IDxCT0RZPiA8UD4KK2ltcGxlbWVudGF0aW9ucyBvZiB7QGxpbmsgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYWxnb3JpdGhtcy5TaWduYXR1cmVBbGdvcml0aG1TcGl9LgorPC9QPjwvQk9EWT4gPC9IVE1MPgpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2FsZ29yaXRobXMvcGFja2FnZS5odG1sIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2FsZ29yaXRobXMvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkNWMxMjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYWxnb3JpdGhtcy9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSwzIEBACis8SFRNTD48SEVBRD48L0hFQUQ+PEJPRFk+PFA+CithbGdvcml0aG0gZmFjdG9yaWVzLgorPC9QPjwvQk9EWT48L0hUTUw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbi5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNzlmMzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9DYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uLmphdmEKQEAgLTAsMCArMSw4NSBAQAorCisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuOworCisKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmV4Y2VwdGlvbnMuWE1MU2VjdXJpdHlFeGNlcHRpb247CisKKworLyoqCisgKiBDbGFzcyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgKgorICogQGF1dGhvciBDaHJpc3RpYW4gR2V1ZXItUG9sbG1hbm4KKyAqLworcHVibGljIGNsYXNzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24gZXh0ZW5kcyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisKKyAgIC8qKgorCSAqIAorCSAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOworCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAqCisgICAgKi8KKyAgIHB1YmxpYyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uKCkgeworICAgICAgc3VwZXIoKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICovCisgICBwdWJsaWMgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbihTdHJpbmcgX21zZ0lEKSB7CisgICAgICBzdXBlcihfbXNnSUQpOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKiBAcGFyYW0gZXhBcmdzCisgICAgKi8KKyAgIHB1YmxpYyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uKFN0cmluZyBfbXNnSUQsIE9iamVjdCBleEFyZ3NbXSkgeworICAgICAgc3VwZXIoX21zZ0lELCBleEFyZ3MpOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKiBAcGFyYW0gX29yaWdpbmFsRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uKFN0cmluZyBfbXNnSUQsIEV4Y2VwdGlvbiBfb3JpZ2luYWxFeGNlcHRpb24pIHsKKyAgICAgIHN1cGVyKF9tc2dJRCwgX29yaWdpbmFsRXhjZXB0aW9uKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICogQHBhcmFtIGV4QXJncworICAgICogQHBhcmFtIF9vcmlnaW5hbEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbihTdHJpbmcgX21zZ0lELCBPYmplY3QgZXhBcmdzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb24gX29yaWdpbmFsRXhjZXB0aW9uKSB7CisgICAgICBzdXBlcihfbXNnSUQsIGV4QXJncywgX29yaWdpbmFsRXhjZXB0aW9uKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL0Nhbm9uaWNhbGl6ZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL0Nhbm9uaWNhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTkxZDlkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vQ2Fub25pY2FsaXplci5qYXZhCkBAIC0wLDAgKzEsMzU2IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDggVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuOworCitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CisKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXI7CitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmV4Y2VwdGlvbnMuQWxnb3JpdGhtQWxyZWFkeVJlZ2lzdGVyZWRFeGNlcHRpb247CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKK2ltcG9ydCBvcmcueG1sLnNheC5JbnB1dFNvdXJjZTsKKworLyoqCisgKgorICogQGF1dGhvciBDaHJpc3RpYW4gR2V1ZXItUG9sbG1hbm4KKyAqLworcHVibGljIGNsYXNzIENhbm9uaWNhbGl6ZXIgeworCisgICAgLyoqIFRoZSBvdXRwdXQgZW5jb2Rpbmcgb2YgY2Fub25pY2FsaXplZCBkYXRhICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRU5DT0RJTkcgPSAiVVRGOCI7CisgICAKKyAgICAvKioKKyAgICAgKiBYUGF0aCBFeHByZXNpb24gZm9yIHNlbGVjdGluZyBldmVyeSBub2RlIGFuZCBjb250aW51b3VzIGNvbW1lbnRzIGpvaW5lZCAKKyAgICAgKiBpbiBvbmx5IG9uZSBub2RlIAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFhQQVRIX0MxNE5fV0lUSF9DT01NRU5UU19TSU5HTEVfTk9ERSA9IAorCSIoLi8vLiB8IC4vL0AqIHwgLi8vbmFtZXNwYWNlOjoqKSI7CisgICAKKyAgICAvKioKKyAgICAgKiBUaGUgVVJMIGRlZmluZWQgaW4gWE1MLVNFQyBSZWMgZm9yIGluY2x1c2l2ZSBjMTRuIDxiPndpdGhvdXQ8L2I+IGNvbW1lbnRzLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFMR09fSURfQzE0Tl9PTUlUX0NPTU1FTlRTID0gCisJImh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1IjsKKyAgICAvKioKKyAgICAgKiBUaGUgVVJMIGRlZmluZWQgaW4gWE1MLVNFQyBSZWMgZm9yIGluY2x1c2l2ZSBjMTRuIDxiPndpdGg8L2I+IGNvbW1lbnRzLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFMR09fSURfQzE0Tl9XSVRIX0NPTU1FTlRTID0gCisJQUxHT19JRF9DMTROX09NSVRfQ09NTUVOVFMgKyAiI1dpdGhDb21tZW50cyI7CisgICAgLyoqCisgICAgICogVGhlIFVSTCBkZWZpbmVkIGluIFhNTC1TRUMgUmVjIGZvciBleGNsdXNpdmUgYzE0biA8Yj53aXRob3V0PC9iPiBjb21tZW50cy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBTEdPX0lEX0MxNE5fRVhDTF9PTUlUX0NPTU1FTlRTID0gCisJImh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI7CisgICAgLyoqCisgICAgICogVGhlIFVSTCBkZWZpbmVkIGluIFhNTC1TRUMgUmVjIGZvciBleGNsdXNpdmUgYzE0biA8Yj53aXRoPC9iPiBjb21tZW50cy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBTEdPX0lEX0MxNE5fRVhDTF9XSVRIX0NPTU1FTlRTID0gCisJQUxHT19JRF9DMTROX0VYQ0xfT01JVF9DT01NRU5UUyArICJXaXRoQ29tbWVudHMiOworICAgIC8qKgorICAgICAqIFRoZSBVUkkgZm9yIGluY2x1c2l2ZSBjMTRuIDEuMSA8Yj53aXRob3V0PC9iPiBjb21tZW50cy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBTEdPX0lEX0MxNE4xMV9PTUlUX0NPTU1FTlRTID0gCisJImh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSI7CisgICAgLyoqCisgICAgICogVGhlIFVSSSBmb3IgaW5jbHVzaXZlIGMxNG4gMS4xIDxiPndpdGg8L2I+IGNvbW1lbnRzLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFMR09fSURfQzE0TjExX1dJVEhfQ09NTUVOVFMgPSAKKwlBTEdPX0lEX0MxNE4xMV9PTUlUX0NPTU1FTlRTICsgIiNXaXRoQ29tbWVudHMiOworCisgICAgc3RhdGljIGJvb2xlYW4gX2FscmVhZHlJbml0aWFsaXplZCA9IGZhbHNlOworICAgIHN0YXRpYyBNYXAgX2Nhbm9uaWNhbGl6ZXJIYXNoID0gbnVsbDsKKworICAgIHByb3RlY3RlZCBDYW5vbmljYWxpemVyU3BpIGNhbm9uaWNhbGl6ZXJTcGkgPSBudWxsOworCisgICAgLyoqCisgICAgICogTWV0aG9kIGluaXQKKyAgICAgKgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBpbml0KCkgeworCisgICAgICAgIGlmICghQ2Fub25pY2FsaXplci5fYWxyZWFkeUluaXRpYWxpemVkKSB7CisgICAgICAgICAgICBDYW5vbmljYWxpemVyLl9jYW5vbmljYWxpemVySGFzaCA9IG5ldyBIYXNoTWFwKDEwKTsKKyAgICAgICAgICAgIENhbm9uaWNhbGl6ZXIuX2FscmVhZHlJbml0aWFsaXplZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RvciBDYW5vbmljYWxpemVyCisgICAgICoKKyAgICAgKiBAcGFyYW0gYWxnb3JpdGhtVVJJCisgICAgICogQHRocm93cyBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbgorICAgICAqLworICAgIHByaXZhdGUgQ2Fub25pY2FsaXplcihTdHJpbmcgYWxnb3JpdGhtVVJJKQorICAgICAgICAgICB0aHJvd3MgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24geworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBDbGFzcyBpbXBsZW1lbnRpbmdDbGFzcyA9IGdldEltcGxlbWVudGluZ0NsYXNzKGFsZ29yaXRobVVSSSk7CisKKyAgICAgICAgICAgIHRoaXMuY2Fub25pY2FsaXplclNwaSA9CisgICAgICAgICAgICAgICAgKENhbm9uaWNhbGl6ZXJTcGkpIGltcGxlbWVudGluZ0NsYXNzLm5ld0luc3RhbmNlKCk7CisgICAgICAgICAgICB0aGlzLmNhbm9uaWNhbGl6ZXJTcGkucmVzZXQ9dHJ1ZTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIE9iamVjdCBleEFyZ3NbXSA9IHsgYWxnb3JpdGhtVVJJIH07CisKKyAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICJzaWduYXR1cmUuQ2Fub25pY2FsaXplci5Vbmtub3duQ2Fub25pY2FsaXplciIsIGV4QXJncyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNZXRob2QgZ2V0SW5zdGFuY2UKKyAgICAgKgorICAgICAqIEBwYXJhbSBhbGdvcml0aG1VUkkKKyAgICAgKiBAcmV0dXJuIGEgQ29uaWNpY2FsaXplciBpbnN0YW5jZSByZWFkeSBmb3IgdGhlIGpvYgorICAgICAqIEB0aHJvd3MgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIENhbm9uaWNhbGl6ZXIgZ2V0SW5zdGFuY2UoU3RyaW5nIGFsZ29yaXRobVVSSSkKKyAgICAgICAgICAgdGhyb3dzIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uIHsKKworICAgICAgICBDYW5vbmljYWxpemVyIGMxNG5pemVyID0gbmV3IENhbm9uaWNhbGl6ZXIoYWxnb3JpdGhtVVJJKTsKKworICAgICAgICByZXR1cm4gYzE0bml6ZXI7CisgICAgfQorCisgICAgLyoqCisgICAgICogTWV0aG9kIHJlZ2lzdGVyCisgICAgICoKKyAgICAgKiBAcGFyYW0gYWxnb3JpdGhtVVJJCisgICAgICogQHBhcmFtIGltcGxlbWVudGluZ0NsYXNzCisgICAgICogQHRocm93cyBBbGdvcml0aG1BbHJlYWR5UmVnaXN0ZXJlZEV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCByZWdpc3RlcihTdHJpbmcgYWxnb3JpdGhtVVJJLCBTdHJpbmcgaW1wbGVtZW50aW5nQ2xhc3MpCisgICAgICAgICAgIHRocm93cyBBbGdvcml0aG1BbHJlYWR5UmVnaXN0ZXJlZEV4Y2VwdGlvbiB7CisKKyAgICAgICAgLy8gY2hlY2sgd2hldGhlciBVUkkgaXMgYWxyZWFkeSByZWdpc3RlcmVkCisgICAgICAgIENsYXNzIHJlZ2lzdGVyZWRDbGFzcyA9IGdldEltcGxlbWVudGluZ0NsYXNzKGFsZ29yaXRobVVSSSk7CisKKyAgICAgICAgaWYgKHJlZ2lzdGVyZWRDbGFzcyAhPSBudWxsKSAgeworICAgICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyBhbGdvcml0aG1VUkksIHJlZ2lzdGVyZWRDbGFzcyB9OworCisgICAgICAgICAgICB0aHJvdyBuZXcgQWxnb3JpdGhtQWxyZWFkeVJlZ2lzdGVyZWRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgImFsZ29yaXRobS5hbHJlYWR5UmVnaXN0ZXJlZCIsIGV4QXJncyk7CisgICAgICAgIH0KKworICAgICAgICB0cnkgeworCSAgICBfY2Fub25pY2FsaXplckhhc2gucHV0KGFsZ29yaXRobVVSSSwgQ2xhc3MuZm9yTmFtZShpbXBsZW1lbnRpbmdDbGFzcykpOworCX0gY2F0Y2ggKENsYXNzTm90Rm91bmRFeGNlcHRpb24gZSkgeworCSAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiYzE0biBjbGFzcyBub3QgZm91bmQiKTsKKwl9CisgICAgfQorCisgICAgLyoqCisgICAgICogTWV0aG9kIGdldFVSSQorICAgICAqCisgICAgICogQHJldHVybiB0aGUgVVJJIGRlZmluZWQgZm9yIHRoaXMgYzE0biBpbnN0YW5jZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldFVSSSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuY2Fub25pY2FsaXplclNwaS5lbmdpbmVHZXRVUkkoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNZXRob2QgZ2V0SW5jbHVkZUNvbW1lbnRzCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGMxNG4gcmVzcGVjdCB0aGUgY29tbWVudHMuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZ2V0SW5jbHVkZUNvbW1lbnRzKCkgeworICAgICAgICByZXR1cm4gdGhpcy5jYW5vbmljYWxpemVyU3BpLmVuZ2luZUdldEluY2x1ZGVDb21tZW50cygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgbWV0aG9kIHRyaWVzIHRvIGNhbm9uaWNhbGl6ZSB0aGUgZ2l2ZW4gYnl0ZXMuIEl0J3MgcG9zc2libGUgdG8gZXZlbgorICAgICAqIGNhbm9uaWNhbGl6ZSBub24td2VsbGZvcm1lZCBzZXF1ZW5jZXMgaWYgdGhleSBhcmUgd2VsbC1mb3JtZWQgYWZ0ZXIgYmVpbmcKKyAgICAgKiB3cmFwcGVkIHdpdGggYSA8Q09ERT4mZ3Q7YSZsdDsuLi4mZ3Q7L2EmbHQ7PC9DT0RFPi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBpbnB1dEJ5dGVzCisgICAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBjb25pY2FsaXphdGlvbi4KKyAgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIGphdmEuaW8uSU9FeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIGphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBieXRlW10gY2Fub25pY2FsaXplKGJ5dGVbXSBpbnB1dEJ5dGVzKQorICAgICAgICAgICB0aHJvd3MgamF2YXgueG1sLnBhcnNlcnMuUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIGphdmEuaW8uSU9FeGNlcHRpb24sIG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24geworCisgICAgICAgIEJ5dGVBcnJheUlucHV0U3RyZWFtIGJhaXMgPSBuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oaW5wdXRCeXRlcyk7CisgICAgICAgIElucHV0U291cmNlIGluID0gbmV3IElucHV0U291cmNlKGJhaXMpOworICAgICAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRmYWN0b3J5ID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCisgICAgICAgIGRmYWN0b3J5LnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworCisgICAgICAgIC8vIG5lZWRzIHRvIHZhbGlkYXRlIGZvciBJRCBhdHRyaWJ1dGUgbm9tYWxpemF0aW9uCisgICAgICAgIGRmYWN0b3J5LnNldFZhbGlkYXRpbmcodHJ1ZSk7CisKKyAgICAgICAgRG9jdW1lbnRCdWlsZGVyIGRiID0gZGZhY3RvcnkubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZm9yIHNvbWUgb2YgdGhlIHRlc3QgdmVjdG9ycyBmcm9tIHRoZSBzcGVjaWZpY2F0aW9uLAorICAgICAgICAgKiB0aGVyZSBoYXMgdG8gYmUgYSB2YWxpZGF0aW4gcGFyc2VyIGZvciBJRCBhdHRyaWJ1dGVzLCBkZWZhdWx0CisgICAgICAgICAqIGF0dHJpYnV0ZSB2YWx1ZXMsIE5NVE9LRU5TLCBldGMuCisgICAgICAgICAqIFVuZm9ydHVuYWx0ZWx5LCB0aGUgdGVzdCB2ZWN0b3JzIGRvIHVzZSBkaWZmZXJlbnQgRFREcyBvcgorICAgICAgICAgKiBldmVuIG5vIERURC4gU28gWGVyY2VzIDEuMy4xIGZpcmVzIG1hbnkgd2FybmluZ3MgYWJvdXQgdXNpbmcKKyAgICAgICAgICogRXJyb3JIYW5kbGVycy4KKyAgICAgICAgICoKKyAgICAgICAgICogVGV4dCBmcm9tIHRoZSBzcGVjOgorICAgICAgICAgKgorICAgICAgICAgKiBUaGUgaW5wdXQgb2N0ZXQgc3RyZWFtIE1VU1QgY29udGFpbiBhIHdlbGwtZm9ybWVkIFhNTCBkb2N1bWVudCwKKyAgICAgICAgICogYnV0IHRoZSBpbnB1dCBuZWVkIG5vdCBiZSB2YWxpZGF0ZWQuIEhvd2V2ZXIsIHRoZSBhdHRyaWJ1dGUKKyAgICAgICAgICogdmFsdWUgbm9ybWFsaXphdGlvbiBhbmQgZW50aXR5IHJlZmVyZW5jZSByZXNvbHV0aW9uIE1VU1QgYmUKKyAgICAgICAgICogcGVyZm9ybWVkIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgYmVoYXZpb3JzIG9mIGEgdmFsaWRhdGluZworICAgICAgICAgKiBYTUwgcHJvY2Vzc29yLiBBcyB3ZWxsLCBub2RlcyBmb3IgZGVmYXVsdCBhdHRyaWJ1dGVzIChkZWNsYXJlZAorICAgICAgICAgKiBpbiB0aGUgQVRUTElTVCB3aXRoIGFuIEF0dFZhbHVlIGJ1dCBub3Qgc3BlY2lmaWVkKSBhcmUgY3JlYXRlZAorICAgICAgICAgKiBpbiBlYWNoIGVsZW1lbnQuIFRodXMsIHRoZSBkZWNsYXJhdGlvbnMgaW4gdGhlIGRvY3VtZW50IHR5cGUKKyAgICAgICAgICogZGVjbGFyYXRpb24gYXJlIHVzZWQgdG8gaGVscCBjcmVhdGUgdGhlIGNhbm9uaWNhbCBmb3JtLCBldmVuCisgICAgICAgICAqIHRob3VnaCB0aGUgZG9jdW1lbnQgdHlwZSBkZWNsYXJhdGlvbiBpcyBub3QgcmV0YWluZWQgaW4gdGhlCisgICAgICAgICAqIGNhbm9uaWNhbCBmb3JtLgorICAgICAgICAgKgorICAgICAgICAgKi8KKyAgICAgICAgZGIuc2V0RXJyb3JIYW5kbGVyKG5ldyBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscworICAgICAgICAgICAgLklnbm9yZUFsbEVycm9ySGFuZGxlcigpKTsKKworICAgICAgICBEb2N1bWVudCBkb2N1bWVudCA9IGRiLnBhcnNlKGluKTsKKyAgICAgICAgYnl0ZSByZXN1bHRbXSA9IHRoaXMuY2Fub25pY2FsaXplU3VidHJlZShkb2N1bWVudCk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDYW5vbmljYWxpemVzIHRoZSBzdWJ0cmVlIHJvb3RlZCBieSA8Q09ERT5ub2RlPC9DT0RFPi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBub2RlIFRoZSBub2RlIHRvIGNhbmljYWxpemUKKyAgICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGMxNG4uCisgICAgICoKKyAgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgYnl0ZVtdIGNhbm9uaWNhbGl6ZVN1YnRyZWUoTm9kZSBub2RlKQorICAgICAgICAgICB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIHJldHVybiB0aGlzLmNhbm9uaWNhbGl6ZXJTcGkuZW5naW5lQ2Fub25pY2FsaXplU3ViVHJlZShub2RlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDYW5vbmljYWxpemVzIHRoZSBzdWJ0cmVlIHJvb3RlZCBieSA8Q09ERT5ub2RlPC9DT0RFPi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBub2RlCisgICAgICogQHBhcmFtIGluY2x1c2l2ZU5hbWVzcGFjZXMKKyAgICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGMxNG4uCisgICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIGJ5dGVbXSBjYW5vbmljYWxpemVTdWJ0cmVlKE5vZGUgbm9kZSwgU3RyaW5nIGluY2x1c2l2ZU5hbWVzcGFjZXMpCisgICAgICAgICAgIHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuY2Fub25pY2FsaXplclNwaS5lbmdpbmVDYW5vbmljYWxpemVTdWJUcmVlKG5vZGUsCisgICAgICAgICAgICAgIGluY2x1c2l2ZU5hbWVzcGFjZXMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENhbm9uaWNhbGl6ZXMgYW4gWFBhdGggbm9kZSBzZXQuIFRoZSA8Q09ERT54cGF0aE5vZGVTZXQ8L0NPREU+IGlzIHRyZWF0ZWQKKyAgICAgKiBhcyBhIGxpc3Qgb2YgWFBhdGggbm9kZXMsIG5vdCBhcyBhIGxpc3Qgb2Ygc3VidHJlZXMuCisgICAgICoKKyAgICAgKiBAcGFyYW0geHBhdGhOb2RlU2V0CisgICAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBjMTRuLgorICAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBieXRlW10gY2Fub25pY2FsaXplWFBhdGhOb2RlU2V0KE5vZGVMaXN0IHhwYXRoTm9kZVNldCkKKyAgICAgICAgICAgdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24geworICAgICAgICByZXR1cm4gdGhpcy5jYW5vbmljYWxpemVyU3BpLmVuZ2luZUNhbm9uaWNhbGl6ZVhQYXRoTm9kZVNldCh4cGF0aE5vZGVTZXQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENhbm9uaWNhbGl6ZXMgYW4gWFBhdGggbm9kZSBzZXQuIFRoZSA8Q09ERT54cGF0aE5vZGVTZXQ8L0NPREU+IGlzIHRyZWF0ZWQKKyAgICAgKiBhcyBhIGxpc3Qgb2YgWFBhdGggbm9kZXMsIG5vdCBhcyBhIGxpc3Qgb2Ygc3VidHJlZXMuCisgICAgICoKKyAgICAgKiBAcGFyYW0geHBhdGhOb2RlU2V0CisgICAgICogQHBhcmFtIGluY2x1c2l2ZU5hbWVzcGFjZXMKKyAgICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGMxNG4uCisgICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIGJ5dGVbXSBjYW5vbmljYWxpemVYUGF0aE5vZGVTZXQoCisgICAgICAgICAgIE5vZGVMaXN0IHhwYXRoTm9kZVNldCwgU3RyaW5nIGluY2x1c2l2ZU5hbWVzcGFjZXMpCisgICAgICAgICAgICAgIHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuY2Fub25pY2FsaXplclNwaS5lbmdpbmVDYW5vbmljYWxpemVYUGF0aE5vZGVTZXQoeHBhdGhOb2RlU2V0LAorICAgICAgICAgICAgICBpbmNsdXNpdmVOYW1lc3BhY2VzKTsKKyAgICB9IAorCisgICAgLyoqCisgICAgICogQ2Fub25pY2FsaXplcyBhbiBYUGF0aCBub2RlIHNldC4KKyAgICAgKgorICAgICAqIEBwYXJhbSB4cGF0aE5vZGVTZXQKKyAgICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGMxNG4uCisgICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIGJ5dGVbXSBjYW5vbmljYWxpemVYUGF0aE5vZGVTZXQoU2V0IHhwYXRoTm9kZVNldCkKKyAgICAgICAgICAgdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24geworICAgICAgICByZXR1cm4gdGhpcy5jYW5vbmljYWxpemVyU3BpLmVuZ2luZUNhbm9uaWNhbGl6ZVhQYXRoTm9kZVNldCh4cGF0aE5vZGVTZXQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENhbm9uaWNhbGl6ZXMgYW4gWFBhdGggbm9kZSBzZXQuCisgICAgICoKKyAgICAgKiBAcGFyYW0geHBhdGhOb2RlU2V0CisgICAgICogQHBhcmFtIGluY2x1c2l2ZU5hbWVzcGFjZXMKKyAgICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGMxNG4uCisgICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIGJ5dGVbXSBjYW5vbmljYWxpemVYUGF0aE5vZGVTZXQoU2V0IHhwYXRoTm9kZVNldCwgCisJU3RyaW5nIGluY2x1c2l2ZU5hbWVzcGFjZXMpIHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuY2Fub25pY2FsaXplclNwaS5lbmdpbmVDYW5vbmljYWxpemVYUGF0aE5vZGVTZXQoeHBhdGhOb2RlU2V0LAorICAgICAgICAgICAgaW5jbHVzaXZlTmFtZXNwYWNlcyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgd3JpdGVyIHdoZXJlIHRoZSBjYW5vbmljYWxpemF0aW9uIGVuZHMuICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gCisgICAgICogaWYgbm9uZSBpcyBzZXQuCisgICAgICogQHBhcmFtIG9zCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0V3JpdGVyKE91dHB1dFN0cmVhbSBvcykgeworICAgICAgICB0aGlzLmNhbm9uaWNhbGl6ZXJTcGkuc2V0V3JpdGVyKG9zKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBpbXBsZW1lbnRpbmcge0BsaW5rIENhbm9uaWNhbGl6ZXJTcGl9IGNsYXNzCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBpbXBsZW1lbnRpbmcge0BsaW5rIENhbm9uaWNhbGl6ZXJTcGl9IGNsYXNzCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXRJbXBsZW1lbnRpbmdDYW5vbmljYWxpemVyQ2xhc3MoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmNhbm9uaWNhbGl6ZXJTcGkuZ2V0Q2xhc3MoKS5nZXROYW1lKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogTWV0aG9kIGdldEltcGxlbWVudGluZ0NsYXNzCisgICAgICogCisgICAgICogQHBhcmFtIFVSSQorICAgICAqIEByZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGNsYXNzIHRoYXQgaW1wbGVtZW50cyB0aGUgZ2l2ZW4gVVJJCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgQ2xhc3MgZ2V0SW1wbGVtZW50aW5nQ2xhc3MoU3RyaW5nIFVSSSkgeworICAgICAgICByZXR1cm4gKENsYXNzKSBfY2Fub25pY2FsaXplckhhc2guZ2V0KFVSSSk7ICAgICAgICAgCisgICAgfQorICAgCisgICAgLyoqCisgICAgICogU2V0IHRoZSBjYW5vbmljYWxpemVyIGJlaGF2aW91ciB0byBub3QgcmVzZXQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgbm90UmVzZXQoKSB7CisgICAgICAgIHRoaXMuY2Fub25pY2FsaXplclNwaS5yZXNldCA9IGZhbHNlOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL0Nhbm9uaWNhbGl6ZXJTcGkuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL0Nhbm9uaWNhbGl6ZXJTcGkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWIxZjUwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vQ2Fub25pY2FsaXplclNwaS5qYXZhCkBAIC0wLDAgKzEsMTk1IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuOworCisKKworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS51dGlsLlNldDsKKworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKK2ltcG9ydCBvcmcueG1sLnNheC5JbnB1dFNvdXJjZTsKKworCisvKioKKyAqIEJhc2UgY2xhc3Mgd2hpY2ggYWxsIENhbmluaWNhbGl6YXRpb24gYWxnb3JpdGhtcyBleHRlbmQuCisgKgorICogJHRvZG8kIGNhbmdlIEphdmFEb2MKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEdldWVyLVBvbGxtYW5uCisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBDYW5vbmljYWxpemVyU3BpIHsKKworICAgLyoqCisgICAgKiBNZXRob2QgY2Fub25pY2FsaXplCisgICAgKgorICAgICoKKyAgICAqIEBwYXJhbSBpbnB1dEJ5dGVzCisgICAgKiBAcmV0dXJuIHRoZSBjMTRuIGJ5dGVzLiAKKyAgICAqCisgICAgKgorICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIGphdmEuaW8uSU9FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgamF2YXgueG1sLnBhcnNlcnMuUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBvcmcueG1sLnNheC5TQVhFeGNlcHRpb24KKyAgICAqCisgICAgKi8KKyAgIHB1YmxpYyBieXRlW10gZW5naW5lQ2Fub25pY2FsaXplKGJ5dGVbXSBpbnB1dEJ5dGVzKQorICAgICAgICAgICB0aHJvd3MgamF2YXgueG1sLnBhcnNlcnMuUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIGphdmEuaW8uSU9FeGNlcHRpb24sIG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24geworCisgICAgICBqYXZhLmlvLkJ5dGVBcnJheUlucHV0U3RyZWFtIGJhaXMgPSBuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oaW5wdXRCeXRlcyk7CisgICAgICBJbnB1dFNvdXJjZSBpbiA9IG5ldyBJbnB1dFNvdXJjZShiYWlzKTsKKyAgICAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkgZGZhY3RvcnkgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisKKyAgICAgIC8vIG5lZWRzIHRvIHZhbGlkYXRlIGZvciBJRCBhdHRyaWJ1dGUgbm9tYWxpemF0aW9uCisgICAgICBkZmFjdG9yeS5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKworICAgICAgRG9jdW1lbnRCdWlsZGVyIGRiID0gZGZhY3RvcnkubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisKKyAgICAgIC8qCisgICAgICAgKiBmb3Igc29tZSBvZiB0aGUgdGVzdCB2ZWN0b3JzIGZyb20gdGhlIHNwZWNpZmljYXRpb24sCisgICAgICAgKiB0aGVyZSBoYXMgdG8gYmUgYSB2YWxpZGF0aW4gcGFyc2VyIGZvciBJRCBhdHRyaWJ1dGVzLCBkZWZhdWx0CisgICAgICAgKiBhdHRyaWJ1dGUgdmFsdWVzLCBOTVRPS0VOUywgZXRjLgorICAgICAgICogVW5mb3J0dW5hbHRlbHksIHRoZSB0ZXN0IHZlY3RvcnMgZG8gdXNlIGRpZmZlcmVudCBEVERzIG9yCisgICAgICAgKiBldmVuIG5vIERURC4gU28gWGVyY2VzIDEuMy4xIGZpcmVzIG1hbnkgd2FybmluZ3MgYWJvdXQgdXNpbmcKKyAgICAgICAqIEVycm9ySGFuZGxlcnMuCisgICAgICAgKgorICAgICAgICogVGV4dCBmcm9tIHRoZSBzcGVjOgorICAgICAgICoKKyAgICAgICAqIFRoZSBpbnB1dCBvY3RldCBzdHJlYW0gTVVTVCBjb250YWluIGEgd2VsbC1mb3JtZWQgWE1MIGRvY3VtZW50LAorICAgICAgICogYnV0IHRoZSBpbnB1dCBuZWVkIG5vdCBiZSB2YWxpZGF0ZWQuIEhvd2V2ZXIsIHRoZSBhdHRyaWJ1dGUKKyAgICAgICAqIHZhbHVlIG5vcm1hbGl6YXRpb24gYW5kIGVudGl0eSByZWZlcmVuY2UgcmVzb2x1dGlvbiBNVVNUIGJlCisgICAgICAgKiBwZXJmb3JtZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBiZWhhdmlvcnMgb2YgYSB2YWxpZGF0aW5nCisgICAgICAgKiBYTUwgcHJvY2Vzc29yLiBBcyB3ZWxsLCBub2RlcyBmb3IgZGVmYXVsdCBhdHRyaWJ1dGVzIChkZWNsYXJlZAorICAgICAgICogaW4gdGhlIEFUVExJU1Qgd2l0aCBhbiBBdHRWYWx1ZSBidXQgbm90IHNwZWNpZmllZCkgYXJlIGNyZWF0ZWQKKyAgICAgICAqIGluIGVhY2ggZWxlbWVudC4gVGh1cywgdGhlIGRlY2xhcmF0aW9ucyBpbiB0aGUgZG9jdW1lbnQgdHlwZQorICAgICAgICogZGVjbGFyYXRpb24gYXJlIHVzZWQgdG8gaGVscCBjcmVhdGUgdGhlIGNhbm9uaWNhbCBmb3JtLCBldmVuCisgICAgICAgKiB0aG91Z2ggdGhlIGRvY3VtZW50IHR5cGUgZGVjbGFyYXRpb24gaXMgbm90IHJldGFpbmVkIGluIHRoZQorICAgICAgICogY2Fub25pY2FsIGZvcm0uCisgICAgICAgKgorICAgICAgICovCisKKyAgICAgIC8vIEVycm9ySGFuZGxlciBlaCA9IG5ldyBDMTRORXJyb3JIYW5kbGVyKCk7CisgICAgICAvLyBkYi5zZXRFcnJvckhhbmRsZXIoZWgpOworICAgICAgRG9jdW1lbnQgZG9jdW1lbnQgPSBkYi5wYXJzZShpbik7CisgICAgICBieXRlIHJlc3VsdFtdID0gdGhpcy5lbmdpbmVDYW5vbmljYWxpemVTdWJUcmVlKGRvY3VtZW50KTsKKyAgICAgIHJldHVybiByZXN1bHQ7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGVuZ2luZUNhbm9uaWNhbGl6ZVhQYXRoTm9kZVNldAorICAgICoKKyAgICAqIEBwYXJhbSB4cGF0aE5vZGVTZXQKKyAgICAqIEByZXR1cm4gdGhlIGMxNG4gYnl0ZXMKKyAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgYnl0ZVtdIGVuZ2luZUNhbm9uaWNhbGl6ZVhQYXRoTm9kZVNldChOb2RlTGlzdCB4cGF0aE5vZGVTZXQpCisgICAgICAgICAgIHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uIHsKKworICAgICAgcmV0dXJuIHRoaXMKKyAgICAgICAgIC5lbmdpbmVDYW5vbmljYWxpemVYUGF0aE5vZGVTZXQoWE1MVXRpbHMKKyAgICAgICAgICAgIC5jb252ZXJ0Tm9kZWxpc3RUb1NldCh4cGF0aE5vZGVTZXQpKTsKKyAgIH0KKyAgIAorICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lQ2Fub25pY2FsaXplWFBhdGhOb2RlU2V0CisgICAgKgorICAgICogQHBhcmFtIHhwYXRoTm9kZVNldAorICAgICogQHBhcmFtIGluY2x1c2l2ZU5hbWVzcGFjZXMKKyAgICAqIEByZXR1cm4gdGhlIGMxNG4gYnl0ZXMKKyAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgYnl0ZVtdIGVuZ2luZUNhbm9uaWNhbGl6ZVhQYXRoTm9kZVNldChOb2RlTGlzdCB4cGF0aE5vZGVTZXQsIFN0cmluZyBpbmNsdXNpdmVOYW1lc3BhY2VzKQorICAgICAgICAgICB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiB7CisKKyAgICAgIHJldHVybiB0aGlzCisgICAgICAgICAuZW5naW5lQ2Fub25pY2FsaXplWFBhdGhOb2RlU2V0KFhNTFV0aWxzCisgICAgICAgICAgICAuY29udmVydE5vZGVsaXN0VG9TZXQoeHBhdGhOb2RlU2V0KSwgaW5jbHVzaXZlTmFtZXNwYWNlcyk7CisgICB9CisKKyAgIC8vSi0KKyAgIC8qKiBSZXR1cm5zIHRoZSBVUkkgb2YgdGhpcyBlbmdpbmUuCisgICAgKiBAcmV0dXJuIHRoZSBVUkkKKyAgICAqLworICAgcHVibGljIGFic3RyYWN0IFN0cmluZyBlbmdpbmVHZXRVUkkoKTsKKyAgIAorICAgLyoqIFJldHVybnMgdGhlIFVSSSBpZiBpbmNsdWRlIGNvbW1lbnRzCisgICAgKiBAcmV0dXJuIHRydWUgaWYgaW5jbHVkZS4KKyAgICAqLworICAgcHVibGljIGFic3RyYWN0IGJvb2xlYW4gZW5naW5lR2V0SW5jbHVkZUNvbW1lbnRzKCk7CisgICAKKyAgIC8qKgorICAgICogQzE0biBhIG5vZGVzZXQKKyAgICAqCisgICAgKiBAcGFyYW0geHBhdGhOb2RlU2V0CisgICAgKiBAcmV0dXJuIHRoZSBjMTRuIGJ5dGVzCisgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIGFic3RyYWN0IGJ5dGVbXSBlbmdpbmVDYW5vbmljYWxpemVYUGF0aE5vZGVTZXQoU2V0IHhwYXRoTm9kZVNldCkKKyAgICAgIHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uOworCisgICAvKioKKyAgICAqIEMxNG4gYSBub2Rlc2V0CisgICAgKgorICAgICogQHBhcmFtIHhwYXRoTm9kZVNldAorICAgICogQHBhcmFtIGluY2x1c2l2ZU5hbWVzcGFjZXMKKyAgICAqIEByZXR1cm4gdGhlIGMxNG4gYnl0ZXMKKyAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgYWJzdHJhY3QgYnl0ZVtdIGVuZ2luZUNhbm9uaWNhbGl6ZVhQYXRoTm9kZVNldChTZXQgeHBhdGhOb2RlU2V0LCBTdHJpbmcgaW5jbHVzaXZlTmFtZXNwYWNlcykKKyAgICAgIHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uOworCisgICAvKioKKyAgICAqIEMxNG4gYSBub2RlIHRyZWUuCisgICAgKgorICAgICogQHBhcmFtIHJvb3ROb2RlCisgICAgKiBAcmV0dXJuIHRoZSBjMTRuIGJ5dGVzCisgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIGFic3RyYWN0IGJ5dGVbXSBlbmdpbmVDYW5vbmljYWxpemVTdWJUcmVlKE5vZGUgcm9vdE5vZGUpCisgICAgICB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbjsKKworICAgLyoqCisgICAgKiBDMTRuIGEgbm9kZSB0cmVlLgorICAgICoKKyAgICAqIEBwYXJhbSByb290Tm9kZQorICAgICogQHBhcmFtIGluY2x1c2l2ZU5hbWVzcGFjZXMKKyAgICAqIEByZXR1cm4gdGhlIGMxNG4gYnl0ZXMKKyAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgYWJzdHJhY3QgYnl0ZVtdIGVuZ2luZUNhbm9uaWNhbGl6ZVN1YlRyZWUoTm9kZSByb290Tm9kZSwgU3RyaW5nIGluY2x1c2l2ZU5hbWVzcGFjZXMpCisgICAgICB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbjsKKyAgIAorICAgLyoqCisgICAgKiBTZXRzIHRoZSB3cml0dGVyIHdoZXJlIHRoZSBjYW5ub2NhbGl6YXRpb24gZW5kcy4gQnl0ZUFycmF5T3V0cHV0U3RyZWFtIGlmIAorICAgICogbm9uZSBpcyBzZXR0ZWQuCisgICAgKiBAcGFyYW0gb3MKKyAgICAqLworICAgcHVibGljIGFic3RyYWN0IHZvaWQgc2V0V3JpdGVyKE91dHB1dFN0cmVhbSBvcyk7CisgICAKKyAgIC8qKiBSZXNldCB0aGUgd3JpdHRlciBhZnRlciBhIGMxNG4gKi8KKyAgIHByb3RlY3RlZCBib29sZWFuIHJlc2V0PWZhbHNlOworICAgLy9KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24uamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL0ludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODViN2FmMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL0ludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uLmphdmEKQEAgLTAsMCArMSw4NSBAQAorCisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuOworCisKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmV4Y2VwdGlvbnMuWE1MU2VjdXJpdHlFeGNlcHRpb247CisKKworLyoqCisgKgorICogQGF1dGhvciBDaHJpc3RpYW4gR2V1ZXItUG9sbG1hbm4KKyAqLworcHVibGljIGNsYXNzIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uIGV4dGVuZHMgWE1MU2VjdXJpdHlFeGNlcHRpb24geworCisgICAvKioKKwkgKiAKKwkgKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsKKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbgorICAgICoKKyAgICAqLworICAgcHVibGljIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uKCkgeworICAgICAgc3VwZXIoKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbgorICAgICoKKyAgICAqIEBwYXJhbSBfbXNnSUQKKyAgICAqLworICAgcHVibGljIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uKFN0cmluZyBfbXNnSUQpIHsKKyAgICAgIHN1cGVyKF9tc2dJRCk7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKiBAcGFyYW0gZXhBcmdzCisgICAgKi8KKyAgIHB1YmxpYyBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbihTdHJpbmcgX21zZ0lELCBPYmplY3QgZXhBcmdzW10pIHsKKyAgICAgIHN1cGVyKF9tc2dJRCwgZXhBcmdzKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbgorICAgICoKKyAgICAqIEBwYXJhbSBfbXNnSUQKKyAgICAqIEBwYXJhbSBfb3JpZ2luYWxFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uKFN0cmluZyBfbXNnSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uIF9vcmlnaW5hbEV4Y2VwdGlvbikgeworICAgICAgc3VwZXIoX21zZ0lELCBfb3JpZ2luYWxFeGNlcHRpb24pOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICogQHBhcmFtIGV4QXJncworICAgICogQHBhcmFtIF9vcmlnaW5hbEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24oU3RyaW5nIF9tc2dJRCwgT2JqZWN0IGV4QXJnc1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbiBfb3JpZ2luYWxFeGNlcHRpb24pIHsKKyAgICAgIHN1cGVyKF9tc2dJRCwgZXhBcmdzLCBfb3JpZ2luYWxFeGNlcHRpb24pOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaGVscGVyL0F0dHJDb21wYXJlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9oZWxwZXIvQXR0ckNvbXBhcmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWFhYzBmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaGVscGVyL0F0dHJDb21wYXJlLmphdmEKQEAgLTAsMCArMSwxMjQgQEAKKworLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5oZWxwZXI7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKK2ltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKK2ltcG9ydCBqYXZhLnV0aWwuQ29tcGFyYXRvcjsKKworLyoqCisgKiBDb21wYXJlcyB0d28gYXR0cmlidXRlcyBiYXNlZCBvbiB0aGUgQzE0biBzcGVjaWZpY2F0aW9uLgorICoKKyAqIDxVTD4KKyAqIDxMST5OYW1lc3BhY2Ugbm9kZXMgaGF2ZSBhIGxlc3NlciBkb2N1bWVudCBvcmRlciBwb3NpdGlvbiB0aGFuIGF0dHJpYnV0ZSAKKyAqICAgbm9kZXMuCisgKiA8TEk+IEFuIGVsZW1lbnQncyBuYW1lc3BhY2Ugbm9kZXMgYXJlIHNvcnRlZCBsZXhpY29ncmFwaGljYWxseSBieQorICogICBsb2NhbCBuYW1lICh0aGUgZGVmYXVsdCBuYW1lc3BhY2Ugbm9kZSwgaWYgb25lIGV4aXN0cywgaGFzIG5vCisgKiAgIGxvY2FsIG5hbWUgYW5kIGlzIHRoZXJlZm9yZSBsZXhpY29ncmFwaGljYWxseSBsZWFzdCkuCisgKiA8TEk+IEFuIGVsZW1lbnQncyBhdHRyaWJ1dGUgbm9kZXMgYXJlIHNvcnRlZCBsZXhpY29ncmFwaGljYWxseSB3aXRoCisgKiAgIG5hbWVzcGFjZSBVUkkgYXMgdGhlIHByaW1hcnkga2V5IGFuZCBsb2NhbCBuYW1lIGFzIHRoZSBzZWNvbmRhcnkKKyAqICAga2V5IChhbiBlbXB0eSBuYW1lc3BhY2UgVVJJIGlzIGxleGljb2dyYXBoaWNhbGx5IGxlYXN0KS4KKyAqIDwvVUw+CisgKgorICogQGF1dGhvciBDaHJpc3RpYW4gR2V1ZXItUG9sbG1hbm4KKyAqLworcHVibGljIGNsYXNzIEF0dHJDb21wYXJlIGltcGxlbWVudHMgQ29tcGFyYXRvciwgU2VyaWFsaXphYmxlIHsKKworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC03MTEzMjU5NjI5OTMwNTc2MjMwTDsKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgQVRUUjBfQkVGT1JFX0FUVFIxID0gLTE7CisgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IEFUVFIxX0JFRk9SRV9BVFRSMCA9IDE7CisgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgU3RyaW5nIFhNTE5TPUNvbnN0YW50cy5OYW1lc3BhY2VTcGVjTlM7CisKKyAgICAvKioKKyAgICAgKiBDb21wYXJlcyB0d28gYXR0cmlidXRlcyBiYXNlZCBvbiB0aGUgQzE0biBzcGVjaWZpY2F0aW9uLgorICAgICAqCisgICAgICogPFVMPgorICAgICAqIDxMST5OYW1lc3BhY2Ugbm9kZXMgaGF2ZSBhIGxlc3NlciBkb2N1bWVudCBvcmRlciBwb3NpdGlvbiB0aGFuIAorICAgICAqICAgYXR0cmlidXRlIG5vZGVzLgorICAgICAqIDxMST4gQW4gZWxlbWVudCdzIG5hbWVzcGFjZSBub2RlcyBhcmUgc29ydGVkIGxleGljb2dyYXBoaWNhbGx5IGJ5CisgICAgICogICBsb2NhbCBuYW1lICh0aGUgZGVmYXVsdCBuYW1lc3BhY2Ugbm9kZSwgaWYgb25lIGV4aXN0cywgaGFzIG5vCisgICAgICogICBsb2NhbCBuYW1lIGFuZCBpcyB0aGVyZWZvcmUgbGV4aWNvZ3JhcGhpY2FsbHkgbGVhc3QpLgorICAgICAqIDxMST4gQW4gZWxlbWVudCdzIGF0dHJpYnV0ZSBub2RlcyBhcmUgc29ydGVkIGxleGljb2dyYXBoaWNhbGx5IHdpdGgKKyAgICAgKiAgIG5hbWVzcGFjZSBVUkkgYXMgdGhlIHByaW1hcnkga2V5IGFuZCBsb2NhbCBuYW1lIGFzIHRoZSBzZWNvbmRhcnkKKyAgICAgKiAgIGtleSAoYW4gZW1wdHkgbmFtZXNwYWNlIFVSSSBpcyBsZXhpY29ncmFwaGljYWxseSBsZWFzdCkuCisgICAgICogPC9VTD4KKyAgICAgKgorICAgICAqIEBwYXJhbSBvYmowIGNhc3RlZCBBdHRyCisgICAgICogQHBhcmFtIG9iajEgY2FzdGVkIEF0dHIKKyAgICAgKiBAcmV0dXJuIHJldHVybnMgYSBuZWdhdGl2ZSBpbnRlZ2VyLCB6ZXJvLCBvciBhIHBvc2l0aXZlIGludGVnZXIgYXMgCisgICAgICogICBvYmowIGlzIGxlc3MgdGhhbiwgZXF1YWwgdG8sIG9yIGdyZWF0ZXIgdGhhbiBvYmoxCisgICAgICoKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGNvbXBhcmUoT2JqZWN0IG9iajAsIE9iamVjdCBvYmoxKSB7CisKKyAgICAgICAgQXR0ciBhdHRyMCA9IChBdHRyKSBvYmowOworICAgICAgICBBdHRyIGF0dHIxID0gKEF0dHIpIG9iajE7CisgICAgICAgIFN0cmluZyBuYW1lc3BhY2VVUkkwID0gYXR0cjAuZ2V0TmFtZXNwYWNlVVJJKCk7ICAgICAgCisgICAgICAgIFN0cmluZyBuYW1lc3BhY2VVUkkxID0gYXR0cjEuZ2V0TmFtZXNwYWNlVVJJKCk7CisgICAgICAKKyAgICAgICAgYm9vbGVhbiBpc05hbWVzcGFjZUF0dHIwID0gWE1MTlM9PW5hbWVzcGFjZVVSSTA7CisgICAgICAgIGJvb2xlYW4gaXNOYW1lc3BhY2VBdHRyMSA9IFhNTE5TPT1uYW1lc3BhY2VVUkkxOworCisgICAgICAgIGlmIChpc05hbWVzcGFjZUF0dHIwKSB7CisgICAgICAgICAgICBpZiAoaXNOYW1lc3BhY2VBdHRyMSkgeworICAgICAgICAgICAgICAgIC8vIGJvdGggYXJlIG5hbWVzcGFjZXMKKyAgICAgICAgICAgICAgICBTdHJpbmcgbG9jYWxuYW1lMCA9IGF0dHIwLmdldExvY2FsTmFtZSgpOworICAgICAgICAgICAgICAgIFN0cmluZyBsb2NhbG5hbWUxID0gYXR0cjEuZ2V0TG9jYWxOYW1lKCk7CisKKyAgICAgICAgICAgICAgICBpZiAobG9jYWxuYW1lMC5lcXVhbHMoInhtbG5zIikpIHsKKyAgICAgICAgICAgICAgICAgICAgbG9jYWxuYW1lMCA9ICIiOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChsb2NhbG5hbWUxLmVxdWFscygieG1sbnMiKSkgeworICAgICAgICAgICAgICAgICAgICBsb2NhbG5hbWUxID0gIiI7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsbmFtZTAuY29tcGFyZVRvKGxvY2FsbmFtZTEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gYXR0cjAgaXMgYSBuYW1lc3BhY2UsIGF0dHIxIGlzIG5vdAorICAgICAgICAgICAgcmV0dXJuIEFUVFIwX0JFRk9SRV9BVFRSMTsKKyAgICAgICAgfSAKKworICAgICAgICBpZiAoaXNOYW1lc3BhY2VBdHRyMSkgeworICAgICAgICAgICAgLy8gYXR0cjEgaXMgYSBuYW1lc3BhY2UsIGF0dHIwIGlzIG5vdAorICAgICAgICAgICAgcmV0dXJuIEFUVFIxX0JFRk9SRV9BVFRSMDsKKyAgICAgICAgfSAKKworICAgICAgICAvLyBub25lIGlzIGEgbmFtZXNwYWNlCisgICAgICAgIGlmIChuYW1lc3BhY2VVUkkwID09IG51bGwpIHsKKyAgICAgIAkgICAgaWYgKG5hbWVzcGFjZVVSSTEgPT0gbnVsbCkgeworICAgICAgCQlTdHJpbmcgbmFtZTAgPSBhdHRyMC5nZXROYW1lKCk7CisgICAgICAJCVN0cmluZyBuYW1lMSA9IGF0dHIxLmdldE5hbWUoKTsKKyAgICAgIAkJcmV0dXJuIG5hbWUwLmNvbXBhcmVUbyhuYW1lMSk7CisgICAgICAJICAgIH0KKyAgICAgIAkgICAgcmV0dXJuIEFUVFIwX0JFRk9SRV9BVFRSMTsKKyAgICAgICAgfSAKKworICAgICAgICBpZiAobmFtZXNwYWNlVVJJMSA9PSBudWxsKSB7CisJICAgIHJldHVybiBBVFRSMV9CRUZPUkVfQVRUUjA7CisgICAgICAgIH0gCisKKyAgICAgICAgaW50IGEgPSBuYW1lc3BhY2VVUkkwLmNvbXBhcmVUbyhuYW1lc3BhY2VVUkkxKTsKKyAgICAgICAgaWYgKGEgIT0gMCkgeworICAgICAgCSAgICByZXR1cm4gYTsKKyAgICAgICAgfQorICAgICAgCisgICAgICAgIHJldHVybiAoYXR0cjAuZ2V0TG9jYWxOYW1lKCkpLmNvbXBhcmVUbyhhdHRyMS5nZXRMb2NhbE5hbWUoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaGVscGVyL0MxNG5IZWxwZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2hlbHBlci9DMTRuSGVscGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA2YjY4MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2hlbHBlci9DMTRuSGVscGVyLmphdmEKQEAgLTAsMCArMSwxNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uaGVscGVyOworCisKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcudzNjLmRvbS5BdHRyOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTmFtZWROb2RlTWFwOworCisKKy8qKgorICogVGVtcG9yYXJ5IHN3YXBwZWQgc3RhdGljIGZ1bmN0aW9ucyBmcm9tIHRoZSBub3JtYWxpemVyIFNlY3Rpb24KKyAqCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubgorICovCitwdWJsaWMgY2xhc3MgQzE0bkhlbHBlciB7CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgQzE0bkhlbHBlcgorICAgICoKKyAgICAqLworICAgcHJpdmF0ZSBDMTRuSGVscGVyKCkgeworCisgICAgICAvLyBkb24ndCBhbGxvdyBpbnN0YW50aWF0aW9uCisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIG5hbWVzcGFjZUlzUmVsYXRpdmUKKyAgICAqCisgICAgKiBAcGFyYW0gbmFtZXNwYWNlCisgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIG5hbWVzcGFjZSBpcyByZWxhdGl2ZS4gCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBuYW1lc3BhY2VJc1JlbGF0aXZlKEF0dHIgbmFtZXNwYWNlKSB7CisgICAgICByZXR1cm4gIW5hbWVzcGFjZUlzQWJzb2x1dGUobmFtZXNwYWNlKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgbmFtZXNwYWNlSXNSZWxhdGl2ZQorICAgICoKKyAgICAqIEBwYXJhbSBuYW1lc3BhY2VWYWx1ZQorICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBuYW1lc3BhY2UgaXMgcmVsYXRpdmUuCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBuYW1lc3BhY2VJc1JlbGF0aXZlKFN0cmluZyBuYW1lc3BhY2VWYWx1ZSkgeworICAgICAgcmV0dXJuICFuYW1lc3BhY2VJc0Fic29sdXRlKG5hbWVzcGFjZVZhbHVlKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgbmFtZXNwYWNlSXNBYnNvbHV0ZQorICAgICoKKyAgICAqIEBwYXJhbSBuYW1lc3BhY2UKKyAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gbmFtZXNwYWNlIGlzIGFic29sdXRlLgorICAgICovCisgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gbmFtZXNwYWNlSXNBYnNvbHV0ZShBdHRyIG5hbWVzcGFjZSkgeworICAgICAgcmV0dXJuIG5hbWVzcGFjZUlzQWJzb2x1dGUobmFtZXNwYWNlLmdldFZhbHVlKCkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBuYW1lc3BhY2VJc0Fic29sdXRlCisgICAgKgorICAgICogQHBhcmFtIG5hbWVzcGFjZVZhbHVlCisgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIG5hbWVzcGFjZSBpcyBhYnNvbHV0ZS4KKyAgICAqLworICAgcHVibGljIHN0YXRpYyBib29sZWFuIG5hbWVzcGFjZUlzQWJzb2x1dGUoU3RyaW5nIG5hbWVzcGFjZVZhbHVlKSB7CisKKyAgICAgIC8vIGFzc3VtZSBlbXB0eSBuYW1lc3BhY2VzIGFyZSBhYnNvbHV0ZQorICAgICAgaWYgKG5hbWVzcGFjZVZhbHVlLmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQorICAgICAgcmV0dXJuIG5hbWVzcGFjZVZhbHVlLmluZGV4T2YoJzonKT4wOworICAgfQorCisgICAvKioKKyAgICAqIFRoaXMgbWV0aG9kIHRocm93cyBhbiBleGNlcHRpb24gaWYgdGhlIEF0dHJpYnV0ZSB2YWx1ZSBjb250YWlucworICAgICogYSByZWxhdGl2ZSBVUkkuCisgICAgKgorICAgICogQHBhcmFtIGF0dHIKKyAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgYXNzZXJ0Tm90UmVsYXRpdmVOUyhBdHRyIGF0dHIpCisgICAgICAgICAgIHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uIHsKKworICAgICAgaWYgKGF0dHIgPT0gbnVsbCkgeworICAgICAgICAgcmV0dXJuOworICAgICAgfQorCisgICAgICBTdHJpbmcgbm9kZUF0dHJOYW1lID0gYXR0ci5nZXROb2RlTmFtZSgpOworICAgICAgYm9vbGVhbiBkZWZpbmVzRGVmYXVsdE5TID0gbm9kZUF0dHJOYW1lLmVxdWFscygieG1sbnMiKTsKKyAgICAgIGJvb2xlYW4gZGVmaW5lc05vbkRlZmF1bHROUyA9IG5vZGVBdHRyTmFtZS5zdGFydHNXaXRoKCJ4bWxuczoiKTsKKworICAgICAgaWYgKGRlZmluZXNEZWZhdWx0TlMgfHwgZGVmaW5lc05vbkRlZmF1bHROUykgeworICAgICAgICAgaWYgKG5hbWVzcGFjZUlzUmVsYXRpdmUoYXR0cikpIHsKKyAgICAgICAgICAgIFN0cmluZyBwYXJlbnROYW1lID0gYXR0ci5nZXRPd25lckVsZW1lbnQoKS5nZXRUYWdOYW1lKCk7CisgICAgICAgICAgICBTdHJpbmcgYXR0clZhbHVlID0gYXR0ci5nZXRWYWx1ZSgpOworICAgICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyBwYXJlbnROYW1lLCBub2RlQXR0ck5hbWUsIGF0dHJWYWx1ZSB9OworCisgICAgICAgICAgICB0aHJvdyBuZXcgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICJjMTRuLkNhbm9uaWNhbGl6ZXIuUmVsYXRpdmVOYW1lc3BhY2UiLCBleEFyZ3MpOworICAgICAgICAgfQorICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIFRoaXMgbWV0aG9kIHRocm93cyBhIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24gaWYgdGhlIHN1cHBsaWVkIERvY3VtZW50CisgICAgKiBpcyBub3QgYWJsZSB0byBiZSB0cmF2ZXJzZWQgdXNpbmcgYSBUcmVlV2Fsa2VyLgorICAgICoKKyAgICAqIEBwYXJhbSBkb2N1bWVudAorICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBjaGVja1RyYXZlcnNhYmlsaXR5KERvY3VtZW50IGRvY3VtZW50KQorICAgICAgICAgICB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiB7CisKKyAgICAgIGlmICghZG9jdW1lbnQuaXNTdXBwb3J0ZWQoIlRyYXZlcnNhbCIsICIyLjAiKSkgeworICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0SW1wbGVtZW50YXRpb24oKS5nZXRDbGFzcygpLmdldE5hbWUoKSB9OworCisgICAgICAgICB0aHJvdyBuZXcgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICJjMTRuLkNhbm9uaWNhbGl6ZXIuVHJhdmVyc2FsTm90U3VwcG9ydGVkIiwgZXhBcmdzKTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBUaGlzIG1ldGhvZCB0aHJvd3MgYSBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uIGlmIHRoZSBzdXBwbGllZCBFbGVtZW50CisgICAgKiBjb250YWlucyBhbnkgcmVsYXRpdmUgbmFtZXNwYWNlcy4KKyAgICAqCisgICAgKiBAcGFyYW0gY3R4Tm9kZQorICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgKiBAc2VlIEMxNG5IZWxwZXIjYXNzZXJ0Tm90UmVsYXRpdmVOUyhBdHRyKQorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgY2hlY2tGb3JSZWxhdGl2ZU5hbWVzcGFjZShFbGVtZW50IGN0eE5vZGUpCisgICAgICAgICAgIHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uIHsKKworICAgICAgaWYgKGN0eE5vZGUgIT0gbnVsbCkgeworICAgICAgICAgTmFtZWROb2RlTWFwIGF0dHJpYnV0ZXMgPSBjdHhOb2RlLmdldEF0dHJpYnV0ZXMoKTsKKworICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLmdldExlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgIEMxNG5IZWxwZXIuYXNzZXJ0Tm90UmVsYXRpdmVOUygoQXR0cikgYXR0cmlidXRlcy5pdGVtKGkpKTsKKyAgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgICB0aHJvdyBuZXcgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICJDYWxsZWQgY2hlY2tGb3JSZWxhdGl2ZU5hbWVzcGFjZSgpIG9uIG51bGwiKTsKKyAgICAgIH0KKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2hlbHBlci9wYWNrYWdlLmh0bWwgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9oZWxwZXIvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjZDFlZWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9oZWxwZXIvcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsMyBAQAorPEhUTUw+IDxIRUFEPiA8L0hFQUQ+IDxCT0RZPiA8UD4KK2hlbHBlciBjbGFzc2VzIGZvciBjYW5vbmljYWxpemF0aW9uLgorPC9QPjwvQk9EWT4gPC9IVE1MPgpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW1wbGVtZW50YXRpb25zL0Nhbm9uaWNhbGl6ZXIxMS5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW1wbGVtZW50YXRpb25zL0Nhbm9uaWNhbGl6ZXIxMS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNmNmZjIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbXBsZW1lbnRhdGlvbnMvQ2Fub25pY2FsaXplcjExLmphdmEKQEAgLTAsMCArMSw2ODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uaW1wbGVtZW50YXRpb25zOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLm5ldC5VUkk7CitpbXBvcnQgamF2YS5uZXQuVVJJU3ludGF4RXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS51dGlsLlNldDsKK2ltcG9ydCBqYXZhLnV0aWwuU29ydGVkU2V0OworaW1wb3J0IGphdmEudXRpbC5UcmVlU2V0OworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5hbWVkTm9kZU1hcDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworaW1wb3J0IG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbjsKKworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZzsKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLmhlbHBlci5DMTRuSGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmVJbnB1dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CisKKy8qKgorICogSW1wbGVtZW50cyA8QSBIUkVGPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA4L1BSLXhtbC1jMTRuMTEtMjAwODAxMjkvIj4KKyAqIENhbm9uaWNhbCBYTUwgVmVyc2lvbiAxLjE8L0E+LCBhIFczQyBQcm9wb3NlZCBSZWNvbW1lbmRhdGlvbiBmcm9tIDI5IAorICogSmFudWFyeSAyMDA4LgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgUmF1bCBCZW5pdG8KKyAqIEB2ZXJzaW9uICRSZXZpc2lvbjogNDI5MDEyICQKKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIENhbm9uaWNhbGl6ZXIxMSBleHRlbmRzIENhbm9uaWNhbGl6ZXJCYXNlIHsKKyAgICBib29sZWFuIGZpcnN0Q2FsbCA9IHRydWU7CisgICAgZmluYWwgU29ydGVkU2V0IHJlc3VsdCA9IG5ldyBUcmVlU2V0KENPTVBBUkUpOworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgWE1MTlNfVVJJID0gQ29uc3RhbnRzLk5hbWVzcGFjZVNwZWNOUzsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIFhNTF9MQU5HX1VSSSA9IENvbnN0YW50cy5YTUxfTEFOR19TUEFDRV9TcGVjTlM7CisKKyAgICBzdGF0aWMgTG9nIGxvZyA9IExvZ0ZhY3RvcnkuZ2V0TG9nKENhbm9uaWNhbGl6ZXIxMS5jbGFzcy5nZXROYW1lKCkpOworCisgICAgc3RhdGljIGNsYXNzIFhtbEF0dHJTdGFjayB7CisgICAgCWludCBjdXJyZW50TGV2ZWwgPSAwOworICAgIAlpbnQgbGFzdGxldmVsID0gMDsKKyAgICAJWG1sc1N0YWNrRWxlbWVudCBjdXI7CisgICAgCXN0YXRpYyBjbGFzcyBYbWxzU3RhY2tFbGVtZW50IHsKKwkgICAgaW50IGxldmVsOworICAgIAkgICAgYm9vbGVhbiByZW5kZXJlZCA9IGZhbHNlOworCSAgICBMaXN0IG5vZGVzID0gbmV3IEFycmF5TGlzdCgpOworICAgIAl9OworICAgIAlMaXN0IGxldmVscyA9IG5ldyBBcnJheUxpc3QoKTsgICAgCQorICAgIAl2b2lkIHB1c2goaW50IGxldmVsKSB7CisJICAgIGN1cnJlbnRMZXZlbCA9IGxldmVsOworCSAgICBpZiAoY3VycmVudExldmVsID09IC0xKQorICAgIAkJcmV0dXJuOworCSAgICBjdXIgPSBudWxsOworCSAgICB3aGlsZSAobGFzdGxldmVsID49IGN1cnJlbnRMZXZlbCkgeworCQlsZXZlbHMucmVtb3ZlKGxldmVscy5zaXplKCkgLSAxKTsKKwkJaWYgKGxldmVscy5zaXplKCkgPT0gMCkgeworCQkgICAgbGFzdGxldmVsID0gMDsKKwkJICAgIHJldHVybjsgICAgCQkJCQorCQl9CisgICAgCQlsYXN0bGV2ZWw9KChYbWxzU3RhY2tFbGVtZW50KWxldmVscy5nZXQobGV2ZWxzLnNpemUoKS0xKSkubGV2ZWw7CisJICAgIH0KKyAgICAJfQorICAgIAl2b2lkIGFkZFhtbG5zQXR0cihBdHRyIG4pIHsKKwkgICAgaWYgKGN1ciA9PSBudWxsKSB7CisJCWN1ciA9IG5ldyBYbWxzU3RhY2tFbGVtZW50KCk7CisJCWN1ci5sZXZlbCA9IGN1cnJlbnRMZXZlbDsKKwkJbGV2ZWxzLmFkZChjdXIpOworICAgIAkJbGFzdGxldmVsID0gY3VycmVudExldmVsOworCSAgICB9CisgICAgCSAgICBjdXIubm9kZXMuYWRkKG4pOworICAgIAl9CisgICAgCXZvaWQgZ2V0WG1sbnNBdHRyKENvbGxlY3Rpb24gY29sKSB7CisJICAgIGlmIChjdXIgPT0gbnVsbCkgeworCQljdXIgPSBuZXcgWG1sc1N0YWNrRWxlbWVudCgpOworICAgIAkJY3VyLmxldmVsID0gY3VycmVudExldmVsOworICAgIAkJbGFzdGxldmVsID0gY3VycmVudExldmVsOworICAgIAkJbGV2ZWxzLmFkZChjdXIpOworICAgIAkgICAgfQorCSAgICBpbnQgc2l6ZSA9IGxldmVscy5zaXplKCkgLSAyOworCSAgICBib29sZWFuIHBhcmVudFJlbmRlcmVkID0gZmFsc2U7CisJICAgIFhtbHNTdGFja0VsZW1lbnQgZSA9IG51bGw7CisJICAgIGlmIChzaXplID09IC0xKSB7CisJCXBhcmVudFJlbmRlcmVkID0gdHJ1ZTsKKwkgICAgfSBlbHNlIHsKKyAgICAJCWUgPSAoWG1sc1N0YWNrRWxlbWVudCkgbGV2ZWxzLmdldChzaXplKTsKKwkJaWYgKGUucmVuZGVyZWQgJiYgZS5sZXZlbCsxID09IGN1cnJlbnRMZXZlbCkKKyAgICAJCSAgICBwYXJlbnRSZW5kZXJlZCA9IHRydWU7CisJICAgIH0KKyAgICAJICAgIGlmIChwYXJlbnRSZW5kZXJlZCkgeworCSAgICAgICAgY29sLmFkZEFsbChjdXIubm9kZXMpOworCSAgICAgICAgY3VyLnJlbmRlcmVkID0gdHJ1ZTsKKwkgICAgICAgIHJldHVybjsKKwkgICAgfQorICAgIAkJCisJICAgIE1hcCBsb2EgPSBuZXcgSGFzaE1hcCgpOyAgICAJCQorCSAgICBMaXN0IGJhc2VBdHRycyA9IG5ldyBBcnJheUxpc3QoKTsKKwkgICAgYm9vbGVhbiBzdWNjZXNzaXZlT21pdHRlZCA9IHRydWU7CisgICAgCSAgICBmb3IgKDtzaXplPj0wO3NpemUtLSkgeworICAgIAkgICAgICAgIGUgPSAoWG1sc1N0YWNrRWxlbWVudCkgbGV2ZWxzLmdldChzaXplKTsKKwkJaWYgKGUucmVuZGVyZWQpIHsKKwkJICAgIHN1Y2Nlc3NpdmVPbWl0dGVkID0gZmFsc2U7CisJCX0KKyAgICAJICAgICAgICBJdGVyYXRvciBpdCA9IGUubm9kZXMuaXRlcmF0b3IoKTsKKyAgICAJICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpICYmIHN1Y2Nlc3NpdmVPbWl0dGVkKSB7CisgICAgCQkgICAgQXR0ciBuID0gKEF0dHIpIGl0Lm5leHQoKTsKKwkJICAgIGlmIChuLmdldExvY2FsTmFtZSgpLmVxdWFscygiYmFzZSIpKSB7CisJCQlpZiAoIWUucmVuZGVyZWQpIHsKKwkJCSAgICBiYXNlQXR0cnMuYWRkKG4pOworCQkJfSAKKyAgICAJCSAgICB9IGVsc2UgaWYgKCFsb2EuY29udGFpbnNLZXkobi5nZXROYW1lKCkpKQorCQkgICAgICAgIGxvYS5wdXQobi5nZXROYW1lKCksIG4pOworCSAgICAgICAgfQorCSAgICB9CisJICAgIGlmICghYmFzZUF0dHJzLmlzRW1wdHkoKSkgeworICAgIAkgICAgICAgIEl0ZXJhdG9yIGl0ID0gY3VyLm5vZGVzLml0ZXJhdG9yKCk7CisJCVN0cmluZyBiYXNlID0gbnVsbDsKKwkJQXR0ciBiYXNlQXR0ciA9IG51bGw7CisgICAgCSAgICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkgeworICAgIAkJICAgIEF0dHIgbiA9IChBdHRyKSBpdC5uZXh0KCk7CisJCSAgICBpZiAobi5nZXRMb2NhbE5hbWUoKS5lcXVhbHMoImJhc2UiKSkgeworCQkJYmFzZSA9IG4uZ2V0VmFsdWUoKTsKKwkJCWJhc2VBdHRyID0gbjsKKwkJCWJyZWFrOworCQkgICAgfQorCQl9CisJICAgICAgICBpdCA9IGJhc2VBdHRycy5pdGVyYXRvcigpOworCSAgICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkgeworCQkgICAgQXR0ciBuID0gKEF0dHIpIGl0Lm5leHQoKTsKKwkJICAgIGlmIChiYXNlID09IG51bGwpIHsKKwkJCWJhc2UgPSBuLmdldFZhbHVlKCk7CisJCQliYXNlQXR0ciA9IG47CisJCSAgICB9IGVsc2UgeworCQkgICAgICAgIHRyeSB7CisJCSAgICAgICAgICAgIGJhc2UgPSBqb2luVVJJKG4uZ2V0VmFsdWUoKSwgYmFzZSk7CisJCSAgICAgICAgfSBjYXRjaCAoVVJJU3ludGF4RXhjZXB0aW9uIHVlKSB7CisJCQkgICAgdWUucHJpbnRTdGFja1RyYWNlKCk7CisJCSAgICAgICAgfQorCQkgICAgfQorCQl9CisJCWlmIChiYXNlICE9IG51bGwgJiYgYmFzZS5sZW5ndGgoKSAhPSAwKSB7CisJCSAgICBiYXNlQXR0ci5zZXRWYWx1ZShiYXNlKTsKKwkJICAgIGNvbC5hZGQoYmFzZUF0dHIpOworCQl9CisJICAgIH0KKwkJCisJICAgIGN1ci5yZW5kZXJlZCA9IHRydWU7CisgICAgCSAgICBjb2wuYWRkQWxsKGxvYS52YWx1ZXMoKSk7CisgICAgICAgIH0KKyAgICB9OworICAgIFhtbEF0dHJTdGFjayB4bWxhdHRyU3RhY2sgPSBuZXcgWG1sQXR0clN0YWNrKCk7CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RvciBDYW5vbmljYWxpemVyMTEKKyAgICAgKgorICAgICAqIEBwYXJhbSBpbmNsdWRlQ29tbWVudHMKKyAgICAgKi8KKyAgICBwdWJsaWMgQ2Fub25pY2FsaXplcjExKGJvb2xlYW4gaW5jbHVkZUNvbW1lbnRzKSB7CisJc3VwZXIoaW5jbHVkZUNvbW1lbnRzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBBdHRyW11zIHRvIGJlIG91dHB1dHRlZCBmb3IgdGhlIGdpdmVuIGVsZW1lbnQuCisgICAgICogPGJyPgorICAgICAqIFRoZSBjb2RlIG9mIHRoaXMgbWV0aG9kIGlzIGEgY29weSBvZiB7QGxpbmsgI2hhbmRsZUF0dHJpYnV0ZXMoRWxlbWVudCwKKyAgICAgKiBOYW1lU3BhY2VTeW1iVGFibGUpfSwKKyAgICAgKiB3aGVyZWFzIGl0IHRha2VzIGludG8gYWNjb3VudCB0aGF0IHN1YnRyZWUtYzE0biBpcyAtLSB3ZWxsIC0tIAorICAgICAqIHN1YnRyZWUtYmFzZWQuCisgICAgICogU28gaWYgdGhlIGVsZW1lbnQgaW4gcXVlc3Rpb24gaXNSb290IG9mIGMxNG4sIGl0J3MgcGFyZW50IGlzIG5vdCBpbiB0aGUKKyAgICAgKiBub2RlIHNldCwgYXMgd2VsbCBhcyBhbGwgb3RoZXIgYW5jZXN0b3JzLgorICAgICAqCisgICAgICogQHBhcmFtIEUKKyAgICAgKiBAcGFyYW0gbnMKKyAgICAgKiBAcmV0dXJuIHRoZSBBdHRyW11zIHRvIGJlIG91dHB1dHRlZAorICAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIEl0ZXJhdG9yIGhhbmRsZUF0dHJpYnV0ZXNTdWJ0cmVlKEVsZW1lbnQgRSwgTmFtZVNwYWNlU3ltYlRhYmxlIG5zKQorCXRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uIHsKKwlpZiAoIUUuaGFzQXR0cmlidXRlcygpICYmICFmaXJzdENhbGwpIHsKKwkgICAgcmV0dXJuIG51bGw7IAorCX0KKwkvLyByZXN1bHQgd2lsbCBjb250YWluIHRoZSBhdHRycyB3aGljaCBoYXZlIHRvIGJlIG91dHB1dHRlZCAgIAkgIAorCWZpbmFsIFNvcnRlZFNldCByZXN1bHQgPSB0aGlzLnJlc3VsdDsgICAgICAgCisJcmVzdWx0LmNsZWFyKCk7CisJTmFtZWROb2RlTWFwIGF0dHJzID0gRS5nZXRBdHRyaWJ1dGVzKCk7CisJaW50IGF0dHJzTGVuZ3RoID0gYXR0cnMuZ2V0TGVuZ3RoKCk7ICAgICAgCisgICAgICAgICAgICAKKwlmb3IgKGludCBpID0gMDsgaSA8IGF0dHJzTGVuZ3RoOyBpKyspIHsKKwkgICAgQXR0ciBOID0gKEF0dHIpIGF0dHJzLml0ZW0oaSk7CisJICAgIFN0cmluZyBOVXJpID0gTi5nZXROYW1lc3BhY2VVUkkoKTsKKworCSAgICBpZiAoWE1MTlNfVVJJICE9IE5VcmkpIHsKKwkJLy8gSXQncyBub3QgYSBuYW1lc3BhY2UgYXR0ciBub2RlLiBBZGQgdG8gdGhlIHJlc3VsdCBhbmQgCisJCS8vIGNvbnRpbnVlLgorCQlyZXN1bHQuYWRkKE4pOworICAgICAgICAgICAgCWNvbnRpbnVlOworCSAgICB9CisKKwkgICAgU3RyaW5nIE5OYW1lID0gTi5nZXRMb2NhbE5hbWUoKTsKKwkgICAgU3RyaW5nIE5WYWx1ZSA9IE4uZ2V0VmFsdWUoKTsgICAgICAgIAorCSAgICBpZiAoWE1MLmVxdWFscyhOTmFtZSkKKwkJJiYgWE1MX0xBTkdfVVJJLmVxdWFscyhOVmFsdWUpKSB7CisgICAgICAgICAJLy8gVGhlIGRlZmF1bHQgbWFwcGluZyBmb3IgeG1sIG11c3Qgbm90IGJlIG91dHB1dC4KKyAgICAgICAgIAljb250aW51ZTsKKwkgICAgfQorICAgICAgICAgCisJICAgIE5vZGUgbiA9IG5zLmFkZE1hcHBpbmdBbmRSZW5kZXIoTk5hbWUsIE5WYWx1ZSwgTik7CisJCSAJIAorCSAgICBpZiAobiAhPSBudWxsKSB7CisJCS8vIFJlbmRlciB0aGUgbnMgZGVmaW5pdGlvbgorCQlyZXN1bHQuYWRkKG4pOworCQlpZiAoQzE0bkhlbHBlci5uYW1lc3BhY2VJc1JlbGF0aXZlKE4pKSB7CisgICAgICAgICAgICAgICAgICAgIE9iamVjdCBleEFyZ3NbXSA9IHtFLmdldFRhZ05hbWUoKSwgTk5hbWUsIE4uZ2V0Tm9kZVZhbHVlKCl9OworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbigKKwkJCSJjMTRuLkNhbm9uaWNhbGl6ZXIuUmVsYXRpdmVOYW1lc3BhY2UiLCBleEFyZ3MpOworCQl9CisJICAgIH0KKwl9CisgICAgICAgICAgICAJICAgCisJaWYgKGZpcnN0Q2FsbCkgeworCSAgICAvLyBJdCBpcyB0aGUgZmlyc3Qgbm9kZSBvZiB0aGUgc3VidHJlZQorCSAgICAvLyBPYnRhaW4gYWxsIHRoZSBuYW1lc3BhY2VzIGRlZmluZWQgaW4gdGhlIHBhcmVudHMsIGFuZCBhZGRlZCAKKwkgICAgLy8gdG8gdGhlIG91dHB1dC4KKwkgICAgbnMuZ2V0VW5yZW5kZXJlZE5vZGVzKHJlc3VsdCk7ICAgICAgICAgIAkgICAgICAJCSAgICAgICAgICAgIAorCSAgICAvLyBvdXRwdXQgdGhlIGF0dHJpYnV0ZXMgaW4gdGhlIHhtbCBuYW1lc3BhY2UuCisJICAgIHhtbGF0dHJTdGFjay5nZXRYbWxuc0F0dHIocmVzdWx0KTsKKwkgICAgZmlyc3RDYWxsID0gZmFsc2U7CisJfSAKKyAgICAgIAorCXJldHVybiByZXN1bHQuaXRlcmF0b3IoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBBdHRyW11zIHRvIGJlIG91dHB1dHRlZCBmb3IgdGhlIGdpdmVuIGVsZW1lbnQuCisgICAgICogPGJyPgorICAgICAqIElNUE9SVEFOVDogVGhpcyBtZXRob2QgZXhwZWN0cyB0byB3b3JrIG9uIGEgbW9kaWZpZWQgRE9NIHRyZWUsIGkuZS4gYSAKKyAgICAgKiBET00gd2hpY2ggaGFzIGJlZW4gcHJlcGFyZWQgdXNpbmcgCisgICAgICoge0BsaW5rIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzI2NpcmN1bXZlbnRCdWcyNjUwKAorICAgICAqIG9yZy53M2MuZG9tLkRvY3VtZW50KX0uCisgICAgICogCisgICAgICogQHBhcmFtIEUKKyAgICAgKiBAcGFyYW0gbnMKKyAgICAgKiBAcmV0dXJuIHRoZSBBdHRyW11zIHRvIGJlIG91dHB1dHRlZAorICAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIEl0ZXJhdG9yIGhhbmRsZUF0dHJpYnV0ZXMoRWxlbWVudCBFLCBOYW1lU3BhY2VTeW1iVGFibGUgbnMpIAorCXRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uIHsgICAgCisgICAgICAgIC8vIHJlc3VsdCB3aWxsIGNvbnRhaW4gdGhlIGF0dHJzIHdoaWNoIGhhdmUgdG8gYmUgb3V0cHV0CisJeG1sYXR0clN0YWNrLnB1c2gobnMuZ2V0TGV2ZWwoKSk7CisgICAgICAgIGJvb2xlYW4gaXNSZWFsVmlzaWJsZSA9IGlzVmlzaWJsZURPKEUsIG5zLmdldExldmVsKCkpID09IDE7ICAgIAorICAgICAgICBOYW1lZE5vZGVNYXAgYXR0cnMgPSBudWxsOworICAgICAgICBpbnQgYXR0cnNMZW5ndGggPSAwOworICAgICAgICBpZiAoRS5oYXNBdHRyaWJ1dGVzKCkpIHsKKyAgICAgICAgICAgIGF0dHJzID0gRS5nZXRBdHRyaWJ1dGVzKCk7CisgICAgICAgICAgICBhdHRyc0xlbmd0aCA9IGF0dHJzLmdldExlbmd0aCgpOworICAgICAgICB9CisgICAgCisJU29ydGVkU2V0IHJlc3VsdCA9IHRoaXMucmVzdWx0OyAgICAgICAKKwlyZXN1bHQuY2xlYXIoKTsKKyAgICAgICAgICAgIAorCWZvciAoaW50IGkgPSAwOyBpIDwgYXR0cnNMZW5ndGg7IGkrKykgeworCSAgICBBdHRyIE4gPSAoQXR0cikgYXR0cnMuaXRlbShpKTsKKwkgICAgU3RyaW5nIE5VcmkgPSBOLmdldE5hbWVzcGFjZVVSSSgpOworICAgICAgIAorCSAgICBpZiAoWE1MTlNfVVJJICE9IE5VcmkpIHsKKwkJLy8gQSBub24gbmFtZXNwYWNlIGRlZmluaXRpb24gbm9kZS4KKwkJaWYgKFhNTF9MQU5HX1VSSSA9PSBOVXJpKSB7CisJCSAgICBpZiAoTi5nZXRMb2NhbE5hbWUoKS5lcXVhbHMoImlkIikpIHsKKwkJCWlmIChpc1JlYWxWaXNpYmxlKSB7CisJCQkgICAgLy8gdHJlYXQgeG1sOmlkIGxpa2UgYW55IG90aGVyIGF0dHJpYnV0ZSAKKwkJIAkgICAgLy8gKGVtaXQgaXQsIGJ1dCBkb24ndCBpbmhlcml0IGl0KQorCQkJICAgIHJlc3VsdC5hZGQoTik7CisJCQl9CisJCSAgICB9IGVsc2UgeworCQkgICAgICAgIHhtbGF0dHJTdGFjay5hZGRYbWxuc0F0dHIoTik7CisJCSAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc1JlYWxWaXNpYmxlKSB7CisgICAgICAgCQkgICAgLy8gVGhlIG5vZGUgaXMgdmlzaWJsZSBhZGQgdGhlIGF0dHJpYnV0ZSB0byB0aGUgbGlzdCBvZiAKKwkJICAgIC8vIG91dHB1dCBhdHRyaWJ1dGVzLgorICAgICAgICAgICAJICAgIHJlc3VsdC5hZGQoTik7CisgICAgICAgICAgCX0gCisgICAgICAgCSAgCS8vIGtlZXAgd29ya2luZworICAgICAgICAgIAljb250aW51ZTsKKwkgICAgfQorCisJICAgIFN0cmluZyBOTmFtZSA9IE4uZ2V0TG9jYWxOYW1lKCk7CisJICAgIFN0cmluZyBOVmFsdWUgPSBOLmdldFZhbHVlKCk7ICAgICAgICAgICAgICAKKwkgICAgaWYgKCJ4bWwiLmVxdWFscyhOTmFtZSkKKyAgICAgICAgICAgICAgICAmJiBYTUxfTEFOR19VUkkuZXF1YWxzKE5WYWx1ZSkpIHsKKwkJLyogZXhjZXB0IG9taXQgbmFtZXNwYWNlIG5vZGUgd2l0aCBsb2NhbCBuYW1lIHhtbCwgd2hpY2ggZGVmaW5lcworCQkgKiB0aGUgeG1sIHByZWZpeCwgaWYgaXRzIHN0cmluZyB2YWx1ZSBpcyAKKwkJICogaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlLgorICAgICAgICAgICAJICovCisgICAgICAgICAgCWNvbnRpbnVlOworCSAgICB9CisJICAgIC8vIGFkZCB0aGUgcHJlZml4IGJpbmRpbmcgdG8gdGhlIG5zIHN5bWIgdGFibGUuCisJICAgIC8vIG5zLmFkZEluY2x1c2l2ZU1hcHBpbmcoTk5hbWUsTlZhbHVlLE4saXNSZWFsVmlzaWJsZSk7ICAgICAgICAgIAorCSAgICBpZiAoaXNWaXNpYmxlKE4pKSAgeworCSAgICAJaWYgKCFpc1JlYWxWaXNpYmxlICYmIG5zLnJlbW92ZU1hcHBpbmdJZlJlbmRlcihOTmFtZSkpIHsKKyAgICAJCSAgICBjb250aW51ZTsKKwkgICAgCX0gCisJCS8vIFRoZSB4cGF0aCBzZWxlY3QgdGhpcyBub2RlIG91dHB1dCBpdCBpZiBuZWVkZWQuCisJICAgIAkvLyBOb2RlIG4gPSBucy5hZGRNYXBwaW5nQW5kUmVuZGVyWE5vZGVTZXQKKwkJLy8JKE5OYW1lLCBOVmFsdWUsIE4sIGlzUmVhbFZpc2libGUpOworCSAgICAJTm9kZSBuID0gbnMuYWRkTWFwcGluZ0FuZFJlbmRlcihOTmFtZSwgTlZhbHVlLCBOKTsKKwkgCWlmIChuICE9IG51bGwpIHsKKwkgCSAgICByZXN1bHQuYWRkKG4pOworICAgICAgICAgICAgICAgICAgICBpZiAoQzE0bkhlbHBlci5uYW1lc3BhY2VJc1JlbGF0aXZlKE4pKSB7CisJCQlPYmplY3QgZXhBcmdzW10gPSAKKwkJCSAgICB7IEUuZ2V0VGFnTmFtZSgpLCBOTmFtZSwgTi5nZXROb2RlVmFsdWUoKSB9OworCQkJdGhyb3cgbmV3IENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImMxNG4uQ2Fub25pY2FsaXplci5SZWxhdGl2ZU5hbWVzcGFjZSIsIGV4QXJncyk7CisJCSAgICB9CisJCX0KKwkgICAgfSBlbHNlIHsKKyAgICAJCWlmIChpc1JlYWxWaXNpYmxlICYmIE5OYW1lICE9IFhNTE5TKSB7CisJCSAgICBucy5yZW1vdmVNYXBwaW5nKE5OYW1lKTsJCisJCX0gZWxzZSB7CisgICAgCQkgICAgbnMuYWRkTWFwcGluZyhOTmFtZSwgTlZhbHVlLCBOKTsKKyAgICAJCX0KKwkgICAgfQorCX0KKwlpZiAoaXNSZWFsVmlzaWJsZSkgeyAgICAJICAgICAgICAgICAKKyAgICAJICAgIC8vIFRoZSBlbGVtZW50IGlzIHZpc2libGUsIGhhbmRsZSB0aGUgeG1sbnMgZGVmaW5pdGlvbiAgICAgICAgCisgICAgICAgICAgICBBdHRyIHhtbG5zID0gRS5nZXRBdHRyaWJ1dGVOb2RlTlMoWE1MTlNfVVJJLCBYTUxOUyk7CisgICAgICAgICAgICBOb2RlIG4gPSBudWxsOworICAgICAgICAgICAgaWYgKHhtbG5zID09IG51bGwpIHsKKyAgICAgICAgCS8vIE5vIHhtbG5zIGRlZiBqdXN0IGdldCB0aGUgYWxyZWFkeSBkZWZpbmVkLgorICAgICAgICAJbiA9IG5zLmdldE1hcHBpbmcoWE1MTlMpOyAgICAgICAgCQkKKwkgICAgfSBlbHNlIGlmICghaXNWaXNpYmxlKHhtbG5zKSkgeworCQkvLyBUaGVyZSBpcyBhIGRlZm4gYnV0IHRoZSB4bWxucyBpcyBub3Qgc2VsZWN0ZWQgYnkgdGhlIHhwYXRoLgorICAgICAgICAJLy8gdGhlbiB4bWxucz0iIgorICAgICAgICAJbiA9IG5zLmFkZE1hcHBpbmdBbmRSZW5kZXIoWE1MTlMsICIiLCBudWxsTm9kZSk7CisJICAgIH0KKyAgICAgICAgICAgIC8vIG91dHB1dCB0aGUgeG1sbnMgZGVmIGlmIG5lZWRlZC4KKyAgICAgICAgICAgIGlmIChuICE9IG51bGwpIHsKKwkJcmVzdWx0LmFkZChuKTsKKwkgICAgfQorCSAgICAvLyBGbG9hdCBhbGwgeG1sOiogYXR0cmlidXRlcyBvZiB0aGUgdW5zZWxlY3RlZCBwYXJlbnQgZWxlbWVudHMgdG8gCisJICAgIC8vIHRoaXMgb25lLiBhZGRYbWxBdHRyaWJ1dGVzKEUscmVzdWx0KTsKKyAgICAgICAgICAgIHhtbGF0dHJTdGFjay5nZXRYbWxuc0F0dHIocmVzdWx0KTsKKyAgICAJICAgIG5zLmdldFVucmVuZGVyZWROb2RlcyhyZXN1bHQpOworICAgICAgICB9CisgICAgCisJcmV0dXJuIHJlc3VsdC5pdGVyYXRvcigpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFsd2F5cyB0aHJvd3MgYSBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uIGJlY2F1c2UgdGhpcyBpcyBpbmNsdXNpdmUgYzE0bi4KKyAgICAgKgorICAgICAqIEBwYXJhbSB4cGF0aE5vZGVTZXQKKyAgICAgKiBAcGFyYW0gaW5jbHVzaXZlTmFtZXNwYWNlcworICAgICAqIEByZXR1cm4gbm9uZSBpdCBhbHdheXMgZmFpbHMKKyAgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24gYWx3YXlzCisgICAgICovCisgICAgcHVibGljIGJ5dGVbXSBlbmdpbmVDYW5vbmljYWxpemVYUGF0aE5vZGVTZXQoU2V0IHhwYXRoTm9kZVNldCwgCisJU3RyaW5nIGluY2x1c2l2ZU5hbWVzcGFjZXMpIHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgdGhyb3cgbmV3IENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24oCisgICAgICAgICAiYzE0bi5DYW5vbmljYWxpemVyLlVuc3VwcG9ydGVkT3BlcmF0aW9uIik7CisgICAgfQorCisgICAgLyoqCisgICAgICogQWx3YXlzIHRocm93cyBhIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24gYmVjYXVzZSB0aGlzIGlzIGluY2x1c2l2ZSBjMTRuLgorICAgICAqCisgICAgICogQHBhcmFtIHJvb3ROb2RlCisgICAgICogQHBhcmFtIGluY2x1c2l2ZU5hbWVzcGFjZXMKKyAgICAgKiBAcmV0dXJuIG5vbmUgaXQgYWx3YXlzIGZhaWxzCisgICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIGJ5dGVbXSBlbmdpbmVDYW5vbmljYWxpemVTdWJUcmVlKE5vZGUgcm9vdE5vZGUsIAorCVN0cmluZyBpbmNsdXNpdmVOYW1lc3BhY2VzKSB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIHRocm93IG5ldyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uKAorCSAgICAiYzE0bi5DYW5vbmljYWxpemVyLlVuc3VwcG9ydGVkT3BlcmF0aW9uIik7CisgICAgfQorCisgICAgdm9pZCBjaXJjdW12ZW50QnVnSWZOZWVkZWQoWE1MU2lnbmF0dXJlSW5wdXQgaW5wdXQpIAorCXRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uLCBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLCAKKyAgICAgICAgSU9FeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiB7CisJaWYgKCFpbnB1dC5pc05lZWRzVG9CZUV4cGFuZGVkKCkpIAorCSAgICByZXR1cm47CisJRG9jdW1lbnQgZG9jID0gbnVsbDsKKwlpZiAoaW5wdXQuZ2V0U3ViTm9kZSgpICE9IG51bGwpIHsKKwkgICAgZG9jID0gWE1MVXRpbHMuZ2V0T3duZXJEb2N1bWVudChpbnB1dC5nZXRTdWJOb2RlKCkpOworCX0gZWxzZSB7CisJICAgIGRvYyA9IFhNTFV0aWxzLmdldE93bmVyRG9jdW1lbnQoaW5wdXQuZ2V0Tm9kZVNldCgpKTsKKwl9CisJWE1MVXRpbHMuY2lyY3VtdmVudEJ1ZzI2NTAoZG9jKTsKKyAgICB9CisgICAKKyAgICB2b2lkIGhhbmRsZVBhcmVudChFbGVtZW50IGUsIE5hbWVTcGFjZVN5bWJUYWJsZSBucykgeworCWlmICghZS5oYXNBdHRyaWJ1dGVzKCkpIHsKKwkgICAgcmV0dXJuOworCX0KKwl4bWxhdHRyU3RhY2sucHVzaCgtMSk7CisJTmFtZWROb2RlTWFwIGF0dHJzID0gZS5nZXRBdHRyaWJ1dGVzKCk7CisJaW50IGF0dHJzTGVuZ3RoID0gYXR0cnMuZ2V0TGVuZ3RoKCk7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBhdHRyc0xlbmd0aDsgaSsrKSB7CisJICAgIEF0dHIgTiA9IChBdHRyKSBhdHRycy5pdGVtKGkpOworCSAgICBpZiAoQ29uc3RhbnRzLk5hbWVzcGFjZVNwZWNOUyAhPSBOLmdldE5hbWVzcGFjZVVSSSgpKSB7CisJCS8vIE5vdCBhIG5hbWVzcGFjZSBkZWZpbml0aW9uLCBpZ25vcmUuCisJCWlmIChYTUxfTEFOR19VUkkgPT0gTi5nZXROYW1lc3BhY2VVUkkoKSkgeworCQkgICAgeG1sYXR0clN0YWNrLmFkZFhtbG5zQXR0cihOKTsKKwkJfQorCQljb250aW51ZTsKKwkgICAgfQorCisJICAgIFN0cmluZyBOTmFtZSA9IE4uZ2V0TG9jYWxOYW1lKCk7CisJICAgIFN0cmluZyBOVmFsdWUgPSBOLmdldE5vZGVWYWx1ZSgpOworCSAgICBpZiAoWE1MLmVxdWFscyhOTmFtZSkKKwkgICAgICAgICYmIENvbnN0YW50cy5YTUxfTEFOR19TUEFDRV9TcGVjTlMuZXF1YWxzKE5WYWx1ZSkpIHsKKwkgICAgICAgIGNvbnRpbnVlOworCSAgICB9ICAgICAgICAgICAgCisJICAgIG5zLmFkZE1hcHBpbmcoTk5hbWUsTlZhbHVlLE4pOyAgICAgICAgICAgICAKKwl9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGpvaW5VUkkoU3RyaW5nIGJhc2VVUkksIFN0cmluZyByZWxhdGl2ZVVSSSkgCisgICAgICAgIHRocm93cyBVUklTeW50YXhFeGNlcHRpb24geworCVN0cmluZyBic2NoZW1lID0gbnVsbDsKKwlTdHJpbmcgYmF1dGhvcml0eSA9IG51bGw7CisJU3RyaW5nIGJwYXRoID0gIiI7CisJU3RyaW5nIGJxdWVyeSA9IG51bGw7CisJU3RyaW5nIGJmcmFnbWVudCA9IG51bGw7IC8vIElzIHRoaXMgY29ycmVjdD8KKworCS8vIHByZS1wYXJzZSB0aGUgYmFzZVVSSQorCWlmIChiYXNlVVJJICE9IG51bGwpIHsKKwkgICAgaWYgKGJhc2VVUkkuZW5kc1dpdGgoIi4uIikpIHsKKwkJYmFzZVVSSSA9IGJhc2VVUkkgKyAiLyI7CisJICAgIH0KKwkgICAgVVJJIGJhc2UgPSBuZXcgVVJJKGJhc2VVUkkpOworCSAgICBic2NoZW1lID0gYmFzZS5nZXRTY2hlbWUoKTsKKwkgICAgYmF1dGhvcml0eSA9IGJhc2UuZ2V0QXV0aG9yaXR5KCk7CisJICAgIGJwYXRoID0gYmFzZS5nZXRQYXRoKCk7CisJICAgIGJxdWVyeSA9IGJhc2UuZ2V0UXVlcnkoKTsKKwkgICAgYmZyYWdtZW50ID0gYmFzZS5nZXRGcmFnbWVudCgpOworCX0KKworCVVSSSByID0gbmV3IFVSSShyZWxhdGl2ZVVSSSk7CisJU3RyaW5nIHJzY2hlbWUgPSByLmdldFNjaGVtZSgpOworCVN0cmluZyByYXV0aG9yaXR5ID0gci5nZXRBdXRob3JpdHkoKTsKKwlTdHJpbmcgcnBhdGggPSByLmdldFBhdGgoKTsKKwlTdHJpbmcgcnF1ZXJ5ID0gci5nZXRRdWVyeSgpOworCVN0cmluZyByZnJhZ21lbnQgPSBudWxsOworCisJU3RyaW5nIHRzY2hlbWUsIHRhdXRob3JpdHksIHRwYXRoLCB0cXVlcnksIHRmcmFnbWVudDsKKwlpZiAocnNjaGVtZSAhPSBudWxsICYmIHJzY2hlbWUuZXF1YWxzKGJzY2hlbWUpKSB7CisJICAgIHJzY2hlbWUgPSBudWxsOworCX0KKwlpZiAocnNjaGVtZSAhPSBudWxsKSB7CisJICAgIHRzY2hlbWUgPSByc2NoZW1lOworCSAgICB0YXV0aG9yaXR5ID0gcmF1dGhvcml0eTsKKwkgICAgdHBhdGggPSByZW1vdmVEb3RTZWdtZW50cyhycGF0aCk7CisJICAgIHRxdWVyeSA9IHJxdWVyeTsKKwl9IGVsc2UgeworCSAgICBpZiAocmF1dGhvcml0eSAhPSBudWxsKSB7CisJCXRhdXRob3JpdHkgPSByYXV0aG9yaXR5OworCQl0cGF0aCA9IHJlbW92ZURvdFNlZ21lbnRzKHJwYXRoKTsKKwkJdHF1ZXJ5ID0gcnF1ZXJ5OworCSAgICB9IGVsc2UgeworCSAgICAgICAgaWYgKHJwYXRoLmxlbmd0aCgpID09IDApIHsKKwkJICAgIHRwYXRoID0gYnBhdGg7CisJCSAgICBpZiAocnF1ZXJ5ICE9IG51bGwpIHsKKwkJICAgICAgICB0cXVlcnkgPSBycXVlcnk7CisJCSAgICB9IGVsc2UgeworCQkgICAgICAgIHRxdWVyeSA9IGJxdWVyeTsKKwkJICAgIH0KKwkgICAgICAgIH0gZWxzZSB7CisJCSAgICBpZiAocnBhdGguc3RhcnRzV2l0aCgiLyIpKSB7CisJCSAgICAgICAgdHBhdGggPSByZW1vdmVEb3RTZWdtZW50cyhycGF0aCk7CisJCSAgICB9IGVsc2UgeworCQkgICAgICAgIGlmIChiYXV0aG9yaXR5ICE9IG51bGwgJiYgYnBhdGgubGVuZ3RoKCkgPT0gMCkgeworCQkJICAgIHRwYXRoID0gIi8iICsgcnBhdGg7CisJCSAgICAgICAgfSBlbHNlIHsgCisJCQkgICAgaW50IGxhc3QgPSBicGF0aC5sYXN0SW5kZXhPZignLycpOworCQkJICAgIGlmIChsYXN0ID09IC0xKSB7CisJCQkgICAgICAgIHRwYXRoID0gcnBhdGg7CisJCQkgICAgfSBlbHNlIHsKKwkJCSAgICAgICAgdHBhdGggPSBicGF0aC5zdWJzdHJpbmcoMCwgbGFzdCsxKSArIHJwYXRoOworCQkJICAgIH0KKwkJICAgICAgICB9CisJCSAgICAgICAgdHBhdGggPSByZW1vdmVEb3RTZWdtZW50cyh0cGF0aCk7CisJCSAgICB9CisJCSAgICB0cXVlcnkgPSBycXVlcnk7CisJICAgICAgICB9CisJICAgICAgICB0YXV0aG9yaXR5ID0gYmF1dGhvcml0eTsKKwkgICAgfQorCSAgICB0c2NoZW1lID0gYnNjaGVtZTsKKwl9CisJdGZyYWdtZW50ID0gcmZyYWdtZW50OworCXJldHVybiBuZXcgVVJJKHRzY2hlbWUsIHRhdXRob3JpdHksIHRwYXRoLCB0cXVlcnksIHRmcmFnbWVudCkudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgcmVtb3ZlRG90U2VnbWVudHMoU3RyaW5nIHBhdGgpIHsKKworICAgICAgICBsb2cuZGVidWcoIlNURVAgICBPVVRQVVQgQlVGRkVSXHRcdElOUFVUIEJVRkZFUiIpOworCisgICAgICAgIC8vIDEuIFRoZSBpbnB1dCBidWZmZXIgaXMgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgbm93LWFwcGVuZGVkIHBhdGgKKyAgICAgICAgLy8gY29tcG9uZW50cyB0aGVuIHJlcGxhY2Ugb2NjdXJyZW5jZXMgb2YgIi8vIiBpbiB0aGUgaW5wdXQgYnVmZmVyCisgICAgICAgIC8vIHdpdGggIi8iIHVudGlsIG5vIG1vcmUgb2NjdXJyZW5jZXMgb2YgIi8vIiBhcmUgaW4gdGhlIGlucHV0IGJ1ZmZlci4KKyAgICAgICAgU3RyaW5nIGlucHV0ID0gcGF0aDsKKyAgICAgICAgd2hpbGUgKGlucHV0LmluZGV4T2YoIi8vIikgPiAtMSkgeworICAgICAgICAgICAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlQWxsKCIvLyIsICIvIik7CisgICAgICAgIH0KKworICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBvdXRwdXQgYnVmZmVyIHdpdGggdGhlIGVtcHR5IHN0cmluZy4KKyAgICAgICAgU3RyaW5nQnVmZmVyIG91dHB1dCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKworICAgICAgICAvLyBJZiB0aGUgaW5wdXQgYnVmZmVyIHN0YXJ0cyB3aXRoIGEgcm9vdCBzbGFzaCAiLyIgdGhlbiBtb3ZlIHRoaXMKKyAgICAgICAgLy8gY2hhcmFjdGVyIHRvIHRoZSBvdXRwdXQgYnVmZmVyLgorICAgICAgICBpZiAoaW5wdXQuY2hhckF0KDApID09ICcvJykgeworICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgiLyIpOworICAgICAgICAgICAgaW5wdXQgPSBpbnB1dC5zdWJzdHJpbmcoMSk7CisgICAgICAgIH0KKworICAgICAgICBwcmludFN0ZXAoIjEgIiwgb3V0cHV0LnRvU3RyaW5nKCksIGlucHV0KTsKKworICAgICAgICAvLyBXaGlsZSB0aGUgaW5wdXQgYnVmZmVyIGlzIG5vdCBlbXB0eSwgbG9vcCBhcyBmb2xsb3dzCisgICAgICAgIHdoaWxlIChpbnB1dC5sZW5ndGgoKSAhPSAwKSB7CisgICAgICAgICAgICAvLyAyQS4gSWYgdGhlIGlucHV0IGJ1ZmZlciBiZWdpbnMgd2l0aCBhIHByZWZpeCBvZiAiLi8iLAorICAgICAgICAgICAgLy8gdGhlbiByZW1vdmUgdGhhdCBwcmVmaXggZnJvbSB0aGUgaW5wdXQgYnVmZmVyCisgICAgICAgICAgICAvLyBlbHNlIGlmIHRoZSBpbnB1dCBidWZmZXIgYmVnaW5zIHdpdGggYSBwcmVmaXggb2YgIi4uLyIsIHRoZW4KKyAgICAgICAgICAgIC8vIGlmIGFsc28gdGhlIG91dHB1dCBkb2VzIG5vdCBjb250YWluIHRoZSByb290IHNsYXNoICIvIiBvbmx5LAorICAgICAgICAgICAgLy8gdGhlbiBtb3ZlIHRoaXMgcHJlZml4IHRvIHRoZSBlbmQgb2YgdGhlIG91dHB1dCBidWZmZXIgZWxzZQorICAgICAgICAgICAgLy8gcmVtb3ZlIHRoYXQgcHJlZml4CisgICAgICAgICAgICBpZiAoaW5wdXQuc3RhcnRzV2l0aCgiLi8iKSkgeworICAgICAgICAgICAgICAgIGlucHV0ID0gaW5wdXQuc3Vic3RyaW5nKDIpOworICAgICAgICAgICAgICAgIHByaW50U3RlcCgiMkEiLCBvdXRwdXQudG9TdHJpbmcoKSwgaW5wdXQpOworICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zdGFydHNXaXRoKCIuLi8iKSkgeworICAgICAgICAgICAgICAgIGlucHV0ID0gaW5wdXQuc3Vic3RyaW5nKDMpOworICAgICAgICAgICAgICAgIGlmICghb3V0cHV0LnRvU3RyaW5nKCkuZXF1YWxzKCIvIikpIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgiLi4vIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHByaW50U3RlcCgiMkEiLCBvdXRwdXQudG9TdHJpbmcoKSwgaW5wdXQpOworICAgICAgICAgICAgLy8gMkIuIGlmIHRoZSBpbnB1dCBidWZmZXIgYmVnaW5zIHdpdGggYSBwcmVmaXggb2YgIi8uLyIgb3IgIi8uIiwKKyAgICAgICAgICAgIC8vIHdoZXJlICIuIiBpcyBhIGNvbXBsZXRlIHBhdGggc2VnbWVudCwgdGhlbiByZXBsYWNlIHRoYXQgcHJlZml4CisgICAgICAgICAgICAvLyB3aXRoICIvIiBpbiB0aGUgaW5wdXQgYnVmZmVyOyBvdGhlcndpc2UsCisgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnN0YXJ0c1dpdGgoIi8uLyIpKSB7CisgICAgICAgICAgICAgICAgaW5wdXQgPSBpbnB1dC5zdWJzdHJpbmcoMik7CisgICAgICAgICAgICAgICAgcHJpbnRTdGVwKCIyQiIsIG91dHB1dC50b1N0cmluZygpLCBpbnB1dCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0LmVxdWFscygiLy4iKSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB3aGF0IGlzIGNvbXBsZXRlIHBhdGggc2VnbWVudD8KKyAgICAgICAgICAgICAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2VGaXJzdCgiLy4iLCAiLyIpOworICAgICAgICAgICAgICAgIHByaW50U3RlcCgiMkIiLCBvdXRwdXQudG9TdHJpbmcoKSwgaW5wdXQpOworICAgICAgICAgICAgLy8gMkMuIGlmIHRoZSBpbnB1dCBidWZmZXIgYmVnaW5zIHdpdGggYSBwcmVmaXggb2YgIi8uLi8iIG9yICIvLi4iLAorICAgICAgICAgICAgLy8gd2hlcmUgIi4uIiBpcyBhIGNvbXBsZXRlIHBhdGggc2VnbWVudCwgdGhlbiByZXBsYWNlIHRoYXQgcHJlZml4CisgICAgICAgICAgICAvLyB3aXRoICIvIiBpbiB0aGUgaW5wdXQgYnVmZmVyIGFuZCBpZiBhbHNvIHRoZSBvdXRwdXQgYnVmZmVyIGlzCisgICAgICAgICAgICAvLyBlbXB0eSwgbGFzdCBzZWdtZW50IGluIHRoZSBvdXRwdXQgYnVmZmVyIGVxdWFscyAiLi4vIiBvciAiLi4iLAorICAgICAgICAgICAgLy8gd2hlcmUgIi4uIiBpcyBhIGNvbXBsZXRlIHBhdGggc2VnbWVudCwgdGhlbiBhcHBlbmQgIi4uIiBvciAiLy4uIgorICAgICAgICAgICAgLy8gZm9yIHRoZSBsYXR0ZXIgY2FzZSByZXNwZWN0aXZlbHkgdG8gdGhlIG91dHB1dCBidWZmZXIgZWxzZQorICAgICAgICAgICAgLy8gcmVtb3ZlIHRoZSBsYXN0IHNlZ21lbnQgYW5kIGl0cyBwcmVjZWRpbmcgIi8iIChpZiBhbnkpIGZyb20gdGhlCisgICAgICAgICAgICAvLyBvdXRwdXQgYnVmZmVyIGFuZCBpZiBoZXJlYnkgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUgb3V0cHV0CisgICAgICAgICAgICAvLyBidWZmZXIgd2FzIHJlbW92ZWQgYW5kIGl0IHdhcyBub3QgdGhlIHJvb3Qgc2xhc2ggdGhlbiBkZWxldGUgYQorICAgICAgICAgICAgLy8gbGVhZGluZyBzbGFzaCBmcm9tIHRoZSBpbnB1dCBidWZmZXI7IG90aGVyd2lzZSwKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc3RhcnRzV2l0aCgiLy4uLyIpKSB7CisgICAgICAgICAgICAgICAgaW5wdXQgPSBpbnB1dC5zdWJzdHJpbmcoMyk7CisgICAgICAgICAgICAgICAgaWYgKG91dHB1dC5sZW5ndGgoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoIi8iKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG91dHB1dC50b1N0cmluZygpLmVuZHNXaXRoKCIuLi8iKSkgeworICAgICAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCIuLiIpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob3V0cHV0LnRvU3RyaW5nKCkuZW5kc1dpdGgoIi4uIikpIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgiLy4uIik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IGluZGV4ID0gb3V0cHV0Lmxhc3RJbmRleE9mKCIvIik7CisgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJBdCgwKSA9PSAnLycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCA9IGlucHV0LnN1YnN0cmluZygxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dC5kZWxldGUoaW5kZXgsIG91dHB1dC5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcHJpbnRTdGVwKCIyQyIsIG91dHB1dC50b1N0cmluZygpLCBpbnB1dCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0LmVxdWFscygiLy4uIikpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogd2hhdCBpcyBjb21wbGV0ZSBwYXRoIHNlZ21lbnQ/CisgICAgICAgICAgICAgICAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlRmlyc3QoIi8uLiIsICIvIik7CisgICAgICAgICAgICAgICAgaWYgKG91dHB1dC5sZW5ndGgoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoIi8iKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG91dHB1dC50b1N0cmluZygpLmVuZHNXaXRoKCIuLi8iKSkgeworICAgICAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCIuLiIpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob3V0cHV0LnRvU3RyaW5nKCkuZW5kc1dpdGgoIi4uIikpIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgiLy4uIik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IGluZGV4ID0gb3V0cHV0Lmxhc3RJbmRleE9mKCIvIik7CisgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJBdCgwKSA9PSAnLycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCA9IGlucHV0LnN1YnN0cmluZygxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dC5kZWxldGUoaW5kZXgsIG91dHB1dC5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcHJpbnRTdGVwKCIyQyIsIG91dHB1dC50b1N0cmluZygpLCBpbnB1dCk7CisgICAgICAgICAgICAvLyAyRC4gaWYgdGhlIGlucHV0IGJ1ZmZlciBjb25zaXN0cyBvbmx5IG9mICIuIiwgdGhlbiByZW1vdmUKKyAgICAgICAgICAgIC8vIHRoYXQgZnJvbSB0aGUgaW5wdXQgYnVmZmVyIGVsc2UgaWYgdGhlIGlucHV0IGJ1ZmZlciBjb25zaXN0cworICAgICAgICAgICAgLy8gb25seSBvZiAiLi4iIGFuZCBpZiB0aGUgb3V0cHV0IGJ1ZmZlciBkb2VzIG5vdCBjb250YWluIG9ubHkKKyAgICAgICAgICAgIC8vIHRoZSByb290IHNsYXNoICIvIiwgdGhlbiBtb3ZlIHRoZSAiLi4iIHRvIHRoZSBvdXRwdXQgYnVmZmVyCisgICAgICAgICAgICAvLyBlbHNlIGRlbHRlIGl0Ljsgb3RoZXJ3aXNlLAorICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5lcXVhbHMoIi4iKSkgeworICAgICAgICAgICAgICAgIGlucHV0ID0gIiI7CisgICAgICAgICAgICAgICAgcHJpbnRTdGVwKCIyRCIsIG91dHB1dC50b1N0cmluZygpLCBpbnB1dCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0LmVxdWFscygiLi4iKSkgeworICAgICAgICAgICAgICAgIGlmICghb3V0cHV0LnRvU3RyaW5nKCkuZXF1YWxzKCIvIikpCisgICAgICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoIi4uIik7CisgICAgICAgICAgICAgICAgaW5wdXQgPSAiIjsKKyAgICAgICAgICAgICAgICBwcmludFN0ZXAoIjJEIiwgb3V0cHV0LnRvU3RyaW5nKCksIGlucHV0KTsKKyAgICAgICAgICAgIC8vIDJFLiBtb3ZlIHRoZSBmaXJzdCBwYXRoIHNlZ21lbnQgKGlmIGFueSkgaW4gdGhlIGlucHV0IGJ1ZmZlcgorICAgICAgICAgICAgLy8gdG8gdGhlIGVuZCBvZiB0aGUgb3V0cHV0IGJ1ZmZlciwgaW5jbHVkaW5nIHRoZSBpbml0aWFsICIvIgorICAgICAgICAgICAgLy8gY2hhcmFjdGVyIChpZiBhbnkpIGFuZCBhbnkgc3Vic2VxdWVudCBjaGFyYWN0ZXJzIHVwIHRvLCBidXQgbm90CisgICAgICAgICAgICAvLyBpbmNsdWRpbmcsIHRoZSBuZXh0ICIvIiBjaGFyYWN0ZXIgb3IgdGhlIGVuZCBvZiB0aGUgaW5wdXQgYnVmZmVyLgorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpbnQgZW5kID0gLTE7CisgICAgICAgICAgICAgICAgaW50IGJlZ2luID0gaW5wdXQuaW5kZXhPZignLycpOworICAgICAgICAgICAgICAgIGlmIChiZWdpbiA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGVuZCA9IGlucHV0LmluZGV4T2YoJy8nLCAxKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBlbmQgPSBiZWdpbjsKKyAgICAgICAgICAgICAgICAgICAgYmVnaW4gPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBTdHJpbmcgc2VnbWVudDsKKyAgICAgICAgICAgICAgICBpZiAoZW5kID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIHNlZ21lbnQgPSBpbnB1dC5zdWJzdHJpbmcoYmVnaW4pOworICAgICAgICAgICAgICAgICAgICBpbnB1dCA9ICIiOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNlZ21lbnQgPSBpbnB1dC5zdWJzdHJpbmcoYmVnaW4sIGVuZCk7CisgICAgICAgICAgICAgICAgICAgIGlucHV0ID0gaW5wdXQuc3Vic3RyaW5nKGVuZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoc2VnbWVudCk7CisgICAgICAgICAgICAgICAgcHJpbnRTdGVwKCIyRSIsIG91dHB1dC50b1N0cmluZygpLCBpbnB1dCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyAzLiBGaW5hbGx5LCBpZiB0aGUgb25seSBvciBsYXN0IHNlZ21lbnQgb2YgdGhlIG91dHB1dCBidWZmZXIgaXMKKyAgICAgICAgLy8gIi4uIiwgd2hlcmUgIi4uIiBpcyBhIGNvbXBsZXRlIHBhdGggc2VnbWVudCBub3QgZm9sbG93ZWQgYnkgYSBzbGFzaAorICAgICAgICAvLyB0aGVuIGFwcGVuZCBhIHNsYXNoICIvIi4gVGhlIG91dHB1dCBidWZmZXIgaXMgcmV0dXJuZWQgYXMgdGhlIHJlc3VsdAorICAgICAgICAvLyBvZiByZW1vdmVfZG90X3NlZ21lbnRzCisgICAgICAgIGlmIChvdXRwdXQudG9TdHJpbmcoKS5lbmRzV2l0aCgiLi4iKSkgeworICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgiLyIpOworICAgICAgICAgICAgcHJpbnRTdGVwKCIzICIsIG91dHB1dC50b1N0cmluZygpLCBpbnB1dCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gb3V0cHV0LnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBwcmludFN0ZXAoU3RyaW5nIHN0ZXAsIFN0cmluZyBvdXRwdXQsIFN0cmluZyBpbnB1dCkgeworCWlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkgeworICAgICAgICAgICAgbG9nLmRlYnVnKCIgIiArIHN0ZXAgKyAiOiAgICIgKyBvdXRwdXQpOworICAgICAgICAgICAgaWYgKG91dHB1dC5sZW5ndGgoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCJcdFx0XHRcdCIgKyBpbnB1dCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygiXHRcdFx0IiArIGlucHV0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2ltcGxlbWVudGF0aW9ucy9DYW5vbmljYWxpemVyMTFfT21pdENvbW1lbnRzLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbXBsZW1lbnRhdGlvbnMvQ2Fub25pY2FsaXplcjExX09taXRDb21tZW50cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4NTQ5N2IKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbXBsZW1lbnRhdGlvbnMvQ2Fub25pY2FsaXplcjExX09taXRDb21tZW50cy5qYXZhCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKiAgICAgIAorICovIAorcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLmltcGxlbWVudGF0aW9uczsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uQ2Fub25pY2FsaXplcjsKKworLyoqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKi8KK3B1YmxpYyBjbGFzcyBDYW5vbmljYWxpemVyMTFfT21pdENvbW1lbnRzIGV4dGVuZHMgQ2Fub25pY2FsaXplcjExIHsKKworICAgIHB1YmxpYyBDYW5vbmljYWxpemVyMTFfT21pdENvbW1lbnRzKCkgeworCXN1cGVyKGZhbHNlKTsKKyAgICB9CisKKyAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGVuZ2luZUdldFVSSSgpIHsKKwlyZXR1cm4gQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE4xMV9PTUlUX0NPTU1FTlRTOworICAgIH0KKworICAgIHB1YmxpYyBmaW5hbCBib29sZWFuIGVuZ2luZUdldEluY2x1ZGVDb21tZW50cygpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2ltcGxlbWVudGF0aW9ucy9DYW5vbmljYWxpemVyMTFfV2l0aENvbW1lbnRzLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbXBsZW1lbnRhdGlvbnMvQ2Fub25pY2FsaXplcjExX1dpdGhDb21tZW50cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMGE2YTcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbXBsZW1lbnRhdGlvbnMvQ2Fub25pY2FsaXplcjExX1dpdGhDb21tZW50cy5qYXZhCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uaW1wbGVtZW50YXRpb25zOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5DYW5vbmljYWxpemVyOworCisvKioKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqLworcHVibGljIGNsYXNzIENhbm9uaWNhbGl6ZXIxMV9XaXRoQ29tbWVudHMgZXh0ZW5kcyBDYW5vbmljYWxpemVyMTEgeworCisgICAgcHVibGljIENhbm9uaWNhbGl6ZXIxMV9XaXRoQ29tbWVudHMoKSB7CisJc3VwZXIodHJ1ZSk7CisgICAgfQorCisgICAgcHVibGljIGZpbmFsIFN0cmluZyBlbmdpbmVHZXRVUkkoKSB7CisJcmV0dXJuIENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROMTFfV0lUSF9DT01NRU5UUzsKKyAgICB9CisKKyAgICBwdWJsaWMgZmluYWwgYm9vbGVhbiBlbmdpbmVHZXRJbmNsdWRlQ29tbWVudHMoKSB7CisJcmV0dXJuIHRydWU7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW1wbGVtZW50YXRpb25zL0Nhbm9uaWNhbGl6ZXIyMDAxMDMxNS5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW1wbGVtZW50YXRpb25zL0Nhbm9uaWNhbGl6ZXIyMDAxMDMxNS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4OWViZmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbXBsZW1lbnRhdGlvbnMvQ2Fub25pY2FsaXplcjIwMDEwMzE1LmphdmEKQEAgLTAsMCArMSwzODcgQEAKKworLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5pbXBsZW1lbnRhdGlvbnM7CisKKworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CitpbXBvcnQgamF2YS51dGlsLlNvcnRlZFNldDsKK2ltcG9ydCBqYXZhLnV0aWwuVHJlZVNldDsKKworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb247CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkNhbm9uaWNhbGl6YXRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5oZWxwZXIuQzE0bkhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlSW5wdXQ7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5OYW1lZE5vZGVNYXA7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKK2ltcG9ydCBvcmcueG1sLnNheC5TQVhFeGNlcHRpb247CisKKworLyoqCisgKiBJbXBsZW1lbnRzIDxBIEhSRUY9Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ij5DYW5vbmljYWwKKyAqIFhNTCBWZXJzaW9uIDEuMDwvQT4sIGEgVzNDIFJlY29tbWVuZGF0aW9uIGZyb20gMTUgTWFyY2ggMjAwMS4KKyAqCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubiA8Z2V1ZXJwQGFwYWNoZS5vcmc+CisgKiBAdmVyc2lvbiAkUmV2aXNpb24kCisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBDYW5vbmljYWxpemVyMjAwMTAzMTUgZXh0ZW5kcyBDYW5vbmljYWxpemVyQmFzZSB7CisJYm9vbGVhbiBmaXJzdENhbGw9dHJ1ZTsKKwlmaW5hbCBTb3J0ZWRTZXQgcmVzdWx0PSBuZXcgVHJlZVNldChDT01QQVJFKTsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIFhNTE5TX1VSST1Db25zdGFudHMuTmFtZXNwYWNlU3BlY05TOworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgWE1MX0xBTkdfVVJJPUNvbnN0YW50cy5YTUxfTEFOR19TUEFDRV9TcGVjTlM7CisgICAgc3RhdGljIGNsYXNzIFhtbEF0dHJTdGFjayB7CisgICAgCWludCBjdXJyZW50TGV2ZWw9MDsKKyAgICAJaW50IGxhc3RsZXZlbD0wOworICAgIAlYbWxzU3RhY2tFbGVtZW50IGN1cjsKKyAgICAJc3RhdGljIGNsYXNzIFhtbHNTdGFja0VsZW1lbnQgeworICAgIAkJaW50IGxldmVsOworICAgIAkJYm9vbGVhbiByZW5kZXJlZD1mYWxzZTsKKyAgICAJCUxpc3Qgbm9kZXM9bmV3IEFycmF5TGlzdCgpOworICAgIAl9OworICAgIAlMaXN0IGxldmVscz1uZXcgQXJyYXlMaXN0KCk7ICAgIAkKKyAgICAJdm9pZCBwdXNoKGludCBsZXZlbCkgeworICAgIAkJY3VycmVudExldmVsPWxldmVsOworICAgIAkJaWYgKGN1cnJlbnRMZXZlbD09LTEpCisgICAgCQkJcmV0dXJuOworICAgIAkJY3VyPW51bGw7CisgICAgCQl3aGlsZSAobGFzdGxldmVsPj1jdXJyZW50TGV2ZWwpIHsKKyAgICAJCQlsZXZlbHMucmVtb3ZlKGxldmVscy5zaXplKCktMSk7CisgICAgCQkJaWYgKGxldmVscy5zaXplKCk9PTApIHsKKyAgICAJCQkJbGFzdGxldmVsPTA7CisgICAgCQkJCXJldHVybjsgICAgCQkJCQorICAgIAkJCX0KKyAgICAJCQlsYXN0bGV2ZWw9KChYbWxzU3RhY2tFbGVtZW50KWxldmVscy5nZXQobGV2ZWxzLnNpemUoKS0xKSkubGV2ZWw7CisgICAgCQl9CisgICAgCX0KKyAgICAJdm9pZCBhZGRYbWxuc0F0dHIoQXR0ciBuKSB7CisgICAgCQlpZiAoY3VyPT1udWxsKSB7CisgICAgCQkJY3VyPW5ldyBYbWxzU3RhY2tFbGVtZW50KCk7CisgICAgCQkJY3VyLmxldmVsPWN1cnJlbnRMZXZlbDsKKyAgICAJCQlsZXZlbHMuYWRkKGN1cik7CisgICAgCQkJbGFzdGxldmVsPWN1cnJlbnRMZXZlbDsKKyAgICAJCX0KKyAgICAJCWN1ci5ub2Rlcy5hZGQobik7CisgICAgCX0KKyAgICAJdm9pZCBnZXRYbWxuc0F0dHIoQ29sbGVjdGlvbiBjb2wpIHsKKyAgICAJCWludCBzaXplPWxldmVscy5zaXplKCktMTsKKyAgICAJCWlmIChjdXI9PW51bGwpIHsKKyAgICAJCQljdXI9bmV3IFhtbHNTdGFja0VsZW1lbnQoKTsKKyAgICAJCQljdXIubGV2ZWw9Y3VycmVudExldmVsOworICAgIAkJCWxhc3RsZXZlbD1jdXJyZW50TGV2ZWw7CisgICAgCQkJbGV2ZWxzLmFkZChjdXIpOworICAgIAkJfQorICAgIAkJYm9vbGVhbiBwYXJlbnRSZW5kZXJlZD1mYWxzZTsKKyAgICAJCVhtbHNTdGFja0VsZW1lbnQgZT1udWxsOworICAgIAkJaWYgKHNpemU9PS0xKSB7CisgICAgCQkJcGFyZW50UmVuZGVyZWQ9dHJ1ZTsKKyAgICAJCX0gZWxzZSB7CisgICAgCQkJZT0oWG1sc1N0YWNrRWxlbWVudClsZXZlbHMuZ2V0KHNpemUpOworICAgIAkJCWlmIChlLnJlbmRlcmVkICYmIGUubGV2ZWwrMT09Y3VycmVudExldmVsKQorICAgIAkJCQlwYXJlbnRSZW5kZXJlZD10cnVlOworICAgICAgICAJCQorICAgIAkJfQorICAgIAkJaWYgKHBhcmVudFJlbmRlcmVkKSB7CisJCQkJY29sLmFkZEFsbChjdXIubm9kZXMpOworCQkJCWN1ci5yZW5kZXJlZD10cnVlOworCQkJCXJldHVybjsKKwkJCX0KKyAgICAJCQorCQkJTWFwIGxvYSA9IG5ldyBIYXNoTWFwKCk7ICAgIAkJCisgICAgCQlmb3IgKDtzaXplPj0wO3NpemUtLSkgeworICAgIAkJCWU9KFhtbHNTdGFja0VsZW1lbnQpbGV2ZWxzLmdldChzaXplKTsKKyAgICAJCQlJdGVyYXRvciBpdD1lLm5vZGVzLml0ZXJhdG9yKCk7CisgICAgCQkJd2hpbGUgKGl0Lmhhc05leHQoKSkgeworICAgIAkJCQlBdHRyIG49KEF0dHIpaXQubmV4dCgpOworICAgIAkJCQlpZiAoIWxvYS5jb250YWluc0tleShuLmdldE5hbWUoKSkpCisgICAgCQkJCQlsb2EucHV0KG4uZ2V0TmFtZSgpLG4pOworICAgIAkJCX0KKyAgICAJCQkvL2lmIChlLnJlbmRlcmVkKQorICAgIAkJCQkvL2JyZWFrOworICAgIAkJCQorICAgIAkJfTsKKyAgICAJCS8vY3VyLm5vZGVzLmNsZWFyKCk7CisgICAgCQkvL2N1ci5ub2Rlcy5hZGRBbGwobG9hLnZhbHVlcygpKTsKKwkJCWN1ci5yZW5kZXJlZD10cnVlOworICAgIAkJY29sLmFkZEFsbChsb2EudmFsdWVzKCkpOworICAgIAl9CisgICAgCQorICAgIH0KKyAgICBYbWxBdHRyU3RhY2sgeG1sYXR0clN0YWNrPW5ldyBYbWxBdHRyU3RhY2soKTsKKyAgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIENhbm9uaWNhbGl6ZXIyMDAxMDMxNQorICAgICoKKyAgICAqIEBwYXJhbSBpbmNsdWRlQ29tbWVudHMKKyAgICAqLworICAgcHVibGljIENhbm9uaWNhbGl6ZXIyMDAxMDMxNShib29sZWFuIGluY2x1ZGVDb21tZW50cykgeworICAgICAgc3VwZXIoaW5jbHVkZUNvbW1lbnRzKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBSZXR1cm5zIHRoZSBBdHRyW11zIHRvIGJlIG91dHB1dHRlZCBmb3IgdGhlIGdpdmVuIGVsZW1lbnQuCisgICAgKiA8YnI+CisgICAgKiBUaGUgY29kZSBvZiB0aGlzIG1ldGhvZCBpcyBhIGNvcHkgb2Yge0BsaW5rICNoYW5kbGVBdHRyaWJ1dGVzKEVsZW1lbnQsCisgICAgKiBOYW1lU3BhY2VTeW1iVGFibGUpfSwKKyAgICAqIHdoZXJlYXMgaXQgdGFrZXMgaW50byBhY2NvdW50IHRoYXQgc3VidHJlZS1jMTRuIGlzIC0tIHdlbGwgLS0gc3VidHJlZS1iYXNlZC4KKyAgICAqIFNvIGlmIHRoZSBlbGVtZW50IGluIHF1ZXN0aW9uIGlzUm9vdCBvZiBjMTRuLCBpdCdzIHBhcmVudCBpcyBub3QgaW4gdGhlCisgICAgKiBub2RlIHNldCwgYXMgd2VsbCBhcyBhbGwgb3RoZXIgYW5jZXN0b3JzLgorICAgICoKKyAgICAqIEBwYXJhbSBFCisgICAgKiBAcGFyYW0gbnMKKyAgICAqIEByZXR1cm4gdGhlIEF0dHJbXXMgdG8gYmUgb3V0cHV0dGVkCisgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAqLworICAgSXRlcmF0b3IgaGFuZGxlQXR0cmlidXRlc1N1YnRyZWUoRWxlbWVudCBFLCAgTmFtZVNwYWNlU3ltYlRhYmxlIG5zICkKKyAgICAgICAgICAgdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24geworICAgCSAgaWYgKCFFLmhhc0F0dHJpYnV0ZXMoKSAmJiAhZmlyc3RDYWxsKSB7CisgICAgICAgICByZXR1cm4gbnVsbDsgCisgICAgICB9CisgICAgICAvLyByZXN1bHQgd2lsbCBjb250YWluIHRoZSBhdHRycyB3aGljaCBoYXZlIHRvIGJlIG91dHB1dHRlZCAgIAkgIAorICAgICAgZmluYWwgU29ydGVkU2V0IHJlc3VsdCA9IHRoaXMucmVzdWx0OyAgICAgICAKKyAgICAgIHJlc3VsdC5jbGVhcigpOworICAgICAgTmFtZWROb2RlTWFwIGF0dHJzID0gRS5nZXRBdHRyaWJ1dGVzKCk7CisgICAgICBpbnQgYXR0cnNMZW5ndGggPSBhdHRycy5nZXRMZW5ndGgoKTsgICAgICAKKyAgICAgICAgICAgIAorICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhdHRyc0xlbmd0aDsgaSsrKSB7CisgICAgICAgICBBdHRyIE4gPSAoQXR0cikgYXR0cnMuaXRlbShpKTsKKyAgICAgICAgIFN0cmluZyBOVXJpID1OLmdldE5hbWVzcGFjZVVSSSgpOworCisgICAgICAgICBpZiAoWE1MTlNfVVJJIT1OVXJpKSB7CisgICAgICAgICAJLy9JdCdzIG5vdCBhIG5hbWVzcGFjZSBhdHRyIG5vZGUuIEFkZCB0byB0aGUgcmVzdWx0IGFuZCBjb250aW51ZS4KKyAgICAgICAgICAgIHJlc3VsdC5hZGQoTik7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgIH0KKworICAgICAgICAgU3RyaW5nIE5OYW1lPU4uZ2V0TG9jYWxOYW1lKCk7CisgICAgICAgICBTdHJpbmcgTlZhbHVlPU4uZ2V0VmFsdWUoKTsgICAgICAgIAorICAgICAgICAgaWYgKFhNTC5lcXVhbHMoTk5hbWUpCisgICAgICAgICAgICAgICAgICYmIFhNTF9MQU5HX1VSSS5lcXVhbHMoTlZhbHVlKSkgeworICAgICAgICAgCS8vVGhlIGRlZmF1bHQgbWFwcGluZyBmb3IgeG1sIG11c3Qgbm90IGJlIG91dHB1dC4KKyAgICAgICAgIAljb250aW51ZTsKKyAgICAgICAgIH0KKyAgICAgICAgIAorICAgICAgICAgTm9kZSBuPW5zLmFkZE1hcHBpbmdBbmRSZW5kZXIoTk5hbWUsTlZhbHVlLE4pOyAgICAgICAgICAJCSAKKwkJIAkgCisgICAgICAJICBpZiAobiE9bnVsbCkgeworICAgICAgCSAgCSAvL1JlbmRlciB0aGUgbnMgZGVmaW5pdGlvbgorICAgICAgICAgICAgIHJlc3VsdC5hZGQobik7CisgICAgICAgICAgICAgaWYgKEMxNG5IZWxwZXIubmFtZXNwYWNlSXNSZWxhdGl2ZShOKSkgeworICAgICAgICAgICAgICAgIE9iamVjdCBleEFyZ3NbXSA9IHsgRS5nZXRUYWdOYW1lKCksIE5OYW1lLCBOLmdldE5vZGVWYWx1ZSgpIH07CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgImMxNG4uQ2Fub25pY2FsaXplci5SZWxhdGl2ZU5hbWVzcGFjZSIsIGV4QXJncyk7CisgICAgICAgICAgICAgfQorICAgICAgICAgIH0gICAgICAgIAorICAgICAgfQorICAgICAgICAgICAgCSAgIAorICAgICAgaWYgKGZpcnN0Q2FsbCkgeworICAgICAgCS8vSXQgaXMgdGhlIGZpcnN0IG5vZGUgb2YgdGhlIHN1YnRyZWUKKyAgICAgIAkvL09idGFpbiBhbGwgdGhlIG5hbWVzcGFjZXMgZGVmaW5lZCBpbiB0aGUgcGFyZW50cywgYW5kIGFkZGVkIHRvIHRoZSBvdXRwdXQuCisgICAgICAJbnMuZ2V0VW5yZW5kZXJlZE5vZGVzKHJlc3VsdCk7ICAgICAgICAgIAkgICAgICAJCSAgICAgICAgICAgIAorICAgICAgCS8vb3V0cHV0IHRoZSBhdHRyaWJ1dGVzIGluIHRoZSB4bWwgbmFtZXNwYWNlLgorICAgICAgCXhtbGF0dHJTdGFjay5nZXRYbWxuc0F0dHIocmVzdWx0KTsKKwkJZmlyc3RDYWxsPWZhbHNlOworICAgICAgfSAKKyAgICAgIAorICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvcigpOworICAgfQorCisgICAvKioKKyAgICAqIFJldHVybnMgdGhlIEF0dHJbXXMgdG8gYmUgb3V0cHV0dGVkIGZvciB0aGUgZ2l2ZW4gZWxlbWVudC4KKyAgICAqIDxicj4KKyAgICAqIElNUE9SVEFOVDogVGhpcyBtZXRob2QgZXhwZWN0cyB0byB3b3JrIG9uIGEgbW9kaWZpZWQgRE9NIHRyZWUsIGkuZS4gYSBET00gd2hpY2ggaGFzCisgICAgKiBiZWVuIHByZXBhcmVkIHVzaW5nIHtAbGluayBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5YTUxVdGlscyNjaXJjdW12ZW50QnVnMjY1MCgKKyAgICAqIG9yZy53M2MuZG9tLkRvY3VtZW50KX0uCisgICAgKiAKKyAgICAqIEBwYXJhbSBFCisgICAgKiBAcGFyYW0gbnMKKyAgICAqIEByZXR1cm4gdGhlIEF0dHJbXXMgdG8gYmUgb3V0cHV0dGVkCisgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAqLworICAgSXRlcmF0b3IgaGFuZGxlQXR0cmlidXRlcyhFbGVtZW50IEUsICBOYW1lU3BhY2VTeW1iVGFibGUgbnMgKSB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiB7ICAgIAorICAgIC8vIHJlc3VsdCB3aWxsIGNvbnRhaW4gdGhlIGF0dHJzIHdoaWNoIGhhdmUgdG8gYmUgb3V0cHV0dGVkCisJeG1sYXR0clN0YWNrLnB1c2gobnMuZ2V0TGV2ZWwoKSk7CisgICAgYm9vbGVhbiBpc1JlYWxWaXNpYmxlPWlzVmlzaWJsZURPKEUsbnMuZ2V0TGV2ZWwoKSk9PTE7ICAgIAorICAgIE5hbWVkTm9kZU1hcCBhdHRycyA9IG51bGw7CisgICAgaW50IGF0dHJzTGVuZ3RoID0gMDsKKyAgICBpZiAoRS5oYXNBdHRyaWJ1dGVzKCkpIHsKKyAgICAgICAgYXR0cnM9RS5nZXRBdHRyaWJ1dGVzKCk7CisgICAgICAgYXR0cnNMZW5ndGg9IGF0dHJzLmdldExlbmd0aCgpOworICAgIH0KKyAgICAKKyAgICAKKyAgICBTb3J0ZWRTZXQgcmVzdWx0ID0gdGhpcy5yZXN1bHQ7ICAgICAgIAorICAgIHJlc3VsdC5jbGVhcigpOworICAgICAgICAgICAgCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhdHRyc0xlbmd0aDsgaSsrKSB7CisgICAgICAgQXR0ciBOID0gKEF0dHIpIGF0dHJzLml0ZW0oaSk7CisgICAgICAgU3RyaW5nIE5VcmkgPU4uZ2V0TmFtZXNwYWNlVVJJKCk7CisgICAgICAgCisgICAgICAgaWYgKFhNTE5TX1VSSSE9TlVyaSkgeworICAgICAgIAkgIC8vQSBub24gbmFtZXNwYWNlIGRlZmluaXRpb24gbm9kZS4KKyAgICAJICAgaWYgKFhNTF9MQU5HX1VSST09TlVyaSkgeworICAgICAgICAJCSAgeG1sYXR0clN0YWNrLmFkZFhtbG5zQXR0cihOKTsKKyAgICAgICAgICAgfSBlbHNlIGlmIChpc1JlYWxWaXNpYmxlKXsKKyAgICAgICAJCS8vVGhlIG5vZGUgaXMgdmlzaWJsZSBhZGQgdGhlIGF0dHJpYnV0ZSB0byB0aGUgbGlzdCBvZiBvdXRwdXQgYXR0cmlidXRlcy4KKyAgICAgICAgICAgCXJlc3VsdC5hZGQoTik7CisgICAgICAgICAgfSAKKyAgICAgICAJICAvL2tlZXAgd29ya2luZworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgIH0KKworICAgICAgIFN0cmluZyBOTmFtZT1OLmdldExvY2FsTmFtZSgpOworICAgICAgIFN0cmluZyBOVmFsdWU9Ti5nZXRWYWx1ZSgpOyAgICAgICAgICAgICAgCisgICAgICAgaWYgKCJ4bWwiLmVxdWFscyhOTmFtZSkKKyAgICAgICAgICAgICAgICYmIFhNTF9MQU5HX1VSSS5lcXVhbHMoTlZhbHVlKSkgeworICAgICAgICAgIC8qIGV4Y2VwdCBvbWl0IG5hbWVzcGFjZSBub2RlIHdpdGggbG9jYWwgbmFtZSB4bWwsIHdoaWNoIGRlZmluZXMKKyAgICAgICAgICAgKiB0aGUgeG1sIHByZWZpeCwgaWYgaXRzIHN0cmluZyB2YWx1ZSBpcyBodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UuCisgICAgICAgICAgICovCisgICAgICAgICAgY29udGludWU7CisgICAgICAgfQorICAgICAgIC8vYWRkIHRoZSBwcmVmaXggYmluZGluZyB0byB0aGUgbnMgc3ltYiB0YWJsZS4KKyAgICAgICAvL25zLmFkZEluY2x1c2l2ZU1hcHBpbmcoTk5hbWUsTlZhbHVlLE4saXNSZWFsVmlzaWJsZSk7ICAgICAgICAgIAorCSAgICBpZiAgKGlzVmlzaWJsZShOKSkgIHsKKwkgICAgCWlmICghaXNSZWFsVmlzaWJsZSAmJiBucy5yZW1vdmVNYXBwaW5nSWZSZW5kZXIoTk5hbWUpKSB7CisJICAgIAkJY29udGludWU7CisJICAgIAl9IAorCQkJLy9UaGUgeHBhdGggc2VsZWN0IHRoaXMgbm9kZSBvdXRwdXQgaXQgaWYgbmVlZGVkLgorCSAgICAJLy9Ob2RlIG49bnMuYWRkTWFwcGluZ0FuZFJlbmRlclhOb2RlU2V0KE5OYW1lLE5WYWx1ZSxOLGlzUmVhbFZpc2libGUpOworCSAgICAJTm9kZSBuPW5zLmFkZE1hcHBpbmdBbmRSZW5kZXIoTk5hbWUsTlZhbHVlLE4pOworCQkgCWlmIChuIT1udWxsKSB7CisJCSAJIAkJcmVzdWx0LmFkZChuKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEMxNG5IZWxwZXIubmFtZXNwYWNlSXNSZWxhdGl2ZShOKSkgeworICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QgZXhBcmdzW10gPSB7IEUuZ2V0VGFnTmFtZSgpLCBOTmFtZSwgTi5nZXROb2RlVmFsdWUoKSB9OworICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImMxNG4uQ2Fub25pY2FsaXplci5SZWxhdGl2ZU5hbWVzcGFjZSIsIGV4QXJncyk7CisgICAgICAgICAgICAgICAgICAgfQorCQkgCSB9CisgICAgCX0gZWxzZSB7CisgICAgCQlpZiAoaXNSZWFsVmlzaWJsZSAmJiBOTmFtZSE9WE1MTlMpIHsKKyAgICAJCQlucy5yZW1vdmVNYXBwaW5nKE5OYW1lKTsJCisgICAgCQl9IGVsc2UgeworICAgIAkJCW5zLmFkZE1hcHBpbmcoTk5hbWUsTlZhbHVlLE4pOworICAgIAkJfQorICAgIAl9CisgICAgfQorICAgIGlmIChpc1JlYWxWaXNpYmxlKSB7ICAgIAkgICAgICAgICAgIAorICAgIAkvL1RoZSBlbGVtZW50IGlzIHZpc2libGUsIGhhbmRsZSB0aGUgeG1sbnMgZGVmaW5pdGlvbiAgICAgICAgCisgICAgICAgIEF0dHIgeG1sbnMgPSBFLmdldEF0dHJpYnV0ZU5vZGVOUyhYTUxOU19VUkksIFhNTE5TKTsKKyAgICAgICAgTm9kZSBuPW51bGw7CisgICAgICAgIGlmICh4bWxucyA9PSBudWxsKSB7CisgICAgICAgIAkvL05vIHhtbG5zIGRlZiBqdXN0IGdldCB0aGUgYWxyZWFkeSBkZWZpbmVkLgorICAgICAgICAJbj1ucy5nZXRNYXBwaW5nKFhNTE5TKTsgICAgICAgIAkJCisgICAgICAgIH0gZWxzZSBpZiAoICFpc1Zpc2libGUoeG1sbnMpKSB7CisgICAgICAgIAkvL1RoZXJlIGlzIGEgZGVmaW5pdGlvbiBidXQgdGhlIHhtbG5zIGlzIG5vdCBzZWxlY3RlZCBieSB0aGUgeHBhdGguCisgICAgICAgIAkvL3RoZW4geG1sbnM9IiIKKyAgICAgICAgCW49bnMuYWRkTWFwcGluZ0FuZFJlbmRlcihYTUxOUywiIixudWxsTm9kZSk7ICAgICAgICAJICAgIAkJICAgICAgCQorICAgICAgICB9CisgICAgICAgIC8vb3V0cHV0IHRoZSB4bWxucyBkZWYgaWYgbmVlZGVkLgorICAgICAgICBpZiAobiE9bnVsbCkgeworICAgIAkJCXJlc3VsdC5hZGQobik7CisgICAgCX0KKyAgICAgICAgLy9GbG9hdCBhbGwgeG1sOiogYXR0cmlidXRlcyBvZiB0aGUgdW5zZWxlY3RlZCBwYXJlbnQgZWxlbWVudHMgdG8gdGhpcyBvbmUuIAorICAgIAkvL2FkZFhtbEF0dHJpYnV0ZXMoRSxyZXN1bHQpOworICAgICAgICB4bWxhdHRyU3RhY2suZ2V0WG1sbnNBdHRyKHJlc3VsdCk7CisgICAgCW5zLmdldFVucmVuZGVyZWROb2RlcyhyZXN1bHQpOworICAgICAgICAKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvcigpOworICAgfQorICAgLyoqCisgICAgKiBBbHdheXMgdGhyb3dzIGEgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiBiZWNhdXNlIHRoaXMgaXMgaW5jbHVzaXZlIGMxNG4uCisgICAgKgorICAgICogQHBhcmFtIHhwYXRoTm9kZVNldAorICAgICogQHBhcmFtIGluY2x1c2l2ZU5hbWVzcGFjZXMKKyAgICAqIEByZXR1cm4gbm9uZSBpdCBhbHdheXMgZmFpbHMKKyAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiBhbHdheXMKKyAgICAqLworICAgcHVibGljIGJ5dGVbXSBlbmdpbmVDYW5vbmljYWxpemVYUGF0aE5vZGVTZXQoU2V0IHhwYXRoTm9kZVNldCwgU3RyaW5nIGluY2x1c2l2ZU5hbWVzcGFjZXMpCisgICAgICAgICAgIHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uIHsKKworICAgICAgLyoqICR0b2RvJCB3ZWxsLCBzaG91bGQgd2UgdGhyb3cgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24gPyAqLworICAgICAgdGhyb3cgbmV3IENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24oCisgICAgICAgICAiYzE0bi5DYW5vbmljYWxpemVyLlVuc3VwcG9ydGVkT3BlcmF0aW9uIik7CisgICB9CisKKyAgIC8qKgorICAgICogQWx3YXlzIHRocm93cyBhIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24gYmVjYXVzZSB0aGlzIGlzIGluY2x1c2l2ZSBjMTRuLgorICAgICoKKyAgICAqIEBwYXJhbSByb290Tm9kZQorICAgICogQHBhcmFtIGluY2x1c2l2ZU5hbWVzcGFjZXMKKyAgICAqIEByZXR1cm4gbm9uZSBpdCBhbHdheXMgZmFpbHMKKyAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgYnl0ZVtdIGVuZ2luZUNhbm9uaWNhbGl6ZVN1YlRyZWUoTm9kZSByb290Tm9kZSwgU3RyaW5nIGluY2x1c2l2ZU5hbWVzcGFjZXMpCisgICAgICAgICAgIHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uIHsKKworICAgICAgLyoqICR0b2RvJCB3ZWxsLCBzaG91bGQgd2UgdGhyb3cgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24gPyAqLworICAgICAgdGhyb3cgbmV3IENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24oCisgICAgICAgICAiYzE0bi5DYW5vbmljYWxpemVyLlVuc3VwcG9ydGVkT3BlcmF0aW9uIik7CisgICB9CisgICB2b2lkIGNpcmN1bXZlbnRCdWdJZk5lZWRlZChYTUxTaWduYXR1cmVJbnB1dCBpbnB1dCkgdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24sIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIElPRXhjZXB0aW9uLCBTQVhFeGNlcHRpb24geworCSAgIGlmICghaW5wdXQuaXNOZWVkc1RvQmVFeHBhbmRlZCgpKSAKKwkJICAgcmV0dXJuOworCSAgIERvY3VtZW50IGRvYyA9IG51bGw7CisgICAgICAgaWYgKGlucHV0LmdldFN1Yk5vZGUoKSAhPSBudWxsKSB7CisgICAgICAgICAgIGRvYz1YTUxVdGlscy5nZXRPd25lckRvY3VtZW50KGlucHV0LmdldFN1Yk5vZGUoKSk7CisgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgZG9jPVhNTFV0aWxzLmdldE93bmVyRG9jdW1lbnQoaW5wdXQuZ2V0Tm9kZVNldCgpKTsKKyAgICAgICB9CisJICAgWE1MVXRpbHMuY2lyY3VtdmVudEJ1ZzI2NTAoZG9jKTsKKwkJCisgICB9CisgICAKKyAgIHZvaWQgaGFuZGxlUGFyZW50KEVsZW1lbnQgZSwgTmFtZVNwYWNlU3ltYlRhYmxlIG5zKSB7CisJICAgaWYgKCFlLmhhc0F0dHJpYnV0ZXMoKSkgeworCQkJcmV0dXJuOworCSAgIH0KKwkgICB4bWxhdHRyU3RhY2sucHVzaCgtMSk7CisJICAgTmFtZWROb2RlTWFwIGF0dHJzID0gZS5nZXRBdHRyaWJ1dGVzKCk7CisJICAgaW50IGF0dHJzTGVuZ3RoID0gYXR0cnMuZ2V0TGVuZ3RoKCk7CisJICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhdHRyc0xlbmd0aDsgaSsrKSB7CisJCSAgIEF0dHIgTiA9IChBdHRyKSBhdHRycy5pdGVtKGkpOworCQkgICBpZiAoQ29uc3RhbnRzLk5hbWVzcGFjZVNwZWNOUyE9Ti5nZXROYW1lc3BhY2VVUkkoKSkgewkJCSAgIAorCQkJICAgLy9Ob3QgYSBuYW1lc3BhY2UgZGVmaW5pdGlvbiwgaWdub3JlLgorCQkJICAgaWYgKFhNTF9MQU5HX1VSST09Ti5nZXROYW1lc3BhY2VVUkkoKSkgeworCQkJCSAgIHhtbGF0dHJTdGFjay5hZGRYbWxuc0F0dHIoTik7CisJCQkgICB9CisJCQkgICBjb250aW51ZTsKKwkJICAgfQorCisJCSAgIFN0cmluZyBOTmFtZT1OLmdldExvY2FsTmFtZSgpOworCQkgICBTdHJpbmcgTlZhbHVlPU4uZ2V0Tm9kZVZhbHVlKCk7CisJCSAgIGlmIChYTUwuZXF1YWxzKE5OYW1lKQorCQkJCSAgICYmIENvbnN0YW50cy5YTUxfTEFOR19TUEFDRV9TcGVjTlMuZXF1YWxzKE5WYWx1ZSkpIHsKKwkJCQljb250aW51ZTsKKwkJICAgfSAgICAgICAgICAgIAorCQkgICBucy5hZGRNYXBwaW5nKE5OYW1lLE5WYWx1ZSxOKTsgICAgICAgICAgICAgCisJICAgfQorICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW1wbGVtZW50YXRpb25zL0Nhbm9uaWNhbGl6ZXIyMDAxMDMxNUV4Y2wuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2ltcGxlbWVudGF0aW9ucy9DYW5vbmljYWxpemVyMjAwMTAzMTVFeGNsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWVkMTg4YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2ltcGxlbWVudGF0aW9ucy9DYW5vbmljYWxpemVyMjAwMTAzMTVFeGNsLmphdmEKQEAgLTAsMCArMSwzNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMTk5OS0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqIAorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90CisgKiB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZgorICogdGhlIExpY2Vuc2UgYXQKKyAqIAorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKiAKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQKKyAqIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZQorICogTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIKKyAqIHRoZSBMaWNlbnNlLgorICogIAorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uaW1wbGVtZW50YXRpb25zOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLlNldDsKK2ltcG9ydCBqYXZhLnV0aWwuU29ydGVkU2V0OworaW1wb3J0IGphdmEudXRpbC5UcmVlU2V0OworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb247CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkNhbm9uaWNhbGl6YXRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5oZWxwZXIuQzE0bkhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlSW5wdXQ7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5wYXJhbXMuSW5jbHVzaXZlTmFtZXNwYWNlczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5hbWVkTm9kZU1hcDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworaW1wb3J0IG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbjsKKworLyoqCisgKiBJbXBsZW1lbnRzICZxdW90OyA8QQorICogSFJFRj0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMi9SRUMteG1sLWV4Yy1jMTRuLTIwMDIwNzE4LyI+RXhjbHVzaXZlIFhNTAorICogQ2Fub25pY2FsaXphdGlvbiwgVmVyc2lvbiAxLjAgPC9BPiZxdW90OyA8QlIgLz4KKyAqIENyZWRpdHM6IER1cmluZyByZXN0cnVjdHVyaW5nIG9mIHRoZSBDYW5vbmljYWxpemVyIGZyYW1ld29yaywgUmVuPz8KKyAqIEtvbGxtb3JnZW4gZnJvbSBTb2Z0d2FyZSBBRyBzdWJtaXR0ZWQgYW4gaW1wbGVtZW50YXRpb24gb2YgRXhjbEMxNG4gd2hpY2gKKyAqIGZpdHRlZCBpbnRvIHRoZSBvbGQgYXJjaGl0ZWN0dXJlIGFuZCB3aGljaCBiYXNlZCBoZWF2aWx5IG9uIG15IG9sZCAoYW5kIHNsb3cpCisgKiBpbXBsZW1lbnRhdGlvbiBvZiAiQ2Fub25pY2FsIFhNTCIuIEEgYmlnICJ0aGFuayB5b3UiIHRvIFJlbj8/IGZvciB0aGlzLgorICogPEJSIC8+CisgKiA8aT5USElTIDwvaT4gaW1wbGVtZW50YXRpb24gaXMgYSBjb21wbGV0ZSByZXdyaXRlIG9mIHRoZSBhbGdvcml0aG0uCisgKiAKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEdldWVyLVBvbGxtYW5uIDxnZXVlcnBAYXBhY2hlLm9yZz4KKyAqIEB2ZXJzaW9uICRSZXZpc2lvbiQgCisgKiBAc2VlIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDIvUkVDLXhtbC1leGMtYzE0bi0yMDAyMDcxOC8gRXhjbHVzaXZlIyI+CisgKiAgICAgICAgICBYTUwgQ2Fub25pY2FsaXphdGlvbiwgVmVyc2lvbiAxLjA8L2E+CisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBDYW5vbmljYWxpemVyMjAwMTAzMTVFeGNsIGV4dGVuZHMgQ2Fub25pY2FsaXplckJhc2UgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFhNTF9MQU5HX1VSST1Db25zdGFudHMuWE1MX0xBTkdfU1BBQ0VfU3BlY05TOworCisgICAgLyoqCisgICAgICAqIFRoaXMgU2V0IGNvbnRhaW5zIHRoZSBuYW1lcyAoU3RyaW5ncyBsaWtlICJ4bWxucyIgb3IgInhtbG5zOmZvbyIpIG9mCisgICAgICAqIHRoZSBpbmNsdXNpdmUgbmFtZXNwYWNlcy4KKyAgICAgICovCisgICAgVHJlZVNldCBfaW5jbHVzaXZlTlNTZXQgPSBuZXcgVHJlZVNldCgpOworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgWE1MTlNfVVJJPUNvbnN0YW50cy5OYW1lc3BhY2VTcGVjTlM7CisgICAgZmluYWwgU29ydGVkU2V0IHJlc3VsdCA9IG5ldyBUcmVlU2V0KENPTVBBUkUpOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IgQ2Fub25pY2FsaXplcjIwMDEwMzE1RXhjbAorICAgICAqIAorICAgICAqIEBwYXJhbSBpbmNsdWRlQ29tbWVudHMKKyAgICAgKi8KKyAgICBwdWJsaWMgQ2Fub25pY2FsaXplcjIwMDEwMzE1RXhjbChib29sZWFuIGluY2x1ZGVDb21tZW50cykgeworCXN1cGVyKGluY2x1ZGVDb21tZW50cyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogTWV0aG9kIGVuZ2luZUNhbm9uaWNhbGl6ZVN1YlRyZWUKKyAgICAgKiBAaW5oZXJpdERvYworICAgICAqIEBwYXJhbSByb290Tm9kZQorICAgICAqIAorICAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBieXRlW10gZW5naW5lQ2Fub25pY2FsaXplU3ViVHJlZShOb2RlIHJvb3ROb2RlKQorCXRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uIHsKKwlyZXR1cm4gZW5naW5lQ2Fub25pY2FsaXplU3ViVHJlZShyb290Tm9kZSwgIiIsIG51bGwpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1ldGhvZCBlbmdpbmVDYW5vbmljYWxpemVTdWJUcmVlCisgICAgICogIEBpbmhlcml0RG9jCisgICAgICogQHBhcmFtIHJvb3ROb2RlCisgICAgICogQHBhcmFtIGluY2x1c2l2ZU5hbWVzcGFjZXMKKyAgICAgKiAKKyAgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgYnl0ZVtdIGVuZ2luZUNhbm9uaWNhbGl6ZVN1YlRyZWUoTm9kZSByb290Tm9kZSwKKwlTdHJpbmcgaW5jbHVzaXZlTmFtZXNwYWNlcykgdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24geworCXJldHVybiBlbmdpbmVDYW5vbmljYWxpemVTdWJUcmVlKHJvb3ROb2RlLCBpbmNsdXNpdmVOYW1lc3BhY2VzLCBudWxsKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNZXRob2QgZW5naW5lQ2Fub25pY2FsaXplU3ViVHJlZSAgCisgICAgICogQHBhcmFtIHJvb3ROb2RlCisgICAgICogQHBhcmFtIGluY2x1c2l2ZU5hbWVzcGFjZXMgICAKKyAgICAgKiBAcGFyYW0gZXhjbCBBIGVsZW1lbnQgdG8gZXhjbHVkZSBmcm9tIHRoZSBjMTRuIHByb2Nlc3MuIAorICAgICAqIEByZXR1cm4gdGhlIHJvb3ROb2RlIGMxNG4uCisgICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIGJ5dGVbXSBlbmdpbmVDYW5vbmljYWxpemVTdWJUcmVlKE5vZGUgcm9vdE5vZGUsCisJU3RyaW5nIGluY2x1c2l2ZU5hbWVzcGFjZXMsIE5vZGUgZXhjbCkgdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb257CisJdGhpcy5faW5jbHVzaXZlTlNTZXQgPSAKKyAgICAgICAgICAgIChUcmVlU2V0KSBJbmNsdXNpdmVOYW1lc3BhY2VzLnByZWZpeFN0cjJTZXQoaW5jbHVzaXZlTmFtZXNwYWNlcyk7CisJcmV0dXJuIHN1cGVyLmVuZ2luZUNhbm9uaWNhbGl6ZVN1YlRyZWUocm9vdE5vZGUsIGV4Y2wpOworICAgIH0KKworICAgIC8qKgorICAgICAqIAorICAgICAqIEBwYXJhbSByb290Tm9kZQorICAgICAqIEBwYXJhbSBpbmNsdXNpdmVOYW1lc3BhY2VzCisgICAgICogQHJldHVybiB0aGUgcm9vdE5vZGUgYzE0bi4KKyAgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgYnl0ZVtdIGVuZ2luZUNhbm9uaWNhbGl6ZShYTUxTaWduYXR1cmVJbnB1dCByb290Tm9kZSwKKwlTdHJpbmcgaW5jbHVzaXZlTmFtZXNwYWNlcykgdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24geworCXRoaXMuX2luY2x1c2l2ZU5TU2V0ID0gCisgICAgICAgICAgICAoVHJlZVNldCkgSW5jbHVzaXZlTmFtZXNwYWNlcy5wcmVmaXhTdHIyU2V0KGluY2x1c2l2ZU5hbWVzcGFjZXMpOworCXJldHVybiBzdXBlci5lbmdpbmVDYW5vbmljYWxpemUocm9vdE5vZGUpOworICAgIH0KKyAKKyAgICAvKioKKyAgICAgKiBNZXRob2QgaGFuZGxlQXR0cmlidXRlc1N1YnRyZWUKKyAgICAgKiBAaW5oZXJpdERvYworICAgICAqIEBwYXJhbSBFCisgICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgSXRlcmF0b3IgaGFuZGxlQXR0cmlidXRlc1N1YnRyZWUoRWxlbWVudCBFLCBOYW1lU3BhY2VTeW1iVGFibGUgbnMpCisgICAgICAgIHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uIHsKKwkvLyBTeXN0ZW0ub3V0LnByaW50bG4oIkR1cmluZyB0aGUgdHJhdmVyc2FsLCBJIGVuY291bnRlcmVkICIgKworCS8vIFhNTFV0aWxzLmdldFhQYXRoKEUpKTsKKwkvLyByZXN1bHQgd2lsbCBjb250YWluIHRoZSBhdHRycyB3aGljaCBoYXZlIHRvIGJlIG91dHB1dHRlZAorCVNvcnRlZFNldCByZXN1bHQgPSB0aGlzLnJlc3VsdDsgICAgICAgCisgICAgICAgIHJlc3VsdC5jbGVhcigpOworCU5hbWVkTm9kZU1hcCBhdHRycyA9IG51bGw7CisKKwlpbnQgYXR0cnNMZW5ndGggPSAwOworICAgICAgICBpZiAoRS5oYXNBdHRyaWJ1dGVzKCkpIHsKKyAgICAgICAgICAgIGF0dHJzID0gRS5nZXRBdHRyaWJ1dGVzKCk7CisgICAgICAgCSAgICBhdHRyc0xlbmd0aCA9IGF0dHJzLmdldExlbmd0aCgpOworICAgICAgICB9CisJLy8gVGhlIHByZWZpeCB2aXNpYmx5IHV0aWxpemVkKGluIHRoZSBhdHRyaWJ1dGUgb3IgaW4gdGhlIG5hbWUpIGluIAorICAgICAgICAvLyB0aGUgZWxlbWVudAorCVNvcnRlZFNldCB2aXNpYmx5VXRpbGl6ZWQgPSAoU29ydGVkU2V0KSBfaW5jbHVzaXZlTlNTZXQuY2xvbmUoKTsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgYXR0cnNMZW5ndGg7IGkrKykgeworCSAgICBBdHRyIE4gPSAoQXR0cikgYXR0cnMuaXRlbShpKTsKKworCSAgICBpZiAoWE1MTlNfVVJJICE9IE4uZ2V0TmFtZXNwYWNlVVJJKCkpIHsKKwkJLy8gTm90IGEgbmFtZXNwYWNlIGRlZmluaXRpb24uCisJCS8vIFRoZSBFbGVtZW50IGlzIG91dHB1dCBlbGVtZW50LCBhZGQgdGhlIHByZWZpeCAoaWYgdXNlZCkgdG8gCisgICAgICAgICAgICAgICAgLy8gdmlzaWJ5VXRpbGl6ZWQKKwkJU3RyaW5nIHByZWZpeCA9IE4uZ2V0UHJlZml4KCk7CisJCWlmIChwcmVmaXggIT0gbnVsbCAmJiAoIXByZWZpeC5lcXVhbHMoWE1MKSAKKyAgICAgICAgICAgICAgICAgICAgJiYgIXByZWZpeC5lcXVhbHMoWE1MTlMpKSkgeworCQkgICAgdmlzaWJseVV0aWxpemVkLmFkZChwcmVmaXgpOworCQl9CQkJCQkKKwkJLy8gQWRkIHRvIHRoZSByZXN1bHQuCisJCXJlc3VsdC5hZGQoTik7CQkJCQorCQljb250aW51ZTsKKwkgICAgfQorCSAgICBTdHJpbmcgTk5hbWUgPSBOLmdldExvY2FsTmFtZSgpOworCSAgICBTdHJpbmcgTk5vZGVWYWx1ZSA9IE4uZ2V0Tm9kZVZhbHVlKCk7CisgICAgICAgICAgICBpZiAoWE1MLmVxdWFscyhOTmFtZSkgJiYgWE1MX0xBTkdfVVJJLmVxdWFscyhOTm9kZVZhbHVlKSkgeworICAgICAgICAgICAgICAgIC8vIFRoZSBkZWZhdWx0IG1hcHBpbmcgZm9yIHhtbCBtdXN0IG5vdCBiZSBvdXRwdXQuCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKwkgICAgaWYgKG5zLmFkZE1hcHBpbmcoTk5hbWUsIE5Ob2RlVmFsdWUsIE4pKSB7CisJICAgICAgICAvLyBOZXcgZGVmaW5pdGlvbiBjaGVjayBpZiBpdCBpcyByZWxhdGl2ZS4KKyAgICAgICAgICAgICAgICBpZiAoQzE0bkhlbHBlci5uYW1lc3BhY2VJc1JlbGF0aXZlKE5Ob2RlVmFsdWUpKSB7CisgICAgICAgICAgICAgICAgICAgIE9iamVjdCBleEFyZ3NbXSA9IHtFLmdldFRhZ05hbWUoKSwgTk5hbWUsIE4uZ2V0Tm9kZVZhbHVlKCl9OworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICJjMTRuLkNhbm9uaWNhbGl6ZXIuUmVsYXRpdmVOYW1lc3BhY2UiLCBleEFyZ3MpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwl9CQkKKwlTdHJpbmcgcHJlZml4OworCWlmIChFLmdldE5hbWVzcGFjZVVSSSgpICE9IG51bGwpIHsKKwkgICAgcHJlZml4ID0gRS5nZXRQcmVmaXgoKTsKKwkgICAgaWYgKHByZWZpeCA9PSBudWxsIHx8IHByZWZpeC5sZW5ndGgoKSA9PSAwKSB7CisJCXByZWZpeCA9IFhNTE5TOworCSAgICB9CisJfSBlbHNlIHsKKwkgICAgcHJlZml4ID0gWE1MTlM7CisJfQorCXZpc2libHlVdGlsaXplZC5hZGQocHJlZml4KTsKKworCS8vIFRoaXMgY2FuIGJlIG9wdGltZXplZCBieSBJIGRvbid0IGhhdmUgdGltZQorCUl0ZXJhdG9yIGl0ID0gdmlzaWJseVV0aWxpemVkLml0ZXJhdG9yKCk7CisJd2hpbGUgKGl0Lmhhc05leHQoKSkgeworCSAgICBTdHJpbmcgcyA9IChTdHJpbmcpIGl0Lm5leHQoKTsKKwkgICAgQXR0ciBrZXkgPSBucy5nZXRNYXBwaW5nKHMpOworCSAgICBpZiAoa2V5ID09IG51bGwpIHsKKwkJY29udGludWU7CisJICAgIH0KKwkgICAgcmVzdWx0LmFkZChrZXkpOworCX0KKworCXJldHVybiByZXN1bHQuaXRlcmF0b3IoKTsgCQkKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNZXRob2QgZW5naW5lQ2Fub25pY2FsaXplWFBhdGhOb2RlU2V0CisgICAgICogQGluaGVyaXREb2MKKyAgICAgKiBAcGFyYW0geHBhdGhOb2RlU2V0CisgICAgICogQHBhcmFtIGluY2x1c2l2ZU5hbWVzcGFjZXMKKyAgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgYnl0ZVtdIGVuZ2luZUNhbm9uaWNhbGl6ZVhQYXRoTm9kZVNldChTZXQgeHBhdGhOb2RlU2V0LAorCVN0cmluZyBpbmNsdXNpdmVOYW1lc3BhY2VzKSB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiB7CisJCQorCXRoaXMuX2luY2x1c2l2ZU5TU2V0ID0gCisgICAgICAgICAgICAoVHJlZVNldCkgSW5jbHVzaXZlTmFtZXNwYWNlcy5wcmVmaXhTdHIyU2V0KGluY2x1c2l2ZU5hbWVzcGFjZXMpOworCXJldHVybiBzdXBlci5lbmdpbmVDYW5vbmljYWxpemVYUGF0aE5vZGVTZXQoeHBhdGhOb2RlU2V0KTsKKyAgICB9CisJCisgICAgLyoqCisgICAgICogQGluaGVyaXREb2MKKyAgICAgKiBAcGFyYW0gRQorICAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIGZpbmFsIEl0ZXJhdG9yIGhhbmRsZUF0dHJpYnV0ZXMoRWxlbWVudCBFLCBOYW1lU3BhY2VTeW1iVGFibGUgbnMpCisJdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24geworCS8vIHJlc3VsdCB3aWxsIGNvbnRhaW4gdGhlIGF0dHJzIHdoaWNoIGhhdmUgdG8gYmUgb3V0cHV0dGVkCisJU29ydGVkU2V0IHJlc3VsdCA9IHRoaXMucmVzdWx0OyAgICAgICAKKyAgICAgICAgcmVzdWx0LmNsZWFyKCk7CisJTmFtZWROb2RlTWFwIGF0dHJzID0gbnVsbDsKKwlpbnQgYXR0cnNMZW5ndGggPSAwOworICAgICAgICBpZiAoRS5oYXNBdHRyaWJ1dGVzKCkpIHsKKyAgICAgICAgICAgIGF0dHJzID0gRS5nZXRBdHRyaWJ1dGVzKCk7ICAgICAgICAgICAKKyAgICAgICAJICAgIGF0dHJzTGVuZ3RoID0gYXR0cnMuZ2V0TGVuZ3RoKCk7CisgICAgICAgIH0KKwkvLyBUaGUgcHJlZml4IHZpc2libHkgdXRpbGl6ZWQgKGluIHRoZSBhdHRyaWJ1dGUgb3IgaW4gdGhlIG5hbWUpIGluIAorICAgICAgICAvLyB0aGUgZWxlbWVudAorCVNldCB2aXNpYmx5VXRpbGl6ZWQgPSBudWxsOworCS8vIEl0J3MgdGhlIG91dHB1dCBzZWxlY3RlZC4KKwlib29sZWFuIGlzT3V0cHV0RWxlbWVudCA9IGlzVmlzaWJsZURPKEUsIG5zLmdldExldmVsKCkpID09IDE7CisJaWYgKGlzT3V0cHV0RWxlbWVudCkgeworCSAgICB2aXNpYmx5VXRpbGl6ZWQgPSAoU2V0KSB0aGlzLl9pbmNsdXNpdmVOU1NldC5jbG9uZSgpOworCX0KKworCWZvciAoaW50IGkgPSAwOyBpIDwgYXR0cnNMZW5ndGg7IGkrKykgeworCSAgICBBdHRyIE4gPSAoQXR0cikgYXR0cnMuaXRlbShpKTsKKworCSAgICBpZiAoWE1MTlNfVVJJICE9IE4uZ2V0TmFtZXNwYWNlVVJJKCkpIHsKKwkJaWYgKCFpc1Zpc2libGUoTikpIHsKKwkJICAgIC8vIFRoZSBub2RlIGlzIG5vdCBpbiB0aGUgbm9kZXNldChpZiB0aGVyZSBpcyBhIG5vZGVzZXQpCisJCSAgICBjb250aW51ZTsKKwkJfQorCQkvLyBOb3QgYSBuYW1lc3BhY2UgZGVmaW5pdGlvbi4KKwkJaWYgKGlzT3V0cHV0RWxlbWVudCkgeworCQkgICAgLy8gVGhlIEVsZW1lbnQgaXMgb3V0cHV0IGVsZW1lbnQsIGFkZCB0aGUgcHJlZml4IChpZiB1c2VkKSAKKyAgICAgICAgICAgICAgICAgICAgLy8gdG8gdmlzaWJ5VXRpbGl6ZWQKKwkJICAgIFN0cmluZyBwcmVmaXggPSBOLmdldFByZWZpeCgpOworCQkgICAgaWYgKHByZWZpeCAhPSBudWxsICYmICghcHJlZml4LmVxdWFscyhYTUwpIAorICAgICAgICAgICAgICAgICAgICAgICAgJiYgIXByZWZpeC5lcXVhbHMoWE1MTlMpKSkgeworCQkJdmlzaWJseVV0aWxpemVkLmFkZChwcmVmaXgpOworCQkgICAgfQkJCQkJCisJCSAgICAvLyBBZGQgdG8gdGhlIHJlc3VsdC4KKwkJICAgIHJlc3VsdC5hZGQoTik7CisJCX0KKwkJY29udGludWU7CisJICAgIH0KKwkgICAgU3RyaW5nIE5OYW1lID0gTi5nZXRMb2NhbE5hbWUoKTsKKwkgICAgaWYgKGlzT3V0cHV0RWxlbWVudCAmJiAhaXNWaXNpYmxlKE4pICYmIE5OYW1lICE9IFhNTE5TKSB7CisJCW5zLnJlbW92ZU1hcHBpbmdJZk5vdFJlbmRlcihOTmFtZSk7CisgICAgCQljb250aW51ZTsKKyAgICAJICAgIH0KKwkgICAgU3RyaW5nIE5Ob2RlVmFsdWUgPSBOLmdldE5vZGVWYWx1ZSgpOworCisJICAgIGlmICghaXNPdXRwdXRFbGVtZW50ICYmIGlzVmlzaWJsZShOKSAKKyAgICAgICAgICAgICAgICAmJiBfaW5jbHVzaXZlTlNTZXQuY29udGFpbnMoTk5hbWUpIAorICAgICAgICAgICAgICAgICYmICFucy5yZW1vdmVNYXBwaW5nSWZSZW5kZXIoTk5hbWUpKSB7CisJCU5vZGUgbiA9IG5zLmFkZE1hcHBpbmdBbmRSZW5kZXIoTk5hbWUsIE5Ob2RlVmFsdWUsIE4pOworCSAJaWYgKG4gIT0gbnVsbCkgeworCQkgICAgcmVzdWx0LmFkZChuKTsKKwkgICAgICAgICAgICBpZiAoQzE0bkhlbHBlci5uYW1lc3BhY2VJc1JlbGF0aXZlKE4pKSB7CisJICAgICAgICAgICAgICAgIE9iamVjdCBleEFyZ3NbXSA9IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgRS5nZXRUYWdOYW1lKCksIE5OYW1lLCBOLmdldE5vZGVWYWx1ZSgpIH07CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbigKKwkgICAgICAgICAgICAgICAgICAgICJjMTRuLkNhbm9uaWNhbGl6ZXIuUmVsYXRpdmVOYW1lc3BhY2UiLCBleEFyZ3MpOworICAgICAgICAgICAgICAgICAgICB9CisJCX0KKwkgICAgfQorCisJICAgIGlmIChucy5hZGRNYXBwaW5nKE5OYW1lLCBOTm9kZVZhbHVlLCBOKSkgeworICAgICAgICAgICAgICAgIC8vIE5ldyBkZWZpbml0b24gY2hlY2sgaWYgaXQgaXMgcmVsYXRpdmUKKyAgICAgICAgICAgICAgICBpZiAoQzE0bkhlbHBlci5uYW1lc3BhY2VJc1JlbGF0aXZlKE5Ob2RlVmFsdWUpKSB7CisgICAgICAgICAgICAgICAgICAgIE9iamVjdCBleEFyZ3NbXSA9IAorICAgICAgICAgICAgICAgICAgICAgICAgeyBFLmdldFRhZ05hbWUoKSwgTk5hbWUsIE4uZ2V0Tm9kZVZhbHVlKCkgfTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAiYzE0bi5DYW5vbmljYWxpemVyLlJlbGF0aXZlTmFtZXNwYWNlIiwgZXhBcmdzKTsKKyAgICAgICAgICAgICAgICB9ICAgIAorICAgICAgICAgICAgfQorCX0KKworCWlmIChpc091dHB1dEVsZW1lbnQpIHsJICAgICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBUaGUgZWxlbWVudCBpcyB2aXNpYmxlLCBoYW5kbGUgdGhlIHhtbG5zIGRlZmluaXRpb24gICAgCisgICAgICAgICAgICBBdHRyIHhtbG5zID0gRS5nZXRBdHRyaWJ1dGVOb2RlTlMoWE1MTlNfVVJJLCBYTUxOUyk7CisgICAgICAgICAgICBpZiAoeG1sbnMgIT0gbnVsbCAmJiAhaXNWaXNpYmxlKHhtbG5zKSkgeworICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzIGEgZGVmaW5pdGlvbiBidXQgdGhlIHhtbG5zIGlzIG5vdCBzZWxlY3RlZCBieSB0aGUgCisgICAgICAgICAgICAgICAgLy8geHBhdGguIHRoZW4geG1sbnM9IiIKKyAgICAgICAgICAgICAgICBucy5hZGRNYXBwaW5nKFhNTE5TLCAiIiwgbnVsbE5vZGUpOworICAgICAgICAgICAgfQorCisJICAgIGlmIChFLmdldE5hbWVzcGFjZVVSSSgpICE9IG51bGwpIHsKKwkJU3RyaW5nIHByZWZpeCA9IEUuZ2V0UHJlZml4KCk7CisJCWlmIChwcmVmaXggPT0gbnVsbCB8fCBwcmVmaXgubGVuZ3RoKCkgPT0gMCkgeworCQkgICAgdmlzaWJseVV0aWxpemVkLmFkZChYTUxOUyk7CisJCX0gZWxzZSB7CisJCSAgICB2aXNpYmx5VXRpbGl6ZWQuYWRkKHByZWZpeCk7CisJCX0KKwkgICAgfSBlbHNlIHsKKwkJdmlzaWJseVV0aWxpemVkLmFkZChYTUxOUyk7CisJICAgIH0JCQkJCQkJCQkKKwkgICAgLy8gVGhpcyBjYW4gYmUgb3B0aW1lemVkIGJ5IEkgZG9uJ3QgaGF2ZSB0aW1lCisJICAgIC8vIHZpc2libHlVdGlsaXplZC5hZGRBbGwodGhpcy5faW5jbHVzaXZlTlNTZXQpOworCSAgICBJdGVyYXRvciBpdCA9IHZpc2libHlVdGlsaXplZC5pdGVyYXRvcigpOworCSAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7CisJCVN0cmluZyBzID0gKFN0cmluZykgaXQubmV4dCgpOworCQlBdHRyIGtleSA9IG5zLmdldE1hcHBpbmcocyk7CisJCWlmIChrZXkgPT0gbnVsbCkgeworCQkgICAgY29udGludWU7CisJCX0KKwkJcmVzdWx0LmFkZChrZXkpOworCSAgICB9CisJfSAKKworCXJldHVybiByZXN1bHQuaXRlcmF0b3IoKTsgCisgICAgfQorCisgICAgdm9pZCBjaXJjdW12ZW50QnVnSWZOZWVkZWQoWE1MU2lnbmF0dXJlSW5wdXQgaW5wdXQpIAorICAgICAgICB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiwgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiwgCisgICAgICAgICAgICAgICBJT0V4Y2VwdGlvbiwgU0FYRXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKCFpbnB1dC5pc05lZWRzVG9CZUV4cGFuZGVkKCkgfHwgX2luY2x1c2l2ZU5TU2V0LmlzRW1wdHkoKSkgeworCSAgICByZXR1cm47CisgICAgICAgIH0KKwlEb2N1bWVudCBkb2MgPSBudWxsOworCWlmIChpbnB1dC5nZXRTdWJOb2RlKCkgIT0gbnVsbCkgeworCSAgICBkb2MgPSBYTUxVdGlscy5nZXRPd25lckRvY3VtZW50KGlucHV0LmdldFN1Yk5vZGUoKSk7CisJfSBlbHNlIHsKKwkgICAgZG9jID0gWE1MVXRpbHMuZ2V0T3duZXJEb2N1bWVudChpbnB1dC5nZXROb2RlU2V0KCkpOworCX0KKwlYTUxVdGlscy5jaXJjdW12ZW50QnVnMjY1MChkb2MpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2ltcGxlbWVudGF0aW9ucy9DYW5vbmljYWxpemVyMjAwMTAzMTVFeGNsT21pdENvbW1lbnRzLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbXBsZW1lbnRhdGlvbnMvQ2Fub25pY2FsaXplcjIwMDEwMzE1RXhjbE9taXRDb21tZW50cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiZWQxNjAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbXBsZW1lbnRhdGlvbnMvQ2Fub25pY2FsaXplcjIwMDEwMzE1RXhjbE9taXRDb21tZW50cy5qYXZhCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLmltcGxlbWVudGF0aW9uczsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uQ2Fub25pY2FsaXplcjsKKworLyoqCisgKiAgCisgKgorICovCitwdWJsaWMgY2xhc3MgQ2Fub25pY2FsaXplcjIwMDEwMzE1RXhjbE9taXRDb21tZW50cworICAgICAgICBleHRlbmRzIENhbm9uaWNhbGl6ZXIyMDAxMDMxNUV4Y2wgeworCisgICAvKioKKyAgICAqIAorICAgICovCisJcHVibGljIENhbm9uaWNhbGl6ZXIyMDAxMDMxNUV4Y2xPbWl0Q29tbWVudHMoKSB7CisgICAgICBzdXBlcihmYWxzZSk7CisgICB9CisgCisgICAvKiogQGluaGVyaXREb2MgKi8KKyAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZW5naW5lR2V0VVJJKCkgeworICAgICAgcmV0dXJuIENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX0VYQ0xfT01JVF9DT01NRU5UUzsKKyAgIH0KKworICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwdWJsaWMgZmluYWwgYm9vbGVhbiBlbmdpbmVHZXRJbmNsdWRlQ29tbWVudHMoKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbXBsZW1lbnRhdGlvbnMvQ2Fub25pY2FsaXplcjIwMDEwMzE1RXhjbFdpdGhDb21tZW50cy5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW1wbGVtZW50YXRpb25zL0Nhbm9uaWNhbGl6ZXIyMDAxMDMxNUV4Y2xXaXRoQ29tbWVudHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjgwMGYzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW1wbGVtZW50YXRpb25zL0Nhbm9uaWNhbGl6ZXIyMDAxMDMxNUV4Y2xXaXRoQ29tbWVudHMuamF2YQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLmltcGxlbWVudGF0aW9uczsKKworCisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkNhbm9uaWNhbGl6ZXI7CisKKworLyoqCisgKiBDbGFzcyBDYW5vbmljYWxpemVyMjAwMTAzMTVFeGNsV2l0aENvbW1lbnRzCisgKgorICogQHZlcnNpb24gJFJldmlzaW9uJAorICovCitwdWJsaWMgY2xhc3MgQ2Fub25pY2FsaXplcjIwMDEwMzE1RXhjbFdpdGhDb21tZW50cworICAgICAgICBleHRlbmRzIENhbm9uaWNhbGl6ZXIyMDAxMDMxNUV4Y2wgeworCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIENhbm9uaWNhbGl6ZXIyMDAxMDMxNUV4Y2xXaXRoQ29tbWVudHMKKyAgICAqCisgICAgKi8KKyAgIHB1YmxpYyBDYW5vbmljYWxpemVyMjAwMTAzMTVFeGNsV2l0aENvbW1lbnRzKCkgeworICAgICAgc3VwZXIodHJ1ZSk7CisgICB9CisKKyAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgcHVibGljIGZpbmFsIFN0cmluZyBlbmdpbmVHZXRVUkkoKSB7CisgICAgICByZXR1cm4gQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fRVhDTF9XSVRIX0NPTU1FTlRTOworICAgfQorCisgICAvKiogQGluaGVyaXREb2MgKi8KKyAgIHB1YmxpYyBmaW5hbCBib29sZWFuIGVuZ2luZUdldEluY2x1ZGVDb21tZW50cygpIHsKKyAgICAgIHJldHVybiB0cnVlOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW1wbGVtZW50YXRpb25zL0Nhbm9uaWNhbGl6ZXIyMDAxMDMxNU9taXRDb21tZW50cy5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW1wbGVtZW50YXRpb25zL0Nhbm9uaWNhbGl6ZXIyMDAxMDMxNU9taXRDb21tZW50cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhMjc3MWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbXBsZW1lbnRhdGlvbnMvQ2Fub25pY2FsaXplcjIwMDEwMzE1T21pdENvbW1lbnRzLmphdmEKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5pbXBsZW1lbnRhdGlvbnM7CisKKworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5DYW5vbmljYWxpemVyOworCisKKy8qKgorICoKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEdldWVyLVBvbGxtYW5uCisgKi8KK3B1YmxpYyBjbGFzcyBDYW5vbmljYWxpemVyMjAwMTAzMTVPbWl0Q29tbWVudHMgZXh0ZW5kcyBDYW5vbmljYWxpemVyMjAwMTAzMTUgeworCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIENhbm9uaWNhbGl6ZXIyMDAxMDMxNVdpdGhYUGF0aE9taXRDb21tZW50cworICAgICoKKyAgICAqLworICAgcHVibGljIENhbm9uaWNhbGl6ZXIyMDAxMDMxNU9taXRDb21tZW50cygpIHsKKyAgICAgIHN1cGVyKGZhbHNlKTsKKyAgIH0KKworICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwdWJsaWMgZmluYWwgU3RyaW5nIGVuZ2luZUdldFVSSSgpIHsKKyAgICAgIHJldHVybiBDYW5vbmljYWxpemVyLkFMR09fSURfQzE0Tl9PTUlUX0NPTU1FTlRTOworICAgfQorCisgICAvKiogQGluaGVyaXREb2MgKi8KKyAgIHB1YmxpYyBmaW5hbCBib29sZWFuIGVuZ2luZUdldEluY2x1ZGVDb21tZW50cygpIHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2ltcGxlbWVudGF0aW9ucy9DYW5vbmljYWxpemVyMjAwMTAzMTVXaXRoQ29tbWVudHMuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2ltcGxlbWVudGF0aW9ucy9DYW5vbmljYWxpemVyMjAwMTAzMTVXaXRoQ29tbWVudHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDczMDE2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW1wbGVtZW50YXRpb25zL0Nhbm9uaWNhbGl6ZXIyMDAxMDMxNVdpdGhDb21tZW50cy5qYXZhCkBAIC0wLDAgKzEsNDUgQEAKKworLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5pbXBsZW1lbnRhdGlvbnM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkNhbm9uaWNhbGl6ZXI7CisKKy8qKgorICoKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEdldWVyLVBvbGxtYW5uCisgKi8KK3B1YmxpYyBjbGFzcyBDYW5vbmljYWxpemVyMjAwMTAzMTVXaXRoQ29tbWVudHMgZXh0ZW5kcyBDYW5vbmljYWxpemVyMjAwMTAzMTUgeworCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIENhbm9uaWNhbGl6ZXIyMDAxMDMxNVdpdGhYUGF0aFdpdGhDb21tZW50cworICAgICoKKyAgICAqLworICAgcHVibGljIENhbm9uaWNhbGl6ZXIyMDAxMDMxNVdpdGhDb21tZW50cygpIHsKKyAgICAgIHN1cGVyKHRydWUpOworICAgfQorCisgICAvKiogQGluaGVyaXREb2MgKi8KKyAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZW5naW5lR2V0VVJJKCkgeworICAgICAgcmV0dXJuIENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX1dJVEhfQ09NTUVOVFM7CisgICB9CisKKyAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgcHVibGljIGZpbmFsIGJvb2xlYW4gZW5naW5lR2V0SW5jbHVkZUNvbW1lbnRzKCkgeworICAgICAgcmV0dXJuIHRydWU7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbXBsZW1lbnRhdGlvbnMvQ2Fub25pY2FsaXplckJhc2UuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2ltcGxlbWVudGF0aW9ucy9DYW5vbmljYWxpemVyQmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxYTdhNTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbXBsZW1lbnRhdGlvbnMvQ2Fub25pY2FsaXplckJhc2UuamF2YQpAQCAtMCwwICsxLDg0MCBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5pbXBsZW1lbnRhdGlvbnM7CisKKworCitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxpc3RJdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CisKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb247CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkNhbm9uaWNhbGl6YXRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5DYW5vbmljYWxpemVyU3BpOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uaGVscGVyLkF0dHJDb21wYXJlOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5Ob2RlRmlsdGVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmVJbnB1dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuVW5zeW5jQnl0ZUFycmF5T3V0cHV0U3RyZWFtOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7CitpbXBvcnQgb3JnLnczYy5kb20uQ29tbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5hbWVkTm9kZU1hcDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworaW1wb3J0IG9yZy53M2MuZG9tLlByb2Nlc3NpbmdJbnN0cnVjdGlvbjsKK2ltcG9ydCBvcmcueG1sLnNheC5TQVhFeGNlcHRpb247CisKKworLyoqCisgKiBBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBjYW5vbmljYWxpemF0aW9uIGFsZ29yaXRobXMuCisgKgorICogQGF1dGhvciBDaHJpc3RpYW4gR2V1ZXItUG9sbG1hbm4gPGdldWVycEBhcGFjaGUub3JnPgorICogQHZlcnNpb24gJFJldmlzaW9uJAorICovCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQ2Fub25pY2FsaXplckJhc2UgZXh0ZW5kcyBDYW5vbmljYWxpemVyU3BpIHsKKyAgIC8vQ29uc3RhbnRzIHRvIGJlIG91dHB1dGVkLCBJbiBjaGFyIGFycmF5IGZvcm0sIHNvCisgICAvL2xlc3MgZ2FyYmFnZSBpcyBnZW5lcmF0ZSB3aGVuIG91dHB1dGVkLgorICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZVtdIF9FTkRfUEkgPSB7Jz8nLCc+J307CisgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlW10gX0JFR0lOX1BJID0geyc8JywnPyd9OworICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZVtdIF9FTkRfQ09NTSA9IHsnLScsJy0nLCc+J307CisgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlW10gX0JFR0lOX0NPTU0gPSB7JzwnLCchJywnLScsJy0nfTsKKyAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGVbXSBfX1hBXyA9IHsnJicsJyMnLCd4JywnQScsJzsnfTsKKyAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGVbXSBfX1g5XyA9IHsnJicsJyMnLCd4JywnOScsJzsnfTsKKyAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGVbXSBfUVVPVF8gPSB7JyYnLCdxJywndScsJ28nLCd0JywnOyd9OworICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZVtdIF9fWERfID0geycmJywnIycsJ3gnLCdEJywnOyd9OworICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZVtdIF9HVF8gPSB7JyYnLCdnJywndCcsJzsnfTsKKyAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGVbXSBfTFRfID0geycmJywnbCcsJ3QnLCc7J307CisgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlW10gX0VORF9UQUcgPSB7JzwnLCcvJ307CisgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlW10gX0FNUF8gPSB7JyYnLCdhJywnbScsJ3AnLCc7J307CisgICBmaW5hbCBzdGF0aWMgQXR0ckNvbXBhcmUgQ09NUEFSRT1uZXcgQXR0ckNvbXBhcmUoKTsKKyAgIGZpbmFsIHN0YXRpYyBTdHJpbmcgWE1MPSJ4bWwiOworICAgZmluYWwgc3RhdGljIFN0cmluZyBYTUxOUz0ieG1sbnMiOworICAgZmluYWwgc3RhdGljIGJ5dGVbXSBlcXVhbHNTdHI9IHsnPScsJ1wiJ307CisgICBzdGF0aWMgZmluYWwgaW50IE5PREVfQkVGT1JFX0RPQ1VNRU5UX0VMRU1FTlQgPSAtMTsKKyAgIHN0YXRpYyBmaW5hbCBpbnQgTk9ERV9OT1RfQkVGT1JFX09SX0FGVEVSX0RPQ1VNRU5UX0VMRU1FTlQgPSAwOworICAgc3RhdGljIGZpbmFsIGludCBOT0RFX0FGVEVSX0RPQ1VNRU5UX0VMRU1FTlQgPSAxOworICAgLy9UaGUgbnVsbCB4bWxucyBkZWZpbml0b24uCisgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIEF0dHIgbnVsbE5vZGU7CisgICBzdGF0aWMgeworICAgIHRyeSB7CisgICAgICAgIG51bGxOb2RlPURvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKS4KKyAgICAgICAgICAgIG5ld0RvY3VtZW50QnVpbGRlcigpLm5ld0RvY3VtZW50KCkuY3JlYXRlQXR0cmlidXRlTlMoQ29uc3RhbnRzLk5hbWVzcGFjZVNwZWNOUyxYTUxOUyk7CisgICAgICAgIG51bGxOb2RlLnNldFZhbHVlKCIiKTsKKyAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiVW5hYmxlIHRvIGNyZWF0ZSBudWxsTm9kZSIvKiwqLytlKTsKKyAgICB9CisgICB9CisgICAKKyAgIExpc3Qgbm9kZUZpbHRlcjsKKyAgIAorICAgYm9vbGVhbiBfaW5jbHVkZUNvbW1lbnRzOyAgCisgICBTZXQgX3hwYXRoTm9kZVNldCA9IG51bGw7CisgICAvKioKKyAgICAqIFRoZSBub2RlIHRvIGJlIHNraXBlZC9leGNsdWRlZCBmcm9tIHRoZSBET00gdHJlZSAKKyAgICAqIGluIHN1YnRyZWUgY2Fub25pY2FsaXphdGlvbnMuCisgICAgKi8KKyAgIE5vZGUgX2V4Y2x1ZGVOb2RlID1udWxsOworICAgT3V0cHV0U3RyZWFtIF93cml0ZXIgPSBuZXcgVW5zeW5jQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7Ly9udWxsOworCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIENhbm9uaWNhbGl6ZXJCYXNlCisgICAgKgorICAgICogQHBhcmFtIGluY2x1ZGVDb21tZW50cworICAgICovCisgICBwdWJsaWMgQ2Fub25pY2FsaXplckJhc2UoYm9vbGVhbiBpbmNsdWRlQ29tbWVudHMpIHsKKyAgICAgIHRoaXMuX2luY2x1ZGVDb21tZW50cyA9IGluY2x1ZGVDb21tZW50czsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lQ2Fub25pY2FsaXplU3ViVHJlZQorICAgICogQGluaGVyaXREb2MKKyAgICAqIEBwYXJhbSByb290Tm9kZQorICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBieXRlW10gZW5naW5lQ2Fub25pY2FsaXplU3ViVHJlZShOb2RlIHJvb3ROb2RlKQorICAgICAgICAgICB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAJCXJldHVybiBlbmdpbmVDYW5vbmljYWxpemVTdWJUcmVlKHJvb3ROb2RlLChOb2RlKW51bGwpOworICAgfQorICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lQ2Fub25pY2FsaXplWFBhdGhOb2RlU2V0CisgICAgKiBAaW5oZXJpdERvYworICAgICogQHBhcmFtIHhwYXRoTm9kZVNldAorICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBieXRlW10gZW5naW5lQ2Fub25pY2FsaXplWFBhdGhOb2RlU2V0KFNldCB4cGF0aE5vZGVTZXQpCisgICAgICAgICAgIHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uIHsKKwkgICB0aGlzLl94cGF0aE5vZGVTZXQgPSB4cGF0aE5vZGVTZXQ7CisJICAgcmV0dXJuIGVuZ2luZUNhbm9uaWNhbGl6ZVhQYXRoTm9kZVNldEludGVybmFsKFhNTFV0aWxzLmdldE93bmVyRG9jdW1lbnQodGhpcy5feHBhdGhOb2RlU2V0KSk7CisgICB9CisKKyAgIC8qKgorICAgICogQ2Fub25pY2FsaXplcyBhIFN1YnRyZWUgbm9kZS4KKyAgICAqIEBwYXJhbSBpbnB1dCB0aGUgcm9vdCBvZiB0aGUgc3VidHJlZSB0byBjYW5pY2FsaXplCisgICAgKiBAcmV0dXJuIFRoZSBjYW5vbmljYWxpemUgc3RyZWFtLgorICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgKi8KKyAgICBwdWJsaWMgYnl0ZVtdIGVuZ2luZUNhbm9uaWNhbGl6ZShYTUxTaWduYXR1cmVJbnB1dCBpbnB1dCkKKyAgICB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAgCXRyeSB7CisgICAgCQlpZiAoaW5wdXQuaXNFeGNsdWRlQ29tbWVudHMoKSkKKyAgICAJCQlfaW5jbHVkZUNvbW1lbnRzID0gZmFsc2U7CisJCQlieXRlW10gYnl0ZXM7CisJCQlpZiAoaW5wdXQuaXNPY3RldFN0cmVhbSgpKSB7CisJCQkJcmV0dXJuIGVuZ2luZUNhbm9uaWNhbGl6ZShpbnB1dC5nZXRCeXRlcygpKTsKKwkJCX0KKwkJCWlmIChpbnB1dC5pc0VsZW1lbnQoKSkgeworCQkJCWJ5dGVzID0gZW5naW5lQ2Fub25pY2FsaXplU3ViVHJlZShpbnB1dC5nZXRTdWJOb2RlKCksIGlucHV0CisJCQkJCQkuZ2V0RXhjbHVkZU5vZGUoKSk7CisJCQkJcmV0dXJuIGJ5dGVzOworCQkJfSBlbHNlIGlmIChpbnB1dC5pc05vZGVTZXQoKSkgeworCQkJCW5vZGVGaWx0ZXI9aW5wdXQuZ2V0Tm9kZUZpbHRlcnMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2lyY3VtdmVudEJ1Z0lmTmVlZGVkKGlucHV0KTsKKwkJCQkKKwkJCQlpZiAoaW5wdXQuZ2V0U3ViTm9kZSgpICE9IG51bGwpIHsKKwkJCQkgICAgYnl0ZXMgPSBlbmdpbmVDYW5vbmljYWxpemVYUGF0aE5vZGVTZXRJbnRlcm5hbChpbnB1dC5nZXRTdWJOb2RlKCkpOworCQkJCX0gZWxzZSB7CisJCQkJICAgIGJ5dGVzID0gZW5naW5lQ2Fub25pY2FsaXplWFBhdGhOb2RlU2V0KGlucHV0LmdldE5vZGVTZXQoKSk7CisJCQkJfQorCQkJCXJldHVybiBieXRlczsKKworCQkJfQorCQkJcmV0dXJuIG51bGw7CisJCX0gY2F0Y2ggKENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24gZXgpIHsKKwkJCXRocm93IG5ldyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKwkJfSBjYXRjaCAoUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiBleCkgeworCQkJdGhyb3cgbmV3IENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24oImVtcHR5IiwgZXgpOworCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBleCkgeworCQkJdGhyb3cgbmV3IENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24oImVtcHR5IiwgZXgpOworCQl9IGNhdGNoIChTQVhFeGNlcHRpb24gZXgpIHsKKwkJCXRocm93IG5ldyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKwkJfQorICAgfQorICAgLyoqCisgICAgKiBAcGFyYW0gX3dyaXRlciBUaGUgX3dyaXRlciB0byBzZXQuCisgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRXcml0ZXIoT3V0cHV0U3RyZWFtIF93cml0ZXIpIHsKKyAgICAJdGhpcy5fd3JpdGVyID0gX3dyaXRlcjsKKyAgICB9CisKKyAgICAvKioKKwkgKiBDYW5vbmljYWxpemVzIGEgU3VidHJlZSBub2RlLgorCSAqIAorCSAqIEBwYXJhbSByb290Tm9kZQorCSAqICAgICAgICAgICAgdGhlIHJvb3Qgb2YgdGhlIHN1YnRyZWUgdG8gY2FuaWNhbGl6ZQorCSAqIEBwYXJhbSBleGNsdWRlTm9kZQorCSAqICAgICAgICAgICAgYSBub2RlIHRvIGJlIGV4Y2x1ZGVkIGZyb20gdGhlIGNhbmljYWxpemUgb3BlcmF0aW9uCisJICogQHJldHVybiBUaGUgY2Fub25pY2FsaXplIHN0cmVhbS4KKwkgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKwkgKi8KKyAgICBieXRlW10gZW5naW5lQ2Fub25pY2FsaXplU3ViVHJlZShOb2RlIHJvb3ROb2RlLE5vZGUgZXhjbHVkZU5vZGUpCisgICAgdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24geworICAgIAl0aGlzLl9leGNsdWRlTm9kZSA9IGV4Y2x1ZGVOb2RlOworICAgICAgICB0cnkgeworICAgICAgICAgTmFtZVNwYWNlU3ltYlRhYmxlIG5zPW5ldyBOYW1lU3BhY2VTeW1iVGFibGUoKTsKKyAgICAgICAgIGludCBub2RlTGV2ZWw9Tk9ERV9CRUZPUkVfRE9DVU1FTlRfRUxFTUVOVDsKKyAgICAgICAgIGlmIChyb290Tm9kZSAhPSBudWxsICYmIE5vZGUuRUxFTUVOVF9OT0RFID09IHJvb3ROb2RlLmdldE5vZGVUeXBlKCkpIHsKKyAgICAgICAgIAkvL0ZpbGxzIHRoZSBuc3N5bWJ0YWJsZSB3aXRoIHRoZSBkZWZpbml0aW9ucyBvZiB0aGUgcGFyZW50IG9mIHRoZSByb290IHN1Ym5vZGUKKyAgICAgICAgIAlnZXRQYXJlbnROYW1lU3BhY2VzKChFbGVtZW50KXJvb3ROb2RlLG5zKTsKKyAgICAgICAgIAlub2RlTGV2ZWw9Tk9ERV9OT1RfQkVGT1JFX09SX0FGVEVSX0RPQ1VNRU5UX0VMRU1FTlQ7CisgICAgICAgICB9ICAgICAgICAgCisgICAgICAgICB0aGlzLmNhbm9uaWNhbGl6ZVN1YlRyZWUocm9vdE5vZGUsbnMscm9vdE5vZGUsbm9kZUxldmVsKTsKKyAgICAgICAgIHRoaXMuX3dyaXRlci5jbG9zZSgpOworICAgICAgICAgaWYgKHRoaXMuX3dyaXRlciBpbnN0YW5jZW9mIEJ5dGVBcnJheU91dHB1dFN0cmVhbSkgeworICAgICAgICAgICAgYnl0ZSBbXXJlc3VsdD0oKEJ5dGVBcnJheU91dHB1dFN0cmVhbSl0aGlzLl93cml0ZXIpLnRvQnl0ZUFycmF5KCk7CisgICAgICAgICAgICBpZiAocmVzZXQpIHsKKyAgICAgICAgICAgICAgICAoKEJ5dGVBcnJheU91dHB1dFN0cmVhbSl0aGlzLl93cml0ZXIpLnJlc2V0KCk7ICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgIAlyZXR1cm4gcmVzdWx0OworICAgICAgICAgfSAgZWxzZSBpZiAodGhpcy5fd3JpdGVyIGluc3RhbmNlb2YgVW5zeW5jQnl0ZUFycmF5T3V0cHV0U3RyZWFtKSB7CisgICAgICAgIAkgYnl0ZSBbXXJlc3VsdD0oKFVuc3luY0J5dGVBcnJheU91dHB1dFN0cmVhbSl0aGlzLl93cml0ZXIpLnRvQnl0ZUFycmF5KCk7CisgICAgICAgICAgICAgaWYgKHJlc2V0KSB7CisgICAgICAgICAgICAgICAgICgoVW5zeW5jQnl0ZUFycmF5T3V0cHV0U3RyZWFtKXRoaXMuX3dyaXRlcikucmVzZXQoKTsgICAgICAgIAorICAgICAgICAgICAgIH0KKyAgICAgICAgICAJIHJldHVybiByZXN1bHQ7CisgICAgICAgICB9CisgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgIAorICAgICAgfSBjYXRjaCAoVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIHRocm93IG5ldyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgIH0gCisgICB9CisgCisgICAKKyAgIC8qKgorICAgICogTWV0aG9kIGNhbm9uaWNhbGl6ZVN1YlRyZWUsIHRoaXMgZnVuY3Rpb24gaXMgYSByZWN1cnNpdmUgb25lLgorICAgICogICAgCisgICAgKiBAcGFyYW0gY3VycmVudE5vZGUKKyAgICAqIEBwYXJhbSBucyAKKyAgICAqIEBwYXJhbSBlbmRub2RlIAorICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisgICAgKi8KKyAgICBmaW5hbCB2b2lkIGNhbm9uaWNhbGl6ZVN1YlRyZWUoTm9kZSBjdXJyZW50Tm9kZSwgTmFtZVNwYWNlU3ltYlRhYmxlIG5zLE5vZGUgZW5kbm9kZSwKKyAgICAJCWludCBkb2N1bWVudExldmVsKQorICAgIHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiB7CisgICAgCWlmIChpc1Zpc2libGVJbnQoY3VycmVudE5vZGUpPT0tMSkKKyAgICAJCXJldHVybjsKKyAgICAJTm9kZSBzaWJsaW5nPW51bGw7CisgICAgCU5vZGUgcGFyZW50Tm9kZT1udWxsOyAgICAJCisgICAgCWZpbmFsIE91dHB1dFN0cmVhbSB3cml0ZXI9dGhpcy5fd3JpdGVyOyAgICAKKyAgICAJZmluYWwgTm9kZSBleGNsdWRlTm9kZT10aGlzLl9leGNsdWRlTm9kZTsKKyAgICAJZmluYWwgYm9vbGVhbiBpbmNsdWRlQ29tbWVudHM9dGhpcy5faW5jbHVkZUNvbW1lbnRzOworICAgIAlNYXAgY2FjaGU9bmV3IEhhc2hNYXAoKTsKKyAgICAJZG8geworICAgIAkJc3dpdGNoIChjdXJyZW50Tm9kZS5nZXROb2RlVHlwZSgpKSB7CisgICAgCQkKKyAgICAJCWNhc2UgTm9kZS5ET0NVTUVOVF9UWVBFX05PREUgOgorICAgIAkJZGVmYXVsdCA6CisgICAgCQkJYnJlYWs7CisgICAgCQkKKyAgICAJCWNhc2UgTm9kZS5FTlRJVFlfTk9ERSA6CisgICAgCQljYXNlIE5vZGUuTk9UQVRJT05fTk9ERSA6CisgICAgCQljYXNlIE5vZGUuQVRUUklCVVRFX05PREUgOgorICAgIAkJCS8vIGlsbGVnYWwgbm9kZSB0eXBlIGR1cmluZyB0cmF2ZXJzYWwKKyAgICAJCQl0aHJvdyBuZXcgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbigiZW1wdHkiKTsKKworICAgICAgICAgICAgY2FzZSBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUgOgorICAgIAkJY2FzZSBOb2RlLkRPQ1VNRU5UX05PREUgOgorICAgIAkJCW5zLm91dHB1dE5vZGVQdXNoKCk7CisgICAgCQkJc2libGluZz0gY3VycmVudE5vZGUuZ2V0Rmlyc3RDaGlsZCgpOworICAgIAkJCWJyZWFrOworICAgIAkJCQorICAgIAkJY2FzZSBOb2RlLkNPTU1FTlRfTk9ERSA6CisgICAgCQkJaWYgKGluY2x1ZGVDb21tZW50cykgeworICAgIAkJCQlvdXRwdXRDb21tZW50VG9Xcml0ZXIoKENvbW1lbnQpIGN1cnJlbnROb2RlLCB3cml0ZXIsIGRvY3VtZW50TGV2ZWwpOworICAgIAkJCX0KKyAgICAJCQlicmVhazsKKyAgICAJCQkKKyAgICAJCWNhc2UgTm9kZS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUgOgorICAgIAkJCW91dHB1dFBJdG9Xcml0ZXIoKFByb2Nlc3NpbmdJbnN0cnVjdGlvbikgY3VycmVudE5vZGUsIHdyaXRlciwgZG9jdW1lbnRMZXZlbCk7CisgICAgCQkJYnJlYWs7CisgICAgCQkJCisgICAgCQljYXNlIE5vZGUuVEVYVF9OT0RFIDoKKyAgICAJCWNhc2UgTm9kZS5DREFUQV9TRUNUSU9OX05PREUgOgorICAgIAkJCW91dHB1dFRleHRUb1dyaXRlcihjdXJyZW50Tm9kZS5nZXROb2RlVmFsdWUoKSwgd3JpdGVyKTsKKyAgICAJCQlicmVhazsKKyAgICAJCQkKKyAgICAJCWNhc2UgTm9kZS5FTEVNRU5UX05PREUgOgorICAgIAkJCWRvY3VtZW50TGV2ZWw9Tk9ERV9OT1RfQkVGT1JFX09SX0FGVEVSX0RPQ1VNRU5UX0VMRU1FTlQ7CisgICAgCQkJaWYgKGN1cnJlbnROb2RlPT1leGNsdWRlTm9kZSkgeworICAgIAkJCQlicmVhazsKKyAgICAJCQl9ICAgICAgCisgICAgCQkJRWxlbWVudCBjdXJyZW50RWxlbWVudCA9IChFbGVtZW50KSBjdXJyZW50Tm9kZTsKKyAgICAJCQkvL0FkZCBhIGxldmVsIHRvIHRoZSBuc3N5bWJ0YWJsZS4gU28gbGF0dGVyIGNhbiBiZSBwb3AtYmFjay4KKyAgICAJCQlucy5vdXRwdXROb2RlUHVzaCgpOworICAgIAkJCXdyaXRlci53cml0ZSgnPCcpOworICAgIAkJCVN0cmluZyBuYW1lPWN1cnJlbnRFbGVtZW50LmdldFRhZ05hbWUoKTsKKyAgICAJCQlVdGZIZWxwcGVyLndyaXRlQnl0ZShuYW1lLHdyaXRlcixjYWNoZSk7CisgICAgCQkJCisgICAgCQkJSXRlcmF0b3IgYXR0cnMgPSB0aGlzLmhhbmRsZUF0dHJpYnV0ZXNTdWJ0cmVlKGN1cnJlbnRFbGVtZW50LG5zKTsKKyAgICAJCQlpZiAoYXR0cnMhPW51bGwpIHsKKyAgICAJCQkJLy93ZSBvdXRwdXQgYWxsIEF0dHJzIHdoaWNoIGFyZSBhdmFpbGFibGUKKyAgICAJCQkJd2hpbGUgKGF0dHJzLmhhc05leHQoKSkgeworICAgIAkJCQkJQXR0ciBhdHRyID0gKEF0dHIpIGF0dHJzLm5leHQoKTsKKyAgICAJCQkJCW91dHB1dEF0dHJUb1dyaXRlcihhdHRyLmdldE5vZGVOYW1lKCksYXR0ci5nZXROb2RlVmFsdWUoKSwgd3JpdGVyLGNhY2hlKTsKKyAgICAJCQkJfQorICAgIAkJCX0KKyAgICAJCQl3cml0ZXIud3JpdGUoJz4nKTsgICAgICAgIAorICAgIAkJCXNpYmxpbmc9IGN1cnJlbnROb2RlLmdldEZpcnN0Q2hpbGQoKTsgCisgICAgCQkJaWYgKHNpYmxpbmc9PW51bGwpIHsKKyAgICAJCQkJd3JpdGVyLndyaXRlKF9FTkRfVEFHKTsKKyAgICAJCQkJVXRmSGVscHBlci53cml0ZVN0cmluZ1RvVXRmOChuYW1lLHdyaXRlcik7ICAgICAgICAKKyAgICAgICAgCQkJd3JpdGVyLndyaXRlKCc+Jyk7CisgICAgICAgIAkJCS8vV2UgZmluZXNoZWQgd2l0aCB0aGlzIGxldmVsLCBwb3AgdG8gdGhlIHByZXZpb3VzIGRlZmluaXRpb25zLgorICAgICAgICAJCQlucy5vdXRwdXROb2RlUG9wKCk7CisJCQkJICAgIGlmIChwYXJlbnROb2RlICE9IG51bGwpIHsKKyAgICAgICAJCQkgICAgCQlzaWJsaW5nPSBjdXJyZW50Tm9kZS5nZXROZXh0U2libGluZygpOworCQkJCSAgICB9CisgICAgCQkJfSBlbHNlIHsKKyAgICAJCQkJcGFyZW50Tm9kZT1jdXJyZW50RWxlbWVudDsKKyAgICAJCQl9CisgICAgCQkJYnJlYWs7CisgICAgCQl9CisgICAgCQl3aGlsZSAoc2libGluZz09bnVsbCAgJiYgcGFyZW50Tm9kZSE9bnVsbCkgeyAgICAJCSAgICAgIAkJICAgICAgCQkJCisgICAgCQkJd3JpdGVyLndyaXRlKF9FTkRfVEFHKTsKKyAgICAJCQlVdGZIZWxwcGVyLndyaXRlQnl0ZSgoKEVsZW1lbnQpcGFyZW50Tm9kZSkuZ2V0VGFnTmFtZSgpLHdyaXRlcixjYWNoZSk7ICAgICAgICAKKyAgICAJCQl3cml0ZXIud3JpdGUoJz4nKTsKKyAgICAJCQkvL1dlIGZpbmVzaGVkIHdpdGggdGhpcyBsZXZlbCwgcG9wIHRvIHRoZSBwcmV2aW91cyBkZWZpbml0aW9ucy4KKyAgICAJCQlucy5vdXRwdXROb2RlUG9wKCk7CisgICAgCQkJaWYgKHBhcmVudE5vZGU9PWVuZG5vZGUpCisgICAgCQkJCXJldHVybjsKKyAgICAJCQlzaWJsaW5nPXBhcmVudE5vZGUuZ2V0TmV4dFNpYmxpbmcoKTsKKyAgICAJCQlwYXJlbnROb2RlPXBhcmVudE5vZGUuZ2V0UGFyZW50Tm9kZSgpOworICAgIAkJCWlmIChwYXJlbnROb2RlID09IG51bGwgfHwgTm9kZS5FTEVNRU5UX05PREUgIT0gcGFyZW50Tm9kZS5nZXROb2RlVHlwZSgpKSB7CisgICAgCQkJCWRvY3VtZW50TGV2ZWw9Tk9ERV9BRlRFUl9ET0NVTUVOVF9FTEVNRU5UOworICAgIAkJCQlwYXJlbnROb2RlPW51bGw7CisgICAgCQkJfSAgICAJCQkKKyAgICAJCX0gICAgICAKKyAgICAJCWlmIChzaWJsaW5nPT1udWxsKQorICAgIAkJCXJldHVybjsKKyAgICAJCWN1cnJlbnROb2RlPXNpYmxpbmc7ICAgICAgCisgICAgCQlzaWJsaW5nPWN1cnJlbnROb2RlLmdldE5leHRTaWJsaW5nKCk7ICAKKyAgICAJfSB3aGlsZSh0cnVlKTsKKyAgICB9CisKKworICAgICAKKyAgIHByaXZhdGUgIGJ5dGVbXSBlbmdpbmVDYW5vbmljYWxpemVYUGF0aE5vZGVTZXRJbnRlcm5hbChOb2RlIGRvYykKKyAgICAgICAgICAgdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24geyAgIAorICAgICAgCisgICAgICB0cnkgeyAKKyAgICAgICAgIHRoaXMuY2Fub25pY2FsaXplWFBhdGhOb2RlU2V0KGRvYyxkb2MpOworICAgICAgICAgdGhpcy5fd3JpdGVyLmNsb3NlKCk7CisgICAgICAgICBpZiAodGhpcy5fd3JpdGVyIGluc3RhbmNlb2YgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKSB7CisgICAgICAgICAgICBieXRlIFtdIHNvbD0oKEJ5dGVBcnJheU91dHB1dFN0cmVhbSl0aGlzLl93cml0ZXIpLnRvQnl0ZUFycmF5KCk7CisgICAgICAgICAgICBpZiAocmVzZXQpIHsKKyAgICAgICAgICAgIAkoKEJ5dGVBcnJheU91dHB1dFN0cmVhbSl0aGlzLl93cml0ZXIpLnJlc2V0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAJcmV0dXJuIHNvbDsKKyAgICAgICAgIH0gIGVsc2UgaWYgKHRoaXMuX3dyaXRlciBpbnN0YW5jZW9mIFVuc3luY0J5dGVBcnJheU91dHB1dFN0cmVhbSkgeworICAgICAgICAJIGJ5dGUgW11yZXN1bHQ9KChVbnN5bmNCeXRlQXJyYXlPdXRwdXRTdHJlYW0pdGhpcy5fd3JpdGVyKS50b0J5dGVBcnJheSgpOworICAgICAgICAgICAgIGlmIChyZXNldCkgeworICAgICAgICAgICAgICAgICAoKFVuc3luY0J5dGVBcnJheU91dHB1dFN0cmVhbSl0aGlzLl93cml0ZXIpLnJlc2V0KCk7ICAgICAgICAKKyAgICAgICAgICAgICB9CisgICAgICAgICAgCSByZXR1cm4gcmVzdWx0OworICAgICAgICAgfQorICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICB9IGNhdGNoIChVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICB0aHJvdyBuZXcgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgfSAKKyAgIH0KKworICAgLyoqCisgICAgKiBDYW5vaWNhbGl6ZXMgYWxsIHRoZSBub2RlcyBpbmNsdWRlZCBpbiB0aGUgY3VycmVudE5vZGUgYW5kIGNvbnRhaW5lZCBpbiB0aGUgCisJKiBfeHBhdGhOb2RlU2V0IGZpZWxkLgorICAgICoKKyAgICAqIEBwYXJhbSBjdXJyZW50Tm9kZQorCSogQHBhcmFtIGVuZG5vZGUKKyAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorICAgICovCisgICBmaW5hbCB2b2lkIGNhbm9uaWNhbGl6ZVhQYXRoTm9kZVNldChOb2RlIGN1cnJlbnROb2RlLE5vZGUgZW5kbm9kZSApCisgICAgICAgICAgIHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiB7CisgICAJaWYgKGlzVmlzaWJsZUludChjdXJyZW50Tm9kZSk9PS0xKQorCQlyZXR1cm47CisJYm9vbGVhbiBjdXJyZW50Tm9kZUlzVmlzaWJsZSA9IGZhbHNlOwkgIAorCU5hbWVTcGFjZVN5bWJUYWJsZSBucz1uZXcgIE5hbWVTcGFjZVN5bWJUYWJsZSgpOworCWlmIChjdXJyZW50Tm9kZSAhPSBudWxsICYmIE5vZGUuRUxFTUVOVF9OT0RFID09IGN1cnJlbnROb2RlLmdldE5vZGVUeXBlKCkpCisJCWdldFBhcmVudE5hbWVTcGFjZXMoKEVsZW1lbnQpY3VycmVudE5vZGUsbnMpOworICAJTm9kZSBzaWJsaW5nPW51bGw7CisJTm9kZSBwYXJlbnROb2RlPW51bGw7CQorCU91dHB1dFN0cmVhbSB3cml0ZXI9dGhpcy5fd3JpdGVyOworCWludCBkb2N1bWVudExldmVsPU5PREVfQkVGT1JFX0RPQ1VNRU5UX0VMRU1FTlQ7CisJTWFwIGNhY2hlPW5ldyBIYXNoTWFwKCk7CisJZG8geworCQlzd2l0Y2ggKGN1cnJlbnROb2RlLmdldE5vZGVUeXBlKCkpIHsKKwkJCisJCWNhc2UgTm9kZS5ET0NVTUVOVF9UWVBFX05PREUgOgorCQlkZWZhdWx0IDoKKwkJCWJyZWFrOworCQkKKwkJY2FzZSBOb2RlLkVOVElUWV9OT0RFIDoKKwkJY2FzZSBOb2RlLk5PVEFUSU9OX05PREUgOgorCQljYXNlIE5vZGUuQVRUUklCVVRFX05PREUgOgorCQkJLy8gaWxsZWdhbCBub2RlIHR5cGUgZHVyaW5nIHRyYXZlcnNhbAorCQkJdGhyb3cgbmV3IENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24oImVtcHR5Iik7CisKKyAgICAgICAgY2FzZSBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUgOgorCQljYXNlIE5vZGUuRE9DVU1FTlRfTk9ERSA6CisJCQlucy5vdXRwdXROb2RlUHVzaCgpOworCQkJLy9jdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLmdldEZpcnN0Q2hpbGQoKTsgIAorCQkJc2libGluZz0gY3VycmVudE5vZGUuZ2V0Rmlyc3RDaGlsZCgpOworCQkJYnJlYWs7CisJCQkKKwkJY2FzZSBOb2RlLkNPTU1FTlRfTk9ERSA6CQkJCisJCQlpZiAodGhpcy5faW5jbHVkZUNvbW1lbnRzICYmIChpc1Zpc2libGVETyhjdXJyZW50Tm9kZSxucy5nZXRMZXZlbCgpKT09MSkpIHsKKwkJCQlvdXRwdXRDb21tZW50VG9Xcml0ZXIoKENvbW1lbnQpIGN1cnJlbnROb2RlLCB3cml0ZXIsIGRvY3VtZW50TGV2ZWwpOworCQkJfQorCQkJYnJlYWs7CisJCQkKKwkJY2FzZSBOb2RlLlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSA6CisJCQlpZiAoaXNWaXNpYmxlKGN1cnJlbnROb2RlKSkKKwkJCQlvdXRwdXRQSXRvV3JpdGVyKChQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pIGN1cnJlbnROb2RlLCB3cml0ZXIsIGRvY3VtZW50TGV2ZWwpOworCQkJYnJlYWs7CisJCQkKKwkJY2FzZSBOb2RlLlRFWFRfTk9ERSA6CisJCWNhc2UgTm9kZS5DREFUQV9TRUNUSU9OX05PREUgOgorCQkJaWYgKGlzVmlzaWJsZShjdXJyZW50Tm9kZSkpIHsKKwkJCW91dHB1dFRleHRUb1dyaXRlcihjdXJyZW50Tm9kZS5nZXROb2RlVmFsdWUoKSwgd3JpdGVyKTsKKwkJCWZvciAoTm9kZSBuZXh0U2libGluZyA9IGN1cnJlbnROb2RlLmdldE5leHRTaWJsaW5nKCk7CisgICAgICAgICAgICAgICAgICAgIChuZXh0U2libGluZyAhPSBudWxsKQorICAgICAgICAgICAgICAgICAgICAmJiAoKG5leHRTaWJsaW5nLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5URVhUX05PREUpCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAobmV4dFNpYmxpbmcuZ2V0Tm9kZVR5cGUoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgID09IE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFKSk7CisgICAgICAgICAgICAgICAgICAgIG5leHRTaWJsaW5nID0gbmV4dFNpYmxpbmcuZ2V0TmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgICAgb3V0cHV0VGV4dFRvV3JpdGVyKG5leHRTaWJsaW5nLmdldE5vZGVWYWx1ZSgpLCB3cml0ZXIpOworICAgICAgICAgICAgICAgY3VycmVudE5vZGU9bmV4dFNpYmxpbmc7CisgICAgICAgICAgICAgICBzaWJsaW5nPWN1cnJlbnROb2RlLmdldE5leHRTaWJsaW5nKCk7CisgICAgICAgICAgICB9CisJCQkKKwkJCX0KKwkJCWJyZWFrOworCQkJCisJCWNhc2UgTm9kZS5FTEVNRU5UX05PREUgOgorCQkJZG9jdW1lbnRMZXZlbD1OT0RFX05PVF9CRUZPUkVfT1JfQUZURVJfRE9DVU1FTlRfRUxFTUVOVDsKKwkJCUVsZW1lbnQgY3VycmVudEVsZW1lbnQgPSAoRWxlbWVudCkgY3VycmVudE5vZGU7CisJCQkvL0FkZCBhIGxldmVsIHRvIHRoZSBuc3N5bWJ0YWJsZS4gU28gbGF0dGVyIGNhbiBiZSBwb3AtYmFjay4KKwkJCVN0cmluZyBuYW1lPW51bGw7CisJCQlpbnQgaT1pc1Zpc2libGVETyhjdXJyZW50Tm9kZSxucy5nZXRMZXZlbCgpKTsKKwkJCWlmIChpPT0tMSkgeworCQkJCXNpYmxpbmc9IGN1cnJlbnROb2RlLmdldE5leHRTaWJsaW5nKCk7CisJCQkJYnJlYWs7CisJCQl9CisJCQljdXJyZW50Tm9kZUlzVmlzaWJsZT0oaT09MSk7CisJCQlpZiAoY3VycmVudE5vZGVJc1Zpc2libGUpIHsKKwkJCQlucy5vdXRwdXROb2RlUHVzaCgpOworCQkJCXdyaXRlci53cml0ZSgnPCcpOworCQkJCW5hbWU9Y3VycmVudEVsZW1lbnQuZ2V0VGFnTmFtZSgpOworCQkJCVV0ZkhlbHBwZXIud3JpdGVCeXRlKG5hbWUsd3JpdGVyLGNhY2hlKTsKKwkJCX0gZWxzZSB7CisJCQkJbnMucHVzaCgpOworCQkJfQorCQkJCisJCQlJdGVyYXRvciBhdHRycyA9IGhhbmRsZUF0dHJpYnV0ZXMoY3VycmVudEVsZW1lbnQsbnMpOworCQkJaWYgKGF0dHJzIT1udWxsKSB7CisJCQkJLy93ZSBvdXRwdXQgYWxsIEF0dHJzIHdoaWNoIGFyZSBhdmFpbGFibGUKKwkJCQl3aGlsZSAoYXR0cnMuaGFzTmV4dCgpKSB7CisJCQkJCUF0dHIgYXR0ciA9IChBdHRyKSBhdHRycy5uZXh0KCk7CisJCQkJCW91dHB1dEF0dHJUb1dyaXRlcihhdHRyLmdldE5vZGVOYW1lKCksYXR0ci5nZXROb2RlVmFsdWUoKSwgd3JpdGVyLGNhY2hlKTsKKwkJCQl9CisJCQl9CisJCQlpZiAoY3VycmVudE5vZGVJc1Zpc2libGUpIHsKKwkJCQl3cml0ZXIud3JpdGUoJz4nKTsKKwkJCX0KKwkJCXNpYmxpbmc9IGN1cnJlbnROb2RlLmdldEZpcnN0Q2hpbGQoKTsgCisJCQorCQkJaWYgKHNpYmxpbmc9PW51bGwpIHsKKwkJCQlpZiAoY3VycmVudE5vZGVJc1Zpc2libGUpIHsKKwkJCQkJd3JpdGVyLndyaXRlKF9FTkRfVEFHKTsKKwkJCQkJVXRmSGVscHBlci53cml0ZUJ5dGUobmFtZSx3cml0ZXIsY2FjaGUpOyAgICAgICAgCisJCQkJCXdyaXRlci53cml0ZSgnPicpOworCQkJCQkvL1dlIGZpbmVzaGVkIHdpdGggdGhpcyBsZXZlbCwgcG9wIHRvIHRoZSBwcmV2aW91cyBkZWZpbml0aW9ucy4KKwkJCQkJbnMub3V0cHV0Tm9kZVBvcCgpOworCQkJCX0gZWxzZSB7CisJCQkJCW5zLnBvcCgpOworCQkJCX0JCQkJCisJCQkJaWYgKHBhcmVudE5vZGUgIT0gbnVsbCkgeworICAgIAkJCQkJc2libGluZz0gY3VycmVudE5vZGUuZ2V0TmV4dFNpYmxpbmcoKTsKKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCXBhcmVudE5vZGU9Y3VycmVudEVsZW1lbnQ7CisJCQl9CQkJCisJCQlicmVhazsKKwkJfQorCQl3aGlsZSAoc2libGluZz09bnVsbCAgJiYgcGFyZW50Tm9kZSE9bnVsbCkgeyAgICAKKwkJCWlmIChpc1Zpc2libGUocGFyZW50Tm9kZSkpIHsKKwkJCQl3cml0ZXIud3JpdGUoX0VORF9UQUcpOworCQkJCVV0ZkhlbHBwZXIud3JpdGVCeXRlKCgoRWxlbWVudClwYXJlbnROb2RlKS5nZXRUYWdOYW1lKCksd3JpdGVyLGNhY2hlKTsgICAgICAgIAorCQkJCXdyaXRlci53cml0ZSgnPicpOworCQkJCS8vV2UgZmluZXNoZWQgd2l0aCB0aGlzIGxldmVsLCBwb3AgdG8gdGhlIHByZXZpb3VzIGRlZmluaXRpb25zLgorCQkJCW5zLm91dHB1dE5vZGVQb3AoKTsKKwkJCX0gZWxzZSB7CisJCQkJbnMucG9wKCk7CisJCQl9CisJCQlpZiAocGFyZW50Tm9kZT09ZW5kbm9kZSkKKwkJCQlyZXR1cm47CisJCQlzaWJsaW5nPXBhcmVudE5vZGUuZ2V0TmV4dFNpYmxpbmcoKTsKKwkJCXBhcmVudE5vZGU9cGFyZW50Tm9kZS5nZXRQYXJlbnROb2RlKCk7ICAgCisJCQlpZiAocGFyZW50Tm9kZSA9PSBudWxsIHx8IE5vZGUuRUxFTUVOVF9OT0RFICE9IHBhcmVudE5vZGUuZ2V0Tm9kZVR5cGUoKSkgeworCQkJCXBhcmVudE5vZGU9bnVsbDsKKwkJCQlkb2N1bWVudExldmVsPU5PREVfQUZURVJfRE9DVU1FTlRfRUxFTUVOVDsKKwkJCX0gICAgCQkJCisJCX0gICAgICAKKwkJaWYgKHNpYmxpbmc9PW51bGwpCisJCQlyZXR1cm47CisJCWN1cnJlbnROb2RlPXNpYmxpbmc7ICAgICAgCisJCXNpYmxpbmc9Y3VycmVudE5vZGUuZ2V0TmV4dFNpYmxpbmcoKTsgIAorCX0gd2hpbGUodHJ1ZSk7CisgICB9CisgICBpbnQgaXNWaXNpYmxlRE8oTm9kZSBjdXJyZW50Tm9kZSxpbnQgbGV2ZWwpIHsKKwkgICBpZiAobm9kZUZpbHRlciE9bnVsbCkgeworCSAgIAkJSXRlcmF0b3IgaXQ9bm9kZUZpbHRlci5pdGVyYXRvcigpOworCSAgIAkJd2hpbGUgKGl0Lmhhc05leHQoKSkgeyAgIAkKKwkgICAJCQlpbnQgaT0oKE5vZGVGaWx0ZXIpaXQubmV4dCgpKS5pc05vZGVJbmNsdWRlRE8oY3VycmVudE5vZGUsbGV2ZWwpOworCSAgIAkJCWlmIChpIT0xKQorCSAgIAkJCQlyZXR1cm4gaTsKKwkgICAJCX0KKwkJICAgfQorCSAgIGlmICgodGhpcy5feHBhdGhOb2RlU2V0IT1udWxsKSAmJiAhdGhpcy5feHBhdGhOb2RlU2V0LmNvbnRhaW5zKGN1cnJlbnROb2RlKSkKKyAgCQkJcmV0dXJuIDA7CisJICAgcmV0dXJuIDE7CisgICB9CisgICBpbnQgaXNWaXNpYmxlSW50KE5vZGUgY3VycmVudE5vZGUpIHsKKwkgICBpZiAobm9kZUZpbHRlciE9bnVsbCkgeworICAgCQlJdGVyYXRvciBpdD1ub2RlRmlsdGVyLml0ZXJhdG9yKCk7CisgICAJCXdoaWxlIChpdC5oYXNOZXh0KCkpIHsgICAJCQkKKyAgIAkJCWludCBpPSgoTm9kZUZpbHRlcilpdC5uZXh0KCkpLmlzTm9kZUluY2x1ZGUoY3VycmVudE5vZGUpOworICAgCQkJaWYgKGkhPTEpCisgICAJCQkJcmV0dXJuIGk7CisgICAJCX0KKwkgICB9CisgICAJCWlmICgodGhpcy5feHBhdGhOb2RlU2V0IT1udWxsKSAmJiAhdGhpcy5feHBhdGhOb2RlU2V0LmNvbnRhaW5zKGN1cnJlbnROb2RlKSkKKyAgIAkJCXJldHVybiAwOworICAgCQlyZXR1cm4gMTsKKyAgIAl9CisgICAKKyAgIGJvb2xlYW4gaXNWaXNpYmxlKE5vZGUgY3VycmVudE5vZGUpIHsKKwkgICBpZiAobm9kZUZpbHRlciE9bnVsbCkgeworICAgCQlJdGVyYXRvciBpdD1ub2RlRmlsdGVyLml0ZXJhdG9yKCk7CisgICAJCXdoaWxlIChpdC5oYXNOZXh0KCkpIHsgICAJCQkKKyAgIAkJCWlmICgoKE5vZGVGaWx0ZXIpaXQubmV4dCgpKS5pc05vZGVJbmNsdWRlKGN1cnJlbnROb2RlKSE9MSkKKyAgIAkJCQlyZXR1cm4gZmFsc2U7CisgICAJCX0KKwkgICB9CisgICAJCWlmICgodGhpcy5feHBhdGhOb2RlU2V0IT1udWxsKSAmJiAhdGhpcy5feHBhdGhOb2RlU2V0LmNvbnRhaW5zKGN1cnJlbnROb2RlKSkKKyAgIAkJCXJldHVybiBmYWxzZTsKKyAgIAkJcmV0dXJuIHRydWU7CisgICAJfQorCisJdm9pZCBoYW5kbGVQYXJlbnQoRWxlbWVudCBlLE5hbWVTcGFjZVN5bWJUYWJsZSBucykgeworCSAgIGlmICghZS5oYXNBdHRyaWJ1dGVzKCkpIHsKKwkJCQlyZXR1cm47CisJCX0KKwkJTmFtZWROb2RlTWFwIGF0dHJzID0gZS5nZXRBdHRyaWJ1dGVzKCk7CisJCWludCBhdHRyc0xlbmd0aCA9IGF0dHJzLmdldExlbmd0aCgpOworCQlmb3IgKGludCBpID0gMDsgaSA8IGF0dHJzTGVuZ3RoOyBpKyspIHsKKwkJCUF0dHIgTiA9IChBdHRyKSBhdHRycy5pdGVtKGkpOworCQkJaWYgKENvbnN0YW50cy5OYW1lc3BhY2VTcGVjTlMhPU4uZ2V0TmFtZXNwYWNlVVJJKCkpIHsKKwkJCQkvL05vdCBhIG5hbWVzcGFjZSBkZWZpbml0aW9uLCBpZ25vcmUuCisJCQkJY29udGludWU7CisJCQl9CisKKwkJCVN0cmluZyBOTmFtZT1OLmdldExvY2FsTmFtZSgpOworCQkJU3RyaW5nIE5WYWx1ZT1OLmdldE5vZGVWYWx1ZSgpOworCQkJaWYgKFhNTC5lcXVhbHMoTk5hbWUpCisgICAgICAgICAgICAgICAmJiBDb25zdGFudHMuWE1MX0xBTkdfU1BBQ0VfU3BlY05TLmVxdWFscyhOVmFsdWUpKSB7CisJCQkJCWNvbnRpbnVlOworCQkJfSAgICAgICAgICAgIAorCQkJbnMuYWRkTWFwcGluZyhOTmFtZSxOVmFsdWUsTik7ICAgICAgICAgICAgIAorCQl9ICAgCQkJCisgICB9CisKKwkvKioKKwkgKiBBZGRzIHRvIG5zIHRoZSBkZWZpbml0b25zIGZyb20gdGhlIHBhcmVudCBlbGVtZW50cyBvZiBlbAorICAgCSAqIEBwYXJhbSBlbAorICAgCSAqIEBwYXJhbSBucworICAgCSAqLworICAgCWZpbmFsIHZvaWQgZ2V0UGFyZW50TmFtZVNwYWNlcyhFbGVtZW50IGVsLE5hbWVTcGFjZVN5bWJUYWJsZSBucykgIHsKKyAgIAkJTGlzdCBwYXJlbnRzPW5ldyBBcnJheUxpc3QoMTApOworICAgCQlOb2RlIG4xPWVsLmdldFBhcmVudE5vZGUoKTsKKyAgIAkJaWYgKG4xID09IG51bGwgfHwgTm9kZS5FTEVNRU5UX05PREUgIT0gbjEuZ2V0Tm9kZVR5cGUoKSkgeworICAgCQkJcmV0dXJuOworICAgCQl9CisgICAJCS8vT2J0YWluIGFsbCB0aGUgcGFyZW50cyBvZiB0aGUgZWxlbW50CisgICAJCUVsZW1lbnQgcGFyZW50PShFbGVtZW50KSBuMTsKKyAgIAkJd2hpbGUgKHBhcmVudCE9bnVsbCkgeworICAgCQkJcGFyZW50cy5hZGQocGFyZW50KTsKKyAgIAkJCU5vZGUgbj1wYXJlbnQuZ2V0UGFyZW50Tm9kZSgpOworICAgCQkJaWYgKG4gPT0gbnVsbCB8fCBOb2RlLkVMRU1FTlRfTk9ERSAhPSBuLmdldE5vZGVUeXBlKCkpIHsKKyAgIAkJCQlicmVhazsKKyAgIAkJCX0KKyAgIAkJCXBhcmVudD0oRWxlbWVudCluOworICAgCQl9CisgICAJCS8vVmlzaXQgdGhlbSBpbiByZXZlcnNlIG9yZGVyLgorICAgCQlMaXN0SXRlcmF0b3IgaXQ9cGFyZW50cy5saXN0SXRlcmF0b3IocGFyZW50cy5zaXplKCkpOworICAgCQl3aGlsZSAoaXQuaGFzUHJldmlvdXMoKSkgeworICAgCQkJRWxlbWVudCBlbGU9KEVsZW1lbnQpaXQucHJldmlvdXMoKTsKKyAgIAkJCWhhbmRsZVBhcmVudChlbGUsIG5zKTsKKyAgICAgIAl9CisgICAgICAgIEF0dHIgbnNwcmVmaXg7CisgICAgICAgIGlmICgoKG5zcHJlZml4PW5zLmdldE1hcHBpbmdXaXRob3V0UmVuZGVyZWQoInhtbG5zIikpIT1udWxsKSAKKyAgICAgICAgICAgICAgICAmJiAiIi5lcXVhbHMobnNwcmVmaXguZ2V0VmFsdWUoKSkpIHsKKyAgICAgICAgICAgICBucy5hZGRNYXBwaW5nQW5kUmVuZGVyKCJ4bWxucyIsIiIsbnVsbE5vZGUpOworICAgICAgICB9CisgICAJfQorICAgLyoqCisgICAgKiBPYnRhaW4gdGhlIGF0dHJpYnV0ZXMgdG8gb3V0cHV0IGZvciB0aGlzIG5vZGUgaW4gWFBhdGhOb2RlU2V0IGMxNG4uIAorICAgICoKKyAgICAqIEBwYXJhbSBFCisJKiBAcGFyYW0gbnMKKwkqIEByZXR1cm4gdGhlIGF0dHJpYnV0ZXMgbm9kZXMgdG8gb3V0cHV0LgorICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgKi8KKyAgIGFic3RyYWN0IEl0ZXJhdG9yIGhhbmRsZUF0dHJpYnV0ZXMoRWxlbWVudCBFLCBOYW1lU3BhY2VTeW1iVGFibGUgbnMgKQorICAgdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb247CisKKyAgIC8qKgorICAgICogT2J0YWluIHRoZSBhdHRyaWJ1dGVzIHRvIG91dHB1dCBmb3IgdGhpcyBub2RlIGluIGEgU3VidHJlZSBjMTRuLgorICAgICoKKyAgICAqIEBwYXJhbSBFCisJKiBAcGFyYW0gbnMKKwkqIEByZXR1cm4gdGhlIGF0dHJpYnV0ZXMgbm9kZXMgdG8gb3V0cHV0LgorICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgKi8KKyAgIGFic3RyYWN0IEl0ZXJhdG9yIGhhbmRsZUF0dHJpYnV0ZXNTdWJ0cmVlKEVsZW1lbnQgRSwgTmFtZVNwYWNlU3ltYlRhYmxlIG5zKQorICAgdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb247CisKKyAgIGFic3RyYWN0IHZvaWQgY2lyY3VtdmVudEJ1Z0lmTmVlZGVkKFhNTFNpZ25hdHVyZUlucHV0IGlucHV0KSB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiwgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiwgSU9FeGNlcHRpb24sIFNBWEV4Y2VwdGlvbjsKKyAgIAorICAgLyoqCisJICAgICogT3V0cHV0cyBhbiBBdHRyaWJ1dGUgdG8gdGhlIGludGVybmFsIFdyaXRlci4KKwkgICAgKgorCSAgICAqIFRoZSBzdHJpbmcgdmFsdWUgb2YgdGhlIG5vZGUgaXMgbW9kaWZpZWQgYnkgcmVwbGFjaW5nCisJICAgICogPFVMPgorCSAgICAqIDxMST5hbGwgYW1wZXJzYW5kcyAoJikgd2l0aCA8Q09ERT4mYW1wO2FtcDs8L0NPREU+PC9MST4KKwkgICAgKiA8TEk+YWxsIG9wZW4gYW5nbGUgYnJhY2tldHMgKDwpIHdpdGggPENPREU+JmFtcDtsdDs8L0NPREU+PC9MST4KKwkgICAgKiA8TEk+YWxsIHF1b3RhdGlvbiBtYXJrIGNoYXJhY3RlcnMgd2l0aCA8Q09ERT4mYW1wO3F1b3Q7PC9DT0RFPjwvTEk+CisJICAgICogPExJPmFuZCB0aGUgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIDxDT0RFPiN4OTwvQ09ERT4sICN4QSwgYW5kICN4RCwgd2l0aCBjaGFyYWN0ZXIKKwkgICAgKiByZWZlcmVuY2VzLiBUaGUgY2hhcmFjdGVyIHJlZmVyZW5jZXMgYXJlIHdyaXR0ZW4gaW4gdXBwZXJjYXNlCisJICAgICogaGV4YWRlY2ltYWwgd2l0aCBubyBsZWFkaW5nIHplcm9lcyAoZm9yIGV4YW1wbGUsIDxDT0RFPiN4RDwvQ09ERT4gaXMgcmVwcmVzZW50ZWQKKwkgICAgKiBieSB0aGUgY2hhcmFjdGVyIHJlZmVyZW5jZSA8Q09ERT4mYW1wOyN4RDs8L0NPREU+KTwvTEk+CisJICAgICogPC9VTD4KKwkgICAgKgorCSAgICAqIEBwYXJhbSBuYW1lCisJICAgICogQHBhcmFtIHZhbHVlCisJICAgICogQHBhcmFtIHdyaXRlciAKKwkgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisJICAgICovCisJICAgc3RhdGljIGZpbmFsIHZvaWQgb3V0cHV0QXR0clRvV3JpdGVyKGZpbmFsIFN0cmluZyBuYW1lLCBmaW5hbCBTdHJpbmcgdmFsdWUsIGZpbmFsIE91dHB1dFN0cmVhbSB3cml0ZXIsCisJCQkgICAJZmluYWwgTWFwIGNhY2hlKSB0aHJvd3MgSU9FeGNlcHRpb24geworCSAgICAgIHdyaXRlci53cml0ZSgnICcpOworCSAgICAgIFV0ZkhlbHBwZXIud3JpdGVCeXRlKG5hbWUsd3JpdGVyLGNhY2hlKTsKKwkgICAgICB3cml0ZXIud3JpdGUoZXF1YWxzU3RyKTsKKwkgICAgICBieXRlICBbXXRvV3JpdGU7CisJICAgICAgZmluYWwgaW50IGxlbmd0aCA9IHZhbHVlLmxlbmd0aCgpOworCSAgICAgIGludCBpPTA7CisJICAgICAgd2hpbGUgKGkgPCBsZW5ndGgpIHsgICAgICAgIAorCSAgICAgICAgIGNoYXIgYyA9IHZhbHVlLmNoYXJBdChpKyspOworCQorCSAgICAgICAgIHN3aXRjaCAoYykgeworCQorCSAgICAgICAgIGNhc2UgJyYnIDoKKwkgICAgICAgICAJdG9Xcml0ZT1fQU1QXzsKKwkgICAgICAgICAgICBicmVhazsKKwkKKwkgICAgICAgICBjYXNlICc8JyA6CisJICAgICAgICAgCXRvV3JpdGU9X0xUXzsKKwkgICAgICAgICAgICBicmVhazsKKwkKKwkgICAgICAgICBjYXNlICciJyA6CisJICAgICAgICAgCXRvV3JpdGU9X1FVT1RfOworCSAgICAgICAgICAgIGJyZWFrOworCQorCSAgICAgICAgIGNhc2UgMHgwOSA6ICAgIC8vICdcdCcKKwkgICAgICAgICAJdG9Xcml0ZT1fX1g5XzsKKwkgICAgICAgICAgICBicmVhazsKKwkKKwkgICAgICAgICBjYXNlIDB4MEEgOiAgICAvLyAnXG4nCisJICAgICAgICAgCXRvV3JpdGU9X19YQV87CisJICAgICAgICAgICAgYnJlYWs7CisJCisJICAgICAgICAgY2FzZSAweDBEIDogICAgLy8gJ1xyJworCSAgICAgICAgIAl0b1dyaXRlPV9fWERfOworCSAgICAgICAgICAgIGJyZWFrOworCQorCSAgICAgICAgIGRlZmF1bHQgOgorCSAgICAgICAgCWlmIChjIDwgMHg4MCApIHsKKwkgICAgICAgIAkJd3JpdGVyLndyaXRlKGMpOworCSAgICAgICAgCX0gZWxzZSB7CisJICAgICAgICAJCVV0ZkhlbHBwZXIud3JpdGVDaGFyVG9VdGY4KGMsd3JpdGVyKTsKKwkgICAgICAgIAl9OworCSAgICAgICAgICAgIGNvbnRpbnVlOworCSAgICAgICAgIH0KKwkgICAgICAgICB3cml0ZXIud3JpdGUodG9Xcml0ZSk7CisJICAgICAgfQorCQorCSAgICAgIHdyaXRlci53cml0ZSgnXCInKTsKKwkgICB9CisKKwkvKioKKwkgICAgKiBPdXRwdXRzIGEgUEkgdG8gdGhlIGludGVybmFsIFdyaXRlci4KKwkgICAgKgorCSAgICAqIEBwYXJhbSBjdXJyZW50UEkKKwkgICAgKiBAcGFyYW0gd3JpdGVyIHdoZXJlIHRvIHdyaXRlIHRoZSB0aGluZ3MKKwkgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisJICAgICovCisJICAgc3RhdGljIGZpbmFsIHZvaWQgb3V0cHV0UEl0b1dyaXRlcihQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gY3VycmVudFBJLCBPdXRwdXRTdHJlYW0gd3JpdGVyLGludCBwb3NpdGlvbikgdGhyb3dzIElPRXhjZXB0aW9uIHsgICAJICAKKwkKKwkgICAgICBpZiAocG9zaXRpb24gPT0gTk9ERV9BRlRFUl9ET0NVTUVOVF9FTEVNRU5UKSB7CisJICAgICAgICB3cml0ZXIud3JpdGUoJ1xuJyk7CisJICAgICAgfQorCSAgICAgIHdyaXRlci53cml0ZShfQkVHSU5fUEkpOworCQorCSAgICAgIGZpbmFsIFN0cmluZyB0YXJnZXQgPSBjdXJyZW50UEkuZ2V0VGFyZ2V0KCk7CisJICAgICAgaW50IGxlbmd0aCA9IHRhcmdldC5sZW5ndGgoKTsKKwkKKwkgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7ICAgICAgICAgCisJICAgICAgCSBjaGFyIGM9dGFyZ2V0LmNoYXJBdChpKTsKKwkgICAgICAgICBpZiAoYz09MHgwRCkgeworCSAgICAgICAgICAgIHdyaXRlci53cml0ZShfX1hEXyk7CisJICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgIAkgaWYgKGMgPCAweDgwKSAgeworCSAgICAgICAgIAkJd3JpdGVyLndyaXRlKGMpOworCSAgICAgICAgIAl9IGVsc2UgeworCSAgICAgICAgIAkJVXRmSGVscHBlci53cml0ZUNoYXJUb1V0ZjgoYyx3cml0ZXIpOworCSAgICAgICAgIAl9OyAgICAgICAgICAgCisJICAgICAgICAgfQorCSAgICAgIH0KKwkKKwkgICAgICBmaW5hbCBTdHJpbmcgZGF0YSA9IGN1cnJlbnRQSS5nZXREYXRhKCk7CisJICAgICAKKwkgICAgICBsZW5ndGggPSBkYXRhLmxlbmd0aCgpOworCQorCSAgICAgIGlmIChsZW5ndGggPiAwKSB7CisJICAgICAgICAgd3JpdGVyLndyaXRlKCcgJyk7CisJCisJICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeyAgICAgICAgICAgIAorCSAgICAgICAgIAljaGFyIGM9ZGF0YS5jaGFyQXQoaSk7CisJICAgICAgICAgICAgaWYgKGM9PTB4MEQpIHsKKwkgICAgICAgICAgICAgICB3cml0ZXIud3JpdGUoX19YRF8pOworCSAgICAgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgCVV0ZkhlbHBwZXIud3JpdGVDaGFyVG9VdGY4KGMsd3JpdGVyKTsgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICB9CisJICAgICAgICAgfQorCSAgICAgIH0KKwkKKwkgICAgICB3cml0ZXIud3JpdGUoX0VORF9QSSk7CisJICAgICAgaWYgKHBvc2l0aW9uID09IE5PREVfQkVGT1JFX0RPQ1VNRU5UX0VMRU1FTlQpIHsKKwkgICAgICAgIHdyaXRlci53cml0ZSgnXG4nKTsKKwkgICAgIH0KKwkgICB9CisKKwkgICAvKioKKwkgICAgKiBNZXRob2Qgb3V0cHV0Q29tbWVudFRvV3JpdGVyCisJICAgICoKKwkgICAgKiBAcGFyYW0gY3VycmVudENvbW1lbnQKKwkgICAgKiBAcGFyYW0gd3JpdGVyIHdyaXRlciB3aGVyZSB0byB3cml0ZSB0aGUgdGhpbmdzCisJICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorCSAgICAqLworCSAgIHN0YXRpYyBmaW5hbCB2b2lkIG91dHB1dENvbW1lbnRUb1dyaXRlcihDb21tZW50IGN1cnJlbnRDb21tZW50LCBPdXRwdXRTdHJlYW0gd3JpdGVyLGludCBwb3NpdGlvbikgdGhyb3dzIElPRXhjZXB0aW9uIHsgICAJICAKKwkgICAJICBpZiAocG9zaXRpb24gPT0gTk9ERV9BRlRFUl9ET0NVTUVOVF9FTEVNRU5UKSB7CisJICAgCQl3cml0ZXIud3JpdGUoJ1xuJyk7CisJICAgCSAgfQorCSAgICAgIHdyaXRlci53cml0ZShfQkVHSU5fQ09NTSk7CisJCisJICAgICAgZmluYWwgU3RyaW5nIGRhdGEgPSBjdXJyZW50Q29tbWVudC5nZXREYXRhKCk7CisJICAgICAgZmluYWwgaW50IGxlbmd0aCA9IGRhdGEubGVuZ3RoKCk7ICAgICAgCisJCisJICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeyAgICAgICAgIAorCSAgICAgICAgIGNoYXIgYz1kYXRhLmNoYXJBdChpKTsKKwkgICAgICAgICBpZiAoYz09MHgwRCkgeworCSAgICAgICAgICAgIHdyaXRlci53cml0ZShfX1hEXyk7CisJICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgIAkgaWYgKGMgPCAweDgwKSAgeworCSAgICAgICAgIAkJd3JpdGVyLndyaXRlKGMpOworCSAgICAgICAgIAl9IGVsc2UgeworCSAgICAgICAgIAkJVXRmSGVscHBlci53cml0ZUNoYXJUb1V0ZjgoYyx3cml0ZXIpOworCSAgICAgICAgIAl9OyAgICAgICAgICAgICAgIAorCSAgICAgICAgIH0gICAgICAKKwkgICAgICB9CisJCisJICAgICAgd3JpdGVyLndyaXRlKF9FTkRfQ09NTSk7CisJICAgICAgaWYgKHBvc2l0aW9uID09IE5PREVfQkVGT1JFX0RPQ1VNRU5UX0VMRU1FTlQpIHsKKwkJCXdyaXRlci53cml0ZSgnXG4nKTsKKwkJIH0KKwkgICB9CisKKwkgICAvKioKKwkgICAgKiBPdXRwdXRzIGEgVGV4dCBvZiBDREFUQSBzZWN0aW9uIHRvIHRoZSBpbnRlcm5hbCBXcml0ZXIuCisJICAgICoKKwkgICAgKiBAcGFyYW0gdGV4dAorCSAgICAqIEBwYXJhbSB3cml0ZXIgd3JpdGVyIHdoZXJlIHRvIHdyaXRlIHRoZSB0aGluZ3MKKwkgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisJICAgICovCisJICAgc3RhdGljIGZpbmFsIHZvaWQgb3V0cHV0VGV4dFRvV3JpdGVyKGZpbmFsIFN0cmluZyB0ZXh0LCBmaW5hbCBPdXRwdXRTdHJlYW0gd3JpdGVyKSB0aHJvd3MgSU9FeGNlcHRpb24geworCSAgICAgIGZpbmFsIGludCBsZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOworCSAgICAgIGJ5dGUgW110b1dyaXRlOworCSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKwkgICAgICAgICBjaGFyIGMgPSB0ZXh0LmNoYXJBdChpKTsKKwkKKwkgICAgICAgICBzd2l0Y2ggKGMpIHsKKwkKKwkgICAgICAgICBjYXNlICcmJyA6CisJICAgICAgICAgCXRvV3JpdGU9X0FNUF87CisJICAgICAgICAgICAgYnJlYWs7CisJCisJICAgICAgICAgY2FzZSAnPCcgOgorCSAgICAgICAgIAl0b1dyaXRlPV9MVF87CisJICAgICAgICAgICAgYnJlYWs7CisJCisJICAgICAgICAgY2FzZSAnPicgOgorCSAgICAgICAgIAl0b1dyaXRlPV9HVF87CisJICAgICAgICAgICAgYnJlYWs7CisJCisJICAgICAgICAgY2FzZSAweEQgOgorCSAgICAgICAgIAl0b1dyaXRlPV9fWERfOworCSAgICAgICAgICAgIGJyZWFrOworCQorCSAgICAgICAgIGRlZmF1bHQgOgorCSAgICAgICAgCSBpZiAoYyA8IDB4ODApIHsKKwkgICAgICAgIAkJIHdyaXRlci53cml0ZShjKTsKKwkgICAgICAgIAkgfSBlbHNlIHsKKwkgICAgICAgIAkJIFV0ZkhlbHBwZXIud3JpdGVDaGFyVG9VdGY4KGMsd3JpdGVyKTsKKwkgICAgICAgIAkgfTsKKwkgICAgICAgICAgICBjb250aW51ZTsKKwkgICAgICAgICB9CisJICAgICAgICAgd3JpdGVyLndyaXRlKHRvV3JpdGUpOworCSAgICAgIH0KKwkgICB9CisgICAgIAorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW1wbGVtZW50YXRpb25zL05hbWVTcGFjZVN5bWJUYWJsZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW1wbGVtZW50YXRpb25zL05hbWVTcGFjZVN5bWJUYWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxYTEzNjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbXBsZW1lbnRhdGlvbnMvTmFtZVNwYWNlU3ltYlRhYmxlLmphdmEKQEAgLTAsMCArMSw0MDggQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uaW1wbGVtZW50YXRpb25zOworCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKKworaW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKKworCisKKy8qKgorICogQSBzdGFjayBiYXNlZCBTeW1ibGUgVGFibGUuCisgKjxicj5Gb3Igc3BlZWQgcmVhc29ucyBhbGwgdGhlIHN5bWJvbHMgYXJlIGludHJvZHVjZWQgaW4gdGhlIHNhbWUgbWFwLAorICogYW5kIGF0IHRoZSBzYW1lIHRpbWUgaW4gYSBsaXN0IHNvIGl0IGNhbiBiZSByZW1vdmVkIHdoZW4gdGhlIGZyYW1lIGlzIHBvcCBiYWNrLgorICogQGF1dGhvciBSYXVsIEJlbml0bworICoqLworcHVibGljIGNsYXNzIE5hbWVTcGFjZVN5bWJUYWJsZSB7CisJCisJLyoqVGhlIG1hcCBiZXR3ZW4gcHJlZml4LT4gZW50cnkgdGFibGUuICovCisJU3ltYk1hcCBzeW1iOworCS8qKlRoZSBsZXZlbCBvZiBuYW1lU3BhY2VzIChmb3IgSW5jbHVzaXZlIHZpc2liaWxpdHkpLiovCisJaW50IG5hbWVTcGFjZXM9MDsKKwkvKipUaGUgc3RhY2tzIGZvciByZW1vdmluZyB0aGUgZGVmaW5pdGlvbnMgd2hlbiBkb2luZyBwb3AuKi8KKwlMaXN0IGxldmVsOworICAgIGJvb2xlYW4gY2xvbmVkPXRydWU7CQorCXN0YXRpYyBmaW5hbCBTdHJpbmcgWE1MTlM9InhtbG5zIjsKKwlmaW5hbCBzdGF0aWMgU3ltYk1hcCBpbml0aWFsTWFwPW5ldyBTeW1iTWFwKCk7CisJc3RhdGljIHsKKwkJTmFtZVNwYWNlU3ltYkVudHJ5IG5lPW5ldyBOYW1lU3BhY2VTeW1iRW50cnkoIiIsbnVsbCx0cnVlLFhNTE5TKTsKKwkJbmUubGFzdHJlbmRlcmVkPSIiOwkJCisJCWluaXRpYWxNYXAucHV0KFhNTE5TLG5lKTsKKwl9CisgICAgLyoqCisgICAgICogRGVmYXVsdCBjb25zdHJhY3RvcgorICAgICAqKi8JCQorICAgIHB1YmxpYyBOYW1lU3BhY2VTeW1iVGFibGUoKSB7ICAgIAkKKyAgICAJbGV2ZWwgPSBuZXcgQXJyYXlMaXN0KDEwKTsKKyAgICAJLy9JbnNlcnQgdGhlIGRlZmF1bHQgYmluZGluZyBmb3IgeG1sbnMuICAgIAkKKyAgICAJc3ltYj0oU3ltYk1hcCkgaW5pdGlhbE1hcC5jbG9uZSgpOworICAgIH0KKyAgICAKKyAgICAvKioKKwkgKiBHZXQgYWxsIHRoZSB1bnJlbmRlcmVkIG5vZGVzIGluIHRoZSBuYW1lIHNwYWNlLgorCSAqIEZvciBJbmNsdXNpdmUgcmVuZGVyaW5nCisgICAgICogQHBhcmFtIHJlc3VsdCB0aGUgbGlzdCB3aGVyZSB0byBmaWxsIHRoZSB1bnJlbmRlcmVkIHhtbG5zIGRlZmluaXRpb25zLgorCSAqKi8gICAgICAgCisJcHVibGljICB2b2lkIGdldFVucmVuZGVyZWROb2RlcyhDb2xsZWN0aW9uIHJlc3VsdCkgewkJCisJICAgLy9MaXN0IHJlc3VsdD1uZXcgQXJyYXlMaXN0KCk7CisJICAgSXRlcmF0b3IgaXQ9c3ltYi5lbnRyeVNldCgpLml0ZXJhdG9yKCk7CisJICAgd2hpbGUgKGl0Lmhhc05leHQoKSkgewkgICAJICAgCisJICAgCQlOYW1lU3BhY2VTeW1iRW50cnkgbj0oTmFtZVNwYWNlU3ltYkVudHJ5KShpdC5uZXh0KCkpOworCSAgIAkJLy9wdXQgdGhlbSByZW5kZXJlZD8KKwkgICAJCWlmICgoIW4ucmVuZGVyZWQpICYmIChuLm4hPW51bGwpKSB7CisJICAgCQkJbj0oTmFtZVNwYWNlU3ltYkVudHJ5KSBuLmNsb25lKCk7CisgICAgICAgICAgICAgICAgbmVlZHNDbG9uZSgpOworICAgICAgICAgICAgICAgIHN5bWIucHV0KG4ucHJlZml4LG4pOyAgICAgICAgIAorICAgICAgICAgICAgICAgIG4ubGFzdHJlbmRlcmVkPW4udXJpOworICAgICAgICAgICAgICAgIG4ucmVuZGVyZWQ9dHJ1ZTsKKyAgICAgICAgICAgICAgICAKKwkgICAJCQlyZXN1bHQuYWRkKG4ubik7CisJICAgCQkJCisJICAgCQl9CisJICAgfQkgICAKKwl9CisJCisJLyoqCisgICAgICogUHVzaCBhIGZyYW1lIGZvciB2aXNpYmxlIG5hbWVzcGFjZS4gCisgICAgICogRm9yIEluY2x1c2l2ZSByZW5kZXJpbmcuCisgICAgICoqLworCXB1YmxpYyB2b2lkIG91dHB1dE5vZGVQdXNoKCkgeworCQluYW1lU3BhY2VzKys7CisJCXB1c2goKTsKKwl9CisJCisJLyoqCisgICAgICogUG9wIGEgZnJhbWUgZm9yIHZpc2libGUgbmFtZXNwYWNlLgorICAgICAqKi8KKwlwdWJsaWMgdm9pZCBvdXRwdXROb2RlUG9wKCkgeworCQluYW1lU3BhY2VzLS07CisJCXBvcCgpOworCX0KKwkKKwkvKioKKyAgICAgKiBQdXNoIGEgZnJhbWUgZm9yIGEgbm9kZS4KKyAgICAgKiBJbmNsdXNpdmUgb3IgRXhjbHVzaXZlLgorICAgICAqKi8KKwlwdWJsaWMgdm9pZCBwdXNoKCkgewkJCisJCS8vUHV0IHRoZSBudW1iZXIgb2YgbmFtZXNwYWNlIGRlZmluaXRpb25zIGluIHRoZSBzdGFjay4KKyAgICAgICAgbGV2ZWwuYWRkKG51bGwpOworICAgICAgICBjbG9uZWQ9ZmFsc2U7CisJfQorCQorCS8qKgorICAgICAqIFBvcCBhIGZyYW1lLgorICAgICAqIEluY2x1c2l2ZSBvciBFeGNsdXNpdmUuCisgICAgICoqLworCXB1YmxpYyB2b2lkIHBvcCgpIHsKKyAgICAgICAgaW50IHNpemU9bGV2ZWwuc2l6ZSgpLTE7CisgICAgICAgIE9iamVjdCBvYj0gbGV2ZWwucmVtb3ZlKHNpemUpOworICAgICAgICBpZiAob2IhPW51bGwpIHsKKyAgICAgICAgCXN5bWI9KFN5bWJNYXApb2I7CisgICAgICAgICAgICBpZiAoc2l6ZT09MCkgeworICAgICAgICAgICAgICAgY2xvbmVkPWZhbHNlOyAgIAorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAJY2xvbmVkPShsZXZlbC5nZXQoc2l6ZS0xKSE9c3ltYik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgIAljbG9uZWQ9ZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIAorCX0KKwkKKwlmaW5hbCB2b2lkIG5lZWRzQ2xvbmUoKSB7CisJCWlmICghY2xvbmVkKSB7CQkJCisgICAgICAgICAgICBsZXZlbC5zZXQobGV2ZWwuc2l6ZSgpLTEsc3ltYik7CisJCQlzeW1iPShTeW1iTWFwKSBzeW1iLmNsb25lKCk7CisgICAgICAgICAgICBjbG9uZWQ9dHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKwkKKwkKKwkvKioKKwkgKiBHZXRzIHRoZSBhdHRyaWJ1dGUgbm9kZSB0aGF0IGRlZmluZXMgdGhlIGJpbmRpbmcgZm9yIHRoZSBwcmVmaXguICAgICAgCisgICAgICogQHBhcmFtIHByZWZpeCB0aGUgcHJlZml4IHRvIG9idGFpbiB0aGUgYXR0cmlidXRlLgorICAgICAqIEByZXR1cm4gbnVsbCBpZiB0aGVyZSBpcyBubyBuZWVkIHRvIHJlbmRlciB0aGUgcHJlZml4LiBPdGhlcndpc2UgdGhlIG5vZGUgb2YKKyAgICAgKiBkZWZpbml0aW9uLgorICAgICAqKi8KKwlwdWJsaWMgQXR0ciBnZXRNYXBwaW5nKFN0cmluZyBwcmVmaXgpIHsJCQkJCQorCQlOYW1lU3BhY2VTeW1iRW50cnkgZW50cnk9c3ltYi5nZXQocHJlZml4KTsKKwkJaWYgKGVudHJ5PT1udWxsKSB7CisJCQkvL1RoZXJlIGlzIG5vIGRlZmluaXRpb24gZm9yIHRoZSBwcmVmaXgoYSBidWc/KS4KKwkJCXJldHVybiBudWxsOworCQl9CisJCWlmIChlbnRyeS5yZW5kZXJlZCkgewkJCisJCQkvL05vIG5lZWQgdG8gcmVuZGVyIGFuIGVudHJ5IGFscmVhZHkgcmVuZGVyZWQuCisJCQlyZXR1cm4gbnVsbDsJCQorCQl9CisJCS8vIE1hcmsgdGhpcyBlbnRyeSBhcyByZW5kZXIuCisgICAgICAgIGVudHJ5PShOYW1lU3BhY2VTeW1iRW50cnkpIGVudHJ5LmNsb25lKCk7CisgICAgICAgIG5lZWRzQ2xvbmUoKTsKKyAgICAgICAgc3ltYi5wdXQocHJlZml4LGVudHJ5KTsKKwkJZW50cnkucmVuZGVyZWQ9dHJ1ZTsKKwkJZW50cnkubGV2ZWw9bmFtZVNwYWNlczsKKwkJZW50cnkubGFzdHJlbmRlcmVkPWVudHJ5LnVyaTsJCQkJCisJCS8vIFJldHVybiB0aGUgbm9kZSBmb3Igb3V0cHV0aW5nLgorCQlyZXR1cm4gZW50cnkubjsKKwl9CisJCisJLyoqCisgICAgICogR2V0cyBhIGRlZmluaXRpb24gd2l0aG91dCBtYXJrIGl0IGFzIHJlbmRlci4gCisgICAgICogRm9yIHJlbmRlciBpbiBleGNsdXNpdmUgYzE0biB0aGUgbmFtZXNwYWNlcyBpbiB0aGUgaW5jbHVkZSBwcmVmaXhlcy4KKyAgICAgKiBAcGFyYW0gcHJlZml4IFRoZSBwcmVmaXggd2hvc2UgZGVmaW5pdGlvbiBpcyBuZWFkZWQuCisgICAgICogQHJldHVybiB0aGUgYXR0ciB0byByZW5kZXIsIG51bGwgaWYgdGhlcmUgaXMgbm8gbmVlZCB0byByZW5kZXIKKyAgICAgKiovCisJcHVibGljIEF0dHIgZ2V0TWFwcGluZ1dpdGhvdXRSZW5kZXJlZChTdHJpbmcgcHJlZml4KSB7CQkJCQkKKwkJTmFtZVNwYWNlU3ltYkVudHJ5IGVudHJ5PSBzeW1iLmdldChwcmVmaXgpOworCQlpZiAoZW50cnk9PW51bGwpIHsJCSAgIAorCQkJcmV0dXJuIG51bGw7CisJCX0KKwkJaWYgKGVudHJ5LnJlbmRlcmVkKSB7CQkKKwkJCXJldHVybiBudWxsOwkJCisJCX0KKwkJcmV0dXJuIGVudHJ5Lm47CisJfQorCQorCS8qKgorICAgICAqIEFkZHMgdGhlIG1hcHBpbmcgZm9yIGEgcHJlZml4LgorICAgICAqIEBwYXJhbSBwcmVmaXggdGhlIHByZWZpeCBvZiBkZWZpbml0aW9uCisgICAgICogQHBhcmFtIHVyaSB0aGUgVXJpIG9mIHRoZSBkZWZpbml0aW9uCisgICAgICogQHBhcmFtIG4gdGhlIGF0dHJpYnV0ZSB0aGF0IGhhdmUgdGhlIGRlZmluaXRpb24KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgYWxyZWFkeSBkZWZpbmVkLgorICAgICAqKi8KKwlwdWJsaWMgYm9vbGVhbiBhZGRNYXBwaW5nKFN0cmluZyBwcmVmaXgsIFN0cmluZyB1cmksQXR0ciBuKSB7CQkJCQkJCisJCU5hbWVTcGFjZVN5bWJFbnRyeSBvYiA9IHN5bWIuZ2V0KHByZWZpeCk7CQkKKwkJaWYgKChvYiE9bnVsbCkgJiYgdXJpLmVxdWFscyhvYi51cmkpKSB7CisJCQkvL0lmIHdlIGhhdmUgaXQgcHJldmlvdXNseSBkZWZpbmVkLiBEb24ndCBrZWVwIHdvcmtpbmcuCisJCQlyZXR1cm4gZmFsc2U7CisJCX0JCQkKKwkJLy9DcmVhdGVzIGFuZCBlbnRyeSBpbiB0aGUgdGFibGUgZm9yIHRoaXMgbmV3IGRlZmluaXRpb24uCisJCU5hbWVTcGFjZVN5bWJFbnRyeSBuZT1uZXcgTmFtZVNwYWNlU3ltYkVudHJ5KHVyaSxuLGZhbHNlLHByZWZpeCk7CQkKKyAgICAgICAgbmVlZHNDbG9uZSgpOworCQlzeW1iLnB1dChwcmVmaXgsIG5lKTsKKwkJaWYgKG9iICE9IG51bGwpIHsKKwkJCS8vV2UgaGF2ZSBhIHByZXZpb3VzIGRlZmluaXRpb24gc3RvcmUgaXQgZm9yIHRoZSBwb3AuCQkJCisJCQkvL0NoZWNrIGlmIGEgcHJldmlvdXMgZGVmaW5pdGlvbihub3QgdGhlIGlubWlkaWF0bHkgb25lKSBoYXMgYmVlbiByZW5kZXJlZC4JCQkKKwkJCW5lLmxhc3RyZW5kZXJlZD1vYi5sYXN0cmVuZGVyZWQ7CQkJCisJCQlpZiAoKG9iLmxhc3RyZW5kZXJlZCE9bnVsbCkmJiAob2IubGFzdHJlbmRlcmVkLmVxdWFscyh1cmkpKSkgeworCQkJCS8vWWVzIGl0IGlzLiBNYXJrIGFzIHJlbmRlcmVkLgorCQkJCW5lLnJlbmRlcmVkPXRydWU7CisJCQl9CQkJCisJCX0gCQkJCisgICAgICAgIHJldHVybiB0cnVlOworCX0KKworICAgIC8qKgorICAgICAqIEFkZHMgYSBkZWZpbml0aW9uIGFuZCBtYXJrIGl0IGFzIHJlbmRlci4KKyAgICAgKiBGb3IgaW5jbHVzaXZlIGMxNG4uCisgICAgICogQHBhcmFtIHByZWZpeCB0aGUgcHJlZml4IG9mIGRlZmluaXRpb24KKyAgICAgKiBAcGFyYW0gdXJpIHRoZSBVcmkgb2YgdGhlIGRlZmluaXRpb24KKyAgICAgKiBAcGFyYW0gbiB0aGUgYXR0cmlidXRlIHRoYXQgaGF2ZSB0aGUgZGVmaW5pdGlvbgorICAgICAqIEByZXR1cm4gdGhlIGF0dHIgdG8gcmVuZGVyLCBudWxsIGlmIHRoZXJlIGlzIG5vIG5lZWQgdG8gcmVuZGVyCisgICAgICoqLworICAgIHB1YmxpYyBOb2RlIGFkZE1hcHBpbmdBbmRSZW5kZXIoU3RyaW5nIHByZWZpeCwgU3RyaW5nIHVyaSxBdHRyIG4pIHsgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgTmFtZVNwYWNlU3ltYkVudHJ5IG9iID0gc3ltYi5nZXQocHJlZml4KTsKKyAgICAgICAgCisgICAgICAgIGlmICgob2IhPW51bGwpICYmIHVyaS5lcXVhbHMob2IudXJpKSkgeworICAgICAgICAgICAgaWYgKCFvYi5yZW5kZXJlZCkgeyAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgb2I9KE5hbWVTcGFjZVN5bWJFbnRyeSkgb2IuY2xvbmUoKTsKKyAgICAgICAgICAgICAgICBuZWVkc0Nsb25lKCk7CisgICAgICAgICAgICAgICAgc3ltYi5wdXQocHJlZml4LG9iKTsgICAgICAgICAKKyAgICAgICAgICAgICAgICBvYi5sYXN0cmVuZGVyZWQ9dXJpOworICAgICAgICAgICAgICAgIG9iLnJlbmRlcmVkPXRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIG9iLm47CisgICAgICAgICAgICB9ICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9ICAgCisgICAgICAgIAorICAgICAgICBOYW1lU3BhY2VTeW1iRW50cnkgbmU9bmV3IE5hbWVTcGFjZVN5bWJFbnRyeSh1cmksbix0cnVlLHByZWZpeCk7CisgICAgICAgIG5lLmxhc3RyZW5kZXJlZD11cmk7CisgICAgICAgIG5lZWRzQ2xvbmUoKTsKKyAgICAgICAgc3ltYi5wdXQocHJlZml4LCBuZSk7CisgICAgICAgIGlmIChvYiAhPSBudWxsKSB7ICAgICAgICAgICAKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKChvYi5sYXN0cmVuZGVyZWQhPW51bGwpJiYgKG9iLmxhc3RyZW5kZXJlZC5lcXVhbHModXJpKSkpIHsKKyAgICAgICAgICAgICAgICBuZS5yZW5kZXJlZD10cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfQorICAgICAgICB9ICAgICAgIAorICAgICAgICByZXR1cm4gbmUubjsKKyAgICB9CisKKwlwdWJsaWMgaW50IGdldExldmVsKCkgeworCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCisJCXJldHVybiBsZXZlbC5zaXplKCk7CisJfQorCisJcHVibGljIHZvaWQgcmVtb3ZlTWFwcGluZyhTdHJpbmcgcHJlZml4KSB7CisJCU5hbWVTcGFjZVN5bWJFbnRyeSBvYiA9IHN5bWIuZ2V0KHByZWZpeCk7CisgICAgICAgIAorICAgICAgICBpZiAob2IhPW51bGwpIHsKKyAgICAgICAgICAgIG5lZWRzQ2xvbmUoKTsKKyAgICAgICAgICAgIHN5bWIucHV0KHByZWZpeCxudWxsKTsgICAgICAgICAKKyAgICAgICAgfQorCX0KKworCXB1YmxpYyB2b2lkIHJlbW92ZU1hcHBpbmdJZk5vdFJlbmRlcihTdHJpbmcgcHJlZml4KSB7CisJCU5hbWVTcGFjZVN5bWJFbnRyeSBvYiA9IHN5bWIuZ2V0KHByZWZpeCk7CisgICAgICAgIAorICAgICAgICBpZiAob2IhPW51bGwgJiYgIW9iLnJlbmRlcmVkKSB7CisgICAgICAgICAgICBuZWVkc0Nsb25lKCk7CisgICAgICAgICAgICBzeW1iLnB1dChwcmVmaXgsbnVsbCk7ICAgICAgICAgCisgICAgICAgIH0KKwl9CisKKwlwdWJsaWMgYm9vbGVhbiByZW1vdmVNYXBwaW5nSWZSZW5kZXIoU3RyaW5nIHByZWZpeCkgeworCQlOYW1lU3BhY2VTeW1iRW50cnkgb2IgPSBzeW1iLmdldChwcmVmaXgpOworICAgICAgICAKKyAgICAgICAgaWYgKG9iIT1udWxsICYmIG9iLnJlbmRlcmVkKSB7CisgICAgICAgICAgICBuZWVkc0Nsb25lKCk7CisgICAgICAgICAgICBzeW1iLnB1dChwcmVmaXgsbnVsbCk7ICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworCX0KK30KKworLyoqCisgKiBUaGUgaW50ZXJuYWwgc3RydWN0dXJlIG9mIE5hbWVTcGFjZVN5bWJUYWJsZS4KKyAqKi8KK2NsYXNzIE5hbWVTcGFjZVN5bWJFbnRyeSBpbXBsZW1lbnRzIENsb25lYWJsZSB7CisgICAgTmFtZVNwYWNlU3ltYkVudHJ5KFN0cmluZyBuYW1lLEF0dHIgbixib29sZWFuIHJlbmRlcmVkLFN0cmluZyBwcmVmaXgpIHsKKyAgICAgICAgdGhpcy51cmk9bmFtZTsgICAgICAgICAgCisgICAgICAgIHRoaXMucmVuZGVyZWQ9cmVuZGVyZWQ7CisgICAgICAgIHRoaXMubj1uOyAgICAgICAgICAgIAorICAgICAgICB0aGlzLnByZWZpeD1wcmVmaXg7CisgICAgfQorICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgIHB1YmxpYyBPYmplY3QgY2xvbmUoKSB7ICAgICAgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gc3VwZXIuY2xvbmUoKTsKKyAgICAgICAgfSBjYXRjaCAoQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICB9CisgICAgLyoqIHRoZSBsZXZlbCB3aGVyZSB0aGUgZGVmaW5pdGlvbiB3YXMgcmVuZGVyZWQoT25seSBmb3IgaW5jbHVzaXZlKSAqLworICAgIGludCBsZXZlbD0wOworICAgIFN0cmluZyBwcmVmaXg7CisgICAgLyoqVGhlIFVSSSB0aGF0IHRoZSBwcmVmaXggZGVmaW5lcyAqLworICAgIFN0cmluZyB1cmk7CisgICAgLyoqVGhlIGxhc3Qgb3V0cHV0IGluIHRoZSBVUkkgZm9yIHRoaXMgcHJlZml4IChUaGlzIGZvciBzcGVlZCByZWFzb24pLiovCisgICAgU3RyaW5nIGxhc3RyZW5kZXJlZD1udWxsOworICAgIC8qKlRoaXMgcHJlZml4LVVSSSBoYXMgYmVlbiBhbHJlYWR5IHJlbmRlciBvciBub3QuKi8KKyAgICBib29sZWFuIHJlbmRlcmVkPWZhbHNlOworICAgIC8qKlRoZSBhdHRyaWJ1dGUgdG8gaW5jbHVkZS4qLworICAgIEF0dHIgbjsgICAgICAgIAorfTsKKworY2xhc3MgU3ltYk1hcCBpbXBsZW1lbnRzIENsb25lYWJsZSB7CisgICAgaW50IGZyZWU9MjM7CisgICAgTmFtZVNwYWNlU3ltYkVudHJ5W10gZW50cmllczsKKyAgICBTdHJpbmdbXSBrZXlzOworCVN5bWJNYXAoKSB7CisJCWVudHJpZXM9bmV3IE5hbWVTcGFjZVN5bWJFbnRyeVtmcmVlXTsKKwkJa2V5cz1uZXcgU3RyaW5nW2ZyZWVdOworCX0KKyAgICB2b2lkIHB1dChTdHJpbmcga2V5LCBOYW1lU3BhY2VTeW1iRW50cnkgdmFsdWUpIHsJCQorICAgICAgICBpbnQgaW5kZXggPSBpbmRleChrZXkpOworICAgICAgICBPYmplY3Qgb2xkS2V5ID0ga2V5c1tpbmRleF07CisgICAgICAgIGtleXNbaW5kZXhdID0ga2V5OworICAgICAgICBlbnRyaWVzW2luZGV4XSA9IHZhbHVlOworICAgICAgICBpZiAob2xkS2V5PT1udWxsIHx8ICFvbGRLZXkuZXF1YWxzKGtleSkpIHsJICAgICAgICAJICAgICAgICAKKyAgICAgICAgICAgIGlmICgtLWZyZWUgPT0gMCkgeworICAgICAgICAgICAgCWZyZWU9ZW50cmllcy5sZW5ndGg7CisgICAgICAgICAgICAJaW50IG5ld0NhcGFjaXR5ID0gZnJlZTw8MjsJCQkJCisgICAgICAgICAgICAJcmVoYXNoKG5ld0NhcGFjaXR5KTsJCQkKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwkKKyAgICBMaXN0IGVudHJ5U2V0KCkgeworICAgIAlMaXN0IGE9bmV3IEFycmF5TGlzdCgpOworICAgIAlmb3IgKGludCBpPTA7aTxlbnRyaWVzLmxlbmd0aDtpKyspIHsKKyAgICAJCWlmICgoZW50cmllc1tpXSE9bnVsbCkgJiYgISgiIi5lcXVhbHMoZW50cmllc1tpXS51cmkpKSkgeworICAgIAkJCWEuYWRkKGVudHJpZXNbaV0pOworCSAgICB9CisgICAgCX0KKyAgICAJcmV0dXJuIGE7CQkKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgaW50IGluZGV4KE9iamVjdCBvYmopIHsJCQorICAgICAgICBPYmplY3RbXSBzZXQgPSBrZXlzOworICAgICAgICBpbnQgbGVuZ3RoID0gc2V0Lmxlbmd0aDsKKyAgICAgICAgLy9hYnMgb2YgaW5kZXgKKyAgICAgICAgaW50IGluZGV4ID0gKG9iai5oYXNoQ29kZSgpICYgMHg3ZmZmZmZmZikgJSAgbGVuZ3RoOworICAgICAgICBPYmplY3QgY3VyID0gc2V0W2luZGV4XTsKKworICAgICAgICBpZiAoY3VyID09IG51bGwgfHwgKGN1ci5lcXVhbHMoIG9iaikpKSB7CisgICAgICAgIAlyZXR1cm4gaW5kZXg7CisgICAgICAgIH0KKyAgICAgICAgbGVuZ3RoPWxlbmd0aC0xOworICAgICAgICBkbyB7CisgICAgICAgIAlpbmRleD1pbmRleD09bGVuZ3RoPyAwOisraW5kZXg7CisgICAgICAgIAljdXIgPSBzZXRbaW5kZXhdOworICAgICAgICB9IHdoaWxlIChjdXIgIT0gbnVsbCAmJiAoIWN1ci5lcXVhbHMob2JqKSkpOyAgICAgICAKKyAgICAgICAgcmV0dXJuIGluZGV4OworICAgIH0KKworICAgIC8qKgorICAgICAqIHJlaGFzaGVzIHRoZSBtYXAgdG8gdGhlIG5ldyBjYXBhY2l0eS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBuZXdDYXBhY2l0eSBhbiA8Y29kZT5pbnQ8L2NvZGU+IHZhbHVlCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgcmVoYXNoKGludCBuZXdDYXBhY2l0eSkgeworICAgICAgICBpbnQgb2xkQ2FwYWNpdHkgPSBrZXlzLmxlbmd0aDsKKyAgICAgICAgU3RyaW5nIG9sZEtleXNbXSA9IGtleXM7CisgICAgICAgIE5hbWVTcGFjZVN5bWJFbnRyeSBvbGRWYWxzW10gPSBlbnRyaWVzOworCisgICAgICAgIGtleXMgPSBuZXcgU3RyaW5nW25ld0NhcGFjaXR5XTsgICAgICAgIAorICAgICAgICBlbnRyaWVzID0gbmV3IE5hbWVTcGFjZVN5bWJFbnRyeVtuZXdDYXBhY2l0eV07CisKKyAgICAgICAgZm9yIChpbnQgaSA9IG9sZENhcGFjaXR5OyBpLS0gPiAwOykgeworICAgICAgICAgICAgaWYob2xkS2V5c1tpXSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIG8gPSBvbGRLZXlzW2ldOworICAgICAgICAgICAgICAgIGludCBpbmRleCA9IGluZGV4KG8pOworICAgICAgICAgICAgICAgIGtleXNbaW5kZXhdID0gbzsKKyAgICAgICAgICAgICAgICBlbnRyaWVzW2luZGV4XSA9IG9sZFZhbHNbaV07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBOYW1lU3BhY2VTeW1iRW50cnkgZ2V0KFN0cmluZyBrZXkpIHsKKyAgICAgICAgcmV0dXJuICBlbnRyaWVzW2luZGV4KGtleSldOworICAgIH0KKworICAgIHByb3RlY3RlZCBPYmplY3QgY2xvbmUoKSAgeworICAgIAl0cnkgeworICAgIAkJU3ltYk1hcCBjb3B5PShTeW1iTWFwKSBzdXBlci5jbG9uZSgpOworICAgIAkJY29weS5lbnRyaWVzPW5ldyBOYW1lU3BhY2VTeW1iRW50cnlbZW50cmllcy5sZW5ndGhdOworICAgIAkJU3lzdGVtLmFycmF5Y29weShlbnRyaWVzLDAsY29weS5lbnRyaWVzLDAsZW50cmllcy5sZW5ndGgpOworICAgIAkJY29weS5rZXlzPW5ldyBTdHJpbmdba2V5cy5sZW5ndGhdOworICAgIAkJU3lzdGVtLmFycmF5Y29weShrZXlzLDAsY29weS5rZXlzLDAsa2V5cy5sZW5ndGgpOworCQkJCisgICAgCQlyZXR1cm4gY29weTsKKwl9IGNhdGNoIChDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiBlKSB7CisJICAgIC8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgY2F0Y2ggYmxvY2sKKwkgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKwl9CisJcmV0dXJuIG51bGw7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW1wbGVtZW50YXRpb25zL1V0ZkhlbHBwZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2ltcGxlbWVudGF0aW9ucy9VdGZIZWxwcGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTYzZmZjNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2ltcGxlbWVudGF0aW9ucy9VdGZIZWxwcGVyLmphdmEKQEAgLTAsMCArMSwxNzEgQEAKKy8qDQorICogQ29weXJpZ2h0ICAyMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4NCisgKg0KKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5pbXBsZW1lbnRhdGlvbnM7DQorDQoraW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247DQoraW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOw0KK2ltcG9ydCBqYXZhLnV0aWwuTWFwOw0KKw0KK3B1YmxpYyBjbGFzcyBVdGZIZWxwcGVyIHsNCisNCisJZmluYWwgc3RhdGljIHZvaWQgd3JpdGVCeXRlKGZpbmFsIFN0cmluZyBzdHIsZmluYWwgT3V0cHV0U3RyZWFtIG91dCxNYXAgY2FjaGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7DQorCQkgICBieXRlIFtdcmVzdWx0PShieXRlW10pIGNhY2hlLmdldChzdHIpOwkgDQorCQkgICBpZiAocmVzdWx0PT1udWxsKSB7DQorCQkJICAgcmVzdWx0PWdldFN0cmluZ0luVXRmOChzdHIpOw0KKwkJCSAgIGNhY2hlLnB1dChzdHIscmVzdWx0KTsNCisJCSAgIH0NCisJCSAgIA0KKwkJICAgb3V0LndyaXRlKHJlc3VsdCk7DQorCQkgICANCisJICAgfQ0KKw0KKwlmaW5hbCBzdGF0aWMgdm9pZCB3cml0ZUNoYXJUb1V0ZjgoZmluYWwgY2hhciBjLGZpbmFsIE91dHB1dFN0cmVhbSBvdXQpIHRocm93cyBJT0V4Y2VwdGlvbnsgICAJDQorCSAgIAlpZiAoYyA8IDB4ODApIHsNCisJICAgICAgICBvdXQud3JpdGUoYyk7DQorCSAgICAgICAgcmV0dXJuOw0KKwkgICAgfQ0KKwkgICAJaWYgKChjID49IDB4RDgwMCAmJiBjIDw9IDB4REJGRikgfHwgKGMgPj0gMHhEQzAwICYmIGMgPD0gMHhERkZGKSApew0KKyAgICAgICAgCS8vTm8gU3Vycm9nYXRlcyBpbiBzdW4gamF2YQ0KKyAgICAgICAgCW91dC53cml0ZSgweDNmKTsNCisgICAgICAgIAlyZXR1cm47DQorICAgICAgICB9DQorCSAgICBpbnQgYmlhczsNCisJICAgIGludCB3cml0ZTsNCisJICAgIGNoYXIgY2g7DQorCSAgICBpZiAoYyA+IDB4MDdGRikgew0KKwkgICAgICAgIGNoPShjaGFyKShjPj4+MTIpOyAgICAgIA0KKwkgICAgICAgIHdyaXRlPTB4RTA7DQorCSAgICAgICAgaWYgKGNoPjApIHsNCisJICAgICAgICAgICAgd3JpdGUgfD0gKCBjaCAmIDB4MEYpOw0KKwkgICAgICAgIH0gDQorCSAgICAgICAgb3V0LndyaXRlKHdyaXRlKTsNCisJICAgICAgICB3cml0ZT0weDgwOw0KKwkgICAgICAgIGJpYXM9MHgzRjsgICAgICAgIA0KKwkgICAgfSBlbHNlIHsNCisJICAgIAl3cml0ZT0weEMwOw0KKwkgICAgCWJpYXM9MHgxRjsNCisJICAgIH0NCisJICAgIGNoPShjaGFyKShjPj4+Nik7DQorCSAgICBpZiAoY2g+MCkgew0KKwkgICAgICAgICB3cml0ZXw9IChjaCAmIGJpYXMpOw0KKwkgICAgfSANCisJICAgIG91dC53cml0ZSh3cml0ZSk7DQorCSAgICBvdXQud3JpdGUoMHg4MCB8ICgoYykgJiAweDNGKSk7ICAgIA0KKwkgICAJDQorCSAgIH0NCisNCisJZmluYWwgc3RhdGljIHZvaWQgd3JpdGVTdHJpbmdUb1V0ZjgoZmluYWwgU3RyaW5nIHN0cixmaW5hbCBPdXRwdXRTdHJlYW0gb3V0KSB0aHJvd3MgSU9FeGNlcHRpb257CSAgIA0KKwkgICAJZmluYWwgaW50IGxlbmd0aD1zdHIubGVuZ3RoKCk7DQorCSAgIAlpbnQgaT0wOw0KKwkgICAgY2hhciBjOyAgICANCisJICAgCXdoaWxlIChpPGxlbmd0aCkgew0KKwkgICAJCWM9c3RyLmNoYXJBdChpKyspOyAgICAgICAgDQorCSAgICAgICAgaWYgKGMgPCAweDgwKSAgew0KKwkgICAgICAgICAgICBvdXQud3JpdGUoYyk7DQorCSAgICAgICAgICAgIGNvbnRpbnVlOw0KKwkgICAgICAgIH0NCisJICAgICAgICBpZiAoKGMgPj0gMHhEODAwICYmIGMgPD0gMHhEQkZGKSB8fCAoYyA+PSAweERDMDAgJiYgYyA8PSAweERGRkYpICl7DQorCSAgICAgICAgCS8vTm8gU3Vycm9nYXRlcyBpbiBzdW4gamF2YQ0KKwkgICAgICAgIAlvdXQud3JpdGUoMHgzZik7DQorCSAgICAgICAgCWNvbnRpbnVlOw0KKwkgICAgICAgIH0NCisJICAgICAgICBjaGFyIGNoOw0KKwkgICAgICAgIGludCBiaWFzOw0KKwkgICAgICAgIGludCB3cml0ZTsNCisJICAgICAgICBpZiAoYyA+IDB4MDdGRikgew0KKwkgICAgICAgICAgICBjaD0oY2hhcikoYz4+PjEyKTsgICAgICANCisJICAgICAgICAgICAgd3JpdGU9MHhFMDsNCisJICAgICAgICAgICAgaWYgKGNoPjApIHsNCisJICAgICAgICAgICAgICAgIHdyaXRlIHw9ICggY2ggJiAweDBGKTsNCisJICAgICAgICAgICAgfSANCisJICAgICAgICAgICAgb3V0LndyaXRlKHdyaXRlKTsNCisJICAgICAgICAgICAgd3JpdGU9MHg4MDsNCisJICAgICAgICAgICAgYmlhcz0weDNGOyAgICAgICAgDQorCSAgICAgICAgfSBlbHNlIHsNCisJICAgICAgICAJd3JpdGU9MHhDMDsNCisJICAgICAgICAJYmlhcz0weDFGOw0KKwkgICAgICAgIH0NCisJICAgICAgICBjaD0oY2hhcikoYz4+PjYpOw0KKwkgICAgICAgIGlmIChjaD4wKSB7DQorCSAgICAgICAgICAgICB3cml0ZXw9IChjaCAmIGJpYXMpOw0KKwkgICAgICAgIH0gDQorCSAgICAgICAgb3V0LndyaXRlKHdyaXRlKTsNCisJICAgICAgICBvdXQud3JpdGUoMHg4MCB8ICgoYykgJiAweDNGKSk7ICAgICAgIA0KKwkgICAgICAgICAgIAkJDQorCSAgIAl9DQorCSAgICANCisJICAgfQ0KKwlwdWJsaWMgZmluYWwgc3RhdGljIGJ5dGVbXSBnZXRTdHJpbmdJblV0ZjgoZmluYWwgU3RyaW5nIHN0cikgew0KKwkJICAgZmluYWwgaW50IGxlbmd0aD1zdHIubGVuZ3RoKCk7DQorCQkgICBib29sZWFuIGV4cGFuZGVkPWZhbHNlOw0KKwkJICAgYnl0ZSBbXXJlc3VsdD1uZXcgYnl0ZVtsZW5ndGhdOw0KKwkJICAgCWludCBpPTA7DQorCQkgICAJaW50IG91dD0wOw0KKwkJICAgIGNoYXIgYzsgICAgDQorCQkgICAJd2hpbGUgKGk8bGVuZ3RoKSB7DQorCQkgICAJCWM9c3RyLmNoYXJBdChpKyspOyAgICAgICAgDQorCQkgICAgICAgIGlmICggYyA8IDB4ODAgKSB7DQorCQkgICAgICAgICAgICByZXN1bHRbb3V0KytdPShieXRlKWM7DQorCQkgICAgICAgICAgICBjb250aW51ZTsNCisJCSAgICAgICAgfQ0KKwkJICAgICAgICBpZiAoKGMgPj0gMHhEODAwICYmIGMgPD0gMHhEQkZGKSB8fCAoYyA+PSAweERDMDAgJiYgYyA8PSAweERGRkYpICl7ICAJDQorCQkgICAgICAgIAkgICAvL05vIFN1cnJvZ2F0ZXMgaW4gc3VuIGphdmENCisJCSAgICAgICAgCSAgIHJlc3VsdFtvdXQrK109MHgzZjsNCisJCSAgICAgICAgCQ0KKwkJICAgICAgICAJY29udGludWU7DQorCQkgICAgICAgIH0NCisJCSAgICAgICAgaWYgKCFleHBhbmRlZCkgew0KKwkJICAgICAgICAJYnl0ZSBuZXdSZXN1bHRbXT1uZXcgYnl0ZVszKmxlbmd0aF07DQorCQkJCSAgIAlTeXN0ZW0uYXJyYXljb3B5KHJlc3VsdCwgMCwgbmV3UmVzdWx0LCAwLCBvdXQpOwkJCQkgICAJICAgIAkNCisJCQkJICAgCXJlc3VsdD1uZXdSZXN1bHQ7DQorCQkJCSAgIAlleHBhbmRlZD10cnVlOw0KKwkJICAgICAgICB9IA0KKwkJICAgICAgICBjaGFyIGNoOw0KKwkJICAgICAgICBpbnQgYmlhczsNCisJCSAgICAgICAgYnl0ZSB3cml0ZTsNCisJCSAgICAgICAgaWYgKGMgPiAweDA3RkYpIHsNCisJCSAgICAgICAgICAgIGNoPShjaGFyKShjPj4+MTIpOyAgICAgIA0KKwkJICAgICAgICAgICAgd3JpdGU9KGJ5dGUpMHhFMDsNCisJCSAgICAgICAgICAgIGlmIChjaD4wKSB7DQorCQkgICAgICAgICAgICAgICAgd3JpdGUgfD0gKCBjaCAmIDB4MEYpOw0KKwkJICAgICAgICAgICAgfSANCisJCSAgICAgICAgICAgIHJlc3VsdFtvdXQrK109d3JpdGU7DQorCQkgICAgICAgICAgICB3cml0ZT0oYnl0ZSkweDgwOw0KKwkJICAgICAgICAgICAgYmlhcz0weDNGOyAgICAgICAgDQorCQkgICAgICAgIH0gZWxzZSB7DQorCQkgICAgICAgIAl3cml0ZT0oYnl0ZSkweEMwOw0KKwkJICAgICAgICAJYmlhcz0weDFGOw0KKwkJICAgICAgICB9DQorCQkgICAgICAgIGNoPShjaGFyKShjPj4+Nik7DQorCQkgICAgICAgIGlmIChjaD4wKSB7DQorCQkgICAgICAgICAgICAgd3JpdGV8PSAoY2ggJiBiaWFzKTsNCisJCSAgICAgICAgfSANCisJCSAgICAgICAgcmVzdWx0W291dCsrXT13cml0ZTsNCisJCSAgICAgICAgcmVzdWx0W291dCsrXT0oYnl0ZSkoMHg4MCB8ICgoYykgJiAweDNGKSk7LyoqLyAgICAgICANCisJCSAgICAgICAgICAJCQ0KKwkJICAgCX0NCisJCSAgIAlpZiAoZXhwYW5kZWQpIHsNCisJCSAgIAkJYnl0ZSBuZXdSZXN1bHRbXT1uZXcgYnl0ZVtvdXRdOw0KKwkJICAgCQlTeXN0ZW0uYXJyYXljb3B5KHJlc3VsdCwgMCwgbmV3UmVzdWx0LCAwLCBvdXQpOw0KKwkJICAgCQlyZXN1bHQ9bmV3UmVzdWx0Ow0KKwkJICAgCX0NCisJCSAgIAlyZXR1cm4gcmVzdWx0Ow0KKwkgICB9DQorDQorCQ0KKw0KK30NCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbXBsZW1lbnRhdGlvbnMvcGFja2FnZS5odG1sIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW1wbGVtZW50YXRpb25zL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDU2MjNkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW1wbGVtZW50YXRpb25zL3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDMgQEAKKzxIVE1MPiA8SEVBRD4gPC9IRUFEPiA8Qk9EWT4gPFA+CitjYW5vbmljYWxpemF0aW9uIGltcGxlbWVudGF0aW9ucy4KKzwvUD48L0JPRFk+IDwvSFRNTD4KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL3BhY2thZ2UuaHRtbCBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDFlYzZlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsMyBAQAorPEhUTUw+PEhFQUQ+PC9IRUFEPjxCT0RZPjxQPgorQ2Fub25pY2FsaXphdGlvbiByZWxhdGVkIG1hdGVyaWFsIGFuZCBhbGdvcml0aG1zLgorPC9QPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvZW5jcnlwdGlvbi9BZ3JlZW1lbnRNZXRob2QuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9lbmNyeXB0aW9uL0FncmVlbWVudE1ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4MDA1MjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvZW5jcnlwdGlvbi9BZ3JlZW1lbnRNZXRob2QuamF2YQpAQCAtMCwwICsxLDE1MyBAQAorLyoKKyAqIENvcHlyaWdodCAgMjAwMy0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZW5jcnlwdGlvbjsKKworCitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuS2V5SW5mbzsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworCisKKy8qKgorICogQSBLZXkgQWdyZWVtZW50IGFsZ29yaXRobSBwcm92aWRlcyBmb3IgdGhlIGRlcml2YXRpb24gb2YgYSBzaGFyZWQgc2VjcmV0IGtleQorICogYmFzZWQgb24gYSBzaGFyZWQgc2VjcmV0IGNvbXB1dGVkIGZyb20gY2VydGFpbiB0eXBlcyBvZiBjb21wYXRpYmxlIHB1YmxpYworICoga2V5cyBmcm9tIGJvdGggdGhlIHNlbmRlciBhbmQgdGhlIHJlY2lwaWVudC4gSW5mb3JtYXRpb24gZnJvbSB0aGUgb3JpZ2luYXRvcgorICogdG8gZGV0ZXJtaW5lIHRoZSBzZWNyZXQgaXMgaW5kaWNhdGVkIGJ5IGFuIG9wdGlvbmFsIE9yaWdpbmF0b3JLZXlJbmZvCisgKiBwYXJhbWV0ZXIgY2hpbGQgb2YgYW4gPGNvZGU+QWdyZWVtZW50TWV0aG9kPC9jb2RlPiBlbGVtZW50IHdoaWxlIHRoYXQKKyAqIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVjaXBpZW50IGlzIGluZGljYXRlZCBieSBhbiBvcHRpb25hbCBSZWNpcGllbnRLZXlJbmZvLiBBCisgKiBzaGFyZWQga2V5IGlzIGRlcml2ZWQgZnJvbSB0aGlzIHNoYXJlZCBzZWNyZXQgYnkgYSBtZXRob2QgZGV0ZXJtaW5lZCBieSB0aGUKKyAqIEtleSBBZ3JlZW1lbnQgYWxnb3JpdGhtLgorICogPHA+CisgKiA8Yj5Ob3RlOjwvYj4gWE1MIEVuY3J5cHRpb24gZG9lcyBub3QgcHJvdmlkZSBhbiBvbi1saW5lIGtleSBhZ3JlZW1lbnQKKyAqIG5lZ290aWF0aW9uIHByb3RvY29sLiBUaGUgPGNvZGU+QWdyZWVtZW50TWV0aG9kPC9jb2RlPiBlbGVtZW50IGNhbiBiZSB1c2VkIGJ5CisgKiB0aGUgb3JpZ2luYXRvciB0byBpZGVudGlmeSB0aGUga2V5cyBhbmQgY29tcHV0YXRpb25hbCBwcm9jZWR1cmUgdGhhdCB3ZXJlCisgKiB1c2VkIHRvIG9idGFpbiBhIHNoYXJlZCBlbmNyeXB0aW9uIGtleS4gVGhlIG1ldGhvZCB1c2VkIHRvIG9idGFpbiBvciBzZWxlY3QKKyAqIHRoZSBrZXlzIG9yIGFsZ29yaXRobSB1c2VkIGZvciB0aGUgYWdyZWVtZW50IGNvbXB1dGF0aW9uIGlzIGJleW9uZCB0aGUgc2NvcGUKKyAqIG9mIHRoaXMgc3BlY2lmaWNhdGlvbi4KKyAqIDxwPgorICogVGhlIDxjb2RlPkFncmVlbWVudE1ldGhvZDwvY29kZT4gZWxlbWVudCBhcHBlYXJzIGFzIHRoZSBjb250ZW50IG9mIGEKKyAqIDxjb2RlPmRzOktleUluZm88L2NvZGU+IHNpbmNlLCBsaWtlIG90aGVyIDxjb2RlPmRzOktleUluZm88L2NvZGU+IGNoaWxkcmVuLAorICogaXQgeWllbGRzIGEga2V5LiBUaGlzIDxjb2RlPmRzOktleUluZm88L2NvZGU+IGlzIGluIHR1cm4gYSBjaGlsZCBvZiBhbgorICogPGNvZGU+RW5jcnlwdGVkRGF0YTwvY29kZT4gb3IgPGNvZGU+RW5jcnlwdGVkS2V5PC9jb2RlPiBlbGVtZW50LiBUaGUKKyAqIEFsZ29yaXRobSBhdHRyaWJ1dGUgYW5kIEtleVNpemUgY2hpbGQgb2YgdGhlIDxjb2RlPkVuY3J5cHRpb25NZXRob2Q8L2NvZGU+CisgKiBlbGVtZW50IHVuZGVyIHRoaXMgPGNvZGU+RW5jcnlwdGVkRGF0YTwvY29kZT4gb3IgPGNvZGU+RW5jcnlwdGVkS2V5PC9jb2RlPgorICogZWxlbWVudCBhcmUgaW1wbGljaXQgcGFyYW1ldGVycyB0byB0aGUga2V5IGFncmVlbWVudCBjb21wdXRhdGlvbi4gSW4gY2FzZXMKKyAqIHdoZXJlIHRoaXMgPGNvZGU+RW5jcnlwdGlvbk1ldGhvZDwvY29kZT4gYWxnb3JpdGhtIDxjb2RlPlVSSTwvY29kZT4gaXMKKyAqIGluc3VmZmljaWVudCB0byBkZXRlcm1pbmUgdGhlIGtleSBsZW5ndGgsIGEgS2V5U2l6ZSBNVVNUIGhhdmUgYmVlbiBpbmNsdWRlZC4KKyAqIEluIGFkZGl0aW9uLCB0aGUgc2VuZGVyIG1heSBwbGFjZSBhIEtBLU5vbmNlIGVsZW1lbnQgdW5kZXIKKyAqIDxjb2RlPkFncmVlbWVudE1ldGhvZDwvY29kZT4gdG8gYXNzdXJlIHRoYXQgZGlmZmVyZW50IGtleWluZyBtYXRlcmlhbCBpcworICogZ2VuZXJhdGVkIGV2ZW4gZm9yIHJlcGVhdGVkIGFncmVlbWVudHMgdXNpbmcgdGhlIHNhbWUgc2VuZGVyIGFuZCByZWNpcGllbnQKKyAqIHB1YmxpYyBrZXlzLgorICogPHA+CisgKiBJZiB0aGUgYWdyZWVkIGtleSBpcyBiZWluZyB1c2VkIHRvIHdyYXAgYSBrZXksIHRoZW4KKyAqIDxjb2RlPkFncmVlbWVudE1ldGhvZDwvY29kZT4gd291bGQgYXBwZWFyIGluc2lkZSBhIDxjb2RlPmRzOktleUluZm88L2NvZGU+CisgKiBpbnNpZGUgYW4gPGNvZGU+RW5jcnlwdGVkS2V5PC9jb2RlPiBlbGVtZW50LgorICogPHA+CisgKiBUaGUgU2NoZW1hIGZvciBBZ3JlZW1lbnRNZXRob2QgaXMgYXMgZm9sbG93czoKKyAqIDx4bXA+CisgKiA8ZWxlbWVudCBuYW1lPSJBZ3JlZW1lbnRNZXRob2QiIHR5cGU9InhlbmM6QWdyZWVtZW50TWV0aG9kVHlwZSIvPgorICogPGNvbXBsZXhUeXBlIG5hbWU9IkFncmVlbWVudE1ldGhvZFR5cGUiIG1peGVkPSJ0cnVlIj4KKyAqICAgICA8c2VxdWVuY2U+CisgKiAgICAgICAgIDxlbGVtZW50IG5hbWU9IktBLU5vbmNlIiBtaW5PY2N1cnM9IjAiIHR5cGU9ImJhc2U2NEJpbmFyeSIvPgorICogICAgICAgICA8IS0tIDxlbGVtZW50IHJlZj0iZHM6RGlnZXN0TWV0aG9kIiBtaW5PY2N1cnM9IjAiLz4gLS0+CisgKiAgICAgICAgIDxhbnkgbmFtZXNwYWNlPSIjI290aGVyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CisgKiAgICAgICAgIDxlbGVtZW50IG5hbWU9Ik9yaWdpbmF0b3JLZXlJbmZvIiBtaW5PY2N1cnM9IjAiIHR5cGU9ImRzOktleUluZm9UeXBlIi8+CisgKiAgICAgICAgIDxlbGVtZW50IG5hbWU9IlJlY2lwaWVudEtleUluZm8iIG1pbk9jY3Vycz0iMCIgdHlwZT0iZHM6S2V5SW5mb1R5cGUiLz4KKyAqICAgICA8L3NlcXVlbmNlPgorICogICAgIDxhdHRyaWJ1dGUgbmFtZT0iQWxnb3JpdGhtIiB0eXBlPSJhbnlVUkkiIHVzZT0icmVxdWlyZWQiLz4KKyAqIDwvY29tcGxleFR5cGU+CisgKiA8L3htcD4KKyAqCisgKiBAYXV0aG9yIEF4bCBNYXR0aGV1cworICovCitwdWJsaWMgaW50ZXJmYWNlIEFncmVlbWVudE1ldGhvZCB7CisgICAgLyoqCisgICAgICogUmV0dXJucyBhbiA8Y29kZT5ieXRlPC9jb2RlPiBhcnJheS4KKyAgICAgKiBAcmV0dXJuCisgICAgICovCisgICAgYnl0ZVtdIGdldEtBTm9uY2UoKTsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIEtBTm9uY2UuamoKKyAgICAgKiBAcGFyYW0ga2Fub25jZQorICAgICAqLworICAgIHZvaWQgc2V0S0FOb25jZShieXRlW10ga2Fub25jZSk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGFkaXRpb25hbCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIDxjb2RlPkFncmVlbWVudE1ldGhvZDwvY29kZT4uCisgICAgICogQHJldHVybgorICAgICAqLworICAgIEl0ZXJhdG9yIGdldEFncmVlbWVudE1ldGhvZEluZm9ybWF0aW9uKCk7CisKKyAgICAvKioKKyAgICAgKiBBZGRzIGFkZGl0aW9uYWwgPGNvZGU+QWdyZWVtZW50TWV0aG9kPC9jb2RlPiBpbmZvcm1hdGlvbi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBpbmZvIGEgPGNvZGU+RWxlbWVudDwvY29kZT4gdGhhdCByZXByZXNlbnRzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgICAgKiBzcGVjaWZpZWQgYnkKKyAgICAgKiAgIDx4bXA+CisgICAgICogICAgIDxhbnkgbmFtZXNwYWNlPSIjI290aGVyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CisgICAgICogICA8L3htcD4KKyAgICAgKi8KKyAgICB2b2lkIGFkZEFncmVlbWVudE1ldGhvZEluZm9ybWF0aW9uKEVsZW1lbnQgaW5mbyk7CisKKyAgICAvKioKKyAgICAgKiBSZW1vdmVzIGFkZGl0aW9uYWwgPGNvZGU+QWdyZWVtZW50TWV0aG9kPC9jb2RlPiBpbmZvcm1hdGlvbi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBpbmZvIGEgPGNvZGU+RWxlbWVudDwvY29kZT4gdGhhdCByZXByZXNlbnRzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgICAgKiBzcGVjaWZpZWQgYnkKKyAgICAgKiAgIDx4bXA+CisgICAgICogICAgIDxhbnkgbmFtZXNwYWNlPSIjI290aGVyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CisgICAgICogICA8L3htcD4KKyAgICAgKi8KKyAgICB2b2lkIHJldm92ZUFncmVlbWVudE1ldGhvZEluZm9ybWF0aW9uKEVsZW1lbnQgaW5mbyk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGluZm9ybWF0aW9uIHJlbGF0aW5nIHRvIHRoZSBvcmlnaW5hdG9yJ3Mgc2hhcmVkIHNlY3JldC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gaW5mb3JtYXRpb24gcmVsYXRpbmcgdG8gdGhlIG9yaWdpbmF0b3IncyBzaGFyZWQgc2VjcmV0LgorICAgICAqLworICAgIEtleUluZm8gZ2V0T3JpZ2luYXRvcktleUluZm8oKTsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGluZm9ybWF0aW9uIHJlbGF0aW5nIHRvIHRoZSBvcmlnaW5hdG9yJ3Mgc2hhcmVkIHNlY3JldC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBrZXlJbmZvIGluZm9ybWF0aW9uIHJlbGF0aW5nIHRvIHRoZSBvcmlnaW5hdG9yJ3Mgc2hhcmVkIHNlY3JldC4KKyAgICAgKi8KKyAgICB2b2lkIHNldE9yaWdpbmF0b3JLZXlJbmZvKEtleUluZm8ga2V5SW5mbyk7CisKKyAgICAvKioKKyAgICAgKiBSZXRydW5zIGluZm9ybWF0aW9uIHJlbGF0aW5nIHRvIHRoZSByZWNpcGllbnQncyBzaGFyZWQgc2VjcmV0LgorICAgICAqCisgICAgICogQHJldHVybiBpbmZvcm1hdGlvbiByZWxhdGluZyB0byB0aGUgcmVjaXBpZW50J3Mgc2hhcmVkIHNlY3JldC4KKyAgICAgKi8KKyAgICBLZXlJbmZvIGdldFJlY2lwaWVudEtleUluZm8oKTsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGluZm9ybWF0aW9uIHJlbGF0aW5nIHRvIHRoZSByZWNpcGllbnQncyBzaGFyZWQgc2VjcmV0LgorICAgICAqCisgICAgICogQHBhcmFtIGtleUluZm8gaW5mb3JtYXRpb24gcmVsYXRpbmcgdG8gdGhlIHJlY2lwaWVudCdzIHNoYXJlZCBzZWNyZXQuCisgICAgICovCisgICAgdm9pZCBzZXRSZWNpcGllbnRLZXlJbmZvKEtleUluZm8ga2V5SW5mbyk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBhbGdvcml0aG0gVVJJIG9mIHRoaXMgPGNvZGU+Q3J5cHRvZ3JhcGhpY01ldGhvZDwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBhbGdvcml0aG0gVVJJIG9mIHRoaXMgPGNvZGU+Q3J5cHRvZ3JhcGhpY01ldGhvZDwvY29kZT4KKyAgICAgKi8KKyAgICBTdHJpbmcgZ2V0QWxnb3JpdGhtKCk7Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9lbmNyeXB0aW9uL0NpcGhlckRhdGEuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9lbmNyeXB0aW9uL0NpcGhlckRhdGEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzNkZWViCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2VuY3J5cHRpb24vQ2lwaGVyRGF0YS5qYXZhCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDIwMDMtMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmVuY3J5cHRpb247CisKKworLyoqCisgKiA8Y29kZT5DaXBoZXJEYXRhPC9jb2RlPiBwcm92aWRlcyBlbmNyeXB0ZWQgZGF0YS4gSXQgbXVzdCBlaXRoZXIgY29udGFpbiB0aGUKKyAqIGVuY3J5cHRlZCBvY3RldCBzZXF1ZW5jZSBhcyBiYXNlNjQgZW5jb2RlZCB0ZXh0IG9mIHRoZQorICogPGNvZGU+Q2lwaGVyVmFsdWU8L2NvZGU+IGVsZW1lbnQsIG9yIHByb3ZpZGUgYSByZWZlcmVuY2UgdG8gYW4gZXh0ZXJuYWwKKyAqIGxvY2F0aW9uIGNvbnRhaW5pbmcgdGhlIGVuY3J5cHRlZCBvY3RldCBzZXF1ZW5jZSB2aWEgdGhlCisgKiA8Y29kZT5DaXBoZXJSZWZlcmVuY2U8L2NvZGU+IGVsZW1lbnQuCisgKiA8cD4KKyAqIFRoZSBzY2hlbWEgZGVmaW5pdGlvbiBpcyBhcyBmb2xsb3dzOgorICogPHhtcD4KKyAqIDxlbGVtZW50IG5hbWU9J0NpcGhlckRhdGEnIHR5cGU9J3hlbmM6Q2lwaGVyRGF0YVR5cGUnLz4KKyAqIDxjb21wbGV4VHlwZSBuYW1lPSdDaXBoZXJEYXRhVHlwZSc+CisgKiAgICAgPGNob2ljZT4KKyAqICAgICAgICAgPGVsZW1lbnQgbmFtZT0nQ2lwaGVyVmFsdWUnIHR5cGU9J2Jhc2U2NEJpbmFyeScvPgorICogICAgICAgICA8ZWxlbWVudCByZWY9J3hlbmM6Q2lwaGVyUmVmZXJlbmNlJy8+CisgKiAgICAgPC9jaG9pY2U+CisgKiA8L2NvbXBsZXhUeXBlPgorICogPC94bXA+CisgKgorICogQGF1dGhvciBBeGwgTWF0dGhldXMKKyAqLworcHVibGljIGludGVyZmFjZSBDaXBoZXJEYXRhIHsKKyAgICAvKiogVkFMVUVfVFlQRSBBU04gKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBWQUxVRV9UWVBFID0gMHgwMDAwMDAwMTsKKyAgICAvKiogUkVGRVJFTkNFX1RZUEUgQVNOICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUkVGRVJFTkNFX1RZUEUgPSAweDAwMDAwMDAyOworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgdHlwZSBvZiBlbmNyeXB0ZWQgZGF0YSBjb250YWluZWQgaW4gdGhlCisgICAgICogPGNvZGU+Q2lwaGVyRGF0YTwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIDxjb2RlPlZBTFVFX1RZUEU8L2NvZGU+IGlmIHRoZSBlbmNyeXB0ZWQgZGF0YSBpcyBjb250YWluZWQgYXMKKyAgICAgKiAgIDxjb2RlPkNpcGhlclZhbHVlPC9jb2RlPiBvciA8Y29kZT5SRUZFUkVOQ0VfVFlQRTwvY29kZT4gaWYgdGhlCisgICAgICogICBlbmNyeXB0ZWQgZGF0YSBpcyBjb250YWluZWQgYXMgPGNvZGU+Q2lwaGVyUmVmZXJlbmNlPC9jb2RlPi4KKyAgICAgKi8KKyAgICBpbnQgZ2V0RGF0YVR5cGUoKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGNpcGhlciB2YWx1ZSBhcyBhIGJhc2U2NCBlbmNvZGVkIDxjb2RlPmJ5dGU8L2NvZGU+IGFycmF5LgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgPGNvZGU+Q2lwaGVyRGF0YTwvY29kZT4ncyB2YWx1ZS4KKyAgICAgKi8KKyAgICBDaXBoZXJWYWx1ZSBnZXRDaXBoZXJWYWx1ZSgpOworCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgPGNvZGU+Q2lwaGVyRGF0YTwvY29kZT4ncyB2YWx1ZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgb2YgdGhlIDxjb2RlPkNpcGhlckRhdGE8L2NvZGU+LgorICAgICAqIEB0aHJvd3MgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIHZvaWQgc2V0Q2lwaGVyVmFsdWUoQ2lwaGVyVmFsdWUgdmFsdWUpIHRocm93cyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uOworCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIHJlZmVyZW5jZSB0byBhbiBleHRlcm5hbCBsb2NhdGlvbiBjb250YWluaW5nIHRoZSBlbmNyeXB0ZWQKKyAgICAgKiBvY3RldCBzZXF1ZW5jZSAoPGNvZGU+Ynl0ZTwvY29kZT4gYXJyYXkpLgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgcmVmZXJlbmNlIHRvIGFuIGV4dGVybmFsIGxvY2F0aW9uIGNvbnRhaW5pbmcgdGhlIGVuY3RyeXB0ZWQKKyAgICAgKiAgIG9jdGV0IHNlcXVlbmNlLgorICAgICAqLworICAgIENpcGhlclJlZmVyZW5jZSBnZXRDaXBoZXJSZWZlcmVuY2UoKTsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIDxjb2RlPkNpcGhlckRhdGE8L2NvZGU+J3MgcmVmZXJlbmNlLgorICAgICAqCisgICAgICogQHBhcmFtIHJlZmVyZW5jZSBhbiBleHRlcm5hbCBsb2NhdGlvbiBjb250YWluaW5nIHRoZSBlbmN0cnlwdGVkIG9jdGV0CisgICAgICogICBzZXF1ZW5jZS4KKyAgICAgKiBAdGhyb3dzIFhNTEVuY3J5cHRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICB2b2lkIHNldENpcGhlclJlZmVyZW5jZShDaXBoZXJSZWZlcmVuY2UgcmVmZXJlbmNlKSB0aHJvd3MKKyAgICAgICAgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbjsKK30KKwpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2VuY3J5cHRpb24vQ2lwaGVyUmVmZXJlbmNlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvZW5jcnlwdGlvbi9DaXBoZXJSZWZlcmVuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODU5ZjQwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2VuY3J5cHRpb24vQ2lwaGVyUmVmZXJlbmNlLmphdmEKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAgMjAwMy0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZW5jcnlwdGlvbjsKKworaW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7CisKKworLyoqCisgKiA8Y29kZT5DaXBoZXJSZWZlcmVuY2U8L2NvZGU+IGlkZW50aWZpZXMgYSBzb3VyY2Ugd2hpY2gsIHdoZW4gcHJvY2Vzc2VkLAorICogeWllbGRzIHRoZSBlbmNyeXB0ZWQgb2N0ZXQgc2VxdWVuY2UuCisgKiA8cD4KKyAqIFRoZSBhY3R1YWwgdmFsdWUgaXMgb2J0YWluZWQgYXMgZm9sbG93cy4gVGhlIDxjb2RlPkNpcGhlclJlZmVyZW5jZSBVUkk8L2NvZGU+CisgKiBjb250YWlucyBhbiBpZGVudGlmaWVyIHRoYXQgaXMgZGVyZWZlcmVuY2VkLiBTaG91bGQgdGhlCisgKiA8Y29kZT5DaXBoZXJSZWZlcmVuY2U8L2NvZGU+IGVsZW1lbnQgY29udGFpbiBhbiBPUFRJT05BTCBzZXF1ZW5jZSBvZgorICogVHJhbnNmb3JtcywgdGhlIGRhdGEgcmVzdWx0aW5nIGZyb20gZGVyZWZlcmVuY2luZyB0aGUgPGNvZGU+VVJJPC9jb2RlPiBpcworICogdHJhbnNmb3JtZWQgYXMgc3BlY2lmaWVkIHNvIGFzIHRvIHlpZWxkIHRoZSBpbnRlbmRlZCBjaXBoZXIgdmFsdWUuIEZvcgorICogZXhhbXBsZSwgaWYgdGhlIHZhbHVlIGlzIGJhc2U2NCBlbmNvZGVkIHdpdGhpbiBhbiBYTUwgZG9jdW1lbnQ7IHRoZQorICogdHJhbnNmb3JtcyBjb3VsZCBzcGVjaWZ5IGFuIFhQYXRoIGV4cHJlc3Npb24gZm9sbG93ZWQgYnkgYSBiYXNlNjQgZGVjb2Rpbmcgc28KKyAqIGFzIHRvIGV4dHJhY3QgdGhlIG9jdGV0cy4KKyAqIDxwPgorICogVGhlIHN5bnRheCBvZiB0aGUgPGNvZGU+VVJJPC9jb2RlPiBhbmQgVHJhbnNmb3JtcyBpcyBzaW1pbGFyIHRvIHRoYXQgb2YKKyAqIFtYTUwtRFNJR10uIEhvd2V2ZXIsIHRoZXJlIGlzIGEgZGlmZmVyZW5jZSBiZXR3ZWVuIHNpZ25hdHVyZSBhbmQgZW5jcnlwdGlvbgorICogcHJvY2Vzc2luZy4gSW4gW1hNTC1EU0lHXSBib3RoIGdlbmVyYXRpb24gYW5kIHZhbGlkYXRpb24gcHJvY2Vzc2luZyBzdGFydAorICogd2l0aCB0aGUgc2FtZSBzb3VyY2UgZGF0YSBhbmQgcGVyZm9ybSB0aGF0IHRyYW5zZm9ybSBpbiB0aGUgc2FtZSBvcmRlci4gSW4KKyAqIGVuY3J5cHRpb24sIHRoZSBkZWNyeXB0b3IgaGFzIG9ubHkgdGhlIGNpcGhlciBkYXRhIGFuZCB0aGUgc3BlY2lmaWVkCisgKiB0cmFuc2Zvcm1zIGFyZSBlbnVtZXJhdGVkIGZvciB0aGUgZGVjcnlwdG9yLCBpbiB0aGUgb3JkZXIgbmVjZXNzYXJ5IHRvIG9idGFpbgorICogdGhlIG9jdGV0cy4gQ29uc2VxdWVudGx5LCBiZWNhdXNlIGl0IGhhcyBkaWZmZXJlbnQgc2VtYW50aWNzIFRyYW5zZm9ybXMgaXMgaW4KKyAqIHRoZSAmeGVuYzsgbmFtZXNwYWNlLgorICogPHA+CisgKiBUaGUgc2NoZW1hIGRlZmluaXRpb24gaXMgYXMgZm9sbG93czoKKyAqIDx4bXA+CisgKiA8ZWxlbWVudCBuYW1lPSdDaXBoZXJSZWZlcmVuY2UnIHR5cGU9J3hlbmM6Q2lwaGVyUmVmZXJlbmNlVHlwZScvPgorICogPGNvbXBsZXhUeXBlIG5hbWU9J0NpcGhlclJlZmVyZW5jZVR5cGUnPgorICogICAgIDxzZXF1ZW5jZT4KKyAqICAgICAgICAgPGVsZW1lbnQgbmFtZT0nVHJhbnNmb3JtcycgdHlwZT0neGVuYzpUcmFuc2Zvcm1zVHlwZScgbWluT2NjdXJzPScwJy8+CisgKiAgICAgPC9zZXF1ZW5jZT4KKyAqICAgICA8YXR0cmlidXRlIG5hbWU9J1VSSScgdHlwZT0nYW55VVJJJyB1c2U9J3JlcXVpcmVkJy8+CisgKiA8L2NvbXBsZXhUeXBlPgorICogPC94bXA+CisgKgorICogQGF1dGhvciBBeGwgTWF0dGhldXMKKyAqLworcHVibGljIGludGVyZmFjZSBDaXBoZXJSZWZlcmVuY2UgeworICAgIC8qKgorICAgICAqIFJldHVybnMgYW4gPGNvZGU+VVJJPC9jb2RlPiB0aGF0IGNvbnRhaW5zIGFuIGlkZW50aWZpZXIgdGhhdCBzaG91bGQgYmUKKyAgICAgKiBkZXJlZmVyZW5jZWQuCisgICAgICogQHJldHVybgorICAgICAqLworICAgIFN0cmluZyBnZXRVUkkoKTsKKworCS8qKgorCSAqIEdldHMgdGhlIFVSSSBhcyBhbiBBdHRyaWJ1dGUgbm9kZS4gIFVzZWQgdG8gbWVsZCB0aGUgQ2lwaGVyUkVmZXJlbmNlCisJICogd2l0aCB0aGUgWE1MU2lnbmF0dXJlIFJlc291cmNlUmVzb2x2ZXJzCisgICAgICogQHJldHVybgorCSAqLworCXB1YmxpYyBBdHRyIGdldFVSSUFzQXR0cigpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgPGNvZGU+VHJhbnNmb3JtczwvY29kZT4gdGhhdCBzcGVjaWZpZXMgaG93IHRvIHRyYW5zZm9ybSB0aGUKKyAgICAgKiA8Y29kZT5VUkk8L2NvZGU+IHRvIHlpZWxkIHRoZSBhcHByb3BpYXRlIGNpcGhlciB2YWx1ZS4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIHRyYW5zZm9ybSB0aGF0IHNwZWNpZmllcyBob3cgdG8gdHJhbnNmb3JtIHRoZSByZWZlcmVuY2UgdG8KKyAgICAgKiAgIHlpZWxkIHRoZSBpbnRlbmRlZCBjaXBoZXIgdmFsdWUuCisgICAgICovCisgICAgVHJhbnNmb3JtcyBnZXRUcmFuc2Zvcm1zKCk7CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSA8Y29kZT5UcmFuc2Zvcm1zPC9jb2RlPiB0aGF0IHNwZWNpZmllcyBob3cgdG8gdHJhbnNmb3JtIHRoZQorICAgICAqIDxjb2RlPlVSSTwvY29kZT4gdG8geWllbGQgdGhlIGFwcHJvcGlhdGUgY2lwaGVyIHZhbHVlLgorICAgICAqCisgICAgICogQHBhcmFtIHRyYW5zZm9ybXMgdGhlIHNldCBvZiA8Y29kZT5UcmFuc2Zvcm1zPC9jb2RlPiB0aGF0IHNwZWNpZmllcyBob3cKKyAgICAgKiAgIHRvIHRyYW5zZm9ybSB0aGUgcmVmZXJlbmNlIHRvIHlpZWxkIHRoZSBpbnRlbmRlZCBjaXBoZXIgdmFsdWUuCisgICAgICovCisgICAgdm9pZCBzZXRUcmFuc2Zvcm1zKFRyYW5zZm9ybXMgdHJhbnNmb3Jtcyk7Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9lbmNyeXB0aW9uL0NpcGhlclZhbHVlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvZW5jcnlwdGlvbi9DaXBoZXJWYWx1ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkODZiZTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvZW5jcnlwdGlvbi9DaXBoZXJWYWx1ZS5qYXZhCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDIwMDMtMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmVuY3J5cHRpb247CisKKworLyoqCisgKiA8Y29kZT5DaXBoZXJWYWx1ZTwvY29kZT4gaXMgdGhlIHdyYXBwZXIgZm9yIGNpcGhlciB0ZXh0LgorICoKKyAqIEBhdXRob3IgQXhsIE1hdHRoZXVzCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgQ2lwaGVyVmFsdWUgeworICAgIC8qKgorICAgICAqIFJlc3R1cm5zIHRoZSBCYXNlIDY0IGVuY29kZWQsIGVuY3J5cHRlZCBvY3RldHMgdGhhdCBpcyB0aGUKKyAgICAgKiA8Y29kZT5DaWhwZXJWYWx1ZTwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIGNpcGhlciB2YWx1ZS4KKyAgICAgKi8KKwlTdHJpbmcgZ2V0VmFsdWUoKTsKKwkvLyBieXRlW10gZ2V0VmFsdWUoKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBCYXNlIDY0IGVuY29kZWQsIGVuY3J5cHRlZCBvY3RldHMgdGhhdCBpcyB0aGUKKyAgICAgKiA8Y29kZT5DaWhwZXJWYWx1ZTwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIGNpcGhlciB2YWx1ZS4KKyAgICAgKi8KKwl2b2lkIHNldFZhbHVlKFN0cmluZyB2YWx1ZSk7CisJLy8gdm9pZCBzZXRWYWx1ZShieXRlW10gdmFsdWUpOworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2VuY3J5cHRpb24vRW5jcnlwdGVkRGF0YS5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2VuY3J5cHRpb24vRW5jcnlwdGVkRGF0YS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5NjFlYTcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvZW5jcnlwdGlvbi9FbmNyeXB0ZWREYXRhLmphdmEKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAgMjAwMy0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZW5jcnlwdGlvbjsKKworCisvKioKKyAqIFRoZSA8Y29kZT5FbmNyeXB0ZWREYXRhPC9jb2RlPiBlbGVtZW50IGlzIHRoZSBjb3JlIGVsZW1lbnQgaW4gdGhlIHN5bnRheC4gTm90CisgKiBvbmx5IGRvZXMgaXRzIDxjb2RlPkNpcGhlckRhdGE8L2NvZGU+IGNoaWxkIGNvbnRhaW4gdGhlIGVuY3J5cHRlZCBkYXRhLCBidXQKKyAqIGl0J3MgYWxzbyB0aGUgZWxlbWVudCB0aGF0IHJlcGxhY2VzIHRoZSBlbmNyeXB0ZWQgZWxlbWVudCwgb3Igc2VydmVzIGFzIHRoZQorICogbmV3IGRvY3VtZW50IHJvb3QuCisgKiA8cD4KKyAqIEl0J3Mgc2NoZW1hIGRlZmluaXRpb24gaXMgYXMgZm9sbG93czoKKyAqIDxwPgorICogPHhtcD4KKyAqIDxlbGVtZW50IG5hbWU9J0VuY3J5cHRlZERhdGEnIHR5cGU9J3hlbmM6RW5jcnlwdGVkRGF0YVR5cGUnLz4KKyAqIDxjb21wbGV4VHlwZSBuYW1lPSdFbmNyeXB0ZWREYXRhVHlwZSc+CisgKiAgICAgPGNvbXBsZXhDb250ZW50PgorICogICAgICAgICA8ZXh0ZW5zaW9uIGJhc2U9J3hlbmM6RW5jcnlwdGVkVHlwZScvPgorICogICAgIDwvY29tcGxleENvbnRlbnQ+CisgKiA8L2NvbXBsZXhUeXBlPgorICogPC94bXA+CisgKgorICogQGF1dGhvciBBeGwgTWF0dGhldXMKKyAqLworcHVibGljIGludGVyZmFjZSBFbmNyeXB0ZWREYXRhIGV4dGVuZHMgRW5jcnlwdGVkVHlwZSB7Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9lbmNyeXB0aW9uL0VuY3J5cHRlZEtleS5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2VuY3J5cHRpb24vRW5jcnlwdGVkS2V5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTczODU4NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9lbmNyeXB0aW9uL0VuY3J5cHRlZEtleS5qYXZhCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0ICAyMDAzLTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5lbmNyeXB0aW9uOworCisKKworLyoqCisgKiBUaGUgPGNvZGU+RW5jcnlwdGVkS2V5PC9jb2RlPiBlbGVtZW50IGlzIHVzZWQgdG8gdHJhbnNwb3J0IGVuY3J5cHRpb24ga2V5cworICogZnJvbSB0aGUgb3JpZ2luYXRvciB0byBhIGtub3duIHJlY2lwaWVudChzKS4gSXQgbWF5IGJlIHVzZWQgYXMgYSBzdGFuZC1hbG9uZQorICogWE1MIGRvY3VtZW50LCBiZSBwbGFjZWQgd2l0aGluIGFuIGFwcGxpY2F0aW9uIGRvY3VtZW50LCBvciBhcHBlYXIgaW5zaWRlIGFuCisgKiA8Y29kZT5FbmNyeXB0ZWREYXRhPC9jb2RlPiBlbGVtZW50IGFzIGEgY2hpbGQgb2YgYSA8Y29kZT5kczpLZXlJbmZvPC9jb2RlPgorICogZWxlbWVudC4gVGhlIGtleSB2YWx1ZSBpcyBhbHdheXMgZW5jcnlwdGVkIHRvIHRoZSByZWNpcGllbnQocykuIFdoZW4KKyAqIDxjb2RlPkVuY3J5cHRlZEtleTwvY29kZT4gaXMgZGVjcnlwdGVkIHRoZSByZXN1bHRpbmcgb2N0ZXRzIGFyZSBtYWRlCisgKiBhdmFpbGFibGUgdG8gdGhlIDxjb2RlPkVuY3J5cHRpb25NZXRob2Q8L2NvZGU+IGFsZ29yaXRobSB3aXRob3V0IGFueQorICogYWRkaXRpb25hbCBwcm9jZXNzaW5nLgorICogPHA+CisgKiBJdHMgc2NoZW1hIGRlZmluaXRpb24gaXMgYXMgZm9sbG93czoKKyAqIDx4bXA+CisgKiA8ZWxlbWVudCBuYW1lPSdFbmNyeXB0ZWRLZXknIHR5cGU9J3hlbmM6RW5jcnlwdGVkS2V5VHlwZScvPgorICogPGNvbXBsZXhUeXBlIG5hbWU9J0VuY3J5cHRlZEtleVR5cGUnPgorICogICAgIDxjb21wbGV4Q29udGVudD4KKyAqICAgICAgICAgPGV4dGVuc2lvbiBiYXNlPSd4ZW5jOkVuY3J5cHRlZFR5cGUnPgorICogICAgICAgICAgICAgPHNlcXVlbmNlPgorICogICAgICAgICAgICAgICAgIDxlbGVtZW50IHJlZj0neGVuYzpSZWZlcmVuY2VMaXN0JyBtaW5PY2N1cnM9JzAnLz4KKyAqICAgICAgICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSdDYXJyaWVkS2V5TmFtZScgdHlwZT0nc3RyaW5nJyBtaW5PY2N1cnM9JzAnLz4KKyAqICAgICAgICAgICAgIDwvc2VxdWVuY2U+CisgKiAgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9J1JlY2lwaWVudCcgdHlwZT0nc3RyaW5nJyB1c2U9J29wdGlvbmFsJy8+CisgKiAgICAgICAgIDwvZXh0ZW5zaW9uPgorICogICAgIDwvY29tcGxleENvbnRlbnQ+CisgKiA8L2NvbXBsZXhUeXBlPgorICogPC94bXA+CisgKgorICogQGF1dGhvciBBeGwgTWF0dGhldXMKKyAqLworcHVibGljIGludGVyZmFjZSBFbmNyeXB0ZWRLZXkgZXh0ZW5kcyBFbmNyeXB0ZWRUeXBlIHsKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgaGludCBhcyB0byB3aGljaCByZWNpcGllbnQgdGhpcyBlbmNyeXB0ZWQga2V5IHZhbHVlIGlzIGludGVuZGVkCisgICAgICogZm9yLgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgcmVjaXBpZW50IG9mIHRoZSA8Y29kZT5FbmNyeXB0ZWRLZXk8L2NvZGU+LgorICAgICAqLworICAgIFN0cmluZyBnZXRSZWNpcGllbnQoKTsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHJlY2lwaWVudCBmb3IgdGhpcyA8Y29kZT5FbmNyeXB0ZWRLZXk8L2NvZGU+LgorICAgICAqCisgICAgICogQHBhcmFtIHJlY2lwaWVudCB0aGUgcmVjaXBpZW50IGZvciB0aGlzIDxjb2RlPkVuY3J5cHRlZEtleTwvY29kZT4uCisgICAgICovCisgICAgdm9pZCBzZXRSZWNpcGllbnQoU3RyaW5nIHJlY2lwaWVudCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHBvaW50ZXJzIHRvIGRhdGEgYW5kIGtleXMgZW5jcnlwdGVkIHVzaW5nIHRoaXMga2V5LiBUaGUgcmVmZXJlbmNlCisgICAgICogbGlzdCBtYXkgY29udGFpbiBtdWx0aXBsZSByZWZlcmVuY2VzIHRvIDxjb2RlPkVuY3J5cHRlZEtleTwvY29kZT4gYW5kCisgICAgICogPGNvZGU+RW5jcnlwdGVkRGF0YTwvY29kZT4gZWxlbWVudHMuIFRoaXMgaXMgZG9uZSB1c2luZworICAgICAqIDxjb2RlPktleVJlZmVyZW5jZTwvY29kZT4gYW5kIDxjb2RlPkRhdGFSZWZlcmVuY2U8L2NvZGU+IGVsZW1lbnRzCisgICAgICogcmVzcGVjdGl2ZWx5LgorICAgICAqCisgICAgICogQHJldHVybiBhbiA8Y29kZT5JdGVyYXRvcjwvY29kZT4gb3ZlciBhbGwgdGhlIDxjb2RlPlJlZmVyZW5jZUxpc3Q8L2NvZGU+cworICAgICAqICAgY29udGFpbmVkIGluIHRoaXMgPGNvZGU+RW5jcnlwdGVkS2V5PC9jb2RlPi4KKyAgICAgKi8KKyAgICBSZWZlcmVuY2VMaXN0IGdldFJlZmVyZW5jZUxpc3QoKTsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIDxjb2RlPlJlZmVyZW5jZUxpc3Q8L2NvZGU+IHRvIHRoZSA8Y29kZT5FbmNyeXB0ZWRLZXk8L2NvZGU+LgorICAgICAqCisgICAgICogQHBhcmFtIGxpc3QgYSBsaXN0IG9mIHBvaW50ZXJzIHRvIGRhdGEgZWxlbWVudHMgZW5jcnlwdGVkIHVzaW5nIHRoaXMga2V5LgorICAgICAqLworICAgIHZvaWQgc2V0UmVmZXJlbmNlTGlzdChSZWZlcmVuY2VMaXN0IGxpc3QpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIHVzZXIgcmVhZGFibGUgbmFtZSB3aXRoIHRoZSBrZXkgdmFsdWUuIFRoaXMgbWF5IHRoZW4gYmUgdXNlZCB0bworICAgICAqIHJlZmVyZW5jZSB0aGUga2V5IHVzaW5nIHRoZSA8Y29kZT5kczpLZXlOYW1lPC9jb2RlPiBlbGVtZW50IHdpdGhpbgorICAgICAqIDxjb2RlPmRzOktleUluZm88L2NvZGU+LiBUaGUgc2FtZSA8Y29kZT5DYXJyaWVkS2V5TmFtZTwvY29kZT4gbGFiZWwsCisgICAgICogdW5saWtlIGFuIElEIHR5cGUsIG1heSBvY2N1ciBtdWx0aXBsZSB0aW1lcyB3aXRoaW4gYSBzaW5nbGUgZG9jdW1lbnQuIFRoZQorICAgICAqIHZhbHVlIG9mIHRoZSBrZXkgaXMgdG8gYmUgdGhlIHNhbWUgaW4gYWxsIDxjb2RlPkVuY3J5cHRlZEtleTwvY29kZT4KKyAgICAgKiBlbGVtZW50cyBpZGVudGlmaWVkIHdpdGggdGhlIHNhbWUgPGNvZGU+Q2FycmllZEtleU5hbWU8L2NvZGU+IGxhYmVsCisgICAgICogd2l0aGluIGEgc2luZ2xlIFhNTCBkb2N1bWVudC4KKyAgICAgKiA8YnI+CisgICAgICogPGI+Tm90ZTwvYj4gdGhhdCBiZWNhdXNlIHdoaXRlc3BhY2UgaXMgc2lnbmlmaWNhbnQgaW4gdGhlIHZhbHVlIG9mCisgICAgICogdGhlIDxjb2RlPmRzOktleU5hbWU8L2NvZGU+IGVsZW1lbnQsIHdoaXRlc3BhY2UgaXMgYWxzbyBzaWduaWZpY2FudCBpbgorICAgICAqIHRoZSB2YWx1ZSBvZiB0aGUgPGNvZGU+Q2FycmllZEtleU5hbWU8L2NvZGU+IGVsZW1lbnQuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIG92ZXIgYWxsIHRoZSBjYXJyaWVkIG5hbWVzIGNvbnRhaW5lZCBpbgorICAgICAqICAgdGhpcyA8Y29kZT5FbmNyeXB0ZWRLZXk8L2NvZGU+LgorICAgICAqLworICAgIFN0cmluZyBnZXRDYXJyaWVkTmFtZSgpOworCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgY2FycmllZCBuYW1lLgorICAgICAqCisgICAgICogQHBhcmFtIG5hbWUgdGhlIGNhcnJpZWQgbmFtZS4KKyAgICAgKi8KKyAgICB2b2lkIHNldENhcnJpZWROYW1lKFN0cmluZyBuYW1lKTsKK30KKwpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2VuY3J5cHRpb24vRW5jcnlwdGVkVHlwZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2VuY3J5cHRpb24vRW5jcnlwdGVkVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkMWQwNWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvZW5jcnlwdGlvbi9FbmNyeXB0ZWRUeXBlLmphdmEKQEAgLTAsMCArMSwxOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDIwMDMtMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmVuY3J5cHRpb247CisKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuS2V5SW5mbzsKKworCisvKioKKyAqIEVuY3J5cHRlZFR5cGUgaXMgdGhlIGFic3RyYWN0IHR5cGUgZnJvbSB3aGljaCA8Y29kZT5FbmNyeXB0ZWREYXRhPC9jb2RlPiBhbmQKKyAqIDxjb2RlPkVuY3J5cHRlZEtleTwvY29kZT4gYXJlIGRlcml2ZWQuIFdoaWxlIHRoZXNlIHR3byBsYXR0ZXIgZWxlbWVudCB0eXBlcworICogYXJlIHZlcnkgc2ltaWxhciB3aXRoIHJlc3BlY3QgdG8gdGhlaXIgY29udGVudCBtb2RlbHMsIGEgc3ludGFjdGljYWwKKyAqIGRpc3RpbmN0aW9uIGlzIHVzZWZ1bCB0byBwcm9jZXNzaW5nLgorICogPHA+CisgKiBJdHMgc2NoZW1hIGRlZmluaXRpb24gaXMgYXMgZm9sbG93czoKKyAqIDx4bXA+CisgKiA8Y29tcGxleFR5cGUgbmFtZT0nRW5jcnlwdGVkVHlwZScgYWJzdHJhY3Q9J3RydWUnPgorICogICAgIDxzZXF1ZW5jZT4KKyAqICAgICAgICAgPGVsZW1lbnQgbmFtZT0nRW5jcnlwdGlvbk1ldGhvZCcgdHlwZT0neGVuYzpFbmNyeXB0aW9uTWV0aG9kVHlwZScKKyAqICAgICAgICAgICAgIG1pbk9jY3Vycz0nMCcvPgorICogICAgICAgICA8ZWxlbWVudCByZWY9J2RzOktleUluZm8nIG1pbk9jY3Vycz0nMCcvPgorICogICAgICAgICA8ZWxlbWVudCByZWY9J3hlbmM6Q2lwaGVyRGF0YScvPgorICogICAgICAgICA8ZWxlbWVudCByZWY9J3hlbmM6RW5jcnlwdGlvblByb3BlcnRpZXMnIG1pbk9jY3Vycz0nMCcvPgorICogICAgIDwvc2VxdWVuY2U+CisgKiAgICAgPGF0dHJpYnV0ZSBuYW1lPSdJZCcgdHlwZT0nSUQnIHVzZT0nb3B0aW9uYWwnLz4KKyAqICAgICA8YXR0cmlidXRlIG5hbWU9J1R5cGUnIHR5cGU9J2FueVVSSScgdXNlPSdvcHRpb25hbCcvPgorICogICAgIDxhdHRyaWJ1dGUgbmFtZT0nTWltZVR5cGUnIHR5cGU9J3N0cmluZycgdXNlPSdvcHRpb25hbCcvPgorICogICAgIDxhdHRyaWJ1dGUgbmFtZT0nRW5jb2RpbmcnIHR5cGU9J2FueVVSSScgdXNlPSdvcHRpb25hbCcvPgorICogPC9jb21wbGV4VHlwZT4KKyAqIDwveG1wPgorICoKKyAqIEBhdXRob3IgQXhsIE1hdHRoZXVzCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgRW5jcnlwdGVkVHlwZSB7CisgICAgLyoqCisgICAgICogUmV0dXJucyBhIDxjb2RlPlN0cmluZzwvY29kZT4gcHJvdmlkaW5nIGZvciB0aGUgc3RhbmRhcmQgbWV0aG9kIG9mCisgICAgICogYXNzaWduaW5nIGFuIGlkIHRvIHRoZSBlbGVtZW50IHdpdGhpbiB0aGUgZG9jdW1lbnQgY29udGV4dC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIGlkIGZvciB0aGUgPGNvZGU+RW5jcnlwdGVkVHlwZTwvY29kZT4uCisgICAgICovCisgICAgU3RyaW5nIGdldElkKCk7CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBpZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBpZC4KKyAgICAgKi8KKyAgICB2b2lkIHNldElkKFN0cmluZyBpZCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGFuIDxjb2RlPlVSSTwvY29kZT4gaWRlbnRpZnlpbmcgdHlwZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAgICAgKiBwbGFpbnRleHQgZm9ybSBvZiB0aGUgZW5jcnlwdGVkIGNvbnRlbnQuIFdoaWxlIG9wdGlvbmFsLCB0aGlzCisgICAgICogc3BlY2lmaWNhdGlvbiB0YWtlcyBhZHZhbnRhZ2Ugb2YgaXQgZm9yIG1hbmRhdG9yeSBwcm9jZXNzaW5nIGRlc2NyaWJlZCBpbgorICAgICAqIFByb2Nlc3NpbmcgUnVsZXM6IERlY3J5cHRpb24gKHNlY3Rpb24gNC4yKS4gSWYgdGhlCisgICAgICogPGNvZGU+RW5jcnlwdGVkRGF0YTwvY29kZT4gZWxlbWVudCBjb250YWlucyBkYXRhIG9mIFR5cGUgJ2VsZW1lbnQnIG9yCisgICAgICogZWxlbWVudCAnY29udGVudCcsIGFuZCByZXBsYWNlcyB0aGF0IGRhdGEgaW4gYW4gWE1MIGRvY3VtZW50IGNvbnRleHQsIGl0CisgICAgICogaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdGhlIFR5cGUgYXR0cmlidXRlIGJlIHByb3ZpZGVkLiBXaXRob3V0IHRoaXMKKyAgICAgKiBpbmZvcm1hdGlvbiwgdGhlIGRlY3J5cHRvciB3aWxsIGJlIHVuYWJsZSB0byBhdXRvbWF0aWNhbGx5IHJlc3RvcmUgdGhlCisgICAgICogWE1MIGRvY3VtZW50IHRvIGl0cyBvcmlnaW5hbCBjbGVhcnRleHQgZm9ybS4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIGlkZW50aWZpZXIgZm9yIHRoZSB0eXBlIG9mIGluZm9ybWF0aW9uIGluIHBsYWludGV4dCBmb3JtIG9mCisgICAgICogICBlbmNyeXB0ZWQgY29udGVudC4KKyAgICAgKi8KKyAgICBTdHJpbmcgZ2V0VHlwZSgpOworCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgdHlwZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSB0eXBlIGFuIDxjb2RlPlVSSTwvY29kZT4gaWRlbnRpZnlpbmcgdHlwZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAgICAgKiAgIHBsYWludGV4dCBmb3JtIG9mIHRoZSBlbmNyeXB0ZWQgY29udGVudC4KKyAgICAgKi8KKyAgICB2b2lkIHNldFR5cGUoU3RyaW5nIHR5cGUpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIDxjb2RlPlN0cmluZzwvY29kZT4gd2hpY2ggZGVzY3JpYmVzIHRoZSBtZWRpYSB0eXBlIG9mIHRoZSBkYXRhCisgICAgICogd2hpY2ggaGFzIGJlZW4gZW5jcnlwdGVkLiBUaGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgaGFzIHZhbHVlcyBkZWZpbmVkCisgICAgICogYnkgW01JTUVdLiBGb3IgZXhhbXBsZSwgaWYgdGhlIGRhdGEgdGhhdCBpcyBlbmNyeXB0ZWQgaXMgYSBiYXNlNjQgZW5jb2RlZAorICAgICAqIFBORywgdGhlIHRyYW5zZmVyIEVuY29kaW5nIG1heSBiZSBzcGVjaWZpZWQgYXMKKyAgICAgKiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2Jhc2U2NCcgYW5kIHRoZSBNaW1lVHlwZSBhcworICAgICAqICdpbWFnZS9wbmcnLgorICAgICAqIDxicj4KKyAgICAgKiBUaGlzIGF0dHJpYnV0ZSBpcyBwdXJlbHkgYWR2aXNvcnk7IG5vIHZhbGlkYXRpb24gb2YgdGhlIE1pbWVUeXBlCisgICAgICogaW5mb3JtYXRpb24gaXMgcmVxdWlyZWQgYW5kIGl0IGRvZXMgbm90IGluZGljYXRlIHRoZSBlbmNyeXB0aW9uCisgICAgICogYXBwbGljYXRpb24gbXVzdCBkbyBhbnkgYWRkaXRpb25hbCBwcm9jZXNzaW5nLiBOb3RlLCB0aGlzIGluZm9ybWF0aW9uIG1heQorICAgICAqIG5vdCBiZSBuZWNlc3NhcnkgaWYgaXQgaXMgYWxyZWFkeSBib3VuZCB0byB0aGUgaWRlbnRpZmllciBpbiB0aGUgVHlwZQorICAgICAqIGF0dHJpYnV0ZS4gRm9yIGV4YW1wbGUsIHRoZSBFbGVtZW50IGFuZCBDb250ZW50IHR5cGVzIGRlZmluZWQgaW4gdGhpcworICAgICAqIHNwZWNpZmljYXRpb24gYXJlIGFsd2F5cyBVVEYtOCBlbmNvZGVkIHRleHQuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBtZWRpYSB0eXBlIG9mIHRoZSBkYXRhIHdoaWNoIHdhcyBlbmNyeXB0ZWQuCisgICAgICovCisgICAgU3RyaW5nIGdldE1pbWVUeXBlKCk7CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBtaW1lIHR5cGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gdHlwZSBhIDxjb2RlPlN0cmluZzwvY29kZT4gd2hpY2ggZGVzY3JpYmVzIHRoZSBtZWRpYSB0eXBlIG9mIHRoZQorICAgICAqICAgZGF0YSB3aGljaCBoYXMgYmVlbiBlbmNyeXB0ZWQuCisgICAgICovCisgICAgdm9pZCBzZXRNaW1lVHlwZShTdHJpbmcgdHlwZSk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1c24gYW4gPGNvZGU+VVJJPC9jb2RlPiByZXByZXNlbnRpbmcgdGhlIGVuY29kaW5nIG9mIHRoZQorICAgICAqIDxjb2RlPkVuY3J5cHRlZFR5cGU8L2NvZGU+LgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgZW5jb2Rpbmcgb2YgdGhpcyA8Y29kZT5FbmNyeXB0ZWRUeXBlPC9jb2RlPi4KKyAgICAgKi8KKyAgICBTdHJpbmcgZ2V0RW5jb2RpbmcoKTsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIDxjb2RlPlVSSTwvY29kZT4gcmVwcmVzZW50aW5nIHRoZSBlbmNvZGluZyBvZiB0aGUKKyAgICAgKiA8Y29kZT5FbmNyeXB0ZWRUeXBlPC9jb2RlPi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBlbmNvZGluZy4KKyAgICAgKi8KKyAgICB2b2lkIHNldEVuY29kaW5nKFN0cmluZyBlbmNvZGluZyk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGFuIDxjb2RlPkVuY3J5cHRpb25NZXRob2Q8L2NvZGU+IHRoYXQgZGVzY3JpYmVzIHRoZSBlbmNyeXB0aW9uCisgICAgICogYWxnb3JpdGhtIGFwcGxpZWQgdG8gdGhlIGNpcGhlciBkYXRhLiBJZiB0aGUgZWxlbWVudCBpcyBhYnNlbnQsIHRoZQorICAgICAqIGVuY3J5cHRpb24gYWxnb3JpdGhtIG11c3QgYmUga25vd24gYnkgdGhlIHJlY2lwaWVudCBvciB0aGUgZGVjcnlwdGlvbgorICAgICAqIHdpbGwgZmFpbC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIG1ldGhvZCB1c2VkIHRvIGVuY3J5cHQgdGhlIGNpcGhlciBkYXRhLgorICAgICAqLworICAgIEVuY3J5cHRpb25NZXRob2QgZ2V0RW5jcnlwdGlvbk1ldGhvZCgpOworCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgPGNvZGU+RW5jcnlwdGlvbk1ldGhvZDwvY29kZT4gdXNlZCB0byBlbmNyeXB0IHRoZSBjaXBoZXIgZGF0YS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBtZXRob2QgdGhlIDxjb2RlPkVuY3J5cHRpb25NZXRob2Q8L2NvZGU+LgorICAgICAqLworICAgIHZvaWQgc2V0RW5jcnlwdGlvbk1ldGhvZChFbmNyeXB0aW9uTWV0aG9kIG1ldGhvZCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSA8Y29kZT5kczpLZXlJbmZvPC9jb2RlPiwgdGhhdCBjYXJyaWVzIGluZm9ybWF0aW9uIGFib3V0IHRoZQorICAgICAqIGtleSB1c2VkIHRvIGVuY3J5cHQgdGhlIGRhdGEuIFN1YnNlcXVlbnQgc2VjdGlvbnMgb2YgdGhpcyBzcGVjaWZpY2F0aW9uCisgICAgICogZGVmaW5lIG5ldyBlbGVtZW50cyB0aGF0IG1heSBhcHBlYXIgYXMgY2hpbGRyZW4gb2YKKyAgICAgKiA8Y29kZT5kczpLZXlJbmZvPC9jb2RlPi4KKyAgICAgKgorICAgICAqIEByZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGtleSB0aGF0IGVuY3J5cHRlZCB0aGUgY2lwaGVyIGRhdGEuCisgICAgICovCisgICAgS2V5SW5mbyBnZXRLZXlJbmZvKCk7CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBlbmNyeXB0aW9uIGtleSBpbmZvcm1hdGlvbi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBpbmZvIHRoZSA8Y29kZT5kczpLZXlJbmZvPC9jb2RlPiwgdGhhdCBjYXJyaWVzIGluZm9ybWF0aW9uIGFib3V0CisgICAgICogICB0aGUga2V5IHVzZWQgdG8gZW5jcnlwdCB0aGUgZGF0YS4KKyAgICAgKi8KKyAgICB2b2lkIHNldEtleUluZm8oS2V5SW5mbyBpbmZvKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIDxjb2RlPkNpcGhlclJlZmVyZW5jZTwvY29kZT4gdGhhdCBjb250YWlucyB0aGUKKyAgICAgKiA8Y29kZT5DaXBoZXJWYWx1ZTwvY29kZT4gb3IgPGNvZGU+Q2lwaGVyUmVmZXJlbmNlPC9jb2RlPiB3aXRoIHRoZQorICAgICAqIGVuY3J5cHRlZCBkYXRhLgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgY2lwaGVyIGRhdGEgZm9yIHRoZSBlbmNyeXB0ZWQgdHlwZS4KKyAgICAgKi8KKyAgICBDaXBoZXJEYXRhIGdldENpcGhlckRhdGEoKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBjb25jZXJuaW5nIHRoZSBnZW5lcmF0aW9uIG9mIHRoZQorICAgICAqIDxjb2RlPkVuY3J5cHRlZFR5cGU8L2NvZGU+LgorICAgICAqCisgICAgICogQHJldHVybiBpbmZvcm1hdGlvbiByZWxhdGluZyB0byB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUKKyAgICAgKiAgIDxjb2RlPkVuY3J5cHRlZFR5cGU8L2NvZGU+LgorICAgICAqLworICAgIEVuY3J5cHRpb25Qcm9wZXJ0aWVzIGdldEVuY3J5cHRpb25Qcm9wZXJ0aWVzKCk7CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSA8Y29kZT5FbmNyeXB0aW9uUHJvcGVydGllczwvY29kZT4gdGhhdCBzdXBwbGllcyBhZGRpdGlvbmFsCisgICAgICogaW5mb3JtYXRpb24gYWJvdXQgdGhlIGdlbmVyYXRpb24gb2YgdGhlIDxjb2RlPkVuY3J5cHRlZFR5cGU8L2NvZGU+LgorICAgICAqCisgICAgICogQHBhcmFtIHByb3BlcnRpZXMuCisgICAgICovCisgICAgdm9pZCBzZXRFbmNyeXB0aW9uUHJvcGVydGllcyhFbmNyeXB0aW9uUHJvcGVydGllcyBwcm9wZXJ0aWVzKTsKK30KKwpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2VuY3J5cHRpb24vRW5jcnlwdGlvbk1ldGhvZC5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2VuY3J5cHRpb24vRW5jcnlwdGlvbk1ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwMzA4NGIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvZW5jcnlwdGlvbi9FbmNyeXB0aW9uTWV0aG9kLmphdmEKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDIwMDMtMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmVuY3J5cHRpb247CisKKworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworCisKKy8qKgorICogPGNvZGU+RW5jcnlwdGlvbk1ldGhvZDwvY29kZT4gZGVzY3JpYmVzIHRoZSBlbmNyeXB0aW9uIGFsZ29yaXRobSBhcHBsaWVkIHRvCisgKiB0aGUgY2lwaGVyIGRhdGEuIElmIHRoZSBlbGVtZW50IGlzIGFic2VudCwgdGhlIGVuY3J5cHRpb24gYWxnb3JpdGhtIG11c3QgYmUKKyAqIGtub3duIGJ5IHRoZSByZWNpcGllbnQgb3IgdGhlIGRlY3J5cHRpb24gd2lsbCBmYWlsLgorICogPHA+CisgKiBJdCBpcyBkZWZpbmVkIGFzIGZvbGxvd3M6CisgKiA8eG1wPgorICogPGNvbXBsZXhUeXBlIG5hbWU9J0VuY3J5cHRpb25NZXRob2RUeXBlJyBtaXhlZD0ndHJ1ZSc+CisgKiAgICAgPHNlcXVlbmNlPgorICogICAgICAgICA8ZWxlbWVudCBuYW1lPSdLZXlTaXplJyBtaW5PY2N1cnM9JzAnIHR5cGU9J3hlbmM6S2V5U2l6ZVR5cGUnLz4KKyAqICAgICAgICAgPGVsZW1lbnQgbmFtZT0nT0FFUHBhcmFtcycgbWluT2NjdXJzPScwJyB0eXBlPSdiYXNlNjRCaW5hcnknLz4KKyAqICAgICAgICAgPGFueSBuYW1lc3BhY2U9JyMjb3RoZXInIG1pbk9jY3Vycz0nMCcgbWF4T2NjdXJzPSd1bmJvdW5kZWQnLz4KKyAqICAgICA8L3NlcXVlbmNlPgorICogICAgIDxhdHRyaWJ1dGUgbmFtZT0nQWxnb3JpdGhtJyB0eXBlPSdhbnlVUkknIHVzZT0ncmVxdWlyZWQnLz4KKyAqIDwvY29tcGxleFR5cGU+CisgKiA8L3htcD4KKyAqCisgKiBAYXV0aG9yIEF4bCBNYXR0aGV1cworICovCitwdWJsaWMgaW50ZXJmYWNlIEVuY3J5cHRpb25NZXRob2QgeworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGFsZ29yaXRobSBhcHBsaWVkIHRvIHRoZSBjaXBoZXIgZGF0YS4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIGVuY3J5cHRpb24gYWxnb3JpdGhtLgorICAgICAqLworICAgIFN0cmluZyBnZXRBbGdvcml0aG0oKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGtleSBzaXplIG9mIHRoZSBrZXkgb2YgdGhlIGFsZ29yaXRobSBhcHBsaWVkIHRvIHRoZSBjaXBoZXIKKyAgICAgKiBkYXRhLgorICAgICAqCisgICAgICogQHJldHVybiB0aGUga2V5IHNpemUuCisgICAgICovCisgICAgaW50IGdldEtleVNpemUoKTsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHNpemUgb2YgdGhlIGtleSBvZiB0aGUgYWxnb3JpdGhtIGFwcGxpZWQgdG8gdGhlIGNpcGhlciBkYXRhLgorICAgICAqCisgICAgICogQHBhcmFtIHNpemUgdGhlIGtleSBzaXplLgorICAgICAqLworICAgIHZvaWQgc2V0S2V5U2l6ZShpbnQgc2l6ZSk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBPQUVQIHBhcmFtZXRlcnMgb2YgdGhlIGFsZ29yaXRobSBhcHBsaWVkIGFwcGxpZWQgdG8gdGhlCisgICAgICogY2lwaGVyIGRhdGEuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBPQUVQIHBhcmFtZXRlcnMuCisgICAgICovCisgICAgYnl0ZVtdIGdldE9BRVBwYXJhbXMoKTsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIE9BRVAgcGFyYW1ldGVycy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJzIHRoZSBPQUVQIHBhcmFtZXRlcnMuCisgICAgICovCisgICAgdm9pZCBzZXRPQUVQcGFyYW1zKGJ5dGVbXSBwYXJhbWV0ZXJzKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgYW4gaXRlcmF0b3Igb3ZlciBhbGwgdGhlIGFkZGl0aW9uYWwgZWxlbWVudHMgY29udGFpbmVkIGluIHRoZQorICAgICAqIDxjb2RlPkVuY3J5cHRpb25NZXRob2Q8L2NvZGU+LgorICAgICAqCisgICAgICogQHJldHVybiBhbiA8Y29kZT5JdGVyYXRvcjwvY29kZT4gb3ZlciBhbGwgdGhlIGFkZGl0aW9uYWwgaW5mb21hdGlvbgorICAgICAqICAgYWJvdXQgdGhlIDxjb2RlPkVuY3J5cHRpb25NZXRob2Q8L2NvZGU+LgorICAgICAqLworICAgIEl0ZXJhdG9yIGdldEVuY3J5cHRpb25NZXRob2RJbmZvcm1hdGlvbigpOworCisgICAgLyoqCisgICAgICogQWRkcyBlbmNyeXB0aW9uIG1ldGhvZCBpbmZvcm1hdGlvbi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBpbmZvcm1hdGlvbiBhZGRpdGlvbmFsIGVuY3J5cHRpb24gbWV0aG9kIGluZm9ybWF0aW9uLgorICAgICAqLworICAgIHZvaWQgYWRkRW5jcnlwdGlvbk1ldGhvZEluZm9ybWF0aW9uKEVsZW1lbnQgaW5mb3JtYXRpb24pOworCisgICAgLyoqCisgICAgICogUmVtb3ZlcyBlbmNyeXB0aW9uIG1ldGhvZCBpbmZvcm1hdGlvbi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBpbmZvcm1hdGlvbiB0aGUgaW5mb3JtYXRpb24gdG8gcmVtb3ZlIGZyb20gdGhlCisgICAgICogICA8Y29kZT5FbmNyeXB0aW9uTWV0aG9kPC9jb2RlPi4KKyAgICAgKi8KKyAgICB2b2lkIHJlbW92ZUVuY3J5cHRpb25NZXRob2RJbmZvcm1hdGlvbihFbGVtZW50IGluZm9ybWF0aW9uKTsKK30KKwpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2VuY3J5cHRpb24vRW5jcnlwdGlvblByb3BlcnRpZXMuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9lbmNyeXB0aW9uL0VuY3J5cHRpb25Qcm9wZXJ0aWVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQwZmY0NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9lbmNyeXB0aW9uL0VuY3J5cHRpb25Qcm9wZXJ0aWVzLmphdmEKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAgMjAwMy0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZW5jcnlwdGlvbjsKKworCitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworCisKKy8qKgorICogPGNvZGU+RW5jcnlwdGlvblByb3BlcnRpZXM8L2NvZGU+IGNhbiBob2xkIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gY29uY2VybmluZworICogdGhlIGdlbmVyYXRpb24gb2YgdGhlIDxjb2RlPkVuY3J5cHRlZERhdGE8L2NvZGU+IG9yCisgKiA8Y29kZT5FbmNyeXB0ZWRLZXk8L2NvZGU+LiBUaGlzIGluZm9ybWF0aW9uIGlzIHdyYXBlZCBpbnQgYW4KKyAqIDxjb2RlPkVuY3J5cHRpb25Qcm9wZXJ0eTwvY29kZT4gZWxlbWVudC4gRXhhbXBsZXMgb2YgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogaXMgZS5nLiwgYSBkYXRlL3RpbWUgc3RhbXAgb3IgdGhlIHNlcmlhbCBudW1iZXIgb2YgY3J5cHRvZ3JhcGhpYyBoYXJkd2FyZQorICogdXNlZCBkdXJpbmcgZW5jcnlwdGlvbikuCisgKiA8cD4KKyAqIEl0IGlzIGRlZmluZWQgYXMgZm9sbG93czoKKyAqIDx4bXA+CisgKiA8ZWxlbWVudCBuYW1lPSdFbmNyeXB0aW9uUHJvcGVydGllcycgdHlwZT0neGVuYzpFbmNyeXB0aW9uUHJvcGVydGllc1R5cGUnLz4KKyAqIDxjb21wbGV4VHlwZSBuYW1lPSdFbmNyeXB0aW9uUHJvcGVydGllc1R5cGUnPgorICogICAgIDxzZXF1ZW5jZT4KKyAqICAgICAgICAgPGVsZW1lbnQgcmVmPSd4ZW5jOkVuY3J5cHRpb25Qcm9wZXJ0eScgbWF4T2NjdXJzPSd1bmJvdW5kZWQnLz4KKyAqICAgICA8L3NlcXVlbmNlPgorICogICAgIDxhdHRyaWJ1dGUgbmFtZT0nSWQnIHR5cGU9J0lEJyB1c2U9J29wdGlvbmFsJy8+CisgKiA8L2NvbXBsZXhUeXBlPgorICogPC94bXA+CisgKgorICogQGF1dGhvciBBeGwgTWF0dGhldXMKKyAqLworcHVibGljIGludGVyZmFjZSBFbmNyeXB0aW9uUHJvcGVydGllcyB7CisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgPGNvZGU+RW5jcnlwdGlvblByb3BlcnRpZXM8L2NvZGU+JyBpZC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIGlkLgorICAgICAqLworICAgIFN0cmluZyBnZXRJZCgpOworCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgaWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gaWQgdGhlIGlkLgorICAgICAqLworICAgIHZvaWQgc2V0SWQoU3RyaW5nIGlkKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgYW4gPGNvZGU+SXRlcmF0b3I8L2NvZGU+IG92ZXIgYWxsIHRoZQorICAgICAqIDxjb2RlPkVuY3J5cHRpb25Qcm9wdGVydHk8L2NvZGU+IGVsZW1lbnRzIGNvbnRhaW5lZCBpbiB0aGlzCisgICAgICogPGNvZGU+RW5jcnlwdGlvblByb3BlcnRpZXM8L2NvZGU+LgorICAgICAqCisgICAgICogQHJldHVybiBhbiA8Y29kZT5JdGVyYXRvcjwvY29kZT4gb3ZlciBhbGwgdGhlIGVuY3J5cHRpb24gcHJvcGVydGllcy4KKyAgICAgKi8KKyAgICBJdGVyYXRvciBnZXRFbmNyeXB0aW9uUHJvcGVydGllcygpOworCisgICAgLyoqCisgICAgICogQWRkcyBhbiA8Y29kZT5FbmNyeXB0aW9uUHJvcGVydHk8L2NvZGU+LgorICAgICAqCisgICAgICogQHBhcmFtIHByb3BlcnR5LgorICAgICAqLworICAgIHZvaWQgYWRkRW5jcnlwdGlvblByb3BlcnR5KEVuY3J5cHRpb25Qcm9wZXJ0eSBwcm9wZXJ0eSk7CisKKyAgICAvKioKKyAgICAgKiBSZW1vdmVzIHRoZSBzcGVjaWZpZWQgPGNvZGU+RW5jcnlwdGlvblByb3BlcnR5PC9jb2RlPi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwcm9wZXJ0eS4KKyAgICAgKi8KKyAgICB2b2lkIHJlbW92ZUVuY3J5cHRpb25Qcm9wZXJ0eShFbmNyeXB0aW9uUHJvcGVydHkgcHJvcGVydHkpOworfQorCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvZW5jcnlwdGlvbi9FbmNyeXB0aW9uUHJvcGVydHkuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9lbmNyeXB0aW9uL0VuY3J5cHRpb25Qcm9wZXJ0eS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1NTAyM2UKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvZW5jcnlwdGlvbi9FbmNyeXB0aW9uUHJvcGVydHkuamF2YQpAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAgMjAwMy0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZW5jcnlwdGlvbjsKKworCitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CisKKy8qKgorICogQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBpdGVtcyBjb25jZXJuaW5nIHRoZSBnZW5lcmF0aW9uIG9mIHRoZQorICogPGNvZGU+RW5jcnlwdGVkRGF0YTwvY29kZT4gb3IgPGNvZGU+RW5jcnlwdGVkS2V5PC9jb2RlPiBjYW4gYmUgcGxhY2VkIGluIGFuCisgKiA8Y29kZT5FbmNyeXB0aW9uUHJvcGVydHk8L2NvZGU+IGVsZW1lbnQgKGUuZy4sIGRhdGUvdGltZSBzdGFtcCBvciB0aGUgc2VyaWFsCisgKiBudW1iZXIgb2YgY3J5cHRvZ3JhcGhpYyBoYXJkd2FyZSB1c2VkIGR1cmluZyBlbmNyeXB0aW9uKS4gVGhlIFRhcmdldAorICogYXR0cmlidXRlIGlkZW50aWZpZXMgdGhlIDxjb2RlPkVuY3J5cHRlZFR5cGU8L2NvZGU+IHN0cnVjdHVyZSBiZWluZworICogZGVzY3JpYmVkLiBhbnlBdHRyaWJ1dGUgcGVybWl0cyB0aGUgaW5jbHVzaW9uIG9mIGF0dHJpYnV0ZXMgZnJvbSB0aGUgWE1MCisgKiBuYW1lc3BhY2UgdG8gYmUgaW5jbHVkZWQgKGkuZS4sIDxjb2RlPnhtbDpzcGFjZTwvY29kZT4sCisgKiA8Y29kZT54bWw6bGFuZzwvY29kZT4sIGFuZCA8Y29kZT54bWw6YmFzZTwvY29kZT4pLgorICogPHA+CisgKiBJdCBpcyBkZWZpbmVkIGFzIGZvbGxvd3M6CisgKiA8eG1wPgorICogPGVsZW1lbnQgbmFtZT0nRW5jcnlwdGlvblByb3BlcnR5JyB0eXBlPSd4ZW5jOkVuY3J5cHRpb25Qcm9wZXJ0eVR5cGUnLz4KKyAqIDxjb21wbGV4VHlwZSBuYW1lPSdFbmNyeXB0aW9uUHJvcGVydHlUeXBlJyBtaXhlZD0ndHJ1ZSc+CisgKiAgICAgPGNob2ljZSBtYXhPY2N1cnM9J3VuYm91bmRlZCc+CisgKiAgICAgICAgIDxhbnkgbmFtZXNwYWNlPScjI290aGVyJyBwcm9jZXNzQ29udGVudHM9J2xheCcvPgorICogICAgIDwvY2hvaWNlPgorICogICAgIDxhdHRyaWJ1dGUgbmFtZT0nVGFyZ2V0JyB0eXBlPSdhbnlVUkknIHVzZT0nb3B0aW9uYWwnLz4KKyAqICAgICA8YXR0cmlidXRlIG5hbWU9J0lkJyB0eXBlPSdJRCcgdXNlPSdvcHRpb25hbCcvPgorICogICAgIDxhbnlBdHRyaWJ1dGUgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLz4KKyAqIDwvY29tcGxleFR5cGU+CisgKiA8L3htcD4KKyAqCisgKiBAYXV0aG9yIEF4bCBNYXR0aGV1cworICovCitwdWJsaWMgaW50ZXJmYWNlIEVuY3J5cHRpb25Qcm9wZXJ0eSB7CisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgPGNvZGU+RW5jcnlwdGVkVHlwZTwvY29kZT4gYmVpbmcgZGVzY3JpYmVkLgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgPGNvZGU+RW5jcnlwdGVkVHlwZTwvY29kZT4gYmVpbmcgZGVzY3JpYmVkIGJ5IHRoaXMKKyAgICAgKiAgIDxjb2RlPkVuY3J5cHRpb25Qcm9wZXJ0eTwvY29kZT4uCisgICAgICovCisgICAgU3RyaW5nIGdldFRhcmdldCgpOworCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgdGFyZ2V0LgorICAgICAqCisgICAgICogQHBhcmFtIHRhcmdldC4KKyAgICAgKi8KKyAgICB2b2lkIHNldFRhcmdldChTdHJpbmcgdGFyZ2V0KTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGlkIG9mIHRoZSA8Q09ERT5FbmNyeXB0aW9uUHJvcGVydHk8L0NPREU+LgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgaWQuCisgICAgICovCisgICAgU3RyaW5nIGdldElkKCk7CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBpZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBpZC4KKyAgICAgKi8KKyAgICB2b2lkIHNldElkKFN0cmluZyBpZCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBpbiB0aGUgPGNvZGU+eG1sPC9jb2RlPiBuYW1lc3BhY2UuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYXR0cmlidXRlCisgICAgICogQHJldHVybiB0aGUgYXR0cmlidXRlJ3MgdmFsdWUuCisgICAgICovCisgICAgU3RyaW5nIGdldEF0dHJpYnV0ZShTdHJpbmcgYXR0cmlidXRlKTsKKworICAgIC8qKgorICAgICAqIFNldCB0aGUgYXR0cmlidXRlIHZhbHVlLgorICAgICAqCisgICAgICogQHBhcmFtIGF0dHJpYnV0ZSB0aGUgYXR0cmlidXRlJ3MgbmFtZS4KKyAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlLgorICAgICAqLworICAgIHZvaWQgc2V0QXR0cmlidXRlKFN0cmluZyBhdHRyaWJ1dGUsIFN0cmluZyB2YWx1ZSk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSA8Q09ERT5FbmNyeXB0aW9uUHJvcGVydHk8L0NPREU+LgorICAgICAqCisgICAgICogQHJldHVybiBhbiA8Y29kZT5JdGVyYXRvcjwvY29kZT4gb3ZlciBhbGwgdGhlIGFkZGlpdG9uYWwgZW5jcnlwdGlvbgorICAgICAqICAgaW5mb3JtYXRpb24gY29udGFpbmVkIGluIHRoaXMgY2xhc3MuCisgICAgICovCisgICAgSXRlcmF0b3IgZ2V0RW5jcnlwdGlvbkluZm9ybWF0aW9uKCk7CisKKyAgICAvKioKKyAgICAgKiBBZGRzIGVuY3J5cHRpb24gaW5mb3JtYXRpb24uCisgICAgICoKKyAgICAgKiBAcGFyYW0gaW5mb3JtYXRpb24gdGhlIGFkZGl0aW9uYWwgZW5jcnlwdGlvbiBpbmZvcm1hdGlvbi4KKyAgICAgKi8KKyAgICB2b2lkIGFkZEVuY3J5cHRpb25JbmZvcm1hdGlvbihFbGVtZW50IGluZm9ybWF0aW9uKTsKKworICAgIC8qKgorICAgICAqIFJlbW92ZXMgZW5jcnlwdGlvbiBpbmZvcm1hdGlvbi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBpbmZvcm1hdGlvbiB0aGUgaW5mb3JtYXRpb24gdG8gcmVtb3ZlLgorICAgICAqLworICAgIHZvaWQgcmVtb3ZlRW5jcnlwdGlvbkluZm9ybWF0aW9uKEVsZW1lbnQgaW5mb3JtYXRpb24pOworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2VuY3J5cHRpb24vUmVmZXJlbmNlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvZW5jcnlwdGlvbi9SZWZlcmVuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjU2ZGEyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2VuY3J5cHRpb24vUmVmZXJlbmNlLmphdmEKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAgMjAwMy0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZW5jcnlwdGlvbjsKKworCitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CisKKworLyoqCisgKiBBIHdyYXBwZXIgZm9yIGEgcG9pbnRlciBmcm9tIGEga2V5IHZhbHVlIG9mIGFuIDxjb2RlPkVuY3J5cHRlZEtleTwvY29kZT4gdG8KKyAqIGl0ZW1zIGVuY3J5cHRlZCBieSB0aGF0IGtleSB2YWx1ZSAoPGNvZGU+RW5jcnlwdGVkRGF0YTwvY29kZT4gb3IKKyAqIDxjb2RlPkVuY3J5cHRlZEtleTwvY29kZT4gZWxlbWVudHMpLgorICogPHA+CisgKiBJdCBpcyBkZWZpbmVkIGFzIGZvbGxvd3M6CisgKiA8eG1wPgorICogPGNvbXBsZXhUeXBlIG5hbWU9J1JlZmVyZW5jZVR5cGUnPgorICogICAgIDxzZXF1ZW5jZT4KKyAqICAgICAgICAgPGFueSBuYW1lc3BhY2U9JyMjb3RoZXInIG1pbk9jY3Vycz0nMCcgbWF4T2NjdXJzPSd1bmJvdW5kZWQnLz4KKyAqICAgICA8L3NlcXVlbmNlPgorICogICAgIDxhdHRyaWJ1dGUgbmFtZT0nVVJJJyB0eXBlPSdhbnlVUkknIHVzZT0ncmVxdWlyZWQnLz4KKyAqIDwvY29tcGxleFR5cGU+CisgKiA8L3htcD4KKyAqCisgKiBAYXV0aG9yIEF4bCBNYXR0aGV1cworICogQHNlZSBSZWZlcmVuY2VMaXN0CisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgUmVmZXJlbmNlIHsKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgPGNvZGU+VVJJPC9jb2RlPiB0aGF0IHBvaW50cyB0byBhbiA8Y29kZT5FbGVtZW50PC9jb2RlPiB0aGF0CisgICAgICogd2VyZSBlbmNyeXB0ZWQgdXNpbmcgdGhlIGtleSBkZWZpbmVkIGluIHRoZSBlbmNsb3NpbmcKKyAgICAgKiA8Y29kZT5FbmNyeXB0ZWRLZXk8L2NvZGU+IGVsZW1lbnQuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIGFuIFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllciB0aGF0IHF1YWxpZmllcyBhbgorICAgICAqICAgPGNvZGU+RW5jcnlwdGVkVHlwZTwvY29kZT4uCisgICAgICovCisgICAgU3RyaW5nIGdldFVSSSgpOworCisgICAgLyoqCisgICAgICogU2V0cyBhIDxjb2RlPlVSSTwvY29kZT4gdGhhdCBwb2ludHMgdG8gYW4gPGNvZGU+RWxlbWVudDwvY29kZT4gdGhhdAorICAgICAqIHdlcmUgZW5jcnlwdGVkIHVzaW5nIHRoZSBrZXkgZGVmaW5lZCBpbiB0aGUgZW5jbG9zaW5nCisgICAgICogPGNvZGU+RW5jcnlwdGVkS2V5PC9jb2RlPiBlbGVtZW50LgorICAgICAqCisgICAgICogQHBhcmFtIHVyaSB0aGUgVW5pZm9ybSBSZXNvdXJjZSBJZGVudGlmaWVyIHRoYXQgcXVhbGlmaWVzIGFuCisgICAgICogICA8Y29kZT5FbmNyeXB0ZWRUeXBlPC9jb2RlPi4KKyAgICAgKi8KKyAgICB2b2lkIHNldFVSSShTdHJpbmcgdXJpKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgYW4gPGNvZGU+SXRlcmF0b3I8L2NvZGU+IG92ZXIgYWxsIHRoZSBjaGlsZCBlbGVtZW50cyBjb250YWluZWQgaW4KKyAgICAgKiB0aGlzIDxjb2RlPlJlZmVyZW5jZTwvY29kZT4gdGhhdCB3aWxsIGFpZCB0aGUgcmVjaXBpZW50IGluIHJldHJpZXZpbmcgdGhlCisgICAgICogPGNvZGU+RW5jcnlwdGVkS2V5PC9jb2RlPiBhbmQvb3IgPGNvZGU+RW5jcnlwdGVkRGF0YTwvY29kZT4gZWxlbWVudHMuCisgICAgICogVGhlc2UgY291bGQgaW5jbHVkZSBpbmZvcm1hdGlvbiBzdWNoIGFzIFhQYXRoIHRyYW5zZm9ybXMsIGRlY29tcHJlc3Npb24KKyAgICAgKiB0cmFuc2Zvcm1zLCBvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gcmV0cmlldmUgdGhlIGVsZW1lbnRzIGZyb20gYQorICAgICAqIGRvY3VtZW50IHN0b3JhZ2UgZmFjaWxpdHkuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIGNoaWxkIGVsZW1lbnRzLgorICAgICAqLworICAgIEl0ZXJhdG9yIGdldEVsZW1lbnRSZXRyaWV2YWxJbmZvcm1hdGlvbigpOworCisgICAgLyoqCisgICAgICogQWRkcyByZXRyaWV2YWwgaW5mb3JtYXRpb24uCisgICAgICoKKyAgICAgKiBAcGFyYW0gaW5mby4KKyAgICAgKi8KKyAgICB2b2lkIGFkZEVsZW1lbnRSZXRyaWV2YWxJbmZvcm1hdGlvbihFbGVtZW50IGluZm8pOworCisgICAgLyoqCisgICAgICogUmVtb3ZlcyB0aGUgc3BlY2lmaWVkIHJldHJpZXZhbCBpbmZvcm1hdGlvbi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBpbmZvLgorICAgICAqLworICAgIHZvaWQgcmVtb3ZlRWxlbWVudFJldHJpZXZhbEluZm9ybWF0aW9uKEVsZW1lbnQgaW5mbyk7Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvZW5jcnlwdGlvbi9SZWZlcmVuY2VMaXN0LmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvZW5jcnlwdGlvbi9SZWZlcmVuY2VMaXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIwZmVjNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9lbmNyeXB0aW9uL1JlZmVyZW5jZUxpc3QuamF2YQpAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAgMjAwMy0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZW5jcnlwdGlvbjsKKworCitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworCisKKy8qKgorICogPGNvZGU+UmVmZXJlbmNlTGlzdDwvY29kZT4gaXMgYW4gZWxlbWVudCB0aGF0IGNvbnRhaW5zIHBvaW50ZXJzIGZyb20gYSBrZXkKKyAqIHZhbHVlIG9mIGFuIDxjb2RlPkVuY3J5cHRlZEtleTwvY29kZT4gdG8gaXRlbXMgZW5jcnlwdGVkIGJ5IHRoYXQga2V5IHZhbHVlCisgKiAoPGNvZGU+RW5jcnlwdGVkRGF0YTwvY29kZT4gb3IgPGNvZGU+RW5jcnlwdGVkS2V5PC9jb2RlPiBlbGVtZW50cykuCisgKiA8cD4KKyAqIEl0IGlzIGRlZmluZWQgYXMgZm9sbG93czoKKyAqIDx4bXA+CisgKiA8ZWxlbWVudCBuYW1lPSdSZWZlcmVuY2VMaXN0Jz4KKyAqICAgICA8Y29tcGxleFR5cGU+CisgKiAgICAgICAgIDxjaG9pY2UgbWluT2NjdXJzPScxJyBtYXhPY2N1cnM9J3VuYm91bmRlZCc+CisgKiAgICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSdEYXRhUmVmZXJlbmNlJyB0eXBlPSd4ZW5jOlJlZmVyZW5jZVR5cGUnLz4KKyAqICAgICAgICAgICAgIDxlbGVtZW50IG5hbWU9J0tleVJlZmVyZW5jZScgdHlwZT0neGVuYzpSZWZlcmVuY2VUeXBlJy8+CisgKiAgICAgICAgIDwvY2hvaWNlPgorICogICAgIDwvY29tcGxleFR5cGU+CisgKiA8L2VsZW1lbnQ+CisgKiA8L3htcD4KKyAqCisgKiBAYXV0aG9yIEF4bCBNYXR0aGV1cworICogQHNlZSBSZWZlcmVuY2UKKyAqLworcHVibGljIGludGVyZmFjZSBSZWZlcmVuY2VMaXN0IHsKKwkvKiogREFUQSBUQUcgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBEQVRBX1JFRkVSRU5DRSA9IDB4MDAwMDAwMDE7CisgICAgLyoqIEtFWSBUQUcgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBLRVlfUkVGRVJFTkNFICA9IDB4MDAwMDAwMDI7CisKKyAgICAvKioKKyAgICAgKiBBZGRzIGEgcmVmZXJlbmNlIHRvIHRoaXMgcmVmZXJlbmNlIGxpc3QuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcmVmZXJlbmNlIHRoZSByZWZlcmVuY2UgdG8gYWRkLgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiBpZiB0aGUgPGNvZGU+UmVmZXJlbmNlPC9jb2RlPiBpcyBub3QgYW4KKyAgICAgKiAgIGluc3RhbmNlIG9mIDxjb2RlPkRhdGFSZWZlcmVuY2U8L2NvZGU+IG9yIDxjb2RlPktleVJlZmVyZW5jZTwvY29kZT4uCisgICAgICovCisgICAgcHVibGljIHZvaWQgYWRkKFJlZmVyZW5jZSByZWZlcmVuY2UpOworCisgICAgLyoqCisgICAgICogUmVtb3ZlcyBhIHJlZmVyZW5jZSBmcm9tIHRoZSA8Y29kZT5SZWZlcmVuY2VMaXN0PC9jb2RlPi4KKyAgICAgKgorICAgICAqIEBwYXJhbSByZWZlcmVuY2UgdGhlIHJlZmVyZW5jZSB0byByZW1vdmUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgcmVtb3ZlKFJlZmVyZW5jZSByZWZlcmVuY2UpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgPGNvZGU+UmVmZXJlbmNlTGlzdDwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBzaXplIG9mIHRoZSA8Y29kZT5SZWZlcmVuY2VMaXN0PC9jb2RlPi4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHNpemUoKTsKKworICAgIC8qKgorICAgICAqIEluZGljYXRlcyBpZiB0aGUgPGNvZGU+UmVmZXJlbmNlTGlzdDwvY29kZT4gaXMgZW1wdHkuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIDxjb2RlPjxiPnRydWU8L2I+PC9jb2RlPiBpZiB0aGUgPGNvZGU+UmVmZXJlbmNlTGlzdDwvY29kZT4gaXMKKyAgICAgKiAgICAgZW1wdHksIGVsc2UgPGNvZGU+PGI+ZmFsc2U8L2I+PC9jb2RlPi4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0VtcHR5KCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGFuIDxjb2RlPkl0ZXJhdG9yPC9jb2RlPiBvdmVyIGFsbCB0aGUgPGNvZGU+UmVmZXJlbmNlPC9jb2RlPnMKKyAgICAgKiBjb250YXRpbmVkIGluIHRoaXMgPGNvZGU+UmVmZXJlbmNlTGlzdDwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIEl0ZXJhdG9yLgorICAgICAqLworICAgIHB1YmxpYyBJdGVyYXRvciBnZXRSZWZlcmVuY2VzKCk7CisKKyAgICAvKioKKyAgICAgKiA8Y29kZT5EYXRhUmVmZXJlbmNlPC9jb2RlPiBmYWN0b3J5IG1ldGhvZC4gUmV0dXJucyBhCisgICAgICogPGNvZGU+RGF0YVJlZmVyZW5jZTwvY29kZT4uCisgICAgICogQHBhcmFtIHVyaQorICAgICAqIEByZXR1cm4KKyAgICAgKi8KKyAgICBwdWJsaWMgUmVmZXJlbmNlIG5ld0RhdGFSZWZlcmVuY2UoU3RyaW5nIHVyaSk7CisKKyAgICAvKioKKyAgICAgKiA8Y29kZT5LZXlSZWZlcmVuY2U8L2NvZGU+IGZhY3RvcnkgbWV0aG9kLiBSZXR1cm5zIGEKKyAgICAgKiA8Y29kZT5LZXlSZWZlcmVuY2U8L2NvZGU+LgorICAgICAqIEBwYXJhbSB1cmkKKyAgICAgKiBAcmV0dXJuCisgICAgICovCisgICAgcHVibGljIFJlZmVyZW5jZSBuZXdLZXlSZWZlcmVuY2UoU3RyaW5nIHVyaSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvZW5jcnlwdGlvbi9UcmFuc2Zvcm1zLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvZW5jcnlwdGlvbi9UcmFuc2Zvcm1zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJjODU3MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9lbmNyeXB0aW9uL1RyYW5zZm9ybXMuamF2YQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0ICAyMDAzLTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5lbmNyeXB0aW9uOworCisKKworCisvKioKKyAqIEEgY29udGFpbmVyIGZvciA8Y29kZT5kczpUcmFuc2Zvcm08L2NvZGU+cy4KKyAqIDxwPgorICogSXQgaXMgZGVmaW5lZCBhcyBmb2xsb3dzOgorICogPHhtcD4KKyAqIDxjb21wbGV4VHlwZSBuYW1lPSdUcmFuc2Zvcm1zVHlwZSc+CisgKiAgICAgPHNlcXVlbmNlPgorICogICAgICAgICA8ZWxlbWVudCByZWY9J2RzOlRyYW5zZm9ybScgbWF4T2NjdXJzPSd1bmJvdW5kZWQnLz4KKyAqICAgICA8L3NlcXVlbmNlPgorICogPC9jb21wbGV4VHlwZT4KKyAqIDwveG1wPgorICoKKyAqIEBhdXRob3IgQXhsIE1hdHRoZXVzCisgKiBAc2VlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmVuY3J5cHRpb24uQ2lwaGVyUmVmZXJlbmNlCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgVHJhbnNmb3JtcyB7CisgICAgLyoqCisgICAgICogUmV0dXJucyBhbiA8Y29kZT5JdGVyYXRvcjwvY29kZT4gb3ZlciBhbGwgdGhlIHRyYW5zZm9ybXMgY29udGFpbmVkIGluCisgICAgICogdGhpcyB0cmFuc2Zvcm0gbGlzdC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gYWxsIHRyYW5zZm9ybXMuCisgICAgICovCisgICAgLyogSXRlcmF0b3IgZ2V0VHJhbnNmb3JtcygpOyAqLworCisgICAgLyoqCisgICAgICogQWRkcyBhIDxjb2RlPmRzOlRyYW5zZm9ybTwvY29kZT4gdG8gdGhlIGxpc3Qgb2YgdHJhbnNmb3Jtcy4KKyAgICAgKgorICAgICAqIEBwYXJhbSB0cmFuc2Zvcm0uCisgICAgICovCisgICAgLyogdm9pZCBhZGRUcmFuc2Zvcm0oVHJhbnNmb3JtIHRyYW5zZm9ybSk7ICovCisKKyAgICAvKioKKyAgICAgKiBSZW1vdmVzIHRoZSBzcGVjaWZpZWQgdHJhbnNmb3JtLgorICAgICAqCisgICAgICogQHBhcmFtIHRyYW5zZm9ybS4KKyAgICAgKi8KKwkvKiAgICB2b2lkIHJlbW92ZVRyYW5zZm9ybShUcmFuc2Zvcm0gdHJhbnNmb3JtKTsgKi8KKworCS8qKgorCSAqIFRlbXBvcmFyeSBtZXRob2QgdG8gdHVybiB0aGUgWE1MRW5jcnlwdGlvbiBUcmFuc2Zvcm1zIGNsYXNzCisJICogaW50byBhIERTIGNsYXNzLiAgVGhlIG1haW4gbG9naWMgaXMgY3VycmVudGx5IGltcGxlbWVudGVkIGluIHRoZQorCSAqIERTIGNsYXNzLCBzbyB3ZSBuZWVkIHRvIGdldCB0byBnZXQgdGhlIGJhc2UgY2xhc3MuCisJICogPHA+CisJICogPGI+Tm90ZTwvYj4gVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHZlcnNpb25zCisgICAgICogQHJldHVybgorCSAqLworCisJb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1zIGdldERTVHJhbnNmb3JtcygpOworCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvZW5jcnlwdGlvbi9YTUxDaXBoZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9lbmNyeXB0aW9uL1hNTENpcGhlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllYjIxMTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvZW5jcnlwdGlvbi9YTUxDaXBoZXIuamF2YQpAQCAtMCwwICsxLDM5MDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwMy0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZW5jcnlwdGlvbjsKKworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLlN0cmluZ1JlYWRlcjsKK2ltcG9ydCBqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb247CitpbXBvcnQgamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LktleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IGphdmF4LmNyeXB0by5CYWRQYWRkaW5nRXhjZXB0aW9uOworaW1wb3J0IGphdmF4LmNyeXB0by5DaXBoZXI7CitpbXBvcnQgamF2YXguY3J5cHRvLklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb247CitpbXBvcnQgamF2YXguY3J5cHRvLk5vU3VjaFBhZGRpbmdFeGNlcHRpb247CitpbXBvcnQgamF2YXguY3J5cHRvLnNwZWMuSXZQYXJhbWV0ZXJTcGVjOworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb247CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5hbGdvcml0aG1zLkpDRU1hcHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5hbGdvcml0aG1zLk1lc3NhZ2VEaWdlc3RBbGdvcml0aG07CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5DYW5vbmljYWxpemVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLktleUluZm87CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5rZXlyZXNvbHZlci5LZXlSZXNvbHZlckV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmtleXJlc29sdmVyLmltcGxlbWVudGF0aW9ucy5FbmNyeXB0ZWRLZXlSZXNvbHZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuSW52YWxpZFRyYW5zZm9ybUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkJhc2U2NDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuRWxlbWVudFByb3h5OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkVuY3J5cHRpb25Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwudXRpbHMuVVJJOworaW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnRGcmFnbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5hbWVkTm9kZU1hcDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OworaW1wb3J0IG9yZy54bWwuc2F4LklucHV0U291cmNlOworaW1wb3J0IG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbjsKKworLyoqCisgKiA8Y29kZT5YTUxDaXBoZXI8L2NvZGU+IGVuY3J5cHRzIGFuZCBkZWNyeXB0cyB0aGUgY29udGVudHMgb2YKKyAqIDxjb2RlPkRvY3VtZW50PC9jb2RlPnMsIDxjb2RlPkVsZW1lbnQ8L2NvZGU+cyBhbmQgPGNvZGU+RWxlbWVudDwvY29kZT4KKyAqIGNvbnRlbnRzLiBJdCB3YXMgZGVzaWduZWQgdG8gcmVzZW1ibGUgPGNvZGU+amF2YXguY3J5cHRvLkNpcGhlcjwvY29kZT4gaW4KKyAqIG9yZGVyIHRvIGZhY2lsaXRhdGUgdW5kZXJzdGFuZGluZyBvZiBpdHMgZnVuY3Rpb25pbmcuCisgKgorICogQGF1dGhvciBBeGwgTWF0dGhldXMgKFN1biBNaWNyb3N5c3RlbXMpCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubgorICovCitwdWJsaWMgY2xhc3MgWE1MQ2lwaGVyIHsKKworICAgIHByaXZhdGUgc3RhdGljIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZyBsb2dnZXIgPSAKKyAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeS5nZXRMb2coWE1MQ2lwaGVyLmNsYXNzLmdldE5hbWUoKSk7CisKKwkvL0otCisJLyoqIFRyaXBsZSBERVMgRURFICgxOTIgYml0IGtleSkgaW4gQ0JDIG1vZGUgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUUklQTEVERVMgPSAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5BTEdPX0lEX0JMT0NLQ0lQSEVSX1RSSVBMRURFUzsKKyAgICAvKiogQUVTIDEyOCBDaXBoZXIgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBRVNfMTI4ID0gICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5BTEdPX0lEX0JMT0NLQ0lQSEVSX0FFUzEyODsKKyAgICAvKiogQUVTIDI1NiBDaXBoZXIgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBRVNfMjU2ID0gICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5BTEdPX0lEX0JMT0NLQ0lQSEVSX0FFUzI1NjsKKyAgICAvKiogQUVTIDE5MiBDaXBoZXIgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBRVNfMTkyID0gICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5BTEdPX0lEX0JMT0NLQ0lQSEVSX0FFUzE5MjsKKyAgICAvKiogUlNBIDEuNSBDaXBoZXIgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBSU0FfdjFkb3Q1ID0gICAgICAgICAgICAgICAgICAKKyAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5BTEdPX0lEX0tFWVRSQU5TUE9SVF9SU0ExNTsKKyAgICAvKiogUlNBIE9BRVAgQ2lwaGVyICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUlNBX09BRVAgPSAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIEVuY3J5cHRpb25Db25zdGFudHMuQUxHT19JRF9LRVlUUkFOU1BPUlRfUlNBT0FFUDsKKyAgICAvKiogRElGRklFX0hFTExNQU4gQ2lwaGVyICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRElGRklFX0hFTExNQU4gPSAgICAgICAgICAgICAgCisgICAgICAgIEVuY3J5cHRpb25Db25zdGFudHMuQUxHT19JRF9LRVlBR1JFRU1FTlRfREg7CisgICAgLyoqIFRyaXBsZSBERVMgRURFICgxOTIgYml0IGtleSkgaW4gQ0JDIG1vZGUgS0VZV1JBUCovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFJJUExFREVTX0tleVdyYXAgPSAgICAgICAgICAgCisgICAgICAgIEVuY3J5cHRpb25Db25zdGFudHMuQUxHT19JRF9LRVlXUkFQX1RSSVBMRURFUzsKKyAgICAvKiogQUVTIDEyOCBDaXBoZXIgS2V5V3JhcCAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFFU18xMjhfS2V5V3JhcCA9ICAgICAgICAgICAgIAorICAgICAgICBFbmNyeXB0aW9uQ29uc3RhbnRzLkFMR09fSURfS0VZV1JBUF9BRVMxMjg7CisgICAgLyoqIEFFUyAyNTYgQ2lwaGVyIEtleVdyYXAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBRVNfMjU2X0tleVdyYXAgPSAgICAgICAgICAgICAKKyAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5BTEdPX0lEX0tFWVdSQVBfQUVTMjU2OworICAgIC8qKiBBRVMgMTkyIENpcGhlciBLZXlXcmFwICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUVTXzE5Ml9LZXlXcmFwID0gICAgICAgICAgICAgCisgICAgICAgIEVuY3J5cHRpb25Db25zdGFudHMuQUxHT19JRF9LRVlXUkFQX0FFUzE5MjsKKyAgICAvKiogU0hBMSBDaXBoZXIgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTSEExID0gICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgQ29uc3RhbnRzLkFMR09fSURfRElHRVNUX1NIQTE7CisgICAgLyoqIFNIQTI1NiBDaXBoZXIgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTSEEyNTYgPSAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgTWVzc2FnZURpZ2VzdEFsZ29yaXRobS5BTEdPX0lEX0RJR0VTVF9TSEEyNTY7CisgICAgLyoqIFNIQTUxMiBDaXBoZXIgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTSEE1MTIgPSAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgTWVzc2FnZURpZ2VzdEFsZ29yaXRobS5BTEdPX0lEX0RJR0VTVF9TSEE1MTI7CisgICAgLyoqIFJJUEVNRCBDaXBoZXIgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBSSVBFTURfMTYwID0gICAgICAgICAgICAgICAgICAKKyAgICAgICAgTWVzc2FnZURpZ2VzdEFsZ29yaXRobS5BTEdPX0lEX0RJR0VTVF9SSVBFTUQxNjA7CisgICAgLyoqIFhNTCBTaWduYXR1cmUgTlMgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBYTUxfRFNJRyA9ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUzsKKyAgICAvKiogTjE0Q19YTUwgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBOMTRDX1hNTCA9ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fT01JVF9DT01NRU5UUzsKKyAgICAvKiogTjE0Q19YTUwgd2l0aCBjb21tZW50cyovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTjE0Q19YTUxfV0lUSF9DT01NRU5UUyA9ICAgICAgCisgICAgICAgIENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX1dJVEhfQ09NTUVOVFM7CisgICAgLyoqIE4xNENfWE1MIGV4Y2x1aXN2ZSAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVYQ0xfWE1MX04xNEMgPSAgICAgICAgICAgICAgIAorICAgICAgICBDYW5vbmljYWxpemVyLkFMR09fSURfQzE0Tl9FWENMX09NSVRfQ09NTUVOVFM7CisgICAgLyoqIE4xNENfWE1MIGV4Y2x1c2l2ZSB3aXRoIGNvbW1ldG5zKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFWENMX1hNTF9OMTRDX1dJVEhfQ09NTUVOVFMgPSAKKyAgICAgICAgQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fRVhDTF9XSVRIX0NPTU1FTlRTOworICAgIC8qKiBCYXNlNjQgZW5jb2RpbmcgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBCQVNFNjRfRU5DT0RJTkcgPSAgICAgICAgICAgICAKKyAgICAgICAgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1zLlRSQU5TRk9STV9CQVNFNjRfREVDT0RFOworCS8vSisKKyAgICAKKyAgICAvKiogRU5DUllQVCBNb2RlICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRU5DUllQVF9NT0RFID0gQ2lwaGVyLkVOQ1JZUFRfTU9ERTsKKyAgICAvKiogREVDUllQVCBNb2RlICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREVDUllQVF9NT0RFID0gQ2lwaGVyLkRFQ1JZUFRfTU9ERTsKKyAgICAvKiogVU5XUkFQIE1vZGUgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBVTldSQVBfTU9ERSAgPSBDaXBoZXIuVU5XUkFQX01PREU7CisgICAgLyoqIFdSQVAgTW9kZSAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFdSQVBfTU9ERSAgICA9IENpcGhlci5XUkFQX01PREU7CisJCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEVOQ19BTEdPUklUSE1TID0gVFJJUExFREVTICsgIlxuIiArCisgICAgICAgIEFFU18xMjggKyAiXG4iICsgQUVTXzI1NiArICJcbiIgKyBBRVNfMTkyICsgIlxuIiArIFJTQV92MWRvdDUgKyAiXG4iICsKKyAgICAgICAgUlNBX09BRVAgKyAiXG4iICsgVFJJUExFREVTX0tleVdyYXAgKyAiXG4iICsgQUVTXzEyOF9LZXlXcmFwICsgIlxuIiArCisgICAgICAgIEFFU18yNTZfS2V5V3JhcCArICJcbiIgKyBBRVNfMTkyX0tleVdyYXArICJcbiI7CisJCisJLyoqIENpcGhlciBjcmVhdGVkIGR1cmluZyBpbml0aWFsaXNhdGlvbiB0aGF0IGlzIHVzZWQgZm9yIGVuY3J5cHRpb24gKi8KKyAgICBwcml2YXRlIENpcGhlciBfY29udGV4dENpcGhlcjsKKwkvKiogTW9kZSB0aGF0IHRoZSBYTUxDaXBoZXIgb2JqZWN0IGlzIG9wZXJhdGluZyBpbiAqLworICAgIHByaXZhdGUgaW50IF9jaXBoZXJNb2RlID0gSW50ZWdlci5NSU5fVkFMVUU7CisJLyoqIFVSSSBvZiBhbGdvcml0aG0gdGhhdCBpcyBiZWluZyB1c2VkIGZvciBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbiAqLworICAgIHByaXZhdGUgU3RyaW5nIF9hbGdvcml0aG0gPSBudWxsOworCS8qKiBDcnlwdG9ncmFwaGljIHByb3ZpZGVyIHJlcXVlc3RlZCBieSBjYWxsZXIgKi8KKwlwcml2YXRlIFN0cmluZyBfcmVxdWVzdGVkSkNFUHJvdmlkZXIgPSBudWxsOworCS8qKiBIb2xkcyBjMTRuIHRvIHNlcmlhbGl6ZSwgaWYgaW5pdGlhbGl6ZWQgdGhlbiBfYWx3YXlzXyB1c2UgdGhpcyBjMTRuIHRvIHNlcmlhbGl6ZSAqLworCXByaXZhdGUgQ2Fub25pY2FsaXplciBfY2Fub247CisJLyoqIFVzZWQgZm9yIGNyZWF0aW9uIG9mIERPTSBub2RlcyBpbiBXUkFQIGFuZCBFTkNSWVBUIG1vZGVzICovCisgICAgcHJpdmF0ZSBEb2N1bWVudCBfY29udGV4dERvY3VtZW50OworCS8qKiBJbnN0YW5jZSBvZiBmYWN0b3J5IHVzZWQgdG8gY3JlYXRlIFhNTCBFbmNyeXB0aW9uIG9iamVjdHMgKi8KKyAgICBwcml2YXRlIEZhY3RvcnkgX2ZhY3Rvcnk7CisJLyoqIEludGVybmFsIHNlcmlhbGl6ZXIgY2xhc3MgZm9yIGdvaW5nIHRvL2Zyb20gVVRGLTggKi8KKyAgICBwcml2YXRlIFNlcmlhbGl6ZXIgX3NlcmlhbGl6ZXI7CisKKwkvKiogTG9jYWwgY29weSBvZiB1c2VyJ3Mga2V5ICovCisJcHJpdmF0ZSBLZXkgX2tleTsKKwkvKiogTG9jYWwgY29weSBvZiB0aGUga2VrICh1c2VkIHRvIGRlY3J5cHQgRW5jcnlwdGVkS2V5cyBkdXJpbmcgYQorICAgICAqICBERUNSWVBUX01PREUgb3BlcmF0aW9uICovCisJcHJpdmF0ZSBLZXkgX2tlazsKKworCS8vIFRoZSBFbmNyeXB0ZWRLZXkgYmVpbmcgYnVpbHQgKHBhcnQgb2YgYSBXUkFQIG9wZXJhdGlvbikgb3IgcmVhZAorCS8vIChwYXJ0IG9mIGFuIFVOV1JBUCBvcGVyYXRpb24pCisKKwlwcml2YXRlIEVuY3J5cHRlZEtleSBfZWs7CisKKwkvLyBUaGUgRW5jcnlwdGVkRGF0YSBiZWluZyBidWlsdCAocGFydCBvZiBhIFdSQVAgb3BlcmF0aW9uKSBvciByZWFkCisJLy8gKHBhcnQgb2YgYW4gVU5XUkFQIG9wZXJhdGlvbikKKworCXByaXZhdGUgRW5jcnlwdGVkRGF0YSBfZWQ7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgbmV3IDxjb2RlPlhNTENpcGhlcjwvY29kZT4uCisgICAgICoKKyAgICAgKiBAc2luY2UgMS4wLgorICAgICAqLworICAgIHByaXZhdGUgWE1MQ2lwaGVyKCkgeworICAgICAgICBsb2dnZXIuZGVidWcoIkNvbnN0cnVjdGluZyBYTUxDaXBoZXIuLi4iKTsKKworICAgICAgICBfZmFjdG9yeSA9IG5ldyBGYWN0b3J5KCk7CisgICAgICAgIF9zZXJpYWxpemVyID0gbmV3IFNlcmlhbGl6ZXIoKTsKKworICAgIH0KKworICAgIC8qKgorICAgICAqIENoZWNrcyB0byBlbnN1cmUgdGhhdCB0aGUgc3VwcGxpZWQgYWxnb3JpdGhtIGlzIHZhbGlkLgorICAgICAqCisgICAgICogQHBhcmFtIGFsZ29yaXRobSB0aGUgYWxnb3JpdGhtIHRvIGNoZWNrLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgYWxnb3JpdGhtIGlzIHZhbGlkLCBvdGhlcndpc2UgZmFsc2UuCisgICAgICogQHNpbmNlIDEuMC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzVmFsaWRFbmNyeXB0aW9uQWxnb3JpdGhtKFN0cmluZyBhbGdvcml0aG0pIHsKKyAgICAgICAgYm9vbGVhbiByZXN1bHQgPSAoCisgICAgICAgICAgICBhbGdvcml0aG0uZXF1YWxzKFRSSVBMRURFUykgfHwKKyAgICAgICAgICAgIGFsZ29yaXRobS5lcXVhbHMoQUVTXzEyOCkgfHwKKyAgICAgICAgICAgIGFsZ29yaXRobS5lcXVhbHMoQUVTXzI1NikgfHwKKyAgICAgICAgICAgIGFsZ29yaXRobS5lcXVhbHMoQUVTXzE5MikgfHwKKyAgICAgICAgICAgIGFsZ29yaXRobS5lcXVhbHMoUlNBX3YxZG90NSkgfHwKKyAgICAgICAgICAgIGFsZ29yaXRobS5lcXVhbHMoUlNBX09BRVApIHx8CisgICAgICAgICAgICBhbGdvcml0aG0uZXF1YWxzKFRSSVBMRURFU19LZXlXcmFwKSB8fAorICAgICAgICAgICAgYWxnb3JpdGhtLmVxdWFscyhBRVNfMTI4X0tleVdyYXApIHx8CisgICAgICAgICAgICBhbGdvcml0aG0uZXF1YWxzKEFFU18yNTZfS2V5V3JhcCkgfHwKKyAgICAgICAgICAgIGFsZ29yaXRobS5lcXVhbHMoQUVTXzE5Ml9LZXlXcmFwKQorICAgICAgICApOworCisgICAgICAgIHJldHVybiAocmVzdWx0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGFuIDxjb2RlPlhNTENpcGhlcjwvY29kZT4gdGhhdCBpbXBsZW1lbnRzIHRoZSBzcGVjaWZpZWQKKyAgICAgKiB0cmFuc2Zvcm1hdGlvbiBhbmQgb3BlcmF0ZXMgb24gdGhlIHNwZWNpZmllZCBjb250ZXh0IGRvY3VtZW50LgorICAgICAqIDxwPgorICAgICAqIElmIHRoZSBkZWZhdWx0IHByb3ZpZGVyIHBhY2thZ2Ugc3VwcGxpZXMgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlCisgICAgICogcmVxdWVzdGVkIHRyYW5zZm9ybWF0aW9uLCBhbiBpbnN0YW5jZSBvZiBDaXBoZXIgY29udGFpbmluZyB0aGF0CisgICAgICogaW1wbGVtZW50YXRpb24gaXMgcmV0dXJuZWQuIElmIHRoZSB0cmFuc2Zvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIGluCisgICAgICogdGhlIGRlZmF1bHQgcHJvdmlkZXIgcGFja2FnZSwgb3RoZXIgcHJvdmlkZXIgcGFja2FnZXMgYXJlIHNlYXJjaGVkLgorICAgICAqIDxwPgorICAgICAqIDxiPk5PVEU8c3ViPjE8L3N1Yj46PC9iPiBUaGUgdHJhbnNmb3JtYXRpb24gbmFtZSBkb2VzIG5vdCBmb2xsb3cgdGhlIHNhbWUKKyAgICAgKiBwYXR0ZXJuIGFzIHRoYXQgb3VsaW5lZCBpbiB0aGUgSmF2YSBDcnlwdG9ncmFwaHkgRXh0ZW5zaW9uIFJlZmVyZW5jZQorICAgICAqIEd1aWRlIGJ1dCByYXRoZXIgdGhhdCBzcGVjaWZpZWQgYnkgdGhlIFhNTCBFbmNyeXB0aW9uIFN5bnRheCBhbmQKKyAgICAgKiBQcm9jZXNzaW5nIGRvY3VtZW50LiBUaGUgcmF0aW9uYWwgYmVoaW5kIHRoaXMgaXMgdG8gbWFrZSBpdCBlYXNpZXIgZm9yIGEKKyAgICAgKiBub3ZpY2UgYXQgd3JpdGluZyBKYXZhIEVuY3J5cHRpb24gc29mdHdhcmUgdG8gdXNlIHRoZSBsaWJyYXJ5LgorICAgICAqIDxwPgorICAgICAqIDxiPk5PVEU8c3ViPjI8L3N1Yj46PC9iPiA8Y29kZT5nZXRJbnN0YW5jZSgpPC9jb2RlPiBkb2VzIG5vdCBmb2xsb3cgdGhlCisgICAgICogc2FtZSBwYXR0ZXJuIHJlZ2FyZGluZyBleGNlcHRpb25hbCBjb25kaXRpb25zIGFzIHRoYXQgdXNlZCBpbgorICAgICAqIDxjb2RlPmphdmF4LmNyeXB0by5DaXBoZXI8L2NvZGU+LiBJbnN0ZWFkLCBpdCBvbmx5IHRocm93cyBhbgorICAgICAqIDxjb2RlPlhNTEVuY3J5cHRpb25FeGNlcHRpb248L2NvZGU+IHdoaWNoIHdyYXBzIGFuIHVuZGVybHlpbmcgZXhjZXB0aW9uLgorICAgICAqIFRoZSBzdGFjayB0cmFjZSBmcm9tIHRoZSBleGNlcHRpb24gc2hvdWxkIGJlIHNlbGYgZXhwbGFuaXRvcnkuCisgICAgICoKKyAgICAgKiBAcGFyYW0gdHJhbnNmb3JtYXRpb24gdGhlIG5hbWUgb2YgdGhlIHRyYW5zZm9ybWF0aW9uLCBlLmcuLAorICAgICAqICAgPGNvZGU+WE1MQ2lwaGVyLlRSSVBMRURFUzwvY29kZT4gd2hpY2ggaXMgc2hvcnRoYW5kIGZvcgorICAgICAqICAgJnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjdHJpcGxlZGVzLWNiYyZxdW90OworICAgICAqIEB0aHJvd3MgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbgorICAgICAqIEByZXR1cm4gdGhlIFhNTENpcGhlcgorICAgICAqIEBzZWUgamF2YXguY3J5cHRvLkNpcGhlciNnZXRJbnN0YW5jZShqYXZhLmxhbmcuU3RyaW5nKQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgWE1MQ2lwaGVyIGdldEluc3RhbmNlKFN0cmluZyB0cmFuc2Zvcm1hdGlvbikgdGhyb3dzCisgICAgICAgICAgICBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgLy8gc2FuaXR5IGNoZWNrcworICAgICAgICBsb2dnZXIuZGVidWcoIkdldHRpbmcgWE1MQ2lwaGVyLi4uIik7CisgICAgICAgIGlmIChudWxsID09IHRyYW5zZm9ybWF0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJUcmFuc2Zvcm1hdGlvbiB1bmV4cGVjdGVkbHkgbnVsbC4uLiIpOworICAgICAgICBpZighaXNWYWxpZEVuY3J5cHRpb25BbGdvcml0aG0odHJhbnNmb3JtYXRpb24pKQorICAgICAgICAgICAgbG9nZ2VyLndhcm4oIkFsZ29yaXRobSBub24tc3RhbmRhcmQsIGV4cGVjdGVkIG9uZSBvZiAiICsgRU5DX0FMR09SSVRITVMpOworCisJWE1MQ2lwaGVyIGluc3RhbmNlID0gbmV3IFhNTENpcGhlcigpOworCisgICAgICAgIGluc3RhbmNlLl9hbGdvcml0aG0gPSB0cmFuc2Zvcm1hdGlvbjsKKwlpbnN0YW5jZS5fa2V5ID0gbnVsbDsKKwlpbnN0YW5jZS5fa2VrID0gbnVsbDsKKworCS8qIENyZWF0ZSBhIGNhbm9uaWNhbGlzZXIgLSB1c2VkIHdoZW4gc2VyaWFsaXNpbmcgRE9NIHRvIG9jdGV0cworCSAqIHByaW9yIHRvIGVuY3J5cHRpb24gKGFuZCBmb3IgdGhlIHJldmVyc2UpICovCisKKwl0cnkgeworCSAgICBpbnN0YW5jZS5fY2Fub24gPSBDYW5vbmljYWxpemVyLmdldEluc3RhbmNlCisJCQkoQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fV0lUSF9DT01NRU5UUyk7CisgICAgICAgICAgICAKKwl9IGNhdGNoIChJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiBpY2UpIHsKKwkgICAgdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oImVtcHR5IiwgaWNlKTsKKwl9CisKKwlTdHJpbmcgamNlQWxnb3JpdGhtID0gSkNFTWFwcGVyLnRyYW5zbGF0ZVVSSXRvSkNFSUQodHJhbnNmb3JtYXRpb24pOworCisJdHJ5IHsKKyAgICAgICAgICAgIGluc3RhbmNlLl9jb250ZXh0Q2lwaGVyID0gQ2lwaGVyLmdldEluc3RhbmNlKGpjZUFsZ29yaXRobSk7CisgICAgICAgICAgICBsb2dnZXIuZGVidWcoImNpaHBlci5hbGdvcml0bSA9ICIgKworICAgICAgICAgICAgaW5zdGFuY2UuX2NvbnRleHRDaXBoZXIuZ2V0QWxnb3JpdGhtKCkpOworICAgICAgICB9IGNhdGNoIChOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24gbnNhZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oImVtcHR5IiwgbnNhZSk7CisgICAgICAgIH0gY2F0Y2ggKE5vU3VjaFBhZGRpbmdFeGNlcHRpb24gbnNwZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oImVtcHR5IiwgbnNwZSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gKGluc3RhbmNlKTsKKyAgICB9CisKKwkvKioKKwkgKiBSZXR1cm5zIGFuIDxjb2RlPlhNTENpcGhlcjwvY29kZT4gdGhhdCBpbXBsZW1lbnRzIHRoZSBzcGVjaWZpZWQKKwkgKiB0cmFuc2Zvcm1hdGlvbiwgb3BlcmF0ZXMgb24gdGhlIHNwZWNpZmllZCBjb250ZXh0IGRvY3VtZW50IGFuZCBzZXJpYWxpemVzCisJICogdGhlIGRvY3VtZW50IHdpdGggdGhlIHNwZWNpZmllZCBjYW5vbmljYWxpemF0aW9uIGFsZ29yaXRobSBiZWZvcmUgaXQKKwkgKiBlbmNyeXB0cyB0aGUgZG9jdW1lbnQuCisJICogPHA+CisJICogCisJICogQHBhcmFtIHRyYW5zZm9ybWF0aW9uCXRoZSBuYW1lIG9mIHRoZSB0cmFuc2Zvcm1hdGlvbiwgZS5nLiwKKwkgKiAgIAkJCQkJCTxjb2RlPlhNTENpcGhlci5UUklQTEVERVM8L2NvZGU+IHdoaWNoIGlzIAorCSAqIAkJCQkJCQlzaG9ydGhhbmQgZm9yCisJICogICAJCQkJJnF1b3Q7aHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjdHJpcGxlZGVzLWNiYyZxdW90OworCSAqIEBwYXJhbSBjYW5vbgkJCQl0aGUgbmFtZSBvZiB0aGUgYzE0biBhbGdvcml0aG0sIGlmCisJICogCQkJCQkJCTxjb2RlPm51bGw8L2NvZGU+IHVzZSBzdGFuZGFyZCBzZXJpYWxpemVyIAorCSAqIEByZXR1cm4KKwkgKiBAdGhyb3dzIFhNTEVuY3J5cHRpb25FeGNlcHRpb24KKwkgKi8KKworCXB1YmxpYyBzdGF0aWMgWE1MQ2lwaGVyIGdldEluc3RhbmNlKFN0cmluZyB0cmFuc2Zvcm1hdGlvbiwgU3RyaW5nIGNhbm9uKQorCQl0aHJvd3MgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbiB7CisJCVhNTENpcGhlciBpbnN0YW5jZSA9IFhNTENpcGhlci5nZXRJbnN0YW5jZSh0cmFuc2Zvcm1hdGlvbik7CisKKwkJaWYgKGNhbm9uICE9IG51bGwpIHsKKwkJCXRyeSB7CisJCQkJaW5zdGFuY2UuX2Nhbm9uID0gQ2Fub25pY2FsaXplci5nZXRJbnN0YW5jZShjYW5vbik7CisJCQl9IGNhdGNoIChJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiBpY2UpIHsKKwkJCQl0aHJvdyBuZXcgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigiZW1wdHkiLCBpY2UpOworCQkJfQorCQl9CisKKwkJcmV0dXJuIGluc3RhbmNlOworCX0KKworCisgICAgLyoqCisgICAgICogUmV0dXJucyBhbiA8Y29kZT5YTUxDaXBoZXI8L2NvZGU+IHRoYXQgaW1wbGVtZW50cyB0aGUgc3BlY2lmaWVkCisgICAgICogdHJhbnNmb3JtYXRpb24gYW5kIG9wZXJhdGVzIG9uIHRoZSBzcGVjaWZpZWQgY29udGV4dCBkb2N1bWVudC4KKyAgICAgKgorICAgICAqIEBwYXJhbSB0cmFuc2Zvcm1hdGlvbiB0aGUgbmFtZSBvZiB0aGUgdHJhbnNmb3JtYXRpb24sIGUuZy4sCisgICAgICogICA8Y29kZT5YTUxDaXBoZXIuVFJJUExFREVTPC9jb2RlPiB3aGljaCBpcyBzaG9ydGhhbmQgZm9yCisgICAgICogICAmcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyN0cmlwbGVkZXMtY2JjJnF1b3Q7CisgICAgICogQHBhcmFtIHByb3ZpZGVyIHRoZSBKQ0UgcHJvdmlkZXIgdGhhdCBzdXBwbGllcyB0aGUgdHJhbnNmb3JtYXRpb24KKyAgICAgKiBAcmV0dXJuIHRoZSBYTUxDaXBoZXIKKyAgICAgKiBAdGhyb3dzIFhNTEVuY3J5cHRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFhNTENpcGhlciBnZXRQcm92aWRlckluc3RhbmNlKFN0cmluZyB0cmFuc2Zvcm1hdGlvbiwgU3RyaW5nIHByb3ZpZGVyKQorICAgICAgICAgICAgdGhyb3dzIFhNTEVuY3J5cHRpb25FeGNlcHRpb24geworICAgICAgICAvLyBzYW5pdHkgY2hlY2tzCisgICAgICAgIGxvZ2dlci5kZWJ1ZygiR2V0dGluZyBYTUxDaXBoZXIuLi4iKTsKKyAgICAgICAgaWYgKG51bGwgPT0gdHJhbnNmb3JtYXRpb24pCisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oIlRyYW5zZm9ybWF0aW9uIHVuZXhwZWN0ZWRseSBudWxsLi4uIik7CisgICAgICAgIGlmIChudWxsID09IHByb3ZpZGVyKQorICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJQcm92aWRlciB1bmV4cGVjdGVkbHkgbnVsbC4uIik7CisgICAgICAgIGlmICghaXNWYWxpZEVuY3J5cHRpb25BbGdvcml0aG0odHJhbnNmb3JtYXRpb24pKQorICAgICAgICAgICAgbG9nZ2VyLndhcm4oIkFsZ29yaXRobSBub24tc3RhbmRhcmQsIGV4cGVjdGVkIG9uZSBvZiAiICsgRU5DX0FMR09SSVRITVMpOworCisJWE1MQ2lwaGVyIGluc3RhbmNlID0gbmV3IFhNTENpcGhlcigpOworCisgICAgICAgIGluc3RhbmNlLl9hbGdvcml0aG0gPSB0cmFuc2Zvcm1hdGlvbjsKKwlpbnN0YW5jZS5fcmVxdWVzdGVkSkNFUHJvdmlkZXIgPSBwcm92aWRlcjsKKwlpbnN0YW5jZS5fa2V5ID0gbnVsbDsKKwlpbnN0YW5jZS5fa2VrID0gbnVsbDsKKworCS8qIENyZWF0ZSBhIGNhbm9uaWNhbGlzZXIgLSB1c2VkIHdoZW4gc2VyaWFsaXNpbmcgRE9NIHRvIG9jdGV0cworCSAqIHByaW9yIHRvIGVuY3J5cHRpb24gKGFuZCBmb3IgdGhlIHJldmVyc2UpICovCisKKwl0cnkgeworCSAgICBpbnN0YW5jZS5fY2Fub24gPSBDYW5vbmljYWxpemVyLmdldEluc3RhbmNlCisJCShDYW5vbmljYWxpemVyLkFMR09fSURfQzE0Tl9XSVRIX0NPTU1FTlRTKTsKKwl9IGNhdGNoIChJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiBpY2UpIHsKKwkgICAgdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oImVtcHR5IiwgaWNlKTsKKwl9CisKKyAgICAgICAgdHJ5IHsKKwkgICAgU3RyaW5nIGpjZUFsZ29yaXRobSA9IEpDRU1hcHBlci50cmFuc2xhdGVVUkl0b0pDRUlEKHRyYW5zZm9ybWF0aW9uKTsKKworICAgICAgICAgICAgaW5zdGFuY2UuX2NvbnRleHRDaXBoZXIgPSBDaXBoZXIuZ2V0SW5zdGFuY2UoamNlQWxnb3JpdGhtLCBwcm92aWRlcik7CisKKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiY2lwaGVyLl9hbGdvcml0aG0gPSAiICsKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS5fY29udGV4dENpcGhlci5nZXRBbGdvcml0aG0oKSk7CisgICAgICAgICAgICBsb2dnZXIuZGVidWcoInByb3ZpZGVyLm5hbWUgPSAiICsgcHJvdmlkZXIpOworICAgICAgICB9IGNhdGNoIChOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24gbnNhZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oImVtcHR5IiwgbnNhZSk7CisgICAgICAgIH0gY2F0Y2ggKE5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIG5zcHJlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigiZW1wdHkiLCBuc3ByZSk7CisgICAgICAgIH0gY2F0Y2ggKE5vU3VjaFBhZGRpbmdFeGNlcHRpb24gbnNwZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oImVtcHR5IiwgbnNwZSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gKGluc3RhbmNlKTsKKyAgICB9CisJCisJLyoqCisJICogUmV0dXJucyBhbiA8Y29kZT5YTUxDaXBoZXI8L2NvZGU+IHRoYXQgaW1wbGVtZW50cyB0aGUgc3BlY2lmaWVkCisgICAgICogdHJhbnNmb3JtYXRpb24sIG9wZXJhdGVzIG9uIHRoZSBzcGVjaWZpZWQgY29udGV4dCBkb2N1bWVudCBhbmQgc2VyaWFsaXplcworICAgICAqIHRoZSBkb2N1bWVudCB3aXRoIHRoZSBzcGVjaWZpZWQgY2Fub25pY2FsaXphdGlvbiBhbGdvcml0aG0gYmVmb3JlIGl0CisgICAgICogZW5jcnlwdHMgdGhlIGRvY3VtZW50LgorICAgICAqIDxwPgorCSAqIAorCSAqIEBwYXJhbSB0cmFuc2Zvcm1hdGlvbgl0aGUgbmFtZSBvZiB0aGUgdHJhbnNmb3JtYXRpb24sIGUuZy4sCisgICAgICogICAJCQkJCQk8Y29kZT5YTUxDaXBoZXIuVFJJUExFREVTPC9jb2RlPiB3aGljaCBpcyAKKyAgICAgKiAJCQkJCQkJc2hvcnRoYW5kIGZvcgorICAgICAqICAgCQkJCSZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3RyaXBsZWRlcy1jYmMmcXVvdDsKKwkgKiBAcGFyYW0gcHJvdmlkZXIgIAkJdGhlIEpDRSBwcm92aWRlciB0aGF0IHN1cHBsaWVzIHRoZSB0cmFuc2Zvcm1hdGlvbgorCSAqIEBwYXJhbSBjYW5vbgkJCQl0aGUgbmFtZSBvZiB0aGUgYzE0biBhbGdvcml0aG0sIGlmCisJICogCQkJCQkJCTxjb2RlPm51bGw8L2NvZGU+IHVzZSBzdGFuZGFyZCBzZXJpYWxpemVyIAorCSAqIEByZXR1cm4KKwkgKiBAdGhyb3dzIFhNTEVuY3J5cHRpb25FeGNlcHRpb24KKwkgKi8KKwlwdWJsaWMgc3RhdGljIFhNTENpcGhlciBnZXRQcm92aWRlckluc3RhbmNlKAorCQlTdHJpbmcgdHJhbnNmb3JtYXRpb24sCisJCVN0cmluZyBwcm92aWRlciwKKwkJU3RyaW5nIGNhbm9uKQorCQl0aHJvd3MgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbiB7CisKKwkJWE1MQ2lwaGVyIGluc3RhbmNlID0gWE1MQ2lwaGVyLmdldFByb3ZpZGVySW5zdGFuY2UodHJhbnNmb3JtYXRpb24sIHByb3ZpZGVyKTsKKwkJaWYgKGNhbm9uICE9IG51bGwpIHsKKwkJCXRyeSB7CisJCQkJaW5zdGFuY2UuX2Nhbm9uID0gQ2Fub25pY2FsaXplci5nZXRJbnN0YW5jZShjYW5vbik7CisJCQl9IGNhdGNoIChJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiBpY2UpIHsKKwkJCQl0aHJvdyBuZXcgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigiZW1wdHkiLCBpY2UpOworCQkJfQorCQl9CisJCXJldHVybiBpbnN0YW5jZTsKKwl9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGFuIDxjb2RlPlhNTENpcGhlcjwvY29kZT4gdGhhdCBpbXBsZW1lbnRzIG5vIHNwZWNpZmljCisJICogdHJhbnNmb3JtYXRpb24sIGFuZCBjYW4gdGhlcmVmb3JlIG9ubHkgYmUgdXNlZCBmb3IgZGVjcnlwdCBvcgorCSAqIHVud3JhcCBvcGVyYXRpb25zIHdoZXJlIHRoZSBlbmNyeXB0aW9uIG1ldGhvZCBpcyBkZWZpbmVkIGluIHRoZSAKKwkgKiA8Y29kZT5FbmNyeXB0aW9uTWV0aG9kPC9jb2RlPiBlbGVtZW50LgorCSAqCisgICAgICogQHJldHVybiBUaGUgWE1MQ2lwaGVyCisgICAgICogQHRocm93cyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uCisgICAgICovCisKKyAgICBwdWJsaWMgc3RhdGljIFhNTENpcGhlciBnZXRJbnN0YW5jZSgpCisgICAgICAgICAgICB0aHJvd3MgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIC8vIHNhbml0eSBjaGVja3MKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCJHZXR0aW5nIFhNTENpcGhlciBmb3Igbm8gdHJhbnNmb3JtYXRpb24uLi4iKTsKKworCQlYTUxDaXBoZXIgaW5zdGFuY2UgPSBuZXcgWE1MQ2lwaGVyKCk7CisKKyAgICAgICAgaW5zdGFuY2UuX2FsZ29yaXRobSA9IG51bGw7CisJCWluc3RhbmNlLl9yZXF1ZXN0ZWRKQ0VQcm92aWRlciA9IG51bGw7CisJCWluc3RhbmNlLl9rZXkgPSBudWxsOworCQlpbnN0YW5jZS5fa2VrID0gbnVsbDsKKwkJaW5zdGFuY2UuX2NvbnRleHRDaXBoZXIgPSBudWxsOworCisJCS8qIENyZWF0ZSBhIGNhbm9uaWNhbGlzZXIgLSB1c2VkIHdoZW4gc2VyaWFsaXNpbmcgRE9NIHRvIG9jdGV0cworCQkgKiBwcmlvciB0byBlbmNyeXB0aW9uIChhbmQgZm9yIHRoZSByZXZlcnNlKSAqLworCisJCXRyeSB7CisJCQlpbnN0YW5jZS5fY2Fub24gPSBDYW5vbmljYWxpemVyLmdldEluc3RhbmNlCisJCQkJKENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX1dJVEhfQ09NTUVOVFMpOworCQl9IGNhdGNoIChJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiBpY2UpIHsKKwkJCXRocm93IG5ldyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIGljZSk7CisJCX0KKworICAgICAgICByZXR1cm4gKGluc3RhbmNlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGFuIDxjb2RlPlhNTENpcGhlcjwvY29kZT4gdGhhdCBpbXBsZW1lbnRzIG5vIHNwZWNpZmljCisgICAgICogdHJhbnNmb3JtYXRpb24sIGFuZCBjYW4gdGhlcmVmb3JlIG9ubHkgYmUgdXNlZCBmb3IgZGVjcnlwdCBvcgorICAgICAqIHVud3JhcCBvcGVyYXRpb25zIHdoZXJlIHRoZSBlbmNyeXB0aW9uIG1ldGhvZCBpcyBkZWZpbmVkIGluIHRoZSAKKyAgICAgKiA8Y29kZT5FbmNyeXB0aW9uTWV0aG9kPC9jb2RlPiBlbGVtZW50LgorICAgICAqCisgICAgICogQWxsb3dzIHRoZSBjYWxsZXIgdG8gc3BlY2lmeSBhIHByb3ZpZGVyIHRoYXQgd2lsbCBiZSB1c2VkIGZvcgorICAgICAqIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9ucy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwcm92aWRlciB0aGUgSkNFIHByb3ZpZGVyIHRoYXQgc3VwcGxpZXMgdGhlIGNyeXB0b2dyYXBoaWMKKyAgICAgKiBuZWVkcy4KKyAgICAgKiBAcmV0dXJuIHRoZSBYTUxDaXBoZXIKKyAgICAgKiBAdGhyb3dzIFhNTEVuY3J5cHRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFhNTENpcGhlciBnZXRQcm92aWRlckluc3RhbmNlKFN0cmluZyBwcm92aWRlcikKKyAgICAgICAgICAgIHRocm93cyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgLy8gc2FuaXR5IGNoZWNrcworCisgICAgICAgIGxvZ2dlci5kZWJ1ZygiR2V0dGluZyBYTUxDaXBoZXIsIHByb3ZpZGVyIGJ1dCBubyB0cmFuc2Zvcm1hdGlvbiIpOworICAgICAgICBpZiAobnVsbCA9PSBwcm92aWRlcikKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigiUHJvdmlkZXIgdW5leHBlY3RlZGx5IG51bGwuLiIpOworCisJWE1MQ2lwaGVyIGluc3RhbmNlID0gbmV3IFhNTENpcGhlcigpOworCisgICAgICAgIGluc3RhbmNlLl9hbGdvcml0aG0gPSBudWxsOworCWluc3RhbmNlLl9yZXF1ZXN0ZWRKQ0VQcm92aWRlciA9IHByb3ZpZGVyOworCWluc3RhbmNlLl9rZXkgPSBudWxsOworCWluc3RhbmNlLl9rZWsgPSBudWxsOworCWluc3RhbmNlLl9jb250ZXh0Q2lwaGVyID0gbnVsbDsKKworCXRyeSB7CisJICAgIGluc3RhbmNlLl9jYW5vbiA9IENhbm9uaWNhbGl6ZXIuZ2V0SW5zdGFuY2UKKwkJKENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX1dJVEhfQ09NTUVOVFMpOworCX0gY2F0Y2ggKEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uIGljZSkgeworCSAgICB0aHJvdyBuZXcgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigiZW1wdHkiLCBpY2UpOworCX0KKworICAgICAgICByZXR1cm4gKGluc3RhbmNlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbml0aWFsaXplcyB0aGlzIGNpcGhlciB3aXRoIGEga2V5LgorICAgICAqIDxwPgorICAgICAqIFRoZSBjaXBoZXIgaXMgaW5pdGlhbGl6ZWQgZm9yIG9uZSBvZiB0aGUgZm9sbG93aW5nIGZvdXIgb3BlcmF0aW9uczoKKyAgICAgKiBlbmNyeXB0aW9uLCBkZWNyeXB0aW9uLCBrZXkgd3JhcHBpbmcgb3Iga2V5IHVud3JhcHBpbmcsIGRlcGVuZGluZyBvbiB0aGUKKyAgICAgKiB2YWx1ZSBvZiBvcG1vZGUuCisJICoKKwkgKiBGb3IgV1JBUCBhbmQgRU5DUllQVCBtb2RlcywgdGhpcyBhbHNvIGluaXRpYWxpc2VzIHRoZSBpbnRlcm5hbCAKKwkgKiBFbmNyeXB0ZWRLZXkgb3IgRW5jcnlwdGVkRGF0YSAod2l0aCBhIENpcGhlclZhbHVlKQorCSAqIHN0cnVjdHVyZSB0aGF0IHdpbGwgYmUgdXNlZCBkdXJpbmcgdGhlIGVuc3Vpbmcgb3BlcmF0aW9ucy4gIFRoaXMKKwkgKiBjYW4gYmUgb2J0YWluZWQgKGluIG9yZGVyIHRvIG1vZGlmeSBLZXlJbmZvIGVsZW1lbnRzIGV0Yy4gcHJpb3IgdG8KKwkgKiBmaW5hbGlzaW5nIHRoZSBlbmNyeXB0aW9uKSBieSBjYWxsaW5nIAorCSAqIHtAbGluayAjZ2V0RW5jcnlwdGVkRGF0YX0gb3Ige0BsaW5rICNnZXRFbmNyeXB0ZWRLZXl9LgorICAgICAqCisgICAgICogQHBhcmFtIG9wbW9kZSB0aGUgb3BlcmF0aW9uIG1vZGUgb2YgdGhpcyBjaXBoZXIgKHRoaXMgaXMgb25lIG9mIHRoZQorICAgICAqICAgZm9sbG93aW5nOiBFTkNSWVBUX01PREUsIERFQ1JZUFRfTU9ERSwgV1JBUF9NT0RFIG9yIFVOV1JBUF9NT0RFKQorICAgICAqIEBwYXJhbSBrZXkKKyAgICAgKiBAc2VlIGphdmF4LmNyeXB0by5DaXBoZXIjaW5pdChpbnQsIGphdmEuc2VjdXJpdHkuS2V5KQorICAgICAqIEB0aHJvd3MgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGluaXQoaW50IG9wbW9kZSwgS2V5IGtleSkgdGhyb3dzIFhNTEVuY3J5cHRpb25FeGNlcHRpb24geworICAgICAgICAvLyBzYW5pdHkgY2hlY2tzCisgICAgICAgIGxvZ2dlci5kZWJ1ZygiSW5pdGlhbGl6aW5nIFhNTENpcGhlci4uLiIpOworCisJCV9layA9IG51bGw7CisJCV9lZCA9IG51bGw7CisKKwkJc3dpdGNoIChvcG1vZGUpIHsKKworCQljYXNlIEVOQ1JZUFRfTU9ERSA6CisJCQlsb2dnZXIuZGVidWcoIm9wbW9kZSA9IEVOQ1JZUFRfTU9ERSIpOworCQkJX2VkID0gY3JlYXRlRW5jcnlwdGVkRGF0YShDaXBoZXJEYXRhLlZBTFVFX1RZUEUsICJOTyBWQUxVRSBZRVQiKTsKKwkJCWJyZWFrOworCQljYXNlIERFQ1JZUFRfTU9ERSA6CisJCQlsb2dnZXIuZGVidWcoIm9wbW9kZSA9IERFQ1JZUFRfTU9ERSIpOworCQkJYnJlYWs7CisJCWNhc2UgV1JBUF9NT0RFIDoKKwkJCWxvZ2dlci5kZWJ1Zygib3Btb2RlID0gV1JBUF9NT0RFIik7CisJCQlfZWsgPSBjcmVhdGVFbmNyeXB0ZWRLZXkoQ2lwaGVyRGF0YS5WQUxVRV9UWVBFLCAiTk8gVkFMVUUgWUVUIik7CisJCQlicmVhazsKKwkJY2FzZSBVTldSQVBfTU9ERSA6CisJCQlsb2dnZXIuZGVidWcoIm9wbW9kZSA9IFVOV1JBUF9NT0RFIik7CisJCQlicmVhazsKKwkJZGVmYXVsdCA6CisJCQlsb2dnZXIuZXJyb3IoIk1vZGUgdW5leHBlY3RlZGx5IGludmFsaWQiKTsKKwkJCXRocm93IG5ldyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uKCJJbnZhbGlkIG1vZGUgaW4gaW5pdCIpOworCQl9CisKKyAgICAgICAgX2NpcGhlck1vZGUgPSBvcG1vZGU7CisJCV9rZXkgPSBrZXk7CisKKyAgICB9CisKKwkvKioKKwkgKiBHZXQgdGhlIEVuY3J5cHRlZERhdGEgYmVpbmcgYnVpbGQKKwkgKgorCSAqIFJldHVybnMgdGhlIEVuY3J5cHRlZERhdGEgYmVpbmcgYnVpbHQgZHVyaW5nIGFuIEVOQ1JZUFQgb3BlcmF0aW9uLgorCSAqIFRoaXMgY2FuIHRoZW4gYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMgdG8gYWRkIEtleUluZm8gZWxlbWVudHMgYW5kCisJICogc2V0IG90aGVyIHBhcmFtZXRlcnMuCisJICoKKwkgKiBAcmV0dXJuIFRoZSBFbmNyeXB0ZWREYXRhIGJlaW5nIGJ1aWx0CisJICovCisKKwlwdWJsaWMgRW5jcnlwdGVkRGF0YSBnZXRFbmNyeXB0ZWREYXRhKCkgeworCisJCS8vIFNhbml0eSBjaGVja3MKKwkJbG9nZ2VyLmRlYnVnKCJSZXR1cm5pbmcgRW5jcnlwdGVkRGF0YSIpOworCQlyZXR1cm4gX2VkOworCisJfQorCisJLyoqCisJICogR2V0IHRoZSBFbmNyeXB0ZWREYXRhIGJlaW5nIGJ1aWxkCisJICoKKwkgKiBSZXR1cm5zIHRoZSBFbmNyeXB0ZWREYXRhIGJlaW5nIGJ1aWx0IGR1cmluZyBhbiBFTkNSWVBUIG9wZXJhdGlvbi4KKwkgKiBUaGlzIGNhbiB0aGVuIGJlIHVzZWQgYnkgYXBwbGljYXRpb25zIHRvIGFkZCBLZXlJbmZvIGVsZW1lbnRzIGFuZAorCSAqIHNldCBvdGhlciBwYXJhbWV0ZXJzLgorCSAqCisJICogQHJldHVybiBUaGUgRW5jcnlwdGVkRGF0YSBiZWluZyBidWlsdAorCSAqLworCisJcHVibGljIEVuY3J5cHRlZEtleSBnZXRFbmNyeXB0ZWRLZXkoKSB7CisKKwkJLy8gU2FuaXR5IGNoZWNrcworCQlsb2dnZXIuZGVidWcoIlJldHVybmluZyBFbmNyeXB0ZWRLZXkiKTsKKwkJcmV0dXJuIF9lazsKKwl9CisKKwkvKioKKwkgKiBTZXQgYSBLZXkgRW5jcnlwdGlvbiBLZXkuCisJICogPHA+CisJICogVGhlIEtleSBFbmNyeXB0aW9uIEtleSAoS0VLKSBpcyB1c2VkIGZvciBlbmNyeXB0aW5nL2RlY3J5cHRpbmcKKwkgKiBFbmNyeXB0ZWRLZXkgZWxlbWVudHMuICBCeSBzZXR0aW5nIHRoaXMgc2VwYXJhdGVseSwgdGhlIFhNTENpcGhlcgorCSAqIGNsYXNzIGNhbiBrbm93IHdoZXRoZXIgYSBrZXkgYXBwbGllcyB0byB0aGUgZGF0YSBwYXJ0IG9yIHdyYXBwZWQga2V5CisJICogcGFydCBvZiBhbiBlbmNyeXB0ZWQgb2JqZWN0LgorCSAqCisJICogQHBhcmFtIGtlayBUaGUga2V5IHRvIHVzZSBmb3IgZGUvZW5jcnlwdGluZyBrZXkgZGF0YQorCSAqLworCisJcHVibGljIHZvaWQgc2V0S0VLKEtleSBrZWspIHsKKworCQlfa2VrID0ga2VrOworCisJfQorCisJLyoqCisJICogTWFydGlhbCBhbiBFbmNyeXB0ZWREYXRhCisJICoKKwkgKiBUYWtlcyBhbiBFbmNyeXB0ZWREYXRhIG9iamVjdCBhbmQgcmV0dXJucyBhIERPTSBFbGVtZW50IHRoYXQKKwkgKiByZXByZXNlbnRzIHRoZSBhcHByb3ByaWF0ZSA8Y29kZT5FbmNyeXB0ZWREYXRhPC9jb2RlPgorCSAqIDxwPgorCSAqIDxiPk5vdGU6PC9iPiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gY2FzZXMgd2hlcmUgdGhlIGNvbnRleHQKKwkgKiBkb2N1bWVudCBoYXMgYmVlbiBwYXNzZWQgaW4gdmlhIGEgY2FsbCB0byBkb0ZpbmFsLgorCSAqCisJICogQHBhcmFtIGVuY3J5cHRlZERhdGEgRW5jcnlwdGVkRGF0YSBvYmplY3QgdG8gbWFydGlhbAorCSAqIEByZXR1cm4gdGhlIERPTSA8Y29kZT5FbGVtZW50PC9jb2RlPiByZXByZXNlbnRpbmcgdGhlIHBhc3NlZCBpbgorCSAqIG9iamVjdCAKKyAgICAgKi8KKworCXB1YmxpYyBFbGVtZW50IG1hcnRpYWwoRW5jcnlwdGVkRGF0YSBlbmNyeXB0ZWREYXRhKSB7CisKKwkJcmV0dXJuIChfZmFjdG9yeS50b0VsZW1lbnQgKGVuY3J5cHRlZERhdGEpKTsKKworCX0KKworCS8qKgorCSAqIE1hcnRpYWwgYW4gRW5jcnlwdGVkS2V5CisJICoKKwkgKiBUYWtlcyBhbiBFbmNyeXB0ZWRLZXkgb2JqZWN0IGFuZCByZXR1cm5zIGEgRE9NIEVsZW1lbnQgdGhhdAorCSAqIHJlcHJlc2VudHMgdGhlIGFwcHJvcHJpYXRlIDxjb2RlPkVuY3J5cHRlZEtleTwvY29kZT4KKwkgKgorCSAqIDxwPgorCSAqIDxiPk5vdGU6PC9iPiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gY2FzZXMgd2hlcmUgdGhlIGNvbnRleHQKKwkgKiBkb2N1bWVudCBoYXMgYmVlbiBwYXNzZWQgaW4gdmlhIGEgY2FsbCB0byBkb0ZpbmFsLgorCSAqCisJICogQHBhcmFtIGVuY3J5cHRlZEtleSBFbmNyeXB0ZWRLZXkgb2JqZWN0IHRvIG1hcnRpYWwKKwkgKiBAcmV0dXJuIHRoZSBET00gPGNvZGU+RWxlbWVudDwvY29kZT4gcmVwcmVzZW50aW5nIHRoZSBwYXNzZWQgaW4KKwkgKiBvYmplY3QgKi8KKworCXB1YmxpYyBFbGVtZW50IG1hcnRpYWwoRW5jcnlwdGVkS2V5IGVuY3J5cHRlZEtleSkgeworCisJCXJldHVybiAoX2ZhY3RvcnkudG9FbGVtZW50IChlbmNyeXB0ZWRLZXkpKTsKKworCX0KKworCS8qKgorCSAqIE1hcnRpYWwgYW4gRW5jcnlwdGVkRGF0YQorCSAqCisJICogVGFrZXMgYW4gRW5jcnlwdGVkRGF0YSBvYmplY3QgYW5kIHJldHVybnMgYSBET00gRWxlbWVudCB0aGF0CisJICogcmVwcmVzZW50cyB0aGUgYXBwcm9wcmlhdGUgPGNvZGU+RW5jcnlwdGVkRGF0YTwvY29kZT4KKwkgKgorCSAqIEBwYXJhbSBjb250ZXh0IFRoZSBkb2N1bWVudCB0aGF0IHdpbGwgb3duIHRoZSByZXR1cm5lZCBub2RlcworCSAqIEBwYXJhbSBlbmNyeXB0ZWREYXRhIEVuY3J5cHRlZERhdGEgb2JqZWN0IHRvIG1hcnRpYWwKKwkgKiBAcmV0dXJuIHRoZSBET00gPGNvZGU+RWxlbWVudDwvY29kZT4gcmVwcmVzZW50aW5nIHRoZSBwYXNzZWQgaW4KKwkgKiBvYmplY3QgKi8KKworCXB1YmxpYyBFbGVtZW50IG1hcnRpYWwoRG9jdW1lbnQgY29udGV4dCwgRW5jcnlwdGVkRGF0YSBlbmNyeXB0ZWREYXRhKSB7CisKKwkJX2NvbnRleHREb2N1bWVudCA9IGNvbnRleHQ7CisJCXJldHVybiAoX2ZhY3RvcnkudG9FbGVtZW50IChlbmNyeXB0ZWREYXRhKSk7CisKKwl9CisKKwkvKioKKwkgKiBNYXJ0aWFsIGFuIEVuY3J5cHRlZEtleQorCSAqCisJICogVGFrZXMgYW4gRW5jcnlwdGVkS2V5IG9iamVjdCBhbmQgcmV0dXJucyBhIERPTSBFbGVtZW50IHRoYXQKKwkgKiByZXByZXNlbnRzIHRoZSBhcHByb3ByaWF0ZSA8Y29kZT5FbmNyeXB0ZWRLZXk8L2NvZGU+CisJICoKKwkgKiBAcGFyYW0gY29udGV4dCBUaGUgZG9jdW1lbnQgdGhhdCB3aWxsIG93biB0aGUgY3JlYXRlZCBub2RlcworCSAqIEBwYXJhbSBlbmNyeXB0ZWRLZXkgRW5jcnlwdGVkS2V5IG9iamVjdCB0byBtYXJ0aWFsCisJICogQHJldHVybiB0aGUgRE9NIDxjb2RlPkVsZW1lbnQ8L2NvZGU+IHJlcHJlc2VudGluZyB0aGUgcGFzc2VkIGluCisJICogb2JqZWN0ICovCisKKwlwdWJsaWMgRWxlbWVudCBtYXJ0aWFsKERvY3VtZW50IGNvbnRleHQsIEVuY3J5cHRlZEtleSBlbmNyeXB0ZWRLZXkpIHsKKworCQlfY29udGV4dERvY3VtZW50ID0gY29udGV4dDsKKwkJcmV0dXJuIChfZmFjdG9yeS50b0VsZW1lbnQgKGVuY3J5cHRlZEtleSkpOworCisJfQorCisgICAgLyoqCisgICAgICogRW5jcnlwdHMgYW4gPGNvZGU+RWxlbWVudDwvY29kZT4gYW5kIHJlcGxhY2VzIGl0IHdpdGggaXRzIGVuY3J5cHRlZAorICAgICAqIGNvdW50ZXJwYXJ0IGluIHRoZSBjb250ZXh0IDxjb2RlPkRvY3VtZW50PC9jb2RlPiwgdGhhdCBpcywgdGhlCisgICAgICogPGNvZGU+RG9jdW1lbnQ8L2NvZGU+IHNwZWNpZmllZCB3aGVuIG9uZSBjYWxscworICAgICAqIHtAbGluayAjZ2V0SW5zdGFuY2UoU3RyaW5nKSBnZXRJbnN0YW5jZX0uCisgICAgICoKKyAgICAgKiBAcGFyYW0gZWxlbWVudCB0aGUgPGNvZGU+RWxlbWVudDwvY29kZT4gdG8gZW5jcnlwdC4KKyAgICAgKiBAcmV0dXJuIHRoZSBjb250ZXh0IDxjb2RlPkRvY3VtZW50PC9jb2RlPiB3aXRoIHRoZSBlbmNyeXB0ZWQKKyAgICAgKiAgIDxjb2RlPkVsZW1lbnQ8L2NvZGU+IGhhdmluZyByZXBsYWNlZCB0aGUgc291cmNlIDxjb2RlPkVsZW1lbnQ8L2NvZGU+LgorICAgICAqICBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICAqLworCisgICAgcHJpdmF0ZSBEb2N1bWVudCBlbmNyeXB0RWxlbWVudChFbGVtZW50IGVsZW1lbnQpIHRocm93cyBFeGNlcHRpb257CisgICAgICAgIGxvZ2dlci5kZWJ1ZygiRW5jcnlwdGluZyBlbGVtZW50Li4uIik7CisgICAgICAgIGlmKG51bGwgPT0gZWxlbWVudCkgCisgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkVsZW1lbnQgdW5leHBlY3RlZGx5IG51bGwuLi4iKTsKKyAgICAgICAgaWYoX2NpcGhlck1vZGUgIT0gRU5DUllQVF9NT0RFKQorICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJYTUxDaXBoZXIgdW5leHBlY3RlZGx5IG5vdCBpbiBFTkNSWVBUX01PREUuLi4iKTsKKworCQlpZiAoX2FsZ29yaXRobSA9PSBudWxsKSB7CisJICAgIAl0aHJvdyBuZXcgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigiWE1MQ2lwaGVyIGluc3RhbmNlIHdpdGhvdXQgdHJhbnNmb3JtYXRpb24gc3BlY2lmaWVkIik7CisJCX0KKwkJZW5jcnlwdERhdGEoX2NvbnRleHREb2N1bWVudCwgZWxlbWVudCwgZmFsc2UpOworCisgICAgICAgIEVsZW1lbnQgZW5jcnlwdGVkRWxlbWVudCA9IF9mYWN0b3J5LnRvRWxlbWVudChfZWQpOworCisgICAgICAgIE5vZGUgc291cmNlUGFyZW50ID0gZWxlbWVudC5nZXRQYXJlbnROb2RlKCk7CisgICAgICAgIHNvdXJjZVBhcmVudC5yZXBsYWNlQ2hpbGQoZW5jcnlwdGVkRWxlbWVudCwgZWxlbWVudCk7CisKKyAgICAgICAgcmV0dXJuIChfY29udGV4dERvY3VtZW50KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBFbmNyeXB0cyBhIDxjb2RlPk5vZGVMaXN0PC9jb2RlPiAodGhlIGNvbnRlbnRzIG9mIGFuCisgICAgICogPGNvZGU+RWxlbWVudDwvY29kZT4pIGFuZCByZXBsYWNlcyBpdHMgcGFyZW50IDxjb2RlPkVsZW1lbnQ8L2NvZGU+J3MKKyAgICAgKiBjb250ZW50IHdpdGggdGhpcyB0aGUgcmVzdWx0aW5nIDxjb2RlPkVuY3J5cHRlZFR5cGU8L2NvZGU+IHdpdGhpbiB0aGUKKyAgICAgKiBjb250ZXh0IDxjb2RlPkRvY3VtZW50PC9jb2RlPiwgdGhhdCBpcywgdGhlIDxjb2RlPkRvY3VtZW50PC9jb2RlPgorICAgICAqIHNwZWNpZmllZCB3aGVuIG9uZSBjYWxscworICAgICAqIHtAbGluayAjZ2V0SW5zdGFuY2UoU3RyaW5nKSBnZXRJbnN0YW5jZX0uCisgICAgICoKKyAgICAgKiBAcGFyYW0gZWxlbWVudCB0aGUgPGNvZGU+Tm9kZUxpc3Q8L2NvZGU+IHRvIGVuY3J5cHQuCisgICAgICogQHJldHVybiB0aGUgY29udGV4dCA8Y29kZT5Eb2N1bWVudDwvY29kZT4gd2l0aCB0aGUgZW5jcnlwdGVkCisgICAgICogICA8Y29kZT5Ob2RlTGlzdDwvY29kZT4gaGF2aW5nIHJlcGxhY2VkIHRoZSBjb250ZW50IG9mIHRoZSBzb3VyY2UKKyAgICAgKiAgIDxjb2RlPkVsZW1lbnQ8L2NvZGU+LgorICAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgICovCisgICAgcHJpdmF0ZSBEb2N1bWVudCBlbmNyeXB0RWxlbWVudENvbnRlbnQoRWxlbWVudCBlbGVtZW50KSB0aHJvd3MKKyAgICAgICAgICAgIC8qIFhNTEVuY3J5cHRpb24gKi9FeGNlcHRpb24geworICAgICAgICBsb2dnZXIuZGVidWcoIkVuY3J5cHRpbmcgZWxlbWVudCBjb250ZW50Li4uIik7CisgICAgICAgIGlmKG51bGwgPT0gZWxlbWVudCkgCisgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkVsZW1lbnQgdW5leHBlY3RlZGx5IG51bGwuLi4iKTsKKyAgICAgICAgaWYoX2NpcGhlck1vZGUgIT0gRU5DUllQVF9NT0RFKQorICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJYTUxDaXBoZXIgdW5leHBlY3RlZGx5IG5vdCBpbiBFTkNSWVBUX01PREUuLi4iKTsKKworCQlpZiAoX2FsZ29yaXRobSA9PSBudWxsKSB7CisJICAgIAl0aHJvdyBuZXcgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigiWE1MQ2lwaGVyIGluc3RhbmNlIHdpdGhvdXQgdHJhbnNmb3JtYXRpb24gc3BlY2lmaWVkIik7CisJCX0KKwkJZW5jcnlwdERhdGEoX2NvbnRleHREb2N1bWVudCwgZWxlbWVudCwgdHJ1ZSk7CQorCisgICAgICAgIEVsZW1lbnQgZW5jcnlwdGVkRWxlbWVudCA9IF9mYWN0b3J5LnRvRWxlbWVudChfZWQpOworCisgICAgICAgIHJlbW92ZUNvbnRlbnQoZWxlbWVudCk7CisgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoZW5jcnlwdGVkRWxlbWVudCk7CisKKyAgICAgICAgcmV0dXJuIChfY29udGV4dERvY3VtZW50KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQcm9jZXNzIGEgRE9NIDxjb2RlPkRvY3VtZW50PC9jb2RlPiBub2RlLiBUaGUgcHJvY2Vzc2luZyBkZXBlbmRzIG9uIHRoZQorICAgICAqIGluaXRpYWxpemF0aW9uIHBhcmFtZXRlcnMgb2Yge0BsaW5rICNpbml0KGludCwgS2V5KSBpbml0KCl9LgorICAgICAqCisgICAgICogQHBhcmFtIGNvbnRleHQgdGhlIGNvbnRleHQgPGNvZGU+RG9jdW1lbnQ8L2NvZGU+LgorICAgICAqIEBwYXJhbSBzb3VyY2UgdGhlIDxjb2RlPkRvY3VtZW50PC9jb2RlPiB0byBiZSBlbmNyeXB0ZWQgb3IgZGVjcnlwdGVkLgorICAgICAqIEByZXR1cm4gdGhlIHByb2Nlc3NlZCA8Y29kZT5Eb2N1bWVudDwvY29kZT4uCisgICAgICogQHRocm93cyBFeGNlcHRpb24gdG8gaW5kaWNhdGUgYW55IGV4Y2VwdGlvbmFsIGNvbmRpdGlvbnMuCisgICAgICovCisgICAgcHVibGljIERvY3VtZW50IGRvRmluYWwoRG9jdW1lbnQgY29udGV4dCwgRG9jdW1lbnQgc291cmNlKSB0aHJvd3MKKyAgICAgICAgICAgIC8qIFhNTEVuY3J5cHRpb24gKi9FeGNlcHRpb24geworICAgICAgICBsb2dnZXIuZGVidWcoIlByb2Nlc3Npbmcgc291cmNlIGRvY3VtZW50Li4uIik7CisgICAgICAgIGlmKG51bGwgPT0gY29udGV4dCkKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiQ29udGV4dCBkb2N1bWVudCB1bmV4cGVjdGVkbHkgbnVsbC4uLiIpOworICAgICAgICBpZihudWxsID09IHNvdXJjZSkKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiU291cmNlIGRvY3VtZW50IHVuZXhwZWN0ZWRseSBudWxsLi4uIik7CisKKyAgICAgICAgX2NvbnRleHREb2N1bWVudCA9IGNvbnRleHQ7CisKKyAgICAgICAgRG9jdW1lbnQgcmVzdWx0ID0gbnVsbDsKKworICAgICAgICBzd2l0Y2ggKF9jaXBoZXJNb2RlKSB7CisgICAgICAgIGNhc2UgREVDUllQVF9NT0RFOgorICAgICAgICAgICAgcmVzdWx0ID0gZGVjcnlwdEVsZW1lbnQoc291cmNlLmdldERvY3VtZW50RWxlbWVudCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVOQ1JZUFRfTU9ERToKKyAgICAgICAgICAgIHJlc3VsdCA9IGVuY3J5cHRFbGVtZW50KHNvdXJjZS5nZXREb2N1bWVudEVsZW1lbnQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVTldSQVBfTU9ERToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdSQVBfTU9ERToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oCisgICAgICAgICAgICAgICAgImVtcHR5IiwgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAocmVzdWx0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQcm9jZXNzIGEgRE9NIDxjb2RlPkVsZW1lbnQ8L2NvZGU+IG5vZGUuIFRoZSBwcm9jZXNzaW5nIGRlcGVuZHMgb24gdGhlCisgICAgICogaW5pdGlhbGl6YXRpb24gcGFyYW1ldGVycyBvZiB7QGxpbmsgI2luaXQoaW50LCBLZXkpIGluaXQoKX0uCisgICAgICoKKyAgICAgKiBAcGFyYW0gY29udGV4dCB0aGUgY29udGV4dCA8Y29kZT5Eb2N1bWVudDwvY29kZT4uCisgICAgICogQHBhcmFtIGVsZW1lbnQgdGhlIDxjb2RlPkVsZW1lbnQ8L2NvZGU+IHRvIGJlIGVuY3J5cHRlZC4KKyAgICAgKiBAcmV0dXJuIHRoZSBwcm9jZXNzZWQgPGNvZGU+RG9jdW1lbnQ8L2NvZGU+LgorICAgICAqIEB0aHJvd3MgRXhjZXB0aW9uIHRvIGluZGljYXRlIGFueSBleGNlcHRpb25hbCBjb25kaXRpb25zLgorICAgICAqLworICAgIHB1YmxpYyBEb2N1bWVudCBkb0ZpbmFsKERvY3VtZW50IGNvbnRleHQsIEVsZW1lbnQgZWxlbWVudCkgdGhyb3dzCisgICAgICAgICAgICAvKiBYTUxFbmNyeXB0aW9uICovRXhjZXB0aW9uIHsKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCJQcm9jZXNzaW5nIHNvdXJjZSBlbGVtZW50Li4uIik7CisgICAgICAgIGlmKG51bGwgPT0gY29udGV4dCkKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiQ29udGV4dCBkb2N1bWVudCB1bmV4cGVjdGVkbHkgbnVsbC4uLiIpOworICAgICAgICBpZihudWxsID09IGVsZW1lbnQpCisgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIlNvdXJjZSBlbGVtZW50IHVuZXhwZWN0ZWRseSBudWxsLi4uIik7CisKKyAgICAgICAgX2NvbnRleHREb2N1bWVudCA9IGNvbnRleHQ7CisKKyAgICAgICAgRG9jdW1lbnQgcmVzdWx0ID0gbnVsbDsKKworICAgICAgICBzd2l0Y2ggKF9jaXBoZXJNb2RlKSB7CisgICAgICAgIGNhc2UgREVDUllQVF9NT0RFOgorICAgICAgICAgICAgcmVzdWx0ID0gZGVjcnlwdEVsZW1lbnQoZWxlbWVudCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFTkNSWVBUX01PREU6CisgICAgICAgICAgICByZXN1bHQgPSBlbmNyeXB0RWxlbWVudChlbGVtZW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFVOV1JBUF9NT0RFOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV1JBUF9NT0RFOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0aHJvdyBuZXcgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAiZW1wdHkiLCBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIChyZXN1bHQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFByb2Nlc3MgdGhlIGNvbnRlbnRzIG9mIGEgRE9NIDxjb2RlPkVsZW1lbnQ8L2NvZGU+IG5vZGUuIFRoZSBwcm9jZXNzaW5nCisgICAgICogZGVwZW5kcyBvbiB0aGUgaW5pdGlhbGl6YXRpb24gcGFyYW1ldGVycyBvZgorICAgICAqIHtAbGluayAjaW5pdChpbnQsIEtleSkgaW5pdCgpfS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjb250ZXh0IHRoZSBjb250ZXh0IDxjb2RlPkRvY3VtZW50PC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gZWxlbWVudCB0aGUgPGNvZGU+RWxlbWVudDwvY29kZT4gd2hpY2ggY29udGVudHMgaXMgdG8gYmUKKyAgICAgKiAgIGVuY3J5cHRlZC4KKyAgICAgKiBAcGFyYW0gY29udGVudAorICAgICAqIEByZXR1cm4gdGhlIHByb2Nlc3NlZCA8Y29kZT5Eb2N1bWVudDwvY29kZT4uCisgICAgICogQHRocm93cyBFeGNlcHRpb24gdG8gaW5kaWNhdGUgYW55IGV4Y2VwdGlvbmFsIGNvbmRpdGlvbnMuCisgICAgICovCisgICAgcHVibGljIERvY3VtZW50IGRvRmluYWwoRG9jdW1lbnQgY29udGV4dCwgRWxlbWVudCBlbGVtZW50LCBib29sZWFuIGNvbnRlbnQpCisgICAgICAgICAgICB0aHJvd3MgLyogWE1MRW5jcnlwdGlvbiovIEV4Y2VwdGlvbiB7CisgICAgICAgIGxvZ2dlci5kZWJ1ZygiUHJvY2Vzc2luZyBzb3VyY2UgZWxlbWVudC4uLiIpOworICAgICAgICBpZihudWxsID09IGNvbnRleHQpCisgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkNvbnRleHQgZG9jdW1lbnQgdW5leHBlY3RlZGx5IG51bGwuLi4iKTsKKyAgICAgICAgaWYobnVsbCA9PSBlbGVtZW50KQorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJTb3VyY2UgZWxlbWVudCB1bmV4cGVjdGVkbHkgbnVsbC4uLiIpOworCisgICAgICAgIF9jb250ZXh0RG9jdW1lbnQgPSBjb250ZXh0OworCisgICAgICAgIERvY3VtZW50IHJlc3VsdCA9IG51bGw7CisKKyAgICAgICAgc3dpdGNoIChfY2lwaGVyTW9kZSkgeworICAgICAgICBjYXNlIERFQ1JZUFRfTU9ERToKKyAgICAgICAgICAgIGlmIChjb250ZW50KSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZGVjcnlwdEVsZW1lbnRDb250ZW50KGVsZW1lbnQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBkZWNyeXB0RWxlbWVudChlbGVtZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVOQ1JZUFRfTU9ERToKKyAgICAgICAgICAgIGlmIChjb250ZW50KSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZW5jcnlwdEVsZW1lbnRDb250ZW50KGVsZW1lbnQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBlbmNyeXB0RWxlbWVudChlbGVtZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFVOV1JBUF9NT0RFOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV1JBUF9NT0RFOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0aHJvdyBuZXcgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAiZW1wdHkiLCBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIChyZXN1bHQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYW4gPGNvZGU+RW5jcnlwdGVkRGF0YTwvY29kZT4gaW50ZXJmYWNlLiBVc2UgdGhpcyBvcGVyYXRpb24gaWYKKyAgICAgKiB5b3Ugd2FudCB0byBoYXZlIGZ1bGwgY29udHJvbCBvdmVyIHRoZSBjb250ZW50cyBvZiB0aGUKKyAgICAgKiA8Y29kZT5FbmNyeXB0ZWREYXRhPC9jb2RlPiBzdHJ1Y3R1cmUuCisgICAgICoKKyAgICAgKiB0aGlzIGRvZXMgbm90IGNoYW5nZSB0aGUgc291cmNlIGRvY3VtZW50IGluIGFueSB3YXkuCisgICAgICoKKyAgICAgKiBAcGFyYW0gY29udGV4dCB0aGUgY29udGV4dCA8Y29kZT5Eb2N1bWVudDwvY29kZT4uCisgICAgICogQHBhcmFtIGVsZW1lbnQgdGhlIDxjb2RlPkVsZW1lbnQ8L2NvZGU+IHRoYXQgd2lsbCBiZSBlbmNyeXB0ZWQuCisgICAgICogQHJldHVybiB0aGUgPGNvZGU+RW5jcnlwdGVkRGF0YTwvY29kZT4KKyAgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBFbmNyeXB0ZWREYXRhIGVuY3J5cHREYXRhKERvY3VtZW50IGNvbnRleHQsIEVsZW1lbnQgZWxlbWVudCkgdGhyb3dzIAorICAgICAgICAgICAgLyogWE1MRW5jcnlwdGlvbiAqL0V4Y2VwdGlvbiB7CisJcmV0dXJuIGVuY3J5cHREYXRhKGNvbnRleHQsIGVsZW1lbnQsIGZhbHNlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGFuIDxjb2RlPkVuY3J5cHRlZERhdGE8L2NvZGU+IGludGVyZmFjZS4gVXNlIHRoaXMgb3BlcmF0aW9uIGlmCisgICAgICogeW91IHdhbnQgdG8gaGF2ZSBmdWxsIGNvbnRyb2wgb3ZlciB0aGUgc2VyaWFsaXphdGlvbiBvZiB0aGUgZWxlbWVudAorICAgICAqIG9yIGVsZW1lbnQgY29udGVudC4KKyAgICAgKgorICAgICAqIFRoaXMgZG9lcyBub3QgY2hhbmdlIHRoZSBzb3VyY2UgZG9jdW1lbnQgaW4gYW55IHdheS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjb250ZXh0IHRoZSBjb250ZXh0IDxjb2RlPkRvY3VtZW50PC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gdHlwZSBhIFVSSSBpZGVudGlmeWluZyB0eXBlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwbGFpbnRleHQgZm9ybQorICAgICAqICAgIG9mIHRoZSBlbmNyeXB0ZWQgY29udGVudCAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+KQorICAgICAqIEBwYXJhbSBzZXJpYWxpemVkRGF0YSB0aGUgc2VyaWFsaXplZCBkYXRhCisgICAgICogQHJldHVybiB0aGUgPGNvZGU+RW5jcnlwdGVkRGF0YTwvY29kZT4KKyAgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBFbmNyeXB0ZWREYXRhIGVuY3J5cHREYXRhKERvY3VtZW50IGNvbnRleHQsIFN0cmluZyB0eXBlLAorICAgICAgICBJbnB1dFN0cmVhbSBzZXJpYWxpemVkRGF0YSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCJFbmNyeXB0aW5nIGVsZW1lbnQuLi4iKTsKKyAgICAgICAgaWYgKG51bGwgPT0gY29udGV4dCkKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiQ29udGV4dCBkb2N1bWVudCB1bmV4cGVjdGVkbHkgbnVsbC4uLiIpOworICAgICAgICBpZiAobnVsbCA9PSBzZXJpYWxpemVkRGF0YSkKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiU2VyaWFsaXplZCBkYXRhIHVuZXhwZWN0ZWRseSBudWxsLi4uIik7CisgICAgICAgIGlmIChfY2lwaGVyTW9kZSAhPSBFTkNSWVBUX01PREUpCisgICAgICAgICAgICBsb2dnZXIuZGVidWcoIlhNTENpcGhlciB1bmV4cGVjdGVkbHkgbm90IGluIEVOQ1JZUFRfTU9ERS4uLiIpOworCisgICAgICAgIHJldHVybiBlbmNyeXB0RGF0YShjb250ZXh0LCBudWxsLCB0eXBlLCBzZXJpYWxpemVkRGF0YSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhbiA8Y29kZT5FbmNyeXB0ZWREYXRhPC9jb2RlPiBpbnRlcmZhY2UuIFVzZSB0aGlzIG9wZXJhdGlvbiBpZgorICAgICAqIHlvdSB3YW50IHRvIGhhdmUgZnVsbCBjb250cm9sIG92ZXIgdGhlIGNvbnRlbnRzIG9mIHRoZQorICAgICAqIDxjb2RlPkVuY3J5cHRlZERhdGE8L2NvZGU+IHN0cnVjdHVyZS4KKyAgICAgKgorICAgICAqIHRoaXMgZG9lcyBub3QgY2hhbmdlIHRoZSBzb3VyY2UgZG9jdW1lbnQgaW4gYW55IHdheS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjb250ZXh0IHRoZSBjb250ZXh0IDxjb2RlPkRvY3VtZW50PC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gZWxlbWVudCB0aGUgPGNvZGU+RWxlbWVudDwvY29kZT4gdGhhdCB3aWxsIGJlIGVuY3J5cHRlZC4KKyAgICAgKiBAcGFyYW0gY29udGVudE1vZGUgPGNvZGU+dHJ1ZTwvY29kZT4gdG8gZW5jcnlwdCBlbGVtZW50J3MgY29udGVudCBvbmx5LAorICAgICAqICAgIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UKKyAgICAgKiBAcmV0dXJuIHRoZSA8Y29kZT5FbmNyeXB0ZWREYXRhPC9jb2RlPgorICAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIEVuY3J5cHRlZERhdGEgZW5jcnlwdERhdGEoCisgICAgICAgIERvY3VtZW50IGNvbnRleHQsIEVsZW1lbnQgZWxlbWVudCwgYm9vbGVhbiBjb250ZW50TW9kZSkKKyAgICAgICAgdGhyb3dzIC8qIFhNTEVuY3J5cHRpb24gKi8gRXhjZXB0aW9uIHsKKworICAgICAgICBsb2dnZXIuZGVidWcoIkVuY3J5cHRpbmcgZWxlbWVudC4uLiIpOworICAgICAgICBpZiAobnVsbCA9PSBjb250ZXh0KQorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJDb250ZXh0IGRvY3VtZW50IHVuZXhwZWN0ZWRseSBudWxsLi4uIik7CisgICAgICAgIGlmIChudWxsID09IGVsZW1lbnQpCisgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkVsZW1lbnQgdW5leHBlY3RlZGx5IG51bGwuLi4iKTsKKyAgICAgICAgaWYgKF9jaXBoZXJNb2RlICE9IEVOQ1JZUFRfTU9ERSkKKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiWE1MQ2lwaGVyIHVuZXhwZWN0ZWRseSBub3QgaW4gRU5DUllQVF9NT0RFLi4uIik7CisKKyAgICAgICAgaWYgKGNvbnRlbnRNb2RlKSB7CisgICAgICAgICAgICByZXR1cm4gZW5jcnlwdERhdGEKKyAgICAgICAgICAgICAgICAoY29udGV4dCwgZWxlbWVudCwgRW5jcnlwdGlvbkNvbnN0YW50cy5UWVBFX0NPTlRFTlQsIG51bGwpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGVuY3J5cHREYXRhCisgICAgICAgICAgICAgICAgKGNvbnRleHQsIGVsZW1lbnQsIEVuY3J5cHRpb25Db25zdGFudHMuVFlQRV9FTEVNRU5ULCBudWxsKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgRW5jcnlwdGVkRGF0YSBlbmNyeXB0RGF0YSgKKyAgICAgICAgRG9jdW1lbnQgY29udGV4dCwgRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgdHlwZSwKKyAgICAgICAgSW5wdXRTdHJlYW0gc2VyaWFsaXplZERhdGEpIHRocm93cyAvKiBYTUxFbmNyeXB0aW9uICovIEV4Y2VwdGlvbiB7CisKKwlfY29udGV4dERvY3VtZW50ID0gY29udGV4dDsKKworCWlmIChfYWxnb3JpdGhtID09IG51bGwpIHsKKwkgICAgdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24KKwkJKCJYTUxDaXBoZXIgaW5zdGFuY2Ugd2l0aG91dCB0cmFuc2Zvcm1hdGlvbiBzcGVjaWZpZWQiKTsKKwl9CisKKwlTdHJpbmcgc2VyaWFsaXplZE9jdGV0cyA9IG51bGw7CisJaWYgKHNlcmlhbGl6ZWREYXRhID09IG51bGwpIHsKKwkgICAgaWYgKHR5cGUuZXF1YWxzKEVuY3J5cHRpb25Db25zdGFudHMuVFlQRV9DT05URU5UKSkgeworCQlOb2RlTGlzdCBjaGlsZHJlbiA9IGVsZW1lbnQuZ2V0Q2hpbGROb2RlcygpOworCQlpZiAobnVsbCAhPSBjaGlsZHJlbikgeworCQkgICAgc2VyaWFsaXplZE9jdGV0cyA9IF9zZXJpYWxpemVyLnNlcmlhbGl6ZShjaGlsZHJlbik7CisJCX0gZWxzZSB7CisJCSAgICBPYmplY3QgZXhBcmdzW10gPSB7ICJFbGVtZW50IGhhcyBubyBjb250ZW50LiIgfTsKKwkJICAgIHRocm93IG5ldyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIGV4QXJncyk7CisJCX0KKwkgICAgfSBlbHNlIHsKKwkJc2VyaWFsaXplZE9jdGV0cyA9IF9zZXJpYWxpemVyLnNlcmlhbGl6ZShlbGVtZW50KTsKKwkgICAgfQorCSAgICBsb2dnZXIuZGVidWcoIlNlcmlhbGl6ZWQgb2N0ZXRzOlxuIiArIHNlcmlhbGl6ZWRPY3RldHMpOworCX0KKworICAgICAgICBieXRlW10gZW5jcnlwdGVkQnl0ZXMgPSBudWxsOworCisJLy8gTm93IGNyZWF0ZSB0aGUgd29ya2luZyBjaXBoZXIgaWYgbm9uZSB3YXMgY3JlYXRlZCBhbHJlYWR5CisJQ2lwaGVyIGM7CisJaWYgKF9jb250ZXh0Q2lwaGVyID09IG51bGwpIHsKKwkgICAgU3RyaW5nIGpjZUFsZ29yaXRobSA9IEpDRU1hcHBlci50cmFuc2xhdGVVUkl0b0pDRUlEKF9hbGdvcml0aG0pOworCSAgICBsb2dnZXIuZGVidWcoImFsZyA9ICIgKyBqY2VBbGdvcml0aG0pOworCisJICAgIHRyeSB7CisgICAgICAgICAgICAgICAgaWYgKF9yZXF1ZXN0ZWRKQ0VQcm92aWRlciA9PSBudWxsKQorCQkgICAgYyA9IENpcGhlci5nZXRJbnN0YW5jZShqY2VBbGdvcml0aG0pOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYyA9IENpcGhlci5nZXRJbnN0YW5jZShqY2VBbGdvcml0aG0sIF9yZXF1ZXN0ZWRKQ0VQcm92aWRlcik7CisJICAgIH0gY2F0Y2ggKE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiBuc2FlKSB7CisJCXRocm93IG5ldyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIG5zYWUpOworCSAgICB9IGNhdGNoIChOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiBuc3ByZSkgeworCQl0aHJvdyBuZXcgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigiZW1wdHkiLCBuc3ByZSk7CisJICAgIH0gY2F0Y2ggKE5vU3VjaFBhZGRpbmdFeGNlcHRpb24gbnNwYWUpIHsKKwkJdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oImVtcHR5IiwgbnNwYWUpOworCSAgICB9CisJfSBlbHNlIHsKKwkgICAgYyA9IF9jb250ZXh0Q2lwaGVyOworCX0KKwkvLyBOb3cgcGVyZm9ybSB0aGUgZW5jcnlwdGlvbgorCisJdHJ5IHsKKwkgICAgLy8gU2hvdWxkIGludGVybmFsbHkgZ2VuZXJhdGUgYW4gSVYKKwkgICAgLy8gdG9kbyAtIGFsbG93IHVzZXIgdG8gc2V0IGFuIElWCisJICAgIGMuaW5pdChfY2lwaGVyTW9kZSwgX2tleSk7CisJfSBjYXRjaCAoSW52YWxpZEtleUV4Y2VwdGlvbiBpa2UpIHsKKwkgICAgdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oImVtcHR5IiwgaWtlKTsKKwl9CisKKyAgICAgICAgdHJ5IHsKKwkgICAgaWYgKHNlcmlhbGl6ZWREYXRhICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpbnQgbnVtQnl0ZXM7CisgICAgICAgICAgICAgICAgYnl0ZVtdIGJ1ZiA9IG5ldyBieXRlWzgxOTJdOworICAgICAgICAgICAgICAgIEJ5dGVBcnJheU91dHB1dFN0cmVhbSBiYW9zID0gbmV3IEJ5dGVBcnJheU91dHB1dFN0cmVhbSgpOworICAgICAgICAgICAgICAgIHdoaWxlICgobnVtQnl0ZXMgPSBzZXJpYWxpemVkRGF0YS5yZWFkKGJ1ZikpICE9IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIGJ5dGVbXSBkYXRhID0gYy51cGRhdGUoYnVmLCAwLCBudW1CeXRlcyk7CisgICAgICAgICAgICAgICAgICAgIGJhb3Mud3JpdGUoZGF0YSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJhb3Mud3JpdGUoYy5kb0ZpbmFsKCkpOworICAgICAgICAgICAgICAgIGVuY3J5cHRlZEJ5dGVzID0gYmFvcy50b0J5dGVBcnJheSgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlbmNyeXB0ZWRCeXRlcyA9IGMuZG9GaW5hbChzZXJpYWxpemVkT2N0ZXRzLmdldEJ5dGVzKCJVVEYtOCIpKTsKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoIkV4cGVjdGVkIGNpcGhlci5vdXRwdXRTaXplID0gIiArCisgICAgICAgICAgICAgICAgICAgIEludGVnZXIudG9TdHJpbmcoYy5nZXRPdXRwdXRTaXplKAorICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZE9jdGV0cy5nZXRCeXRlcygpLmxlbmd0aCkpKTsKKwkgICAgfQorICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJBY3R1YWwgY2lwaGVyLm91dHB1dFNpemUgPSAiICsKKyAgICAgICAgICAgICAgICBJbnRlZ2VyLnRvU3RyaW5nKGVuY3J5cHRlZEJ5dGVzLmxlbmd0aCkpOworICAgICAgICB9IGNhdGNoIChJbGxlZ2FsU3RhdGVFeGNlcHRpb24gaXNlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigiZW1wdHkiLCBpc2UpOworICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uIGlic2UpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIGlic2UpOworICAgICAgICB9IGNhdGNoIChCYWRQYWRkaW5nRXhjZXB0aW9uIGJwZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oImVtcHR5IiwgYnBlKTsKKyAgICAgICAgfSBjYXRjaCAoVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiB1ZWUpIHsKKwkgICAgdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oImVtcHR5IiwgdWVlKTsKKwl9CisKKwkvLyBOb3cgYnVpbGQgdXAgdG8gYSBwcm9wZXJseSBYTUwgRW5jcnlwdGlvbiBlbmNvZGVkIG9jdGV0IHN0cmVhbQorCS8vIEl2UGFyYW1ldGVyU3BlYyBpdjsKKwlieXRlW10gaXYgPSBjLmdldElWKCk7CisJYnl0ZVtdIGZpbmFsRW5jcnlwdGVkQnl0ZXMgPSAKKwkJbmV3IGJ5dGVbaXYubGVuZ3RoICsgZW5jcnlwdGVkQnl0ZXMubGVuZ3RoXTsKKwlTeXN0ZW0uYXJyYXljb3B5KGl2LCAwLCBmaW5hbEVuY3J5cHRlZEJ5dGVzLCAwLCBpdi5sZW5ndGgpOworCVN5c3RlbS5hcnJheWNvcHkoZW5jcnlwdGVkQnl0ZXMsIDAsIGZpbmFsRW5jcnlwdGVkQnl0ZXMsIGl2Lmxlbmd0aCwKKwkJCSBlbmNyeXB0ZWRCeXRlcy5sZW5ndGgpOworICAgICAgICBTdHJpbmcgYmFzZTY0RW5jb2RlZEVuY3J5cHRlZE9jdGV0cyA9IEJhc2U2NC5lbmNvZGUoZmluYWxFbmNyeXB0ZWRCeXRlcyk7CisKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCJFbmNyeXB0ZWQgb2N0ZXRzOlxuIiArIGJhc2U2NEVuY29kZWRFbmNyeXB0ZWRPY3RldHMpOworICAgICAgICBsb2dnZXIuZGVidWcoIkVuY3J5cHRlZCBvY3RldHMgbGVuZ3RoID0gIiArCisgICAgICAgICAgICBiYXNlNjRFbmNvZGVkRW5jcnlwdGVkT2N0ZXRzLmxlbmd0aCgpKTsKKworCXRyeSB7CisJICAgIENpcGhlckRhdGEgY2QgPSBfZWQuZ2V0Q2lwaGVyRGF0YSgpOworCSAgICBDaXBoZXJWYWx1ZSBjdiA9IGNkLmdldENpcGhlclZhbHVlKCk7CisJICAgIC8vIGN2LnNldFZhbHVlKGJhc2U2NEVuY29kZWRFbmNyeXB0ZWRPY3RldHMuZ2V0Qnl0ZXMoKSk7CisJICAgIGN2LnNldFZhbHVlKGJhc2U2NEVuY29kZWRFbmNyeXB0ZWRPY3RldHMpOworCisJICAgIGlmICh0eXBlICE9IG51bGwpIHsKKwkgICAgICAgIF9lZC5zZXRUeXBlKG5ldyBVUkkodHlwZSkudG9TdHJpbmcoKSk7CisJICAgIH0KKwkgICAgRW5jcnlwdGlvbk1ldGhvZCBtZXRob2QgPQorCQlfZmFjdG9yeS5uZXdFbmNyeXB0aW9uTWV0aG9kKG5ldyBVUkkoX2FsZ29yaXRobSkudG9TdHJpbmcoKSk7CisJICAgIF9lZC5zZXRFbmNyeXB0aW9uTWV0aG9kKG1ldGhvZCk7CisJfSBjYXRjaCAoVVJJLk1hbGZvcm1lZFVSSUV4Y2VwdGlvbiBtZnVlKSB7CisJICAgIHRocm93IG5ldyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIG1mdWUpOworCX0KKyAgICAgICAgcmV0dXJuIChfZWQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYW4gPGNvZGU+RW5jcnlwdGVkRGF0YTwvY29kZT4gaW50ZXJmYWNlLiBVc2UgdGhpcyBvcGVyYXRpb24gaWYKKyAgICAgKiB5b3Ugd2FudCB0byBsb2FkIGFuIDxjb2RlPkVuY3J5cHRlZERhdGE8L2NvZGU+IHN0cnVjdHVyZSBmcm9tIGEgRE9NIAorICAgICAqIHN0cnVjdHVyZSBhbmQgbWFuaXB1bGF0ZSB0aGUgY29udGVudHMgCisgICAgICoKKyAgICAgKiBAcGFyYW0gY29udGV4dCB0aGUgY29udGV4dCA8Y29kZT5Eb2N1bWVudDwvY29kZT4uCisgICAgICogQHBhcmFtIGVsZW1lbnQgdGhlIDxjb2RlPkVsZW1lbnQ8L2NvZGU+IHRoYXQgd2lsbCBiZSBsb2FkZWQKKyAgICAgKiBAdGhyb3dzIFhNTEVuY3J5cHRpb25FeGNlcHRpb24KKyAgICAgKiBAcmV0dXJuCisgICAgICovCisgICAgcHVibGljIEVuY3J5cHRlZERhdGEgbG9hZEVuY3J5cHRlZERhdGEoRG9jdW1lbnQgY29udGV4dCwgRWxlbWVudCBlbGVtZW50KSAKKwkJdGhyb3dzIFhNTEVuY3J5cHRpb25FeGNlcHRpb24geworICAgICAgICBsb2dnZXIuZGVidWcoIkxvYWRpbmcgZW5jcnlwdGVkIGVsZW1lbnQuLi4iKTsKKyAgICAgICAgaWYgKG51bGwgPT0gY29udGV4dCkKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigiQ29udGV4dCBkb2N1bWVudCB1bmV4cGVjdGVkbHkgbnVsbC4uLiIpOworICAgICAgICBpZiAobnVsbCA9PSBlbGVtZW50KQorICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJFbGVtZW50IHVuZXhwZWN0ZWRseSBudWxsLi4uIik7CisgICAgICAgIGlmIChfY2lwaGVyTW9kZSAhPSBERUNSWVBUX01PREUpCisgICAgICAgICAgICB0aHJvdyBuZXcgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigiWE1MQ2lwaGVyIHVuZXhwZWN0ZWRseSBub3QgaW4gREVDUllQVF9NT0RFLi4uIik7CisKKyAgICAgICAgX2NvbnRleHREb2N1bWVudCA9IGNvbnRleHQ7CisgICAgICAgIF9lZCA9IF9mYWN0b3J5Lm5ld0VuY3J5cHRlZERhdGEoZWxlbWVudCk7CisKKwlyZXR1cm4gKF9lZCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhbiA8Y29kZT5FbmNyeXB0ZWRLZXk8L2NvZGU+IGludGVyZmFjZS4gVXNlIHRoaXMgb3BlcmF0aW9uIGlmCisgICAgICogeW91IHdhbnQgdG8gbG9hZCBhbiA8Y29kZT5FbmNyeXB0ZWRLZXk8L2NvZGU+IHN0cnVjdHVyZSBmcm9tIGEgRE9NIAorICAgICAqIHN0cnVjdHVyZSBhbmQgbWFuaXB1bGF0ZSB0aGUgY29udGVudHMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gY29udGV4dCB0aGUgY29udGV4dCA8Y29kZT5Eb2N1bWVudDwvY29kZT4uCisgICAgICogQHBhcmFtIGVsZW1lbnQgdGhlIDxjb2RlPkVsZW1lbnQ8L2NvZGU+IHRoYXQgd2lsbCBiZSBsb2FkZWQKKyAgICAgKiBAcmV0dXJuCisgICAgICogQHRocm93cyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIEVuY3J5cHRlZEtleSBsb2FkRW5jcnlwdGVkS2V5KERvY3VtZW50IGNvbnRleHQsIEVsZW1lbnQgZWxlbWVudCkgCisJCXRocm93cyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCJMb2FkaW5nIGVuY3J5cHRlZCBrZXkuLi4iKTsKKyAgICAgICAgaWYgKG51bGwgPT0gY29udGV4dCkKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigiQ29udGV4dCBkb2N1bWVudCB1bmV4cGVjdGVkbHkgbnVsbC4uLiIpOworICAgICAgICBpZiAobnVsbCA9PSBlbGVtZW50KQorICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJFbGVtZW50IHVuZXhwZWN0ZWRseSBudWxsLi4uIik7CisgICAgICAgIGlmIChfY2lwaGVyTW9kZSAhPSBVTldSQVBfTU9ERSAmJiBfY2lwaGVyTW9kZSAhPSBERUNSWVBUX01PREUpCisgICAgICAgICAgICB0aHJvdyBuZXcgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigiWE1MQ2lwaGVyIHVuZXhwZWN0ZWRseSBub3QgaW4gVU5XUkFQX01PREUgb3IgREVDUllQVF9NT0RFLi4uIik7CisKKyAgICAgICAgX2NvbnRleHREb2N1bWVudCA9IGNvbnRleHQ7CisgICAgICAgIF9layA9IF9mYWN0b3J5Lm5ld0VuY3J5cHRlZEtleShlbGVtZW50KTsKKwlyZXR1cm4gKF9layk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhbiA8Y29kZT5FbmNyeXB0ZWRLZXk8L2NvZGU+IGludGVyZmFjZS4gVXNlIHRoaXMgb3BlcmF0aW9uIGlmCisgICAgICogeW91IHdhbnQgdG8gbG9hZCBhbiA8Y29kZT5FbmNyeXB0ZWRLZXk8L2NvZGU+IHN0cnVjdHVyZSBmcm9tIGEgRE9NIAorICAgICAqIHN0cnVjdHVyZSBhbmQgbWFuaXB1bGF0ZSB0aGUgY29udGVudHMuCisgICAgICoKKyAgICAgKiBBc3N1bWVzIHRoYXQgdGhlIGNvbnRleHQgZG9jdW1lbnQgaXMgdGhlIGRvY3VtZW50IHRoYXQgb3ducyB0aGUgZWxlbWVudAorICAgICAqCisgICAgICogQHBhcmFtIGVsZW1lbnQgdGhlIDxjb2RlPkVsZW1lbnQ8L2NvZGU+IHRoYXQgd2lsbCBiZSBsb2FkZWQKKyAgICAgKiBAcmV0dXJuCisgICAgICogQHRocm93cyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIEVuY3J5cHRlZEtleSBsb2FkRW5jcnlwdGVkS2V5KEVsZW1lbnQgZWxlbWVudCkgCisJdGhyb3dzIFhNTEVuY3J5cHRpb25FeGNlcHRpb24geworCisJcmV0dXJuIChsb2FkRW5jcnlwdGVkS2V5KGVsZW1lbnQuZ2V0T3duZXJEb2N1bWVudCgpLCBlbGVtZW50KSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRW5jcnlwdHMgYSBrZXkgdG8gYW4gRW5jcnlwdGVkS2V5IHN0cnVjdHVyZQorICAgICAqCisgICAgICogQHBhcmFtIGRvYyB0aGUgQ29udGV4dCBkb2N1bWVudCB0aGF0IHdpbGwgYmUgdXNlZCB0byBnZW5lcmFsIERPTQorICAgICAqIEBwYXJhbSBrZXkgS2V5IHRvIGVuY3J5cHQgKHdpbGwgdXNlIHByZXZpb3VzbHkgc2V0IEtFSyB0byAKKyAgICAgKiBwZXJmb3JtIGVuY3J5cHRpb24KKyAgICAgKiBAcmV0dXJuCisgICAgICogQHRocm93cyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uCisgICAgICovCisKKyAgICBwdWJsaWMgRW5jcnlwdGVkS2V5IGVuY3J5cHRLZXkoRG9jdW1lbnQgZG9jLCBLZXkga2V5KSB0aHJvd3MKKyAgICAgICAgICAgIFhNTEVuY3J5cHRpb25FeGNlcHRpb24geworCisgICAgICAgIGxvZ2dlci5kZWJ1ZygiRW5jcnlwdGluZyBrZXkgLi4uIik7CisKKyAgICAgICAgaWYobnVsbCA9PSBrZXkpIAorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJLZXkgdW5leHBlY3RlZGx5IG51bGwuLi4iKTsKKyAgICAgICAgaWYoX2NpcGhlck1vZGUgIT0gV1JBUF9NT0RFKQorICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJYTUxDaXBoZXIgdW5leHBlY3RlZGx5IG5vdCBpbiBXUkFQX01PREUuLi4iKTsKKworCQlpZiAoX2FsZ29yaXRobSA9PSBudWxsKSB7CisKKwkJCXRocm93IG5ldyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uKCJYTUxDaXBoZXIgaW5zdGFuY2Ugd2l0aG91dCB0cmFuc2Zvcm1hdGlvbiBzcGVjaWZpZWQiKTsKKwkJfQorCisJCV9jb250ZXh0RG9jdW1lbnQgPSBkb2M7CisKKwkJYnl0ZVtdIGVuY3J5cHRlZEJ5dGVzID0gbnVsbDsKKwkJQ2lwaGVyIGM7CisKKwkJaWYgKF9jb250ZXh0Q2lwaGVyID09IG51bGwpIHsKKwkJCS8vIE5vdyBjcmVhdGUgdGhlIHdvcmtpbmcgY2lwaGVyCisKKwkJCVN0cmluZyBqY2VBbGdvcml0aG0gPQorCQkJCUpDRU1hcHBlci50cmFuc2xhdGVVUkl0b0pDRUlEKF9hbGdvcml0aG0pOworCisJCQlsb2dnZXIuZGVidWcoImFsZyA9ICIgKyBqY2VBbGdvcml0aG0pOworCisJCQl0cnkgeworCQkJICAgIGlmIChfcmVxdWVzdGVkSkNFUHJvdmlkZXIgPT0gbnVsbCkKKwkJCQljID0gQ2lwaGVyLmdldEluc3RhbmNlKGpjZUFsZ29yaXRobSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gQ2lwaGVyLmdldEluc3RhbmNlKGpjZUFsZ29yaXRobSwgX3JlcXVlc3RlZEpDRVByb3ZpZGVyKTsKKwkJCX0gY2F0Y2ggKE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiBuc2FlKSB7CisJCQkJdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oImVtcHR5IiwgbnNhZSk7CisJCQl9IGNhdGNoIChOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiBuc3ByZSkgeworCQkJCXRocm93IG5ldyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIG5zcHJlKTsKKwkJCX0gY2F0Y2ggKE5vU3VjaFBhZGRpbmdFeGNlcHRpb24gbnNwYWUpIHsKKwkJCQl0aHJvdyBuZXcgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigiZW1wdHkiLCBuc3BhZSk7CisJCQl9CisJCX0gZWxzZSB7CisJCQljID0gX2NvbnRleHRDaXBoZXI7CisJCX0KKwkJLy8gTm93IHBlcmZvcm0gdGhlIGVuY3J5cHRpb24KKworCQl0cnkgeworCQkJLy8gU2hvdWxkIGludGVybmFsbHkgZ2VuZXJhdGUgYW4gSVYKKwkJCS8vIHRvZG8gLSBhbGxvdyB1c2VyIHRvIHNldCBhbiBJVgorCQkJYy5pbml0KENpcGhlci5XUkFQX01PREUsIF9rZXkpOworCQkJZW5jcnlwdGVkQnl0ZXMgPSBjLndyYXAoa2V5KTsKKwkJfSBjYXRjaCAoSW52YWxpZEtleUV4Y2VwdGlvbiBpa2UpIHsKKwkJCXRocm93IG5ldyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIGlrZSk7CisJCX0gY2F0Y2ggKElsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24gaWJzZSkgeworCQkJdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oImVtcHR5IiwgaWJzZSk7CisJCX0KKworICAgICAgICBTdHJpbmcgYmFzZTY0RW5jb2RlZEVuY3J5cHRlZE9jdGV0cyA9IEJhc2U2NC5lbmNvZGUoZW5jcnlwdGVkQnl0ZXMpOworCisgICAgICAgIGxvZ2dlci5kZWJ1ZygiRW5jcnlwdGVkIGtleSBvY3RldHM6XG4iICsgYmFzZTY0RW5jb2RlZEVuY3J5cHRlZE9jdGV0cyk7CisgICAgICAgIGxvZ2dlci5kZWJ1ZygiRW5jcnlwdGVkIGtleSBvY3RldHMgbGVuZ3RoID0gIiArCisgICAgICAgICAgICBiYXNlNjRFbmNvZGVkRW5jcnlwdGVkT2N0ZXRzLmxlbmd0aCgpKTsKKworCQlDaXBoZXJWYWx1ZSBjdiA9IF9lay5nZXRDaXBoZXJEYXRhKCkuZ2V0Q2lwaGVyVmFsdWUoKTsKKwkJY3Yuc2V0VmFsdWUoYmFzZTY0RW5jb2RlZEVuY3J5cHRlZE9jdGV0cyk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIEVuY3J5cHRpb25NZXRob2QgbWV0aG9kID0gX2ZhY3RvcnkubmV3RW5jcnlwdGlvbk1ldGhvZCgKKyAgICAgICAgICAgICAgICBuZXcgVVJJKF9hbGdvcml0aG0pLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgX2VrLnNldEVuY3J5cHRpb25NZXRob2QobWV0aG9kKTsKKyAgICAgICAgfSBjYXRjaCAoVVJJLk1hbGZvcm1lZFVSSUV4Y2VwdGlvbiBtZnVlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigiZW1wdHkiLCBtZnVlKTsKKyAgICAgICAgfQorCQlyZXR1cm4gX2VrOworCQkKKyAgICB9CisKKwkvKioKKwkgKiBEZWNyeXB0IGEga2V5IGZyb20gYSBwYXNzZWQgaW4gRW5jcnlwdGVkS2V5IHN0cnVjdHVyZQorCSAqCisJICogQHBhcmFtIGVuY3J5cHRlZEtleSBQcmV2aW91c2x5IGxvYWRlZCBFbmNyeXB0ZWRLZXkgdGhhdCBuZWVkcworCSAqIHRvIGJlIGRlY3J5cHRlZC4KKwkgKiBAcGFyYW0gYWxnb3JpdGhtIEFsZ29yaXRobSBmb3IgdGhlIGRlY3J5cHRpb24KKwkgKiBAcmV0dXJuIGEga2V5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmUgdHlwZQorICAgICAqIEB0aHJvd3MgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbgorCSAqLworCisJcHVibGljIEtleSBkZWNyeXB0S2V5KEVuY3J5cHRlZEtleSBlbmNyeXB0ZWRLZXksIFN0cmluZyBhbGdvcml0aG0pIHRocm93cworCSAgICAgICAgICAgIFhNTEVuY3J5cHRpb25FeGNlcHRpb24geworCisgICAgICAgIGxvZ2dlci5kZWJ1ZygiRGVjcnlwdGluZyBrZXkgZnJvbSBwcmV2aW91c2x5IGxvYWRlZCBFbmNyeXB0ZWRLZXkuLi4iKTsKKworICAgICAgICBpZihfY2lwaGVyTW9kZSAhPSBVTldSQVBfTU9ERSkKKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiWE1MQ2lwaGVyIHVuZXhwZWN0ZWRseSBub3QgaW4gVU5XUkFQX01PREUuLi4iKTsKKworCQlpZiAoYWxnb3JpdGhtID09IG51bGwpIHsKKwkJCXRocm93IG5ldyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uKCJDYW5ub3QgZGVjcnlwdCBhIGtleSB3aXRob3V0IGtub3dpbmcgdGhlIGFsZ29yaXRobSIpOworCQl9CisKKwkJaWYgKF9rZXkgPT0gbnVsbCkgeworCisJCQlsb2dnZXIuZGVidWcoIlRyeWluZyB0byBmaW5kIGEgS0VLIHZpYSBrZXkgcmVzb2x2ZXJzIik7CisKKwkJCUtleUluZm8ga2kgPSBlbmNyeXB0ZWRLZXkuZ2V0S2V5SW5mbygpOworCQkJaWYgKGtpICE9IG51bGwpIHsKKwkJCQl0cnkgeworCQkJCQlfa2V5ID0ga2kuZ2V0U2VjcmV0S2V5KCk7CisJCQkJfQorCQkJCWNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJCX0KKwkJCX0KKwkJCWlmIChfa2V5ID09IG51bGwpIHsKKwkJCQlsb2dnZXIuZXJyb3IoIlhNTENpcGhlcjo6ZGVjcnlwdEtleSBjYWxsZWQgd2l0aG91dCBhIEtFSyBhbmQgY2Fubm90IHJlc29sdmUiKTsKKwkJCQl0aHJvdyBuZXcgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigiVW5hYmxlIHRvIGRlY3J5cHQgd2l0aG91dCBhIEtFSyIpOworCQkJfQorCQl9CisKKwkJLy8gT2J0YWluIHRoZSBlbmNyeXB0ZWQgb2N0ZXRzIAorCQlYTUxDaXBoZXJJbnB1dCBjaXBoZXJJbnB1dCA9IG5ldyBYTUxDaXBoZXJJbnB1dChlbmNyeXB0ZWRLZXkpOworCQlieXRlIFtdIGVuY3J5cHRlZEJ5dGVzID0gY2lwaGVySW5wdXQuZ2V0Qnl0ZXMoKTsKKworCQlTdHJpbmcgamNlS2V5QWxnb3JpdGhtID0KKwkJCUpDRU1hcHBlci5nZXRKQ0VLZXlBbGdvcml0aG1Gcm9tVVJJKGFsZ29yaXRobSk7CisJCWxvZ2dlci5kZWJ1ZygiSkNFIEtleSBBbGdvcml0aG06ICIgKyBqY2VLZXlBbGdvcml0aG0pOworCisJCUNpcGhlciBjOworCQlpZiAoX2NvbnRleHRDaXBoZXIgPT0gbnVsbCkgeworCQkJLy8gTm93IGNyZWF0ZSB0aGUgd29ya2luZyBjaXBoZXIKKworCQkJU3RyaW5nIGpjZUFsZ29yaXRobSA9CisJCQkJSkNFTWFwcGVyLnRyYW5zbGF0ZVVSSXRvSkNFSUQoCisJCQkJCWVuY3J5cHRlZEtleS5nZXRFbmNyeXB0aW9uTWV0aG9kKCkuZ2V0QWxnb3JpdGhtKCkpOworCisJCQlsb2dnZXIuZGVidWcoIkpDRSBBbGdvcml0aG0gPSAiICsgamNlQWxnb3JpdGhtKTsKKworCQkJdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX3JlcXVlc3RlZEpDRVByb3ZpZGVyID09IG51bGwpCisJCQkJYyA9IENpcGhlci5nZXRJbnN0YW5jZShqY2VBbGdvcml0aG0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IENpcGhlci5nZXRJbnN0YW5jZShqY2VBbGdvcml0aG0sIF9yZXF1ZXN0ZWRKQ0VQcm92aWRlcik7CisJCQl9IGNhdGNoIChOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24gbnNhZSkgeworCQkJCXRocm93IG5ldyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIG5zYWUpOworCQkJfSBjYXRjaCAoTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24gbnNwcmUpIHsKKwkJCQl0aHJvdyBuZXcgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigiZW1wdHkiLCBuc3ByZSk7CisJCQl9IGNhdGNoIChOb1N1Y2hQYWRkaW5nRXhjZXB0aW9uIG5zcGFlKSB7CisJCQkJdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oImVtcHR5IiwgbnNwYWUpOworCQkJfQorCQl9IGVsc2UgeworCQkJYyA9IF9jb250ZXh0Q2lwaGVyOworCQl9CisKKwkJS2V5IHJldDsKKworCQl0cnkgewkJCisJCQljLmluaXQoQ2lwaGVyLlVOV1JBUF9NT0RFLCBfa2V5KTsKKwkJCXJldCA9IGMudW53cmFwKGVuY3J5cHRlZEJ5dGVzLCBqY2VLZXlBbGdvcml0aG0sIENpcGhlci5TRUNSRVRfS0VZKTsKKwkJCQorCQl9IGNhdGNoIChJbnZhbGlkS2V5RXhjZXB0aW9uIGlrZSkgeworCQkJdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oImVtcHR5IiwgaWtlKTsKKwkJfSBjYXRjaCAoTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIG5zYWUpIHsKKwkJCXRocm93IG5ldyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIG5zYWUpOworCQl9CisKKwkJbG9nZ2VyLmRlYnVnKCJEZWNyeXB0aW9uIG9mIGtleSB0eXBlICIgKyBhbGdvcml0aG0gKyAiIE9LIik7CisKKwkJcmV0dXJuIHJldDsKKworICAgIH0KKwkJCisJLyoqCisJICogRGVjcnlwdCBhIGtleSBmcm9tIGEgcGFzc2VkIGluIEVuY3J5cHRlZEtleSBzdHJ1Y3R1cmUuICBUaGlzIHZlcnNpb24KKwkgKiBpcyB1c2VkIG1haW5seSBpbnRlcm5hbGx5LCB3aGVuICB0aGUgY2lwaGVyIGFscmVhZHkgaGFzIGFuCisJICogRW5jcnlwdGVkRGF0YSBsb2FkZWQuICBUaGUgYWxnb3JpdGhtIFVSSSB3aWxsIGJlIHJlYWQgZnJvbSB0aGUgCisJICogRW5jcnlwdGVkRGF0YQorCSAqCisJICogQHBhcmFtIGVuY3J5cHRlZEtleSBQcmV2aW91c2x5IGxvYWRlZCBFbmNyeXB0ZWRLZXkgdGhhdCBuZWVkcworCSAqIHRvIGJlIGRlY3J5cHRlZC4KKwkgKiBAcmV0dXJuIGEga2V5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmUgdHlwZQorICAgICAqIEB0aHJvd3MgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbgorCSAqLworCisJcHVibGljIEtleSBkZWNyeXB0S2V5KEVuY3J5cHRlZEtleSBlbmNyeXB0ZWRLZXkpIHRocm93cworCSAgICAgICAgICAgIFhNTEVuY3J5cHRpb25FeGNlcHRpb24geworCisJCXJldHVybiBkZWNyeXB0S2V5KGVuY3J5cHRlZEtleSwgX2VkLmdldEVuY3J5cHRpb25NZXRob2QoKS5nZXRBbGdvcml0aG0oKSk7CisKKwl9CisKKyAgICAvKioKKyAgICAgKiBSZW1vdmVzIHRoZSBjb250ZW50cyBvZiBhIDxjb2RlPk5vZGU8L2NvZGU+LgorICAgICAqCisgICAgICogQHBhcmFtIG5vZGUgdGhlIDxjb2RlPk5vZGU8L2NvZGU+IHRvIGNsZWFyLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgcmVtb3ZlQ29udGVudChOb2RlIG5vZGUpIHsKKyAgICAgICB3aGlsZSAobm9kZS5oYXNDaGlsZE5vZGVzKCkpIHsKKyAgICAgICAgICAgIG5vZGUucmVtb3ZlQ2hpbGQobm9kZS5nZXRGaXJzdENoaWxkKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogRGVjcnlwdHMgPGNvZGU+RW5jcnlwdGVkRGF0YTwvY29kZT4gaW4gYSBzaW5nbGUtcGFydCBvcGVyYXRpb24uCisgICAgICoKKyAgICAgKiBAcGFyYW0gZWxlbWVudCB0aGUgPGNvZGU+RW5jcnlwdGVkRGF0YTwvY29kZT4gdG8gZGVjcnlwdC4KKyAgICAgKiBAcmV0dXJuIHRoZSA8Y29kZT5Ob2RlPC9jb2RlPiBhcyBhIHJlc3VsdCBvZiB0aGUgZGVjcnlwdCBvcGVyYXRpb24uCisgICAgICogQHRocm93cyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHJpdmF0ZSBEb2N1bWVudCBkZWNyeXB0RWxlbWVudChFbGVtZW50IGVsZW1lbnQpIHRocm93cworICAgICAgICAgICAgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbiB7CisKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCJEZWNyeXB0aW5nIGVsZW1lbnQuLi4iKTsKKworICAgICAgICBpZihfY2lwaGVyTW9kZSAhPSBERUNSWVBUX01PREUpCisgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIlhNTENpcGhlciB1bmV4cGVjdGVkbHkgbm90IGluIERFQ1JZUFRfTU9ERS4uLiIpOworCisJCVN0cmluZyBvY3RldHM7CisJCXRyeSB7CisJCQlvY3RldHMgPSBuZXcgU3RyaW5nKGRlY3J5cHRUb0J5dGVBcnJheShlbGVtZW50KSwgIlVURi04Iik7CisJCX0gY2F0Y2ggKFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gdWVlKSB7CisJCQl0aHJvdyBuZXcgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigiZW1wdHkiLCB1ZWUpOworCQl9CisKKworICAgICAgICBsb2dnZXIuZGVidWcoIkRlY3J5cHRlZCBvY3RldHM6XG4iICsgb2N0ZXRzKTsKKworICAgICAgICBOb2RlIHNvdXJjZVBhcmVudCA9ICBlbGVtZW50LmdldFBhcmVudE5vZGUoKTsKKworICAgICAgICBEb2N1bWVudEZyYWdtZW50IGRlY3J5cHRlZEZyYWdtZW50ID0gCisJCQlfc2VyaWFsaXplci5kZXNlcmlhbGl6ZShvY3RldHMsIHNvdXJjZVBhcmVudCk7CisKKworCQkvLyBUaGUgZGUtc2VyaWFsaXNlciByZXR1cm5zIGEgZnJhZ21lbnQgd2hvc2UgY2hpbGRyZW4gd2UgbmVlZCB0bworCQkvLyB0YWtlIG9uLgorCisJCWlmIChzb3VyY2VQYXJlbnQgIT0gbnVsbCAmJiBOb2RlLkRPQ1VNRU5UX05PREUgPT0gc291cmNlUGFyZW50LmdldE5vZGVUeXBlKCkpIHsKKwkJCQorCQkgICAgLy8gSWYgdGhpcyBpcyBhIGNvbnRlbnQgZGVjcnlwdGlvbiwgdGhpcyBtYXkgaGF2ZSBwcm9ibGVtcworCisJCSAgICBfY29udGV4dERvY3VtZW50LnJlbW92ZUNoaWxkKF9jb250ZXh0RG9jdW1lbnQuZ2V0RG9jdW1lbnRFbGVtZW50KCkpOworCQkgICAgX2NvbnRleHREb2N1bWVudC5hcHBlbmRDaGlsZChkZWNyeXB0ZWRGcmFnbWVudCk7CisJCX0KKwkJZWxzZSB7CisJCSAgICBzb3VyY2VQYXJlbnQucmVwbGFjZUNoaWxkKGRlY3J5cHRlZEZyYWdtZW50LCBlbGVtZW50KTsKKworCQl9CisKKyAgICAgICAgcmV0dXJuIChfY29udGV4dERvY3VtZW50KTsKKyAgICB9CisgICAgCisKKwkvKioKKwkgKiAKKwkgKiBAcGFyYW0gZWxlbWVudAorICAgICAqIEByZXR1cm4KKyAgICAgKiBAdGhyb3dzIFhNTEVuY3J5cHRpb25FeGNlcHRpb24KKwkgKi8KKyAgICBwcml2YXRlIERvY3VtZW50IGRlY3J5cHRFbGVtZW50Q29udGVudChFbGVtZW50IGVsZW1lbnQpIHRocm93cyAKKyAgICAJCVhNTEVuY3J5cHRpb25FeGNlcHRpb24geworICAgIAlFbGVtZW50IGUgPSAoRWxlbWVudCkgZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKAorICAgIAkJRW5jcnlwdGlvbkNvbnN0YW50cy5FbmNyeXB0aW9uU3BlY05TLCAKKyAgICAJCUVuY3J5cHRpb25Db25zdGFudHMuX1RBR19FTkNSWVBURUREQVRBKS5pdGVtKDApOworICAgIAkKKyAgICAJaWYgKG51bGwgPT0gZSkgeworICAgIAkJdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oIk5vIEVuY3J5cHRlZERhdGEgY2hpbGQgZWxlbWVudC4iKTsKKyAgICAJfQorICAgIAkKKyAgICAJcmV0dXJuIChkZWNyeXB0RWxlbWVudChlKSk7CisgICAgfQorCisJLyoqCisJICogRGVjcnlwdCBhbiBFbmNyeXB0ZWREYXRhIGVsZW1lbnQgdG8gYSBieXRlIGFycmF5CisJICoKKwkgKiBXaGVuIHBhc3NlZCBpbiBhbiBFbmNyeXB0ZWREYXRhIG5vZGUsIHJldHVybnMgdGhlIGRlY3J5cHRpb24KKwkgKiBhcyBhIGJ5dGUgYXJyYXkuCisJICoKKwkgKiBEb2VzIG5vdCBtb2RpZnkgdGhlIHNvdXJjZSBkb2N1bWVudAorICAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgICogQHJldHVybgorICAgICAqIEB0aHJvd3MgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbgorCSAqLworCisgICAgcHVibGljIGJ5dGVbXSBkZWNyeXB0VG9CeXRlQXJyYXkoRWxlbWVudCBlbGVtZW50KSAKKwkJdGhyb3dzIFhNTEVuY3J5cHRpb25FeGNlcHRpb24geworCQkKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCJEZWNyeXB0aW5nIHRvIEJ5dGVBcnJheS4uLiIpOworCisgICAgICAgIGlmKF9jaXBoZXJNb2RlICE9IERFQ1JZUFRfTU9ERSkKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiWE1MQ2lwaGVyIHVuZXhwZWN0ZWRseSBub3QgaW4gREVDUllQVF9NT0RFLi4uIik7CisKKyAgICAgICAgRW5jcnlwdGVkRGF0YSBlbmNyeXB0ZWREYXRhID0gX2ZhY3RvcnkubmV3RW5jcnlwdGVkRGF0YShlbGVtZW50KTsKKworCWlmIChfa2V5ID09IG51bGwpIHsKKworCSAgICBLZXlJbmZvIGtpID0gZW5jcnlwdGVkRGF0YS5nZXRLZXlJbmZvKCk7CisKKwkgICAgaWYgKGtpICE9IG51bGwpIHsKKwkJdHJ5IHsKKwkJICAgIC8vIEFkZCBhIEVuY3J5cHRlZEtleSByZXNvbHZlcgorCQkgICAga2kucmVnaXN0ZXJJbnRlcm5hbEtleVJlc29sdmVyKAorCQkgICAgICAgIG5ldyBFbmNyeXB0ZWRLZXlSZXNvbHZlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNyeXB0ZWREYXRhLmdldEVuY3J5cHRpb25NZXRob2QoKS5nZXRBbGdvcml0aG0oKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2tlaykpOworCQkgICAgX2tleSA9IGtpLmdldFNlY3JldEtleSgpOworCQl9IGNhdGNoIChLZXlSZXNvbHZlckV4Y2VwdGlvbiBrcmUpIHsKKwkJICAgIC8vIFdlIHdpbGwgdGhyb3cgaW4gYSBzZWNvbmQuLi4KKwkJfQorCSAgICB9CisKKwkgICAgaWYgKF9rZXkgPT0gbnVsbCkgeworCQlsb2dnZXIuZXJyb3IoIlhNTENpcGhlcjo6ZGVjcnlwdEVsZW1lbnQgY2FsbGVkIHdpdGhvdXQgYSBrZXkgYW5kIHVuYWJsZSB0byByZXNvbHZlIik7CisKKwkJdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oImVuY3J5cHRpb24ubm9rZXkiKTsKKwkgICAgfQorCX0KKworCQkvLyBPYnRhaW4gdGhlIGVuY3J5cHRlZCBvY3RldHMgCisJCVhNTENpcGhlcklucHV0IGNpcGhlcklucHV0ID0gbmV3IFhNTENpcGhlcklucHV0KGVuY3J5cHRlZERhdGEpOworCQlieXRlIFtdIGVuY3J5cHRlZEJ5dGVzID0gY2lwaGVySW5wdXQuZ2V0Qnl0ZXMoKTsKKworCQkvLyBOb3cgY3JlYXRlIHRoZSB3b3JraW5nIGNpcGhlcgorCisJCVN0cmluZyBqY2VBbGdvcml0aG0gPSAKKwkJCUpDRU1hcHBlci50cmFuc2xhdGVVUkl0b0pDRUlEKGVuY3J5cHRlZERhdGEuZ2V0RW5jcnlwdGlvbk1ldGhvZCgpLmdldEFsZ29yaXRobSgpKTsKKwkJbG9nZ2VyLmRlYnVnKCJKQ0UgQWxnb3JpdGhtID0gIiArIGpjZUFsZ29yaXRobSk7CisKKwkJQ2lwaGVyIGM7CisJCXRyeSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChfcmVxdWVzdGVkSkNFUHJvdmlkZXIgPT0gbnVsbCkKKwkJCWMgPSBDaXBoZXIuZ2V0SW5zdGFuY2UoamNlQWxnb3JpdGhtKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgYyA9IENpcGhlci5nZXRJbnN0YW5jZShqY2VBbGdvcml0aG0sIF9yZXF1ZXN0ZWRKQ0VQcm92aWRlcik7CisJCX0gY2F0Y2ggKE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiBuc2FlKSB7CisJCQl0aHJvdyBuZXcgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigiZW1wdHkiLCBuc2FlKTsKKwkJfSBjYXRjaCAoTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24gbnNwcmUpIHsKKwkJCXRocm93IG5ldyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIG5zcHJlKTsKKwkJfSBjYXRjaCAoTm9TdWNoUGFkZGluZ0V4Y2VwdGlvbiBuc3BhZSkgeworCQkJdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oImVtcHR5IiwgbnNwYWUpOworCQl9CisKKwkJLy8gQ2FsY3VsYXRlIHRoZSBJViBsZW5ndGggYW5kIGNvcHkgb3V0CisKKwkJLy8gRm9yIG5vdywgd2Ugb25seSB3b3JrIHdpdGggQmxvY2sgY2lwaGVycywgc28gdGhpcyB3aWxsIHdvcmsuCisJCS8vIFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIHB1dCBpbnRvIHRoZSBKQ0UgbWFwcGVyLgorCisJCWludCBpdkxlbiA9IGMuZ2V0QmxvY2tTaXplKCk7CisJCWJ5dGVbXSBpdkJ5dGVzID0gbmV3IGJ5dGVbaXZMZW5dOworCisJCS8vIFlvdSBtYXkgYmUgYWJsZSB0byBwYXNzIHRoZSBlbnRpcmUgcGllY2UgaW4gdG8gSXZQYXJhbWV0ZXJTcGVjCisJCS8vIGFuZCBpdCB3aWxsIG9ubHkgdGFrZSB0aGUgZmlyc3QgeCBieXRlcywgYnV0IG5vIHdheSB0byBiZSBjZXJ0YWluCisJCS8vIHRoYXQgdGhpcyB3aWxsIHdvcmsgZm9yIGV2ZXJ5IEpDRSBwcm92aWRlciwgc28gbGV0cyBjb3B5IHRoZQorCQkvLyBuZWNlc3NhcnkgYnl0ZXMgaW50byBhIGRlZGljYXRlZCBhcnJheS4KKworCQlTeXN0ZW0uYXJyYXljb3B5KGVuY3J5cHRlZEJ5dGVzLCAwLCBpdkJ5dGVzLCAwLCBpdkxlbik7CisJCUl2UGFyYW1ldGVyU3BlYyBpdiA9IG5ldyBJdlBhcmFtZXRlclNwZWMoaXZCeXRlcyk7CQkKKwkJCisJCXRyeSB7CisJCQljLmluaXQoX2NpcGhlck1vZGUsIF9rZXksIGl2KTsKKwkJfSBjYXRjaCAoSW52YWxpZEtleUV4Y2VwdGlvbiBpa2UpIHsKKwkJCXRocm93IG5ldyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIGlrZSk7CisJCX0gY2F0Y2ggKEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24gaWFwZSkgeworCQkJdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oImVtcHR5IiwgaWFwZSk7CisJCX0KKworCQlieXRlW10gcGxhaW5CeXRlczsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgcGxhaW5CeXRlcyA9IGMuZG9GaW5hbChlbmNyeXB0ZWRCeXRlcywgCisJCQkJCQkJCSAgIGl2TGVuLCAKKwkJCQkJCQkJICAgZW5jcnlwdGVkQnl0ZXMubGVuZ3RoIC0gaXZMZW4pOworCisgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24gaWJzZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oImVtcHR5IiwgaWJzZSk7CisgICAgICAgIH0gY2F0Y2ggKEJhZFBhZGRpbmdFeGNlcHRpb24gYnBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigiZW1wdHkiLCBicGUpOworICAgICAgICB9CisJCQorICAgICAgICByZXR1cm4gKHBsYWluQnl0ZXMpOworICAgIH0KKwkJCisJLyoKKwkgKiBFeHBvc2UgdGhlIGludGVyZmFjZSBmb3IgY3JlYXRpbmcgWE1MIEVuY3J5cHRpb24gb2JqZWN0cworCSAqLworCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhbiA8Y29kZT5FbmNyeXB0ZWREYXRhPC9jb2RlPiA8Y29kZT5FbGVtZW50PC9jb2RlPi4KKyAgICAgKgorCSAqIFRoZSBuZXdFbmNyeXB0ZWREYXRhIGFuZCBuZXdFbmNyeXB0ZWRLZXkgbWV0aG9kcyBjcmVhdGUgZmFpcmx5IGNvbXBsZXRlCisJICogZWxlbWVudHMgdGhhdCBhcmUgaW1tZWRpYXRlbHkgdXNlYWJsZS4gIEFsbCB0aGUgb3RoZXIgY3JlYXRlKiBtZXRob2RzCisJICogcmV0dXJuIGJhcmUgZWxlbWVudHMgdGhhdCBzdGlsbCBuZWVkIHRvIGJlIGJ1aWx0IHVwb24uCisJICo8cD4KKwkgKiBBbiBFbmNyeXB0aW9uTWV0aG9kIHdpbGwgc3RpbGwgbmVlZCB0byBiZSBhZGRlZCBob3dldmVyCisJICoKKwkgKiBAcGFyYW0gdHlwZSBFaXRoZXIgUkVGRVJFTkNFX1RZUEUgb3IgVkFMVUVfVFlQRSAtIGRlZmluZXMgd2hhdCBraW5kIG9mCisJICogQ2lwaGVyRGF0YSB0aGlzIEVuY3J5cHRlZERhdGEgd2lsbCBjb250YWluLgorICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgQmFzZSA2NCBlbmNvZGVkLCBlbmNyeXB0ZWQgdGV4dCB0byB3cmFwIGluIHRoZQorICAgICAqICAgPGNvZGU+RW5jcnlwdGVkRGF0YTwvY29kZT4gb3IgdGhlIFVSSSB0byBzZXQgaW4gdGhlIENpcGhlclJlZmVyZW5jZQorCSAqICh1c2FnZSB3aWxsIGRlcGVuZCBvbiB0aGUgPGNvZGU+dHlwZTwvY29kZT4KKyAgICAgKiBAcmV0dXJuIHRoZSA8Y29kZT5FbmNyeXB0ZWREYXRhPC9jb2RlPiA8Y29kZT5FbGVtZW50PC9jb2RlPi4KKyAgICAgKgorICAgICAqIDwhLS0KKyAgICAgKiA8RW5jcnlwdGVkRGF0YSBJZFtPUFRdIFR5cGVbT1BUXSBNaW1lVHlwZVtPUFRdIEVuY29kaW5nW09QVF0+CisgICAgICogICAgIDxFbmNyeXB0aW9uTWV0aG9kLz5bT1BUXQorICAgICAqICAgICA8ZHM6S2V5SW5mbz5bT1BUXQorICAgICAqICAgICAgICAgPEVuY3J5cHRlZEtleS8+W09QVF0KKyAgICAgKiAgICAgICAgIDxBZ3JlZW1lbnRNZXRob2QvPltPUFRdCisgICAgICogICAgICAgICA8ZHM6S2V5TmFtZS8+W09QVF0KKyAgICAgKiAgICAgICAgIDxkczpSZXRyaWV2YWxNZXRob2QvPltPUFRdCisgICAgICogICAgICAgICA8ZHM6W01VTF0vPltPUFRdCisgICAgICogICAgIDwvZHM6S2V5SW5mbz4KKyAgICAgKiAgICAgPENpcGhlckRhdGE+W01BTl0KKyAgICAgKiAgICAgICAgIDxDaXBoZXJWYWx1ZS8+IFhPUiA8Q2lwaGVyUmVmZXJlbmNlLz4KKyAgICAgKiAgICAgPC9DaXBoZXJEYXRhPgorICAgICAqICAgICA8RW5jcnlwdGlvblByb3BlcnRpZXMvPltPUFRdCisgICAgICogPC9FbmNyeXB0ZWREYXRhPgorICAgICAqIC0tPgorICAgICAqIEB0aHJvd3MgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbgorICAgICAqLworCisgICAgcHVibGljIEVuY3J5cHRlZERhdGEgY3JlYXRlRW5jcnlwdGVkRGF0YShpbnQgdHlwZSwgU3RyaW5nIHZhbHVlKSB0aHJvd3MKKyAgICAgICAgICAgIFhNTEVuY3J5cHRpb25FeGNlcHRpb24geworICAgICAgICBFbmNyeXB0ZWREYXRhIHJlc3VsdCA9IG51bGw7CisgICAgICAgIENpcGhlckRhdGEgZGF0YSA9IG51bGw7CisKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgICAgICBjYXNlIENpcGhlckRhdGEuUkVGRVJFTkNFX1RZUEU6CisgICAgICAgICAgICAgICAgQ2lwaGVyUmVmZXJlbmNlIGNpcGhlclJlZmVyZW5jZSA9IF9mYWN0b3J5Lm5ld0NpcGhlclJlZmVyZW5jZSgKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUpOworICAgICAgICAgICAgICAgIGRhdGEgPSBfZmFjdG9yeS5uZXdDaXBoZXJEYXRhKHR5cGUpOworICAgICAgICAgICAgICAgIGRhdGEuc2V0Q2lwaGVyUmVmZXJlbmNlKGNpcGhlclJlZmVyZW5jZSk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gX2ZhY3RvcnkubmV3RW5jcnlwdGVkRGF0YShkYXRhKTsKKwkJCQlicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ2lwaGVyRGF0YS5WQUxVRV9UWVBFOgorICAgICAgICAgICAgICAgIENpcGhlclZhbHVlIGNpcGhlclZhbHVlID0gX2ZhY3RvcnkubmV3Q2lwaGVyVmFsdWUodmFsdWUpOworICAgICAgICAgICAgICAgIGRhdGEgPSBfZmFjdG9yeS5uZXdDaXBoZXJEYXRhKHR5cGUpOworICAgICAgICAgICAgICAgIGRhdGEuc2V0Q2lwaGVyVmFsdWUoY2lwaGVyVmFsdWUpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IF9mYWN0b3J5Lm5ld0VuY3J5cHRlZERhdGEoZGF0YSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gKHJlc3VsdCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhbiA8Y29kZT5FbmNyeXB0ZWRLZXk8L2NvZGU+IDxjb2RlPkVsZW1lbnQ8L2NvZGU+LgorICAgICAqCisJICogVGhlIG5ld0VuY3J5cHRlZERhdGEgYW5kIG5ld0VuY3J5cHRlZEtleSBtZXRob2RzIGNyZWF0ZSBmYWlybHkgY29tcGxldGUKKwkgKiBlbGVtZW50cyB0aGF0IGFyZSBpbW1lZGlhdGVseSB1c2VhYmxlLiAgQWxsIHRoZSBvdGhlciBjcmVhdGUqIG1ldGhvZHMKKwkgKiByZXR1cm4gYmFyZSBlbGVtZW50cyB0aGF0IHN0aWxsIG5lZWQgdG8gYmUgYnVpbHQgdXBvbi4KKwkgKjxwPgorCSAqIEFuIEVuY3J5cHRpb25NZXRob2Qgd2lsbCBzdGlsbCBuZWVkIHRvIGJlIGFkZGVkIGhvd2V2ZXIKKwkgKgorCSAqIEBwYXJhbSB0eXBlIEVpdGhlciBSRUZFUkVOQ0VfVFlQRSBvciBWQUxVRV9UWVBFIC0gZGVmaW5lcyB3aGF0IGtpbmQgb2YKKwkgKiBDaXBoZXJEYXRhIHRoaXMgRW5jcnlwdGVkRGF0YSB3aWxsIGNvbnRhaW4uCisgICAgICogQHBhcmFtIHZhbHVlIHRoZSBCYXNlIDY0IGVuY29kZWQsIGVuY3J5cHRlZCB0ZXh0IHRvIHdyYXAgaW4gdGhlCisgICAgICogICA8Y29kZT5FbmNyeXB0ZWRLZXk8L2NvZGU+IG9yIHRoZSBVUkkgdG8gc2V0IGluIHRoZSBDaXBoZXJSZWZlcmVuY2UKKwkgKiAodXNhZ2Ugd2lsbCBkZXBlbmQgb24gdGhlIDxjb2RlPnR5cGU8L2NvZGU+CisgICAgICogQHJldHVybiB0aGUgPGNvZGU+RW5jcnlwdGVkS2V5PC9jb2RlPiA8Y29kZT5FbGVtZW50PC9jb2RlPi4KKyAgICAgKgorICAgICAqIDwhLS0KKyAgICAgKiA8RW5jcnlwdGVkS2V5IElkW09QVF0gVHlwZVtPUFRdIE1pbWVUeXBlW09QVF0gRW5jb2RpbmdbT1BUXT4KKyAgICAgKiAgICAgPEVuY3J5cHRpb25NZXRob2QvPltPUFRdCisgICAgICogICAgIDxkczpLZXlJbmZvPltPUFRdCisgICAgICogICAgICAgICA8RW5jcnlwdGVkS2V5Lz5bT1BUXQorICAgICAqICAgICAgICAgPEFncmVlbWVudE1ldGhvZC8+W09QVF0KKyAgICAgKiAgICAgICAgIDxkczpLZXlOYW1lLz5bT1BUXQorICAgICAqICAgICAgICAgPGRzOlJldHJpZXZhbE1ldGhvZC8+W09QVF0KKyAgICAgKiAgICAgICAgIDxkczpbTVVMXS8+W09QVF0KKyAgICAgKiAgICAgPC9kczpLZXlJbmZvPgorICAgICAqICAgICA8Q2lwaGVyRGF0YT5bTUFOXQorICAgICAqICAgICAgICAgPENpcGhlclZhbHVlLz4gWE9SIDxDaXBoZXJSZWZlcmVuY2UvPgorICAgICAqICAgICA8L0NpcGhlckRhdGE+CisgICAgICogICAgIDxFbmNyeXB0aW9uUHJvcGVydGllcy8+W09QVF0KKyAgICAgKiA8L0VuY3J5cHRlZERhdGE+CisgICAgICogLS0+CisgICAgICogQHRocm93cyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uCisgICAgICovCisKKyAgICBwdWJsaWMgRW5jcnlwdGVkS2V5IGNyZWF0ZUVuY3J5cHRlZEtleShpbnQgdHlwZSwgU3RyaW5nIHZhbHVlKSB0aHJvd3MKKyAgICAgICAgICAgIFhNTEVuY3J5cHRpb25FeGNlcHRpb24geworICAgICAgICBFbmNyeXB0ZWRLZXkgcmVzdWx0ID0gbnVsbDsKKyAgICAgICAgQ2lwaGVyRGF0YSBkYXRhID0gbnVsbDsKKworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgQ2lwaGVyRGF0YS5SRUZFUkVOQ0VfVFlQRToKKyAgICAgICAgICAgICAgICBDaXBoZXJSZWZlcmVuY2UgY2lwaGVyUmVmZXJlbmNlID0gX2ZhY3RvcnkubmV3Q2lwaGVyUmVmZXJlbmNlKAorICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CisgICAgICAgICAgICAgICAgZGF0YSA9IF9mYWN0b3J5Lm5ld0NpcGhlckRhdGEodHlwZSk7CisgICAgICAgICAgICAgICAgZGF0YS5zZXRDaXBoZXJSZWZlcmVuY2UoY2lwaGVyUmVmZXJlbmNlKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBfZmFjdG9yeS5uZXdFbmNyeXB0ZWRLZXkoZGF0YSk7CisJCQkJYnJlYWs7CisgICAgICAgICAgICBjYXNlIENpcGhlckRhdGEuVkFMVUVfVFlQRToKKyAgICAgICAgICAgICAgICBDaXBoZXJWYWx1ZSBjaXBoZXJWYWx1ZSA9IF9mYWN0b3J5Lm5ld0NpcGhlclZhbHVlKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBkYXRhID0gX2ZhY3RvcnkubmV3Q2lwaGVyRGF0YSh0eXBlKTsKKyAgICAgICAgICAgICAgICBkYXRhLnNldENpcGhlclZhbHVlKGNpcGhlclZhbHVlKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBfZmFjdG9yeS5uZXdFbmNyeXB0ZWRLZXkoZGF0YSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gKHJlc3VsdCk7CisgICAgfQorCisJLyoqCisJICogQ3JlYXRlIGFuIEFncmVlbWVudE1ldGhvZCBvYmplY3QKKwkgKgorCSAqIEBwYXJhbSBhbGdvcml0aG0gQWxnb3JpdGhtIG9mIHRoZSBhZ3JlZW1lbnQgbWV0aG9kCisgICAgICogQHJldHVybgorCSAqLworCisJcHVibGljIEFncmVlbWVudE1ldGhvZCBjcmVhdGVBZ3JlZW1lbnRNZXRob2QoU3RyaW5nIGFsZ29yaXRobSkgeworCQlyZXR1cm4gKF9mYWN0b3J5Lm5ld0FncmVlbWVudE1ldGhvZChhbGdvcml0aG0pKTsKKwl9CisKKwkvKioKKwkgKiBDcmVhdGUgYSBDaXBoZXJEYXRhIG9iamVjdAorCSAqCisJICogQHBhcmFtIHR5cGUgVHlwZSBvZiB0aGlzIENpcGhlckRhdGEgKGVpdGhlciBWQUxVRV9UVVBFIG9yCisJICogUkVGRVJFTkNFX1RZUEUpCisJICogQHJldHVybgorCSAqLworCisJcHVibGljIENpcGhlckRhdGEgY3JlYXRlQ2lwaGVyRGF0YShpbnQgdHlwZSkgeworCQlyZXR1cm4gKF9mYWN0b3J5Lm5ld0NpcGhlckRhdGEodHlwZSkpOworCX0KKworCS8qKgorCSAqIENyZWF0ZSBhIENpcGhlclJlZmVyZW5jZSBvYmplY3QKKwkgKgorICAgICAqIEByZXR1cm4KKwkgKiBAcGFyYW0gdXJpIFRoZSBVUkkgdGhhdCB0aGUgcmVmZXJlbmNlIHdpbGwgcmVmZXIgCisJICovCisKKwlwdWJsaWMgQ2lwaGVyUmVmZXJlbmNlIGNyZWF0ZUNpcGhlclJlZmVyZW5jZShTdHJpbmcgdXJpKSB7CisJCXJldHVybiAoX2ZhY3RvcnkubmV3Q2lwaGVyUmVmZXJlbmNlKHVyaSkpOworCX0KKwkKKwkvKioKKwkgKiBDcmVhdGUgYSBDaXBoZXJWYWx1ZSBlbGVtZW50CisJICoKKwkgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldCB0aGUgY2lwaGVydGV4dCB0bworICAgICAqIEByZXR1cm4KKwkgKi8KKworCXB1YmxpYyBDaXBoZXJWYWx1ZSBjcmVhdGVDaXBoZXJWYWx1ZShTdHJpbmcgdmFsdWUpIHsKKwkJcmV0dXJuIChfZmFjdG9yeS5uZXdDaXBoZXJWYWx1ZSh2YWx1ZSkpOworCX0KKworCS8qKgorCSAqIENyZWF0ZSBhbiBFbmNyeXB0ZWRNZXRob2Qgb2JqZWN0CisJICoKKwkgKiBAcGFyYW0gYWxnb3JpdGhtIEFsZ29yaXRobSBmb3IgdGhlIGVuY3J5cHRpb24KKyAgICAgKiBAcmV0dXJuCisJICovCisJcHVibGljIEVuY3J5cHRpb25NZXRob2QgY3JlYXRlRW5jcnlwdGlvbk1ldGhvZChTdHJpbmcgYWxnb3JpdGhtKSB7CisJCXJldHVybiAoX2ZhY3RvcnkubmV3RW5jcnlwdGlvbk1ldGhvZChhbGdvcml0aG0pKTsKKwl9CisKKwkvKioKKwkgKiBDcmVhdGUgYW4gRW5jcnlwdGVkUHJvcGVydGllcyBlbGVtZW50CisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBFbmNyeXB0aW9uUHJvcGVydGllcyBjcmVhdGVFbmNyeXB0aW9uUHJvcGVydGllcygpIHsKKwkJcmV0dXJuIChfZmFjdG9yeS5uZXdFbmNyeXB0aW9uUHJvcGVydGllcygpKTsKKwl9CisKKwkvKioKKwkgKiBDcmVhdGUgYSBuZXcgRW5jcnlwdGlvblByb3BlcnR5IGVsZW1lbnQKKyAgICAgKiBAcmV0dXJuCisJICovCisJcHVibGljIEVuY3J5cHRpb25Qcm9wZXJ0eSBjcmVhdGVFbmNyeXB0aW9uUHJvcGVydHkoKSB7CisJCXJldHVybiAoX2ZhY3RvcnkubmV3RW5jcnlwdGlvblByb3BlcnR5KCkpOworCX0KKworCS8qKgorCSAqIENyZWF0ZSBhIG5ldyBSZWZlcmVuY2VMaXN0IG9iamVjdAorICAgICAqIEByZXR1cm4KKyAgICAgKiBAcGFyYW0gdHlwZQorCSAqLworCXB1YmxpYyBSZWZlcmVuY2VMaXN0IGNyZWF0ZVJlZmVyZW5jZUxpc3QoaW50IHR5cGUpIHsKKwkJcmV0dXJuIChfZmFjdG9yeS5uZXdSZWZlcmVuY2VMaXN0KHR5cGUpKTsKKwl9CisJCisJLyoqCisJICogQ3JlYXRlIGEgbmV3IFRyYW5zZm9ybXMgb2JqZWN0CisJICogPHA+CisJICogPGI+Tm90ZTwvYj46IEEgY29udGV4dCBkb2N1bWVudCA8aT5tdXN0PC9pPiBoYXZlIGJlZW4gc2V0CisJICogZWxzZXdoZXJlIChwb3NzaWJseSB2aWEgYSBjYWxsIHRvIGRvRmluYWwpLiAgSWYgbm90LCB1c2UgdGhlCisJICogY3JlYXRlVHJhbnNmb3JtcyhEb2N1bWVudCkgbWV0aG9kLgorICAgICAqIEByZXR1cm4KKwkgKi8KKworCXB1YmxpYyBUcmFuc2Zvcm1zIGNyZWF0ZVRyYW5zZm9ybXMoKSB7CisJCXJldHVybiAoX2ZhY3RvcnkubmV3VHJhbnNmb3JtcygpKTsKKwl9CisKKwkvKioKKwkgKiBDcmVhdGUgYSBuZXcgVHJhbnNmb3JtcyBvYmplY3QKKwkgKgorCSAqIEJlY2F1c2UgdGhlIGhhbmRsaW5nIG9mIFRyYW5zZm9ybXMgaXMgY3VycmVudGx5IGRvbmUgaW4gdGhlIHNpZ25hdHVyZQorCSAqIGNvZGUsIHRoZSBjcmVhdGlvbiBvZiBhIFRyYW5zZm9ybXMgb2JqZWN0IDxiPnJlcXVpcmVzPC9iPiBhCisJICogY29udGV4dCBkb2N1bWVudC4KKwkgKgorCSAqIEBwYXJhbSBkb2MgRG9jdW1lbnQgdGhhdCB3aWxsIG93biB0aGUgY3JlYXRlZCBUcmFuc2Zvcm1zIG5vZGUKKyAgICAgKiBAcmV0dXJuCisJICovCisJcHVibGljIFRyYW5zZm9ybXMgY3JlYXRlVHJhbnNmb3JtcyhEb2N1bWVudCBkb2MpIHsKKwkJcmV0dXJuIChfZmFjdG9yeS5uZXdUcmFuc2Zvcm1zKGRvYykpOworCX0KKworICAgIC8qKgorICAgICAqIENvbnZlcnRzIDxjb2RlPlN0cmluZzwvY29kZT5zIGludG8gPGNvZGU+Tm9kZTwvY29kZT5zIGFuZCB2aXNhIHZlcnNhLgorICAgICAqIDxwPgorICAgICAqIDxiPk5PVEU6PC9iPiBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuCisgICAgICoKKyAgICAgKiBAYXV0aG9yICBBeGwgTWF0dGhldXMKKyAgICAgKi8KKworICAgIHByaXZhdGUgY2xhc3MgU2VyaWFsaXplciB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBJbml0aWFsaXplIHRoZSA8Y29kZT5YTUxTZXJpYWxpemVyPC9jb2RlPiB3aXRoIHRoZSBzcGVjaWZpZWQgY29udGV4dAorICAgICAgICAgKiA8Y29kZT5Eb2N1bWVudDwvY29kZT4uCisgICAgICAgICAqIDxwLz4KKyAgICAgICAgICogU2V0dXAgT3V0cHV0Rm9ybWF0IGluIGEgd2F5IHRoYXQgdGhlIHNlcmlhbGl6YXRpb24gZG9lcyA8Yj5ub3Q8L2I+CisgICAgICAgICAqIG1vZGlmaXkgdGhlIGNvbnRlbnRzLCB0aGF0IGlzIGl0IHNoYWxsIG5vdCBkbyBhbnkgcHJldHR5IHByaW50aW5nCisgICAgICAgICAqIGFuZCBzbyBvbi4gVGhpcyB3b3VsZCBkZXN0cm95IHRoZSBvcmlnaW5hbCBjb250ZW50IGJlZm9yZSAKKyAgICAgICAgICogZW5jcnlwdGlvbi4gSWYgdGhhdCBjb250ZW50IHdhcyBzaWduZWQgYmVmb3JlIGVuY3J5cHRpb24gYW5kIHRoZSAKKyAgICAgICAgICogc2VyaWFsaXphdGlvbiBtb2RpZmllcyB0aGUgY29udGVudCB0aGUgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiB3aWxsCisgICAgICAgICAqIGZhaWwuCisgICAgICAgICAqLworICAgICAgICBTZXJpYWxpemVyKCkgeworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFJldHVybnMgYSA8Y29kZT5TdHJpbmc8L2NvZGU+IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgICogPGNvZGU+RG9jdW1lbnQ8L2NvZGU+LgorICAgICAgICAgKiA8cC8+CisgICAgICAgICAqIFJlZmVyIGFsc28gdG8gY29tbWVudHMgYWJvdXQgc2V0dXAgb2YgZm9ybWF0LgorICAgICAgICAgKgorICAgICAgICAgKiBAcGFyYW0gZG9jdW1lbnQgdGhlIDxjb2RlPkRvY3VtZW50PC9jb2RlPiB0byBzZXJpYWxpemUuCisgICAgICAgICAqIEByZXR1cm4gdGhlIDxjb2RlPlN0cmluZzwvY29kZT4gcmVwcmVzZW50YXRpb24gb2YgdGhlIHNlcmlsYWl6ZWQKKyAgICAgICAgICogICA8Y29kZT5Eb2N1bWVudDwvY29kZT4uCisgICAgICAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgICAgICAqLworICAgICAgICBTdHJpbmcgc2VyaWFsaXplKERvY3VtZW50IGRvY3VtZW50KSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIHJldHVybiBjYW5vblNlcmlhbGl6ZShkb2N1bWVudCk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogUmV0dXJucyBhIDxjb2RlPlN0cmluZzwvY29kZT4gcmVwcmVzZW50YXRpb24gb2YgdGhlIHNwZWNpZmllZAorICAgICAgICAgKiA8Y29kZT5FbGVtZW50PC9jb2RlPi4KKyAgICAgICAgICogPHAvPgorICAgICAgICAgKiBSZWZlciBhbHNvIHRvIGNvbW1lbnRzIGFib3V0IHNldHVwIG9mIGZvcm1hdC4KKyAgICAgICAgICoKKyAgICAgICAgICogQHBhcmFtIGVsZW1lbnQgdGhlIDxjb2RlPkVsZW1lbnQ8L2NvZGU+IHRvIHNlcmlhbGl6ZS4KKyAgICAgICAgICogQHJldHVybiB0aGUgPGNvZGU+U3RyaW5nPC9jb2RlPiByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2VyaWxhaXplZAorICAgICAgICAgKiAgIDxjb2RlPkVsZW1lbnQ8L2NvZGU+LgorICAgICAgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICAgICAgKi8KKwkJU3RyaW5nIHNlcmlhbGl6ZShFbGVtZW50IGVsZW1lbnQpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICAgICAgcmV0dXJuIGNhbm9uU2VyaWFsaXplKGVsZW1lbnQpOworCQl9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFJldHVybnMgYSA8Y29kZT5TdHJpbmc8L2NvZGU+IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgICogPGNvZGU+Tm9kZUxpc3Q8L2NvZGU+LgorICAgICAgICAgKiA8cC8+CisgICAgICAgICAqIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2UgYmVjYXVzZSB0aGUgTm9kZUxpc3QgbWF5IHJlcHJlc2VudCBhCisgICAgICAgICAqIDxjb2RlPkRvY3VtZW50RnJhZ21lbnQ8L2NvZGU+LiBBIGRvY3VtZW50IGZyYWdlbWVudCBtYXkgYmUgYQorICAgICAgICAgKiBub24tdmFsaWQgWE1MIGRvY3VtZW50IChyZWZlciB0byBhcHByb3ByaWF0ZSBkZXNjcmlwdGlvbiBvZgorICAgICAgICAgKiBXM0MpIGJlY2F1c2UgaXQgbXkgc3RhcnQgd2l0aCBhIG5vbi1lbGVtZW50IG5vZGUsIGUuZy4gYSB0ZXh0CisgICAgICAgICAqIG5vZGUuCisgICAgICAgICAqIDxwLz4KKyAgICAgICAgICogVGhlIG1ldGhvZHMgZmlyc3QgY29udmVydHMgdGhlIG5vZGUgbGlzdCBpbnRvIGEgZG9jdW1lbnQgZnJhZ21lbnQuCisgICAgICAgICAqIFNwZWNpYWwgY2FyZSBpcyB0YWtlbiB0byBub3QgZGVzdHJveSB0aGUgY3VycmVudCBkb2N1bWVudCwgdGh1cworICAgICAgICAgKiB0aGUgbWV0aG9kIGNsb25lcyB0aGUgbm9kZXMgKGRlZXAgY2xvbmluZykgYmVmb3JlIGl0IGFwcGVuZHMKKyAgICAgICAgICogdGhlbSB0byB0aGUgZG9jdW1lbnQgZnJhZ21lbnQuCisgICAgICAgICAqIDxwLz4KKyAgICAgICAgICogUmVmZXIgYWxzbyB0byBjb21tZW50cyBhYm91dCBzZXR1cCBvZiBmb3JtYXQuCisgICAgICAgICAqIAorICAgICAgICAgKiBAcGFyYW0gY29udGVudCB0aGUgPGNvZGU+Tm9kZUxpc3Q8L2NvZGU+IHRvIHNlcmlhbGl6ZS4KKyAgICAgICAgICogQHJldHVybiB0aGUgPGNvZGU+U3RyaW5nPC9jb2RlPiByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2VyaWxhaXplZAorICAgICAgICAgKiAgIDxjb2RlPk5vZGVMaXN0PC9jb2RlPi4KKyAgICAgICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAgICAgICovCisgICAgICAgIFN0cmluZyBzZXJpYWxpemUoTm9kZUxpc3QgY29udGVudCkgdGhyb3dzIEV4Y2VwdGlvbiB7IC8vWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgICAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gYmFvcyA9IG5ldyBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKTsKKyAgICAgICAgICAgIF9jYW5vbi5zZXRXcml0ZXIoYmFvcyk7CisgICAgICAgICAgICBfY2Fub24ubm90UmVzZXQoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29udGVudC5nZXRMZW5ndGgoKTsgaSsrKSB7ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIF9jYW5vbi5jYW5vbmljYWxpemVTdWJ0cmVlKGNvbnRlbnQuaXRlbShpKSk7ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgICAgYmFvcy5jbG9zZSgpOworICAgICAgICAgICAgcmV0dXJuIGJhb3MudG9TdHJpbmcoIlVURi04Iik7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogVXNlIHRoZSBDYW5vbmNpYWxpemVyIHRvIHNlcmlhbGl6ZSB0aGUgbm9kZQorICAgICAgICAgKiBAcGFyYW0gbm9kZQorICAgICAgICAgKiBAcmV0dXJuCisgICAgICAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgICAgICAqLyAKKwkJU3RyaW5nIGNhbm9uU2VyaWFsaXplKE5vZGUgbm9kZSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCQlCeXRlQXJyYXlPdXRwdXRTdHJlYW0gYmFvcyA9IG5ldyBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKTsKKwkJCV9jYW5vbi5zZXRXcml0ZXIoYmFvcyk7CQkJCisgICAgICAgICAgICBfY2Fub24ubm90UmVzZXQoKTsKKwkJCV9jYW5vbi5jYW5vbmljYWxpemVTdWJ0cmVlKG5vZGUpOwkJCQorCQkJYmFvcy5jbG9zZSgpOyAgICAgICAgICAgIAorCQkJcmV0dXJuIGJhb3MudG9TdHJpbmcoIlVURi04Iik7CisJCX0KKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSBzb3VyY2UKKyAgICAgICAgICogQHBhcmFtIGN0eAorICAgICAgICAgKiBAcmV0dXJuCisgICAgICAgICAqIEB0aHJvd3MgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbgorICAgICAgICAgKgorICAgICAgICAgKi8KKyAgICAgICAgRG9jdW1lbnRGcmFnbWVudCBkZXNlcmlhbGl6ZShTdHJpbmcgc291cmNlLCBOb2RlIGN0eCkgdGhyb3dzIFhNTEVuY3J5cHRpb25FeGNlcHRpb24geworCQkJRG9jdW1lbnRGcmFnbWVudCByZXN1bHQ7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgdGFnbmFtZSA9ICJmcmFnbWVudCI7CisKKwkJCS8vIENyZWF0ZSB0aGUgY29udGV4dCB0byBwYXJzZSB0aGUgZG9jdW1lbnQgYWdhaW5zdAorCQkJU3RyaW5nQnVmZmVyIHNiOworCQkJCisJCQlzYiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKwkJCXNiLmFwcGVuZCgiPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwiVVRGLThcIj8+PCIrdGFnbmFtZSk7CisJCQkKKwkJCS8vIFJ1biB0aHJvdWdoIGVhY2ggbm9kZSB1cCB0byB0aGUgZG9jdW1lbnQgbm9kZSBhbmQgZmluZCBhbnkKKwkJCS8vIHhtbG5zOiBub2RlcworCisJCQlOb2RlIHdrID0gY3R4OworCQkJCisJCQl3aGlsZSAod2sgIT0gbnVsbCkgeworCisJCQkJTmFtZWROb2RlTWFwIGF0dHMgPSB3ay5nZXRBdHRyaWJ1dGVzKCk7CisJCQkJaW50IGxlbmd0aDsKKwkJCQlpZiAoYXR0cyAhPSBudWxsKQorCQkJCQlsZW5ndGggPSBhdHRzLmdldExlbmd0aCgpOworCQkJCWVsc2UKKwkJCQkJbGVuZ3RoID0gMDsKKworCQkJCWZvciAoaW50IGkgPSAwIDsgaSA8IGxlbmd0aCA7ICsraSkgeworCQkJCQlOb2RlIGF0dCA9IGF0dHMuaXRlbShpKTsKKwkJCQkJaWYgKGF0dC5nZXROb2RlTmFtZSgpLnN0YXJ0c1dpdGgoInhtbG5zOiIpIHx8CisJCQkJCQlhdHQuZ2V0Tm9kZU5hbWUoKS5lcXVhbHMoInhtbG5zIikpIHsKKwkJCQkJCisJCQkJCQkvLyBDaGVjayB0byBzZWUgaWYgdGhpcyBub2RlIGhhcyBhbHJlYWR5IGJlZW4gZm91bmQKKwkJCQkJCU5vZGUgcCA9IGN0eDsKKwkJCQkJCWJvb2xlYW4gZm91bmQgPSBmYWxzZTsKKwkJCQkJCXdoaWxlIChwICE9IHdrKSB7CisJCQkJCQkJTmFtZWROb2RlTWFwIHRzdEF0dHMgPSBwLmdldEF0dHJpYnV0ZXMoKTsKKwkJCQkJCQlpZiAodHN0QXR0cyAhPSBudWxsICYmIAorCQkJCQkJCQl0c3RBdHRzLmdldE5hbWVkSXRlbShhdHQuZ2V0Tm9kZU5hbWUoKSkgIT0gbnVsbCkgeworCQkJCQkJCQlmb3VuZCA9IHRydWU7CisJCQkJCQkJCWJyZWFrOworCQkJCQkJCX0KKwkJCQkJCQlwID0gcC5nZXRQYXJlbnROb2RlKCk7CisJCQkJCQl9CisJCQkJCQlpZiAoZm91bmQgPT0gZmFsc2UpIHsKKwkJCQkJCQkKKwkJCQkJCQkvLyBUaGlzIGlzIGFuIGF0dHJpYnV0ZSBub2RlCisJCQkJCQkJc2IuYXBwZW5kKCIgIiArIGF0dC5nZXROb2RlTmFtZSgpICsgIj1cIiIgKyAKKwkJCQkJCQkJCSAgYXR0LmdldE5vZGVWYWx1ZSgpICsgIlwiIik7CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisJCQkJd2sgPSB3ay5nZXRQYXJlbnROb2RlKCk7CisJCQl9CisJCQlzYi5hcHBlbmQoIj4iICsgc291cmNlICsgIjwvIiArIHRhZ25hbWUgKyAiPiIpOworCQkJU3RyaW5nIGZyYWdtZW50ID0gc2IudG9TdHJpbmcoKTsKKworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9CisgICAgICAgICAgICAgICAgICAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKwkJCQlkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisJCQkJZGJmLnNldEF0dHJpYnV0ZSgiaHR0cDovL3htbC5vcmcvc2F4L2ZlYXR1cmVzL25hbWVzcGFjZXMiLCBCb29sZWFuLlRSVUUpOworCQkJCURvY3VtZW50QnVpbGRlciBkYiA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKKwkJCQlEb2N1bWVudCBkID0gZGIucGFyc2UoCisJCQkJICAgIG5ldyBJbnB1dFNvdXJjZShuZXcgU3RyaW5nUmVhZGVyKGZyYWdtZW50KSkpOworCisJCQkJRWxlbWVudCBmcmFnRWx0ID0gKEVsZW1lbnQpIF9jb250ZXh0RG9jdW1lbnQuaW1wb3J0Tm9kZSgKKwkJCQkJCSBkLmdldERvY3VtZW50RWxlbWVudCgpLCB0cnVlKTsKKwkJCQlyZXN1bHQgPSBfY29udGV4dERvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKwkJCQlOb2RlIGNoaWxkID0gZnJhZ0VsdC5nZXRGaXJzdENoaWxkKCk7CisJCQkJd2hpbGUgKGNoaWxkICE9IG51bGwpIHsKKwkJCQkJZnJhZ0VsdC5yZW1vdmVDaGlsZChjaGlsZCk7CisJCQkJCXJlc3VsdC5hcHBlbmRDaGlsZChjaGlsZCk7CisJCQkJCWNoaWxkID0gZnJhZ0VsdC5nZXRGaXJzdENoaWxkKCk7CisJCQkJfQorCQkJCS8vIFN0cmluZyBvdXRwID0gc2VyaWFsaXplKGQpOworCisgICAgICAgICAgICB9IGNhdGNoIChTQVhFeGNlcHRpb24gc2UpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigiZW1wdHkiLCBzZSk7CisgICAgICAgICAgICB9IGNhdGNoIChQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIHBjZSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIHBjZSk7CisgICAgICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBpb2UpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigiZW1wdHkiLCBpb2UpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICB9CisKKworICAgIC8qKgorICAgICAqCisgICAgICogQGF1dGhvciBBeGwgTWF0dGhldXMKKyAgICAgKi8KKyAgICBwcml2YXRlIGNsYXNzIEZhY3RvcnkgeworICAgICAgICAvKioKKyAgICAgICAgICogQHBhcmFtIGFsZ29yaXRobQorICAgICAgICAgKiBAcmV0dXJuCisgICAgICAgICAqCisgICAgICAgICAqLworICAgICAgICBBZ3JlZW1lbnRNZXRob2QgbmV3QWdyZWVtZW50TWV0aG9kKFN0cmluZyBhbGdvcml0aG0pICB7CisgICAgICAgICAgICByZXR1cm4gKG5ldyBBZ3JlZW1lbnRNZXRob2RJbXBsKGFsZ29yaXRobSkpOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB0eXBlCisgICAgICAgICAqIEByZXR1cm4KKyAgICAgICAgICoKKyAgICAgICAgICovCisgICAgICAgIENpcGhlckRhdGEgbmV3Q2lwaGVyRGF0YShpbnQgdHlwZSkgeworICAgICAgICAgICAgcmV0dXJuIChuZXcgQ2lwaGVyRGF0YUltcGwodHlwZSkpOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB1cmkKKyAgICAgICAgICogQHJldHVybgorICAgICAgICAgKgorICAgICAgICAgKi8KKyAgICAgICAgQ2lwaGVyUmVmZXJlbmNlIG5ld0NpcGhlclJlZmVyZW5jZShTdHJpbmcgdXJpKSAgeworICAgICAgICAgICAgcmV0dXJuIChuZXcgQ2lwaGVyUmVmZXJlbmNlSW1wbCh1cmkpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0gdmFsdWUKKyAgICAgICAgICogQHJldHVybgorICAgICAgICAgKgorICAgICAgICAgKi8KKyAgICAgICAgQ2lwaGVyVmFsdWUgbmV3Q2lwaGVyVmFsdWUoU3RyaW5nIHZhbHVlKSB7CisgICAgICAgICAgICByZXR1cm4gKG5ldyBDaXBoZXJWYWx1ZUltcGwodmFsdWUpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKgorICAgICAgICAgCisgICAgICAgIENpcGhlclZhbHVlIG5ld0NpcGhlclZhbHVlKGJ5dGVbXSB2YWx1ZSkgeworICAgICAgICAgICAgcmV0dXJuIChuZXcgQ2lwaGVyVmFsdWVJbXBsKHZhbHVlKSk7CisgICAgICAgIH0KKwkJKi8KKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSBkYXRhCisgICAgICAgICAqIEByZXR1cm4KKyAgICAgICAgICoKKyAgICAgICAgICovCisgICAgICAgIEVuY3J5cHRlZERhdGEgbmV3RW5jcnlwdGVkRGF0YShDaXBoZXJEYXRhIGRhdGEpIHsKKyAgICAgICAgICAgIHJldHVybiAobmV3IEVuY3J5cHRlZERhdGFJbXBsKGRhdGEpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0gZGF0YQorICAgICAgICAgKiBAcmV0dXJuCisgICAgICAgICAqCisgICAgICAgICAqLworICAgICAgICBFbmNyeXB0ZWRLZXkgbmV3RW5jcnlwdGVkS2V5KENpcGhlckRhdGEgZGF0YSkgeworICAgICAgICAgICAgcmV0dXJuIChuZXcgRW5jcnlwdGVkS2V5SW1wbChkYXRhKSk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQHBhcmFtIGFsZ29yaXRobQorICAgICAgICAgKiBAcmV0dXJuCisgICAgICAgICAqCisgICAgICAgICAqLworICAgICAgICBFbmNyeXB0aW9uTWV0aG9kIG5ld0VuY3J5cHRpb25NZXRob2QoU3RyaW5nIGFsZ29yaXRobSkgeworICAgICAgICAgICAgcmV0dXJuIChuZXcgRW5jcnlwdGlvbk1ldGhvZEltcGwoYWxnb3JpdGhtKSk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQHJldHVybgorICAgICAgICAgKgorICAgICAgICAgKi8KKyAgICAgICAgRW5jcnlwdGlvblByb3BlcnRpZXMgbmV3RW5jcnlwdGlvblByb3BlcnRpZXMoKSB7CisgICAgICAgICAgICByZXR1cm4gKG5ldyBFbmNyeXB0aW9uUHJvcGVydGllc0ltcGwoKSk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQHJldHVybgorICAgICAgICAgKgorICAgICAgICAgKi8KKyAgICAgICAgRW5jcnlwdGlvblByb3BlcnR5IG5ld0VuY3J5cHRpb25Qcm9wZXJ0eSgpIHsKKyAgICAgICAgICAgIHJldHVybiAobmV3IEVuY3J5cHRpb25Qcm9wZXJ0eUltcGwoKSk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQHBhcmFtIHR5cGUKKyAgICAgICAgICogQHJldHVybgorICAgICAgICAgKgorICAgICAgICAgKi8KKyAgICAgICAgUmVmZXJlbmNlTGlzdCBuZXdSZWZlcmVuY2VMaXN0KGludCB0eXBlKSB7CisgICAgICAgICAgICByZXR1cm4gKG5ldyBSZWZlcmVuY2VMaXN0SW1wbCh0eXBlKSk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQHJldHVybgorICAgICAgICAgKgorICAgICAgICAgKi8KKyAgICAgICAgVHJhbnNmb3JtcyBuZXdUcmFuc2Zvcm1zKCkgeworICAgICAgICAgICAgcmV0dXJuIChuZXcgVHJhbnNmb3Jtc0ltcGwoKSk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQHBhcmFtIGRvYworICAgICAgICAgKiBAcmV0dXJuCisgICAgICAgICAqCisgICAgICAgICAqLworICAgICAgICBUcmFuc2Zvcm1zIG5ld1RyYW5zZm9ybXMoRG9jdW1lbnQgZG9jKSB7CisgICAgICAgICAgICByZXR1cm4gKG5ldyBUcmFuc2Zvcm1zSW1wbChkb2MpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0gZWxlbWVudAorICAgICAgICAgKiBAcmV0dXJuCisgICAgICAgICAqIEB0aHJvd3MgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbgorICAgICAgICAgKgorICAgICAgICAgKi8KKyAgICAgICAgLy8gPGVsZW1lbnQgbmFtZT0iQWdyZWVtZW50TWV0aG9kIiB0eXBlPSJ4ZW5jOkFncmVlbWVudE1ldGhvZFR5cGUiLz4KKyAgICAgICAgLy8gPGNvbXBsZXhUeXBlIG5hbWU9IkFncmVlbWVudE1ldGhvZFR5cGUiIG1peGVkPSJ0cnVlIj4KKyAgICAgICAgLy8gICAgIDxzZXF1ZW5jZT4KKyAgICAgICAgLy8gICAgICAgICA8ZWxlbWVudCBuYW1lPSJLQS1Ob25jZSIgbWluT2NjdXJzPSIwIiB0eXBlPSJiYXNlNjRCaW5hcnkiLz4KKyAgICAgICAgLy8gICAgICAgICA8IS0tIDxlbGVtZW50IHJlZj0iZHM6RGlnZXN0TWV0aG9kIiBtaW5PY2N1cnM9IjAiLz4gLS0+CisgICAgICAgIC8vICAgICAgICAgPGFueSBuYW1lc3BhY2U9IiMjb3RoZXIiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KKyAgICAgICAgLy8gICAgICAgICA8ZWxlbWVudCBuYW1lPSJPcmlnaW5hdG9yS2V5SW5mbyIgbWluT2NjdXJzPSIwIiB0eXBlPSJkczpLZXlJbmZvVHlwZSIvPgorICAgICAgICAvLyAgICAgICAgIDxlbGVtZW50IG5hbWU9IlJlY2lwaWVudEtleUluZm8iIG1pbk9jY3Vycz0iMCIgdHlwZT0iZHM6S2V5SW5mb1R5cGUiLz4KKyAgICAgICAgLy8gICAgIDwvc2VxdWVuY2U+CisgICAgICAgIC8vICAgICA8YXR0cmlidXRlIG5hbWU9IkFsZ29yaXRobSIgdHlwZT0iYW55VVJJIiB1c2U9InJlcXVpcmVkIi8+CisgICAgICAgIC8vIDwvY29tcGxleFR5cGU+CisgICAgICAgIEFncmVlbWVudE1ldGhvZCBuZXdBZ3JlZW1lbnRNZXRob2QoRWxlbWVudCBlbGVtZW50KSB0aHJvd3MKKyAgICAgICAgICAgICAgICBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIGlmIChudWxsID09IGVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oImVsZW1lbnQgaXMgbnVsbCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBTdHJpbmcgYWxnb3JpdGhtID0gZWxlbWVudC5nZXRBdHRyaWJ1dGVOUyhudWxsLCAKKyAgICAgICAgICAgIAlFbmNyeXB0aW9uQ29uc3RhbnRzLl9BVFRfQUxHT1JJVEhNKTsKKyAgICAgICAgICAgIEFncmVlbWVudE1ldGhvZCByZXN1bHQgPSBuZXdBZ3JlZW1lbnRNZXRob2QoYWxnb3JpdGhtKTsKKworICAgICAgICAgICAgRWxlbWVudCBrYU5vbmNlRWxlbWVudCA9IChFbGVtZW50KSBlbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoCisgICAgICAgICAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5FbmNyeXB0aW9uU3BlY05TLAorICAgICAgICAgICAgICAgIEVuY3J5cHRpb25Db25zdGFudHMuX1RBR19LQV9OT05DRSkuaXRlbSgwKTsKKyAgICAgICAgICAgIGlmIChudWxsICE9IGthTm9uY2VFbGVtZW50KSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LnNldEtBTm9uY2Uoa2FOb25jZUVsZW1lbnQuZ2V0Tm9kZVZhbHVlKCkuZ2V0Qnl0ZXMoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBUT0RPOiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworICAgICAgICAgICAgLy8gRmlndXJlIG91dCBob3cgdG8gbWFrZSB0aGlzIHBlc2t5IGxpbmUgd29yay4uCisgICAgICAgICAgICAvLyA8YW55IG5hbWVzcGFjZT0iIyNvdGhlciIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgorCisgICAgICAgICAgICAvLyBUT0RPOiBXb3JrIG91dCBob3cgdG8gaGFuZGxlIHJlbGF0aXZlIFVSSQorCisgICAgICAgICAgICBFbGVtZW50IG9yaWdpbmF0b3JLZXlJbmZvRWxlbWVudCA9CisgICAgICAgICAgICAgICAgKEVsZW1lbnQpIGVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUygKKyAgICAgICAgICAgICAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5FbmNyeXB0aW9uU3BlY05TLAorICAgICAgICAgICAgICAgICAgICBFbmNyeXB0aW9uQ29uc3RhbnRzLl9UQUdfT1JJR0lOQVRPUktFWUlORk8pLml0ZW0oMCk7CisgICAgICAgICAgICBpZiAobnVsbCAhPSBvcmlnaW5hdG9yS2V5SW5mb0VsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0T3JpZ2luYXRvcktleUluZm8oCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgS2V5SW5mbyhvcmlnaW5hdG9yS2V5SW5mb0VsZW1lbnQsIG51bGwpKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChYTUxTZWN1cml0eUV4Y2VwdGlvbiB4c2UpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oImVtcHR5IiwgeHNlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRPRE86IFdvcmsgb3V0IGhvdyB0byBoYW5kbGUgcmVsYXRpdmUgVVJJCisKKyAgICAgICAgICAgIEVsZW1lbnQgcmVjaXBpZW50S2V5SW5mb0VsZW1lbnQgPQorICAgICAgICAgICAgICAgIChFbGVtZW50KSBlbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoCisgICAgICAgICAgICAgICAgICAgIEVuY3J5cHRpb25Db25zdGFudHMuRW5jcnlwdGlvblNwZWNOUywKKyAgICAgICAgICAgICAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5fVEFHX1JFQ0lQSUVOVEtFWUlORk8pLml0ZW0oMCk7CisgICAgICAgICAgICBpZiAobnVsbCAhPSByZWNpcGllbnRLZXlJbmZvRWxlbWVudCkgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRSZWNpcGllbnRLZXlJbmZvKAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEtleUluZm8ocmVjaXBpZW50S2V5SW5mb0VsZW1lbnQsIG51bGwpKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChYTUxTZWN1cml0eUV4Y2VwdGlvbiB4c2UpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oImVtcHR5IiwgeHNlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiAocmVzdWx0KTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0gZWxlbWVudAorICAgICAgICAgKiBAcmV0dXJuCisgICAgICAgICAqIEB0aHJvd3MgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbgorICAgICAgICAgKgorICAgICAgICAgKi8KKyAgICAgICAgLy8gPGVsZW1lbnQgbmFtZT0nQ2lwaGVyRGF0YScgdHlwZT0neGVuYzpDaXBoZXJEYXRhVHlwZScvPgorICAgICAgICAvLyA8Y29tcGxleFR5cGUgbmFtZT0nQ2lwaGVyRGF0YVR5cGUnPgorICAgICAgICAvLyAgICAgPGNob2ljZT4KKyAgICAgICAgLy8gICAgICAgICA8ZWxlbWVudCBuYW1lPSdDaXBoZXJWYWx1ZScgdHlwZT0nYmFzZTY0QmluYXJ5Jy8+CisgICAgICAgIC8vICAgICAgICAgPGVsZW1lbnQgcmVmPSd4ZW5jOkNpcGhlclJlZmVyZW5jZScvPgorICAgICAgICAvLyAgICAgPC9jaG9pY2U+CisgICAgICAgIC8vIDwvY29tcGxleFR5cGU+CisgICAgICAgIENpcGhlckRhdGEgbmV3Q2lwaGVyRGF0YShFbGVtZW50IGVsZW1lbnQpIHRocm93cworICAgICAgICAgICAgICAgIFhNTEVuY3J5cHRpb25FeGNlcHRpb24geworICAgICAgICAgICAgaWYgKG51bGwgPT0gZWxlbWVudCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigiZWxlbWVudCBpcyBudWxsIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludCB0eXBlID0gMDsKKyAgICAgICAgICAgIEVsZW1lbnQgZSA9IG51bGw7CisgICAgICAgICAgICBpZiAoZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKAorICAgICAgICAgICAgICAgIEVuY3J5cHRpb25Db25zdGFudHMuRW5jcnlwdGlvblNwZWNOUywgCisgICAgICAgICAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5fVEFHX0NJUEhFUlZBTFVFKS5nZXRMZW5ndGgoKSA+IDApIHsKKyAgICAgICAgICAgICAgICB0eXBlID0gQ2lwaGVyRGF0YS5WQUxVRV9UWVBFOworICAgICAgICAgICAgICAgIGUgPSAoRWxlbWVudCkgZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKAorICAgICAgICAgICAgICAgICAgICBFbmNyeXB0aW9uQ29uc3RhbnRzLkVuY3J5cHRpb25TcGVjTlMsCisgICAgICAgICAgICAgICAgICAgIEVuY3J5cHRpb25Db25zdGFudHMuX1RBR19DSVBIRVJWQUxVRSkuaXRlbSgwKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKAorICAgICAgICAgICAgICAgIEVuY3J5cHRpb25Db25zdGFudHMuRW5jcnlwdGlvblNwZWNOUywKKyAgICAgICAgICAgICAgICBFbmNyeXB0aW9uQ29uc3RhbnRzLl9UQUdfQ0lQSEVSUkVGRVJFTkNFKS5nZXRMZW5ndGgoKSA+IDApIHsKKyAgICAgICAgICAgICAgICB0eXBlID0gQ2lwaGVyRGF0YS5SRUZFUkVOQ0VfVFlQRTsKKyAgICAgICAgICAgICAgICBlID0gKEVsZW1lbnQpIGVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUygKKyAgICAgICAgICAgICAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5FbmNyeXB0aW9uU3BlY05TLAorICAgICAgICAgICAgICAgICAgICBFbmNyeXB0aW9uQ29uc3RhbnRzLl9UQUdfQ0lQSEVSUkVGRVJFTkNFKS5pdGVtKDApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBDaXBoZXJEYXRhIHJlc3VsdCA9IG5ld0NpcGhlckRhdGEodHlwZSk7CisgICAgICAgICAgICBpZiAodHlwZSA9PSBDaXBoZXJEYXRhLlZBTFVFX1RZUEUpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuc2V0Q2lwaGVyVmFsdWUobmV3Q2lwaGVyVmFsdWUoZSkpOworICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IENpcGhlckRhdGEuUkVGRVJFTkNFX1RZUEUpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuc2V0Q2lwaGVyUmVmZXJlbmNlKG5ld0NpcGhlclJlZmVyZW5jZShlKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiAocmVzdWx0KTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0gZWxlbWVudAorICAgICAgICAgKiBAcmV0dXJuCisgICAgICAgICAqIEB0aHJvd3MgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbgorICAgICAgICAgKgorICAgICAgICAgKi8KKyAgICAgICAgLy8gPGVsZW1lbnQgbmFtZT0nQ2lwaGVyUmVmZXJlbmNlJyB0eXBlPSd4ZW5jOkNpcGhlclJlZmVyZW5jZVR5cGUnLz4KKyAgICAgICAgLy8gPGNvbXBsZXhUeXBlIG5hbWU9J0NpcGhlclJlZmVyZW5jZVR5cGUnPgorICAgICAgICAvLyAgICAgPHNlcXVlbmNlPgorICAgICAgICAvLyAgICAgICAgIDxlbGVtZW50IG5hbWU9J1RyYW5zZm9ybXMnIHR5cGU9J3hlbmM6VHJhbnNmb3Jtc1R5cGUnIG1pbk9jY3Vycz0nMCcvPgorICAgICAgICAvLyAgICAgPC9zZXF1ZW5jZT4KKyAgICAgICAgLy8gICAgIDxhdHRyaWJ1dGUgbmFtZT0nVVJJJyB0eXBlPSdhbnlVUkknIHVzZT0ncmVxdWlyZWQnLz4KKyAgICAgICAgLy8gPC9jb21wbGV4VHlwZT4KKyAgICAgICAgQ2lwaGVyUmVmZXJlbmNlIG5ld0NpcGhlclJlZmVyZW5jZShFbGVtZW50IGVsZW1lbnQpIHRocm93cworICAgICAgICAgICAgICAgIFhNTEVuY3J5cHRpb25FeGNlcHRpb24geworCisJCQlBdHRyIFVSSUF0dHIgPSAKKwkJCQllbGVtZW50LmdldEF0dHJpYnV0ZU5vZGVOUyhudWxsLCBFbmNyeXB0aW9uQ29uc3RhbnRzLl9BVFRfVVJJKTsKKwkJCUNpcGhlclJlZmVyZW5jZSByZXN1bHQgPSBuZXcgQ2lwaGVyUmVmZXJlbmNlSW1wbChVUklBdHRyKTsKKworCQkJLy8gRmluZCBhbnkgVHJhbnNmb3JtcworCisJCQlOb2RlTGlzdCB0cmFuc2Zvcm1zRWxlbWVudHMgPSBlbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoCisgICAgICAgICAgICAgICAgICAgIEVuY3J5cHRpb25Db25zdGFudHMuRW5jcnlwdGlvblNwZWNOUywKKyAgICAgICAgICAgICAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5fVEFHX1RSQU5TRk9STVMpOworICAgICAgICAgICAgRWxlbWVudCB0cmFuc2Zvcm1zRWxlbWVudCA9CisJCQkJKEVsZW1lbnQpIHRyYW5zZm9ybXNFbGVtZW50cy5pdGVtKDApOworCQkJCisJCQlpZiAodHJhbnNmb3Jtc0VsZW1lbnQgIT0gbnVsbCkgeworCQkJCWxvZ2dlci5kZWJ1ZygiQ3JlYXRpbmcgYSBEU0lHIGJhc2VkIFRyYW5zZm9ybXMgZWxlbWVudCIpOworCQkJCXRyeSB7CisJCQkJCXJlc3VsdC5zZXRUcmFuc2Zvcm1zKG5ldyBUcmFuc2Zvcm1zSW1wbCh0cmFuc2Zvcm1zRWxlbWVudCkpOworCQkJCX0KKwkJCQljYXRjaCAoWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHhzZSkgeworCQkJCQl0aHJvdyBuZXcgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigiZW1wdHkiLCB4c2UpOworCQkJCX0gY2F0Y2ggKEludmFsaWRUcmFuc2Zvcm1FeGNlcHRpb24gaXRlKSB7CisJCQkJCXRocm93IG5ldyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIGl0ZSk7CisJCQkJfSBjYXRjaCAoWE1MU2VjdXJpdHlFeGNlcHRpb24geHNlKSB7CisJCQkJCXRocm93IG5ldyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIHhzZSk7CisJCQkJfQorCisJCQl9CisKKwkJCXJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQHBhcmFtIGVsZW1lbnQKKyAgICAgICAgICogQHJldHVybgorICAgICAgICAgKgorICAgICAgICAgKi8KKyAgICAgICAgQ2lwaGVyVmFsdWUgbmV3Q2lwaGVyVmFsdWUoRWxlbWVudCBlbGVtZW50KSB7CisgICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBYTUxVdGlscy5nZXRGdWxsVGV4dENoaWxkcmVuRnJvbUVsZW1lbnQoZWxlbWVudCk7CisKKyAgICAgICAgICAgIENpcGhlclZhbHVlIHJlc3VsdCA9IG5ld0NpcGhlclZhbHVlKHZhbHVlKTsKKworICAgICAgICAgICAgcmV0dXJuIChyZXN1bHQpOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgICAgICAqIEByZXR1cm4KKyAgICAgICAgICogQHRocm93cyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uCisgICAgICAgICAqCisgICAgICAgICAqLworICAgICAgICAvLyA8Y29tcGxleFR5cGUgbmFtZT0nRW5jcnlwdGVkVHlwZScgYWJzdHJhY3Q9J3RydWUnPgorICAgICAgICAvLyAgICAgPHNlcXVlbmNlPgorICAgICAgICAvLyAgICAgICAgIDxlbGVtZW50IG5hbWU9J0VuY3J5cHRpb25NZXRob2QnIHR5cGU9J3hlbmM6RW5jcnlwdGlvbk1ldGhvZFR5cGUnCisgICAgICAgIC8vICAgICAgICAgICAgIG1pbk9jY3Vycz0nMCcvPgorICAgICAgICAvLyAgICAgICAgIDxlbGVtZW50IHJlZj0nZHM6S2V5SW5mbycgbWluT2NjdXJzPScwJy8+CisgICAgICAgIC8vICAgICAgICAgPGVsZW1lbnQgcmVmPSd4ZW5jOkNpcGhlckRhdGEnLz4KKyAgICAgICAgLy8gICAgICAgICA8ZWxlbWVudCByZWY9J3hlbmM6RW5jcnlwdGlvblByb3BlcnRpZXMnIG1pbk9jY3Vycz0nMCcvPgorICAgICAgICAvLyAgICAgPC9zZXF1ZW5jZT4KKyAgICAgICAgLy8gICAgIDxhdHRyaWJ1dGUgbmFtZT0nSWQnIHR5cGU9J0lEJyB1c2U9J29wdGlvbmFsJy8+CisgICAgICAgIC8vICAgICA8YXR0cmlidXRlIG5hbWU9J1R5cGUnIHR5cGU9J2FueVVSSScgdXNlPSdvcHRpb25hbCcvPgorICAgICAgICAvLyAgICAgPGF0dHJpYnV0ZSBuYW1lPSdNaW1lVHlwZScgdHlwZT0nc3RyaW5nJyB1c2U9J29wdGlvbmFsJy8+CisgICAgICAgIC8vICAgICA8YXR0cmlidXRlIG5hbWU9J0VuY29kaW5nJyB0eXBlPSdhbnlVUkknIHVzZT0nb3B0aW9uYWwnLz4KKyAgICAgICAgLy8gPC9jb21wbGV4VHlwZT4KKyAgICAgICAgLy8gPGVsZW1lbnQgbmFtZT0nRW5jcnlwdGVkRGF0YScgdHlwZT0neGVuYzpFbmNyeXB0ZWREYXRhVHlwZScvPgorICAgICAgICAvLyA8Y29tcGxleFR5cGUgbmFtZT0nRW5jcnlwdGVkRGF0YVR5cGUnPgorICAgICAgICAvLyAgICAgPGNvbXBsZXhDb250ZW50PgorICAgICAgICAvLyAgICAgICAgIDxleHRlbnNpb24gYmFzZT0neGVuYzpFbmNyeXB0ZWRUeXBlJy8+CisgICAgICAgIC8vICAgICA8L2NvbXBsZXhDb250ZW50PgorICAgICAgICAvLyA8L2NvbXBsZXhUeXBlPgorICAgICAgICBFbmNyeXB0ZWREYXRhIG5ld0VuY3J5cHRlZERhdGEoRWxlbWVudCBlbGVtZW50KSB0aHJvd3MKKwkJCVhNTEVuY3J5cHRpb25FeGNlcHRpb24geworICAgICAgICAgICAgRW5jcnlwdGVkRGF0YSByZXN1bHQgPSBudWxsOworCisJICAgIE5vZGVMaXN0IGRhdGFFbGVtZW50cyA9IGVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUygKKyAgICAgICAgICAgICAgICBFbmNyeXB0aW9uQ29uc3RhbnRzLkVuY3J5cHRpb25TcGVjTlMsCisgICAgICAgICAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5fVEFHX0NJUEhFUkRBVEEpOworCisJICAgIC8vIE5lZWQgdG8gZ2V0IHRoZSBsYXN0IENpcGhlckRhdGEgZm91bmQsIGFzIGVhcmxpZXIgb25lcyB3aWxsCisJICAgIC8vIGJlIGZvciBlbGVtZW50cyBpbiB0aGUgS2V5SW5mbyBsaXN0cworCisgICAgICAgICAgICBFbGVtZW50IGRhdGFFbGVtZW50ID0KKwkJKEVsZW1lbnQpIGRhdGFFbGVtZW50cy5pdGVtKGRhdGFFbGVtZW50cy5nZXRMZW5ndGgoKSAtIDEpOworCisgICAgICAgICAgICBDaXBoZXJEYXRhIGRhdGEgPSBuZXdDaXBoZXJEYXRhKGRhdGFFbGVtZW50KTsKKworICAgICAgICAgICAgcmVzdWx0ID0gbmV3RW5jcnlwdGVkRGF0YShkYXRhKTsKKworICAgICAgICAgICAgcmVzdWx0LnNldElkKGVsZW1lbnQuZ2V0QXR0cmlidXRlTlMoCisgICAgICAgICAgICAgICAgbnVsbCwgRW5jcnlwdGlvbkNvbnN0YW50cy5fQVRUX0lEKSk7CisgICAgICAgICAgICByZXN1bHQuc2V0VHlwZSgKKyAgICAgICAgICAgICAgICBlbGVtZW50LmdldEF0dHJpYnV0ZU5TKG51bGwsIEVuY3J5cHRpb25Db25zdGFudHMuX0FUVF9UWVBFKSk7CisgICAgICAgICAgICByZXN1bHQuc2V0TWltZVR5cGUoZWxlbWVudC5nZXRBdHRyaWJ1dGVOUygKKyAgICAgICAgICAgICAgICBudWxsLCBFbmNyeXB0aW9uQ29uc3RhbnRzLl9BVFRfTUlNRVRZUEUpKTsKKyAgICAgICAgICAgIHJlc3VsdC5zZXRFbmNvZGluZygKKyAgICAgICAgICAgICAgICBlbGVtZW50LmdldEF0dHJpYnV0ZU5TKG51bGwsIENvbnN0YW50cy5fQVRUX0VOQ09ESU5HKSk7CisKKyAgICAgICAgICAgIEVsZW1lbnQgZW5jcnlwdGlvbk1ldGhvZEVsZW1lbnQgPQorICAgICAgICAgICAgICAgIChFbGVtZW50KSBlbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoCisgICAgICAgICAgICAgICAgICAgIEVuY3J5cHRpb25Db25zdGFudHMuRW5jcnlwdGlvblNwZWNOUywKKyAgICAgICAgICAgICAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5fVEFHX0VOQ1JZUFRJT05NRVRIT0QpLml0ZW0oMCk7CisgICAgICAgICAgICBpZiAobnVsbCAhPSBlbmNyeXB0aW9uTWV0aG9kRWxlbWVudCkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRFbmNyeXB0aW9uTWV0aG9kKG5ld0VuY3J5cHRpb25NZXRob2QoCisgICAgICAgICAgICAgICAgICAgIGVuY3J5cHRpb25NZXRob2RFbGVtZW50KSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEJGTCAxNi83LzAzIC0gc2ltcGxlIGltcGxlbWVudGF0aW9uCisJICAgIC8vIFRPRE86IFdvcmsgb3V0IGhvdyB0byBoYW5kbGUgcmVsYXRpdmUgVVJJCisKKyAgICAgICAgICAgIEVsZW1lbnQga2V5SW5mb0VsZW1lbnQgPQorICAgICAgICAgICAgICAgIChFbGVtZW50KSBlbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoCisgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMsIENvbnN0YW50cy5fVEFHX0tFWUlORk8pLml0ZW0oMCk7CisgICAgICAgICAgICBpZiAobnVsbCAhPSBrZXlJbmZvRWxlbWVudCkgeworCQl0cnkgeworCQkgICAgcmVzdWx0LnNldEtleUluZm8obmV3IEtleUluZm8oa2V5SW5mb0VsZW1lbnQsIG51bGwpKTsKKwkJfSBjYXRjaCAoWE1MU2VjdXJpdHlFeGNlcHRpb24geHNlKSB7CisJCSAgICB0aHJvdyBuZXcgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigiRXJyb3IgbG9hZGluZyBLZXkgSW5mbyIsIAorCQkJCQkJICAgICB4c2UpOworCQl9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRPRE86IEltcGxlbWVudAorICAgICAgICAgICAgRWxlbWVudCBlbmNyeXB0aW9uUHJvcGVydGllc0VsZW1lbnQgPQorICAgICAgICAgICAgICAgIChFbGVtZW50KSBlbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoCisgICAgICAgICAgICAgICAgICAgIEVuY3J5cHRpb25Db25zdGFudHMuRW5jcnlwdGlvblNwZWNOUywKKyAgICAgICAgICAgICAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5fVEFHX0VOQ1JZUFRJT05QUk9QRVJUSUVTKS5pdGVtKDApOworICAgICAgICAgICAgaWYgKG51bGwgIT0gZW5jcnlwdGlvblByb3BlcnRpZXNFbGVtZW50KSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LnNldEVuY3J5cHRpb25Qcm9wZXJ0aWVzKAorICAgICAgICAgICAgICAgICAgICBuZXdFbmNyeXB0aW9uUHJvcGVydGllcyhlbmNyeXB0aW9uUHJvcGVydGllc0VsZW1lbnQpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIChyZXN1bHQpOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgICAgICAqIEByZXR1cm4KKyAgICAgICAgICogQHRocm93cyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uCisgICAgICAgICAqCisgICAgICAgICAqLworICAgICAgICAvLyA8Y29tcGxleFR5cGUgbmFtZT0nRW5jcnlwdGVkVHlwZScgYWJzdHJhY3Q9J3RydWUnPgorICAgICAgICAvLyAgICAgPHNlcXVlbmNlPgorICAgICAgICAvLyAgICAgICAgIDxlbGVtZW50IG5hbWU9J0VuY3J5cHRpb25NZXRob2QnIHR5cGU9J3hlbmM6RW5jcnlwdGlvbk1ldGhvZFR5cGUnCisgICAgICAgIC8vICAgICAgICAgICAgIG1pbk9jY3Vycz0nMCcvPgorICAgICAgICAvLyAgICAgICAgIDxlbGVtZW50IHJlZj0nZHM6S2V5SW5mbycgbWluT2NjdXJzPScwJy8+CisgICAgICAgIC8vICAgICAgICAgPGVsZW1lbnQgcmVmPSd4ZW5jOkNpcGhlckRhdGEnLz4KKyAgICAgICAgLy8gICAgICAgICA8ZWxlbWVudCByZWY9J3hlbmM6RW5jcnlwdGlvblByb3BlcnRpZXMnIG1pbk9jY3Vycz0nMCcvPgorICAgICAgICAvLyAgICAgPC9zZXF1ZW5jZT4KKyAgICAgICAgLy8gICAgIDxhdHRyaWJ1dGUgbmFtZT0nSWQnIHR5cGU9J0lEJyB1c2U9J29wdGlvbmFsJy8+CisgICAgICAgIC8vICAgICA8YXR0cmlidXRlIG5hbWU9J1R5cGUnIHR5cGU9J2FueVVSSScgdXNlPSdvcHRpb25hbCcvPgorICAgICAgICAvLyAgICAgPGF0dHJpYnV0ZSBuYW1lPSdNaW1lVHlwZScgdHlwZT0nc3RyaW5nJyB1c2U9J29wdGlvbmFsJy8+CisgICAgICAgIC8vICAgICA8YXR0cmlidXRlIG5hbWU9J0VuY29kaW5nJyB0eXBlPSdhbnlVUkknIHVzZT0nb3B0aW9uYWwnLz4KKyAgICAgICAgLy8gPC9jb21wbGV4VHlwZT4KKyAgICAgICAgLy8gPGVsZW1lbnQgbmFtZT0nRW5jcnlwdGVkS2V5JyB0eXBlPSd4ZW5jOkVuY3J5cHRlZEtleVR5cGUnLz4KKyAgICAgICAgLy8gPGNvbXBsZXhUeXBlIG5hbWU9J0VuY3J5cHRlZEtleVR5cGUnPgorICAgICAgICAvLyAgICAgPGNvbXBsZXhDb250ZW50PgorICAgICAgICAvLyAgICAgICAgIDxleHRlbnNpb24gYmFzZT0neGVuYzpFbmNyeXB0ZWRUeXBlJz4KKyAgICAgICAgLy8gICAgICAgICAgICAgPHNlcXVlbmNlPgorICAgICAgICAvLyAgICAgICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSd4ZW5jOlJlZmVyZW5jZUxpc3QnIG1pbk9jY3Vycz0nMCcvPgorICAgICAgICAvLyAgICAgICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0nQ2FycmllZEtleU5hbWUnIHR5cGU9J3N0cmluZycgbWluT2NjdXJzPScwJy8+CisgICAgICAgIC8vICAgICAgICAgICAgIDwvc2VxdWVuY2U+CisgICAgICAgIC8vICAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0nUmVjaXBpZW50JyB0eXBlPSdzdHJpbmcnIHVzZT0nb3B0aW9uYWwnLz4KKyAgICAgICAgLy8gICAgICAgICA8L2V4dGVuc2lvbj4KKyAgICAgICAgLy8gICAgIDwvY29tcGxleENvbnRlbnQ+CisgICAgICAgIC8vIDwvY29tcGxleFR5cGU+CisgICAgICAgIEVuY3J5cHRlZEtleSBuZXdFbmNyeXB0ZWRLZXkoRWxlbWVudCBlbGVtZW50KSB0aHJvd3MKKyAgICAgICAgICAgICAgICBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIEVuY3J5cHRlZEtleSByZXN1bHQgPSBudWxsOworCSAgICBOb2RlTGlzdCBkYXRhRWxlbWVudHMgPSBlbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoCisgICAgICAgICAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5FbmNyeXB0aW9uU3BlY05TLAorICAgICAgICAgICAgICAgIEVuY3J5cHRpb25Db25zdGFudHMuX1RBR19DSVBIRVJEQVRBKTsKKyAgICAgICAgICAgIEVsZW1lbnQgZGF0YUVsZW1lbnQgPQorCQkoRWxlbWVudCkgZGF0YUVsZW1lbnRzLml0ZW0oZGF0YUVsZW1lbnRzLmdldExlbmd0aCgpIC0gMSk7CisKKyAgICAgICAgICAgIENpcGhlckRhdGEgZGF0YSA9IG5ld0NpcGhlckRhdGEoZGF0YUVsZW1lbnQpOworICAgICAgICAgICAgcmVzdWx0ID0gbmV3RW5jcnlwdGVkS2V5KGRhdGEpOworCisgICAgICAgICAgICByZXN1bHQuc2V0SWQoZWxlbWVudC5nZXRBdHRyaWJ1dGVOUygKKyAgICAgICAgICAgICAgICBudWxsLCBFbmNyeXB0aW9uQ29uc3RhbnRzLl9BVFRfSUQpKTsKKyAgICAgICAgICAgIHJlc3VsdC5zZXRUeXBlKAorICAgICAgICAgICAgICAgIGVsZW1lbnQuZ2V0QXR0cmlidXRlTlMobnVsbCwgRW5jcnlwdGlvbkNvbnN0YW50cy5fQVRUX1RZUEUpKTsKKyAgICAgICAgICAgIHJlc3VsdC5zZXRNaW1lVHlwZShlbGVtZW50LmdldEF0dHJpYnV0ZU5TKAorICAgICAgICAgICAgICAgIG51bGwsIEVuY3J5cHRpb25Db25zdGFudHMuX0FUVF9NSU1FVFlQRSkpOworICAgICAgICAgICAgcmVzdWx0LnNldEVuY29kaW5nKAorICAgICAgICAgICAgICAgIGVsZW1lbnQuZ2V0QXR0cmlidXRlTlMobnVsbCwgQ29uc3RhbnRzLl9BVFRfRU5DT0RJTkcpKTsKKyAgICAgICAgICAgIHJlc3VsdC5zZXRSZWNpcGllbnQoZWxlbWVudC5nZXRBdHRyaWJ1dGVOUygKKyAgICAgICAgICAgICAgICBudWxsLCBFbmNyeXB0aW9uQ29uc3RhbnRzLl9BVFRfUkVDSVBJRU5UKSk7CisKKyAgICAgICAgICAgIEVsZW1lbnQgZW5jcnlwdGlvbk1ldGhvZEVsZW1lbnQgPQorICAgICAgICAgICAgICAgIChFbGVtZW50KSBlbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoCisgICAgICAgICAgICAgICAgICAgIEVuY3J5cHRpb25Db25zdGFudHMuRW5jcnlwdGlvblNwZWNOUywgCisgICAgICAgICAgICAgICAgICAgIEVuY3J5cHRpb25Db25zdGFudHMuX1RBR19FTkNSWVBUSU9OTUVUSE9EKS5pdGVtKDApOworICAgICAgICAgICAgaWYgKG51bGwgIT0gZW5jcnlwdGlvbk1ldGhvZEVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuc2V0RW5jcnlwdGlvbk1ldGhvZChuZXdFbmNyeXB0aW9uTWV0aG9kKAorICAgICAgICAgICAgICAgICAgICBlbmNyeXB0aW9uTWV0aG9kRWxlbWVudCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBFbGVtZW50IGtleUluZm9FbGVtZW50ID0KKyAgICAgICAgICAgICAgICAoRWxlbWVudCkgZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKAorICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TLCBDb25zdGFudHMuX1RBR19LRVlJTkZPKS5pdGVtKDApOworICAgICAgICAgICAgaWYgKG51bGwgIT0ga2V5SW5mb0VsZW1lbnQpIHsKKwkJdHJ5IHsKKwkJICAgIHJlc3VsdC5zZXRLZXlJbmZvKG5ldyBLZXlJbmZvKGtleUluZm9FbGVtZW50LCBudWxsKSk7CisJCX0gY2F0Y2ggKFhNTFNlY3VyaXR5RXhjZXB0aW9uIHhzZSkgeworCQkgICAgdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24KKwkJCSgiRXJyb3IgbG9hZGluZyBLZXkgSW5mbyIsIHhzZSk7CisJCX0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVE9ETzogSW1wbGVtZW50CisgICAgICAgICAgICBFbGVtZW50IGVuY3J5cHRpb25Qcm9wZXJ0aWVzRWxlbWVudCA9CisgICAgICAgICAgICAgICAgKEVsZW1lbnQpIGVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUygKKyAgICAgICAgICAgICAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5FbmNyeXB0aW9uU3BlY05TLAorICAgICAgICAgICAgICAgICAgICBFbmNyeXB0aW9uQ29uc3RhbnRzLl9UQUdfRU5DUllQVElPTlBST1BFUlRJRVMpLml0ZW0oMCk7CisgICAgICAgICAgICBpZiAobnVsbCAhPSBlbmNyeXB0aW9uUHJvcGVydGllc0VsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuc2V0RW5jcnlwdGlvblByb3BlcnRpZXMoCisgICAgICAgICAgICAgICAgICAgIG5ld0VuY3J5cHRpb25Qcm9wZXJ0aWVzKGVuY3J5cHRpb25Qcm9wZXJ0aWVzRWxlbWVudCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBFbGVtZW50IHJlZmVyZW5jZUxpc3RFbGVtZW50ID0KKyAgICAgICAgICAgICAgICAoRWxlbWVudCkgZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKAorICAgICAgICAgICAgICAgICAgICBFbmNyeXB0aW9uQ29uc3RhbnRzLkVuY3J5cHRpb25TcGVjTlMsIAorICAgICAgICAgICAgICAgICAgICBFbmNyeXB0aW9uQ29uc3RhbnRzLl9UQUdfUkVGRVJFTkNFTElTVCkuaXRlbSgwKTsKKyAgICAgICAgICAgIGlmIChudWxsICE9IHJlZmVyZW5jZUxpc3RFbGVtZW50KSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LnNldFJlZmVyZW5jZUxpc3QobmV3UmVmZXJlbmNlTGlzdChyZWZlcmVuY2VMaXN0RWxlbWVudCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBFbGVtZW50IGNhcnJpZWROYW1lRWxlbWVudCA9CisgICAgICAgICAgICAgICAgKEVsZW1lbnQpIGVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUygKKyAgICAgICAgICAgICAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5FbmNyeXB0aW9uU3BlY05TLAorICAgICAgICAgICAgICAgICAgICBFbmNyeXB0aW9uQ29uc3RhbnRzLl9UQUdfQ0FSUklFREtFWU5BTUUpLml0ZW0oMCk7CisgICAgICAgICAgICBpZiAobnVsbCAhPSBjYXJyaWVkTmFtZUVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuc2V0Q2FycmllZE5hbWUKKwkJICAgIChjYXJyaWVkTmFtZUVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpLmdldE5vZGVWYWx1ZSgpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIChyZXN1bHQpOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgICAgICAqIEByZXR1cm4KKyAgICAgICAgICoKKyAgICAgICAgICovCisgICAgICAgIC8vIDxjb21wbGV4VHlwZSBuYW1lPSdFbmNyeXB0aW9uTWV0aG9kVHlwZScgbWl4ZWQ9J3RydWUnPgorICAgICAgICAvLyAgICAgPHNlcXVlbmNlPgorICAgICAgICAvLyAgICAgICAgIDxlbGVtZW50IG5hbWU9J0tleVNpemUnIG1pbk9jY3Vycz0nMCcgdHlwZT0neGVuYzpLZXlTaXplVHlwZScvPgorICAgICAgICAvLyAgICAgICAgIDxlbGVtZW50IG5hbWU9J09BRVBwYXJhbXMnIG1pbk9jY3Vycz0nMCcgdHlwZT0nYmFzZTY0QmluYXJ5Jy8+CisgICAgICAgIC8vICAgICAgICAgPGFueSBuYW1lc3BhY2U9JyMjb3RoZXInIG1pbk9jY3Vycz0nMCcgbWF4T2NjdXJzPSd1bmJvdW5kZWQnLz4KKyAgICAgICAgLy8gICAgIDwvc2VxdWVuY2U+CisgICAgICAgIC8vICAgICA8YXR0cmlidXRlIG5hbWU9J0FsZ29yaXRobScgdHlwZT0nYW55VVJJJyB1c2U9J3JlcXVpcmVkJy8+CisgICAgICAgIC8vIDwvY29tcGxleFR5cGU+CisgICAgICAgIEVuY3J5cHRpb25NZXRob2QgbmV3RW5jcnlwdGlvbk1ldGhvZChFbGVtZW50IGVsZW1lbnQpIHsKKyAgICAgICAgICAgIFN0cmluZyBhbGdvcml0aG0gPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5TKAorICAgICAgICAgICAgICAgIG51bGwsIEVuY3J5cHRpb25Db25zdGFudHMuX0FUVF9BTEdPUklUSE0pOworICAgICAgICAgICAgRW5jcnlwdGlvbk1ldGhvZCByZXN1bHQgPSBuZXdFbmNyeXB0aW9uTWV0aG9kKGFsZ29yaXRobSk7CisKKyAgICAgICAgICAgIEVsZW1lbnQga2V5U2l6ZUVsZW1lbnQgPQorICAgICAgICAgICAgICAgIChFbGVtZW50KSBlbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoCisgICAgICAgICAgICAgICAgICAgIEVuY3J5cHRpb25Db25zdGFudHMuRW5jcnlwdGlvblNwZWNOUywgCisgICAgICAgICAgICAgICAgICAgIEVuY3J5cHRpb25Db25zdGFudHMuX1RBR19LRVlTSVpFKS5pdGVtKDApOworICAgICAgICAgICAgaWYgKG51bGwgIT0ga2V5U2l6ZUVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuc2V0S2V5U2l6ZSgKKyAgICAgICAgICAgICAgICAgICAgSW50ZWdlci52YWx1ZU9mKAorICAgICAgICAgICAgICAgICAgICAgICAga2V5U2l6ZUVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpLmdldE5vZGVWYWx1ZSgpKS5pbnRWYWx1ZSgpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgRWxlbWVudCBvYWVwUGFyYW1zRWxlbWVudCA9CisgICAgICAgICAgICAgICAgKEVsZW1lbnQpIGVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUygKKyAgICAgICAgICAgICAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5FbmNyeXB0aW9uU3BlY05TLCAKKyAgICAgICAgICAgICAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5fVEFHX09BRVBQQVJBTVMpLml0ZW0oMCk7CisgICAgICAgICAgICBpZiAobnVsbCAhPSBvYWVwUGFyYW1zRWxlbWVudCkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRPQUVQcGFyYW1zKAorICAgICAgICAgICAgICAgICAgICBvYWVwUGFyYW1zRWxlbWVudC5nZXROb2RlVmFsdWUoKS5nZXRCeXRlcygpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVE9ETzogTWFrZSB0aGlzIG1lc3Mgd29yaworICAgICAgICAgICAgLy8gPGFueSBuYW1lc3BhY2U9JyMjb3RoZXInIG1pbk9jY3Vycz0nMCcgbWF4T2NjdXJzPSd1bmJvdW5kZWQnLz4KKworICAgICAgICAgICAgcmV0dXJuIChyZXN1bHQpOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgICAgICAqIEByZXR1cm4KKyAgICAgICAgICoKKyAgICAgICAgICovCisgICAgICAgIC8vIDxlbGVtZW50IG5hbWU9J0VuY3J5cHRpb25Qcm9wZXJ0aWVzJyB0eXBlPSd4ZW5jOkVuY3J5cHRpb25Qcm9wZXJ0aWVzVHlwZScvPgorICAgICAgICAvLyA8Y29tcGxleFR5cGUgbmFtZT0nRW5jcnlwdGlvblByb3BlcnRpZXNUeXBlJz4KKyAgICAgICAgLy8gICAgIDxzZXF1ZW5jZT4KKyAgICAgICAgLy8gICAgICAgICA8ZWxlbWVudCByZWY9J3hlbmM6RW5jcnlwdGlvblByb3BlcnR5JyBtYXhPY2N1cnM9J3VuYm91bmRlZCcvPgorICAgICAgICAvLyAgICAgPC9zZXF1ZW5jZT4KKyAgICAgICAgLy8gICAgIDxhdHRyaWJ1dGUgbmFtZT0nSWQnIHR5cGU9J0lEJyB1c2U9J29wdGlvbmFsJy8+CisgICAgICAgIC8vIDwvY29tcGxleFR5cGU+CisgICAgICAgIEVuY3J5cHRpb25Qcm9wZXJ0aWVzIG5ld0VuY3J5cHRpb25Qcm9wZXJ0aWVzKEVsZW1lbnQgZWxlbWVudCkgeworICAgICAgICAgICAgRW5jcnlwdGlvblByb3BlcnRpZXMgcmVzdWx0ID0gbmV3RW5jcnlwdGlvblByb3BlcnRpZXMoKTsKKworICAgICAgICAgICAgcmVzdWx0LnNldElkKGVsZW1lbnQuZ2V0QXR0cmlidXRlTlMoCisgICAgICAgICAgICAgICAgbnVsbCwgRW5jcnlwdGlvbkNvbnN0YW50cy5fQVRUX0lEKSk7CisKKyAgICAgICAgICAgIE5vZGVMaXN0IGVuY3J5cHRpb25Qcm9wZXJ0eUxpc3QgPQorICAgICAgICAgICAgICAgIGVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUygKKyAgICAgICAgICAgICAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5FbmNyeXB0aW9uU3BlY05TLCAKKyAgICAgICAgICAgICAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5fVEFHX0VOQ1JZUFRJT05QUk9QRVJUWSk7CisgICAgICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgZW5jcnlwdGlvblByb3BlcnR5TGlzdC5nZXRMZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgTm9kZSBuID0gZW5jcnlwdGlvblByb3BlcnR5TGlzdC5pdGVtKGkpOworICAgICAgICAgICAgICAgIGlmIChudWxsICE9IG4pIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZEVuY3J5cHRpb25Qcm9wZXJ0eSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0VuY3J5cHRpb25Qcm9wZXJ0eSgoRWxlbWVudCkgbikpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIChyZXN1bHQpOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgICAgICAqIEByZXR1cm4KKyAgICAgICAgICoKKyAgICAgICAgICovCisgICAgICAgIC8vIDxlbGVtZW50IG5hbWU9J0VuY3J5cHRpb25Qcm9wZXJ0eScgdHlwZT0neGVuYzpFbmNyeXB0aW9uUHJvcGVydHlUeXBlJy8+CisgICAgICAgIC8vIDxjb21wbGV4VHlwZSBuYW1lPSdFbmNyeXB0aW9uUHJvcGVydHlUeXBlJyBtaXhlZD0ndHJ1ZSc+CisgICAgICAgIC8vICAgICA8Y2hvaWNlIG1heE9jY3Vycz0ndW5ib3VuZGVkJz4KKyAgICAgICAgLy8gICAgICAgICA8YW55IG5hbWVzcGFjZT0nIyNvdGhlcicgcHJvY2Vzc0NvbnRlbnRzPSdsYXgnLz4KKyAgICAgICAgLy8gICAgIDwvY2hvaWNlPgorICAgICAgICAvLyAgICAgPGF0dHJpYnV0ZSBuYW1lPSdUYXJnZXQnIHR5cGU9J2FueVVSSScgdXNlPSdvcHRpb25hbCcvPgorICAgICAgICAvLyAgICAgPGF0dHJpYnV0ZSBuYW1lPSdJZCcgdHlwZT0nSUQnIHVzZT0nb3B0aW9uYWwnLz4KKyAgICAgICAgLy8gICAgIDxhbnlBdHRyaWJ1dGUgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLz4KKyAgICAgICAgLy8gPC9jb21wbGV4VHlwZT4KKyAgICAgICAgRW5jcnlwdGlvblByb3BlcnR5IG5ld0VuY3J5cHRpb25Qcm9wZXJ0eShFbGVtZW50IGVsZW1lbnQpIHsKKyAgICAgICAgICAgIEVuY3J5cHRpb25Qcm9wZXJ0eSByZXN1bHQgPSBuZXdFbmNyeXB0aW9uUHJvcGVydHkoKTsKKworICAgICAgICAgICAgcmVzdWx0LnNldFRhcmdldCgKKyAgICAgICAgICAgICAgICBlbGVtZW50LmdldEF0dHJpYnV0ZU5TKG51bGwsIEVuY3J5cHRpb25Db25zdGFudHMuX0FUVF9UQVJHRVQpKTsKKyAgICAgICAgICAgIHJlc3VsdC5zZXRJZChlbGVtZW50LmdldEF0dHJpYnV0ZU5TKAorICAgICAgICAgICAgICAgIG51bGwsIEVuY3J5cHRpb25Db25zdGFudHMuX0FUVF9JRCkpOworICAgICAgICAgICAgLy8gVE9ETzogTWFrZSB0aGlzIGxvdCB3b3JrLi4uCisgICAgICAgICAgICAvLyA8YW55QXR0cmlidXRlIG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIi8+CisKKyAgICAgICAgICAgIC8vIFRPRE86IE1ha2UgdGhpcyB3b3JrLi4uCisgICAgICAgICAgICAvLyA8YW55IG5hbWVzcGFjZT0nIyNvdGhlcicgcHJvY2Vzc0NvbnRlbnRzPSdsYXgnLz4KKworICAgICAgICAgICAgcmV0dXJuIChyZXN1bHQpOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgICAgICAqIEByZXR1cm4KKyAgICAgICAgICoKKyAgICAgICAgICovCisgICAgICAgIC8vIDxlbGVtZW50IG5hbWU9J1JlZmVyZW5jZUxpc3QnPgorICAgICAgICAvLyAgICAgPGNvbXBsZXhUeXBlPgorICAgICAgICAvLyAgICAgICAgIDxjaG9pY2UgbWluT2NjdXJzPScxJyBtYXhPY2N1cnM9J3VuYm91bmRlZCc+CisgICAgICAgIC8vICAgICAgICAgICAgIDxlbGVtZW50IG5hbWU9J0RhdGFSZWZlcmVuY2UnIHR5cGU9J3hlbmM6UmVmZXJlbmNlVHlwZScvPgorICAgICAgICAvLyAgICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSdLZXlSZWZlcmVuY2UnIHR5cGU9J3hlbmM6UmVmZXJlbmNlVHlwZScvPgorICAgICAgICAvLyAgICAgICAgIDwvY2hvaWNlPgorICAgICAgICAvLyAgICAgPC9jb21wbGV4VHlwZT4KKyAgICAgICAgLy8gPC9lbGVtZW50PgorICAgICAgICBSZWZlcmVuY2VMaXN0IG5ld1JlZmVyZW5jZUxpc3QoRWxlbWVudCBlbGVtZW50KSB7CisgICAgICAgICAgICBpbnQgdHlwZSA9IDA7CisgICAgICAgICAgICBpZiAobnVsbCAhPSBlbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoCisgICAgICAgICAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5FbmNyeXB0aW9uU3BlY05TLCAKKyAgICAgICAgICAgICAgICBFbmNyeXB0aW9uQ29uc3RhbnRzLl9UQUdfREFUQVJFRkVSRU5DRSkuaXRlbSgwKSkgeworICAgICAgICAgICAgICAgIHR5cGUgPSBSZWZlcmVuY2VMaXN0LkRBVEFfUkVGRVJFTkNFOworICAgICAgICAgICAgfSBlbHNlIGlmIChudWxsICE9IGVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUygKKyAgICAgICAgICAgICAgICBFbmNyeXB0aW9uQ29uc3RhbnRzLkVuY3J5cHRpb25TcGVjTlMsCisgICAgICAgICAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5fVEFHX0tFWVJFRkVSRU5DRSkuaXRlbSgwKSkgeworICAgICAgICAgICAgICAgIHR5cGUgPSBSZWZlcmVuY2VMaXN0LktFWV9SRUZFUkVOQ0U7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIGNvbXBsYWluCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJlZmVyZW5jZUxpc3QgcmVzdWx0ID0gbmV3IFJlZmVyZW5jZUxpc3RJbXBsKHR5cGUpOworICAgICAgICAgICAgTm9kZUxpc3QgbGlzdCA9IG51bGw7CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgUmVmZXJlbmNlTGlzdC5EQVRBX1JFRkVSRU5DRToKKyAgICAgICAgICAgICAgICBsaXN0ID0gZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKAorICAgICAgICAgICAgICAgICAgICBFbmNyeXB0aW9uQ29uc3RhbnRzLkVuY3J5cHRpb25TcGVjTlMsIAorICAgICAgICAgICAgICAgICAgICBFbmNyeXB0aW9uQ29uc3RhbnRzLl9UQUdfREFUQVJFRkVSRU5DRSk7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0LmdldExlbmd0aCgpIDsgaSsrKSB7CisJCSAgICBTdHJpbmcgdXJpID0gKChFbGVtZW50KSBsaXN0Lml0ZW0oaSkpLmdldEF0dHJpYnV0ZSgiVVJJIik7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocmVzdWx0Lm5ld0RhdGFSZWZlcmVuY2UodXJpKSk7CisgICAgICAgICAgICAgICAgfQorCQlicmVhazsKKyAgICAgICAgICAgIGNhc2UgUmVmZXJlbmNlTGlzdC5LRVlfUkVGRVJFTkNFOgorICAgICAgICAgICAgICAgIGxpc3QgPSBlbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoCisgICAgICAgICAgICAgICAgICAgIEVuY3J5cHRpb25Db25zdGFudHMuRW5jcnlwdGlvblNwZWNOUywgCisgICAgICAgICAgICAgICAgICAgIEVuY3J5cHRpb25Db25zdGFudHMuX1RBR19LRVlSRUZFUkVOQ0UpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGlzdC5nZXRMZW5ndGgoKSA7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdXJpID0gKChFbGVtZW50KSBsaXN0Lml0ZW0oaSkpLmdldEF0dHJpYnV0ZSgiVVJJIik7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocmVzdWx0Lm5ld0tleVJlZmVyZW5jZSh1cmkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiAocmVzdWx0KTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0gZWxlbWVudAorICAgICAgICAgKiBAcmV0dXJuCisgICAgICAgICAqCisgICAgICAgICAqLworICAgICAgICBUcmFuc2Zvcm1zIG5ld1RyYW5zZm9ybXMoRWxlbWVudCBlbGVtZW50KSB7CisgICAgICAgICAgICByZXR1cm4gKG51bGwpOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSBhZ3JlZW1lbnRNZXRob2QKKyAgICAgICAgICogQHJldHVybgorICAgICAgICAgKgorICAgICAgICAgKi8KKyAgICAgICAgRWxlbWVudCB0b0VsZW1lbnQoQWdyZWVtZW50TWV0aG9kIGFncmVlbWVudE1ldGhvZCkgeworICAgICAgICAgICAgcmV0dXJuICgoQWdyZWVtZW50TWV0aG9kSW1wbCkgYWdyZWVtZW50TWV0aG9kKS50b0VsZW1lbnQoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0gY2lwaGVyRGF0YQorICAgICAgICAgKiBAcmV0dXJuCisgICAgICAgICAqCisgICAgICAgICAqLworICAgICAgICBFbGVtZW50IHRvRWxlbWVudChDaXBoZXJEYXRhIGNpcGhlckRhdGEpIHsKKyAgICAgICAgICAgIHJldHVybiAoKENpcGhlckRhdGFJbXBsKSBjaXBoZXJEYXRhKS50b0VsZW1lbnQoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0gY2lwaGVyUmVmZXJlbmNlCisgICAgICAgICAqIEByZXR1cm4KKyAgICAgICAgICoKKyAgICAgICAgICovCisgICAgICAgIEVsZW1lbnQgdG9FbGVtZW50KENpcGhlclJlZmVyZW5jZSBjaXBoZXJSZWZlcmVuY2UpIHsKKyAgICAgICAgICAgIHJldHVybiAoKENpcGhlclJlZmVyZW5jZUltcGwpIGNpcGhlclJlZmVyZW5jZSkudG9FbGVtZW50KCk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQHBhcmFtIGNpcGhlclZhbHVlCisgICAgICAgICAqIEByZXR1cm4KKyAgICAgICAgICoKKyAgICAgICAgICovCisgICAgICAgIEVsZW1lbnQgdG9FbGVtZW50KENpcGhlclZhbHVlIGNpcGhlclZhbHVlKSB7CisgICAgICAgICAgICByZXR1cm4gKChDaXBoZXJWYWx1ZUltcGwpIGNpcGhlclZhbHVlKS50b0VsZW1lbnQoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0gZW5jcnlwdGVkRGF0YQorICAgICAgICAgKiBAcmV0dXJuCisgICAgICAgICAqCisgICAgICAgICAqLworICAgICAgICBFbGVtZW50IHRvRWxlbWVudChFbmNyeXB0ZWREYXRhIGVuY3J5cHRlZERhdGEpIHsKKyAgICAgICAgICAgIHJldHVybiAoKEVuY3J5cHRlZERhdGFJbXBsKSBlbmNyeXB0ZWREYXRhKS50b0VsZW1lbnQoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0gZW5jcnlwdGVkS2V5CisgICAgICAgICAqIEByZXR1cm4KKyAgICAgICAgICoKKyAgICAgICAgICovCisgICAgICAgIEVsZW1lbnQgdG9FbGVtZW50KEVuY3J5cHRlZEtleSBlbmNyeXB0ZWRLZXkpIHsKKyAgICAgICAgICAgIHJldHVybiAoKEVuY3J5cHRlZEtleUltcGwpIGVuY3J5cHRlZEtleSkudG9FbGVtZW50KCk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQHBhcmFtIGVuY3J5cHRpb25NZXRob2QKKyAgICAgICAgICogQHJldHVybgorICAgICAgICAgKgorICAgICAgICAgKi8KKyAgICAgICAgRWxlbWVudCB0b0VsZW1lbnQoRW5jcnlwdGlvbk1ldGhvZCBlbmNyeXB0aW9uTWV0aG9kKSB7CisgICAgICAgICAgICByZXR1cm4gKChFbmNyeXB0aW9uTWV0aG9kSW1wbCkgZW5jcnlwdGlvbk1ldGhvZCkudG9FbGVtZW50KCk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQHBhcmFtIGVuY3J5cHRpb25Qcm9wZXJ0aWVzCisgICAgICAgICAqIEByZXR1cm4KKyAgICAgICAgICoKKyAgICAgICAgICovCisgICAgICAgIEVsZW1lbnQgdG9FbGVtZW50KEVuY3J5cHRpb25Qcm9wZXJ0aWVzIGVuY3J5cHRpb25Qcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICByZXR1cm4gKChFbmNyeXB0aW9uUHJvcGVydGllc0ltcGwpIGVuY3J5cHRpb25Qcm9wZXJ0aWVzKS50b0VsZW1lbnQoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0gZW5jcnlwdGlvblByb3BlcnR5CisgICAgICAgICAqIEByZXR1cm4KKyAgICAgICAgICoKKyAgICAgICAgICovCisgICAgICAgIEVsZW1lbnQgdG9FbGVtZW50KEVuY3J5cHRpb25Qcm9wZXJ0eSBlbmNyeXB0aW9uUHJvcGVydHkpIHsKKyAgICAgICAgICAgIHJldHVybiAoKEVuY3J5cHRpb25Qcm9wZXJ0eUltcGwpIGVuY3J5cHRpb25Qcm9wZXJ0eSkudG9FbGVtZW50KCk7CisgICAgICAgIH0KKworICAgICAgICBFbGVtZW50IHRvRWxlbWVudChSZWZlcmVuY2VMaXN0IHJlZmVyZW5jZUxpc3QpIHsKKyAgICAgICAgICAgIHJldHVybiAoKFJlZmVyZW5jZUxpc3RJbXBsKSByZWZlcmVuY2VMaXN0KS50b0VsZW1lbnQoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0gdHJhbnNmb3JtcworICAgICAgICAgKiBAcmV0dXJuCisgICAgICAgICAqCisgICAgICAgICAqLworICAgICAgICBFbGVtZW50IHRvRWxlbWVudChUcmFuc2Zvcm1zIHRyYW5zZm9ybXMpIHsKKyAgICAgICAgICAgIHJldHVybiAoKFRyYW5zZm9ybXNJbXBsKSB0cmFuc2Zvcm1zKS50b0VsZW1lbnQoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIDxlbGVtZW50IG5hbWU9IkFncmVlbWVudE1ldGhvZCIgdHlwZT0ieGVuYzpBZ3JlZW1lbnRNZXRob2RUeXBlIi8+CisgICAgICAgIC8vIDxjb21wbGV4VHlwZSBuYW1lPSJBZ3JlZW1lbnRNZXRob2RUeXBlIiBtaXhlZD0idHJ1ZSI+CisgICAgICAgIC8vICAgICA8c2VxdWVuY2U+CisgICAgICAgIC8vICAgICAgICAgPGVsZW1lbnQgbmFtZT0iS0EtTm9uY2UiIG1pbk9jY3Vycz0iMCIgdHlwZT0iYmFzZTY0QmluYXJ5Ii8+CisgICAgICAgIC8vICAgICAgICAgPCEtLSA8ZWxlbWVudCByZWY9ImRzOkRpZ2VzdE1ldGhvZCIgbWluT2NjdXJzPSIwIi8+IC0tPgorICAgICAgICAvLyAgICAgICAgIDxhbnkgbmFtZXNwYWNlPSIjI290aGVyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CisgICAgICAgIC8vICAgICAgICAgPGVsZW1lbnQgbmFtZT0iT3JpZ2luYXRvcktleUluZm8iIG1pbk9jY3Vycz0iMCIgdHlwZT0iZHM6S2V5SW5mb1R5cGUiLz4KKyAgICAgICAgLy8gICAgICAgICA8ZWxlbWVudCBuYW1lPSJSZWNpcGllbnRLZXlJbmZvIiBtaW5PY2N1cnM9IjAiIHR5cGU9ImRzOktleUluZm9UeXBlIi8+CisgICAgICAgIC8vICAgICA8L3NlcXVlbmNlPgorICAgICAgICAvLyAgICAgPGF0dHJpYnV0ZSBuYW1lPSJBbGdvcml0aG0iIHR5cGU9ImFueVVSSSIgdXNlPSJyZXF1aXJlZCIvPgorICAgICAgICAvLyA8L2NvbXBsZXhUeXBlPgorICAgICAgICBwcml2YXRlIGNsYXNzIEFncmVlbWVudE1ldGhvZEltcGwgaW1wbGVtZW50cyBBZ3JlZW1lbnRNZXRob2QgeworICAgICAgICAgICAgcHJpdmF0ZSBieXRlW10ga2FOb25jZSA9IG51bGw7CisgICAgICAgICAgICBwcml2YXRlIExpc3QgYWdyZWVtZW50TWV0aG9kSW5mb3JtYXRpb24gPSBudWxsOworICAgICAgICAgICAgcHJpdmF0ZSBLZXlJbmZvIG9yaWdpbmF0b3JLZXlJbmZvID0gbnVsbDsKKyAgICAgICAgICAgIHByaXZhdGUgS2V5SW5mbyByZWNpcGllbnRLZXlJbmZvID0gbnVsbDsKKyAgICAgICAgICAgIHByaXZhdGUgU3RyaW5nIGFsZ29yaXRobVVSSSA9IG51bGw7CisKKyAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICogQHBhcmFtIGFsZ29yaXRobQorICAgICAgICAgICAgICovCisgICAgICAgICAgICBwdWJsaWMgQWdyZWVtZW50TWV0aG9kSW1wbChTdHJpbmcgYWxnb3JpdGhtKSB7CisgICAgICAgICAgICAgICAgYWdyZWVtZW50TWV0aG9kSW5mb3JtYXRpb24gPSBuZXcgTGlua2VkTGlzdCgpOworICAgICAgICAgICAgICAgIFVSSSB0bXBBbGdvcml0aG0gPSBudWxsOworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHRtcEFsZ29yaXRobSA9IG5ldyBVUkkoYWxnb3JpdGhtKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChVUkkuTWFsZm9ybWVkVVJJRXhjZXB0aW9uIGZtdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbikgCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCkuaW5pdENhdXNlKGZtdWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhbGdvcml0aG1VUkkgPSB0bXBBbGdvcml0aG0udG9TdHJpbmcoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICAgICAgICBwdWJsaWMgYnl0ZVtdIGdldEtBTm9uY2UoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIChrYU5vbmNlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBzZXRLQU5vbmNlKGJ5dGVbXSBrYW5vbmNlKSB7CisgICAgICAgICAgICAgICAga2FOb25jZSA9IGthbm9uY2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgICAgICAgICAgcHVibGljIEl0ZXJhdG9yIGdldEFncmVlbWVudE1ldGhvZEluZm9ybWF0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAoYWdyZWVtZW50TWV0aG9kSW5mb3JtYXRpb24uaXRlcmF0b3IoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgICAgICAgICAgcHVibGljIHZvaWQgYWRkQWdyZWVtZW50TWV0aG9kSW5mb3JtYXRpb24oRWxlbWVudCBpbmZvKSB7CisgICAgICAgICAgICAgICAgYWdyZWVtZW50TWV0aG9kSW5mb3JtYXRpb24uYWRkKGluZm8pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJldm92ZUFncmVlbWVudE1ldGhvZEluZm9ybWF0aW9uKEVsZW1lbnQgaW5mbykgeworICAgICAgICAgICAgICAgIGFncmVlbWVudE1ldGhvZEluZm9ybWF0aW9uLnJlbW92ZShpbmZvKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICAgICAgICBwdWJsaWMgS2V5SW5mbyBnZXRPcmlnaW5hdG9yS2V5SW5mbygpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKG9yaWdpbmF0b3JLZXlJbmZvKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBzZXRPcmlnaW5hdG9yS2V5SW5mbyhLZXlJbmZvIGtleUluZm8pIHsKKyAgICAgICAgICAgICAgICBvcmlnaW5hdG9yS2V5SW5mbyA9IGtleUluZm87CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgICAgICAgICAgcHVibGljIEtleUluZm8gZ2V0UmVjaXBpZW50S2V5SW5mbygpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKHJlY2lwaWVudEtleUluZm8pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHNldFJlY2lwaWVudEtleUluZm8oS2V5SW5mbyBrZXlJbmZvKSB7CisgICAgICAgICAgICAgICAgcmVjaXBpZW50S2V5SW5mbyA9IGtleUluZm87CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgICAgICAgICAgcHVibGljIFN0cmluZyBnZXRBbGdvcml0aG0oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIChhbGdvcml0aG1VUkkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiogQHBhcmFtIGFsZ29yaXRobSovCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBzZXRBbGdvcml0aG0oU3RyaW5nIGFsZ29yaXRobSkgeworICAgICAgICAgICAgICAgIFVSSSB0bXBBbGdvcml0aG0gPSBudWxsOworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHRtcEFsZ29yaXRobSA9IG5ldyBVUkkoYWxnb3JpdGhtKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChVUkkuTWFsZm9ybWVkVVJJRXhjZXB0aW9uIG1mdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbikgCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCkuaW5pdENhdXNlKG1mdWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhbGdvcml0aG1VUkkgPSB0bXBBbGdvcml0aG0udG9TdHJpbmcoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gPGVsZW1lbnQgbmFtZT0iQWdyZWVtZW50TWV0aG9kIiB0eXBlPSJ4ZW5jOkFncmVlbWVudE1ldGhvZFR5cGUiLz4KKyAgICAgICAgICAgIC8vIDxjb21wbGV4VHlwZSBuYW1lPSJBZ3JlZW1lbnRNZXRob2RUeXBlIiBtaXhlZD0idHJ1ZSI+CisgICAgICAgICAgICAvLyAgICAgPHNlcXVlbmNlPgorICAgICAgICAgICAgLy8gICAgICAgICA8ZWxlbWVudCBuYW1lPSJLQS1Ob25jZSIgbWluT2NjdXJzPSIwIiB0eXBlPSJiYXNlNjRCaW5hcnkiLz4KKyAgICAgICAgICAgIC8vICAgICAgICAgPCEtLSA8ZWxlbWVudCByZWY9ImRzOkRpZ2VzdE1ldGhvZCIgbWluT2NjdXJzPSIwIi8+IC0tPgorICAgICAgICAgICAgLy8gICAgICAgICA8YW55IG5hbWVzcGFjZT0iIyNvdGhlciIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgorICAgICAgICAgICAgLy8gICAgICAgICA8ZWxlbWVudCBuYW1lPSJPcmlnaW5hdG9yS2V5SW5mbyIgbWluT2NjdXJzPSIwIiB0eXBlPSJkczpLZXlJbmZvVHlwZSIvPgorICAgICAgICAgICAgLy8gICAgICAgICA8ZWxlbWVudCBuYW1lPSJSZWNpcGllbnRLZXlJbmZvIiBtaW5PY2N1cnM9IjAiIHR5cGU9ImRzOktleUluZm9UeXBlIi8+CisgICAgICAgICAgICAvLyAgICAgPC9zZXF1ZW5jZT4KKyAgICAgICAgICAgIC8vICAgICA8YXR0cmlidXRlIG5hbWU9IkFsZ29yaXRobSIgdHlwZT0iYW55VVJJIiB1c2U9InJlcXVpcmVkIi8+CisgICAgICAgICAgICAvLyA8L2NvbXBsZXhUeXBlPgorICAgICAgICAgICAgRWxlbWVudCB0b0VsZW1lbnQoKSB7CisgICAgICAgICAgICAgICAgRWxlbWVudCByZXN1bHQgPQorICAgICAgICAgICAgICAgICAgIFhNTFV0aWxzLmNyZWF0ZUVsZW1lbnRJbkVuY3J5cHRpb25TcGFjZSgKKyAgICAgICAgICAgICAgICAgICAgX2NvbnRleHREb2N1bWVudCwgCisgICAgICAgICAgICAgICAgICAgIEVuY3J5cHRpb25Db25zdGFudHMuX1RBR19BR1JFRU1FTlRNRVRIT0QpOworICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRBdHRyaWJ1dGVOUygKKyAgICAgICAgICAgICAgICAgICAgbnVsbCwgRW5jcnlwdGlvbkNvbnN0YW50cy5fQVRUX0FMR09SSVRITSwgYWxnb3JpdGhtVVJJKTsKKyAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBrYU5vbmNlKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFhNTFV0aWxzLmNyZWF0ZUVsZW1lbnRJbkVuY3J5cHRpb25TcGFjZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dERvY3VtZW50LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmNyeXB0aW9uQ29uc3RhbnRzLl9UQUdfS0FfTk9OQ0UpKS5hcHBlbmRDaGlsZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dERvY3VtZW50LmNyZWF0ZVRleHROb2RlKG5ldyBTdHJpbmcoa2FOb25jZSkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCFhZ3JlZW1lbnRNZXRob2RJbmZvcm1hdGlvbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgSXRlcmF0b3IgaXRyID0gYWdyZWVtZW50TWV0aG9kSW5mb3JtYXRpb24uaXRlcmF0b3IoKTsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGl0ci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZCgoRWxlbWVudCkgaXRyLm5leHQoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gb3JpZ2luYXRvcktleUluZm8pIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKG9yaWdpbmF0b3JLZXlJbmZvLmdldEVsZW1lbnQoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHJlY2lwaWVudEtleUluZm8pIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKHJlY2lwaWVudEtleUluZm8uZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gKHJlc3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyA8ZWxlbWVudCBuYW1lPSdDaXBoZXJEYXRhJyB0eXBlPSd4ZW5jOkNpcGhlckRhdGFUeXBlJy8+CisgICAgICAgIC8vIDxjb21wbGV4VHlwZSBuYW1lPSdDaXBoZXJEYXRhVHlwZSc+CisgICAgICAgIC8vICAgICA8Y2hvaWNlPgorICAgICAgICAvLyAgICAgICAgIDxlbGVtZW50IG5hbWU9J0NpcGhlclZhbHVlJyB0eXBlPSdiYXNlNjRCaW5hcnknLz4KKyAgICAgICAgLy8gICAgICAgICA8ZWxlbWVudCByZWY9J3hlbmM6Q2lwaGVyUmVmZXJlbmNlJy8+CisgICAgICAgIC8vICAgICA8L2Nob2ljZT4KKyAgICAgICAgLy8gPC9jb21wbGV4VHlwZT4KKyAgICAgICAgcHJpdmF0ZSBjbGFzcyBDaXBoZXJEYXRhSW1wbCBpbXBsZW1lbnRzIENpcGhlckRhdGEgeworICAgICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIHZhbHVlTWVzc2FnZSA9CisgICAgICAgICAgICAgICAgIkRhdGEgdHlwZSBpcyByZWZlcmVuY2UgdHlwZS4iOworICAgICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIHJlZmVyZW5jZU1lc3NhZ2UgPQorICAgICAgICAgICAgICAgICJEYXRhIHR5cGUgaXMgdmFsdWUgdHlwZS4iOworICAgICAgICAgICAgcHJpdmF0ZSBDaXBoZXJWYWx1ZSBjaXBoZXJWYWx1ZSA9IG51bGw7CisgICAgICAgICAgICBwcml2YXRlIENpcGhlclJlZmVyZW5jZSBjaXBoZXJSZWZlcmVuY2UgPSBudWxsOworICAgICAgICAgICAgcHJpdmF0ZSBpbnQgY2lwaGVyVHlwZSA9IEludGVnZXIuTUlOX1ZBTFVFOworCisgICAgICAgICAgICAvKioKKyAgICAgICAgICAgICAqIEBwYXJhbSB0eXBlCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHB1YmxpYyBDaXBoZXJEYXRhSW1wbChpbnQgdHlwZSkgeworICAgICAgICAgICAgICAgIGNpcGhlclR5cGUgPSB0eXBlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICAgICAgICAgIHB1YmxpYyBDaXBoZXJWYWx1ZSBnZXRDaXBoZXJWYWx1ZSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKGNpcGhlclZhbHVlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBzZXRDaXBoZXJWYWx1ZShDaXBoZXJWYWx1ZSB2YWx1ZSkgdGhyb3dzCisgICAgICAgICAgICAgICAgICAgIFhNTEVuY3J5cHRpb25FeGNlcHRpb24geworCisgICAgICAgICAgICAgICAgaWYgKGNpcGhlclR5cGUgPT0gUkVGRVJFTkNFX1RZUEUpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oImVtcHR5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbih2YWx1ZU1lc3NhZ2UpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjaXBoZXJWYWx1ZSA9IHZhbHVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICAgICAgICAgIHB1YmxpYyBDaXBoZXJSZWZlcmVuY2UgZ2V0Q2lwaGVyUmVmZXJlbmNlKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAoY2lwaGVyUmVmZXJlbmNlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBzZXRDaXBoZXJSZWZlcmVuY2UoQ2lwaGVyUmVmZXJlbmNlIHJlZmVyZW5jZSkgdGhyb3dzCisgICAgICAgICAgICAgICAgICAgIFhNTEVuY3J5cHRpb25FeGNlcHRpb24geworICAgICAgICAgICAgICAgIGlmIChjaXBoZXJUeXBlID09IFZBTFVFX1RZUEUpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oImVtcHR5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbihyZWZlcmVuY2VNZXNzYWdlKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2lwaGVyUmVmZXJlbmNlID0gcmVmZXJlbmNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICAgICAgICAgIHB1YmxpYyBpbnQgZ2V0RGF0YVR5cGUoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIChjaXBoZXJUeXBlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gPGVsZW1lbnQgbmFtZT0nQ2lwaGVyRGF0YScgdHlwZT0neGVuYzpDaXBoZXJEYXRhVHlwZScvPgorICAgICAgICAgICAgLy8gPGNvbXBsZXhUeXBlIG5hbWU9J0NpcGhlckRhdGFUeXBlJz4KKyAgICAgICAgICAgIC8vICAgICA8Y2hvaWNlPgorICAgICAgICAgICAgLy8gICAgICAgICA8ZWxlbWVudCBuYW1lPSdDaXBoZXJWYWx1ZScgdHlwZT0nYmFzZTY0QmluYXJ5Jy8+CisgICAgICAgICAgICAvLyAgICAgICAgIDxlbGVtZW50IHJlZj0neGVuYzpDaXBoZXJSZWZlcmVuY2UnLz4KKyAgICAgICAgICAgIC8vICAgICA8L2Nob2ljZT4KKyAgICAgICAgICAgIC8vIDwvY29tcGxleFR5cGU+CisgICAgICAgICAgICBFbGVtZW50IHRvRWxlbWVudCgpIHsKKyAgICAgICAgICAgICAgICBFbGVtZW50IHJlc3VsdCA9IFhNTFV0aWxzLmNyZWF0ZUVsZW1lbnRJbkVuY3J5cHRpb25TcGFjZSgKKyAgICAgICAgICAgICAgICAgICAgX2NvbnRleHREb2N1bWVudCwgRW5jcnlwdGlvbkNvbnN0YW50cy5fVEFHX0NJUEhFUkRBVEEpOworICAgICAgICAgICAgICAgIGlmIChjaXBoZXJUeXBlID09IFZBTFVFX1RZUEUpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKAorICAgICAgICAgICAgICAgICAgICAgICAgKChDaXBoZXJWYWx1ZUltcGwpIGNpcGhlclZhbHVlKS50b0VsZW1lbnQoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaXBoZXJUeXBlID09IFJFRkVSRU5DRV9UWVBFKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICgoQ2lwaGVyUmVmZXJlbmNlSW1wbCkgY2lwaGVyUmVmZXJlbmNlKS50b0VsZW1lbnQoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gY29tcGxhaW4KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gKHJlc3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyA8ZWxlbWVudCBuYW1lPSdDaXBoZXJSZWZlcmVuY2UnIHR5cGU9J3hlbmM6Q2lwaGVyUmVmZXJlbmNlVHlwZScvPgorICAgICAgICAvLyA8Y29tcGxleFR5cGUgbmFtZT0nQ2lwaGVyUmVmZXJlbmNlVHlwZSc+CisgICAgICAgIC8vICAgICA8c2VxdWVuY2U+CisgICAgICAgIC8vICAgICAgICAgPGVsZW1lbnQgbmFtZT0nVHJhbnNmb3JtcycgdHlwZT0neGVuYzpUcmFuc2Zvcm1zVHlwZScgbWluT2NjdXJzPScwJy8+CisgICAgICAgIC8vICAgICA8L3NlcXVlbmNlPgorICAgICAgICAvLyAgICAgPGF0dHJpYnV0ZSBuYW1lPSdVUkknIHR5cGU9J2FueVVSSScgdXNlPSdyZXF1aXJlZCcvPgorICAgICAgICAvLyA8L2NvbXBsZXhUeXBlPgorICAgICAgICBwcml2YXRlIGNsYXNzIENpcGhlclJlZmVyZW5jZUltcGwgaW1wbGVtZW50cyBDaXBoZXJSZWZlcmVuY2UgeworICAgICAgICAgICAgcHJpdmF0ZSBTdHJpbmcgcmVmZXJlbmNlVVJJID0gbnVsbDsKKyAgICAgICAgICAgIHByaXZhdGUgVHJhbnNmb3JtcyByZWZlcmVuY2VUcmFuc2Zvcm1zID0gbnVsbDsKKwkJCXByaXZhdGUgQXR0ciByZWZlcmVuY2VOb2RlID0gbnVsbDsKKworICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgKiBAcGFyYW0gdXJpCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHB1YmxpYyBDaXBoZXJSZWZlcmVuY2VJbXBsKFN0cmluZyB1cmkpIHsKKwkJCQkvKiBEb24ndCBjaGVjayB2YWxpZGl0eSBvZiBVUkkgYXMgbWF5IGJlICIiICovCisgICAgICAgICAgICAgICAgcmVmZXJlbmNlVVJJID0gdXJpOworCQkJCXJlZmVyZW5jZU5vZGUgPSBudWxsOworICAgICAgICAgICAgfQorCisJCQkvKioKKwkJCSAqIEBwYXJhbSB1cmkKKwkJCSAqLworCQkJcHVibGljIENpcGhlclJlZmVyZW5jZUltcGwoQXR0ciB1cmkpIHsKKwkJCQlyZWZlcmVuY2VVUkkgPSB1cmkuZ2V0Tm9kZVZhbHVlKCk7CisJCQkJcmVmZXJlbmNlTm9kZSA9IHVyaTsKKwkJCX0KKworICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICAgICAgICBwdWJsaWMgU3RyaW5nIGdldFVSSSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKHJlZmVyZW5jZVVSSSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworCQkJcHVibGljIEF0dHIgZ2V0VVJJQXNBdHRyKCkgeworCQkJCXJldHVybiAocmVmZXJlbmNlTm9kZSk7CisJCQl9CisKKyAgICAgICAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgICAgICAgICAgcHVibGljIFRyYW5zZm9ybXMgZ2V0VHJhbnNmb3JtcygpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKHJlZmVyZW5jZVRyYW5zZm9ybXMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHNldFRyYW5zZm9ybXMoVHJhbnNmb3JtcyB0cmFuc2Zvcm1zKSB7CisgICAgICAgICAgICAgICAgcmVmZXJlbmNlVHJhbnNmb3JtcyA9IHRyYW5zZm9ybXM7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIDxlbGVtZW50IG5hbWU9J0NpcGhlclJlZmVyZW5jZScgdHlwZT0neGVuYzpDaXBoZXJSZWZlcmVuY2VUeXBlJy8+CisgICAgICAgICAgICAvLyA8Y29tcGxleFR5cGUgbmFtZT0nQ2lwaGVyUmVmZXJlbmNlVHlwZSc+CisgICAgICAgICAgICAvLyAgICAgPHNlcXVlbmNlPgorICAgICAgICAgICAgLy8gICAgICAgICA8ZWxlbWVudCBuYW1lPSdUcmFuc2Zvcm1zJyB0eXBlPSd4ZW5jOlRyYW5zZm9ybXNUeXBlJyBtaW5PY2N1cnM9JzAnLz4KKyAgICAgICAgICAgIC8vICAgICA8L3NlcXVlbmNlPgorICAgICAgICAgICAgLy8gICAgIDxhdHRyaWJ1dGUgbmFtZT0nVVJJJyB0eXBlPSdhbnlVUkknIHVzZT0ncmVxdWlyZWQnLz4KKyAgICAgICAgICAgIC8vIDwvY29tcGxleFR5cGU+CisgICAgICAgICAgICBFbGVtZW50IHRvRWxlbWVudCgpIHsKKyAgICAgICAgICAgICAgICBFbGVtZW50IHJlc3VsdCA9IFhNTFV0aWxzLmNyZWF0ZUVsZW1lbnRJbkVuY3J5cHRpb25TcGFjZSgKKyAgICAgICAgICAgICAgICAgICAgX2NvbnRleHREb2N1bWVudCwgRW5jcnlwdGlvbkNvbnN0YW50cy5fVEFHX0NJUEhFUlJFRkVSRU5DRSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LnNldEF0dHJpYnV0ZU5TKAorICAgICAgICAgICAgICAgICAgICBudWxsLCBFbmNyeXB0aW9uQ29uc3RhbnRzLl9BVFRfVVJJLCByZWZlcmVuY2VVUkkpOworICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHJlZmVyZW5jZVRyYW5zZm9ybXMpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKAorICAgICAgICAgICAgICAgICAgICAgICAgKChUcmFuc2Zvcm1zSW1wbCkgcmVmZXJlbmNlVHJhbnNmb3JtcykudG9FbGVtZW50KCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVybiAocmVzdWx0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgY2xhc3MgQ2lwaGVyVmFsdWVJbXBsIGltcGxlbWVudHMgQ2lwaGVyVmFsdWUgeworCQkJcHJpdmF0ZSBTdHJpbmcgY2lwaGVyVmFsdWUgPSBudWxsOworCQkJCisgICAgICAgICAgICAvLyBwdWJsaWMgQ2lwaGVyVmFsdWVJbXBsKGJ5dGVbXSB2YWx1ZSkgeworICAgICAgICAgICAgICAgLy8gY2lwaGVyVmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgICAgIC8vIH0KKworICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgKiBAcGFyYW0gdmFsdWUKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcHVibGljIENpcGhlclZhbHVlSW1wbChTdHJpbmcgdmFsdWUpIHsKKwkJCQkvLyBjaXBoZXJWYWx1ZSA9IHZhbHVlLmdldEJ5dGVzKCk7CisJCQkJY2lwaGVyVmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisJCQlwdWJsaWMgU3RyaW5nIGdldFZhbHVlKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAoY2lwaGVyVmFsdWUpOworICAgICAgICAgICAgfQorCisJCQkvLyBwdWJsaWMgdm9pZCBzZXRWYWx1ZShieXRlW10gdmFsdWUpIHsKKwkJCS8vIHB1YmxpYyB2b2lkIHNldFZhbHVlKFN0cmluZyB2YWx1ZSkgeworICAgICAgICAgICAgICAgLy8gY2lwaGVyVmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgICAgIC8vIH0KKwkJCS8qKiBAaW5oZXJpdERvYyAqLworICAgICAgICAgICAgcHVibGljIHZvaWQgc2V0VmFsdWUoU3RyaW5nIHZhbHVlKSB7CisgICAgICAgICAgICAgICAgLy8gY2lwaGVyVmFsdWUgPSB2YWx1ZS5nZXRCeXRlcygpOworCQkJCWNpcGhlclZhbHVlID0gdmFsdWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEVsZW1lbnQgdG9FbGVtZW50KCkgeworICAgICAgICAgICAgICAgIEVsZW1lbnQgcmVzdWx0ID0gWE1MVXRpbHMuY3JlYXRlRWxlbWVudEluRW5jcnlwdGlvblNwYWNlKAorICAgICAgICAgICAgICAgICAgICBfY29udGV4dERvY3VtZW50LCBFbmNyeXB0aW9uQ29uc3RhbnRzLl9UQUdfQ0lQSEVSVkFMVUUpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChfY29udGV4dERvY3VtZW50LmNyZWF0ZVRleHROb2RlKAorICAgICAgICAgICAgICAgICAgICBjaXBoZXJWYWx1ZSkpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIChyZXN1bHQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gPGNvbXBsZXhUeXBlIG5hbWU9J0VuY3J5cHRlZFR5cGUnIGFic3RyYWN0PSd0cnVlJz4KKyAgICAgICAgLy8gICAgIDxzZXF1ZW5jZT4KKyAgICAgICAgLy8gICAgICAgICA8ZWxlbWVudCBuYW1lPSdFbmNyeXB0aW9uTWV0aG9kJyB0eXBlPSd4ZW5jOkVuY3J5cHRpb25NZXRob2RUeXBlJworICAgICAgICAvLyAgICAgICAgICAgICBtaW5PY2N1cnM9JzAnLz4KKyAgICAgICAgLy8gICAgICAgICA8ZWxlbWVudCByZWY9J2RzOktleUluZm8nIG1pbk9jY3Vycz0nMCcvPgorICAgICAgICAvLyAgICAgICAgIDxlbGVtZW50IHJlZj0neGVuYzpDaXBoZXJEYXRhJy8+CisgICAgICAgIC8vICAgICAgICAgPGVsZW1lbnQgcmVmPSd4ZW5jOkVuY3J5cHRpb25Qcm9wZXJ0aWVzJyBtaW5PY2N1cnM9JzAnLz4KKyAgICAgICAgLy8gICAgIDwvc2VxdWVuY2U+CisgICAgICAgIC8vICAgICA8YXR0cmlidXRlIG5hbWU9J0lkJyB0eXBlPSdJRCcgdXNlPSdvcHRpb25hbCcvPgorICAgICAgICAvLyAgICAgPGF0dHJpYnV0ZSBuYW1lPSdUeXBlJyB0eXBlPSdhbnlVUkknIHVzZT0nb3B0aW9uYWwnLz4KKyAgICAgICAgLy8gICAgIDxhdHRyaWJ1dGUgbmFtZT0nTWltZVR5cGUnIHR5cGU9J3N0cmluZycgdXNlPSdvcHRpb25hbCcvPgorICAgICAgICAvLyAgICAgPGF0dHJpYnV0ZSBuYW1lPSdFbmNvZGluZycgdHlwZT0nYW55VVJJJyB1c2U9J29wdGlvbmFsJy8+CisgICAgICAgIC8vIDwvY29tcGxleFR5cGU+CisgICAgICAgIC8vIDxlbGVtZW50IG5hbWU9J0VuY3J5cHRlZERhdGEnIHR5cGU9J3hlbmM6RW5jcnlwdGVkRGF0YVR5cGUnLz4KKyAgICAgICAgLy8gPGNvbXBsZXhUeXBlIG5hbWU9J0VuY3J5cHRlZERhdGFUeXBlJz4KKyAgICAgICAgLy8gICAgIDxjb21wbGV4Q29udGVudD4KKyAgICAgICAgLy8gICAgICAgICA8ZXh0ZW5zaW9uIGJhc2U9J3hlbmM6RW5jcnlwdGVkVHlwZScvPgorICAgICAgICAvLyAgICAgPC9jb21wbGV4Q29udGVudD4KKyAgICAgICAgLy8gPC9jb21wbGV4VHlwZT4KKyAgICAgICAgcHJpdmF0ZSBjbGFzcyBFbmNyeXB0ZWREYXRhSW1wbCBleHRlbmRzIEVuY3J5cHRlZFR5cGVJbXBsIGltcGxlbWVudHMKKyAgICAgICAgICAgICAgICBFbmNyeXB0ZWREYXRhIHsKKyAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICogQHBhcmFtIGRhdGEKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcHVibGljIEVuY3J5cHRlZERhdGFJbXBsKENpcGhlckRhdGEgZGF0YSkgeworICAgICAgICAgICAgICAgIHN1cGVyKGRhdGEpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyA8Y29tcGxleFR5cGUgbmFtZT0nRW5jcnlwdGVkVHlwZScgYWJzdHJhY3Q9J3RydWUnPgorICAgICAgICAgICAgLy8gICAgIDxzZXF1ZW5jZT4KKyAgICAgICAgICAgIC8vICAgICAgICAgPGVsZW1lbnQgbmFtZT0nRW5jcnlwdGlvbk1ldGhvZCcgdHlwZT0neGVuYzpFbmNyeXB0aW9uTWV0aG9kVHlwZScKKyAgICAgICAgICAgIC8vICAgICAgICAgICAgIG1pbk9jY3Vycz0nMCcvPgorICAgICAgICAgICAgLy8gICAgICAgICA8ZWxlbWVudCByZWY9J2RzOktleUluZm8nIG1pbk9jY3Vycz0nMCcvPgorICAgICAgICAgICAgLy8gICAgICAgICA8ZWxlbWVudCByZWY9J3hlbmM6Q2lwaGVyRGF0YScvPgorICAgICAgICAgICAgLy8gICAgICAgICA8ZWxlbWVudCByZWY9J3hlbmM6RW5jcnlwdGlvblByb3BlcnRpZXMnIG1pbk9jY3Vycz0nMCcvPgorICAgICAgICAgICAgLy8gICAgIDwvc2VxdWVuY2U+CisgICAgICAgICAgICAvLyAgICAgPGF0dHJpYnV0ZSBuYW1lPSdJZCcgdHlwZT0nSUQnIHVzZT0nb3B0aW9uYWwnLz4KKyAgICAgICAgICAgIC8vICAgICA8YXR0cmlidXRlIG5hbWU9J1R5cGUnIHR5cGU9J2FueVVSSScgdXNlPSdvcHRpb25hbCcvPgorICAgICAgICAgICAgLy8gICAgIDxhdHRyaWJ1dGUgbmFtZT0nTWltZVR5cGUnIHR5cGU9J3N0cmluZycgdXNlPSdvcHRpb25hbCcvPgorICAgICAgICAgICAgLy8gICAgIDxhdHRyaWJ1dGUgbmFtZT0nRW5jb2RpbmcnIHR5cGU9J2FueVVSSScgdXNlPSdvcHRpb25hbCcvPgorICAgICAgICAgICAgLy8gPC9jb21wbGV4VHlwZT4KKyAgICAgICAgICAgIC8vIDxlbGVtZW50IG5hbWU9J0VuY3J5cHRlZERhdGEnIHR5cGU9J3hlbmM6RW5jcnlwdGVkRGF0YVR5cGUnLz4KKyAgICAgICAgICAgIC8vIDxjb21wbGV4VHlwZSBuYW1lPSdFbmNyeXB0ZWREYXRhVHlwZSc+CisgICAgICAgICAgICAvLyAgICAgPGNvbXBsZXhDb250ZW50PgorICAgICAgICAgICAgLy8gICAgICAgICA8ZXh0ZW5zaW9uIGJhc2U9J3hlbmM6RW5jcnlwdGVkVHlwZScvPgorICAgICAgICAgICAgLy8gICAgIDwvY29tcGxleENvbnRlbnQ+CisgICAgICAgICAgICAvLyA8L2NvbXBsZXhUeXBlPgorICAgICAgICAgICAgRWxlbWVudCB0b0VsZW1lbnQoKSB7CisgICAgICAgICAgICAgICAgRWxlbWVudCByZXN1bHQgPSBFbGVtZW50UHJveHkuY3JlYXRlRWxlbWVudEZvckZhbWlseSgKKyAgICAgICAgICAgICAgICAgICAgX2NvbnRleHREb2N1bWVudCwgRW5jcnlwdGlvbkNvbnN0YW50cy5FbmNyeXB0aW9uU3BlY05TLCAKKyAgICAgICAgICAgICAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5fVEFHX0VOQ1JZUFRFRERBVEEpOworCisgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gc3VwZXIuZ2V0SWQoKSkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0QXR0cmlidXRlTlMoCisgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCBFbmNyeXB0aW9uQ29uc3RhbnRzLl9BVFRfSUQsIHN1cGVyLmdldElkKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBzdXBlci5nZXRUeXBlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldEF0dHJpYnV0ZU5TKAorICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgRW5jcnlwdGlvbkNvbnN0YW50cy5fQVRUX1RZUEUsIHN1cGVyLmdldFR5cGUoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHN1cGVyLmdldE1pbWVUeXBlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldEF0dHJpYnV0ZU5TKAorICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgRW5jcnlwdGlvbkNvbnN0YW50cy5fQVRUX01JTUVUWVBFLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1cGVyLmdldE1pbWVUeXBlKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBzdXBlci5nZXRFbmNvZGluZygpKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRBdHRyaWJ1dGVOUygKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsIEVuY3J5cHRpb25Db25zdGFudHMuX0FUVF9FTkNPRElORywgCisgICAgICAgICAgICAgICAgICAgICAgICBzdXBlci5nZXRFbmNvZGluZygpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gc3VwZXIuZ2V0RW5jcnlwdGlvbk1ldGhvZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZCgoKEVuY3J5cHRpb25NZXRob2RJbXBsKQorICAgICAgICAgICAgICAgICAgICAgICAgc3VwZXIuZ2V0RW5jcnlwdGlvbk1ldGhvZCgpKS50b0VsZW1lbnQoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHN1cGVyLmdldEtleUluZm8oKSkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoc3VwZXIuZ2V0S2V5SW5mbygpLmdldEVsZW1lbnQoKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKAorICAgICAgICAgICAgICAgICAgICAoKENpcGhlckRhdGFJbXBsKSBzdXBlci5nZXRDaXBoZXJEYXRhKCkpLnRvRWxlbWVudCgpKTsKKyAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBzdXBlci5nZXRFbmNyeXB0aW9uUHJvcGVydGllcygpKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZCgoKEVuY3J5cHRpb25Qcm9wZXJ0aWVzSW1wbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1cGVyLmdldEVuY3J5cHRpb25Qcm9wZXJ0aWVzKCkpLnRvRWxlbWVudCgpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gKHJlc3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyA8Y29tcGxleFR5cGUgbmFtZT0nRW5jcnlwdGVkVHlwZScgYWJzdHJhY3Q9J3RydWUnPgorICAgICAgICAvLyAgICAgPHNlcXVlbmNlPgorICAgICAgICAvLyAgICAgICAgIDxlbGVtZW50IG5hbWU9J0VuY3J5cHRpb25NZXRob2QnIHR5cGU9J3hlbmM6RW5jcnlwdGlvbk1ldGhvZFR5cGUnCisgICAgICAgIC8vICAgICAgICAgICAgIG1pbk9jY3Vycz0nMCcvPgorICAgICAgICAvLyAgICAgICAgIDxlbGVtZW50IHJlZj0nZHM6S2V5SW5mbycgbWluT2NjdXJzPScwJy8+CisgICAgICAgIC8vICAgICAgICAgPGVsZW1lbnQgcmVmPSd4ZW5jOkNpcGhlckRhdGEnLz4KKyAgICAgICAgLy8gICAgICAgICA8ZWxlbWVudCByZWY9J3hlbmM6RW5jcnlwdGlvblByb3BlcnRpZXMnIG1pbk9jY3Vycz0nMCcvPgorICAgICAgICAvLyAgICAgPC9zZXF1ZW5jZT4KKyAgICAgICAgLy8gICAgIDxhdHRyaWJ1dGUgbmFtZT0nSWQnIHR5cGU9J0lEJyB1c2U9J29wdGlvbmFsJy8+CisgICAgICAgIC8vICAgICA8YXR0cmlidXRlIG5hbWU9J1R5cGUnIHR5cGU9J2FueVVSSScgdXNlPSdvcHRpb25hbCcvPgorICAgICAgICAvLyAgICAgPGF0dHJpYnV0ZSBuYW1lPSdNaW1lVHlwZScgdHlwZT0nc3RyaW5nJyB1c2U9J29wdGlvbmFsJy8+CisgICAgICAgIC8vICAgICA8YXR0cmlidXRlIG5hbWU9J0VuY29kaW5nJyB0eXBlPSdhbnlVUkknIHVzZT0nb3B0aW9uYWwnLz4KKyAgICAgICAgLy8gPC9jb21wbGV4VHlwZT4KKyAgICAgICAgLy8gPGVsZW1lbnQgbmFtZT0nRW5jcnlwdGVkS2V5JyB0eXBlPSd4ZW5jOkVuY3J5cHRlZEtleVR5cGUnLz4KKyAgICAgICAgLy8gPGNvbXBsZXhUeXBlIG5hbWU9J0VuY3J5cHRlZEtleVR5cGUnPgorICAgICAgICAvLyAgICAgPGNvbXBsZXhDb250ZW50PgorICAgICAgICAvLyAgICAgICAgIDxleHRlbnNpb24gYmFzZT0neGVuYzpFbmNyeXB0ZWRUeXBlJz4KKyAgICAgICAgLy8gICAgICAgICAgICAgPHNlcXVlbmNlPgorICAgICAgICAvLyAgICAgICAgICAgICAgICAgPGVsZW1lbnQgcmVmPSd4ZW5jOlJlZmVyZW5jZUxpc3QnIG1pbk9jY3Vycz0nMCcvPgorICAgICAgICAvLyAgICAgICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0nQ2FycmllZEtleU5hbWUnIHR5cGU9J3N0cmluZycgbWluT2NjdXJzPScwJy8+CisgICAgICAgIC8vICAgICAgICAgICAgIDwvc2VxdWVuY2U+CisgICAgICAgIC8vICAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0nUmVjaXBpZW50JyB0eXBlPSdzdHJpbmcnIHVzZT0nb3B0aW9uYWwnLz4KKyAgICAgICAgLy8gICAgICAgICA8L2V4dGVuc2lvbj4KKyAgICAgICAgLy8gICAgIDwvY29tcGxleENvbnRlbnQ+CisgICAgICAgIC8vIDwvY29tcGxleFR5cGU+CisgICAgICAgIHByaXZhdGUgY2xhc3MgRW5jcnlwdGVkS2V5SW1wbCBleHRlbmRzIEVuY3J5cHRlZFR5cGVJbXBsIGltcGxlbWVudHMKKyAgICAgICAgICAgICAgICBFbmNyeXB0ZWRLZXkgeworICAgICAgICAgICAgcHJpdmF0ZSBTdHJpbmcga2V5UmVjaXBpZW50ID0gbnVsbDsKKyAgICAgICAgICAgIHByaXZhdGUgUmVmZXJlbmNlTGlzdCByZWZlcmVuY2VMaXN0ID0gbnVsbDsKKyAgICAgICAgICAgIHByaXZhdGUgU3RyaW5nIGNhcnJpZWROYW1lID0gbnVsbDsKKworICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgKiBAcGFyYW0gZGF0YQorICAgICAgICAgICAgICovCisgICAgICAgICAgICBwdWJsaWMgRW5jcnlwdGVkS2V5SW1wbChDaXBoZXJEYXRhIGRhdGEpIHsKKyAgICAgICAgICAgICAgICBzdXBlcihkYXRhKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICAgICAgICBwdWJsaWMgU3RyaW5nIGdldFJlY2lwaWVudCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKGtleVJlY2lwaWVudCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgICAgICAgICAgcHVibGljIHZvaWQgc2V0UmVjaXBpZW50KFN0cmluZyByZWNpcGllbnQpIHsKKyAgICAgICAgICAgICAgICBrZXlSZWNpcGllbnQgPSByZWNpcGllbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgICAgICAgICAgcHVibGljIFJlZmVyZW5jZUxpc3QgZ2V0UmVmZXJlbmNlTGlzdCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKHJlZmVyZW5jZUxpc3QpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHNldFJlZmVyZW5jZUxpc3QoUmVmZXJlbmNlTGlzdCBsaXN0KSB7CisgICAgICAgICAgICAgICAgcmVmZXJlbmNlTGlzdCA9IGxpc3Q7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgICAgICAgICAgcHVibGljIFN0cmluZyBnZXRDYXJyaWVkTmFtZSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKGNhcnJpZWROYW1lKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBzZXRDYXJyaWVkTmFtZShTdHJpbmcgbmFtZSkgeworICAgICAgICAgICAgICAgIGNhcnJpZWROYW1lID0gbmFtZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gPGNvbXBsZXhUeXBlIG5hbWU9J0VuY3J5cHRlZFR5cGUnIGFic3RyYWN0PSd0cnVlJz4KKyAgICAgICAgICAgIC8vICAgICA8c2VxdWVuY2U+CisgICAgICAgICAgICAvLyAgICAgICAgIDxlbGVtZW50IG5hbWU9J0VuY3J5cHRpb25NZXRob2QnIHR5cGU9J3hlbmM6RW5jcnlwdGlvbk1ldGhvZFR5cGUnCisgICAgICAgICAgICAvLyAgICAgICAgICAgICBtaW5PY2N1cnM9JzAnLz4KKyAgICAgICAgICAgIC8vICAgICAgICAgPGVsZW1lbnQgcmVmPSdkczpLZXlJbmZvJyBtaW5PY2N1cnM9JzAnLz4KKyAgICAgICAgICAgIC8vICAgICAgICAgPGVsZW1lbnQgcmVmPSd4ZW5jOkNpcGhlckRhdGEnLz4KKyAgICAgICAgICAgIC8vICAgICAgICAgPGVsZW1lbnQgcmVmPSd4ZW5jOkVuY3J5cHRpb25Qcm9wZXJ0aWVzJyBtaW5PY2N1cnM9JzAnLz4KKyAgICAgICAgICAgIC8vICAgICA8L3NlcXVlbmNlPgorICAgICAgICAgICAgLy8gICAgIDxhdHRyaWJ1dGUgbmFtZT0nSWQnIHR5cGU9J0lEJyB1c2U9J29wdGlvbmFsJy8+CisgICAgICAgICAgICAvLyAgICAgPGF0dHJpYnV0ZSBuYW1lPSdUeXBlJyB0eXBlPSdhbnlVUkknIHVzZT0nb3B0aW9uYWwnLz4KKyAgICAgICAgICAgIC8vICAgICA8YXR0cmlidXRlIG5hbWU9J01pbWVUeXBlJyB0eXBlPSdzdHJpbmcnIHVzZT0nb3B0aW9uYWwnLz4KKyAgICAgICAgICAgIC8vICAgICA8YXR0cmlidXRlIG5hbWU9J0VuY29kaW5nJyB0eXBlPSdhbnlVUkknIHVzZT0nb3B0aW9uYWwnLz4KKyAgICAgICAgICAgIC8vIDwvY29tcGxleFR5cGU+CisgICAgICAgICAgICAvLyA8ZWxlbWVudCBuYW1lPSdFbmNyeXB0ZWRLZXknIHR5cGU9J3hlbmM6RW5jcnlwdGVkS2V5VHlwZScvPgorICAgICAgICAgICAgLy8gPGNvbXBsZXhUeXBlIG5hbWU9J0VuY3J5cHRlZEtleVR5cGUnPgorICAgICAgICAgICAgLy8gICAgIDxjb21wbGV4Q29udGVudD4KKyAgICAgICAgICAgIC8vICAgICAgICAgPGV4dGVuc2lvbiBiYXNlPSd4ZW5jOkVuY3J5cHRlZFR5cGUnPgorICAgICAgICAgICAgLy8gICAgICAgICAgICAgPHNlcXVlbmNlPgorICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgIDxlbGVtZW50IHJlZj0neGVuYzpSZWZlcmVuY2VMaXN0JyBtaW5PY2N1cnM9JzAnLz4KKyAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSdDYXJyaWVkS2V5TmFtZScgdHlwZT0nc3RyaW5nJyBtaW5PY2N1cnM9JzAnLz4KKyAgICAgICAgICAgIC8vICAgICAgICAgICAgIDwvc2VxdWVuY2U+CisgICAgICAgICAgICAvLyAgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9J1JlY2lwaWVudCcgdHlwZT0nc3RyaW5nJyB1c2U9J29wdGlvbmFsJy8+CisgICAgICAgICAgICAvLyAgICAgICAgIDwvZXh0ZW5zaW9uPgorICAgICAgICAgICAgLy8gICAgIDwvY29tcGxleENvbnRlbnQ+CisgICAgICAgICAgICAvLyA8L2NvbXBsZXhUeXBlPgorICAgICAgICAgICAgRWxlbWVudCB0b0VsZW1lbnQoKSB7CisgICAgICAgICAgICAgICAgRWxlbWVudCByZXN1bHQgPSBFbGVtZW50UHJveHkuY3JlYXRlRWxlbWVudEZvckZhbWlseSgKKyAgICAgICAgICAgICAgICAgICAgX2NvbnRleHREb2N1bWVudCwgRW5jcnlwdGlvbkNvbnN0YW50cy5FbmNyeXB0aW9uU3BlY05TLCAKKyAgICAgICAgICAgICAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5fVEFHX0VOQ1JZUFRFREtFWSk7CisKKyAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBzdXBlci5nZXRJZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRBdHRyaWJ1dGVOUygKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsIEVuY3J5cHRpb25Db25zdGFudHMuX0FUVF9JRCwgc3VwZXIuZ2V0SWQoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHN1cGVyLmdldFR5cGUoKSkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0QXR0cmlidXRlTlMoCisgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCBFbmNyeXB0aW9uQ29uc3RhbnRzLl9BVFRfVFlQRSwgc3VwZXIuZ2V0VHlwZSgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gc3VwZXIuZ2V0TWltZVR5cGUoKSkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0QXR0cmlidXRlTlMobnVsbCwgCisgICAgICAgICAgICAgICAgICAgICAgICBFbmNyeXB0aW9uQ29uc3RhbnRzLl9BVFRfTUlNRVRZUEUsIHN1cGVyLmdldE1pbWVUeXBlKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBzdXBlci5nZXRFbmNvZGluZygpKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRBdHRyaWJ1dGVOUyhudWxsLCBDb25zdGFudHMuX0FUVF9FTkNPRElORywKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1cGVyLmdldEVuY29kaW5nKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBnZXRSZWNpcGllbnQoKSkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0QXR0cmlidXRlTlMobnVsbCwgCisgICAgICAgICAgICAgICAgICAgICAgICBFbmNyeXB0aW9uQ29uc3RhbnRzLl9BVFRfUkVDSVBJRU5ULCBnZXRSZWNpcGllbnQoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHN1cGVyLmdldEVuY3J5cHRpb25NZXRob2QoKSkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoKChFbmNyeXB0aW9uTWV0aG9kSW1wbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1cGVyLmdldEVuY3J5cHRpb25NZXRob2QoKSkudG9FbGVtZW50KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBzdXBlci5nZXRLZXlJbmZvKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKHN1cGVyLmdldEtleUluZm8oKS5nZXRFbGVtZW50KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoCisgICAgICAgICAgICAgICAgICAgICgoQ2lwaGVyRGF0YUltcGwpIHN1cGVyLmdldENpcGhlckRhdGEoKSkudG9FbGVtZW50KCkpOworICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHN1cGVyLmdldEVuY3J5cHRpb25Qcm9wZXJ0aWVzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKCgoRW5jcnlwdGlvblByb3BlcnRpZXNJbXBsKQorICAgICAgICAgICAgICAgICAgICAgICAgc3VwZXIuZ2V0RW5jcnlwdGlvblByb3BlcnRpZXMoKSkudG9FbGVtZW50KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlTGlzdCAhPSBudWxsICYmICFyZWZlcmVuY2VMaXN0LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoKChSZWZlcmVuY2VMaXN0SW1wbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdldFJlZmVyZW5jZUxpc3QoKSkudG9FbGVtZW50KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBjYXJyaWVkTmFtZSkgeworICAgICAgICAgICAgICAgICAgICBFbGVtZW50IGVsZW1lbnQgPSBFbGVtZW50UHJveHkuY3JlYXRlRWxlbWVudEZvckZhbWlseSgKKwkJCV9jb250ZXh0RG9jdW1lbnQsIAorICAgICAgICAgICAgICAgICAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5FbmNyeXB0aW9uU3BlY05TLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEVuY3J5cHRpb25Db25zdGFudHMuX1RBR19DQVJSSUVES0VZTkFNRSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUgbm9kZSA9IF9jb250ZXh0RG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY2FycmllZE5hbWUpOworICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKG5vZGUpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIChyZXN1bHQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSBhYnN0cmFjdCBjbGFzcyBFbmNyeXB0ZWRUeXBlSW1wbCB7CisgICAgICAgICAgICBwcml2YXRlIFN0cmluZyBpZCA9ICBudWxsOworICAgICAgICAgICAgcHJpdmF0ZSBTdHJpbmcgdHlwZSA9IG51bGw7CisgICAgICAgICAgICBwcml2YXRlIFN0cmluZyBtaW1lVHlwZSA9IG51bGw7CisgICAgICAgICAgICBwcml2YXRlIFN0cmluZyBlbmNvZGluZyA9IG51bGw7CisgICAgICAgICAgICBwcml2YXRlIEVuY3J5cHRpb25NZXRob2QgZW5jcnlwdGlvbk1ldGhvZCA9IG51bGw7CisgICAgICAgICAgICBwcml2YXRlIEtleUluZm8ga2V5SW5mbyA9IG51bGw7CisgICAgICAgICAgICBwcml2YXRlIENpcGhlckRhdGEgY2lwaGVyRGF0YSA9IG51bGw7CisgICAgICAgICAgICBwcml2YXRlIEVuY3J5cHRpb25Qcm9wZXJ0aWVzIGVuY3J5cHRpb25Qcm9wZXJ0aWVzID0gbnVsbDsKKworICAgICAgICAgICAgcHJvdGVjdGVkIEVuY3J5cHRlZFR5cGVJbXBsKENpcGhlckRhdGEgZGF0YSkgeworICAgICAgICAgICAgICAgIGNpcGhlckRhdGEgPSBkYXRhOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyoqIAorICAgICAgICAgICAgICogCisgICAgICAgICAgICAgKiBAcmV0dXJuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0SWQoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIChpZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKioKKyAgICAgICAgICAgICAqIAorICAgICAgICAgICAgICogQHBhcmFtIGlkCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHNldElkKFN0cmluZyBpZCkgeworICAgICAgICAgICAgICAgIHRoaXMuaWQgPSBpZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICogCisgICAgICAgICAgICAgKiBAcmV0dXJuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0VHlwZSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKHR5cGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgKiAKKyAgICAgICAgICAgICAqIEBwYXJhbSB0eXBlCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHNldFR5cGUoU3RyaW5nIHR5cGUpIHsKKwkJaWYgKHR5cGUgPT0gbnVsbCB8fCB0eXBlLmxlbmd0aCgpID09IDApIHsKKwkJICAgIHRoaXMudHlwZSA9IG51bGw7CisJCX0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFVSSSB0bXBUeXBlID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcFR5cGUgPSBuZXcgVVJJKHR5cGUpOworICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChVUkkuTWFsZm9ybWVkVVJJRXhjZXB0aW9uIG1mdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24pIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKS5pbml0Q2F1c2UobWZ1ZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgdGhpcy50eXBlID0gdG1wVHlwZS50b1N0cmluZygpOworCQl9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKioKKyAgICAgICAgICAgICAqIAorICAgICAgICAgICAgICogQHJldHVybgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBwdWJsaWMgU3RyaW5nIGdldE1pbWVUeXBlKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAobWltZVR5cGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgKiAKKyAgICAgICAgICAgICAqIEBwYXJhbSB0eXBlCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHNldE1pbWVUeXBlKFN0cmluZyB0eXBlKSB7CisgICAgICAgICAgICAgICAgbWltZVR5cGUgPSB0eXBlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgKiAKKyAgICAgICAgICAgICAqIEByZXR1cm4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcHVibGljIFN0cmluZyBnZXRFbmNvZGluZygpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKGVuY29kaW5nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICogCisgICAgICAgICAgICAgKiBAcGFyYW0gZW5jb2RpbmcKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcHVibGljIHZvaWQgc2V0RW5jb2RpbmcoU3RyaW5nIGVuY29kaW5nKSB7CisJCWlmIChlbmNvZGluZyA9PSBudWxsIHx8IGVuY29kaW5nLmxlbmd0aCgpID09IDApIHsKKwkJICAgIHRoaXMuZW5jb2RpbmcgPSBudWxsOworCQl9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBVUkkgdG1wRW5jb2RpbmcgPSBudWxsOworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgdG1wRW5jb2RpbmcgPSBuZXcgVVJJKGVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoVVJJLk1hbGZvcm1lZFVSSUV4Y2VwdGlvbiBtZnVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCkuaW5pdENhdXNlKG1mdWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHRoaXMuZW5jb2RpbmcgPSB0bXBFbmNvZGluZy50b1N0cmluZygpOworCQl9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKioKKyAgICAgICAgICAgICAqIAorICAgICAgICAgICAgICogQHJldHVybgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBwdWJsaWMgRW5jcnlwdGlvbk1ldGhvZCBnZXRFbmNyeXB0aW9uTWV0aG9kKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAoZW5jcnlwdGlvbk1ldGhvZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKioKKyAgICAgICAgICAgICAqIAorICAgICAgICAgICAgICogQHBhcmFtIG1ldGhvZAorICAgICAgICAgICAgICovCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBzZXRFbmNyeXB0aW9uTWV0aG9kKEVuY3J5cHRpb25NZXRob2QgbWV0aG9kKSB7CisgICAgICAgICAgICAgICAgZW5jcnlwdGlvbk1ldGhvZCA9IG1ldGhvZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICogCisgICAgICAgICAgICAgKiBAcmV0dXJuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHB1YmxpYyBLZXlJbmZvIGdldEtleUluZm8oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIChrZXlJbmZvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICogCisgICAgICAgICAgICAgKiBAcGFyYW0gaW5mbworICAgICAgICAgICAgICovCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBzZXRLZXlJbmZvKEtleUluZm8gaW5mbykgeworICAgICAgICAgICAgICAgIGtleUluZm8gPSBpbmZvOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgKiAKKyAgICAgICAgICAgICAqIEByZXR1cm4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcHVibGljIENpcGhlckRhdGEgZ2V0Q2lwaGVyRGF0YSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKGNpcGhlckRhdGEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgKiAKKyAgICAgICAgICAgICAqIEByZXR1cm4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcHVibGljIEVuY3J5cHRpb25Qcm9wZXJ0aWVzIGdldEVuY3J5cHRpb25Qcm9wZXJ0aWVzKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAoZW5jcnlwdGlvblByb3BlcnRpZXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgKiAKKyAgICAgICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0aWVzCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHNldEVuY3J5cHRpb25Qcm9wZXJ0aWVzKAorICAgICAgICAgICAgICAgICAgICBFbmNyeXB0aW9uUHJvcGVydGllcyBwcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICAgICAgZW5jcnlwdGlvblByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gPGNvbXBsZXhUeXBlIG5hbWU9J0VuY3J5cHRpb25NZXRob2RUeXBlJyBtaXhlZD0ndHJ1ZSc+CisgICAgICAgIC8vICAgICA8c2VxdWVuY2U+CisgICAgICAgIC8vICAgICAgICAgPGVsZW1lbnQgbmFtZT0nS2V5U2l6ZScgbWluT2NjdXJzPScwJyB0eXBlPSd4ZW5jOktleVNpemVUeXBlJy8+CisgICAgICAgIC8vICAgICAgICAgPGVsZW1lbnQgbmFtZT0nT0FFUHBhcmFtcycgbWluT2NjdXJzPScwJyB0eXBlPSdiYXNlNjRCaW5hcnknLz4KKyAgICAgICAgLy8gICAgICAgICA8YW55IG5hbWVzcGFjZT0nIyNvdGhlcicgbWluT2NjdXJzPScwJyBtYXhPY2N1cnM9J3VuYm91bmRlZCcvPgorICAgICAgICAvLyAgICAgPC9zZXF1ZW5jZT4KKyAgICAgICAgLy8gICAgIDxhdHRyaWJ1dGUgbmFtZT0nQWxnb3JpdGhtJyB0eXBlPSdhbnlVUkknIHVzZT0ncmVxdWlyZWQnLz4KKyAgICAgICAgLy8gPC9jb21wbGV4VHlwZT4KKyAgICAgICAgcHJpdmF0ZSBjbGFzcyBFbmNyeXB0aW9uTWV0aG9kSW1wbCBpbXBsZW1lbnRzIEVuY3J5cHRpb25NZXRob2QgeworICAgICAgICAgICAgcHJpdmF0ZSBTdHJpbmcgYWxnb3JpdGhtID0gbnVsbDsKKyAgICAgICAgICAgIHByaXZhdGUgaW50IGtleVNpemUgPSBJbnRlZ2VyLk1JTl9WQUxVRTsKKyAgICAgICAgICAgIHByaXZhdGUgYnl0ZVtdIG9hZXBQYXJhbXMgPSBudWxsOworICAgICAgICAgICAgcHJpdmF0ZSBMaXN0IGVuY3J5cHRpb25NZXRob2RJbmZvcm1hdGlvbiA9IG51bGw7CisgICAgICAgICAgICAvKioKKyAgICAgICAgICAgICAqIAorICAgICAgICAgICAgICogQHBhcmFtIGFsZ29yaXRobQorICAgICAgICAgICAgICovCisgICAgICAgICAgICBwdWJsaWMgRW5jcnlwdGlvbk1ldGhvZEltcGwoU3RyaW5nIGFsZ29yaXRobSkgeworICAgICAgICAgICAgICAgIFVSSSB0bXBBbGdvcml0aG0gPSBudWxsOworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHRtcEFsZ29yaXRobSA9IG5ldyBVUkkoYWxnb3JpdGhtKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChVUkkuTWFsZm9ybWVkVVJJRXhjZXB0aW9uIG1mdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKS5pbml0Q2F1c2UobWZ1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRoaXMuYWxnb3JpdGhtID0gdG1wQWxnb3JpdGhtLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgZW5jcnlwdGlvbk1ldGhvZEluZm9ybWF0aW9uID0gbmV3IExpbmtlZExpc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgICAgICAgICAgcHVibGljIFN0cmluZyBnZXRBbGdvcml0aG0oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIChhbGdvcml0aG0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICAgICAgICBwdWJsaWMgaW50IGdldEtleVNpemUoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIChrZXlTaXplKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgICAgICAgICAgcHVibGljIHZvaWQgc2V0S2V5U2l6ZShpbnQgc2l6ZSkgeworICAgICAgICAgICAgICAgIGtleVNpemUgPSBzaXplOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICAgICAgICBwdWJsaWMgYnl0ZVtdIGdldE9BRVBwYXJhbXMoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIChvYWVwUGFyYW1zKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgICAgICAgICAgcHVibGljIHZvaWQgc2V0T0FFUHBhcmFtcyhieXRlW10gcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgb2FlcFBhcmFtcyA9IHBhcmFtczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgICAgICAgICAgcHVibGljIEl0ZXJhdG9yIGdldEVuY3J5cHRpb25NZXRob2RJbmZvcm1hdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKGVuY3J5cHRpb25NZXRob2RJbmZvcm1hdGlvbi5pdGVyYXRvcigpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgICAgICAgICAgcHVibGljIHZvaWQgYWRkRW5jcnlwdGlvbk1ldGhvZEluZm9ybWF0aW9uKEVsZW1lbnQgaW5mbykgeworICAgICAgICAgICAgICAgIGVuY3J5cHRpb25NZXRob2RJbmZvcm1hdGlvbi5hZGQoaW5mbyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJlbW92ZUVuY3J5cHRpb25NZXRob2RJbmZvcm1hdGlvbihFbGVtZW50IGluZm8pIHsKKyAgICAgICAgICAgICAgICBlbmNyeXB0aW9uTWV0aG9kSW5mb3JtYXRpb24ucmVtb3ZlKGluZm8pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyA8Y29tcGxleFR5cGUgbmFtZT0nRW5jcnlwdGlvbk1ldGhvZFR5cGUnIG1peGVkPSd0cnVlJz4KKyAgICAgICAgICAgIC8vICAgICA8c2VxdWVuY2U+CisgICAgICAgICAgICAvLyAgICAgICAgIDxlbGVtZW50IG5hbWU9J0tleVNpemUnIG1pbk9jY3Vycz0nMCcgdHlwZT0neGVuYzpLZXlTaXplVHlwZScvPgorICAgICAgICAgICAgLy8gICAgICAgICA8ZWxlbWVudCBuYW1lPSdPQUVQcGFyYW1zJyBtaW5PY2N1cnM9JzAnIHR5cGU9J2Jhc2U2NEJpbmFyeScvPgorICAgICAgICAgICAgLy8gICAgICAgICA8YW55IG5hbWVzcGFjZT0nIyNvdGhlcicgbWluT2NjdXJzPScwJyBtYXhPY2N1cnM9J3VuYm91bmRlZCcvPgorICAgICAgICAgICAgLy8gICAgIDwvc2VxdWVuY2U+CisgICAgICAgICAgICAvLyAgICAgPGF0dHJpYnV0ZSBuYW1lPSdBbGdvcml0aG0nIHR5cGU9J2FueVVSSScgdXNlPSdyZXF1aXJlZCcvPgorICAgICAgICAgICAgLy8gPC9jb21wbGV4VHlwZT4KKyAgICAgICAgICAgIEVsZW1lbnQgdG9FbGVtZW50KCkgeworICAgICAgICAgICAgICAgIEVsZW1lbnQgcmVzdWx0ID0gWE1MVXRpbHMuY3JlYXRlRWxlbWVudEluRW5jcnlwdGlvblNwYWNlKAorICAgICAgICAgICAgICAgICAgICBfY29udGV4dERvY3VtZW50LCBFbmNyeXB0aW9uQ29uc3RhbnRzLl9UQUdfRU5DUllQVElPTk1FVEhPRCk7CisgICAgICAgICAgICAgICAgcmVzdWx0LnNldEF0dHJpYnV0ZU5TKG51bGwsIEVuY3J5cHRpb25Db25zdGFudHMuX0FUVF9BTEdPUklUSE0sIAorICAgICAgICAgICAgICAgICAgICBhbGdvcml0aG0pOworICAgICAgICAgICAgICAgIGlmIChrZXlTaXplID4gMCkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoCisgICAgICAgICAgICAgICAgICAgICAgICBYTUxVdGlscy5jcmVhdGVFbGVtZW50SW5FbmNyeXB0aW9uU3BhY2UoX2NvbnRleHREb2N1bWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmNyeXB0aW9uQ29uc3RhbnRzLl9UQUdfS0VZU0laRSkuYXBwZW5kQ2hpbGQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHREb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nLnZhbHVlT2Yoa2V5U2l6ZSkpKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChudWxsICE9IG9hZXBQYXJhbXMpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKAorICAgICAgICAgICAgICAgICAgICAgICAgWE1MVXRpbHMuY3JlYXRlRWxlbWVudEluRW5jcnlwdGlvblNwYWNlKF9jb250ZXh0RG9jdW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5fVEFHX09BRVBQQVJBTVMpLmFwcGVuZENoaWxkKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0RG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBTdHJpbmcob2FlcFBhcmFtcykpKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGl0ciA9IGVuY3J5cHRpb25NZXRob2RJbmZvcm1hdGlvbi5pdGVyYXRvcigpOworICAgICAgICAgICAgICAgIHdoaWxlIChpdHIuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZCgoRWxlbWVudCkgaXRyLm5leHQoKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIChyZXN1bHQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gPGVsZW1lbnQgbmFtZT0nRW5jcnlwdGlvblByb3BlcnRpZXMnIHR5cGU9J3hlbmM6RW5jcnlwdGlvblByb3BlcnRpZXNUeXBlJy8+CisgICAgICAgIC8vIDxjb21wbGV4VHlwZSBuYW1lPSdFbmNyeXB0aW9uUHJvcGVydGllc1R5cGUnPgorICAgICAgICAvLyAgICAgPHNlcXVlbmNlPgorICAgICAgICAvLyAgICAgICAgIDxlbGVtZW50IHJlZj0neGVuYzpFbmNyeXB0aW9uUHJvcGVydHknIG1heE9jY3Vycz0ndW5ib3VuZGVkJy8+CisgICAgICAgIC8vICAgICA8L3NlcXVlbmNlPgorICAgICAgICAvLyAgICAgPGF0dHJpYnV0ZSBuYW1lPSdJZCcgdHlwZT0nSUQnIHVzZT0nb3B0aW9uYWwnLz4KKyAgICAgICAgLy8gPC9jb21wbGV4VHlwZT4KKyAgICAgICAgcHJpdmF0ZSBjbGFzcyBFbmNyeXB0aW9uUHJvcGVydGllc0ltcGwgaW1wbGVtZW50cyBFbmNyeXB0aW9uUHJvcGVydGllcyB7CisgICAgICAgICAgICBwcml2YXRlIFN0cmluZyBpZCA9IG51bGw7CisgICAgICAgICAgICBwcml2YXRlIExpc3QgZW5jcnlwdGlvblByb3BlcnRpZXMgPSBudWxsOworICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgKiAKKyAgICAgICAgICAgICAqCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHB1YmxpYyBFbmNyeXB0aW9uUHJvcGVydGllc0ltcGwoKSB7CisgICAgICAgICAgICAgICAgZW5jcnlwdGlvblByb3BlcnRpZXMgPSBuZXcgTGlua2VkTGlzdCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICAgICAgICBwdWJsaWMgU3RyaW5nIGdldElkKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAoaWQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBzZXRJZChTdHJpbmcgaWQpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmlkID0gaWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICAgICAgICAgIHB1YmxpYyBJdGVyYXRvciBnZXRFbmNyeXB0aW9uUHJvcGVydGllcygpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKGVuY3J5cHRpb25Qcm9wZXJ0aWVzLml0ZXJhdG9yKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBhZGRFbmNyeXB0aW9uUHJvcGVydHkoRW5jcnlwdGlvblByb3BlcnR5IHByb3BlcnR5KSB7CisgICAgICAgICAgICAgICAgZW5jcnlwdGlvblByb3BlcnRpZXMuYWRkKHByb3BlcnR5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgICAgICAgICAgcHVibGljIHZvaWQgcmVtb3ZlRW5jcnlwdGlvblByb3BlcnR5KEVuY3J5cHRpb25Qcm9wZXJ0eSBwcm9wZXJ0eSkgeworICAgICAgICAgICAgICAgIGVuY3J5cHRpb25Qcm9wZXJ0aWVzLnJlbW92ZShwcm9wZXJ0eSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIDxlbGVtZW50IG5hbWU9J0VuY3J5cHRpb25Qcm9wZXJ0aWVzJyB0eXBlPSd4ZW5jOkVuY3J5cHRpb25Qcm9wZXJ0aWVzVHlwZScvPgorICAgICAgICAgICAgLy8gPGNvbXBsZXhUeXBlIG5hbWU9J0VuY3J5cHRpb25Qcm9wZXJ0aWVzVHlwZSc+CisgICAgICAgICAgICAvLyAgICAgPHNlcXVlbmNlPgorICAgICAgICAgICAgLy8gICAgICAgICA8ZWxlbWVudCByZWY9J3hlbmM6RW5jcnlwdGlvblByb3BlcnR5JyBtYXhPY2N1cnM9J3VuYm91bmRlZCcvPgorICAgICAgICAgICAgLy8gICAgIDwvc2VxdWVuY2U+CisgICAgICAgICAgICAvLyAgICAgPGF0dHJpYnV0ZSBuYW1lPSdJZCcgdHlwZT0nSUQnIHVzZT0nb3B0aW9uYWwnLz4KKyAgICAgICAgICAgIC8vIDwvY29tcGxleFR5cGU+CisgICAgICAgICAgICBFbGVtZW50IHRvRWxlbWVudCgpIHsKKyAgICAgICAgICAgICAgICBFbGVtZW50IHJlc3VsdCA9IFhNTFV0aWxzLmNyZWF0ZUVsZW1lbnRJbkVuY3J5cHRpb25TcGFjZSgKKyAgICAgICAgICAgICAgICAgICAgX2NvbnRleHREb2N1bWVudCwgRW5jcnlwdGlvbkNvbnN0YW50cy5fVEFHX0VOQ1JZUFRJT05QUk9QRVJUSUVTKTsKKyAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBpZCkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0QXR0cmlidXRlTlMobnVsbCwgRW5jcnlwdGlvbkNvbnN0YW50cy5fQVRUX0lELCBpZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGl0ciA9IGdldEVuY3J5cHRpb25Qcm9wZXJ0aWVzKCk7CisgICAgICAgICAgICAgICAgd2hpbGUgKGl0ci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKCgoRW5jcnlwdGlvblByb3BlcnR5SW1wbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ci5uZXh0KCkpLnRvRWxlbWVudCgpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gKHJlc3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyA8ZWxlbWVudCBuYW1lPSdFbmNyeXB0aW9uUHJvcGVydHknIHR5cGU9J3hlbmM6RW5jcnlwdGlvblByb3BlcnR5VHlwZScvPgorICAgICAgICAvLyA8Y29tcGxleFR5cGUgbmFtZT0nRW5jcnlwdGlvblByb3BlcnR5VHlwZScgbWl4ZWQ9J3RydWUnPgorICAgICAgICAvLyAgICAgPGNob2ljZSBtYXhPY2N1cnM9J3VuYm91bmRlZCc+CisgICAgICAgIC8vICAgICAgICAgPGFueSBuYW1lc3BhY2U9JyMjb3RoZXInIHByb2Nlc3NDb250ZW50cz0nbGF4Jy8+CisgICAgICAgIC8vICAgICA8L2Nob2ljZT4KKyAgICAgICAgLy8gICAgIDxhdHRyaWJ1dGUgbmFtZT0nVGFyZ2V0JyB0eXBlPSdhbnlVUkknIHVzZT0nb3B0aW9uYWwnLz4KKyAgICAgICAgLy8gICAgIDxhdHRyaWJ1dGUgbmFtZT0nSWQnIHR5cGU9J0lEJyB1c2U9J29wdGlvbmFsJy8+CisgICAgICAgIC8vICAgICA8YW55QXR0cmlidXRlIG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIi8+CisgICAgICAgIC8vIDwvY29tcGxleFR5cGU+CisgICAgICAgIHByaXZhdGUgY2xhc3MgRW5jcnlwdGlvblByb3BlcnR5SW1wbCBpbXBsZW1lbnRzIEVuY3J5cHRpb25Qcm9wZXJ0eSB7CisgICAgICAgICAgICBwcml2YXRlIFN0cmluZyB0YXJnZXQgPSBudWxsOworICAgICAgICAgICAgcHJpdmF0ZSBTdHJpbmcgaWQgPSBudWxsOworCSAgICBwcml2YXRlIEhhc2hNYXAgYXR0cmlidXRlTWFwID0gbmV3IEhhc2hNYXAoKTsKKyAgICAgICAgICAgIHByaXZhdGUgTGlzdCBlbmNyeXB0aW9uSW5mb3JtYXRpb24gPSBudWxsOworCisgICAgICAgICAgICAvKioKKyAgICAgICAgICAgICAqIAorICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcHVibGljIEVuY3J5cHRpb25Qcm9wZXJ0eUltcGwoKSB7CisgICAgICAgICAgICAgICAgZW5jcnlwdGlvbkluZm9ybWF0aW9uID0gbmV3IExpbmtlZExpc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgICAgICAgICAgcHVibGljIFN0cmluZyBnZXRUYXJnZXQoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICh0YXJnZXQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBzZXRUYXJnZXQoU3RyaW5nIHRhcmdldCkgeworCQlpZiAodGFyZ2V0ID09IG51bGwgfHwgdGFyZ2V0Lmxlbmd0aCgpID09IDApIHsKKwkJICAgIHRoaXMudGFyZ2V0ID0gbnVsbDsKKwkJfSBlbHNlIGlmICh0YXJnZXQuc3RhcnRzV2l0aCgiIyIpKSB7CisJCSAgICAvKgorCQkgICAgICogVGhpcyBpcyBhIHNhbWUgZG9jdW1lbnQgVVJJIHJlZmVyZW5jZS4gRG8gbm90IHBhcnNlLAorCQkgICAgICogYmVjYXVzZSBvcmcuYXBhY2hlLnhtbC51dGlscy5VUkkgY29uc2lkZXJzIHRoaXMgYW4KKwkJICAgICAqIGlsbGVnYWwgVVJJIGJlY2F1c2UgaXQgaGFzIG5vIHNjaGVtZS4KKwkJICAgICAqLworCQkgICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7CisJCX0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFVSSSB0bXBUYXJnZXQgPSBudWxsOworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgdG1wVGFyZ2V0ID0gbmV3IFVSSSh0YXJnZXQpOworICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChVUkkuTWFsZm9ybWVkVVJJRXhjZXB0aW9uIG1mdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigpLmluaXRDYXVzZShtZnVlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB0aGlzLnRhcmdldCA9IHRtcFRhcmdldC50b1N0cmluZygpOworCQl9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICAgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0SWQoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIChpZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHNldElkKFN0cmluZyBpZCkgeworICAgICAgICAgICAgICAgIHRoaXMuaWQgPSBpZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgICAgICAgICAgcHVibGljIFN0cmluZyBnZXRBdHRyaWJ1dGUoU3RyaW5nIGF0dHJpYnV0ZSkgeworICAgICAgICAgICAgICAgIHJldHVybiAoU3RyaW5nKSBhdHRyaWJ1dGVNYXAuZ2V0KGF0dHJpYnV0ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHNldEF0dHJpYnV0ZShTdHJpbmcgYXR0cmlidXRlLCBTdHJpbmcgdmFsdWUpIHsKKwkJYXR0cmlidXRlTWFwLnB1dChhdHRyaWJ1dGUsIHZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgICAgICAgICAgcHVibGljIEl0ZXJhdG9yIGdldEVuY3J5cHRpb25JbmZvcm1hdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKGVuY3J5cHRpb25JbmZvcm1hdGlvbi5pdGVyYXRvcigpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgICAgICAgICAgcHVibGljIHZvaWQgYWRkRW5jcnlwdGlvbkluZm9ybWF0aW9uKEVsZW1lbnQgaW5mbykgeworICAgICAgICAgICAgICAgIGVuY3J5cHRpb25JbmZvcm1hdGlvbi5hZGQoaW5mbyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJlbW92ZUVuY3J5cHRpb25JbmZvcm1hdGlvbihFbGVtZW50IGluZm8pIHsKKyAgICAgICAgICAgICAgICBlbmNyeXB0aW9uSW5mb3JtYXRpb24ucmVtb3ZlKGluZm8pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyA8ZWxlbWVudCBuYW1lPSdFbmNyeXB0aW9uUHJvcGVydHknIHR5cGU9J3hlbmM6RW5jcnlwdGlvblByb3BlcnR5VHlwZScvPgorICAgICAgICAgICAgLy8gPGNvbXBsZXhUeXBlIG5hbWU9J0VuY3J5cHRpb25Qcm9wZXJ0eVR5cGUnIG1peGVkPSd0cnVlJz4KKyAgICAgICAgICAgIC8vICAgICA8Y2hvaWNlIG1heE9jY3Vycz0ndW5ib3VuZGVkJz4KKyAgICAgICAgICAgIC8vICAgICAgICAgPGFueSBuYW1lc3BhY2U9JyMjb3RoZXInIHByb2Nlc3NDb250ZW50cz0nbGF4Jy8+CisgICAgICAgICAgICAvLyAgICAgPC9jaG9pY2U+CisgICAgICAgICAgICAvLyAgICAgPGF0dHJpYnV0ZSBuYW1lPSdUYXJnZXQnIHR5cGU9J2FueVVSSScgdXNlPSdvcHRpb25hbCcvPgorICAgICAgICAgICAgLy8gICAgIDxhdHRyaWJ1dGUgbmFtZT0nSWQnIHR5cGU9J0lEJyB1c2U9J29wdGlvbmFsJy8+CisgICAgICAgICAgICAvLyAgICAgPGFueUF0dHJpYnV0ZSBuYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIvPgorICAgICAgICAgICAgLy8gPC9jb21wbGV4VHlwZT4KKyAgICAgICAgICAgIEVsZW1lbnQgdG9FbGVtZW50KCkgeworICAgICAgICAgICAgICAgIEVsZW1lbnQgcmVzdWx0ID0gWE1MVXRpbHMuY3JlYXRlRWxlbWVudEluRW5jcnlwdGlvblNwYWNlKAorICAgICAgICAgICAgICAgICAgICBfY29udGV4dERvY3VtZW50LCBFbmNyeXB0aW9uQ29uc3RhbnRzLl9UQUdfRU5DUllQVElPTlBST1BFUlRZKTsKKyAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSB0YXJnZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldEF0dHJpYnV0ZU5TKG51bGwsIEVuY3J5cHRpb25Db25zdGFudHMuX0FUVF9UQVJHRVQsCisgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBpZCkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0QXR0cmlidXRlTlMobnVsbCwgRW5jcnlwdGlvbkNvbnN0YW50cy5fQVRUX0lELCAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8gVE9ETzogZmlndXJlIG91dCB0aGUgYW55QXR0cmlieXRlIHN0dWZmLi4uCisgICAgICAgICAgICAgICAgLy8gVE9ETzogZmlndXJlIG91dCB0aGUgYW55IHN0dWZmLi4uCisKKyAgICAgICAgICAgICAgICByZXR1cm4gKHJlc3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyA8Y29tcGxleFR5cGUgbmFtZT0nVHJhbnNmb3Jtc1R5cGUnPgorICAgICAgICAvLyAgICAgPHNlcXVlbmNlPgorICAgICAgICAvLyAgICAgICAgIDxlbGVtZW50IHJlZj0nZHM6VHJhbnNmb3JtJyBtYXhPY2N1cnM9J3VuYm91bmRlZCcvPgorICAgICAgICAvLyAgICAgPC9zZXF1ZW5jZT4KKyAgICAgICAgLy8gPC9jb21wbGV4VHlwZT4KKyAgICAgICAgcHJpdmF0ZSBjbGFzcyBUcmFuc2Zvcm1zSW1wbCBleHRlbmRzCisJCSAgICAgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybXMgCisJCSAgICAgICBpbXBsZW1lbnRzIFRyYW5zZm9ybXMgeworCisJICAgIC8qKgorCSAgICAgKiBDb25zdHJ1Y3QgVHJhbnNmb3JtcworCSAgICAgKi8KKwkgICAgcHVibGljIFRyYW5zZm9ybXNJbXBsKCkgeworCQlzdXBlcihfY29udGV4dERvY3VtZW50KTsKKwkgICAgfQorCisJICAgIC8qKgorICAgICAgICAgICAgICogCisJICAgICAqIEBwYXJhbSBkb2MKKwkgICAgICovCisJICAgIHB1YmxpYyBUcmFuc2Zvcm1zSW1wbChEb2N1bWVudCBkb2MpIHsKKwkJaWYgKGRvYyA9PSBudWxsKSB7CisJICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIkRvY3VtZW50IGlzIG51bGwiKTsKKwkJfQorCisJCXRoaXMuX2RvYyA9IGRvYzsKKwkJdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCA9ICBjcmVhdGVFbGVtZW50Rm9yRmFtaWx5TG9jYWwodGhpcy5fZG9jLAorCQl0aGlzLmdldEJhc2VOYW1lc3BhY2UoKSwgdGhpcy5nZXRCYXNlTG9jYWxOYW1lKCkpOyAKKwkgICAgfQorCisJICAgIC8qKgorICAgICAgICAgICAgICogCisJICAgICAqIEBwYXJhbSBlbGVtZW50CisJICAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisJICAgICAqIEB0aHJvd3MgSW52YWxpZFRyYW5zZm9ybUV4Y2VwdGlvbgorCSAgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisJICAgICAqIEB0aHJvd3MgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24KKwkgICAgICovCisJICAgIHB1YmxpYyBUcmFuc2Zvcm1zSW1wbChFbGVtZW50IGVsZW1lbnQpIAorCQl0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uLAorCSAgICAgICAgICAgICAgIEludmFsaWRUcmFuc2Zvcm1FeGNlcHRpb24sCisJCSAgICAgICBYTUxTZWN1cml0eUV4Y2VwdGlvbiwKKwkJICAgICAgIFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uIHsKKworCQlzdXBlcihlbGVtZW50LCAiIik7CisJICAgIH0KKworICAgICAgICAgICAgLyoqIAorICAgICAgICAgICAgICogCisgICAgICAgICAgICAgKiBAcmV0dXJuCisgICAgICAgICAgICAgKi8KKwkgICAgcHVibGljIEVsZW1lbnQgdG9FbGVtZW50KCkgeworCQlpZiAoX2RvYyA9PSBudWxsKQorCQkgICAgX2RvYyA9IF9jb250ZXh0RG9jdW1lbnQ7CisKKwkJcmV0dXJuIGdldEVsZW1lbnQoKTsKKwkgICAgfQorCisgICAgICAgICAgICAvKiogQGluaGVyaXREb2MgKi8KKwkgICAgcHVibGljIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtcyBnZXREU1RyYW5zZm9ybXMoKSB7CisJCXJldHVybiAodGhpcyk7CisJICAgIH0KKworCSAgICAvLyBPdmVyLXJpZGUgdGhlIG5hbWVzcGFjZQorICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisJICAgIHB1YmxpYyBTdHJpbmcgZ2V0QmFzZU5hbWVzcGFjZSgpIHsKKwkJcmV0dXJuIEVuY3J5cHRpb25Db25zdGFudHMuRW5jcnlwdGlvblNwZWNOUzsKKwkgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy88ZWxlbWVudCBuYW1lPSdSZWZlcmVuY2VMaXN0Jz4KKyAgICAgICAgLy8gICAgPGNvbXBsZXhUeXBlPgorICAgICAgICAvLyAgICAgICAgPGNob2ljZSBtaW5PY2N1cnM9JzEnIG1heE9jY3Vycz0ndW5ib3VuZGVkJz4KKyAgICAgICAgLy8gICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSdEYXRhUmVmZXJlbmNlJyB0eXBlPSd4ZW5jOlJlZmVyZW5jZVR5cGUnLz4KKyAgICAgICAgLy8gICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSdLZXlSZWZlcmVuY2UnIHR5cGU9J3hlbmM6UmVmZXJlbmNlVHlwZScvPgorICAgICAgICAvLyAgICAgICAgPC9jaG9pY2U+CisgICAgICAgIC8vICAgIDwvY29tcGxleFR5cGU+CisgICAgICAgIC8vPC9lbGVtZW50PgorICAgICAgICBwcml2YXRlIGNsYXNzIFJlZmVyZW5jZUxpc3RJbXBsIGltcGxlbWVudHMgUmVmZXJlbmNlTGlzdCB7CisgICAgICAgICAgICBwcml2YXRlIENsYXNzIHNlbnRyeTsKKyAgICAgICAgICAgIHByaXZhdGUgTGlzdCByZWZlcmVuY2VzOworICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgKiAKKyAgICAgICAgICAgICAqIEBwYXJhbSB0eXBlCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHB1YmxpYyBSZWZlcmVuY2VMaXN0SW1wbChpbnQgdHlwZSkgeworICAgICAgICAgICAgICAgIGlmICh0eXBlID09IFJlZmVyZW5jZUxpc3QuREFUQV9SRUZFUkVOQ0UpIHsKKyAgICAgICAgICAgICAgICAgICAgc2VudHJ5ID0gRGF0YVJlZmVyZW5jZS5jbGFzczsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gUmVmZXJlbmNlTGlzdC5LRVlfUkVGRVJFTkNFKSB7CisgICAgICAgICAgICAgICAgICAgIHNlbnRyeSA9IEtleVJlZmVyZW5jZS5jbGFzczsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMgPSBuZXcgTGlua2VkTGlzdCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBhZGQoUmVmZXJlbmNlIHJlZmVyZW5jZSkgeworICAgICAgICAgICAgICAgIGlmICghcmVmZXJlbmNlLmdldENsYXNzKCkuZXF1YWxzKHNlbnRyeSkpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigpOyAgICAgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICByZWZlcmVuY2VzLmFkZChyZWZlcmVuY2UpOyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgICAgICAgICAgcHVibGljIHZvaWQgcmVtb3ZlKFJlZmVyZW5jZSByZWZlcmVuY2UpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXJlZmVyZW5jZS5nZXRDbGFzcygpLmVxdWFscyhzZW50cnkpKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVmZXJlbmNlcy5yZW1vdmUocmVmZXJlbmNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgICAgICAgICAgcHVibGljIGludCBzaXplKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAocmVmZXJlbmNlcy5zaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc0VtcHR5KCkgeworICAgICAgICAgICAgICAgIHJldHVybiAocmVmZXJlbmNlcy5pc0VtcHR5KCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICAgICAgICBwdWJsaWMgSXRlcmF0b3IgZ2V0UmVmZXJlbmNlcygpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKHJlZmVyZW5jZXMuaXRlcmF0b3IoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEVsZW1lbnQgdG9FbGVtZW50KCkgeworICAgICAgICAgICAgICAgIEVsZW1lbnQgcmVzdWx0ID0gRWxlbWVudFByb3h5LmNyZWF0ZUVsZW1lbnRGb3JGYW1pbHkoCisgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0RG9jdW1lbnQsCisgICAgICAgICAgICAgICAgICAgIEVuY3J5cHRpb25Db25zdGFudHMuRW5jcnlwdGlvblNwZWNOUywKKyAgICAgICAgICAgICAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5fVEFHX1JFRkVSRU5DRUxJU1QpOworICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGVhY2hSZWZlcmVuY2UgPSByZWZlcmVuY2VzLml0ZXJhdG9yKCk7CisgICAgICAgICAgICAgICAgd2hpbGUgKGVhY2hSZWZlcmVuY2UuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgICAgIFJlZmVyZW5jZSByZWZlcmVuY2UgPSAoUmVmZXJlbmNlKSBlYWNoUmVmZXJlbmNlLm5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKAorICAgICAgICAgICAgICAgICAgICAgICAgKChSZWZlcmVuY2VJbXBsKSByZWZlcmVuY2UpLnRvRWxlbWVudCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIChyZXN1bHQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICAgICAgICBwdWJsaWMgUmVmZXJlbmNlIG5ld0RhdGFSZWZlcmVuY2UoU3RyaW5nIHVyaSkgeworICAgICAgICAgICAgICAgIHJldHVybiAobmV3IERhdGFSZWZlcmVuY2UodXJpKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICAgICAgICAgIHB1YmxpYyBSZWZlcmVuY2UgbmV3S2V5UmVmZXJlbmNlKFN0cmluZyB1cmkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKG5ldyBLZXlSZWZlcmVuY2UodXJpKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICogPGNvZGU+UmVmZXJlbmNlSW1wbDwvY29kZT4gaXMgYW4gaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgICAgICAqIDxjb2RlPlJlZmVyZW5jZTwvY29kZT4uCisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICogQHNlZSBSZWZlcmVuY2UKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcHJpdmF0ZSBhYnN0cmFjdCBjbGFzcyBSZWZlcmVuY2VJbXBsIGltcGxlbWVudHMgUmVmZXJlbmNlIHsKKyAgICAgICAgICAgICAgICBwcml2YXRlIFN0cmluZyB1cmk7CisgICAgICAgICAgICAgICAgcHJpdmF0ZSBMaXN0IHJlZmVyZW5jZUluZm9ybWF0aW9uOworCisgICAgICAgICAgICAgICAgUmVmZXJlbmNlSW1wbChTdHJpbmcgX3VyaSkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLnVyaSA9IF91cmk7CisgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZUluZm9ybWF0aW9uID0gbmV3IExpbmtlZExpc3QoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICAgICAgICAgICAgcHVibGljIFN0cmluZyBnZXRVUkkoKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAodXJpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICAgICAgICAgICAgcHVibGljIEl0ZXJhdG9yIGdldEVsZW1lbnRSZXRyaWV2YWxJbmZvcm1hdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChyZWZlcmVuY2VJbmZvcm1hdGlvbi5pdGVyYXRvcigpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgc2V0VVJJKFN0cmluZyBfdXJpKSB7CisgICAgICAgICAgICAgICAgCXRoaXMudXJpID0gX3VyaTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgcmVtb3ZlRWxlbWVudFJldHJpZXZhbEluZm9ybWF0aW9uKEVsZW1lbnQgbm9kZSkgeworICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VJbmZvcm1hdGlvbi5yZW1vdmUobm9kZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIGFkZEVsZW1lbnRSZXRyaWV2YWxJbmZvcm1hdGlvbihFbGVtZW50IG5vZGUpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlSW5mb3JtYXRpb24uYWRkKG5vZGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvKioKKyAgICAgICAgICAgICAgICAgKiAKKyAgICAgICAgICAgICAgICAgKiBAcmV0dXJuCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgcHVibGljIGFic3RyYWN0IEVsZW1lbnQgdG9FbGVtZW50KCk7CisKKyAgICAgICAgICAgICAgICBFbGVtZW50IHRvRWxlbWVudChTdHJpbmcgdGFnTmFtZSkgeworICAgICAgICAgICAgICAgICAgICBFbGVtZW50IHJlc3VsdCA9IEVsZW1lbnRQcm94eS5jcmVhdGVFbGVtZW50Rm9yRmFtaWx5KAorICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHREb2N1bWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEVuY3J5cHRpb25Db25zdGFudHMuRW5jcnlwdGlvblNwZWNOUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWUpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0QXR0cmlidXRlKEVuY3J5cHRpb25Db25zdGFudHMuX0FUVF9VUkksIHVyaSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogTmVlZCB0byBtYXJ0aWFsIHJlZmVyZW5jZUluZm9ybWF0aW9uCisgICAgICAgICAgICAgICAgICAgIC8vIEZpZ3VyZSBvdXQgaG93IHRvIG1ha2UgdGhpcyB3b3JrLi4KKyAgICAgICAgICAgICAgICAgICAgLy8gPGFueSBuYW1lc3BhY2U9IiMjb3RoZXIiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwcml2YXRlIGNsYXNzIERhdGFSZWZlcmVuY2UgZXh0ZW5kcyBSZWZlcmVuY2VJbXBsIHsKKyAgICAgICAgICAgICAgICBEYXRhUmVmZXJlbmNlKFN0cmluZyB1cmkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3VwZXIodXJpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICAgICAgICAgICAgcHVibGljIEVsZW1lbnQgdG9FbGVtZW50KCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIudG9FbGVtZW50KEVuY3J5cHRpb25Db25zdGFudHMuX1RBR19EQVRBUkVGRVJFTkNFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHByaXZhdGUgY2xhc3MgS2V5UmVmZXJlbmNlIGV4dGVuZHMgUmVmZXJlbmNlSW1wbCB7CisgICAgICAgICAgICAgICAgS2V5UmVmZXJlbmNlKFN0cmluZyB1cmkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3VwZXIgKHVyaSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgICAgICAgICAgICAgIHB1YmxpYyBFbGVtZW50IHRvRWxlbWVudCgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLnRvRWxlbWVudChFbmNyeXB0aW9uQ29uc3RhbnRzLl9UQUdfS0VZUkVGRVJFTkNFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvZW5jcnlwdGlvbi9YTUxDaXBoZXJJbnB1dC5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2VuY3J5cHRpb24vWE1MQ2lwaGVySW5wdXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGJiZWI3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2VuY3J5cHRpb24vWE1MQ2lwaGVySW5wdXQuamF2YQpAQCAtMCwwICsxLDE4MSBAQAorLyoKKyAqIENvcHlyaWdodCAgMjAwMy0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5lbmNyeXB0aW9uOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5yZXNvbHZlci5SZXNvdXJjZVJlc29sdmVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyLlJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5CYXNlNjREZWNvZGluZ0V4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlSW5wdXQ7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcudzNjLmRvbS5BdHRyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkJhc2U2NDsKKworCisvKioKKyAqIDxjb2RlPlhNTENpcGhlcklucHV0PC9jb2RlPiBpcyB1c2VkIHRvIHdyYXAgaW5wdXQgcGFzc2VkIGludG8gdGhlCisgKiBYTUxDaXBoZXIgZW5jcnlwdGlvbiBvcGVyYXRpb25zLgorICoKKyAqIEluIGRlY3J5cHRpb24gbW9kZSwgaXQgdGFrZXMgYSA8Y29kZT5DaXBoZXJEYXRhPC9jb2RlPiBvYmplY3QgYW5kIGFsbG93cworICogY2FsbGVycyB0byBkZXJlZmVyZW5jZSB0aGUgQ2lwaGVyRGF0YSBpbnRvIHRoZSBlbmNyeXB0ZWQgYnl0ZXMgdGhhdCBpdAorICogYWN0dWFsbHkgcmVwcmVzZW50cy4gIFRoaXMgdGFrZXMgY2FyZSBvZiBhbGwgYmFzZTY0IGVuY29kaW5nIGV0Yy4KKyAqCisgKiBXaGlsZSBwcmltYXJpbHkgYW4gaW50ZXJuYWwgY2xhc3MsIHRoaXMgY2FuIGJlIHVzZWQgYnkgYXBwbGljYXRpb25zIHRvCisgKiBxdWlja2x5IGFuZCBlYXNpbHkgcmV0cmlldmUgdGhlIGVuY3J5cHRlZCBieXRlcyBmcm9tIGFuIEVuY3J5cHRlZFR5cGUKKyAqIG9iamVjdAorICoKKyAqIEBhdXRob3IgQmVyaW4gTGF1dGVuYmFjaAorICovCitwdWJsaWMgY2xhc3MgWE1MQ2lwaGVySW5wdXQgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZ2dlciA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZyhYTUxDaXBoZXIuY2xhc3MuZ2V0TmFtZSgpKTsKKworCS8qKiBUaGUgZGF0YSB3ZSBhcmUgd29ya2luZyB3aXRoICovCisJcHJpdmF0ZSBDaXBoZXJEYXRhIF9jaXBoZXJEYXRhOworCisJLyoqIE1PREVTICovCisJcHJpdmF0ZSBpbnQgX21vZGU7CisKKwkvKioKKwkgKiBDb25zdHJ1Y3RvciBmb3IgcHJvY2Vzc2luZyBlbmNyeXB0ZWQgb2N0ZXRzCisJICoKKwkgKiBAcGFyYW0gZGF0YSBUaGUgPGNvZGU+Q2lwaGVyRGF0YTwvY29kZT4gb2JqZWN0IHRvIHJlYWQgdGhlIGJ5dGVzIGZyb20KKwkgKiBAdGhyb3dzIFhNTEVuY3J5cHRpb25FeGNlcHRpb24ge0BsaW5rIFhNTEVuY3J5cHRpb25FeGNlcHRpb259CisJICovCisKKwlwdWJsaWMgWE1MQ2lwaGVySW5wdXQoQ2lwaGVyRGF0YSBkYXRhKSB0aHJvd3MgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbiB7CisKKwkJX2NpcGhlckRhdGEgPSBkYXRhOworCQlfbW9kZSA9IFhNTENpcGhlci5ERUNSWVBUX01PREU7CisJCWlmIChfY2lwaGVyRGF0YSA9PSBudWxsKSB7CisJCQl0aHJvdyBuZXcgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigiQ2lwaGVyRGF0YSBpcyBudWxsIik7CisJCX0KKworCX0KKworCS8qKgorCSAqIENvbnN0cnVjdG9yIGZvciBwcm9jZXNzaW5nIGVuY3J5cHRlZCBvY3RldHMKKwkgKgorCSAqIEBwYXJhbSBpbnB1dCBUaGUgPGNvZGU+RW5jcnlwdGVkVHlwZTwvY29kZT4gb2JqZWN0IHRvIHJlYWQgCisJICogdGhlIGJ5dGVzIGZyb20uCisJICogQHRocm93cyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uIHtAbGluayBYTUxFbmNyeXB0aW9uRXhjZXB0aW9ufQorCSAqLworCisJcHVibGljIFhNTENpcGhlcklucHV0KEVuY3J5cHRlZFR5cGUgaW5wdXQpIHRocm93cyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uIHsKKworCQlfY2lwaGVyRGF0YSA9ICgoaW5wdXQgPT0gbnVsbCkgPyBudWxsIDogaW5wdXQuZ2V0Q2lwaGVyRGF0YSgpKTsKKwkJX21vZGUgPSBYTUxDaXBoZXIuREVDUllQVF9NT0RFOworCQlpZiAoX2NpcGhlckRhdGEgPT0gbnVsbCkgeworCQkJdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oIkNpcGhlckRhdGEgaXMgbnVsbCIpOworCQl9CisKKwl9CisKKwkvKioKKwkgKiBEZXJlZmVyZW5jZXMgdGhlIGlucHV0IGFuZCByZXR1cm5zIGl0IGFzIGEgc2luZ2xlIGJ5dGUgYXJyYXkuCisJICoKKwkgKiBAdGhyb3dzIFhNTEVuY3J5cHRpb25FeGNlcHRpb24KKyAgICAgKiBAcmV0dXJuIFRoZSBkZWNyaXB0ZWQgYnl0ZXMuCisJICovCisKKwlwdWJsaWMgYnl0ZVtdIGdldEJ5dGVzKCkgdGhyb3dzIFhNTEVuY3J5cHRpb25FeGNlcHRpb24geworCisJCWlmIChfbW9kZSA9PSBYTUxDaXBoZXIuREVDUllQVF9NT0RFKSB7CisJCQlyZXR1cm4gZ2V0RGVjcnlwdEJ5dGVzKCk7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisgICAgLyoqCisgICAgICogSW50ZXJuYWwgbWV0aG9kIHRvIGdldCBieXRlcyBpbiBkZWNyeXB0aW9uIG1vZGUKKyAgICAgKiBAcmV0dXJuIHRoZSBkZWNyaXB0ZWQgYnl0ZXMKKyAgICAgKiBAdGhyb3dzIFhNTEVuY3J5cHRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwcml2YXRlIGJ5dGVbXSBnZXREZWNyeXB0Qnl0ZXMoKSB0aHJvd3MgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbiB7CisKKwlTdHJpbmcgYmFzZTY0RW5jb2RlZEVuY3J5cHRlZE9jdGV0cyA9IG51bGw7CisKKyAgICAgICAgaWYgKF9jaXBoZXJEYXRhLmdldERhdGFUeXBlKCkgPT0gQ2lwaGVyRGF0YS5SRUZFUkVOQ0VfVFlQRSkgeworCSAgICAvLyBGdW4gdGltZSEKKwkgICAgbG9nZ2VyLmRlYnVnKCJGb3VuZCBhIHJlZmVyZW5jZSB0eXBlIENpcGhlckRhdGEiKTsKKwkgICAgQ2lwaGVyUmVmZXJlbmNlIGNyID0gX2NpcGhlckRhdGEuZ2V0Q2lwaGVyUmVmZXJlbmNlKCk7CisKKwkgICAgLy8gTmVlZCB0byB3cmFwIHRoZSB1cmkgaW4gYW4gQXR0cmlidXRlIG5vZGUgc28gdGhhdCB3ZSBjYW4KKwkgICAgLy8gUGFzcyB0byB0aGUgcmVzb3VyY2UgcmVzb2x2ZXJzCisKKwkgICAgQXR0ciB1cmlBdHRyID0gY3IuZ2V0VVJJQXNBdHRyKCk7CisJICAgIFhNTFNpZ25hdHVyZUlucHV0IGlucHV0ID0gbnVsbDsKKworCSAgICB0cnkgeworCQlSZXNvdXJjZVJlc29sdmVyIHJlc29sdmVyID0gCisJCSAgICBSZXNvdXJjZVJlc29sdmVyLmdldEluc3RhbmNlKHVyaUF0dHIsIG51bGwpOworCQlpbnB1dCA9IHJlc29sdmVyLnJlc29sdmUodXJpQXR0ciwgbnVsbCk7CisJICAgIH0gY2F0Y2ggKFJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb24gZXgpIHsKKwkJdGhyb3cgbmV3IFhNTEVuY3J5cHRpb25FeGNlcHRpb24oImVtcHR5IiwgZXgpOworCSAgICB9IAorCisJICAgIGlmIChpbnB1dCAhPSBudWxsKSB7CisJCWxvZ2dlci5kZWJ1ZygiTWFuYWdlZCB0byByZXNvbHZlIFVSSSBcIiIgKyBjci5nZXRVUkkoKSArICJcIiIpOworCSAgICB9IGVsc2UgeworCQlsb2dnZXIuZGVidWcoIkZhaWxlZCB0byByZXNvbHZlIFVSSSBcIiIgKyBjci5nZXRVUkkoKSArICJcIiIpOworCSAgICB9CisJCQorCSAgICAvLyBMZXRzIHNlZSBpZiB0aGVyZSBhcmUgYW55IHRyYW5zZm9ybXMKKwkgICAgVHJhbnNmb3JtcyB0cmFuc2Zvcm1zID0gY3IuZ2V0VHJhbnNmb3JtcygpOworCSAgICBpZiAodHJhbnNmb3JtcyAhPSBudWxsKSB7CisJICAgICAgICBsb2dnZXIuZGVidWcgKCJIYXZlIHRyYW5zZm9ybXMgaW4gY2lwaGVyIHJlZmVyZW5jZSIpOworCQl0cnkgeworIAkJICAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtcyBkc1RyYW5zZm9ybXMgPQorCQkJdHJhbnNmb3Jtcy5nZXREU1RyYW5zZm9ybXMoKTsKKwkJICAgIGlucHV0ID0gZHNUcmFuc2Zvcm1zLnBlcmZvcm1UcmFuc2Zvcm1zKGlucHV0KTsKKwkJfSBjYXRjaCAoVHJhbnNmb3JtYXRpb25FeGNlcHRpb24gZXgpIHsKKwkJICAgIHRocm93IG5ldyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKwkJfQorCSAgICB9CisKKwkgICAgdHJ5IHsKKwkJcmV0dXJuIGlucHV0LmdldEJ5dGVzKCk7CisJICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7CisJCXRocm93IG5ldyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKwkgICAgfSBjYXRjaCAoQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiBleCkgeworCQl0aHJvdyBuZXcgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisJICAgIH0KKwkJCQorICAgICAgICAvLyByZXRyaWV2ZSB0aGUgY2lwaGVyIHRleHQKKyAgICAgICAgfSBlbHNlIGlmIChfY2lwaGVyRGF0YS5nZXREYXRhVHlwZSgpID09IENpcGhlckRhdGEuVkFMVUVfVFlQRSkgeworICAgICAgICAgICAgYmFzZTY0RW5jb2RlZEVuY3J5cHRlZE9jdGV0cyA9IAorCQlfY2lwaGVyRGF0YS5nZXRDaXBoZXJWYWx1ZSgpLmdldFZhbHVlKCk7CisgICAgICAgIH0gZWxzZSB7CisJICAgIHRocm93IG5ldyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uKCJDaXBoZXJEYXRhLmdldERhdGFUeXBlKCkgcmV0dXJuZWQgdW5leHBlY3RlZCB2YWx1ZSIpOworCX0KKworICAgICAgICBsb2dnZXIuZGVidWcoIkVuY3J5cHRlZCBvY3RldHM6XG4iICsgYmFzZTY0RW5jb2RlZEVuY3J5cHRlZE9jdGV0cyk7CisKKyAgICAgICAgYnl0ZVtdIGVuY3J5cHRlZEJ5dGVzID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKwkgICAgZW5jcnlwdGVkQnl0ZXMgPSBCYXNlNjQuZGVjb2RlKGJhc2U2NEVuY29kZWRFbmNyeXB0ZWRPY3RldHMpOworICAgICAgICB9IGNhdGNoIChCYXNlNjREZWNvZGluZ0V4Y2VwdGlvbiBiZGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIGJkZSk7CisgICAgICAgIH0KKworCXJldHVybiAoZW5jcnlwdGVkQnl0ZXMpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9lbmNyeXB0aW9uL1hNTENpcGhlclBhcmFtZXRlcnMuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9lbmNyeXB0aW9uL1hNTENpcGhlclBhcmFtZXRlcnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODI5ZjBhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2VuY3J5cHRpb24vWE1MQ2lwaGVyUGFyYW1ldGVycy5qYXZhCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0ICAyMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5lbmNyeXB0aW9uOworCisKKy8qKgorICogQ29uc3RhbnRzCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgWE1MQ2lwaGVyUGFyYW1ldGVycyB7CisKKyAgICAvKiogKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBRVNfMTI4ID0KKyAgICAgICAgImh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczEyOC1jYmMiOworCisgICAgLyoqICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFFU18yNTYgPQorICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjYWVzMjU2LWNiYyI7CisKKyAgICAvKiogICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUVTXzE5MiA9CisgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNhZXMxOTItY2JjIjsKKworICAgIC8qKiAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBSU0FfMV81ID0KKyAgICAgICAgImh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3JzYS0xXzUiOworCisgICAgLyoqICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFJTQV9PQUVQID0KKyAgICAgICAgImh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3JzYS1vYWVwLW1nZjFwIjsKKworICAgIC8qKiAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBESUZGSUVfSEVMTE1BTiA9CisgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNkaCI7CisKKyAgICAvKiogICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFJJUExFREVTX0tFWVdSQVAgPQorICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMja3ctdHJpcGxlZGVzIjsKKworICAgIC8qKiAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBRVNfMTI4X0tFWVdSQVAgPQorICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMja3ctYWVzMTI4IjsKKworICAgIC8qKiAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBRVNfMjU2X0tFWVdSQVAgPQorICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMja3ctYWVzMjU2IjsKKworICAgIC8qKiAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBRVNfMTkyX0tFWVdSQVAgPQorICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMja3ctYWVzMTkyIjsKKworICAgIC8qKiAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTSEExID0KKyAgICAgICAgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIjsKKworICAgIC8qKiAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTSEEyNTYgPQorICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2IjsKKworICAgIC8qKiAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTSEE1MTIgPQorICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhNTEyIjsKKworICAgIC8qKiAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBSSVBFTURfMTYwID0KKyAgICAgICAgImh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3JpcGVtZDE2MCI7CisKKyAgICAvKiogICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgWE1MX0RTSUcgPQorICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI7CisKKyAgICAvKiogICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTjE0Q19YTUwgPQorICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiOworCisgICAgLyoqICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE4xNENfWE1MX0NNTU5UUyA9CisgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHMiOworCisgICAgLyoqICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVYQ0xfWE1MX04xNEMgPQorICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIjsKKworICAgIC8qKiAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFWENMX1hNTF9OMTRDX0NNTU5UUyA9CisgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biNXaXRoQ29tbWVudHMiOworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2VuY3J5cHRpb24vWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbi5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2VuY3J5cHRpb24vWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwMDBmNTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvZW5jcnlwdGlvbi9YTUxFbmNyeXB0aW9uRXhjZXB0aW9uLmphdmEKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAgMjAwMy0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZW5jcnlwdGlvbjsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmV4Y2VwdGlvbnMuWE1MU2VjdXJpdHlFeGNlcHRpb247CisKKy8qKgorICogCisgKi8KK3B1YmxpYyBjbGFzcyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uIGV4dGVuZHMgWE1MU2VjdXJpdHlFeGNlcHRpb24geworCS8qKgorCSAqIAorCSAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOworCS8qKgorICAgICAqIAorCSAqCisJICovCisgICBwdWJsaWMgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbigpIHsKKyAgICAgIHN1cGVyKCk7CisgICB9CisgICAvKioKKyAgICAqIAorICAgICogQHBhcmFtIF9tc2dJRAorICAgICovCisgICBwdWJsaWMgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbihTdHJpbmcgX21zZ0lEKSB7CisgICAgICBzdXBlcihfbXNnSUQpOworICAgfQorICAgLyoqCisgICAgKiAKKyAgICAqIEBwYXJhbSBfbXNnSUQKKyAgICAqIEBwYXJhbSBleEFyZ3MKKyAgICAqLworICAgcHVibGljIFhNTEVuY3J5cHRpb25FeGNlcHRpb24oU3RyaW5nIF9tc2dJRCwgT2JqZWN0IGV4QXJnc1tdKSB7CisgICAgICBzdXBlcihfbXNnSUQsIGV4QXJncyk7CisgICB9CisgICAvKioKKyAgICAqIAorICAgICogQHBhcmFtIF9tc2dJRAorICAgICogQHBhcmFtIF9vcmlnaW5hbEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbihTdHJpbmcgX21zZ0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbiBfb3JpZ2luYWxFeGNlcHRpb24pIHsKKyAgICAgIHN1cGVyKF9tc2dJRCwgX29yaWdpbmFsRXhjZXB0aW9uKTsKKyAgIH0KKyAgIC8qKgorICAgICogCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKiBAcGFyYW0gZXhBcmdzCisgICAgKiBAcGFyYW0gX29yaWdpbmFsRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBYTUxFbmNyeXB0aW9uRXhjZXB0aW9uKFN0cmluZyBfbXNnSUQsIE9iamVjdCBleEFyZ3NbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb24gX29yaWdpbmFsRXhjZXB0aW9uKSB7CisgICAgICBzdXBlcihfbXNnSUQsIGV4QXJncywgX29yaWdpbmFsRXhjZXB0aW9uKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9lbmNyeXB0aW9uL3BhY2thZ2UuaHRtbCBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9lbmNyeXB0aW9uL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDIwOWQyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2VuY3J5cHRpb24vcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKyAgPHRpdGxlPjwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KK1Byb3ZpZGVzIGNsYXNzZXMgZm9yIGltcGxlbWVudGluZyBYTUwgRW5jcnlwdGlvbiBhcHBsaWNhdGlvbnMuIFRoZXJlIGFyZSB0d28KK21haW4gZmFtaWxpZXMgb2YgY2xhc3NlcyBpbiB0aGlzIHBhY2thZ2UuIFRoZSBmaXJzdCBncm91cCBvZiBjbGFzc2VzIGlzIGFuCitYTUwgU2NoZW1hIHRvIEphdmEgbWFwcGluZyBvZiAmbmJzcDt0aGUgY29tcGxleCB0eXBlcyBhbmQgZWxlbWVudHMgb2YgdGhlCitYTUwgRW5jcnlwdGlvbiBTY2hlbWEgYXMgb3V0bGxpbmVkIGF0IDxhCisgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvRW5jcnlwdGlvbi8yMDAxL0RyYWZ0cy94bWxlbmMtY29yZS8iPlhNTCBFbmNydHlweWlvbgorU3BlY2lmaWNhdGlvbjwvYT4uIFRoZSBzZWNvbmQgZ3JvdXAgb2YgY2xhc3NlcyBhcmUgdXNlZCB0byBwZXJmb3JtIGVuY3J5cHRpb24KK29wZXJhdGlvbnMsIGFuZCB0byBtYW5pcHVsYXRlIHRoZSBmaXJzdCBncm91cCBvZiBjbGFzc2VzLiBUaGUgbW9zdCBpbXBvcnRhbnQKK2NsYXNzZXMgaW4gdGhpcyBzZWNvbmQgZ3JvdXAgaXMgPGNvZGU+PGEKKyBocmVmPSJmaWxlOi8vLi9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9lbmNyeXB0aW9uL1hNTENpcGhlci5odG1sIj5YTUxDaXBoZXI8L2E+PC9jb2RlPiwKKzxjb2RlPjxhCisgaHJlZj0iZmlsZTovLy4vb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvZW5jcnlwdGlvbi9YTUxFbmNyeXB0aW9uRmFjdG9yeS5odG1sIj5YTUxFbmNyeXB0aW9uRmFjdG9yeTwvYT48L2NvZGU+CithbmQgPGNvZGU+WE1MU2VyaWFsaXplcjwvY29kZT4uIDxjb2RlPlhNTENpcGhlcjwvY29kZT4gd2FzIGRlc2lnbmVkIHRvIHJlc2VtYmxlCis8Y29kZT5qYXZheC5jcnlwdG8uQ2lwaGVyPC9jb2RlPi4gVGhlIGFmb3JlbWVudGlvbmVkIGNsYXNzZXMgd2VyZSBkZXNpbmdlZAord2l0aCBlYXNlLW9mLXVzZSBhbmQgY29uZmlndXJhYmlsaXR5IGluIG1pbmQuIEJlY3Vhc2Ugb2YgdGhpcywgdGhlIHByb2dyYW1tZXIKK21heSBhdCB0aW1lcyBiZSBleHBvc2VkIHRvIGxvd2VyIGxldmVsIHByb2dyYW1taW5nIHRhc2tzLiBUaGlzIGxpYnJhcnkgc3RyaXZlcwordG8gYmUgYXMgc2ltcGxlIGFzIHBvc3NpYmxlIHRvIHVzZSwgYnV0IG5vIHNpbXBsZXIuPGJyPgorPGJyPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2V4Y2VwdGlvbnMvQWxnb3JpdGhtQWxyZWFkeVJlZ2lzdGVyZWRFeGNlcHRpb24uamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9leGNlcHRpb25zL0FsZ29yaXRobUFscmVhZHlSZWdpc3RlcmVkRXhjZXB0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNjNDI3ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9leGNlcHRpb25zL0FsZ29yaXRobUFscmVhZHlSZWdpc3RlcmVkRXhjZXB0aW9uLmphdmEKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9uczsKKworCisKKy8qKgorICoKKyAqCisgKgorICoKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEdldWVyLVBvbGxtYW5uCisgKgorICovCitwdWJsaWMgY2xhc3MgQWxnb3JpdGhtQWxyZWFkeVJlZ2lzdGVyZWRFeGNlcHRpb24gZXh0ZW5kcyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisKKyAgIC8qKgorCSAqIAorCSAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOworCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIEFsZ29yaXRobUFscmVhZHlSZWdpc3RlcmVkRXhjZXB0aW9uCisgICAgKgorICAgICovCisgICBwdWJsaWMgQWxnb3JpdGhtQWxyZWFkeVJlZ2lzdGVyZWRFeGNlcHRpb24oKSB7CisgICAgICBzdXBlcigpOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIEFsZ29yaXRobUFscmVhZHlSZWdpc3RlcmVkRXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICovCisgICBwdWJsaWMgQWxnb3JpdGhtQWxyZWFkeVJlZ2lzdGVyZWRFeGNlcHRpb24oU3RyaW5nIF9tc2dJRCkgeworICAgICAgc3VwZXIoX21zZ0lEKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBBbGdvcml0aG1BbHJlYWR5UmVnaXN0ZXJlZEV4Y2VwdGlvbgorICAgICoKKyAgICAqIEBwYXJhbSBfbXNnSUQKKyAgICAqIEBwYXJhbSBleEFyZ3MKKyAgICAqLworICAgcHVibGljIEFsZ29yaXRobUFscmVhZHlSZWdpc3RlcmVkRXhjZXB0aW9uKFN0cmluZyBfbXNnSUQsIE9iamVjdCBleEFyZ3NbXSkgeworICAgICAgc3VwZXIoX21zZ0lELCBleEFyZ3MpOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIEFsZ29yaXRobUFscmVhZHlSZWdpc3RlcmVkRXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICogQHBhcmFtIF9vcmlnaW5hbEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgQWxnb3JpdGhtQWxyZWFkeVJlZ2lzdGVyZWRFeGNlcHRpb24oU3RyaW5nIF9tc2dJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb24gX29yaWdpbmFsRXhjZXB0aW9uKSB7CisgICAgICBzdXBlcihfbXNnSUQsIF9vcmlnaW5hbEV4Y2VwdGlvbik7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgQWxnb3JpdGhtQWxyZWFkeVJlZ2lzdGVyZWRFeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKiBAcGFyYW0gZXhBcmdzCisgICAgKiBAcGFyYW0gX29yaWdpbmFsRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBBbGdvcml0aG1BbHJlYWR5UmVnaXN0ZXJlZEV4Y2VwdGlvbihTdHJpbmcgX21zZ0lELCBPYmplY3QgZXhBcmdzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uIF9vcmlnaW5hbEV4Y2VwdGlvbikgeworICAgICAgc3VwZXIoX21zZ0lELCBleEFyZ3MsIF9vcmlnaW5hbEV4Y2VwdGlvbik7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvZXhjZXB0aW9ucy9CYXNlNjREZWNvZGluZ0V4Y2VwdGlvbi5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2V4Y2VwdGlvbnMvQmFzZTY0RGVjb2RpbmdFeGNlcHRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGFlM2RmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2V4Y2VwdGlvbnMvQmFzZTY0RGVjb2RpbmdFeGNlcHRpb24uamF2YQpAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zOworCisKKworLyoqCisgKiBUaGlzIEV4Y2VwdGlvbiBpcyB0aHJvd24gaWYgZGVjb2Rpbmcgb2YgQmFzZTY0IGRhdGEgZmFpbHMuCisgKgorICogQGF1dGhvciBDaHJpc3RpYW4gR2V1ZXItUG9sbG1hbm4KKyAqLworcHVibGljIGNsYXNzIEJhc2U2NERlY29kaW5nRXhjZXB0aW9uIGV4dGVuZHMgWE1MU2VjdXJpdHlFeGNlcHRpb24geworCisgICAvKioKKwkgKiAKKwkgKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsKKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBCYXNlNjREZWNvZGluZ0V4Y2VwdGlvbgorICAgICoKKyAgICAqLworICAgcHVibGljIEJhc2U2NERlY29kaW5nRXhjZXB0aW9uKCkgeworICAgICAgc3VwZXIoKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBCYXNlNjREZWNvZGluZ0V4Y2VwdGlvbgorICAgICoKKyAgICAqIEBwYXJhbSBfbXNnSUQKKyAgICAqLworICAgcHVibGljIEJhc2U2NERlY29kaW5nRXhjZXB0aW9uKFN0cmluZyBfbXNnSUQpIHsKKyAgICAgIHN1cGVyKF9tc2dJRCk7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgQmFzZTY0RGVjb2RpbmdFeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKiBAcGFyYW0gZXhBcmdzCisgICAgKi8KKyAgIHB1YmxpYyBCYXNlNjREZWNvZGluZ0V4Y2VwdGlvbihTdHJpbmcgX21zZ0lELCBPYmplY3QgZXhBcmdzW10pIHsKKyAgICAgIHN1cGVyKF9tc2dJRCwgZXhBcmdzKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBCYXNlNjREZWNvZGluZ0V4Y2VwdGlvbgorICAgICoKKyAgICAqIEBwYXJhbSBfbXNnSUQKKyAgICAqIEBwYXJhbSBfb3JpZ2luYWxFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIEJhc2U2NERlY29kaW5nRXhjZXB0aW9uKFN0cmluZyBfbXNnSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uIF9vcmlnaW5hbEV4Y2VwdGlvbikgeworICAgICAgc3VwZXIoX21zZ0lELCBfb3JpZ2luYWxFeGNlcHRpb24pOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIEJhc2U2NERlY29kaW5nRXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICogQHBhcmFtIGV4QXJncworICAgICogQHBhcmFtIF9vcmlnaW5hbEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgQmFzZTY0RGVjb2RpbmdFeGNlcHRpb24oU3RyaW5nIF9tc2dJRCwgT2JqZWN0IGV4QXJnc1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbiBfb3JpZ2luYWxFeGNlcHRpb24pIHsKKyAgICAgIHN1cGVyKF9tc2dJRCwgZXhBcmdzLCBfb3JpZ2luYWxFeGNlcHRpb24pOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2V4Y2VwdGlvbnMvWE1MU2VjdXJpdHlFeGNlcHRpb24uamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9leGNlcHRpb25zL1hNTFNlY3VyaXR5RXhjZXB0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E2NTBjYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9leGNlcHRpb25zL1hNTFNlY3VyaXR5RXhjZXB0aW9uLmphdmEKQEAgLTAsMCArMSwyNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmV4Y2VwdGlvbnM7CisKKworCitpbXBvcnQgamF2YS5pby5QcmludFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOworaW1wb3J0IGphdmEudGV4dC5NZXNzYWdlRm9ybWF0OworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkkxOG47CisKKworLyoqCisgKiBUaGUgbW90aGVyIG9mIGFsbCBFeGNlcHRpb25zIGluIHRoaXMgYnVuZGxlLiBJdCBhbGxvd3MgZXhjZXB0aW9ucyB0byBoYXZlCisgKiB0aGVpciBtZXNzYWdlcyB0cmFuc2xhdGVkIHRvIHRoZSBkaWZmZXJlbnQgbG9jYWxlcy4KKyAqCisgKiBUaGUgPGNvZGU+eG1sc2VjdXJpdHlfZW4ucHJvcGVydGllczwvY29kZT4gZmlsZSBjb250YWlucyB0aGlzIGxpbmU6CisgKiA8cHJlPgorICogeG1sLldyb25nRWxlbWVudCA9IENhbid0IGNyZWF0ZSBhIHswfSBmcm9tIGEgezF9IGVsZW1lbnQKKyAqIDwvcHJlPgorICoKKyAqIFVzYWdlIGluIHRoZSBKYXZhIHNvdXJjZSBpczoKKyAqIDxwcmU+CisgKiB7CisgKiAgICBPYmplY3QgZXhBcmdzW10gPSB7IENvbnN0YW50cy5fVEFHX1RSQU5TRk9STVMsICJCYWRFbGVtZW50IiB9OworICoKKyAqICAgIHRocm93IG5ldyBYTUxTZWN1cml0eUV4Y2VwdGlvbigieG1sLldyb25nRWxlbWVudCIsIGV4QXJncyk7CisgKiB9CisgKiA8L3ByZT4KKyAqCisgKiBBZGRpdGlvbmFsbHksIGlmIGFub3RoZXIgRXhjZXB0aW9uIGhhcyBiZWVuIGNhdWdodCwgd2UgY2FuIHN1cHBseSBpdCwgdG9vPgorICogPHByZT4KKyAqIHRyeSB7CisgKiAgICAuLi4KKyAqIH0gY2F0Y2ggKEV4Y2VwdGlvbiBvbGRFeCkgeworICogICAgT2JqZWN0IGV4QXJnc1tdID0geyBDb25zdGFudHMuX1RBR19UUkFOU0ZPUk1TLCAiQmFkRWxlbWVudCIgfTsKKyAqCisgKiAgICB0aHJvdyBuZXcgWE1MU2VjdXJpdHlFeGNlcHRpb24oInhtbC5Xcm9uZ0VsZW1lbnQiLCBleEFyZ3MsIG9sZEV4KTsKKyAqIH0KKyAqIDwvcHJlPgorICoKKyAqCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubgorICovCitwdWJsaWMgY2xhc3MgWE1MU2VjdXJpdHlFeGNlcHRpb24gZXh0ZW5kcyBFeGNlcHRpb24geworCisJCisJCisgICAvKioKKwkgKiAKKwkgKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsKKworICAgLyoqIEZpZWxkIG9yaWdpbmFsRXhjZXB0aW9uICovCisgICBwcm90ZWN0ZWQgRXhjZXB0aW9uIG9yaWdpbmFsRXhjZXB0aW9uID0gbnVsbDsKKworICAgLyoqIEZpZWxkIG1zZ0lEICovCisgICBwcm90ZWN0ZWQgU3RyaW5nIG1zZ0lEOworCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgKgorICAgICovCisgICBwdWJsaWMgWE1MU2VjdXJpdHlFeGNlcHRpb24oKSB7CisKKyAgICAgIHN1cGVyKCJNaXNzaW5nIG1lc3NhZ2Ugc3RyaW5nIik7CisKKyAgICAgIHRoaXMubXNnSUQgPSBudWxsOworICAgICAgdGhpcy5vcmlnaW5hbEV4Y2VwdGlvbiA9IG51bGw7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKi8KKyAgIHB1YmxpYyBYTUxTZWN1cml0eUV4Y2VwdGlvbihTdHJpbmcgX21zZ0lEKSB7CisKKyAgICAgIHN1cGVyKEkxOG4uZ2V0RXhjZXB0aW9uTWVzc2FnZShfbXNnSUQpKTsKKworICAgICAgdGhpcy5tc2dJRCA9IF9tc2dJRDsKKyAgICAgIHRoaXMub3JpZ2luYWxFeGNlcHRpb24gPSBudWxsOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICogQHBhcmFtIGV4QXJncworICAgICovCisgICBwdWJsaWMgWE1MU2VjdXJpdHlFeGNlcHRpb24oU3RyaW5nIF9tc2dJRCwgT2JqZWN0IGV4QXJnc1tdKSB7CisKKyAgICAgIHN1cGVyKE1lc3NhZ2VGb3JtYXQuZm9ybWF0KEkxOG4uZ2V0RXhjZXB0aW9uTWVzc2FnZShfbXNnSUQpLCBleEFyZ3MpKTsKKworICAgICAgdGhpcy5tc2dJRCA9IF9tc2dJRDsKKyAgICAgIHRoaXMub3JpZ2luYWxFeGNlcHRpb24gPSBudWxsOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9vcmlnaW5hbEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgWE1MU2VjdXJpdHlFeGNlcHRpb24oRXhjZXB0aW9uIF9vcmlnaW5hbEV4Y2VwdGlvbikgeworCisgICAgICBzdXBlcigiTWlzc2luZyBtZXNzYWdlIElEIHRvIGxvY2F0ZSBtZXNzYWdlIHN0cmluZyBpbiByZXNvdXJjZSBidW5kbGUgXCIiCisgICAgICAgICAgICArIENvbnN0YW50cy5leGNlcHRpb25NZXNzYWdlc1Jlc291cmNlQnVuZGxlQmFzZQorICAgICAgICAgICAgKyAiXCIuIE9yaWdpbmFsIEV4Y2VwdGlvbiB3YXMgYSAiCisgICAgICAgICAgICArIF9vcmlnaW5hbEV4Y2VwdGlvbi5nZXRDbGFzcygpLmdldE5hbWUoKSArICIgYW5kIG1lc3NhZ2UgIgorICAgICAgICAgICAgKyBfb3JpZ2luYWxFeGNlcHRpb24uZ2V0TWVzc2FnZSgpKTsKKworICAgICAgdGhpcy5vcmlnaW5hbEV4Y2VwdGlvbiA9IF9vcmlnaW5hbEV4Y2VwdGlvbjsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICoKKyAgICAqIEBwYXJhbSBfbXNnSUQKKyAgICAqIEBwYXJhbSBfb3JpZ2luYWxFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIFhNTFNlY3VyaXR5RXhjZXB0aW9uKFN0cmluZyBfbXNnSUQsIEV4Y2VwdGlvbiBfb3JpZ2luYWxFeGNlcHRpb24pIHsKKworICAgICAgc3VwZXIoSTE4bi5nZXRFeGNlcHRpb25NZXNzYWdlKF9tc2dJRCwgX29yaWdpbmFsRXhjZXB0aW9uKSk7CisKKyAgICAgIHRoaXMubXNnSUQgPSBfbXNnSUQ7CisgICAgICB0aGlzLm9yaWdpbmFsRXhjZXB0aW9uID0gX29yaWdpbmFsRXhjZXB0aW9uOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICogQHBhcmFtIGV4QXJncworICAgICogQHBhcmFtIF9vcmlnaW5hbEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgWE1MU2VjdXJpdHlFeGNlcHRpb24oU3RyaW5nIF9tc2dJRCwgT2JqZWN0IGV4QXJnc1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbiBfb3JpZ2luYWxFeGNlcHRpb24pIHsKKworICAgICAgc3VwZXIoTWVzc2FnZUZvcm1hdC5mb3JtYXQoSTE4bi5nZXRFeGNlcHRpb25NZXNzYWdlKF9tc2dJRCksIGV4QXJncykpOworCisgICAgICB0aGlzLm1zZ0lEID0gX21zZ0lEOworICAgICAgdGhpcy5vcmlnaW5hbEV4Y2VwdGlvbiA9IF9vcmlnaW5hbEV4Y2VwdGlvbjsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0TXNnSUQKKyAgICAqCisgICAgKiBAcmV0dXJuIHRoZSBtZXNzYWdlSWQKKyAgICAqLworICAgcHVibGljIFN0cmluZyBnZXRNc2dJRCgpIHsKKworICAgICAgaWYgKG1zZ0lEID09IG51bGwpIHsKKyAgICAgICAgIHJldHVybiAiTWlzc2luZyBtZXNzYWdlIElEIjsKKyAgICAgIH0gCisgICAgICByZXR1cm4gbXNnSUQ7ICAgICAgCisgICB9CisKKyAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKworICAgICAgU3RyaW5nIHMgPSB0aGlzLmdldENsYXNzKCkuZ2V0TmFtZSgpOworICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBzdXBlci5nZXRMb2NhbGl6ZWRNZXNzYWdlKCk7CisKKyAgICAgIGlmIChtZXNzYWdlICE9IG51bGwpIHsKKyAgICAgICAgIG1lc3NhZ2UgPSBzICsgIjogIiArIG1lc3NhZ2U7CisgICAgICB9IGVsc2UgeworICAgICAgICAgbWVzc2FnZSA9IHM7CisgICAgICB9CisKKyAgICAgIGlmIChvcmlnaW5hbEV4Y2VwdGlvbiAhPSBudWxsKSB7CisgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZSArICJcbk9yaWdpbmFsIEV4Y2VwdGlvbiB3YXMgIgorICAgICAgICAgICAgICAgICAgICsgb3JpZ2luYWxFeGNlcHRpb24udG9TdHJpbmcoKTsKKyAgICAgIH0KKworICAgICAgcmV0dXJuIG1lc3NhZ2U7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHByaW50U3RhY2tUcmFjZQorICAgICoKKyAgICAqLworICAgcHVibGljIHZvaWQgcHJpbnRTdGFja1RyYWNlKCkgeworCisgICAgICBzeW5jaHJvbml6ZWQgKFN5c3RlbS5lcnIpIHsKKyAgICAgICAgIHN1cGVyLnByaW50U3RhY2tUcmFjZShTeXN0ZW0uZXJyKTsKKworICAgICAgICAgaWYgKHRoaXMub3JpZ2luYWxFeGNlcHRpb24gIT0gbnVsbCkgeworICAgICAgICAgICAgdGhpcy5vcmlnaW5hbEV4Y2VwdGlvbi5wcmludFN0YWNrVHJhY2UoU3lzdGVtLmVycik7CisgICAgICAgICB9CisgICAgICB9CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHByaW50U3RhY2tUcmFjZQorICAgICoKKyAgICAqIEBwYXJhbSBwcmludHdyaXRlcgorICAgICovCisgICBwdWJsaWMgdm9pZCBwcmludFN0YWNrVHJhY2UoUHJpbnRXcml0ZXIgcHJpbnR3cml0ZXIpIHsKKworICAgICAgc3VwZXIucHJpbnRTdGFja1RyYWNlKHByaW50d3JpdGVyKTsKKworICAgICAgaWYgKHRoaXMub3JpZ2luYWxFeGNlcHRpb24gIT0gbnVsbCkgeworICAgICAgICAgdGhpcy5vcmlnaW5hbEV4Y2VwdGlvbi5wcmludFN0YWNrVHJhY2UocHJpbnR3cml0ZXIpOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBwcmludFN0YWNrVHJhY2UKKyAgICAqCisgICAgKiBAcGFyYW0gcHJpbnRzdHJlYW0KKyAgICAqLworICAgcHVibGljIHZvaWQgcHJpbnRTdGFja1RyYWNlKFByaW50U3RyZWFtIHByaW50c3RyZWFtKSB7CisKKyAgICAgIHN1cGVyLnByaW50U3RhY2tUcmFjZShwcmludHN0cmVhbSk7CisKKyAgICAgIGlmICh0aGlzLm9yaWdpbmFsRXhjZXB0aW9uICE9IG51bGwpIHsKKyAgICAgICAgIHRoaXMub3JpZ2luYWxFeGNlcHRpb24ucHJpbnRTdGFja1RyYWNlKHByaW50c3RyZWFtKTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0T3JpZ2luYWxFeGNlcHRpb24KKyAgICAqCisgICAgKiBAcmV0dXJuIHRoZSBvcmlnaW5hbCBleGNlcHRpb24KKyAgICAqLworICAgcHVibGljIEV4Y2VwdGlvbiBnZXRPcmlnaW5hbEV4Y2VwdGlvbigpIHsKKyAgICAgIHJldHVybiBvcmlnaW5hbEV4Y2VwdGlvbjsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9leGNlcHRpb25zL1hNTFNlY3VyaXR5UnVudGltZUV4Y2VwdGlvbi5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2V4Y2VwdGlvbnMvWE1MU2VjdXJpdHlSdW50aW1lRXhjZXB0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JiZTMzOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9leGNlcHRpb25zL1hNTFNlY3VyaXR5UnVudGltZUV4Y2VwdGlvbi5qYXZhCkBAIC0wLDAgKzEsMjQwIEBACisvKgorICogQ29weXJpZ2h0ICAyMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9uczsKKworaW1wb3J0IGphdmEuaW8uUHJpbnRTdHJlYW07CitpbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKK2ltcG9ydCBqYXZhLnRleHQuTWVzc2FnZUZvcm1hdDsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5JMThuOworCisvKioKKyAqIFRoZSBtb3RoZXIgb2YgYWxsIHJ1bnRpbWUgRXhjZXB0aW9ucyBpbiB0aGlzIGJ1bmRsZS4gSXQgYWxsb3dzIGV4Y2VwdGlvbnMgdG8gaGF2ZQorICogdGhlaXIgbWVzc2FnZXMgdHJhbnNsYXRlZCB0byB0aGUgZGlmZmVyZW50IGxvY2FsZXMuCisgKgorICogVGhlIDxjb2RlPnhtbHNlY3VyaXR5X2VuLnByb3BlcnRpZXM8L2NvZGU+IGZpbGUgY29udGFpbnMgdGhpcyBsaW5lOgorICogPHByZT4KKyAqIHhtbC5Xcm9uZ0VsZW1lbnQgPSBDYW4ndCBjcmVhdGUgYSB7MH0gZnJvbSBhIHsxfSBlbGVtZW50CisgKiA8L3ByZT4KKyAqCisgKiBVc2FnZSBpbiB0aGUgSmF2YSBzb3VyY2UgaXM6CisgKiA8cHJlPgorICogeworICogICAgT2JqZWN0IGV4QXJnc1tdID0geyBDb25zdGFudHMuX1RBR19UUkFOU0ZPUk1TLCAiQmFkRWxlbWVudCIgfTsKKyAqCisgKiAgICB0aHJvdyBuZXcgWE1MU2VjdXJpdHlFeGNlcHRpb24oInhtbC5Xcm9uZ0VsZW1lbnQiLCBleEFyZ3MpOworICogfQorICogPC9wcmU+CisgKgorICogQWRkaXRpb25hbGx5LCBpZiBhbm90aGVyIEV4Y2VwdGlvbiBoYXMgYmVlbiBjYXVnaHQsIHdlIGNhbiBzdXBwbHkgaXQsIHRvbz4KKyAqIDxwcmU+CisgKiB0cnkgeworICogICAgLi4uCisgKiB9IGNhdGNoIChFeGNlcHRpb24gb2xkRXgpIHsKKyAqICAgIE9iamVjdCBleEFyZ3NbXSA9IHsgQ29uc3RhbnRzLl9UQUdfVFJBTlNGT1JNUywgIkJhZEVsZW1lbnQiIH07CisgKgorICogICAgdGhyb3cgbmV3IFhNTFNlY3VyaXR5RXhjZXB0aW9uKCJ4bWwuV3JvbmdFbGVtZW50IiwgZXhBcmdzLCBvbGRFeCk7CisgKiB9CisgKiA8L3ByZT4KKyAqCisgKgorICogQGF1dGhvciBDaHJpc3RpYW4gR2V1ZXItUG9sbG1hbm4KKyAqLworcHVibGljIGNsYXNzIFhNTFNlY3VyaXR5UnVudGltZUV4Y2VwdGlvbgorICAgICAgICBleHRlbmRzIFJ1bnRpbWVFeGNlcHRpb24geworICAgLyoqCisgICAgICogCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7CisKKyAgIC8qKiBGaWVsZCBvcmlnaW5hbEV4Y2VwdGlvbiAqLworICAgcHJvdGVjdGVkIEV4Y2VwdGlvbiBvcmlnaW5hbEV4Y2VwdGlvbiA9IG51bGw7CisKKyAgIC8qKiBGaWVsZCBtc2dJRCAqLworICAgcHJvdGVjdGVkIFN0cmluZyBtc2dJRDsKKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBYTUxTZWN1cml0eVJ1bnRpbWVFeGNlcHRpb24KKyAgICAqCisgICAgKi8KKyAgIHB1YmxpYyBYTUxTZWN1cml0eVJ1bnRpbWVFeGNlcHRpb24oKSB7CisKKyAgICAgIHN1cGVyKCJNaXNzaW5nIG1lc3NhZ2Ugc3RyaW5nIik7CisKKyAgICAgIHRoaXMubXNnSUQgPSBudWxsOworICAgICAgdGhpcy5vcmlnaW5hbEV4Y2VwdGlvbiA9IG51bGw7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgWE1MU2VjdXJpdHlSdW50aW1lRXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICovCisgICBwdWJsaWMgWE1MU2VjdXJpdHlSdW50aW1lRXhjZXB0aW9uKFN0cmluZyBfbXNnSUQpIHsKKworICAgICAgc3VwZXIoSTE4bi5nZXRFeGNlcHRpb25NZXNzYWdlKF9tc2dJRCkpOworCisgICAgICB0aGlzLm1zZ0lEID0gX21zZ0lEOworICAgICAgdGhpcy5vcmlnaW5hbEV4Y2VwdGlvbiA9IG51bGw7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgWE1MU2VjdXJpdHlSdW50aW1lRXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICogQHBhcmFtIGV4QXJncworICAgICovCisgICBwdWJsaWMgWE1MU2VjdXJpdHlSdW50aW1lRXhjZXB0aW9uKFN0cmluZyBfbXNnSUQsIE9iamVjdCBleEFyZ3NbXSkgeworCisgICAgICBzdXBlcihNZXNzYWdlRm9ybWF0LmZvcm1hdChJMThuLmdldEV4Y2VwdGlvbk1lc3NhZ2UoX21zZ0lEKSwgZXhBcmdzKSk7CisKKyAgICAgIHRoaXMubXNnSUQgPSBfbXNnSUQ7CisgICAgICB0aGlzLm9yaWdpbmFsRXhjZXB0aW9uID0gbnVsbDsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBYTUxTZWN1cml0eVJ1bnRpbWVFeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX29yaWdpbmFsRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBYTUxTZWN1cml0eVJ1bnRpbWVFeGNlcHRpb24oRXhjZXB0aW9uIF9vcmlnaW5hbEV4Y2VwdGlvbikgeworCisgICAgICBzdXBlcigiTWlzc2luZyBtZXNzYWdlIElEIHRvIGxvY2F0ZSBtZXNzYWdlIHN0cmluZyBpbiByZXNvdXJjZSBidW5kbGUgXCIiCisgICAgICAgICAgICArIENvbnN0YW50cy5leGNlcHRpb25NZXNzYWdlc1Jlc291cmNlQnVuZGxlQmFzZQorICAgICAgICAgICAgKyAiXCIuIE9yaWdpbmFsIEV4Y2VwdGlvbiB3YXMgYSAiCisgICAgICAgICAgICArIF9vcmlnaW5hbEV4Y2VwdGlvbi5nZXRDbGFzcygpLmdldE5hbWUoKSArICIgYW5kIG1lc3NhZ2UgIgorICAgICAgICAgICAgKyBfb3JpZ2luYWxFeGNlcHRpb24uZ2V0TWVzc2FnZSgpKTsKKworICAgICAgdGhpcy5vcmlnaW5hbEV4Y2VwdGlvbiA9IF9vcmlnaW5hbEV4Y2VwdGlvbjsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBYTUxTZWN1cml0eVJ1bnRpbWVFeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKiBAcGFyYW0gX29yaWdpbmFsRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBYTUxTZWN1cml0eVJ1bnRpbWVFeGNlcHRpb24oU3RyaW5nIF9tc2dJRCwgRXhjZXB0aW9uIF9vcmlnaW5hbEV4Y2VwdGlvbikgeworCisgICAgICBzdXBlcihJMThuLmdldEV4Y2VwdGlvbk1lc3NhZ2UoX21zZ0lELCBfb3JpZ2luYWxFeGNlcHRpb24pKTsKKworICAgICAgdGhpcy5tc2dJRCA9IF9tc2dJRDsKKyAgICAgIHRoaXMub3JpZ2luYWxFeGNlcHRpb24gPSBfb3JpZ2luYWxFeGNlcHRpb247CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgWE1MU2VjdXJpdHlSdW50aW1lRXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICogQHBhcmFtIGV4QXJncworICAgICogQHBhcmFtIF9vcmlnaW5hbEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgWE1MU2VjdXJpdHlSdW50aW1lRXhjZXB0aW9uKFN0cmluZyBfbXNnSUQsIE9iamVjdCBleEFyZ3NbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb24gX29yaWdpbmFsRXhjZXB0aW9uKSB7CisKKyAgICAgIHN1cGVyKE1lc3NhZ2VGb3JtYXQuZm9ybWF0KEkxOG4uZ2V0RXhjZXB0aW9uTWVzc2FnZShfbXNnSUQpLCBleEFyZ3MpKTsKKworICAgICAgdGhpcy5tc2dJRCA9IF9tc2dJRDsKKyAgICAgIHRoaXMub3JpZ2luYWxFeGNlcHRpb24gPSBfb3JpZ2luYWxFeGNlcHRpb247CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGdldE1zZ0lECisgICAgKgorICAgICogQHJldHVybiB0aGUgbWVzc2FnZUlkCisgICAgKi8KKyAgIHB1YmxpYyBTdHJpbmcgZ2V0TXNnSUQoKSB7CisKKyAgICAgIGlmIChtc2dJRCA9PSBudWxsKSB7CisgICAgICAgICByZXR1cm4gIk1pc3NpbmcgbWVzc2FnZSBJRCI7CisgICAgICB9IAorICAgICAgcmV0dXJuIG1zZ0lEOyAgICAgIAorICAgfQorCisgICAvKiogQGluaGVyaXREb2MgKi8KKyAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisKKyAgICAgIFN0cmluZyBzID0gdGhpcy5nZXRDbGFzcygpLmdldE5hbWUoKTsKKyAgICAgIFN0cmluZyBtZXNzYWdlID0gc3VwZXIuZ2V0TG9jYWxpemVkTWVzc2FnZSgpOworCisgICAgICBpZiAobWVzc2FnZSAhPSBudWxsKSB7CisgICAgICAgICBtZXNzYWdlID0gcyArICI6ICIgKyBtZXNzYWdlOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgIG1lc3NhZ2UgPSBzOworICAgICAgfQorCisgICAgICBpZiAob3JpZ2luYWxFeGNlcHRpb24gIT0gbnVsbCkgeworICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UgKyAiXG5PcmlnaW5hbCBFeGNlcHRpb24gd2FzICIKKyAgICAgICAgICAgICAgICAgICArIG9yaWdpbmFsRXhjZXB0aW9uLnRvU3RyaW5nKCk7CisgICAgICB9CisKKyAgICAgIHJldHVybiBtZXNzYWdlOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBwcmludFN0YWNrVHJhY2UKKyAgICAqCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHByaW50U3RhY2tUcmFjZSgpIHsKKworICAgICAgc3luY2hyb25pemVkIChTeXN0ZW0uZXJyKSB7CisgICAgICAgICBzdXBlci5wcmludFN0YWNrVHJhY2UoU3lzdGVtLmVycik7CisKKyAgICAgICAgIGlmICh0aGlzLm9yaWdpbmFsRXhjZXB0aW9uICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRoaXMub3JpZ2luYWxFeGNlcHRpb24ucHJpbnRTdGFja1RyYWNlKFN5c3RlbS5lcnIpOworICAgICAgICAgfQorICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBwcmludFN0YWNrVHJhY2UKKyAgICAqCisgICAgKiBAcGFyYW0gcHJpbnR3cml0ZXIKKyAgICAqLworICAgcHVibGljIHZvaWQgcHJpbnRTdGFja1RyYWNlKFByaW50V3JpdGVyIHByaW50d3JpdGVyKSB7CisKKyAgICAgIHN1cGVyLnByaW50U3RhY2tUcmFjZShwcmludHdyaXRlcik7CisKKyAgICAgIGlmICh0aGlzLm9yaWdpbmFsRXhjZXB0aW9uICE9IG51bGwpIHsKKyAgICAgICAgIHRoaXMub3JpZ2luYWxFeGNlcHRpb24ucHJpbnRTdGFja1RyYWNlKHByaW50d3JpdGVyKTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgcHJpbnRTdGFja1RyYWNlCisgICAgKgorICAgICogQHBhcmFtIHByaW50c3RyZWFtCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHByaW50U3RhY2tUcmFjZShQcmludFN0cmVhbSBwcmludHN0cmVhbSkgeworCisgICAgICBzdXBlci5wcmludFN0YWNrVHJhY2UocHJpbnRzdHJlYW0pOworCisgICAgICBpZiAodGhpcy5vcmlnaW5hbEV4Y2VwdGlvbiAhPSBudWxsKSB7CisgICAgICAgICB0aGlzLm9yaWdpbmFsRXhjZXB0aW9uLnByaW50U3RhY2tUcmFjZShwcmludHN0cmVhbSk7CisgICAgICB9CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGdldE9yaWdpbmFsRXhjZXB0aW9uCisgICAgKgorICAgICogQHJldHVybiB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBFeGNlcHRpb24gZ2V0T3JpZ2luYWxFeGNlcHRpb24oKSB7CisgICAgICByZXR1cm4gb3JpZ2luYWxFeGNlcHRpb247CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2V4Y2VwdGlvbnMvcGFja2FnZS5odG1sIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2V4Y2VwdGlvbnMvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjYjExNGQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvZXhjZXB0aW9ucy9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSwzIEBACis8SFRNTD48SEVBRD48L0hFQUQ+PEJPRFk+PFA+CitnZW5lcmFsIGV4Y2VwdGlvbnMgdXNlZCBieSB0aGlzIGxpYnJhcnkuCis8L1A+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL0NvbnRlbnRIYW5kbGVyQWxyZWFkeVJlZ2lzdGVyZWRFeGNlcHRpb24uamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL0NvbnRlbnRIYW5kbGVyQWxyZWFkeVJlZ2lzdGVyZWRFeGNlcHRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2E2YmEwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvQ29udGVudEhhbmRsZXJBbHJlYWR5UmVnaXN0ZXJlZEV4Y2VwdGlvbi5qYXZhCkBAIC0wLDAgKzEsODcgQEAKKworLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5czsKKworCisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLlhNTFNlY3VyaXR5RXhjZXB0aW9uOworCisKKy8qKgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGNsYXNzIENvbnRlbnRIYW5kbGVyQWxyZWFkeVJlZ2lzdGVyZWRFeGNlcHRpb24KKyAgICAgICAgZXh0ZW5kcyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisKKyAgIC8qKgorCSAqIAorCSAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOworCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIENvbnRlbnRIYW5kbGVyQWxyZWFkeVJlZ2lzdGVyZWRFeGNlcHRpb24KKyAgICAqCisgICAgKi8KKyAgIHB1YmxpYyBDb250ZW50SGFuZGxlckFscmVhZHlSZWdpc3RlcmVkRXhjZXB0aW9uKCkgeworICAgICAgc3VwZXIoKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBDb250ZW50SGFuZGxlckFscmVhZHlSZWdpc3RlcmVkRXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICovCisgICBwdWJsaWMgQ29udGVudEhhbmRsZXJBbHJlYWR5UmVnaXN0ZXJlZEV4Y2VwdGlvbihTdHJpbmcgX21zZ0lEKSB7CisgICAgICBzdXBlcihfbXNnSUQpOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIENvbnRlbnRIYW5kbGVyQWxyZWFkeVJlZ2lzdGVyZWRFeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKiBAcGFyYW0gZXhBcmdzCisgICAgKi8KKyAgIHB1YmxpYyBDb250ZW50SGFuZGxlckFscmVhZHlSZWdpc3RlcmVkRXhjZXB0aW9uKFN0cmluZyBfbXNnSUQsCisgICAgICAgICAgIE9iamVjdCBleEFyZ3NbXSkgeworICAgICAgc3VwZXIoX21zZ0lELCBleEFyZ3MpOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIENvbnRlbnRIYW5kbGVyQWxyZWFkeVJlZ2lzdGVyZWRFeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKiBAcGFyYW0gX29yaWdpbmFsRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBDb250ZW50SGFuZGxlckFscmVhZHlSZWdpc3RlcmVkRXhjZXB0aW9uKFN0cmluZyBfbXNnSUQsCisgICAgICAgICAgIEV4Y2VwdGlvbiBfb3JpZ2luYWxFeGNlcHRpb24pIHsKKyAgICAgIHN1cGVyKF9tc2dJRCwgX29yaWdpbmFsRXhjZXB0aW9uKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBDb250ZW50SGFuZGxlckFscmVhZHlSZWdpc3RlcmVkRXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICogQHBhcmFtIGV4QXJncworICAgICogQHBhcmFtIF9vcmlnaW5hbEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgQ29udGVudEhhbmRsZXJBbHJlYWR5UmVnaXN0ZXJlZEV4Y2VwdGlvbihTdHJpbmcgX21zZ0lELAorICAgICAgICAgICBPYmplY3QgZXhBcmdzW10sIEV4Y2VwdGlvbiBfb3JpZ2luYWxFeGNlcHRpb24pIHsKKyAgICAgIHN1cGVyKF9tc2dJRCwgZXhBcmdzLCBfb3JpZ2luYWxFeGNlcHRpb24pOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvS2V5SW5mby5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvS2V5SW5mby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1YWVlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9LZXlJbmZvLmphdmEKQEAgLTAsMCArMSwxMDg5IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzOworCisKKworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHVibGljS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGU7CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgamF2YXguY3J5cHRvLlNlY3JldEtleTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmVuY3J5cHRpb24uRW5jcnlwdGVkS2V5OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmVuY3J5cHRpb24uWE1MQ2lwaGVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmVuY3J5cHRpb24uWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLlhNTFNlY3VyaXR5RXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC5LZXlOYW1lOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC5LZXlWYWx1ZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmNvbnRlbnQuTWdtdERhdGE7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50LlBHUERhdGE7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50LlJldHJpZXZhbE1ldGhvZDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmNvbnRlbnQuU1BLSURhdGE7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50Llg1MDlEYXRhOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC5rZXl2YWx1ZXMuRFNBS2V5VmFsdWU7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50LmtleXZhbHVlcy5SU0FLZXlWYWx1ZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmtleXJlc29sdmVyLktleVJlc29sdmVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMua2V5cmVzb2x2ZXIuS2V5UmVzb2x2ZXJFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5rZXlyZXNvbHZlci5LZXlSZXNvbHZlclNwaTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLnN0b3JhZ2UuU3RvcmFnZVJlc29sdmVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5FbmNyeXB0aW9uQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5JZFJlc29sdmVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlNpZ25hdHVyZUVsZW1lbnRQcm94eTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5YTUxVdGlsczsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7CisKKworLyoqCisgKiBUaGlzIGNsYXNzIHN0YW5kIGZvciBLZXlJbmZvIEVsZW1lbnQgdGhhdCBtYXkgY29udGFpbiBrZXlzLCBuYW1lcywKKyAqIGNlcnRpZmljYXRlcyBhbmQgb3RoZXIgcHVibGljIGtleSBtYW5hZ2VtZW50IGluZm9ybWF0aW9uLAorICogc3VjaCBhcyBpbi1iYW5kIGtleSBkaXN0cmlidXRpb24gb3Iga2V5IGFncmVlbWVudCBkYXRhLgorICogPEJSIC8+CisgKiBLZXlJbmZvIEVsZW1lbnQgaGFzIHR3byBiYXNpYyBmdW5jdGlvbnM6CisgKiBPbmUgaXMgS2V5UmVzb2x2ZSBmb3IgZ2V0dGluZyB0aGUgcHVibGljIGtleSBpbiBzaWduYXR1cmUgdmFsaWRhdGlvbiBwcm9jZXNzaW5nLgorICogdGhlIG90aGVyIG9uZSBpcyB0b0VsZW1lbnQgZm9yIGdldHRpbmcgdGhlIGVsZW1lbnQgaW4gc2lnbmF0dXJlIGdlbmVyYXRpb24gcHJvY2Vzc2luZy4KKyAqIDxCUiAvPgorICogVGhlIDxDT0RFPmxlbmd0aFhYWCgpPC9DT0RFPiBtZXRob2RzIHByb3ZpZGUgYWNjZXNzIHRvIHRoZSBpbnRlcm5hbCBLZXkKKyAqIG9iamVjdHM6CisgKiA8VUw+CisgKiA8TEk+SWYgdGhlIDxDT0RFPktleUluZm88L0NPREU+IHdhcyBjb25zdHJ1Y3RlZCBmcm9tIGFuIEVsZW1lbnQKKyAqIChTaWduYXR1cmUgdmVyaWZpY2F0aW9uKSwgdGhlIDxDT0RFPmxlbmd0aFhYWCgpPC9DT0RFPiBtZXRob2RzIHNlYXJjaGVzCisgKiBmb3IgY2hpbGQgZWxlbWVudHMgb2YgPENPREU+ZHM6S2V5SW5mbzwvQ09ERT4gZm9yIGtub3duIHR5cGVzLiA8L0xJPgorICogPExJPklmIHRoZSA8Q09ERT5LZXlJbmZvPC9DT0RFPiB3YXMgY29uc3RydWN0ZWQgZnJvbSBzY3JhdGNoIChkdXJpbmcKKyAqIFNpZ25hdHVyZSBnZW5lcmF0aW9uKSwgdGhlIDxDT0RFPmxlbmd0aFhYWCgpPC9DT0RFPiBtZXRob2RzIHJldHVybiB0aGUgbnVtYmVyCisgKiBvZiA8Q09ERT5YWFhzPC9DT0RFPiBvYmplY3RzIGFscmVhZHkgcGFzc2VkIHRvIHRoZSBLZXlJbmZvPC9MST4KKyAqIDwvVUw+CisgKiA8QlIgLz4KKyAqIFRoZSA8Q09ERT5hZGRYWFgoKTwvQ09ERT4gbWV0aG9kcyBhcmUgdXNlZCBmb3IgYWRkaW5nIE9iamVjdHMgb2YgdGhlCisgKiBhcHByb3ByaWF0ZSB0eXBlIHRvIHRoZSA8Q09ERT5LZXlJbmZvPC9DT0RFPi4gVGhpcyBpcyB1c2VkIGR1cmluZyBzaWduYXR1cmUKKyAqIGdlbmVyYXRpb24uCisgKiA8QlIgLz4KKyAqIFRoZSA8Q09ERT5pdGVtWFhYKGludCBpKTwvQ09ERT4gbWV0aG9kcyByZXR1cm4gdGhlIGkndGggb2JqZWN0IG9mIHRoZQorICogY29ycmVzcG9uZGluZyB0eXBlLgorICogPEJSIC8+CisgKiBUaGUgPENPREU+Y29udGFpbnNYWFgoKTwvQ09ERT4gbWV0aG9kcyByZXR1cm4gPEk+d2hldGhlcjwvST4gdGhlIEtleUluZm8KKyAqIGNvbnRhaW5zIHRoZSBjb3JyZXNwb25kaW5nIHR5cGUuCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICovCitwdWJsaWMgY2xhc3MgS2V5SW5mbyBleHRlbmRzIFNpZ25hdHVyZUVsZW1lbnRQcm94eSB7CisKKyAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZyhLZXlJbmZvLmNsYXNzLmdldE5hbWUoKSk7CisgICAgTGlzdCB4NTA5RGF0YXM9bnVsbDsKKyAgICBMaXN0IGVuY3J5cHRlZEtleXM9bnVsbDsKKyAgICAKKyAgICBzdGF0aWMgZmluYWwgTGlzdCBudWxsTGlzdDsKKyAgICBzdGF0aWMgeworICAgIAlMaXN0IGxpc3QgPSBuZXcgQXJyYXlMaXN0KCk7CisgICAgICAgIGxpc3QuYWRkKG51bGwpOworICAgICAgICBudWxsTGlzdCA9IENvbGxlY3Rpb25zLnVubW9kaWZpYWJsZUxpc3QobGlzdCk7CisgICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIEtleUluZm8KKyAgICAqIEBwYXJhbSBkb2MKKyAgICAqLworICAgcHVibGljIEtleUluZm8oRG9jdW1lbnQgZG9jKSB7CisKKyAgICAgIHN1cGVyKGRvYyk7CisKKyAgICAgIFhNTFV0aWxzLmFkZFJldHVyblRvRWxlbWVudCh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50KTsKKyAgICAgIAorICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIEtleUluZm8KKyAgICAqCisgICAgKiBAcGFyYW0gZWxlbWVudAorICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIEtleUluZm8oRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSkgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKyAgICAgIHN1cGVyKGVsZW1lbnQsIEJhc2VVUkkpOworICAgICAvLyBfc3RvcmFnZVJlc29sdmVycy5hZGQobnVsbCk7CisKKyAgIH0KKworICAgLyoqCisgICAgKiBTZXRzIHRoZSA8Y29kZT5JZDwvY29kZT4gYXR0cmlidXRlCisgICAgKgorICAgICogQHBhcmFtIElkIElECisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHNldElkKFN0cmluZyBJZCkgeworCisgICAgICBpZiAoKElkICE9IG51bGwpKSB7CisgICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LnNldEF0dHJpYnV0ZU5TKG51bGwsIENvbnN0YW50cy5fQVRUX0lELCBJZCk7CisgICAgICAgICBJZFJlc29sdmVyLnJlZ2lzdGVyRWxlbWVudEJ5SWQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCwgSWQpOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIFJldHVybnMgdGhlIDxjb2RlPklkPC9jb2RlPiBhdHRyaWJ1dGUKKyAgICAqCisgICAgKiBAcmV0dXJuIHRoZSA8Y29kZT5JZDwvY29kZT4gYXR0cmlidXRlCisgICAgKi8KKyAgIHB1YmxpYyBTdHJpbmcgZ2V0SWQoKSB7CisgICAgICByZXR1cm4gdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5nZXRBdHRyaWJ1dGVOUyhudWxsLCBDb25zdGFudHMuX0FUVF9JRCk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGFkZEtleU5hbWUKKyAgICAqCisgICAgKiBAcGFyYW0ga2V5bmFtZVN0cmluZworICAgICovCisgICBwdWJsaWMgdm9pZCBhZGRLZXlOYW1lKFN0cmluZyBrZXluYW1lU3RyaW5nKSB7CisgICAgICB0aGlzLmFkZChuZXcgS2V5TmFtZSh0aGlzLl9kb2MsIGtleW5hbWVTdHJpbmcpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgYWRkCisgICAgKgorICAgICogQHBhcmFtIGtleW5hbWUKKyAgICAqLworICAgcHVibGljIHZvaWQgYWRkKEtleU5hbWUga2V5bmFtZSkgeworCisgICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmFwcGVuZENoaWxkKGtleW5hbWUuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgIFhNTFV0aWxzLmFkZFJldHVyblRvRWxlbWVudCh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50KTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgYWRkS2V5VmFsdWUKKyAgICAqCisgICAgKiBAcGFyYW0gcGsKKyAgICAqLworICAgcHVibGljIHZvaWQgYWRkS2V5VmFsdWUoUHVibGljS2V5IHBrKSB7CisgICAgICB0aGlzLmFkZChuZXcgS2V5VmFsdWUodGhpcy5fZG9jLCBwaykpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBhZGRLZXlWYWx1ZQorICAgICoKKyAgICAqIEBwYXJhbSB1bmtub3duS2V5VmFsdWVFbGVtZW50CisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIGFkZEtleVZhbHVlKEVsZW1lbnQgdW5rbm93bktleVZhbHVlRWxlbWVudCkgeworICAgICAgdGhpcy5hZGQobmV3IEtleVZhbHVlKHRoaXMuX2RvYywgdW5rbm93bktleVZhbHVlRWxlbWVudCkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBhZGQKKyAgICAqCisgICAgKiBAcGFyYW0gZHNha2V5dmFsdWUKKyAgICAqLworICAgcHVibGljIHZvaWQgYWRkKERTQUtleVZhbHVlIGRzYWtleXZhbHVlKSB7CisgICAgICB0aGlzLmFkZChuZXcgS2V5VmFsdWUodGhpcy5fZG9jLCBkc2FrZXl2YWx1ZSkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBhZGQKKyAgICAqCisgICAgKiBAcGFyYW0gcnNha2V5dmFsdWUKKyAgICAqLworICAgcHVibGljIHZvaWQgYWRkKFJTQUtleVZhbHVlIHJzYWtleXZhbHVlKSB7CisgICAgICB0aGlzLmFkZChuZXcgS2V5VmFsdWUodGhpcy5fZG9jLCByc2FrZXl2YWx1ZSkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBhZGQKKyAgICAqCisgICAgKiBAcGFyYW0gcGsKKyAgICAqLworICAgcHVibGljIHZvaWQgYWRkKFB1YmxpY0tleSBwaykgeworICAgICAgdGhpcy5hZGQobmV3IEtleVZhbHVlKHRoaXMuX2RvYywgcGspKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgYWRkCisgICAgKgorICAgICogQHBhcmFtIGtleXZhbHVlCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIGFkZChLZXlWYWx1ZSBrZXl2YWx1ZSkgeworICAgICAgICAgdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5hcHBlbmRDaGlsZChrZXl2YWx1ZS5nZXRFbGVtZW50KCkpOworICAgICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBhZGRNZ210RGF0YQorICAgICoKKyAgICAqIEBwYXJhbSBtZ210ZGF0YQorICAgICovCisgICBwdWJsaWMgdm9pZCBhZGRNZ210RGF0YShTdHJpbmcgbWdtdGRhdGEpIHsKKyAgICAgIHRoaXMuYWRkKG5ldyBNZ210RGF0YSh0aGlzLl9kb2MsIG1nbXRkYXRhKSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGFkZAorICAgICoKKyAgICAqIEBwYXJhbSBtZ210ZGF0YQorICAgICovCisgICBwdWJsaWMgdm9pZCBhZGQoTWdtdERhdGEgbWdtdGRhdGEpIHsKKyAgICAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQobWdtdGRhdGEuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgIFhNTFV0aWxzLmFkZFJldHVyblRvRWxlbWVudCh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50KTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgYWRkUEdQRGF0YQorICAgICoKKyAgICAqIEBwYXJhbSBwZ3BkYXRhCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIGFkZChQR1BEYXRhIHBncGRhdGEpIHsKKyAgICAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQocGdwZGF0YS5nZXRFbGVtZW50KCkpOworICAgICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBhZGRSZXRyaWV2YWxNZXRob2QKKyAgICAqCisgICAgKiBAcGFyYW0gVVJJCisgICAgKiBAcGFyYW0gdHJhbnNmb3JtcworICAgICogQHBhcmFtIFR5cGUgIAorICAgICovCisgICBwdWJsaWMgdm9pZCBhZGRSZXRyaWV2YWxNZXRob2QoU3RyaW5nIFVSSSwgVHJhbnNmb3JtcyB0cmFuc2Zvcm1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBUeXBlKSB7CisgICAgICB0aGlzLmFkZChuZXcgUmV0cmlldmFsTWV0aG9kKHRoaXMuX2RvYywgVVJJLCB0cmFuc2Zvcm1zLCBUeXBlKSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGFkZAorICAgICoKKyAgICAqIEBwYXJhbSByZXRyaWV2YWxtZXRob2QKKyAgICAqLworICAgcHVibGljIHZvaWQgYWRkKFJldHJpZXZhbE1ldGhvZCByZXRyaWV2YWxtZXRob2QpIHsKKyAgICAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQocmV0cmlldmFsbWV0aG9kLmdldEVsZW1lbnQoKSk7CisgICAgICAgICBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGFkZAorICAgICoKKyAgICAqIEBwYXJhbSBzcGtpZGF0YQorICAgICovCisgICBwdWJsaWMgdm9pZCBhZGQoU1BLSURhdGEgc3BraWRhdGEpIHsKKyAgICAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQoc3BraWRhdGEuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgIFhNTFV0aWxzLmFkZFJldHVyblRvRWxlbWVudCh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50KTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgYWRkWDUwOURhdGEKKyAgICAqCisgICAgKiBAcGFyYW0geDUwOWRhdGEKKyAgICAqLworICAgcHVibGljIHZvaWQgYWRkKFg1MDlEYXRhIHg1MDlkYXRhKSB7CisgICAgCSAgaWYgKHg1MDlEYXRhcz09bnVsbCkKKyAgICAJCSAgeDUwOURhdGFzPW5ldyBBcnJheUxpc3QoKTsKKyAgICAJICB4NTA5RGF0YXMuYWRkKHg1MDlkYXRhKTsKKyAgICAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQoeDUwOWRhdGEuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgIFhNTFV0aWxzLmFkZFJldHVyblRvRWxlbWVudCh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50KTsKKyAgIH0KKworCS8qKgorCSAqIE1ldGhvZCBhZGRFbmNyeXB0ZWRLZXkKKwkgKgorCSAqIEBwYXJhbSBlbmNyeXB0ZWRLZXkKKwkgKiBAdGhyb3dzIFhNTEVuY3J5cHRpb25FeGNlcHRpb24KKwkgKi8KKworCXB1YmxpYyB2b2lkIGFkZChFbmNyeXB0ZWRLZXkgZW5jcnlwdGVkS2V5KSAKKwkJdGhyb3dzIFhNTEVuY3J5cHRpb25FeGNlcHRpb24geworCQkJaWYgKGVuY3J5cHRlZEtleXM9PW51bGwpCisJCQkJZW5jcnlwdGVkS2V5cz1uZXcgQXJyYXlMaXN0KCk7CisJCQllbmNyeXB0ZWRLZXlzLmFkZChlbmNyeXB0ZWRLZXkpOworCQkJWE1MQ2lwaGVyIGNpcGhlciA9IFhNTENpcGhlci5nZXRJbnN0YW5jZSgpOworCQkJdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5hcHBlbmRDaGlsZChjaXBoZXIubWFydGlhbChlbmNyeXB0ZWRLZXkpKTsKKwl9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGFkZFVua25vd25FbGVtZW50CisgICAgKgorICAgICogQHBhcmFtIGVsZW1lbnQKKyAgICAqLworICAgcHVibGljIHZvaWQgYWRkVW5rbm93bkVsZW1lbnQoRWxlbWVudCBlbGVtZW50KSB7CisgICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBsZW5ndGhLZXlOYW1lCisgICAgKgorICAgICogQHJldHVybiB0aGUgbnVtYmVyIG9mIHRoZSBLZXlOYW1lIHRhZ3MKKyAgICAqLworICAgcHVibGljIGludCBsZW5ndGhLZXlOYW1lKCkgeworICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoKENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMsIENvbnN0YW50cy5fVEFHX0tFWU5BTUUpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBsZW5ndGhLZXlWYWx1ZQorICAgICoKKyAgICAqQHJldHVybiB0aGUgbnVtYmVyIG9mIHRoZSBLZXlWYWx1ZSB0YWdzCisgICAgKi8KKyAgIHB1YmxpYyBpbnQgbGVuZ3RoS2V5VmFsdWUoKSB7CisgICAgICByZXR1cm4gdGhpcy5sZW5ndGgoQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUywgQ29uc3RhbnRzLl9UQUdfS0VZVkFMVUUpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBsZW5ndGhNZ210RGF0YQorICAgICoKKyAgICAqQHJldHVybiB0aGUgbnVtYmVyIG9mIHRoZSBNZ210RGF0YSB0YWdzCisgICAgKi8KKyAgIHB1YmxpYyBpbnQgbGVuZ3RoTWdtdERhdGEoKSB7CisgICAgICByZXR1cm4gdGhpcy5sZW5ndGgoQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUywgQ29uc3RhbnRzLl9UQUdfTUdNVERBVEEpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBsZW5ndGhQR1BEYXRhCisgICAgKgorICAgICpAcmV0dXJuIHRoZSBudW1iZXIgb2YgdGhlIFBHUERhdC4gdGFncworICAgICovCisgICBwdWJsaWMgaW50IGxlbmd0aFBHUERhdGEoKSB7CisgICAgICByZXR1cm4gdGhpcy5sZW5ndGgoQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUywgQ29uc3RhbnRzLl9UQUdfUEdQREFUQSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGxlbmd0aFJldHJpZXZhbE1ldGhvZAorICAgICoKKyAgICAqQHJldHVybiB0aGUgbnVtYmVyIG9mIHRoZSBSZXRyaWV2YWxNZXRob2QgdGFncworICAgICovCisgICBwdWJsaWMgaW50IGxlbmd0aFJldHJpZXZhbE1ldGhvZCgpIHsKKyAgICAgIHJldHVybiB0aGlzLmxlbmd0aChDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TLAorICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5fVEFHX1JFVFJJRVZBTE1FVEhPRCk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGxlbmd0aFNQS0lEYXRhCisgICAgKgorICAgICpAcmV0dXJuIHRoZSBudW1iZXIgb2YgdGhlIFNQS0lEYXRhIHRhZ3MKKyAgICAqLworICAgcHVibGljIGludCBsZW5ndGhTUEtJRGF0YSgpIHsKKyAgICAgIHJldHVybiB0aGlzLmxlbmd0aChDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TLCBDb25zdGFudHMuX1RBR19TUEtJREFUQSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGxlbmd0aFg1MDlEYXRhCisgICAgKgorICAgICpAcmV0dXJuIHRoZSBudW1iZXIgb2YgdGhlIFg1MDlEYXRhIHRhZ3MKKyAgICAqLworICAgcHVibGljIGludCBsZW5ndGhYNTA5RGF0YSgpIHsKKwkgICBpZiAoeDUwOURhdGFzIT1udWxsKSB7CisJCSAgIHJldHVybiB4NTA5RGF0YXMuc2l6ZSgpOyAKKwkgICB9CisgICAgICByZXR1cm4gdGhpcy5sZW5ndGgoQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUywgQ29uc3RhbnRzLl9UQUdfWDUwOURBVEEpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBsZW5ndGhVbmtub3duRWxlbWVudAorICAgICogTk9URSBwb3NpYmx5IGJ1Z2d5LgorICAgICpAcmV0dXJuIHRoZSBudW1iZXIgb2YgdGhlIFVua25vd25FbGVtZW50IHRhZ3MKKyAgICAqLworICAgcHVibGljIGludCBsZW5ndGhVbmtub3duRWxlbWVudCgpIHsKKworICAgICAgaW50IHJlcyA9IDA7CisgICAgICBOb2RlTGlzdCBubCA9IHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0Q2hpbGROb2RlcygpOworCisgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG5sLmdldExlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgIE5vZGUgY3VycmVudCA9IG5sLml0ZW0oaSk7CisKKyAgICAgICAgIC8qKgorICAgICAgICAgICogJHRvZG8kIHVzaW5nIHRoaXMgbWV0aG9kLCB3ZSBkb24ndCBzZWUgdW5rbm93biBFbGVtZW50cworICAgICAgICAgICogIGZyb20gU2lnbmF0dXJlIE5TOyByZXZpc2l0CisgICAgICAgICAgKi8KKyAgICAgICAgIGlmICgoY3VycmVudC5nZXROb2RlVHlwZSgpID09IE5vZGUuRUxFTUVOVF9OT0RFKQorICAgICAgICAgICAgICAgICAmJiBjdXJyZW50LmdldE5hbWVzcGFjZVVSSSgpCisgICAgICAgICAgICAgICAgICAgIC5lcXVhbHMoQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUykpIHsKKyAgICAgICAgICAgIHJlcysrOworICAgICAgICAgfQorICAgICAgfQorCisgICAgICByZXR1cm4gcmVzOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBpdGVtS2V5TmFtZQorICAgICoKKyAgICAqIEBwYXJhbSBpCisgICAgKiBAcmV0dXJuIHRoZSBhc2tlZCBLZXlOYW1lIGVsZW1lbnQsIG51bGwgaWYgdGhlIGluZGV4IGlzIHRvbyBiaWcKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIEtleU5hbWUgaXRlbUtleU5hbWUoaW50IGkpIHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisKKyAgICAgIEVsZW1lbnQgZSA9IFhNTFV0aWxzLnNlbGVjdERzTm9kZSh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmdldEZpcnN0Q2hpbGQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5fVEFHX0tFWU5BTUUsaSk7CisKKyAgICAgIGlmIChlICE9IG51bGwpIHsKKyAgICAgICAgIHJldHVybiBuZXcgS2V5TmFtZShlLCB0aGlzLl9iYXNlVVJJKTsKKyAgICAgIH0gCisgICAgICByZXR1cm4gbnVsbDsgICAgICAKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgaXRlbUtleVZhbHVlCisgICAgKgorICAgICogQHBhcmFtIGkKKyAgICAqIEByZXR1cm4gdGhlIGFza2VkIEtleVZhbHVlIGVsZW1lbnQsIG51bGwgaWYgdGhlIGluZGV4IGlzIHRvbyBiaWcKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIEtleVZhbHVlIGl0ZW1LZXlWYWx1ZShpbnQgaSkgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKworICAgICAgRWxlbWVudCBlID0gWE1MVXRpbHMuc2VsZWN0RHNOb2RlKHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLl9UQUdfS0VZVkFMVUUsaSk7CisKKyAgICAgIGlmIChlICE9IG51bGwpIHsKKyAgICAgICAgIHJldHVybiBuZXcgS2V5VmFsdWUoZSwgdGhpcy5fYmFzZVVSSSk7CisgICAgICB9IAorICAgICAgcmV0dXJuIG51bGw7ICAgICAgCisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGl0ZW1NZ210RGF0YQorICAgICoKKyAgICAqIEBwYXJhbSBpCisgICAgKkByZXR1cm4gdGhlIGFza2VkIE1nbXREYXRhIGVsZW1lbnQsIG51bGwgaWYgdGhlIGluZGV4IGlzIHRvbyBiaWcKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIE1nbXREYXRhIGl0ZW1NZ210RGF0YShpbnQgaSkgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKworICAgICAgRWxlbWVudCBlID0gWE1MVXRpbHMuc2VsZWN0RHNOb2RlKHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLl9UQUdfTUdNVERBVEEsaSk7CisKKyAgICAgIGlmIChlICE9IG51bGwpIHsKKyAgICAgICAgIHJldHVybiBuZXcgTWdtdERhdGEoZSwgdGhpcy5fYmFzZVVSSSk7CisgICAgICB9IAorICAgICAgIHJldHVybiBudWxsOyAgICAgIAorICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBpdGVtUEdQRGF0YQorICAgICoKKyAgICAqIEBwYXJhbSBpCisgICAgKkByZXR1cm4gdGhlIGFza2VkIFBHUERhdGEgZWxlbWVudCwgbnVsbCBpZiB0aGUgaW5kZXggaXMgdG9vIGJpZworICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgUEdQRGF0YSBpdGVtUEdQRGF0YShpbnQgaSkgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKworICAgICAgRWxlbWVudCBlID0gWE1MVXRpbHMuc2VsZWN0RHNOb2RlKHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLl9UQUdfUEdQREFUQSxpKTsKKworICAgICAgaWYgKGUgIT0gbnVsbCkgeworICAgICAgICAgcmV0dXJuIG5ldyBQR1BEYXRhKGUsIHRoaXMuX2Jhc2VVUkkpOworICAgICAgfSAKKyAgICAgIHJldHVybiBudWxsOyAgICAgIAorICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBpdGVtUmV0cmlldmFsTWV0aG9kCisgICAgKgorICAgICogQHBhcmFtIGkKKyAgICAqQHJldHVybiB0aGUgYXNrZWQgUmV0cmlldmFsTWV0aG9kIGVsZW1lbnQsIG51bGwgaWYgdGhlIGluZGV4IGlzIHRvbyBiaWcKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIFJldHJpZXZhbE1ldGhvZCBpdGVtUmV0cmlldmFsTWV0aG9kKGludCBpKQorICAgICAgICAgICB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworCisgICAgICBFbGVtZW50IGUgPSBYTUxVdGlscy5zZWxlY3REc05vZGUodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5nZXRGaXJzdENoaWxkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMuX1RBR19SRVRSSUVWQUxNRVRIT0QsaSk7CisKKyAgICAgIGlmIChlICE9IG51bGwpIHsKKyAgICAgICAgIHJldHVybiBuZXcgUmV0cmlldmFsTWV0aG9kKGUsIHRoaXMuX2Jhc2VVUkkpOworICAgICAgfSAKKyAgICAgIHJldHVybiBudWxsOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBpdGVtU1BLSURhdGEKKyAgICAqCisgICAgKiBAcGFyYW0gaQorICAgICpAcmV0dXJuIHRoZSBhc2tlZCBTUEtJRGF0YSBlbGVtZW50LCBudWxsIGlmIHRoZSBpbmRleCBpcyB0b28gYmlnCisgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBTUEtJRGF0YSBpdGVtU1BLSURhdGEoaW50IGkpIHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisKKyAgICAgIEVsZW1lbnQgZSA9IFhNTFV0aWxzLnNlbGVjdERzTm9kZSh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmdldEZpcnN0Q2hpbGQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5fVEFHX1NQS0lEQVRBLGkpOworCisgICAgICBpZiAoZSAhPSBudWxsKSB7CisgICAgICAgICByZXR1cm4gbmV3IFNQS0lEYXRhKGUsIHRoaXMuX2Jhc2VVUkkpOworICAgICAgfSAKKyAgICAgIHJldHVybiBudWxsOyAgICAgCisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGl0ZW1YNTA5RGF0YQorICAgICpAcmV0dXJuIHRoZSBhc2tlZCBYNTA5RGF0YSBlbGVtZW50LCBudWxsIGlmIHRoZSBpbmRleCBpcyB0b28gYmlnCisgICAgKiBAcGFyYW0gaQorICAgICoKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIFg1MDlEYXRhIGl0ZW1YNTA5RGF0YShpbnQgaSkgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKwkgICBpZiAoeDUwOURhdGFzIT1udWxsKSB7CisJCSAgIHJldHVybiAoWDUwOURhdGEpIHg1MDlEYXRhcy5nZXQoaSk7IAorCSAgIH0KKyAgICAgIEVsZW1lbnQgZSA9IFhNTFV0aWxzLnNlbGVjdERzTm9kZSh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmdldEZpcnN0Q2hpbGQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5fVEFHX1g1MDlEQVRBLGkpOworCisgICAgICBpZiAoZSAhPSBudWxsKSB7CisgICAgICAgICByZXR1cm4gbmV3IFg1MDlEYXRhKGUsIHRoaXMuX2Jhc2VVUkkpOworICAgICAgfSAKKyAgICAgIHJldHVybiBudWxsOworICAgfQorCisgICAvKioKKwkqIE1ldGhvZCBpdGVtRW5jcnlwdGVkS2V5CisJKgorCSogQHBhcmFtIGkKKwkqIEByZXR1cm4gdGhlIGFza2VkIEVuY3J5cHRlZEtleSBlbGVtZW50LCBudWxsIGlmIHRoZSBpbmRleCBpcyB0b28gYmlnCisJKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisJKi8KKworCXB1YmxpYyBFbmNyeXB0ZWRLZXkgaXRlbUVuY3J5cHRlZEtleShpbnQgaSkgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKwkJaWYgKGVuY3J5cHRlZEtleXMhPW51bGwpIHsKKwkJCXJldHVybiAoRW5jcnlwdGVkS2V5KSBlbmNyeXB0ZWRLZXlzLmdldChpKTsKKwkJfQorCQlFbGVtZW50IGUgPSAKKwkJCVhNTFV0aWxzLnNlbGVjdFhlbmNOb2RlKHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpLAorCQkJCQkJCQkJCSAgRW5jcnlwdGlvbkNvbnN0YW50cy5fVEFHX0VOQ1JZUFRFREtFWSxpKTsKKworCQlpZiAoZSAhPSBudWxsKSB7CisJCQlYTUxDaXBoZXIgY2lwaGVyID0gWE1MQ2lwaGVyLmdldEluc3RhbmNlKCk7CisJCQljaXBoZXIuaW5pdChYTUxDaXBoZXIuVU5XUkFQX01PREUsIG51bGwpOworCQkJcmV0dXJuIGNpcGhlci5sb2FkRW5jcnlwdGVkS2V5KGUpOworCQl9CisJCXJldHVybiBudWxsOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBpdGVtVW5rbm93bkVsZW1lbnQKKyAgICAqCisgICAgKiBAcGFyYW0gaSBpbmRleAorICAgICogQHJldHVybiB0aGUgZWxlbWVudCBudW1iZXIgb2YgdGhlIHVua25vd24gZWxlbWVucworICAgICovCisgICBwdWJsaWMgRWxlbWVudCBpdGVtVW5rbm93bkVsZW1lbnQoaW50IGkpIHsKKworICAgICAgTm9kZUxpc3QgbmwgPSB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmdldENoaWxkTm9kZXMoKTsKKyAgICAgIGludCByZXMgPSAwOworCisgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG5sLmdldExlbmd0aCgpOyBqKyspIHsKKyAgICAgICAgIE5vZGUgY3VycmVudCA9IG5sLml0ZW0oaik7CisKKyAgICAgICAgIC8qKgorICAgICAgICAgICogJHRvZG8kIHVzaW5nIHRoaXMgbWV0aG9kLCB3ZSBkb24ndCBzZWUgdW5rbm93biBFbGVtZW50cworICAgICAgICAgICogIGZyb20gU2lnbmF0dXJlIE5TOyByZXZpc2l0CisgICAgICAgICAgKi8KKyAgICAgICAgIGlmICgoY3VycmVudC5nZXROb2RlVHlwZSgpID09IE5vZGUuRUxFTUVOVF9OT0RFKQorICAgICAgICAgICAgICAgICAmJiBjdXJyZW50LmdldE5hbWVzcGFjZVVSSSgpCisgICAgICAgICAgICAgICAgICAgIC5lcXVhbHMoQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUykpIHsKKyAgICAgICAgICAgIHJlcysrOworCisgICAgICAgICAgICBpZiAocmVzID09IGkpIHsKKyAgICAgICAgICAgICAgIHJldHVybiAoRWxlbWVudCkgY3VycmVudDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgcmV0dXJuIG51bGw7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGlzRW1wdHkKKyAgICAqCisgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGVsZW1lbnQgaGFzIG5vIGRlc2NlZGFudHMuCisgICAgKi8KKyAgIHB1YmxpYyBib29sZWFuIGlzRW1wdHkoKSB7CisgICAgICByZXR1cm4gdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5nZXRGaXJzdENoaWxkKCk9PW51bGw7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGNvbnRhaW5zS2V5TmFtZQorICAgICoKKyAgICAqIEByZXR1cm4gSWYgdGhlIEtleUluZm8gY29udGFpbnMgYSBLZXlOYW1lIG5vZGUKKyAgICAqLworICAgcHVibGljIGJvb2xlYW4gY29udGFpbnNLZXlOYW1lKCkgeworICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoS2V5TmFtZSgpID4gMDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgY29udGFpbnNLZXlWYWx1ZQorICAgICoKKyAgICAqIEByZXR1cm4gSWYgdGhlIEtleUluZm8gY29udGFpbnMgYSBLZXlWYWx1ZSBub2RlCisgICAgKi8KKyAgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zS2V5VmFsdWUoKSB7CisgICAgICByZXR1cm4gdGhpcy5sZW5ndGhLZXlWYWx1ZSgpID4gMDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgY29udGFpbnNNZ210RGF0YQorICAgICoKKyAgICAqIEByZXR1cm4gSWYgdGhlIEtleUluZm8gY29udGFpbnMgYSBNZ210RGF0YSBub2RlCisgICAgKi8KKyAgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zTWdtdERhdGEoKSB7CisgICAgICByZXR1cm4gdGhpcy5sZW5ndGhNZ210RGF0YSgpID4gMDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgY29udGFpbnNQR1BEYXRhCisgICAgKgorICAgICogQHJldHVybiBJZiB0aGUgS2V5SW5mbyBjb250YWlucyBhIFBHUERhdGEgbm9kZQorICAgICovCisgICBwdWJsaWMgYm9vbGVhbiBjb250YWluc1BHUERhdGEoKSB7CisgICAgICByZXR1cm4gdGhpcy5sZW5ndGhQR1BEYXRhKCkgPiAwOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBjb250YWluc1JldHJpZXZhbE1ldGhvZAorICAgICoKKyAgICAqIEByZXR1cm4gSWYgdGhlIEtleUluZm8gY29udGFpbnMgYSBSZXRyaWV2YWxNZXRob2Qgbm9kZQorICAgICovCisgICBwdWJsaWMgYm9vbGVhbiBjb250YWluc1JldHJpZXZhbE1ldGhvZCgpIHsKKyAgICAgIHJldHVybiB0aGlzLmxlbmd0aFJldHJpZXZhbE1ldGhvZCgpID4gMDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgY29udGFpbnNTUEtJRGF0YQorICAgICoKKyAgICAqIEByZXR1cm4gSWYgdGhlIEtleUluZm8gY29udGFpbnMgYSBTUEtJRGF0YSBub2RlCisgICAgKi8KKyAgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zU1BLSURhdGEoKSB7CisgICAgICByZXR1cm4gdGhpcy5sZW5ndGhTUEtJRGF0YSgpID4gMDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgY29udGFpbnNVbmtub3duRWxlbWVudAorICAgICoKKyAgICAqIEByZXR1cm4gSWYgdGhlIEtleUluZm8gY29udGFpbnMgYSBVbmtub3duRWxlbWVudCBub2RlCisgICAgKi8KKyAgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zVW5rbm93bkVsZW1lbnQoKSB7CisgICAgICByZXR1cm4gdGhpcy5sZW5ndGhVbmtub3duRWxlbWVudCgpID4gMDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgY29udGFpbnNYNTA5RGF0YQorICAgICoKKyAgICAqIEByZXR1cm4gSWYgdGhlIEtleUluZm8gY29udGFpbnMgYSBYNTA5RGF0YSBub2RlCisgICAgKi8KKyAgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zWDUwOURhdGEoKSB7CisgICAgICByZXR1cm4gdGhpcy5sZW5ndGhYNTA5RGF0YSgpID4gMDsKKyAgIH0KKworICAgLyoqCisgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBwdWJsaWMga2V5LgorICAgICoKKyAgICAqIEByZXR1cm4gSWYgdGhlIEtleUluZm8gY29udGFpbnMgYSBQdWJsaWNLZXkgbm9kZQorICAgICogQHRocm93cyBLZXlSZXNvbHZlckV4Y2VwdGlvbgorICAgICovCisKKyAgIHB1YmxpYyBQdWJsaWNLZXkgZ2V0UHVibGljS2V5KCkgdGhyb3dzIEtleVJlc29sdmVyRXhjZXB0aW9uIHsKKworICAgICAgUHVibGljS2V5IHBrID0gdGhpcy5nZXRQdWJsaWNLZXlGcm9tSW50ZXJuYWxSZXNvbHZlcnMoKTsKKworICAgICAgaWYgKHBrICE9IG51bGwpIHsKKyAgICAgICAgIGxvZy5kZWJ1ZygiSSBjb3VsZCBmaW5kIGEga2V5IHVzaW5nIHRoZSBwZXItS2V5SW5mbyBrZXkgcmVzb2x2ZXJzIik7CisKKyAgICAgICAgIHJldHVybiBwazsKKyAgICAgIH0gCisgICAgICBsb2cuZGVidWcoIkkgY291bGRuJ3QgZmluZCBhIGtleSB1c2luZyB0aGUgcGVyLUtleUluZm8ga2V5IHJlc29sdmVycyIpOyAgICAgIAorCisgICAgICBwayA9IHRoaXMuZ2V0UHVibGljS2V5RnJvbVN0YXRpY1Jlc29sdmVycygpOworCisgICAgICBpZiAocGsgIT0gbnVsbCkgeworICAgICAgICAgbG9nLmRlYnVnKCJJIGNvdWxkIGZpbmQgYSBrZXkgdXNpbmcgdGhlIHN5c3RlbS13aWRlIGtleSByZXNvbHZlcnMiKTsKKworICAgICAgICAgcmV0dXJuIHBrOworICAgICAgfQorICAgICAgbG9nLmRlYnVnKCJJIGNvdWxkbid0IGZpbmQgYSBrZXkgdXNpbmcgdGhlIHN5c3RlbS13aWRlIGtleSByZXNvbHZlcnMiKTsgICAgICAKKworICAgICAgcmV0dXJuIG51bGw7CisgICB9CisKKyAgIC8qKgorICAgICogU2VhcmNoZXMgdGhlIGxpYnJhcnkgd2lkZSBrZXlyZXNvbHZlcnMgZm9yIHB1YmxpYyBrZXlzCisgICAgKgorICAgICogQHJldHVybiBUaGUgcHVibGljayBjb250YWluZWQgaW4gdGhpcyBOb2RlLgorICAgICogQHRocm93cyBLZXlSZXNvbHZlckV4Y2VwdGlvbgorICAgICovCisgICBQdWJsaWNLZXkgZ2V0UHVibGljS2V5RnJvbVN0YXRpY1Jlc29sdmVycygpIHRocm93cyBLZXlSZXNvbHZlckV4Y2VwdGlvbiB7CisJICBpbnQgbGVuZ3RoPUtleVJlc29sdmVyLmxlbmd0aCgpOworCSAgaW50IHN0b3JhZ2VMZW5ndGg9dGhpcy5fc3RvcmFnZVJlc29sdmVycy5zaXplKCk7CisJICBJdGVyYXRvciBpdD0gS2V5UmVzb2x2ZXIuaXRlcmF0b3IoKTsKKyAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgIEtleVJlc29sdmVyU3BpIGtleVJlc29sdmVyID0gKEtleVJlc29sdmVyU3BpKSBpdC5uZXh0KCk7CisgICAgICAgICBOb2RlIGN1cnJlbnRDaGlsZD10aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmdldEZpcnN0Q2hpbGQoKTsKKyAgICAgICAgIFN0cmluZyB1cmk9IHRoaXMuZ2V0QmFzZVVSSSgpOworICAgICAgICAgd2hpbGUgKGN1cnJlbnRDaGlsZCE9bnVsbCkgICAgICB7ICAgICAgIAorICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGlsZC5nZXROb2RlVHlwZSgpID09IE5vZGUuRUxFTUVOVF9OT0RFKSB7ICAgICAgICAgIAkgIAorICAgICAgICAgICAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBzdG9yYWdlTGVuZ3RoOyBrKyspIHsKKyAgICAgICAgICAgICAgICAgICAgIFN0b3JhZ2VSZXNvbHZlciBzdG9yYWdlID0KKyAgICAgICAgICAgICAgICAgICAgICAgIChTdG9yYWdlUmVzb2x2ZXIpIHRoaXMuX3N0b3JhZ2VSZXNvbHZlcnMuZ2V0KGspOworCisgICAgICAgICAgICAgICAgICAgICBQdWJsaWNLZXkgcGsgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5UmVzb2x2ZXIuZW5naW5lTG9va3VwQW5kUmVzb2x2ZVB1YmxpY0tleSgoRWxlbWVudCkgY3VycmVudENoaWxkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZSk7CisKKyAgICAgICAgICAgICAgICAgICAgIGlmIChwayAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIAkgS2V5UmVzb2x2ZXIuaGl0KGl0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGs7CisgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgICBjdXJyZW50Q2hpbGQ9Y3VycmVudENoaWxkLmdldE5leHRTaWJsaW5nKCk7CisgICAgICAgICB9ICAgICAgCisgICAgICB9CisgICAgICByZXR1cm4gbnVsbDsKKyAgIH0KKworICAgLyoqCisgICAgKiBTZWFyY2hlcyB0aGUgcGVyLUtleUluZm8ga2V5cmVzb2x2ZXJzIGZvciBwdWJsaWMga2V5cworICAgICoKKyAgICAqIEByZXR1cm4gVGhlIHB1YmxpY2sgY29udGFpbmVkIGluIHRoaXMgTm9kZS4KKyAgICAqIEB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24KKyAgICAqLworICAgUHVibGljS2V5IGdldFB1YmxpY0tleUZyb21JbnRlcm5hbFJlc29sdmVycygpIHRocm93cyBLZXlSZXNvbHZlckV4Y2VwdGlvbiB7CisJICBpbnQgbGVuZ3RoPWxlbmd0aEludGVybmFsS2V5UmVzb2x2ZXIoKTsKKwkgIGludCBzdG9yYWdlTGVuZ3RoPXRoaXMuX3N0b3JhZ2VSZXNvbHZlcnMuc2l6ZSgpOworICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgS2V5UmVzb2x2ZXJTcGkga2V5UmVzb2x2ZXIgPSB0aGlzLml0ZW1JbnRlcm5hbEtleVJlc29sdmVyKGkpOworICAgICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKQorICAgICAgICAgCWxvZy5kZWJ1ZygiVHJ5ICIgKyBrZXlSZXNvbHZlci5nZXRDbGFzcygpLmdldE5hbWUoKSk7CisKKyAgICAgICAgIE5vZGUgY3VycmVudENoaWxkPXRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpOworICAgICAgICAgU3RyaW5nIHVyaT10aGlzLmdldEJhc2VVUkkoKTsKKyAgICAgICAgIHdoaWxlIChjdXJyZW50Q2hpbGQhPW51bGwpICAgICAgeyAgICAKKyAgICAgICAgICAgIGlmIChjdXJyZW50Q2hpbGQuZ2V0Tm9kZVR5cGUoKSA9PSBOb2RlLkVMRU1FTlRfTk9ERSkgeyAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBzdG9yYWdlTGVuZ3RoOyBrKyspIHsKKyAgICAgICAgICAgICAgICAgICBTdG9yYWdlUmVzb2x2ZXIgc3RvcmFnZSA9CisgICAgICAgICAgICAgICAgICAgICAgKFN0b3JhZ2VSZXNvbHZlcikgdGhpcy5fc3RvcmFnZVJlc29sdmVycy5nZXQoayk7CisgICAgICAgICAgICAgICAgICAgUHVibGljS2V5IHBrID0ga2V5UmVzb2x2ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC5lbmdpbmVMb29rdXBBbmRSZXNvbHZlUHVibGljS2V5KChFbGVtZW50KSBjdXJyZW50Q2hpbGQsIHVyaSwgc3RvcmFnZSk7CisKKyAgICAgICAgICAgICAgICAgICAgIGlmIChwayAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBrOworICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgICAgY3VycmVudENoaWxkPWN1cnJlbnRDaGlsZC5nZXROZXh0U2libGluZygpOworICAgICAgICAgfQorICAgICAgfQorCisgICAgICByZXR1cm4gbnVsbDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0WDUwOUNlcnRpZmljYXRlCisgICAgKgorICAgICogQHJldHVybiBUaGUgY2VydGlmaWNhdGUgY29udGluZWQgaW4gdGhpcyBLZXlJbmZvCisgICAgKiBAdGhyb3dzIEtleVJlc29sdmVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBYNTA5Q2VydGlmaWNhdGUgZ2V0WDUwOUNlcnRpZmljYXRlKCkgdGhyb3dzIEtleVJlc29sdmVyRXhjZXB0aW9uIHsKKworICAgICAgLy8gRmlyc3Qgc2VhcmNoIHVzaW5nIHRoZSBpbmRpdmlkdWFsIHJlc29sdmVycyBmcm9tIHRoZSB1c2VyCisgICAgICBYNTA5Q2VydGlmaWNhdGUgY2VydCA9IHRoaXMuZ2V0WDUwOUNlcnRpZmljYXRlRnJvbUludGVybmFsUmVzb2x2ZXJzKCk7CisKKyAgICAgIGlmIChjZXJ0ICE9IG51bGwpIHsKKyAgICAgICAgIGxvZy5kZWJ1ZygKKyAgICAgICAgICAgICJJIGNvdWxkIGZpbmQgYSBYNTA5Q2VydGlmaWNhdGUgdXNpbmcgdGhlIHBlci1LZXlJbmZvIGtleSByZXNvbHZlcnMiKTsKKworICAgICAgICAgcmV0dXJuIGNlcnQ7CisgICAgICB9IAorICAgICAgbG9nLmRlYnVnKAorICAgICAgICAgICAgIkkgY291bGRuJ3QgZmluZCBhIFg1MDlDZXJ0aWZpY2F0ZSB1c2luZyB0aGUgcGVyLUtleUluZm8ga2V5IHJlc29sdmVycyIpOworICAgICAgCisKKyAgICAgIC8vIFRoZW4gdXNlIHRoZSBzeXN0ZW0td2lkZSBSZXNvbHZlcnMKKyAgICAgIGNlcnQgPSB0aGlzLmdldFg1MDlDZXJ0aWZpY2F0ZUZyb21TdGF0aWNSZXNvbHZlcnMoKTsKKworICAgICAgaWYgKGNlcnQgIT0gbnVsbCkgeworICAgICAgICAgbG9nLmRlYnVnKAorICAgICAgICAgICAgIkkgY291bGQgZmluZCBhIFg1MDlDZXJ0aWZpY2F0ZSB1c2luZyB0aGUgc3lzdGVtLXdpZGUga2V5IHJlc29sdmVycyIpOworCisgICAgICAgICByZXR1cm4gY2VydDsKKyAgICAgIH0gCisgICAgICBsb2cuZGVidWcoCisgICAgICAgICAgICAiSSBjb3VsZG4ndCBmaW5kIGEgWDUwOUNlcnRpZmljYXRlIHVzaW5nIHRoZSBzeXN0ZW0td2lkZSBrZXkgcmVzb2x2ZXJzIik7CisgICAgICAKKworICAgICAgcmV0dXJuIG51bGw7CisgICB9CisKKyAgIC8qKgorICAgICogVGhpcyBtZXRob2QgdXNlcyBlYWNoIFN5c3RlbS13aWRlIHtAbGluayBLZXlSZXNvbHZlcn0gdG8gc2VhcmNoIHRoZQorICAgICogY2hpbGQgZWxlbWVudHMuIEVhY2ggY29tYmluYXRpb24gb2Yge0BsaW5rIEtleVJlc29sdmVyfSBhbmQgY2hpbGQgZWxlbWVudAorICAgICogaXMgY2hlY2tlZCBhZ2FpbnN0IGFsbCB7QGxpbmsgU3RvcmFnZVJlc29sdmVyfXMuCisgICAgKgorICAgICogQHJldHVybiBUaGUgY2VydGlmaWNhdGUgY29udGluZWQgaW4gdGhpcyBLZXlJbmZvCisgICAgKiBAdGhyb3dzIEtleVJlc29sdmVyRXhjZXB0aW9uCisgICAgKi8KKyAgIFg1MDlDZXJ0aWZpY2F0ZSBnZXRYNTA5Q2VydGlmaWNhdGVGcm9tU3RhdGljUmVzb2x2ZXJzKCkKKyAgICAgICAgICAgdGhyb3dzIEtleVJlc29sdmVyRXhjZXB0aW9uIHsKKyAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkKKyAgICAgIAlsb2cuZGVidWcoIlN0YXJ0IGdldFg1MDlDZXJ0aWZpY2F0ZUZyb21TdGF0aWNSZXNvbHZlcnMoKSB3aXRoICIKKyAgICAgICAgICAgICAgICArIEtleVJlc29sdmVyLmxlbmd0aCgpICsgIiByZXNvbHZlcnMiKTsKKyAgICAgIFN0cmluZyB1cmk9dGhpcy5nZXRCYXNlVVJJKCk7CisgICAgICBpbnQgbGVuZ3RoPSBLZXlSZXNvbHZlci5sZW5ndGgoKTsKKyAgICAgIGludCBzdG9yYWdlTGVuZ3RoPXRoaXMuX3N0b3JhZ2VSZXNvbHZlcnMuc2l6ZSgpOyAgIAorICAgICAgSXRlcmF0b3IgaXQgPSBLZXlSZXNvbHZlci5pdGVyYXRvcigpOworICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPGxlbmd0aDsgaSsrKSB7CisgICAgICAgICBLZXlSZXNvbHZlclNwaSBrZXlSZXNvbHZlciA9IChLZXlSZXNvbHZlclNwaSkgaXQubmV4dCgpOworICAgICAgICAgWDUwOUNlcnRpZmljYXRlIGNlcnQ9IGFwcGx5Q3VycmVudFJlc29sdmVyKHVyaSwgc3RvcmFnZUxlbmd0aCwga2V5UmVzb2x2ZXIpOworICAgICAgICAgaWYgKGNlcnQhPW51bGwpIHsKKyAgICAgICAgCSBLZXlSZXNvbHZlci5oaXQoaXQpOworICAgICAgICAJIHJldHVybiBjZXJ0OworICAgICAgICAgfQorICAgICAgfQorICAgICAgcmV0dXJuIG51bGw7CisgICB9CisKKyAgIHByaXZhdGUgWDUwOUNlcnRpZmljYXRlIGFwcGx5Q3VycmVudFJlc29sdmVyKFN0cmluZyB1cmksIGludCBzdG9yYWdlTGVuZ3RoLCBLZXlSZXNvbHZlclNwaSBrZXlSZXNvbHZlcikgdGhyb3dzIEtleVJlc29sdmVyRXhjZXB0aW9uIHsKKwkgICBOb2RlIGN1cnJlbnRDaGlsZD10aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmdldEZpcnN0Q2hpbGQoKTsKKwkgICB3aGlsZSAoY3VycmVudENoaWxkIT1udWxsKSAgICAgIHsgICAgICAgCisJCSAgIGlmIChjdXJyZW50Q2hpbGQuZ2V0Tm9kZVR5cGUoKSA9PSBOb2RlLkVMRU1FTlRfTk9ERSkgeworCSAgICAgICBmb3IgKGludCBrID0gMDsgayA8IHN0b3JhZ2VMZW5ndGg7IGsrKykgeworCSAgICAgICAgICAgU3RvcmFnZVJlc29sdmVyIHN0b3JhZ2UgPQorCSAgICAgICAgICAgICAgKFN0b3JhZ2VSZXNvbHZlcikgdGhpcy5fc3RvcmFnZVJlc29sdmVycy5nZXQoayk7CisKKwkgICAgICAgICAgIFg1MDlDZXJ0aWZpY2F0ZSBjZXJ0ID0ga2V5UmVzb2x2ZXIKKwkgICAgICAgICAgICAgICAgLmVuZ2luZUxvb2t1cFJlc29sdmVYNTA5Q2VydGlmaWNhdGUoKEVsZW1lbnQpIGN1cnJlbnRDaGlsZCwgdXJpLAorCSAgICAgICAgICAgICAgICAJCXN0b3JhZ2UpOworCisJICAgICAgICAgICBpZiAoY2VydCAhPSBudWxsKSB7ICAgICAgICAgICAgICAgIAkgICAKKwkgICAgICAgICAgICAgICByZXR1cm4gY2VydDsKKwkgICAgICAgICAgfSAgICAgICAgICAgICAgICAgIAorCSAgICAgICB9ICAgICAgICAgICAgICAgCisJICAgIH0KKwkgICAgY3VycmVudENoaWxkPWN1cnJlbnRDaGlsZC5nZXROZXh0U2libGluZygpOworCSB9CisJIHJldHVybiBudWxsOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRYNTA5Q2VydGlmaWNhdGVGcm9tSW50ZXJuYWxSZXNvbHZlcnMKKyAgICAqCisgICAgKiBAcmV0dXJuIFRoZSBjZXJ0aWZpY2F0ZSBjb250aW5lZCBpbiB0aGlzIEtleUluZm8KKyAgICAqIEB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24KKyAgICAqLworICAgWDUwOUNlcnRpZmljYXRlIGdldFg1MDlDZXJ0aWZpY2F0ZUZyb21JbnRlcm5hbFJlc29sdmVycygpCisgICAgICAgICAgIHRocm93cyBLZXlSZXNvbHZlckV4Y2VwdGlvbiB7CisgICAgICBpZiAobG9nLmlzRGVidWdFbmFibGVkKCkpCisgICAgICAJbG9nLmRlYnVnKCJTdGFydCBnZXRYNTA5Q2VydGlmaWNhdGVGcm9tSW50ZXJuYWxSZXNvbHZlcnMoKSB3aXRoICIKKyAgICAgICAgICAgICAgICArIHRoaXMubGVuZ3RoSW50ZXJuYWxLZXlSZXNvbHZlcigpICsgIiByZXNvbHZlcnMiKTsKKyAgICAgIFN0cmluZyB1cmk9dGhpcy5nZXRCYXNlVVJJKCk7CisgICAgICBpbnQgc3RvcmFnZUxlbmd0aD10aGlzLl9zdG9yYWdlUmVzb2x2ZXJzLnNpemUoKTsKKyAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGhpcy5sZW5ndGhJbnRlcm5hbEtleVJlc29sdmVyKCk7IGkrKykgeworICAgICAgICAgS2V5UmVzb2x2ZXJTcGkga2V5UmVzb2x2ZXIgPSB0aGlzLml0ZW1JbnRlcm5hbEtleVJlc29sdmVyKGkpOworICAgICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKQorICAgICAgICAgCWxvZy5kZWJ1ZygiVHJ5ICIgKyBrZXlSZXNvbHZlci5nZXRDbGFzcygpLmdldE5hbWUoKSk7CisgICAgICAgICBYNTA5Q2VydGlmaWNhdGUgY2VydD0gYXBwbHlDdXJyZW50UmVzb2x2ZXIodXJpLCBzdG9yYWdlTGVuZ3RoLCBrZXlSZXNvbHZlcik7CisgICAgICAgICBpZiAoY2VydCE9bnVsbCkgeyAgICAgICAgCQorICAgICAgICAJIHJldHVybiBjZXJ0OworICAgICAgICAgfSAgICAgIAorICAgICAgfQorCisgICAgICByZXR1cm4gbnVsbDsKKyAgIH0KKworICAgLyoqCisgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgc2VjcmV0IChzeW1tZXRyaWMpIGtleS4gVGhpcyBpcyBmb3IgWE1MIEVuY3J5cHRpb24uCisgICAgKiBAcmV0dXJuIHRoZSBzZWNyZXQga2V5IGNvbnRhaW5lZCBpbiB0aGlzIEtleUluZm8KKyAgICAqIEB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIFNlY3JldEtleSBnZXRTZWNyZXRLZXkoKSB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24geworICAgICAgU2VjcmV0S2V5IHNrID0gdGhpcy5nZXRTZWNyZXRLZXlGcm9tSW50ZXJuYWxSZXNvbHZlcnMoKTsKKworICAgICAgaWYgKHNrICE9IG51bGwpIHsKKyAgICAgICAgIGxvZy5kZWJ1ZygiSSBjb3VsZCBmaW5kIGEgc2VjcmV0IGtleSB1c2luZyB0aGUgcGVyLUtleUluZm8ga2V5IHJlc29sdmVycyIpOworCisgICAgICAgICByZXR1cm4gc2s7CisgICAgICB9IAorICAgICAgbG9nLmRlYnVnKCJJIGNvdWxkbid0IGZpbmQgYSBzZWNyZXQga2V5IHVzaW5nIHRoZSBwZXItS2V5SW5mbyBrZXkgcmVzb2x2ZXJzIik7CisgICAgICAKKworICAgICAgc2sgPSB0aGlzLmdldFNlY3JldEtleUZyb21TdGF0aWNSZXNvbHZlcnMoKTsKKworICAgICAgaWYgKHNrICE9IG51bGwpIHsKKyAgICAgICAgIGxvZy5kZWJ1ZygiSSBjb3VsZCBmaW5kIGEgc2VjcmV0IGtleSB1c2luZyB0aGUgc3lzdGVtLXdpZGUga2V5IHJlc29sdmVycyIpOworCisgICAgICAgICByZXR1cm4gc2s7CisgICAgICB9IAorICAgICAgbG9nLmRlYnVnKCJJIGNvdWxkbid0IGZpbmQgYSBzZWNyZXQga2V5IHVzaW5nIHRoZSBzeXN0ZW0td2lkZSBrZXkgcmVzb2x2ZXJzIik7CisgICAgICAKKworICAgICAgcmV0dXJuIG51bGw7CisgICB9CisKKyAgIC8qKgorICAgICogU2VhcmNoZXMgdGhlIGxpYnJhcnkgd2lkZSBrZXlyZXNvbHZlcnMgZm9yIFNlY3JldCBrZXlzCisgICAgKgorICAgICogQHJldHVybiB0aGUgc2VjcmV0IGtleSBjb250YWluZWQgaW4gdGhpcyBLZXlJbmZvCisgICAgKiBAdGhyb3dzIEtleVJlc29sdmVyRXhjZXB0aW9uCisgICAgKi8KKworICAgU2VjcmV0S2V5IGdldFNlY3JldEtleUZyb21TdGF0aWNSZXNvbHZlcnMoKSB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24geworCSAgZmluYWwgaW50IGxlbmd0aD1LZXlSZXNvbHZlci5sZW5ndGgoKTsKKwkgIGludCBzdG9yYWdlTGVuZ3RoPXRoaXMuX3N0b3JhZ2VSZXNvbHZlcnMuc2l6ZSgpOworCSAgSXRlcmF0b3IgaXQgPSBLZXlSZXNvbHZlci5pdGVyYXRvcigpOworICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgS2V5UmVzb2x2ZXJTcGkga2V5UmVzb2x2ZXIgPSAoS2V5UmVzb2x2ZXJTcGkpIGl0Lm5leHQoKTsKKworICAgICAgICAgTm9kZSBjdXJyZW50Q2hpbGQ9dGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5nZXRGaXJzdENoaWxkKCk7CisgICAgICAgICBTdHJpbmcgdXJpPXRoaXMuZ2V0QmFzZVVSSSgpOworICAgICAgICAgd2hpbGUgKGN1cnJlbnRDaGlsZCE9bnVsbCkgICAgICB7ICAgIAorICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGlsZC5nZXROb2RlVHlwZSgpID09IE5vZGUuRUxFTUVOVF9OT0RFKSB7ICAgCisgICAgICAgICAgICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IHN0b3JhZ2VMZW5ndGg7IGsrKykgeworICAgICAgICAgICAgICAgICAgICAgU3RvcmFnZVJlc29sdmVyIHN0b3JhZ2UgPQorICAgICAgICAgICAgICAgICAgICAgICAgKFN0b3JhZ2VSZXNvbHZlcikgdGhpcy5fc3RvcmFnZVJlc29sdmVycy5nZXQoayk7CisKKyAgICAgICAgICAgICAgICAgICAgIFNlY3JldEtleSBzayA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlSZXNvbHZlci5lbmdpbmVMb29rdXBBbmRSZXNvbHZlU2VjcmV0S2V5KChFbGVtZW50KSBjdXJyZW50Q2hpbGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZSk7CisKKyAgICAgICAgICAgICAgICAgICAgIGlmIChzayAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2s7CisgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgICBjdXJyZW50Q2hpbGQ9Y3VycmVudENoaWxkLmdldE5leHRTaWJsaW5nKCk7CisgICAgICAgICB9CisgICAgICB9CisgICAgICByZXR1cm4gbnVsbDsKKyAgIH0KKworICAgLyoqCisgICAgKiBTZWFyY2hlcyB0aGUgcGVyLUtleUluZm8ga2V5cmVzb2x2ZXJzIGZvciBzZWNyZXQga2V5cworICAgICoKKyAgICAqIEByZXR1cm4gdGhlIHNlY3JldCBrZXkgY29udGFpbmVkIGluIHRoaXMgS2V5SW5mbworICAgICogQHRocm93cyBLZXlSZXNvbHZlckV4Y2VwdGlvbgorICAgICovCisKKyAgIFNlY3JldEtleSBnZXRTZWNyZXRLZXlGcm9tSW50ZXJuYWxSZXNvbHZlcnMoKSB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24geworCSAgIGludCBzdG9yYWdlTGVuZ3RoPXRoaXMuX3N0b3JhZ2VSZXNvbHZlcnMuc2l6ZSgpOworICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aEludGVybmFsS2V5UmVzb2x2ZXIoKTsgaSsrKSB7CisgICAgICAgICBLZXlSZXNvbHZlclNwaSBrZXlSZXNvbHZlciA9IHRoaXMuaXRlbUludGVybmFsS2V5UmVzb2x2ZXIoaSk7CisgICAgICAgICBpZiAobG9nLmlzRGVidWdFbmFibGVkKCkpCisgICAgICAgICAJbG9nLmRlYnVnKCJUcnkgIiArIGtleVJlc29sdmVyLmdldENsYXNzKCkuZ2V0TmFtZSgpKTsKKworICAgICAgICAgTm9kZSBjdXJyZW50Q2hpbGQ9dGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5nZXRGaXJzdENoaWxkKCk7CisgICAgICAgICBTdHJpbmcgdXJpPXRoaXMuZ2V0QmFzZVVSSSgpOworICAgICAgICAgd2hpbGUgKGN1cnJlbnRDaGlsZCE9bnVsbCkgICAgICB7ICAgIAorICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGlsZC5nZXROb2RlVHlwZSgpID09IE5vZGUuRUxFTUVOVF9OT0RFKSB7CisgICAgICAgICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IHN0b3JhZ2VMZW5ndGg7IGsrKykgeworICAgICAgICAgICAgICAgICAgICAgU3RvcmFnZVJlc29sdmVyIHN0b3JhZ2UgPQorICAgICAgICAgICAgICAgICAgICAgICAgKFN0b3JhZ2VSZXNvbHZlcikgdGhpcy5fc3RvcmFnZVJlc29sdmVycy5nZXQoayk7CisKKyAgICAgICAgICAgICAgICAgICAgIFNlY3JldEtleSBzayA9IGtleVJlc29sdmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAuZW5naW5lTG9va3VwQW5kUmVzb2x2ZVNlY3JldEtleSgoRWxlbWVudCkgY3VycmVudENoaWxkLCB1cmksIHN0b3JhZ2UpOworCisgICAgICAgICAgICAgICAgICAgICBpZiAoc2sgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNrOworICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0gICAgICAgICAgICAKKyAgICAgICAgICAgIGN1cnJlbnRDaGlsZD1jdXJyZW50Q2hpbGQuZ2V0TmV4dFNpYmxpbmcoKTsKKyAgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgcmV0dXJuIG51bGw7CisgICB9CisKKyAgIC8qKgorICAgICogU3RvcmVzIHRoZSBpbmRpdmlkdWFsIChwZXItS2V5SW5mbykge0BsaW5rIEtleVJlc29sdmVyfXMKKyAgICAqLworICAgTGlzdCBfaW50ZXJuYWxLZXlSZXNvbHZlcnMgPSBudWxsOworCisgICAvKioKKyAgICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gYWRkIGEgY3VzdG9tIHtAbGluayBLZXlSZXNvbHZlclNwaX0gdG8gYSBLZXlJbmZvCisgICAgKiBvYmplY3QuCisgICAgKgorICAgICogQHBhcmFtIHJlYWxLZXlSZXNvbHZlcgorICAgICovCisgICBwdWJsaWMgdm9pZCByZWdpc3RlckludGVybmFsS2V5UmVzb2x2ZXIoS2V5UmVzb2x2ZXJTcGkgcmVhbEtleVJlc29sdmVyKSB7CisJICAgaWYgKF9pbnRlcm5hbEtleVJlc29sdmVycz09bnVsbCkgeworCQkgICBfaW50ZXJuYWxLZXlSZXNvbHZlcnM9bmV3IEFycmF5TGlzdCgpOworCSAgIH0KKyAgICAgIHRoaXMuX2ludGVybmFsS2V5UmVzb2x2ZXJzLmFkZChyZWFsS2V5UmVzb2x2ZXIpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBsZW5ndGhJbnRlcm5hbEtleVJlc29sdmVyCisgICAgKiBAcmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIGtleQorICAgICovCisgICBpbnQgbGVuZ3RoSW50ZXJuYWxLZXlSZXNvbHZlcigpIHsKKwkgICBpZiAoX2ludGVybmFsS2V5UmVzb2x2ZXJzPT1udWxsKQorCQkgICByZXR1cm4gMDsKKyAgICAgIHJldHVybiB0aGlzLl9pbnRlcm5hbEtleVJlc29sdmVycy5zaXplKCk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGl0ZW1JbnRlcm5hbEtleVJlc29sdmVyCisgICAgKgorICAgICogQHBhcmFtIGkgdGhlIGluZGV4CisgICAgKiBAcmV0dXJuIHRoZSBLZXlSZXNvbHZlclNwaSBmb3IgdGhlIGluZGV4LgorICAgICovCisgICBLZXlSZXNvbHZlclNwaSBpdGVtSW50ZXJuYWxLZXlSZXNvbHZlcihpbnQgaSkgeworICAgICAgcmV0dXJuIChLZXlSZXNvbHZlclNwaSkgdGhpcy5faW50ZXJuYWxLZXlSZXNvbHZlcnMuZ2V0KGkpOworICAgfQorCisgICAvKiogRmllbGQgX3N0b3JhZ2VSZXNvbHZlcnMgKi8KKyAgIExpc3QgX3N0b3JhZ2VSZXNvbHZlcnMgPSBudWxsTGlzdDsKKworICAgLyoqCisgICAgKiBNZXRob2QgYWRkU3RvcmFnZVJlc29sdmVyCisgICAgKgorICAgICogQHBhcmFtIHN0b3JhZ2VSZXNvbHZlcgorICAgICovCisgICBwdWJsaWMgdm9pZCBhZGRTdG9yYWdlUmVzb2x2ZXIoU3RvcmFnZVJlc29sdmVyIHN0b3JhZ2VSZXNvbHZlcikgeworCSAgIGlmICAoX3N0b3JhZ2VSZXNvbHZlcnMgPT0gbnVsbExpc3QgICl7CisJCSAgIF9zdG9yYWdlUmVzb2x2ZXJzPW5ldyBBcnJheUxpc3QoKTsKKwkgICB9ICAgICAgCisgICAgICAgICB0aGlzLl9zdG9yYWdlUmVzb2x2ZXJzLmFkZChzdG9yYWdlUmVzb2x2ZXIpOworICAgICAgCisgICB9CisKKyAgIC8vSi0KKyAgIHN0YXRpYyBib29sZWFuIF9hbHJlYWR5SW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgIC8qKiBpbml0IHRoZSBrZXlpbmZvIChTdGlsbCBuZWVkZWQ/KSovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgaW5pdCgpIHsKKworICAgICAgaWYgKCFLZXlJbmZvLl9hbHJlYWR5SW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgIGlmIChLZXlJbmZvLmxvZyA9PSBudWxsKSB7CisKKyAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICogJHRvZG8kIHdoeSB0aGUgaGVsbCBkb2VzIHRoZSBzdGF0aWMgaW5pdGlhbGl6YXRpb24gZnJvbSB0aGUKKyAgICAgICAgICAgICAqICBzdGFydCBub3Qgd29yayA/CisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIEtleUluZm8ubG9nID0KKyAgICAgICAgICAgICAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeS5nZXRMb2coS2V5SW5mby5jbGFzcy5nZXROYW1lKCkpOworCisgICAgICAgICAgICBsb2cuZXJyb3IoIkhhZCB0byBhc3NpZ24gbG9nIGluIHRoZSBpbml0KCkgZnVuY3Rpb24iKTsKKyAgICAgICAgIH0KKworICAgICAgICAgLy8gS2V5SW5mby5fY29udGVudEhhbmRsZXJIYXNoID0gbmV3IEhhc2hNYXAoMTApOworICAgICAgICAgS2V5SW5mby5fYWxyZWFkeUluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwdWJsaWMgU3RyaW5nIGdldEJhc2VMb2NhbE5hbWUoKSB7CisgICAgICByZXR1cm4gQ29uc3RhbnRzLl9UQUdfS0VZSU5GTzsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL0tleVV0aWxzLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9LZXlVdGlscy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwZjM3ODYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9LZXlVdGlscy5qYXZhCkBAIC0wLDAgKzEsODQgQEAKKworLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5czsKKworCisKK2ltcG9ydCBqYXZhLmlvLlByaW50U3RyZWFtOworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHVibGljS2V5OworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmNvbnRlbnQuS2V5TmFtZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmNvbnRlbnQuS2V5VmFsdWU7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50Lk1nbXREYXRhOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC5YNTA5RGF0YTsKKworCisvKioKKyAqIFV0aWxpdHkgY2xhc3MgZm9yIGZvciA8Q09ERT5vcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzPC9DT0RFPiBwYWNrYWdlLgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGNsYXNzIEtleVV0aWxzIHsKKworICAgcHJpdmF0ZSBLZXlVdGlscygpIHsKKyAgICAgIC8vIG5vIGluc3RhbnRpYXRpb24KKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgcHJpbm91dEtleUluZm8KKyAgICAqCisgICAgKiBAcGFyYW0ga2kKKyAgICAqIEBwYXJhbSBvcworICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgcHJpbm91dEtleUluZm8oS2V5SW5mbyBraSwgUHJpbnRTdHJlYW0gb3MpCisgICAgICAgICAgIHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisKKyAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwga2kubGVuZ3RoS2V5TmFtZSgpOyBpKyspIHsKKyAgICAgICAgIEtleU5hbWUgeCA9IGtpLml0ZW1LZXlOYW1lKGkpOworCisgICAgICAgICBvcy5wcmludGxuKCJLZXlOYW1lKCIgKyBpICsgIik9XCIiICsgeC5nZXRLZXlOYW1lKCkgKyAiXCIiKTsKKyAgICAgIH0KKworICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBraS5sZW5ndGhLZXlWYWx1ZSgpOyBpKyspIHsKKyAgICAgICAgIEtleVZhbHVlIHggPSBraS5pdGVtS2V5VmFsdWUoaSk7CisgICAgICAgICBQdWJsaWNLZXkgcGsgPSB4LmdldFB1YmxpY0tleSgpOworCisgICAgICAgICBvcy5wcmludGxuKCJLZXlWYWx1ZSBOci4gIiArIGkpOworICAgICAgICAgb3MucHJpbnRsbihwayk7CisgICAgICB9CisKKyAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwga2kubGVuZ3RoTWdtdERhdGEoKTsgaSsrKSB7CisgICAgICAgICBNZ210RGF0YSB4ID0ga2kuaXRlbU1nbXREYXRhKGkpOworCisgICAgICAgICBvcy5wcmludGxuKCJNZ210RGF0YSgiICsgaSArICIpPVwiIiArIHguZ2V0TWdtdERhdGEoKSArICJcIiIpOworICAgICAgfQorCisgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGtpLmxlbmd0aFg1MDlEYXRhKCk7IGkrKykgeworICAgICAgICAgWDUwOURhdGEgeCA9IGtpLml0ZW1YNTA5RGF0YShpKTsKKworICAgICAgICAgb3MucHJpbnRsbigiWDUwOURhdGEoIiArIGkgKyAiKT1cIiIgKyAoeC5jb250YWluc0NlcnRpZmljYXRlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gIkNlcnRpZmljYXRlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIiIpICsgKHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb250YWluc0lzc3VlclNlcmlhbCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICJJc3N1ZXJTZXJpYWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiIikgKyAiXCIiKTsKKyAgICAgIH0KKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2NvbnRlbnQvS2V5SW5mb0NvbnRlbnQuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2NvbnRlbnQvS2V5SW5mb0NvbnRlbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTY2M2ZmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvY29udGVudC9LZXlJbmZvQ29udGVudC5qYXZhCkBAIC0wLDAgKzEsMzAgQEAKKworLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50OworCisKKworCisKKy8qKgorICogRW1wdHkgaW50ZXJmYWNlIGp1c3QgdG8gaWRlbnRpZnkgRWxlbWVudHMgdGhhdCBjYW4gYmUgY2lsZHJlbiBvZiBkczpLZXlJbmZvLgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGludGVyZmFjZSBLZXlJbmZvQ29udGVudCB7Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9jb250ZW50L0tleU5hbWUuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2NvbnRlbnQvS2V5TmFtZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzZTgyYWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9jb250ZW50L0tleU5hbWUuamF2YQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmNvbnRlbnQ7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLlhNTFNlY3VyaXR5RXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5TaWduYXR1cmVFbGVtZW50UHJveHk7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworLyoqCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICovCitwdWJsaWMgY2xhc3MgS2V5TmFtZSBleHRlbmRzIFNpZ25hdHVyZUVsZW1lbnRQcm94eSBpbXBsZW1lbnRzIEtleUluZm9Db250ZW50IHsKKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBLZXlOYW1lCisgICAgKgorICAgICogQHBhcmFtIGVsZW1lbnQKKyAgICAqIEBwYXJhbSBCYXNlVVJJCisgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBLZXlOYW1lKEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIEJhc2VVUkkpIHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisgICAgICBzdXBlcihlbGVtZW50LCBCYXNlVVJJKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBLZXlOYW1lCisgICAgKgorICAgICogQHBhcmFtIGRvYworICAgICogQHBhcmFtIGtleU5hbWUKKyAgICAqLworICAgcHVibGljIEtleU5hbWUoRG9jdW1lbnQgZG9jLCBTdHJpbmcga2V5TmFtZSkgeworCisgICAgICBzdXBlcihkb2MpOworCisgICAgICB0aGlzLmFkZFRleHQoa2V5TmFtZSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGdldEtleU5hbWUKKyAgICAqCisgICAgKiBAcmV0dXJuIGtleSBuYW1lCisgICAgKi8KKyAgIHB1YmxpYyBTdHJpbmcgZ2V0S2V5TmFtZSgpIHsKKyAgICAgIHJldHVybiB0aGlzLmdldFRleHRGcm9tVGV4dENoaWxkKCk7CisgICB9CisKKyAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgcHVibGljIFN0cmluZyBnZXRCYXNlTG9jYWxOYW1lKCkgeworICAgICAgcmV0dXJuIENvbnN0YW50cy5fVEFHX0tFWU5BTUU7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9jb250ZW50L0tleVZhbHVlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9jb250ZW50L0tleVZhbHVlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY0YjE5MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2NvbnRlbnQvS2V5VmFsdWUuamF2YQpAQCAtMCwwICsxLDE1NyBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50OworCitpbXBvcnQgamF2YS5zZWN1cml0eS5QdWJsaWNLZXk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLlhNTFNlY3VyaXR5RXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC5rZXl2YWx1ZXMuRFNBS2V5VmFsdWU7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50LmtleXZhbHVlcy5SU0FLZXlWYWx1ZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuU2lnbmF0dXJlRWxlbWVudFByb3h5OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CisKKy8qKgorICogVGhlIEtleVZhbHVlIGVsZW1lbnQgY29udGFpbnMgYSBzaW5nbGUgcHVibGljIGtleSB0aGF0IG1heSBiZSB1c2VmdWwgaW4KKyAqIHZhbGlkYXRpbmcgdGhlIHNpZ25hdHVyZS4gU3RydWN0dXJlZCBmb3JtYXRzIGZvciBkZWZpbmluZyBEU0EgKFJFUVVJUkVEKQorICogYW5kIFJTQSAoUkVDT01NRU5ERUQpIHB1YmxpYyBrZXlzIGFyZSBkZWZpbmVkIGluIFNpZ25hdHVyZSBBbGdvcml0aG1zCisgKiAoc2VjdGlvbiA2LjQpLiBUaGUgS2V5VmFsdWUgZWxlbWVudCBtYXkgaW5jbHVkZSBleHRlcm5hbGx5IGRlZmluZWQgcHVibGljCisgKiBrZXlzIHZhbHVlcyByZXByZXNlbnRlZCBhcyBQQ0RBVEEgb3IgZWxlbWVudCB0eXBlcyBmcm9tIGFuIGV4dGVybmFsIAorICogbmFtZXNwYWNlLgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGNsYXNzIEtleVZhbHVlIGV4dGVuZHMgU2lnbmF0dXJlRWxlbWVudFByb3h5IGltcGxlbWVudHMgS2V5SW5mb0NvbnRlbnQgeworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IgS2V5VmFsdWUKKyAgICAgKgorICAgICAqIEBwYXJhbSBkb2MKKyAgICAgKiBAcGFyYW0gZHNhS2V5VmFsdWUKKyAgICAgKi8KKyAgICBwdWJsaWMgS2V5VmFsdWUoRG9jdW1lbnQgZG9jLCBEU0FLZXlWYWx1ZSBkc2FLZXlWYWx1ZSkgeworCisgICAgICAgIHN1cGVyKGRvYyk7CisKKyAgICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpOworICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmFwcGVuZENoaWxkKGRzYUtleVZhbHVlLmdldEVsZW1lbnQoKSk7CisgICAgICAgIFhNTFV0aWxzLmFkZFJldHVyblRvRWxlbWVudCh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RvciBLZXlWYWx1ZQorICAgICAqCisgICAgICogQHBhcmFtIGRvYworICAgICAqIEBwYXJhbSByc2FLZXlWYWx1ZQorICAgICAqLworICAgIHB1YmxpYyBLZXlWYWx1ZShEb2N1bWVudCBkb2MsIFJTQUtleVZhbHVlIHJzYUtleVZhbHVlKSB7CisKKyAgICAgICAgc3VwZXIoZG9jKTsKKworICAgICAgICBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCk7CisgICAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQocnNhS2V5VmFsdWUuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdG9yIEtleVZhbHVlCisgICAgICoKKyAgICAgKiBAcGFyYW0gZG9jCisgICAgICogQHBhcmFtIHVua25vd25LZXlWYWx1ZQorICAgICAqLworICAgIHB1YmxpYyBLZXlWYWx1ZShEb2N1bWVudCBkb2MsIEVsZW1lbnQgdW5rbm93bktleVZhbHVlKSB7CisKKyAgICAgICAgc3VwZXIoZG9jKTsKKworICAgICAgICBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCk7CisgICAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQodW5rbm93bktleVZhbHVlKTsKKyAgICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdG9yIEtleVZhbHVlCisgICAgICoKKyAgICAgKiBAcGFyYW0gZG9jCisgICAgICogQHBhcmFtIHBrCisgICAgICovCisgICAgcHVibGljIEtleVZhbHVlKERvY3VtZW50IGRvYywgUHVibGljS2V5IHBrKSB7CisKKyAgICAgICAgc3VwZXIoZG9jKTsKKworICAgICAgICBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCk7CisKKyAgICAgICAgaWYgKHBrIGluc3RhbmNlb2YgamF2YS5zZWN1cml0eS5pbnRlcmZhY2VzLkRTQVB1YmxpY0tleSkgeworICAgICAgICAgICAgRFNBS2V5VmFsdWUgZHNhID0gbmV3IERTQUtleVZhbHVlKHRoaXMuX2RvYywgcGspOworCisgICAgICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmFwcGVuZENoaWxkKGRzYS5nZXRFbGVtZW50KCkpOworICAgICAgICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpOworICAgICAgICB9IGVsc2UgaWYgKHBrIGluc3RhbmNlb2YgamF2YS5zZWN1cml0eS5pbnRlcmZhY2VzLlJTQVB1YmxpY0tleSkgeworICAgICAgICAgICAgUlNBS2V5VmFsdWUgcnNhID0gbmV3IFJTQUtleVZhbHVlKHRoaXMuX2RvYywgcGspOworCisgICAgICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmFwcGVuZENoaWxkKHJzYS5nZXRFbGVtZW50KCkpOworICAgICAgICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IgS2V5VmFsdWUKKyAgICAgKgorICAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIEtleVZhbHVlKEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIEJhc2VVUkkpCisgICAgICAgICAgIHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisgICAgICAgIHN1cGVyKGVsZW1lbnQsIEJhc2VVUkkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1ldGhvZCBnZXRQdWJsaWNLZXkKKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIHB1YmxpYyBrZXkKKyAgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIFB1YmxpY0tleSBnZXRQdWJsaWNLZXkoKSB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworCisJRWxlbWVudCByc2EgPSBYTUxVdGlscy5zZWxlY3REc05vZGUKKwkgICAgKHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpLAorCSAgICAgQ29uc3RhbnRzLl9UQUdfUlNBS0VZVkFMVUUsMCk7CisgICAgICAgICAKKwlpZiAocnNhICE9IG51bGwpIHsKKyAgICAgICAgICAgIFJTQUtleVZhbHVlIGt2ID0gbmV3IFJTQUtleVZhbHVlKHJzYSwgdGhpcy5fYmFzZVVSSSk7CisgICAgICAgICAgICByZXR1cm4ga3YuZ2V0UHVibGljS2V5KCk7CisJfQorCisJRWxlbWVudCBkc2EgPSBYTUxVdGlscy5zZWxlY3REc05vZGUKKwkgICAgKHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpLAorCSAgICAgQ29uc3RhbnRzLl9UQUdfRFNBS0VZVkFMVUUsMCk7CisKKwlpZiAoZHNhICE9IG51bGwpIHsKKyAgICAgICAgICAgIERTQUtleVZhbHVlIGt2ID0gbmV3IERTQUtleVZhbHVlKGRzYSwgdGhpcy5fYmFzZVVSSSk7CisgICAgICAgICAgICByZXR1cm4ga3YuZ2V0UHVibGljS2V5KCk7CisJfQorCisJcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgcHVibGljIFN0cmluZyBnZXRCYXNlTG9jYWxOYW1lKCkgeworICAgICAgICByZXR1cm4gQ29uc3RhbnRzLl9UQUdfS0VZVkFMVUU7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvY29udGVudC9NZ210RGF0YS5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvY29udGVudC9NZ210RGF0YS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjMjc5YmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9jb250ZW50L01nbXREYXRhLmphdmEKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50OworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuU2lnbmF0dXJlRWxlbWVudFByb3h5OworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CisKKy8qKgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGNsYXNzIE1nbXREYXRhIGV4dGVuZHMgU2lnbmF0dXJlRWxlbWVudFByb3h5IGltcGxlbWVudHMgS2V5SW5mb0NvbnRlbnQgeworCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIE1nbXREYXRhCisgICAgKgorICAgICogQHBhcmFtIGVsZW1lbnQKKyAgICAqIEBwYXJhbSBCYXNlVVJJCisgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBNZ210RGF0YShFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJKQorICAgICAgICAgICB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworICAgICAgc3VwZXIoZWxlbWVudCwgQmFzZVVSSSk7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgTWdtdERhdGEKKyAgICAqCisgICAgKiBAcGFyYW0gZG9jCisgICAgKiBAcGFyYW0gbWdtdERhdGEKKyAgICAqLworICAgcHVibGljIE1nbXREYXRhKERvY3VtZW50IGRvYywgU3RyaW5nIG1nbXREYXRhKSB7CisKKyAgICAgIHN1cGVyKGRvYyk7CisKKyAgICAgIHRoaXMuYWRkVGV4dChtZ210RGF0YSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGdldE1nbXREYXRhCisgICAgKgorICAgICogQHJldHVybiB0aGUgbWFuYWdtZW50IGRhdGEKKyAgICAqLworICAgcHVibGljIFN0cmluZyBnZXRNZ210RGF0YSgpIHsKKyAgICAgIHJldHVybiB0aGlzLmdldFRleHRGcm9tVGV4dENoaWxkKCk7CisgICB9CisKKyAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgcHVibGljIFN0cmluZyBnZXRCYXNlTG9jYWxOYW1lKCkgeworICAgICAgcmV0dXJuIENvbnN0YW50cy5fVEFHX01HTVREQVRBOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvY29udGVudC9QR1BEYXRhLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9jb250ZW50L1BHUERhdGEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTY5ZDRhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvY29udGVudC9QR1BEYXRhLmphdmEKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50OworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuU2lnbmF0dXJlRWxlbWVudFByb3h5OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CisKKy8qKgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqICR0b2RvJCBJbXBsZW1lbnQKKyAqLworcHVibGljIGNsYXNzIFBHUERhdGEgZXh0ZW5kcyBTaWduYXR1cmVFbGVtZW50UHJveHkgaW1wbGVtZW50cyBLZXlJbmZvQ29udGVudCB7CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgUEdQRGF0YQorICAgICoKKyAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgUEdQRGF0YShFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJKSB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworICAgICAgc3VwZXIoZWxlbWVudCwgQmFzZVVSSSk7CisgICB9CisKKyAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgcHVibGljIFN0cmluZyBnZXRCYXNlTG9jYWxOYW1lKCkgeworICAgICAgcmV0dXJuIENvbnN0YW50cy5fVEFHX1BHUERBVEE7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9jb250ZW50L1JldHJpZXZhbE1ldGhvZC5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvY29udGVudC9SZXRyaWV2YWxNZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjBmNjRjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvY29udGVudC9SZXRyaWV2YWxNZXRob2QuamF2YQpAQCAtMCwwICsxLDE0MyBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50OworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuU2lnbmF0dXJlRWxlbWVudFByb3h5OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworLyoqCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICovCitwdWJsaWMgY2xhc3MgUmV0cmlldmFsTWV0aG9kIGV4dGVuZHMgU2lnbmF0dXJlRWxlbWVudFByb3h5CisgICAgICAgIGltcGxlbWVudHMgS2V5SW5mb0NvbnRlbnQgeworCisgICAvL0otCisgICAgLyoqIERTQSByZXRyaWV2YWwgKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfRFNBICAgICA9IENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMgKyAiRFNBS2V5VmFsdWUiOworICAgLyoqIFJTQSByZXRyaWV2YWwgKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfUlNBICAgICA9IENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMgKyAiUlNBS2V5VmFsdWUiOworICAgLyoqIFBHUCByZXRyaWV2YWwgKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfUEdQICAgICA9IENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMgKyAiUEdQRGF0YSI7CisgICAvKiogU1BLSSByZXRyaWV2YWwgKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfU1BLSSAgICA9IENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMgKyAiU1BLSURhdGEiOworICAgLyoqIE1HTVQgcmV0cmlldmFsICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUWVBFX01HTVQgICAgPSBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TICsgIk1nbXREYXRhIjsKKyAgIC8qKiBYNTA5IHJldHJpZXZhbCAqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFlQRV9YNTA5ICAgID0gQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUyArICJYNTA5RGF0YSI7CisgICAvKiogUkFXWDUwOSByZXRyaWV2YWwgKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfUkFXWDUwOSA9IENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMgKyAicmF3WDUwOUNlcnRpZmljYXRlIjsKKyAgIC8vSisKKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBSZXRyaWV2YWxNZXRob2QKKyAgICAqCisgICAgKiBAcGFyYW0gZWxlbWVudAorICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIFJldHJpZXZhbE1ldGhvZChFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJKQorICAgICAgICAgICB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworICAgICAgc3VwZXIoZWxlbWVudCwgQmFzZVVSSSk7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgUmV0cmlldmFsTWV0aG9kCisgICAgKgorICAgICogQHBhcmFtIGRvYworICAgICogQHBhcmFtIFVSSQorICAgICogQHBhcmFtIHRyYW5zZm9ybXMKKyAgICAqIEBwYXJhbSBUeXBlCisgICAgKi8KKyAgIHB1YmxpYyBSZXRyaWV2YWxNZXRob2QoRG9jdW1lbnQgZG9jLCBTdHJpbmcgVVJJLCBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBUeXBlKSB7CisKKyAgICAgIHN1cGVyKGRvYyk7CisKKyAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuc2V0QXR0cmlidXRlTlMobnVsbCwgQ29uc3RhbnRzLl9BVFRfVVJJLCBVUkkpOworCisgICAgICBpZiAoVHlwZSAhPSBudWxsKSB7CisgICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LnNldEF0dHJpYnV0ZU5TKG51bGwsIENvbnN0YW50cy5fQVRUX1RZUEUsIFR5cGUpOworICAgICAgfQorCisgICAgICBpZiAodHJhbnNmb3JtcyAhPSBudWxsKSB7CisgICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmFwcGVuZENoaWxkKHRyYW5zZm9ybXMuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgIFhNTFV0aWxzLmFkZFJldHVyblRvRWxlbWVudCh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50KTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0VVJJQXR0cgorICAgICoKKyAgICAqIEByZXR1cm4gdGhlIFVSSSBhdHRyaWJ1dGUKKyAgICAqLworICAgcHVibGljIEF0dHIgZ2V0VVJJQXR0cigpIHsKKyAgICAgIHJldHVybiB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmdldEF0dHJpYnV0ZU5vZGVOUyhudWxsLCBDb25zdGFudHMuX0FUVF9VUkkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRVUkkKKyAgICAqCisgICAgKiAKKyAgICAqIEByZXR1cm4gVVJJIHN0cmluZworICAgICovCisgICBwdWJsaWMgU3RyaW5nIGdldFVSSSgpIHsKKyAgICAgIHJldHVybiB0aGlzLmdldFVSSUF0dHIoKS5nZXROb2RlVmFsdWUoKTsKKyAgIH0KKworICAgLyoqIEByZXR1cm4gdGhlIHR5cGUqLworICAgcHVibGljIFN0cmluZyBnZXRUeXBlKCkgeworICAgICAgcmV0dXJuIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0QXR0cmlidXRlTlMobnVsbCwgQ29uc3RhbnRzLl9BVFRfVFlQRSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGdldFRyYW5zZm9ybXMKKyAgICAqCisgICAgKgorICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICogQHJldHVybiB0aGUgdHJhbnNmb3JhbWl0b25zCisgICAgKi8KKyAgIHB1YmxpYyBUcmFuc2Zvcm1zIGdldFRyYW5zZm9ybXMoKSB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworCisgICAgICB0cnkgeworICAgICAgIEVsZW1lbnQgdHJhbnNmb3Jtc0VsZW0gPQorICAgICAgICAgICAgIFhNTFV0aWxzLnNlbGVjdERzTm9kZSh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmdldEZpcnN0Q2hpbGQoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5fVEFHX1RSQU5TRk9STVMsIDApOworCisgICAgICAgICBpZiAodHJhbnNmb3Jtc0VsZW0gIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1zKHRyYW5zZm9ybXNFbGVtLCB0aGlzLl9iYXNlVVJJKTsKKyAgICAgICAgIH0KKworICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICB9IGNhdGNoIChYTUxTaWduYXR1cmVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIHRocm93IG5ldyBYTUxTZWN1cml0eUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICB9CisgICB9CisgICAKKyAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgcHVibGljIFN0cmluZyBnZXRCYXNlTG9jYWxOYW1lKCkgeworICAgICAgcmV0dXJuIENvbnN0YW50cy5fVEFHX1JFVFJJRVZBTE1FVEhPRDsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2NvbnRlbnQvU1BLSURhdGEuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2NvbnRlbnQvU1BLSURhdGEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTYwOGY4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvY29udGVudC9TUEtJRGF0YS5qYXZhCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudDsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmV4Y2VwdGlvbnMuWE1MU2VjdXJpdHlFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlNpZ25hdHVyZUVsZW1lbnRQcm94eTsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworCisvKioKKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKiAkdG9kbyQgaW1wbGVtZW50CisgKi8KK3B1YmxpYyBjbGFzcyBTUEtJRGF0YSBleHRlbmRzIFNpZ25hdHVyZUVsZW1lbnRQcm94eSBpbXBsZW1lbnRzIEtleUluZm9Db250ZW50IHsKKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBTUEtJRGF0YQorICAgICoKKyAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgU1BLSURhdGEoRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSkKKyAgICAgICAgICAgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKyAgICAgIHN1cGVyKGVsZW1lbnQsIEJhc2VVUkkpOworICAgfQorCisgICAvKiogQGluaGVyaXREb2MgKi8KKyAgIHB1YmxpYyBTdHJpbmcgZ2V0QmFzZUxvY2FsTmFtZSgpIHsKKyAgICAgIHJldHVybiBDb25zdGFudHMuX1RBR19TUEtJREFUQTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2NvbnRlbnQvWDUwOURhdGEuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2NvbnRlbnQvWDUwOURhdGEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzJjYTY5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvY29udGVudC9YNTA5RGF0YS5qYXZhCkBAIC0wLDAgKzEsNDgwIEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmNvbnRlbnQ7CisKKworCitpbXBvcnQgamF2YS5tYXRoLkJpZ0ludGVnZXI7CitpbXBvcnQgamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmV4Y2VwdGlvbnMuWE1MU2VjdXJpdHlFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50Lng1MDkuWE1MWDUwOUNSTDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmNvbnRlbnQueDUwOS5YTUxYNTA5Q2VydGlmaWNhdGU7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50Lng1MDkuWE1MWDUwOUlzc3VlclNlcmlhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmNvbnRlbnQueDUwOS5YTUxYNTA5U0tJOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC54NTA5LlhNTFg1MDlTdWJqZWN0TmFtZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuU2lnbmF0dXJlRWxlbWVudFByb3h5OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKKworCisvKioKKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKi8KK3B1YmxpYyBjbGFzcyBYNTA5RGF0YSBleHRlbmRzIFNpZ25hdHVyZUVsZW1lbnRQcm94eSBpbXBsZW1lbnRzIEtleUluZm9Db250ZW50IHsKKworICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKFg1MDlEYXRhLmNsYXNzLmdldE5hbWUoKSk7CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgWDUwOURhdGEKKyAgICAqCisgICAgKiBAcGFyYW0gZG9jCisgICAgKi8KKyAgIHB1YmxpYyBYNTA5RGF0YShEb2N1bWVudCBkb2MpIHsKKworICAgICAgc3VwZXIoZG9jKTsKKworICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFg1MDlEYXRhCisgICAgKgorICAgICogQHBhcmFtIGVsZW1lbnQKKyAgICAqIEBwYXJhbSBCYXNlVVJJCisgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBYNTA5RGF0YShFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJKQorICAgICAgICAgICB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworCisgICAgICBzdXBlcihlbGVtZW50LCBCYXNlVVJJKTsKKyAgICAgIE5vZGUgc2libGluZz10aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmdldEZpcnN0Q2hpbGQoKTsKKyAgICAgIHdoaWxlIChzaWJsaW5nIT1udWxsKSB7CisgICAgICAJIGlmIChzaWJsaW5nLmdldE5vZGVUeXBlKCkhPU5vZGUuRUxFTUVOVF9OT0RFKSB7CisgICAgICAJIAlzaWJsaW5nPXNpYmxpbmcuZ2V0TmV4dFNpYmxpbmcoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgfQorICAgICAgCSByZXR1cm47CisgICAgICB9CisgICAgICAvKiBObyBFbGVtZW50cyBmb3VuZCAqLworICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyAiRWxlbWVudHMiLCBDb25zdGFudHMuX1RBR19YNTA5REFUQSB9OworICAgICAgdGhyb3cgbmV3IFhNTFNlY3VyaXR5RXhjZXB0aW9uKCJ4bWwuV3JvbmdDb250ZW50IiwgZXhBcmdzKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgYWRkSXNzdWVyU2VyaWFsCisgICAgKgorICAgICogQHBhcmFtIFg1MDlJc3N1ZXJOYW1lCisgICAgKiBAcGFyYW0gWDUwOVNlcmlhbE51bWJlcgorICAgICovCisgICBwdWJsaWMgdm9pZCBhZGRJc3N1ZXJTZXJpYWwoU3RyaW5nIFg1MDlJc3N1ZXJOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ0ludGVnZXIgWDUwOVNlcmlhbE51bWJlcikgeworICAgICAgdGhpcy5hZGQobmV3IFhNTFg1MDlJc3N1ZXJTZXJpYWwodGhpcy5fZG9jLCBYNTA5SXNzdWVyTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFg1MDlTZXJpYWxOdW1iZXIpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgYWRkSXNzdWVyU2VyaWFsCisgICAgKgorICAgICogQHBhcmFtIFg1MDlJc3N1ZXJOYW1lCisgICAgKiBAcGFyYW0gWDUwOVNlcmlhbE51bWJlcgorICAgICovCisgICBwdWJsaWMgdm9pZCBhZGRJc3N1ZXJTZXJpYWwoU3RyaW5nIFg1MDlJc3N1ZXJOYW1lLCBTdHJpbmcgWDUwOVNlcmlhbE51bWJlcikgeworICAgICAgdGhpcy5hZGQobmV3IFhNTFg1MDlJc3N1ZXJTZXJpYWwodGhpcy5fZG9jLCBYNTA5SXNzdWVyTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFg1MDlTZXJpYWxOdW1iZXIpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgYWRkSXNzdWVyU2VyaWFsCisgICAgKgorICAgICogQHBhcmFtIFg1MDlJc3N1ZXJOYW1lCisgICAgKiBAcGFyYW0gWDUwOVNlcmlhbE51bWJlcgorICAgICovCisgICBwdWJsaWMgdm9pZCBhZGRJc3N1ZXJTZXJpYWwoU3RyaW5nIFg1MDlJc3N1ZXJOYW1lLCBpbnQgWDUwOVNlcmlhbE51bWJlcikgeworICAgICAgdGhpcy5hZGQobmV3IFhNTFg1MDlJc3N1ZXJTZXJpYWwodGhpcy5fZG9jLCBYNTA5SXNzdWVyTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFg1MDlTZXJpYWxOdW1iZXIpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgYWRkCisgICAgKgorICAgICogQHBhcmFtIHhtbFg1MDlJc3N1ZXJTZXJpYWwKKyAgICAqLworICAgcHVibGljIHZvaWQgYWRkKFhNTFg1MDlJc3N1ZXJTZXJpYWwgeG1sWDUwOUlzc3VlclNlcmlhbCkgeworCisgICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50CisgICAgICAgICAgICAuYXBwZW5kQ2hpbGQoeG1sWDUwOUlzc3VlclNlcmlhbC5nZXRFbGVtZW50KCkpOworICAgICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBhZGRTS0kKKyAgICAqCisgICAgKiBAcGFyYW0gc2tpQnl0ZXMKKyAgICAqLworICAgcHVibGljIHZvaWQgYWRkU0tJKGJ5dGVbXSBza2lCeXRlcykgeworICAgICAgdGhpcy5hZGQobmV3IFhNTFg1MDlTS0kodGhpcy5fZG9jLCBza2lCeXRlcykpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBhZGRTS0kKKyAgICAqCisgICAgKiBAcGFyYW0geDUwOWNlcnRpZmljYXRlCisgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIGFkZFNLSShYNTA5Q2VydGlmaWNhdGUgeDUwOWNlcnRpZmljYXRlKQorICAgICAgICAgICB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworICAgICAgdGhpcy5hZGQobmV3IFhNTFg1MDlTS0kodGhpcy5fZG9jLCB4NTA5Y2VydGlmaWNhdGUpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgYWRkCisgICAgKgorICAgICogQHBhcmFtIHhtbFg1MDlTS0kKKyAgICAqLworICAgcHVibGljIHZvaWQgYWRkKFhNTFg1MDlTS0kgeG1sWDUwOVNLSSkgeworICAgICAgICAgdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5hcHBlbmRDaGlsZCh4bWxYNTA5U0tJLmdldEVsZW1lbnQoKSk7CisgICAgICAgICBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGFkZFN1YmplY3ROYW1lCisgICAgKgorICAgICogQHBhcmFtIHN1YmplY3ROYW1lCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIGFkZFN1YmplY3ROYW1lKFN0cmluZyBzdWJqZWN0TmFtZSkgeworICAgICAgdGhpcy5hZGQobmV3IFhNTFg1MDlTdWJqZWN0TmFtZSh0aGlzLl9kb2MsIHN1YmplY3ROYW1lKSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGFkZFN1YmplY3ROYW1lCisgICAgKgorICAgICogQHBhcmFtIHg1MDljZXJ0aWZpY2F0ZQorICAgICovCisgICBwdWJsaWMgdm9pZCBhZGRTdWJqZWN0TmFtZShYNTA5Q2VydGlmaWNhdGUgeDUwOWNlcnRpZmljYXRlKSB7CisgICAgICB0aGlzLmFkZChuZXcgWE1MWDUwOVN1YmplY3ROYW1lKHRoaXMuX2RvYywgeDUwOWNlcnRpZmljYXRlKSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGFkZAorICAgICoKKyAgICAqIEBwYXJhbSB4bWxYNTA5U3ViamVjdE5hbWUKKyAgICAqLworICAgcHVibGljIHZvaWQgYWRkKFhNTFg1MDlTdWJqZWN0TmFtZSB4bWxYNTA5U3ViamVjdE5hbWUpIHsKKyAgICAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQoeG1sWDUwOVN1YmplY3ROYW1lLmdldEVsZW1lbnQoKSk7CisgICAgICAgICBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGFkZENlcnRpZmljYXRlCisgICAgKgorICAgICogQHBhcmFtIHg1MDljZXJ0aWZpY2F0ZQorICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgdm9pZCBhZGRDZXJ0aWZpY2F0ZShYNTA5Q2VydGlmaWNhdGUgeDUwOWNlcnRpZmljYXRlKQorICAgICAgICAgICB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworICAgICAgdGhpcy5hZGQobmV3IFhNTFg1MDlDZXJ0aWZpY2F0ZSh0aGlzLl9kb2MsIHg1MDljZXJ0aWZpY2F0ZSkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBhZGRDZXJ0aWZpY2F0ZQorICAgICoKKyAgICAqIEBwYXJhbSB4NTA5Y2VydGlmaWNhdGVCeXRlcworICAgICovCisgICBwdWJsaWMgdm9pZCBhZGRDZXJ0aWZpY2F0ZShieXRlW10geDUwOWNlcnRpZmljYXRlQnl0ZXMpIHsKKyAgICAgIHRoaXMuYWRkKG5ldyBYTUxYNTA5Q2VydGlmaWNhdGUodGhpcy5fZG9jLCB4NTA5Y2VydGlmaWNhdGVCeXRlcykpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBhZGQKKyAgICAqCisgICAgKiBAcGFyYW0geG1sWDUwOUNlcnRpZmljYXRlCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIGFkZChYTUxYNTA5Q2VydGlmaWNhdGUgeG1sWDUwOUNlcnRpZmljYXRlKSB7CisgICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmFwcGVuZENoaWxkKHhtbFg1MDlDZXJ0aWZpY2F0ZS5nZXRFbGVtZW50KCkpOworICAgICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBhZGRDUkwKKyAgICAqCisgICAgKiBAcGFyYW0gY3JsQnl0ZXMKKyAgICAqLworICAgcHVibGljIHZvaWQgYWRkQ1JMKGJ5dGVbXSBjcmxCeXRlcykgeworICAgICAgdGhpcy5hZGQobmV3IFhNTFg1MDlDUkwodGhpcy5fZG9jLCBjcmxCeXRlcykpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBhZGQKKyAgICAqCisgICAgKiBAcGFyYW0geG1sWDUwOUNSTAorICAgICovCisgICBwdWJsaWMgdm9pZCBhZGQoWE1MWDUwOUNSTCB4bWxYNTA5Q1JMKSB7CisgICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmFwcGVuZENoaWxkKHhtbFg1MDlDUkwuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgIFhNTFV0aWxzLmFkZFJldHVyblRvRWxlbWVudCh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50KTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgYWRkVW5rbm93bkVsZW1lbnQKKyAgICAqCisgICAgKiBAcGFyYW0gZWxlbWVudAorICAgICovCisgICBwdWJsaWMgdm9pZCBhZGRVbmtub3duRWxlbWVudChFbGVtZW50IGVsZW1lbnQpIHsKKyAgICAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgICAgICBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGxlbmd0aElzc3VlclNlcmlhbAorICAgICoKKyAgICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBJc3N1ZXJTZXJpYWwgZWxlbWVudHMgaW4gdGhpcyBYNTA5RGF0YQorICAgICovCisgICBwdWJsaWMgaW50IGxlbmd0aElzc3VlclNlcmlhbCgpIHsKKyAgICAgIHJldHVybiB0aGlzLmxlbmd0aChDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TLAorICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5fVEFHX1g1MDlJU1NVRVJTRVJJQUwpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBsZW5ndGhTS0kKKyAgICAqCisgICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgU0tJIGVsZW1lbnRzIGluIHRoaXMgWDUwOURhdGEKKyAgICAqLworICAgcHVibGljIGludCBsZW5ndGhTS0koKSB7CisgICAgICByZXR1cm4gdGhpcy5sZW5ndGgoQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUywgQ29uc3RhbnRzLl9UQUdfWDUwOVNLSSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGxlbmd0aFN1YmplY3ROYW1lCisgICAgKgorICAgICogQHJldHVybiB0aGUgbnVtYmVyIG9mIFN1YmplY3ROYW1lIGVsZW1lbnRzIGluIHRoaXMgWDUwOURhdGEKKyAgICAqLworICAgcHVibGljIGludCBsZW5ndGhTdWJqZWN0TmFtZSgpIHsKKyAgICAgIHJldHVybiB0aGlzLmxlbmd0aChDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TLAorICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5fVEFHX1g1MDlTVUJKRUNUTkFNRSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGxlbmd0aENlcnRpZmljYXRlCisgICAgKgorICAgICogQHJldHVybiB0aGUgbnVtYmVyIG9mIENlcnRpZmljYXRlIGVsZW1lbnRzIGluIHRoaXMgWDUwOURhdGEKKyAgICAqLworICAgcHVibGljIGludCBsZW5ndGhDZXJ0aWZpY2F0ZSgpIHsKKyAgICAgIHJldHVybiB0aGlzLmxlbmd0aChDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TLAorICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5fVEFHX1g1MDlDRVJUSUZJQ0FURSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGxlbmd0aENSTAorICAgICoKKyAgICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBDUkwgZWxlbWVudHMgaW4gdGhpcyBYNTA5RGF0YQorICAgICovCisgICBwdWJsaWMgaW50IGxlbmd0aENSTCgpIHsKKyAgICAgIHJldHVybiB0aGlzLmxlbmd0aChDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TLCBDb25zdGFudHMuX1RBR19YNTA5Q1JMKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgbGVuZ3RoVW5rbm93bkVsZW1lbnQKKyAgICAqCisgICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgVW5rbm93bkVsZW1lbnQgZWxlbWVudHMgaW4gdGhpcyBYNTA5RGF0YQorICAgICovCisgICBwdWJsaWMgaW50IGxlbmd0aFVua25vd25FbGVtZW50KCkgeworICAgICAgCisgICAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICAgIE5vZGUgbj10aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmdldEZpcnN0Q2hpbGQoKTsKKyAgICAgIHdoaWxlIChuIT1udWxsKXsgICAgICAgICAKKworICAgICAgICAgaWYgKChuLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5FTEVNRU5UX05PREUpCisgICAgICAgICAgICAgICAgICYmIW4uZ2V0TmFtZXNwYWNlVVJJKCkuZXF1YWxzKENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMpKSB7CisgICAgICAgICAgICByZXN1bHQgKz0gMTsKKyAgICAgICAgIH0KKyAgICAgICAgIG49bi5nZXROZXh0U2libGluZygpOworICAgICAgfQorICAgICAgCisgICAgICByZXR1cm4gcmVzdWx0OworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBpdGVtSXNzdWVyU2VyaWFsCisgICAgKgorICAgICogQHBhcmFtIGkKKyAgICAqIEByZXR1cm4gdGhlIFg1MDlJc3N1ZXJTZXJpYWwsIG51bGwgaWYgbm90IHByZXNlbnQKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIFhNTFg1MDlJc3N1ZXJTZXJpYWwgaXRlbUlzc3VlclNlcmlhbChpbnQgaSkKKyAgICAgICAgICAgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKworICAgICAgRWxlbWVudCBlID0KKyAgICAgICAgWE1MVXRpbHMuc2VsZWN0RHNOb2RlKHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLl9UQUdfWDUwOUlTU1VFUlNFUklBTCxpKTsKKworICAgICAgaWYgKGUgIT0gbnVsbCkgeworICAgICAgICAgcmV0dXJuIG5ldyBYTUxYNTA5SXNzdWVyU2VyaWFsKGUsIHRoaXMuX2Jhc2VVUkkpOworICAgICAgfSAKKyAgICAgIHJldHVybiBudWxsOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBpdGVtU0tJCisgICAgKgorICAgICogQHBhcmFtIGkKKyAgICAqIEByZXR1cm4gdGhlIFg1MDlTS0ksIG51bGwgaWYgbm90IHByZXNlbnQKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIFhNTFg1MDlTS0kgaXRlbVNLSShpbnQgaSkgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKworICAgICAgRWxlbWVudCBlID0gWE1MVXRpbHMuc2VsZWN0RHNOb2RlKHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLl9UQUdfWDUwOVNLSSxpKTsKKworICAgICAgaWYgKGUgIT0gbnVsbCkgeworICAgICAgICAgcmV0dXJuIG5ldyBYTUxYNTA5U0tJKGUsIHRoaXMuX2Jhc2VVUkkpOworICAgICAgfQorICAgICAgcmV0dXJuIG51bGw7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGl0ZW1TdWJqZWN0TmFtZQorICAgICoKKyAgICAqIEBwYXJhbSBpCisgICAgKiBAcmV0dXJuIHRoZSBYNTA5U3ViamVjdE5hbWUsIG51bGwgaWYgbm90IHByZXNlbnQKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIFhNTFg1MDlTdWJqZWN0TmFtZSBpdGVtU3ViamVjdE5hbWUoaW50IGkpCisgICAgICAgICAgIHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisKKyAgICAgIEVsZW1lbnQgZSA9IFhNTFV0aWxzLnNlbGVjdERzTm9kZSh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmdldEZpcnN0Q2hpbGQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5fVEFHX1g1MDlTVUJKRUNUTkFNRSxpKTsKKworICAgICAgaWYgKGUgIT0gbnVsbCkgeworICAgICAgICAgcmV0dXJuIG5ldyBYTUxYNTA5U3ViamVjdE5hbWUoZSwgdGhpcy5fYmFzZVVSSSk7CisgICAgICB9IAorICAgICAgIHJldHVybiBudWxsOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBpdGVtQ2VydGlmaWNhdGUKKyAgICAqCisgICAgKiBAcGFyYW0gaQorICAgICogQHJldHVybiB0aGUgWDUwOUNlcnRpZmFjdGUsIG51bGwgaWYgbm90IHByZXNlbnQKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIFhNTFg1MDlDZXJ0aWZpY2F0ZSBpdGVtQ2VydGlmaWNhdGUoaW50IGkpCisgICAgICAgICAgIHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisKKyAgICAgIEVsZW1lbnQgZSA9IFhNTFV0aWxzLnNlbGVjdERzTm9kZSh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmdldEZpcnN0Q2hpbGQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5fVEFHX1g1MDlDRVJUSUZJQ0FURSxpKTsKKworICAgICAgaWYgKGUgIT0gbnVsbCkgeworICAgICAgICAgcmV0dXJuIG5ldyBYTUxYNTA5Q2VydGlmaWNhdGUoZSwgdGhpcy5fYmFzZVVSSSk7CisgICAgICB9IAorICAgICAgIHJldHVybiBudWxsOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBpdGVtQ1JMCisgICAgKgorICAgICogQHBhcmFtIGkKKyAgICAqIEByZXR1cm4gdGhlIFg1MDlDUkwsIG51bGwgaWYgbm90IHByZXNlbnQKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIFhNTFg1MDlDUkwgaXRlbUNSTChpbnQgaSkgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKworICAgICAgRWxlbWVudCBlID0gWE1MVXRpbHMuc2VsZWN0RHNOb2RlKHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLl9UQUdfWDUwOUNSTCxpKTsKKworICAgICAgaWYgKGUgIT0gbnVsbCkgeworICAgICAgICAgcmV0dXJuIG5ldyBYTUxYNTA5Q1JMKGUsIHRoaXMuX2Jhc2VVUkkpOworICAgICAgfSAKKyAgICAgICByZXR1cm4gbnVsbDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgaXRlbVVua25vd25FbGVtZW50CisgICAgKgorICAgICogQHBhcmFtIGkKKyAgICAqIEByZXR1cm4gdGhlIFVua25vd24gRWxlbWVudCBhdCBpCisgICAgKiBUT0RPIGltcGxlbWVudAorICAgICoqLworICAgcHVibGljIEVsZW1lbnQgaXRlbVVua25vd25FbGVtZW50KGludCBpKSB7CisJICBsb2cuZGVidWcoIml0ZW1Vbmtub3duRWxlbWVudCBub3QgaW1wbGVtZW50ZWQ6IitpKTsKKyAgICAgIHJldHVybiBudWxsOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBjb250YWluc0lzc3VlclNlcmlhbAorICAgICoKKyAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGlzIFg1MDlEYXRhIGNvbnRhaW5zIGEgSXNzdWVyU2VyaWFsCisgICAgKi8KKyAgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zSXNzdWVyU2VyaWFsKCkgeworICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoSXNzdWVyU2VyaWFsKCkgPiAwOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBjb250YWluc1NLSQorICAgICoKKyAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGlzIFg1MDlEYXRhIGNvbnRhaW5zIGEgU0tJCisgICAgKi8KKyAgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zU0tJKCkgeworICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoU0tJKCkgPiAwOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBjb250YWluc1N1YmplY3ROYW1lCisgICAgKgorICAgICogQHJldHVybiB0cnVlIGlmIHRoaXMgWDUwOURhdGEgY29udGFpbnMgYSBTdWJqZWN0TmFtZQorICAgICovCisgICBwdWJsaWMgYm9vbGVhbiBjb250YWluc1N1YmplY3ROYW1lKCkgeworICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoU3ViamVjdE5hbWUoKSA+IDA7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGNvbnRhaW5zQ2VydGlmaWNhdGUKKyAgICAqCisgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhpcyBYNTA5RGF0YSBjb250YWlucyBhIENlcnRpZmljYXRlCisgICAgKi8KKyAgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zQ2VydGlmaWNhdGUoKSB7CisgICAgICByZXR1cm4gdGhpcy5sZW5ndGhDZXJ0aWZpY2F0ZSgpID4gMDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgY29udGFpbnNDUkwKKyAgICAqCisgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhpcyBYNTA5RGF0YSBjb250YWlucyBhIENSTAorICAgICovCisgICBwdWJsaWMgYm9vbGVhbiBjb250YWluc0NSTCgpIHsKKyAgICAgIHJldHVybiB0aGlzLmxlbmd0aENSTCgpID4gMDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgY29udGFpbnNVbmtub3duRWxlbWVudAorICAgICoKKyAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGlzIFg1MDlEYXRhIGNvbnRhaW5zIGFuIFVua25vd25FbGVtZW50CisgICAgKi8KKyAgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zVW5rbm93bkVsZW1lbnQoKSB7CisgICAgICByZXR1cm4gdGhpcy5sZW5ndGhVbmtub3duRWxlbWVudCgpID4gMDsKKyAgIH0KKworICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwdWJsaWMgU3RyaW5nIGdldEJhc2VMb2NhbE5hbWUoKSB7CisgICAgICByZXR1cm4gQ29uc3RhbnRzLl9UQUdfWDUwOURBVEE7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9jb250ZW50L2tleXZhbHVlcy9EU0FLZXlWYWx1ZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvY29udGVudC9rZXl2YWx1ZXMvRFNBS2V5VmFsdWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmJhZTJhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvY29udGVudC9rZXl2YWx1ZXMvRFNBS2V5VmFsdWUuamF2YQpAQCAtMCwwICsxLDEzNiBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50LmtleXZhbHVlczsKKworaW1wb3J0IGphdmEubWF0aC5CaWdJbnRlZ2VyOworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5RmFjdG9yeTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlB1YmxpY0tleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmludGVyZmFjZXMuRFNBUHVibGljS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuc3BlYy5EU0FQdWJsaWNLZXlTcGVjOworaW1wb3J0IGphdmEuc2VjdXJpdHkuc3BlYy5JbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbjsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmV4Y2VwdGlvbnMuWE1MU2VjdXJpdHlFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkkxOG47CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuU2lnbmF0dXJlRWxlbWVudFByb3h5OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CisKKy8qKgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGNsYXNzIERTQUtleVZhbHVlIGV4dGVuZHMgU2lnbmF0dXJlRWxlbWVudFByb3h5CisgICAgICAgIGltcGxlbWVudHMgS2V5VmFsdWVDb250ZW50IHsKKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBEU0FLZXlWYWx1ZQorICAgICoKKyAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgRFNBS2V5VmFsdWUoRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSkKKyAgICAgICAgICAgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKyAgICAgIHN1cGVyKGVsZW1lbnQsIEJhc2VVUkkpOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIERTQUtleVZhbHVlCisgICAgKgorICAgICogQHBhcmFtIGRvYworICAgICogQHBhcmFtIFAKKyAgICAqIEBwYXJhbSBRCisgICAgKiBAcGFyYW0gRworICAgICogQHBhcmFtIFkKKyAgICAqLworICAgcHVibGljIERTQUtleVZhbHVlKERvY3VtZW50IGRvYywgQmlnSW50ZWdlciBQLCBCaWdJbnRlZ2VyIFEsIEJpZ0ludGVnZXIgRywKKyAgICAgICAgICAgICAgICAgICAgICBCaWdJbnRlZ2VyIFkpIHsKKworICAgICAgc3VwZXIoZG9jKTsKKworICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpOworICAgICAgdGhpcy5hZGRCaWdJbnRlZ2VyRWxlbWVudChQLCBDb25zdGFudHMuX1RBR19QKTsKKyAgICAgIHRoaXMuYWRkQmlnSW50ZWdlckVsZW1lbnQoUSwgQ29uc3RhbnRzLl9UQUdfUSk7CisgICAgICB0aGlzLmFkZEJpZ0ludGVnZXJFbGVtZW50KEcsIENvbnN0YW50cy5fVEFHX0cpOworICAgICAgdGhpcy5hZGRCaWdJbnRlZ2VyRWxlbWVudChZLCBDb25zdGFudHMuX1RBR19ZKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBEU0FLZXlWYWx1ZQorICAgICoKKyAgICAqIEBwYXJhbSBkb2MKKyAgICAqIEBwYXJhbSBrZXkKKyAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBEU0FLZXlWYWx1ZShEb2N1bWVudCBkb2MsIEtleSBrZXkpIHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24geworCisgICAgICBzdXBlcihkb2MpOworCisgICAgICBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCk7CisKKyAgICAgIGlmIChrZXkgaW5zdGFuY2VvZiBqYXZhLnNlY3VyaXR5LmludGVyZmFjZXMuRFNBUHVibGljS2V5KSB7CisgICAgICAgICB0aGlzLmFkZEJpZ0ludGVnZXJFbGVtZW50KCgoRFNBUHVibGljS2V5KSBrZXkpLmdldFBhcmFtcygpLmdldFAoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLl9UQUdfUCk7CisgICAgICAgICB0aGlzLmFkZEJpZ0ludGVnZXJFbGVtZW50KCgoRFNBUHVibGljS2V5KSBrZXkpLmdldFBhcmFtcygpLmdldFEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLl9UQUdfUSk7CisgICAgICAgICB0aGlzLmFkZEJpZ0ludGVnZXJFbGVtZW50KCgoRFNBUHVibGljS2V5KSBrZXkpLmdldFBhcmFtcygpLmdldEcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLl9UQUdfRyk7CisgICAgICAgICB0aGlzLmFkZEJpZ0ludGVnZXJFbGVtZW50KCgoRFNBUHVibGljS2V5KSBrZXkpLmdldFkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLl9UQUdfWSk7CisgICAgICB9IGVsc2UgeworICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyBDb25zdGFudHMuX1RBR19EU0FLRVlWQUxVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LmdldENsYXNzKCkuZ2V0TmFtZSgpIH07CisKKyAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oSTE4bgorICAgICAgICAgICAgLnRyYW5zbGF0ZSgiS2V5VmFsdWUuSWxsZWdhbEFyZ3VtZW50IiwgZXhBcmdzKSk7CisgICAgICB9CisgICB9CisKKyAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgcHVibGljIFB1YmxpY0tleSBnZXRQdWJsaWNLZXkoKSB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworCisgICAgICB0cnkgeworICAgICAgICAgRFNBUHVibGljS2V5U3BlYyBwa3NwZWMgPQorICAgICAgICAgICAgbmV3IERTQVB1YmxpY0tleVNwZWModGhpcworICAgICAgICAgICAgICAgLmdldEJpZ0ludGVnZXJGcm9tQ2hpbGRFbGVtZW50KENvbnN0YW50cy5fVEFHX1ksIENvbnN0YW50cworICAgICAgICAgICAgICAgLlNpZ25hdHVyZVNwZWNOUyksIHRoaXMKKyAgICAgICAgICAgICAgICAgIC5nZXRCaWdJbnRlZ2VyRnJvbUNoaWxkRWxlbWVudChDb25zdGFudHMuX1RBR19QLCBDb25zdGFudHMKKyAgICAgICAgICAgICAgICAgIC5TaWduYXR1cmVTcGVjTlMpLCB0aGlzCisgICAgICAgICAgICAgICAgICAgICAuZ2V0QmlnSW50ZWdlckZyb21DaGlsZEVsZW1lbnQoQ29uc3RhbnRzLl9UQUdfUSwgQ29uc3RhbnRzCisgICAgICAgICAgICAgICAgICAgICAuU2lnbmF0dXJlU3BlY05TKSwgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgLmdldEJpZ0ludGVnZXJGcm9tQ2hpbGRFbGVtZW50KENvbnN0YW50cworICAgICAgICAgICAgICAgICAgICAgICAgICAgLl9UQUdfRywgQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUykpOworICAgICAgICAgS2V5RmFjdG9yeSBkc2FGYWN0b3J5ID0gS2V5RmFjdG9yeS5nZXRJbnN0YW5jZSgiRFNBIik7CisgICAgICAgICBQdWJsaWNLZXkgcGsgPSBkc2FGYWN0b3J5LmdlbmVyYXRlUHVibGljKHBrc3BlYyk7CisKKyAgICAgICAgIHJldHVybiBwazsKKyAgICAgIH0gY2F0Y2ggKE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFhNTFNlY3VyaXR5RXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgIH0gY2F0Y2ggKEludmFsaWRLZXlTcGVjRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICB0aHJvdyBuZXcgWE1MU2VjdXJpdHlFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgfQorICAgfQorCisgICAvKiogQGluaGVyaXREb2MgKi8KKyAgIHB1YmxpYyBTdHJpbmcgZ2V0QmFzZUxvY2FsTmFtZSgpIHsKKyAgICAgIHJldHVybiBDb25zdGFudHMuX1RBR19EU0FLRVlWQUxVRTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2NvbnRlbnQva2V5dmFsdWVzL0tleVZhbHVlQ29udGVudC5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvY29udGVudC9rZXl2YWx1ZXMvS2V5VmFsdWVDb250ZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QxYWI3MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2NvbnRlbnQva2V5dmFsdWVzL0tleVZhbHVlQ29udGVudC5qYXZhCkBAIC0wLDAgKzEsNDQgQEAKKworLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50LmtleXZhbHVlczsKKworCisKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlB1YmxpY0tleTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmV4Y2VwdGlvbnMuWE1MU2VjdXJpdHlFeGNlcHRpb247CisKKy8qKgorICoKKyAqCisgKgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgS2V5VmFsdWVDb250ZW50IHsKKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0UHVibGljS2V5CisgICAgKgorICAgICogQHJldHVybiB0aGUgcHVibGljIGtleQorICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgUHVibGljS2V5IGdldFB1YmxpY0tleSgpCisgICAgICB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb247Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9jb250ZW50L2tleXZhbHVlcy9SU0FLZXlWYWx1ZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvY29udGVudC9rZXl2YWx1ZXMvUlNBS2V5VmFsdWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGU5ZGNlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvY29udGVudC9rZXl2YWx1ZXMvUlNBS2V5VmFsdWUuamF2YQpAQCAtMCwwICsxLDEyNSBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50LmtleXZhbHVlczsKKworaW1wb3J0IGphdmEubWF0aC5CaWdJbnRlZ2VyOworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5RmFjdG9yeTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlB1YmxpY0tleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmludGVyZmFjZXMuUlNBUHVibGljS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuc3BlYy5JbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LnNwZWMuUlNBUHVibGljS2V5U3BlYzsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmV4Y2VwdGlvbnMuWE1MU2VjdXJpdHlFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkkxOG47CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuU2lnbmF0dXJlRWxlbWVudFByb3h5OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CisKKy8qKgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGNsYXNzIFJTQUtleVZhbHVlIGV4dGVuZHMgU2lnbmF0dXJlRWxlbWVudFByb3h5CisgICAgICAgIGltcGxlbWVudHMgS2V5VmFsdWVDb250ZW50IHsKKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBSU0FLZXlWYWx1ZQorICAgICoKKyAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgUlNBS2V5VmFsdWUoRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSkKKyAgICAgICAgICAgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKyAgICAgIHN1cGVyKGVsZW1lbnQsIEJhc2VVUkkpOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFJTQUtleVZhbHVlCisgICAgKgorICAgICogQHBhcmFtIGRvYworICAgICogQHBhcmFtIG1vZHVsdXMKKyAgICAqIEBwYXJhbSBleHBvbmVudAorICAgICovCisgICBwdWJsaWMgUlNBS2V5VmFsdWUoRG9jdW1lbnQgZG9jLCBCaWdJbnRlZ2VyIG1vZHVsdXMsIEJpZ0ludGVnZXIgZXhwb25lbnQpIHsKKworICAgICAgc3VwZXIoZG9jKTsKKworICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpOworICAgICAgdGhpcy5hZGRCaWdJbnRlZ2VyRWxlbWVudChtb2R1bHVzLCBDb25zdGFudHMuX1RBR19NT0RVTFVTKTsKKyAgICAgIHRoaXMuYWRkQmlnSW50ZWdlckVsZW1lbnQoZXhwb25lbnQsIENvbnN0YW50cy5fVEFHX0VYUE9ORU5UKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBSU0FLZXlWYWx1ZQorICAgICoKKyAgICAqIEBwYXJhbSBkb2MKKyAgICAqIEBwYXJhbSBrZXkKKyAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBSU0FLZXlWYWx1ZShEb2N1bWVudCBkb2MsIEtleSBrZXkpIHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24geworCisgICAgICBzdXBlcihkb2MpOworCisgICAgICBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCk7CisKKyAgICAgIGlmIChrZXkgaW5zdGFuY2VvZiBqYXZhLnNlY3VyaXR5LmludGVyZmFjZXMuUlNBUHVibGljS2V5ICkgeworICAgICAgICAgdGhpcy5hZGRCaWdJbnRlZ2VyRWxlbWVudCgoKFJTQVB1YmxpY0tleSkga2V5KS5nZXRNb2R1bHVzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5fVEFHX01PRFVMVVMpOworICAgICAgICAgdGhpcy5hZGRCaWdJbnRlZ2VyRWxlbWVudCgoKFJTQVB1YmxpY0tleSkga2V5KS5nZXRQdWJsaWNFeHBvbmVudCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMuX1RBR19FWFBPTkVOVCk7CisgICAgICB9IGVsc2UgeworICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyBDb25zdGFudHMuX1RBR19SU0FLRVlWQUxVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LmdldENsYXNzKCkuZ2V0TmFtZSgpIH07CisKKyAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oSTE4bgorICAgICAgICAgICAgLnRyYW5zbGF0ZSgiS2V5VmFsdWUuSWxsZWdhbEFyZ3VtZW50IiwgZXhBcmdzKSk7CisgICAgICB9CisgICB9CisKKyAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgcHVibGljIFB1YmxpY0tleSBnZXRQdWJsaWNLZXkoKSB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworCisgICAgICB0cnkgeworICAgICAgICAgS2V5RmFjdG9yeSByc2FGYWN0b3J5ID0gS2V5RmFjdG9yeS5nZXRJbnN0YW5jZSgiUlNBIik7CisKKyAgICAgICAgIC8vIEtleUZhY3RvcnkgcnNhRmFjdG9yeSA9IEtleUZhY3RvcnkuZ2V0SW5zdGFuY2UoSkNFX1JTQSk7CisgICAgICAgICBSU0FQdWJsaWNLZXlTcGVjIHJzYUtleXNwZWMgPQorICAgICAgICAgICAgbmV3IFJTQVB1YmxpY0tleVNwZWModGhpcworICAgICAgICAgICAgICAgLmdldEJpZ0ludGVnZXJGcm9tQ2hpbGRFbGVtZW50KENvbnN0YW50cy5fVEFHX01PRFVMVVMsIENvbnN0YW50cworICAgICAgICAgICAgICAgLlNpZ25hdHVyZVNwZWNOUyksIHRoaXMKKyAgICAgICAgICAgICAgICAgIC5nZXRCaWdJbnRlZ2VyRnJvbUNoaWxkRWxlbWVudChDb25zdGFudHMKKyAgICAgICAgICAgICAgICAgICAgIC5fVEFHX0VYUE9ORU5ULCBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TKSk7CisgICAgICAgICBQdWJsaWNLZXkgcGsgPSByc2FGYWN0b3J5LmdlbmVyYXRlUHVibGljKHJzYUtleXNwZWMpOworCisgICAgICAgICByZXR1cm4gcGs7CisgICAgICB9IGNhdGNoIChOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIHRocm93IG5ldyBYTUxTZWN1cml0eUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICB9IGNhdGNoIChJbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFhNTFNlY3VyaXR5RXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwdWJsaWMgU3RyaW5nIGdldEJhc2VMb2NhbE5hbWUoKSB7CisgICAgICByZXR1cm4gQ29uc3RhbnRzLl9UQUdfUlNBS0VZVkFMVUU7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9jb250ZW50L2tleXZhbHVlcy9wYWNrYWdlLmh0bWwgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9jb250ZW50L2tleXZhbHVlcy9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU3MGRhYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2NvbnRlbnQva2V5dmFsdWVzL3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDMgQEAKKzxIVE1MPjxIRUFEPjwvSEVBRD48Qk9EWT48UD4KK2Jhc2ljIGhhbmRsZXJzIGZvciBlbGVtZW50cyB0aGF0IGNhbiBvY2N1ciBpbnNpZGUgPENPREU+ZHM6S2V5VmFsdWU8L0NPREU+LgorPC9QPjwvQk9EWT48L0hUTUw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvY29udGVudC9wYWNrYWdlLmh0bWwgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9jb250ZW50L3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODUwYTgzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvY29udGVudC9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSwzIEBACis8SFRNTD48SEVBRD48L0hFQUQ+PEJPRFk+PFA+CitiYXNpYyBoYW5kbGVycyBmb3IgZWxlbWVudHMgdGhhdCBjYW4gb2NjdXIgaW5zaWRlIDxDT0RFPmRzOktleUluZm88L0NPREU+LgorPC9QPjwvQk9EWT48L0hUTUw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvY29udGVudC94NTA5L1hNTFg1MDlDUkwuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2NvbnRlbnQveDUwOS9YTUxYNTA5Q1JMLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE3ZDQxYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2NvbnRlbnQveDUwOS9YTUxYNTA5Q1JMLmphdmEKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50Lng1MDk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLlhNTFNlY3VyaXR5RXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5TaWduYXR1cmVFbGVtZW50UHJveHk7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworLyoqCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICoKKyAqLworcHVibGljIGNsYXNzIFhNTFg1MDlDUkwgZXh0ZW5kcyBTaWduYXR1cmVFbGVtZW50UHJveHkKKyAgICAgICAgaW1wbGVtZW50cyBYTUxYNTA5RGF0YUNvbnRlbnQgeworCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFhNTFg1MDlDUkwKKyAgICAqCisgICAgKiBAcGFyYW0gZWxlbWVudAorICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIFhNTFg1MDlDUkwoRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSkKKyAgICAgICAgICAgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKyAgICAgIHN1cGVyKGVsZW1lbnQsIEJhc2VVUkkpOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFg1MDlDUkwKKyAgICAqCisgICAgKiBAcGFyYW0gZG9jCisgICAgKiBAcGFyYW0gY3JsQnl0ZXMKKyAgICAqLworICAgcHVibGljIFhNTFg1MDlDUkwoRG9jdW1lbnQgZG9jLCBieXRlW10gY3JsQnl0ZXMpIHsKKworICAgICAgc3VwZXIoZG9jKTsKKworICAgICAgdGhpcy5hZGRCYXNlNjRUZXh0KGNybEJ5dGVzKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0Q1JMQnl0ZXMKKyAgICAqCisgICAgKiBAcmV0dXJuIHRoZSBDUkwgYnl0ZXMKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIGJ5dGVbXSBnZXRDUkxCeXRlcygpIHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisgICAgICByZXR1cm4gdGhpcy5nZXRCeXRlc0Zyb21UZXh0Q2hpbGQoKTsKKyAgIH0KKworICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwdWJsaWMgU3RyaW5nIGdldEJhc2VMb2NhbE5hbWUoKSB7CisgICAgICByZXR1cm4gQ29uc3RhbnRzLl9UQUdfWDUwOUNSTDsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2NvbnRlbnQveDUwOS9YTUxYNTA5Q2VydGlmaWNhdGUuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2NvbnRlbnQveDUwOS9YTUxYNTA5Q2VydGlmaWNhdGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWRlMTE2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvY29udGVudC94NTA5L1hNTFg1MDlDZXJ0aWZpY2F0ZS5qYXZhCkBAIC0wLDAgKzEsMTY5IEBACisvKgorICogQ29weXJpZ2h0IDE5OTktMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC54NTA5OworCitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlB1YmxpY0tleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb247CitpbXBvcnQgamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRmFjdG9yeTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlOworaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLlhNTFNlY3VyaXR5RXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5TaWduYXR1cmVFbGVtZW50UHJveHk7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworLyoqCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICovCitwdWJsaWMgY2xhc3MgWE1MWDUwOUNlcnRpZmljYXRlIGV4dGVuZHMgU2lnbmF0dXJlRWxlbWVudFByb3h5CisgICAgICAgIGltcGxlbWVudHMgWE1MWDUwOURhdGFDb250ZW50IHsKKworICAgLyoqIEZpZWxkIEpDQV9DRVJUX0lEICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBKQ0FfQ0VSVF9JRCA9ICJYLjUwOSI7CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgWDUwOUNlcnRpZmljYXRlCisgICAgKgorICAgICogQHBhcmFtIGVsZW1lbnQKKyAgICAqIEBwYXJhbSBCYXNlVVJJCisgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBYTUxYNTA5Q2VydGlmaWNhdGUoRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSkKKyAgICAgICAgICAgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKyAgICAgIHN1cGVyKGVsZW1lbnQsIEJhc2VVUkkpOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFg1MDlDZXJ0aWZpY2F0ZQorICAgICoKKyAgICAqIEBwYXJhbSBkb2MKKyAgICAqIEBwYXJhbSBjZXJ0aWZpY2F0ZUJ5dGVzCisgICAgKi8KKyAgIHB1YmxpYyBYTUxYNTA5Q2VydGlmaWNhdGUoRG9jdW1lbnQgZG9jLCBieXRlW10gY2VydGlmaWNhdGVCeXRlcykgeworCisgICAgICBzdXBlcihkb2MpOworCisgICAgICB0aGlzLmFkZEJhc2U2NFRleHQoY2VydGlmaWNhdGVCeXRlcyk7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgWE1MWDUwOUNlcnRpZmljYXRlCisgICAgKgorICAgICogQHBhcmFtIGRvYworICAgICogQHBhcmFtIHg1MDljZXJ0aWZpY2F0ZQorICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgWE1MWDUwOUNlcnRpZmljYXRlKERvY3VtZW50IGRvYywgWDUwOUNlcnRpZmljYXRlIHg1MDljZXJ0aWZpY2F0ZSkKKyAgICAgICAgICAgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKworICAgICAgc3VwZXIoZG9jKTsKKworICAgICAgdHJ5IHsKKyAgICAgICAgIHRoaXMuYWRkQmFzZTY0VGV4dCh4NTA5Y2VydGlmaWNhdGUuZ2V0RW5jb2RlZCgpKTsKKyAgICAgIH0gY2F0Y2ggKGphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUVuY29kaW5nRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICB0aHJvdyBuZXcgWE1MU2VjdXJpdHlFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRDZXJ0aWZpY2F0ZUJ5dGVzCisgICAgKgorICAgICogQHJldHVybiB0aGUgY2VydGlmaWNhdGUgYnl0ZXMKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIGJ5dGVbXSBnZXRDZXJ0aWZpY2F0ZUJ5dGVzKCkgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKyAgICAgIHJldHVybiB0aGlzLmdldEJ5dGVzRnJvbVRleHRDaGlsZCgpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRYNTA5Q2VydGlmaWNhdGUKKyAgICAqCisgICAgKiBAcmV0dXJuIHRoZSB4NTA5IGNlcnRpZmljYXRlCisgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBYNTA5Q2VydGlmaWNhdGUgZ2V0WDUwOUNlcnRpZmljYXRlKCkgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKworICAgICAgdHJ5IHsKKyAgICAgICAgIGJ5dGUgY2VydGJ5dGVzW10gPSB0aGlzLmdldENlcnRpZmljYXRlQnl0ZXMoKTsKKyAgICAgICAgIENlcnRpZmljYXRlRmFjdG9yeSBjZXJ0RmFjdCA9CisgICAgICAgICAgICBDZXJ0aWZpY2F0ZUZhY3RvcnkuZ2V0SW5zdGFuY2UoWE1MWDUwOUNlcnRpZmljYXRlLkpDQV9DRVJUX0lEKTsKKyAgICAgICAgIFg1MDlDZXJ0aWZpY2F0ZSBjZXJ0ID0KKyAgICAgICAgICAgIChYNTA5Q2VydGlmaWNhdGUpIGNlcnRGYWN0CisgICAgICAgICAgICAgICAuZ2VuZXJhdGVDZXJ0aWZpY2F0ZShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oY2VydGJ5dGVzKSk7CisKKyAgICAgICAgIGlmIChjZXJ0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBjZXJ0OworICAgICAgICAgfQorCisgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgIH0gY2F0Y2ggKENlcnRpZmljYXRlRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICB0aHJvdyBuZXcgWE1MU2VjdXJpdHlFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRQdWJsaWNLZXkKKyAgICAqCisgICAgKiBAcmV0dXJuIHRlaCBwdWJsaWNrZXkKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIFB1YmxpY0tleSBnZXRQdWJsaWNLZXkoKSB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworCisgICAgICBYNTA5Q2VydGlmaWNhdGUgY2VydCA9IHRoaXMuZ2V0WDUwOUNlcnRpZmljYXRlKCk7CisKKyAgICAgIGlmIChjZXJ0ICE9IG51bGwpIHsKKyAgICAgICAgIHJldHVybiBjZXJ0LmdldFB1YmxpY0tleSgpOworICAgICAgfQorCisgICAgICByZXR1cm4gbnVsbDsKKyAgIH0KKworICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKSB7CisKKyAgICAgICAgaWYgKCEob2JqIGluc3RhbmNlb2YgWE1MWDUwOUNlcnRpZmljYXRlKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIFhNTFg1MDlDZXJ0aWZpY2F0ZSBvdGhlciA9IChYTUxYNTA5Q2VydGlmaWNhdGUpIG9iajsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBBcnJheXMuZXF1YWxzCisJCShvdGhlci5nZXRDZXJ0aWZpY2F0ZUJ5dGVzKCksIHRoaXMuZ2V0Q2VydGlmaWNhdGVCeXRlcygpKTsKKyAgICAgICAgfSBjYXRjaCAoWE1MU2VjdXJpdHlFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisJaW50IHJlc3VsdCA9IDE3OworICAgICAgICB0cnkgeworICAgICAgICAgICAgYnl0ZVtdIGJ5dGVzID0gZ2V0Q2VydGlmaWNhdGVCeXRlcygpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IDMxICogcmVzdWx0ICsgYnl0ZXNbaV07CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKFhNTFNlY3VyaXR5RXhjZXB0aW9uIGUpIHt9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAvKiogQGluaGVyaXREb2MgKi8KKyAgIHB1YmxpYyBTdHJpbmcgZ2V0QmFzZUxvY2FsTmFtZSgpIHsKKyAgICAgIHJldHVybiBDb25zdGFudHMuX1RBR19YNTA5Q0VSVElGSUNBVEU7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9jb250ZW50L3g1MDkvWE1MWDUwOURhdGFDb250ZW50LmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9jb250ZW50L3g1MDkvWE1MWDUwOURhdGFDb250ZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQxMzhmYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2NvbnRlbnQveDUwOS9YTUxYNTA5RGF0YUNvbnRlbnQuamF2YQpAQCAtMCwwICsxLDMwIEBACisKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC54NTA5OworCisKKworCisKKy8qKgorICogSnVzdCB1c2VkIGZvciB0YWdnaW5nIGNvbnRlbnRzIHRoYXQgYXJlIGFsbG93ZWQgaW5zaWRlIGEgZHM6WDUwOURhdGEgRWxlbWVudC4KKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgWE1MWDUwOURhdGFDb250ZW50IHsKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2NvbnRlbnQveDUwOS9YTUxYNTA5SXNzdWVyU2VyaWFsLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9jb250ZW50L3g1MDkvWE1MWDUwOUlzc3VlclNlcmlhbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwMzBmNzUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9jb250ZW50L3g1MDkvWE1MWDUwOUlzc3VlclNlcmlhbC5qYXZhCkBAIC0wLDAgKzEsMTY5IEBACisvKgorICogQ29weXJpZ2h0IDE5OTktMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC54NTA5OworCitpbXBvcnQgamF2YS5tYXRoLkJpZ0ludGVnZXI7CitpbXBvcnQgamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmV4Y2VwdGlvbnMuWE1MU2VjdXJpdHlFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlJGQzIyNTNQYXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuU2lnbmF0dXJlRWxlbWVudFByb3h5OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CisKKy8qKgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGNsYXNzIFhNTFg1MDlJc3N1ZXJTZXJpYWwgZXh0ZW5kcyBTaWduYXR1cmVFbGVtZW50UHJveHkKKyAgICAgICAgaW1wbGVtZW50cyBYTUxYNTA5RGF0YUNvbnRlbnQgeworCisgICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKAorICAgICAgICAgICAgICAgICAgICBYTUxYNTA5SXNzdWVyU2VyaWFsLmNsYXNzLmdldE5hbWUoKSk7CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RvciBYTUxYNTA5SXNzdWVyU2VyaWFsCisgICAgICoKKyAgICAgKiBAcGFyYW0gZWxlbWVudAorICAgICAqIEBwYXJhbSBiYXNlVVJJCisgICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBYTUxYNTA5SXNzdWVyU2VyaWFsKEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIGJhc2VVUkkpCisgICAgICAgICAgIHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisgICAgICAgIHN1cGVyKGVsZW1lbnQsIGJhc2VVUkkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdG9yIFhNTFg1MDlJc3N1ZXJTZXJpYWwKKyAgICAgKgorICAgICAqIEBwYXJhbSBkb2MKKyAgICAgKiBAcGFyYW0geDUwOUlzc3Vlck5hbWUKKyAgICAgKiBAcGFyYW0geDUwOVNlcmlhbE51bWJlcgorICAgICAqLworICAgIHB1YmxpYyBYTUxYNTA5SXNzdWVyU2VyaWFsKERvY3VtZW50IGRvYywgU3RyaW5nIHg1MDlJc3N1ZXJOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ0ludGVnZXIgeDUwOVNlcmlhbE51bWJlcikgeworCisgICAgICAgIHN1cGVyKGRvYyk7CisgICAgICAgIFhNTFV0aWxzLmFkZFJldHVyblRvRWxlbWVudCh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50KTsKKyAgICAgICAgYWRkVGV4dEVsZW1lbnQoeDUwOUlzc3Vlck5hbWUsIENvbnN0YW50cy5fVEFHX1g1MDlJU1NVRVJOQU1FKTsKKyAgICAgICAgYWRkVGV4dEVsZW1lbnQoeDUwOVNlcmlhbE51bWJlci50b1N0cmluZygpLCBDb25zdGFudHMuX1RBR19YNTA5U0VSSUFMTlVNQkVSKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RvciBYTUxYNTA5SXNzdWVyU2VyaWFsCisgICAgICoKKyAgICAgKiBAcGFyYW0gZG9jCisgICAgICogQHBhcmFtIHg1MDlJc3N1ZXJOYW1lCisgICAgICogQHBhcmFtIHg1MDlTZXJpYWxOdW1iZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgWE1MWDUwOUlzc3VlclNlcmlhbChEb2N1bWVudCBkb2MsIFN0cmluZyB4NTA5SXNzdWVyTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgeDUwOVNlcmlhbE51bWJlcikgeworICAgICAgICB0aGlzKGRvYywgeDUwOUlzc3Vlck5hbWUsIG5ldyBCaWdJbnRlZ2VyKHg1MDlTZXJpYWxOdW1iZXIpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RvciBYTUxYNTA5SXNzdWVyU2VyaWFsCisgICAgICoKKyAgICAgKiBAcGFyYW0gZG9jCisgICAgICogQHBhcmFtIHg1MDlJc3N1ZXJOYW1lCisgICAgICogQHBhcmFtIHg1MDlTZXJpYWxOdW1iZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgWE1MWDUwOUlzc3VlclNlcmlhbChEb2N1bWVudCBkb2MsIFN0cmluZyB4NTA5SXNzdWVyTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeDUwOVNlcmlhbE51bWJlcikgeworICAgICAgICB0aGlzKGRvYywgeDUwOUlzc3Vlck5hbWUsCisgICAgICAgICAgICAgbmV3IEJpZ0ludGVnZXIoSW50ZWdlci50b1N0cmluZyh4NTA5U2VyaWFsTnVtYmVyKSkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdG9yIFhNTFg1MDlJc3N1ZXJTZXJpYWwKKyAgICAgKgorICAgICAqIEBwYXJhbSBkb2MKKyAgICAgKiBAcGFyYW0geDUwOWNlcnRpZmljYXRlCisgICAgICovCisgICAgcHVibGljIFhNTFg1MDlJc3N1ZXJTZXJpYWwoRG9jdW1lbnQgZG9jLCBYNTA5Q2VydGlmaWNhdGUgeDUwOWNlcnRpZmljYXRlKSB7CisKKyAgICAgICAgdGhpcyhkb2MsCisgICAgICAgICAgICAgUkZDMjI1M1BhcnNlci5ub3JtYWxpemUoeDUwOWNlcnRpZmljYXRlLmdldElzc3VlckROKCkuZ2V0TmFtZSgpKSwKKyAgICAgICAgICAgICB4NTA5Y2VydGlmaWNhdGUuZ2V0U2VyaWFsTnVtYmVyKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1ldGhvZCBnZXRTZXJpYWxOdW1iZXIKKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIHNlcmlhbCBudW1iZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgQmlnSW50ZWdlciBnZXRTZXJpYWxOdW1iZXIoKSB7CisKKyAgICAgICAgU3RyaW5nIHRleHQgPSB0aGlzLmdldFRleHRGcm9tQ2hpbGRFbGVtZW50CisJICAgIChDb25zdGFudHMuX1RBR19YNTA5U0VSSUFMTlVNQkVSLCBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TKTsKKyAgICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKQorICAgICAgCSAgICBsb2cuZGVidWcoIlg1MDlTZXJpYWxOdW1iZXIgdGV4dDogIiArIHRleHQpOworCisgICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcih0ZXh0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNZXRob2QgZ2V0U2VyaWFsTnVtYmVySW50ZWdlcgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgc2VyaWFsIG51bWJlciBhcyBwbGFpbiBpbnQKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldFNlcmlhbE51bWJlckludGVnZXIoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmdldFNlcmlhbE51bWJlcigpLmludFZhbHVlKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogTWV0aG9kIGdldElzc3Vlck5hbWUKKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIGlzc3VlciBuYW1lCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXRJc3N1ZXJOYW1lKCkgIHsKKworICAgICAgICByZXR1cm4gUkZDMjI1M1BhcnNlcgorICAgICAgICAgICAubm9ybWFsaXplKHRoaXMKKyAgICAgICAgICAgICAgLmdldFRleHRGcm9tQ2hpbGRFbGVtZW50KENvbnN0YW50cy5fVEFHX1g1MDlJU1NVRVJOQU1FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUykpOworICAgIH0KKworICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKSB7CisKKyAgICAgICAgaWYgKCEob2JqIGluc3RhbmNlb2YgWE1MWDUwOUlzc3VlclNlcmlhbCkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIFhNTFg1MDlJc3N1ZXJTZXJpYWwgb3RoZXIgPSAoWE1MWDUwOUlzc3VlclNlcmlhbCkgb2JqOworCisgICAgICAgIHJldHVybiB0aGlzLmdldFNlcmlhbE51bWJlcigpLmVxdWFscyhvdGhlci5nZXRTZXJpYWxOdW1iZXIoKSkKKyAgICAgICAgICAgICAgICYmIHRoaXMuZ2V0SXNzdWVyTmFtZSgpLmVxdWFscyhvdGhlci5nZXRJc3N1ZXJOYW1lKCkpOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgIGludCByZXN1bHQgPSAxNzsKKyAgICAgICAgcmVzdWx0ID0gMzEgKiByZXN1bHQgKyBnZXRTZXJpYWxOdW1iZXIoKS5oYXNoQ29kZSgpOworICAgICAgICByZXN1bHQgPSAzMSAqIHJlc3VsdCArIGdldElzc3Vlck5hbWUoKS5oYXNoQ29kZSgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0QmFzZUxvY2FsTmFtZSgpIHsKKyAgICAgICAgcmV0dXJuIENvbnN0YW50cy5fVEFHX1g1MDlJU1NVRVJTRVJJQUw7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvY29udGVudC94NTA5L1hNTFg1MDlTS0kuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2NvbnRlbnQveDUwOS9YTUxYNTA5U0tJLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgyYTJhZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2NvbnRlbnQveDUwOS9YTUxYNTA5U0tJLmphdmEKQEAgLTAsMCArMSwxNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMTk5OS0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50Lng1MDk7CisKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlOworaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLlhNTFNlY3VyaXR5RXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkJhc2U2NDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuU2lnbmF0dXJlRWxlbWVudFByb3h5OworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CisKKy8qKgorICogSGFuZGxlcyBTdWJqZWN0S2V5SWRlbnRpZmllciAoU0tJKSBmb3IgWC41MDl2My4KKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKiBAc2VlIDxBIEhSRUY9Imh0dHA6Ly9qYXZhLnN1bi5jb20vajJzZS8xLjUuMC9kb2NzL2FwaS9qYXZhL3NlY3VyaXR5L2NlcnQvWDUwOUV4dGVuc2lvbi5odG1sIj5JbnRlcmZhY2UgWDUwOUV4dGVuc2lvbjwvQT4KKyAqLworcHVibGljIGNsYXNzIFhNTFg1MDlTS0kgZXh0ZW5kcyBTaWduYXR1cmVFbGVtZW50UHJveHkKKyAgICAgICAgaW1wbGVtZW50cyBYTUxYNTA5RGF0YUNvbnRlbnQgeworCisgICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKFhNTFg1MDlTS0kuY2xhc3MuZ2V0TmFtZSgpKTsKKworICAgIC8qKgorICAgICAqIDxDT0RFPlN1YmplY3RLZXlJZGVudGlmaWVyIChpZC1jZS1zdWJqZWN0S2V5SWRlbnRpZmllcikgKDIuNS4yOS4xNCk8L0NPREU+OgorICAgICAqIFRoaXMgZXh0ZW5zaW9uIGlkZW50aWZpZXMgdGhlIHB1YmxpYyBrZXkgYmVpbmcgY2VydGlmaWVkLiBJdCBlbmFibGVzCisgICAgICogZGlzdGluY3Qga2V5cyB1c2VkIGJ5IHRoZSBzYW1lIHN1YmplY3QgdG8gYmUgZGlmZmVyZW50aWF0ZWQKKyAgICAgKiAoZS5nLiwgYXMga2V5IHVwZGF0aW5nIG9jY3VycykuCisgICAgICogPEJSIC8+CisgICAgICogQSBrZXkgaWRlbnRpZmVyIHNoYWxsIGJlIHVuaXF1ZSB3aXRoIHJlc3BlY3QgdG8gYWxsIGtleSBpZGVudGlmaWVycworICAgICAqIGZvciB0aGUgc3ViamVjdCB3aXRoIHdoaWNoIGl0IGlzIHVzZWQuIFRoaXMgZXh0ZW5zaW9uIGlzIGFsd2F5cyBub24tY3JpdGljYWwuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0tJX09JRCA9ICIyLjUuMjkuMTQiOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IgWDUwOVNLSQorICAgICAqCisgICAgICogQHBhcmFtIGRvYworICAgICAqIEBwYXJhbSBza2lCeXRlcworICAgICAqLworICAgIHB1YmxpYyBYTUxYNTA5U0tJKERvY3VtZW50IGRvYywgYnl0ZVtdIHNraUJ5dGVzKSB7CisgICAgICAgIHN1cGVyKGRvYyk7CisgICAgICAgIHRoaXMuYWRkQmFzZTY0VGV4dChza2lCeXRlcyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IgWE1MWDUwOVNLSQorICAgICAqCisgICAgICogQHBhcmFtIGRvYworICAgICAqIEBwYXJhbSB4NTA5Y2VydGlmaWNhdGUKKyAgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIFhNTFg1MDlTS0koRG9jdW1lbnQgZG9jLCBYNTA5Q2VydGlmaWNhdGUgeDUwOWNlcnRpZmljYXRlKQorICAgICAgICAgICB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworICAgICAgICBzdXBlcihkb2MpOworICAgICAgICB0aGlzLmFkZEJhc2U2NFRleHQoWE1MWDUwOVNLSS5nZXRTS0lCeXRlc0Zyb21DZXJ0KHg1MDljZXJ0aWZpY2F0ZSkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdG9yIFhNTFg1MDlTS0kKKyAgICAgKgorICAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIFhNTFg1MDlTS0koRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSkKKyAgICAgICAgICAgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKyAgICAgICAgc3VwZXIoZWxlbWVudCwgQmFzZVVSSSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogTWV0aG9kIGdldFNLSUJ5dGVzCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBza2lieXRlcworICAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgYnl0ZVtdIGdldFNLSUJ5dGVzKCkgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Qnl0ZXNGcm9tVGV4dENoaWxkKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogTWV0aG9kIGdldFNLSUJ5dGVzRnJvbUNlcnQKKyAgICAgKgorICAgICAqIEBwYXJhbSBjZXJ0CisgICAgICogQHJldHVybiBza2kgYnl0ZXMgZnJvbSB0aGUgZ2l2ZW4gY2VydGlmaWNhdGUKKyAgICAgKgorICAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAgKiBAc2VlIGphdmEuc2VjdXJpdHkuY2VydC5YNTA5RXh0ZW5zaW9uI2dldEV4dGVuc2lvblZhbHVlKGphdmEubGFuZy5TdHJpbmcpCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBieXRlW10gZ2V0U0tJQnl0ZXNGcm9tQ2VydChYNTA5Q2VydGlmaWNhdGUgY2VydCkKKwl0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworCisgICAgICAgIGlmIChjZXJ0LmdldFZlcnNpb24oKSA8IDMpIHsKKyAgICAgICAgICAgIE9iamVjdCBleEFyZ3NbXSA9IHsgbmV3IEludGVnZXIoY2VydC5nZXRWZXJzaW9uKCkpIH07CisgICAgICAgICAgICB0aHJvdyBuZXcgWE1MU2VjdXJpdHlFeGNlcHRpb24oImNlcnRpZmljYXRlLm5vU2tpLmxvd1ZlcnNpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4QXJncyk7CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiBHZXRzIHRoZSBERVItZW5jb2RlZCBPQ1RFVCBzdHJpbmcgZm9yIHRoZSBleHRlbnNpb24gdmFsdWUgCisJICogKGV4dG5WYWx1ZSkgaWRlbnRpZmllZCBieSB0aGUgcGFzc2VkLWluIG9pZCBTdHJpbmcuIFRoZSBvaWQgCisJICogc3RyaW5nIGlzIHJlcHJlc2VudGVkIGJ5IGEgc2V0IG9mIHBvc2l0aXZlIHdob2xlIG51bWJlcnMgCisgCSAqIHNlcGFyYXRlZCBieSBwZXJpb2RzLgorICAgICAgICAgKi8KKyAgICAgICAgYnl0ZVtdIGV4dGVuc2lvblZhbHVlID0gY2VydC5nZXRFeHRlbnNpb25WYWx1ZShYTUxYNTA5U0tJLlNLSV9PSUQpOworICAgICAgICBpZiAoZXh0ZW5zaW9uVmFsdWUgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFhNTFNlY3VyaXR5RXhjZXB0aW9uKCJjZXJ0aWZpY2F0ZS5ub1NraS5udWxsIik7CisgICAgICAgIH0KKyAgICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIFN0cmlwIGF3YXkgZmlyc3QgZm91ciBieXRlcyBmcm9tIHRoZSBleHRlbnNpb25WYWx1ZSAKKwkgKiBUaGUgZmlyc3QgdHdvIGJ5dGVzIGFyZSB0aGUgdGFnIGFuZCBsZW5ndGggb2YgdGhlIGV4dGVuc2lvblZhbHVlCisJICogT0NURVQgU1RSSU5HLCBhbmQgdGhlIG5leHQgdHdvIGJ5dGVzIGFyZSB0aGUgdGFnIGFuZCBsZW5ndGggb2YKKwkgKiB0aGUgc2tpZCBPQ1RFVCBTVFJJTkcuCisgICAgICAgICAqLworICAgICAgICBieXRlIHNraWRWYWx1ZVtdID0gbmV3IGJ5dGVbZXh0ZW5zaW9uVmFsdWUubGVuZ3RoIC0gNF07CisKKyAgICAgICAgU3lzdGVtLmFycmF5Y29weShleHRlbnNpb25WYWx1ZSwgNCwgc2tpZFZhbHVlLCAwLCBza2lkVmFsdWUubGVuZ3RoKTsKKworICAgICAgICBpZiAobG9nLmlzRGVidWdFbmFibGVkKCkpIHsKKyAgICAgICAgICAgIGxvZy5kZWJ1ZygiQmFzZTY0IG9mIFNLSSBpcyAiICsgQmFzZTY0LmVuY29kZShza2lkVmFsdWUpKTsKKwl9CisKKyAgICAgICAgcmV0dXJuIHNraWRWYWx1ZTsKKyAgICB9CisKKyAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG9iaikgeworICAgICAgICBpZiAoIShvYmogaW5zdGFuY2VvZiBYTUxYNTA5U0tJKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgWE1MWDUwOVNLSSBvdGhlciA9IChYTUxYNTA5U0tJKSBvYmo7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBBcnJheXMuZXF1YWxzKG90aGVyLmdldFNLSUJ5dGVzKCksIHRoaXMuZ2V0U0tJQnl0ZXMoKSk7CisgICAgICAgIH0gY2F0Y2ggKFhNTFNlY3VyaXR5RXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICBpbnQgcmVzdWx0ID0gMTc7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBieXRlW10gYnl0ZXMgPSBnZXRTS0lCeXRlcygpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IDMxICogcmVzdWx0ICsgYnl0ZXNbaV07CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKFhNTFNlY3VyaXR5RXhjZXB0aW9uIGUpIHt9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICB9CisKKyAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldEJhc2VMb2NhbE5hbWUoKSB7CisgICAgICAgIHJldHVybiBDb25zdGFudHMuX1RBR19YNTA5U0tJOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2NvbnRlbnQveDUwOS9YTUxYNTA5U3ViamVjdE5hbWUuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2NvbnRlbnQveDUwOS9YTUxYNTA5U3ViamVjdE5hbWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODRhMjMzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvY29udGVudC94NTA5L1hNTFg1MDlTdWJqZWN0TmFtZS5qYXZhCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmNvbnRlbnQueDUwOTsKKworaW1wb3J0IGphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLlhNTFNlY3VyaXR5RXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5SRkMyMjUzUGFyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlNpZ25hdHVyZUVsZW1lbnRQcm94eTsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworCisvKioKKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKi8KK3B1YmxpYyBjbGFzcyBYTUxYNTA5U3ViamVjdE5hbWUgZXh0ZW5kcyBTaWduYXR1cmVFbGVtZW50UHJveHkKKyAgICAgICAgaW1wbGVtZW50cyBYTUxYNTA5RGF0YUNvbnRlbnQgeworCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFg1MDlTdWJqZWN0TmFtZQorICAgICoKKyAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgWE1MWDUwOVN1YmplY3ROYW1lKEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIEJhc2VVUkkpCisgICAgICAgICAgIHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisgICAgICBzdXBlcihlbGVtZW50LCBCYXNlVVJJKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBYNTA5U3ViamVjdE5hbWUKKyAgICAqCisgICAgKiBAcGFyYW0gZG9jCisgICAgKiBAcGFyYW0gWDUwOVN1YmplY3ROYW1lU3RyaW5nCisgICAgKi8KKyAgIHB1YmxpYyBYTUxYNTA5U3ViamVjdE5hbWUoRG9jdW1lbnQgZG9jLCBTdHJpbmcgWDUwOVN1YmplY3ROYW1lU3RyaW5nKSB7CisKKyAgICAgIHN1cGVyKGRvYyk7CisKKyAgICAgIHRoaXMuYWRkVGV4dChYNTA5U3ViamVjdE5hbWVTdHJpbmcpOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFhNTFg1MDlTdWJqZWN0TmFtZQorICAgICoKKyAgICAqIEBwYXJhbSBkb2MKKyAgICAqIEBwYXJhbSB4NTA5Y2VydGlmaWNhdGUKKyAgICAqLworICAgcHVibGljIFhNTFg1MDlTdWJqZWN0TmFtZShEb2N1bWVudCBkb2MsIFg1MDlDZXJ0aWZpY2F0ZSB4NTA5Y2VydGlmaWNhdGUpIHsKKyAgICAgIHRoaXMoZG9jLAorICAgICAgICAgICBSRkMyMjUzUGFyc2VyLm5vcm1hbGl6ZSh4NTA5Y2VydGlmaWNhdGUuZ2V0U3ViamVjdEROKCkuZ2V0TmFtZSgpKSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGdldFN1YmplY3ROYW1lCisgICAgKgorICAgICoKKyAgICAqIEByZXR1cm4gdGhlIHN1YmplY3QgbmFtZQorICAgICovCisgICBwdWJsaWMgU3RyaW5nIGdldFN1YmplY3ROYW1lKCkgeworICAgICAgcmV0dXJuIFJGQzIyNTNQYXJzZXIubm9ybWFsaXplKHRoaXMuZ2V0VGV4dEZyb21UZXh0Q2hpbGQoKSk7CisgICB9CisKKyAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG9iaikgeworICAgICAgICBpZiAoIShvYmogaW5zdGFuY2VvZiBYTUxYNTA5U3ViamVjdE5hbWUpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBYTUxYNTA5U3ViamVjdE5hbWUgb3RoZXIgPSAoWE1MWDUwOVN1YmplY3ROYW1lKSBvYmo7CisgICAgICAgIFN0cmluZyBvdGhlclN1YmplY3QgPSBvdGhlci5nZXRTdWJqZWN0TmFtZSgpOworICAgICAgICBTdHJpbmcgdGhpc1N1YmplY3QgPSB0aGlzLmdldFN1YmplY3ROYW1lKCk7CisKKyAgICAgICAgcmV0dXJuIHRoaXNTdWJqZWN0LmVxdWFscyhvdGhlclN1YmplY3QpOworICAgfQorCisgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgaW50IHJlc3VsdCA9IDE3OworICAgICAgICByZXN1bHQgPSAzMSAqIHJlc3VsdCArIHRoaXMuZ2V0U3ViamVjdE5hbWUoKS5oYXNoQ29kZSgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgIAorICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwdWJsaWMgU3RyaW5nIGdldEJhc2VMb2NhbE5hbWUoKSB7CisgICAgICByZXR1cm4gQ29uc3RhbnRzLl9UQUdfWDUwOVNVQkpFQ1ROQU1FOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvY29udGVudC94NTA5L3BhY2thZ2UuaHRtbCBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2NvbnRlbnQveDUwOS9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IyMTM1OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2NvbnRlbnQveDUwOS9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSwzIEBACis8SFRNTD48SEVBRD48L0hFQUQ+PEJPRFk+PFA+CitiYXNpYyBoYW5kbGVycyBmb3IgZWxlbWVudHMgdGhhdCBjYW4gb2NjdXIgaW5zaWRlIDxDT0RFPmRzOlg1MDlEYXRhPC9DT0RFPi4KKzwvUD48L0JPRFk+PC9IVE1MPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2tleXJlc29sdmVyL0ludmFsaWRLZXlSZXNvbHZlckV4Y2VwdGlvbi5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMva2V5cmVzb2x2ZXIvSW52YWxpZEtleVJlc29sdmVyRXhjZXB0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk0OWU3NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2tleXJlc29sdmVyL0ludmFsaWRLZXlSZXNvbHZlckV4Y2VwdGlvbi5qYXZhCkBAIC0wLDAgKzEsODYgQEAKKworLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5rZXlyZXNvbHZlcjsKKworCisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLlhNTFNlY3VyaXR5RXhjZXB0aW9uOworCisKKy8qKgorICoKKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKi8KK3B1YmxpYyBjbGFzcyBJbnZhbGlkS2V5UmVzb2x2ZXJFeGNlcHRpb24gZXh0ZW5kcyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisKKyAgIC8qKgorCSAqIAorCSAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOworCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIEludmFsaWRLZXlSZXNvbHZlckV4Y2VwdGlvbgorICAgICoKKyAgICAqLworICAgcHVibGljIEludmFsaWRLZXlSZXNvbHZlckV4Y2VwdGlvbigpIHsKKyAgICAgIHN1cGVyKCk7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgSW52YWxpZEtleVJlc29sdmVyRXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICovCisgICBwdWJsaWMgSW52YWxpZEtleVJlc29sdmVyRXhjZXB0aW9uKFN0cmluZyBfbXNnSUQpIHsKKyAgICAgIHN1cGVyKF9tc2dJRCk7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgSW52YWxpZEtleVJlc29sdmVyRXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICogQHBhcmFtIGV4QXJncworICAgICovCisgICBwdWJsaWMgSW52YWxpZEtleVJlc29sdmVyRXhjZXB0aW9uKFN0cmluZyBfbXNnSUQsIE9iamVjdCBleEFyZ3NbXSkgeworICAgICAgc3VwZXIoX21zZ0lELCBleEFyZ3MpOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIEludmFsaWRLZXlSZXNvbHZlckV4Y2VwdGlvbgorICAgICoKKyAgICAqIEBwYXJhbSBfbXNnSUQKKyAgICAqIEBwYXJhbSBfb3JpZ2luYWxFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIEludmFsaWRLZXlSZXNvbHZlckV4Y2VwdGlvbihTdHJpbmcgX21zZ0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb24gX29yaWdpbmFsRXhjZXB0aW9uKSB7CisgICAgICBzdXBlcihfbXNnSUQsIF9vcmlnaW5hbEV4Y2VwdGlvbik7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgSW52YWxpZEtleVJlc29sdmVyRXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICogQHBhcmFtIGV4QXJncworICAgICogQHBhcmFtIF9vcmlnaW5hbEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgSW52YWxpZEtleVJlc29sdmVyRXhjZXB0aW9uKFN0cmluZyBfbXNnSUQsIE9iamVjdCBleEFyZ3NbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uIF9vcmlnaW5hbEV4Y2VwdGlvbikgeworICAgICAgc3VwZXIoX21zZ0lELCBleEFyZ3MsIF9vcmlnaW5hbEV4Y2VwdGlvbik7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9rZXlyZXNvbHZlci9LZXlSZXNvbHZlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMva2V5cmVzb2x2ZXIvS2V5UmVzb2x2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjVkZmU4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMva2V5cmVzb2x2ZXIvS2V5UmVzb2x2ZXIuamF2YQpAQCAtMCwwICsxLDM4MiBAQAorCisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmtleXJlc29sdmVyOworCitpbXBvcnQgamF2YS5zZWN1cml0eS5QdWJsaWNLZXk7CitpbXBvcnQgamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IGphdmF4LmNyeXB0by5TZWNyZXRLZXk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLnN0b3JhZ2UuU3RvcmFnZVJlc29sdmVyOworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKKworCisvKioKKyAqIEtleVJlc29sdmVyIGlzIGZhY3RvcnkgY2xhc3MgZm9yIHN1YmNsYXNzIG9mIEtleVJlc29sdmVyU3BpIHRoYXQKKyAqIHJlcHJlc2VudCBjaGlsZCBlbGVtZW50IG9mIEtleUluZm8uCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICogQHZlcnNpb24gJUklLCAlRyUKKyAqLworcHVibGljIGNsYXNzIEtleVJlc29sdmVyIHsKKworICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgc3RhdGljIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZyBsb2cgPSAKKyAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKEtleVJlc29sdmVyLmNsYXNzLmdldE5hbWUoKSk7CisKKyAgIC8qKiBGaWVsZCBfYWxyZWFkeUluaXRpYWxpemVkICovCisgICBzdGF0aWMgYm9vbGVhbiBfYWxyZWFkeUluaXRpYWxpemVkID0gZmFsc2U7CisKKyAgIC8qKiBGaWVsZCBfcmVzb2x2ZXJWZWN0b3IgKi8KKyAgIHN0YXRpYyBMaXN0IF9yZXNvbHZlclZlY3RvciA9IG51bGw7CisKKyAgIC8qKiBGaWVsZCBfcmVzb2x2ZXJTcGkgKi8KKyAgIHByb3RlY3RlZCBLZXlSZXNvbHZlclNwaSBfcmVzb2x2ZXJTcGkgPSBudWxsOworCisgICAvKiogRmllbGQgX3N0b3JhZ2UgKi8KKyAgIHByb3RlY3RlZCBTdG9yYWdlUmVzb2x2ZXIgX3N0b3JhZ2UgPSBudWxsOworCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFJlc291cmNlUmVzb2x2ZXIKKyAgICAqCisgICAgKiBAcGFyYW0gY2xhc3NOYW1lCisgICAgKiBAdGhyb3dzIENsYXNzTm90Rm91bmRFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbgorICAgICogQHRocm93cyBJbnN0YW50aWF0aW9uRXhjZXB0aW9uCisgICAgKi8KKyAgIHByaXZhdGUgS2V5UmVzb2x2ZXIoU3RyaW5nIGNsYXNzTmFtZSkKKyAgICAgICAgICAgdGhyb3dzIENsYXNzTm90Rm91bmRFeGNlcHRpb24sIElsbGVnYWxBY2Nlc3NFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uRXhjZXB0aW9uIHsKKyAgICAgIHRoaXMuX3Jlc29sdmVyU3BpID0KKyAgICAgICAgIChLZXlSZXNvbHZlclNwaSkgQ2xhc3MuZm9yTmFtZShjbGFzc05hbWUpLm5ld0luc3RhbmNlKCk7CisgICAgICB0aGlzLl9yZXNvbHZlclNwaS5zZXRHbG9iYWxSZXNvbHZlcih0cnVlKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgbGVuZ3RoCisgICAgKgorICAgICogQHJldHVybiB0aGUgbGVuZ3RoIG9mIHJlc29sdmVycyByZWdpc3RlcmVkCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgaW50IGxlbmd0aCgpIHsKKyAgICAgIHJldHVybiBLZXlSZXNvbHZlci5fcmVzb2x2ZXJWZWN0b3Iuc2l6ZSgpOworICAgfQorCisgICAvKioKKyAgICAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGEgS2V5UmVzb2x2ZXIgaXMgc3VjY2Vzc2Z1bAorICAgICogd2l0aCB0aGUgaG9wZSB0aGF0IHRoaXMgaW5mb3JtYXRpb24gY2FuIGltcHJvdmUgcGVyZm9ybWFuY2UuCisgICAgKiBAcGFyYW0gaGludEkKKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIGhpdChJdGVyYXRvciBoaW50SSkgeworCSAgIC8vIE1vdmUgdGhlIHN1Y2Nlc3NmdWwgS2V5UmVzb2x2ZXIgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbGlzdAorCSAgIFJlc29sdmVySXRlcmF0b3IgaGludCA9IChSZXNvbHZlckl0ZXJhdG9yKSBoaW50STsKKwkgICBpbnQgaSA9IGhpbnQuaTsKKwkgICBpZiAoaSE9MSAmJiBoaW50LnJlcyA9PV9yZXNvbHZlclZlY3RvcikgeworCQkgICBMaXN0IHJlc29sdmVyVmVjdG9yPShMaXN0KSgoQXJyYXlMaXN0KV9yZXNvbHZlclZlY3RvcikuY2xvbmUoKTsgICAgICAgIAkJICAgCQkgCisgIAkJT2JqZWN0IG9iPXJlc29sdmVyVmVjdG9yLnJlbW92ZShpLTEpOworICAJCXJlc29sdmVyVmVjdG9yLmFkZCgwLG9iKTsKKyAgCQkgX3Jlc29sdmVyVmVjdG9yPXJlc29sdmVyVmVjdG9yOyAKKyAgCSB9IGVsc2UgeworICAJCSAvL1N5c3RlbS5vdXQucHJpbnRsbigiS2V5UmVzb2x2ZXIgaGl0dGluZyIpOworICAJIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0WDUwOUNlcnRpZmljYXRlCisgICAgKgorICAgICogQHBhcmFtIGVsZW1lbnQKKyAgICAqIEBwYXJhbSBCYXNlVVJJCisgICAgKiBAcGFyYW0gc3RvcmFnZQorICAgICogQHJldHVybiBUaGUgY2VydGlmaWNhdGUgcmVwcmVzZW50ZWQgYnkgdGhlIGVsZW1lbnQuCisgICAgKiAKKyAgICAqIEB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBYNTA5Q2VydGlmaWNhdGUgZ2V0WDUwOUNlcnRpZmljYXRlKAorICAgICAgICAgICBFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJLCBTdG9yYWdlUmVzb2x2ZXIgc3RvcmFnZSkKKyAgICAgICAgICAgICAgdGhyb3dzIEtleVJlc29sdmVyRXhjZXB0aW9uIHsKKworCSAgLy8gdXNlIHRoZSBvbGQgdmVjdG9yIHRvIG5vdCBiZSBoaXQgYnkgdXBkYXRlcworCSAgTGlzdCByZXNvbHZlclZlY3RvciA9IEtleVJlc29sdmVyLl9yZXNvbHZlclZlY3RvcjsKKyAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVzb2x2ZXJWZWN0b3Iuc2l6ZSgpOyBpKyspIHsKKwkJICBLZXlSZXNvbHZlciByZXNvbHZlcj0KKyAgICAgICAgICAgIChLZXlSZXNvbHZlcikgcmVzb2x2ZXJWZWN0b3IuZ2V0KGkpOworCisJCSAgaWYgKHJlc29sdmVyPT1udWxsKSB7CisgICAgICAgICAgICBPYmplY3QgZXhBcmdzW10gPSB7CisgICAgICAgICAgICAgICAoKChlbGVtZW50ICE9IG51bGwpCisgICAgICAgICAgICAgICAgICYmIChlbGVtZW50LmdldE5vZGVUeXBlKCkgPT0gTm9kZS5FTEVNRU5UX05PREUpKQorICAgICAgICAgICAgICAgID8gZWxlbWVudC5nZXRUYWdOYW1lKCkKKyAgICAgICAgICAgICAgICA6ICJudWxsIikgfTsKKworICAgICAgICAgICAgdGhyb3cgbmV3IEtleVJlc29sdmVyRXhjZXB0aW9uKCJ1dGlscy5yZXNvbHZlci5ub0NsYXNzIiwgZXhBcmdzKTsKKyAgICAgICAgIH0KKyAgICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkKKyAgICAgICAgIAlsb2cuZGVidWcoImNoZWNrIHJlc29sdmFiaWxpdHkgYnkgY2xhc3MgIiArIHJlc29sdmVyLmdldENsYXNzKCkpOworCisgICAgICAgICBYNTA5Q2VydGlmaWNhdGUgY2VydD1yZXNvbHZlci5yZXNvbHZlWDUwOUNlcnRpZmljYXRlKGVsZW1lbnQsIEJhc2VVUkksIHN0b3JhZ2UpOworICAgICAgICAgaWYgKGNlcnQhPW51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBjZXJ0OworICAgICAgICAgfQorICAgICAgfQorCisgICAgICBPYmplY3QgZXhBcmdzW10gPSB7CisgICAgICAgICAoKChlbGVtZW50ICE9IG51bGwpICYmIChlbGVtZW50LmdldE5vZGVUeXBlKCkgPT0gTm9kZS5FTEVNRU5UX05PREUpKQorICAgICAgICAgID8gZWxlbWVudC5nZXRUYWdOYW1lKCkKKyAgICAgICAgICA6ICJudWxsIikgfTsKKworICAgICAgdGhyb3cgbmV3IEtleVJlc29sdmVyRXhjZXB0aW9uKCJ1dGlscy5yZXNvbHZlci5ub0NsYXNzIiwgZXhBcmdzKTsKKyAgIH0KKyAgIAorICAgLyoqCisgICAgKiBNZXRob2QgZ2V0UHVibGljS2V5CisgICAgKgorICAgICogQHBhcmFtIGVsZW1lbnQKKyAgICAqIEBwYXJhbSBCYXNlVVJJCisgICAgKiBAcGFyYW0gc3RvcmFnZQorICAgICogQHJldHVybiB0aGUgcHVibGljIGtleSBjb250YWluZWQgaW4gdGhlIGVsZW1lbnQKKyAgICAqIAorICAgICogQHRocm93cyBLZXlSZXNvbHZlckV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFB1YmxpY0tleSBnZXRQdWJsaWNLZXkoCisgICAgICAgICAgIEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIEJhc2VVUkksIFN0b3JhZ2VSZXNvbHZlciBzdG9yYWdlKQorICAgICAgICAgICAgICB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24geworCSAgCisgICAgICAvLyB1c2UgdGhlIG9sZCB2ZWN0b3IgdG8gbm90IGJlIGhpdCBieSB1cGRhdGVzCisJICBMaXN0IHJlc29sdmVyVmVjdG9yID0gS2V5UmVzb2x2ZXIuX3Jlc29sdmVyVmVjdG9yOworICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXNvbHZlclZlY3Rvci5zaXplKCk7IGkrKykgeworCQkgIEtleVJlc29sdmVyIHJlc29sdmVyPQorICAgICAgICAgICAgKEtleVJlc29sdmVyKSByZXNvbHZlclZlY3Rvci5nZXQoaSk7CisKKwkJICBpZiAocmVzb2x2ZXI9PW51bGwpIHsKKyAgICAgICAgICAgIE9iamVjdCBleEFyZ3NbXSA9IHsKKyAgICAgICAgICAgICAgICgoKGVsZW1lbnQgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICAgJiYgKGVsZW1lbnQuZ2V0Tm9kZVR5cGUoKSA9PSBOb2RlLkVMRU1FTlRfTk9ERSkpCisgICAgICAgICAgICAgICAgPyBlbGVtZW50LmdldFRhZ05hbWUoKQorICAgICAgICAgICAgICAgIDogIm51bGwiKSB9OworCisgICAgICAgICAgICB0aHJvdyBuZXcgS2V5UmVzb2x2ZXJFeGNlcHRpb24oInV0aWxzLnJlc29sdmVyLm5vQ2xhc3MiLCBleEFyZ3MpOworICAgICAgICAgfQorICAgICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKQorICAgICAgICAgCWxvZy5kZWJ1ZygiY2hlY2sgcmVzb2x2YWJpbGl0eSBieSBjbGFzcyAiICsgcmVzb2x2ZXIuZ2V0Q2xhc3MoKSk7CisKKyAgICAgICAgIFB1YmxpY0tleSBjZXJ0PXJlc29sdmVyLnJlc29sdmVQdWJsaWNLZXkoZWxlbWVudCwgQmFzZVVSSSwgc3RvcmFnZSk7CisgICAgICAgICBpZiAoY2VydCE9bnVsbCkgeworICAgICAgICAJIGlmIChpIT0wICYmIHJlc29sdmVyVmVjdG9yPT1fcmVzb2x2ZXJWZWN0b3IpIHsKKyAgICAgICAgCQkgLy91cGRhdGUgcmVzb2x2ZXIuICAgICAgICAJCSAKKyAgICAgICAgCQkgcmVzb2x2ZXJWZWN0b3I9KExpc3QpKChBcnJheUxpc3QpX3Jlc29sdmVyVmVjdG9yKS5jbG9uZSgpOyAgICAgICAgCQkgICAJCSAKKwkJICAJCSBPYmplY3Qgb2I9cmVzb2x2ZXJWZWN0b3IucmVtb3ZlKGkpOworCQkgIAkJIHJlc29sdmVyVmVjdG9yLmFkZCgwLG9iKTsKKyAgIAkJIAkJIF9yZXNvbHZlclZlY3Rvcj1yZXNvbHZlclZlY3RvcjsKKyAgICAgICAgCSB9IAorICAgICAgICAJIHJldHVybiBjZXJ0OworICAgICAgICAgfQorICAgICAgfQorCisgICAgICBPYmplY3QgZXhBcmdzW10gPSB7CisgICAgICAgICAoKChlbGVtZW50ICE9IG51bGwpICYmIChlbGVtZW50LmdldE5vZGVUeXBlKCkgPT0gTm9kZS5FTEVNRU5UX05PREUpKQorICAgICAgICAgID8gZWxlbWVudC5nZXRUYWdOYW1lKCkKKyAgICAgICAgICA6ICJudWxsIikgfTsKKworICAgICAgdGhyb3cgbmV3IEtleVJlc29sdmVyRXhjZXB0aW9uKCJ1dGlscy5yZXNvbHZlci5ub0NsYXNzIiwgZXhBcmdzKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBUaGUgaW5pdCgpIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKQorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgaW5pdCgpIHsKKworICAgICAgaWYgKCFLZXlSZXNvbHZlci5fYWxyZWFkeUluaXRpYWxpemVkKSB7CisgICAgICAgICBLZXlSZXNvbHZlci5fcmVzb2x2ZXJWZWN0b3IgPSBuZXcgQXJyYXlMaXN0KDEwKTsKKyAgICAgICAgIF9hbHJlYWR5SW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgZm9yIHJlZ2lzdGVyaW5nIHtAbGluayBLZXlSZXNvbHZlclNwaX1zIHdoaWNoIGFyZQorICAgICogYXZhaWxhYmxlIHRvIDxJPmFsbDwvST4ge0BsaW5rIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuS2V5SW5mb30gb2JqZWN0cy4gVGhpcyBtZWFucyB0aGF0CisgICAgKiBwZXJzb25hbGl6ZWQge0BsaW5rIEtleVJlc29sdmVyU3BpfXMgc2hvdWxkIG9ubHkgYmUgcmVnaXN0ZXJlZCBkaXJlY3RseQorICAgICogdG8gdGhlIHtAbGluayBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLktleUluZm99IHVzaW5nIAorICAgICoge0BsaW5rIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuS2V5SW5mbyNyZWdpc3RlckludGVybmFsS2V5UmVzb2x2ZXJ9LgorICAgICoKKyAgICAqIEBwYXJhbSBjbGFzc05hbWUKKyAgICAqIEB0aHJvd3MgSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiAKKyAgICAqIEB0aHJvd3MgSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiAKKyAgICAqIEB0aHJvd3MgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiAKKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIHJlZ2lzdGVyKFN0cmluZyBjbGFzc05hbWUpIHRocm93cyBDbGFzc05vdEZvdW5kRXhjZXB0aW9uLCBJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uLCBJbnN0YW50aWF0aW9uRXhjZXB0aW9uIHsKKyAgICAgIEtleVJlc29sdmVyLl9yZXNvbHZlclZlY3Rvci5hZGQobmV3IEtleVJlc29sdmVyKGNsYXNzTmFtZSkpOworICAgfQorCisgICAvKioKKyAgICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgZm9yIHJlZ2lzdGVyaW5nIHtAbGluayBLZXlSZXNvbHZlclNwaX1zIHdoaWNoIGFyZQorICAgICogYXZhaWxhYmxlIHRvIDxJPmFsbDwvST4ge0BsaW5rIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuS2V5SW5mb30gb2JqZWN0cy4gVGhpcyBtZWFucyB0aGF0CisgICAgKiBwZXJzb25hbGl6ZWQge0BsaW5rIEtleVJlc29sdmVyU3BpfXMgc2hvdWxkIG9ubHkgYmUgcmVnaXN0ZXJlZCBkaXJlY3RseQorICAgICogdG8gdGhlIHtAbGluayBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLktleUluZm99IHVzaW5nIHtAbGluayBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLktleUluZm8jcmVnaXN0ZXJJbnRlcm5hbEtleVJlc29sdmVyfS4KKyAgICAqCisgICAgKiBAcGFyYW0gY2xhc3NOYW1lCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCByZWdpc3RlckF0U3RhcnQoU3RyaW5nIGNsYXNzTmFtZSkgeworICAgICAgIC8vIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgdXNlIGEgUnVudGltZUV4Y2VwdGlvbiBpbnN0ZWFkIG9mIGFkZGluZyBhIHRocm93cyBjbGF1c2UKKyAgICAgICBLZXlSZXNvbHZlciByZXNvbHZlciA9IG51bGw7CisgICAgICAgRXhjZXB0aW9uIGV4ID0gbnVsbDsKKyAgICAgICAKKyAgICAgICB0cnkgeworICAgICAgICAgICByZXNvbHZlciA9IG5ldyBLZXlSZXNvbHZlcihjbGFzc05hbWUpOworICAgICAgIH0gY2F0Y2ggKENsYXNzTm90Rm91bmRFeGNlcHRpb24gZSkgeworICAgICAgICAgICBleCA9IGU7CisgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgIGV4ID0gZTsKKyAgICAgICB9IGNhdGNoIChJbnN0YW50aWF0aW9uRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgZXggPSBlOworICAgICAgIH0KKyAgICAgICAKKyAgICAgICBpZiAoZXggIT0gbnVsbCkgeworICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIEtleVJlc29sdmVyIGNsYXNzIG5hbWUiLCBleCk7CisgICAgICAgfQorICAgICAgIAorICAgICAgIEtleVJlc29sdmVyLl9yZXNvbHZlclZlY3Rvci5hZGQoMCwgcmVzb2x2ZXIpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCByZXNvbHZlUHVibGljS2V5CisgICAgKgorICAgICogQHBhcmFtIGVsZW1lbnQKKyAgICAqIEBwYXJhbSBCYXNlVVJJCisgICAgKiBAcGFyYW0gc3RvcmFnZSAKKyAgICAqIEByZXR1cm4gcmVzb2x2ZWQgcHVibGljIGtleSBmcm9tIHRoZSByZWdpc3RlcmVkIGZyb20gdGhlIGVsZW1lbnRzCisgICAgKiAKKyAgICAqIEB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIFB1YmxpY0tleSByZXNvbHZlUHVibGljS2V5KAorICAgICAgICAgICBFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJLCBTdG9yYWdlUmVzb2x2ZXIgc3RvcmFnZSkKKyAgICAgICAgICAgICAgdGhyb3dzIEtleVJlc29sdmVyRXhjZXB0aW9uIHsKKyAgICAgIHJldHVybiB0aGlzLl9yZXNvbHZlclNwaS5lbmdpbmVMb29rdXBBbmRSZXNvbHZlUHVibGljS2V5KGVsZW1lbnQsIEJhc2VVUkksIHN0b3JhZ2UpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCByZXNvbHZlWDUwOUNlcnRpZmljYXRlCisgICAgKgorICAgICogQHBhcmFtIGVsZW1lbnQKKyAgICAqIEBwYXJhbSBCYXNlVVJJCisgICAgKiBAcGFyYW0gc3RvcmFnZQorICAgICogQHJldHVybiByZXNvbHZlZCBYNTA5Y2VydGlmaWNhdGUga2V5IGZyb20gdGhlIHJlZ2lzdGVyZWQgZnJvbSB0aGUgZWxlbWVudHMKKyAgICAqIAorICAgICogQHRocm93cyBLZXlSZXNvbHZlckV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgWDUwOUNlcnRpZmljYXRlIHJlc29sdmVYNTA5Q2VydGlmaWNhdGUoCisgICAgICAgICAgIEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIEJhc2VVUkksIFN0b3JhZ2VSZXNvbHZlciBzdG9yYWdlKQorICAgICAgICAgICAgICB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24geworICAgICAgcmV0dXJuIHRoaXMuX3Jlc29sdmVyU3BpLmVuZ2luZUxvb2t1cFJlc29sdmVYNTA5Q2VydGlmaWNhdGUoZWxlbWVudCwgQmFzZVVSSSwKKyAgICAgICAgICAgICAgc3RvcmFnZSk7CisgICB9CisKKyAgIC8qKgorICAgICogQHBhcmFtIGVsZW1lbnQKKyAgICAqIEBwYXJhbSBCYXNlVVJJCisgICAgKiBAcGFyYW0gc3RvcmFnZQorICAgICogQHJldHVybiByZXNvbHZlZCBTZWNyZXRLZXkga2V5IGZyb20gdGhlIHJlZ2lzdGVyZWQgZnJvbSB0aGUgZWxlbWVudHMKKyAgICAqIEB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIFNlY3JldEtleSByZXNvbHZlU2VjcmV0S2V5KAorICAgICAgICAgICBFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJLCBTdG9yYWdlUmVzb2x2ZXIgc3RvcmFnZSkKKyAgICAgICAgICAgICAgdGhyb3dzIEtleVJlc29sdmVyRXhjZXB0aW9uIHsKKyAgICAgIHJldHVybiB0aGlzLl9yZXNvbHZlclNwaS5lbmdpbmVMb29rdXBBbmRSZXNvbHZlU2VjcmV0S2V5KGVsZW1lbnQsIEJhc2VVUkksCisgICAgICAgICAgICAgIHN0b3JhZ2UpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBzZXRQcm9wZXJ0eQorICAgICoKKyAgICAqIEBwYXJhbSBrZXkKKyAgICAqIEBwYXJhbSB2YWx1ZQorICAgICovCisgICBwdWJsaWMgdm9pZCBzZXRQcm9wZXJ0eShTdHJpbmcga2V5LCBTdHJpbmcgdmFsdWUpIHsKKyAgICAgIHRoaXMuX3Jlc29sdmVyU3BpLmVuZ2luZVNldFByb3BlcnR5KGtleSwgdmFsdWUpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRQcm9wZXJ0eQorICAgICoKKyAgICAqIEBwYXJhbSBrZXkKKyAgICAqIEByZXR1cm4gdGhlIHByb3BlcnR5IHNldHRlZCBmb3IgdGhpcyByZXNvbHZlcgorICAgICovCisgICBwdWJsaWMgU3RyaW5nIGdldFByb3BlcnR5KFN0cmluZyBrZXkpIHsKKyAgICAgIHJldHVybiB0aGlzLl9yZXNvbHZlclNwaS5lbmdpbmVHZXRQcm9wZXJ0eShrZXkpOworICAgfQorCisKKyAgIC8qKgorICAgICogTWV0aG9kIHVuZGVyc3RhbmRzUHJvcGVydHkKKyAgICAqCisgICAgKiBAcGFyYW0gcHJvcGVydHlUb1Rlc3QKKyAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgcmVzb2x2ZXIgdW5kZXJzdGFuZHMgcHJvcGVydHkgcHJvcGVydHlUb1Rlc3QKKyAgICAqLworICAgcHVibGljIGJvb2xlYW4gdW5kZXJzdGFuZHNQcm9wZXJ0eShTdHJpbmcgcHJvcGVydHlUb1Rlc3QpIHsKKyAgICAgIHJldHVybiB0aGlzLl9yZXNvbHZlclNwaS51bmRlcnN0YW5kc1Byb3BlcnR5KHByb3BlcnR5VG9UZXN0KTsKKyAgIH0KKworCisgICAvKioKKyAgICAqIE1ldGhvZCByZXNvbHZlckNsYXNzTmFtZQorICAgICoKKyAgICAqIEByZXR1cm4gdGhlIG5hbWUgb2YgdGhlIHJlc29sdmVyLgorICAgICovCisgICBwdWJsaWMgU3RyaW5nIHJlc29sdmVyQ2xhc3NOYW1lKCkgeworICAgICAgcmV0dXJuIHRoaXMuX3Jlc29sdmVyU3BpLmdldENsYXNzKCkuZ2V0TmFtZSgpOworICAgfQorCisgICAvKioKKyAgICAqIEl0ZXJhdGUgb3ZlciB0aGUgS2V5UmVzb2x2ZXJTcGkgaW5zdGFuY2VzCisgICAgKi8KKyAgIHN0YXRpYyBjbGFzcyBSZXNvbHZlckl0ZXJhdG9yIGltcGxlbWVudHMgSXRlcmF0b3IgeworICAgICAgICBMaXN0IHJlczsKKyAgICAgICAgSXRlcmF0b3IgaXQ7CisgICAgICAgIGludCBpOworCisgICAgICAgIHB1YmxpYyBSZXNvbHZlckl0ZXJhdG9yKExpc3QgbGlzdCkgeworICAgICAgICAgICAgcmVzID0gbGlzdDsKKyAgICAgICAgICAgIGl0ID0gcmVzLml0ZXJhdG9yKCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgYm9vbGVhbiBoYXNOZXh0KCkgeworICAgICAgICAgICAgcmV0dXJuIGl0Lmhhc05leHQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBPYmplY3QgbmV4dCgpIHsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgIEtleVJlc29sdmVyIHJlc29sdmVyID0gKEtleVJlc29sdmVyKSBpdC5uZXh0KCk7CisgICAgICAgICAgICBpZiAocmVzb2x2ZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJ1dGlscy5yZXNvbHZlci5ub0NsYXNzIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiByZXNvbHZlci5fcmVzb2x2ZXJTcGk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCByZW1vdmUoKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICJDYW4ndCByZW1vdmUgcmVzb2x2ZXJzIHVzaW5nIHRoZSBpdGVyYXRvciIpOworICAgICAgICB9CisJfTsKKwkKKwlwdWJsaWMgc3RhdGljIEl0ZXJhdG9yIGl0ZXJhdG9yKCkgeworCQlyZXR1cm4gbmV3IFJlc29sdmVySXRlcmF0b3IoX3Jlc29sdmVyVmVjdG9yKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2tleXJlc29sdmVyL0tleVJlc29sdmVyRXhjZXB0aW9uLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9rZXlyZXNvbHZlci9LZXlSZXNvbHZlckV4Y2VwdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2NGRiZTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9rZXlyZXNvbHZlci9LZXlSZXNvbHZlckV4Y2VwdGlvbi5qYXZhCkBAIC0wLDAgKzEsODggQEAKKworLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5rZXlyZXNvbHZlcjsKKworCisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLlhNTFNlY3VyaXR5RXhjZXB0aW9uOworCisKKy8qKgorICoKKyAqCisgKgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqCisgKi8KK3B1YmxpYyBjbGFzcyBLZXlSZXNvbHZlckV4Y2VwdGlvbiBleHRlbmRzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKworICAgLyoqCisJICogCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgS2V5UmVzb2x2ZXJFeGNlcHRpb24KKyAgICAqCisgICAgKi8KKyAgIHB1YmxpYyBLZXlSZXNvbHZlckV4Y2VwdGlvbigpIHsKKyAgICAgIHN1cGVyKCk7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgS2V5UmVzb2x2ZXJFeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKi8KKyAgIHB1YmxpYyBLZXlSZXNvbHZlckV4Y2VwdGlvbihTdHJpbmcgX21zZ0lEKSB7CisgICAgICBzdXBlcihfbXNnSUQpOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIEtleVJlc29sdmVyRXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICogQHBhcmFtIGV4QXJncworICAgICovCisgICBwdWJsaWMgS2V5UmVzb2x2ZXJFeGNlcHRpb24oU3RyaW5nIF9tc2dJRCwgT2JqZWN0IGV4QXJnc1tdKSB7CisgICAgICBzdXBlcihfbXNnSUQsIGV4QXJncyk7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgS2V5UmVzb2x2ZXJFeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKiBAcGFyYW0gX29yaWdpbmFsRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBLZXlSZXNvbHZlckV4Y2VwdGlvbihTdHJpbmcgX21zZ0lELCBFeGNlcHRpb24gX29yaWdpbmFsRXhjZXB0aW9uKSB7CisgICAgICBzdXBlcihfbXNnSUQsIF9vcmlnaW5hbEV4Y2VwdGlvbik7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgS2V5UmVzb2x2ZXJFeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKiBAcGFyYW0gZXhBcmdzCisgICAgKiBAcGFyYW0gX29yaWdpbmFsRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBLZXlSZXNvbHZlckV4Y2VwdGlvbihTdHJpbmcgX21zZ0lELCBPYmplY3QgZXhBcmdzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uIF9vcmlnaW5hbEV4Y2VwdGlvbikgeworICAgICAgc3VwZXIoX21zZ0lELCBleEFyZ3MsIF9vcmlnaW5hbEV4Y2VwdGlvbik7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9rZXlyZXNvbHZlci9LZXlSZXNvbHZlclNwaS5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMva2V5cmVzb2x2ZXIvS2V5UmVzb2x2ZXJTcGkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzc3YmVjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMva2V5cmVzb2x2ZXIvS2V5UmVzb2x2ZXJTcGkuamF2YQpAQCAtMCwwICsxLDIyMSBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5rZXlyZXNvbHZlcjsKKworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHVibGljS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGU7CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CisKK2ltcG9ydCBqYXZheC5jcnlwdG8uU2VjcmV0S2V5OworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5zdG9yYWdlLlN0b3JhZ2VSZXNvbHZlcjsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworCisvKioKKyAqIFRoaXMgY2xhc3MgaXMgYWJzdHJhY3QgY2xhc3MgZm9yIGEgY2hpbGQgS2V5SW5mbyBFbGVtbmV0LgorICoKKyAqIElmIHlvdSB3YW50IHRoZSB5b3VyIEtleVJlc29sdmVyLCBhdCBmaXJzdGx5IHlvdSBtdXN0IGV4dGFuZCB0aGlzIGNsYXNzLCBhbmQgcmVnaXN0ZXIKKyAqIGFzIGZvbGxvd2luZyBpbiBjb25maWcueG1sCisgKiA8UFJFPgorICogICZsdDtLZXlSZXNvbHZlciBVUkk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNLZXlWYWx1ZSIKKyAqICAgSkFWQUNMQVNTPSJNeVBhY2thZ2UuTXlLZXlWYWx1ZUltcGwiLy9ndDsKKyAqIDwvUFJFPgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqIEB2ZXJzaW9uICRSZXZpc2lvbiQKKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIEtleVJlc29sdmVyU3BpIHsKKyAgIC8qKgorICAgICogVGhpcyBtZXRob2QgaGVscHMgdGhlIHtAbGluayBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5yZXNvbHZlci5SZXNvdXJjZVJlc29sdmVyfSB0byBkZWNpZGUgd2hldGhlciBhCisgICAgKiB7QGxpbmsgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMucmVzb2x2ZXIuUmVzb3VyY2VSZXNvbHZlclNwaX0gaXMgYWJsZSB0byBwZXJmb3JtIHRoZSByZXF1ZXN0ZWQgYWN0aW9uLgorICAgICoKKyAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICogQHBhcmFtIHN0b3JhZ2UKKyAgICAqIEByZXR1cm4KKyAgICAqLworICAgcHVibGljIGJvb2xlYW4gZW5naW5lQ2FuUmVzb2x2ZShFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmFnZVJlc29sdmVyIHN0b3JhZ2UpIHsKKwkgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lUmVzb2x2ZVB1YmxpY0tleQorICAgICoKKyAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICogQHBhcmFtIHN0b3JhZ2UKKyAgICAqIEByZXR1cm4gcmVzb2x2ZWQgcHVibGljIGtleSBmcm9tIHRoZSByZWdpc3RlcmVkIGZyb20gdGhlIGVsZW1lbnQuCisgICAgKiAKKyAgICAqIEB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIFB1YmxpY0tleSBlbmdpbmVSZXNvbHZlUHVibGljS2V5KAorICAgICAgRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSwgU3RvcmFnZVJlc29sdmVyIHN0b3JhZ2UpCisgICAgICAgICB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24geworICAgICAgCSAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOworICAgIH07CisgICAgICAgCisgICAvKioKKyAgICAqIE1ldGhvZCBlbmdpbmVSZXNvbHZlUHVibGljS2V5CisgICAgKgorICAgICogQHBhcmFtIGVsZW1lbnQKKyAgICAqIEBwYXJhbSBCYXNlVVJJCisgICAgKiBAcGFyYW0gc3RvcmFnZQorICAgICogQHJldHVybiByZXNvbHZlZCBwdWJsaWMga2V5IGZyb20gdGhlIHJlZ2lzdGVyZWQgZnJvbSB0aGUgZWxlbWVudC4KKyAgICAqIAorICAgICogQHRocm93cyBLZXlSZXNvbHZlckV4Y2VwdGlvbgorICAgICovCisgICAgcHVibGljIFB1YmxpY0tleSBlbmdpbmVMb29rdXBBbmRSZXNvbHZlUHVibGljS2V5KAorICAgICAgRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSwgU3RvcmFnZVJlc29sdmVyIHN0b3JhZ2UpCisgICAgICAgICB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24geworICAgIAlLZXlSZXNvbHZlclNwaSB0bXAgPSBjbG9uZUlmTmVlZGVkKCk7CisgICAgCWlmICghdG1wLmVuZ2luZUNhblJlc29sdmUoZWxlbWVudCwgQmFzZVVSSSwgc3RvcmFnZSkpCisJICAgIAlyZXR1cm4gbnVsbDsKKwkgICAgcmV0dXJuIHRtcC5lbmdpbmVSZXNvbHZlUHVibGljS2V5KGVsZW1lbnQsIEJhc2VVUkksIHN0b3JhZ2UpOworICAgIH0KKworICAgIHByaXZhdGUgS2V5UmVzb2x2ZXJTcGkgY2xvbmVJZk5lZWRlZCgpIHRocm93cyBLZXlSZXNvbHZlckV4Y2VwdGlvbiB7CisgICAgCUtleVJlc29sdmVyU3BpIHRtcD10aGlzOyAgICAKKyAgICAJaWYgKGdsb2JhbFJlc29sdmVyKSB7CisgICAgCQl0cnkgeworICAgIAkJCXRtcCA9IChLZXlSZXNvbHZlclNwaSkgZ2V0Q2xhc3MoKS5uZXdJbnN0YW5jZSgpOyAgICAJICAgIAorICAgIAkJfSBjYXRjaCAoSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiBlKSB7CisgICAgCQkJdGhyb3cgbmV3IEtleVJlc29sdmVyRXhjZXB0aW9uKCIiLGUpOworICAgIAkJfSBjYXRjaCAoSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiBlKSB7CisgICAgCQkJdGhyb3cgbmV3IEtleVJlc29sdmVyRXhjZXB0aW9uKCIiLGUpOworICAgIAkJfQorICAgIAl9CisgICAgCXJldHVybiB0bXA7CisgICAgfQorCisgICAgLyoqCisgICAgICogTWV0aG9kIGVuZ2luZVJlc29sdmVDZXJ0aWZpY2F0ZQorICAgICAqCisgICAgICogQHBhcmFtIGVsZW1lbnQKKyAgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICAqIEBwYXJhbSBzdG9yYWdlCisgICAgICogQHJldHVybiByZXNvbHZlZCBYNTA5Q2VydGlmaWNhdGUga2V5IGZyb20gdGhlIHJlZ2lzdGVyZWQgZnJvbSB0aGUgZWxlbWVudHMKKyAgICAgKgorICAgICAqIEB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgWDUwOUNlcnRpZmljYXRlIGVuZ2luZVJlc29sdmVYNTA5Q2VydGlmaWNhdGUoCisgICAgICAgRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSwgU3RvcmFnZVJlc29sdmVyIHN0b3JhZ2UpCisgICAgICAgICAgdGhyb3dzIEtleVJlc29sdmVyRXhjZXB0aW9ueworICAgICAgICAgCSAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOworICAgIH07CisgICAgCisgICAvKioKKyAgICAqIE1ldGhvZCBlbmdpbmVSZXNvbHZlQ2VydGlmaWNhdGUKKyAgICAqCisgICAgKiBAcGFyYW0gZWxlbWVudAorICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAqIEBwYXJhbSBzdG9yYWdlCisgICAgKiBAcmV0dXJuIHJlc29sdmVkIFg1MDlDZXJ0aWZpY2F0ZSBrZXkgZnJvbSB0aGUgcmVnaXN0ZXJlZCBmcm9tIHRoZSBlbGVtZW50cworICAgICoKKyAgICAqIEB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24KKyAgICAqLworICAgIHB1YmxpYyBYNTA5Q2VydGlmaWNhdGUgZW5naW5lTG9va3VwUmVzb2x2ZVg1MDlDZXJ0aWZpY2F0ZSgKKyAgICAgIEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIEJhc2VVUkksIFN0b3JhZ2VSZXNvbHZlciBzdG9yYWdlKQorICAgICAgICAgdGhyb3dzIEtleVJlc29sdmVyRXhjZXB0aW9uIHsKKyAgICAJS2V5UmVzb2x2ZXJTcGkgdG1wID0gY2xvbmVJZk5lZWRlZCgpOworICAgIAlpZiAoIXRtcC5lbmdpbmVDYW5SZXNvbHZlKGVsZW1lbnQsIEJhc2VVUkksIHN0b3JhZ2UpKQorICAgIAkJcmV0dXJuIG51bGw7CisgICAgCXJldHVybiB0bXAuZW5naW5lUmVzb2x2ZVg1MDlDZXJ0aWZpY2F0ZShlbGVtZW50LCBCYXNlVVJJLCBzdG9yYWdlKTsKKyAgICAJCisgICAgfQorICAgIC8qKgorICAgICAqIE1ldGhvZCBlbmdpbmVSZXNvbHZlU2VjcmV0S2V5CisgICAgICoKKyAgICAgKiBAcGFyYW0gZWxlbWVudAorICAgICAqIEBwYXJhbSBCYXNlVVJJCisgICAgICogQHBhcmFtIHN0b3JhZ2UKKyAgICAgKiBAcmV0dXJuIHJlc29sdmVkIFNlY3JldEtleSBrZXkgZnJvbSB0aGUgcmVnaXN0ZXJlZCBmcm9tIHRoZSBlbGVtZW50cworICAgICAqCisgICAgICogQHRocm93cyBLZXlSZXNvbHZlckV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBTZWNyZXRLZXkgZW5naW5lUmVzb2x2ZVNlY3JldEtleSgKKyAgICAgICBFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJLCBTdG9yYWdlUmVzb2x2ZXIgc3RvcmFnZSkKKyAgICAgICAgICB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb257CisgICAgICAgIAkgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsKKyAgICB9OyAKKyAgICAKKyAgIC8qKgorICAgICogTWV0aG9kIGVuZ2luZVJlc29sdmVTZWNyZXRLZXkKKyAgICAqCisgICAgKiBAcGFyYW0gZWxlbWVudAorICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAqIEBwYXJhbSBzdG9yYWdlCisgICAgKiBAcmV0dXJuIHJlc29sdmVkIFNlY3JldEtleSBrZXkgZnJvbSB0aGUgcmVnaXN0ZXJlZCBmcm9tIHRoZSBlbGVtZW50cworICAgICoKKyAgICAqIEB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIFNlY3JldEtleSBlbmdpbmVMb29rdXBBbmRSZXNvbHZlU2VjcmV0S2V5KAorICAgICAgRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSwgU3RvcmFnZVJlc29sdmVyIHN0b3JhZ2UpCisgICAgICAgICB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24geworCSAgIEtleVJlc29sdmVyU3BpIHRtcCA9IGNsb25lSWZOZWVkZWQoKTsKKwkgICBpZiAoIXRtcC5lbmdpbmVDYW5SZXNvbHZlKGVsZW1lbnQsIEJhc2VVUkksIHN0b3JhZ2UpKQorCQkgICByZXR1cm4gbnVsbDsKKyAgIAkJcmV0dXJuIHRtcC5lbmdpbmVSZXNvbHZlU2VjcmV0S2V5KGVsZW1lbnQsIEJhc2VVUkksIHN0b3JhZ2UpOyAgIAkJCisgICB9CisKKyAgIC8qKiBGaWVsZCBfcHJvcGVydGllcyAqLworICAgcHJvdGVjdGVkIGphdmEudXRpbC5NYXAgX3Byb3BlcnRpZXMgPSBudWxsOworICAgCisgICBwcm90ZWN0ZWQgYm9vbGVhbiBnbG9iYWxSZXNvbHZlcj1mYWxzZTsKKworICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lU2V0UHJvcGVydHkKKyAgICAqCisgICAgKiBAcGFyYW0ga2V5CisgICAgKiBAcGFyYW0gdmFsdWUKKyAgICAqLworICAgcHVibGljIHZvaWQgZW5naW5lU2V0UHJvcGVydHkoU3RyaW5nIGtleSwgU3RyaW5nIHZhbHVlKSB7ICAgICAKKwkgICBpZiAoX3Byb3BlcnRpZXM9PW51bGwpCisJCSAgIF9wcm9wZXJ0aWVzPW5ldyBIYXNoTWFwKCk7CisgICAgICB0aGlzLl9wcm9wZXJ0aWVzLnB1dChrZXksIHZhbHVlKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lR2V0UHJvcGVydHkKKyAgICAqCisgICAgKiBAcGFyYW0ga2V5CisgICAgKiBAcmV0dXJuIG9idGFpbiB0aGUgcHJvcGVydHkgYXBwb2ludGVkIGJ5IGtleQorICAgICovCisgICBwdWJsaWMgU3RyaW5nIGVuZ2luZUdldFByb3BlcnR5KFN0cmluZyBrZXkpIHsKKwkgICBpZiAoX3Byb3BlcnRpZXM9PW51bGwpCisJCSAgIHJldHVybiBudWxsOworICAgICAgCisgICAgICByZXR1cm4gKFN0cmluZykgdGhpcy5fcHJvcGVydGllcy5nZXQoa2V5KTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdW5kZXJzdGFuZHNQcm9wZXJ0eQorICAgICoKKyAgICAqIEBwYXJhbSBwcm9wZXJ0eVRvVGVzdAorICAgICogQHJldHVybiB0cnVlIGlmIHVuZGVyc3Rvb2QgdGhlIHByb3BlcnR5CisgICAgKi8KKyAgIHB1YmxpYyBib29sZWFuIHVuZGVyc3RhbmRzUHJvcGVydHkoU3RyaW5nIHByb3BlcnR5VG9UZXN0KSB7CisJICAgaWYgKF9wcm9wZXJ0aWVzPT1udWxsKQorCQkgICByZXR1cm4gZmFsc2U7CisgICAgICAKKyAgICAgIHJldHVybiAgdGhpcy5fcHJvcGVydGllcy5nZXQocHJvcGVydHlUb1Rlc3QpIT1udWxsOworICAgfQorICAgcHVibGljIHZvaWQgc2V0R2xvYmFsUmVzb2x2ZXIoYm9vbGVhbiBnbG9iYWxSZXNvbHZlcikgeworCXRoaXMuZ2xvYmFsUmVzb2x2ZXIgPSBnbG9iYWxSZXNvbHZlcjsKKyAgIH0KKyAgICAgIAorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMva2V5cmVzb2x2ZXIvaW1wbGVtZW50YXRpb25zL0RTQUtleVZhbHVlUmVzb2x2ZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2tleXJlc29sdmVyL2ltcGxlbWVudGF0aW9ucy9EU0FLZXlWYWx1ZVJlc29sdmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRmNTcwNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2tleXJlc29sdmVyL2ltcGxlbWVudGF0aW9ucy9EU0FLZXlWYWx1ZVJlc29sdmVyLmphdmEKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5rZXlyZXNvbHZlci5pbXBsZW1lbnRhdGlvbnM7CisKKworCitpbXBvcnQgamF2YS5zZWN1cml0eS5QdWJsaWNLZXk7CitpbXBvcnQgamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZTsKKworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmNvbnRlbnQua2V5dmFsdWVzLkRTQUtleVZhbHVlOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMua2V5cmVzb2x2ZXIuS2V5UmVzb2x2ZXJTcGk7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5zdG9yYWdlLlN0b3JhZ2VSZXNvbHZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworCisvKioKKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKi8KK3B1YmxpYyBjbGFzcyBEU0FLZXlWYWx1ZVJlc29sdmVyIGV4dGVuZHMgS2V5UmVzb2x2ZXJTcGkgeworICAgIAorICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lUmVzb2x2ZVB1YmxpY0tleQorICAgICoKKyAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICogQHBhcmFtIHN0b3JhZ2UKKyAgICAqIEByZXR1cm4gbnVsbCBpZiBubyB7QGxpbmsgUHVibGljS2V5fSBjb3VsZCBiZSBvYnRhaW5lZAorICAgICovCisgICBwdWJsaWMgUHVibGljS2V5IGVuZ2luZUxvb2t1cEFuZFJlc29sdmVQdWJsaWNLZXkoCisgICAgICAgICAgIEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIEJhc2VVUkksIFN0b3JhZ2VSZXNvbHZlciBzdG9yYWdlKSB7CisJICAgIGlmIChlbGVtZW50ID09IG51bGwpIHsKKwkgICAgICAgICByZXR1cm4gbnVsbDsKKwkgICAgfQorCSAgICBFbGVtZW50IGRzYUtleUVsZW1lbnQ9bnVsbDsKKwkgICAgYm9vbGVhbiBpc0tleVZhbHVlID0gWE1MVXRpbHMuZWxlbWVudElzSW5TaWduYXR1cmVTcGFjZShlbGVtZW50LAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5fVEFHX0tFWVZBTFVFKTsKKwkgICAgaWYgKGlzS2V5VmFsdWUpIHsgICAgICAgICAJICAgICAKKwkgICAgICAgIGRzYUtleUVsZW1lbnQgPQorCSAgICAgICAgICAJWE1MVXRpbHMuc2VsZWN0RHNOb2RlKGVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpLENvbnN0YW50cy5fVEFHX0RTQUtFWVZBTFVFLDApOyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgfSBlbHNlIGlmIChYTUxVdGlscy5lbGVtZW50SXNJblNpZ25hdHVyZVNwYWNlKGVsZW1lbnQsCisgICAgICAgICAgICAgICBDb25zdGFudHMuX1RBR19EU0FLRVlWQUxVRSkpIHsKKwkgICAgICAgICAvLyB0aGlzIHRyaWNrIGlzIG5lZWRlZCB0byBhbGxvdyB0aGUgUmV0cmlldmFsTWV0aG9kUmVzb2x2ZXIgdG8gZWF0IGEKKwkgICAgICAgICAvLyBkczpEU0FLZXlWYWx1ZSBkaXJlY3RseSAod2l0aG91dCBLZXlWYWx1ZSkKKwkgICAgICAgICBkc2FLZXlFbGVtZW50ID0gZWxlbWVudDsKKwkgICAgfQkgICAgICAKKworICAgICAgaWYgKGRzYUtleUVsZW1lbnQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgIH0KKworICAgICAgdHJ5IHsKKyAgICAgICAgIERTQUtleVZhbHVlIGRzYUtleVZhbHVlID0gbmV3IERTQUtleVZhbHVlKGRzYUtleUVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNlVVJJKTsKKyAgICAgICAgIFB1YmxpY0tleSBwayA9IGRzYUtleVZhbHVlLmdldFB1YmxpY0tleSgpOworCisgICAgICAgICByZXR1cm4gcGs7CisgICAgICB9IGNhdGNoIChYTUxTZWN1cml0eUV4Y2VwdGlvbiBleCkgeworCQkvL2RvIG5vdGhpbmcKKyAgICAgIH0KKworICAgICAgcmV0dXJuIG51bGw7CisgICB9CisKKyAgIAorICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwdWJsaWMgWDUwOUNlcnRpZmljYXRlIGVuZ2luZUxvb2t1cFJlc29sdmVYNTA5Q2VydGlmaWNhdGUoCisgICAgICAgICAgIEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIEJhc2VVUkksIFN0b3JhZ2VSZXNvbHZlciBzdG9yYWdlKSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgIH0KKworICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwdWJsaWMgamF2YXguY3J5cHRvLlNlY3JldEtleSBlbmdpbmVMb29rdXBBbmRSZXNvbHZlU2VjcmV0S2V5KAorICAgICAgICAgICBFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJLCBTdG9yYWdlUmVzb2x2ZXIgc3RvcmFnZSl7CisgICAgICByZXR1cm4gbnVsbDsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2tleXJlc29sdmVyL2ltcGxlbWVudGF0aW9ucy9FbmNyeXB0ZWRLZXlSZXNvbHZlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMva2V5cmVzb2x2ZXIvaW1wbGVtZW50YXRpb25zL0VuY3J5cHRlZEtleVJlc29sdmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTllN2Q1MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2tleXJlc29sdmVyL2ltcGxlbWVudGF0aW9ucy9FbmNyeXB0ZWRLZXlSZXNvbHZlci5qYXZhCkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogQ29weXJpZ2h0IDE5OTktMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMua2V5cmVzb2x2ZXIuaW1wbGVtZW50YXRpb25zOworCitpbXBvcnQgamF2YS5zZWN1cml0eS5LZXk7CitpbXBvcnQgamF2YS5zZWN1cml0eS5QdWJsaWNLZXk7CitpbXBvcnQgamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZTsKKworaW1wb3J0IGphdmF4LmNyeXB0by5TZWNyZXRLZXk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5lbmNyeXB0aW9uLkVuY3J5cHRlZEtleTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5lbmNyeXB0aW9uLlhNTENpcGhlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5lbmNyeXB0aW9uLlhNTEVuY3J5cHRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5rZXlyZXNvbHZlci5LZXlSZXNvbHZlclNwaTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLnN0b3JhZ2UuU3RvcmFnZVJlc29sdmVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkVuY3J5cHRpb25Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworLyoqCisgKiBUaGUgPGNvZGU+RW5jcnlwdGVkS2V5UmVzb2x2ZXI8L2NvZGU+IGlzIG5vdCBhIGdlbmVyaWMgcmVzb2x2ZXIuICBJdCBjYW4gCisgKiBvbmx5IGJlIGZvciBzcGVjaWZpYyBpbnN0YW50aWF0aW9ucywgYXMgdGhlIGtleSBiZWluZyB1bndyYXBwZWQgd2lsbCAKKyAqIGFsd2F5cyBiZSBvZiBhIHBhcnRpY3VsYXIgdHlwZSBhbmQgd2lsbCBhbHdheXMgaGF2ZSBiZWVuIHdyYXBwZWQgYnkgCisgKiBhbm90aGVyIGtleSB3aGljaCBuZWVkcyB0byBiZSByZWN1cnNpdmVseSByZXNvbHZlZC4KKyAqCisgKiBUaGUgPGNvZGU+RW5jcnlwdGVkS2V5UmVzb2x2ZXI8L2NvZGU+IGNhbiB0aGVyZWZvcmUgb25seSBiZSBpbnN0YW50aWF0ZWQKKyAqIHdpdGggYW4gYWxnb3JpdGhtLiAgSXQgY2FuIGFsc28gYmUgaW5zdGFudGlhdGVkIHdpdGggYSBrZXkgKHRoZSBLRUspIG9yIAorICogd2lsbCBzZWFyY2ggdGhlIHN0YXRpYyBLZXlSZXNvbHZlcnMgdG8gZmluZCB0aGUgYXBwcm9wcmlhdGUga2V5LgorICoKKyAqIEBhdXRob3IgQmVyaW4gTGF1dGVuYmFjaAorICovCisKK3B1YmxpYyBjbGFzcyBFbmNyeXB0ZWRLZXlSZXNvbHZlciBleHRlbmRzIEtleVJlc29sdmVyU3BpIHsKKworICAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZygKKyAgICAgICAgICAgICAgICAgICAgICAgIFJTQUtleVZhbHVlUmVzb2x2ZXIuY2xhc3MuZ2V0TmFtZSgpKTsKKworICAgIEtleSBfa2VrOworICAgIFN0cmluZyBfYWxnb3JpdGhtOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IgZm9yIHVzZSB3aGVuIGEgS0VLIG5lZWRzIHRvIGJlIGRlcml2ZWQgZnJvbSBhIEtleUluZm8KKyAgICAgKiBsaXN0CisgICAgICogQHBhcmFtIGFsZ29yaXRobQorICAgICAqLworICAgIHB1YmxpYyBFbmNyeXB0ZWRLZXlSZXNvbHZlcihTdHJpbmcgYWxnb3JpdGhtKSB7CQkKKwlfa2VrID0gbnVsbDsKKyAgICAgICAgX2FsZ29yaXRobT1hbGdvcml0aG07CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IgdXNlZCBmb3Igd2hlbiBhIEtFSyBoYXMgYmVlbiBzZXQKKyAgICAgKiBAcGFyYW0gYWxnb3JpdGhtCisgICAgICogQHBhcmFtIGtlaworICAgICAqLworICAgIHB1YmxpYyBFbmNyeXB0ZWRLZXlSZXNvbHZlcihTdHJpbmcgYWxnb3JpdGhtLCBLZXkga2VrKSB7CQkKKwlfYWxnb3JpdGhtID0gYWxnb3JpdGhtOworCV9rZWsgPSBrZWs7CisgICAgfQorCQorICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgIHB1YmxpYyBQdWJsaWNLZXkgZW5naW5lTG9va3VwQW5kUmVzb2x2ZVB1YmxpY0tleSgKKyAgICAgICAgICAgRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSwgU3RvcmFnZVJlc29sdmVyIHN0b3JhZ2UpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgcHVibGljIFg1MDlDZXJ0aWZpY2F0ZSBlbmdpbmVMb29rdXBSZXNvbHZlWDUwOUNlcnRpZmljYXRlKAorICAgICAgICAgICBFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJLCBTdG9yYWdlUmVzb2x2ZXIgc3RvcmFnZSkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICBwdWJsaWMgamF2YXguY3J5cHRvLlNlY3JldEtleSBlbmdpbmVMb29rdXBBbmRSZXNvbHZlU2VjcmV0S2V5KAorICAgICAgICBFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJLCBTdG9yYWdlUmVzb2x2ZXIgc3RvcmFnZSkgeworICAgICAgICBpZiAobG9nLmlzRGVidWdFbmFibGVkKCkpIHsKKyAgCSAgICBsb2cuZGVidWcoIkVuY3J5cHRlZEtleVJlc29sdmVyIC0gQ2FuIEkgcmVzb2x2ZSAiICsgZWxlbWVudC5nZXRUYWdOYW1lKCkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGVsZW1lbnQgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBTZWNyZXRLZXkga2V5ID0gbnVsbDsKKyAgICAgICAgYm9vbGVhbiBpc0VuY3J5cHRlZEtleSA9IFhNTFV0aWxzLmVsZW1lbnRJc0luRW5jcnlwdGlvblNwYWNlKGVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmNyeXB0aW9uQ29uc3RhbnRzLl9UQUdfRU5DUllQVEVES0VZKTsKKyAgICAgICAgaWYgKGlzRW5jcnlwdGVkS2V5KSB7CisJICAgIGxvZy5kZWJ1ZygiUGFzc2VkIGFuIEVuY3J5cHRlZCBLZXkiKTsKKwkgICAgdHJ5IHsKKwkgICAgICAgIFhNTENpcGhlciBjaXBoZXIgPSBYTUxDaXBoZXIuZ2V0SW5zdGFuY2UoKTsKKwkgICAgICAgIGNpcGhlci5pbml0KFhNTENpcGhlci5VTldSQVBfTU9ERSwgX2tlayk7CisJICAgICAgICBFbmNyeXB0ZWRLZXkgZWsgPSBjaXBoZXIubG9hZEVuY3J5cHRlZEtleShlbGVtZW50KTsKKwkgICAgICAgIGtleSA9IChTZWNyZXRLZXkpIGNpcGhlci5kZWNyeXB0S2V5KGVrLCBfYWxnb3JpdGhtKTsKKwkgICAgfSBjYXRjaCAoWE1MRW5jcnlwdGlvbkV4Y2VwdGlvbiBlKSB7fQorICAgICAgICB9CisJCSAgCSAgICAgIAorICAgICAgICByZXR1cm4ga2V5OworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMva2V5cmVzb2x2ZXIvaW1wbGVtZW50YXRpb25zL1JTQUtleVZhbHVlUmVzb2x2ZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2tleXJlc29sdmVyL2ltcGxlbWVudGF0aW9ucy9SU0FLZXlWYWx1ZVJlc29sdmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY3MTZkYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2tleXJlc29sdmVyL2ltcGxlbWVudGF0aW9ucy9SU0FLZXlWYWx1ZVJlc29sdmVyLmphdmEKQEAgLTAsMCArMSw5OSBAQAorCisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmtleXJlc29sdmVyLmltcGxlbWVudGF0aW9uczsKKworCisKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlB1YmxpY0tleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlOworCisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLlhNTFNlY3VyaXR5RXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC5rZXl2YWx1ZXMuUlNBS2V5VmFsdWU7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5rZXlyZXNvbHZlci5LZXlSZXNvbHZlclNwaTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLnN0b3JhZ2UuU3RvcmFnZVJlc29sdmVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5YTUxVdGlsczsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworCisKKy8qKgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGNsYXNzIFJTQUtleVZhbHVlUmVzb2x2ZXIgZXh0ZW5kcyBLZXlSZXNvbHZlclNwaSB7CisKKyAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZygKKyAgICAgICAgICAgICAgICAgICAgICAgIFJTQUtleVZhbHVlUmVzb2x2ZXIuY2xhc3MuZ2V0TmFtZSgpKTsKKworICAgLyoqIEZpZWxkIF9yc2FLZXlFbGVtZW50ICovCisgICAKKworICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwdWJsaWMgUHVibGljS2V5IGVuZ2luZUxvb2t1cEFuZFJlc29sdmVQdWJsaWNLZXkoCisgICAgICAgICAgIEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIEJhc2VVUkksIFN0b3JhZ2VSZXNvbHZlciBzdG9yYWdlKSB7CisJICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKQorCQkgCWxvZy5kZWJ1ZygiQ2FuIEkgcmVzb2x2ZSAiICsgZWxlbWVudC5nZXRUYWdOYW1lKCkpOworICAgICAgaWYgKGVsZW1lbnQgPT0gbnVsbCkgeworICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICB9CisKKwkgIGJvb2xlYW4gaXNLZXlWYWx1ZSA9IFhNTFV0aWxzLmVsZW1lbnRJc0luU2lnbmF0dXJlU3BhY2UoZWxlbWVudCwKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLl9UQUdfS0VZVkFMVUUpOworCSAgRWxlbWVudCByc2FLZXlFbGVtZW50PW51bGw7CisJICBpZiAoaXNLZXlWYWx1ZSkgeyAgICAgICAgICAgICAgICAgIAorCQkgICByc2FLZXlFbGVtZW50ID0gWE1MVXRpbHMuc2VsZWN0RHNOb2RlKGVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpLAorCQkgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5fVEFHX1JTQUtFWVZBTFVFLCAwKTsKKwkgIH0gZWxzZSBpZiAoWE1MVXRpbHMuZWxlbWVudElzSW5TaWduYXR1cmVTcGFjZShlbGVtZW50LAorICAgICAgICAgICAgICBDb25zdGFudHMuX1RBR19SU0FLRVlWQUxVRSkpIHsKKyAgICAgICAgIC8vIHRoaXMgdHJpY2sgaXMgbmVlZGVkIHRvIGFsbG93IHRoZSBSZXRyaWV2YWxNZXRob2RSZXNvbHZlciB0byBlYXQgYQorICAgICAgICAgLy8gZHM6UlNBS2V5VmFsdWUgZGlyZWN0bHkgKHdpdGhvdXQgS2V5VmFsdWUpCisgICAgICAgICByc2FLZXlFbGVtZW50ID0gZWxlbWVudDsJCSAgCisJICB9CisKKyAgICAgIAorICAgICAgaWYgKHJzYUtleUVsZW1lbnQgPT0gbnVsbCkgeworICAgICAgICAgcmV0dXJuIG51bGw7ICAgICAgICAgCisgICAgICB9CisKKyAgICAgIHRyeSB7CisgICAgICAgICBSU0FLZXlWYWx1ZSByc2FLZXlWYWx1ZSA9IG5ldyBSU0FLZXlWYWx1ZShyc2FLZXlFbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzZVVSSSk7CisKKyAgICAgICAgIHJldHVybiByc2FLZXlWYWx1ZS5nZXRQdWJsaWNLZXkoKTsKKyAgICAgIH0gY2F0Y2ggKFhNTFNlY3VyaXR5RXhjZXB0aW9uIGV4KSB7CisgICAgICAgICBsb2cuZGVidWcoIlhNTFNlY3VyaXR5RXhjZXB0aW9uIiwgZXgpOworICAgICAgfQorCisgICAgICByZXR1cm4gbnVsbDsKKyAgIH0KKworICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwdWJsaWMgWDUwOUNlcnRpZmljYXRlIGVuZ2luZUxvb2t1cFJlc29sdmVYNTA5Q2VydGlmaWNhdGUoCisgICAgICAgICAgIEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIEJhc2VVUkksIFN0b3JhZ2VSZXNvbHZlciBzdG9yYWdlKSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgIH0KKworICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwdWJsaWMgamF2YXguY3J5cHRvLlNlY3JldEtleSBlbmdpbmVMb29rdXBBbmRSZXNvbHZlU2VjcmV0S2V5KAorICAgICAgICAgICBFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJLCBTdG9yYWdlUmVzb2x2ZXIgc3RvcmFnZSkgeworICAgICAgcmV0dXJuIG51bGw7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9rZXlyZXNvbHZlci9pbXBsZW1lbnRhdGlvbnMvUmV0cmlldmFsTWV0aG9kUmVzb2x2ZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2tleXJlc29sdmVyL2ltcGxlbWVudGF0aW9ucy9SZXRyaWV2YWxNZXRob2RSZXNvbHZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzMWQyNzYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9rZXlyZXNvbHZlci9pbXBsZW1lbnRhdGlvbnMvUmV0cmlldmFsTWV0aG9kUmVzb2x2ZXIuamF2YQpAQCAtMCwwICsxLDMxNyBAQAorLyoKKyAqIENvcHlyaWdodCAxOTk5LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmtleXJlc29sdmVyLmltcGxlbWVudGF0aW9uczsKKworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlB1YmxpY0tleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb247CitpbXBvcnQgamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRmFjdG9yeTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0SXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLlNldDsKKworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb247CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkNhbm9uaWNhbGl6YXRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmNvbnRlbnQuUmV0cmlldmFsTWV0aG9kOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC54NTA5LlhNTFg1MDlDZXJ0aWZpY2F0ZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmtleXJlc29sdmVyLktleVJlc29sdmVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMua2V5cmVzb2x2ZXIuS2V5UmVzb2x2ZXJFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5rZXlyZXNvbHZlci5LZXlSZXNvbHZlclNwaTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLnN0b3JhZ2UuU3RvcmFnZVJlc29sdmVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmVJbnB1dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybXM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyLlJlc291cmNlUmVzb2x2ZXI7CitpbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CitpbXBvcnQgb3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uOworCisvKioKKyAqIFRoZSBSZXRyaWV2YWxNZXRob2RSZXNvbHZlciBjYW4gcmV0cmlldmUgcHVibGljIGtleXMgYW5kIGNlcnRpZmljYXRlcyBmcm9tCisgKiBvdGhlciBsb2NhdGlvbnMuIFRoZSBsb2NhdGlvbiBpcyBzcGVjaWZpZWQgdXNpbmcgdGhlIGRzOlJldHJpZXZhbE1ldGhvZAorICogZWxlbWVudCB3aGljaCBwb2ludHMgdG8gdGhlIGxvY2F0aW9uLiBUaGlzIGluY2x1ZGVzIHRoZSBoYW5kbGluZyBvZiByYXcKKyAqIChiaW5hcnkpIFguNTA5IGNlcnRpZmljYXRlIHdoaWNoIGFyZSBub3QgZW5jYXBzdWxhdGVkIGluIGFuIFhNTCBzdHJ1Y3R1cmUuCisgKiBJZiB0aGUgcmV0cmlldmFsIHByb2Nlc3MgZW5jb3VudGVycyBhbiBlbGVtZW50IHdoaWNoIHRoZQorICogUmV0cmlldmFsTWV0aG9kUmVzb2x2ZXIgY2Fubm90IGhhbmRsZSBpdHNlbGYsIHJlc29sdmluZyBvZiB0aGUgZXh0cmFjdGVkCisgKiBlbGVtZW50IGlzIGRlbGVnYXRlZCBiYWNrIHRvIHRoZSBLZXlSZXNvbHZlciBtZWNoYW5pc20uCisgKgorICogQGF1dGhvciAkQXV0aG9yOiByYXVsICQgbW9kaWZpZWQgYnkgRGF2ZSBHYXJjaWEKKyAqLworcHVibGljIGNsYXNzIFJldHJpZXZhbE1ldGhvZFJlc29sdmVyIGV4dGVuZHMgS2V5UmVzb2x2ZXJTcGkgeworCisgICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKAorICAgICAgICAgICAgICAgICAgICAgICAgUmV0cmlldmFsTWV0aG9kUmVzb2x2ZXIuY2xhc3MuZ2V0TmFtZSgpKTsKKworICAgIC8qKgorICAgICAqIE1ldGhvZCBlbmdpbmVSZXNvbHZlUHVibGljS2V5CisgICAgICogQGluaGVyaXREb2MKKyAgICAgKiBAcGFyYW0gZWxlbWVudAorICAgICAqIEBwYXJhbSBCYXNlVVJJCisgICAgICogQHBhcmFtIHN0b3JhZ2UKKyAgICAgKi8KKyAgICBwdWJsaWMgUHVibGljS2V5IGVuZ2luZUxvb2t1cEFuZFJlc29sdmVQdWJsaWNLZXkoCisgICAgICAgICAgIEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIEJhc2VVUkksIFN0b3JhZ2VSZXNvbHZlciBzdG9yYWdlKQorICAgIHsKKyAgICAgICAgaWYgKCFYTUxVdGlscy5lbGVtZW50SXNJblNpZ25hdHVyZVNwYWNlKGVsZW1lbnQsCisgICAgICAgICAgICAgICBDb25zdGFudHMuX1RBR19SRVRSSUVWQUxNRVRIT0QpKSB7ICAgICAgCisJICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgdHJ5IHsKKwkgICAgLy8gQ3JlYXRlIGEgcmV0cmlldmFsIG1ldGhvZCBvdmVyIHRoZSBnaXZlbiBlbGVtZW50CisJICAgIFJldHJpZXZhbE1ldGhvZCBybSA9IG5ldyBSZXRyaWV2YWxNZXRob2QoZWxlbWVudCwgQmFzZVVSSSk7CisJICAgIFN0cmluZyB0eXBlID0gcm0uZ2V0VHlwZSgpOwkJICAgCisJICAgIFhNTFNpZ25hdHVyZUlucHV0IHJlc291cmNlID0gcmVzb2x2ZUlucHV0KHJtLEJhc2VVUkkpOworICAgICAgICAgICAgaWYgKFJldHJpZXZhbE1ldGhvZC5UWVBFX1JBV1g1MDkuZXF1YWxzKHR5cGUpKSB7CisgICAgICAgICAgICAgICAgLy8gYSByYXcgY2VydGlmaWNhdGUsIGRpcmVjdCBwYXJzaW5nIGlzIGRvbmUhCisgICAgICAgICAgICAJWDUwOUNlcnRpZmljYXRlIGNlcnQgPSBnZXRSYXdDZXJ0aWZpY2F0ZShyZXNvdXJjZSk7CisJCWlmIChjZXJ0ICE9IG51bGwpIHsKKwkgICAgICAgICAgICByZXR1cm4gY2VydC5nZXRQdWJsaWNLZXkoKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICB9CisJICAgICBFbGVtZW50IGUgPSBvYnRhaW5SZWZlcmVuY2VFbGVtZW50KHJlc291cmNlKTsgCisJICAgICByZXR1cm4gcmVzb2x2ZUtleShlLCBCYXNlVVJJLCBzdG9yYWdlKTsKKyAgICAgICAgIH0gY2F0Y2ggKFhNTFNlY3VyaXR5RXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgbG9nLmRlYnVnKCJYTUxTZWN1cml0eUV4Y2VwdGlvbiIsIGV4KTsKKyAgICAgICAgIH0gY2F0Y2ggKENlcnRpZmljYXRlRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgbG9nLmRlYnVnKCJDZXJ0aWZpY2F0ZUV4Y2VwdGlvbiIsIGV4KTsKKyAgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgbG9nLmRlYnVnKCJJT0V4Y2VwdGlvbiIsIGV4KTsKKyAgICAgICAgIH0gY2F0Y2ggKFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24gZSkgeworCSAgICAgbG9nLmRlYnVnKCJQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIiwgZSk7CisgICAgICAgICB9IGNhdGNoIChTQVhFeGNlcHRpb24gZSkgeworCSAgICAgbG9nLmRlYnVnKCJTQVhFeGNlcHRpb24iLCBlKTsKKyAgICAgICAgIH0gCisgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBzdGF0aWMgcHJpdmF0ZSBFbGVtZW50IG9idGFpblJlZmVyZW5jZUVsZW1lbnQoWE1MU2lnbmF0dXJlSW5wdXQgcmVzb3VyY2UpIAorICAgICAgICB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiwgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiwgCisgICAgICAgIElPRXhjZXB0aW9uLCBTQVhFeGNlcHRpb24sIEtleVJlc29sdmVyRXhjZXB0aW9uIHsKKyAgICAgICAgRWxlbWVudCBlOworICAgICAgICBpZiAocmVzb3VyY2UuaXNFbGVtZW50KCkpeworICAgICAgICAgICAgZSA9IChFbGVtZW50KSByZXNvdXJjZS5nZXRTdWJOb2RlKCk7CisgICAgICAgIH0gZWxzZSBpZiAocmVzb3VyY2UuaXNOb2RlU2V0KCkpIHsKKwkgICAgLy8gUmV0cmlldmVkIHJlc291cmNlIGlzIGEgbm9kZVNldAorCSAgICBlID0gZ2V0RG9jdW1lbnRFbGVtZW50KHJlc291cmNlLmdldE5vZGVTZXQoKSk7CisgICAgICAgIH0gZWxzZSB7CisJICAgIC8vIFJldHJpZXZlZCByZXNvdXJjZSBpcyBhbiBpbnB1dFN0cmVhbQorCSAgICBieXRlIGlucHV0Qnl0ZXNbXSA9IHJlc291cmNlLmdldEJ5dGVzKCk7CisJICAgIGUgPSBnZXREb2NGcm9tQnl0ZXMoaW5wdXRCeXRlcyk7CisJICAgIC8vIG90aGVyd2lzZSwgd2UgcGFyc2UgdGhlIHJlc291cmNlLCBjcmVhdGUgYW4gRWxlbWVudCBhbmQgZGVsZWdhdGUKKwkgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKSAKKwkgICAgICAgIGxvZy5kZWJ1Zygid2UgaGF2ZSB0byBwYXJzZSAiICsgaW5wdXRCeXRlcy5sZW5ndGggKyAiIGJ5dGVzIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogTWV0aG9kIGVuZ2luZVJlc29sdmVYNTA5Q2VydGlmaWNhdGUKKyAgICAgKiBAaW5oZXJpdERvYworICAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAgKiBAcGFyYW0gc3RvcmFnZQorICAgICAqLworICAgIHB1YmxpYyBYNTA5Q2VydGlmaWNhdGUgZW5naW5lTG9va3VwUmVzb2x2ZVg1MDlDZXJ0aWZpY2F0ZSgKKyAgICAgICAgRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSwgU3RvcmFnZVJlc29sdmVyIHN0b3JhZ2UpIHsKKyAgICAgICAgaWYgKCFYTUxVdGlscy5lbGVtZW50SXNJblNpZ25hdHVyZVNwYWNlKGVsZW1lbnQsCisgICAgICAgICAgICAgICBDb25zdGFudHMuX1RBR19SRVRSSUVWQUxNRVRIT0QpKSB7ICAgICAgCisJICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBSZXRyaWV2YWxNZXRob2Qgcm0gPSBuZXcgUmV0cmlldmFsTWV0aG9kKGVsZW1lbnQsIEJhc2VVUkkpOworCSAgICBTdHJpbmcgdHlwZSA9IHJtLmdldFR5cGUoKTsJCSAgIAorCSAgICBYTUxTaWduYXR1cmVJbnB1dCByZXNvdXJjZSA9IHJlc29sdmVJbnB1dChybSwgQmFzZVVSSSk7CisJICAgIGlmIChSZXRyaWV2YWxNZXRob2QuVFlQRV9SQVdYNTA5LmVxdWFscyh0eXBlKSkgeworICAgICAgICAJWDUwOUNlcnRpZmljYXRlIGNlcnQgPSBnZXRSYXdDZXJ0aWZpY2F0ZShyZXNvdXJjZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNlcnQ7CisJICAgIH0gCisJICAgIEVsZW1lbnQgZSA9IG9idGFpblJlZmVyZW5jZUVsZW1lbnQocmVzb3VyY2UpOworCSAgICByZXR1cm4gcmVzb2x2ZUNlcnRpZmljYXRlKGUsIEJhc2VVUkksIHN0b3JhZ2UpOworICAgICAgICB9IGNhdGNoIChYTUxTZWN1cml0eUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgbG9nLmRlYnVnKCJYTUxTZWN1cml0eUV4Y2VwdGlvbiIsIGV4KTsKKyAgICAgICAgfSBjYXRjaCAoQ2VydGlmaWNhdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIGxvZy5kZWJ1ZygiQ2VydGlmaWNhdGVFeGNlcHRpb24iLCBleCk7CisgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBsb2cuZGVidWcoIklPRXhjZXB0aW9uIiwgZXgpOworICAgICAgICB9IGNhdGNoIChQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIGUpIHsKKwkgICAgbG9nLmRlYnVnKCJQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIiwgZSk7CisgICAgICAgIH0gY2F0Y2ggKFNBWEV4Y2VwdGlvbiBlKSB7CisJICAgIGxvZy5kZWJ1ZygiU0FYRXhjZXB0aW9uIiwgZSk7CisgICAgICAgIH0gCisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgIAorICAgIC8qKgorICAgICAqIFJldHJpZXZlcyBhIHg1MDlDZXJ0aWZpY2F0ZSBmcm9tIHRoZSBnaXZlbiBpbmZvcm1hdGlvbgorICAgICAqIEBwYXJhbSBlCisgICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAgKiBAcGFyYW0gc3RvcmFnZQorICAgICAqIEByZXR1cm4KKyAgICAgKiBAdGhyb3dzIEtleVJlc29sdmVyRXhjZXB0aW9uIAorICAgICAqLworICAgIHN0YXRpYyBwcml2YXRlIFg1MDlDZXJ0aWZpY2F0ZSByZXNvbHZlQ2VydGlmaWNhdGUoRWxlbWVudCBlLAorICAgICAgICBTdHJpbmcgQmFzZVVSSSwgU3RvcmFnZVJlc29sdmVyIHN0b3JhZ2UpIHRocm93cyBLZXlSZXNvbHZlckV4Y2VwdGlvbiB7CisgICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkgeworCSAgICBsb2cuZGVidWcoIk5vdyB3ZSBoYXZlIGEgeyIgKyBlLmdldE5hbWVzcGFjZVVSSSgpICsgIn0iCisgICAgICAgICAgICAgICAgKyBlLmdldExvY2FsTmFtZSgpICsgIiBFbGVtZW50Iik7CisgICAgICAgIH0KKyAgICAgICAgLy8gQW4gZWxlbWVudCBoYXMgYmVlbiBwcm92aWRlZAorICAgICAgICBpZiAoZSAhPSBudWxsKSB7IAorCSAgICByZXR1cm4gS2V5UmVzb2x2ZXIuZ2V0WDUwOUNlcnRpZmljYXRlKGUsIEJhc2VVUkksIHN0b3JhZ2UpOworICAgICAgICB9CisJcmV0dXJuIG51bGw7CisgICAgfSAKKyAgIAorICAgIC8qKgorICAgICAqIFJldHJpZXZlcyBhIHg1MDlDZXJ0aWZpY2F0ZSBmcm9tIHRoZSBnaXZlbiBpbmZvcm1hdGlvbgorICAgICAqIEBwYXJhbSBlCisgICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAgKiBAcGFyYW0gc3RvcmFnZQorICAgICAqIEByZXR1cm4KKyAgICAgKiBAdGhyb3dzIEtleVJlc29sdmVyRXhjZXB0aW9uIAorICAgICAqLworICAgIHN0YXRpYyBwcml2YXRlIFB1YmxpY0tleSByZXNvbHZlS2V5KEVsZW1lbnQgZSwgU3RyaW5nIEJhc2VVUkksIAorICAgICAgICBTdG9yYWdlUmVzb2x2ZXIgc3RvcmFnZSkgdGhyb3dzIEtleVJlc29sdmVyRXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKSB7CisJICAgIGxvZy5kZWJ1ZygiTm93IHdlIGhhdmUgYSB7IiArIGUuZ2V0TmFtZXNwYWNlVVJJKCkgKyAifSIKKyAgICAgICAgICAgICAgICArIGUuZ2V0TG9jYWxOYW1lKCkgKyAiIEVsZW1lbnQiKTsKKyAgICAgICAgfQorICAgICAgICAvLyBBbiBlbGVtZW50IGhhcyBiZWVuIHByb3ZpZGVkCisgICAgICAgCWlmIChlICE9IG51bGwpIHsgCisJICAgIHJldHVybiBLZXlSZXNvbHZlci5nZXRQdWJsaWNLZXkoZSwgQmFzZVVSSSwgc3RvcmFnZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgc3RhdGljIHByaXZhdGUgWDUwOUNlcnRpZmljYXRlIGdldFJhd0NlcnRpZmljYXRlKFhNTFNpZ25hdHVyZUlucHV0IHJlc291cmNlKQorICAgIHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiwgQ2VydGlmaWNhdGVFeGNlcHRpb24geworICAgICAgICBieXRlIGlucHV0Qnl0ZXNbXSA9IHJlc291cmNlLmdldEJ5dGVzKCk7CSAgIAorICAgICAgICAvLyBpZiB0aGUgcmVzb3VyY2Ugc3RvcmVzIGEgcmF3IGNlcnRpZmljYXRlLCB3ZSBoYXZlIHRvIGhhbmRsZSBpdAorICAgICAgICBDZXJ0aWZpY2F0ZUZhY3RvcnkgY2VydEZhY3QgPSAKKyAgICAgICAgICAgIENlcnRpZmljYXRlRmFjdG9yeS5nZXRJbnN0YW5jZShYTUxYNTA5Q2VydGlmaWNhdGUuSkNBX0NFUlRfSUQpOworICAgICAgICBYNTA5Q2VydGlmaWNhdGUgY2VydCA9IChYNTA5Q2VydGlmaWNhdGUpIAorICAgICAgICAgICAgY2VydEZhY3QuZ2VuZXJhdGVDZXJ0aWZpY2F0ZShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oaW5wdXRCeXRlcykpOworICAgICAgICByZXR1cm4gY2VydDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXNvbHZlcyB0aGUgaW5wdXQgZnJvbSB0aGUgZ2l2ZW4gcmV0cmlldmFsIG1ldGhvZCAKKyAgICAgKiBAcmV0dXJuCisgICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbiAKKyAgICAgKi8KKyAgICBzdGF0aWMgcHJpdmF0ZSBYTUxTaWduYXR1cmVJbnB1dCByZXNvbHZlSW5wdXQoUmV0cmlldmFsTWV0aG9kIHJtLAorICAgICAgICBTdHJpbmcgQmFzZVVSSSkgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKyAgICAgICAgQXR0ciB1cmkgPSBybS5nZXRVUklBdHRyKCk7CisgICAgICAgIC8vIEFwcGx5IHRoZSB0cmFuc2Zvcm1zCisgICAgICAgIFRyYW5zZm9ybXMgdHJhbnNmb3JtcyA9IHJtLmdldFRyYW5zZm9ybXMoKTsKKyAgICAgICAgUmVzb3VyY2VSZXNvbHZlciByZXNSZXMgPSBSZXNvdXJjZVJlc29sdmVyLmdldEluc3RhbmNlKHVyaSwgQmFzZVVSSSk7CisgICAgICAgIGlmIChyZXNSZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgWE1MU2lnbmF0dXJlSW5wdXQgcmVzb3VyY2UgPSByZXNSZXMucmVzb2x2ZSh1cmksIEJhc2VVUkkpOworICAgICAgICAgICAgaWYgKHRyYW5zZm9ybXMgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygiV2UgaGF2ZSBUcmFuc2Zvcm1zIik7CisJICAgICAgICByZXNvdXJjZSA9IHRyYW5zZm9ybXMucGVyZm9ybVRyYW5zZm9ybXMocmVzb3VyY2UpOworICAgICAgICAgICAgfQkJICAKKwkgICAgcmV0dXJuIHJlc291cmNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgIAorICAgIC8qKgorICAgICAqIFBhcnNlcyBhIGJ5dGUgYXJyYXkgYW5kIHJldHVybnMgdGhlIHBhcnNlZCBFbGVtZW50LgorICAgICAqCisgICAgICogQHBhcmFtIGJ5dGVzCisgICAgICogQHJldHVybiB0aGUgRG9jdW1lbnQgRWxlbWVudCBhZnRlciBwYXJzaW5nIGJ5dGVzIAorICAgICAqIEB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24gaWYgc29tZXRoaW5nIGdvZXMgd3JvbmcKKyAgICAgKi8KKyAgICBzdGF0aWMgRWxlbWVudCBnZXREb2NGcm9tQnl0ZXMoYnl0ZVtdIGJ5dGVzKSB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24geworICAgICAgICB0cnkgeworICAgICAgICAgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisgICAgICAgICAgICBkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisgICAgICAgICAgICBEb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgICAgICAgICBEb2N1bWVudCBkb2MgPSBkYi5wYXJzZShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oYnl0ZXMpKTsKKyAgICAgICAgICAgIHJldHVybiBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCk7CisgICAgICAgIH0gY2F0Y2ggKFNBWEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEtleVJlc29sdmVyRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBLZXlSZXNvbHZlckV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICAgIH0gY2F0Y2ggKFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBLZXlSZXNvbHZlckV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNZXRob2QgZW5naW5lUmVzb2x2ZVNlY3JldEtleQorICAgICAqIEBpbmhlcml0RG9jCisgICAgICogQHBhcmFtIGVsZW1lbnQKKyAgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICAqIEBwYXJhbSBzdG9yYWdlCisgICAgICovCisgICAgcHVibGljIGphdmF4LmNyeXB0by5TZWNyZXRLZXkgZW5naW5lTG9va3VwQW5kUmVzb2x2ZVNlY3JldEtleSgKKyAgICAgICAgICAgRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSwgU3RvcmFnZVJlc29sdmVyIHN0b3JhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAKKyAgICBzdGF0aWMgRWxlbWVudCBnZXREb2N1bWVudEVsZW1lbnQoU2V0IHNldCkgeworICAgICAgICBJdGVyYXRvciBpdCA9IHNldC5pdGVyYXRvcigpOworICAgICAgICBFbGVtZW50IGUgPSBudWxsOworICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7CisJICAgIE5vZGUgY3VycmVudE5vZGUgPSAoTm9kZSkgaXQubmV4dCgpOworCSAgICBpZiAoY3VycmVudE5vZGUgIT0gbnVsbCAmJiBOb2RlLkVMRU1FTlRfTk9ERSA9PSBjdXJyZW50Tm9kZS5nZXROb2RlVHlwZSgpKSB7CisJICAgICAgICBlID0gKEVsZW1lbnQpIGN1cnJlbnROb2RlOworCSAgICAgICAgYnJlYWs7CisJICAgIH0KKyAgICAgICAgfQorICAgICAgICBMaXN0IHBhcmVudHMgPSBuZXcgQXJyYXlMaXN0KDEwKTsKKyAgCQkKKyAgCS8vIE9idGFpbiBhbGwgdGhlIHBhcmVudHMgb2YgdGhlIGVsZW1udAorICAJd2hpbGUgKGUgIT0gbnVsbCkgeworICAJICAgIHBhcmVudHMuYWRkKGUpOworICAJICAgIE5vZGUgbiA9IGUuZ2V0UGFyZW50Tm9kZSgpOworICAJICAgIGlmIChuID09IG51bGwgfHwgTm9kZS5FTEVNRU5UX05PREUgIT0gbi5nZXROb2RlVHlwZSgpKSB7CisgIAkJYnJlYWs7CisgIAkgICAgfQorICAJICAgIGUgPSAoRWxlbWVudCkgbjsKKyAgCX0KKyAgCS8vIFZpc2l0IHRoZW0gaW4gcmV2ZXJzZSBvcmRlci4KKyAgCUxpc3RJdGVyYXRvciBpdDIgPSBwYXJlbnRzLmxpc3RJdGVyYXRvcihwYXJlbnRzLnNpemUoKS0xKTsKKyAgCUVsZW1lbnQgZWxlID0gbnVsbDsKKyAgCXdoaWxlIChpdDIuaGFzUHJldmlvdXMoKSkgeworICAJICAgIGVsZSA9IChFbGVtZW50KSBpdDIucHJldmlvdXMoKTsKKyAgCSAgICBpZiAoc2V0LmNvbnRhaW5zKGVsZSkpIHsKKyAgCQlyZXR1cm4gZWxlOworICAJICAgIH0KKyAgICAgCX0KKwlyZXR1cm4gbnVsbDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9rZXlyZXNvbHZlci9pbXBsZW1lbnRhdGlvbnMvWDUwOUNlcnRpZmljYXRlUmVzb2x2ZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2tleXJlc29sdmVyL2ltcGxlbWVudGF0aW9ucy9YNTA5Q2VydGlmaWNhdGVSZXNvbHZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NjBkOWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9rZXlyZXNvbHZlci9pbXBsZW1lbnRhdGlvbnMvWDUwOUNlcnRpZmljYXRlUmVzb2x2ZXIuamF2YQpAQCAtMCwwICsxLDEyNyBAQAorCisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmtleXJlc29sdmVyLmltcGxlbWVudGF0aW9uczsKKworCisKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlB1YmxpY0tleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlOworCisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLlhNTFNlY3VyaXR5RXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC54NTA5LlhNTFg1MDlDZXJ0aWZpY2F0ZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmtleXJlc29sdmVyLktleVJlc29sdmVyRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMua2V5cmVzb2x2ZXIuS2V5UmVzb2x2ZXJTcGk7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5zdG9yYWdlLlN0b3JhZ2VSZXNvbHZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworCisvKioKKyAqIFJlc29sdmVzIENlcnRpZmljYXRlcyB3aGljaCBhcmUgZGlyZWN0bHkgY29udGFpbmVkIGluc2lkZSBhCisgKiA8Q09ERT5kczpYNTA5Q2VydGlmaWNhdGU8L0NPREU+IEVsZW1lbnQuCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICovCitwdWJsaWMgY2xhc3MgWDUwOUNlcnRpZmljYXRlUmVzb2x2ZXIgZXh0ZW5kcyBLZXlSZXNvbHZlclNwaSB7CisKKyAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZyhYNTA5Q2VydGlmaWNhdGVSZXNvbHZlci5jbGFzcy5nZXROYW1lKCkpOworCisKKworICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lUmVzb2x2ZVB1YmxpY0tleQorICAgICogQGluaGVyaXREb2MKKyAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICogQHBhcmFtIHN0b3JhZ2UKKyAgICAqCisgICAgKiBAdGhyb3dzIEtleVJlc29sdmVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBQdWJsaWNLZXkgZW5naW5lTG9va3VwQW5kUmVzb2x2ZVB1YmxpY0tleSgKKyAgICAgICAgICAgRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSwgU3RvcmFnZVJlc29sdmVyIHN0b3JhZ2UpCisgICAgICAgICAgICAgIHRocm93cyBLZXlSZXNvbHZlckV4Y2VwdGlvbiB7CisKKyAgICAgIFg1MDlDZXJ0aWZpY2F0ZSBjZXJ0ID0gdGhpcy5lbmdpbmVMb29rdXBSZXNvbHZlWDUwOUNlcnRpZmljYXRlKGVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2VVUkksIHN0b3JhZ2UpOworCisgICAgICBpZiAoY2VydCAhPSBudWxsKSB7CisgICAgICAgICByZXR1cm4gY2VydC5nZXRQdWJsaWNLZXkoKTsKKyAgICAgIH0KKworICAgICAgcmV0dXJuIG51bGw7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGVuZ2luZVJlc29sdmVYNTA5Q2VydGlmaWNhdGUKKyAgICAqIEBpbmhlcml0RG9jCisgICAgKiBAcGFyYW0gZWxlbWVudAorICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAqIEBwYXJhbSBzdG9yYWdlCisgICAgKgorICAgICogQHRocm93cyBLZXlSZXNvbHZlckV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgWDUwOUNlcnRpZmljYXRlIGVuZ2luZUxvb2t1cFJlc29sdmVYNTA5Q2VydGlmaWNhdGUoCisgICAgICAgICAgIEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIEJhc2VVUkksIFN0b3JhZ2VSZXNvbHZlciBzdG9yYWdlKQorICAgICAgICAgICAgICB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24geworCisgICAgICB0cnkgeworICAgIAkgIEVsZW1lbnRbXSBlbHM9WE1MVXRpbHMuc2VsZWN0RHNOb2RlcyhlbGVtZW50LmdldEZpcnN0Q2hpbGQoKSwKKyAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5fVEFHX1g1MDlDRVJUSUZJQ0FURSk7CisgICAgICAgICBpZiAoKGVscyA9PSBudWxsKSB8fCAoZWxzLmxlbmd0aCA9PSAwKSkgeyAgCisgICAgICAgIAkgRWxlbWVudCBlbD1YTUxVdGlscy5zZWxlY3REc05vZGUoZWxlbWVudC5nZXRGaXJzdENoaWxkKCksCisgICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMuX1RBR19YNTA5REFUQSwwKTsKKyAgICAgICAgICAgICBpZiAoZWwhPW51bGwpIHsKKyAgICAgICAgICAgIAkgcmV0dXJuIGVuZ2luZUxvb2t1cFJlc29sdmVYNTA5Q2VydGlmaWNhdGUoZWwsIEJhc2VVUkksIHN0b3JhZ2UpOworICAgICAgICAgICAgIH0gICAgICAgIAkgCisgICAgICAgIAkgcmV0dXJuIG51bGw7ICAgICAgICAgICAgCisgICAgICAgICB9CisKKyAgICAgICAgIC8vIHBvcHVsYXRlIE9iamVjdCBhcnJheQorICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBlbHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgCSBYTUxYNTA5Q2VydGlmaWNhdGUgeG1sQ2VydD1uZXcgWE1MWDUwOUNlcnRpZmljYXRlKGVsc1tpXSwgQmFzZVVSSSk7CisgICAgICAgIAkgWDUwOUNlcnRpZmljYXRlIGNlcnQgPSB4bWxDZXJ0LmdldFg1MDlDZXJ0aWZpY2F0ZSgpOworICAgICAgICAgICAgaWYgKGNlcnQhPW51bGwpIHsKKyAgICAgICAgICAgIAlyZXR1cm4gY2VydDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAgIHJldHVybiBudWxsOworICAgICAgfSBjYXRjaCAoWE1MU2VjdXJpdHlFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIGxvZy5kZWJ1ZygiWE1MU2VjdXJpdHlFeGNlcHRpb24iLCBleCk7CisKKyAgICAgICAgIHRocm93IG5ldyBLZXlSZXNvbHZlckV4Y2VwdGlvbigiZ2VuZXJpYy5FbXB0eU1lc3NhZ2UiLCBleCk7CisgICAgICB9CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGVuZ2luZVJlc29sdmVTZWNyZXRLZXkKKyAgICAqIEBpbmhlcml0RG9jCisgICAgKiBAcGFyYW0gZWxlbWVudAorICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAqIEBwYXJhbSBzdG9yYWdlCisgICAgKgorICAgICovCisgICBwdWJsaWMgamF2YXguY3J5cHRvLlNlY3JldEtleSBlbmdpbmVMb29rdXBBbmRSZXNvbHZlU2VjcmV0S2V5KAorICAgICAgICAgICBFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJLCBTdG9yYWdlUmVzb2x2ZXIgc3RvcmFnZSkKKyAgIHsKKyAgICAgIHJldHVybiBudWxsOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMva2V5cmVzb2x2ZXIvaW1wbGVtZW50YXRpb25zL1g1MDlJc3N1ZXJTZXJpYWxSZXNvbHZlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMva2V5cmVzb2x2ZXIvaW1wbGVtZW50YXRpb25zL1g1MDlJc3N1ZXJTZXJpYWxSZXNvbHZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5OGU5ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9rZXlyZXNvbHZlci9pbXBsZW1lbnRhdGlvbnMvWDUwOUlzc3VlclNlcmlhbFJlc29sdmVyLmphdmEKQEAgLTAsMCArMSwxNDcgQEAKKworLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDEwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5rZXlyZXNvbHZlci5pbXBsZW1lbnRhdGlvbnM7CisKKworCitpbXBvcnQgamF2YS5zZWN1cml0eS5QdWJsaWNLZXk7CitpbXBvcnQgamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLlhNTFNlY3VyaXR5RXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC5YNTA5RGF0YTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmNvbnRlbnQueDUwOS5YTUxYNTA5SXNzdWVyU2VyaWFsOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMua2V5cmVzb2x2ZXIuS2V5UmVzb2x2ZXJFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5rZXlyZXNvbHZlci5LZXlSZXNvbHZlclNwaTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLnN0b3JhZ2UuU3RvcmFnZVJlc29sdmVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmVFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CisKKworLyoqCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICovCitwdWJsaWMgY2xhc3MgWDUwOUlzc3VlclNlcmlhbFJlc29sdmVyIGV4dGVuZHMgS2V5UmVzb2x2ZXJTcGkgeworCisgICAvKioge0BsaW5rIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nfSBsb2dnaW5nIGZhY2lsaXR5ICovCisgICAgc3RhdGljIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZyBsb2cgPSAKKyAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeS5nZXRMb2coCisgICAgICAgICAgICAgICAgICAgIFg1MDlJc3N1ZXJTZXJpYWxSZXNvbHZlci5jbGFzcy5nZXROYW1lKCkpOworCisgIAorICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwdWJsaWMgUHVibGljS2V5IGVuZ2luZUxvb2t1cEFuZFJlc29sdmVQdWJsaWNLZXkoCisgICAgICAgICAgIEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIEJhc2VVUkksIFN0b3JhZ2VSZXNvbHZlciBzdG9yYWdlKQorICAgICAgICAgICAgICB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24geworCisgICAgICBYNTA5Q2VydGlmaWNhdGUgY2VydCA9IHRoaXMuZW5naW5lTG9va3VwUmVzb2x2ZVg1MDlDZXJ0aWZpY2F0ZShlbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNlVVJJLCBzdG9yYWdlKTsKKworICAgICAgaWYgKGNlcnQgIT0gbnVsbCkgeworICAgICAgICAgcmV0dXJuIGNlcnQuZ2V0UHVibGljS2V5KCk7CisgICAgICB9CisKKyAgICAgIHJldHVybiBudWxsOworICAgfQorCisgICAvKiogQGluaGVyaXREb2MgKi8KKyAgIHB1YmxpYyBYNTA5Q2VydGlmaWNhdGUgZW5naW5lTG9va3VwUmVzb2x2ZVg1MDlDZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSwgU3RvcmFnZVJlc29sdmVyIHN0b3JhZ2UpCisgICAgICAgICAgICAgIHRocm93cyBLZXlSZXNvbHZlckV4Y2VwdGlvbiB7CisJIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkKKwkgICAJbG9nLmRlYnVnKCJDYW4gSSByZXNvbHZlICIgKyBlbGVtZW50LmdldFRhZ05hbWUoKSArICI/Iik7CisKKwkgIFg1MDlEYXRhIHg1MDlkYXRhID0gbnVsbDsKKwkgIHRyeSB7CisJICAgICB4NTA5ZGF0YSA9IG5ldyBYNTA5RGF0YShlbGVtZW50LCBCYXNlVVJJKTsKKwkgICB9IGNhdGNoIChYTUxTaWduYXR1cmVFeGNlcHRpb24gZXgpIHsKKwkgICAgICBsb2cuZGVidWcoIkkgY2FuJ3QiKTsKKyAgICAgICAgIHJldHVybiBudWxsOworCSAgIH0gY2F0Y2ggKFhNTFNlY3VyaXR5RXhjZXB0aW9uIGV4KSB7CisJICAgICAgbG9nLmRlYnVnKCJJIGNhbid0Iik7CisgICAgICAgICAgcmV0dXJuIG51bGw7CisJICAgfQorCisJICAgaWYgKHg1MDlkYXRhID09IG51bGwpIHsKKwkgICAgICBsb2cuZGVidWcoIkkgY2FuJ3QiKTsKKwkgICAgICByZXR1cm4gbnVsbDsKKwkgICB9CisKKwkgICBpZiAoIXg1MDlkYXRhLmNvbnRhaW5zSXNzdWVyU2VyaWFsKCkpIHsKKwkgICAgICAgICAgICByZXR1cm4gbnVsbDsKKwkgICB9CisgICAgICB0cnkgeworICAgICAgICAgaWYgKHN0b3JhZ2UgPT0gbnVsbCkgeworICAgICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyBDb25zdGFudHMuX1RBR19YNTA5SVNTVUVSU0VSSUFMIH07CisgICAgICAgICAgICBLZXlSZXNvbHZlckV4Y2VwdGlvbiBleCA9CisgICAgICAgICAgICAgICBuZXcgS2V5UmVzb2x2ZXJFeGNlcHRpb24oIktleVJlc29sdmVyLm5lZWRTdG9yYWdlUmVzb2x2ZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4QXJncyk7CisKKyAgICAgICAgICAgIGxvZy5pbmZvKCIiLCBleCk7CisgICAgICAgICAgICB0aHJvdyBleDsKKyAgICAgICAgIH0KKyAgICAgICAgIAorICAgICAgICAgaW50IG5vT2ZJU1MgPSB4NTA5ZGF0YS5sZW5ndGhJc3N1ZXJTZXJpYWwoKTsKKworICAgICAgICAgSXRlcmF0b3Igc3RvcmFnZUl0ZXJhdG9yID0gc3RvcmFnZS5nZXRJdGVyYXRvcigpOworICAgICAgICAgd2hpbGUgKHN0b3JhZ2VJdGVyYXRvci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgIFg1MDlDZXJ0aWZpY2F0ZSBjZXJ0ID0gKFg1MDlDZXJ0aWZpY2F0ZSlzdG9yYWdlSXRlcmF0b3IubmV4dCgpOworICAgICAgICAgICAgWE1MWDUwOUlzc3VlclNlcmlhbCBjZXJ0U2VyaWFsID0gbmV3IFhNTFg1MDlJc3N1ZXJTZXJpYWwoZWxlbWVudC5nZXRPd25lckRvY3VtZW50KCksIGNlcnQpOworCisgICAgICAgICAgICBpZiAobG9nLmlzRGVidWdFbmFibGVkKCkpIHsKKyAgICAgICAgICAgIAlsb2cuZGVidWcoIkZvdW5kIENlcnRpZmljYXRlIElzc3VlcjogIgorICAgICAgICAgICAgICAgICAgICAgICsgY2VydFNlcmlhbC5nZXRJc3N1ZXJOYW1lKCkpOworICAgICAgICAgICAgCWxvZy5kZWJ1ZygiRm91bmQgQ2VydGlmaWNhdGUgU2VyaWFsOiAiCisgICAgICAgICAgICAgICAgICAgICAgKyBjZXJ0U2VyaWFsLmdldFNlcmlhbE51bWJlcigpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8bm9PZklTUzsgaSsrKSB7CisgICAgICAgICAgICAgICBYTUxYNTA5SXNzdWVyU2VyaWFsIHhtbGlzcyA9IHg1MDlkYXRhLml0ZW1Jc3N1ZXJTZXJpYWwoaSk7CisKKyAgICAgICAgICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkgeworICAgICAgICAgICAgICAgCSAgICBsb2cuZGVidWcoIkZvdW5kIEVsZW1lbnQgSXNzdWVyOiAgICAgIgorICAgICAgICAgICAgICAgICAgICAgICAgICsgeG1saXNzLmdldElzc3Vlck5hbWUoKSk7CisgICAgICAgICAgICAgICAJICAgIGxvZy5kZWJ1ZygiRm91bmQgRWxlbWVudCBTZXJpYWw6ICAgICAiCisgICAgICAgICAgICAgICAgICAgICAgICAgKyB4bWxpc3MuZ2V0U2VyaWFsTnVtYmVyKCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgIGlmIChjZXJ0U2VyaWFsLmVxdWFscyh4bWxpc3MpKSB7CisgICAgICAgICAgICAgICAgICBsb2cuZGVidWcoIm1hdGNoICEhISAiKTsKKworICAgICAgICAgICAgICAgICAgcmV0dXJuIGNlcnQ7CisgICAgICAgICAgICAgICB9IAorICAgICAgICAgICAgICAgIGxvZy5kZWJ1Zygibm8gbWF0Y2guLi4iKTsgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKworICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICB9IGNhdGNoIChYTUxTZWN1cml0eUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgbG9nLmRlYnVnKCJYTUxTZWN1cml0eUV4Y2VwdGlvbiIsIGV4KTsKKworICAgICAgICAgdGhyb3cgbmV3IEtleVJlc29sdmVyRXhjZXB0aW9uKCJnZW5lcmljLkVtcHR5TWVzc2FnZSIsIGV4KTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwdWJsaWMgamF2YXguY3J5cHRvLlNlY3JldEtleSBlbmdpbmVMb29rdXBBbmRSZXNvbHZlU2VjcmV0S2V5KAorICAgICAgICAgICBFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJLCBTdG9yYWdlUmVzb2x2ZXIgc3RvcmFnZSkgeworICAgICAgcmV0dXJuIG51bGw7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9rZXlyZXNvbHZlci9pbXBsZW1lbnRhdGlvbnMvWDUwOVNLSVJlc29sdmVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9rZXlyZXNvbHZlci9pbXBsZW1lbnRhdGlvbnMvWDUwOVNLSVJlc29sdmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMwZjY1NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2tleXJlc29sdmVyL2ltcGxlbWVudGF0aW9ucy9YNTA5U0tJUmVzb2x2ZXIuamF2YQpAQCAtMCwwICsxLDE1NyBAQAorCisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmtleXJlc29sdmVyLmltcGxlbWVudGF0aW9uczsKKworCisKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlB1YmxpY0tleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKKworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmNvbnRlbnQueDUwOS5YTUxYNTA5U0tJOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMua2V5cmVzb2x2ZXIuS2V5UmVzb2x2ZXJFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5rZXlyZXNvbHZlci5LZXlSZXNvbHZlclNwaTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLnN0b3JhZ2UuU3RvcmFnZVJlc29sdmVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5YTUxVdGlsczsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworCisKKy8qKgorICoKKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKi8KK3B1YmxpYyBjbGFzcyBYNTA5U0tJUmVzb2x2ZXIgZXh0ZW5kcyBLZXlSZXNvbHZlclNwaSB7CisKKyAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZyhYNTA5U0tJUmVzb2x2ZXIuY2xhc3MuZ2V0TmFtZSgpKTsKKworICAgCisgICAvKioKKyAgICAqIE1ldGhvZCBlbmdpbmVSZXNvbHZlUHVibGljS2V5CisgICAgKgorICAgICogQHBhcmFtIGVsZW1lbnQKKyAgICAqIEBwYXJhbSBCYXNlVVJJCisgICAgKiBAcGFyYW0gc3RvcmFnZQorICAgICogQHJldHVybiBudWxsIGlmIG5vIHtAbGluayBQdWJsaWNLZXl9IGNvdWxkIGJlIG9idGFpbmVkCisgICAgKiBAdGhyb3dzIEtleVJlc29sdmVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBQdWJsaWNLZXkgZW5naW5lTG9va3VwQW5kUmVzb2x2ZVB1YmxpY0tleSgKKyAgICAgICAgICAgRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSwgU3RvcmFnZVJlc29sdmVyIHN0b3JhZ2UpCisgICAgICAgICAgICAgIHRocm93cyBLZXlSZXNvbHZlckV4Y2VwdGlvbiB7CisKKyAgICAgIFg1MDlDZXJ0aWZpY2F0ZSBjZXJ0ID0gdGhpcy5lbmdpbmVMb29rdXBSZXNvbHZlWDUwOUNlcnRpZmljYXRlKGVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2VVUkksIHN0b3JhZ2UpOworCisgICAgICBpZiAoY2VydCAhPSBudWxsKSB7CisgICAgICAgICByZXR1cm4gY2VydC5nZXRQdWJsaWNLZXkoKTsKKyAgICAgIH0KKworICAgICAgcmV0dXJuIG51bGw7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGVuZ2luZVJlc29sdmVYNTA5Q2VydGlmaWNhdGUKKyAgICAqIEBpbmhlcml0RG9jCisgICAgKiBAcGFyYW0gZWxlbWVudAorICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAqIEBwYXJhbSBzdG9yYWdlCisgICAgKgorICAgICogQHRocm93cyBLZXlSZXNvbHZlckV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgWDUwOUNlcnRpZmljYXRlIGVuZ2luZUxvb2t1cFJlc29sdmVYNTA5Q2VydGlmaWNhdGUoCisgICAgICAgICAgIEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIEJhc2VVUkksIFN0b3JhZ2VSZXNvbHZlciBzdG9yYWdlKQorICAgICAgICAgICAgICB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24geworCSAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkgeworCSAgICAgbG9nLmRlYnVnKCJDYW4gSSByZXNvbHZlICIgKyBlbGVtZW50LmdldFRhZ05hbWUoKSArICI/Iik7CisJICAgfQkgICAgICAKKwkgICBpZiAoIVhNTFV0aWxzLmVsZW1lbnRJc0luU2lnbmF0dXJlU3BhY2UoZWxlbWVudCwKKyAgICAgICAgICAgICAgQ29uc3RhbnRzLl9UQUdfWDUwOURBVEEpKSB7CisJICAgICAgICAgbG9nLmRlYnVnKCJJIGNhbid0Iik7CisJICAgICAgICAgcmV0dXJuIG51bGw7CisJICAgfQorCSAgIC8qKiBGaWVsZCBfeDUwOWNoaWxkT2JqZWN0W10gKi8KKwkgICBYTUxYNTA5U0tJIHg1MDljaGlsZE9iamVjdFtdID0gbnVsbDsKKwkgICAKKwkgICBFbGVtZW50IHg1MDljaGlsZE5vZGVzW10gPSBudWxsOworCSAgIHg1MDljaGlsZE5vZGVzID0gWE1MVXRpbHMuc2VsZWN0RHNOb2RlcyhlbGVtZW50LmdldEZpcnN0Q2hpbGQoKSwKKwkgICAgICAgICAgICAgICAgICBDb25zdGFudHMuX1RBR19YNTA5U0tJKTsKKworCSAgIGlmICghKCh4NTA5Y2hpbGROb2RlcyAhPSBudWxsKQorCSAgICAgICAgICAgICAgICAgJiYgKHg1MDljaGlsZE5vZGVzLmxlbmd0aCA+IDApKSkgeworCQkgICBsb2cuZGVidWcoIkkgY2FuJ3QiKTsKKwkgICAgICAgIHJldHVybiBudWxsOworCSAgIH0KKwkgICB0cnkgeyAgICAgICAgIAorICAgICAgICAgaWYgKHN0b3JhZ2UgPT0gbnVsbCkgeworICAgICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyBDb25zdGFudHMuX1RBR19YNTA5U0tJIH07CisgICAgICAgICAgICBLZXlSZXNvbHZlckV4Y2VwdGlvbiBleCA9CisgICAgICAgICAgICAgICBuZXcgS2V5UmVzb2x2ZXJFeGNlcHRpb24oIktleVJlc29sdmVyLm5lZWRTdG9yYWdlUmVzb2x2ZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4QXJncyk7CisKKyAgICAgICAgICAgIGxvZy5pbmZvKCIiLCBleCk7CisKKyAgICAgICAgICAgIHRocm93IGV4OworICAgICAgICAgfQorCisgICAgICAgICB4NTA5Y2hpbGRPYmplY3QgPSBuZXcgWE1MWDUwOVNLSVt4NTA5Y2hpbGROb2Rlcy5sZW5ndGhdOworCisgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHg1MDljaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB4NTA5Y2hpbGRPYmplY3RbaV0gPQorICAgICAgICAgICAgICAgbmV3IFhNTFg1MDlTS0koeDUwOWNoaWxkTm9kZXNbaV0sIEJhc2VVUkkpOworICAgICAgICAgfQorCisgICAgICAgICBJdGVyYXRvciBzdG9yYWdlSXRlcmF0b3IgPSBzdG9yYWdlLmdldEl0ZXJhdG9yKCk7CisgICAgICAgICB3aGlsZSAoc3RvcmFnZUl0ZXJhdG9yLmhhc05leHQoKSkgeworICAgICAgICAgICAgWDUwOUNlcnRpZmljYXRlIGNlcnQgPSAoWDUwOUNlcnRpZmljYXRlKXN0b3JhZ2VJdGVyYXRvci5uZXh0KCk7CisgICAgICAgICAgICBYTUxYNTA5U0tJIGNlcnRTS0kgPSBuZXcgWE1MWDUwOVNLSShlbGVtZW50LmdldE93bmVyRG9jdW1lbnQoKSwgY2VydCk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgeDUwOWNoaWxkT2JqZWN0Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICBpZiAoY2VydFNLSS5lcXVhbHMoeDUwOWNoaWxkT2JqZWN0W2ldKSkgeworICAgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCJSZXR1cm4gUHVibGljS2V5IGZyb20gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgY2VydC5nZXRTdWJqZWN0RE4oKS5nZXROYW1lKCkpOworCisgICAgICAgICAgICAgICAgICByZXR1cm4gY2VydDsKKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgIH0gY2F0Y2ggKFhNTFNlY3VyaXR5RXhjZXB0aW9uIGV4KSB7CisgICAgICAgICB0aHJvdyBuZXcgS2V5UmVzb2x2ZXJFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgfQorCisgICAgICByZXR1cm4gbnVsbDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lUmVzb2x2ZVNlY3JldEtleQorICAgICogQGluaGVyaXREb2MKKyAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICogQHBhcmFtIHN0b3JhZ2UKKyAgICAqCisgICAgKi8KKyAgIHB1YmxpYyBqYXZheC5jcnlwdG8uU2VjcmV0S2V5IGVuZ2luZUxvb2t1cEFuZFJlc29sdmVTZWNyZXRLZXkoCisgICAgICAgICAgIEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIEJhc2VVUkksIFN0b3JhZ2VSZXNvbHZlciBzdG9yYWdlKQorICAgIHsKKyAgICAgIHJldHVybiBudWxsOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMva2V5cmVzb2x2ZXIvaW1wbGVtZW50YXRpb25zL1g1MDlTdWJqZWN0TmFtZVJlc29sdmVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9rZXlyZXNvbHZlci9pbXBsZW1lbnRhdGlvbnMvWDUwOVN1YmplY3ROYW1lUmVzb2x2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjExN2QxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMva2V5cmVzb2x2ZXIvaW1wbGVtZW50YXRpb25zL1g1MDlTdWJqZWN0TmFtZVJlc29sdmVyLmphdmEKQEAgLTAsMCArMSwxNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMua2V5cmVzb2x2ZXIuaW1wbGVtZW50YXRpb25zOworCisKKworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHVibGljS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGU7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworCisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLlhNTFNlY3VyaXR5RXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC54NTA5LlhNTFg1MDlTdWJqZWN0TmFtZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmtleXJlc29sdmVyLktleVJlc29sdmVyRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMua2V5cmVzb2x2ZXIuS2V5UmVzb2x2ZXJTcGk7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5zdG9yYWdlLlN0b3JhZ2VSZXNvbHZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworCisvKioKKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKi8KK3B1YmxpYyBjbGFzcyBYNTA5U3ViamVjdE5hbWVSZXNvbHZlciBleHRlbmRzIEtleVJlc29sdmVyU3BpIHsKKworICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKAorICAgICAgICAgICAgICAgICAgICBYNTA5U3ViamVjdE5hbWVSZXNvbHZlci5jbGFzcy5nZXROYW1lKCkpOworCisgICAKKyAgIC8qKgorICAgICogTWV0aG9kIGVuZ2luZVJlc29sdmVQdWJsaWNLZXkKKyAgICAqCisgICAgKiBAcGFyYW0gZWxlbWVudAorICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAqIEBwYXJhbSBzdG9yYWdlCisgICAgKiBAcmV0dXJuIG51bGwgaWYgbm8ge0BsaW5rIFB1YmxpY0tleX0gY291bGQgYmUgb2J0YWluZWQKKyAgICAqIEB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIFB1YmxpY0tleSBlbmdpbmVMb29rdXBBbmRSZXNvbHZlUHVibGljS2V5KAorICAgICAgICAgICBFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJLCBTdG9yYWdlUmVzb2x2ZXIgc3RvcmFnZSkKKyAgICAgICAgICAgICAgdGhyb3dzIEtleVJlc29sdmVyRXhjZXB0aW9uIHsKKworICAgICAgWDUwOUNlcnRpZmljYXRlIGNlcnQgPSB0aGlzLmVuZ2luZUxvb2t1cFJlc29sdmVYNTA5Q2VydGlmaWNhdGUoZWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzZVVSSSwgc3RvcmFnZSk7CisKKyAgICAgIGlmIChjZXJ0ICE9IG51bGwpIHsKKyAgICAgICAgIHJldHVybiBjZXJ0LmdldFB1YmxpY0tleSgpOworICAgICAgfQorCisgICAgICByZXR1cm4gbnVsbDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lUmVzb2x2ZVg1MDlDZXJ0aWZpY2F0ZQorICAgICogQGluaGVyaXREb2MKKyAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICogQHBhcmFtIHN0b3JhZ2UKKyAgICAqCisgICAgKiBAdGhyb3dzIEtleVJlc29sdmVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBYNTA5Q2VydGlmaWNhdGUgZW5naW5lTG9va3VwUmVzb2x2ZVg1MDlDZXJ0aWZpY2F0ZSgKKyAgICAgICAgICAgRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSwgU3RvcmFnZVJlc29sdmVyIHN0b3JhZ2UpCisgICAgICAgICAgICAgIHRocm93cyBLZXlSZXNvbHZlckV4Y2VwdGlvbiB7CisJICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKQorCSAgICAgIAlsb2cuZGVidWcoIkNhbiBJIHJlc29sdmUgIiArIGVsZW1lbnQuZ2V0VGFnTmFtZSgpICsgIj8iKTsJICAgCisJICAgRWxlbWVudFtdIHg1MDljaGlsZE5vZGVzID0gbnVsbDsJICAgCisJICAgWE1MWDUwOVN1YmplY3ROYW1lIHg1MDljaGlsZE9iamVjdFtdID0gbnVsbDsKKyAgICAgIAorCSAgIGlmICghWE1MVXRpbHMuZWxlbWVudElzSW5TaWduYXR1cmVTcGFjZShlbGVtZW50LAorCSAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLl9UQUdfWDUwOURBVEEpICkgeyAgICAgIAorCQkgICAJbG9nLmRlYnVnKCJJIGNhbid0Iik7CisJICAgICAgICAgcmV0dXJuIG51bGw7CisJICAgfQorICAgICAgIHg1MDljaGlsZE5vZGVzID0gWE1MVXRpbHMuc2VsZWN0RHNOb2RlcyhlbGVtZW50LmdldEZpcnN0Q2hpbGQoKSwKKyAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLl9UQUdfWDUwOVNVQkpFQ1ROQU1FKTsKKworICAgICAgICBpZiAoISgoeDUwOWNoaWxkTm9kZXMgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICAmJiAoeDUwOWNoaWxkTm9kZXMubGVuZ3RoID4gMCkpKSB7CisJICAgICAgICAgICAgbG9nLmRlYnVnKCJJIGNhbid0Iik7CisJICAgICAgICAgICAgcmV0dXJuIG51bGw7CisJICAgIH0KKwkgICAgIAorICAgICAgdHJ5IHsKKyAgICAgICAgIGlmIChzdG9yYWdlID09IG51bGwpIHsKKyAgICAgICAgICAgIE9iamVjdCBleEFyZ3NbXSA9IHsgQ29uc3RhbnRzLl9UQUdfWDUwOVNVQkpFQ1ROQU1FIH07CisgICAgICAgICAgICBLZXlSZXNvbHZlckV4Y2VwdGlvbiBleCA9CisgICAgICAgICAgICAgICBuZXcgS2V5UmVzb2x2ZXJFeGNlcHRpb24oIktleVJlc29sdmVyLm5lZWRTdG9yYWdlUmVzb2x2ZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4QXJncyk7CisKKyAgICAgICAgICAgIGxvZy5pbmZvKCIiLCBleCk7CisKKyAgICAgICAgICAgIHRocm93IGV4OworICAgICAgICAgfQorCisgICAgICAgICB4NTA5Y2hpbGRPYmplY3QgPQorICAgICAgICAgICAgbmV3IFhNTFg1MDlTdWJqZWN0TmFtZVt4NTA5Y2hpbGROb2Rlcy5sZW5ndGhdOworCisgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHg1MDljaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB4NTA5Y2hpbGRPYmplY3RbaV0gPQorICAgICAgICAgICAgICAgbmV3IFhNTFg1MDlTdWJqZWN0TmFtZSh4NTA5Y2hpbGROb2Rlc1tpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzZVVSSSk7CisgICAgICAgICB9CisKKyAgICAgICAgIEl0ZXJhdG9yIHN0b3JhZ2VJdGVyYXRvciA9IHN0b3JhZ2UuZ2V0SXRlcmF0b3IoKTsKKyAgICAgICAgIHdoaWxlIChzdG9yYWdlSXRlcmF0b3IuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICBYNTA5Q2VydGlmaWNhdGUgY2VydCA9IChYNTA5Q2VydGlmaWNhdGUpc3RvcmFnZUl0ZXJhdG9yLm5leHQoKTsKKyAgICAgICAgICAgIFhNTFg1MDlTdWJqZWN0TmFtZSBjZXJ0U04gPQorICAgICAgICAgICAgICAgbmV3IFhNTFg1MDlTdWJqZWN0TmFtZShlbGVtZW50LmdldE93bmVyRG9jdW1lbnQoKSwgY2VydCk7CisKKyAgICAgICAgICAgIGxvZy5kZWJ1ZygiRm91bmQgQ2VydGlmaWNhdGUgU046ICIgKyBjZXJ0U04uZ2V0U3ViamVjdE5hbWUoKSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgeDUwOWNoaWxkT2JqZWN0Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICBsb2cuZGVidWcoIkZvdW5kIEVsZW1lbnQgU046ICAgICAiCisgICAgICAgICAgICAgICAgICAgICAgICAgKyB4NTA5Y2hpbGRPYmplY3RbaV0uZ2V0U3ViamVjdE5hbWUoKSk7CisKKyAgICAgICAgICAgICAgIGlmIChjZXJ0U04uZXF1YWxzKHg1MDljaGlsZE9iamVjdFtpXSkpIHsKKyAgICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygibWF0Y2ggISEhICIpOworCisgICAgICAgICAgICAgICAgICByZXR1cm4gY2VydDsKKyAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICBsb2cuZGVidWcoIm5vIG1hdGNoLi4uIik7ICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICB9CisKKyAgICAgICAgIHJldHVybiBudWxsOworICAgICAgfSBjYXRjaCAoWE1MU2VjdXJpdHlFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIGxvZy5kZWJ1ZygiWE1MU2VjdXJpdHlFeGNlcHRpb24iLCBleCk7CisKKyAgICAgICAgIHRocm93IG5ldyBLZXlSZXNvbHZlckV4Y2VwdGlvbigiZ2VuZXJpYy5FbXB0eU1lc3NhZ2UiLCBleCk7CisgICAgICB9CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGVuZ2luZVJlc29sdmVTZWNyZXRLZXkKKyAgICAqIEBpbmhlcml0RG9jCisgICAgKiBAcGFyYW0gZWxlbWVudAorICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAqIEBwYXJhbSBzdG9yYWdlCisgICAgKgorICAgICovCisgICBwdWJsaWMgamF2YXguY3J5cHRvLlNlY3JldEtleSBlbmdpbmVMb29rdXBBbmRSZXNvbHZlU2VjcmV0S2V5KAorICAgICAgICAgICBFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJLCBTdG9yYWdlUmVzb2x2ZXIgc3RvcmFnZSkKKyAgIHsKKyAgICAgIHJldHVybiBudWxsOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMva2V5cmVzb2x2ZXIvaW1wbGVtZW50YXRpb25zL3BhY2thZ2UuaHRtbCBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2tleXJlc29sdmVyL2ltcGxlbWVudGF0aW9ucy9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ5MWZmNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2tleXJlc29sdmVyL2ltcGxlbWVudGF0aW9ucy9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSwzIEBACis8SFRNTD48SEVBRD48L0hFQUQ+PEJPRFk+PFA+CitpbXBsZW1lbnRhdGlvbnMgZm9yIHJldHJpZXZhbCBvZiBjZXJ0aWZpY2F0ZXMgYW5kIHB1YmxpYyBrZXlzIGZyb20gZWxlbWVudHMuCis8L1A+PC9CT0RZPjwvSFRNTD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9rZXlyZXNvbHZlci9wYWNrYWdlLmh0bWwgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9rZXlyZXNvbHZlci9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJmNTEzMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL2tleXJlc29sdmVyL3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDMgQEAKKzxIVE1MPjxIRUFEPjwvSEVBRD48Qk9EWT48UD4KK3RoZSByZXNvbHZlciBmcmFtZXdvcmsgZm9yIHJldHJpZXZhbCBvZiBjZXJ0aWZpY2F0ZXMgYW5kIHB1YmxpYyBrZXlzIGZyb20gZWxlbWVudHMuCis8L1A+PC9CT0RZPjwvSFRNTD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9wYWNrYWdlLmh0bWwgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJhZGViNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDMgQEAKKzxIVE1MPjxIRUFEPjwvSEVBRD48Qk9EWT48UD4KK2dlbmVyYWwga2V5IHJlbGF0ZWQgbWF0ZXJpYWwuCis8L1A+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL3N0b3JhZ2UvU3RvcmFnZVJlc29sdmVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9zdG9yYWdlL1N0b3JhZ2VSZXNvbHZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NjllYzkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9zdG9yYWdlL1N0b3JhZ2VSZXNvbHZlci5qYXZhCkBAIC0wLDAgKzEsMjI4IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLnN0b3JhZ2U7CisKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LktleVN0b3JlOworaW1wb3J0IGphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGU7CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLk5vU3VjaEVsZW1lbnRFeGNlcHRpb247CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLnN0b3JhZ2UuaW1wbGVtZW50YXRpb25zLktleVN0b3JlUmVzb2x2ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5zdG9yYWdlLmltcGxlbWVudGF0aW9ucy5TaW5nbGVDZXJ0aWZpY2F0ZVJlc29sdmVyOworCisKKy8qKgorICogVGhpcyBjbGFzcyBjb2xsZWN0cyBjdXN0b21pemVkIHJlc29sdmVycyBmb3IgQ2VydGlmaWNhdGVzLgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGNsYXNzIFN0b3JhZ2VSZXNvbHZlciB7CisKKyAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZyhTdG9yYWdlUmVzb2x2ZXIuY2xhc3MuZ2V0TmFtZSgpKTsKKworICAgLyoqIEZpZWxkIF9zdG9yYWdlUmVzb2x2ZXJzICovCisgICBMaXN0IF9zdG9yYWdlUmVzb2x2ZXJzID0gbnVsbDsKKworICAgLyoqIEZpZWxkIF9pdGVyYXRvciAqLworICAgSXRlcmF0b3IgX2l0ZXJhdG9yID0gbnVsbDsKKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBTdG9yYWdlUmVzb2x2ZXIKKyAgICAqCisgICAgKi8KKyAgIHB1YmxpYyBTdG9yYWdlUmVzb2x2ZXIoKSB7fQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFN0b3JhZ2VSZXNvbHZlcgorICAgICoKKyAgICAqIEBwYXJhbSByZXNvbHZlcgorICAgICovCisgICBwdWJsaWMgU3RvcmFnZVJlc29sdmVyKFN0b3JhZ2VSZXNvbHZlclNwaSByZXNvbHZlcikgeworICAgICAgdGhpcy5hZGQocmVzb2x2ZXIpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBhZGRSZXNvbHZlcgorICAgICoKKyAgICAqIEBwYXJhbSByZXNvbHZlcgorICAgICovCisgICBwdWJsaWMgdm9pZCBhZGQoU3RvcmFnZVJlc29sdmVyU3BpIHJlc29sdmVyKSB7CisJICAgaWYgKF9zdG9yYWdlUmVzb2x2ZXJzID09IG51bGwpCisJCSAgIF9zdG9yYWdlUmVzb2x2ZXJzID0gbmV3IEFycmF5TGlzdCgpOworICAgICAgdGhpcy5fc3RvcmFnZVJlc29sdmVycy5hZGQocmVzb2x2ZXIpOworCisgICAgICB0aGlzLl9pdGVyYXRvciA9IG51bGw7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgU3RvcmFnZVJlc29sdmVyCisgICAgKgorICAgICogQHBhcmFtIGtleVN0b3JlCisgICAgKi8KKyAgIHB1YmxpYyBTdG9yYWdlUmVzb2x2ZXIoS2V5U3RvcmUga2V5U3RvcmUpIHsKKyAgICAgIHRoaXMuYWRkKGtleVN0b3JlKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgYWRkS2V5U3RvcmUKKyAgICAqCisgICAgKiBAcGFyYW0ga2V5U3RvcmUKKyAgICAqLworICAgcHVibGljIHZvaWQgYWRkKEtleVN0b3JlIGtleVN0b3JlKSB7CisKKyAgICAgIHRyeSB7CisgICAgICAgICB0aGlzLmFkZChuZXcgS2V5U3RvcmVSZXNvbHZlcihrZXlTdG9yZSkpOworICAgICAgfSBjYXRjaCAoU3RvcmFnZVJlc29sdmVyRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICBsb2cuZXJyb3IoIkNvdWxkIG5vdCBhZGQgS2V5U3RvcmUgYmVjYXVzZSBvZjogIiwgZXgpOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFN0b3JhZ2VSZXNvbHZlcgorICAgICoKKyAgICAqIEBwYXJhbSB4NTA5Y2VydGlmaWNhdGUKKyAgICAqLworICAgcHVibGljIFN0b3JhZ2VSZXNvbHZlcihYNTA5Q2VydGlmaWNhdGUgeDUwOWNlcnRpZmljYXRlKSB7CisgICAgICB0aGlzLmFkZCh4NTA5Y2VydGlmaWNhdGUpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBhZGRDZXJ0aWZpY2F0ZQorICAgICoKKyAgICAqIEBwYXJhbSB4NTA5Y2VydGlmaWNhdGUKKyAgICAqLworICAgcHVibGljIHZvaWQgYWRkKFg1MDlDZXJ0aWZpY2F0ZSB4NTA5Y2VydGlmaWNhdGUpIHsKKyAgICAgIHRoaXMuYWRkKG5ldyBTaW5nbGVDZXJ0aWZpY2F0ZVJlc29sdmVyKHg1MDljZXJ0aWZpY2F0ZSkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRJdGVyYXRvcgorICAgICogQHJldHVybiB0aGUgaXRlcmF0b3IgZm9yIHRoZSByZXNvbHZlcnMuCisgICAgKi8KKyAgIHB1YmxpYyBJdGVyYXRvciBnZXRJdGVyYXRvcigpIHsKKyAgICAgIHJldHVybiBuZXcgU3RvcmFnZVJlc29sdmVySXRlcmF0b3IodGhpcy5fc3RvcmFnZVJlc29sdmVycy5pdGVyYXRvcigpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgaGFzTmV4dAorICAgICoKKyAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGVyZSBhcmUgbW9yZSBlbGVtZW50cy4KKyAgICAqIEBkZXByZWNhdGVkIG5vIHdheSB0byByZXN0YXJ0IHRoZSBpdGVyYXRpb24sIHVzZSB7QGxpbmsgI2dldEl0ZXJhdG9yKCkgZ2V0SXRlcmF0b3IoKX0gaW5zdGVhZAorICAgICovCisgICBwdWJsaWMgYm9vbGVhbiBoYXNOZXh0KCkgeworCisgICAgICBpZiAodGhpcy5faXRlcmF0b3IgPT0gbnVsbCkgeworICAgIAkgIGlmIChfc3RvcmFnZVJlc29sdmVycyA9PSBudWxsKQorICAgCQkgICBfc3RvcmFnZVJlc29sdmVycyA9IG5ldyBBcnJheUxpc3QoKTsKKyAgICAgICAgIHRoaXMuX2l0ZXJhdG9yID0gbmV3IFN0b3JhZ2VSZXNvbHZlckl0ZXJhdG9yKHRoaXMuX3N0b3JhZ2VSZXNvbHZlcnMuaXRlcmF0b3IoKSk7CisgICAgICB9CisKKyAgICAgIHJldHVybiB0aGlzLl9pdGVyYXRvci5oYXNOZXh0KCk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIG5leHQKKyAgICAqCisgICAgKiBAcmV0dXJuIHRoZSBuZXh0IGVsZW1lbnQKKyAgICAqIEBkZXByZWNhdGVkIG5vIHdheSB0byByZXN0YXJ0IHRoZSBpdGVyYXRpb24sIHVzZSB7QGxpbmsgI2dldEl0ZXJhdG9yKCkgZ2V0SXRlcmF0b3IoKX0gaW5zdGVhZAorICAgICovCisgICBwdWJsaWMgWDUwOUNlcnRpZmljYXRlIG5leHQoKSB7CisgICAgICAKKyAgICAgIGlmICh0aGlzLl9pdGVyYXRvciA9PSBudWxsKSB7CisgICAgICAgICBpZiAoX3N0b3JhZ2VSZXNvbHZlcnMgPT0gbnVsbCkKKyAgICAgICAgICAgIF9zdG9yYWdlUmVzb2x2ZXJzID0gbmV3IEFycmF5TGlzdCgpOworICAgICAgICAgdGhpcy5faXRlcmF0b3IgPSBuZXcgU3RvcmFnZVJlc29sdmVySXRlcmF0b3IodGhpcy5fc3RvcmFnZVJlc29sdmVycy5pdGVyYXRvcigpKTsKKyAgICAgIH0KKyAgICAgIAorICAgICAgcmV0dXJuIChYNTA5Q2VydGlmaWNhdGUpIHRoaXMuX2l0ZXJhdG9yLm5leHQoKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDbGFzcyBTdG9yYWdlUmVzb2x2ZXJJdGVyYXRvcgorICAgICogVGhpcyBpdGVyYXRlcyBvdmVyIGFsbCB0aGUgQ2VydGlmaWNhdGVzIGZvdW5kIGluIGFsbCB0aGUgcmVzb2x2ZXJzLgorICAgICoKKyAgICAqIEBhdXRob3IgJEF1dGhvciQKKyAgICAqIEB2ZXJzaW9uICRSZXZpc2lvbiQKKyAgICAqLworICAgc3RhdGljIGNsYXNzIFN0b3JhZ2VSZXNvbHZlckl0ZXJhdG9yIGltcGxlbWVudHMgSXRlcmF0b3IgeworCisgICAgICAvKiogRmllbGQgX3Jlc29sdmVycyAqLworICAgICAgSXRlcmF0b3IgX3Jlc29sdmVycyA9IG51bGw7CisKKyAgICAgIC8qKiBGaWVsZCBfY3VycmVudFJlc29sdmVyICovCisgICAgICBJdGVyYXRvciBfY3VycmVudFJlc29sdmVyID0gbnVsbDsKKworICAgICAgLyoqCisgICAgICAgKiBDb25zdHJ1Y3RvciBTdG9yYWdlUmVzb2x2ZXJJdGVyYXRvcgorICAgICAgICoKKyAgICAgICAqIEBwYXJhbSByZXNvbHZlcnMKKyAgICAgICAqLworICAgICAgcHVibGljIFN0b3JhZ2VSZXNvbHZlckl0ZXJhdG9yKEl0ZXJhdG9yIHJlc29sdmVycykgeworICAgICAgICAgdGhpcy5fcmVzb2x2ZXJzID0gcmVzb2x2ZXJzOworICAgICAgICAgX2N1cnJlbnRSZXNvbHZlciA9IGZpbmROZXh0UmVzb2x2ZXIoKTsKKyAgICAgIH0KKworICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICBwdWJsaWMgYm9vbGVhbiBoYXNOZXh0KCkgeworICAgICAgICAgaWYgKF9jdXJyZW50UmVzb2x2ZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICBpZiAoX2N1cnJlbnRSZXNvbHZlci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgfQorCisgICAgICAgICBfY3VycmVudFJlc29sdmVyID0gZmluZE5leHRSZXNvbHZlcigpOworICAgICAgICAgcmV0dXJuIChfY3VycmVudFJlc29sdmVyICE9IG51bGwpOworICAgICAgfQorCisgICAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICAgIHB1YmxpYyBPYmplY3QgbmV4dCgpIHsKKyAgICAgICAgIGlmIChoYXNOZXh0KCkpIHsKKyAgICAgICAgICAgIHJldHVybiBfY3VycmVudFJlc29sdmVyLm5leHQoKTsKKyAgICAgICAgIH0KKyAgICAgICAgIAorICAgICAgICAgdGhyb3cgbmV3IE5vU3VjaEVsZW1lbnRFeGNlcHRpb24oKTsKKyAgICAgIH0KKworICAgICAgLyoqCisgICAgICAgKiBNZXRob2QgcmVtb3ZlCisgICAgICAgKi8KKyAgICAgIHB1YmxpYyB2b2lkIHJlbW92ZSgpIHsKKyAgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICJDYW4ndCByZW1vdmUga2V5cyBmcm9tIEtleVN0b3JlIik7CisgICAgICB9CisKKyAgICAgIC8vIEZpbmQgdGhlIG5leHQgc3RvcmFnZSB3aXRoIGF0IGxlYXN0IG9uZSBlbGVtZW50IGFuZCByZXR1cm4gaXRzIEl0ZXJhdG9yCisgICAgICBwcml2YXRlIEl0ZXJhdG9yIGZpbmROZXh0UmVzb2x2ZXIoKSB7CisgICAgICAgICAKKyAgICAgICAgIHdoaWxlIChfcmVzb2x2ZXJzLmhhc05leHQoKSkgeworICAgICAgICAgICAgU3RvcmFnZVJlc29sdmVyU3BpIHJlc29sdmVyU3BpID0gKFN0b3JhZ2VSZXNvbHZlclNwaSlfcmVzb2x2ZXJzLm5leHQoKTsKKyAgICAgICAgICAgIEl0ZXJhdG9yIGl0ZXIgPSByZXNvbHZlclNwaS5nZXRJdGVyYXRvcigpOworICAgICAgICAgICAgaWYgKGl0ZXIuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICByZXR1cm4gaXRlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAgIAorICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICB9CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9zdG9yYWdlL1N0b3JhZ2VSZXNvbHZlckV4Y2VwdGlvbi5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvc3RvcmFnZS9TdG9yYWdlUmVzb2x2ZXJFeGNlcHRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjY0MTZkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvc3RvcmFnZS9TdG9yYWdlUmVzb2x2ZXJFeGNlcHRpb24uamF2YQpAQCAtMCwwICsxLDg0IEBACisKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuc3RvcmFnZTsKKworCisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLlhNTFNlY3VyaXR5RXhjZXB0aW9uOworCisKKy8qKgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGNsYXNzIFN0b3JhZ2VSZXNvbHZlckV4Y2VwdGlvbiBleHRlbmRzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKworICAgLyoqCisJICogCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgU3RvcmFnZVJlc29sdmVyRXhjZXB0aW9uCisgICAgKgorICAgICovCisgICBwdWJsaWMgU3RvcmFnZVJlc29sdmVyRXhjZXB0aW9uKCkgeworICAgICAgc3VwZXIoKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBTdG9yYWdlUmVzb2x2ZXJFeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKi8KKyAgIHB1YmxpYyBTdG9yYWdlUmVzb2x2ZXJFeGNlcHRpb24oU3RyaW5nIF9tc2dJRCkgeworICAgICAgc3VwZXIoX21zZ0lEKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBTdG9yYWdlUmVzb2x2ZXJFeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKiBAcGFyYW0gZXhBcmdzCisgICAgKi8KKyAgIHB1YmxpYyBTdG9yYWdlUmVzb2x2ZXJFeGNlcHRpb24oU3RyaW5nIF9tc2dJRCwgT2JqZWN0IGV4QXJnc1tdKSB7CisgICAgICBzdXBlcihfbXNnSUQsIGV4QXJncyk7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgU3RvcmFnZVJlc29sdmVyRXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICogQHBhcmFtIF9vcmlnaW5hbEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgU3RvcmFnZVJlc29sdmVyRXhjZXB0aW9uKFN0cmluZyBfbXNnSUQsIEV4Y2VwdGlvbiBfb3JpZ2luYWxFeGNlcHRpb24pIHsKKyAgICAgIHN1cGVyKF9tc2dJRCwgX29yaWdpbmFsRXhjZXB0aW9uKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBTdG9yYWdlUmVzb2x2ZXJFeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKiBAcGFyYW0gZXhBcmdzCisgICAgKiBAcGFyYW0gX29yaWdpbmFsRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBTdG9yYWdlUmVzb2x2ZXJFeGNlcHRpb24oU3RyaW5nIF9tc2dJRCwgT2JqZWN0IGV4QXJnc1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb24gX29yaWdpbmFsRXhjZXB0aW9uKSB7CisgICAgICBzdXBlcihfbXNnSUQsIGV4QXJncywgX29yaWdpbmFsRXhjZXB0aW9uKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL3N0b3JhZ2UvU3RvcmFnZVJlc29sdmVyU3BpLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9zdG9yYWdlL1N0b3JhZ2VSZXNvbHZlclNwaS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjNDI3MmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9zdG9yYWdlL1N0b3JhZ2VSZXNvbHZlclNwaS5qYXZhCkBAIC0wLDAgKzEsMzcgQEAKKworLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5zdG9yYWdlOworCisKKworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKKworCisvKioKKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBTdG9yYWdlUmVzb2x2ZXJTcGkgeworCisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRJdGVyYXRvcgorICAgICoKKyAgICAqIEByZXR1cm4gdGhlIGl0ZXJhdG9yIGZvciB0aGUgc3RvcmFnZQorICAgICovCisgICBwdWJsaWMgYWJzdHJhY3QgSXRlcmF0b3IgZ2V0SXRlcmF0b3IoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL3N0b3JhZ2UvaW1wbGVtZW50YXRpb25zL0NlcnRzSW5GaWxlc3lzdGVtRGlyZWN0b3J5UmVzb2x2ZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL3N0b3JhZ2UvaW1wbGVtZW50YXRpb25zL0NlcnRzSW5GaWxlc3lzdGVtRGlyZWN0b3J5UmVzb2x2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2EwNmRmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvc3RvcmFnZS9pbXBsZW1lbnRhdGlvbnMvQ2VydHNJbkZpbGVzeXN0ZW1EaXJlY3RvcnlSZXNvbHZlci5qYXZhCkBAIC0wLDAgKzEsMjE4IEBACisKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuc3RvcmFnZS5pbXBsZW1lbnRhdGlvbnM7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb247CitpbXBvcnQgamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhwaXJlZEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVGYWN0b3J5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZU5vdFlldFZhbGlkRXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGU7CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLnN0b3JhZ2UuU3RvcmFnZVJlc29sdmVyRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuc3RvcmFnZS5TdG9yYWdlUmVzb2x2ZXJTcGk7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQmFzZTY0OworCisvKioKKyAqIFRoaXMge0BsaW5rIFN0b3JhZ2VSZXNvbHZlclNwaX0gbWFrZXMgYWxsIHJhdyAoYmluYXJ5KSB7QGxpbmsgWDUwOUNlcnRpZmljYXRlfXMKKyAqIHdoaWNoIHJlc2lkZSBhcyBmaWxlcyBpbiBhIHNpbmdsZSBkaXJlY3RvcnkgYXZhaWxhYmxlIHRvIHRoZSB7QGxpbmsgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5zdG9yYWdlLlN0b3JhZ2VSZXNvbHZlcn0uCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICovCitwdWJsaWMgY2xhc3MgQ2VydHNJbkZpbGVzeXN0ZW1EaXJlY3RvcnlSZXNvbHZlciBleHRlbmRzIFN0b3JhZ2VSZXNvbHZlclNwaSB7CisKKyAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZygKKyAgICAgICAgICAgICAgICAgICAgQ2VydHNJbkZpbGVzeXN0ZW1EaXJlY3RvcnlSZXNvbHZlci5jbGFzcy5nZXROYW1lKCkpOworCisgICAvKiogRmllbGQgX21lcmxpbnNDZXJ0aWZpY2F0ZXNEaXIgKi8KKyAgIFN0cmluZyBfbWVybGluc0NlcnRpZmljYXRlc0RpciA9IG51bGw7CisKKyAgIC8qKiBGaWVsZCBfY2VydHMgKi8KKyAgIHByaXZhdGUgTGlzdCBfY2VydHMgPSBuZXcgQXJyYXlMaXN0KCk7CisKKyAgIC8qKgorICAgICoKKyAgICAqCisgICAgKiBAcGFyYW0gZGlyZWN0b3J5TmFtZQorICAgICogQHRocm93cyBTdG9yYWdlUmVzb2x2ZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIENlcnRzSW5GaWxlc3lzdGVtRGlyZWN0b3J5UmVzb2x2ZXIoU3RyaW5nIGRpcmVjdG9yeU5hbWUpCisgICAgICAgICAgIHRocm93cyBTdG9yYWdlUmVzb2x2ZXJFeGNlcHRpb24geworCisgICAgICB0aGlzLl9tZXJsaW5zQ2VydGlmaWNhdGVzRGlyID0gZGlyZWN0b3J5TmFtZTsKKworICAgICAgdGhpcy5yZWFkQ2VydHNGcm9tSGFyZGRyaXZlKCk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHJlYWRDZXJ0c0Zyb21IYXJkZHJpdmUKKyAgICAqCisgICAgKiBAdGhyb3dzIFN0b3JhZ2VSZXNvbHZlckV4Y2VwdGlvbgorICAgICovCisgICBwcml2YXRlIHZvaWQgcmVhZENlcnRzRnJvbUhhcmRkcml2ZSgpIHRocm93cyBTdG9yYWdlUmVzb2x2ZXJFeGNlcHRpb24geworCisgICAgICBGaWxlIGNlcnREaXIgPSBuZXcgRmlsZSh0aGlzLl9tZXJsaW5zQ2VydGlmaWNhdGVzRGlyKTsKKyAgICAgIEFycmF5TGlzdCBhbCA9IG5ldyBBcnJheUxpc3QoKTsKKyAgICAgIFN0cmluZ1tdIG5hbWVzID0gY2VydERpci5saXN0KCk7CisKKyAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgIFN0cmluZyBjdXJyZW50RmlsZU5hbWUgPSBuYW1lc1tpXTsKKworICAgICAgICAgaWYgKGN1cnJlbnRGaWxlTmFtZS5lbmRzV2l0aCgiLmNydCIpKSB7CisgICAgICAgICAgICBhbC5hZGQobmFtZXNbaV0pOworICAgICAgICAgfQorICAgICAgfQorCisgICAgICBDZXJ0aWZpY2F0ZUZhY3RvcnkgY2YgPSBudWxsOworCisgICAgICB0cnkgeworICAgICAgICAgY2YgPSBDZXJ0aWZpY2F0ZUZhY3RvcnkuZ2V0SW5zdGFuY2UoIlguNTA5Iik7CisgICAgICB9IGNhdGNoIChDZXJ0aWZpY2F0ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFN0b3JhZ2VSZXNvbHZlckV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICB9CisKKyAgICAgIGlmIChjZiA9PSBudWxsKSB7CisgICAgICAgICB0aHJvdyBuZXcgU3RvcmFnZVJlc29sdmVyRXhjZXB0aW9uKCJlbXB0eSIpOworICAgICAgfQorCisgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFsLnNpemUoKTsgaSsrKSB7CisgICAgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBjZXJ0RGlyLmdldEFic29sdXRlUGF0aCgpICsgRmlsZS5zZXBhcmF0b3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKFN0cmluZykgYWwuZ2V0KGkpOworICAgICAgICAgRmlsZSBmaWxlID0gbmV3IEZpbGUoZmlsZW5hbWUpOworICAgICAgICAgYm9vbGVhbiBhZGRlZCA9IGZhbHNlOworICAgICAgICAgU3RyaW5nIGRuID0gbnVsbDsKKworICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIEZpbGVJbnB1dFN0cmVhbSBmaXMgPSBuZXcgRmlsZUlucHV0U3RyZWFtKGZpbGUpOworICAgICAgICAgICAgWDUwOUNlcnRpZmljYXRlIGNlcnQgPQorICAgICAgICAgICAgICAgKFg1MDlDZXJ0aWZpY2F0ZSkgY2YuZ2VuZXJhdGVDZXJ0aWZpY2F0ZShmaXMpOworCisgICAgICAgICAgICBmaXMuY2xvc2UoKTsKKworICAgICAgICAgICAgLy9hZGQgdG8gQXJyYXlMaXN0CisgICAgICAgICAgICBjZXJ0LmNoZWNrVmFsaWRpdHkoKTsKKyAgICAgICAgICAgIHRoaXMuX2NlcnRzLmFkZChjZXJ0KTsKKworICAgICAgICAgICAgZG4gPSBjZXJ0LmdldFN1YmplY3RETigpLmdldE5hbWUoKTsKKyAgICAgICAgICAgIGFkZGVkID0gdHJ1ZTsKKyAgICAgICAgIH0gY2F0Y2ggKEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgbG9nLmRlYnVnKCJDb3VsZCBub3QgYWRkIGNlcnRpZmljYXRlIGZyb20gZmlsZSAiICsgZmlsZW5hbWUsIGV4KTsKKyAgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBsb2cuZGVidWcoIkNvdWxkIG5vdCBhZGQgY2VydGlmaWNhdGUgZnJvbSBmaWxlICIgKyBmaWxlbmFtZSwgZXgpOworICAgICAgICAgfSBjYXRjaCAoQ2VydGlmaWNhdGVOb3RZZXRWYWxpZEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgbG9nLmRlYnVnKCJDb3VsZCBub3QgYWRkIGNlcnRpZmljYXRlIGZyb20gZmlsZSAiICsgZmlsZW5hbWUsIGV4KTsKKyAgICAgICAgIH0gY2F0Y2ggKENlcnRpZmljYXRlRXhwaXJlZEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgbG9nLmRlYnVnKCJDb3VsZCBub3QgYWRkIGNlcnRpZmljYXRlIGZyb20gZmlsZSAiICsgZmlsZW5hbWUsIGV4KTsKKyAgICAgICAgIH0gY2F0Y2ggKENlcnRpZmljYXRlRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBsb2cuZGVidWcoIkNvdWxkIG5vdCBhZGQgY2VydGlmaWNhdGUgZnJvbSBmaWxlICIgKyBmaWxlbmFtZSwgZXgpOworICAgICAgICAgfQorCisgICAgICAgICBpZiAoYWRkZWQpIHsKKyAgICAgICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkKKyAgICAgICAgICAgIAlsb2cuZGVidWcoIkFkZGVkIGNlcnRpZmljYXRlOiAiICsgZG4pOworICAgICAgICAgfQorICAgICAgfQorICAgfQorCisgICAvKiogQGluaGVyaXREb2MgKi8KKyAgIHB1YmxpYyBJdGVyYXRvciBnZXRJdGVyYXRvcigpIHsKKyAgICAgIHJldHVybiBuZXcgRmlsZXN5c3RlbUl0ZXJhdG9yKHRoaXMuX2NlcnRzKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDbGFzcyBGaWxlc3lzdGVtSXRlcmF0b3IKKyAgICAqCisgICAgKiBAYXV0aG9yICRBdXRob3IkCisgICAgKiBAdmVyc2lvbiAkUmV2aXNpb24kCisgICAgKi8KKyAgIHByaXZhdGUgc3RhdGljIGNsYXNzIEZpbGVzeXN0ZW1JdGVyYXRvciBpbXBsZW1lbnRzIEl0ZXJhdG9yIHsKKworICAgICAgLyoqIEZpZWxkIF9jZXJ0cyAqLworICAgICAgTGlzdCBfY2VydHMgPSBudWxsOworCisgICAgICAvKiogRmllbGQgX2kgKi8KKyAgICAgIGludCBfaTsKKworICAgICAgLyoqCisgICAgICAgKiBDb25zdHJ1Y3RvciBGaWxlc3lzdGVtSXRlcmF0b3IKKyAgICAgICAqCisgICAgICAgKiBAcGFyYW0gY2VydHMKKyAgICAgICAqLworICAgICAgcHVibGljIEZpbGVzeXN0ZW1JdGVyYXRvcihMaXN0IGNlcnRzKSB7CisgICAgICAgICB0aGlzLl9jZXJ0cyA9IGNlcnRzOworICAgICAgICAgdGhpcy5faSA9IDA7CisgICAgICB9CisKKyAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgICAgcHVibGljIGJvb2xlYW4gaGFzTmV4dCgpIHsKKyAgICAgICAgIHJldHVybiAodGhpcy5faSA8IHRoaXMuX2NlcnRzLnNpemUoKSk7CisgICAgICB9CisKKyAgICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgICAgcHVibGljIE9iamVjdCBuZXh0KCkgeworICAgICAgICAgcmV0dXJuIHRoaXMuX2NlcnRzLmdldCh0aGlzLl9pKyspOworICAgICAgfQorCisgICAgICAvKioKKyAgICAgICAqIE1ldGhvZCByZW1vdmUKKyAgICAgICAqCisgICAgICAgKi8KKyAgICAgIHB1YmxpYyB2b2lkIHJlbW92ZSgpIHsKKyAgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICJDYW4ndCByZW1vdmUga2V5cyBmcm9tIEtleVN0b3JlIik7CisgICAgICB9CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIG1haW4KKyAgICAqCisgICAgKiBAcGFyYW0gdW51c2VkCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgdW51c2VkW10pIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBDZXJ0c0luRmlsZXN5c3RlbURpcmVjdG9yeVJlc29sdmVyIGtycyA9CisgICAgICAgICBuZXcgQ2VydHNJbkZpbGVzeXN0ZW1EaXJlY3RvcnlSZXNvbHZlcigKKyAgICAgICAgICAgICJkYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZWlnaHRlZW4vY2VydHMiKTsKKworICAgICAgZm9yIChJdGVyYXRvciBpID0ga3JzLmdldEl0ZXJhdG9yKCk7IGkuaGFzTmV4dCgpOyApIHsKKyAgICAgICAgIFg1MDlDZXJ0aWZpY2F0ZSBjZXJ0ID0gKFg1MDlDZXJ0aWZpY2F0ZSkgaS5uZXh0KCk7CisgICAgICAgICBieXRlW10gc2tpID0KKyAgICAgICAgICAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC54NTA5LlhNTFg1MDlTS0kKKyAgICAgICAgICAgICAgIC5nZXRTS0lCeXRlc0Zyb21DZXJ0KGNlcnQpOworCisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQmFzZTY0KFNLSSgpKT0gICAgICAgICAgICAgICAgIFwiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgQmFzZTY0LmVuY29kZShza2kpICsgIlwiIik7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImNlcnQuZ2V0U2VyaWFsTnVtYmVyKCk9ICAgICAgICBcIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGNlcnQuZ2V0U2VyaWFsTnVtYmVyKCkudG9TdHJpbmcoKSArICJcIiIpOworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJjZXJ0LmdldFN1YmplY3RETigpLmdldE5hbWUoKT0gXCIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBjZXJ0LmdldFN1YmplY3RETigpLmdldE5hbWUoKSArICJcIiIpOworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJjZXJ0LmdldElzc3VlckROKCkuZ2V0TmFtZSgpPSAgXCIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBjZXJ0LmdldElzc3VlckROKCkuZ2V0TmFtZSgpICsgIlwiIik7CisgICAgICB9CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9zdG9yYWdlL2ltcGxlbWVudGF0aW9ucy9LZXlTdG9yZVJlc29sdmVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9zdG9yYWdlL2ltcGxlbWVudGF0aW9ucy9LZXlTdG9yZVJlc29sdmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBkMmQxMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL3N0b3JhZ2UvaW1wbGVtZW50YXRpb25zL0tleVN0b3JlUmVzb2x2ZXIuamF2YQpAQCAtMCwwICsxLDE1MyBAQAorCisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLnN0b3JhZ2UuaW1wbGVtZW50YXRpb25zOworCitpbXBvcnQgamF2YS5zZWN1cml0eS5LZXlTdG9yZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5Ob1N1Y2hFbGVtZW50RXhjZXB0aW9uOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5zdG9yYWdlLlN0b3JhZ2VSZXNvbHZlckV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLnN0b3JhZ2UuU3RvcmFnZVJlc29sdmVyU3BpOworCisvKioKKyAqIE1ha2VzIHRoZSBDZXJ0aWZpY2F0ZXMgZnJvbSBhIEpBVkEge0BsaW5rIEtleVN0b3JlfSBvYmplY3QgYXZhaWxhYmxlIHRvIHRoZQorICoge0BsaW5rIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuc3RvcmFnZS5TdG9yYWdlUmVzb2x2ZXJ9LgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGNsYXNzIEtleVN0b3JlUmVzb2x2ZXIgZXh0ZW5kcyBTdG9yYWdlUmVzb2x2ZXJTcGkgeworCisgICAvKiogRmllbGQgX2tleVN0b3JlICovCisgICBLZXlTdG9yZSBfa2V5U3RvcmUgPSBudWxsOworCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIEtleVN0b3JlUmVzb2x2ZXIKKyAgICAqCisgICAgKiBAcGFyYW0ga2V5U3RvcmUgaXMgdGhlIGtleXN0b3JlIHdoaWNoIGNvbnRhaW5zIHRoZSBDZXJ0aWZpY2F0ZXMKKyAgICAqIEB0aHJvd3MgU3RvcmFnZVJlc29sdmVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBLZXlTdG9yZVJlc29sdmVyKEtleVN0b3JlIGtleVN0b3JlKSB0aHJvd3MgU3RvcmFnZVJlc29sdmVyRXhjZXB0aW9uIHsKKyAgICAgIHRoaXMuX2tleVN0b3JlID0ga2V5U3RvcmU7CisgICAgICAvLyBEbyBhIHF1aWNrIGNoZWNrIG9uIHRoZSBrZXlzdG9yZQorICAgICAgdHJ5IHsKKyAgICAgICAgIF9rZXlTdG9yZS5hbGlhc2VzKCk7CisgICAgICB9IGNhdGNoIChLZXlTdG9yZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFN0b3JhZ2VSZXNvbHZlckV4Y2VwdGlvbigiZ2VuZXJpYy5FbXB0eU1lc3NhZ2UiLCBleCk7CisgICAgICB9CisgICB9CisKKyAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgcHVibGljIEl0ZXJhdG9yIGdldEl0ZXJhdG9yKCkgeworICAgICAgcmV0dXJuIG5ldyBLZXlTdG9yZUl0ZXJhdG9yKHRoaXMuX2tleVN0b3JlKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDbGFzcyBLZXlTdG9yZUl0ZXJhdG9yCisgICAgKgorICAgICogQGF1dGhvciAkQXV0aG9yJAorICAgICogQHZlcnNpb24gJFJldmlzaW9uJAorICAgICovCisgICBzdGF0aWMgY2xhc3MgS2V5U3RvcmVJdGVyYXRvciBpbXBsZW1lbnRzIEl0ZXJhdG9yIHsKKworICAgICAgLyoqIEZpZWxkIF9rZXlTdG9yZSAqLworICAgICAgS2V5U3RvcmUgX2tleVN0b3JlID0gbnVsbDsKKworICAgICAgLyoqIEZpZWxkIF9hbGlhc2VzICovCisgICAgICBFbnVtZXJhdGlvbiBfYWxpYXNlcyA9IG51bGw7CisgICAgICAKKyAgICAgIC8qKiBGaWVsZCBfbmV4dENlcnQgKi8KKyAgICAgIENlcnRpZmljYXRlIF9uZXh0Q2VydCA9IG51bGw7CisKKyAgICAgIC8qKgorICAgICAgICogQ29uc3RydWN0b3IgS2V5U3RvcmVJdGVyYXRvcgorICAgICAgICoKKyAgICAgICAqIEBwYXJhbSBrZXlTdG9yZQorICAgICAgICovCisgICAgICBwdWJsaWMgS2V5U3RvcmVJdGVyYXRvcihLZXlTdG9yZSBrZXlTdG9yZSkgeworICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHRoaXMuX2tleVN0b3JlID0ga2V5U3RvcmU7CisgICAgICAgICAgICB0aGlzLl9hbGlhc2VzID0gdGhpcy5fa2V5U3RvcmUuYWxpYXNlcygpOworICAgICAgICAgfSBjYXRjaCAoS2V5U3RvcmVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIC8vIGVtcHR5IEVudW1lcmF0aW9uCisgICAgICAgICAgICB0aGlzLl9hbGlhc2VzID0gbmV3IEVudW1lcmF0aW9uKCkgeworICAgICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gaGFzTW9yZUVsZW1lbnRzKCkgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgcHVibGljIE9iamVjdCBuZXh0RWxlbWVudCgpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKyAgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICBwdWJsaWMgYm9vbGVhbiBoYXNOZXh0KCkgeworICAgICAgICAgaWYgKF9uZXh0Q2VydCA9PSBudWxsKQorICAgICAgICAgICAgX25leHRDZXJ0ID0gZmluZE5leHRDZXJ0KCk7CisKKyAgICAgICAgIHJldHVybiAoX25leHRDZXJ0ICE9IG51bGwpOworICAgICAgfQorCisgICAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICAgIHB1YmxpYyBPYmplY3QgbmV4dCgpIHsKKyAgICAgICAgIGlmIChfbmV4dENlcnQgPT0gbnVsbCkgeworICAgICAgICAgICAgLy8gbWF5YmUgY2FsbGVyIGRpZCBub3QgY2FsbCBoYXNOZXh0KCkKKyAgICAgICAgICAgIF9uZXh0Q2VydCA9IGZpbmROZXh0Q2VydCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoX25leHRDZXJ0ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm9TdWNoRWxlbWVudEV4Y2VwdGlvbigpOworICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICAgICAgCisgICAgICAgICBDZXJ0aWZpY2F0ZSByZXQgPSBfbmV4dENlcnQ7CisgICAgICAgICBfbmV4dENlcnQgPSBudWxsOworICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgIH0KKworICAgICAgLyoqCisgICAgICAgKiBNZXRob2QgcmVtb3ZlCisgICAgICAgKgorICAgICAgICovCisgICAgICBwdWJsaWMgdm9pZCByZW1vdmUoKSB7CisgICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oCisgICAgICAgICAgICAiQ2FuJ3QgcmVtb3ZlIGtleXMgZnJvbSBLZXlTdG9yZSIpOworICAgICAgfQorICAgICAgCisgICAgICAvLyBGaW5kIHRoZSBuZXh0IGVudHJ5IHRoYXQgY29udGFpbnMgYSBjZXJ0aWZpY2F0ZSBhbmQgcmV0dXJuIGl0LgorICAgICAgLy8gSW4gcGFydGljdWxhciwgdGhpcyBza2lwcyBvdmVyIGVudHJpZXMgY29udGFpbmluZyBzeW1tZXRyaWMga2V5cy4KKyAgICAgIHByaXZhdGUgQ2VydGlmaWNhdGUgZmluZE5leHRDZXJ0KCkgeworICAgICAgICAgd2hpbGUgKHRoaXMuX2FsaWFzZXMuaGFzTW9yZUVsZW1lbnRzKCkpIHsKKyAgICAgICAgICAgICBTdHJpbmcgYWxpYXMgPSAoU3RyaW5nKSB0aGlzLl9hbGlhc2VzLm5leHRFbGVtZW50KCk7CisgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBDZXJ0aWZpY2F0ZSBjZXJ0ID0gdGhpcy5fa2V5U3RvcmUuZ2V0Q2VydGlmaWNhdGUoYWxpYXMpOworICAgICAgICAgICAgICAgIGlmIChjZXJ0ICE9IG51bGwpCisgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNlcnQ7CisgICAgICAgICAgICAgfSBjYXRjaCAoS2V5U3RvcmVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisKKyAgICAgICAgIHJldHVybiBudWxsOworICAgICAgfQorICAgICAgCisgICB9CisgICAKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL3N0b3JhZ2UvaW1wbGVtZW50YXRpb25zL1NpbmdsZUNlcnRpZmljYXRlUmVzb2x2ZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL3N0b3JhZ2UvaW1wbGVtZW50YXRpb25zL1NpbmdsZUNlcnRpZmljYXRlUmVzb2x2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWE3MjA2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvc3RvcmFnZS9pbXBsZW1lbnRhdGlvbnMvU2luZ2xlQ2VydGlmaWNhdGVSZXNvbHZlci5qYXZhCkBAIC0wLDAgKzEsOTUgQEAKKworLyoKKyAqIENvcHlyaWdodCAxOTk5LTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLnN0b3JhZ2UuaW1wbGVtZW50YXRpb25zOworCitpbXBvcnQgamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLk5vU3VjaEVsZW1lbnRFeGNlcHRpb247CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLnN0b3JhZ2UuU3RvcmFnZVJlc29sdmVyU3BpOworCisvKioKKyAqIFRoaXMge0BsaW5rIFN0b3JhZ2VSZXNvbHZlclNwaX0gbWFrZXMgYSBzaW5nbGUge0BsaW5rIFg1MDlDZXJ0aWZpY2F0ZX0KKyAqIGF2YWlsYWJsZSB0byB0aGUge0BsaW5rIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuc3RvcmFnZS5TdG9yYWdlUmVzb2x2ZXJ9LgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGNsYXNzIFNpbmdsZUNlcnRpZmljYXRlUmVzb2x2ZXIgZXh0ZW5kcyBTdG9yYWdlUmVzb2x2ZXJTcGkgeworCisgICAvKiogRmllbGQgX2NlcnRpZmljYXRlICovCisgICBYNTA5Q2VydGlmaWNhdGUgX2NlcnRpZmljYXRlID0gbnVsbDsKKworICAgLyoqCisgICAgKiBAcGFyYW0geDUwOWNlcnQgdGhlIHNpbmdsZSB7QGxpbmsgWDUwOUNlcnRpZmljYXRlfQorICAgICovCisgICBwdWJsaWMgU2luZ2xlQ2VydGlmaWNhdGVSZXNvbHZlcihYNTA5Q2VydGlmaWNhdGUgeDUwOWNlcnQpIHsKKyAgICAgIHRoaXMuX2NlcnRpZmljYXRlID0geDUwOWNlcnQ7CisgICB9CisKKyAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgcHVibGljIEl0ZXJhdG9yIGdldEl0ZXJhdG9yKCkgeworICAgICAgcmV0dXJuIG5ldyBJbnRlcm5hbEl0ZXJhdG9yKHRoaXMuX2NlcnRpZmljYXRlKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDbGFzcyBJbnRlcm5hbEl0ZXJhdG9yCisgICAgKgorICAgICogQGF1dGhvciAkQXV0aG9yJAorICAgICogQHZlcnNpb24gJFJldmlzaW9uJAorICAgICovCisgICBzdGF0aWMgY2xhc3MgSW50ZXJuYWxJdGVyYXRvciBpbXBsZW1lbnRzIEl0ZXJhdG9yIHsKKworICAgICAgLyoqIEZpZWxkIF9hbHJlYWR5UmV0dXJuZWQgKi8KKyAgICAgIGJvb2xlYW4gX2FscmVhZHlSZXR1cm5lZCA9IGZhbHNlOworCisgICAgICAvKiogRmllbGQgX2NlcnRpZmljYXRlICovCisgICAgICBYNTA5Q2VydGlmaWNhdGUgX2NlcnRpZmljYXRlID0gbnVsbDsKKworICAgICAgLyoqCisgICAgICAgKiBDb25zdHJ1Y3RvciBJbnRlcm5hbEl0ZXJhdG9yCisgICAgICAgKgorICAgICAgICogQHBhcmFtIHg1MDljZXJ0CisgICAgICAgKi8KKyAgICAgIHB1YmxpYyBJbnRlcm5hbEl0ZXJhdG9yKFg1MDlDZXJ0aWZpY2F0ZSB4NTA5Y2VydCkgeworICAgICAgICAgdGhpcy5fY2VydGlmaWNhdGUgPSB4NTA5Y2VydDsKKyAgICAgIH0KKworICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICBwdWJsaWMgYm9vbGVhbiBoYXNOZXh0KCkgeworICAgICAgICAgcmV0dXJuICghdGhpcy5fYWxyZWFkeVJldHVybmVkKTsKKyAgICAgIH0KKworICAgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgICBwdWJsaWMgT2JqZWN0IG5leHQoKSB7CisgICAgICAgICBpZiAodGhpcy5fYWxyZWFkeVJldHVybmVkKSB7CisgICAgICAgICAgICAgdGhyb3cgbmV3IE5vU3VjaEVsZW1lbnRFeGNlcHRpb24oKTsKKyAgICAgICAgIH0KKyAgICAgICAgIHRoaXMuX2FscmVhZHlSZXR1cm5lZCA9IHRydWU7CisgICAgICAgICByZXR1cm4gdGhpcy5fY2VydGlmaWNhdGU7CisgICAgICB9CisKKyAgICAgIC8qKgorICAgICAgICogTWV0aG9kIHJlbW92ZQorICAgICAgICoKKyAgICAgICAqLworICAgICAgcHVibGljIHZvaWQgcmVtb3ZlKCkgeworICAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKAorICAgICAgICAgICAgIkNhbid0IHJlbW92ZSBrZXlzIGZyb20gS2V5U3RvcmUiKTsKKyAgICAgIH0KKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL3N0b3JhZ2UvaW1wbGVtZW50YXRpb25zL3BhY2thZ2UuaHRtbCBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9rZXlzL3N0b3JhZ2UvaW1wbGVtZW50YXRpb25zL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzVlNDJkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvc3RvcmFnZS9pbXBsZW1lbnRhdGlvbnMvcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsMyBAQAorPEhUTUw+PEhFQUQ+PC9IRUFEPjxCT0RZPjxQPgoraW1wbGVtZW50YXRpb25zIG9mIHJlc29sdmVycyBmb3IgcmV0cmlldmFsIGZvciBjZXJ0aWZpY2F0ZXMgYW5kIHB1YmxpYyBrZXlzIGZyb20gdXNlci1zcGVjaWZpZWQgbG9jYXRpb25zLgorPC9QPjwvQk9EWT48L0hUTUw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvc3RvcmFnZS9wYWNrYWdlLmh0bWwgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkva2V5cy9zdG9yYWdlL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTJkZWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2tleXMvc3RvcmFnZS9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSwzIEBACis8SFRNTD48SEVBRD48L0hFQUQ+PEJPRFk+PFA+CithIHJlc29sdmVyIGZyYW1ld29yayBmb3IgY2VydGlmaWNhdGVzIGFuZCBwdWJsaWMga2V5cyBmcm9tIHVzZXItc3BlY2lmaWVkIGxvY2F0aW9ucy4KKzwvUD48L0JPRFk+PC9IVE1MPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9wYWNrYWdlLmh0bWwgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NDJhNDMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzxIVE1MPgorICA8SEVBRD4gCisJIDxUSVRMRT5vcmcuYXBhY2hlLnhtbC5zZWN1cml0eTwvVElUTEU+IAorICA8L0hFQUQ+IAorICA8Qk9EWT4gCisJIDxIMT5DYW5vbmljYWwgWE1MIGFuZCBYTUwgU2lnbmF0dXJlIEltcGxlbWVudGF0aW9uPC9IMT4gCisJIDxIMj5OZWVkcyB0aGUgZm9sbG93aW5nIHBhY2thZ2VzPC9IMj4gCisJIDxVTD4gCisJCTxMST5YZXJjZXMgdjIuMC4wIDxBIEhSRUY9Imh0dHA6Ly94bWwuYXBhY2hlLm9yZy9kaXN0L3hlcmNlcy1qLyI+aHR0cDovL3htbC5hcGFjaGUub3JnL2Rpc3QveGVyY2VzLWovPC9BPjwvTEk+CisJCTxMST5YYWxhbiAyLjIuMCA8QSBIUkVGPSJodHRwOi8veG1sLmFwYWNoZS5vcmcvZGlzdC94YWxhbi1qLyI+aHR0cDovL3htbC5hcGFjaGUub3JnL2Rpc3QveGFsYW4tai88L0E+PC9MST4KKwkJPExJPkpVbml0IDMuNyA8QSBIUkVGPSJodHRwOi8vZG93bmxvYWQuc291cmNlZm9yZ2UubmV0L2p1bml0L2p1bml0My43LnppcCI+aHR0cDovL2Rvd25sb2FkLnNvdXJjZWZvcmdlLm5ldC9qdW5pdC9qdW5pdDMuNS56aXA8L0E+PC9MST4KKwkJPExJPkpha2FydGEgTG9nNEogMS4xLjIgPEEgSFJFRj0iaHR0cDovL2pha2FydGEuYXBhY2hlLm9yZy9sb2c0ai8iPmh0dHA6Ly9qYWthcnRhLmFwYWNoZS5vcmcvbG9nNGovPC9BPjwvTEk+CisJCTxMST5BTlQgPEEgSFJFRj0iaHR0cDovL2pha2FydGEuYXBhY2hlLm9yZy9idWlsZHMvamFrYXJ0YS1hbnQvcmVsZWFzZS8iPmh0dHA6Ly9qYWthcnRhLmFwYWNoZS5vcmcvYnVpbGRzL2pha2FydGEtYW50L3JlbGVhc2UvPC9BPjwvTEk+IAorCSA8L1VMPgorCSA8SDE+UGFja2FnZXM8L0gxPiAKKwkgPFVMPiAKKwkJPExJPntAbGluayBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5hbGdvcml0aG1zfSBjb250YWlucyBhbGdvcml0aG0gZmFjdG9yaWVzIDwvTEk+IAorCQk8TEk+e0BsaW5rIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG59IGNvbnRhaW5zIENhbm9uaWNhbGl6YXRpb24gcmVsYXRlZCBtYXRlcmlhbCBhbmQgYWxnb3JpdGhtcyA8L0xJPiAKKwkJPExJPntAbGluayBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zfSBjb250YWlucyBhbGwgZXhjZXB0aW9ucyB1c2VkIGJ5IHRoaXMgbGlicmFyeSA8L0xJPiAKKwkJPExJPntAbGluayBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzfSBjb250YWlucyBrZXkgcmVsYXRlZCBtYXRlcmlhbCA8L0xJPiAKKwkJPExJPntAbGluayBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzfSBjb250YWlucyBzb21lIHNhbXBsZSBhcHBsaWNhdGlvbnMgYW5kIG5vbi1zdGFuZGFyZCB0cmFuc2Zvcm1zIDwvTEk+IAorCQk8TEk+e0BsaW5rIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZX0gY29udGFpbnMgdGhlIFhNTCBTaWduYXR1cmUgc3BlY2lmaWMgY2xhc3NlcyA8L0xJPiAKKwkJPExJPntAbGluayBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zfSBYTUwgU2lnbmF0dXJlIHRyYW5zZm9ybWF0aW9ucyA8L0xJPiAKKwkJPExJPntAbGluayBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlsc30gY29udGFpbnMgYWxsIHV0aWxpdHkgY2xhc3NlcyA8L0xJPiAKKwkJPExJPntAbGluayBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0fSBKVW5pdCB0ZXN0IGNhc2VzIDwvTEk+IAorCQk8TEk+e0BsaW5rIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlbXB9IGlzIHRoZSBwbGF5Z3JvdW5kIGZvciBtZXNzaW5nIGFyb3VuZCA8L0xJPiAKKwkgPC9VTD4gCisJIDxIMj5TdXBwb3J0PC9IMj4gCisJIDxQPlNlZSA8QSBIUkVGPSJodHRwOi8veG1sLmFwYWNoZS5vcmcvc2VjdXJpdHkvIj50aGUgeG1sLXNlY3VyaXR5IHByb2plY3Q8L0E+IGZvciBmdXJ0aGVyIGFzc2lzdGVuY2U8L1A+IAorCSA8SDI+QXV0aG9yPC9IMj4gCisJIDxQPkNocmlzdGlhbiBHZXVlci1Qb2xsbWFubiBnZXVlci1wb2xsbWFubkBudWUuZXQtaW5mLnVuaS1zaWVnZW4uZGU8QlI+IAorCSAgICBVbml2ZXJzaXR5IG9mIFNpZWdlbjxCUj4gCisJICAgIEluc3RpdHV0ZSBmb3IgRGF0YSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zPEJSPiAKKwkgPC9QPiAKKyAgICAgPC9CT0RZPgorPC9IVE1MPgpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Jlc291cmNlL2NvbmZpZy5kdGQgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvcmVzb3VyY2UvY29uZmlnLmR0ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2ZjYTUwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Jlc291cmNlL2NvbmZpZy5kdGQKQEAgLTAsMCArMSw3MyBAQAorPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnID8+DQorDQorPCFFTEVNRU5UIENvbmZpZ3VyYXRpb24gKENhbm9uaWNhbGl6YXRpb25NZXRob2RzICwgVHJhbnNmb3JtQWxnb3JpdGhtcyAsIEpDRUFsZ29yaXRobU1hcHBpbmdzICwgTG9nNEogLCBSZXNvdXJjZUJ1bmRsZXMgLCBVbml0VGVzdHMgLCBSZXNvdXJjZVJlc29sdmVycyAsIEtleVJlc29sdmVycyk+DQorDQorPCFBVFRMSVNUIENvbmZpZ3VyYXRpb24gIHhtbG5zIENEQVRBICAjRklYRUQgJ2h0dHA6Ly93d3cueG1sc2VjdXJpdHkub3JnL05TLyNjb25maWd1cmF0aW9uJyANCit0YXJnZXQgICAgICAgIENEQVRBICAjSU1QTElFRD4NCis8IUVMRU1FTlQgQ2Fub25pY2FsaXphdGlvbk1ldGhvZHMgKENhbm9uaWNhbGl6YXRpb25NZXRob2QrKT4NCisNCis8IUFUVExJU1QgQ2Fub25pY2FsaXphdGlvbk1ldGhvZHMgIEpBVkFDTEFTUyBDREFUQSAgI0ZJWEVEICdvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkNhbm9uaWNhbGl6ZXInID4NCis8IUVMRU1FTlQgQ2Fub25pY2FsaXphdGlvbk1ldGhvZCBFTVBUWT4NCisNCis8IUFUVExJU1QgQ2Fub25pY2FsaXphdGlvbk1ldGhvZCAgVVJJICAgICAgIENEQVRBICAjUkVRVUlSRUQNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKQVZBQ0xBU1MgQ0RBVEEgICNSRVFVSVJFRCA+DQorPCFFTEVNRU5UIFRyYW5zZm9ybUFsZ29yaXRobXMgKFRyYW5zZm9ybUFsZ29yaXRobSspPg0KKw0KKzwhQVRUTElTVCBUcmFuc2Zvcm1BbGdvcml0aG1zICBKQVZBQ0xBU1MgQ0RBVEEgICNGSVhFRCAnb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm0nID4NCis8IUVMRU1FTlQgVHJhbnNmb3JtQWxnb3JpdGhtIEVNUFRZPg0KKw0KKzwhQVRUTElTVCBUcmFuc2Zvcm1BbGdvcml0aG0gIFVSSSAgICAgICBDREFUQSAgI1JFUVVJUkVEDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKQVZBQ0xBU1MgQ0RBVEEgICNSRVFVSVJFRCA+DQorPCFFTEVNRU5UIEpDRUFsZ29yaXRobU1hcHBpbmdzIChQcm92aWRlcnMgLCBBbGdvcml0aG1zKT4NCisNCis8IUVMRU1FTlQgUHJvdmlkZXJzIChQcm92aWRlcispPg0KKw0KKzwhRUxFTUVOVCBQcm92aWRlciBFTVBUWT4NCisNCis8IUFUVExJU1QgUHJvdmlkZXIgIElkICAgICAgICAgIElEICAgICAjUkVRVUlSRUQNCisgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgQ0RBVEEgICNSRVFVSVJFRA0KKyAgICAgICAgICAgICAgICAgICAgICBJbmZvICAgICAgICBDREFUQSAgI0lNUExJRUQNCisgICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZXJVUkwgQ0RBVEEgICNJTVBMSUVEID4NCis8IUVMRU1FTlQgQWxnb3JpdGhtcyAoQWxnb3JpdGhtKyk+DQorDQorPCFFTEVNRU5UIEFsZ29yaXRobSAoUHJvdmlkZXJBbGdvKyk+DQorDQorPCFBVFRMSVNUIEFsZ29yaXRobSAgVVJJICAgICAgICAgICAgQ0RBVEEgICNSRVFVSVJFRA0KKyAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgQ0RBVEEgICNJTVBMSUVEDQorICAgICAgICAgICAgICAgICAgICAgICBBbGdvcml0aG1DbGFzcyBDREFUQSAgI0lNUExJRUQgPg0KKzwhRUxFTUVOVCBQcm92aWRlckFsZ28gRU1QVFk+DQorDQorPCFBVFRMSVNUIFByb3ZpZGVyQWxnbyAgUHJvdmlkZXJJZCBJRFJFRiAgI1JFUVVJUkVEDQorICAgICAgICAgICAgICAgICAgICAgICAgICBKQ0VOYW1lICAgIENEQVRBICAjUkVRVUlSRUQNCisgICAgICAgICAgICAgICAgICAgICAgICAgIEpDRUFsaWFzICAgQ0RBVEEgICNJTVBMSUVEID4NCis8IUVMRU1FTlQgTG9nNEogRU1QVFk+DQorDQorPCFBVFRMSVNUIExvZzRKICBjb25maWdGaWxlIENEQVRBICAnZGF0YS9sb2c0ai54bWwnID4NCis8IUVMRU1FTlQgUmVzb3VyY2VCdW5kbGVzIChSZXNvdXJjZUJ1bmRsZSspPg0KKw0KKzwhQVRUTElTVCBSZXNvdXJjZUJ1bmRsZXMgIGRlZmF1bHRMYW5ndWFnZUNvZGUgQ0RBVEEgICdkZScNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRDb3VudHJ5Q29kZSAgQ0RBVEEgICdERScgPg0KKzwhRUxFTUVOVCBSZXNvdXJjZUJ1bmRsZSBFTVBUWT4NCisNCis8IUFUVExJU1QgUmVzb3VyY2VCdW5kbGUgIExhbmd1YWdlQ29kZSBDREFUQSAgI1JFUVVJUkVEDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvdW50cnlDb2RlICBDREFUQSAgI1JFUVVJUkVEDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIExPQ0FUSU9OICAgICBDREFUQSAgI1JFUVVJUkVEID4NCis8IUVMRU1FTlQgVW5pdFRlc3RzIChVbml0VGVzdCspPg0KKw0KKzwhQVRUTElTVCBVbml0VGVzdHMgIEpBVkFDTEFTUyBDREFUQSAgI0ZJWEVEICdvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LkFsbFRlc3RzJyA+DQorPCFFTEVNRU5UIFJlc291cmNlUmVzb2x2ZXJzIChSZXNvbHZlcispPg0KKw0KKzwhRUxFTUVOVCBSZXNvbHZlciBFTVBUWT4NCisNCis8IUFUVExJU1QgUmVzb2x2ZXIgIEpBVkFDTEFTUyAgIENEQVRBICAjUkVRVUlSRUQNCisgICAgICAgICAgICAgICAgICAgICAgREVTQ1JJUFRJT04gQ0RBVEEgICNJTVBMSUVEID4NCis8IUVMRU1FTlQgS2V5UmVzb2x2ZXJzIChLZXlSZXNvbHZlcispPg0KKzwhQVRUTElTVCBLZXlSZXNvbHZlcnMgIEpBVkFDTEFTUyBDREFUQSAgI0ZJWEVEICdvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLktleVJlc29sdmVyJyA+DQorDQorPCFFTEVNRU5UIEtleVJlc29sdmVyIEVNUFRZPg0KKw0KKzwhQVRUTElTVCBLZXlSZXNvbHZlciAgVVJJICAgICAgIENEQVRBICAjUkVRVUlSRUQNCisgICAgICAgICAgICAgICAgICAgICAgICAgSkFWQUNMQVNTIENEQVRBICAjUkVRVUlSRUQgPg0KKzwhRUxFTUVOVCBVbml0VGVzdCAoI1BDREFUQSk+DQorDQorPCFBVFRMSVNUIFVuaXRUZXN0ICBKQVZBQ0xBU1MgQ0RBVEEgICNSRVFVSVJFRCA+DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Jlc291cmNlL2NvbmZpZy54bWwgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvcmVzb3VyY2UvY29uZmlnLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTA3OTkyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Jlc291cmNlL2NvbmZpZy54bWwKQEAgLTAsMCArMSwzOTkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/Pg0KKzwhLS0NCis8IURPQ1RZUEUgQ29uZmlndXJhdGlvbiBTWVNURU0gImNvbmZpZy5kdGQiPg0KKy0tPg0KKzwhLS0gVGhpcyBjb25maWd1cmF0aW9uIGZpbGUgaXMgdXNlZCBmb3IgY29uZmlndXJhdGlvbiBvZiB0aGUgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkgcGFja2FnZSAtLT4NCis8Q29uZmlndXJhdGlvbiB0YXJnZXQ9Im9yZy5hcGFjaGUueG1sLnNlY3VyaXR5IiB4bWxucz0iaHR0cDovL3d3dy54bWxzZWN1cml0eS5vcmcvTlMvI2NvbmZpZ3VyYXRpb24iPg0KKyAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kcz4NCisgICAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBVUkk9Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ig0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpBVkFDTEFTUz0ib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5pbXBsZW1lbnRhdGlvbnMuQ2Fub25pY2FsaXplcjIwMDEwMzE1T21pdENvbW1lbnRzIiAvPg0KKyAgICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIFVSST0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUjV2l0aENvbW1lbnRzIg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpBVkFDTEFTUz0ib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5pbXBsZW1lbnRhdGlvbnMuQ2Fub25pY2FsaXplcjIwMDEwMzE1V2l0aENvbW1lbnRzIiAvPg0KKw0KKyAgICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIFVSST0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpBVkFDTEFTUz0ib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5pbXBsZW1lbnRhdGlvbnMuQ2Fub25pY2FsaXplcjIwMDEwMzE1RXhjbE9taXRDb21tZW50cyIvPg0KKyAgICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIFVSST0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jV2l0aENvbW1lbnRzIg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpBVkFDTEFTUz0ib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5pbXBsZW1lbnRhdGlvbnMuQ2Fub25pY2FsaXplcjIwMDEwMzE1RXhjbFdpdGhDb21tZW50cyIvPg0KKyAgICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIFVSST0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSkFWQUNMQVNTPSJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLmltcGxlbWVudGF0aW9ucy5DYW5vbmljYWxpemVyMTFfT21pdENvbW1lbnRzIi8+CisgICAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBVUkk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKQVZBQ0xBU1M9Im9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uaW1wbGVtZW50YXRpb25zLkNhbm9uaWNhbGl6ZXIxMV9XaXRoQ29tbWVudHMiLz4KKyAgIDwvQ2Fub25pY2FsaXphdGlvbk1ldGhvZHM+DQorICAgPFRyYW5zZm9ybUFsZ29yaXRobXM+DQorICAgICAgPCEtLSBCYXNlNjQgLS0+DQorICAgICAgPFRyYW5zZm9ybUFsZ29yaXRobSBVUkk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNiYXNlNjQiDQorICAgICAgICAgICAgICAgICAgICAgICAgICBKQVZBQ0xBU1M9Im9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuaW1wbGVtZW50YXRpb25zLlRyYW5zZm9ybUJhc2U2NERlY29kZSIgLz4NCisgICAgICA8IS0tIGMxNG4gb21pdHRpbmcgY29tbWVudHMgLS0+DQorICAgICAgPFRyYW5zZm9ybUFsZ29yaXRobSBVUkk9Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ig0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgSkFWQUNMQVNTPSJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLmltcGxlbWVudGF0aW9ucy5UcmFuc2Zvcm1DMTROIiAvPg0KKyAgICAgIDwhLS0gYzE0biB3aXRoIGNvbW1lbnRzIC0tPg0KKyAgICAgIDxUcmFuc2Zvcm1BbGdvcml0aG0gVVJJPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHMiDQorICAgICAgICAgICAgICAgICAgICAgICAgICBKQVZBQ0xBU1M9Im9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuaW1wbGVtZW50YXRpb25zLlRyYW5zZm9ybUMxNE5XaXRoQ29tbWVudHMiIC8+DQorICAgICAgPCEtLSBjMTRuIDEuMSBvbWl0dGluZyBjb21tZW50cyAtLT4NCisgICAgICA8VHJhbnNmb3JtQWxnb3JpdGhtIFVSST0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgSkFWQUNMQVNTPSJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLmltcGxlbWVudGF0aW9ucy5UcmFuc2Zvcm1DMTROMTEiIC8+DQorICAgICAgPCEtLSBjMTRuIDEuMSB3aXRoIGNvbW1lbnRzIC0tPg0KKyAgICAgIDxUcmFuc2Zvcm1BbGdvcml0aG0gVVJJPSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgSkFWQUNMQVNTPSJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLmltcGxlbWVudGF0aW9ucy5UcmFuc2Zvcm1DMTROMTFfV2l0aENvbW1lbnRzIiAvPg0KKyAgICAgIDwhLS0gZXhjbHVzaXZlIGMxNG4gb21pdHRpbmcgY29tbWVudHMgLS0+DQorICAgICAgPFRyYW5zZm9ybUFsZ29yaXRobSBVUkk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyINCisgICAgICAgICAgICAgICAgICAgICAgICAgIEpBVkFDTEFTUz0ib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5pbXBsZW1lbnRhdGlvbnMuVHJhbnNmb3JtQzE0TkV4Y2x1c2l2ZSIgLz4NCisgICAgICA8IS0tIGV4Y2x1c2l2ZSBjMTRuIHdpdGggY29tbWVudHMgLS0+DQorICAgICAgPFRyYW5zZm9ybUFsZ29yaXRobSBVUkk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuI1dpdGhDb21tZW50cyINCisgICAgICAgICAgICAgICAgICAgICAgICAgIEpBVkFDTEFTUz0ib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5pbXBsZW1lbnRhdGlvbnMuVHJhbnNmb3JtQzE0TkV4Y2x1c2l2ZVdpdGhDb21tZW50cyIgLz4NCisNCisgICAgICA8IS0tIFhQYXRoIHRyYW5zZm9ybSAtLT4NCisgICAgICA8VHJhbnNmb3JtQWxnb3JpdGhtIFVSST0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiDQorICAgICAgICAgICAgICAgICAgICAgICAgICBKQVZBQ0xBU1M9Im9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuaW1wbGVtZW50YXRpb25zLlRyYW5zZm9ybVhQYXRoIiAvPg0KKyAgICAgIDwhLS0gZW52ZWxvcGVkIHNpZ25hdHVyZSAtLT4NCisgICAgICA8VHJhbnNmb3JtQWxnb3JpdGhtIFVSST0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiDQorICAgICAgICAgICAgICAgICAgICAgICAgICBKQVZBQ0xBU1M9Im9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuaW1wbGVtZW50YXRpb25zLlRyYW5zZm9ybUVudmVsb3BlZFNpZ25hdHVyZSIgLz4NCisgICAgICA8IS0tIFhTTFQgLS0+DQorICAgICAgPFRyYW5zZm9ybUFsZ29yaXRobSBVUkk9Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhzbHQtMTk5OTExMTYiDQorICAgICAgICAgICAgICAgICAgICAgICAgICBKQVZBQ0xBU1M9Im9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuaW1wbGVtZW50YXRpb25zLlRyYW5zZm9ybVhTTFQiIC8+DQorICAgICAgPCEtLSBYUGF0aCB2ZXJzaW9uIDIgLS0+DQorICAgICAgPFRyYW5zZm9ybUFsZ29yaXRobSBVUkk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDQveG1sZHNpZy1maWx0ZXIyIg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgSkFWQUNMQVNTPSJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLmltcGxlbWVudGF0aW9ucy5UcmFuc2Zvcm1YUGF0aDJGaWx0ZXIiIC8+DQorICAgICAgPCEtLSBYUGF0aCB2ZXJzaW9uIDJiIC0tPg0KKyAgICAgIDxUcmFuc2Zvcm1BbGdvcml0aG0gVVJJPSJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA2L3htbGRzaWctZmlsdGVyMiINCisgICAgICAgICAgICAgICAgICAgICAgICAgIEpBVkFDTEFTUz0ib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5pbXBsZW1lbnRhdGlvbnMuVHJhbnNmb3JtWFBhdGgyRmlsdGVyIiAvPg0KKyAgIDwvVHJhbnNmb3JtQWxnb3JpdGhtcz4NCisgICA8U2lnbmF0dXJlQWxnb3JpdGhtcz4NCisgICAgICA8U2lnbmF0dXJlQWxnb3JpdGhtIFVSST0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgSkFWQUNMQVNTPSJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5hbGdvcml0aG1zLmltcGxlbWVudGF0aW9ucy5TaWduYXR1cmVEU0EiIC8+DQorICAgICAgPFNpZ25hdHVyZUFsZ29yaXRobSBVUkk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSINCisgICAgICAgICAgICAgICAgICAgICAgICAgIEpBVkFDTEFTUz0ib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYWxnb3JpdGhtcy5pbXBsZW1lbnRhdGlvbnMuU2lnbmF0dXJlQmFzZVJTQSRTaWduYXR1cmVSU0FTSEExIiAvPg0KKyAgICAgIDxTaWduYXR1cmVBbGdvcml0aG0gVVJJPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjaG1hYy1zaGExIg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgSkFWQUNMQVNTPSJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5hbGdvcml0aG1zLmltcGxlbWVudGF0aW9ucy5JbnRlZ3JpdHlIbWFjJEludGVncml0eUhtYWNTSEExIiAvPg0KKw0KKyAgICAgIDxTaWduYXR1cmVBbGdvcml0aG0gVVJJPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2EtbWQ1Ig0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgSkFWQUNMQVNTPSJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5hbGdvcml0aG1zLmltcGxlbWVudGF0aW9ucy5TaWduYXR1cmVCYXNlUlNBJFNpZ25hdHVyZVJTQU1ENSIgLz4NCisgICAgICA8U2lnbmF0dXJlQWxnb3JpdGhtIFVSST0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXJpcGVtZDE2MCINCisgICAgICAgICAgICAgICAgICAgICAgICAgIEpBVkFDTEFTUz0ib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYWxnb3JpdGhtcy5pbXBsZW1lbnRhdGlvbnMuU2lnbmF0dXJlQmFzZVJTQSRTaWduYXR1cmVSU0FSSVBFTUQxNjAiIC8+DQorICAgICAgPFNpZ25hdHVyZUFsZ29yaXRobSBVUkk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiDQorICAgICAgICAgICAgICAgICAgICAgICAgICBKQVZBQ0xBU1M9Im9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmFsZ29yaXRobXMuaW1wbGVtZW50YXRpb25zLlNpZ25hdHVyZUJhc2VSU0EkU2lnbmF0dXJlUlNBU0hBMjU2IiAvPg0KKyAgICAgIDxTaWduYXR1cmVBbGdvcml0aG0gVVJJPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMzg0Ig0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgSkFWQUNMQVNTPSJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5hbGdvcml0aG1zLmltcGxlbWVudGF0aW9ucy5TaWduYXR1cmVCYXNlUlNBJFNpZ25hdHVyZVJTQVNIQTM4NCIgLz4NCisgICAgICA8U2lnbmF0dXJlQWxnb3JpdGhtIFVSST0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTUxMiINCisgICAgICAgICAgICAgICAgICAgICAgICAgIEpBVkFDTEFTUz0ib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYWxnb3JpdGhtcy5pbXBsZW1lbnRhdGlvbnMuU2lnbmF0dXJlQmFzZVJTQSRTaWduYXR1cmVSU0FTSEE1MTIiIC8+DQorICAgICAgPFNpZ25hdHVyZUFsZ29yaXRobSBVUkk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTEiDQorICAgICAgICAgICAgICAgICAgICAgICAgICBKQVZBQ0xBU1M9Im9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmFsZ29yaXRobXMuaW1wbGVtZW50YXRpb25zLlNpZ25hdHVyZUVDRFNBJFNpZ25hdHVyZUVDRFNBU0hBMSIgLz4NCisNCisgICAgICA8U2lnbmF0dXJlQWxnb3JpdGhtIFVSST0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjaG1hYy1tZDUiDQorICAgICAgICAgICAgICAgICAgICAgICAgICBKQVZBQ0xBU1M9Im9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmFsZ29yaXRobXMuaW1wbGVtZW50YXRpb25zLkludGVncml0eUhtYWMkSW50ZWdyaXR5SG1hY01ENSIgLz4NCisgICAgICA8U2lnbmF0dXJlQWxnb3JpdGhtIFVSST0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjaG1hYy1yaXBlbWQxNjAiDQorICAgICAgICAgICAgICAgICAgICAgICAgICBKQVZBQ0xBU1M9Im9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmFsZ29yaXRobXMuaW1wbGVtZW50YXRpb25zLkludGVncml0eUhtYWMkSW50ZWdyaXR5SG1hY1JJUEVNRDE2MCIgLz4NCisgICAgICA8U2lnbmF0dXJlQWxnb3JpdGhtIFVSST0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjaG1hYy1zaGEyNTYiDQorICAgICAgICAgICAgICAgICAgICAgICAgICBKQVZBQ0xBU1M9Im9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmFsZ29yaXRobXMuaW1wbGVtZW50YXRpb25zLkludGVncml0eUhtYWMkSW50ZWdyaXR5SG1hY1NIQTI1NiIgLz4NCisgICAgICA8U2lnbmF0dXJlQWxnb3JpdGhtIFVSST0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjaG1hYy1zaGEzODQiDQorICAgICAgICAgICAgICAgICAgICAgICAgICBKQVZBQ0xBU1M9Im9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmFsZ29yaXRobXMuaW1wbGVtZW50YXRpb25zLkludGVncml0eUhtYWMkSW50ZWdyaXR5SG1hY1NIQTM4NCIgLz4NCisgICAgICA8U2lnbmF0dXJlQWxnb3JpdGhtIFVSST0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjaG1hYy1zaGE1MTIiDQorICAgICAgICAgICAgICAgICAgICAgICAgICBKQVZBQ0xBU1M9Im9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmFsZ29yaXRobXMuaW1wbGVtZW50YXRpb25zLkludGVncml0eUhtYWMkSW50ZWdyaXR5SG1hY1NIQTUxMiIgLz4NCisgICA8L1NpZ25hdHVyZUFsZ29yaXRobXM+DQorICAgPEpDRUFsZ29yaXRobU1hcHBpbmdzPg0KKyAgICAgIDxBbGdvcml0aG1zPg0KKyAgICAgICAgIDwhLS0gTWVzc2FnZURpZ2VzdCBBbGdvcml0aG1zIC0tPg0KKyAgICAgICAgIDxBbGdvcml0aG0gVVJJPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNtZDUiDQorICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbj0iTUQ1IG1lc3NhZ2UgZGlnZXN0IGZyb20gUkZDIDEzMjEiDQorICAgICAgICAgICAgICAgICAgICBBbGdvcml0aG1DbGFzcz0iTWVzc2FnZURpZ2VzdCINCisgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVtZW50TGV2ZWw9Ik5PVCBSRUNPTU1FTkRFRCINCisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmljYXRpb25VUkw9Imh0dHA6Ly93d3cuaWV0Zi5vcmcvaW50ZXJuZXQtZHJhZnRzL2RyYWZ0LWVhc3RsYWtlLXhtbGRzaWctdXJpLTAyLnR4dCINCisgICAgICAgICAgICAgICAgICAgIEpDRU5hbWU9Ik1ENSIvPg0KKw0KKyAgICAgICAgIDxBbGdvcml0aG0gVVJJPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNyaXBlbWQxNjAiDQorICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbj0iUklQRU1ELTE2MCBtZXNzYWdlIGRpZ2VzdCINCisgICAgICAgICAgICAgICAgICAgIEFsZ29yaXRobUNsYXNzPSJNZXNzYWdlRGlnZXN0Ig0KKyAgICAgICAgICAgICAgICAgICAgUmVxdWlyZW1lbnRMZXZlbD0iT1BUSU9OQUwiDQorICAgICAgICAgICAgICAgICAgICBKQ0VOYW1lPSJSSVBFTUQxNjAiLz4NCisNCisgICAgICAgICA8QWxnb3JpdGhtIFVSST0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiDQorICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbj0iU0hBLTEgbWVzc2FnZSBkaWdlc3QiDQorICAgICAgICAgICAgICAgICAgICBBbGdvcml0aG1DbGFzcz0iTWVzc2FnZURpZ2VzdCINCisgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVtZW50TGV2ZWw9IlJFUVVJUkVEIg0KKyAgICAgICAgICAgICAgICAgICAgSkNFTmFtZT0iU0hBLTEiLz4NCisNCisgICAgICAgICA8QWxnb3JpdGhtIFVSST0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ig0KKyAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb249IlNIQS0xIG1lc3NhZ2UgZGlnZXN0IHdpdGggMjU2IGJpdCINCisgICAgICAgICAgICAgICAgICAgIEFsZ29yaXRobUNsYXNzPSJNZXNzYWdlRGlnZXN0Ig0KKyAgICAgICAgICAgICAgICAgICAgUmVxdWlyZW1lbnRMZXZlbD0iUkVDT01NRU5ERUQiDQorICAgICAgICAgICAgICAgICAgICBKQ0VOYW1lPSJTSEEtMjU2Ii8+DQorDQorICAgICAgICAgPEFsZ29yaXRobSBVUkk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3NoYTM4NCINCisgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uPSJTSEEgbWVzc2FnZSBkaWdlc3Qgd2l0aCAzODQgYml0Ig0KKyAgICAgICAgICAgICAgICAgICAgQWxnb3JpdGhtQ2xhc3M9Ik1lc3NhZ2VEaWdlc3QiDQorICAgICAgICAgICAgICAgICAgICBSZXF1aXJlbWVudExldmVsPSJPUFRJT05BTCINCisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmljYXRpb25VUkw9Imh0dHA6Ly93d3cuaWV0Zi5vcmcvaW50ZXJuZXQtZHJhZnRzL2RyYWZ0LWVhc3RsYWtlLXhtbGRzaWctdXJpLTAyLnR4dCINCisgICAgICAgICAgICAgICAgICAgIEpDRU5hbWU9IlNIQS0zODQiLz4NCisNCisgICAgICAgICA8QWxnb3JpdGhtIFVSST0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhNTEyIg0KKyAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb249IlNIQS0xIG1lc3NhZ2UgZGlnZXN0IHdpdGggNTEyIGJpdCINCisgICAgICAgICAgICAgICAgICAgIEFsZ29yaXRobUNsYXNzPSJNZXNzYWdlRGlnZXN0Ig0KKyAgICAgICAgICAgICAgICAgICAgUmVxdWlyZW1lbnRMZXZlbD0iT1BUSU9OQUwiDQorICAgICAgICAgICAgICAgICAgICBKQ0VOYW1lPSJTSEEtNTEyIi8+DQorDQorICAgICAgICAgPCEtLSBTaWduYXR1cmUgQWxnb3JpdGhtcyAtLT4NCisgICAgICAgICA8QWxnb3JpdGhtIFVSST0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIg0KKyAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb249IkRpZ2l0YWwgU2lnbmF0dXJlIEFsZ29yaXRobSB3aXRoIFNIQS0xIG1lc3NhZ2UgZGlnZXN0Ig0KKyAgICAgICAgICAgICAgICAgICAgQWxnb3JpdGhtQ2xhc3M9IlNpZ25hdHVyZSINCisgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVtZW50TGV2ZWw9IlJFUVVJUkVEIg0KKyAgICAgICAgICAgICAgICAgICAgSkNFTmFtZT0iU0hBMXdpdGhEU0EiLz4NCisNCisgICAgICAgICA8QWxnb3JpdGhtIFVSST0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLW1kNSINCisgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uPSJSU0EgU2lnbmF0dXJlIHdpdGggTUQ1IG1lc3NhZ2UgZGlnZXN0Ig0KKyAgICAgICAgICAgICAgICAgICAgQWxnb3JpdGhtQ2xhc3M9IlNpZ25hdHVyZSINCisgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVtZW50TGV2ZWw9Ik5PVCBSRUNPTU1FTkRFRCINCisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmljYXRpb25VUkw9Imh0dHA6Ly93d3cuaWV0Zi5vcmcvaW50ZXJuZXQtZHJhZnRzL2RyYWZ0LWVhc3RsYWtlLXhtbGRzaWctdXJpLTAyLnR4dCINCisgICAgICAgICAgICAgICAgICAgIEpDRU5hbWU9Ik1ENXdpdGhSU0EiLz4NCisNCisgICAgICAgICA8QWxnb3JpdGhtIFVSST0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXJpcGVtZDE2MCINCisgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uPSJSU0EgU2lnbmF0dXJlIHdpdGggUklQRU1ELTE2MCBtZXNzYWdlIGRpZ2VzdCINCisgICAgICAgICAgICAgICAgICAgIEFsZ29yaXRobUNsYXNzPSJTaWduYXR1cmUiDQorICAgICAgICAgICAgICAgICAgICBSZXF1aXJlbWVudExldmVsPSJPUFRJT05BTCINCisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmljYXRpb25VUkw9Imh0dHA6Ly93d3cuaWV0Zi5vcmcvaW50ZXJuZXQtZHJhZnRzL2RyYWZ0LWVhc3RsYWtlLXhtbGRzaWctdXJpLTAyLnR4dCINCisgICAgICAgICAgICAgICAgICAgIEpDRU5hbWU9IlJJUEVNRDE2MHdpdGhSU0EiLz4NCisNCisgICAgICAgICA8QWxnb3JpdGhtIFVSST0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIg0KKyAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb249IlJTQSBTaWduYXR1cmUgd2l0aCBTSEEtMSBtZXNzYWdlIGRpZ2VzdCINCisgICAgICAgICAgICAgICAgICAgIEFsZ29yaXRobUNsYXNzPSJTaWduYXR1cmUiDQorICAgICAgICAgICAgICAgICAgICBSZXF1aXJlbWVudExldmVsPSJSRUNPTU1FTkRFRCINCisgICAgICAgICAgICAgICAgICAgIEpDRU5hbWU9IlNIQTF3aXRoUlNBIi8+DQorDQorICAgICAgICAgPEFsZ29yaXRobSBVUkk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiDQorICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbj0iUlNBIFNpZ25hdHVyZSB3aXRoIFNIQS0yNTYgbWVzc2FnZSBkaWdlc3QiDQorICAgICAgICAgICAgICAgICAgICBBbGdvcml0aG1DbGFzcz0iU2lnbmF0dXJlIg0KKyAgICAgICAgICAgICAgICAgICAgUmVxdWlyZW1lbnRMZXZlbD0iT1BUSU9OQUwiDQorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpY2F0aW9uVVJMPSJodHRwOi8vd3d3LmlldGYub3JnL2ludGVybmV0LWRyYWZ0cy9kcmFmdC1lYXN0bGFrZS14bWxkc2lnLXVyaS0wMi50eHQiDQorICAgICAgICAgICAgICAgICAgICBKQ0VOYW1lPSJTSEEyNTZ3aXRoUlNBIi8+DQorDQorICAgICAgICAgPEFsZ29yaXRobSBVUkk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEzODQiDQorICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbj0iUlNBIFNpZ25hdHVyZSB3aXRoIFNIQS0zODQgbWVzc2FnZSBkaWdlc3QiDQorICAgICAgICAgICAgICAgICAgICBBbGdvcml0aG1DbGFzcz0iU2lnbmF0dXJlIg0KKyAgICAgICAgICAgICAgICAgICAgUmVxdWlyZW1lbnRMZXZlbD0iT1BUSU9OQUwiDQorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpY2F0aW9uVVJMPSJodHRwOi8vd3d3LmlldGYub3JnL2ludGVybmV0LWRyYWZ0cy9kcmFmdC1lYXN0bGFrZS14bWxkc2lnLXVyaS0wMi50eHQiDQorICAgICAgICAgICAgICAgICAgICBKQ0VOYW1lPSJTSEEzODR3aXRoUlNBIi8+DQorDQorICAgICAgICAgPEFsZ29yaXRobSBVUkk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGE1MTIiDQorICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbj0iUlNBIFNpZ25hdHVyZSB3aXRoIFNIQS01MTIgbWVzc2FnZSBkaWdlc3QiDQorICAgICAgICAgICAgICAgICAgICBBbGdvcml0aG1DbGFzcz0iU2lnbmF0dXJlIg0KKyAgICAgICAgICAgICAgICAgICAgUmVxdWlyZW1lbnRMZXZlbD0iT1BUSU9OQUwiDQorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpY2F0aW9uVVJMPSJodHRwOi8vd3d3LmlldGYub3JnL2ludGVybmV0LWRyYWZ0cy9kcmFmdC1lYXN0bGFrZS14bWxkc2lnLXVyaS0wMi50eHQiDQorICAgICAgICAgICAgICAgICAgICBKQ0VOYW1lPSJTSEE1MTJ3aXRoUlNBIi8+DQorICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICA8QWxnb3JpdGhtIFVSST0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjZWNkc2Etc2hhMSINCisgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uPSJFQ0RTQSBTaWduYXR1cmUgd2l0aCBTSEEtMSBtZXNzYWdlIGRpZ2VzdCINCisgICAgICAgICAgICAgICAgICAgIEFsZ29yaXRobUNsYXNzPSJTaWduYXR1cmUiDQorICAgICAgICAgICAgICAgICAgICBSZXF1aXJlbWVudExldmVsPSJPUFRJT05BTCINCisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmljYXRpb25VUkw9Imh0dHA6Ly93d3cuaWV0Zi5vcmcvaW50ZXJuZXQtZHJhZnRzL2RyYWZ0LWVhc3RsYWtlLXhtbGRzaWctdXJpLTAyLnR4dCINCisgICAgICAgICAgICAgICAgICAgIEpDRU5hbWU9IkVDRFNBd2l0aFNIQTEiLz4NCisNCisgICAgICAgICA8IS0tIE1BQyBBbGdvcml0aG1zIC0tPg0KKyAgICAgICAgIDxBbGdvcml0aG0gVVJJPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLW1kNSINCisgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uPSJNZXNzYWdlIEF1dGhlbnRpY2F0aW9uIGNvZGUgdXNpbmcgTUQ1Ig0KKyAgICAgICAgICAgICAgICAgICAgQWxnb3JpdGhtQ2xhc3M9Ik1hYyINCisgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVtZW50TGV2ZWw9Ik5PVCBSRUNPTU1FTkRFRCINCisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmljYXRpb25VUkw9Imh0dHA6Ly93d3cuaWV0Zi5vcmcvaW50ZXJuZXQtZHJhZnRzL2RyYWZ0LWVhc3RsYWtlLXhtbGRzaWctdXJpLTAyLnR4dCINCisgICAgICAgICAgICAgICAgICAgIEpDRU5hbWU9IkhtYWNNRDUiLz4NCisNCisgICAgICAgICA8QWxnb3JpdGhtIFVSST0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjaG1hYy1yaXBlbWQxNjAiDQorICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbj0iTWVzc2FnZSBBdXRoZW50aWNhdGlvbiBjb2RlIHVzaW5nIFJJUEVNRC0xNjAiDQorICAgICAgICAgICAgICAgICAgICBBbGdvcml0aG1DbGFzcz0iTWFjIg0KKyAgICAgICAgICAgICAgICAgICAgUmVxdWlyZW1lbnRMZXZlbD0iT1BUSU9OQUwiDQorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpY2F0aW9uVVJMPSJodHRwOi8vd3d3LmlldGYub3JnL2ludGVybmV0LWRyYWZ0cy9kcmFmdC1lYXN0bGFrZS14bWxkc2lnLXVyaS0wMi50eHQiDQorICAgICAgICAgICAgICAgICAgICBKQ0VOYW1lPSJITUFDUklQRU1EMTYwIi8+DQorDQorICAgICAgICAgPEFsZ29yaXRobSBVUkk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNobWFjLXNoYTEiDQorICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbj0iTWVzc2FnZSBBdXRoZW50aWNhdGlvbiBjb2RlIHVzaW5nIFNIQTEiDQorICAgICAgICAgICAgICAgICAgICBBbGdvcml0aG1DbGFzcz0iTWFjIg0KKyAgICAgICAgICAgICAgICAgICAgUmVxdWlyZW1lbnRMZXZlbD0iUkVRVUlSRUQiDQorICAgICAgICAgICAgICAgICAgICBKQ0VOYW1lPSJIbWFjU0hBMSIvPg0KKw0KKyAgICAgICAgIDxBbGdvcml0aG0gVVJJPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTI1NiINCisgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uPSJNZXNzYWdlIEF1dGhlbnRpY2F0aW9uIGNvZGUgdXNpbmcgU0hBLTI1NiINCisgICAgICAgICAgICAgICAgICAgIEFsZ29yaXRobUNsYXNzPSJNYWMiDQorICAgICAgICAgICAgICAgICAgICBSZXF1aXJlbWVudExldmVsPSJPUFRJT05BTCINCisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmljYXRpb25VUkw9Imh0dHA6Ly93d3cuaWV0Zi5vcmcvaW50ZXJuZXQtZHJhZnRzL2RyYWZ0LWVhc3RsYWtlLXhtbGRzaWctdXJpLTAyLnR4dCINCisgICAgICAgICAgICAgICAgICAgIEpDRU5hbWU9IkhtYWNTSEEyNTYiLz4NCisNCisgICAgICAgICA8QWxnb3JpdGhtIFVSST0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjaG1hYy1zaGEzODQiDQorICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbj0iTWVzc2FnZSBBdXRoZW50aWNhdGlvbiBjb2RlIHVzaW5nIFNIQS0zODQiDQorICAgICAgICAgICAgICAgICAgICBBbGdvcml0aG1DbGFzcz0iTWFjIg0KKyAgICAgICAgICAgICAgICAgICAgUmVxdWlyZW1lbnRMZXZlbD0iT1BUSU9OQUwiDQorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpY2F0aW9uVVJMPSJodHRwOi8vd3d3LmlldGYub3JnL2ludGVybmV0LWRyYWZ0cy9kcmFmdC1lYXN0bGFrZS14bWxkc2lnLXVyaS0wMi50eHQiDQorICAgICAgICAgICAgICAgICAgICBKQ0VOYW1lPSJIbWFjU0hBMzg0Ii8+DQorDQorICAgICAgICAgPEFsZ29yaXRobSBVUkk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2htYWMtc2hhNTEyIg0KKyAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb249Ik1lc3NhZ2UgQXV0aGVudGljYXRpb24gY29kZSB1c2luZyBTSEEtNTEyIg0KKyAgICAgICAgICAgICAgICAgICAgQWxnb3JpdGhtQ2xhc3M9Ik1hYyINCisgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVtZW50TGV2ZWw9Ik9QVElPTkFMIg0KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWNhdGlvblVSTD0iaHR0cDovL3d3dy5pZXRmLm9yZy9pbnRlcm5ldC1kcmFmdHMvZHJhZnQtZWFzdGxha2UteG1sZHNpZy11cmktMDIudHh0Ig0KKyAgICAgICAgICAgICAgICAgICAgSkNFTmFtZT0iSG1hY1NIQTUxMiIvPg0KKw0KKyAgICAgICAgIDwhLS0gQmxvY2sgZW5jcnlwdGlvbiBBbGdvcml0aG1zIC0tPg0KKyAgICAgICAgIDxBbGdvcml0aG0gVVJJPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyN0cmlwbGVkZXMtY2JjIg0KKyAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb249IkJsb2NrIGVuY3J5cHRpb24gdXNpbmcgVHJpcGxlLURFUyINCisgICAgICAgICAgICAgICAgICAgIEFsZ29yaXRobUNsYXNzPSJCbG9ja0VuY3J5cHRpb24iDQorICAgICAgICAgICAgICAgICAgICBSZXF1aXJlbWVudExldmVsPSJSRVFVSVJFRCINCisgICAgICAgICAgICAgICAgICAgIEtleUxlbmd0aD0iMTkyIg0KKyAgICAgICAgICAgICAgICAgICAgUmVxdWlyZWRLZXk9IkRFU2VkZSINCisgICAgICAgICAgICAgICAgICAgIEpDRU5hbWU9IkRFU2VkZS9DQkMvSVNPMTAxMjZQYWRkaW5nIi8+DQorDQorICAgICAgICAgPEFsZ29yaXRobSBVUkk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczEyOC1jYmMiDQorICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbj0iQmxvY2sgZW5jcnlwdGlvbiB1c2luZyBBRVMgd2l0aCBhIGtleSBsZW5ndGggb2YgMTI4IGJpdCINCisgICAgICAgICAgICAgICAgICAgIEFsZ29yaXRobUNsYXNzPSJCbG9ja0VuY3J5cHRpb24iDQorICAgICAgICAgICAgICAgICAgICBSZXF1aXJlbWVudExldmVsPSJSRVFVSVJFRCINCisgICAgICAgICAgICAgICAgICAgIEtleUxlbmd0aD0iMTI4Ig0KKyAgICAgICAgICAgICAgICAgICAgUmVxdWlyZWRLZXk9IkFFUyINCisgICAgICAgICAgICAgICAgICAgIEpDRU5hbWU9IkFFUy9DQkMvSVNPMTAxMjZQYWRkaW5nIi8+DQorDQorICAgICAgICAgPEFsZ29yaXRobSBVUkk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczE5Mi1jYmMiDQorICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbj0iQmxvY2sgZW5jcnlwdGlvbiB1c2luZyBBRVMgd2l0aCBhIGtleSBsZW5ndGggb2YgMTkyIGJpdCINCisgICAgICAgICAgICAgICAgICAgIEFsZ29yaXRobUNsYXNzPSJCbG9ja0VuY3J5cHRpb24iDQorICAgICAgICAgICAgICAgICAgICBSZXF1aXJlbWVudExldmVsPSJPUFRJT05BTCINCisgICAgICAgICAgICAgICAgICAgIEtleUxlbmd0aD0iMTkyIg0KKyAgICAgICAgICAgICAgICAgICAgUmVxdWlyZWRLZXk9IkFFUyINCisgICAgICAgICAgICAgICAgICAgIEpDRU5hbWU9IkFFUy9DQkMvSVNPMTAxMjZQYWRkaW5nIi8+DQorDQorICAgICAgICAgPEFsZ29yaXRobSBVUkk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2FlczI1Ni1jYmMiDQorICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbj0iQmxvY2sgZW5jcnlwdGlvbiB1c2luZyBBRVMgd2l0aCBhIGtleSBsZW5ndGggb2YgMjU2IGJpdCINCisgICAgICAgICAgICAgICAgICAgIEFsZ29yaXRobUNsYXNzPSJCbG9ja0VuY3J5cHRpb24iDQorICAgICAgICAgICAgICAgICAgICBSZXF1aXJlbWVudExldmVsPSJSRVFVSVJFRCINCisgICAgICAgICAgICAgICAgICAgIEtleUxlbmd0aD0iMjU2Ig0KKyAgICAgICAgICAgICAgICAgICAgUmVxdWlyZWRLZXk9IkFFUyINCisgICAgICAgICAgICAgICAgICAgIEpDRU5hbWU9IkFFUy9DQkMvSVNPMTAxMjZQYWRkaW5nIi8+DQorDQorICAgICAgICAgPEFsZ29yaXRobSBVUkk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3JzYS0xXzUiDQorICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbj0iS2V5IFRyYW5zcG9ydCBSU0EtdjEuNSINCisgICAgICAgICAgICAgICAgICAgIEFsZ29yaXRobUNsYXNzPSJLZXlUcmFuc3BvcnQiDQorICAgICAgICAgICAgICAgICAgICBSZXF1aXJlbWVudExldmVsPSJSRVFVSVJFRCINCisgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVkS2V5PSJSU0EiDQorICAgICAgICAgICAgICAgICAgICBKQ0VOYW1lPSJSU0EvRUNCL1BLQ1MxUGFkZGluZyIvPg0KKw0KKyAgICAgICAgIDxBbGdvcml0aG0gVVJJPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNyc2Etb2FlcC1tZ2YxcCINCisgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uPSJLZXkgVHJhbnNwb3J0IFJTQS1PQUVQIg0KKyAgICAgICAgICAgICAgICAgICAgQWxnb3JpdGhtQ2xhc3M9IktleVRyYW5zcG9ydCINCisgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVtZW50TGV2ZWw9IlJFUVVJUkVEIg0KKyAgICAgICAgICAgICAgICAgICAgUmVxdWlyZWRLZXk9IlJTQSINCisgICAgICAgICAgICAgICAgICAgIEpDRU5hbWU9IlJTQS9FQ0IvT0FFUFdpdGhTSEExQW5kTUdGMVBhZGRpbmciLz4NCisNCisgICAgICAgICA8QWxnb3JpdGhtIFVSST0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjZGgiDQorICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbj0iS2V5IEFncmVlbWVudCBEaWZmaWUtSGVsbG1hbiINCisgICAgICAgICAgICAgICAgICAgIEFsZ29yaXRobUNsYXNzPSJLZXlBZ3JlZW1lbnQiDQorICAgICAgICAgICAgICAgICAgICBSZXF1aXJlbWVudExldmVsPSJPUFRJT05BTCIvPg0KKw0KKyAgICAgICAgIDxBbGdvcml0aG0gVVJJPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNrdy10cmlwbGVkZXMiDQorICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbj0iU3ltbWV0cmljIEtleSBXcmFwIHVzaW5nIFRyaXBsZSBERVMiDQorICAgICAgICAgICAgICAgICAgICBBbGdvcml0aG1DbGFzcz0iU3ltbWV0cmljS2V5V3JhcCINCisgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVtZW50TGV2ZWw9IlJFUVVJUkVEIg0KKyAgICAgICAgICAgICAgICAgICAgS2V5TGVuZ3RoPSIxOTIiDQorICAgICAgICAgICAgICAgICAgICBSZXF1aXJlZEtleT0iREVTZWRlIg0KKyAgICAgICAgICAgICAgICAgICAgSkNFTmFtZT0iREVTZWRlV3JhcCIvPg0KKw0KKyAgICAgICAgIDxBbGdvcml0aG0gVVJJPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNrdy1hZXMxMjgiDQorICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbj0iU3ltbWV0cmljIEtleSBXcmFwIHVzaW5nIEFFUyB3aXRoIGEga2V5IGxlbmd0aCBvZiAxMjggYml0Ig0KKyAgICAgICAgICAgICAgICAgICAgQWxnb3JpdGhtQ2xhc3M9IlN5bW1ldHJpY0tleVdyYXAiDQorICAgICAgICAgICAgICAgICAgICBSZXF1aXJlbWVudExldmVsPSJSRVFVSVJFRCINCisgICAgICAgICAgICAgICAgICAgIEtleUxlbmd0aD0iMTI4Ig0KKyAgICAgICAgICAgICAgICAgICAgUmVxdWlyZWRLZXk9IkFFUyINCisgICAgICAgICAgICAgICAgICAgIEpDRU5hbWU9IkFFU1dyYXAiLz4NCisNCisgICAgICAgICA8QWxnb3JpdGhtIFVSST0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMja3ctYWVzMTkyIg0KKyAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb249IlN5bW1ldHJpYyBLZXkgV3JhcCB1c2luZyBBRVMgd2l0aCBhIGtleSBsZW5ndGggb2YgMTkyIGJpdCINCisgICAgICAgICAgICAgICAgICAgIEFsZ29yaXRobUNsYXNzPSJTeW1tZXRyaWNLZXlXcmFwIg0KKyAgICAgICAgICAgICAgICAgICAgUmVxdWlyZW1lbnRMZXZlbD0iT1BUSU9OQUwiDQorICAgICAgICAgICAgICAgICAgICBLZXlMZW5ndGg9IjE5MiINCisgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVkS2V5PSJBRVMiDQorICAgICAgICAgICAgICAgICAgICBKQ0VOYW1lPSJBRVNXcmFwIi8+DQorDQorICAgICAgICAgPEFsZ29yaXRobSBVUkk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI2t3LWFlczI1NiINCisgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uPSJTeW1tZXRyaWMgS2V5IFdyYXAgdXNpbmcgQUVTIHdpdGggYSBrZXkgbGVuZ3RoIG9mIDI1NiBiaXQiDQorICAgICAgICAgICAgICAgICAgICBBbGdvcml0aG1DbGFzcz0iU3ltbWV0cmljS2V5V3JhcCINCisgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVtZW50TGV2ZWw9IlJFUVVJUkVEIg0KKyAgICAgICAgICAgICAgICAgICAgS2V5TGVuZ3RoPSIyNTYiDQorICAgICAgICAgICAgICAgICAgICBSZXF1aXJlZEtleT0iQUVTIg0KKyAgICAgICAgICAgICAgICAgICAgSkNFTmFtZT0iQUVTV3JhcCIvPg0KKw0KKyAgICAgIDwvQWxnb3JpdGhtcz4NCisgICA8L0pDRUFsZ29yaXRobU1hcHBpbmdzPg0KKyAgIDxSZXNvdXJjZUJ1bmRsZXMgZGVmYXVsdExhbmd1YWdlQ29kZT0iZW4iIGRlZmF1bHRDb3VudHJ5Q29kZT0iVVMiPg0KKyAgICAgIDxSZXNvdXJjZUJ1bmRsZSBMYW5ndWFnZUNvZGU9ImVuIg0KKyAgICAgICAgICAgICAgICAgICAgICBDb3VudHJ5Q29kZT0iVVMiDQorICAgICAgICAgICAgICAgICAgICAgIExPQ0FUSU9OPSJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS9yZXNvdXJjZS94bWxzZWN1cml0eV9lbi5wcm9wZXJ0aWVzIiAvPg0KKyAgICAgIDxSZXNvdXJjZUJ1bmRsZSBMYW5ndWFnZUNvZGU9ImRlIg0KKyAgICAgICAgICAgICAgICAgICAgICBDb3VudHJ5Q29kZT0iREUiDQorICAgICAgICAgICAgICAgICAgICAgIExPQ0FUSU9OPSJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS9yZXNvdXJjZS94bWxzZWN1cml0eV9kZS5wcm9wZXJ0aWVzIiAvPg0KKyAgIDwvUmVzb3VyY2VCdW5kbGVzPg0KKyAgIDxSZXNvdXJjZVJlc29sdmVycz4NCisgICAgICA8UmVzb2x2ZXIgSkFWQUNMQVNTPSJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5yZXNvbHZlci5pbXBsZW1lbnRhdGlvbnMuUmVzb2x2ZXJEaXJlY3RIVFRQIg0KKyAgICAgICAgICAgICAgICBERVNDUklQVElPTj0iQSBzaW1wbGUgcmVzb2x2ZXIgZm9yIHJlcXVlc3RzIHRvIEhUVFAgc3BhY2UiIC8+DQorICAgICAgPFJlc29sdmVyIEpBVkFDTEFTUz0ib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMucmVzb2x2ZXIuaW1wbGVtZW50YXRpb25zLlJlc29sdmVyTG9jYWxGaWxlc3lzdGVtIg0KKyAgICAgICAgICAgICAgICBERVNDUklQVElPTj0iQSBzaW1wbGUgcmVzb2x2ZXIgZm9yIHJlcXVlc3RzIHRvIHRoZSBsb2NhbCBmaWxlIHN5c3RlbSIgLz4NCisgICAgICA8UmVzb2x2ZXIgSkFWQUNMQVNTPSJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5yZXNvbHZlci5pbXBsZW1lbnRhdGlvbnMuUmVzb2x2ZXJGcmFnbWVudCINCisgICAgICAgICAgICAgICAgREVTQ1JJUFRJT049IkEgc2ltcGxlIHJlc29sdmVyIGZvciByZXF1ZXN0cyBvZiBzYW1lLWRvY3VtZW50IFVSSXMiIC8+DQorICAgICAgPFJlc29sdmVyIEpBVkFDTEFTUz0ib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMucmVzb2x2ZXIuaW1wbGVtZW50YXRpb25zLlJlc29sdmVyWFBvaW50ZXIiDQorICAgICAgICAgICAgICAgIERFU0NSSVBUSU9OPSJBIHNpbXBsZSByZXNvbHZlciBmb3IgcmVxdWVzdHMgb2YgWFBvaW50ZXIgZnJhZ2VudHMiIC8+DQorICAgPC9SZXNvdXJjZVJlc29sdmVycz4NCisgICA8IS0tIDxkZWZhdWx0TG9jYWxlIGxhbmd1YWdlQ29kZT0iZW4iIGNvdW50cnlDb2RlPSJVUyIgLz4gLS0+DQorICAgPEtleUluZm8+DQorICAgICAgPENvbnRlbnRIYW5kbGVyIExPQ0FMTkFNRT0iS2V5TmFtZSINCisgICAgICAgICAgICAgICAgICAgICAgTkFNRVNQQUNFPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIg0KKyAgICAgICAgICAgICAgICAgICAgICBKQVZBQ0xBU1M9Im9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC5LZXlOYW1lIiAvPg0KKyAgICAgIDxDb250ZW50SGFuZGxlciBMT0NBTE5BTUU9IktleVZhbHVlIg0KKyAgICAgICAgICAgICAgICAgICAgICBOQU1FU1BBQ0U9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiDQorICAgICAgICAgICAgICAgICAgICAgIEpBVkFDTEFTUz0ib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50LktleVZhbHVlIiAvPg0KKyAgICAgIDxDb250ZW50SGFuZGxlciBMT0NBTE5BTUU9IlJldHJpZXZhbE1ldGhvZCINCisgICAgICAgICAgICAgICAgICAgICAgTkFNRVNQQUNFPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIg0KKyAgICAgICAgICAgICAgICAgICAgICBKQVZBQ0xBU1M9Im9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC5SZXRyaWV2YWxNZXRob2QiIC8+DQorICAgICAgPENvbnRlbnRIYW5kbGVyIExPQ0FMTkFNRT0iWDUwOURhdGEiDQorICAgICAgICAgICAgICAgICAgICAgIE5BTUVTUEFDRT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyINCisgICAgICAgICAgICAgICAgICAgICAgSkFWQUNMQVNTPSJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmNvbnRlbnQuWDUwOURhdGEiIC8+DQorICAgICAgPENvbnRlbnRIYW5kbGVyIExPQ0FMTkFNRT0iUEdQRGF0YSINCisgICAgICAgICAgICAgICAgICAgICAgTkFNRVNQQUNFPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIg0KKyAgICAgICAgICAgICAgICAgICAgICBKQVZBQ0xBU1M9Im9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC5QR1BEYXRhIiAvPg0KKyAgICAgIDxDb250ZW50SGFuZGxlciBMT0NBTE5BTUU9IlNQS0lEYXRhIg0KKyAgICAgICAgICAgICAgICAgICAgICBOQU1FU1BBQ0U9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiDQorICAgICAgICAgICAgICAgICAgICAgIEpBVkFDTEFTUz0ib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50LlNQS0lEYXRhIiAvPg0KKyAgICAgIDxDb250ZW50SGFuZGxlciBMT0NBTE5BTUU9Ik1nbXREYXRhIg0KKyAgICAgICAgICAgICAgICAgICAgICBOQU1FU1BBQ0U9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiDQorICAgICAgICAgICAgICAgICAgICAgIEpBVkFDTEFTUz0ib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50Lk1nbXREYXRhIiAvPg0KKyAgIDwvS2V5SW5mbz4NCisgICA8S2V5UmVzb2x2ZXI+DQorICAgICAgPCEtLSBUaGlzIHNlY3Rpb24gY29udGFpbnMgYSBsaXN0IG9mIEtleVJlc29sdmVycyB0aGF0IGFyZSBhdmFpbGFibGUgaW4NCisgICAgICAgICAgIGV2ZXJ5IEtleUluZm8gb2JqZWN0IC0tPg0KKyAgICAgIDxSZXNvbHZlciBKQVZBQ0xBU1M9Im9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMua2V5cmVzb2x2ZXIuaW1wbGVtZW50YXRpb25zLlJTQUtleVZhbHVlUmVzb2x2ZXIiDQorICAgICAgICAgICAgICAgIERFU0NSSVBUSU9OPSJDYW4gZXh0cmFjdCBSU0EgcHVibGljIGtleXMiIC8+DQorICAgICAgPFJlc29sdmVyIEpBVkFDTEFTUz0ib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5rZXlyZXNvbHZlci5pbXBsZW1lbnRhdGlvbnMuRFNBS2V5VmFsdWVSZXNvbHZlciINCisgICAgICAgICAgICAgICAgREVTQ1JJUFRJT049IkNhbiBleHRyYWN0IERTQSBwdWJsaWMga2V5cyIgLz4NCisgICAgICA8UmVzb2x2ZXIgSkFWQUNMQVNTPSJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmtleXJlc29sdmVyLmltcGxlbWVudGF0aW9ucy5YNTA5Q2VydGlmaWNhdGVSZXNvbHZlciINCisgICAgICAgICAgICAgICAgREVTQ1JJUFRJT049IkNhbiBleHRyYWN0IHB1YmxpYyBrZXlzIGZyb20gWDUwOSBjZXJ0aWZpY2F0ZXMiIC8+DQorICAgICAgPFJlc29sdmVyIEpBVkFDTEFTUz0ib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5rZXlyZXNvbHZlci5pbXBsZW1lbnRhdGlvbnMuWDUwOVNLSVJlc29sdmVyIg0KKyAgICAgICAgICAgICAgICBERVNDUklQVElPTj0iVXNlcyBhbiBYNTA5djMgU3ViamVjdEtleUlkZW50aWZpZXIgZXh0ZW5zaW9uIHRvIHJldHJpZXZlIGEgY2VydGlmaWNhdGUgZnJvbSB0aGUgc3RvcmFnZXMiIC8+DQorICAgICAgPFJlc29sdmVyIEpBVkFDTEFTUz0ib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5rZXlyZXNvbHZlci5pbXBsZW1lbnRhdGlvbnMuUmV0cmlldmFsTWV0aG9kUmVzb2x2ZXIiDQorICAgICAgICAgICAgICAgIERFU0NSSVBUSU9OPSJSZXNvbHZlcyBrZXlzIGFuZCBjZXJ0aWZpY2F0ZXMgdXNpbmcgUmVzb3VyY2VSZXNvbHZlcnMiIC8+DQorICAgICAgPFJlc29sdmVyIEpBVkFDTEFTUz0ib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5rZXlyZXNvbHZlci5pbXBsZW1lbnRhdGlvbnMuWDUwOVN1YmplY3ROYW1lUmVzb2x2ZXIiDQorICAgICAgICAgICAgICAgIERFU0NSSVBUSU9OPSJVc2VzIGFuIFg1MDkgU3ViamVjdE5hbWUgdG8gcmV0cmlldmUgYSBjZXJ0aWZpY2F0ZSBmcm9tIHRoZSBzdG9yYWdlcyIgLz4NCisgICAgICA8UmVzb2x2ZXIgSkFWQUNMQVNTPSJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmtleXJlc29sdmVyLmltcGxlbWVudGF0aW9ucy5YNTA5SXNzdWVyU2VyaWFsUmVzb2x2ZXIiDQorICAgICAgICAgICAgICAgIERFU0NSSVBUSU9OPSJVc2VzIGFuIFg1MDkgSXNzdWVyTmFtZSBhbmQgSXNzdWVyU2VyaWFsIHRvIHJldHJpZXZlIGEgY2VydGlmaWNhdGUgZnJvbSB0aGUgc3RvcmFnZXMiIC8+DQorICAgPC9LZXlSZXNvbHZlcj4NCisgDQorICAgPFByZWZpeE1hcHBpbmdzPg0KKyAgICAgIDwhLS0gTWFueSBjbGFzc2VzIGNyZWF0ZSBFbGVtZW50cyB3aGljaCBhcmUgaW4gYSBzcGVjaWZpYyBuYW1lc3BhY2U7DQorICAgICAgICAgICBoZXJlLCB0aGUgcHJlZml4ZXMgZm9yIHRoZXNlIG5hbWVzcGFjZXMgYXJlIGRlZmluZWQuIEJ1dCB0aGlzDQorICAgICAgICAgICBjYW4gYWxzbyBiZSBvdmVyd3JpdHRlbiB1c2luZyB0aGUgRWxlbWVudFByb3h5I3NldERlZmF1bHRQcmVmaXgoKQ0KKyAgICAgICAgICAgbWV0aG9kLiBZb3UgY2FuIGV2ZW4gc2V0IGFsbCBwcmVmaXhlcyB0byAiIiBzbyB0aGF0IHRoZSBjb3JyZXNwb25kaW5nDQorICAgICAgICAgICBlbGVtZW50cyBhcmUgY3JlYXRlZCB1c2luZyB0aGUgZGVmYXVsdCBuYW1lc3BhY2UgLS0+DQorICAgICAgPFByZWZpeE1hcHBpbmcgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIg0KKyAgICAgICAgICAgICAgICAgICAgIHByZWZpeD0iZHMiIC8+DQorICAgICAgPFByZWZpeE1hcHBpbmcgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMiDQorICAgICAgICAgICAgICAgICAgICAgcHJlZml4PSJ4ZW5jIiAvPg0KKyAgICAgIDxQcmVmaXhNYXBwaW5nIG5hbWVzcGFjZT0iaHR0cDovL3d3dy54bWxzZWN1cml0eS5vcmcvZXhwZXJpbWVudGFsIyINCisgICAgICAgICAgICAgICAgICAgICBwcmVmaXg9ImV4cGVyaW1lbnRhbCIgLz4NCisgICAgICA8UHJlZml4TWFwcGluZyBuYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDQveG1sZHNpZy1maWx0ZXIyIg0KKyAgICAgICAgICAgICAgICAgICAgIHByZWZpeD0iZHNpZy14cGF0aC1vbGQiIC8+DQorICAgICAgPFByZWZpeE1hcHBpbmcgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA2L3htbGRzaWctZmlsdGVyMiINCisgICAgICAgICAgICAgICAgICAgICBwcmVmaXg9ImRzaWcteHBhdGgiIC8+DQorICAgICAgPFByZWZpeE1hcHBpbmcgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiDQorICAgICAgICAgICAgICAgICAgICAgcHJlZml4PSJlYyIgLz4NCisgICAgICA8UHJlZml4TWFwcGluZyBuYW1lc3BhY2U9Imh0dHA6Ly93d3cubnVlLmV0LWluZi51bmktc2llZ2VuLmRlL35nZXVlci1wb2xsbWFubi8jeHBhdGhGaWx0ZXIiDQorICAgICAgICAgICAgICAgICAgICAgcHJlZml4PSJ4eCIgLz4NCisgICA8L1ByZWZpeE1hcHBpbmdzPg0KKzwvQ29uZmlndXJhdGlvbj4NCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvcmVzb3VyY2UvbG9nNGoucHJvcGVydGllcyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9yZXNvdXJjZS9sb2c0ai5wcm9wZXJ0aWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwODBmN2MKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvcmVzb3VyY2UvbG9nNGoucHJvcGVydGllcwpAQCAtMCwwICsxLDM1IEBACisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIworIyBMb2dnaW5nIENvbmZpZ3VyYXRpb24KKyMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBMb2dnaW5nIGJhc2VkIG9uIHBhY2thZ2VzCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2xvZzRqLmxvZ2dlci5vcmcuYXBhY2hlLnhtbC5zZWN1cml0eT1FUlJPUiwgTE9HVFhUCitsb2c0ai5sb2dnZXIub3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5BbGxUZXN0cz1ERUJVRywgTE9HVFhUCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBMb2dmaWxlIGRlZmluaXRpb25zIAorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjQ29uc29sZSBMb2cKK2xvZzRqLmFwcGVuZGVyLkNvbnNvbGU9b3JnLmFwYWNoZS5sb2c0ai5Db25zb2xlQXBwZW5kZXIKK2xvZzRqLmFwcGVuZGVyLkNvbnNvbGUuVGhyZXNob2xkPURFQlVHCitsb2c0ai5hcHBlbmRlci5Db25zb2xlLmxheW91dD1vcmcuYXBhY2hlLmxvZzRqLlBhdHRlcm5MYXlvdXQKK2xvZzRqLmFwcGVuZGVyLkNvbnNvbGUubGF5b3V0LkNvbnZlcnNpb25QYXR0ZXJuPSUtNXAgJUN7MX06JUwgLSAlbVxuCitsb2c0ai5hcHBlbmRlci5Db25zb2xlLlRhcmdldD1TeXN0ZW0uZXJyCisKKyNMT0dUWFQgTG9nCitsb2c0ai5hcHBlbmRlci5MT0dUWFQ9b3JnLmFwYWNoZS5sb2c0ai5GaWxlQXBwZW5kZXIKK2xvZzRqLmFwcGVuZGVyLkxPR1RYVC5GaWxlPWxvZy50eHQKK2xvZzRqLmFwcGVuZGVyLkxPR1RYVC5BcHBlbmQ9dHJ1ZQorbG9nNGouYXBwZW5kZXIuTE9HVFhULlRocmVzaG9sZD1ERUJVRworbG9nNGouYXBwZW5kZXIuTE9HVFhULmxheW91dD1vcmcuYXBhY2hlLmxvZzRqLlBhdHRlcm5MYXlvdXQKK2xvZzRqLmFwcGVuZGVyLkxPR1RYVC5sYXlvdXQuQ29udmVyc2lvblBhdHRlcm49JS01cCAlQ3sxfTolTCAtICVtXG4KKwpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Jlc291cmNlL3BhY2thZ2UuaHRtbCBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9yZXNvdXJjZS9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdkMDRkNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9yZXNvdXJjZS9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSwzIEBACis8SFRNTD4gPEhFQUQ+IDwvSEVBRD4gPEJPRFk+IDxQPgorc29mdHdhcmUgY29uZmlndXJhdGlvbiBhbmQgaW50ZXJuYXRpb25hbGl6YXRpb24gKHtAbGluayBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5JMThufSkuCis8L1A+PC9CT0RZPiA8L0hUTUw+CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvcmVzb3VyY2Uvc2NoZW1hL2V0c2kueHNkIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Jlc291cmNlL3NjaGVtYS9ldHNpLnhzZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjk4NTJmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Jlc291cmNlL3NjaGVtYS9ldHNpLnhzZApAQCAtMCwwICsxLDM0NyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tIGVkaXRlZCB3aXRoIFhNTCBTcHkgdjQuMyBVIChodHRwOi8vd3d3LnhtbHNweS5jb20pIGJ5IFhNTFNweSB2NCAoQWx0b3ZhKSAtLT4NCis8eHNkOnNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly91cmkuZXRzaS5vcmcvMDE5MDMvdjEuMS4xIyIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM9Imh0dHA6Ly91cmkuZXRzaS5vcmcvMDE5MDMvdjEuMS4xIyIgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMgeG1sZHNpZy1jb3JlLXNjaGVtYS54c2QiPg0KKwk8eHNkOmVsZW1lbnQgbmFtZT0iQW55IiB0eXBlPSJBbnlUeXBlIi8+DQorCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iQW55VHlwZSIgbWl4ZWQ9InRydWUiPg0KKwkJPHhzZDpzZXF1ZW5jZT4NCisJCQk8eHNkOmFueSBuYW1lc3BhY2U9IiMjYW55Ii8+DQorCQk8L3hzZDpzZXF1ZW5jZT4NCisJCTx4c2Q6YW55QXR0cmlidXRlIG5hbWVzcGFjZT0iIyNhbnkiLz4NCisJPC94c2Q6Y29tcGxleFR5cGU+DQorCTx4c2Q6ZWxlbWVudCBuYW1lPSJPYmplY3RJZGVudGlmaWVyIiB0eXBlPSJPYmplY3RJZGVudGlmaWVyVHlwZSIvPg0KKwk8eHNkOmNvbXBsZXhUeXBlIG5hbWU9Ik9iamVjdElkZW50aWZpZXJUeXBlIj4NCisJCTx4c2Q6c2VxdWVuY2U+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IklkZW50aWZpZXIiIHR5cGU9IklkZW50aWZpZXJUeXBlIi8+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IkRlc2NyaXB0aW9uIiB0eXBlPSJ4c2Q6c3RyaW5nIiBtaW5PY2N1cnM9IjAiLz4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iRG9jdW1lbnRhdGlvblJlZmVyZW5jZXMiIHR5cGU9IkRvY3VtZW50YXRpb25SZWZlcmVuY2VzVHlwZSIgbWluT2NjdXJzPSIwIi8+DQorCQk8L3hzZDpzZXF1ZW5jZT4NCisJPC94c2Q6Y29tcGxleFR5cGU+DQorCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iSWRlbnRpZmllclR5cGUiPg0KKwkJPHhzZDpzaW1wbGVDb250ZW50Pg0KKwkJCTx4c2Q6ZXh0ZW5zaW9uIGJhc2U9InhzZDphbnlVUkkiPg0KKwkJCQk8eHNkOmF0dHJpYnV0ZSBuYW1lPSJRdWFsaWZpZXIiIHR5cGU9IlF1YWxpZmllclR5cGUiIHVzZT0ib3B0aW9uYWwiLz4NCisJCQk8L3hzZDpleHRlbnNpb24+DQorCQk8L3hzZDpzaW1wbGVDb250ZW50Pg0KKwk8L3hzZDpjb21wbGV4VHlwZT4NCisJPHhzZDpzaW1wbGVUeXBlIG5hbWU9IlF1YWxpZmllclR5cGUiPg0KKwkJPHhzZDpyZXN0cmljdGlvbiBiYXNlPSJ4c2Q6c3RyaW5nIj4NCisJCQk8eHNkOmVudW1lcmF0aW9uIHZhbHVlPSJPSURBc1VSSSIvPg0KKwkJCTx4c2Q6ZW51bWVyYXRpb24gdmFsdWU9Ik9JREFzVVJOIi8+DQorCQk8L3hzZDpyZXN0cmljdGlvbj4NCisJPC94c2Q6c2ltcGxlVHlwZT4NCisJPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJEb2N1bWVudGF0aW9uUmVmZXJlbmNlc1R5cGUiPg0KKwkJPHhzZDpzZXF1ZW5jZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IkRvY3VtZW50YXRpb25SZWZlcmVuY2UiIHR5cGU9InhzZDphbnlVUkkiLz4NCisJCTwveHNkOnNlcXVlbmNlPg0KKwk8L3hzZDpjb21wbGV4VHlwZT4NCisJPHhzZDplbGVtZW50IG5hbWU9IkVuY2Fwc3VsYXRlZFBLSURhdGEiIHR5cGU9IkVuY2Fwc3VsYXRlZFBLSURhdGFUeXBlIi8+DQorCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iRW5jYXBzdWxhdGVkUEtJRGF0YVR5cGUiPg0KKwkJPHhzZDpzaW1wbGVDb250ZW50Pg0KKwkJCTx4c2Q6ZXh0ZW5zaW9uIGJhc2U9InhzZDpiYXNlNjRCaW5hcnkiPg0KKwkJCQk8eHNkOmF0dHJpYnV0ZSBuYW1lPSJJZCIgdHlwZT0ieHNkOklEIiB1c2U9Im9wdGlvbmFsIi8+DQorCQkJPC94c2Q6ZXh0ZW5zaW9uPg0KKwkJPC94c2Q6c2ltcGxlQ29udGVudD4NCisJPC94c2Q6Y29tcGxleFR5cGU+DQorCTx4c2Q6ZWxlbWVudCBuYW1lPSJUaW1lU3RhbXAiIHR5cGU9IlRpbWVTdGFtcFR5cGUiLz4NCisJPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJUaW1lU3RhbXBUeXBlIj4NCisJCTx4c2Q6c2VxdWVuY2U+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9Ikhhc2hEYXRhSW5mbyIgdHlwZT0iSGFzaERhdGFJbmZvVHlwZSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4NCisJCQk8eHNkOmNob2ljZT4NCisJCQkJPHhzZDplbGVtZW50IG5hbWU9IkVuY2Fwc3VsYXRlZFRpbWVTdGFtcCIgdHlwZT0iRW5jYXBzdWxhdGVkUEtJRGF0YVR5cGUiLz4NCisJCQkJPHhzZDplbGVtZW50IG5hbWU9IlhNTFRpbWVTdGFtcCIgdHlwZT0iQW55VHlwZSIvPg0KKwkJCTwveHNkOmNob2ljZT4NCisJCTwveHNkOnNlcXVlbmNlPg0KKwk8L3hzZDpjb21wbGV4VHlwZT4NCisJPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJIYXNoRGF0YUluZm9UeXBlIj4NCisJCTx4c2Q6c2VxdWVuY2U+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IlRyYW5zZm9ybXMiIHR5cGU9ImRzOlRyYW5zZm9ybXNUeXBlIiBtaW5PY2N1cnM9IjAiLz4NCisJCTwveHNkOnNlcXVlbmNlPg0KKwkJPHhzZDphdHRyaWJ1dGUgbmFtZT0idXJpIiB0eXBlPSJ4c2Q6YW55VVJJIiB1c2U9InJlcXVpcmVkIi8+DQorCTwveHNkOmNvbXBsZXhUeXBlPg0KKwk8eHNkOmVsZW1lbnQgbmFtZT0iUXVhbGlmeWluZ1Byb3BlcnRpZXMiIHR5cGU9IlF1YWxpZnlpbmdQcm9wZXJ0aWVzVHlwZSIvPg0KKwk8eHNkOmNvbXBsZXhUeXBlIG5hbWU9IlF1YWxpZnlpbmdQcm9wZXJ0aWVzVHlwZSI+DQorCQk8eHNkOnNlcXVlbmNlPg0KKwkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJTaWduZWRQcm9wZXJ0aWVzIiB0eXBlPSJTaWduZWRQcm9wZXJ0aWVzVHlwZSIgbWluT2NjdXJzPSIwIi8+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IlVuc2lnbmVkUHJvcGVydGllcyIgdHlwZT0iVW5zaWduZWRQcm9wZXJ0aWVzVHlwZSIgbWluT2NjdXJzPSIwIi8+DQorCQk8L3hzZDpzZXF1ZW5jZT4NCisJCTx4c2Q6YXR0cmlidXRlIG5hbWU9IlRhcmdldCIgdHlwZT0ieHNkOmFueVVSSSIgdXNlPSJyZXF1aXJlZCIvPg0KKwkJPHhzZDphdHRyaWJ1dGUgbmFtZT0iSWQiIHR5cGU9InhzZDpJRCIgdXNlPSJvcHRpb25hbCIvPg0KKwk8L3hzZDpjb21wbGV4VHlwZT4NCisJPHhzZDplbGVtZW50IG5hbWU9IlNpZ25lZFByb3BlcnRpZXMiIHR5cGU9IlNpZ25lZFByb3BlcnRpZXNUeXBlIi8+DQorCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iU2lnbmVkUHJvcGVydGllc1R5cGUiPg0KKwkJPHhzZDpzZXF1ZW5jZT4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iU2lnbmVkU2lnbmF0dXJlUHJvcGVydGllcyIgdHlwZT0iU2lnbmVkU2lnbmF0dXJlUHJvcGVydGllc1R5cGUiLz4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iU2lnbmVkRGF0YU9iamVjdFByb3BlcnRpZXMiIHR5cGU9IlNpZ25lZERhdGFPYmplY3RQcm9wZXJ0aWVzVHlwZSIgbWluT2NjdXJzPSIwIi8+DQorCQk8L3hzZDpzZXF1ZW5jZT4NCisJCTx4c2Q6YXR0cmlidXRlIG5hbWU9IklkIiB0eXBlPSJ4c2Q6SUQiIHVzZT0ib3B0aW9uYWwiLz4NCisJPC94c2Q6Y29tcGxleFR5cGU+DQorCTx4c2Q6ZWxlbWVudCBuYW1lPSJVbnNpZ25lZFByb3BlcnRpZXMiIHR5cGU9IlVuc2lnbmVkUHJvcGVydGllc1R5cGUiLz4NCisJPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJVbnNpZ25lZFByb3BlcnRpZXNUeXBlIj4NCisJCTx4c2Q6c2VxdWVuY2U+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IlVuc2lnbmVkU2lnbmF0dXJlUHJvcGVydGllcyIgdHlwZT0iVW5zaWduZWRTaWduYXR1cmVQcm9wZXJ0aWVzVHlwZSIgbWluT2NjdXJzPSIwIi8+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IlVuc2lnbmVkRGF0YU9iamVjdFByb3BlcnRpZXMiIHR5cGU9IlVuc2lnbmVkRGF0YU9iamVjdFByb3BlcnRpZXNUeXBlIiBtaW5PY2N1cnM9IjAiLz4NCisJCTwveHNkOnNlcXVlbmNlPg0KKwkJPHhzZDphdHRyaWJ1dGUgbmFtZT0iSWQiIHR5cGU9InhzZDpJRCIgdXNlPSJvcHRpb25hbCIvPg0KKwk8L3hzZDpjb21wbGV4VHlwZT4NCisJPHhzZDplbGVtZW50IG5hbWU9IlNpZ25lZFNpZ25hdHVyZVByb3BlcnRpZXMiIHR5cGU9IlNpZ25lZFNpZ25hdHVyZVByb3BlcnRpZXNUeXBlIi8+DQorCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iU2lnbmVkU2lnbmF0dXJlUHJvcGVydGllc1R5cGUiPg0KKwkJPHhzZDpzZXF1ZW5jZT4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iU2lnbmluZ1RpbWUiIHR5cGU9InhzZDpkYXRlVGltZSIvPg0KKwkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJTaWduaW5nQ2VydGlmaWNhdGUiIHR5cGU9IkNlcnRJRExpc3RUeXBlIi8+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IlNpZ25hdHVyZVBvbGljeUlkZW50aWZpZXIiIHR5cGU9IlNpZ25hdHVyZVBvbGljeUlkZW50aWZpZXJUeXBlIi8+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IlNpZ25hdHVyZVByb2R1Y3Rpb25QbGFjZSIgdHlwZT0iU2lnbmF0dXJlUHJvZHVjdGlvblBsYWNlVHlwZSIgbWluT2NjdXJzPSIwIi8+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IlNpZ25lclJvbGUiIHR5cGU9IlNpZ25lclJvbGVUeXBlIiBtaW5PY2N1cnM9IjAiLz4NCisJCTwveHNkOnNlcXVlbmNlPg0KKwk8L3hzZDpjb21wbGV4VHlwZT4NCisJPHhzZDplbGVtZW50IG5hbWU9IlNpZ25lZERhdGFPYmplY3RQcm9wZXJ0aWVzIiB0eXBlPSJTaWduZWREYXRhT2JqZWN0UHJvcGVydGllc1R5cGUiLz4NCisJPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJTaWduZWREYXRhT2JqZWN0UHJvcGVydGllc1R5cGUiPg0KKwkJPHhzZDpzZXF1ZW5jZT4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iRGF0YU9iamVjdEZvcm1hdCIgdHlwZT0iRGF0YU9iamVjdEZvcm1hdFR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iQ29tbWl0bWVudFR5cGVJbmRpY2F0aW9uIiB0eXBlPSJDb21taXRtZW50VHlwZUluZGljYXRpb25UeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IkFsbERhdGFPYmplY3RzVGltZVN0YW1wIiB0eXBlPSJUaW1lU3RhbXBUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IkluZGl2aWR1YWxEYXRhT2JqZWN0c1RpbWVTdGFtcCIgdHlwZT0iVGltZVN0YW1wVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPg0KKwkJPC94c2Q6c2VxdWVuY2U+DQorCTwveHNkOmNvbXBsZXhUeXBlPg0KKwk8eHNkOmVsZW1lbnQgbmFtZT0iVW5zaWduZWRTaWduYXR1cmVQcm9wZXJ0aWVzIiB0eXBlPSJVbnNpZ25lZFNpZ25hdHVyZVByb3BlcnRpZXNUeXBlIi8+DQorCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iVW5zaWduZWRTaWduYXR1cmVQcm9wZXJ0aWVzVHlwZSI+DQorCQk8eHNkOnNlcXVlbmNlPg0KKwkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJDb3VudGVyU2lnbmF0dXJlIiB0eXBlPSJDb3VudGVyU2lnbmF0dXJlVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPg0KKwkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJTaWduYXR1cmVUaW1lU3RhbXAiIHR5cGU9IlRpbWVTdGFtcFR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iQ29tcGxldGVDZXJ0aWZpY2F0ZVJlZnMiIHR5cGU9IkNvbXBsZXRlQ2VydGlmaWNhdGVSZWZzVHlwZSIgbWluT2NjdXJzPSIwIi8+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IkNvbXBsZXRlUmV2b2NhdGlvblJlZnMiIHR5cGU9IkNvbXBsZXRlUmV2b2NhdGlvblJlZnNUeXBlIiBtaW5PY2N1cnM9IjAiLz4NCisJCQk8eHNkOmNob2ljZT4NCisJCQkJPHhzZDplbGVtZW50IG5hbWU9IlNpZ0FuZFJlZnNUaW1lU3RhbXAiIHR5cGU9IlRpbWVTdGFtcFR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4NCisJCQkJPHhzZDplbGVtZW50IG5hbWU9IlJlZnNPbmx5VGltZVN0YW1wIiB0eXBlPSJUaW1lU3RhbXBUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+DQorCQkJPC94c2Q6Y2hvaWNlPg0KKwkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJDZXJ0aWZpY2F0ZVZhbHVlcyIgdHlwZT0iQ2VydGlmaWNhdGVWYWx1ZXNUeXBlIiBtaW5PY2N1cnM9IjAiLz4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iUmV2b2NhdGlvblZhbHVlcyIgdHlwZT0iUmV2b2NhdGlvblZhbHVlc1R5cGUiIG1pbk9jY3Vycz0iMCIvPg0KKwkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJBcmNoaXZlVGltZVN0YW1wIiB0eXBlPSJUaW1lU3RhbXBUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+DQorCQk8L3hzZDpzZXF1ZW5jZT4NCisJPC94c2Q6Y29tcGxleFR5cGU+DQorCTx4c2Q6ZWxlbWVudCBuYW1lPSJVbnNpZ25lZERhdGFPYmplY3RQcm9wZXJ0aWVzIiB0eXBlPSJVbnNpZ25lZERhdGFPYmplY3RQcm9wZXJ0aWVzVHlwZSIvPg0KKwk8eHNkOmNvbXBsZXhUeXBlIG5hbWU9IlVuc2lnbmVkRGF0YU9iamVjdFByb3BlcnRpZXNUeXBlIj4NCisJCTx4c2Q6c2VxdWVuY2U+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IlVuc2lnbmVkRGF0YU9iamVjdFByb3BlcnR5IiB0eXBlPSJBbnlUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+DQorCQk8L3hzZDpzZXF1ZW5jZT4NCisJPC94c2Q6Y29tcGxleFR5cGU+DQorCTx4c2Q6ZWxlbWVudCBuYW1lPSJRdWFsaWZ5aW5nUHJvcGVydGllc1JlZmVyZW5jZSIgdHlwZT0iUXVhbGlmeWluZ1Byb3BlcnRpZXNSZWZlcmVuY2VUeXBlIi8+DQorCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iUXVhbGlmeWluZ1Byb3BlcnRpZXNSZWZlcmVuY2VUeXBlIj4NCisJCTx4c2Q6c2VxdWVuY2U+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IlRyYW5zZm9ybXMiIHR5cGU9ImRzOlRyYW5zZm9ybXNUeXBlIiBtaW5PY2N1cnM9IjAiLz4NCisJCTwveHNkOnNlcXVlbmNlPg0KKwkJPHhzZDphdHRyaWJ1dGUgbmFtZT0iVVJJIiB0eXBlPSJ4c2Q6YW55VVJJIiB1c2U9InJlcXVpcmVkIi8+DQorCQk8eHNkOmF0dHJpYnV0ZSBuYW1lPSJJZCIgdHlwZT0ieHNkOklEIiB1c2U9Im9wdGlvbmFsIi8+DQorCTwveHNkOmNvbXBsZXhUeXBlPg0KKwk8eHNkOmVsZW1lbnQgbmFtZT0iU2lnbmluZ1RpbWUiIHR5cGU9InhzZDpkYXRlVGltZSIvPg0KKwk8eHNkOmVsZW1lbnQgbmFtZT0iU2lnbmluZ0NlcnRpZmljYXRlIiB0eXBlPSJDZXJ0SURMaXN0VHlwZSIvPg0KKwk8eHNkOmNvbXBsZXhUeXBlIG5hbWU9IkNlcnRJRExpc3RUeXBlIj4NCisJCTx4c2Q6c2VxdWVuY2U+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IkNlcnQiIHR5cGU9IkNlcnRJRFR5cGUiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+DQorCQk8L3hzZDpzZXF1ZW5jZT4NCisJPC94c2Q6Y29tcGxleFR5cGU+DQorCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iQ2VydElEVHlwZSI+DQorCQk8eHNkOnNlcXVlbmNlPg0KKwkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJDZXJ0RGlnZXN0IiB0eXBlPSJEaWdlc3RBbGdBbmRWYWx1ZVR5cGUiLz4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iSXNzdWVyU2VyaWFsIiB0eXBlPSJkczpYNTA5SXNzdWVyU2VyaWFsVHlwZSIvPg0KKwkJPC94c2Q6c2VxdWVuY2U+DQorCTwveHNkOmNvbXBsZXhUeXBlPg0KKwk8eHNkOmNvbXBsZXhUeXBlIG5hbWU9IkRpZ2VzdEFsZ0FuZFZhbHVlVHlwZSI+DQorCQk8eHNkOnNlcXVlbmNlPg0KKwkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJEaWdlc3RNZXRob2QiIHR5cGU9ImRzOkRpZ2VzdE1ldGhvZFR5cGUiLz4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iRGlnZXN0VmFsdWUiIHR5cGU9ImRzOkRpZ2VzdFZhbHVlVHlwZSIvPg0KKwkJPC94c2Q6c2VxdWVuY2U+DQorCTwveHNkOmNvbXBsZXhUeXBlPg0KKwk8eHNkOmVsZW1lbnQgbmFtZT0iU2lnbmF0dXJlUG9saWN5SWRlbnRpZmllciIgdHlwZT0iU2lnbmF0dXJlUG9saWN5SWRlbnRpZmllclR5cGUiLz4NCisJPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJTaWduYXR1cmVQb2xpY3lJZGVudGlmaWVyVHlwZSI+DQorCQk8eHNkOmNob2ljZT4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iU2lnbmF0dXJlUG9saWN5SWQiIHR5cGU9IlNpZ25hdHVyZVBvbGljeUlkVHlwZSIvPg0KKwkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJTaWduYXR1cmVQb2xpY3lJbXBsaWVkIi8+DQorCQk8L3hzZDpjaG9pY2U+DQorCTwveHNkOmNvbXBsZXhUeXBlPg0KKwk8eHNkOmNvbXBsZXhUeXBlIG5hbWU9IlNpZ25hdHVyZVBvbGljeUlkVHlwZSI+DQorCQk8eHNkOnNlcXVlbmNlPg0KKwkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJTaWdQb2xpY3lJZCIgdHlwZT0iT2JqZWN0SWRlbnRpZmllclR5cGUiLz4NCisJCQk8eHNkOmVsZW1lbnQgcmVmPSJkczpUcmFuc2Zvcm1zIiBtaW5PY2N1cnM9IjAiLz4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iU2lnUG9saWN5SGFzaCIgdHlwZT0iRGlnZXN0QWxnQW5kVmFsdWVUeXBlIi8+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IlNpZ1BvbGljeVF1YWxpZmllcnMiIHR5cGU9IlNpZ1BvbGljeVF1YWxpZmllcnNMaXN0VHlwZSIgbWluT2NjdXJzPSIwIi8+DQorCQk8L3hzZDpzZXF1ZW5jZT4NCisJPC94c2Q6Y29tcGxleFR5cGU+DQorCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iU2lnUG9saWN5UXVhbGlmaWVyc0xpc3RUeXBlIj4NCisJCTx4c2Q6c2VxdWVuY2U+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IlNpZ1BvbGljeVF1YWxpZmllciIgdHlwZT0iQW55VHlwZSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4NCisJCTwveHNkOnNlcXVlbmNlPg0KKwk8L3hzZDpjb21wbGV4VHlwZT4NCisJPHhzZDplbGVtZW50IG5hbWU9IlNQVVJJIiB0eXBlPSJ4c2Q6YW55VVJJIi8+DQorCTx4c2Q6ZWxlbWVudCBuYW1lPSJTUFVzZXJOb3RpY2UiIHR5cGU9IlNQVXNlck5vdGljZVR5cGUiLz4NCisJPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJTUFVzZXJOb3RpY2VUeXBlIj4NCisJCTx4c2Q6c2VxdWVuY2U+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9Ik5vdGljZVJlZiIgdHlwZT0iTm90aWNlUmVmZXJlbmNlVHlwZSIgbWluT2NjdXJzPSIwIi8+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IkV4cGxpY2l0VGV4dCIgdHlwZT0ieHNkOnN0cmluZyIgbWluT2NjdXJzPSIwIi8+DQorCQk8L3hzZDpzZXF1ZW5jZT4NCisJPC94c2Q6Y29tcGxleFR5cGU+DQorCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iTm90aWNlUmVmZXJlbmNlVHlwZSI+DQorCQk8eHNkOnNlcXVlbmNlPg0KKwkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJPcmdhbml6YXRpb24iIHR5cGU9InhzZDpzdHJpbmciLz4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iTm90aWNlTnVtYmVycyIgdHlwZT0iSW50ZWdlckxpc3RUeXBlIi8+DQorCQk8L3hzZDpzZXF1ZW5jZT4NCisJPC94c2Q6Y29tcGxleFR5cGU+DQorCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iSW50ZWdlckxpc3RUeXBlIj4NCisJCTx4c2Q6c2VxdWVuY2U+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9ImludCIgdHlwZT0ieHNkOmludGVnZXIiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4NCisJCTwveHNkOnNlcXVlbmNlPg0KKwk8L3hzZDpjb21wbGV4VHlwZT4NCisJPHhzZDplbGVtZW50IG5hbWU9IkNvdW50ZXJTaWduYXR1cmUiIHR5cGU9IkNvdW50ZXJTaWduYXR1cmVUeXBlIi8+DQorCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iQ291bnRlclNpZ25hdHVyZVR5cGUiPg0KKwkJPHhzZDpzZXF1ZW5jZT4NCisJCQk8eHNkOmVsZW1lbnQgcmVmPSJkczpTaWduYXR1cmUiLz4NCisJCTwveHNkOnNlcXVlbmNlPg0KKwk8L3hzZDpjb21wbGV4VHlwZT4NCisJPHhzZDplbGVtZW50IG5hbWU9IkRhdGFPYmplY3RGb3JtYXQiIHR5cGU9IkRhdGFPYmplY3RGb3JtYXRUeXBlIi8+DQorCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iRGF0YU9iamVjdEZvcm1hdFR5cGUiPg0KKwkJPHhzZDpzZXF1ZW5jZT4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iRGVzY3JpcHRpb24iIHR5cGU9InhzZDpzdHJpbmciIG1pbk9jY3Vycz0iMCIvPg0KKwkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJPYmplY3RJZGVudGlmaWVyIiB0eXBlPSJPYmplY3RJZGVudGlmaWVyVHlwZSIgbWluT2NjdXJzPSIwIi8+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9Ik1pbWVUeXBlIiB0eXBlPSJ4c2Q6c3RyaW5nIiBtaW5PY2N1cnM9IjAiLz4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iRW5jb2RpbmciIHR5cGU9InhzZDphbnlVUkkiIG1pbk9jY3Vycz0iMCIvPg0KKwkJPC94c2Q6c2VxdWVuY2U+DQorCQk8eHNkOmF0dHJpYnV0ZSBuYW1lPSJPYmplY3RSZWZlcmVuY2UiIHR5cGU9InhzZDphbnlVUkkiIHVzZT0icmVxdWlyZWQiLz4NCisJPC94c2Q6Y29tcGxleFR5cGU+DQorCTx4c2Q6ZWxlbWVudCBuYW1lPSJDb21taXRtZW50VHlwZUluZGljYXRpb24iIHR5cGU9IkNvbW1pdG1lbnRUeXBlSW5kaWNhdGlvblR5cGUiLz4NCisJPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJDb21taXRtZW50VHlwZUluZGljYXRpb25UeXBlIj4NCisJCTx4c2Q6c2VxdWVuY2U+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IkNvbW1pdG1lbnRUeXBlSWQiIHR5cGU9Ik9iamVjdElkZW50aWZpZXJUeXBlIi8+DQorCQkJPHhzZDpjaG9pY2U+DQorCQkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJPYmplY3RSZWZlcmVuY2UiIHR5cGU9InhzZDphbnlVUkkiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4NCisJCQkJPHhzZDplbGVtZW50IG5hbWU9IkFsbFNpZ25lZERhdGFPYmplY3RzIi8+DQorCQkJPC94c2Q6Y2hvaWNlPg0KKwkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJDb21taXRtZW50VHlwZVF1YWxpZmllcnMiIHR5cGU9IkNvbW1pdG1lbnRUeXBlUXVhbGlmaWVyc0xpc3RUeXBlIiBtaW5PY2N1cnM9IjAiLz4NCisJCTwveHNkOnNlcXVlbmNlPg0KKwk8L3hzZDpjb21wbGV4VHlwZT4NCisJPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJDb21taXRtZW50VHlwZVF1YWxpZmllcnNMaXN0VHlwZSI+DQorCQk8eHNkOnNlcXVlbmNlPg0KKwkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJDb21taXRtZW50VHlwZVF1YWxpZmllciIgdHlwZT0iQW55VHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPg0KKwkJPC94c2Q6c2VxdWVuY2U+DQorCTwveHNkOmNvbXBsZXhUeXBlPg0KKwk8eHNkOmVsZW1lbnQgbmFtZT0iU2lnbmF0dXJlUHJvZHVjdGlvblBsYWNlIiB0eXBlPSJTaWduYXR1cmVQcm9kdWN0aW9uUGxhY2VUeXBlIi8+DQorCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iU2lnbmF0dXJlUHJvZHVjdGlvblBsYWNlVHlwZSI+DQorCQk8eHNkOnNlcXVlbmNlPg0KKwkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJDaXR5IiB0eXBlPSJ4c2Q6c3RyaW5nIiBtaW5PY2N1cnM9IjAiLz4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iU3RhdGVPclByb3ZpbmNlIiB0eXBlPSJ4c2Q6c3RyaW5nIiBtaW5PY2N1cnM9IjAiLz4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iUG9zdGFsQ29kZSIgdHlwZT0ieHNkOnN0cmluZyIgbWluT2NjdXJzPSIwIi8+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IkNvdW50cnlOYW1lIiB0eXBlPSJ4c2Q6c3RyaW5nIiBtaW5PY2N1cnM9IjAiLz4NCisJCTwveHNkOnNlcXVlbmNlPg0KKwk8L3hzZDpjb21wbGV4VHlwZT4NCisJPHhzZDplbGVtZW50IG5hbWU9IlNpZ25lclJvbGUiIHR5cGU9IlNpZ25lclJvbGVUeXBlIi8+DQorCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iU2lnbmVyUm9sZVR5cGUiPg0KKwkJPHhzZDpzZXF1ZW5jZT4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iQ2xhaW1lZFJvbGVzIiB0eXBlPSJDbGFpbWVkUm9sZXNMaXN0VHlwZSIgbWluT2NjdXJzPSIwIi8+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IkNlcnRpZmllZFJvbGVzIiB0eXBlPSJDZXJ0aWZpZWRSb2xlc0xpc3RUeXBlIiBtaW5PY2N1cnM9IjAiLz4NCisJCTwveHNkOnNlcXVlbmNlPg0KKwk8L3hzZDpjb21wbGV4VHlwZT4NCisJPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJDbGFpbWVkUm9sZXNMaXN0VHlwZSI+DQorCQk8eHNkOnNlcXVlbmNlPg0KKwkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJDbGFpbWVkUm9sZSIgdHlwZT0iQW55VHlwZSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4NCisJCTwveHNkOnNlcXVlbmNlPg0KKwk8L3hzZDpjb21wbGV4VHlwZT4NCisJPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJDZXJ0aWZpZWRSb2xlc0xpc3RUeXBlIj4NCisJCTx4c2Q6c2VxdWVuY2U+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IkNlcnRpZmllZFJvbGUiIHR5cGU9IkVuY2Fwc3VsYXRlZFBLSURhdGFUeXBlIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPg0KKwkJPC94c2Q6c2VxdWVuY2U+DQorCTwveHNkOmNvbXBsZXhUeXBlPg0KKwk8eHNkOmVsZW1lbnQgbmFtZT0iQWxsRGF0YU9iamVjdHNUaW1lU3RhbXAiIHR5cGU9IlRpbWVTdGFtcFR5cGUiLz4NCisJPHhzZDplbGVtZW50IG5hbWU9IkluZGl2aWR1YWxEYXRhT2JqZWN0c1RpbWVTdGFtcCIgdHlwZT0iVGltZVN0YW1wVHlwZSIvPg0KKwk8eHNkOmVsZW1lbnQgbmFtZT0iU2lnbmF0dXJlVGltZVN0YW1wIiB0eXBlPSJUaW1lU3RhbXBUeXBlIi8+DQorCTx4c2Q6ZWxlbWVudCBuYW1lPSJDb21wbGV0ZUNlcnRpZmljYXRlUmVmcyIgdHlwZT0iQ29tcGxldGVDZXJ0aWZpY2F0ZVJlZnNUeXBlIi8+DQorCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iQ29tcGxldGVDZXJ0aWZpY2F0ZVJlZnNUeXBlIj4NCisJCTx4c2Q6c2VxdWVuY2U+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IkNlcnRSZWZzIiB0eXBlPSJDZXJ0SURMaXN0VHlwZSIvPg0KKwkJPC94c2Q6c2VxdWVuY2U+DQorCQk8eHNkOmF0dHJpYnV0ZSBuYW1lPSJJZCIgdHlwZT0ieHNkOklEIiB1c2U9Im9wdGlvbmFsIi8+DQorCTwveHNkOmNvbXBsZXhUeXBlPg0KKwk8eHNkOmVsZW1lbnQgbmFtZT0iQ29tcGxldGVSZXZvY2F0aW9uUmVmcyIgdHlwZT0iQ29tcGxldGVSZXZvY2F0aW9uUmVmc1R5cGUiLz4NCisJPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJDb21wbGV0ZVJldm9jYXRpb25SZWZzVHlwZSI+DQorCQk8eHNkOnNlcXVlbmNlPg0KKwkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJDUkxSZWZzIiB0eXBlPSJDUkxSZWZzVHlwZSIgbWluT2NjdXJzPSIwIi8+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9Ik9DU1BSZWZzIiB0eXBlPSJPQ1NQUmVmc1R5cGUiIG1pbk9jY3Vycz0iMCIvPg0KKwkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJPdGhlclJlZnMiIHR5cGU9Ik90aGVyQ2VydFN0YXR1c1JlZnNUeXBlIiBtaW5PY2N1cnM9IjAiLz4NCisJCTwveHNkOnNlcXVlbmNlPg0KKwkJPHhzZDphdHRyaWJ1dGUgbmFtZT0iSWQiIHR5cGU9InhzZDpJRCIgdXNlPSJvcHRpb25hbCIvPg0KKwk8L3hzZDpjb21wbGV4VHlwZT4NCisJPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJDUkxSZWZzVHlwZSI+DQorCQk8eHNkOnNlcXVlbmNlPg0KKwkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJDUkxSZWYiIHR5cGU9IkNSTFJlZlR5cGUiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+DQorCQk8L3hzZDpzZXF1ZW5jZT4NCisJPC94c2Q6Y29tcGxleFR5cGU+DQorCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iQ1JMUmVmVHlwZSI+DQorCQk8eHNkOnNlcXVlbmNlPg0KKwkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJEaWdlc3RBbGdBbmRWYWx1ZSIgdHlwZT0iRGlnZXN0QWxnQW5kVmFsdWVUeXBlIi8+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IkNSTElkZW50aWZpZXIiIHR5cGU9IkNSTElkZW50aWZpZXJUeXBlIiBtaW5PY2N1cnM9IjAiLz4NCisJCTwveHNkOnNlcXVlbmNlPg0KKwk8L3hzZDpjb21wbGV4VHlwZT4NCisJPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJDUkxJZGVudGlmaWVyVHlwZSI+DQorCQk8eHNkOnNlcXVlbmNlPg0KKwkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJJc3N1ZXIiIHR5cGU9InhzZDpzdHJpbmciLz4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iSXNzdWVUaW1lIiB0eXBlPSJ4c2Q6ZGF0ZVRpbWUiLz4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iTnVtYmVyIiB0eXBlPSJ4c2Q6aW50ZWdlciIgbWluT2NjdXJzPSIwIi8+DQorCQk8L3hzZDpzZXF1ZW5jZT4NCisJCTx4c2Q6YXR0cmlidXRlIG5hbWU9IlVSSSIgdHlwZT0ieHNkOmFueVVSSSIgdXNlPSJvcHRpb25hbCIvPg0KKwk8L3hzZDpjb21wbGV4VHlwZT4NCisJPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJPQ1NQUmVmc1R5cGUiPg0KKwkJPHhzZDpzZXF1ZW5jZT4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iT0NTUFJlZiIgdHlwZT0iT0NTUFJlZlR5cGUiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+DQorCQk8L3hzZDpzZXF1ZW5jZT4NCisJPC94c2Q6Y29tcGxleFR5cGU+DQorCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iT0NTUFJlZlR5cGUiPg0KKwkJPHhzZDpzZXF1ZW5jZT4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iT0NTUElkZW50aWZpZXIiIHR5cGU9Ik9DU1BJZGVudGlmaWVyVHlwZSIvPg0KKwkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJEaWdlc3RBbGdBbmRWYWx1ZSIgdHlwZT0iRGlnZXN0QWxnQW5kVmFsdWVUeXBlIiBtaW5PY2N1cnM9IjAiLz4NCisJCTwveHNkOnNlcXVlbmNlPg0KKwk8L3hzZDpjb21wbGV4VHlwZT4NCisJPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJPQ1NQSWRlbnRpZmllclR5cGUiPg0KKwkJPHhzZDpzZXF1ZW5jZT4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iUmVzcG9uZGVySUQiIHR5cGU9InhzZDpzdHJpbmciLz4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iUHJvZHVjZWRBdCIgdHlwZT0ieHNkOmRhdGVUaW1lIi8+DQorCQk8L3hzZDpzZXF1ZW5jZT4NCisJCTx4c2Q6YXR0cmlidXRlIG5hbWU9IlVSSSIgdHlwZT0ieHNkOmFueVVSSSIgdXNlPSJvcHRpb25hbCIvPg0KKwk8L3hzZDpjb21wbGV4VHlwZT4NCisJPHhzZDpjb21wbGV4VHlwZSBuYW1lPSJPdGhlckNlcnRTdGF0dXNSZWZzVHlwZSI+DQorCQk8eHNkOnNlcXVlbmNlPg0KKwkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJPdGhlclJlZiIgdHlwZT0iQW55VHlwZSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4NCisJCTwveHNkOnNlcXVlbmNlPg0KKwk8L3hzZDpjb21wbGV4VHlwZT4NCisJPHhzZDplbGVtZW50IG5hbWU9IlNpZ0FuZFJlZnNUaW1lU3RhbXAiIHR5cGU9IlRpbWVTdGFtcFR5cGUiLz4NCisJPHhzZDplbGVtZW50IG5hbWU9IlJlZnNPbmx5VGltZVN0YW1wIiB0eXBlPSJUaW1lU3RhbXBUeXBlIi8+DQorCTx4c2Q6ZWxlbWVudCBuYW1lPSJDZXJ0aWZpY2F0ZVZhbHVlcyIgdHlwZT0iQ2VydGlmaWNhdGVWYWx1ZXNUeXBlIi8+DQorCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iQ2VydGlmaWNhdGVWYWx1ZXNUeXBlIj4NCisJCTx4c2Q6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPg0KKwkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJFbmNhcHN1bGF0ZWRYNTA5Q2VydGlmaWNhdGUiIHR5cGU9IkVuY2Fwc3VsYXRlZFBLSURhdGFUeXBlIi8+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9Ik90aGVyQ2VydGlmaWNhdGUiIHR5cGU9IkFueVR5cGUiLz4NCisJCTwveHNkOmNob2ljZT4NCisJCTx4c2Q6YXR0cmlidXRlIG5hbWU9IklkIiB0eXBlPSJ4c2Q6SUQiIHVzZT0ib3B0aW9uYWwiLz4NCisJPC94c2Q6Y29tcGxleFR5cGU+DQorCTx4c2Q6ZWxlbWVudCBuYW1lPSJSZXZvY2F0aW9uVmFsdWVzIiB0eXBlPSJSZXZvY2F0aW9uVmFsdWVzVHlwZSIvPg0KKwk8eHNkOmNvbXBsZXhUeXBlIG5hbWU9IlJldm9jYXRpb25WYWx1ZXNUeXBlIj4NCisJCTx4c2Q6c2VxdWVuY2U+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IkNSTFZhbHVlcyIgdHlwZT0iQ1JMVmFsdWVzVHlwZSIgbWluT2NjdXJzPSIwIi8+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9Ik9DU1BWYWx1ZXMiIHR5cGU9Ik9DU1BWYWx1ZXNUeXBlIiBtaW5PY2N1cnM9IjAiLz4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iT3RoZXJWYWx1ZXMiIHR5cGU9Ik90aGVyQ2VydFN0YXR1c1ZhbHVlc1R5cGUiIG1pbk9jY3Vycz0iMCIvPg0KKwkJPC94c2Q6c2VxdWVuY2U+DQorCQk8eHNkOmF0dHJpYnV0ZSBuYW1lPSJJZCIgdHlwZT0ieHNkOklEIiB1c2U9Im9wdGlvbmFsIi8+DQorCTwveHNkOmNvbXBsZXhUeXBlPg0KKwk8eHNkOmNvbXBsZXhUeXBlIG5hbWU9IkNSTFZhbHVlc1R5cGUiPg0KKwkJPHhzZDpzZXF1ZW5jZT4NCisJCQk8eHNkOmVsZW1lbnQgbmFtZT0iRW5jYXBzdWxhdGVkQ1JMVmFsdWUiIHR5cGU9IkVuY2Fwc3VsYXRlZFBLSURhdGFUeXBlIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPg0KKwkJPC94c2Q6c2VxdWVuY2U+DQorCTwveHNkOmNvbXBsZXhUeXBlPg0KKwk8eHNkOmNvbXBsZXhUeXBlIG5hbWU9Ik9DU1BWYWx1ZXNUeXBlIj4NCisJCTx4c2Q6c2VxdWVuY2U+DQorCQkJPHhzZDplbGVtZW50IG5hbWU9IkVuY2Fwc3VsYXRlZE9DU1BWYWx1ZSIgdHlwZT0iRW5jYXBzdWxhdGVkUEtJRGF0YVR5cGUiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+DQorCQk8L3hzZDpzZXF1ZW5jZT4NCisJPC94c2Q6Y29tcGxleFR5cGU+DQorCTx4c2Q6Y29tcGxleFR5cGUgbmFtZT0iT3RoZXJDZXJ0U3RhdHVzVmFsdWVzVHlwZSI+DQorCQk8eHNkOnNlcXVlbmNlPg0KKwkJCTx4c2Q6ZWxlbWVudCBuYW1lPSJPdGhlclZhbHVlIiB0eXBlPSJBbnlUeXBlIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPg0KKwkJPC94c2Q6c2VxdWVuY2U+DQorCTwveHNkOmNvbXBsZXhUeXBlPg0KKwk8eHNkOmVsZW1lbnQgbmFtZT0iQXJjaGl2ZVRpbWVTdGFtcCIgdHlwZT0iVGltZVN0YW1wVHlwZSIvPg0KKzwveHNkOnNjaGVtYT4NCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvcmVzb3VyY2Uvc2NoZW1hL3hlbmMtc2NoZW1hLnJuZyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9yZXNvdXJjZS9zY2hlbWEveGVuYy1zY2hlbWEucm5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5NWUwMzMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvcmVzb3VyY2Uvc2NoZW1hL3hlbmMtc2NoZW1hLnJuZwpAQCAtMCwwICsxLDIxOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gaHR0cDovL3d3dy54bWwuY29tL2xwdC9hLzIwMDIvMDEvMjMvcmVsYXhuZy5odG1sIC0tPgorPCEtLSBodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2NvbW1pdHRlZXMvcmVsYXgtbmcvdHV0b3JpYWwtMjAwMTEyMDMuaHRtbCAtLT4KKzwhLS0gaHR0cDovL3d3dy56dm9uLm9yZy94eGwvWE1MU2NoZW1hVHV0b3JpYWwvT3V0cHV0L3Nlcl93aWxkY2FyZHNfc3Q4Lmh0bWwgLS0+Cis8IS0tIGh0dHA6Ly9saXN0cy5vYXNpcy1vcGVuLm9yZy9hcmNoaXZlcy9yZWxheC1uZy1jb21tZW50LzIwMDIwNi9tYWlsbGlzdC5odG1sIC0tPgorCis8Z3JhbW1hciB4bWxucz0naHR0cDovL3JlbGF4bmcub3JnL25zL3N0cnVjdHVyZS8xLjAnCisgICAgICAgIHhtbG5zOmRzPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjJworICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgorICAgICAgICBucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIgorICAgICAgICBkYXRhdHlwZUxpYnJhcnk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWRhdGF0eXBlcyI+CisKKyAgICA8aW5jbHVkZSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9TaWduYXR1cmUvRHJhZnRzL3htbGRzaWctY29yZS94bWxkc2lnLWNvcmUtc2NoZW1hLnJuZyI+CisgICAgPCEtLSBVc2VkIGZvciBEaWdlc3RNZXRob2QsIEtleUluZm9UeXBlIGFuZCBhbnlUaGluZyAtLT4KKyAgICA8IS0tIFNpbmNlIHhtbGRzaWctY29yZSBhbHNvIGhhcyBhIHN0YXJ0LCBJIGhhdmUgdG8gaW5jbHVkZSBpdAorICAgICAgICBpbiB0aGUgaW5jbHVkZSBmb3IgcmVkZWZpbml0aW9uLiAtLT4KKyAgICAgICAgPHN0YXJ0PgorICAgICAgICAgICAgPGNob2ljZT4KKyAgICAgICAgICAgICAgICA8IS0tIFdlIGdldCB0byBkZWZpbmUgdGhlIHBlcm1pc3NpYmxlIHJvb3QgZWxlbWVudHMhIC0tPgorICAgICAgICAgICAgICAgIDxlbGVtZW50IG5hbWU9IkVuY3J5cHRlZERhdGEiPjxyZWYgbmFtZT0iRW5jcnlwdGVkRGF0YVR5cGUiLz48L2VsZW1lbnQ+CisgICAgICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0iRW5jcnlwdGVkS2V5Ij48cmVmIG5hbWU9IkVuY3J5cHRlZEtleVR5cGUiLz48L2VsZW1lbnQ+CisgICAgICAgICAgICA8L2Nob2ljZT4KKyAgICAgICAgPC9zdGFydD4gICAKKyAgICAgICAgCisgICAgICAgIDxkZWZpbmUgbmFtZT0nYW55VGhpbmcnPgorICAgICAgICAgICAgPHplcm9Pck1vcmU+CisgICAgICAgICAgICAgICAgPGNob2ljZT4KKyAgICAgICAgICAgICAgICAgICAgPHRleHQvPgorICAgICAgICAgICAgICAgICAgICA8ZWxlbWVudD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxhbnlOYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxleGNlcHQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuc05hbWUvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bnNOYW1lIG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjJy8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9leGNlcHQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2FueU5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICA8cmVmIG5hbWU9J2FueVRoaW5nJy8+CisgICAgICAgICAgICAgICAgICAgICAgICA8emVyb09yTW9yZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXR0cmlidXRlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFueU5hbWUvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXR0cmlidXRlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC96ZXJvT3JNb3JlPgorICAgICAgICAgICAgICAgICAgICA8L2VsZW1lbnQ+CisgICAgICAgICAgICAgICAgPC9jaG9pY2U+CisgICAgICAgICAgICA8L3plcm9Pck1vcmU+CisgICAgICAgICAgICA8L2RlZmluZT4KKyAgICAgICAgCisgICAgICAgIAorICAgIDwvaW5jbHVkZT4KKyAgICAKKyAgICAgICAgPCEtLSBJbXBvcnQgZGVmaW5pdGlvbnMgZnJvbSB0aGUgeG1sZHNpZyBybmcgLS0+CisKKyAgICAgICAgPGRlZmluZSBuYW1lPSJLZXlJbmZvVHlwZSIgY29tYmluZT0iaW50ZXJsZWF2ZSI+CisgICAgICAgICAgICA8emVyb09yTW9yZT4KKyAgICAgICAgICAgICAgICA8Y2hvaWNlPgorICAgICAgICAgICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSJFbmNyeXB0ZWRLZXkiPjxyZWYgbmFtZT0iRW5jcnlwdGVkS2V5VHlwZSIvPjwvZWxlbWVudD4KKyAgICAgICAgICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0iQWdyZWVtZW50TWV0aG9kIj48cmVmIG5hbWU9IkFncmVlbWVudE1ldGhvZFR5cGUiLz48L2VsZW1lbnQ+CisgICAgICAgICAgICAgICAgPC9jaG9pY2U+CisgICAgICAgICAgICA8L3plcm9Pck1vcmU+ICAgIAorICAgICAgICA8L2RlZmluZT4KKworICAgICAgICA8ZGVmaW5lIG5hbWU9IkRpZ2VzdE1ldGhvZFR5cGUiIGNvbWJpbmU9ImNob2ljZSI+CisgICAgICAgICAgICA8bm90QWxsb3dlZC8+CisgICAgICAgICA8L2RlZmluZT4KKworICAgICAgICA8ZGVmaW5lIG5hbWU9IlRyYW5zZm9ybVR5cGUiIGNvbWJpbmU9ImNob2ljZSI+CisgICAgICAgICAgICA8bm90QWxsb3dlZC8+CisgICAgICAgICA8L2RlZmluZT4KKworICAgIDwhLS0gTm93IHJlZGVmaW5lZCBpbiB0aGUgaW5jbHVkZSBzdGF0ZW1lbnQKKyAgICAgICAgPGRlZmluZSBuYW1lPSJhbnlUaGluZyIgY29tYmluZT0iY2hvaWNlIj4KKyAgICAgICAgICAgIDxub3RBbGxvd2VkLz4KKyAgICAgICAgIDwvZGVmaW5lPgorICAgIC0tPgorCisgICAgPCEtLSBFbmQgaW1wb3J0IC0tPgorICAgICAgICAKKyAgCisgICAgPGRlZmluZSBuYW1lPSJFbmNyeXB0ZWREYXRhVHlwZSI+CisgICAgICAgICAgPHJlZiBuYW1lPSJFbmNyeXB0ZWRUeXBlIi8+CisgICAgPC9kZWZpbmU+CisgIAorICAKKyAgICA8ZGVmaW5lIG5hbWU9IkVuY3J5cHRlZEtleVR5cGUiPgorICAgICAgICAgICAgPHJlZiBuYW1lPSJFbmNyeXB0ZWRUeXBlIi8+CisgICAgICAgICAgICA8b3B0aW9uYWw+PGVsZW1lbnQgbmFtZT0nUmVmZXJlbmNlTGlzdCc+CisgICAgICAgICAgICAgICAgPHJlZiBuYW1lPSJSZWZlcmVuY2VMaXN0VHlwZSIvPjwvZWxlbWVudD4KKyAgICAgICAgICAgIDwvb3B0aW9uYWw+CisgICAgICAgICAgICA8b3B0aW9uYWw+PGVsZW1lbnQgbmFtZT0nQ2FycmllZEtleU5hbWUnPjxkYXRhIHR5cGU9InN0cmluZyIvPjwvZWxlbWVudD48L29wdGlvbmFsPgorICAgICAgICAgICAgPG9wdGlvbmFsPjxhdHRyaWJ1dGUgbmFtZT0nUmVjaXBpZW50Jz4gPGRhdGEgdHlwZT0ic3RyaW5nIi8+PC9hdHRyaWJ1dGU+PC9vcHRpb25hbD4KKyAgICA8L2RlZmluZT4KKworICAgIAorICAgICA8ZGVmaW5lIG5hbWU9IkVuY3J5cHRlZFR5cGUiPgorICAgICAgICA8ZWxlbWVudCBuYW1lPSJFbmNyeXB0aW9uTWV0aG9kIj48cmVmIG5hbWU9IkVuY3J5cHRpb25NZXRob2RUeXBlIi8+PC9lbGVtZW50PgorICAgICAgICA8b3B0aW9uYWw+CisgICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSJLZXlJbmZvIiBucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgICAgICAgICAgPHJlZiBuYW1lPSJLZXlJbmZvVHlwZSIvPgorICAgICAgICAgICAgPC9lbGVtZW50PgorICAgICAgICA8L29wdGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+CisgICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSJDaXBoZXJEYXRhIj48cmVmIG5hbWU9IkNpcGhlckRhdGFUeXBlIi8+PC9lbGVtZW50PgorICAgICAgICA8L29wdGlvbmFsPiAKKyAgICAgICAgPG9wdGlvbmFsPgorICAgICAgICAgICAgIDxlbGVtZW50IG5hbWU9IkVuY3J5cHRpb25Qcm9wZXJ0aWVzIj48cmVmIG5hbWU9IkVuY3J5cHRpb25Qcm9wZXJ0aWVzVHlwZSIvPjwvZWxlbWVudD4KKyAgICAgICAgPC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlvbmFsPjxhdHRyaWJ1dGUgbmFtZT0iSWQiPjxkYXRhIHR5cGU9IklEIi8+PC9hdHRyaWJ1dGU+PC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlvbmFsPjxhdHRyaWJ1dGUgbmFtZT0iVHlwZSI+PGRhdGEgdHlwZT0iYW55VVJJIi8+PC9hdHRyaWJ1dGU+PC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlvbmFsPjxhdHRyaWJ1dGUgbmFtZT0iTWltZVR5cGUiPjxkYXRhIHR5cGU9InN0cmluZyIvPjwvYXR0cmlidXRlPjwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD48YXR0cmlidXRlIG5hbWU9IkVuY29kaW5nIj48ZGF0YSB0eXBlPSJhbnlVUkkiLz48L2F0dHJpYnV0ZT48L29wdGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+PGF0dHJpYnV0ZSBuYW1lPSd4c2k6c2NoZW1hTG9jYXRpb24nLz48L29wdGlvbmFsPgorICAgIDwvZGVmaW5lPiAKKworICAgIDxkZWZpbmUgbmFtZT0iRW5jcnlwdGlvbk1ldGhvZFR5cGUiPgorICAgICAgICA8emVyb09yTW9yZT4KKyAgICAgICAgICAgIDxjaG9pY2U+CisgICAgICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0iS2V5U2l6ZSI+CisgICAgICAgICAgICAgICAgICAgIDxkYXRhIHR5cGU9ImludGVnZXIiLz4KKyAgICAgICAgICAgICAgICA8L2VsZW1lbnQ+CisgICAgICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0iT0FFUHBhcmFtcyI+CisgICAgICAgICAgICAgICAgICAgIDxkYXRhIHR5cGU9ImJhc2U2NEJpbmFyeSIvPgorICAgICAgICAgICAgICAgIDwvZWxlbWVudD4KKyAgICAgICAgICAgICAgICA8dGV4dC8+CisgICAgICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0nRGlnZXN0TWV0aG9kJyBucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgICAgICAgICAgICAgICAgICAgIDxyZWYgbmFtZT0iRGlnZXN0TWV0aG9kVHlwZSIvPgorICAgICAgICAgICAgICAgIDwvZWxlbWVudD4KKyAgICAgICAgICAgIDwvY2hvaWNlPgorICAgICAgICA8L3plcm9Pck1vcmU+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iQWxnb3JpdGhtIj48ZGF0YSB0eXBlPSJhbnlVUkkiLz48L2F0dHJpYnV0ZT4KKyAgICA8L2RlZmluZT4KKworICAgICAgICAgICAgCisgICAgPGRlZmluZSBuYW1lPSJBZ3JlZW1lbnRNZXRob2RUeXBlIj4KKyAgICAgICAgPHplcm9Pck1vcmU+CisgICAgICAgICAgICA8Y2hvaWNlPgorICAgICAgICAgICAgICAgIDxlbGVtZW50IG5hbWU9IktBLU5vbmNlIj4KKyAgICAgICAgICAgICAgICAgICAgPGRhdGEgdHlwZT0iYmFzZTY0QmluYXJ5Ii8+CisgICAgICAgICAgICAgICAgPC9lbGVtZW50PgorICAgICAgICAgICAgICAgIDxlbGVtZW50IG5hbWU9J0RpZ2VzdE1ldGhvZCcgbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgICAgICAgICAgICAgICA8cmVmIG5hbWU9IkRpZ2VzdE1ldGhvZFR5cGUiLz4KKyAgICAgICAgICAgICAgICA8L2VsZW1lbnQ+CisgICAgICAgICAgICAgICAgPHRleHQvPgorICAgICAgICAgICAgICAgIDxlbGVtZW50PgorICAgICAgICAgICAgICAgICAgICA8bnNOYW1lIG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIi8+CisgICAgICAgICAgICAgICAgICAgIDxyZWYgbmFtZT0iYW55VGhpbmciLz4KKyAgICAgICAgICAgICAgICA8L2VsZW1lbnQ+CisgICAgICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0iT3JpZ2luYXRvcktleUluZm8iPjxyZWYgbmFtZT0iS2V5SW5mb1R5cGUiLz48L2VsZW1lbnQ+CisgICAgICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0iUmVjaXBpZW50S2V5SW5mbyI+PHJlZiBuYW1lPSJLZXlJbmZvVHlwZSIvPjwvZWxlbWVudD4KKyAgICAgICAgICAgIDwvY2hvaWNlPgorICAgICAgICA8L3plcm9Pck1vcmU+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iQWxnb3JpdGhtIj48ZGF0YSB0eXBlPSJhbnlVUkkiLz48L2F0dHJpYnV0ZT4KKyAgICA8L2RlZmluZT4gICAgICAgICAgICAKKyAgICAgICAgICAgIAorICAgICAgICAgICAgCisgICAgPGRlZmluZSBuYW1lPSJSZWZlcmVuY2VMaXN0VHlwZSI+CisgICAgICAgIDxvbmVPck1vcmU+CisgICAgICAgICAgICA8Y2hvaWNlPgorICAgICAgICAgICAgICAgIDxlbGVtZW50IG5hbWU9IkRhdGFSZWZlcmVuY2UiPgorICAgICAgICAgICAgICAgICAgICA8dGV4dC8+CisgICAgICAgICAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iVVJJIj48ZGF0YSB0eXBlPSJhbnlVUkkiLz48L2F0dHJpYnV0ZT4KKyAgICAgICAgICAgICAgICA8L2VsZW1lbnQ+CisgICAgICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0iS2V5UmVmZXJlbmNlIj4KKyAgICAgICAgICAgICAgICAgICAgPHRleHQvPgorICAgICAgICAgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9IlVSSSI+PGRhdGEgdHlwZT0iYW55VVJJIi8+PC9hdHRyaWJ1dGU+CisgICAgICAgICAgICAgICAgPC9lbGVtZW50PgorICAgICAgICAgICAgPC9jaG9pY2U+CisgICAgICAgIDwvb25lT3JNb3JlPgorICAgIDwvZGVmaW5lPgorICAgIAorICAgIAorICAgIDxkZWZpbmUgbmFtZT0iQ2lwaGVyRGF0YVR5cGUiPgorICAgICAgICA8Y2hvaWNlPgorICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0iQ2lwaGVyVmFsdWUiPjxkYXRhIHR5cGU9ImJhc2U2NEJpbmFyeSIvPjwvZWxlbWVudD4KKyAgICAgICAgICAgIDxlbGVtZW50IG5hbWU9IkNpcGhlclJlZmVyZW5jZSI+CisgICAgICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0iVHJhbnNmb3JtcyI+CisgICAgICAgICAgICAgICAgICA8b25lT3JNb3JlPgorICAgICAgICAgICAgICAgICAgICAgIDxlbGVtZW50IG5hbWU9J1RyYW5zZm9ybScgbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVmIG5hbWU9J1RyYW5zZm9ybVR5cGUnLz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvZWxlbWVudD4KKyAgICAgICAgICAgICAgICAgICAgPC9vbmVPck1vcmU+CisgICAgICAgICAgICAgICAgPC9lbGVtZW50PgorICAgICAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iVVJJIj4KKyAgICAgICAgICAgICAgICAgICAgPGRhdGEgdHlwZT0iYW55VVJJIi8+CisgICAgICAgICAgICAgICAgPC9hdHRyaWJ1dGU+ICAgICAgCisgICAgICAgICAgICA8L2VsZW1lbnQ+CisgICAgICAgIDwvY2hvaWNlPgorICAgIDwvZGVmaW5lPgorICAgIAorICAgIAorICAgIDxkZWZpbmUgbmFtZT0iRW5jcnlwdGlvblByb3BlcnRpZXNUeXBlIj4gICAgICAgIAorICAgICAgICA8ZWxlbWVudCBuYW1lPSJFbmNyeXB0aW9uUHJvcGVydHkiPgorICAgICAgICAgIDx6ZXJvT3JNb3JlPgorICAgICAgICAgICAgICAgIDxlbGVtZW50PgorICAgICAgICAgICAgICAgICAgICA8YW55TmFtZS8+CisgICAgICAgICAgICAgICAgICAgIDx0ZXh0Lz4KKyAgICAgICAgICAgICAgICA8L2VsZW1lbnQ+CisgICAgICAgICAgICA8L3plcm9Pck1vcmU+CisgICAgICAgICAgICA8b3B0aW9uYWw+CisgICAgICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJUYXJnZXQiPgorICAgICAgICAgICAgICAgICAgICA8ZGF0YSB0eXBlPSJhbnlVUkkiLz4KKyAgICAgICAgICAgICAgICA8L2F0dHJpYnV0ZT4gIAorICAgICAgICAgICAgPC9vcHRpb25hbD4KKyAgICAgICAgICAgIDxvcHRpb25hbD4gICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJJZCI+CisgICAgICAgICAgICAgICAgICAgIDxkYXRhIHR5cGU9IklEIi8+CisgICAgICAgICAgICAgICAgPC9hdHRyaWJ1dGU+ICAgIAorICAgICAgICAgICAgPC9vcHRpb25hbD4KKyAgICAgICAgPC9lbGVtZW50PgorICAgICAgICAKKyAgICAgICAgPG9wdGlvbmFsPgorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJJZCI+CisgICAgICAgICAgICAgICAgPGRhdGEgdHlwZT0iSUQiLz4KKyAgICAgICAgICAgIDwvYXR0cmlidXRlPiAgICAKKyAgICAgICAgPC9vcHRpb25hbD4KKyAgICAgICAgPHplcm9Pck1vcmU+CisgICAgICAgICAgICA8YXR0cmlidXRlPjxuc05hbWUgbnM9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIvPjwvYXR0cmlidXRlPgorICAgICAgICA8L3plcm9Pck1vcmU+CisgICAgPC9kZWZpbmU+CisKKzwvZ3JhbW1hcj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvcmVzb3VyY2Uvc2NoZW1hL3hlbmMtc2NoZW1hLnhzZCBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9yZXNvdXJjZS9zY2hlbWEveGVuYy1zY2hlbWEueHNkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1YWY2OGIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvcmVzb3VyY2Uvc2NoZW1hL3hlbmMtc2NoZW1hLnhzZApAQCAtMCwwICsxLDE0NiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhRE9DVFlQRSBzY2hlbWEgIFBVQkxJQyAiLS8vVzNDLy9EVEQgWE1MU2NoZW1hIDIwMDEwMi8vRU4iCisgImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLmR0ZCIKKyBbCisgICA8IUFUVExJU1Qgc2NoZW1hCisgICAgIHhtbG5zOnhlbmMgQ0RBVEEgI0ZJWEVEICdodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMnCisgICAgIHhtbG5zOmRzIENEQVRBICNGSVhFRCAnaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyc+CisgICA8IUVOVElUWSB4ZW5jICdodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMnPgorICAgPCFFTlRJVFkgJSBwICcnPgorICAgPCFFTlRJVFkgJSBzICcnPgorICBdPgorCis8c2NoZW1hIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYScgdmVyc2lvbj0nMS4wJworICAgICAgICB4bWxuczp4ZW5jPSdodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyMnCisgICAgICAgIHhtbG5zOmRzPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjJworICAgICAgICB0YXJnZXROYW1lc3BhY2U9J2h0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jIycKKyAgICAgICAgZWxlbWVudEZvcm1EZWZhdWx0PSdxdWFsaWZpZWQnPgorCisgIDxpbXBvcnQgbmFtZXNwYWNlPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjJworICAgICAgICAgIHNjaGVtYUxvY2F0aW9uPSdodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAyL1JFQy14bWxkc2lnLWNvcmUtMjAwMjAyMTIveG1sZHNpZy1jb3JlLXNjaGVtYS54c2QnLz4KKworICA8Y29tcGxleFR5cGUgbmFtZT0nRW5jcnlwdGVkVHlwZScgYWJzdHJhY3Q9J3RydWUnPgorICAgIDxzZXF1ZW5jZT4KKyAgICAgIDxlbGVtZW50IG5hbWU9J0VuY3J5cHRpb25NZXRob2QnIHR5cGU9J3hlbmM6RW5jcnlwdGlvbk1ldGhvZFR5cGUnCisgICAgICAgbWluT2NjdXJzPScwJy8+CisgICAgICA8ZWxlbWVudCByZWY9J2RzOktleUluZm8nIG1pbk9jY3Vycz0nMCcvPgorICAgICAgPGVsZW1lbnQgcmVmPSd4ZW5jOkNpcGhlckRhdGEnLz4KKyAgICAgIDxlbGVtZW50IHJlZj0neGVuYzpFbmNyeXB0aW9uUHJvcGVydGllcycgbWluT2NjdXJzPScwJy8+CisgICAgPC9zZXF1ZW5jZT4KKyAgICA8YXR0cmlidXRlIG5hbWU9J0lkJyB0eXBlPSdJRCcgdXNlPSdvcHRpb25hbCcvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0nVHlwZScgdHlwZT0nYW55VVJJJyB1c2U9J29wdGlvbmFsJy8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSdNaW1lVHlwZScgdHlwZT0nc3RyaW5nJyB1c2U9J29wdGlvbmFsJy8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSdFbmNvZGluZycgdHlwZT0nYW55VVJJJyB1c2U9J29wdGlvbmFsJy8+CisgIDwvY29tcGxleFR5cGU+CisgIAorICA8Y29tcGxleFR5cGUgbmFtZT0nRW5jcnlwdGlvbk1ldGhvZFR5cGUnIG1peGVkPSd0cnVlJz4KKyAgICA8c2VxdWVuY2U+CisgICAgICA8ZWxlbWVudCBuYW1lPSdLZXlTaXplJyBtaW5PY2N1cnM9JzAnIHR5cGU9J3hlbmM6S2V5U2l6ZVR5cGUnLz4KKyAgICAgIDxlbGVtZW50IG5hbWU9J09BRVBwYXJhbXMnIG1pbk9jY3Vycz0nMCcgdHlwZT0nYmFzZTY0QmluYXJ5Jy8+CisgICAgICA8YW55IG5hbWVzcGFjZT0nIyNvdGhlcicgbWluT2NjdXJzPScwJyBtYXhPY2N1cnM9J3VuYm91bmRlZCcvPgorICAgIDwvc2VxdWVuY2U+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSdBbGdvcml0aG0nIHR5cGU9J2FueVVSSScgdXNlPSdyZXF1aXJlZCcvPgorICA8L2NvbXBsZXhUeXBlPgorCisgICAgPHNpbXBsZVR5cGUgbmFtZT0nS2V5U2l6ZVR5cGUnPgorICAgICAgPHJlc3RyaWN0aW9uIGJhc2U9ImludGVnZXIiLz4KKyAgICA8L3NpbXBsZVR5cGU+CisKKyAgPGVsZW1lbnQgbmFtZT0nQ2lwaGVyRGF0YScgdHlwZT0neGVuYzpDaXBoZXJEYXRhVHlwZScvPgorICA8Y29tcGxleFR5cGUgbmFtZT0nQ2lwaGVyRGF0YVR5cGUnPgorICAgICA8Y2hvaWNlPgorICAgICAgIDxlbGVtZW50IG5hbWU9J0NpcGhlclZhbHVlJyB0eXBlPSdiYXNlNjRCaW5hcnknLz4KKyAgICAgICA8ZWxlbWVudCByZWY9J3hlbmM6Q2lwaGVyUmVmZXJlbmNlJy8+CisgICAgIDwvY2hvaWNlPgorICAgIDwvY29tcGxleFR5cGU+CisKKyAgIDxlbGVtZW50IG5hbWU9J0NpcGhlclJlZmVyZW5jZScgdHlwZT0neGVuYzpDaXBoZXJSZWZlcmVuY2VUeXBlJy8+CisgICA8Y29tcGxleFR5cGUgbmFtZT0nQ2lwaGVyUmVmZXJlbmNlVHlwZSc+CisgICAgICAgPGNob2ljZT4KKyAgICAgICAgIDxlbGVtZW50IG5hbWU9J1RyYW5zZm9ybXMnIHR5cGU9J3hlbmM6VHJhbnNmb3Jtc1R5cGUnIG1pbk9jY3Vycz0nMCcvPgorICAgICAgIDwvY2hvaWNlPgorICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0nVVJJJyB0eXBlPSdhbnlVUkknIHVzZT0ncmVxdWlyZWQnLz4KKyAgIDwvY29tcGxleFR5cGU+CisKKyAgICAgPGNvbXBsZXhUeXBlIG5hbWU9J1RyYW5zZm9ybXNUeXBlJz4KKyAgICAgICA8c2VxdWVuY2U+CisgICAgICAgICA8ZWxlbWVudCByZWY9J2RzOlRyYW5zZm9ybScgbWF4T2NjdXJzPSd1bmJvdW5kZWQnLz4KKyAgICAgICA8L3NlcXVlbmNlPgorICAgICA8L2NvbXBsZXhUeXBlPgorCisKKyAgPGVsZW1lbnQgbmFtZT0nRW5jcnlwdGVkRGF0YScgdHlwZT0neGVuYzpFbmNyeXB0ZWREYXRhVHlwZScvPgorICA8Y29tcGxleFR5cGUgbmFtZT0nRW5jcnlwdGVkRGF0YVR5cGUnPgorICAgIDxjb21wbGV4Q29udGVudD4KKyAgICAgIDxleHRlbnNpb24gYmFzZT0neGVuYzpFbmNyeXB0ZWRUeXBlJz4KKyAgICAgICA8L2V4dGVuc2lvbj4KKyAgICA8L2NvbXBsZXhDb250ZW50PgorICA8L2NvbXBsZXhUeXBlPgorCisgIDwhLS0gQ2hpbGRyZW4gb2YgZHM6S2V5SW5mbyAtLT4KKworICA8ZWxlbWVudCBuYW1lPSdFbmNyeXB0ZWRLZXknIHR5cGU9J3hlbmM6RW5jcnlwdGVkS2V5VHlwZScvPgorICA8Y29tcGxleFR5cGUgbmFtZT0nRW5jcnlwdGVkS2V5VHlwZSc+CisgICAgPGNvbXBsZXhDb250ZW50PgorICAgICAgPGV4dGVuc2lvbiBiYXNlPSd4ZW5jOkVuY3J5cHRlZFR5cGUnPgorICAgICAgICA8c2VxdWVuY2U+CisgICAgICAgICAgPGVsZW1lbnQgcmVmPSd4ZW5jOlJlZmVyZW5jZUxpc3QnIG1pbk9jY3Vycz0nMCcvPgorICAgICAgICAgIDxlbGVtZW50IG5hbWU9J0NhcnJpZWRLZXlOYW1lJyB0eXBlPSdzdHJpbmcnIG1pbk9jY3Vycz0nMCcvPgorICAgICAgICA8L3NlcXVlbmNlPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9J1JlY2lwaWVudCcgdHlwZT0nc3RyaW5nJworICAgICAgICAgdXNlPSdvcHRpb25hbCcvPgorICAgICAgPC9leHRlbnNpb24+CisgICAgPC9jb21wbGV4Q29udGVudD4KKyAgPC9jb21wbGV4VHlwZT4KKworICAgIDxlbGVtZW50IG5hbWU9IkFncmVlbWVudE1ldGhvZCIgdHlwZT0ieGVuYzpBZ3JlZW1lbnRNZXRob2RUeXBlIi8+CisgICAgPGNvbXBsZXhUeXBlIG5hbWU9IkFncmVlbWVudE1ldGhvZFR5cGUiIG1peGVkPSJ0cnVlIj4KKyAgICAgIDxzZXF1ZW5jZT4KKyAgICAgICAgPGVsZW1lbnQgbmFtZT0iS0EtTm9uY2UiIG1pbk9jY3Vycz0iMCIgdHlwZT0iYmFzZTY0QmluYXJ5Ii8+CisgICAgICAgIDwhLS0gPGVsZW1lbnQgcmVmPSJkczpEaWdlc3RNZXRob2QiIG1pbk9jY3Vycz0iMCIvPiAtLT4KKyAgICAgICAgPGFueSBuYW1lc3BhY2U9IiMjb3RoZXIiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KKyAgICAgICAgPGVsZW1lbnQgbmFtZT0iT3JpZ2luYXRvcktleUluZm8iIG1pbk9jY3Vycz0iMCIgdHlwZT0iZHM6S2V5SW5mb1R5cGUiLz4KKyAgICAgICAgPGVsZW1lbnQgbmFtZT0iUmVjaXBpZW50S2V5SW5mbyIgbWluT2NjdXJzPSIwIiB0eXBlPSJkczpLZXlJbmZvVHlwZSIvPgorICAgICAgPC9zZXF1ZW5jZT4KKyAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iQWxnb3JpdGhtIiB0eXBlPSJhbnlVUkkiIHVzZT0icmVxdWlyZWQiLz4KKyAgICA8L2NvbXBsZXhUeXBlPgorCisgIDwhLS0gRW5kIENoaWxkcmVuIG9mIGRzOktleUluZm8gLS0+CisKKyAgPGVsZW1lbnQgbmFtZT0nUmVmZXJlbmNlTGlzdCc+CisgICAgPGNvbXBsZXhUeXBlPgorICAgICAgPGNob2ljZSBtaW5PY2N1cnM9JzEnIG1heE9jY3Vycz0ndW5ib3VuZGVkJz4KKyAgICAgICAgPGVsZW1lbnQgbmFtZT0nRGF0YVJlZmVyZW5jZScgdHlwZT0neGVuYzpSZWZlcmVuY2VUeXBlJy8+CisgICAgICAgIDxlbGVtZW50IG5hbWU9J0tleVJlZmVyZW5jZScgdHlwZT0neGVuYzpSZWZlcmVuY2VUeXBlJy8+CisgICAgICA8L2Nob2ljZT4KKyAgICA8L2NvbXBsZXhUeXBlPgorICA8L2VsZW1lbnQ+CisKKyAgPGNvbXBsZXhUeXBlIG5hbWU9J1JlZmVyZW5jZVR5cGUnPgorICAgIDxzZXF1ZW5jZT4KKyAgICAgIDxhbnkgbmFtZXNwYWNlPScjI290aGVyJyBtaW5PY2N1cnM9JzAnIG1heE9jY3Vycz0ndW5ib3VuZGVkJy8+CisgICAgPC9zZXF1ZW5jZT4KKyAgICA8YXR0cmlidXRlIG5hbWU9J1VSSScgdHlwZT0nYW55VVJJJyB1c2U9J3JlcXVpcmVkJy8+CisgIDwvY29tcGxleFR5cGU+CisKKworICA8ZWxlbWVudCBuYW1lPSdFbmNyeXB0aW9uUHJvcGVydGllcycgdHlwZT0neGVuYzpFbmNyeXB0aW9uUHJvcGVydGllc1R5cGUnLz4KKyAgPGNvbXBsZXhUeXBlIG5hbWU9J0VuY3J5cHRpb25Qcm9wZXJ0aWVzVHlwZSc+CisgICAgPHNlcXVlbmNlPgorICAgICAgPGVsZW1lbnQgcmVmPSd4ZW5jOkVuY3J5cHRpb25Qcm9wZXJ0eScgbWF4T2NjdXJzPSd1bmJvdW5kZWQnLz4KKyAgICA8L3NlcXVlbmNlPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0nSWQnIHR5cGU9J0lEJyB1c2U9J29wdGlvbmFsJy8+CisgIDwvY29tcGxleFR5cGU+CisKKyAgICA8ZWxlbWVudCBuYW1lPSdFbmNyeXB0aW9uUHJvcGVydHknIHR5cGU9J3hlbmM6RW5jcnlwdGlvblByb3BlcnR5VHlwZScvPgorICAgIDxjb21wbGV4VHlwZSBuYW1lPSdFbmNyeXB0aW9uUHJvcGVydHlUeXBlJyBtaXhlZD0ndHJ1ZSc+CisgICAgICA8Y2hvaWNlIG1heE9jY3Vycz0ndW5ib3VuZGVkJz4KKyAgICAgICAgPGFueSBuYW1lc3BhY2U9JyMjb3RoZXInIHByb2Nlc3NDb250ZW50cz0nbGF4Jy8+CisgICAgICA8L2Nob2ljZT4KKyAgICAgIDxhdHRyaWJ1dGUgbmFtZT0nVGFyZ2V0JyB0eXBlPSdhbnlVUkknIHVzZT0nb3B0aW9uYWwnLz4KKyAgICAgIDxhdHRyaWJ1dGUgbmFtZT0nSWQnIHR5cGU9J0lEJyB1c2U9J29wdGlvbmFsJy8+CisgICAgICA8YW55QXR0cmlidXRlIG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIi8+CisgICAgPC9jb21wbGV4VHlwZT4KKworPC9zY2hlbWE+CisKZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9yZXNvdXJjZS9zY2hlbWEveG1sZHNpZy1jb3JlLXNjaGVtYS5kdGQgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvcmVzb3VyY2Uvc2NoZW1hL3htbGRzaWctY29yZS1zY2hlbWEuZHRkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2OWRiYjEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvcmVzb3VyY2Uvc2NoZW1hL3htbGRzaWctY29yZS1zY2hlbWEuZHRkCkBAIC0wLDAgKzEsMTcxIEBACis8IS0tIERURCBmb3IgWE1MIFNpZ25hdHVyZXMKKyAgICBodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjCisgICAgSm9zZXBoIFJlYWdsZSAkbGFzdCBjaGFuZ2VkIDIwMDAxMjE1JAorCisgICAgaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIworICAgICRSZXZpc2lvbjogMS4xICQgb24gJERhdGU6IDIwMDIvMDIvMDggMjA6MzI6MjYgJCBieSAkQXV0aG9yOiByZWFnbGUgJAorCisgICAgQ29weXJpZ2h0IDIwMDEgVGhlIEludGVybmV0IFNvY2lldHkgYW5kIFczQyAoTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUKKyAgICBvZiBUZWNobm9sb2d5LCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0IGVuCisgICAgQXV0b21hdGlxdWUsIEtlaW8gVW5pdmVyc2l0eSkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgICAgaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8KKworICAgIFRoaXMgZG9jdW1lbnQgaXMgZ292ZXJuZWQgYnkgdGhlIFczQyBTb2Z0d2FyZSBMaWNlbnNlIFsxXSBhcyBkZXNjcmliZWQKKyAgICBpbiB0aGUgRkFRIFsyXS4KKworICAgIFsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsL2NvcHlyaWdodC1zb2Z0d2FyZS0xOTk4MDcyMAorICAgIFsyXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsL0lQUi1GQVEtMjAwMDA2MjAuaHRtbCNEVEQKKy0tPgorCisKKzwhLS0KKworVGhlIGZvbGxvd2luZyBlbnRpdHkgZGVjbGFyYXRpb25zIGVuYWJsZSBleHRlcm5hbC9mbGV4aWJsZSBjb250ZW50IGluCit0aGUgU2lnbmF0dXJlIGNvbnRlbnQgbW9kZWwuCisKKyNQQ0RBVEEgZW11bGF0ZXMgc2NoZW1hIHN0cmluZzsgd2hlbiBjb21iaW5lZCB3aXRoIGVsZW1lbnQgdHlwZXMgaXQKK2VtdWxhdGVzIHNjaGVtYSdzIG1peGVkIGNvbnRlbnQgdHlwZS4KKworJWZvby5BTlkgcGVybWl0cyB0aGUgdXNlciB0byBpbmNsdWRlIHRoZWlyIG93biBlbGVtZW50IHR5cGVzIGZyb20KK290aGVyIG5hbWVzcGFjZXMsIGZvciBleGFtcGxlOgorIDwhRU5USVRZICUgS2V5VmFsdWUuQU5ZICd8IGVjZHM6RUNEU0FLZXlWYWx1ZSc+CisgLi4uCisgPCFFTEVNRU5UIGVjZHM6RUNEU0FLZXlWYWx1ZSAoI1BDREFUQSkgID4KKworLS0+CisKKzwhRU5USVRZICUgT2JqZWN0LkFOWSAnJz4KKzwhRU5USVRZICUgTWV0aG9kLkFOWSAnJz4KKzwhRU5USVRZICUgVHJhbnNmb3JtLkFOWSAnJz4KKzwhRU5USVRZICUgU2lnbmF0dXJlUHJvcGVydHkuQU5ZICcnPgorPCFFTlRJVFkgJSBLZXlJbmZvLkFOWSAnJz4KKzwhRU5USVRZICUgS2V5VmFsdWUuQU5ZICcnPgorPCFFTlRJVFkgJSBQR1BEYXRhLkFOWSAnJz4KKzwhRU5USVRZICUgWDUwOURhdGEuQU5ZICcnPgorPCFFTlRJVFkgJSBTUEtJRGF0YS5BTlkgJyc+CisKKworCis8IS0tIFN0YXJ0IENvcmUgU2lnbmF0dXJlIGRlY2xhcmF0aW9ucywgdGhlc2Ugc2hvdWxkIE5PVCBiZSBhbHRlcmVkIC0tPgorCis8IUVMRU1FTlQgU2lnbmF0dXJlIChTaWduZWRJbmZvLCBTaWduYXR1cmVWYWx1ZSwgS2V5SW5mbz8sIE9iamVjdCopICA+Cis8IUFUVExJU1QgU2lnbmF0dXJlICAKKwl4bWxucwlDREFUQQkjRklYRUQgJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMnCisJSWQgIAlJRAkjSU1QTElFRCA+CisKKzwhRUxFTUVOVCBTaWduYXR1cmVWYWx1ZSAoI1BDREFUQSkgPgorPCFBVFRMSVNUIFNpZ25hdHVyZVZhbHVlICAKKyAgICAgICAgIElkICBJRCAgICAgICNJTVBMSUVEPgorCis8IUVMRU1FTlQgU2lnbmVkSW5mbyAoQ2Fub25pY2FsaXphdGlvbk1ldGhvZCwgCisJU2lnbmF0dXJlTWV0aG9kLCAgUmVmZXJlbmNlKykgID4KKzwhQVRUTElTVCBTaWduZWRJbmZvICAKKwlJZAkgSUQgCSAjSU1QTElFRCAKKz4KKworPCFFTEVNRU5UIENhbm9uaWNhbGl6YXRpb25NZXRob2QgKCNQQ0RBVEEgJU1ldGhvZC5BTlk7KSogPiAKKzwhQVRUTElTVCBDYW5vbmljYWxpemF0aW9uTWV0aG9kIAorCUFsZ29yaXRobSBDREFUQSAjUkVRVUlSRUQgPiAKKworPCFFTEVNRU5UIFNpZ25hdHVyZU1ldGhvZCAoI1BDREFUQXxITUFDT3V0cHV0TGVuZ3RoICVNZXRob2QuQU5ZOykqID4KKzwhQVRUTElTVCBTaWduYXR1cmVNZXRob2QgCisJQWxnb3JpdGhtIENEQVRBICNSRVFVSVJFRCA+IAorCis8IUVMRU1FTlQgUmVmZXJlbmNlIChUcmFuc2Zvcm1zPywgRGlnZXN0TWV0aG9kLCBEaWdlc3RWYWx1ZSkgID4KKzwhQVRUTElTVCBSZWZlcmVuY2UKKwlJZAlJRAkjSU1QTElFRAorCVVSSQlDREFUQQkjSU1QTElFRAorCVR5cGUJQ0RBVEEJI0lNUExJRUQ+CisKKworPCFFTEVNRU5UIFRyYW5zZm9ybXMgKFRyYW5zZm9ybSspPgorCis8IUVMRU1FTlQgVHJhbnNmb3JtICgjUENEQVRBfFhQYXRoICVUcmFuc2Zvcm0uQU5ZOykqID4KKzwhQVRUTElTVCBUcmFuc2Zvcm0gCisJQWxnb3JpdGhtICAgIENEQVRBICAgICNSRVFVSVJFRCA+CisKKzwhRUxFTUVOVCBYUGF0aCAoI1BDREFUQSkgPgorCis8IUVMRU1FTlQgRGlnZXN0TWV0aG9kICgjUENEQVRBICVNZXRob2QuQU5ZOykqID4KKzwhQVRUTElTVCBEaWdlc3RNZXRob2QgIAorCUFsZ29yaXRobQkJQ0RBVEEJI1JFUVVJUkVEID4KKworPCFFTEVNRU5UIERpZ2VzdFZhbHVlICAoI1BDREFUQSkgID4KKworPCFFTEVNRU5UIEtleUluZm8JKCNQQ0RBVEF8S2V5TmFtZXxLZXlWYWx1ZXxSZXRyaWV2YWxNZXRob2R8CisgICAgICAgICAgIFg1MDlEYXRhfFBHUERhdGF8U1BLSURhdGF8TWdtdERhdGEgJUtleUluZm8uQU5ZOykqID4KKzwhQVRUTElTVCBLZXlJbmZvCisJSWQJSUQJICNJTVBMSUVEID4KKworPCEtLSBLZXkgSW5mb3JtYXRpb24gLS0+CisKKzwhRUxFTUVOVCBLZXlOYW1lICgjUENEQVRBKSA+Cis8IUVMRU1FTlQgS2V5VmFsdWUgKCNQQ0RBVEF8RFNBS2V5VmFsdWV8UlNBS2V5VmFsdWUgJUtleVZhbHVlLkFOWTspKiA+Cis8IUVMRU1FTlQgTWdtdERhdGEgKCNQQ0RBVEEpID4KKworPCFFTEVNRU5UIFJldHJpZXZhbE1ldGhvZCAoVHJhbnNmb3Jtcz8pID4KKzwhQVRUTElTVCBSZXRyaWV2YWxNZXRob2QKKyAgVVJJCUNEQVRBICNSRVFVSVJFRCAKKyAgVHlwZQlDREFUQSAjSU1QTElFRCA+IAorCis8IS0tIFguNTA5IERhdGEgLS0+CisKKzwhRUxFTUVOVCBYNTA5RGF0YSAoKFg1MDlJc3N1ZXJTZXJpYWwgfCBYNTA5U0tJIHwgWDUwOVN1YmplY3ROYW1lIHwKKyAgICAgICAgICAgICAgICAgICAgWDUwOUNlcnRpZmljYXRlIHwgWDUwOUNSTCApKyAlWDUwOURhdGEuQU5ZOyk+Cis8IUVMRU1FTlQgWDUwOUlzc3VlclNlcmlhbCAoWDUwOUlzc3Vlck5hbWUsIFg1MDlTZXJpYWxOdW1iZXIpID4KKzwhRUxFTUVOVCBYNTA5SXNzdWVyTmFtZSAoI1BDREFUQSkgPgorPCFFTEVNRU5UIFg1MDlTdWJqZWN0TmFtZSAoI1BDREFUQSkgPgorPCFFTEVNRU5UIFg1MDlTZXJpYWxOdW1iZXIgKCNQQ0RBVEEpID4KKzwhRUxFTUVOVCBYNTA5U0tJICgjUENEQVRBKSA+Cis8IUVMRU1FTlQgWDUwOUNlcnRpZmljYXRlICgjUENEQVRBKSA+Cis8IUVMRU1FTlQgWDUwOUNSTCAoI1BDREFUQSkgPgorCis8IS0tIFBHUERhdGEgLS0+CisKKzwhRUxFTUVOVCBQR1BEYXRhICgoUEdQS2V5SUQsIFBHUEtleVBhY2tldD8pIHwgKFBHUEtleVBhY2tldCkgJVBHUERhdGEuQU5ZOykgPgorPCFFTEVNRU5UIFBHUEtleVBhY2tldCAgKCNQQ0RBVEEpICA+Cis8IUVMRU1FTlQgUEdQS2V5SUQgICgjUENEQVRBKSAgPgorCis8IS0tIFNQS0kgRGF0YSAtLT4KKworPCFFTEVNRU5UIFNQS0lEYXRhIChTUEtJU2V4cCAlU1BLSURhdGEuQU5ZOykgID4KKzwhRUxFTUVOVCBTUEtJU2V4cCAgKCNQQ0RBVEEpICA+CisKKzwhLS0gRXh0ZW5zaWJsZSBDb250ZW50IC0tPgorCis8IUVMRU1FTlQgT2JqZWN0ICgjUENEQVRBfFNpZ25hdHVyZXxTaWduYXR1cmVQcm9wZXJ0aWVzfE1hbmlmZXN0ICVPYmplY3QuQU5ZOykqID4KKzwhQVRUTElTVCBPYmplY3QgIAorCUlkCUlECSNJTVBMSUVECisJTWltZVR5cGUJQ0RBVEEJI0lNUExJRUQKKwlFbmNvZGluZwlDREFUQQkjSU1QTElFRCA+CisKKzwhRUxFTUVOVCBNYW5pZmVzdCAoUmVmZXJlbmNlKykgID4KKzwhQVRUTElTVCBNYW5pZmVzdCAgCisJSWQJSUQJI0lNUExJRUQgPgorCis8IUVMRU1FTlQgU2lnbmF0dXJlUHJvcGVydGllcyAoU2lnbmF0dXJlUHJvcGVydHkrKSAgPgorPCFBVFRMSVNUIFNpZ25hdHVyZVByb3BlcnRpZXMgIAorCUlkCUlECSAjSU1QTElFRCAgPgorCis8IUVMRU1FTlQgU2lnbmF0dXJlUHJvcGVydHkgKCNQQ0RBVEEgJVNpZ25hdHVyZVByb3BlcnR5LkFOWTspKiA+Cis8IUFUVExJU1QgU2lnbmF0dXJlUHJvcGVydHkgIAorCVRhcmdldCAJQ0RBVEEJICNSRVFVSVJFRAorCUlkCUlECSAjSU1QTElFRCAgPgorCis8IS0tIEFsZ29yaXRobSBQYXJhbWV0ZXJzIC0tPgorCis8IUVMRU1FTlQgSE1BQ091dHB1dExlbmd0aCAoI1BDREFUQSkgPgorCis8IUVMRU1FTlQgRFNBS2V5VmFsdWUgKChQLCBRKT8sIEc/LCBZLCBKPywgKFNlZWQsIFBnZW5Db3VudGVyKT8pID4KKzwhRUxFTUVOVCBQICgjUENEQVRBKSA+Cis8IUVMRU1FTlQgUSAoI1BDREFUQSkgPgorPCFFTEVNRU5UIEcgKCNQQ0RBVEEpID4KKzwhRUxFTUVOVCBZICgjUENEQVRBKSA+Cis8IUVMRU1FTlQgSiAoI1BDREFUQSkgPgorPCFFTEVNRU5UIFNlZWQgKCNQQ0RBVEEpID4KKzwhRUxFTUVOVCBQZ2VuQ291bnRlciAoI1BDREFUQSkgPgorCis8IUVMRU1FTlQgUlNBS2V5VmFsdWUgKE1vZHVsdXMsIEV4cG9uZW50KSA+IAorPCFFTEVNRU5UIE1vZHVsdXMgKCNQQ0RBVEEpID4KKzwhRUxFTUVOVCBFeHBvbmVudCAoI1BDREFUQSkgPgorCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvcmVzb3VyY2Uvc2NoZW1hL3htbGRzaWctY29yZS1zY2hlbWEucm5nIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Jlc291cmNlL3NjaGVtYS94bWxkc2lnLWNvcmUtc2NoZW1hLnJuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzMzMGZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Jlc291cmNlL3NjaGVtYS94bWxkc2lnLWNvcmUtc2NoZW1hLnJuZwpAQCAtMCwwICsxLDMzOSBAQAorPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4KKzwhLS0gaHR0cDovL3d3dy54bWwuY29tL2xwdC9hLzIwMDIvMDEvMjMvcmVsYXhuZy5odG1sIC0tPgorPCEtLSBodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2NvbW1pdHRlZXMvcmVsYXgtbmcvdHV0b3JpYWwtMjAwMTEyMDMuaHRtbCAtLT4KKzwhLS0gaHR0cDovL3d3dy56dm9uLm9yZy94eGwvWE1MU2NoZW1hVHV0b3JpYWwvT3V0cHV0L3Nlcl93aWxkY2FyZHNfc3Q4Lmh0bWwgLS0+Cis8IS0tIGh0dHA6Ly9saXN0cy5vYXNpcy1vcGVuLm9yZy9hcmNoaXZlcy9yZWxheC1uZy1jb21tZW50LzIwMDIwNi9tYWlsbGlzdC5odG1sIC0tPgorCis8Z3JhbW1hciB4bWxucz0naHR0cDovL3JlbGF4bmcub3JnL25zL3N0cnVjdHVyZS8xLjAnCisgICAgICAgIHhtbG5zOmRzPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjJworICAgICAgICB4bWxuczp4c2k9J2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlJworICAgICAgICBucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIycKKyAgICAgICAgZGF0YXR5cGVMaWJyYXJ5PSdodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1kYXRhdHlwZXMnPgorCisgICAgPHN0YXJ0PgorICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0nU2lnbmF0dXJlJz48cmVmIG5hbWU9J1NpZ25hdHVyZVR5cGUnLz48L2VsZW1lbnQ+CisgICAgPC9zdGFydD4gICAKKyAgICAKKyAgICA8ZGVmaW5lIG5hbWU9J0NyeXB0b0JpbmFyeSc+CisgICAgICAgIDxkYXRhIHR5cGU9J2Jhc2U2NEJpbmFyeScvPgorICAgIDwvZGVmaW5lPgorICAgIAorICAgIDxkZWZpbmUgbmFtZT0nU2lnbmF0dXJlVHlwZSc+CisgICAgICAgIDxlbGVtZW50IG5hbWU9J1NpZ25lZEluZm8nPjxyZWYgbmFtZT0nU2lnbmVkSW5mb1R5cGUnLz48L2VsZW1lbnQ+CisgICAgICAgIDxlbGVtZW50IG5hbWU9J1NpZ25hdHVyZVZhbHVlJz48cmVmIG5hbWU9J1NpZ25hdHVyZVZhbHVlVHlwZScvPjwvZWxlbWVudD4KKyAgICAgICAgPG9wdGlvbmFsPjxlbGVtZW50IG5hbWU9J0tleUluZm8nPjxyZWYgbmFtZT0nS2V5SW5mb1R5cGUnLz48L2VsZW1lbnQ+PC9vcHRpb25hbD4KKyAgICAgICAgPHplcm9Pck1vcmU+PGVsZW1lbnQgbmFtZT0nT2JqZWN0Jz48cmVmIG5hbWU9J09iamVjdFR5cGUnLz48L2VsZW1lbnQ+PC96ZXJvT3JNb3JlPgorICAgICAgICA8b3B0aW9uYWw+PGF0dHJpYnV0ZSBuYW1lPSdJZCc+PGRhdGEgdHlwZT0nSUQnLz48L2F0dHJpYnV0ZT48L29wdGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+PGF0dHJpYnV0ZSBuYW1lPSd4c2k6c2NoZW1hTG9jYXRpb24nLz48L29wdGlvbmFsPgorICAgIDwvZGVmaW5lPgorCisgICAgPGRlZmluZSBuYW1lPSdTaWduYXR1cmVWYWx1ZVR5cGUnPgorICAgICAgICA8ZGF0YSB0eXBlPSdiYXNlNjRCaW5hcnknLz4KKyAgICAgICAgPG9wdGlvbmFsPjxhdHRyaWJ1dGUgbmFtZT0nSWQnPjxkYXRhIHR5cGU9J0lEJy8+PC9hdHRyaWJ1dGU+PC9vcHRpb25hbD4KKyAgICA8L2RlZmluZT4KKyAgICAKKzwhLS0gU3RhcnQgU2lnbmVkSW5mbyAtLT4KKyAgICAKKyAgICA8ZGVmaW5lIG5hbWU9J1NpZ25lZEluZm9UeXBlJz4KKyAgICAgICAgPGVsZW1lbnQgbmFtZT0nQ2Fub25pY2FsaXphdGlvbk1ldGhvZCc+PHJlZiBuYW1lPSdDYW5vbmljYWxpemF0aW9uTWV0aG9kVHlwZScvPjwvZWxlbWVudD4KKyAgICAgICAgPGVsZW1lbnQgbmFtZT0nU2lnbmF0dXJlTWV0aG9kJz48cmVmIG5hbWU9J1NpZ25hdHVyZU1ldGhvZFR5cGUnLz48L2VsZW1lbnQ+CisgICAgICAgIDxvcHRpb25hbD48ZWxlbWVudCBuYW1lPSdLZXlJbmZvJz48cmVmIG5hbWU9J0tleUluZm9UeXBlJy8+PC9lbGVtZW50Pjwvb3B0aW9uYWw+CisgICAgICAgIDxvbmVPck1vcmU+PGVsZW1lbnQgbmFtZT0nUmVmZXJlbmNlJz48cmVmIG5hbWU9J1JlZmVyZW5jZVR5cGUnLz48L2VsZW1lbnQ+PC9vbmVPck1vcmU+CisgICAgICAgIDxvcHRpb25hbD48YXR0cmlidXRlIG5hbWU9J0lkJz48ZGF0YSB0eXBlPSdJRCcvPjwvYXR0cmlidXRlPjwvb3B0aW9uYWw+CisgICAgPC9kZWZpbmU+ICAgIAorCisgICAgPGRlZmluZSBuYW1lPSdDYW5vbmljYWxpemF0aW9uTWV0aG9kVHlwZSc+CisgICAgICAgIDx6ZXJvT3JNb3JlPjxyZWYgbmFtZT0nYW55VGhpbmcnLz48L3plcm9Pck1vcmU+CisgICAgICAgIDxvcHRpb25hbD48YXR0cmlidXRlIG5hbWU9J0FsZ29yaXRobSc+PGRhdGEgdHlwZT0nYW55VVJJJy8+PC9hdHRyaWJ1dGU+PC9vcHRpb25hbD4KKyAgICA8L2RlZmluZT4gICAgCisKKworICAgIDxkZWZpbmUgbmFtZT0nU2lnbmF0dXJlTWV0aG9kVHlwZSc+CisgICAgICAgIDxvcHRpb25hbD48ZWxlbWVudCBuYW1lPSdITUFDT3V0cHV0TGVuZ3RoJz48ZGF0YSB0eXBlPSdpbnRlZ2VyJy8+PC9lbGVtZW50Pjwvb3B0aW9uYWw+CisgICAgICAgIDx6ZXJvT3JNb3JlPjxyZWYgbmFtZT0nYW55VGhpbmcnLz48L3plcm9Pck1vcmU+CisgICAgICAgIDxvcHRpb25hbD48YXR0cmlidXRlIG5hbWU9J0FsZ29yaXRobSc+PGRhdGEgdHlwZT0nYW55VVJJJy8+PC9hdHRyaWJ1dGU+PC9vcHRpb25hbD4KKyAgICA8L2RlZmluZT4gICAgCisgICAgICAgIAorPCEtLSBTdGFydCBSZWZlcmVuY2UgLS0+CisgICAgCisgICAgPGRlZmluZSBuYW1lPSdSZWZlcmVuY2VUeXBlJz4KKyAgICAgICAgPG9wdGlvbmFsPjxlbGVtZW50IG5hbWU9J1RyYW5zZm9ybXMnPjxyZWYgbmFtZT0nVHJhbnNmb3Jtc1R5cGUnLz48L2VsZW1lbnQ+PC9vcHRpb25hbD4KKyAgICAgICAgPGVsZW1lbnQgbmFtZT0nRGlnZXN0TWV0aG9kJz48cmVmIG5hbWU9J0RpZ2VzdE1ldGhvZFR5cGUnLz48L2VsZW1lbnQ+CisgICAgICAgIDxlbGVtZW50IG5hbWU9J0RpZ2VzdFZhbHVlJz48cmVmIG5hbWU9J0RpZ2VzdFZhbHVlVHlwZScvPjwvZWxlbWVudD4KKyAgICAgICAgPG9wdGlvbmFsPjxhdHRyaWJ1dGUgbmFtZT0nVHlwZSc+PGRhdGEgdHlwZT0nYW55VVJJJy8+PC9hdHRyaWJ1dGU+PC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlvbmFsPjxhdHRyaWJ1dGUgbmFtZT0nVVJJJz48ZGF0YSB0eXBlPSdhbnlVUkknLz48L2F0dHJpYnV0ZT48L29wdGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+PGF0dHJpYnV0ZSBuYW1lPSdJZCc+PGRhdGEgdHlwZT0nSUQnLz48L2F0dHJpYnV0ZT48L29wdGlvbmFsPgorICAgICA8L2RlZmluZT4KKworICAgIDxkZWZpbmUgbmFtZT0nVHJhbnNmb3Jtc1R5cGUnPgorICAgICAgICA8b25lT3JNb3JlPjxlbGVtZW50IG5hbWU9J1RyYW5zZm9ybSc+PHJlZiBuYW1lPSdUcmFuc2Zvcm1UeXBlJy8+PC9lbGVtZW50Pjwvb25lT3JNb3JlPgorICAgIDwvZGVmaW5lPgorCisgICAgPGRlZmluZSBuYW1lPSdUcmFuc2Zvcm1UeXBlJz4KKyAgICAgICAgPG9wdGlvbmFsPjxlbGVtZW50IG5hbWU9J1hQYXRoJz48ZGF0YSB0eXBlPSdzdHJpbmcnLz48L2VsZW1lbnQ+PC9vcHRpb25hbD4KKyAgICAgICAgPHplcm9Pck1vcmU+PHJlZiBuYW1lPSdhbnlUaGluZycvPjwvemVyb09yTW9yZT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSdBbGdvcml0aG0nPjxkYXRhIHR5cGU9J2FueVVSSScvPjwvYXR0cmlidXRlPgorICAgIDwvZGVmaW5lPiAgICAKKworPCEtLSBFbmQgUmVmZXJlbmNlIC0tPgorCisgICAgPGRlZmluZSBuYW1lPSdEaWdlc3RNZXRob2RUeXBlJz4KKyAgICAgICAgPHplcm9Pck1vcmU+PHJlZiBuYW1lPSdhbnlUaGluZycvPjwvemVyb09yTW9yZT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSdBbGdvcml0aG0nPjxkYXRhIHR5cGU9J2FueVVSSScvPjwvYXR0cmlidXRlPgorICAgIDwvZGVmaW5lPiAgIAorCisgICAgPGRlZmluZSBuYW1lPSdEaWdlc3RWYWx1ZVR5cGUnPgorICAgICAgICA8ZGF0YSB0eXBlPSdiYXNlNjRCaW5hcnknLz4KKyAgICA8L2RlZmluZT4gIAorICAgIAorPCEtLSBFbmQgU2lnbmVkSW5mbyAtLT4KKworPCEtLSBTdGFydCBLZXlJbmZvIC0tPgorICAgIAorICAgIDxkZWZpbmUgbmFtZT0nS2V5SW5mb1R5cGUnPgorICAgICAgICA8b25lT3JNb3JlPgorICAgICAgICAgICAgPGNob2ljZT4KKyAgICAgICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSdLZXlOYW1lJz48ZGF0YSB0eXBlPSdzdHJpbmcnLz48L2VsZW1lbnQ+CisgICAgICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0nS2V5VmFsdWUnPjxyZWYgbmFtZT0nS2V5VmFsdWVUeXBlJy8+PC9lbGVtZW50PgorICAgICAgICAgICAgICAgIDxlbGVtZW50IG5hbWU9J1JldHJpZXZhbE1ldGhvZCc+PHJlZiBuYW1lPSdSZXRyaWV2YWxNZXRob2RUeXBlJy8+PC9lbGVtZW50PgorICAgICAgICAgICAgICAgIDxlbGVtZW50IG5hbWU9J1g1MDlEYXRhJz48cmVmIG5hbWU9J1g1MDlEYXRhVHlwZScvPjwvZWxlbWVudD4KKyAgICAgICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSdQR1BEYXRhJz48cmVmIG5hbWU9J1BHUERhdGFUeXBlJy8+PC9lbGVtZW50PgorICAgICAgICAgICAgICAgIDxlbGVtZW50IG5hbWU9J1NQS0lEYXRhJz48cmVmIG5hbWU9J1NQS0lEYXRhVHlwZScvPjwvZWxlbWVudD4KKyAgICAgICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSdNZ210RGF0YSc+PGRhdGEgdHlwZT0nc3RyaW5nJy8+PC9lbGVtZW50PgorICAgICAgICAgICAgICAgIDxyZWYgbmFtZT0nYW55VGhpbmcnLz4KKyAgICAgICAgICAgIDwvY2hvaWNlPgorICAgICAgICA8L29uZU9yTW9yZT4KKyAgICAgICAgPG9wdGlvbmFsPjxhdHRyaWJ1dGUgbmFtZT0nSWQnPjxkYXRhIHR5cGU9J0lEJy8+PC9hdHRyaWJ1dGU+PC9vcHRpb25hbD4KKzwvZGVmaW5lPgorCisgICAgPGRlZmluZSBuYW1lPSdLZXlWYWx1ZVR5cGUnPgorICAgICAgICAgICAgPGNob2ljZT4KKyAgICAgICAgICAgICAgICA8dGV4dC8+CisgICAgICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0nRFNBS2V5VmFsdWUnPjxyZWYgbmFtZT0nRFNBS2V5VmFsdWVUeXBlJy8+PC9lbGVtZW50PgorICAgICAgICAgICAgICAgIDxlbGVtZW50IG5hbWU9J1JTQUtleVZhbHVlJz48cmVmIG5hbWU9J1JTQUtleVZhbHVlVHlwZScvPjwvZWxlbWVudD4KKyAgICAgICAgICAgICAgICA8cmVmIG5hbWU9J2FueVRoaW5nJy8+CisgICAgICAgICAgICA8L2Nob2ljZT4KKyAgICA8L2RlZmluZT4KKworICAgIDxkZWZpbmUgbmFtZT0nUmV0cmlldmFsTWV0aG9kVHlwZSc+CisgICAgICAgIDxvcHRpb25hbD48ZWxlbWVudCBuYW1lPSdUcmFuc2Zvcm1zJz48cmVmIG5hbWU9J1RyYW5zZm9ybXNUeXBlJy8+PC9lbGVtZW50Pjwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD48YXR0cmlidXRlIG5hbWU9J1R5cGUnPjxkYXRhIHR5cGU9J2FueVVSSScvPjwvYXR0cmlidXRlPjwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD48YXR0cmlidXRlIG5hbWU9J1VSSSc+PGRhdGEgdHlwZT0nYW55VVJJJy8+PC9hdHRyaWJ1dGU+PC9vcHRpb25hbD4KKyAgICA8L2RlZmluZT4KKworPCEtLSBTdGFydCBYNTA5RGF0YSAtLT4KKworICAgIDxkZWZpbmUgbmFtZT0nWDUwOURhdGFUeXBlJz4KKyAgICAgICAgPG9uZU9yTW9yZT4KKyAgICAgICAgICAgIDxjaG9pY2U+CisgICAgICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0nWDUwOUlzc3VlclNlcmlhbCc+CisgICAgICAgICAgICAgICAgICAgIDxlbGVtZW50IG5hbWU9J1g1MDlJc3N1ZXJOYW1lJz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxkYXRhIHR5cGU9J3N0cmluZycvPgorICAgICAgICAgICAgICAgICAgICA8L2VsZW1lbnQ+CisgICAgICAgICAgICAgICAgICAgIDxlbGVtZW50IG5hbWU9J1g1MDlTZXJpYWxOdW1iZXInPgorICAgICAgICAgICAgICAgICAgICAgICAgPGRhdGEgdHlwZT0naW50ZWdlcicvPgorICAgICAgICAgICAgICAgICAgICA8L2VsZW1lbnQ+CisgICAgICAgICAgICAgICAgPC9lbGVtZW50PgorICAgICAgICAgICAgICAgIDxlbGVtZW50IG5hbWU9J1g1MDlTS0knPgorICAgICAgICAgICAgICAgICAgICA8ZGF0YSB0eXBlPSdiYXNlNjRCaW5hcnknLz4KKyAgICAgICAgICAgICAgICA8L2VsZW1lbnQ+CisgICAgICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0nWDUwOVN1YmplY3ROYW1lJz4KKyAgICAgICAgICAgICAgICAgICAgPGRhdGEgdHlwZT0nc3RyaW5nJy8+CisgICAgICAgICAgICAgICAgPC9lbGVtZW50PgorICAgICAgICAgICAgICAgIDxlbGVtZW50IG5hbWU9J1g1MDlDZXJ0aWZpY2F0ZSc+CisgICAgICAgICAgICAgICAgICAgIDxkYXRhIHR5cGU9J2Jhc2U2NEJpbmFyeScvPgorICAgICAgICAgICAgICAgIDwvZWxlbWVudD4KKyAgICAgICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSdYNTA5Q1JMJz4KKyAgICAgICAgICAgICAgICAgICAgPGRhdGEgdHlwZT0nYmFzZTY0QmluYXJ5Jy8+CisgICAgICAgICAgICAgICAgPC9lbGVtZW50PgorICAgICAgICAgICAgICAgIDxyZWYgbmFtZT0nYW55VGhpbmcnLz4KKyAgICAgICAgICAgIDwvY2hvaWNlPgorICAgICAgICA8L29uZU9yTW9yZT4KKyAgICA8L2RlZmluZT4KKworPCEtLSBFbmQgWDUwOURhdGEgLS0+CisKKzwhLS0gQmVnaW4gUEdQRGF0YSAtLT4KKworICAgIDxkZWZpbmUgbmFtZT0nUEdQRGF0YVR5cGUnPgorICAgICAgICA8Y2hvaWNlPgorICAgICAgICAgICAgPGdyb3VwPgorICAgICAgICAgICAgICAgIDxlbGVtZW50IG5hbWU9J1BHUEtleUlEJz4KKyAgICAgICAgICAgICAgICAgICAgPGRhdGEgdHlwZT0nYmFzZTY0QmluYXJ5Jy8+CisgICAgICAgICAgICAgICAgPC9lbGVtZW50PgorICAgICAgICAgICAgICAgIDxvcHRpb25hbD4KKyAgICAgICAgICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0nUEdQS2V5UGFja2V0Jz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxkYXRhIHR5cGU9J2Jhc2U2NEJpbmFyeScvPgorICAgICAgICAgICAgICAgICAgICA8L2VsZW1lbnQ+CisgICAgICAgICAgICAgICAgPC9vcHRpb25hbD4KKyAgICAgICAgICAgICAgICA8emVyb09yTW9yZT4KKyAgICAgICAgICAgICAgICAgICAgPHJlZiBuYW1lPSdhbnlUaGluZycvPgorICAgICAgICAgICAgICAgIDwvemVyb09yTW9yZT4KKyAgICAgICAgICAgIDwvZ3JvdXA+CisgICAgICAgICAgICA8Z3JvdXA+CisgICAgICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0nUEdQS2V5UGFja2V0Jz4KKyAgICAgICAgICAgICAgICAgICAgPGRhdGEgdHlwZT0nYmFzZTY0QmluYXJ5Jy8+CisgICAgICAgICAgICAgICAgPC9lbGVtZW50PgorICAgICAgICAgICAgICAgIDx6ZXJvT3JNb3JlPgorICAgICAgICAgICAgICAgICAgICA8cmVmIG5hbWU9J2FueVRoaW5nJy8+CisgICAgICAgICAgICAgICAgPC96ZXJvT3JNb3JlPgorICAgICAgICAgICAgPC9ncm91cD4KKyAgICAgICAgPC9jaG9pY2U+CisgICAgPC9kZWZpbmU+CisKKzwhLS0gRW5kIFBHUERhdGEgLS0+CisKKzwhLS0gQmVnaW4gU1BLSURhdGEgLS0+CisKKyAgICA8ZGVmaW5lIG5hbWU9J1NQS0lEYXRhVHlwZSc+CisgICAgICAgIDxvbmVPck1vcmU+CisgICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSdTUEtJU2V4cCc+CisgICAgICAgICAgICAgICAgPGRhdGEgdHlwZT0nYmFzZTY0QmluYXJ5Jy8+CisgICAgICAgICAgICA8L2VsZW1lbnQ+CisgICAgICAgICAgICA8b3B0aW9uYWw+CisgICAgICAgICAgICAgICAgPHJlZiBuYW1lPSdhbnlUaGluZycvPgorICAgICAgICAgICAgPC9vcHRpb25hbD4KKyAgICAgICAgPC9vbmVPck1vcmU+CisgICAgPC9kZWZpbmU+CisgICAgCis8IS0tIEVuZCBTUEtJRGF0YSAtLT4KKworPCEtLSBFbmQgS2V5SW5mbyAtLT4KKworCis8IS0tIFN0YXJ0IE9iamVjdCAoTWFuaWZlc3QsIFNpZ25hdHVyZVByb3BlcnR5KSAtLT4KKworICAgIDxkZWZpbmUgbmFtZT0nT2JqZWN0VHlwZSc+CisgICAgICAgIDx6ZXJvT3JNb3JlPgorICAgICAgICAgICAgPGNob2ljZT4KKyAgICAgICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSdNYW5pZmVzdCc+PHJlZiBuYW1lPSdNYW5pZmVzdFR5cGUnLz48L2VsZW1lbnQ+CisgICAgICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0nU2lnbmF0dXJlUHJvcGVydGllcyc+PHJlZiBuYW1lPSdTaWduYXR1cmVQcm9wZXJ0aWVzVHlwZScvPjwvZWxlbWVudD4gICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPHJlZiBuYW1lPSdhbnlUaGluZycvPgorICAgICAgICAgICAgPC9jaG9pY2U+CisgICAgICAgIDwvemVyb09yTW9yZT4KKyAgICAgICAgPG9wdGlvbmFsPgorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSdFbmNvZGluZyc+CisgICAgICAgICAgICAgICAgPGRhdGEgdHlwZT0nYW55VVJJJy8+CisgICAgICAgICAgICA8L2F0dHJpYnV0ZT4KKyAgICAgICAgPC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlvbmFsPgorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSdNaW1lVHlwZSc+CisgICAgICAgICAgICAgICAgPGRhdGEgdHlwZT0nc3RyaW5nJy8+CisgICAgICAgICAgICA8L2F0dHJpYnV0ZT4KKyAgICAgICAgPC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlvbmFsPgorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSdJZCc+CisgICAgICAgICAgICAgICAgPGRhdGEgdHlwZT0nSUQnLz4KKyAgICAgICAgICAgIDwvYXR0cmlidXRlPgorICAgICAgICA8L29wdGlvbmFsPgorICAgIDwvZGVmaW5lPgorCisgICAgPGRlZmluZSBuYW1lPSdNYW5pZmVzdFR5cGUnPgorICAgICAgICA8b25lT3JNb3JlPgorICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0nUmVmZXJlbmNlJz48cmVmIG5hbWU9J1JlZmVyZW5jZVR5cGUnLz48L2VsZW1lbnQ+CisgICAgICAgIDwvb25lT3JNb3JlPgorICAgICAgICA8b3B0aW9uYWw+PGF0dHJpYnV0ZSBuYW1lPSdJZCc+PGRhdGEgdHlwZT0nSUQnLz48L2F0dHJpYnV0ZT48L29wdGlvbmFsPgorICAgIDwvZGVmaW5lPgorCisgICAgPGRlZmluZSBuYW1lPSdTaWduYXR1cmVQcm9wZXJ0aWVzVHlwZSc+CisgICAgICAgIDxvbmVPck1vcmU+CisgICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSdTaWduYXR1cmVQcm9wZXJ0eSc+PHJlZiBuYW1lPSdTaWduYXR1cmVQcm9wZXJ0eVR5cGUnLz48L2VsZW1lbnQ+CisgICAgICAgIDwvb25lT3JNb3JlPgorICAgICAgICA8b3B0aW9uYWw+CisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9J0lkJz4KKyAgICAgICAgICAgICAgICA8ZGF0YSB0eXBlPSdJRCcvPgorICAgICAgICAgICAgPC9hdHRyaWJ1dGU+CisgICAgICAgIDwvb3B0aW9uYWw+CisgICAgPC9kZWZpbmU+CisKKyAgICA8ZGVmaW5lIG5hbWU9J1NpZ25hdHVyZVByb3BlcnR5VHlwZSc+CisgICAgICAgIDxvbmVPck1vcmU+PHJlZiBuYW1lPSdhbnlUaGluZycvPjwvb25lT3JNb3JlPgorICAgICAgICA8b3B0aW9uYWw+CisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9J0lkJz4KKyAgICAgICAgICAgICAgICA8ZGF0YSB0eXBlPSdJRCcvPgorICAgICAgICAgICAgPC9hdHRyaWJ1dGU+CisgICAgICAgIDwvb3B0aW9uYWw+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0nVGFyZ2V0Jz4KKyAgICAgICAgICAgIDxkYXRhIHR5cGU9J2FueVVSSScvPgorICAgICAgICA8L2F0dHJpYnV0ZT4KKyAgICA8L2RlZmluZT4KKworPCEtLSBFbmQgT2JqZWN0IChNYW5pZmVzdCwgU2lnbmF0dXJlUHJvcGVydHkpIC0tPgorCisKKzwhLS0gU3RhcnQgS2V5VmFsdWUgRWxlbWVudC10eXBlcyAtLT4KKworICAgIDxkZWZpbmUgbmFtZT0nRFNBS2V5VmFsdWVUeXBlJz4KKyAgICAgICAgPG9wdGlvbmFsPgorICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0nUCc+CisgICAgICAgICAgICAgICAgPHJlZiBuYW1lPSdDcnlwdG9CaW5hcnknLz4KKyAgICAgICAgICAgIDwvZWxlbWVudD4KKyAgICAgICAgICAgIDxlbGVtZW50IG5hbWU9J1EnPgorICAgICAgICAgICAgICAgIDxyZWYgbmFtZT0nQ3J5cHRvQmluYXJ5Jy8+CisgICAgICAgICAgICA8L2VsZW1lbnQ+CisgICAgICAgIDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4KKyAgICAgICAgICAgIDxlbGVtZW50IG5hbWU9J0cnPgorICAgICAgICAgICAgICAgIDxyZWYgbmFtZT0nQ3J5cHRvQmluYXJ5Jy8+CisgICAgICAgICAgICA8L2VsZW1lbnQ+CisgICAgICAgIDwvb3B0aW9uYWw+CisgICAgICAgIDxlbGVtZW50IG5hbWU9J1knPgorICAgICAgICAgICAgPHJlZiBuYW1lPSdDcnlwdG9CaW5hcnknLz4KKyAgICAgICAgPC9lbGVtZW50PgorICAgICAgICA8b3B0aW9uYWw+CisgICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSdKJz4KKyAgICAgICAgICAgICAgICA8cmVmIG5hbWU9J0NyeXB0b0JpbmFyeScvPgorICAgICAgICAgICAgPC9lbGVtZW50PgorICAgICAgICA8L29wdGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+CisgICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSdTZWVkJz4KKyAgICAgICAgICAgICAgICA8cmVmIG5hbWU9J0NyeXB0b0JpbmFyeScvPgorICAgICAgICAgICAgPC9lbGVtZW50PgorICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0nUGdlbkNvdW50ZXInPgorICAgICAgICAgICAgICAgIDxyZWYgbmFtZT0nQ3J5cHRvQmluYXJ5Jy8+CisgICAgICAgICAgICA8L2VsZW1lbnQ+CisgICAgICAgIDwvb3B0aW9uYWw+CisgICAgPC9kZWZpbmU+CisKKyAgICA8ZGVmaW5lIG5hbWU9J1JTQUtleVZhbHVlVHlwZSc+CisgICAgICAgIDxlbGVtZW50IG5hbWU9J01vZHVsdXMnPgorICAgICAgICAgICAgPHJlZiBuYW1lPSdDcnlwdG9CaW5hcnknLz4KKyAgICAgICAgPC9lbGVtZW50PgorICAgICAgICA8ZWxlbWVudCBuYW1lPSdFeHBvbmVudCc+CisgICAgICAgICAgICA8cmVmIG5hbWU9J0NyeXB0b0JpbmFyeScvPgorICAgICAgICA8L2VsZW1lbnQ+CisgICAgPC9kZWZpbmU+CisKKworPCEtLSBFbmQgS2V5VmFsdWUgRWxlbWVudC10eXBlcyAtLT4KKworPCEtLSBFbmQgU2lnbmF0dXJlIC0tPgorCisKKyAgICAgICAgPCEtLSBUaGlzIHNob3VsZCBlbXVsYXRlIHRoZSBBTlkgY29udGVudCBtb2RlbCB1bmRlciBsYXggdmFsaWRhdGlvbiAtLT4KKyAgICAgICAgPGRlZmluZSBuYW1lPSdhbnlUaGluZyc+CisgICAgICAgICAgICA8emVyb09yTW9yZT4KKyAgICAgICAgICAgICAgICA8Y2hvaWNlPgorICAgICAgICAgICAgICAgICAgICA8dGV4dC8+CisgICAgICAgICAgICAgICAgICAgIDxlbGVtZW50PgorICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAiZXhjZXB0IiBwcm92aWRlZCBmb3IgRFREIGNvbXBhdGliaWxpdHkgLS0+CisgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFsxXSBucz0naHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9jb21taXR0ZWVzL3JlbGF4LW5nL2NvbXBhdGliaWxpdHkuaHRtbCNpZCcgLS0+CisgICAgICAgICAgICAgICAgICAgICAgICA8YW55TmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXhjZXB0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bnNOYW1lLz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgPG5zTmFtZSBucz0naHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjJy8+ICAtLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2V4Y2VwdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvYW55TmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxyZWYgbmFtZT0nYW55VGhpbmcnLz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx6ZXJvT3JNb3JlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhdHRyaWJ1dGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YW55TmFtZS8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hdHRyaWJ1dGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3plcm9Pck1vcmU+CisgICAgICAgICAgICAgICAgICAgIDwvZWxlbWVudD4KKyAgICAgICAgICAgICAgICA8L2Nob2ljZT4KKyAgICAgICAgICAgIDwvemVyb09yTW9yZT4KKyAgICAgICAgICAgIDwvZGVmaW5lPgorICAgICAgICAgICAgCisKKzwvZ3JhbW1hcj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvcmVzb3VyY2Uvc2NoZW1hL3htbGRzaWctY29yZS1zY2hlbWEueHNkIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Jlc291cmNlL3NjaGVtYS94bWxkc2lnLWNvcmUtc2NoZW1hLnhzZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjEyNmIzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Jlc291cmNlL3NjaGVtYS94bWxkc2lnLWNvcmUtc2NoZW1hLnhzZApAQCAtMCwwICsxLDMxOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhRE9DVFlQRSBzY2hlbWEKKyAgUFVCTElDICItLy9XM0MvL0RURCBYTUxTY2hlbWEgMjAwMTAyLy9FTiIgImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLmR0ZCIKKyBbCisgICA8IUFUVExJU1Qgc2NoZW1hIAorICAgICB4bWxuczpkcyBDREFUQSAjRklYRUQgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICAgPCFFTlRJVFkgZHNpZyAnaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyc+CisgICA8IUVOVElUWSAlIHAgJyc+CisgICA8IUVOVElUWSAlIHMgJyc+CisgIF0+CisKKzwhLS0gU2NoZW1hIGZvciBYTUwgU2lnbmF0dXJlcworICAgIGh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMKKyAgICAkUmV2aXNpb246IDEuMSAkIG9uICREYXRlOiAyMDAyLzAyLzA4IDIwOjMyOjI2ICQgYnkgJEF1dGhvcjogcmVhZ2xlICQKKworICAgIENvcHlyaWdodCAyMDAxIFRoZSBJbnRlcm5ldCBTb2NpZXR5IGFuZCBXM0MgKE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlCisgICAgb2YgVGVjaG5vbG9neSwgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCBlbgorICAgIEF1dG9tYXRpcXVlLCBLZWlvIFVuaXZlcnNpdHkpLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICAgIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvCisKKyAgICBUaGlzIGRvY3VtZW50IGlzIGdvdmVybmVkIGJ5IHRoZSBXM0MgU29mdHdhcmUgTGljZW5zZSBbMV0gYXMgZGVzY3JpYmVkCisgICAgaW4gdGhlIEZBUSBbMl0uCisKKyAgICBbMV0gaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC9jb3B5cmlnaHQtc29mdHdhcmUtMTk5ODA3MjAKKyAgICBbMl0gaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC9JUFItRkFRLTIwMDAwNjIwLmh0bWwjRFRECistLT4KKworCis8c2NoZW1hIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIKKyAgICAgICAgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiCisgICAgICAgIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIKKyAgICAgICAgdmVyc2lvbj0iMC4xIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+IAorCis8IS0tIEJhc2ljIFR5cGVzIERlZmluZWQgZm9yIFNpZ25hdHVyZXMgLS0+CisKKzxzaW1wbGVUeXBlIG5hbWU9IkNyeXB0b0JpbmFyeSI+CisgIDxyZXN0cmljdGlvbiBiYXNlPSJiYXNlNjRCaW5hcnkiPgorICA8L3Jlc3RyaWN0aW9uPgorPC9zaW1wbGVUeXBlPgorCis8IS0tIFN0YXJ0IFNpZ25hdHVyZSAtLT4KKworPGVsZW1lbnQgbmFtZT0iU2lnbmF0dXJlIiB0eXBlPSJkczpTaWduYXR1cmVUeXBlIi8+Cis8Y29tcGxleFR5cGUgbmFtZT0iU2lnbmF0dXJlVHlwZSI+CisgIDxzZXF1ZW5jZT4gCisgICAgPGVsZW1lbnQgcmVmPSJkczpTaWduZWRJbmZvIi8+IAorICAgIDxlbGVtZW50IHJlZj0iZHM6U2lnbmF0dXJlVmFsdWUiLz4gCisgICAgPGVsZW1lbnQgcmVmPSJkczpLZXlJbmZvIiBtaW5PY2N1cnM9IjAiLz4gCisgICAgPGVsZW1lbnQgcmVmPSJkczpPYmplY3QiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4gCisgIDwvc2VxdWVuY2U+ICAKKyAgPGF0dHJpYnV0ZSBuYW1lPSJJZCIgdHlwZT0iSUQiIHVzZT0ib3B0aW9uYWwiLz4KKzwvY29tcGxleFR5cGU+CisKKyAgPGVsZW1lbnQgbmFtZT0iU2lnbmF0dXJlVmFsdWUiIHR5cGU9ImRzOlNpZ25hdHVyZVZhbHVlVHlwZSIvPiAKKyAgPGNvbXBsZXhUeXBlIG5hbWU9IlNpZ25hdHVyZVZhbHVlVHlwZSI+CisgICAgPHNpbXBsZUNvbnRlbnQ+CisgICAgICA8ZXh0ZW5zaW9uIGJhc2U9ImJhc2U2NEJpbmFyeSI+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iSWQiIHR5cGU9IklEIiB1c2U9Im9wdGlvbmFsIi8+CisgICAgICA8L2V4dGVuc2lvbj4KKyAgICA8L3NpbXBsZUNvbnRlbnQ+CisgIDwvY29tcGxleFR5cGU+CisKKzwhLS0gU3RhcnQgU2lnbmVkSW5mbyAtLT4KKworPGVsZW1lbnQgbmFtZT0iU2lnbmVkSW5mbyIgdHlwZT0iZHM6U2lnbmVkSW5mb1R5cGUiLz4KKzxjb21wbGV4VHlwZSBuYW1lPSJTaWduZWRJbmZvVHlwZSI+CisgIDxzZXF1ZW5jZT4gCisgICAgPGVsZW1lbnQgcmVmPSJkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIi8+IAorICAgIDxlbGVtZW50IHJlZj0iZHM6U2lnbmF0dXJlTWV0aG9kIi8+IAorICAgIDxlbGVtZW50IHJlZj0iZHM6UmVmZXJlbmNlIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPiAKKyAgPC9zZXF1ZW5jZT4gIAorICA8YXR0cmlidXRlIG5hbWU9IklkIiB0eXBlPSJJRCIgdXNlPSJvcHRpb25hbCIvPiAKKzwvY29tcGxleFR5cGU+CisKKyAgPGVsZW1lbnQgbmFtZT0iQ2Fub25pY2FsaXphdGlvbk1ldGhvZCIgdHlwZT0iZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZFR5cGUiLz4gCisgIDxjb21wbGV4VHlwZSBuYW1lPSJDYW5vbmljYWxpemF0aW9uTWV0aG9kVHlwZSIgbWl4ZWQ9InRydWUiPgorICAgIDxzZXF1ZW5jZT4KKyAgICAgIDxhbnkgbmFtZXNwYWNlPSIjI2FueSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgorICAgICAgPCEtLSAoMCx1bmJvdW5kZWQpIGVsZW1lbnRzIGZyb20gKDEsMSkgbmFtZXNwYWNlIC0tPgorICAgIDwvc2VxdWVuY2U+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJBbGdvcml0aG0iIHR5cGU9ImFueVVSSSIgdXNlPSJyZXF1aXJlZCIvPiAKKyAgPC9jb21wbGV4VHlwZT4KKworICA8ZWxlbWVudCBuYW1lPSJTaWduYXR1cmVNZXRob2QiIHR5cGU9ImRzOlNpZ25hdHVyZU1ldGhvZFR5cGUiLz4KKyAgPGNvbXBsZXhUeXBlIG5hbWU9IlNpZ25hdHVyZU1ldGhvZFR5cGUiIG1peGVkPSJ0cnVlIj4KKyAgICA8c2VxdWVuY2U+CisgICAgICA8ZWxlbWVudCBuYW1lPSJITUFDT3V0cHV0TGVuZ3RoIiBtaW5PY2N1cnM9IjAiIHR5cGU9ImRzOkhNQUNPdXRwdXRMZW5ndGhUeXBlIi8+CisgICAgICA8YW55IG5hbWVzcGFjZT0iIyNvdGhlciIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgorICAgICAgPCEtLSAoMCx1bmJvdW5kZWQpIGVsZW1lbnRzIGZyb20gKDEsMSkgZXh0ZXJuYWwgbmFtZXNwYWNlIC0tPgorICAgIDwvc2VxdWVuY2U+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJBbGdvcml0aG0iIHR5cGU9ImFueVVSSSIgdXNlPSJyZXF1aXJlZCIvPiAKKyAgPC9jb21wbGV4VHlwZT4KKworPCEtLSBTdGFydCBSZWZlcmVuY2UgLS0+CisKKzxlbGVtZW50IG5hbWU9IlJlZmVyZW5jZSIgdHlwZT0iZHM6UmVmZXJlbmNlVHlwZSIvPgorPGNvbXBsZXhUeXBlIG5hbWU9IlJlZmVyZW5jZVR5cGUiPgorICA8c2VxdWVuY2U+IAorICAgIDxlbGVtZW50IHJlZj0iZHM6VHJhbnNmb3JtcyIgbWluT2NjdXJzPSIwIi8+IAorICAgIDxlbGVtZW50IHJlZj0iZHM6RGlnZXN0TWV0aG9kIi8+IAorICAgIDxlbGVtZW50IHJlZj0iZHM6RGlnZXN0VmFsdWUiLz4gCisgIDwvc2VxdWVuY2U+CisgIDxhdHRyaWJ1dGUgbmFtZT0iSWQiIHR5cGU9IklEIiB1c2U9Im9wdGlvbmFsIi8+IAorICA8YXR0cmlidXRlIG5hbWU9IlVSSSIgdHlwZT0iYW55VVJJIiB1c2U9Im9wdGlvbmFsIi8+IAorICA8YXR0cmlidXRlIG5hbWU9IlR5cGUiIHR5cGU9ImFueVVSSSIgdXNlPSJvcHRpb25hbCIvPiAKKzwvY29tcGxleFR5cGU+CisKKyAgPGVsZW1lbnQgbmFtZT0iVHJhbnNmb3JtcyIgdHlwZT0iZHM6VHJhbnNmb3Jtc1R5cGUiLz4KKyAgPGNvbXBsZXhUeXBlIG5hbWU9IlRyYW5zZm9ybXNUeXBlIj4KKyAgICA8c2VxdWVuY2U+CisgICAgICA8ZWxlbWVudCByZWY9ImRzOlRyYW5zZm9ybSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4gIAorICAgIDwvc2VxdWVuY2U+CisgIDwvY29tcGxleFR5cGU+CisKKyAgPGVsZW1lbnQgbmFtZT0iVHJhbnNmb3JtIiB0eXBlPSJkczpUcmFuc2Zvcm1UeXBlIi8+CisgIDxjb21wbGV4VHlwZSBuYW1lPSJUcmFuc2Zvcm1UeXBlIiBtaXhlZD0idHJ1ZSI+CisgICAgPGNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4gCisgICAgICA8YW55IG5hbWVzcGFjZT0iIyNvdGhlciIgcHJvY2Vzc0NvbnRlbnRzPSJsYXgiLz4KKyAgICAgIDwhLS0gKDEsMSkgZWxlbWVudHMgZnJvbSAoMCx1bmJvdW5kZWQpIG5hbWVzcGFjZXMgLS0+CisgICAgICA8ZWxlbWVudCBuYW1lPSJYUGF0aCIgdHlwZT0ic3RyaW5nIi8+IAorICAgIDwvY2hvaWNlPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iQWxnb3JpdGhtIiB0eXBlPSJhbnlVUkkiIHVzZT0icmVxdWlyZWQiLz4gCisgIDwvY29tcGxleFR5cGU+CisKKzwhLS0gRW5kIFJlZmVyZW5jZSAtLT4KKworPGVsZW1lbnQgbmFtZT0iRGlnZXN0TWV0aG9kIiB0eXBlPSJkczpEaWdlc3RNZXRob2RUeXBlIi8+Cis8Y29tcGxleFR5cGUgbmFtZT0iRGlnZXN0TWV0aG9kVHlwZSIgbWl4ZWQ9InRydWUiPiAKKyAgPHNlcXVlbmNlPgorICAgIDxhbnkgbmFtZXNwYWNlPSIjI290aGVyIiBwcm9jZXNzQ29udGVudHM9ImxheCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgorICA8L3NlcXVlbmNlPiAgICAKKyAgPGF0dHJpYnV0ZSBuYW1lPSJBbGdvcml0aG0iIHR5cGU9ImFueVVSSSIgdXNlPSJyZXF1aXJlZCIvPiAKKzwvY29tcGxleFR5cGU+CisKKzxlbGVtZW50IG5hbWU9IkRpZ2VzdFZhbHVlIiB0eXBlPSJkczpEaWdlc3RWYWx1ZVR5cGUiLz4KKzxzaW1wbGVUeXBlIG5hbWU9IkRpZ2VzdFZhbHVlVHlwZSI+CisgIDxyZXN0cmljdGlvbiBiYXNlPSJiYXNlNjRCaW5hcnkiLz4KKzwvc2ltcGxlVHlwZT4KKworPCEtLSBFbmQgU2lnbmVkSW5mbyAtLT4KKworPCEtLSBTdGFydCBLZXlJbmZvIC0tPgorCis8ZWxlbWVudCBuYW1lPSJLZXlJbmZvIiB0eXBlPSJkczpLZXlJbmZvVHlwZSIvPiAKKzxjb21wbGV4VHlwZSBuYW1lPSJLZXlJbmZvVHlwZSIgbWl4ZWQ9InRydWUiPgorICA8Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4gICAgIAorICAgIDxlbGVtZW50IHJlZj0iZHM6S2V5TmFtZSIvPiAKKyAgICA8ZWxlbWVudCByZWY9ImRzOktleVZhbHVlIi8+IAorICAgIDxlbGVtZW50IHJlZj0iZHM6UmV0cmlldmFsTWV0aG9kIi8+IAorICAgIDxlbGVtZW50IHJlZj0iZHM6WDUwOURhdGEiLz4gCisgICAgPGVsZW1lbnQgcmVmPSJkczpQR1BEYXRhIi8+IAorICAgIDxlbGVtZW50IHJlZj0iZHM6U1BLSURhdGEiLz4KKyAgICA8ZWxlbWVudCByZWY9ImRzOk1nbXREYXRhIi8+CisgICAgPGFueSBwcm9jZXNzQ29udGVudHM9ImxheCIgbmFtZXNwYWNlPSIjI290aGVyIi8+CisgICAgPCEtLSAoMSwxKSBlbGVtZW50cyBmcm9tICgwLHVuYm91bmRlZCkgbmFtZXNwYWNlcyAtLT4KKyAgPC9jaG9pY2U+CisgIDxhdHRyaWJ1dGUgbmFtZT0iSWQiIHR5cGU9IklEIiB1c2U9Im9wdGlvbmFsIi8+IAorPC9jb21wbGV4VHlwZT4KKworICA8ZWxlbWVudCBuYW1lPSJLZXlOYW1lIiB0eXBlPSJzdHJpbmciLz4KKyAgPGVsZW1lbnQgbmFtZT0iTWdtdERhdGEiIHR5cGU9InN0cmluZyIvPgorCisgIDxlbGVtZW50IG5hbWU9IktleVZhbHVlIiB0eXBlPSJkczpLZXlWYWx1ZVR5cGUiLz4gCisgIDxjb21wbGV4VHlwZSBuYW1lPSJLZXlWYWx1ZVR5cGUiIG1peGVkPSJ0cnVlIj4KKyAgIDxjaG9pY2U+CisgICAgIDxlbGVtZW50IHJlZj0iZHM6RFNBS2V5VmFsdWUiLz4KKyAgICAgPGVsZW1lbnQgcmVmPSJkczpSU0FLZXlWYWx1ZSIvPgorICAgICA8YW55IG5hbWVzcGFjZT0iIyNvdGhlciIgcHJvY2Vzc0NvbnRlbnRzPSJsYXgiLz4KKyAgIDwvY2hvaWNlPgorICA8L2NvbXBsZXhUeXBlPgorCisgIDxlbGVtZW50IG5hbWU9IlJldHJpZXZhbE1ldGhvZCIgdHlwZT0iZHM6UmV0cmlldmFsTWV0aG9kVHlwZSIvPiAKKyAgPGNvbXBsZXhUeXBlIG5hbWU9IlJldHJpZXZhbE1ldGhvZFR5cGUiPgorICAgIDxzZXF1ZW5jZT4KKyAgICAgIDxlbGVtZW50IHJlZj0iZHM6VHJhbnNmb3JtcyIgbWluT2NjdXJzPSIwIi8+IAorICAgIDwvc2VxdWVuY2U+ICAKKyAgICA8YXR0cmlidXRlIG5hbWU9IlVSSSIgdHlwZT0iYW55VVJJIi8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJUeXBlIiB0eXBlPSJhbnlVUkkiIHVzZT0ib3B0aW9uYWwiLz4KKyAgPC9jb21wbGV4VHlwZT4KKworPCEtLSBTdGFydCBYNTA5RGF0YSAtLT4KKworPGVsZW1lbnQgbmFtZT0iWDUwOURhdGEiIHR5cGU9ImRzOlg1MDlEYXRhVHlwZSIvPiAKKzxjb21wbGV4VHlwZSBuYW1lPSJYNTA5RGF0YVR5cGUiPgorICA8c2VxdWVuY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgorICAgIDxjaG9pY2U+CisgICAgICA8ZWxlbWVudCBuYW1lPSJYNTA5SXNzdWVyU2VyaWFsIiB0eXBlPSJkczpYNTA5SXNzdWVyU2VyaWFsVHlwZSIvPgorICAgICAgPGVsZW1lbnQgbmFtZT0iWDUwOVNLSSIgdHlwZT0iYmFzZTY0QmluYXJ5Ii8+CisgICAgICA8ZWxlbWVudCBuYW1lPSJYNTA5U3ViamVjdE5hbWUiIHR5cGU9InN0cmluZyIvPgorICAgICAgPGVsZW1lbnQgbmFtZT0iWDUwOUNlcnRpZmljYXRlIiB0eXBlPSJiYXNlNjRCaW5hcnkiLz4KKyAgICAgIDxlbGVtZW50IG5hbWU9Ilg1MDlDUkwiIHR5cGU9ImJhc2U2NEJpbmFyeSIvPgorICAgICAgPGFueSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4Ii8+CisgICAgPC9jaG9pY2U+CisgIDwvc2VxdWVuY2U+Cis8L2NvbXBsZXhUeXBlPgorCis8Y29tcGxleFR5cGUgbmFtZT0iWDUwOUlzc3VlclNlcmlhbFR5cGUiPiAKKyAgPHNlcXVlbmNlPiAKKyAgICA8ZWxlbWVudCBuYW1lPSJYNTA5SXNzdWVyTmFtZSIgdHlwZT0ic3RyaW5nIi8+IAorICAgIDxlbGVtZW50IG5hbWU9Ilg1MDlTZXJpYWxOdW1iZXIiIHR5cGU9ImludGVnZXIiLz4gCisgIDwvc2VxdWVuY2U+Cis8L2NvbXBsZXhUeXBlPgorCis8IS0tIEVuZCBYNTA5RGF0YSAtLT4KKworPCEtLSBCZWdpbiBQR1BEYXRhIC0tPgorCis8ZWxlbWVudCBuYW1lPSJQR1BEYXRhIiB0eXBlPSJkczpQR1BEYXRhVHlwZSIvPiAKKzxjb21wbGV4VHlwZSBuYW1lPSJQR1BEYXRhVHlwZSI+IAorICA8Y2hvaWNlPgorICAgIDxzZXF1ZW5jZT4KKyAgICAgIDxlbGVtZW50IG5hbWU9IlBHUEtleUlEIiB0eXBlPSJiYXNlNjRCaW5hcnkiLz4gCisgICAgICA8ZWxlbWVudCBuYW1lPSJQR1BLZXlQYWNrZXQiIHR5cGU9ImJhc2U2NEJpbmFyeSIgbWluT2NjdXJzPSIwIi8+IAorICAgICAgPGFueSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4IiBtaW5PY2N1cnM9IjAiCisgICAgICAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KKyAgICA8L3NlcXVlbmNlPgorICAgIDxzZXF1ZW5jZT4KKyAgICAgIDxlbGVtZW50IG5hbWU9IlBHUEtleVBhY2tldCIgdHlwZT0iYmFzZTY0QmluYXJ5Ii8+IAorICAgICAgPGFueSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4IiBtaW5PY2N1cnM9IjAiCisgICAgICAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KKyAgICA8L3NlcXVlbmNlPgorICA8L2Nob2ljZT4KKzwvY29tcGxleFR5cGU+CisKKzwhLS0gRW5kIFBHUERhdGEgLS0+CisKKzwhLS0gQmVnaW4gU1BLSURhdGEgLS0+CisKKzxlbGVtZW50IG5hbWU9IlNQS0lEYXRhIiB0eXBlPSJkczpTUEtJRGF0YVR5cGUiLz4gCis8Y29tcGxleFR5cGUgbmFtZT0iU1BLSURhdGFUeXBlIj4KKyAgPHNlcXVlbmNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KKyAgICA8ZWxlbWVudCBuYW1lPSJTUEtJU2V4cCIgdHlwZT0iYmFzZTY0QmluYXJ5Ii8+CisgICAgPGFueSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4IiBtaW5PY2N1cnM9IjAiLz4KKyAgPC9zZXF1ZW5jZT4KKzwvY29tcGxleFR5cGU+IAorCis8IS0tIEVuZCBTUEtJRGF0YSAtLT4KKworPCEtLSBFbmQgS2V5SW5mbyAtLT4KKworPCEtLSBTdGFydCBPYmplY3QgKE1hbmlmZXN0LCBTaWduYXR1cmVQcm9wZXJ0eSkgLS0+CisKKzxlbGVtZW50IG5hbWU9Ik9iamVjdCIgdHlwZT0iZHM6T2JqZWN0VHlwZSIvPiAKKzxjb21wbGV4VHlwZSBuYW1lPSJPYmplY3RUeXBlIiBtaXhlZD0idHJ1ZSI+CisgIDxzZXF1ZW5jZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KKyAgICA8YW55IG5hbWVzcGFjZT0iIyNhbnkiIHByb2Nlc3NDb250ZW50cz0ibGF4Ii8+CisgIDwvc2VxdWVuY2U+CisgIDxhdHRyaWJ1dGUgbmFtZT0iSWQiIHR5cGU9IklEIiB1c2U9Im9wdGlvbmFsIi8+IAorICA8YXR0cmlidXRlIG5hbWU9Ik1pbWVUeXBlIiB0eXBlPSJzdHJpbmciIHVzZT0ib3B0aW9uYWwiLz4gPCEtLSBhZGQgYSBncmVwIGZhY2V0IC0tPgorICA8YXR0cmlidXRlIG5hbWU9IkVuY29kaW5nIiB0eXBlPSJhbnlVUkkiIHVzZT0ib3B0aW9uYWwiLz4gCis8L2NvbXBsZXhUeXBlPgorCis8ZWxlbWVudCBuYW1lPSJNYW5pZmVzdCIgdHlwZT0iZHM6TWFuaWZlc3RUeXBlIi8+IAorPGNvbXBsZXhUeXBlIG5hbWU9Ik1hbmlmZXN0VHlwZSI+CisgIDxzZXF1ZW5jZT4KKyAgICA8ZWxlbWVudCByZWY9ImRzOlJlZmVyZW5jZSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4gCisgIDwvc2VxdWVuY2U+CisgIDxhdHRyaWJ1dGUgbmFtZT0iSWQiIHR5cGU9IklEIiB1c2U9Im9wdGlvbmFsIi8+IAorPC9jb21wbGV4VHlwZT4KKworPGVsZW1lbnQgbmFtZT0iU2lnbmF0dXJlUHJvcGVydGllcyIgdHlwZT0iZHM6U2lnbmF0dXJlUHJvcGVydGllc1R5cGUiLz4gCis8Y29tcGxleFR5cGUgbmFtZT0iU2lnbmF0dXJlUHJvcGVydGllc1R5cGUiPgorICA8c2VxdWVuY2U+CisgICAgPGVsZW1lbnQgcmVmPSJkczpTaWduYXR1cmVQcm9wZXJ0eSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4gCisgIDwvc2VxdWVuY2U+CisgIDxhdHRyaWJ1dGUgbmFtZT0iSWQiIHR5cGU9IklEIiB1c2U9Im9wdGlvbmFsIi8+IAorPC9jb21wbGV4VHlwZT4KKworICAgPGVsZW1lbnQgbmFtZT0iU2lnbmF0dXJlUHJvcGVydHkiIHR5cGU9ImRzOlNpZ25hdHVyZVByb3BlcnR5VHlwZSIvPiAKKyAgIDxjb21wbGV4VHlwZSBuYW1lPSJTaWduYXR1cmVQcm9wZXJ0eVR5cGUiIG1peGVkPSJ0cnVlIj4KKyAgICAgPGNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CisgICAgICAgPGFueSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4Ii8+CisgICAgICAgPCEtLSAoMSwxKSBlbGVtZW50cyBmcm9tICgxLHVuYm91bmRlZCkgbmFtZXNwYWNlcyAtLT4KKyAgICAgPC9jaG9pY2U+CisgICAgIDxhdHRyaWJ1dGUgbmFtZT0iVGFyZ2V0IiB0eXBlPSJhbnlVUkkiIHVzZT0icmVxdWlyZWQiLz4gCisgICAgIDxhdHRyaWJ1dGUgbmFtZT0iSWQiIHR5cGU9IklEIiB1c2U9Im9wdGlvbmFsIi8+IAorICAgPC9jb21wbGV4VHlwZT4KKworPCEtLSBFbmQgT2JqZWN0IChNYW5pZmVzdCwgU2lnbmF0dXJlUHJvcGVydHkpIC0tPgorCis8IS0tIFN0YXJ0IEFsZ29yaXRobSBQYXJhbWV0ZXJzIC0tPgorCis8c2ltcGxlVHlwZSBuYW1lPSJITUFDT3V0cHV0TGVuZ3RoVHlwZSI+CisgIDxyZXN0cmljdGlvbiBiYXNlPSJpbnRlZ2VyIi8+Cis8L3NpbXBsZVR5cGU+CisKKzwhLS0gU3RhcnQgS2V5VmFsdWUgRWxlbWVudC10eXBlcyAtLT4KKworPGVsZW1lbnQgbmFtZT0iRFNBS2V5VmFsdWUiIHR5cGU9ImRzOkRTQUtleVZhbHVlVHlwZSIvPgorPGNvbXBsZXhUeXBlIG5hbWU9IkRTQUtleVZhbHVlVHlwZSI+CisgIDxzZXF1ZW5jZT4KKyAgICA8c2VxdWVuY2UgbWluT2NjdXJzPSIwIj4KKyAgICAgIDxlbGVtZW50IG5hbWU9IlAiIHR5cGU9ImRzOkNyeXB0b0JpbmFyeSIvPgorICAgICAgPGVsZW1lbnQgbmFtZT0iUSIgdHlwZT0iZHM6Q3J5cHRvQmluYXJ5Ii8+CisgICAgPC9zZXF1ZW5jZT4KKyAgICA8ZWxlbWVudCBuYW1lPSJHIiB0eXBlPSJkczpDcnlwdG9CaW5hcnkiIG1pbk9jY3Vycz0iMCIvPgorICAgIDxlbGVtZW50IG5hbWU9IlkiIHR5cGU9ImRzOkNyeXB0b0JpbmFyeSIvPgorICAgIDxlbGVtZW50IG5hbWU9IkoiIHR5cGU9ImRzOkNyeXB0b0JpbmFyeSIgbWluT2NjdXJzPSIwIi8+CisgICAgPHNlcXVlbmNlIG1pbk9jY3Vycz0iMCI+CisgICAgICA8ZWxlbWVudCBuYW1lPSJTZWVkIiB0eXBlPSJkczpDcnlwdG9CaW5hcnkiLz4KKyAgICAgIDxlbGVtZW50IG5hbWU9IlBnZW5Db3VudGVyIiB0eXBlPSJkczpDcnlwdG9CaW5hcnkiLz4KKyAgICA8L3NlcXVlbmNlPgorICA8L3NlcXVlbmNlPgorPC9jb21wbGV4VHlwZT4KKworPGVsZW1lbnQgbmFtZT0iUlNBS2V5VmFsdWUiIHR5cGU9ImRzOlJTQUtleVZhbHVlVHlwZSIvPgorPGNvbXBsZXhUeXBlIG5hbWU9IlJTQUtleVZhbHVlVHlwZSI+CisgIDxzZXF1ZW5jZT4KKyAgICA8ZWxlbWVudCBuYW1lPSJNb2R1bHVzIiB0eXBlPSJkczpDcnlwdG9CaW5hcnkiLz4gCisgICAgPGVsZW1lbnQgbmFtZT0iRXhwb25lbnQiIHR5cGU9ImRzOkNyeXB0b0JpbmFyeSIvPiAKKyAgPC9zZXF1ZW5jZT4KKzwvY29tcGxleFR5cGU+IAorCis8IS0tIEVuZCBLZXlWYWx1ZSBFbGVtZW50LXR5cGVzIC0tPgorCis8IS0tIEVuZCBTaWduYXR1cmUgLS0+CisKKzwvc2NoZW1hPgpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Jlc291cmNlL3htbHNlY3VyaXR5X2RlLnByb3BlcnRpZXMgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvcmVzb3VyY2UveG1sc2VjdXJpdHlfZGUucHJvcGVydGllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzI2NTZkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Jlc291cmNlL3htbHNlY3VyaXR5X2RlLnByb3BlcnRpZXMKQEAgLTAsMCArMSwxMjAgQEAKK2FsZ29yaXRobS5hbHJlYWR5UmVnaXN0ZXJlZCA9IFVSSSB7MH0gd3VyZGUgYmVyZWl0cyBhbiBkaWUgS2xhc3NlIHsxfSBnZWJ1bmRlbg0KK2FsZ29yaXRobS5jbGFzc0RvZXNOb3RFeGlzdCA9IEthbm4gVVJJIHswfSBuaWNodCBm/HIgS2xhc3NlIHsxfSByZWdpc3RyaWVyZW4gd2VpbCBzaWUgbmljaHQgZXhpc3RpZXJ0DQorYWxnb3JpdGhtLkNsYXNzRG9lc05vdEV4aXN0ID0gS2xhc3NlIHswfSBleGlzdGllcnQgbmljaHQNCithbGdvcml0aG0uZXh0ZW5kc1dyb25nQ2xhc3MgPSBLYW5uIFVSSSB7MH0gbmljaHQgZvxyIEtsYXNzZSB7MX0gcmVnaXN0cmllcmVuIHdlaWwgc2llIG5pY2h0IHsyfSBleHRlbmRlZA0KK2FsZ29yaXRobXMuQ2Fubm90VXNlQWxnb3JpdGhtUGFyYW1ldGVyU3BlY09uRFNBID0gU29ycnksIGJ1dCB5b3UgY2Fubm90IHVzZSBhIEFsZ29yaXRobVBhcmFtZXRlclNwZWMgb2JqZWN0IGZvciBjcmVhdGluZyBEU0Egc2lnbmF0dXJlcy4NCithbGdvcml0aG1zLkNhbm5vdFVzZUFsZ29yaXRobVBhcmFtZXRlclNwZWNPblJTQSA9IFNvcnJ5LCBidXQgeW91IGNhbm5vdCB1c2UgYSBBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIG9iamVjdCBmb3IgY3JlYXRpbmcgUlNBIHNpZ25hdHVyZXMuDQorYWxnb3JpdGhtcy5DYW5ub3RVc2VTZWN1cmVSYW5kb21Pbk1BQyA9IFNvcnJ5LCBidXQgeW91IGNhbm5vdCB1c2UgYSBTZWN1cmVSYW5kb20gb2JqZWN0IGZvciBjcmVhdGluZyBNQUNzLg0KK2FsZ29yaXRobXMuSE1BQ091dHB1dExlbmd0aE1pbiA9IEhNQUNPdXRwdXRMZW5ndGggbXVzdCBub3QgYmUgbGVzcyB0aGFuIHswfQorYWxnb3JpdGhtcy5ITUFDT3V0cHV0TGVuZ3RoT25seUZvckhNQUMgPSBBIEhNQUNPdXRwdXRMZW5ndGggY2FuIG9ubHkgYmUgc3BlY2lmaWVkIGZvciBITUFDIGludGVncml0eSBhbGdvcml0aG1zDQorYWxnb3JpdGhtcy5Ob1N1Y2hBbGdvcml0aG0gPSBEZXIgQWxnb3JpdGhtdXMgezB9IGlzdCBuaWNodCB2ZXJm/GdiYXIuIE9yaWdpbmFsIE5hY2hyaWNodCB3YXI6IHsxfQ0KK2FsZ29yaXRobXMuTm9TdWNoTWFwID0gVGhlIGFsZ29yaXRobSBVUkkgInswfSIgY291bGQgbm90IGJlIG1hcHBlZCB0byBhIEpDRSBhbGdvcml0aG0NCithbGdvcml0aG1zLk5vU3VjaFByb3ZpZGVyID0gVGhlIHNwZWNpZmllZCBQcm92aWRlciB7MH0gZG9lcyBub3QgZXhpc3QuIE9yaWdpbmFsIE1lc3NhZ2Ugd2FzOiB7MX0NCithbGdvcml0aG1zLm9wZXJhdGlvbk9ubHlWZXJpZmljYXRpb24gPSBBIHB1YmxpYyBrZXkgY2FuIG9ubHkgdXNlZCBmb3IgdmVyaWZpY2F0aW9uIG9mIGEgc2lnbmF0dXJlLg0KK2FsZ29yaXRobXMuV3JvbmdLZXlGb3JUaGlzT3BlcmF0aW9uID0gU29ycnksIHlvdSBzdXBwbGllZCB0aGUgd3Jvbmcga2V5IHR5cGUgZm9yIHRoaXMgb3BlcmF0aW9uISBZb3Ugc3VwcGxpZWQgYSB7MH0gYnV0IGEgezF9IGlzIG5lZWRlZC4NCithdHRyaWJ1dGVWYWx1ZUlsbGVnYWwgPSBUaGUgYXR0cmlidXRlIHswfSBoYXMgdmFsdWUgezF9IGJ1dCBtdXN0IGJlIHsyfQ0KK2MxNG4uQ2Fub25pY2FsaXplci5FeGNlcHRpb24gPSBFeGNlcHRpb24gd+RocmVuZCBLYW5vbmlzaWVydW5nOiAgT3JpZ2luYWwgTmFjaHJpY2h0IHdhciB7MH0NCitjMTRuLkNhbm9uaWNhbGl6ZXIuSWxsZWdhbE5vZGUgPSBVbnp1bORzc2lnZXIgTm9kZVR5cGUgezB9LCBOb2RlTmFtZSBsYXV0ZXRlIHsxfQ0KK2MxNG4uQ2Fub25pY2FsaXplci5Ob1N1Y2hDYW5vbmljYWxpemVyID0gS2VpbiBDYW5vbmljYWxpemVyIG1pdCBkZW0gVVJJIHswfSBnZWZ1bmRlbg0KK2MxNG4uQ2Fub25pY2FsaXplci5QYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uID0gUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiB35GhyZW5kIEthbm9uaXNpZXJ1bmc6ICBPcmlnaW5hbCBOYWNocmljaHQgd2FyIHswfQ0KK2MxNG4uQ2Fub25pY2FsaXplci5SZWxhdGl2ZU5hbWVzcGFjZSA9IERhcyBFbGVtZW50IHswfSBoYXQgZWluZW4gcmVsYXRpdmVuIE5hbWVzcGFjZTogezF9PSJ7Mn0iDQorYzE0bi5DYW5vbmljYWxpemVyLlNBWEV4Y2VwdGlvbiA9IFNBWEV4Y2VwdGlvbiB35GhyZW5kIEthbm9uaXNpZXJ1bmc6ICBPcmlnaW5hbCBOYWNocmljaHQgd2FyIHswfQ0KK2MxNG4uQ2Fub25pY2FsaXplci5UcmF2ZXJzYWxOb3RTdXBwb3J0ZWQgPSBEYXMgRE9NIERva3VtZW50IHVudGVyc3T8dHp0IGtlaW5lIFRyYXZlcnNhbCB7MH0NCitjMTRuLkNhbm9uaWNhbGl6ZXIuVW5zdXBwb3J0ZWRFbmNvZGluZyA9IFVuYmVrYW5udGUgS29kaWVydW5nIHswfQ0KK2MxNG4uQ2Fub25pY2FsaXplci5VbnN1cHBvcnRlZE9wZXJhdGlvbiA9IFRoaXMgY2Fub25pY2FsaXplciBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uDQorYzE0bi5YTUxVdGlscy5jaXJjdW12ZW50QnVnMjY1MGZvcmdvdHRlbiA9IFRoZSB0cmVlIGhhcyBub3QgYmVlbiBwcmVwYXJlZCBmb3IgY2Fub25pY2FsaXphdGlvbiB1c2luZyBYTUxVdGlscyNjaXJjdW12ZW50QnVnMjY1MChEb2N1bWVudCkNCitjZXJ0aWZpY2F0ZS5ub1NraS5sb3dWZXJzaW9uID0gQ2VydGlmaWNhdGUgY2Fubm90IGNvbnRhaW4gYSBTdWJqZWN0S2V5SWRlbnRpZmllciBiZWNhdXNlIGl0IGlzIG9ubHkgWDUwOXZ7MH0NCitjZXJ0aWZpY2F0ZS5ub1NraS5ub3RPY3RldFN0cmluZyA9IENlcnRpZmljYXRlcyBTdWJqZWN0S2V5SWRlbnRpZmllciBpcyBub3QgYSBPY3RldFN0cmluZw0KK2NlcnRpZmljYXRlLm5vU2tpLm51bGwgPSBDZXJ0aWZpY2F0ZSBkb2VzIG5vdCBjb250YWluIGEgU3ViamVjdEtleUlkZW50aWZpZXINCitkZWZhdWx0TmFtZXNwYWNlQ2Fubm90QmVTZXRIZXJlID0gRGVmYXVsdCBuYW1lc3BhY2UgY2Fubm90IGJlIHNldCBoZXJlDQorRWxlbWVudFByb3h5Lm51bGxFbGVtZW50ID0gS2FubiBlaW5lbiBFbGVtZW50UHJveHkgYXVzIGVpbmVtIG51bGwgQXJndW1lbnQgZXJ6ZXVnZW4NCitlbXB0eSA9IHswfQ0KK2VuY3J5cHRpb24uYWxnb3JpdGhtQ2Fubm90QmVVc2VkRm9yRW5jcnlwdGVkRGF0YSA9IGVuY3J5cHRpb24uYWxnb3JpdGhtQ2Fubm90QmVVc2VkRm9yRW5jcnlwdGVkRGF0YSB7MH0NCitlbmNyeXB0aW9uLmFsZ29yaXRobUNhbm5vdEVhdEluaXRQYXJhbXMgPSBlbmNyeXB0aW9uLmFsZ29yaXRobUNhbm5vdEVhdEluaXRQYXJhbXMNCitlbmNyeXB0aW9uLmFsZ29yaXRobUNhbm5vdEVuY3J5cHREZWNyeXB0ID0gZW5jcnlwdGlvbi5hbGdvcml0aG1DYW5ub3RFbmNyeXB0RGVjcnlwdA0KK2VuY3J5cHRpb24uYWxnb3JpdGhtQ2Fubm90V3JhcFVuV3JhcCA9IGVuY3J5cHRpb24uYWxnb3JpdGhtQ2Fubm90V3JhcFVuV3JhcA0KK2VuY3J5cHRpb24uRXhwbGljaXRLZXlTaXplTWlzbWF0Y2ggPSBUaGUgeGVuYzpLZXlTaXplIGVsZW1lbnQgcmVxdWVzdHMgYSBrZXkgc2l6ZSBvZiB7MH0gYml0IGJ1dCB0aGUgYWxnb3JpdGhtIGltcGxlbWVudHMgezF9IGJpdA0KK2VuY3J5cHRpb24ubm9uY2VMb25nZXJUaGFuRGVjcnlwdGVkUGxhaW50ZXh0ID0gVGhlIGdpdmVuIG5vbmNlIGlzIGxvbmdlciB0aGFuIHRoZSBhdmFpbGFibGUgcGxhaW50ZXh0LiBJIENhbm5vdCBzdHJpcCBhd2F5IHRoaXMuDQorZW5jcnlwdGlvbi5SU0FPQUVQLmRhdGFIYXNoV3JvbmcgPSBkYXRhIGhhc2ggd3JvbmcNCitlbmNyeXB0aW9uLlJTQU9BRVAuZGF0YVN0YXJ0V3JvbmcgPSBkYXRhIHdyb25nIHN0YXJ0IHswfQ0KK2VuY3J5cHRpb24uUlNBT0FFUC5kYXRhVG9vU2hvcnQgPSBkYXRhIHRvbyBzaG9ydA0KK2VuY3J5cHRpb24uUlNBUEtDUzE1LmJsb2NrVHJ1bmNhdGVkID0gYmxvY2sgdHJ1bmNhdGVkDQorZW5jcnlwdGlvbi5SU0FQS0NTMTUubm9EYXRhSW5CbG9jayA9IG5vIGRhdGEgaW4gYmxvY2sNCitlbmNyeXB0aW9uLlJTQVBLQ1MxNS51bmtub3duQmxvY2tUeXBlID0gdW5rbm93biBibG9jayB0eXBlDQorZW5jcnlwdGlvbi5ub2tleSA9IE5vIEtleSBFbmNyeXB0aW9uIEtleSBsb2FkZWQgYW5kIGNhbm5vdCBkZXRlcm1pbmUgdXNpbmcga2V5IHJlc29sdmVycw0KK2VuZG9yc2VkLmpkazEuNC4wID0gU2luY2UgaXQgc2VlbXMgdGhhdCBub2JvZHkgcmVhZHMgb3VyIGluc3RhbGxhdGlvbiBub3Rlcywgd2UgbXVzdCBkbyBpdCBpbiB0aGUgZXhjZXB0aW9uIG1lc3NhZ2VzLiBIb3BlIHlvdSByZWFkIHRoZW0uIFlvdSBkaWQgTk9UIHVzZSB0aGUgZW5kb3JzZWQgbWVjaGFuaXNtIGZyb20gSkRLIDEuNCBwcm9wZXJseTsgbG9vayBhdCA8aHR0cDovL3htbC5hcGFjaGUub3JnL3NlY3VyaXR5L0phdmEvaW5zdGFsbGF0aW9uLmh0bWw+IGhvdyB0byBzb2x2ZSB0aGlzIHByb2JsZW0uDQorZXJyb3JNZXNzYWdlcy5JbnZhbGlkRGlnZXN0VmFsdWVFeGNlcHRpb24gPSBVbmf8bHRpZ2UgU2lnbmF0dXI6IFJlZmVyZW5jZSBWYWxpZGF0aW9uIGZlaGxnZXNjaGxhZ2VuLg0KK2Vycm9yTWVzc2FnZXMuSW52YWxpZFNpZ25hdHVyZVZhbHVlRXhjZXB0aW9uID0gVW5n/Gx0aWdlIFNpZ25hdHVyOiBDb3JlIFZhbGlkYXRpb24gZmVobGdlc2NobGFnZW4uDQorZXJyb3JNZXNzYWdlcy5JT0V4Y2VwdGlvbiA9IERhdGVpIG9kZXIgUmVzb3VyY2Uga2FubiBuaWNodCBnZWxlc2VuIHdlcmRlbi4NCitlcnJvck1lc3NhZ2VzLk1pc3NpbmdLZXlGYWlsdXJlRXhjZXB0aW9uID0gVmVyaWZpemllcmVuIGZlaGxnZXNjaGxhZ2VuLCB3ZWlsIGRlciD2ZmZlbnRsaWNoZSBTY2hs/HNzZWwgKHB1YmxpYyBrZXkpIG5pY2h0IHZlcmb8Z2JhciBpc3QuIFJlc291cmNlbiB2aWEgYWRkUmVzb3VyY2UoKSBoaW56dWb8Z2VuIHVuZCBlcm5ldXQgdmVyaWZpemllcmVuLg0KK2Vycm9yTWVzc2FnZXMuTWlzc2luZ1Jlc291cmNlRmFpbHVyZUV4Y2VwdGlvbiA9IFZlcmlmaXppZXJlbiBmZWhsZ2VzY2hsYWdlbiwgd2VpbCBSZXNvdXJjZW4gbmljaHQgdmVyZvxnYmFyIHNpbmQuIFJlc291cmNlbiB2aWEgYWRkUmVzb3VyY2UoKSBoaW56dWb8Z2VuIHVuZCBlcm5ldXQgdmVyaWZpemllcmVuLg0KK2Vycm9yTWVzc2FnZXMuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uID0gVW5iZWthbm50ZXIgQWxnb3JpdGhtdXMgezB9DQorZXJyb3JNZXNzYWdlcy5Ob3RZZXRJbXBsZW1lbnRlZEV4Y2VwdGlvbiA9IEZ1bmt0aW9uYWxpdOR0IG5vY2ggbmljaHQgaW1wbGVtZW50aWVydC4NCitlcnJvck1lc3NhZ2VzLlhNTFNpZ25hdHVyZUV4Y2VwdGlvbiA9IFZlcmlmaXppZXJlbiBhdXMgdW5iZWthbm50ZW0gR3J1bmQgZmVobGdlc2NobGFnZW4uDQorZGVjb2RpbmcuZGl2aXNpYmxlLmZvdXIgPSBJdCBzaG91bGQgYmUgZGl2aXNpYmxlIGJ5IGZvdXINCitkZWNvZGluZy5nZW5lcmFsID0gRXJyb3Igd2hpbGUgZGVjb2RpbmcNCitGaWxlS2V5U3RvcmFnZUltcGwuYWRkVG9EZWZhdWx0RnJvbVJlbW90ZU5vdEltcGxlbWVudGVkID0gTWV0aG9kIGFkZFRvRGVmYXVsdEZyb21SZW1vdGUoKSBub3QgeWV0IGltcGxlbWVudGVkLg0KK0ZpbGVLZXlTdG9yYWdlSW1wbC5Ob0NlcnQuQ29udGV4dCA9IE5vdCBmb3VuZCBzdWNoIGEgWDUwOUNlcnRpZmljYXRlIGluY2x1ZGluZyBjb250ZXh0IHswfQ0KK0ZpbGVLZXlTdG9yYWdlSW1wbC5Ob0NlcnQuSXNzTmFtZVNlck5vID0gTm90IGZvdW5kIHN1Y2ggYSBYNTA5Q2VydGlmaWNhdGUgd2l0aCBJc3N1ZXJOYW1lIHswfSBhbmQgc2VyaWFsIG51bWJlciB7MX0NCitGaWxlS2V5U3RvcmFnZUltcGwuTm9DZXJ0LlN1YmpOYW1lID0gTm90IGZvdW5kIHN1Y2ggYSBYNTA5Q2VydGlmaWNhdGUgaW5jbHVkaW5nIFN1YmplY3ROYW1lIHswfQ0KK2dlbmVyaWMuZG9udEhhdmVDb25zdHJ1Y3Rpb25FbGVtZW50ID0gSSBkbyBub3QgaGF2ZSBhIGNvbnN0cnVjdGlvbiBFbGVtZW50DQorZ2VuZXJpYy5FbXB0eU1lc3NhZ2UgPSB7MH0NCitnZW5lcmljLk5vdFlldEltcGxlbWVudGVkID0gezB9IExlaWRlciBub2NoIG5pY2h0IGltcGxlbWVudGllcnQgOy0oKA0KK2phdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiA9IFVuZ/xsdGlnZXIgU2NobPxzc2VsDQoramF2YS5zZWN1cml0eS5Ob1N1Y2hQcm92aWRlckV4Y2VwdGlvbiA9IFVuYmVrYW5udGVyIG9kZXIgbmljaHQgdW50ZXJzdPx0enRlciBQcm92aWRlcg0KK2phdmEuc2VjdXJpdHkuVW5rbm93bktleVR5cGUgPSBVbmJla2FubnRlciBvZGVyIG5pY2h0IHVudGVyc3T8dHp0ZXIgS2V5IHR5cGUgezB9DQorS2V5SW5mby5uZWVkS2V5UmVzb2x2ZXIgPSBFcyBt/HNzZW4gbWVocmVyZSBLZXlSZXNvbHZlciByZWdpc3RyaWVydCBzZWluDQorS2V5SW5mby5ub2tleSA9IEthbm4ga2VpbmVuIFNjaGz8c3NlbCBhdXMgezB9IGdld2lubmVuDQorS2V5SW5mby5ub0tleSA9IEthbm4ga2VpbmVuIPZmZmVudGxpY2hlbiBTY2hs/HNzZWwgZmluZGVuDQorS2V5SW5mby53cm9uZ051bWJlck9mT2JqZWN0ID0gQmVu9nRpZ2UgezB9IGtleU9iamVjdHMNCitLZXlJbmZvLndyb25nVXNlID0gRGllc2VzIE9iamVrdCB3aXJkIHZlcndlbmRldCwgdW0gezB9IHp1IGdld2lubmVuDQora2V5UmVzb2x2ZXIuYWxyZWFkeVJlZ2lzdGVyZWQgPSBEaWUgS2xhc3NlIHsxfSB3dXJkZSBiZXJlaXRzIHJlZ2lzdHJpZXJ0IGb8ciB7MH0NCitLZXlSZXNvbHZlci5uZWVkU3RvcmFnZVJlc29sdmVyID0gTmVlZCBhIFN0b3JhZ2VSZXNvbHZlciB0byByZXRyaWV2ZSBhIENlcnRpZmljYXRlIGZyb20gYSB7MH0NCitLZXlSZXNvdmVyU3BpSW1wbC5jYW5ub3RHZXRDZXJ0ID0gQ2Fubm90IGdldCB0aGUgQ2VydGlmaWNhdGUgdGhhdCBpbmNsdWRlIG9yIGluIHsxfSBpbiBpbXBsZW1lbnQgY2xhc3MgezB9DQorS2V5UmVzb3ZlclNwaUltcGwuZWxlbWVudEdlbmVyYXRpb24gPSBDYW5ub3QgbWFrZSB7MX0gZWxlbWVudCBpbiBpbXBsZW1lbnQgY2xhc3MgezB9DQorS2V5UmVzb3ZlclNwaUltcGwuZ2V0UG91YmxpY0tleSA9IENhbm5vdCBnZXQgdGhlIHB1YmxpYyBrZXkgZnJvbSBpbXBsZW1lbnQgY2xhc3MgezB9DQorS2V5UmVzb3ZlclNwaUltcGwuSW52YWxpZEVsZW1lbnQgPSBDYW5ub3Qgc2V0ICgyKSBFbGVtZW50IGluIGltcGxlbWVudCBjbGFzcyB7MH0NCitLZXlSZXNvdmVyU3BpSW1wbC5rZXlTdG9yZSA9IEtleVN0b3JhZ2UgZXJyb3IgaW4gaW1wbGVtZW50IGNsYXNzIHswfQ0KK0tleVJlc292ZXJTcGlJbXBsLm5lZWQuRWxlbWVudCA9IHsxfSB0eXBlIG9mIEVsZW1lbnQgaXMgbmVlZGVkIGluIGltcGxlbWVudCBjbGFzcyB7MH0NCitLZXlSZXNvdmVyU3BpSW1wbC53cm9uZ0NSTEVsZW1lbnQgPSBDYW5ub3QgbWFrZSBDUkwgZnJvbSB7MX0gaW4gaW1wbGVtZW50IGNsYXNzIHswfQ0KK0tleVJlc292ZXJTcGlJbXBsLndyb25nS2V5T2JqZWN0ID0gIE5lZWQgezF9IHR5cGUgb2YgS2V5T2JqZWN0IGZvciBnZW5lcmF0aW9uIEVsZW1lbnQgaW4gaW1wbGVtZW50IGNsYXNzezB9DQorS2V5UmVzb3ZlclNwaUltcGwud3JvbmdOdW1iZXJPZk9iamVjdCA9IE5lZWQgezF9IGtleU9iamVjdCBpbiBpbXBsZW1lbnQgY2xhc3MgezB9DQorS2V5U3RvcmUuYWxyZWFkeVJlZ2lzdGVyZWQgPSB7MH0gQ2xhc3MgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkIGZvciB7MX0NCitLZXlTdG9yZS5yZWdpc3RlciA9IHsxfSB0eXBlIGNsYXNzIHJlZ2lzdGVyIGVycm9yICBpbiBjbGFzcyB7MH0NCitLZXlTdG9yZS5yZWdpc3RlclN0b3JlLnJlZ2lzdGVyID0gUmVnaXN0ZXJhdGlvbiBlcnJvciBmb3IgdHlwZSB7MH0NCitLZXlWYWx1ZS5JbGxlZ2FsQXJndW1lbnQgPSBDYW5ub3QgY3JlYXRlIGEgezB9IGZyb20gezF9DQorbmFtZXNwYWNlUHJlZml4QWxyZWFkeVVzZWRCeU90aGVyVVJJID0gTmFtZXNwYWNlIHswfSBhbHJlYWR5IHVzZWQgYnkgb3RoZXIgVVJJIHsxfQ0KK25vdFlldEluaXRpYWxpemVkID0gRGFzIE1vZHVsIHswfSBpc3Qgbm9jaCBuaWNodCBpbml0aWFsaXNpZXJ0DQorcHJlZml4LkFscmVhZHlBc3NpZ25lZCA9IFNpZSBiaW5kZW4gZGVuIFByZWZpeCB7MH0gYW4gZGVuIE5hbWVzcGFjZSB7MX0gYWJlciBlciBpc3QgYmVyZWl0cyBhbiB7Mn0genVnZXdpZXNlbg0KK3NpZ25hdHVyZS5DYW5vbmljYWxpemVyLlVua25vd25DYW5vbmljYWxpemVyID0gVW5iZWthbm50ZXIgQ2Fub25pY2FsaXplci4gS2VpbiBIYW5kbGVyIGluc3RhbGxpZXJ0IGb8ciBVUkkgezB9DQorc2lnbmF0dXJlLkRTQS5pbnZhbGlkRm9ybWF0ID0gSW52YWxpZCBBU04uMSBlbmNvZGluZyBvZiB0aGUgRFNBIHNpZ25hdHVyZQ0KK3NpZ25hdHVyZS5HZW5lcmF0aW9uLnNpZ25CZWZvcmVHZXRWYWx1ZSA9IFlvdSBoYXZlIHRvIFhNTFNpZ25hdHVyZS5zaWduKGphdmEuc2VjdXJpdHkuUHJpdmF0ZUtleSkgZmlyc3QNCitzaWduYXR1cmUuc2lnbmF0dXJlUHJvcGVydHlIYXNOb1RhcmdldCA9IERhcyBUYXJnZXQgQXR0cmlidXQgZGVyIFNpZ25hdHVyZVByb3BlcnR5IG11c3MgZ2VzZXR6dCBzZWluDQorc2lnbmF0dXJlLlRyYW5zZm9ybS5FcnJvckR1cmluZ1RyYW5zZm9ybSA9IFfkaHJlbmQgZGVyIFRyYW5zZm9ybWF0aW9uIHswfSB0cmF0IGVpbmUgezF9IGF1Zi4NCitzaWduYXR1cmUuVHJhbnNmb3JtLk5vdFlldEltcGxlbWVudGVkID0gVHJhbnNmb3JtIHswfSBub2NoIG5pY2h0IGltcGxlbWVudGllcnQNCitzaWduYXR1cmUuVHJhbnNmb3JtLk51bGxQb2ludGVyVHJhbnNmb3JtID0gTnVsbCBwb2ludGVyIGFscyBVUkkg/GJlcmdlYmVuLiBQcm9ncmFtbWllcmZlaGxlcj8NCitzaWduYXR1cmUuVHJhbnNmb3JtLlVua25vd25UcmFuc2Zvcm0gPSBVbmJla2FubnRlIFRyYW5zZm9ybWF0aW9uLiBLZWluIEhhbmRsZXIgaW5zdGFsbGllcnQgZvxyIFVSSSB7MH0NCitzaWduYXR1cmUuVXRpbC5CaWdudW1Ob25Qb3NpdGl2ZSA9IGJpZ0ludGVnZXIuc2lnbnVtKCkgbXXfIHBvc2l0aXYgc2Vpbg0KK3NpZ25hdHVyZS5VdGlsLk5vblRleHROb2RlID0gS2VpbiBUZXh0IE5vZGUNCitzaWduYXR1cmUuVXRpbC5Ub29NYW55Q2hpbGRzID0gWnUgdmllbGUgQ2hpbGQtRWxlbWVudGUgdm9tIFR5cGUgezB9IGluIHsxfQ0KK3NpZ25hdHVyZS5WZXJpZmljYXRpb24uY2VydGlmaWNhdGVFcnJvciA9IFplcnRpZmlrYXRzZmVobGVyDQorc2lnbmF0dXJlLlZlcmlmaWNhdGlvbi5JbmRleE91dE9mQm91bmRzID0gSW5kZXggezB9IGlsbGVnYWwuIFdlIG9ubHkgaGF2ZSB7MX0gUmVmZXJlbmNlcw0KK3NpZ25hdHVyZS5WZXJpZmljYXRpb24uaW50ZXJuYWxFcnJvciA9IEludGVybmVyIEZlaGxlcg0KK3NpZ25hdHVyZS5WZXJpZmljYXRpb24uSW52YWxpZERpZ2VzdE9yUmVmZXJlbmNlID0gVW5n/Gx0aWdlciBEaWdlc3QgV2VydCBvZGVyIFJlZmVyZW5jZSBFbGVtZW50IHswfQ0KK3NpZ25hdHVyZS5WZXJpZmljYXRpb24ua2V5U3RvcmUgPSDWZmZuZW4gZGVzIEtleVN0b3JlIGZlaGxnZXNjaGxhZ2VuDQorc2lnbmF0dXJlLlZlcmlmaWNhdGlvbi5NaXNzaW5nSUQgPSBDYW5ub3QgcmVzb2x2ZSBlbGVtZW50IHdpdGggSUQgezB9DQorc2lnbmF0dXJlLlZlcmlmaWNhdGlvbi5NaXNzaW5nUmVzb3VyY2VzID0gS2FubiBkaWUgZXh0ZXJuZSBSZXNvdXJjZSB7MH0gbmljaHQgYXVmbPZzZW4NCitzaWduYXR1cmUuVmVyaWZpY2F0aW9uLk5vU2lnbmF0dXJlRWxlbWVudCA9IElucHV0IERva3VtZW50IGVudGjkbHQga2VpbiB7MH0gRWxlbWVudCBtaXQgZGVtIE5hbWVzcGFjZSB7MX0NCitzaWduYXR1cmUuVmVyaWZpY2F0aW9uLlJlZmVyZW5jZS5Ob0lucHV0ID0gRGllIFJlZmVyZW5jZSBm/HIgZGVuIFVSSSB7MH0gaGF0IGtlaW5lbiBYTUxTaWduYXR1cmVJbnB1dCBlcmhhbHRlbi4NCitzaWduYXR1cmUuVmVyaWZpY2F0aW9uLlNpZ25hdHVyZUVycm9yID0gU2lnbmF0dXIgRmVobGVyDQorc2lnbmF0dXJlLlhNTFNpZ25hdHVyZUlucHV0Lk1pc3NpbmdDb25zdHVjdG9yID0gS2FubiBhdXMgZGVyIEtsYXNzZSB7MH0ga2VpbmVuIFhNTFNpZ25hdHVyZUlucHV0IGVyemV1Z2VuDQorc2lnbmF0dXJlLlhNTFNpZ25hdHVyZUlucHV0LlNlcmlhbGl6ZURPTSA9IElucHV0IG1pdCBlaW5lbSBET00gRG9rdW1lbnQgaW5pdGlhbGlzaWVydC4gTXXfIG1pdCBDMTROIHNlcmlhbGlzaWVydCB3ZXJkZW4NCit0cmFuc2Zvcm0uSW5pdC5JbGxlZ2FsQ29udGV4dEFyZ3VtZW50ID0gVW56dWzkc3NpZ2VzIEtvbnRleHQgQXJndW1lbnQgZGVyIEtsYXNzZSB7MH0uIE11c3MgU3RyaW5nLCBvcmcudzNjLmRvbS5Ob2RlTGlzdCBvZGVyIGphdmEuaW8uSW5wdXRTdHJlYW0gc2Vpbi4NCit0cmFuc2Zvcm0uaW5pdC5Ob3RJbml0aWFsaXplZCA9DQordHJhbnNmb3JtLmluaXQud3JvbmdVUkkgPSBJbml0aWFsaXNpZXJ0IG1pdCBkZW0gZmFsc2NoZW4gVVJJLiBEYXMgc29sbHRlIG5pZSBwYXNzaWVyZW4uIERpZSBUcmFuc2Zvcm1hdGlvbiBpbXBsZW1lbnRpZXJ0IHswfSBhYmVyIHsxfSB3dXJkZSBiZWkgZGVyIEluc3RhbnRpaWVydW5nIHZlcndlbmRldC4NCit1dGlscy5CYXNlNjQuSWxsZWdhbEJpdGxlbmd0aCA9IFVuZ/xsdGlnZSBCeXRlbORuZ2U7IE11c3MgZWluIHZpZWxmYWNoZXMgdm9uIDQgc2Vpbg0KK3V0aWxzLnJlc29sdmVyLm5vQ2xhc3MgPSBDb3VsZCBub3QgZmluZCBhIHJlc29sdmVyIGZvciBVUkkgezB9IGFuZCBCYXNlIHsxfQ0KK3htbC5Xcm9uZ0NvbnRlbnQgPSBLYW5uIHswfSBuaWNodCBmaW5kZW4gaW4gezF9DQoreG1sLldyb25nRWxlbWVudCA9IEthbm4ga2VpbiB7MH0gYXVzIGVpbmVtIHsxfSBFbGVtZW50IGVyemV1Z2VuDQoreHBhdGguZnVuY0hlcmUuZG9jdW1lbnRzRGlmZmVyID0gRGVyIFhQYXRoIGlzdCBuaWNodCBpbSBzZWxiZW4gRG9rdW1lbnQgd2llIGRlciBLb250ZXh0IE5vZGUNCit4cGF0aC5mdW5jSGVyZS5ub1hQYXRoQ29udGV4dCA9IFRyeSB0byBldmFsdWF0ZSBhbiBYUGF0aCB3aGljaCB1c2VzIHRoZSBoZXJlKCkgZnVuY3Rpb24gYnV0IFhQYXRoIGlzIG5vdCBpbnNpZGUgYW4gZHM6WFBhdGggRWxlbWVudC4gWFBhdGggd2FzIDogezB9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Jlc291cmNlL3htbHNlY3VyaXR5X2VuLnByb3BlcnRpZXMgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvcmVzb3VyY2UveG1sc2VjdXJpdHlfZW4ucHJvcGVydGllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjc1ZmZkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Jlc291cmNlL3htbHNlY3VyaXR5X2VuLnByb3BlcnRpZXMKQEAgLTAsMCArMSwxMjUgQEAKK2FsZ29yaXRobS5hbHJlYWR5UmVnaXN0ZXJlZCA9IFVSSSB7MH0gYWxyZWFkeSBhc3NpZ25lZCB0byBjbGFzcyB7MX0NCithbGdvcml0aG0uY2xhc3NEb2VzTm90RXhpc3QgPSBDYW5ub3QgcmVnaXN0ZXIgVVJJIHswfSB0byBjbGFzcyB7MX0gYmVjYXVzZSB0aGlzIGNsYXNzIGRvZXMgbm90IGV4aXN0IGluIENMQVNTUEFUSA0KK2FsZ29yaXRobS5DbGFzc0RvZXNOb3RFeGlzdCA9IENsYXNzIHswfSBkb2VzIG5vdCBleGlzdA0KK2FsZ29yaXRobS5leHRlbmRzV3JvbmdDbGFzcyA9IENhbm5vdCByZWdpc3RlciBVUkkgezB9IHRvIGNsYXNzIHsxfSBiZWNhdXNlIGl0IGRvZXMgbm90IGV4dGVuZCB7Mn0NCithbGdvcml0aG1zLkNhbm5vdFVzZUFsZ29yaXRobVBhcmFtZXRlclNwZWNPbkRTQSA9IFNvcnJ5LCBidXQgeW91IGNhbm5vdCB1c2UgYSBBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIG9iamVjdCBmb3IgY3JlYXRpbmcgRFNBIHNpZ25hdHVyZXMuDQorYWxnb3JpdGhtcy5DYW5ub3RVc2VBbGdvcml0aG1QYXJhbWV0ZXJTcGVjT25SU0EgPSBTb3JyeSwgYnV0IHlvdSBjYW5ub3QgdXNlIGEgQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyBvYmplY3QgZm9yIGNyZWF0aW5nIFJTQSBzaWduYXR1cmVzLg0KK2FsZ29yaXRobXMuQ2Fubm90VXNlU2VjdXJlUmFuZG9tT25NQUMgPSBTb3JyeSwgYnV0IHlvdSBjYW5ub3QgdXNlIGEgU2VjdXJlUmFuZG9tIG9iamVjdCBmb3IgY3JlYXRpbmcgTUFDcy4NCithbGdvcml0aG1zLkhNQUNPdXRwdXRMZW5ndGhNaW4gPSBITUFDT3V0cHV0TGVuZ3RoIG11c3Qgbm90IGJlIGxlc3MgdGhhbiB7MH0KK2FsZ29yaXRobXMuSE1BQ091dHB1dExlbmd0aE9ubHlGb3JITUFDID0gQSBITUFDT3V0cHV0TGVuZ3RoIGNhbiBvbmx5IGJlIHNwZWNpZmllZCBmb3IgSE1BQyBpbnRlZ3JpdHkgYWxnb3JpdGhtcw0KK2FsZ29yaXRobXMuTm9TdWNoQWxnb3JpdGhtID0gVGhlIHJlcXVlc3RlZCBhbGdvcml0aG0gezB9IGRvZXMgbm90IGV4aXN0LiBPcmlnaW5hbCBNZXNzYWdlIHdhczogezF9DQorYWxnb3JpdGhtcy5Ob1N1Y2hNYXAgPSBUaGUgYWxnb3JpdGhtIFVSSSAiezB9IiBjb3VsZCBub3QgYmUgbWFwcGVkIHRvIGEgSkNFIGFsZ29yaXRobQ0KK2FsZ29yaXRobXMuTm9TdWNoUHJvdmlkZXIgPSBUaGUgc3BlY2lmaWVkIFByb3ZpZGVyIHswfSBkb2VzIG5vdCBleGlzdC4gT3JpZ2luYWwgTWVzc2FnZSB3YXM6IHsxfQ0KK2FsZ29yaXRobXMub3BlcmF0aW9uT25seVZlcmlmaWNhdGlvbiA9IEEgcHVibGljIGtleSBjYW4gb25seSB1c2VkIGZvciB2ZXJpZmljYXRpb24gb2YgYSBzaWduYXR1cmUuDQorYWxnb3JpdGhtcy5Xcm9uZ0tleUZvclRoaXNPcGVyYXRpb24gPSBTb3JyeSwgeW91IHN1cHBsaWVkIHRoZSB3cm9uZyBrZXkgdHlwZSBmb3IgdGhpcyBvcGVyYXRpb24hIFlvdSBzdXBwbGllZCBhIHswfSBidXQgYSB7MX0gaXMgbmVlZGVkLg0KK2F0dHJpYnV0ZVZhbHVlSWxsZWdhbCA9IFRoZSBhdHRyaWJ1dGUgezB9IGhhcyB2YWx1ZSB7MX0gYnV0IG11c3QgYmUgezJ9DQorYzE0bi5DYW5vbmljYWxpemVyLkV4Y2VwdGlvbiA9IEV4Y2VwdGlvbiBkdXJpbmcgQ2Fub25pY2FsaXphdGlvbjogIE9yaWdpbmFsIE1lc3NhZ2Ugd2FzIHswfQ0KK2MxNG4uQ2Fub25pY2FsaXplci5JbGxlZ2FsTm9kZSA9IElsbGVnYWwgbm9kZSB0eXBlIHswfSwgbm9kZSBuYW1lIHdhcyB7MX0NCitjMTRuLkNhbm9uaWNhbGl6ZXIuTm9TdWNoQ2Fub25pY2FsaXplciA9IE5vIGNhbm9uaWNhbGl6ZXIgZm91bmQgd2l0aCBVUkkgezB9DQorYzE0bi5DYW5vbmljYWxpemVyLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24gPSBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIGR1cmluZyBDYW5vbmljYWxpemF0aW9uOiAgT3JpZ2luYWwgTWVzc2FnZSB3YXMgezB9DQorYzE0bi5DYW5vbmljYWxpemVyLlJlbGF0aXZlTmFtZXNwYWNlID0gRWxlbWVudCB7MH0gaGFzIGEgcmVsYXRpdmUgbmFtZXNwYWNlOiB7MX09InsyfSINCitjMTRuLkNhbm9uaWNhbGl6ZXIuU0FYRXhjZXB0aW9uID0gU0FYRXhjZXB0aW9uIGR1cmluZyBDYW5vbmljYWxpemF0aW9uOiAgT3JpZ2luYWwgTWVzc2FnZSB3YXMgezB9DQorYzE0bi5DYW5vbmljYWxpemVyLlRyYXZlcnNhbE5vdFN1cHBvcnRlZCA9IFRoaXMgRE9NIGRvY3VtZW50IGRvZXMgbm90IHN1cHBvcnQgVHJhdmVyc2FsIHswfQ0KK2MxNG4uQ2Fub25pY2FsaXplci5VbnN1cHBvcnRlZEVuY29kaW5nID0gVW5zdXBwb3J0ZWQgZW5jb2RpbmcgezB9DQorYzE0bi5DYW5vbmljYWxpemVyLlVuc3VwcG9ydGVkT3BlcmF0aW9uID0gVGhpcyBjYW5vbmljYWxpemVyIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24NCitjMTRuLlhNTFV0aWxzLmNpcmN1bXZlbnRCdWcyNjUwZm9yZ290dGVuID0gVGhlIHRyZWUgaGFzIG5vdCBiZWVuIHByZXBhcmVkIGZvciBjYW5vbmljYWxpemF0aW9uIHVzaW5nIFhNTFV0aWxzI2NpcmN1bXZlbnRCdWcyNjUwKERvY3VtZW50KQ0KK2NlcnRpZmljYXRlLm5vU2tpLmxvd1ZlcnNpb24gPSBDZXJ0aWZpY2F0ZSBjYW5ub3QgY29udGFpbiBhIFN1YmplY3RLZXlJZGVudGlmaWVyIGJlY2F1c2UgaXQgaXMgb25seSBYNTA5dnswfQ0KK2NlcnRpZmljYXRlLm5vU2tpLm5vdE9jdGV0U3RyaW5nID0gQ2VydGlmaWNhdGVzIFN1YmplY3RLZXlJZGVudGlmaWVyIGlzIG5vdCBhIE9jdGV0U3RyaW5nDQorY2VydGlmaWNhdGUubm9Ta2kubnVsbCA9IENlcnRpZmljYXRlIGRvZXMgbm90IGNvbnRhaW4gYSBTdWJqZWN0S2V5SWRlbnRpZmllcg0KK2RlZmF1bHROYW1lc3BhY2VDYW5ub3RCZVNldEhlcmUgPSBEZWZhdWx0IG5hbWVzcGFjZSBjYW5ub3QgYmUgc2V0IGhlcmUNCitFbGVtZW50UHJveHkubnVsbEVsZW1lbnQgPSBDYW5ub3QgY3JlYXRlIGFuIEVsZW1lbnRQcm94eSBmcm9tIGEgbnVsbCBhcmd1bWVudA0KK2VtcHR5ID0gezB9DQorZW5jcnlwdGlvbi5hbGdvcml0aG1DYW5ub3RCZVVzZWRGb3JFbmNyeXB0ZWREYXRhID0gZW5jcnlwdGlvbi5hbGdvcml0aG1DYW5ub3RCZVVzZWRGb3JFbmNyeXB0ZWREYXRhIHswfQ0KK2VuY3J5cHRpb24uYWxnb3JpdGhtQ2Fubm90RWF0SW5pdFBhcmFtcyA9IGVuY3J5cHRpb24uYWxnb3JpdGhtQ2Fubm90RWF0SW5pdFBhcmFtcw0KK2VuY3J5cHRpb24uYWxnb3JpdGhtQ2Fubm90RW5jcnlwdERlY3J5cHQgPSBlbmNyeXB0aW9uLmFsZ29yaXRobUNhbm5vdEVuY3J5cHREZWNyeXB0DQorZW5jcnlwdGlvbi5hbGdvcml0aG1DYW5ub3RXcmFwVW5XcmFwID0gZW5jcnlwdGlvbi5hbGdvcml0aG1DYW5ub3RXcmFwVW5XcmFwDQorZW5jcnlwdGlvbi5FeHBsaWNpdEtleVNpemVNaXNtYXRjaCA9IFRoZSB4ZW5jOktleVNpemUgZWxlbWVudCByZXF1ZXN0cyBhIGtleSBzaXplIG9mIHswfSBiaXQgYnV0IHRoZSBhbGdvcml0aG0gaW1wbGVtZW50cyB7MX0gYml0DQorZW5jcnlwdGlvbi5ub25jZUxvbmdlclRoYW5EZWNyeXB0ZWRQbGFpbnRleHQgPSBUaGUgZ2l2ZW4gbm9uY2UgaXMgbG9uZ2VyIHRoYW4gdGhlIGF2YWlsYWJsZSBwbGFpbnRleHQuIEkgQ2Fubm90IHN0cmlwIGF3YXkgdGhpcy4NCitlbmNyeXB0aW9uLlJTQU9BRVAuZGF0YUhhc2hXcm9uZyA9IGRhdGEgaGFzaCB3cm9uZw0KK2VuY3J5cHRpb24uUlNBT0FFUC5kYXRhU3RhcnRXcm9uZyA9IGRhdGEgd3Jvbmcgc3RhcnQgezB9DQorZW5jcnlwdGlvbi5SU0FPQUVQLmRhdGFUb29TaG9ydCA9IGRhdGEgdG9vIHNob3J0DQorZW5jcnlwdGlvbi5SU0FQS0NTMTUuYmxvY2tUcnVuY2F0ZWQgPSBibG9jayB0cnVuY2F0ZWQNCitlbmNyeXB0aW9uLlJTQVBLQ1MxNS5ub0RhdGFJbkJsb2NrID0gbm8gZGF0YSBpbiBibG9jaw0KK2VuY3J5cHRpb24uUlNBUEtDUzE1LnVua25vd25CbG9ja1R5cGUgPSB1bmtub3duIGJsb2NrIHR5cGUNCitlbmNyeXB0aW9uLm5va2V5ID0gTm8gS2V5IEVuY3J5cHRpb24gS2V5IGxvYWRlZCBhbmQgY2Fubm90IGRldGVybWluZSB1c2luZyBrZXkgcmVzb2x2ZXJzDQorZW5kb3JzZWQuamRrMS40LjAgPSBTaW5jZSBpdCBzZWVtcyB0aGF0IG5vYm9keSByZWFkcyBvdXIgaW5zdGFsbGF0aW9uIG5vdGVzLCB3ZSBtdXN0IGRvIGl0IGluIHRoZSBleGNlcHRpb24gbWVzc2FnZXMuIEhvcGUgeW91IHJlYWQgdGhlbS4gWW91IGRpZCBOT1QgdXNlIHRoZSBlbmRvcnNlZCBtZWNoYW5pc20gZnJvbSBKREsgMS40IHByb3Blcmx5OyBsb29rIGF0IDxodHRwOi8veG1sLmFwYWNoZS5vcmcvc2VjdXJpdHkvSmF2YS9pbnN0YWxsYXRpb24uaHRtbD4gaG93IHRvIHNvbHZlIHRoaXMgcHJvYmxlbS4NCitlcnJvck1lc3NhZ2VzLkludmFsaWREaWdlc3RWYWx1ZUV4Y2VwdGlvbiA9IElOVkFMSUQgc2lnbmF0dXJlIC0tIGNoZWNrIHJlZmVyZW5jZSByZXNvbHV0aW9uLg0KK2Vycm9yTWVzc2FnZXMuSW52YWxpZFNpZ25hdHVyZVZhbHVlRXhjZXB0aW9uID0gSU5WQUxJRCBzaWduYXR1cmUgLS0gY29yZSB2YWxpZGF0aW9uIGZhaWxlZC4NCitlcnJvck1lc3NhZ2VzLklPRXhjZXB0aW9uID0gT3RoZXIgZmlsZSBJL08gYW5kIHNpbWlsYXIgZXhjZXB0aW9ucy4NCitlcnJvck1lc3NhZ2VzLk1pc3NpbmdLZXlGYWlsdXJlRXhjZXB0aW9uID0gQ2Fubm90IHZlcmlmeSBiZWNhdXNlIG9mIG1pc3NpbmcgcHVibGljIGtleS4gUHJvdmlkZSBpdCB2aWEgYWRkUmVzb3VyY2UgYW5kIHRyeSBhZ2Fpbi4NCitlcnJvck1lc3NhZ2VzLk1pc3NpbmdSZXNvdXJjZUZhaWx1cmVFeGNlcHRpb24gPSBDYW5ub3QgdmVyaWZ5IGJlY2F1c2Ugb2YgdW5yZXNvbHZlZCByZWZlcmVuY2VzLiBQcm92aWRlIGl0IHZpYSBhZGRSZXNvdXJjZSBhbmQgdHJ5IGFnYWluLg0KK2Vycm9yTWVzc2FnZXMuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uID0gVW5rbm93biBBbGdvcml0aG0gezB9DQorZXJyb3JNZXNzYWdlcy5Ob3RZZXRJbXBsZW1lbnRlZEV4Y2VwdGlvbiA9IEZ1bmN0aW9uYWxpdHkgbm90IHlldCB0aGVyZS4NCitlcnJvck1lc3NhZ2VzLlhNTFNpZ25hdHVyZUV4Y2VwdGlvbiA9IFZlcmlmaWNhdGlvbiBmYWlsZWQgZm9yIHNvbWUgb3RoZXIgcmVhc29uLg0KK2RlY29kaW5nLmRpdmlzaWJsZS5mb3VyID0gSXQgc2hvdWxkIGJlIGRpdmlzaWJsZSBieSBmb3VyDQorZGVjb2RpbmcuZ2VuZXJhbCA9IEVycm9yIHdoaWxlIGRlY29kaW5nDQorRmlsZUtleVN0b3JhZ2VJbXBsLmFkZFRvRGVmYXVsdEZyb21SZW1vdGVOb3RJbXBsZW1lbnRlZCA9IE1ldGhvZCBhZGRUb0RlZmF1bHRGcm9tUmVtb3RlKCkgbm90IHlldCBpbXBsZW1lbnRlZC4NCitGaWxlS2V5U3RvcmFnZUltcGwuTm9DZXJ0LkNvbnRleHQgPSBOb3QgZm91bmQgc3VjaCBhIFg1MDlDZXJ0aWZpY2F0ZSBpbmNsdWRpbmcgY29udGV4dCB7MH0NCitGaWxlS2V5U3RvcmFnZUltcGwuTm9DZXJ0Lklzc05hbWVTZXJObyA9IE5vdCBmb3VuZCBzdWNoIGEgWDUwOUNlcnRpZmljYXRlIHdpdGggSXNzdWVyTmFtZSB7MH0gYW5kIHNlcmlhbCBudW1iZXIgezF9DQorRmlsZUtleVN0b3JhZ2VJbXBsLk5vQ2VydC5TdWJqTmFtZSA9IE5vdCBmb3VuZCBzdWNoIGEgWDUwOUNlcnRpZmljYXRlIGluY2x1ZGluZyBTdWJqZWN0TmFtZSB7MH0NCitnZW5lcmljLmRvbnRIYXZlQ29uc3RydWN0aW9uRWxlbWVudCA9IEkgZG8gbm90IGhhdmUgYSBjb25zdHJ1Y3Rpb24gRWxlbWVudA0KK2dlbmVyaWMuRW1wdHlNZXNzYWdlID0gezB9DQorZ2VuZXJpYy5Ob3RZZXRJbXBsZW1lbnRlZCA9IHswfSBOb3QgWUVUIGltcGxlbWVudGVkIDstKCgNCitqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24gPSBJbnZhbGlkIGtleQ0KK2phdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24gPSBVbmtub3duIG9yIHVuc3VwcG9ydGVkIHByb3ZpZGVyDQoramF2YS5zZWN1cml0eS5Vbmtub3duS2V5VHlwZSA9IFVua25vd24gb3IgdW5zdXBwb3J0ZWQga2V5IHR5cGUgezB9DQorS2V5SW5mby5uZWVkS2V5UmVzb2x2ZXIgPSBNb3JlIHRoYW4gb25lIGtleVJlc292bGVyIGhhdmUgdG8gYmUgcmVnaXN0ZXJlZA0KK0tleUluZm8ubm9rZXkgPSBDYW5ub3QgZ2V0IGtleSBmcm9tIHswfQ0KK0tleUluZm8ubm9LZXkgPSBDYW5ub3QgZ2V0IHRoZSBwdWJsaWMga2V5DQorS2V5SW5mby53cm9uZ051bWJlck9mT2JqZWN0ID0gTmVlZCB7MH0ga2V5T2JqZWN0cw0KK0tleUluZm8ud3JvbmdVc2UgPSBUaGlzIG9iamVjdCB3YXMgbWFkZSBmb3IgZ2V0dGluZyB7MH0NCitrZXlSZXNvbHZlci5hbHJlYWR5UmVnaXN0ZXJlZCA9IHsxfSBjbGFzcyBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQgZm9yIHswfQ0KK0tleVJlc29sdmVyLm5lZWRTdG9yYWdlUmVzb2x2ZXIgPSBOZWVkIGEgU3RvcmFnZVJlc29sdmVyIHRvIHJldHJpZXZlIGEgQ2VydGlmaWNhdGUgZnJvbSBhIHswfQ0KK0tleVJlc292ZXJTcGlJbXBsLmNhbm5vdEdldENlcnQgPSBDYW5ub3QgZ2V0IHRoZSBDZXJ0aWZpY2F0ZSB0aGF0IGluY2x1ZGUgb3IgaW4gezF9IGluIGltcGxlbWVudCBjbGFzcyB7MH0NCitLZXlSZXNvdmVyU3BpSW1wbC5lbGVtZW50R2VuZXJhdGlvbiA9IENhbm5vdCBtYWtlIHsxfSBlbGVtZW50IGluIGltcGxlbWVudCBjbGFzcyB7MH0NCitLZXlSZXNvdmVyU3BpSW1wbC5nZXRQb3VibGljS2V5ID0gQ2Fubm90IGdldCB0aGUgcHVibGljIGtleSBmcm9tIGltcGxlbWVudCBjbGFzcyB7MH0NCitLZXlSZXNvdmVyU3BpSW1wbC5JbnZhbGlkRWxlbWVudCA9IENhbm5vdCBzZXQgKDIpIEVsZW1lbnQgaW4gaW1wbGVtZW50IGNsYXNzIHswfQ0KK0tleVJlc292ZXJTcGlJbXBsLmtleVN0b3JlID0gS2V5U3RvcmFnZSBlcnJvciBpbiBpbXBsZW1lbnQgY2xhc3MgezB9DQorS2V5UmVzb3ZlclNwaUltcGwubmVlZC5FbGVtZW50ID0gezF9IHR5cGUgb2YgRWxlbWVudCBpcyBuZWVkZWQgaW4gaW1wbGVtZW50IGNsYXNzIHswfQ0KK0tleVJlc292ZXJTcGlJbXBsLndyb25nQ1JMRWxlbWVudCA9IENhbm5vdCBtYWtlIENSTCBmcm9tIHsxfSBpbiBpbXBsZW1lbnQgY2xhc3MgezB9DQorS2V5UmVzb3ZlclNwaUltcGwud3JvbmdLZXlPYmplY3QgPSAgTmVlZCB7MX0gdHlwZSBvZiBLZXlPYmplY3QgZm9yIGdlbmVyYXRpb24gRWxlbWVudCBpbiBpbXBsZW1lbnQgY2xhc3N7MH0NCitLZXlSZXNvdmVyU3BpSW1wbC53cm9uZ051bWJlck9mT2JqZWN0ID0gTmVlZCB7MX0ga2V5T2JqZWN0IGluIGltcGxlbWVudCBjbGFzcyB7MH0NCitLZXlTdG9yZS5hbHJlYWR5UmVnaXN0ZXJlZCA9IHswfSBDbGFzcyBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQgZm9yIHsxfQ0KK0tleVN0b3JlLnJlZ2lzdGVyID0gezF9IHR5cGUgY2xhc3MgcmVnaXN0ZXIgZXJyb3IgIGluIGNsYXNzIHswfQ0KK0tleVN0b3JlLnJlZ2lzdGVyU3RvcmUucmVnaXN0ZXIgPSBSZWdpc3RlcmF0aW9uIGVycm9yIGZvciB0eXBlIHswfQ0KK0tleVZhbHVlLklsbGVnYWxBcmd1bWVudCA9IENhbm5vdCBjcmVhdGUgYSB7MH0gZnJvbSB7MX0NCituYW1lc3BhY2VQcmVmaXhBbHJlYWR5VXNlZEJ5T3RoZXJVUkkgPSBOYW1lc3BhY2UgcHJlZml4IHswfSBhbHJlYWR5IHVzZWQgYnkgb3RoZXIgVVJJIHsxfQ0KK25vdFlldEluaXRpYWxpemVkID0gVGhlIG1vZHVsZSB7MH0gaXMgbm90IHlldCBpbml0aWFsaXplZA0KK3ByZWZpeC5BbHJlYWR5QXNzaWduZWQgPSBZb3Ugd2FudCB0byBhc3NpZ24gezB9IGFzIHByZWZpeCBmb3IgbmFtZXNwYWNlIHsxfSBidXQgaXQgaXMgYWxyZWFkeSBhc3NpZ25lZCBmb3IgezJ9DQorc2lnbmF0dXJlLkNhbm9uaWNhbGl6ZXIuVW5rbm93bkNhbm9uaWNhbGl6ZXIgPSBVbmtub3duIGNhbm9uaWNhbGl6ZXIuIE5vIGhhbmRsZXIgaW5zdGFsbGVkIGZvciBVUkkgezB9DQorc2lnbmF0dXJlLkRTQS5pbnZhbGlkRm9ybWF0ID0gSW52YWxpZCBBU04uMSBlbmNvZGluZyBvZiB0aGUgRFNBIHNpZ25hdHVyZQ0KK3NpZ25hdHVyZS5HZW5lcmF0aW9uLnNpZ25CZWZvcmVHZXRWYWx1ZSA9IFlvdSBoYXZlIHRvIFhNTFNpZ25hdHVyZS5zaWduKGphdmEuc2VjdXJpdHkuUHJpdmF0ZUtleSkgZmlyc3QNCitzaWduYXR1cmUuc2lnbmF0dXJlUHJvcGVydHlIYXNOb1RhcmdldCA9IFRoZSBUYXJnZXQgYXR0cmlidXRlIG9mIHRoZSBTaWduYXR1cmVQcm9wZXJ0eSBtdXN0IGJlIHNldA0KK3NpZ25hdHVyZS5UcmFuc2Zvcm0uRXJyb3JEdXJpbmdUcmFuc2Zvcm0gPSBBIHsxfSB3YXMgdGhyb3duIGR1cmluZyB0aGUgezB9IHRyYW5zZm9ybQ0KK3NpZ25hdHVyZS5UcmFuc2Zvcm0uTm90WWV0SW1wbGVtZW50ZWQgPSBUcmFuc2Zvcm0gezB9IG5vdCB5ZXQgaW1wbGVtZW50ZWQNCitzaWduYXR1cmUuVHJhbnNmb3JtLk51bGxQb2ludGVyVHJhbnNmb3JtID0gTnVsbCBwb2ludGVyIGFzIFVSSS4gUHJvZ3JhbW1pbmcgYnVnPw0KK3NpZ25hdHVyZS5UcmFuc2Zvcm0uVW5rbm93blRyYW5zZm9ybSA9IFVua25vd24gdHJhbnNmb3JtYXRpb24uIE5vIGhhbmRsZXIgaW5zdGFsbGVkIGZvciBVUkkgezB9DQorc2lnbmF0dXJlLlRyYW5zZm9ybS5ub2RlID0gQ3VycmVudCBOb2RlOiB7MH0NCitzaWduYXR1cmUuVHJhbnNmb3JtLm5vZGVBbmRUeXBlID0gQ3VycmVudCBOb2RlOiB7MH0sIHR5cGU6IHsxfSANCitzaWduYXR1cmUuVXRpbC5CaWdudW1Ob25Qb3NpdGl2ZSA9IGJpZ0ludGVnZXIuc2lnbnVtKCkgbXVzdCBiZSBwb3NpdGl2ZQ0KK3NpZ25hdHVyZS5VdGlsLk5vblRleHROb2RlID0gTm90IGEgdGV4dCBub2RlDQorc2lnbmF0dXJlLlV0aWwuVG9vTWFueUNoaWxkcyA9IFRvbyBtYW55IGNoaWxkcyBvZiBUeXBlIHswfSBpbiB7MX0NCitzaWduYXR1cmUuVmVyaWZpY2F0aW9uLmNlcnRpZmljYXRlRXJyb3IgPSBDZXJ0aWZpY2F0ZSBlcnJvcg0KK3NpZ25hdHVyZS5WZXJpZmljYXRpb24uSW5kZXhPdXRPZkJvdW5kcyA9IEluZGV4IHswfSBpbGxlZ2FsLiBXZSBvbmx5IGhhdmUgezF9IFJlZmVyZW5jZXMNCitzaWduYXR1cmUuVmVyaWZpY2F0aW9uLmludGVybmFsRXJyb3IgPSBJbnRlcm5hbCBlcnJvcg0KK3NpZ25hdHVyZS5WZXJpZmljYXRpb24uSW52YWxpZERpZ2VzdE9yUmVmZXJlbmNlID0gSW52YWxpZCBkaWdlc3Qgb2YgcmVmZXJlbmNlIHswfQ0KK3NpZ25hdHVyZS5WZXJpZmljYXRpb24ua2V5U3RvcmUgPSBLZXlTdG9yZSBlcnJvcg0KK3NpZ25hdHVyZS5WZXJpZmljYXRpb24uTWlzc2luZ0lEID0gQ2Fubm90IHJlc29sdmUgZWxlbWVudCB3aXRoIElEIHswfQ0KK3NpZ25hdHVyZS5WZXJpZmljYXRpb24uTWlzc2luZ1Jlc291cmNlcyA9IENhbm5vdCByZXNvbHZlIGV4dGVybmFsIHJlc291cmNlIHswfQ0KK3NpZ25hdHVyZS5WZXJpZmljYXRpb24uTm9TaWduYXR1cmVFbGVtZW50ID0gSW5wdXQgZG9jdW1lbnQgY29udGFpbnMgbm8gezB9IEVsZW1lbnQgaW4gbmFtZXNwYWNlIHsxfQ0KK3NpZ25hdHVyZS5WZXJpZmljYXRpb24uUmVmZXJlbmNlLk5vSW5wdXQgPSBUaGUgUmVmZXJlbmNlIGZvciBVUkkgezB9IGhhcyBubyBYTUxTaWduYXR1cmVJbnB1dA0KK3NpZ25hdHVyZS5WZXJpZmljYXRpb24uU2lnbmF0dXJlRXJyb3IgPSBTaWduYXR1cmUgZXJyb3INCitzaWduYXR1cmUuWE1MU2lnbmF0dXJlSW5wdXQuTWlzc2luZ0NvbnN0dWN0b3IgPSBDYW5ub3QgY29uc3RydWN0IGEgWE1MU2lnbmF0dXJlSW5wdXQgZnJvbSBjbGFzcyB7MH0NCitzaWduYXR1cmUuWE1MU2lnbmF0dXJlSW5wdXQuU2VyaWFsaXplRE9NID0gSW5wdXQgaW5pdGlhbGl6ZWQgd2l0aCBET00gRWxlbWVudC4gVXNlIENhbm9uaWNhbGl6YXRpb24gdG8gc2VyaWFsaXplIGl0DQorc2lnbmF0dXJlLlhNTFNpZ25hdHVyZUlucHV0Lm5vZGVzZXRSZWZlcmVuY2UgPSBVbmFibGUgdG8gY29udmVydCB0byBub2Rlc2V0IHRoZSByZWZlcmVuY2UNCit0cmFuc2Zvcm0uSW5pdC5JbGxlZ2FsQ29udGV4dEFyZ3VtZW50ID0gSW52YWxpZCBjb250ZXh0IGFyZ3VtZW50IG9mIGNsYXNzIHswfS4gTXVzdCBiZSBTdHJpbmcsIG9yZy53M2MuZG9tLk5vZGVMaXN0IG9yIGphdmEuaW8uSW5wdXRTdHJlYW0uDQordHJhbnNmb3JtLmluaXQuTm90SW5pdGlhbGl6ZWQgPQ0KK3RyYW5zZm9ybS5pbml0Lndyb25nVVJJID0gSW5pdGlhbGl6ZWQgd2l0aCB3cm9uZyBVUkkuIEhvdyBjb3VsZCB0aGlzIGhhcHBlbj8gV2UgaW1wbGVtZW50IHswfSBidXQgezF9IHdhcyB1c2VkIGR1cmluZyBpbml0aWFsaXphdGlvbg0KK3RyYW5zZm9ybS5lbnZlbG9wZWRTaWduYXR1cmVUcmFuc2Zvcm1Ob3RJblNpZ25hdHVyZUVsZW1lbnQgPSBFbnZlbG9wZWQgVHJhbnNmb3JtIGNhbm5vdCBmaW5kIFNpZ25hdHVyZSBlbGVtZW50Cit1dGlscy5CYXNlNjQuSWxsZWdhbEJpdGxlbmd0aCA9IElsbGVnYWwgYnl0ZSBsZW5ndGg7IERhdGEgdG8gYmUgZGVjb2RlZCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNA0KK0Jhc2U2NERlY29kaW5nID0gRXJyb3Igd2hpbGUgZGVjb2RpbmcNCit1dGlscy5yZXNvbHZlci5ub0NsYXNzID0gQ291bGQgbm90IGZpbmQgYSByZXNvbHZlciBmb3IgVVJJIHswfSBhbmQgQmFzZSB7MX0NCit4bWwuV3JvbmdDb250ZW50ID0gQ2Fubm90IGZpbmQgezB9IGluIHsxfQ0KK3htbC5Xcm9uZ0VsZW1lbnQgPSBDYW5ub3QgY3JlYXRlIGEgezB9IGZyb20gYSB7MX0gZWxlbWVudA0KK3hwYXRoLmZ1bmNIZXJlLmRvY3VtZW50c0RpZmZlciA9IFRoZSBYUGF0aCBpcyBub3QgaW4gdGhlIHNhbWUgZG9jdW1lbnQgYXMgdGhlIGNvbnRleHQgbm9kZQ0KK3hwYXRoLmZ1bmNIZXJlLm5vWFBhdGhDb250ZXh0ID0gVHJ5IHRvIGV2YWx1YXRlIGFuIFhQYXRoIHdoaWNoIHVzZXMgdGhlIGhlcmUoKSBmdW5jdGlvbiBidXQgWFBhdGggaXMgbm90IGluc2lkZSBhbiBkczpYUGF0aCBFbGVtZW50LiBYUGF0aCB3YXMgOiB7MH0NCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2lnbmF0dXJlL0ludmFsaWREaWdlc3RWYWx1ZUV4Y2VwdGlvbi5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NpZ25hdHVyZS9JbnZhbGlkRGlnZXN0VmFsdWVFeGNlcHRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWViZTM5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NpZ25hdHVyZS9JbnZhbGlkRGlnZXN0VmFsdWVFeGNlcHRpb24uamF2YQpAQCAtMCwwICsxLDgzIEBACisKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZTsKKworCisKKy8qKgorICogUmFpc2VkIHdoZW4gdGhlIGNvbXB1dGVkIGhhc2ggdmFsdWUgZG9lc24ndCBtYXRjaCB0aGUgZ2l2ZW4gPGk+RGlnZXN0VmFsdWU8L2k+LiAgQWRkaXRpb25hbCBodW1hbiByZWFkYWJsZSBpbmZvIGlzIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IgLS0gdGhpcyBiZWluZyB0aGUgYmVuZWZpdCBvZiByYWlzaW5nIGFuIGV4Y2VwdGlvbiBvciByZXR1cm5pbmcgYSB2YWx1ZS4KKyAqCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubgorICovCitwdWJsaWMgY2xhc3MgSW52YWxpZERpZ2VzdFZhbHVlRXhjZXB0aW9uIGV4dGVuZHMgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKworICAgLyoqCisJICogCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgSW52YWxpZERpZ2VzdFZhbHVlRXhjZXB0aW9uCisgICAgKgorICAgICovCisgICBwdWJsaWMgSW52YWxpZERpZ2VzdFZhbHVlRXhjZXB0aW9uKCkgeworICAgICAgc3VwZXIoKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBJbnZhbGlkRGlnZXN0VmFsdWVFeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKi8KKyAgIHB1YmxpYyBJbnZhbGlkRGlnZXN0VmFsdWVFeGNlcHRpb24oU3RyaW5nIF9tc2dJRCkgeworICAgICAgc3VwZXIoX21zZ0lEKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBJbnZhbGlkRGlnZXN0VmFsdWVFeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKiBAcGFyYW0gZXhBcmdzCisgICAgKi8KKyAgIHB1YmxpYyBJbnZhbGlkRGlnZXN0VmFsdWVFeGNlcHRpb24oU3RyaW5nIF9tc2dJRCwgT2JqZWN0IGV4QXJnc1tdKSB7CisgICAgICBzdXBlcihfbXNnSUQsIGV4QXJncyk7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgSW52YWxpZERpZ2VzdFZhbHVlRXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICogQHBhcmFtIF9vcmlnaW5hbEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgSW52YWxpZERpZ2VzdFZhbHVlRXhjZXB0aW9uKFN0cmluZyBfbXNnSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbiBfb3JpZ2luYWxFeGNlcHRpb24pIHsKKyAgICAgIHN1cGVyKF9tc2dJRCwgX29yaWdpbmFsRXhjZXB0aW9uKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBJbnZhbGlkRGlnZXN0VmFsdWVFeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKiBAcGFyYW0gZXhBcmdzCisgICAgKiBAcGFyYW0gX29yaWdpbmFsRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBJbnZhbGlkRGlnZXN0VmFsdWVFeGNlcHRpb24oU3RyaW5nIF9tc2dJRCwgT2JqZWN0IGV4QXJnc1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb24gX29yaWdpbmFsRXhjZXB0aW9uKSB7CisgICAgICBzdXBlcihfbXNnSUQsIGV4QXJncywgX29yaWdpbmFsRXhjZXB0aW9uKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zaWduYXR1cmUvSW52YWxpZFNpZ25hdHVyZVZhbHVlRXhjZXB0aW9uLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2lnbmF0dXJlL0ludmFsaWRTaWduYXR1cmVWYWx1ZUV4Y2VwdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxZTBkZDUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2lnbmF0dXJlL0ludmFsaWRTaWduYXR1cmVWYWx1ZUV4Y2VwdGlvbi5qYXZhCkBAIC0wLDAgKzEsODQgQEAKKworLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlOworCisKKworLyoqCisgKiBSYWlzZWQgaWYgdGVzdGluZyB0aGUgc2lnbmF0dXJlIHZhbHVlIG92ZXIgPGk+RGlnZXN0VmFsdWU8L2k+IGZhaWxzIGJlY2F1c2Ugb2YgaW52YWxpZCBzaWduYXR1cmUuCisgKgorICogQHNlZSBJbnZhbGlkRGlnZXN0VmFsdWVFeGNlcHRpb24gIE1pc3NpbmdLZXlGYWlsdXJlRXhjZXB0aW9uICBNaXNzaW5nUmVzb3VyY2VGYWlsdXJlRXhjZXB0aW9uCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubgorICovCitwdWJsaWMgY2xhc3MgSW52YWxpZFNpZ25hdHVyZVZhbHVlRXhjZXB0aW9uIGV4dGVuZHMgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKworICAgLyoqCisJICogCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgSW52YWxpZFNpZ25hdHVyZVZhbHVlRXhjZXB0aW9uCisgICAgKgorICAgICovCisgICBwdWJsaWMgSW52YWxpZFNpZ25hdHVyZVZhbHVlRXhjZXB0aW9uKCkgeworICAgICAgc3VwZXIoKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBJbnZhbGlkU2lnbmF0dXJlVmFsdWVFeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKi8KKyAgIHB1YmxpYyBJbnZhbGlkU2lnbmF0dXJlVmFsdWVFeGNlcHRpb24oU3RyaW5nIF9tc2dJRCkgeworICAgICAgc3VwZXIoX21zZ0lEKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBJbnZhbGlkU2lnbmF0dXJlVmFsdWVFeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKiBAcGFyYW0gZXhBcmdzCisgICAgKi8KKyAgIHB1YmxpYyBJbnZhbGlkU2lnbmF0dXJlVmFsdWVFeGNlcHRpb24oU3RyaW5nIF9tc2dJRCwgT2JqZWN0IGV4QXJnc1tdKSB7CisgICAgICBzdXBlcihfbXNnSUQsIGV4QXJncyk7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgSW52YWxpZFNpZ25hdHVyZVZhbHVlRXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICogQHBhcmFtIF9vcmlnaW5hbEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgSW52YWxpZFNpZ25hdHVyZVZhbHVlRXhjZXB0aW9uKFN0cmluZyBfbXNnSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbiBfb3JpZ2luYWxFeGNlcHRpb24pIHsKKyAgICAgIHN1cGVyKF9tc2dJRCwgX29yaWdpbmFsRXhjZXB0aW9uKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBJbnZhbGlkU2lnbmF0dXJlVmFsdWVFeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKiBAcGFyYW0gZXhBcmdzCisgICAgKiBAcGFyYW0gX29yaWdpbmFsRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBJbnZhbGlkU2lnbmF0dXJlVmFsdWVFeGNlcHRpb24oU3RyaW5nIF9tc2dJRCwgT2JqZWN0IGV4QXJnc1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb24gX29yaWdpbmFsRXhjZXB0aW9uKSB7CisgICAgICBzdXBlcihfbXNnSUQsIGV4QXJncywgX29yaWdpbmFsRXhjZXB0aW9uKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zaWduYXR1cmUvTWFuaWZlc3QuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zaWduYXR1cmUvTWFuaWZlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjg2ZDlkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NpZ25hdHVyZS9NYW5pZmVzdC5qYXZhCkBAIC0wLDAgKzEsNTU3IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmU7CisKKworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworCitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbjsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmV4Y2VwdGlvbnMuWE1MU2VjdXJpdHlFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1zOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5JMThuOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLklkUmVzb2x2ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuU2lnbmF0dXJlRWxlbWVudFByb3h5OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyLlJlc291cmNlUmVzb2x2ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMucmVzb2x2ZXIuUmVzb3VyY2VSZXNvbHZlclNwaTsKK2ltcG9ydCBvcmcudzNjLmRvbS5ET01FeGNlcHRpb247CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworaW1wb3J0IG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbjsKKworCisKKy8qKgorICogSGFuZGxlcyA8Y29kZT4mbHQ7ZHM6TWFuaWZlc3QmZ3Q7PC9jb2RlPiBlbGVtZW50cy4KKyAqIDxwPiBUaGlzIGVsZW1lbnQgaG9sZHMgdGhlIDxjb2RlPlJlZmVyZW5jZTwvY29kZT4gZWxlbWVudHM8L3A+CisgKiBAYXV0aG9yICRhdXRob3I6ICQKKyAqLworcHVibGljIGNsYXNzIE1hbmlmZXN0IGV4dGVuZHMgU2lnbmF0dXJlRWxlbWVudFByb3h5IHsKKworICAvKioge0BsaW5rIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nfSBsb2dnaW5nIGZhY2lsaXR5ICovCisgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKE1hbmlmZXN0LmNsYXNzLmdldE5hbWUoKSk7CisKKyAgIC8qKiBGaWVsZCBfcmVmZXJlbmNlcyAqLworICAgTGlzdCBfcmVmZXJlbmNlczsKKyAgIEVsZW1lbnRbXSBfcmVmZXJlbmNlc0VsOworCisgICAvKiogRmllbGQgdmVyaWZpY2F0aW9uUmVzdWx0c1tdICovCisgICBwcml2YXRlIGJvb2xlYW4gdmVyaWZpY2F0aW9uUmVzdWx0c1tdID0gbnVsbDsKKworICAgLyoqIEZpZWxkIF9yZXNvbHZlclByb3BlcnRpZXMgKi8KKyAgIEhhc2hNYXAgX3Jlc29sdmVyUHJvcGVydGllcyA9IG51bGw7CisKKyAgIC8qKiBGaWVsZCBfcGVyTWFuaWZlc3RSZXNvbHZlcnMgKi8KKyAgIExpc3QgX3Blck1hbmlmZXN0UmVzb2x2ZXJzID0gbnVsbDsKKworICAgLyoqCisgICAgKiBDb25zdHVydHMge0BsaW5rIE1hbmlmZXN0fQorICAgICoKKyAgICAqIEBwYXJhbSBkb2MgdGhlIHtAbGluayBEb2N1bWVudH0gaW4gd2hpY2ggPGNvZGU+WE1Mc2lnbmF0dXJlPC9jb2RlPiBpcyBwbGFjZWQKKyAgICAqLworICAgcHVibGljIE1hbmlmZXN0KERvY3VtZW50IGRvYykgeworCisgICAgICBzdXBlcihkb2MpOworCisgICAgICBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCk7CisKKyAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBuZXcgQXJyYXlMaXN0KCk7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgTWFuaWZlc3QKKyAgICAqCisgICAgKiBAcGFyYW0gZWxlbWVudAorICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIE1hbmlmZXN0KEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIEJhc2VVUkkpCisgICAgICAgICAgIHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisKKyAgICAgIHN1cGVyKGVsZW1lbnQsIEJhc2VVUkkpOworCisgICAgICAvLyBjaGVjayBvdXQgUmVmZXJlbmNlIGNoaWxkcmVuCisgICAgICB0aGlzLl9yZWZlcmVuY2VzRWwgPSBYTUxVdGlscy5zZWxlY3REc05vZGVzKHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpLAorICAgICAgICAgQ29uc3RhbnRzLl9UQUdfUkVGRVJFTkNFKTsKKyAgICAgIGludCBsZSA9IHRoaXMuX3JlZmVyZW5jZXNFbC5sZW5ndGg7CisgICAgICB7CisgICAgICAgICBpZiAobGUgPT0gMCkgeworCisgICAgICAgICAgICAvLyBBdCBsZWFzdCBvbmUgUmVmZXJlbmNlIG11c3QgYmUgcHJlc2VudC4gQmFkLgorICAgICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyBDb25zdGFudHMuX1RBR19SRUZFUkVOQ0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5fVEFHX01BTklGRVNUIH07CisKKyAgICAgICAgICAgIHRocm93IG5ldyBET01FeGNlcHRpb24oRE9NRXhjZXB0aW9uLldST05HX0RPQ1VNRU5UX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTE4bi50cmFuc2xhdGUoInhtbC5Xcm9uZ0NvbnRlbnQiLCBleEFyZ3MpKTsKKyAgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgLy8gY3JlYXRlIFZlY3RvcgorICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG5ldyBBcnJheUxpc3QobGUpOworCisgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlOyBpKyspIHsKKyAgICAgICAgIHRoaXMuX3JlZmVyZW5jZXMuYWRkKG51bGwpOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIFRoaXMgPGNvZGU+YWRkRG9jdW1lbnQ8L2NvZGU+IG1ldGhvZCBpcyB1c2VkIHRvIGFkZCBhIG5ldyByZXNvdXJjZSB0byB0aGUKKyAgICAqIHNpZ25lZCBpbmZvLiBBIHtAbGluayBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuUmVmZXJlbmNlfSBpcyBidWlsdAorICAgICogZnJvbSB0aGUgc3VwcGxpZWQgdmFsdWVzLgorICAgICoKKyAgICAqIEBwYXJhbSBCYXNlVVJJIHRoZSBVUkkgb2YgdGhlIHJlc291cmNlIHdoZXJlIHRoZSBYTUwgaW5zdGFuY2Ugd2FzIHN0b3JlZAorICAgICogQHBhcmFtIHJlZmVyZW5jZVVSSSA8Y29kZT5VUkk8L2NvZGU+IGF0dHJpYnV0ZSBpbiA8Y29kZT5SZWZlcmVuY2U8L2NvZGU+IGZvciBzcGVjaWZpbmcgd2hlcmUgZGF0YSBpcworICAgICogQHBhcmFtIHRyYW5zZm9ybXMgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlRyYW5zZm9ybXMgb2JqZWN0IHdpdGggYW4gb3JkZXJlZCBsaXN0IG9mIHRyYW5zZm9ybWF0aW9ucyB0byBiZSBwZXJmb3JtZWQuCisgICAgKiBAcGFyYW0gZGlnZXN0VVJJIFRoZSBkaWdlc3QgYWxnb3J0aGltIFVSSSB0byBiZSB1c2VkLgorICAgICogQHBhcmFtIFJlZmVyZW5jZUlkCisgICAgKiBAcGFyYW0gUmVmZXJlbmNlVHlwZQorICAgICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHZvaWQgYWRkRG9jdW1lbnQoCisgICAgICAgICAgIFN0cmluZyBCYXNlVVJJLCBTdHJpbmcgcmVmZXJlbmNlVVJJLCBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMsIFN0cmluZyBkaWdlc3RVUkksIFN0cmluZyBSZWZlcmVuY2VJZCwgU3RyaW5nIFJlZmVyZW5jZVR5cGUpCisgICAgICAgICAgICAgIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworCisgICAgICAgICAvLyB0aGUgdGhpcy5fZG9jIGlzIGhhbmRlZCBpbXBsaWNpdGx5IGJ5IHRoZSB0aGlzLmdldE93bmVyRG9jdW1lbnQoKQorICAgICAgICAgUmVmZXJlbmNlIHJlZiA9IG5ldyBSZWZlcmVuY2UodGhpcy5fZG9jLCBCYXNlVVJJLCByZWZlcmVuY2VVUkksIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1zLCBkaWdlc3RVUkkpOworCisgICAgICAgICBpZiAoUmVmZXJlbmNlSWQgIT0gbnVsbCkgeworICAgICAgICAgICAgcmVmLnNldElkKFJlZmVyZW5jZUlkKTsKKyAgICAgICAgIH0KKworICAgICAgICAgaWYgKFJlZmVyZW5jZVR5cGUgIT0gbnVsbCkgeworICAgICAgICAgICAgcmVmLnNldFR5cGUoUmVmZXJlbmNlVHlwZSk7CisgICAgICAgICB9CisKKyAgICAgICAgIC8vIGFkZCBSZWZlcmVuY2Ugb2JqZWN0IHRvIG91ciBjYWNoZSB2ZWN0b3IKKyAgICAgICAgIHRoaXMuX3JlZmVyZW5jZXMuYWRkKHJlZik7CisKKyAgICAgICAgIC8vIGFkZCB0aGUgRWxlbWVudCBvZiB0aGUgUmVmZXJlbmNlIG9iamVjdCB0byB0aGUgTWFuaWZlc3QvU2lnbmVkSW5mbworICAgICAgICAgdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5hcHBlbmRDaGlsZChyZWYuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgIFhNTFV0aWxzLmFkZFJldHVyblRvRWxlbWVudCh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50KTsKKyAgIH0KKworICAgLyoqCisgICAgKiBUaGUgY2FsY3VsYXRpb24gb2YgdGhlIERpZ2VzdFZhbHVlcyBpbiB0aGUgUmVmZXJlbmNlcyBtdXN0IGJlIGFmdGVyIHRoZQorICAgICogUmVmZXJlbmNlcyBhcmUgYWxyZWFkeSBhZGRlZCB0byB0aGUgZG9jdW1lbnQgYW5kIGR1cmluZyB0aGUgc2lnbmluZworICAgICogcHJvY2Vzcy4gVGhpcyBlbnN1cmVzIHRoYXQgYWxsIG5lY2Nlc2FyeSBkYXRhIGlzIGluIHBsYWNlLgorICAgICoKKyAgICAqIEB0aHJvd3MgUmVmZXJlbmNlTm90SW5pdGlhbGl6ZWRFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIGdlbmVyYXRlRGlnZXN0VmFsdWVzKCkKKyAgICAgICAgICAgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiwgUmVmZXJlbmNlTm90SW5pdGlhbGl6ZWRFeGNlcHRpb24geworCisgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRoaXMuZ2V0TGVuZ3RoKCk7IGkrKykgeworCisgICAgICAgICAgICAvLyB1cGRhdGUgdGhlIGNhY2hlZCBSZWZlcmVuY2Ugb2JqZWN0LCB0aGUgRWxlbWVudCBjb250ZW50IGlzIGF1dG9tYXRpY2FsbHkgdXBkYXRlZAorICAgICAgICAgICAgUmVmZXJlbmNlIGN1cnJlbnRSZWYgPSAoUmVmZXJlbmNlKSB0aGlzLl9yZWZlcmVuY2VzLmdldChpKTsKKworICAgICAgICAgICAgY3VycmVudFJlZi5nZW5lcmF0ZURpZ2VzdFZhbHVlKCk7CisgICAgICAgICB9CisgICB9CisKKyAgIC8qKgorICAgICogUmV0dXJuIHRoZSBub25uZWdhdGl2ZSBudW1iZXIgb2YgYWRkZWQgcmVmZXJlbmNlcy4KKyAgICAqCisgICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgcmVmZXJlbmNlcworICAgICovCisgICBwdWJsaWMgaW50IGdldExlbmd0aCgpIHsKKyAgICAgIHJldHVybiB0aGlzLl9yZWZlcmVuY2VzLnNpemUoKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBSZXR1cm4gdGhlIDxpdD5pPC9pdD48c3VwPnRoPC9zdXA+IHJlZmVyZW5jZS4gIFZhbGlkIDxjb2RlPmk8L2NvZGU+CisgICAgKiB2YWx1ZXMgYXJlIDAgdG8gPGNvZGU+e2xpbmtAIGdldFNpemV9LTE8L2NvZGU+LgorICAgICoKKyAgICAqIEBwYXJhbSBpIEluZGV4IG9mIHRoZSByZXF1ZXN0ZWQge0BsaW5rIFJlZmVyZW5jZX0KKyAgICAqIEByZXR1cm4gdGhlIDxpdD5pPC9pdD48c3VwPnRoPC9zdXA+IHJlZmVyZW5jZQorICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgUmVmZXJlbmNlIGl0ZW0oaW50IGkpIHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisKKyAgICAgICAgIGlmICh0aGlzLl9yZWZlcmVuY2VzLmdldChpKSA9PSBudWxsKSB7CisKKyAgICAgICAgICAgIC8vIG5vdCB5ZXQgY29uc3RydWN0ZWQsIHNvIF93ZV8gaGF2ZSB0byAgICAgICAgICAgIAorICAgICAgICAgICAgUmVmZXJlbmNlIHJlZiA9IG5ldyBSZWZlcmVuY2UoX3JlZmVyZW5jZXNFbFtpXSwgdGhpcy5fYmFzZVVSSSwgdGhpcyk7CisKKyAgICAgICAgICAgIHRoaXMuX3JlZmVyZW5jZXMuc2V0KGksIHJlZik7CisgICAgICAgICB9CisKKyAgICAgICAgIHJldHVybiAoUmVmZXJlbmNlKSB0aGlzLl9yZWZlcmVuY2VzLmdldChpKTsKKyAgICAgIAorICAgfQorCisgICAvKioKKyAgICAqIFNldHMgdGhlIDxjb2RlPklkPC9jb2RlPiBhdHRyaWJ1dGUKKyAgICAqCisgICAgKiBAcGFyYW0gSWQgdGhlIDxjb2RlPklkPC9jb2RlPiBhdHRyaWJ1dGUgaW4gPGNvZGU+ZHM6TWFuaWZlc3Q8L2NvZGU+CisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHNldElkKFN0cmluZyBJZCkgeworCisgICAgICBpZiAoSWQgIT0gbnVsbCkgeworICAgICAgICAgdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhudWxsLCBDb25zdGFudHMuX0FUVF9JRCwgSWQpOworICAgICAgICAgSWRSZXNvbHZlci5yZWdpc3RlckVsZW1lbnRCeUlkKHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQsIElkKTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBSZXR1cm5zIHRoZSA8Y29kZT5JZDwvY29kZT4gYXR0cmlidXRlCisgICAgKgorICAgICogQHJldHVybiB0aGUgPGNvZGU+SWQ8L2NvZGU+IGF0dHJpYnV0ZSBpbiA8Y29kZT5kczpNYW5pZmVzdDwvY29kZT4KKyAgICAqLworICAgcHVibGljIFN0cmluZyBnZXRJZCgpIHsKKyAgICAgIHJldHVybiB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmdldEF0dHJpYnV0ZU5TKG51bGwsIENvbnN0YW50cy5fQVRUX0lEKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBVc2VkIHRvIGRvIGEgPEEgSFJFRj0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sZHNpZy1jb3JlLyNkZWYtVmFsaWRhdGlvblJlZmVyZW5jZSI+cmVmZXJlbmNlCisgICAgKiB2YWxpZGF0aW9uPC9BPiBvZiBhbGwgZW5jbG9zZWQgcmVmZXJlbmNlcyB1c2luZyB0aGUge0BsaW5rIFJlZmVyZW5jZSN2ZXJpZnl9IG1ldGhvZC4KKyAgICAqCisgICAgKiA8cD5UaGlzIHN0ZXAgbG9vcHMgdGhyb3VnaCBhbGwge0BsaW5rIFJlZmVyZW5jZX1zIGFuZCBkb2VzIHZlcmlmeSB0aGUgaGFzaAorICAgICogdmFsdWVzLiBJZiBvbmUgb3IgbW9yZSB2ZXJpZmljYXRpb25zIGZhaWwsIHRoZSBtZXRob2QgcmV0dXJucworICAgICogPGNvZGU+ZmFsc2U8L2NvZGU+LiBJZiA8aT5hbGw8L2k+IHZlcmlmaWNhdGlvbnMgYXJlIHN1Y2Nlc3NmdWwsCisgICAgKiBpdCByZXR1cm5zIDxjb2RlPnRydWU8L2NvZGU+LiBUaGUgcmVzdWx0cyBvZiB0aGUgaW5kaXZpZHVhbCByZWZlcmVuY2UKKyAgICAqIHZhbGlkYXRpb25zIGFyZSBhdmFpbGFibGUgYnkgdXNpbmcgdGhlIHtAbGluayAjZ2V0VmVyaWZpY2F0aW9uUmVzdWx0KGludCl9IG1ldGhvZAorICAgICoKKyAgICAqIEByZXR1cm4gdHJ1ZSBpZiBhbGwgUmVmZXJlbmNlcyB2ZXJpZnksIGZhbHNlIGlmIG9uZSBvciBtb3JlIGRvIG5vdCB2ZXJpZnkuCisgICAgKiBAdGhyb3dzIE1pc3NpbmdSZXNvdXJjZUZhaWx1cmVFeGNlcHRpb24gaWYgYSB7QGxpbmsgUmVmZXJlbmNlfSBkb2VzIG5vdCB2ZXJpZnkgKHRocm93cyBhIHtAbGluayBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuUmVmZXJlbmNlTm90SW5pdGlhbGl6ZWRFeGNlcHRpb259IGJlY2F1c2Ugb2YgYW4gdW5pbml0aWFsaXplZCB7QGxpbmsgWE1MU2lnbmF0dXJlSW5wdXR9CisgICAgKiBAc2VlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5SZWZlcmVuY2UjdmVyaWZ5CisgICAgKiBAc2VlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5TaWduZWRJbmZvI3ZlcmlmeSgpCisgICAgKiBAc2VlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5NaXNzaW5nUmVzb3VyY2VGYWlsdXJlRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBib29sZWFuIHZlcmlmeVJlZmVyZW5jZXMoKQorICAgICAgICAgICB0aHJvd3MgTWlzc2luZ1Jlc291cmNlRmFpbHVyZUV4Y2VwdGlvbiwgWE1MU2VjdXJpdHlFeGNlcHRpb24geworICAgICAgcmV0dXJuIHRoaXMudmVyaWZ5UmVmZXJlbmNlcyhmYWxzZSk7CisgICB9CisKKyAgIC8qKgorICAgICogVXNlZCB0byBkbyBhIDxBIEhSRUY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbGRzaWctY29yZS8jZGVmLVZhbGlkYXRpb25SZWZlcmVuY2UiPnJlZmVyZW5jZQorICAgICogdmFsaWRhdGlvbjwvQT4gb2YgYWxsIGVuY2xvc2VkIHJlZmVyZW5jZXMgdXNpbmcgdGhlIHtAbGluayBSZWZlcmVuY2UjdmVyaWZ5fSBtZXRob2QuCisgICAgKgorICAgICogPHA+VGhpcyBzdGVwIGxvb3BzIHRocm91Z2ggYWxsIHtAbGluayBSZWZlcmVuY2V9cyBhbmQgZG9lcyB2ZXJpZnkgdGhlIGhhc2gKKyAgICAqIHZhbHVlcy4gSWYgb25lIG9yIG1vcmUgdmVyaWZpY2F0aW9ucyBmYWlsLCB0aGUgbWV0aG9kIHJldHVybnMKKyAgICAqIDxjb2RlPmZhbHNlPC9jb2RlPi4gSWYgPGk+YWxsPC9pPiB2ZXJpZmljYXRpb25zIGFyZSBzdWNjZXNzZnVsLAorICAgICogaXQgcmV0dXJucyA8Y29kZT50cnVlPC9jb2RlPi4gVGhlIHJlc3VsdHMgb2YgdGhlIGluZGl2aWR1YWwgcmVmZXJlbmNlCisgICAgKiB2YWxpZGF0aW9ucyBhcmUgYXZhaWxhYmxlIGJ5IHVzaW5nIHRoZSB7QGxpbmsgI2dldFZlcmlmaWNhdGlvblJlc3VsdChpbnQpfSBtZXRob2QKKyAgICAqCisgICAgKiBAcGFyYW0gZm9sbG93TWFuaWZlc3RzCisgICAgKiBAcmV0dXJuIHRydWUgaWYgYWxsIFJlZmVyZW5jZXMgdmVyaWZ5LCBmYWxzZSBpZiBvbmUgb3IgbW9yZSBkbyBub3QgdmVyaWZ5LgorICAgICogQHRocm93cyBNaXNzaW5nUmVzb3VyY2VGYWlsdXJlRXhjZXB0aW9uIGlmIGEge0BsaW5rIFJlZmVyZW5jZX0gZG9lcyBub3QgdmVyaWZ5ICh0aHJvd3MgYSB7QGxpbmsgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlJlZmVyZW5jZU5vdEluaXRpYWxpemVkRXhjZXB0aW9ufSBiZWNhdXNlIG9mIGFuIHVuaW5pdGlhbGl6ZWQge0BsaW5rIFhNTFNpZ25hdHVyZUlucHV0fQorICAgICogQHNlZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuUmVmZXJlbmNlI3ZlcmlmeQorICAgICogQHNlZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuU2lnbmVkSW5mbyN2ZXJpZnkoYm9vbGVhbikKKyAgICAqIEBzZWUgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLk1pc3NpbmdSZXNvdXJjZUZhaWx1cmVFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIGJvb2xlYW4gdmVyaWZ5UmVmZXJlbmNlcyhib29sZWFuIGZvbGxvd01hbmlmZXN0cykKKyAgICAgICAgICAgdGhyb3dzIE1pc3NpbmdSZXNvdXJjZUZhaWx1cmVFeGNlcHRpb24sIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKyAgICAgIGlmIChfcmVmZXJlbmNlc0VsPT1udWxsKSB7CisgICAgICAgIHRoaXMuX3JlZmVyZW5jZXNFbCA9ICAKKyAgICAgICAgICAgIFhNTFV0aWxzLnNlbGVjdERzTm9kZXModGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5nZXRGaXJzdENoaWxkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLl9UQUdfUkVGRVJFTkNFKTsKKyAgICAgIH0KKyAgIAkgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkgeworICAgCSAgCWxvZy5kZWJ1ZygidmVyaWZ5ICIgK19yZWZlcmVuY2VzRWwubGVuZ3RoICsgIiBSZWZlcmVuY2VzIik7CisgICAgICAgIGxvZy5kZWJ1ZygiSSBhbSAiICsgKGZvbGxvd01hbmlmZXN0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAibm90IikgKyAiIHJlcXVlc3RlZCB0byBmb2xsb3cgbmVzdGVkIE1hbmlmZXN0cyIpOworICAgICAgfQorICAgICAgYm9vbGVhbiB2ZXJpZnkgPSB0cnVlOworCisgICAgICBpZiAoX3JlZmVyZW5jZXNFbC5sZW5ndGg9PTApIHsKKyAgICAgICAgIHRocm93IG5ldyBYTUxTZWN1cml0eUV4Y2VwdGlvbigiZW1wdHkiKTsKKyAgICAgIH0KKworICAgICAgdGhpcy52ZXJpZmljYXRpb25SZXN1bHRzID0KKyAgICAgICAgIG5ldyBib29sZWFuW19yZWZlcmVuY2VzRWwubGVuZ3RoXTsKKworICAgICAgZm9yIChpbnQgaSA9CisgICAgICAgICAgICAgIDA7IGkgPCB0aGlzLl9yZWZlcmVuY2VzRWwubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgIFJlZmVyZW5jZSBjdXJyZW50UmVmID0KKyAgICAgICAgICAgIG5ldyBSZWZlcmVuY2UoX3JlZmVyZW5jZXNFbFtpXSwgdGhpcy5fYmFzZVVSSSwgdGhpcyk7CisKKyAgICAgICAgIHRoaXMuX3JlZmVyZW5jZXMuc2V0KGksIGN1cnJlbnRSZWYpOworCisgICAgICAgICAvKiBpZiBvbmx5IG9uZSBpdGVtIGRvZXMgbm90IHZlcmlmeSwgdGhlIHdob2xlIHZlcmlmaWNhdGlvbiBmYWlscyAqLworICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGJvb2xlYW4gY3VycmVudFJlZlZlcmlmaWVkID0gY3VycmVudFJlZi52ZXJpZnkoKTsKKworICAgICAgICAgICAgdGhpcy5zZXRWZXJpZmljYXRpb25SZXN1bHQoaSwgY3VycmVudFJlZlZlcmlmaWVkKTsKKworICAgICAgICAgICAgaWYgKCFjdXJyZW50UmVmVmVyaWZpZWQpIHsKKyAgICAgICAgICAgICAgIHZlcmlmeSA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKQorICAgICAgICAgICAgCWxvZy5kZWJ1ZygiVGhlIFJlZmVyZW5jZSBoYXMgVHlwZSAiICsgY3VycmVudFJlZi5nZXRUeXBlKCkpOworCisgICAgICAgICAgICAvLyB3YXMgdmVyaWZpY2F0aW9uIHN1Y2Nlc3NmdWwgdGlsbCBub3cgYW5kIGRvIHdlIHdhbnQgdG8gdmVyaWZ5IHRoZSBNYW5pZmVzdD8KKyAgICAgICAgICAgIGlmICh2ZXJpZnkgJiYgZm9sbG93TWFuaWZlc3RzCisgICAgICAgICAgICAgICAgICAgICYmIGN1cnJlbnRSZWYudHlwZUlzUmVmZXJlbmNlVG9NYW5pZmVzdCgpKSB7CisgICAgICAgICAgICAgICBsb2cuZGVidWcoIldlIGhhdmUgdG8gZm9sbG93IGEgbmVzdGVkIE1hbmlmZXN0Iik7CisKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgWE1MU2lnbmF0dXJlSW5wdXQgc2lnbmVkTWFuaWZlc3ROb2RlcyA9CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSZWYuZGVyZWZlcmVuY2VVUklhbmRQZXJmb3JtVHJhbnNmb3JtcyhudWxsKTsKKyAgICAgICAgICAgICAgICAgIFNldCBubCA9IHNpZ25lZE1hbmlmZXN0Tm9kZXMuZ2V0Tm9kZVNldCgpOworICAgICAgICAgICAgICAgICAgTWFuaWZlc3QgcmVmZXJlbmNlZE1hbmlmZXN0ID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yIG5sSXRlcmF0b3IgPSBubC5pdGVyYXRvcigpOworCisgICAgICAgICAgICAgICAgICBmaW5kTWFuaWZlc3Q6IHdoaWxlIChubEl0ZXJhdG9yLmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgICAgICAgTm9kZSBuID0gKE5vZGUpIG5sSXRlcmF0b3IubmV4dCgpOworCisgICAgICAgICAgICAgICAgICAgICBpZiAoKG4uZ2V0Tm9kZVR5cGUoKSA9PSBOb2RlLkVMRU1FTlRfTk9ERSkgJiYgKChFbGVtZW50KSBuKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0TmFtZXNwYWNlVVJJKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmVxdWFscyhDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TKSAmJiAoKEVsZW1lbnQpIG4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRMb2NhbE5hbWUoKS5lcXVhbHMoQ29uc3RhbnRzLl9UQUdfTUFOSUZFU1QpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlZE1hbmlmZXN0ID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBNYW5pZmVzdCgoRWxlbWVudCkgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWRNYW5pZmVzdE5vZGVzLmdldFNvdXJjZVVSSSgpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZmluZE1hbmlmZXN0OworICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoWE1MU2VjdXJpdHlFeGNlcHRpb24gZXgpIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSG0sIHNlZW1zIG5vdCB0byBiZSBhIGRzOk1hbmlmZXN0CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgIGlmIChyZWZlcmVuY2VkTWFuaWZlc3QgPT0gbnVsbCkgeworCisgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgUmVmZXJlbmNlIHN0YXRlZCB0aGF0IGl0IHBvaW50cyB0byBhIGRzOk1hbmlmZXN0CisgICAgICAgICAgICAgICAgICAgICAvLyBidXQgd2UgZGlkIG5vdCBmaW5kIGEgZHM6TWFuaWZlc3QgaW4gdGhlIHNpZ25lZCBhcmVhCisgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTWlzc2luZ1Jlc291cmNlRmFpbHVyZUV4Y2VwdGlvbigiZW1wdHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFJlZik7CisgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZWRNYW5pZmVzdC5fcGVyTWFuaWZlc3RSZXNvbHZlcnMgPQorICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGVyTWFuaWZlc3RSZXNvbHZlcnM7CisgICAgICAgICAgICAgICAgICByZWZlcmVuY2VkTWFuaWZlc3QuX3Jlc29sdmVyUHJvcGVydGllcyA9CisgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZXNvbHZlclByb3BlcnRpZXM7CisKKyAgICAgICAgICAgICAgICAgIGJvb2xlYW4gcmVmZXJlbmNlZE1hbmlmZXN0VmFsaWQgPQorICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlZE1hbmlmZXN0LnZlcmlmeVJlZmVyZW5jZXMoZm9sbG93TWFuaWZlc3RzKTsKKworICAgICAgICAgICAgICAgICAgaWYgKCFyZWZlcmVuY2VkTWFuaWZlc3RWYWxpZCkgeworICAgICAgICAgICAgICAgICAgICAgdmVyaWZ5ID0gZmFsc2U7CisKKyAgICAgICAgICAgICAgICAgICAgIGxvZy53YXJuKCJUaGUgbmVzdGVkIE1hbmlmZXN0IHdhcyBpbnZhbGlkIChiYWQpIik7CisgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCJUaGUgbmVzdGVkIE1hbmlmZXN0IHdhcyB2YWxpZCAoZ29vZCkiKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmVmZXJlbmNlTm90SW5pdGlhbGl6ZWRFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgICAgICAgICAgfSBjYXRjaCAoUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJlZmVyZW5jZU5vdEluaXRpYWxpemVkRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgICAgICAgICAgIH0gY2F0Y2ggKFNBWEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJlZmVyZW5jZU5vdEluaXRpYWxpemVkRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0gY2F0Y2ggKFJlZmVyZW5jZU5vdEluaXRpYWxpemVkRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBPYmplY3QgZXhBcmdzW10gPSB7IGN1cnJlbnRSZWYuZ2V0VVJJKCkgfTsKKworICAgICAgICAgICAgdGhyb3cgbmV3IE1pc3NpbmdSZXNvdXJjZUZhaWx1cmVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAic2lnbmF0dXJlLlZlcmlmaWNhdGlvbi5SZWZlcmVuY2UuTm9JbnB1dCIsIGV4QXJncywgZXgsCisgICAgICAgICAgICAgICBjdXJyZW50UmVmKTsKKyAgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgcmV0dXJuIHZlcmlmeTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2Qgc2V0VmVyaWZpY2F0aW9uUmVzdWx0CisgICAgKgorICAgICogQHBhcmFtIGluZGV4CisgICAgKiBAcGFyYW0gdmVyaWZ5CisgICAgKi8KKyAgIHByaXZhdGUgdm9pZCBzZXRWZXJpZmljYXRpb25SZXN1bHQoaW50IGluZGV4LCBib29sZWFuIHZlcmlmeSkKKyAgIHsKKworICAgICAgaWYgKHRoaXMudmVyaWZpY2F0aW9uUmVzdWx0cyA9PSBudWxsKSB7CisgICAgICAgICB0aGlzLnZlcmlmaWNhdGlvblJlc3VsdHMgPSBuZXcgYm9vbGVhblt0aGlzLmdldExlbmd0aCgpXTsKKyAgICAgIH0KKworICAgICAgdGhpcy52ZXJpZmljYXRpb25SZXN1bHRzW2luZGV4XSA9IHZlcmlmeTsKKyAgIH0KKworICAgLyoqCisgICAgKiBBZnRlciB2ZXJpZnlpbmcgYSB7QGxpbmsgTWFuaWZlc3R9IG9yIGEge0BsaW5rIFNpZ25lZEluZm99IHVzaW5nIHRoZQorICAgICoge0BsaW5rIE1hbmlmZXN0I3ZlcmlmeVJlZmVyZW5jZXMoKX0gb3Ige0BsaW5rIFNpZ25lZEluZm8jdmVyaWZ5KCl9IG1ldGhvZHMsCisgICAgKiB0aGUgaW5kaXZpZHVhbCByZXN1bHRzIGNhbiBiZSByZXRyaWV2ZWQgd2l0aCB0aGlzIG1ldGhvZC4KKyAgICAqCisgICAgKiBAcGFyYW0gaW5kZXggYW4gaW5kZXggb2YgaW50byBhIHtAbGluayBNYW5pZmVzdH0gb3IgYSB7QGxpbmsgU2lnbmVkSW5mb30KKyAgICAqIEByZXR1cm4gdGhlIHJlc3VsdHMgb2YgcmVmZXJlbmNlIHZhbGlkYXRpb24gYXQgdGhlIHNwZWNpZmllZCBpbmRleAorICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgYm9vbGVhbiBnZXRWZXJpZmljYXRpb25SZXN1bHQoaW50IGluZGV4KSB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworCisgICAgICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID4gdGhpcy5nZXRMZW5ndGgoKSAtIDEpKSB7CisgICAgICAgICBPYmplY3QgZXhBcmdzW10gPSB7IEludGVnZXIudG9TdHJpbmcoaW5kZXgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyLnRvU3RyaW5nKHRoaXMuZ2V0TGVuZ3RoKCkpIH07CisgICAgICAgICBFeGNlcHRpb24gZSA9CisgICAgICAgICAgICBuZXcgSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbihJMThuCisgICAgICAgICAgICAgICAudHJhbnNsYXRlKCJzaWduYXR1cmUuVmVyaWZpY2F0aW9uLkluZGV4T3V0T2ZCb3VuZHMiLCBleEFyZ3MpKTsKKworICAgICAgICAgdGhyb3cgbmV3IFhNTFNlY3VyaXR5RXhjZXB0aW9uKCJnZW5lcmljLkVtcHR5TWVzc2FnZSIsIGUpOworICAgICAgfQorCisgICAgICBpZiAodGhpcy52ZXJpZmljYXRpb25SZXN1bHRzID09IG51bGwpIHsKKyAgICAgICAgIHRyeSB7CisgICAgICAgICAgICB0aGlzLnZlcmlmeVJlZmVyZW5jZXMoKTsKKyAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFhNTFNlY3VyaXR5RXhjZXB0aW9uKCJnZW5lcmljLkVtcHR5TWVzc2FnZSIsIGV4KTsKKyAgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgcmV0dXJuIHRoaXMudmVyaWZpY2F0aW9uUmVzdWx0c1tpbmRleF07CisgICB9CisKKyAgIC8qKgorICAgICogQWRkcyBSZXNvdXJjZSBSZXNvbHZlciBmb3IgcmV0cmlldmluZyByZXNvdXJjZXMgYXQgc3BlY2lmaWVkIDxjb2RlPlVSSTwvY29kZT4gYXR0cmlidXRlIGluIDxjb2RlPnJlZmVyZW5jZTwvY29kZT4gZWxlbWVudAorICAgICoKKyAgICAqIEBwYXJhbSByZXNvbHZlciB7QGxpbmsgUmVzb3VyY2VSZXNvbHZlcn0gY2FuIHByb3ZpZGUgdGhlIGltcGxlbWVuYXRpbiBzdWJjbGFzcyBvZiB7QGxpbmsgUmVzb3VyY2VSZXNvbHZlclNwaX0gZm9yIHJldHJpZXZpbmcgcmVzb3VyY2UuCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIGFkZFJlc291cmNlUmVzb2x2ZXIoUmVzb3VyY2VSZXNvbHZlciByZXNvbHZlcikgeworCisgICAgICBpZiAocmVzb2x2ZXIgPT0gbnVsbCkgeworICAgIAkgIHJldHVybjsKKyAgICAgIH0KKyAgICAgIGlmIChfcGVyTWFuaWZlc3RSZXNvbHZlcnM9PW51bGwpCisgICAgCSAgX3Blck1hbmlmZXN0UmVzb2x2ZXJzID0gbmV3IEFycmF5TGlzdCgpOworICAgICAgdGhpcy5fcGVyTWFuaWZlc3RSZXNvbHZlcnMuYWRkKHJlc29sdmVyKTsKKyAgICAgIAorICAgfQorCisgICAvKioKKyAgICAqIEFkZHMgUmVzb3VyY2UgUmVzb2x2ZXIgZm9yIHJldHJpZXZpbmcgcmVzb3VyY2VzIGF0IHNwZWNpZmllZCA8Y29kZT5VUkk8L2NvZGU+IGF0dHJpYnV0ZSBpbiA8Y29kZT5yZWZlcmVuY2U8L2NvZGU+IGVsZW1lbnQKKyAgICAqCisgICAgKiBAcGFyYW0gcmVzb2x2ZXJTcGkgdGhlIGltcGxlbWVuYXRpbiBzdWJjbGFzcyBvZiB7QGxpbmsgUmVzb3VyY2VSZXNvbHZlclNwaX0gZm9yIHJldHJpZXZpbmcgcmVzb3VyY2UuCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIGFkZFJlc291cmNlUmVzb2x2ZXIoUmVzb3VyY2VSZXNvbHZlclNwaSByZXNvbHZlclNwaSkgeworCisgICAgICBpZiAocmVzb2x2ZXJTcGkgPT0gbnVsbCkgeworICAgIAkgIHJldHVybjsKKyAgICAgIH0KKyAgICAgIGlmIChfcGVyTWFuaWZlc3RSZXNvbHZlcnM9PW51bGwpCisgICAgICAgIAkgIF9wZXJNYW5pZmVzdFJlc29sdmVycyA9IG5ldyBBcnJheUxpc3QoKTsKKyAgICAgIHRoaXMuX3Blck1hbmlmZXN0UmVzb2x2ZXJzLmFkZChuZXcgUmVzb3VyY2VSZXNvbHZlcihyZXNvbHZlclNwaSkpOworICAgICAgCisgICB9CisKKyAgIC8qKgorICAgICogVXNlZCB0byBwYXNzIHBhcmFtZXRlcnMgbGlrZSBwcm94eSBzZXJ2ZXJzIGV0YyB0byB0aGUgUmVzb3VyY2VSZXNvbHZlcgorICAgICogaW1wbGVtZW50YXRpb24uCisgICAgKgorICAgICogQHBhcmFtIGtleSB0aGUga2V5CisgICAgKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHNldFJlc29sdmVyUHJvcGVydHkoU3RyaW5nIGtleSwgU3RyaW5nIHZhbHVlKSB7CisJICAgaWYgKF9yZXNvbHZlclByb3BlcnRpZXM9PW51bGwpIHsKKwkJICAgX3Jlc29sdmVyUHJvcGVydGllcz1uZXcgSGFzaE1hcCgxMCk7CisJICAgfQorICAgICAgdGhpcy5fcmVzb2x2ZXJQcm9wZXJ0aWVzLnB1dChrZXksIHZhbHVlKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBhdCBzcGVjaWZpZWQga2V5CisgICAgKgorICAgICogQHBhcmFtIGtleSB0aGUga2V5CisgICAgKiBAcmV0dXJuIHRoZSB2YWx1ZQorICAgICovCisgICBwdWJsaWMgU3RyaW5nIGdldFJlc29sdmVyUHJvcGVydHkoU3RyaW5nIGtleSkgeworICAgICAgcmV0dXJuIChTdHJpbmcpIHRoaXMuX3Jlc29sdmVyUHJvcGVydGllcy5nZXQoa2V5KTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0U2lnbmVkQ29udGVudEl0ZW0KKyAgICAqCisgICAgKiBAcGFyYW0gaQorICAgICogQHJldHVybiBUaGUgc2lnbmVkIGNvbnRlbnQgb2YgdGhlIGkgcmVmZXJlbmNlLgorICAgICoKKyAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBieXRlW10gZ2V0U2lnbmVkQ29udGVudEl0ZW0oaW50IGkpIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworCisgICAgICB0cnkgeworICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UmVmZXJlbmNlZENvbnRlbnRBZnRlclRyYW5zZm9ybXNJdGVtKGkpLmdldEJ5dGVzKCk7CisgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICB9IGNhdGNoIChDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgIH0gY2F0Y2ggKEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgIH0gY2F0Y2ggKFhNTFNlY3VyaXR5RXhjZXB0aW9uIGV4KSB7CisgICAgICAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0UmVmZXJlbmNlZENvbnRlbnRQcmlvclRyYW5zZm9ybXNJdGVtCisgICAgKgorICAgICogQHBhcmFtIGkKKyAgICAqIEByZXR1cm4gVGhlIGNvbnRlbnRzIGJlZm9yZSB0cmFuc2Zvcm1hdGlvbiBvZiB0aGUgcmVmZXJlbmNlIGkuCisgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBYTUxTaWduYXR1cmVJbnB1dCBnZXRSZWZlcmVuY2VkQ29udGVudEJlZm9yZVRyYW5zZm9ybXNJdGVtKGludCBpKQorICAgICAgICAgICB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworICAgICAgcmV0dXJuIHRoaXMuaXRlbShpKS5nZXRDb250ZW50c0JlZm9yZVRyYW5zZm9ybWF0aW9uKCk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGdldFJlZmVyZW5jZWRDb250ZW50QWZ0ZXJUcmFuc2Zvcm1zSXRlbQorICAgICoKKyAgICAqIEBwYXJhbSBpCisgICAgKiBAcmV0dXJuIFRoZSBjb250ZW50cyBhZnRlciB0cmFuc2Zvcm1hdGlvbiBvZiB0aGUgcmVmZXJlbmNlIGkuCisgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBYTUxTaWduYXR1cmVJbnB1dCBnZXRSZWZlcmVuY2VkQ29udGVudEFmdGVyVHJhbnNmb3Jtc0l0ZW0oaW50IGkpCisgICAgICAgICAgIHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisgICAgICByZXR1cm4gdGhpcy5pdGVtKGkpLmdldENvbnRlbnRzQWZ0ZXJUcmFuc2Zvcm1hdGlvbigpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRTaWduZWRDb250ZW50TGVuZ3RoCisgICAgKgorICAgICogQHJldHVybiBUaGUgbnUsYmVyIG9mIHJlZmVyZW5jZXMgY29udGFpbmVkIGluIHRoaXMgcmVmZXJlbmNlLgorICAgICovCisgICBwdWJsaWMgaW50IGdldFNpZ25lZENvbnRlbnRMZW5ndGgoKSB7CisgICAgICByZXR1cm4gdGhpcy5nZXRMZW5ndGgoKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0QmFzZUxvY2FsTmFtZQorICAgICoKKyAgICAqIEBpbmhlcml0RG9jCisgICAgKi8KKyAgIHB1YmxpYyBTdHJpbmcgZ2V0QmFzZUxvY2FsTmFtZSgpIHsKKyAgICAgIHJldHVybiBDb25zdGFudHMuX1RBR19NQU5JRkVTVDsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zaWduYXR1cmUvTWlzc2luZ1Jlc291cmNlRmFpbHVyZUV4Y2VwdGlvbi5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NpZ25hdHVyZS9NaXNzaW5nUmVzb3VyY2VGYWlsdXJlRXhjZXB0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDAwOGU4NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zaWduYXR1cmUvTWlzc2luZ1Jlc291cmNlRmFpbHVyZUV4Y2VwdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTI3IEBACisKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZTsKKworCisKKworCisvKioKKyAqIFRocm93biBieSB7QGxpbmsgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlNpZ25lZEluZm8jdmVyaWZ5KCl9IHdoZW4KKyAqIHRlc3RpbmcgdGhlIHNpZ25hdHVyZSBmYWlscyBiZWNhdXNlIG9mIHVuaW5pdGlhbGl6ZWQKKyAqIHtAbGluayBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuUmVmZXJlbmNlfXMuCisgKgorICogQGF1dGhvciBDaHJpc3RpYW4gR2V1ZXItUG9sbG1hbm4KKyAqIEBzZWUgUmVmZXJlbmNlTm90SW5pdGlhbGl6ZWRFeGNlcHRpb24KKyAqLworcHVibGljIGNsYXNzIE1pc3NpbmdSZXNvdXJjZUZhaWx1cmVFeGNlcHRpb24gZXh0ZW5kcyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworCisgICAvKioKKwkgKiAKKwkgKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsKKyAgIC8qKiBGaWVsZCB1bmluaXRpYWxpemVkUmVmZXJlbmNlICovCisgICBSZWZlcmVuY2UgdW5pbml0aWFsaXplZFJlZmVyZW5jZSA9IG51bGw7CisKKyAgIC8qKgorICAgICogTWlzc2luZ0tleVJlc291cmNlRmFpbHVyZUV4Y2VwdGlvbiBjb25zdHJ1Y3Rvci4KKyAgICAqIEBwYXJhbSBfbXNnSUQKKyAgICAqIEBwYXJhbSByZWZlcmVuY2UKKyAgICAqIEBzZWUgI2dldFJlZmVyZW5jZQorICAgICovCisgICBwdWJsaWMgTWlzc2luZ1Jlc291cmNlRmFpbHVyZUV4Y2VwdGlvbihTdHJpbmcgX21zZ0lELCBSZWZlcmVuY2UgcmVmZXJlbmNlKSB7CisKKyAgICAgIHN1cGVyKF9tc2dJRCk7CisKKyAgICAgIHRoaXMudW5pbml0aWFsaXplZFJlZmVyZW5jZSA9IHJlZmVyZW5jZTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBNaXNzaW5nUmVzb3VyY2VGYWlsdXJlRXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICogQHBhcmFtIGV4QXJncworICAgICogQHBhcmFtIHJlZmVyZW5jZQorICAgICogQHNlZSAjZ2V0UmVmZXJlbmNlCisgICAgKi8KKyAgIHB1YmxpYyBNaXNzaW5nUmVzb3VyY2VGYWlsdXJlRXhjZXB0aW9uKFN0cmluZyBfbXNnSUQsIE9iamVjdCBleEFyZ3NbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZmVyZW5jZSByZWZlcmVuY2UpIHsKKworICAgICAgc3VwZXIoX21zZ0lELCBleEFyZ3MpOworCisgICAgICB0aGlzLnVuaW5pdGlhbGl6ZWRSZWZlcmVuY2UgPSByZWZlcmVuY2U7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgTWlzc2luZ1Jlc291cmNlRmFpbHVyZUV4Y2VwdGlvbgorICAgICoKKyAgICAqIEBwYXJhbSBfbXNnSUQKKyAgICAqIEBwYXJhbSBfb3JpZ2luYWxFeGNlcHRpb24KKyAgICAqIEBwYXJhbSByZWZlcmVuY2UKKyAgICAqIEBzZWUgI2dldFJlZmVyZW5jZQorICAgICovCisgICBwdWJsaWMgTWlzc2luZ1Jlc291cmNlRmFpbHVyZUV4Y2VwdGlvbihTdHJpbmcgX21zZ0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uIF9vcmlnaW5hbEV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZmVyZW5jZSByZWZlcmVuY2UpIHsKKworICAgICAgc3VwZXIoX21zZ0lELCBfb3JpZ2luYWxFeGNlcHRpb24pOworCisgICAgICB0aGlzLnVuaW5pdGlhbGl6ZWRSZWZlcmVuY2UgPSByZWZlcmVuY2U7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgTWlzc2luZ1Jlc291cmNlRmFpbHVyZUV4Y2VwdGlvbgorICAgICoKKyAgICAqIEBwYXJhbSBfbXNnSUQKKyAgICAqIEBwYXJhbSBleEFyZ3MKKyAgICAqIEBwYXJhbSBfb3JpZ2luYWxFeGNlcHRpb24KKyAgICAqIEBwYXJhbSByZWZlcmVuY2UKKyAgICAqIEBzZWUgI2dldFJlZmVyZW5jZQorICAgICovCisgICBwdWJsaWMgTWlzc2luZ1Jlc291cmNlRmFpbHVyZUV4Y2VwdGlvbihTdHJpbmcgX21zZ0lELCBPYmplY3QgZXhBcmdzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb24gX29yaWdpbmFsRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlIHJlZmVyZW5jZSkgeworCisgICAgICBzdXBlcihfbXNnSUQsIGV4QXJncywgX29yaWdpbmFsRXhjZXB0aW9uKTsKKworICAgICAgdGhpcy51bmluaXRpYWxpemVkUmVmZXJlbmNlID0gcmVmZXJlbmNlOworICAgfQorCisgICAvKioKKyAgICAqIHVzZWQgdG8gc2V0IHRoZSB1bmluaXRpYWxpemVkIHtAbGluayBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuUmVmZXJlbmNlfQorICAgICoKKyAgICAqIEBwYXJhbSByZWZlcmVuY2UgdGhlIFJlZmVyZW5jZSBvYmplY3QKKyAgICAqIEBzZWUgI2dldFJlZmVyZW5jZQorICAgICovCisgICBwdWJsaWMgdm9pZCBzZXRSZWZlcmVuY2UoUmVmZXJlbmNlIHJlZmVyZW5jZSkgeworICAgICAgdGhpcy51bmluaXRpYWxpemVkUmVmZXJlbmNlID0gcmVmZXJlbmNlOworICAgfQorCisgICAvKioKKyAgICAqIHVzZWQgdG8gZ2V0IHRoZSB1bmluaXRpYWxpemVkIHtAbGluayBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuUmVmZXJlbmNlfQorICAgICoKKyAgICAqIFRoaXMgYWxsb3dzIHRvIHN1cHBseSB0aGUgY29ycmVjdCB7QGxpbmsgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZUlucHV0fQorICAgICogdG8gdGhlIHtAbGluayBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuUmVmZXJlbmNlfSB0byB0cnkgYWdhaW4gdmVyaWZpY2F0aW9uLgorICAgICoKKyAgICAqIEByZXR1cm4gdGhlIFJlZmVyZW5jZSBvYmplY3QKKyAgICAqIEBzZWUgI3NldFJlZmVyZW5jZQorICAgICovCisgICBwdWJsaWMgUmVmZXJlbmNlIGdldFJlZmVyZW5jZSgpIHsKKyAgICAgIHJldHVybiB0aGlzLnVuaW5pdGlhbGl6ZWRSZWZlcmVuY2U7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2lnbmF0dXJlL05vZGVGaWx0ZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zaWduYXR1cmUvTm9kZUZpbHRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4YTE3YTcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2lnbmF0dXJlL05vZGVGaWx0ZXIuamF2YQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmU7CisKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworCisvKioKKyAqIEFuIGludGVyZmFjZSB0byB0ZWxsIHRvIHRoZSBjMTRuIGlmIGEgbm9kZSBpcyBpbmNsdWRlZCBvciBub3QgaW4gdGhlIG91dHB1dAorICogQGF1dGhvciByYXVsCisgKgorICovCitwdWJsaWMgaW50ZXJmYWNlIE5vZGVGaWx0ZXIgeworCS8qKgorCSAqIFRlbGxzIGlmIGEgbm9kZSBtdXN0IGJlIG91dHB1dGVkIGluIGMxNG4uCisJICogQHBhcmFtIG4KKwkgKiBAcmV0dXJuIDEgaWYgdGhlIG5vZGUgc2hvdWxkIGJlIG91dHB1dGVkLgorCSAqIAkJICAgMCBpZiBub2RlIG11c3Qgbm90IGJlIG91dHB1dGVkLCAKKwkgKiAJCSAgLTEgaWYgdGhlIG5vZGUgYW5kIGFsbCBpdCdzIGNoaWxkIG11c3Qgbm90IGJlIG91dHB1dC4KKwkgKiAJCQkKKwkgKi8KKwlwdWJsaWMgaW50IGlzTm9kZUluY2x1ZGUoTm9kZSBuKTsKKwkvKioKKwkgKiBUZWxscyBpZiBhIG5vZGUgbXVzdCBiZSBvdXRwdXRlZCBpbiBhIGMxNG4uCisJICogVGhlIGNhbGxlciBtdXN0IGFzc3VyZWQgdGhhdCB0aGlzIG1ldGhvZCBpcyBhbHdheXMgY2FsbAorCSAqIGluIGRvY3VtZW50IG9yZGVyLiBUaGUgaW1wbGVtZW50YXRpb25zIGNhbiB1c2UgdGhpcyAKKwkgKiByZXN0cmljdGlvbiB0byBvcHRpbWl6ZSB0aGUgdHJhbnNmb3JtYXRpb24uCisJICogQHBhcmFtIG4KKwkgKiBAcGFyYW0gbGV2ZWwgdGhlIHJlbGF0aXZlIGxldmVsIGluIHRoZSB0cmVlCisJICogQHJldHVybiAxIGlmIHRoZSBub2RlIHNob3VsZCBiZSBvdXRwdXRlZC4KKwkgKiAJCSAgIDAgaWYgbm9kZSBtdXN0IG5vdCBiZSBvdXRwdXRlZCwgCisJICogCQkgIC0xIGlmIHRoZSBub2RlIGFuZCBhbGwgaXQncyBjaGlsZCBtdXN0IG5vdCBiZSBvdXRwdXQuCisJICovCisJcHVibGljIGludCBpc05vZGVJbmNsdWRlRE8oTm9kZSBuLCBpbnQgbGV2ZWwpOworCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2lnbmF0dXJlL09iamVjdENvbnRhaW5lci5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NpZ25hdHVyZS9PYmplY3RDb250YWluZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODFiNGRkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NpZ25hdHVyZS9PYmplY3RDb250YWluZXIuamF2YQpAQCAtMCwwICsxLDE0NSBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuSWRSZXNvbHZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5TaWduYXR1cmVFbGVtZW50UHJveHk7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworCisKKy8qKgorICogSGFuZGxlcyA8Y29kZT4mbHQ7ZHM6T2JqZWN0Jmd0OzwvY29kZT4gZWxlbWVudHMKKyAqIDxjb2RlPk9iamVjdDxjb2RlPiB7QGxpbmsgRWxlbWVudH0gc3VwcGx5IGZhY2lsaXR5IHdoaWNoIGNhbiBjb250YWluIGFueSBraW5kIGRhdGEKKyAqCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubgorICogJHRvZG8kIGlmIHdlIHJlbW92ZSBjaGlsZGVuLCB0aGUgYm9vbGVhbiB2YWx1ZXMgYXJlIG5vdCB1cGRhdGVkCisgKi8KK3B1YmxpYyBjbGFzcyBPYmplY3RDb250YWluZXIgZXh0ZW5kcyBTaWduYXR1cmVFbGVtZW50UHJveHkgeworCisgICAvKioKKyAgICAqIENvbnN0cnVjdHMge0BsaW5rIE9iamVjdENvbnRhaW5lcn0KKyAgICAqCisgICAgKiBAcGFyYW0gZG9jIHRoZSB7QGxpbmsgRG9jdW1lbnR9IGluIHdoaWNoIDxjb2RlPk9iamVjdDwvY29kZT4gZWxlbWVudCBpcyBwbGFjZWQKKyAgICAqLworICAgcHVibGljIE9iamVjdENvbnRhaW5lcihEb2N1bWVudCBkb2MpIHsKKworICAgICAgc3VwZXIoZG9jKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RzIHtAbGluayBPYmplY3RDb250YWluZXJ9IGZyb20ge0BsaW5rIEVsZW1lbnR9CisgICAgKgorICAgICogQHBhcmFtIGVsZW1lbnQgaXMgPGNvZGU+T2JqZWN0PC9jb2RlPiBlbGVtZW50CisgICAgKiBAcGFyYW0gQmFzZVVSSSB0aGUgVVJJIG9mIHRoZSByZXNvdXJjZSB3aGVyZSB0aGUgWE1MIGluc3RhbmNlIHdhcyBzdG9yZWQKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIE9iamVjdENvbnRhaW5lcihFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJKQorICAgICAgICAgICB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworCisgICAgICBzdXBlcihlbGVtZW50LCBCYXNlVVJJKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBTZXRzIHRoZSA8Y29kZT5JZDwvY29kZT4gYXR0cmlidXRlCisgICAgKgorICAgICogQHBhcmFtIElkIDxjb2RlPklkPC9jb2RlPiBhdHRyaWJ1dGUKKyAgICAqLworICAgcHVibGljIHZvaWQgc2V0SWQoU3RyaW5nIElkKSB7CisKKyAgICAgIGlmICgoSWQgIT0gbnVsbCkpIHsKKyAgICAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuc2V0QXR0cmlidXRlTlMobnVsbCwgQ29uc3RhbnRzLl9BVFRfSUQsIElkKTsKKyAgICAgICAgIElkUmVzb2x2ZXIucmVnaXN0ZXJFbGVtZW50QnlJZCh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LCBJZCk7CisgICAgICB9CisgICB9CisKKyAgIC8qKgorICAgICogUmV0dXJucyB0aGUgPGNvZGU+SWQ8L2NvZGU+IGF0dHJpYnV0ZQorICAgICoKKyAgICAqIEByZXR1cm4gdGhlIDxjb2RlPklkPC9jb2RlPiBhdHRyaWJ1dGUKKyAgICAqLworICAgcHVibGljIFN0cmluZyBnZXRJZCgpIHsKKyAgICAgIHJldHVybiB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmdldEF0dHJpYnV0ZU5TKG51bGwsIENvbnN0YW50cy5fQVRUX0lEKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBTZXRzIHRoZSA8Y29kZT5NaW1lVHlwZTwvY29kZT4gYXR0cmlidXRlCisgICAgKgorICAgICogQHBhcmFtIE1pbWVUeXBlIHRoZSA8Y29kZT5NaW1lVHlwZTwvY29kZT4gYXR0cmlidXRlCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHNldE1pbWVUeXBlKFN0cmluZyBNaW1lVHlwZSkgeworCisgICAgICBpZiAoIChNaW1lVHlwZSAhPSBudWxsKSkgeworICAgICAgICAgdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhudWxsLCBDb25zdGFudHMuX0FUVF9NSU1FVFlQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbWVUeXBlKTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBSZXR1cm5zIHRoZSA8Y29kZT5NaW1lVHlwZTwvY29kZT4gYXR0cmlidXRlCisgICAgKgorICAgICogQHJldHVybiB0aGUgPGNvZGU+TWltZVR5cGU8L2NvZGU+IGF0dHJpYnV0ZQorICAgICovCisgICBwdWJsaWMgU3RyaW5nIGdldE1pbWVUeXBlKCkgeworICAgICAgcmV0dXJuIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0QXR0cmlidXRlTlMobnVsbCwgQ29uc3RhbnRzLl9BVFRfTUlNRVRZUEUpOworICAgfQorCisgICAvKioKKyAgICAqIFNldHMgdGhlIDxjb2RlPkVuY29kaW5nPC9jb2RlPiBhdHRyaWJ1dGUKKyAgICAqCisgICAgKiBAcGFyYW0gRW5jb2RpbmcgdGhlIDxjb2RlPkVuY29kaW5nPC9jb2RlPiBhdHRyaWJ1dGUKKyAgICAqLworICAgcHVibGljIHZvaWQgc2V0RW5jb2RpbmcoU3RyaW5nIEVuY29kaW5nKSB7CisKKyAgICAgIGlmICgoRW5jb2RpbmcgIT0gbnVsbCkpIHsKKyAgICAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuc2V0QXR0cmlidXRlTlMobnVsbCwgQ29uc3RhbnRzLl9BVFRfRU5DT0RJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmNvZGluZyk7CisgICAgICB9CisgICB9CisKKyAgIC8qKgorICAgICogUmV0dXJucyB0aGUgPGNvZGU+RW5jb2Rpbmc8L2NvZGU+IGF0dHJpYnV0ZQorICAgICoKKyAgICAqIEByZXR1cm4gdGhlIDxjb2RlPkVuY29kaW5nPC9jb2RlPiBhdHRyaWJ1dGUKKyAgICAqLworICAgcHVibGljIFN0cmluZyBnZXRFbmNvZGluZygpIHsKKyAgICAgIHJldHVybiB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmdldEF0dHJpYnV0ZU5TKG51bGwsIENvbnN0YW50cy5fQVRUX0VOQ09ESU5HKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBBZGRzIGNoaWxkIE5vZGUKKyAgICAqCisgICAgKiBAcGFyYW0gbm9kZSBjaGlsZCBOb2RlCisgICAgKiBAcmV0dXJuIHRoZSBuZXcgbm9kZSBpbiB0aGUgdHJlZS4KKyAgICAqLworICAgcHVibGljIE5vZGUgYXBwZW5kQ2hpbGQoTm9kZSBub2RlKSB7CisKKyAgICAgIE5vZGUgcmVzdWx0ID0gbnVsbDsKKworICAgICAgcmVzdWx0ID0gdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5hcHBlbmRDaGlsZChub2RlKTsKKworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgIH0KKworICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwdWJsaWMgU3RyaW5nIGdldEJhc2VMb2NhbE5hbWUoKSB7CisgICAgICByZXR1cm4gQ29uc3RhbnRzLl9UQUdfT0JKRUNUOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NpZ25hdHVyZS9SZWZlcmVuY2UuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zaWduYXR1cmUvUmVmZXJlbmNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmUyY2U2ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zaWduYXR1cmUvUmVmZXJlbmNlLmphdmEKQEAgLTAsMCArMSw3NzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZTsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS5zZWN1cml0eS5BY2Nlc3NDb250cm9sbGVyOworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHJpdmlsZWdlZEFjdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYWxnb3JpdGhtcy5NZXNzYWdlRGlnZXN0QWxnb3JpdGhtOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmV4Y2VwdGlvbnMuQmFzZTY0RGVjb2RpbmdFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLkludmFsaWRUcmFuc2Zvcm1FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm07CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybXM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5wYXJhbXMuSW5jbHVzaXZlTmFtZXNwYWNlczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5CYXNlNjQ7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkRpZ2VzdGVyT3V0cHV0U3RyZWFtOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLklkUmVzb2x2ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuU2lnbmF0dXJlRWxlbWVudFByb3h5OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlVuc3luY0J1ZmZlcmVkT3V0cHV0U3RyZWFtOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyLlJlc291cmNlUmVzb2x2ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMucmVzb2x2ZXIuUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcudzNjLmRvbS5BdHRyOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKK2ltcG9ydCBvcmcudzNjLmRvbS5UZXh0OworCisvKioKKyAqIEhhbmRsZXMgPGNvZGU+Jmx0O2RzOlJlZmVyZW5jZSZndDs8L2NvZGU+IGVsZW1lbnRzLgorICoKKyAqIFRoaXMgaW5jbHVkZXM6CisgKgorICogQ29uc3R1Y3QgYSA8Q09ERT5kczpSZWZlcmVuY2U8L0NPREU+IGZyb20gYW4ge0BsaW5rIG9yZy53M2MuZG9tLkVsZW1lbnR9LgorICoKKyAqIDxwPkNyZWF0ZSBhIG5ldyByZWZlcmVuY2U8L3A+CisgKiA8cHJlPgorICogRG9jdW1lbnQgX2RvYzsKKyAqIE1lc3NhZ2VEaWdlc3RBbGdvcml0aG0gc2hhMSA9IE1lc3NhZ2VEaWdlc3RBbGdvcml0aG0uZ2V0SW5zdGFuY2UoImh0dHA6Ly8jc2hhMSIpOworICogUmVmZXJlbmNlIHJlZiA9IG5ldyBSZWZlcmVuY2UobmV3IFhNTFNpZ25hdHVyZUlucHV0KG5ldyBGaWxlSW5wdXRTdHJlYW0oIjEuZ2lmIiksCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL2xvY2FsaG9zdC8xLmdpZiIsCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVHJhbnNmb3JtcykgbnVsbCwgc2hhMSk7CisgKiBFbGVtZW50IHJlZkVsZW0gPSByZWYudG9FbGVtZW50KF9kb2MpOworICogPC9wcmU+CisgKgorICogPHA+VmVyaWZ5IGEgcmVmZXJlbmNlPC9wPgorICogPHByZT4KKyAqIEVsZW1lbnQgcmVmRWxlbSA9IF9kb2MuZ2V0RWxlbWVudCgiUmVmZXJlbmNlIik7IC8vIFBTRVVETworICogUmVmZXJlbmNlIHJlZiA9IG5ldyBSZWZlcmVuY2UocmVmRWxlbSk7CisgKiBTdHJpbmcgdXJsID0gcmVmLmdldFVSSSgpOworICogcmVmLnNldERhdGEobmV3IFhNTFNpZ25hdHVyZUlucHV0KG5ldyBGaWxlSW5wdXRTdHJlYW0odXJsKSkpOworICogaWYgKHJlZi52ZXJpZnkoKSkgeworICogICAgU3lzdGVtLm91dC5wcmludGxuKCJ2ZXJpZmllZCIpOworICogfQorICogPC9wcmU+CisgKgorICogPHByZT4KKyAqICZsdDtlbGVtZW50IG5hbWU9IlJlZmVyZW5jZSIgdHlwZT0iZHM6UmVmZXJlbmNlVHlwZSIvJmd0OworICogICZsdDtjb21wbGV4VHlwZSBuYW1lPSJSZWZlcmVuY2VUeXBlIiZndDsKKyAqICAgICZsdDtzZXF1ZW5jZSZndDsKKyAqICAgICAgJmx0O2VsZW1lbnQgcmVmPSJkczpUcmFuc2Zvcm1zIiBtaW5PY2N1cnM9IjAiLyZndDsKKyAqICAgICAgJmx0O2VsZW1lbnQgcmVmPSJkczpEaWdlc3RNZXRob2QiLyZndDsKKyAqICAgICAgJmx0O2VsZW1lbnQgcmVmPSJkczpEaWdlc3RWYWx1ZSIvJmd0OworICogICAgJmx0Oy9zZXF1ZW5jZSZndDsKKyAqICAgICZsdDthdHRyaWJ1dGUgbmFtZT0iSWQiIHR5cGU9IklEIiB1c2U9Im9wdGlvbmFsIi8mZ3Q7CisgKiAgICAmbHQ7YXR0cmlidXRlIG5hbWU9IlVSSSIgdHlwZT0iYW55VVJJIiB1c2U9Im9wdGlvbmFsIi8mZ3Q7CisgKiAgICAmbHQ7YXR0cmlidXRlIG5hbWU9IlR5cGUiIHR5cGU9ImFueVVSSSIgdXNlPSJvcHRpb25hbCIvJmd0OworICogICZsdDsvY29tcGxleFR5cGUmZ3Q7CisgKiA8L3ByZT4KKyAqCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubgorICogQHNlZSBPYmplY3RDb250YWluZXIKKyAqIEBzZWUgTWFuaWZlc3QKKyAqLworcHVibGljIGNsYXNzIFJlZmVyZW5jZSBleHRlbmRzIFNpZ25hdHVyZUVsZW1lbnRQcm94eSB7CisKKyAgIC8qKgorICAgICogTG9vayB1cCB1c2VDMTROMTEgc3lzdGVtIHByb3BlcnR5LiBJZiB0cnVlLCBhbiBleHBsaWNpdCBDMTROMTEgdHJhbnNmb3JtCisgICAgKiB3aWxsIGJlIGFkZGVkIGlmIG5lY2Vzc2FyeSB3aGVuIGdlbmVyYXRpbmcgdGhlIHNpZ25hdHVyZS4gU2VlIHNlY3Rpb24KKyAgICAqIDMuMS4xIG9mIGh0dHA6Ly93d3cudzMub3JnLzIwMDcveG1sc2VjL0RyYWZ0cy94bWxkc2lnLWNvcmUvIGZvciBtb3JlIGluZm8uCisgICAgKi8KKyAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gdXNlQzE0TjExID0gKChCb29sZWFuKQorICAgICAgQWNjZXNzQ29udHJvbGxlci5kb1ByaXZpbGVnZWQobmV3IFByaXZpbGVnZWRBY3Rpb24oKSB7CisgICAgICAgICBwdWJsaWMgT2JqZWN0IHJ1bigpIHsKKyAgICAgICAgICAgIHJldHVybiBCb29sZWFuLnZhbHVlT2YoQm9vbGVhbi5nZXRCb29sZWFuCisgICAgICAgICAgICAgICAoIm9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnVzZUMxNE4xMSIpKTsKKyAgICAgICAgIH0KKyAgICAgIH0pKS5ib29sZWFuVmFsdWUoKTsKKworICAgLyoqIEZpZWxkIENhY2hlU2lnbmVkTm9kZXMgKi8KKyAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgYm9vbGVhbiBDYWNoZVNpZ25lZE5vZGVzID0gZmFsc2U7CisKKyAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZyhSZWZlcmVuY2UuY2xhc3MuZ2V0TmFtZSgpKTsKKworICAgLyoqIEZpZWxkIE9CSkVDVF9VUkkgKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9CSkVDVF9VUkkgPSBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBDb25zdGFudHMuX1RBR19PQkpFQ1Q7CisKKyAgIC8qKiBGaWVsZCBNQU5JRkVTVF9VUkkgKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE1BTklGRVNUX1VSSSA9IENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgQ29uc3RhbnRzLl9UQUdfTUFOSUZFU1Q7CisgICAvL0otCisgICBNYW5pZmVzdCBfbWFuaWZlc3QgPSBudWxsOworICAgWE1MU2lnbmF0dXJlSW5wdXQgX3RyYW5zZm9ybXNPdXRwdXQ7CisgICAvL0orCisKK3ByaXZhdGUgVHJhbnNmb3JtcyB0cmFuc2Zvcm1zOworCitwcml2YXRlIEVsZW1lbnQgZGlnZXN0TWV0aG9kRWxlbTsKKworcHJpdmF0ZSBFbGVtZW50IGRpZ2VzdFZhbHVlRWxlbWVudDsKKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBSZWZlcmVuY2UKKyAgICAqCisgICAgKiBAcGFyYW0gZG9jIHRoZSB7QGxpbmsgRG9jdW1lbnR9IGluIHdoaWNoIDxjb2RlPlhNTHNpZ25hdHVyZTwvY29kZT4gaXMgcGxhY2VkCisgICAgKiBAcGFyYW0gQmFzZVVSSSB0aGUgVVJJIG9mIHRoZSByZXNvdXJjZSB3aGVyZSB0aGUgWE1MIGluc3RhbmNlIHdpbGwgYmUgc3RvcmVkCisgICAgKiBAcGFyYW0gUmVmZXJlbmNlVVJJIFVSSSBpbmRpY2F0ZSB3aGVyZSBpcyBkYXRhIHdoaWNoIHdpbGwgZGlnZXN0ZWQKKyAgICAqIEBwYXJhbSBtYW5pZmVzdAorICAgICogQHBhcmFtIHRyYW5zZm9ybXMge0BsaW5rIFRyYW5zZm9ybXN9IGFwcGxpZWQgdG8gZGF0YQorICAgICogQHBhcmFtIG1lc3NhZ2VEaWdlc3RBbGdvcml0aG0ge0BsaW5rIE1lc3NhZ2VEaWdlc3RBbGdvcml0aG0gRGlnZXN0IGFsZ29yaXRobX0gd2hpY2ggaXMgYXBwbGllZCB0byB0aGUgZGF0YQorICAgICogVE9ETyBzaG91bGQgd2UgdGhyb3cgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIGlmIE1lc3NhZ2VEaWdlc3RBbGdvVVJJIGlzIHdyb25nPworICAgICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAqLworICAgcHJvdGVjdGVkIFJlZmVyZW5jZShEb2N1bWVudCBkb2MsIFN0cmluZyBCYXNlVVJJLCBTdHJpbmcgUmVmZXJlbmNlVVJJLCBNYW5pZmVzdCBtYW5pZmVzdCwgVHJhbnNmb3JtcyB0cmFuc2Zvcm1zLCBTdHJpbmcgbWVzc2FnZURpZ2VzdEFsZ29yaXRobSkKKyAgICAgICAgICAgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisKKyAgICAgIHN1cGVyKGRvYyk7CisKKyAgICAgIFhNTFV0aWxzLmFkZFJldHVyblRvRWxlbWVudCh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50KTsKKworICAgICAgdGhpcy5fYmFzZVVSSSA9IEJhc2VVUkk7CisgICAgICB0aGlzLl9tYW5pZmVzdCA9IG1hbmlmZXN0OworCisgICAgICB0aGlzLnNldFVSSShSZWZlcmVuY2VVUkkpOworCisgICAgICAvLyBpbXBvcnRhbnQ6IFRoZSBkczpSZWZlcmVuY2UgbXVzdCBiZSBhZGRlZCB0byB0aGUgYXNzb2NpYXRlZCBkczpNYW5pZmVzdAorICAgICAgLy8gICAgICAgICAgICBvciBkczpTaWduZWRJbmZvIF9iZWZvcmVfIHRoZSB0aGlzLnJlc29sdmVyUmVzdWx0KCkgaXMgY2FsbGVkLgorICAgICAgLy8gdGhpcy5fbWFuaWZlc3QuYXBwZW5kQ2hpbGQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCk7CisgICAgICAvLyB0aGlzLl9tYW5pZmVzdC5hcHBlbmRDaGlsZCh0aGlzLl9kb2MuY3JlYXRlVGV4dE5vZGUoIlxuIikpOworCisgICAgICBpZiAodHJhbnNmb3JtcyAhPSBudWxsKSB7CisgICAgCSAgdGhpcy50cmFuc2Zvcm1zPXRyYW5zZm9ybXM7CisgICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmFwcGVuZENoaWxkKHRyYW5zZm9ybXMuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgIFhNTFV0aWxzLmFkZFJldHVyblRvRWxlbWVudCh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50KTsKKyAgICAgIH0KKyAgICAgIHsKKyAgICAgICAgIE1lc3NhZ2VEaWdlc3RBbGdvcml0aG0gbWRhID0KKyAgICAgICAgICAgIE1lc3NhZ2VEaWdlc3RBbGdvcml0aG0uZ2V0SW5zdGFuY2UodGhpcy5fZG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlRGlnZXN0QWxnb3JpdGhtKTsKKworICAgICAgICAgZGlnZXN0TWV0aG9kRWxlbT1tZGEuZ2V0RWxlbWVudCgpOworICAgICAgICAgdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5hcHBlbmRDaGlsZChkaWdlc3RNZXRob2RFbGVtKTsKKyAgICAgICAgIFhNTFV0aWxzLmFkZFJldHVyblRvRWxlbWVudCh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50KTsKKyAgICAgIH0KKyAgICAgIHsKKyAgICAgICAgIGRpZ2VzdFZhbHVlRWxlbWVudCA9CisgICAgICAgICAgICBYTUxVdGlscy5jcmVhdGVFbGVtZW50SW5TaWduYXR1cmVTcGFjZSh0aGlzLl9kb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMuX1RBR19ESUdFU1RWQUxVRSk7CisKKyAgICAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQoZGlnZXN0VmFsdWVFbGVtZW50KTsKKyAgICAgICAgIFhNTFV0aWxzLmFkZFJldHVyblRvRWxlbWVudCh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50KTsKKyAgICAgIH0KKyAgIH0KKworCisgICAvKioKKyAgICAqIEJ1aWxkIGEge0BsaW5rIFJlZmVyZW5jZX0gZnJvbSBhbiB7QGxpbmsgRWxlbWVudH0KKyAgICAqCisgICAgKiBAcGFyYW0gZWxlbWVudCA8Y29kZT5SZWZlcmVuY2U8L2NvZGU+IGVsZW1lbnQKKyAgICAqIEBwYXJhbSBCYXNlVVJJIHRoZSBVUkkgb2YgdGhlIHJlc291cmNlIHdoZXJlIHRoZSBYTUwgaW5zdGFuY2Ugd2FzIHN0b3JlZAorICAgICogQHBhcmFtIG1hbmlmZXN0IGlzIHRoZSB7QGxpbmsgTWFuaWZlc3R9IG9mIHtAbGluayBTaWduZWRJbmZvfSBpbiB3aGljaCB0aGUgUmVmZXJlbmNlIG9jY3Vycy4gV2UgbmVlZCB0aGlzIGJlY2F1c2UgdGhlIE1hbmlmZXN0IGhhcyB0aGUgaW5kaXZpZHVhbCB7QGxpbmsgUmVzb3VyY2VSZXNvbHZlcn1zIHdoY2loIGhhdmUgYmVlbiBzZXQgYnkgdGhlIHVzZXIKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgcHJvdGVjdGVkIFJlZmVyZW5jZShFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJLCBNYW5pZmVzdCBtYW5pZmVzdCkKKyAgICAgICAgICAgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKworICAgICAgc3VwZXIoZWxlbWVudCwgQmFzZVVSSSk7CisgICAgICB0aGlzLl9iYXNlVVJJPUJhc2VVUkk7CisgICAgICBFbGVtZW50IGVsPVhNTFV0aWxzLmdldE5leHRFbGVtZW50KGVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpKTsKKyAgICAgIGlmIChDb25zdGFudHMuX1RBR19UUkFOU0ZPUk1TLmVxdWFscyhlbC5nZXRMb2NhbE5hbWUoKSkgJiYgCisgICAgCQkgIENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMuZXF1YWxzKGVsLmdldE5hbWVzcGFjZVVSSSgpKSkgeworICAgIAkgIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3JtcyhlbCx0aGlzLl9iYXNlVVJJKTsKKyAgICAJICBlbD1YTUxVdGlscy5nZXROZXh0RWxlbWVudChlbC5nZXROZXh0U2libGluZygpKTsKKyAgICAgIH0KKyAgICAgIGRpZ2VzdE1ldGhvZEVsZW0gPSBlbDsKKyAgICAgIGRpZ2VzdFZhbHVlRWxlbWVudCA9WE1MVXRpbHMuZ2V0TmV4dEVsZW1lbnQoZGlnZXN0TWV0aG9kRWxlbS5nZXROZXh0U2libGluZygpKTs7CisgICAgICB0aGlzLl9tYW5pZmVzdCA9IG1hbmlmZXN0OworICAgfQorCisgICAvKioKKyAgICAqIFJldHVybnMge0BsaW5rIE1lc3NhZ2VEaWdlc3RBbGdvcml0aG19CisgICAgKgorICAgICoKKyAgICAqIEByZXR1cm4ge0BsaW5rIE1lc3NhZ2VEaWdlc3RBbGdvcml0aG19CisgICAgKgorICAgICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIE1lc3NhZ2VEaWdlc3RBbGdvcml0aG0gZ2V0TWVzc2FnZURpZ2VzdEFsZ29yaXRobSgpCisgICAgICAgICAgIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworICAgICAgCisgICAgICBpZiAoZGlnZXN0TWV0aG9kRWxlbSA9PSBudWxsKSB7CisgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgIH0KKworICAgICAgU3RyaW5nIHVyaSA9IGRpZ2VzdE1ldGhvZEVsZW0uZ2V0QXR0cmlidXRlTlMobnVsbCwKKyAgICAgICAgIENvbnN0YW50cy5fQVRUX0FMR09SSVRITSk7CisKKwkgIGlmICh1cmkgPT0gbnVsbCkgeworCQkgIHJldHVybiBudWxsOworCSAgfQorCisgICAgICByZXR1cm4gTWVzc2FnZURpZ2VzdEFsZ29yaXRobS5nZXRJbnN0YW5jZSh0aGlzLl9kb2MsIHVyaSk7CisgICB9CisKKyAgIC8qKgorICAgICogU2V0cyB0aGUgPGNvZGU+VVJJPC9jb2RlPiBvZiB0aGlzIDxjb2RlPlJlZmVyZW5jZTwvY29kZT4gZWxlbWVudAorICAgICoKKyAgICAqIEBwYXJhbSBVUkkgdGhlIDxjb2RlPlVSSTwvY29kZT4gb2YgdGhpcyA8Y29kZT5SZWZlcmVuY2U8L2NvZGU+IGVsZW1lbnQKKyAgICAqLworICAgcHVibGljIHZvaWQgc2V0VVJJKFN0cmluZyBVUkkpIHsKKworICAgICAgaWYgKCBVUkkgIT0gbnVsbCkgeworICAgICAgICAgdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhudWxsLCBDb25zdGFudHMuX0FUVF9VUkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVSSSk7CisgICAgICB9CisgICB9CisKKyAgIC8qKgorICAgICogUmV0dXJucyB0aGUgPGNvZGU+VVJJPC9jb2RlPiBvZiB0aGlzIDxjb2RlPlJlZmVyZW5jZTwvY29kZT4gZWxlbWVudAorICAgICoKKyAgICAqIEByZXR1cm4gVVJJIHRoZSA8Y29kZT5VUkk8L2NvZGU+IG9mIHRoaXMgPGNvZGU+UmVmZXJlbmNlPC9jb2RlPiBlbGVtZW50CisgICAgKi8KKyAgIHB1YmxpYyBTdHJpbmcgZ2V0VVJJKCkgeworICAgICAgcmV0dXJuIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0QXR0cmlidXRlTlMobnVsbCwgQ29uc3RhbnRzLl9BVFRfVVJJKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBTZXRzIHRoZSA8Y29kZT5JZDwvY29kZT4gYXR0cmlidXRlIG9mIHRoaXMgPGNvZGU+UmVmZXJlbmNlPC9jb2RlPiBlbGVtZW50CisgICAgKgorICAgICogQHBhcmFtIElkIHRoZSA8Y29kZT5JZDwvY29kZT4gYXR0cmlidXRlIG9mIHRoaXMgPGNvZGU+UmVmZXJlbmNlPC9jb2RlPiBlbGVtZW50CisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHNldElkKFN0cmluZyBJZCkgeworCisgICAgICBpZiAoIElkICE9IG51bGwgKSB7CisgICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LnNldEF0dHJpYnV0ZU5TKG51bGwsIENvbnN0YW50cy5fQVRUX0lELCBJZCk7CisgICAgICAgICBJZFJlc29sdmVyLnJlZ2lzdGVyRWxlbWVudEJ5SWQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCwgSWQpOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIFJldHVybnMgdGhlIDxjb2RlPklkPC9jb2RlPiBhdHRyaWJ1dGUgb2YgdGhpcyA8Y29kZT5SZWZlcmVuY2U8L2NvZGU+IGVsZW1lbnQKKyAgICAqCisgICAgKiBAcmV0dXJuIElkIHRoZSA8Y29kZT5JZDwvY29kZT4gYXR0cmlidXRlIG9mIHRoaXMgPGNvZGU+UmVmZXJlbmNlPC9jb2RlPiBlbGVtZW50CisgICAgKi8KKyAgIHB1YmxpYyBTdHJpbmcgZ2V0SWQoKSB7CisgICAgICByZXR1cm4gdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5nZXRBdHRyaWJ1dGVOUyhudWxsLCBDb25zdGFudHMuX0FUVF9JRCk7CisgICB9CisKKyAgIC8qKgorICAgICogU2V0cyB0aGUgPGNvZGU+dHlwZTwvY29kZT4gYXR0dGlidXRlIG9mIHRoZSBSZWZlcmVuY2UgaW5kaWNhdGUgd2hldGhlciBhbiA8Y29kZT5kczpPYmplY3Q8L2NvZGU+LCA8Y29kZT5kczpTaWduYXR1cmVQcm9wZXJ0eTwvY29kZT4sIG9yIDxjb2RlPmRzOk1hbmlmZXN0PC9jb2RlPiBlbGVtZW50CisgICAgKgorICAgICogQHBhcmFtIFR5cGUgdGhlIDxjb2RlPnR5cGU8L2NvZGU+IGF0dHJpYnV0ZSBvZiB0aGUgUmVmZXJlbmNlCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHNldFR5cGUoU3RyaW5nIFR5cGUpIHsKKworICAgICAgaWYgKFR5cGUgIT0gbnVsbCkgeworICAgICAgICAgdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhudWxsLCBDb25zdGFudHMuX0FUVF9UWVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlKTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBSZXR1cm4gdGhlIDxjb2RlPnR5cGU8L2NvZGU+IGF0dHRpYnV0ZSBvZiB0aGUgUmVmZXJlbmNlIGluZGljYXRlIHdoZXRoZXIgYW4gPGNvZGU+ZHM6T2JqZWN0PC9jb2RlPiwgPGNvZGU+ZHM6U2lnbmF0dXJlUHJvcGVydHk8L2NvZGU+LCBvciA8Y29kZT5kczpNYW5pZmVzdDwvY29kZT4gZWxlbWVudAorICAgICoKKyAgICAqIEByZXR1cm4gdGhlIDxjb2RlPnR5cGU8L2NvZGU+IGF0dHJpYnV0ZSBvZiB0aGUgUmVmZXJlbmNlCisgICAgKi8KKyAgIHB1YmxpYyBTdHJpbmcgZ2V0VHlwZSgpIHsKKyAgICAgIHJldHVybiB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmdldEF0dHJpYnV0ZU5TKG51bGwsCisgICAgICAgICAgICAgIENvbnN0YW50cy5fQVRUX1RZUEUpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBpc1JlZmVyZW5jZVRvT2JqZWN0CisgICAgKgorICAgICogVGhpcyByZXR1cm5zIHRydWUgaWYgdGhlIDxDT0RFPlR5cGU8L0NPREU+IGF0dHJpYnV0ZSBvZiB0aGUKKyAgICAqIDxDT0RFPlJlZmVybmNlPC9DT0RFPiBlbGVtZW50IHBvaW50cyB0byBhIDxDT0RFPiNPYmplY3Q8L0NPREU+IGVsZW1lbnQKKyAgICAqCisgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIFJlZmVyZW5jZSB0eXBlIGluZGljYXRlcyB0aGF0IHRoaXMgUmVmZXJlbmNlIHBvaW50cyB0byBhbiA8Y29kZT5PYmplY3Q8L2NvZGU+CisgICAgKi8KKyAgIHB1YmxpYyBib29sZWFuIHR5cGVJc1JlZmVyZW5jZVRvT2JqZWN0KCkgeworCisgICAgICBpZiAoUmVmZXJlbmNlLk9CSkVDVF9VUkkuZXF1YWxzKHRoaXMuZ2V0VHlwZSgpKSkgeworICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9CisKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgaXNSZWZlcmVuY2VUb01hbmlmZXN0CisgICAgKgorICAgICogVGhpcyByZXR1cm5zIHRydWUgaWYgdGhlIDxDT0RFPlR5cGU8L0NPREU+IGF0dHJpYnV0ZSBvZiB0aGUKKyAgICAqIDxDT0RFPlJlZmVybmNlPC9DT0RFPiBlbGVtZW50IHBvaW50cyB0byBhIDxDT0RFPiNNYW5pZmVzdDwvQ09ERT4gZWxlbWVudAorICAgICoKKyAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgUmVmZXJlbmNlIHR5cGUgaW5kaWNhdGVzIHRoYXQgdGhpcyBSZWZlcmVuY2UgcG9pbnRzIHRvIGEge0BsaW5rIE1hbmlmZXN0fQorICAgICovCisgICBwdWJsaWMgYm9vbGVhbiB0eXBlSXNSZWZlcmVuY2VUb01hbmlmZXN0KCkgeworCisgICAgICBpZiAoUmVmZXJlbmNlLk1BTklGRVNUX1VSSS5lcXVhbHModGhpcy5nZXRUeXBlKCkpKSB7CisgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKworICAgICAgcmV0dXJuIGZhbHNlOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBzZXREaWdlc3RWYWx1ZUVsZW1lbnQKKyAgICAqCisgICAgKiBAcGFyYW0gZGlnZXN0VmFsdWUKKyAgICAqLworICAgcHJpdmF0ZSB2b2lkIHNldERpZ2VzdFZhbHVlRWxlbWVudChieXRlW10gZGlnZXN0VmFsdWUpCisgICB7CisgICAgICAgICBOb2RlIG49ZGlnZXN0VmFsdWVFbGVtZW50LmdldEZpcnN0Q2hpbGQoKTsKKyAgICAgICAgIHdoaWxlIChuIT1udWxsKSB7CisgICAgICAgICAgICAgICBkaWdlc3RWYWx1ZUVsZW1lbnQucmVtb3ZlQ2hpbGQobik7CisgICAgICAgICAgICAgICBuID0gbi5nZXROZXh0U2libGluZygpOworICAgICAgICAgfQorCisgICAgICAgICBTdHJpbmcgYmFzZTY0Y29kZWRWYWx1ZSA9IEJhc2U2NC5lbmNvZGUoZGlnZXN0VmFsdWUpOworICAgICAgICAgVGV4dCB0ID0gdGhpcy5fZG9jLmNyZWF0ZVRleHROb2RlKGJhc2U2NGNvZGVkVmFsdWUpOworCisgICAgICAgICBkaWdlc3RWYWx1ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodCk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGdlbmVyYXRlRGlnZXN0VmFsdWUKKyAgICAqCisgICAgKiBAdGhyb3dzIFJlZmVyZW5jZU5vdEluaXRpYWxpemVkRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgdm9pZCBnZW5lcmF0ZURpZ2VzdFZhbHVlKCkKKyAgICAgICAgICAgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiwgUmVmZXJlbmNlTm90SW5pdGlhbGl6ZWRFeGNlcHRpb24geworICAgICAgdGhpcy5zZXREaWdlc3RWYWx1ZUVsZW1lbnQodGhpcy5jYWxjdWxhdGVEaWdlc3QoZmFsc2UpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBSZXR1cm5zIHRoZSBYTUxTaWduYXR1cmVJbnB1dCB3aGljaCBpcyBjcmVhdGVkIGJ5IGRlLXJlZmVyZW5jaW5nIHRoZSBVUkkgYXR0cmlidXRlLgorICAgICogQHJldHVybiB0aGUgWE1MU2lnbmF0dXJlSW5wdXQgb2YgdGhlIHNvdXJjZSBvZiB0aGlzIHJlZmVyZW5jZQorICAgICogQHRocm93cyBSZWZlcmVuY2VOb3RJbml0aWFsaXplZEV4Y2VwdGlvbiBJZiB0aGUgcmVzb2x2ZXIgZm91bmQgYW55CisgICAgKiAgcHJvYmxlbSByZXNvbHZpbmcgdGhlIHJlZmVyZW5jZQorICAgICovCisgICBwdWJsaWMgWE1MU2lnbmF0dXJlSW5wdXQgZ2V0Q29udGVudHNCZWZvcmVUcmFuc2Zvcm1hdGlvbigpCisgICAgICAgICAgIHRocm93cyBSZWZlcmVuY2VOb3RJbml0aWFsaXplZEV4Y2VwdGlvbiB7CisKKyAgICAgIHRyeSB7CisgICAgICAgICBBdHRyIFVSSUF0dHIgPSB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmdldEF0dHJpYnV0ZU5vZGVOUyhudWxsLAorICAgICAgICAgICAgQ29uc3RhbnRzLl9BVFRfVVJJKTsKKyAgICAgICAgIFN0cmluZyBVUkk7CisKKyAgICAgICAgIGlmIChVUklBdHRyID09IG51bGwpIHsKKyAgICAgICAgICAgIFVSSSA9IG51bGw7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgVVJJID0gVVJJQXR0ci5nZXROb2RlVmFsdWUoKTsKKyAgICAgICAgIH0KKworICAgICAgICAgUmVzb3VyY2VSZXNvbHZlciByZXNvbHZlciA9IFJlc291cmNlUmVzb2x2ZXIuZ2V0SW5zdGFuY2UoVVJJQXR0ciwKKyAgICAgICAgICAgIHRoaXMuX2Jhc2VVUkksIHRoaXMuX21hbmlmZXN0Ll9wZXJNYW5pZmVzdFJlc29sdmVycyk7CisKKyAgICAgICAgIGlmIChyZXNvbHZlciA9PSBudWxsKSB7CisgICAgICAgICAgICBPYmplY3QgZXhBcmdzW10gPSB7IFVSSSB9OworCisgICAgICAgICAgICB0aHJvdyBuZXcgUmVmZXJlbmNlTm90SW5pdGlhbGl6ZWRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAic2lnbmF0dXJlLlZlcmlmaWNhdGlvbi5SZWZlcmVuY2UuTm9JbnB1dCIsIGV4QXJncyk7CisgICAgICAgICB9CisKKyAgICAgICAgIHJlc29sdmVyLmFkZFByb3BlcnRpZXModGhpcy5fbWFuaWZlc3QuX3Jlc29sdmVyUHJvcGVydGllcyk7CisKKyAgICAgICAgIFhNTFNpZ25hdHVyZUlucHV0IGlucHV0ID0gcmVzb2x2ZXIucmVzb2x2ZShVUklBdHRyLCB0aGlzLl9iYXNlVVJJKTsKKyAgICAgICAgICAgICAgICAgIAorCisgICAgICAgICByZXR1cm4gaW5wdXQ7CisgICAgICB9ICBjYXRjaCAoUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFJlZmVyZW5jZU5vdEluaXRpYWxpemVkRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgIH0gY2F0Y2ggKFhNTFNlY3VyaXR5RXhjZXB0aW9uIGV4KSB7CisgICAgICAgICB0aHJvdyBuZXcgUmVmZXJlbmNlTm90SW5pdGlhbGl6ZWRFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIFJldHVybnMgdGhlIGRhdGEgd2hpY2ggaXMgcmVmZXJlbmNlZCBieSB0aGUgVVJJIGF0dHJpYnV0ZS4gVGhpcyBtZXRob2QKKyAgICAqIG9ubHkgd29ya3Mgd29ya3MgYWZ0ZXIgYSBjYWxsIHRvIHZlcmlmeS4KKyAgICAqIEByZXR1cm4gYSBYTUxTaWduYXR1cmUgd2l0aCBhIGJ5dGUgYXJyYXkuCisgICAgKiBAdGhyb3dzIFJlZmVyZW5jZU5vdEluaXRpYWxpemVkRXhjZXB0aW9uCisgICAgKgorICAgICogQGRlcHJlY2F0ZWQgdXNlIGdldENvbnRlbnRzQmVmb3JlVHJhbnNmb3JtYXRpb24KKyAgICAqLworICAgcHVibGljIFhNTFNpZ25hdHVyZUlucHV0IGdldFRyYW5zZm9ybXNJbnB1dCgpIHRocm93cyBSZWZlcmVuY2VOb3RJbml0aWFsaXplZEV4Y2VwdGlvbiAgIAorCXsgIAorICAgCQlYTUxTaWduYXR1cmVJbnB1dCBpbnB1dD1nZXRDb250ZW50c0JlZm9yZVRyYW5zZm9ybWF0aW9uKCk7CisgICAJCVhNTFNpZ25hdHVyZUlucHV0IHJlc3VsdDsKKwkJdHJ5IHsKKwkJCXJlc3VsdCA9IG5ldyBYTUxTaWduYXR1cmVJbnB1dChpbnB1dC5nZXRCeXRlcygpKTsKKwkJfSBjYXRjaCAoQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiBleCkgeworCQkJIHRocm93IG5ldyBSZWZlcmVuY2VOb3RJbml0aWFsaXplZEV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisJCX0gY2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7CisJCQkgdGhyb3cgbmV3IFJlZmVyZW5jZU5vdEluaXRpYWxpemVkRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKwkJfQorCQlyZXN1bHQuc2V0U291cmNlVVJJKGlucHV0LmdldFNvdXJjZVVSSSgpKTsgICAKKwkJcmV0dXJuIHJlc3VsdDsKKwkKKyAgIH0KKworICAgcHJpdmF0ZSBYTUxTaWduYXR1cmVJbnB1dCBnZXRDb250ZW50c0FmdGVyVHJhbnNmb3JtYXRpb24oWE1MU2lnbmF0dXJlSW5wdXQgaW5wdXQsIE91dHB1dFN0cmVhbSBvcykKKyAgICAgICAgICAgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisKKyAgICAgIHRyeSB7CisgICAgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSB0aGlzLmdldFRyYW5zZm9ybXMoKTsKKyAgICAgICAgIFhNTFNpZ25hdHVyZUlucHV0IG91dHB1dCA9IG51bGw7CisKKyAgICAgICAgIGlmICh0cmFuc2Zvcm1zICE9IG51bGwpIHsKKyAgICAgICAgICAgIG91dHB1dCA9IHRyYW5zZm9ybXMucGVyZm9ybVRyYW5zZm9ybXMoaW5wdXQsb3MpOworICAgICAgICAgICAgdGhpcy5fdHJhbnNmb3Jtc091dHB1dCA9IG91dHB1dDsvL25ldyBYTUxTaWduYXR1cmVJbnB1dChvdXRwdXQuZ2V0Qnl0ZXMoKSk7CisKKyAgICAgICAgICAgIC8vdGhpcy5fdHJhbnNmb3Jtc091dHB1dC5zZXRTb3VyY2VVUkkob3V0cHV0LmdldFNvdXJjZVVSSSgpKTsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBvdXRwdXQgPSBpbnB1dDsKKyAgICAgICAgIH0KKworICAgICAgICAgcmV0dXJuIG91dHB1dDsKKyAgICAgIH0gY2F0Y2ggKFJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgfSBjYXRjaCAoQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICB9IGNhdGNoIChJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICB9IGNhdGNoIChUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICB9IGNhdGNoIChYTUxTZWN1cml0eUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICB9CisgICB9CisKKyAgIC8qKgorICAgICogUmV0dXJucyB0aGUgWE1MU2lnbmF0dXJlSW5wdXQgd2hpY2ggaXMgdGhlIHJlc3VsdCBvZiB0aGUgVHJhbnNmb3Jtcy4KKyAgICAqIEByZXR1cm4gYSBYTUxTaWduYXR1cmVJbnB1dCB3aXRoIGFsbCB0cmFuc2Zvcm1hdGlvbnMgYXBwbGllZC4KKyAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBYTUxTaWduYXR1cmVJbnB1dCBnZXRDb250ZW50c0FmdGVyVHJhbnNmb3JtYXRpb24oKQorICAgICAgICAgICB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKworICAgICAgWE1MU2lnbmF0dXJlSW5wdXQgaW5wdXQgPSB0aGlzLmdldENvbnRlbnRzQmVmb3JlVHJhbnNmb3JtYXRpb24oKTsKKworICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29udGVudHNBZnRlclRyYW5zZm9ybWF0aW9uKGlucHV0LCBudWxsKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBYTUxTaWduYXR1cmVJbnB1dCB3aGljaCByZXByZXNlbnRzIHRoZSBub2RlIHNldCBiZWZvcmUKKyAgICAqIHNvbWUga2luZCBvZiBjYW5vbmljYWxpemF0aW9uIGlzIGFwcGxpZWQgZm9yIHRoZSBmaXJzdCB0aW1lLgorICAgICogQHJldHVybiBHZXRzIGEgdGhlIG5vZGUgZG9pbmcgZXZlcnl0aGluZyB0aWxsIHRoZSBmaXJzdCBjMTRuIGlzIG5lZWRlZAorICAgICoKKyAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBYTUxTaWduYXR1cmVJbnB1dCBnZXROb2Rlc2V0QmVmb3JlRmlyc3RDYW5vbmljYWxpemF0aW9uKCkKKyAgICAgICAgICAgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisKKyAgICAgIHRyeSB7CisgICAgICAgICBYTUxTaWduYXR1cmVJbnB1dCBpbnB1dCA9IHRoaXMuZ2V0Q29udGVudHNCZWZvcmVUcmFuc2Zvcm1hdGlvbigpOworICAgICAgICAgWE1MU2lnbmF0dXJlSW5wdXQgb3V0cHV0ID0gaW5wdXQ7CisgICAgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSB0aGlzLmdldFRyYW5zZm9ybXMoKTsKKworICAgICAgICAgaWYgKHRyYW5zZm9ybXMgIT0gbnVsbCkgeworICAgICAgICAgICAgZG9UcmFuc2Zvcm1zOiBmb3IgKGludCBpID0gMDsgaSA8IHRyYW5zZm9ybXMuZ2V0TGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgICAgVHJhbnNmb3JtIHQgPSB0cmFuc2Zvcm1zLml0ZW0oaSk7CisgICAgICAgICAgICAgICBTdHJpbmcgVVJJID0gdC5nZXRVUkkoKTsKKworICAgICAgICAgICAgICAgaWYgKFVSSS5lcXVhbHMoVHJhbnNmb3JtcworICAgICAgICAgICAgICAgICAgICAgICAuVFJBTlNGT1JNX0MxNE5fRVhDTF9PTUlUX0NPTU1FTlRTKSB8fCBVUkkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLmVxdWFscyhUcmFuc2Zvcm1zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5UUkFOU0ZPUk1fQzE0Tl9FWENMX1dJVEhfQ09NTUVOVFMpIHx8IFVSSQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZXF1YWxzKFRyYW5zZm9ybXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLlRSQU5TRk9STV9DMTROX09NSVRfQ09NTUVOVFMpIHx8IFVSSQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZXF1YWxzKFRyYW5zZm9ybXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLlRSQU5TRk9STV9DMTROX1dJVEhfQ09NTUVOVFMpKSB7CisKKyAgICAgICAgICAgICAgICAgIGJyZWFrIGRvVHJhbnNmb3JtczsKKyAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgb3V0cHV0ID0gdC5wZXJmb3JtVHJhbnNmb3JtKG91dHB1dCwgbnVsbCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG91dHB1dC5zZXRTb3VyY2VVUkkoaW5wdXQuZ2V0U291cmNlVVJJKCkpOworICAgICAgICAgfQorICAgICAgICAgcmV0dXJuIG91dHB1dDsKKyAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgIH0gY2F0Y2ggKFJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgfSBjYXRjaCAoQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICB9IGNhdGNoIChJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICB9IGNhdGNoIChUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICB9IGNhdGNoIChYTUxTZWN1cml0eUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICB9CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGdldEhUTUxSZXByZXNlbnRhdGlvbgorICAgICogQHJldHVybiBUaGUgSFRNTCBvZiB0aGUgdHJhbnNmb3JtYXRpb24KKyAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBTdHJpbmcgZ2V0SFRNTFJlcHJlc2VudGF0aW9uKCkgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisKKyAgICAgIHRyeSB7CisgICAgICAgICBYTUxTaWduYXR1cmVJbnB1dCBub2RlcyA9IHRoaXMuZ2V0Tm9kZXNldEJlZm9yZUZpcnN0Q2Fub25pY2FsaXphdGlvbigpOworICAgICAgICAgU2V0IGluY2x1c2l2ZU5hbWVzcGFjZXMgPSBuZXcgSGFzaFNldCgpOworCisgICAgICAgICB7CisgICAgICAgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSB0aGlzLmdldFRyYW5zZm9ybXMoKTsKKyAgICAgICAgICAgIFRyYW5zZm9ybSBjMTRuVHJhbnNmb3JtID0gbnVsbDsKKworICAgICAgICAgICAgaWYgKHRyYW5zZm9ybXMgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgZG9UcmFuc2Zvcm1zOiBmb3IgKGludCBpID0gMDsgaSA8IHRyYW5zZm9ybXMuZ2V0TGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtIHQgPSB0cmFuc2Zvcm1zLml0ZW0oaSk7CisgICAgICAgICAgICAgICAgICBTdHJpbmcgVVJJID0gdC5nZXRVUkkoKTsKKworICAgICAgICAgICAgICAgICAgaWYgKFVSSS5lcXVhbHMoVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fQzE0Tl9FWENMX09NSVRfQ09NTUVOVFMpCisgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IFVSSS5lcXVhbHMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuVFJBTlNGT1JNX0MxNE5fRVhDTF9XSVRIX0NPTU1FTlRTKSkgeworICAgICAgICAgICAgICAgICAgICAgYzE0blRyYW5zZm9ybSA9IHQ7CisKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGRvVHJhbnNmb3JtczsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGMxNG5UcmFuc2Zvcm0gIT0gbnVsbCkgeworCisgICAgICAgICAgICAgICBpZiAoYzE0blRyYW5zZm9ybQorICAgICAgICAgICAgICAgICAgICAgICAubGVuZ3RoKEluY2x1c2l2ZU5hbWVzcGFjZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLkV4Y2x1c2l2ZUNhbm9uaWNhbGl6YXRpb25OYW1lc3BhY2UsIEluY2x1c2l2ZU5hbWVzcGFjZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLl9UQUdfRUNfSU5DTFVTSVZFTkFNRVNQQUNFUykgPT0gMSkgeworCisgICAgICAgICAgICAgICAgICAvLyB0aGVyZSBpcyBvbmUgSW5jbHVzaXZlTmFtZXNwYWNlcyBlbGVtZW50CisgICAgICAgICAgICAgICAgICBJbmNsdXNpdmVOYW1lc3BhY2VzIGluID0gbmV3IEluY2x1c2l2ZU5hbWVzcGFjZXMoCisgICAgICAgICAgICAgICAgICAgICAgICBYTUxVdGlscy5zZWxlY3ROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgYzE0blRyYW5zZm9ybS5nZXRFbGVtZW50KCkuZ2V0Rmlyc3RDaGlsZCgpLAorCQkJCQkJSW5jbHVzaXZlTmFtZXNwYWNlcy5FeGNsdXNpdmVDYW5vbmljYWxpemF0aW9uTmFtZXNwYWNlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEluY2x1c2l2ZU5hbWVzcGFjZXMuX1RBR19FQ19JTkNMVVNJVkVOQU1FU1BBQ0VTLDApLCB0aGlzLmdldEJhc2VVUkkoKSk7CisKKyAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZU5hbWVzcGFjZXMgPSBJbmNsdXNpdmVOYW1lc3BhY2VzLnByZWZpeFN0cjJTZXQoCisgICAgICAgICAgICAgICAgICAgICBpbi5nZXRJbmNsdXNpdmVOYW1lc3BhY2VzKCkpOworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgfQorCisgICAgICAgICByZXR1cm4gbm9kZXMuZ2V0SFRNTFJlcHJlc2VudGF0aW9uKGluY2x1c2l2ZU5hbWVzcGFjZXMpOworICAgICAgfSBjYXRjaCAoVHJhbnNmb3JtYXRpb25FeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgfSBjYXRjaCAoSW52YWxpZFRyYW5zZm9ybUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICB9IGNhdGNoIChYTUxTZWN1cml0eUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICB9CisgICB9CisKKyAgIC8qKgorICAgICogVGhpcyBtZXRob2Qgb25seSB3b3JrcyB3b3JrcyBhZnRlciBhIGNhbGwgdG8gdmVyaWZ5LgorICAgICogQHJldHVybiB0aGUgdHJhbnNmb3JtZWQgb3V0cHV0KGkuZS4gd2hhdCBpcyBnb2luZyB0byBiZSBkaWdlc3RlZCkuCisgICAgKi8KKyAgIHB1YmxpYyBYTUxTaWduYXR1cmVJbnB1dCBnZXRUcmFuc2Zvcm1zT3V0cHV0KCkgeworICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybXNPdXRwdXQ7CisgICB9CisKKyAgIC8qKgorICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUge0BsaW5rIFhNTFNpZ25hdHVyZUlucHV0fSB3aGljaCBpcyByZWZlcmVuY2VkIGJ5IHRoZQorICAgICogPENPREU+VVJJPC9DT0RFPiBBdHRyaWJ1dGUuCisgICAgKiBAcGFyYW0gb3Mgd2hlcmUgdG8gd3JpdGUgdGhlIHRyYW5zZm9ybWF0aW9uIGNhbiBiZSBudWxsLgorICAgICogQHJldHVybiB0aGUgZWxlbWVudCB0byBkaWdlc3QKKyAgICAqCisgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICogQHNlZSBNYW5pZmVzdCN2ZXJpZnlSZWZlcmVuY2VzKCkKKyAgICAqLworICAgcHJvdGVjdGVkIFhNTFNpZ25hdHVyZUlucHV0IGRlcmVmZXJlbmNlVVJJYW5kUGVyZm9ybVRyYW5zZm9ybXMoT3V0cHV0U3RyZWFtIG9zKQorICAgICAgICAgICB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKworICAgICAgdHJ5IHsKKyAgICAgICAgIFhNTFNpZ25hdHVyZUlucHV0IGlucHV0ID0gdGhpcy5nZXRDb250ZW50c0JlZm9yZVRyYW5zZm9ybWF0aW9uKCk7CisgICAgICAgICBYTUxTaWduYXR1cmVJbnB1dCBvdXRwdXQgPSB0aGlzLmdldENvbnRlbnRzQWZ0ZXJUcmFuc2Zvcm1hdGlvbihpbnB1dCwgb3MpOworCisgICAgICAgICAvKiBhdCB0aGlzIHN0YWdlLCB0aGlzLl90cmFuc2Zvcm1zSW5wdXQgYW5kIHRoaXMuX3RyYW5zZm9ybXNPdXRwdXQKKyAgICAgICAgICAqIGNvbnRhaW4gYSBodWdlIGFtb3VudCBvZiBub2Rlcy4gV2hlbiB3ZSBkbyBub3QgY2FjaGUgdGhlc2Ugbm9kZXMKKyAgICAgICAgICAqIGJ1dCBvbmx5IHByZXNlcnZlIHRoZSBvY3RldHMsIHRoZSBtZW1vcnkgZm9vdHByaW50IGlzIGRyYW1hdGljYWxseQorICAgICAgICAgICogcmVkdWNlZC4KKyAgICAgICAgICAqLworICAgICAgICAgaWYgKCFSZWZlcmVuY2UuQ2FjaGVTaWduZWROb2RlcykgeworCisgICAgICAgICAgICB0aGlzLl90cmFuc2Zvcm1zT3V0cHV0ID0gb3V0cHV0Oy8vbmV3IFhNTFNpZ25hdHVyZUlucHV0KG91dHB1dC5nZXRCeXRlcygpKTsKKworICAgICAgICAgICAgLy90aGlzLl90cmFuc2Zvcm1zT3V0cHV0LnNldFNvdXJjZVVSSShvdXRwdXQuZ2V0U291cmNlVVJJKCkpOworICAgICAgICAgfQorICAgICAgICAgcmV0dXJuIG91dHB1dDsKKyAgICAgIH0gY2F0Y2ggKFhNTFNlY3VyaXR5RXhjZXB0aW9uIGV4KSB7CisgICAgICAgICB0aHJvdyBuZXcgUmVmZXJlbmNlTm90SW5pdGlhbGl6ZWRFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRUcmFuc2Zvcm1zCisgICAgKgorICAgICogQHJldHVybiBUaGUgdHJhbnNmb3JtcyB0aGF0IGFwcGxpZWQgdGhpcyByZWZlcmVuY2UuCisgICAgKiBAdGhyb3dzIEludmFsaWRUcmFuc2Zvcm1FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBUcmFuc2Zvcm1zIGdldFRyYW5zZm9ybXMoKQorICAgICAgICAgICB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uLCBJbnZhbGlkVHJhbnNmb3JtRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24sIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKworICAgICAgcmV0dXJuIHRyYW5zZm9ybXM7ICAgICAgICAgICAKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0UmVmZXJlbmNlZEJ5dGVzCisgICAgKiAKKyAgICAqIEByZXR1cm4gdGhlIGJ5dGVzIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGdlbmVyYXRlZCBkaWdlc3QuCisgICAgKiBAdGhyb3dzIFJlZmVyZW5jZU5vdEluaXRpYWxpemVkRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgYnl0ZVtdIGdldFJlZmVyZW5jZWRCeXRlcygpCisgICAgICAgICAgIHRocm93cyBSZWZlcmVuY2VOb3RJbml0aWFsaXplZEV4Y2VwdGlvbiwgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKyAgICB0cnkgeworICAgICAgICBYTUxTaWduYXR1cmVJbnB1dCBvdXRwdXQ9dGhpcy5kZXJlZmVyZW5jZVVSSWFuZFBlcmZvcm1UcmFuc2Zvcm1zKG51bGwpOworCisgICAgICAgIGJ5dGVbXSBzaWduZWRCeXRlcyA9IG91dHB1dC5nZXRCeXRlcygpOworCisgICAgICAgIHJldHVybiBzaWduZWRCeXRlczsKKyAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZXgpIHsKKyAgICAgICAgdGhyb3cgbmV3IFJlZmVyZW5jZU5vdEluaXRpYWxpemVkRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgfSBjYXRjaCAoQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiBleCkgeworICAgICAgICB0aHJvdyBuZXcgUmVmZXJlbmNlTm90SW5pdGlhbGl6ZWRFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICB9IAorCisgICB9CisKKworICAgLyoqCisgICAgKiBNZXRob2QgY2FsY3VsYXRlRGlnZXN0CisgICAgKgorICAgICogQHBhcmFtIHZhbGlkYXRpbmcgdHJ1ZSBpZiB2YWxpZGF0aW5nIHRoZSByZWZlcmVuY2UKKyAgICAqIEByZXR1cm4gcmVmZXJlbmNlIENhbGN1bGF0ZSB0aGUgZGlnZXN0IG9mIHRoaXMgcmVmZXJlbmNlLgorICAgICogQHRocm93cyBSZWZlcmVuY2VOb3RJbml0aWFsaXplZEV4Y2VwdGlvbgorICAgICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAqLworICAgcHJpdmF0ZSBieXRlW10gY2FsY3VsYXRlRGlnZXN0KGJvb2xlYW4gdmFsaWRhdGluZykKKyAgICAgICAgICAgdGhyb3dzIFJlZmVyZW5jZU5vdEluaXRpYWxpemVkRXhjZXB0aW9uLCBYTUxTaWduYXR1cmVFeGNlcHRpb24geworCisgICAgICB0cnkgeworICAgICAgICAgCisgICAgICAgICBNZXNzYWdlRGlnZXN0QWxnb3JpdGhtIG1kYSA9IHRoaXMuZ2V0TWVzc2FnZURpZ2VzdEFsZ29yaXRobSgpOworCisgICAgICAgICBtZGEucmVzZXQoKTsKKyAgICAgICAgIERpZ2VzdGVyT3V0cHV0U3RyZWFtIGRpT3M9bmV3IERpZ2VzdGVyT3V0cHV0U3RyZWFtKG1kYSk7CisgICAgICAgICBPdXRwdXRTdHJlYW0gb3M9bmV3IFVuc3luY0J1ZmZlcmVkT3V0cHV0U3RyZWFtKGRpT3MpOworICAgICAgICAgWE1MU2lnbmF0dXJlSW5wdXQgb3V0cHV0PXRoaXMuZGVyZWZlcmVuY2VVUklhbmRQZXJmb3JtVHJhbnNmb3Jtcyhvcyk7ICAgICAgICAgCisJIC8vIGlmIHNpZ25pbmcgYW5kIGMxNG4xMSBwcm9wZXJ0eSA9PSB0cnVlIGV4cGxpY2l0bHkgYWRkCisJIC8vIEMxNE4xMSB0cmFuc2Zvcm0gaWYgbmVlZGVkCisJIGlmIChSZWZlcmVuY2UudXNlQzE0TjExICYmICF2YWxpZGF0aW5nICYmCisJICAgICAhb3V0cHV0LmlzT3V0cHV0U3RyZWFtU2V0KCkgJiYgIW91dHB1dC5pc09jdGV0U3RyZWFtKCkpIHsKKwkgICAgIGlmICh0cmFuc2Zvcm1zID09IG51bGwpIHsKKwkJIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyh0aGlzLl9kb2MpOworICAgICAgICAgICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50Lmluc2VydEJlZm9yZQorCQkgICAgICh0cmFuc2Zvcm1zLmdldEVsZW1lbnQoKSwgZGlnZXN0TWV0aG9kRWxlbSk7CisJICAgICB9CisJICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9DMTROMTFfT01JVF9DT01NRU5UUyk7CisgICAgICAgICAgICAgb3V0cHV0LnVwZGF0ZU91dHB1dFN0cmVhbShvcywgdHJ1ZSk7CisJIH0gZWxzZSB7CisgICAgICAgICAgICAgb3V0cHV0LnVwZGF0ZU91dHB1dFN0cmVhbShvcyk7CisJIH0KKyAgICAgICAgIG9zLmZsdXNoKCk7CisgICAgICAgICAvL3RoaXMuZ2V0UmVmZXJlbmNlZEJ5dGVzKGRpT3MpOworICAgICAgICAgLy9tZGEudXBkYXRlKGRhdGEpOworCisgICAgICAgICByZXR1cm4gZGlPcy5nZXREaWdlc3RWYWx1ZSgpOworICAgICAgfSBjYXRjaCAoWE1MU2VjdXJpdHlFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIHRocm93IG5ldyBSZWZlcmVuY2VOb3RJbml0aWFsaXplZEV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBleCkgeworICAgICAgCSB0aHJvdyBuZXcgUmVmZXJlbmNlTm90SW5pdGlhbGl6ZWRFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIFJldHVybnMgdGhlIGRpZ2VzdCB2YWx1ZS4KKyAgICAqCisgICAgKiBAcmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUuCisgICAgKiBAdGhyb3dzIEJhc2U2NERlY29kaW5nRXhjZXB0aW9uIGlmIFJlZmVyZW5jZSBjb250YWlucyBubyBwcm9wZXIgYmFzZTY0IGVuY29kZWQgZGF0YS4KKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24gaWYgdGhlIFJlZmVyZW5jZSBkb2VzIG5vdCBjb250YWluIGEgRGlnZXN0VmFsdWUgZWxlbWVudAorICAgICovCisgICBwdWJsaWMgYnl0ZVtdIGdldERpZ2VzdFZhbHVlKCkgdGhyb3dzIEJhc2U2NERlY29kaW5nRXhjZXB0aW9uLCBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisgICAgICBpZiAoZGlnZXN0VmFsdWVFbGVtZW50ID09IG51bGwpIHsKKwkJICAvLyBUaGUgcmVxdWlyZWQgZWxlbWVudCBpcyBub3QgaW4gdGhlIFhNTCEKKwkJICBPYmplY3RbXSBleEFyZ3MgPXsgQ29uc3RhbnRzLl9UQUdfRElHRVNUVkFMVUUsIAorCQkJCQkJCSBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TIH07CisJCSAgdGhyb3cgbmV3IFhNTFNlY3VyaXR5RXhjZXB0aW9uKAorCQkJCQkic2lnbmF0dXJlLlZlcmlmaWNhdGlvbi5Ob1NpZ25hdHVyZUVsZW1lbnQiLCAKKwkJCQkJZXhBcmdzKTsKKwkgIH0KKyAgICAgIGJ5dGVbXSBlbGVtRGlnID0gQmFzZTY0LmRlY29kZShkaWdlc3RWYWx1ZUVsZW1lbnQpOworICAgICAgcmV0dXJuIGVsZW1EaWc7CisgICB9CisKKworICAgLyoqCisgICAgKiBUZXN0cyByZWZlcmVuY2UgdmFsZGlhdGlvbiBpcyBzdWNjZXNzIG9yIGZhbHNlCisgICAgKgorICAgICogQHJldHVybiB0cnVlIGlmIHJlZmVyZW5jZSB2YWxkaWF0aW9uIGlzIHN1Y2Nlc3MsIG90aGVyd2lzZSBmYWxzZQorICAgICogQHRocm93cyBSZWZlcmVuY2VOb3RJbml0aWFsaXplZEV4Y2VwdGlvbgorICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgYm9vbGVhbiB2ZXJpZnkoKQorICAgICAgICAgICB0aHJvd3MgUmVmZXJlbmNlTm90SW5pdGlhbGl6ZWRFeGNlcHRpb24sIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKworICAgICAgYnl0ZVtdIGVsZW1EaWcgPSB0aGlzLmdldERpZ2VzdFZhbHVlKCk7CisgICAgICBieXRlW10gY2FsY0RpZyA9IHRoaXMuY2FsY3VsYXRlRGlnZXN0KHRydWUpOworICAgICAgYm9vbGVhbiBlcXVhbCA9IE1lc3NhZ2VEaWdlc3RBbGdvcml0aG0uaXNFcXVhbChlbGVtRGlnLCBjYWxjRGlnKTsKKworICAgICAgaWYgKCFlcXVhbCkgeworICAgICAgICAgbG9nLndhcm4oIlZlcmlmaWNhdGlvbiBmYWlsZWQgZm9yIFVSSSBcIiIgKyB0aGlzLmdldFVSSSgpICsgIlwiIik7CisgICAgICAgICBsb2cud2FybigiRXhwZWN0ZWQgRGlnZXN0OiAiICsgQmFzZTY0LmVuY29kZShlbGVtRGlnKSk7CisgICAgICAgICBsb2cud2FybigiQWN0dWFsIERpZ2VzdDogIiArIEJhc2U2NC5lbmNvZGUoY2FsY0RpZykpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgIGxvZy5kZWJ1ZygiVmVyaWZpY2F0aW9uIHN1Y2Nlc3NmdWwgZm9yIFVSSSBcIiIgKyB0aGlzLmdldFVSSSgpICsgIlwiIik7CisgICAgICB9CisKKyAgICAgIHJldHVybiBlcXVhbDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0QmFzZUxvY2FsTmFtZQorICAgICogQGluaGVyaXREb2MKKyAgICAqCisgICAgKi8KKyAgIHB1YmxpYyBTdHJpbmcgZ2V0QmFzZUxvY2FsTmFtZSgpIHsKKyAgICAgIHJldHVybiBDb25zdGFudHMuX1RBR19SRUZFUkVOQ0U7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2lnbmF0dXJlL1JlZmVyZW5jZU5vdEluaXRpYWxpemVkRXhjZXB0aW9uLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2lnbmF0dXJlL1JlZmVyZW5jZU5vdEluaXRpYWxpemVkRXhjZXB0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGRiMGYzMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zaWduYXR1cmUvUmVmZXJlbmNlTm90SW5pdGlhbGl6ZWRFeGNlcHRpb24uamF2YQpAQCAtMCwwICsxLDg2IEBACisKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZTsKKworCisKKworCisvKioKKyAqIFJhaXNlZCBpZiB2ZXJpZnlpbmcgYSB7QGxpbmsgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlJlZmVyZW5jZX0gZmFpbHMKKyAqIGJlY2F1c2Ugb2YgYW4gdW5pbml0aWFsaXplZCB7QGxpbmsgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZUlucHV0fQorICoKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEdldWVyLVBvbGxtYW5uCisgKi8KK3B1YmxpYyBjbGFzcyBSZWZlcmVuY2VOb3RJbml0aWFsaXplZEV4Y2VwdGlvbiBleHRlbmRzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisKKyAgIC8qKgorCSAqIAorCSAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOworCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFJlZmVyZW5jZU5vdEluaXRpYWxpemVkRXhjZXB0aW9uCisgICAgKgorICAgICovCisgICBwdWJsaWMgUmVmZXJlbmNlTm90SW5pdGlhbGl6ZWRFeGNlcHRpb24oKSB7CisgICAgICBzdXBlcigpOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFJlZmVyZW5jZU5vdEluaXRpYWxpemVkRXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICovCisgICBwdWJsaWMgUmVmZXJlbmNlTm90SW5pdGlhbGl6ZWRFeGNlcHRpb24oU3RyaW5nIF9tc2dJRCkgeworICAgICAgc3VwZXIoX21zZ0lEKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBSZWZlcmVuY2VOb3RJbml0aWFsaXplZEV4Y2VwdGlvbgorICAgICoKKyAgICAqIEBwYXJhbSBfbXNnSUQKKyAgICAqIEBwYXJhbSBleEFyZ3MKKyAgICAqLworICAgcHVibGljIFJlZmVyZW5jZU5vdEluaXRpYWxpemVkRXhjZXB0aW9uKFN0cmluZyBfbXNnSUQsIE9iamVjdCBleEFyZ3NbXSkgeworICAgICAgc3VwZXIoX21zZ0lELCBleEFyZ3MpOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFJlZmVyZW5jZU5vdEluaXRpYWxpemVkRXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICogQHBhcmFtIF9vcmlnaW5hbEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgUmVmZXJlbmNlTm90SW5pdGlhbGl6ZWRFeGNlcHRpb24oU3RyaW5nIF9tc2dJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb24gX29yaWdpbmFsRXhjZXB0aW9uKSB7CisgICAgICBzdXBlcihfbXNnSUQsIF9vcmlnaW5hbEV4Y2VwdGlvbik7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgUmVmZXJlbmNlTm90SW5pdGlhbGl6ZWRFeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKiBAcGFyYW0gZXhBcmdzCisgICAgKiBAcGFyYW0gX29yaWdpbmFsRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBSZWZlcmVuY2VOb3RJbml0aWFsaXplZEV4Y2VwdGlvbihTdHJpbmcgX21zZ0lELCBPYmplY3QgZXhBcmdzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uIF9vcmlnaW5hbEV4Y2VwdGlvbikgeworICAgICAgc3VwZXIoX21zZ0lELCBleEFyZ3MsIF9vcmlnaW5hbEV4Y2VwdGlvbik7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2lnbmF0dXJlL1NpZ25hdHVyZVByb3BlcnRpZXMuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zaWduYXR1cmUvU2lnbmF0dXJlUHJvcGVydGllcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1MTc1NDIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2lnbmF0dXJlL1NpZ25hdHVyZVByb3BlcnRpZXMuamF2YQpAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuSWRSZXNvbHZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5TaWduYXR1cmVFbGVtZW50UHJveHk7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworCisvKioKKyAqIEhhbmRsZXMgPGNvZGU+Jmx0O2RzOlNpZ25hdHVyZVByb3BlcnRpZXMmZ3Q7PC9jb2RlPiBlbGVtZW50cworICogVGhpcyBFbGVtZW50IGhvbGRzIHtAbGluayBTaWduYXR1cmVQcm9wZXJ0eX0gdGhhdCBjb250aWFuIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gaXRlbXMKKyAqIGNvbmNlcm5pbmcgdGhlIGdlbmVyYXRpb24gb2YgdGhlIHNpZ25hdHVyZS4KKyAqIGZvciBleGFtcGxlLCBkYXRhLXRpbWUgc3RhbXAsIHNlcmlhbCBudW1iZXIgb2YgY3J5cHRvZ3JhcGhpYyBoYXJkd2FyZS4KKyAqCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubgorICoKKyAqLworcHVibGljIGNsYXNzIFNpZ25hdHVyZVByb3BlcnRpZXMgZXh0ZW5kcyBTaWduYXR1cmVFbGVtZW50UHJveHkgeworCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFNpZ25hdHVyZVByb3BlcnRpZXMKKyAgICAqCisgICAgKiBAcGFyYW0gZG9jCisgICAgKi8KKyAgIHB1YmxpYyBTaWduYXR1cmVQcm9wZXJ0aWVzKERvY3VtZW50IGRvYykgeworCisgICAgICBzdXBlcihkb2MpOworCisgICAgICBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCk7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0cyB7QGxpbmsgU2lnbmF0dXJlUHJvcGVydGllc30gZnJvbSB7QGxpbmsgRWxlbWVudH0KKyAgICAqIEBwYXJhbSBlbGVtZW50IDxjb2RlPlNpZ25hdHVyZVByb3BlcnRpZXM8L2NvZGU+IGVsZW1lbnR0CisgICAgKiBAcGFyYW0gQmFzZVVSSSB0aGUgVVJJIG9mIHRoZSByZXNvdXJjZSB3aGVyZSB0aGUgWE1MIGluc3RhbmNlIHdhcyBzdG9yZWQKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIFNpZ25hdHVyZVByb3BlcnRpZXMoRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSkKKyAgICAgICAgICAgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKyAgICAgIHN1cGVyKGVsZW1lbnQsIEJhc2VVUkkpOworICAgfQorCisgICAvKioKKyAgICAqIFJldHVybiB0aGUgbm9ubmVnYXRpdmUgbnVtYmVyIG9mIGFkZGVkIFNpZ25hdHVyZVByb3BlcnR5IGVsZW1lbnRzLgorICAgICoKKyAgICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBTaWduYXR1cmVQcm9wZXJ0eSBlbGVtZW50cworICAgICovCisgICBwdWJsaWMgaW50IGdldExlbmd0aCgpIHsKKyAgICAgIAorICAgICAgICAgRWxlbWVudFtdIHByb3BlcnR5RWxlbXMgPQorICAgICAgICAgICAgWE1MVXRpbHMuc2VsZWN0RHNOb2Rlcyh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5fVEFHX1NJR05BVFVSRVBST1BFUlRZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworCisgICAgICAgICByZXR1cm4gcHJvcGVydHlFbGVtcy5sZW5ndGg7CisgICB9CisKKyAgIC8qKgorICAgICogUmV0dXJuIHRoZSA8aXQ+aTwvaXQ+PHN1cD50aDwvc3VwPiBTaWduYXR1cmVQcm9wZXJ0eS4gIFZhbGlkIDxjb2RlPmk8L2NvZGU+CisgICAgKiB2YWx1ZXMgYXJlIDAgdG8gPGNvZGU+e2xpbmtAIGdldFNpemV9LTE8L2NvZGU+LgorICAgICoKKyAgICAqIEBwYXJhbSBpIEluZGV4IG9mIHRoZSByZXF1ZXN0ZWQge0BsaW5rIFNpZ25hdHVyZVByb3BlcnR5fQorICAgICogQHJldHVybiB0aGUgPGl0Pmk8L2l0PjxzdXA+dGg8L3N1cD4gU2lnbmF0dXJlUHJvcGVydHkKKyAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBTaWduYXR1cmVQcm9wZXJ0eSBpdGVtKGludCBpKSB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKyAgIAkgIHRyeSB7CisgICAgICAgICBFbGVtZW50IHByb3BlcnR5RWxlbSA9CisgICAgICAgICAgICBYTUxVdGlscy5zZWxlY3REc05vZGUodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMuX1RBR19TSUdOQVRVUkVQUk9QRVJUWSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICk7CisKKyAgICAgICAgIGlmIChwcm9wZXJ0eUVsZW0gPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICB9IAorICAgICAgICAgcmV0dXJuIG5ldyBTaWduYXR1cmVQcm9wZXJ0eShwcm9wZXJ0eUVsZW0sIHRoaXMuX2Jhc2VVUkkpOyAgICAgICAgICAgICAgIAorICAgICAgfSBjYXRjaCAoWE1MU2VjdXJpdHlFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIFNldHMgdGhlIDxjb2RlPklkPC9jb2RlPiBhdHRyaWJ1dGUKKyAgICAqCisgICAgKiBAcGFyYW0gSWQgdGhlIDxjb2RlPklkPC9jb2RlPiBhdHRyaWJ1dGUKKyAgICAqLworICAgcHVibGljIHZvaWQgc2V0SWQoU3RyaW5nIElkKSB7CisKKyAgICAgIGlmICgoSWQgIT0gbnVsbCkpIHsKKyAgICAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuc2V0QXR0cmlidXRlTlMobnVsbCwgQ29uc3RhbnRzLl9BVFRfSUQsIElkKTsKKyAgICAgICAgIElkUmVzb2x2ZXIucmVnaXN0ZXJFbGVtZW50QnlJZCh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LCBJZCk7CisgICAgICB9CisgICB9CisKKyAgIC8qKgorICAgICogUmV0dXJucyB0aGUgPGNvZGU+SWQ8L2NvZGU+IGF0dHJpYnV0ZQorICAgICoKKyAgICAqIEByZXR1cm4gdGhlIDxjb2RlPklkPC9jb2RlPiBhdHRyaWJ1dGUKKyAgICAqLworICAgcHVibGljIFN0cmluZyBnZXRJZCgpIHsKKyAgICAgIHJldHVybiB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmdldEF0dHJpYnV0ZU5TKG51bGwsIENvbnN0YW50cy5fQVRUX0lEKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgYWRkU2lnbmF0dXJlUHJvcGVydHkKKyAgICAqCisgICAgKiBAcGFyYW0gc3AKKyAgICAqLworICAgcHVibGljIHZvaWQgYWRkU2lnbmF0dXJlUHJvcGVydHkoU2lnbmF0dXJlUHJvcGVydHkgc3ApIHsKKyAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQoc3AuZ2V0RWxlbWVudCgpKTsKKyAgICAgIFhNTFV0aWxzLmFkZFJldHVyblRvRWxlbWVudCh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50KTsKKyAgIH0KKworICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwdWJsaWMgU3RyaW5nIGdldEJhc2VMb2NhbE5hbWUoKSB7CisgICAgICByZXR1cm4gQ29uc3RhbnRzLl9UQUdfU0lHTkFUVVJFUFJPUEVSVElFUzsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zaWduYXR1cmUvU2lnbmF0dXJlUHJvcGVydHkuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zaWduYXR1cmUvU2lnbmF0dXJlUHJvcGVydHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTllM2ZkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NpZ25hdHVyZS9TaWduYXR1cmVQcm9wZXJ0eS5qYXZhCkBAIC0wLDAgKzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLlhNTFNlY3VyaXR5RXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5JZFJlc29sdmVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlNpZ25hdHVyZUVsZW1lbnRQcm94eTsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CisKKy8qKgorICogSGFuZGxlcyA8Y29kZT4mbHQ7ZHM6U2lnbmF0dXJlUHJvcGVydHkmZ3Q7PC9jb2RlPiBlbGVtZW50cworICogQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBpdGVtIGNvbmNlcm5pbmcgdGhlIGdlbmVyYXRpb24gb2YgdGhlIHNpZ25hdHVyZShzKSBjYW4KKyAqIGJlIHBsYWNlZCBpbiB0aGlzIEVsZW1lbnQKKyAqCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubgorICovCitwdWJsaWMgY2xhc3MgU2lnbmF0dXJlUHJvcGVydHkgZXh0ZW5kcyBTaWduYXR1cmVFbGVtZW50UHJveHkgeworCisgICAvKioKKyAgICAqIENvbnN0cnVjdHN7QGxpbmsgU2lnbmF0dXJlUHJvcGVydHl9IHVzaW5nIHNwZWNpZmllZCA8Y29kZT5UYXJnZXQ8L2NvZGU+IGF0dHJpYnV0ZQorICAgICoKKyAgICAqIEBwYXJhbSBkb2MgdGhlIHtAbGluayBEb2N1bWVudH0gaW4gd2hpY2ggPGNvZGU+WE1Mc2lnbmF0dXJlPC9jb2RlPiBpcyBwbGFjZWQKKyAgICAqIEBwYXJhbSBUYXJnZXQgdGhlIDxjb2RlPlRhcmdldDwvY29kZT4gYXR0cmlidXRlIHJlZmVyZW5jZXMgdGhlIDxjb2RlPlNpZ25hdHVyZTwvY29kZT4gZWxlbWVudCB0byB3aGljaCB0aGUgcHJvcGVydHkgYXBwbGllcyBTaWduYXR1cmVQcm9wZXJ0eQorICAgICovCisgICBwdWJsaWMgU2lnbmF0dXJlUHJvcGVydHkoRG9jdW1lbnQgZG9jLCBTdHJpbmcgVGFyZ2V0KSB7CisgICAgICB0aGlzKGRvYywgVGFyZ2V0LCBudWxsKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RzIHtAbGluayBTaWduYXR1cmVQcm9wZXJ0eX0gdXNpbmcgc2VwY2lmaWVkIDxjb2RlPlRhcmdldDwvY29kZT4gYXR0cmlidXRlIGFuZCA8Y29kZT5JZDwvY29kZT4gYXR0cmlidXRlCisgICAgKgorICAgICogQHBhcmFtIGRvYyB0aGUge0BsaW5rIERvY3VtZW50fSBpbiB3aGljaCA8Y29kZT5YTUxzaWduYXR1cmU8L2NvZGU+IGlzIHBsYWNlZAorICAgICogQHBhcmFtIFRhcmdldCB0aGUgPGNvZGU+VGFyZ2V0PC9jb2RlPiBhdHRyaWJ1dGUgcmVmZXJlbmNlcyB0aGUgPGNvZGU+U2lnbmF0dXJlPC9jb2RlPiBlbGVtZW50IHRvIHdoaWNoIHRoZSBwcm9wZXJ0eSBhcHBsaWVzCisgICAgKiBAcGFyYW0gSWQgdGhlIDxjb2RlPklkPC9jb2RlPiB3aWxsIGJlIHNwZWNpZmllZCBieSB7QGxpbmsgUmVmZXJlbmNlI2dldFVSSX0gaW4gdmFsaWRhdGlvbgorICAgICovCisgICBwdWJsaWMgU2lnbmF0dXJlUHJvcGVydHkoRG9jdW1lbnQgZG9jLCBTdHJpbmcgVGFyZ2V0LCBTdHJpbmcgSWQpIHsKKworICAgICAgc3VwZXIoZG9jKTsKKworICAgICAgdGhpcy5zZXRUYXJnZXQoVGFyZ2V0KTsKKyAgICAgIHRoaXMuc2V0SWQoSWQpOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdHMgYSB7QGxpbmsgU2lnbmF0dXJlUHJvcGVydHl9IGZyb20gYW4ge0BsaW5rIEVsZW1lbnR9CisgICAgKiBAcGFyYW0gZWxlbWVudCA8Y29kZT5TaWduYXR1cmVQcm9wZXJ0eTwvY29kZT4gZWxlbWVudAorICAgICogQHBhcmFtIEJhc2VVUkkgdGhlIFVSSSBvZiB0aGUgcmVzb3VyY2Ugd2hlcmUgdGhlIFhNTCBpbnN0YW5jZSB3YXMgc3RvcmVkCisgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBTaWduYXR1cmVQcm9wZXJ0eShFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJKQorICAgICAgICAgICB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworICAgICAgc3VwZXIoZWxlbWVudCwgQmFzZVVSSSk7CisgICB9CisKKyAgIC8qKgorICAgICogICBTZXRzIHRoZSA8Y29kZT5JZDwvY29kZT4gYXR0cmlidXRlCisgICAgKgorICAgICogICBAcGFyYW0gSWQgdGhlIDxjb2RlPklkPC9jb2RlPiBhdHRyaWJ1dGUKKyAgICAqLworICAgcHVibGljIHZvaWQgc2V0SWQoU3RyaW5nIElkKSB7CisKKyAgICAgIGlmICgoSWQgIT0gbnVsbCkpIHsKKyAgICAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuc2V0QXR0cmlidXRlTlMobnVsbCwgQ29uc3RhbnRzLl9BVFRfSUQsIElkKTsKKyAgICAgICAgIElkUmVzb2x2ZXIucmVnaXN0ZXJFbGVtZW50QnlJZCh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LCBJZCk7CisgICAgICB9CisgICB9CisKKyAgIC8qKgorICAgICogUmV0dXJucyB0aGUgPGNvZGU+SWQ8L2NvZGU+IGF0dHJpYnV0ZQorICAgICoKKyAgICAqIEByZXR1cm4gdGhlIDxjb2RlPklkPC9jb2RlPiBhdHRyaWJ1dGUKKyAgICAqLworICAgcHVibGljIFN0cmluZyBnZXRJZCgpIHsKKyAgICAgIHJldHVybiB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmdldEF0dHJpYnV0ZU5TKG51bGwsIENvbnN0YW50cy5fQVRUX0lEKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBTZXRzIHRoZSA8Y29kZT5UYXJnZXQ8L2NvZGU+IGF0dHJpYnV0ZQorICAgICoKKyAgICAqIEBwYXJhbSBUYXJnZXQgdGhlIDxjb2RlPlRhcmdldDwvY29kZT4gYXR0cmlidXRlCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHNldFRhcmdldChTdHJpbmcgVGFyZ2V0KSB7CisKKyAgICAgIGlmICgoVGFyZ2V0ICE9IG51bGwpKSB7CisgICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LnNldEF0dHJpYnV0ZU5TKG51bGwsIENvbnN0YW50cy5fQVRUX1RBUkdFVCwgVGFyZ2V0KTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBSZXR1cm5zIHRoZSA8Y29kZT5UYXJnZXQ8L2NvZGU+IGF0dHJpYnV0ZQorICAgICoKKyAgICAqIEByZXR1cm4gdGhlIDxjb2RlPlRhcmdldDwvY29kZT4gYXR0cmlidXRlCisgICAgKi8KKyAgIHB1YmxpYyBTdHJpbmcgZ2V0VGFyZ2V0KCkgeworICAgICAgcmV0dXJuIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0QXR0cmlidXRlTlMobnVsbCwgQ29uc3RhbnRzLl9BVFRfVEFSR0VUKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgYXBwZW5kQ2hpbGQKKyAgICAqCisgICAgKiBAcGFyYW0gbm9kZQorICAgICogQHJldHVybiB0aGUgbm9kZSBpbiB0aGlzIGVsZW1lbnQuCisgICAgKi8KKyAgIHB1YmxpYyBOb2RlIGFwcGVuZENoaWxkKE5vZGUgbm9kZSkgeworICAgICAgcmV0dXJuIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQobm9kZSk7CisgICB9CisKKyAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgcHVibGljIFN0cmluZyBnZXRCYXNlTG9jYWxOYW1lKCkgeworICAgICAgcmV0dXJuIENvbnN0YW50cy5fVEFHX1NJR05BVFVSRVBST1BFUlRZOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NpZ25hdHVyZS9TaWduZWRJbmZvLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2lnbmF0dXJlL1NpZ25lZEluZm8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODk3ZTdhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NpZ25hdHVyZS9TaWduZWRJbmZvLmphdmEKQEAgLTAsMCArMSwzODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZTsKKworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZheC5jcnlwdG8uU2VjcmV0S2V5OworaW1wb3J0IGphdmF4LmNyeXB0by5zcGVjLlNlY3JldEtleVNwZWM7CitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbjsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmFsZ29yaXRobXMuU2lnbmF0dXJlQWxnb3JpdGhtOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkNhbm9uaWNhbGl6ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5JbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLlhNTFNlY3VyaXR5RXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5YTUxVdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLnBhcmFtcy5JbmNsdXNpdmVOYW1lc3BhY2VzOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKK2ltcG9ydCBvcmcueG1sLnNheC5TQVhFeGNlcHRpb247CisKKy8qKgorICogSGFuZGxlcyA8Y29kZT4mbHQ7ZHM6U2lnbmVkSW5mbyZndDs8L2NvZGU+IGVsZW1lbnRzCisgKiBUaGlzIDxjb2RlPlNpZ25lZEluZm88Y29kZT4gZWxlbWVudCBpbmNsdWRlcyB0aGUgY2Fub25pY2FsaXphdGlvbiBhbGdvcml0aG0sCisgKiBhIHNpZ25hdHVyZSBhbGdvcml0aG0sIGFuZCBvbmUgb3IgbW9yZSByZWZlcmVuY2VzLgorICoKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEdldWVyLVBvbGxtYW5uCisgKi8KK3B1YmxpYyBjbGFzcyBTaWduZWRJbmZvIGV4dGVuZHMgTWFuaWZlc3QgeworCisgICAgLyoqIEZpZWxkIF9zaWduYXR1cmVBbGdvcml0aG0gKi8KKyAgICBwcml2YXRlIFNpZ25hdHVyZUFsZ29yaXRobSBfc2lnbmF0dXJlQWxnb3JpdGhtID0gbnVsbDsKKworICAgIC8qKiBGaWVsZCBfYzE0bml6ZWRCeXRlcyAgICAgICAgICAgKi8KKyAgICBwcml2YXRlIGJ5dGVbXSBfYzE0bml6ZWRCeXRlcyA9IG51bGw7CisKKyAgICBwcml2YXRlIEVsZW1lbnQgYzE0bk1ldGhvZDsKKyAgICBwcml2YXRlIEVsZW1lbnQgc2lnbmF0dXJlTWV0aG9kOworCisgICAgLyoqCisgICAgICogT3ZlcndyaXRlcyB7QGxpbmsgTWFuaWZlc3QjYWRkRG9jdW1lbnR9IGJlY2F1c2UgaXQgY3JlYXRlcyBhbm90aGVyIAorICAgICAqIEVsZW1lbnQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZG9jIHRoZSB7QGxpbmsgRG9jdW1lbnR9IGluIHdoaWNoIDxjb2RlPlhNTHNpZ25hdHVyZTwvY29kZT4gd2lsbCAKKyAgICAgKiAgICBiZSBwbGFjZWQKKyAgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIFNpZ25lZEluZm8oRG9jdW1lbnQgZG9jKSB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworICAgICAgICB0aGlzKGRvYywgWE1MU2lnbmF0dXJlLkFMR09fSURfU0lHTkFUVVJFX0RTQSwgCisJICAgICBDYW5vbmljYWxpemVyLkFMR09fSURfQzE0Tl9PTUlUX0NPTU1FTlRTKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIHtAbGluayBTaWduZWRJbmZvfSB1c2luZyBnaXZlbiBDYW5vbmljYWxpemF0aW9uIGFsZ29yaXRobSBhbmQgCisgICAgICogU2lnbmF0dXJlIGFsZ29yaXRobS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkb2MgPGNvZGU+U2lnbmVkSW5mbzwvY29kZT4gaXMgcGxhY2VkIGluIHRoaXMgZG9jdW1lbnQKKyAgICAgKiBAcGFyYW0gc2lnbmF0dXJlTWV0aG9kVVJJIFVSSSByZXByZXNlbnRhdGlvbiBvZiB0aGUgRGlnZXN0IGFuZCAKKyAgICAgKiAgICBTaWduYXR1cmUgYWxnb3JpdGhtCisgICAgICogQHBhcmFtIGNhbm9uaWNhbGl6YXRpb25NZXRob2RVUkkgVVJJIHJlcHJlc2VudGF0aW9uIG9mIHRoZSAKKyAgICAgKiAgICBDYW5vbmljYWxpemF0aW9uIG1ldGhvZAorICAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgU2lnbmVkSW5mbyhEb2N1bWVudCBkb2MsIFN0cmluZyBzaWduYXR1cmVNZXRob2RVUkksIAorCVN0cmluZyBjYW5vbmljYWxpemF0aW9uTWV0aG9kVVJJKSB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworICAgICAgICB0aGlzKGRvYywgc2lnbmF0dXJlTWV0aG9kVVJJLCAwLCBjYW5vbmljYWxpemF0aW9uTWV0aG9kVVJJKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RvciBTaWduZWRJbmZvCisgICAgICoKKyAgICAgKiBAcGFyYW0gZG9jIDxjb2RlPlNpZ25lZEluZm88L2NvZGU+IGlzIHBsYWNlZCBpbiB0aGlzIGRvY3VtZW50CisgICAgICogQHBhcmFtIHNpZ25hdHVyZU1ldGhvZFVSSSBVUkkgcmVwcmVzZW50YXRpb24gb2YgdGhlIERpZ2VzdCBhbmQgCisgICAgICogICAgU2lnbmF0dXJlIGFsZ29yaXRobQorICAgICAqIEBwYXJhbSBoTUFDT3V0cHV0TGVuZ3RoCisgICAgICogQHBhcmFtIGNhbm9uaWNhbGl6YXRpb25NZXRob2RVUkkgVVJJIHJlcHJlc2VudGF0aW9uIG9mIHRoZSAKKyAgICAgKiAgICBDYW5vbmljYWxpemF0aW9uIG1ldGhvZAorICAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgU2lnbmVkSW5mbyhEb2N1bWVudCBkb2MsIFN0cmluZyBzaWduYXR1cmVNZXRob2RVUkksIAorCWludCBoTUFDT3V0cHV0TGVuZ3RoLCBTdHJpbmcgY2Fub25pY2FsaXphdGlvbk1ldGhvZFVSSSkKKyAgICAgICAgICAgICAgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKworICAgICAgICBzdXBlcihkb2MpOworCisgICAgICAgIGMxNG5NZXRob2QgPSBYTUxVdGlscy5jcmVhdGVFbGVtZW50SW5TaWduYXR1cmVTcGFjZSh0aGlzLl9kb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5fVEFHX0NBTk9OSUNBTElaQVRJT05NRVRIT0QpOworCisgICAgICAgIGMxNG5NZXRob2Quc2V0QXR0cmlidXRlTlMobnVsbCwgQ29uc3RhbnRzLl9BVFRfQUxHT1JJVEhNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbm9uaWNhbGl6YXRpb25NZXRob2RVUkkpOworICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmFwcGVuZENoaWxkKGMxNG5NZXRob2QpOworICAgICAgICBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCk7CisKKyAgICAgICAgaWYgKGhNQUNPdXRwdXRMZW5ndGggPiAwKSB7CisgICAgICAgICAgICB0aGlzLl9zaWduYXR1cmVBbGdvcml0aG0gPSBuZXcgU2lnbmF0dXJlQWxnb3JpdGhtKHRoaXMuX2RvYywKKyAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlTWV0aG9kVVJJLCBoTUFDT3V0cHV0TGVuZ3RoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuX3NpZ25hdHVyZUFsZ29yaXRobSA9IG5ldyBTaWduYXR1cmVBbGdvcml0aG0odGhpcy5fZG9jLAorICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmVNZXRob2RVUkkpOworICAgICAgICB9CisKKyAgICAgICAgc2lnbmF0dXJlTWV0aG9kID0gdGhpcy5fc2lnbmF0dXJlQWxnb3JpdGhtLmdldEVsZW1lbnQoKTsKKyAgICAgICAgdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5hcHBlbmRDaGlsZChzaWduYXR1cmVNZXRob2QpOworICAgICAgICBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCk7CisgICAgfQorICAgCisgICAgLyoqCisgICAgICogQHBhcmFtIGRvYworICAgICAqIEBwYXJhbSBzaWduYXR1cmVNZXRob2RFbGVtCisgICAgICogQHBhcmFtIGNhbm9uaWNhbGl6YXRpb25NZXRob2RFbGVtCisgICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBTaWduZWRJbmZvKERvY3VtZW50IGRvYywgRWxlbWVudCBzaWduYXR1cmVNZXRob2RFbGVtLCAKKwlFbGVtZW50IGNhbm9uaWNhbGl6YXRpb25NZXRob2RFbGVtKSB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworCisgICAgICAgIHN1cGVyKGRvYyk7CisgICAgICAgIC8vIENoZWNrIHRoaXM/CisgICAgICAgIHRoaXMuYzE0bk1ldGhvZCA9IGNhbm9uaWNhbGl6YXRpb25NZXRob2RFbGVtOworICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmFwcGVuZENoaWxkKGMxNG5NZXRob2QpOworICAgICAgICBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCk7CisgICAKKyAgICAgICAgdGhpcy5fc2lnbmF0dXJlQWxnb3JpdGhtID0gCisJICAgIG5ldyBTaWduYXR1cmVBbGdvcml0aG0oc2lnbmF0dXJlTWV0aG9kRWxlbSwgbnVsbCk7CisKKyAgICAgICAgc2lnbmF0dXJlTWV0aG9kID0gdGhpcy5fc2lnbmF0dXJlQWxnb3JpdGhtLmdldEVsZW1lbnQoKTsKKyAgICAgICAgdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5hcHBlbmRDaGlsZChzaWduYXR1cmVNZXRob2QpOworICAgICAgCisgICAgICAgIFhNTFV0aWxzLmFkZFJldHVyblRvRWxlbWVudCh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBCdWlsZCBhIHtAbGluayBTaWduZWRJbmZvfSBmcm9tIGFuIHtAbGluayBFbGVtZW50fQorICAgICAqCisgICAgICogQHBhcmFtIGVsZW1lbnQgPGNvZGU+U2lnbmVkSW5mbzwvY29kZT4KKyAgICAgKiBAcGFyYW0gYmFzZVVSSSB0aGUgVVJJIG9mIHRoZSByZXNvdXJjZSB3aGVyZSB0aGUgWE1MIGluc3RhbmNlIHdhcyBzdG9yZWQKKyAgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgICogQHNlZSA8QSBIUkVGPSJodHRwOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93M2MtaWV0Zi14bWxkc2lnLzIwMDFPY3REZWMvMDAzMy5odG1sIj5RdWVzdGlvbjwvQT4KKyAgICAgKiBAc2VlIDxBIEhSRUY9Imh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3czYy1pZXRmLXhtbGRzaWcvMjAwMU9jdERlYy8wMDU0Lmh0bWwiPkFuc3dlcjwvQT4KKyAgICAgKi8KKyAgICBwdWJsaWMgU2lnbmVkSW5mbyhFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBiYXNlVVJJKQorICAgICAgICAgICB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworCisgICAgICAgIC8vIFBhcnNlIHRoZSBSZWZlcmVuY2UgY2hpbGRyZW4gYW5kIElkIGF0dHJpYnV0ZSBpbiB0aGUgTWFuaWZlc3QKKyAgICAgICAgc3VwZXIocmVwYXJzZVNpZ25lZEluZm9FbGVtKGVsZW1lbnQpLCBiYXNlVVJJKTsKKworICAgICAgICBjMTRuTWV0aG9kID0gWE1MVXRpbHMuZ2V0TmV4dEVsZW1lbnQoZWxlbWVudC5nZXRGaXJzdENoaWxkKCkpOworICAgICAgICBzaWduYXR1cmVNZXRob2QgPSBYTUxVdGlscy5nZXROZXh0RWxlbWVudChjMTRuTWV0aG9kLmdldE5leHRTaWJsaW5nKCkpOworICAgICAgICB0aGlzLl9zaWduYXR1cmVBbGdvcml0aG0gPQorICAgICAgICAgICAgbmV3IFNpZ25hdHVyZUFsZ29yaXRobShzaWduYXR1cmVNZXRob2QsIHRoaXMuZ2V0QmFzZVVSSSgpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBFbGVtZW50IHJlcGFyc2VTaWduZWRJbmZvRWxlbShFbGVtZW50IGVsZW1lbnQpCisgICAgICAgIHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisKKyAgICAgICAgLyogCisgICAgICAgICAqIElmIGEgY3VzdG9tIGNhbm9uaWNhbGl6YXRpb25NZXRob2QgaXMgdXNlZCwgY2Fub25pY2FsaXplIAorICAgICAgICAgKiBkczpTaWduZWRJbmZvLCByZXBhcnNlIGl0IGludG8gYSBuZXcgZG9jdW1lbnQKKyAgICAgICAgICogYW5kIHJlcGxhY2UgdGhlIG9yaWdpbmFsIG5vdC1jYW5vbmljYWxpemVkIGRzOlNpZ25lZEluZm8gYnkKKyAgICAgICAgICogdGhlIHJlLXBhcnNlZCBjYW5vbmljYWxpemVkIG9uZS4KKyAgICAgICAgICovCisgICAgICAgIEVsZW1lbnQgYzE0bk1ldGhvZCA9IFhNTFV0aWxzLmdldE5leHRFbGVtZW50KGVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpKTsKKyAgICAgICAgU3RyaW5nIGMxNG5NZXRob2RVUkkgPSAKKyAgICAgICAgICAgIGMxNG5NZXRob2QuZ2V0QXR0cmlidXRlTlMobnVsbCwgQ29uc3RhbnRzLl9BVFRfQUxHT1JJVEhNKTsgICAgCisgICAgICAgIGlmICghKGMxNG5NZXRob2RVUkkuZXF1YWxzKENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX09NSVRfQ09NTUVOVFMpIHx8CisgICAgICAgICAgICBjMTRuTWV0aG9kVVJJLmVxdWFscyhDYW5vbmljYWxpemVyLkFMR09fSURfQzE0Tl9XSVRIX0NPTU1FTlRTKSB8fAorCSAgICBjMTRuTWV0aG9kVVJJLmVxdWFscyhDYW5vbmljYWxpemVyLkFMR09fSURfQzE0Tl9FWENMX09NSVRfQ09NTUVOVFMpIHx8CisJICAgIGMxNG5NZXRob2RVUkkuZXF1YWxzKENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX0VYQ0xfV0lUSF9DT01NRU5UUykgfHwKKwkgICAgYzE0bk1ldGhvZFVSSS5lcXVhbHMoQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE4xMV9PTUlUX0NPTU1FTlRTKSB8fAorCSAgICBjMTRuTWV0aG9kVVJJLmVxdWFscyhDYW5vbmljYWxpemVyLkFMR09fSURfQzE0TjExX1dJVEhfQ09NTUVOVFMpKSkgeworICAgICAgCSAgICAvLyB0aGUgYzE0biBpcyBub3QgYSBzZWN1cmUgb25lIGFuZCBjYW4gcmV3cml0ZSB0aGUgVVJJcyBvciBsaWtlIAorCSAgICAvLyBzbyByZXBhcnNlIHRoZSBTaWduZWRJbmZvIHRvIGJlIHN1cmUgICAgCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIENhbm9uaWNhbGl6ZXIgYzE0bml6ZXIgPQorICAgICAgICAgICAgICAgICAgICBDYW5vbmljYWxpemVyLmdldEluc3RhbmNlKGMxNG5NZXRob2RVUkkpOworCisgICAgICAgICAgICAgICAgYnl0ZVtdIGMxNG5pemVkQnl0ZXMgPSBjMTRuaXplci5jYW5vbmljYWxpemVTdWJ0cmVlKGVsZW1lbnQpOworICAgICAgICAgICAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0KKyAgICAgICAgICAgICAgICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworICAgICAgICAgICAgICAgIGRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKyAgICAgICAgICAgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7ICAgICAgICAKKyAgICAgICAgICAgICAgICBEb2N1bWVudCBuZXdkb2MgPQorICAgICAgICAgICAgICAgICAgICBkYi5wYXJzZShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oYzE0bml6ZWRCeXRlcykpOworICAgICAgICAgICAgICAgIE5vZGUgaW1wb3J0ZWQgPSBlbGVtZW50LmdldE93bmVyRG9jdW1lbnQoKS5pbXBvcnROb2RlCisgICAgICAgICAgICAgICAgICAgIChuZXdkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCksIHRydWUpOworCisgICAgICAgICAgICAgICAgZWxlbWVudC5nZXRQYXJlbnROb2RlKCkucmVwbGFjZUNoaWxkKGltcG9ydGVkLCBlbGVtZW50KTsKKworICAgICAgICAgICAgICAgIHJldHVybiAoRWxlbWVudCkgaW1wb3J0ZWQ7CisgICAgICAgICAgICB9IGNhdGNoIChQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFhNTFNlY3VyaXR5RXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFhNTFNlY3VyaXR5RXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFNBWEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBYTUxTZWN1cml0eUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwlyZXR1cm4gZWxlbWVudDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0cyBjb3JlIHZhbGlkYXRpb24gcHJvY2VzcworICAgICAqCisgICAgICogQHJldHVybiB0cnVlIGlmIHZlcmlmaWNhdGlvbiB3YXMgc3VjY2Vzc2Z1bAorICAgICAqIEB0aHJvd3MgTWlzc2luZ1Jlc291cmNlRmFpbHVyZUV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiB2ZXJpZnkoKQorICAgICAgICAgICB0aHJvd3MgTWlzc2luZ1Jlc291cmNlRmFpbHVyZUV4Y2VwdGlvbiwgWE1MU2VjdXJpdHlFeGNlcHRpb24geworICAgICAgICByZXR1cm4gc3VwZXIudmVyaWZ5UmVmZXJlbmNlcyhmYWxzZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdHMgY29yZSB2YWxpZGF0aW9uIHByb2Nlc3MKKyAgICAgKgorICAgICAqIEBwYXJhbSBmb2xsb3dNYW5pZmVzdHMgZGVmaW5lcyB3aGV0aGVyIHRoZSB2ZXJpZmljYXRpb24gcHJvY2VzcyBoYXMgdG8gdmVyaWZ5IHJlZmVyZW5jZWQgPENPREU+ZHM6TWFuaWZlc3Q8L0NPREU+cywgdG9vCisgICAgICogQHJldHVybiB0cnVlIGlmIHZlcmlmaWNhdGlvbiB3YXMgc3VjY2Vzc2Z1bAorICAgICAqIEB0aHJvd3MgTWlzc2luZ1Jlc291cmNlRmFpbHVyZUV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiB2ZXJpZnkoYm9vbGVhbiBmb2xsb3dNYW5pZmVzdHMpCisgICAgICAgICAgIHRocm93cyBNaXNzaW5nUmVzb3VyY2VGYWlsdXJlRXhjZXB0aW9uLCBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisgICAgICAgIHJldHVybiBzdXBlci52ZXJpZnlSZWZlcmVuY2VzKGZvbGxvd01hbmlmZXN0cyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBnZXRDYW5vbmljYWxpemVkT2N0ZXRTdHJlYW0KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIGNhbm9uaWNhbGl6YXRpb24gcmVzdWx0IG9jdGV0IHN0cmVhbSBvZiA8Y29kZT5TaWduZWRJbmZvPC9jb2RlPiBlbGVtZW50CisgICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgICogQHRocm93cyBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgYnl0ZVtdIGdldENhbm9uaWNhbGl6ZWRPY3RldFN0cmVhbSgpCisgICAgICAgICAgIHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uLCBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgWE1MU2VjdXJpdHlFeGNlcHRpb24geworCisgICAgICAgIGlmICh0aGlzLl9jMTRuaXplZEJ5dGVzID09IG51bGwpIHsKKyAgICAgICAgICAgIENhbm9uaWNhbGl6ZXIgYzE0bml6ZXIgPQorICAgICAgICAgICAgICAgIENhbm9uaWNhbGl6ZXIuZ2V0SW5zdGFuY2UodGhpcy5nZXRDYW5vbmljYWxpemF0aW9uTWV0aG9kVVJJKCkpOworCisgICAgICAgICAgICB0aGlzLl9jMTRuaXplZEJ5dGVzID0KKyAgICAgICAgICAgICAgICBjMTRuaXplci5jYW5vbmljYWxpemVTdWJ0cmVlKHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gbWFrZSBkZWZlbnNpdmUgY29weQorICAgICAgICByZXR1cm4gKGJ5dGVbXSkgdGhpcy5fYzE0bml6ZWRCeXRlcy5jbG9uZSgpOworICAgIH0KKyAgIAorICAgIC8qKgorICAgICAqIE91dHB1dCB0aGUgQzE0biBzdHJlYW0gdG8gdGhlIGdpdmVuIE91dHB1dFN0cmVhbS4KKyAgICAgKiBAcGFyYW0gb3MKKyAgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uCisgICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNpZ25Jbk9jdGVjdFN0cmVhbShPdXRwdXRTdHJlYW0gb3MpICAgICAgICAgICAgCisgICAgICAgIHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uLCBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiwKKyAgICAgICAgICAgIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKworICAgCWlmICh0aGlzLl9jMTRuaXplZEJ5dGVzID09IG51bGwpIHsKKyAgICAgICAgICAgIENhbm9uaWNhbGl6ZXIgYzE0bml6ZXIgPQorICAgICAgICAgICAgICAgIENhbm9uaWNhbGl6ZXIuZ2V0SW5zdGFuY2UodGhpcy5nZXRDYW5vbmljYWxpemF0aW9uTWV0aG9kVVJJKCkpOworICAgICAgICAgICAgYzE0bml6ZXIuc2V0V3JpdGVyKG9zKTsKKyAgICAgICAgICAgIFN0cmluZyBpbmNsdXNpdmVOYW1lc3BhY2VzID0gdGhpcy5nZXRJbmNsdXNpdmVOYW1lc3BhY2VzKCk7CisKKyAgICAgICAgICAgIGlmIChpbmNsdXNpdmVOYW1lc3BhY2VzID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBjMTRuaXplci5jYW5vbmljYWxpemVTdWJ0cmVlKHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjMTRuaXplci5jYW5vbmljYWxpemVTdWJ0cmVlCisgICAgICAgICAgICAgICAgICAgICh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LCBpbmNsdXNpdmVOYW1lc3BhY2VzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRyeSB7CisJCW9zLndyaXRlKHRoaXMuX2MxNG5pemVkQnl0ZXMpOworCSAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisJCXRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKGUpOworCSAgICB9ICAKKyAgICAgICAgfSAgICAKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBDYW5vbmljYWxpemF0aW9uIG1ldGhvZCBVUkkKKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIENhbm9uaWNhbGl6YXRpb24gbWV0aG9kIFVSSQorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0Q2Fub25pY2FsaXphdGlvbk1ldGhvZFVSSSgpIHsKKyAgICAgICByZXR1cm4gYzE0bk1ldGhvZC5nZXRBdHRyaWJ1dGVOUyhudWxsLCBDb25zdGFudHMuX0FUVF9BTEdPUklUSE0pOyAgICAKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBTaWduYXR1cmUgbWV0aG9kIFVSSQorICAgICAqCisgICAgICogQHJldHVybiB0aGUgU2lnbmF0dXJlIG1ldGhvZCBVUkkKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldFNpZ25hdHVyZU1ldGhvZFVSSSgpIHsKKworICAgICAgICBFbGVtZW50IHNpZ25hdHVyZUVsZW1lbnQgPSB0aGlzLmdldFNpZ25hdHVyZU1ldGhvZEVsZW1lbnQoKTsKKworICAgICAgICBpZiAoc2lnbmF0dXJlRWxlbWVudCAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gc2lnbmF0dXJlRWxlbWVudC5nZXRBdHRyaWJ1dGVOUyhudWxsLCBDb25zdGFudHMuX0FUVF9BTEdPUklUSE0pOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgLyoqCisgICAgICogTWV0aG9kIGdldFNpZ25hdHVyZU1ldGhvZEVsZW1lbnQKKyAgICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIFNpZ25hdHVyZU1ldGhvZCBFbGVtZW50ICAgCisgICAgICoKKyAgICAgKi8KKyAgICBwdWJsaWMgRWxlbWVudCBnZXRTaWduYXR1cmVNZXRob2RFbGVtZW50KCkgeworICAgICAgICByZXR1cm4gc2lnbmF0dXJlTWV0aG9kOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBTZWNyZXRLZXkgZm9yIHRoZSBhcHByb3ByaWF0ZSBNYWMgYWxnb3JpdGhtIGJhc2VkIG9uIGEKKyAgICAgKiBieXRlW10gYXJyYXkgcGFzc3dvcmQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc2VjcmV0S2V5Qnl0ZXMKKyAgICAgKiBAcmV0dXJuIHRoZSBzZWNyZXQga2V5IGZvciB0aGUgU2lnbmVkSW5mbyBlbGVtZW50LgorICAgICAqLworICAgIHB1YmxpYyBTZWNyZXRLZXkgY3JlYXRlU2VjcmV0S2V5KGJ5dGVbXSBzZWNyZXRLZXlCeXRlcykgeworCisgICAgICAgIHJldHVybiBuZXcgU2VjcmV0S2V5U3BlYyhzZWNyZXRLZXlCeXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NpZ25hdHVyZUFsZ29yaXRobQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRKQ0VBbGdvcml0aG1TdHJpbmcoKSk7CisgICAgfQorCisgICAgcHJvdGVjdGVkIFNpZ25hdHVyZUFsZ29yaXRobSBnZXRTaWduYXR1cmVBbGdvcml0aG0oKSB7CisgICAgICAgIHJldHVybiBfc2lnbmF0dXJlQWxnb3JpdGhtOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1ldGhvZCBnZXRCYXNlTG9jYWxOYW1lCisgICAgICogQGluaGVyaXREb2MKKyAgICAgKgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0QmFzZUxvY2FsTmFtZSgpIHsKKyAgICAgICAgcmV0dXJuIENvbnN0YW50cy5fVEFHX1NJR05FRElORk87CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBnZXRJbmNsdXNpdmVOYW1lc3BhY2VzKCkgeworCisgICAgICAgIFN0cmluZyBjMTRuTWV0aG9kVVJJID0gYzE0bk1ldGhvZC5nZXRBdHRyaWJ1dGVOUyhudWxsLCBDb25zdGFudHMuX0FUVF9BTEdPUklUSE0pOworICAgICAgICBpZiAoIShjMTRuTWV0aG9kVVJJLmVxdWFscygiaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIikgfHwKKwkgICAgYzE0bk1ldGhvZFVSSS5lcXVhbHMoImh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuI1dpdGhDb21tZW50cyIpKSkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBFbGVtZW50IGluY2x1c2l2ZUVsZW1lbnQgPSBYTUxVdGlscy5nZXROZXh0RWxlbWVudCgKKyAgICAgICAgICAgIGMxNG5NZXRob2QuZ2V0Rmlyc3RDaGlsZCgpKTsKKworICAgICAgICBpZiAoaW5jbHVzaXZlRWxlbWVudCAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIFN0cmluZyBpbmNsdXNpdmVOYW1lc3BhY2VzID0gbmV3IEluY2x1c2l2ZU5hbWVzcGFjZXMKKyAgICAgICAgICAgICAgICAgICAgKGluY2x1c2l2ZUVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICBJbmNsdXNpdmVOYW1lc3BhY2VzLkV4Y2x1c2l2ZUNhbm9uaWNhbGl6YXRpb25OYW1lc3BhY2UpLmdldEluY2x1c2l2ZU5hbWVzcGFjZXMoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5jbHVzaXZlTmFtZXNwYWNlczsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFhNTFNlY3VyaXR5RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2lnbmF0dXJlL1hNTFNpZ25hdHVyZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NpZ25hdHVyZS9YTUxTaWduYXR1cmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGZhZGI0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NpZ25hdHVyZS9YTUxTaWduYXR1cmUuamF2YQpAQCAtMCwwICsxLDc1OSBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LktleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlB1YmxpY0tleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlOworaW1wb3J0IGphdmF4LmNyeXB0by5TZWNyZXRLZXk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5hbGdvcml0aG1zLlNpZ25hdHVyZUFsZ29yaXRobTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkNhbm9uaWNhbGl6YXRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5DYW5vbmljYWxpemVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5CYXNlNjREZWNvZGluZ0V4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLlhNTFNlY3VyaXR5RXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuS2V5SW5mbzsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmNvbnRlbnQuWDUwOURhdGE7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1zOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkJhc2U2NDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuSTE4bjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5JZFJlc29sdmVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlNpZ25hdHVyZUVsZW1lbnRQcm94eTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5TaWduZXJPdXRwdXRTdHJlYW07CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuVW5zeW5jQnVmZmVyZWRPdXRwdXRTdHJlYW07CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMucmVzb2x2ZXIuUmVzb3VyY2VSZXNvbHZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5yZXNvbHZlci5SZXNvdXJjZVJlc29sdmVyU3BpOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uVGV4dDsKKworLyoqCisgKiBIYW5kbGVzIDxjb2RlPiZsdDtkczpTaWduYXR1cmUmZ3Q7PC9jb2RlPiBlbGVtZW50cy4KKyAqIFRoaXMgaXMgdGhlIG1haW4gY2xhc3MgdGhhdCBkZWFscyB3aXRoIGNyZWF0aW5nIGFuZCB2ZXJpZnlpbmcgc2lnbmF0dXJlcy4KKyAqCisgKiA8cD5UaGVyZSBhcmUgMiB0eXBlcyBvZiBjb25zdHJ1Y3RvcnMgZm9yIHRoaXMgY2xhc3MuIFRoZSBvbmVzIHRoYXQgdGFrZSBhCisgKiBkb2N1bWVudCwgYmFzZVVSSSBhbmQgMSBvciBtb3JlIEphdmEgT2JqZWN0cy4gVGhpcyBpcyBtb3N0bHkgdXNlZCBmb3IKKyAqIHNpZ25pbmcgcHVycG9zZXMuCisgKiBUaGUgb3RoZXIgY29uc3RydWN0b3IgaXMgdGhlIG9uZSB0aGF0IHRha2VzIGEgRE9NIEVsZW1lbnQgYW5kIGEgQmFzZVVSSS4KKyAqIFRoaXMgaXMgdXNlZCBtb3N0bHkgd2l0aCBmb3IgdmVyaWZ5aW5nLCB3aGVuIHlvdSBoYXZlIGEgU2lnbmF0dXJlRWxlbWVudC4KKyAqCisgKiBUaGVyZSBhcmUgYSBmZXcgZGlmZmVyZW50IHR5cGVzIG9mIG1ldGhvZHM6CisgKiA8dWw+PGxpPlRoZSBhZGREb2N1bWVudCogbWV0aG9kcyBhcmUgdXNlZCB0byBhZGQgUmVmZXJlbmNlcyB3aXRoIG9wdGlvbmFsCisgKiB0cmFuc2Zvcm1zIGR1cmluZyBzaWduaW5nLiA8L2xpPgorICogPGxpPmFkZEtleUluZm8qIG1ldGhvZHMgYXJlIHRvIGFkZCBDZXJ0aWZpY2F0ZXMgYW5kIEtleXMgdG8gdGhlCisgKiBLZXlJbmZvIHRhZ3MgZHVyaW5nIHNpZ25pbmcuIDwvbGk+CisgKiA8bGk+YXBwZW5kT2JqZWN0IGFsbG93cyBhIHVzZXIgdG8gYWRkIGFueSBYTUwgU3RydWN0dXJlIGFzIGFuCisgKiBPYmplY3RDb250YWluZXIgZHVyaW5nIHNpZ25pbmcuPC9saT4KKyAqIDxsaT5zaWduIGFuZCBjaGVja1NpZ25hdHVyZVZhbHVlIG1ldGhvZHMgYXJlIHVzZWQgdG8gc2lnbiBhbmQgdmFsaWRhdGUgdGhlCisgKiBzaWduYXR1cmUuIDwvbGk+PC91bD4KKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBYTUxTaWduYXR1cmUgZXh0ZW5kcyBTaWduYXR1cmVFbGVtZW50UHJveHkgeworCisgICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKFhNTFNpZ25hdHVyZS5jbGFzcy5nZXROYW1lKCkpOworICAgCisgICAgLyoqIE1BQyAtIFJlcXVpcmVkIEhNQUMtU0hBMSAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFMR09fSURfTUFDX0hNQUNfU0hBMSA9IENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMgKyAiaG1hYy1zaGExIjsKKworICAgIC8qKiBTaWduYXR1cmUgLSBSZXF1aXJlZCBEU0F3aXRoU0hBMSAoRFNTKSAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFMR09fSURfU0lHTkFUVVJFX0RTQSA9IENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMgKyAiZHNhLXNoYTEiOworCisgICAgLyoqIFNpZ25hdHVyZSAtIFJlY29tbWVuZGVkIFJTQXdpdGhTSEExICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUxHT19JRF9TSUdOQVRVUkVfUlNBID0gQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUyArICJyc2Etc2hhMSI7CisgICAgLyoqIFNpZ25hdHVyZSAtIFJlY29tbWVuZGVkIFJTQXdpdGhTSEExICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUxHT19JRF9TSUdOQVRVUkVfUlNBX1NIQTEgPSBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TICsgInJzYS1zaGExIjsKKyAgICAvKiogU2lnbmF0dXJlIC0gTk9UIFJlY29tbWVuZGVkIFJTQXdpdGhNRDUgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBTEdPX0lEX1NJR05BVFVSRV9OT1RfUkVDT01NRU5ERURfUlNBX01ENSA9IENvbnN0YW50cy5Nb3JlQWxnb3JpdGhtc1NwZWNOUyArICJyc2EtbWQ1IjsKKyAgICAvKiogU2lnbmF0dXJlIC0gT3B0aW9uYWwgUlNBd2l0aFJJUEVNRDE2MCAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFMR09fSURfU0lHTkFUVVJFX1JTQV9SSVBFTUQxNjAgPSBDb25zdGFudHMuTW9yZUFsZ29yaXRobXNTcGVjTlMgKyAicnNhLXJpcGVtZDE2MCI7CisgICAgLyoqIFNpZ25hdHVyZSAtIE9wdGlvbmFsIFJTQXdpdGhTSEEyNTYgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBTEdPX0lEX1NJR05BVFVSRV9SU0FfU0hBMjU2ID0gQ29uc3RhbnRzLk1vcmVBbGdvcml0aG1zU3BlY05TICsgInJzYS1zaGEyNTYiOworICAgIC8qKiBTaWduYXR1cmUgLSBPcHRpb25hbCBSU0F3aXRoU0hBMzg0ICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUxHT19JRF9TSUdOQVRVUkVfUlNBX1NIQTM4NCA9IENvbnN0YW50cy5Nb3JlQWxnb3JpdGhtc1NwZWNOUyArICJyc2Etc2hhMzg0IjsKKyAgICAvKiogU2lnbmF0dXJlIC0gT3B0aW9uYWwgUlNBd2l0aFNIQTUxMiAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFMR09fSURfU0lHTkFUVVJFX1JTQV9TSEE1MTIgPSBDb25zdGFudHMuTW9yZUFsZ29yaXRobXNTcGVjTlMgKyAicnNhLXNoYTUxMiI7CisgCisgICAgLyoqIEhNQUMgLSBOT1QgUmVjb21tZW5kZWQgSE1BQy1NRDUgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBTEdPX0lEX01BQ19ITUFDX05PVF9SRUNPTU1FTkRFRF9NRDUgPSBDb25zdGFudHMuTW9yZUFsZ29yaXRobXNTcGVjTlMgKyAiaG1hYy1tZDUiOworICAgIC8qKiBITUFDIC0gT3B0aW9uYWwgSE1BQy1SSVBFTUQxNjAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBTEdPX0lEX01BQ19ITUFDX1JJUEVNRDE2MCA9IENvbnN0YW50cy5Nb3JlQWxnb3JpdGhtc1NwZWNOUyArICJobWFjLXJpcGVtZDE2MCI7CisgICAgLyoqIEhNQUMgLSBPcHRpb25hbCBITUFDLVNIQTI1NiAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFMR09fSURfTUFDX0hNQUNfU0hBMjU2ID0gQ29uc3RhbnRzLk1vcmVBbGdvcml0aG1zU3BlY05TICsgImhtYWMtc2hhMjU2IjsKKyAgICAvKiogSE1BQyAtIE9wdGlvbmFsIEhNQUMtU0hBMjg0ICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUxHT19JRF9NQUNfSE1BQ19TSEEzODQgPSBDb25zdGFudHMuTW9yZUFsZ29yaXRobXNTcGVjTlMgKyAiaG1hYy1zaGEzODQiOworICAgIC8qKiBITUFDIC0gT3B0aW9uYWwgSE1BQy1TSEE1MTIgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBTEdPX0lEX01BQ19ITUFDX1NIQTUxMiA9IENvbnN0YW50cy5Nb3JlQWxnb3JpdGhtc1NwZWNOUyArICJobWFjLXNoYTUxMiI7CisgICAgLyoqU2lnbmF0dXJlIC0gT3B0aW9uYWwgRUNEU0F3aXRoU0hBMSAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFMR09fSURfU0lHTkFUVVJFX0VDRFNBX1NIQTEgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjZWNkc2Etc2hhMSI7CisKKyAgICAvKiogZHM6U2lnbmF0dXJlLmRzOlNpZ25lZEluZm8gZWxlbWVudCAqLworICAgIHByaXZhdGUgU2lnbmVkSW5mbyBfc2lnbmVkSW5mbyA9IG51bGw7CisKKyAgICAvKiogZHM6U2lnbmF0dXJlLmRzOktleUluZm8gKi8KKyAgICBwcml2YXRlIEtleUluZm8gX2tleUluZm8gPSBudWxsOworIAorICAgIC8qKgorICAgICAqIENoZWNraW5nIHRoZSBkaWdlc3RzIGluIFJlZmVyZW5jZXMgaW4gYSBTaWduYXR1cmUgYXJlIG1hbmRhdG9yeSwgYnV0IGZvcgorICAgICAqIFJlZmVyZW5jZXMgaW5zaWRlIGEgTWFuaWZlc3QgaXQgaXMgYXBwbGljYXRpb24gc3BlY2lmaWMuIFRoaXMgYm9vbGVhbiBpcworICAgICAqIHRvIGluZGljYXRlIHRoYXQgdGhlIFJlZmVyZW5jZXMgaW5zaWRlIE1hbmlmZXN0cyBzaG91bGQgYmUgdmFsaWRhdGVkLgorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBfZm9sbG93TWFuaWZlc3RzRHVyaW5nVmFsaWRhdGlvbiA9IGZhbHNlOworCisgICAgcHJpdmF0ZSBFbGVtZW50IHNpZ25hdHVyZVZhbHVlRWxlbWVudDsKKworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBNT0RFX1NJR04gPSAwOworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBNT0RFX1ZFUklGWSA9IDE7CisgICAgcHJpdmF0ZSBpbnQgX3N0YXRlID0gTU9ERV9TSUdOOworCisgICAgLyoqCisgICAgICogVGhpcyBjcmVhdGVzIGEgbmV3IDxDT0RFPmRzOlNpZ25hdHVyZTwvQ09ERT4gRWxlbWVudCBhbmQgYWRkcyBhbiBlbXB0eQorICAgICAqIDxDT0RFPmRzOlNpZ25lZEluZm88L0NPREU+LgorICAgICAqIFRoZSA8Y29kZT5kczpTaWduZWRJbmZvPC9jb2RlPiBpcyBpbml0aWFsaXplZCB3aXRoIHRoZSBzcGVjaWZpZWQgU2lnbmF0dXJlCisgICAgICogYWxnb3JpdGhtIGFuZCBDYW5vbmljYWxpemVyLkFMR09fSURfQzE0Tl9PTUlUX0NPTU1FTlRTIHdoaWNoIGlzIFJFUVVJUkVECisgICAgICogYnkgdGhlIHNwZWMuIFRoaXMgbWV0aG9kJ3MgbWFpbiB1c2UgaXMgZm9yIGNyZWF0aW5nIGEgbmV3IHNpZ25hdHVyZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkb2MgRG9jdW1lbnQgaW4gd2hpY2ggdGhlIHNpZ25hdHVyZSB3aWxsIGJlIGFwcGVuZGVkIGFmdGVyIGNyZWF0aW9uLgorICAgICAqIEBwYXJhbSBCYXNlVVJJIFVSSSB0byBiZSB1c2VkIGFzIGNvbnRleHQgZm9yIGFsbCByZWxhdGl2ZSBVUklzLgorICAgICAqIEBwYXJhbSBTaWduYXR1cmVNZXRob2RVUkkgc2lnbmF0dXJlIGFsZ29yaXRobSB0byB1c2UuCisgICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBYTUxTaWduYXR1cmUoRG9jdW1lbnQgZG9jLCBTdHJpbmcgQmFzZVVSSSwgU3RyaW5nIFNpZ25hdHVyZU1ldGhvZFVSSSkKKyAgICAgICAgICAgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKyAgICAgICAgdGhpcyhkb2MsIEJhc2VVUkksIFNpZ25hdHVyZU1ldGhvZFVSSSwgMCwKKyAgICAgICAgICAgICBDYW5vbmljYWxpemVyLkFMR09fSURfQzE0Tl9PTUlUX0NPTU1FTlRTKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RvciBYTUxTaWduYXR1cmUKKyAgICAgKgorICAgICAqIEBwYXJhbSBkb2MKKyAgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICAqIEBwYXJhbSBTaWduYXR1cmVNZXRob2RVUkkgdGhlIFNpZ25hdHVyZSBtZXRob2QgdG8gYmUgdXNlZC4KKyAgICAgKiBAcGFyYW0gSE1BQ091dHB1dExlbmd0aAorICAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgWE1MU2lnbmF0dXJlKERvY3VtZW50IGRvYywgU3RyaW5nIEJhc2VVUkksIFN0cmluZyBTaWduYXR1cmVNZXRob2RVUkksCisgICAgICAgIGludCBITUFDT3V0cHV0TGVuZ3RoKSB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworICAgICAgICB0aGlzKGRvYywgQmFzZVVSSSwgU2lnbmF0dXJlTWV0aG9kVVJJLCBITUFDT3V0cHV0TGVuZ3RoLAorICAgICAgICAgICAgIENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX09NSVRfQ09NTUVOVFMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdG9yIFhNTFNpZ25hdHVyZQorICAgICAqCisgICAgICogQHBhcmFtIGRvYworICAgICAqIEBwYXJhbSBCYXNlVVJJCisgICAgICogQHBhcmFtIFNpZ25hdHVyZU1ldGhvZFVSSSB0aGUgU2lnbmF0dXJlIG1ldGhvZCB0byBiZSB1c2VkLgorICAgICAqIEBwYXJhbSBDYW5vbmljYWxpemF0aW9uTWV0aG9kVVJJIHRoZSBjYW5vbmljYWxpemF0aW9uIGFsZ29yaXRobSB0byBiZSAKKyAgICAgKiB1c2VkIHRvIGMxNG5pemUgdGhlIFNpZ25lZEluZm8gZWxlbWVudC4KKyAgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIFhNTFNpZ25hdHVyZShEb2N1bWVudCBkb2MsIFN0cmluZyBCYXNlVVJJLCBTdHJpbmcgU2lnbmF0dXJlTWV0aG9kVVJJLAorICAgICAgICBTdHJpbmcgQ2Fub25pY2FsaXphdGlvbk1ldGhvZFVSSSkgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKyAgICAgICAgdGhpcyhkb2MsIEJhc2VVUkksIFNpZ25hdHVyZU1ldGhvZFVSSSwgMCwgQ2Fub25pY2FsaXphdGlvbk1ldGhvZFVSSSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IgWE1MU2lnbmF0dXJlCisgICAgICoKKyAgICAgKiBAcGFyYW0gZG9jCisgICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAgKiBAcGFyYW0gU2lnbmF0dXJlTWV0aG9kVVJJCisgICAgICogQHBhcmFtIEhNQUNPdXRwdXRMZW5ndGgKKyAgICAgKiBAcGFyYW0gQ2Fub25pY2FsaXphdGlvbk1ldGhvZFVSSQorICAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgWE1MU2lnbmF0dXJlKERvY3VtZW50IGRvYywgU3RyaW5nIEJhc2VVUkksIFN0cmluZyBTaWduYXR1cmVNZXRob2RVUkksCisgICAgICAgIGludCBITUFDT3V0cHV0TGVuZ3RoLCBTdHJpbmcgQ2Fub25pY2FsaXphdGlvbk1ldGhvZFVSSSkKKyAgICAgICAgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKworICAgICAgICBzdXBlcihkb2MpOworCisgICAgICAgIFN0cmluZyB4bWxuc0RzUHJlZml4ID0gCisgICAgICAgICAgICBnZXREZWZhdWx0UHJlZml4QmluZGluZ3MoQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUyk7CisgICAgICAgIGlmICh4bWxuc0RzUHJlZml4ID09IG51bGwpIHsKKyAgICAgICAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuc2V0QXR0cmlidXRlTlMKKwkgICAgKENvbnN0YW50cy5OYW1lc3BhY2VTcGVjTlMsICJ4bWxucyIsIENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5zZXRBdHRyaWJ1dGVOUworCSAgICAoQ29uc3RhbnRzLk5hbWVzcGFjZVNwZWNOUywgeG1sbnNEc1ByZWZpeCwgQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUyk7CisgICAgICAgIH0KKyAgICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX2Jhc2VVUkkgPSBCYXNlVVJJOworICAgICAgICB0aGlzLl9zaWduZWRJbmZvID0gbmV3IFNpZ25lZEluZm8KKyAgICAgICAgICAgICh0aGlzLl9kb2MsIFNpZ25hdHVyZU1ldGhvZFVSSSwgSE1BQ091dHB1dExlbmd0aCwKKyAgICAgICAgICAgICBDYW5vbmljYWxpemF0aW9uTWV0aG9kVVJJKTsKKworICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3NpZ25lZEluZm8uZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpOworCisgICAgICAgIC8vIGNyZWF0ZSBhbiBlbXB0eSBTaWduYXR1cmVWYWx1ZTsgdGhpcyBpcyBmaWxsZWQgYnkgc2V0U2lnbmF0dXJlVmFsdWVFbGVtZW50CisgICAgICAgIHNpZ25hdHVyZVZhbHVlRWxlbWVudCA9IFhNTFV0aWxzLmNyZWF0ZUVsZW1lbnRJblNpZ25hdHVyZVNwYWNlCisgICAgICAgICAgICAodGhpcy5fZG9jLCBDb25zdGFudHMuX1RBR19TSUdOQVRVUkVWQUxVRSk7CisKKyAgICAgICAgdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5hcHBlbmRDaGlsZChzaWduYXR1cmVWYWx1ZUVsZW1lbnQpOworICAgICAgICBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogIENyZWF0ZXMgYSBYTUxTaWduYXR1cmUgaW4gYSBEb2N1bWVudAorICAgICAqIEBwYXJhbSBkb2MKKyAgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICAqIEBwYXJhbSBTaWduYXR1cmVNZXRob2RFbGVtCisgICAgICogQHBhcmFtIENhbm9uaWNhbGl6YXRpb25NZXRob2RFbGVtCisgICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBYTUxTaWduYXR1cmUoRG9jdW1lbnQgZG9jLCBTdHJpbmcgQmFzZVVSSSwgCisgICAgICAgIEVsZW1lbnQgU2lnbmF0dXJlTWV0aG9kRWxlbSwgRWxlbWVudCBDYW5vbmljYWxpemF0aW9uTWV0aG9kRWxlbSkKKyAgICAgICAgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKworICAgICAgICBzdXBlcihkb2MpOworCisgICAgICAgIFN0cmluZyB4bWxuc0RzUHJlZml4ID0gCisgICAgICAgICAgICBnZXREZWZhdWx0UHJlZml4QmluZGluZ3MoQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUyk7CisgICAgICAgIGlmICh4bWxuc0RzUHJlZml4ID09IG51bGwpIHsKKyAgICAgICAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuc2V0QXR0cmlidXRlTlMKKwkgICAgKENvbnN0YW50cy5OYW1lc3BhY2VTcGVjTlMsICJ4bWxucyIsIENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5zZXRBdHRyaWJ1dGVOUworCSAgICAoQ29uc3RhbnRzLk5hbWVzcGFjZVNwZWNOUywgeG1sbnNEc1ByZWZpeCwgQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUyk7CisgICAgICAgIH0KKyAgICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX2Jhc2VVUkkgPSBCYXNlVVJJOworICAgICAgICB0aGlzLl9zaWduZWRJbmZvID0gbmV3IFNpZ25lZEluZm8KKyAgICAgICAgICAgICh0aGlzLl9kb2MsIFNpZ25hdHVyZU1ldGhvZEVsZW0sIENhbm9uaWNhbGl6YXRpb25NZXRob2RFbGVtKTsKKworICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3NpZ25lZEluZm8uZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpOworCisgICAgICAgIC8vIGNyZWF0ZSBhbiBlbXB0eSBTaWduYXR1cmVWYWx1ZTsgdGhpcyBpcyBmaWxsZWQgYnkgc2V0U2lnbmF0dXJlVmFsdWVFbGVtZW50CisgICAgICAgIHNpZ25hdHVyZVZhbHVlRWxlbWVudCA9IFhNTFV0aWxzLmNyZWF0ZUVsZW1lbnRJblNpZ25hdHVyZVNwYWNlCisgICAgICAgICAgICAodGhpcy5fZG9jLCBDb25zdGFudHMuX1RBR19TSUdOQVRVUkVWQUxVRSk7CisKKyAgICAgICAgdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5hcHBlbmRDaGlsZChzaWduYXR1cmVWYWx1ZUVsZW1lbnQpOworICAgICAgICBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyB3aWxsIHBhcnNlIHRoZSBlbGVtZW50IGFuZCBjb25zdHJ1Y3QgdGhlIEphdmEgT2JqZWN0cy4KKyAgICAgKiBUaGF0IHdpbGwgYWxsb3cgYSB1c2VyIHRvIHZhbGlkYXRlIHRoZSBzaWduYXR1cmUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZWxlbWVudCBkczpTaWduYXR1cmUgZWxlbWVudCB0aGF0IGNvbnRhaW5zIHRoZSB3aG9sZSBzaWduYXR1cmUKKyAgICAgKiBAcGFyYW0gQmFzZVVSSSBVUkkgdG8gYmUgcHJlcGVuZGVkIHRvIGFsbCByZWxhdGl2ZSBVUklzCisgICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIGlmIHRoZSBzaWduYXR1cmUgaXMgYmFkbHkgZm9ybWF0dGVkCisgICAgICovCisgICAgcHVibGljIFhNTFNpZ25hdHVyZShFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJKQorICAgICAgICB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uLCBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisKKyAgICAgICAgc3VwZXIoZWxlbWVudCwgQmFzZVVSSSk7CisKKyAgICAgICAgLy8gY2hlY2sgb3V0IFNpZ25lZEluZm8gY2hpbGQKKyAgICAgICAgRWxlbWVudCBzaWduZWRJbmZvRWxlbSA9IFhNTFV0aWxzLmdldE5leHRFbGVtZW50KGVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpKTsKKworICAgICAgICAvLyBjaGVjayB0byBzZWUgaWYgaXQgaXMgdGhlcmUKKyAgICAgICAgaWYgKHNpZ25lZEluZm9FbGVtID09IG51bGwpIHsKKyAgICAgICAgICAgIE9iamVjdCBleEFyZ3NbXSA9IHsgQ29uc3RhbnRzLl9UQUdfU0lHTkVESU5GTywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLl9UQUdfU0lHTkFUVVJFIH07CisKKyAgICAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oInhtbC5Xcm9uZ0NvbnRlbnQiLCBleEFyZ3MpOworICAgICAgICB9CisKKyAgICAgICAgLy8gY3JlYXRlIGEgU2lnbmVkSW5mbyBvYmplY3QgZnJvbSB0aGF0IGVsZW1lbnQKKyAgICAgICAgdGhpcy5fc2lnbmVkSW5mbyA9IG5ldyBTaWduZWRJbmZvKHNpZ25lZEluZm9FbGVtLCBCYXNlVVJJKTsKKwkvLyBnZXQgc2lnbmVkSW5mb0VsZW0gYWdhaW4gaW4gY2FzZSBpdCBoYXMgY2hhbmdlZAorICAgICAgICBzaWduZWRJbmZvRWxlbSA9IFhNTFV0aWxzLmdldE5leHRFbGVtZW50KGVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpKTsKKworICAgICAgICAvLyBjaGVjayBvdXQgU2lnbmF0dXJlVmFsdWUgY2hpbGQKKyAgICAgICAgdGhpcy5zaWduYXR1cmVWYWx1ZUVsZW1lbnQgPSAKKyAgICAgICAgICAgIFhNTFV0aWxzLmdldE5leHRFbGVtZW50KHNpZ25lZEluZm9FbGVtLmdldE5leHRTaWJsaW5nKCkpOworCisgICAgICAgIC8vIGNoZWNrIHRvIHNlZSBpZiBpdCBleGlzdHMKKyAgICAgICAgaWYgKHNpZ25hdHVyZVZhbHVlRWxlbWVudCA9PSBudWxsKSB7CisgICAgICAgICAgICBPYmplY3QgZXhBcmdzW10gPSB7IENvbnN0YW50cy5fVEFHX1NJR05BVFVSRVZBTFVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMuX1RBR19TSUdOQVRVUkUgfTsKKworICAgICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigieG1sLldyb25nQ29udGVudCIsIGV4QXJncyk7CisgICAgICAgIH0KKworICAgICAgICAvLyA8ZWxlbWVudCByZWY9ImRzOktleUluZm8iIG1pbk9jY3Vycz0iMCIvPgorICAgICAgICBFbGVtZW50IGtleUluZm9FbGVtID0gCisgICAgICAgICAgIFhNTFV0aWxzLmdldE5leHRFbGVtZW50KHNpZ25hdHVyZVZhbHVlRWxlbWVudC5nZXROZXh0U2libGluZygpKTsKKworICAgICAgICAvLyBJZiBpdCBleGlzdHMgdXNlIGl0LCBidXQgaXQncyBub3QgbWFuZGF0b3J5CisgICAgICAgIGlmIChrZXlJbmZvRWxlbSAhPSBudWxsICYmIAorICAgICAgICAgICAga2V5SW5mb0VsZW0uZ2V0TmFtZXNwYWNlVVJJKCkuZXF1YWxzKENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMpICYmIAorICAgICAgICAgICAga2V5SW5mb0VsZW0uZ2V0TG9jYWxOYW1lKCkuZXF1YWxzKENvbnN0YW50cy5fVEFHX0tFWUlORk8pKSB7CisgICAgICAgICAgICB0aGlzLl9rZXlJbmZvID0gbmV3IEtleUluZm8oa2V5SW5mb0VsZW0sIEJhc2VVUkkpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fc3RhdGUgPSBNT0RFX1ZFUklGWTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSA8Y29kZT5JZDwvY29kZT4gYXR0cmlidXRlCisgICAgICoKKyAgICAgKiBAcGFyYW0gaWQgSWQgdmFsdWUgZm9yIHRoZSBpZCBhdHRyaWJ1dGUgb24gdGhlIFNpZ25hdHVyZSBFbGVtZW50CisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0SWQoU3RyaW5nIGlkKSB7CisgICAgICAgIGlmIChpZCAhPSBudWxsKSB7CisgICAgICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LnNldEF0dHJpYnV0ZU5TKG51bGwsIENvbnN0YW50cy5fQVRUX0lELCBpZCk7CisgICAgICAgICAgICBJZFJlc29sdmVyLnJlZ2lzdGVyRWxlbWVudEJ5SWQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCwgaWQpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgPGNvZGU+SWQ8L2NvZGU+IGF0dHJpYnV0ZQorICAgICAqCisgICAgICogQHJldHVybiB0aGUgPGNvZGU+SWQ8L2NvZGU+IGF0dHJpYnV0ZQorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0SWQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmdldEF0dHJpYnV0ZU5TKG51bGwsIENvbnN0YW50cy5fQVRUX0lEKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBjb21wbGV0ZWx5IHBhcnNlZCA8Y29kZT5TaWduZWRJbmZvPC9jb2RlPiBvYmplY3QuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBjb21wbGV0ZWx5IHBhcnNlZCA8Y29kZT5TaWduZWRJbmZvPC9jb2RlPiBvYmplY3QuCisgICAgICovCisgICAgcHVibGljIFNpZ25lZEluZm8gZ2V0U2lnbmVkSW5mbygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NpZ25lZEluZm87CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgb2N0ZXQgdmFsdWUgb2YgdGhlIFNpZ25hdHVyZVZhbHVlIGVsZW1lbnQuCisgICAgICogVGhyb3dzIGFuIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiBpZiBpdCBoYXMgbm8gb3Igd3JvbmcgY29udGVudC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBTaWduYXR1cmVWYWx1ZSBlbGVtZW50LgorICAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIElmIHRoZXJlIGlzIG5vIGNvbnRlbnQKKyAgICAgKi8KKyAgICBwdWJsaWMgYnl0ZVtdIGdldFNpZ25hdHVyZVZhbHVlKCkgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gQmFzZTY0LmRlY29kZShzaWduYXR1cmVWYWx1ZUVsZW1lbnQpOworICAgICAgICB9IGNhdGNoIChCYXNlNjREZWNvZGluZ0V4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICAgIH0KKyAgICB9CisgCisgICAgLyoqCisgICAgICogQmFzZTY0IGVuY29kZXMgYW5kIHNldHMgdGhlIGJ5dGVzIGFzIHRoZSBjb250ZW50IG9mIHRoZSBTaWduYXR1cmVWYWx1ZQorICAgICAqIE5vZGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYnl0ZXMgYnl0ZXMgdG8gYmUgdXNlZCBieSBTaWduYXR1cmVWYWx1ZSBiZWZvcmUgQmFzZTY0IGVuY29kaW5nCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHNldFNpZ25hdHVyZVZhbHVlRWxlbWVudChieXRlW10gYnl0ZXMpIHsKKworICAgICAgICB3aGlsZSAoc2lnbmF0dXJlVmFsdWVFbGVtZW50Lmhhc0NoaWxkTm9kZXMoKSkgeworICAgICAgICAgICAgc2lnbmF0dXJlVmFsdWVFbGVtZW50LnJlbW92ZUNoaWxkCisJCShzaWduYXR1cmVWYWx1ZUVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIFN0cmluZyBiYXNlNjRjb2RlZFZhbHVlID0gQmFzZTY0LmVuY29kZShieXRlcyk7CisKKyAgICAgICAgaWYgKGJhc2U2NGNvZGVkVmFsdWUubGVuZ3RoKCkgPiA3NiAmJiAhWE1MVXRpbHMuaWdub3JlTGluZUJyZWFrcygpKSB7CisJICAgIGJhc2U2NGNvZGVkVmFsdWUgPSAiXG4iICsgYmFzZTY0Y29kZWRWYWx1ZSArICJcbiI7CisgICAgICAgIH0KKworICAgICAgICBUZXh0IHQgPSB0aGlzLl9kb2MuY3JlYXRlVGV4dE5vZGUoYmFzZTY0Y29kZWRWYWx1ZSk7CisgICAgICAgIHNpZ25hdHVyZVZhbHVlRWxlbWVudC5hcHBlbmRDaGlsZCh0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBLZXlJbmZvIGNoaWxkLiBJZiB3ZSBhcmUgaW4gc2lnbmluZyBtb2RlIGFuZCB0aGUgS2V5SW5mbworICAgICAqIGRvZXMgbm90IGV4aXN0IHlldCwgaXQgaXMgY3JlYXRlZCBvbiBkZW1hbmQgYW5kIGFkZGVkIHRvIHRoZSBTaWduYXR1cmUuCisgICAgICogPGJyPgorICAgICAqIFRoaXMgYWxsb3dzIHRvIGFkZCBhcmJpdHJhcnkgY29udGVudCB0byB0aGUgS2V5SW5mbyBkdXJpbmcgc2lnbmluZy4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIEtleUluZm8gb2JqZWN0CisgICAgICovCisgICAgcHVibGljIEtleUluZm8gZ2V0S2V5SW5mbygpIHsKKworICAgICAgICAvLyBjaGVjayB0byBzZWUgaWYgd2UgYXJlIHNpZ25pbmcgYW5kIGlmIHdlIGhhdmUgdG8gY3JlYXRlIGEga2V5aW5mbworICAgICAgICBpZiAodGhpcy5fc3RhdGUgPT0gTU9ERV9TSUdOICYmIHRoaXMuX2tleUluZm8gPT0gbnVsbCkgeworCisgICAgICAgICAgICAvLyBjcmVhdGUgdGhlIEtleUluZm8KKyAgICAgICAgICAgIHRoaXMuX2tleUluZm8gPSBuZXcgS2V5SW5mbyh0aGlzLl9kb2MpOworCisgICAgICAgICAgICAvLyBnZXQgdGhlIEVsZW1lbnQgZnJvbSBLZXlJbmZvCisgICAgICAgICAgICBFbGVtZW50IGtleUluZm9FbGVtZW50ID0gdGhpcy5fa2V5SW5mby5nZXRFbGVtZW50KCk7CisgICAgICAgICAgICBFbGVtZW50IGZpcnN0T2JqZWN0ID0gWE1MVXRpbHMuc2VsZWN0RHNOb2RlCisgICAgICAgICAgICAgICAgKHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpLCAKKyAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLl9UQUdfT0JKRUNULCAwKTsKKwkgICAJICAgICAKKyAgICAgICAgICAgIGlmIChmaXJzdE9iamVjdCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgIC8vIGFkZCBpdCBiZWZvcmUgdGhlIG9iamVjdAorICAgICAgICAgICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50Lmluc2VydEJlZm9yZShrZXlJbmZvRWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RPYmplY3QpOworCSAgICAgICAgIFhNTFV0aWxzLmFkZFJldHVybkJlZm9yZUNoaWxkCisgICAgICAgICAgICAgICAgICAgICAodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCwgZmlyc3RPYmplY3QpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgLy8gYWRkIGl0IGFzIHRoZSBsYXN0IGVsZW1lbnQgdG8gdGhlIHNpZ25hdHVyZQorICAgICAgICAgICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmFwcGVuZENoaWxkKGtleUluZm9FbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpOworICAgICAgICAgICAgfSAgICAgICAgIAorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRoaXMuX2tleUluZm87CisgICAgfQorCisgICAgLyoqCisgICAgICogQXBwZW5kcyBhbiBPYmplY3QgKG5vdCBhIDxjb2RlPmphdmEubGFuZy5PYmplY3Q8L2NvZGU+IGJ1dCBhbiBPYmplY3QKKyAgICAgKiBlbGVtZW50KSB0byB0aGUgU2lnbmF0dXJlLiBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgaXMgb25seSBwb3NzaWJsZQorICAgICAqIHdoZW4gc2lnbmluZy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBvYmplY3QgZHM6T2JqZWN0IHRvIGJlIGFwcGVuZGVkLgorICAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIFdoZW4gdGhpcyBvYmplY3QgaXMgdXNlZCB0byB2ZXJpZnkuCisgICAgICovCisgICAgcHVibGljIHZvaWQgYXBwZW5kT2JqZWN0KE9iamVjdENvbnRhaW5lciBvYmplY3QpCisgICAgICAgICAgIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworCisgICAgICAvL3RyeSB7CisgICAgICAgICAvL2lmICh0aGlzLl9zdGF0ZSAhPSBNT0RFX1NJR04pIHsKKyAgICAgICAgICAgLy8gdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAvLyAgInNpZ25hdHVyZS5vcGVyYXRpb25Pbmx5QmVmb3JlU2lnbiIpOworICAgICAgICAgLy99CisKKyAgICAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQob2JqZWN0LmdldEVsZW1lbnQoKSk7CisgICAgICAgICBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCk7CisgICAgICAvL30gY2F0Y2ggKFhNTFNlY3VyaXR5RXhjZXB0aW9uIGV4KSB7CisgICAgICAgIC8vIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgLy99CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgPGNvZGU+aTxjb2RlPnRoIDxjb2RlPmRzOk9iamVjdDwvY29kZT4gY2hpbGQgb2YgdGhlIHNpZ25hdHVyZQorICAgICAqIG9yIG51bGwgaWYgbm8gc3VjaCA8Y29kZT5kczpPYmplY3Q8L2NvZGU+IGVsZW1lbnQgZXhpc3RzLgorICAgICAqCisgICAgICogQHBhcmFtIGkKKyAgICAgKiBAcmV0dXJuIHRoZSA8Y29kZT5pPGNvZGU+dGggPGNvZGU+ZHM6T2JqZWN0PC9jb2RlPiBjaGlsZCBvZiB0aGUgc2lnbmF0dXJlCisgICAgICogb3IgbnVsbCBpZiBubyBzdWNoIDxjb2RlPmRzOk9iamVjdDwvY29kZT4gZWxlbWVudCBleGlzdHMuCisgICAgICovCisgICAgcHVibGljIE9iamVjdENvbnRhaW5lciBnZXRPYmplY3RJdGVtKGludCBpKSB7CisKKyAgICAgICAgRWxlbWVudCBvYmpFbGVtID0gWE1MVXRpbHMuc2VsZWN0RHNOb2RlCisgICAgICAgICAgICAodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5nZXRGaXJzdENoaWxkKCksIENvbnN0YW50cy5fVEFHX09CSkVDVCwgaSk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgT2JqZWN0Q29udGFpbmVyKG9iakVsZW0sIHRoaXMuX2Jhc2VVUkkpOworICAgICAgICB9IGNhdGNoIChYTUxTZWN1cml0eUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYWxsIDxjb2RlPmRzOk9iamVjdDwvY29kZT4gZWxlbWVudHMuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgYWxsIDxjb2RlPmRzOk9iamVjdDwvY29kZT4gZWxlbWVudHMuCisgICAgICovCisgICAgcHVibGljIGludCBnZXRPYmplY3RMZW5ndGgoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmxlbmd0aChDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TLCBDb25zdGFudHMuX1RBR19PQkpFQ1QpOworICAgIH0KKworICAgIC8qKgorICAgICAqIERpZ2VzdHMgYWxsIFJlZmVyZW5jZXMgaW4gdGhlIFNpZ25lZEluZm8sIGNhbGN1bGF0ZXMgdGhlIHNpZ25hdHVyZSB2YWx1ZSAKKyAgICAgKiBhbmQgc2V0cyBpdCBpbiB0aGUgU2lnbmF0dXJlVmFsdWUgRWxlbWVudC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzaWduaW5nS2V5IHRoZSB7QGxpbmsgamF2YS5zZWN1cml0eS5Qcml2YXRlS2V5fSBvciAKKyAgICAgKiB7QGxpbmsgamF2YXguY3J5cHRvLlNlY3JldEtleX0gdGhhdCBpcyB1c2VkIHRvIHNpZ24uCisgICAgICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzaWduKEtleSBzaWduaW5nS2V5KSB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKworICAgICAgICBpZiAoc2lnbmluZ0tleSBpbnN0YW5jZW9mIFB1YmxpY0tleSkgeworICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbihJMThuCisgICAgICAgICAgICAudHJhbnNsYXRlKCJhbGdvcml0aG1zLm9wZXJhdGlvbk9ubHlWZXJpZmljYXRpb24iKSk7CisgICAgICAgIH0KKworICAgICAgICB0cnkgeworICAgICAgICAgICAgLy9DcmVhdGUgYSBTaWduYXR1cmVBbGdvcml0aG0gb2JqZWN0CisgICAgICAgCSAgICBTaWduZWRJbmZvIHNpID0gdGhpcy5nZXRTaWduZWRJbmZvKCk7CisgICAgICAgICAgICBTaWduYXR1cmVBbGdvcml0aG0gc2EgPSBzaS5nZXRTaWduYXR1cmVBbGdvcml0aG0oKTsgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZSBTaWduYXR1cmVBbGdvcml0aG0gZm9yIHNpZ25pbmcKKyAgICAgICAgICAgICAgICBzYS5pbml0U2lnbihzaWduaW5nS2V5KTsgICAgICAgICAgICAKKyAgICAKKyAgICAgICAgICAgICAgICAvLyBnZW5lcmF0ZSBkaWdlc3QgdmFsdWVzIGZvciBhbGwgUmVmZXJlbmNlcyBpbiB0aGlzIFNpZ25lZEluZm8KKyAgICAgICAgICAgICAgICBzaS5nZW5lcmF0ZURpZ2VzdFZhbHVlcygpOworICAgICAgICAgICAgICAgIE91dHB1dFN0cmVhbSBzbyA9IG5ldyBVbnN5bmNCdWZmZXJlZE91dHB1dFN0cmVhbShuZXcgU2lnbmVyT3V0cHV0U3RyZWFtKHNhKSk7CisgICAgICAgICAgICAgICAgLy8gZ2V0IHRoZSBjYW5vbmljYWxpemVkIGJ5dGVzIGZyb20gU2lnbmVkSW5mbworICAgICAgICAgICAgICAgIHNpLnNpZ25Jbk9jdGVjdFN0cmVhbShzbyk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc28uY2xvc2UoKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgLy8gSW1wb3NzaWJsZS4uLmJ1dCBjbGVhciB0aGUgc2lnbmF0dXJlIGNhY2hlIGFueXdheQorICAgICAgICAgICAgICAgIHNhLmNsZWFyU2lnbmF0dXJlQ2FjaGUoKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFhNTFNlY3VyaXR5RXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgc2EuY2xlYXJTaWduYXR1cmVDYWNoZSgpOworICAgICAgICAgICAgICAgIHRocm93IGV4OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBzZXQgdGhlbSBvbiB0aGUgU2lnbmF0dXJlVmFsdWUgZWxlbWVudAorICAgICAgICAgICAgdGhpcy5zZXRTaWduYXR1cmVWYWx1ZUVsZW1lbnQoc2Euc2lnbigpKTsKKyAgICAgICAgfSBjYXRjaCAoWE1MU2lnbmF0dXJlRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICB0aHJvdyBleDsKKyAgICAgICAgfSBjYXRjaCAoQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICAgIH0gY2F0Y2ggKEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgICAgfSBjYXRjaCAoWE1MU2VjdXJpdHlFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQWRkcyBhIHtAbGluayBSZXNvdXJjZVJlc29sdmVyfSB0byBlbmFibGUgdGhlIHJldHJpZXZhbCBvZiByZXNvdXJjZXMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcmVzb2x2ZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhZGRSZXNvdXJjZVJlc29sdmVyKFJlc291cmNlUmVzb2x2ZXIgcmVzb2x2ZXIpIHsKKyAgICAgICAgdGhpcy5nZXRTaWduZWRJbmZvKCkuYWRkUmVzb3VyY2VSZXNvbHZlcihyZXNvbHZlcik7CisgICAgfQorCisgICAgLyoqCisgICAgICogQWRkcyBhIHtAbGluayBSZXNvdXJjZVJlc29sdmVyU3BpfSB0byBlbmFibGUgdGhlIHJldHJpZXZhbCBvZiByZXNvdXJjZXMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcmVzb2x2ZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhZGRSZXNvdXJjZVJlc29sdmVyKFJlc291cmNlUmVzb2x2ZXJTcGkgcmVzb2x2ZXIpIHsKKyAgICAgICAgdGhpcy5nZXRTaWduZWRJbmZvKCkuYWRkUmVzb3VyY2VSZXNvbHZlcihyZXNvbHZlcik7CisgICAgfQorCisgICAgLyoqCisgICAgICogRXh0cmFjdHMgdGhlIHB1YmxpYyBrZXkgZnJvbSB0aGUgY2VydGlmaWNhdGUgYW5kIHZlcmlmaWVzIGlmIHRoZSBzaWduYXR1cmUKKyAgICAgKiBpcyB2YWxpZCBieSByZS1kaWdlc3RpbmcgYWxsIFJlZmVyZW5jZXMsIGNvbXBhcmluZyB0aG9zZSBhZ2FpbnN0IHRoZQorICAgICAqIHN0b3JlZCBEaWdlc3RWYWx1ZXMgYW5kIHRoZW4gY2hlY2tpbmcgdG8gc2VlIGlmIHRoZSBTaWduYXR1cmVzIG1hdGNoIG9uCisgICAgICogdGhlIFNpZ25lZEluZm8uCisgICAgICoKKyAgICAgKiBAcGFyYW0gY2VydCBDZXJ0aWZpY2F0ZSB0aGF0IGNvbnRhaW5zIHRoZSBwdWJsaWMga2V5IHBhcnQgb2YgdGhlIGtleXBhaXIgCisgICAgICogdGhhdCB3YXMgdXNlZCB0byBzaWduLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgc2lnbmF0dXJlIGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UKKyAgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGNoZWNrU2lnbmF0dXJlVmFsdWUoWDUwOUNlcnRpZmljYXRlIGNlcnQpCisgICAgICAgIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworCisgICAgICAgIC8vIHNlZSBpZiBjZXJ0IGlzIG51bGwKKyAgICAgICAgaWYgKGNlcnQgIT0gbnVsbCkgeworICAgICAgICAgICAgLy8gY2hlY2sgdGhlIHZhbHVlcyB3aXRoIHRoZSBwdWJsaWMga2V5IGZyb20gdGhlIGNlcnQKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmNoZWNrU2lnbmF0dXJlVmFsdWUoY2VydC5nZXRQdWJsaWNLZXkoKSk7CisgICAgICAgIH0gCisgICAgICAKKyAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyAiRGlkbid0IGdldCBhIGNlcnRpZmljYXRlIiB9OworICAgICAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJlbXB0eSIsIGV4QXJncyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVmVyaWZpZXMgaWYgdGhlIHNpZ25hdHVyZSBpcyB2YWxpZCBieSByZWRpZ2VzdGluZyBhbGwgUmVmZXJlbmNlcywKKyAgICAgKiBjb21wYXJpbmcgdGhvc2UgYWdhaW5zdCB0aGUgc3RvcmVkIERpZ2VzdFZhbHVlcyBhbmQgdGhlbiBjaGVja2luZyB0byBzZWUKKyAgICAgKiBpZiB0aGUgU2lnbmF0dXJlcyBtYXRjaCBvbiB0aGUgU2lnbmVkSW5mby4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwayB7QGxpbmsgamF2YS5zZWN1cml0eS5QdWJsaWNLZXl9IHBhcnQgb2YgdGhlIGtleXBhaXIgb3IgCisgICAgICoge0BsaW5rIGphdmF4LmNyeXB0by5TZWNyZXRLZXl9IHRoYXQgd2FzIHVzZWQgdG8gc2lnbgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgc2lnbmF0dXJlIGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UKKyAgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGNoZWNrU2lnbmF0dXJlVmFsdWUoS2V5IHBrKSB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKworICAgICAgICAvL0NPTU1FTlQ6IHBrIHN1Z2dlc3RzIGl0IGNhbiBvbmx5IGJlIGEgcHVibGljIGtleT8KKyAgICAgICAgLy9jaGVjayB0byBzZWUgaWYgdGhlIGtleSBpcyBub3QgbnVsbAorICAgICAgICBpZiAocGsgPT0gbnVsbCkgeworICAgICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyAiRGlkbid0IGdldCBhIGtleSIgfTsKKyAgICAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImVtcHR5IiwgZXhBcmdzKTsKKyAgICAgICAgfQorICAgICAgICAvLyBhbGwgcmVmZXJlbmNlcyBpbnNpZGUgdGhlIHNpZ25lZGluZm8gbmVlZCB0byBiZSBkZXJlZmVyZW5jZWQgYW5kCisgICAgICAgIC8vIGRpZ2VzdGVkIGFnYWluIHRvIHNlZSBpZiB0aGUgb3V0Y29tZSBtYXRjaGVzIHRoZSBzdG9yZWQgdmFsdWUgaW4gdGhlCisgICAgICAgIC8vIFNpZ25lZEluZm8uCisgICAgICAgIC8vIElmIF9mb2xsb3dNYW5pZmVzdHNEdXJpbmdWYWxpZGF0aW9uIGlzIHRydWUgaXQgd2lsbCBkbyB0aGUgc2FtZSBmb3IKKyAgICAgICAgLy8gUmVmZXJlbmNlcyBpbnNpZGUgYSBNYW5pZmVzdC4KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFNpZ25lZEluZm8gc2kgPSB0aGlzLmdldFNpZ25lZEluZm8oKTsKKyAgICAgICAgICAgIC8vY3JlYXRlIGEgU2lnbmF0dXJlQWxnb3JpdGhtcyBmcm9tIHRoZSBTaWduYXR1cmVNZXRob2QgaW5zaWRlCisgICAgICAgICAgICAvL1NpZ25lZEluZm8uIFRoaXMgaXMgdXNlZCB0byB2YWxpZGF0ZSB0aGUgc2lnbmF0dXJlLgorICAgICAgICAgICAgU2lnbmF0dXJlQWxnb3JpdGhtIHNhID0gc2kuZ2V0U2lnbmF0dXJlQWxnb3JpdGhtKCk7ICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobG9nLmlzRGVidWdFbmFibGVkKCkpIHsKKyAgICAgICAgICAgICAgICBsb2cuZGVidWcoIlNpZ25hdHVyZU1ldGhvZFVSSSA9ICIgKyBzYS5nZXRBbGdvcml0aG1VUkkoKSk7CisgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCJqY2VTaWdBbGdvcml0aG0gICAgPSAiICsgc2EuZ2V0SkNFQWxnb3JpdGhtU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygiamNlU2lnUHJvdmlkZXIgICAgID0gIiArIHNhLmdldEpDRVByb3ZpZGVyTmFtZSgpKTsKKyAgICAgICAgICAgICAgICBsb2cuZGVidWcoIlB1YmxpY0tleSA9ICIgKyBwayk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBieXRlIHNpZ0J5dGVzW10gPSBudWxsOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBzYS5pbml0VmVyaWZ5KHBrKTsKKworICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgY2Fub25pY2FsaXplZCAobm9ybWFsaXplZCkgU2lnbmVkSW5mbworICAgICAgICAgICAgICAgIFNpZ25lck91dHB1dFN0cmVhbSBzbyA9IG5ldyBTaWduZXJPdXRwdXRTdHJlYW0oc2EpOworICAgICAgICAgICAgICAgIE91dHB1dFN0cmVhbSBib3MgPSBuZXcgVW5zeW5jQnVmZmVyZWRPdXRwdXRTdHJlYW0oc28pOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHNpLnNpZ25Jbk9jdGVjdFN0cmVhbShib3MpOworICAgIAkJICAgIGJvcy5jbG9zZSgpOworICAgIAkJICAgIC8vIHJldHJpZXZlIHRoZSBieXRlW10gZnJvbSB0aGUgc3RvcmVkIHNpZ25hdHVyZQorICAgIAkJICAgIHNpZ0J5dGVzID0gdGhpcy5nZXRTaWduYXR1cmVWYWx1ZSgpOworICAgIAkgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZXgpIHsKKyAgICAgCSAgICAgICAgLy8gSW1wb3NzaWJsZS4uLmJ1dCBjbGVhciB0aGUgdmVyaWZpY2F0aW9uIGNhY2hlIGFueXdheQorICAgIAkgICAgICAgIHNhLmNsZWFyVmVyaWZpY2F0aW9uQ2FjaGUoKTsKKyAgICAJICAgIH0gY2F0Y2ggKFhNTFNlY3VyaXR5RXhjZXB0aW9uIGV4KSB7CisgICAgCSAgICAgICAgc2EuY2xlYXJWZXJpZmljYXRpb25DYWNoZSgpOworICAgIAkgICAgICAgIHRocm93IGV4OworICAgIAkgICAgfQorCisgICAgICAgICAgICAvLyBoYXZlIFNpZ25hdHVyZUFsZ29yaXRobSBzaWduIHRoZSBpbnB1dCBieXRlcyBhbmQgY29tcGFyZSB0aGVtIHRvIAorICAgICAgICAgICAgLy8gdGhlIGJ5dGVzIHRoYXQgd2VyZSBzdG9yZWQgaW4gdGhlIHNpZ25hdHVyZS4KKyAgICAgICAgICAgIGlmICghc2EudmVyaWZ5KHNpZ0J5dGVzKSkgeworICAgICAgICAgICAgICAgIGxvZy53YXJuKCJTaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZhaWxlZC4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBzaS52ZXJpZnkodGhpcy5fZm9sbG93TWFuaWZlc3RzRHVyaW5nVmFsaWRhdGlvbik7CisgICAgICAgIH0gY2F0Y2ggKFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgdGhyb3cgZXg7CisgICAgICAgIH0gY2F0Y2ggKFhNTFNlY3VyaXR5RXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgICAgfSAKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBZGQgYSBSZWZlcmVuY2Ugd2l0aCBmdWxsIHBhcmFtZXRlcnMgdG8gdGhpcyBTaWduYXR1cmUKKyAgICAgKgorICAgICAqIEBwYXJhbSByZWZlcmVuY2VVUkkgVVJJIG9mIHRoZSByZXNvdXJjZSB0byBiZSBzaWduZWQuIENhbiBiZSBudWxsIGluIAorICAgICAqIHdoaWNoIGNhc2UgdGhlIGRlcmVmZXJlbmNpbmcgaXMgYXBwbGljYXRpb24gc3BlY2lmaWMuIENhbiBiZSAiIiBpbiB3aGljaCAKKyAgICAgKiBpdCdzIHRoZSBwYXJlbnQgbm9kZSAob3IgcGFyZW50IGRvY3VtZW50PykuIFRoZXJlIGNhbiBvbmx5IGJlIG9uZSAiIiBpbiAKKyAgICAgKiBlYWNoIHNpZ25hdHVyZS4KKyAgICAgKiBAcGFyYW0gdHJhbnMgT3B0aW9uYWwgbGlzdCBvZiB0cmFuc2Zvcm1hdGlvbnMgdG8gYmUgZG9uZSBiZWZvcmUgZGlnZXN0aW5nCisgICAgICogQHBhcmFtIGRpZ2VzdFVSSSBNYW5kYXRvcnkgVVJJIG9mIHRoZSBkaWdlc3RpbmcgYWxnb3JpdGhtIHRvIHVzZS4KKyAgICAgKiBAcGFyYW0gUmVmZXJlbmNlSWQgT3B0aW9uYWwgaWQgYXR0cmlidXRlIGZvciB0aGlzIFJlZmVyZW5jZQorICAgICAqIEBwYXJhbSBSZWZlcmVuY2VUeXBlIE9wdGlvbmFsIG1pbWV0eXBlIGZvciB0aGUgVVJJCisgICAgICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhZGREb2N1bWVudChTdHJpbmcgcmVmZXJlbmNlVVJJLCBUcmFuc2Zvcm1zIHRyYW5zLCAKKyAgICAgICAgU3RyaW5nIGRpZ2VzdFVSSSwgU3RyaW5nIFJlZmVyZW5jZUlkLCBTdHJpbmcgUmVmZXJlbmNlVHlwZSkKKyAgICAgICAgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisgICAgICAgIHRoaXMuX3NpZ25lZEluZm8uYWRkRG9jdW1lbnQodGhpcy5fYmFzZVVSSSwgcmVmZXJlbmNlVVJJLCB0cmFucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3RVUkksIFJlZmVyZW5jZUlkLCBSZWZlcmVuY2VUeXBlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIG1ldGhvZCBpcyBhIHByb3h5IG1ldGhvZCBmb3IgdGhlIHtAbGluayBNYW5pZmVzdCNhZGREb2N1bWVudH0gbWV0aG9kLgorICAgICAqCisgICAgICogQHBhcmFtIHJlZmVyZW5jZVVSSSBVUkkgYWNjb3JkaW5nIHRvIHRoZSBYTUwgU2lnbmF0dXJlIHNwZWNpZmljYXRpb24uCisgICAgICogQHBhcmFtIHRyYW5zIExpc3Qgb2YgdHJhbnNmb3JtYXRpb25zIHRvIGJlIGFwcGxpZWQuCisgICAgICogQHBhcmFtIGRpZ2VzdFVSSSBVUkkgb2YgdGhlIGRpZ2VzdCBhbGdvcml0aG0gdG8gYmUgdXNlZC4KKyAgICAgKiBAc2VlIE1hbmlmZXN0I2FkZERvY3VtZW50CisgICAgICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhZGREb2N1bWVudChTdHJpbmcgcmVmZXJlbmNlVVJJLCBUcmFuc2Zvcm1zIHRyYW5zLCAKKyAgICAgICAgU3RyaW5nIGRpZ2VzdFVSSSkgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisgICAgICAgIHRoaXMuX3NpZ25lZEluZm8uYWRkRG9jdW1lbnQodGhpcy5fYmFzZVVSSSwgcmVmZXJlbmNlVVJJLCB0cmFucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3RVUkksIG51bGwsIG51bGwpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFkZHMgYSBSZWZlcmVuY2Ugd2l0aCBqdXN0IHRoZSBVUkkgYW5kIHRoZSB0cmFuc2Zvcm1zLiBUaGlzIHVzZWQgdGhlCisgICAgICogU0hBMSBhbGdvcml0aG0gYXMgYSBkZWZhdWx0IGRpZ2VzdCBhbGdvcml0aG0uCisgICAgICoKKyAgICAgKiBAcGFyYW0gcmVmZXJlbmNlVVJJIFVSSSBhY2NvcmRpbmcgdG8gdGhlIFhNTCBTaWduYXR1cmUgc3BlY2lmaWNhdGlvbi4KKyAgICAgKiBAcGFyYW0gdHJhbnMgTGlzdCBvZiB0cmFuc2Zvcm1hdGlvbnMgdG8gYmUgYXBwbGllZC4KKyAgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFkZERvY3VtZW50KFN0cmluZyByZWZlcmVuY2VVUkksIFRyYW5zZm9ybXMgdHJhbnMpCisgICAgICAgIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworICAgICAgICB0aGlzLl9zaWduZWRJbmZvLmFkZERvY3VtZW50KHRoaXMuX2Jhc2VVUkksIHJlZmVyZW5jZVVSSSwgdHJhbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLkFMR09fSURfRElHRVNUX1NIQTEsIG51bGwsIG51bGwpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFkZCBhIFJlZmVyZW5jZSB3aXRoIGp1c3QgdGhpcyBVUkkuIEl0IHVzZXMgU0hBMSBieSBkZWZhdWx0IGFzIHRoZSBkaWdlc3QKKyAgICAgKiBhbGdvcml0aG0KKyAgICAgKgorICAgICAqIEBwYXJhbSByZWZlcmVuY2VVUkkgVVJJIGFjY29yZGluZyB0byB0aGUgWE1MIFNpZ25hdHVyZSBzcGVjaWZpY2F0aW9uLgorICAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIHZvaWQgYWRkRG9jdW1lbnQoU3RyaW5nIHJlZmVyZW5jZVVSSSkgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisgICAgICAgIHRoaXMuX3NpZ25lZEluZm8uYWRkRG9jdW1lbnQodGhpcy5fYmFzZVVSSSwgcmVmZXJlbmNlVVJJLCBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5BTEdPX0lEX0RJR0VTVF9TSEExLCBudWxsLCBudWxsKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBZGQgYW4gWDUwOSBDZXJ0aWZpY2F0ZSB0byB0aGUgS2V5SW5mby4gVGhpcyB3aWxsIGluY2x1ZGUgdGhlIHdob2xlIGNlcnQKKyAgICAgKiBpbnNpZGUgWDUwOURhdGEvWDUwOUNlcnRpZmljYXRlIHRhZ3MuCisgICAgICoKKyAgICAgKiBAcGFyYW0gY2VydCBDZXJ0aWZpY2F0ZSB0byBiZSBpbmNsdWRlZC4gVGhpcyBzaG91bGQgYmUgdGhlIGNlcnRpZmljYXRlIG9mCisgICAgICogdGhlIGtleSB0aGF0IHdhcyB1c2VkIHRvIHNpZ24uCisgICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFkZEtleUluZm8oWDUwOUNlcnRpZmljYXRlIGNlcnQpIHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisKKyAgICAgICAgWDUwOURhdGEgeDUwOWRhdGEgPSBuZXcgWDUwOURhdGEodGhpcy5fZG9jKTsKKworICAgICAgICB4NTA5ZGF0YS5hZGRDZXJ0aWZpY2F0ZShjZXJ0KTsKKyAgICAgICAgdGhpcy5nZXRLZXlJbmZvKCkuYWRkKHg1MDlkYXRhKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBZGQgdGhpcyBwdWJsaWMga2V5IHRvIHRoZSBLZXlJbmZvLiBUaGlzIHdpbGwgaW5jbHVkZSB0aGUgY29tcGxldGUga2V5IGluCisgICAgICogdGhlIEtleUluZm8gc3RydWN0dXJlLgorICAgICAqCisgICAgICogQHBhcmFtIHBrCisgICAgICovCisgICAgcHVibGljIHZvaWQgYWRkS2V5SW5mbyhQdWJsaWNLZXkgcGspIHsKKyAgICAgICAgdGhpcy5nZXRLZXlJbmZvKCkuYWRkKHBrKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQcm94eSBtZXRob2QgZm9yIHtAbGluayBTaWduZWRJbmZvI2NyZWF0ZVNlY3JldEtleShieXRlW10pfS4gSWYgeW91IHdhbnQgCisgICAgICogdG8gY3JlYXRlIGEgTUFDLCB0aGlzIG1ldGhvZCBoZWxwcyB5b3UgdG8gb2J0YWluIHRoZSAKKyAgICAgKiB7QGxpbmsgamF2YXguY3J5cHRvLlNlY3JldEtleX0gZnJvbSBvY3RldHMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc2VjcmV0S2V5Qnl0ZXMKKyAgICAgKiBAcmV0dXJuIHRoZSBzZWNyZXQga2V5IGNyZWF0ZWQuCisgICAgICogQHNlZSBTaWduZWRJbmZvI2NyZWF0ZVNlY3JldEtleShieXRlW10pCisgICAgICovCisgICAgcHVibGljIFNlY3JldEtleSBjcmVhdGVTZWNyZXRLZXkoYnl0ZVtdIHNlY3JldEtleUJ5dGVzKSB7CisgICAgICAgIHJldHVybiB0aGlzLmdldFNpZ25lZEluZm8oKS5jcmVhdGVTZWNyZXRLZXkoc2VjcmV0S2V5Qnl0ZXMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNpZ25hbCB3ZXRoZXIgTWFuaWZlc3Qgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgdmFsaWRhdGVkLgorICAgICAqIENoZWNraW5nIHRoZSBkaWdlc3RzIGluIFJlZmVyZW5jZXMgaW4gYSBTaWduYXR1cmUgYXJlIG1hbmRhdG9yeSwgYnV0IGZvcgorICAgICAqIFJlZmVyZW5jZXMgaW5zaWRlIGEgTWFuaWZlc3QgaXQgaXMgYXBwbGljYXRpb24gc3BlY2lmaWMuIFRoaXMgYm9vbGVhbiBpcworICAgICAqIHRvIGluZGljYXRlIHRoYXQgdGhlIFJlZmVyZW5jZXMgaW5zaWRlIE1hbmlmZXN0cyBzaG91bGQgYmUgdmFsaWRhdGVkLgorICAgICAqCisgICAgICogQHBhcmFtIGZvbGxvd01hbmlmZXN0cworICAgICAqIEBzZWUgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sZHNpZy1jb3JlLyNzZWMtQ29yZVZhbGlkYXRpb24iPkNvcmUgdmFsaWRhdGlvbiBzZWN0aW9uIGluIHRoZSBYTUwgU2lnbmF0dXJlIFJlYy48L2E+CisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0Rm9sbG93TmVzdGVkTWFuaWZlc3RzKGJvb2xlYW4gZm9sbG93TWFuaWZlc3RzKSB7CisgICAgICAgIHRoaXMuX2ZvbGxvd01hbmlmZXN0c0R1cmluZ1ZhbGlkYXRpb24gPSBmb2xsb3dNYW5pZmVzdHM7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0IHRoZSBsb2NhbCBuYW1lIG9mIHRoaXMgZWxlbWVudAorICAgICAqCisgICAgICogQHJldHVybiBDb25zdGFudHMuX1RBR19TSUdOQVRVUkUKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldEJhc2VMb2NhbE5hbWUoKSB7CisgICAgICAgIHJldHVybiBDb25zdGFudHMuX1RBR19TSUdOQVRVUkU7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NpZ25hdHVyZS9YTUxTaWduYXR1cmVFeGNlcHRpb24uamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zaWduYXR1cmUvWE1MU2lnbmF0dXJlRXhjZXB0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZiNGEzZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zaWduYXR1cmUvWE1MU2lnbmF0dXJlRXhjZXB0aW9uLmphdmEKQEAgLTAsMCArMSw4NiBAQAorCisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmU7CisKKworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eUV4Y2VwdGlvbjsKKworCisvKioKKyAqIEFsbCBYTUwgU2lnbmF0dXJlIHJlbGF0ZWQgZXhjZXB0aW9ucyBpbmhlcml0IGhlcmVmcm9tLgorICoKKyAqIEBzZWUgTWlzc2luZ1Jlc291cmNlRmFpbHVyZUV4Y2VwdGlvbiBJbnZhbGlkRGlnZXN0VmFsdWVFeGNlcHRpb24gSW52YWxpZFNpZ25hdHVyZVZhbHVlRXhjZXB0aW9uCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubgorICovCitwdWJsaWMgY2xhc3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIGV4dGVuZHMgWE1MU2VjdXJpdHlFeGNlcHRpb24geworCisgICAvKioKKwkgKiAKKwkgKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsKKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAqCisgICAgKi8KKyAgIHB1YmxpYyBYTUxTaWduYXR1cmVFeGNlcHRpb24oKSB7CisgICAgICBzdXBlcigpOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICoKKyAgICAqIEBwYXJhbSBfbXNnSUQKKyAgICAqLworICAgcHVibGljIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbihTdHJpbmcgX21zZ0lEKSB7CisgICAgICBzdXBlcihfbXNnSUQpOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICoKKyAgICAqIEBwYXJhbSBfbXNnSUQKKyAgICAqIEBwYXJhbSBleEFyZ3MKKyAgICAqLworICAgcHVibGljIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbihTdHJpbmcgX21zZ0lELCBPYmplY3QgZXhBcmdzW10pIHsKKyAgICAgIHN1cGVyKF9tc2dJRCwgZXhBcmdzKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKiBAcGFyYW0gX29yaWdpbmFsRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBYTUxTaWduYXR1cmVFeGNlcHRpb24oU3RyaW5nIF9tc2dJRCwgRXhjZXB0aW9uIF9vcmlnaW5hbEV4Y2VwdGlvbikgeworICAgICAgc3VwZXIoX21zZ0lELCBfb3JpZ2luYWxFeGNlcHRpb24pOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICoKKyAgICAqIEBwYXJhbSBfbXNnSUQKKyAgICAqIEBwYXJhbSBleEFyZ3MKKyAgICAqIEBwYXJhbSBfb3JpZ2luYWxFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbihTdHJpbmcgX21zZ0lELCBPYmplY3QgZXhBcmdzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbiBfb3JpZ2luYWxFeGNlcHRpb24pIHsKKyAgICAgIHN1cGVyKF9tc2dJRCwgZXhBcmdzLCBfb3JpZ2luYWxFeGNlcHRpb24pOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NpZ25hdHVyZS9YTUxTaWduYXR1cmVJbnB1dC5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NpZ25hdHVyZS9YTUxTaWduYXR1cmVJbnB1dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViN2RhYjIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2lnbmF0dXJlL1hNTFNpZ25hdHVyZUlucHV0LmphdmEKQEAgLTAsMCArMSw2MjggQEAKKy8qCisgKiBDb3B5cmlnaHQgMTk5OS0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlOworCitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLlNldDsKKworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb247CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkNhbm9uaWNhbGl6YXRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5pbXBsZW1lbnRhdGlvbnMuQ2Fub25pY2FsaXplckJhc2U7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5pbXBsZW1lbnRhdGlvbnMuQ2Fub25pY2FsaXplcjIwMDEwMzE1T21pdENvbW1lbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uaW1wbGVtZW50YXRpb25zLkNhbm9uaWNhbGl6ZXIxMV9PbWl0Q29tbWVudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eVJ1bnRpbWVFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuSmF2YVV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CitpbXBvcnQgb3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uOworCisvKioKKyAqIENsYXNzIFhNTFNpZ25hdHVyZUlucHV0CisgKgorICogQGF1dGhvciBDaHJpc3RpYW4gR2V1ZXItUG9sbG1hbm4KKyAqICR0b2RvJCBjaGVjayB3aGV0aGVyIGFuIFhNTFNpZ25hdHVyZUlucHV0IGNhbiBiZSBfYm90aF8sIG9jdGV0IHN0cmVhbSBfYW5kXyBub2RlIHNldD8KKyAqLworcHVibGljIGNsYXNzIFhNTFNpZ25hdHVyZUlucHV0IGltcGxlbWVudHMgQ2xvbmVhYmxlIHsKKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZworCSAgICAoWE1MU2lnbmF0dXJlSW5wdXQuY2xhc3MuZ2V0TmFtZSgpKTsKKworICAgIC8qCisgICAgICogVGhlIFhNTFNpZ25hdHVyZSBJbnB1dCBjYW4gYmUgZWl0aGVyOgorICAgICAqICAgQSBieXRlQXJyYXkgbGlrZSB3aXRoL29yIHdpdGhvdXQgSW5wdXRTdHJlYW0uCisgICAgICogICBPciBhIG5vZGVTZXQgbGlrZSBkZWZpbmVkIGVpdGhlcjoKKyAgICAgKiAgICAgICAqIGFzIGEgY29sbGVjdGlvbiBvZiBub2RlcworICAgICAqICAgICAgICogb3IgYXMgc3Vibm9kZSBleGNsdWRpbmcgb3Igbm90IGNvbW1ldHMgYW5kIGV4Y2x1ZGluZyBvciAKKyAgICAgKiAgICAgICAgIG5vdCBvdGhlciBub2Rlcy4KKyAgICAgKi8KKworICAgIC8qKgorICAgICAqIFNvbWUgSW5wdXRTdHJlYW1zIGRvIG5vdCBzdXBwb3J0IHRoZSB7QGxpbmsgamF2YS5pby5JbnB1dFN0cmVhbSNyZXNldH0KKyAgICAgKiBtZXRob2QsIHNvIHdlIHJlYWQgaXQgaW4gY29tcGxldGVseSBhbmQgd29yayBvbiBvdXIgUHJveHkuCisgICAgICovCisgICAgSW5wdXRTdHJlYW0gX2lucHV0T2N0ZXRTdHJlYW1Qcm94eSA9IG51bGw7CisgICAgLyoqCisgICAgICogVGhlIG9yaWdpbmFsIE5vZGVTZXQgZm9yIHRoaXMgWE1MU2lnbmF0dXJlSW5wdXQKKyAgICAgKi8KKyAgICBTZXQgX2lucHV0Tm9kZVNldCA9IG51bGw7CisgICAgLyoqCisgICAgICogVGhlIG9yaWdpbmFsIEVsZW1lbnQKKyAgICAgKi8KKyAgICBOb2RlIF9zdWJOb2RlID0gbnVsbDsKKyAgICAvKioKKyAgICAgKiBFeGNsdWRlIE5vZGUgKmZvciBlbnZlbG9wZWQgdHJhbnNmb3JtYXRpb25zKgorICAgICAqLworICAgIE5vZGUgZXhjbHVkZU5vZGUgPSBudWxsOworICAgIC8qKgorICAgICAqIAorICAgICAqLworICAgIGJvb2xlYW4gZXhjbHVkZUNvbW1lbnRzID0gZmFsc2U7CisgICAKKyAgICBib29sZWFuIGlzTm9kZVNldCA9IGZhbHNlOworICAgIC8qKgorICAgICAqIEEgY2FjaGVkIGJ5dGVzCisgICAgICovCisgICAgYnl0ZVtdIGJ5dGVzID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIFNvbWUgVHJhbnNmb3JtcyBtYXkgcmVxdWlyZSBleHBsaWNpdCBNSU1FIHR5cGUsIGNoYXJzZXQgKElBTkEgcmVnaXN0ZXJlZAorICAgICAqICJjaGFyYWN0ZXIgc2V0IiksIG9yIG90aGVyIHN1Y2ggaW5mb3JtYXRpb24gY29uY2VybmluZyB0aGUgZGF0YSB0aGV5IGFyZQorICAgICAqIHJlY2VpdmluZyBmcm9tIGFuIGVhcmxpZXIgVHJhbnNmb3JtIG9yIHRoZSBzb3VyY2UgZGF0YSwgYWx0aG91Z2ggbm8gCisgICAgICogVHJhbnNmb3JtIGFsZ29yaXRobSBzcGVjaWZpZWQgaW4gdGhpcyBkb2N1bWVudCBuZWVkcyBzdWNoIGV4cGxpY2l0IAorICAgICAqIGluZm9ybWF0aW9uLiBTdWNoIGRhdGEgY2hhcmFjdGVyaXN0aWNzIGFyZSBwcm92aWRlZCBhcyBwYXJhbWV0ZXJzIHRvIHRoZSAKKyAgICAgKiBUcmFuc2Zvcm0gYWxnb3JpdGhtIGFuZCBzaG91bGQgYmUgZGVzY3JpYmVkIGluIHRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgCisgICAgICogYWxnb3JpdGhtLgorICAgICAqLyAgIAorICAgIHByaXZhdGUgU3RyaW5nIF9NSU1FVHlwZSA9IG51bGw7CisKKyAgICAvKioKKyAgICAgKiBGaWVsZCBfU291cmNlVVJJIAorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nIF9Tb3VyY2VVUkkgPSBudWxsOworCisgICAgLyoqCisgICAgICogTm9kZSBGaWx0ZXIgbGlzdC4KKyAgICAgKi8KKyAgICBMaXN0IG5vZGVGaWx0ZXJzID0gbmV3IEFycmF5TGlzdCgpOworICAgCisgICAgYm9vbGVhbiBuZWVkc1RvQmVFeHBhbmRlZCA9IGZhbHNlOworICAgIE91dHB1dFN0cmVhbSBvdXRwdXRTdHJlYW0gPSBudWxsOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgWE1MU2lnbmF0dXJlSW5wdXQgZnJvbSBhbiBvY3RldCBhcnJheS4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGlzIGlzIGEgY29tZm9ydCBtZXRob2QsIHdoaWNoIGludGVybmFsbHkgY29udmVydHMgdGhlIGJ5dGVbXSBhcnJheSBpbnRvIAorICAgICAqIGFuIElucHV0U3RyZWFtCisgICAgICogPHA+Tk9URTogbm8gZGVmZW5zaXZlIGNvcHk8L3A+CisgICAgICogQHBhcmFtIGlucHV0T2N0ZXRzIGFuIG9jdGV0IGFycmF5IHdoaWNoIGluY2x1ZGluZyBYTUwgZG9jdW1lbnQgb3Igbm9kZQorICAgICAqLworICAgIHB1YmxpYyBYTUxTaWduYXR1cmVJbnB1dChieXRlW10gaW5wdXRPY3RldHMpIHsKKyAgICAgICAgLy8gTk8gIGRlZmVuc2l2ZSBjb3B5CisgICAgICAgIHRoaXMuYnl0ZXMgPSBpbnB1dE9jdGV0czsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+WE1MU2lnbmF0dXJlSW5wdXQ8L2NvZGU+IGZyb20gYW4gb2N0ZXQgc3RyZWFtLiBUaGUKKyAgICAgKiBzdHJlYW0gaXMgZGlyZWN0bHkgcmVhZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBpbnB1dE9jdGV0U3RyZWFtCisgICAgICovCisgICAgcHVibGljIFhNTFNpZ25hdHVyZUlucHV0KElucHV0U3RyZWFtIGlucHV0T2N0ZXRTdHJlYW0pICB7CisJdGhpcy5faW5wdXRPY3RldFN0cmVhbVByb3h5PWlucHV0T2N0ZXRTdHJlYW07CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgWE1MU2lnbmF0dXJlSW5wdXQgZnJvbSBhIFN0cmluZy4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGlzIGlzIGEgY29tZm9ydCBtZXRob2QsIHdoaWNoIGludGVybmFsbHkgY29udmVydHMgdGhlIFN0cmluZyBpbnRvIGEgYnl0ZQorICAgICAqIFtdIGFycmF5IHVzaW5nIHRoZSB7QGxpbmsgamF2YS5sYW5nLlN0cmluZyNnZXRCeXRlcygpfSBtZXRob2QuCisgICAgICogQGRlcHJlY2F0ZWQKKyAgICAgKiBAcGFyYW0gaW5wdXRTdHIgdGhlIGlucHV0IFN0cmluZyB3aGljaCBpbmNsdWRpbmcgWE1MIGRvY3VtZW50IG9yIG5vZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgWE1MU2lnbmF0dXJlSW5wdXQoU3RyaW5nIGlucHV0U3RyKSB7CisgICAgICAgIHRoaXMoaW5wdXRTdHIuZ2V0Qnl0ZXMoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgWE1MU2lnbmF0dXJlSW5wdXQgZnJvbSBhIFN0cmluZyB3aXRoIGEgZ2l2ZW4gZW5jb2RpbmcuCisgICAgICogPHA+CisgICAgICogVGhpcyBpcyBhIGNvbWZvcnQgbWV0aG9kLCB3aGljaCBpbnRlcm5hbGx5IGNvbnZlcnRzIHRoZSBTdHJpbmcgaW50byBhIGJ5dGUKKyAgICAgKiBbXSBhcnJheSB1c2luZyB0aGUge0BsaW5rIGphdmEubGFuZy5TdHJpbmcjZ2V0Qnl0ZXMoKX0gbWV0aG9kLgorICAgICAqCisgICAgICogQGRlcHJlY2F0ZWQKKyAgICAgKiBAcGFyYW0gaW5wdXRTdHIgdGhlIGlucHV0IFN0cmluZyB3aXRoIGVuY29kaW5nIDxjb2RlPmVuY29kaW5nPC9jb2RlPgorICAgICAqIEBwYXJhbSBlbmNvZGluZyB0aGUgZW5jb2Rpbmcgb2YgPGNvZGU+aW5wdXRTdHI8L2NvZGU+CisgICAgICogQHRocm93cyBVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIFhNTFNpZ25hdHVyZUlucHV0KFN0cmluZyBpbnB1dFN0ciwgU3RyaW5nIGVuY29kaW5nKQorICAgICAgICAgICB0aHJvd3MgVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiB7CisgICAgICAgIHRoaXMoaW5wdXRTdHIuZ2V0Qnl0ZXMoZW5jb2RpbmcpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBYTUxTaWduYXR1cmVJbnB1dCBmcm9tIGEgc3VidHJlZSByb290ZWQgYnkgcm9vdE5vZGUuIFRoaXMKKyAgICAgKiBtZXRob2QgaW5jbHVkZWQgdGhlIG5vZGUgYW5kIDxJPmFsbDwvST4gaGlzIGRlc2NlbmRhbnRzIGluIHRoZSBvdXRwdXQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcm9vdE5vZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgWE1MU2lnbmF0dXJlSW5wdXQoTm9kZSByb290Tm9kZSkgeworICAgICAgICB0aGlzLl9zdWJOb2RlID0gcm9vdE5vZGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IgWE1MU2lnbmF0dXJlSW5wdXQKKyAgICAgKgorICAgICAqIEBwYXJhbSBpbnB1dE5vZGVTZXQKKyAgICAgKiBAcGFyYW0gdXNlZFhQYXRoQVBJCisgICAgICovCisgICAgcHVibGljIFhNTFNpZ25hdHVyZUlucHV0KFNldCBpbnB1dE5vZGVTZXQpIHsKKyAgICAgICAgdGhpcy5faW5wdXROb2RlU2V0ID0gaW5wdXROb2RlU2V0OworICAgIH0KKworICAgIC8qKgorICAgICAqIENoZWNrIGlmIHRoZSBzdHJ1Y3R1cmUgbmVlZHMgdG8gYmUgZXhwYW5kZWQuCisgICAgICogQHJldHVybiB0cnVlIGlmIHNvLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzTmVlZHNUb0JlRXhwYW5kZWQoKSB7CisJcmV0dXJuIG5lZWRzVG9CZUV4cGFuZGVkOworICAgIH0KKyAgIAorICAgIC8qKgorICAgICAqIFNldCBpZiB0aGUgc3RydWN0dXJlIG5lZWRzIHRvIGJlIGV4cGFuZGVkLgorICAgICAqIEBwYXJhbSBuZWVkc1RvQmVFeHBhbmRlZCB0cnVlIGlmIHNvLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldE5lZWRzVG9CZUV4cGFuZGVkKGJvb2xlYW4gbmVlZHNUb0JlRXhwYW5kZWQpIHsKKwl0aGlzLm5lZWRzVG9CZUV4cGFuZGVkID0gbmVlZHNUb0JlRXhwYW5kZWQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbm9kZSBzZXQgZnJvbSBpbnB1dCB3aGljaCB3YXMgc3BlY2lmaWVkIGFzIHRoZSBwYXJhbWV0ZXIgb2YgCisgICAgICoge0BsaW5rIFhNTFNpZ25hdHVyZUlucHV0fSBjb25zdHJ1Y3RvcgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgbm9kZSBzZXQKKyAgICAgKiBAdGhyb3dzIFNBWEV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgU2V0IGdldE5vZGVTZXQoKSB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiwgCisJUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiwgSU9FeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiB7CisJcmV0dXJuIGdldE5vZGVTZXQoZmFsc2UpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG5vZGUgc2V0IGZyb20gaW5wdXQgd2hpY2ggd2FzIHNwZWNpZmllZCBhcyB0aGUgcGFyYW1ldGVyIG9mIAorICAgICAqIHtAbGluayBYTUxTaWduYXR1cmVJbnB1dH0gY29uc3RydWN0b3IKKyAgICAgKiBAcGFyYW0gY2lyY3VtdmVudAorICAgICAqCisgICAgICogQHJldHVybiB0aGUgbm9kZSBzZXQKKyAgICAgKiBAdGhyb3dzIFNBWEV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgU2V0IGdldE5vZGVTZXQoYm9vbGVhbiBjaXJjdW12ZW50KQorICAgICAgICAgICB0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiwgSU9FeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24geworICAgICAgICBpZiAoX2lucHV0Tm9kZVNldCAhPSBudWxsKSB7CisgICAgICAJICAgIHJldHVybiBfaW5wdXROb2RlU2V0OworICAgICAgICB9CisJaWYgKF9pbnB1dE9jdGV0U3RyZWFtUHJveHkgPT0gbnVsbCAmJiBfc3ViTm9kZSAhPSBudWxsKSB7CisgICAgIAkgICAgaWYgKGNpcmN1bXZlbnQpIHsKKyAgICAgCSAgICAJWE1MVXRpbHMuY2lyY3VtdmVudEJ1ZzI2NTAoWE1MVXRpbHMuZ2V0T3duZXJEb2N1bWVudChfc3ViTm9kZSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgX2lucHV0Tm9kZVNldCA9IG5ldyBIYXNoU2V0KCk7CisgICAgICAgICAgICBYTUxVdGlscy5nZXRTZXQKKyAgICAgICAgICAgICAgICAoX3N1Yk5vZGUsIF9pbnB1dE5vZGVTZXQsIGV4Y2x1ZGVOb2RlLCBleGNsdWRlQ29tbWVudHMpOworICAgCSAgICByZXR1cm4gX2lucHV0Tm9kZVNldDsKKwl9IGVsc2UgaWYgKHRoaXMuaXNPY3RldFN0cmVhbSgpKSB7CisgICAgICAgICAgICBjb252ZXJ0VG9Ob2RlcygpOworICAgICAgICAgICAgSGFzaFNldCByZXN1bHQgPSBuZXcgSGFzaFNldCgpOworICAgICAgICAgICAgWE1MVXRpbHMuZ2V0U2V0KF9zdWJOb2RlLCByZXN1bHQsIG51bGwsIGZhbHNlKTsgCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oCisgICAgICAgICAgICAiZ2V0Tm9kZVNldCgpIGNhbGxlZCBidXQgbm8gaW5wdXQgZGF0YSBwcmVzZW50Iik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgT2N0ZWN0IHN0cmVhbShieXRlIFN0cmVhbSkgZnJvbSBpbnB1dCB3aGljaCB3YXMgc3BlY2lmaWVkIGFzIAorICAgICAqIHRoZSBwYXJhbWV0ZXIgb2Yge0BsaW5rIFhNTFNpZ25hdHVyZUlucHV0fSBjb25zdHJ1Y3RvcgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgT2N0ZWN0IHN0cmVhbShieXRlIFN0cmVhbSkgZnJvbSBpbnB1dCB3aGljaCB3YXMgc3BlY2lmaWVkIGFzIAorICAgICAqIHRoZSBwYXJhbWV0ZXIgb2Yge0BsaW5rIFhNTFNpZ25hdHVyZUlucHV0fSBjb25zdHJ1Y3RvcgorICAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgSW5wdXRTdHJlYW0gZ2V0T2N0ZXRTdHJlYW0oKSB0aHJvd3MgSU9FeGNlcHRpb24gIHsKKyAgICAgICAgaWYgKF9pbnB1dE9jdGV0U3RyZWFtUHJveHkgaW5zdGFuY2VvZiBGaWxlSW5wdXRTdHJlYW0pIHsKKyAgICAgICAgICAgIHJldHVybiBfaW5wdXRPY3RldFN0cmVhbVByb3h5OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGdldFJlc2V0YWJsZUlucHV0U3RyZWFtKCk7ICAgICAgICAgICAgICAgICAKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEByZXR1cm4gcmVhbCBvY3RlY3Qgc3RyZWFtCisgICAgICovCisgICAgcHVibGljIElucHV0U3RyZWFtIGdldE9jdGV0U3RyZWFtUmVhbCAoKSB7CisgICAgICAgIHJldHVybiB0aGlzLl9pbnB1dE9jdGV0U3RyZWFtUHJveHk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgYnl0ZSBhcnJheSBmcm9tIGlucHV0IHdoaWNoIHdhcyBzcGVjaWZpZWQgYXMgdGhlIHBhcmFtZXRlciBvZiAKKyAgICAgKiB7QGxpbmsgWE1MU2lnbmF0dXJlSW5wdXR9IGNvbnN0cnVjdG9yCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBieXRlW10gZnJvbSBpbnB1dCB3aGljaCB3YXMgc3BlY2lmaWVkIGFzIHRoZSBwYXJhbWV0ZXIgb2YgCisgICAgICoge0BsaW5rIFhNTFNpZ25hdHVyZUlucHV0fSBjb25zdHJ1Y3RvcgorICAgICAqCisgICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBieXRlW10gZ2V0Qnl0ZXMoKSB0aHJvd3MgSU9FeGNlcHRpb24sIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24geworICAgICAgICBpZiAoYnl0ZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGJ5dGVzOyAgICAgIAorICAgICAgICB9CisgICAgICAgIElucHV0U3RyZWFtIGlzID0gZ2V0UmVzZXRhYmxlSW5wdXRTdHJlYW0oKTsKKyAgICAgICAgaWYgKGlzICE9IG51bGwpIHsKKyAgICAgICAgICAgIC8vIHJlc2V0YWJsZSBjYW4gcmVhZCBhZ2FpbiBieXRlcy4gCisJICAgIGlmIChieXRlcyA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgaXMucmVzZXQoKTsgICAgICAgCisgICAgICAgICAgICAgICAgYnl0ZXM9SmF2YVV0aWxzLmdldEJ5dGVzRnJvbVN0cmVhbShpcyk7CisgICAgIAkgICAgfSAJICAJCisgICAgIAkgICAgcmV0dXJuIGJ5dGVzOyAgIAkgIAkgICAgICAKKyAgICAgICAgfQorICAgICAgICBDYW5vbmljYWxpemVyMjAwMTAzMTVPbWl0Q29tbWVudHMgYzE0bml6ZXIgPQorICAgCQluZXcgQ2Fub25pY2FsaXplcjIwMDEwMzE1T21pdENvbW1lbnRzKCk7ICAgICAgICAgICAgICAgICAgCisgICAgICAgIGJ5dGVzID0gYzE0bml6ZXIuZW5naW5lQ2Fub25pY2FsaXplKHRoaXMpOyAgICAgICAgIAorICAgICAgICByZXR1cm4gYnl0ZXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lcyBpZiB0aGUgb2JqZWN0IGhhcyBiZWVuIHNldCB1cCB3aXRoIGEgTm9kZSBzZXQKKyAgICAgKgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGhhcyBiZWVuIHNldCB1cCB3aXRoIGEgTm9kZSBzZXQKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc05vZGVTZXQoKSB7CisgICAgICAgIHJldHVybiAoKHRoaXMuX2lucHV0T2N0ZXRTdHJlYW1Qcm94eSA9PSBudWxsCisgICAgICAgICAgICAgICAgJiYgdGhpcy5faW5wdXROb2RlU2V0ICE9IG51bGwpIHx8IGlzTm9kZVNldCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lcyBpZiB0aGUgb2JqZWN0IGhhcyBiZWVuIHNldCB1cCB3aXRoIGFuIEVsZW1lbnQKKyAgICAgKgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGhhcyBiZWVuIHNldCB1cCB3aXRoIGEgTm9kZSBzZXQKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0VsZW1lbnQoKSB7CisJcmV0dXJuICh0aGlzLl9pbnB1dE9jdGV0U3RyZWFtUHJveHkgPT0gbnVsbCAmJiB0aGlzLl9zdWJOb2RlICE9IG51bGwKKyAgIAkJJiYgdGhpcy5faW5wdXROb2RlU2V0ID09IG51bGwgJiYgIWlzTm9kZVNldCk7CisgICAgfQorICAgCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lcyBpZiB0aGUgb2JqZWN0IGhhcyBiZWVuIHNldCB1cCB3aXRoIGFuIG9jdGV0IHN0cmVhbQorICAgICAqCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaGFzIGJlZW4gc2V0IHVwIHdpdGggYW4gb2N0ZXQgc3RyZWFtCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNPY3RldFN0cmVhbSgpIHsKKyAgICAgICAgcmV0dXJuICgodGhpcy5faW5wdXRPY3RldFN0cmVhbVByb3h5ICE9IG51bGwgfHwgYnl0ZXMgIT0gbnVsbCkKKyAgICAgICAgICAgICAgJiYgKHRoaXMuX2lucHV0Tm9kZVNldCA9PSBudWxsICYmIF9zdWJOb2RlID09IG51bGwpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmVzIGlmIHtAbGluayAjc2V0T3V0cHV0U3RyZWFtfSBoYXMgYmVlbiBjYWxsZWQgd2l0aCBhIAorICAgICAqIG5vbi1udWxsIE91dHB1dFN0cmVhbS4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB7QGxpbmsgI3NldE91dHB1dFN0cmVhbX0gaGFzIGJlZW4gY2FsbGVkIHdpdGggYSAKKyAgICAgKiBub24tbnVsbCBPdXRwdXRTdHJlYW0KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc091dHB1dFN0cmVhbVNldCgpIHsKKwlyZXR1cm4gb3V0cHV0U3RyZWFtICE9IG51bGw7CisgICAgfQorICAgCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lcyBpZiB0aGUgb2JqZWN0IGhhcyBiZWVuIHNldCB1cCB3aXRoIGEgQnl0ZUFycmF5CisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRydWUgaXMgdGhlIG9iamVjdCBoYXMgYmVlbiBzZXQgdXAgd2l0aCBhbiBvY3RldCBzdHJlYW0KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0J5dGVBcnJheSgpIHsKKyAgICAgICAgcmV0dXJuIChieXRlcyAhPSBudWxsCisgICAgICAgICAgICAgICAgJiYgKHRoaXMuX2lucHV0Tm9kZVNldCA9PSBudWxsICYmIF9zdWJOb2RlID09IG51bGwpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJcyB0aGUgb2JqZWN0IGNvcnJlY3RseSBzZXQgdXA/CisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBoYXMgYmVlbiBzZXQgdXAgY29ycmVjdGx5CisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNJbml0aWFsaXplZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaXNPY3RldFN0cmVhbSgpIHx8IHRoaXMuaXNOb2RlU2V0KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBNSU1FVHlwZQorICAgICAqCisgICAgICogQHJldHVybiBNSU1FVHlwZQorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0TUlNRVR5cGUoKSB7CisgICAgICAgIHJldHVybiB0aGlzLl9NSU1FVHlwZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIE1JTUVUeXBlCisgICAgICoKKyAgICAgKiBAcGFyYW0gTUlNRVR5cGUKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRNSU1FVHlwZShTdHJpbmcgTUlNRVR5cGUpIHsKKyAgICAgICAgdGhpcy5fTUlNRVR5cGUgPSBNSU1FVHlwZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gU291cmNlVVJJCisgICAgICoKKyAgICAgKiBAcmV0dXJuIFNvdXJjZVVSSQorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0U291cmNlVVJJKCkgeworICAgICAgICByZXR1cm4gdGhpcy5fU291cmNlVVJJOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgU291cmNlVVJJCisgICAgICoKKyAgICAgKiBAcGFyYW0gU291cmNlVVJJCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0U291cmNlVVJJKFN0cmluZyBTb3VyY2VVUkkpIHsKKyAgICAgICAgdGhpcy5fU291cmNlVVJJID0gU291cmNlVVJJOworICAgIH0KKyAgIAorICAgIC8qKgorICAgICAqIE1ldGhvZCB0b1N0cmluZworICAgICAqIEBpbmhlcml0RG9jCisgICAgICovCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgaWYgKHRoaXMuaXNOb2RlU2V0KCkpIHsKKyAgICAgICAgICAgIHJldHVybiAiWE1MU2lnbmF0dXJlSW5wdXQvTm9kZVNldC8iICsgdGhpcy5faW5wdXROb2RlU2V0LnNpemUoKQorICAgICAgICAgICAgICAgICAgICsgIiBub2Rlcy8iICsgdGhpcy5nZXRTb3VyY2VVUkkoKTsgICAgICAgICAKKyAgICAgICAgfSAKKyAgICAgICAgaWYgKHRoaXMuaXNFbGVtZW50KCkpIHsKKyAgICAgICAgICAgIHJldHVybiAiWE1MU2lnbmF0dXJlSW5wdXQvRWxlbWVudC8iICsgdGhpcy5fc3ViTm9kZQorICAgICAgICAgICAgICAgICsgIiBleGNsdWRlICIrIHRoaXMuZXhjbHVkZU5vZGUgKyAiIGNvbW1lbnRzOiIgKyAKKyAgICAgICAgICAgICAgICB0aGlzLmV4Y2x1ZGVDb21tZW50cyArIi8iICsgdGhpcy5nZXRTb3VyY2VVUkkoKTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuICJYTUxTaWduYXR1cmVJbnB1dC9PY3RldFN0cmVhbS8iICsgdGhpcy5nZXRCeXRlcygpLmxlbmd0aAorICAgICAgICAgICAgICAgICAgICsgIiBvY3RldHMvIiArIHRoaXMuZ2V0U291cmNlVVJJKCk7CisgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGlleCkgeworICAgICAgICAgICAgcmV0dXJuICJYTUxTaWduYXR1cmVJbnB1dC9PY3RldFN0cmVhbS8vIiArIHRoaXMuZ2V0U291cmNlVVJJKCk7CisgICAgICAgIH0gY2F0Y2ggKENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24gY2V4KSB7CisgICAgICAgICAgICByZXR1cm4gIlhNTFNpZ25hdHVyZUlucHV0L09jdGV0U3RyZWFtLy8iICsgdGhpcy5nZXRTb3VyY2VVUkkoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIE1ldGhvZCBnZXRIVE1MUmVwcmVzZW50YXRpb24KKyAgICAgKgorICAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgICogQHJldHVybiBUaGUgSFRNTCByZXByZXNlbnRhdGlvbiBmb3IgdGhpcyBYTUxTaWduYXR1cmUKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldEhUTUxSZXByZXNlbnRhdGlvbigpIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworICAgICAgICBYTUxTaWduYXR1cmVJbnB1dERlYnVnZ2VyIGRiID0gbmV3IFhNTFNpZ25hdHVyZUlucHV0RGVidWdnZXIodGhpcyk7CisgICAgICAgIHJldHVybiBkYi5nZXRIVE1MUmVwcmVzZW50YXRpb24oKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNZXRob2QgZ2V0SFRNTFJlcHJlc2VudGF0aW9uCisgICAgICoKKyAgICAgKiBAcGFyYW0gaW5jbHVzaXZlTmFtZXNwYWNlcworICAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgICogQHJldHVybiBUaGUgSFRNTCByZXByZXNlbnRhdGlvbiBmb3IgdGhpcyBYTUxTaWduYXR1cmUKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldEhUTUxSZXByZXNlbnRhdGlvbihTZXQgaW5jbHVzaXZlTmFtZXNwYWNlcykKKyAgICAgICAgICAgdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisKKyAgICAgICAgWE1MU2lnbmF0dXJlSW5wdXREZWJ1Z2dlciBkYiA9IG5ldyBYTUxTaWduYXR1cmVJbnB1dERlYnVnZ2VyKHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlTmFtZXNwYWNlcyk7CisgICAgICAgIHJldHVybiBkYi5nZXRIVE1MUmVwcmVzZW50YXRpb24oKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBleGNsdWRlIG5vZGUgb2YgdGhpcyBYTUxTaWduYXR1cmVJbnB1dAorICAgICAqIEByZXR1cm4gUmV0dXJucyB0aGUgZXhjbHVkZU5vZGUuCisgICAgICovCisgICAgcHVibGljIE5vZGUgZ2V0RXhjbHVkZU5vZGUoKSB7CisJcmV0dXJuIGV4Y2x1ZGVOb2RlOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBleGNsdWRlIG5vZGUgb2YgdGhpcyBYTUxTaWduYXR1cmVJbnB1dAorICAgICAqIEBwYXJhbSBleGNsdWRlTm9kZSBUaGUgZXhjbHVkZU5vZGUgdG8gc2V0LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEV4Y2x1ZGVOb2RlKE5vZGUgZXhjbHVkZU5vZGUpIHsKKwl0aGlzLmV4Y2x1ZGVOb2RlID0gZXhjbHVkZU5vZGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgbm9kZSBvZiB0aGlzIFhNTFNpZ25hdHVyZUlucHV0CisgICAgICogQHJldHVybiBUaGUgZXhjbHVkZU5vZGUgc2V0LgorICAgICAqLworICAgIHB1YmxpYyBOb2RlIGdldFN1Yk5vZGUoKSB7CisJcmV0dXJuIF9zdWJOb2RlOworICAgIH0KKworICAgIC8qKgorICAgICAqIEByZXR1cm4gUmV0dXJucyB0aGUgZXhjbHVkZUNvbW1lbnRzLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzRXhjbHVkZUNvbW1lbnRzKCkgeworCXJldHVybiBleGNsdWRlQ29tbWVudHM7CisgICAgfQorCisgICAgLyoqCisgICAgICogQHBhcmFtIGV4Y2x1ZGVDb21tZW50cyBUaGUgZXhjbHVkZUNvbW1lbnRzIHRvIHNldC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRFeGNsdWRlQ29tbWVudHMoYm9vbGVhbiBleGNsdWRlQ29tbWVudHMpIHsKKwl0aGlzLmV4Y2x1ZGVDb21tZW50cyA9IGV4Y2x1ZGVDb21tZW50czsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gZGlPcworICAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCB1cGRhdGVPdXRwdXRTdHJlYW0oT3V0cHV0U3RyZWFtIGRpT3MpIAorICAgIHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiB7ICAgICAgICAKKwl1cGRhdGVPdXRwdXRTdHJlYW0oZGlPcywgZmFsc2UpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCB1cGRhdGVPdXRwdXRTdHJlYW0oT3V0cHV0U3RyZWFtIGRpT3MsIGJvb2xlYW4gYzE0bjExKSAKKyAgICB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiwgSU9FeGNlcHRpb24geyAgICAgICAgCisJaWYgKGRpT3MgPT0gb3V0cHV0U3RyZWFtKSB7CisgICAgICAgCSAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGJ5dGVzICE9IG51bGwpIHsKKyAgICAgICAgICAgIGRpT3Mud3JpdGUoYnl0ZXMpOworICAgICAgICB9IGVsc2UgaWYgKF9pbnB1dE9jdGV0U3RyZWFtUHJveHkgPT0gbnVsbCkgeyAgICAgICAgICAgICAgICAgICAgCisJICAgIENhbm9uaWNhbGl6ZXJCYXNlIGMxNG5pemVyID0gbnVsbDsKKwkgICAgaWYgKGMxNG4xMSkgeworICAgICAgICAgICAgICAgIGMxNG5pemVyID0gbmV3IENhbm9uaWNhbGl6ZXIxMV9PbWl0Q29tbWVudHMoKTsgICAgICAgCisJICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYzE0bml6ZXIgPSBuZXcgQ2Fub25pY2FsaXplcjIwMDEwMzE1T21pdENvbW1lbnRzKCk7ICAgICAgIAorCSAgICB9CisgICAgICAgICAgICBjMTRuaXplci5zZXRXcml0ZXIoZGlPcyk7CisgICAgICAgICAgICBjMTRuaXplci5lbmdpbmVDYW5vbmljYWxpemUodGhpcyk7IAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKF9pbnB1dE9jdGV0U3RyZWFtUHJveHkgaW5zdGFuY2VvZiBGaWxlSW5wdXRTdHJlYW0pIHsKKyAgICAgICAgICAgICAgICBieXRlW10gYnVmZmVyID0gbmV3IGJ5dGVbNCAqIDEwMjRdOworICAgICAgICAgICAgICAgIGludCBieXRlc3JlYWQgPSAwOworCSAgICAgICAgd2hpbGUgKChieXRlc3JlYWQgPSBfaW5wdXRPY3RldFN0cmVhbVByb3h5LnJlYWQoYnVmZmVyKSkgIT0gLTEgKSB7CisJICAgICAgICAgICAgZGlPcy53cml0ZShidWZmZXIsIDAsIGJ5dGVzcmVhZCk7CisJICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIElucHV0U3RyZWFtIGlzID0gZ2V0UmVzZXRhYmxlSW5wdXRTdHJlYW0oKTsKKyAgICAgICAgICAgICAgICBpZiAoYnl0ZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAvLyBhbHJlYWR5IHJlYWQgd3JpdGUgaXQsIGNhbiBiZSByZWEuCisgICAgICAgICAgICAJICAgIGRpT3Mud3JpdGUoYnl0ZXMsIDAsIGJ5dGVzLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaXMucmVzZXQoKTsgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgYnl0ZVtdIGJ5dGVzVCA9IG5ldyBieXRlWzEwMjRdOworICAgICAgICAgICAgICAgICAgICBpbnQgbnVtID0gMDsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChudW0gPSBpcy5yZWFkKGJ5dGVzVCkpID4gMCkgeworICAgICAgICAgICAgCSAgICAgICAgZGlPcy53cml0ZShieXRlc1QsIDAsIG51bSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gb3MKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRPdXRwdXRTdHJlYW0oT3V0cHV0U3RyZWFtIG9zKSB7CisJb3V0cHV0U3RyZWFtID0gb3M7CisgICAgfQorCisgICAgcHJvdGVjdGVkIElucHV0U3RyZWFtIGdldFJlc2V0YWJsZUlucHV0U3RyZWFtKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsgICAgCQorICAgIAlpZiAoX2lucHV0T2N0ZXRTdHJlYW1Qcm94eSBpbnN0YW5jZW9mIEJ5dGVBcnJheUlucHV0U3RyZWFtKSB7CisgICAgICAgICAgICBpZiAoIV9pbnB1dE9jdGV0U3RyZWFtUHJveHkubWFya1N1cHBvcnRlZCgpKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIkFjY2VwdGVkIGFzIE1hcmthYmxlIGJ1dCBub3QgdHJ1bHkgYmVlbiIrX2lucHV0T2N0ZXRTdHJlYW1Qcm94eSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gX2lucHV0T2N0ZXRTdHJlYW1Qcm94eTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYnl0ZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgX2lucHV0T2N0ZXRTdHJlYW1Qcm94eSA9IG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShieXRlcyk7CisgICAgICAgICAgICByZXR1cm4gX2lucHV0T2N0ZXRTdHJlYW1Qcm94eTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX2lucHV0T2N0ZXRTdHJlYW1Qcm94eSA9PSBudWxsKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIGlmIChfaW5wdXRPY3RldFN0cmVhbVByb3h5Lm1hcmtTdXBwb3J0ZWQoKSkgeworICAgICAgICAgICAgbG9nLmluZm8oIk1hcmsgU3Vwb3J0ZWQgYnV0IG5vdCB1c2VkIGFzIHJlc2V0Iik7CisgICAgICAgIH0KKyAgICAJYnl0ZXMgPSBKYXZhVXRpbHMuZ2V0Qnl0ZXNGcm9tU3RyZWFtKF9pbnB1dE9jdGV0U3RyZWFtUHJveHkpOworICAgIAlfaW5wdXRPY3RldFN0cmVhbVByb3h5LmNsb3NlKCk7CisgICAgCV9pbnB1dE9jdGV0U3RyZWFtUHJveHkgPSBuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oYnl0ZXMpOworICAgICAgICByZXR1cm4gX2lucHV0T2N0ZXRTdHJlYW1Qcm94eTsKKyAgICB9CisgICAgICAgIAorICAgIC8qKgorICAgICAqIEBwYXJhbSBmaWx0ZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhZGROb2RlRmlsdGVyKE5vZGVGaWx0ZXIgZmlsdGVyKSB7CQorCWlmIChpc09jdGV0U3RyZWFtKCkpIHsKKwkgICAgdHJ5IHsKKwkgICAgICAgIGNvbnZlcnRUb05vZGVzKCk7CisJICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJICAgICAgICB0aHJvdyBuZXcgWE1MU2VjdXJpdHlSdW50aW1lRXhjZXB0aW9uKCJzaWduYXR1cmUuWE1MU2lnbmF0dXJlSW5wdXQubm9kZXNldFJlZmVyZW5jZSIsZSk7CisJICAgIH0KKyAgICAgICAgfQorCW5vZGVGaWx0ZXJzLmFkZChmaWx0ZXIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEByZXR1cm4gdGhlIG5vZGUgZmlsdGVycworICAgICAqLworICAgIHB1YmxpYyBMaXN0IGdldE5vZGVGaWx0ZXJzKCkgeworCS8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgbWV0aG9kIHN0dWIKKwlyZXR1cm4gbm9kZUZpbHRlcnM7CisgICAgfQorCisgICAgLyoqCisgICAgICogQHBhcmFtIGIKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXROb2RlU2V0KGJvb2xlYW4gYikgeworCWlzTm9kZVNldCA9IGI7CisgICAgfQorCQorICAgIHZvaWQgY29udmVydFRvTm9kZXMoKSB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiwgCisJUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiwgSU9FeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiB7CisJRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkZmFjdG9yeSA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKyAgICAgICAgZGZhY3Rvcnkuc2V0VmFsaWRhdGluZyhmYWxzZSk7ICAgICAgICAKKyAgICAgICAgZGZhY3Rvcnkuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisgICAgICAgIERvY3VtZW50QnVpbGRlciBkYiA9IGRmYWN0b3J5Lm5ld0RvY3VtZW50QnVpbGRlcigpOworICAgICAgICAvLyBzZWxlY3QgYWxsIG5vZGVzLCBhbHNvIHRoZSBjb21tZW50cy4gICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgZGIuc2V0RXJyb3JIYW5kbGVyKG5ldyBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscworICAgICAgICAgICAgICAgLklnbm9yZUFsbEVycm9ySGFuZGxlcigpKTsKKworICAgICAgICAgICAgRG9jdW1lbnQgZG9jID0gZGIucGFyc2UodGhpcy5nZXRPY3RldFN0cmVhbSgpKTsKKyAgICAgICAgICAgIHRoaXMuX3N1Yk5vZGUgPSBkb2M7CisgICAgICAgIH0gY2F0Y2ggKFNBWEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgLy8gaWYgYSBub3Qtd2VsbGZvcm1lZCBub2Rlc2V0IGV4aXN0cywgcHV0IGEgY29udGFpbmVyIGFyb3VuZCBpdC4uLgorICAgICAgICAgICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtIGJhb3MgPSBuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7CisKKyAgICAgICAgICAgIGJhb3Mud3JpdGUoIjxjb250YWluZXI+Ii5nZXRCeXRlcygpKTsKKyAgICAgICAgICAgIGJhb3Mud3JpdGUodGhpcy5nZXRCeXRlcygpKTsKKyAgICAgICAgICAgIGJhb3Mud3JpdGUoIjwvY29udGFpbmVyPiIuZ2V0Qnl0ZXMoKSk7CisKKyAgICAgICAgICAgIGJ5dGUgcmVzdWx0W10gPSBiYW9zLnRvQnl0ZUFycmF5KCk7CisgICAgICAgICAgICBEb2N1bWVudCBkb2N1bWVudCA9IGRiLnBhcnNlKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShyZXN1bHQpKTsKKyAgICAgICAgICAgIHRoaXMuX3N1Yk5vZGUgPSBkb2N1bWVudC5nZXREb2N1bWVudEVsZW1lbnQoKS5nZXRGaXJzdENoaWxkKCkuZ2V0Rmlyc3RDaGlsZCgpOwkJCQkKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9pbnB1dE9jdGV0U3RyZWFtUHJveHkgPSBudWxsOworICAgICAgICB0aGlzLmJ5dGVzID0gbnVsbDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2lnbmF0dXJlL1hNTFNpZ25hdHVyZUlucHV0RGVidWdnZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zaWduYXR1cmUvWE1MU2lnbmF0dXJlSW5wdXREZWJ1Z2dlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0ZjZjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2lnbmF0dXJlL1hNTFNpZ25hdHVyZUlucHV0RGVidWdnZXIuamF2YQpAQCAtMCwwICsxLDY2MiBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLlN0cmluZ1dyaXRlcjsKK2ltcG9ydCBqYXZhLmlvLldyaXRlcjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLmhlbHBlci5BdHRyQ29tcGFyZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5YTUxVdGlsczsKK2ltcG9ydCBvcmcudzNjLmRvbS5BdHRyOworaW1wb3J0IG9yZy53M2MuZG9tLkNvbW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5OYW1lZE5vZGVNYXA7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKK2ltcG9ydCBvcmcudzNjLmRvbS5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb247CisKKy8qKgorICogQ2xhc3MgWE1MU2lnbmF0dXJlSW5wdXREZWJ1Z2dlcgorICogCisgKiBAYXV0aG9yICRBdXRob3IkCisgKiBAdmVyc2lvbiAkUmV2aXNpb24kCisgKi8KK3B1YmxpYyBjbGFzcyBYTUxTaWduYXR1cmVJbnB1dERlYnVnZ2VyIHsKKworCisKKwkvKiogRmllbGQgX3htbFNpZ25hdHVyZUlucHV0ICovCisJcHJpdmF0ZSBTZXQgX3hwYXRoTm9kZVNldDsKKworCXByaXZhdGUgU2V0IF9pbmNsdXNpdmVOYW1lc3BhY2VzOworCisJLyoqIEZpZWxkIF9kb2MgKi8KKwlwcml2YXRlIERvY3VtZW50IF9kb2MgPSBudWxsOworCisJLyoqIEZpZWxkIF93cml0ZXIgKi8KKwlwcml2YXRlIFdyaXRlciBfd3JpdGVyID0gbnVsbDsKKworCS8vIEotCisJLy8gcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSFRNTFByZWZpeCA9ICI8IURPQ1RZUEUgSFRNTCBQVUJMSUMKKwkvLyBcIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOXCI+PGh0bWw+PGhlYWQ+PHN0eWxlCisJLy8gdHlwZT1cInRleHQvY3NzXCI+PCEtLSAuSU5DTFVERUQgeyBjb2xvcjogIzAwMDAwMDsgYmFja2dyb3VuZC1jb2xvcjoKKwkvLyAjRkZGRkZGOyBmb250LXdlaWdodDogYm9sZDsgfSAuRVhDTFVERUQgeyBjb2xvcjogIzY2NjY2NjsKKwkvLyBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5OTk5OyB9IC5JTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSB7IGNvbG9yOgorCS8vICMwMDAwRkY7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7IGZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXN0eWxlOgorCS8vIGl0YWxpYzsgfSAuRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyBjb2xvcjogIzAwMDBGRjsgYmFja2dyb3VuZC1jb2xvcjoKKwkvLyAjOTk5OTk5OyBmb250LXN0eWxlOiBpdGFsaWM7IH0gLS0+IDwvc3R5bGU+IDwvaGVhZD48Ym9keQorCS8vIGJnY29sb3I9XCIjOTk5OTk5XCI+PHByZT4iOworCS8qKiBUaGUgSFRNTCBQcmVmaXgqICovCisJc3RhdGljIGZpbmFsIFN0cmluZyBIVE1MUHJlZml4ID0gIjwhRE9DVFlQRSBIVE1MIFBVQkxJQyBcIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOXCI+XG4iCisJCQkrICI8aHRtbD5cbiIKKwkJCSsgIjxoZWFkPlxuIgorCQkJKyAiPHRpdGxlPkNhbmluaWNhbCBYTUwgbm9kZSBzZXQ8L3RpdGxlPlxuIgorCQkJKyAiPHN0eWxlIHR5cGU9XCJ0ZXh0L2Nzc1wiPlxuIgorCQkJKyAiPCEtLSBcbiIKKwkJCSsgIi5JTkNMVURFRCB7IFxuIgorCQkJKyAiICAgY29sb3I6ICMwMDAwMDA7IFxuIgorCQkJKyAiICAgYmFja2dyb3VuZC1jb2xvcjogXG4iCisJCQkrICIgICAjRkZGRkZGOyBcbiIKKwkJCSsgIiAgIGZvbnQtd2VpZ2h0OiBib2xkOyB9IFxuIgorCQkJKyAiLkVYQ0xVREVEIHsgXG4iCisJCQkrICIgICBjb2xvcjogIzY2NjY2NjsgXG4iCisJCQkrICIgICBiYWNrZ3JvdW5kLWNvbG9yOiBcbiIKKwkJCSsgIiAgICM5OTk5OTk7IH0gXG4iCisJCQkrICIuSU5DTFVERURJTkNMVVNJVkVOQU1FU1BBQ0UgeyBcbiIKKwkJCSsgIiAgIGNvbG9yOiAjMDAwMEZGOyBcbiIKKwkJCSsgIiAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7IFxuIgorCQkJKyAiICAgZm9udC13ZWlnaHQ6IGJvbGQ7IFxuIgorCQkJKyAiICAgZm9udC1zdHlsZTogaXRhbGljOyB9IFxuIgorCQkJKyAiLkVYQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHsgXG4iCisJCQkrICIgICBjb2xvcjogIzAwMDBGRjsgXG4iCisJCQkrICIgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5OTk5OyBcbiIKKwkJCSsgIiAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfSBcbiIKKwkJCSsgIi0tPiBcbiIKKwkJCSsgIjwvc3R5bGU+IFxuIgorCQkJKyAiPC9oZWFkPlxuIgorCQkJKyAiPGJvZHkgYmdjb2xvcj1cIiM5OTk5OTlcIj5cbiIKKwkJCSsgIjxoMT5FeHBsYW5hdGlvbiBvZiB0aGUgb3V0cHV0PC9oMT5cbiIKKwkJCSsgIjxwPlRoZSBmb2xsb3dpbmcgdGV4dCBjb250YWlucyB0aGUgbm9kZXNldCBvZiB0aGUgZ2l2ZW4gUmVmZXJlbmNlIGJlZm9yZSBpdCBpcyBjYW5vbmljYWxpemVkLiBUaGVyZSBleGlzdCBmb3VyIGRpZmZlcmVudCBzdHlsZXMgdG8gaW5kaWNhdGUgaG93IGEgZ2l2ZW4gbm9kZSBpcyB0cmVhdGVkLjwvcD5cbiIKKwkJCSsgIjx1bD5cbiIKKwkJCSsgIjxsaSBjbGFzcz1cIklOQ0xVREVEXCI+QSBub2RlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRCBzdHlsZS48L2xpPlxuIgorCQkJKyAiPGxpIGNsYXNzPVwiRVhDTFVERURcIj5BIG5vZGUgd2hpY2ggaXMgPGVtPk5PVDwvZW0+IGluIHRoZSBub2RlIHNldCBpcyBsYWJlbGVkIEVYQ0xVREVEIHN0eWxlLjwvbGk+XG4iCisJCQkrICI8bGkgY2xhc3M9XCJJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRVwiPkEgbmFtZXNwYWNlIHdoaWNoIGlzIGluIHRoZSBub2RlIHNldCBBTkQgaW4gdGhlIEluY2x1c2l2ZU5hbWVzcGFjZXMgUHJlZml4TGlzdCBpcyBsYWJlbGVkIHVzaW5nIHRoZSBJTkNMVURFRElOQ0xVU0lWRU5BTUVTUEFDRSBzdHlsZS48L2xpPlxuIgorCQkJKyAiPGxpIGNsYXNzPVwiRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0VcIj5BIG5hbWVzcGFjZSB3aGljaCBpcyBpbiBOT1QgdGhlIG5vZGUgc2V0IEFORCBpbiB0aGUgSW5jbHVzaXZlTmFtZXNwYWNlcyBQcmVmaXhMaXN0IGlzIGxhYmVsZWQgdXNpbmcgdGhlIElOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFIHN0eWxlLjwvbGk+XG4iCisJCQkrICI8L3VsPlxuIiArICI8aDE+T3V0cHV0PC9oMT5cbiIgKyAiPHByZT5cbiI7CisKKwkvKiogSFRNTCBTdWZmaXggKiAqLworCXN0YXRpYyBmaW5hbCBTdHJpbmcgSFRNTFN1ZmZpeCA9ICI8L3ByZT48L2JvZHk+PC9odG1sPiI7CisKKwlzdGF0aWMgZmluYWwgU3RyaW5nIEhUTUxFeGNsdWRlUHJlZml4ID0gIjxzcGFuIGNsYXNzPVwiRVhDTFVERURcIj4iOworCisJc3RhdGljIGZpbmFsIFN0cmluZyBIVE1MSW5jbHVkZVByZWZpeCA9ICI8c3BhbiBjbGFzcz1cIklOQ0xVREVEXCI+IjsKKworCXN0YXRpYyBmaW5hbCBTdHJpbmcgSFRNTEluY2x1ZGVPckV4Y2x1ZGVTdWZmaXggPSAiPC9zcGFuPiI7CisKKwlzdGF0aWMgZmluYWwgU3RyaW5nIEhUTUxJbmNsdWRlZEluY2x1c2l2ZU5hbWVzcGFjZVByZWZpeCA9ICI8c3BhbiBjbGFzcz1cIklOQ0xVREVESU5DTFVTSVZFTkFNRVNQQUNFXCI+IjsKKworCXN0YXRpYyBmaW5hbCBTdHJpbmcgSFRNTEV4Y2x1ZGVkSW5jbHVzaXZlTmFtZXNwYWNlUHJlZml4ID0gIjxzcGFuIGNsYXNzPVwiRVhDTFVERURJTkNMVVNJVkVOQU1FU1BBQ0VcIj4iOworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE5PREVfQkVGT1JFX0RPQ1VNRU5UX0VMRU1FTlQgPSAtMTsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBOT0RFX05PVF9CRUZPUkVfT1JfQUZURVJfRE9DVU1FTlRfRUxFTUVOVCA9IDA7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTk9ERV9BRlRFUl9ET0NVTUVOVF9FTEVNRU5UID0gMTsKKworCXN0YXRpYyBmaW5hbCBBdHRyQ29tcGFyZSBBVFRSX0NPTVBBUkUgPSBuZXcgQXR0ckNvbXBhcmUoKTsKKworCS8vIEorCisJcHJpdmF0ZSBYTUxTaWduYXR1cmVJbnB1dERlYnVnZ2VyKCkgeworCQkvLyBkbyBub3RoaW5nCisJfQorCisJLyoqCisJICogQ29uc3RydWN0b3IgWE1MU2lnbmF0dXJlSW5wdXREZWJ1Z2dlcgorCSAqIAorCSAqIEBwYXJhbSB4bWxTaWduYXR1cmVJbnB1dCB0aGUgc2lnbmF0dXIgdG8gcHJldHR5IHByaW50CisJICovCisJcHVibGljIFhNTFNpZ25hdHVyZUlucHV0RGVidWdnZXIoCisJCQlYTUxTaWduYXR1cmVJbnB1dCB4bWxTaWduYXR1cmVJbnB1dCkgeworCisJCWlmICgheG1sU2lnbmF0dXJlSW5wdXQuaXNOb2RlU2V0KCkpIHsKKwkJCXRoaXMuX3hwYXRoTm9kZVNldCA9IG51bGw7CisJCX0gZWxzZSB7CisJCQl0aGlzLl94cGF0aE5vZGVTZXQgPSB4bWxTaWduYXR1cmVJbnB1dC5faW5wdXROb2RlU2V0OworCQl9CisJfQorCisJLyoqCisJICogQ29uc3RydWN0b3IgWE1MU2lnbmF0dXJlSW5wdXREZWJ1Z2dlcgorCSAqIAorCSAqIEBwYXJhbSB4bWxTaWduYXR1cmVJbnB1dCB0aGUgc2lnbmF0dXIgdG8gcHJldHR5IHByaW50CisJICogQHBhcmFtIGluY2x1c2l2ZU5hbWVzcGFjZQorCSAqLworCXB1YmxpYyBYTUxTaWduYXR1cmVJbnB1dERlYnVnZ2VyKAorCQkJWE1MU2lnbmF0dXJlSW5wdXQgeG1sU2lnbmF0dXJlSW5wdXQsIFNldCBpbmNsdXNpdmVOYW1lc3BhY2UpIHsKKworCQl0aGlzKHhtbFNpZ25hdHVyZUlucHV0KTsKKworCQl0aGlzLl9pbmNsdXNpdmVOYW1lc3BhY2VzID0gaW5jbHVzaXZlTmFtZXNwYWNlOworCX0KKworCS8qKgorCSAqIE1ldGhvZCBnZXRIVE1MUmVwcmVzZW50YXRpb24KKwkgKiAKKwkgKiBAcmV0dXJuIFRoZSBIVE1MIFJlcHJlc2VudGF0aW9uLgorCSAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisJICovCisJcHVibGljIFN0cmluZyBnZXRIVE1MUmVwcmVzZW50YXRpb24oKSB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKworCQlpZiAoKHRoaXMuX3hwYXRoTm9kZVNldCA9PSBudWxsKSB8fCAodGhpcy5feHBhdGhOb2RlU2V0LnNpemUoKSA9PSAwKSkgeworCQkJcmV0dXJuIEhUTUxQcmVmaXggKyAiPGJsaW5rPm5vIG5vZGUgc2V0LCBzb3JyeTwvYmxpbms+IgorCQkJCQkrIEhUTUxTdWZmaXg7CisJCX0KKworCQl7CisKKwkJCS8vIGdldCBvbmx5IGEgc2luZ2xlIG5vZGUgYXMgYW5jaG9yIHRvIGZldGNoIHRoZSBvd25lciBkb2N1bWVudAorCQkJTm9kZSBuID0gKE5vZGUpIHRoaXMuX3hwYXRoTm9kZVNldC5pdGVyYXRvcigpLm5leHQoKTsKKworCQkJdGhpcy5fZG9jID0gWE1MVXRpbHMuZ2V0T3duZXJEb2N1bWVudChuKTsKKwkJfQorCisJCXRyeSB7CisJCQl0aGlzLl93cml0ZXIgPSBuZXcgU3RyaW5nV3JpdGVyKCk7CisKKwkJCXRoaXMuY2Fub25pY2FsaXplWFBhdGhOb2RlU2V0KHRoaXMuX2RvYyk7CisJCQl0aGlzLl93cml0ZXIuY2xvc2UoKTsKKworCQkJcmV0dXJuIHRoaXMuX3dyaXRlci50b1N0cmluZygpOworCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBleCkgeworCQkJdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisJCX0gZmluYWxseSB7CisJCQl0aGlzLl94cGF0aE5vZGVTZXQgPSBudWxsOworCQkJdGhpcy5fZG9jID0gbnVsbDsKKwkJCXRoaXMuX3dyaXRlciA9IG51bGw7CisJCX0KKwl9CisKKwkvKioKKwkgKiBNZXRob2QgY2Fub25pY2FsaXplWFBhdGhOb2RlU2V0CisJICogCisJICogQHBhcmFtIGN1cnJlbnROb2RlCisJICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKwkgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisJICovCisJcHJpdmF0ZSB2b2lkIGNhbm9uaWNhbGl6ZVhQYXRoTm9kZVNldChOb2RlIGN1cnJlbnROb2RlKQorCQkJdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiwgSU9FeGNlcHRpb24geworCisJCWludCBjdXJyZW50Tm9kZVR5cGUgPSBjdXJyZW50Tm9kZS5nZXROb2RlVHlwZSgpOworCQlzd2l0Y2ggKGN1cnJlbnROb2RlVHlwZSkgeworCisJCWNhc2UgTm9kZS5ET0NVTUVOVF9UWVBFX05PREU6CisJCWRlZmF1bHQ6CisJCQlicmVhazsKKworCQljYXNlIE5vZGUuRU5USVRZX05PREU6CisJCWNhc2UgTm9kZS5OT1RBVElPTl9OT0RFOgorCQljYXNlIE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERToKKwkJY2FzZSBOb2RlLkFUVFJJQlVURV9OT0RFOgorCQkJdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiZW1wdHkiKTsKKwkJY2FzZSBOb2RlLkRPQ1VNRU5UX05PREU6CisJCQl0aGlzLl93cml0ZXIud3JpdGUoSFRNTFByZWZpeCk7CisKKwkJCWZvciAoTm9kZSBjdXJyZW50Q2hpbGQgPSBjdXJyZW50Tm9kZS5nZXRGaXJzdENoaWxkKCk7IGN1cnJlbnRDaGlsZCAhPSBudWxsOyBjdXJyZW50Q2hpbGQgPSBjdXJyZW50Q2hpbGQKKwkJCQkJLmdldE5leHRTaWJsaW5nKCkpIHsKKwkJCQl0aGlzLmNhbm9uaWNhbGl6ZVhQYXRoTm9kZVNldChjdXJyZW50Q2hpbGQpOworCQkJfQorCisJCQl0aGlzLl93cml0ZXIud3JpdGUoSFRNTFN1ZmZpeCk7CisJCQlicmVhazsKKworCQljYXNlIE5vZGUuQ09NTUVOVF9OT0RFOgorCQkJaWYgKHRoaXMuX3hwYXRoTm9kZVNldC5jb250YWlucyhjdXJyZW50Tm9kZSkpIHsKKwkJCQl0aGlzLl93cml0ZXIud3JpdGUoSFRNTEluY2x1ZGVQcmVmaXgpOworCQkJfSBlbHNlIHsKKwkJCQl0aGlzLl93cml0ZXIud3JpdGUoSFRNTEV4Y2x1ZGVQcmVmaXgpOworCQkJfQorCisJCQlpbnQgcG9zaXRpb24gPSBnZXRQb3NpdGlvblJlbGF0aXZlVG9Eb2N1bWVudEVsZW1lbnQoY3VycmVudE5vZGUpOworCisJCQlpZiAocG9zaXRpb24gPT0gTk9ERV9BRlRFUl9ET0NVTUVOVF9FTEVNRU5UKSB7CisJCQkJdGhpcy5fd3JpdGVyLndyaXRlKCJcbiIpOworCQkJfQorCisJCQl0aGlzLm91dHB1dENvbW1lbnRUb1dyaXRlcigoQ29tbWVudCkgY3VycmVudE5vZGUpOworCisJCQlpZiAocG9zaXRpb24gPT0gTk9ERV9CRUZPUkVfRE9DVU1FTlRfRUxFTUVOVCkgeworCQkJCXRoaXMuX3dyaXRlci53cml0ZSgiXG4iKTsKKwkJCX0KKworCQkJdGhpcy5fd3JpdGVyLndyaXRlKEhUTUxJbmNsdWRlT3JFeGNsdWRlU3VmZml4KTsKKwkJCWJyZWFrOworCisJCWNhc2UgTm9kZS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6CisJCQlpZiAodGhpcy5feHBhdGhOb2RlU2V0LmNvbnRhaW5zKGN1cnJlbnROb2RlKSkgeworCQkJCXRoaXMuX3dyaXRlci53cml0ZShIVE1MSW5jbHVkZVByZWZpeCk7CisJCQl9IGVsc2UgeworCQkJCXRoaXMuX3dyaXRlci53cml0ZShIVE1MRXhjbHVkZVByZWZpeCk7CisJCQl9CisKKwkJCXBvc2l0aW9uID0gZ2V0UG9zaXRpb25SZWxhdGl2ZVRvRG9jdW1lbnRFbGVtZW50KGN1cnJlbnROb2RlKTsKKworCQkJaWYgKHBvc2l0aW9uID09IE5PREVfQUZURVJfRE9DVU1FTlRfRUxFTUVOVCkgeworCQkJCXRoaXMuX3dyaXRlci53cml0ZSgiXG4iKTsKKwkJCX0KKworCQkJdGhpcy5vdXRwdXRQSXRvV3JpdGVyKChQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pIGN1cnJlbnROb2RlKTsKKworCQkJaWYgKHBvc2l0aW9uID09IE5PREVfQkVGT1JFX0RPQ1VNRU5UX0VMRU1FTlQpIHsKKwkJCQl0aGlzLl93cml0ZXIud3JpdGUoIlxuIik7CisJCQl9CisKKwkJCXRoaXMuX3dyaXRlci53cml0ZShIVE1MSW5jbHVkZU9yRXhjbHVkZVN1ZmZpeCk7CisJCQlicmVhazsKKworCQljYXNlIE5vZGUuVEVYVF9OT0RFOgorCQljYXNlIE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFOgorCQkJaWYgKHRoaXMuX3hwYXRoTm9kZVNldC5jb250YWlucyhjdXJyZW50Tm9kZSkpIHsKKwkJCQl0aGlzLl93cml0ZXIud3JpdGUoSFRNTEluY2x1ZGVQcmVmaXgpOworCQkJfSBlbHNlIHsKKwkJCQl0aGlzLl93cml0ZXIud3JpdGUoSFRNTEV4Y2x1ZGVQcmVmaXgpOworCQkJfQorCisJCQlvdXRwdXRUZXh0VG9Xcml0ZXIoY3VycmVudE5vZGUuZ2V0Tm9kZVZhbHVlKCkpOworCisJCQlmb3IgKE5vZGUgbmV4dFNpYmxpbmcgPSBjdXJyZW50Tm9kZS5nZXROZXh0U2libGluZygpOyAobmV4dFNpYmxpbmcgIT0gbnVsbCkKKwkJCQkJJiYgKChuZXh0U2libGluZy5nZXROb2RlVHlwZSgpID09IE5vZGUuVEVYVF9OT0RFKSB8fCAobmV4dFNpYmxpbmcKKwkJCQkJCQkuZ2V0Tm9kZVR5cGUoKSA9PSBOb2RlLkNEQVRBX1NFQ1RJT05fTk9ERSkpOyBuZXh0U2libGluZyA9IG5leHRTaWJsaW5nCisJCQkJCS5nZXROZXh0U2libGluZygpKSB7CisKKwkJCQkvKgorCQkJCSAqIFRoZSBYUGF0aCBkYXRhIG1vZGVsIGFsbG93cyB0byBzZWxlY3Qgb25seSB0aGUgZmlyc3Qgb2YgYQorCQkJCSAqIHNlcXVlbmNlIG9mIG1peGVkIHRleHQgYW5kIENEQVRBIG5vZGVzLiBCdXQgd2UgbXVzdCBvdXRwdXQKKwkJCQkgKiB0aGVtIGFsbCwgc28gd2UgbXVzdCBzZWFyY2g6CisJCQkJICogCisJCQkJICogQHNlZSBodHRwOi8vbmFnb3lhLmFwYWNoZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTYzMjkKKwkJCQkgKi8KKwkJCQl0aGlzLm91dHB1dFRleHRUb1dyaXRlcihuZXh0U2libGluZy5nZXROb2RlVmFsdWUoKSk7CisJCQl9CisKKwkJCXRoaXMuX3dyaXRlci53cml0ZShIVE1MSW5jbHVkZU9yRXhjbHVkZVN1ZmZpeCk7CisJCQlicmVhazsKKworCQljYXNlIE5vZGUuRUxFTUVOVF9OT0RFOgorCQkJRWxlbWVudCBjdXJyZW50RWxlbWVudCA9IChFbGVtZW50KSBjdXJyZW50Tm9kZTsKKworCQkJaWYgKHRoaXMuX3hwYXRoTm9kZVNldC5jb250YWlucyhjdXJyZW50Tm9kZSkpIHsKKwkJCQl0aGlzLl93cml0ZXIud3JpdGUoSFRNTEluY2x1ZGVQcmVmaXgpOworCQkJfSBlbHNlIHsKKwkJCQl0aGlzLl93cml0ZXIud3JpdGUoSFRNTEV4Y2x1ZGVQcmVmaXgpOworCQkJfQorCisJCQl0aGlzLl93cml0ZXIud3JpdGUoIiZsdDsiKTsKKwkJCXRoaXMuX3dyaXRlci53cml0ZShjdXJyZW50RWxlbWVudC5nZXRUYWdOYW1lKCkpOworCisJCQl0aGlzLl93cml0ZXIud3JpdGUoSFRNTEluY2x1ZGVPckV4Y2x1ZGVTdWZmaXgpOworCisJCQkvLyB3ZSBvdXRwdXQgYWxsIEF0dHJzIHdoaWNoIGFyZSBhdmFpbGFibGUKKwkJCU5hbWVkTm9kZU1hcCBhdHRycyA9IGN1cnJlbnRFbGVtZW50LmdldEF0dHJpYnV0ZXMoKTsKKwkJCWludCBhdHRyc0xlbmd0aCA9IGF0dHJzLmdldExlbmd0aCgpOworCQkJT2JqZWN0IGF0dHJzMltdID0gbmV3IE9iamVjdFthdHRyc0xlbmd0aF07CisKKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgYXR0cnNMZW5ndGg7IGkrKykgeworCQkJCWF0dHJzMltpXSA9IGF0dHJzLml0ZW0oaSk7CisJCQl9CisKKwkJCUFycmF5cy5zb3J0KGF0dHJzMiwgQVRUUl9DT01QQVJFKTsKKwkJCU9iamVjdCBhdHRyczNbXSA9IGF0dHJzMjsKKworCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBhdHRyc0xlbmd0aDsgaSsrKSB7CisJCQkJQXR0ciBhID0gKEF0dHIpIGF0dHJzM1tpXTsKKwkJCQlib29sZWFuIGluY2x1ZGVkID0gdGhpcy5feHBhdGhOb2RlU2V0LmNvbnRhaW5zKGEpOworCQkJCWJvb2xlYW4gaW5jbHVzaXZlID0gdGhpcy5faW5jbHVzaXZlTmFtZXNwYWNlcy5jb250YWlucyhhCisJCQkJCQkuZ2V0TmFtZSgpKTsKKworCQkJCWlmIChpbmNsdWRlZCkgeworCQkJCQlpZiAoaW5jbHVzaXZlKSB7CisKKwkJCQkJCS8vIGluY2x1ZGVkIGFuZCBpbmNsdXNpdmUKKwkJCQkJCXRoaXMuX3dyaXRlcgorCQkJCQkJCQkud3JpdGUoSFRNTEluY2x1ZGVkSW5jbHVzaXZlTmFtZXNwYWNlUHJlZml4KTsKKwkJCQkJfSBlbHNlIHsKKworCQkJCQkJLy8gaW5jbHVkZWQgYW5kIG5vdCBpbmNsdXNpdmUKKwkJCQkJCXRoaXMuX3dyaXRlci53cml0ZShIVE1MSW5jbHVkZVByZWZpeCk7CisJCQkJCX0KKwkJCQl9IGVsc2UgeworCQkJCQlpZiAoaW5jbHVzaXZlKSB7CisKKwkJCQkJCS8vIGV4Y2x1ZGVkIGFuZCBpbmNsdXNpdmUKKwkJCQkJCXRoaXMuX3dyaXRlcgorCQkJCQkJCQkud3JpdGUoSFRNTEV4Y2x1ZGVkSW5jbHVzaXZlTmFtZXNwYWNlUHJlZml4KTsKKwkJCQkJfSBlbHNlIHsKKworCQkJCQkJLy8gZXhjbHVkZWQgYW5kIG5vdCBpbmNsdXNpdmUKKwkJCQkJCXRoaXMuX3dyaXRlci53cml0ZShIVE1MRXhjbHVkZVByZWZpeCk7CisJCQkJCX0KKwkJCQl9CisKKwkJCQl0aGlzLm91dHB1dEF0dHJUb1dyaXRlcihhLmdldE5vZGVOYW1lKCksIGEuZ2V0Tm9kZVZhbHVlKCkpOworCisJCQkJdGhpcy5fd3JpdGVyLndyaXRlKEhUTUxJbmNsdWRlT3JFeGNsdWRlU3VmZml4KTsKKwkJCX0KKworCQkJaWYgKHRoaXMuX3hwYXRoTm9kZVNldC5jb250YWlucyhjdXJyZW50Tm9kZSkpIHsKKwkJCQl0aGlzLl93cml0ZXIud3JpdGUoSFRNTEluY2x1ZGVQcmVmaXgpOworCQkJfSBlbHNlIHsKKwkJCQl0aGlzLl93cml0ZXIud3JpdGUoSFRNTEV4Y2x1ZGVQcmVmaXgpOworCQkJfQorCisJCQl0aGlzLl93cml0ZXIud3JpdGUoIiZndDsiKTsKKworCQkJdGhpcy5fd3JpdGVyLndyaXRlKEhUTUxJbmNsdWRlT3JFeGNsdWRlU3VmZml4KTsKKworCQkJLy8gdHJhdmVyc2FsCisJCQlmb3IgKE5vZGUgY3VycmVudENoaWxkID0gY3VycmVudE5vZGUuZ2V0Rmlyc3RDaGlsZCgpOyBjdXJyZW50Q2hpbGQgIT0gbnVsbDsgY3VycmVudENoaWxkID0gY3VycmVudENoaWxkCisJCQkJCS5nZXROZXh0U2libGluZygpKSB7CisJCQkJdGhpcy5jYW5vbmljYWxpemVYUGF0aE5vZGVTZXQoY3VycmVudENoaWxkKTsKKwkJCX0KKworCQkJaWYgKHRoaXMuX3hwYXRoTm9kZVNldC5jb250YWlucyhjdXJyZW50Tm9kZSkpIHsKKwkJCQl0aGlzLl93cml0ZXIud3JpdGUoSFRNTEluY2x1ZGVQcmVmaXgpOworCQkJfSBlbHNlIHsKKwkJCQl0aGlzLl93cml0ZXIud3JpdGUoSFRNTEV4Y2x1ZGVQcmVmaXgpOworCQkJfQorCisJCQl0aGlzLl93cml0ZXIud3JpdGUoIiZsdDsvIik7CisJCQl0aGlzLl93cml0ZXIud3JpdGUoY3VycmVudEVsZW1lbnQuZ2V0VGFnTmFtZSgpKTsKKwkJCXRoaXMuX3dyaXRlci53cml0ZSgiJmd0OyIpOworCisJCQl0aGlzLl93cml0ZXIud3JpdGUoSFRNTEluY2x1ZGVPckV4Y2x1ZGVTdWZmaXgpOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwkvKioKKwkgKiBDaGVja3Mgd2hldGhlciBhIENvbW1lbnQgb3IgUHJvY2Vzc2luZ0luc3RydWN0aW9uIGlzIGJlZm9yZSBvciBhZnRlciB0aGUKKwkgKiBkb2N1bWVudCBlbGVtZW50LiBUaGlzIGlzIG5lZWRlZCBmb3IgcHJlcGVuZGluZyBvciBhcHBlbmRpbmcgIlxuInMuCisJICogCisJICogQHBhcmFtIGN1cnJlbnROb2RlCisJICogICAgICAgICAgICBjb21tZW50IG9yIHBpIHRvIGNoZWNrCisJICogQHJldHVybiBOT0RFX0JFRk9SRV9ET0NVTUVOVF9FTEVNRU5ULAorCSAqICAgICAgICAgTk9ERV9OT1RfQkVGT1JFX09SX0FGVEVSX0RPQ1VNRU5UX0VMRU1FTlQgb3IKKwkgKiAgICAgICAgIE5PREVfQUZURVJfRE9DVU1FTlRfRUxFTUVOVAorCSAqIEBzZWUgI05PREVfQkVGT1JFX0RPQ1VNRU5UX0VMRU1FTlQKKwkgKiBAc2VlICNOT0RFX05PVF9CRUZPUkVfT1JfQUZURVJfRE9DVU1FTlRfRUxFTUVOVAorCSAqIEBzZWUgI05PREVfQUZURVJfRE9DVU1FTlRfRUxFTUVOVAorCSAqLworCXByaXZhdGUgaW50IGdldFBvc2l0aW9uUmVsYXRpdmVUb0RvY3VtZW50RWxlbWVudChOb2RlIGN1cnJlbnROb2RlKSB7CisKKwkJaWYgKGN1cnJlbnROb2RlID09IG51bGwpIHsKKwkJCXJldHVybiBOT0RFX05PVF9CRUZPUkVfT1JfQUZURVJfRE9DVU1FTlRfRUxFTUVOVDsKKwkJfQorCisJCURvY3VtZW50IGRvYyA9IGN1cnJlbnROb2RlLmdldE93bmVyRG9jdW1lbnQoKTsKKworCQlpZiAoY3VycmVudE5vZGUuZ2V0UGFyZW50Tm9kZSgpICE9IGRvYykgeworCQkJcmV0dXJuIE5PREVfTk9UX0JFRk9SRV9PUl9BRlRFUl9ET0NVTUVOVF9FTEVNRU5UOworCQl9CisKKwkJRWxlbWVudCBkb2N1bWVudEVsZW1lbnQgPSBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCk7CisKKwkJaWYgKGRvY3VtZW50RWxlbWVudCA9PSBudWxsKSB7CisJCQlyZXR1cm4gTk9ERV9OT1RfQkVGT1JFX09SX0FGVEVSX0RPQ1VNRU5UX0VMRU1FTlQ7CisJCX0KKworCQlpZiAoZG9jdW1lbnRFbGVtZW50ID09IGN1cnJlbnROb2RlKSB7CisJCQlyZXR1cm4gTk9ERV9OT1RfQkVGT1JFX09SX0FGVEVSX0RPQ1VNRU5UX0VMRU1FTlQ7CisJCX0KKworCQlmb3IgKE5vZGUgeCA9IGN1cnJlbnROb2RlOyB4ICE9IG51bGw7IHggPSB4LmdldE5leHRTaWJsaW5nKCkpIHsKKwkJCWlmICh4ID09IGRvY3VtZW50RWxlbWVudCkgeworCQkJCXJldHVybiBOT0RFX0JFRk9SRV9ET0NVTUVOVF9FTEVNRU5UOworCQkJfQorCQl9CisKKwkJcmV0dXJuIE5PREVfQUZURVJfRE9DVU1FTlRfRUxFTUVOVDsKKwl9CisKKwkvKioKKwkgKiBOb3JtYWxpemVzIGFuIHtAbGluayBBdHRyfWlidXRlIHZhbHVlCisJICogCisJICogVGhlIHN0cmluZyB2YWx1ZSBvZiB0aGUgbm9kZSBpcyBtb2RpZmllZCBieSByZXBsYWNpbmcKKwkgKiA8VUw+CisJICogPExJPmFsbCBhbXBlcnNhbmRzICgmKSB3aXRoIDxDT0RFPiZhbXA7YW1wOzwvQ09ERT48L0xJPgorCSAqIDxMST5hbGwgb3BlbiBhbmdsZSBicmFja2V0cyAoPCkgd2l0aCA8Q09ERT4mYW1wO2x0OzwvQ09ERT48L0xJPgorCSAqIDxMST5hbGwgcXVvdGF0aW9uIG1hcmsgY2hhcmFjdGVycyB3aXRoIDxDT0RFPiZhbXA7cXVvdDs8L0NPREU+PC9MST4KKwkgKiA8TEk+YW5kIHRoZSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgPENPREU+I3g5PC9DT0RFPiwgI3hBLCBhbmQgI3hELAorCSAqIHdpdGggY2hhcmFjdGVyIHJlZmVyZW5jZXMuIFRoZSBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBhcmUgd3JpdHRlbiBpbgorCSAqIHVwcGVyY2FzZSBoZXhhZGVjaW1hbCB3aXRoIG5vIGxlYWRpbmcgemVyb2VzIChmb3IgZXhhbXBsZSwgPENPREU+I3hEPC9DT0RFPgorCSAqIGlzIHJlcHJlc2VudGVkIGJ5IHRoZSBjaGFyYWN0ZXIgcmVmZXJlbmNlIDxDT0RFPiZhbXA7I3hEOzwvQ09ERT4pPC9MST4KKwkgKiA8L1VMPgorCSAqIAorCSAqIEBwYXJhbSBuYW1lCisJICogQHBhcmFtIHZhbHVlCisJICogQHRocm93cyBJT0V4Y2VwdGlvbgorCSAqLworCXByaXZhdGUgdm9pZCBvdXRwdXRBdHRyVG9Xcml0ZXIoU3RyaW5nIG5hbWUsIFN0cmluZyB2YWx1ZSkKKwkJCXRocm93cyBJT0V4Y2VwdGlvbiB7CisKKwkJdGhpcy5fd3JpdGVyLndyaXRlKCIgIik7CisJCXRoaXMuX3dyaXRlci53cml0ZShuYW1lKTsKKwkJdGhpcy5fd3JpdGVyLndyaXRlKCI9XCIiKTsKKworCQlpbnQgbGVuZ3RoID0gdmFsdWUubGVuZ3RoKCk7CisKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworCQkJY2hhciBjID0gdmFsdWUuY2hhckF0KGkpOworCisJCQlzd2l0Y2ggKGMpIHsKKworCQkJY2FzZSAnJic6CisJCQkJdGhpcy5fd3JpdGVyLndyaXRlKCImYW1wO2FtcDsiKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSAnPCc6CisJCQkJdGhpcy5fd3JpdGVyLndyaXRlKCImYW1wO2x0OyIpOworCQkJCWJyZWFrOworCisJCQljYXNlICciJzoKKwkJCQl0aGlzLl93cml0ZXIud3JpdGUoIiZhbXA7cXVvdDsiKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSAweDA5OiAvLyAnXHQnCisJCQkJdGhpcy5fd3JpdGVyLndyaXRlKCImYW1wOyN4OTsiKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSAweDBBOiAvLyAnXG4nCisJCQkJdGhpcy5fd3JpdGVyLndyaXRlKCImYW1wOyN4QTsiKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSAweDBEOiAvLyAnXHInCisJCQkJdGhpcy5fd3JpdGVyLndyaXRlKCImYW1wOyN4RDsiKTsKKwkJCQlicmVhazsKKworCQkJZGVmYXVsdDoKKwkJCQl0aGlzLl93cml0ZXIud3JpdGUoYyk7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKworCQl0aGlzLl93cml0ZXIud3JpdGUoIlwiIik7CisJfQorCisJLyoqCisJICogTm9ybWFsaXplcyBhIHtAbGluayBvcmcudzNjLmRvbS5Db21tZW50fSB2YWx1ZQorCSAqIAorCSAqIEBwYXJhbSBjdXJyZW50UEkKKwkgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisJICovCisJcHJpdmF0ZSB2b2lkIG91dHB1dFBJdG9Xcml0ZXIoUHJvY2Vzc2luZ0luc3RydWN0aW9uIGN1cnJlbnRQSSkKKwkJCXRocm93cyBJT0V4Y2VwdGlvbiB7CisKKwkJaWYgKGN1cnJlbnRQSSA9PSBudWxsKSB7CisJCQlyZXR1cm47CisJCX0KKworCQl0aGlzLl93cml0ZXIud3JpdGUoIiZsdDs/Iik7CisKKwkJU3RyaW5nIHRhcmdldCA9IGN1cnJlbnRQSS5nZXRUYXJnZXQoKTsKKwkJaW50IGxlbmd0aCA9IHRhcmdldC5sZW5ndGgoKTsKKworCQlmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisJCQljaGFyIGMgPSB0YXJnZXQuY2hhckF0KGkpOworCisJCQlzd2l0Y2ggKGMpIHsKKworCQkJY2FzZSAweDBEOgorCQkJCXRoaXMuX3dyaXRlci53cml0ZSgiJmFtcDsjeEQ7Iik7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgJyAnOgorCQkJCXRoaXMuX3dyaXRlci53cml0ZSgiJm1pZGRvdDsiKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSAnXG4nOgorCQkJCXRoaXMuX3dyaXRlci53cml0ZSgiJnBhcmE7XG4iKTsKKwkJCQlicmVhazsKKworCQkJZGVmYXVsdDoKKwkJCQl0aGlzLl93cml0ZXIud3JpdGUoYyk7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKworCQlTdHJpbmcgZGF0YSA9IGN1cnJlbnRQSS5nZXREYXRhKCk7CisKKwkJbGVuZ3RoID0gZGF0YS5sZW5ndGgoKTsKKworCQlpZiAobGVuZ3RoID4gMCkgeworCQkgICAgdGhpcy5fd3JpdGVyLndyaXRlKCIgIik7CisKKwkJICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKwkJCWNoYXIgYyA9IGRhdGEuY2hhckF0KGkpOworCisJCQlzd2l0Y2ggKGMpIHsKKworCQkJICAgIGNhc2UgMHgwRDoKKwkJCQl0aGlzLl93cml0ZXIud3JpdGUoIiZhbXA7I3hEOyIpOworCQkJCWJyZWFrOworCisJCQkgICAgZGVmYXVsdDoKKwkJCQl0aGlzLl93cml0ZXIud3JpdGUoYyk7CisJCQkJYnJlYWs7CisJCQl9CisJCSAgICB9CisJCX0KKworCQl0aGlzLl93cml0ZXIud3JpdGUoIj8mZ3Q7Iik7CisJfQorCisJLyoqCisJICogTWV0aG9kIG91dHB1dENvbW1lbnRUb1dyaXRlcgorCSAqIAorCSAqIEBwYXJhbSBjdXJyZW50Q29tbWVudAorCSAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKwkgKi8KKwlwcml2YXRlIHZvaWQgb3V0cHV0Q29tbWVudFRvV3JpdGVyKENvbW1lbnQgY3VycmVudENvbW1lbnQpCisJCQl0aHJvd3MgSU9FeGNlcHRpb24geworCisJCWlmIChjdXJyZW50Q29tbWVudCA9PSBudWxsKSB7CisJCQlyZXR1cm47CisJCX0KKworCQl0aGlzLl93cml0ZXIud3JpdGUoIiZsdDshLS0iKTsKKworCQlTdHJpbmcgZGF0YSA9IGN1cnJlbnRDb21tZW50LmdldERhdGEoKTsKKwkJaW50IGxlbmd0aCA9IGRhdGEubGVuZ3RoKCk7CisKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworCQkJY2hhciBjID0gZGF0YS5jaGFyQXQoaSk7CisKKwkJCXN3aXRjaCAoYykgeworCisJCQljYXNlIDB4MEQ6CisJCQkJdGhpcy5fd3JpdGVyLndyaXRlKCImYW1wOyN4RDsiKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSAnICc6CisJCQkJdGhpcy5fd3JpdGVyLndyaXRlKCImbWlkZG90OyIpOworCQkJCWJyZWFrOworCisJCQljYXNlICdcbic6CisJCQkJdGhpcy5fd3JpdGVyLndyaXRlKCImcGFyYTtcbiIpOworCQkJCWJyZWFrOworCisJCQlkZWZhdWx0OgorCQkJCXRoaXMuX3dyaXRlci53cml0ZShjKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJCXRoaXMuX3dyaXRlci53cml0ZSgiLS0mZ3Q7Iik7CisJfQorCisJLyoqCisJICogTWV0aG9kIG91dHB1dFRleHRUb1dyaXRlcgorCSAqIAorCSAqIEBwYXJhbSB0ZXh0CisJICogQHRocm93cyBJT0V4Y2VwdGlvbgorCSAqLworCXByaXZhdGUgdm9pZCBvdXRwdXRUZXh0VG9Xcml0ZXIoU3RyaW5nIHRleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisKKwkJaWYgKHRleHQgPT0gbnVsbCkgeworCQkJcmV0dXJuOworCQl9CisKKwkJaW50IGxlbmd0aCA9IHRleHQubGVuZ3RoKCk7CisKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworCQkJY2hhciBjID0gdGV4dC5jaGFyQXQoaSk7CisKKwkJCXN3aXRjaCAoYykgeworCisJCQljYXNlICcmJzoKKwkJCQl0aGlzLl93cml0ZXIud3JpdGUoIiZhbXA7YW1wOyIpOworCQkJCWJyZWFrOworCisJCQljYXNlICc8JzoKKwkJCQl0aGlzLl93cml0ZXIud3JpdGUoIiZhbXA7bHQ7Iik7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgJz4nOgorCQkJCXRoaXMuX3dyaXRlci53cml0ZSgiJmFtcDtndDsiKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSAweEQ6CisJCQkJdGhpcy5fd3JpdGVyLndyaXRlKCImYW1wOyN4RDsiKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSAnICc6CisJCQkJdGhpcy5fd3JpdGVyLndyaXRlKCImbWlkZG90OyIpOworCQkJCWJyZWFrOworCisJCQljYXNlICdcbic6CisJCQkJdGhpcy5fd3JpdGVyLndyaXRlKCImcGFyYTtcbiIpOworCQkJCWJyZWFrOworCisJCQlkZWZhdWx0OgorCQkJCXRoaXMuX3dyaXRlci53cml0ZShjKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zaWduYXR1cmUvcGFja2FnZS5odG1sIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NpZ25hdHVyZS9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdjNjFkNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zaWduYXR1cmUvcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsMyBAQAorPEhUTUw+PEhFQUQ+PC9IRUFEPjxCT0RZPjxQPgorWE1MIFNpZ25hdHVyZSBzcGVjaWZpYyBjbGFzc2VzLgorPC9QPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9JbnZhbGlkVHJhbnNmb3JtRXhjZXB0aW9uLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9JbnZhbGlkVHJhbnNmb3JtRXhjZXB0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ0ZjQ0ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL0ludmFsaWRUcmFuc2Zvcm1FeGNlcHRpb24uamF2YQpAQCAtMCwwICsxLDg0IEBACisKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXM7CisKKworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eUV4Y2VwdGlvbjsKKworCisvKioKKyAqCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubgorICovCitwdWJsaWMgY2xhc3MgSW52YWxpZFRyYW5zZm9ybUV4Y2VwdGlvbiBleHRlbmRzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKworICAgLyoqCisJICogCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgSW52YWxpZFRyYW5zZm9ybUV4Y2VwdGlvbgorICAgICoKKyAgICAqLworICAgcHVibGljIEludmFsaWRUcmFuc2Zvcm1FeGNlcHRpb24oKSB7CisgICAgICBzdXBlcigpOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIEludmFsaWRUcmFuc2Zvcm1FeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lkCisgICAgKi8KKyAgIHB1YmxpYyBJbnZhbGlkVHJhbnNmb3JtRXhjZXB0aW9uKFN0cmluZyBfbXNnSWQpIHsKKyAgICAgIHN1cGVyKF9tc2dJZCk7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgSW52YWxpZFRyYW5zZm9ybUV4Y2VwdGlvbgorICAgICoKKyAgICAqIEBwYXJhbSBfbXNnSWQKKyAgICAqIEBwYXJhbSBleEFyZ3MKKyAgICAqLworICAgcHVibGljIEludmFsaWRUcmFuc2Zvcm1FeGNlcHRpb24oU3RyaW5nIF9tc2dJZCwgT2JqZWN0IGV4QXJnc1tdKSB7CisgICAgICBzdXBlcihfbXNnSWQsIGV4QXJncyk7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgSW52YWxpZFRyYW5zZm9ybUV4Y2VwdGlvbgorICAgICoKKyAgICAqIEBwYXJhbSBfbXNnSWQKKyAgICAqIEBwYXJhbSBfb3JpZ2luYWxFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIEludmFsaWRUcmFuc2Zvcm1FeGNlcHRpb24oU3RyaW5nIF9tc2dJZCwgRXhjZXB0aW9uIF9vcmlnaW5hbEV4Y2VwdGlvbikgeworICAgICAgc3VwZXIoX21zZ0lkLCBfb3JpZ2luYWxFeGNlcHRpb24pOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIEludmFsaWRUcmFuc2Zvcm1FeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lkCisgICAgKiBAcGFyYW0gZXhBcmdzCisgICAgKiBAcGFyYW0gX29yaWdpbmFsRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBJbnZhbGlkVHJhbnNmb3JtRXhjZXB0aW9uKFN0cmluZyBfbXNnSWQsIE9iamVjdCBleEFyZ3NbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbiBfb3JpZ2luYWxFeGNlcHRpb24pIHsKKyAgICAgIHN1cGVyKF9tc2dJZCwgZXhBcmdzLCBfb3JpZ2luYWxFeGNlcHRpb24pOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RyYW5zZm9ybXMvVHJhbnNmb3JtLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9UcmFuc2Zvcm0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2IxYWYxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RyYW5zZm9ybXMvVHJhbnNmb3JtLmphdmEKQEAgLTAsMCArMSwzNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMTk5OS0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3JtczsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbjsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmV4Y2VwdGlvbnMuQWxnb3JpdGhtQWxyZWFkeVJlZ2lzdGVyZWRFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlSW5wdXQ7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ2xhc3NMb2FkZXJVdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuSGVscGVyTm9kZUxpc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuU2lnbmF0dXJlRWxlbWVudFByb3h5OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7CitpbXBvcnQgb3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uOworCisvKioKKyAqIEltcGxlbWVudHMgdGhlIGJlaGF2aW91ciBvZiB0aGUgPGNvZGU+ZHM6VHJhbnNmb3JtPC9jb2RlPiBlbGVtZW50LgorICoKKyAqIFRoaXMgPGNvZGU+VHJhbnNmb3JtPC9jb2RlPihGYWN0b3J5KSBjbGFzcyBhY3RzIGFzIHRoZSBGYWN0b3J5IGFuZCBQcm94eSBvZgorICogdGhlIGltcGxlbWVudGluZyBjbGFzcyB0aGF0IHN1cHBvcnRzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIDxhCisgKiBocmVmPWh0dHA6Ly93d3cudzMub3JnL1RSL3htbGRzaWctY29yZS8jc2VjLVRyYW5zZm9ybUFsZz5hIFRyYW5zZm9ybQorICogYWxnb3JpdGhtPC9hPi4KKyAqIEltcGxlbWVudHMgdGhlIEZhY3RvcnkgYW5kIFByb3h5IHBhdHRlcm4gZm9yIGRzOlRyYW5zZm9ybSBhbGdvcml0aG1zLgorICoKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEdldWVyLVBvbGxtYW5uCisgKiBAc2VlIFRyYW5zZm9ybXMKKyAqIEBzZWUgVHJhbnNmb3JtU3BpCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBUcmFuc2Zvcm0gZXh0ZW5kcyBTaWduYXR1cmVFbGVtZW50UHJveHkgeworCisgICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHByaXZhdGUgc3RhdGljIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZyBsb2cgPSAKKyAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeS5nZXRMb2coVHJhbnNmb3JtLmNsYXNzLmdldE5hbWUoKSk7CisKKyAgICAvKiogRmllbGQgX2FscmVhZHlJbml0aWFsaXplZCAqLworICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gYWxyZWFkeUluaXRpYWxpemVkID0gZmFsc2U7CisKKyAgICAvKiogQWxsIGF2YWlsYWJsZSBUcmFuc2Zvcm0gY2xhc3NlcyBhcmUgcmVnaXN0ZXJlZCBoZXJlICovCisgICAgcHJpdmF0ZSBzdGF0aWMgSGFzaE1hcCB0cmFuc2Zvcm1DbGFzc0hhc2ggPSBudWxsOworICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgSGFzaE1hcCB0cmFuc2Zvcm1TcGlIYXNoID0gbmV3IEhhc2hNYXAoKTsJICAgICAgCisKKyAgICBwcml2YXRlIFRyYW5zZm9ybVNwaSB0cmFuc2Zvcm1TcGkgPSBudWxsOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyB7QGxpbmsgVHJhbnNmb3JtfQorICAgICAqCisgICAgICogQHBhcmFtIGRvYyB0aGUge0BsaW5rIERvY3VtZW50fSBpbiB3aGljaCA8Y29kZT5UcmFuc2Zvcm08L2NvZGU+IHdpbGwgYmUgCisgICAgICogcGxhY2VkCisgICAgICogQHBhcmFtIGFsZ29yaXRobVVSSSBVUkkgcmVwcmVzZW50YXRpb24gb2YgCisgICAgICogPGNvZGU+VHJhbnNmb3JtIGFsZ29yaXRobTwvY29kZT4gd2hpY2ggd2lsbCBiZSBzcGVjaWZpZWQgYXMgcGFyYW1ldGVyIG9mIAorICAgICAqIHtAbGluayAjZ2V0SW5zdGFuY2UoRG9jdW1lbnQsIFN0cmluZyl9LCB3aGVuIGdlbmVyYXRlZC4gPC9icj4KKyAgICAgKiBAcGFyYW0gY29udGV4dE5vZGVzIHRoZSBjaGlsZCBub2RlIGxpc3Qgb2YgPGNvZGU+VHJhbnNmb3JtPC9jb2RlPiBlbGVtZW50CisgICAgICogQHRocm93cyBJbnZhbGlkVHJhbnNmb3JtRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIFRyYW5zZm9ybShEb2N1bWVudCBkb2MsIFN0cmluZyBhbGdvcml0aG1VUkksIE5vZGVMaXN0IGNvbnRleHROb2RlcykKKyAgICAgICAgdGhyb3dzIEludmFsaWRUcmFuc2Zvcm1FeGNlcHRpb24geworCisgICAgICAgIHN1cGVyKGRvYyk7CisKKyAgICAgICAgdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5zZXRBdHRyaWJ1dGVOUworICAgICAgICAgICAgKG51bGwsIENvbnN0YW50cy5fQVRUX0FMR09SSVRITSwgYWxnb3JpdGhtVVJJKTsKKworICAgICAgICB0cmFuc2Zvcm1TcGkgPSBnZXRUcmFuc2Zvcm1TcGkoYWxnb3JpdGhtVVJJKTsKKyAgICAgICAgaWYgKHRyYW5zZm9ybVNwaSA9PSBudWxsKSB7CisgICAgICAgICAgICBPYmplY3QgZXhBcmdzW10gPSB7IGFsZ29yaXRobVVSSSB9OworICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2Zvcm1FeGNlcHRpb24oCisgICAgICAgICAgICAgICAgInNpZ25hdHVyZS5UcmFuc2Zvcm0uVW5rbm93blRyYW5zZm9ybSIsIGV4QXJncyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobG9nLmlzRGVidWdFbmFibGVkKCkpIHsKKyAgICAgICAJICAgIGxvZy5kZWJ1ZygiQ3JlYXRlIFVSSSBcIiIgKyBhbGdvcml0aG1VUkkgKyAiXCIgY2xhc3MgXCIiCisgICAgICAgICAgICAgICAgICAgKyB0cmFuc2Zvcm1TcGkuZ2V0Q2xhc3MoKSArICJcIiIpOworICAgICAgIAkgICAgbG9nLmRlYnVnKCJUaGUgTm9kZUxpc3QgaXMgIiArIGNvbnRleHROb2Rlcyk7CisgICAgICAgIH0KKworICAgICAgICAvLyBnaXZlIGl0IHRvIHRoZSBjdXJyZW50IGRvY3VtZW50CisgICAgICAgIGlmIChjb250ZXh0Tm9kZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb250ZXh0Tm9kZXMuZ2V0TGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQKKyAgICAgICAgICAgICAgICAgICAgKGNvbnRleHROb2Rlcy5pdGVtKGkpLmNsb25lTm9kZSh0cnVlKSk7CisgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBjb25zdHJ1Y3RvciBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUge0BsaW5rIFRyYW5zZm9ybXN9IG9iamVjdCwKKyAgICAgKiBzbyBpdCdzIHByb3RlY3RlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBlbGVtZW50IDxjb2RlPmRzOlRyYW5zZm9ybTwvY29kZT4gZWxlbWVudAorICAgICAqIEBwYXJhbSBCYXNlVVJJIHRoZSBVUkkgb2YgdGhlIHJlc291cmNlIHdoZXJlIHRoZSBYTUwgaW5zdGFuY2Ugd2FzIHN0b3JlZAorICAgICAqIEB0aHJvd3MgSW52YWxpZFRyYW5zZm9ybUV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIFRyYW5zZm9ybShFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJKQorICAgICAgICB0aHJvd3MgSW52YWxpZFRyYW5zZm9ybUV4Y2VwdGlvbiwgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24sCisgICAgICAgICAgICAgICBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisKKyAgICAgICAgc3VwZXIoZWxlbWVudCwgQmFzZVVSSSk7CisKKyAgICAgICAgLy8gcmV0cmlldmUgQWxnb3JpdGhtIEF0dHJpYnV0ZSBmcm9tIGRzOlRyYW5zZm9ybQorICAgICAgICBTdHJpbmcgYWxnb3JpdGhtVVJJID0gZWxlbWVudC5nZXRBdHRyaWJ1dGVOUyhudWxsLCBDb25zdGFudHMuX0FUVF9BTEdPUklUSE0pOworCisgICAgICAgIGlmIChhbGdvcml0aG1VUkkgPT0gbnVsbCB8fCBhbGdvcml0aG1VUkkubGVuZ3RoKCkgPT0gMCkgeworICAgICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyBDb25zdGFudHMuX0FUVF9BTEdPUklUSE0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5fVEFHX1RSQU5TRk9STSB9OworICAgICAgICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uKCJ4bWwuV3JvbmdDb250ZW50IiwgZXhBcmdzKTsKKyAgICAgICAgfQorCisgICAgIAorICAgICAgICB0cmFuc2Zvcm1TcGkgPSBnZXRUcmFuc2Zvcm1TcGkoYWxnb3JpdGhtVVJJKTsKKyAgICAgICAgaWYgKHRyYW5zZm9ybVNwaSA9PSBudWxsKSB7CisgICAgICAgICAgICBPYmplY3QgZXhBcmdzW10gPSB7IGFsZ29yaXRobVVSSSB9OworICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2Zvcm1FeGNlcHRpb24oCisJICAgICAgICAic2lnbmF0dXJlLlRyYW5zZm9ybS5Vbmtub3duVHJhbnNmb3JtIiwgZXhBcmdzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEdlbmVyYXRlcyBhIFRyYW5zZm9ybSBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIHRoZSBzcGVjaWZpZWQgCisgICAgICogPGNvZGU+VHJhbnNmb3JtIGFsZ29yaXRobTwvY29kZT4gVVJJLgorICAgICAqCisgICAgICogQHBhcmFtIGFsZ29yaXRobVVSSSA8Y29kZT5UcmFuc2Zvcm0gYWxnb3JpdGhtPC9jb2RlPiBVUkkgcmVwcmVzZW50YXRpb24sIAorICAgICAqIHN1Y2ggYXMgc3BlY2lmaWVkIGluIAorICAgICAqIDxhIGhyZWY9aHR0cDovL3d3dy53My5vcmcvVFIveG1sZHNpZy1jb3JlLyNzZWMtVHJhbnNmb3JtQWxnPlRyYW5zZm9ybSBhbGdvcml0aG0gPC9hPgorICAgICAqIEBwYXJhbSBkb2MgdGhlIHByb3h5IHtAbGluayBEb2N1bWVudH0KKyAgICAgKiBAcmV0dXJuIDxjb2RlPntAbGluayBUcmFuc2Zvcm19PC9jb2RlPiBvYmplY3QKKyAgICAgKiBAdGhyb3dzIEludmFsaWRUcmFuc2Zvcm1FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFRyYW5zZm9ybSBnZXRJbnN0YW5jZSgKKyAgICAgICAgRG9jdW1lbnQgZG9jLCBTdHJpbmcgYWxnb3JpdGhtVVJJKSB0aHJvd3MgSW52YWxpZFRyYW5zZm9ybUV4Y2VwdGlvbiB7CisgICAgICAgIHJldHVybiBnZXRJbnN0YW5jZShkb2MsIGFsZ29yaXRobVVSSSwgKE5vZGVMaXN0KSBudWxsKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZW5lcmF0ZXMgYSBUcmFuc2Zvcm0gb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgc3BlY2lmaWVkIAorICAgICAqIDxjb2RlPlRyYW5zZm9ybSBhbGdvcml0aG08L2NvZGU+IFVSSS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBhbGdvcml0aG1VUkkgPGNvZGU+VHJhbnNmb3JtIGFsZ29yaXRobTwvY29kZT4gVVJJIHJlcHJlc2VudGF0aW9uLCAKKyAgICAgKiBzdWNoIGFzIHNwZWNpZmllZCBpbiAKKyAgICAgKiA8YSBocmVmPWh0dHA6Ly93d3cudzMub3JnL1RSL3htbGRzaWctY29yZS8jc2VjLVRyYW5zZm9ybUFsZz5UcmFuc2Zvcm0gYWxnb3JpdGhtIDwvYT4KKyAgICAgKiBAcGFyYW0gY29udGV4dENoaWxkIHRoZSBjaGlsZCBlbGVtZW50IG9mIDxjb2RlPlRyYW5zZm9ybTwvY29kZT4gZWxlbWVudAorICAgICAqIEBwYXJhbSBkb2MgdGhlIHByb3h5IHtAbGluayBEb2N1bWVudH0KKyAgICAgKiBAcmV0dXJuIDxjb2RlPntAbGluayBUcmFuc2Zvcm19PC9jb2RlPiBvYmplY3QKKyAgICAgKiBAdGhyb3dzIEludmFsaWRUcmFuc2Zvcm1FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFRyYW5zZm9ybSBnZXRJbnN0YW5jZSgKKyAgICAgICAgRG9jdW1lbnQgZG9jLCBTdHJpbmcgYWxnb3JpdGhtVVJJLCBFbGVtZW50IGNvbnRleHRDaGlsZCkKKyAgICAgICAgdGhyb3dzIEludmFsaWRUcmFuc2Zvcm1FeGNlcHRpb24geworCisgICAgICAgIEhlbHBlck5vZGVMaXN0IGNvbnRleHROb2RlcyA9IG51bGw7CisgICAgICAgIAorICAgICAgICBpZiAoY29udGV4dENoaWxkICE9IG51bGwpIHsKKyAgICAgICAgICAgIGNvbnRleHROb2RlcyA9IG5ldyBIZWxwZXJOb2RlTGlzdCgpOworICAgIAorICAgICAgICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KGRvYywgY29udGV4dE5vZGVzKTsKKyAgICAgICAgICAgIGNvbnRleHROb2Rlcy5hcHBlbmRDaGlsZChjb250ZXh0Q2hpbGQpOworICAgICAgICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KGRvYywgY29udGV4dE5vZGVzKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBnZXRJbnN0YW5jZShkb2MsIGFsZ29yaXRobVVSSSwgY29udGV4dE5vZGVzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZW5lcmF0ZXMgYSBUcmFuc2Zvcm0gb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgc3BlY2lmaWVkIAorICAgICAqIDxjb2RlPlRyYW5zZm9ybSBhbGdvcml0aG08L2NvZGU+IFVSSS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBhbGdvcml0aG1VUkkgPGNvZGU+VHJhbnNmb3JtIGFsZ29yaXRobTwvY29kZT4gVVJJIGZvcm0sIHN1Y2ggYXMgCisgICAgICogc3BlY2lmaWVkIGluIDxhIGhyZWY9aHR0cDovL3d3dy53My5vcmcvVFIveG1sZHNpZy1jb3JlLyNzZWMtVHJhbnNmb3JtQWxnPgorICAgICAqIFRyYW5zZm9ybSBhbGdvcml0aG0gPC9hPgorICAgICAqIEBwYXJhbSBjb250ZXh0Tm9kZXMgdGhlIGNoaWxkIG5vZGUgbGlzdCBvZiA8Y29kZT5UcmFuc2Zvcm08L2NvZGU+IGVsZW1lbnQKKyAgICAgKiBAcGFyYW0gZG9jIHRoZSBwcm94eSB7QGxpbmsgRG9jdW1lbnR9CisgICAgICogQHJldHVybiA8Y29kZT57QGxpbmsgVHJhbnNmb3JtfTwvY29kZT4gb2JqZWN0CisgICAgICogQHRocm93cyBJbnZhbGlkVHJhbnNmb3JtRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBUcmFuc2Zvcm0gZ2V0SW5zdGFuY2UoCisgICAgICAgIERvY3VtZW50IGRvYywgU3RyaW5nIGFsZ29yaXRobVVSSSwgTm9kZUxpc3QgY29udGV4dE5vZGVzKQorICAgICAgICB0aHJvd3MgSW52YWxpZFRyYW5zZm9ybUV4Y2VwdGlvbiB7CisgICAgICAgIHJldHVybiBuZXcgVHJhbnNmb3JtKGRvYywgYWxnb3JpdGhtVVJJLCBjb250ZXh0Tm9kZXMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEluaXRhbGl6ZXMgZm9yIHRoaXMge0BsaW5rIFRyYW5zZm9ybX0uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyB2b2lkIGluaXQoKSB7CisgICAgICAgIGlmICghYWxyZWFkeUluaXRpYWxpemVkKSB7CisgICAgICAgICAgICB0cmFuc2Zvcm1DbGFzc0hhc2ggPSBuZXcgSGFzaE1hcCgxMCk7CisgICAgICAgICAgICBhbHJlYWR5SW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVnaXN0ZXJzIGltcGxlbWVudGluZyBjbGFzcyBvZiB0aGUgVHJhbnNmb3JtIGFsZ29yaXRobSB3aXRoIGFsZ29yaXRobVVSSQorICAgICAqCisgICAgICogQHBhcmFtIGFsZ29yaXRobVVSSSBhbGdvcml0aG1VUkkgVVJJIHJlcHJlc2VudGF0aW9uIG9mIAorICAgICAqIDxjb2RlPlRyYW5zZm9ybSBhbGdvcml0aG08L2NvZGU+IHdpbGwgYmUgc3BlY2lmaWVkIGFzIHBhcmFtZXRlciBvZiAKKyAgICAgKiB7QGxpbmsgI2dldEluc3RhbmNlKERvY3VtZW50LCBTdHJpbmcpfSwgd2hlbiBnZW5lcmF0ZS4gPC9icj4KKyAgICAgKiBAcGFyYW0gaW1wbGVtZW50aW5nQ2xhc3MgPGNvZGU+aW1wbGVtZW50aW5nQ2xhc3M8L2NvZGU+IHRoZSBpbXBsZW1lbnRpbmcgCisgICAgICogY2xhc3Mgb2Yge0BsaW5rIFRyYW5zZm9ybVNwaX0KKyAgICAgKiBAdGhyb3dzIEFsZ29yaXRobUFscmVhZHlSZWdpc3RlcmVkRXhjZXB0aW9uIGlmIHNwZWNpZmllZCBhbGdvcml0aG1VUkkgCisgICAgICogaXMgYWxyZWFkeSByZWdpc3RlcmVkCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHJlZ2lzdGVyKFN0cmluZyBhbGdvcml0aG1VUkksIFN0cmluZyBpbXBsZW1lbnRpbmdDbGFzcykKKyAgICAgICAgdGhyb3dzIEFsZ29yaXRobUFscmVhZHlSZWdpc3RlcmVkRXhjZXB0aW9uIHsKKworICAgICAgICAvLyBhcmUgd2UgYWxyZWFkeSByZWdpc3RlcmVkPworICAgICAgICBDbGFzcyByZWdpc3RlcmVkQ2xhc3MgPSBnZXRJbXBsZW1lbnRpbmdDbGFzcyhhbGdvcml0aG1VUkkpOworICAgICAgICBpZiAoKHJlZ2lzdGVyZWRDbGFzcyAhPSBudWxsKSApIHsKKyAgICAgICAgICAgIE9iamVjdCBleEFyZ3NbXSA9IHsgYWxnb3JpdGhtVVJJLCByZWdpc3RlcmVkQ2xhc3MgfTsKKyAgICAgICAgICAgIHRocm93IG5ldyBBbGdvcml0aG1BbHJlYWR5UmVnaXN0ZXJlZEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICJhbGdvcml0aG0uYWxyZWFkeVJlZ2lzdGVyZWQiLCBleEFyZ3MpOworICAgICAgICB9CisKKyAgICAgICAgdHJ5IHsKKwkgICAgdHJhbnNmb3JtQ2xhc3NIYXNoLnB1dAorICAgICAgICAgICAgICAgIChhbGdvcml0aG1VUkksIENsYXNzTG9hZGVyVXRpbHMubG9hZENsYXNzKGltcGxlbWVudGluZ0NsYXNzLCBUcmFuc2Zvcm0uY2xhc3MpKTsKKwl9IGNhdGNoIChDbGFzc05vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKGUpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgVVJJIHJlcHJlc2VudGF0aW9uIG9mIFRyYW5zZm9ybWF0aW9uIGFsZ29yaXRobQorICAgICAqCisgICAgICogQHJldHVybiB0aGUgVVJJIHJlcHJlc2VudGF0aW9uIG9mIFRyYW5zZm9ybWF0aW9uIGFsZ29yaXRobQorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0VVJJKCkgeworICAgICAgICByZXR1cm4gdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5nZXRBdHRyaWJ1dGVOUworICAgICAgICAgICAgKG51bGwsIENvbnN0YW50cy5fQVRUX0FMR09SSVRITSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVHJhbnNmb3JtcyB0aGUgaW5wdXQsIGFuZCBnZW5lcmF0ZXMge0BsaW5rIFhNTFNpZ25hdHVyZUlucHV0fSBhcyBvdXRwdXQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gaW5wdXQgaW5wdXQge0BsaW5rIFhNTFNpZ25hdHVyZUlucHV0fSB3aGljaCBjYW4gc3VwcGxpZWQgT2N0ZXQgCisgICAgICogU3RyZWFtIGFuZCBOb2RlU2V0IGFzIElucHV0IG9mIFRyYW5zZm9ybWF0aW9uCisgICAgICogQHJldHVybiB0aGUge0BsaW5rIFhNTFNpZ25hdHVyZUlucHV0fSBjbGFzcyBhcyB0aGUgcmVzdWx0IG9mIAorICAgICAqIHRyYW5zZm9ybWF0aW9uCisgICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIFhNTFNpZ25hdHVyZUlucHV0IHBlcmZvcm1UcmFuc2Zvcm0oWE1MU2lnbmF0dXJlSW5wdXQgaW5wdXQpCisgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiwgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uLCBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbiB7CisKKyAgICAgICAgWE1MU2lnbmF0dXJlSW5wdXQgcmVzdWx0ID0gbnVsbDsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmVzdWx0ID0gdHJhbnNmb3JtU3BpLmVuZ2luZVBlcmZvcm1UcmFuc2Zvcm0oaW5wdXQsIHRoaXMpOworICAgICAgICB9IGNhdGNoIChQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBPYmplY3QgZXhBcmdzW10gPSB7IHRoaXMuZ2V0VVJJKCksICJQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIiB9OworICAgICAgICAgICAgdGhyb3cgbmV3IENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24oCisgICAgICAgICAgICAgICAgInNpZ25hdHVyZS5UcmFuc2Zvcm0uRXJyb3JEdXJpbmdUcmFuc2Zvcm0iLCBleEFyZ3MsIGV4KTsKKyAgICAgICAgfSBjYXRjaCAoU0FYRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBPYmplY3QgZXhBcmdzW10gPSB7IHRoaXMuZ2V0VVJJKCksICJTQVhFeGNlcHRpb24iIH07CisgICAgICAgICAgICB0aHJvdyBuZXcgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAic2lnbmF0dXJlLlRyYW5zZm9ybS5FcnJvckR1cmluZ1RyYW5zZm9ybSIsIGV4QXJncywgZXgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAKKyAgICAvKioKKyAgICAgKiBUcmFuc2Zvcm1zIHRoZSBpbnB1dCwgYW5kIGdlbmVyYXRlcyB7QGxpbmsgWE1MU2lnbmF0dXJlSW5wdXR9IGFzIG91dHB1dC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBpbnB1dCBpbnB1dCB7QGxpbmsgWE1MU2lnbmF0dXJlSW5wdXR9IHdoaWNoIGNhbiBzdXBwbGllZCBPY3RlY3QgCisgICAgICogU3RyZWFtIGFuZCBOb2RlU2V0IGFzIElucHV0IG9mIFRyYW5zZm9ybWF0aW9uCisgICAgICogQHBhcmFtIG9zIHdoZXJlIHRvIG91dHB1dCB0aGUgcmVzdWx0IG9mIHRoZSBsYXN0IHRyYW5zZm9ybWF0aW9uCisgICAgICogQHJldHVybiB0aGUge0BsaW5rIFhNTFNpZ25hdHVyZUlucHV0fSBjbGFzcyBhcyB0aGUgcmVzdWx0IG9mIAorICAgICAqIHRyYW5zZm9ybWF0aW9uCisgICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIFhNTFNpZ25hdHVyZUlucHV0IHBlcmZvcm1UcmFuc2Zvcm0oWE1MU2lnbmF0dXJlSW5wdXQgaW5wdXQsIAorICAgICAgICBPdXRwdXRTdHJlYW0gb3MpIHRocm93cyBJT0V4Y2VwdGlvbiwgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiwKKyAgICAgICAgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24sIFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uIHsKKworICAgICAgICBYTUxTaWduYXR1cmVJbnB1dCByZXN1bHQgPSBudWxsOworCisgICAgICAgIHRyeSB7CisgICAgICAgCSAgICByZXN1bHQgPSB0cmFuc2Zvcm1TcGkuZW5naW5lUGVyZm9ybVRyYW5zZm9ybShpbnB1dCwgb3MsIHRoaXMpOworICAgICAgICB9IGNhdGNoIChQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIGV4KSB7CisgICAgICAgCSAgICBPYmplY3QgZXhBcmdzW10gPSB7IHRoaXMuZ2V0VVJJKCksICJQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIiB9OworICAgCSAgICB0aHJvdyBuZXcgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbigKKyAgIAkgICAJInNpZ25hdHVyZS5UcmFuc2Zvcm0uRXJyb3JEdXJpbmdUcmFuc2Zvcm0iLCBleEFyZ3MsIGV4KTsKKyAgICAgICAgfSBjYXRjaCAoU0FYRXhjZXB0aW9uIGV4KSB7CisgICAgICAgCSAgICBPYmplY3QgZXhBcmdzW10gPSB7IHRoaXMuZ2V0VVJJKCksICJTQVhFeGNlcHRpb24iIH07CisgICAJICAgIHRocm93IG5ldyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uKAorICAgCSAgIAkic2lnbmF0dXJlLlRyYW5zZm9ybS5FcnJvckR1cmluZ1RyYW5zZm9ybSIsIGV4QXJncywgZXgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNZXRob2QgZ2V0SW1wbGVtZW50aW5nQ2xhc3MKKyAgICAgKgorICAgICAqIEBwYXJhbSBVUkkKKyAgICAgKiBAcmV0dXJuIFRoZSBuYW1lIG9mIHRoZSBjbGFzcyBpbXBsZW1lbnRpbmcgdGhlIFVSSS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBDbGFzcyBnZXRJbXBsZW1lbnRpbmdDbGFzcyhTdHJpbmcgVVJJKSB7CisgICAgICAgIHJldHVybiAoQ2xhc3MpIHRyYW5zZm9ybUNsYXNzSGFzaC5nZXQoVVJJKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBUcmFuc2Zvcm1TcGkgZ2V0VHJhbnNmb3JtU3BpKFN0cmluZyBVUkkpIAorICAgICAgICB0aHJvd3MgSW52YWxpZFRyYW5zZm9ybUV4Y2VwdGlvbiB7CisgICAgICAgIHRyeSB7CisgICAgCSAgICBPYmplY3QgdmFsdWUgPSB0cmFuc2Zvcm1TcGlIYXNoLmdldChVUkkpOworICAgIAkgICAgaWYgKHZhbHVlICE9IG51bGwpIHsKKwkgICAgICAgIHJldHVybiAoVHJhbnNmb3JtU3BpKSB2YWx1ZTsKKyAgICAJICAgIH0KKyAgICAJICAgIENsYXNzIGNsID0gKENsYXNzKSB0cmFuc2Zvcm1DbGFzc0hhc2guZ2V0KFVSSSk7CisgICAgCSAgICBpZiAoY2wgIT0gbnVsbCkgeworICAgIAkgICAgICAgIFRyYW5zZm9ybVNwaSB0ciA9IChUcmFuc2Zvcm1TcGkpIGNsLm5ld0luc3RhbmNlKCk7CisgICAgCSAgICAgICAgdHJhbnNmb3JtU3BpSGFzaC5wdXQoVVJJLCB0cik7CisgICAgCSAgICAgICAgcmV0dXJuIHRyOworICAgIAkgICAgfSAKKwl9IGNhdGNoIChJbnN0YW50aWF0aW9uRXhjZXB0aW9uIGV4KSB7CisJICAgIE9iamVjdCBleEFyZ3NbXSA9IHsgVVJJIH07CisgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zZm9ybUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAic2lnbmF0dXJlLlRyYW5zZm9ybS5Vbmtub3duVHJhbnNmb3JtIiwgZXhBcmdzLCBleCk7ICAgICAgCisJfSBjYXRjaCAoSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiBleCkgeworCSAgICBPYmplY3QgZXhBcmdzW10gPSB7IFVSSSB9OworICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2Zvcm1FeGNlcHRpb24oCisgICAgICAgICAgICAgICAgInNpZ25hdHVyZS5UcmFuc2Zvcm0uVW5rbm93blRyYW5zZm9ybSIsIGV4QXJncywgZXgpOyAgICAgIAorCX0KKwlyZXR1cm4gbnVsbDsJCisgICAgfQorICAgCisgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgcHVibGljIFN0cmluZyBnZXRCYXNlTG9jYWxOYW1lKCkgeworICAgICAgICByZXR1cm4gQ29uc3RhbnRzLl9UQUdfVFJBTlNGT1JNOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL1RyYW5zZm9ybVBhcmFtLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1QYXJhbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2ZTFjMTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1QYXJhbS5qYXZhCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zOworCisvKioKKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKi8KKworcHVibGljIGludGVyZmFjZSBUcmFuc2Zvcm1QYXJhbSB7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RyYW5zZm9ybXMvVHJhbnNmb3JtU3BpLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TcGkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmMzYjIxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RyYW5zZm9ybXMvVHJhbnNmb3JtU3BpLmphdmEKQEAgLTAsMCArMSwxMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXM7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb247CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkNhbm9uaWNhbGl6YXRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5JbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlSW5wdXQ7CitpbXBvcnQgb3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uOworCisvKioKKyAqIEJhc2UgY2xhc3Mgd2hpY2ggYWxsIFRyYW5zZm9ybSBhbGdvcml0aG1zIGV4dGVuZC4gVGhlIGNvbW1vbiBtZXRob2RzIHRoYXQKKyAqIGhhdmUgdG8gYmUgb3ZlcnJpZGRlbiBhcmUgdGhlIAorICoge0BsaW5rICNlbmdpbmVQZXJmb3JtVHJhbnNmb3JtKFhNTFNpZ25hdHVyZUlucHV0LCBUcmFuc2Zvcm0pfSBtZXRob2QuCisgKgorICogQGF1dGhvciBDaHJpc3RpYW4gR2V1ZXItUG9sbG1hbm4KKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIFRyYW5zZm9ybVNwaSB7CisgICAgLyoqCisgICAgICogRm9yIEFQSSBjb21wYXRpYmlsaXR5IG5vdCB0aHJlYWQgc2FmZS4KKyAgICAgKiBAZGVwcmVjYXRlZAorICAgICAqLworICAgIHByb3RlY3RlZCBUcmFuc2Zvcm0gX3RyYW5zZm9ybU9iamVjdCA9IG51bGw7CisgICAgLyoqCisgICAgICogU2V0IHRoZSB0cmFuc2Zvcm0gb2JqZWN0LiAKKyAgICAgKiBEZXBlcHJlY2F0ZWQgRm9yIEFQSSBjb21wYXRpYmlsaXR5LgorICAgICAqIEBwYXJhbSB0cmFuc2Zvcm0gdGhlIFRyYW5zZm9ybQorICAgICAqIEBkZXByZWNhdGVkCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgc2V0VHJhbnNmb3JtKFRyYW5zZm9ybSB0cmFuc2Zvcm0pIHsKKyAgICAgICAgdGhpcy5fdHJhbnNmb3JtT2JqZWN0ID0gdHJhbnNmb3JtOworICAgIH0KKyAgICAvKioKKyAgICAgKiBUaGUgbWVnYSBtZXRob2Qgd2hpY2ggTVVTVCBiZSBpbXBsZW1lbnRlZCBieSB0aGUgVHJhbnNmb3JtYXRpb24gQWxnb3JpdGhtLgorICAgICAqCisgICAgICogQHBhcmFtIGlucHV0IHtAbGluayBYTUxTaWduYXR1cmVJbnB1dH0gYXMgdGhlIGlucHV0IG9mIHRyYW5zZm9ybWF0aW9uCisgICAgICogQHBhcmFtIG9zIHdoZXJlIHRvIG91dHB1dCB0aGlzIHRyYW5zZm9ybWF0aW9uLgorICAgICAqIEBwYXJhbSBfdHJhbnNmb3JtT2JqZWN0IHRoZSBUcmFuc2Zvcm0KKyAgICAgKiBAcmV0dXJuIHtAbGluayBYTUxTaWduYXR1cmVJbnB1dH0gYXMgdGhlIHJlc3VsdCBvZiB0cmFuc2Zvcm1hdGlvbgorICAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uCisgICAgICogQHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uCisgICAgICogQHRocm93cyBTQVhFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHJvdGVjdGVkIFhNTFNpZ25hdHVyZUlucHV0IGVuZ2luZVBlcmZvcm1UcmFuc2Zvcm0oCisgICAgICAgIFhNTFNpZ25hdHVyZUlucHV0IGlucHV0LCBPdXRwdXRTdHJlYW0gb3MsIFRyYW5zZm9ybSBfdHJhbnNmb3JtT2JqZWN0KQorICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24sCisgICAgICAgICAgICAgICBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uLCBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uLCBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgU0FYRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIGVuZ2luZVBlcmZvcm1UcmFuc2Zvcm0oaW5wdXQsIF90cmFuc2Zvcm1PYmplY3QpOworICAgIH0KKyAgICAvKioKKyAgICAgKiBUaGUgbWVnYSBtZXRob2Qgd2hpY2ggTVVTVCBiZSBpbXBsZW1lbnRlZCBieSB0aGUgVHJhbnNmb3JtYXRpb24gQWxnb3JpdGhtLgorICAgICAqIEluIG9yZGVyIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBwcmVleGlzdGluZyBUcmFuc2Zvcm0gaW1wbGVtZW50YXRpb25zLCAKKyAgICAgKiBieSBkZWZhdWx0IHRoaXMgaW1wbGVtZW50YXRpb24gaW52b2tlcyB0aGUgZGVwcmVjYXRlZCwgdGhyZWFkLXVuc2FmZQorICAgICAqIG1ldGhvZHMuIFN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHRoaXMgd2l0aCBhIHRocmVhZC1zYWZlIAorICAgICAqIGltcGxlbWVudGF0aW9uLgorICAgICAqIAorICAgICAqIEBwYXJhbSBpbnB1dCB7QGxpbmsgWE1MU2lnbmF0dXJlSW5wdXR9IGFzIHRoZSBpbnB1dCBvZiB0cmFuc2Zvcm1hdGlvbgorICAgICAqIEBwYXJhbSBfdHJhbnNmb3JtT2JqZWN0IHRoZSBUcmFuc2Zvcm0KKyAgICAgKiBAcmV0dXJuIHtAbGluayBYTUxTaWduYXR1cmVJbnB1dH0gYXMgdGhlIHJlc3VsdCBvZiB0cmFuc2Zvcm1hdGlvbgorICAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uCisgICAgICogQHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uCisgICAgICogQHRocm93cyBTQVhFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHJvdGVjdGVkIFhNTFNpZ25hdHVyZUlucHV0IGVuZ2luZVBlcmZvcm1UcmFuc2Zvcm0oCisgICAgICAgIFhNTFNpZ25hdHVyZUlucHV0IGlucHV0LCBUcmFuc2Zvcm0gX3RyYW5zZm9ybU9iamVjdCkKKyAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiwgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24sCisgICAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbiwgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgIFNBWEV4Y2VwdGlvbiB7CisJLy9EZWZhdWx0IGltcGxlbWVudGF0aW9uIG92ZXJpZGUgd2l0aCBhIG11Y2ggYmV0dGVyCisJdHJ5IHsKKwkJVHJhbnNmb3JtU3BpIHRtcCA9IChUcmFuc2Zvcm1TcGkpIGdldENsYXNzKCkubmV3SW5zdGFuY2UoKTsKKwkgICAgdG1wLnNldFRyYW5zZm9ybShfdHJhbnNmb3JtT2JqZWN0KTsKKwkgICAgcmV0dXJuIHRtcC5lbmdpbmVQZXJmb3JtVHJhbnNmb3JtKGlucHV0KTsKKwl9IGNhdGNoIChJbnN0YW50aWF0aW9uRXhjZXB0aW9uIGUpIHsKKwkgICAgdGhyb3cgbmV3IFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uKCIiLGUpOworCX0gY2F0Y2ggKElsbGVnYWxBY2Nlc3NFeGNlcHRpb24gZSkgeworCSAgICB0aHJvdyBuZXcgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24oIiIsZSk7CisJfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRoZSBtZWdhIG1ldGhvZCB3aGljaCBNVVNUIGJlIGltcGxlbWVudGVkIGJ5IHRoZSBUcmFuc2Zvcm1hdGlvbiBBbGdvcml0aG0uCisgICAgICogQGRlcHJlY2F0ZWQKKyAgICAgKiBAcGFyYW0gaW5wdXQge0BsaW5rIFhNTFNpZ25hdHVyZUlucHV0fSBhcyB0aGUgaW5wdXQgb2YgdHJhbnNmb3JtYXRpb24KKyAgICAgKiBAcmV0dXJuIHtAbGluayBYTUxTaWduYXR1cmVJbnB1dH0gYXMgdGhlIHJlc3VsdCBvZiB0cmFuc2Zvcm1hdGlvbgorICAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uCisgICAgICogQHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uCisgICAgICogQHRocm93cyBTQVhFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHJvdGVjdGVkIFhNTFNpZ25hdHVyZUlucHV0IGVuZ2luZVBlcmZvcm1UcmFuc2Zvcm0oCisgICAgICAgIFhNTFNpZ25hdHVyZUlucHV0IGlucHV0KQorICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24sCisgICAgICAgICAgICAgICBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uLCBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uLCBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgU0FYRXhjZXB0aW9uIHsKKwl0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsKKyAgICB9CisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgVVJJIHJlcHJlc2VudGF0aW9uIG9mIDxjb2RlPlRyYW5zZm9ybWF0aW9uIGFsZ29yaXRobTwvY29kZT4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIFVSSSByZXByZXNlbnRhdGlvbiBvZiA8Y29kZT5UcmFuc2Zvcm1hdGlvbiBhbGdvcml0aG08L2NvZGU+CisgICAgICovCisgICAgcHJvdGVjdGVkIGFic3RyYWN0IFN0cmluZyBlbmdpbmVHZXRVUkkoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uRXhjZXB0aW9uLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhODAzZmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbi5qYXZhCkBAIC0wLDAgKzEsODQgQEAKKworLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3JtczsKKworCisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLlhNTFNlY3VyaXR5RXhjZXB0aW9uOworCisKKy8qKgorICoKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEdldWVyLVBvbGxtYW5uCisgKi8KK3B1YmxpYyBjbGFzcyBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbiBleHRlbmRzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKworICAgLyoqCisJICogCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24KKyAgICAqCisgICAgKi8KKyAgIHB1YmxpYyBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbigpIHsKKyAgICAgIHN1cGVyKCk7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKi8KKyAgIHB1YmxpYyBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbihTdHJpbmcgX21zZ0lEKSB7CisgICAgICBzdXBlcihfbXNnSUQpOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICogQHBhcmFtIGV4QXJncworICAgICovCisgICBwdWJsaWMgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24oU3RyaW5nIF9tc2dJRCwgT2JqZWN0IGV4QXJnc1tdKSB7CisgICAgICBzdXBlcihfbXNnSUQsIGV4QXJncyk7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKiBAcGFyYW0gX29yaWdpbmFsRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbihTdHJpbmcgX21zZ0lELCBFeGNlcHRpb24gX29yaWdpbmFsRXhjZXB0aW9uKSB7CisgICAgICBzdXBlcihfbXNnSUQsIF9vcmlnaW5hbEV4Y2VwdGlvbik7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKiBAcGFyYW0gZXhBcmdzCisgICAgKiBAcGFyYW0gX29yaWdpbmFsRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbihTdHJpbmcgX21zZ0lELCBPYmplY3QgZXhBcmdzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uIF9vcmlnaW5hbEV4Y2VwdGlvbikgeworICAgICAgc3VwZXIoX21zZ0lELCBleEFyZ3MsIF9vcmlnaW5hbEV4Y2VwdGlvbik7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1zLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFhZmI4MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL1RyYW5zZm9ybXMuamF2YQpAQCAtMCwwICsxLDMxOSBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA4IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3JtczsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkNhbm9uaWNhbGl6YXRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5DYW5vbmljYWxpemVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmVJbnB1dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuU2lnbmF0dXJlRWxlbWVudFByb3h5OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OworCisvKioKKyAqIEhvbGRlciBvZiB0aGUge0BsaW5rIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtfSBzdGVwcyB0byAKKyAqIGJlIHBlcmZvcm1lZCBvbiB0aGUgZGF0YS4KKyAqIFRoZSBpbnB1dCB0byB0aGUgZmlyc3QgVHJhbnNmb3JtIGlzIHRoZSByZXN1bHQgb2YgZGVyZWZlcmVuY2luZyB0aGUgCisgKiA8Y29kZT5VUkk8L2NvZGU+IGF0dHJpYnV0ZSBvZiB0aGUgPGNvZGU+UmVmZXJlbmNlPC9jb2RlPiBlbGVtZW50LgorICogVGhlIG91dHB1dCBmcm9tIHRoZSBsYXN0IFRyYW5zZm9ybSBpcyB0aGUgaW5wdXQgZm9yIHRoZSAKKyAqIDxjb2RlPkRpZ2VzdE1ldGhvZCBhbGdvcml0aG08L2NvZGU+CisgKgorICogQGF1dGhvciBDaHJpc3RpYW4gR2V1ZXItUG9sbG1hbm4KKyAqIEBzZWUgVHJhbnNmb3JtCisgKiBAc2VlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5SZWZlcmVuY2UKKyAqLworcHVibGljIGNsYXNzIFRyYW5zZm9ybXMgZXh0ZW5kcyBTaWduYXR1cmVFbGVtZW50UHJveHkgeworCisgICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKFRyYW5zZm9ybXMuY2xhc3MuZ2V0TmFtZSgpKTsKKyAgICAvKiogQ2Fub25pY2FsaXphdGlvbiAtIFJlcXVpcmVkIENhbm9uaWNhbCBYTUwgKG9taXRzIGNvbW1lbnRzKSAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRSQU5TRk9STV9DMTROX09NSVRfQ09NTUVOVFMgCisJPSBDYW5vbmljYWxpemVyLkFMR09fSURfQzE0Tl9PTUlUX0NPTU1FTlRTOworICAgIC8qKiBDYW5vbmljYWxpemF0aW9uIC0gUmVjb21tZW5kZWQgQ2Fub25pY2FsIFhNTCB3aXRoIENvbW1lbnRzICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFJBTlNGT1JNX0MxNE5fV0lUSF9DT01NRU5UUyAKKwk9IENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX1dJVEhfQ09NTUVOVFM7CisgICAgLyoqIENhbm9uaWNhbGl6YXRpb24gLSBSZXF1aXJlZCBDYW5vbmljYWwgWE1MIDEuMSAob21pdHMgY29tbWVudHMpICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFJBTlNGT1JNX0MxNE4xMV9PTUlUX0NPTU1FTlRTIAorCT0gQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE4xMV9PTUlUX0NPTU1FTlRTOworICAgIC8qKiBDYW5vbmljYWxpemF0aW9uIC0gUmVjb21tZW5kZWQgQ2Fub25pY2FsIFhNTCAxLjEgd2l0aCBDb21tZW50cyAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRSQU5TRk9STV9DMTROMTFfV0lUSF9DT01NRU5UUyAKKwk9IENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROMTFfV0lUSF9DT01NRU5UUzsKKyAgICAvKiogQ2Fub25pY2FsaXphdGlvbiAtIFJlcXVpcmVkIEV4Y2x1c2l2ZSBDYW5vbmljYWxpemF0aW9uIChvbWl0cyBjb21tZW50cykgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUUkFOU0ZPUk1fQzE0Tl9FWENMX09NSVRfQ09NTUVOVFMgCisJPSBDYW5vbmljYWxpemVyLkFMR09fSURfQzE0Tl9FWENMX09NSVRfQ09NTUVOVFM7CisgICAgLyoqIENhbm9uaWNhbGl6YXRpb24gLSBSZWNvbW1lbmRlZCBFeGNsdXNpdmUgQ2Fub25pY2FsaXphdGlvbiB3aXRoIENvbW1lbnRzICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFJBTlNGT1JNX0MxNE5fRVhDTF9XSVRIX0NPTU1FTlRTIAorCT0gQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fRVhDTF9XSVRIX0NPTU1FTlRTOworICAgIC8qKiBUcmFuc2Zvcm0gLSBPcHRpb25hbCBYU0xUICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFJBTlNGT1JNX1hTTFQgCisJPSAiaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHNsdC0xOTk5MTExNiI7CisgICAgLyoqIFRyYW5zZm9ybSAtIFJlcXVpcmVkIGJhc2U2NCBkZWNvZGluZyAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRSQU5TRk9STV9CQVNFNjRfREVDT0RFIAorCT0gQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUyArICJiYXNlNjQiOworICAgIC8qKiBUcmFuc2Zvcm0gLSBSZWNvbW1lbmRlZCBYUGF0aCAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRSQU5TRk9STV9YUEFUSCAKKwk9ICJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNiI7CisgICAgLyoqIFRyYW5zZm9ybSAtIFJlcXVpcmVkIEVudmVsb3BlZCBTaWduYXR1cmUgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUUkFOU0ZPUk1fRU5WRUxPUEVEX1NJR05BVFVSRSAKKwk9IENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMgKyAiZW52ZWxvcGVkLXNpZ25hdHVyZSI7CisgICAgLyoqIFRyYW5zZm9ybSAtIFhQb2ludGVyICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFJBTlNGT1JNX1hQT0lOVEVSIAorCT0gImh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvV0QteHB0ci0yMDAxMDEwOCI7CisgICAgLyoqIFRyYW5zZm9ybSAtIFhQYXRoIEZpbHRlciB2Mi4wICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFJBTlNGT1JNX1hQQVRIMkZJTFRFUjA0IAorCT0gImh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDQveG1sZHNpZy1maWx0ZXIyIjsKKyAgICAvKiogVHJhbnNmb3JtIC0gWFBhdGggRmlsdGVyICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFJBTlNGT1JNX1hQQVRIMkZJTFRFUiAKKwk9ICJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA2L3htbGRzaWctZmlsdGVyMiI7CisgICAgLyoqIFRyYW5zZm9ybSAtIFhQYXRoIEZpbHRlciAgQ0hHUCBwcml2YXRlICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFJBTlNGT1JNX1hQQVRIRklMVEVSQ0hHUCAKKwk9ICJodHRwOi8vd3d3Lm51ZS5ldC1pbmYudW5pLXNpZWdlbi5kZS9+Z2V1ZXItcG9sbG1hbm4vI3hwYXRoRmlsdGVyIjsKKworICAgIEVsZW1lbnQgW110cmFuc2Zvcm1zOworCisgICAgcHJvdGVjdGVkIFRyYW5zZm9ybXMoKSB7IH07CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIHtAbGluayBUcmFuc2Zvcm1zfS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkb2MgdGhlIHtAbGluayBEb2N1bWVudH0gaW4gd2hpY2ggPGNvZGU+WE1MU2lnbmF0dXJlPC9jb2RlPiB3aWxsIAorICAgICAqIGJlIHBsYWNlZAorICAgICAqLworICAgIHB1YmxpYyBUcmFuc2Zvcm1zKERvY3VtZW50IGRvYykgeworICAgICAgICBzdXBlcihkb2MpOworICAgICAgICBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyB7QGxpbmsgVHJhbnNmb3Jtc30gZnJvbSB7QGxpbmsgRWxlbWVudH0gd2hpY2ggaXMgCisgICAgICogPGNvZGU+VHJhbnNmb3JtczwvY29kZT4gRWxlbWVudAorICAgICAqCisgICAgICogQHBhcmFtIGVsZW1lbnQgIGlzIDxjb2RlPlRyYW5zZm9ybXM8L2NvZGU+IGVsZW1lbnQKKyAgICAgKiBAcGFyYW0gQmFzZVVSSSB0aGUgVVJJIHdoZXJlIHRoZSBYTUwgaW5zdGFuY2Ugd2FzIHN0b3JlZAorICAgICAqIEB0aHJvd3MgRE9NRXhjZXB0aW9uCisgICAgICogQHRocm93cyBJbnZhbGlkVHJhbnNmb3JtRXhjZXB0aW9uCisgICAgICogQHRocm93cyBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBUcmFuc2Zvcm1zKEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIEJhc2VVUkkpCisgICAgICAgICAgIHRocm93cyBET01FeGNlcHRpb24sIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIEludmFsaWRUcmFuc2Zvcm1FeGNlcHRpb24sIFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgWE1MU2VjdXJpdHlFeGNlcHRpb24geworCisgICAgICAgIHN1cGVyKGVsZW1lbnQsIEJhc2VVUkkpOworCisgICAgICAgIGludCBudW1iZXJPZlRyYW5zZm9ybUVsZW1zID0gdGhpcy5nZXRMZW5ndGgoKTsKKworICAgICAgICBpZiAobnVtYmVyT2ZUcmFuc2Zvcm1FbGVtcyA9PSAwKSB7CisKKyAgICAgICAgICAgIC8vIEF0IGxlYXN0IG9uZSBUcmFuc2Zvcm0gZWxlbWVudCBtdXN0IGJlIHByZXNlbnQuIEJhZC4KKyAgICAgICAgICAgIE9iamVjdCBleEFyZ3NbXSA9IHsgQ29uc3RhbnRzLl9UQUdfVFJBTlNGT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMuX1RBR19UUkFOU0ZPUk1TIH07CisKKyAgICAgICAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbigieG1sLldyb25nQ29udGVudCIsIGV4QXJncyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBZGRzIHRoZSA8Y29kZT5UcmFuc2Zvcm08L2NvZGU+IHdpdGggdGhlIHNwZWNpZmllZCA8Y29kZT5UcmFuc2Zvcm0gCisgICAgICogYWxnb3JpdGhtIFVSSTwvY29kZT4KKyAgICAgKgorICAgICAqIEBwYXJhbSB0cmFuc2Zvcm1VUkkgdGhlIFVSSSBmb3JtIG9mIHRyYW5zZm9ybSB0aGF0IGluZGljYXRlcyB3aGljaCAKKyAgICAgKiB0cmFuc2Zvcm1hdGlvbiBpcyBhcHBsaWVkIHRvIGRhdGEKKyAgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIHZvaWQgYWRkVHJhbnNmb3JtKFN0cmluZyB0cmFuc2Zvcm1VUkkpCisgICAgICAgICAgIHRocm93cyBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbiB7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkKKyAgICAgICAgIAlsb2cuZGVidWcoIlRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKCIgKyB0cmFuc2Zvcm1VUkkgKyAiKSIpOworCisgICAgICAgICAgICBUcmFuc2Zvcm0gdHJhbnNmb3JtID0gCisJCVRyYW5zZm9ybS5nZXRJbnN0YW5jZSh0aGlzLl9kb2MsIHRyYW5zZm9ybVVSSSk7CisKKyAgICAgICAgICAgIHRoaXMuYWRkVHJhbnNmb3JtKHRyYW5zZm9ybSk7CisgICAgICAgIH0gY2F0Y2ggKEludmFsaWRUcmFuc2Zvcm1FeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBZGRzIHRoZSA8Y29kZT5UcmFuc2Zvcm08L2NvZGU+IHdpdGggdGhlIHNwZWNpZmllZCA8Y29kZT5UcmFuc2Zvcm0gCisgICAgICogYWxnb3JpdGhtIFVSSTwvY29kZT4KKyAgICAgKgorICAgICAqIEBwYXJhbSB0cmFuc2Zvcm1VUkkgdGhlIFVSSSBmb3JtIG9mIHRyYW5zZm9ybSB0aGF0IGluZGljYXRlcyB3aGljaCAKKyAgICAgKiB0cmFuc2Zvcm1hdGlvbiBpcyBhcHBsaWVkIHRvIGRhdGEKKyAgICAgKiBAcGFyYW0gY29udGV4dEVsZW1lbnQKKyAgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uCisgICAgICogQHNlZSBUcmFuc2Zvcm0jZ2V0SW5zdGFuY2UoRG9jdW1lbnQgZG9jLCBTdHJpbmcgYWxnb3JpdGhtVVJJLCBFbGVtZW50IGNoaWxkRWxlbWVudCkKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhZGRUcmFuc2Zvcm0oU3RyaW5nIHRyYW5zZm9ybVVSSSwgRWxlbWVudCBjb250ZXh0RWxlbWVudCkKKyAgICAgICAgICAgdGhyb3dzIFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uIHsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKQorICAgICAgICAJbG9nLmRlYnVnKCJUcmFuc2Zvcm1zLmFkZFRyYW5zZm9ybSgiICsgdHJhbnNmb3JtVVJJICsgIikiKTsKKworICAgICAgICAgICAgVHJhbnNmb3JtIHRyYW5zZm9ybSA9IAorCQlUcmFuc2Zvcm0uZ2V0SW5zdGFuY2UodGhpcy5fZG9jLCB0cmFuc2Zvcm1VUkksIGNvbnRleHRFbGVtZW50KTsKKworICAgICAgICAgICAgdGhpcy5hZGRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICAgICAgfSBjYXRjaCAoSW52YWxpZFRyYW5zZm9ybUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEFkZHMgdGhlIDxjb2RlPlRyYW5zZm9ybTwvY29kZT4gd2l0aCB0aGUgc3BlY2lmaWVkIDxjb2RlPlRyYW5zZm9ybSAKKyAgICAgKiBhbGdvcml0aG0gVVJJPC9jb2RlPi4KKyAgICAgKgorICAgICAqIEBwYXJhbSB0cmFuc2Zvcm1VUkkgdGhlIFVSSSBmb3JtIG9mIHRyYW5zZm9ybSB0aGF0IGluZGljYXRlcyB3aGljaCAKKyAgICAgKiB0cmFuc2Zvcm1hdGlvbiBpcyBhcHBsaWVkIHRvIGRhdGEKKyAgICAgKiBAcGFyYW0gY29udGV4dE5vZGVzCisgICAgICogQHRocm93cyBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbgorICAgICAqIEBzZWUgVHJhbnNmb3JtI2dldEluc3RhbmNlKERvY3VtZW50IGRvYywgU3RyaW5nIGFsZ29yaXRobVVSSSwgTm9kZUxpc3QgY29udGV4dE5vZGVzKQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFkZFRyYW5zZm9ybShTdHJpbmcgdHJhbnNmb3JtVVJJLCBOb2RlTGlzdCBjb250ZXh0Tm9kZXMpCisgICAgICAgICAgIHRocm93cyBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbiB7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFRyYW5zZm9ybSB0cmFuc2Zvcm0gPSAKKwkJVHJhbnNmb3JtLmdldEluc3RhbmNlKHRoaXMuX2RvYywgdHJhbnNmb3JtVVJJLCBjb250ZXh0Tm9kZXMpOworICAgICAgICAgICAgdGhpcy5hZGRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICAgICAgfSBjYXRjaCAoSW52YWxpZFRyYW5zZm9ybUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEFkZHMgYSB1c2VyLXByb3ZpZGVkIFRyYW5zZm9ybSBzdGVwLgorICAgICAqCisgICAgICogQHBhcmFtIHRyYW5zZm9ybSB7QGxpbmsgVHJhbnNmb3JtfSBvYmplY3QKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgYWRkVHJhbnNmb3JtKFRyYW5zZm9ybSB0cmFuc2Zvcm0pIHsKKyAgICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKQorICAgICAgCSAgICBsb2cuZGVidWcoIlRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKCIgKyB0cmFuc2Zvcm0uZ2V0VVJJKCkgKyAiKSIpOworCisgICAgICAgIEVsZW1lbnQgdHJhbnNmb3JtRWxlbWVudCA9IHRyYW5zZm9ybS5nZXRFbGVtZW50KCk7CisKKyAgICAgICAgdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5hcHBlbmRDaGlsZCh0cmFuc2Zvcm1FbGVtZW50KTsKKyAgICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFwcGxpZXMgYWxsIGluY2x1ZGVkIDxjb2RlPlRyYW5zZm9ybTwvY29kZT5zIHRvIHhtbFNpZ25hdHVyZUlucHV0IGFuZCAKKyAgICAgKiByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlc2UgdHJhbnNmb3JtYXRpb25zLgorICAgICAqCisgICAgICogQHBhcmFtIHhtbFNpZ25hdHVyZUlucHV0IHRoZSBpbnB1dCBmb3IgdGhlIDxjb2RlPlRyYW5zZm9ybTwvY29kZT5zCisgICAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSA8Y29kZT5UcmFuc2Zvcm1zPC9jb2RlPgorICAgICAqIEB0aHJvd3MgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgWE1MU2lnbmF0dXJlSW5wdXQgcGVyZm9ybVRyYW5zZm9ybXMoCisgICAgICAgIFhNTFNpZ25hdHVyZUlucHV0IHhtbFNpZ25hdHVyZUlucHV0KSB0aHJvd3MgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24geworICAgICAgICByZXR1cm4gcGVyZm9ybVRyYW5zZm9ybXMoeG1sU2lnbmF0dXJlSW5wdXQsIG51bGwpOworICAgIH0KKyAgIAorICAgIC8qKgorICAgICAqIEFwcGxpZXMgYWxsIGluY2x1ZGVkIDxjb2RlPlRyYW5zZm9ybTwvY29kZT5zIHRvIHhtbFNpZ25hdHVyZUlucHV0IGFuZCAKKyAgICAgKiByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlc2UgdHJhbnNmb3JtYXRpb25zLgorICAgICAqCisgICAgICogQHBhcmFtIHhtbFNpZ25hdHVyZUlucHV0IHRoZSBpbnB1dCBmb3IgdGhlIDxjb2RlPlRyYW5zZm9ybTwvY29kZT5zCisgICAgICogQHBhcmFtIG9zIHdoZXJlIHRvIG91dHB1dCB0aGUgbGFzdCB0cmFuc2Zvcm1hdGlvbi4KKyAgICAgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIDxjb2RlPlRyYW5zZm9ybXM8L2NvZGU+CisgICAgICogQHRocm93cyBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBYTUxTaWduYXR1cmVJbnB1dCBwZXJmb3JtVHJhbnNmb3JtcygKKyAgICAgICAgWE1MU2lnbmF0dXJlSW5wdXQgeG1sU2lnbmF0dXJlSW5wdXQsIE91dHB1dFN0cmVhbSBvcykgCisgICAgCXRocm93cyBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbiB7CisKKwl0cnkgeworICAgICAgICAgICAgaW50IGxhc3Q9dGhpcy5nZXRMZW5ndGgoKS0xOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsYXN0OyBpKyspIHsKKyAgICAgICAgICAgICAgICBUcmFuc2Zvcm0gdCA9IHRoaXMuaXRlbShpKTsKKyAgICAgICAgICAgICAgICBpZiAobG9nLmlzRGVidWdFbmFibGVkKCkpIHsKKwkJICAgIGxvZy5kZWJ1ZygiUGVyZm9ybSB0aGUgKCIgKyBpICsgIil0aCAiICsgdC5nZXRVUkkoKSAKKwkJCSsgIiB0cmFuc2Zvcm0iKTsKKyAgICAgICAgICAgICAgICB9CisJCXhtbFNpZ25hdHVyZUlucHV0ID0gdC5wZXJmb3JtVHJhbnNmb3JtKHhtbFNpZ25hdHVyZUlucHV0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChsYXN0Pj0wKSB7CisJCVRyYW5zZm9ybSB0ID0gdGhpcy5pdGVtKGxhc3QpOworICAgICAgICAgICAgICAgIHhtbFNpZ25hdHVyZUlucHV0ID0gdC5wZXJmb3JtVHJhbnNmb3JtKHhtbFNpZ25hdHVyZUlucHV0LCBvcyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiB4bWxTaWduYXR1cmVJbnB1dDsKKwl9IGNhdGNoIChJT0V4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgICAgfSBjYXRjaCAoQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgICAgfSBjYXRjaCAoSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG5vbm5lZ2F0aXZlIG51bWJlciBvZiB0cmFuc2Zvcm1hdGlvbnMuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgdHJhbnNmb3JtYXRpb25zCisgICAgICovCisgICAgcHVibGljIGludCBnZXRMZW5ndGgoKQorICAgIHsKKyAgICAgICAgaWYgKHRyYW5zZm9ybXMgPT0gbnVsbCkgeworICAgICAgICAgICAgdHJhbnNmb3JtcyA9IFhNTFV0aWxzLnNlbGVjdERzTm9kZXMKKwkJKHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpLCAiVHJhbnNmb3JtIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRyYW5zZm9ybXMubGVuZ3RoOyAgICAgICAKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIDxpdD5pPC9pdD48c3VwPnRoPC9zdXA+IDxjb2RlPntAbGluayBUcmFuc2Zvcm19PC9jb2RlPi4KKyAgICAgKiBWYWxpZCA8Y29kZT5pPC9jb2RlPiB2YWx1ZXMgYXJlIDAgdG8gPGNvZGU+e0BsaW5rICNnZXRMZW5ndGh9LTE8L2NvZGU+LgorICAgICAqCisgICAgICogQHBhcmFtIGkgaW5kZXggb2Yge0BsaW5rIFRyYW5zZm9ybX0gdG8gcmV0dXJuCisgICAgICogQHJldHVybiB0aGUgPGl0Pmk8L2l0PjxzdXA+dGg8L3N1cD4gVHJhbnNmb3JtCisgICAgICogQHRocm93cyBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBUcmFuc2Zvcm0gaXRlbShpbnQgaSkgdGhyb3dzIFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uIHsKKyAgIAkKKyAgIAl0cnkgeworCSAgICBpZiAodHJhbnNmb3JtcyA9PSBudWxsKSB7CisgICAJCXRyYW5zZm9ybXMgPSBYTUxVdGlscy5zZWxlY3REc05vZGVzCisJCSAgICAodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5nZXRGaXJzdENoaWxkKCksICJUcmFuc2Zvcm0iKTsKKwkgICAgfQorICAgCSAgICByZXR1cm4gbmV3IFRyYW5zZm9ybSh0cmFuc2Zvcm1zW2ldLCB0aGlzLl9iYXNlVVJJKTsKKyAgIAl9IGNhdGNoIChYTUxTZWN1cml0eUV4Y2VwdGlvbiBleCkgeworCSAgICB0aHJvdyBuZXcgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgCX0KKyAgICB9CisKKyAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldEJhc2VMb2NhbE5hbWUoKSB7CisgICAgICAgIHJldHVybiBDb25zdGFudHMuX1RBR19UUkFOU0ZPUk1TOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL2ltcGxlbWVudGF0aW9ucy9GdW5jSGVyZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RyYW5zZm9ybXMvaW1wbGVtZW50YXRpb25zL0Z1bmNIZXJlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZhNTY0NQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL2ltcGxlbWVudGF0aW9ucy9GdW5jSGVyZS5qYXZhCkBAIC0wLDAgKzEsMTU3IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLmltcGxlbWVudGF0aW9uczsKKworCisKK2ltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRXhjZXB0aW9uOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuZHRtLkRUTTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5JMThuOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueHBhdGguTm9kZVNldERUTTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhwYXRoLmZ1bmN0aW9ucy5GdW5jdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhwYXRoLm9iamVjdHMuWE5vZGVTZXQ7CitpbXBvcnQgb3JnLmFwYWNoZS54cGF0aC5vYmplY3RzLlhPYmplY3Q7CitpbXBvcnQgb3JnLmFwYWNoZS54cGF0aC5yZXMuWFBBVEhFcnJvclJlc291cmNlczsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworCisKKy8qKgorICogVGhlICdoZXJlKCknIGZ1bmN0aW9uIHJldHVybnMgYSBub2RlLXNldCBjb250YWluaW5nIHRoZSBhdHRyaWJ1dGUgb3IKKyAqIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gbm9kZSBvciB0aGUgcGFyZW50IGVsZW1lbnQgb2YgdGhlIHRleHQgbm9kZQorICogdGhhdCBkaXJlY3RseSBiZWFycyB0aGUgWFBhdGggZXhwcmVzc2lvbi4gIFRoaXMgZXhwcmVzc2lvbiByZXN1bHRzCisgKiBpbiBhbiBlcnJvciBpZiB0aGUgY29udGFpbmluZyBYUGF0aCBleHByZXNzaW9uIGRvZXMgbm90IGFwcGVhciBpbiB0aGUKKyAqIHNhbWUgWE1MIGRvY3VtZW50IGFnYWluc3Qgd2hpY2ggdGhlIFhQYXRoIGV4cHJlc3Npb24gaXMgYmVpbmcgZXZhbHVhdGVkLgorICoKKyAqIE1haW5wYXJ0IGlzIHN0b2xlbiBmcm9tIEZ1bmNJZC5qYXZhCisgKgorICogVGhpcyBkb2VzIGNyYXNoIHVuZGVyIFhhbGFuMi4yLkQ3IGFuZCB3b3JrcyB1bmRlciBYYWxhbjIuMi5EOQorICoKKyAqIFRvIGdldCB0aGlzIGJhYnkgdG8gd29yaywgYSBzcGVjaWFsIHRyaWNrIGhhcyB0byBiZSB1c2VkLiBUaGUgZnVuY3Rpb24gbmVlZHMKKyAqIGFjY2VzcyB0byB0aGUgTm9kZSB3aGVyZSB0aGUgWFBhdGggZXhwcmVzc2lvbiBoYXMgYmVlbiBkZWZpbmVkLiBUaGlzIGlzIGRvbmUKKyAqIGJ5IGNvbnN0cnVjdGluZyBhIHtAbGluayBGdW5jSGVyZX0gd2hpY2ggaGFzIHRoaXMgTm9kZSBhcyAnb3duZXInLgorICoKKyAqIEBzZWUgImh0dHA6Ly93d3cudzMub3JnL1NpZ25hdHVyZS9EcmFmdHMveG1sZHNpZy1jb3JlL092ZXJ2aWV3Lmh0bWwjZnVuY3Rpb24taGVyZSIKKyAqLworcHVibGljIGNsYXNzIEZ1bmNIZXJlIGV4dGVuZHMgRnVuY3Rpb24geworCisgICAvKioKKwkgKiAKKwkgKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsKKworICAgLyoqCisgICAgKiBUaGUgaGVyZSBmdW5jdGlvbiByZXR1cm5zIGEgbm9kZS1zZXQgY29udGFpbmluZyB0aGUgYXR0cmlidXRlIG9yCisgICAgKiBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGUgb3IgdGhlIHBhcmVudCBlbGVtZW50IG9mIHRoZSB0ZXh0IG5vZGUKKyAgICAqIHRoYXQgZGlyZWN0bHkgYmVhcnMgdGhlIFhQYXRoIGV4cHJlc3Npb24uICBUaGlzIGV4cHJlc3Npb24gcmVzdWx0cworICAgICogaW4gYW4gZXJyb3IgaWYgdGhlIGNvbnRhaW5pbmcgWFBhdGggZXhwcmVzc2lvbiBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlCisgICAgKiBzYW1lIFhNTCBkb2N1bWVudCBhZ2FpbnN0IHdoaWNoIHRoZSBYUGF0aCBleHByZXNzaW9uIGlzIGJlaW5nIGV2YWx1YXRlZC4KKyAgICAqCisgICAgKiBAcGFyYW0geGN0eHQKKyAgICAqIEByZXR1cm4gdGhlIHhvYmplY3QKKyAgICAqIEB0aHJvd3MgamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgWE9iamVjdCBleGVjdXRlKFhQYXRoQ29udGV4dCB4Y3R4dCkKKyAgICAgICAgICAgdGhyb3dzIGphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJFeGNlcHRpb24geworCisgICAgICBOb2RlIHhwYXRoT3duZXJOb2RlID0gKE5vZGUpIHhjdHh0LmdldE93bmVyT2JqZWN0KCk7CisKKyAgICAgIGlmICh4cGF0aE93bmVyTm9kZSA9PSBudWxsKSB7CisgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgIH0KKworICAgICAgaW50IHhwYXRoT3duZXJOb2RlRFRNID0geGN0eHQuZ2V0RFRNSGFuZGxlRnJvbU5vZGUoeHBhdGhPd25lck5vZGUpOworCisgICAgICBpbnQgY3VycmVudE5vZGUgPSB4Y3R4dC5nZXRDdXJyZW50Tm9kZSgpOworICAgICAgRFRNIGR0bSA9IHhjdHh0LmdldERUTShjdXJyZW50Tm9kZSk7CisgICAgICBpbnQgZG9jQ29udGV4dCA9IGR0bS5nZXREb2N1bWVudCgpOworCisgICAgICBpZiAoRFRNLk5VTEwgPT0gZG9jQ29udGV4dCkgeworICAgICAgICAgZXJyb3IoeGN0eHQsIFhQQVRIRXJyb3JSZXNvdXJjZXMuRVJfQ09OVEVYVF9IQVNfTk9fT1dORVJET0MsIG51bGwpOworICAgICAgfQorCisgICAgICB7CisKKyAgICAgICAgIC8vIGNoZWNrIHdoZXRoZXIgY3VycmVudE5vZGUgYW5kIHRoZSBub2RlIGNvbnRhaW5pbmcgdGhlIFhQYXRoIGV4cHJlc3Npb24KKyAgICAgICAgIC8vIGFyZSBpbiB0aGUgc2FtZSBkb2N1bWVudAorICAgICAgICAgRG9jdW1lbnQgY3VycmVudERvYyA9CisgICAgICAgICAgICBYTUxVdGlscy5nZXRPd25lckRvY3VtZW50KGR0bS5nZXROb2RlKGN1cnJlbnROb2RlKSk7CisgICAgICAgICBEb2N1bWVudCB4cGF0aE93bmVyRG9jID0gWE1MVXRpbHMuZ2V0T3duZXJEb2N1bWVudCh4cGF0aE93bmVyTm9kZSk7CisKKyAgICAgICAgIGlmIChjdXJyZW50RG9jICE9IHhwYXRoT3duZXJEb2MpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1lckV4Y2VwdGlvbihJMThuCisgICAgICAgICAgICAgICAudHJhbnNsYXRlKCJ4cGF0aC5mdW5jSGVyZS5kb2N1bWVudHNEaWZmZXIiKSk7CisgICAgICAgICB9CisgICAgICB9CisKKyAgICAgIFhOb2RlU2V0IG5vZGVzID0gbmV3IFhOb2RlU2V0KHhjdHh0LmdldERUTU1hbmFnZXIoKSk7CisgICAgICBOb2RlU2V0RFRNIG5vZGVTZXQgPSBub2Rlcy5tdXRhYmxlTm9kZXNldCgpOworCisgICAgICB7CisgICAgICAgICBpbnQgaGVyZU5vZGUgPSBEVE0uTlVMTDsKKworICAgICAgICAgc3dpdGNoIChkdG0uZ2V0Tm9kZVR5cGUoeHBhdGhPd25lck5vZGVEVE0pKSB7CisKKyAgICAgICAgIGNhc2UgTm9kZS5BVFRSSUJVVEVfTk9ERSA6IHsKKyAgICAgICAgICAgIC8vIHJldHVybnMgYSBub2RlLXNldCBjb250YWluaW5nIHRoZSBhdHRyaWJ1dGUKKyAgICAgICAgICAgIGhlcmVOb2RlID0geHBhdGhPd25lck5vZGVEVE07CisKKyAgICAgICAgICAgIG5vZGVTZXQuYWRkTm9kZShoZXJlTm9kZSk7CisKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorICAgICAgICAgY2FzZSBOb2RlLlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSA6IHsKKyAgICAgICAgICAgIC8vIHJldHVybnMgYSBub2RlLXNldCBjb250YWluaW5nIHRoZSBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGUKKyAgICAgICAgICAgIGhlcmVOb2RlID0geHBhdGhPd25lck5vZGVEVE07CisKKyAgICAgICAgICAgIG5vZGVTZXQuYWRkTm9kZShoZXJlTm9kZSk7CisKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorICAgICAgICAgY2FzZSBOb2RlLlRFWFRfTk9ERSA6IHsKKyAgICAgICAgICAgIC8vIHJldHVybnMgYSBub2RlLXNldCBjb250YWluaW5nIHRoZSBwYXJlbnQgZWxlbWVudCBvZiB0aGUKKyAgICAgICAgICAgIC8vIHRleHQgbm9kZSB0aGF0IGRpcmVjdGx5IGJlYXJzIHRoZSBYUGF0aCBleHByZXNzaW9uCisgICAgICAgICAgICBoZXJlTm9kZSA9IGR0bS5nZXRQYXJlbnQoeHBhdGhPd25lck5vZGVEVE0pOworCisgICAgICAgICAgICBub2RlU2V0LmFkZE5vZGUoaGVyZU5vZGUpOworCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIH0KKyAgICAgICAgIGRlZmF1bHQgOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CisgICAgICB9CisKKyAgICAgIC8qKiAkdG9kbyQgRG8gSSBoYXZlIHRvIGRvIHRoaXMgZGV0YWNoKCkgY2FsbD8gKi8KKyAgICAgIG5vZGVTZXQuZGV0YWNoKCk7CisKKyAgICAgIHJldHVybiBub2RlczsKKyAgIH0KKworICAgLyoqCisgICAgKiBObyBhcmd1bWVudHMgdG8gcHJvY2Vzcywgc28gdGhpcyBkb2VzIG5vdGhpbmcuCisgICAgKiBAcGFyYW0gdmFycworICAgICogQHBhcmFtIGdsb2JhbHNTaXplCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIGZpeHVwVmFyaWFibGVzKGphdmEudXRpbC5WZWN0b3IgdmFycywgaW50IGdsb2JhbHNTaXplKSB7CisKKyAgICAgIC8vIGRvIG5vdGhpbmcKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL2ltcGxlbWVudGF0aW9ucy9GdW5jSGVyZUNvbnRleHQuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL2ltcGxlbWVudGF0aW9ucy9GdW5jSGVyZUNvbnRleHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDYwMThkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RyYW5zZm9ybXMvaW1wbGVtZW50YXRpb25zL0Z1bmNIZXJlQ29udGV4dC5qYXZhCkBAIC0wLDAgKzEsMTM5IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLmltcGxlbWVudGF0aW9uczsKKworCisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5kdG0uRFRNTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5JMThuOworaW1wb3J0IG9yZy5hcGFjaGUueHBhdGguQ2FjaGVkWFBhdGhBUEk7CitpbXBvcnQgb3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKKworCisvKioKKyAqIHtAbGluayBGdW5jSGVyZUNvbnRleHR9IGV4dGVuZHMge0BsaW5rIFhQYXRoQ29udGV4dH0gZm9yIHN1cHBseWluZyBjb250ZXh0CisgKiBmb3IgdGhlIDxDT0RFPmhlcmUoKTwvQ09ERT4gZnVuY3Rpb24uIFRoZSBoZXJlKCkgZnVuY3Rpb24gbmVlZHMgdG8ga25vdworICogPEk+d2hlcmU8L0k+IGluIGFuIFhNTCBpbnN0YW5jZSB0aGUgWFBhdGggdGV4dCBzdHJpbmcgYXBwZWFyZWQuIFRoaXMgY2FuIGJlCisgKiBpbiB7QGxpbmsgb3JnLnczYy5kb20uVGV4dH0sIHtAbGluayBvcmcudzNjLmRvbS5BdHRyfWlidXRlcyBhbmQge0BQcm9jZXNzaW5nSW5zdHJpbmN0aW9ufSBub2Rlcy4gVGhlCisgKiBjb3JyZWN0IG5vZGUgbXVzdCBiZSBzdXBwbGllZCB0byB0aGUgY29uc3RydWN0b3Igb2Yge0BsaW5rIEZ1bmNIZXJlQ29udGV4dH0uCisgKiBUaGUgc3VwcGxpZWQgTm9kZSBNVVNUIGNvbnRhaW4gdGhlIFhQYXRoIHdoaWNoIGlzIHRvIGJlIGV4ZWN1dGVkLgorICoKKyAqIDxQUkU+CisgKiBGcm9tOiBTY290dF9Cb2FnXEBsb3R1cy5jb20KKyAqIFRvOiBDaHJpc3RpYW4gR2V1ZXItUG9sbG1hbm4gPG1haWxsaXN0XEBudWUuZXQtaW5mLnVuaS1zaWVnZW4uZGU+CisgKiBDQzogeGFsYW4tZGV2QHhtbC5hcGFjaGUub3JnCisgKiBTdWJqZWN0OiBSZTogQ2xlYW51cCBvZiBYUGF0aENvbnRleHQgJiBkZWZpbml0aW9uIG9mIFhTTFRDb250ZXh0CisgKiBEYXRlOiBUdWUsIDIxIEF1ZyAyMDAxIDE4OjM2OjI0IC0wNDAwCisgKgorICogPiBNeSBwb2ludCBpcyB0byBzYXkgdG8gZ2V0IHRoaXMgYmFieSB0byBydW4sIHRoZSBYUGF0aCBtdXN0IGhhdmUgYQorICogPiBwb3NzaWJpbGl0eSB0byByZXRyaWV2ZSB0aGUgaW5mb3JtYXRpb24gd2hlcmUgaXRzZWxmIG9jY3VyZWQgaW4gYQorICogPiBkb2N1bWVudC4KKyAqCisgKiBJdCBzb3VuZHMgdG8gbWUgbGlrZSB5b3UgaGF2ZSB0byBkZXJpdmUgYW4gWE1MU2lnQ29udGV4dCBmcm9tIHRoZQorICogWFBhdGhDb250ZXh0PworICoKKyAqID4gYW5kIHN1cHBsaWVkIHRoZSBOb2RlIHdoaWNoIGNvbnRhaW5zIHRoZSB4cGF0aCBzdHJpbmcgYXMgIm93bmVyIi4gUXVlc3Rpb246CisgKiA+IElzIHRoaXMgdGhlIGNvcnJlY3QgdXNlIG9mIHRoZSBvd25lciBvYmplY3Q/IEl0IHdvcmtzLCBidXQgSSBkb24ndCBrbm93CisgKiA+IHdoZXRoZXIgdGhpcyBpcyBjb3JyZWN0IGZyb20gdGhlIHhhbGFuLXBoaWxvc29waHkuLi4KKyAqCisgKiBQaGlsb3NvcGhpY2FsbHkgaXQncyBmaW5lLiAgVGhlIG93bmVyIGlzIHRoZSBUcmFuc2Zvcm1lckltcGwgaWYgWFBhdGggaXMKKyAqIHJ1bm5pbmcgdW5kZXIgWFNMVC4gIElmIGl0IGlzIG5vdCBydW5uaW5nIHVuZGVyIFhTTFQsIGl0IGNhbiBiZSB3aGF0ZXZlcgorICogeW91IHdhbnQuCisgKgorICogLXNjb3R0CisgKiA8L1BSRT4KKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKiBAc2VlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuaW1wbGVtZW50YXRpb25zLkZ1bmNIZXJlCisgKiBAc2VlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhQYXRoRnVuY0hlcmVBUEkKKyAqIEBzZWUgPEEgSFJFRj0iaHR0cDovL3d3dy53My5vcmcvU2lnbmF0dXJlL0RyYWZ0cy94bWxkc2lnLWNvcmUvT3ZlcnZpZXcuaHRtbCNmdW5jdGlvbi1oZXJlIj5YTUwgU2lnbmF0dXJlIC0gVGhlIGhlcmUoKSBmdW5jdGlvbjwvQT4KKyAqLworcHVibGljIGNsYXNzIEZ1bmNIZXJlQ29udGV4dCBleHRlbmRzIFhQYXRoQ29udGV4dCB7CisKKyAgIC8qKgorICAgICogVGhpcyBjb25zdHVjdG9yIGlzIGRpc2FibGVkIGJlY2F1c2UgaWYgd2UgdXNlIHRoZSBoZXJlKCkgZnVuY3Rpb24gd2UKKyAgICAqIDxJPmFsd2F5czwvST4gbmVlZCB0byBrbm93IGluIHdoaWNoIG5vZGUgdGhlIFhQYXRoIG9jY3VyZWQuCisgICAgKi8KKyAgIHByaXZhdGUgRnVuY0hlcmVDb250ZXh0KCkge30KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBGdW5jSGVyZUNvbnRleHQKKyAgICAqCisgICAgKiBAcGFyYW0gb3duZXIKKyAgICAqLworICAgcHVibGljIEZ1bmNIZXJlQ29udGV4dChOb2RlIG93bmVyKSB7CisgICAgICBzdXBlcihvd25lcik7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgRnVuY0hlcmVDb250ZXh0CisgICAgKgorICAgICogQHBhcmFtIG93bmVyCisgICAgKiBAcGFyYW0geHBhdGhDb250ZXh0CisgICAgKi8KKyAgIHB1YmxpYyBGdW5jSGVyZUNvbnRleHQoTm9kZSBvd25lciwgWFBhdGhDb250ZXh0IHhwYXRoQ29udGV4dCkgeworCisgICAgICBzdXBlcihvd25lcik7CisKKyAgICAgIHRyeSB7CisgICAgICAgICBzdXBlci5tX2R0bU1hbmFnZXIgPSB4cGF0aENvbnRleHQuZ2V0RFRNTWFuYWdlcigpOworICAgICAgfSBjYXRjaCAoSWxsZWdhbEFjY2Vzc0Vycm9yIGlhZSkgeworICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBY2Nlc3NFcnJvcihJMThuLnRyYW5zbGF0ZSgiZW5kb3JzZWQuamRrMS40LjAiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgT3JpZ2luYWwgbWVzc2FnZSB3YXMgXCIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgaWFlLmdldE1lc3NhZ2UoKSArICJcIiIpOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIEZ1bmNIZXJlQ29udGV4dAorICAgICoKKyAgICAqIEBwYXJhbSBvd25lcgorICAgICogQHBhcmFtIHByZXZpb3VzbHlVc2VkCisgICAgKi8KKyAgIHB1YmxpYyBGdW5jSGVyZUNvbnRleHQoTm9kZSBvd25lciwgQ2FjaGVkWFBhdGhBUEkgcHJldmlvdXNseVVzZWQpIHsKKworICAgICAgc3VwZXIob3duZXIpOworCisgICAgICB0cnkgeworICAgICAgICAgc3VwZXIubV9kdG1NYW5hZ2VyID0gcHJldmlvdXNseVVzZWQuZ2V0WFBhdGhDb250ZXh0KCkuZ2V0RFRNTWFuYWdlcigpOworICAgICAgfSBjYXRjaCAoSWxsZWdhbEFjY2Vzc0Vycm9yIGlhZSkgeworICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBY2Nlc3NFcnJvcihJMThuLnRyYW5zbGF0ZSgiZW5kb3JzZWQuamRrMS40LjAiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgT3JpZ2luYWwgbWVzc2FnZSB3YXMgXCIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgaWFlLmdldE1lc3NhZ2UoKSArICJcIiIpOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIEZ1bmNIZXJlQ29udGV4dAorICAgICoKKyAgICAqIEBwYXJhbSBvd25lcgorICAgICogQHBhcmFtIGR0bU1hbmFnZXIKKyAgICAqLworICAgcHVibGljIEZ1bmNIZXJlQ29udGV4dChOb2RlIG93bmVyLCBEVE1NYW5hZ2VyIGR0bU1hbmFnZXIpIHsKKworICAgICAgc3VwZXIob3duZXIpOworCisgICAgICB0cnkgeworICAgICAgICAgc3VwZXIubV9kdG1NYW5hZ2VyID0gZHRtTWFuYWdlcjsKKyAgICAgIH0gY2F0Y2ggKElsbGVnYWxBY2Nlc3NFcnJvciBpYWUpIHsKKyAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQWNjZXNzRXJyb3IoSTE4bi50cmFuc2xhdGUoImVuZG9yc2VkLmpkazEuNC4wIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIE9yaWdpbmFsIG1lc3NhZ2Ugd2FzIFwiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGlhZS5nZXRNZXNzYWdlKCkgKyAiXCIiKTsKKyAgICAgIH0KKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL2ltcGxlbWVudGF0aW9ucy9UcmFuc2Zvcm1CYXNlNjREZWNvZGUuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL2ltcGxlbWVudGF0aW9ucy9UcmFuc2Zvcm1CYXNlNjREZWNvZGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDQzMzdmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RyYW5zZm9ybXMvaW1wbGVtZW50YXRpb25zL1RyYW5zZm9ybUJhc2U2NERlY29kZS5qYXZhCkBAIC0wLDAgKzEsMTgwIEBACisKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuaW1wbGVtZW50YXRpb25zOworCisKKworaW1wb3J0IGphdmEuaW8uQnVmZmVyZWRJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOworCitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeTsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5QYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5DYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmV4Y2VwdGlvbnMuQmFzZTY0RGVjb2RpbmdFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZUlucHV0OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtU3BpOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtYXRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1zOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkJhc2U2NDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CitpbXBvcnQgb3JnLnczYy5kb20uVGV4dDsKK2ltcG9ydCBvcmcueG1sLnNheC5TQVhFeGNlcHRpb247CisKKy8qKgorICogSW1wbGVtZW50cyB0aGUgPENPREU+aHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2Jhc2U2NDwvQ09ERT4gZGVjb2RpbmcKKyAqIHRyYW5zZm9ybS4KKyAqCisgKiA8cD5UaGUgbm9ybWF0aXZlIHNwZWNpZmljYXRpb24gZm9yIGJhc2U2NCBkZWNvZGluZyB0cmFuc2Zvcm1zIGlzCisgKiA8QSBIUkVGPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL0NSLXhtbGRzaWctY29yZS0yMDAxMDQxOS8jcmVmLU1JTUUiPltNSU1FXTwvQT4uCisgKiBUaGUgYmFzZTY0IFRyYW5zZm9ybSBlbGVtZW50IGhhcyBubyBjb250ZW50LiBUaGUgaW5wdXQKKyAqIGlzIGRlY29kZWQgYnkgdGhlIGFsZ29yaXRobXMuIFRoaXMgdHJhbnNmb3JtIGlzIHVzZWZ1bCBpZiBhbgorICogYXBwbGljYXRpb24gbmVlZHMgdG8gc2lnbiB0aGUgcmF3IGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBlbmNvZGVkCisgKiBjb250ZW50IG9mIGFuIGVsZW1lbnQuIDwvcD4KKyAqCisgKiA8cD5UaGlzIHRyYW5zZm9ybSByZXF1aXJlcyBhbiBvY3RldCBzdHJlYW0gZm9yIGlucHV0LgorICogSWYgYW4gWFBhdGggbm9kZS1zZXQgKG9yIHN1ZmZpY2llbnRseSBmdW5jdGlvbmFsIGFsdGVybmF0aXZlKSBpcworICogZ2l2ZW4gYXMgaW5wdXQsIHRoZW4gaXQgaXMgY29udmVydGVkIHRvIGFuIG9jdGV0IHN0cmVhbSBieQorICogcGVyZm9ybWluZyBvcGVyYXRpb25zIGxvZ2ljYWxseSBlcXVpdmFsZW50IHRvIDEpIGFwcGx5aW5nIGFuIFhQYXRoCisgKiB0cmFuc2Zvcm0gd2l0aCBleHByZXNzaW9uIHNlbGY6OnRleHQoKSwgdGhlbiAyKSB0YWtpbmcgdGhlIHN0cmluZy12YWx1ZQorICogb2YgdGhlIG5vZGUtc2V0LiBUaHVzLCBpZiBhbiBYTUwgZWxlbWVudCBpcyBpZGVudGlmaWVkIGJ5IGEgYmFyZW5hbWUKKyAqIFhQb2ludGVyIGluIHRoZSBSZWZlcmVuY2UgVVJJLCBhbmQgaXRzIGNvbnRlbnQgY29uc2lzdHMgc29sZWx5IG9mIGJhc2U2NAorICogZW5jb2RlZCBjaGFyYWN0ZXIgZGF0YSwgdGhlbiB0aGlzIHRyYW5zZm9ybSBhdXRvbWF0aWNhbGx5IHN0cmlwcyBhd2F5IHRoZQorICogc3RhcnQgYW5kIGVuZCB0YWdzIG9mIHRoZSBpZGVudGlmaWVkIGVsZW1lbnQgYW5kIGFueSBvZiBpdHMgZGVzY2VuZGFudAorICogZWxlbWVudHMgYXMgd2VsbCBhcyBhbnkgZGVzY2VuZGFudCBjb21tZW50cyBhbmQgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMuCisgKiBUaGUgb3V0cHV0IG9mIHRoaXMgdHJhbnNmb3JtIGlzIGFuIG9jdGV0IHN0cmVhbS48L3A+CisgKgorICogQGF1dGhvciBDaHJpc3RpYW4gR2V1ZXItUG9sbG1hbm4KKyAqIEBzZWUgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQmFzZTY0CisgKi8KK3B1YmxpYyBjbGFzcyBUcmFuc2Zvcm1CYXNlNjREZWNvZGUgZXh0ZW5kcyBUcmFuc2Zvcm1TcGkgeworCisgICAvKiogRmllbGQgaW1wbGVtZW50ZWRUcmFuc2Zvcm1VUkkgKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGltcGxlbWVudGVkVHJhbnNmb3JtVVJJID0KKyAgICAgIFRyYW5zZm9ybXMuVFJBTlNGT1JNX0JBU0U2NF9ERUNPREU7CisKKyAgIC8qKgorICAgICogTWV0aG9kIGVuZ2luZUdldFVSSQorICAgICoKKyAgICAqIEBpbmhlcml0RG9jCisgICAgKi8KKyAgIHByb3RlY3RlZCBTdHJpbmcgZW5naW5lR2V0VVJJKCkgeworICAgICAgcmV0dXJuIFRyYW5zZm9ybUJhc2U2NERlY29kZS5pbXBsZW1lbnRlZFRyYW5zZm9ybVVSSTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lUGVyZm9ybVRyYW5zZm9ybQorICAgICoKKyAgICAqIEBwYXJhbSBpbnB1dAorICAgICogQHJldHVybiB7QGxpbmsgWE1MU2lnbmF0dXJlSW5wdXR9IGFzIHRoZSByZXN1bHQgb2YgdHJhbnNmb3JtYXRpb24KKyAgICAqIEBpbmhlcml0RG9jCisgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24KKyAgICAqLworICAgcHJvdGVjdGVkIFhNTFNpZ25hdHVyZUlucHV0IGVuZ2luZVBlcmZvcm1UcmFuc2Zvcm0KKwkoWE1MU2lnbmF0dXJlSW5wdXQgaW5wdXQsIFRyYW5zZm9ybSBfdHJhbnNmb3JtT2JqZWN0KQorICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24sIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbiB7CisgICAJcmV0dXJuIGVuZ2luZVBlcmZvcm1UcmFuc2Zvcm0oaW5wdXQsIG51bGwsIF90cmFuc2Zvcm1PYmplY3QpOworICAgfQorCisgICAgcHJvdGVjdGVkIFhNTFNpZ25hdHVyZUlucHV0IGVuZ2luZVBlcmZvcm1UcmFuc2Zvcm0oWE1MU2lnbmF0dXJlSW5wdXQgaW5wdXQsCisgICAgICAgICAgICBPdXRwdXRTdHJlYW0gb3MsIFRyYW5zZm9ybSBfdHJhbnNmb3JtT2JqZWN0KQorICAgIHRocm93cyBJT0V4Y2VwdGlvbiwgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiwKKyAgICAgICAgICAgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24geworCSB0cnkgeworICAgICAgaWYgKGlucHV0LmlzRWxlbWVudCgpKSB7CisgICAgICAgICBOb2RlIGVsPWlucHV0LmdldFN1Yk5vZGUoKTsKKyAgICAgICAgIGlmIChpbnB1dC5nZXRTdWJOb2RlKCkuZ2V0Tm9kZVR5cGUoKT09Tm9kZS5URVhUX05PREUpIHsgICAgICAgICAJCisgICAgICAgICAgICBlbD1lbC5nZXRQYXJlbnROb2RlKCk7CisgICAgICAgICB9CisgICAgICAgICBTdHJpbmdCdWZmZXIgc2I9bmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAgdHJhdmVyc2VFbGVtZW50KChFbGVtZW50KWVsLHNiKTsKKyAgICAgICAgIGlmIChvcz09bnVsbCkgeworICAgICAgICAgCWJ5dGVbXSBkZWNvZGVkQnl0ZXMgPSBCYXNlNjQuZGVjb2RlKHNiLnRvU3RyaW5nKCkpOyAgICAgICAgICAgIAorICAgICAgICAgCXJldHVybiBuZXcgWE1MU2lnbmF0dXJlSW5wdXQoZGVjb2RlZEJ5dGVzKTsKKyAgICAgICAgIH0gCisgICAgICAgICAJQmFzZTY0LmRlY29kZShzYi50b1N0cmluZygpLG9zKTsKKyAgICAgICAgICAgIFhNTFNpZ25hdHVyZUlucHV0IG91dHB1dD1uZXcgWE1MU2lnbmF0dXJlSW5wdXQoKGJ5dGVbXSludWxsKTsKKyAgICAgICAgICAgIG91dHB1dC5zZXRPdXRwdXRTdHJlYW0ob3MpOworICAgICAgICAgICAgcmV0dXJuIG91dHB1dDsKKyAgICAgICAgIAorICAgICAgfQorICAgICAgaWYgKGlucHV0LmlzT2N0ZXRTdHJlYW0oKSB8fCBpbnB1dC5pc05vZGVTZXQoKSkgeworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgCisgICAgICAgIGlmIChvcz09bnVsbCkgeworICAgICAgICAgICAgYnl0ZVtdIGJhc2U2NEJ5dGVzID0gaW5wdXQuZ2V0Qnl0ZXMoKTsKKyAgICAgICAgICAgIGJ5dGVbXSBkZWNvZGVkQnl0ZXMgPSBCYXNlNjQuZGVjb2RlKGJhc2U2NEJ5dGVzKTsgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiBuZXcgWE1MU2lnbmF0dXJlSW5wdXQoZGVjb2RlZEJ5dGVzKTsKKyAgICAgICAgIH0gCisgICAgICAgIGlmIChpbnB1dC5pc0J5dGVBcnJheSgpIHx8IGlucHV0LmlzTm9kZVNldCgpKSB7CisgICAgICAgICAgICAgICBCYXNlNjQuZGVjb2RlKGlucHV0LmdldEJ5dGVzKCksb3MpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQmFzZTY0LmRlY29kZShuZXcgQnVmZmVyZWRJbnB1dFN0cmVhbShpbnB1dC5nZXRPY3RldFN0cmVhbVJlYWwoKSkKKyAgICAgICAgICAgICAgICAgICAgLG9zKTsKKyAgICAgICAgfQorICAgICAgICAgICAgWE1MU2lnbmF0dXJlSW5wdXQgb3V0cHV0PW5ldyBYTUxTaWduYXR1cmVJbnB1dCgoYnl0ZVtdKW51bGwpOworICAgICAgICAgICAgb3V0cHV0LnNldE91dHB1dFN0cmVhbShvcyk7CisgICAgICAgICAgICByZXR1cm4gb3V0cHV0OworICAgICAgICAgCisgICAgICAgIAorICAgICAgfSAKKyAgICAgICAKKwkgdHJ5IHsKKyAgICAgICAgICAgIC8vRXhjZXB0aW9uYWwgY2FzZSB0aGVyZSBpcyBjdXJyZW50IG5vdCB0ZXh0IGNhc2UgdGVzdGluZyB0aGlzKEJlZm9yZSBpdCB3YXMgYQorCSAJICAgIC8vYSBjb21tb24gY2FzZSkuCisgICAgICAgICAgICBEb2N1bWVudCBkb2MgPQorICAgICAgICAgICAgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpLm5ld0RvY3VtZW50QnVpbGRlcigpLnBhcnNlKAorICAgICAgICAgICAgICAgICAgaW5wdXQuZ2V0T2N0ZXRTdHJlYW0oKSk7CisgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIEVsZW1lbnQgcm9vdE5vZGUgPSBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCk7CisgICAgICAgICAgICBTdHJpbmdCdWZmZXIgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICB0cmF2ZXJzZUVsZW1lbnQocm9vdE5vZGUsc2IpOworICAgICAgICAgICAgYnl0ZVtdIGRlY29kZWRCeXRlcyA9IEJhc2U2NC5kZWNvZGUoc2IudG9TdHJpbmcoKSk7CisJCQkKKyAgICAgICAgICAgIHJldHVybiBuZXcgWE1MU2lnbmF0dXJlSW5wdXQoZGVjb2RlZEJ5dGVzKTsKKwkJICB9IGNhdGNoIChQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIGUpIHsKKwkJCSAgdGhyb3cgbmV3IFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uKCJjMTRuLkNhbm9uaWNhbGl6ZXIuRXhjZXB0aW9uIixlKTsKKwkJICB9IGNhdGNoIChTQVhFeGNlcHRpb24gZSkgeworCQkJICB0aHJvdyBuZXcgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24oIlNBWCBleGNlcHRpb24iLCBlKTsKKwkJICB9ICAgICAgCisJfSBjYXRjaCAoQmFzZTY0RGVjb2RpbmdFeGNlcHRpb24gZSkgeworICAgICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24oIkJhc2U2NERlY29kaW5nIiwgZSk7CisJfQorICAgfQorCisgICB2b2lkIHRyYXZlcnNlRWxlbWVudChvcmcudzNjLmRvbS5FbGVtZW50IG5vZGUsU3RyaW5nQnVmZmVyIHNiKSB7CisgICAJICAgIE5vZGUgc2libGluZz1ub2RlLmdldEZpcnN0Q2hpbGQoKTsKKyAgICAgICAgd2hpbGUgKHNpYmxpbmchPW51bGwpIHsKKyAgICAgICAgCXN3aXRjaCAoc2libGluZy5nZXROb2RlVHlwZSgpKSB7CisgICAgICAgIAkJY2FzZSBOb2RlLkVMRU1FTlRfTk9ERToKKyAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2VFbGVtZW50KChFbGVtZW50KXNpYmxpbmcsc2IpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgIGNhc2UgTm9kZS5URVhUX05PREU6CisgICAgICAgICAgICAgICAJICAgIHNiLmFwcGVuZCgoKFRleHQpc2libGluZykuZ2V0RGF0YSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNpYmxpbmc9c2libGluZy5nZXROZXh0U2libGluZygpOworICAgICAgICB9CisgICB9ICAKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL2ltcGxlbWVudGF0aW9ucy9UcmFuc2Zvcm1DMTROLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9pbXBsZW1lbnRhdGlvbnMvVHJhbnNmb3JtQzE0Ti5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5NDliZDIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9pbXBsZW1lbnRhdGlvbnMvVHJhbnNmb3JtQzE0Ti5qYXZhCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuaW1wbGVtZW50YXRpb25zOworCitpbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkNhbm9uaWNhbGl6YXRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5pbXBsZW1lbnRhdGlvbnMuQ2Fub25pY2FsaXplcjIwMDEwMzE1T21pdENvbW1lbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmVJbnB1dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybVNwaTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybXM7CisKKy8qKgorICogSW1wbGVtZW50cyB0aGUgPENPREU+aHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTU8L0NPREU+CisgKiB0cmFuc2Zvcm0uCisgKgorICogQGF1dGhvciBDaHJpc3RpYW4gR2V1ZXItUG9sbG1hbm4KKyAqLworcHVibGljIGNsYXNzIFRyYW5zZm9ybUMxNE4gZXh0ZW5kcyBUcmFuc2Zvcm1TcGkgeworCisgICAvKiogRmllbGQgaW1wbGVtZW50ZWRUcmFuc2Zvcm1VUkkgKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGltcGxlbWVudGVkVHJhbnNmb3JtVVJJID0KKyAgICAgIFRyYW5zZm9ybXMuVFJBTlNGT1JNX0MxNE5fT01JVF9DT01NRU5UUzsKKworCisgICAvKioKKyAgICAqIEBpbmhlcml0RG9jIAorICAgICovCisgICBwcm90ZWN0ZWQgU3RyaW5nIGVuZ2luZUdldFVSSSgpIHsKKyAgICAgIHJldHVybiBUcmFuc2Zvcm1DMTROLmltcGxlbWVudGVkVHJhbnNmb3JtVVJJOworICAgfQorCisgICAvKioKKyAgICAqICBAaW5oZXJpdERvYyAKKyAgICAqLworICAgcHJvdGVjdGVkIFhNTFNpZ25hdHVyZUlucHV0IGVuZ2luZVBlcmZvcm1UcmFuc2Zvcm0KKwkoWE1MU2lnbmF0dXJlSW5wdXQgaW5wdXQsIFRyYW5zZm9ybSBfdHJhbnNmb3JtT2JqZWN0KQorICAgICAgICAgICB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAJICAgIHJldHVybiBlbmdpbmVQZXJmb3JtVHJhbnNmb3JtKGlucHV0LCBudWxsLCBfdHJhbnNmb3JtT2JqZWN0KTsKKyAgIH0KKworICAgIHByb3RlY3RlZCBYTUxTaWduYXR1cmVJbnB1dCBlbmdpbmVQZXJmb3JtVHJhbnNmb3JtKFhNTFNpZ25hdHVyZUlucHV0IGlucHV0LE91dHB1dFN0cmVhbSBvcywgVHJhbnNmb3JtIF90cmFuc2Zvcm1PYmplY3QpCisgICAgdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24geyAgIAorICAgICAgICAgQ2Fub25pY2FsaXplcjIwMDEwMzE1T21pdENvbW1lbnRzIGMxNG4gPSBuZXcgQ2Fub25pY2FsaXplcjIwMDEwMzE1T21pdENvbW1lbnRzKCk7CisgICAgICAgICBpZiAob3MhPW51bGwpIHsKKyAgICAgICAgIAljMTRuLnNldFdyaXRlcihvcyk7CisgICAgICAgICB9CisgICAgICAgICBieXRlW10gcmVzdWx0ID0gbnVsbDsgICAgICAgICAgICAgICAgCisgICAgICAgICByZXN1bHQ9YzE0bi5lbmdpbmVDYW5vbmljYWxpemUoaW5wdXQpOyAgICAgICAgIAkJICAgICAgICAgCSAgICAgICAgIAorICAgICAgICAgWE1MU2lnbmF0dXJlSW5wdXQgb3V0cHV0PW5ldyBYTUxTaWduYXR1cmVJbnB1dChyZXN1bHQpOworICAgICAgICAgaWYgKG9zIT1udWxsKSB7CisgICAgICAgICAgICBvdXRwdXQuc2V0T3V0cHV0U3RyZWFtKG9zKTsKKyAgICAgICAgIH0KKyAgICAgICAgIHJldHVybiBvdXRwdXQ7ICAgICAKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL2ltcGxlbWVudGF0aW9ucy9UcmFuc2Zvcm1DMTROMTEuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL2ltcGxlbWVudGF0aW9ucy9UcmFuc2Zvcm1DMTROMTEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDYxN2NlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RyYW5zZm9ybXMvaW1wbGVtZW50YXRpb25zL1RyYW5zZm9ybUMxNE4xMS5qYXZhCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuaW1wbGVtZW50YXRpb25zOworCitpbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkNhbm9uaWNhbGl6YXRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5pbXBsZW1lbnRhdGlvbnMuQ2Fub25pY2FsaXplcjExX09taXRDb21tZW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlSW5wdXQ7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm07CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1TcGk7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1zOworCisvKioKKyAqIEltcGxlbWVudHMgdGhlIDxDT0RFPmh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMTwvQ09ERT4KKyAqIChDMTROIDEuMSkgdHJhbnNmb3JtLgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqLworcHVibGljIGNsYXNzIFRyYW5zZm9ybUMxNE4xMSBleHRlbmRzIFRyYW5zZm9ybVNwaSB7CisKKyAgICBwcm90ZWN0ZWQgU3RyaW5nIGVuZ2luZUdldFVSSSgpIHsKKwlyZXR1cm4gVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fQzE0TjExX09NSVRfQ09NTUVOVFM7CisgICAgfQorCisgICAgcHJvdGVjdGVkIFhNTFNpZ25hdHVyZUlucHV0IGVuZ2luZVBlcmZvcm1UcmFuc2Zvcm0KKwkoWE1MU2lnbmF0dXJlSW5wdXQgaW5wdXQsIFRyYW5zZm9ybSB0cmFuc2Zvcm0pCisJdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24geworCXJldHVybiBlbmdpbmVQZXJmb3JtVHJhbnNmb3JtKGlucHV0LCBudWxsLCB0cmFuc2Zvcm0pOworICAgIH0KKworICAgIHByb3RlY3RlZCBYTUxTaWduYXR1cmVJbnB1dCBlbmdpbmVQZXJmb3JtVHJhbnNmb3JtCisJKFhNTFNpZ25hdHVyZUlucHV0IGlucHV0LCBPdXRwdXRTdHJlYW0gb3MsIFRyYW5zZm9ybSB0cmFuc2Zvcm0pCisJdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24geyAgIAorICAgICAgICBDYW5vbmljYWxpemVyMTFfT21pdENvbW1lbnRzIGMxNG4gPSBuZXcgQ2Fub25pY2FsaXplcjExX09taXRDb21tZW50cygpOworICAgICAgICBpZiAob3MgIT0gbnVsbCkgeworICAgICAgIAkgICAgYzE0bi5zZXRXcml0ZXIob3MpOworICAgICAgICB9CisgICAgICAgIGJ5dGVbXSByZXN1bHQgPSBudWxsOyAgICAgICAgICAgICAgICAKKyAgICAgICAgcmVzdWx0ID0gYzE0bi5lbmdpbmVDYW5vbmljYWxpemUoaW5wdXQpOyAgICAgICAgIAkJICAgICAgICAgCSAgICAgICAgIAorICAgICAgICBYTUxTaWduYXR1cmVJbnB1dCBvdXRwdXQgPSBuZXcgWE1MU2lnbmF0dXJlSW5wdXQocmVzdWx0KTsKKyAgICAgICAgaWYgKG9zICE9IG51bGwpIHsKKyAgICAgICAgICAgIG91dHB1dC5zZXRPdXRwdXRTdHJlYW0ob3MpOworICAgICAgICB9CisJcmV0dXJuIG91dHB1dDsgICAgIAorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL2ltcGxlbWVudGF0aW9ucy9UcmFuc2Zvcm1DMTROMTFfV2l0aENvbW1lbnRzLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9pbXBsZW1lbnRhdGlvbnMvVHJhbnNmb3JtQzE0TjExX1dpdGhDb21tZW50cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwYmEzMjIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9pbXBsZW1lbnRhdGlvbnMvVHJhbnNmb3JtQzE0TjExX1dpdGhDb21tZW50cy5qYXZhCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuaW1wbGVtZW50YXRpb25zOworCitpbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkNhbm9uaWNhbGl6YXRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5pbXBsZW1lbnRhdGlvbnMuQ2Fub25pY2FsaXplcjExX1dpdGhDb21tZW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlSW5wdXQ7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm07CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1TcGk7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1zOworCisvKioKKyAqIEltcGxlbWVudHMgdGhlIDxDT0RFPmh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4tMTEjV2l0aENvbW1lbnRzPC9DT0RFPgorICogKEMxNE4gMS4xIFdpdGggQ29tbWVudHMpIHRyYW5zZm9ybS4KKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKi8KK3B1YmxpYyBjbGFzcyBUcmFuc2Zvcm1DMTROMTFfV2l0aENvbW1lbnRzIGV4dGVuZHMgVHJhbnNmb3JtU3BpIHsKKworICAgIHByb3RlY3RlZCBTdHJpbmcgZW5naW5lR2V0VVJJKCkgeworCXJldHVybiBUcmFuc2Zvcm1zLlRSQU5TRk9STV9DMTROMTFfV0lUSF9DT01NRU5UUzsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgWE1MU2lnbmF0dXJlSW5wdXQgZW5naW5lUGVyZm9ybVRyYW5zZm9ybQorCShYTUxTaWduYXR1cmVJbnB1dCBpbnB1dCwgVHJhbnNmb3JtIHRyYW5zZm9ybSkKKyAgIAl0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiB7CisJcmV0dXJuIGVuZ2luZVBlcmZvcm1UcmFuc2Zvcm0oaW5wdXQsIG51bGwsIHRyYW5zZm9ybSk7CisgICAgfQorCisgICAgcHJvdGVjdGVkIFhNTFNpZ25hdHVyZUlucHV0IGVuZ2luZVBlcmZvcm1UcmFuc2Zvcm0KKwkoWE1MU2lnbmF0dXJlSW5wdXQgaW5wdXQsIE91dHB1dFN0cmVhbSBvcywgVHJhbnNmb3JtIHRyYW5zZm9ybSkKKwl0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAgICAKKyAgICAgICAgQ2Fub25pY2FsaXplcjExX1dpdGhDb21tZW50cyBjMTRuID0gbmV3IENhbm9uaWNhbGl6ZXIxMV9XaXRoQ29tbWVudHMoKTsKKyAgICAgICAgaWYgKG9zICE9IG51bGwpIHsKKwkgICAgYzE0bi5zZXRXcml0ZXIob3MpOworICAgICAgICB9CisgICAgICAgIAorCWJ5dGVbXSByZXN1bHQgPSBudWxsOworICAgICAgICByZXN1bHQgPSBjMTRuLmVuZ2luZUNhbm9uaWNhbGl6ZShpbnB1dCk7ICAgICAgICAgCQkgICAgICAgICAJICAgICAgICAgCisgICAgICAgIFhNTFNpZ25hdHVyZUlucHV0IG91dHB1dCA9IG5ldyBYTUxTaWduYXR1cmVJbnB1dChyZXN1bHQpOyAgICAgICAgIAorICAgICAgICBpZiAob3MgIT0gbnVsbCkgeworCSAgICBvdXRwdXQuc2V0T3V0cHV0U3RyZWFtKG9zKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gb3V0cHV0OyAgICAgIAorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL2ltcGxlbWVudGF0aW9ucy9UcmFuc2Zvcm1DMTRORXhjbHVzaXZlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9pbXBsZW1lbnRhdGlvbnMvVHJhbnNmb3JtQzE0TkV4Y2x1c2l2ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyZGU5M2YKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9pbXBsZW1lbnRhdGlvbnMvVHJhbnNmb3JtQzE0TkV4Y2x1c2l2ZS5qYXZhCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLmltcGxlbWVudGF0aW9uczsKKworaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5DYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uaW1wbGVtZW50YXRpb25zLkNhbm9uaWNhbGl6ZXIyMDAxMDMxNUV4Y2xPbWl0Q29tbWVudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlSW5wdXQ7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm07CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1TcGk7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1zOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMucGFyYW1zLkluY2x1c2l2ZU5hbWVzcGFjZXM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworLyoqCisgKiBDbGFzcyBUcmFuc2Zvcm1DMTRORXhjbHVzaXZlCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICogQHZlcnNpb24gJFJldmlzaW9uJAorICovCitwdWJsaWMgY2xhc3MgVHJhbnNmb3JtQzE0TkV4Y2x1c2l2ZSBleHRlbmRzIFRyYW5zZm9ybVNwaSB7CisKKyAgIC8qKiBGaWVsZCBpbXBsZW1lbnRlZFRyYW5zZm9ybVVSSSAqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgaW1wbGVtZW50ZWRUcmFuc2Zvcm1VUkkgPQorICAgICAgVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fQzE0Tl9FWENMX09NSVRfQ09NTUVOVFM7CisKKyAgIC8qKgorICAgICogTWV0aG9kIGVuZ2luZUdldFVSSQorICAgICoKKyAgICAqIEBpbmhlcml0RG9jIAorICAgICovCisgICBwcm90ZWN0ZWQgU3RyaW5nIGVuZ2luZUdldFVSSSgpIHsKKyAgICAgIHJldHVybiBpbXBsZW1lbnRlZFRyYW5zZm9ybVVSSTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lUGVyZm9ybVRyYW5zZm9ybQorICAgICoKKyAgICAqIEBwYXJhbSBpbnB1dAorICAgICogQHJldHVybiB0aGUgdHJhbnNmb3JtZWQgb2YgdGhlIGlucHV0CisgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAqLworICAgcHJvdGVjdGVkIFhNTFNpZ25hdHVyZUlucHV0IGVuZ2luZVBlcmZvcm1UcmFuc2Zvcm0KKwkoWE1MU2lnbmF0dXJlSW5wdXQgaW5wdXQsIFRyYW5zZm9ybSBfdHJhbnNmb3JtT2JqZWN0KQorICAgICAgICAgICB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiB7CisgICAJICAgIHJldHVybiBlbmdpbmVQZXJmb3JtVHJhbnNmb3JtKGlucHV0LCBudWxsLCBfdHJhbnNmb3JtT2JqZWN0KTsKKyAgIH0KKworICAgIHByb3RlY3RlZCBYTUxTaWduYXR1cmVJbnB1dCBlbmdpbmVQZXJmb3JtVHJhbnNmb3JtKFhNTFNpZ25hdHVyZUlucHV0IGlucHV0LE91dHB1dFN0cmVhbSBvcywgVHJhbnNmb3JtIF90cmFuc2Zvcm1PYmplY3QpCisgICAgdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24geworICAgICAgdHJ5IHsKKyAgICAgICAgIFN0cmluZyBpbmNsdXNpdmVOYW1lc3BhY2VzID0gbnVsbDsKKworICAgICAgICAgaWYgKF90cmFuc2Zvcm1PYmplY3QKKyAgICAgICAgICAgICAgICAgLmxlbmd0aChJbmNsdXNpdmVOYW1lc3BhY2VzCisgICAgICAgICAgICAgICAgICAgIC5FeGNsdXNpdmVDYW5vbmljYWxpemF0aW9uTmFtZXNwYWNlLCBJbmNsdXNpdmVOYW1lc3BhY2VzCisgICAgICAgICAgICAgICAgICAgIC5fVEFHX0VDX0lOQ0xVU0lWRU5BTUVTUEFDRVMpID09IDEpIHsKKyAgICAgICAgICAgIEVsZW1lbnQgaW5jbHVzaXZlRWxlbWVudCA9CisgICAgICAgICAgICAgICAgWE1MVXRpbHMuc2VsZWN0Tm9kZSgKKyAgICAgICAgICAgICAgIF90cmFuc2Zvcm1PYmplY3QuZ2V0RWxlbWVudCgpLmdldEZpcnN0Q2hpbGQoKSwKKyAgICAgICAgICAgICAgICAgIEluY2x1c2l2ZU5hbWVzcGFjZXMuRXhjbHVzaXZlQ2Fub25pY2FsaXphdGlvbk5hbWVzcGFjZSwKKyAgICAgICAgICAgICAgICAgIEluY2x1c2l2ZU5hbWVzcGFjZXMuX1RBR19FQ19JTkNMVVNJVkVOQU1FU1BBQ0VTLDApOworCisgICAgICAgICAgICBpbmNsdXNpdmVOYW1lc3BhY2VzID0gbmV3IEluY2x1c2l2ZU5hbWVzcGFjZXMoaW5jbHVzaXZlRWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgX3RyYW5zZm9ybU9iamVjdC5nZXRCYXNlVVJJKCkpLmdldEluY2x1c2l2ZU5hbWVzcGFjZXMoKTsKKyAgICAgICAgIH0KKworICAgICAgICAgQ2Fub25pY2FsaXplcjIwMDEwMzE1RXhjbE9taXRDb21tZW50cyBjMTRuID0KKyAgICAgICAgICAgIG5ldyBDYW5vbmljYWxpemVyMjAwMTAzMTVFeGNsT21pdENvbW1lbnRzKCk7CisgICAgICAgICBpZiAob3MhPW51bGwpIHsKKyAgICAgICAgICAgIGMxNG4uc2V0V3JpdGVyKG9zKTsKKyAgICAgICAgIH0KKyAgICAgICAgIGJ5dGUgW11yZXN1bHQ7CisgICAgICAgICByZXN1bHQgPWMxNG4uZW5naW5lQ2Fub25pY2FsaXplKGlucHV0LCBpbmNsdXNpdmVOYW1lc3BhY2VzKTsKKyAgICAgICAgICAgICAgCisgICAgICAgICBYTUxTaWduYXR1cmVJbnB1dCBvdXRwdXQ9bmV3IFhNTFNpZ25hdHVyZUlucHV0KHJlc3VsdCk7CisgICAgICAgICBpZiAob3MhPW51bGwpIHsKKyAgICAgICAgICAgIG91dHB1dC5zZXRPdXRwdXRTdHJlYW0ob3MpOworICAgICAgICAgfQorICAgICAgICAgcmV0dXJuIG91dHB1dDsgICAgICAKKyAgICAgIH0gY2F0Y2ggKFhNTFNlY3VyaXR5RXhjZXB0aW9uIGV4KSB7CisgICAgICAgICB0aHJvdyBuZXcgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICB9IAorICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RyYW5zZm9ybXMvaW1wbGVtZW50YXRpb25zL1RyYW5zZm9ybUMxNE5FeGNsdXNpdmVXaXRoQ29tbWVudHMuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL2ltcGxlbWVudGF0aW9ucy9UcmFuc2Zvcm1DMTRORXhjbHVzaXZlV2l0aENvbW1lbnRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNmM2UyYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL2ltcGxlbWVudGF0aW9ucy9UcmFuc2Zvcm1DMTRORXhjbHVzaXZlV2l0aENvbW1lbnRzLmphdmEKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5pbXBsZW1lbnRhdGlvbnM7CisKK2ltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLmltcGxlbWVudGF0aW9ucy5DYW5vbmljYWxpemVyMjAwMTAzMTVFeGNsV2l0aENvbW1lbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmV4Y2VwdGlvbnMuWE1MU2VjdXJpdHlFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZUlucHV0OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtU3BpOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLnBhcmFtcy5JbmNsdXNpdmVOYW1lc3BhY2VzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CisKKy8qKgorICogSW1wbGVtZW50cyB0aGUgPENPREU+aHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUjV2l0aENvbW1lbnRzPC9DT0RFPgorICogdHJhbnNmb3JtLgorICoKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEdldWVyLVBvbGxtYW5uCisgKi8KK3B1YmxpYyBjbGFzcyBUcmFuc2Zvcm1DMTRORXhjbHVzaXZlV2l0aENvbW1lbnRzIGV4dGVuZHMgVHJhbnNmb3JtU3BpIHsKKworICAgLyoqIEZpZWxkIGltcGxlbWVudGVkVHJhbnNmb3JtVVJJICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBpbXBsZW1lbnRlZFRyYW5zZm9ybVVSSSA9CisgICAgICBUcmFuc2Zvcm1zLlRSQU5TRk9STV9DMTROX0VYQ0xfV0lUSF9DT01NRU5UUzsKKworICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lR2V0VVJJCisgICAgKkBpbmhlcml0RG9jIAorICAgICoKKyAgICAqLworICAgcHJvdGVjdGVkIFN0cmluZyBlbmdpbmVHZXRVUkkoKSB7CisgICAgICByZXR1cm4gaW1wbGVtZW50ZWRUcmFuc2Zvcm1VUkk7CisgICB9CisKKyAgIC8qKgorICAgICogQGluaGVyaXREb2MgCisgICAgKi8KKyAgIHByb3RlY3RlZCBYTUxTaWduYXR1cmVJbnB1dCBlbmdpbmVQZXJmb3JtVHJhbnNmb3JtCisJKFhNTFNpZ25hdHVyZUlucHV0IGlucHV0LCBUcmFuc2Zvcm0gX3RyYW5zZm9ybU9iamVjdCkKKyAgICAgICAgICAgdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24geworICAgCSAgICByZXR1cm4gZW5naW5lUGVyZm9ybVRyYW5zZm9ybShpbnB1dCwgbnVsbCwgX3RyYW5zZm9ybU9iamVjdCk7CisgICB9CisKKyAgICBwcm90ZWN0ZWQgWE1MU2lnbmF0dXJlSW5wdXQgZW5naW5lUGVyZm9ybVRyYW5zZm9ybShYTUxTaWduYXR1cmVJbnB1dCBpbnB1dCxPdXRwdXRTdHJlYW0gb3MsIFRyYW5zZm9ybSBfdHJhbnNmb3JtT2JqZWN0KQorICAgIHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uIHsKKyAgICAgdHJ5IHsKKyAgICAgICAgU3RyaW5nIGluY2x1c2l2ZU5hbWVzcGFjZXMgPSBudWxsOworCisgICAgICAgIGlmIChfdHJhbnNmb3JtT2JqZWN0CisgICAgICAgICAgICAgICAgLmxlbmd0aChJbmNsdXNpdmVOYW1lc3BhY2VzCisgICAgICAgICAgICAgICAgICAgLkV4Y2x1c2l2ZUNhbm9uaWNhbGl6YXRpb25OYW1lc3BhY2UsIEluY2x1c2l2ZU5hbWVzcGFjZXMKKyAgICAgICAgICAgICAgICAgICAuX1RBR19FQ19JTkNMVVNJVkVOQU1FU1BBQ0VTKSA9PSAxKSB7CisgICAgICAgICAgIEVsZW1lbnQgaW5jbHVzaXZlRWxlbWVudCA9CisgICAgICAgICAgICAgICBYTUxVdGlscy5zZWxlY3ROb2RlKAorICAgICAgICAgICAgICBfdHJhbnNmb3JtT2JqZWN0LmdldEVsZW1lbnQoKS5nZXRGaXJzdENoaWxkKCksCisgICAgICAgICAgICAgICAgIEluY2x1c2l2ZU5hbWVzcGFjZXMuRXhjbHVzaXZlQ2Fub25pY2FsaXphdGlvbk5hbWVzcGFjZSwKKyAgICAgICAgICAgICAgICAgSW5jbHVzaXZlTmFtZXNwYWNlcy5fVEFHX0VDX0lOQ0xVU0lWRU5BTUVTUEFDRVMsMCk7CisKKyAgICAgICAgICAgaW5jbHVzaXZlTmFtZXNwYWNlcyA9IG5ldyBJbmNsdXNpdmVOYW1lc3BhY2VzKGluY2x1c2l2ZUVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgX3RyYW5zZm9ybU9iamVjdC5nZXRCYXNlVVJJKCkpLmdldEluY2x1c2l2ZU5hbWVzcGFjZXMoKTsKKyAgICAgICAgfQorCisgICAgICAgIENhbm9uaWNhbGl6ZXIyMDAxMDMxNUV4Y2xXaXRoQ29tbWVudHMgYzE0biA9CisgICAgICAgICAgICBuZXcgQ2Fub25pY2FsaXplcjIwMDEwMzE1RXhjbFdpdGhDb21tZW50cygpOyAgICAgICAgCisgICAgICAgIGlmIChvcyE9bnVsbCkgeworICAgICAgICAgICBjMTRuLnNldFdyaXRlciggb3MpOworICAgICAgICB9CisgICAgICAgIGJ5dGUgW11yZXN1bHQ7ICAKKyAgICAgICAgcmVzdWx0ID1jMTRuLmVuZ2luZUNhbm9uaWNhbGl6ZShpbnB1dCwgaW5jbHVzaXZlTmFtZXNwYWNlcyk7CisgICAgICAgIFhNTFNpZ25hdHVyZUlucHV0IG91dHB1dD1uZXcgWE1MU2lnbmF0dXJlSW5wdXQocmVzdWx0KTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBvdXRwdXQ7CisgICAgIH0gY2F0Y2ggKFhNTFNlY3VyaXR5RXhjZXB0aW9uIGV4KSB7CisgICAgICAgIHRocm93IG5ldyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgfSAKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL2ltcGxlbWVudGF0aW9ucy9UcmFuc2Zvcm1DMTROV2l0aENvbW1lbnRzLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9pbXBsZW1lbnRhdGlvbnMvVHJhbnNmb3JtQzE0TldpdGhDb21tZW50cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ZGViODEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9pbXBsZW1lbnRhdGlvbnMvVHJhbnNmb3JtQzE0TldpdGhDb21tZW50cy5qYXZhCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuaW1wbGVtZW50YXRpb25zOworCitpbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkNhbm9uaWNhbGl6YXRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5pbXBsZW1lbnRhdGlvbnMuQ2Fub25pY2FsaXplcjIwMDEwMzE1V2l0aENvbW1lbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmVJbnB1dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybVNwaTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybXM7CisKKy8qKgorICogSW1wbGVtZW50cyB0aGUgPENPREU+aHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUjV2l0aENvbW1lbnRzPC9DT0RFPgorICogdHJhbnNmb3JtLgorICoKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEdldWVyLVBvbGxtYW5uCisgKi8KK3B1YmxpYyBjbGFzcyBUcmFuc2Zvcm1DMTROV2l0aENvbW1lbnRzIGV4dGVuZHMgVHJhbnNmb3JtU3BpIHsKKworICAgLyoqIEZpZWxkIGltcGxlbWVudGVkVHJhbnNmb3JtVVJJICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBpbXBsZW1lbnRlZFRyYW5zZm9ybVVSSSA9CisgICAgICBUcmFuc2Zvcm1zLlRSQU5TRk9STV9DMTROX1dJVEhfQ09NTUVOVFM7CisKKyAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgcHJvdGVjdGVkIFN0cmluZyBlbmdpbmVHZXRVUkkoKSB7CisgICAgICByZXR1cm4gaW1wbGVtZW50ZWRUcmFuc2Zvcm1VUkk7CisgICB9CisKKyAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgcHJvdGVjdGVkIFhNTFNpZ25hdHVyZUlucHV0IGVuZ2luZVBlcmZvcm1UcmFuc2Zvcm0KKwkoWE1MU2lnbmF0dXJlSW5wdXQgaW5wdXQsIFRyYW5zZm9ybSBfdHJhbnNmb3JtT2JqZWN0KQorICAgCXRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uIHsKKyAgIAkgICAgcmV0dXJuIGVuZ2luZVBlcmZvcm1UcmFuc2Zvcm0oaW5wdXQsIG51bGwsIF90cmFuc2Zvcm1PYmplY3QpOworICAgfQorCisgICAvKiogQGluaGVyaXREb2MgKi8KKyAgIHByb3RlY3RlZCBYTUxTaWduYXR1cmVJbnB1dCBlbmdpbmVQZXJmb3JtVHJhbnNmb3JtKFhNTFNpZ25hdHVyZUlucHV0IGlucHV0LE91dHB1dFN0cmVhbSBvcywgVHJhbnNmb3JtIF90cmFuc2Zvcm1PYmplY3QpCisgICAgICAgICAgIHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uIHsKKyAgICAgIAorICAgICAgICBDYW5vbmljYWxpemVyMjAwMTAzMTVXaXRoQ29tbWVudHMgYzE0biA9IG5ldyBDYW5vbmljYWxpemVyMjAwMTAzMTVXaXRoQ29tbWVudHMoKTsKKyAgICAgICAgaWYgKG9zIT1udWxsKSB7CisgICAgICAgIAljMTRuLnNldFdyaXRlciggb3MpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAgYnl0ZVtdIHJlc3VsdCA9IG51bGw7CisgICAgICAgICByZXN1bHQ9YzE0bi5lbmdpbmVDYW5vbmljYWxpemUoaW5wdXQpOyAgICAgICAgIAkJICAgICAgICAgCSAgICAgICAgIAorICAgICAgICAgWE1MU2lnbmF0dXJlSW5wdXQgb3V0cHV0PW5ldyBYTUxTaWduYXR1cmVJbnB1dChyZXN1bHQpOyAgICAgICAgIAorICAgICAgICAgaWYgKG9zIT1udWxsKSB7CisgICAgICAgICAJb3V0cHV0LnNldE91dHB1dFN0cmVhbShvcyk7CisgICAgICAgICB9CisgICAgICAgICByZXR1cm4gb3V0cHV0OyAgICAgIAorICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RyYW5zZm9ybXMvaW1wbGVtZW50YXRpb25zL1RyYW5zZm9ybUVudmVsb3BlZFNpZ25hdHVyZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RyYW5zZm9ybXMvaW1wbGVtZW50YXRpb25zL1RyYW5zZm9ybUVudmVsb3BlZFNpZ25hdHVyZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1NWYyMjIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9pbXBsZW1lbnRhdGlvbnMvVHJhbnNmb3JtRW52ZWxvcGVkU2lnbmF0dXJlLmphdmEKQEAgLTAsMCArMSwxMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuaW1wbGVtZW50YXRpb25zOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLk5vZGVGaWx0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZUlucHV0OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtU3BpOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtYXRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1zOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5YTUxVdGlsczsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CisKKy8qKgorICogSW1wbGVtZW50cyB0aGUgPENPREU+aHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmU8L0NPREU+CisgKiB0cmFuc2Zvcm0uCisgKgorICogQGF1dGhvciBDaHJpc3RpYW4gR2V1ZXItUG9sbG1hbm4KKyAqLworcHVibGljIGNsYXNzIFRyYW5zZm9ybUVudmVsb3BlZFNpZ25hdHVyZSBleHRlbmRzIFRyYW5zZm9ybVNwaSB7CisKKyAgIC8qKiBGaWVsZCBpbXBsZW1lbnRlZFRyYW5zZm9ybVVSSSAqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgaW1wbGVtZW50ZWRUcmFuc2Zvcm1VUkkgPQorICAgICAgVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fRU5WRUxPUEVEX1NJR05BVFVSRTsKKworICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lR2V0VVJJCisgICAgKgorICAgICogQGluaGVyaXREb2MKKyAgICAqLworICAgcHJvdGVjdGVkIFN0cmluZyBlbmdpbmVHZXRVUkkoKSB7CisgICAgICByZXR1cm4gaW1wbGVtZW50ZWRUcmFuc2Zvcm1VUkk7CisgICB9CisKKyAgICAvKioKKyAgICAgKiBAaW5oZXJpdERvYworICAgICAqLworICAgIHByb3RlY3RlZCBYTUxTaWduYXR1cmVJbnB1dCBlbmdpbmVQZXJmb3JtVHJhbnNmb3JtKFhNTFNpZ25hdHVyZUlucHV0IGlucHV0LCAKKyAgICAgICAgVHJhbnNmb3JtIF90cmFuc2Zvcm1PYmplY3QpIHRocm93cyBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbiB7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIElmIHRoZSBhY3R1YWwgaW5wdXQgaXMgYW4gb2N0ZXQgc3RyZWFtLCB0aGVuIHRoZSBhcHBsaWNhdGlvbiBNVVNUCisgICAgICAgICAqIGNvbnZlcnQgdGhlIG9jdGV0IHN0cmVhbSB0byBhbiBYUGF0aCBub2RlLXNldCBzdWl0YWJsZSBmb3IgdXNlIGJ5CisgICAgICAgICAqIENhbm9uaWNhbCBYTUwgd2l0aCBDb21tZW50cy4gKEEgc3Vic2VxdWVudCBhcHBsaWNhdGlvbiBvZiB0aGUKKyAgICAgICAgICogUkVRVUlSRUQgQ2Fub25pY2FsIFhNTCBhbGdvcml0aG0gd291bGQgc3RyaXAgYXdheSB0aGVzZSBjb21tZW50cy4pCisgICAgICAgICAqCisgICAgICAgICAqIC4uLgorICAgICAgICAgKgorICAgICAgICAgKiBUaGUgZXZhbHVhdGlvbiBvZiB0aGlzIGV4cHJlc3Npb24gaW5jbHVkZXMgYWxsIG9mIHRoZSBkb2N1bWVudCdzIG5vZGVzCisgICAgICAgICAqIChpbmNsdWRpbmcgY29tbWVudHMpIGluIHRoZSBub2RlLXNldCByZXByZXNlbnRpbmcgdGhlIG9jdGV0IHN0cmVhbS4KKyAgICAgICAgICovCisgICAgICAgICAgICAgICAgIAorICAgICAgICBOb2RlIHNpZ25hdHVyZUVsZW1lbnQgPSBfdHJhbnNmb3JtT2JqZWN0LmdldEVsZW1lbnQoKTsKKworICAgICAgICBzaWduYXR1cmVFbGVtZW50ID0gc2VhcmNoU2lnbmF0dXJlRWxlbWVudChzaWduYXR1cmVFbGVtZW50KTsgICAgICAgIAorICAgICAgIAlpbnB1dC5zZXRFeGNsdWRlTm9kZShzaWduYXR1cmVFbGVtZW50KTsgICAKKyAgICAgICAJaW5wdXQuYWRkTm9kZUZpbHRlcihuZXcgRW52ZWxvcGVkTm9kZUZpbHRlcihzaWduYXR1cmVFbGVtZW50KSk7CisgICAgICAgCXJldHVybiBpbnB1dDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gc2lnbmF0dXJlRWxlbWVudCAgICAKKyAgICAgKiBAcmV0dXJuIHRoZSBub2RlIHRoYXQgaXMgdGhlIHNpZ25hdHVyZQorICAgICAqIEB0aHJvd3MgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBOb2RlIHNlYXJjaFNpZ25hdHVyZUVsZW1lbnQoTm9kZSBzaWduYXR1cmVFbGVtZW50KSAKKyAgICAgICAgdGhyb3dzIFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgYm9vbGVhbiBmb3VuZCA9IGZhbHNlOworICAgICAgICAKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKwkgICAgaWYgKHNpZ25hdHVyZUVsZW1lbnQgPT0gbnVsbAorICAgICAgICAgICAgICAgIHx8IHNpZ25hdHVyZUVsZW1lbnQuZ2V0Tm9kZVR5cGUoKSA9PSBOb2RlLkRPQ1VNRU5UX05PREUpIHsKKyAgICAJCWJyZWFrOworICAgIAkgICAgfQorCSAgICBFbGVtZW50IGVsID0gKEVsZW1lbnQpIHNpZ25hdHVyZUVsZW1lbnQ7CisgICAgCSAgICBpZiAoZWwuZ2V0TmFtZXNwYWNlVVJJKCkuZXF1YWxzKENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMpCisgICAgICAgICAgICAgICAgJiYgZWwuZ2V0TG9jYWxOYW1lKCkuZXF1YWxzKENvbnN0YW50cy5fVEFHX1NJR05BVFVSRSkpIHsKKyAgICAJCWZvdW5kID0gdHJ1ZTsKKyAgICAJCWJyZWFrOworICAgIAkgICAgfQorCisJICAgIHNpZ25hdHVyZUVsZW1lbnQgPSBzaWduYXR1cmVFbGVtZW50LmdldFBhcmVudE5vZGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZm91bmQpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbigKKwkgICAgICAgICJ0cmFuc2Zvcm0uZW52ZWxvcGVkU2lnbmF0dXJlVHJhbnNmb3JtTm90SW5TaWduYXR1cmVFbGVtZW50Iik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHNpZ25hdHVyZUVsZW1lbnQ7CisgICAgfQorCisgICAgc3RhdGljIGNsYXNzIEVudmVsb3BlZE5vZGVGaWx0ZXIgaW1wbGVtZW50cyBOb2RlRmlsdGVyIHsKKyAgICAJTm9kZSBleGNsdWRlOyAgICAJCisgICAgCUVudmVsb3BlZE5vZGVGaWx0ZXIoTm9kZSBuKSB7CisJICAgIGV4Y2x1ZGU9bjsKKyAgICAJfQorICAgIHB1YmxpYyBpbnQgaXNOb2RlSW5jbHVkZURPKE5vZGUgbiwgaW50IGxldmVsKSB7CisgICAgCWlmICgobj09ZXhjbHVkZSkpCisJCQlyZXR1cm4gLTE7CisgICAgCXJldHVybiAxOworICAgIH0KKwkvKioKKwkgKiBAc2VlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5Ob2RlRmlsdGVyI2lzTm9kZUluY2x1ZGUob3JnLnczYy5kb20uTm9kZSkKKwkgKi8KKwlwdWJsaWMgaW50IGlzTm9kZUluY2x1ZGUoTm9kZSBuKSB7CisJCWlmICgobj09ZXhjbHVkZSkgfHwgWE1MVXRpbHMuaXNEZXNjZW5kYW50T3JTZWxmKGV4Y2x1ZGUsbikpIAorCQkJcmV0dXJuIC0xOworCQlyZXR1cm4gMTsKKwkgICAgLy9yZXR1cm4gIVhNTFV0aWxzLmlzRGVzY2VuZGFudE9yU2VsZihleGNsdWRlLG4pOworCX0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9pbXBsZW1lbnRhdGlvbnMvVHJhbnNmb3JtWFBhdGguamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL2ltcGxlbWVudGF0aW9ucy9UcmFuc2Zvcm1YUGF0aC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMjIxY2MKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9pbXBsZW1lbnRhdGlvbnMvVHJhbnNmb3JtWFBhdGguamF2YQpAQCAtMCwwICsxLDE2NCBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5pbXBsZW1lbnRhdGlvbnM7CisKK2ltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRXhjZXB0aW9uOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eVJ1bnRpbWVFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLk5vZGVGaWx0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZUlucHV0OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtU3BpOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtYXRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1zOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNhY2hlZFhQYXRoQVBJSG9sZGVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNhY2hlZFhQYXRoRnVuY0hlcmVBUEk7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnV0aWxzLlByZWZpeFJlc29sdmVyRGVmYXVsdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhwYXRoLm9iamVjdHMuWE9iamVjdDsKK2ltcG9ydCBvcmcudzNjLmRvbS5ET01FeGNlcHRpb247CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworCisvKioKKyAqIENsYXNzIFRyYW5zZm9ybVhQYXRoCisgKgorICogSW1wbGVtZW50cyB0aGUgPENPREU+aHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTY8L0NPREU+CisgKiB0cmFuc2Zvcm0uCisgKgorICogQGF1dGhvciBDaHJpc3RpYW4gR2V1ZXItUG9sbG1hbm4KKyAqIEBzZWUgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYiPlhQYXRoPC9hPgorICoKKyAqLworcHVibGljIGNsYXNzIFRyYW5zZm9ybVhQYXRoIGV4dGVuZHMgVHJhbnNmb3JtU3BpIHsKKworICAgLyoqIEZpZWxkIGltcGxlbWVudGVkVHJhbnNmb3JtVVJJICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBpbXBsZW1lbnRlZFRyYW5zZm9ybVVSSSA9CisgICAgICBUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDsKKworICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lR2V0VVJJCisgICAgKgorICAgICogQGluaGVyaXREb2MKKyAgICAqLworICAgcHJvdGVjdGVkIFN0cmluZyBlbmdpbmVHZXRVUkkoKSB7CisgICAgICByZXR1cm4gaW1wbGVtZW50ZWRUcmFuc2Zvcm1VUkk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGVuZ2luZVBlcmZvcm1UcmFuc2Zvcm0KKyAgICAqIEBpbmhlcml0RG9jCisgICAgKiBAcGFyYW0gaW5wdXQKKyAgICAqCisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uCisgICAgKi8KKyAgIHByb3RlY3RlZCBYTUxTaWduYXR1cmVJbnB1dCBlbmdpbmVQZXJmb3JtVHJhbnNmb3JtKFhNTFNpZ25hdHVyZUlucHV0IGlucHV0LCBUcmFuc2Zvcm0gX3RyYW5zZm9ybU9iamVjdCkKKyAgICAgICAgICAgdGhyb3dzIFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uIHsKKworICAgICAgdHJ5IHsKKworICAgICAgICAgLyoqCisgICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIGlucHV0IGlzIGFuIG9jdGV0IHN0cmVhbSwgdGhlbiB0aGUgYXBwbGljYXRpb24gTVVTVAorICAgICAgICAgICogY29udmVydCB0aGUgb2N0ZXQgc3RyZWFtIHRvIGFuIFhQYXRoIG5vZGUtc2V0IHN1aXRhYmxlIGZvciB1c2UgYnkKKyAgICAgICAgICAqIENhbm9uaWNhbCBYTUwgd2l0aCBDb21tZW50cy4gKEEgc3Vic2VxdWVudCBhcHBsaWNhdGlvbiBvZiB0aGUKKyAgICAgICAgICAqIFJFUVVJUkVEIENhbm9uaWNhbCBYTUwgYWxnb3JpdGhtIHdvdWxkIHN0cmlwIGF3YXkgdGhlc2UgY29tbWVudHMuKQorICAgICAgICAgICoKKyAgICAgICAgICAqIC4uLgorICAgICAgICAgICoKKyAgICAgICAgICAqIFRoZSBldmFsdWF0aW9uIG9mIHRoaXMgZXhwcmVzc2lvbiBpbmNsdWRlcyBhbGwgb2YgdGhlIGRvY3VtZW50J3Mgbm9kZXMKKyAgICAgICAgICAqIChpbmNsdWRpbmcgY29tbWVudHMpIGluIHRoZSBub2RlLXNldCByZXByZXNlbnRpbmcgdGhlIG9jdGV0IHN0cmVhbS4KKyAgICAgICAgICAqLworCQkgIENhY2hlZFhQYXRoQVBJSG9sZGVyLnNldERvYyhfdHJhbnNmb3JtT2JqZWN0LmdldEVsZW1lbnQoKS5nZXRPd25lckRvY3VtZW50KCkpOworICAgICAgICAgCisgICAgICAgICAKKworICAgICAgICAgRWxlbWVudCB4cGF0aEVsZW1lbnQgPVhNTFV0aWxzLnNlbGVjdERzTm9kZSgKKyAgICAgICAgICAgIF90cmFuc2Zvcm1PYmplY3QuZ2V0RWxlbWVudCgpLmdldEZpcnN0Q2hpbGQoKSwKKyAgICAgICAgICAgICAgIENvbnN0YW50cy5fVEFHX1hQQVRILDApOworCisgICAgICAgICBpZiAoeHBhdGhFbGVtZW50ID09IG51bGwpIHsKKyAgICAgICAgICAgIE9iamVjdCBleEFyZ3NbXSA9IHsgImRzOlhQYXRoIiwgIlRyYW5zZm9ybSIgfTsKKworICAgICAgICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uKCJ4bWwuV3JvbmdDb250ZW50IiwgZXhBcmdzKTsKKyAgICAgICAgIH0KKyAgICAgICAgIE5vZGUgeHBhdGhub2RlID0geHBhdGhFbGVtZW50LmdldENoaWxkTm9kZXMoKS5pdGVtKDApOworICAgICAgICAgU3RyaW5nIHN0cj1DYWNoZWRYUGF0aEZ1bmNIZXJlQVBJLmdldFN0ckZyb21Ob2RlKHhwYXRobm9kZSk7CisgICAgICAgICBpbnB1dC5zZXROZWVkc1RvQmVFeHBhbmRlZChuZWVkc0NpcmN1bnZlbnQoc3RyKSk7CisgICAgICAgICBpZiAoeHBhdGhub2RlID09IG51bGwpIHsKKyAgICAgCSAgICB0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKERPTUV4Y2VwdGlvbi5ISUVSQVJDSFlfUkVRVUVTVF9FUlIsCisgICAgIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGV4dCBtdXN0IGJlIGluIGRzOlhwYXRoIik7CisgICAgIAkgfQorCisKKyAgICAgICAgIGlucHV0LmFkZE5vZGVGaWx0ZXIobmV3IFhQYXRoTm9kZUZpbHRlciggeHBhdGhFbGVtZW50LCB4cGF0aG5vZGUsIHN0cikpOworICAgICAgICAgaW5wdXQuc2V0Tm9kZVNldCh0cnVlKTsKKyAgICAgICAgIHJldHVybiBpbnB1dDsKKyAgICAgIH0gY2F0Y2ggKERPTUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgIH0gCisgICB9CisKKyAgIC8qKgorICAgICogIEBwYXJhbSBzdHIKKyAgICAqIEByZXR1cm4gdHJ1ZSBpZiBuZWVkcyB0byBiZSBjaXJjdW52ZW50IGZvciBidWcuCisgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gbmVlZHNDaXJjdW52ZW50KFN0cmluZyBzdHIpIHsKKyAgICAJLy9yZXR1cm4gdHJ1ZTsKKyAgICAJLy9yZXR1cm4gZmFsc2U7CisgICAgCXJldHVybiAoc3RyLmluZGV4T2YoIm5hbWVzcGFjZSIpICE9IC0xKSB8fCAoc3RyLmluZGV4T2YoIm5hbWUoKSIpICE9IC0xKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgWFBhdGhOb2RlRmlsdGVyIGltcGxlbWVudHMgTm9kZUZpbHRlciB7CisgICAgCVByZWZpeFJlc29sdmVyRGVmYXVsdCBwcmVmaXhSZXNvbHZlcjsKKyAgICAJQ2FjaGVkWFBhdGhGdW5jSGVyZUFQSSB4UGF0aEZ1bmNIZXJlQVBJID0KKyAgICAgICAgICAgIG5ldyBDYWNoZWRYUGF0aEZ1bmNIZXJlQVBJKENhY2hlZFhQYXRoQVBJSG9sZGVyLmdldENhY2hlZFhQYXRoQVBJKCkpOworCU5vZGUgeHBhdGhub2RlOyAKKyAgICAJU3RyaW5nIHN0cjsKKyAgICAJWFBhdGhOb2RlRmlsdGVyKEVsZW1lbnQgeHBhdGhFbGVtZW50LAorICAgIAkJCU5vZGUgeHBhdGhub2RlLCBTdHJpbmcgc3RyKSB7CisgICAgCSAgICB0aGlzLnhwYXRobm9kZT14cGF0aG5vZGU7CisgICAgCSAgICB0aGlzLnN0cj1zdHI7CisgICAgCSAgICBwcmVmaXhSZXNvbHZlciA9bmV3IFByZWZpeFJlc29sdmVyRGVmYXVsdCh4cGF0aEVsZW1lbnQpOworICAgIAl9CisKKwkvKioKKwkgKiBAc2VlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5Ob2RlRmlsdGVyI2lzTm9kZUluY2x1ZGUob3JnLnczYy5kb20uTm9kZSkKKwkgKi8KKwlwdWJsaWMgaW50IGlzTm9kZUluY2x1ZGUoTm9kZSBjdXJyZW50Tm9kZSkgewkJCQorCSAgICBYT2JqZWN0IGluY2x1ZGVJblJlc3VsdDsKKwkgICAgdHJ5IHsKKwkJaW5jbHVkZUluUmVzdWx0ID0geFBhdGhGdW5jSGVyZUFQSS5ldmFsKGN1cnJlbnROb2RlLAorCQkJICAgICAgICB4cGF0aG5vZGUsIHN0cixwcmVmaXhSZXNvbHZlcik7CisJCWlmIChpbmNsdWRlSW5SZXN1bHQuYm9vbCgpKQorCQkJcmV0dXJuIDE7CisJCXJldHVybiAwOworCSAgICB9IGNhdGNoIChUcmFuc2Zvcm1lckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgT2JqZWN0W10gZUFyZ3MgPSB7Y3VycmVudE5vZGV9OworCSAgICAgICAgdGhyb3cgbmV3IFhNTFNlY3VyaXR5UnVudGltZUV4Y2VwdGlvbgorCQkgICAgKCJzaWduYXR1cmUuVHJhbnNmb3JtLm5vZGUiLCBlQXJncywgZSk7CisJICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgT2JqZWN0W10gZUFyZ3MgPSB7Y3VycmVudE5vZGUsIG5ldyBTaG9ydChjdXJyZW50Tm9kZS5nZXROb2RlVHlwZSgpKX07CisJCXRocm93IG5ldyBYTUxTZWN1cml0eVJ1bnRpbWVFeGNlcHRpb24KKwkJICAgICgic2lnbmF0dXJlLlRyYW5zZm9ybS5ub2RlQW5kVHlwZSIsZUFyZ3MsIGUpOworCSAgICB9CisJfQorCXB1YmxpYyBpbnQgaXNOb2RlSW5jbHVkZURPKE5vZGUgbiwgaW50IGxldmVsKSB7CisJCXJldHVybiBpc05vZGVJbmNsdWRlKG4pOworCX0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9pbXBsZW1lbnRhdGlvbnMvVHJhbnNmb3JtWFBhdGgyRmlsdGVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9pbXBsZW1lbnRhdGlvbnMvVHJhbnNmb3JtWFBhdGgyRmlsdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjEwNzY3ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL2ltcGxlbWVudGF0aW9ucy9UcmFuc2Zvcm1YUGF0aDJGaWx0ZXIuamF2YQpAQCAtMCwwICsxLDMwNSBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5pbXBsZW1lbnRhdGlvbnM7CisKKworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworCitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRXhjZXB0aW9uOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5DYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuTm9kZUZpbHRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlSW5wdXQ7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm07CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1TcGk7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybXM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5wYXJhbXMuWFBhdGgyRmlsdGVyQ29udGFpbmVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNhY2hlZFhQYXRoQVBJSG9sZGVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNhY2hlZFhQYXRoRnVuY0hlcmVBUEk7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLnczYy5kb20uRE9NRXhjZXB0aW9uOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKK2ltcG9ydCBvcmcueG1sLnNheC5TQVhFeGNlcHRpb247CisKKy8qKgorICogSW1wbGVtZW50cyB0aGUgPEk+WE1MIFNpZ25hdHVyZSBYUGF0aCBGaWx0ZXIgdjIuMDwvST4KKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKiBAc2VlIDxBIEhSRUY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbGRzaWctZmlsdGVyMi8iPlhQYXRoIEZpbHRlciB2Mi4wIChUUik8L0E+CisgKiBAc2VlIDxhIEhSRUY9Imh0dHA6Ly93d3cudzMub3JnL1NpZ25hdHVyZS9EcmFmdHMveG1sZHNpZy14ZmlsdGVyMi8iPlhQYXRoIEZpbHRlciB2Mi4wIChlZGl0b3JzIGNvcHkpPC9hPgorICovCitwdWJsaWMgY2xhc3MgVHJhbnNmb3JtWFBhdGgyRmlsdGVyIGV4dGVuZHMgVHJhbnNmb3JtU3BpIHsKKworICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworLy8gICAgc3RhdGljIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZyBsb2cgPSAKKy8vICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZygKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybVhQYXRoMkZpbHRlci5jbGFzcy5nZXROYW1lKCkpOworCisgICAvKiogRmllbGQgaW1wbGVtZW50ZWRUcmFuc2Zvcm1VUkkgKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGltcGxlbWVudGVkVHJhbnNmb3JtVVJJID0KKyAgICAgIFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRIMkZJTFRFUjsKKyAgIC8vSi0KKyAgIC8vIGNvbnRhaW5zIHRoZSB0eXBlIG9mIHRoZSBmaWx0ZXIgICAKKworICAgLy8gY29udGFpbnMgdGhlIG5vZGUgc2V0CisgIAorICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lR2V0VVJJCisgICAgKgorICAgICogQGluaGVyaXREb2MKKyAgICAqLworICAgcHJvdGVjdGVkIFN0cmluZyBlbmdpbmVHZXRVUkkoKSB7CisgICAgICByZXR1cm4gaW1wbGVtZW50ZWRUcmFuc2Zvcm1VUkk7CisgICB9CisKKworCisgICAvKioKKyAgICAqIE1ldGhvZCBlbmdpbmVQZXJmb3JtVHJhbnNmb3JtCisgICAgKiBAaW5oZXJpdERvYworICAgICogQHBhcmFtIGlucHV0CisgICAgKgorICAgICogQHRocm93cyBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbgorICAgICovCisgICBwcm90ZWN0ZWQgWE1MU2lnbmF0dXJlSW5wdXQgZW5naW5lUGVyZm9ybVRyYW5zZm9ybShYTUxTaWduYXR1cmVJbnB1dCBpbnB1dCwgVHJhbnNmb3JtIF90cmFuc2Zvcm1PYmplY3QpCisgICAgICAgICAgIHRocm93cyBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbiB7CisJICBDYWNoZWRYUGF0aEFQSUhvbGRlci5zZXREb2MoX3RyYW5zZm9ybU9iamVjdC5nZXRFbGVtZW50KCkuZ2V0T3duZXJEb2N1bWVudCgpKTsKKyAgICAgIHRyeSB7CisgICAgCSAgTGlzdCB1bmlvbk5vZGVzPW5ldyBBcnJheUxpc3QoKTsKKyAgICAJICAgTGlzdCBzdWJzdHJhY3ROb2Rlcz1uZXcgQXJyYXlMaXN0KCk7CisgICAgCSAgIExpc3QgaW50ZXJzZWN0Tm9kZXM9bmV3IEFycmF5TGlzdCgpOworCisgICAgICAgICBDYWNoZWRYUGF0aEZ1bmNIZXJlQVBJIHhQYXRoRnVuY0hlcmVBUEkgPQorICAgICAgICAgICAgbmV3IENhY2hlZFhQYXRoRnVuY0hlcmVBUEkoQ2FjaGVkWFBhdGhBUElIb2xkZXIuZ2V0Q2FjaGVkWFBhdGhBUEkoKSk7CisKKyAgICAgICAgIAorICAgICAgICAgRWxlbWVudCBbXXhwYXRoRWxlbWVudHMgPVhNTFV0aWxzLnNlbGVjdE5vZGVzKAorICAgICAgICAgICAgICAgIF90cmFuc2Zvcm1PYmplY3QuZ2V0RWxlbWVudCgpLmdldEZpcnN0Q2hpbGQoKSwKKyAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIuWFBhdGhGaWx0ZXIyTlMsCisgICAgICAgICAgICAgICAgICAgWFBhdGgyRmlsdGVyQ29udGFpbmVyLl9UQUdfWFBBVEgyKTsKKyAgICAgICAgIGludCBub09mU3RlcHMgPSB4cGF0aEVsZW1lbnRzLmxlbmd0aDsKKworCisgICAgICAgICBpZiAobm9PZlN0ZXBzID09IDApIHsKKyAgICAgICAgICAgIE9iamVjdCBleEFyZ3NbXSA9IHsgVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSLCAiWFBhdGgiIH07CisKKyAgICAgICAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbigieG1sLldyb25nQ29udGVudCIsIGV4QXJncyk7CisgICAgICAgICB9CisKKyAgICAgICAgIERvY3VtZW50IGlucHV0RG9jID0gbnVsbDsKKwkgaWYgKGlucHV0LmdldFN1Yk5vZGUoKSAhPSBudWxsKSB7ICAgCisgICAgICAgICAgICBpbnB1dERvYyA9IFhNTFV0aWxzLmdldE93bmVyRG9jdW1lbnQoaW5wdXQuZ2V0U3ViTm9kZSgpKTsKKwkgfSBlbHNlIHsKKyAgICAgICAgICAgIGlucHV0RG9jID0gWE1MVXRpbHMuZ2V0T3duZXJEb2N1bWVudChpbnB1dC5nZXROb2RlU2V0KCkpOworCSB9CisKKyAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbm9PZlN0ZXBzOyBpKyspIHsKKyAgICAgICAgICAgIEVsZW1lbnQgeHBhdGhFbGVtZW50ID1YTUxVdGlscy5zZWxlY3ROb2RlKAorICAgICAgICAgICAgICAgX3RyYW5zZm9ybU9iamVjdC5nZXRFbGVtZW50KCkuZ2V0Rmlyc3RDaGlsZCgpLAorICAgICAgICAgICAgICAgICAgWFBhdGgyRmlsdGVyQ29udGFpbmVyLlhQYXRoRmlsdGVyMk5TLAorICAgICAgICAgICAgICAgICAgWFBhdGgyRmlsdGVyQ29udGFpbmVyLl9UQUdfWFBBVEgyLGkpOworICAgICAgICAgICAgWFBhdGgyRmlsdGVyQ29udGFpbmVyIHhwYXRoQ29udGFpbmVyID0KKyAgICAgICAgICAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lci5uZXdJbnN0YW5jZSh4cGF0aEVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC5nZXRTb3VyY2VVUkkoKSk7CisgICAgICAgICAgIAorCisgICAgICAgICAgICBOb2RlTGlzdCBzdWJ0cmVlUm9vdHMgPSB4UGF0aEZ1bmNIZXJlQVBJLnNlbGVjdE5vZGVMaXN0KGlucHV0RG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHBhdGhDb250YWluZXIuZ2V0WFBhdGhGaWx0ZXJUZXh0Tm9kZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FjaGVkWFBhdGhGdW5jSGVyZUFQSS5nZXRTdHJGcm9tTm9kZSh4cGF0aENvbnRhaW5lci5nZXRYUGF0aEZpbHRlclRleHROb2RlKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHBhdGhDb250YWluZXIuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgICAgIGlmICh4cGF0aENvbnRhaW5lci5pc0ludGVyc2VjdCgpKSB7CisgICAgICAgICAgICAgICAgaW50ZXJzZWN0Tm9kZXMuYWRkKHN1YnRyZWVSb290cyk7CisgICAgICAgICAgICAgfSBlbHNlIGlmICh4cGF0aENvbnRhaW5lci5pc1N1YnRyYWN0KCkpIHsKKyAgICAgICAgICAgIAkgc3Vic3RyYWN0Tm9kZXMuYWRkKHN1YnRyZWVSb290cyk7CisgICAgICAgICAgICAgfSBlbHNlIGlmICh4cGF0aENvbnRhaW5lci5pc1VuaW9uKCkpIHsKKyAgICAgICAgICAgICAgICB1bmlvbk5vZGVzLmFkZChzdWJ0cmVlUm9vdHMpOworICAgICAgICAgICAgIH0gCisgICAgICAgICB9CisKKyAgICAgICAgIAorICAgICAgICAgaW5wdXQuYWRkTm9kZUZpbHRlcihuZXcgWFBhdGgyTm9kZUZpbHRlcihjb252ZXJ0Tm9kZUxpc3RUb1NldCh1bmlvbk5vZGVzKSwKKyAgICAgICAgCQkgY29udmVydE5vZGVMaXN0VG9TZXQoc3Vic3RyYWN0Tm9kZXMpLGNvbnZlcnROb2RlTGlzdFRvU2V0KGludGVyc2VjdE5vZGVzKSkpOworICAgICAgICAgaW5wdXQuc2V0Tm9kZVNldCh0cnVlKTsKKyAgICAgICAgIHJldHVybiBpbnB1dDsKKyAgICAgIH0gY2F0Y2ggKFRyYW5zZm9ybWVyRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgfSBjYXRjaCAoRE9NRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgfSBjYXRjaCAoQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgIH0gY2F0Y2ggKEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24oImVtcHR5IiwgZXgpOworICAgICAgfSBjYXRjaCAoWE1MU2VjdXJpdHlFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICB9IGNhdGNoIChTQVhFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uKCJlbXB0eSIsIGV4KTsKKyAgICAgIH0gY2F0Y2ggKFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbigiZW1wdHkiLCBleCk7CisgICAgICB9IAorICAgfQorICAgc3RhdGljIFNldCBjb252ZXJ0Tm9kZUxpc3RUb1NldChMaXN0IGwpeworCSAgIFNldCByZXN1bHQ9bmV3IEhhc2hTZXQoKTsKKwkgICBmb3IgKGludCBqPTA7ajxsLnNpemUoKTtqKyspIHsKKwkJICAgTm9kZUxpc3Qgcm9vdE5vZGVzPShOb2RlTGlzdCkgbC5nZXQoaik7CSAgIAorCSAgICAgICBpbnQgbGVuZ3RoID0gcm9vdE5vZGVzLmdldExlbmd0aCgpOworCisJICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKwkgICAgICAgICAgICBOb2RlIHJvb3ROb2RlID0gcm9vdE5vZGVzLml0ZW0oaSk7CisJICAgICAgICAgICAgcmVzdWx0LmFkZChyb290Tm9kZSk7CisJICAgICAgICAgICAgCisJICAgICAgICAgfQorCSAgICAgICAgIAorCSAgIH0KKwkgICByZXR1cm4gcmVzdWx0OworICAgfQorfQorCitjbGFzcyBYUGF0aDJOb2RlRmlsdGVyIGltcGxlbWVudHMgTm9kZUZpbHRlciB7CisJYm9vbGVhbiBoYXNVbmlvbk5vZGVzOworCWJvb2xlYW4gaGFzU3Vic3RyYWN0Tm9kZXM7CisJYm9vbGVhbiBoYXNJbnRlcnNlY3ROb2RlczsKKwlYUGF0aDJOb2RlRmlsdGVyKFNldCB1bmlvbk5vZGVzLCBTZXQgc3Vic3RyYWN0Tm9kZXMsCisJCQlTZXQgaW50ZXJzZWN0Tm9kZXMpIHsKKwkJdGhpcy51bmlvbk5vZGVzPXVuaW9uTm9kZXM7CisJCWhhc1VuaW9uTm9kZXM9IXVuaW9uTm9kZXMuaXNFbXB0eSgpOworCQl0aGlzLnN1YnN0cmFjdE5vZGVzPXN1YnN0cmFjdE5vZGVzOworCQloYXNTdWJzdHJhY3ROb2Rlcz0hc3Vic3RyYWN0Tm9kZXMuaXNFbXB0eSgpOworCQl0aGlzLmludGVyc2VjdE5vZGVzPWludGVyc2VjdE5vZGVzOworCQloYXNJbnRlcnNlY3ROb2Rlcz0haW50ZXJzZWN0Tm9kZXMuaXNFbXB0eSgpOworCX0KKwlTZXQgdW5pb25Ob2RlczsKKwlTZXQgc3Vic3RyYWN0Tm9kZXM7CisJU2V0IGludGVyc2VjdE5vZGVzOworCisKKyAgIC8qKgorICAgICogQHNlZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuTm9kZUZpbHRlciNpc05vZGVJbmNsdWRlKG9yZy53M2MuZG9tLk5vZGUpCisgICAgKi8KKyAgIHB1YmxpYyBpbnQgaXNOb2RlSW5jbHVkZShOb2RlIGN1cnJlbnROb2RlKSB7CSAKKwkgICBpbnQgcmVzdWx0PTE7CisJICAgCisJICAgaWYgKGhhc1N1YnN0cmFjdE5vZGVzICYmIHJvb3RlZChjdXJyZW50Tm9kZSwgc3Vic3RyYWN0Tm9kZXMpKSB7CisJCSAgICAgIHJlc3VsdCA9IC0xOworCSAgIH0gZWxzZSBpZiAoaGFzSW50ZXJzZWN0Tm9kZXMgJiYgIXJvb3RlZChjdXJyZW50Tm9kZSwgaW50ZXJzZWN0Tm9kZXMpKSB7CisJCSAgIHJlc3VsdCA9IDA7CisJICAgfQorCSAgIAkgICAKKwkgIC8vVE9ETyBPUFRJTUlaRQorICAgICAgaWYgKHJlc3VsdD09MSkgICAgIAkgICAgICAgIAorICAgIAkgIHJldHVybiAxOworICAgICAgaWYgKGhhc1VuaW9uTm9kZXMpIHsgCisgICAgCSAgaWYgKHJvb3RlZChjdXJyZW50Tm9kZSwgdW5pb25Ob2RlcykpIHsKKwkJICAgcmV0dXJuIDE7CisgICAgCSAgfQorICAgIAkgIHJlc3VsdD0wOworICAgICAgfSAgICAJCisgICAgICByZXR1cm4gcmVzdWx0OworCisgICB9CisgICBpbnQgaW5TdWJzdHJhY3Q9LTE7CisgICBpbnQgaW5JbnRlcnNlY3Q9LTE7CisgICBpbnQgaW5Vbmlvbj0tMTsKKyAgIHB1YmxpYyBpbnQgaXNOb2RlSW5jbHVkZURPKE5vZGUgbiwgaW50IGxldmVsKSB7CisJICAgaW50IHJlc3VsdD0xOworCSAgIGlmIChoYXNTdWJzdHJhY3ROb2RlcykgeworCQkgICBpZiAoKGluU3Vic3RyYWN0PT0tMSkgfHwgKGxldmVsPD1pblN1YnN0cmFjdCkpIHsKKwkJCSAgIGlmIChpbkxpc3QobiwgIHN1YnN0cmFjdE5vZGVzKSkgeworCQkJCSAgIGluU3Vic3RyYWN0PWxldmVsOworCQkJICAgfSBlbHNlIHsKKwkJCQkgICBpblN1YnN0cmFjdD0tMTsgICAJCQkgICAKKwkJCSAgIH0JCSAgIAorCQkgICB9IAorCQkgICBpZiAoaW5TdWJzdHJhY3QhPS0xKXsKKwkJCSAgIHJlc3VsdD0tMTsKKwkJICAgfQorCSAgIH0gCisJICAgaWYgKHJlc3VsdCE9LTEpeyAKKwkJICAgaWYgKGhhc0ludGVyc2VjdE5vZGVzKSB7CisJCSAgIGlmICgoaW5JbnRlcnNlY3Q9PS0xKSB8fCAobGV2ZWw8PWluSW50ZXJzZWN0KSkgeworCQkJICAgaWYgKCFpbkxpc3QobiwgIGludGVyc2VjdE5vZGVzKSkgeworCQkJCSAgIGluSW50ZXJzZWN0PS0xOworCQkJCSAgIHJlc3VsdD0wOworCQkJICAgfSBlbHNlIHsKKwkJCQkgICBpbkludGVyc2VjdD1sZXZlbDsgICAJCQkgICAKKwkJCSAgIH0JCSAgIAorCQkgICB9CisJCSAgIH0KKwkgICB9CisJICAgCSAgIAorCSAgaWYgKGxldmVsPD1pblVuaW9uKQorCQkgICBpblVuaW9uPS0xOworICAgICAgaWYgKHJlc3VsdD09MSkgICAgIAkgICAgICAgIAorICAgIAkgIHJldHVybiAxOworICAgICAgaWYgKGhhc1VuaW9uTm9kZXMpIHsKKyAgICAJICBpZiAoKGluVW5pb249PS0xKSAmJiBpbkxpc3QobiwgIHVuaW9uTm9kZXMpKSB7CisgICAgCQkgIGluVW5pb249bGV2ZWw7CisgICAgCSAgfQorICAgIAkgIGlmIChpblVuaW9uIT0tMSkKKyAgICAJCSAgcmV0dXJuIDE7CisgICAgCSAgcmVzdWx0PTA7CisgICAgICB9CisJCSAgICAgIAorICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2Qgcm9vdGVkCisgICAgKiBAcGFyYW0gY3VycmVudE5vZGUgCisgICAgKiBAcGFyYW0gbm9kZUxpc3QgCisgICAgKgorICAgICogQHJldHVybiBpZiByb290ZWQgYnllIHRoZSByb290bm9kZXMKKyAgICAqLworICAgc3RhdGljIGJvb2xlYW4gIHJvb3RlZChOb2RlIGN1cnJlbnROb2RlLCBTZXQgbm9kZUxpc3QgKSB7CisJICAgaWYgKG5vZGVMaXN0LmNvbnRhaW5zKGN1cnJlbnROb2RlKSkgeworCQkgICByZXR1cm4gdHJ1ZTsKKwkgICB9CisJICAgSXRlcmF0b3IgaXQ9bm9kZUxpc3QuaXRlcmF0b3IoKTsKKwkgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7CisJICAgCQlOb2RlIHJvb3ROb2RlID0gKE5vZGUpIGl0Lm5leHQoKTsKKwkJCWlmIChYTUxVdGlscy5pc0Rlc2NlbmRhbnRPclNlbGYocm9vdE5vZGUsY3VycmVudE5vZGUpKSB7CisJCQkJICAgcmV0dXJuIHRydWU7CisJCQl9CisJICAgfQorCSAgIHJldHVybiBmYWxzZTsKKyAgIH0KKyAgIAorICAgICAgLyoqCisgICAgICAgKiBNZXRob2Qgcm9vdGVkCisgICAgICAgKiBAcGFyYW0gY3VycmVudE5vZGUgCisgICAgICAgKiBAcGFyYW0gbm9kZUxpc3QgCisgICAgICAgKgorICAgICAgICogQHJldHVybiBpZiByb290ZWQgYnllIHRoZSByb290bm9kZXMKKyAgICAgICAqLworICAgICAgc3RhdGljIGJvb2xlYW4gIGluTGlzdChOb2RlIGN1cnJlbnROb2RlLCBTZXQgbm9kZUxpc3QgKSB7CisgICAJICAgICAgcmV0dXJuIG5vZGVMaXN0LmNvbnRhaW5zKGN1cnJlbnROb2RlKTsKKyAgICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL2ltcGxlbWVudGF0aW9ucy9UcmFuc2Zvcm1YUG9pbnRlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RyYW5zZm9ybXMvaW1wbGVtZW50YXRpb25zL1RyYW5zZm9ybVhQb2ludGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M3ZjU4MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL2ltcGxlbWVudGF0aW9ucy9UcmFuc2Zvcm1YUG9pbnRlci5qYXZhCkBAIC0wLDAgKzEsNjQgQEAKKworLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5pbXBsZW1lbnRhdGlvbnM7CisKKworCisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlSW5wdXQ7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm07CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1TcGk7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybXM7CisKKworCisvKioKKyAqIENsYXNzIFRyYW5zZm9ybVhQb2ludGVyCisgKgorICogQGF1dGhvciBDaHJpc3RpYW4gR2V1ZXItUG9sbG1hbm4KKyAqLworcHVibGljIGNsYXNzIFRyYW5zZm9ybVhQb2ludGVyIGV4dGVuZHMgVHJhbnNmb3JtU3BpIHsKKworICAgLyoqIEZpZWxkIGltcGxlbWVudGVkVHJhbnNmb3JtVVJJICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBpbXBsZW1lbnRlZFRyYW5zZm9ybVVSSSA9CisgICAgICBUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUE9JTlRFUjsKKworCisgICAvKiogQGluaGVyaXREb2MgKi8KKyAgIHByb3RlY3RlZCBTdHJpbmcgZW5naW5lR2V0VVJJKCkgeworICAgICAgcmV0dXJuIGltcGxlbWVudGVkVHJhbnNmb3JtVVJJOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBlbmdpbmVQZXJmb3JtVHJhbnNmb3JtCisgICAgKgorICAgICogQHBhcmFtIGlucHV0CisgICAgKiBAcmV0dXJuICB7QGxpbmsgWE1MU2lnbmF0dXJlSW5wdXR9IGFzIHRoZSByZXN1bHQgb2YgdHJhbnNmb3JtYXRpb24KKyAgICAqIEB0aHJvd3MgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24KKyAgICAqCisgICAgKi8KKyAgIHByb3RlY3RlZCBYTUxTaWduYXR1cmVJbnB1dCBlbmdpbmVQZXJmb3JtVHJhbnNmb3JtKFhNTFNpZ25hdHVyZUlucHV0IGlucHV0LCBUcmFuc2Zvcm0gX3RyYW5zZm9ybU9iamVjdCkKKyAgICAgICAgICAgdGhyb3dzICBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbiB7CisKKyAgICAgIE9iamVjdCBleEFyZ3NbXSA9IHsgaW1wbGVtZW50ZWRUcmFuc2Zvcm1VUkkgfTsKKworICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uKAorICAgICAgICAgInNpZ25hdHVyZS5UcmFuc2Zvcm0uTm90WWV0SW1wbGVtZW50ZWQiLCBleEFyZ3MpOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RyYW5zZm9ybXMvaW1wbGVtZW50YXRpb25zL1RyYW5zZm9ybVhTTFQuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL2ltcGxlbWVudGF0aW9ucy9UcmFuc2Zvcm1YU0xULmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA0YjA2ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL2ltcGxlbWVudGF0aW9ucy9UcmFuc2Zvcm1YU0xULmphdmEKQEAgLTAsMCArMSwyMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMTk5OS0yMDA3IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5pbXBsZW1lbnRhdGlvbnM7CisKK2ltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kOworCitpbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5Tb3VyY2U7CitpbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lcjsKK2ltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRXhjZXB0aW9uOworaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJGYWN0b3J5OworaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uZG9tLkRPTVNvdXJjZTsKK2ltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLnN0cmVhbS5TdHJlYW1SZXN1bHQ7CitpbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5zdHJlYW0uU3RyZWFtU291cmNlOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlSW5wdXQ7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm07CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1TcGk7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybXM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworLyoqCisgKiBDbGFzcyBUcmFuc2Zvcm1YU0xUCisgKgorICogSW1wbGVtZW50cyB0aGUgPENPREU+aHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHNsdC0xOTk5MTExNjwvQ09ERT4KKyAqIHRyYW5zZm9ybS4KKyAqCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubgorICovCitwdWJsaWMgY2xhc3MgVHJhbnNmb3JtWFNMVCBleHRlbmRzIFRyYW5zZm9ybVNwaSB7CisKKyAgIC8qKiBGaWVsZCBpbXBsZW1lbnRlZFRyYW5zZm9ybVVSSSAqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgaW1wbGVtZW50ZWRUcmFuc2Zvcm1VUkkgPQorICAgICAgVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFNMVDsKKyAgIC8vSi0KKyAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgWFNMVFNwZWNOUyAgICAgICAgICAgICAgPSAiaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIjsKKyAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgZGVmYXVsdFhTTFRTcGVjTlNwcmVmaXggPSAieHNsdCI7CisgICBzdGF0aWMgZmluYWwgU3RyaW5nIFhTTFRTVFlMRVNIRUVUICAgICAgICAgID0gInN0eWxlc2hlZXQiOworCisgICAvLyBjaGVjayBmb3Igc2VjdXJlIHByb2Nlc3NpbmcgZmVhdHVyZQorICAgcHJpdmF0ZSBzdGF0aWMgQ2xhc3MgeENsYXNzID0gbnVsbDsKKyAgIHN0YXRpYyB7CisgICAgICB0cnkgeworICAgICAgICAgeENsYXNzID0gQ2xhc3MuZm9yTmFtZSgiamF2YXgueG1sLlhNTENvbnN0YW50cyIpOworICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHt9CisgICB9CisKKyAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0KKyAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKAorICAgICAgICAgVHJhbnNmb3JtWFNMVC5jbGFzcy5nZXROYW1lKCkpOworCisgICAvKioKKyAgICAqIE1ldGhvZCBlbmdpbmVHZXRVUkkKKyAgICAqCisgICAgKiBAaW5oZXJpdERvYworICAgICovCisgICBwcm90ZWN0ZWQgU3RyaW5nIGVuZ2luZUdldFVSSSgpIHsKKyAgICAgIHJldHVybiBpbXBsZW1lbnRlZFRyYW5zZm9ybVVSSTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lUGVyZm9ybVRyYW5zZm9ybQorICAgICogCisgICAgKiBAcGFyYW0gaW5wdXQgdGhlIGlucHV0IGZvciB0aGlzIHRyYW5zZm9ybQorICAgICogQHJldHVybiB0aGUgcmVzdWx0IG9mIHRoaXMgVHJhbnNmb3JtCisgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uCisgICAgKi8KKyAgIHByb3RlY3RlZCBYTUxTaWduYXR1cmVJbnB1dCBlbmdpbmVQZXJmb3JtVHJhbnNmb3JtCisJKFhNTFNpZ25hdHVyZUlucHV0IGlucHV0LCBUcmFuc2Zvcm0gX3RyYW5zZm9ybU9iamVjdCkKKyAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24geworICAgCXJldHVybiBlbmdpbmVQZXJmb3JtVHJhbnNmb3JtKGlucHV0LCBudWxsLCBfdHJhbnNmb3JtT2JqZWN0KTsKKyAgIH0KKworICAgIHByb3RlY3RlZCBYTUxTaWduYXR1cmVJbnB1dCBlbmdpbmVQZXJmb3JtVHJhbnNmb3JtKFhNTFNpZ25hdHVyZUlucHV0IGlucHV0LE91dHB1dFN0cmVhbSBiYW9zLCBUcmFuc2Zvcm0gX3RyYW5zZm9ybU9iamVjdCkKKyAgICB0aHJvd3MgSU9FeGNlcHRpb24sCisgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uIHsKKyAgICAgIGlmICh4Q2xhc3MgPT0gbnVsbCkgeworICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyAiU0VDVVJFX1BST0NFU1NJTkdfRkVBVFVSRSBub3Qgc3VwcG9ydGVkIiB9OworICAgICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uKCJnZW5lcmljLkVtcHR5TWVzc2FnZSIsIGV4QXJncyk7CisgICAgICB9CisgICAgICB0cnkgeworICAgICAgICAgRWxlbWVudCB0cmFuc2Zvcm1FbGVtZW50ID0gX3RyYW5zZm9ybU9iamVjdC5nZXRFbGVtZW50KCk7ICAgICAgICAKKworICAgICAgICAgRWxlbWVudCBfeHNsdEVsZW1lbnQgPQorICAgICAgICAgICAgWE1MVXRpbHMuc2VsZWN0Tm9kZSh0cmFuc2Zvcm1FbGVtZW50LmdldEZpcnN0Q2hpbGQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhTTFRTcGVjTlMsInN0eWxlc2hlZXQiLCAwKTsKKworICAgICAgICAgaWYgKF94c2x0RWxlbWVudCA9PSBudWxsKSB7CisgICAgICAgICAgICBPYmplY3QgZXhBcmdzW10gPSB7ICJ4c2x0OnN0eWxlc2hlZXQiLCAiVHJhbnNmb3JtIiB9OworCisgICAgICAgICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24oInhtbC5Xcm9uZ0NvbnRlbnQiLCBleEFyZ3MpOworICAgICAgICAgfQorCisgICAgICAgICBUcmFuc2Zvcm1lckZhY3RvcnkgdEZhY3RvcnkgPSBUcmFuc2Zvcm1lckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKyAgICAgICAgIENsYXNzIGMgPSB0RmFjdG9yeS5nZXRDbGFzcygpOworICAgICAgICAgTWV0aG9kIG0gPSBjLmdldE1ldGhvZCgic2V0RmVhdHVyZSIsIG5ldyBDbGFzc1tdIHtTdHJpbmcuY2xhc3MsIGJvb2xlYW4uY2xhc3N9KTsKKyAgICAgICAgIC8vIFByb2Nlc3MgWFNMVCBzdHlsZXNoZWV0cyBpbiBhIHNlY3VyZSBtYW5uZXIKKyAgICAgICAgIG0uaW52b2tlKHRGYWN0b3J5LCBuZXcgT2JqZWN0W10geyJodHRwOi8vamF2YXgueG1sLlhNTENvbnN0YW50cy9mZWF0dXJlL3NlY3VyZS1wcm9jZXNzaW5nIiwgQm9vbGVhbi5UUlVFfSk7CisKKyAgICAgICAgIC8qCisgICAgICAgICAgKiBUaGlzIHRyYW5zZm9ybSByZXF1aXJlcyBhbiBvY3RldCBzdHJlYW0gYXMgaW5wdXQuIElmIHRoZSBhY3R1YWwKKyAgICAgICAgICAqIGlucHV0IGlzIGFuIFhQYXRoIG5vZGUtc2V0LCB0aGVuIHRoZSBzaWduYXR1cmUgYXBwbGljYXRpb24gc2hvdWxkCisgICAgICAgICAgKiBhdHRlbXB0IHRvIGNvbnZlcnQgaXQgdG8gb2N0ZXRzIChhcHBseSBDYW5vbmljYWwgWE1MXSkgYXMgZGVzY3JpYmVkCisgICAgICAgICAgKiBpbiB0aGUgUmVmZXJlbmNlIFByb2Nlc3NpbmcgTW9kZWwgKHNlY3Rpb24gNC4zLjMuMikuCisgICAgICAgICAgKi8KKyAgICAgICAgIFNvdXJjZSB4bWxTb3VyY2UgPQorICAgICAgICAgICAgbmV3IFN0cmVhbVNvdXJjZShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oaW5wdXQuZ2V0Qnl0ZXMoKSkpOworICAgICAgICAgU291cmNlIHN0eWxlc2hlZXQ7CisKKyAgICAgICAgIC8qCisgICAgICAgICAgKiBUaGlzIGNvbXBsaWNhdGVkIHRyYW5zZm9ybWF0aW9uIG9mIHRoZSBzdHlsZXNoZWV0IGl0c2VsZiBpcyBuZWNlc3NhcnkKKyAgICAgICAgICAqIGJlY2F1c2Ugb2YgdGhlIG5lZWQgdG8gZ2V0IHRoZSBwdXJlIHN0eWxlIHNoZWV0LiBJZiB3ZSBzaW1wbHkgc2F5CisgICAgICAgICAgKiBTb3VyY2Ugc3R5bGVzaGVldCA9IG5ldyBET01Tb3VyY2UodGhpcy5feHNsdEVsZW1lbnQpOworICAgICAgICAgICogd2hlcmVieSB0aGlzLl94c2x0RWxlbWVudCBpcyBub3QgdGhlIHJvb3RFbGVtZW50IG9mIHRoZSBEb2N1bWVudCwKKyAgICAgICAgICAqIHRoaXMgY2F1c2VzIHByb2JsZW1zOworICAgICAgICAgICogc28gd2UgY29udmVydCB0aGUgc3R5bGVzaGVldCB0byBieXRlW10gYW5kIHVzZSB0aGlzIGFzIGlucHV0IHN0cmVhbQorICAgICAgICAgICovCisgICAgICAgICB7CisgICAgICAgICAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gb3MgPSBuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7CisgICAgICAgICAgICBUcmFuc2Zvcm1lciB0cmFuc2Zvcm1lciA9IHRGYWN0b3J5Lm5ld1RyYW5zZm9ybWVyKCk7CisgICAgICAgICAgICBET01Tb3VyY2Ugc291cmNlID0gbmV3IERPTVNvdXJjZShfeHNsdEVsZW1lbnQpOworICAgICAgICAgICAgU3RyZWFtUmVzdWx0IHJlc3VsdCA9IG5ldyBTdHJlYW1SZXN1bHQob3MpOworCisgICAgICAgICAgICB0cmFuc2Zvcm1lci50cmFuc2Zvcm0oc291cmNlLCByZXN1bHQpOworCisgICAgICAgICAgICBzdHlsZXNoZWV0ID0KKyAgICAgICAgICAgICAgIG5ldyBTdHJlYW1Tb3VyY2UobmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKG9zLnRvQnl0ZUFycmF5KCkpKTsKKyAgICAgICAgIH0KKworICAgICAgICAgVHJhbnNmb3JtZXIgdHJhbnNmb3JtZXIgPSB0RmFjdG9yeS5uZXdUcmFuc2Zvcm1lcihzdHlsZXNoZWV0KTsKKworCSAvLyBGb3JjZSBYYWxhbiB0byB1c2UgXG4gYXMgbGluZSBzZXBhcmF0b3Igb24gYWxsIE9TZXMuIFRoaXMgCisJIC8vIGF2b2lkcyBPUyBzcGVjaWZpYyBzaWduYXR1cmUgdmFsaWRhdGlvbiBmYWlsdXJlcyBkdWUgdG8gbGluZQorCSAvLyBzZXBhcmF0b3IgZGlmZmVyZW5jZXMgaW4gdGhlIHRyYW5zZm9ybWVkIG91dHB1dC4gVW5mb3J0dW5hdGVseSwKKwkgLy8gdGhpcyBpcyBub3QgYSBzdGFuZGFyZCBKQVhQIHByb3BlcnR5IHNvIHdpbGwgbm90IHdvcmsgd2l0aCBub24tWGFsYW4KKwkgLy8gaW1wbGVtZW50YXRpb25zLgorCSB0cnkgeworCSAgICB0cmFuc2Zvcm1lci5zZXRPdXRwdXRQcm9wZXJ0eQorCSAgICAgICAoIntodHRwOi8veG1sLmFwYWNoZS5vcmcveGFsYW59bGluZS1zZXBhcmF0b3IiLCAiXG4iKTsKKwkgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkgICAgbG9nLndhcm4oIlVuYWJsZSB0byBzZXQgWGFsYW4gbGluZS1zZXBhcmF0b3IgcHJvcGVydHk6ICIgCisJICAgICAgICsgZS5nZXRNZXNzYWdlKCkpOworCSB9CisKKyAgICAgICAgIGlmIChiYW9zPT1udWxsKSB7CisgICAgICAgICAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gYmFvczEgPSBuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7CisgICAgICAgICAgICBTdHJlYW1SZXN1bHQgb3V0cHV0VGFyZ2V0ID0gbmV3IFN0cmVhbVJlc3VsdChiYW9zMSk7CisgICAgICAgICAgICB0cmFuc2Zvcm1lci50cmFuc2Zvcm0oeG1sU291cmNlLCBvdXRwdXRUYXJnZXQpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBYTUxTaWduYXR1cmVJbnB1dChiYW9zMS50b0J5dGVBcnJheSgpKTsKKyAgICAgICAgIH0KKyAgICAgICAgIFN0cmVhbVJlc3VsdCBvdXRwdXRUYXJnZXQgPSBuZXcgU3RyZWFtUmVzdWx0KGJhb3MpOworCisgICAgICAgICB0cmFuc2Zvcm1lci50cmFuc2Zvcm0oeG1sU291cmNlLCBvdXRwdXRUYXJnZXQpOyAgICAgICAgIAorICAgICAgICAgWE1MU2lnbmF0dXJlSW5wdXQgb3V0cHV0PW5ldyBYTUxTaWduYXR1cmVJbnB1dCgoYnl0ZVtdKW51bGwpOworICAgICAgICAgb3V0cHV0LnNldE91dHB1dFN0cmVhbShiYW9zKTsKKyAgICAgICAgIHJldHVybiBvdXRwdXQ7CisgICAgICB9IGNhdGNoIChYTUxTZWN1cml0eUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyBleC5nZXRNZXNzYWdlKCkgfTsKKworICAgICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uKCJnZW5lcmljLkVtcHR5TWVzc2FnZSIsIGV4QXJncywgZXgpOworICAgICAgfSBjYXRjaCAoVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICBPYmplY3QgZXhBcmdzW10gPSB7IGV4LmdldE1lc3NhZ2UoKSB9OworCisgICAgICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24oImdlbmVyaWMuRW1wdHlNZXNzYWdlIiwgZXhBcmdzLCBleCk7CisgICAgICB9IGNhdGNoIChUcmFuc2Zvcm1lckV4Y2VwdGlvbiBleCkgeworICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyBleC5nZXRNZXNzYWdlKCkgfTsKKworICAgICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uKCJnZW5lcmljLkVtcHR5TWVzc2FnZSIsIGV4QXJncywgZXgpOworICAgICAgfSBjYXRjaCAoTm9TdWNoTWV0aG9kRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICBPYmplY3QgZXhBcmdzW10gPSB7IGV4LmdldE1lc3NhZ2UoKSB9OworCisgICAgICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24oImdlbmVyaWMuRW1wdHlNZXNzYWdlIiwgZXhBcmdzLCBleCk7CisgICAgICB9IGNhdGNoIChJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICBPYmplY3QgZXhBcmdzW10gPSB7IGV4LmdldE1lc3NhZ2UoKSB9OworCisgICAgICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24oImdlbmVyaWMuRW1wdHlNZXNzYWdlIiwgZXhBcmdzLCBleCk7CisgICAgICB9IGNhdGNoIChqYXZhLmxhbmcucmVmbGVjdC5JbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIGV4KSB7CisgICAgICAgICBPYmplY3QgZXhBcmdzW10gPSB7IGV4LmdldE1lc3NhZ2UoKSB9OworCisgICAgICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24oImdlbmVyaWMuRW1wdHlNZXNzYWdlIiwgZXhBcmdzLCBleCk7CisgICAgICB9CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9pbXBsZW1lbnRhdGlvbnMvcGFja2FnZS5odG1sIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RyYW5zZm9ybXMvaW1wbGVtZW50YXRpb25zL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDE1ODY4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RyYW5zZm9ybXMvaW1wbGVtZW50YXRpb25zL3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDMgQEAKKzxIVE1MPjxIRUFEPjwvSEVBRD48Qk9EWT48UD4KK2ltcGxlbWVudGF0aW9ucyBvZiBYTUwgU2lnbmF0dXJlIHRyYW5zZm9ybXMuCis8L1A+PC9CT0RZPjwvSFRNTD4KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL3BhY2thZ2UuaHRtbCBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzUwN2I4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RyYW5zZm9ybXMvcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsMyBAQAorPEhUTUw+PEhFQUQ+PC9IRUFEPjxCT0RZPjxQPgordGhlIGZyYW1ld29yayBmb3IgWE1MIFNpZ25hdHVyZSB0cmFuc2Zvcm1zLgorPC9QPjwvQk9EWT48L0hUTUw+CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9wYXJhbXMvSW5jbHVzaXZlTmFtZXNwYWNlcy5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RyYW5zZm9ybXMvcGFyYW1zL0luY2x1c2l2ZU5hbWVzcGFjZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGRlMjEzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RyYW5zZm9ybXMvcGFyYW1zL0luY2x1c2l2ZU5hbWVzcGFjZXMuamF2YQpAQCAtMCwwICsxLDE3OCBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5wYXJhbXM7CisKKworCitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CitpbXBvcnQgamF2YS51dGlsLlNvcnRlZFNldDsKK2ltcG9ydCBqYXZhLnV0aWwuU3RyaW5nVG9rZW5pemVyOworaW1wb3J0IGphdmEudXRpbC5UcmVlU2V0OworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybVBhcmFtOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkVsZW1lbnRQcm94eTsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworCisKKy8qKgorICogVGhpcyBPYmplY3Qgc2VydmVzIGFzIENvbnRlbnQgZm9yIHRoZSBkczpUcmFuc2Zvcm1zIGZvciBleGNsdXNpdmUKKyAqIENhbm9uaWNhbGl6YXRpb24uCisgKiA8QlIgLz4KKyAqIEl0IGltcGxlbWVudHMgdGhlIHtAbGluayBFbGVtZW50fSBpbnRlcmZhY2UKKyAqIGFuZCBjYW4gYmUgdXNlZCBkaXJlY3RseSBpbiBhIERPTSB0cmVlLgorICoKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEdldWVyLVBvbGxtYW5uCisgKi8KK3B1YmxpYyBjbGFzcyBJbmNsdXNpdmVOYW1lc3BhY2VzIGV4dGVuZHMgRWxlbWVudFByb3h5CisgICAgICAgIGltcGxlbWVudHMgVHJhbnNmb3JtUGFyYW0geworCisgICAvKiogRmllbGQgX1RBR19FQ19JTkNMVVNJVkVOQU1FU1BBQ0VTICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfVEFHX0VDX0lOQ0xVU0lWRU5BTUVTUEFDRVMgPQorICAgICAgIkluY2x1c2l2ZU5hbWVzcGFjZXMiOworCisgICAvKiogRmllbGQgX0FUVF9FQ19QUkVGSVhMSVNUICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfQVRUX0VDX1BSRUZJWExJU1QgPSAiUHJlZml4TGlzdCI7CisKKyAgIC8qKiBGaWVsZCBFeGNsdXNpdmVDYW5vbmljYWxpemF0aW9uTmFtZXNwYWNlICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFeGNsdXNpdmVDYW5vbmljYWxpemF0aW9uTmFtZXNwYWNlID0KKyAgICAgICJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiOworCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFhQYXRoQ29udGFpbmVyCisgICAgKgorICAgICogQHBhcmFtIGRvYworICAgICogQHBhcmFtIHByZWZpeExpc3QKKyAgICAqLworICAgcHVibGljIEluY2x1c2l2ZU5hbWVzcGFjZXMoRG9jdW1lbnQgZG9jLCBTdHJpbmcgcHJlZml4TGlzdCkgeworICAgICAgdGhpcyhkb2MsIEluY2x1c2l2ZU5hbWVzcGFjZXMucHJlZml4U3RyMlNldChwcmVmaXhMaXN0KSk7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgSW5jbHVzaXZlTmFtZXNwYWNlcworICAgICoKKyAgICAqIEBwYXJhbSBkb2MKKyAgICAqIEBwYXJhbSBwcmVmaXhlcworICAgICovCisgICBwdWJsaWMgSW5jbHVzaXZlTmFtZXNwYWNlcyhEb2N1bWVudCBkb2MsIFNldCBwcmVmaXhlcykgeworCisgICAgICBzdXBlcihkb2MpOworCisgICAgICBTdHJpbmdCdWZmZXIgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICBTb3J0ZWRTZXQgcHJlZml4TGlzdCA9IG5ldyBUcmVlU2V0KHByZWZpeGVzKTsKKworCisgICAgICBJdGVyYXRvciBpdCA9IHByZWZpeExpc3QuaXRlcmF0b3IoKTsKKworICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkgeworICAgICAgICAgU3RyaW5nIHByZWZpeCA9IChTdHJpbmcpIGl0Lm5leHQoKTsKKworICAgICAgICAgaWYgKHByZWZpeC5lcXVhbHMoInhtbG5zIikpIHsKKyAgICAgICAgICAgIHNiLmFwcGVuZCgiI2RlZmF1bHQgIik7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2IuYXBwZW5kKHByZWZpeCArICIgIik7CisgICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQKKyAgICAgICAgIC5zZXRBdHRyaWJ1dGVOUyhudWxsLCBJbmNsdXNpdmVOYW1lc3BhY2VzLl9BVFRfRUNfUFJFRklYTElTVCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2IudG9TdHJpbmcoKS50cmltKCkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRJbmNsdXNpdmVOYW1lc3BhY2VzCisgICAgKgorICAgICogQHJldHVybiBUaGUgSW5jbHVzaXZlIE5hbWVzcGFjZSBzdHJpbmcKKyAgICAqLworICAgcHVibGljIFN0cmluZyBnZXRJbmNsdXNpdmVOYW1lc3BhY2VzKCkgeworICAgICAgcmV0dXJuIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQKKyAgICAgICAgIC5nZXRBdHRyaWJ1dGVOUyhudWxsLCBJbmNsdXNpdmVOYW1lc3BhY2VzLl9BVFRfRUNfUFJFRklYTElTVCk7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgSW5jbHVzaXZlTmFtZXNwYWNlcworICAgICoKKyAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgSW5jbHVzaXZlTmFtZXNwYWNlcyhFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJKQorICAgICAgICAgICB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworICAgICAgc3VwZXIoZWxlbWVudCwgQmFzZVVSSSk7CisgICB9CisKKyAgIC8qKgorICAgICogRGVjb2RlcyB0aGUgPGNvZGU+aW5jbHVzaXZlTmFtZXNwYWNlczwvY29kZT4gU3RyaW5nIGFuZCByZXR1cm5zIGFsbAorICAgICogc2VsZWN0ZWQgbmFtZXNwYWNlIHByZWZpeGVzIGFzIGEgU2V0LiBUaGUgPGNvZGU+I2RlZmF1bHQ8L2NvZGU+CisgICAgKiBuYW1lc3BhY2UgdG9rZW4gaXMgcmVwcmVzZW50ZWQgYXMgYW4gZW1wdHkgbmFtZXNwYWNlIHByZWZpeAorICAgICogKDxjb2RlPiJ4bWxucyI8L2NvZGU+KS4KKyAgICAqIDxCUi8+CisgICAgKiBUaGUgU3RyaW5nIDxjb2RlPmluY2x1c2l2ZU5hbWVzcGFjZXM9IiB4ZW5jICAgIGRzICNkZWZhdWx0IjwvY29kZT4KKyAgICAqIGlzIHJldHVybmVkIGFzIGEgU2V0IGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyBTdHJpbmdzOgorICAgICogPFVMPgorICAgICogPExJPjxjb2RlPnhtbG5zPC9jb2RlPjwvTEk+CisgICAgKiA8TEk+PGNvZGU+eGVuYzwvY29kZT48L0xJPgorICAgICogPExJPjxjb2RlPmRzPC9jb2RlPjwvTEk+CisgICAgKiA8L1VMPgorICAgICoKKyAgICAqIEBwYXJhbSBpbmNsdXNpdmVOYW1lc3BhY2VzCisgICAgKiBAcmV0dXJuIEEgc2V0IHRvIHN0cmluZworICAgICovCisgICBwdWJsaWMgc3RhdGljIFNvcnRlZFNldCBwcmVmaXhTdHIyU2V0KFN0cmluZyBpbmNsdXNpdmVOYW1lc3BhY2VzKSB7CisKKyAgICAgIFNvcnRlZFNldCBwcmVmaXhlcyA9IG5ldyBUcmVlU2V0KCk7CisKKyAgICAgIGlmICgoaW5jbHVzaXZlTmFtZXNwYWNlcyA9PSBudWxsKQorICAgICAgICAgICAgICB8fCAoaW5jbHVzaXZlTmFtZXNwYWNlcy5sZW5ndGgoKSA9PSAwKSkgeworICAgICAgICAgcmV0dXJuIHByZWZpeGVzOworICAgICAgfQorCisgICAgICBTdHJpbmdUb2tlbml6ZXIgc3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKGluY2x1c2l2ZU5hbWVzcGFjZXMsICIgXHRcclxuIik7CisKKyAgICAgIHdoaWxlIChzdC5oYXNNb3JlVG9rZW5zKCkpIHsKKyAgICAgICAgIFN0cmluZyBwcmVmaXggPSBzdC5uZXh0VG9rZW4oKTsKKworICAgICAgICAgaWYgKHByZWZpeC5lcXVhbHMoIiNkZWZhdWx0IikpIHsKKyAgICAgICAgICAgIHByZWZpeGVzLmFkZCgieG1sbnMiICk7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcHJlZml4ZXMuYWRkKCBwcmVmaXgpOworICAgICAgICAgfQorICAgICAgfQorCisgICAgICByZXR1cm4gcHJlZml4ZXM7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGdldEJhc2VOYW1lc3BhY2UKKyAgICAqCisgICAgKiBAaW5oZXJpdERvYworICAgICovCisgICBwdWJsaWMgU3RyaW5nIGdldEJhc2VOYW1lc3BhY2UoKSB7CisgICAgICByZXR1cm4gSW5jbHVzaXZlTmFtZXNwYWNlcy5FeGNsdXNpdmVDYW5vbmljYWxpemF0aW9uTmFtZXNwYWNlOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRCYXNlTG9jYWxOYW1lCisgICAgKgorICAgICogQGluaGVyaXREb2MKKyAgICAqLworICAgcHVibGljIFN0cmluZyBnZXRCYXNlTG9jYWxOYW1lKCkgeworICAgICAgcmV0dXJuIEluY2x1c2l2ZU5hbWVzcGFjZXMuX1RBR19FQ19JTkNMVVNJVkVOQU1FU1BBQ0VTOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RyYW5zZm9ybXMvcGFyYW1zL1hQYXRoMkZpbHRlckNvbnRhaW5lci5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RyYW5zZm9ybXMvcGFyYW1zL1hQYXRoMkZpbHRlckNvbnRhaW5lci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3MjYwMTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9wYXJhbXMvWFBhdGgyRmlsdGVyQ29udGFpbmVyLmphdmEKQEAgLTAsMCArMSwzMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMucGFyYW1zOworCisKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmV4Y2VwdGlvbnMuWE1MU2VjdXJpdHlFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1QYXJhbTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5FbGVtZW50UHJveHk7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuSGVscGVyTm9kZUxpc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OworCisKKy8qKgorICogSW1wbGVtZW50cyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIDxBCisgKiBIUkVGPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWxkc2lnLWZpbHRlcjIvIj5YUGF0aCBGaWx0ZXIgdjIuMDwvQT4uCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICogQHNlZSA8QSBIUkVGPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWxkc2lnLWZpbHRlcjIvIj5YUGF0aCBGaWx0ZXIgdjIuMCAoVFIpPC9BPgorICogQHNlZSA8QSBIUkVGPSJodHRwOi8vd3d3LnczLm9yZy9TaWduYXR1cmUvRHJhZnRzL3htbGRzaWcteGZpbHRlcjIvIj5YUGF0aCBGaWx0ZXIgdjIuMCAoZWRpdG9ycyBjb3B5KTwvQT4KKyAqLworcHVibGljIGNsYXNzIFhQYXRoMkZpbHRlckNvbnRhaW5lciBleHRlbmRzIEVsZW1lbnRQcm94eQorICAgICAgICBpbXBsZW1lbnRzIFRyYW5zZm9ybVBhcmFtIHsKKworICAgLyoqIEZpZWxkIF9BVFRfRklMVEVSICovCisgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgX0FUVF9GSUxURVIgPSAiRmlsdGVyIjsKKworICAgLyoqIEZpZWxkIF9BVFRfRklMVEVSX1ZBTFVFX0lOVEVSU0VDVCAqLworICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIF9BVFRfRklMVEVSX1ZBTFVFX0lOVEVSU0VDVCA9ICJpbnRlcnNlY3QiOworCisgICAvKiogRmllbGQgX0FUVF9GSUxURVJfVkFMVUVfU1VCVFJBQ1QgKi8KKyAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBfQVRUX0ZJTFRFUl9WQUxVRV9TVUJUUkFDVCA9ICJzdWJ0cmFjdCI7CisKKyAgIC8qKiBGaWVsZCBfQVRUX0ZJTFRFUl9WQUxVRV9VTklPTiAqLworICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIF9BVFRfRklMVEVSX1ZBTFVFX1VOSU9OID0gInVuaW9uIjsKKworICAgLyoqIEZpZWxkIElOVEVSU0VDVCAqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSU5URVJTRUNUID0KKyAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lci5fQVRUX0ZJTFRFUl9WQUxVRV9JTlRFUlNFQ1Q7CisKKyAgIC8qKiBGaWVsZCBTVUJUUkFDVCAqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1VCVFJBQ1QgPQorICAgICAgWFBhdGgyRmlsdGVyQ29udGFpbmVyLl9BVFRfRklMVEVSX1ZBTFVFX1NVQlRSQUNUOworCisgICAvKiogRmllbGQgVU5JT04gKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFVOSU9OID0KKyAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lci5fQVRUX0ZJTFRFUl9WQUxVRV9VTklPTjsKKworICAgLyoqIEZpZWxkIF9UQUdfWFBBVEgyICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfVEFHX1hQQVRIMiA9ICJYUGF0aCI7CisKKyAgIC8qKiBGaWVsZCBYUGF0aEZpbGVyMk5TICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBYUGF0aEZpbHRlcjJOUyA9CisgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNi94bWxkc2lnLWZpbHRlcjIiOworCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFhQYXRoMkZpbHRlckNvbnRhaW5lcgorICAgICoKKyAgICAqLworICAgcHJpdmF0ZSBYUGF0aDJGaWx0ZXJDb250YWluZXIoKSB7CisKKyAgICAgIC8vIG5vIGluc3RhbnRpYXRpb24KKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBYUGF0aDJGaWx0ZXJDb250YWluZXIKKyAgICAqCisgICAgKiBAcGFyYW0gZG9jCisgICAgKiBAcGFyYW0geHBhdGgyZmlsdGVyCisgICAgKiBAcGFyYW0gZmlsdGVyVHlwZQorICAgICovCisgICBwcml2YXRlIFhQYXRoMkZpbHRlckNvbnRhaW5lcihEb2N1bWVudCBkb2MsIFN0cmluZyB4cGF0aDJmaWx0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZmlsdGVyVHlwZSkgeworCisgICAgICBzdXBlcihkb2MpOworCisgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50CisgICAgICAgICAuc2V0QXR0cmlidXRlTlMobnVsbCwgWFBhdGgyRmlsdGVyQ29udGFpbmVyLl9BVFRfRklMVEVSLCBmaWx0ZXJUeXBlKTsKKyAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKHhwYXRoMmZpbHRlcikpOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFhQYXRoMkZpbHRlckNvbnRhaW5lcgorICAgICoKKyAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICovCisgICBwcml2YXRlIFhQYXRoMkZpbHRlckNvbnRhaW5lcihFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJKQorICAgICAgICAgICB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworCisgICAgICBzdXBlcihlbGVtZW50LCBCYXNlVVJJKTsKKworICAgICAgU3RyaW5nIGZpbHRlclN0ciA9IHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0QXR0cmlidXRlTlMobnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIuX0FUVF9GSUxURVIpOworCisgICAgICBpZiAoIWZpbHRlclN0cgorICAgICAgICAgICAgICAuZXF1YWxzKFhQYXRoMkZpbHRlckNvbnRhaW5lcgorICAgICAgICAgICAgICAuX0FUVF9GSUxURVJfVkFMVUVfSU5URVJTRUNUKSAmJiFmaWx0ZXJTdHIKKyAgICAgICAgICAgICAgICAgLmVxdWFscyhYUGF0aDJGaWx0ZXJDb250YWluZXIKKyAgICAgICAgICAgICAgICAgLl9BVFRfRklMVEVSX1ZBTFVFX1NVQlRSQUNUKSAmJiFmaWx0ZXJTdHIKKyAgICAgICAgICAgICAgICAgICAgLmVxdWFscyhYUGF0aDJGaWx0ZXJDb250YWluZXIuX0FUVF9GSUxURVJfVkFMVUVfVU5JT04pKSB7CisgICAgICAgICBPYmplY3QgZXhBcmdzW10gPSB7IFhQYXRoMkZpbHRlckNvbnRhaW5lci5fQVRUX0ZJTFRFUiwgZmlsdGVyU3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIuX0FUVF9GSUxURVJfVkFMVUVfSU5URVJTRUNUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIFhQYXRoMkZpbHRlckNvbnRhaW5lci5fQVRUX0ZJTFRFUl9WQUxVRV9TVUJUUkFDVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgb3IgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIFhQYXRoMkZpbHRlckNvbnRhaW5lci5fQVRUX0ZJTFRFUl9WQUxVRV9VTklPTiB9OworCisgICAgICAgICB0aHJvdyBuZXcgWE1MU2VjdXJpdHlFeGNlcHRpb24oImF0dHJpYnV0ZVZhbHVlSWxsZWdhbCIsIGV4QXJncyk7CisgICAgICB9CisgICB9CisKKyAgIC8qKgorICAgICogQ3JlYXRlcyBhIG5ldyBYUGF0aDJGaWx0ZXJDb250YWluZXIgd2l0aCB0aGUgZmlsdGVyIHR5cGUgImludGVyc2VjdCIuCisgICAgKgorICAgICogQHBhcmFtIGRvYworICAgICogQHBhcmFtIHhwYXRoMmZpbHRlcgorICAgICogQHJldHVybiB0aGUgZmlsdGVyLgorICAgICovCisgICBwdWJsaWMgc3RhdGljIFhQYXRoMkZpbHRlckNvbnRhaW5lciBuZXdJbnN0YW5jZUludGVyc2VjdChEb2N1bWVudCBkb2MsCisgICAgICAgICAgIFN0cmluZyB4cGF0aDJmaWx0ZXIpIHsKKworICAgICAgcmV0dXJuIG5ldyBYUGF0aDJGaWx0ZXJDb250YWluZXIoZG9jLCB4cGF0aDJmaWx0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5fQVRUX0ZJTFRFUl9WQUxVRV9JTlRFUlNFQ1QpOworICAgfQorCisgICAvKioKKyAgICAqIENyZWF0ZXMgYSBuZXcgWFBhdGgyRmlsdGVyQ29udGFpbmVyIHdpdGggdGhlIGZpbHRlciB0eXBlICJzdWJ0cmFjdCIuCisgICAgKgorICAgICogQHBhcmFtIGRvYworICAgICogQHBhcmFtIHhwYXRoMmZpbHRlcgorICAgICogQHJldHVybiB0aGUgZmlsdGVyLgorICAgICovCisgICBwdWJsaWMgc3RhdGljIFhQYXRoMkZpbHRlckNvbnRhaW5lciBuZXdJbnN0YW5jZVN1YnRyYWN0KERvY3VtZW50IGRvYywKKyAgICAgICAgICAgU3RyaW5nIHhwYXRoMmZpbHRlcikgeworCisgICAgICByZXR1cm4gbmV3IFhQYXRoMkZpbHRlckNvbnRhaW5lcihkb2MsIHhwYXRoMmZpbHRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLl9BVFRfRklMVEVSX1ZBTFVFX1NVQlRSQUNUKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDcmVhdGVzIGEgbmV3IFhQYXRoMkZpbHRlckNvbnRhaW5lciB3aXRoIHRoZSBmaWx0ZXIgdHlwZSAidW5pb24iLgorICAgICoKKyAgICAqIEBwYXJhbSBkb2MKKyAgICAqIEBwYXJhbSB4cGF0aDJmaWx0ZXIKKyAgICAqIEByZXR1cm4gdGhlIGZpbHRlcgorICAgICovCisgICBwdWJsaWMgc3RhdGljIFhQYXRoMkZpbHRlckNvbnRhaW5lciBuZXdJbnN0YW5jZVVuaW9uKERvY3VtZW50IGRvYywKKyAgICAgICAgICAgU3RyaW5nIHhwYXRoMmZpbHRlcikgeworCisgICAgICByZXR1cm4gbmV3IFhQYXRoMkZpbHRlckNvbnRhaW5lcihkb2MsIHhwYXRoMmZpbHRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLl9BVFRfRklMVEVSX1ZBTFVFX1VOSU9OKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgbmV3SW5zdGFuY2VzCisgICAgKgorICAgICogQHBhcmFtIGRvYworICAgICogQHBhcmFtIHBhcmFtcworICAgICogQHJldHVybiB0aGUgbm9kZWxpc3Qgd2l0aCB0aGUgZGF0YQorICAgICovCisgICBwdWJsaWMgc3RhdGljIE5vZGVMaXN0IG5ld0luc3RhbmNlcyhEb2N1bWVudCBkb2MsIFN0cmluZ1tdW10gcGFyYW1zKSB7CisKKyAgICAgIEhlbHBlck5vZGVMaXN0IG5sID0gbmV3IEhlbHBlck5vZGVMaXN0KCk7CisKKyAgICAgIFhNTFV0aWxzLmFkZFJldHVyblRvRWxlbWVudChkb2MsIG5sKTsKKworICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJhbXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgIFN0cmluZyB0eXBlID0gcGFyYW1zW2ldWzBdOworICAgICAgICAgU3RyaW5nIHhwYXRoID0gcGFyYW1zW2ldWzFdOworCisgICAgICAgICBpZiAoISh0eXBlLmVxdWFscyhYUGF0aDJGaWx0ZXJDb250YWluZXIKKyAgICAgICAgICAgICAgICAgLl9BVFRfRklMVEVSX1ZBTFVFX0lOVEVSU0VDVCkgfHwgdHlwZQorICAgICAgICAgICAgICAgICAgICAuZXF1YWxzKFhQYXRoMkZpbHRlckNvbnRhaW5lcgorICAgICAgICAgICAgICAgICAgICAuX0FUVF9GSUxURVJfVkFMVUVfU1VCVFJBQ1QpIHx8IHR5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgLmVxdWFscyhYUGF0aDJGaWx0ZXJDb250YWluZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLl9BVFRfRklMVEVSX1ZBTFVFX1VOSU9OKSkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlRoZSB0eXBlKCIgKyBpICsgIik9XCIiICsgdHlwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJcIiBpcyBpbGxlZ2FsIik7CisgICAgICAgICB9CisKKyAgICAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lciBjID0gbmV3IFhQYXRoMkZpbHRlckNvbnRhaW5lcihkb2MsIHhwYXRoLCB0eXBlKTsKKworICAgICAgICAgbmwuYXBwZW5kQ2hpbGQoYy5nZXRFbGVtZW50KCkpOworICAgICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KGRvYywgbmwpOworICAgICAgfQorCisgICAgICByZXR1cm4gbmw7CisgICB9CisKKyAgIC8qKgorICAgICogQ3JlYXRlcyBhIFhQYXRoMkZpbHRlckNvbnRhaW5lciBmcm9tIGFuIGV4aXN0aW5nIEVsZW1lbnQ7IG5lZWRlZCBmb3IgdmVyaWZpY2F0aW9uLgorICAgICoKKyAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICogQHJldHVybiB0aGUgZmlsdGVyCisgICAgKgorICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIFhQYXRoMkZpbHRlckNvbnRhaW5lciBuZXdJbnN0YW5jZSgKKyAgICAgICAgICAgRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSkgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKyAgICAgIHJldHVybiBuZXcgWFBhdGgyRmlsdGVyQ29udGFpbmVyKGVsZW1lbnQsIEJhc2VVUkkpOworICAgfQorCisgICAvKioKKyAgICAqIFJldHVybnMgPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIDxjb2RlPkZpbHRlcjwvY29kZT4gYXR0cmlidXRlIGhhcyB2YWx1ZSAiaW50ZXJzZWN0Ii4KKyAgICAqCisgICAgKiBAcmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSA8Y29kZT5GaWx0ZXI8L2NvZGU+IGF0dHJpYnV0ZSBoYXMgdmFsdWUgImludGVyc2VjdCIuCisgICAgKi8KKyAgIHB1YmxpYyBib29sZWFuIGlzSW50ZXJzZWN0KCkgeworCisgICAgICByZXR1cm4gdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudAorICAgICAgICAgLmdldEF0dHJpYnV0ZU5TKG51bGwsIFhQYXRoMkZpbHRlckNvbnRhaW5lci5fQVRUX0ZJTFRFUikKKyAgICAgICAgIC5lcXVhbHMoWFBhdGgyRmlsdGVyQ29udGFpbmVyLl9BVFRfRklMVEVSX1ZBTFVFX0lOVEVSU0VDVCk7CisgICB9CisKKyAgIC8qKgorICAgICogUmV0dXJucyA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgPGNvZGU+RmlsdGVyPC9jb2RlPiBhdHRyaWJ1dGUgaGFzIHZhbHVlICJzdWJ0cmFjdCIuCisgICAgKgorICAgICogQHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgPGNvZGU+RmlsdGVyPC9jb2RlPiBhdHRyaWJ1dGUgaGFzIHZhbHVlICJzdWJ0cmFjdCIuCisgICAgKi8KKyAgIHB1YmxpYyBib29sZWFuIGlzU3VidHJhY3QoKSB7CisKKyAgICAgIHJldHVybiB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50CisgICAgICAgICAuZ2V0QXR0cmlidXRlTlMobnVsbCwgWFBhdGgyRmlsdGVyQ29udGFpbmVyLl9BVFRfRklMVEVSKQorICAgICAgICAgLmVxdWFscyhYUGF0aDJGaWx0ZXJDb250YWluZXIuX0FUVF9GSUxURVJfVkFMVUVfU1VCVFJBQ1QpOworICAgfQorCisgICAvKioKKyAgICAqIFJldHVybnMgPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIDxjb2RlPkZpbHRlcjwvY29kZT4gYXR0cmlidXRlIGhhcyB2YWx1ZSAidW5pb24iLgorICAgICoKKyAgICAqIEByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIDxjb2RlPkZpbHRlcjwvY29kZT4gYXR0cmlidXRlIGhhcyB2YWx1ZSAidW5pb24iLgorICAgICovCisgICBwdWJsaWMgYm9vbGVhbiBpc1VuaW9uKCkgeworCisgICAgICByZXR1cm4gdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudAorICAgICAgICAgLmdldEF0dHJpYnV0ZU5TKG51bGwsIFhQYXRoMkZpbHRlckNvbnRhaW5lci5fQVRUX0ZJTFRFUikKKyAgICAgICAgIC5lcXVhbHMoWFBhdGgyRmlsdGVyQ29udGFpbmVyLl9BVFRfRklMVEVSX1ZBTFVFX1VOSU9OKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBSZXR1cm5zIHRoZSBYUGF0aCAyIEZpbHRlciBTdHJpbmcKKyAgICAqCisgICAgKiBAcmV0dXJuIHRoZSBYUGF0aCAyIEZpbHRlciBTdHJpbmcKKyAgICAqLworICAgcHVibGljIFN0cmluZyBnZXRYUGF0aEZpbHRlclN0cigpIHsKKyAgICAgIHJldHVybiB0aGlzLmdldFRleHRGcm9tVGV4dENoaWxkKCk7CisgICB9CisKKyAgIC8qKgorICAgICogUmV0dXJucyB0aGUgZmlyc3QgVGV4dCBub2RlIHdoaWNoIGNvbnRhaW5zIGluZm9ybWF0aW9uIGZyb20gdGhlIFhQYXRoIDIKKyAgICAqIEZpbHRlciBTdHJpbmcuIFdlIG11c3QgdXNlIHRoaXMgc3R1cGlkIGhvb2sgdG8gZW5hYmxlIHRoZSBoZXJlKCkgZnVuY3Rpb24KKyAgICAqIHRvIHdvcmsuCisgICAgKgorICAgICogJHRvZG8kIEkgZHVubm8gd2hldGhlciB0aGlzIGNyYXNoZXM6IDxYUGF0aD4gaGVyZSgpPCEtLSBjb21tZW50IC0tPi9kczpTaWduYXR1cmVbMV08L1hQYXRoPgorICAgICogQHJldHVybiB0aGUgZmlyc3QgVGV4dCBub2RlIHdoaWNoIGNvbnRhaW5zIGluZm9ybWF0aW9uIGZyb20gdGhlIFhQYXRoIDIgRmlsdGVyIFN0cmluZworICAgICovCisgICBwdWJsaWMgTm9kZSBnZXRYUGF0aEZpbHRlclRleHROb2RlKCkgeworCisgICAgICBOb2RlTGlzdCBjaGlsZHJlbiA9IHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0Q2hpbGROb2RlcygpOworICAgICAgaW50IGxlbmd0aCA9IGNoaWxkcmVuLmdldExlbmd0aCgpOworCisgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgICBpZiAoY2hpbGRyZW4uaXRlbShpKS5nZXROb2RlVHlwZSgpID09IE5vZGUuVEVYVF9OT0RFKSB7CisgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW4uaXRlbShpKTsKKyAgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgcmV0dXJuIG51bGw7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGdldEJhc2VMb2NhbE5hbWUKKyAgICAqCisgICAgKiBAcmV0dXJuIHRoZSBYUEFUSDIgdGFnCisgICAgKi8KKyAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0QmFzZUxvY2FsTmFtZSgpIHsKKyAgICAgIHJldHVybiBYUGF0aDJGaWx0ZXJDb250YWluZXIuX1RBR19YUEFUSDI7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGdldEJhc2VOYW1lc3BhY2UKKyAgICAqCisgICAgKiBAcmV0dXJuIFhQQVRIMiB0YWcgbmFtZXNwYWNlCisgICAgKi8KKyAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0QmFzZU5hbWVzcGFjZSgpIHsKKyAgICAgIHJldHVybiBYUGF0aDJGaWx0ZXJDb250YWluZXIuWFBhdGhGaWx0ZXIyTlM7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9wYXJhbXMvWFBhdGgyRmlsdGVyQ29udGFpbmVyMDQuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL3BhcmFtcy9YUGF0aDJGaWx0ZXJDb250YWluZXIwNC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4NTU4ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9wYXJhbXMvWFBhdGgyRmlsdGVyQ29udGFpbmVyMDQuamF2YQpAQCAtMCwwICsxLDI2MyBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5wYXJhbXM7CisKKworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybVBhcmFtOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkVsZW1lbnRQcm94eTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5YTUxVdGlsczsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7CisKKworLyoqCisgKiBJbXBsZW1lbnRzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgPEEKKyAqIEhSRUY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbGRzaWctZmlsdGVyMi8iPlhQYXRoIEZpbHRlciB2Mi4wPC9BPi4KKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKiBAc2VlIDxBIEhSRUY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbGRzaWctZmlsdGVyMi8iPlhQYXRoIEZpbHRlciB2Mi4wIChUUik8L0E+CisgKiBAc2VlIDxBIEhSRUY9Imh0dHA6Ly93d3cudzMub3JnL1NpZ25hdHVyZS9EcmFmdHMveG1sZHNpZy14ZmlsdGVyMi8iPlhQYXRoIEZpbHRlciB2Mi4wIChlZGl0b3JzIGNvcHkpPC9BPgorICovCitwdWJsaWMgY2xhc3MgWFBhdGgyRmlsdGVyQ29udGFpbmVyMDQgZXh0ZW5kcyBFbGVtZW50UHJveHkKKyAgICAgICAgaW1wbGVtZW50cyBUcmFuc2Zvcm1QYXJhbSB7CisKKyAgIC8qKiBGaWVsZCBfQVRUX0ZJTFRFUiAqLworICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIF9BVFRfRklMVEVSID0gIkZpbHRlciI7CisKKyAgIC8qKiBGaWVsZCBfQVRUX0ZJTFRFUl9WQUxVRV9JTlRFUlNFQ1QgKi8KKyAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBfQVRUX0ZJTFRFUl9WQUxVRV9JTlRFUlNFQ1QgPSAiaW50ZXJzZWN0IjsKKworICAgLyoqIEZpZWxkIF9BVFRfRklMVEVSX1ZBTFVFX1NVQlRSQUNUICovCisgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgX0FUVF9GSUxURVJfVkFMVUVfU1VCVFJBQ1QgPSAic3VidHJhY3QiOworCisgICAvKiogRmllbGQgX0FUVF9GSUxURVJfVkFMVUVfVU5JT04gKi8KKyAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBfQVRUX0ZJTFRFUl9WQUxVRV9VTklPTiA9ICJ1bmlvbiI7CisKKyAgIC8qKiBGaWVsZCBfVEFHX1hQQVRIMiAqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgX1RBR19YUEFUSDIgPSAiWFBhdGgiOworCisgICAvKiogRmllbGQgWFBhdGhGaWxlcjJOUyAqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgWFBhdGhGaWx0ZXIyTlMgPQorICAgICAgImh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDQveG1sZHNpZy1maWx0ZXIyIjsKKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBYUGF0aDJGaWx0ZXJDb250YWluZXIwNAorICAgICoKKyAgICAqLworICAgcHJpdmF0ZSBYUGF0aDJGaWx0ZXJDb250YWluZXIwNCgpIHsKKworICAgICAgLy8gbm8gaW5zdGFudGlhdGlvbgorICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFhQYXRoMkZpbHRlckNvbnRhaW5lcjA0CisgICAgKgorICAgICogQHBhcmFtIGRvYworICAgICogQHBhcmFtIHhwYXRoMmZpbHRlcgorICAgICogQHBhcmFtIGZpbHRlclR5cGUKKyAgICAqLworICAgcHJpdmF0ZSBYUGF0aDJGaWx0ZXJDb250YWluZXIwNChEb2N1bWVudCBkb2MsIFN0cmluZyB4cGF0aDJmaWx0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZmlsdGVyVHlwZSkgeworCisgICAgICBzdXBlcihkb2MpOworCisgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LnNldEF0dHJpYnV0ZU5TKG51bGwsIFhQYXRoMkZpbHRlckNvbnRhaW5lcjA0Ll9BVFRfRklMVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyVHlwZSk7CisKKyAgICAgIGlmICgoeHBhdGgyZmlsdGVyLmxlbmd0aCgpID4gMikKKyAgICAgICAgICAgICAgJiYgKCFDaGFyYWN0ZXIuaXNXaGl0ZXNwYWNlKHhwYXRoMmZpbHRlci5jaGFyQXQoMCkpKSkgeworCSBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCk7CisJIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKHhwYXRoMmZpbHRlcikpOworCSBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCk7CisgICAgICB9IGVsc2UgeworICAgICAgICAgdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudAorICAgICAgICAgICAgLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSh4cGF0aDJmaWx0ZXIpKTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBYUGF0aDJGaWx0ZXJDb250YWluZXIwNAorICAgICoKKyAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICovCisgICBwcml2YXRlIFhQYXRoMkZpbHRlckNvbnRhaW5lcjA0KEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIEJhc2VVUkkpCisgICAgICAgICAgIHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisKKyAgICAgIHN1cGVyKGVsZW1lbnQsIEJhc2VVUkkpOworCisgICAgICBTdHJpbmcgZmlsdGVyU3RyID0KKyAgICAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQKKyAgICAgICAgICAgIC5nZXRBdHRyaWJ1dGVOUyhudWxsLCBYUGF0aDJGaWx0ZXJDb250YWluZXIwNC5fQVRUX0ZJTFRFUik7CisKKyAgICAgIGlmICghZmlsdGVyU3RyCisgICAgICAgICAgICAgIC5lcXVhbHMoWFBhdGgyRmlsdGVyQ29udGFpbmVyMDQKKyAgICAgICAgICAgICAgLl9BVFRfRklMVEVSX1ZBTFVFX0lOVEVSU0VDVCkgJiYhZmlsdGVyU3RyCisgICAgICAgICAgICAgICAgIC5lcXVhbHMoWFBhdGgyRmlsdGVyQ29udGFpbmVyMDQKKyAgICAgICAgICAgICAgICAgLl9BVFRfRklMVEVSX1ZBTFVFX1NVQlRSQUNUKSAmJiFmaWx0ZXJTdHIKKyAgICAgICAgICAgICAgICAgICAgLmVxdWFscyhYUGF0aDJGaWx0ZXJDb250YWluZXIwNC5fQVRUX0ZJTFRFUl9WQUxVRV9VTklPTikpIHsKKyAgICAgICAgIE9iamVjdCBleEFyZ3NbXSA9IHsgWFBhdGgyRmlsdGVyQ29udGFpbmVyMDQuX0FUVF9GSUxURVIsIGZpbHRlclN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFBhdGgyRmlsdGVyQ29udGFpbmVyMDQuX0FUVF9GSUxURVJfVkFMVUVfSU5URVJTRUNUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIFhQYXRoMkZpbHRlckNvbnRhaW5lcjA0Ll9BVFRfRklMVEVSX1ZBTFVFX1NVQlRSQUNUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBvciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgWFBhdGgyRmlsdGVyQ29udGFpbmVyMDQuX0FUVF9GSUxURVJfVkFMVUVfVU5JT04gfTsKKworICAgICAgICAgdGhyb3cgbmV3IFhNTFNlY3VyaXR5RXhjZXB0aW9uKCJhdHRyaWJ1dGVWYWx1ZUlsbGVnYWwiLCBleEFyZ3MpOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIENyZWF0ZXMgYSBuZXcgWFBhdGgyRmlsdGVyQ29udGFpbmVyMDQgd2l0aCB0aGUgZmlsdGVyIHR5cGUgImludGVyc2VjdCIuCisgICAgKgorICAgICogQHBhcmFtIGRvYworICAgICogQHBhcmFtIHhwYXRoMmZpbHRlcgorICAgICogQHJldHVybiB0aGUgaW5zdGFuY2UKKyAgICAqLworICAgcHVibGljIHN0YXRpYyBYUGF0aDJGaWx0ZXJDb250YWluZXIwNCBuZXdJbnN0YW5jZUludGVyc2VjdChEb2N1bWVudCBkb2MsCisgICAgICAgICAgIFN0cmluZyB4cGF0aDJmaWx0ZXIpIHsKKworICAgICAgcmV0dXJuIG5ldyBYUGF0aDJGaWx0ZXJDb250YWluZXIwNChkb2MsIHhwYXRoMmZpbHRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lcjA0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuX0FUVF9GSUxURVJfVkFMVUVfSU5URVJTRUNUKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDcmVhdGVzIGEgbmV3IFhQYXRoMkZpbHRlckNvbnRhaW5lcjA0IHdpdGggdGhlIGZpbHRlciB0eXBlICJzdWJ0cmFjdCIuCisgICAgKgorICAgICogQHBhcmFtIGRvYworICAgICogQHBhcmFtIHhwYXRoMmZpbHRlcgorICAgICogQHJldHVybiB0aGUgaW5zdGFuY2UKKyAgICAqLworICAgcHVibGljIHN0YXRpYyBYUGF0aDJGaWx0ZXJDb250YWluZXIwNCBuZXdJbnN0YW5jZVN1YnRyYWN0KERvY3VtZW50IGRvYywKKyAgICAgICAgICAgU3RyaW5nIHhwYXRoMmZpbHRlcikgeworCisgICAgICByZXR1cm4gbmV3IFhQYXRoMkZpbHRlckNvbnRhaW5lcjA0KGRvYywgeHBhdGgyZmlsdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFBhdGgyRmlsdGVyQ29udGFpbmVyMDQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5fQVRUX0ZJTFRFUl9WQUxVRV9TVUJUUkFDVCk7CisgICB9CisKKyAgIC8qKgorICAgICogQ3JlYXRlcyBhIG5ldyBYUGF0aDJGaWx0ZXJDb250YWluZXIwNCB3aXRoIHRoZSBmaWx0ZXIgdHlwZSAidW5pb24iLgorICAgICoKKyAgICAqIEBwYXJhbSBkb2MKKyAgICAqIEBwYXJhbSB4cGF0aDJmaWx0ZXIKKyAgICAqIEByZXR1cm4gdGhlIGluc3RhbmNlCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgWFBhdGgyRmlsdGVyQ29udGFpbmVyMDQgbmV3SW5zdGFuY2VVbmlvbihEb2N1bWVudCBkb2MsCisgICAgICAgICAgIFN0cmluZyB4cGF0aDJmaWx0ZXIpIHsKKworICAgICAgcmV0dXJuIG5ldyBYUGF0aDJGaWx0ZXJDb250YWluZXIwNChkb2MsIHhwYXRoMmZpbHRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lcjA0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuX0FUVF9GSUxURVJfVkFMVUVfVU5JT04pOworICAgfQorCisgICAvKioKKyAgICAqIENyZWF0ZXMgYSBYUGF0aDJGaWx0ZXJDb250YWluZXIwNCBmcm9tIGFuIGV4aXN0aW5nIEVsZW1lbnQ7IG5lZWRlZCBmb3IgdmVyaWZpY2F0aW9uLgorICAgICoKKyAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICogQHJldHVybiB0aGUgaW5zdGFuY2UKKyAgICAqCisgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgWFBhdGgyRmlsdGVyQ29udGFpbmVyMDQgbmV3SW5zdGFuY2UoCisgICAgICAgICAgIEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIEJhc2VVUkkpIHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisgICAgICByZXR1cm4gbmV3IFhQYXRoMkZpbHRlckNvbnRhaW5lcjA0KGVsZW1lbnQsIEJhc2VVUkkpOworICAgfQorCisgICAvKioKKyAgICAqIFJldHVybnMgPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIDxjb2RlPkZpbHRlcjwvY29kZT4gYXR0cmlidXRlIGhhcyB2YWx1ZSAiaW50ZXJzZWN0Ii4KKyAgICAqCisgICAgKiBAcmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSA8Y29kZT5GaWx0ZXI8L2NvZGU+IGF0dHJpYnV0ZSBoYXMgdmFsdWUgImludGVyc2VjdCIuCisgICAgKi8KKyAgIHB1YmxpYyBib29sZWFuIGlzSW50ZXJzZWN0KCkgeworCisgICAgICByZXR1cm4gdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudAorICAgICAgICAgLmdldEF0dHJpYnV0ZU5TKG51bGwsIFhQYXRoMkZpbHRlckNvbnRhaW5lcjA0Ll9BVFRfRklMVEVSKQorICAgICAgICAgLmVxdWFscyhYUGF0aDJGaWx0ZXJDb250YWluZXIwNC5fQVRUX0ZJTFRFUl9WQUxVRV9JTlRFUlNFQ1QpOworICAgfQorCisgICAvKioKKyAgICAqIFJldHVybnMgPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIDxjb2RlPkZpbHRlcjwvY29kZT4gYXR0cmlidXRlIGhhcyB2YWx1ZSAic3VidHJhY3QiLgorICAgICoKKyAgICAqIEByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIDxjb2RlPkZpbHRlcjwvY29kZT4gYXR0cmlidXRlIGhhcyB2YWx1ZSAic3VidHJhY3QiLgorICAgICovCisgICBwdWJsaWMgYm9vbGVhbiBpc1N1YnRyYWN0KCkgeworCisgICAgICByZXR1cm4gdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudAorICAgICAgICAgLmdldEF0dHJpYnV0ZU5TKG51bGwsIFhQYXRoMkZpbHRlckNvbnRhaW5lcjA0Ll9BVFRfRklMVEVSKQorICAgICAgICAgLmVxdWFscyhYUGF0aDJGaWx0ZXJDb250YWluZXIwNC5fQVRUX0ZJTFRFUl9WQUxVRV9TVUJUUkFDVCk7CisgICB9CisKKyAgIC8qKgorICAgICogUmV0dXJucyA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgPGNvZGU+RmlsdGVyPC9jb2RlPiBhdHRyaWJ1dGUgaGFzIHZhbHVlICJ1bmlvbiIuCisgICAgKgorICAgICogQHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgPGNvZGU+RmlsdGVyPC9jb2RlPiBhdHRyaWJ1dGUgaGFzIHZhbHVlICJ1bmlvbiIuCisgICAgKi8KKyAgIHB1YmxpYyBib29sZWFuIGlzVW5pb24oKSB7CisKKyAgICAgIHJldHVybiB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50CisgICAgICAgICAuZ2V0QXR0cmlidXRlTlMobnVsbCwgWFBhdGgyRmlsdGVyQ29udGFpbmVyMDQuX0FUVF9GSUxURVIpCisgICAgICAgICAuZXF1YWxzKFhQYXRoMkZpbHRlckNvbnRhaW5lcjA0Ll9BVFRfRklMVEVSX1ZBTFVFX1VOSU9OKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBSZXR1cm5zIHRoZSBYUGF0aCAyIEZpbHRlciBTdHJpbmcKKyAgICAqCisgICAgKiBAcmV0dXJuIHRoZSBYUGF0aCAyIEZpbHRlciBTdHJpbmcKKyAgICAqLworICAgcHVibGljIFN0cmluZyBnZXRYUGF0aEZpbHRlclN0cigpIHsKKyAgICAgIHJldHVybiB0aGlzLmdldFRleHRGcm9tVGV4dENoaWxkKCk7CisgICB9CisKKyAgIC8qKgorICAgICogUmV0dXJucyB0aGUgZmlyc3QgVGV4dCBub2RlIHdoaWNoIGNvbnRhaW5zIGluZm9ybWF0aW9uIGZyb20gdGhlIFhQYXRoIDIKKyAgICAqIEZpbHRlciBTdHJpbmcuIFdlIG11c3QgdXNlIHRoaXMgc3R1cGlkIGhvb2sgdG8gZW5hYmxlIHRoZSBoZXJlKCkgZnVuY3Rpb24KKyAgICAqIHRvIHdvcmsuCisgICAgKgorICAgICogJHRvZG8kIEkgZHVubm8gd2hldGhlciB0aGlzIGNyYXNoZXM6IDxYUGF0aD4gaGVyZSgpPCEtLSBjb21tZW50IC0tPi9kczpTaWduYXR1cmVbMV08L1hQYXRoPgorICAgICogQHJldHVybiB0aGUgZmlyc3QgVGV4dCBub2RlIHdoaWNoIGNvbnRhaW5zIGluZm9ybWF0aW9uIGZyb20gdGhlIFhQYXRoIDIgRmlsdGVyIFN0cmluZworICAgICovCisgICBwdWJsaWMgTm9kZSBnZXRYUGF0aEZpbHRlclRleHROb2RlKCkgeworICAgICAgTm9kZUxpc3QgY2hpbGRyZW4gPSB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmdldENoaWxkTm9kZXMoKTsKKyAgICAgIGludCBsZW5ndGggPSBjaGlsZHJlbi5nZXRMZW5ndGgoKTsKKworICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgaWYgKGNoaWxkcmVuLml0ZW0oaSkuZ2V0Tm9kZVR5cGUoKSA9PSBOb2RlLlRFWFRfTk9ERSkgeworICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuLml0ZW0oaSk7CisgICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHJldHVybiBudWxsOworICAgfQorCisgICAvKiogQGluaGVyaXREb2MgKi8KKyAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0QmFzZUxvY2FsTmFtZSgpIHsKKyAgICAgIHJldHVybiBYUGF0aDJGaWx0ZXJDb250YWluZXIwNC5fVEFHX1hQQVRIMjsKKyAgIH0KKworICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldEJhc2VOYW1lc3BhY2UoKSB7CisgICAgICByZXR1cm4gWFBhdGgyRmlsdGVyQ29udGFpbmVyMDQuWFBhdGhGaWx0ZXIyTlM7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9wYXJhbXMvWFBhdGhDb250YWluZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL3BhcmFtcy9YUGF0aENvbnRhaW5lci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5ZmQ4MmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9wYXJhbXMvWFBhdGhDb250YWluZXIuamF2YQpAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLnBhcmFtczsKKworCisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybVBhcmFtOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5TaWduYXR1cmVFbGVtZW50UHJveHk7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7CitpbXBvcnQgb3JnLnczYy5kb20uVGV4dDsKKworCisvKioKKyAqIFRoaXMgT2JqZWN0IHNlcnZlcyBib3RoIGFzIG5hbWVzcGFjZSBwcmVmaXggcmVzb2x2ZXIgYW5kIGFzIGNvbnRhaW5lciBmb3IKKyAqIHRoZSA8Q09ERT5kczpYUGF0aDwvQ09ERT4gRWxlbWVudC4gSXQgaW1wbGVtZW50cyB0aGUge0BsaW5rIG9yZy53M2MuZG9tLkVsZW1lbnR9IGludGVyZmFjZQorICogYW5kIGNhbiBiZSB1c2VkIGRpcmVjdGx5IGluIGEgRE9NIHRyZWUuCisgKgorICogQGF1dGhvciBDaHJpc3RpYW4gR2V1ZXItUG9sbG1hbm4KKyAqLworcHVibGljIGNsYXNzIFhQYXRoQ29udGFpbmVyIGV4dGVuZHMgU2lnbmF0dXJlRWxlbWVudFByb3h5IGltcGxlbWVudHMgVHJhbnNmb3JtUGFyYW0geworCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFhQYXRoQ29udGFpbmVyCisgICAgKgorICAgICogQHBhcmFtIGRvYworICAgICovCisgICBwdWJsaWMgWFBhdGhDb250YWluZXIoRG9jdW1lbnQgZG9jKSB7CisgICAgICBzdXBlcihkb2MpOworICAgfQorCisgICAvKioKKyAgICAqIFNldHMgdGhlIFRFWFQgdmFsdWUgb2YgdGhlIDxDT0RFPmRzOlhQYXRoPC9DT0RFPiBFbGVtZW50LgorICAgICoKKyAgICAqIEBwYXJhbSB4cGF0aAorICAgICovCisgICBwdWJsaWMgdm9pZCBzZXRYUGF0aChTdHJpbmcgeHBhdGgpIHsKKworICAgICAgaWYgKHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0Q2hpbGROb2RlcygpICE9IG51bGwpIHsKKyAgICAgICAgIE5vZGVMaXN0IG5sID0gdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5nZXRDaGlsZE5vZGVzKCk7CisKKyAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbmwuZ2V0TGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5yZW1vdmVDaGlsZChubC5pdGVtKGkpKTsKKyAgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgVGV4dCB4cGF0aFRleHQgPSB0aGlzLl9kb2MuY3JlYXRlVGV4dE5vZGUoeHBhdGgpOworICAgICAgdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5hcHBlbmRDaGlsZCh4cGF0aFRleHQpOworICAgfQorCisgICAvKioKKyAgICAqIFJldHVybnMgdGhlIFRFWFQgdmFsdWUgb2YgdGhlIDxDT0RFPmRzOlhQYXRoPC9DT0RFPiBFbGVtZW50LgorICAgICoKKyAgICAqIEByZXR1cm4gdGhlIFRFWFQgdmFsdWUgb2YgdGhlIDxDT0RFPmRzOlhQYXRoPC9DT0RFPiBFbGVtZW50LgorICAgICovCisgICBwdWJsaWMgU3RyaW5nIGdldFhQYXRoKCkgeworICAgICAgcmV0dXJuIHRoaXMuZ2V0VGV4dEZyb21UZXh0Q2hpbGQoKTsKKyAgIH0KKworICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwdWJsaWMgU3RyaW5nIGdldEJhc2VMb2NhbE5hbWUoKSB7CisgICAgICByZXR1cm4gQ29uc3RhbnRzLl9UQUdfWFBBVEg7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9wYXJhbXMvWFBhdGhGaWx0ZXJDSEdQQ29udGFpbmVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdHJhbnNmb3Jtcy9wYXJhbXMvWFBhdGhGaWx0ZXJDSEdQQ29udGFpbmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I0MTg4NQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90cmFuc2Zvcm1zL3BhcmFtcy9YUGF0aEZpbHRlckNIR1BDb250YWluZXIuamF2YQpAQCAtMCwwICsxLDMxNyBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5wYXJhbXM7CisKKworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybVBhcmFtOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5FbGVtZW50UHJveHk7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworCisKKy8qKgorICogSW1wbGVtZW50cyB0aGUgcGFyYW1ldGVycyBmb3IgYSBjdXN0b20gVHJhbnNmb3JtIHdoaWNoIGhhcyBhIGJldHRlciBwZXJmb3JtYW5jZQorICogdGhhdG4gdGhlIHhmaWx0ZXIyLgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGNsYXNzIFhQYXRoRmlsdGVyQ0hHUENvbnRhaW5lciBleHRlbmRzIEVsZW1lbnRQcm94eQorICAgICAgICBpbXBsZW1lbnRzIFRyYW5zZm9ybVBhcmFtIHsKKworICAgLyoqIEZpZWxkIF9BVFRfRklMVEVSX1ZBTFVFX0lOVEVSU0VDVCAqLworICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfSU5DTFVERV9CVVRfU0VBUkNIID0gIkluY2x1ZGVCdXRTZWFyY2giOworCisgICAvKiogRmllbGQgX0FUVF9GSUxURVJfVkFMVUVfU1VCVFJBQ1QgKi8KKyAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBfVEFHX0VYQ0xVREVfQlVUX1NFQVJDSCA9ICJFeGNsdWRlQnV0U2VhcmNoIjsKKworICAgLyoqIEZpZWxkIF9BVFRfRklMVEVSX1ZBTFVFX1VOSU9OICovCisgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgX1RBR19FWENMVURFID0gIkV4Y2x1ZGUiOworCisgICAvKiogRmllbGQgX1RBR19YUEFUSENIR1AgKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfWFBBVEhDSEdQID0gIlhQYXRoQWx0ZXJuYXRpdmUiOworCisgICAvKiogRmllbGQgX0FUVF9JTkNMVURFU0xBU0ggKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9BVFRfSU5DTFVERVNMQVNIID0gIkluY2x1ZGVTbGFzaFBvbGljeSI7CisKKyAgIC8qKiBGaWVsZCBJbmNsdWRlU2xhc2ggICAgICAgICAgICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIGJvb2xlYW4gSW5jbHVkZVNsYXNoID0gdHJ1ZTsKKworICAgLyoqIEZpZWxkIEV4Y2x1ZGVTbGFzaCAgICAgICAgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgYm9vbGVhbiBFeGNsdWRlU2xhc2ggPSBmYWxzZTsKKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBYUGF0aEZpbHRlckNIR1BDb250YWluZXIKKyAgICAqCisgICAgKi8KKyAgIHByaXZhdGUgWFBhdGhGaWx0ZXJDSEdQQ29udGFpbmVyKCkgeworCisgICAgICAvLyBubyBpbnN0YW50aWF0aW9uCisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgWFBhdGhGaWx0ZXJDSEdQQ29udGFpbmVyCisgICAgKgorICAgICogQHBhcmFtIGRvYworICAgICogQHBhcmFtIGluY2x1ZGVTbGFzaFBvbGljeQorICAgICogQHBhcmFtIGluY2x1ZGVCdXRTZWFyY2gKKyAgICAqIEBwYXJhbSBleGNsdWRlQnV0U2VhcmNoCisgICAgKiBAcGFyYW0gZXhjbHVkZQorICAgICovCisgICBwcml2YXRlIFhQYXRoRmlsdGVyQ0hHUENvbnRhaW5lcihEb2N1bWVudCBkb2MsIGJvb2xlYW4gaW5jbHVkZVNsYXNoUG9saWN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGluY2x1ZGVCdXRTZWFyY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZXhjbHVkZUJ1dFNlYXJjaCwgU3RyaW5nIGV4Y2x1ZGUpIHsKKworICAgICAgc3VwZXIoZG9jKTsKKworICAgICAgaWYgKGluY2x1ZGVTbGFzaFBvbGljeSkgeworICAgICAgICAgdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudAorICAgICAgICAgICAgLnNldEF0dHJpYnV0ZU5TKG51bGwsIFhQYXRoRmlsdGVyQ0hHUENvbnRhaW5lci5fQVRUX0lOQ0xVREVTTEFTSCwgInRydWUiKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50CisgICAgICAgICAgICAuc2V0QXR0cmlidXRlTlMobnVsbCwgWFBhdGhGaWx0ZXJDSEdQQ29udGFpbmVyLl9BVFRfSU5DTFVERVNMQVNILCAiZmFsc2UiKTsKKyAgICAgIH0KKworICAgICAgaWYgKChpbmNsdWRlQnV0U2VhcmNoICE9IG51bGwpCisgICAgICAgICAgICAgICYmIChpbmNsdWRlQnV0U2VhcmNoLnRyaW0oKS5sZW5ndGgoKSA+IDApKSB7CisgICAgICAgICBFbGVtZW50IGluY2x1ZGVCdXRTZWFyY2hFbGVtID0KKyAgICAgICAgICAgIEVsZW1lbnRQcm94eS5jcmVhdGVFbGVtZW50Rm9yRmFtaWx5KGRvYywgdGhpcy5nZXRCYXNlTmFtZXNwYWNlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFBhdGhGaWx0ZXJDSEdQQ29udGFpbmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLl9UQUdfSU5DTFVERV9CVVRfU0VBUkNIKTsKKworICAgICAgICAgaW5jbHVkZUJ1dFNlYXJjaEVsZW0KKyAgICAgICAgICAgIC5hcHBlbmRDaGlsZCh0aGlzLl9kb2MKKyAgICAgICAgICAgICAgIC5jcmVhdGVUZXh0Tm9kZShpbmRlbnRYUGF0aFRleHQoaW5jbHVkZUJ1dFNlYXJjaCkpKTsKKwkgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpOworICAgICAgICAgdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5hcHBlbmRDaGlsZChpbmNsdWRlQnV0U2VhcmNoRWxlbSk7CisgICAgICB9CisKKyAgICAgIGlmICgoZXhjbHVkZUJ1dFNlYXJjaCAhPSBudWxsKQorICAgICAgICAgICAgICAmJiAoZXhjbHVkZUJ1dFNlYXJjaC50cmltKCkubGVuZ3RoKCkgPiAwKSkgeworICAgICAgICAgRWxlbWVudCBleGNsdWRlQnV0U2VhcmNoRWxlbSA9CisgICAgICAgICBFbGVtZW50UHJveHkuY3JlYXRlRWxlbWVudEZvckZhbWlseShkb2MsIHRoaXMuZ2V0QmFzZU5hbWVzcGFjZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoRmlsdGVyQ0hHUENvbnRhaW5lcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5fVEFHX0VYQ0xVREVfQlVUX1NFQVJDSCk7CisKKyAgICAgICAgIGV4Y2x1ZGVCdXRTZWFyY2hFbGVtCisgICAgICAgICAgICAuYXBwZW5kQ2hpbGQodGhpcy5fZG9jCisgICAgICAgICAgICAgICAuY3JlYXRlVGV4dE5vZGUoaW5kZW50WFBhdGhUZXh0KGV4Y2x1ZGVCdXRTZWFyY2gpKSk7CisJIFhNTFV0aWxzLmFkZFJldHVyblRvRWxlbWVudCh0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50KTsKKyAgICAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQoZXhjbHVkZUJ1dFNlYXJjaEVsZW0pOworICAgICAgfQorCisgICAgICBpZiAoKGV4Y2x1ZGUgIT0gbnVsbCkgJiYgKGV4Y2x1ZGUudHJpbSgpLmxlbmd0aCgpID4gMCkpIHsKKyAgICAgICAgIEVsZW1lbnQgZXhjbHVkZUVsZW0gPSBFbGVtZW50UHJveHkuY3JlYXRlRWxlbWVudEZvckZhbWlseShkb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRCYXNlTmFtZXNwYWNlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFBhdGhGaWx0ZXJDSEdQQ29udGFpbmVyLl9UQUdfRVhDTFVERSk7CisKKyAgICAgICAgIGV4Y2x1ZGVFbGVtCisgICAgICAgICAgICAuYXBwZW5kQ2hpbGQodGhpcy5fZG9jLmNyZWF0ZVRleHROb2RlKGluZGVudFhQYXRoVGV4dChleGNsdWRlKSkpOworCSBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCk7CisgICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmFwcGVuZENoaWxkKGV4Y2x1ZGVFbGVtKTsKKyAgICAgIH0KKworICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBpbmRlbnRYUGF0aFRleHQKKyAgICAqCisgICAgKiBAcGFyYW0geHAKKyAgICAqIEByZXR1cm4gdGhlIHN0cmluZyB3aXRoIGVudGVycworICAgICovCisgICBzdGF0aWMgU3RyaW5nIGluZGVudFhQYXRoVGV4dChTdHJpbmcgeHApIHsKKworICAgICAgaWYgKCh4cC5sZW5ndGgoKSA+IDIpICYmICghQ2hhcmFjdGVyLmlzV2hpdGVzcGFjZSh4cC5jaGFyQXQoMCkpKSkgeworICAgICAgICAgcmV0dXJuICJcbiIgKyB4cCArICJcbiI7CisgICAgICB9IAorICAgICAgcmV0dXJuIHhwOworICAgICAgCisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgWFBhdGhGaWx0ZXJDSEdQQ29udGFpbmVyCisgICAgKgorICAgICogQHBhcmFtIGVsZW1lbnQKKyAgICAqIEBwYXJhbSBCYXNlVVJJCisgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgKi8KKyAgIHByaXZhdGUgWFBhdGhGaWx0ZXJDSEdQQ29udGFpbmVyKEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIEJhc2VVUkkpCisgICAgICAgICAgIHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisgICAgICBzdXBlcihlbGVtZW50LCBCYXNlVVJJKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDcmVhdGVzIGEgbmV3IFhQYXRoRmlsdGVyQ0hHUENvbnRhaW5lcjsgbmVlZGVkIGZvciBnZW5lcmF0aW9uLgorICAgICoKKyAgICAqIEBwYXJhbSBkb2MKKyAgICAqIEBwYXJhbSBpbmNsdWRlU2xhc2hQb2xpY3kKKyAgICAqIEBwYXJhbSBpbmNsdWRlQnV0U2VhcmNoCisgICAgKiBAcGFyYW0gZXhjbHVkZUJ1dFNlYXJjaAorICAgICogQHBhcmFtIGV4Y2x1ZGUKKyAgICAqIEByZXR1cm4gdGhlIGNyZWF0ZWQgb2JqZWN0CisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgWFBhdGhGaWx0ZXJDSEdQQ29udGFpbmVyIGdldEluc3RhbmNlKERvY3VtZW50IGRvYywKKyAgICAgICAgICAgYm9vbGVhbiBpbmNsdWRlU2xhc2hQb2xpY3ksIFN0cmluZyBpbmNsdWRlQnV0U2VhcmNoLAorICAgICAgICAgICBTdHJpbmcgZXhjbHVkZUJ1dFNlYXJjaCwgU3RyaW5nIGV4Y2x1ZGUpIHsKKworICAgICAgcmV0dXJuIG5ldyBYUGF0aEZpbHRlckNIR1BDb250YWluZXIoZG9jLCBpbmNsdWRlU2xhc2hQb2xpY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlQnV0U2VhcmNoLCBleGNsdWRlQnV0U2VhcmNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjbHVkZSk7CisgICB9CisKKyAgIC8qKgorICAgICogQ3JlYXRlcyBhIFhQYXRoRmlsdGVyQ0hHUENvbnRhaW5lciBmcm9tIGFuIGV4aXN0aW5nIEVsZW1lbnQ7IG5lZWRlZCBmb3IgdmVyaWZpY2F0aW9uLgorICAgICoKKyAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICoKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqIEByZXR1cm4gdGhlIGNyZWF0ZWQgb2JqZWN0LgorICAgICovCisgICBwdWJsaWMgc3RhdGljIFhQYXRoRmlsdGVyQ0hHUENvbnRhaW5lciBnZXRJbnN0YW5jZSgKKyAgICAgICAgICAgRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSkgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKyAgICAgIHJldHVybiBuZXcgWFBhdGhGaWx0ZXJDSEdQQ29udGFpbmVyKGVsZW1lbnQsIEJhc2VVUkkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRYU3RyCisgICAgKgorICAgICogQHBhcmFtIHR5cGUKKyAgICAqIEByZXR1cm4gVGhlIFhzdHIKKyAgICAqLworICAgcHJpdmF0ZSBTdHJpbmcgZ2V0WFN0cihTdHJpbmcgdHlwZSkgeworCisgICAgICBpZiAodGhpcy5sZW5ndGgodGhpcy5nZXRCYXNlTmFtZXNwYWNlKCksIHR5cGUpICE9IDEpIHsKKyAgICAgICAgIHJldHVybiAiIjsKKyAgICAgIH0KKworICAgICAgRWxlbWVudCB4RWxlbSA9IFhNTFV0aWxzLnNlbGVjdE5vZGUodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5nZXRGaXJzdENoaWxkKCksIHRoaXMuZ2V0QmFzZU5hbWVzcGFjZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsMCk7CisKKyAgICAgIHJldHVybiBYTUxVdGlscy5nZXRGdWxsVGV4dENoaWxkcmVuRnJvbUVsZW1lbnQoeEVsZW0pOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRJbmNsdWRlQnV0U2VhcmNoCisgICAgKgorICAgICogQHJldHVybiB0aGUgc3RyaW5nCisgICAgKi8KKyAgIHB1YmxpYyBTdHJpbmcgZ2V0SW5jbHVkZUJ1dFNlYXJjaCgpIHsKKyAgICAgIHJldHVybiB0aGlzLmdldFhTdHIoWFBhdGhGaWx0ZXJDSEdQQ29udGFpbmVyLl9UQUdfSU5DTFVERV9CVVRfU0VBUkNIKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0RXhjbHVkZUJ1dFNlYXJjaAorICAgICoKKyAgICAqIEByZXR1cm4gdGhlIHN0cmluZworICAgICovCisgICBwdWJsaWMgU3RyaW5nIGdldEV4Y2x1ZGVCdXRTZWFyY2goKSB7CisgICAgICByZXR1cm4gdGhpcy5nZXRYU3RyKFhQYXRoRmlsdGVyQ0hHUENvbnRhaW5lci5fVEFHX0VYQ0xVREVfQlVUX1NFQVJDSCk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGdldEV4Y2x1ZGUKKyAgICAqCisgICAgKiBAcmV0dXJuIHRoZSBzdHJpbmcKKyAgICAqLworICAgcHVibGljIFN0cmluZyBnZXRFeGNsdWRlKCkgeworICAgICAgcmV0dXJuIHRoaXMuZ2V0WFN0cihYUGF0aEZpbHRlckNIR1BDb250YWluZXIuX1RBR19FWENMVURFKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0SW5jbHVkZVNsYXNoUG9saWN5CisgICAgKgorICAgICogQHJldHVybiB0aGUgc3RyaW5nCisgICAgKi8KKyAgIHB1YmxpYyBib29sZWFuIGdldEluY2x1ZGVTbGFzaFBvbGljeSgpIHsKKworICAgICAgcmV0dXJuIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQKKyAgICAgICAgIC5nZXRBdHRyaWJ1dGVOUyhudWxsLCBYUGF0aEZpbHRlckNIR1BDb250YWluZXIuX0FUVF9JTkNMVURFU0xBU0gpCisgICAgICAgICAuZXF1YWxzKCJ0cnVlIik7CisgICB9CisKKyAgIC8qKgorICAgICogUmV0dXJucyB0aGUgZmlyc3QgVGV4dCBub2RlIHdoaWNoIGNvbnRhaW5zIGluZm9ybWF0aW9uIGZyb20gdGhlIFhQYXRoCisgICAgKiBGaWx0ZXIgU3RyaW5nLiBXZSBtdXN0IHVzZSB0aGlzIHN0dXBpZCBob29rIHRvIGVuYWJsZSB0aGUgaGVyZSgpIGZ1bmN0aW9uCisgICAgKiB0byB3b3JrLgorICAgICoKKyAgICAqICR0b2RvJCBJIGR1bm5vIHdoZXRoZXIgdGhpcyBjcmFzaGVzOiA8WFBhdGg+IGhlPCEtLSBjb21tZW50IC0tPnJlKCkvZHM6U2lnbmF0dXJlWzFdPC9YUGF0aD4KKyAgICAqIEBwYXJhbSB0eXBlCisgICAgKiBAcmV0dXJuIHRoZSBmaXJzdCBUZXh0IG5vZGUgd2hpY2ggY29udGFpbnMgaW5mb3JtYXRpb24gZnJvbSB0aGUgWFBhdGggMiBGaWx0ZXIgU3RyaW5nCisgICAgKi8KKyAgIHByaXZhdGUgTm9kZSBnZXRIZXJlQ29udGV4dE5vZGUoU3RyaW5nIHR5cGUpIHsKKworICAgICAgaWYgKHRoaXMubGVuZ3RoKHRoaXMuZ2V0QmFzZU5hbWVzcGFjZSgpLCB0eXBlKSAhPSAxKSB7CisgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgIH0KKworICAgICAgcmV0dXJuIFhNTFV0aWxzLnNlbGVjdE5vZGVUZXh0KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpLCB0aGlzLmdldEJhc2VOYW1lc3BhY2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLDApOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRIZXJlQ29udGV4dE5vZGVJbmNsdWRlQnV0U2VhcmNoCisgICAgKgorICAgICogQHJldHVybiB0aGUgc3RyaW5nCisgICAgKi8KKyAgIHB1YmxpYyBOb2RlIGdldEhlcmVDb250ZXh0Tm9kZUluY2x1ZGVCdXRTZWFyY2goKSB7CisgICAgICByZXR1cm4gdGhpcworICAgICAgICAgLmdldEhlcmVDb250ZXh0Tm9kZShYUGF0aEZpbHRlckNIR1BDb250YWluZXIuX1RBR19JTkNMVURFX0JVVF9TRUFSQ0gpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRIZXJlQ29udGV4dE5vZGVFeGNsdWRlQnV0U2VhcmNoCisgICAgKgorICAgICogQHJldHVybiB0aGUgc3RyaW5nCisgICAgKi8KKyAgIHB1YmxpYyBOb2RlIGdldEhlcmVDb250ZXh0Tm9kZUV4Y2x1ZGVCdXRTZWFyY2goKSB7CisgICAgICByZXR1cm4gdGhpcworICAgICAgICAgLmdldEhlcmVDb250ZXh0Tm9kZShYUGF0aEZpbHRlckNIR1BDb250YWluZXIuX1RBR19FWENMVURFX0JVVF9TRUFSQ0gpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRIZXJlQ29udGV4dE5vZGVFeGNsdWRlCisgICAgKgorICAgICogQHJldHVybiB0aGUgc3RyaW5nCisgICAgKi8KKyAgIHB1YmxpYyBOb2RlIGdldEhlcmVDb250ZXh0Tm9kZUV4Y2x1ZGUoKSB7CisgICAgICByZXR1cm4gdGhpcy5nZXRIZXJlQ29udGV4dE5vZGUoWFBhdGhGaWx0ZXJDSEdQQ29udGFpbmVyLl9UQUdfRVhDTFVERSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGdldEJhc2VMb2NhbE5hbWUKKyAgICAqCisgICAgKiBAaW5oZXJpdERvYworICAgICovCisgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldEJhc2VMb2NhbE5hbWUoKSB7CisgICAgICByZXR1cm4gWFBhdGhGaWx0ZXJDSEdQQ29udGFpbmVyLl9UQUdfWFBBVEhDSEdQOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRCYXNlTmFtZXNwYWNlCisgICAgKgorICAgICogQGluaGVyaXREb2MKKyAgICAqLworICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXRCYXNlTmFtZXNwYWNlKCkgeworICAgICAgcmV0dXJuIFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRIRklMVEVSQ0hHUDsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9CYXNlNjQuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9CYXNlNjQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTdkNmNmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL0Jhc2U2NC5qYXZhCkBAIC0wLDAgKzEsNzg0IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlsczsKKworaW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEubWF0aC5CaWdJbnRlZ2VyOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5CYXNlNjREZWNvZGluZ0V4Y2VwdGlvbjsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CitpbXBvcnQgb3JnLnczYy5kb20uVGV4dDsKKworLyoqCisgKiBJbXBsZW1lbnRhdGlvbiBvZiBNSU1FJ3MgQmFzZTY0IGVuY29kaW5nIGFuZCBkZWNvZGluZyBjb252ZXJzaW9ucy4KKyAqIE9wdGltaXplZCBjb2RlLiAocmF3IHZlcnNpb24gdGFrZW4gZnJvbSBvcmVpbGx5LmpvbmF0aGFuLnV0aWwsIAorICogYW5kIGN1cnJlbnRseSBvcmcuYXBhY2hlLnhlcmNlcy5kcy51dGlsLkJhc2U2NCkKKyAqCisgKiBAYXV0aG9yIFJhdWwgQmVuaXRvKE9mIHRoZSB4ZXJjZXMgY29weSwgYW5kIGxpdHRsZSBhZGFwdGF0aW9ucykuCisgKiBAYXV0aG9yIEFubGkgU2h1bmRpCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubgorICogQHNlZSA8QSBIUkVGPSJmdHA6Ly9mdHAuaXNpLmVkdS9pbi1ub3Rlcy9yZmMyMDQ1LnR4dCI+UkZDIDIwNDU8L0E+CisgKiBAc2VlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuaW1wbGVtZW50YXRpb25zLlRyYW5zZm9ybUJhc2U2NERlY29kZQorICovCitwdWJsaWMgY2xhc3MgQmFzZTY0IHsKKworICAgLyoqIEZpZWxkIEJBU0U2NERFRkFVTFRMRU5HVEggKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJBU0U2NERFRkFVTFRMRU5HVEggPSA3NjsKKworICAgcHJpdmF0ZSBCYXNlNjQoKSB7CisgICAgIC8vIHdlIGRvbid0IGFsbG93IGluc3RhbnRpYXRpb24KKyAgIH0KKworICAgLyoqCisgICAgKiBSZXR1cm5zIGEgYnl0ZS1hcnJheSByZXByZXNlbnRhdGlvbiBvZiBhIDxjb2RlPntAbGluayBCaWdJbnRlZ2VyfTxjb2RlPi4KKyAgICAqIE5vIHNpZ24tYml0IGlzIG91dHB1dGVkLgorICAgICoKKyAgICAqIDxiPk4uQi46PC9CPiA8Y29kZT57QGxpbmsgQmlnSW50ZWdlcn08Y29kZT4ncyB0b0J5dGVBcnJheQorICAgICogcmV0dW5ycyBldmVudHVhbGx5IGxvbmdlciBhcnJheXMgYmVjYXVzZSBvZiB0aGUgbGVhZGluZyBzaWduLWJpdC4KKyAgICAqCisgICAgKiBAcGFyYW0gYmlnIDxjb2RlPkJpZ0ludGVnZXI8Y29kZT4gdG8gYmUgY29udmVydGVkCisgICAgKiBAcGFyYW0gYml0bGVuIDxjb2RlPmludDxjb2RlPiB0aGUgZGVzaXJlZCBsZW5ndGggaW4gYml0cyBvZiB0aGUgcmVwcmVzZW50YXRpb24KKyAgICAqIEByZXR1cm4gYSBieXRlIGFycmF5IHdpdGggPGNvZGU+Yml0bGVuPC9jb2RlPiBiaXRzIG9mIDxjb2RlPmJpZzwvY29kZT4KKyAgICAqLworICAgc3RhdGljIGZpbmFsIGJ5dGVbXSBnZXRCeXRlcyhCaWdJbnRlZ2VyIGJpZywgaW50IGJpdGxlbikgeworICAgIAorICAgICAgLy9yb3VuZCBiaXRsZW4KKyAgICAgIGJpdGxlbiA9ICgoYml0bGVuICsgNykgPj4gMykgPDwgMzsKKworICAgICAgaWYgKGJpdGxlbiA8IGJpZy5iaXRMZW5ndGgoKSkgeworICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbihJMThuCisgICAgICAgICAgICAudHJhbnNsYXRlKCJ1dGlscy5CYXNlNjQuSWxsZWdhbEJpdGxlbmd0aCIpKTsKKyAgICAgIH0KKworICAgICAgYnl0ZVtdIGJpZ0J5dGVzID0gYmlnLnRvQnl0ZUFycmF5KCk7CisKKyAgICAgIGlmICgoKGJpZy5iaXRMZW5ndGgoKSAlIDgpICE9IDApCisgICAgICAgICAgICAgICYmICgoKGJpZy5iaXRMZW5ndGgoKSAvIDgpICsgMSkgPT0gKGJpdGxlbiAvIDgpKSkgeworICAgICAgICAgcmV0dXJuIGJpZ0J5dGVzOworICAgICAgfQorCisgICAgICAvLyBzb21lIGNvcHlpbmcgbmVlZGVkCisgICAgICBpbnQgc3RhcnRTcmMgPSAwOyAgICAvLyBubyBuZWVkIHRvIHNraXAgYW55dGhpbmcKKyAgICAgIGludCBiaWdMZW4gPSBiaWdCeXRlcy5sZW5ndGg7ICAgIC8vdmFsaWQgbGVuZ3RoIG9mIHRoZSBzdHJpbmcKKworICAgICAgaWYgKChiaWcuYml0TGVuZ3RoKCkgJSA4KSA9PSAwKSB7ICAgIC8vIGNvcnJlY3QgdmFsdWVzCisgICAgICAgICBzdGFydFNyYyA9IDE7ICAgIC8vIHNraXAgc2lnbiBiaXQKKworICAgICAgICAgYmlnTGVuLS07ICAgIC8vIHZhbGlkIGxlbmd0aCBvZiB0aGUgc3RyaW5nCisgICAgICB9CisKKyAgICAgIGludCBzdGFydERzdCA9IGJpdGxlbiAvIDggLSBiaWdMZW47ICAgIC8vcGFkIHdpdGggbGVhZGluZyBudWxscworICAgICAgYnl0ZVtdIHJlc2l6ZWRCeXRlcyA9IG5ldyBieXRlW2JpdGxlbiAvIDhdOworCisgICAgICBTeXN0ZW0uYXJyYXljb3B5KGJpZ0J5dGVzLCBzdGFydFNyYywgcmVzaXplZEJ5dGVzLCBzdGFydERzdCwgYmlnTGVuKTsKKworICAgICAgcmV0dXJuIHJlc2l6ZWRCeXRlczsKKyAgIH0KKworICAgLyoqCisgICAgKiBFbmNvZGUgaW4gQmFzZTY0IHRoZSBnaXZlbiA8Y29kZT57QGxpbmsgQmlnSW50ZWdlcn08Y29kZT4uCisgICAgKgorICAgICogQHBhcmFtIGJpZworICAgICogQHJldHVybiBTdHJpbmcgd2l0aCBCYXNlNjQgZW5jb2RpbmcKKyAgICAqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZW5jb2RlKEJpZ0ludGVnZXIgYmlnKSB7CisgICAgICByZXR1cm4gZW5jb2RlKGdldEJ5dGVzKGJpZywgYmlnLmJpdExlbmd0aCgpKSk7CisgICB9CisKKyAgIC8qKgorICAgICogUmV0dXJucyBhIGJ5dGUtYXJyYXkgcmVwcmVzZW50YXRpb24gb2YgYSA8Y29kZT57QGxpbmsgQmlnSW50ZWdlcn08Y29kZT4uCisgICAgKiBObyBzaWduLWJpdCBpcyBvdXRwdXRlZC4KKyAgICAqCisgICAgKiA8Yj5OLkIuOjwvQj4gPGNvZGU+e0BsaW5rIEJpZ0ludGVnZXJ9PGNvZGU+J3MgdG9CeXRlQXJyYXkKKyAgICAqIHJldHVucnMgZXZlbnR1YWxseSBsb25nZXIgYXJyYXlzIGJlY2F1c2Ugb2YgdGhlIGxlYWRpbmcgc2lnbi1iaXQuCisgICAgKgorICAgICogQHBhcmFtIGJpZyA8Y29kZT5CaWdJbnRlZ2VyPGNvZGU+IHRvIGJlIGNvbnZlcnRlZAorICAgICogQHBhcmFtIGJpdGxlbiA8Y29kZT5pbnQ8Y29kZT4gdGhlIGRlc2lyZWQgbGVuZ3RoIGluIGJpdHMgb2YgdGhlIHJlcHJlc2VudGF0aW9uCisgICAgKiBAcmV0dXJuIGEgYnl0ZSBhcnJheSB3aXRoIDxjb2RlPmJpdGxlbjwvY29kZT4gYml0cyBvZiA8Y29kZT5iaWc8L2NvZGU+CisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgIGJ5dGVbXSBlbmNvZGUoQmlnSW50ZWdlciBiaWcsIGludCBiaXRsZW4pIHsKKworICAgICAgLy9yb3VuZCBiaXRsZW4KKyAgICAgIGJpdGxlbiA9ICgoYml0bGVuICsgNykgPj4gMykgPDwgMzsKKworICAgICAgaWYgKGJpdGxlbiA8IGJpZy5iaXRMZW5ndGgoKSkgeworICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbihJMThuCisgICAgICAgICAgICAudHJhbnNsYXRlKCJ1dGlscy5CYXNlNjQuSWxsZWdhbEJpdGxlbmd0aCIpKTsKKyAgICAgIH0KKworICAgICAgYnl0ZVtdIGJpZ0J5dGVzID0gYmlnLnRvQnl0ZUFycmF5KCk7CisKKyAgICAgIGlmICgoKGJpZy5iaXRMZW5ndGgoKSAlIDgpICE9IDApCisgICAgICAgICAgICAgICYmICgoKGJpZy5iaXRMZW5ndGgoKSAvIDgpICsgMSkgPT0gKGJpdGxlbiAvIDgpKSkgeworICAgICAgICAgcmV0dXJuIGJpZ0J5dGVzOworICAgICAgfQorCisgICAgICAvLyBzb21lIGNvcHlpbmcgbmVlZGVkCisgICAgICBpbnQgc3RhcnRTcmMgPSAwOyAgICAvLyBubyBuZWVkIHRvIHNraXAgYW55dGhpbmcKKyAgICAgIGludCBiaWdMZW4gPSBiaWdCeXRlcy5sZW5ndGg7ICAgIC8vdmFsaWQgbGVuZ3RoIG9mIHRoZSBzdHJpbmcKKworICAgICAgaWYgKChiaWcuYml0TGVuZ3RoKCkgJSA4KSA9PSAwKSB7ICAgIC8vIGNvcnJlY3QgdmFsdWVzCisgICAgICAgICBzdGFydFNyYyA9IDE7ICAgIC8vIHNraXAgc2lnbiBiaXQKKworICAgICAgICAgYmlnTGVuLS07ICAgIC8vIHZhbGlkIGxlbmd0aCBvZiB0aGUgc3RyaW5nCisgICAgICB9CisKKyAgICAgIGludCBzdGFydERzdCA9IGJpdGxlbiAvIDggLSBiaWdMZW47ICAgIC8vcGFkIHdpdGggbGVhZGluZyBudWxscworICAgICAgYnl0ZVtdIHJlc2l6ZWRCeXRlcyA9IG5ldyBieXRlW2JpdGxlbiAvIDhdOworCisgICAgICBTeXN0ZW0uYXJyYXljb3B5KGJpZ0J5dGVzLCBzdGFydFNyYywgcmVzaXplZEJ5dGVzLCBzdGFydERzdCwgYmlnTGVuKTsKKworICAgICAgcmV0dXJuIHJlc2l6ZWRCeXRlczsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZGVjb2RlQmlnSW50ZWdlckZyb21FbGVtZW50CisgICAgKgorICAgICogQHBhcmFtIGVsZW1lbnQKKyAgICAqIEByZXR1cm4gdGhlIGJpZ2ludGVyIG9idGFpbmVkIGZyb20gdGhlIG5vZGUKKyAgICAqIEB0aHJvd3MgQmFzZTY0RGVjb2RpbmdFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBCaWdJbnRlZ2VyIGRlY29kZUJpZ0ludGVnZXJGcm9tRWxlbWVudChFbGVtZW50IGVsZW1lbnQpIHRocm93cyBCYXNlNjREZWNvZGluZ0V4Y2VwdGlvbgorICAgeworICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKDEsIEJhc2U2NC5kZWNvZGUoZWxlbWVudCkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBkZWNvZGVCaWdJbnRlZ2VyRnJvbVRleHQKKyAgICAqCisgICAgKiBAcGFyYW0gdGV4dAorICAgICogQHJldHVybiB0aGUgYmlnaW50ZXIgb2J0YWluZWQgZnJvbSB0aGUgdGV4dCBub2RlCisgICAgKiBAdGhyb3dzIEJhc2U2NERlY29kaW5nRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgQmlnSW50ZWdlciBkZWNvZGVCaWdJbnRlZ2VyRnJvbVRleHQoVGV4dCB0ZXh0KSB0aHJvd3MgQmFzZTY0RGVjb2RpbmdFeGNlcHRpb24KKyAgIHsKKyAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcigxLCBCYXNlNjQuZGVjb2RlKHRleHQuZ2V0RGF0YSgpKSk7CisgICB9CisKKyAgIC8qKgorICAgICogVGhpcyBtZXRob2QgdGFrZXMgYW4gKGVtcHR5KSBFbGVtZW50IGFuZCBhIEJpZ0ludGVnZXIgYW5kIGFkZHMgdGhlCisgICAgKiBiYXNlNjQgZW5jb2RlZCBCaWdJbnRlZ2VyIHRvIHRoZSBFbGVtZW50LgorICAgICoKKyAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgKiBAcGFyYW0gYmlnaW50ZWdlcgorICAgICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIHZvaWQgZmlsbEVsZW1lbnRXaXRoQmlnSW50ZWdlcihFbGVtZW50IGVsZW1lbnQsCisgICAgICAgICAgIEJpZ0ludGVnZXIgYmlnaW50ZWdlcikgeworCisgICAgICBTdHJpbmcgZW5jb2RlZEludCA9IGVuY29kZShiaWdpbnRlZ2VyKTsKKworICAgICAgaWYgKCFYTUxVdGlscy5pZ25vcmVMaW5lQnJlYWtzKCkgJiYgZW5jb2RlZEludC5sZW5ndGgoKSA+IEJBU0U2NERFRkFVTFRMRU5HVEgpIHsKKyAgICAgICAgIGVuY29kZWRJbnQgPSAiXG4iICsgZW5jb2RlZEludCArICJcbiI7CisgICAgICB9CisKKyAgICAgIERvY3VtZW50IGRvYyA9IGVsZW1lbnQuZ2V0T3duZXJEb2N1bWVudCgpOworICAgICAgVGV4dCB0ZXh0ID0gZG9jLmNyZWF0ZVRleHROb2RlKGVuY29kZWRJbnQpOworCisgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKHRleHQpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBkZWNvZGUKKyAgICAqCisgICAgKiBUYWtlcyB0aGUgPENPREU+VGV4dDwvQ09ERT4gY2hpbGRyZW4gb2YgdGhlIEVsZW1lbnQgYW5kIGludGVycHJldHMKKyAgICAqIHRoZW0gYXMgaW5wdXQgZm9yIHRoZSA8Q09ERT5CYXNlNjQuZGVjb2RlKCk8L0NPREU+IGZ1bmN0aW9uLgorICAgICoKKyAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgKiBAcmV0dXJuIHRoZSBieXRlIG9idGFpbmVkIG9mIHRoZSBkZWNvZGluZyB0aGUgZWxlbWVudAorICAgICogJHRvZG8kIG5vdCB0ZXN0ZWQgeWV0CisgICAgKiBAdGhyb3dzIEJhc2U2NERlY29kaW5nRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgYnl0ZVtdIGRlY29kZShFbGVtZW50IGVsZW1lbnQpIHRocm93cyBCYXNlNjREZWNvZGluZ0V4Y2VwdGlvbiB7CisKKyAgICAgIE5vZGUgc2libGluZyA9IGVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpOworICAgICAgU3RyaW5nQnVmZmVyIHNiID0gbmV3IFN0cmluZ0J1ZmZlcigpOworCisgICAgICB3aGlsZSAoc2libGluZyE9bnVsbCkgeworICAgICAgICAgaWYgKHNpYmxpbmcuZ2V0Tm9kZVR5cGUoKSA9PSBOb2RlLlRFWFRfTk9ERSkgeworICAgICAgICAgICAgVGV4dCB0ID0gKFRleHQpIHNpYmxpbmc7CisKKyAgICAgICAgICAgIHNiLmFwcGVuZCh0LmdldERhdGEoKSk7CisgICAgICAgICB9CisgICAgICAgICBzaWJsaW5nPXNpYmxpbmcuZ2V0TmV4dFNpYmxpbmcoKTsKKyAgICAgIH0KKworICAgICAgcmV0dXJuIGRlY29kZShzYi50b1N0cmluZygpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZW5jb2RlVG9FbGVtZW50CisgICAgKgorICAgICogQHBhcmFtIGRvYworICAgICogQHBhcmFtIGxvY2FsTmFtZQorICAgICogQHBhcmFtIGJ5dGVzCisgICAgKiBAcmV0dXJuIGFuIEVsZW1lbnQgd2l0aCB0aGUgYmFzZTY0IGVuY29kZWQgaW4gdGhlIHRleHQuCisgICAgKgorICAgICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIEVsZW1lbnQgZW5jb2RlVG9FbGVtZW50KERvY3VtZW50IGRvYywgU3RyaW5nIGxvY2FsTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZVtdIGJ5dGVzKSB7CisKKyAgICAgIEVsZW1lbnQgZWwgPSBYTUxVdGlscy5jcmVhdGVFbGVtZW50SW5TaWduYXR1cmVTcGFjZShkb2MsIGxvY2FsTmFtZSk7CisgICAgICBUZXh0IHRleHQgPSBkb2MuY3JlYXRlVGV4dE5vZGUoZW5jb2RlKGJ5dGVzKSk7CisKKyAgICAgIGVsLmFwcGVuZENoaWxkKHRleHQpOworCisgICAgICByZXR1cm4gZWw7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGRlY29kZQorICAgICoKKyAgICAqIEBwYXJhbSBiYXNlNjQKKyAgICAqIEByZXR1cm4gdGhlIFVURiBieXRlcyBvZiB0aGUgYmFzZTY0CisgICAgKiBAdGhyb3dzIEJhc2U2NERlY29kaW5nRXhjZXB0aW9uCisgICAgKgorICAgICovCisgICBwdWJsaWMgZmluYWwgc3RhdGljIGJ5dGVbXSBkZWNvZGUoYnl0ZVtdIGJhc2U2NCkgdGhyb3dzIEJhc2U2NERlY29kaW5nRXhjZXB0aW9uICB7ICAgCSAgIAorICAgICAgICAgcmV0dXJuIGRlY29kZUludGVybmFsKGJhc2U2NCwgLTEpOworICAgfQorCisgICAvKioKKyAgICAqIEVuY29kZSBhIGJ5dGUgYXJyYXkgYW5kIGZvbGQgbGluZXMgYXQgdGhlIHN0YW5kYXJkIDc2dGggY2hhcmFjdGVyIHVubGVzcyAKKyAgICAqIGlnbm9yZSBsaW5lIGJyZWFrcyBwcm9wZXJ0eSBpcyBzZXQuCisgICAgKgorICAgICogQHBhcmFtIGJpbmFyeURhdGEgPGNvZGU+Ynl0ZVtdPGNvZGU+IHRvIGJlIGJhc2U2NCBlbmNvZGVkCisgICAgKiBAcmV0dXJuIHRoZSA8Y29kZT5TdHJpbmc8Y29kZT4gd2l0aCBlbmNvZGVkIGRhdGEKKyAgICAqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZW5jb2RlKGJ5dGVbXSBiaW5hcnlEYXRhKSB7CisgICAgICByZXR1cm4gWE1MVXRpbHMuaWdub3JlTGluZUJyZWFrcygpCisgICAgICAgICA/IGVuY29kZShiaW5hcnlEYXRhLCBJbnRlZ2VyLk1BWF9WQUxVRSkgCisJIDogZW5jb2RlKGJpbmFyeURhdGEsIEJBU0U2NERFRkFVTFRMRU5HVEgpOworICAgfQorICAgCisgICAvKioKKyAgICAqIEJhc2U2NCBkZWNvZGUgdGhlIGxpbmVzIGZyb20gdGhlIHJlYWRlciBhbmQgcmV0dXJuIGFuIElucHV0U3RyZWFtCisgICAgKiB3aXRoIHRoZSBieXRlcy4KKyAgICAqCisgICAgKiBAcGFyYW0gcmVhZGVyCisgICAgKiBAcmV0dXJuIElucHV0U3RyZWFtIHdpdGggdGhlIGRlY29kZWQgYnl0ZXMKKyAgICAqIEBleGNlcHRpb24gSU9FeGNlcHRpb24gcGFzc2VzIHdoYXQgdGhlIHJlYWRlciB0aHJvd3MKKyAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgQmFzZTY0RGVjb2RpbmdFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIGZpbmFsIHN0YXRpYyBieXRlW10gZGVjb2RlKEJ1ZmZlcmVkUmVhZGVyIHJlYWRlcikKKyAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uLCBCYXNlNjREZWNvZGluZ0V4Y2VwdGlvbiB7CisKKyAgICAgIFVuc3luY0J5dGVBcnJheU91dHB1dFN0cmVhbSBiYW9zID0gbmV3IFVuc3luY0J5dGVBcnJheU91dHB1dFN0cmVhbSgpOworICAgICAgU3RyaW5nIGxpbmU7CisKKyAgICAgIHdoaWxlIChudWxsICE9IChsaW5lID0gcmVhZGVyLnJlYWRMaW5lKCkpKSB7CisgICAgICAgICBieXRlW10gYnl0ZXMgPSBkZWNvZGUobGluZSk7CisKKyAgICAgICAgIGJhb3Mud3JpdGUoYnl0ZXMpOworICAgICAgfQorCisgICAgICByZXR1cm4gYmFvcy50b0J5dGVBcnJheSgpOworICAgfQorCisgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBpbnQgIEJBU0VMRU5HVEggICAgICAgICA9IDI1NTsKKyAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIGludCAgTE9PS1VQTEVOR1RIICAgICAgID0gNjQ7CisgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBpbnQgIFRXRU5UWUZPVVJCSVRHUk9VUCA9IDI0OworICAgc3RhdGljIHByaXZhdGUgZmluYWwgaW50ICBFSUdIVEJJVCAgICAgICAgICAgPSA4OworICAgc3RhdGljIHByaXZhdGUgZmluYWwgaW50ICBTSVhURUVOQklUICAgICAgICAgPSAxNjsKKyAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIGludCAgRk9VUkJZVEUgICAgICAgICAgID0gNDsKKyAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIGludCAgU0lHTiAgICAgICAgICAgICAgID0gLTEyODsKKyAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIGNoYXIgUEFEICAgICAgICAgICAgICAgID0gJz0nOyAgIAorICAgc3RhdGljIGZpbmFsIHByaXZhdGUgYnl0ZSBbXSBiYXNlNjRBbHBoYWJldCAgICAgICAgPSBuZXcgYnl0ZVtCQVNFTEVOR1RIXTsKKyAgIHN0YXRpYyBmaW5hbCBwcml2YXRlIGNoYXIgW10gbG9va1VwQmFzZTY0QWxwaGFiZXQgID0gbmV3IGNoYXJbTE9PS1VQTEVOR1RIXTsKKworICAgc3RhdGljIHsKKworICAgICAgIGZvciAoaW50IGkgPSAwOyBpPEJBU0VMRU5HVEg7IGkrKykgeworICAgICAgICAgICBiYXNlNjRBbHBoYWJldFtpXSA9IC0xOworICAgICAgIH0KKyAgICAgICBmb3IgKGludCBpID0gJ1onOyBpID49ICdBJzsgaS0tKSB7CisgICAgICAgICAgIGJhc2U2NEFscGhhYmV0W2ldID0gKGJ5dGUpIChpLSdBJyk7CisgICAgICAgfQorICAgICAgIGZvciAoaW50IGkgPSAneic7IGk+PSAnYSc7IGktLSkgeworICAgICAgICAgICBiYXNlNjRBbHBoYWJldFtpXSA9IChieXRlKSAoIGktJ2EnICsgMjYpOworICAgICAgIH0KKworICAgICAgIGZvciAoaW50IGkgPSAnOSc7IGkgPj0gJzAnOyBpLS0pIHsKKyAgICAgICAgICAgYmFzZTY0QWxwaGFiZXRbaV0gPSAoYnl0ZSkgKGktJzAnICsgNTIpOworICAgICAgIH0KKworICAgICAgIGJhc2U2NEFscGhhYmV0WycrJ10gID0gNjI7CisgICAgICAgYmFzZTY0QWxwaGFiZXRbJy8nXSAgPSA2MzsKKworICAgICAgIGZvciAoaW50IGkgPSAwOyBpPD0yNTsgaSsrKQorICAgICAgICAgICBsb29rVXBCYXNlNjRBbHBoYWJldFtpXSA9IChjaGFyKSgnQScraSk7CisKKyAgICAgICBmb3IgKGludCBpID0gMjYsICBqID0gMDsgaTw9NTE7IGkrKywgaisrKQorICAgICAgICAgICBsb29rVXBCYXNlNjRBbHBoYWJldFtpXSA9IChjaGFyKSgnYScrIGopOworCisgICAgICAgZm9yIChpbnQgaSA9IDUyLCAgaiA9IDA7IGk8PTYxOyBpKyssIGorKykKKyAgICAgICAgICAgbG9va1VwQmFzZTY0QWxwaGFiZXRbaV0gPSAoY2hhcikoJzAnICsgaik7CisgICAgICAgbG9va1VwQmFzZTY0QWxwaGFiZXRbNjJdID0gJysnOworICAgICAgIGxvb2tVcEJhc2U2NEFscGhhYmV0WzYzXSA9ICcvJzsKKworICAgfQorCisgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGJvb2xlYW4gaXNXaGl0ZVNwYWNlKGJ5dGUgb2N0ZWN0KSB7CisgICAgICAgcmV0dXJuIChvY3RlY3QgPT0gMHgyMCB8fCBvY3RlY3QgPT0gMHhkIHx8IG9jdGVjdCA9PSAweGEgfHwgb2N0ZWN0ID09IDB4OSk7CisgICB9CisKKyAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgYm9vbGVhbiBpc1BhZChieXRlIG9jdGVjdCkgeworICAgICAgIHJldHVybiAob2N0ZWN0ID09IFBBRCk7CisgICB9CisKKyAgIC8qKgorICAgICogRW5jb2RlcyBoZXggb2N0ZWN0cyBpbnRvIEJhc2U2NAorICAgICoKKyAgICAqIEBwYXJhbSBiaW5hcnlEYXRhIEFycmF5IGNvbnRhaW5pbmcgYmluYXJ5RGF0YQorICAgICogQHJldHVybiBFbmNvZGVkIEJhc2U2NCBhcnJheQorICAgICovCisgICAvKioKKyAgICAqIEVuY29kZSBhIGJ5dGUgYXJyYXkgaW4gQmFzZTY0IGZvcm1hdCBhbmQgcmV0dXJuIGFuIG9wdGlvbmFsbHkKKyAgICAqIHdyYXBwZWQgbGluZS4KKyAgICAqCisgICAgKiBAcGFyYW0gYmluYXJ5RGF0YSA8Y29kZT5ieXRlW108L2NvZGU+IGRhdGEgdG8gYmUgZW5jb2RlZAorICAgICogQHBhcmFtIGxlbmd0aCA8Y29kZT5pbnQ8Y29kZT4gbGVuZ3RoIG9mIHdyYXBwZWQgbGluZXM7IE5vIHdyYXBwaW5nIGlmIGxlc3MgdGhhbiA0LgorICAgICogQHJldHVybiBhIDxjb2RlPlN0cmluZzwvY29kZT4gd2l0aCBlbmNvZGVkIGRhdGEKKyAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nICBlbmNvZGUoYnl0ZVtdIGJpbmFyeURhdGEsaW50IGxlbmd0aCkgeworICAgICAgICAKKyAgICAJaWYgKGxlbmd0aDw0KSB7CisgICAgCQlsZW5ndGg9SW50ZWdlci5NQVhfVkFMVUU7CisgICAgICAgIH0KKworICAgICAgIGlmIChiaW5hcnlEYXRhID09IG51bGwpCisgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgaW50ICAgICAgbGVuZ3RoRGF0YUJpdHMgICAgPSBiaW5hcnlEYXRhLmxlbmd0aCpFSUdIVEJJVDsKKyAgICAgICBpZiAobGVuZ3RoRGF0YUJpdHMgPT0gMCkgeworICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgfQorICAgICAgIAorICAgICAgIGludCAgICAgIGZld2VyVGhhbjI0Yml0cyAgID0gbGVuZ3RoRGF0YUJpdHMlVFdFTlRZRk9VUkJJVEdST1VQOworICAgICAgIGludCAgICAgIG51bWJlclRyaXBsZXRzICAgID0gbGVuZ3RoRGF0YUJpdHMvVFdFTlRZRk9VUkJJVEdST1VQOworICAgICAgIGludCAgICAgIG51bWJlclF1YXJ0ZXQgICAgID0gZmV3ZXJUaGFuMjRiaXRzICE9IDAgPyBudW1iZXJUcmlwbGV0cysxIDogbnVtYmVyVHJpcGxldHM7CisgICAgICAgaW50ICAgICAgcXVhcnRlc1BlckxpbmUgICAgPSBsZW5ndGgvNDsKKyAgICAgICBpbnQgICAgICBudW1iZXJMaW5lcyAgICAgICA9IChudW1iZXJRdWFydGV0LTEpL3F1YXJ0ZXNQZXJMaW5lOworICAgICAgIGNoYXIgICAgIGVuY29kZWREYXRhW10gICAgID0gbnVsbDsKKworICAgICAgIGVuY29kZWREYXRhID0gbmV3IGNoYXJbbnVtYmVyUXVhcnRldCo0K251bWJlckxpbmVzXTsKKworICAgICAgIGJ5dGUgaz0wLCBsPTAsIGIxPTAsYjI9MCxiMz0wOworCisgICAgICAgaW50IGVuY29kZWRJbmRleCA9IDA7CisgICAgICAgaW50IGRhdGFJbmRleCAgID0gMDsKKyAgICAgICBpbnQgaSAgICAgICAgICAgPSAwOworICAgICAgCisKKyAgICAgICBmb3IgKGludCBsaW5lID0gMDsgbGluZSA8IG51bWJlckxpbmVzOyBsaW5lKyspIHsKKyAgICAgICAgICAgZm9yIChpbnQgcXVhcnRldCA9IDA7IHF1YXJ0ZXQgPCAxOTsgcXVhcnRldCsrKSB7CisgICAgICAgICAgICAgICBiMSA9IGJpbmFyeURhdGFbZGF0YUluZGV4KytdOworICAgICAgICAgICAgICAgYjIgPSBiaW5hcnlEYXRhW2RhdGFJbmRleCsrXTsKKyAgICAgICAgICAgICAgIGIzID0gYmluYXJ5RGF0YVtkYXRhSW5kZXgrK107CisKKworICAgICAgICAgICAgICAgbCAgPSAoYnl0ZSkoYjIgJiAweDBmKTsKKyAgICAgICAgICAgICAgIGsgID0gKGJ5dGUpKGIxICYgMHgwMyk7CisKKyAgICAgICAgICAgICAgIGJ5dGUgdmFsMSA9ICgoYjEgJiBTSUdOKT09MCk/KGJ5dGUpKGIxPj4yKTooYnl0ZSkoKGIxKT4+Ml4weGMwKTsKKworICAgICAgICAgICAgICAgYnl0ZSB2YWwyID0gKChiMiAmIFNJR04pPT0wKT8oYnl0ZSkoYjI+PjQpOihieXRlKSgoYjIpPj40XjB4ZjApOworICAgICAgICAgICAgICAgYnl0ZSB2YWwzID0gKChiMyAmIFNJR04pPT0wKT8oYnl0ZSkoYjM+PjYpOihieXRlKSgoYjMpPj42XjB4ZmMpOworCisKKyAgICAgICAgICAgICAgIGVuY29kZWREYXRhW2VuY29kZWRJbmRleCsrXSA9IGxvb2tVcEJhc2U2NEFscGhhYmV0WyB2YWwxIF07CisgICAgICAgICAgICAgICBlbmNvZGVkRGF0YVtlbmNvZGVkSW5kZXgrK10gPSBsb29rVXBCYXNlNjRBbHBoYWJldFsgdmFsMiB8ICggazw8NCApXTsKKyAgICAgICAgICAgICAgIGVuY29kZWREYXRhW2VuY29kZWRJbmRleCsrXSA9IGxvb2tVcEJhc2U2NEFscGhhYmV0WyAobCA8PDIgKSB8IHZhbDMgXTsKKyAgICAgICAgICAgICAgIGVuY29kZWREYXRhW2VuY29kZWRJbmRleCsrXSA9IGxvb2tVcEJhc2U2NEFscGhhYmV0WyBiMyAmIDB4M2YgXTsKKworICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICB9ICAgICAgICAgICAKKyAgICAgICAgICAgCWVuY29kZWREYXRhW2VuY29kZWRJbmRleCsrXSA9IDB4YTsgICAgICAgICAgIAorICAgICAgIH0KKworICAgICAgIGZvciAoOyBpPG51bWJlclRyaXBsZXRzOyBpKyspIHsKKyAgICAgICAgICAgYjEgPSBiaW5hcnlEYXRhW2RhdGFJbmRleCsrXTsKKyAgICAgICAgICAgYjIgPSBiaW5hcnlEYXRhW2RhdGFJbmRleCsrXTsKKyAgICAgICAgICAgYjMgPSBiaW5hcnlEYXRhW2RhdGFJbmRleCsrXTsKKworCisgICAgICAgICAgIGwgID0gKGJ5dGUpKGIyICYgMHgwZik7CisgICAgICAgICAgIGsgID0gKGJ5dGUpKGIxICYgMHgwMyk7CisKKyAgICAgICAgICAgYnl0ZSB2YWwxID0gKChiMSAmIFNJR04pPT0wKT8oYnl0ZSkoYjE+PjIpOihieXRlKSgoYjEpPj4yXjB4YzApOworCisgICAgICAgICAgIGJ5dGUgdmFsMiA9ICgoYjIgJiBTSUdOKT09MCk/KGJ5dGUpKGIyPj40KTooYnl0ZSkoKGIyKT4+NF4weGYwKTsKKyAgICAgICAgICAgYnl0ZSB2YWwzID0gKChiMyAmIFNJR04pPT0wKT8oYnl0ZSkoYjM+PjYpOihieXRlKSgoYjMpPj42XjB4ZmMpOworCisKKyAgICAgICAgICAgZW5jb2RlZERhdGFbZW5jb2RlZEluZGV4KytdID0gbG9va1VwQmFzZTY0QWxwaGFiZXRbIHZhbDEgXTsKKyAgICAgICAgICAgZW5jb2RlZERhdGFbZW5jb2RlZEluZGV4KytdID0gbG9va1VwQmFzZTY0QWxwaGFiZXRbIHZhbDIgfCAoIGs8PDQgKV07CisgICAgICAgICAgIGVuY29kZWREYXRhW2VuY29kZWRJbmRleCsrXSA9IGxvb2tVcEJhc2U2NEFscGhhYmV0WyAobCA8PDIgKSB8IHZhbDMgXTsKKyAgICAgICAgICAgZW5jb2RlZERhdGFbZW5jb2RlZEluZGV4KytdID0gbG9va1VwQmFzZTY0QWxwaGFiZXRbIGIzICYgMHgzZiBdOworICAgICAgIH0KKworICAgICAgIC8vIGZvcm0gaW50ZWdyYWwgbnVtYmVyIG9mIDYtYml0IGdyb3VwcworICAgICAgIGlmIChmZXdlclRoYW4yNGJpdHMgPT0gRUlHSFRCSVQpIHsKKyAgICAgICAgICAgYjEgPSBiaW5hcnlEYXRhW2RhdGFJbmRleF07CisgICAgICAgICAgIGsgPSAoYnl0ZSkgKCBiMSAmMHgwMyApOworICAgICAgICAgIGJ5dGUgdmFsMSA9ICgoYjEgJiBTSUdOKT09MCk/KGJ5dGUpKGIxPj4yKTooYnl0ZSkoKGIxKT4+Ml4weGMwKTsKKyAgICAgICAgICAgZW5jb2RlZERhdGFbZW5jb2RlZEluZGV4KytdID0gbG9va1VwQmFzZTY0QWxwaGFiZXRbIHZhbDEgXTsKKyAgICAgICAgICAgZW5jb2RlZERhdGFbZW5jb2RlZEluZGV4KytdID0gbG9va1VwQmFzZTY0QWxwaGFiZXRbIGs8PDQgXTsKKyAgICAgICAgICAgZW5jb2RlZERhdGFbZW5jb2RlZEluZGV4KytdID0gUEFEOworICAgICAgICAgICBlbmNvZGVkRGF0YVtlbmNvZGVkSW5kZXgrK10gPSBQQUQ7CisgICAgICAgfSBlbHNlIGlmIChmZXdlclRoYW4yNGJpdHMgPT0gU0lYVEVFTkJJVCkgeworICAgICAgICAgICBiMSA9IGJpbmFyeURhdGFbZGF0YUluZGV4XTsKKyAgICAgICAgICAgYjIgPSBiaW5hcnlEYXRhW2RhdGFJbmRleCArMSBdOworICAgICAgICAgICBsID0gKCBieXRlICkgKCBiMiAmMHgwZiApOworICAgICAgICAgICBrID0gKCBieXRlICkgKCBiMSAmMHgwMyApOworCisgICAgICAgICAgIGJ5dGUgdmFsMSA9ICgoYjEgJiBTSUdOKT09MCk/KGJ5dGUpKGIxPj4yKTooYnl0ZSkoKGIxKT4+Ml4weGMwKTsKKyAgICAgICAgICAgYnl0ZSB2YWwyID0gKChiMiAmIFNJR04pPT0wKT8oYnl0ZSkoYjI+PjQpOihieXRlKSgoYjIpPj40XjB4ZjApOworCisgICAgICAgICAgIGVuY29kZWREYXRhW2VuY29kZWRJbmRleCsrXSA9IGxvb2tVcEJhc2U2NEFscGhhYmV0WyB2YWwxIF07CisgICAgICAgICAgIGVuY29kZWREYXRhW2VuY29kZWRJbmRleCsrXSA9IGxvb2tVcEJhc2U2NEFscGhhYmV0WyB2YWwyIHwgKCBrPDw0ICldOworICAgICAgICAgICBlbmNvZGVkRGF0YVtlbmNvZGVkSW5kZXgrK10gPSBsb29rVXBCYXNlNjRBbHBoYWJldFsgbDw8MiBdOworICAgICAgICAgICBlbmNvZGVkRGF0YVtlbmNvZGVkSW5kZXgrK10gPSBQQUQ7CisgICAgICAgfQorCisgICAgICAgLy9lbmNvZGVkRGF0YVtlbmNvZGVkSW5kZXhdID0gMHhhOworICAgICAgIAorICAgICAgIHJldHVybiBuZXcgU3RyaW5nKGVuY29kZWREYXRhKTsKKyAgIH0KKworICAgIC8qKgorICAgICAqIERlY29kZXMgQmFzZTY0IGRhdGEgaW50byBvY3RlY3RzCisgICAgICoKKyAgICAgKiBAcGFyYW0gZW5jb2RlZCBTdHJpbmcgY29udGFpbmluZyBiYXNlNjQgZW5jb2RlZCBkYXRhCisgICAgICogQHJldHVybiBieXRlIGFycmF5IGNvbnRhaW5pbmcgdGhlIGRlY29kZWQgZGF0YQorICAgICAqIEB0aHJvd3MgQmFzZTY0RGVjb2RpbmdFeGNlcHRpb24gaWYgdGhlcmUgaXMgYSBwcm9ibGVtIGRlY29kaW5nIHRoZSBkYXRhCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBieXRlW10gZGVjb2RlKFN0cmluZyBlbmNvZGVkKSB0aHJvd3MgQmFzZTY0RGVjb2RpbmdFeGNlcHRpb24geworCisgICAgCWlmIChlbmNvZGVkID09IG51bGwpCisgICAJICAgIHJldHVybiBudWxsOworICAgIAlieXRlIFtdYnl0ZXM9bmV3IGJ5dGVbZW5jb2RlZC5sZW5ndGgoKV07CisgICAgCWludCBsZW49Z2V0Qnl0ZXNJbnRlcm5hbChlbmNvZGVkLCBieXRlcyk7CisgICAgCXJldHVybiBkZWNvZGVJbnRlcm5hbChieXRlcywgbGVuKTsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBnZXRCeXRlc0ludGVybmFsKFN0cmluZyBzLGJ5dGVbXSByZXN1bHQpIHsKKyAgICAJaW50IGxlbmd0aD1zLmxlbmd0aCgpOworICAgIAkKKyAgICAJaW50IG5ld1NpemU9MDsKKyAgICAJZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgYnl0ZSBkYXRhUz0oYnl0ZSlzLmNoYXJBdChpKTsKKyAgICAgICAgICAgIGlmICghaXNXaGl0ZVNwYWNlKGRhdGFTKSkKKyAgICAgICAgICAgICAgICByZXN1bHRbbmV3U2l6ZSsrXSA9IGRhdGFTOworICAgICAgICB9CisgICAgCXJldHVybiBuZXdTaXplOworICAgIH0KKworICAgIHByb3RlY3RlZCBmaW5hbCBzdGF0aWMgYnl0ZVtdIGRlY29kZUludGVybmFsKGJ5dGVbXSBiYXNlNjREYXRhLCBpbnQgbGVuKSB0aHJvd3MgQmFzZTY0RGVjb2RpbmdFeGNlcHRpb24geworICAgICAgIC8vIHJlbW92ZSB3aGl0ZSBzcGFjZXMKKyAgICAgICBpZiAobGVuPT0tMSkKKyAgICAgICAgICAgbGVuID0gcmVtb3ZlV2hpdGVTcGFjZShiYXNlNjREYXRhKTsKKyAgICAgICAKKyAgICAgICBpZiAobGVuJUZPVVJCWVRFICE9IDApIHsKKyAgICAgICAgICAgdGhyb3cgbmV3IEJhc2U2NERlY29kaW5nRXhjZXB0aW9uKCJkZWNvZGluZy5kaXZpc2libGUuZm91ciIpOworICAgICAgICAgICAvL3Nob3VsZCBiZSBkaXZpc2libGUgYnkgZm91cgorICAgICAgIH0KKworICAgICAgIGludCAgICAgIG51bWJlclF1YWRydXBsZSAgICA9IChsZW4vRk9VUkJZVEUgKTsKKworICAgICAgIGlmIChudW1iZXJRdWFkcnVwbGUgPT0gMCkKKyAgICAgICAgICAgcmV0dXJuIG5ldyBieXRlWzBdOworCisgICAgICAgYnl0ZSAgICAgZGVjb2RlZERhdGFbXSAgICAgID0gbnVsbDsKKyAgICAgICBieXRlICAgICBiMT0wLGIyPTAsYjM9MCwgYjQ9MDsKKworCisgICAgICAgaW50IGkgPSAwOworICAgICAgIGludCBlbmNvZGVkSW5kZXggPSAwOworICAgICAgIGludCBkYXRhSW5kZXggICAgPSAwOworICAgICAgIAorICAgICAgIC8vZGVjb2RlZERhdGEgICAgICA9IG5ldyBieXRlWyAobnVtYmVyUXVhZHJ1cGxlKSozXTsKKyAgICAgICBkYXRhSW5kZXg9KG51bWJlclF1YWRydXBsZS0xKSo0OworICAgICAgIGVuY29kZWRJbmRleD0obnVtYmVyUXVhZHJ1cGxlLTEpKjM7CisgICAgICAgLy9maXJzdCBsYXN0IGJpdHMuCisgICAgICAgYjEgPSBiYXNlNjRBbHBoYWJldFtiYXNlNjREYXRhW2RhdGFJbmRleCsrXV07CisgICAgICAgYjIgPSBiYXNlNjRBbHBoYWJldFtiYXNlNjREYXRhW2RhdGFJbmRleCsrXV07CisgICAgICAgaWYgKChiMT09LTEpIHx8IChiMj09LTEpKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEJhc2U2NERlY29kaW5nRXhjZXB0aW9uKCJkZWNvZGluZy5nZW5lcmFsIik7Ly9pZiBmb3VuZCAibm8gZGF0YSIganVzdCByZXR1cm4gbnVsbAorICAgICAgICB9CisKKyAgICAgICAgCisgICAgICAgIGJ5dGUgZDMsZDQ7CisgICAgICAgIGIzID0gYmFzZTY0QWxwaGFiZXRbZDM9YmFzZTY0RGF0YVtkYXRhSW5kZXgrK11dOworICAgICAgICBiNCA9IGJhc2U2NEFscGhhYmV0W2Q0PWJhc2U2NERhdGFbZGF0YUluZGV4KytdXTsKKyAgICAgICAgaWYgKChiMz09LTEgKSB8fCAoYjQ9PS0xKSApIHsKKyAgICAgICAgCS8vQ2hlY2sgaWYgdGhleSBhcmUgUEFEIGNoYXJhY3RlcnMKKyAgICAgICAgICAgIGlmIChpc1BhZCggZDMgKSAmJiBpc1BhZCggZDQpKSB7ICAgICAgICAgICAgICAgLy9Ud28gUEFEIGUuZy4gM2NbUGFkXVtQYWRdCisgICAgICAgICAgICAgICAgaWYgKChiMiAmIDB4ZikgIT0gMCkvL2xhc3QgNCBiaXRzIHNob3VsZCBiZSB6ZXJvCisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQmFzZTY0RGVjb2RpbmdFeGNlcHRpb24oImRlY29kaW5nLmdlbmVyYWwiKTsKKyAgICAgICAgICAgICAgICBkZWNvZGVkRGF0YSA9IG5ldyBieXRlWyBlbmNvZGVkSW5kZXggKyAxIF07ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGRlY29kZWREYXRhW2VuY29kZWRJbmRleF0gICA9IChieXRlKSggIGIxIDw8MiB8IGIyPj40ICkgOyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIWlzUGFkKCBkMykgJiYgaXNQYWQoZDQpKSB7ICAgICAgICAgICAgICAgLy9PbmUgUEFEICBlLmcuIDNjUVtQYWRdICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICgoYjMgJiAweDMgKSAhPSAwKS8vbGFzdCAyIGJpdHMgc2hvdWxkIGJlIHplcm8KKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBCYXNlNjREZWNvZGluZ0V4Y2VwdGlvbigiZGVjb2RpbmcuZ2VuZXJhbCIpOworICAgICAgICAgICAgICAgIGRlY29kZWREYXRhID0gbmV3IGJ5dGVbIGVuY29kZWRJbmRleCArIDIgXTsgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZGVjb2RlZERhdGFbZW5jb2RlZEluZGV4KytdID0gKGJ5dGUpKCAgYjEgPDwyIHwgYjI+PjQgKTsKKyAgICAgICAgICAgICAgICBkZWNvZGVkRGF0YVtlbmNvZGVkSW5kZXhdICAgPSAoYnl0ZSkoKChiMiAmIDB4Zik8PDQgKSB8KCAoYjM+PjIpICYgMHhmKSApOyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEJhc2U2NERlY29kaW5nRXhjZXB0aW9uKCJkZWNvZGluZy5nZW5lcmFsIik7Ly9hbiBlcnJvciAgbGlrZSAiM2NbUGFkXXIiLCAiM2NkWCIsICIzY1hkIiwgIjNjWFgiIHdoZXJlIFggaXMgbm9uIGRhdGEKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vTm8gUEFEIGUuZyAzY1FsCisgICAgICAgICAgICBkZWNvZGVkRGF0YSA9IG5ldyBieXRlW2VuY29kZWRJbmRleCszXTsKKyAgICAgICAgICAgIGRlY29kZWREYXRhW2VuY29kZWRJbmRleCsrXSA9IChieXRlKSggIGIxIDw8MiB8IGIyPj40ICkgOworICAgICAgICAgICAgZGVjb2RlZERhdGFbZW5jb2RlZEluZGV4KytdID0gKGJ5dGUpKCgoYjIgJiAweGYpPDw0ICkgfCggKGIzPj4yKSAmIDB4ZikgKTsKKyAgICAgICAgICAgIGRlY29kZWREYXRhW2VuY29kZWRJbmRleCsrXSA9IChieXRlKSggYjM8PDYgfCBiNCApOworICAgICAgICB9CisgICAgICAgIGVuY29kZWRJbmRleD0wOworICAgICAgICBkYXRhSW5kZXg9MDsKKyAgICAgICAvL3RoZSBiZWdpbgorICAgICAgIGZvciAoaT1udW1iZXJRdWFkcnVwbGUtMTsgaT4wOyBpLS0pIHsKKyAgICAJICAgYjEgPSBiYXNlNjRBbHBoYWJldFtiYXNlNjREYXRhW2RhdGFJbmRleCsrXV07CisgICAgICAgICAgIGIyID0gYmFzZTY0QWxwaGFiZXRbYmFzZTY0RGF0YVtkYXRhSW5kZXgrK11dOworICAgICAgICAgICBiMyA9IGJhc2U2NEFscGhhYmV0W2Jhc2U2NERhdGFbZGF0YUluZGV4KytdXTsKKyAgICAgICAgICAgYjQgPSBiYXNlNjRBbHBoYWJldFtiYXNlNjREYXRhW2RhdGFJbmRleCsrXV07CisKKyAgICAgICAgICAgaWYgKCAoYjE9PS0xKSB8fAorICAgICAgICAJCShiMj09LTEpIHx8CisgICAgICAgIAkJKGIzPT0tMSkgfHwKKyAgICAgICAgCQkoYjQ9PS0xKSApIHsgICAgICAgIAkgIAorICAgICAgICAJICAgdGhyb3cgbmV3IEJhc2U2NERlY29kaW5nRXhjZXB0aW9uKCJkZWNvZGluZy5nZW5lcmFsIik7Ly9pZiBmb3VuZCAibm8gZGF0YSIganVzdCByZXR1cm4gbnVsbCAgIAorICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICBkZWNvZGVkRGF0YVtlbmNvZGVkSW5kZXgrK10gPSAoYnl0ZSkoICBiMSA8PDIgfCBiMj4+NCApIDsKKyAgICAgICAgICAgZGVjb2RlZERhdGFbZW5jb2RlZEluZGV4KytdID0gKGJ5dGUpKCgoYjIgJiAweGYpPDw0ICkgfCggKGIzPj4yKSAmIDB4ZikgKTsKKyAgICAgICAgICAgZGVjb2RlZERhdGFbZW5jb2RlZEluZGV4KytdID0gKGJ5dGUpKCBiMzw8NiB8IGI0ICk7CisgICAgICAgfSAgICAgICAgICAgIAorICAgICAgIHJldHVybiBkZWNvZGVkRGF0YTsKKyAgIH0KKworICAgLyoqCisgICAgKiBEZWNvZGVzIEJhc2U2NCBkYXRhIGludG8gIG91dHB1dHN0cmVhbQorICAgICoKKyAgICAqIEBwYXJhbSBiYXNlNjREYXRhIFN0cmluZyBjb250YWluaW5nIEJhc2U2NCBkYXRhCisgICAgKiBAcGFyYW0gb3MgdGhlIG91dHB1dHN0cmVhbQorICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorICAgICogQHRocm93cyBCYXNlNjREZWNvZGluZ0V4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgZmluYWwgc3RhdGljIHZvaWQgZGVjb2RlKFN0cmluZyBiYXNlNjREYXRhLAorICAgICAgICBPdXRwdXRTdHJlYW0gb3MpIHRocm93cyBCYXNlNjREZWNvZGluZ0V4Y2VwdGlvbiwgSU9FeGNlcHRpb24geworCSAgIGJ5dGVbXSBieXRlcz1uZXcgYnl0ZVtiYXNlNjREYXRhLmxlbmd0aCgpXTsKKwkgICBpbnQgbGVuPWdldEJ5dGVzSW50ZXJuYWwoYmFzZTY0RGF0YSwgYnl0ZXMpOworCSAgIGRlY29kZShieXRlcyxvcyxsZW4pOworICAgfQorCisgICAvKioKKyAgICAqIERlY29kZXMgQmFzZTY0IGRhdGEgaW50byAgb3V0cHV0c3RyZWFtCisgICAgKgorICAgICogQHBhcmFtIGJhc2U2NERhdGEgQnl0ZSBhcnJheSBjb250YWluaW5nIEJhc2U2NCBkYXRhCisgICAgKiBAcGFyYW0gb3MgdGhlIG91dHB1dHN0cmVhbQorICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorICAgICogQHRocm93cyBCYXNlNjREZWNvZGluZ0V4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgZmluYWwgc3RhdGljIHZvaWQgZGVjb2RlKGJ5dGVbXSBiYXNlNjREYXRhLAorICAgICAgICBPdXRwdXRTdHJlYW0gb3MpIHRocm93cyBCYXNlNjREZWNvZGluZ0V4Y2VwdGlvbiwgSU9FeGNlcHRpb24gewkgICAgCisJICAgIGRlY29kZShiYXNlNjREYXRhLG9zLC0xKTsKKyAgIH0KKworICAgcHJvdGVjdGVkIGZpbmFsIHN0YXRpYyB2b2lkIGRlY29kZShieXRlW10gYmFzZTY0RGF0YSwKKwkJICAgICAgICBPdXRwdXRTdHJlYW0gb3MsaW50IGxlbikgdGhyb3dzIEJhc2U2NERlY29kaW5nRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiB7CSAgICAKKwkJICAgCisJLy8gcmVtb3ZlIHdoaXRlIHNwYWNlcworICAgIGlmIChsZW49PS0xKQorICAgICAgIGxlbiA9IHJlbW92ZVdoaXRlU3BhY2UoYmFzZTY0RGF0YSk7CisgICAgCisgICAgaWYgKGxlbiVGT1VSQllURSAhPSAwKSB7CisgICAgICAgIHRocm93IG5ldyBCYXNlNjREZWNvZGluZ0V4Y2VwdGlvbigiZGVjb2RpbmcuZGl2aXNpYmxlLmZvdXIiKTsKKyAgICAgICAgLy9zaG91bGQgYmUgZGl2aXNpYmxlIGJ5IGZvdXIKKyAgICB9CisKKyAgICBpbnQgICAgICBudW1iZXJRdWFkcnVwbGUgICAgPSAobGVuL0ZPVVJCWVRFICk7CisKKyAgICBpZiAobnVtYmVyUXVhZHJ1cGxlID09IDApCisgICAgICAgIHJldHVybjsKKworICAgIC8vYnl0ZSAgICAgZGVjb2RlZERhdGFbXSAgICAgID0gbnVsbDsKKyAgICBieXRlICAgICBiMT0wLGIyPTAsYjM9MCwgYjQ9MDsKKworICAgIGludCBpID0gMDsKKworICAgIGludCBkYXRhSW5kZXggICAgPSAwOyAgICAKKyAgICAKKyAgICAvL3RoZSBiZWdpbgorICAgIGZvciAoaT1udW1iZXJRdWFkcnVwbGUtMTsgaT4wOyBpLS0pIHsKKyAgICAJYjEgPSBiYXNlNjRBbHBoYWJldFtiYXNlNjREYXRhW2RhdGFJbmRleCsrXV07CisgICAgICAgIGIyID0gYmFzZTY0QWxwaGFiZXRbYmFzZTY0RGF0YVtkYXRhSW5kZXgrK11dOworICAgICAgICBiMyA9IGJhc2U2NEFscGhhYmV0W2Jhc2U2NERhdGFbZGF0YUluZGV4KytdXTsKKyAgICAgICAgYjQgPSBiYXNlNjRBbHBoYWJldFtiYXNlNjREYXRhW2RhdGFJbmRleCsrXV07CisgICAgICAgIGlmICggKGIxPT0tMSkgfHwKKyAgICAgICAgCShiMj09LTEpIHx8CisgICAgICAgIAkoYjM9PS0xKSB8fAorICAgICAgICAJKGI0PT0tMSkgKQorICAgICAgICAgdGhyb3cgbmV3IEJhc2U2NERlY29kaW5nRXhjZXB0aW9uKCJkZWNvZGluZy5nZW5lcmFsIik7Ly9pZiBmb3VuZCAibm8gZGF0YSIganVzdCByZXR1cm4gbnVsbAorCisgICAgICAgIAorCisgICAgICAgIG9zLndyaXRlKChieXRlKSggIGIxIDw8MiB8IGIyPj40ICkgKTsKKyAgICAgICAgb3Mud3JpdGUoKGJ5dGUpKCgoYjIgJiAweGYpPDw0ICkgfCggKGIzPj4yKSAmIDB4ZikgKSk7CisgICAgICAgIG9zLndyaXRlKCAoYnl0ZSkoIGIzPDw2IHwgYjQgKSk7CisgICAgfSAgIAorICAgIGIxID0gYmFzZTY0QWxwaGFiZXRbYmFzZTY0RGF0YVtkYXRhSW5kZXgrK11dOworICAgIGIyID0gYmFzZTY0QWxwaGFiZXRbYmFzZTY0RGF0YVtkYXRhSW5kZXgrK11dOworICAgIAorICAgIC8vICBmaXJzdCBsYXN0IGJpdHMuCisgICAgaWYgKChiMT09LTEpIHx8CisgICAgICAgIChiMj09LTEpICl7CisgICAgICAgICAgICAgdGhyb3cgbmV3IEJhc2U2NERlY29kaW5nRXhjZXB0aW9uKCJkZWNvZGluZy5nZW5lcmFsIik7Ly9pZiBmb3VuZCAibm8gZGF0YSIganVzdCByZXR1cm4gbnVsbAorICAgICB9CisKKyAgICAgYnl0ZSBkMyxkNDsKKyAgICAgYjM9IGJhc2U2NEFscGhhYmV0W2QzID0gYmFzZTY0RGF0YVtkYXRhSW5kZXgrK11dOworICAgICBiND0gYmFzZTY0QWxwaGFiZXRbZDQgPSBiYXNlNjREYXRhW2RhdGFJbmRleCsrXV07CisgICAgIGlmICgoYjM9PS0xICkgfHwKKyAgICAgICAgICAoYjQ9PS0xKSApIHsvL0NoZWNrIGlmIHRoZXkgYXJlIFBBRCBjaGFyYWN0ZXJzCisgICAgICAgICBpZiAoaXNQYWQoIGQzICkgJiYgaXNQYWQoIGQ0KSkgeyAgICAgICAgICAgICAgIC8vVHdvIFBBRCBlLmcuIDNjW1BhZF1bUGFkXQorICAgICAgICAgICAgIGlmICgoYjIgJiAweGYpICE9IDApLy9sYXN0IDQgYml0cyBzaG91bGQgYmUgemVybworICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEJhc2U2NERlY29kaW5nRXhjZXB0aW9uKCJkZWNvZGluZy5nZW5lcmFsIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICBvcy53cml0ZSggKGJ5dGUpKCAgYjEgPDwyIHwgYjI+PjQgKSApOyAgICAgICAgICAgICAgICAKKyAgICAgICAgIH0gZWxzZSBpZiAoIWlzUGFkKCBkMykgJiYgaXNQYWQoZDQpKSB7ICAgICAgICAgICAgICAgLy9PbmUgUEFEICBlLmcuIDNjUVtQYWRdICAgICAgICAgICAgIAorICAgICAgICAgICAgIGlmICgoYjMgJiAweDMgKSAhPSAwKS8vbGFzdCAyIGJpdHMgc2hvdWxkIGJlIHplcm8KKyAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBCYXNlNjREZWNvZGluZ0V4Y2VwdGlvbigiZGVjb2RpbmcuZ2VuZXJhbCIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICBvcy53cml0ZSggKGJ5dGUpKCAgYjEgPDwyIHwgYjI+PjQgKSk7CisgICAgICAgICAgICAgb3Mud3JpdGUoIChieXRlKSgoKGIyICYgMHhmKTw8NCApIHwoIChiMz4+MikgJiAweGYpICkpOyAgICAgICAgICAgICAgICAKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgdGhyb3cgbmV3IEJhc2U2NERlY29kaW5nRXhjZXB0aW9uKCJkZWNvZGluZy5nZW5lcmFsIik7Ly9hbiBlcnJvciAgbGlrZSAiM2NbUGFkXXIiLCAiM2NkWCIsICIzY1hkIiwgIjNjWFgiIHdoZXJlIFggaXMgbm9uIGRhdGEKKyAgICAgICAgIH0KKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIC8vTm8gUEFEIGUuZyAzY1FsICAgICAgICAgCisgICAgICAgICBvcy53cml0ZSgoYnl0ZSkoICBiMSA8PDIgfCBiMj4+NCApICk7CisgICAgICAgICBvcy53cml0ZSggKGJ5dGUpKCgoYjIgJiAweGYpPDw0ICkgfCggKGIzPj4yKSAmIDB4ZikgKSk7CisgICAgICAgICBvcy53cml0ZSgoYnl0ZSkoIGIzPDw2IHwgYjQgKSk7CisgICAgIH0KKyAgICByZXR1cm4gOworICAgfQorICAgCisgICAvKioKKyAgICAqIERlY29kZXMgQmFzZTY0IGRhdGEgaW50byAgb3V0cHV0c3RyZWFtCisgICAgKgorICAgICogQHBhcmFtIGlzIGNvbnRhaW5pbmcgQmFzZTY0IGRhdGEKKyAgICAqIEBwYXJhbSBvcyB0aGUgb3V0cHV0c3RyZWFtCisgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEJhc2U2NERlY29kaW5nRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgdm9pZCBkZWNvZGUoSW5wdXRTdHJlYW0gaXMsCisgICAgICAgIE91dHB1dFN0cmVhbSBvcykgdGhyb3dzIEJhc2U2NERlY29kaW5nRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiB7CisJLy9ieXRlICAgICBkZWNvZGVkRGF0YVtdICAgICAgPSBudWxsOworICAgIGJ5dGUgICAgIGIxPTAsYjI9MCxiMz0wLCBiND0wOyAgICAKKworICAgIGludCBpbmRleD0wOworICAgIGJ5dGUgW11kYXRhPW5ldyBieXRlWzRdOworICAgIGludCByZWFkOworICAgIC8vdGhlIGJlZ2luCisgICAgd2hpbGUgKChyZWFkPWlzLnJlYWQoKSk+MCkgeworICAgICAgICBieXRlIHJlYWRlZD0oYnl0ZSlyZWFkOworICAgIAlpZiAoaXNXaGl0ZVNwYWNlKHJlYWRlZCkpIHsKKyAgICAJCWNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChpc1BhZChyZWFkZWQpKSB7CisgICAgICAgICAgICBkYXRhW2luZGV4KytdPXJlYWRlZDsKKyAgICAgICAgICAgIGlmIChpbmRleD09MykKKyAgICAgICAgICAgICAgICBkYXRhW2luZGV4KytdPShieXRlKWlzLnJlYWQoKTsKKyAgICAgICAgICAgIGJyZWFrOyAgIAorICAgICAgICB9CisgICAgICAgIAorICAgICAgICAKKyAgICAgICAgaWYgKChkYXRhW2luZGV4KytdPXJlYWRlZCk9PS0xKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgQmFzZTY0RGVjb2RpbmdFeGNlcHRpb24oImRlY29kaW5nLmdlbmVyYWwiKTsvL2lmIGZvdW5kICJubyBkYXRhIiBqdXN0IHJldHVybiBudWxsCisgICAgICAgICAgIH0gCisgICAgICAgIAorICAgICAgICBpZiAoaW5kZXghPTQpIHsKKyAgICAgICAgCWNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGluZGV4PTA7CisgICAgICAgIGIxID0gYmFzZTY0QWxwaGFiZXRbZGF0YVswXV07CisgICAgICAgIGIyID0gYmFzZTY0QWxwaGFiZXRbZGF0YVsxXV07CisgICAgICAgIGIzID0gYmFzZTY0QWxwaGFiZXRbZGF0YVsyXV07CisgICAgICAgIGI0ID0gYmFzZTY0QWxwaGFiZXRbZGF0YVszXV07CisKKyAgICAgICAgb3Mud3JpdGUoKGJ5dGUpKCAgYjEgPDwyIHwgYjI+PjQgKSApOworICAgICAgICBvcy53cml0ZSgoYnl0ZSkoKChiMiAmIDB4Zik8PDQgKSB8KCAoYjM+PjIpICYgMHhmKSApKTsKKyAgICAgICAgb3Mud3JpdGUoIChieXRlKSggYjM8PDYgfCBiNCApKTsKKyAgICB9ICAgICAgIAorICAgIAorCisgICAgYnl0ZSAgICAgZDE9ZGF0YVswXSxkMj1kYXRhWzFdLGQzPWRhdGFbMl0sIGQ0PWRhdGFbM107CisgICAgYjEgPSBiYXNlNjRBbHBoYWJldFtkMV07CisgICAgYjIgPSBiYXNlNjRBbHBoYWJldFtkMl07CisgICAgYjMgPSBiYXNlNjRBbHBoYWJldFsgZDMgXTsKKyAgICBiNCA9IGJhc2U2NEFscGhhYmV0WyBkNCBdOworICAgICBpZiAoKGIzPT0tMSApIHx8CisgICAgICAgICAoYjQ9PS0xKSApIHsvL0NoZWNrIGlmIHRoZXkgYXJlIFBBRCBjaGFyYWN0ZXJzCisgICAgICAgICBpZiAoaXNQYWQoIGQzICkgJiYgaXNQYWQoIGQ0KSkgeyAgICAgICAgICAgICAgIC8vVHdvIFBBRCBlLmcuIDNjW1BhZF1bUGFkXQorICAgICAgICAgICAgIGlmICgoYjIgJiAweGYpICE9IDApLy9sYXN0IDQgYml0cyBzaG91bGQgYmUgemVybworICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEJhc2U2NERlY29kaW5nRXhjZXB0aW9uKCJkZWNvZGluZy5nZW5lcmFsIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICBvcy53cml0ZSggKGJ5dGUpKCAgYjEgPDwyIHwgYjI+PjQgKSApOyAgICAgICAgICAgICAgICAKKyAgICAgICAgIH0gZWxzZSBpZiAoIWlzUGFkKCBkMykgJiYgaXNQYWQoZDQpKSB7ICAgICAgICAgICAgICAgLy9PbmUgUEFEICBlLmcuIDNjUVtQYWRdCisgICAgICAgICAgICAgYjMgPSBiYXNlNjRBbHBoYWJldFsgZDMgXTsKKyAgICAgICAgICAgICBpZiAoKGIzICYgMHgzICkgIT0gMCkvL2xhc3QgMiBiaXRzIHNob3VsZCBiZSB6ZXJvCisgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQmFzZTY0RGVjb2RpbmdFeGNlcHRpb24oImRlY29kaW5nLmdlbmVyYWwiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgb3Mud3JpdGUoIChieXRlKSggIGIxIDw8MiB8IGIyPj40ICkpOworICAgICAgICAgICAgIG9zLndyaXRlKCAoYnl0ZSkoKChiMiAmIDB4Zik8PDQgKSB8KCAoYjM+PjIpICYgMHhmKSApKTsgICAgICAgICAgICAgICAgCisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIHRocm93IG5ldyBCYXNlNjREZWNvZGluZ0V4Y2VwdGlvbigiZGVjb2RpbmcuZ2VuZXJhbCIpOy8vYW4gZXJyb3IgIGxpa2UgIjNjW1BhZF1yIiwgIjNjZFgiLCAiM2NYZCIsICIzY1hYIiB3aGVyZSBYIGlzIG5vbiBkYXRhCisgICAgICAgICB9CisgICAgIH0gZWxzZSB7CisgICAgICAgICAvL05vIFBBRCBlLmcgM2NRbCAgICAgICAgIAorICAgICAgICAgCisgICAgICAgICBvcy53cml0ZSgoYnl0ZSkoICBiMSA8PDIgfCBiMj4+NCApICk7CisgICAgICAgICBvcy53cml0ZSggKGJ5dGUpKCgoYjIgJiAweGYpPDw0ICkgfCggKGIzPj4yKSAmIDB4ZikgKSk7CisgICAgICAgICBvcy53cml0ZSgoYnl0ZSkoIGIzPDw2IHwgYjQgKSk7CisgICAgIH0KKyAgICAKKyAgICByZXR1cm4gOworICAgfQorCisgICAvKioKKyAgICAqIHJlbW92ZSBXaGl0ZVNwYWNlIGZyb20gTUlNRSBjb250YWluaW5nIGVuY29kZWQgQmFzZTY0IGRhdGEuCisgICAgKiAKKyAgICAqIEBwYXJhbSBkYXRhICB0aGUgYnl0ZSBhcnJheSBvZiBiYXNlNjQgZGF0YSAod2l0aCBXUykKKyAgICAqIEByZXR1cm4gICAgICB0aGUgbmV3IGxlbmd0aAorICAgICovCisgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCByZW1vdmVXaGl0ZVNwYWNlKGJ5dGVbXSBkYXRhKSB7CisgICAgICAgaWYgKGRhdGEgPT0gbnVsbCkKKyAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAvLyBjb3VudCBjaGFyYWN0ZXJzIHRoYXQncyBub3Qgd2hpdGVzcGFjZQorICAgICAgIGludCBuZXdTaXplID0gMDsKKyAgICAgICBpbnQgbGVuID0gZGF0YS5sZW5ndGg7CisgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICBieXRlIGRhdGFTPWRhdGFbaV07CisgICAgICAgICAgIGlmICghaXNXaGl0ZVNwYWNlKGRhdGFTKSkKKyAgICAgICAgICAgICAgIGRhdGFbbmV3U2l6ZSsrXSA9IGRhdGFTOworICAgICAgIH0KKyAgICAgICByZXR1cm4gbmV3U2l6ZTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9DYWNoZWRYUGF0aEFQSUhvbGRlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL0NhY2hlZFhQYXRoQVBJSG9sZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVlYTA2YwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9DYWNoZWRYUGF0aEFQSUhvbGRlci5qYXZhCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzOworCitpbXBvcnQgb3JnLmFwYWNoZS54cGF0aC5DYWNoZWRYUGF0aEFQSTsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKKworLyoqCisgKiBAYXV0aG9yIFJhdWwgQmVuaXRvCisgKi8KK3B1YmxpYyBjbGFzcyBDYWNoZWRYUGF0aEFQSUhvbGRlciB7CisKKyAgICBzdGF0aWMgVGhyZWFkTG9jYWwgIGxvY2FsPW5ldyBUaHJlYWRMb2NhbCgpOworICAgIHN0YXRpYyBUaHJlYWRMb2NhbCBsb2NhbERvYz1uZXcgVGhyZWFkTG9jYWwoKTsKKyAgCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgZG9jIGZvciB0aGUgeHBhdGggdHJhbnNmb3JtYXRpb24uIFJlc2V0cyB0aGUgY2FjaGUgaWYgbmVlZGVkCisgICAgICogQHBhcmFtIGRvYworICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXREb2MoRG9jdW1lbnQgZG9jKSB7ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgaWYgKGxvY2FsRG9jLmdldCgpIT1kb2MpIHsKKyAgICAgICAgICAgIENhY2hlZFhQYXRoQVBJIGN4PShDYWNoZWRYUGF0aEFQSSlsb2NhbC5nZXQoKTsKKyAgICAgICAgICAgIGlmIChjeD09bnVsbCkgeworICAgICAgICAgICAgICAgIGN4PW5ldyBDYWNoZWRYUGF0aEFQSSgpOworICAgICAgICAgICAgICAgIGxvY2FsLnNldChjeCk7CisgICAgICAgICAgICAgICAgbG9jYWxEb2Muc2V0KGRvYyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy9EaWZmZXJlbnQgZG9jcyByZXNldC4KKyAgICAgICAgICAgIGN4LmdldFhQYXRoQ29udGV4dCgpLnJlc2V0KCk7CisgICAgICAgICAgICBsb2NhbERvYy5zZXQoZG9jKTsgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgfQkJCisgICAgfQorCisgICAgLyoqCisgICAgICogQHJldHVybiB0aGUgY2FjaGV4cGF0aGFwaSBmb3IgdGhpcyB0aHJlYWQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIENhY2hlZFhQYXRoQVBJIGdldENhY2hlZFhQYXRoQVBJKCkgeyAgICAgICAgCisgICAgICAgIENhY2hlZFhQYXRoQVBJIGN4PShDYWNoZWRYUGF0aEFQSSlsb2NhbC5nZXQoKTsgICAgICAgIAorICAgICAgICBpZiAoY3g9PW51bGwpIHsKKyAgICAgICAgICAgIGN4PW5ldyBDYWNoZWRYUGF0aEFQSSgpOworICAgICAgICAgICAgbG9jYWwuc2V0KGN4KTsKKyAgICAgICAgICAgIGxvY2FsRG9jLnNldChudWxsKTsgICAgICAgICAgICAKKyAgICAgICAgfQorICAgIAlyZXR1cm4gY3g7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL0NhY2hlZFhQYXRoRnVuY0hlcmVBUEkuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9DYWNoZWRYUGF0aEZ1bmNIZXJlQVBJLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA3MTk0NQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9DYWNoZWRYUGF0aEZ1bmNIZXJlQVBJLmphdmEKQEAgLTAsMCArMSw0NTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzOworCisKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLmR0bS5EVE1NYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuaW1wbGVtZW50YXRpb25zLkZ1bmNIZXJlOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuaW1wbGVtZW50YXRpb25zLkZ1bmNIZXJlQ29udGV4dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC51dGlscy5QcmVmaXhSZXNvbHZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC51dGlscy5QcmVmaXhSZXNvbHZlckRlZmF1bHQ7CitpbXBvcnQgb3JnLmFwYWNoZS54cGF0aC5DYWNoZWRYUGF0aEFQSTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhwYXRoLkV4cHJlc3Npb247CitpbXBvcnQgb3JnLmFwYWNoZS54cGF0aC5YUGF0aDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhwYXRoLmNvbXBpbGVyLkZ1bmN0aW9uVGFibGU7CitpbXBvcnQgb3JnLmFwYWNoZS54cGF0aC5vYmplY3RzLlhPYmplY3Q7CitpbXBvcnQgb3JnLnczYy5kb20uKjsKK2ltcG9ydCBvcmcudzNjLmRvbS50cmF2ZXJzYWwuTm9kZUl0ZXJhdG9yOworCitpbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5FcnJvckxpc3RlbmVyOworaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uU291cmNlTG9jYXRvcjsKK2ltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRXhjZXB0aW9uOworaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0LkNvbnN0cnVjdG9yOworaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZDsKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5Nb2RpZmllcjsKKworLyoqCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICovCitwdWJsaWMgY2xhc3MgQ2FjaGVkWFBhdGhGdW5jSGVyZUFQSSB7CisKKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9CisgICAgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKENhY2hlZFhQYXRoRnVuY0hlcmVBUEkuY2xhc3MuZ2V0TmFtZSgpKTsKKyAgIC8qKgorICAgICogWFBhdGhDb250ZXh0LCBhbmQgdGh1cyBEVE1NYW5hZ2VyIGFuZCBEVE1zLCBwZXJzaXN0cyB0aHJvdWdoIG11bHRpcGxlCisgICAgKiAgIGNhbGxzIHRvIHRoaXMgb2JqZWN0LgorICAgICovCisgICBGdW5jSGVyZUNvbnRleHQgX2Z1bmNIZXJlQ29udGV4dCA9IG51bGw7CisKKyAgIC8qKiBGaWVsZCBfZHRtTWFuYWdlciAqLworICAgRFRNTWFuYWdlciBfZHRtTWFuYWdlciA9IG51bGw7CisKKyAgIFhQYXRoQ29udGV4dCBfY29udGV4dCA9IG51bGw7CisKKyAgIFN0cmluZyB4cGF0aFN0cj1udWxsOworCisgICBYUGF0aCB4cGF0aD1udWxsOworCisgICBzdGF0aWMgRnVuY3Rpb25UYWJsZSBfZnVuY1RhYmxlID0gbnVsbDsKKworICAgIHN0YXRpYyB7CisgICAgICAgIGZpeHVwRnVuY3Rpb25UYWJsZSgpOworICAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0RnVuY0hlcmVDb250ZXh0CisgICAgKiBAcmV0dXJuIHRoZSBjb250ZXh0IGZvciB0aGlzIG9iamVjdAorICAgICoKKyAgICAqLworICAgcHVibGljIEZ1bmNIZXJlQ29udGV4dCBnZXRGdW5jSGVyZUNvbnRleHQoKSB7CisgICAgICByZXR1cm4gdGhpcy5fZnVuY0hlcmVDb250ZXh0OworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIENhY2hlZFhQYXRoRnVuY0hlcmVBUEkKKyAgICAqCisgICAgKi8KKyAgIHByaXZhdGUgQ2FjaGVkWFBhdGhGdW5jSGVyZUFQSSgpIHt9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgQ2FjaGVkWFBhdGhGdW5jSGVyZUFQSQorICAgICoKKyAgICAqIEBwYXJhbSBleGlzdGluZ1hQYXRoQ29udGV4dAorICAgICovCisgICBwdWJsaWMgQ2FjaGVkWFBhdGhGdW5jSGVyZUFQSShYUGF0aENvbnRleHQgZXhpc3RpbmdYUGF0aENvbnRleHQpIHsKKyAgICAgIHRoaXMuX2R0bU1hbmFnZXIgPSBleGlzdGluZ1hQYXRoQ29udGV4dC5nZXREVE1NYW5hZ2VyKCk7CisgICAgICB0aGlzLl9jb250ZXh0PWV4aXN0aW5nWFBhdGhDb250ZXh0OworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIENhY2hlZFhQYXRoRnVuY0hlcmVBUEkKKyAgICAqCisgICAgKiBAcGFyYW0gcHJldmlvdXNseVVzZWQKKyAgICAqLworICAgcHVibGljIENhY2hlZFhQYXRoRnVuY0hlcmVBUEkoQ2FjaGVkWFBhdGhBUEkgcHJldmlvdXNseVVzZWQpIHsKKyAgICAgIHRoaXMuX2R0bU1hbmFnZXIgPSBwcmV2aW91c2x5VXNlZC5nZXRYUGF0aENvbnRleHQoKS5nZXREVE1NYW5hZ2VyKCk7CisgICAgICB0aGlzLl9jb250ZXh0PXByZXZpb3VzbHlVc2VkLmdldFhQYXRoQ29udGV4dCgpOworICAgfQorCisgICAvKioKKyAgICAqIFVzZSBhbiBYUGF0aCBzdHJpbmcgdG8gc2VsZWN0IGEgc2luZ2xlIG5vZGUuIFhQYXRoIG5hbWVzcGFjZQorICAgICogcHJlZml4ZXMgYXJlIHJlc29sdmVkIGZyb20gdGhlIGNvbnRleHQgbm9kZSwgd2hpY2ggbWF5IG5vdAorICAgICogYmUgd2hhdCB5b3Ugd2FudCAoc2VlIHRoZSBuZXh0IG1ldGhvZCkuCisgICAgKgorICAgICogQHBhcmFtIGNvbnRleHROb2RlIFRoZSBub2RlIHRvIHN0YXJ0IHNlYXJjaGluZyBmcm9tLgorICAgICogQHBhcmFtIHhwYXRobm9kZSBBIE5vZGUgY29udGFpbmluZyBhIHZhbGlkIFhQYXRoIHN0cmluZy4KKyAgICAqIEByZXR1cm4gVGhlIGZpcnN0IG5vZGUgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBYUGF0aCwgb3IgbnVsbC4KKyAgICAqCisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBOb2RlIHNlbGVjdFNpbmdsZU5vZGUoTm9kZSBjb250ZXh0Tm9kZSwgTm9kZSB4cGF0aG5vZGUpCisgICAgICAgICAgIHRocm93cyBUcmFuc2Zvcm1lckV4Y2VwdGlvbiB7CisgICAgICByZXR1cm4gc2VsZWN0U2luZ2xlTm9kZShjb250ZXh0Tm9kZSwgeHBhdGhub2RlLCBjb250ZXh0Tm9kZSk7CisgICB9CisKKyAgIC8qKgorICAgICogVXNlIGFuIFhQYXRoIHN0cmluZyB0byBzZWxlY3QgYSBzaW5nbGUgbm9kZS4KKyAgICAqIFhQYXRoIG5hbWVzcGFjZSBwcmVmaXhlcyBhcmUgcmVzb2x2ZWQgZnJvbSB0aGUgbmFtZXNwYWNlTm9kZS4KKyAgICAqCisgICAgKiBAcGFyYW0gY29udGV4dE5vZGUgVGhlIG5vZGUgdG8gc3RhcnQgc2VhcmNoaW5nIGZyb20uCisgICAgKiBAcGFyYW0geHBhdGhub2RlCisgICAgKiBAcGFyYW0gbmFtZXNwYWNlTm9kZSBUaGUgbm9kZSBmcm9tIHdoaWNoIHByZWZpeGVzIGluIHRoZSBYUGF0aCB3aWxsIGJlIHJlc29sdmVkIHRvIG5hbWVzcGFjZXMuCisgICAgKiBAcmV0dXJuIFRoZSBmaXJzdCBub2RlIGZvdW5kIHRoYXQgbWF0Y2hlcyB0aGUgWFBhdGgsIG9yIG51bGwuCisgICAgKgorICAgICogQHRocm93cyBUcmFuc2Zvcm1lckV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgTm9kZSBzZWxlY3RTaW5nbGVOb2RlKAorICAgICAgICAgICBOb2RlIGNvbnRleHROb2RlLCBOb2RlIHhwYXRobm9kZSwgTm9kZSBuYW1lc3BhY2VOb2RlKQorICAgICAgICAgICAgICB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24geworCisgICAgICAvLyBIYXZlIHRoZSBYT2JqZWN0IHJldHVybiBpdHMgcmVzdWx0IGFzIGEgTm9kZVNldERUTS4KKyAgICAgIE5vZGVJdGVyYXRvciBubCA9IHNlbGVjdE5vZGVJdGVyYXRvcihjb250ZXh0Tm9kZSwgeHBhdGhub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZU5vZGUpOworCisgICAgICAvLyBSZXR1cm4gdGhlIGZpcnN0IG5vZGUsIG9yIG51bGwKKyAgICAgIHJldHVybiBubC5uZXh0Tm9kZSgpOworICAgfQorCisgICAvKioKKyAgICAqICAgVXNlIGFuIFhQYXRoIHN0cmluZyB0byBzZWxlY3QgYSBub2RlbGlzdC4KKyAgICAqICAgWFBhdGggbmFtZXNwYWNlIHByZWZpeGVzIGFyZSByZXNvbHZlZCBmcm9tIHRoZSBjb250ZXh0Tm9kZS4KKyAgICAqCisgICAgKiAgIEBwYXJhbSBjb250ZXh0Tm9kZSBUaGUgbm9kZSB0byBzdGFydCBzZWFyY2hpbmcgZnJvbS4KKyAgICAqICAgQHBhcmFtIHhwYXRobm9kZQorICAgICogICBAcmV0dXJuIEEgTm9kZUl0ZXJhdG9yLCBzaG91bGQgbmV2ZXIgYmUgbnVsbC4KKyAgICAqCisgICAgKiAgQHRocm93cyBUcmFuc2Zvcm1lckV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgTm9kZUl0ZXJhdG9yIHNlbGVjdE5vZGVJdGVyYXRvcihOb2RlIGNvbnRleHROb2RlLCBOb2RlIHhwYXRobm9kZSkKKyAgICAgICAgICAgdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uIHsKKyAgICAgIHJldHVybiBzZWxlY3ROb2RlSXRlcmF0b3IoY29udGV4dE5vZGUsIHhwYXRobm9kZSwgY29udGV4dE5vZGUpOworICAgfQorCisgICAvKioKKyAgICAqICBVc2UgYW4gWFBhdGggc3RyaW5nIHRvIHNlbGVjdCBhIG5vZGVsaXN0LgorICAgICogIFhQYXRoIG5hbWVzcGFjZSBwcmVmaXhlcyBhcmUgcmVzb2x2ZWQgZnJvbSB0aGUgbmFtZXNwYWNlTm9kZS4KKyAgICAqCisgICAgKiAgQHBhcmFtIGNvbnRleHROb2RlIFRoZSBub2RlIHRvIHN0YXJ0IHNlYXJjaGluZyBmcm9tLgorICAgICogQHBhcmFtIHhwYXRobm9kZQorICAgICogIEBwYXJhbSBuYW1lc3BhY2VOb2RlIFRoZSBub2RlIGZyb20gd2hpY2ggcHJlZml4ZXMgaW4gdGhlIFhQYXRoIHdpbGwgYmUgcmVzb2x2ZWQgdG8gbmFtZXNwYWNlcy4KKyAgICAqICBAcmV0dXJuIEEgTm9kZUl0ZXJhdG9yLCBzaG91bGQgbmV2ZXIgYmUgbnVsbC4KKyAgICAqCisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uCisgICAgKiBAZGVwcmVjYXRlZAorICAgICovCisgICBwdWJsaWMgTm9kZUl0ZXJhdG9yIHNlbGVjdE5vZGVJdGVyYXRvcigKKyAgICAgICAgICAgTm9kZSBjb250ZXh0Tm9kZSwgTm9kZSB4cGF0aG5vZGUsIE5vZGUgbmFtZXNwYWNlTm9kZSkKKyAgICAgICAgICAgICAgdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uIHsKKworICAgICAgLy8gRXhlY3V0ZSB0aGUgWFBhdGgsIGFuZCBoYXZlIGl0IHJldHVybiB0aGUgcmVzdWx0CisgICAgICBYT2JqZWN0IGxpc3QgPSBldmFsKGNvbnRleHROb2RlLCB4cGF0aG5vZGUsIGdldFN0ckZyb21Ob2RlKHhwYXRobm9kZSksIG5hbWVzcGFjZU5vZGUpOworCisgICAgICAvLyBIYXZlIHRoZSBYT2JqZWN0IHJldHVybiBpdHMgcmVzdWx0IGFzIGEgTm9kZVNldERUTS4KKyAgICAgIHJldHVybiBsaXN0Lm5vZGVzZXQoKTsKKyAgIH0KKworICAgLyoqCisgICAgKiAgVXNlIGFuIFhQYXRoIHN0cmluZyB0byBzZWxlY3QgYSBub2RlbGlzdC4KKyAgICAqICBYUGF0aCBuYW1lc3BhY2UgcHJlZml4ZXMgYXJlIHJlc29sdmVkIGZyb20gdGhlIGNvbnRleHROb2RlLgorICAgICoKKyAgICAqICBAcGFyYW0gY29udGV4dE5vZGUgVGhlIG5vZGUgdG8gc3RhcnQgc2VhcmNoaW5nIGZyb20uCisgICAgKiBAcGFyYW0geHBhdGhub2RlCisgICAgKiAgQHJldHVybiBBIE5vZGVJdGVyYXRvciwgc2hvdWxkIG5ldmVyIGJlIG51bGwuCisgICAgKgorICAgICogQHRocm93cyBUcmFuc2Zvcm1lckV4Y2VwdGlvbgorICAgICogQGRlcHJlY2F0ZWQKKyAgICAqLworICAgcHVibGljIE5vZGVMaXN0IHNlbGVjdE5vZGVMaXN0KE5vZGUgY29udGV4dE5vZGUsIE5vZGUgeHBhdGhub2RlKQorICAgICAgICAgICB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24geworICAgICAgcmV0dXJuIHNlbGVjdE5vZGVMaXN0KGNvbnRleHROb2RlLCB4cGF0aG5vZGUsIGdldFN0ckZyb21Ob2RlKHhwYXRobm9kZSksIGNvbnRleHROb2RlKTsKKyAgIH0KKworICAgLyoqCisgICAgKiAgVXNlIGFuIFhQYXRoIHN0cmluZyB0byBzZWxlY3QgYSBub2RlbGlzdC4KKyAgICAqICBYUGF0aCBuYW1lc3BhY2UgcHJlZml4ZXMgYXJlIHJlc29sdmVkIGZyb20gdGhlIG5hbWVzcGFjZU5vZGUuCisgICAgKgorICAgICogIEBwYXJhbSBjb250ZXh0Tm9kZSBUaGUgbm9kZSB0byBzdGFydCBzZWFyY2hpbmcgZnJvbS4KKyAgICAqIEBwYXJhbSB4cGF0aG5vZGUKKyAgICAqIEBwYXJhbSBzdHIKKyAgICAqICBAcGFyYW0gbmFtZXNwYWNlTm9kZSBUaGUgbm9kZSBmcm9tIHdoaWNoIHByZWZpeGVzIGluIHRoZSBYUGF0aCB3aWxsIGJlIHJlc29sdmVkIHRvIG5hbWVzcGFjZXMuCisgICAgKiAgQHJldHVybiBBIE5vZGVJdGVyYXRvciwgc2hvdWxkIG5ldmVyIGJlIG51bGwuCisgICAgKgorICAgICogQHRocm93cyBUcmFuc2Zvcm1lckV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgTm9kZUxpc3Qgc2VsZWN0Tm9kZUxpc3QoCisgICAgICAgICAgIE5vZGUgY29udGV4dE5vZGUsIE5vZGUgeHBhdGhub2RlLCBTdHJpbmcgc3RyLCBOb2RlIG5hbWVzcGFjZU5vZGUpCisgICAgICAgICAgICAgIHRocm93cyBUcmFuc2Zvcm1lckV4Y2VwdGlvbiB7CisKKyAgICAgIC8vIEV4ZWN1dGUgdGhlIFhQYXRoLCBhbmQgaGF2ZSBpdCByZXR1cm4gdGhlIHJlc3VsdAorICAgICAgWE9iamVjdCBsaXN0ID0gZXZhbChjb250ZXh0Tm9kZSwgeHBhdGhub2RlLCBzdHIsIG5hbWVzcGFjZU5vZGUpOworCisgICAgICAvLyBSZXR1cm4gYSBOb2RlTGlzdC4KKyAgICAgIHJldHVybiBsaXN0Lm5vZGVsaXN0KCk7CisgICB9CisKKyAgIC8qKgorICAgICogIEV2YWx1YXRlIFhQYXRoIHN0cmluZyB0byBhbiBYT2JqZWN0LiAgVXNpbmcgdGhpcyBtZXRob2QsCisgICAgKiAgWFBhdGggbmFtZXNwYWNlIHByZWZpeGVzIHdpbGwgYmUgcmVzb2x2ZWQgZnJvbSB0aGUgbmFtZXNwYWNlTm9kZS4KKyAgICAqICBAcGFyYW0gY29udGV4dE5vZGUgVGhlIG5vZGUgdG8gc3RhcnQgc2VhcmNoaW5nIGZyb20uCisgICAgKiBAcGFyYW0geHBhdGhub2RlCisgICAgKiAgQHJldHVybiBBbiBYT2JqZWN0LCB3aGljaCBjYW4gYmUgdXNlZCB0byBvYnRhaW4gYSBzdHJpbmcsIG51bWJlciwgbm9kZWxpc3QsIGV0Yywgc2hvdWxkIG5ldmVyIGJlIG51bGwuCisgICAgKiAgQHNlZSBvcmcuYXBhY2hlLnhwYXRoLm9iamVjdHMuWE9iamVjdAorICAgICogIEBzZWUgb3JnLmFwYWNoZS54cGF0aC5vYmplY3RzLlhOdWxsCisgICAgKiAgQHNlZSBvcmcuYXBhY2hlLnhwYXRoLm9iamVjdHMuWEJvb2xlYW4KKyAgICAqICBAc2VlIG9yZy5hcGFjaGUueHBhdGgub2JqZWN0cy5YTnVtYmVyCisgICAgKiAgQHNlZSBvcmcuYXBhY2hlLnhwYXRoLm9iamVjdHMuWFN0cmluZworICAgICogIEBzZWUgb3JnLmFwYWNoZS54cGF0aC5vYmplY3RzLlhSVHJlZUZyYWcKKyAgICAqCisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uCisgICAgKiBAZGVwcmVjYXRlZAorICAgICovCisgICBwdWJsaWMgWE9iamVjdCBldmFsKE5vZGUgY29udGV4dE5vZGUsIE5vZGUgeHBhdGhub2RlKQorICAgICAgICAgICB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24geworICAgICAgcmV0dXJuIGV2YWwoY29udGV4dE5vZGUsIHhwYXRobm9kZSwgZ2V0U3RyRnJvbU5vZGUoeHBhdGhub2RlKSxjb250ZXh0Tm9kZSk7CisgICB9CisKKyAgIC8qKgorICAgICogIEV2YWx1YXRlIFhQYXRoIHN0cmluZyB0byBhbiBYT2JqZWN0LgorICAgICogIFhQYXRoIG5hbWVzcGFjZSBwcmVmaXhlcyBhcmUgcmVzb2x2ZWQgZnJvbSB0aGUgbmFtZXNwYWNlTm9kZS4KKyAgICAqICBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBpcyBhIGxpdHRsZSBzbG93LCBzaW5jZSBpdCBjcmVhdGVzCisgICAgKiAgYSBudW1iZXIgb2Ygb2JqZWN0cyBlYWNoIHRpbWUgaXQgaXMgY2FsbGVkLiAgVGhpcyBjb3VsZCBiZSBvcHRpbWl6ZWQKKyAgICAqICB0byBrZWVwIHRoZSBzYW1lIG9iamVjdHMgYXJvdW5kLCBidXQgdGhlbiB0aHJlYWQtc2FmZXR5IGlzc3VlcyB3b3VsZCBhcmlzZS4KKyAgICAqCisgICAgKiAgQHBhcmFtIGNvbnRleHROb2RlIFRoZSBub2RlIHRvIHN0YXJ0IHNlYXJjaGluZyBmcm9tLgorICAgICogQHBhcmFtIHhwYXRobm9kZQorICAgICogQHBhcmFtIHN0cgorICAgICogIEBwYXJhbSBuYW1lc3BhY2VOb2RlIFRoZSBub2RlIGZyb20gd2hpY2ggcHJlZml4ZXMgaW4gdGhlIFhQYXRoIHdpbGwgYmUgcmVzb2x2ZWQgdG8gbmFtZXNwYWNlcy4KKyAgICAqICBAcmV0dXJuIEFuIFhPYmplY3QsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIG9idGFpbiBhIHN0cmluZywgbnVtYmVyLCBub2RlbGlzdCwgZXRjLCBzaG91bGQgbmV2ZXIgYmUgbnVsbC4KKyAgICAqICBAc2VlIG9yZy5hcGFjaGUueHBhdGgub2JqZWN0cy5YT2JqZWN0CisgICAgKiAgQHNlZSBvcmcuYXBhY2hlLnhwYXRoLm9iamVjdHMuWE51bGwKKyAgICAqICBAc2VlIG9yZy5hcGFjaGUueHBhdGgub2JqZWN0cy5YQm9vbGVhbgorICAgICogIEBzZWUgb3JnLmFwYWNoZS54cGF0aC5vYmplY3RzLlhOdW1iZXIKKyAgICAqICBAc2VlIG9yZy5hcGFjaGUueHBhdGgub2JqZWN0cy5YU3RyaW5nCisgICAgKiAgQHNlZSBvcmcuYXBhY2hlLnhwYXRoLm9iamVjdHMuWFJUcmVlRnJhZworICAgICoKKyAgICAqIEB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIFhPYmplY3QgZXZhbChOb2RlIGNvbnRleHROb2RlLCBOb2RlIHhwYXRobm9kZSwgU3RyaW5nIHN0ciwgTm9kZSBuYW1lc3BhY2VOb2RlKQorICAgICAgICAgICB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24geworICAgICAgLy8gIENyZWF0ZSB0aGUgWFBhdGggb2JqZWN0LgorICAgICAgLy9TdHJpbmcgc3RyID0gQ2FjaGVkWFBhdGhGdW5jSGVyZUFQSS5nZXRTdHJGcm9tTm9kZSh4cGF0aG5vZGUpOworCisgICAgICAvLyBTaW5jZSB3ZSBkb24ndCBoYXZlIGEgWE1MIFBhcnNlciBpbnZvbHZlZCBoZXJlLCBpbnN0YWxsIHNvbWUgZGVmYXVsdCBzdXBwb3J0CisgICAgICAvLyBmb3IgdGhpbmdzIGxpa2UgbmFtZXNwYWNlcywgZXRjLgorICAgICAgLy8gKENoYW5nZWQgZnJvbTogWFBhdGhDb250ZXh0IHhwYXRoU3VwcG9ydCA9IG5ldyBYUGF0aENvbnRleHQoKTsKKyAgICAgIC8vICAgIGJlY2F1c2UgWFBhdGhDb250ZXh0IGlzIHdlYWsgaW4gYSBudW1iZXIgb2YgYXJlYXMuLi4gcGVyaGFwcworICAgICAgLy8gICAgWFBhdGhDb250ZXh0IHNob3VsZCBiZSBkb25lIGF3YXkgd2l0aC4pCisgICAgICBpZiAodGhpcy5fZnVuY0hlcmVDb250ZXh0ID09IG51bGwpIHsKKyAgICAgICAgIHRoaXMuX2Z1bmNIZXJlQ29udGV4dCA9IG5ldyBGdW5jSGVyZUNvbnRleHQoeHBhdGhub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9kdG1NYW5hZ2VyKTsKKyAgICAgIH0KKworICAgICAgLy8gQ3JlYXRlIGFuIG9iamVjdCB0byByZXNvbHZlIG5hbWVzcGFjZSBwcmVmaXhlcy4KKyAgICAgIC8vIFhQYXRoIG5hbWVzcGFjZXMgYXJlIHJlc29sdmVkIGZyb20gdGhlIGlucHV0IGNvbnRleHQgbm9kZSdzIGRvY3VtZW50IGVsZW1lbnQKKyAgICAgIC8vIGlmIGl0IGlzIGEgcm9vdCBub2RlLCBvciBlbHNlIHRoZSBjdXJyZW50IGNvbnRleHQgbm9kZSAoZm9yIGxhY2sgb2YgYSBiZXR0ZXIKKyAgICAgIC8vIHJlc29sdXRpb24gc3BhY2UsIGdpdmVuIHRoZSBzaW1wbGljaXR5IG9mIHRoaXMgc2FtcGxlIGNvZGUpLgorICAgICAgUHJlZml4UmVzb2x2ZXJEZWZhdWx0IHByZWZpeFJlc29sdmVyID0KKyAgICAgICAgIG5ldyBQcmVmaXhSZXNvbHZlckRlZmF1bHQoKG5hbWVzcGFjZU5vZGUuZ2V0Tm9kZVR5cGUoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0gTm9kZS5ET0NVTUVOVF9OT0RFKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICgoRG9jdW1lbnQpIG5hbWVzcGFjZU5vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXREb2N1bWVudEVsZW1lbnQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG5hbWVzcGFjZU5vZGUpOworCisgICAgICAvLyBvbmx5IGNoZWNrIGlmIHN0cmluZyBwb2ludHMgdG8gZGlmZmVyZW50IG9iamVjdCAoZm9yIHBlcmZvcm1hbmNlKQorICAgICAgaWYgKHN0ciE9eHBhdGhTdHIpIHsKKyAgICAgICAgaWYgKHN0ci5pbmRleE9mKCJoZXJlKCkiKT4wKSB7CisgICAgICAgICAgICBfY29udGV4dC5yZXNldCgpOworICAgICAgICAgICAgX2R0bU1hbmFnZXI9X2NvbnRleHQuZ2V0RFRNTWFuYWdlcigpOworICAgICAgICB9CisgICAgICAgIHhwYXRoID0gY3JlYXRlWFBhdGgoc3RyLCBwcmVmaXhSZXNvbHZlcik7CisgICAgICAgIHhwYXRoU3RyPXN0cjsKKyAgICAgIH0KKworICAgICAgLy8gRXhlY3V0ZSB0aGUgWFBhdGgsIGFuZCBoYXZlIGl0IHJldHVybiB0aGUgcmVzdWx0CisgICAgICAvLyByZXR1cm4geHBhdGguZXhlY3V0ZSh4cGF0aFN1cHBvcnQsIGNvbnRleHROb2RlLCBwcmVmaXhSZXNvbHZlcik7CisgICAgICBpbnQgY3R4dE5vZGUgPSB0aGlzLl9mdW5jSGVyZUNvbnRleHQuZ2V0RFRNSGFuZGxlRnJvbU5vZGUoY29udGV4dE5vZGUpOworCisgICAgICByZXR1cm4geHBhdGguZXhlY3V0ZSh0aGlzLl9mdW5jSGVyZUNvbnRleHQsIGN0eHROb2RlLCBwcmVmaXhSZXNvbHZlcik7CisgICB9CisKKyAgIC8qKgorICAgICogICBFdmFsdWF0ZSBYUGF0aCBzdHJpbmcgdG8gYW4gWE9iamVjdC4KKyAgICAqICAgWFBhdGggbmFtZXNwYWNlIHByZWZpeGVzIGFyZSByZXNvbHZlZCBmcm9tIHRoZSBuYW1lc3BhY2VOb2RlLgorICAgICogICBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBpcyBhIGxpdHRsZSBzbG93LCBzaW5jZSBpdCBjcmVhdGVzCisgICAgKiAgIGEgbnVtYmVyIG9mIG9iamVjdHMgZWFjaCB0aW1lIGl0IGlzIGNhbGxlZC4gIFRoaXMgY291bGQgYmUgb3B0aW1pemVkCisgICAgKiAgIHRvIGtlZXAgdGhlIHNhbWUgb2JqZWN0cyBhcm91bmQsIGJ1dCB0aGVuIHRocmVhZC1zYWZldHkgaXNzdWVzIHdvdWxkIGFyaXNlLgorICAgICoKKyAgICAqICAgQHBhcmFtIGNvbnRleHROb2RlIFRoZSBub2RlIHRvIHN0YXJ0IHNlYXJjaGluZyBmcm9tLgorICAgICogQHBhcmFtIHhwYXRobm9kZQorICAgICogQHBhcmFtIHN0cgorICAgICogICBAcGFyYW0gcHJlZml4UmVzb2x2ZXIgV2lsbCBiZSBjYWxsZWQgaWYgdGhlIHBhcnNlciBlbmNvdW50ZXJzIG5hbWVzcGFjZQorICAgICogICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4ZXMsIHRvIHJlc29sdmUgdGhlIHByZWZpeGVzIHRvIFVSTHMuCisgICAgKiAgIEByZXR1cm4gQW4gWE9iamVjdCwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gb2J0YWluIGEgc3RyaW5nLCBudW1iZXIsIG5vZGVsaXN0LCBldGMsIHNob3VsZCBuZXZlciBiZSBudWxsLgorICAgICogICBAc2VlIG9yZy5hcGFjaGUueHBhdGgub2JqZWN0cy5YT2JqZWN0CisgICAgKiAgIEBzZWUgb3JnLmFwYWNoZS54cGF0aC5vYmplY3RzLlhOdWxsCisgICAgKiAgIEBzZWUgb3JnLmFwYWNoZS54cGF0aC5vYmplY3RzLlhCb29sZWFuCisgICAgKiAgIEBzZWUgb3JnLmFwYWNoZS54cGF0aC5vYmplY3RzLlhOdW1iZXIKKyAgICAqICAgQHNlZSBvcmcuYXBhY2hlLnhwYXRoLm9iamVjdHMuWFN0cmluZworICAgICogICBAc2VlIG9yZy5hcGFjaGUueHBhdGgub2JqZWN0cy5YUlRyZWVGcmFnCisgICAgKgorICAgICogQHRocm93cyBUcmFuc2Zvcm1lckV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgWE9iamVjdCBldmFsKAorICAgICAgICAgICBOb2RlIGNvbnRleHROb2RlLCBOb2RlIHhwYXRobm9kZSwgU3RyaW5nIHN0ciwgUHJlZml4UmVzb2x2ZXIgcHJlZml4UmVzb2x2ZXIpCisgICAgICAgICAgICAgIHRocm93cyBUcmFuc2Zvcm1lckV4Y2VwdGlvbiB7CisKKyAgICAgIC8vIFNpbmNlIHdlIGRvbid0IGhhdmUgYSBYTUwgUGFyc2VyIGludm9sdmVkIGhlcmUsIGluc3RhbGwgc29tZSBkZWZhdWx0IHN1cHBvcnQKKyAgICAgIC8vIGZvciB0aGluZ3MgbGlrZSBuYW1lc3BhY2VzLCBldGMuCisgICAgICAvLyAoQ2hhbmdlZCBmcm9tOiBYUGF0aENvbnRleHQgeHBhdGhTdXBwb3J0ID0gbmV3IFhQYXRoQ29udGV4dCgpOworICAgICAgLy8gICAgYmVjYXVzZSBYUGF0aENvbnRleHQgaXMgd2VhayBpbiBhIG51bWJlciBvZiBhcmVhcy4uLiBwZXJoYXBzCisgICAgICAvLyAgICBYUGF0aENvbnRleHQgc2hvdWxkIGJlIGRvbmUgYXdheSB3aXRoLikKKyAgICAgIC8vIENyZWF0ZSB0aGUgWFBhdGggb2JqZWN0LgorICAgICAgLy9TdHJpbmcgc3RyID0gQ2FjaGVkWFBhdGhGdW5jSGVyZUFQSS5nZXRTdHJGcm9tTm9kZSh4cGF0aG5vZGUpOworICAgIC8vIG9ubHkgY2hlY2sgaWYgc3RyaW5nIHBvaW50cyB0byBkaWZmZXJlbnQgb2JqZWN0IChmb3IgcGVyZm9ybWFuY2UpCisgICAgaWYgKHN0ciE9eHBhdGhTdHIpIHsKKyAgICAgICAgaWYgKHN0ci5pbmRleE9mKCJoZXJlKCkiKT4wKSB7CisgICAgICAgICAgICBfY29udGV4dC5yZXNldCgpOworICAgICAgICAgICAgX2R0bU1hbmFnZXI9X2NvbnRleHQuZ2V0RFRNTWFuYWdlcigpOworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB4cGF0aCA9IGNyZWF0ZVhQYXRoKHN0ciwgcHJlZml4UmVzb2x2ZXIpOworICAgICAgICB9IGNhdGNoIChUcmFuc2Zvcm1lckV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgLy9UcnkgdG8gc2VlIGlmIGl0IGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjbGFzc2xvYWRlci4KKyAgICAgICAgICAgIFRocm93YWJsZSB0aD0gZXguZ2V0Q2F1c2UoKTsKKyAgICAgICAgICAgIGlmICh0aCBpbnN0YW5jZW9mIENsYXNzTm90Rm91bmRFeGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgaWYgKHRoLmdldE1lc3NhZ2UoKS5pbmRleE9mKCJGdW5jSGVyZSIpPjApIHsKKyAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKEkxOG4udHJhbnNsYXRlKCJlbmRvcnNlZC5qZGsxLjQuMCIpLyosKi8rZXgpOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgdGhyb3cgZXg7CisgICAgICAgIH0KKyAgICAgICAgeHBhdGhTdHI9c3RyOworICAgIH0KKworICAgICAgLy8gRXhlY3V0ZSB0aGUgWFBhdGgsIGFuZCBoYXZlIGl0IHJldHVybiB0aGUgcmVzdWx0CisgICAgICBpZiAodGhpcy5fZnVuY0hlcmVDb250ZXh0ID09IG51bGwpIHsKKyAgICAgICAgIHRoaXMuX2Z1bmNIZXJlQ29udGV4dCA9IG5ldyBGdW5jSGVyZUNvbnRleHQoeHBhdGhub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9kdG1NYW5hZ2VyKTsKKyAgICAgIH0KKworICAgICAgaW50IGN0eHROb2RlID0gdGhpcy5fZnVuY0hlcmVDb250ZXh0LmdldERUTUhhbmRsZUZyb21Ob2RlKGNvbnRleHROb2RlKTsKKworICAgICAgcmV0dXJuIHhwYXRoLmV4ZWN1dGUodGhpcy5fZnVuY0hlcmVDb250ZXh0LCBjdHh0Tm9kZSwgcHJlZml4UmVzb2x2ZXIpOworICAgfQorCisgICAgcHJpdmF0ZSBYUGF0aCBjcmVhdGVYUGF0aChTdHJpbmcgc3RyLCBQcmVmaXhSZXNvbHZlciBwcmVmaXhSZXNvbHZlcikgdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uIHsKKyAgICAgICAgWFBhdGggeHBhdGggPSBudWxsOworICAgICAgICBDbGFzc1tdIGNsYXNzZXMgPSBuZXcgQ2xhc3NbXXtTdHJpbmcuY2xhc3MsIFNvdXJjZUxvY2F0b3IuY2xhc3MsIFByZWZpeFJlc29sdmVyLmNsYXNzLCBpbnQuY2xhc3MsCisgICAgICAgICAgICAgICAgRXJyb3JMaXN0ZW5lci5jbGFzcywgRnVuY3Rpb25UYWJsZS5jbGFzc307CisgICAgICAgIE9iamVjdFtdIG9iamVjdHMgPSBuZXcgT2JqZWN0W117c3RyLCBudWxsLCBwcmVmaXhSZXNvbHZlciwgbmV3IEludGVnZXIoWFBhdGguU0VMRUNUKSwgbnVsbCwgX2Z1bmNUYWJsZX07CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBDb25zdHJ1Y3RvciBjb25zdHJ1Y3RvciA9IFhQYXRoLmNsYXNzLmdldENvbnN0cnVjdG9yKGNsYXNzZXMpOworICAgICAgICAgICAgeHBhdGggPSAoWFBhdGgpIGNvbnN0cnVjdG9yLm5ld0luc3RhbmNlKG9iamVjdHMpOworICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgdCkgeworICAgICAgICB9CisgICAgICAgIGlmICh4cGF0aCA9PSBudWxsKSB7CisgICAgICAgICAgICB4cGF0aCA9IG5ldyBYUGF0aChzdHIsIG51bGwsIHByZWZpeFJlc29sdmVyLCBYUGF0aC5TRUxFQ1QsIG51bGwpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB4cGF0aDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNZXRob2QgZ2V0U3RyRnJvbU5vZGUKKyAgICAgKgorICAgICAqIEBwYXJhbSB4cGF0aG5vZGUKKyAgICAgKiBAcmV0dXJuIHRoZSBzdHJpbmcgZm9yIHRoZSBub2RlLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFN0ckZyb21Ob2RlKE5vZGUgeHBhdGhub2RlKSB7CisKKyAgICAgICBpZiAoeHBhdGhub2RlLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5URVhUX05PREUpIHsKKworICAgICAgICAgIC8vIHdlIGl0ZXJhdGUgb3ZlciBhbGwgc2libGluZ3Mgb2YgdGhlIGNvbnRleHQgbm9kZSBiZWNhdXNlIGV2ZW50dWFsbHksCisgICAgICAgICAgLy8gdGhlIHRleHQgaXMgInBvbGx1dGVkIiB3aXRoIHBpJ3Mgb3IgY29tbWVudHMKKyAgICAgICAgICBTdHJpbmdCdWZmZXIgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisKKyAgICAgICAgICBmb3IgKE5vZGUgY3VycmVudFNpYmxpbmcgPSB4cGF0aG5vZGUuZ2V0UGFyZW50Tm9kZSgpLmdldEZpcnN0Q2hpbGQoKTsKKyAgICAgICAgICAgICAgIGN1cnJlbnRTaWJsaW5nICE9IG51bGw7CisgICAgICAgICAgICAgICBjdXJyZW50U2libGluZyA9IGN1cnJlbnRTaWJsaW5nLmdldE5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgICBpZiAoY3VycmVudFNpYmxpbmcuZ2V0Tm9kZVR5cGUoKSA9PSBOb2RlLlRFWFRfTk9ERSkgeworICAgICAgICAgICAgICAgIHNiLmFwcGVuZCgoKFRleHQpIGN1cnJlbnRTaWJsaW5nKS5nZXREYXRhKCkpOworICAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisKKyAgICAgICAgICByZXR1cm4gc2IudG9TdHJpbmcoKTsKKyAgICAgICB9IGVsc2UgaWYgKHhwYXRobm9kZS5nZXROb2RlVHlwZSgpID09IE5vZGUuQVRUUklCVVRFX05PREUpIHsKKyAgICAgICAgICByZXR1cm4gKChBdHRyKSB4cGF0aG5vZGUpLmdldE5vZGVWYWx1ZSgpOworICAgICAgIH0gZWxzZSBpZiAoeHBhdGhub2RlLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUpIHsKKyAgICAgICAgICByZXR1cm4gKChQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pIHhwYXRobm9kZSkuZ2V0Tm9kZVZhbHVlKCk7CisgICAgICAgfQorCisgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBmaXh1cEZ1bmN0aW9uVGFibGUoKSB7CisgICAgICAgIGJvb2xlYW4gaW5zdGFsbGVkID0gZmFsc2U7CisgICAgICAgIGxvZy5pbmZvKCJSZWdpc3RlcmluZyBIZXJlIGZ1bmN0aW9uIik7CisgICAgICAgIC8qKgorICAgICAgICAgKiBUcnkgdG8gcmVnaXN0ZXIgb3VyIGhlcmUoKSBpbXBsZW1lbnRhdGlvbiBhcyBpbnRlcm5hbCBmdW5jdGlvbi4KKyAgICAgICAgICovCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBDbGFzcyBbXWFyZ3MgPSB7U3RyaW5nLmNsYXNzLCBFeHByZXNzaW9uLmNsYXNzfTsKKyAgICAgICAgICAgIE1ldGhvZCBpbnN0YWxsRnVuY3Rpb24gPSBGdW5jdGlvblRhYmxlLmNsYXNzLmdldE1ldGhvZCgiaW5zdGFsbEZ1bmN0aW9uIiwgYXJncyk7CisgICAgICAgICAgICBpZiAoKGluc3RhbGxGdW5jdGlvbi5nZXRNb2RpZmllcnMoKSAmIE1vZGlmaWVyLlNUQVRJQykgIT0gMCkgeworICAgICAgICAgICAgICAgIE9iamVjdCBbXXBhcmFtcyA9IHsiaGVyZSIsIG5ldyBGdW5jSGVyZSgpfTsKKyAgICAgICAgICAgICAgICBpbnN0YWxsRnVuY3Rpb24uaW52b2tlKG51bGwsIHBhcmFtcyk7CisgICAgICAgICAgICAgICAgaW5zdGFsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoVGhyb3dhYmxlIHQpIHsKKyAgICAgICAgICAgIGxvZy5kZWJ1ZygiRXJyb3IgaW5zdGFsbGluZyBmdW5jdGlvbiB1c2luZyB0aGUgc3RhdGljIGluc3RhbGxGdW5jdGlvbiBtZXRob2QiLCB0KTsKKyAgICAgICAgfQorICAgICAgICBpZighaW5zdGFsbGVkKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIF9mdW5jVGFibGUgPSBuZXcgRnVuY3Rpb25UYWJsZSgpOworICAgICAgICAgICAgICAgIENsYXNzIFtdYXJncyA9IHtTdHJpbmcuY2xhc3MsIENsYXNzLmNsYXNzfTsKKyAgICAgICAgICAgICAgICBNZXRob2QgaW5zdGFsbEZ1bmN0aW9uID0gRnVuY3Rpb25UYWJsZS5jbGFzcy5nZXRNZXRob2QoImluc3RhbGxGdW5jdGlvbiIsIGFyZ3MpOworICAgICAgICAgICAgICAgIE9iamVjdCBbXXBhcmFtcyA9IHsiaGVyZSIsIEZ1bmNIZXJlLmNsYXNzfTsKKyAgICAgICAgICAgICAgICBpbnN0YWxsRnVuY3Rpb24uaW52b2tlKF9mdW5jVGFibGUsIHBhcmFtcyk7CisgICAgICAgICAgICAgICAgaW5zdGFsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSB0KSB7CisgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCJFcnJvciBpbnN0YWxsaW5nIGZ1bmN0aW9uIHVzaW5nIHRoZSBzdGF0aWMgaW5zdGFsbEZ1bmN0aW9uIG1ldGhvZCIsIHQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkgeworICAgICAgICAgICAgaWYgKGluc3RhbGxlZCkgeworICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygiUmVnaXN0ZXJlZCBjbGFzcyAiICsgRnVuY0hlcmUuY2xhc3MuZ2V0TmFtZSgpCisgICAgICAgICAgICAgICAgICAgICAgICArICIgZm9yIFhQYXRoIGZ1bmN0aW9uICdoZXJlKCknIGZ1bmN0aW9uIGluIGludGVybmFsIHRhYmxlIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygiVW5hYmxlIHRvIHJlZ2lzdGVyIGNsYXNzICIgKyBGdW5jSGVyZS5jbGFzcy5nZXROYW1lKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBmb3IgWFBhdGggZnVuY3Rpb24gJ2hlcmUoKScgZnVuY3Rpb24gaW4gaW50ZXJuYWwgdGFibGUiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9DbGFzc0xvYWRlclV0aWxzLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvQ2xhc3NMb2FkZXJVdGlscy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2Y2YyOTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvQ2xhc3NMb2FkZXJVdGlscy5qYXZhCkBAIC0wLDAgKzEsMjQwIEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworaW1wb3J0IGphdmEubmV0LlVSTDsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworLyoqCisgKiBUaGlzIGNsYXNzIGlzIGV4dHJlbWVseSB1c2VmdWwgZm9yIGxvYWRpbmcgcmVzb3VyY2VzIGFuZCBjbGFzc2VzIGluIGEgZmF1bHQKKyAqIHRvbGVyYW50IG1hbm5lciB0aGF0IHdvcmtzIGFjcm9zcyBkaWZmZXJlbnQgYXBwbGljYXRpb25zIHNlcnZlcnMuIERvIG5vdAorICogdG91Y2ggdGhpcyB1bmxlc3MgeW91J3JlIGEgZ3JpenpsZWQgY2xhc3Nsb2FkaW5nIGd1cnUgdmV0ZXJhbiB3aG8gaXMgZ29pbmcgdG8KKyAqIHZlcmlmeSBhbnkgY2hhbmdlIG9uIDYgZGlmZmVyZW50IGFwcGxpY2F0aW9uIHNlcnZlcnMuCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBDbGFzc0xvYWRlclV0aWxzIHsKKyAgICAKKyAgICBwcml2YXRlIENsYXNzTG9hZGVyVXRpbHMoKSB7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIExvYWQgYSBnaXZlbiByZXNvdXJjZS4gPHAvPiBUaGlzIG1ldGhvZCB3aWxsIHRyeSB0byBsb2FkIHRoZSByZXNvdXJjZQorICAgICAqIHVzaW5nIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyAoaW4gb3JkZXIpOgorICAgICAqIDx1bD4KKyAgICAgKiA8bGk+RnJvbSBUaHJlYWQuY3VycmVudFRocmVhZCgpLmdldENvbnRleHRDbGFzc0xvYWRlcigpCisgICAgICogPGxpPkZyb20gQ2xhc3NMb2FkZXJVdGlsLmNsYXNzLmdldENsYXNzTG9hZGVyKCkKKyAgICAgKiA8bGk+Y2FsbGluZ0NsYXNzLmdldENsYXNzTG9hZGVyKCkKKyAgICAgKiA8L3VsPgorICAgICAqIAorICAgICAqIEBwYXJhbSByZXNvdXJjZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHJlc291cmNlIHRvIGxvYWQKKyAgICAgKiBAcGFyYW0gY2FsbGluZ0NsYXNzIFRoZSBDbGFzcyBvYmplY3Qgb2YgdGhlIGNhbGxpbmcgb2JqZWN0CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBVUkwgZ2V0UmVzb3VyY2UoU3RyaW5nIHJlc291cmNlTmFtZSwgQ2xhc3MgY2FsbGluZ0NsYXNzKSB7CisgICAgICAgIFVSTCB1cmwgPSBUaHJlYWQuY3VycmVudFRocmVhZCgpLmdldENvbnRleHRDbGFzc0xvYWRlcigpLmdldFJlc291cmNlKHJlc291cmNlTmFtZSk7CisgICAgICAgIGlmICh1cmwgPT0gbnVsbCAmJiByZXNvdXJjZU5hbWUuc3RhcnRzV2l0aCgiLyIpKSB7CisgICAgICAgICAgICAvL2NlcnRhaW4gY2xhc3Nsb2FkZXJzIG5lZWQgaXQgd2l0aG91dCB0aGUgbGVhZGluZyAvCisgICAgICAgICAgICB1cmwgPSBUaHJlYWQuY3VycmVudFRocmVhZCgpLmdldENvbnRleHRDbGFzc0xvYWRlcigpCisgICAgICAgICAgICAgICAgLmdldFJlc291cmNlKHJlc291cmNlTmFtZS5zdWJzdHJpbmcoMSkpOworICAgICAgICB9CisKKyAgICAgICAgQ2xhc3NMb2FkZXIgY2x1Q2xhc3Nsb2FkZXIgPSBDbGFzc0xvYWRlclV0aWxzLmNsYXNzLmdldENsYXNzTG9hZGVyKCk7CisgICAgICAgIGlmIChjbHVDbGFzc2xvYWRlciA9PSBudWxsKSB7CisgICAgICAgICAgICBjbHVDbGFzc2xvYWRlciA9IENsYXNzTG9hZGVyLmdldFN5c3RlbUNsYXNzTG9hZGVyKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHVybCA9PSBudWxsKSB7CisgICAgICAgICAgICB1cmwgPSBjbHVDbGFzc2xvYWRlci5nZXRSZXNvdXJjZShyZXNvdXJjZU5hbWUpOworICAgICAgICB9CisgICAgICAgIGlmICh1cmwgPT0gbnVsbCAmJiByZXNvdXJjZU5hbWUuc3RhcnRzV2l0aCgiLyIpKSB7CisgICAgICAgICAgICAvL2NlcnRhaW4gY2xhc3Nsb2FkZXJzIG5lZWQgaXQgd2l0aG91dCB0aGUgbGVhZGluZyAvCisgICAgICAgICAgICB1cmwgPSBjbHVDbGFzc2xvYWRlci5nZXRSZXNvdXJjZShyZXNvdXJjZU5hbWUuc3Vic3RyaW5nKDEpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh1cmwgPT0gbnVsbCkgeworICAgICAgICAgICAgQ2xhc3NMb2FkZXIgY2wgPSBjYWxsaW5nQ2xhc3MuZ2V0Q2xhc3NMb2FkZXIoKTsKKworICAgICAgICAgICAgaWYgKGNsICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICB1cmwgPSBjbC5nZXRSZXNvdXJjZShyZXNvdXJjZU5hbWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHVybCA9PSBudWxsKSB7CisgICAgICAgICAgICB1cmwgPSBjYWxsaW5nQ2xhc3MuZ2V0UmVzb3VyY2UocmVzb3VyY2VOYW1lKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCh1cmwgPT0gbnVsbCkgJiYgKHJlc291cmNlTmFtZSAhPSBudWxsKSAmJiAocmVzb3VyY2VOYW1lLmNoYXJBdCgwKSAhPSAnLycpKSB7CisgICAgICAgICAgICByZXR1cm4gZ2V0UmVzb3VyY2UoJy8nICsgcmVzb3VyY2VOYW1lLCBjYWxsaW5nQ2xhc3MpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHVybDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogTG9hZCBhIGdpdmVuIHJlc291cmNlcy4gPHAvPiBUaGlzIG1ldGhvZCB3aWxsIHRyeSB0byBsb2FkIHRoZSByZXNvdXJjZXMKKyAgICAgKiB1c2luZyB0aGUgZm9sbG93aW5nIG1ldGhvZHMgKGluIG9yZGVyKToKKyAgICAgKiA8dWw+CisgICAgICogPGxpPkZyb20gVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5nZXRDb250ZXh0Q2xhc3NMb2FkZXIoKQorICAgICAqIDxsaT5Gcm9tIENsYXNzTG9hZGVyVXRpbC5jbGFzcy5nZXRDbGFzc0xvYWRlcigpCisgICAgICogPGxpPmNhbGxpbmdDbGFzcy5nZXRDbGFzc0xvYWRlcigpCisgICAgICogPC91bD4KKyAgICAgKiAKKyAgICAgKiBAcGFyYW0gcmVzb3VyY2VOYW1lIFRoZSBuYW1lIG9mIHRoZSByZXNvdXJjZSB0byBsb2FkCisgICAgICogQHBhcmFtIGNhbGxpbmdDbGFzcyBUaGUgQ2xhc3Mgb2JqZWN0IG9mIHRoZSBjYWxsaW5nIG9iamVjdAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgTGlzdCBnZXRSZXNvdXJjZXMoU3RyaW5nIHJlc291cmNlTmFtZSwgQ2xhc3MgY2FsbGluZ0NsYXNzKSB7CisgICAgICAgIExpc3QgcmV0ID0gbmV3IEFycmF5TGlzdCgpOworICAgICAgICBFbnVtZXJhdGlvbiB1cmxzID0gbmV3IEVudW1lcmF0aW9uKCkgeworICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gaGFzTW9yZUVsZW1lbnRzKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1YmxpYyBPYmplY3QgbmV4dEVsZW1lbnQoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgfTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHVybHMgPSBUaHJlYWQuY3VycmVudFRocmVhZCgpLmdldENvbnRleHRDbGFzc0xvYWRlcigpCisgICAgICAgICAgICAgICAgLmdldFJlc291cmNlcyhyZXNvdXJjZU5hbWUpOworICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAvL2lnbm9yZQorICAgICAgICB9CisgICAgICAgIGlmICghdXJscy5oYXNNb3JlRWxlbWVudHMoKSAmJiByZXNvdXJjZU5hbWUuc3RhcnRzV2l0aCgiLyIpKSB7CisgICAgICAgICAgICAvL2NlcnRhaW4gY2xhc3Nsb2FkZXJzIG5lZWQgaXQgd2l0aG91dCB0aGUgbGVhZGluZyAvCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHVybHMgPSBUaHJlYWQuY3VycmVudFRocmVhZCgpLmdldENvbnRleHRDbGFzc0xvYWRlcigpCisgICAgICAgICAgICAgICAgICAgIC5nZXRSZXNvdXJjZXMocmVzb3VyY2VOYW1lLnN1YnN0cmluZygxKSk7CisgICAgICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgLy8gaWdub3JlCisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBDbGFzc0xvYWRlciBjbHVDbGFzc2xvYWRlciA9IENsYXNzTG9hZGVyVXRpbHMuY2xhc3MuZ2V0Q2xhc3NMb2FkZXIoKTsKKyAgICAgICAgaWYgKGNsdUNsYXNzbG9hZGVyID09IG51bGwpIHsKKyAgICAgICAgICAgIGNsdUNsYXNzbG9hZGVyID0gQ2xhc3NMb2FkZXIuZ2V0U3lzdGVtQ2xhc3NMb2FkZXIoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXVybHMuaGFzTW9yZUVsZW1lbnRzKCkpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgdXJscyA9IGNsdUNsYXNzbG9hZGVyLmdldFJlc291cmNlcyhyZXNvdXJjZU5hbWUpOworICAgICAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIC8vIGlnbm9yZQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghdXJscy5oYXNNb3JlRWxlbWVudHMoKSAmJiByZXNvdXJjZU5hbWUuc3RhcnRzV2l0aCgiLyIpKSB7CisgICAgICAgICAgICAvL2NlcnRhaW4gY2xhc3Nsb2FkZXJzIG5lZWQgaXQgd2l0aG91dCB0aGUgbGVhZGluZyAvCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHVybHMgPSBjbHVDbGFzc2xvYWRlci5nZXRSZXNvdXJjZXMocmVzb3VyY2VOYW1lLnN1YnN0cmluZygxKSk7CisgICAgICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgLy8gaWdub3JlCisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXVybHMuaGFzTW9yZUVsZW1lbnRzKCkpIHsKKyAgICAgICAgICAgIENsYXNzTG9hZGVyIGNsID0gY2FsbGluZ0NsYXNzLmdldENsYXNzTG9hZGVyKCk7CisKKyAgICAgICAgICAgIGlmIChjbCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgdXJscyA9IGNsLmdldFJlc291cmNlcyhyZXNvdXJjZU5hbWUpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCF1cmxzLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgICAgICBVUkwgdXJsID0gY2FsbGluZ0NsYXNzLmdldFJlc291cmNlKHJlc291cmNlTmFtZSk7CisgICAgICAgICAgICBpZiAodXJsICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZXQuYWRkKHVybCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKHVybHMuaGFzTW9yZUVsZW1lbnRzKCkpIHsKKyAgICAgICAgICAgIHJldC5hZGQodXJscy5uZXh0RWxlbWVudCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIAorICAgICAgICBpZiAocmV0LmlzRW1wdHkoKSAmJiAocmVzb3VyY2VOYW1lICE9IG51bGwpICYmIChyZXNvdXJjZU5hbWUuY2hhckF0KDApICE9ICcvJykpIHsKKyAgICAgICAgICAgIHJldHVybiBnZXRSZXNvdXJjZXMoJy8nICsgcmVzb3VyY2VOYW1lLCBjYWxsaW5nQ2xhc3MpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisKKyAgICAvKioKKyAgICAgKiBUaGlzIGlzIGEgY29udmVuaWVuY2UgbWV0aG9kIHRvIGxvYWQgYSByZXNvdXJjZSBhcyBhIHN0cmVhbS4gPHAvPiBUaGUKKyAgICAgKiBhbGdvcml0aG0gdXNlZCB0byBmaW5kIHRoZSByZXNvdXJjZSBpcyBnaXZlbiBpbiBnZXRSZXNvdXJjZSgpCisgICAgICogCisgICAgICogQHBhcmFtIHJlc291cmNlTmFtZSBUaGUgbmFtZSBvZiB0aGUgcmVzb3VyY2UgdG8gbG9hZAorICAgICAqIEBwYXJhbSBjYWxsaW5nQ2xhc3MgVGhlIENsYXNzIG9iamVjdCBvZiB0aGUgY2FsbGluZyBvYmplY3QKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIElucHV0U3RyZWFtIGdldFJlc291cmNlQXNTdHJlYW0oU3RyaW5nIHJlc291cmNlTmFtZSwgQ2xhc3MgY2FsbGluZ0NsYXNzKSB7CisgICAgICAgIFVSTCB1cmwgPSBnZXRSZXNvdXJjZShyZXNvdXJjZU5hbWUsIGNhbGxpbmdDbGFzcyk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiAodXJsICE9IG51bGwpID8gdXJsLm9wZW5TdHJlYW0oKSA6IG51bGw7CisgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogTG9hZCBhIGNsYXNzIHdpdGggYSBnaXZlbiBuYW1lLiA8cC8+IEl0IHdpbGwgdHJ5IHRvIGxvYWQgdGhlIGNsYXNzIGluIHRoZQorICAgICAqIGZvbGxvd2luZyBvcmRlcjoKKyAgICAgKiA8dWw+CisgICAgICogPGxpPkZyb20gVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5nZXRDb250ZXh0Q2xhc3NMb2FkZXIoKQorICAgICAqIDxsaT5Vc2luZyB0aGUgYmFzaWMgQ2xhc3MuZm9yTmFtZSgpCisgICAgICogPGxpPkZyb20gQ2xhc3NMb2FkZXJVdGlsLmNsYXNzLmdldENsYXNzTG9hZGVyKCkKKyAgICAgKiA8bGk+RnJvbSB0aGUgY2FsbGluZ0NsYXNzLmdldENsYXNzTG9hZGVyKCkKKyAgICAgKiA8L3VsPgorICAgICAqIAorICAgICAqIEBwYXJhbSBjbGFzc05hbWUgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIHRvIGxvYWQKKyAgICAgKiBAcGFyYW0gY2FsbGluZ0NsYXNzIFRoZSBDbGFzcyBvYmplY3Qgb2YgdGhlIGNhbGxpbmcgb2JqZWN0CisgICAgICogQHRocm93cyBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIElmIHRoZSBjbGFzcyBjYW5ub3QgYmUgZm91bmQgYW55d2hlcmUuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBDbGFzcyBsb2FkQ2xhc3MoU3RyaW5nIGNsYXNzTmFtZSwgQ2xhc3MgY2FsbGluZ0NsYXNzKQorICAgICAgICB0aHJvd3MgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBDbGFzc0xvYWRlciBjbCA9IFRocmVhZC5jdXJyZW50VGhyZWFkKCkuZ2V0Q29udGV4dENsYXNzTG9hZGVyKCk7CisKKyAgICAgICAgICAgIGlmIChjbCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsLmxvYWRDbGFzcyhjbGFzc05hbWUpOworICAgICAgICAgICAgfSAgICAgICAgICAgIAorICAgICAgICB9IGNhdGNoIChDbGFzc05vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIC8vaWdub3JlCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGxvYWRDbGFzczIoY2xhc3NOYW1lLCBjYWxsaW5nQ2xhc3MpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIENsYXNzIGxvYWRDbGFzczIoU3RyaW5nIGNsYXNzTmFtZSwgQ2xhc3MgY2FsbGluZ0NsYXNzKQorICAgICAgICB0aHJvd3MgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gQ2xhc3MuZm9yTmFtZShjbGFzc05hbWUpOworICAgICAgICB9IGNhdGNoIChDbGFzc05vdEZvdW5kRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGlmIChDbGFzc0xvYWRlclV0aWxzLmNsYXNzLmdldENsYXNzTG9hZGVyKCkgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ2xhc3NMb2FkZXJVdGlscy5jbGFzcy5nZXRDbGFzc0xvYWRlcigpLmxvYWRDbGFzcyhjbGFzc05hbWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gY2F0Y2ggKENsYXNzTm90Rm91bmRFeGNlcHRpb24gZXhjKSB7CisgICAgICAgICAgICAgICAgaWYgKGNhbGxpbmdDbGFzcyAhPSBudWxsICYmIGNhbGxpbmdDbGFzcy5nZXRDbGFzc0xvYWRlcigpICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxpbmdDbGFzcy5nZXRDbGFzc0xvYWRlcigpLmxvYWRDbGFzcyhjbGFzc05hbWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRocm93IGV4OworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL0NvbnN0YW50cy5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL0NvbnN0YW50cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NDZiMjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvQ29uc3RhbnRzLmphdmEKQEAgLTAsMCArMSwyMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eUV4Y2VwdGlvbjsKKworLyoqCisgKiBQcm92aWRlcyBhbGwgY29uc3RhbnRzIGFuZCBzb21lIHRyYW5zbGF0aW9uIGZ1bmN0aW9ucyBmb3IgaTE4bi4KKyAqCisgKiBGb3IgdGhlIHVzZWQgQWxnb3JpdGhtIGlkZW50aWZpZXJzIGFuZCBOYW1lc3BhY2VzLCBsb29rIGF0IHRoZQorICogPEEgSFJFRj0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sZHNpZy1jb3JlLyNzZWMtVHJhbnNmb3JtQWxnIj5YTUwKKyAqIFNpZ25hdHVyZSBzcGVjaWZpY2F0aW9uPC9BPi4KKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKi8KK3B1YmxpYyBjbGFzcyBDb25zdGFudHMgeworCisgICAvKiogRmllbGQgY29uZmlndXJhdGlvbkZpbGUgKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvbmZpZ3VyYXRpb25GaWxlID0gImRhdGEvd2Vic2lnLmNvbmYiOworCisgICAvKiogRmllbGQgY29uZmlndXJhdGlvbkZpbGVOZXcgKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvbmZpZ3VyYXRpb25GaWxlTmV3ID0gIi54bWxzZWN1cml0eWNvbmZpZyI7CisKKyAgIC8qKiBGaWVsZCBleGNlcHRpb25NZXNzYWdlc1Jlc291cmNlQnVuZGxlRGlyICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBleGNlcHRpb25NZXNzYWdlc1Jlc291cmNlQnVuZGxlRGlyID0KKyAgICAgICJvcmcvYXBhY2hlL3htbC9zZWN1cml0eS9yZXNvdXJjZSI7CisKKyAgIC8qKiBGaWVsZCBleGNlcHRpb25NZXNzYWdlc1Jlc291cmNlQnVuZGxlQmFzZSBpcyB0aGUgbG9jYXRpb24gb2YgdGhlIDxDT0RFPlJlc291cmNlQnVuZGxlPC9DT0RFPiAqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZXhjZXB0aW9uTWVzc2FnZXNSZXNvdXJjZUJ1bmRsZUJhc2UgPQorICAgICAgZXhjZXB0aW9uTWVzc2FnZXNSZXNvdXJjZUJ1bmRsZURpciArICIvIiArICJ4bWxzZWN1cml0eSI7CisgICAvL0otCisgICAvKioKKyAgICAqIFRoZSBVUkwgb2YgdGhlIDxBIEhSRUY9Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvQ1IteG1sZHNpZy1jb3JlLTIwMDEwNDE5LyI+WE1MIFNpZ25hdHVyZSBzcGVjaWZpY2F0aW9uPC9BPgorICAgICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTSUdOQVRVUkVTUEVDSUZJQ0FUSU9OX1VSTCA9ICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL0NSLXhtbGRzaWctY29yZS0yMDAxMDQxOS8iOworCisgICAvKioKKyAgICAqIFRoZSBuYW1lc3BhY2Ugb2YgdGhlIDxBIEhSRUY9Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvQ1IteG1sZHNpZy1jb3JlLTIwMDEwNDE5LyI+WE1MIFNpZ25hdHVyZSBzcGVjaWZpY2F0aW9uPC9BPgorICAgICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTaWduYXR1cmVTcGVjTlMgICA9ICJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIjsKKyAgIC8qKiBUaGUgVVJMIGZvciBtb3JlIGFsZ29yaXRobSAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE1vcmVBbGdvcml0aG1zU3BlY05TICAgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjIjsKKyAgIC8qKiBUaGUgVVJJIGZvciBYTUwgc3BlYyovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBYTUxfTEFOR19TUEFDRV9TcGVjTlMgPSAiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIjsKKyAgIC8qKiBUaGUgVVJJIGZvciBYTUxOUyBzcGVjKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5hbWVzcGFjZVNwZWNOUyA9ICJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyI7CisKKyAgIC8qKiBUYWcgb2YgQXR0ciBBbGdvcml0aG0qKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9BVFRfQUxHT1JJVEhNICAgICAgICAgICAgICA9ICJBbGdvcml0aG0iOworICAgLyoqIFRhZyBvZiBBdHRyIFVSSSoqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgX0FUVF9VUkkgICAgICAgICAgICAgICAgICAgID0gIlVSSSI7CisgICAvKiogVGFnIG9mIEF0dHIgVHlwZSoqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgX0FUVF9UWVBFICAgICAgICAgICAgICAgICAgID0gIlR5cGUiOworICAgLyoqIFRhZyBvZiBBdHRyIElkKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfQVRUX0lEICAgICAgICAgICAgICAgICAgICAgPSAiSWQiOworICAgLyoqIFRhZyBvZiBBdHRyIE1pbWVUeXBlKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfQVRUX01JTUVUWVBFICAgICAgICAgICAgICAgPSAiTWltZVR5cGUiOworICAgLyoqIFRhZyBvZiBBdHRyIEVuY29kaW5nKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfQVRUX0VOQ09ESU5HICAgICAgICAgICAgICAgPSAiRW5jb2RpbmciOworICAgLyoqIFRhZyBvZiBBdHRyIFRhcmdldCoqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgX0FUVF9UQVJHRVQgICAgICAgICAgICAgICAgID0gIlRhcmdldCI7CisKKyAgIC8vIEtleUluZm8gKEtleU5hbWV8S2V5VmFsdWV8UmV0cmlldmFsTWV0aG9kfFg1MDlEYXRhfFBHUERhdGF8U1BLSURhdGF8TWdtdERhdGEpCisgICAvLyBLZXlWYWx1ZSAoRFNBS2V5VmFsdWV8UlNBS2V5VmFsdWUpCisgICAvLyBEU0FLZXlWYWx1ZSAoUCwgUSwgRywgWSwgSj8sIChTZWVkLCBQZ2VuQ291bnRlcik/KQorICAgLy8gUlNBS2V5VmFsdWUgKE1vZHVsdXMsIEV4cG9uZW50KQorICAgLy8gUmV0cmlldmFsTWV0aG9kIChUcmFuc2Zvcm1zPykKKyAgIC8vIFg1MDlEYXRhICgoWDUwOUlzc3VlclNlcmlhbCB8IFg1MDlTS0kgfCBYNTA5U3ViamVjdE5hbWUgfCBYNTA5Q2VydGlmaWNhdGUpKyB8IFg1MDlDUkwpCisgICAvLyBYNTA5SXNzdWVyU2VyaWFsIChYNTA5SXNzdWVyTmFtZSwgWDUwOVNlcmlhbE51bWJlcikKKyAgIC8vIFBHUERhdGEgKChQR1BLZXlJRCwgUEdQS2V5UGFja2V0PykgfCAoUEdQS2V5UGFja2V0KSkKKyAgIC8vIFNQS0lEYXRhIChTUEtJU2V4cCkKKworICAgLyoqIFRhZyBvZiBFbGVtZW50IENhbm9uaWNhbGl6YXRpb25NZXRob2QgKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfVEFHX0NBTk9OSUNBTElaQVRJT05NRVRIT0QgPSAiQ2Fub25pY2FsaXphdGlvbk1ldGhvZCI7CisgICAvKiogVGFnIG9mIEVsZW1lbnQgRGlnZXN0TWV0aG9kICoqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgX1RBR19ESUdFU1RNRVRIT0QgICAgICAgICAgID0gIkRpZ2VzdE1ldGhvZCI7CisgICAvKiogVGFnIG9mIEVsZW1lbnQgRGlnZXN0VmFsdWUgKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfVEFHX0RJR0VTVFZBTFVFICAgICAgICAgICAgPSAiRGlnZXN0VmFsdWUiOworICAgLyoqIFRhZyBvZiBFbGVtZW50IE1hbmlmZXN0ICoqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgX1RBR19NQU5JRkVTVCAgICAgICAgICAgICAgID0gIk1hbmlmZXN0IjsKKyAgIC8qKiBUYWcgb2YgRWxlbWVudCBNZXRob2RzICoqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgX1RBR19NRVRIT0RTICAgICAgICAgICAgICAgID0gIk1ldGhvZHMiOworICAgLyoqIFRhZyBvZiBFbGVtZW50IE9iamVjdCAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfT0JKRUNUICAgICAgICAgICAgICAgICA9ICJPYmplY3QiOworICAgLyoqIFRhZyBvZiBFbGVtZW50IFJlZmVyZW5jZSAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfUkVGRVJFTkNFICAgICAgICAgICAgICA9ICJSZWZlcmVuY2UiOworICAgLyoqIFRhZyBvZiBFbGVtZW50IFNpZ25hdHVyZSAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfU0lHTkFUVVJFICAgICAgICAgICAgICA9ICJTaWduYXR1cmUiOworICAgLyoqIFRhZyBvZiBFbGVtZW50IFNpZ25hdHVyZU1ldGhvZCAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfU0lHTkFUVVJFTUVUSE9EICAgICAgICA9ICJTaWduYXR1cmVNZXRob2QiOworICAgLyoqIFRhZyBvZiBFbGVtZW50IEhNQUNPdXRwdXRMZW5ndGggKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfVEFHX0hNQUNPVVRQVVRMRU5HVEggICAgICAgPSAiSE1BQ091dHB1dExlbmd0aCI7CisgICAvKiogVGFnIG9mIEVsZW1lbnQgU2lnbmF0dXJlUHJvcGVydGllcyAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfU0lHTkFUVVJFUFJPUEVSVElFUyAgICA9ICJTaWduYXR1cmVQcm9wZXJ0aWVzIjsKKyAgIC8qKiBUYWcgb2YgRWxlbWVudCBTaWduYXR1cmVQcm9wZXJ0eSAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfU0lHTkFUVVJFUFJPUEVSVFkgICAgICA9ICJTaWduYXR1cmVQcm9wZXJ0eSI7CisgICAvKiogVGFnIG9mIEVsZW1lbnQgU2lnbmF0dXJlVmFsdWUgKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfVEFHX1NJR05BVFVSRVZBTFVFICAgICAgICAgPSAiU2lnbmF0dXJlVmFsdWUiOworICAgLyoqIFRhZyBvZiBFbGVtZW50IFNpZ25lZEluZm8gKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfVEFHX1NJR05FRElORk8gICAgICAgICAgICAgPSAiU2lnbmVkSW5mbyI7CisgICAvKiogVGFnIG9mIEVsZW1lbnQgVHJhbnNmb3JtICoqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgX1RBR19UUkFOU0ZPUk0gICAgICAgICAgICAgID0gIlRyYW5zZm9ybSI7CisgICAvKiogVGFnIG9mIEVsZW1lbnQgVHJhbnNmb3JtcyAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfVFJBTlNGT1JNUyAgICAgICAgICAgICA9ICJUcmFuc2Zvcm1zIjsKKyAgIC8qKiBUYWcgb2YgRWxlbWVudCBYUGF0aCAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfWFBBVEggICAgICAgICAgICAgICAgICA9ICJYUGF0aCI7CisgICAvKiogVGFnIG9mIEVsZW1lbnQgS2V5SW5mbyAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfS0VZSU5GTyAgICAgICAgICAgICAgICA9ICJLZXlJbmZvIjsKKyAgIC8qKiBUYWcgb2YgRWxlbWVudCBLZXlOYW1lICoqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgX1RBR19LRVlOQU1FICAgICAgICAgICAgICAgID0gIktleU5hbWUiOworICAgLyoqIFRhZyBvZiBFbGVtZW50IEtleVZhbHVlICoqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgX1RBR19LRVlWQUxVRSAgICAgICAgICAgICAgID0gIktleVZhbHVlIjsKKyAgIC8qKiBUYWcgb2YgRWxlbWVudCBSZXRyaWV2YWxNZXRob2QgKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfVEFHX1JFVFJJRVZBTE1FVEhPRCAgICAgICAgPSAiUmV0cmlldmFsTWV0aG9kIjsKKyAgIC8qKiBUYWcgb2YgRWxlbWVudCBYNTA5RGF0YSAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfWDUwOURBVEEgICAgICAgICAgICAgICA9ICJYNTA5RGF0YSI7CisgICAvKiogVGFnIG9mIEVsZW1lbnQgUEdQRGF0YSAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfUEdQREFUQSAgICAgICAgICAgICAgICA9ICJQR1BEYXRhIjsKKyAgIC8qKiBUYWcgb2YgRWxlbWVudCBTUEtJRGF0YSAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfU1BLSURBVEEgICAgICAgICAgICAgICA9ICJTUEtJRGF0YSI7CisgICAvKiogVGFnIG9mIEVsZW1lbnQgTWdtdERhdGEgKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfVEFHX01HTVREQVRBICAgICAgICAgICAgICAgPSAiTWdtdERhdGEiOworICAgLyoqIFRhZyBvZiBFbGVtZW50IFJTQUtleVZhbHVlICoqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgX1RBR19SU0FLRVlWQUxVRSAgICAgICAgICAgID0gIlJTQUtleVZhbHVlIjsKKyAgIC8qKiBUYWcgb2YgRWxlbWVudCBFeHBvbmVudCAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfRVhQT05FTlQgICAgICAgICAgICAgICA9ICJFeHBvbmVudCI7CisgICAvKiogVGFnIG9mIEVsZW1lbnQgTW9kdWx1cyAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfTU9EVUxVUyAgICAgICAgICAgICAgICA9ICJNb2R1bHVzIjsKKyAgIC8qKiBUYWcgb2YgRWxlbWVudCBEU0FLZXlWYWx1ZSAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfRFNBS0VZVkFMVUUgICAgICAgICAgICA9ICJEU0FLZXlWYWx1ZSI7CisgICAvKiogVGFnIG9mIEVsZW1lbnQgUCAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfUCAgICAgICAgICAgICAgICAgICAgICA9ICJQIjsKKyAgIC8qKiBUYWcgb2YgRWxlbWVudCBRICoqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgX1RBR19RICAgICAgICAgICAgICAgICAgICAgID0gIlEiOworICAgLyoqIFRhZyBvZiBFbGVtZW50IEcgKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfVEFHX0cgICAgICAgICAgICAgICAgICAgICAgPSAiRyI7CisgICAvKiogVGFnIG9mIEVsZW1lbnQgWSAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfWSAgICAgICAgICAgICAgICAgICAgICA9ICJZIjsKKyAgIC8qKiBUYWcgb2YgRWxlbWVudCBKICoqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgX1RBR19KICAgICAgICAgICAgICAgICAgICAgID0gIkoiOworICAgLyoqIFRhZyBvZiBFbGVtZW50IFNlZWQgKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfVEFHX1NFRUQgICAgICAgICAgICAgICAgICAgPSAiU2VlZCI7CisgICAvKiogVGFnIG9mIEVsZW1lbnQgUGdlbkNvdW50ZXIgKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfVEFHX1BHRU5DT1VOVEVSICAgICAgICAgICAgPSAiUGdlbkNvdW50ZXIiOworICAgLyoqIFRhZyBvZiBFbGVtZW50IHJhd1g1MDlDZXJ0aWZpY2F0ZSAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfUkFXWDUwOUNFUlRJRklDQVRFICAgICA9ICJyYXdYNTA5Q2VydGlmaWNhdGUiOworICAgLyoqIFRhZyBvZiBFbGVtZW50IFg1MDlJc3N1ZXJTZXJpYWwgKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfVEFHX1g1MDlJU1NVRVJTRVJJQUwgICAgICAgPSAiWDUwOUlzc3VlclNlcmlhbCI7CisgICAvKiogVGFnIG9mIEVsZW1lbnQgWDUwOVNLSSAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfWDUwOVNLSSAgICAgICAgICAgICAgICA9ICJYNTA5U0tJIjsKKyAgIC8qKiBUYWcgb2YgRWxlbWVudCBYNTA5U3ViamVjdE5hbWUgKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfVEFHX1g1MDlTVUJKRUNUTkFNRSAgICAgICAgPSAiWDUwOVN1YmplY3ROYW1lIjsKKyAgIC8qKiBUYWcgb2YgRWxlbWVudCBYNTA5Q2VydGlmaWNhdGUgKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfVEFHX1g1MDlDRVJUSUZJQ0FURSAgICAgICAgPSAiWDUwOUNlcnRpZmljYXRlIjsKKyAgIC8qKiBUYWcgb2YgRWxlbWVudCBYNTA5Q1JMICoqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgX1RBR19YNTA5Q1JMICAgICAgICAgICAgICAgID0gIlg1MDlDUkwiOworICAgLyoqIFRhZyBvZiBFbGVtZW50IFg1MDlJc3N1ZXJOYW1lICoqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgX1RBR19YNTA5SVNTVUVSTkFNRSAgICAgICAgID0gIlg1MDlJc3N1ZXJOYW1lIjsKKyAgIC8qKiBUYWcgb2YgRWxlbWVudCBYNTA5U2VyaWFsTnVtYmVyICoqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgX1RBR19YNTA5U0VSSUFMTlVNQkVSICAgICAgID0gIlg1MDlTZXJpYWxOdW1iZXIiOworICAgLyoqIFRhZyBvZiBFbGVtZW50IFBHUEtleUlEICoqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgX1RBR19QR1BLRVlJRCAgICAgICAgICAgICAgID0gIlBHUEtleUlEIjsKKyAgIC8qKiBUYWcgb2YgRWxlbWVudCBQR1BLZXlQYWNrZXQgKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfVEFHX1BHUEtFWVBBQ0tFVCAgICAgICAgICAgPSAiUEdQS2V5UGFja2V0IjsKKyAgIC8qKiBUYWcgb2YgRWxlbWVudCBTUEtJU2V4cCAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfU1BLSVNFWFAgICAgICAgICAgICAgICA9ICJTUEtJU2V4cCI7CisKKyAgIC8qKiBEaWdlc3QgLSBSZXF1aXJlZCBTSEExICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBTEdPX0lEX0RJR0VTVF9TSEExICAgICAgICA9IFNpZ25hdHVyZVNwZWNOUyArICJzaGExIjsKKworICAgLyoqCisgICAgKiBAc2VlIDxBIEhSRUY9Imh0dHA6Ly93d3cuaWV0Zi5vcmcvaW50ZXJuZXQtZHJhZnRzL2RyYWZ0LWJsYWtlLXdpbHNvbi14bWxkc2lnLWVjZHNhLTAyLnR4dCI+CisgICAgKiAgZHJhZnQtYmxha2Utd2lsc29uLXhtbGRzaWctZWNkc2EtMDIudHh0PC9BPgorICAgICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBTEdPX0lEX1NJR05BVFVSRV9FQ0RTQV9DRVJUSUNPTSA9ICJodHRwOi8vd3d3LmNlcnRpY29tLmNvbS8yMDAwLzExL3htbGVjZHNpZyNlY2RzYS1zaGExIjsKKyAgIC8vSisKKworICAgcHJpdmF0ZSBDb25zdGFudHMoKSB7CisgICAgIC8vIHdlIGRvbid0IGFsbG93IGluc3RhbnRpYXRpb24KKyAgIH0KKworICAgLyoqCisgICAgKiBTZXRzIHRoZSBuYW1lc3BhY2UgcHJlZml4IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBpZGVudGlmeSBlbGVtZW50cyBpbiB0aGUKKyAgICAqIFhNTCBTaWduYXR1cmUgTmFtZXNwYWNlLgorICAgICoKKyAgICAqIDxwcmU+CisgICAgKiBDb25zdGFudHMuc2V0U2lnbmF0dXJlU3BlY05TcHJlZml4KCJkc2lnIik7CisgICAgKiA8L3ByZT4KKyAgICAqCisgICAgKiBAcGFyYW0gbmV3UHJlZml4IGlzIHRoZSBuZXcgbmFtZXNwYWNlIHByZWZpeC4KKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqIEBzZWUgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzI2dldFNpZ25hdHVyZVNwZWNOU3ByZWZpeAorICAgICogJHRvZG8kIEFkZCBjb25zaXN0ZW5jeSBjaGVja2luZyBmb3IgdmFsaWQgcHJlZml4CisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXRTaWduYXR1cmVTcGVjTlNwcmVmaXgoU3RyaW5nIG5ld1ByZWZpeCkgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKyAgICAgIEVsZW1lbnRQcm94eS5zZXREZWZhdWx0UHJlZml4KENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMsIG5ld1ByZWZpeCk7CisgICB9CisKKyAgIC8qKgorICAgICogUmV0dXJucyB0aGUgWE1MIG5hbWVzcGFjZSBwcmVmaXggd2hpY2ggaXMgdXNlZCBmb3IgZWxlbWVudHMgaW4gdGhlIFhNTAorICAgICogU2lnbmF0dXJlIG5hbWVzcGFjZS4KKyAgICAqCisgICAgKiBJdCBpcyBkZWZhdWx0ZWQgdG8gPGNvZGU+ZHNpZzwvY29kZT4sIGJ1dCBjYW4gYmUgY2hhbmdlZCB1c2luZyB0aGUKKyAgICAqIHtAbGluayAjc2V0U2lnbmF0dXJlU3BlY05TcHJlZml4fSBmdW5jdGlvbi4KKyAgICAqCisgICAgKiBAcmV0dXJuIHRoZSBjdXJyZW50IHVzZWQgbmFtZXNwYWNlIHByZWZpeAorICAgICogQHNlZSAjc2V0U2lnbmF0dXJlU3BlY05TcHJlZml4CisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFNpZ25hdHVyZVNwZWNOU3ByZWZpeCgpIHsKKyAgICAgIHJldHVybiBFbGVtZW50UHJveHkuZ2V0RGVmYXVsdFByZWZpeChDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9EaWdlc3Rlck91dHB1dFN0cmVhbS5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL0RpZ2VzdGVyT3V0cHV0U3RyZWFtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2UzODBmYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9EaWdlc3Rlck91dHB1dFN0cmVhbS5qYXZhCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMTk5OS0yMDA4IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHM7CisKK2ltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmFsZ29yaXRobXMuTWVzc2FnZURpZ2VzdEFsZ29yaXRobTsKKworLyoqCisgKiBAYXV0aG9yIHJhdWwKKyAqCisgKi8KK3B1YmxpYyBjbGFzcyBEaWdlc3Rlck91dHB1dFN0cmVhbSBleHRlbmRzIEJ5dGVBcnJheU91dHB1dFN0cmVhbSB7CisgICAgZmluYWwgTWVzc2FnZURpZ2VzdEFsZ29yaXRobSBtZGE7CisgICAgc3RhdGljIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZyBsb2cgPQorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZworICAgICAgICAoRGlnZXN0ZXJPdXRwdXRTdHJlYW0uY2xhc3MuZ2V0TmFtZSgpKTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSBtZGEKKyAgICAgKi8KKyAgICBwdWJsaWMgRGlnZXN0ZXJPdXRwdXRTdHJlYW0oTWVzc2FnZURpZ2VzdEFsZ29yaXRobSBtZGEpIHsKKyAgICAgICAgdGhpcy5tZGE9bWRhOwkJCisgICAgfQorCisgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgcHVibGljIHZvaWQgd3JpdGUoYnl0ZVtdIGFyZzApIHsKKwl3cml0ZShhcmcwLCAwLCBhcmcwLmxlbmd0aCk7CisgICAgfQorICAgIAorICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgIHB1YmxpYyB2b2lkIHdyaXRlKGludCBhcmcwKSB7CisJbWRhLnVwZGF0ZSgoYnl0ZSlhcmcwKTsKKyAgICB9CisgICAgCisgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgcHVibGljIHZvaWQgd3JpdGUoYnl0ZVtdIGFyZzAsIGludCBhcmcxLCBpbnQgYXJnMikgeworICAgICAgICBpZiAobG9nLmlzRGVidWdFbmFibGVkKCkpIHsKKyAgICAgICAgICAgIGxvZy5kZWJ1ZygiUHJlLWRpZ2VzdGVkIGlucHV0OiIpOworICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHNiID0gbmV3IFN0cmluZ0J1ZmZlcihhcmcyKTsKKyAgICAgICAgICAgIGZvciAoaW50IGk9YXJnMTsgaTwoYXJnMSthcmcyKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgc2IuYXBwZW5kKChjaGFyKSBhcmcwW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxvZy5kZWJ1ZyhzYi50b1N0cmluZygpKTsKKyAgICAgICAgfQorCW1kYS51cGRhdGUoYXJnMCwgYXJnMSwgYXJnMik7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEByZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSAKKyAgICAgKi8KKyAgICBwdWJsaWMgYnl0ZVtdIGdldERpZ2VzdFZhbHVlKCkgeworICAgICAgICAgcmV0dXJuIG1kYS5kaWdlc3QoKTsgICAKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvRWxlbWVudENoZWNrZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9FbGVtZW50Q2hlY2tlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjNDE1NTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvRWxlbWVudENoZWNrZXIuamF2YQpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0ICAyMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLlhNTFNlY3VyaXR5RXhjZXB0aW9uOworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKKworcHVibGljIGludGVyZmFjZSBFbGVtZW50Q2hlY2tlciB7CisJIC8qKgorCSAgKiBDaGVjayB0aGF0IHRoZSBlbGVtbnQgaXMgdGhlIG9uZSBleHBlY3QKKwkgICoKKwkgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorCSAgKi8KKwkgICBwdWJsaWMgdm9pZCBndWFyYW50ZWVUaGF0RWxlbWVudEluQ29ycmVjdFNwYWNlKEVsZW1lbnRQcm94eSBleHBlY3RlZCwgRWxlbWVudCBhY3R1YWwpCisJICAgICAgICAgICB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb247CisJICAgCisJICAgcHVibGljIGJvb2xlYW4gaXNOYW1lc3BhY2VFbGVtZW50KE5vZGUgZWwsIFN0cmluZyB0eXBlLCBTdHJpbmcgbnMpOworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL0VsZW1lbnRDaGVja2VySW1wbC5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL0VsZW1lbnRDaGVja2VySW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2ZmU3NjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvRWxlbWVudENoZWNrZXJJbXBsLmphdmEKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAgMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CisKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBFbGVtZW50Q2hlY2tlckltcGwgaW1wbGVtZW50cyBFbGVtZW50Q2hlY2tlciB7CisJcHVibGljIGJvb2xlYW4gaXNOYW1lc3BhY2VFbGVtZW50KE5vZGUgZWwsIFN0cmluZyB0eXBlLCBTdHJpbmcgbnMpIHsKKwkJaWYgKChlbCA9PSBudWxsKSB8fAorCQkgICBucyE9ZWwuZ2V0TmFtZXNwYWNlVVJJKCkgfHwgIWVsLmdldExvY2FsTmFtZSgpLmVxdWFscyh0eXBlKSl7CisJCSAgIHJldHVybiBmYWxzZTsKKwkJfQorCisJCXJldHVybiB0cnVlOworCX0KKwkvKiogQSBjaGVja2VyIGZvciBET00gdGhhdCBpbnRlcm5zIE5TICovCisJcHVibGljIHN0YXRpYyBjbGFzcyBJbnRlcm5lZE5zQ2hlY2tlciBleHRlbmRzIEVsZW1lbnRDaGVja2VySW1wbHsKKwkJcHVibGljIHZvaWQgZ3VhcmFudGVlVGhhdEVsZW1lbnRJbkNvcnJlY3RTcGFjZShFbGVtZW50UHJveHkgZXhwZWN0ZWQsCisJCQkJRWxlbWVudCBhY3R1YWwpIHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisKKwkJICAgICAgU3RyaW5nIGxvY2FsbmFtZVNIT1VMREJFID0gZXhwZWN0ZWQuZ2V0QmFzZUxvY2FsTmFtZSgpOworCQkgICAgICBTdHJpbmcgbmFtZXNwYWNlU0hPVUxEQkUgPSBleHBlY3RlZC5nZXRCYXNlTmFtZXNwYWNlKCk7CisJCSAgICAgIAorCQkgICAgICBTdHJpbmcgbG9jYWxuYW1lSVMgPSBhY3R1YWwuZ2V0TG9jYWxOYW1lKCk7CisJCSAgICAgIFN0cmluZyBuYW1lc3BhY2VJUyA9IGFjdHVhbC5nZXROYW1lc3BhY2VVUkkoKTsKKwkJICAgICAgaWYgKChuYW1lc3BhY2VTSE9VTERCRSE9bmFtZXNwYWNlSVMpIHx8CisJCSAgICAgICAhbG9jYWxuYW1lU0hPVUxEQkUuZXF1YWxzKGxvY2FsbmFtZUlTKSApIHsgICAgICAKKwkJICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyBuYW1lc3BhY2VJUyArIjoiKyBsb2NhbG5hbWVJUywgCisJCSAgICAgICAgICAgbmFtZXNwYWNlU0hPVUxEQkUgKyI6IisgbG9jYWxuYW1lU0hPVUxEQkV9OworCQkgICAgICAgICB0aHJvdyBuZXcgWE1MU2VjdXJpdHlFeGNlcHRpb24oInhtbC5Xcm9uZ0VsZW1lbnQiLCBleEFyZ3MpOworCQkgICAgICB9CQkJCisJCX0JCQorCX0KKwkKKwkvKiogQSBjaGVja2VyIGZvciBET00gdGhhdCBpbnRlcm5zIE5TICovCisJcHVibGljIHN0YXRpYyBjbGFzcyBGdWxsQ2hlY2tlciBleHRlbmRzIEVsZW1lbnRDaGVja2VySW1wbCB7CisJCXB1YmxpYyB2b2lkIGd1YXJhbnRlZVRoYXRFbGVtZW50SW5Db3JyZWN0U3BhY2UoRWxlbWVudFByb3h5IGV4cGVjdGVkLAorCQkJCUVsZW1lbnQgYWN0dWFsKSB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworCisJCSAgICAgIFN0cmluZyBsb2NhbG5hbWVTSE9VTERCRSA9IGV4cGVjdGVkLmdldEJhc2VMb2NhbE5hbWUoKTsKKwkJICAgICAgU3RyaW5nIG5hbWVzcGFjZVNIT1VMREJFID0gZXhwZWN0ZWQuZ2V0QmFzZU5hbWVzcGFjZSgpOworCQkgICAgICAKKwkJICAgICAgU3RyaW5nIGxvY2FsbmFtZUlTID0gYWN0dWFsLmdldExvY2FsTmFtZSgpOworCQkgICAgICBTdHJpbmcgbmFtZXNwYWNlSVMgPSBhY3R1YWwuZ2V0TmFtZXNwYWNlVVJJKCk7CisJCSAgICAgIGlmICgoIW5hbWVzcGFjZVNIT1VMREJFLmVxdWFscyhuYW1lc3BhY2VJUykpIHx8CisJCSAgICAgICAhbG9jYWxuYW1lU0hPVUxEQkUuZXF1YWxzKGxvY2FsbmFtZUlTKSApIHsgICAgICAKKwkJICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyBuYW1lc3BhY2VJUyArIjoiKyBsb2NhbG5hbWVJUywgCisJCSAgICAgICAgICAgbmFtZXNwYWNlU0hPVUxEQkUgKyI6IisgbG9jYWxuYW1lU0hPVUxEQkV9OworCQkgICAgICAgICB0aHJvdyBuZXcgWE1MU2VjdXJpdHlFeGNlcHRpb24oInhtbC5Xcm9uZ0VsZW1lbnQiLCBleEFyZ3MpOworCQkgICAgICB9CQkJCisJCX0JCQorCX0KKwkKKwkvKiogQW4gZW1wdHkgY2hlY2tlciBpZiBzY2hlbWEgY2hlY2tpbmcgaXMgdXNlZCAqLworCXB1YmxpYyBzdGF0aWMgY2xhc3MgRW1wdHlDaGVja2VyIGV4dGVuZHMgRWxlbWVudENoZWNrZXJJbXBsIHsKKwkJcHVibGljIHZvaWQgZ3VhcmFudGVlVGhhdEVsZW1lbnRJbkNvcnJlY3RTcGFjZShFbGVtZW50UHJveHkgZXhwZWN0ZWQsCisJCQkJRWxlbWVudCBhY3R1YWwpIHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisJCX0JCQorCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9FbGVtZW50UHJveHkuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9FbGVtZW50UHJveHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDliMWRmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL0VsZW1lbnRQcm94eS5qYXZhCkBAIC0wLDAgKzEsNTQxIEBACisvKgorICogQ29weXJpZ2h0IDE5OTktMjAwOCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzOworCisKKworaW1wb3J0IGphdmEubWF0aC5CaWdJbnRlZ2VyOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5CYXNlNjREZWNvZGluZ0V4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLlhNTFNlY3VyaXR5RXhjZXB0aW9uOworaW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OworaW1wb3J0IG9yZy53M2MuZG9tLlRleHQ7CisKKworLyoqCisgKiBUaGlzIGlzIHRoZSBiYXNlIGNsYXNzIHRvIGFsbCBPYmplY3RzIHdoaWNoIGhhdmUgYSBkaXJlY3QgMToxIG1hcHBpbmcgdG8gYW4KKyAqIEVsZW1lbnQgaW4gYSBwYXJ0aWN1bGFyIG5hbWVzcGFjZS4KKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBFbGVtZW50UHJveHkgeworCisgICAvKioge0BsaW5rIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nfSBsb2dnaW5nIGZhY2lsaXR5ICovCisgICAgc3RhdGljIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZyBsb2cgPSAKKyAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeS5nZXRMb2coRWxlbWVudFByb3h5LmNsYXNzLmdldE5hbWUoKSk7CisgICAKKyAgIC8qKgorICAgICogUmV0dXJucyB0aGUgbmFtZXNwYWNlIG9mIHRoZSBFbGVtZW50cyBvZiB0aGUgc3ViLWNsYXNzLgorICAgICoKKyAgICAqIEByZXR1cm4gdGhlIG5hbWVzcGFjZSBvZiB0aGUgRWxlbWVudHMgb2YgdGhlIHN1Yi1jbGFzcy4KKyAgICAqLworICAgcHVibGljIGFic3RyYWN0IFN0cmluZyBnZXRCYXNlTmFtZXNwYWNlKCk7CisKKyAgIC8qKgorICAgICogUmV0dXJucyB0aGUgbG9jYWxuYW1lIG9mIHRoZSBFbGVtZW50cyBvZiB0aGUgc3ViLWNsYXNzLgorICAgICoKKyAgICAqIEByZXR1cm4gdGhlIGxvY2FsbmFtZSBvZiB0aGUgRWxlbWVudHMgb2YgdGhlIHN1Yi1jbGFzcy4KKyAgICAqLworICAgcHVibGljIGFic3RyYWN0IFN0cmluZyBnZXRCYXNlTG9jYWxOYW1lKCk7CisKKyAgIC8qKiBGaWVsZCBfY29uc3RydWN0aW9uRWxlbWVudCAqLworICAgcHJvdGVjdGVkIEVsZW1lbnQgX2NvbnN0cnVjdGlvbkVsZW1lbnQgPSBudWxsOworCisgICAvKiogRmllbGQgX2Jhc2VVUkkgKi8KKyAgIHByb3RlY3RlZCBTdHJpbmcgX2Jhc2VVUkkgPSBudWxsOworCisgICAvKiogRmllbGQgX2RvYyAqLworICAgcHJvdGVjdGVkIERvY3VtZW50IF9kb2MgPSBudWxsOworCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIEVsZW1lbnRQcm94eQorICAgICoKKyAgICAqLworICAgcHVibGljIEVsZW1lbnRQcm94eSgpIHsJICAgCisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgRWxlbWVudFByb3h5CisgICAgKgorICAgICogQHBhcmFtIGRvYworICAgICovCisgICBwdWJsaWMgRWxlbWVudFByb3h5KERvY3VtZW50IGRvYykgeworICAgICAgaWYgKGRvYyA9PSBudWxsKSB7CisgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiRG9jdW1lbnQgaXMgbnVsbCIpOworICAgICAgfQorCisgICAgICB0aGlzLl9kb2MgPSBkb2M7CisgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50ID0gY3JlYXRlRWxlbWVudEZvckZhbWlseUxvY2FsKHRoaXMuX2RvYywKKyAgICAJCSAgdGhpcy5nZXRCYXNlTmFtZXNwYWNlKCksIHRoaXMuZ2V0QmFzZUxvY2FsTmFtZSgpKTsgICAgICAKKyAgIH0gICAgICAgCisgICBwcm90ZWN0ZWQgRWxlbWVudCBjcmVhdGVFbGVtZW50Rm9yRmFtaWx5TG9jYWwoRG9jdW1lbnQgZG9jLCBTdHJpbmcgbmFtZXNwYWNlLAorICAgICAgICAgICBTdHJpbmcgbG9jYWxOYW1lKSB7CSAgIAkgIAorCSAJICBFbGVtZW50IHJlc3VsdCA9IG51bGw7CisJICAgICAgaWYgKG5hbWVzcGFjZSA9PSBudWxsKSB7CisJICAgICAgICAgcmVzdWx0ID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhudWxsLCBsb2NhbE5hbWUpOworCSAgICAgIH0gZWxzZSB7CisJICAgIAkgIFN0cmluZyBiYXNlTmFtZT10aGlzLmdldEJhc2VOYW1lc3BhY2UoKTsKKwkgICAgCSAgU3RyaW5nIHByZWZpeD1FbGVtZW50UHJveHkuZ2V0RGVmYXVsdFByZWZpeChiYXNlTmFtZSk7CisJICAgICAgICAgaWYgKChwcmVmaXggPT0gbnVsbCkgfHwgKHByZWZpeC5sZW5ndGgoKSA9PSAwKSkgeworCSAgICAgICAgICAgIHJlc3VsdCA9IGRvYy5jcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlLCBsb2NhbE5hbWUpOworCisJICAgICAgICAgICAgcmVzdWx0LnNldEF0dHJpYnV0ZU5TKENvbnN0YW50cy5OYW1lc3BhY2VTcGVjTlMsICJ4bWxucyIsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZSk7CisJICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgIAkgU3RyaW5nIHRhZ05hbWU9bnVsbDsKKwkgICAgICAgIAkgU3RyaW5nIGRlZmF1bHRQcmVmaXhOYW1pbmc9RWxlbWVudFByb3h5LmdldERlZmF1bHRQcmVmaXhCaW5kaW5ncyhiYXNlTmFtZSk7CisJICAgICAgICAJIFN0cmluZ0J1ZmZlciBzYj1uZXcgU3RyaW5nQnVmZmVyKHByZWZpeCk7CisJICAgICAgICAJIHNiLmFwcGVuZCgnOicpOworCSAgICAgICAgCSBzYi5hcHBlbmQobG9jYWxOYW1lKTsKKwkgICAgICAgIAkgdGFnTmFtZT1zYi50b1N0cmluZygpOwkgICAgICAgIAkKKwkgICAgICAgICAgICByZXN1bHQgPSBkb2MuY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZSwgdGFnTmFtZSApOworCisJICAgICAgICAgICAgcmVzdWx0LnNldEF0dHJpYnV0ZU5TKENvbnN0YW50cy5OYW1lc3BhY2VTcGVjTlMsICBkZWZhdWx0UHJlZml4TmFtaW5nLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2UpOworCSAgICAgICAgIH0KKwkgICAgICB9CSAgICAgIAorCSAgICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworICAgLyoqCisgICAgKiBUaGlzIG1ldGhvZCBjcmVhdGVzIGFuIEVsZW1lbnQgaW4gYSBnaXZlbiBuYW1lc3BhY2Ugd2l0aCBhIGdpdmVuIGxvY2FsbmFtZS4KKyAgICAqIEl0IHVzZXMgdGhlIHtAbGluayBFbGVtZW50UHJveHkjZ2V0RGVmYXVsdFByZWZpeH0gbWV0aG9kIHRvIGRlY2lkZSB3aGV0aGVyCisgICAgKiBhIHBhcnRpY3VsYXIgcHJlZml4IGlzIGJvdW5kIHRvIHRoYXQgbmFtZXNwYWNlLgorICAgICogPEJSIC8+CisgICAgKiBUaGlzIG1ldGhvZCB3YXMgcmVmYWN0b3JlZCBvdXQgb2YgdGhlIGNvbnN0cnVjdG9yLgorICAgICoKKyAgICAqIEBwYXJhbSBkb2MKKyAgICAqIEBwYXJhbSBuYW1lc3BhY2UKKyAgICAqIEBwYXJhbSBsb2NhbE5hbWUKKyAgICAqIEByZXR1cm4gVGhlIGVsZW1lbnQgY3JlYXRlZC4KKyAgICAqLworICAgcHVibGljIHN0YXRpYyBFbGVtZW50IGNyZWF0ZUVsZW1lbnRGb3JGYW1pbHkoRG9jdW1lbnQgZG9jLCBTdHJpbmcgbmFtZXNwYWNlLAorICAgICAgICAgICBTdHJpbmcgbG9jYWxOYW1lKSB7CisgICAgICAgLy9FbGVtZW50IG5zY29udGV4dCA9IFhNTFV0aWxzLmNyZWF0ZURTY3R4KGRvYywgIngiLCBuYW1lc3BhY2UpOworICAgICAgRWxlbWVudCByZXN1bHQgPSBudWxsOworICAgICAgU3RyaW5nIHByZWZpeCA9IEVsZW1lbnRQcm94eS5nZXREZWZhdWx0UHJlZml4KG5hbWVzcGFjZSk7CisKKyAgICAgIGlmIChuYW1lc3BhY2UgPT0gbnVsbCkgeworICAgICAgICAgcmVzdWx0ID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhudWxsLCBsb2NhbE5hbWUpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgIGlmICgocHJlZml4ID09IG51bGwpIHx8IChwcmVmaXgubGVuZ3RoKCkgPT0gMCkpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGRvYy5jcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlLCBsb2NhbE5hbWUpOworCisgICAgICAgICAgICByZXN1bHQuc2V0QXR0cmlidXRlTlMoQ29uc3RhbnRzLk5hbWVzcGFjZVNwZWNOUywgInhtbG5zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2UpOworICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGRvYy5jcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlLCBwcmVmaXggKyAiOiIgKyBsb2NhbE5hbWUpOworCisgICAgICAgICAgICByZXN1bHQuc2V0QXR0cmlidXRlTlMoQ29uc3RhbnRzLk5hbWVzcGFjZVNwZWNOUywgIEVsZW1lbnRQcm94eS5nZXREZWZhdWx0UHJlZml4QmluZGluZ3MobmFtZXNwYWNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2UpOworICAgICAgICAgfQorICAgICAgfQorCisgICAgICByZXR1cm4gcmVzdWx0OworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBzZXRFbGVtZW50CisgICAgKgorICAgICogQHBhcmFtIGVsZW1lbnQKKyAgICAqIEBwYXJhbSBCYXNlVVJJCisgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHNldEVsZW1lbnQoRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSkKKyAgICAgICAgICAgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKworICAgICAgaWYgKGVsZW1lbnQgPT0gbnVsbCkgeworICAgICAgICAgdGhyb3cgbmV3IFhNTFNlY3VyaXR5RXhjZXB0aW9uKCJFbGVtZW50UHJveHkubnVsbEVsZW1lbnQiKTsKKyAgICAgIH0KKyAgICAgIAorICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKSB7CisgICAgICAJbG9nLmRlYnVnKCJzZXRFbGVtZW50KCIgKyBlbGVtZW50LmdldFRhZ05hbWUoKSArICIsIFwiIiArIEJhc2VVUkkgKyAiXCIiKTsKKyAgICAgIH0KKyAgICAgICAgCisgICAgICB0aGlzLl9kb2MgPSBlbGVtZW50LmdldE93bmVyRG9jdW1lbnQoKTsKKyAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQgPSBlbGVtZW50OworICAgICAgdGhpcy5fYmFzZVVSSSA9IEJhc2VVUkk7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgRWxlbWVudFByb3h5CisgICAgKgorICAgICogQHBhcmFtIGVsZW1lbnQKKyAgICAqIEBwYXJhbSBCYXNlVVJJCisgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBFbGVtZW50UHJveHkoRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSkKKyAgICAgICAgICAgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKyAgICAgIGlmIChlbGVtZW50ID09IG51bGwpIHsKKyAgICAgICAgIHRocm93IG5ldyBYTUxTZWN1cml0eUV4Y2VwdGlvbigiRWxlbWVudFByb3h5Lm51bGxFbGVtZW50Iik7CisgICAgICB9CisgICAgICAKKyAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkgeworICAgICAgCWxvZy5kZWJ1Zygic2V0RWxlbWVudChcIiIgKyBlbGVtZW50LmdldFRhZ05hbWUoKSArICJcIiwgXCIiICsgQmFzZVVSSQorICAgICAgICAgICAgICAgICsgIlwiKSIpOworICAgICAgfQorCisgICAgICB0aGlzLl9kb2MgPSBlbGVtZW50LmdldE93bmVyRG9jdW1lbnQoKTsKKyAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQgPSBlbGVtZW50OworICAgICAgdGhpcy5fYmFzZVVSSSA9IEJhc2VVUkk7CisKKyAgICAgIHRoaXMuZ3VhcmFudGVlVGhhdEVsZW1lbnRJbkNvcnJlY3RTcGFjZSgpOworICAgfQorCisgICAvKioKKyAgICAqIFJldHVybnMgdGhlIEVsZW1lbnQgd2hpY2ggd2FzIGNvbnN0cnVjdGVkIGJ5IHRoZSBPYmplY3QuCisgICAgKgorICAgICogQHJldHVybiB0aGUgRWxlbWVudCB3aGljaCB3YXMgY29uc3RydWN0ZWQgYnkgdGhlIE9iamVjdC4KKyAgICAqLworICAgcHVibGljIGZpbmFsIEVsZW1lbnQgZ2V0RWxlbWVudCgpIHsKKyAgICAgIHJldHVybiB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50OworICAgfQorCisgICAvKioKKyAgICAqIFJldHVybnMgdGhlIEVsZW1lbnQgcGx1cyBhIGxlYWRpbmcgYW5kIGEgdHJhaWxpbmcgQ2FycmlhZ2VSZXR1cm4gVGV4dCBub2RlLgorICAgICoKKyAgICAqIEByZXR1cm4gdGhlIEVsZW1lbnQgd2hpY2ggd2FzIGNvbnN0cnVjdGVkIGJ5IHRoZSBPYmplY3QuCisgICAgKi8KKyAgIHB1YmxpYyBmaW5hbCBOb2RlTGlzdCBnZXRFbGVtZW50UGx1c1JldHVybnMoKSB7CisKKyAgICAgIEhlbHBlck5vZGVMaXN0IG5sID0gbmV3IEhlbHBlck5vZGVMaXN0KCk7CisKKyAgICAgIG5sLmFwcGVuZENoaWxkKHRoaXMuX2RvYy5jcmVhdGVUZXh0Tm9kZSgiXG4iKSk7CisgICAgICBubC5hcHBlbmRDaGlsZCh0aGlzLmdldEVsZW1lbnQoKSk7CisgICAgICBubC5hcHBlbmRDaGlsZCh0aGlzLl9kb2MuY3JlYXRlVGV4dE5vZGUoIlxuIikpOworCisgICAgICByZXR1cm4gbmw7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGdldERvY3VtZW50CisgICAgKgorICAgICogQHJldHVybiB0aGUgRG9jdW1lbnQgd2hlcmUgdGhpcyBlbGVtZW50IGlzIGNvbnRhaW5lZC4KKyAgICAqLworICAgcHVibGljIERvY3VtZW50IGdldERvY3VtZW50KCkgeworICAgICAgcmV0dXJuIHRoaXMuX2RvYzsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0QmFzZVVSSQorICAgICoKKyAgICAqIEByZXR1cm4gdGhlIGJhc2UgdXJpIG9mIHRoZSBuYW1lc3BhY2Ugb2YgdGhpcyBlbGVtZW50CisgICAgKi8KKyAgIHB1YmxpYyBTdHJpbmcgZ2V0QmFzZVVSSSgpIHsKKyAgICAgIHJldHVybiB0aGlzLl9iYXNlVVJJOworICAgfQorICAgCisgICBzdGF0aWMgRWxlbWVudENoZWNrZXIgY2hlY2tlciA9IG5ldyBFbGVtZW50Q2hlY2tlckltcGwuSW50ZXJuZWROc0NoZWNrZXIoKTsKKworICAgLyoqCisgICAgKiBNZXRob2QgZ3VhcmFudGVlVGhhdEVsZW1lbnRJbkNvcnJlY3RTcGFjZQorICAgICoKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgdm9pZCBndWFyYW50ZWVUaGF0RWxlbWVudEluQ29ycmVjdFNwYWNlKCkKKyAgICAgICAgICAgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKwkgIAorCSAgY2hlY2tlci5ndWFyYW50ZWVUaGF0RWxlbWVudEluQ29ycmVjdFNwYWNlKHRoaXMsdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCk7CisgICAgICAKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2Qgc2V0VmFsCisgICAgKgorICAgICogQHBhcmFtIGJpCisgICAgKiBAcGFyYW0gbG9jYWxuYW1lCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIGFkZEJpZ0ludGVnZXJFbGVtZW50KEJpZ0ludGVnZXIgYmksIFN0cmluZyBsb2NhbG5hbWUpIHsKKworICAgICAgaWYgKGJpICE9IG51bGwpIHsKKyAgICAgICAgIEVsZW1lbnQgZSA9IFhNTFV0aWxzLmNyZWF0ZUVsZW1lbnRJblNpZ25hdHVyZVNwYWNlKHRoaXMuX2RvYywKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsbmFtZSk7CisKKyAgICAgICAgIEJhc2U2NC5maWxsRWxlbWVudFdpdGhCaWdJbnRlZ2VyKGUsIGJpKTsKKyAgICAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQoZSk7CisgICAgICAgICBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQodGhpcy5fY29uc3RydWN0aW9uRWxlbWVudCk7CisgICAgICB9CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGFkZEJhc2U2NEVsZW1lbnQKKyAgICAqCisgICAgKiBAcGFyYW0gYnl0ZXMKKyAgICAqIEBwYXJhbSBsb2NhbG5hbWUKKyAgICAqLworICAgcHVibGljIHZvaWQgYWRkQmFzZTY0RWxlbWVudChieXRlW10gYnl0ZXMsIFN0cmluZyBsb2NhbG5hbWUpIHsKKworICAgICAgaWYgKGJ5dGVzICE9IG51bGwpIHsKKworICAgICAgICAgRWxlbWVudCBlID0gQmFzZTY0LmVuY29kZVRvRWxlbWVudCh0aGlzLl9kb2MsIGxvY2FsbmFtZSwgYnl0ZXMpOworCisgICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmFwcGVuZENoaWxkKGUpOworICAgICAgICAgaWYgKCFYTUxVdGlscy5pZ25vcmVMaW5lQnJlYWtzKCkpIHsKKyAgICAgICAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZG9jLmNyZWF0ZVRleHROb2RlKCJcbiIpKTsKKyAgICAgICAgIH0KKyAgICAgIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgYWRkVGV4dEVsZW1lbnQKKyAgICAqCisgICAgKiBAcGFyYW0gdGV4dAorICAgICogQHBhcmFtIGxvY2FsbmFtZQorICAgICovCisgICBwdWJsaWMgdm9pZCBhZGRUZXh0RWxlbWVudChTdHJpbmcgdGV4dCwgU3RyaW5nIGxvY2FsbmFtZSkgeworCisgICAgICBFbGVtZW50IGUgPSBYTUxVdGlscy5jcmVhdGVFbGVtZW50SW5TaWduYXR1cmVTcGFjZSh0aGlzLl9kb2MsIGxvY2FsbmFtZSk7CisgICAgICBUZXh0IHQgPSB0aGlzLl9kb2MuY3JlYXRlVGV4dE5vZGUodGV4dCk7CisKKyAgICAgIGUuYXBwZW5kQ2hpbGQodCk7CisgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmFwcGVuZENoaWxkKGUpOworICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBhZGRCYXNlNjRUZXh0CisgICAgKgorICAgICogQHBhcmFtIGJ5dGVzCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIGFkZEJhc2U2NFRleHQoYnl0ZVtdIGJ5dGVzKSB7CisKKyAgICAgIGlmIChieXRlcyAhPSBudWxsKSB7CisgICAgICAgICBUZXh0IHQgPSBYTUxVdGlscy5pZ25vcmVMaW5lQnJlYWtzKCkgCisgICAgICAgICAgICAgPyB0aGlzLl9kb2MuY3JlYXRlVGV4dE5vZGUoQmFzZTY0LmVuY29kZShieXRlcykpCisgICAgICAgICAgICAgOiB0aGlzLl9kb2MuY3JlYXRlVGV4dE5vZGUoIlxuIiArIEJhc2U2NC5lbmNvZGUoYnl0ZXMpICsgIlxuIik7CisgICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmFwcGVuZENoaWxkKHQpOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBhZGRUZXh0CisgICAgKgorICAgICogQHBhcmFtIHRleHQKKyAgICAqLworICAgcHVibGljIHZvaWQgYWRkVGV4dChTdHJpbmcgdGV4dCkgeworCisgICAgICBpZiAodGV4dCAhPSBudWxsKSB7CisgICAgICAgICBUZXh0IHQgPSB0aGlzLl9kb2MuY3JlYXRlVGV4dE5vZGUodGV4dCk7CisKKyAgICAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQodCk7CisgICAgICB9CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGdldFZhbAorICAgICoKKyAgICAqIEBwYXJhbSBsb2NhbG5hbWUKKyAgICAqIEBwYXJhbSBuYW1lc3BhY2UKKyAgICAqIEByZXR1cm4gVGhlIGJpZ2ludGVyIGNvbnRhaW5lZCBpbiB0aGUgZ2l2ZW4gZWxlbWVudAorICogQHRocm93cyBCYXNlNjREZWNvZGluZ0V4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgQmlnSW50ZWdlciBnZXRCaWdJbnRlZ2VyRnJvbUNoaWxkRWxlbWVudCgKKyAgICAgICAgICAgU3RyaW5nIGxvY2FsbmFtZSwgU3RyaW5nIG5hbWVzcGFjZSkgdGhyb3dzIEJhc2U2NERlY29kaW5nRXhjZXB0aW9uIHsKKyAgIAkgICAgCisgICAJCXJldHVybiBCYXNlNjQuZGVjb2RlQmlnSW50ZWdlckZyb21UZXh0KAorICAgCQkJCVhNTFV0aWxzLnNlbGVjdE5vZGVUZXh0KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpLAorICAgCQkJCQkJbmFtZXNwYWNlLGxvY2FsbmFtZSwwKSk7CisKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0Qnl0ZXNGcm9tQ2hpbGRFbGVtZW50CisgICAgKiBAZGVwcmVjYXRlZAorICAgICogQHBhcmFtIGxvY2FsbmFtZQorICAgICogQHBhcmFtIG5hbWVzcGFjZQorICAgICogQHJldHVybiB0aGUgYnl0ZXMKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIGJ5dGVbXSBnZXRCeXRlc0Zyb21DaGlsZEVsZW1lbnQoU3RyaW5nIGxvY2FsbmFtZSwgU3RyaW5nIG5hbWVzcGFjZSkKKyAgICAgICAgICAgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKyAgICAgICAgICAgICAgIAorICAgICAgICAgRWxlbWVudCBlID0KKyAgICAgICAgICAgICBYTUxVdGlscy5zZWxlY3ROb2RlKAorICAgICAgICAgICAgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LmdldEZpcnN0Q2hpbGQoKSwKKyAgICAgICAgICAgICAgICAgbmFtZXNwYWNlLAorICAgICAgICAgICAgICAgICBsb2NhbG5hbWUsCisgICAgICAgICAgICAgICAgIDApOworICAgICAgICAgICAgCisgICAgICAgICByZXR1cm4gQmFzZTY0LmRlY29kZShlKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0VGV4dEZyb21DaGlsZEVsZW1lbnQKKyAgICAqCisgICAgKiBAcGFyYW0gbG9jYWxuYW1lCisgICAgKiBAcGFyYW0gbmFtZXNwYWNlCisgICAgKiBAcmV0dXJuIHRoZSBUZXh0IG9mIHRoZSB0ZXh0Tm9kZQorICAgICovCisgICBwdWJsaWMgU3RyaW5nIGdldFRleHRGcm9tQ2hpbGRFbGVtZW50KFN0cmluZyBsb2NhbG5hbWUsIFN0cmluZyBuYW1lc3BhY2UpIHsKKyAgICAgICAgICAgICAgCisgICAgICAgICBUZXh0IHQgPQorICAgICAgICAgICAgIChUZXh0KSBYTUxVdGlscy5zZWxlY3ROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5nZXRGaXJzdENoaWxkKCksCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAwKS5nZXRGaXJzdENoaWxkKCk7CisKKyAgICAgICAgIHJldHVybiB0LmdldERhdGEoKTsgICAgICAKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0Qnl0ZXNGcm9tVGV4dENoaWxkCisgICAgKgorICAgICogQHJldHVybiBUaGUgYmFzZTY0IGJ5dGVzIGZyb20gdGhlIHRleHQgY2hpbGRyZW4gb2YgdGhpcyBlbGVtZW50CisgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBieXRlW10gZ2V0Qnl0ZXNGcm9tVGV4dENoaWxkKCkgdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKyAgICAgIHJldHVybiBCYXNlNjQuZGVjb2RlCisgICAgICAgICAoWE1MVXRpbHMuZ2V0RnVsbFRleHRDaGlsZHJlbkZyb21FbGVtZW50KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0VGV4dEZyb21UZXh0Q2hpbGQKKyAgICAqCisgICAgKiBAcmV0dXJuIHRoZSBUZXh0IG9idGFpbmVkIGJ5IGNvbmNhdGVuYXRpbmcgYWxsIHRoZSB0ZXh0IG5vZGVzIG9mIHRoaXMgCisgICAgKiAgICBlbGVtZW50CisgICAgKi8KKyAgIHB1YmxpYyBTdHJpbmcgZ2V0VGV4dEZyb21UZXh0Q2hpbGQoKSB7CisgICAgICByZXR1cm4gWE1MVXRpbHMuZ2V0RnVsbFRleHRDaGlsZHJlbkZyb21FbGVtZW50KHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBsZW5ndGgKKyAgICAqCisgICAgKiBAcGFyYW0gbmFtZXNwYWNlCisgICAgKiBAcGFyYW0gbG9jYWxuYW1lCisgICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgZWxlbWVudHMge25hbWVzcGFjZX06bG9jYWxuYW1lIHVuZGVyIHRoaXMgZWxlbWVudAorICAgICovCisgICBwdWJsaWMgaW50IGxlbmd0aChTdHJpbmcgbmFtZXNwYWNlLCBTdHJpbmcgbG9jYWxuYW1lKSB7CisgICAJICAgIGludCBudW1iZXI9MDsKKyAgIAkgICAgTm9kZSBzaWJsaW5nPXRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQuZ2V0Rmlyc3RDaGlsZCgpOworICAgCSAgICB3aGlsZSAoc2libGluZyE9bnVsbCkgeyAgICAgICAgCisgICAJICAgIAlpZiAobG9jYWxuYW1lLmVxdWFscyhzaWJsaW5nLmdldExvY2FsTmFtZSgpKQorICAgCSAgICAJCQkmJiAgCisJCQkJCW5hbWVzcGFjZT09c2libGluZy5nZXROYW1lc3BhY2VVUkkoKSApIHsgICAgICAgICAgICAKKyAgIAkgICAgCQludW1iZXIrKzsKKyAgIAkgICAgCX0KKyAgIAkgICAgCXNpYmxpbmc9c2libGluZy5nZXROZXh0U2libGluZygpOworICAgCSAgICB9CisgICAJICAgIHJldHVybiBudW1iZXI7CisgICAgIH0KKworICAgLyoqCisgICAgKiBBZGRzIGFuIHhtbG5zOiBkZWZpbml0aW9uIHRvIHRoZSBFbGVtZW50LiBUaGlzIGNhbiBiZSBjYWxsZWQgYXMgZm9sbG93czoKKyAgICAqCisgICAgKiA8UFJFPgorICAgICogLy8gc2V0IG5hbWVzcGFjZSB3aXRoIGRzIHByZWZpeAorICAgICogeHBhdGhDb250YWluZXIuc2V0WFBhdGhOYW1lc3BhY2VDb250ZXh0KCJkcyIsICJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIik7CisgICAgKiB4cGF0aENvbnRhaW5lci5zZXRYUGF0aE5hbWVzcGFjZUNvbnRleHQoInhtbG5zOmRzIiwgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiKTsKKyAgICAqIDwvUFJFPgorICAgICoKKyAgICAqIEBwYXJhbSBwcmVmaXgKKyAgICAqIEBwYXJhbSB1cmkKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHZvaWQgc2V0WFBhdGhOYW1lc3BhY2VDb250ZXh0KFN0cmluZyBwcmVmaXgsIFN0cmluZyB1cmkpCisgICAgICAgICAgIHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZyBuczsKKworICAgICAgaWYgKChwcmVmaXggPT0gbnVsbCkgfHwgKHByZWZpeC5sZW5ndGgoKSA9PSAwKSkgeworICAgICAgIHRocm93IG5ldyBYTUxTZWN1cml0eUV4Y2VwdGlvbigiZGVmYXVsdE5hbWVzcGFjZUNhbm5vdEJlU2V0SGVyZSIpOworICAgICAgfSBlbHNlIGlmIChwcmVmaXguZXF1YWxzKCJ4bWxucyIpKSB7CisgICAgICAgIHRocm93IG5ldyBYTUxTZWN1cml0eUV4Y2VwdGlvbigiZGVmYXVsdE5hbWVzcGFjZUNhbm5vdEJlU2V0SGVyZSIpOworICAgICAgfSBlbHNlIGlmIChwcmVmaXguc3RhcnRzV2l0aCgieG1sbnM6IikpIHsKKyAgICAgICAgIG5zID0gcHJlZml4Oy8vInhtbG5zOiIgKyBwcmVmaXguc3Vic3RyaW5nKCJ4bWxuczoiLmxlbmd0aCgpKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgICBucyA9ICJ4bWxuczoiICsgcHJlZml4OworICAgICAgfQorCisgICAgICAKKworICAgICAgQXR0ciBhID0gdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlTlMoQ29uc3RhbnRzLk5hbWVzcGFjZVNwZWNOUywgbnMpOworCisgICAgICBpZiAoYSAhPSBudWxsKSB7IAorICAgICAgIGlmICghYS5nZXROb2RlVmFsdWUoKS5lcXVhbHModXJpKSkgeworICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyBucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29uc3RydWN0aW9uRWxlbWVudC5nZXRBdHRyaWJ1dGVOUyhudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zKSB9OworCisgICAgICAgICB0aHJvdyBuZXcgWE1MU2VjdXJpdHlFeGNlcHRpb24oIm5hbWVzcGFjZVByZWZpeEFscmVhZHlVc2VkQnlPdGhlclVSSSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhBcmdzKTsKKyAgICAgICB9CisgICAgICAgcmV0dXJuOworICAgICAgfQorCisgICAgICB0aGlzLl9jb25zdHJ1Y3Rpb25FbGVtZW50LnNldEF0dHJpYnV0ZU5TKENvbnN0YW50cy5OYW1lc3BhY2VTcGVjTlMsIG5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmkpOworICAgfQorCisgICAvKiogRmllbGQgX3ByZWZpeE1hcHBpbmdzICovCisgICBzdGF0aWMgSGFzaE1hcCBfcHJlZml4TWFwcGluZ3MgPSBuZXcgSGFzaE1hcCgpOworICAgc3RhdGljIEhhc2hNYXAgX3ByZWZpeE1hcHBpbmdzQmluZGluZ3MgPSBuZXcgSGFzaE1hcCgpOworCisgICAgLyoqCisgICAgICogTWV0aG9kIHNldERlZmF1bHRQcmVmaXgKKyAgICAgKgorICAgICAqIEBwYXJhbSBuYW1lc3BhY2UKKyAgICAgKiBAcGFyYW0gcHJlZml4CisgICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXREZWZhdWx0UHJlZml4KFN0cmluZyBuYW1lc3BhY2UsIFN0cmluZyBwcmVmaXgpCisgICAgICAgIHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisgICAgCisJaWYgKEVsZW1lbnRQcm94eS5fcHJlZml4TWFwcGluZ3MuY29udGFpbnNWYWx1ZShwcmVmaXgpKSB7CisgICAgICAgIAorCSAgICBPYmplY3Qgc3RvcmVkTmFtZXNwYWNlPUVsZW1lbnRQcm94eS5fcHJlZml4TWFwcGluZ3MuZ2V0KG5hbWVzcGFjZSk7CisgICAgICAgICAgICBpZiAoIXN0b3JlZE5hbWVzcGFjZS5lcXVhbHMocHJlZml4KSkgeworICAgICAgICAgCU9iamVjdCBleEFyZ3NbXSA9IHsgcHJlZml4LCBuYW1lc3BhY2UsIHN0b3JlZE5hbWVzcGFjZSB9OworCisgICAgICAgICAJdGhyb3cgbmV3IFhNTFNlY3VyaXR5RXhjZXB0aW9uKCJwcmVmaXguQWxyZWFkeUFzc2lnbmVkIiwgZXhBcmdzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgCWlmIChDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TLmVxdWFscyhuYW1lc3BhY2UpKSB7CisgICAJICAgIFhNTFV0aWxzLmRzUHJlZml4PXByZWZpeDsKKyAgIAl9CisgICAJaWYgKEVuY3J5cHRpb25Db25zdGFudHMuRW5jcnlwdGlvblNwZWNOUy5lcXVhbHMobmFtZXNwYWNlKSkgeworICAgCSAgICBYTUxVdGlscy54ZW5jUHJlZml4PXByZWZpeDsKKyAgIAl9CisgICAgICAgIEVsZW1lbnRQcm94eS5fcHJlZml4TWFwcGluZ3MucHV0KG5hbWVzcGFjZSwgcHJlZml4LmludGVybigpKTsKKwlpZiAocHJlZml4Lmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgIEVsZW1lbnRQcm94eS5fcHJlZml4TWFwcGluZ3NCaW5kaW5ncy5wdXQobmFtZXNwYWNlLCAieG1sbnMiKTsKKwl9IGVsc2UgeworICAgICAgICAgICAgRWxlbWVudFByb3h5Ll9wcmVmaXhNYXBwaW5nc0JpbmRpbmdzLnB1dChuYW1lc3BhY2UsICgieG1sbnM6IitwcmVmaXgpLmludGVybigpKTsKKwl9CisgICB9CisKKyAgICAvKioKKyAgICAgKiBNZXRob2QgZ2V0RGVmYXVsdFByZWZpeAorICAgICAqCisgICAgICogQHBhcmFtIG5hbWVzcGFjZQorICAgICAqIEByZXR1cm4gdGhlIGRlZmF1bHQgcHJlZml4IGJpbmQgdG8gdGhpcyBlbGVtZW50LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldERlZmF1bHRQcmVmaXgoU3RyaW5nIG5hbWVzcGFjZSkgeworICAgICAgICByZXR1cm4gKFN0cmluZykgRWxlbWVudFByb3h5Ll9wcmVmaXhNYXBwaW5ncy5nZXQobmFtZXNwYWNlKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXREZWZhdWx0UHJlZml4QmluZGluZ3MoU3RyaW5nIG5hbWVzcGFjZSkgeworCXJldHVybiAoU3RyaW5nKSBFbGVtZW50UHJveHkuX3ByZWZpeE1hcHBpbmdzQmluZGluZ3MuZ2V0KG5hbWVzcGFjZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL0VuY3J5cHRpb25Db25zdGFudHMuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9FbmNyeXB0aW9uQ29uc3RhbnRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2YzN2IxZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9FbmNyeXB0aW9uQ29uc3RhbnRzLmphdmEKQEAgLTAsMCArMSwxNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzOworCisKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmV4Y2VwdGlvbnMuWE1MU2VjdXJpdHlFeGNlcHRpb247CisKKworLyoqCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICovCitwdWJsaWMgY2xhc3MgRW5jcnlwdGlvbkNvbnN0YW50cyB7CisgICAvL0otCisgICAvLyBBdHRyaWJ1dGVzIHRoYXQgZXhpc3QgaW4gWE1MIFNpZ25hdHVyZSBpbiB0aGUgc2FtZSB3YXkKKyAgICAvKiogVGFnIG9mIEF0dHIgQWxnb3JpdGhtICoqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgX0FUVF9BTEdPUklUSE0gICAgICAgICAgICAgID0gQ29uc3RhbnRzLl9BVFRfQUxHT1JJVEhNOworICAgLyoqIFRhZyBvZiBBdHRyIElkKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfQVRUX0lEICAgICAgICAgICAgICAgICAgICAgPSBDb25zdGFudHMuX0FUVF9JRDsKKyAgIC8qKiBUYWcgb2YgQXR0ciBUYXJnZXQgKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfQVRUX1RBUkdFVCAgICAgICAgICAgICAgICAgPSBDb25zdGFudHMuX0FUVF9UQVJHRVQ7CisgICAvKiogVGFnIG9mIEF0dHIgVHlwZSAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9BVFRfVFlQRSAgICAgICAgICAgICAgICAgICA9IENvbnN0YW50cy5fQVRUX1RZUEU7CisgICAvKiogVGFnIG9mIEF0dHIgVVJJICoqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgX0FUVF9VUkkgICAgICAgICAgICAgICAgICAgID0gQ29uc3RhbnRzLl9BVFRfVVJJOworCisgICAvLyBBdHRyaWJ1dGVzIG5ldyBpbiBYTUwgRW5jcnlwdGlvbgorICAgLyoqIFRhZyBvZiBBdHRyIGVuY29kaW5nICoqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgX0FUVF9FTkNPRElORyAgICAgICAgICAgICAgID0gIkVuY29kaW5nIjsKKyAgIC8qKiBUYWcgb2YgQXR0ciByZWNpcGllbnQgKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfQVRUX1JFQ0lQSUVOVCAgICAgICAgICAgICAgPSAiUmVjaXBpZW50IjsKKyAgIC8qKiBUYWcgb2YgQXR0ciBtaW1ldHlwZSAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9BVFRfTUlNRVRZUEUgICAgICAgICAgICAgICA9ICJNaW1lVHlwZSI7CisKKyAgIC8qKiBUYWcgb2YgRWxlbWVudCBDYXJyaWVkS2V5TmFtZSAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfQ0FSUklFREtFWU5BTUUgICAgICAgICA9ICJDYXJyaWVkS2V5TmFtZSI7CisgICAvKiogVGFnIG9mIEVsZW1lbnQgQ2lwaGVyRGF0YSAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfQ0lQSEVSREFUQSAgICAgICAgICAgICA9ICJDaXBoZXJEYXRhIjsKKyAgIC8qKiBUYWcgb2YgRWxlbWVudCBDaXBoZXJSZWZlcmVuY2UgKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfVEFHX0NJUEhFUlJFRkVSRU5DRSAgICAgICAgPSAiQ2lwaGVyUmVmZXJlbmNlIjsKKyAgIC8qKiBUYWcgb2YgRWxlbWVudCBDaXBoZXJWYWx1ZSAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfQ0lQSEVSVkFMVUUgICAgICAgICAgICA9ICJDaXBoZXJWYWx1ZSI7CisgICAvKiogVGFnIG9mIEVsZW1lbnQgRGF0YVJlZmVyZW5jZSAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfREFUQVJFRkVSRU5DRSAgICAgICAgICA9ICJEYXRhUmVmZXJlbmNlIjsKKyAgIC8qKiBUYWcgb2YgRWxlbWVudCBFbmNyeXB0ZWREYXRhICoqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgX1RBR19FTkNSWVBURUREQVRBICAgICAgICAgID0gIkVuY3J5cHRlZERhdGEiOworICAgLyoqIFRhZyBvZiBFbGVtZW50IEVuY3J5cHRlZEtleSAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfRU5DUllQVEVES0VZICAgICAgICAgICA9ICJFbmNyeXB0ZWRLZXkiOworICAgLyoqIFRhZyBvZiBFbGVtZW50IEVuY3J5cHRpb25NZXRob2QgKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfVEFHX0VOQ1JZUFRJT05NRVRIT0QgICAgICAgPSAiRW5jcnlwdGlvbk1ldGhvZCI7CisgICAvKiogVGFnIG9mIEVsZW1lbnQgRW5jcnlwdGlvblByb3BlcnRpZXMgKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfVEFHX0VOQ1JZUFRJT05QUk9QRVJUSUVTICAgPSAiRW5jcnlwdGlvblByb3BlcnRpZXMiOworICAgLyoqIFRhZyBvZiBFbGVtZW50IEVuY3J5cHRpb25Qcm9wZXJ0eSAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfRU5DUllQVElPTlBST1BFUlRZICAgICA9ICJFbmNyeXB0aW9uUHJvcGVydHkiOworICAgLyoqIFRhZyBvZiBFbGVtZW50IEtleVJlZmVyZW5jZSAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfS0VZUkVGRVJFTkNFICAgICAgICAgICA9ICJLZXlSZWZlcmVuY2UiOworICAgLyoqIFRhZyBvZiBFbGVtZW50IEtleVNpemUgKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfVEFHX0tFWVNJWkUgICAgICAgICAgICAgICAgPSAiS2V5U2l6ZSI7CisgICAvKiogVGFnIG9mIEVsZW1lbnQgT0FFUHBhcmFtcyAqKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIF9UQUdfT0FFUFBBUkFNUyAgICAgICAgICAgICA9ICJPQUVQcGFyYW1zIjsKKyAgIC8qKiBUYWcgb2YgRWxlbWVudCBSZWZlcmVuY2VMaXN0ICoqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgX1RBR19SRUZFUkVOQ0VMSVNUICAgICAgICAgID0gIlJlZmVyZW5jZUxpc3QiOworICAgLyoqIFRhZyBvZiBFbGVtZW50IFRyYW5zZm9ybXMgKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfVEFHX1RSQU5TRk9STVMgICAgICAgICAgICAgPSAiVHJhbnNmb3JtcyI7CisgICAvKiogVGFnIG9mIEVsZW1lbnQgQWdyZWVtZW50TWV0aG9kICoqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgX1RBR19BR1JFRU1FTlRNRVRIT0QgICAgICAgID0gIkFncmVlbWVudE1ldGhvZCI7CisgICAvKiogVGFnIG9mIEVsZW1lbnQgS0EtTm9uY2UgKiovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBfVEFHX0tBX05PTkNFICAgICAgICAgICAgICAgPSAiS0EtTm9uY2UiOworICAgLyoqIFRhZyBvZiBFbGVtZW50IE9yaWdpbmF0b3JLZXlJbmZvICoqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgX1RBR19PUklHSU5BVE9SS0VZSU5GTyAgICAgID0gIk9yaWdpbmF0b3JLZXlJbmZvIjsKKyAgIC8qKiBUYWcgb2YgRWxlbWVudCBSZWNpcGllbnRLZXlJbmZvICoqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgX1RBR19SRUNJUElFTlRLRVlJTkZPICAgICAgID0gIlJlY2lwaWVudEtleUluZm8iOworCisgICAvKiogRmllbGQgRU5DUllQVElPTlNQRUNJRklDQVRJT05fVVJMICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFTkNSWVBUSU9OU1BFQ0lGSUNBVElPTl9VUkwgPSAiaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9XRC14bWxlbmMtY29yZS0yMDAxMDYyNi8iOworCisgICAvKiogVGhlIG5hbWVzcGFjZSBvZiB0aGUgPEEgSFJFRj0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9XRC14bWxlbmMtY29yZS0yMDAxMDYyNi8iPlhNTCBFbmNyeXB0aW9uIFN5bnRheCBhbmQgUHJvY2Vzc2luZzwvQT4gKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVuY3J5cHRpb25TcGVjTlMgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjIjsKKworICAgLyoqIFVSSSBmb3IgY29udGVudCovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUWVBFX0NPTlRFTlQgICAgICAgICAgICAgICAgPSBFbmNyeXB0aW9uU3BlY05TICsgIkNvbnRlbnQiOworICAgLyoqIFVSSSBmb3IgZWxlbWVudCovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUWVBFX0VMRU1FTlQgICAgICAgICAgICAgICAgPSBFbmNyeXB0aW9uU3BlY05TICsgIkVsZW1lbnQiOworICAgLyoqIFVSSSBmb3IgbWVkaWF0eXBlKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfTUVESUFUWVBFICAgICAgICAgICAgICA9ICJodHRwOi8vd3d3LmlzaS5lZHUvaW4tbm90ZXMvaWFuYS9hc3NpZ25tZW50cy9tZWRpYS10eXBlcy8iOyAvLyArICIqLyoiOworCisgICAvKiogQmxvY2sgRW5jcnlwdGlvbiAtIFJFUVVJUkVEIFRSSVBMRURFUyAqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUxHT19JRF9CTE9DS0NJUEhFUl9UUklQTEVERVMgPSBFbmNyeXB0aW9uQ29uc3RhbnRzLkVuY3J5cHRpb25TcGVjTlMgKyAidHJpcGxlZGVzLWNiYyI7CisgICAvKiogQmxvY2sgRW5jcnlwdGlvbiAtIFJFUVVJUkVEIEFFUy0xMjggKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFMR09fSURfQkxPQ0tDSVBIRVJfQUVTMTI4ID0gRW5jcnlwdGlvbkNvbnN0YW50cy5FbmNyeXB0aW9uU3BlY05TICsgImFlczEyOC1jYmMiOworICAgLyoqIEJsb2NrIEVuY3J5cHRpb24gLSBSRVFVSVJFRCBBRVMtMjU2ICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBTEdPX0lEX0JMT0NLQ0lQSEVSX0FFUzI1NiA9IEVuY3J5cHRpb25Db25zdGFudHMuRW5jcnlwdGlvblNwZWNOUyArICJhZXMyNTYtY2JjIjsKKyAgIC8qKiBCbG9jayBFbmNyeXB0aW9uIC0gT1BUSU9OQUwgQUVTLTE5MiAqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUxHT19JRF9CTE9DS0NJUEhFUl9BRVMxOTIgPSBFbmNyeXB0aW9uQ29uc3RhbnRzLkVuY3J5cHRpb25TcGVjTlMgKyAiYWVzMTkyLWNiYyI7CisKKyAgIC8qKiBLZXkgVHJhbnNwb3J0IC0gUkVRVUlSRUQgUlNBLXYxLjUqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUxHT19JRF9LRVlUUkFOU1BPUlRfUlNBMTUgPSBFbmNyeXB0aW9uQ29uc3RhbnRzLkVuY3J5cHRpb25TcGVjTlMgKyAicnNhLTFfNSI7CisgICAvKiogS2V5IFRyYW5zcG9ydCAtIFJFUVVJUkVEIFJTQS1PQUVQICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBTEdPX0lEX0tFWVRSQU5TUE9SVF9SU0FPQUVQID0gRW5jcnlwdGlvbkNvbnN0YW50cy5FbmNyeXB0aW9uU3BlY05TICsgInJzYS1vYWVwLW1nZjFwIjsKKworICAgLyoqIEtleSBBZ3JlZW1lbnQgLSBPUFRJT05BTCBEaWZmaWUtSGVsbG1hbiAqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUxHT19JRF9LRVlBR1JFRU1FTlRfREggPSBFbmNyeXB0aW9uQ29uc3RhbnRzLkVuY3J5cHRpb25TcGVjTlMgKyAiZGgiOworCisgICAvKiogU3ltbWV0cmljIEtleSBXcmFwIC0gUkVRVUlSRUQgVFJJUExFREVTIEtleVdyYXAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFMR09fSURfS0VZV1JBUF9UUklQTEVERVMgPSBFbmNyeXB0aW9uQ29uc3RhbnRzLkVuY3J5cHRpb25TcGVjTlMgKyAia3ctdHJpcGxlZGVzIjsKKyAgIC8qKiBTeW1tZXRyaWMgS2V5IFdyYXAgLSBSRVFVSVJFRCBBRVMtMTI4IEtleVdyYXAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFMR09fSURfS0VZV1JBUF9BRVMxMjggPSBFbmNyeXB0aW9uQ29uc3RhbnRzLkVuY3J5cHRpb25TcGVjTlMgKyAia3ctYWVzMTI4IjsKKyAgIC8qKiBTeW1tZXRyaWMgS2V5IFdyYXAgLSBSRVFVSVJFRCBBRVMtMjU2IEtleVdyYXAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFMR09fSURfS0VZV1JBUF9BRVMyNTYgPSBFbmNyeXB0aW9uQ29uc3RhbnRzLkVuY3J5cHRpb25TcGVjTlMgKyAia3ctYWVzMjU2IjsKKyAgIC8qKiBTeW1tZXRyaWMgS2V5IFdyYXAgLSBPUFRJT05BTCBBRVMtMTkyIEtleVdyYXAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFMR09fSURfS0VZV1JBUF9BRVMxOTIgPSBFbmNyeXB0aW9uQ29uc3RhbnRzLkVuY3J5cHRpb25TcGVjTlMgKyAia3ctYWVzMTkyIjsKKworICAgLyoKKyAgIC8vIE1lc3NhZ2UgRGlnZXN0IC0gUkVRVUlSRUQgU0hBMQorICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUxHT19JRF9ESUdFU1RfU0hBMTYwID0gQ29uc3RhbnRzLkFMR09fSURfRElHRVNUX1NIQTE7CisgICAvLyBNZXNzYWdlIERpZ2VzdCAtIFJFQ09NTUVOREVEIFNIQTI1NgorICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUxHT19JRF9ESUdFU1RfU0hBMjU2ID0gRW5jcnlwdGlvbkNvbnN0YW50cy5FbmNyeXB0aW9uU3BlY05TICsgInNoYTI1NiI7CisgICAvLyBNZXNzYWdlIERpZ2VzdCAtIE9QVElPTkFMIFNIQTUxMgorICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUxHT19JRF9ESUdFU1RfU0hBNTEyID0gRW5jcnlwdGlvbkNvbnN0YW50cy5FbmNyeXB0aW9uU3BlY05TICsgInNoYTUxMiI7CisgICAvLyBNZXNzYWdlIERpZ2VzdCAtIE9QVElPTkFMIFJJUEVNRC0xNjAKKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFMR09fSURfRElHRVNUX1JJUEVNRDE2MCA9IEVuY3J5cHRpb25Db25zdGFudHMuRW5jcnlwdGlvblNwZWNOUyArICJyaXBlbWQxNjAiOworICAgKi8KKworICAgLyoqIE1lc3NhZ2UgQXV0aGVudGljYXRpb24gLSBSRUNPTU1FTkRFRCBYTUwgRGlnaXRhbCBTaWduYXR1cmUgKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFMR09fSURfQVVUSEVOVElDQVRJT05fWE1MU0lHTkFUVVJFID0gImh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvQ1IteG1sZHNpZy1jb3JlLTIwMDEwNDE5LyI7CisKKyAgIC8qKiBDYW5vbmljYWxpemF0aW9uIC0gT1BUSU9OQUwgQ2Fub25pY2FsIFhNTCB3aXRoIENvbW1lbnRzICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBTEdPX0lEX0MxNE5fV0lUSENPTU1FTlRTID0gImh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1I1dpdGhDb21tZW50cyI7CisgICAvKiogQ2Fub25pY2FsaXphdGlvbiAtIE9QVElPTkFMIENhbm9uaWNhbCBYTUwgKG9taXRzIGNvbW1lbnRzKSAqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUxHT19JRF9DMTROX09NSVRDT01NRU5UUyA9ICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI7CisKKyAgIC8qKiBFbmNvZGluZyAtIFJFUVVJUkVEIGJhc2U2NCAqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUxHT19JRF9FTkNPRElOR19CQVNFNjQgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2Jhc2U2NCI7CisgICAvL0orCisKKyAgIHByaXZhdGUgRW5jcnlwdGlvbkNvbnN0YW50cygpIHsKKyAgICAgLy8gd2UgZG9uJ3QgYWxsb3cgaW5zdGFudGlhdGlvbgorICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBzZXRFbmNyeXB0aW9uU3BlY05TcHJlZml4CisgICAgKgorICAgICogQHBhcmFtIG5ld1ByZWZpeAorICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgc2V0RW5jcnlwdGlvblNwZWNOU3ByZWZpeChTdHJpbmcgbmV3UHJlZml4KQorICAgICAgICAgICB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworICAgICAgRWxlbWVudFByb3h5LnNldERlZmF1bHRQcmVmaXgoRW5jcnlwdGlvbkNvbnN0YW50cy5FbmNyeXB0aW9uU3BlY05TLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3UHJlZml4KTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0RW5jcnlwdGlvblNwZWNOU3ByZWZpeAorICAgICoKKyAgICAqIEByZXR1cm4gdGhlIHByZWZpeCBmb3IgdGhpcyBub2RlLgorICAgICovCisgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRFbmNyeXB0aW9uU3BlY05TcHJlZml4KCkgeworICAgICAgcmV0dXJuIEVsZW1lbnRQcm94eQorICAgICAgICAgLmdldERlZmF1bHRQcmVmaXgoRW5jcnlwdGlvbkNvbnN0YW50cy5FbmNyeXB0aW9uU3BlY05TKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9FbmNyeXB0aW9uRWxlbWVudFByb3h5LmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvRW5jcnlwdGlvbkVsZW1lbnRQcm94eS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmZjdmODUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvRW5jcnlwdGlvbkVsZW1lbnRQcm94eS5qYXZhCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzOworCisKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmV4Y2VwdGlvbnMuWE1MU2VjdXJpdHlFeGNlcHRpb247CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworCisvKioKKyAqIFRoaXMgaXMgdGhlIGJhc2Ugb2JqZWN0IGZvciBhbGwgb2JqZWN0cyB3aGljaCBtYXAgZGlyZWN0bHkgdG8gYW4gRWxlbWVudCBmcm9tCisgKiB0aGUgeGVuYyBzcGVjLgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIEVuY3J5cHRpb25FbGVtZW50UHJveHkgZXh0ZW5kcyBFbGVtZW50UHJveHkgeworCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIEVuY3J5cHRpb25FbGVtZW50UHJveHkKKyAgICAqCisgICAgKiBAcGFyYW0gZG9jCisgICAgKi8KKyAgIHB1YmxpYyBFbmNyeXB0aW9uRWxlbWVudFByb3h5KERvY3VtZW50IGRvYykgeworICAgICAgc3VwZXIoZG9jKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBFbmNyeXB0aW9uRWxlbWVudFByb3h5CisgICAgKgorICAgICogQHBhcmFtIGVsZW1lbnQKKyAgICAqIEBwYXJhbSBCYXNlVVJJCisgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBFbmNyeXB0aW9uRWxlbWVudFByb3h5KEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIEJhc2VVUkkpCisgICAgICAgICAgIHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisgICAgICBzdXBlcihlbGVtZW50LCBCYXNlVVJJKTsKKyAgIH0KKworICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldEJhc2VOYW1lc3BhY2UoKSB7CisgICAgICByZXR1cm4gRW5jcnlwdGlvbkNvbnN0YW50cy5FbmNyeXB0aW9uU3BlY05TOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL0hlbHBlck5vZGVMaXN0LmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvSGVscGVyTm9kZUxpc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWNlOTBjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL0hlbHBlck5vZGVMaXN0LmphdmEKQEAgLTAsMCArMSw5OCBAQAorCisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlsczsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OworCisvKioKKyAqCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubgorICoKKyAqLworcHVibGljIGNsYXNzIEhlbHBlck5vZGVMaXN0IGltcGxlbWVudHMgTm9kZUxpc3QgeworCisgICAvKiogRmllbGQgbm9kZXMgKi8KKyAgIEFycmF5TGlzdCBub2RlcyA9IG5ldyBBcnJheUxpc3QoMjApOworICAgYm9vbGVhbiBfYWxsTm9kZXNNdXN0SGF2ZVNhbWVQYXJlbnQgPSBmYWxzZTsKKworICAgLyoqCisgICAgKiAKKyAgICAqLworICAgcHVibGljIEhlbHBlck5vZGVMaXN0KCkgeworICAgICAgdGhpcyhmYWxzZSk7CisgICB9CisKKyAgIAorICAgLyoqCisgICAgKiBAcGFyYW0gYWxsTm9kZXNNdXN0SGF2ZVNhbWVQYXJlbnQKKyAgICAqLworICAgcHVibGljIEhlbHBlck5vZGVMaXN0KGJvb2xlYW4gYWxsTm9kZXNNdXN0SGF2ZVNhbWVQYXJlbnQpIHsKKyAgICAgIHRoaXMuX2FsbE5vZGVzTXVzdEhhdmVTYW1lUGFyZW50ID0gYWxsTm9kZXNNdXN0SGF2ZVNhbWVQYXJlbnQ7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGl0ZW0KKyAgICAqCisgICAgKiBAcGFyYW0gaW5kZXgKKyAgICAqIEByZXR1cm4gbm9kZSB3aXRoIGluZGUgaQorICAgICovCisgICBwdWJsaWMgTm9kZSBpdGVtKGludCBpbmRleCkgeworCisgICAgICAvLyBsb2cuZGVidWcoIml0ZW0oIiArIGluZGV4ICsgIikgb2YgIiArIHRoaXMuZ2V0TGVuZ3RoKCkgKyAiIG5vZGVzIik7CisKKyAgICAgIHJldHVybiAoTm9kZSkgbm9kZXMuZ2V0KGluZGV4KTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0TGVuZ3RoCisgICAgKgorICAgICogIEByZXR1cm4gbGVuZ3RoIG9mIHRoZSBsaXN0CisgICAgKi8KKyAgIHB1YmxpYyBpbnQgZ2V0TGVuZ3RoKCkgeworICAgICAgcmV0dXJuIG5vZGVzLnNpemUoKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgYXBwZW5kQ2hpbGQKKyAgICAqCisgICAgKiBAcGFyYW0gbm9kZQorICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHZvaWQgYXBwZW5kQ2hpbGQoTm9kZSBub2RlKSB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHsKKyAgICAgIGlmICh0aGlzLl9hbGxOb2Rlc011c3RIYXZlU2FtZVBhcmVudCAmJiB0aGlzLmdldExlbmd0aCgpID4gMCkgeworICAgICAgICAgaWYgKHRoaXMuaXRlbSgwKS5nZXRQYXJlbnROb2RlKCkgIT0gbm9kZS5nZXRQYXJlbnROb2RlKCkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIk5vZGVzIGhhdmUgbm90IHRoZSBzYW1lIFBhcmVudCIpOworICAgICAgICAgfQorICAgICAgfQorICAgICAgbm9kZXMuYWRkKG5vZGUpOworICAgfQorCisgICAvKioKKyAgICAqIEByZXR1cm4gdGhlIGRvY3VtZW50IHRoYXQgY29udGFpbnMgdGhpcyBub2RlbGlzdAorICAgICovCisgICBwdWJsaWMgRG9jdW1lbnQgZ2V0T3duZXJEb2N1bWVudCgpIHsKKyAgICAgIGlmICh0aGlzLmdldExlbmd0aCgpID09IDApIHsKKyAgICAgICAgIHJldHVybiBudWxsOworICAgICAgfQorICAgICAgcmV0dXJuIFhNTFV0aWxzLmdldE93bmVyRG9jdW1lbnQodGhpcy5pdGVtKDApKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9JMThuLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvSTE4bi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwODYzN2EKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvSTE4bi5qYXZhCkBAIC0wLDAgKzEsMjE4IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlsczsKKworaW1wb3J0IGphdmEudGV4dC5NZXNzYWdlRm9ybWF0OworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOworCisvKioKKyAqIFRoZSBJbnRlcm5hdGlvbmFsaXphdGlvbiAoSTE4TikgcGFjay4KKyAqCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubgorICovCitwdWJsaWMgY2xhc3MgSTE4biB7CisKKyAgIC8qKiBGaWVsZCBOT1RfSU5JVElBTElaRURfTVNHICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBOT1RfSU5JVElBTElaRURfTVNHID0KKyAgICAgICJZb3UgbXVzdCBpbml0aWFsaXplIHRoZSB4bWwtc2VjdXJpdHkgbGlicmFyeSBjb3JyZWN0bHkgYmVmb3JlIHlvdSB1c2UgaXQuICIKKyAgICAgICsgIkNhbGwgdGhlIHN0YXRpYyBtZXRob2QgXCJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTtcIiB0byBkbyB0aGF0ICIKKyAgICAgICsgImJlZm9yZSB5b3UgdXNlIGFueSBmdW5jdGlvbmFsaXR5IGZyb20gdGhhdCBsaWJyYXJ5LiI7CisKKyAgIC8qKiBGaWVsZCBkZWZhdWx0TGFuZ3VhZ2VDb2RlICovCisgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRMYW5ndWFnZUNvZGU7ICAgIC8vIHdpbGwgYmUgc2V0IGluIHN0YXRpY3t9IGJsb2NrCisKKyAgIC8qKiBGaWVsZCBkZWZhdWx0Q291bnRyeUNvZGUgKi8KKyAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdENvdW50cnlDb2RlOyAgICAvLyB3aWxsIGJlIHNldCBpbiBzdGF0aWN7fSBibG9jaworCisgICAvKiogRmllbGQgcmVzb3VyY2VCdW5kbGUgKi8KKyAgIHN0YXRpYyBSZXNvdXJjZUJ1bmRsZSByZXNvdXJjZUJ1bmRsZTsKKworICAgLyoqIEZpZWxkIGFscmVhZHlJbml0aWFsaXplZCAqLworICAgc3RhdGljIGJvb2xlYW4gYWxyZWFkeUluaXRpYWxpemVkID0gZmFsc2U7CisKKyAgIC8qKiBGaWVsZCBfbGFuZ3VhZ2VDb2RlICovCisgICBzdGF0aWMgU3RyaW5nIF9sYW5ndWFnZUNvZGUgPSBudWxsOworCisgICAvKiogRmllbGQgX2NvdW50cnlDb2RlICovCisgICBzdGF0aWMgU3RyaW5nIF9jb3VudHJ5Q29kZSA9IG51bGw7CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgSTE4bgorICAgICoKKyAgICAqLworICAgcHJpdmF0ZSBJMThuKCkgeworCisgICAgICAvLyB3ZSBkb24ndCBhbGxvdyBpbnN0YW50aWF0aW9uCisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHRyYW5zbGF0ZQorICAgICoKKyAgICAqIHRyYW5zbGF0ZXMgYSBtZXNzYWdlIElEIGludG8gYW4gaW50ZXJuYXRpb25hbGl6ZWQgU3RyaW5nLCBzZWUgYWxzZQorICAgICogPENPREU+WE1MU2VjdXJpdHlFeGNlcHRpb24uZ2V0RXhjZXB0aW9uTUVzc2FnZSgpPC9DT0RFPi4gVGhlIHN0cmluZ3MgYXJlCisgICAgKiBzdG9yZWQgaW4gdGhlIDxDT0RFPlJlc291cmNlQnVuZGxlPC9DT0RFPiwgd2hpY2ggaXMgaWRlbnRpZmllZCBpbgorICAgICogPENPREU+ZXhjZXB0aW9uTWVzc2FnZXNSZXNvdXJjZUJ1bmRsZUJhc2U8L0NPREU+CisgICAgKgorICAgICogQHBhcmFtIG1lc3NhZ2UKKyAgICAqIEBwYXJhbSBhcmdzIGlzIGFuIDxDT0RFPk9iamVjdFtdPC9DT0RFPiBhcnJheSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBpbnNlcnRlZCBpbnRvIHRoZSBTdHJpbmcgd2hpY2ggaXMgcmV0cmlldmVkIGZyb20gdGhlIDxDT0RFPlJlc291Y2VCdW5kbGU8L0NPREU+CisgICAgKiBAcmV0dXJuIG1lc3NhZ2UgdHJhbnNsYXRlZAorICAgICovCisgICBwdWJsaWMgc3RhdGljIFN0cmluZyB0cmFuc2xhdGUoU3RyaW5nIG1lc3NhZ2UsIE9iamVjdFtdIGFyZ3MpIHsKKyAgICAgIHJldHVybiBnZXRFeGNlcHRpb25NZXNzYWdlKG1lc3NhZ2UsIGFyZ3MpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0cmFuc2xhdGUKKyAgICAqCisgICAgKiB0cmFuc2xhdGVzIGEgbWVzc2FnZSBJRCBpbnRvIGFuIGludGVybmF0aW9uYWxpemVkIFN0cmluZywgc2VlIGFsc2UKKyAgICAqIDxDT0RFPlhNTFNlY3VyaXR5RXhjZXB0aW9uLmdldEV4Y2VwdGlvbk1Fc3NhZ2UoKTwvQ09ERT4KKyAgICAqCisgICAgKiBAcGFyYW0gbWVzc2FnZQorICAgICogQHJldHVybiBtZXNzYWdlIHRyYW5zbGF0ZWQKKyAgICAqLworICAgcHVibGljIHN0YXRpYyBTdHJpbmcgdHJhbnNsYXRlKFN0cmluZyBtZXNzYWdlKSB7CisgICAgICByZXR1cm4gZ2V0RXhjZXB0aW9uTWVzc2FnZShtZXNzYWdlKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0RXhjZXB0aW9uTWVzc2FnZQorICAgICoKKyAgICAqIEBwYXJhbSBtc2dJRAorICAgICogQHJldHVybiBtZXNzYWdlIHRyYW5zbGF0ZWQKKyAgICAqCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEV4Y2VwdGlvbk1lc3NhZ2UoU3RyaW5nIG1zZ0lEKSB7CisKKyAgICAgIHRyeSB7CisgICAgICAgICBTdHJpbmcgcyA9IHJlc291cmNlQnVuZGxlLmdldFN0cmluZyhtc2dJRCk7CisKKyAgICAgICAgIHJldHVybiBzOworICAgICAgfSBjYXRjaCAoVGhyb3dhYmxlIHQpIHsKKyAgICAgICAgIGlmIChvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmlzSW5pdGlhbGl6ZWQoKSkgeworICAgICAgICAgICAgcmV0dXJuICJObyBtZXNzYWdlIHdpdGggSUQgXCIiICsgbXNnSUQKKyAgICAgICAgICAgICAgICAgICArICJcIiBmb3VuZCBpbiByZXNvdXJjZSBidW5kbGUgXCIiCisgICAgICAgICAgICAgICAgICAgKyBDb25zdGFudHMuZXhjZXB0aW9uTWVzc2FnZXNSZXNvdXJjZUJ1bmRsZUJhc2UgKyAiXCIiOworICAgICAgICAgfSAKKyAgICAgICAgIHJldHVybiBJMThuLk5PVF9JTklUSUFMSVpFRF9NU0c7CisgICAgICB9CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGdldEV4Y2VwdGlvbk1lc3NhZ2UKKyAgICAqCisgICAgKiBAcGFyYW0gbXNnSUQKKyAgICAqIEBwYXJhbSBvcmlnaW5hbEV4Y2VwdGlvbgorICAgICogQHJldHVybiBtZXNzYWdlIHRyYW5zbGF0ZWQKKyAgICAqLworICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0RXhjZXB0aW9uTWVzc2FnZShTdHJpbmcgbXNnSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbiBvcmlnaW5hbEV4Y2VwdGlvbikgeworCisgICAgICB0cnkgeworICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyBvcmlnaW5hbEV4Y2VwdGlvbi5nZXRNZXNzYWdlKCkgfTsKKyAgICAgICAgIFN0cmluZyBzID0gTWVzc2FnZUZvcm1hdC5mb3JtYXQocmVzb3VyY2VCdW5kbGUuZ2V0U3RyaW5nKG1zZ0lEKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhBcmdzKTsKKworICAgICAgICAgcmV0dXJuIHM7CisgICAgICB9IGNhdGNoIChUaHJvd2FibGUgdCkgeworICAgICAgICAgaWYgKG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaXNJbml0aWFsaXplZCgpKSB7CisgICAgICAgICAgICByZXR1cm4gIk5vIG1lc3NhZ2Ugd2l0aCBJRCBcIiIgKyBtc2dJRAorICAgICAgICAgICAgICAgICAgICsgIlwiIGZvdW5kIGluIHJlc291cmNlIGJ1bmRsZSBcIiIKKyAgICAgICAgICAgICAgICAgICArIENvbnN0YW50cy5leGNlcHRpb25NZXNzYWdlc1Jlc291cmNlQnVuZGxlQmFzZQorICAgICAgICAgICAgICAgICAgICsgIlwiLiBPcmlnaW5hbCBFeGNlcHRpb24gd2FzIGEgIgorICAgICAgICAgICAgICAgICAgICsgb3JpZ2luYWxFeGNlcHRpb24uZ2V0Q2xhc3MoKS5nZXROYW1lKCkgKyAiIGFuZCBtZXNzYWdlICIKKyAgICAgICAgICAgICAgICAgICArIG9yaWdpbmFsRXhjZXB0aW9uLmdldE1lc3NhZ2UoKTsKKyAgICAgICAgIH0gCisgICAgICAgICAgcmV0dXJuIEkxOG4uTk9UX0lOSVRJQUxJWkVEX01TRzsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0RXhjZXB0aW9uTWVzc2FnZQorICAgICoKKyAgICAqIEBwYXJhbSBtc2dJRAorICAgICogQHBhcmFtIGV4QXJncworICAgICogQHJldHVybiBtZXNzYWdlIHRyYW5zbGF0ZWQKKyAgICAqLworICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0RXhjZXB0aW9uTWVzc2FnZShTdHJpbmcgbXNnSUQsIE9iamVjdCBleEFyZ3NbXSkgeworCisgICAgICB0cnkgeworICAgICAgICAgU3RyaW5nIHMgPSBNZXNzYWdlRm9ybWF0LmZvcm1hdChyZXNvdXJjZUJ1bmRsZS5nZXRTdHJpbmcobXNnSUQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleEFyZ3MpOworCisgICAgICAgICByZXR1cm4gczsKKyAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSB0KSB7CisgICAgICAgICBpZiAob3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuSW5pdC5pc0luaXRpYWxpemVkKCkpIHsKKyAgICAgICAgICAgIHJldHVybiAiTm8gbWVzc2FnZSB3aXRoIElEIFwiIiArIG1zZ0lECisgICAgICAgICAgICAgICAgICAgKyAiXCIgZm91bmQgaW4gcmVzb3VyY2UgYnVuZGxlIFwiIgorICAgICAgICAgICAgICAgICAgICsgQ29uc3RhbnRzLmV4Y2VwdGlvbk1lc3NhZ2VzUmVzb3VyY2VCdW5kbGVCYXNlICsgIlwiIjsKKyAgICAgICAgIH0gCisgICAgICAgICByZXR1cm4gSTE4bi5OT1RfSU5JVElBTElaRURfTVNHOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBpbml0CisgICAgKgorICAgICogQHBhcmFtIF9kZWZhdWx0TGFuZ3VhZ2VDb2RlCisgICAgKiBAcGFyYW0gX2RlZmF1bHRDb3VudHJ5Q29kZQorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgaW5pdChTdHJpbmcgX2RlZmF1bHRMYW5ndWFnZUNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgX2RlZmF1bHRDb3VudHJ5Q29kZSkgeworCisgICAgICBJMThuLmRlZmF1bHRMYW5ndWFnZUNvZGUgPSBfZGVmYXVsdExhbmd1YWdlQ29kZTsKKworICAgICAgaWYgKEkxOG4uZGVmYXVsdExhbmd1YWdlQ29kZSA9PSBudWxsKSB7CisgICAgICAgICBJMThuLmRlZmF1bHRMYW5ndWFnZUNvZGUgPSBMb2NhbGUuZ2V0RGVmYXVsdCgpLmdldExhbmd1YWdlKCk7CisgICAgICB9CisKKyAgICAgIEkxOG4uZGVmYXVsdENvdW50cnlDb2RlID0gX2RlZmF1bHRDb3VudHJ5Q29kZTsKKworICAgICAgaWYgKEkxOG4uZGVmYXVsdENvdW50cnlDb2RlID09IG51bGwpIHsKKyAgICAgICAgIEkxOG4uZGVmYXVsdENvdW50cnlDb2RlID0gTG9jYWxlLmdldERlZmF1bHQoKS5nZXRDb3VudHJ5KCk7CisgICAgICB9CisKKyAgICAgIGluaXRMb2NhbGUoSTE4bi5kZWZhdWx0TGFuZ3VhZ2VDb2RlLCBJMThuLmRlZmF1bHRDb3VudHJ5Q29kZSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGluaXRMb2NhbGUKKyAgICAqCisgICAgKiBAcGFyYW0gbGFuZ3VhZ2VDb2RlCisgICAgKiBAcGFyYW0gY291bnRyeUNvZGUKKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIGluaXRMb2NhbGUoU3RyaW5nIGxhbmd1YWdlQ29kZSwgU3RyaW5nIGNvdW50cnlDb2RlKSB7CisKKyAgICAgIGlmIChhbHJlYWR5SW5pdGlhbGl6ZWQgJiYgbGFuZ3VhZ2VDb2RlLmVxdWFscyhfbGFuZ3VhZ2VDb2RlKQorICAgICAgICAgICAgICAmJiBjb3VudHJ5Q29kZS5lcXVhbHMoX2NvdW50cnlDb2RlKSkgeworICAgICAgICAgcmV0dXJuOworICAgICAgfQorCisgICAgICBpZiAoKGxhbmd1YWdlQ29kZSAhPSBudWxsKSAmJiAoY291bnRyeUNvZGUgIT0gbnVsbCkKKyAgICAgICAgICAgICAgJiYgKGxhbmd1YWdlQ29kZS5sZW5ndGgoKSA+IDApICYmIChjb3VudHJ5Q29kZS5sZW5ndGgoKSA+IDApKSB7CisgICAgICAgICBfbGFuZ3VhZ2VDb2RlID0gbGFuZ3VhZ2VDb2RlOworICAgICAgICAgX2NvdW50cnlDb2RlID0gY291bnRyeUNvZGU7CisgICAgICB9IGVsc2UgeworICAgICAgICAgX2NvdW50cnlDb2RlID0gSTE4bi5kZWZhdWx0Q291bnRyeUNvZGU7CisgICAgICAgICBfbGFuZ3VhZ2VDb2RlID0gSTE4bi5kZWZhdWx0TGFuZ3VhZ2VDb2RlOworICAgICAgfQorCisgICAgICBJMThuLnJlc291cmNlQnVuZGxlID0KKyAgICAgICAgIFJlc291cmNlQnVuZGxlLmdldEJ1bmRsZShDb25zdGFudHMuZXhjZXB0aW9uTWVzc2FnZXNSZXNvdXJjZUJ1bmRsZUJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExvY2FsZShfbGFuZ3VhZ2VDb2RlLCBfY291bnRyeUNvZGUpKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9JZFJlc29sdmVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvSWRSZXNvbHZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjZDk4NjAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvSWRSZXNvbHZlci5qYXZhCkBAIC0wLDAgKzEsMjg2IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlsczsKKworaW1wb3J0IGphdmEubGFuZy5yZWYuV2Vha1JlZmVyZW5jZTsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5XZWFrSGFzaE1hcDsKKworaW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5OYW1lZE5vZGVNYXA7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKKworCisvKioKKyAqIFB1cnBvc2Ugb2YgdGhpcyBjbGFzcyBpcyB0byBlbmFibGUgdGhlIFhNTCBQYXJzZXIgdG8ga2VlcCB0cmFjayBvZiBJRAorICogYXR0cmlidXRlcy4gVGhpcyBpcyBkb25lIGJ5ICdyZWdpc3RlcmluZycgYXR0cmlidXRlcyBvZiB0eXBlIElEIGF0IHRoZQorICogSWRSZXNvbHZlci4gVGhpcyBpcyBuZWNlc3NhcnkgaWYgd2UgY3JlYXRlIGEgZG9jdW1lbnQgZnJvbSBzY3JhdGNoIGFuZCB3ZQorICogc2lnbiBzb21lIHJlc291cmNlcyB3aXRoIGEgVVJJIHVzaW5nIGEgZnJhZ2VudCBpZGVudGlmaWVyLi4uCisgKiA8QlIgLz4KKyAqIFRoZSBwcm9ibGVtIGlzIHRoYXQgaWYgeW91IGRvIG5vdCB2YWxpZGF0ZSBhIGRvY3VtZW50LCB5b3UgY2Fubm90IHVzZSB0aGUKKyAqIDxDT0RFPmdldEVsZW1lbnRCeUlEPC9DT0RFPiBmdW5jdGlvbmFsaXR5LiBTbyB0aGlzIG1vZHVsZXMgdXNlcyBzb21lIGltcGxpY2l0CisgKiBrbm93bGVkZ2Ugb24gc2VsZWN0ZWQgU2NoZW1hcyBhbmQgRFREcyB0byBwaWNrIHRoZSByaWdodCBFbGVtZW50IGZvciBhIGdpdmVuCisgKiBJRDogV2Uga25vdyB0aGF0IGFsbCA8Q09ERT5ASWQ8L0NPREU+IGF0dHJpYnV0ZXMgaW4gYW4gRWxlbWVudCBmcm9tIHRoZSBYTUwKKyAqIFNpZ25hdHVyZSBuYW1lc3BhY2UgYXJlIG9mIHR5cGUgPENPREU+SUQ8L0NPREU+LgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqIEBzZWUgPEEgSFJFRj0iaHR0cDovL3d3dy54bWwuY29tL2xwdC9hLzIwMDEvMTEvMDcvaWQuaHRtbCI+IklkZW50aXR5IENyaXNpcyIgb24geG1sLmNvbTwvQT4KKyAqLworcHVibGljIGNsYXNzIElkUmVzb2x2ZXIgeworCisgICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHByaXZhdGUgc3RhdGljIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZyBsb2cgPQorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZyhJZFJlc29sdmVyLmNsYXNzLmdldE5hbWUoKSk7CisKKyAgICBwcml2YXRlIHN0YXRpYyBXZWFrSGFzaE1hcCBkb2NNYXAgPSBuZXcgV2Vha0hhc2hNYXAoKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RvciBJZFJlc29sdmVyCisgICAgICoKKyAgICAgKi8KKyAgICBwcml2YXRlIElkUmVzb2x2ZXIoKSB7CisgICAgICAgLy8gd2UgZG9uJ3QgYWxsb3cgaW5zdGFudGlhdGlvbgorICAgIH0KKworICAgIC8qKgorICAgICAqIE1ldGhvZCByZWdpc3RlckVsZW1lbnRCeUlkCisgICAgICoKKyAgICAgKiBAcGFyYW0gZWxlbWVudCB0aGUgZWxlbWVudCB0byByZWdpc3RlcgorICAgICAqIEBwYXJhbSBpZFZhbHVlIHRoZSB2YWx1ZSBvZiB0aGUgSUQgYXR0cmlidXRlCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRWxlbWVudEJ5SWQoRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgaWRWYWx1ZSkgeworICAgICAgICBEb2N1bWVudCBkb2MgPSBlbGVtZW50LmdldE93bmVyRG9jdW1lbnQoKTsKKyAgICAgICAgV2Vha0hhc2hNYXAgZWxlbWVudE1hcDsKKyAgICAgICAgc3luY2hyb25pemVkIChkb2NNYXApIHsKKyAgICAgICAgICAgIGVsZW1lbnRNYXAgPSAoV2Vha0hhc2hNYXApIGRvY01hcC5nZXQoZG9jKTsKKyAgICAgICAgICAgIGlmIChlbGVtZW50TWFwID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBlbGVtZW50TWFwID0gbmV3IFdlYWtIYXNoTWFwKCk7CisgICAgICAgICAgICAgICAgZG9jTWFwLnB1dChkb2MsIGVsZW1lbnRNYXApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsZW1lbnRNYXAucHV0KGlkVmFsdWUsIG5ldyBXZWFrUmVmZXJlbmNlKGVsZW1lbnQpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNZXRob2QgcmVnaXN0ZXJFbGVtZW50QnlJZAorICAgICAqCisgICAgICogQHBhcmFtIGVsZW1lbnQgdGhlIGVsZW1lbnQgdG8gcmVnaXN0ZXIKKyAgICAgKiBAcGFyYW0gaWQgdGhlIElEIGF0dHJpYnV0ZQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCByZWdpc3RlckVsZW1lbnRCeUlkKEVsZW1lbnQgZWxlbWVudCwgQXR0ciBpZCkgeworICAgICAgICBJZFJlc29sdmVyLnJlZ2lzdGVyRWxlbWVudEJ5SWQoZWxlbWVudCwgaWQuZ2V0Tm9kZVZhbHVlKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1ldGhvZCBnZXRFbGVtZW50QnlJZAorICAgICAqCisgICAgICogQHBhcmFtIGRvYyB0aGUgZG9jdW1lbnQKKyAgICAgKiBAcGFyYW0gaWQgdGhlIHZhbHVlIG9mIHRoZSBJRCAKKyAgICAgKiBAcmV0dXJuIHRoZSBlbGVtZW50IG9idGFpbmVkIGJ5IHRoZSBpZCwgb3IgbnVsbCBpZiBpdCBpcyBub3QgZm91bmQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBFbGVtZW50IGdldEVsZW1lbnRCeUlkKERvY3VtZW50IGRvYywgU3RyaW5nIGlkKSB7CisKKyAgICAgICAgRWxlbWVudCByZXN1bHQgPSBJZFJlc29sdmVyLmdldEVsZW1lbnRCeUlkVHlwZShkb2MsIGlkKTsKKworICAgICAgICBpZiAocmVzdWx0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGxvZy5kZWJ1ZygKKyAgICAgICAgICAgICJJIGNvdWxkIGZpbmQgYW4gRWxlbWVudCB1c2luZyB0aGUgc2ltcGxlIGdldEVsZW1lbnRCeUlkVHlwZSBtZXRob2Q6ICIKKyAgICAgICAgICAgICsgcmVzdWx0LmdldFRhZ05hbWUoKSk7CisKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQgPSBJZFJlc29sdmVyLmdldEVsZW1lbnRCeUlkVXNpbmdET00oZG9jLCBpZCk7CisKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7CisgICAgICAgICAgICBsb2cuZGVidWcoCisgICAgICAgICAgICAgIkkgY291bGQgZmluZCBhbiBFbGVtZW50IHVzaW5nIHRoZSBzaW1wbGUgZ2V0RWxlbWVudEJ5SWRVc2luZ0RPTSBtZXRob2Q6ICIKKyAgICAgICAgICAgICsgcmVzdWx0LmdldFRhZ05hbWUoKSk7CisKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgLy8gdGhpcyBtdXN0IGJlIGRvbmUgc28gdGhhdCBYYWxhbiBjYW4gY2F0Y2ggQUxMIG5hbWVzcGFjZXMKKyAgICAgICAgLy9YTUxVdGlscy5jaXJjdW12ZW50QnVnMjY1MChkb2MpOworICAgICAgICByZXN1bHQgPSBJZFJlc29sdmVyLmdldEVsZW1lbnRCeVNlYXJjaGluZyhkb2MsIGlkKTsKKworICAgICAgICBpZiAocmVzdWx0ICE9IG51bGwpIHsKKwkgICAgSWRSZXNvbHZlci5yZWdpc3RlckVsZW1lbnRCeUlkKHJlc3VsdCwgaWQpOworCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgCisKKyAgICAvKioKKyAgICAgKiBNZXRob2QgZ2V0RWxlbWVudEJ5SWRVc2luZ0RPTQorICAgICAqCisgICAgICogQHBhcmFtIGRvYyB0aGUgZG9jdW1lbnQKKyAgICAgKiBAcGFyYW0gaWQgdGhlIHZhbHVlIG9mIHRoZSBJRAorICAgICAqIEByZXR1cm4gdGhlIGVsZW1lbnQgb2J0YWluZWQgYnkgdGhlIGlkLCBvciBudWxsIGlmIGl0IGlzIG5vdCBmb3VuZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBFbGVtZW50IGdldEVsZW1lbnRCeUlkVXNpbmdET00oRG9jdW1lbnQgZG9jLCBTdHJpbmcgaWQpIHsKKyAgICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKQorICAgICAgIAkgICAgbG9nLmRlYnVnKCJnZXRFbGVtZW50QnlJZFVzaW5nRE9NKCkgU2VhcmNoIGZvciBJRCAiICsgaWQpOworICAgICAgICByZXR1cm4gZG9jLmdldEVsZW1lbnRCeUlkKGlkKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNZXRob2QgZ2V0RWxlbWVudEJ5SWRUeXBlCisgICAgICoKKyAgICAgKiBAcGFyYW0gZG9jIHRoZSBkb2N1bWVudAorICAgICAqIEBwYXJhbSBpZCB0aGUgdmFsdWUgb2YgdGhlIElECisgICAgICogQHJldHVybiB0aGUgZWxlbWVudCBvYnRhaW5lZCBieSB0aGUgaWQsIG9yIG51bGwgaWYgaXQgaXMgbm90IGZvdW5kLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIEVsZW1lbnQgZ2V0RWxlbWVudEJ5SWRUeXBlKERvY3VtZW50IGRvYywgU3RyaW5nIGlkKSB7CisgICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkKKwkgICAgbG9nLmRlYnVnKCJnZXRFbGVtZW50QnlJZFR5cGUoKSBTZWFyY2ggZm9yIElEICIgKyBpZCk7CisgICAgICAgIFdlYWtIYXNoTWFwIGVsZW1lbnRNYXA7CisgICAgICAgIHN5bmNocm9uaXplZCAoZG9jTWFwKSB7CisgICAgICAgICAgICBlbGVtZW50TWFwID0gKFdlYWtIYXNoTWFwKSBkb2NNYXAuZ2V0KGRvYyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGVsZW1lbnRNYXAgIT0gbnVsbCkgeworICAgICAgICAgICAgV2Vha1JlZmVyZW5jZSB3ZWFrUmVmZXJlbmNlID0gKFdlYWtSZWZlcmVuY2UpIGVsZW1lbnRNYXAuZ2V0KGlkKTsKKyAgICAgICAgICAgIGlmICh3ZWFrUmVmZXJlbmNlICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKEVsZW1lbnQpIHdlYWtSZWZlcmVuY2UuZ2V0KCk7ICAgCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgamF2YS51dGlsLkxpc3QgbmFtZXM7CisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IG5hbWVzTGVuZ3RoOworICAgIHN0YXRpYyB7CisJU3RyaW5nIG5hbWVzcGFjZXNbXT17IAorCSAgICBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TLAorCSAgICBFbmNyeXB0aW9uQ29uc3RhbnRzLkVuY3J5cHRpb25TcGVjTlMsCisJICAgICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL3NlY3VyaXR5LzIwMDAtMTIiLAorCSAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMi8wMy94a21zIyIsCisJICAgICJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjA6YXNzZXJ0aW9uIiwKKwkgICAgInVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMDpwcm90b2NvbCIKKwl9OworCW5hbWVzID0gQXJyYXlzLmFzTGlzdChuYW1lc3BhY2VzKTsKKwluYW1lc0xlbmd0aCA9IG5hbWVzLnNpemUoKTsKKyAgICB9CisgICAKKworICAgIHByaXZhdGUgc3RhdGljIEVsZW1lbnQgZ2V0RWxlbWVudEJ5U2VhcmNoaW5nKE5vZGUgcm9vdCxTdHJpbmcgaWQpIHsKKyAgICAgICAgRWxlbWVudCBbXWVscz1uZXcgRWxlbWVudFtuYW1lc0xlbmd0aCArIDFdOworCWdldEVsKHJvb3QsaWQsZWxzKTsKKwlmb3IgKGludCBpPTA7aTxlbHMubGVuZ3RoO2krKykgeworCSAgICBpZiAoZWxzW2ldIT1udWxsKSB7CisJCXJldHVybiBlbHNbaV07CisJICAgIH0KKwl9CisJcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IGdldEVsKE5vZGUgY3VycmVudE5vZGUsU3RyaW5nIGlkLEVsZW1lbnQgW11lbHMpIHsKKyAgICAJTm9kZSBzaWJsaW5nPW51bGw7CisgICAgCU5vZGUgcGFyZW50Tm9kZT1udWxsOyAgICAJCisgICAgCWRvIHsKKyAgICAJCXN3aXRjaCAoY3VycmVudE5vZGUuZ2V0Tm9kZVR5cGUoKSkgeyAgICAJCQorICAgIAkJY2FzZSBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUgOgorICAgIAkJY2FzZSBOb2RlLkRPQ1VNRU5UX05PREUgOgorICAgIAkJCXNpYmxpbmc9IGN1cnJlbnROb2RlLmdldEZpcnN0Q2hpbGQoKTsKKyAgICAJCQlicmVhazsKKyAgICAJCQkKKyAgICAJCQkKKyAgICAJCWNhc2UgTm9kZS5FTEVNRU5UX05PREUgOgorICAgIAkJCUVsZW1lbnQgY3VycmVudEVsZW1lbnQgPSAoRWxlbWVudCkgY3VycmVudE5vZGU7CisgICAgCQkJaWYgKGlzRWxlbWVudChjdXJyZW50RWxlbWVudCwgaWQsIGVscyk9PTEpCisgICAgCQkJCXJldHVybiAxOworICAgIAkJCXNpYmxpbmc9IGN1cnJlbnROb2RlLmdldEZpcnN0Q2hpbGQoKTsgCisgICAgCQkJaWYgKHNpYmxpbmc9PW51bGwpIHsKKyAgICAJCQkgICAgaWYgKHBhcmVudE5vZGUgIT0gbnVsbCkgeworICAgICAgIAkJCSAgICAJCXNpYmxpbmc9IGN1cnJlbnROb2RlLmdldE5leHRTaWJsaW5nKCk7CisJCQkJICAgIH0KKyAgICAJCQl9IGVsc2UgeworICAgIAkJCQlwYXJlbnROb2RlPWN1cnJlbnRFbGVtZW50OworICAgIAkJCX0KKyAgICAJCQlicmVhazsKKyAgICAJfSB3aGlsZSAoc2libGluZz09bnVsbCAgJiYgcGFyZW50Tm9kZSE9bnVsbCkgeyAgICAJCSAgICAgIAkJICAgICAgCQkJCisgICAgCQkJc2libGluZz1wYXJlbnROb2RlLmdldE5leHRTaWJsaW5nKCk7CisgICAgCQkJcGFyZW50Tm9kZT1wYXJlbnROb2RlLmdldFBhcmVudE5vZGUoKTsgICAKKyAgICAJCQlpZiAocGFyZW50Tm9kZSAhPSBudWxsICYmIE5vZGUuRUxFTUVOVF9OT0RFICE9IHBhcmVudE5vZGUuZ2V0Tm9kZVR5cGUoKSkgeworICAgIAkJCQlwYXJlbnROb2RlPW51bGw7CisgICAgCQkJfSAgICAJCQkKKyAgICAJCX0gICAgICAKKyAgICAJCWlmIChzaWJsaW5nPT1udWxsKQorICAgIAkJCXJldHVybiAxOworICAgIAkJY3VycmVudE5vZGU9c2libGluZzsgICAgICAKKyAgICAJCXNpYmxpbmc9Y3VycmVudE5vZGUuZ2V0TmV4dFNpYmxpbmcoKTsgIAorICAgIAl9IHdoaWxlKHRydWUpOworCisgICAgfQorICAgIHB1YmxpYyBzdGF0aWMgaW50IGlzRWxlbWVudChFbGVtZW50IGVsLCBTdHJpbmcgaWQsRWxlbWVudFtdIGVscykgeworICAgIAlpZiAoIWVsLmhhc0F0dHJpYnV0ZXMoKSkgeworICAgIAkJcmV0dXJuIDA7CisgICAgCX0KKyAgICAJTmFtZWROb2RlTWFwIG5zPWVsLmdldEF0dHJpYnV0ZXMoKTsKKyAgICAJaW50IGVsZW1lbnRJbmRleD1uYW1lcy5pbmRleE9mKGVsLmdldE5hbWVzcGFjZVVSSSgpKTsKKwkgICAgZWxlbWVudEluZGV4PShlbGVtZW50SW5kZXg8MCkgPyBuYW1lc0xlbmd0aCA6IGVsZW1lbnRJbmRleDsKKyAgICAJZm9yIChpbnQgbGVuZ3RoPW5zLmdldExlbmd0aCgpLCBpPTA7IGk8bGVuZ3RoOyBpKyspIHsKKyAgICAJCUF0dHIgbj0oQXR0cilucy5pdGVtKGkpOworICAgIAkJU3RyaW5nIHM9bi5nZXROYW1lc3BhY2VVUkkoKTsKKyAgICAJCQorCQkgICAgaW50IGluZGV4PXM9PW51bGwgPyBlbGVtZW50SW5kZXggOiBuYW1lcy5pbmRleE9mKG4uZ2V0TmFtZXNwYWNlVVJJKCkpOworCQkgICAgaW5kZXg9KGluZGV4PDApID8gbmFtZXNMZW5ndGggOiBpbmRleDsKKwkJICAgIFN0cmluZyBuYW1lPW4uZ2V0TG9jYWxOYW1lKCk7CisJCSAgICBpZiAobmFtZS5sZW5ndGgoKT4yKQorCQkgICAgCWNvbnRpbnVlOworCQkgICAgU3RyaW5nIHZhbHVlPW4uZ2V0Tm9kZVZhbHVlKCk7CisJCSAgICBpZiAobmFtZS5jaGFyQXQoMCk9PSdJJykgeworCQkgICAgCWNoYXIgY2g9bmFtZS5jaGFyQXQoMSk7CQkgICAgCisJCSAgICAJaWYgKGNoPT0nZCcgJiYgdmFsdWUuZXF1YWxzKGlkKSkgewkJCQkgICAJCSAgICAKKwkJICAgIAkJZWxzW2luZGV4XT1lbDsKKwkJICAgICAgICAJaWYgKGluZGV4PT0wKSB7CisJCSAgICAgICAgCQlyZXR1cm4gMTsKKwkJICAgICAgICAJfQorCQkgICAgCX0gZWxzZSBpZiAoY2g9PSdEJyAmJnZhbHVlLmVuZHNXaXRoKGlkKSkgeworCQkgICAgCQlpZiAoaW5kZXghPTMpIHsKKwkJCSAgICAgICAgICAgIGluZGV4PW5hbWVzTGVuZ3RoOworCQkJICAgICAgICB9CisJCQkgICAgICAgIGVsc1tpbmRleF09ZWw7CisJCSAgICAJfQorCQkgICAgfSBlbHNlIGlmICggImlkIi5lcXVhbHMobmFtZSkgJiYgdmFsdWUuZXF1YWxzKGlkKSApIHsKKwkJICAgIAlpZiAoaW5kZXghPTIpIHsKKwkJICAgIAkJaW5kZXg9bmFtZXNMZW5ndGg7CisJCSAgICAgICAgfQkJCSAgICAJCQkJICAgCisJCSAgICAgICAgZWxzW2luZGV4XT1lbDsKKwkJICAgIH0gCisgICAgCX0KKyAgICAJLy9Gb3IgYW4gZWxlbWVudCBuYW1lc3BhY2Ugc2VhcmNoIGZvciBpbXBvcnRhbnRzCisgICAgCWlmICgoZWxlbWVudEluZGV4PT0zKSYmKAorCQkgICAgZWwuZ2V0QXR0cmlidXRlKCJPcmlnaW5hbFJlcXVlc3RJRCIpLmVxdWFscyhpZCkgfHwKKwkJICAgIGVsLmdldEF0dHJpYnV0ZSgiUmVxdWVzdElEIikuZXF1YWxzKGlkKSB8fAorCQkgICAgZWwuZ2V0QXR0cmlidXRlKCJSZXNwb25zZUlEIikuZXF1YWxzKGlkKSkpIHsKKwkJICAgIGVsc1szXT1lbDsJCQkJICAgCQkgICAgCisgICAgCX0gZWxzZSBpZiAoKGVsZW1lbnRJbmRleD09NCkmJigKKwkJICAgIGVsLmdldEF0dHJpYnV0ZSgiQXNzZXJ0aW9uSUQiKS5lcXVhbHMoaWQpKSkgeworCQkgICAgZWxzWzRdPWVsOwkJCQkgICAKKyAgICAJfSBlbHNlIGlmICgoZWxlbWVudEluZGV4PT01KSYmKAorCQkgICAgZWwuZ2V0QXR0cmlidXRlKCJSZXF1ZXN0SUQiKS5lcXVhbHMoaWQpIHx8CisJCSAgICBlbC5nZXRBdHRyaWJ1dGUoIlJlc3BvbnNlSUQiKS5lcXVhbHMoaWQpKSkgeworCQkgICAgZWxzWzVdPWVsOwkJCQkgICAKKwkJIH0JCQorICAgIAlyZXR1cm4gMDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvSWdub3JlQWxsRXJyb3JIYW5kbGVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvSWdub3JlQWxsRXJyb3JIYW5kbGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRiZGY4MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9JZ25vcmVBbGxFcnJvckhhbmRsZXIuamF2YQpAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlsczsKKworCitpbXBvcnQgb3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyOworaW1wb3J0IG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbjsKKworCisvKioKKyAqIFRoaXMge0BsaW5rIG9yZy54bWwuc2F4LkVycm9ySGFuZGxlcn0gZG9lcyBhYnN1bHV0ZWx5IG5vdGhpbmcgYnV0IGxvZ2dpbmcKKyAqIHRoZSBldmVudHMuCisgKgorICogQGF1dGhvciBDaHJpc3RpYW4gR2V1ZXItUG9sbG1hbm4KKyAqLworcHVibGljIGNsYXNzIElnbm9yZUFsbEVycm9ySGFuZGxlciBpbXBsZW1lbnRzIEVycm9ySGFuZGxlciB7CisKKwkvKioge0BsaW5rIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nfSBsb2dnaW5nIGZhY2lsaXR5ICovCisJc3RhdGljIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZyBsb2cgPQorCQlvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZygKKwkJCUlnbm9yZUFsbEVycm9ySGFuZGxlci5jbGFzcy5nZXROYW1lKCkpOworCisJLyoqIEZpZWxkIHRocm93RXhjZXB0aW9ucyAqLworCXN0YXRpYyBmaW5hbCBib29sZWFuIHdhcm5PbkV4Y2VwdGlvbnMgPQlTeXN0ZW0uZ2V0UHJvcGVydHkoCisJCSJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0Lndhcm4ub24uZXhjZXB0aW9ucyIsICJmYWxzZSIpLmVxdWFscygidHJ1ZSIpOworCisJLyoqIEZpZWxkIHRocm93RXhjZXB0aW9ucyAgICAgICAgICAgKi8KKwlzdGF0aWMgZmluYWwgYm9vbGVhbiB0aHJvd0V4Y2VwdGlvbnMgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoCisJCSJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LnRocm93LmV4Y2VwdGlvbnMiLCAiZmFsc2UiKS5lcXVhbHMoInRydWUiKTsKKworCQorCS8qKiBAaW5oZXJpdERvYyAqLworCXB1YmxpYyB2b2lkIHdhcm5pbmcoU0FYUGFyc2VFeGNlcHRpb24gZXgpIHRocm93cyBTQVhFeGNlcHRpb24geworCQlpZiAoSWdub3JlQWxsRXJyb3JIYW5kbGVyLndhcm5PbkV4Y2VwdGlvbnMpIHsKKwkJCWxvZy53YXJuKCIiLCBleCk7CisJCX0KKwkJaWYgKElnbm9yZUFsbEVycm9ySGFuZGxlci50aHJvd0V4Y2VwdGlvbnMpIHsKKwkJCXRocm93IGV4OworCQl9CisJfQorCisKKwkvKiogQGluaGVyaXREb2MgKi8KKwlwdWJsaWMgdm9pZCBlcnJvcihTQVhQYXJzZUV4Y2VwdGlvbiBleCkgdGhyb3dzIFNBWEV4Y2VwdGlvbiB7CisJCWlmIChJZ25vcmVBbGxFcnJvckhhbmRsZXIud2Fybk9uRXhjZXB0aW9ucykgeworCQkJbG9nLmVycm9yKCIiLCBleCk7CisJCX0KKwkJaWYgKElnbm9yZUFsbEVycm9ySGFuZGxlci50aHJvd0V4Y2VwdGlvbnMpIHsKKwkJCXRocm93IGV4OworCQl9CisJfQorCisKKworCS8qKiBAaW5oZXJpdERvYyAqLworCXB1YmxpYyB2b2lkIGZhdGFsRXJyb3IoU0FYUGFyc2VFeGNlcHRpb24gZXgpIHRocm93cyBTQVhFeGNlcHRpb24geworCQlpZiAoSWdub3JlQWxsRXJyb3JIYW5kbGVyLndhcm5PbkV4Y2VwdGlvbnMpIHsKKwkJCWxvZy53YXJuKCIiLCBleCk7CisJCX0KKwkJaWYgKElnbm9yZUFsbEVycm9ySGFuZGxlci50aHJvd0V4Y2VwdGlvbnMpIHsKKwkJCXRocm93IGV4OworCQl9CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL0phdmFVdGlscy5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL0phdmFVdGlscy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzMGU0OWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvSmF2YVV0aWxzLmphdmEKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzOworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uRmlsZU91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CisKKy8qKgorICogQSBjb2xsZWN0aW9uIG9mIGRpZmZlcmVudCwgZ2VuZXJhbC1wdXJwb3NlIG1ldGhvZHMgZm9yIEpBVkEtc3BlY2lmaWMgdGhpbmdzCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubgorICovCitwdWJsaWMgY2xhc3MgSmF2YVV0aWxzIHsKKworICAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZyhKYXZhVXRpbHMuY2xhc3MuZ2V0TmFtZSgpKTsKKworICAgIHByaXZhdGUgSmF2YVV0aWxzKCkgeworICAgICAgICAvLyB3ZSBkb24ndCBhbGxvdyBpbnN0YW50aWF0aW9uCisgICAgfQorCisgICAgLyoqCisgICAgICogTWV0aG9kIGdldEJ5dGVzRnJvbUZpbGUKKyAgICAgKgorICAgICAqIEBwYXJhbSBmaWxlTmFtZQorICAgICAqIEByZXR1cm4gdGhlIGJ5dGVzIHJlYWRlZCBmcm9tIHRoZSBmaWxlCisgICAgICoKKyAgICAgKiBAdGhyb3dzIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGJ5dGVbXSBnZXRCeXRlc0Zyb21GaWxlKFN0cmluZyBmaWxlTmFtZSkKKyAgICAgICAgdGhyb3dzIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiwgSU9FeGNlcHRpb24geworCisgICAgICAgIGJ5dGUgcmVmQnl0ZXNbXSA9IG51bGw7CisKKyAgICAgICAgRmlsZUlucHV0U3RyZWFtIGZpc1JlZiA9IG5ldyBGaWxlSW5wdXRTdHJlYW0oZmlsZU5hbWUpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgVW5zeW5jQnl0ZUFycmF5T3V0cHV0U3RyZWFtIGJhb3MgPSBuZXcgVW5zeW5jQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7CisgICAgICAgICAgICBieXRlIGJ1ZltdID0gbmV3IGJ5dGVbMTAyNF07CisgICAgICAgICAgICBpbnQgbGVuOworCisgICAgICAgICAgICB3aGlsZSAoKGxlbiA9IGZpc1JlZi5yZWFkKGJ1ZikpID4gMCkgeworICAgICAgICAgICAgICAgIGJhb3Mud3JpdGUoYnVmLCAwLCBsZW4pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZWZCeXRlcyA9IGJhb3MudG9CeXRlQXJyYXkoKTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKwkgICAgZmlzUmVmLmNsb3NlKCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVmQnl0ZXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogTWV0aG9kIHdyaXRlQnl0ZXNUb0ZpbGVuYW1lCisgICAgICoKKyAgICAgKiBAcGFyYW0gZmlsZW5hbWUKKyAgICAgKiBAcGFyYW0gYnl0ZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgd3JpdGVCeXRlc1RvRmlsZW5hbWUoU3RyaW5nIGZpbGVuYW1lLCBieXRlW10gYnl0ZXMpIHsKKworCUZpbGVPdXRwdXRTdHJlYW0gZm9zID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmIChmaWxlbmFtZSAhPSBudWxsICYmIGJ5dGVzICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBGaWxlIGYgPSBuZXcgRmlsZShmaWxlbmFtZSk7CisKKyAgICAgICAgICAgICAgICBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbShmKTsKKworICAgICAgICAgICAgICAgIGZvcy53cml0ZShieXRlcyk7CisgICAgICAgICAgICAgICAgZm9zLmNsb3NlKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxvZy5kZWJ1Zygid3JpdGVCeXRlc1RvRmlsZW5hbWUgZ290IG51bGwgYnl0ZVtdIHBvaW50ZWQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZXgpIHsKKwkgICAgaWYgKGZvcyAhPSBudWxsKSB7CisJCXRyeSB7CisJICAgIAkgICAgZm9zLmNsb3NlKCk7CisJCX0gY2F0Y2ggKElPRXhjZXB0aW9uIGlvZSkge30KKwkgICAgfQorIAl9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBtZXRob2QgcmVhZHMgYWxsIGJ5dGVzIGZyb20gdGhlIGdpdmVuIElucHV0U3RyZWFtIHRpbGwgRU9GIGFuZCAKKyAgICAgKiByZXR1cm5zIHRoZW0gYXMgYSBieXRlIGFycmF5LgorICAgICAqCisgICAgICogQHBhcmFtIGlucHV0U3RyZWFtCisgICAgICogQHJldHVybiB0aGUgYnl0ZXMgcmVhZGVkIGZyb20gdGhlIHN0cmVhbQorICAgICAqCisgICAgICogQHRocm93cyBGaWxlTm90Rm91bmRFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBieXRlW10gZ2V0Qnl0ZXNGcm9tU3RyZWFtKElucHV0U3RyZWFtIGlucHV0U3RyZWFtKSAKKyAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uIHsKKworICAgICAgICBieXRlIHJlZkJ5dGVzW10gPSBudWxsOworCisgICAgICAgIFVuc3luY0J5dGVBcnJheU91dHB1dFN0cmVhbSBiYW9zID0gbmV3IFVuc3luY0J5dGVBcnJheU91dHB1dFN0cmVhbSgpOworICAgICAgICBieXRlIGJ1ZltdID0gbmV3IGJ5dGVbMTAyNF07CisgICAgICAgIGludCBsZW47CisKKyAgICAgICAgd2hpbGUgKChsZW4gPSBpbnB1dFN0cmVhbS5yZWFkKGJ1ZikpID4gMCkgeworICAgICAgICAgICAgYmFvcy53cml0ZShidWYsIDAsIGxlbik7CisgICAgICAgIH0KKworICAgICAgICByZWZCeXRlcyA9IGJhb3MudG9CeXRlQXJyYXkoKTsKKyAgICAgICAgcmV0dXJuIHJlZkJ5dGVzOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9SRkMyMjUzUGFyc2VyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvUkZDMjI1M1BhcnNlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0YzA1ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvUkZDMjI1M1BhcnNlci5qYXZhCkBAIC0wLDAgKzEsNTcwIEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlsczsKKworCisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uU3RyaW5nUmVhZGVyOworCisKKy8qKgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGNsYXNzIFJGQzIyNTNQYXJzZXIgeworCisgICAgCisgICAvKioge0BsaW5rIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nfSBsb2dnaW5nIGZhY2lsaXR5ICovCisgICAvKiBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZyhSRkMyMjUzUGFyc2VyLmNsYXNzLmdldE5hbWUoKSk7CisgICAqLworICAgIAorICAgc3RhdGljIGJvb2xlYW4gX1RPWE1MID0gdHJ1ZTsKKworICAgLyoqCisgICAgKiBNZXRob2QgcmZjMjI1M3RvWE1MZHNpZworICAgICoKKyAgICAqIEBwYXJhbSBkbgorICAgICogQHJldHVybiBub3JtYWxpemVkIHN0cmluZworICAgICoKKyAgICAqLworICAgcHVibGljIHN0YXRpYyBTdHJpbmcgcmZjMjI1M3RvWE1MZHNpZyhTdHJpbmcgZG4pIHsKKworICAgICAgX1RPWE1MID0gdHJ1ZTsKKworICAgICAgLy8gVHJhbnNmb3JtIGZyb20gUkZDMTc3OSB0byBSRkMyMjUzCisgICAgICBTdHJpbmcgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZShkbik7CisKKyAgICAgIHJldHVybiByZmN0b1hNTChub3JtYWxpemVkKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgeG1sZHNpZ3RvUkZDMjI1MworICAgICoKKyAgICAqIEBwYXJhbSBkbgorICAgICogQHJldHVybiBub3JtYWxpemVkIHN0cmluZworICAgICovCisgICBwdWJsaWMgc3RhdGljIFN0cmluZyB4bWxkc2lndG9SRkMyMjUzKFN0cmluZyBkbikgeworCisgICAgICBfVE9YTUwgPSBmYWxzZTsKKworICAgICAgLy8gVHJhbnNmb3JtIGZyb20gUkZDMTc3OSB0byBSRkMyMjUzCisgICAgICBTdHJpbmcgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZShkbik7CisKKyAgICAgIHJldHVybiB4bWx0b1JGQyhub3JtYWxpemVkKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2Qgbm9ybWFsaXplCisgICAgKgorICAgICogQHBhcmFtIGRuCisgICAgKiBAcmV0dXJuIG5vcm1hbGl6ZWQgc3RyaW5nCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIG5vcm1hbGl6ZShTdHJpbmcgZG4pIHsKKworICAgICAgLy9pZiBlbXB0eSBzdHJpbmcKKyAgICAgIGlmICgoZG4gPT0gbnVsbCkgfHwgZG4uZXF1YWxzKCIiKSkgeworICAgICAgICAgcmV0dXJuICIiOworICAgICAgfQorCisgICAgICB0cnkgeworICAgICAgICAgU3RyaW5nIF9ETiA9IHNlbWljb2xvblRvQ29tbWEoZG4pOworICAgICAgICAgU3RyaW5nQnVmZmVyIHNiID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAgaW50IGkgPSAwOworICAgICAgICAgaW50IGwgPSAwOworICAgICAgICAgaW50IGs7CisKKyAgICAgICAgIC8vZm9yIG5hbWUgY29tcG9uZW50CisgICAgICAgICBmb3IgKGludCBqID0gMDsgKGsgPSBfRE4uaW5kZXhPZigiLCIsIGopKSA+PSAwOyBqID0gayArIDEpIHsKKyAgICAgICAgICAgIGwgKz0gY291bnRRdW90ZXMoX0ROLCBqLCBrKTsKKworICAgICAgICAgICAgaWYgKChrID4gMCkgJiYgKF9ETi5jaGFyQXQoayAtIDEpICE9ICdcXCcpICYmIChsICUgMikgIT0gMSkgeworICAgICAgICAgICAgICAgc2IuYXBwZW5kKHBhcnNlUkROKF9ETi5zdWJzdHJpbmcoaSwgaykudHJpbSgpKSArICIsIik7CisKKyAgICAgICAgICAgICAgIGkgPSBrICsgMTsKKyAgICAgICAgICAgICAgIGwgPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgfQorCisgICAgICAgICBzYi5hcHBlbmQocGFyc2VSRE4odHJpbShfRE4uc3Vic3RyaW5nKGkpKSkpOworCisgICAgICAgICByZXR1cm4gc2IudG9TdHJpbmcoKTsKKyAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICByZXR1cm4gZG47CisgICAgICB9CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHBhcnNlUkROCisgICAgKgorICAgICogQHBhcmFtIHN0cgorICAgICogQHJldHVybiBub3JtYWxpemVkIHN0cmluZworICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorICAgICovCisgICBzdGF0aWMgU3RyaW5nIHBhcnNlUkROKFN0cmluZyBzdHIpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgIGludCBpID0gMDsKKyAgICAgIGludCBsID0gMDsKKyAgICAgIGludCBrOworCisgICAgICBmb3IgKGludCBqID0gMDsgKGsgPSBzdHIuaW5kZXhPZigiKyIsIGopKSA+PSAwOyBqID0gayArIDEpIHsKKyAgICAgICAgIGwgKz0gY291bnRRdW90ZXMoc3RyLCBqLCBrKTsKKworICAgICAgICAgaWYgKChrID4gMCkgJiYgKHN0ci5jaGFyQXQoayAtIDEpICE9ICdcXCcpICYmIChsICUgMikgIT0gMSkgeworICAgICAgICAgICAgc2IuYXBwZW5kKHBhcnNlQVRBVih0cmltKHN0ci5zdWJzdHJpbmcoaSwgaykpKSArICIrIik7CisKKyAgICAgICAgICAgIGkgPSBrICsgMTsKKyAgICAgICAgICAgIGwgPSAwOworICAgICAgICAgfQorICAgICAgfQorCisgICAgICBzYi5hcHBlbmQocGFyc2VBVEFWKHRyaW0oc3RyLnN1YnN0cmluZyhpKSkpKTsKKworICAgICAgcmV0dXJuIHNiLnRvU3RyaW5nKCk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHBhcnNlQVRBVgorICAgICoKKyAgICAqIEBwYXJhbSBzdHIKKyAgICAqIEByZXR1cm4gbm9ybWFsaXplZCBzdHJpbmcKKyAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAqLworICAgc3RhdGljIFN0cmluZyBwYXJzZUFUQVYoU3RyaW5nIHN0cikgdGhyb3dzIElPRXhjZXB0aW9uIHsKKworICAgICAgaW50IGkgPSBzdHIuaW5kZXhPZigiPSIpOworCisgICAgICBpZiAoKGkgPT0gLTEpIHx8ICgoaSA+IDApICYmIChzdHIuY2hhckF0KGkgLSAxKSA9PSAnXFwnKSkpIHsKKyAgICAgICAgIHJldHVybiBzdHI7CisgICAgICB9IAorICAgICAgU3RyaW5nIGF0dHJUeXBlID0gbm9ybWFsaXplQVQoc3RyLnN1YnN0cmluZygwLCBpKSk7CisgICAgICAvLyBvbmx5IG5vcm1hbGl6ZSBpZiB2YWx1ZSBpcyBhIFN0cmluZworICAgICAgU3RyaW5nIGF0dHJWYWx1ZSA9IG51bGw7CisgICAgICBpZiAoYXR0clR5cGUuY2hhckF0KDApID49ICcwJyAmJiBhdHRyVHlwZS5jaGFyQXQoMCkgPD0gJzknKSB7CisgICAgICAgICAgYXR0clZhbHVlID0gc3RyLnN1YnN0cmluZyhpICsgMSk7CisgICAgICB9IGVsc2UgeworICAgICAgICAgIGF0dHJWYWx1ZSA9IG5vcm1hbGl6ZVYoc3RyLnN1YnN0cmluZyhpICsgMSkpOworICAgICAgfQorCisgICAgICByZXR1cm4gYXR0clR5cGUgKyAiPSIgKyBhdHRyVmFsdWU7CisgICAgICAKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2Qgbm9ybWFsaXplQVQKKyAgICAqCisgICAgKiBAcGFyYW0gc3RyCisgICAgKiBAcmV0dXJuIG5vcm1hbGl6ZWQgc3RyaW5nCisgICAgKi8KKyAgIHN0YXRpYyBTdHJpbmcgbm9ybWFsaXplQVQoU3RyaW5nIHN0cikgeworCisgICAgICBTdHJpbmcgYXQgPSBzdHIudG9VcHBlckNhc2UoKS50cmltKCk7CisKKyAgICAgIGlmIChhdC5zdGFydHNXaXRoKCJPSUQiKSkgeworICAgICAgICAgYXQgPSBhdC5zdWJzdHJpbmcoMyk7CisgICAgICB9CisKKyAgICAgIHJldHVybiBhdDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2Qgbm9ybWFsaXplVgorICAgICoKKyAgICAqIEBwYXJhbSBzdHIKKyAgICAqIEByZXR1cm4gbm9ybWFsaXplZCBzdHJpbmcKKyAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAqLworICAgc3RhdGljIFN0cmluZyBub3JtYWxpemVWKFN0cmluZyBzdHIpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZyB2YWx1ZSA9IHRyaW0oc3RyKTsKKworICAgICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoIlwiIikpIHsKKyAgICAgICAgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgIFN0cmluZ1JlYWRlciBzciA9IG5ldyBTdHJpbmdSZWFkZXIodmFsdWUuc3Vic3RyaW5nKDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5sZW5ndGgoKSAtIDEpKTsKKyAgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgIGNoYXIgYzsKKworICAgICAgICAgZm9yICg7IChpID0gc3IucmVhZCgpKSA+IC0xOyApIHsKKyAgICAgICAgICAgIGMgPSAoY2hhcikgaTsKKworICAgICAgICAgICAgLy90aGUgZm9sbG93aW5nIGNoYXIgaXMgZGVmaW5lZCBhdCA0LlJlbGF0aW9uc2hpcCB3aXRoIFJGQzE3NzkgYW5kIExEQVB2MiBpbnJmYzIyNTMKKyAgICAgICAgICAgIGlmICgoYyA9PSAnLCcpIHx8IChjID09ICc9JykgfHwgKGMgPT0gJysnKSB8fCAoYyA9PSAnPCcpCisgICAgICAgICAgICAgICAgICAgIHx8IChjID09ICc+JykgfHwgKGMgPT0gJyMnKSB8fCAoYyA9PSAnOycpKSB7CisgICAgICAgICAgICAgICBzYi5hcHBlbmQoJ1xcJyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNiLmFwcGVuZChjKTsKKyAgICAgICAgIH0KKworICAgICAgICAgdmFsdWUgPSB0cmltKHNiLnRvU3RyaW5nKCkpOworICAgICAgfQorCisgICAgICBpZiAoX1RPWE1MID09IHRydWUpIHsKKyAgICAgICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCIjIikpIHsKKyAgICAgICAgICAgIHZhbHVlID0gJ1xcJyArIHZhbHVlOworICAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCJcXCMiKSkgeworICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zdWJzdHJpbmcoMSk7CisgICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHJldHVybiB2YWx1ZTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgcmZjdG9YTUwKKyAgICAqCisgICAgKiBAcGFyYW0gc3RyaW5nCisgICAgKiBAcmV0dXJuIG5vcm1hbGl6ZWQgc3RyaW5nCisgICAgKi8KKyAgIHN0YXRpYyBTdHJpbmcgcmZjdG9YTUwoU3RyaW5nIHN0cmluZykgeworCisgICAgICB0cnkgeworICAgICAgICAgU3RyaW5nIHMgPSBjaGFuZ2VMZXNzMzJ0b1hNTChzdHJpbmcpOworCisgICAgICAgICByZXR1cm4gY2hhbmdlV1N0b1hNTChzKTsKKyAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICByZXR1cm4gc3RyaW5nOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB4bWx0b1JGQworICAgICoKKyAgICAqIEBwYXJhbSBzdHJpbmcKKyAgICAqIEByZXR1cm4gbm9ybWFsaXplZCBzdHJpbmcKKyAgICAqLworICAgc3RhdGljIFN0cmluZyB4bWx0b1JGQyhTdHJpbmcgc3RyaW5nKSB7CisKKyAgICAgIHRyeSB7CisgICAgICAgICBTdHJpbmcgcyA9IGNoYW5nZUxlc3MzMnRvUkZDKHN0cmluZyk7CisKKyAgICAgICAgIHJldHVybiBjaGFuZ2VXU3RvUkZDKHMpOworICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgIHJldHVybiBzdHJpbmc7CisgICAgICB9CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGNoYW5nZUxlc3MzMnRvUkZDCisgICAgKgorICAgICogQHBhcmFtIHN0cmluZworICAgICogQHJldHVybiBub3JtYWxpemVkIHN0cmluZworICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorICAgICovCisgICBzdGF0aWMgU3RyaW5nIGNoYW5nZUxlc3MzMnRvUkZDKFN0cmluZyBzdHJpbmcpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgIFN0cmluZ1JlYWRlciBzciA9IG5ldyBTdHJpbmdSZWFkZXIoc3RyaW5nKTsKKyAgICAgIGludCBpID0gMDsKKyAgICAgIGNoYXIgYzsKKworICAgICAgZm9yICg7IChpID0gc3IucmVhZCgpKSA+IC0xOyApIHsKKyAgICAgICAgIGMgPSAoY2hhcikgaTsKKworICAgICAgICAgaWYgKGMgPT0gJ1xcJykgeworICAgICAgICAgICAgc2IuYXBwZW5kKGMpOworCisgICAgICAgICAgICBjaGFyIGMxID0gKGNoYXIpIHNyLnJlYWQoKTsKKyAgICAgICAgICAgIGNoYXIgYzIgPSAoY2hhcikgc3IucmVhZCgpOworCisgICAgICAgICAgICAvLzY1IChBKSA5NyAoYSkKKyAgICAgICAgICAgIGlmICgoKChjMSA+PSA0OCkgJiYgKGMxIDw9IDU3KSkgfHwgKChjMSA+PSA2NSkgJiYgKGMxIDw9IDcwKSkgfHwgKChjMSA+PSA5NykgJiYgKGMxIDw9IDEwMikpKQorICAgICAgICAgICAgICAgICAgICAmJiAoKChjMiA+PSA0OCkgJiYgKGMyIDw9IDU3KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoYzIgPj0gNjUpICYmIChjMiA8PSA3MCkpCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKGMyID49IDk3KSAmJiAoYzIgPD0gMTAyKSkpKSB7CisgICAgICAgICAgICAgICBjaGFyIGNoID0gKGNoYXIpIEJ5dGUucGFyc2VCeXRlKCIiICsgYzEgKyBjMiwgMTYpOworCisgICAgICAgICAgICAgICBzYi5hcHBlbmQoY2gpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgIHNiLmFwcGVuZChjMSk7CisgICAgICAgICAgICAgICBzYi5hcHBlbmQoYzIpOworICAgICAgICAgICAgfQorICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNiLmFwcGVuZChjKTsKKyAgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgcmV0dXJuIHNiLnRvU3RyaW5nKCk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGNoYW5nZUxlc3MzMnRvWE1MCisgICAgKgorICAgICogQHBhcmFtIHN0cmluZworICAgICogQHJldHVybiBub3JtYWxpemVkIHN0cmluZworICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorICAgICovCisgICBzdGF0aWMgU3RyaW5nIGNoYW5nZUxlc3MzMnRvWE1MKFN0cmluZyBzdHJpbmcpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgIFN0cmluZ1JlYWRlciBzciA9IG5ldyBTdHJpbmdSZWFkZXIoc3RyaW5nKTsKKyAgICAgIGludCBpID0gMDsKKworICAgICAgZm9yICg7IChpID0gc3IucmVhZCgpKSA+IC0xOyApIHsKKyAgICAgICAgIGlmIChpIDwgMzIpIHsKKyAgICAgICAgICAgIHNiLmFwcGVuZCgnXFwnKTsKKyAgICAgICAgICAgIHNiLmFwcGVuZChJbnRlZ2VyLnRvSGV4U3RyaW5nKGkpKTsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzYi5hcHBlbmQoKGNoYXIpIGkpOworICAgICAgICAgfQorICAgICAgfQorCisgICAgICByZXR1cm4gc2IudG9TdHJpbmcoKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgY2hhbmdlV1N0b1hNTAorICAgICoKKyAgICAqIEBwYXJhbSBzdHJpbmcKKyAgICAqIEByZXR1cm4gbm9ybWFsaXplZCBzdHJpbmcKKyAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAqLworICAgc3RhdGljIFN0cmluZyBjaGFuZ2VXU3RvWE1MKFN0cmluZyBzdHJpbmcpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgIFN0cmluZ1JlYWRlciBzciA9IG5ldyBTdHJpbmdSZWFkZXIoc3RyaW5nKTsKKyAgICAgIGludCBpID0gMDsKKyAgICAgIGNoYXIgYzsKKworICAgICAgZm9yICg7IChpID0gc3IucmVhZCgpKSA+IC0xOyApIHsKKyAgICAgICAgIGMgPSAoY2hhcikgaTsKKworICAgICAgICAgaWYgKGMgPT0gJ1xcJykgeworICAgICAgICAgICAgY2hhciBjMSA9IChjaGFyKSBzci5yZWFkKCk7CisKKyAgICAgICAgICAgIGlmIChjMSA9PSAnICcpIHsKKyAgICAgICAgICAgICAgIHNiLmFwcGVuZCgnXFwnKTsKKworICAgICAgICAgICAgICAgU3RyaW5nIHMgPSAiMjAiOworCisgICAgICAgICAgICAgICBzYi5hcHBlbmQocyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgc2IuYXBwZW5kKCdcXCcpOworICAgICAgICAgICAgICAgc2IuYXBwZW5kKGMxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzYi5hcHBlbmQoYyk7CisgICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHJldHVybiBzYi50b1N0cmluZygpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBjaGFuZ2VXU3RvUkZDCisgICAgKgorICAgICogQHBhcmFtIHN0cmluZworICAgICogQHJldHVybiBub3JtYWxpemVkIHN0cmluZworICAgICovCisgICBzdGF0aWMgU3RyaW5nIGNoYW5nZVdTdG9SRkMoU3RyaW5nIHN0cmluZykgeworCisgICAgICBTdHJpbmdCdWZmZXIgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICBpbnQgaSA9IDA7CisgICAgICBpbnQgazsKKworICAgICAgZm9yIChpbnQgaiA9IDA7IChrID0gc3RyaW5nLmluZGV4T2YoIlxcMjAiLCBqKSkgPj0gMDsgaiA9IGsgKyAzKSB7CisgICAgICAgICBzYi5hcHBlbmQodHJpbShzdHJpbmcuc3Vic3RyaW5nKGksIGspKSArICJcXCAiKTsKKworICAgICAgICAgaSA9IGsgKyAzOworICAgICAgfQorCisgICAgICBzYi5hcHBlbmQoc3RyaW5nLnN1YnN0cmluZyhpKSk7CisKKyAgICAgIHJldHVybiBzYi50b1N0cmluZygpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBzZW1pY29sb25Ub0NvbW1hCisgICAgKgorICAgICogQHBhcmFtIHN0cgorICAgICogQHJldHVybiBub3JtYWxpemVkIHN0cmluZworICAgICovCisgICBzdGF0aWMgU3RyaW5nIHNlbWljb2xvblRvQ29tbWEoU3RyaW5nIHN0cikgeworICAgICAgcmV0dXJuIHJlbW92ZVdTYW5kUmVwbGFjZShzdHIsICI7IiwgIiwiKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgcmVtb3ZlV2hpdGVTcGFjZQorICAgICoKKyAgICAqIEBwYXJhbSBzdHIKKyAgICAqIEBwYXJhbSBzeW1ib2wKKyAgICAqIEByZXR1cm4gbm9ybWFsaXplZCBzdHJpbmcKKyAgICAqLworICAgc3RhdGljIFN0cmluZyByZW1vdmVXaGl0ZVNwYWNlKFN0cmluZyBzdHIsIFN0cmluZyBzeW1ib2wpIHsKKyAgICAgIHJldHVybiByZW1vdmVXU2FuZFJlcGxhY2Uoc3RyLCBzeW1ib2wsIHN5bWJvbCk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHJlbW92ZVdTYW5kUmVwbGFjZQorICAgICoKKyAgICAqIEBwYXJhbSBzdHIKKyAgICAqIEBwYXJhbSBzeW1ib2wKKyAgICAqIEBwYXJhbSByZXBsYWNlCisgICAgKiBAcmV0dXJuIG5vcm1hbGl6ZWQgc3RyaW5nCisgICAgKi8KKyAgIHN0YXRpYyBTdHJpbmcgcmVtb3ZlV1NhbmRSZXBsYWNlKFN0cmluZyBzdHIsIFN0cmluZyBzeW1ib2wsIFN0cmluZyByZXBsYWNlKSB7CisKKyAgICAgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgIGludCBpID0gMDsKKyAgICAgIGludCBsID0gMDsKKyAgICAgIGludCBrOworCisgICAgICBmb3IgKGludCBqID0gMDsgKGsgPSBzdHIuaW5kZXhPZihzeW1ib2wsIGopKSA+PSAwOyBqID0gayArIDEpIHsKKyAgICAgICAgIGwgKz0gY291bnRRdW90ZXMoc3RyLCBqLCBrKTsKKworICAgICAgICAgaWYgKChrID4gMCkgJiYgKHN0ci5jaGFyQXQoayAtIDEpICE9ICdcXCcpICYmIChsICUgMikgIT0gMSkgeworICAgICAgICAgICAgc2IuYXBwZW5kKHRyaW0oc3RyLnN1YnN0cmluZyhpLCBrKSkgKyByZXBsYWNlKTsKKworICAgICAgICAgICAgaSA9IGsgKyAxOworICAgICAgICAgICAgbCA9IDA7CisgICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHNiLmFwcGVuZCh0cmltKHN0ci5zdWJzdHJpbmcoaSkpKTsKKworICAgICAgcmV0dXJuIHNiLnRvU3RyaW5nKCk7CisgICB9CisKKyAgIC8qKgorICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIFF1b3RhdGlvbiBmcm9tIGkgdG8gagorICAgICoKKyAgICAqIEBwYXJhbSBzCisgICAgKiBAcGFyYW0gaQorICAgICogQHBhcmFtIGoKKyAgICAqIEByZXR1cm4gbnVtYmVyIG9mIHF1b3RlcworICAgICovCisgICBwcml2YXRlIHN0YXRpYyBpbnQgY291bnRRdW90ZXMoU3RyaW5nIHMsIGludCBpLCBpbnQgaikgeworCisgICAgICBpbnQgayA9IDA7CisKKyAgICAgIGZvciAoaW50IGwgPSBpOyBsIDwgajsgbCsrKSB7CisgICAgICAgICBpZiAocy5jaGFyQXQobCkgPT0gJyInKSB7CisgICAgICAgICAgICBrKys7CisgICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHJldHVybiBrOworICAgfQorCisgICAvL29ubHkgZm9yIHRoZSBlbmQgb2YgYSBzcGFjZSBjaGFyYWN0ZXIgb2NjdXJyaW5nIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyBmcm9tIHJmYzIyNTMKKworICAgLyoqCisgICAgKiBNZXRob2QgdHJpbQorICAgICoKKyAgICAqIEBwYXJhbSBzdHIKKyAgICAqIEByZXR1cm4gdGhlIHN0cmluZworICAgICovCisgICBzdGF0aWMgU3RyaW5nIHRyaW0oU3RyaW5nIHN0cikgeworCisgICAgICBTdHJpbmcgdHJpbWVkID0gc3RyLnRyaW0oKTsKKyAgICAgIGludCBpID0gc3RyLmluZGV4T2YodHJpbWVkKSArIHRyaW1lZC5sZW5ndGgoKTsKKworICAgICAgaWYgKChzdHIubGVuZ3RoKCkgPiBpKSAmJiB0cmltZWQuZW5kc1dpdGgoIlxcIikKKyAgICAgICAgICAgICAgJiYhdHJpbWVkLmVuZHNXaXRoKCJcXFxcIikpIHsKKyAgICAgICAgIGlmIChzdHIuY2hhckF0KGkpID09ICcgJykgeworICAgICAgICAgICAgdHJpbWVkID0gdHJpbWVkICsgIiAiOworICAgICAgICAgfQorICAgICAgfQorCisgICAgICByZXR1cm4gdHJpbWVkOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWluCisgICAgKgorICAgICogQHBhcmFtIGFyZ3MKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICB0ZXN0VG9YTUwoIkNOPVwiU3RldmUsIEtpbGxlXCIsICBPPUlzb2RlIExpbWl0ZWQsIEM9R0IiKTsKKyAgICAgIHRlc3RUb1hNTCgiQ049U3RldmUgS2lsbGUgICAgLCAgIE89SXNvZGUgTGltaXRlZCxDPUdCIik7CisgICAgICB0ZXN0VG9YTUwoIlxcIE9VPVNhbGVzK0NOPUouIFNtaXRoLE89V2lkZ2V0IEluYy4sQz1VU1xcIFxcICIpOworICAgICAgdGVzdFRvWE1MKCJDTj1MLiBFYWdsZSxPPVN1ZVxcLCBHcmFiYml0IGFuZCBSdW5uLEM9R0IiKTsKKyAgICAgIHRlc3RUb1hNTCgiQ049QmVmb3JlXFwwREFmdGVyLE89VGVzdCxDPUdCIik7CisgICAgICB0ZXN0VG9YTUwoIkNOPVwiTC4gRWFnbGUsTz1TdWUsID0gKyA8ID4gIyA7R3JhYmJpdCBhbmQgUnVublwiLEM9R0IiKTsKKyAgICAgIHRlc3RUb1hNTCgiMS4zLjYuMS40LjEuMTQ2Ni4wPSMwNDAyNDg2OSxPPVRlc3QsQz1HQiIpOworCisgICAgICB7CisgICAgICAgICBTdHJpbmdCdWZmZXIgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisKKyAgICAgICAgIHNiLmFwcGVuZCgnTCcpOworICAgICAgICAgc2IuYXBwZW5kKCd1Jyk7CisgICAgICAgICBzYi5hcHBlbmQoJ1x1YzQ4ZCcpOworICAgICAgICAgc2IuYXBwZW5kKCdpJyk7CisgICAgICAgICBzYi5hcHBlbmQoJ1x1YzQ4NycpOworCisgICAgICAgICBTdHJpbmcgdGVzdDcgPSAiU049IiArIHNiLnRvU3RyaW5nKCk7CisKKyAgICAgICAgIHRlc3RUb1hNTCh0ZXN0Nyk7CisgICAgICB9CisKKyAgICAgIHRlc3RUb1JGQygiQ049XCJTdGV2ZSwgS2lsbGVcIiwgIE89SXNvZGUgTGltaXRlZCwgQz1HQiIpOworICAgICAgdGVzdFRvUkZDKCJDTj1TdGV2ZSBLaWxsZSAgICAsICAgTz1Jc29kZSBMaW1pdGVkLEM9R0IiKTsKKyAgICAgIHRlc3RUb1JGQygiXFwyME9VPVNhbGVzK0NOPUouIFNtaXRoLE89V2lkZ2V0IEluYy4sQz1VU1xcMjBcXDIwICIpOworICAgICAgdGVzdFRvUkZDKCJDTj1MLiBFYWdsZSxPPVN1ZVxcLCBHcmFiYml0IGFuZCBSdW5uLEM9R0IiKTsKKyAgICAgIHRlc3RUb1JGQygiQ049QmVmb3JlXFwxMkFmdGVyLE89VGVzdCxDPUdCIik7CisgICAgICB0ZXN0VG9SRkMoIkNOPVwiTC4gRWFnbGUsTz1TdWUsID0gKyA8ID4gIyA7R3JhYmJpdCBhbmQgUnVublwiLEM9R0IiKTsKKyAgICAgIHRlc3RUb1JGQygiMS4zLjYuMS40LjEuMTQ2Ni4wPVxcIzA0MDI0ODY5LE89VGVzdCxDPUdCIik7CisKKyAgICAgIHsKKyAgICAgICAgIFN0cmluZ0J1ZmZlciBzYiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKworICAgICAgICAgc2IuYXBwZW5kKCdMJyk7CisgICAgICAgICBzYi5hcHBlbmQoJ3UnKTsKKyAgICAgICAgIHNiLmFwcGVuZCgnXHVjNDhkJyk7CisgICAgICAgICBzYi5hcHBlbmQoJ2knKTsKKyAgICAgICAgIHNiLmFwcGVuZCgnXHVjNDg3Jyk7CisKKyAgICAgICAgIFN0cmluZyB0ZXN0NyA9ICJTTj0iICsgc2IudG9TdHJpbmcoKTsKKworICAgICAgICAgdGVzdFRvUkZDKHRlc3Q3KTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqIEZpZWxkIGkgKi8KKyAgIHN0YXRpYyBpbnQgY291bnRlciA9IDA7CisKKyAgIC8qKgorICAgICogTWV0aG9kIHRlc3QKKyAgICAqCisgICAgKiBAcGFyYW0gc3QKKyAgICAqLworICAgc3RhdGljIHZvaWQgdGVzdFRvWE1MKFN0cmluZyBzdCkgeworCisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInN0YXJ0ICIgKyBjb3VudGVyKysgKyAiOiAiICsgc3QpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIgICAgICAgICAiICsgcmZjMjI1M3RvWE1MZHNpZyhzdCkpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdFRvUkZDCisgICAgKgorICAgICogQHBhcmFtIHN0CisgICAgKi8KKyAgIHN0YXRpYyB2b2lkIHRlc3RUb1JGQyhTdHJpbmcgc3QpIHsKKworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJzdGFydCAiICsgY291bnRlcisrICsgIjogIiArIHN0KTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICAgICAgICAgIiArIHhtbGRzaWd0b1JGQzIyNTMoc3QpKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvU2lnbmF0dXJlRWxlbWVudFByb3h5LmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvU2lnbmF0dXJlRWxlbWVudFByb3h5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzEzODk1ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9TaWduYXR1cmVFbGVtZW50UHJveHkuamF2YQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlsczsKKworCisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLlhNTFNlY3VyaXR5RXhjZXB0aW9uOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CisKKworLyoqCisgKiBDbGFzcyBTaWduYXR1cmVFbGVtZW50UHJveHkKKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKiBAdmVyc2lvbiAkUmV2aXNpb24kCisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBTaWduYXR1cmVFbGVtZW50UHJveHkgZXh0ZW5kcyBFbGVtZW50UHJveHkgeworCXByb3RlY3RlZCBTaWduYXR1cmVFbGVtZW50UHJveHkoKSB7CisJfTsKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgU2lnbmF0dXJlRWxlbWVudFByb3h5CisgICAgKgorICAgICogQHBhcmFtIGRvYworICAgICovCisgICBwdWJsaWMgU2lnbmF0dXJlRWxlbWVudFByb3h5KERvY3VtZW50IGRvYykgeworCSAgICAgIGlmIChkb2MgPT0gbnVsbCkgeworCSAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJEb2N1bWVudCBpcyBudWxsIik7CisJICAgICAgfQorCisJICAgICAgdGhpcy5fZG9jID0gZG9jOworCSAgICAgIHRoaXMuX2NvbnN0cnVjdGlvbkVsZW1lbnQgPSAgWE1MVXRpbHMuY3JlYXRlRWxlbWVudEluU2lnbmF0dXJlU3BhY2UodGhpcy5fZG9jLAorCSAgICAJCSAgIHRoaXMuZ2V0QmFzZUxvY2FsTmFtZSgpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBTaWduYXR1cmVFbGVtZW50UHJveHkKKyAgICAqCisgICAgKiBAcGFyYW0gZWxlbWVudAorICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIFNpZ25hdHVyZUVsZW1lbnRQcm94eShFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJKQorICAgICAgICAgICB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24geworICAgICAgc3VwZXIoZWxlbWVudCwgQmFzZVVSSSk7CisKKyAgIH0KKworICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwdWJsaWMgU3RyaW5nIGdldEJhc2VOYW1lc3BhY2UoKSB7CisgICAgICByZXR1cm4gQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUzsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9TaWduZXJPdXRwdXRTdHJlYW0uamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9TaWduZXJPdXRwdXRTdHJlYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzA1ZmRlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL1NpZ25lck91dHB1dFN0cmVhbS5qYXZhCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMTk5OS0yMDA4IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHM7CisKK2ltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmFsZ29yaXRobXMuU2lnbmF0dXJlQWxnb3JpdGhtOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmVFeGNlcHRpb247CisKKy8qKgorICogQGF1dGhvciByYXVsCisgKgorICovCitwdWJsaWMgY2xhc3MgU2lnbmVyT3V0cHV0U3RyZWFtIGV4dGVuZHMgQnl0ZUFycmF5T3V0cHV0U3RyZWFtIHsKKyAgICBmaW5hbCBTaWduYXR1cmVBbGdvcml0aG0gc2E7CisgICAgc3RhdGljIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZyBsb2cgPQorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZworICAgICAgICAoU2lnbmVyT3V0cHV0U3RyZWFtLmNsYXNzLmdldE5hbWUoKSk7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gc2EKKyAgICAgKi8KKyAgICBwdWJsaWMgU2lnbmVyT3V0cHV0U3RyZWFtKFNpZ25hdHVyZUFsZ29yaXRobSBzYSkgeworICAgICAgICB0aGlzLnNhPXNhOyAgICAgICAKKyAgICB9CisKKyAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICBwdWJsaWMgdm9pZCB3cml0ZShieXRlW10gYXJnMCkgIHsKKyAgICAgICAgdHJ5IHsKKwkgICAgc2EudXBkYXRlKGFyZzApOworCX0gY2F0Y2ggKFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiIitlKTsKKwl9CisgICAgfQorICAgIAorICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgIHB1YmxpYyB2b2lkIHdyaXRlKGludCBhcmcwKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzYS51cGRhdGUoKGJ5dGUpYXJnMCk7CisgICAgICAgIH0gY2F0Y2ggKFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiIitlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICBwdWJsaWMgdm9pZCB3cml0ZShieXRlW10gYXJnMCwgaW50IGFyZzEsIGludCBhcmcyKSB7CisgICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkgeworICAgICAgICAgICAgbG9nLmRlYnVnKCJDYW5vbmljYWxpemVkIFNpZ25lZEluZm86Iik7CisgICAgICAgICAgICBTdHJpbmdCdWZmZXIgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKGFyZzIpOworICAgICAgICAgICAgZm9yIChpbnQgaT1hcmcxOyBpPChhcmcxK2FyZzIpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBzYi5hcHBlbmQoKGNoYXIpIGFyZzBbaV0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbG9nLmRlYnVnKHNiLnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzYS51cGRhdGUoYXJnMCxhcmcxLGFyZzIpOworICAgICAgICB9IGNhdGNoIChYTUxTaWduYXR1cmVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIiIrZSk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvVW5zeW5jQnVmZmVyZWRPdXRwdXRTdHJlYW0uamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9VbnN5bmNCdWZmZXJlZE91dHB1dFN0cmVhbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjYjM0ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvVW5zeW5jQnVmZmVyZWRPdXRwdXRTdHJlYW0uamF2YQpAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IDE5OTktMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKKworLyoqCisgKiBBIGNsYXNzIHRoYXQgYnVmZmVycyB3cml0dGUgd2l0aG91dCBzeW5jaHJvbml6ZSBpdHMgbWV0aG9kcworICogQGF1dGhvciByYXVsCisgKgorICovCitwdWJsaWMgY2xhc3MgVW5zeW5jQnVmZmVyZWRPdXRwdXRTdHJlYW0gZXh0ZW5kcyBPdXRwdXRTdHJlYW0geworCWZpbmFsIE91dHB1dFN0cmVhbSBvdXQ7CisJCisJZmluYWwgYnl0ZVtdIGJ1ZjsKKwlzdGF0aWMgZmluYWwgaW50IHNpemU9OCoxMDI0OworCXByaXZhdGUgc3RhdGljIFRocmVhZExvY2FsIGJ1ZkNhaGNlID0gbmV3IFRocmVhZExvY2FsKCkgeworICAgICAgICBwcm90ZWN0ZWQgc3luY2hyb25pemVkIE9iamVjdCBpbml0aWFsVmFsdWUoKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IGJ5dGVbc2l6ZV07CisgICAgICAgIH0KKyAgICB9OworCWludCBwb2ludGVyPTA7CisJLyoqCisJICogQ3JlYXRlcyBhIGJ1ZmZlcmVkIG91dHB1dCBzdHJlYW0gd2l0aG91dCBzeW5jaHJvbml6YXRpb24KKwkgKiBAcGFyYW0gb3V0IHRoZSBvdXRwdXRzdHJlYW0gdG8gYnVmZmVyCisJICovCisJcHVibGljIFVuc3luY0J1ZmZlcmVkT3V0cHV0U3RyZWFtKE91dHB1dFN0cmVhbSBvdXQpIHsKKwkJYnVmPShieXRlW10pYnVmQ2FoY2UuZ2V0KCk7CisJCXRoaXMub3V0PW91dDsKKwl9CisJCisJLyoqIEBpbmhlcml0RG9jICovCisJcHVibGljIHZvaWQgd3JpdGUoYnl0ZVtdIGFyZzApIHRocm93cyBJT0V4Y2VwdGlvbiB7CisJCXdyaXRlKGFyZzAsMCxhcmcwLmxlbmd0aCk7CisJfQorCQorCS8qKiBAaW5oZXJpdERvYyAqLworCXB1YmxpYyB2b2lkIHdyaXRlKGJ5dGVbXSBhcmcwLCBpbnQgYXJnMSwgaW50IGxlbikgdGhyb3dzIElPRXhjZXB0aW9uIHsKKwkJaW50IG5ld0xlbj1wb2ludGVyK2xlbjsKKwkJaWYgKG5ld0xlbj4gc2l6ZSkgeworCQkJZmx1c2hCdWZmZXIoKTsJCQorCQkJaWYgKGxlbj5zaXplKSB7CisJCQkJb3V0LndyaXRlKGFyZzAsYXJnMSxsZW4pOworCQkJCXJldHVybjsKKwkJCX0KKwkJCW5ld0xlbj1sZW47CisJCX0KKwkJU3lzdGVtLmFycmF5Y29weShhcmcwLGFyZzEsYnVmLHBvaW50ZXIsbGVuKTsKKwkJcG9pbnRlcj1uZXdMZW47CisJfQorCQorCXByaXZhdGUgZmluYWwgdm9pZCBmbHVzaEJ1ZmZlcigpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisJCWlmIChwb2ludGVyPjApCisJCQlvdXQud3JpdGUoYnVmLDAscG9pbnRlcik7CisJCXBvaW50ZXI9MDsKKwkJCisJfQorCQorCS8qKiBAaW5oZXJpdERvYyAqLworCXB1YmxpYyB2b2lkIHdyaXRlKGludCBhcmcwKSB0aHJvd3MgSU9FeGNlcHRpb24gewkJCisJCWlmIChwb2ludGVyPj0gc2l6ZSkgeworCQkJZmx1c2hCdWZmZXIoKTsKKwkJfQorCQlidWZbcG9pbnRlcisrXT0oYnl0ZSlhcmcwOworCisJfQorCQorCS8qKiBAaW5oZXJpdERvYyAqLwkKKwlwdWJsaWMgdm9pZCBmbHVzaCgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisJCWZsdXNoQnVmZmVyKCk7CisJCW91dC5mbHVzaCgpOworCX0KKworCS8qKiBAaW5oZXJpdERvYyAqLworCXB1YmxpYyB2b2lkIGNsb3NlKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKwkJZmx1c2goKTsJCQkJCisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvVW5zeW5jQnl0ZUFycmF5T3V0cHV0U3RyZWFtLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvVW5zeW5jQnl0ZUFycmF5T3V0cHV0U3RyZWFtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmM3OTFjMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9VbnN5bmNCeXRlQXJyYXlPdXRwdXRTdHJlYW0uamF2YQpAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlsczsKKworaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOworCisvKioKKyAqIEEgc2ltcGxlIFVuc3luY2VkIEJ5dGVBcnJ5T3V0cHV0U3RyZWFtCisgKiBAYXV0aG9yIHJhdWwKKyAqCisgKi8KK3B1YmxpYyBjbGFzcyBVbnN5bmNCeXRlQXJyYXlPdXRwdXRTdHJlYW0gZXh0ZW5kcyBPdXRwdXRTdHJlYW0gIHsJCisJcHJpdmF0ZSBzdGF0aWMgVGhyZWFkTG9jYWwgYnVmQ2FoY2UgPSBuZXcgVGhyZWFkTG9jYWwoKSB7CisgICAgICAgIHByb3RlY3RlZCBzeW5jaHJvbml6ZWQgT2JqZWN0IGluaXRpYWxWYWx1ZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgYnl0ZVs4KjEwMjRdOworICAgICAgICB9ICAgICAgICAKKyAgICB9OworICAgIGJ5dGVbXSBidWY7CisJaW50IHNpemU9OCoxMDI0Oy8vYnVmLmxlbmd0aDsJCisJaW50IHBvcz0wOworCS8qKiBAaW5oZXJpdERvYyAqLworCXB1YmxpYyBVbnN5bmNCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKSB7CisJCWJ1Zj0oYnl0ZVtdKWJ1ZkNhaGNlLmdldCgpOworCX0KKwlwdWJsaWMgdm9pZCB3cml0ZShieXRlW10gYXJnMCkgeworCQlpbnQgbmV3UG9zPXBvcythcmcwLmxlbmd0aDsKKwkJaWYgKG5ld1Bvcz5zaXplKSB7CisJCQlleHBhbmRTaXplKCk7CisJCX0KKwkJU3lzdGVtLmFycmF5Y29weShhcmcwLDAsYnVmLHBvcyxhcmcwLmxlbmd0aCk7CisJCXBvcz1uZXdQb3M7CisJfQorCS8qKiBAaW5oZXJpdERvYyAqLworCXB1YmxpYyB2b2lkIHdyaXRlKGJ5dGVbXSBhcmcwLCBpbnQgYXJnMSwgaW50IGFyZzIpIHsKKwkJaW50IG5ld1Bvcz1wb3MrYXJnMjsKKwkJaWYgKG5ld1Bvcz5zaXplKSB7CisJCQlleHBhbmRTaXplKCk7CisJCX0KKwkJU3lzdGVtLmFycmF5Y29weShhcmcwLGFyZzEsYnVmLHBvcyxhcmcyKTsKKwkJcG9zPW5ld1BvczsKKwl9CisJLyoqIEBpbmhlcml0RG9jICovCisJcHVibGljIHZvaWQgd3JpdGUoaW50IGFyZzApIHsJCQorCQlpZiAocG9zPj1zaXplKSB7CisJCQlleHBhbmRTaXplKCk7CisJCX0KKwkJYnVmW3BvcysrXT0oYnl0ZSlhcmcwOwkJCisJfQorCS8qKiBAaW5oZXJpdERvYyAqLworCXB1YmxpYyBieXRlW10gdG9CeXRlQXJyYXkoKSB7CisJCWJ5dGUgcmVzdWx0W109bmV3IGJ5dGVbcG9zXTsKKwkJU3lzdGVtLmFycmF5Y29weShidWYsMCxyZXN1bHQsMCxwb3MpOworCQlyZXR1cm4gcmVzdWx0OworCX0KKwkKKwkvKiogQGluaGVyaXREb2MgKi8KKwlwdWJsaWMgdm9pZCByZXNldCgpIHsKKwkJcG9zPTA7CisJfQorCQorCS8qKiBAaW5oZXJpdERvYyAqLworCXZvaWQgZXhwYW5kU2l6ZSgpIHsKKwkJaW50IG5ld1NpemU9c2l6ZTw8MjsKKwkJYnl0ZSBuZXdCdWZbXT1uZXcgYnl0ZVtuZXdTaXplXTsKKwkJU3lzdGVtLmFycmF5Y29weShidWYsMCxuZXdCdWYsMCxwb3MpOwkJCisJCWJ1Zj1uZXdCdWY7CisJCXNpemU9bmV3U2l6ZTsKKwkJCisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL1hNTFV0aWxzLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvWE1MVXRpbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjFkNjhkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL1hNTFV0aWxzLmphdmEKQEAgLTAsMCArMSw3MjMgQEAKKworLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHM7CisKKworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LkFjY2Vzc0NvbnRyb2xsZXI7CitpbXBvcnQgamF2YS5zZWN1cml0eS5Qcml2aWxlZ2VkQWN0aW9uOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkNhbm9uaWNhbGl6YXRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5DYW5vbmljYWxpemVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb247CitpbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5hbWVkTm9kZU1hcDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OworaW1wb3J0IG9yZy53M2MuZG9tLlRleHQ7CisKKworCisvKioKKyAqIERPTSBhbmQgWE1MIGFjY2Vzc2liaWxpdHkgYW5kIGNvbWZvcnQgZnVuY3Rpb25zLgorICoKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEdldWVyLVBvbGxtYW5uCisgKi8KK3B1YmxpYyBjbGFzcyBYTUxVdGlscyB7CisKKyAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaWdub3JlTGluZUJyZWFrcyA9ICgoQm9vbGVhbikKKyAgICAgIEFjY2Vzc0NvbnRyb2xsZXIuZG9Qcml2aWxlZ2VkKG5ldyBQcml2aWxlZ2VkQWN0aW9uKCkgeworICAgICAgICAgcHVibGljIE9iamVjdCBydW4oKSB7CisgICAgICAgICAgICByZXR1cm4gQm9vbGVhbi52YWx1ZU9mKEJvb2xlYW4uZ2V0Qm9vbGVhbgorCSAgICAgICAoIm9yZy5hcGFjaGUueG1sLnNlY3VyaXR5Lmlnbm9yZUxpbmVCcmVha3MiKSk7CisgICAgICAgICB9CisgICAgICB9KSkuYm9vbGVhblZhbHVlKCk7CisJCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFhNTFV0aWxzCisgICAgKgorICAgICovCisgICBwcml2YXRlIFhNTFV0aWxzKCkgeworCisgICAgICAvLyB3ZSBkb24ndCBhbGxvdyBpbnN0YW50aWF0aW9uCisgICB9CisgICBwdWJsaWMgc3RhdGljIEVsZW1lbnQgZ2V0TmV4dEVsZW1lbnQoTm9kZSBlbCkgeworCSAgIHdoaWxlICgoZWwhPW51bGwpICYmIChlbC5nZXROb2RlVHlwZSgpIT1Ob2RlLkVMRU1FTlRfTk9ERSkpIHsKKwkJICAgZWw9ZWwuZ2V0TmV4dFNpYmxpbmcoKTsKKwkgICB9CisJICAgcmV0dXJuIChFbGVtZW50KWVsOworCSAgIAorICAgfQorICAgCisgICAvKioKKyAgICAqIEBwYXJhbSByb290Tm9kZQorICAgICogQHBhcmFtIHJlc3VsdAorICAgICogQHBhcmFtIGV4Y2x1ZGUKKyAgICAqIEBwYXJhbSBjb20gd2hlYXRoZXIgY29tbWVudHMgb3Igbm90CisgICAgKi8gICAKKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBnZXRTZXQoTm9kZSByb290Tm9kZSxTZXQgcmVzdWx0LE5vZGUgZXhjbHVkZSAsYm9vbGVhbiBjb20pIHsKKyAgIAkgIGlmICgoZXhjbHVkZSE9bnVsbCkgJiYgaXNEZXNjZW5kYW50T3JTZWxmKGV4Y2x1ZGUscm9vdE5vZGUpKXsKKyAgIAkgIAlyZXR1cm47CisgICAgICB9CisgICAgICBnZXRTZXRSZWMocm9vdE5vZGUscmVzdWx0LGV4Y2x1ZGUsY29tKTsKKyAgIH0KKyAgIHN0YXRpYyBmaW5hbCB2b2lkIGdldFNldFJlYyhmaW5hbCBOb2RlIHJvb3ROb2RlLGZpbmFsIFNldCByZXN1bHQsCisgICAgICAgIGZpbmFsIE5vZGUgZXhjbHVkZSAsZmluYWwgYm9vbGVhbiBjb20pIHsKKyAgIAkgICAvL1NldCByZXN1bHQgPSBuZXcgSGFzaFNldCgpOworICAgICAgIGlmIChyb290Tm9kZT09ZXhjbHVkZSkgeworICAgICAgICAgIHJldHVybjsKKyAgICAgICB9CisgICAJICAgc3dpdGNoIChyb290Tm9kZS5nZXROb2RlVHlwZSgpKSB7ICAgCSAgIAkJICAgCSAgIAkJCQorICAgCSAgIAljYXNlIE5vZGUuRUxFTUVOVF9OT0RFOgorICAgCSAgIAkJCXJlc3VsdC5hZGQocm9vdE5vZGUpOworICAgCSAgIAkgICAgICAgIEVsZW1lbnQgZWw9KEVsZW1lbnQpcm9vdE5vZGU7CisgICAgICAgICAgICAgICAgaWYgKGVsLmhhc0F0dHJpYnV0ZXMoKSkgeworICAgCSAgIAkJICAgICAgICBOYW1lZE5vZGVNYXAgbmwgPSAoKEVsZW1lbnQpcm9vdE5vZGUpLmdldEF0dHJpYnV0ZXMoKTsKKyAgIAkgICAJCSAgICAgICAgZm9yIChpbnQgaT0wO2k8bmwuZ2V0TGVuZ3RoKCk7aSsrKSB7CisgICAJICAgCQkgICAgICAgIAlyZXN1bHQuYWRkKG5sLml0ZW0oaSkpOworICAgCSAgIAkJICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vbm8gcmV0dXJuIGtlZXAgd29ya2luZworICAgCSAgIAljYXNlIE5vZGUuRE9DVU1FTlRfTk9ERTogICAJICAgCQkJCisgICAJICAgCQkJZm9yIChOb2RlIHI9cm9vdE5vZGUuZ2V0Rmlyc3RDaGlsZCgpO3IhPW51bGw7cj1yLmdldE5leHRTaWJsaW5nKCkpeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgCSAgIAkJCQlpZiAoci5nZXROb2RlVHlwZSgpPT1Ob2RlLlRFWFRfTk9ERSkgeworICAgCSAgIAkJCQkJcmVzdWx0LmFkZChyKTsgCisgICAJICAgCQkJCQl3aGlsZSAoKHIhPW51bGwpICYmIChyLmdldE5vZGVUeXBlKCk9PU5vZGUuVEVYVF9OT0RFKSkgeworICAgCSAgIAkJCQkJCXI9ci5nZXROZXh0U2libGluZygpOworICAgCSAgIAkJCQkJfQorICAgCSAgIAkJCQkJaWYgKHI9PW51bGwpCisgICAJICAgCQkJCQkJcmV0dXJuOworICAgCSAgIAkJCQl9ICAKKyAgIAkgICAJCQkJZ2V0U2V0UmVjKHIscmVzdWx0LGV4Y2x1ZGUsY29tKTsgICAgICAgICAgICAgICAgCisgICAJICAgCQkJfQorICAgCSAgIAkJCXJldHVybjsKKyAgIAkgICAJCWNhc2UgTm9kZS5DT01NRU5UX05PREU6CisgICAJICAgCQkJaWYgKGNvbSkgeworICAgCSAgIAkJCQlyZXN1bHQuYWRkKHJvb3ROb2RlKTsKKyAgIAkgICAJCQl9CisgICAJICAgCQkgICAgcmV0dXJuOworICAgCSAgIAkJY2FzZSBOb2RlLkRPQ1VNRU5UX1RZUEVfTk9ERToKKyAgIAkgICAJCQlyZXR1cm47CisgICAJICAgCQlkZWZhdWx0OgorICAgCSAgIAkJCXJlc3VsdC5hZGQocm9vdE5vZGUpOworICAgCSAgIH0KKyAgIAkgICByZXR1cm47CisgICB9CisKKworICAgLyoqCisgICAgKiBPdXRwdXRzIGEgRE9NIHRyZWUgdG8gYW4ge0BsaW5rIE91dHB1dFN0cmVhbX0uCisgICAgKgorICAgICogQHBhcmFtIGNvbnRleHROb2RlIHJvb3Qgbm9kZSBvZiB0aGUgRE9NIHRyZWUKKyAgICAqIEBwYXJhbSBvcyB0aGUge0BsaW5rIE91dHB1dFN0cmVhbX0KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG91dHB1dERPTShOb2RlIGNvbnRleHROb2RlLCBPdXRwdXRTdHJlYW0gb3MpIHsKKyAgICAgIFhNTFV0aWxzLm91dHB1dERPTShjb250ZXh0Tm9kZSwgb3MsIGZhbHNlKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBPdXRwdXRzIGEgRE9NIHRyZWUgdG8gYW4ge0BsaW5rIE91dHB1dFN0cmVhbX0uIDxJPklmIGFuIEV4Y2VwdGlvbiBpcworICAgICogdGhyb3duIGR1cmluZyBleGVjdXRpb24sIGl0J3MgU3RhY2tUcmFjZSBpcyBvdXRwdXQgdG8gU3lzdGVtLm91dCwgYnV0IHRoZQorICAgICogRXhjZXB0aW9uIGlzIG5vdCByZS10aHJvd24uPC9JPgorICAgICoKKyAgICAqIEBwYXJhbSBjb250ZXh0Tm9kZSByb290IG5vZGUgb2YgdGhlIERPTSB0cmVlCisgICAgKiBAcGFyYW0gb3MgdGhlIHtAbGluayBPdXRwdXRTdHJlYW19CisgICAgKiBAcGFyYW0gYWRkUHJlYW1ibGUKKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG91dHB1dERPTShOb2RlIGNvbnRleHROb2RlLCBPdXRwdXRTdHJlYW0gb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gYWRkUHJlYW1ibGUpIHsKKworICAgICAgdHJ5IHsKKyAgICAgICAgIGlmIChhZGRQcmVhbWJsZSkgeworICAgICAgICAgICAgb3Mud3JpdGUoIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cIlVURi04XCI/PlxuIi5nZXRCeXRlcygpKTsKKyAgICAgICAgIH0KKworICAgICAgICAgb3Mud3JpdGUoCisgICAgICAgICAgICBDYW5vbmljYWxpemVyLmdldEluc3RhbmNlKAorICAgICAgICAgICAgICAgQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fV0lUSF9DT01NRU5UUykuY2Fub25pY2FsaXplU3VidHJlZSgKKyAgICAgICAgICAgICAgIGNvbnRleHROb2RlKSk7CisgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBleCkge30KKyAgICAgIGNhdGNoIChJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiBleCkgeworICAgICAgICAgZXgucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICB9IGNhdGNoIChDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICBleC5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBTZXJpYWxpemVzIHRoZSA8Q09ERT5jb250ZXh0Tm9kZTwvQ09ERT4gaW50byB0aGUgT3V0cHV0U3RyZWFtLCA8ST5idXQKKyAgICAqIHN1cHJlc3NlcyBhbGwgRXhjZXB0aW9uczwvST4uCisgICAgKiA8QlIgLz4KKyAgICAqIE5PVEU6IDxJPlRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLAorICAgICogTk9UIGluIGEgcHJvZHVjdGlvbiBlbnZpcm9ubWVudDsgdGhpcyBtZXRob2QgaWdub3JlcyBhbGwgZXhjZXB0aW9ucywKKyAgICAqIHNvIHlvdSB3b24ndCBub3RpY2UgaWYgc29tZXRoaW5nIGdvZXMgd3JvbmcuIElmIHlvdSdyZSBhc2tpbmcgd2hhdCBpcyB0bworICAgICogYmUgdXNlZCBpbiBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQsIHNpbXBseSB1c2UgdGhlIGNvZGUgaW5zaWRlIHRoZQorICAgICogPGNvZGU+dHJ5e308L2NvZGU+IHN0YXRlbWVudCwgYnV0IGhhbmRsZSB0aGUgRXhjZXB0aW9ucyBhcHByb3ByaWF0ZWx5LjwvST4KKyAgICAqCisgICAgKiBAcGFyYW0gY29udGV4dE5vZGUKKyAgICAqIEBwYXJhbSBvcworICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgb3V0cHV0RE9NYzE0bldpdGhDb21tZW50cyhOb2RlIGNvbnRleHROb2RlLAorICAgICAgICAgICBPdXRwdXRTdHJlYW0gb3MpIHsKKworICAgICAgdHJ5IHsKKyAgICAgICAgIG9zLndyaXRlKAorICAgICAgICAgICAgQ2Fub25pY2FsaXplci5nZXRJbnN0YW5jZSgKKyAgICAgICAgICAgICAgIENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX1dJVEhfQ09NTUVOVFMpLmNhbm9uaWNhbGl6ZVN1YnRyZWUoCisgICAgICAgICAgICAgICBjb250ZXh0Tm9kZSkpOworICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZXgpIHsKKworICAgICAgICAgLy8gdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZXguZ2V0TWVzc2FnZSgpKTsKKyAgICAgIH0gY2F0Y2ggKEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uIGV4KSB7CisKKyAgICAgICAgIC8vIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKGV4LmdldE1lc3NhZ2UoKSk7CisgICAgICB9IGNhdGNoIChDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uIGV4KSB7CisKKyAgICAgICAgIC8vIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKGV4LmdldE1lc3NhZ2UoKSk7CisgICAgICB9CisgICB9CisKKyAKKyAgIC8qKgorICAgICogTWV0aG9kIGdldEZ1bGxUZXh0Q2hpbGRyZW5Gcm9tRWxlbWVudAorICAgICoKKyAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgKiBAcmV0dXJuIHRoZSBzdHJpbmcgb2YgY2hpO2RzCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEZ1bGxUZXh0Q2hpbGRyZW5Gcm9tRWxlbWVudChFbGVtZW50IGVsZW1lbnQpIHsKKworICAgICAgU3RyaW5nQnVmZmVyIHNiID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgTm9kZUxpc3QgY2hpbGRyZW4gPSBlbGVtZW50LmdldENoaWxkTm9kZXMoKTsKKyAgICAgIGludCBpTWF4ID0gY2hpbGRyZW4uZ2V0TGVuZ3RoKCk7CisKKyAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaU1heDsgaSsrKSB7CisgICAgICAgICBOb2RlIGN1cnIgPSBjaGlsZHJlbi5pdGVtKGkpOworCisgICAgICAgICBpZiAoY3Vyci5nZXROb2RlVHlwZSgpID09IE5vZGUuVEVYVF9OT0RFKSB7CisgICAgICAgICAgICBzYi5hcHBlbmQoKChUZXh0KSBjdXJyKS5nZXREYXRhKCkpOworICAgICAgICAgfQorICAgICAgfQorCisgICAgICByZXR1cm4gc2IudG9TdHJpbmcoKTsKKyAgIH0KKworCisgICBzdGF0aWMgIFN0cmluZyBkc1ByZWZpeD1udWxsOworICAgcHJpdmF0ZSBzdGF0aWMgTWFwIG5hbWVQcmVmaXhlcz0gamF2YS51dGlsLkNvbGxlY3Rpb25zLnN5bmNocm9uaXplZE1hcChuZXcgSGFzaE1hcCgpKTsKKworICAgLyoqCisgICAgKiBDcmVhdGVzIGFuIEVsZW1lbnQgaW4gdGhlIFhNTCBTaWduYXR1cmUgc3BlY2lmaWNhdGlvbiBuYW1lc3BhY2UuCisgICAgKgorICAgICogQHBhcmFtIGRvYyB0aGUgZmFjdG9yeSBEb2N1bWVudAorICAgICogQHBhcmFtIGVsZW1lbnROYW1lIHRoZSBsb2NhbCBuYW1lIG9mIHRoZSBFbGVtZW50CisgICAgKiBAcmV0dXJuIHRoZSBFbGVtZW50CisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgRWxlbWVudCBjcmVhdGVFbGVtZW50SW5TaWduYXR1cmVTcGFjZShEb2N1bWVudCBkb2MsCisgICAgICAgICAgIFN0cmluZyBlbGVtZW50TmFtZSkgeworCisgICAgICBpZiAoZG9jID09IG51bGwpIHsKKyAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJEb2N1bWVudCBpcyBudWxsIik7CisgICAgICB9CisgICAgIAorICAgICAgaWYgKChkc1ByZWZpeCA9PSBudWxsKSB8fCAoZHNQcmVmaXgubGVuZ3RoKCkgPT0gMCkpIHsKKyAgICAgICAgIHJldHVybiBkb2MuY3JlYXRlRWxlbWVudE5TKENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMsIGVsZW1lbnROYW1lKTsKKyAgICAgIH0gCisgICAgICBTdHJpbmcgbmFtZVByZWZpeD0oU3RyaW5nKSBuYW1lUHJlZml4ZXMuZ2V0KGVsZW1lbnROYW1lKTsKKyAgICAgIGlmIChuYW1lUHJlZml4PT1udWxsKSB7CisgICAgCSAgU3RyaW5nQnVmZmVyIHRhZz1uZXcgU3RyaW5nQnVmZmVyKGRzUHJlZml4KTsKKyAgICAJICB0YWcuYXBwZW5kKCc6Jyk7CisgICAgCSAgdGFnLmFwcGVuZChlbGVtZW50TmFtZSk7CisgICAgCSAgbmFtZVByZWZpeD10YWcudG9TdHJpbmcoKTsKKyAgICAJICBuYW1lUHJlZml4ZXMucHV0KGVsZW1lbnROYW1lLG5hbWVQcmVmaXgpOworICAgICAgfQorICAgICAgcmV0dXJuIGRvYy5jcmVhdGVFbGVtZW50TlMoQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUywgbmFtZVByZWZpeCk7CisgICB9CisKKyAgIHN0YXRpYyAgU3RyaW5nIHhlbmNQcmVmaXg9bnVsbDsKKyAgIC8qKgorICAgICogQ3JlYXRlcyBhbiBFbGVtZW50IGluIHRoZSBYTUwgRW5jcnlwdGlvbiBzcGVjaWZpY2F0aW9uIG5hbWVzcGFjZS4KKyAgICAqCisgICAgKiBAcGFyYW0gZG9jIHRoZSBmYWN0b3J5IERvY3VtZW50CisgICAgKiBAcGFyYW0gZWxlbWVudE5hbWUgdGhlIGxvY2FsIG5hbWUgb2YgdGhlIEVsZW1lbnQKKyAgICAqIEByZXR1cm4gdGhlIEVsZW1lbnQKKyAgICAqLworICAgcHVibGljIHN0YXRpYyBFbGVtZW50IGNyZWF0ZUVsZW1lbnRJbkVuY3J5cHRpb25TcGFjZShEb2N1bWVudCBkb2MsCisgICAgICAgICAgIFN0cmluZyBlbGVtZW50TmFtZSkgeworCisgICAgICBpZiAoZG9jID09IG51bGwpIHsKKyAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJEb2N1bWVudCBpcyBudWxsIik7CisgICAgICB9CisgICAgIAorICAgICAgaWYgKCh4ZW5jUHJlZml4ID09IG51bGwpIHx8ICh4ZW5jUHJlZml4Lmxlbmd0aCgpID09IDApKSB7CisgICAgICAgICByZXR1cm4gZG9jLmNyZWF0ZUVsZW1lbnROUyhFbmNyeXB0aW9uQ29uc3RhbnRzLkVuY3J5cHRpb25TcGVjTlMsIGVsZW1lbnROYW1lKTsKKyAgICAgIH0gCisgICAgICBTdHJpbmcgbmFtZVByZWZpeD0oU3RyaW5nKSBuYW1lUHJlZml4ZXMuZ2V0KGVsZW1lbnROYW1lKTsKKyAgICAgIGlmIChuYW1lUHJlZml4PT1udWxsKSB7CisgICAgCSAgU3RyaW5nQnVmZmVyIHRhZz1uZXcgU3RyaW5nQnVmZmVyKHhlbmNQcmVmaXgpOworICAgIAkgIHRhZy5hcHBlbmQoJzonKTsKKyAgICAJICB0YWcuYXBwZW5kKGVsZW1lbnROYW1lKTsKKyAgICAJICBuYW1lUHJlZml4PXRhZy50b1N0cmluZygpOworICAgIAkgIG5hbWVQcmVmaXhlcy5wdXQoZWxlbWVudE5hbWUsbmFtZVByZWZpeCk7CisgICAgICB9CisgICAgICByZXR1cm4gZG9jLmNyZWF0ZUVsZW1lbnROUyhFbmNyeXB0aW9uQ29uc3RhbnRzLkVuY3J5cHRpb25TcGVjTlMsIG5hbWVQcmVmaXgpOworICAgfQorCisgICAvKioKKyAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZWxlbWVudCBpcyBpbiBYTUwgU2lnbmF0dXJlIG5hbWVzcGFjZSBhbmQgdGhlIGxvY2FsCisgICAgKiBuYW1lIGVxdWFscyB0aGUgc3VwcGxpZWQgb25lLgorICAgICoKKyAgICAqIEBwYXJhbSBlbGVtZW50CisgICAgKiBAcGFyYW0gbG9jYWxOYW1lCisgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGVsZW1lbnQgaXMgaW4gWE1MIFNpZ25hdHVyZSBuYW1lc3BhY2UgYW5kIHRoZSBsb2NhbCBuYW1lIGVxdWFscyB0aGUgc3VwcGxpZWQgb25lCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBlbGVtZW50SXNJblNpZ25hdHVyZVNwYWNlKEVsZW1lbnQgZWxlbWVudCwKKyAgICAgICAgICAgU3RyaW5nIGxvY2FsTmFtZSkgeworICAgICAgcmV0dXJuIEVsZW1lbnRQcm94eS5jaGVja2VyLmlzTmFtZXNwYWNlRWxlbWVudChlbGVtZW50LCBsb2NhbE5hbWUsIENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMpOworICAgfQorCisgICAvKioKKyAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZWxlbWVudCBpcyBpbiBYTUwgRW5jcnlwdGlvbiBuYW1lc3BhY2UgYW5kIHRoZSBsb2NhbAorICAgICogbmFtZSBlcXVhbHMgdGhlIHN1cHBsaWVkIG9uZS4KKyAgICAqCisgICAgKiBAcGFyYW0gZWxlbWVudAorICAgICogQHBhcmFtIGxvY2FsTmFtZQorICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBlbGVtZW50IGlzIGluIFhNTCBFbmNyeXB0aW9uIG5hbWVzcGFjZSBhbmQgdGhlIGxvY2FsIG5hbWUgZXF1YWxzIHRoZSBzdXBwbGllZCBvbmUKKyAgICAqLworICAgcHVibGljIHN0YXRpYyBib29sZWFuIGVsZW1lbnRJc0luRW5jcnlwdGlvblNwYWNlKEVsZW1lbnQgZWxlbWVudCwKKyAgICAgICAgICAgU3RyaW5nIGxvY2FsTmFtZSkgeworCSAgIHJldHVybiBFbGVtZW50UHJveHkuY2hlY2tlci5pc05hbWVzcGFjZUVsZW1lbnQoZWxlbWVudCwgbG9jYWxOYW1lLCBFbmNyeXB0aW9uQ29uc3RhbnRzLkVuY3J5cHRpb25TcGVjTlMpOworICAgfQorCisgICAvKioKKyAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIG93bmVyIGRvY3VtZW50IG9mIGEgcGFydGljdWxhciBub2RlLgorICAgICogVGhpcyBtZXRob2QgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgaXQgPEk+YWx3YXlzPC9JPiByZXR1cm5zIGEKKyAgICAqIHtAbGluayBEb2N1bWVudH0uIHtAbGluayBOb2RlI2dldE93bmVyRG9jdW1lbnR9IHJldHVybnMgPENPREU+bnVsbDwvQ09ERT4KKyAgICAqIGlmIHRoZSB7QGxpbmsgTm9kZX0gaXMgYSB7QGxpbmsgRG9jdW1lbnR9LgorICAgICoKKyAgICAqIEBwYXJhbSBub2RlCisgICAgKiBAcmV0dXJuIHRoZSBvd25lciBkb2N1bWVudCBvZiB0aGUgbm9kZQorICAgICovCisgICBwdWJsaWMgc3RhdGljIERvY3VtZW50IGdldE93bmVyRG9jdW1lbnQoTm9kZSBub2RlKSB7CisKKyAgICAgIGlmIChub2RlLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5ET0NVTUVOVF9OT0RFKSB7CisgICAgICAgICByZXR1cm4gKERvY3VtZW50KSBub2RlOworICAgICAgfSAKKyAgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gbm9kZS5nZXRPd25lckRvY3VtZW50KCk7CisgICAgICAgICB9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBucGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbihJMThuLnRyYW5zbGF0ZSgiZW5kb3JzZWQuamRrMS40LjAiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBPcmlnaW5hbCBtZXNzYWdlIHdhcyBcIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG5wZS5nZXRNZXNzYWdlKCkgKyAiXCIiKTsKKyAgICAgICAgIH0KKyAgICAgIAorICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZmlyc3Qgbm9uLW51bGwgb3duZXIgZG9jdW1lbnQgb2YgdGhlIE5vZGUncyBpbiB0aGlzIFNldC4KKyAgICAgKiBUaGlzIG1ldGhvZCBpcyBuZWNlc3NhcnkgYmVjYXVzZSBpdCA8ST5hbHdheXM8L0k+IHJldHVybnMgYQorICAgICAqIHtAbGluayBEb2N1bWVudH0uIHtAbGluayBOb2RlI2dldE93bmVyRG9jdW1lbnR9IHJldHVybnMgPENPREU+bnVsbDwvQ09ERT4KKyAgICAgKiBpZiB0aGUge0BsaW5rIE5vZGV9IGlzIGEge0BsaW5rIERvY3VtZW50fS4KKyAgICAgKgorICAgICAqIEBwYXJhbSB4cGF0aE5vZGVTZXQKKyAgICAgKiBAcmV0dXJuIHRoZSBvd25lciBkb2N1bWVudCAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIERvY3VtZW50IGdldE93bmVyRG9jdW1lbnQoU2V0IHhwYXRoTm9kZVNldCkgeworICAgICAgIE51bGxQb2ludGVyRXhjZXB0aW9uIG5wZSA9IG51bGw7CisgICAgICAgSXRlcmF0b3IgaXRlcmF0b3IgPSB4cGF0aE5vZGVTZXQuaXRlcmF0b3IoKTsKKyAgICAgICB3aGlsZShpdGVyYXRvci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgTm9kZSBub2RlID0gKE5vZGUpIGl0ZXJhdG9yLm5leHQoKTsKKyAgICAgICAgICAgaW50IG5vZGVUeXBlID1ub2RlLmdldE5vZGVUeXBlKCk7CisgICAgICAgICAgIGlmIChub2RlVHlwZSA9PSBOb2RlLkRPQ1VNRU5UX05PREUpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIChEb2N1bWVudCkgbm9kZTsKKyAgICAgICAgICAgfSAKKyAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgaWYgKG5vZGVUeXBlPT1Ob2RlLkFUVFJJQlVURV9OT0RFKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAoKEF0dHIpbm9kZSkuZ2V0T3duZXJFbGVtZW50KCkuZ2V0T3duZXJEb2N1bWVudCgpOyAgCisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUuZ2V0T3duZXJEb2N1bWVudCgpOworICAgICAgICAgICAgICB9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICBucGUgPSBlOworICAgICAgICAgICAgICB9CisgICAgICAgICAgIAorICAgICAgIH0KKyAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oSTE4bi50cmFuc2xhdGUoImVuZG9yc2VkLmpkazEuNC4wIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBPcmlnaW5hbCBtZXNzYWdlIHdhcyBcIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKG5wZSA9PSBudWxsID8gIiIgOiBucGUuZ2V0TWVzc2FnZSgpKSArICJcIiIpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBNZXRob2QgY3JlYXRlRFNjdHgKKyAgICAgKgorICAgICAqIEBwYXJhbSBkb2MKKyAgICAgKiBAcGFyYW0gcHJlZml4CisgICAgICogQHBhcmFtIG5hbWVzcGFjZQorICAgICAqIEByZXR1cm4gdGhlIGVsZW1lbnQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBFbGVtZW50IGNyZWF0ZURTY3R4KERvY3VtZW50IGRvYywgU3RyaW5nIHByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG5hbWVzcGFjZSkgeworCisgICAgICAgaWYgKChwcmVmaXggPT0gbnVsbCkgfHwgKHByZWZpeC50cmltKCkubGVuZ3RoKCkgPT0gMCkpIHsKKyAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJZb3UgbXVzdCBzdXBwbHkgYSBwcmVmaXgiKTsKKyAgICAgICB9CisKKyAgICAgICBFbGVtZW50IGN0eCA9IGRvYy5jcmVhdGVFbGVtZW50TlMobnVsbCwgIm5hbWVzcGFjZUNvbnRleHQiKTsKKworICAgICAgIGN0eC5zZXRBdHRyaWJ1dGVOUyhDb25zdGFudHMuTmFtZXNwYWNlU3BlY05TLCAieG1sbnM6IiArIHByZWZpeC50cmltKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZSk7CisKKyAgICAgICByZXR1cm4gY3R4OworICAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgYWRkUmV0dXJuVG9FbGVtZW50CisgICAgKgorICAgICogQHBhcmFtIGUKKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIGFkZFJldHVyblRvRWxlbWVudChFbGVtZW50IGUpIHsKKworICAgICAgaWYgKCFpZ25vcmVMaW5lQnJlYWtzKSB7CisgICAgICAgICBEb2N1bWVudCBkb2MgPSBlLmdldE93bmVyRG9jdW1lbnQoKTsKKyAgICAgICAgIGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJcbiIpKTsKKyAgICAgIH0KKyAgIH0KKworICAgcHVibGljIHN0YXRpYyB2b2lkIGFkZFJldHVyblRvRWxlbWVudChEb2N1bWVudCBkb2MsIEhlbHBlck5vZGVMaXN0IG5sKSB7CisgICAgICBpZiAoIWlnbm9yZUxpbmVCcmVha3MpIHsKKyAgICAgICAgIG5sLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG4iKSk7CisgICAgICB9CisgICB9CisKKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBhZGRSZXR1cm5CZWZvcmVDaGlsZChFbGVtZW50IGUsIE5vZGUgY2hpbGQpIHsKKyAgICAgIGlmICghaWdub3JlTGluZUJyZWFrcykgeworICAgICAgICAgRG9jdW1lbnQgZG9jID0gZS5nZXRPd25lckRvY3VtZW50KCk7CisgICAgICAgICBlLmluc2VydEJlZm9yZShkb2MuY3JlYXRlVGV4dE5vZGUoIlxuIiksIGNoaWxkKTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgY29udmVydE5vZGVsaXN0VG9TZXQKKyAgICAqCisgICAgKiBAcGFyYW0geHBhdGhOb2RlU2V0CisgICAgKiBAcmV0dXJuIHRoZSBzZXQgd2l0aCB0aGUgbm9kZWxpc3QKKyAgICAqLworICAgcHVibGljIHN0YXRpYyBTZXQgY29udmVydE5vZGVsaXN0VG9TZXQoTm9kZUxpc3QgeHBhdGhOb2RlU2V0KSB7CisKKyAgICAgIGlmICh4cGF0aE5vZGVTZXQgPT0gbnVsbCkgeworICAgICAgICAgcmV0dXJuIG5ldyBIYXNoU2V0KCk7CisgICAgICB9CisKKyAgICAgIGludCBsZW5ndGggPSB4cGF0aE5vZGVTZXQuZ2V0TGVuZ3RoKCk7CisgICAgICBTZXQgc2V0ID0gbmV3IEhhc2hTZXQobGVuZ3RoKTsKKworICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgc2V0LmFkZCh4cGF0aE5vZGVTZXQuaXRlbShpKSk7CisgICAgICB9CisKKyAgICAgIHJldHVybiBzZXQ7CisgICB9CisKKworICAgLyoqCisgICAgKiBUaGlzIG1ldGhvZCBzcHJlYWRzIGFsbCBuYW1lc3BhY2UgYXR0cmlidXRlcyBpbiBhIERPTSBkb2N1bWVudCB0byB0aGVpcgorICAgICogY2hpbGRyZW4uIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgdGhlIFhNTCBTaWduYXR1cmUgWFBhdGggdHJhbnNmb3JtCisgICAgKiBtdXN0IGV2YWx1YXRlIHRoZSBYUGF0aCBhZ2FpbnN0IGFsbCBub2RlcyBpbiB0aGUgaW5wdXQsIGV2ZW4gYWdhaW5zdAorICAgICogWFBhdGggbmFtZXNwYWNlIG5vZGVzLiBUaHJvdWdoIGEgYnVnIGluIFhhbGFuSjIsIHRoZSBuYW1lc3BhY2Ugbm9kZXMgYXJlCisgICAgKiBub3QgZnVsbHkgdmlzaWJsZSBpbiB0aGUgWGFsYW4gWFBhdGggbW9kZWwsIHNvIHdlIGhhdmUgdG8gZG8gdGhpcyBieQorICAgICogaGFuZCBpbiBET00gc3BhY2VzIHNvIHRoYXQgdGhlIG5vZGVzIGJlY29tZSB2aXNpYmxlIGluIFhQYXRoIHNwYWNlLgorICAgICoKKyAgICAqIEBwYXJhbSBkb2MKKyAgICAqIEBzZWUgPEEgSFJFRj0iaHR0cDovL25hZ295YS5hcGFjaGUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yNjUwIj5OYW1lc3BhY2UgYXhpcyByZXNvbHV0aW9uIGlzIG5vdCBYUGF0aCBjb21wbGlhbnQgPC9BPgorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgY2lyY3VtdmVudEJ1ZzI2NTAoRG9jdW1lbnQgZG9jKSB7CisKKyAgICAgIEVsZW1lbnQgZG9jdW1lbnRFbGVtZW50ID0gZG9jLmdldERvY3VtZW50RWxlbWVudCgpOworCisgICAgICAvLyBpZiB0aGUgZG9jdW1lbnQgZWxlbWVudCBoYXMgbm8geG1sbnMgZGVmaW5pdGlvbiwgd2UgYWRkIHhtbG5zPSIiCisgICAgICBBdHRyIHhtbG5zQXR0ciA9CisgICAgICAgICBkb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlTm9kZU5TKENvbnN0YW50cy5OYW1lc3BhY2VTcGVjTlMsICJ4bWxucyIpOworCisgICAgICBpZiAoeG1sbnNBdHRyID09IG51bGwpIHsKKyAgICAgICAgIGRvY3VtZW50RWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhDb25zdGFudHMuTmFtZXNwYWNlU3BlY05TLCAieG1sbnMiLCAiIik7CisgICAgICB9CisKKyAgICAgIFhNTFV0aWxzLmNpcmN1bXZlbnRCdWcyNjUwaW50ZXJuYWwoZG9jKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBUaGlzIGlzIHRoZSB3b3JrIGhvcnNlIGZvciB7QGxpbmsgI2NpcmN1bXZlbnRCdWcyNjUwfS4KKyAgICAqCisgICAgKiBAcGFyYW0gbm9kZQorICAgICogQHNlZSA8QSBIUkVGPSJodHRwOi8vbmFnb3lhLmFwYWNoZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI2NTAiPk5hbWVzcGFjZSBheGlzIHJlc29sdXRpb24gaXMgbm90IFhQYXRoIGNvbXBsaWFudCA8L0E+CisgICAgKi8KKyAgIHByaXZhdGUgc3RhdGljIHZvaWQgY2lyY3VtdmVudEJ1ZzI2NTBpbnRlcm5hbChOb2RlIG5vZGUpIHsKKwkgICBOb2RlIHBhcmVudD1udWxsOworCSAgIE5vZGUgc2libGluZz1udWxsOworCSAgIGZpbmFsIFN0cmluZyBuYW1lc3BhY2VOcz1Db25zdGFudHMuTmFtZXNwYWNlU3BlY05TOworCSAgIGRvIHsKKyAgICAgICAgIHN3aXRjaCAobm9kZS5nZXROb2RlVHlwZSgpKSB7CisgICAgICAgICBjYXNlIE5vZGUuRUxFTUVOVF9OT0RFIDoKKyAgICAgICAgCSBFbGVtZW50IGVsZW1lbnQgPSAoRWxlbWVudCkgbm9kZTsKKyAgICAgICAgICAgICBpZiAoIWVsZW1lbnQuaGFzQ2hpbGROb2RlcygpKQorICAgICAgICAgICAgCSBicmVhazsKKyAgICAgICAgICAgICBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGVzKCkpIHsgICAgICAgICAgICAJIAorICAgICAgICAgICAgIE5hbWVkTm9kZU1hcCBhdHRyaWJ1dGVzID0gZWxlbWVudC5nZXRBdHRyaWJ1dGVzKCk7ICAgICAgICAgCQorICAgICAgICAgICAgIGludCBhdHRyaWJ1dGVzTGVuZ3RoID0gYXR0cmlidXRlcy5nZXRMZW5ndGgoKTsgICAgCisgICAgICAgICAgICAgCisgICAgICAgICAgICAgZm9yIChOb2RlIGNoaWxkID0gZWxlbWVudC5nZXRGaXJzdENoaWxkKCk7IGNoaWxkIT1udWxsOyAKKyAgICAgICAgICAgICAJY2hpbGQ9Y2hpbGQuZ2V0TmV4dFNpYmxpbmcoKSkgeyAgICAgICAgICAgIAorCisgICAgICAgICAgICAgCWlmIChjaGlsZC5nZXROb2RlVHlwZSgpICE9IE5vZGUuRUxFTUVOVF9OT0RFKSB7CisgICAgICAgICAgICAgCQljb250aW51ZTsKKyAgICAgICAgICAgICAJfQorICAgICAgICAgICAgIAlFbGVtZW50IGNoaWxkRWxlbWVudCA9IChFbGVtZW50KSBjaGlsZDsKKworICAgICAgICAgICAgIAlmb3IgKGludCBpID0gMDsgaSA8IGF0dHJpYnV0ZXNMZW5ndGg7IGkrKykgeworICAgICAgICAgICAgIAkJQXR0ciBjdXJyZW50QXR0ciA9IChBdHRyKSBhdHRyaWJ1dGVzLml0ZW0oaSk7IAorICAgICAgICAgICAgIAkJaWYgKG5hbWVzcGFjZU5zIT1jdXJyZW50QXR0ci5nZXROYW1lc3BhY2VVUkkoKSkKKyAgICAgICAgICAgICAJCQljb250aW51ZTsKKyAgICAgICAgICAgICAJCWlmIChjaGlsZEVsZW1lbnQuaGFzQXR0cmlidXRlTlMobmFtZXNwYWNlTnMsCisgICAgCQkJCQkJCWN1cnJlbnRBdHRyLmdldExvY2FsTmFtZSgpKSkgeworICAgICAgICAgICAgIAkJCQljb250aW51ZTsKKyAgICAgICAgICAgICAJCX0KKyAgICAgICAgICAgICAJCWNoaWxkRWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2VOcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRBdHRyLmdldE5hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRBdHRyLmdldE5vZGVWYWx1ZSgpKTsgICAgICAgICAJCQkJCQorICAgICAgICAgICAgIAkJCQkKKyAgICAgICAgICAgICAJCQkKKyAgICAgICAgICAgICAJfQorICAgICAgICAgICAgIH0gICAgICAgICAgICAKKyAgICAgICAgICAgICB9CisgICAgICAgICBjYXNlIE5vZGUuRU5USVRZX1JFRkVSRU5DRV9OT0RFIDoKKyAgICAgICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9OT0RFIDoKKyAgICAgICAgCSBwYXJlbnQ9bm9kZTsKKyAgICAgICAgCSBzaWJsaW5nPW5vZGUuZ2V0Rmlyc3RDaGlsZCgpOworICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorICAgICAgICAgd2hpbGUgKChzaWJsaW5nPT1udWxsKSAmJiAocGFyZW50IT1udWxsKSkgeworICAgICAgICAJCSBzaWJsaW5nPXBhcmVudC5nZXROZXh0U2libGluZygpOworICAgICAgICAJCSBwYXJlbnQ9cGFyZW50LmdldFBhcmVudE5vZGUoKTsKKyAgICAgICAgCSB9OworICAgICAgIGlmIChzaWJsaW5nPT1udWxsKSB7CisgICAgICAgIAkJIHJldHVybjsKKyAgICAgICAgCSB9CisgICAgICAgCQorICAgICAgICAgbm9kZT1zaWJsaW5nOworICAgICAgICAgc2libGluZz1ub2RlLmdldE5leHRTaWJsaW5nKCk7CisJICAgfSB3aGlsZSAodHJ1ZSk7CisgICB9CisKKyAgIC8qKgorICAgICogQHBhcmFtIHNpYmxpbmcKKyAgICAqIEBwYXJhbSBub2RlTmFtZQorICAgICogQHBhcmFtIG51bWJlcgorICAgICogQHJldHVybiBub2RlcyB3aXRoIHRoZSBjb25zdHJhaW4KKyAgICAqLworICAgcHVibGljIHN0YXRpYyBFbGVtZW50IHNlbGVjdERzTm9kZShOb2RlIHNpYmxpbmcsIFN0cmluZyBub2RlTmFtZSwgaW50IG51bWJlcikgeworCXdoaWxlIChzaWJsaW5nIT1udWxsKSB7CisJCWlmIChFbGVtZW50UHJveHkuY2hlY2tlci5pc05hbWVzcGFjZUVsZW1lbnQoc2libGluZywgbm9kZU5hbWUsIENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMgKSkgeworCQkJaWYgKG51bWJlcj09MCl7CisJCQkJcmV0dXJuIChFbGVtZW50KXNpYmxpbmc7CisJCQl9CisJCQludW1iZXItLTsKKwkJfQorCQlzaWJsaW5nPXNpYmxpbmcuZ2V0TmV4dFNpYmxpbmcoKTsKKwl9CisJcmV0dXJuIG51bGw7CisgICB9CisgICAKKyAgIC8qKgorICAgICogQHBhcmFtIHNpYmxpbmcKKyAgICAqIEBwYXJhbSBub2RlTmFtZQorICAgICogQHBhcmFtIG51bWJlcgorICAgICogQHJldHVybiBub2RlcyB3aXRoIHRoZSBjb25zdHJhaW4KKyAgICAqLworCisgICBwdWJsaWMgc3RhdGljIEVsZW1lbnQgc2VsZWN0WGVuY05vZGUoTm9kZSBzaWJsaW5nLCBTdHJpbmcgbm9kZU5hbWUsIGludCBudW1iZXIpIHsKKwl3aGlsZSAoc2libGluZyE9bnVsbCkgeworCQlpZiAoRWxlbWVudFByb3h5LmNoZWNrZXIuaXNOYW1lc3BhY2VFbGVtZW50KHNpYmxpbmcsIG5vZGVOYW1lLCBFbmNyeXB0aW9uQ29uc3RhbnRzLkVuY3J5cHRpb25TcGVjTlMgKSkgeworCQkJaWYgKG51bWJlcj09MCl7CisJCQkJcmV0dXJuIChFbGVtZW50KXNpYmxpbmc7CisJCQl9CisJCQludW1iZXItLTsKKwkJfQorCQlzaWJsaW5nPXNpYmxpbmcuZ2V0TmV4dFNpYmxpbmcoKTsKKwl9CisJcmV0dXJuIG51bGw7CisgICB9CisgICAKKworICAgLyoqCisgICAgKiBAcGFyYW0gc2libGluZworICAgICogQHBhcmFtIG5vZGVOYW1lCisgICAgKiBAcGFyYW0gbnVtYmVyCisgICAgKiBAcmV0dXJuIG5vZGVzIHdpdGggdGhlIGNvbnN0cmFpbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIFRleHQgc2VsZWN0RHNOb2RlVGV4dChOb2RlIHNpYmxpbmcsIFN0cmluZyBub2RlTmFtZSwgaW50IG51bWJlcikgeworICAgCSAgICBOb2RlIG49c2VsZWN0RHNOb2RlKHNpYmxpbmcsbm9kZU5hbWUsbnVtYmVyKTsKKyAgICAgICAgaWYgKG49PW51bGwpIHsKKyAgICAgICAgCXJldHVybiBudWxsOworICAgICAgICB9CisgICAgICAgIG49bi5nZXRGaXJzdENoaWxkKCk7CisgICAgICAgIHdoaWxlIChuIT1udWxsICYmIG4uZ2V0Tm9kZVR5cGUoKSE9Tm9kZS5URVhUX05PREUpIHsKKyAgICAgICAgCW49bi5nZXROZXh0U2libGluZygpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAoVGV4dCluOworICAgfQorICAgCisgICAvKioKKyAgICAqIEBwYXJhbSBzaWJsaW5nCisgICAgKiBAcGFyYW0gdXJpCisgICAgKiBAcGFyYW0gbm9kZU5hbWUKKyAgICAqIEBwYXJhbSBudW1iZXIKKyAgICAqIEByZXR1cm4gbm9kZXMgd2l0aCB0aGUgY29uc3RyYWluCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgVGV4dCBzZWxlY3ROb2RlVGV4dChOb2RlIHNpYmxpbmcsIFN0cmluZyB1cmksIFN0cmluZyBub2RlTmFtZSwgaW50IG51bWJlcikgeworICAgICAgICBOb2RlIG49c2VsZWN0Tm9kZShzaWJsaW5nLHVyaSxub2RlTmFtZSxudW1iZXIpOworICAgIGlmIChuPT1udWxsKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICBuPW4uZ2V0Rmlyc3RDaGlsZCgpOworICAgIHdoaWxlIChuIT1udWxsICYmIG4uZ2V0Tm9kZVR5cGUoKSE9Tm9kZS5URVhUX05PREUpIHsKKyAgICAgICAgbj1uLmdldE5leHRTaWJsaW5nKCk7CisgICAgfQorICAgIHJldHVybiAoVGV4dCluOworICAgfQorICAgCisgICAvKioKKyAgICAqIEBwYXJhbSBzaWJsaW5nCisgICAgKiBAcGFyYW0gdXJpCisgICAgKiBAcGFyYW0gbm9kZU5hbWUKKyAgICAqIEBwYXJhbSBudW1iZXIKKyAgICAqIEByZXR1cm4gbm9kZXMgd2l0aCB0aGUgY29uc3RyYWluCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgRWxlbWVudCBzZWxlY3ROb2RlKE5vZGUgc2libGluZywgU3RyaW5nIHVyaSxTdHJpbmcgbm9kZU5hbWUsIGludCBudW1iZXIpIHsKKwl3aGlsZSAoc2libGluZyE9bnVsbCkgeworCQlpZiAoRWxlbWVudFByb3h5LmNoZWNrZXIuaXNOYW1lc3BhY2VFbGVtZW50KHNpYmxpbmcsIG5vZGVOYW1lLCB1cmkpKSB7CisJCQlpZiAobnVtYmVyPT0wKXsKKwkJCQlyZXR1cm4gKEVsZW1lbnQpc2libGluZzsKKwkJCX0KKwkJCW51bWJlci0tOworCQl9CisJCXNpYmxpbmc9c2libGluZy5nZXROZXh0U2libGluZygpOworCX0KKwlyZXR1cm4gbnVsbDsKKyAgIH0KKyAgIAorICAgLyoqCisgICAgKiBAcGFyYW0gc2libGluZworICAgICogQHBhcmFtIG5vZGVOYW1lICAgIAorICAgICogQHJldHVybiBub2RlcyB3aXRoIHRoZSBjb25zdHJhaW4KKyAgICAqLworICAgcHVibGljIHN0YXRpYyBFbGVtZW50W10gc2VsZWN0RHNOb2RlcyhOb2RlIHNpYmxpbmcsU3RyaW5nIG5vZGVOYW1lKSB7CisgICAgIHJldHVybiBzZWxlY3ROb2RlcyhzaWJsaW5nLENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMsbm9kZU5hbWUpOworICAgfQorICAgLyoqCisgICAgKiBAcGFyYW0gc2libGluZworICAgICogQHBhcmFtIHVyaQorICAgICogQHBhcmFtIG5vZGVOYW1lCisgICAgKiBAcmV0dXJuIG5vZGVzIHdpdGggdGhlIGNvbnN0cmFpbgorICAgICovCisgICAgcHVibGljIHN0YXRpYyBFbGVtZW50W10gc2VsZWN0Tm9kZXMoTm9kZSBzaWJsaW5nLFN0cmluZyB1cmksU3RyaW5nIG5vZGVOYW1lKSB7CisgICAgCWludCBzaXplPTIwOworICAgIAlFbGVtZW50W10gYT0gbmV3IEVsZW1lbnRbc2l6ZV07CisgICAgCWludCBjdXJyPTA7CisgICAgCS8vTGlzdCBsaXN0PW5ldyBBcnJheUxpc3QoKTsKKyAgICAJd2hpbGUgKHNpYmxpbmchPW51bGwpIHsKKyAgICAJCWlmIChFbGVtZW50UHJveHkuY2hlY2tlci5pc05hbWVzcGFjZUVsZW1lbnQoc2libGluZywgbm9kZU5hbWUsIHVyaSkpIHsKKyAgICAJCQlhW2N1cnIrK109KEVsZW1lbnQpc2libGluZzsKKyAgICAJCQlpZiAoc2l6ZTw9Y3VycikgeworICAgIAkJCQlpbnQgY3Vyc2l6ZT0gc2l6ZTw8MjsKKyAgICAJCQkJRWxlbWVudCBbXWNwPW5ldyBFbGVtZW50W2N1cnNpemVdOworICAgIAkJCQlTeXN0ZW0uYXJyYXljb3B5KGEsMCxjcCwwLHNpemUpOworICAgIAkJCQlhPWNwOworICAgIAkJCQlzaXplPWN1cnNpemU7CisgICAgCQkJfSAgIAorICAgIAkJfQorICAgIAkJc2libGluZz1zaWJsaW5nLmdldE5leHRTaWJsaW5nKCk7CisgICAgCX0KKyAgICAJRWxlbWVudCBbXWFmPW5ldyBFbGVtZW50W2N1cnJdOworICAgIAlTeXN0ZW0uYXJyYXljb3B5KGEsMCxhZiwwLGN1cnIpOworICAgIAlyZXR1cm4gYWY7CisgICB9CisKKyAgIC8qKgorICAgICogQHBhcmFtIHNpZ25hdHVyZUVsZW1lbnQKKyAgICAqIEBwYXJhbSBpbnB1dFNldAorICAgICogQHJldHVybiBub2RlcyB3aXRoIHRoZSBjb25zdHJhaW4KKyAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU2V0IGV4Y2x1ZGVOb2RlRnJvbVNldChOb2RlIHNpZ25hdHVyZUVsZW1lbnQsIFNldCBpbnB1dFNldCkgeworCSAgU2V0IHJlc3VsdFNldCA9IG5ldyBIYXNoU2V0KCk7CisJICBJdGVyYXRvciBpdGVyYXRvciA9IGlucHV0U2V0Lml0ZXJhdG9yKCk7CisKKwkgIHdoaWxlIChpdGVyYXRvci5oYXNOZXh0KCkpIHsKKwkgICAgTm9kZSBpbnB1dE5vZGUgPSAoTm9kZSkgaXRlcmF0b3IubmV4dCgpOworCisJICAgIGlmICghWE1MVXRpbHMKKwkgICAgICAgICAgICAuaXNEZXNjZW5kYW50T3JTZWxmKHNpZ25hdHVyZUVsZW1lbnQsIGlucHV0Tm9kZSkpIHsKKwkgICAgICAgcmVzdWx0U2V0LmFkZChpbnB1dE5vZGUpOworCSAgICB9CisJIH0KKwkgcmV0dXJuIHJlc3VsdFNldDsKKyAgICAgfQorCisgICAvKioKKyAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZGVzY2VuZGFudE9yU2VsZiBpcyBvbiB0aGUgZGVzY2VuZGFudC1vci1zZWxmIGF4aXMKKyAgICAqIG9mIHRoZSBjb250ZXh0IG5vZGUuCisgICAgKgorICAgICogQHBhcmFtIGN0eAorICAgICogQHBhcmFtIGRlc2NlbmRhbnRPclNlbGYKKyAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgbm9kZSBpcyBkZXNjZW5kYW50CisgICAgKi8KKyAgIHN0YXRpYyBwdWJsaWMgYm9vbGVhbiBpc0Rlc2NlbmRhbnRPclNlbGYoTm9kZSBjdHgsIE5vZGUgZGVzY2VuZGFudE9yU2VsZikgeworCisgICAgICBpZiAoY3R4ID09IGRlc2NlbmRhbnRPclNlbGYpIHsKKyAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQorCisgICAgICBOb2RlIHBhcmVudCA9IGRlc2NlbmRhbnRPclNlbGY7CisKKyAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICBpZiAocGFyZW50ID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIH0KKworICAgICAgICAgaWYgKHBhcmVudCA9PSBjdHgpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgfQorCisgICAgICAgICBpZiAocGFyZW50LmdldE5vZGVUeXBlKCkgPT0gTm9kZS5BVFRSSUJVVEVfTk9ERSkgeworICAgICAgICAgICAgcGFyZW50ID0gKChBdHRyKSBwYXJlbnQpLmdldE93bmVyRWxlbWVudCgpOworICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC5nZXRQYXJlbnROb2RlKCk7CisgICAgICAgICB9CisgICAgICB9CisgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaWdub3JlTGluZUJyZWFrcygpIHsKKyAgICAgICAgcmV0dXJuIGlnbm9yZUxpbmVCcmVha3M7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL1hQYXRoRnVuY0hlcmVBUEkuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9YUGF0aEZ1bmNIZXJlQVBJLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNiZmYwMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9YUGF0aEZ1bmNIZXJlQVBJLmphdmEKQEAgLTAsMCArMSwzMDMgQEAKKworLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHM7CisKKworCitpbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckV4Y2VwdGlvbjsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuaW1wbGVtZW50YXRpb25zLkZ1bmNIZXJlQ29udGV4dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC51dGlscy5QcmVmaXhSZXNvbHZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC51dGlscy5QcmVmaXhSZXNvbHZlckRlZmF1bHQ7CitpbXBvcnQgb3JnLmFwYWNoZS54cGF0aC5YUGF0aDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhwYXRoLm9iamVjdHMuWE9iamVjdDsKK2ltcG9ydCBvcmcudzNjLmRvbS5BdHRyOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7CitpbXBvcnQgb3JnLnczYy5kb20uUHJvY2Vzc2luZ0luc3RydWN0aW9uOworaW1wb3J0IG9yZy53M2MuZG9tLlRleHQ7CitpbXBvcnQgb3JnLnczYy5kb20udHJhdmVyc2FsLk5vZGVJdGVyYXRvcjsKKworCisKKworLyoqCisgKiBUaGlzIGNsYXNzIGRvZXMgdGhlIHNhbWUgYXMge0BsaW5rIG9yZy5hcGFjaGUueHBhdGguWFBhdGhBUEl9IGV4Y2VwdCB0aGF0IHRoZSBYUGF0aCBzdHJpbmdzCisgKiBhcmUgbm90IHN1cHBsaWVkIGFzIFN0cmluZ3MgYnV0IGFzIHtAbGluayBUZXh0fSwge0BsaW5rIEF0dHJ9aWJ1dGUgb3IKKyAqIHtQcm9jZXNzaW5nSW5zdHJ1Y3Rpb259IG5vZGVzIHdoaWNoIGNvbnRhaW4gdGhlIFhQYXRoIHN0cmluZy4gVGhpcyBlbmFibGVzCisgKiB1cyB0byB1c2UgdGhlIDxDT0RFPmhlcmUoKTwvQ09ERT4gZnVuY3Rpb24uCisgKiA8QlI+CisgKiBUaGUgbWV0aG9kcyBpbiB0aGlzIGNsYXNzIGFyZSBjb252ZW5pZW5jZSBtZXRob2RzIGludG8gdGhlIGxvdy1sZXZlbCBYUGF0aCBBUEkuCisgKiBUaGVzZSBmdW5jdGlvbnMgdGVuZCB0byBiZSBhIGxpdHRsZSBzbG93LCBzaW5jZSBhIG51bWJlciBvZiBvYmplY3RzIG11c3QgYmUKKyAqIGNyZWF0ZWQgZm9yIGVhY2ggZXZhbHVhdGlvbi4gIEEgZmFzdGVyIHdheSBpcyB0byBwcmVjb21waWxlIHRoZQorICogWFBhdGhzIHVzaW5nIHRoZSBsb3ctbGV2ZWwgQVBJLCBhbmQgdGhlbiBqdXN0IHVzZSB0aGUgWFBhdGhzCisgKiBvdmVyIGFuZCBvdmVyLgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqIEBzZWUgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIveHBhdGgiPlhQYXRoIFNwZWNpZmljYXRpb248L2E+CisgKi8KK3B1YmxpYyBjbGFzcyBYUGF0aEZ1bmNIZXJlQVBJIHsKKworICAgLyoqCisgICAgKiBVc2UgYW4gWFBhdGggc3RyaW5nIHRvIHNlbGVjdCBhIHNpbmdsZSBub2RlLiBYUGF0aCBuYW1lc3BhY2UKKyAgICAqIHByZWZpeGVzIGFyZSByZXNvbHZlZCBmcm9tIHRoZSBjb250ZXh0IG5vZGUsIHdoaWNoIG1heSBub3QKKyAgICAqIGJlIHdoYXQgeW91IHdhbnQgKHNlZSB0aGUgbmV4dCBtZXRob2QpLgorICAgICoKKyAgICAqIEBwYXJhbSBjb250ZXh0Tm9kZSBUaGUgbm9kZSB0byBzdGFydCBzZWFyY2hpbmcgZnJvbS4KKyAgICAqIEBwYXJhbSB4cGF0aG5vZGUgQSBOb2RlIGNvbnRhaW5pbmcgYSB2YWxpZCBYUGF0aCBzdHJpbmcuCisgICAgKiBAcmV0dXJuIFRoZSBmaXJzdCBub2RlIGZvdW5kIHRoYXQgbWF0Y2hlcyB0aGUgWFBhdGgsIG9yIG51bGwuCisgICAgKgorICAgICogQHRocm93cyBUcmFuc2Zvcm1lckV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIE5vZGUgc2VsZWN0U2luZ2xlTm9kZShOb2RlIGNvbnRleHROb2RlLCBOb2RlIHhwYXRobm9kZSkKKyAgICAgICAgICAgdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uIHsKKyAgICAgIHJldHVybiBzZWxlY3RTaW5nbGVOb2RlKGNvbnRleHROb2RlLCB4cGF0aG5vZGUsIGNvbnRleHROb2RlKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBVc2UgYW4gWFBhdGggc3RyaW5nIHRvIHNlbGVjdCBhIHNpbmdsZSBub2RlLgorICAgICogWFBhdGggbmFtZXNwYWNlIHByZWZpeGVzIGFyZSByZXNvbHZlZCBmcm9tIHRoZSBuYW1lc3BhY2VOb2RlLgorICAgICoKKyAgICAqIEBwYXJhbSBjb250ZXh0Tm9kZSBUaGUgbm9kZSB0byBzdGFydCBzZWFyY2hpbmcgZnJvbS4KKyAgICAqIEBwYXJhbSB4cGF0aG5vZGUKKyAgICAqIEBwYXJhbSBuYW1lc3BhY2VOb2RlIFRoZSBub2RlIGZyb20gd2hpY2ggcHJlZml4ZXMgaW4gdGhlIFhQYXRoIHdpbGwgYmUgcmVzb2x2ZWQgdG8gbmFtZXNwYWNlcy4KKyAgICAqIEByZXR1cm4gVGhlIGZpcnN0IG5vZGUgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBYUGF0aCwgb3IgbnVsbC4KKyAgICAqCisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgTm9kZSBzZWxlY3RTaW5nbGVOb2RlKAorICAgICAgICAgICBOb2RlIGNvbnRleHROb2RlLCBOb2RlIHhwYXRobm9kZSwgTm9kZSBuYW1lc3BhY2VOb2RlKQorICAgICAgICAgICAgICB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24geworCisgICAgICAvLyBIYXZlIHRoZSBYT2JqZWN0IHJldHVybiBpdHMgcmVzdWx0IGFzIGEgTm9kZVNldERUTS4KKyAgICAgIE5vZGVJdGVyYXRvciBubCA9IHNlbGVjdE5vZGVJdGVyYXRvcihjb250ZXh0Tm9kZSwgeHBhdGhub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZU5vZGUpOworCisgICAgICAvLyBSZXR1cm4gdGhlIGZpcnN0IG5vZGUsIG9yIG51bGwKKyAgICAgIHJldHVybiBubC5uZXh0Tm9kZSgpOworICAgfQorCisgICAvKioKKyAgICAqICBVc2UgYW4gWFBhdGggc3RyaW5nIHRvIHNlbGVjdCBhIG5vZGVsaXN0LgorICAgICogIFhQYXRoIG5hbWVzcGFjZSBwcmVmaXhlcyBhcmUgcmVzb2x2ZWQgZnJvbSB0aGUgY29udGV4dE5vZGUuCisgICAgKgorICAgICogIEBwYXJhbSBjb250ZXh0Tm9kZSBUaGUgbm9kZSB0byBzdGFydCBzZWFyY2hpbmcgZnJvbS4KKyAgICAqIEBwYXJhbSB4cGF0aG5vZGUKKyAgICAqICBAcmV0dXJuIEEgTm9kZUl0ZXJhdG9yLCBzaG91bGQgbmV2ZXIgYmUgbnVsbC4KKyAgICAqCisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgTm9kZUl0ZXJhdG9yIHNlbGVjdE5vZGVJdGVyYXRvcigKKyAgICAgICAgICAgTm9kZSBjb250ZXh0Tm9kZSwgTm9kZSB4cGF0aG5vZGUpIHRocm93cyBUcmFuc2Zvcm1lckV4Y2VwdGlvbiB7CisgICAgICByZXR1cm4gc2VsZWN0Tm9kZUl0ZXJhdG9yKGNvbnRleHROb2RlLCB4cGF0aG5vZGUsIGNvbnRleHROb2RlKTsKKyAgIH0KKworICAgLyoqCisgICAgKiAgVXNlIGFuIFhQYXRoIHN0cmluZyB0byBzZWxlY3QgYSBub2RlbGlzdC4KKyAgICAqICBYUGF0aCBuYW1lc3BhY2UgcHJlZml4ZXMgYXJlIHJlc29sdmVkIGZyb20gdGhlIG5hbWVzcGFjZU5vZGUuCisgICAgKgorICAgICogIEBwYXJhbSBjb250ZXh0Tm9kZSBUaGUgbm9kZSB0byBzdGFydCBzZWFyY2hpbmcgZnJvbS4KKyAgICAqIEBwYXJhbSB4cGF0aG5vZGUKKyAgICAqICBAcGFyYW0gbmFtZXNwYWNlTm9kZSBUaGUgbm9kZSBmcm9tIHdoaWNoIHByZWZpeGVzIGluIHRoZSBYUGF0aCB3aWxsIGJlIHJlc29sdmVkIHRvIG5hbWVzcGFjZXMuCisgICAgKiAgQHJldHVybiBBIE5vZGVJdGVyYXRvciwgc2hvdWxkIG5ldmVyIGJlIG51bGwuCisgICAgKgorICAgICogQHRocm93cyBUcmFuc2Zvcm1lckV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIE5vZGVJdGVyYXRvciBzZWxlY3ROb2RlSXRlcmF0b3IoCisgICAgICAgICAgIE5vZGUgY29udGV4dE5vZGUsIE5vZGUgeHBhdGhub2RlLCBOb2RlIG5hbWVzcGFjZU5vZGUpCisgICAgICAgICAgICAgIHRocm93cyBUcmFuc2Zvcm1lckV4Y2VwdGlvbiB7CisKKyAgICAgIC8vIEV4ZWN1dGUgdGhlIFhQYXRoLCBhbmQgaGF2ZSBpdCByZXR1cm4gdGhlIHJlc3VsdAorICAgICAgWE9iamVjdCBsaXN0ID0gZXZhbChjb250ZXh0Tm9kZSwgeHBhdGhub2RlLCBuYW1lc3BhY2VOb2RlKTsKKworICAgICAgLy8gSGF2ZSB0aGUgWE9iamVjdCByZXR1cm4gaXRzIHJlc3VsdCBhcyBhIE5vZGVTZXREVE0uCisgICAgICByZXR1cm4gbGlzdC5ub2Rlc2V0KCk7CisgICB9CisKKyAgIC8qKgorICAgICogIFVzZSBhbiBYUGF0aCBzdHJpbmcgdG8gc2VsZWN0IGEgbm9kZWxpc3QuCisgICAgKiAgWFBhdGggbmFtZXNwYWNlIHByZWZpeGVzIGFyZSByZXNvbHZlZCBmcm9tIHRoZSBjb250ZXh0Tm9kZS4KKyAgICAqCisgICAgKiAgQHBhcmFtIGNvbnRleHROb2RlIFRoZSBub2RlIHRvIHN0YXJ0IHNlYXJjaGluZyBmcm9tLgorICAgICogQHBhcmFtIHhwYXRobm9kZQorICAgICogIEByZXR1cm4gQSBOb2RlSXRlcmF0b3IsIHNob3VsZCBuZXZlciBiZSBudWxsLgorICAgICoKKyAgICAqIEB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyBOb2RlTGlzdCBzZWxlY3ROb2RlTGlzdChOb2RlIGNvbnRleHROb2RlLCBOb2RlIHhwYXRobm9kZSkKKyAgICAgICAgICAgdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uIHsKKyAgICAgIHJldHVybiBzZWxlY3ROb2RlTGlzdChjb250ZXh0Tm9kZSwgeHBhdGhub2RlLCBjb250ZXh0Tm9kZSk7CisgICB9CisKKyAgIC8qKgorICAgICogIFVzZSBhbiBYUGF0aCBzdHJpbmcgdG8gc2VsZWN0IGEgbm9kZWxpc3QuCisgICAgKiAgWFBhdGggbmFtZXNwYWNlIHByZWZpeGVzIGFyZSByZXNvbHZlZCBmcm9tIHRoZSBuYW1lc3BhY2VOb2RlLgorICAgICoKKyAgICAqICBAcGFyYW0gY29udGV4dE5vZGUgVGhlIG5vZGUgdG8gc3RhcnQgc2VhcmNoaW5nIGZyb20uCisgICAgKiBAcGFyYW0geHBhdGhub2RlCisgICAgKiAgQHBhcmFtIG5hbWVzcGFjZU5vZGUgVGhlIG5vZGUgZnJvbSB3aGljaCBwcmVmaXhlcyBpbiB0aGUgWFBhdGggd2lsbCBiZSByZXNvbHZlZCB0byBuYW1lc3BhY2VzLgorICAgICogIEByZXR1cm4gQSBOb2RlSXRlcmF0b3IsIHNob3VsZCBuZXZlciBiZSBudWxsLgorICAgICoKKyAgICAqIEB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyBOb2RlTGlzdCBzZWxlY3ROb2RlTGlzdCgKKyAgICAgICAgICAgTm9kZSBjb250ZXh0Tm9kZSwgTm9kZSB4cGF0aG5vZGUsIE5vZGUgbmFtZXNwYWNlTm9kZSkKKyAgICAgICAgICAgICAgdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uIHsKKworICAgICAgLy8gRXhlY3V0ZSB0aGUgWFBhdGgsIGFuZCBoYXZlIGl0IHJldHVybiB0aGUgcmVzdWx0CisgICAgICBYT2JqZWN0IGxpc3QgPSBldmFsKGNvbnRleHROb2RlLCB4cGF0aG5vZGUsIG5hbWVzcGFjZU5vZGUpOworCisgICAgICAvLyBSZXR1cm4gYSBOb2RlTGlzdC4KKyAgICAgIHJldHVybiBsaXN0Lm5vZGVsaXN0KCk7CisgICB9CisKKyAgIC8qKgorICAgICogIEV2YWx1YXRlIFhQYXRoIHN0cmluZyB0byBhbiBYT2JqZWN0LiAgVXNpbmcgdGhpcyBtZXRob2QsCisgICAgKiAgWFBhdGggbmFtZXNwYWNlIHByZWZpeGVzIHdpbGwgYmUgcmVzb2x2ZWQgZnJvbSB0aGUgbmFtZXNwYWNlTm9kZS4KKyAgICAqICBAcGFyYW0gY29udGV4dE5vZGUgVGhlIG5vZGUgdG8gc3RhcnQgc2VhcmNoaW5nIGZyb20uCisgICAgKiBAcGFyYW0geHBhdGhub2RlCisgICAgKiAgQHJldHVybiBBbiBYT2JqZWN0LCB3aGljaCBjYW4gYmUgdXNlZCB0byBvYnRhaW4gYSBzdHJpbmcsIG51bWJlciwgbm9kZWxpc3QsIGV0Yywgc2hvdWxkIG5ldmVyIGJlIG51bGwuCisgICAgKiAgQHNlZSBvcmcuYXBhY2hlLnhwYXRoLm9iamVjdHMuWE9iamVjdAorICAgICogIEBzZWUgb3JnLmFwYWNoZS54cGF0aC5vYmplY3RzLlhOdWxsCisgICAgKiAgQHNlZSBvcmcuYXBhY2hlLnhwYXRoLm9iamVjdHMuWEJvb2xlYW4KKyAgICAqICBAc2VlIG9yZy5hcGFjaGUueHBhdGgub2JqZWN0cy5YTnVtYmVyCisgICAgKiAgQHNlZSBvcmcuYXBhY2hlLnhwYXRoLm9iamVjdHMuWFN0cmluZworICAgICogIEBzZWUgb3JnLmFwYWNoZS54cGF0aC5vYmplY3RzLlhSVHJlZUZyYWcKKyAgICAqCisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgWE9iamVjdCBldmFsKE5vZGUgY29udGV4dE5vZGUsIE5vZGUgeHBhdGhub2RlKQorICAgICAgICAgICB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24geworICAgICAgcmV0dXJuIGV2YWwoY29udGV4dE5vZGUsIHhwYXRobm9kZSwgY29udGV4dE5vZGUpOworICAgfQorCisgICAvKioKKyAgICAqICBFdmFsdWF0ZSBYUGF0aCBzdHJpbmcgdG8gYW4gWE9iamVjdC4KKyAgICAqICBYUGF0aCBuYW1lc3BhY2UgcHJlZml4ZXMgYXJlIHJlc29sdmVkIGZyb20gdGhlIG5hbWVzcGFjZU5vZGUuCisgICAgKiAgVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgaXMgYSBsaXR0bGUgc2xvdywgc2luY2UgaXQgY3JlYXRlcworICAgICogIGEgbnVtYmVyIG9mIG9iamVjdHMgZWFjaCB0aW1lIGl0IGlzIGNhbGxlZC4gIFRoaXMgY291bGQgYmUgb3B0aW1pemVkCisgICAgKiAgdG8ga2VlcCB0aGUgc2FtZSBvYmplY3RzIGFyb3VuZCwgYnV0IHRoZW4gdGhyZWFkLXNhZmV0eSBpc3N1ZXMgd291bGQgYXJpc2UuCisgICAgKgorICAgICogIEBwYXJhbSBjb250ZXh0Tm9kZSBUaGUgbm9kZSB0byBzdGFydCBzZWFyY2hpbmcgZnJvbS4KKyAgICAqIEBwYXJhbSB4cGF0aG5vZGUKKyAgICAqICBAcGFyYW0gbmFtZXNwYWNlTm9kZSBUaGUgbm9kZSBmcm9tIHdoaWNoIHByZWZpeGVzIGluIHRoZSBYUGF0aCB3aWxsIGJlIHJlc29sdmVkIHRvIG5hbWVzcGFjZXMuCisgICAgKiAgQHJldHVybiBBbiBYT2JqZWN0LCB3aGljaCBjYW4gYmUgdXNlZCB0byBvYnRhaW4gYSBzdHJpbmcsIG51bWJlciwgbm9kZWxpc3QsIGV0Yywgc2hvdWxkIG5ldmVyIGJlIG51bGwuCisgICAgKiAgQHNlZSBvcmcuYXBhY2hlLnhwYXRoLm9iamVjdHMuWE9iamVjdAorICAgICogIEBzZWUgb3JnLmFwYWNoZS54cGF0aC5vYmplY3RzLlhOdWxsCisgICAgKiAgQHNlZSBvcmcuYXBhY2hlLnhwYXRoLm9iamVjdHMuWEJvb2xlYW4KKyAgICAqICBAc2VlIG9yZy5hcGFjaGUueHBhdGgub2JqZWN0cy5YTnVtYmVyCisgICAgKiAgQHNlZSBvcmcuYXBhY2hlLnhwYXRoLm9iamVjdHMuWFN0cmluZworICAgICogIEBzZWUgb3JnLmFwYWNoZS54cGF0aC5vYmplY3RzLlhSVHJlZUZyYWcKKyAgICAqCisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgWE9iamVjdCBldmFsKAorICAgICAgICAgICBOb2RlIGNvbnRleHROb2RlLCBOb2RlIHhwYXRobm9kZSwgTm9kZSBuYW1lc3BhY2VOb2RlKQorICAgICAgICAgICAgICB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24geworCisgICAgICAvLyBTaW5jZSB3ZSBkb24ndCBoYXZlIGEgWE1MIFBhcnNlciBpbnZvbHZlZCBoZXJlLCBpbnN0YWxsIHNvbWUgZGVmYXVsdCBzdXBwb3J0CisgICAgICAvLyBmb3IgdGhpbmdzIGxpa2UgbmFtZXNwYWNlcywgZXRjLgorICAgICAgLy8gKENoYW5nZWQgZnJvbTogWFBhdGhDb250ZXh0IHhwYXRoU3VwcG9ydCA9IG5ldyBYUGF0aENvbnRleHQoKTsKKyAgICAgIC8vICAgIGJlY2F1c2UgWFBhdGhDb250ZXh0IGlzIHdlYWsgaW4gYSBudW1iZXIgb2YgYXJlYXMuLi4gcGVyaGFwcworICAgICAgLy8gICAgWFBhdGhDb250ZXh0IHNob3VsZCBiZSBkb25lIGF3YXkgd2l0aC4pCisgICAgICBGdW5jSGVyZUNvbnRleHQgeHBhdGhTdXBwb3J0ID0gbmV3IEZ1bmNIZXJlQ29udGV4dCh4cGF0aG5vZGUpOworCisgICAgICAvLyBDcmVhdGUgYW4gb2JqZWN0IHRvIHJlc29sdmUgbmFtZXNwYWNlIHByZWZpeGVzLgorICAgICAgLy8gWFBhdGggbmFtZXNwYWNlcyBhcmUgcmVzb2x2ZWQgZnJvbSB0aGUgaW5wdXQgY29udGV4dCBub2RlJ3MgZG9jdW1lbnQgZWxlbWVudAorICAgICAgLy8gaWYgaXQgaXMgYSByb290IG5vZGUsIG9yIGVsc2UgdGhlIGN1cnJlbnQgY29udGV4dCBub2RlIChmb3IgbGFjayBvZiBhIGJldHRlcgorICAgICAgLy8gcmVzb2x1dGlvbiBzcGFjZSwgZ2l2ZW4gdGhlIHNpbXBsaWNpdHkgb2YgdGhpcyBzYW1wbGUgY29kZSkuCisgICAgICBQcmVmaXhSZXNvbHZlckRlZmF1bHQgcHJlZml4UmVzb2x2ZXIgPQorICAgICAgICAgbmV3IFByZWZpeFJlc29sdmVyRGVmYXVsdCgobmFtZXNwYWNlTm9kZS5nZXROb2RlVHlwZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PSBOb2RlLkRPQ1VNRU5UX05PREUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKChEb2N1bWVudCkgbmFtZXNwYWNlTm9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldERvY3VtZW50RWxlbWVudCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbmFtZXNwYWNlTm9kZSk7CisgICAgICBTdHJpbmcgc3RyID0gZ2V0U3RyRnJvbU5vZGUoeHBhdGhub2RlKTsKKworICAgICAgLy8gQ3JlYXRlIHRoZSBYUGF0aCBvYmplY3QuCisgICAgICBYUGF0aCB4cGF0aCA9IG5ldyBYUGF0aChzdHIsIG51bGwsIHByZWZpeFJlc29sdmVyLCBYUGF0aC5TRUxFQ1QsIG51bGwpOworCisgICAgICAvLyBFeGVjdXRlIHRoZSBYUGF0aCwgYW5kIGhhdmUgaXQgcmV0dXJuIHRoZSByZXN1bHQKKyAgICAgIC8vIHJldHVybiB4cGF0aC5leGVjdXRlKHhwYXRoU3VwcG9ydCwgY29udGV4dE5vZGUsIHByZWZpeFJlc29sdmVyKTsKKyAgICAgIGludCBjdHh0Tm9kZSA9IHhwYXRoU3VwcG9ydC5nZXREVE1IYW5kbGVGcm9tTm9kZShjb250ZXh0Tm9kZSk7CisKKyAgICAgIHJldHVybiB4cGF0aC5leGVjdXRlKHhwYXRoU3VwcG9ydCwgY3R4dE5vZGUsIHByZWZpeFJlc29sdmVyKTsKKyAgIH0KKworICAgLyoqCisgICAgKiAgIEV2YWx1YXRlIFhQYXRoIHN0cmluZyB0byBhbiBYT2JqZWN0LgorICAgICogICBYUGF0aCBuYW1lc3BhY2UgcHJlZml4ZXMgYXJlIHJlc29sdmVkIGZyb20gdGhlIG5hbWVzcGFjZU5vZGUuCisgICAgKiAgIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGlzIGEgbGl0dGxlIHNsb3csIHNpbmNlIGl0IGNyZWF0ZXMKKyAgICAqICAgYSBudW1iZXIgb2Ygb2JqZWN0cyBlYWNoIHRpbWUgaXQgaXMgY2FsbGVkLiAgVGhpcyBjb3VsZCBiZSBvcHRpbWl6ZWQKKyAgICAqICAgdG8ga2VlcCB0aGUgc2FtZSBvYmplY3RzIGFyb3VuZCwgYnV0IHRoZW4gdGhyZWFkLXNhZmV0eSBpc3N1ZXMgd291bGQgYXJpc2UuCisgICAgKgorICAgICogICBAcGFyYW0gY29udGV4dE5vZGUgVGhlIG5vZGUgdG8gc3RhcnQgc2VhcmNoaW5nIGZyb20uCisgICAgKiBAcGFyYW0geHBhdGhub2RlCisgICAgKiAgIEBwYXJhbSBwcmVmaXhSZXNvbHZlciBXaWxsIGJlIGNhbGxlZCBpZiB0aGUgcGFyc2VyIGVuY291bnRlcnMgbmFtZXNwYWNlCisgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhlcywgdG8gcmVzb2x2ZSB0aGUgcHJlZml4ZXMgdG8gVVJMcy4KKyAgICAqICAgQHJldHVybiBBbiBYT2JqZWN0LCB3aGljaCBjYW4gYmUgdXNlZCB0byBvYnRhaW4gYSBzdHJpbmcsIG51bWJlciwgbm9kZWxpc3QsIGV0Yywgc2hvdWxkIG5ldmVyIGJlIG51bGwuCisgICAgKiAgIEBzZWUgb3JnLmFwYWNoZS54cGF0aC5vYmplY3RzLlhPYmplY3QKKyAgICAqICAgQHNlZSBvcmcuYXBhY2hlLnhwYXRoLm9iamVjdHMuWE51bGwKKyAgICAqICAgQHNlZSBvcmcuYXBhY2hlLnhwYXRoLm9iamVjdHMuWEJvb2xlYW4KKyAgICAqICAgQHNlZSBvcmcuYXBhY2hlLnhwYXRoLm9iamVjdHMuWE51bWJlcgorICAgICogICBAc2VlIG9yZy5hcGFjaGUueHBhdGgub2JqZWN0cy5YU3RyaW5nCisgICAgKiAgIEBzZWUgb3JnLmFwYWNoZS54cGF0aC5vYmplY3RzLlhSVHJlZUZyYWcKKyAgICAqCisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgWE9iamVjdCBldmFsKAorICAgICAgICAgICBOb2RlIGNvbnRleHROb2RlLCBOb2RlIHhwYXRobm9kZSwgUHJlZml4UmVzb2x2ZXIgcHJlZml4UmVzb2x2ZXIpCisgICAgICAgICAgICAgIHRocm93cyBUcmFuc2Zvcm1lckV4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZyBzdHIgPSBnZXRTdHJGcm9tTm9kZSh4cGF0aG5vZGUpOworCisgICAgICAvLyBTaW5jZSB3ZSBkb24ndCBoYXZlIGEgWE1MIFBhcnNlciBpbnZvbHZlZCBoZXJlLCBpbnN0YWxsIHNvbWUgZGVmYXVsdCBzdXBwb3J0CisgICAgICAvLyBmb3IgdGhpbmdzIGxpa2UgbmFtZXNwYWNlcywgZXRjLgorICAgICAgLy8gKENoYW5nZWQgZnJvbTogWFBhdGhDb250ZXh0IHhwYXRoU3VwcG9ydCA9IG5ldyBYUGF0aENvbnRleHQoKTsKKyAgICAgIC8vICAgIGJlY2F1c2UgWFBhdGhDb250ZXh0IGlzIHdlYWsgaW4gYSBudW1iZXIgb2YgYXJlYXMuLi4gcGVyaGFwcworICAgICAgLy8gICAgWFBhdGhDb250ZXh0IHNob3VsZCBiZSBkb25lIGF3YXkgd2l0aC4pCisgICAgICAvLyBDcmVhdGUgdGhlIFhQYXRoIG9iamVjdC4KKyAgICAgIFhQYXRoIHhwYXRoID0gbmV3IFhQYXRoKHN0ciwgbnVsbCwgcHJlZml4UmVzb2x2ZXIsIFhQYXRoLlNFTEVDVCwgbnVsbCk7CisKKyAgICAgIC8vIEV4ZWN1dGUgdGhlIFhQYXRoLCBhbmQgaGF2ZSBpdCByZXR1cm4gdGhlIHJlc3VsdAorICAgICAgRnVuY0hlcmVDb250ZXh0IHhwYXRoU3VwcG9ydCA9IG5ldyBGdW5jSGVyZUNvbnRleHQoeHBhdGhub2RlKTsKKyAgICAgIGludCBjdHh0Tm9kZSA9IHhwYXRoU3VwcG9ydC5nZXREVE1IYW5kbGVGcm9tTm9kZShjb250ZXh0Tm9kZSk7CisKKyAgICAgIHJldHVybiB4cGF0aC5leGVjdXRlKHhwYXRoU3VwcG9ydCwgY3R4dE5vZGUsIHByZWZpeFJlc29sdmVyKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZ2V0U3RyRnJvbU5vZGUKKyAgICAqCisgICAgKiBAcGFyYW0geHBhdGhub2RlCisgICAgKiBAcmV0dXJuIHRoZSBzdHJpbmcgZnJvbSB0aGUgbm9kZQorICAgICovCisgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgZ2V0U3RyRnJvbU5vZGUoTm9kZSB4cGF0aG5vZGUpIHsKKworICAgICAgaWYgKHhwYXRobm9kZS5nZXROb2RlVHlwZSgpID09IE5vZGUuVEVYVF9OT0RFKSB7CisgICAgICAgICByZXR1cm4gKChUZXh0KSB4cGF0aG5vZGUpLmdldERhdGEoKTsKKyAgICAgIH0gZWxzZSBpZiAoeHBhdGhub2RlLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5BVFRSSUJVVEVfTk9ERSkgeworICAgICAgICAgcmV0dXJuICgoQXR0cikgeHBhdGhub2RlKS5nZXROb2RlVmFsdWUoKTsKKyAgICAgIH0gZWxzZSBpZiAoeHBhdGhub2RlLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUpIHsKKyAgICAgICAgIHJldHVybiAoKFByb2Nlc3NpbmdJbnN0cnVjdGlvbikgeHBhdGhub2RlKS5nZXROb2RlVmFsdWUoKTsKKyAgICAgIH0KKworICAgICAgcmV0dXJuICIiOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL3BhY2thZ2UuaHRtbCBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjEzNjMzNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSwzIEBACis8SFRNTD48SEVBRD48L0hFQUQ+PEJPRFk+PFA+CitnZW5lcmFsIHV0aWxpdHkgY2xhc3Nlcy4KKzwvUD48L0JPRFk+PC9IVE1MPgpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL3Jlc29sdmVyL1Jlc291cmNlUmVzb2x2ZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9yZXNvbHZlci9SZXNvdXJjZVJlc29sdmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTkxNzdiZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9yZXNvbHZlci9SZXNvdXJjZVJlc29sdmVyLmphdmEKQEAgLTAsMCArMSwzMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyOworCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZUlucHV0OworaW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7CisKKy8qKgorICogRHVyaW5nIHJlZmVyZW5jZSB2YWxpZGF0aW9uLCB3ZSBoYXZlIHRvIHJldHJpZXZlIHJlc291cmNlcyBmcm9tIHNvbWV3aGVyZS4KKyAqIFRoaXMgaXMgZG9uZSBieSByZXRyaWV2aW5nIGEgUmVzb2x2ZXIuIFRoZSByZXNvbHZlciBuZWVkcyB0d28gYXJndW1lbnRzOiBUaGUKKyAqIFVSSSBpbiB3aGljaCB0aGUgbGluayB0byB0aGUgbmV3IHJlc291cmNlIGlzIGRlZmluZWQgYW5kIHRoZSBCYXNlVVJJIG9mIHRoZQorICogZmlsZS9lbnRpdHkgaW4gd2hpY2ggdGhlIFVSSSBvY2N1cnMgKHRoZSBCYXNlVVJJIGlzIHRoZSBzYW1lIGFzIHRoZSBTeXN0ZW1JZC4KKyAqCisgKiA8VUwgeG1sOmxhbmc9IkRFIiBMQU5HPSJERSI+CisgKiA8TEk+IFZlcnNjaGllZGVuZSBJbXBsZW1lbnRpZXJ1bmdlbiBrPz9ubmVuIHNpY2ggYWxzIFJlc29sdmVyIHJlZ2lzdHJpZXJlbi4KKyAqIDxMST4gU3RhbmRhcmRtPz8/P2lnIHdlcmRlbiBlcnN0ZSBJbXBsZW1lbnRpZXJ1bmdlbiBhdWYgZGVtIFhNTCBjb25maWcgZmlsZSByZWdpc3RyaXJ0LgorICogPExJPiBEZXIgQmVudXR6ZXIga2FubiBiZWkgQmVkYXJmIEltcGxlbWVudGllcnVuZ2VuIHZvcmFuc3RlbGxlbiBvZGVyIGFuZj8/Z2VuLgorICogPExJPiBJbXBsZW1lbnRpZXJ1bmdlbiBrPz9ubmVuIG1pdHRlbHMgRmVhdHVyZXMgY3VzdG9taXplZCB3ZXJkZW4gPz8KKyAqICAgICAgKHouQi4gdW0gUHJveHktUGFzc3dvcnRlciA/P2JlcmdlYmVuIHp1IGs/P25uZW4pLgorICogPExJPiBKZWRlIEltcGxlbWVudGllcnVuZyBiZWtvbW10IGRhcyBVUkkgQXR0cmlidXQgdW5kIGRlbiBCYXNlIFVSSQorICogICAgICA/P2JlcmdlYmVuIHVuZCBtdXNzIGFudHdvcnRlbiwgb2Igc2llIGF1Zmw/P3NlbiBrYW5uLgorICogPExJPiBEaWUgZXJzdGUgSW1wbGVtZW50aWVydW5nLCBkaWUgZGllIEF1ZmdhYmUgZXJmPz9sbHQsIGY/P2hydCBkaWUgQXVmbD8/c3VuZyBkdXJjaC4KKyAqIDwvVUw+CisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICovCitwdWJsaWMgY2xhc3MgUmVzb3VyY2VSZXNvbHZlciB7CisKKyAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZyhSZXNvdXJjZVJlc29sdmVyLmNsYXNzLmdldE5hbWUoKSk7CisKKyAgIC8qKiBGaWVsZCBfYWxyZWFkeUluaXRpYWxpemVkICovCisgICBzdGF0aWMgYm9vbGVhbiBfYWxyZWFkeUluaXRpYWxpemVkID0gZmFsc2U7CisKKyAgIC8qKiB0aGVzZSBhcmUgdGhlIHN5c3RlbS13aWRlIHJlc29sdmVycyAqLworICAgc3RhdGljIExpc3QgX3Jlc29sdmVyVmVjdG9yID0gbnVsbDsKKyAgIAorICAgc3RhdGljIGJvb2xlYW4gYWxsVGhyZWFkU2FmZUluTGlzdD10cnVlOworCisgICAvKiogRmllbGQgdHJhbnNmb3JtU3BpICovCisgICBwcm90ZWN0ZWQgUmVzb3VyY2VSZXNvbHZlclNwaSBfcmVzb2x2ZXJTcGkgPSBudWxsOworCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFJlc291cmNlUmVzb2x2ZXIKKyAgICAqCisgICAgKiBAcGFyYW0gY2xhc3NOYW1lCisgICAgKiBAdGhyb3dzIENsYXNzTm90Rm91bmRFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbgorICAgICogQHRocm93cyBJbnN0YW50aWF0aW9uRXhjZXB0aW9uCisgICAgKi8KKyAgIHByaXZhdGUgUmVzb3VyY2VSZXNvbHZlcihTdHJpbmcgY2xhc3NOYW1lKQorICAgICAgICAgICB0aHJvd3MgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiwgSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb25FeGNlcHRpb24geworICAgICAgdGhpcy5fcmVzb2x2ZXJTcGkgPQorICAgICAgICAgKFJlc291cmNlUmVzb2x2ZXJTcGkpIENsYXNzLmZvck5hbWUoY2xhc3NOYW1lKS5uZXdJbnN0YW5jZSgpOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFJlc291cmNlUmVzb2x2ZXIKKyAgICAqCisgICAgKiBAcGFyYW0gcmVzb3VyY2VSZXNvbHZlcgorICAgICovCisgICBwdWJsaWMgUmVzb3VyY2VSZXNvbHZlcihSZXNvdXJjZVJlc29sdmVyU3BpIHJlc291cmNlUmVzb2x2ZXIpIHsKKyAgICAgIHRoaXMuX3Jlc29sdmVyU3BpID0gcmVzb3VyY2VSZXNvbHZlcjsKKyAgIH0KKworICAgCisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRJbnN0YW5jZQorICAgICoKKyAgICAqIEBwYXJhbSB1cmkKKyAgICAqIEBwYXJhbSBCYXNlVVJJCisgICAgKiBAcmV0dXJuIHRoZSBpbnN0bmFjZQorICAgICoKKyAgICAqIEB0aHJvd3MgUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFJlc291cmNlUmVzb2x2ZXIgZ2V0SW5zdGFuY2UoQXR0ciB1cmksIFN0cmluZyBCYXNlVVJJKQorICAgICAgICAgICB0aHJvd3MgUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbiB7CisgICAgICBpbnQgbGVuZ3RoPVJlc291cmNlUmVzb2x2ZXIuX3Jlc29sdmVyVmVjdG9yLnNpemUoKTsKKyAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKwkJICBSZXNvdXJjZVJlc29sdmVyIHJlc29sdmVyID0KKyAgICAgICAgICAgIChSZXNvdXJjZVJlc29sdmVyKSBSZXNvdXJjZVJlc29sdmVyLl9yZXNvbHZlclZlY3Rvci5nZXQoaSk7CisJCSAgUmVzb3VyY2VSZXNvbHZlciByZXNvbHZlclRtcD1udWxsOworCQkgIHRyeSB7CisJCQlyZXNvbHZlclRtcCA9ICBhbGxUaHJlYWRTYWZlSW5MaXN0IHx8IHJlc29sdmVyLl9yZXNvbHZlclNwaS5lbmdpbmVJc1RocmVhZFNhZmUoKSA/IHJlc29sdmVyIDogCisJCQkJICAJbmV3IFJlc291cmNlUmVzb2x2ZXIoKFJlc291cmNlUmVzb2x2ZXJTcGkpcmVzb2x2ZXIuX3Jlc29sdmVyU3BpLmdldENsYXNzKCkubmV3SW5zdGFuY2UoKSk7CisJCSAgfSBjYXRjaCAoSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiBlKSB7CisJCQkgIHRocm93IG5ldyBSZXNvdXJjZVJlc29sdmVyRXhjZXB0aW9uKCIiLGUsdXJpLEJhc2VVUkkpOworCQkgIH0gY2F0Y2ggKElsbGVnYWxBY2Nlc3NFeGNlcHRpb24gZSkgeworCQkJICB0aHJvdyBuZXcgUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbigiIixlLHVyaSxCYXNlVVJJKTsJCQkKKwkJICB9CisKKyAgICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkKKyAgICAgICAgIAlsb2cuZGVidWcoImNoZWNrIHJlc29sdmFiaWxpdHkgYnkgY2xhc3MgIiArIHJlc29sdmVyLl9yZXNvbHZlclNwaS5nZXRDbGFzcygpLmdldE5hbWUoKSk7CisKKyAgICAgICAgIGlmICgocmVzb2x2ZXIgIT0gbnVsbCkgJiYgcmVzb2x2ZXJUbXAuY2FuUmVzb2x2ZSh1cmksIEJhc2VVUkkpKSB7CisgICAgICAgIAkgaWYgKGkhPTApIHsKKyAgICAgICAgICAgIAkgLy91cGRhdGUgcmVzb2x2ZXIuCisgICAgICAgIAkJIC8vU3lzdGVtLm91dC5wcmludGxuKCJTd2FwaW5nIik7CisgICAgICAgIAkJIExpc3QgcmVzb2x2ZXJWZWN0b3I9KExpc3QpKChBcnJheUxpc3QpX3Jlc29sdmVyVmVjdG9yKS5jbG9uZSgpOworICAgICAgICAJCSByZXNvbHZlclZlY3Rvci5yZW1vdmUoaSk7CisgICAgICAgIAkJIHJlc29sdmVyVmVjdG9yLmFkZCgwLHJlc29sdmVyKTsgICAgICAgIAkJIAorICAgICAgICAJCSBfcmVzb2x2ZXJWZWN0b3I9cmVzb2x2ZXJWZWN0b3I7ICAgICAgICAJCSAKKyAgICAgICAgCSB9IGVsc2UgeworICAgICAgICAJCSAvL1N5c3RlbS5vdXQucHJpbnRsbigiaGl0dGluZyIpOworICAgICAgICAJIH0KKyAgICAgICAgCSAKKyAgICAgICAgICAgIHJldHVybiByZXNvbHZlclRtcDsKKyAgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyAoKHVyaSAhPSBudWxsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB1cmkuZ2V0Tm9kZVZhbHVlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIm51bGwiKSwgQmFzZVVSSSB9OworCisgICAgICB0aHJvdyBuZXcgUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbigidXRpbHMucmVzb2x2ZXIubm9DbGFzcyIsIGV4QXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaSwgQmFzZVVSSSk7CisgICB9CisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRJbnN0YW5jZQorICAgICoKKyAgICAqIEBwYXJhbSB1cmkKKyAgICAqIEBwYXJhbSBCYXNlVVJJCisgICAgKiBAcGFyYW0gaW5kaXZpZHVhbFJlc29sdmVycworICAgICogQHJldHVybiB0aGUgaW5zdGFuY2UKKyAgICAqCisgICAgKiBAdGhyb3dzIFJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBSZXNvdXJjZVJlc29sdmVyIGdldEluc3RhbmNlKAorICAgICAgICAgICBBdHRyIHVyaSwgU3RyaW5nIEJhc2VVUkksIExpc3QgaW5kaXZpZHVhbFJlc29sdmVycykKKyAgICAgICAgICAgICAgdGhyb3dzIFJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb24geworICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKSB7CisgICAgCSAgCisgICAgICAJbG9nLmRlYnVnKCJJIHdhcyBhc2tlZCB0byBjcmVhdGUgYSBSZXNvdXJjZVJlc29sdmVyIGFuZCBnb3QgIiArIChpbmRpdmlkdWFsUmVzb2x2ZXJzPT1udWxsPyAwIDogaW5kaXZpZHVhbFJlc29sdmVycy5zaXplKCkpICk7CisgICAgICAJbG9nLmRlYnVnKCIgZXh0cmEgcmVzb2x2ZXJzIHRvIG15IGV4aXN0aW5nICIgKyBSZXNvdXJjZVJlc29sdmVyLl9yZXNvbHZlclZlY3Rvci5zaXplKCkgKyAiIHN5c3RlbS13aWRlIHJlc29sdmVycyIpOworICAgICAgfQorCisgICAgICAvLyBmaXJzdCBjaGVjayB0aGUgaW5kaXZpZHVhbCBSZXNvbHZlcnMKKwkgIGludCBzaXplPTA7CisgICAgICBpZiAoKGluZGl2aWR1YWxSZXNvbHZlcnMgIT0gbnVsbCkgJiYgKChzaXplPWluZGl2aWR1YWxSZXNvbHZlcnMuc2l6ZSgpKSA+IDApKSB7CisgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgUmVzb3VyY2VSZXNvbHZlciByZXNvbHZlciA9CisgICAgICAgICAgICAgICAoUmVzb3VyY2VSZXNvbHZlcikgaW5kaXZpZHVhbFJlc29sdmVycy5nZXQoaSk7CisKKyAgICAgICAgICAgIGlmIChyZXNvbHZlciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICBTdHJpbmcgY3VycmVudENsYXNzID0gcmVzb2x2ZXIuX3Jlc29sdmVyU3BpLmdldENsYXNzKCkuZ2V0TmFtZSgpOworICAgICAgICAgICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKQorICAgICAgICAgICAgICAgCWxvZy5kZWJ1ZygiY2hlY2sgcmVzb2x2YWJpbGl0eSBieSBjbGFzcyAiICsgY3VycmVudENsYXNzKTsKKworICAgICAgICAgICAgICAgaWYgKHJlc29sdmVyLmNhblJlc29sdmUodXJpLCBCYXNlVVJJKSkgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVyOworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICAgfQorCisJICByZXR1cm4gZ2V0SW5zdGFuY2UodXJpLEJhc2VVUkkpOworICAgfQorCisgICAvKioKKyAgICAqIFRoZSBpbml0KCkgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaW5pdCgpCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBpbml0KCkgeworCisgICAgICBpZiAoIVJlc291cmNlUmVzb2x2ZXIuX2FscmVhZHlJbml0aWFsaXplZCkgeworICAgICAgICAgUmVzb3VyY2VSZXNvbHZlci5fcmVzb2x2ZXJWZWN0b3IgPSBuZXcgQXJyYXlMaXN0KDEwKTsKKyAgICAgICAgIF9hbHJlYWR5SW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAgfQorICAgfQorCisgICAgLyoqCisgICAgICogUmVnaXN0ZXJzIGEgUmVzb3VyY2VSZXNvbHZlclNwaSBjbGFzcy4gVGhpcyBtZXRob2QgbG9ncyBhIHdhcm5pbmcgaWYKKyAgICAgKiB0aGUgY2xhc3MgY2Fubm90IGJlIHJlZ2lzdGVyZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gY2xhc3NOYW1lIHRoZSBuYW1lIG9mIHRoZSBSZXNvdXJjZVJlc29sdmVyU3BpIGNsYXNzIHRvIGJlIAorICAgICAqICAgIHJlZ2lzdGVyZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgcmVnaXN0ZXIoU3RyaW5nIGNsYXNzTmFtZSkgeworIAlyZWdpc3RlcihjbGFzc05hbWUsIGZhbHNlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWdpc3RlcnMgYSBSZXNvdXJjZVJlc29sdmVyU3BpIGNsYXNzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHByb3ZpZGVyCisgICAgICogbGlzdC4gVGhpcyBtZXRob2QgbG9ncyBhIHdhcm5pbmcgaWYgdGhlIGNsYXNzIGNhbm5vdCBiZSByZWdpc3RlcmVkLgorICAgICAqCisgICAgICogQHBhcmFtIGNsYXNzTmFtZSB0aGUgbmFtZSBvZiB0aGUgUmVzb3VyY2VSZXNvbHZlclNwaSBjbGFzcyB0byBiZSAKKyAgICAgKiAgICByZWdpc3RlcmVkCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXRTdGFydChTdHJpbmcgY2xhc3NOYW1lKSB7CisJcmVnaXN0ZXIoY2xhc3NOYW1lLCB0cnVlKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHJlZ2lzdGVyKFN0cmluZyBjbGFzc05hbWUsIGJvb2xlYW4gc3RhcnQpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFJlc291cmNlUmVzb2x2ZXIgcmVzb2x2ZXIgPSBuZXcgUmVzb3VyY2VSZXNvbHZlcihjbGFzc05hbWUpOworCSAgICBpZiAoc3RhcnQpIHsKKwkgICAgICAgIFJlc291cmNlUmVzb2x2ZXIuX3Jlc29sdmVyVmVjdG9yLmFkZCgwLCByZXNvbHZlcik7CisJICAgICAgICBsb2cuZGVidWcoInJlZ2lzdGVyZWQgcmVzb2x2ZXIiKTsKKwkgICAgfSBlbHNlIHsJICAgICAgIAorCSAgICAgICAgUmVzb3VyY2VSZXNvbHZlci5fcmVzb2x2ZXJWZWN0b3IuYWRkKHJlc29sdmVyKTsKKwkgICAgfQorCSAgICBpZiAoIXJlc29sdmVyLl9yZXNvbHZlclNwaS5lbmdpbmVJc1RocmVhZFNhZmUoKSkgeworICAgICAgICAJYWxsVGhyZWFkU2FmZUluTGlzdD1mYWxzZTsgCisgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkgICAgbG9nLndhcm4oIkVycm9yIGxvYWRpbmcgcmVzb2x2ZXIgIiArIGNsYXNzTmFtZSArIiBkaXNhYmxpbmcgaXQiKTsKKyAgICAgICAgfSBjYXRjaCAoTm9DbGFzc0RlZkZvdW5kRXJyb3IgZSkgeworCSAgICBsb2cud2FybigiRXJyb3IgbG9hZGluZyByZXNvbHZlciAiICsgY2xhc3NOYW1lICsiIGRpc2FibGluZyBpdCIpOworICAgICAgICB9CisgICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCByZXNvbHZlCisgICAgKgorICAgICogQHBhcmFtIHVyaQorICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAqIEByZXR1cm4gdGhlIHJlc291cmNlCisgICAgKgorICAgICogQHRocm93cyBSZXNvdXJjZVJlc29sdmVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgWE1MU2lnbmF0dXJlSW5wdXQgcmVzb2x2ZVN0YXRpYyhBdHRyIHVyaSwgU3RyaW5nIEJhc2VVUkkpCisgICAgICAgICAgIHRocm93cyBSZXNvdXJjZVJlc29sdmVyRXhjZXB0aW9uIHsKKworICAgICAgUmVzb3VyY2VSZXNvbHZlciBteVJlc29sdmVyID0gUmVzb3VyY2VSZXNvbHZlci5nZXRJbnN0YW5jZSh1cmksIEJhc2VVUkkpOworCisgICAgICByZXR1cm4gbXlSZXNvbHZlci5yZXNvbHZlKHVyaSwgQmFzZVVSSSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHJlc29sdmUKKyAgICAqCisgICAgKiBAcGFyYW0gdXJpCisgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICogQHJldHVybiB0aGUgcmVzb3VyY2UKKyAgICAqCisgICAgKiBAdGhyb3dzIFJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIFhNTFNpZ25hdHVyZUlucHV0IHJlc29sdmUoQXR0ciB1cmksIFN0cmluZyBCYXNlVVJJKQorICAgICAgICAgICB0aHJvd3MgUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbiB7CisgICAgICByZXR1cm4gdGhpcy5fcmVzb2x2ZXJTcGkuZW5naW5lUmVzb2x2ZSh1cmksIEJhc2VVUkkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBzZXRQcm9wZXJ0eQorICAgICoKKyAgICAqIEBwYXJhbSBrZXkKKyAgICAqIEBwYXJhbSB2YWx1ZQorICAgICovCisgICBwdWJsaWMgdm9pZCBzZXRQcm9wZXJ0eShTdHJpbmcga2V5LCBTdHJpbmcgdmFsdWUpIHsKKyAgICAgIHRoaXMuX3Jlc29sdmVyU3BpLmVuZ2luZVNldFByb3BlcnR5KGtleSwgdmFsdWUpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRQcm9wZXJ0eQorICAgICoKKyAgICAqIEBwYXJhbSBrZXkKKyAgICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eQorICAgICovCisgICBwdWJsaWMgU3RyaW5nIGdldFByb3BlcnR5KFN0cmluZyBrZXkpIHsKKyAgICAgIHJldHVybiB0aGlzLl9yZXNvbHZlclNwaS5lbmdpbmVHZXRQcm9wZXJ0eShrZXkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBhZGRQcm9wZXJ0aWVzCisgICAgKgorICAgICogQHBhcmFtIHByb3BlcnRpZXMKKyAgICAqLworICAgcHVibGljIHZvaWQgYWRkUHJvcGVydGllcyhNYXAgcHJvcGVydGllcykgeworICAgICAgdGhpcy5fcmVzb2x2ZXJTcGkuZW5naW5lQWRkUHJvcGVyaWVzKHByb3BlcnRpZXMpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRQcm9wZXJ0eUtleXMKKyAgICAqCisgICAgKiBAcmV0dXJuIGFsbCBwcm9wZXJ0eSBrZXlzLgorICAgICovCisgICBwdWJsaWMgU3RyaW5nW10gZ2V0UHJvcGVydHlLZXlzKCkgeworICAgICAgcmV0dXJuIHRoaXMuX3Jlc29sdmVyU3BpLmVuZ2luZUdldFByb3BlcnR5S2V5cygpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB1bmRlcnN0YW5kc1Byb3BlcnR5CisgICAgKgorICAgICogQHBhcmFtIHByb3BlcnR5VG9UZXN0CisgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHJlc29sdmVyIHVuZGVyc3RhbmRzIHRoZSBwcm9wZXJ0eQorICAgICovCisgICBwdWJsaWMgYm9vbGVhbiB1bmRlcnN0YW5kc1Byb3BlcnR5KFN0cmluZyBwcm9wZXJ0eVRvVGVzdCkgeworICAgICAgcmV0dXJuIHRoaXMuX3Jlc29sdmVyU3BpLnVuZGVyc3RhbmRzUHJvcGVydHkocHJvcGVydHlUb1Rlc3QpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBjYW5SZXNvbHZlCisgICAgKgorICAgICogQHBhcmFtIHVyaQorICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAqIEByZXR1cm4gdHJ1ZSBpZiBpdCBjYW4gcmVzb2x2ZSB0aGUgdXJpCisgICAgKi8KKyAgIHByaXZhdGUgYm9vbGVhbiBjYW5SZXNvbHZlKEF0dHIgdXJpLCBTdHJpbmcgQmFzZVVSSSkgeworICAgICAgcmV0dXJuIHRoaXMuX3Jlc29sdmVyU3BpLmVuZ2luZUNhblJlc29sdmUodXJpLCBCYXNlVVJJKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9yZXNvbHZlci9SZXNvdXJjZVJlc29sdmVyRXhjZXB0aW9uLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvcmVzb2x2ZXIvUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyOWNiZDQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvcmVzb2x2ZXIvUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTQyIEBACisKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyOworCisKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmV4Y2VwdGlvbnMuWE1MU2VjdXJpdHlFeGNlcHRpb247CitpbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKKworCisvKioKKyAqIFRoaXMgRXhjZXB0aW9uIGlzIHRocm93biBpZiBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUKKyAqIHtAbGluayBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5yZXNvbHZlci5SZXNvdXJjZVJlc29sdmVyfSBnb2VzIHdyb25nLgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGNsYXNzIFJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb24gZXh0ZW5kcyBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisKKyAgIC8qKgorCSAqIAorCSAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBSZXNvdXJjZVJlc29sdmVyRXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICogQHBhcmFtIHVyaQorICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAqLworICAgcHVibGljIFJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb24oU3RyaW5nIF9tc2dJRCwgQXR0ciB1cmksIFN0cmluZyBCYXNlVVJJKSB7CisKKyAgICAgIHN1cGVyKF9tc2dJRCk7CisKKyAgICAgIHRoaXMuX3VyaSA9IHVyaTsKKyAgICAgIHRoaXMuX0Jhc2VVUkkgPSBCYXNlVVJJOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKiBAcGFyYW0gZXhBcmdzCisgICAgKiBAcGFyYW0gdXJpCisgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICovCisgICBwdWJsaWMgUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbihTdHJpbmcgX21zZ0lELCBPYmplY3QgZXhBcmdzW10sIEF0dHIgdXJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIEJhc2VVUkkpIHsKKworICAgICAgc3VwZXIoX21zZ0lELCBleEFyZ3MpOworCisgICAgICB0aGlzLl91cmkgPSB1cmk7CisgICAgICB0aGlzLl9CYXNlVVJJID0gQmFzZVVSSTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBSZXNvdXJjZVJlc29sdmVyRXhjZXB0aW9uCisgICAgKgorICAgICogQHBhcmFtIF9tc2dJRAorICAgICogQHBhcmFtIF9vcmlnaW5hbEV4Y2VwdGlvbgorICAgICogQHBhcmFtIHVyaQorICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAqLworICAgcHVibGljIFJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb24oU3RyaW5nIF9tc2dJRCwgRXhjZXB0aW9uIF9vcmlnaW5hbEV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHIgdXJpLCBTdHJpbmcgQmFzZVVSSSkgeworCisgICAgICBzdXBlcihfbXNnSUQsIF9vcmlnaW5hbEV4Y2VwdGlvbik7CisKKyAgICAgIHRoaXMuX3VyaSA9IHVyaTsKKyAgICAgIHRoaXMuX0Jhc2VVUkkgPSBCYXNlVVJJOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb24KKyAgICAqCisgICAgKiBAcGFyYW0gX21zZ0lECisgICAgKiBAcGFyYW0gZXhBcmdzCisgICAgKiBAcGFyYW0gX29yaWdpbmFsRXhjZXB0aW9uCisgICAgKiBAcGFyYW0gdXJpCisgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICovCisgICBwdWJsaWMgUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbihTdHJpbmcgX21zZ0lELCBPYmplY3QgZXhBcmdzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb24gX29yaWdpbmFsRXhjZXB0aW9uLCBBdHRyIHVyaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBCYXNlVVJJKSB7CisKKyAgICAgIHN1cGVyKF9tc2dJRCwgZXhBcmdzLCBfb3JpZ2luYWxFeGNlcHRpb24pOworCisgICAgICB0aGlzLl91cmkgPSB1cmk7CisgICAgICB0aGlzLl9CYXNlVVJJID0gQmFzZVVSSTsKKyAgIH0KKworICAgLy9KLQorICAgQXR0ciBfdXJpID0gbnVsbDsKKyAgIC8qKgorICAgICogCisgICAgKiBAcGFyYW0gdXJpCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHNldFVSSShBdHRyIHVyaSkgeworICAgICAgdGhpcy5fdXJpID0gdXJpOworICAgfQorICAgCisgICAvKioKKyAgICAqIAorICAgICogQHJldHVybiB0aGUgdXJpCisgICAgKi8KKyAgIHB1YmxpYyBBdHRyIGdldFVSSSgpIHsKKyAgICAgIHJldHVybiB0aGlzLl91cmk7CisgICB9CisKKyAgIFN0cmluZyBfQmFzZVVSSTsKKyAgIAorICAgLyoqCisgICAgKiAKKyAgICAqIEBwYXJhbSBCYXNlVVJJCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHNldEJhc2VVUkkoU3RyaW5nIEJhc2VVUkkpIHsKKyAgICAgIHRoaXMuX0Jhc2VVUkkgPSBCYXNlVVJJOworICAgfQorICAgCisgICAvKioKKyAgICAqIAorICAgICogQHJldHVybiB0aGUgYmFzVXJpCisgICAgKi8KKyAgIHB1YmxpYyBTdHJpbmcgZ2V0QmFzZVVSSSgpIHsKKyAgICAgIHJldHVybiB0aGlzLl9CYXNlVVJJOworICAgfQorICAgLy9KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL3Jlc29sdmVyL1Jlc291cmNlUmVzb2x2ZXJTcGkuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9yZXNvbHZlci9SZXNvdXJjZVJlc29sdmVyU3BpLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2QyNjlkZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9yZXNvbHZlci9SZXNvdXJjZVJlc29sdmVyU3BpLmphdmEKQEAgLTAsMCArMSwxODggQEAKKworLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMucmVzb2x2ZXI7CisKKworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlSW5wdXQ7CitpbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKKworCisvKioKKyAqIER1cmluZyByZWZlcmVuY2UgdmFsaWRhdGlvbiwgd2UgaGF2ZSB0byByZXRyaWV2ZSByZXNvdXJjZXMgZnJvbSBzb21ld2hlcmUuCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICovCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgUmVzb3VyY2VSZXNvbHZlclNwaSB7CisKKyAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZygKKyAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VSZXNvbHZlclNwaS5jbGFzcy5nZXROYW1lKCkpOworCisgICAvKiogRmllbGQgX3Byb3BlcnRpZXMgKi8KKyAgIHByb3RlY3RlZCBqYXZhLnV0aWwuTWFwIF9wcm9wZXJ0aWVzID0gbnVsbDsKKworICAgLyoqCisgICAgKiBUaGlzIGlzIHRoZSB3b3JraG9yc2UgbWV0aG9kIHVzZWQgdG8gcmVzb2x2ZSByZXNvdXJjZXMuCisgICAgKgorICAgICogQHBhcmFtIHVyaQorICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAqIEByZXR1cm4gdGhlIHJlc291cmNlIHdyYXBwZWQgYXJyb3VuZCBhIFhNTFNpZ25hdHVyZUlucHV0CisgICAgKgorICAgICogQHRocm93cyBSZXNvdXJjZVJlc29sdmVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBhYnN0cmFjdCBYTUxTaWduYXR1cmVJbnB1dCBlbmdpbmVSZXNvbHZlKEF0dHIgdXJpLCBTdHJpbmcgQmFzZVVSSSkKKyAgICAgIHRocm93cyBSZXNvdXJjZVJlc29sdmVyRXhjZXB0aW9uOworCisgICAvKioKKyAgICAqIE1ldGhvZCBlbmdpbmVTZXRQcm9wZXJ0eQorICAgICoKKyAgICAqIEBwYXJhbSBrZXkKKyAgICAqIEBwYXJhbSB2YWx1ZQorICAgICovCisgICBwdWJsaWMgdm9pZCBlbmdpbmVTZXRQcm9wZXJ0eShTdHJpbmcga2V5LCBTdHJpbmcgdmFsdWUpIHsKKwkgIGlmIChfcHJvcGVydGllcz09bnVsbCkgeworCQkgIF9wcm9wZXJ0aWVzPW5ldyBIYXNoTWFwKCk7CisJICB9CisgICAgICB0aGlzLl9wcm9wZXJ0aWVzLnB1dChrZXksIHZhbHVlKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lR2V0UHJvcGVydHkKKyAgICAqCisgICAgKiBAcGFyYW0ga2V5CisgICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkKKyAgICAqLworICAgcHVibGljIFN0cmluZyBlbmdpbmVHZXRQcm9wZXJ0eShTdHJpbmcga2V5KSB7CisJICBpZiAoX3Byb3BlcnRpZXM9PW51bGwpIHsKKwkJCXJldHVybiBudWxsOworCSAgfQorICAgICAgcmV0dXJuIChTdHJpbmcpIHRoaXMuX3Byb3BlcnRpZXMuZ2V0KGtleSk7CisgICB9CisKKyAgIC8qKgorICAgICogCisgICAgKiBAcGFyYW0gcHJvcGVydGllcworICAgICovCisgICBwdWJsaWMgdm9pZCBlbmdpbmVBZGRQcm9wZXJpZXMoTWFwIHByb3BlcnRpZXMpIHsKKwkgIGlmIChwcm9wZXJ0aWVzIT1udWxsKSB7CisJCSAgaWYgKF9wcm9wZXJ0aWVzPT1udWxsKSB7CisJCQkgIF9wcm9wZXJ0aWVzPW5ldyBIYXNoTWFwKCk7CisJCSAgfQorCQkgIHRoaXMuX3Byb3BlcnRpZXMucHV0QWxsKHByb3BlcnRpZXMpOworCSAgfQorICAgfQorICAgLyoqCisgICAgKiBUZWxscyBpZiB0aGUgaW1wbGVtZW50YXRpb24gZG9lcyBjYW4gYmUgcmV1c2VkIGJ5IHNldmVyYWwgdGhyZWFkcyBzYWZlbHkuCisgICAgKiBJdCBub3JtYWxseSBtZWFucyB0aGF0IHRoZSBpbXBsZW1hbnRhdGlvbiBkb2VzIG5vdCBoYXZlIGFueSBtZW1iZXIsIG9yIHRoZXJlIGlzCisgICAgKiBtZW1iZXIgY2hhbmdlIGJldHdlbiBlbmdpbmVDYW5SZXNvbHZlICYgZW5naW5lUmVzb2x2ZSBpbnZvY2F0aW9ucy4gT3IgaXQgbWFudGlhbnMgYWxsCisgICAgKiBtZW1iZXIgaW5mbyBpbiBUaHJlYWRMb2NhbCBtZXRob2RzLgorICAgICovCisgICBwdWJsaWMgYm9vbGVhbiBlbmdpbmVJc1RocmVhZFNhZmUoKSB7CisJICAgcmV0dXJuIGZhbHNlOworICAgfQorICAgLyoqCisgICAgKiBUaGlzIG1ldGhvZCBoZWxwcyB0aGUge0BsaW5rIFJlc291cmNlUmVzb2x2ZXJ9IHRvIGRlY2lkZSB3aGV0aGVyIGEKKyAgICAqIHtAbGluayBSZXNvdXJjZVJlc29sdmVyU3BpfSBpcyBhYmxlIHRvIHBlcmZvcm0gdGhlIHJlcXVlc3RlZCBhY3Rpb24uCisgICAgKgorICAgICogQHBhcmFtIHVyaQorICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgZW5naW5lIGNhbiByZXNvbHZlIHRoZSB1cmkKKyAgICAqLworICAgcHVibGljIGFic3RyYWN0IGJvb2xlYW4gZW5naW5lQ2FuUmVzb2x2ZShBdHRyIHVyaSwgU3RyaW5nIEJhc2VVUkkpOworCisgICAvKioKKyAgICAqIE1ldGhvZCBlbmdpbmVHZXRQcm9wZXJ0eUtleXMKKyAgICAqCisgICAgKiBAcmV0dXJuIHRoZSBwcm9wZXJ0eSBrZXlzCisgICAgKi8KKyAgIHB1YmxpYyBTdHJpbmdbXSBlbmdpbmVHZXRQcm9wZXJ0eUtleXMoKSB7CisgICAgICByZXR1cm4gbmV3IFN0cmluZ1swXTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdW5kZXJzdGFuZHNQcm9wZXJ0eQorICAgICoKKyAgICAqIEBwYXJhbSBwcm9wZXJ0eVRvVGVzdAorICAgICogQHJldHVybiB0cnVlIGlmIHVuZGVyc3RhbmRzIHRoZSBwcm9wZXJ0eQorICAgICovCisgICBwdWJsaWMgYm9vbGVhbiB1bmRlcnN0YW5kc1Byb3BlcnR5KFN0cmluZyBwcm9wZXJ0eVRvVGVzdCkgeworCisgICAgICBTdHJpbmdbXSB1bmRlcnN0b29kID0gdGhpcy5lbmdpbmVHZXRQcm9wZXJ0eUtleXMoKTsKKworICAgICAgaWYgKHVuZGVyc3Rvb2QgIT0gbnVsbCkgeworICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB1bmRlcnN0b29kLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAodW5kZXJzdG9vZFtpXS5lcXVhbHMocHJvcGVydHlUb1Rlc3QpKSB7CisgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgcmV0dXJuIGZhbHNlOworICAgfQorCisKKyAgIC8qKgorICAgICogRml4ZXMgYSBwbGF0Zm9ybSBkZXBlbmRlbnQgZmlsZW5hbWUgdG8gc3RhbmRhcmQgVVJJIGZvcm0uCisgICAgKgorICAgICogQHBhcmFtIHN0ciBUaGUgc3RyaW5nIHRvIGZpeC4KKyAgICAqCisgICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIGZpeGVkIFVSSSBzdHJpbmcuCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGZpeFVSSShTdHJpbmcgc3RyKSB7CisKKyAgICAgIC8vIGhhbmRsZSBwbGF0Zm9ybSBkZXBlbmRlbnQgc3RyaW5ncworICAgICAgc3RyID0gc3RyLnJlcGxhY2UoamF2YS5pby5GaWxlLnNlcGFyYXRvckNoYXIsICcvJyk7CisKKyAgICAgIGlmIChzdHIubGVuZ3RoKCkgPj0gNCkgeworCisgICAgICAgICAvLyBzdHIgPX4gL15cVzpcLyhbXi9dKS8gIyB0byBzcGVhayBwZXJsIDstKSkKKyAgICAgICAgIGNoYXIgY2gwID0gQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKHN0ci5jaGFyQXQoMCkpOworICAgICAgICAgY2hhciBjaDEgPSBzdHIuY2hhckF0KDEpOworICAgICAgICAgY2hhciBjaDIgPSBzdHIuY2hhckF0KDIpOworICAgICAgICAgY2hhciBjaDMgPSBzdHIuY2hhckF0KDMpOworICAgICAgICAgYm9vbGVhbiBpc0Rvc0ZpbGVuYW1lID0gKCgoJ0EnIDw9IGNoMCkgJiYgKGNoMCA8PSAnWicpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChjaDEgPT0gJzonKSAmJiAoY2gyID09ICcvJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoY2gzICE9ICcvJykpOworCisgICAgICAgICBpZiAoaXNEb3NGaWxlbmFtZSkgeworICAgICAgICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKQorICAgICAgICAgICAgCWxvZy5kZWJ1ZygiRm91bmQgRE9TIGZpbGVuYW1lOiAiICsgc3RyKTsKKyAgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgLy8gV2luZG93cyBmaXgKKyAgICAgIGlmIChzdHIubGVuZ3RoKCkgPj0gMikgeworICAgICAgICAgY2hhciBjaDEgPSBzdHIuY2hhckF0KDEpOworCisgICAgICAgICBpZiAoY2gxID09ICc6JykgeworICAgICAgICAgICAgY2hhciBjaDAgPSBDaGFyYWN0ZXIudG9VcHBlckNhc2Uoc3RyLmNoYXJBdCgwKSk7CisKKyAgICAgICAgICAgIGlmICgoJ0EnIDw9IGNoMCkgJiYgKGNoMCA8PSAnWicpKSB7CisgICAgICAgICAgICAgICBzdHIgPSAiLyIgKyBzdHI7CisgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICB9CisKKyAgICAgIC8vIGRvbmUKKyAgICAgIHJldHVybiBzdHI7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvcmVzb2x2ZXIvaW1wbGVtZW50YXRpb25zL1Jlc29sdmVyQW5vbnltb3VzLmphdmEgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvcmVzb2x2ZXIvaW1wbGVtZW50YXRpb25zL1Jlc29sdmVyQW5vbnltb3VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y0ZWI4MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9yZXNvbHZlci9pbXBsZW1lbnRhdGlvbnMvUmVzb2x2ZXJBbm9ueW1vdXMuamF2YQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisKK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMucmVzb2x2ZXIuaW1wbGVtZW50YXRpb25zOworCitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZUlucHV0OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyLlJlc291cmNlUmVzb2x2ZXJTcGk7CitpbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKKworLyoqCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICovCisKK3B1YmxpYyBjbGFzcyBSZXNvbHZlckFub255bW91cyBleHRlbmRzIFJlc291cmNlUmVzb2x2ZXJTcGkgeworCisgICBwcml2YXRlIFhNTFNpZ25hdHVyZUlucHV0IF9pbnB1dCA9IG51bGw7CisKKyAgIC8qKgorICAgICogQHBhcmFtIGZpbGVuYW1lCisgICAgICogQHRocm93cyBGaWxlTm90Rm91bmRFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisgICAgICovCisgICBwdWJsaWMgUmVzb2x2ZXJBbm9ueW1vdXMoU3RyaW5nIGZpbGVuYW1lKSB0aHJvd3MgRmlsZU5vdEZvdW5kRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiB7CisgICAgICB0aGlzLl9pbnB1dCA9IG5ldyBYTUxTaWduYXR1cmVJbnB1dChuZXcgRmlsZUlucHV0U3RyZWFtKGZpbGVuYW1lKSk7CisgICB9CisKKyAgIC8qKgorICAgICogQHBhcmFtIGlzCisgICAgICovCisgICBwdWJsaWMgUmVzb2x2ZXJBbm9ueW1vdXMoSW5wdXRTdHJlYW0gaXMpIHsKKyAgICAgIHRoaXMuX2lucHV0ID0gbmV3IFhNTFNpZ25hdHVyZUlucHV0KGlzKTsKKyAgIH0KKworICAgLyoqIEBpbmhlcml0RG9jICovCisgICBwdWJsaWMgWE1MU2lnbmF0dXJlSW5wdXQgZW5naW5lUmVzb2x2ZShBdHRyIHVyaSwgU3RyaW5nIEJhc2VVUkkpIHsKKyAgICAgIHJldHVybiB0aGlzLl9pbnB1dDsKKyAgIH0KKworICAgLyoqICAgIAorICAgICogQGluaGVyaXREb2MKKyAgICAqLworICAgcHVibGljIGJvb2xlYW4gZW5naW5lQ2FuUmVzb2x2ZShBdHRyIHVyaSwgU3RyaW5nIEJhc2VVUkkpIHsKKyAgICAgIGlmICh1cmkgPT0gbnVsbCkgeworICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9CisgICAgICByZXR1cm4gZmFsc2U7CisgICB9CisKKyAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgcHVibGljIFN0cmluZ1tdIGVuZ2luZUdldFByb3BlcnR5S2V5cygpIHsKKyAgICAgIHJldHVybiBuZXcgU3RyaW5nWzBdOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL3Jlc29sdmVyL2ltcGxlbWVudGF0aW9ucy9SZXNvbHZlckRpcmVjdEhUVFAuamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9yZXNvbHZlci9pbXBsZW1lbnRhdGlvbnMvUmVzb2x2ZXJEaXJlY3RIVFRQLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDgxNzM1MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9yZXNvbHZlci9pbXBsZW1lbnRhdGlvbnMvUmVzb2x2ZXJEaXJlY3RIVFRQLmphdmEKQEAgLTAsMCArMSwzMDAgQEAKKworLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMucmVzb2x2ZXIuaW1wbGVtZW50YXRpb25zOworCitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLm5ldC5VUkw7CitpbXBvcnQgamF2YS5uZXQuVVJMQ29ubmVjdGlvbjsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnV0aWxzLlVSSTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlSW5wdXQ7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQmFzZTY0OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyLlJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMucmVzb2x2ZXIuUmVzb3VyY2VSZXNvbHZlclNwaTsKK2ltcG9ydCBvcmcudzNjLmRvbS5BdHRyOworCisKKy8qKgorICogQSBzaW1wbGUgUmVzb3VyY2VSZXNvbHZlciBmb3IgSFRUUCByZXF1ZXN0cy4gVGhpcyBjbGFzcyBoYW5kbGVzIG9ubHkgJ3B1cmUnCisgKiBIVFRQIFVSSXMgd2hpY2ggbWVhbnMgd2l0aG91dCBhIGZyYWdtZW50LiBUaGUgRnJhZ21lbnQgaGFuZGxpbmcgaXMgZG9uZSBieSB0aGUKKyAqIHtAbGluayBSZXNvbHZlckZyYWdtZW50fSBjbGFzcy4KKyAqIDxCUj4KKyAqIElmIHRoZSB1c2VyIGhhcyBhIGNvcnBvcmF0ZSBIVFRQIHByb3h5IHdoaWNoIGlzIHRvIGJlIHVzZWQsIHRoZSB1c2FnZSBjYW4gYmUKKyAqIHN3aXRjaGVkIG9uIGJ5IHNldHRpbmcgcHJvcGVydGllcyBmb3IgdGhlIHJlc29sdmVyOgorICogPFBSRT4KKyAqIHJlc291cmNlUmVzb2x2ZXIuc2V0UHJvcGVydHkoImh0dHAucHJveHkuaG9zdCIsICJwcm94eS5jb21wYW55LmNvbSIpOworICogcmVzb3VyY2VSZXNvbHZlci5zZXRQcm9wZXJ0eSgiaHR0cC5wcm94eS5wb3J0IiwgIjgwODAiKTsKKyAqCisgKiAvLyBpZiB3ZSBuZWVkIGEgcGFzc3dvcmQgZm9yIHRoZSBwcm94eQorICogcmVzb3VyY2VSZXNvbHZlci5zZXRQcm9wZXJ0eSgiaHR0cC5wcm94eS51c2VybmFtZSIsICJwcm94eXVzZXIzIik7CisgKiByZXNvdXJjZVJlc29sdmVyLnNldFByb3BlcnR5KCJodHRwLnByb3h5LnBhc3N3b3JkIiwgInNlY3JldGNhIik7CisgKiA8L1BSRT4KKyAqCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICogQHNlZSA8QSBIUkVGPSJodHRwOi8vd3d3LmphdmF3b3JsZC5jb20vamF2YXdvcmxkL2phdmF0aXBzL2p3LWphdmF0aXA0Ml9wLmh0bWwiPkphdmEgVGlwIDQyOiBXcml0ZSBKYXZhIGFwcHMgdGhhdCB3b3JrIHdpdGggcHJveHktYmFzZWQgZmlyZXdhbGxzPC9BPgorICogQHNlZSA8QSBIUkVGPSJodHRwOi8vamF2YS5zdW4uY29tL2oyc2UvMS40L2RvY3MvZ3VpZGUvbmV0L3Byb3BlcnRpZXMuaHRtbCI+U1VOIEoyU0UgZG9jcyBmb3IgbmV0d29yayBwcm9wZXJ0aWVzPC9BPgorICogQHNlZSA8QSBIUkVGPSJodHRwOi8vbWV0YWxhYi51bmMuZWR1L2phdmFmYXEvamF2YWZhcS5odG1sI3Byb3h5Ij5UaGUgSkFWQSBGQVEgUXVlc3Rpb24gOS41OiBIb3cgZG8gSSBtYWtlIEphdmEgd29yayB3aXRoIGEgcHJveHkgc2VydmVyPzwvQT4KKyAqICR0b2RvJCB0aGUgcHJveHkgYmVoYXZpb3VyIHNlZW1zIG5vdCB0byB3b3JrOyBpZiBhIG9uLWV4aXN0aW5nIHByb3h5IGlzIHNldCwgaXQgd29ya3MgPyE/CisgKi8KK3B1YmxpYyBjbGFzcyBSZXNvbHZlckRpcmVjdEhUVFAgZXh0ZW5kcyBSZXNvdXJjZVJlc29sdmVyU3BpIHsKKworICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc29sdmVyRGlyZWN0SFRUUC5jbGFzcy5nZXROYW1lKCkpOworCisgICAvKiogRmllbGQgcHJvcGVydGllc1tdICovCisgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgcHJvcGVydGllc1tdID0gCisJeyAiaHR0cC5wcm94eS5ob3N0IiwgImh0dHAucHJveHkucG9ydCIsCisgICAgICAgICAgImh0dHAucHJveHkudXNlcm5hbWUiLAorICAgICAgICAgICJodHRwLnByb3h5LnBhc3N3b3JkIiwKKyAgICAgICAgICAiaHR0cC5iYXNpYy51c2VybmFtZSIsCisgICAgICAgICAgImh0dHAuYmFzaWMucGFzc3dvcmQiIH07CisKKyAgIC8qKiBGaWVsZCBIdHRwUHJveHlIb3N0ICovCisgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSHR0cFByb3h5SG9zdCA9IDA7CisKKyAgIC8qKiBGaWVsZCBIdHRwUHJveHlQb3J0ICovCisgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSHR0cFByb3h5UG9ydCA9IDE7CisKKyAgIC8qKiBGaWVsZCBIdHRwUHJveHlVc2VyICovCisgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSHR0cFByb3h5VXNlciA9IDI7CisKKyAgIC8qKiBGaWVsZCBIdHRwUHJveHlQYXNzICovCisgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSHR0cFByb3h5UGFzcyA9IDM7CisKKyAgIC8qKiBGaWVsZCBIdHRwUHJveHlVc2VyICovCisgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSHR0cEJhc2ljVXNlciA9IDQ7CisKKyAgIC8qKiBGaWVsZCBIdHRwUHJveHlQYXNzICovCisgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSHR0cEJhc2ljUGFzcyA9IDU7CisKKyAgIHB1YmxpYyBib29sZWFuIGVuZ2luZUlzVGhyZWFkU2FmZSgpIHsKKwkgICByZXR1cm4gdHJ1ZTsKKyAgIH0KKyAgIC8qKgorICAgICogTWV0aG9kIHJlc29sdmUKKyAgICAqCisgICAgKiBAcGFyYW0gdXJpCisgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICoKKyAgICAqIEB0aHJvd3MgUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbgorICAgICogQHJldHVybiAKKyAgICAqICR0b2RvJCBjYWxjdWxhdGUgdGhlIGNvcnJlY3QgVVJJIGZyb20gdGhlIGF0dHJpYnV0ZSBhbmQgdGhlIEJhc2VVUkkKKyAgICAqLworICAgcHVibGljIFhNTFNpZ25hdHVyZUlucHV0IGVuZ2luZVJlc29sdmUoQXR0ciB1cmksIFN0cmluZyBCYXNlVVJJKQorICAgICAgICAgICB0aHJvd3MgUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbiB7CisKKyAgICAgIHRyeSB7CisgICAgICAgICBib29sZWFuIHVzZVByb3h5ID0gZmFsc2U7CisgICAgICAgICBTdHJpbmcgcHJveHlIb3N0ID0KKyAgICAgICAgICAgIGVuZ2luZUdldFByb3BlcnR5KFJlc29sdmVyRGlyZWN0SFRUUAorICAgICAgICAgICAgICAgLnByb3BlcnRpZXNbUmVzb2x2ZXJEaXJlY3RIVFRQLkh0dHBQcm94eUhvc3RdKTsKKyAgICAgICAgIFN0cmluZyBwcm94eVBvcnQgPQorICAgICAgICAgICAgZW5naW5lR2V0UHJvcGVydHkoUmVzb2x2ZXJEaXJlY3RIVFRQCisgICAgICAgICAgICAgICAucHJvcGVydGllc1tSZXNvbHZlckRpcmVjdEhUVFAuSHR0cFByb3h5UG9ydF0pOworCisgICAgICAgICBpZiAoKHByb3h5SG9zdCAhPSBudWxsKSAmJiAocHJveHlQb3J0ICE9IG51bGwpKSB7CisgICAgICAgICAgICB1c2VQcm94eSA9IHRydWU7CisgICAgICAgICB9CisKKwkgU3RyaW5nIG9sZFByb3h5U2V0ID0gbnVsbDsKKwkgU3RyaW5nIG9sZFByb3h5SG9zdCA9IG51bGw7CisJIFN0cmluZyBvbGRQcm94eVBvcnQgPSBudWxsOworICAgICAgICAgLy8gc3dpdGNoIG9uIHByb3h5IHVzYWdlCisgICAgICAgICBpZiAodXNlUHJveHkpIHsKKyAgICAgICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkgeworICAgICAgICAgICAgCWxvZy5kZWJ1ZygiVXNlIG9mIEhUVFAgcHJveHkgZW5hYmxlZDogIiArIHByb3h5SG9zdCArICI6IgorICAgICAgICAgICAgICAgICAgICAgICsgcHJveHlQb3J0KTsKKwkgICAgfQorICAgICAgICAgICAgb2xkUHJveHlTZXQgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImh0dHAucHJveHlTZXQiKTsKKyAgICAgICAgICAgIG9sZFByb3h5SG9zdCA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiaHR0cC5wcm94eUhvc3QiKTsKKyAgICAgICAgICAgIG9sZFByb3h5UG9ydCA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiaHR0cC5wcm94eVBvcnQiKTsKKyAgICAgICAgICAgIFN5c3RlbS5zZXRQcm9wZXJ0eSgiaHR0cC5wcm94eVNldCIsICJ0cnVlIik7CisgICAgICAgICAgICBTeXN0ZW0uc2V0UHJvcGVydHkoImh0dHAucHJveHlIb3N0IiwgcHJveHlIb3N0KTsKKyAgICAgICAgICAgIFN5c3RlbS5zZXRQcm9wZXJ0eSgiaHR0cC5wcm94eVBvcnQiLCBwcm94eVBvcnQpOworICAgICAgICAgfQorCisgICAgICAgICBib29sZWFuIHN3aXRjaEJhY2tQcm94eSA9ICgob2xkUHJveHlTZXQgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChvbGRQcm94eUhvc3QgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChvbGRQcm94eVBvcnQgIT0gbnVsbCkpOworCisgICAgICAgICAvLyBjYWxjdWxhdGUgbmV3IFVSSQorICAgICAgICAgVVJJIHVyaU5ldyA9IGdldE5ld1VSSSh1cmkuZ2V0Tm9kZVZhbHVlKCksIEJhc2VVUkkpOworCisgICAgICAgICAvLyBpZiB0aGUgVVJJIGNvbnRhaW5zIGEgZnJhZ21lbnQsIGlnbm9yZSBpdAorICAgICAgICAgVVJJIHVyaU5ld05vRnJhZyA9IG5ldyBVUkkodXJpTmV3KTsKKworICAgICAgICAgdXJpTmV3Tm9GcmFnLnNldEZyYWdtZW50KG51bGwpOworCisgICAgICAgICBVUkwgdXJsID0gbmV3IFVSTCh1cmlOZXdOb0ZyYWcudG9TdHJpbmcoKSk7CisgICAgICAgICBVUkxDb25uZWN0aW9uIHVybENvbm5lY3Rpb24gPSB1cmwub3BlbkNvbm5lY3Rpb24oKTsKKworICAgICAgICAgeworCisgICAgICAgICAgICAvLyBzZXQgcHJveHkgcGFzcworICAgICAgICAgICAgU3RyaW5nIHByb3h5VXNlciA9CisgICAgICAgICAgICAgICBlbmdpbmVHZXRQcm9wZXJ0eShSZXNvbHZlckRpcmVjdEhUVFAKKyAgICAgICAgICAgICAgICAgIC5wcm9wZXJ0aWVzW1Jlc29sdmVyRGlyZWN0SFRUUC5IdHRwUHJveHlVc2VyXSk7CisgICAgICAgICAgICBTdHJpbmcgcHJveHlQYXNzID0KKyAgICAgICAgICAgICAgIGVuZ2luZUdldFByb3BlcnR5KFJlc29sdmVyRGlyZWN0SFRUUAorICAgICAgICAgICAgICAgICAgLnByb3BlcnRpZXNbUmVzb2x2ZXJEaXJlY3RIVFRQLkh0dHBQcm94eVBhc3NdKTsKKworICAgICAgICAgICAgaWYgKChwcm94eVVzZXIgIT0gbnVsbCkgJiYgKHByb3h5UGFzcyAhPSBudWxsKSkgeworICAgICAgICAgICAgICAgU3RyaW5nIHBhc3N3b3JkID0gcHJveHlVc2VyICsgIjoiICsgcHJveHlQYXNzOworICAgICAgICAgICAgICAgU3RyaW5nIGVuY29kZWRQYXNzd29yZCA9IEJhc2U2NC5lbmNvZGUocGFzc3dvcmQuZ2V0Qnl0ZXMoKSk7CisKKyAgICAgICAgICAgICAgIC8vIG9yIHdhcyBpdCBQcm94eS1BdXRoZW50aWNhdGUgPworICAgICAgICAgICAgICAgdXJsQ29ubmVjdGlvbi5zZXRSZXF1ZXN0UHJvcGVydHkoIlByb3h5LUF1dGhvcml6YXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlZFBhc3N3b3JkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKworICAgICAgICAgeworCisgICAgICAgICAgICAvLyBjaGVjayBpZiBCYXNpYyBhdXRoZW50aWNhdGlvbiBpcyByZXF1aXJlZAorICAgICAgICAgICAgU3RyaW5nIGF1dGggPSB1cmxDb25uZWN0aW9uLmdldEhlYWRlckZpZWxkKCJXV1ctQXV0aGVudGljYXRlIik7CisKKyAgICAgICAgICAgIGlmIChhdXRoICE9IG51bGwpIHsKKworICAgICAgICAgICAgICAgLy8gZG8gaHR0cCBiYXNpYyBhdXRoZW50aWNhdGlvbgorICAgICAgICAgICAgICAgaWYgKGF1dGguc3RhcnRzV2l0aCgiQmFzaWMiKSkgeworICAgICAgICAgICAgICAgICAgU3RyaW5nIHVzZXIgPQorICAgICAgICAgICAgICAgICAgICAgZW5naW5lR2V0UHJvcGVydHkoUmVzb2x2ZXJEaXJlY3RIVFRQCisgICAgICAgICAgICAgICAgICAgICAgICAucHJvcGVydGllc1tSZXNvbHZlckRpcmVjdEhUVFAuSHR0cEJhc2ljVXNlcl0pOworICAgICAgICAgICAgICAgICAgU3RyaW5nIHBhc3MgPQorICAgICAgICAgICAgICAgICAgICAgZW5naW5lR2V0UHJvcGVydHkoUmVzb2x2ZXJEaXJlY3RIVFRQCisgICAgICAgICAgICAgICAgICAgICAgICAucHJvcGVydGllc1tSZXNvbHZlckRpcmVjdEhUVFAuSHR0cEJhc2ljUGFzc10pOworCisgICAgICAgICAgICAgICAgICBpZiAoKHVzZXIgIT0gbnVsbCkgJiYgKHBhc3MgIT0gbnVsbCkpIHsKKyAgICAgICAgICAgICAgICAgICAgIHVybENvbm5lY3Rpb24gPSB1cmwub3BlbkNvbm5lY3Rpb24oKTsKKworICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHBhc3N3b3JkID0gdXNlciArICI6IiArIHBhc3M7CisgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZW5jb2RlZFBhc3N3b3JkID0KKyAgICAgICAgICAgICAgICAgICAgICAgIEJhc2U2NC5lbmNvZGUocGFzc3dvcmQuZ2V0Qnl0ZXMoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgIC8vIHNldCBhdXRoZW50aWNhdGlvbiBwcm9wZXJ0eSBpbiB0aGUgaHR0cCBoZWFkZXIKKyAgICAgICAgICAgICAgICAgICAgIHVybENvbm5lY3Rpb24uc2V0UmVxdWVzdFByb3BlcnR5KCJBdXRob3JpemF0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCYXNpYyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGVuY29kZWRQYXNzd29yZCk7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICB9CisKKyAgICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IHVybENvbm5lY3Rpb24uZ2V0SGVhZGVyRmllbGQoIkNvbnRlbnQtVHlwZSIpOworICAgICAgICAgSW5wdXRTdHJlYW0gaW5wdXRTdHJlYW0gPSB1cmxDb25uZWN0aW9uLmdldElucHV0U3RyZWFtKCk7CisgICAgICAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gYmFvcyA9IG5ldyBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKTsKKyAgICAgICAgIGJ5dGUgYnVmW10gPSBuZXcgYnl0ZVs0MDk2XTsKKyAgICAgICAgIGludCByZWFkID0gMDsKKyAgICAgICAgIGludCBzdW1tYXJpemVkID0gMDsKKworICAgICAgICAgd2hpbGUgKChyZWFkID0gaW5wdXRTdHJlYW0ucmVhZChidWYpKSA+PSAwKSB7CisgICAgICAgICAgICBiYW9zLndyaXRlKGJ1ZiwgMCwgcmVhZCk7CisKKyAgICAgICAgICAgIHN1bW1hcml6ZWQgKz0gcmVhZDsKKyAgICAgICAgIH0KKworICAgICAgICAgbG9nLmRlYnVnKCJGZXRjaGVkICIgKyBzdW1tYXJpemVkICsgIiBieXRlcyBmcm9tIFVSSSAiCisgICAgICAgICAgICAgICAgICAgKyB1cmlOZXcudG9TdHJpbmcoKSk7CisKKyAgICAgICAgIFhNTFNpZ25hdHVyZUlucHV0IHJlc3VsdCA9IG5ldyBYTUxTaWduYXR1cmVJbnB1dChiYW9zLnRvQnl0ZUFycmF5KCkpOworCisgICAgICAgICAvLyBYTUxTaWduYXR1cmVJbnB1dCByZXN1bHQgPSBuZXcgWE1MU2lnbmF0dXJlSW5wdXQoaW5wdXRTdHJlYW0pOworICAgICAgICAgcmVzdWx0LnNldFNvdXJjZVVSSSh1cmlOZXcudG9TdHJpbmcoKSk7CisgICAgICAgICByZXN1bHQuc2V0TUlNRVR5cGUobWltZVR5cGUpOworCisgICAgICAgICAvLyBzd2l0Y2ggb2ZmIHByb3h5IHVzYWdlCisgICAgICAgICBpZiAodXNlUHJveHkgJiYgc3dpdGNoQmFja1Byb3h5KSB7CisgICAgICAgICAgICBTeXN0ZW0uc2V0UHJvcGVydHkoImh0dHAucHJveHlTZXQiLCBvbGRQcm94eVNldCk7CisgICAgICAgICAgICBTeXN0ZW0uc2V0UHJvcGVydHkoImh0dHAucHJveHlIb3N0Iiwgb2xkUHJveHlIb3N0KTsKKyAgICAgICAgICAgIFN5c3RlbS5zZXRQcm9wZXJ0eSgiaHR0cC5wcm94eVBvcnQiLCBvbGRQcm94eVBvcnQpOworICAgICAgICAgfQorCisgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgfSBjYXRjaCAoTWFsZm9ybWVkVVJMRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICB0aHJvdyBuZXcgUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbigiZ2VuZXJpYy5FbXB0eU1lc3NhZ2UiLCBleCwgdXJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzZVVSSSk7CisgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb24oImdlbmVyaWMuRW1wdHlNZXNzYWdlIiwgZXgsIHVyaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2VVUkkpOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIFdlIHJlc29sdmUgaHR0cCBVUklzIDxJPndpdGhvdXQ8L0k+IGZyYWdtZW50Li4uCisgICAgKgorICAgICogQHBhcmFtIHVyaQorICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAqICBAcmV0dXJuIHRydWUgaWYgY2FuIGJlIHJlc29sdmVkCisgICAgKi8KKyAgIHB1YmxpYyBib29sZWFuIGVuZ2luZUNhblJlc29sdmUoQXR0ciB1cmksIFN0cmluZyBCYXNlVVJJKSB7CisgICAgICBpZiAodXJpID09IG51bGwpIHsKKyAgICAgICAgIGxvZy5kZWJ1ZygicXVpY2sgZmFpbCwgdXJpID09IG51bGwiKTsKKworICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorCisgICAgICBTdHJpbmcgdXJpTm9kZVZhbHVlID0gdXJpLmdldE5vZGVWYWx1ZSgpOworCisgICAgICBpZiAodXJpTm9kZVZhbHVlLmVxdWFscygiIikgfHwgKHVyaU5vZGVWYWx1ZS5jaGFyQXQoMCk9PScjJykpIHsKKyAgICAgICAgIGxvZy5kZWJ1ZygicXVpY2sgZmFpbCBmb3IgZW1wdHkgVVJJcyBhbmQgbG9jYWwgb25lcyIpOworCisgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisKKyAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkgeworICAgICAgCSBsb2cuZGVidWcoIkkgd2FzIGFza2VkIHdoZXRoZXIgSSBjYW4gcmVzb2x2ZSAiICsgdXJpTm9kZVZhbHVlKTsKKyAgICAgIH0KKworICAgICAgaWYgKCB1cmlOb2RlVmFsdWUuc3RhcnRzV2l0aCgiaHR0cDoiKSB8fAorCQkJCShCYXNlVVJJIT1udWxsICYmIEJhc2VVUkkuc3RhcnRzV2l0aCgiaHR0cDoiKSApKSB7CisgICAgICAgICBpZiAobG9nLmlzRGVidWdFbmFibGVkKCkpIHsKKyAgICAgICAJICAgIGxvZy5kZWJ1ZygiSSBzdGF0ZSB0aGF0IEkgY2FuIHJlc29sdmUgIiArIHVyaU5vZGVWYWx1ZSk7CisJIH0KKworICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9CisKKyAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkgeworICAgICAgCSBsb2cuZGVidWcoIkkgc3RhdGUgdGhhdCBJIGNhbid0IHJlc29sdmUgIiArIHVyaU5vZGVWYWx1ZSk7CisgICAgICB9CisKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgIH0KKworICAgLyoqCisgICAgKiBAaW5oZXJpdERvYyAKKyAgICAqLworICAgcHVibGljIFN0cmluZ1tdIGVuZ2luZUdldFByb3BlcnR5S2V5cygpIHsKKyAgICAgIHJldHVybiAoU3RyaW5nW10pIFJlc29sdmVyRGlyZWN0SFRUUC5wcm9wZXJ0aWVzLmNsb25lKCk7CisgICB9CisKKyAgIHByaXZhdGUgVVJJIGdldE5ld1VSSShTdHJpbmcgdXJpLCBTdHJpbmcgQmFzZVVSSSkKKyAgICAgICAgICAgdGhyb3dzIFVSSS5NYWxmb3JtZWRVUklFeGNlcHRpb24geworCisgICAgICBpZiAoKEJhc2VVUkkgPT0gbnVsbCkgfHwgIiIuZXF1YWxzKEJhc2VVUkkpKSB7CisgICAgICAgICByZXR1cm4gbmV3IFVSSSh1cmkpOworICAgICAgfQorICAgICAgcmV0dXJuIG5ldyBVUkkobmV3IFVSSShCYXNlVVJJKSwgdXJpKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9yZXNvbHZlci9pbXBsZW1lbnRhdGlvbnMvUmVzb2x2ZXJGcmFnbWVudC5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL3Jlc29sdmVyL2ltcGxlbWVudGF0aW9ucy9SZXNvbHZlckZyYWdtZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE2M2IxZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9yZXNvbHZlci9pbXBsZW1lbnRhdGlvbnMvUmVzb2x2ZXJGcmFnbWVudC5qYXZhCkBAIC0wLDAgKzEsMTM5IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5yZXNvbHZlci5pbXBsZW1lbnRhdGlvbnM7CisKKworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZUlucHV0OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLklkUmVzb2x2ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMucmVzb2x2ZXIuUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5yZXNvbHZlci5SZXNvdXJjZVJlc29sdmVyU3BpOworaW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKKworCisvKioKKyAqIFRoaXMgcmVzb2x2ZXIgaXMgdXNlZCBmb3IgcmVzb2x2aW5nIHNhbWUtZG9jdW1lbnQgVVJJcyBsaWtlIFVSST0iIiBvZiBVUkk9IiNpZCIuCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICogQHNlZSA8QSBIUkVGPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWxkc2lnLWNvcmUvI3NlYy1SZWZlcmVuY2VQcm9jZXNzaW5nTW9kZWwiPlRoZSBSZWZlcmVuY2UgcHJvY2Vzc2luZyBtb2RlbCBpbiB0aGUgWE1MIFNpZ25hdHVyZSBzcGVjPC9BPgorICogQHNlZSA8QSBIUkVGPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWxkc2lnLWNvcmUvI3NlYy1TYW1lLURvY3VtZW50Ij5TYW1lLURvY3VtZW50IFVSSS1SZWZlcmVuY2VzIGluIHRoZSBYTUwgU2lnbmF0dXJlIHNwZWM8L0E+CisgKiBAc2VlIDxBIEhSRUY9Imh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzIzOTYudHh0Ij5TZWN0aW9uIDQuMiBvZiBSRkMgMjM5NjwvQT4KKyAqLworcHVibGljIGNsYXNzIFJlc29sdmVyRnJhZ21lbnQgZXh0ZW5kcyBSZXNvdXJjZVJlc29sdmVyU3BpIHsKKworICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc29sdmVyRnJhZ21lbnQuY2xhc3MuZ2V0TmFtZSgpKTsKKyAgIHB1YmxpYyBib29sZWFuIGVuZ2luZUlzVGhyZWFkU2FmZSgpIHsKKyAJICAgcmV0dXJuIHRydWU7CisgICB9CisgICAvKioKKyAgICAqIE1ldGhvZCBlbmdpbmVSZXNvbHZlCisgICAgKgorICAgICogV2lyZCBkYXMgZ2xlaWNoZSBEb2t1bWVudCByZWZlcmVuemllcnQ/CisgICAgKiBXaXJkIGVpbiBhbmRlcmVzIERva3VtZW50IHJlZmVyZW56aWVydD8KKyAgICAqIEBpbmhlcml0RG9jCisgICAgKiBAcGFyYW0gdXJpCisgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICoKKyAgICAqLworICAgcHVibGljIFhNTFNpZ25hdHVyZUlucHV0IGVuZ2luZVJlc29sdmUoQXR0ciB1cmksIFN0cmluZyBCYXNlVVJJKSAKKyAgICAgICB0aHJvd3MgUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbgorICAgeworCisgICAgICBTdHJpbmcgdXJpTm9kZVZhbHVlID0gdXJpLmdldE5vZGVWYWx1ZSgpOworICAgICAgRG9jdW1lbnQgZG9jID0gdXJpLmdldE93bmVyRWxlbWVudCgpLmdldE93bmVyRG9jdW1lbnQoKTsKKworCisgICAgICBOb2RlIHNlbGVjdGVkRWxlbSA9IG51bGw7CisgICAgICBpZiAodXJpTm9kZVZhbHVlLmVxdWFscygiIikpIHsKKworICAgICAgICAgLyoKKyAgICAgICAgICAqIElkZW50aWZpZXMgdGhlIG5vZGUtc2V0IChtaW51cyBhbnkgY29tbWVudCBub2Rlcykgb2YgdGhlIFhNTAorICAgICAgICAgICogcmVzb3VyY2UgY29udGFpbmluZyB0aGUgc2lnbmF0dXJlCisgICAgICAgICAgKi8KKworICAgICAgICAgbG9nLmRlYnVnKCJSZXNvbHZlckZyYWdtZW50IHdpdGggZW1wdHkgVVJJIChtZWFucyBjb21wbGV0ZSBkb2N1bWVudCkiKTsKKwkgc2VsZWN0ZWRFbGVtID0gZG9jOworICAgICAgfSBlbHNlIHsKKworICAgICAgICAgLyoKKyAgICAgICAgICAqIFVSST0iI2NoYXB0ZXIxIgorICAgICAgICAgICogSWRlbnRpZmllcyBhIG5vZGUtc2V0IGNvbnRhaW5pbmcgdGhlIGVsZW1lbnQgd2l0aCBJRCBhdHRyaWJ1dGUKKyAgICAgICAgICAqIHZhbHVlICdjaGFwdGVyMScgb2YgdGhlIFhNTCByZXNvdXJjZSBjb250YWluaW5nIHRoZSBzaWduYXR1cmUuCisgICAgICAgICAgKiBYTUwgU2lnbmF0dXJlIChhbmQgaXRzIGFwcGxpY2F0aW9ucykgbW9kaWZ5IHRoaXMgbm9kZS1zZXQgdG8KKyAgICAgICAgICAqIGluY2x1ZGUgdGhlIGVsZW1lbnQgcGx1cyBhbGwgZGVzY2VuZGVudHMgaW5jbHVkaW5nIG5hbWVzcGFjZXMgYW5kCisgICAgICAgICAgKiBhdHRyaWJ1dGVzIC0tIGJ1dCBub3QgY29tbWVudHMuCisgICAgICAgICAgKi8KKyAgICAgICAgIFN0cmluZyBpZCA9IHVyaU5vZGVWYWx1ZS5zdWJzdHJpbmcoMSk7CisKKyAgICAgICAgIC8vIEVsZW1lbnQgc2VsZWN0ZWRFbGVtID0gZG9jLmdldEVsZW1lbnRCeUlkKGlkKTsKKyAgICAgICAgIHNlbGVjdGVkRWxlbSA9IElkUmVzb2x2ZXIuZ2V0RWxlbWVudEJ5SWQoZG9jLCBpZCk7CisgICAgICAgICBpZiAoc2VsZWN0ZWRFbGVtPT1udWxsKSB7CisgICAgICAgICAJT2JqZWN0IGV4QXJnc1tdID0geyBpZCB9OworICAgICAgICAgICAgdGhyb3cgbmV3IFJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb24oCisgICAgICAgICAgICAgICAic2lnbmF0dXJlLlZlcmlmaWNhdGlvbi5NaXNzaW5nSUQiLCBleEFyZ3MsIHVyaSwgQmFzZVVSSSk7CisgICAgICAgICB9CisgICAgICAgICBpZiAobG9nLmlzRGVidWdFbmFibGVkKCkpCisgICAgICAgICAJbG9nLmRlYnVnKCJUcnkgdG8gY2F0Y2ggYW4gRWxlbWVudCB3aXRoIElEICIgKyBpZCArICIgYW5kIEVsZW1lbnQgd2FzICIgKyBzZWxlY3RlZEVsZW0pOworICAgICAgfQorCisgICAgICBYTUxTaWduYXR1cmVJbnB1dCByZXN1bHQgPSBuZXcgWE1MU2lnbmF0dXJlSW5wdXQoc2VsZWN0ZWRFbGVtKTsKKyAgICAgIHJlc3VsdC5zZXRFeGNsdWRlQ29tbWVudHModHJ1ZSk7CisKKyAgICAgIC8vbG9nLmRlYnVnKCJXZSByZXR1cm4gYSBub2Rlc2V0IHdpdGggIiArIHJlc3VsdFNldC5zaXplKCkgKyAiIG5vZGVzIik7CisgICAgICByZXN1bHQuc2V0TUlNRVR5cGUoInRleHQveG1sIik7CSAgCisJICByZXN1bHQuc2V0U291cmNlVVJJKChCYXNlVVJJICE9IG51bGwpID8gQmFzZVVSSS5jb25jYXQodXJpLmdldE5vZGVWYWx1ZSgpKSA6CisJCSAgdXJpLmdldE5vZGVWYWx1ZSgpKTsgICAgICAKKyAgICAgIHJldHVybiByZXN1bHQ7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGVuZ2luZUNhblJlc29sdmUKKyAgICAqIEBpbmhlcml0RG9jCisgICAgKiBAcGFyYW0gdXJpCisgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICoKKyAgICAqLworICAgcHVibGljIGJvb2xlYW4gZW5naW5lQ2FuUmVzb2x2ZShBdHRyIHVyaSwgU3RyaW5nIEJhc2VVUkkpIHsKKworICAgICAgaWYgKHVyaSA9PSBudWxsKSB7CisgICAgICAgICBsb2cuZGVidWcoIlF1aWNrIGZhaWwgZm9yIG51bGwgdXJpIik7CisgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisKKyAgICAgIFN0cmluZyB1cmlOb2RlVmFsdWUgPSB1cmkuZ2V0Tm9kZVZhbHVlKCk7CisKKyAgICAgIGlmICAodXJpTm9kZVZhbHVlLmVxdWFscygiIikgfHwgCisgICAgICAgICAgICAgKCAKKyAgICAgICAgICAgICh1cmlOb2RlVmFsdWUuY2hhckF0KDApPT0nIycpIAorICAgICAgICAgICAgICAmJiAhKCh1cmlOb2RlVmFsdWUuY2hhckF0KDEpPT0neCcpICYmIHVyaU5vZGVWYWx1ZS5zdGFydHNXaXRoKCIjeHBvaW50ZXIoIikpCisgICAgICAgICAgICAgICkKKyAgICAgICAgICAgKXsKKyAgICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkKKyAgICAgICAgIAlsb2cuZGVidWcoIlN0YXRlIEkgY2FuIHJlc29sdmUgcmVmZXJlbmNlOiBcIiIgKyB1cmlOb2RlVmFsdWUgKyAiXCIiKTsKKyAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQorICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKQorICAgICAgCWxvZy5kZWJ1ZygiRG8gbm90IHNlZW0gdG8gYmUgYWJsZSB0byByZXNvbHZlIHJlZmVyZW5jZTogXCIiICsgdXJpTm9kZVZhbHVlICsgIlwiIik7CisgICAgICByZXR1cm4gZmFsc2U7CisgICB9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9yZXNvbHZlci9pbXBsZW1lbnRhdGlvbnMvUmVzb2x2ZXJMb2NhbEZpbGVzeXN0ZW0uamF2YSBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9yZXNvbHZlci9pbXBsZW1lbnRhdGlvbnMvUmVzb2x2ZXJMb2NhbEZpbGVzeXN0ZW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmZkZjRiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL3Jlc29sdmVyL2ltcGxlbWVudGF0aW9ucy9SZXNvbHZlckxvY2FsRmlsZXN5c3RlbS5qYXZhCkBAIC0wLDAgKzEsMTUwIEBACisvKgorICogQ29weXJpZ2h0IDE5OTktMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyLmltcGxlbWVudGF0aW9uczsKKworaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwudXRpbHMuVVJJOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmVJbnB1dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5yZXNvbHZlci5SZXNvdXJjZVJlc29sdmVyRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyLlJlc291cmNlUmVzb2x2ZXJTcGk7CitpbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKKworLyoqCisgKiBBIHNpbXBsZSBSZXNvdXJjZVJlc29sdmVyIGZvciByZXF1ZXN0cyBpbnRvIHRoZSBsb2NhbCBmaWxlc3lzdGVtLgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGNsYXNzIFJlc29sdmVyTG9jYWxGaWxlc3lzdGVtIGV4dGVuZHMgUmVzb3VyY2VSZXNvbHZlclNwaSB7CisKKyAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZygKKyAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZXJMb2NhbEZpbGVzeXN0ZW0uY2xhc3MuZ2V0TmFtZSgpKTsKKworICAgIHB1YmxpYyBib29sZWFuIGVuZ2luZUlzVGhyZWFkU2FmZSgpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogQGluaGVyaXREb2MKKyAgICAgKi8KKyAgICBwdWJsaWMgWE1MU2lnbmF0dXJlSW5wdXQgZW5naW5lUmVzb2x2ZShBdHRyIHVyaSwgU3RyaW5nIEJhc2VVUkkpCisgICAgICAgICAgIHRocm93cyBSZXNvdXJjZVJlc29sdmVyRXhjZXB0aW9uIHsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgVVJJIHVyaU5ldyA9IGdldE5ld1VSSSh1cmkuZ2V0Tm9kZVZhbHVlKCksIEJhc2VVUkkpOworCisgICAgICAgICAgICAvLyBpZiB0aGUgVVJJIGNvbnRhaW5zIGEgZnJhZ21lbnQsIGlnbm9yZSBpdAorICAgICAgICAgICAgVVJJIHVyaU5ld05vRnJhZyA9IG5ldyBVUkkodXJpTmV3KTsKKworICAgICAgICAgICAgdXJpTmV3Tm9GcmFnLnNldEZyYWdtZW50KG51bGwpOworCisgICAgICAgICAgICBTdHJpbmcgZmlsZU5hbWUgPQorICAgICAgICAgICAgICAgIFJlc29sdmVyTG9jYWxGaWxlc3lzdGVtCisgICAgICAgICAgICAgICAgLnRyYW5zbGF0ZVVyaVRvRmlsZW5hbWUodXJpTmV3Tm9GcmFnLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgRmlsZUlucHV0U3RyZWFtIGlucHV0U3RyZWFtID0gbmV3IEZpbGVJbnB1dFN0cmVhbShmaWxlTmFtZSk7CisgICAgICAgICAgICBYTUxTaWduYXR1cmVJbnB1dCByZXN1bHQgPSBuZXcgWE1MU2lnbmF0dXJlSW5wdXQoaW5wdXRTdHJlYW0pOworCisgICAgICAgICAgICByZXN1bHQuc2V0U291cmNlVVJJKHVyaU5ldy50b1N0cmluZygpKTsKKworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBSZXNvdXJjZVJlc29sdmVyRXhjZXB0aW9uKCJnZW5lcmljLkVtcHR5TWVzc2FnZSIsIGUsIHVyaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzZVVSSSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgRklMRV9VUklfTEVOR1RIPSJmaWxlOi8iLmxlbmd0aCgpOworICAgIC8qKgorICAgICAqIE1ldGhvZCB0cmFuc2xhdGVVcmlUb0ZpbGVuYW1lCisgICAgICoKKyAgICAgKiBAcGFyYW0gdXJpCisgICAgICogQHJldHVybiB0aGUgc3RyaW5nIG9mIHRoZSBmaWxlbmFtZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyB0cmFuc2xhdGVVcmlUb0ZpbGVuYW1lKFN0cmluZyB1cmkpIHsKKworICAgICAgICBTdHJpbmcgc3ViU3RyID0gdXJpLnN1YnN0cmluZyhGSUxFX1VSSV9MRU5HVEgpOworCisgICAgICAgIGlmIChzdWJTdHIuaW5kZXhPZigiJTIwIikgPiAtMSkgeworICAgICAgICAgICAgaW50IG9mZnNldCA9IDA7CisgICAgICAgICAgICBpbnQgaW5kZXggPSAwOworICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHRlbXAgPSBuZXcgU3RyaW5nQnVmZmVyKHN1YlN0ci5sZW5ndGgoKSk7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgaW5kZXggPSBzdWJTdHIuaW5kZXhPZigiJTIwIixvZmZzZXQpOworICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICB0ZW1wLmFwcGVuZChzdWJTdHIuc3Vic3RyaW5nKG9mZnNldCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRlbXAuYXBwZW5kKHN1YlN0ci5zdWJzdHJpbmcob2Zmc2V0LCBpbmRleCkpOworICAgICAgICAgICAgICAgICAgICB0ZW1wLmFwcGVuZCgnICcpOworICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBpbmRleCArIDM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSB3aGlsZShpbmRleCAhPSAtMSk7CisgICAgICAgICAgICBzdWJTdHIgPSB0ZW1wLnRvU3RyaW5nKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3ViU3RyLmNoYXJBdCgxKSA9PSAnOicpIHsKKyAgICAgIAkgICAgLy8gd2UncmUgcnVubmluZyBNJCBXaW5kb3dzLCBzbyB0aGlzIHdvcmtzIGZpbmUKKyAgICAgICAgICAgIHJldHVybiBzdWJTdHI7CisgICAgICAgIH0KKyAgICAgICAgLy8gd2UncmUgcnVubmluZyBzb21lIFVOSVgsIHNvIHdlIGhhdmUgdG8gcHJlcGVuZCBhIHNsYXNoCisgICAgICAgIHJldHVybiAiLyIgKyBzdWJTdHI7CisgICAgfQorCisgICAgLyoqCisgICAgICogQGluaGVyaXREb2MKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlbmdpbmVDYW5SZXNvbHZlKEF0dHIgdXJpLCBTdHJpbmcgQmFzZVVSSSkgeworICAgICAgICBpZiAodXJpID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIFN0cmluZyB1cmlOb2RlVmFsdWUgPSB1cmkuZ2V0Tm9kZVZhbHVlKCk7CisKKyAgICAgICAgaWYgKHVyaU5vZGVWYWx1ZS5lcXVhbHMoIiIpIHx8ICh1cmlOb2RlVmFsdWUuY2hhckF0KDApPT0nIycpIHx8CisJICAgIHVyaU5vZGVWYWx1ZS5zdGFydHNXaXRoKCJodHRwOiIpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICB0cnkgeworCSAgICBpZiAobG9nLmlzRGVidWdFbmFibGVkKCkpIHsKKwkgICAgICAgIGxvZy5kZWJ1ZygiSSB3YXMgYXNrZWQgd2hldGhlciBJIGNhbiByZXNvbHZlICIgKyB1cmlOb2RlVmFsdWUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodXJpTm9kZVZhbHVlLnN0YXJ0c1dpdGgoImZpbGU6IikgfHwKKwkJQmFzZVVSSS5zdGFydHNXaXRoKCJmaWxlOiIpKSB7CisgICAgICAgICAgICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKSB7CisJICAgICAgIAkgICAgbG9nLmRlYnVnKCJJIHN0YXRlIHRoYXQgSSBjYW4gcmVzb2x2ZSAiICsgdXJpTm9kZVZhbHVlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7fQorCisgICAgICAgIGxvZy5kZWJ1ZygiQnV0IEkgY2FuJ3QiKTsKKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgVVJJIGdldE5ld1VSSShTdHJpbmcgdXJpLCBTdHJpbmcgQmFzZVVSSSkKKyAgICAgICAgICAgdGhyb3dzIFVSSS5NYWxmb3JtZWRVUklFeGNlcHRpb24geworCisgICAgICAgIGlmIChCYXNlVVJJID09IG51bGwgfHwgIiIuZXF1YWxzKEJhc2VVUkkpKSB7CisgICAgICAgICAgICAgcmV0dXJuIG5ldyBVUkkodXJpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmV3IFVSSShuZXcgVVJJKEJhc2VVUkkpLCB1cmkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9yZXNvbHZlci9pbXBsZW1lbnRhdGlvbnMvUmVzb2x2ZXJYUG9pbnRlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL3Jlc29sdmVyL2ltcGxlbWVudGF0aW9ucy9SZXNvbHZlclhQb2ludGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWMwNWZlMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9yZXNvbHZlci9pbXBsZW1lbnRhdGlvbnMvUmVzb2x2ZXJYUG9pbnRlci5qYXZhCkBAIC0wLDAgKzEsMTkxIEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5yZXNvbHZlci5pbXBsZW1lbnRhdGlvbnM7CisKKworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZUlucHV0OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLklkUmVzb2x2ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMucmVzb2x2ZXIuUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5yZXNvbHZlci5SZXNvdXJjZVJlc29sdmVyU3BpOworaW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKKworCisvKioKKyAqIEhhbmRsZXMgYmFyZW5hbWUgWFBvaW50ZXIgUmVmZXJlbmNlIFVSSXMuCisgKiA8QlIgLz4KKyAqIFRvIHJldGFpbiBjb21tZW50cyB3aGlsZSBzZWxlY3RpbmcgYW4gZWxlbWVudCBieSBhbiBpZGVudGlmaWVyIElELAorICogdXNlIHRoZSBmb2xsb3dpbmcgZnVsbCBYUG9pbnRlcjogVVJJPScjeHBvaW50ZXIoaWQoJ0lEJykpJy4KKyAqIDxCUiAvPgorICogVG8gcmV0YWluIGNvbW1lbnRzIHdoaWxlIHNlbGVjdGluZyB0aGUgZW50aXJlIGRvY3VtZW50LAorICogdXNlIHRoZSBmb2xsb3dpbmcgZnVsbCBYUG9pbnRlcjogVVJJPScjeHBvaW50ZXIoLyknLgorICogVGhpcyBYUG9pbnRlciBjb250YWlucyBhIHNpbXBsZSBYUGF0aCBleHByZXNzaW9uIHRoYXQgaW5jbHVkZXMKKyAqIHRoZSByb290IG5vZGUsIHdoaWNoIHRoZSBzZWNvbmQgdG8gbGFzdCBzdGVwIGFib3ZlIHJlcGxhY2VzIHdpdGggYWxsCisgKiBub2RlcyBvZiB0aGUgcGFyc2UgdHJlZSAoYWxsIGRlc2NlbmRhbnRzLCBwbHVzIGFsbCBhdHRyaWJ1dGVzLAorICogcGx1cyBhbGwgbmFtZXNwYWNlcyBub2RlcykuCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICovCitwdWJsaWMgY2xhc3MgUmVzb2x2ZXJYUG9pbnRlciBleHRlbmRzIFJlc291cmNlUmVzb2x2ZXJTcGkgeworCisgICAvKioge0BsaW5rIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nfSBsb2dnaW5nIGZhY2lsaXR5ICovCisgICAgc3RhdGljIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZyBsb2cgPSAKKyAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeS5nZXRMb2coCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZXJYUG9pbnRlci5jbGFzcy5nZXROYW1lKCkpOworCisgICAgcHVibGljIGJvb2xlYW4gZW5naW5lSXNUaHJlYWRTYWZlKCkgeworICAJICAgcmV0dXJuIHRydWU7CisgICB9CisgICAvKioKKyAgICAqIEBpbmhlcml0RG9jCisgICAgKi8KKyAgIHB1YmxpYyBYTUxTaWduYXR1cmVJbnB1dCBlbmdpbmVSZXNvbHZlKEF0dHIgdXJpLCBTdHJpbmcgQmFzZVVSSSkKKyAgICAgICAgICAgdGhyb3dzIFJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb24geworCisgICAgICBOb2RlIHJlc3VsdE5vZGUgPSBudWxsOworICAgICAgRG9jdW1lbnQgZG9jID0gdXJpLmdldE93bmVyRWxlbWVudCgpLmdldE93bmVyRG9jdW1lbnQoKTsKKworICAgICAgCVN0cmluZyB1cmlTdHI9dXJpLmdldE5vZGVWYWx1ZSgpOworICAgICAgICAgaWYgKGlzWFBvaW50ZXJTbGFzaCh1cmlTdHIpKSB7CisgICAgICAgICAgICByZXN1bHROb2RlID0gZG9jOworICAgICAgICAgICAgICAgCisgICAgICAgICB9IGVsc2UgaWYgKGlzWFBvaW50ZXJJZCh1cmlTdHIpKSB7CisgICAgICAgICAgICBTdHJpbmcgaWQgPSBnZXRYUG9pbnRlcklkKHVyaVN0cik7CisgICAgICAgICAgICByZXN1bHROb2RlID1JZFJlc29sdmVyLmdldEVsZW1lbnRCeUlkKGRvYywgaWQpOworCisgICAgICAgICAgICAvLyBsb2cuZGVidWcoIlVzZSAjeHBvaW50ZXIoaWQoJyIgKyBpZCArICInKSkgb24gZWxlbWVudCAiICsgc2VsZWN0ZWRFbGVtKTsKKworICAgICAgICAgICAgaWYgKHJlc3VsdE5vZGUgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyBpZCB9OworCisgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICJzaWduYXR1cmUuVmVyaWZpY2F0aW9uLk1pc3NpbmdJRCIsIGV4QXJncywgdXJpLCBCYXNlVVJJKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICByZXN1bHROb2RlcyA9CisgICAgICAgICAgICAgICBjWFBhdGhBUEkKKyAgICAgICAgICAgICAgICAgIC5zZWxlY3ROb2RlTGlzdChzZWxlY3RlZEVsZW0sIENhbm9uaWNhbGl6ZXIKKyAgICAgICAgICAgICAgICAgICAgIC5YUEFUSF9DMTROX1dJVEhfQ09NTUVOVFNfU0lOR0xFX05PREUpOyovCisgICAgICAgICB9CisgICAgICAKKworICAgICAgWE1MU2lnbmF0dXJlSW5wdXQgcmVzdWx0ID0gbmV3IFhNTFNpZ25hdHVyZUlucHV0KHJlc3VsdE5vZGUpOworCisgICAgICByZXN1bHQuc2V0TUlNRVR5cGUoInRleHQveG1sIik7CisgICAgICBpZiAoQmFzZVVSSSAhPSBudWxsICYmIEJhc2VVUkkubGVuZ3RoKCkgPiAwKSB7CisJICByZXN1bHQuc2V0U291cmNlVVJJKEJhc2VVUkkuY29uY2F0KHVyaS5nZXROb2RlVmFsdWUoKSkpOyAgICAgIAorICAgICAgfSBlbHNlIHsKKwkgIHJlc3VsdC5zZXRTb3VyY2VVUkkodXJpLmdldE5vZGVWYWx1ZSgpKTsgICAgICAKKyAgICAgIH0KKworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgIH0KKworICAgLyoqCisgICAgKiBAaW5oZXJpdERvYworICAgICovCisgICBwdWJsaWMgYm9vbGVhbiBlbmdpbmVDYW5SZXNvbHZlKEF0dHIgdXJpLCBTdHJpbmcgQmFzZVVSSSkgeworCisgICAgICBpZiAodXJpID09IG51bGwpIHsKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKwkgIFN0cmluZyB1cmlTdHIgPXVyaS5nZXROb2RlVmFsdWUoKTsKKyAgICAgIGlmIChpc1hQb2ludGVyU2xhc2godXJpU3RyKSB8fCBpc1hQb2ludGVySWQodXJpU3RyKSkgeworICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9CisKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgaXNYUG9pbnRlclNsYXNoCisgICAgKgorICAgICogQHBhcmFtIHVyaQorICAgICogQHJldHVybiB0cnVlIGlmIGJlZ2lucyB3aXRoIHhwb2ludGVyCisgICAgKi8KKyAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNYUG9pbnRlclNsYXNoKFN0cmluZyB1cmkpIHsKKworICAgICAgaWYgKHVyaS5lcXVhbHMoIiN4cG9pbnRlcigvKSIpKSB7CisgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKworICAgICAgcmV0dXJuIGZhbHNlOworICAgfQorCisgICAKKyAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBYUD0iI3hwb2ludGVyKGlkKCI7CisgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgWFBfTEVOR1RIPVhQLmxlbmd0aCgpOworICAgLyoqCisgICAgKiBNZXRob2QgaXNYUG9pbnRlcklkCisgICAgKgorICAgICogQHBhcmFtIHVyaQorICAgICogQHJldHVybiBpdCBpdCBoYXMgYW4geHBvaW50ZXIgaWQKKyAgICAqCisgICAgKi8KKyAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNYUG9pbnRlcklkKFN0cmluZyB1cmkpIHsKKyAgICAgIAorCisgICAgICBpZiAodXJpLnN0YXJ0c1dpdGgoWFApCisgICAgICAgICAgICAgICYmIHVyaS5lbmRzV2l0aCgiKSkiKSkgeworICAgICAgICAgU3RyaW5nIGlkUGx1c0RlbGltID0gdXJpLnN1YnN0cmluZyhYUF9MRU5HVEgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaS5sZW5ndGgoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIDIpOworCisgICAgICAgICAvLyBsb2cuZGVidWcoImlkUGx1c0RlbGltPSIgKyBpZFBsdXNEZWxpbSk7CisJCSBpbnQgaWRMZW49aWRQbHVzRGVsaW0ubGVuZ3RoKCkgLTE7CisgICAgICAgICBpZiAoKChpZFBsdXNEZWxpbS5jaGFyQXQoMCkgPT0gJyInKSAmJiAoaWRQbHVzRGVsaW0KKyAgICAgICAgICAgICAgICAgLmNoYXJBdChpZExlbikgPT0gJyInKSkgfHwgKChpZFBsdXNEZWxpbQorICAgICAgICAgICAgICAgICAuY2hhckF0KDApID09ICdcJycpICYmIChpZFBsdXNEZWxpbQorICAgICAgICAgICAgICAgICAuY2hhckF0KGlkTGVuKSA9PSAnXCcnKSkpIHsKKyAgICAgICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkKKyAgICAgICAgICAgIAlsb2cuZGVidWcoIklkPSIKKyAgICAgICAgICAgICAgICAgICAgICArIGlkUGx1c0RlbGltLnN1YnN0cmluZygxLCBpZExlbikpOworCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgcmV0dXJuIGZhbHNlOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRYUG9pbnRlcklkCisgICAgKgorICAgICogQHBhcmFtIHVyaQorICAgICogQHJldHVybiB4cG9pbnRlcklkIHRvIHNlYXJjaC4KKyAgICAqLworICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGdldFhQb2ludGVySWQoU3RyaW5nIHVyaSkgeworCisKKyAgICAgIGlmICh1cmkuc3RhcnRzV2l0aChYUCkKKyAgICAgICAgICAgICAgJiYgdXJpLmVuZHNXaXRoKCIpKSIpKSB7CisgICAgICAgICBTdHJpbmcgaWRQbHVzRGVsaW0gPSB1cmkuc3Vic3RyaW5nKFhQX0xFTkdUSCx1cmkubGVuZ3RoKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAyKTsKKwkJIGludCBpZExlbj1pZFBsdXNEZWxpbS5sZW5ndGgoKSAtMTsKKyAgICAgICAgIGlmICgoKGlkUGx1c0RlbGltLmNoYXJBdCgwKSA9PSAnIicpICYmIChpZFBsdXNEZWxpbQorICAgICAgICAgICAgICAgICAuY2hhckF0KGlkTGVuKSA9PSAnIicpKSB8fCAoKGlkUGx1c0RlbGltCisgICAgICAgICAgICAgICAgIC5jaGFyQXQoMCkgPT0gJ1wnJykgJiYgKGlkUGx1c0RlbGltCisgICAgICAgICAgICAgICAgIC5jaGFyQXQoaWRMZW4pID09ICdcJycpKSkgeworICAgICAgICAgICAgcmV0dXJuIGlkUGx1c0RlbGltLnN1YnN0cmluZygxLCBpZExlbik7CisgICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHJldHVybiBudWxsOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL3Jlc29sdmVyL2ltcGxlbWVudGF0aW9ucy9wYWNrYWdlLmh0bWwgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvcmVzb2x2ZXIvaW1wbGVtZW50YXRpb25zL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTNjOTFhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3V0aWxzL3Jlc29sdmVyL2ltcGxlbWVudGF0aW9ucy9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSw4IEBACis8SFRNTD4gCis8SEVBRD4gPC9IRUFEPiAKKzxCT0RZPiAKKzxQPgoraW1wbGVtZW10YXRpb25zIG9mIGRpZmZlcmVudCBSZXNvdXJjZVJlc29sdmVyIGNsYXNzZXMgdXNlZCB0byByZXNvbHZlIGRzOlJlZmVyZW5jZSBVUklzLgorPC9QPgorPC9CT0RZPiAKKzwvSFRNTD4KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS91dGlscy9yZXNvbHZlci9wYWNrYWdlLmh0bWwgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvcmVzb2x2ZXIvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhM2FhZmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdXRpbHMvcmVzb2x2ZXIvcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsOCBAQAorPEhUTUw+IAorPEhFQUQ+IDwvSEVBRD4gCis8Qk9EWT4gCis8UD4KK3RoZSBSZXNvdXJjZVJlc29sdmVyIGNsYXNzZXMgdXNlZCB0byByZXNvbHZlIGRzOlJlZmVyZW5jZSBVUklzLgorPC9QPgorPC9CT0RZPiAKKzwvSFRNTD4KZGlmZiAtLWdpdCBhL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL0RpZ2VzdGVyT3V0cHV0U3RyZWFtLmphdmEgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9EaWdlc3Rlck91dHB1dFN0cmVhbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1NDc5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9EaWdlc3Rlck91dHB1dFN0cmVhbS5qYXZhCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IDE5OTktMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkOiBEaWdlc3Rlck91dHB1dFN0cmVhbS5qYXZhLHYgMS41IDIwMDUvMTIvMjAgMjA6MDI6MzkgbXVsbGFuIEV4cCAkCisgKi8KK3BhY2thZ2Ugb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbDsKKworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5Lk1lc3NhZ2VEaWdlc3Q7CitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyOworaW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuVW5zeW5jQnl0ZUFycmF5T3V0cHV0U3RyZWFtOworCisvKioKKyAqIFRoaXMgY2xhc3MgaGFzIGJlZW4gbW9kaWZpZWQgc2xpZ2h0bHkgdG8gdXNlIGphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdAorICogb2JqZWN0cyBhcyBpbnB1dCwgcmF0aGVyIHRoYW4gCisgKiBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5hbGdvcml0aG1zLk1lc3NhZ2VEaWdlc3RBbGdvcml0aG0gb2JqZWN0cy4KKyAqIEl0IGFsc28gb3B0aW9uYWxseSBjYWNoZXMgdGhlIGlucHV0IGJ5dGVzLgorICoKKyAqIEBhdXRob3IgcmF1bAorICogQGF1dGhvciBTZWFuIE11bGxhbgorICovCitwdWJsaWMgY2xhc3MgRGlnZXN0ZXJPdXRwdXRTdHJlYW0gZXh0ZW5kcyBPdXRwdXRTdHJlYW0geworICAgIHByaXZhdGUgYm9vbGVhbiBidWZmZXIgPSBmYWxzZTsKKyAgICBwcml2YXRlIFVuc3luY0J5dGVBcnJheU91dHB1dFN0cmVhbSBib3M7CisgICAgcHJpdmF0ZSBmaW5hbCBNZXNzYWdlRGlnZXN0IG1kOworICAgIHByaXZhdGUgc3RhdGljIExvZ2dlciBsb2cgPSBMb2dnZXIuZ2V0TG9nZ2VyKCJvcmcuamNwLnhtbC5kc2lnLmludGVybmFsIik7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgRGlnZXN0ZXJPdXRwdXRTdHJlYW0uCisgICAgICoKKyAgICAgKiBAcGFyYW0gbWQgdGhlIE1lc3NhZ2VEaWdlc3QKKyAgICAgKi8KKyAgICBwdWJsaWMgRGlnZXN0ZXJPdXRwdXRTdHJlYW0oTWVzc2FnZURpZ2VzdCBtZCkgeworCXRoaXMobWQsIGZhbHNlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgRGlnZXN0ZXJPdXRwdXRTdHJlYW0uCisgICAgICoKKyAgICAgKiBAcGFyYW0gbWQgdGhlIE1lc3NhZ2VEaWdlc3QKKyAgICAgKiBAcGFyYW0gYnVmZmVyIGlmIHRydWUsIGNhY2hlcyB0aGUgaW5wdXQgYnl0ZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgRGlnZXN0ZXJPdXRwdXRTdHJlYW0oTWVzc2FnZURpZ2VzdCBtZCwgYm9vbGVhbiBidWZmZXIpIHsKKyAgICAgICAgdGhpcy5tZCA9IG1kOworCXRoaXMuYnVmZmVyID0gYnVmZmVyOworCWlmIChidWZmZXIpIHsKKwkgICAgYm9zID0gbmV3IFVuc3luY0J5dGVBcnJheU91dHB1dFN0cmVhbSgpOworCX0KKyAgICB9CisKKyAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICBwdWJsaWMgdm9pZCB3cml0ZShieXRlW10gaW5wdXQpIHsKKwl3cml0ZShpbnB1dCwgMCwgaW5wdXQubGVuZ3RoKTsKKyAgICB9CisgICAgCisgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgcHVibGljIHZvaWQgd3JpdGUoaW50IGlucHV0KSB7CisJaWYgKGJ1ZmZlcikgeworCSAgICBib3Mud3JpdGUoaW5wdXQpOworCX0KKwltZC51cGRhdGUoKGJ5dGUpaW5wdXQpOworICAgIH0KKyAgICAKKyAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICBwdWJsaWMgdm9pZCB3cml0ZShieXRlW10gaW5wdXQsIGludCBvZmZzZXQsIGludCBsZW4pIHsKKwlpZiAoYnVmZmVyKSB7CisJICAgIGJvcy53cml0ZShpbnB1dCwgb2Zmc2V0LCBsZW4pOworCX0KKyAgICAgICAgaWYgKGxvZy5pc0xvZ2dhYmxlKExldmVsLkZJTkVSKSkgeworCSAgICBsb2cubG9nKExldmVsLkZJTkVSLCAiUHJlLWRpZ2VzdGVkIGlucHV0OiIpOworCSAgICBTdHJpbmdCdWZmZXIgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKGxlbik7CisgICAgICAgICAgICBmb3IgKGludCBpPW9mZnNldDsgaTwob2Zmc2V0K2xlbik7IGkrKykgeworCQlzYi5hcHBlbmQoKGNoYXIpIGlucHV0W2ldKTsKKyAgICAgICAgICAgIH0KKwkgICAgbG9nLmxvZyhMZXZlbC5GSU5FUiwgc2IudG9TdHJpbmcoKSk7CisJfQorCW1kLnVwZGF0ZShpbnB1dCwgb2Zmc2V0LCBsZW4pOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgCisgICAgICovCisgICAgcHVibGljIGJ5dGVbXSBnZXREaWdlc3RWYWx1ZSgpIHsKKyAgICAgICAgIHJldHVybiBtZC5kaWdlc3QoKTsgICAKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIGFuIGlucHV0IHN0cmVhbSBjb250YWluaW5nIHRoZSBjYWNoZWQgYnl0ZXMsIG9yCisgICAgICogICAgbnVsbCBpZiBub3QgY2FjaGVkCisgICAgICovCisgICAgcHVibGljIElucHV0U3RyZWFtIGdldElucHV0U3RyZWFtKCkgeworCWlmIChidWZmZXIpIHsKKwkgICAgcmV0dXJuIG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShib3MudG9CeXRlQXJyYXkoKSk7CisJfSBlbHNlIHsKKwkgICAgcmV0dXJuIG51bGw7CisJfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL01hY091dHB1dFN0cmVhbS5qYXZhIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvTWFjT3V0cHV0U3RyZWFtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y0Y2EwMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL01hY091dHB1dFN0cmVhbS5qYXZhCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMTk5OS0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbDsKKworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmF4LmNyeXB0by5NYWM7CisKKy8qKgorICogRGVyaXZlZCBmcm9tIEFwYWNoZSBzb3VyY2VzIGFuZCBjaGFuZ2VkIHRvIHVzZSBNYWMgb2JqZWN0cyBpbnN0ZWFkIG9mIAorICogb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYWxnb3JpdGhtcy5TaWduYXR1cmVBbGdvcml0aG0gb2JqZWN0cy4KKyAqCisgKiBAYXV0aG9yIHJhdWwKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqCisgKi8KK3B1YmxpYyBjbGFzcyBNYWNPdXRwdXRTdHJlYW0gZXh0ZW5kcyBCeXRlQXJyYXlPdXRwdXRTdHJlYW0geworICAgIHByaXZhdGUgZmluYWwgTWFjIG1hYzsKKworICAgIHB1YmxpYyBNYWNPdXRwdXRTdHJlYW0oTWFjIG1hYykgeworICAgICAgICB0aGlzLm1hYyA9IG1hYzsKKyAgICB9CisKKyAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICBwdWJsaWMgdm9pZCB3cml0ZShieXRlW10gYXJnMCkgIHsKKwlzdXBlci53cml0ZShhcmcwLCAwLCBhcmcwLmxlbmd0aCk7CisgICAgICAgIG1hYy51cGRhdGUoYXJnMCk7CisgICAgfQorICAgIAorICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgIHB1YmxpYyB2b2lkIHdyaXRlKGludCBhcmcwKSB7CisJc3VwZXIud3JpdGUoYXJnMCk7CisgICAgICAgIG1hYy51cGRhdGUoKGJ5dGUpIGFyZzApOworICAgIH0KKyAgICAKKyAgICAvKiogQGluaGVyaXREb2MgKi8KKyAgICBwdWJsaWMgdm9pZCB3cml0ZShieXRlW10gYXJnMCwgaW50IGFyZzEsIGludCBhcmcyKSB7CisJc3VwZXIud3JpdGUoYXJnMCwgYXJnMSwgYXJnMik7CisgICAgICAgIG1hYy51cGRhdGUoYXJnMCwgYXJnMSwgYXJnMik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvU2lnbmVyT3V0cHV0U3RyZWFtLmphdmEgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9TaWduZXJPdXRwdXRTdHJlYW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjU3Njg3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvU2lnbmVyT3V0cHV0U3RyZWFtLmphdmEKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAxOTk5LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqICRJZDogU2lnbmVyT3V0cHV0U3RyZWFtLmphdmEsdiAxLjIgMjAwNS8wOS8xNSAxNDoyOTowMiBtdWxsYW4gRXhwICQKKyAqLworcGFja2FnZSBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsOworCitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS5zZWN1cml0eS5TaWduYXR1cmU7CitpbXBvcnQgamF2YS5zZWN1cml0eS5TaWduYXR1cmVFeGNlcHRpb247CisKKy8qKgorICogRGVyaXZlZCBmcm9tIEFwYWNoZSBzb3VyY2VzIGFuZCBjaGFuZ2VkIHRvIHVzZSBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZSAKKyAqIG9iamVjdHMgYXMgaW5wdXQgaW5zdGVhZCBvZiBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5hbGdvcml0aG1zLlNpZ25hdHVyZUFsZ29yaXRobQorICogb2JqZWN0cy4KKyAqCisgKiBAYXV0aG9yIHJhdWwKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqLworcHVibGljIGNsYXNzIFNpZ25lck91dHB1dFN0cmVhbSBleHRlbmRzIEJ5dGVBcnJheU91dHB1dFN0cmVhbSB7CisgICAgcHJpdmF0ZSBmaW5hbCBTaWduYXR1cmUgc2lnOworCisgICAgcHVibGljIFNpZ25lck91dHB1dFN0cmVhbShTaWduYXR1cmUgc2lnKSB7CisgICAgICAgIHRoaXMuc2lnPXNpZzsgICAgICAgCisgICAgfQorCisgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgcHVibGljIHZvaWQgd3JpdGUoYnl0ZVtdIGFyZzApICB7CisJc3VwZXIud3JpdGUoYXJnMCwgMCwgYXJnMC5sZW5ndGgpOworICAgICAgICB0cnkgeworCSAgICBzaWcudXBkYXRlKGFyZzApOworCX0gY2F0Y2ggKFNpZ25hdHVyZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiIitlKTsKKwl9CisgICAgfQorICAgIAorICAgIC8qKiBAaW5oZXJpdERvYyAqLworICAgIHB1YmxpYyB2b2lkIHdyaXRlKGludCBhcmcwKSB7CisJc3VwZXIud3JpdGUoYXJnMCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzaWcudXBkYXRlKChieXRlKWFyZzApOworICAgICAgICB9IGNhdGNoIChTaWduYXR1cmVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIiIrZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqIEBpbmhlcml0RG9jICovCisgICAgcHVibGljIHZvaWQgd3JpdGUoYnl0ZVtdIGFyZzAsIGludCBhcmcxLCBpbnQgYXJnMikgeworCXN1cGVyLndyaXRlKGFyZzAsIGFyZzEsIGFyZzIpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgc2lnLnVwZGF0ZShhcmcwLGFyZzEsYXJnMik7CisgICAgICAgIH0gY2F0Y2ggKFNpZ25hdHVyZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiIitlKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9BYnN0cmFjdERPTVNpZ25hdHVyZU1ldGhvZC5qYXZhIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0Fic3RyYWN0RE9NU2lnbmF0dXJlTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWUzMDFiMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9BYnN0cmFjdERPTVNpZ25hdHVyZU1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsMTk2IEBACisvKgorICogQ29weXJpZ2h0IDIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCitwYWNrYWdlIG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tOworCitpbXBvcnQgamF2YS5zZWN1cml0eS5LZXk7CitpbXBvcnQgamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYzsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLk1hcnNoYWxFeGNlcHRpb247CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kb20uRE9NQ3J5cHRvQ29udGV4dDsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuU2lnbmF0dXJlTWV0aG9kOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5TaWduZWRJbmZvOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5YTUxTaWduYXR1cmU7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLlhNTFNpZ25hdHVyZUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuWE1MU2lnbkNvbnRleHQ7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLlhNTFZhbGlkYXRlQ29udGV4dDsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuc3BlYy5TaWduYXR1cmVNZXRob2RQYXJhbWV0ZXJTcGVjOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKKworLyoqCisgKiBBbiBhYnN0cmFjdCBjbGFzcyByZXByZXNlbnRpbmcgYSBTaWduYXR1cmVNZXRob2QuIFN1YmNsYXNzZXMgaW1wbGVtZW50CisgKiBhIHNwZWNpZmljIFhNTCBEU2lnIHNpZ25hdHVyZSBhbGdvcml0aG0uCisgKi8KK2Fic3RyYWN0IGNsYXNzIEFic3RyYWN0RE9NU2lnbmF0dXJlTWV0aG9kIGV4dGVuZHMgRE9NU3RydWN0dXJlIAorICAgIGltcGxlbWVudHMgU2lnbmF0dXJlTWV0aG9kIHsKKworICAgIC8vIGRlbm90ZXMgdGhlIHR5cGUgb2Ygc2lnbmF0dXJlIGFsZ29yaXRobQorICAgIGZpbmFsIHN0YXRpYyBpbnQgRFNBID0gMDsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFJTQSA9IDE7CisgICAgZmluYWwgc3RhdGljIGludCBFQ0RTQSA9IDI7CisgICAgZmluYWwgc3RhdGljIGludCBITUFDID0gMzsKKworICAgIC8qKgorICAgICAqIFZlcmlmaWVzIHRoZSBwYXNzZWQtaW4gc2lnbmF0dXJlIHdpdGggdGhlIHNwZWNpZmllZCBrZXksIHVzaW5nIHRoZQorICAgICAqIHVuZGVybHlpbmcgU2lnbmF0dXJlIG9yIE1hYyBhbGdvcml0aG0uCisgICAgICoKKyAgICAgKiBAcGFyYW0ga2V5IHRoZSB2ZXJpZmljYXRpb24ga2V5CisgICAgICogQHBhcmFtIHNpIHRoZSBTaWduZWRJbmZvCisgICAgICogQHBhcmFtIHNpZyB0aGUgc2lnbmF0dXJlIGJ5dGVzIHRvIGJlIHZlcmlmaWVkCisgICAgICogQHBhcmFtIGNvbnRleHQgdGhlIFhNTFZhbGlkYXRlQ29udGV4dAorICAgICAqIEByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIHNpZ25hdHVyZSB2ZXJpZmllZCBzdWNjZXNzZnVsbHksCisgICAgICogICAgPGNvZGU+ZmFsc2U8L2NvZGU+IGlmIG5vdAorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+a2V5PC9jb2RlPiwgPGNvZGU+c2k8L2NvZGU+IG9yCisgICAgICogICAgPGNvZGU+c2lnPC9jb2RlPiBhcmUgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiBAdGhyb3dzIEludmFsaWRLZXlFeGNlcHRpb24gaWYgdGhlIGtleSBpcyBpbXByb3Blcmx5IGVuY29kZWQsIG9mCisgICAgICogICAgdGhlIHdyb25nIHR5cGUsIG9yIHBhcmFtZXRlcnMgYXJlIG1pc3NpbmcsIGV0YworICAgICAqIEB0aHJvd3MgU2lnbmF0dXJlRXhjZXB0aW9uIGlmIGFuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJzLCBzdWNoCisgICAgICogICAgYXMgdGhlIHBhc3NlZCBpbiBzaWduYXR1cmUgaXMgaW1wcm9wZXJseSBlbmNvZGVkCisgICAgICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24gaWYgYW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cnMKKyAgICAgKi8KKyAgICBhYnN0cmFjdCBib29sZWFuIHZlcmlmeShLZXkga2V5LCBTaWduZWRJbmZvIHNpLCBieXRlW10gc2lnLAorICAgICAgICBYTUxWYWxpZGF0ZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEludmFsaWRLZXlFeGNlcHRpb24sCisgICAgICAgIFNpZ25hdHVyZUV4Y2VwdGlvbiwgWE1MU2lnbmF0dXJlRXhjZXB0aW9uOworCisgICAgLyoqCisgICAgICogU2lnbnMgdGhlIGJ5dGVzIHdpdGggdGhlIHNwZWNpZmllZCBrZXksIHVzaW5nIHRoZSB1bmRlcmx5aW5nCisgICAgICogU2lnbmF0dXJlIG9yIE1hYyBhbGdvcml0aG0uCisgICAgICoKKyAgICAgKiBAcGFyYW0ga2V5IHRoZSBzaWduaW5nIGtleQorICAgICAqIEBwYXJhbSBzaSB0aGUgU2lnbmVkSW5mbworICAgICAqIEBwYXJhbSBjb250ZXh0IHRoZSBYTUxTaWduQ29udGV4dAorICAgICAqIEByZXR1cm4gdGhlIHNpZ25hdHVyZQorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+a2V5PC9jb2RlPiBvcgorICAgICAqICAgIDxjb2RlPnNpPC9jb2RlPiBhcmUgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiBAdGhyb3dzIEludmFsaWRLZXlFeGNlcHRpb24gaWYgdGhlIGtleSBpcyBpbXByb3Blcmx5IGVuY29kZWQsIG9mCisgICAgICogICAgdGhlIHdyb25nIHR5cGUsIG9yIHBhcmFtZXRlcnMgYXJlIG1pc3NpbmcsIGV0YworICAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIGlmIGFuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJzCisgICAgICovCisgICAgYWJzdHJhY3QgYnl0ZVtdIHNpZ24oS2V5IGtleSwgU2lnbmVkSW5mbyBzaSwgWE1MU2lnbkNvbnRleHQgY29udGV4dCkKKyAgICAgICAgdGhyb3dzIEludmFsaWRLZXlFeGNlcHRpb24sIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbjsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlIG9yIGphdmF4LmNyeXB0by5NYWMgc3RhbmRhcmQgCisgICAgICogYWxnb3JpdGhtIG5hbWUuCisgICAgICovCisgICAgYWJzdHJhY3QgU3RyaW5nIGdldEpDQUFsZ29yaXRobSgpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgdHlwZSBvZiBzaWduYXR1cmUgYWxnb3JpdGhtLgorICAgICAqLworICAgIGFic3RyYWN0IGludCBnZXRBbGdvcml0aG1UeXBlKCk7CisKKyAgICAvKioKKyAgICAgKiBUaGlzIG1ldGhvZCBpbnZva2VzIHRoZSB7QGxpbmsgI21hcnNoYWxQYXJhbXMgbWFyc2hhbFBhcmFtc30KKyAgICAgKiBtZXRob2QgdG8gbWFyc2hhbCBhbnkgYWxnb3JpdGhtLXNwZWNpZmljIHBhcmFtZXRlcnMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgbWFyc2hhbChOb2RlIHBhcmVudCwgU3RyaW5nIGRzUHJlZml4LCBET01DcnlwdG9Db250ZXh0IGNvbnRleHQpCisgICAgICAgIHRocm93cyBNYXJzaGFsRXhjZXB0aW9uIHsKKyAgICAgICAgRG9jdW1lbnQgb3duZXJEb2MgPSBET01VdGlscy5nZXRPd25lckRvY3VtZW50KHBhcmVudCk7CisKKyAgICAgICAgRWxlbWVudCBzbUVsZW0gPSBET01VdGlscy5jcmVhdGVFbGVtZW50CisgICAgICAgICAgICAob3duZXJEb2MsICJTaWduYXR1cmVNZXRob2QiLCBYTUxTaWduYXR1cmUuWE1MTlMsIGRzUHJlZml4KTsKKyAgICAgICAgRE9NVXRpbHMuc2V0QXR0cmlidXRlKHNtRWxlbSwgIkFsZ29yaXRobSIsIGdldEFsZ29yaXRobSgpKTsKKworICAgICAgICBpZiAoZ2V0UGFyYW1ldGVyU3BlYygpICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1hcnNoYWxQYXJhbXMoc21FbGVtLCBkc1ByZWZpeCk7CisgICAgICAgIH0KKworICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoc21FbGVtKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNYXJzaGFscyB0aGUgYWxnb3JpdGhtLXNwZWNpZmljIHBhcmFtZXRlcnMgdG8gYW4gRWxlbWVudCBhbmQKKyAgICAgKiBhcHBlbmRzIGl0IHRvIHRoZSBzcGVjaWZpZWQgcGFyZW50IGVsZW1lbnQuIEJ5IGRlZmF1bHQsIHRoaXMgbWV0aG9kCisgICAgICogdGhyb3dzIGFuIGV4Y2VwdGlvbiBzaW5jZSBtb3N0IFNpZ25hdHVyZU1ldGhvZCBhbGdvcml0aG1zIGRvIG5vdCBoYXZlCisgICAgICogcGFyYW1ldGVycy4gU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgaXQgaWYgdGhleSBoYXZlIHBhcmFtZXRlcnMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcGFyZW50IHRoZSBwYXJlbnQgZWxlbWVudCB0byBhcHBlbmQgdGhlIHBhcmFtZXRlcnMgdG8KKyAgICAgKiBAcGFyYW0gcGFyYW1zUHJlZml4IHRoZSBhbGdvcml0aG0gcGFyYW1ldGVycyBwcmVmaXggdG8gdXNlCisgICAgICogQHRocm93cyBNYXJzaGFsRXhjZXB0aW9uIGlmIHRoZSBwYXJhbWV0ZXJzIGNhbm5vdCBiZSBtYXJzaGFsbGVkCisgICAgICovCisgICAgdm9pZCBtYXJzaGFsUGFyYW1zKEVsZW1lbnQgcGFyZW50LCBTdHJpbmcgcGFyYW1zUHJlZml4KQorICAgICAgICB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgIHRocm93IG5ldyBNYXJzaGFsRXhjZXB0aW9uKCJubyBwYXJhbWV0ZXJzIHNob3VsZCAiICsKKyAgICAgICAgICAgICJiZSBzcGVjaWZpZWQgZm9yIHRoZSAiICsgZ2V0QWxnb3JpdGhtKCkgKworICAgICAgICAgICAgIiBTaWduYXR1cmVNZXRob2QgYWxnb3JpdGhtIik7CisgICAgfQorCisgICAgLyoqCisgICAgICogVW5tYXJzaGFscyA8Y29kZT5TaWduYXR1cmVNZXRob2RQYXJhbWV0ZXJTcGVjPC9jb2RlPiBmcm9tIHRoZSBzcGVjaWZpZWQKKyAgICAgKiA8Y29kZT5FbGVtZW50PC9jb2RlPi4gQnkgZGVmYXVsdCwgdGhpcyBtZXRob2QgdGhyb3dzIGFuIGV4Y2VwdGlvbiBzaW5jZQorICAgICAqIG1vc3QgU2lnbmF0dXJlTWV0aG9kIGFsZ29yaXRobXMgZG8gbm90IGhhdmUgcGFyYW1ldGVycy4gU3ViY2xhc3NlcyBzaG91bGQKKyAgICAgKiBvdmVycmlkZSBpdCBpZiB0aGV5IGhhdmUgcGFyYW1ldGVycy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwYXJhbXNFbGVtIHRoZSA8Y29kZT5FbGVtZW50PC9jb2RlPiBob2xkaW5nIHRoZSBpbnB1dCBwYXJhbXMKKyAgICAgKiBAcmV0dXJuIHRoZSBhbGdvcml0aG0tc3BlY2lmaWMgPGNvZGU+U2lnbmF0dXJlTWV0aG9kUGFyYW1ldGVyU3BlYzwvY29kZT4KKyAgICAgKiBAdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24gaWYgdGhlIHBhcmFtZXRlcnMgY2Fubm90IGJlIHVubWFyc2hhbGxlZAorICAgICAqLworICAgIFNpZ25hdHVyZU1ldGhvZFBhcmFtZXRlclNwZWMKKyAgICAgICAgdW5tYXJzaGFsUGFyYW1zKEVsZW1lbnQgcGFyYW1zRWxlbSkgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworICAgICAgICB0aHJvdyBuZXcgTWFyc2hhbEV4Y2VwdGlvbigibm8gcGFyYW1ldGVycyBzaG91bGQgIiArCisgICAgICAgICAgICAiYmUgc3BlY2lmaWVkIGZvciB0aGUgIiArIGdldEFsZ29yaXRobSgpICsKKyAgICAgICAgICAgICIgU2lnbmF0dXJlTWV0aG9kIGFsZ29yaXRobSIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENoZWNrcyBpZiB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMgYXJlIHZhbGlkIGZvciB0aGlzIGFsZ29yaXRobS4gQnkKKyAgICAgKiBkZWZhdWx0LCB0aGlzIG1ldGhvZCB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIHBhcmFtZXRlcnMgYXJlIHNwZWNpZmllZAorICAgICAqIHNpbmNlIG1vc3QgU2lnbmF0dXJlTWV0aG9kIGFsZ29yaXRobXMgZG8gbm90IGhhdmUgcGFyYW1ldGVycy4gU3ViY2xhc3NlcworICAgICAqIHNob3VsZCBvdmVycmlkZSBpdCBpZiB0aGV5IGhhdmUgcGFyYW1ldGVycy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwYXJhbXMgdGhlIGFsZ29yaXRobS1zcGVjaWZpYyBwYXJhbXMgKG1heSBiZSA8Y29kZT5udWxsPC9jb2RlPikKKyAgICAgKiBAdGhyb3dzIEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24gaWYgdGhlIHBhcmFtZXRlcnMgYXJlIG5vdAorICAgICAqICAgIGFwcHJvcHJpYXRlIGZvciB0aGlzIHNpZ25hdHVyZSBtZXRob2QKKyAgICAgKi8KKyAgICB2b2lkIGNoZWNrUGFyYW1zKFNpZ25hdHVyZU1ldGhvZFBhcmFtZXRlclNwZWMgcGFyYW1zKQorICAgICAgICB0aHJvd3MgSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiB7CisgICAgICAgIGlmIChwYXJhbXMgIT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24oIm5vIHBhcmFtZXRlcnMgIiArCisgICAgICAgICAgICAgICAgInNob3VsZCBiZSBzcGVjaWZpZWQgZm9yIHRoZSAiICsgZ2V0QWxnb3JpdGhtKCkKKyAgICAgICAgICAgICAgICAgKyAiIFNpZ25hdHVyZU1ldGhvZCBhbGdvcml0aG0iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3QgbykgeworICAgICAgICBpZiAodGhpcyA9PSBvKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghKG8gaW5zdGFuY2VvZiBTaWduYXR1cmVNZXRob2QpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgU2lnbmF0dXJlTWV0aG9kIG9zbSA9IChTaWduYXR1cmVNZXRob2QpIG87CisKKyAgICAgICAgcmV0dXJuIChnZXRBbGdvcml0aG0oKS5lcXVhbHMob3NtLmdldEFsZ29yaXRobSgpKSAmJgorICAgICAgICAgICAgcGFyYW1zRXF1YWwob3NtLmdldFBhcmFtZXRlclNwZWMoKSkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiBwYXJhbWV0ZXJzIGFyZSBlcXVhbDsgZmFsc2Ugb3RoZXJ3aXNlLgorICAgICAqCisgICAgICogU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gY29tcGFyZSBhbGdvcml0aG0tc3BlY2lmaWMKKyAgICAgKiBwYXJhbWV0ZXJzLgorICAgICAqLworICAgIGJvb2xlYW4gcGFyYW1zRXF1YWwoQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyBzcGVjKSB7CisgICAgICAgIHJldHVybiAoZ2V0UGFyYW1ldGVyU3BlYygpID09IHNwZWMpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9BcGFjaGVDYW5vbmljYWxpemVyLmphdmEgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vQXBhY2hlQ2Fub25pY2FsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkZmEyZmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vQXBhY2hlQ2Fub25pY2FsaXplci5qYXZhCkBAIC0wLDAgKzEsMjU1IEBACisvKgorICogQ29weXJpZ2h0IDIwMDUtMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tOworCitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYzsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLlNldDsKK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7CitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWw7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZG9tLkRPTUNyeXB0b0NvbnRleHQ7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLlRyYW5zZm9ybUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuVHJhbnNmb3JtU2VydmljZTsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuc3BlYy5DMTROTWV0aG9kUGFyYW1ldGVyU3BlYzsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uQ2Fub25pY2FsaXplcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmVJbnB1dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybTsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQXBhY2hlQ2Fub25pY2FsaXplciBleHRlbmRzIFRyYW5zZm9ybVNlcnZpY2UgeworCisgICAgc3RhdGljIHsKKwlvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBMb2dnZXIgbG9nID0gTG9nZ2VyLmdldExvZ2dlcigib3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20iKTsKKyAgICBwcm90ZWN0ZWQgQ2Fub25pY2FsaXplciBhcGFjaGVDYW5vbmljYWxpemVyOworICAgIHByaXZhdGUgVHJhbnNmb3JtIGFwYWNoZVRyYW5zZm9ybTsKKyAgICBwcm90ZWN0ZWQgU3RyaW5nIGluY2x1c2l2ZU5hbWVzcGFjZXM7CisgICAgcHJvdGVjdGVkIEMxNE5NZXRob2RQYXJhbWV0ZXJTcGVjIHBhcmFtczsKKyAgICBwcm90ZWN0ZWQgRG9jdW1lbnQgb3duZXJEb2M7CisgICAgcHJvdGVjdGVkIEVsZW1lbnQgdHJhbnNmb3JtRWxlbTsKKyAgICAKKyAgICBwdWJsaWMgZmluYWwgQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyBnZXRQYXJhbWV0ZXJTcGVjKCkgeworCXJldHVybiBwYXJhbXM7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgaW5pdChYTUxTdHJ1Y3R1cmUgcGFyZW50LCBYTUxDcnlwdG9Db250ZXh0IGNvbnRleHQpCisJdGhyb3dzIEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24geworCWlmIChjb250ZXh0ICE9IG51bGwgJiYgIShjb250ZXh0IGluc3RhbmNlb2YgRE9NQ3J5cHRvQ29udGV4dCkpIHsKKwkgICAgdGhyb3cgbmV3IENsYXNzQ2FzdEV4Y2VwdGlvbgorCQkoImNvbnRleHQgbXVzdCBiZSBvZiB0eXBlIERPTUNyeXB0b0NvbnRleHQiKTsKKwl9CisgICAgICAgIHRyYW5zZm9ybUVsZW0gPSAoRWxlbWVudCkKKyAgICAgICAgICAgICgoamF2YXgueG1sLmNyeXB0by5kb20uRE9NU3RydWN0dXJlKSBwYXJlbnQpLmdldE5vZGUoKTsKKyAgICAgICAgb3duZXJEb2MgPSBET01VdGlscy5nZXRPd25lckRvY3VtZW50KHRyYW5zZm9ybUVsZW0pOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG1hcnNoYWxQYXJhbXMoWE1MU3RydWN0dXJlIHBhcmVudCwgWE1MQ3J5cHRvQ29udGV4dCBjb250ZXh0KQorCXRocm93cyBNYXJzaGFsRXhjZXB0aW9uIHsKKwlpZiAoY29udGV4dCAhPSBudWxsICYmICEoY29udGV4dCBpbnN0YW5jZW9mIERPTUNyeXB0b0NvbnRleHQpKSB7CisJICAgIHRocm93IG5ldyBDbGFzc0Nhc3RFeGNlcHRpb24KKwkJKCJjb250ZXh0IG11c3QgYmUgb2YgdHlwZSBET01DcnlwdG9Db250ZXh0Iik7CisJfQorICAgICAgICB0cmFuc2Zvcm1FbGVtID0gKEVsZW1lbnQpCisgICAgICAgICAgICAoKGphdmF4LnhtbC5jcnlwdG8uZG9tLkRPTVN0cnVjdHVyZSkgcGFyZW50KS5nZXROb2RlKCk7CisgICAgICAgIG93bmVyRG9jID0gRE9NVXRpbHMuZ2V0T3duZXJEb2N1bWVudCh0cmFuc2Zvcm1FbGVtKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIERhdGEgY2Fub25pY2FsaXplKERhdGEgZGF0YSwgWE1MQ3J5cHRvQ29udGV4dCB4YykgCisJdGhyb3dzIFRyYW5zZm9ybUV4Y2VwdGlvbiB7CisJcmV0dXJuIGNhbm9uaWNhbGl6ZShkYXRhLCB4YywgbnVsbCk7CisgICAgfQorCisgICAgcHVibGljIERhdGEgY2Fub25pY2FsaXplKERhdGEgZGF0YSwgWE1MQ3J5cHRvQ29udGV4dCB4YywgT3V0cHV0U3RyZWFtIG9zKSAKKwl0aHJvd3MgVHJhbnNmb3JtRXhjZXB0aW9uIHsKKworCWlmIChhcGFjaGVDYW5vbmljYWxpemVyID09IG51bGwpIHsKKwkgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBhcGFjaGVDYW5vbmljYWxpemVyID0gQ2Fub25pY2FsaXplci5nZXRJbnN0YW5jZShnZXRBbGdvcml0aG0oKSk7CisJCWlmIChsb2cuaXNMb2dnYWJsZShMZXZlbC5GSU5FKSkgeworICAgICAgICAgICAgICAgICAgICBsb2cubG9nKExldmVsLkZJTkUsICJDcmVhdGVkIGNhbm9uaWNhbGl6ZXIgZm9yIGFsZ29yaXRobTogIiAKKwkJICAgICAgICArIGdldEFsZ29yaXRobSgpKTsKKwkJfQorCSAgICB9IGNhdGNoIChJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiBpY2UpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtRXhjZXB0aW9uCisJCSAgICAoIkNvdWxkbid0IGZpbmQgQ2Fub25pY2FsaXplciBmb3I6ICIgKyBnZXRBbGdvcml0aG0oKSArCisJCQkiOiAiICsgaWNlLmdldE1lc3NhZ2UoKSwgaWNlKTsKKwkgICAgfQorCX0KKworCWlmIChvcyAhPSBudWxsKSB7CisJICAgIGFwYWNoZUNhbm9uaWNhbGl6ZXIuc2V0V3JpdGVyKG9zKTsKKwl9IGVsc2UgeworCSAgICBhcGFjaGVDYW5vbmljYWxpemVyLnNldFdyaXRlcihuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCkpOworCX0KKworCXRyeSB7CisJICAgIFNldCBub2RlU2V0ID0gbnVsbDsKKwkgICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBBcGFjaGVEYXRhKSB7CisJCVhNTFNpZ25hdHVyZUlucHV0IGluID0gCisJCSAgICAoKEFwYWNoZURhdGEpIGRhdGEpLmdldFhNTFNpZ25hdHVyZUlucHV0KCk7CisJCWlmIChpbi5pc0VsZW1lbnQoKSkgeworCQkgICAgaWYgKGluY2x1c2l2ZU5hbWVzcGFjZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBPY3RldFN0cmVhbURhdGEobmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFwYWNoZUNhbm9uaWNhbGl6ZXIuY2Fub25pY2FsaXplU3VidHJlZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW4uZ2V0U3ViTm9kZSgpLCBpbmNsdXNpdmVOYW1lc3BhY2VzKSkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBPY3RldFN0cmVhbURhdGEobmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFwYWNoZUNhbm9uaWNhbGl6ZXIuY2Fub25pY2FsaXplU3VidHJlZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW4uZ2V0U3ViTm9kZSgpKSkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbi5pc05vZGVTZXQoKSkgeworICAgICAgICAgICAgICAgICAgICBub2RlU2V0ID0gaW4uZ2V0Tm9kZVNldCgpOworCQl9IGVsc2UgeworCQkgICAgcmV0dXJuIG5ldyBPY3RldFN0cmVhbURhdGEobmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKAorCQkgICAgICAgIGFwYWNoZUNhbm9uaWNhbGl6ZXIuY2Fub25pY2FsaXplKAorICAgICAgICAJCSAgICBVdGlscy5yZWFkQnl0ZXNGcm9tU3RyZWFtKGluLmdldE9jdGV0U3RyZWFtKCkpKSkpOworCQl9CisJICAgIH0gZWxzZSBpZiAoZGF0YSBpbnN0YW5jZW9mIERPTVN1YlRyZWVEYXRhKSB7CisJICAgICAgICBET01TdWJUcmVlRGF0YSBzdWJUcmVlID0gKERPTVN1YlRyZWVEYXRhKSBkYXRhOworCSAgICAgICAgaWYgKGluY2x1c2l2ZU5hbWVzcGFjZXMgIT0gbnVsbCkgeworCSAgICAgICAgICAgIHJldHVybiBuZXcgT2N0ZXRTdHJlYW1EYXRhKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbQorCQkgICAgICAgIChhcGFjaGVDYW5vbmljYWxpemVyLmNhbm9uaWNhbGl6ZVN1YnRyZWUKKwkJICAgICAgICAgKHN1YlRyZWUuZ2V0Um9vdCgpLCBpbmNsdXNpdmVOYW1lc3BhY2VzKSkpOworCSAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICByZXR1cm4gbmV3IE9jdGV0U3RyZWFtRGF0YShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0KKwkJICAgICAgICAoYXBhY2hlQ2Fub25pY2FsaXplci5jYW5vbmljYWxpemVTdWJ0cmVlCisJCSAgICAgICAgIChzdWJUcmVlLmdldFJvb3QoKSkpKTsKKwkgICAgICAgIH0KKwkgICAgfSBlbHNlIGlmIChkYXRhIGluc3RhbmNlb2YgTm9kZVNldERhdGEpIHsKKwkgICAgICAgIE5vZGVTZXREYXRhIG5zZCA9IChOb2RlU2V0RGF0YSkgZGF0YTsKKwkgICAgICAgIC8vIGNvbnZlcnQgSXRlcmF0b3IgdG8gU2V0CisJICAgICAgICBub2RlU2V0ID0gVXRpbHMudG9Ob2RlU2V0KG5zZC5pdGVyYXRvcigpKTsKKwkJaWYgKGxvZy5pc0xvZ2dhYmxlKExldmVsLkZJTkUpKSB7CisJICAgICAgICAgICAgbG9nLmxvZyhMZXZlbC5GSU5FLCAiQ2Fub25pY2FsaXppbmcgIiArIG5vZGVTZXQuc2l6ZSgpIAorCQkgICAgICAgICsgIiBub2RlcyIpOworCQl9CisgICAgICAgICAgICB9IGVsc2UgeworCQlyZXR1cm4gbmV3IE9jdGV0U3RyZWFtRGF0YShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oCisJCSAgICBhcGFjaGVDYW5vbmljYWxpemVyLmNhbm9uaWNhbGl6ZSgKKyAgICAgICAgCQlVdGlscy5yZWFkQnl0ZXNGcm9tU3RyZWFtKAorICAgICAgICAJCSgoT2N0ZXRTdHJlYW1EYXRhKWRhdGEpLmdldE9jdGV0U3RyZWFtKCkpKSkpOworCSAgICB9CisJICAgIGlmIChpbmNsdXNpdmVOYW1lc3BhY2VzICE9IG51bGwpIHsKKwkgICAgICAgIHJldHVybiBuZXcgT2N0ZXRTdHJlYW1EYXRhKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbSgKKyAgICAgICAgICAgICAgICAgICAgYXBhY2hlQ2Fub25pY2FsaXplci5jYW5vbmljYWxpemVYUGF0aE5vZGVTZXQKKwkJICAgICAgICAobm9kZVNldCwgaW5jbHVzaXZlTmFtZXNwYWNlcykpKTsKKwkgICAgfSBlbHNlIHsKKwkgICAgICAgIHJldHVybiBuZXcgT2N0ZXRTdHJlYW1EYXRhKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbSgKKyAgICAgICAgICAgICAgICAgICAgYXBhY2hlQ2Fub25pY2FsaXplci5jYW5vbmljYWxpemVYUGF0aE5vZGVTZXQobm9kZVNldCkpKTsKKwkgICAgfQorCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtRXhjZXB0aW9uKGUpOworCX0KKyAgICB9CisKKyAgICBwdWJsaWMgRGF0YSB0cmFuc2Zvcm0oRGF0YSBkYXRhLCBYTUxDcnlwdG9Db250ZXh0IHhjLCBPdXRwdXRTdHJlYW0gb3MpCisgICAgICAgIHRocm93cyBUcmFuc2Zvcm1FeGNlcHRpb24geworCWlmIChkYXRhID09IG51bGwpIHsKKwkgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJkYXRhIG11c3Qgbm90IGJlIG51bGwiKTsKKwl9CisJaWYgKG9zID09IG51bGwpIHsKKwkgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJvdXRwdXQgc3RyZWFtIG11c3Qgbm90IGJlIG51bGwiKTsKKwl9CisKKyAgICAgICAgaWYgKG93bmVyRG9jID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1FeGNlcHRpb24oInRyYW5zZm9ybSBtdXN0IGJlIG1hcnNoYWxsZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhcGFjaGVUcmFuc2Zvcm0gPT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBhcGFjaGVUcmFuc2Zvcm0gPSBUcmFuc2Zvcm0uZ2V0SW5zdGFuY2UKKyAgICAgICAgICAgICAgICAgICAgKG93bmVyRG9jLCBnZXRBbGdvcml0aG0oKSwgdHJhbnNmb3JtRWxlbS5nZXRDaGlsZE5vZGVzKCkpOworICAgICAgICAgICAgICAgIGFwYWNoZVRyYW5zZm9ybS5zZXRFbGVtZW50KHRyYW5zZm9ybUVsZW0sIHhjLmdldEJhc2VVUkkoKSk7CisJCWlmIChsb2cuaXNMb2dnYWJsZShMZXZlbC5GSU5FKSkgeworICAgICAgICAgICAgICAgICAgICBsb2cubG9nKExldmVsLkZJTkUsICJDcmVhdGVkIHRyYW5zZm9ybSBmb3IgYWxnb3JpdGhtOiAiIAorCQkgICAgICAgICsgZ2V0QWxnb3JpdGhtKCkpOyAgICAgICAgICAgIAorCQl9CisJICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1FeGNlcHRpb24KKyAgICAgICAgICAgICAgICAgICAgKCJDb3VsZG4ndCBmaW5kIFRyYW5zZm9ybSBmb3I6ICIgKyBnZXRBbGdvcml0aG0oKSwgZXgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgWE1MU2lnbmF0dXJlSW5wdXQgaW47CisgICAgICAgIGlmIChkYXRhIGluc3RhbmNlb2YgQXBhY2hlRGF0YSkgeworCSAgICBpZiAobG9nLmlzTG9nZ2FibGUoTGV2ZWwuRklORSkpIHsKKyAgICAgICAgICAgICAgICBsb2cubG9nKExldmVsLkZJTkUsICJBcGFjaGVEYXRhID0gdHJ1ZSIpOworCSAgICB9CisgICAgICAgICAgICBpbiA9ICgoQXBhY2hlRGF0YSkgZGF0YSkuZ2V0WE1MU2lnbmF0dXJlSW5wdXQoKTsKKyAgICAgICAgfSBlbHNlIGlmIChkYXRhIGluc3RhbmNlb2YgTm9kZVNldERhdGEpIHsKKwkgICAgaWYgKGxvZy5pc0xvZ2dhYmxlKExldmVsLkZJTkUpKSB7CisgICAgICAgICAgICAgICAgbG9nLmxvZyhMZXZlbC5GSU5FLCAiaXNOb2RlU2V0KCkgPSB0cnVlIik7CisJICAgIH0KKyAgICAgICAgICAgIGlmIChkYXRhIGluc3RhbmNlb2YgRE9NU3ViVHJlZURhdGEpIHsKKyAgICAgICAgICAgICAgICBET01TdWJUcmVlRGF0YSBzdWJUcmVlID0gKERPTVN1YlRyZWVEYXRhKSBkYXRhOworICAgICAgICAgICAgICAgIGluID0gbmV3IFhNTFNpZ25hdHVyZUlucHV0KHN1YlRyZWUuZ2V0Um9vdCgpKTsKKwkJaW4uc2V0RXhjbHVkZUNvbW1lbnRzKHN1YlRyZWUuZXhjbHVkZUNvbW1lbnRzKCkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBTZXQgbm9kZVNldCA9CisgICAgICAgICAgICAgICAgICAgIFV0aWxzLnRvTm9kZVNldCgoKE5vZGVTZXREYXRhKSBkYXRhKS5pdGVyYXRvcigpKTsKKyAgICAgICAgICAgICAgICBpbiA9IG5ldyBYTUxTaWduYXR1cmVJbnB1dChub2RlU2V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKwkgICAgaWYgKGxvZy5pc0xvZ2dhYmxlKExldmVsLkZJTkUpKSB7CisgICAgICAgICAgICAgICAgbG9nLmxvZyhMZXZlbC5GSU5FLCAiaXNOb2RlU2V0KCkgPSBmYWxzZSIpOworCSAgICB9CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGluID0gbmV3IFhNTFNpZ25hdHVyZUlucHV0CisgICAgICAgICAgICAgICAgICAgICgoKE9jdGV0U3RyZWFtRGF0YSlkYXRhKS5nZXRPY3RldFN0cmVhbSgpKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1FeGNlcHRpb24oZXgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGluID0gYXBhY2hlVHJhbnNmb3JtLnBlcmZvcm1UcmFuc2Zvcm0oaW4sIG9zKTsKKwkgICAgaWYgKCFpbi5pc05vZGVTZXQoKSAmJiAhaW4uaXNFbGVtZW50KCkpIHsKKwkgICAgICAgIHJldHVybiBudWxsOworCSAgICB9CisJICAgIGlmIChpbi5pc09jdGV0U3RyZWFtKCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFwYWNoZU9jdGV0U3RyZWFtRGF0YShpbik7CisJICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBcGFjaGVOb2RlU2V0RGF0YShpbik7CisJICAgIH0KKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtRXhjZXB0aW9uKGV4KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBmaW5hbCBib29sZWFuIGlzRmVhdHVyZVN1cHBvcnRlZChTdHJpbmcgZmVhdHVyZSkgeworICAgICAgICBpZiAoZmVhdHVyZSA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9BcGFjaGVEYXRhLmphdmEgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vQXBhY2hlRGF0YS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0Y2Q3NWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vQXBhY2hlRGF0YS5qYXZhCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tOworCitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5EYXRhOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmVJbnB1dDsKKworLyoqCisgKiBYTUxTaWduYXR1cmVJbnB1dCBEYXRhIHdyYXBwZXIuIAorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqLworcHVibGljIGludGVyZmFjZSBBcGFjaGVEYXRhIGV4dGVuZHMgRGF0YSB7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBYTUxTaWduYXR1cmVJbnB1dC4KKyAgICAgKi8KKyAgICBwdWJsaWMgWE1MU2lnbmF0dXJlSW5wdXQgZ2V0WE1MU2lnbmF0dXJlSW5wdXQoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9BcGFjaGVOb2RlU2V0RGF0YS5qYXZhIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0FwYWNoZU5vZGVTZXREYXRhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY0ODQyZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9BcGFjaGVOb2RlU2V0RGF0YS5qYXZhCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNS0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2Ugb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb207CisKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRIYXNoU2V0OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5TZXQ7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5Ob2RlU2V0RGF0YTsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5Ob2RlRmlsdGVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmVJbnB1dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5YTUxVdGlsczsKKworcHVibGljIGNsYXNzIEFwYWNoZU5vZGVTZXREYXRhIGltcGxlbWVudHMgQXBhY2hlRGF0YSwgTm9kZVNldERhdGEgeworCisgICAgcHJpdmF0ZSBYTUxTaWduYXR1cmVJbnB1dCB4aTsKKworICAgIHB1YmxpYyBBcGFjaGVOb2RlU2V0RGF0YShYTUxTaWduYXR1cmVJbnB1dCB4aSkgeworICAgICAgICB0aGlzLnhpID0geGk7CisgICAgfQorCisgICAgcHVibGljIEl0ZXJhdG9yIGl0ZXJhdG9yKCkgeworCS8vIElmIG5vZGVmaWx0ZXJzIGFyZSBzZXQsIG11c3QgZXhlY3V0ZSB0aGVtIGZpcnN0IHRvIGNyZWF0ZSBub2RlLXNldAorICAgICAgICBpZiAoeGkuZ2V0Tm9kZUZpbHRlcnMoKSAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlU2V0CisgICAgICAgICAgICAgICAgKGdldE5vZGVTZXQoeGkuZ2V0Tm9kZUZpbHRlcnMoKSkpLml0ZXJhdG9yKCk7CisgICAgICAgIH0KKwl0cnkgeworCSAgICByZXR1cm4gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlU2V0KHhpLmdldE5vZGVTZXQoKSkuaXRlcmF0b3IoKTsKKwl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCSAgICAvLyBzaG91bGQgbm90IG9jY3VyCisJICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uCisJCSgidW5yZWNvdmVyYWJsZSBlcnJvciByZXRyaWV2aW5nIG5vZGVzZXQiLCBlKTsKKwl9CisgICAgfQorCisgICAgcHVibGljIFhNTFNpZ25hdHVyZUlucHV0IGdldFhNTFNpZ25hdHVyZUlucHV0KCkgeworICAgICAgICByZXR1cm4geGk7CisgICAgfQorCisgICAgcHJpdmF0ZSBTZXQgZ2V0Tm9kZVNldChMaXN0IG5vZGVGaWx0ZXJzKSB7CisgICAgICAgIGlmICh4aS5pc05lZWRzVG9CZUV4cGFuZGVkKCkpIHsKKyAgICAgICAgICAgIFhNTFV0aWxzLmNpcmN1bXZlbnRCdWcyNjUwCisgICAgICAgICAgICAgICAgKFhNTFV0aWxzLmdldE93bmVyRG9jdW1lbnQoeGkuZ2V0U3ViTm9kZSgpKSk7CisgICAgICAgIH0KKworICAgICAgICBTZXQgaW5wdXRTZXQgPSBuZXcgTGlua2VkSGFzaFNldCgpOworICAgICAgICBYTUxVdGlscy5nZXRTZXQKKyAgICAgICAgICAoeGkuZ2V0U3ViTm9kZSgpLCBpbnB1dFNldCwgbnVsbCwgIXhpLmlzRXhjbHVkZUNvbW1lbnRzKCkpOworICAgICAgICBTZXQgbm9kZVNldCA9IG5ldyBMaW5rZWRIYXNoU2V0KCk7CisgICAgICAgIEl0ZXJhdG9yIGkgPSBpbnB1dFNldC5pdGVyYXRvcigpOworICAgICAgICB3aGlsZSAoaS5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgIE5vZGUgY3VycmVudE5vZGUgPSAoTm9kZSkgaS5uZXh0KCk7CisgICAgICAgICAgICBJdGVyYXRvciBpdCA9IG5vZGVGaWx0ZXJzLml0ZXJhdG9yKCk7CisgICAgICAgICAgICBib29sZWFuIHNraXBOb2RlID0gZmFsc2U7CisgICAgICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpICYmICFza2lwTm9kZSkgeworICAgICAgICAgICAgICAgIE5vZGVGaWx0ZXIgbmYgPSAoTm9kZUZpbHRlcikgaXQubmV4dCgpOworICAgICAgICAgICAgICAgIGlmIChuZi5pc05vZGVJbmNsdWRlKGN1cnJlbnROb2RlKSE9MSkgeworICAgICAgICAgICAgICAgICAgICBza2lwTm9kZSA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFza2lwTm9kZSkgeworICAgICAgICAgICAgICAgIG5vZGVTZXQuYWRkKGN1cnJlbnROb2RlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbm9kZVNldDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vQXBhY2hlT2N0ZXRTdHJlYW1EYXRhLmphdmEgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vQXBhY2hlT2N0ZXRTdHJlYW1EYXRhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIwZjFhZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9BcGFjaGVPY3RldFN0cmVhbURhdGEuamF2YQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IDIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbTsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5PY3RldFN0cmVhbURhdGE7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5DYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmVJbnB1dDsKKworcHVibGljIGNsYXNzIEFwYWNoZU9jdGV0U3RyZWFtRGF0YSBleHRlbmRzIE9jdGV0U3RyZWFtRGF0YSAKKyAgICBpbXBsZW1lbnRzIEFwYWNoZURhdGEgeworCisgICAgcHJpdmF0ZSBYTUxTaWduYXR1cmVJbnB1dCB4aTsKKworICAgIHB1YmxpYyBBcGFjaGVPY3RldFN0cmVhbURhdGEoWE1MU2lnbmF0dXJlSW5wdXQgeGkpIAorCXRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiB7CisJc3VwZXIoeGkuZ2V0T2N0ZXRTdHJlYW0oKSwgeGkuZ2V0U291cmNlVVJJKCksIHhpLmdldE1JTUVUeXBlKCkpOworICAgICAgICB0aGlzLnhpID0geGk7CisgICAgfQorCisgICAgcHVibGljIFhNTFNpZ25hdHVyZUlucHV0IGdldFhNTFNpZ25hdHVyZUlucHV0KCkgeworICAgICAgICByZXR1cm4geGk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0FwYWNoZVRyYW5zZm9ybS5qYXZhIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0FwYWNoZVRyYW5zZm9ybS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3NDliNWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vQXBhY2hlVHJhbnNmb3JtLmphdmEKQEAgLTAsMCArMSwxODggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNS0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2Ugb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb207CisKK2ltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb247CitpbXBvcnQgamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWM7CitpbXBvcnQgamF2YS51dGlsLlNldDsKK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5MZXZlbDsKK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmVJbnB1dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybTsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRvbS5ET01DcnlwdG9Db250ZXh0OworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5zcGVjLlRyYW5zZm9ybVBhcmFtZXRlclNwZWM7CisKKy8qKgorICogVGhpcyBpcyBhIHdyYXBwZXIvZ2x1ZSBjbGFzcyB3aGljaCBpbnZva2VzIHRoZSBBcGFjaGUgWE1MLVNlY3VyaXR5CisgKiBUcmFuc2Zvcm0uCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICogQGF1dGhvciBFcndpbiB2YW4gZGVyIEtvb2doCisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBBcGFjaGVUcmFuc2Zvcm0gZXh0ZW5kcyBUcmFuc2Zvcm1TZXJ2aWNlIHsKKworICAgIHN0YXRpYyB7CisgICAgICAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaW5pdCgpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIExvZ2dlciBsb2cgPSBMb2dnZXIuZ2V0TG9nZ2VyKCJvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbSIpOworICAgIHByaXZhdGUgVHJhbnNmb3JtIGFwYWNoZVRyYW5zZm9ybTsKKyAgICBwcm90ZWN0ZWQgRG9jdW1lbnQgb3duZXJEb2M7CisgICAgcHJvdGVjdGVkIEVsZW1lbnQgdHJhbnNmb3JtRWxlbTsKKyAgICBwcm90ZWN0ZWQgVHJhbnNmb3JtUGFyYW1ldGVyU3BlYyBwYXJhbXM7CisgICAgCisgICAgcHVibGljIGZpbmFsIEFsZ29yaXRobVBhcmFtZXRlclNwZWMgZ2V0UGFyYW1ldGVyU3BlYygpIHsKKwlyZXR1cm4gcGFyYW1zOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGluaXQoWE1MU3RydWN0dXJlIHBhcmVudCwgWE1MQ3J5cHRvQ29udGV4dCBjb250ZXh0KQorCXRocm93cyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKGNvbnRleHQgIT0gbnVsbCAmJiAhKGNvbnRleHQgaW5zdGFuY2VvZiBET01DcnlwdG9Db250ZXh0KSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IENsYXNzQ2FzdEV4Y2VwdGlvbgorICAgICAgICAgICAgICAgICgiY29udGV4dCBtdXN0IGJlIG9mIHR5cGUgRE9NQ3J5cHRvQ29udGV4dCIpOworICAgICAgICB9CisJdHJhbnNmb3JtRWxlbSA9IChFbGVtZW50KSAKKwkgICAgKChqYXZheC54bWwuY3J5cHRvLmRvbS5ET01TdHJ1Y3R1cmUpIHBhcmVudCkuZ2V0Tm9kZSgpOworCW93bmVyRG9jID0gRE9NVXRpbHMuZ2V0T3duZXJEb2N1bWVudCh0cmFuc2Zvcm1FbGVtKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBtYXJzaGFsUGFyYW1zKFhNTFN0cnVjdHVyZSBwYXJlbnQsIFhNTENyeXB0b0NvbnRleHQgY29udGV4dCkKKwl0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgIGlmIChjb250ZXh0ICE9IG51bGwgJiYgIShjb250ZXh0IGluc3RhbmNlb2YgRE9NQ3J5cHRvQ29udGV4dCkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBDbGFzc0Nhc3RFeGNlcHRpb24KKyAgICAgICAgICAgICAgICAoImNvbnRleHQgbXVzdCBiZSBvZiB0eXBlIERPTUNyeXB0b0NvbnRleHQiKTsKKyAgICAgICAgfQorCXRyYW5zZm9ybUVsZW0gPSAoRWxlbWVudCkgCisJICAgICgoamF2YXgueG1sLmNyeXB0by5kb20uRE9NU3RydWN0dXJlKSBwYXJlbnQpLmdldE5vZGUoKTsKKwlvd25lckRvYyA9IERPTVV0aWxzLmdldE93bmVyRG9jdW1lbnQodHJhbnNmb3JtRWxlbSk7CisgICAgfQorCisgICAgcHVibGljIERhdGEgdHJhbnNmb3JtKERhdGEgZGF0YSwgWE1MQ3J5cHRvQ29udGV4dCB4YykgCisJdGhyb3dzIFRyYW5zZm9ybUV4Y2VwdGlvbiB7CisJaWYgKGRhdGEgPT0gbnVsbCkgeworCSAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oImRhdGEgbXVzdCBub3QgYmUgbnVsbCIpOworCX0KKwlyZXR1cm4gdHJhbnNmb3JtSXQoZGF0YSwgeGMsIChPdXRwdXRTdHJlYW0pIG51bGwpOworICAgIH0KKworICAgIHB1YmxpYyBEYXRhIHRyYW5zZm9ybShEYXRhIGRhdGEsIFhNTENyeXB0b0NvbnRleHQgeGMsIE91dHB1dFN0cmVhbSBvcykgCisJdGhyb3dzIFRyYW5zZm9ybUV4Y2VwdGlvbiB7CisJaWYgKGRhdGEgPT0gbnVsbCkgeworCSAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oImRhdGEgbXVzdCBub3QgYmUgbnVsbCIpOworCX0KKwlpZiAob3MgPT0gbnVsbCkgeworCSAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oIm91dHB1dCBzdHJlYW0gbXVzdCBub3QgYmUgbnVsbCIpOworCX0KKwlyZXR1cm4gdHJhbnNmb3JtSXQoZGF0YSwgeGMsIG9zKTsKKyAgICB9CisKKyAgICBwcml2YXRlIERhdGEgdHJhbnNmb3JtSXQoRGF0YSBkYXRhLCBYTUxDcnlwdG9Db250ZXh0IHhjLCBPdXRwdXRTdHJlYW0gb3MpIAorCXRocm93cyBUcmFuc2Zvcm1FeGNlcHRpb24geworCisgICAgICAgIGlmIChvd25lckRvYyA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtRXhjZXB0aW9uKCJ0cmFuc2Zvcm0gbXVzdCBiZSBtYXJzaGFsbGVkIik7CisgICAgICAgIH0KKworCWlmIChhcGFjaGVUcmFuc2Zvcm0gPT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBhcGFjaGVUcmFuc2Zvcm0gPSBUcmFuc2Zvcm0uZ2V0SW5zdGFuY2UKKwkJICAgIChvd25lckRvYywgZ2V0QWxnb3JpdGhtKCksIHRyYW5zZm9ybUVsZW0uZ2V0Q2hpbGROb2RlcygpKTsKKwkJYXBhY2hlVHJhbnNmb3JtLnNldEVsZW1lbnQodHJhbnNmb3JtRWxlbSwgeGMuZ2V0QmFzZVVSSSgpKTsKKwkJaWYgKGxvZy5pc0xvZ2dhYmxlKExldmVsLkZJTkUpKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZy5sb2coTGV2ZWwuRklORSwgIkNyZWF0ZWQgdHJhbnNmb3JtIGZvciBhbGdvcml0aG06ICIgCisJCSAgICAgICAgKyBnZXRBbGdvcml0aG0oKSk7CisJCX0KKyAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1FeGNlcHRpb24KKwkJICAgICgiQ291bGRuJ3QgZmluZCBUcmFuc2Zvcm0gZm9yOiAiICsgZ2V0QWxnb3JpdGhtKCksIGV4KTsKKyAgICAgICAgICAgIH0gCisJfQorCisgICAgICAgIFhNTFNpZ25hdHVyZUlucHV0IGluOworCWlmIChkYXRhIGluc3RhbmNlb2YgQXBhY2hlRGF0YSkgeworCSAgICBpZiAobG9nLmlzTG9nZ2FibGUoTGV2ZWwuRklORSkpIHsKKyAgICAgICAgICAgICAgICBsb2cubG9nKExldmVsLkZJTkUsICJBcGFjaGVEYXRhID0gdHJ1ZSIpOworCSAgICB9CisJICAgIGluID0gKChBcGFjaGVEYXRhKSBkYXRhKS5nZXRYTUxTaWduYXR1cmVJbnB1dCgpOworCX0gZWxzZSBpZiAoZGF0YSBpbnN0YW5jZW9mIE5vZGVTZXREYXRhKSB7CisJICAgIGlmIChsb2cuaXNMb2dnYWJsZShMZXZlbC5GSU5FKSkgeworICAgICAgICAgICAgICAgIGxvZy5sb2coTGV2ZWwuRklORSwgImlzTm9kZVNldCgpID0gdHJ1ZSIpOworCSAgICB9CisJICAgIGlmIChkYXRhIGluc3RhbmNlb2YgRE9NU3ViVHJlZURhdGEpIHsKKwkJaWYgKGxvZy5pc0xvZ2dhYmxlKExldmVsLkZJTkUpKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZy5sb2coTGV2ZWwuRklORSwgIkRPTVN1YlRyZWVEYXRhID0gdHJ1ZSIpOworICAgICAgICAgICAgICAgIH0KKwkJRE9NU3ViVHJlZURhdGEgc3ViVHJlZSA9IChET01TdWJUcmVlRGF0YSkgZGF0YTsKKyAgICAgICAgICAgICAgICBpbiA9IG5ldyBYTUxTaWduYXR1cmVJbnB1dChzdWJUcmVlLmdldFJvb3QoKSk7CisJCWluLnNldEV4Y2x1ZGVDb21tZW50cyhzdWJUcmVlLmV4Y2x1ZGVDb21tZW50cygpKTsKKwkgICAgfSBlbHNlIHsKKwkJU2V0IG5vZGVTZXQgPSAKKwkJICAgIFV0aWxzLnRvTm9kZVNldCgoKE5vZGVTZXREYXRhKSBkYXRhKS5pdGVyYXRvcigpKTsKKyAgICAgICAgICAgICAgICBpbiA9IG5ldyBYTUxTaWduYXR1cmVJbnB1dChub2RlU2V0KTsKKwkgICAgfQorICAgICAgICB9IGVsc2UgeworCSAgICBpZiAobG9nLmlzTG9nZ2FibGUoTGV2ZWwuRklORSkpIHsKKyAgICAgICAgICAgICAgICBsb2cubG9nKExldmVsLkZJTkUsICJpc05vZGVTZXQoKSA9IGZhbHNlIik7CisJICAgIH0KKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgaW4gPSBuZXcgWE1MU2lnbmF0dXJlSW5wdXQKKwkJICAgICgoKE9jdGV0U3RyZWFtRGF0YSlkYXRhKS5nZXRPY3RldFN0cmVhbSgpKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1FeGNlcHRpb24oZXgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKwl0cnkgeworCSAgICBpZiAob3MgIT0gbnVsbCkgeworCSAgICAgICAgaW4gPSBhcGFjaGVUcmFuc2Zvcm0ucGVyZm9ybVRyYW5zZm9ybShpbiwgb3MpOworCQlpZiAoIWluLmlzTm9kZVNldCgpICYmICFpbi5pc0VsZW1lbnQoKSkgeworCQkgICAgcmV0dXJuIG51bGw7CisJCX0KKwkgICAgfSBlbHNlIHsKKwkgICAgICAgIGluID0gYXBhY2hlVHJhbnNmb3JtLnBlcmZvcm1UcmFuc2Zvcm0oaW4pOworCSAgICB9CisJICAgIGlmIChpbi5pc09jdGV0U3RyZWFtKCkpIHsKKwkgICAgICAgIHJldHVybiBuZXcgQXBhY2hlT2N0ZXRTdHJlYW1EYXRhKGluKTsKKwkgICAgfSBlbHNlIHsKKwkgICAgICAgIHJldHVybiBuZXcgQXBhY2hlTm9kZVNldERhdGEoaW4pOworCSAgICB9CisJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtRXhjZXB0aW9uKGV4KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBmaW5hbCBib29sZWFuIGlzRmVhdHVyZVN1cHBvcnRlZChTdHJpbmcgZmVhdHVyZSkgeworICAgICAgICBpZiAoZmVhdHVyZSA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01CYXNlNjRUcmFuc2Zvcm0uamF2YSBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01CYXNlNjRUcmFuc2Zvcm0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWM5Y2I3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTUJhc2U2NFRyYW5zZm9ybS5qYXZhCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNS0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2Ugb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb207CisKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb247CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuc3BlYy5UcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjOworCisvKioKKyAqIERPTS1iYXNlZCBpbXBsZW1lbnRhdGlvbiBvZiBCYXNlNjQgRW5jb2RpbmcgVHJhbnNmb3JtLgorICogKFVzZXMgQXBhY2hlIFhNTC1TZWMgVHJhbnNmb3JtIGltcGxlbWVudGF0aW9uKQorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqLworcHVibGljIGZpbmFsIGNsYXNzIERPTUJhc2U2NFRyYW5zZm9ybSBleHRlbmRzIEFwYWNoZVRyYW5zZm9ybSB7CisgCisgICAgcHVibGljIHZvaWQgaW5pdChUcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjIHBhcmFtcykKKyAgICAgICAgdGhyb3dzIEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24geworICAgICAgICBpZiAocGFyYW1zICE9IG51bGwpIHsKKwkgICAgdGhyb3cgbmV3IEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24oInBhcmFtcyBtdXN0IGJlIG51bGwiKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01DYW5vbmljYWxYTUxDMTROMTFNZXRob2QuamF2YSBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01DYW5vbmljYWxYTUxDMTROMTFNZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjc3NGE0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTUNhbm9uaWNhbFhNTEMxNE4xMU1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDggU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tOworCitpbXBvcnQgamF2YXgueG1sLmNyeXB0by4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5zcGVjLlRyYW5zZm9ybVBhcmFtZXRlclNwZWM7CisKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb247CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkNhbm9uaWNhbGl6ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5JbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbjsKKworLyoqCisgKiBET00tYmFzZWQgaW1wbGVtZW50YXRpb24gb2YgQ2Fub25pY2FsaXphdGlvbk1ldGhvZCBmb3IgQ2Fub25pY2FsIFhNTCAxLjEKKyAqICh3aXRoIG9yIHdpdGhvdXQgY29tbWVudHMpLiBVc2VzIEFwYWNoZSBYTUwtU2VjIENhbm9uaWNhbGl6ZXIuCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgRE9NQ2Fub25pY2FsWE1MQzE0TjExTWV0aG9kIGV4dGVuZHMgQXBhY2hlQ2Fub25pY2FsaXplciB7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDMTROXzExID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQzE0Tl8xMV9XSVRIX0NPTU1FTlRTIAorCT0gImh0dHA6Ly93d3cudzMub3JnLzIwMDYvMTIveG1sLWMxNG4xMSNXaXRoQ29tbWVudHMiOworCisgICAgcHVibGljIHZvaWQgaW5pdChUcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjIHBhcmFtcykKKyAgICAgICAgdGhyb3dzIEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24geworICAgICAgICBpZiAocGFyYW1zICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uKCJubyBwYXJhbWV0ZXJzICIgKworICAgICAgICAgICAgICAgICJzaG91bGQgYmUgc3BlY2lmaWVkIGZvciBDYW5vbmljYWwgWE1MIDEuMSBhbGdvcml0aG0iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBEYXRhIHRyYW5zZm9ybShEYXRhIGRhdGEsIFhNTENyeXB0b0NvbnRleHQgeGMpCisJdGhyb3dzIFRyYW5zZm9ybUV4Y2VwdGlvbiB7CisKKyAgICAgICAgLy8gaWdub3JlIGNvbW1lbnRzIGlmIGRlcmVmZXJlbmNpbmcgc2FtZS1kb2N1bWVudCBVUkkgdGhhdCByZXF1aXJlcworCS8vIHlvdSB0byBvbWl0IGNvbW1lbnRzLCBldmVuIGlmIHRoZSBUcmFuc2Zvcm0gc2F5cyBvdGhlcndpc2UgLQorICAgICAgICAvLyB0aGlzIGlzIHRvIGJlIGNvbXBsaWFudCB3aXRoIHNlY3Rpb24gNC4zLjMuMyBvZiBXM0MgUmVjLgorCWlmIChkYXRhIGluc3RhbmNlb2YgRE9NU3ViVHJlZURhdGEpIHsKKwkgICAgRE9NU3ViVHJlZURhdGEgc3ViVHJlZSA9IChET01TdWJUcmVlRGF0YSkgZGF0YTsKKwkgICAgaWYgKHN1YlRyZWUuZXhjbHVkZUNvbW1lbnRzKCkpIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBhcGFjaGVDYW5vbmljYWxpemVyID0gQ2Fub25pY2FsaXplci5nZXRJbnN0YW5jZShDMTROXzExKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiBpY2UpIHsKKwkJICAgIHRocm93IG5ldyBUcmFuc2Zvcm1FeGNlcHRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICgiQ291bGRuJ3QgZmluZCBDYW5vbmljYWxpemVyIGZvcjogIiArCisJCSAgICAgICAgIEMxNE5fMTEgKyAiOiAiICsgaWNlLmdldE1lc3NhZ2UoKSwgaWNlKTsKKyAgICAgICAgICAgICAgICB9CisJICAgIH0KKwl9CisKKwlyZXR1cm4gY2Fub25pY2FsaXplKGRhdGEsIHhjKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NQ2Fub25pY2FsWE1MQzE0Tk1ldGhvZC5qYXZhIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTUNhbm9uaWNhbFhNTEMxNE5NZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWUyZGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTUNhbm9uaWNhbFhNTEMxNE5NZXRob2QuamF2YQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IDIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbTsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuc3BlYy5UcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjOworCitpbXBvcnQgamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5DYW5vbmljYWxpemVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb247CisKKy8qKgorICogRE9NLWJhc2VkIGltcGxlbWVudGF0aW9uIG9mIENhbm9uaWNhbGl6YXRpb25NZXRob2QgZm9yIENhbm9uaWNhbCBYTUwKKyAqICh3aXRoIG9yIHdpdGhvdXQgY29tbWVudHMpLiBVc2VzIEFwYWNoZSBYTUwtU2VjIENhbm9uaWNhbGl6ZXIuCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgRE9NQ2Fub25pY2FsWE1MQzE0Tk1ldGhvZCBleHRlbmRzIEFwYWNoZUNhbm9uaWNhbGl6ZXIgeworCisgICAgcHVibGljIHZvaWQgaW5pdChUcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjIHBhcmFtcykKKyAgICAgICAgdGhyb3dzIEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24geworICAgICAgICBpZiAocGFyYW1zICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uKCJubyBwYXJhbWV0ZXJzICIgKworICAgICAgICAgICAgICAgICJzaG91bGQgYmUgc3BlY2lmaWVkIGZvciBDYW5vbmljYWwgWE1MIEMxNE4gYWxnb3JpdGhtIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgRGF0YSB0cmFuc2Zvcm0oRGF0YSBkYXRhLCBYTUxDcnlwdG9Db250ZXh0IHhjKQorCXRocm93cyBUcmFuc2Zvcm1FeGNlcHRpb24geworCisgICAgICAgIC8vIGlnbm9yZSBjb21tZW50cyBpZiBkZXJlZmVyZW5jaW5nIHNhbWUtZG9jdW1lbnQgVVJJIHRoYXQgcmVxdWlyZXMKKwkvLyB5b3UgdG8gb21pdCBjb21tZW50cywgZXZlbiBpZiB0aGUgVHJhbnNmb3JtIHNheXMgb3RoZXJ3aXNlIC0KKyAgICAgICAgLy8gdGhpcyBpcyB0byBiZSBjb21wbGlhbnQgd2l0aCBzZWN0aW9uIDQuMy4zLjMgb2YgVzNDIFJlYy4KKwlpZiAoZGF0YSBpbnN0YW5jZW9mIERPTVN1YlRyZWVEYXRhKSB7CisJICAgIERPTVN1YlRyZWVEYXRhIHN1YlRyZWUgPSAoRE9NU3ViVHJlZURhdGEpIGRhdGE7CisJICAgIGlmIChzdWJUcmVlLmV4Y2x1ZGVDb21tZW50cygpKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgYXBhY2hlQ2Fub25pY2FsaXplciA9IENhbm9uaWNhbGl6ZXIuZ2V0SW5zdGFuY2UKKwkJCShDYW5vbmljYWxpemF0aW9uTWV0aG9kLklOQ0xVU0lWRSk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24gaWNlKSB7CisJCSAgICB0aHJvdyBuZXcgVHJhbnNmb3JtRXhjZXB0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAoIkNvdWxkbid0IGZpbmQgQ2Fub25pY2FsaXplciBmb3I6ICIgKworCQkgICAgICAgICBDYW5vbmljYWxpemF0aW9uTWV0aG9kLklOQ0xVU0lWRSArICI6ICIgKworCQkgICAgICAgICBpY2UuZ2V0TWVzc2FnZSgpLCBpY2UpOworICAgICAgICAgICAgICAgIH0KKwkgICAgfQorCX0KKworCXJldHVybiBjYW5vbmljYWxpemUoZGF0YSwgeGMpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01DYW5vbmljYWxpemF0aW9uTWV0aG9kLmphdmEgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NQ2Fub25pY2FsaXphdGlvbk1ldGhvZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwZGI4NDUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NQ2Fub25pY2FsaXphdGlvbk1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbTsKKworaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlByb3ZpZGVyOworCitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKKworLyoqCisgKiBET00tYmFzZWQgYWJzdHJhY3QgaW1wbGVtZW50YXRpb24gb2YgQ2Fub25pY2FsaXphdGlvbk1ldGhvZC4KKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKi8KK3B1YmxpYyBjbGFzcyBET01DYW5vbmljYWxpemF0aW9uTWV0aG9kIGV4dGVuZHMgRE9NVHJhbnNmb3JtIAorICAgIGltcGxlbWVudHMgQ2Fub25pY2FsaXphdGlvbk1ldGhvZCB7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+RE9NQ2Fub25pY2FsaXphdGlvbk1ldGhvZDwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcGFyYW0gc3BpIFRyYW5zZm9ybVNlcnZpY2UKKyAgICAgKi8KKyAgICBwdWJsaWMgRE9NQ2Fub25pY2FsaXphdGlvbk1ldGhvZChUcmFuc2Zvcm1TZXJ2aWNlIHNwaSkKKwl0aHJvd3MgSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiB7CisJc3VwZXIoc3BpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+RE9NQ2Fub25pY2FsaXphdGlvbk1ldGhvZDwvY29kZT4gZnJvbSBhbiBlbGVtZW50LiBUaGlzIAorICAgICAqIGN0b3IgaW52b2tlcyB0aGUgYWJzdHJhY3Qge0BsaW5rICN1bm1hcnNoYWxQYXJhbXMgdW5tYXJzaGFsUGFyYW1zfSAKKyAgICAgKiBtZXRob2QgdG8gdW5tYXJzaGFsIGFueSBhbGdvcml0aG0tc3BlY2lmaWMgaW5wdXQgcGFyYW1ldGVycy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjbUVsZW0gYSBDYW5vbmljYWxpemF0aW9uTWV0aG9kIGVsZW1lbnQKKyAgICAgKi8KKyAgICBwdWJsaWMgRE9NQ2Fub25pY2FsaXphdGlvbk1ldGhvZChFbGVtZW50IGNtRWxlbSwgWE1MQ3J5cHRvQ29udGV4dCBjb250ZXh0LAorCVByb3ZpZGVyIHByb3ZpZGVyKSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisJc3VwZXIoY21FbGVtLCBjb250ZXh0LCBwcm92aWRlcik7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2Fub25pY2FsaXplcyB0aGUgc3BlY2lmaWVkIGRhdGEgdXNpbmcgdGhlIHVuZGVybHlpbmcgY2Fub25pY2FsaXphdGlvbgorICAgICAqIGFsZ29yaXRobS4gVGhpcyBpcyBhIGNvbnZlbmllbmNlIG1ldGhvZCB0aGF0IGlzIGVxdWl2YWxlbnQgdG8gaW52b2tpbmcKKyAgICAgKiB0aGUge0BsaW5rICN0cmFuc2Zvcm0gdHJhbnNmb3JtfSBtZXRob2QuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZGF0YSB0aGUgZGF0YSB0byBiZSBjYW5vbmljYWxpemVkCisgICAgICogQHBhcmFtIHhjIHRoZSA8Y29kZT5YTUxDcnlwdG9Db250ZXh0PC9jb2RlPiBjb250YWluaW5nCisgICAgICogICAgIGFkZGl0aW9uYWwgY29udGV4dCAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+IGlmIG5vdCBhcHBsaWNhYmxlKQorICAgICAqIEByZXR1cm4gdGhlIGNhbm9uaWNhbGl6ZWQgZGF0YQorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+ZGF0YTwvY29kZT4gaXMgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiBAdGhyb3dzIFRyYW5zZm9ybUV4Y2VwdGlvbiBpZiBhbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VycyB3aGlsZQorICAgICAqICAgIGNhbm9uaWNhbGl6aW5nIHRoZSBkYXRhCisgICAgICovCisgICAgcHVibGljIERhdGEgY2Fub25pY2FsaXplKERhdGEgZGF0YSwgWE1MQ3J5cHRvQ29udGV4dCB4YykgCisJdGhyb3dzIFRyYW5zZm9ybUV4Y2VwdGlvbiB7CisJcmV0dXJuIHRyYW5zZm9ybShkYXRhLCB4Yyk7CisgICAgfQorCisgICAgcHVibGljIERhdGEgY2Fub25pY2FsaXplKERhdGEgZGF0YSwgWE1MQ3J5cHRvQ29udGV4dCB4YywgT3V0cHV0U3RyZWFtIG9zKSAKKwl0aHJvd3MgVHJhbnNmb3JtRXhjZXB0aW9uIHsKKwlyZXR1cm4gdHJhbnNmb3JtKGRhdGEsIHhjLCBvcyk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvKSB7CisJaWYgKHRoaXMgPT0gbykgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisJfQorCisgICAgICAgIGlmICghKG8gaW5zdGFuY2VvZiBDYW5vbmljYWxpemF0aW9uTWV0aG9kKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCX0KKyAgICAgICAgQ2Fub25pY2FsaXphdGlvbk1ldGhvZCBvY20gPSAoQ2Fub25pY2FsaXphdGlvbk1ldGhvZCkgbzsKKworCXJldHVybiAoZ2V0QWxnb3JpdGhtKCkuZXF1YWxzKG9jbS5nZXRBbGdvcml0aG0oKSkgJiYgCisJICAgIERPTVV0aWxzLnBhcmFtc0VxdWFsKGdldFBhcmFtZXRlclNwZWMoKSwgb2NtLmdldFBhcmFtZXRlclNwZWMoKSkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01DcnlwdG9CaW5hcnkuamF2YSBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01DcnlwdG9CaW5hcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTM5OTg0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTUNyeXB0b0JpbmFyeS5qYXZhCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNS0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2Ugb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb207CisKK2ltcG9ydCBqYXZhLm1hdGguQmlnSW50ZWdlcjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kb20uRE9NQ3J5cHRvQ29udGV4dDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworaW1wb3J0IG9yZy53M2MuZG9tLlRleHQ7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5CYXNlNjQ7CisKKy8qKgorICogQSBET00tYmFzZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIFhNTCA8Y29kZT5DcnlwdG9CaW5hcnk8L2NvZGU+IHNpbXBsZSB0eXBlIAorICogYXMgZGVmaW5lZCBpbiB0aGUgVzNDIHNwZWNpZmljYXRpb24gZm9yIFhNTC1TaWduYXR1cmUgU3ludGF4IGFuZCBQcm9jZXNzaW5nLgorICogVGhlIFhNTCBTY2hlbWEgRGVmaW5pdGlvbiBpcyBkZWZpbmVkIGFzOgorICoKKyAqIDx4bXA+CisgKiA8c2ltcGxlVHlwZSBuYW1lPSJDcnlwdG9CaW5hcnkiPgorICogICA8cmVzdHJpY3Rpb24gYmFzZSA9ICJiYXNlNjRCaW5hcnkiPgorICogICA8L3Jlc3RyaWN0aW9uPgorICogPC9zaW1wbGVUeXBlPgorICogPC94bXA+CisgKiAKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqLworcHVibGljIGZpbmFsIGNsYXNzIERPTUNyeXB0b0JpbmFyeSBleHRlbmRzIERPTVN0cnVjdHVyZSB7CisKKyAgICBwcml2YXRlIGZpbmFsIEJpZ0ludGVnZXIgYmlnTnVtOworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIHZhbHVlOworCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgPGNvZGU+RE9NQ3J5cHRvQmluYXJ5PC9jb2RlPiBpbnN0YW5jZSBmcm9tIHRoZSBzcGVjaWZpZWQKKyAgICAgKiA8Y29kZT5CaWdJbnRlZ2VyPC9jb2RlPgorICAgICAqCisgICAgICogQHBhcmFtIGJpZ051bSB0aGUgYXJiaXRyYXJ5LWxlbmd0aCBpbnRlZ2VyCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5iaWdOdW08L2NvZGU+IGlzIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICovCisgICAgcHVibGljIERPTUNyeXB0b0JpbmFyeShCaWdJbnRlZ2VyIGJpZ051bSkgeworICAgICAgICBpZiAoYmlnTnVtID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigiYmlnTnVtIGlzIG51bGwiKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLmJpZ051bSA9IGJpZ051bTsKKyAgICAgICAgLy8gY29udmVydCB0byBiaXRzdHJpbmcKKyAgICAgICAgdmFsdWUgPSBCYXNlNjQuZW5jb2RlKGJpZ051bSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIDxjb2RlPkRPTUNyeXB0b0JpbmFyeTwvY29kZT4gZnJvbSBhIG5vZGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gY2JOb2RlIGEgQ3J5cHRvQmluYXJ5IHRleHQgbm9kZQorICAgICAqIEB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiBpZiB2YWx1ZSBjYW5ub3QgYmUgZGVjb2RlZCAoaW52YWxpZCBmb3JtYXQpCisgICAgICovCisgICAgcHVibGljIERPTUNyeXB0b0JpbmFyeShOb2RlIGNiTm9kZSkgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworICAgICAgICB2YWx1ZSA9IGNiTm9kZS5nZXROb2RlVmFsdWUoKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGJpZ051bSA9IEJhc2U2NC5kZWNvZGVCaWdJbnRlZ2VyRnJvbVRleHQoKFRleHQpIGNiTm9kZSk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE1hcnNoYWxFeGNlcHRpb24oZXgpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgPGNvZGU+QmlnSW50ZWdlcjwvY29kZT4gdGhhdCB0aGlzIG9iamVjdCBjb250YWlucy4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIDxjb2RlPkJpZ0ludGVnZXI8L2NvZGU+IHRoYXQgdGhpcyBvYmplY3QgY29udGFpbnMKKyAgICAgKi8KKyAgICBwdWJsaWMgQmlnSW50ZWdlciBnZXRCaWdOdW0oKSB7CisJcmV0dXJuIGJpZ051bTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBtYXJzaGFsKE5vZGUgcGFyZW50LCBTdHJpbmcgcHJlZml4LCBET01DcnlwdG9Db250ZXh0IGNvbnRleHQpIAorCXRocm93cyBNYXJzaGFsRXhjZXB0aW9uIHsKKyAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkCisJICAgIChET01VdGlscy5nZXRPd25lckRvY3VtZW50KHBhcmVudCkuY3JlYXRlVGV4dE5vZGUodmFsdWUpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NRGlnZXN0TWV0aG9kLmphdmEgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NRGlnZXN0TWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ5ZGM0MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01EaWdlc3RNZXRob2QuamF2YQpAQCAtMCwwICsxLDI2MCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2Ugb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb207CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kb20uRE9NQ3J5cHRvQ29udGV4dDsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuc3BlYy5EaWdlc3RNZXRob2RQYXJhbWV0ZXJTcGVjOworCitpbXBvcnQgamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuc3BlYy5BbGdvcml0aG1QYXJhbWV0ZXJTcGVjOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKKworLyoqCisgKiBET00tYmFzZWQgYWJzdHJhY3QgaW1wbGVtZW50YXRpb24gb2YgRGlnZXN0TWV0aG9kLgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIERPTURpZ2VzdE1ldGhvZCBleHRlbmRzIERPTVN0cnVjdHVyZSAKKyAgICBpbXBsZW1lbnRzIERpZ2VzdE1ldGhvZCB7CisKKyAgICBmaW5hbCBzdGF0aWMgU3RyaW5nIFNIQTM4NCA9CisgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNzaGEzODQiOyAvLyBzZWUgUkZDIDQwNTEKKyAgICBwcml2YXRlIERpZ2VzdE1ldGhvZFBhcmFtZXRlclNwZWMgcGFyYW1zOworCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIDxjb2RlPkRPTURpZ2VzdE1ldGhvZDwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcGFyYW0gcGFyYW1zIHRoZSBhbGdvcml0aG0tc3BlY2lmaWMgcGFyYW1zIChtYXkgYmUgPGNvZGU+bnVsbDwvY29kZT4pCisgICAgICogQHRocm93cyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIGlmIHRoZSBwYXJhbWV0ZXJzIGFyZSBub3QKKyAgICAgKiAgICBhcHByb3ByaWF0ZSBmb3IgdGhpcyBkaWdlc3QgbWV0aG9kCisgICAgICovCisgICAgRE9NRGlnZXN0TWV0aG9kKEFsZ29yaXRobVBhcmFtZXRlclNwZWMgcGFyYW1zKQorCXRocm93cyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIHsKKwlpZiAocGFyYW1zICE9IG51bGwgJiYgIShwYXJhbXMgaW5zdGFuY2VvZiBEaWdlc3RNZXRob2RQYXJhbWV0ZXJTcGVjKSkgeworCSAgICB0aHJvdyBuZXcgSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbgorCQkoInBhcmFtcyBtdXN0IGJlIG9mIHR5cGUgRGlnZXN0TWV0aG9kUGFyYW1ldGVyU3BlYyIpOworCX0KKwljaGVja1BhcmFtcygoRGlnZXN0TWV0aG9kUGFyYW1ldGVyU3BlYykgcGFyYW1zKTsKKwl0aGlzLnBhcmFtcyA9IChEaWdlc3RNZXRob2RQYXJhbWV0ZXJTcGVjKSBwYXJhbXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIDxjb2RlPkRPTURpZ2VzdE1ldGhvZDwvY29kZT4gZnJvbSBhbiBlbGVtZW50LiBUaGlzIGNvbnN0cnVjdG9yCisgICAgICogaW52b2tlcyB0aGUgYWJzdHJhY3Qge0BsaW5rICN1bm1hcnNoYWxQYXJhbXMgdW5tYXJzaGFsUGFyYW1zfSBtZXRob2QgdG8KKyAgICAgKiB1bm1hcnNoYWwgYW55IGFsZ29yaXRobS1zcGVjaWZpYyBpbnB1dCBwYXJhbWV0ZXJzLgorICAgICAqCisgICAgICogQHBhcmFtIGRtRWxlbSBhIERpZ2VzdE1ldGhvZCBlbGVtZW50CisgICAgICovCisgICAgRE9NRGlnZXN0TWV0aG9kKEVsZW1lbnQgZG1FbGVtKSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisJRWxlbWVudCBwYXJhbXNFbGVtID0gRE9NVXRpbHMuZ2V0Rmlyc3RDaGlsZEVsZW1lbnQoZG1FbGVtKTsKKwlpZiAocGFyYW1zRWxlbSAhPSBudWxsKSB7CisJICAgIHBhcmFtcyA9IHVubWFyc2hhbFBhcmFtcyhwYXJhbXNFbGVtKTsKKwl9CisJdHJ5IHsKKwkgICAgY2hlY2tQYXJhbXMocGFyYW1zKTsKKwl9IGNhdGNoIChJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIGlhcGUpIHsKKwkgICAgdGhyb3cgbmV3IE1hcnNoYWxFeGNlcHRpb24oaWFwZSk7CisJfQorICAgIH0KKworICAgIHN0YXRpYyBEaWdlc3RNZXRob2QgdW5tYXJzaGFsKEVsZW1lbnQgZG1FbGVtKSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBhbGcgPSBET01VdGlscy5nZXRBdHRyaWJ1dGVWYWx1ZShkbUVsZW0sICJBbGdvcml0aG0iKTsKKyAgICAgICAgaWYgKGFsZy5lcXVhbHMoRGlnZXN0TWV0aG9kLlNIQTEpKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFNIQTEoZG1FbGVtKTsKKyAgICAgICAgfSBlbHNlIGlmIChhbGcuZXF1YWxzKERpZ2VzdE1ldGhvZC5TSEEyNTYpKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFNIQTI1NihkbUVsZW0pOworICAgICAgICB9IGVsc2UgaWYgKGFsZy5lcXVhbHMoU0hBMzg0KSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBTSEEzODQoZG1FbGVtKTsKKyAgICAgICAgfSBlbHNlIGlmIChhbGcuZXF1YWxzKERpZ2VzdE1ldGhvZC5TSEE1MTIpKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFNIQTUxMihkbUVsZW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhyb3cgbmV3IE1hcnNoYWxFeGNlcHRpb24KKwkJKCJ1bnN1cHBvcnRlZCBEaWdlc3RNZXRob2QgYWxnb3JpdGhtOiAiICsgYWxnKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENoZWNrcyBpZiB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMgYXJlIHZhbGlkIGZvciB0aGlzIGFsZ29yaXRobS4gQnkKKyAgICAgKiBkZWZhdWx0LCB0aGlzIG1ldGhvZCB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIHBhcmFtZXRlcnMgYXJlIHNwZWNpZmllZAorICAgICAqIHNpbmNlIG1vc3QgRGlnZXN0TWV0aG9kIGFsZ29yaXRobXMgZG8gbm90IGhhdmUgcGFyYW1ldGVycy4gU3ViY2xhc3NlcworICAgICAqIHNob3VsZCBvdmVycmlkZSBpdCBpZiB0aGV5IGhhdmUgcGFyYW1ldGVycy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwYXJhbXMgdGhlIGFsZ29yaXRobS1zcGVjaWZpYyBwYXJhbXMgKG1heSBiZSA8Y29kZT5udWxsPC9jb2RlPikKKyAgICAgKiBAdGhyb3dzIEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24gaWYgdGhlIHBhcmFtZXRlcnMgYXJlIG5vdAorICAgICAqICAgIGFwcHJvcHJpYXRlIGZvciB0aGlzIGRpZ2VzdCBtZXRob2QKKyAgICAgKi8KKyAgICB2b2lkIGNoZWNrUGFyYW1zKERpZ2VzdE1ldGhvZFBhcmFtZXRlclNwZWMgcGFyYW1zKSAKKwl0aHJvd3MgSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiB7CisgICAgICAgIGlmIChwYXJhbXMgIT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24oIm5vIHBhcmFtZXRlcnMgIiArCisgICAgICAgICAgICAgICAgInNob3VsZCBiZSBzcGVjaWZpZWQgZm9yIHRoZSAiICsgZ2V0TWVzc2FnZURpZ2VzdEFsZ29yaXRobSgpCisgICAgICAgICAgICAgICAgICsgIiBEaWdlc3RNZXRob2QgYWxnb3JpdGhtIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgZmluYWwgQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyBnZXRQYXJhbWV0ZXJTcGVjKCkgeworCXJldHVybiBwYXJhbXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogVW5tYXJzaGFscyA8Y29kZT5EaWdlc3RNZXRob2RQYXJhbWV0ZXJTcGVjPC9jb2RlPiBmcm9tIHRoZSBzcGVjaWZpZWQgCisgICAgICogPGNvZGU+RWxlbWVudDwvY29kZT4uICBCeSBkZWZhdWx0LCB0aGlzIG1ldGhvZCB0aHJvd3MgYW4gZXhjZXB0aW9uIHNpbmNlCisgICAgICogbW9zdCBEaWdlc3RNZXRob2QgYWxnb3JpdGhtcyBkbyBub3QgaGF2ZSBwYXJhbWV0ZXJzLiBTdWJjbGFzc2VzIHNob3VsZCAKKyAgICAgKiBvdmVycmlkZSBpdCBpZiB0aGV5IGhhdmUgcGFyYW1ldGVycy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwYXJhbXNFbGVtIHRoZSA8Y29kZT5FbGVtZW50PC9jb2RlPiBob2xkaW5nIHRoZSBpbnB1dCBwYXJhbXMKKyAgICAgKiBAcmV0dXJuIHRoZSBhbGdvcml0aG0tc3BlY2lmaWMgPGNvZGU+RGlnZXN0TWV0aG9kUGFyYW1ldGVyU3BlYzwvY29kZT4KKyAgICAgKiBAdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24gaWYgdGhlIHBhcmFtZXRlcnMgY2Fubm90IGJlIHVubWFyc2hhbGxlZAorICAgICAqLworICAgIERpZ2VzdE1ldGhvZFBhcmFtZXRlclNwZWMgCisJdW5tYXJzaGFsUGFyYW1zKEVsZW1lbnQgcGFyYW1zRWxlbSkgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworICAgICAgICB0aHJvdyBuZXcgTWFyc2hhbEV4Y2VwdGlvbigibm8gcGFyYW1ldGVycyBzaG91bGQgIiArCisgICAgICAgICAgICAiYmUgc3BlY2lmaWVkIGZvciB0aGUgIiArIGdldE1lc3NhZ2VEaWdlc3RBbGdvcml0aG0oKSArCisgICAgICAgICAgICAiIERpZ2VzdE1ldGhvZCBhbGdvcml0aG0iKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIG1ldGhvZCBpbnZva2VzIHRoZSBhYnN0cmFjdCB7QGxpbmsgI21hcnNoYWxQYXJhbXMgbWFyc2hhbFBhcmFtc30gCisgICAgICogbWV0aG9kIHRvIG1hcnNoYWwgYW55IGFsZ29yaXRobS1zcGVjaWZpYyBwYXJhbWV0ZXJzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIG1hcnNoYWwoTm9kZSBwYXJlbnQsIFN0cmluZyBwcmVmaXgsIERPTUNyeXB0b0NvbnRleHQgY29udGV4dCkgCisJdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworICAgICAgICBEb2N1bWVudCBvd25lckRvYyA9IERPTVV0aWxzLmdldE93bmVyRG9jdW1lbnQocGFyZW50KTsKKworICAgICAgICBFbGVtZW50IGRtRWxlbSA9IERPTVV0aWxzLmNyZWF0ZUVsZW1lbnQKKwkgICAgKG93bmVyRG9jLCAiRGlnZXN0TWV0aG9kIiwgWE1MU2lnbmF0dXJlLlhNTE5TLCBwcmVmaXgpOworICAgICAgICBET01VdGlscy5zZXRBdHRyaWJ1dGUoZG1FbGVtLCAiQWxnb3JpdGhtIiwgZ2V0QWxnb3JpdGhtKCkpOworCisgICAgICAgIGlmIChwYXJhbXMgIT0gbnVsbCkgeworCSAgICBtYXJzaGFsUGFyYW1zKGRtRWxlbSwgcHJlZml4KTsKKyAgICAgICAgfQorCisgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChkbUVsZW0pOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3QgbykgeworCWlmICh0aGlzID09IG8pIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCX0KKworICAgICAgICBpZiAoIShvIGluc3RhbmNlb2YgRGlnZXN0TWV0aG9kKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCX0KKyAgICAgICAgRGlnZXN0TWV0aG9kIG9kbSA9IChEaWdlc3RNZXRob2QpIG87CisKKwlib29sZWFuIHBhcmFtc0VxdWFsID0gKHBhcmFtcyA9PSBudWxsID8gb2RtLmdldFBhcmFtZXRlclNwZWMoKSA9PSBudWxsIDoKKwkgICAgcGFyYW1zLmVxdWFscyhvZG0uZ2V0UGFyYW1ldGVyU3BlYygpKSk7CisKKwlyZXR1cm4gKGdldEFsZ29yaXRobSgpLmVxdWFscyhvZG0uZ2V0QWxnb3JpdGhtKCkpICYmIHBhcmFtc0VxdWFsKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNYXJzaGFscyB0aGUgYWxnb3JpdGhtLXNwZWNpZmljIHBhcmFtZXRlcnMgdG8gYW4gRWxlbWVudCBhbmQKKyAgICAgKiBhcHBlbmRzIGl0IHRvIHRoZSBzcGVjaWZpZWQgcGFyZW50IGVsZW1lbnQuIEJ5IGRlZmF1bHQsIHRoaXMgbWV0aG9kCisgICAgICogdGhyb3dzIGFuIGV4Y2VwdGlvbiBzaW5jZSBtb3N0IERpZ2VzdE1ldGhvZCBhbGdvcml0aG1zIGRvIG5vdCBoYXZlCisgICAgICogcGFyYW1ldGVycy4gU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgaXQgaWYgdGhleSBoYXZlIHBhcmFtZXRlcnMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcGFyZW50IHRoZSBwYXJlbnQgZWxlbWVudCB0byBhcHBlbmQgdGhlIHBhcmFtZXRlcnMgdG8KKyAgICAgKiBAcGFyYW0gdGhlIG5hbWVzcGFjZSBwcmVmaXggdG8gdXNlCisgICAgICogQHRocm93cyBNYXJzaGFsRXhjZXB0aW9uIGlmIHRoZSBwYXJhbWV0ZXJzIGNhbm5vdCBiZSBtYXJzaGFsbGVkCisgICAgICovCisgICAgdm9pZCBtYXJzaGFsUGFyYW1zKEVsZW1lbnQgcGFyZW50LCBTdHJpbmcgcHJlZml4KQorCXRocm93cyBNYXJzaGFsRXhjZXB0aW9uIHsKKyAgICAgICAgdGhyb3cgbmV3IE1hcnNoYWxFeGNlcHRpb24oIm5vIHBhcmFtZXRlcnMgc2hvdWxkICIgKworICAgICAgICAgICAgImJlIHNwZWNpZmllZCBmb3IgdGhlICIgKyBnZXRNZXNzYWdlRGlnZXN0QWxnb3JpdGhtKCkgKworICAgICAgICAgICAgIiBEaWdlc3RNZXRob2QgYWxnb3JpdGhtIik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgTWVzc2FnZURpZ2VzdCBzdGFuZGFyZCBhbGdvcml0aG0gbmFtZS4KKyAgICAgKi8KKyAgICBhYnN0cmFjdCBTdHJpbmcgZ2V0TWVzc2FnZURpZ2VzdEFsZ29yaXRobSgpOworCisgICAgc3RhdGljIGZpbmFsIGNsYXNzIFNIQTEgZXh0ZW5kcyBET01EaWdlc3RNZXRob2QgeworICAgICAgICBTSEExKEFsZ29yaXRobVBhcmFtZXRlclNwZWMgcGFyYW1zKQorICAgICAgICAgICAgdGhyb3dzIEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24geworICAgICAgICAgICAgc3VwZXIocGFyYW1zKTsKKyAgICAgICAgfQorICAgICAgICBTSEExKEVsZW1lbnQgZG1FbGVtKSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgICAgICBzdXBlcihkbUVsZW0pOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0QWxnb3JpdGhtKCkgeworICAgICAgICAgICAgcmV0dXJuIERpZ2VzdE1ldGhvZC5TSEExOworICAgICAgICB9CisgICAgICAgIFN0cmluZyBnZXRNZXNzYWdlRGlnZXN0QWxnb3JpdGhtKCkgeworICAgICAgICAgICAgcmV0dXJuICJTSEEtMSI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgY2xhc3MgU0hBMjU2IGV4dGVuZHMgRE9NRGlnZXN0TWV0aG9kIHsKKyAgICAgICAgU0hBMjU2KEFsZ29yaXRobVBhcmFtZXRlclNwZWMgcGFyYW1zKQorICAgICAgICAgICAgdGhyb3dzIEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24geworICAgICAgICAgICAgc3VwZXIocGFyYW1zKTsKKyAgICAgICAgfQorICAgICAgICBTSEEyNTYoRWxlbWVudCBkbUVsZW0pIHRocm93cyBNYXJzaGFsRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIHN1cGVyKGRtRWxlbSk7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIFN0cmluZyBnZXRBbGdvcml0aG0oKSB7CisgICAgICAgICAgICByZXR1cm4gRGlnZXN0TWV0aG9kLlNIQTI1NjsKKyAgICAgICAgfQorICAgICAgICBTdHJpbmcgZ2V0TWVzc2FnZURpZ2VzdEFsZ29yaXRobSgpIHsKKyAgICAgICAgICAgIHJldHVybiAiU0hBLTI1NiI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgY2xhc3MgU0hBMzg0IGV4dGVuZHMgRE9NRGlnZXN0TWV0aG9kIHsKKyAgICAgICAgU0hBMzg0KEFsZ29yaXRobVBhcmFtZXRlclNwZWMgcGFyYW1zKQorICAgICAgICAgICAgdGhyb3dzIEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24geworICAgICAgICAgICAgc3VwZXIocGFyYW1zKTsKKyAgICAgICAgfQorICAgICAgICBTSEEzODQoRWxlbWVudCBkbUVsZW0pIHRocm93cyBNYXJzaGFsRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIHN1cGVyKGRtRWxlbSk7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIFN0cmluZyBnZXRBbGdvcml0aG0oKSB7CisgICAgICAgICAgICByZXR1cm4gU0hBMzg0OworICAgICAgICB9CisgICAgICAgIFN0cmluZyBnZXRNZXNzYWdlRGlnZXN0QWxnb3JpdGhtKCkgeworICAgICAgICAgICAgcmV0dXJuICJTSEEtMzg0IjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBmaW5hbCBjbGFzcyBTSEE1MTIgZXh0ZW5kcyBET01EaWdlc3RNZXRob2QgeworICAgICAgICBTSEE1MTIoQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyBwYXJhbXMpCisgICAgICAgICAgICB0aHJvd3MgSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiB7CisgICAgICAgICAgICBzdXBlcihwYXJhbXMpOworICAgICAgICB9CisgICAgICAgIFNIQTUxMihFbGVtZW50IGRtRWxlbSkgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworICAgICAgICAgICAgc3VwZXIoZG1FbGVtKTsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgU3RyaW5nIGdldEFsZ29yaXRobSgpIHsKKyAgICAgICAgICAgIHJldHVybiBEaWdlc3RNZXRob2QuU0hBNTEyOworICAgICAgICB9CisgICAgICAgIFN0cmluZyBnZXRNZXNzYWdlRGlnZXN0QWxnb3JpdGhtKCkgeworICAgICAgICAgICAgcmV0dXJuICJTSEEtNTEyIjsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01FbnZlbG9wZWRUcmFuc2Zvcm0uamF2YSBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01FbnZlbG9wZWRUcmFuc2Zvcm0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41N2M2YmI3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTUVudmVsb3BlZFRyYW5zZm9ybS5qYXZhCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tOworCitpbXBvcnQgamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5zcGVjLlRyYW5zZm9ybVBhcmFtZXRlclNwZWM7CisKKy8qKgorICogRE9NLWJhc2VkIGltcGxlbWVudGF0aW9uIG9mIEVudmVsb3BlZCBTaWduYXR1cmUgVHJhbnNmb3JtLgorICogKFVzZXMgQXBhY2hlIFhNTC1TZWMgVHJhbnNmb3JtIGltcGxlbWVudGF0aW9uKQorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqLworcHVibGljIGZpbmFsIGNsYXNzIERPTUVudmVsb3BlZFRyYW5zZm9ybSBleHRlbmRzIEFwYWNoZVRyYW5zZm9ybSB7CisKKyAgICBwdWJsaWMgdm9pZCBpbml0KFRyYW5zZm9ybVBhcmFtZXRlclNwZWMgcGFyYW1zKQorICAgICAgICB0aHJvd3MgSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiB7CisgICAgICAgIGlmIChwYXJhbXMgIT0gbnVsbCkgeworCSAgICB0aHJvdyBuZXcgSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbigicGFyYW1zIG11c3QgYmUgbnVsbCIpOworCX0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NRXhjQzE0Tk1ldGhvZC5qYXZhIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTUV4Y0MxNE5NZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWQ1ZTc5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTUV4Y0MxNE5NZXRob2QuamF2YQpAQCAtMCwwICsxLDE1MSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2Ugb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb207CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLnNwZWMuQzE0Tk1ldGhvZFBhcmFtZXRlclNwZWM7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLnNwZWMuRXhjQzE0TlBhcmFtZXRlclNwZWM7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLnNwZWMuVHJhbnNmb3JtUGFyYW1ldGVyU3BlYzsKKworaW1wb3J0IGphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYzsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5DYW5vbmljYWxpemVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb247CisKKy8qKgorICogRE9NLWJhc2VkIGltcGxlbWVudGF0aW9uIG9mIENhbm9uaWNhbGl6YXRpb25NZXRob2QgZm9yIEV4Y2x1c2l2ZQorICogQ2Fub25pY2FsIFhNTCBhbGdvcml0aG0gKHdpdGggb3Igd2l0aG91dCBjb21tZW50cykuCisgKiBVc2VzIEFwYWNoZSBYTUwtU2VjIENhbm9uaWNhbGl6ZXIuCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgRE9NRXhjQzE0Tk1ldGhvZCBleHRlbmRzIEFwYWNoZUNhbm9uaWNhbGl6ZXIgeworCisgICAgcHVibGljIHZvaWQgaW5pdChUcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjIHBhcmFtcykKKyAgICAgICAgdGhyb3dzIEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24geworICAgICAgICBpZiAocGFyYW1zICE9IG51bGwpIHsKKyAgICAgICAgICAgIGlmICghKHBhcmFtcyBpbnN0YW5jZW9mIEV4Y0MxNE5QYXJhbWV0ZXJTcGVjKSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uCisgICAgICAgICAgICAgICAgICAgICgicGFyYW1zIG11c3QgYmUgb2YgdHlwZSBFeGNDMTROUGFyYW1ldGVyU3BlYyIpOworICAgICAgICAgICAgfQorCSAgICB0aGlzLnBhcmFtcyA9IChDMTROTWV0aG9kUGFyYW1ldGVyU3BlYykgcGFyYW1zOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgaW5pdChYTUxTdHJ1Y3R1cmUgcGFyZW50LCBYTUxDcnlwdG9Db250ZXh0IGNvbnRleHQpCisgICAgICAgIHRocm93cyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIHsKKwlzdXBlci5pbml0KHBhcmVudCwgY29udGV4dCk7CisJRWxlbWVudCBwYXJhbXNFbGVtID0gRE9NVXRpbHMuZ2V0Rmlyc3RDaGlsZEVsZW1lbnQodHJhbnNmb3JtRWxlbSk7CisJaWYgKHBhcmFtc0VsZW0gPT0gbnVsbCkgeworCSAgICB0aGlzLnBhcmFtcyA9IG51bGw7CisJICAgIHRoaXMuaW5jbHVzaXZlTmFtZXNwYWNlcyA9IG51bGw7CisJICAgIHJldHVybjsKKwl9CisJdW5tYXJzaGFsUGFyYW1zKHBhcmFtc0VsZW0pOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB1bm1hcnNoYWxQYXJhbXMoRWxlbWVudCBwYXJhbXNFbGVtKSB7CisJU3RyaW5nIHByZWZpeExpc3RBdHRyID0gcGFyYW1zRWxlbS5nZXRBdHRyaWJ1dGVOUyhudWxsLCAiUHJlZml4TGlzdCIpOworCXRoaXMuaW5jbHVzaXZlTmFtZXNwYWNlcyA9IHByZWZpeExpc3RBdHRyOworCWludCBiZWdpbiA9IDA7CisJaW50IGVuZCA9IHByZWZpeExpc3RBdHRyLmluZGV4T2YoJyAnKTsKKwlMaXN0IHByZWZpeExpc3QgPSBuZXcgQXJyYXlMaXN0KCk7CisJd2hpbGUgKGVuZCAhPSAtMSkgeworCSAgICBwcmVmaXhMaXN0LmFkZChwcmVmaXhMaXN0QXR0ci5zdWJzdHJpbmcoYmVnaW4sIGVuZCkpOworCSAgICBiZWdpbiA9IGVuZCArIDE7CisJICAgIGVuZCA9IHByZWZpeExpc3RBdHRyLmluZGV4T2YoJyAnLCBiZWdpbik7CisJfQorCWlmIChiZWdpbiA8PSBwcmVmaXhMaXN0QXR0ci5sZW5ndGgoKSkgeworICAgICAgICAgICAgcHJlZml4TGlzdC5hZGQocHJlZml4TGlzdEF0dHIuc3Vic3RyaW5nKGJlZ2luKSk7CisgICAgICAgIH0KKwl0aGlzLnBhcmFtcyA9IG5ldyBFeGNDMTROUGFyYW1ldGVyU3BlYyhwcmVmaXhMaXN0KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBtYXJzaGFsUGFyYW1zKFhNTFN0cnVjdHVyZSBwYXJlbnQsIFhNTENyeXB0b0NvbnRleHQgY29udGV4dCkKKyAgICAgICAgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworCisJc3VwZXIubWFyc2hhbFBhcmFtcyhwYXJlbnQsIGNvbnRleHQpOworCUFsZ29yaXRobVBhcmFtZXRlclNwZWMgc3BlYyA9IGdldFBhcmFtZXRlclNwZWMoKTsKKwlpZiAoc3BlYyA9PSBudWxsKSB7CisJICAgIHJldHVybjsKKwl9CisKKwlTdHJpbmcgcHJlZml4ID0gCisJICAgIERPTVV0aWxzLmdldE5TUHJlZml4KGNvbnRleHQsIENhbm9uaWNhbGl6YXRpb25NZXRob2QuRVhDTFVTSVZFKTsKKyAgICAgICAgRWxlbWVudCBleGNFbGVtID0gRE9NVXRpbHMuY3JlYXRlRWxlbWVudAorCSAgICAob3duZXJEb2MsICJJbmNsdXNpdmVOYW1lc3BhY2VzIiwgCisJICAgICBDYW5vbmljYWxpemF0aW9uTWV0aG9kLkVYQ0xVU0lWRSwgcHJlZml4KTsKKwlpZiAocHJlZml4ID09IG51bGwgfHwgcHJlZml4Lmxlbmd0aCgpID09IDApIHsKKwkgICAgZXhjRWxlbS5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLCAieG1sbnMiLAorCSAgICAgICAgQ2Fub25pY2FsaXphdGlvbk1ldGhvZC5FWENMVVNJVkUpOworCX0gZWxzZSB7CisJICAgIGV4Y0VsZW0uc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIiwgCisJCSJ4bWxuczoiICsgcHJlZml4LCBDYW5vbmljYWxpemF0aW9uTWV0aG9kLkVYQ0xVU0lWRSk7CisJfQorCisJRXhjQzE0TlBhcmFtZXRlclNwZWMgcGFyYW1zID0gKEV4Y0MxNE5QYXJhbWV0ZXJTcGVjKSBzcGVjOworCVN0cmluZ0J1ZmZlciBwcmVmaXhMaXN0QXR0ciA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworCUxpc3QgcHJlZml4TGlzdCA9IHBhcmFtcy5nZXRQcmVmaXhMaXN0KCk7CisJZm9yIChpbnQgaSA9IDAsIHNpemUgPSBwcmVmaXhMaXN0LnNpemUoKTsgaSA8IHNpemU7IGkrKykgeworCSAgICBwcmVmaXhMaXN0QXR0ci5hcHBlbmQoKFN0cmluZykgcHJlZml4TGlzdC5nZXQoaSkpOworCSAgICBpZiAoaSA8IHNpemUgLSAxKSB7CisJCXByZWZpeExpc3RBdHRyLmFwcGVuZCgiICIpOworCSAgICB9CisJfQorCURPTVV0aWxzLnNldEF0dHJpYnV0ZShleGNFbGVtLCAiUHJlZml4TGlzdCIsIHByZWZpeExpc3RBdHRyLnRvU3RyaW5nKCkpOworCXRoaXMuaW5jbHVzaXZlTmFtZXNwYWNlcyA9IHByZWZpeExpc3RBdHRyLnRvU3RyaW5nKCk7CisJdHJhbnNmb3JtRWxlbS5hcHBlbmRDaGlsZChleGNFbGVtKTsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldFBhcmFtc05TVVJJKCkgeworCXJldHVybiBDYW5vbmljYWxpemF0aW9uTWV0aG9kLkVYQ0xVU0lWRTsKKyAgICB9CisKKyAgICBwdWJsaWMgRGF0YSB0cmFuc2Zvcm0oRGF0YSBkYXRhLCBYTUxDcnlwdG9Db250ZXh0IHhjKQorCXRocm93cyBUcmFuc2Zvcm1FeGNlcHRpb24geworCisJLy8gaWdub3JlIGNvbW1lbnRzIGlmIGRlcmVmZXJlbmNpbmcgc2FtZS1kb2N1bWVudCBVUkkgdGhhdCByZXF1aXJlCisJLy8geW91IHRvIG9taXQgY29tbWVudHMsIGV2ZW4gaWYgdGhlIFRyYW5zZm9ybSBzYXlzIG90aGVyd2lzZSAtCisJLy8gdGhpcyBpcyB0byBiZSBjb21wbGlhbnQgd2l0aCBzZWN0aW9uIDQuMy4zLjMgb2YgVzNDIFJlYy4KKwlpZiAoZGF0YSBpbnN0YW5jZW9mIERPTVN1YlRyZWVEYXRhKSB7CisJICAgIERPTVN1YlRyZWVEYXRhIHN1YlRyZWUgPSAoRE9NU3ViVHJlZURhdGEpIGRhdGE7CisJICAgIGlmIChzdWJUcmVlLmV4Y2x1ZGVDb21tZW50cygpKSB7CisJCXRyeSB7CisgICAgICAgICAgICAgICAgICAgIGFwYWNoZUNhbm9uaWNhbGl6ZXIgPSBDYW5vbmljYWxpemVyLmdldEluc3RhbmNlCisJCQkoQ2Fub25pY2FsaXphdGlvbk1ldGhvZC5FWENMVVNJVkUpOworCQl9IGNhdGNoIChJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiBpY2UpIHsKKwkJICAgIHRocm93IG5ldyBUcmFuc2Zvcm1FeGNlcHRpb24KKwkJCSgiQ291bGRuJ3QgZmluZCBDYW5vbmljYWxpemVyIGZvcjogIiArCisJCQkgQ2Fub25pY2FsaXphdGlvbk1ldGhvZC5FWENMVVNJVkUgKyAiOiAiICsKKwkJCSBpY2UuZ2V0TWVzc2FnZSgpLCBpY2UpOworCQl9CisgICAgICAgICAgICB9CisJfQorCisJcmV0dXJuIGNhbm9uaWNhbGl6ZShkYXRhLCB4Yyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTUhNQUNTaWduYXR1cmVNZXRob2QuamF2YSBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01ITUFDU2lnbmF0dXJlTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRiN2ZmNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01ITUFDU2lnbmF0dXJlTWV0aG9kLmphdmEKQEAgLTAsMCArMSwyOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNS0yMDEwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2Ugb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb207CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLnNwZWMuSE1BQ1BhcmFtZXRlclNwZWM7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLnNwZWMuU2lnbmF0dXJlTWV0aG9kUGFyYW1ldGVyU3BlYzsKKworaW1wb3J0IGphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb247CitpbXBvcnQgamF2YS5zZWN1cml0eS5LZXk7CitpbXBvcnQgamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0OworaW1wb3J0IGphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuU2lnbmF0dXJlRXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuc3BlYy5BbGdvcml0aG1QYXJhbWV0ZXJTcGVjOworaW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOworaW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsKK2ltcG9ydCBqYXZheC5jcnlwdG8uTWFjOworaW1wb3J0IGphdmF4LmNyeXB0by5TZWNyZXRLZXk7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworaW1wb3J0IG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuTWFjT3V0cHV0U3RyZWFtOworCisvKioKKyAqIERPTS1iYXNlZCBpbXBsZW1lbnRhdGlvbiBvZiBITUFDIFNpZ25hdHVyZU1ldGhvZC4KKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBET01ITUFDU2lnbmF0dXJlTWV0aG9kIGV4dGVuZHMgQWJzdHJhY3RET01TaWduYXR1cmVNZXRob2QgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgTG9nZ2VyIGxvZyA9IAorCUxvZ2dlci5nZXRMb2dnZXIoIm9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tIik7CisKKyAgICAvLyBzZWUgUkZDIDQwNTEgZm9yIHRoZXNlIGFsZ29yaXRobSBkZWZpbml0aW9ucworICAgIGZpbmFsIHN0YXRpYyBTdHJpbmcgSE1BQ19TSEEyNTYgPQorICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjaG1hYy1zaGEyNTYiOworICAgIGZpbmFsIHN0YXRpYyBTdHJpbmcgSE1BQ19TSEEzODQgPQorICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjaG1hYy1zaGEzODQiOworICAgIGZpbmFsIHN0YXRpYyBTdHJpbmcgSE1BQ19TSEE1MTIgPQorICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjaG1hYy1zaGE1MTIiOworCisgICAgcHJpdmF0ZSBNYWMgaG1hYzsKKyAgICBwcml2YXRlIGludCBvdXRwdXRMZW5ndGg7CisgICAgcHJpdmF0ZSBib29sZWFuIG91dHB1dExlbmd0aFNldDsKKyAgICBwcml2YXRlIFNpZ25hdHVyZU1ldGhvZFBhcmFtZXRlclNwZWMgcGFyYW1zOworCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIDxjb2RlPkRPTUhNQUNTaWduYXR1cmVNZXRob2Q8L2NvZGU+IHdpdGggdGhlIHNwZWNpZmllZCBwYXJhbXMgCisgICAgICoKKyAgICAgKiBAcGFyYW0gcGFyYW1zIGFsZ29yaXRobS1zcGVjaWZpYyBwYXJhbWV0ZXJzIChtYXkgYmUgPGNvZGU+bnVsbDwvY29kZT4pCisgICAgICogQHRocm93cyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIGlmIHBhcmFtcyBhcmUgaW5hcHByb3ByaWF0ZQorICAgICAqLworICAgIERPTUhNQUNTaWduYXR1cmVNZXRob2QoQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyBwYXJhbXMpIAorCXRocm93cyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIHsKKyAgICAgICAgY2hlY2tQYXJhbXMoKFNpZ25hdHVyZU1ldGhvZFBhcmFtZXRlclNwZWMpIHBhcmFtcyk7CisgICAgICAgIHRoaXMucGFyYW1zID0gKFNpZ25hdHVyZU1ldGhvZFBhcmFtZXRlclNwZWMpIHBhcmFtczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+RE9NSE1BQ1NpZ25hdHVyZU1ldGhvZDwvY29kZT4gZnJvbSBhbiBlbGVtZW50LgorICAgICAqCisgICAgICogQHBhcmFtIHNtRWxlbSBhIFNpZ25hdHVyZU1ldGhvZCBlbGVtZW50CisgICAgICovCisgICAgRE9NSE1BQ1NpZ25hdHVyZU1ldGhvZChFbGVtZW50IHNtRWxlbSkgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworICAgICAgICBFbGVtZW50IHBhcmFtc0VsZW0gPSBET01VdGlscy5nZXRGaXJzdENoaWxkRWxlbWVudChzbUVsZW0pOworICAgICAgICBpZiAocGFyYW1zRWxlbSAhPSBudWxsKSB7CisgICAgICAgICAgICBwYXJhbXMgPSB1bm1hcnNoYWxQYXJhbXMocGFyYW1zRWxlbSk7CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNoZWNrUGFyYW1zKHBhcmFtcyk7CisgICAgICAgIH0gY2F0Y2ggKEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24gaWFwZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE1hcnNoYWxFeGNlcHRpb24oaWFwZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGNoZWNrUGFyYW1zKFNpZ25hdHVyZU1ldGhvZFBhcmFtZXRlclNwZWMgcGFyYW1zKSAKKwl0aHJvd3MgSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiB7CisgICAgICAgIGlmIChwYXJhbXMgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKCEocGFyYW1zIGluc3RhbmNlb2YgSE1BQ1BhcmFtZXRlclNwZWMpKSB7CisJICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbgorCSAgICAgICAgICAgICgicGFyYW1zIG11c3QgYmUgb2YgdHlwZSBITUFDUGFyYW1ldGVyU3BlYyIpOworCSAgICB9CisJICAgIG91dHB1dExlbmd0aCA9ICgoSE1BQ1BhcmFtZXRlclNwZWMpIHBhcmFtcykuZ2V0T3V0cHV0TGVuZ3RoKCk7CisgICAgICAgICAgICBvdXRwdXRMZW5ndGhTZXQgPSB0cnVlOworCSAgICBpZiAobG9nLmlzTG9nZ2FibGUoTGV2ZWwuRklORSkpIHsKKwkgICAgICAgIGxvZy5sb2coTGV2ZWwuRklORSwgCisJCSAgICAiU2V0dGluZyBvdXRwdXRMZW5ndGggZnJvbSBITUFDUGFyYW1ldGVyU3BlYyB0bzogIgorCQkgICAgKyBvdXRwdXRMZW5ndGgpOworCSAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgZmluYWwgQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyBnZXRQYXJhbWV0ZXJTcGVjKCkgeworICAgICAgICByZXR1cm4gcGFyYW1zOworICAgIH0KKworICAgIFNpZ25hdHVyZU1ldGhvZFBhcmFtZXRlclNwZWMgdW5tYXJzaGFsUGFyYW1zKEVsZW1lbnQgcGFyYW1zRWxlbSkgCisJdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworICAgICAgICBvdXRwdXRMZW5ndGggPSBuZXcgSW50ZWdlcgorCSAgICAocGFyYW1zRWxlbS5nZXRGaXJzdENoaWxkKCkuZ2V0Tm9kZVZhbHVlKCkpLmludFZhbHVlKCk7CisgICAgICAgIG91dHB1dExlbmd0aFNldCA9IHRydWU7CisgICAgICAgIGlmIChsb2cuaXNMb2dnYWJsZShMZXZlbC5GSU5FKSkgeworICAgICAgICAgICAgbG9nLmxvZyhMZXZlbC5GSU5FLCAidW5tYXJzaGFsbGVkIG91dHB1dExlbmd0aDogIiArIG91dHB1dExlbmd0aCk7CisJfQorCXJldHVybiBuZXcgSE1BQ1BhcmFtZXRlclNwZWMob3V0cHV0TGVuZ3RoKTsKKyAgICB9CisKKyAgICB2b2lkIG1hcnNoYWxQYXJhbXMoRWxlbWVudCBwYXJlbnQsIFN0cmluZyBwcmVmaXgpCisJdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworCisJRG9jdW1lbnQgb3duZXJEb2MgPSBET01VdGlscy5nZXRPd25lckRvY3VtZW50KHBhcmVudCk7CisgICAgICAgIEVsZW1lbnQgaG1hY0VsZW0gPSBET01VdGlscy5jcmVhdGVFbGVtZW50KG93bmVyRG9jLCAiSE1BQ091dHB1dExlbmd0aCIsIAorCSAgICBYTUxTaWduYXR1cmUuWE1MTlMsIHByZWZpeCk7CisgICAgICAgIGhtYWNFbGVtLmFwcGVuZENoaWxkKG93bmVyRG9jLmNyZWF0ZVRleHROb2RlCisJICAgKFN0cmluZy52YWx1ZU9mKG91dHB1dExlbmd0aCkpKTsKKworICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoaG1hY0VsZW0pOworICAgIH0KKworICAgIGJvb2xlYW4gdmVyaWZ5KEtleSBrZXksIFNpZ25lZEluZm8gc2ksIGJ5dGVbXSBzaWcsCisJWE1MVmFsaWRhdGVDb250ZXh0IGNvbnRleHQpIAorCXRocm93cyBJbnZhbGlkS2V5RXhjZXB0aW9uLCBTaWduYXR1cmVFeGNlcHRpb24sIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisgICAgICAgIGlmIChrZXkgPT0gbnVsbCB8fCBzaSA9PSBudWxsIHx8IHNpZyA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIShrZXkgaW5zdGFuY2VvZiBTZWNyZXRLZXkpKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEtleUV4Y2VwdGlvbigia2V5IG11c3QgYmUgU2VjcmV0S2V5Iik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGhtYWMgPT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBobWFjID0gTWFjLmdldEluc3RhbmNlKGdldEpDQUFsZ29yaXRobSgpKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiBuc2FlKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbihuc2FlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAob3V0cHV0TGVuZ3RoU2V0ICYmIG91dHB1dExlbmd0aCA8IGdldERpZ2VzdExlbmd0aCgpKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgICAgICAgICAgICAgKCJITUFDT3V0cHV0TGVuZ3RoIG11c3Qgbm90IGJlIGxlc3MgdGhhbiAiICsgZ2V0RGlnZXN0TGVuZ3RoKCkpOworICAgICAgICB9CisgICAgICAgIGhtYWMuaW5pdCgoU2VjcmV0S2V5KSBrZXkpOworICAgICAgICAoKERPTVNpZ25lZEluZm8pc2kpLmNhbm9uaWNhbGl6ZShjb250ZXh0LCBuZXcgTWFjT3V0cHV0U3RyZWFtKGhtYWMpKTsKKyAgICAgICAgYnl0ZVtdIHJlc3VsdCA9IGhtYWMuZG9GaW5hbCgpOworCisgICAgICAgIHJldHVybiBNZXNzYWdlRGlnZXN0LmlzRXF1YWwoc2lnLCByZXN1bHQpOworICAgIH0KKworICAgIGJ5dGVbXSBzaWduKEtleSBrZXksIFNpZ25lZEluZm8gc2ksIFhNTFNpZ25Db250ZXh0IGNvbnRleHQpIAorCXRocm93cyBJbnZhbGlkS2V5RXhjZXB0aW9uLCBYTUxTaWduYXR1cmVFeGNlcHRpb24geworICAgICAgICBpZiAoa2V5ID09IG51bGwgfHwgc2kgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCEoa2V5IGluc3RhbmNlb2YgU2VjcmV0S2V5KSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRLZXlFeGNlcHRpb24oImtleSBtdXN0IGJlIFNlY3JldEtleSIpOworICAgICAgICB9CisgICAgICAgIGlmIChobWFjID09IG51bGwpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgaG1hYyA9IE1hYy5nZXRJbnN0YW5jZShnZXRKQ0FBbGdvcml0aG0oKSk7CisgICAgICAgICAgICB9IGNhdGNoIChOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24gbnNhZSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24obnNhZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKG91dHB1dExlbmd0aFNldCAmJiBvdXRwdXRMZW5ndGggPCBnZXREaWdlc3RMZW5ndGgoKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICAgICAgICAgICAgICgiSE1BQ091dHB1dExlbmd0aCBtdXN0IG5vdCBiZSBsZXNzIHRoYW4gIiArIGdldERpZ2VzdExlbmd0aCgpKTsKKyAgICAgICAgfQorICAgICAgICBobWFjLmluaXQoKFNlY3JldEtleSkga2V5KTsKKyAgICAgICAgKChET01TaWduZWRJbmZvKXNpKS5jYW5vbmljYWxpemUoY29udGV4dCwgbmV3IE1hY091dHB1dFN0cmVhbShobWFjKSk7CisgICAgICAgIHJldHVybiBobWFjLmRvRmluYWwoKTsKKyAgICB9CisKKyAgICBib29sZWFuIHBhcmFtc0VxdWFsKEFsZ29yaXRobVBhcmFtZXRlclNwZWMgc3BlYykgeworCWlmIChnZXRQYXJhbWV0ZXJTcGVjKCkgPT0gc3BlYykgeworCSAgICByZXR1cm4gdHJ1ZTsKKwl9CisgICAgICAgIGlmICghKHNwZWMgaW5zdGFuY2VvZiBITUFDUGFyYW1ldGVyU3BlYykpIHsKKwkgICAgcmV0dXJuIGZhbHNlOworCX0KKwlITUFDUGFyYW1ldGVyU3BlYyBvc3BlYyA9IChITUFDUGFyYW1ldGVyU3BlYykgc3BlYzsKKworCXJldHVybiAob3V0cHV0TGVuZ3RoID09IG9zcGVjLmdldE91dHB1dExlbmd0aCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBvdXRwdXQgbGVuZ3RoIG9mIHRoZSBoYXNoL2RpZ2VzdC4KKyAgICAgKi8KKyAgICBhYnN0cmFjdCBpbnQgZ2V0RGlnZXN0TGVuZ3RoKCk7CisKKyAgICBzdGF0aWMgZmluYWwgY2xhc3MgU0hBMSBleHRlbmRzIERPTUhNQUNTaWduYXR1cmVNZXRob2QgeworICAgICAgICBTSEExKEFsZ29yaXRobVBhcmFtZXRlclNwZWMgcGFyYW1zKQorICAgICAgICAgICAgdGhyb3dzIEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24geworICAgICAgICAgICAgc3VwZXIocGFyYW1zKTsKKyAgICAgICAgfQorICAgICAgICBTSEExKEVsZW1lbnQgZG1FbGVtKSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgICAgICBzdXBlcihkbUVsZW0pOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0QWxnb3JpdGhtKCkgeworICAgICAgICAgICAgcmV0dXJuIFNpZ25hdHVyZU1ldGhvZC5ITUFDX1NIQTE7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIGdldEpDQUFsZ29yaXRobSgpIHsKKyAgICAgICAgICAgIHJldHVybiAiSG1hY1NIQTEiOworICAgICAgICB9CisgICAgICAgIGludCBnZXRBbGdvcml0aG1UeXBlKCkgeworICAgICAgICAgICAgcmV0dXJuIEhNQUM7CisgICAgICAgIH0KKyAgICAgICAgaW50IGdldERpZ2VzdExlbmd0aCgpIHsKKyAgICAgICAgICAgIHJldHVybiAxNjA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgY2xhc3MgU0hBMjU2IGV4dGVuZHMgRE9NSE1BQ1NpZ25hdHVyZU1ldGhvZCB7CisgICAgICAgIFNIQTI1NihBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIHBhcmFtcykKKyAgICAgICAgICAgIHRocm93cyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIHN1cGVyKHBhcmFtcyk7CisgICAgICAgIH0KKyAgICAgICAgU0hBMjU2KEVsZW1lbnQgZG1FbGVtKSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgICAgICBzdXBlcihkbUVsZW0pOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0QWxnb3JpdGhtKCkgeworICAgICAgICAgICAgcmV0dXJuIEhNQUNfU0hBMjU2OworICAgICAgICB9CisgICAgICAgIFN0cmluZyBnZXRKQ0FBbGdvcml0aG0oKSB7CisgICAgICAgICAgICByZXR1cm4gIkhtYWNTSEEyNTYiOworICAgICAgICB9CisgICAgICAgIGludCBnZXRBbGdvcml0aG1UeXBlKCkgeworICAgICAgICAgICAgcmV0dXJuIEhNQUM7CisgICAgICAgIH0KKyAgICAgICAgaW50IGdldERpZ2VzdExlbmd0aCgpIHsKKyAgICAgICAgICAgIHJldHVybiAyNTY7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgY2xhc3MgU0hBMzg0IGV4dGVuZHMgRE9NSE1BQ1NpZ25hdHVyZU1ldGhvZCB7CisgICAgICAgIFNIQTM4NChBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIHBhcmFtcykKKyAgICAgICAgICAgIHRocm93cyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIHN1cGVyKHBhcmFtcyk7CisgICAgICAgIH0KKyAgICAgICAgU0hBMzg0KEVsZW1lbnQgZG1FbGVtKSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgICAgICBzdXBlcihkbUVsZW0pOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0QWxnb3JpdGhtKCkgeworICAgICAgICAgICAgcmV0dXJuIEhNQUNfU0hBMzg0OworICAgICAgICB9CisgICAgICAgIFN0cmluZyBnZXRKQ0FBbGdvcml0aG0oKSB7CisgICAgICAgICAgICByZXR1cm4gIkhtYWNTSEEzODQiOworICAgICAgICB9CisgICAgICAgIGludCBnZXRBbGdvcml0aG1UeXBlKCkgeworICAgICAgICAgICAgcmV0dXJuIEhNQUM7CisgICAgICAgIH0KKyAgICAgICAgaW50IGdldERpZ2VzdExlbmd0aCgpIHsKKyAgICAgICAgICAgIHJldHVybiAzODQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgY2xhc3MgU0hBNTEyIGV4dGVuZHMgRE9NSE1BQ1NpZ25hdHVyZU1ldGhvZCB7CisgICAgICAgIFNIQTUxMihBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIHBhcmFtcykKKyAgICAgICAgICAgIHRocm93cyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIHN1cGVyKHBhcmFtcyk7CisgICAgICAgIH0KKyAgICAgICAgU0hBNTEyKEVsZW1lbnQgZG1FbGVtKSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgICAgICBzdXBlcihkbUVsZW0pOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0QWxnb3JpdGhtKCkgeworICAgICAgICAgICAgcmV0dXJuIEhNQUNfU0hBNTEyOworICAgICAgICB9CisgICAgICAgIFN0cmluZyBnZXRKQ0FBbGdvcml0aG0oKSB7CisgICAgICAgICAgICByZXR1cm4gIkhtYWNTSEE1MTIiOworICAgICAgICB9CisgICAgICAgIGludCBnZXRBbGdvcml0aG1UeXBlKCkgeworICAgICAgICAgICAgcmV0dXJuIEhNQUM7CisgICAgICAgIH0KKyAgICAgICAgaW50IGdldERpZ2VzdExlbmd0aCgpIHsKKyAgICAgICAgICAgIHJldHVybiA1MTI7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NS2V5SW5mby5qYXZhIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTUtleUluZm8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2QwNGJmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTUtleUluZm8uamF2YQpAQCAtMCwwICsxLDE5OSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1LTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbTsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcua2V5aW5mby5LZXlJbmZvOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZG9tLio7CisKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlByb3ZpZGVyOworaW1wb3J0IGphdmEudXRpbC4qOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKKworLyoqCisgKiBET00tYmFzZWQgaW1wbGVtZW50YXRpb24gb2YgS2V5SW5mby4KKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBET01LZXlJbmZvIGV4dGVuZHMgRE9NU3RydWN0dXJlIGltcGxlbWVudHMgS2V5SW5mbyB7CisKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBpZDsKKyAgICBwcml2YXRlIGZpbmFsIExpc3Qga2V5SW5mb1R5cGVzOworCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIDxjb2RlPkRPTUtleUluZm88L2NvZGU+LgorICAgICAqCisgICAgICogQHBhcmFtIGNvbnRlbnQgYSBsaXN0IG9mIG9uZSBvciBtb3JlIHtAbGluayBYTUxTdHJ1Y3R1cmV9cyByZXByZXNlbnRpbmcKKyAgICAgKiAgICBrZXkgaW5mb3JtYXRpb24gdHlwZXMuIFRoZSBsaXN0IGlzIGRlZmVuc2l2ZWx5IGNvcGllZCB0byBwcm90ZWN0CisgICAgICogICAgYWdhaW5zdCBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbi4KKyAgICAgKiBAcGFyYW0gaWQgYW4gSUQgYXR0cmlidXRlCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5jb250ZW50PC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIDxjb2RlPmNvbnRlbnQ8L2NvZGU+IGlzIGVtcHR5CisgICAgICogQHRocm93cyBDbGFzc0Nhc3RFeGNlcHRpb24gaWYgPGNvZGU+Y29udGVudDwvY29kZT4gY29udGFpbnMgYW55IGVudHJpZXMKKyAgICAgKiAgICB0aGF0IGFyZSBub3Qgb2YgdHlwZSB7QGxpbmsgWE1MU3RydWN0dXJlfQorICAgICAqLworICAgIHB1YmxpYyBET01LZXlJbmZvKExpc3QgY29udGVudCwgU3RyaW5nIGlkKSB7CisgICAgICAgIGlmIChjb250ZW50ID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigiY29udGVudCBjYW5ub3QgYmUgbnVsbCIpOworCX0KKwlMaXN0IHR5cGVzQ29weSA9IG5ldyBBcnJheUxpc3QoY29udGVudCk7CisJaWYgKHR5cGVzQ29weS5pc0VtcHR5KCkpIHsKKwkgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiY29udGVudCBjYW5ub3QgYmUgZW1wdHkiKTsKKwl9CisJZm9yIChpbnQgaSA9IDAsIHNpemUgPSB0eXBlc0NvcHkuc2l6ZSgpOyBpIDwgc2l6ZTsgaSsrKSB7CisJICAgIGlmICghKHR5cGVzQ29weS5nZXQoaSkgaW5zdGFuY2VvZiBYTUxTdHJ1Y3R1cmUpKSB7CisJCXRocm93IG5ldyBDbGFzc0Nhc3RFeGNlcHRpb24KKwkJICAgICgiY29udGVudFsiK2krIl0gaXMgbm90IGEgdmFsaWQgS2V5SW5mbyB0eXBlIik7CisJICAgIH0KKwl9CisJdGhpcy5rZXlJbmZvVHlwZXMgPSBDb2xsZWN0aW9ucy51bm1vZGlmaWFibGVMaXN0KHR5cGVzQ29weSk7CisgICAgICAgIHRoaXMuaWQgPSBpZDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+RE9NS2V5SW5mbzwvY29kZT4gZnJvbSBYTUwuCisgICAgICoKKyAgICAgKiBAcGFyYW0ga2lFbGVtIEtleUluZm8gZWxlbWVudAorICAgICAqLworICAgIHB1YmxpYyBET01LZXlJbmZvKEVsZW1lbnQga2lFbGVtLCBYTUxDcnlwdG9Db250ZXh0IGNvbnRleHQsCisJUHJvdmlkZXIgcHJvdmlkZXIpIHRocm93cyBNYXJzaGFsRXhjZXB0aW9uIHsKKwkvLyBnZXQgSWQgYXR0cmlidXRlLCBpZiBzcGVjaWZpZWQKKwlpZCA9IERPTVV0aWxzLmdldEF0dHJpYnV0ZVZhbHVlKGtpRWxlbSwgIklkIik7CisKKyAgICAgICAgLy8gZ2V0IGFsbCBjaGlsZHJlbiBub2RlcworICAgICAgICBOb2RlTGlzdCBubCA9IGtpRWxlbS5nZXRDaGlsZE5vZGVzKCk7CisJaW50IGxlbmd0aCA9IG5sLmdldExlbmd0aCgpOworCWlmIChsZW5ndGggPCAxKSB7CisJICAgIHRocm93IG5ldyBNYXJzaGFsRXhjZXB0aW9uCisJCSgiS2V5SW5mbyBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIHR5cGUiKTsKKwl9CisJTGlzdCBjb250ZW50ID0gbmV3IEFycmF5TGlzdChsZW5ndGgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBOb2RlIGNoaWxkID0gbmwuaXRlbShpKTsKKyAgICAgICAgICAgIC8vIGlnbm9yZSBhbGwgbm9uLUVsZW1lbnQgbm9kZXMKKyAgICAgICAgICAgIGlmIChjaGlsZC5nZXROb2RlVHlwZSgpICE9IE5vZGUuRUxFTUVOVF9OT0RFKSB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisJICAgIH0KKyAgICAgICAgICAgIEVsZW1lbnQgY2hpbGRFbGVtID0gKEVsZW1lbnQpIGNoaWxkOworCSAgICBTdHJpbmcgbG9jYWxOYW1lID0gY2hpbGRFbGVtLmdldExvY2FsTmFtZSgpOworICAgICAgICAgICAgaWYgKGxvY2FsTmFtZS5lcXVhbHMoIlg1MDlEYXRhIikpIHsKKwkgICAgICAgIGNvbnRlbnQuYWRkKG5ldyBET01YNTA5RGF0YShjaGlsZEVsZW0pKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobG9jYWxOYW1lLmVxdWFscygiS2V5TmFtZSIpKSB7CisJICAgICAgICBjb250ZW50LmFkZChuZXcgRE9NS2V5TmFtZShjaGlsZEVsZW0pKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobG9jYWxOYW1lLmVxdWFscygiS2V5VmFsdWUiKSkgeworCSAgICAgICAgY29udGVudC5hZGQoRE9NS2V5VmFsdWUudW5tYXJzaGFsKGNoaWxkRWxlbSkpOworICAgICAgICAgICAgfSBlbHNlIGlmIChsb2NhbE5hbWUuZXF1YWxzKCJSZXRyaWV2YWxNZXRob2QiKSkgeworCSAgICAgICAgY29udGVudC5hZGQKKwkJICAgIChuZXcgRE9NUmV0cmlldmFsTWV0aG9kKGNoaWxkRWxlbSwgY29udGV4dCwgcHJvdmlkZXIpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobG9jYWxOYW1lLmVxdWFscygiUEdQRGF0YSIpKSB7CisJICAgICAgICBjb250ZW50LmFkZChuZXcgRE9NUEdQRGF0YShjaGlsZEVsZW0pKTsKKwkgICAgfSBlbHNlIHsgLy9tYXkgYmUgTWdtdERhdGEsIFNQS0lEYXRhIG9yIGVsZW1lbnQgZnJvbSBvdGhlciBuYW1lc3BhY2UKKwkgICAgICAgIGNvbnRlbnQuYWRkKG5ldyBqYXZheC54bWwuY3J5cHRvLmRvbS5ET01TdHJ1Y3R1cmUoKGNoaWxkRWxlbSkpKTsKKwkgICAgfQorICAgICAgICB9CisJa2V5SW5mb1R5cGVzID0gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlTGlzdChjb250ZW50KTsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldElkKCkgeworCXJldHVybiBpZDsKKyAgICB9CisKKyAgICBwdWJsaWMgTGlzdCBnZXRDb250ZW50KCkgeworCXJldHVybiBrZXlJbmZvVHlwZXM7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgbWFyc2hhbChYTUxTdHJ1Y3R1cmUgcGFyZW50LCBYTUxDcnlwdG9Db250ZXh0IGNvbnRleHQpCisgICAgICAgIHRocm93cyBNYXJzaGFsRXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKHBhcmVudCA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oInBhcmVudCBpcyBudWxsIik7CisgICAgICAgIH0KKworICAgICAgICBOb2RlIHBOb2RlID0gKChqYXZheC54bWwuY3J5cHRvLmRvbS5ET01TdHJ1Y3R1cmUpIHBhcmVudCkuZ2V0Tm9kZSgpOworICAgICAgICBTdHJpbmcgZHNQcmVmaXggPSBET01VdGlscy5nZXRTaWduYXR1cmVQcmVmaXgoY29udGV4dCk7CisgICAgICAgIEVsZW1lbnQga2lFbGVtID0gRE9NVXRpbHMuY3JlYXRlRWxlbWVudAorICAgICAgICAgICAgKERPTVV0aWxzLmdldE93bmVyRG9jdW1lbnQocE5vZGUpLCAiS2V5SW5mbyIsCisgICAgICAgICAgICAgWE1MU2lnbmF0dXJlLlhNTE5TLCBkc1ByZWZpeCk7CisgICAgICAgIGlmIChkc1ByZWZpeCA9PSBudWxsIHx8IGRzUHJlZml4Lmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgIGtpRWxlbS5zZXRBdHRyaWJ1dGVOUworICAgICAgICAgICAgICAgICgiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLCAieG1sbnMiLCBYTUxTaWduYXR1cmUuWE1MTlMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAga2lFbGVtLnNldEF0dHJpYnV0ZU5TCisgICAgICAgICAgICAgICAgKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsICJ4bWxuczoiICsgZHNQcmVmaXgsCisgICAgICAgICAgICAgICAgIFhNTFNpZ25hdHVyZS5YTUxOUyk7CisgICAgICAgIH0KKyAgICAgICAgbWFyc2hhbChwTm9kZSwga2lFbGVtLCBudWxsLCBkc1ByZWZpeCwgKERPTUNyeXB0b0NvbnRleHQpIGNvbnRleHQpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG1hcnNoYWwoTm9kZSBwYXJlbnQsIFN0cmluZyBkc1ByZWZpeCwgCisJRE9NQ3J5cHRvQ29udGV4dCBjb250ZXh0KSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisJbWFyc2hhbChwYXJlbnQsIG51bGwsIGRzUHJlZml4LCBjb250ZXh0KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBtYXJzaGFsKE5vZGUgcGFyZW50LCBOb2RlIG5leHRTaWJsaW5nLCBTdHJpbmcgZHNQcmVmaXgsCisJRE9NQ3J5cHRvQ29udGV4dCBjb250ZXh0KSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgIERvY3VtZW50IG93bmVyRG9jID0gRE9NVXRpbHMuZ2V0T3duZXJEb2N1bWVudChwYXJlbnQpOworCisgICAgICAgIEVsZW1lbnQga2lFbGVtID0gRE9NVXRpbHMuY3JlYXRlRWxlbWVudAorCSAgICAob3duZXJEb2MsICJLZXlJbmZvIiwgWE1MU2lnbmF0dXJlLlhNTE5TLCBkc1ByZWZpeCk7CisgICAgICAgIG1hcnNoYWwocGFyZW50LCBraUVsZW0sIG5leHRTaWJsaW5nLCBkc1ByZWZpeCwgY29udGV4dCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIG1hcnNoYWwoTm9kZSBwYXJlbnQsIEVsZW1lbnQga2lFbGVtLCBOb2RlIG5leHRTaWJsaW5nLAorICAgICAgICBTdHJpbmcgZHNQcmVmaXgsIERPTUNyeXB0b0NvbnRleHQgY29udGV4dCkgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworICAgICAgICAvLyBjcmVhdGUgYW5kIGFwcGVuZCBLZXlJbmZvVHlwZSBlbGVtZW50cworCWZvciAoaW50IGkgPSAwLCBzaXplID0ga2V5SW5mb1R5cGVzLnNpemUoKTsgaSA8IHNpemU7IGkrKykgeworCSAgICBYTUxTdHJ1Y3R1cmUga2lUeXBlID0gKFhNTFN0cnVjdHVyZSkga2V5SW5mb1R5cGVzLmdldChpKTsKKwkgICAgaWYgKGtpVHlwZSBpbnN0YW5jZW9mIERPTVN0cnVjdHVyZSkgeworCQkoKERPTVN0cnVjdHVyZSkga2lUeXBlKS5tYXJzaGFsKGtpRWxlbSwgZHNQcmVmaXgsIGNvbnRleHQpOworCSAgICB9IGVsc2UgeworCQlET01VdGlscy5hcHBlbmRDaGlsZChraUVsZW0sCisJCSAgICAoKGphdmF4LnhtbC5jcnlwdG8uZG9tLkRPTVN0cnVjdHVyZSkga2lUeXBlKS5nZXROb2RlKCkpOworCSAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBhcHBlbmQgaWQgYXR0cmlidXRlCisgICAgICAgIERPTVV0aWxzLnNldEF0dHJpYnV0ZUlEKGtpRWxlbSwgIklkIiwgaWQpOworCisJcGFyZW50Lmluc2VydEJlZm9yZShraUVsZW0sIG5leHRTaWJsaW5nKTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG8pIHsKKwlpZiAodGhpcyA9PSBvKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwl9CisKKyAgICAgICAgaWYgKCEobyBpbnN0YW5jZW9mIEtleUluZm8pKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisJfQorICAgICAgICBLZXlJbmZvIG9raSA9IChLZXlJbmZvKSBvOworCisJYm9vbGVhbiBpZHNFcXVhbCA9IChpZCA9PSBudWxsID8gb2tpLmdldElkKCkgPT0gbnVsbCA6CisJICAgIGlkLmVxdWFscyhva2kuZ2V0SWQoKSkpOworCisJcmV0dXJuIChrZXlJbmZvVHlwZXMuZXF1YWxzKG9raS5nZXRDb250ZW50KCkpICYmIGlkc0VxdWFsKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NS2V5SW5mb0ZhY3RvcnkuamF2YSBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01LZXlJbmZvRmFjdG9yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMjUyYzEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NS2V5SW5mb0ZhY3RvcnkuamF2YQpAQCAtMCwwICsxLDE0NSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1LTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbTsKKworaW1wb3J0IGphdmEubWF0aC5CaWdJbnRlZ2VyOworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5RXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHVibGljS2V5OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcua2V5aW5mby4qOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKKworLyoqCisgKiBET00tYmFzZWQgaW1wbGVtZW50YXRpb24gb2YgS2V5SW5mb0ZhY3RvcnkuCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgRE9NS2V5SW5mb0ZhY3RvcnkgZXh0ZW5kcyBLZXlJbmZvRmFjdG9yeSB7CisKKyAgICBwdWJsaWMgRE9NS2V5SW5mb0ZhY3RvcnkoKSB7IH0KKworICAgIHB1YmxpYyBLZXlJbmZvIG5ld0tleUluZm8oTGlzdCBjb250ZW50KSB7CisJcmV0dXJuIG5ld0tleUluZm8oY29udGVudCwgbnVsbCk7CisgICAgfQorCisgICAgcHVibGljIEtleUluZm8gbmV3S2V5SW5mbyhMaXN0IGNvbnRlbnQsIFN0cmluZyBpZCkgeworCXJldHVybiBuZXcgRE9NS2V5SW5mbyhjb250ZW50LCBpZCk7CisgICAgfQorCisgICAgcHVibGljIEtleU5hbWUgbmV3S2V5TmFtZShTdHJpbmcgbmFtZSkgeworCXJldHVybiBuZXcgRE9NS2V5TmFtZShuYW1lKTsKKyAgICB9CisKKyAgICBwdWJsaWMgS2V5VmFsdWUgbmV3S2V5VmFsdWUoUHVibGljS2V5IGtleSkgIHRocm93cyBLZXlFeGNlcHRpb24geworICAgICAgICBTdHJpbmcgYWxnb3JpdGhtID0ga2V5LmdldEFsZ29yaXRobSgpOworICAgICAgICBpZiAoYWxnb3JpdGhtLmVxdWFscygiRFNBIikpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgRE9NS2V5VmFsdWUuRFNBKGtleSk7CisgICAgICAgIH0gZWxzZSBpZiAoYWxnb3JpdGhtLmVxdWFscygiUlNBIikpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgRE9NS2V5VmFsdWUuUlNBKGtleSk7CisgICAgICAgIH0gZWxzZSBpZiAoYWxnb3JpdGhtLmVxdWFscygiRUMiKSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBET01LZXlWYWx1ZS5FQyhrZXkpOworICAgICAgICB9IGVsc2UgeworCSAgICB0aHJvdyBuZXcgS2V5RXhjZXB0aW9uKCJ1bnN1cHBvcnRlZCBrZXkgYWxnb3JpdGhtOiAiICsgYWxnb3JpdGhtKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBQR1BEYXRhIG5ld1BHUERhdGEoYnl0ZVtdIGtleUlkKSB7CisJcmV0dXJuIG5ld1BHUERhdGEoa2V5SWQsIG51bGwsIG51bGwpOworICAgIH0KKworICAgIHB1YmxpYyBQR1BEYXRhIG5ld1BHUERhdGEoYnl0ZVtdIGtleUlkLCBieXRlW10ga2V5UGFja2V0LCBMaXN0IG90aGVyKSB7CisJcmV0dXJuIG5ldyBET01QR1BEYXRhKGtleUlkLCBrZXlQYWNrZXQsIG90aGVyKTsKKyAgICB9CisKKyAgICBwdWJsaWMgUEdQRGF0YSBuZXdQR1BEYXRhKGJ5dGVbXSBrZXlQYWNrZXQsIExpc3Qgb3RoZXIpIHsKKwlyZXR1cm4gbmV3IERPTVBHUERhdGEoa2V5UGFja2V0LCBvdGhlcik7CisgICAgfQorCisgICAgcHVibGljIFJldHJpZXZhbE1ldGhvZCBuZXdSZXRyaWV2YWxNZXRob2QoU3RyaW5nIHVyaSkgeworCXJldHVybiBuZXdSZXRyaWV2YWxNZXRob2QodXJpLCBudWxsLCBudWxsKTsKKyAgICB9CisKKyAgICBwdWJsaWMgUmV0cmlldmFsTWV0aG9kIG5ld1JldHJpZXZhbE1ldGhvZChTdHJpbmcgdXJpLCBTdHJpbmcgdHlwZSwKKyAgICAgICAgTGlzdCB0cmFuc2Zvcm1zKSB7CisJaWYgKHVyaSA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigidXJpIG11c3Qgbm90IGJlIG51bGwiKTsKKwl9CisJcmV0dXJuIG5ldyBET01SZXRyaWV2YWxNZXRob2QodXJpLCB0eXBlLCB0cmFuc2Zvcm1zKTsKKyAgICB9CisKKyAgICBwdWJsaWMgWDUwOURhdGEgbmV3WDUwOURhdGEoTGlzdCBjb250ZW50KSB7CisJcmV0dXJuIG5ldyBET01YNTA5RGF0YShjb250ZW50KTsKKyAgICB9CisKKyAgICBwdWJsaWMgWDUwOUlzc3VlclNlcmlhbCBuZXdYNTA5SXNzdWVyU2VyaWFsKFN0cmluZyBpc3N1ZXJOYW1lLCAKKwlCaWdJbnRlZ2VyIHNlcmlhbE51bWJlcikgeworCXJldHVybiBuZXcgRE9NWDUwOUlzc3VlclNlcmlhbChpc3N1ZXJOYW1lLCBzZXJpYWxOdW1iZXIpOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzRmVhdHVyZVN1cHBvcnRlZChTdHJpbmcgZmVhdHVyZSkgeworICAgICAgICBpZiAoZmVhdHVyZSA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBVUklEZXJlZmVyZW5jZXIgZ2V0VVJJRGVyZWZlcmVuY2VyKCkgeworCXJldHVybiBET01VUklEZXJlZmVyZW5jZXIuSU5TVEFOQ0U7CisgICAgfQorCisgICAgcHVibGljIEtleUluZm8gdW5tYXJzaGFsS2V5SW5mbyhYTUxTdHJ1Y3R1cmUgeG1sU3RydWN0dXJlKSAKKwl0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgIGlmICh4bWxTdHJ1Y3R1cmUgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJ4bWxTdHJ1Y3R1cmUgY2Fubm90IGJlIG51bGwiKTsKKyAgICAgICAgfQorICAgICAgICBOb2RlIG5vZGUgPSAKKwkgICAgKChqYXZheC54bWwuY3J5cHRvLmRvbS5ET01TdHJ1Y3R1cmUpIHhtbFN0cnVjdHVyZSkuZ2V0Tm9kZSgpOworICAgICAgICBub2RlLm5vcm1hbGl6ZSgpOworCisgICAgICAgIEVsZW1lbnQgZWxlbWVudCA9IG51bGw7CisgICAgICAgIGlmIChub2RlLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5ET0NVTUVOVF9OT0RFKSB7CisgICAgICAgICAgICBlbGVtZW50ID0gKChEb2N1bWVudCkgbm9kZSkuZ2V0RG9jdW1lbnRFbGVtZW50KCk7CisgICAgICAgIH0gZWxzZSBpZiAobm9kZS5nZXROb2RlVHlwZSgpID09IE5vZGUuRUxFTUVOVF9OT0RFKSB7CisgICAgICAgICAgICBlbGVtZW50ID0gKEVsZW1lbnQpIG5vZGU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTWFyc2hhbEV4Y2VwdGlvbgorCQkoInhtbFN0cnVjdHVyZSBkb2VzIG5vdCBjb250YWluIGEgcHJvcGVyIE5vZGUiKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGNoZWNrIHRhZworICAgICAgICBTdHJpbmcgdGFnID0gZWxlbWVudC5nZXRMb2NhbE5hbWUoKTsKKyAgICAgICAgaWYgKHRhZyA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTWFyc2hhbEV4Y2VwdGlvbigiRG9jdW1lbnQgaW1wbGVtZW50YXRpb24gbXVzdCAiICsKKyAgICAgICAgICAgICAgICAic3VwcG9ydCBET00gTGV2ZWwgMiBhbmQgYmUgbmFtZXNwYWNlIGF3YXJlIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRhZy5lcXVhbHMoIktleUluZm8iKSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBET01LZXlJbmZvKGVsZW1lbnQsIG51bGwsIGdldFByb3ZpZGVyKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhyb3cgbmV3IE1hcnNoYWxFeGNlcHRpb24oImludmFsaWQgS2V5SW5mbyB0YWc6ICIgKyB0YWcpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTUtleU5hbWUuamF2YSBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01LZXlOYW1lLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJiNTBhMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01LZXlOYW1lLmphdmEKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2Ugb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb207CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kb20uRE9NQ3J5cHRvQ29udGV4dDsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcua2V5aW5mby5LZXlOYW1lOworCitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworCisvKioKKyAqIERPTS1iYXNlZCBpbXBsZW1lbnRhdGlvbiBvZiBLZXlOYW1lLgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqLworcHVibGljIGZpbmFsIGNsYXNzIERPTUtleU5hbWUgZXh0ZW5kcyBET01TdHJ1Y3R1cmUgaW1wbGVtZW50cyBLZXlOYW1lIHsKKworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIG5hbWU7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+RE9NS2V5TmFtZTwvY29kZT4uIAorICAgICAqCisgICAgICogQHBhcmFtIG5hbWUgdGhlIG5hbWUgb2YgdGhlIGtleSBpZGVudGlmaWVyCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5uYW1lPC9jb2RlPiBpcyBudWxsCisgICAgICovCisgICAgcHVibGljIERPTUtleU5hbWUoU3RyaW5nIG5hbWUpIHsKKwlpZiAobmFtZSA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigibmFtZSBjYW5ub3QgYmUgbnVsbCIpOworCX0KKwl0aGlzLm5hbWUgPSBuYW1lOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSA8Y29kZT5ET01LZXlOYW1lPC9jb2RlPiBmcm9tIGEgS2V5TmFtZSBlbGVtZW50LgorICAgICAqCisgICAgICogQHBhcmFtIGtuRWxlbSBhIEtleU5hbWUgZWxlbWVudAorICAgICAqLworICAgIHB1YmxpYyBET01LZXlOYW1lKEVsZW1lbnQga25FbGVtKSB7CisJbmFtZSA9IGtuRWxlbS5nZXRGaXJzdENoaWxkKCkuZ2V0Tm9kZVZhbHVlKCk7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgeworCXJldHVybiBuYW1lOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG1hcnNoYWwoTm9kZSBwYXJlbnQsIFN0cmluZyBkc1ByZWZpeCwgRE9NQ3J5cHRvQ29udGV4dCBjb250ZXh0KQorCXRocm93cyBNYXJzaGFsRXhjZXB0aW9uIHsKKwlEb2N1bWVudCBvd25lckRvYyA9IERPTVV0aWxzLmdldE93bmVyRG9jdW1lbnQocGFyZW50KTsKKwkvLyBwcmVwZW5kIG5hbWVzcGFjZSBwcmVmaXgsIGlmIG5lY2Vzc2FyeQorCUVsZW1lbnQga25FbGVtID0gRE9NVXRpbHMuY3JlYXRlRWxlbWVudAorCSAgICAob3duZXJEb2MsICJLZXlOYW1lIiwgWE1MU2lnbmF0dXJlLlhNTE5TLCBkc1ByZWZpeCk7CisgICAgICAgIGtuRWxlbS5hcHBlbmRDaGlsZChvd25lckRvYy5jcmVhdGVUZXh0Tm9kZShuYW1lKSk7CisJcGFyZW50LmFwcGVuZENoaWxkKGtuRWxlbSk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvYmopIHsKKwlpZiAodGhpcyA9PSBvYmopIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCX0KKyAgICAgICAgaWYgKCEob2JqIGluc3RhbmNlb2YgS2V5TmFtZSkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwl9CisgICAgICAgIEtleU5hbWUgb2tuID0gKEtleU5hbWUpIG9iajsKKwlyZXR1cm4gbmFtZS5lcXVhbHMob2tuLmdldE5hbWUoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTUtleVZhbHVlLmphdmEgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NS2V5VmFsdWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTA3NGY1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTUtleVZhbHVlLmphdmEKQEAgLTAsMCArMSwzODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNS0yMDEwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2Ugb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb207CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kb20uRE9NQ3J5cHRvQ29udGV4dDsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcua2V5aW5mby5LZXlWYWx1ZTsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5zZWN1cml0eS5LZXlFeGNlcHRpb247CitpbXBvcnQgamF2YS5zZWN1cml0eS5LZXlGYWN0b3J5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHVibGljS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuaW50ZXJmYWNlcy5EU0FQYXJhbXM7CitpbXBvcnQgamF2YS5zZWN1cml0eS5pbnRlcmZhY2VzLkRTQVB1YmxpY0tleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmludGVyZmFjZXMuRUNQdWJsaWNLZXk7CitpbXBvcnQgamF2YS5zZWN1cml0eS5pbnRlcmZhY2VzLlJTQVB1YmxpY0tleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LnNwZWMuRFNBUHVibGljS2V5U3BlYzsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LnNwZWMuRUNQYXJhbWV0ZXJTcGVjOworaW1wb3J0IGphdmEuc2VjdXJpdHkuc3BlYy5FQ1BvaW50OworaW1wb3J0IGphdmEuc2VjdXJpdHkuc3BlYy5FQ1B1YmxpY0tleVNwZWM7CitpbXBvcnQgamF2YS5zZWN1cml0eS5zcGVjLkludmFsaWRLZXlTcGVjRXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuc3BlYy5LZXlTcGVjOworaW1wb3J0IGphdmEuc2VjdXJpdHkuc3BlYy5SU0FQdWJsaWNLZXlTcGVjOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmV4Y2VwdGlvbnMuQmFzZTY0RGVjb2RpbmdFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQmFzZTY0OworCisvKioKKyAqIERPTS1iYXNlZCBpbXBsZW1lbnRhdGlvbiBvZiBLZXlWYWx1ZS4KKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBET01LZXlWYWx1ZSBleHRlbmRzIERPTVN0cnVjdHVyZSBpbXBsZW1lbnRzIEtleVZhbHVlIHsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBYTUxEU0lHXzExX1hNTE5TIAorICAgICAgICA9ICJodHRwOi8vd3d3LnczLm9yZy8yMDA5L3htbGRzaWcxMSMiOworICAgIHByaXZhdGUgZmluYWwgUHVibGljS2V5IHB1YmxpY0tleTsKKworICAgIHB1YmxpYyBET01LZXlWYWx1ZShQdWJsaWNLZXkga2V5KSB0aHJvd3MgS2V5RXhjZXB0aW9uIHsKKwlpZiAoa2V5ID09IG51bGwpIHsKKwkgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJrZXkgY2Fubm90IGJlIG51bGwiKTsKKwl9CisJdGhpcy5wdWJsaWNLZXkgPSBrZXk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIDxjb2RlPkRPTUtleVZhbHVlPC9jb2RlPiBmcm9tIGFuIGVsZW1lbnQuCisgICAgICoKKyAgICAgKiBAcGFyYW0ga3Z0RWxlbSBhIEtleVZhbHVlIGNoaWxkIGVsZW1lbnQKKyAgICAgKi8KKyAgICBwdWJsaWMgRE9NS2V5VmFsdWUoRWxlbWVudCBrdnRFbGVtKSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgIHRoaXMucHVibGljS2V5ID0gdW5tYXJzaGFsS2V5VmFsdWUoa3Z0RWxlbSk7CisgICAgfQorCisgICAgc3RhdGljIEtleVZhbHVlIHVubWFyc2hhbChFbGVtZW50IGt2RWxlbSkgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworCUVsZW1lbnQga3Z0RWxlbSA9IERPTVV0aWxzLmdldEZpcnN0Q2hpbGRFbGVtZW50KGt2RWxlbSk7CisgICAgICAgIGlmIChrdnRFbGVtLmdldExvY2FsTmFtZSgpLmVxdWFscygiRFNBS2V5VmFsdWUiKSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBEU0Eoa3Z0RWxlbSk7CisgICAgICAgIH0gZWxzZSBpZiAoa3Z0RWxlbS5nZXRMb2NhbE5hbWUoKS5lcXVhbHMoIlJTQUtleVZhbHVlIikpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgUlNBKGt2dEVsZW0pOworICAgICAgICB9IGVsc2UgaWYgKGt2dEVsZW0uZ2V0TG9jYWxOYW1lKCkuZXF1YWxzKCJFQ0tleVZhbHVlIikpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgRUMoa3Z0RWxlbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFVua25vd24oa3Z0RWxlbSk7CisJfQorICAgIH0KKworICAgIHB1YmxpYyBQdWJsaWNLZXkgZ2V0UHVibGljS2V5KCkgdGhyb3dzIEtleUV4Y2VwdGlvbiB7CisJaWYgKHB1YmxpY0tleSA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBLZXlFeGNlcHRpb24oImNhbid0IGNvbnZlcnQgS2V5VmFsdWUgdG8gUHVibGljS2V5Iik7CisJfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBwdWJsaWNLZXk7CisJfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG1hcnNoYWwoTm9kZSBwYXJlbnQsIFN0cmluZyBkc1ByZWZpeCwgRE9NQ3J5cHRvQ29udGV4dCBjb250ZXh0KQorCXRocm93cyBNYXJzaGFsRXhjZXB0aW9uIHsKKyAgICAgICAgRG9jdW1lbnQgb3duZXJEb2MgPSBET01VdGlscy5nZXRPd25lckRvY3VtZW50KHBhcmVudCk7CisKKyAgICAgICAgLy8gY3JlYXRlIEtleVZhbHVlIGVsZW1lbnQKKyAgICAgICAgRWxlbWVudCBrdkVsZW0gPSBET01VdGlscy5jcmVhdGVFbGVtZW50CisJICAgIChvd25lckRvYywgIktleVZhbHVlIiwgWE1MU2lnbmF0dXJlLlhNTE5TLCBkc1ByZWZpeCk7CisgICAgICAgIG1hcnNoYWxQdWJsaWNLZXkoa3ZFbGVtLCBvd25lckRvYywgZHNQcmVmaXgsIGNvbnRleHQpOworCisgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChrdkVsZW0pOworICAgIH0KKworICAgIGFic3RyYWN0IHZvaWQgbWFyc2hhbFB1YmxpY0tleShOb2RlIHBhcmVudCwgRG9jdW1lbnQgZG9jLCBTdHJpbmcgZHNQcmVmaXgsIAorICAgICAgICBET01DcnlwdG9Db250ZXh0IGNvbnRleHQpIHRocm93cyBNYXJzaGFsRXhjZXB0aW9uOworCisgICAgYWJzdHJhY3QgUHVibGljS2V5IHVubWFyc2hhbEtleVZhbHVlKEVsZW1lbnQga3Z0RWxlbSkgCisJdGhyb3dzIE1hcnNoYWxFeGNlcHRpb247CisKKyAgICBwcml2YXRlIHN0YXRpYyBQdWJsaWNLZXkgZ2VuZXJhdGVQdWJsaWNLZXkoS2V5RmFjdG9yeSBrZiwgS2V5U3BlYyBrZXlzcGVjKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4ga2YuZ2VuZXJhdGVQdWJsaWMoa2V5c3BlYyk7CisgICAgICAgIH0gY2F0Y2ggKEludmFsaWRLZXlTcGVjRXhjZXB0aW9uIGUpIHsKKwkgICAgLy9AQEAgc2hvdWxkIGR1bXAgZXhjZXB0aW9uIHRvIGxvZworCSAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG9iaikgeworCWlmICh0aGlzID09IG9iaikgeworCSAgICByZXR1cm4gdHJ1ZTsKKwl9CisgICAgICAgIGlmICghKG9iaiBpbnN0YW5jZW9mIEtleVZhbHVlKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisJdHJ5IHsKKyAgICAgICAgICAgIEtleVZhbHVlIGt2ID0gKEtleVZhbHVlKSBvYmo7CisgICAgICAgICAgICBpZiAocHVibGljS2V5ID09IG51bGwgKSB7CisgICAgICAgICAgICAgICAgaWYgKGt2LmdldFB1YmxpY0tleSgpICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIXB1YmxpY0tleS5lcXVhbHMoa3YuZ2V0UHVibGljS2V5KCkpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCX0gY2F0Y2ggKEtleUV4Y2VwdGlvbiBrZSkgeworCSAgICAvLyBubyBwcmFjdGljYWwgd2F5IHRvIGRldGVybWluZSBpZiB0aGUga2V5cyBhcmUgZXF1YWwKKwkgICAgcmV0dXJuIGZhbHNlOworCX0KKyAgICAgICAgCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBmaW5hbCBjbGFzcyBSU0EgZXh0ZW5kcyBET01LZXlWYWx1ZSB7CisgICAgICAgIC8vIFJTQUtleVZhbHVlIENyeXB0b0JpbmFyaWVzCisgICAgICAgIHByaXZhdGUgRE9NQ3J5cHRvQmluYXJ5IG1vZHVsdXMsIGV4cG9uZW50OworICAgICAgICBwcml2YXRlIEtleUZhY3RvcnkgcnNha2Y7CisKKyAgICAgICAgUlNBKFB1YmxpY0tleSBrZXkpIHRocm93cyBLZXlFeGNlcHRpb24geworICAgICAgICAgICAgc3VwZXIoa2V5KTsKKwkgICAgUlNBUHVibGljS2V5IHJrZXkgPSAoUlNBUHVibGljS2V5KSBrZXk7CisJICAgIGV4cG9uZW50ID0gbmV3IERPTUNyeXB0b0JpbmFyeShya2V5LmdldFB1YmxpY0V4cG9uZW50KCkpOworCSAgICBtb2R1bHVzID0gbmV3IERPTUNyeXB0b0JpbmFyeShya2V5LmdldE1vZHVsdXMoKSk7CisgICAgICAgIH0KKworICAgICAgICBSU0EoRWxlbWVudCBlbGVtKSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgICAgICBzdXBlcihlbGVtKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgbWFyc2hhbFB1YmxpY0tleShOb2RlIHBhcmVudCwgRG9jdW1lbnQgZG9jLCBTdHJpbmcgZHNQcmVmaXgsIAorICAgICAgICAgICAgRE9NQ3J5cHRvQ29udGV4dCBjb250ZXh0KSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgICAgICBFbGVtZW50IHJzYUVsZW0gPSBET01VdGlscy5jcmVhdGVFbGVtZW50CisJICAgICAgICAoZG9jLCAiUlNBS2V5VmFsdWUiLCBYTUxTaWduYXR1cmUuWE1MTlMsIGRzUHJlZml4KTsKKyAgICAgICAgICAgIEVsZW1lbnQgbW9kdWx1c0VsZW0gPSBET01VdGlscy5jcmVhdGVFbGVtZW50CisJICAgICAgICAoZG9jLCAiTW9kdWx1cyIsIFhNTFNpZ25hdHVyZS5YTUxOUywgZHNQcmVmaXgpOworICAgICAgICAgICAgRWxlbWVudCBleHBvbmVudEVsZW0gPSBET01VdGlscy5jcmVhdGVFbGVtZW50CisJICAgICAgICAoZG9jLCAiRXhwb25lbnQiLCBYTUxTaWduYXR1cmUuWE1MTlMsIGRzUHJlZml4KTsKKwkgICAgbW9kdWx1cy5tYXJzaGFsKG1vZHVsdXNFbGVtLCBkc1ByZWZpeCwgY29udGV4dCk7CisJICAgIGV4cG9uZW50Lm1hcnNoYWwoZXhwb25lbnRFbGVtLCBkc1ByZWZpeCwgY29udGV4dCk7CisgICAgICAgICAgICByc2FFbGVtLmFwcGVuZENoaWxkKG1vZHVsdXNFbGVtKTsKKyAgICAgICAgICAgIHJzYUVsZW0uYXBwZW5kQ2hpbGQoZXhwb25lbnRFbGVtKTsKKyAgICAgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChyc2FFbGVtKTsKKyAgICAgICAgfQorCisgICAgICAgIFB1YmxpY0tleSB1bm1hcnNoYWxLZXlWYWx1ZShFbGVtZW50IGt2dEVsZW0pIAorCSAgICB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisJICAgIGlmIChyc2FrZiA9PSBudWxsKSB7CisJICAgICAgICB0cnkgeworCSAgICAgICAgICAgIHJzYWtmID0gS2V5RmFjdG9yeS5nZXRJbnN0YW5jZSgiUlNBIik7CisJICAgICAgICB9IGNhdGNoIChOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24gZSkgeworCSAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAoInVuYWJsZSB0byBjcmVhdGUgUlNBIEtleUZhY3Rvcnk6ICIgKyBlLmdldE1lc3NhZ2UoKSk7CisJICAgICAgICB9CisJICAgIH0KKwkgICAgRWxlbWVudCBtb2R1bHVzRWxlbSA9IERPTVV0aWxzLmdldEZpcnN0Q2hpbGRFbGVtZW50KGt2dEVsZW0pOworICAgICAgICAgICAgbW9kdWx1cyA9IG5ldyBET01DcnlwdG9CaW5hcnkobW9kdWx1c0VsZW0uZ2V0Rmlyc3RDaGlsZCgpKTsKKwkgICAgRWxlbWVudCBleHBvbmVudEVsZW0gPSBET01VdGlscy5nZXROZXh0U2libGluZ0VsZW1lbnQobW9kdWx1c0VsZW0pOworICAgICAgICAgICAgZXhwb25lbnQgPSBuZXcgRE9NQ3J5cHRvQmluYXJ5KGV4cG9uZW50RWxlbS5nZXRGaXJzdENoaWxkKCkpOworICAgICAgICAgICAgUlNBUHVibGljS2V5U3BlYyBzcGVjID0gbmV3IFJTQVB1YmxpY0tleVNwZWMKKwkgICAgICAgIChtb2R1bHVzLmdldEJpZ051bSgpLCBleHBvbmVudC5nZXRCaWdOdW0oKSk7CisgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVQdWJsaWNLZXkocnNha2YsIHNwZWMpOworICAgICAgICB9CisgICAgfQorCisgICAgc3RhdGljIGZpbmFsIGNsYXNzIERTQSBleHRlbmRzIERPTUtleVZhbHVlIHsKKyAgICAgICAgLy8gRFNBS2V5VmFsdWUgQ3J5cHRvQmluYXJpZXMKKyAgICAgICAgcHJpdmF0ZSBET01DcnlwdG9CaW5hcnkgcCwgcSwgZywgeSwgaiwgc2VlZCwgcGdlbjsKKyAgICAgICAgcHJpdmF0ZSBLZXlGYWN0b3J5IGRzYWtmOworCisgICAgICAgIERTQShQdWJsaWNLZXkga2V5KSB0aHJvd3MgS2V5RXhjZXB0aW9uIHsKKyAgICAgICAgICAgIHN1cGVyKGtleSk7CisJICAgIERTQVB1YmxpY0tleSBka2V5ID0gKERTQVB1YmxpY0tleSkga2V5OworCSAgICBEU0FQYXJhbXMgcGFyYW1zID0gZGtleS5nZXRQYXJhbXMoKTsKKwkgICAgcCA9IG5ldyBET01DcnlwdG9CaW5hcnkocGFyYW1zLmdldFAoKSk7CisJICAgIHEgPSBuZXcgRE9NQ3J5cHRvQmluYXJ5KHBhcmFtcy5nZXRRKCkpOworCSAgICBnID0gbmV3IERPTUNyeXB0b0JpbmFyeShwYXJhbXMuZ2V0RygpKTsKKwkgICAgeSA9IG5ldyBET01DcnlwdG9CaW5hcnkoZGtleS5nZXRZKCkpOworICAgICAgICB9CisKKyAgICAgICAgRFNBKEVsZW1lbnQgZWxlbSkgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworICAgICAgICAgICAgc3VwZXIoZWxlbSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIG1hcnNoYWxQdWJsaWNLZXkoTm9kZSBwYXJlbnQsIERvY3VtZW50IGRvYywgU3RyaW5nIGRzUHJlZml4LCAKKyAgICAgICAgICAgIERPTUNyeXB0b0NvbnRleHQgY29udGV4dCkgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworICAgICAgICAgICAgRWxlbWVudCBkc2FFbGVtID0gRE9NVXRpbHMuY3JlYXRlRWxlbWVudAorCSAgICAgICAgKGRvYywgIkRTQUtleVZhbHVlIiwgWE1MU2lnbmF0dXJlLlhNTE5TLCBkc1ByZWZpeCk7CisgICAgICAgICAgICAvLyBwYXJhbWV0ZXJzIEosIFNlZWQgJiBQZ2VuQ291bnRlciBhcmUgbm90IGluY2x1ZGVkCisgICAgICAgICAgICBFbGVtZW50IHBFbGVtID0gRE9NVXRpbHMuY3JlYXRlRWxlbWVudAorCSAgICAgICAgKGRvYywgIlAiLCBYTUxTaWduYXR1cmUuWE1MTlMsIGRzUHJlZml4KTsKKyAgICAgICAgICAgIEVsZW1lbnQgcUVsZW0gPSBET01VdGlscy5jcmVhdGVFbGVtZW50CisJICAgICAgICAoZG9jLCAiUSIsIFhNTFNpZ25hdHVyZS5YTUxOUywgZHNQcmVmaXgpOworICAgICAgICAgICAgRWxlbWVudCBnRWxlbSA9IERPTVV0aWxzLmNyZWF0ZUVsZW1lbnQKKwkgICAgICAgIChkb2MsICJHIiwgWE1MU2lnbmF0dXJlLlhNTE5TLCBkc1ByZWZpeCk7CisgICAgICAgICAgICBFbGVtZW50IHlFbGVtID0gRE9NVXRpbHMuY3JlYXRlRWxlbWVudAorCSAgICAgICAgKGRvYywgIlkiLCBYTUxTaWduYXR1cmUuWE1MTlMsIGRzUHJlZml4KTsKKyAgICAgICAgICAgIHAubWFyc2hhbChwRWxlbSwgZHNQcmVmaXgsIGNvbnRleHQpOworICAgICAgICAgICAgcS5tYXJzaGFsKHFFbGVtLCBkc1ByZWZpeCwgY29udGV4dCk7CisgICAgICAgICAgICBnLm1hcnNoYWwoZ0VsZW0sIGRzUHJlZml4LCBjb250ZXh0KTsKKyAgICAgICAgICAgIHkubWFyc2hhbCh5RWxlbSwgZHNQcmVmaXgsIGNvbnRleHQpOworICAgICAgICAgICAgZHNhRWxlbS5hcHBlbmRDaGlsZChwRWxlbSk7CisgICAgICAgICAgICBkc2FFbGVtLmFwcGVuZENoaWxkKHFFbGVtKTsKKyAgICAgICAgICAgIGRzYUVsZW0uYXBwZW5kQ2hpbGQoZ0VsZW0pOworICAgICAgICAgICAgZHNhRWxlbS5hcHBlbmRDaGlsZCh5RWxlbSk7CisgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZHNhRWxlbSk7CisgICAgICAgIH0KKworICAgICAgICBQdWJsaWNLZXkgdW5tYXJzaGFsS2V5VmFsdWUoRWxlbWVudCBrdnRFbGVtKSAKKwkgICAgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworCSAgICBpZiAoZHNha2YgPT0gbnVsbCkgeworCSAgICAgICAgdHJ5IHsKKwkgICAgICAgICAgICBkc2FrZiA9IEtleUZhY3RvcnkuZ2V0SW5zdGFuY2UoIkRTQSIpOworCSAgICAgICAgfSBjYXRjaCAoTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIGUpIHsKKwkgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgKCJ1bmFibGUgdG8gY3JlYXRlIERTQSBLZXlGYWN0b3J5OiAiICsgZS5nZXRNZXNzYWdlKCkpOworCSAgICAgICAgfQorCSAgICB9CisJICAgIEVsZW1lbnQgY3VyRWxlbSA9IERPTVV0aWxzLmdldEZpcnN0Q2hpbGRFbGVtZW50KGt2dEVsZW0pOworCSAgICAvLyBjaGVjayBmb3IgUCBhbmQgUQorCSAgICBpZiAoY3VyRWxlbS5nZXRMb2NhbE5hbWUoKS5lcXVhbHMoIlAiKSkgeworCSAgICAgICAgcCA9IG5ldyBET01DcnlwdG9CaW5hcnkoY3VyRWxlbS5nZXRGaXJzdENoaWxkKCkpOworCSAgICAgICAgY3VyRWxlbSA9IERPTVV0aWxzLmdldE5leHRTaWJsaW5nRWxlbWVudChjdXJFbGVtKTsKKwkgICAgICAgIHEgPSBuZXcgRE9NQ3J5cHRvQmluYXJ5KGN1ckVsZW0uZ2V0Rmlyc3RDaGlsZCgpKTsKKwkgICAgICAgIGN1ckVsZW0gPSBET01VdGlscy5nZXROZXh0U2libGluZ0VsZW1lbnQoY3VyRWxlbSk7CisJICAgIH0gCisgICAgICAgICAgICBpZiAoY3VyRWxlbS5nZXRMb2NhbE5hbWUoKS5lcXVhbHMoIkciKSkgeworICAgICAgICAgICAgICAgIGcgPSBuZXcgRE9NQ3J5cHRvQmluYXJ5KGN1ckVsZW0uZ2V0Rmlyc3RDaGlsZCgpKTsKKwkgICAgICAgIGN1ckVsZW0gPSBET01VdGlscy5nZXROZXh0U2libGluZ0VsZW1lbnQoY3VyRWxlbSk7CisJICAgIH0KKyAgICAgICAgICAgIHkgPSBuZXcgRE9NQ3J5cHRvQmluYXJ5KGN1ckVsZW0uZ2V0Rmlyc3RDaGlsZCgpKTsKKyAgICAgICAgICAgIGN1ckVsZW0gPSBET01VdGlscy5nZXROZXh0U2libGluZ0VsZW1lbnQoY3VyRWxlbSk7CisgICAgICAgICAgICBpZiAoY3VyRWxlbSAhPSBudWxsICYmIGN1ckVsZW0uZ2V0TG9jYWxOYW1lKCkuZXF1YWxzKCJKIikpIHsKKwkgICAgICAgIGogPSBuZXcgRE9NQ3J5cHRvQmluYXJ5KGN1ckVsZW0uZ2V0Rmlyc3RDaGlsZCgpKTsKKwkgICAgICAgIGN1ckVsZW0gPSBET01VdGlscy5nZXROZXh0U2libGluZ0VsZW1lbnQoY3VyRWxlbSk7CisJICAgIH0KKwkgICAgaWYgKGN1ckVsZW0gIT0gbnVsbCkgeworCSAgICAgICAgc2VlZCA9IG5ldyBET01DcnlwdG9CaW5hcnkoY3VyRWxlbS5nZXRGaXJzdENoaWxkKCkpOworCSAgICAgICAgY3VyRWxlbSA9IERPTVV0aWxzLmdldE5leHRTaWJsaW5nRWxlbWVudChjdXJFbGVtKTsKKwkgICAgICAgIHBnZW4gPSBuZXcgRE9NQ3J5cHRvQmluYXJ5KGN1ckVsZW0uZ2V0Rmlyc3RDaGlsZCgpKTsKKwkgICAgfQorCSAgICAvL0BAQCBkbyB3ZSBjYXJlIGFib3V0IGosIHBnZW5Db3VudGVyIG9yIHNlZWQ/CisJICAgIERTQVB1YmxpY0tleVNwZWMgc3BlYyA9IG5ldyBEU0FQdWJsaWNLZXlTcGVjCisJICAgICAgICAoeS5nZXRCaWdOdW0oKSwgcC5nZXRCaWdOdW0oKSwgcS5nZXRCaWdOdW0oKSwgZy5nZXRCaWdOdW0oKSk7CisgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVQdWJsaWNLZXkoZHNha2YsIHNwZWMpOworICAgICAgICB9CisgICAgfQorCisgICAgc3RhdGljIGZpbmFsIGNsYXNzIEVDIGV4dGVuZHMgRE9NS2V5VmFsdWUgeworICAgICAgICAvLyBFQ0tleVZhbHVlIENyeXB0b0JpbmFyaWVzCisgICAgICAgIHByaXZhdGUgYnl0ZVtdIGVjUHVibGljS2V5OworICAgICAgICBwcml2YXRlIEtleUZhY3RvcnkgZWNrZjsKKyAgICAgICAgcHJpdmF0ZSBFQ1BhcmFtZXRlclNwZWMgZWNQYXJhbXM7CisKKyAgICAgICAgRUMoUHVibGljS2V5IGtleSkgdGhyb3dzIEtleUV4Y2VwdGlvbiB7CisgICAgICAgICAgICBzdXBlcihrZXkpOworICAgICAgICAgICAgRUNQdWJsaWNLZXkgZWNLZXkgPSAoRUNQdWJsaWNLZXkpIGtleTsKKyAgICAgICAgICAgIEVDUG9pbnQgZWNQb2ludCA9IGVjS2V5LmdldFcoKTsKKyAgICAgICAgICAgIGVjUGFyYW1zID0gZWNLZXkuZ2V0UGFyYW1zKCk7CisgICAgICAgICAgICBlY1B1YmxpY0tleSA9IHN1bi5zZWN1cml0eS5lYy5FQ1BhcmFtZXRlcnMuZW5jb2RlUG9pbnQoCisgICAgICAgICAgICAgICAgZWNQb2ludCwgZWNQYXJhbXMuZ2V0Q3VydmUoKSk7CisgICAgICAgIH0KKworICAgICAgICBFQyhFbGVtZW50IGRtRWxlbSkgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworICAgICAgICAgICAgc3VwZXIoZG1FbGVtKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgbWFyc2hhbFB1YmxpY0tleShOb2RlIHBhcmVudCwgRG9jdW1lbnQgZG9jLCBTdHJpbmcgZHNQcmVmaXgsIAorICAgICAgICAgICAgRE9NQ3J5cHRvQ29udGV4dCBjb250ZXh0KSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgICAgICBTdHJpbmcgcHJlZml4ID0gRE9NVXRpbHMuZ2V0TlNQcmVmaXgoY29udGV4dCwgWE1MRFNJR18xMV9YTUxOUyk7CisgICAgICAgICAgICBFbGVtZW50IGVjS2V5VmFsdWVFbGVtID0gRE9NVXRpbHMuY3JlYXRlRWxlbWVudAorCSAgICAgICAgKGRvYywgIkVDS2V5VmFsdWUiLCBYTUxEU0lHXzExX1hNTE5TLCBwcmVmaXgpOworICAgICAgICAgICAgRWxlbWVudCBuYW1lZEN1cnZlRWxlbSA9IERPTVV0aWxzLmNyZWF0ZUVsZW1lbnQKKwkgICAgICAgIChkb2MsICJOYW1lZEN1cnZlIiwgWE1MRFNJR18xMV9YTUxOUywgcHJlZml4KTsKKyAgICAgICAgICAgIEVsZW1lbnQgcHVibGljS2V5RWxlbSA9IERPTVV0aWxzLmNyZWF0ZUVsZW1lbnQKKwkgICAgICAgIChkb2MsICJQdWJsaWNLZXkiLCBYTUxEU0lHXzExX1hNTE5TLCBwcmVmaXgpOworICAgICAgICAgICAgU3RyaW5nIG9pZCA9IHN1bi5zZWN1cml0eS5lYy5FQ1BhcmFtZXRlcnMuZ2V0Q3VydmVOYW1lKGVjUGFyYW1zKTsKKyAgICAgICAgICAgIERPTVV0aWxzLnNldEF0dHJpYnV0ZShuYW1lZEN1cnZlRWxlbSwgIlVSSSIsICJ1cm46b2lkOiIgKyBvaWQpOworCSAgICBTdHJpbmcgcW5hbWUgPSAocHJlZml4ID09IG51bGwgfHwgcHJlZml4Lmxlbmd0aCgpID09IDApIAorCQkgICAgICAgPyAieG1sbnMiIDogInhtbG5zOiIgKyBwcmVmaXg7CisgICAgICAgICAgICBuYW1lZEN1cnZlRWxlbS5zZXRBdHRyaWJ1dGVOUworICAgICAgICAgICAgICAgICgiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLCBxbmFtZSwgWE1MRFNJR18xMV9YTUxOUyk7CisgICAgICAgICAgICBlY0tleVZhbHVlRWxlbS5hcHBlbmRDaGlsZChuYW1lZEN1cnZlRWxlbSk7CisgICAgICAgICAgICBTdHJpbmcgZW5jb2RlZCA9IEJhc2U2NC5lbmNvZGUoZWNQdWJsaWNLZXkpOworICAgICAgICAgICAgcHVibGljS2V5RWxlbS5hcHBlbmRDaGlsZAorCSAgICAgICAgKERPTVV0aWxzLmdldE93bmVyRG9jdW1lbnQocHVibGljS2V5RWxlbSkuY3JlYXRlVGV4dE5vZGUoZW5jb2RlZCkpOworICAgICAgICAgICAgZWNLZXlWYWx1ZUVsZW0uYXBwZW5kQ2hpbGQocHVibGljS2V5RWxlbSk7CisgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWNLZXlWYWx1ZUVsZW0pOworICAgICAgICB9CisKKyAgICAgICAgUHVibGljS2V5IHVubWFyc2hhbEtleVZhbHVlKEVsZW1lbnQga3Z0RWxlbSkgCisJICAgIHRocm93cyBNYXJzaGFsRXhjZXB0aW9uIHsKKwkgICAgaWYgKGVja2YgPT0gbnVsbCkgeworCSAgICAgICAgdHJ5IHsKKwkgICAgICAgICAgICBlY2tmID0gS2V5RmFjdG9yeS5nZXRJbnN0YW5jZSgiRUMiKTsKKwkgICAgICAgIH0gY2F0Y2ggKE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiBlKSB7CisJICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICgidW5hYmxlIHRvIGNyZWF0ZSBFQyBLZXlGYWN0b3J5OiAiICsgZS5nZXRNZXNzYWdlKCkpOworCSAgICAgICAgfQorCSAgICB9CisgICAgICAgICAgICBFQ1BhcmFtZXRlclNwZWMgZWNQYXJhbXMgPSBudWxsOworCSAgICBFbGVtZW50IGN1ckVsZW0gPSBET01VdGlscy5nZXRGaXJzdENoaWxkRWxlbWVudChrdnRFbGVtKTsKKyAgICAgICAgICAgIGlmIChjdXJFbGVtLmdldExvY2FsTmFtZSgpLmVxdWFscygiRUNQYXJhbWV0ZXJzIikpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgICAgICAgICAgICAgICAgKCJFQ1BhcmFtZXRlcnMgbm90IHN1cHBvcnRlZCIpOworICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJFbGVtLmdldExvY2FsTmFtZSgpLmVxdWFscygiTmFtZWRDdXJ2ZSIpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHVyaSA9IERPTVV0aWxzLmdldEF0dHJpYnV0ZVZhbHVlKGN1ckVsZW0sICJVUkkiKTsKKyAgICAgICAgICAgICAgICAvLyBzdHJpcCBvZmYgInVybjpvaWQiCisgICAgICAgICAgICAgICAgaWYgKHVyaS5zdGFydHNXaXRoKCJ1cm46b2lkOiIpKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBvaWQgPSB1cmkuc3Vic3RyaW5nKDgpOworICAgICAgICAgICAgICAgICAgICBlY1BhcmFtcyA9IHN1bi5zZWN1cml0eS5lYy5OYW1lZEN1cnZlLmdldEVDUGFyYW1ldGVyU3BlYyhvaWQpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBNYXJzaGFsRXhjZXB0aW9uKCJJbnZhbGlkIE5hbWVkQ3VydmUgVVJJIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTWFyc2hhbEV4Y2VwdGlvbigiSW52YWxpZCBFQ0tleVZhbHVlIik7CisgICAgICAgICAgICB9CisJICAgIGN1ckVsZW0gPSBET01VdGlscy5nZXROZXh0U2libGluZ0VsZW1lbnQoY3VyRWxlbSk7CisgICAgICAgICAgICBFQ1BvaW50IGVjUG9pbnQgPSBudWxsOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBlY1BvaW50ID0gc3VuLnNlY3VyaXR5LmVjLkVDUGFyYW1ldGVycy5kZWNvZGVQb2ludCgKKyAgICAgICAgICAgICAgICAgICAgQmFzZTY0LmRlY29kZShjdXJFbGVtKSwgZWNQYXJhbXMuZ2V0Q3VydmUoKSk7CisgICAgICAgICAgICB9IGNhdGNoIChCYXNlNjREZWNvZGluZ0V4Y2VwdGlvbiBiZGUpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTWFyc2hhbEV4Y2VwdGlvbigiSW52YWxpZCBFQyBQdWJsaWNLZXkiLCBiZGUpOworICAgICAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gaW9lKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE1hcnNoYWxFeGNlcHRpb24oIkludmFsaWQgRUMgUHVibGljS2V5IiwgaW9lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEVDUHVibGljS2V5U3BlYyBzcGVjID0gbmV3IEVDUHVibGljS2V5U3BlYyhlY1BvaW50LCBlY1BhcmFtcyk7CisgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVQdWJsaWNLZXkoZWNrZiwgc3BlYyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgY2xhc3MgVW5rbm93biBleHRlbmRzIERPTUtleVZhbHVlIHsKKyAgICAgICAgcHJpdmF0ZSBqYXZheC54bWwuY3J5cHRvLmRvbS5ET01TdHJ1Y3R1cmUgZXh0ZXJuYWxQdWJsaWNLZXk7CisgICAgICAgIFVua25vd24oRWxlbWVudCBlbGVtKSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgICAgICBzdXBlcihlbGVtKTsKKyAgICAgICAgfQorICAgICAgICBQdWJsaWNLZXkgdW5tYXJzaGFsS2V5VmFsdWUoRWxlbWVudCBrdkVsZW0pIHRocm93cyBNYXJzaGFsRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIGV4dGVybmFsUHVibGljS2V5ID0gbmV3IGphdmF4LnhtbC5jcnlwdG8uZG9tLkRPTVN0cnVjdHVyZShrdkVsZW0pOworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgICAgdm9pZCBtYXJzaGFsUHVibGljS2V5KE5vZGUgcGFyZW50LCBEb2N1bWVudCBkb2MsIFN0cmluZyBkc1ByZWZpeCwgCisgICAgICAgICAgICBET01DcnlwdG9Db250ZXh0IGNvbnRleHQpIHRocm93cyBNYXJzaGFsRXhjZXB0aW9uIHsKKwkgICAgcGFyZW50LmFwcGVuZENoaWxkKGV4dGVybmFsUHVibGljS2V5LmdldE5vZGUoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NTWFuaWZlc3QuamF2YSBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01NYW5pZmVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2MmUwYmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NTWFuaWZlc3QuamF2YQpAQCAtMCwwICsxLDEzNCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2Ugb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb207CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kb20uRE9NQ3J5cHRvQ29udGV4dDsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKKworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHJvdmlkZXI7CitpbXBvcnQgamF2YS51dGlsLio7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworCisvKioKKyAqIERPTS1iYXNlZCBpbXBsZW1lbnRhdGlvbiBvZiBNYW5pZmVzdC4KKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBET01NYW5pZmVzdCBleHRlbmRzIERPTVN0cnVjdHVyZSBpbXBsZW1lbnRzIE1hbmlmZXN0IHsKKworICAgIHByaXZhdGUgZmluYWwgTGlzdCByZWZlcmVuY2VzOworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIGlkOworCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIDxjb2RlPkRPTU1hbmlmZXN0PC9jb2RlPiBjb250YWluaW5nIHRoZSBzcGVjaWZpZWQKKyAgICAgKiBsaXN0IG9mIHtAbGluayBSZWZlcmVuY2V9cyBhbmQgb3B0aW9uYWwgaWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcmVmZXJlbmNlcyBhIGxpc3Qgb2Ygb25lIG9yIG1vcmUgPGNvZGU+UmVmZXJlbmNlPC9jb2RlPnMuIFRoZSBsaXN0CisgICAgICogICAgaXMgZGVmZW5zaXZlbHkgY29waWVkIHRvIHByb3RlY3QgYWdhaW5zdCBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbi4KKyAgICAgKiBAcGFyYW0gaWQgdGhlIGlkIChtYXkgYmUgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPnJlZmVyZW5jZXM8L2NvZGU+IGlzCisgICAgICogICAgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiA8Y29kZT5yZWZlcmVuY2VzPC9jb2RlPiBpcyBlbXB0eQorICAgICAqIEB0aHJvd3MgQ2xhc3NDYXN0RXhjZXB0aW9uIGlmIDxjb2RlPnJlZmVyZW5jZXM8L2NvZGU+IGNvbnRhaW5zIGFueQorICAgICAqICAgIGVudHJpZXMgdGhhdCBhcmUgbm90IG9mIHR5cGUge0BsaW5rIFJlZmVyZW5jZX0KKyAgICAgKi8KKyAgICBwdWJsaWMgRE9NTWFuaWZlc3QoTGlzdCByZWZlcmVuY2VzLCBTdHJpbmcgaWQpIHsKKwlpZiAocmVmZXJlbmNlcyA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigicmVmZXJlbmNlcyBjYW5ub3QgYmUgbnVsbCIpOworCX0KKwlMaXN0IHJlZkNvcHkgPSBuZXcgQXJyYXlMaXN0KHJlZmVyZW5jZXMpOworCWlmIChyZWZDb3B5LmlzRW1wdHkoKSkgeworCSAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJsaXN0IG9mIHJlZmVyZW5jZXMgbXVzdCAiICsKKwkgICAgICAgICJjb250YWluIGF0IGxlYXN0IG9uZSBlbnRyeSIpOworCX0KKyAgICAgICAgZm9yIChpbnQgaSA9IDAsIHNpemUgPSByZWZDb3B5LnNpemUoKTsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgaWYgKCEocmVmQ29weS5nZXQoaSkgaW5zdGFuY2VvZiBSZWZlcmVuY2UpKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IENsYXNzQ2FzdEV4Y2VwdGlvbgorICAgICAgICAgICAgICAgICAgICAoInJlZmVyZW5jZXNbIitpKyJdIGlzIG5vdCBhIHZhbGlkIHR5cGUiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCXRoaXMucmVmZXJlbmNlcyA9IENvbGxlY3Rpb25zLnVubW9kaWZpYWJsZUxpc3QocmVmQ29weSk7CisJdGhpcy5pZCA9IGlkOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSA8Y29kZT5ET01NYW5pZmVzdDwvY29kZT4gZnJvbSBhbiBlbGVtZW50LgorICAgICAqCisgICAgICogQHBhcmFtIG1hbkVsZW0gYSBNYW5pZmVzdCBlbGVtZW50CisgICAgICovCisgICAgcHVibGljIERPTU1hbmlmZXN0KEVsZW1lbnQgbWFuRWxlbSwgWE1MQ3J5cHRvQ29udGV4dCBjb250ZXh0LAorCVByb3ZpZGVyIHByb3ZpZGVyKSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgIHRoaXMuaWQgPSBET01VdGlscy5nZXRBdHRyaWJ1dGVWYWx1ZShtYW5FbGVtLCAiSWQiKTsKKyAgICAgICAgRWxlbWVudCByZWZFbGVtID0gRE9NVXRpbHMuZ2V0Rmlyc3RDaGlsZEVsZW1lbnQobWFuRWxlbSk7CisJTGlzdCByZWZzID0gbmV3IEFycmF5TGlzdCgpOworCXdoaWxlIChyZWZFbGVtICE9IG51bGwpIHsKKwkgICAgcmVmcy5hZGQobmV3IERPTVJlZmVyZW5jZShyZWZFbGVtLCBjb250ZXh0LCBwcm92aWRlcikpOworCSAgICByZWZFbGVtID0gRE9NVXRpbHMuZ2V0TmV4dFNpYmxpbmdFbGVtZW50KHJlZkVsZW0pOworCX0KKwl0aGlzLnJlZmVyZW5jZXMgPSBDb2xsZWN0aW9ucy51bm1vZGlmaWFibGVMaXN0KHJlZnMpOworICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0SWQoKSB7CisJcmV0dXJuIGlkOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgTGlzdCBnZXRSZWZlcmVuY2VzKCkgeworICAgICAgICByZXR1cm4gcmVmZXJlbmNlczsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBtYXJzaGFsKE5vZGUgcGFyZW50LCBTdHJpbmcgZHNQcmVmaXgsIERPTUNyeXB0b0NvbnRleHQgY29udGV4dCkKKwl0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgIERvY3VtZW50IG93bmVyRG9jID0gRE9NVXRpbHMuZ2V0T3duZXJEb2N1bWVudChwYXJlbnQpOworCisgICAgICAgIEVsZW1lbnQgbWFuRWxlbSA9IERPTVV0aWxzLmNyZWF0ZUVsZW1lbnQKKyAgICAgICAgICAgIChvd25lckRvYywgIk1hbmlmZXN0IiwgWE1MU2lnbmF0dXJlLlhNTE5TLCBkc1ByZWZpeCk7CisKKyAgICAgICAgRE9NVXRpbHMuc2V0QXR0cmlidXRlSUQobWFuRWxlbSwgIklkIiwgaWQpOworCisJLy8gYWRkIHJlZmVyZW5jZXMKKwlmb3IgKGludCBpID0gMCwgc2l6ZSA9IHJlZmVyZW5jZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgaSsrKSB7CisJICAgIERPTVJlZmVyZW5jZSByZWYgPSAoRE9NUmVmZXJlbmNlKSByZWZlcmVuY2VzLmdldChpKTsKKwkgICAgcmVmLm1hcnNoYWwobWFuRWxlbSwgZHNQcmVmaXgsIGNvbnRleHQpOworCX0KKyAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKG1hbkVsZW0pOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3QgbykgeworCWlmICh0aGlzID09IG8pIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCX0KKworCWlmICghKG8gaW5zdGFuY2VvZiBNYW5pZmVzdCkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwl9CisgICAgICAgIE1hbmlmZXN0IG9tYW4gPSAoTWFuaWZlc3QpIG87CisKKwlib29sZWFuIGlkc0VxdWFsID0gKGlkID09IG51bGwgPyBvbWFuLmdldElkKCkgPT0gbnVsbCA6CisgICAgICAgICAgICBpZC5lcXVhbHMob21hbi5nZXRJZCgpKSk7CisKKwlyZXR1cm4gKGlkc0VxdWFsICYmIHJlZmVyZW5jZXMuZXF1YWxzKG9tYW4uZ2V0UmVmZXJlbmNlcygpKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTVBHUERhdGEuamF2YSBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01QR1BEYXRhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDIzYjExYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01QR1BEYXRhLmphdmEKQEAgLTAsMCArMSwyNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tOworCitpbXBvcnQgamF2YS51dGlsLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZG9tLkRPTUNyeXB0b0NvbnRleHQ7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLmtleWluZm8uUEdQRGF0YTsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLkJhc2U2NERlY29kaW5nRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkJhc2U2NDsKKworLyoqCisgKiBET00tYmFzZWQgaW1wbGVtZW50YXRpb24gb2YgUEdQRGF0YS4KKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBET01QR1BEYXRhIGV4dGVuZHMgRE9NU3RydWN0dXJlIGltcGxlbWVudHMgUEdQRGF0YSB7CisKKyAgICBwcml2YXRlIGZpbmFsIGJ5dGVbXSBrZXlJZDsKKyAgICBwcml2YXRlIGZpbmFsIGJ5dGVbXSBrZXlQYWNrZXQ7CisgICAgcHJpdmF0ZSBmaW5hbCBMaXN0IGV4dGVybmFsRWxlbWVudHM7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+RE9NUEdQRGF0YTwvY29kZT4gY29udGFpbmluZyB0aGUgc3BlY2lmaWVkIGtleSBwYWNrZXQuIAorICAgICAqIGFuZCBvcHRpb25hbCBsaXN0IG9mIGV4dGVybmFsIGVsZW1lbnRzLgorICAgICAqCisgICAgICogQHBhcmFtIGtleVBhY2tldCBhIFBHUCBLZXkgTWF0ZXJpYWwgUGFja2V0IGFzIGRlZmluZWQgaW4gc2VjdGlvbiA1LjUgb2YgCisgICAgICogICAgPGEgaHJlZj0iaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjQ0MC50eHQiLz5SRkMgMjQ0MDwvYT4uIFRoZSAKKyAgICAgKiAgICBhcnJheSBpcyBjbG9uZWQgdG8gcHJldmVudCBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbi4KKyAgICAgKiBAcGFyYW0gb3RoZXIgYSBsaXN0IG9mIHtAbGluayBYTUxTdHJ1Y3R1cmV9cyByZXByZXNlbnRpbmcgZWxlbWVudHMgZnJvbQorICAgICAqICAgIGFuIGV4dGVybmFsIG5hbWVzcGFjZS4gVGhlIGxpc3QgaXMgZGVmZW5zaXZlbHkgY29waWVkIHRvIHByZXZlbnQKKyAgICAgKiAgICBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbi4gTWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+IG9yIGVtcHR5LgorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+a2V5UGFja2V0PC9jb2RlPiBpcyAKKyAgICAgKiAgICA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBrZXkgcGFja2V0IGlzIG5vdCBpbiB0aGUgCisgICAgICogICAgY29ycmVjdCBmb3JtYXQKKyAgICAgKiBAdGhyb3dzIENsYXNzQ2FzdEV4Y2VwdGlvbiBpZiA8Y29kZT5vdGhlcjwvY29kZT4gY29udGFpbnMgYW55CisgICAgICogICAgZW50cmllcyB0aGF0IGFyZSBub3Qgb2YgdHlwZSB7QGxpbmsgWE1MU3RydWN0dXJlfQorICAgICAqLworICAgIHB1YmxpYyBET01QR1BEYXRhKGJ5dGVbXSBrZXlQYWNrZXQsIExpc3Qgb3RoZXIpIHsKKwlpZiAoa2V5UGFja2V0ID09IG51bGwpIHsKKwkgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJrZXlQYWNrZXQgY2Fubm90IGJlIG51bGwiKTsKKwl9CisJaWYgKG90aGVyID09IG51bGwgfHwgb3RoZXIuaXNFbXB0eSgpKSB7CisJICAgIHRoaXMuZXh0ZXJuYWxFbGVtZW50cyA9IENvbGxlY3Rpb25zLkVNUFRZX0xJU1Q7CisJfSBlbHNlIHsKKyAgICAgICAgICAgIExpc3Qgb3RoZXJDb3B5ID0gbmV3IEFycmF5TGlzdChvdGhlcik7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMCwgc2l6ZSA9IG90aGVyQ29weS5zaXplKCk7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoIShvdGhlckNvcHkuZ2V0KGkpIGluc3RhbmNlb2YgWE1MU3RydWN0dXJlKSkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ2xhc3NDYXN0RXhjZXB0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAoIm90aGVyWyIraSsiXSBpcyBub3QgYSB2YWxpZCBQR1BEYXRhIHR5cGUiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLmV4dGVybmFsRWxlbWVudHMgPSBDb2xsZWN0aW9ucy51bm1vZGlmaWFibGVMaXN0KG90aGVyQ29weSk7CisJfQorCXRoaXMua2V5UGFja2V0ID0gKGJ5dGUgW10pIGtleVBhY2tldC5jbG9uZSgpOworCWNoZWNrS2V5UGFja2V0KGtleVBhY2tldCk7CisJdGhpcy5rZXlJZCA9IG51bGw7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIDxjb2RlPkRPTVBHUERhdGE8L2NvZGU+IGNvbnRhaW5pbmcgdGhlIHNwZWNpZmllZCBrZXkgaWQgYW5kCisgICAgICogb3B0aW9uYWwga2V5IHBhY2tldCBhbmQgbGlzdCBvZiBleHRlcm5hbCBlbGVtZW50cy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBrZXlJZCBhIFBHUCBwdWJsaWMga2V5IGlkIGFzIGRlZmluZWQgaW4gc2VjdGlvbiAxMS4yIG9mIAorICAgICAqICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzI0NDAudHh0Ii8+UkZDIDI0NDA8L2E+LiBUaGUgCisgICAgICogICAgYXJyYXkgaXMgY2xvbmVkIHRvIHByZXZlbnQgc3Vic2VxdWVudCBtb2RpZmljYXRpb24uCisgICAgICogQHBhcmFtIGtleVBhY2tldCBhIFBHUCBLZXkgTWF0ZXJpYWwgUGFja2V0IGFzIGRlZmluZWQgaW4gc2VjdGlvbiA1LjUgb2YgCisgICAgICogICAgPGEgaHJlZj0iaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjQ0MC50eHQiLz5SRkMgMjQ0MDwvYT4gKG1heQorICAgICAqICAgIGJlIDxjb2RlPm51bGw8L2NvZGU+KS4gVGhlIGFycmF5IGlzIGNsb25lZCB0byBwcmV2ZW50IHN1YnNlcXVlbnQgCisgICAgICogICAgbW9kaWZpY2F0aW9uLgorICAgICAqIEBwYXJhbSBvdGhlciBhIGxpc3Qgb2Yge0BsaW5rIFhNTFN0cnVjdHVyZX1zIHJlcHJlc2VudGluZyBlbGVtZW50cyBmcm9tCisgICAgICogICAgYW4gZXh0ZXJuYWwgbmFtZXNwYWNlLiBUaGUgbGlzdCBpcyBkZWZlbnNpdmVseSBjb3BpZWQgdG8gcHJldmVudAorICAgICAqICAgIHN1YnNlcXVlbnQgbW9kaWZpY2F0aW9uLiBNYXkgYmUgPGNvZGU+bnVsbDwvY29kZT4gb3IgZW1wdHkuCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5rZXlJZDwvY29kZT4gaXMgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUga2V5IGlkIG9yIHBhY2tldCBpcyBub3QgaW4gdGhlIAorICAgICAqICAgIGNvcnJlY3QgZm9ybWF0CisgICAgICogQHRocm93cyBDbGFzc0Nhc3RFeGNlcHRpb24gaWYgPGNvZGU+b3RoZXI8L2NvZGU+IGNvbnRhaW5zIGFueQorICAgICAqICAgIGVudHJpZXMgdGhhdCBhcmUgbm90IG9mIHR5cGUge0BsaW5rIFhNTFN0cnVjdHVyZX0KKyAgICAgKi8KKyAgICBwdWJsaWMgRE9NUEdQRGF0YShieXRlW10ga2V5SWQsIGJ5dGVbXSBrZXlQYWNrZXQsIExpc3Qgb3RoZXIpIHsKKwlpZiAoa2V5SWQgPT0gbnVsbCkgeworCSAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oImtleUlkIGNhbm5vdCBiZSBudWxsIik7CisJfQorCS8vIGtleSBpZHMgbXVzdCBiZSA4IGJ5dGVzCisJaWYgKGtleUlkLmxlbmd0aCAhPSA4KSB7CisJICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImtleUlkIG11c3QgYmUgOCBieXRlcyBsb25nIik7CisJfQorCWlmIChvdGhlciA9PSBudWxsIHx8IG90aGVyLmlzRW1wdHkoKSkgeworCSAgICB0aGlzLmV4dGVybmFsRWxlbWVudHMgPSBDb2xsZWN0aW9ucy5FTVBUWV9MSVNUOworCX0gZWxzZSB7CisgICAgICAgICAgICBMaXN0IG90aGVyQ29weSA9IG5ldyBBcnJheUxpc3Qob3RoZXIpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDAsIHNpemUgPSBvdGhlckNvcHkuc2l6ZSgpOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKCEob3RoZXJDb3B5LmdldChpKSBpbnN0YW5jZW9mIFhNTFN0cnVjdHVyZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IENsYXNzQ2FzdEV4Y2VwdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgKCJvdGhlclsiK2krIl0gaXMgbm90IGEgdmFsaWQgUEdQRGF0YSB0eXBlIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5leHRlcm5hbEVsZW1lbnRzID0gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlTGlzdChvdGhlckNvcHkpOworCX0KKwl0aGlzLmtleUlkID0gKGJ5dGUgW10pIGtleUlkLmNsb25lKCk7CisJdGhpcy5rZXlQYWNrZXQgPSBrZXlQYWNrZXQgPT0gbnVsbCA/IG51bGwgOiAoYnl0ZSBbXSkga2V5UGFja2V0LmNsb25lKCk7CisJaWYgKGtleVBhY2tldCAhPSBudWxsKSB7CisJICAgIGNoZWNrS2V5UGFja2V0KGtleVBhY2tldCk7CisJfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSA8Y29kZT5ET01QR1BEYXRhPC9jb2RlPiBmcm9tIGFuIGVsZW1lbnQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcGRFbGVtIGEgUEdQRGF0YSBlbGVtZW50CisgICAgICovCisgICAgcHVibGljIERPTVBHUERhdGEoRWxlbWVudCBwZEVsZW0pIHRocm93cyBNYXJzaGFsRXhjZXB0aW9uIHsKKyAgICAgICAgLy8gZ2V0IGFsbCBjaGlsZHJlbiBub2RlcworCWJ5dGVbXSBrZXlJZCA9IG51bGw7CisJYnl0ZVtdIGtleVBhY2tldCA9IG51bGw7CisgICAgICAgIE5vZGVMaXN0IG5sID0gcGRFbGVtLmdldENoaWxkTm9kZXMoKTsKKwlpbnQgbGVuZ3RoID0gbmwuZ2V0TGVuZ3RoKCk7CisJTGlzdCBvdGhlciA9IG5ldyBBcnJheUxpc3QobGVuZ3RoKTsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBsZW5ndGg7IHgrKykgeworICAgICAgICAgICAgTm9kZSBuID0gbmwuaXRlbSh4KTsKKyAgICAgICAgICAgIGlmIChuLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5FTEVNRU5UX05PREUpIHsKKyAgICAgICAgICAgICAgICBFbGVtZW50IGNoaWxkRWxlbSA9IChFbGVtZW50KSBuOworCQlTdHJpbmcgbG9jYWxOYW1lID0gY2hpbGRFbGVtLmdldExvY2FsTmFtZSgpOworCQl0cnkgeworICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxOYW1lLmVxdWFscygiUEdQS2V5SUQiKSkgeworICAgICAgICAgICAgICAgICAgICAgICAga2V5SWQgPSBCYXNlNjQuZGVjb2RlKGNoaWxkRWxlbSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobG9jYWxOYW1lLmVxdWFscygiUEdQS2V5UGFja2V0IikpeworICAgICAgICAgICAgICAgICAgICAgICAga2V5UGFja2V0ID0gQmFzZTY0LmRlY29kZShjaGlsZEVsZW0pOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworCQkgICAgICAgIG90aGVyLmFkZAorCQkJICAgIChuZXcgamF2YXgueG1sLmNyeXB0by5kb20uRE9NU3RydWN0dXJlKGNoaWxkRWxlbSkpOworICAgICAgICAgICAgICAgICAgICB9CisJIAl9IGNhdGNoIChCYXNlNjREZWNvZGluZ0V4Y2VwdGlvbiBiZGUpIHsKKwkJICAgIHRocm93IG5ldyBNYXJzaGFsRXhjZXB0aW9uKGJkZSk7CisJCX0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCXRoaXMua2V5SWQgPSBrZXlJZDsKKwl0aGlzLmtleVBhY2tldCA9IGtleVBhY2tldDsKKwl0aGlzLmV4dGVybmFsRWxlbWVudHMgPSBDb2xsZWN0aW9ucy51bm1vZGlmaWFibGVMaXN0KG90aGVyKTsKKyAgICB9CisKKyAgICBwdWJsaWMgYnl0ZVtdIGdldEtleUlkKCkgeworCXJldHVybiAoa2V5SWQgPT0gbnVsbCA/IG51bGwgOiAoYnl0ZSBbXSkga2V5SWQuY2xvbmUoKSk7CisgICAgfQorCisgICAgcHVibGljIGJ5dGVbXSBnZXRLZXlQYWNrZXQoKSB7CisJcmV0dXJuIChrZXlQYWNrZXQgPT0gbnVsbCA/IG51bGwgOiAoYnl0ZSBbXSkga2V5UGFja2V0LmNsb25lKCkpOworICAgIH0KKworICAgIHB1YmxpYyBMaXN0IGdldEV4dGVybmFsRWxlbWVudHMoKSB7CisgICAgICAgIHJldHVybiBleHRlcm5hbEVsZW1lbnRzOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG1hcnNoYWwoTm9kZSBwYXJlbnQsIFN0cmluZyBkc1ByZWZpeCwgRE9NQ3J5cHRvQ29udGV4dCBjb250ZXh0KQorCXRocm93cyBNYXJzaGFsRXhjZXB0aW9uIHsKKyAgICAgICAgRG9jdW1lbnQgb3duZXJEb2MgPSBET01VdGlscy5nZXRPd25lckRvY3VtZW50KHBhcmVudCk7CisKKyAgICAgICAgRWxlbWVudCBwZEVsZW0gPSBET01VdGlscy5jcmVhdGVFbGVtZW50CisgICAgICAgICAgICAob3duZXJEb2MsICJQR1BEYXRhIiwgWE1MU2lnbmF0dXJlLlhNTE5TLCBkc1ByZWZpeCk7CisKKyAgICAgICAgLy8gY3JlYXRlIGFuZCBhcHBlbmQgUEdQS2V5SUQgZWxlbWVudAorICAgICAgICBpZiAoa2V5SWQgIT0gbnVsbCkgeworICAgICAgICAgICAgRWxlbWVudCBrZXlJZEVsZW0gPSBET01VdGlscy5jcmVhdGVFbGVtZW50CisJCShvd25lckRvYywgIlBHUEtleUlEIiwgWE1MU2lnbmF0dXJlLlhNTE5TLCBkc1ByZWZpeCk7CisgICAgICAgICAgICBrZXlJZEVsZW0uYXBwZW5kQ2hpbGQKKwkJKG93bmVyRG9jLmNyZWF0ZVRleHROb2RlKEJhc2U2NC5lbmNvZGUoa2V5SWQpKSk7CisgICAgICAgICAgICBwZEVsZW0uYXBwZW5kQ2hpbGQoa2V5SWRFbGVtKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGNyZWF0ZSBhbmQgYXBwZW5kIFBHUEtleVBhY2tldCBlbGVtZW50CisgICAgICAgIGlmIChrZXlQYWNrZXQgIT0gbnVsbCkgeworICAgICAgICAgICAgRWxlbWVudCBrZXlQa3RFbGVtID0gRE9NVXRpbHMuY3JlYXRlRWxlbWVudAorCQkob3duZXJEb2MsICJQR1BLZXlQYWNrZXQiLCBYTUxTaWduYXR1cmUuWE1MTlMsIGRzUHJlZml4KTsKKyAgICAgICAgICAgIGtleVBrdEVsZW0uYXBwZW5kQ2hpbGQKKwkJKG93bmVyRG9jLmNyZWF0ZVRleHROb2RlKEJhc2U2NC5lbmNvZGUoa2V5UGFja2V0KSkpOworICAgICAgICAgICAgcGRFbGVtLmFwcGVuZENoaWxkKGtleVBrdEVsZW0pOworICAgICAgICB9CisKKyAgICAgICAgLy8gY3JlYXRlIGFuZCBhcHBlbmQgYW55IGVsZW1lbnRzCisJZm9yIChpbnQgaSA9IDAsIHNpemUgPSBleHRlcm5hbEVsZW1lbnRzLnNpemUoKTsgaSA8IHNpemU7IGkrKykgeworCSAgICBET01VdGlscy5hcHBlbmRDaGlsZChwZEVsZW0sICgoamF2YXgueG1sLmNyeXB0by5kb20uRE9NU3RydWN0dXJlKSAKKwkJZXh0ZXJuYWxFbGVtZW50cy5nZXQoaSkpLmdldE5vZGUoKSk7CisgICAgICAgIH0KKworICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQocGRFbGVtKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBXZSBhc3N1bWUgcGFja2V0cyB1c2UgdGhlIG5ldyBmb3JtYXQgcGFja2V0IHN5bnRheCwgYXMgc3BlY2lmaWVkIGluCisgICAgICogc2VjdGlvbiA0IG9mIFJGQyAyNDQwLgorICAgICAqCisgICAgICogVGhpcyBtZXRob2Qgb25seSBjaGVja3MgaWYgdGhlIHBhY2tldCBjb250YWlucyBhIHZhbGlkIHRhZy4gVGhlCisgICAgICogY29udGVudHMgb2YgdGhlIHBhY2tldCBzaG91bGQgYmUgY2hlY2tlZCBieSB0aGUgYXBwbGljYXRpb24uIAorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBjaGVja0tleVBhY2tldChieXRlW10ga2V5UGFja2V0KSB7CisJLy8gbGVuZ3RoIG11c3QgYmUgYXQgbGVhc3QgMyAob25lIGJ5dGUgZm9yIHRhZywgb25lIGJ5dGUgZm9yIGxlbmd0aCwKKyAgICAgICAgLy8gYW5kIG1pbmltYWxseSBvbmUgYnl0ZSBvZiBjb250ZW50CisJaWYgKGtleVBhY2tldC5sZW5ndGggPCAzKSB7CisJICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImtleXBhY2tldCBtdXN0IGJlIGF0IGxlYXN0ICIgKworCQkiMyBieXRlcyBsb25nIik7CisJfQorCisJaW50IHRhZyA9IGtleVBhY2tldFswXTsKKwkvLyBmaXJzdCBiaXQgbXVzdCBiZSBzZXQKKwlpZiAoKHRhZyAmIDEyOCkgIT0gMTI4KSB7CisJICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImtleXBhY2tldCB0YWcgaXMgaW52YWxpZDogIiArCisJCSJiaXQgNyBpcyBub3Qgc2V0Iik7CisJfQorCS8vIG1ha2Ugc3VyZSB1c2luZyBuZXcgZm9ybWF0CisJaWYgKCh0YWcgJiA2NCkgIT0gNjQpIHsKKwkgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigib2xkIGtleXBhY2tldCB0YWcgZm9ybWF0IGlzICIgKworCQkidW5zdXBwb3J0ZWQiKTsKKwl9CisKKwkvLyB0YWcgdmFsdWUgbXVzdCBiZSA2LCAxNCwgNSBvciA3CisJaWYgKCgodGFnICYgNikgIT0gNikgJiYgKCh0YWcgJiAxNCkgIT0gMTQpICYmIAorCSAgICAoKHRhZyAmIDUpICE9IDUpICYmICgodGFnICYgNykgIT0gNykpIHsKKwkgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigia2V5cGFja2V0IHRhZyBpcyBpbnZhbGlkOiAiICsKKwkJIm11c3QgYmUgNiwgMTQsIDUsIG9yIDciKTsKKwl9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTVJlZmVyZW5jZS5qYXZhIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTVJlZmVyZW5jZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3MGM0ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NUmVmZXJlbmNlLmphdmEKQEAgLTAsMCArMSw1NjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogUG9ydGlvbnMgY29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbTsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRvbS5ET01DcnlwdG9Db250ZXh0OworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZG9tLkRPTVVSSVJlZmVyZW5jZTsKKworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLm5ldC5VUkk7CitpbXBvcnQgamF2YS5uZXQuVVJJU3ludGF4RXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuKjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5MZXZlbDsKK2ltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7CitpbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CisKK2ltcG9ydCBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLkRpZ2VzdGVyT3V0cHV0U3RyZWFtOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmV4Y2VwdGlvbnMuQmFzZTY0RGVjb2RpbmdFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZUlucHV0OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkJhc2U2NDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5VbnN5bmNCdWZmZXJlZE91dHB1dFN0cmVhbTsKKworLyoqCisgKiBET00tYmFzZWQgaW1wbGVtZW50YXRpb24gb2YgUmVmZXJlbmNlLgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgSm95Y2UgTGV1bmcKKyAqLworcHVibGljIGZpbmFsIGNsYXNzIERPTVJlZmVyZW5jZSBleHRlbmRzIERPTVN0cnVjdHVyZSAKKyAgICBpbXBsZW1lbnRzIFJlZmVyZW5jZSwgRE9NVVJJUmVmZXJlbmNlIHsKKworICAgLyoqCisgICAgKiBMb29rIHVwIHVzZUMxNE4xMSBzeXN0ZW0gcHJvcGVydHkuIElmIHRydWUsIGFuIGV4cGxpY2l0IEMxNE4xMSB0cmFuc2Zvcm0KKyAgICAqIHdpbGwgYmUgYWRkZWQgaWYgbmVjZXNzYXJ5IHdoZW4gZ2VuZXJhdGluZyB0aGUgc2lnbmF0dXJlLiBTZWUgc2VjdGlvbgorICAgICogMy4xLjEgb2YgaHR0cDovL3d3dy53My5vcmcvMjAwNy94bWxzZWMvRHJhZnRzL3htbGRzaWctY29yZS8gZm9yIG1vcmUgaW5mby4KKyAgICAqCisgICAgKiBJZiB0cnVlLCBvdmVycmlkZXMgdGhlIHNhbWUgcHJvcGVydHkgaWYgc2V0IGluIHRoZSBYTUxTaWduQ29udGV4dC4KKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gdXNlQzE0TjExID0gKChCb29sZWFuKQorICAgICAgICBBY2Nlc3NDb250cm9sbGVyLmRvUHJpdmlsZWdlZChuZXcgUHJpdmlsZWdlZEFjdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyBPYmplY3QgcnVuKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBCb29sZWFuLnZhbHVlT2YoQm9vbGVhbi5nZXRCb29sZWFuCisgICAgICAgICAgICAgICAgICAgICgiY29tLnN1bi5vcmcuYXBhY2hlLnhtbC5pbnRlcm5hbC5zZWN1cml0eS51c2VDMTROMTEiKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pKS5ib29sZWFuVmFsdWUoKTsKKworICAgIHByaXZhdGUgc3RhdGljIExvZ2dlciBsb2cgPSBMb2dnZXIuZ2V0TG9nZ2VyKCJvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbSIpOworCisgICAgcHJpdmF0ZSBmaW5hbCBEaWdlc3RNZXRob2QgZGlnZXN0TWV0aG9kOworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIGlkOworICAgIHByaXZhdGUgZmluYWwgTGlzdCB0cmFuc2Zvcm1zOworICAgIHByaXZhdGUgTGlzdCBhbGxUcmFuc2Zvcm1zOworICAgIHByaXZhdGUgZmluYWwgRGF0YSBhcHBsaWVkVHJhbnNmb3JtRGF0YTsKKyAgICBwcml2YXRlIEF0dHIgaGVyZTsKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyB1cmk7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgdHlwZTsKKyAgICBwcml2YXRlIGJ5dGVbXSBkaWdlc3RWYWx1ZTsKKyAgICBwcml2YXRlIGJ5dGVbXSBjYWxjRGlnZXN0VmFsdWU7CisgICAgcHJpdmF0ZSBFbGVtZW50IHJlZkVsZW07CisgICAgcHJpdmF0ZSBib29sZWFuIGRpZ2VzdGVkID0gZmFsc2U7CisgICAgcHJpdmF0ZSBib29sZWFuIHZhbGlkYXRlZCA9IGZhbHNlOworICAgIHByaXZhdGUgYm9vbGVhbiB2YWxpZGF0aW9uU3RhdHVzOworICAgIHByaXZhdGUgRGF0YSBkZXJlZkRhdGE7CisgICAgcHJpdmF0ZSBJbnB1dFN0cmVhbSBkaXM7CisgICAgcHJpdmF0ZSBNZXNzYWdlRGlnZXN0IG1kOworICAgIHByaXZhdGUgUHJvdmlkZXIgcHJvdmlkZXI7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+UmVmZXJlbmNlPC9jb2RlPiBmcm9tIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVycy4KKyAgICAgKgorICAgICAqIEBwYXJhbSB1cmkgdGhlIFVSSSAobWF5IGJlIG51bGwpCisgICAgICogQHBhcmFtIHR5cGUgdGhlIHR5cGUgKG1heSBiZSBudWxsKQorICAgICAqIEBwYXJhbSBkbSB0aGUgZGlnZXN0IG1ldGhvZAorICAgICAqIEBwYXJhbSB0cmFuc2Zvcm1zIGEgbGlzdCBvZiB7QGxpbmsgVHJhbnNmb3JtfXMuIFRoZSBsaXN0CisgICAgICogICAgaXMgZGVmZW5zaXZlbHkgY29waWVkIHRvIHByb3RlY3QgYWdhaW5zdCBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbi4KKyAgICAgKiAgICBNYXkgYmUgPGNvZGU+bnVsbDwvY29kZT4gb3IgZW1wdHkuCisgICAgICogQHBhcmFtIGlkIHRoZSByZWZlcmVuY2UgSUQgKG1heSBiZSA8Y29kZT5udWxsPC9jb2RlPikKKyAgICAgKiBAcmV0dXJuIGEgPGNvZGU+UmVmZXJlbmNlPC9jb2RlPgorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+ZG08L2NvZGU+IGlzIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogQHRocm93cyBDbGFzc0Nhc3RFeGNlcHRpb24gaWYgYW55IG9mIHRoZSA8Y29kZT50cmFuc2Zvcm1zPC9jb2RlPiBhcmUKKyAgICAgKiAgICBub3Qgb2YgdHlwZSA8Y29kZT5UcmFuc2Zvcm08L2NvZGU+CisgICAgICovCisgICAgcHVibGljIERPTVJlZmVyZW5jZShTdHJpbmcgdXJpLCBTdHJpbmcgdHlwZSwgRGlnZXN0TWV0aG9kIGRtLCAKKwlMaXN0IHRyYW5zZm9ybXMsIFN0cmluZyBpZCwgUHJvdmlkZXIgcHJvdmlkZXIpIHsKKwl0aGlzKHVyaSwgdHlwZSwgZG0sIG51bGwsIG51bGwsIHRyYW5zZm9ybXMsIGlkLCBudWxsLCBwcm92aWRlcik7CisgICAgfQorCisgICAgcHVibGljIERPTVJlZmVyZW5jZShTdHJpbmcgdXJpLCBTdHJpbmcgdHlwZSwgRGlnZXN0TWV0aG9kIGRtLCAKKwlMaXN0IGFwcGxpZWRUcmFuc2Zvcm1zLCBEYXRhIHJlc3VsdCwgTGlzdCB0cmFuc2Zvcm1zLCBTdHJpbmcgaWQsCisJUHJvdmlkZXIgcHJvdmlkZXIpIHsKKwl0aGlzKHVyaSwgdHlwZSwgZG0sIGFwcGxpZWRUcmFuc2Zvcm1zLCAKKwkgICAgIHJlc3VsdCwgdHJhbnNmb3JtcywgaWQsIG51bGwsIHByb3ZpZGVyKTsKKyAgICB9CisKKyAgICBwdWJsaWMgRE9NUmVmZXJlbmNlKFN0cmluZyB1cmksIFN0cmluZyB0eXBlLCBEaWdlc3RNZXRob2QgZG0sIAorCUxpc3QgYXBwbGllZFRyYW5zZm9ybXMsIERhdGEgcmVzdWx0LCBMaXN0IHRyYW5zZm9ybXMsIFN0cmluZyBpZCwgCisJYnl0ZVtdIGRpZ2VzdFZhbHVlLCBQcm92aWRlciBwcm92aWRlcikgeworCWlmIChkbSA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigiRGlnZXN0TWV0aG9kIG11c3QgYmUgbm9uLW51bGwiKTsKKwl9CisJdGhpcy5hbGxUcmFuc2Zvcm1zID0gbmV3IEFycmF5TGlzdCgpOworICAgICAgICBpZiAoYXBwbGllZFRyYW5zZm9ybXMgIT0gbnVsbCkgeworICAgICAgICAgICAgTGlzdCB0cmFuc2Zvcm1zQ29weSA9IG5ldyBBcnJheUxpc3QoYXBwbGllZFRyYW5zZm9ybXMpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDAsIHNpemUgPSB0cmFuc2Zvcm1zQ29weS5zaXplKCk7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoISh0cmFuc2Zvcm1zQ29weS5nZXQoaSkgaW5zdGFuY2VvZiBUcmFuc2Zvcm0pKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBDbGFzc0Nhc3RFeGNlcHRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICgiYXBwbGllZFRyYW5zZm9ybXNbIitpKyJdIGlzIG5vdCBhIHZhbGlkIHR5cGUiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLmFsbFRyYW5zZm9ybXMgPSB0cmFuc2Zvcm1zQ29weTsKKyAgICAgICAgfQorICAgICAgICBpZiAodHJhbnNmb3JtcyA9PSBudWxsKSB7CisJICAgIHRoaXMudHJhbnNmb3JtcyA9IENvbGxlY3Rpb25zLkVNUFRZX0xJU1Q7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBMaXN0IHRyYW5zZm9ybXNDb3B5ID0gbmV3IEFycmF5TGlzdCh0cmFuc2Zvcm1zKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwLCBzaXplID0gdHJhbnNmb3Jtc0NvcHkuc2l6ZSgpOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKCEodHJhbnNmb3Jtc0NvcHkuZ2V0KGkpIGluc3RhbmNlb2YgVHJhbnNmb3JtKSkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ2xhc3NDYXN0RXhjZXB0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAoInRyYW5zZm9ybXNbIitpKyJdIGlzIG5vdCBhIHZhbGlkIHR5cGUiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisJICAgIHRoaXMudHJhbnNmb3JtcyA9IHRyYW5zZm9ybXNDb3B5OworCSAgICB0aGlzLmFsbFRyYW5zZm9ybXMuYWRkQWxsKHRyYW5zZm9ybXNDb3B5KTsKKyAgICAgICAgfQorCXRoaXMuZGlnZXN0TWV0aG9kID0gZG07CisJdGhpcy51cmkgPSB1cmk7CisgICAgICAgIGlmICgodXJpICE9IG51bGwpICYmICghdXJpLmVxdWFscygiIikpKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIG5ldyBVUkkodXJpKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFVSSVN5bnRheEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwl0aGlzLnR5cGUgPSB0eXBlOworCXRoaXMuaWQgPSBpZDsKKwlpZiAoZGlnZXN0VmFsdWUgIT0gbnVsbCkgeworCSAgICB0aGlzLmRpZ2VzdFZhbHVlID0gKGJ5dGVbXSkgZGlnZXN0VmFsdWUuY2xvbmUoKTsKKwkgICAgdGhpcy5kaWdlc3RlZCA9IHRydWU7CisJfQorCXRoaXMuYXBwbGllZFRyYW5zZm9ybURhdGEgPSByZXN1bHQ7CisJdGhpcy5wcm92aWRlciA9IHByb3ZpZGVyOworICAgIH0KKyAKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+RE9NUmVmZXJlbmNlPC9jb2RlPiBmcm9tIGFuIGVsZW1lbnQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcmVmRWxlbSBhIFJlZmVyZW5jZSBlbGVtZW50CisgICAgICovCisgICAgcHVibGljIERPTVJlZmVyZW5jZShFbGVtZW50IHJlZkVsZW0sIFhNTENyeXB0b0NvbnRleHQgY29udGV4dCwgCisJUHJvdmlkZXIgcHJvdmlkZXIpIHRocm93cyBNYXJzaGFsRXhjZXB0aW9uIHsKKyAgICAgICAgLy8gdW5tYXJzaGFsIFRyYW5zZm9ybXMsIGlmIHNwZWNpZmllZAorICAgICAgICBFbGVtZW50IG5leHRTaWJsaW5nID0gRE9NVXRpbHMuZ2V0Rmlyc3RDaGlsZEVsZW1lbnQocmVmRWxlbSk7CisgICAgICAgIExpc3QgdHJhbnNmb3JtcyA9IG5ldyBBcnJheUxpc3QoNSk7CisgICAgICAgIGlmIChuZXh0U2libGluZy5nZXRMb2NhbE5hbWUoKS5lcXVhbHMoIlRyYW5zZm9ybXMiKSkgeworCSAgICBFbGVtZW50IHRyYW5zZm9ybUVsZW0gPSBET01VdGlscy5nZXRGaXJzdENoaWxkRWxlbWVudChuZXh0U2libGluZyk7CisJICAgIHdoaWxlICh0cmFuc2Zvcm1FbGVtICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0cmFuc2Zvcm1zLmFkZAorCQkgICAgKG5ldyBET01UcmFuc2Zvcm0odHJhbnNmb3JtRWxlbSwgY29udGV4dCwgcHJvdmlkZXIpKTsKKwkgICAgICAgIHRyYW5zZm9ybUVsZW0gPSBET01VdGlscy5nZXROZXh0U2libGluZ0VsZW1lbnQodHJhbnNmb3JtRWxlbSk7CisJICAgIH0KKyAgICAgICAgICAgIG5leHRTaWJsaW5nID0gRE9NVXRpbHMuZ2V0TmV4dFNpYmxpbmdFbGVtZW50KG5leHRTaWJsaW5nKTsKKwl9CisKKyAgICAgICAgLy8gdW5tYXJzaGFsIERpZ2VzdE1ldGhvZAorICAgICAgICBFbGVtZW50IGRtRWxlbSA9IG5leHRTaWJsaW5nOworICAgICAgICB0aGlzLmRpZ2VzdE1ldGhvZCA9IERPTURpZ2VzdE1ldGhvZC51bm1hcnNoYWwoZG1FbGVtKTsKKworICAgICAgICAvLyB1bm1hcnNoYWwgRGlnZXN0VmFsdWUKKwl0cnkgeworCSAgICBFbGVtZW50IGR2RWxlbSA9IERPTVV0aWxzLmdldE5leHRTaWJsaW5nRWxlbWVudChkbUVsZW0pOworCSAgICB0aGlzLmRpZ2VzdFZhbHVlID0gQmFzZTY0LmRlY29kZShkdkVsZW0pOworCX0gY2F0Y2ggKEJhc2U2NERlY29kaW5nRXhjZXB0aW9uIGJkZSkgeworCSAgICB0aHJvdyBuZXcgTWFyc2hhbEV4Y2VwdGlvbihiZGUpOworCX0KKworCS8vIHVubWFyc2hhbCBhdHRyaWJ1dGVzCisgICAgICAgIHRoaXMudXJpID0gRE9NVXRpbHMuZ2V0QXR0cmlidXRlVmFsdWUocmVmRWxlbSwgIlVSSSIpOworICAgICAgICB0aGlzLmlkID0gRE9NVXRpbHMuZ2V0QXR0cmlidXRlVmFsdWUocmVmRWxlbSwgIklkIik7CisKKyAgICAgICAgdGhpcy50eXBlID0gRE9NVXRpbHMuZ2V0QXR0cmlidXRlVmFsdWUocmVmRWxlbSwgIlR5cGUiKTsKKwl0aGlzLmhlcmUgPSByZWZFbGVtLmdldEF0dHJpYnV0ZU5vZGVOUyhudWxsLCAiVVJJIik7CisJdGhpcy5yZWZFbGVtID0gcmVmRWxlbTsKKwl0aGlzLnRyYW5zZm9ybXMgPSB0cmFuc2Zvcm1zOworCXRoaXMuYWxsVHJhbnNmb3JtcyA9IHRyYW5zZm9ybXM7CisJdGhpcy5hcHBsaWVkVHJhbnNmb3JtRGF0YSA9IG51bGw7CisJdGhpcy5wcm92aWRlciA9IHByb3ZpZGVyOworICAgIH0KKworICAgIHB1YmxpYyBEaWdlc3RNZXRob2QgZ2V0RGlnZXN0TWV0aG9kKCkgeworCXJldHVybiBkaWdlc3RNZXRob2Q7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBnZXRJZCgpIHsKKwlyZXR1cm4gaWQ7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBnZXRVUkkoKSB7CisJcmV0dXJuIHVyaTsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldFR5cGUoKSB7CisJcmV0dXJuIHR5cGU7CisgICAgfQorCisgICAgcHVibGljIExpc3QgZ2V0VHJhbnNmb3JtcygpIHsKKwlyZXR1cm4gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlTGlzdChhbGxUcmFuc2Zvcm1zKTsKKyAgICB9CisKKyAgICBwdWJsaWMgYnl0ZVtdIGdldERpZ2VzdFZhbHVlKCkgeworCXJldHVybiAoZGlnZXN0VmFsdWUgPT0gbnVsbCA/IG51bGwgOiAoYnl0ZVtdKSBkaWdlc3RWYWx1ZS5jbG9uZSgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgYnl0ZVtdIGdldENhbGN1bGF0ZWREaWdlc3RWYWx1ZSgpIHsKKwlyZXR1cm4gKGNhbGNEaWdlc3RWYWx1ZSA9PSBudWxsID8gbnVsbCAKKwkJOiAoYnl0ZVtdKSBjYWxjRGlnZXN0VmFsdWUuY2xvbmUoKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgbWFyc2hhbChOb2RlIHBhcmVudCwgU3RyaW5nIGRzUHJlZml4LCBET01DcnlwdG9Db250ZXh0IGNvbnRleHQpCisJdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworCWlmIChsb2cuaXNMb2dnYWJsZShMZXZlbC5GSU5FKSkgeworICAgICAgICAgICAgbG9nLmxvZyhMZXZlbC5GSU5FLCAiTWFyc2hhbGxpbmcgUmVmZXJlbmNlIik7CisJfQorICAgICAgICBEb2N1bWVudCBvd25lckRvYyA9IERPTVV0aWxzLmdldE93bmVyRG9jdW1lbnQocGFyZW50KTsKKworICAgICAgICByZWZFbGVtID0gRE9NVXRpbHMuY3JlYXRlRWxlbWVudAorICAgICAgICAgICAgKG93bmVyRG9jLCAiUmVmZXJlbmNlIiwgWE1MU2lnbmF0dXJlLlhNTE5TLCBkc1ByZWZpeCk7CisKKwkvLyBzZXQgYXR0cmlidXRlcworCURPTVV0aWxzLnNldEF0dHJpYnV0ZUlEKHJlZkVsZW0sICJJZCIsIGlkKTsKKyAgICAgICAgRE9NVXRpbHMuc2V0QXR0cmlidXRlKHJlZkVsZW0sICJVUkkiLCB1cmkpOworICAgICAgICBET01VdGlscy5zZXRBdHRyaWJ1dGUocmVmRWxlbSwgIlR5cGUiLCB0eXBlKTsKKworCS8vIGNyZWF0ZSBhbmQgYXBwZW5kIFRyYW5zZm9ybXMgZWxlbWVudAorCWlmICghYWxsVHJhbnNmb3Jtcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIEVsZW1lbnQgdHJhbnNmb3Jtc0VsZW0gPSBET01VdGlscy5jcmVhdGVFbGVtZW50CisJCShvd25lckRvYywgIlRyYW5zZm9ybXMiLCBYTUxTaWduYXR1cmUuWE1MTlMsIGRzUHJlZml4KTsKKwkgICAgcmVmRWxlbS5hcHBlbmRDaGlsZCh0cmFuc2Zvcm1zRWxlbSk7CisJICAgIGZvciAoaW50IGkgPSAwLCBzaXplID0gYWxsVHJhbnNmb3Jtcy5zaXplKCk7IGkgPCBzaXplOyBpKyspIHsKKwkgICAgICAgIERPTVN0cnVjdHVyZSB0cmFuc2Zvcm0gPSAKKwkJICAgIChET01TdHJ1Y3R1cmUpIGFsbFRyYW5zZm9ybXMuZ2V0KGkpOworCSAgICAgICAgdHJhbnNmb3JtLm1hcnNoYWwodHJhbnNmb3Jtc0VsZW0sIGRzUHJlZml4LCBjb250ZXh0KTsKKwkgICAgfQorCX0KKworCS8vIGNyZWF0ZSBhbmQgYXBwZW5kIERpZ2VzdE1ldGhvZCBlbGVtZW50CisJKChET01EaWdlc3RNZXRob2QpIGRpZ2VzdE1ldGhvZCkubWFyc2hhbChyZWZFbGVtLCBkc1ByZWZpeCwgY29udGV4dCk7CisKKwkvLyBjcmVhdGUgYW5kIGFwcGVuZCBEaWdlc3RWYWx1ZSBlbGVtZW50CisJaWYgKGxvZy5pc0xvZ2dhYmxlKExldmVsLkZJTkUpKSB7CisJICAgIGxvZy5sb2coTGV2ZWwuRklORSwgIkFkZGluZyBkaWdlc3RWYWx1ZUVsZW0iKTsKKwl9CisgICAgICAgIEVsZW1lbnQgZGlnZXN0VmFsdWVFbGVtID0gRE9NVXRpbHMuY3JlYXRlRWxlbWVudAorICAgICAgICAgICAgKG93bmVyRG9jLCAiRGlnZXN0VmFsdWUiLCBYTUxTaWduYXR1cmUuWE1MTlMsIGRzUHJlZml4KTsKKwlpZiAoZGlnZXN0VmFsdWUgIT0gbnVsbCkgeworICAgICAgICAgICAgZGlnZXN0VmFsdWVFbGVtLmFwcGVuZENoaWxkCisJICAgICAgICAob3duZXJEb2MuY3JlYXRlVGV4dE5vZGUoQmFzZTY0LmVuY29kZShkaWdlc3RWYWx1ZSkpKTsKKwl9CisgICAgICAgIHJlZkVsZW0uYXBwZW5kQ2hpbGQoZGlnZXN0VmFsdWVFbGVtKTsKKworCXBhcmVudC5hcHBlbmRDaGlsZChyZWZFbGVtKTsKKwloZXJlID0gcmVmRWxlbS5nZXRBdHRyaWJ1dGVOb2RlTlMobnVsbCwgIlVSSSIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGRpZ2VzdChYTUxTaWduQ29udGV4dCBzaWduQ29udGV4dCkgCisJdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisJRGF0YSBkYXRhID0gbnVsbDsKKwlpZiAoYXBwbGllZFRyYW5zZm9ybURhdGEgPT0gbnVsbCkgeworCSAgICBkYXRhID0gZGVyZWZlcmVuY2Uoc2lnbkNvbnRleHQpOworCX0gZWxzZSB7CisJICAgIGRhdGEgPSBhcHBsaWVkVHJhbnNmb3JtRGF0YTsKKwl9CisJZGlnZXN0VmFsdWUgPSB0cmFuc2Zvcm0oZGF0YSwgc2lnbkNvbnRleHQpOworCisJLy8gaW5zZXJ0IGRpZ2VzdFZhbHVlIGludG8gRGlnZXN0VmFsdWUgZWxlbWVudAorCVN0cmluZyBlbmNvZGVkRFYgPSBCYXNlNjQuZW5jb2RlKGRpZ2VzdFZhbHVlKTsKKwlpZiAobG9nLmlzTG9nZ2FibGUoTGV2ZWwuRklORSkpIHsKKwkgICAgbG9nLmxvZyhMZXZlbC5GSU5FLCAiUmVmZXJlbmNlIG9iamVjdCB1cmkgPSAiICsgdXJpKTsKKwl9CisgICAgICAgIEVsZW1lbnQgZGlnZXN0RWxlbSA9IERPTVV0aWxzLmdldExhc3RDaGlsZEVsZW1lbnQocmVmRWxlbSk7CisJaWYgKGRpZ2VzdEVsZW0gPT0gbnVsbCkgeworCSAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJEaWdlc3RWYWx1ZSBlbGVtZW50IGV4cGVjdGVkIik7CisJfQorCURPTVV0aWxzLnJlbW92ZUFsbENoaWxkcmVuKGRpZ2VzdEVsZW0pOworCWRpZ2VzdEVsZW0uYXBwZW5kQ2hpbGQKKwkgICAgKHJlZkVsZW0uZ2V0T3duZXJEb2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKGVuY29kZWREVikpOworCisJZGlnZXN0ZWQgPSB0cnVlOworCWlmIChsb2cuaXNMb2dnYWJsZShMZXZlbC5GSU5FKSkgeworCSAgICBsb2cubG9nKExldmVsLkZJTkUsICJSZWZlcmVuY2UgZGlnZXN0aW5nIGNvbXBsZXRlZCIpOworCX0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiB2YWxpZGF0ZShYTUxWYWxpZGF0ZUNvbnRleHQgdmFsaWRhdGVDb250ZXh0KQorICAgICAgICB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKwlpZiAodmFsaWRhdGVDb250ZXh0ID09IG51bGwpIHsKKwkgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJ2YWxpZGF0ZUNvbnRleHQgY2Fubm90IGJlIG51bGwiKTsKKwl9CisJaWYgKHZhbGlkYXRlZCkgeworCSAgICByZXR1cm4gdmFsaWRhdGlvblN0YXR1czsKKwl9CisJRGF0YSBkYXRhID0gZGVyZWZlcmVuY2UodmFsaWRhdGVDb250ZXh0KTsKKwljYWxjRGlnZXN0VmFsdWUgPSB0cmFuc2Zvcm0oZGF0YSwgdmFsaWRhdGVDb250ZXh0KTsKKworCWlmIChsb2cuaXNMb2dnYWJsZShMZXZlbC5GSU5FKSkgeworCSAgICBsb2cubG9nKExldmVsLkZJTkUsICJFeHBlY3RlZCBkaWdlc3Q6ICIgCisJCSsgQmFzZTY0LmVuY29kZShkaWdlc3RWYWx1ZSkpOworCSAgICBsb2cubG9nKExldmVsLkZJTkUsICJBY3R1YWwgZGlnZXN0OiAiIAorCQkrIEJhc2U2NC5lbmNvZGUoY2FsY0RpZ2VzdFZhbHVlKSk7CisJfQorCisJdmFsaWRhdGlvblN0YXR1cyA9IEFycmF5cy5lcXVhbHMoZGlnZXN0VmFsdWUsIGNhbGNEaWdlc3RWYWx1ZSk7CisJdmFsaWRhdGVkID0gdHJ1ZTsKKwlyZXR1cm4gdmFsaWRhdGlvblN0YXR1czsKKyAgICB9CisKKyAgICBwdWJsaWMgRGF0YSBnZXREZXJlZmVyZW5jZWREYXRhKCkgeworCXJldHVybiBkZXJlZkRhdGE7CisgICAgfQorCisgICAgcHVibGljIElucHV0U3RyZWFtIGdldERpZ2VzdElucHV0U3RyZWFtKCkgeworCXJldHVybiBkaXM7CisgICAgfQorCisgICAgcHJpdmF0ZSBEYXRhIGRlcmVmZXJlbmNlKFhNTENyeXB0b0NvbnRleHQgY29udGV4dCkgCisJdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisgICAgICAgIERhdGEgZGF0YSA9IG51bGw7CisKKwkvLyB1c2UgdXNlci1zcGVjaWZpZWQgVVJJRGVyZWZlcmVuY2VyIGlmIHNwZWNpZmllZDsgb3RoZXJ3aXNlIHVzZSBkZWZsdAorCVVSSURlcmVmZXJlbmNlciBkZXJlZiA9IGNvbnRleHQuZ2V0VVJJRGVyZWZlcmVuY2VyKCk7CisJaWYgKGRlcmVmID09IG51bGwpIHsKKwkgICAgZGVyZWYgPSBET01VUklEZXJlZmVyZW5jZXIuSU5TVEFOQ0U7CisJfQorCXRyeSB7CisgICAgICAgICAgICBkYXRhID0gZGVyZWYuZGVyZWZlcmVuY2UodGhpcywgY29udGV4dCk7CisJICAgIGlmIChsb2cuaXNMb2dnYWJsZShMZXZlbC5GSU5FKSkgeworICAgICAgICAgICAgICAgIGxvZy5sb2coTGV2ZWwuRklORSwgIlVSSURlcmVmZXJlbmNlciBjbGFzcyBuYW1lOiAiCisgICAgICAgICAgICAgICAgICAgICsgZGVyZWYuZ2V0Q2xhc3MoKS5nZXROYW1lKCkpOworICAgICAgICAgICAgICAgIGxvZy5sb2coTGV2ZWwuRklORSwgIkRhdGEgY2xhc3MgbmFtZTogIgorICAgICAgICAgICAgICAgICAgICArIGRhdGEuZ2V0Q2xhc3MoKS5nZXROYW1lKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChVUklSZWZlcmVuY2VFeGNlcHRpb24gdXJlKSB7CisJICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24odXJlKTsKKyAgICAgICAgfQorCisJcmV0dXJuIGRhdGE7CisgICAgfQorCisgICAgcHJpdmF0ZSBieXRlW10gdHJhbnNmb3JtKERhdGEgZGVyZWZlcmVuY2VkRGF0YSwgCisJWE1MQ3J5cHRvQ29udGV4dCBjb250ZXh0KSB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKworCWlmIChtZCA9PSBudWxsKSB7CisJICAgIHRyeSB7CisJICAgICAgICBtZCA9IE1lc3NhZ2VEaWdlc3QuZ2V0SW5zdGFuY2UKKwkJICAgICgoKERPTURpZ2VzdE1ldGhvZCkgZGlnZXN0TWV0aG9kKS5nZXRNZXNzYWdlRGlnZXN0QWxnb3JpdGhtKCkpOworCSAgICB9IGNhdGNoIChOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24gbnNhZSkgeworCSAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbihuc2FlKTsKKwkgICAgfQorCX0KKwltZC5yZXNldCgpOworCURpZ2VzdGVyT3V0cHV0U3RyZWFtIGRvczsKKwlCb29sZWFuIGNhY2hlID0gKEJvb2xlYW4pCisgICAgICAgICAgICBjb250ZXh0LmdldFByb3BlcnR5KCJqYXZheC54bWwuY3J5cHRvLmRzaWcuY2FjaGVSZWZlcmVuY2UiKTsKKyAgICAgICAgaWYgKGNhY2hlICE9IG51bGwgJiYgY2FjaGUuYm9vbGVhblZhbHVlKCkgPT0gdHJ1ZSkgeworICAgICAgICAgICAgdGhpcy5kZXJlZkRhdGEgPSBjb3B5RGVyZWZEYXRhKGRlcmVmZXJlbmNlZERhdGEpOworICAgICAgICAgICAgZG9zID0gbmV3IERpZ2VzdGVyT3V0cHV0U3RyZWFtKG1kLCB0cnVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRvcyA9IG5ldyBEaWdlc3Rlck91dHB1dFN0cmVhbShtZCk7CisgICAgICAgIH0KKwlPdXRwdXRTdHJlYW0gb3MgPSBuZXcgVW5zeW5jQnVmZmVyZWRPdXRwdXRTdHJlYW0oZG9zKTsKKyAgICAgICAgRGF0YSBkYXRhID0gZGVyZWZlcmVuY2VkRGF0YTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDAsIHNpemUgPSB0cmFuc2Zvcm1zLnNpemUoKTsgaSA8IHNpemU7IGkrKykgeworCSAgICBET01UcmFuc2Zvcm0gdHJhbnNmb3JtID0gKERPTVRyYW5zZm9ybSkgdHJhbnNmb3Jtcy5nZXQoaSk7CisJICAgIHRyeSB7CisgICAgICAgICAgICAgICAgaWYgKGkgPCBzaXplIC0gMSkgeworICAgICAgICAgICAgICAgICAgICBkYXRhID0gdHJhbnNmb3JtLnRyYW5zZm9ybShkYXRhLCBjb250ZXh0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBkYXRhID0gdHJhbnNmb3JtLnRyYW5zZm9ybShkYXRhLCBjb250ZXh0LCBvcyk7CisgICAgICAgICAgICAgICAgfQorCSAgICB9IGNhdGNoIChUcmFuc2Zvcm1FeGNlcHRpb24gdGUpIHsKKwkJdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbih0ZSk7CisJICAgIH0KKyAgICAgICAgfQorCQorCXRyeSB7CisJICAgIGlmIChkYXRhICE9IG51bGwpIHsKKwkgICAgICAgIFhNTFNpZ25hdHVyZUlucHV0IHhpOworCSAgICAgICAgLy8gZXhwbGljaXRseSB1c2UgQzE0TiAxLjEgd2hlbiBnZW5lcmF0aW5nIHNpZ25hdHVyZQorCQkvLyBmaXJzdCBjaGVjayBzeXN0ZW0gcHJvcGVydHksIHRoZW4gY29udGV4dCBwcm9wZXJ0eQorCQlib29sZWFuIGMxNG4xMSA9IHVzZUMxNE4xMTsKKwkJU3RyaW5nIGMxNG5hbGcgPSBDYW5vbmljYWxpemF0aW9uTWV0aG9kLklOQ0xVU0lWRTsKKwkgICAgICAgIGlmIChjb250ZXh0IGluc3RhbmNlb2YgWE1MU2lnbkNvbnRleHQpIHsKKwkJICAgIGlmICghYzE0bjExKSB7CisJICAgICAgICAgICAgICAgIEJvb2xlYW4gcHJvcCA9IChCb29sZWFuKSBjb250ZXh0LmdldFByb3BlcnR5CisJCQkgICAgKCJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51c2VDMTROMTEiKTsKKwkJICAgICAgICBjMTRuMTEgPSAocHJvcCAhPSBudWxsICYmIHByb3AuYm9vbGVhblZhbHVlKCkgPT0gdHJ1ZSk7CisJCQlpZiAoYzE0bjExKSB7CisJCSAgICAgICAgICAgIGMxNG5hbGcgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIjsKKwkJCX0KKwkJICAgIH0gZWxzZSB7CisJCSAgICAgICAgYzE0bmFsZyA9ICJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiOworCQkgICAgfQorCQl9CisJICAgICAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIEFwYWNoZURhdGEpIHsKKwkgICAgICAgICAgICB4aSA9ICgoQXBhY2hlRGF0YSkgZGF0YSkuZ2V0WE1MU2lnbmF0dXJlSW5wdXQoKTsKKwkgICAgICAgIH0gZWxzZSBpZiAoZGF0YSBpbnN0YW5jZW9mIE9jdGV0U3RyZWFtRGF0YSkgeworCSAgICAgICAgICAgIHhpID0gbmV3IFhNTFNpZ25hdHVyZUlucHV0CisJCQkoKChPY3RldFN0cmVhbURhdGEpZGF0YSkuZ2V0T2N0ZXRTdHJlYW0oKSk7CisJICAgICAgICB9IGVsc2UgaWYgKGRhdGEgaW5zdGFuY2VvZiBOb2RlU2V0RGF0YSkgeworCQkgICAgVHJhbnNmb3JtU2VydmljZSBzcGkgPSBudWxsOworCQkgICAgdHJ5IHsKKwkJICAgICAgICBzcGkgPSBUcmFuc2Zvcm1TZXJ2aWNlLmdldEluc3RhbmNlKGMxNG5hbGcsICJET00iKTsKKwkJICAgIH0gY2F0Y2ggKE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiBuc2FlKSB7CisJCSAgICAgICAgc3BpID0gVHJhbnNmb3JtU2VydmljZS5nZXRJbnN0YW5jZQorCQkgICAgICAgICAgICAoYzE0bmFsZywgIkRPTSIsIHByb3ZpZGVyKTsKKwkJICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNwaS50cmFuc2Zvcm0oZGF0YSwgY29udGV4dCk7CisJICAgICAgICAgICAgeGkgPSBuZXcgWE1MU2lnbmF0dXJlSW5wdXQKKwkJICAgICAgICAoKChPY3RldFN0cmVhbURhdGEpZGF0YSkuZ2V0T2N0ZXRTdHJlYW0oKSk7CisJICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oInVucmVjb2duaXplZCBEYXRhIHR5cGUiKTsKKwkgICAgICAgIH0KKwkgICAgICAgIGlmIChjb250ZXh0IGluc3RhbmNlb2YgWE1MU2lnbkNvbnRleHQgJiYgYzE0bjExCisJCSAgICAmJiAheGkuaXNPY3RldFN0cmVhbSgpICYmICF4aS5pc091dHB1dFN0cmVhbVNldCgpKSB7CisJCSAgICBET01UcmFuc2Zvcm0gdCA9IG5ldyBET01UcmFuc2Zvcm0KKwkJCShUcmFuc2Zvcm1TZXJ2aWNlLmdldEluc3RhbmNlKGMxNG5hbGcsICJET00iKSk7CisJCSAgICBFbGVtZW50IHRyYW5zZm9ybXNFbGVtID0gbnVsbDsKKwkJICAgIFN0cmluZyBkc1ByZWZpeCA9IERPTVV0aWxzLmdldFNpZ25hdHVyZVByZWZpeChjb250ZXh0KTsKKwkJICAgIGlmIChhbGxUcmFuc2Zvcm1zLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgCQl0cmFuc2Zvcm1zRWxlbSA9IERPTVV0aWxzLmNyZWF0ZUVsZW1lbnQoCisJCQkgICAgcmVmRWxlbS5nZXRPd25lckRvY3VtZW50KCksIAorCQkJICAgICJUcmFuc2Zvcm1zIiwgWE1MU2lnbmF0dXJlLlhNTE5TLCBkc1ByZWZpeCk7CisJICAgIAkJcmVmRWxlbS5pbnNlcnRCZWZvcmUodHJhbnNmb3Jtc0VsZW0sIAorCQkJICAgIERPTVV0aWxzLmdldEZpcnN0Q2hpbGRFbGVtZW50KHJlZkVsZW0pKTsKKwkJICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgCXRyYW5zZm9ybXNFbGVtID0gRE9NVXRpbHMuZ2V0Rmlyc3RDaGlsZEVsZW1lbnQocmVmRWxlbSk7CisJCSAgICB9CisgICAgICAgIAkgICAgdC5tYXJzaGFsKHRyYW5zZm9ybXNFbGVtLCBkc1ByZWZpeCwgKERPTUNyeXB0b0NvbnRleHQpIGNvbnRleHQpOworCQkgICAgYWxsVHJhbnNmb3Jtcy5hZGQodCk7CisJICAgICAgICAgICAgeGkudXBkYXRlT3V0cHV0U3RyZWFtKG9zLCB0cnVlKTsKKwkJfSBlbHNlIHsKKwkgICAgICAgICAgICB4aS51cGRhdGVPdXRwdXRTdHJlYW0ob3MpOworCQl9CisJICAgIH0KKwkgICAgb3MuZmx1c2goKTsKKwkgICAgaWYgKGNhY2hlICE9IG51bGwgJiYgY2FjaGUuYm9vbGVhblZhbHVlKCkgPT0gdHJ1ZSkgeworICAgICAgICAgICAgICAgIHRoaXMuZGlzID0gZG9zLmdldElucHV0U3RyZWFtKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZG9zLmdldERpZ2VzdFZhbHVlKCk7CisJfSBjYXRjaCAoTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIGUpIHsKKwkgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbihlKTsKKwl9IGNhdGNoIChUcmFuc2Zvcm1FeGNlcHRpb24gZSkgeworCSAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKGUpOworCX0gY2F0Y2ggKE1hcnNoYWxFeGNlcHRpb24gZSkgeworCSAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKGUpOworCX0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKwkgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbihlKTsKKwl9IGNhdGNoIChvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkNhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24gZSkgeworCSAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKGUpOworCX0KKyAgICB9CisKKyAgICBwdWJsaWMgTm9kZSBnZXRIZXJlKCkgeworCXJldHVybiBoZXJlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3QgbykgeworCWlmICh0aGlzID09IG8pIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCX0KKworICAgICAgICBpZiAoIShvIGluc3RhbmNlb2YgUmVmZXJlbmNlKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCX0KKyAgICAgICAgUmVmZXJlbmNlIG9yZWYgPSAoUmVmZXJlbmNlKSBvOworCisJYm9vbGVhbiBpZHNFcXVhbCA9IChpZCA9PSBudWxsID8gb3JlZi5nZXRJZCgpID09IG51bGwgOgorCSAgICBpZC5lcXVhbHMob3JlZi5nZXRJZCgpKSk7CisJYm9vbGVhbiB1cmlzRXF1YWwgPSAodXJpID09IG51bGwgPyBvcmVmLmdldFVSSSgpID09IG51bGwgOgorCSAgICB1cmkuZXF1YWxzKG9yZWYuZ2V0VVJJKCkpKTsKKwlib29sZWFuIHR5cGVzRXF1YWwgPSAodHlwZSA9PSBudWxsID8gb3JlZi5nZXRUeXBlKCkgPT0gbnVsbCA6CisJICAgIHR5cGUuZXF1YWxzKG9yZWYuZ2V0VHlwZSgpKSk7CisJYm9vbGVhbiBkaWdlc3RWYWx1ZXNFcXVhbCA9IAorCSAgICBBcnJheXMuZXF1YWxzKGRpZ2VzdFZhbHVlLCBvcmVmLmdldERpZ2VzdFZhbHVlKCkpOworCisJcmV0dXJuIGRpZ2VzdE1ldGhvZC5lcXVhbHMob3JlZi5nZXREaWdlc3RNZXRob2QoKSkgJiYgaWRzRXF1YWwgJiYKKwkgICAgdXJpc0VxdWFsICYmIHR5cGVzRXF1YWwgJiYgCisgICAgICAgICAgICBhbGxUcmFuc2Zvcm1zLmVxdWFscyhvcmVmLmdldFRyYW5zZm9ybXMoKSkgJiYgZGlnZXN0VmFsdWVzRXF1YWw7CisgICAgfQorCisgICAgYm9vbGVhbiBpc0RpZ2VzdGVkKCkgeworCXJldHVybiBkaWdlc3RlZDsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBEYXRhIGNvcHlEZXJlZkRhdGEoRGF0YSBkZXJlZmVyZW5jZWREYXRhKSB7CisgICAgICAgIGlmIChkZXJlZmVyZW5jZWREYXRhIGluc3RhbmNlb2YgQXBhY2hlRGF0YSkgeworICAgICAgICAgICAgLy8gbmVlZCB0byBtYWtlIGEgY29weSBvZiB0aGUgRGF0YQorICAgICAgICAgICAgQXBhY2hlRGF0YSBhZCA9IChBcGFjaGVEYXRhKSBkZXJlZmVyZW5jZWREYXRhOworICAgICAgICAgICAgWE1MU2lnbmF0dXJlSW5wdXQgeHNpID0gYWQuZ2V0WE1MU2lnbmF0dXJlSW5wdXQoKTsKKyAgICAgICAgICAgIGlmICh4c2kuaXNOb2RlU2V0KCkpIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBmaW5hbCBTZXQgcyA9IHhzaS5nZXROb2RlU2V0KCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTm9kZVNldERhdGEoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgSXRlcmF0b3IgaXRlcmF0b3IoKSB7IHJldHVybiBzLml0ZXJhdG9yKCk7IH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAvLyBsb2cgYSB3YXJuaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nLmxvZyhMZXZlbC5XQVJOSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBjYWNoZSBkZXJlZmVyZW5jZWQgZGF0YTogIiArIGUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKHhzaS5pc0VsZW1lbnQoKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRE9NU3ViVHJlZURhdGEKKyAgICAgICAgICAgICAgICAgICAgKHhzaS5nZXRTdWJOb2RlKCksIHhzaS5pc0V4Y2x1ZGVDb21tZW50cygpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoeHNpLmlzT2N0ZXRTdHJlYW0oKSB8fCB4c2kuaXNCeXRlQXJyYXkoKSkgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBPY3RldFN0cmVhbURhdGEKKyAgICAgICAgICAgICAgICAgICh4c2kuZ2V0T2N0ZXRTdHJlYW0oKSwgeHNpLmdldFNvdXJjZVVSSSgpLCB4c2kuZ2V0TUlNRVR5cGUoKSk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gaW9lKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIGxvZyBhIHdhcm5pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2cubG9nKExldmVsLldBUk5JTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGNhY2hlIGRlcmVmZXJlbmNlZCBkYXRhOiAiICsgaW9lKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBkZXJlZmVyZW5jZWREYXRhOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01SZXRyaWV2YWxNZXRob2QuamF2YSBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01SZXRyaWV2YWxNZXRob2QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGRjNDYzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTVJldHJpZXZhbE1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsMjUwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDUtMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogUG9ydGlvbnMgY29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbTsKKworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5uZXQuVVJJOworaW1wb3J0IGphdmEubmV0LlVSSVN5bnRheEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlByb3ZpZGVyOworaW1wb3J0IGphdmEudXRpbC4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRvbS5ET01DcnlwdG9Db250ZXh0OworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZG9tLkRPTVVSSVJlZmVyZW5jZTsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcua2V5aW5mby5SZXRyaWV2YWxNZXRob2Q7CitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuKjsKK2ltcG9ydCBvcmcudzNjLmRvbS5BdHRyOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKKworLyoqCisgKiBET00tYmFzZWQgaW1wbGVtZW50YXRpb24gb2YgUmV0cmlldmFsTWV0aG9kLgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgSm95Y2UgTGV1bmcKKyAqLworcHVibGljIGZpbmFsIGNsYXNzIERPTVJldHJpZXZhbE1ldGhvZCBleHRlbmRzIERPTVN0cnVjdHVyZQorICAgIGltcGxlbWVudHMgUmV0cmlldmFsTWV0aG9kLCBET01VUklSZWZlcmVuY2UgeworCisgICAgcHJpdmF0ZSBmaW5hbCBMaXN0IHRyYW5zZm9ybXM7CisgICAgcHJpdmF0ZSBTdHJpbmcgdXJpOworICAgIHByaXZhdGUgU3RyaW5nIHR5cGU7CisgICAgcHJpdmF0ZSBBdHRyIGhlcmU7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+RE9NUmV0cmlldmFsTWV0aG9kPC9jb2RlPiBjb250YWluaW5nIHRoZSBzcGVjaWZpZWQgCisgICAgICogVVJJUmVmZXJlbmNlIGFuZCBMaXN0IG9mIFRyYW5zZm9ybXMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gdXJpIHRoZSBVUkkKKyAgICAgKiBAcGFyYW0gdHlwZSB0aGUgdHlwZQorICAgICAqIEBwYXJhbSB0cmFuc2Zvcm1zIGEgbGlzdCBvZiB7QGxpbmsgVHJhbnNmb3JtfXMuIFRoZSBsaXN0IGlzIGRlZmVuc2l2ZWx5CisgICAgICogICAgY29waWVkIHRvIHByZXZlbnQgc3Vic2VxdWVudCBtb2RpZmljYXRpb24uIE1heSBiZSA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqICAgIG9yIGVtcHR5LgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBmb3JtYXQgb2YgPGNvZGU+dXJpPC9jb2RlPiBpcyAKKyAgICAgKiAgICBpbnZhbGlkLCBhcyBzcGVjaWZpZWQgYnkgUmVmZXJlbmNlJ3MgVVJJIGF0dHJpYnV0ZSBpbiB0aGUgVzNDCisgICAgICogICAgc3BlY2lmaWNhdGlvbiBmb3IgWE1MLVNpZ25hdHVyZSBTeW50YXggYW5kIFByb2Nlc3NpbmcKKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPnVyaVJlZmVyZW5jZTwvY29kZT4KKyAgICAgKiAgICBpcyA8Y29kZT5udWxsPC9jb2RlPiAKKyAgICAgKiBAdGhyb3dzIENsYXNzQ2FzdEV4Y2VwdGlvbiBpZiA8Y29kZT50cmFuc2Zvcm1zPC9jb2RlPiBjb250YWlucyBhbnkKKyAgICAgKiAgICBlbnRyaWVzIHRoYXQgYXJlIG5vdCBvZiB0eXBlIHtAbGluayBUcmFuc2Zvcm19CisgICAgICovCisgICAgcHVibGljIERPTVJldHJpZXZhbE1ldGhvZChTdHJpbmcgdXJpLCBTdHJpbmcgdHlwZSwgTGlzdCB0cmFuc2Zvcm1zKSB7CisJaWYgKHVyaSA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigidXJpIGNhbm5vdCBiZSBudWxsIik7CisJfQorICAgICAgICBpZiAodHJhbnNmb3JtcyA9PSBudWxsIHx8IHRyYW5zZm9ybXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICB0aGlzLnRyYW5zZm9ybXMgPSBDb2xsZWN0aW9ucy5FTVBUWV9MSVNUOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgTGlzdCB0cmFuc2Zvcm1zQ29weSA9IG5ldyBBcnJheUxpc3QodHJhbnNmb3Jtcyk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMCwgc2l6ZSA9IHRyYW5zZm9ybXNDb3B5LnNpemUoKTsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgICAgIGlmICghKHRyYW5zZm9ybXNDb3B5LmdldChpKSBpbnN0YW5jZW9mIFRyYW5zZm9ybSkpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IENsYXNzQ2FzdEV4Y2VwdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgKCJ0cmFuc2Zvcm1zWyIraSsiXSBpcyBub3QgYSB2YWxpZCB0eXBlIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy50cmFuc2Zvcm1zID0gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlTGlzdCh0cmFuc2Zvcm1zQ29weSk7CisgICAgICAgIH0KKwl0aGlzLnVyaSA9IHVyaTsKKyAgICAgICAgaWYgKCh1cmkgIT0gbnVsbCkgJiYgKCF1cmkuZXF1YWxzKCIiKSkpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgbmV3IFVSSSh1cmkpOworICAgICAgICAgICAgfSBjYXRjaCAoVVJJU3ludGF4RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisJdGhpcy50eXBlID0gdHlwZTsKKyAgICB9CisJCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIDxjb2RlPkRPTVJldHJpZXZhbE1ldGhvZDwvY29kZT4gZnJvbSBhbiBlbGVtZW50LgorICAgICAqCisgICAgICogQHBhcmFtIHJtRWxlbSBhIFJldHJpZXZhbE1ldGhvZCBlbGVtZW50CisgICAgICovCisgICAgcHVibGljIERPTVJldHJpZXZhbE1ldGhvZChFbGVtZW50IHJtRWxlbSwgWE1MQ3J5cHRvQ29udGV4dCBjb250ZXh0LAorCVByb3ZpZGVyIHByb3ZpZGVyKSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgIC8vIGdldCBVUkkgYW5kIFR5cGUgYXR0cmlidXRlcworICAgICAgICB1cmkgPSBET01VdGlscy5nZXRBdHRyaWJ1dGVWYWx1ZShybUVsZW0sICJVUkkiKTsKKyAgICAgICAgdHlwZSA9IERPTVV0aWxzLmdldEF0dHJpYnV0ZVZhbHVlKHJtRWxlbSwgIlR5cGUiKTsKKworCS8vIGdldCBoZXJlIG5vZGUKKwloZXJlID0gcm1FbGVtLmdldEF0dHJpYnV0ZU5vZGVOUyhudWxsLCAiVVJJIik7CisKKyAgICAgICAgLy8gZ2V0IFRyYW5zZm9ybXMsIGlmIHNwZWNpZmllZAorICAgICAgICBMaXN0IHRyYW5zZm9ybXMgPSBuZXcgQXJyYXlMaXN0KCk7CisgICAgICAgIEVsZW1lbnQgdHJhbnNmb3Jtc0VsZW0gPSBET01VdGlscy5nZXRGaXJzdENoaWxkRWxlbWVudChybUVsZW0pOworICAgICAgICBpZiAodHJhbnNmb3Jtc0VsZW0gIT0gbnVsbCkgeworICAgICAgICAgICAgRWxlbWVudCB0cmFuc2Zvcm1FbGVtID0gCisJCURPTVV0aWxzLmdldEZpcnN0Q2hpbGRFbGVtZW50KHRyYW5zZm9ybXNFbGVtKTsKKyAgICAgICAgICAgIHdoaWxlICh0cmFuc2Zvcm1FbGVtICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0cmFuc2Zvcm1zLmFkZAorCQkgICAgKG5ldyBET01UcmFuc2Zvcm0odHJhbnNmb3JtRWxlbSwgY29udGV4dCwgcHJvdmlkZXIpKTsKKyAgICAgICAgICAgICAgICB0cmFuc2Zvcm1FbGVtID0gRE9NVXRpbHMuZ2V0TmV4dFNpYmxpbmdFbGVtZW50KHRyYW5zZm9ybUVsZW0pOworCSAgICB9CisgICAgICAgIH0KKwlpZiAodHJhbnNmb3Jtcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtcyA9IENvbGxlY3Rpb25zLkVNUFRZX0xJU1Q7CisJfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtcyA9IENvbGxlY3Rpb25zLnVubW9kaWZpYWJsZUxpc3QodHJhbnNmb3Jtcyk7CisJfQorICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0VVJJKCkgeworCXJldHVybiB1cmk7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBnZXRUeXBlKCkgeworCXJldHVybiB0eXBlOworICAgIH0KKworICAgIHB1YmxpYyBMaXN0IGdldFRyYW5zZm9ybXMoKSB7CisJcmV0dXJuIHRyYW5zZm9ybXM7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgbWFyc2hhbChOb2RlIHBhcmVudCwgU3RyaW5nIGRzUHJlZml4LCBET01DcnlwdG9Db250ZXh0IGNvbnRleHQpCisJdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworICAgICAgICBEb2N1bWVudCBvd25lckRvYyA9IERPTVV0aWxzLmdldE93bmVyRG9jdW1lbnQocGFyZW50KTsKKworICAgICAgICBFbGVtZW50IHJtRWxlbSA9IERPTVV0aWxzLmNyZWF0ZUVsZW1lbnQKKyAgICAgICAgICAgIChvd25lckRvYywgIlJldHJpZXZhbE1ldGhvZCIsIFhNTFNpZ25hdHVyZS5YTUxOUywgZHNQcmVmaXgpOworCisgICAgICAgIC8vIGFkZCBVUkkgYW5kIFR5cGUgYXR0cmlidXRlcworICAgICAgICBET01VdGlscy5zZXRBdHRyaWJ1dGUocm1FbGVtLCAiVVJJIiwgdXJpKTsKKyAgICAgICAgRE9NVXRpbHMuc2V0QXR0cmlidXRlKHJtRWxlbSwgIlR5cGUiLCB0eXBlKTsKKworICAgICAgICAvLyBhZGQgVHJhbnNmb3JtcyBlbGVtZW50cworCWlmICghdHJhbnNmb3Jtcy5pc0VtcHR5KCkpIHsKKwkgICAgRWxlbWVudCB0cmFuc2Zvcm1zRWxlbSA9IERPTVV0aWxzLmNyZWF0ZUVsZW1lbnQKKyAgICAgICAgICAgICAgICAob3duZXJEb2MsICJUcmFuc2Zvcm1zIiwgWE1MU2lnbmF0dXJlLlhNTE5TLCBkc1ByZWZpeCk7CisJICAgIHJtRWxlbS5hcHBlbmRDaGlsZCh0cmFuc2Zvcm1zRWxlbSk7CisJICAgIGZvciAoaW50IGkgPSAwLCBzaXplID0gdHJhbnNmb3Jtcy5zaXplKCk7IGkgPCBzaXplOyBpKyspIHsKKwkgICAgICAgICgoRE9NVHJhbnNmb3JtKSB0cmFuc2Zvcm1zLmdldChpKSkubWFyc2hhbAorCQkgICAgKHRyYW5zZm9ybXNFbGVtLCBkc1ByZWZpeCwgY29udGV4dCk7CisgICAgICAgICAgICB9CisJfQorCisgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChybUVsZW0pOworCisJLy8gc2F2ZSBoZXJlIG5vZGUKKwloZXJlID0gcm1FbGVtLmdldEF0dHJpYnV0ZU5vZGVOUyhudWxsLCAiVVJJIik7CisgICAgfQorCisgICAgcHVibGljIE5vZGUgZ2V0SGVyZSgpIHsKKwlyZXR1cm4gaGVyZTsKKyAgICB9CisKKyAgICBwdWJsaWMgRGF0YSBkZXJlZmVyZW5jZShYTUxDcnlwdG9Db250ZXh0IGNvbnRleHQpCisgICAgICAgIHRocm93cyBVUklSZWZlcmVuY2VFeGNlcHRpb24geworCisJaWYgKGNvbnRleHQgPT0gbnVsbCkgeworCSAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oImNvbnRleHQgY2Fubm90IGJlIG51bGwiKTsKKwl9CisKKwkvKgorICAgICAgICAgKiBJZiBVUklEZXJlZmVyZW5jZXIgaXMgc3BlY2lmaWVkIGluIGNvbnRleHQ7IHVzZSBpdCwgb3RoZXJ3aXNlIHVzZSAKKwkgKiBidWlsdC1pbi4KKwkgKi8KKyAgICAgICAgVVJJRGVyZWZlcmVuY2VyIGRlcmVmID0gY29udGV4dC5nZXRVUklEZXJlZmVyZW5jZXIoKTsKKyAgICAgICAgaWYgKGRlcmVmID09IG51bGwpIHsKKwkgICAgZGVyZWYgPSBET01VUklEZXJlZmVyZW5jZXIuSU5TVEFOQ0U7CisJfQorCisJRGF0YSBkYXRhID0gZGVyZWYuZGVyZWZlcmVuY2UodGhpcywgY29udGV4dCk7CisKKyAgICAgICAgLy8gcGFzcyBkZXJlZmVyZW5jZWQgZGF0YSB0aHJvdWdoIFRyYW5zZm9ybXMKKwl0cnkgeworCSAgICBmb3IgKGludCBpID0gMCwgc2l6ZSA9IHRyYW5zZm9ybXMuc2l6ZSgpOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAgICAgVHJhbnNmb3JtIHRyYW5zZm9ybSA9IChUcmFuc2Zvcm0pIHRyYW5zZm9ybXMuZ2V0KGkpOworICAgICAgICAgICAgICAgIGRhdGEgPSAoKERPTVRyYW5zZm9ybSkgdHJhbnNmb3JtKS50cmFuc2Zvcm0oZGF0YSwgY29udGV4dCk7CisgICAgICAgICAgICB9CisJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkgICAgdGhyb3cgbmV3IFVSSVJlZmVyZW5jZUV4Y2VwdGlvbihlKTsKKwl9CisJcmV0dXJuIGRhdGE7CisgICAgfQorCisgICAgcHVibGljIFhNTFN0cnVjdHVyZSBkZXJlZmVyZW5jZUFzWE1MU3RydWN0dXJlKFhNTENyeXB0b0NvbnRleHQgY29udGV4dCkKKwl0aHJvd3MgVVJJUmVmZXJlbmNlRXhjZXB0aW9uIHsKKworCXRyeSB7CisJICAgIEFwYWNoZURhdGEgZGF0YSA9IChBcGFjaGVEYXRhKSBkZXJlZmVyZW5jZShjb250ZXh0KTsKKwkgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisJICAgIGRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKwkgICAgRG9jdW1lbnRCdWlsZGVyIGRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOworCSAgICBEb2N1bWVudCBkb2MgPSBkYi5wYXJzZShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0KKwkJKGRhdGEuZ2V0WE1MU2lnbmF0dXJlSW5wdXQoKS5nZXRCeXRlcygpKSk7CisJICAgIEVsZW1lbnQga2lFbGVtID0gZG9jLmdldERvY3VtZW50RWxlbWVudCgpOworICAgICAgICAgICAgaWYgKGtpRWxlbS5nZXRMb2NhbE5hbWUoKS5lcXVhbHMoIlg1MDlEYXRhIikpIHsKKwkJcmV0dXJuIG5ldyBET01YNTA5RGF0YShraUVsZW0pOworCSAgICB9IGVsc2UgeworCQlyZXR1cm4gbnVsbDsgLy8gdW5zdXBwb3J0ZWQKKwkgICAgfQorCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJICAgIHRocm93IG5ldyBVUklSZWZlcmVuY2VFeGNlcHRpb24oZSk7CisJfQorICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKSB7CisJaWYgKHRoaXMgPT0gb2JqKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwl9CisgICAgICAgIGlmICghKG9iaiBpbnN0YW5jZW9mIFJldHJpZXZhbE1ldGhvZCkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwl9CisgICAgICAgIFJldHJpZXZhbE1ldGhvZCBvcm0gPSAoUmV0cmlldmFsTWV0aG9kKSBvYmo7CisKKwlib29sZWFuIHR5cGVzRXF1YWwgPSAodHlwZSA9PSBudWxsID8gb3JtLmdldFR5cGUoKSA9PSBudWxsIDoKKyAgICAgICAgICAgIHR5cGUuZXF1YWxzKG9ybS5nZXRUeXBlKCkpKTsKKworCXJldHVybiAodXJpLmVxdWFscyhvcm0uZ2V0VVJJKCkpICYmIAorCSAgICB0cmFuc2Zvcm1zLmVxdWFscyhvcm0uZ2V0VHJhbnNmb3JtcygpKSAmJiB0eXBlc0VxdWFsKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NU2lnbmF0dXJlTWV0aG9kLmphdmEgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NU2lnbmF0dXJlTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDMxZTZmMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01TaWduYXR1cmVNZXRob2QuamF2YQpAQCAtMCwwICsxLDQ5NCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1LTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbTsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuc3BlYy5TaWduYXR1cmVNZXRob2RQYXJhbWV0ZXJTcGVjOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5Lio7CitpbXBvcnQgamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWM7CitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWw7CitpbXBvcnQgamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyOworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5hbGdvcml0aG1zLmltcGxlbWVudGF0aW9ucy5TaWduYXR1cmVFQ0RTQTsKK2ltcG9ydCBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLlNpZ25lck91dHB1dFN0cmVhbTsKKworLyoqCisgKiBET00tYmFzZWQgYWJzdHJhY3QgaW1wbGVtZW50YXRpb24gb2YgU2lnbmF0dXJlTWV0aG9kLgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIERPTVNpZ25hdHVyZU1ldGhvZCBleHRlbmRzIEFic3RyYWN0RE9NU2lnbmF0dXJlTWV0aG9kIHsKKworICAgIHByaXZhdGUgc3RhdGljIExvZ2dlciBsb2cgPQorICAgICAgICBMb2dnZXIuZ2V0TG9nZ2VyKCJvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbSIpOworCisgICAgLy8gc2VlIFJGQyA0MDUxIGZvciB0aGVzZSBhbGdvcml0aG0gZGVmaW5pdGlvbnMKKyAgICBmaW5hbCBzdGF0aWMgU3RyaW5nIFJTQV9TSEEyNTYgPQorICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTI1NiI7CisgICAgZmluYWwgc3RhdGljIFN0cmluZyBSU0FfU0hBMzg0ID0KKyAgICAgICAgImh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEzODQiOworICAgIGZpbmFsIHN0YXRpYyBTdHJpbmcgUlNBX1NIQTUxMiA9CisgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhNTEyIjsKKyAgICBmaW5hbCBzdGF0aWMgU3RyaW5nIEVDRFNBX1NIQTEgPQorICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjZWNkc2Etc2hhMSI7CisgICAgZmluYWwgc3RhdGljIFN0cmluZyBFQ0RTQV9TSEEyNTYgPQorICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjZWNkc2Etc2hhMjU2IjsKKyAgICBmaW5hbCBzdGF0aWMgU3RyaW5nIEVDRFNBX1NIQTM4NCA9CisgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNlY2RzYS1zaGEzODQiOworICAgIGZpbmFsIHN0YXRpYyBTdHJpbmcgRUNEU0FfU0hBNTEyID0KKyAgICAgICAgImh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTUxMiI7CisKKyAgICBwcml2YXRlIFNpZ25hdHVyZU1ldGhvZFBhcmFtZXRlclNwZWMgcGFyYW1zOworICAgIHByaXZhdGUgU2lnbmF0dXJlIHNpZ25hdHVyZTsKKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSA8Y29kZT5ET01TaWduYXR1cmVNZXRob2Q8L2NvZGU+LgorICAgICAqCisgICAgICogQHBhcmFtIHBhcmFtcyB0aGUgYWxnb3JpdGhtLXNwZWNpZmljIHBhcmFtcyAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+KQorICAgICAqIEB0aHJvd3MgSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiBpZiB0aGUgcGFyYW1ldGVycyBhcmUgbm90CisgICAgICogICAgYXBwcm9wcmlhdGUgZm9yIHRoaXMgc2lnbmF0dXJlIG1ldGhvZAorICAgICAqLworICAgIERPTVNpZ25hdHVyZU1ldGhvZChBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIHBhcmFtcykgCisJdGhyb3dzIEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24geworCWlmIChwYXJhbXMgIT0gbnVsbCAmJiAKKwkgICAgIShwYXJhbXMgaW5zdGFuY2VvZiBTaWduYXR1cmVNZXRob2RQYXJhbWV0ZXJTcGVjKSkgeworCSAgICB0aHJvdyBuZXcgSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbgorCQkoInBhcmFtcyBtdXN0IGJlIG9mIHR5cGUgU2lnbmF0dXJlTWV0aG9kUGFyYW1ldGVyU3BlYyIpOworCX0KKyAgICAgICAgY2hlY2tQYXJhbXMoKFNpZ25hdHVyZU1ldGhvZFBhcmFtZXRlclNwZWMpIHBhcmFtcyk7CisJdGhpcy5wYXJhbXMgPSAoU2lnbmF0dXJlTWV0aG9kUGFyYW1ldGVyU3BlYykgcGFyYW1zOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSA8Y29kZT5ET01TaWduYXR1cmVNZXRob2Q8L2NvZGU+IGZyb20gYW4gZWxlbWVudC4gVGhpcyBjdG9yCisgICAgICogaW52b2tlcyB0aGUge0BsaW5rICN1bm1hcnNoYWxQYXJhbXMgdW5tYXJzaGFsUGFyYW1zfSBtZXRob2QgdG8KKyAgICAgKiB1bm1hcnNoYWwgYW55IGFsZ29yaXRobS1zcGVjaWZpYyBpbnB1dCBwYXJhbWV0ZXJzLgorICAgICAqCisgICAgICogQHBhcmFtIHNtRWxlbSBhIFNpZ25hdHVyZU1ldGhvZCBlbGVtZW50CisgICAgICovCisgICAgRE9NU2lnbmF0dXJlTWV0aG9kKEVsZW1lbnQgc21FbGVtKSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisJRWxlbWVudCBwYXJhbXNFbGVtID0gRE9NVXRpbHMuZ2V0Rmlyc3RDaGlsZEVsZW1lbnQoc21FbGVtKTsKKwlpZiAocGFyYW1zRWxlbSAhPSBudWxsKSB7CisJICAgIHBhcmFtcyA9IHVubWFyc2hhbFBhcmFtcyhwYXJhbXNFbGVtKTsKKwl9CisJdHJ5IHsKKwkgICAgY2hlY2tQYXJhbXMocGFyYW1zKTsKKwl9IGNhdGNoIChJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIGlhcGUpIHsKKwkgICAgdGhyb3cgbmV3IE1hcnNoYWxFeGNlcHRpb24oaWFwZSk7CisJfQorICAgIH0KKworICAgIHN0YXRpYyBTaWduYXR1cmVNZXRob2QgdW5tYXJzaGFsKEVsZW1lbnQgc21FbGVtKSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBhbGcgPSBET01VdGlscy5nZXRBdHRyaWJ1dGVWYWx1ZShzbUVsZW0sICJBbGdvcml0aG0iKTsKKyAgICAgICAgaWYgKGFsZy5lcXVhbHMoU2lnbmF0dXJlTWV0aG9kLlJTQV9TSEExKSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBTSEExd2l0aFJTQShzbUVsZW0pOworICAgICAgICB9IGVsc2UgaWYgKGFsZy5lcXVhbHMoUlNBX1NIQTI1NikpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgU0hBMjU2d2l0aFJTQShzbUVsZW0pOworICAgICAgICB9IGVsc2UgaWYgKGFsZy5lcXVhbHMoUlNBX1NIQTM4NCkpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgU0hBMzg0d2l0aFJTQShzbUVsZW0pOworICAgICAgICB9IGVsc2UgaWYgKGFsZy5lcXVhbHMoUlNBX1NIQTUxMikpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgU0hBNTEyd2l0aFJTQShzbUVsZW0pOworICAgICAgICB9IGVsc2UgaWYgKGFsZy5lcXVhbHMoU2lnbmF0dXJlTWV0aG9kLkRTQV9TSEExKSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBTSEExd2l0aERTQShzbUVsZW0pOworICAgICAgICB9IGVsc2UgaWYgKGFsZy5lcXVhbHMoRUNEU0FfU0hBMSkpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgU0hBMXdpdGhFQ0RTQShzbUVsZW0pOworICAgICAgICB9IGVsc2UgaWYgKGFsZy5lcXVhbHMoRUNEU0FfU0hBMjU2KSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBTSEEyNTZ3aXRoRUNEU0Eoc21FbGVtKTsKKyAgICAgICAgfSBlbHNlIGlmIChhbGcuZXF1YWxzKEVDRFNBX1NIQTM4NCkpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgU0hBMzg0d2l0aEVDRFNBKHNtRWxlbSk7CisgICAgICAgIH0gZWxzZSBpZiAoYWxnLmVxdWFscyhFQ0RTQV9TSEE1MTIpKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFNIQTUxMndpdGhFQ0RTQShzbUVsZW0pOworICAgICAgICB9IGVsc2UgaWYgKGFsZy5lcXVhbHMoU2lnbmF0dXJlTWV0aG9kLkhNQUNfU0hBMSkpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgRE9NSE1BQ1NpZ25hdHVyZU1ldGhvZC5TSEExKHNtRWxlbSk7CisgICAgICAgIH0gZWxzZSBpZiAoYWxnLmVxdWFscyhET01ITUFDU2lnbmF0dXJlTWV0aG9kLkhNQUNfU0hBMjU2KSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBET01ITUFDU2lnbmF0dXJlTWV0aG9kLlNIQTI1NihzbUVsZW0pOworICAgICAgICB9IGVsc2UgaWYgKGFsZy5lcXVhbHMoRE9NSE1BQ1NpZ25hdHVyZU1ldGhvZC5ITUFDX1NIQTM4NCkpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgRE9NSE1BQ1NpZ25hdHVyZU1ldGhvZC5TSEEzODQoc21FbGVtKTsKKyAgICAgICAgfSBlbHNlIGlmIChhbGcuZXF1YWxzKERPTUhNQUNTaWduYXR1cmVNZXRob2QuSE1BQ19TSEE1MTIpKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IERPTUhNQUNTaWduYXR1cmVNZXRob2QuU0hBNTEyKHNtRWxlbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTWFyc2hhbEV4Y2VwdGlvbgorICAgICAgICAgICAgICAgICgidW5zdXBwb3J0ZWQgU2lnbmF0dXJlTWV0aG9kIGFsZ29yaXRobTogIiArIGFsZyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgZmluYWwgQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyBnZXRQYXJhbWV0ZXJTcGVjKCkgeworCXJldHVybiBwYXJhbXM7CisgICAgfQorCisgICAgYm9vbGVhbiB2ZXJpZnkoS2V5IGtleSwgU2lnbmVkSW5mbyBzaSwgYnl0ZVtdIHNpZywKKwlYTUxWYWxpZGF0ZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEludmFsaWRLZXlFeGNlcHRpb24sIAorCVNpZ25hdHVyZUV4Y2VwdGlvbiwgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKGtleSA9PSBudWxsIHx8IHNpID09IG51bGwgfHwgc2lnID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCEoa2V5IGluc3RhbmNlb2YgUHVibGljS2V5KSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRLZXlFeGNlcHRpb24oImtleSBtdXN0IGJlIFB1YmxpY0tleSIpOworICAgICAgICB9CisgICAgICAgIGlmIChzaWduYXR1cmUgPT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBQcm92aWRlciBwID0gKFByb3ZpZGVyKSBjb250ZXh0LmdldFByb3BlcnR5CisgICAgICAgICAgICAgICAgICAgICgib3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uU2lnbmF0dXJlUHJvdmlkZXIiKTsKKyAgICAgICAgICAgICAgICBzaWduYXR1cmUgPSAocCA9PSBudWxsKSAKKyAgICAgICAgICAgICAgICAgICAgPyBTaWduYXR1cmUuZ2V0SW5zdGFuY2UoZ2V0SkNBQWxnb3JpdGhtKCkpIAorICAgICAgICAgICAgICAgICAgICA6IFNpZ25hdHVyZS5nZXRJbnN0YW5jZShnZXRKQ0FBbGdvcml0aG0oKSwgcCk7CisgICAgICAgICAgICB9IGNhdGNoIChOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24gbnNhZSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24obnNhZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc2lnbmF0dXJlLmluaXRWZXJpZnkoKFB1YmxpY0tleSkga2V5KTsKKyAgICAgICAgaWYgKGxvZy5pc0xvZ2dhYmxlKExldmVsLkZJTkUpKSB7CisgICAgICAgICAgICBsb2cubG9nKExldmVsLkZJTkUsICJTaWduYXR1cmUgcHJvdmlkZXI6Iisgc2lnbmF0dXJlLmdldFByb3ZpZGVyKCkpOworICAgICAgICAgICAgbG9nLmxvZyhMZXZlbC5GSU5FLCAidmVyaWZ5aW5nIHdpdGgga2V5OiAiICsga2V5KTsKKyAgICAgICAgfQorICAgICAgICAoKERPTVNpZ25lZEluZm8pc2kpLmNhbm9uaWNhbGl6ZShjb250ZXh0LCBuZXcgU2lnbmVyT3V0cHV0U3RyZWFtKHNpZ25hdHVyZSkpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpbnQgdHlwZSA9IGdldEFsZ29yaXRobVR5cGUoKTsKKyAgICAgICAgICAgIGlmICh0eXBlID09IERTQSkgeworICAgICAgICAgICAgICAgIHJldHVybiBzaWduYXR1cmUudmVyaWZ5KGNvbnZlcnRYTUxEU0lHdG9BU04xKHNpZykpOworICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IEVDRFNBKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNpZ25hdHVyZS52ZXJpZnkoU2lnbmF0dXJlRUNEU0EuY29udmVydFhNTERTSUd0b0FTTjEoc2lnKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBzaWduYXR1cmUudmVyaWZ5KHNpZyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGlvZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbihpb2UpOworICAgICAgICB9CisgICAgfQorCisgICAgYnl0ZVtdIHNpZ24oS2V5IGtleSwgU2lnbmVkSW5mbyBzaSwgWE1MU2lnbkNvbnRleHQgY29udGV4dCkgCisgICAgICAgIHRocm93cyBJbnZhbGlkS2V5RXhjZXB0aW9uLCBYTUxTaWduYXR1cmVFeGNlcHRpb24geworICAgICAgICBpZiAoa2V5ID09IG51bGwgfHwgc2kgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIShrZXkgaW5zdGFuY2VvZiBQcml2YXRlS2V5KSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRLZXlFeGNlcHRpb24oImtleSBtdXN0IGJlIFByaXZhdGVLZXkiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2lnbmF0dXJlID09IG51bGwpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgUHJvdmlkZXIgcCA9IChQcm92aWRlcikgY29udGV4dC5nZXRQcm9wZXJ0eQorICAgICAgICAgICAgICAgICAgICAoIm9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tLlNpZ25hdHVyZVByb3ZpZGVyIik7CisgICAgICAgICAgICAgICAgc2lnbmF0dXJlID0gKHAgPT0gbnVsbCkgCisgICAgICAgICAgICAgICAgICAgID8gU2lnbmF0dXJlLmdldEluc3RhbmNlKGdldEpDQUFsZ29yaXRobSgpKSAKKyAgICAgICAgICAgICAgICAgICAgOiBTaWduYXR1cmUuZ2V0SW5zdGFuY2UoZ2V0SkNBQWxnb3JpdGhtKCksIHApOworICAgICAgICAgICAgfSBjYXRjaCAoTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIG5zYWUpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKG5zYWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHNpZ25hdHVyZS5pbml0U2lnbigoUHJpdmF0ZUtleSkga2V5KTsKKyAgICAgICAgaWYgKGxvZy5pc0xvZ2dhYmxlKExldmVsLkZJTkUpKSB7CisgICAgICAgICAgICBsb2cubG9nKExldmVsLkZJTkUsICJTaWduYXR1cmUgcHJvdmlkZXI6IiArc2lnbmF0dXJlLmdldFByb3ZpZGVyKCkpOworICAgICAgICAgICAgbG9nLmxvZyhMZXZlbC5GSU5FLCAiU2lnbmluZyB3aXRoIGtleTogIiArIGtleSk7CisgICAgICAgIH0KKworICAgICAgICAoKERPTVNpZ25lZEluZm8pc2kpLmNhbm9uaWNhbGl6ZShjb250ZXh0LCBuZXcgU2lnbmVyT3V0cHV0U3RyZWFtKHNpZ25hdHVyZSkpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpbnQgdHlwZSA9IGdldEFsZ29yaXRobVR5cGUoKTsKKyAgICAgICAgICAgIGlmICh0eXBlID09IERTQSkgeworICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0QVNOMXRvWE1MRFNJRyhzaWduYXR1cmUuc2lnbigpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBFQ0RTQSkgeworICAgICAgICAgICAgICAgIHJldHVybiBTaWduYXR1cmVFQ0RTQS5jb252ZXJ0QVNOMXRvWE1MRFNJRyhzaWduYXR1cmUuc2lnbigpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNpZ25hdHVyZS5zaWduKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKFNpZ25hdHVyZUV4Y2VwdGlvbiBzZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbihzZSk7CisgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGlvZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbihpb2UpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVydHMgYW4gQVNOLjEgRFNBIHZhbHVlIHRvIGEgWE1MIFNpZ25hdHVyZSBEU0EgVmFsdWUuCisgICAgICoKKyAgICAgKiBUaGUgSkFWQSBKQ0UgRFNBIFNpZ25hdHVyZSBhbGdvcml0aG0gY3JlYXRlcyBBU04uMSBlbmNvZGVkIChyLHMpIHZhbHVlCisgICAgICogcGFpcnM7IHRoZSBYTUwgU2lnbmF0dXJlIHJlcXVpcmVzIHRoZSBjb3JlIEJpZ0ludGVnZXIgdmFsdWVzLgorICAgICAqCisgICAgICogQHBhcmFtIGFzbjFCeXRlcworICAgICAqCisgICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorICAgICAqIEBzZWUgPEEgSFJFRj0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sZHNpZy1jb3JlLyNkc2Etc2hhMSI+Ni40LjEgRFNBPC9BPgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGJ5dGVbXSBjb252ZXJ0QVNOMXRvWE1MRFNJRyhieXRlIGFzbjFCeXRlc1tdKQorICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24geworCisgICAgICAgIGJ5dGUgckxlbmd0aCA9IGFzbjFCeXRlc1szXTsKKyAgICAgICAgaW50IGk7CisKKyAgICAgICAgZm9yIChpID0gckxlbmd0aDsgKGkgPiAwKSAmJiAoYXNuMUJ5dGVzWyg0ICsgckxlbmd0aCkgLSBpXSA9PSAwKTsgaS0tKTsKKworICAgICAgICBieXRlIHNMZW5ndGggPSBhc24xQnl0ZXNbNSArIHJMZW5ndGhdOworICAgICAgICBpbnQgajsKKworICAgICAgICBmb3IgKGogPSBzTGVuZ3RoOworICAgICAgICAgICAgKGogPiAwKSAmJiAoYXNuMUJ5dGVzWyg2ICsgckxlbmd0aCArIHNMZW5ndGgpIC0gal0gPT0gMCk7IGotLSk7CisKKyAgICAgICAgaWYgKChhc24xQnl0ZXNbMF0gIT0gNDgpIHx8IChhc24xQnl0ZXNbMV0gIT0gYXNuMUJ5dGVzLmxlbmd0aCAtIDIpCisgICAgICAgICAgICB8fCAoYXNuMUJ5dGVzWzJdICE9IDIpIHx8IChpID4gMjApCisgICAgICAgICAgICB8fCAoYXNuMUJ5dGVzWzQgKyByTGVuZ3RoXSAhPSAyKSB8fCAoaiA+IDIwKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJJbnZhbGlkIEFTTi4xIGZvcm1hdCBvZiBEU0Egc2lnbmF0dXJlIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBieXRlIHhtbGRzaWdCeXRlc1tdID0gbmV3IGJ5dGVbNDBdOworCisgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGFzbjFCeXRlcywgKDQrckxlbmd0aCktaSwgeG1sZHNpZ0J5dGVzLCAyMC1pLCBpKTsKKyAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoYXNuMUJ5dGVzLCAoNityTGVuZ3RoK3NMZW5ndGgpLWosIHhtbGRzaWdCeXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgNDAgLSBqLCBqKTsKKworICAgICAgICAgICAgcmV0dXJuIHhtbGRzaWdCeXRlczsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlcnRzIGEgWE1MIFNpZ25hdHVyZSBEU0EgVmFsdWUgdG8gYW4gQVNOLjEgRFNBIHZhbHVlLgorICAgICAqCisgICAgICogVGhlIEpBVkEgSkNFIERTQSBTaWduYXR1cmUgYWxnb3JpdGhtIGNyZWF0ZXMgQVNOLjEgZW5jb2RlZCAocixzKSB2YWx1ZQorICAgICAqIHBhaXJzOyB0aGUgWE1MIFNpZ25hdHVyZSByZXF1aXJlcyB0aGUgY29yZSBCaWdJbnRlZ2VyIHZhbHVlcy4KKyAgICAgKgorICAgICAqIEBwYXJhbSB4bWxkc2lnQnl0ZXMKKyAgICAgKgorICAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAgKiBAc2VlIDxBIEhSRUY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbGRzaWctY29yZS8jZHNhLXNoYTEiPjYuNC4xIERTQTwvQT4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBieXRlW10gY29udmVydFhNTERTSUd0b0FTTjEoYnl0ZSB4bWxkc2lnQnl0ZXNbXSkKKyAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uIHsKKworICAgICAgICBpZiAoeG1sZHNpZ0J5dGVzLmxlbmd0aCAhPSA0MCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJJbnZhbGlkIFhNTERTSUcgZm9ybWF0IG9mIERTQSBzaWduYXR1cmUiKTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBpOworCisgICAgICAgIGZvciAoaSA9IDIwOyAoaSA+IDApICYmICh4bWxkc2lnQnl0ZXNbMjAgLSBpXSA9PSAwKTsgaS0tKTsKKworICAgICAgICBpbnQgaiA9IGk7CisKKyAgICAgICAgaWYgKHhtbGRzaWdCeXRlc1syMCAtIGldIDwgMCkgeworICAgICAgICAgICAgaiArPSAxOworICAgICAgICB9CisKKyAgICAgICAgaW50IGs7CisKKyAgICAgICAgZm9yIChrID0gMjA7IChrID4gMCkgJiYgKHhtbGRzaWdCeXRlc1s0MCAtIGtdID09IDApOyBrLS0pOworCisgICAgICAgIGludCBsID0gazsKKworICAgICAgICBpZiAoeG1sZHNpZ0J5dGVzWzQwIC0ga10gPCAwKSB7CisgICAgICAgICAgICBsICs9IDE7CisgICAgICAgIH0KKworICAgICAgICBieXRlIGFzbjFCeXRlc1tdID0gbmV3IGJ5dGVbNiArIGogKyBsXTsKKworICAgICAgICBhc24xQnl0ZXNbMF0gPSA0ODsKKyAgICAgICAgYXNuMUJ5dGVzWzFdID0gKGJ5dGUpICg0ICsgaiArIGwpOworICAgICAgICBhc24xQnl0ZXNbMl0gPSAyOworICAgICAgICBhc24xQnl0ZXNbM10gPSAoYnl0ZSkgajsKKworICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHhtbGRzaWdCeXRlcywgMjAgLSBpLCBhc24xQnl0ZXMsICg0ICsgaikgLSBpLCBpKTsKKworICAgICAgICBhc24xQnl0ZXNbNCArIGpdID0gMjsKKyAgICAgICAgYXNuMUJ5dGVzWzUgKyBqXSA9IChieXRlKSBsOworCisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoeG1sZHNpZ0J5dGVzLCA0MCAtIGssIGFzbjFCeXRlcywgKDYgKyBqICsgbCkgLSBrLCBrKTsKKworICAgICAgICByZXR1cm4gYXNuMUJ5dGVzOworICAgIH0KKworICAgIHN0YXRpYyBmaW5hbCBjbGFzcyBTSEExd2l0aFJTQSBleHRlbmRzIERPTVNpZ25hdHVyZU1ldGhvZCB7CisgICAgICAgIFNIQTF3aXRoUlNBKEFsZ29yaXRobVBhcmFtZXRlclNwZWMgcGFyYW1zKQorICAgICAgICAgICAgdGhyb3dzIEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24geworICAgICAgICAgICAgc3VwZXIocGFyYW1zKTsKKyAgICAgICAgfQorICAgICAgICBTSEExd2l0aFJTQShFbGVtZW50IGRtRWxlbSkgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworICAgICAgICAgICAgc3VwZXIoZG1FbGVtKTsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgU3RyaW5nIGdldEFsZ29yaXRobSgpIHsKKyAgICAgICAgICAgIHJldHVybiBTaWduYXR1cmVNZXRob2QuUlNBX1NIQTE7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIGdldEpDQUFsZ29yaXRobSgpIHsKKyAgICAgICAgICAgIHJldHVybiAiU0hBMXdpdGhSU0EiOworICAgICAgICB9CisgICAgICAgIGludCBnZXRBbGdvcml0aG1UeXBlKCkgeworICAgICAgICAgICAgcmV0dXJuIFJTQTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBmaW5hbCBjbGFzcyBTSEEyNTZ3aXRoUlNBIGV4dGVuZHMgRE9NU2lnbmF0dXJlTWV0aG9kIHsKKyAgICAgICAgU0hBMjU2d2l0aFJTQShBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIHBhcmFtcykKKyAgICAgICAgICAgIHRocm93cyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIHN1cGVyKHBhcmFtcyk7CisgICAgICAgIH0KKyAgICAgICAgU0hBMjU2d2l0aFJTQShFbGVtZW50IGRtRWxlbSkgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworICAgICAgICAgICAgc3VwZXIoZG1FbGVtKTsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgU3RyaW5nIGdldEFsZ29yaXRobSgpIHsKKyAgICAgICAgICAgIHJldHVybiBSU0FfU0hBMjU2OworICAgICAgICB9CisgICAgICAgIFN0cmluZyBnZXRKQ0FBbGdvcml0aG0oKSB7CisgICAgICAgICAgICByZXR1cm4gIlNIQTI1NndpdGhSU0EiOworICAgICAgICB9CisgICAgICAgIGludCBnZXRBbGdvcml0aG1UeXBlKCkgeworICAgICAgICAgICAgcmV0dXJuIFJTQTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBmaW5hbCBjbGFzcyBTSEEzODR3aXRoUlNBIGV4dGVuZHMgRE9NU2lnbmF0dXJlTWV0aG9kIHsKKyAgICAgICAgU0hBMzg0d2l0aFJTQShBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIHBhcmFtcykKKyAgICAgICAgICAgIHRocm93cyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIHN1cGVyKHBhcmFtcyk7CisgICAgICAgIH0KKyAgICAgICAgU0hBMzg0d2l0aFJTQShFbGVtZW50IGRtRWxlbSkgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworICAgICAgICAgICAgc3VwZXIoZG1FbGVtKTsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgU3RyaW5nIGdldEFsZ29yaXRobSgpIHsKKyAgICAgICAgICAgIHJldHVybiBSU0FfU0hBMzg0OworICAgICAgICB9CisgICAgICAgIFN0cmluZyBnZXRKQ0FBbGdvcml0aG0oKSB7CisgICAgICAgICAgICByZXR1cm4gIlNIQTM4NHdpdGhSU0EiOworICAgICAgICB9CisgICAgICAgIGludCBnZXRBbGdvcml0aG1UeXBlKCkgeworICAgICAgICAgICAgcmV0dXJuIFJTQTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBmaW5hbCBjbGFzcyBTSEE1MTJ3aXRoUlNBIGV4dGVuZHMgRE9NU2lnbmF0dXJlTWV0aG9kIHsKKyAgICAgICAgU0hBNTEyd2l0aFJTQShBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIHBhcmFtcykKKyAgICAgICAgICAgIHRocm93cyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIHN1cGVyKHBhcmFtcyk7CisgICAgICAgIH0KKyAgICAgICAgU0hBNTEyd2l0aFJTQShFbGVtZW50IGRtRWxlbSkgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworICAgICAgICAgICAgc3VwZXIoZG1FbGVtKTsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgU3RyaW5nIGdldEFsZ29yaXRobSgpIHsKKyAgICAgICAgICAgIHJldHVybiBSU0FfU0hBNTEyOworICAgICAgICB9CisgICAgICAgIFN0cmluZyBnZXRKQ0FBbGdvcml0aG0oKSB7CisgICAgICAgICAgICByZXR1cm4gIlNIQTUxMndpdGhSU0EiOworICAgICAgICB9CisgICAgICAgIGludCBnZXRBbGdvcml0aG1UeXBlKCkgeworICAgICAgICAgICAgcmV0dXJuIFJTQTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBmaW5hbCBjbGFzcyBTSEExd2l0aERTQSBleHRlbmRzIERPTVNpZ25hdHVyZU1ldGhvZCB7CisgICAgICAgIFNIQTF3aXRoRFNBKEFsZ29yaXRobVBhcmFtZXRlclNwZWMgcGFyYW1zKQorICAgICAgICAgICAgdGhyb3dzIEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24geworICAgICAgICAgICAgc3VwZXIocGFyYW1zKTsKKyAgICAgICAgfQorICAgICAgICBTSEExd2l0aERTQShFbGVtZW50IGRtRWxlbSkgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworICAgICAgICAgICAgc3VwZXIoZG1FbGVtKTsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgU3RyaW5nIGdldEFsZ29yaXRobSgpIHsKKyAgICAgICAgICAgIHJldHVybiBTaWduYXR1cmVNZXRob2QuRFNBX1NIQTE7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIGdldEpDQUFsZ29yaXRobSgpIHsKKyAgICAgICAgICAgIHJldHVybiAiU0hBMXdpdGhEU0EiOworICAgICAgICB9CisgICAgICAgIGludCBnZXRBbGdvcml0aG1UeXBlKCkgeworICAgICAgICAgICAgcmV0dXJuIERTQTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBmaW5hbCBjbGFzcyBTSEExd2l0aEVDRFNBIGV4dGVuZHMgRE9NU2lnbmF0dXJlTWV0aG9kIHsKKyAgICAgICAgU0hBMXdpdGhFQ0RTQShBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIHBhcmFtcykKKyAgICAgICAgICAgIHRocm93cyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIHN1cGVyKHBhcmFtcyk7CisgICAgICAgIH0KKyAgICAgICAgU0hBMXdpdGhFQ0RTQShFbGVtZW50IGRtRWxlbSkgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworICAgICAgICAgICAgc3VwZXIoZG1FbGVtKTsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgU3RyaW5nIGdldEFsZ29yaXRobSgpIHsKKyAgICAgICAgICAgIHJldHVybiBFQ0RTQV9TSEExOworICAgICAgICB9CisgICAgICAgIFN0cmluZyBnZXRKQ0FBbGdvcml0aG0oKSB7CisgICAgICAgICAgICByZXR1cm4gIlNIQTF3aXRoRUNEU0EiOworICAgICAgICB9CisgICAgICAgIGludCBnZXRBbGdvcml0aG1UeXBlKCkgeworICAgICAgICAgICAgcmV0dXJuIEVDRFNBOworICAgICAgICB9CisgICAgfQorCisgICAgc3RhdGljIGZpbmFsIGNsYXNzIFNIQTI1NndpdGhFQ0RTQSBleHRlbmRzIERPTVNpZ25hdHVyZU1ldGhvZCB7CisgICAgICAgIFNIQTI1NndpdGhFQ0RTQShBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIHBhcmFtcykKKyAgICAgICAgICAgIHRocm93cyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIHN1cGVyKHBhcmFtcyk7CisgICAgICAgIH0KKyAgICAgICAgU0hBMjU2d2l0aEVDRFNBKEVsZW1lbnQgZG1FbGVtKSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgICAgICBzdXBlcihkbUVsZW0pOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0QWxnb3JpdGhtKCkgeworICAgICAgICAgICAgcmV0dXJuIEVDRFNBX1NIQTI1NjsKKyAgICAgICAgfQorICAgICAgICBTdHJpbmcgZ2V0SkNBQWxnb3JpdGhtKCkgeworICAgICAgICAgICAgcmV0dXJuICJTSEEyNTZ3aXRoRUNEU0EiOworICAgICAgICB9CisgICAgICAgIGludCBnZXRBbGdvcml0aG1UeXBlKCkgeworICAgICAgICAgICAgcmV0dXJuIEVDRFNBOworICAgICAgICB9CisgICAgfQorCisgICAgc3RhdGljIGZpbmFsIGNsYXNzIFNIQTM4NHdpdGhFQ0RTQSBleHRlbmRzIERPTVNpZ25hdHVyZU1ldGhvZCB7CisgICAgICAgIFNIQTM4NHdpdGhFQ0RTQShBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIHBhcmFtcykKKyAgICAgICAgICAgIHRocm93cyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIHN1cGVyKHBhcmFtcyk7CisgICAgICAgIH0KKyAgICAgICAgU0hBMzg0d2l0aEVDRFNBKEVsZW1lbnQgZG1FbGVtKSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgICAgICBzdXBlcihkbUVsZW0pOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0QWxnb3JpdGhtKCkgeworICAgICAgICAgICAgcmV0dXJuIEVDRFNBX1NIQTM4NDsKKyAgICAgICAgfQorICAgICAgICBTdHJpbmcgZ2V0SkNBQWxnb3JpdGhtKCkgeworICAgICAgICAgICAgcmV0dXJuICJTSEEzODR3aXRoRUNEU0EiOworICAgICAgICB9CisgICAgICAgIGludCBnZXRBbGdvcml0aG1UeXBlKCkgeworICAgICAgICAgICAgcmV0dXJuIEVDRFNBOworICAgICAgICB9CisgICAgfQorCisgICAgc3RhdGljIGZpbmFsIGNsYXNzIFNIQTUxMndpdGhFQ0RTQSBleHRlbmRzIERPTVNpZ25hdHVyZU1ldGhvZCB7CisgICAgICAgIFNIQTUxMndpdGhFQ0RTQShBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIHBhcmFtcykKKyAgICAgICAgICAgIHRocm93cyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIHN1cGVyKHBhcmFtcyk7CisgICAgICAgIH0KKyAgICAgICAgU0hBNTEyd2l0aEVDRFNBKEVsZW1lbnQgZG1FbGVtKSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgICAgICBzdXBlcihkbUVsZW0pOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0QWxnb3JpdGhtKCkgeworICAgICAgICAgICAgcmV0dXJuIEVDRFNBX1NIQTUxMjsKKyAgICAgICAgfQorICAgICAgICBTdHJpbmcgZ2V0SkNBQWxnb3JpdGhtKCkgeworICAgICAgICAgICAgcmV0dXJuICJTSEE1MTJ3aXRoRUNEU0EiOworICAgICAgICB9CisgICAgICAgIGludCBnZXRBbGdvcml0aG1UeXBlKCkgeworICAgICAgICAgICAgcmV0dXJuIEVDRFNBOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTVNpZ25hdHVyZVByb3BlcnRpZXMuamF2YSBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01TaWduYXR1cmVQcm9wZXJ0aWVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjlmZjA4MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01TaWduYXR1cmVQcm9wZXJ0aWVzLmphdmEKQEAgLTAsMCArMSwxNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tOworCitpbXBvcnQgamF2YXgueG1sLmNyeXB0by4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZG9tLkRPTUNyeXB0b0NvbnRleHQ7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLio7CisKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7CisKKy8qKgorICogRE9NLWJhc2VkIGltcGxlbWVudGF0aW9uIG9mIFNpZ25hdHVyZVByb3BlcnRpZXMuCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgRE9NU2lnbmF0dXJlUHJvcGVydGllcyBleHRlbmRzIERPTVN0cnVjdHVyZSAKKyAgICBpbXBsZW1lbnRzIFNpZ25hdHVyZVByb3BlcnRpZXMgeworIAorICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIGlkOworICAgIHByaXZhdGUgZmluYWwgTGlzdCBwcm9wZXJ0aWVzOworCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIDxjb2RlPkRPTVNpZ25hdHVyZVByb3BlcnRpZXM8L2NvZGU+IGZyb20gdGhlIHNwZWNpZmllZCAKKyAgICAgKiBwYXJhbWV0ZXJzLgorICAgICAqCisgICAgICogQHBhcmFtIHByb3BlcnRpZXMgYSBsaXN0IG9mIG9uZSBvciBtb3JlIHtAbGluayBTaWduYXR1cmVQcm9wZXJ0eX1zLiBUaGUgCisgICAgICogICAgbGlzdCBpcyBkZWZlbnNpdmVseSBjb3BpZWQgdG8gcHJvdGVjdCBhZ2FpbnN0IHN1YnNlcXVlbnQgbW9kaWZpY2F0aW9uLgorICAgICAqIEBwYXJhbSBpZCB0aGUgSWQgKG1heSBiZSA8Y29kZT5udWxsPC9jb2RlPikKKyAgICAgKiBAcmV0dXJuIGEgPGNvZGU+RE9NU2lnbmF0dXJlUHJvcGVydGllczwvY29kZT4KKyAgICAgKiBAdGhyb3dzIENsYXNzQ2FzdEV4Y2VwdGlvbiBpZiA8Y29kZT5wcm9wZXJ0aWVzPC9jb2RlPiBjb250YWlucyBhbnkKKyAgICAgKiAgICBlbnRyaWVzIHRoYXQgYXJlIG5vdCBvZiB0eXBlIHtAbGluayBTaWduYXR1cmVQcm9wZXJ0eX0KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiA8Y29kZT5wcm9wZXJ0aWVzPC9jb2RlPiBpcyBlbXB0eQorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+cHJvcGVydGllczwvY29kZT4KKyAgICAgKi8KKyAgICBwdWJsaWMgRE9NU2lnbmF0dXJlUHJvcGVydGllcyhMaXN0IHByb3BlcnRpZXMsIFN0cmluZyBpZCkgeworCWlmIChwcm9wZXJ0aWVzID09IG51bGwpIHsKKwkgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJwcm9wZXJ0aWVzIGNhbm5vdCBiZSBudWxsIik7CisJfSBlbHNlIGlmIChwcm9wZXJ0aWVzLmlzRW1wdHkoKSkgeworCSAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJwcm9wZXJ0aWVzIGNhbm5vdCBiZSBlbXB0eSIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgTGlzdCBwcm9wc0NvcHkgPSBuZXcgQXJyYXlMaXN0KHByb3BlcnRpZXMpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDAsIHNpemUgPSBwcm9wc0NvcHkuc2l6ZSgpOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKCEocHJvcHNDb3B5LmdldChpKSBpbnN0YW5jZW9mIFNpZ25hdHVyZVByb3BlcnR5KSkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ2xhc3NDYXN0RXhjZXB0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAoInByb3BlcnRpZXNbIitpKyJdIGlzIG5vdCBhIHZhbGlkIHR5cGUiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLnByb3BlcnRpZXMgPSBDb2xsZWN0aW9ucy51bm1vZGlmaWFibGVMaXN0KHByb3BzQ29weSk7CisgICAgICAgIH0KKwl0aGlzLmlkID0gaWQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIDxjb2RlPkRPTVNpZ25hdHVyZVByb3BlcnRpZXM8L2NvZGU+IGZyb20gYW4gZWxlbWVudC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwcm9wc0VsZW0gYSBTaWduYXR1cmVQcm9wZXJ0aWVzIGVsZW1lbnQKKyAgICAgKiBAdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24gaWYgYSBtYXJzaGFsbGluZyBlcnJvciBvY2N1cnMKKyAgICAgKi8KKyAgICBwdWJsaWMgRE9NU2lnbmF0dXJlUHJvcGVydGllcyhFbGVtZW50IHByb3BzRWxlbSkgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb257CisJLy8gdW5tYXJzaGFsIGF0dHJpYnV0ZXMKKyAgICAgICAgaWQgPSBET01VdGlscy5nZXRBdHRyaWJ1dGVWYWx1ZShwcm9wc0VsZW0sICJJZCIpOworCisJTm9kZUxpc3Qgbm9kZXMgPSBwcm9wc0VsZW0uZ2V0Q2hpbGROb2RlcygpOworCWludCBsZW5ndGggPSBub2Rlcy5nZXRMZW5ndGgoKTsKKwlMaXN0IHByb3BlcnRpZXMgPSBuZXcgQXJyYXlMaXN0KGxlbmd0aCk7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworCSAgICBOb2RlIGNoaWxkID0gbm9kZXMuaXRlbShpKTsKKwkgICAgaWYgKGNoaWxkLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5FTEVNRU5UX05PREUpIHsKKwkgICAgICAgIHByb3BlcnRpZXMuYWRkKG5ldyBET01TaWduYXR1cmVQcm9wZXJ0eSgoRWxlbWVudCkgY2hpbGQpKTsKKwkgICAgfQorCX0KKyAgICAgICAgaWYgKHByb3BlcnRpZXMuaXNFbXB0eSgpKSB7CisJICAgIHRocm93IG5ldyBNYXJzaGFsRXhjZXB0aW9uKCJwcm9wZXJ0aWVzIGNhbm5vdCBiZSBlbXB0eSIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5wcm9wZXJ0aWVzID0gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlTGlzdChwcm9wZXJ0aWVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBMaXN0IGdldFByb3BlcnRpZXMoKSB7CisgICAgICAgIHJldHVybiBwcm9wZXJ0aWVzOworICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0SWQoKSB7CisgICAgICAgIHJldHVybiBpZDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBtYXJzaGFsKE5vZGUgcGFyZW50LCBTdHJpbmcgZHNQcmVmaXgsIERPTUNyeXB0b0NvbnRleHQgY29udGV4dCkKKwl0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgIERvY3VtZW50IG93bmVyRG9jID0gRE9NVXRpbHMuZ2V0T3duZXJEb2N1bWVudChwYXJlbnQpOworCisgICAgICAgIEVsZW1lbnQgcHJvcHNFbGVtID0gRE9NVXRpbHMuY3JlYXRlRWxlbWVudAorICAgICAgICAgICAgKG93bmVyRG9jLCAiU2lnbmF0dXJlUHJvcGVydGllcyIsIFhNTFNpZ25hdHVyZS5YTUxOUywgZHNQcmVmaXgpOworCisJLy8gc2V0IGF0dHJpYnV0ZXMKKyAgICAgICAgRE9NVXRpbHMuc2V0QXR0cmlidXRlSUQocHJvcHNFbGVtLCAiSWQiLCBpZCk7CisKKyAgICAgICAgLy8gY3JlYXRlIGFuZCBhcHBlbmQgYW55IHByb3BlcnRpZXMKKwlmb3IgKGludCBpID0gMCwgc2l6ZSA9IHByb3BlcnRpZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgaSsrKSB7CisJICAgIERPTVNpZ25hdHVyZVByb3BlcnR5IHByb3BlcnR5ID0gCisJCShET01TaWduYXR1cmVQcm9wZXJ0eSkgcHJvcGVydGllcy5nZXQoaSk7CisJICAgIHByb3BlcnR5Lm1hcnNoYWwocHJvcHNFbGVtLCBkc1ByZWZpeCwgY29udGV4dCk7CisgICAgICAgIH0KKwkgICAgCisJcGFyZW50LmFwcGVuZENoaWxkKHByb3BzRWxlbSk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvKSB7CisJaWYgKHRoaXMgPT0gbykgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisJfQorCisgICAgICAgIGlmICghKG8gaW5zdGFuY2VvZiBTaWduYXR1cmVQcm9wZXJ0aWVzKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCX0KKyAgICAgICAgU2lnbmF0dXJlUHJvcGVydGllcyBvc3AgPSAoU2lnbmF0dXJlUHJvcGVydGllcykgbzsKKworCWJvb2xlYW4gaWRzRXF1YWwgPSAoaWQgPT0gbnVsbCA/IG9zcC5nZXRJZCgpID09IG51bGwgOgorICAgICAgICAgICAgaWQuZXF1YWxzKG9zcC5nZXRJZCgpKSk7CisKKwlyZXR1cm4gKHByb3BlcnRpZXMuZXF1YWxzKG9zcC5nZXRQcm9wZXJ0aWVzKCkpICYmIGlkc0VxdWFsKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NU2lnbmF0dXJlUHJvcGVydHkuamF2YSBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01TaWduYXR1cmVQcm9wZXJ0eS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZmI2NzUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NU2lnbmF0dXJlUHJvcGVydHkuamF2YQpAQCAtMCwwICsxLDE4NiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2Ugb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb207CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kb20uRE9NQ3J5cHRvQ29udGV4dDsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKKworaW1wb3J0IGphdmEudXRpbC4qOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKKworLyoqCisgKiBET00tYmFzZWQgaW1wbGVtZW50YXRpb24gb2YgU2lnbmF0dXJlUHJvcGVydHkuCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgRE9NU2lnbmF0dXJlUHJvcGVydHkgZXh0ZW5kcyBET01TdHJ1Y3R1cmUgCisgICAgaW1wbGVtZW50cyBTaWduYXR1cmVQcm9wZXJ0eSB7CisgCisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgaWQ7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgdGFyZ2V0OworICAgIHByaXZhdGUgZmluYWwgTGlzdCBjb250ZW50OworCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIDxjb2RlPlNpZ25hdHVyZVByb3BlcnR5PC9jb2RlPiBmcm9tIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVycy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjb250ZW50IGEgbGlzdCBvZiBvbmUgb3IgbW9yZSB7QGxpbmsgWE1MU3RydWN0dXJlfXMuIFRoZSBsaXN0CisgICAgICogICAgaXMgZGVmZW5zaXZlbHkgY29waWVkIHRvIHByb3RlY3QgYWdhaW5zdCBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbi4KKyAgICAgKiBAcGFyYW0gdGFyZ2V0IHRoZSB0YXJnZXQgVVJJCisgICAgICogQHBhcmFtIGlkIHRoZSBJZCAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+KQorICAgICAqIEByZXR1cm4gYSA8Y29kZT5TaWduYXR1cmVQcm9wZXJ0eTwvY29kZT4KKyAgICAgKiBAdGhyb3dzIENsYXNzQ2FzdEV4Y2VwdGlvbiBpZiA8Y29kZT5jb250ZW50PC9jb2RlPiBjb250YWlucyBhbnkKKyAgICAgKiAgICBlbnRyaWVzIHRoYXQgYXJlIG5vdCBvZiB0eXBlIHtAbGluayBYTUxTdHJ1Y3R1cmV9CisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgPGNvZGU+Y29udGVudDwvY29kZT4gaXMgZW1wdHkKKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPmNvbnRlbnQ8L2NvZGU+IG9yIAorICAgICAqICAgIDxjb2RlPnRhcmdldDwvY29kZT4gaXMgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKi8KKyAgICBwdWJsaWMgRE9NU2lnbmF0dXJlUHJvcGVydHkoTGlzdCBjb250ZW50LCBTdHJpbmcgdGFyZ2V0LCBTdHJpbmcgaWQpIHsKKwlpZiAodGFyZ2V0ID09IG51bGwpIHsKKwkgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJ0YXJnZXQgY2Fubm90IGJlIG51bGwiKTsKKwl9IGVsc2UgaWYgKGNvbnRlbnQgPT0gbnVsbCkgeworCSAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oImNvbnRlbnQgY2Fubm90IGJlIG51bGwiKTsKKwl9IGVsc2UgaWYgKGNvbnRlbnQuaXNFbXB0eSgpKSB7CisJICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImNvbnRlbnQgY2Fubm90IGJlIGVtcHR5Iik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBMaXN0IGNvbnRlbnRDb3B5ID0gbmV3IEFycmF5TGlzdChjb250ZW50KTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwLCBzaXplID0gY29udGVudENvcHkuc2l6ZSgpOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKCEoY29udGVudENvcHkuZ2V0KGkpIGluc3RhbmNlb2YgWE1MU3RydWN0dXJlKSkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ2xhc3NDYXN0RXhjZXB0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAoImNvbnRlbnRbIitpKyJdIGlzIG5vdCBhIHZhbGlkIHR5cGUiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLmNvbnRlbnQgPSBDb2xsZWN0aW9ucy51bm1vZGlmaWFibGVMaXN0KGNvbnRlbnRDb3B5KTsKKyAgICAgICAgfQorCXRoaXMudGFyZ2V0ID0gdGFyZ2V0OworCXRoaXMuaWQgPSBpZDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+RE9NU2lnbmF0dXJlUHJvcGVydHk8L2NvZGU+IGZyb20gYW4gZWxlbWVudC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwcm9wRWxlbSBhIFNpZ25hdHVyZVByb3BlcnR5IGVsZW1lbnQKKyAgICAgKi8KKyAgICBwdWJsaWMgRE9NU2lnbmF0dXJlUHJvcGVydHkoRWxlbWVudCBwcm9wRWxlbSkgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworCS8vIHVubWFyc2hhbCBhdHRyaWJ1dGVzCisgICAgICAgIHRhcmdldCA9IERPTVV0aWxzLmdldEF0dHJpYnV0ZVZhbHVlKHByb3BFbGVtLCAiVGFyZ2V0Iik7CisJaWYgKHRhcmdldCA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBNYXJzaGFsRXhjZXB0aW9uKCJ0YXJnZXQgY2Fubm90IGJlIG51bGwiKTsKKwl9CisgICAgICAgIGlkID0gRE9NVXRpbHMuZ2V0QXR0cmlidXRlVmFsdWUocHJvcEVsZW0sICJJZCIpOworCisJTm9kZUxpc3Qgbm9kZXMgPSBwcm9wRWxlbS5nZXRDaGlsZE5vZGVzKCk7CisJaW50IGxlbmd0aCA9IG5vZGVzLmdldExlbmd0aCgpOworCUxpc3QgY29udGVudCA9IG5ldyBBcnJheUxpc3QobGVuZ3RoKTsKKwlmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisJICAgIGNvbnRlbnQuYWRkKG5ldyBqYXZheC54bWwuY3J5cHRvLmRvbS5ET01TdHJ1Y3R1cmUobm9kZXMuaXRlbShpKSkpOworCX0KKyAgICAgICAgaWYgKGNvbnRlbnQuaXNFbXB0eSgpKSB7CisJICAgIHRocm93IG5ldyBNYXJzaGFsRXhjZXB0aW9uKCJjb250ZW50IGNhbm5vdCBiZSBlbXB0eSIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5jb250ZW50ID0gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlTGlzdChjb250ZW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBMaXN0IGdldENvbnRlbnQoKSB7CisgICAgICAgIHJldHVybiBjb250ZW50OworICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0SWQoKSB7CisgICAgICAgIHJldHVybiBpZDsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldFRhcmdldCgpIHsKKyAgICAgICAgcmV0dXJuIHRhcmdldDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBtYXJzaGFsKE5vZGUgcGFyZW50LCBTdHJpbmcgZHNQcmVmaXgsIERPTUNyeXB0b0NvbnRleHQgY29udGV4dCkKKwl0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgIERvY3VtZW50IG93bmVyRG9jID0gRE9NVXRpbHMuZ2V0T3duZXJEb2N1bWVudChwYXJlbnQpOworCisgICAgICAgIEVsZW1lbnQgcHJvcEVsZW0gPSBET01VdGlscy5jcmVhdGVFbGVtZW50CisgICAgICAgICAgICAob3duZXJEb2MsICJTaWduYXR1cmVQcm9wZXJ0eSIsIFhNTFNpZ25hdHVyZS5YTUxOUywgZHNQcmVmaXgpOworCisJLy8gc2V0IGF0dHJpYnV0ZXMKKwlET01VdGlscy5zZXRBdHRyaWJ1dGVJRChwcm9wRWxlbSwgIklkIiwgaWQpOworICAgICAgICBET01VdGlscy5zZXRBdHRyaWJ1dGUocHJvcEVsZW0sICJUYXJnZXQiLCB0YXJnZXQpOworCisgICAgICAgIC8vIGNyZWF0ZSBhbmQgYXBwZW5kIGFueSBlbGVtZW50cyBhbmQgbWl4ZWQgY29udGVudAorCWZvciAoaW50IGkgPSAwLCBzaXplID0gY29udGVudC5zaXplKCk7IGkgPCBzaXplOyBpKyspIHsKKwkgICAgamF2YXgueG1sLmNyeXB0by5kb20uRE9NU3RydWN0dXJlIHByb3BlcnR5ID0gCisJCShqYXZheC54bWwuY3J5cHRvLmRvbS5ET01TdHJ1Y3R1cmUpIGNvbnRlbnQuZ2V0KGkpOworCSAgICBET01VdGlscy5hcHBlbmRDaGlsZChwcm9wRWxlbSwgcHJvcGVydHkuZ2V0Tm9kZSgpKTsKKyAgICAgICAgfQorCSAgICAKKwlwYXJlbnQuYXBwZW5kQ2hpbGQocHJvcEVsZW0pOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3QgbykgeworCWlmICh0aGlzID09IG8pIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCX0KKworCWlmICghKG8gaW5zdGFuY2VvZiBTaWduYXR1cmVQcm9wZXJ0eSkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwl9CisgICAgICAgIFNpZ25hdHVyZVByb3BlcnR5IG9zcCA9IChTaWduYXR1cmVQcm9wZXJ0eSkgbzsKKworCWJvb2xlYW4gaWRzRXF1YWwgPSAoaWQgPT0gbnVsbCA/IG9zcC5nZXRJZCgpID09IG51bGwgOgorICAgICAgICAgICAgaWQuZXF1YWxzKG9zcC5nZXRJZCgpKSk7CisKKwlyZXR1cm4gKGVxdWFsc0NvbnRlbnQob3NwLmdldENvbnRlbnQoKSkgJiYgCisJICAgIHRhcmdldC5lcXVhbHMob3NwLmdldFRhcmdldCgpKSAmJiBpZHNFcXVhbCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIGVxdWFsc0NvbnRlbnQoTGlzdCBvdGhlckNvbnRlbnQpIHsKKwlpbnQgb3NpemUgPSBvdGhlckNvbnRlbnQuc2l6ZSgpOworCWlmIChjb250ZW50LnNpemUoKSAhPSBvc2l6ZSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCX0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBYTUxTdHJ1Y3R1cmUgb3hzID0gKFhNTFN0cnVjdHVyZSkgb3RoZXJDb250ZW50LmdldChpKTsKKyAgICAgICAgICAgIFhNTFN0cnVjdHVyZSB4cyA9IChYTUxTdHJ1Y3R1cmUpIGNvbnRlbnQuZ2V0KGkpOworICAgICAgICAgICAgaWYgKG94cyBpbnN0YW5jZW9mIGphdmF4LnhtbC5jcnlwdG8uZG9tLkRPTVN0cnVjdHVyZSkgeworCQlpZiAoISh4cyBpbnN0YW5jZW9mIGphdmF4LnhtbC5jcnlwdG8uZG9tLkRPTVN0cnVjdHVyZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCQl9CisgICAgICAgICAgICAgICAgTm9kZSBvbm9kZSA9CisgICAgICAgICAgICAgICAgICAgICgoamF2YXgueG1sLmNyeXB0by5kb20uRE9NU3RydWN0dXJlKSBveHMpLmdldE5vZGUoKTsKKwkJTm9kZSBub2RlID0KKyAgICAgICAgICAgICAgICAgICAgKChqYXZheC54bWwuY3J5cHRvLmRvbS5ET01TdHJ1Y3R1cmUpIHhzKS5nZXROb2RlKCk7CisJCWlmICghRE9NVXRpbHMubm9kZXNFcXVhbChub2RlLCBvbm9kZSkpIHsKKwkJICAgIHJldHVybiBmYWxzZTsKKwkJfQorICAgICAgICAgICAgfSBlbHNlIHsKKwkJaWYgKCEoeHMuZXF1YWxzKG94cykpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwkJfQorICAgICAgICAgICAgfQorCX0KKworCXJldHVybiB0cnVlOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01TaWduZWRJbmZvLmphdmEgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NU2lnbmVkSW5mby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxNzJhODMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NU2lnbmVkSW5mby5qYXZhCkBAIC0wLDAgKzEsMjU1IEBACisvKgorICogQ29weXJpZ2h0IDIwMDUtMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tOworCitpbXBvcnQgamF2YXgueG1sLmNyeXB0by4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZG9tLkRPTUNyeXB0b0NvbnRleHQ7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLio7CisKK2ltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlByb3ZpZGVyOworaW1wb3J0IGphdmEudXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOworaW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5CYXNlNjQ7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuVW5zeW5jQnVmZmVyZWRPdXRwdXRTdHJlYW07CisKKy8qKgorICogRE9NLWJhc2VkIGltcGxlbWVudGF0aW9uIG9mIFNpZ25lZEluZm8uCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgRE9NU2lnbmVkSW5mbyBleHRlbmRzIERPTVN0cnVjdHVyZSBpbXBsZW1lbnRzIFNpZ25lZEluZm8geworCisgICAgcHJpdmF0ZSBzdGF0aWMgTG9nZ2VyIGxvZyA9IExvZ2dlci5nZXRMb2dnZXIoIm9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tIik7CisgICAgcHJpdmF0ZSBMaXN0IHJlZmVyZW5jZXM7CisgICAgcHJpdmF0ZSBDYW5vbmljYWxpemF0aW9uTWV0aG9kIGNhbm9uaWNhbGl6YXRpb25NZXRob2Q7CisgICAgcHJpdmF0ZSBTaWduYXR1cmVNZXRob2Qgc2lnbmF0dXJlTWV0aG9kOworICAgIHByaXZhdGUgU3RyaW5nIGlkOworICAgIHByaXZhdGUgRG9jdW1lbnQgb3duZXJEb2M7CisgICAgcHJpdmF0ZSBFbGVtZW50IGxvY2FsU2lFbGVtOworICAgIHByaXZhdGUgSW5wdXRTdHJlYW0gY2Fub25EYXRhOworCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIDxjb2RlPkRPTVNpZ25lZEluZm88L2NvZGU+IGZyb20gdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzLiBVc2UKKyAgICAgKiB0aGlzIGNvbnN0cnVjdG9yIHdoZW4gdGhlIDxjb2RlPklkPC9jb2RlPiBpcyBub3Qgc3BlY2lmaWVkLgorICAgICAqCisgICAgICogQHBhcmFtIGNtIHRoZSBjYW5vbmljYWxpemF0aW9uIG1ldGhvZAorICAgICAqIEBwYXJhbSBzbSB0aGUgc2lnbmF0dXJlIG1ldGhvZAorICAgICAqIEBwYXJhbSByZWZlcmVuY2VzIHRoZSBsaXN0IG9mIHJlZmVyZW5jZXMuIFRoZSBsaXN0IGlzIGNvcGllZC4KKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmCisgICAgICogICAgPGNvZGU+Y208L2NvZGU+LCA8Y29kZT5zbTwvY29kZT4sIG9yIDxjb2RlPnJlZmVyZW5jZXM8L2NvZGU+IGlzIAorICAgICAqICAgIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgPGNvZGU+cmVmZXJlbmNlczwvY29kZT4gaXMgZW1wdHkKKyAgICAgKiBAdGhyb3dzIENsYXNzQ2FzdEV4Y2VwdGlvbiBpZiBhbnkgb2YgdGhlIHJlZmVyZW5jZXMgYXJlIG5vdCBvZgorICAgICAqICAgIHR5cGUgPGNvZGU+UmVmZXJlbmNlPC9jb2RlPgorICAgICAqLworICAgIHB1YmxpYyBET01TaWduZWRJbmZvKENhbm9uaWNhbGl6YXRpb25NZXRob2QgY20sIFNpZ25hdHVyZU1ldGhvZCBzbSwgCisJTGlzdCByZWZlcmVuY2VzKSB7CisgICAgICAgIGlmIChjbSA9PSBudWxsIHx8IHNtID09IG51bGwgfHwgcmVmZXJlbmNlcyA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLmNhbm9uaWNhbGl6YXRpb25NZXRob2QgPSBjbTsKKyAgICAgICAgdGhpcy5zaWduYXR1cmVNZXRob2QgPSBzbTsKKwl0aGlzLnJlZmVyZW5jZXMgPSBDb2xsZWN0aW9ucy51bm1vZGlmaWFibGVMaXN0CisJICAgIChuZXcgQXJyYXlMaXN0KHJlZmVyZW5jZXMpKTsKKwlpZiAodGhpcy5yZWZlcmVuY2VzLmlzRW1wdHkoKSkgeworCSAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJsaXN0IG9mIHJlZmVyZW5jZXMgbXVzdCAiICsKKwkgICAgICAgICJjb250YWluIGF0IGxlYXN0IG9uZSBlbnRyeSIpOworCX0KKwlmb3IgKGludCBpID0gMCwgc2l6ZSA9IHRoaXMucmVmZXJlbmNlcy5zaXplKCk7IGkgPCBzaXplOyBpKyspIHsKKwkgICAgT2JqZWN0IG9iaiA9IHRoaXMucmVmZXJlbmNlcy5nZXQoaSk7CisJICAgIGlmICghKG9iaiBpbnN0YW5jZW9mIFJlZmVyZW5jZSkpIHsKKwkJdGhyb3cgbmV3IENsYXNzQ2FzdEV4Y2VwdGlvbigibGlzdCBvZiByZWZlcmVuY2VzIGNvbnRhaW5zICIgKworCQkgICAgImFuIGlsbGVnYWwgdHlwZSIpOworCSAgICB9CisJfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSA8Y29kZT5ET01TaWduZWRJbmZvPC9jb2RlPiBmcm9tIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVycy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjbSB0aGUgY2Fub25pY2FsaXphdGlvbiBtZXRob2QKKyAgICAgKiBAcGFyYW0gc20gdGhlIHNpZ25hdHVyZSBtZXRob2QKKyAgICAgKiBAcGFyYW0gcmVmZXJlbmNlcyB0aGUgbGlzdCBvZiByZWZlcmVuY2VzLiBUaGUgbGlzdCBpcyBjb3BpZWQuCisgICAgICogQHBhcmFtIGlkIGFuIG9wdGlvbmFsIGlkZW50aWZlciB0aGF0IHdpbGwgYWxsb3cgdGhpcworICAgICAqICAgIDxjb2RlPlNpZ25lZEluZm88L2NvZGU+IHRvIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgc2lnbmF0dXJlcyBhbmQKKyAgICAgKiAgICBvYmplY3RzCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5jbTwvY29kZT4sIDxjb2RlPnNtPC9jb2RlPiwKKyAgICAgKiAgICBvciA8Y29kZT5yZWZlcmVuY2VzPC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIDxjb2RlPnJlZmVyZW5jZXM8L2NvZGU+IGlzIGVtcHR5CisgICAgICogQHRocm93cyBDbGFzc0Nhc3RFeGNlcHRpb24gaWYgYW55IG9mIHRoZSByZWZlcmVuY2VzIGFyZSBub3Qgb2YKKyAgICAgKiAgICB0eXBlIDxjb2RlPlJlZmVyZW5jZTwvY29kZT4KKyAgICAgKi8KKyAgICBwdWJsaWMgRE9NU2lnbmVkSW5mbyhDYW5vbmljYWxpemF0aW9uTWV0aG9kIGNtLCBTaWduYXR1cmVNZXRob2Qgc20sIAorCUxpc3QgcmVmZXJlbmNlcywgU3RyaW5nIGlkKSB7CisgICAgICAgIHRoaXMoY20sIHNtLCByZWZlcmVuY2VzKTsKKyAgICAgICAgdGhpcy5pZCA9IGlkOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSA8Y29kZT5ET01TaWduZWRJbmZvPC9jb2RlPiBmcm9tIGFuIGVsZW1lbnQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc2lFbGVtIGEgU2lnbmVkSW5mbyBlbGVtZW50CisgICAgICovCisgICAgcHVibGljIERPTVNpZ25lZEluZm8oRWxlbWVudCBzaUVsZW0sIFhNTENyeXB0b0NvbnRleHQgY29udGV4dCwKKwlQcm92aWRlciBwcm92aWRlcikgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworCWxvY2FsU2lFbGVtID0gc2lFbGVtOworCW93bmVyRG9jID0gc2lFbGVtLmdldE93bmVyRG9jdW1lbnQoKTsKKworICAgICAgICAvLyBnZXQgSWQgYXR0cmlidXRlLCBpZiBzcGVjaWZpZWQKKyAgICAgICAgaWQgPSBET01VdGlscy5nZXRBdHRyaWJ1dGVWYWx1ZShzaUVsZW0sICJJZCIpOworCisgICAgICAgIC8vIHVubWFyc2hhbCBDYW5vbmljYWxpemF0aW9uTWV0aG9kCisJRWxlbWVudCBjbUVsZW0gPSBET01VdGlscy5nZXRGaXJzdENoaWxkRWxlbWVudChzaUVsZW0pOworCWNhbm9uaWNhbGl6YXRpb25NZXRob2QgPSBuZXcgRE9NQ2Fub25pY2FsaXphdGlvbk1ldGhvZAorCSAgICAoY21FbGVtLCBjb250ZXh0LCBwcm92aWRlcik7CisKKyAgICAgICAgLy8gdW5tYXJzaGFsIFNpZ25hdHVyZU1ldGhvZAorCUVsZW1lbnQgc21FbGVtID0gRE9NVXRpbHMuZ2V0TmV4dFNpYmxpbmdFbGVtZW50KGNtRWxlbSk7CisJc2lnbmF0dXJlTWV0aG9kID0gRE9NU2lnbmF0dXJlTWV0aG9kLnVubWFyc2hhbChzbUVsZW0pOworCisJLy8gdW5tYXJzaGFsIFJlZmVyZW5jZXMKKwlBcnJheUxpc3QgcmVmTGlzdCA9IG5ldyBBcnJheUxpc3QoNSk7CisJRWxlbWVudCByZWZFbGVtID0gRE9NVXRpbHMuZ2V0TmV4dFNpYmxpbmdFbGVtZW50KHNtRWxlbSk7CisJd2hpbGUgKHJlZkVsZW0gIT0gbnVsbCkgeworCSAgICByZWZMaXN0LmFkZChuZXcgRE9NUmVmZXJlbmNlKHJlZkVsZW0sIGNvbnRleHQsIHByb3ZpZGVyKSk7CisJICAgIHJlZkVsZW0gPSBET01VdGlscy5nZXROZXh0U2libGluZ0VsZW1lbnQocmVmRWxlbSk7CisJfQorCXJlZmVyZW5jZXMgPSBDb2xsZWN0aW9ucy51bm1vZGlmaWFibGVMaXN0KHJlZkxpc3QpOworICAgIH0KKworICAgIHB1YmxpYyBDYW5vbmljYWxpemF0aW9uTWV0aG9kIGdldENhbm9uaWNhbGl6YXRpb25NZXRob2QoKSB7CisgICAgICAgIHJldHVybiBjYW5vbmljYWxpemF0aW9uTWV0aG9kOworICAgIH0KKworICAgIHB1YmxpYyBTaWduYXR1cmVNZXRob2QgZ2V0U2lnbmF0dXJlTWV0aG9kKCkgeworICAgICAgICByZXR1cm4gc2lnbmF0dXJlTWV0aG9kOworICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0SWQoKSB7CisgICAgICAgIHJldHVybiBpZDsKKyAgICB9CisKKyAgICBwdWJsaWMgTGlzdCBnZXRSZWZlcmVuY2VzKCkgeworCXJldHVybiByZWZlcmVuY2VzOworICAgIH0KKworICAgIHB1YmxpYyBJbnB1dFN0cmVhbSBnZXRDYW5vbmljYWxpemVkRGF0YSgpIHsKKwlyZXR1cm4gY2Fub25EYXRhOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGNhbm9uaWNhbGl6ZShYTUxDcnlwdG9Db250ZXh0IGNvbnRleHQsQnl0ZUFycmF5T3V0cHV0U3RyZWFtIGJvcykKKwl0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKworCWlmIChjb250ZXh0ID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigiY29udGV4dCBjYW5ub3QgYmUgbnVsbCIpOworCX0KKworCU91dHB1dFN0cmVhbSBvcyA9IG5ldyBVbnN5bmNCdWZmZXJlZE91dHB1dFN0cmVhbShib3MpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgb3MuY2xvc2UoKTsKKyAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgLy8gSW1wb3NzaWJsZQorICAgICAgICB9CisKKwlET01TdWJUcmVlRGF0YSBzdWJUcmVlID0gbmV3IERPTVN1YlRyZWVEYXRhKGxvY2FsU2lFbGVtLCB0cnVlKTsKKworCXRyeSB7CisJICAgICgoRE9NQ2Fub25pY2FsaXphdGlvbk1ldGhvZCkgCisJCWNhbm9uaWNhbGl6YXRpb25NZXRob2QpLmNhbm9uaWNhbGl6ZShzdWJUcmVlLCBjb250ZXh0LCBvcyk7CisJfSBjYXRjaCAoVHJhbnNmb3JtRXhjZXB0aW9uIHRlKSB7CisJICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24odGUpOworCX0KKworCWJ5dGVbXSBzaWduZWRJbmZvQnl0ZXMgPSBib3MudG9CeXRlQXJyYXkoKTsKKworICAgICAgICAvLyB0aGlzIHdob2xlIGJsb2NrIHNob3VsZCBvbmx5IGJlIGRvbmUgaWYgbG9nZ2luZyBpcyBlbmFibGVkCisJaWYgKGxvZy5pc0xvZ2dhYmxlKExldmVsLkZJTkUpKSB7CisgICAgICAgICAgICBsb2cubG9nKExldmVsLkZJTkUsICJDYW5vbmljYWxpemVkIFNpZ25lZEluZm86Iik7IAorICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHNiID0gbmV3IFN0cmluZ0J1ZmZlcihzaWduZWRJbmZvQnl0ZXMubGVuZ3RoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2lnbmVkSW5mb0J5dGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgc2IuYXBwZW5kKChjaGFyKSBzaWduZWRJbmZvQnl0ZXNbaV0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbG9nLmxvZyhMZXZlbC5GSU5FLCBzYi50b1N0cmluZygpKTsKKwkgICAgbG9nLmxvZyhMZXZlbC5GSU5FLCAiRGF0YSB0byBiZSBzaWduZWQvdmVyaWZpZWQ6IgorICAgICAgICAgICAgICAgICsgQmFzZTY0LmVuY29kZShzaWduZWRJbmZvQnl0ZXMpKTsKKwl9CisKKwl0aGlzLmNhbm9uRGF0YSA9IG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShzaWduZWRJbmZvQnl0ZXMpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG1hcnNoYWwoTm9kZSBwYXJlbnQsIFN0cmluZyBkc1ByZWZpeCwgRE9NQ3J5cHRvQ29udGV4dCBjb250ZXh0KQorCXRocm93cyBNYXJzaGFsRXhjZXB0aW9uIHsKKyAgICAgICAgb3duZXJEb2MgPSBET01VdGlscy5nZXRPd25lckRvY3VtZW50KHBhcmVudCk7CisKKwlFbGVtZW50IHNpRWxlbSA9IERPTVV0aWxzLmNyZWF0ZUVsZW1lbnQKKwkgICAgKG93bmVyRG9jLCAiU2lnbmVkSW5mbyIsIFhNTFNpZ25hdHVyZS5YTUxOUywgZHNQcmVmaXgpOworCisJLy8gY3JlYXRlIGFuZCBhcHBlbmQgQ2Fub25pY2FsaXphdGlvbk1ldGhvZCBlbGVtZW50CisJRE9NQ2Fub25pY2FsaXphdGlvbk1ldGhvZCBkY20gPSAKKwkgICAgKERPTUNhbm9uaWNhbGl6YXRpb25NZXRob2QpIGNhbm9uaWNhbGl6YXRpb25NZXRob2Q7CisJZGNtLm1hcnNoYWwoc2lFbGVtLCBkc1ByZWZpeCwgY29udGV4dCk7IAorCisJLy8gY3JlYXRlIGFuZCBhcHBlbmQgU2lnbmF0dXJlTWV0aG9kIGVsZW1lbnQKKwkoKERPTVN0cnVjdHVyZSkgc2lnbmF0dXJlTWV0aG9kKS5tYXJzaGFsKHNpRWxlbSwgZHNQcmVmaXgsIGNvbnRleHQpOworCisJLy8gY3JlYXRlIGFuZCBhcHBlbmQgUmVmZXJlbmNlIGVsZW1lbnRzCisJZm9yIChpbnQgaSA9IDAsIHNpemUgPSByZWZlcmVuY2VzLnNpemUoKTsgaSA8IHNpemU7IGkrKykgeworCSAgICBET01SZWZlcmVuY2UgcmVmZXJlbmNlID0gKERPTVJlZmVyZW5jZSkgcmVmZXJlbmNlcy5nZXQoaSk7CisJICAgIHJlZmVyZW5jZS5tYXJzaGFsKHNpRWxlbSwgZHNQcmVmaXgsIGNvbnRleHQpOworCX0KKworCS8vIGFwcGVuZCBJZCBhdHRyaWJ1dGUKKyAgICAgICAgRE9NVXRpbHMuc2V0QXR0cmlidXRlSUQoc2lFbGVtLCAiSWQiLCBpZCk7CisJICAgIAorCXBhcmVudC5hcHBlbmRDaGlsZChzaUVsZW0pOworCWxvY2FsU2lFbGVtID0gc2lFbGVtOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3QgbykgeworCWlmICh0aGlzID09IG8pIHsKKwkgICAgcmV0dXJuIHRydWU7CisJfQorCisJaWYgKCEobyBpbnN0YW5jZW9mIFNpZ25lZEluZm8pKSB7CisJICAgIHJldHVybiBmYWxzZTsKKwl9CisJU2lnbmVkSW5mbyBvc2kgPSAoU2lnbmVkSW5mbykgbzsKKworCWJvb2xlYW4gaWRFcXVhbCA9IChpZCA9PSBudWxsID8gb3NpLmdldElkKCkgPT0gbnVsbCA6IAorCSAgICBpZC5lcXVhbHMob3NpLmdldElkKCkpKTsKKworCXJldHVybiAoY2Fub25pY2FsaXphdGlvbk1ldGhvZC5lcXVhbHMob3NpLmdldENhbm9uaWNhbGl6YXRpb25NZXRob2QoKSkgCisJICAgICYmIHNpZ25hdHVyZU1ldGhvZC5lcXVhbHMob3NpLmdldFNpZ25hdHVyZU1ldGhvZCgpKSAmJiAKKwkgICAgcmVmZXJlbmNlcy5lcXVhbHMob3NpLmdldFJlZmVyZW5jZXMoKSkgJiYgaWRFcXVhbCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTVN0cnVjdHVyZS5qYXZhIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTVN0cnVjdHVyZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0NzMxNmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NU3RydWN0dXJlLmphdmEKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2Ugb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb207CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLk1hcnNoYWxFeGNlcHRpb247CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5YTUxTdHJ1Y3R1cmU7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kb20uRE9NQ3J5cHRvQ29udGV4dDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworCisvKioKKyAqIERPTS1iYXNlZCBhYnN0cmFjdCBpbXBsZW1lbnRhdGlvbiBvZiBYTUxTdHJ1Y3R1cmUuCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICovCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgRE9NU3RydWN0dXJlIGltcGxlbWVudHMgWE1MU3RydWN0dXJlIHsKKworICAgIHB1YmxpYyBmaW5hbCBib29sZWFuIGlzRmVhdHVyZVN1cHBvcnRlZChTdHJpbmcgZmVhdHVyZSkgeworCWlmIChmZWF0dXJlID09IG51bGwpIHsKKwkgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCk7CisJfSBlbHNlIHsKKwkgICAgcmV0dXJuIGZhbHNlOworCX0KKyAgICB9CisKKyAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBtYXJzaGFsKE5vZGUgcGFyZW50LCBTdHJpbmcgZHNQcmVmaXgsIAorCURPTUNyeXB0b0NvbnRleHQgY29udGV4dCkgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb247Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NU3ViVHJlZURhdGEuamF2YSBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01TdWJUcmVlRGF0YS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzMzJiMGUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NU3ViVHJlZURhdGEuamF2YQpAQCAtMCwwICsxLDE2NSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA2IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2Ugb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb207CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLk5vZGVTZXREYXRhOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0SXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLk5vU3VjaEVsZW1lbnRFeGNlcHRpb247CitpbXBvcnQgb3JnLnczYy5kb20uTmFtZWROb2RlTWFwOworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CisKKy8qKgorICogVGhpcyBpcyBhIHN1YnR5cGUgb2YgTm9kZVNldERhdGEgdGhhdCByZXByZXNlbnRzIGEgZGVyZWZlcmVuY2VkCisgKiBzYW1lLWRvY3VtZW50IFVSSSBhcyB0aGUgcm9vdCBvZiBhIHN1YmRvY3VtZW50LiBUaGUgbWFpbiByZWFzb24gaXMKKyAqIGZvciBlZmZpY2llbmN5IGFuZCBwZXJmb3JtYW5jZSwgYXMgc29tZSB0cmFuc2Zvcm1zIGNhbiBvcGVyYXRlCisgKiBkaXJlY3RseSBvbiB0aGUgc3ViZG9jdW1lbnQgYW5kIHRoZXJlIGlzIG5vIG5lZWQgdG8gY29udmVydCBpdAorICogZmlyc3QgdG8gYW4gWFBhdGggbm9kZS1zZXQuCisgKi8KK3B1YmxpYyBjbGFzcyBET01TdWJUcmVlRGF0YSBpbXBsZW1lbnRzIE5vZGVTZXREYXRhIHsKKworICAgIHByaXZhdGUgYm9vbGVhbiBleGNsdWRlQ29tbWVudHM7CisgICAgcHJpdmF0ZSBJdGVyYXRvciBuaTsKKyAgICBwcml2YXRlIE5vZGUgcm9vdDsKKworICAgIHB1YmxpYyBET01TdWJUcmVlRGF0YShOb2RlIHJvb3QsIGJvb2xlYW4gZXhjbHVkZUNvbW1lbnRzKSB7CisJdGhpcy5yb290ID0gcm9vdDsKKwl0aGlzLm5pID0gbmV3IERlbGF5ZWROb2RlSXRlcmF0b3Iocm9vdCwgZXhjbHVkZUNvbW1lbnRzKTsKKwl0aGlzLmV4Y2x1ZGVDb21tZW50cyA9IGV4Y2x1ZGVDb21tZW50czsKKyAgICB9CisKKyAgICBwdWJsaWMgSXRlcmF0b3IgaXRlcmF0b3IoKSB7CisJcmV0dXJuIG5pOworICAgIH0KKworICAgIHB1YmxpYyBOb2RlIGdldFJvb3QoKSB7CisJcmV0dXJuIHJvb3Q7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gZXhjbHVkZUNvbW1lbnRzKCkgeworCXJldHVybiBleGNsdWRlQ29tbWVudHM7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBpcyBhbiBJdGVyYXRvciB0aGF0IGNvbnRhaW5zIGEgYmFja2luZyBub2RlLXNldCB0aGF0IGlzCisgICAgICogbm90IHBvcHVsYXRlZCB1bnRpbCB0aGUgY2FsbGVyIGZpcnN0IGF0dGVtcHRzIHRvIGFkdmFuY2UgdGhlIGl0ZXJhdG9yLgorICAgICAqLworICAgIHN0YXRpYyBjbGFzcyBEZWxheWVkTm9kZUl0ZXJhdG9yIGltcGxlbWVudHMgSXRlcmF0b3IgeworICAgIAlwcml2YXRlIE5vZGUgcm9vdDsKKwlwcml2YXRlIExpc3Qgbm9kZVNldDsKKwlwcml2YXRlIExpc3RJdGVyYXRvciBsaTsKKwlwcml2YXRlIGJvb2xlYW4gd2l0aENvbW1lbnRzOworCisJRGVsYXllZE5vZGVJdGVyYXRvcihOb2RlIHJvb3QsIGJvb2xlYW4gZXhjbHVkZUNvbW1lbnRzKSB7CisgICAgICAgICAgICB0aGlzLnJvb3QgPSByb290OworICAgICAgICAgICAgdGhpcy53aXRoQ29tbWVudHMgPSAhZXhjbHVkZUNvbW1lbnRzOworCX0KKworICAgICAgICBwdWJsaWMgYm9vbGVhbiBoYXNOZXh0KCkgeworICAgICAgICAgICAgaWYgKG5vZGVTZXQgPT0gbnVsbCkgeworCQlub2RlU2V0ID0gZGVyZWZlcmVuY2VTYW1lRG9jdW1lbnRVUkkocm9vdCk7CisJCWxpID0gbm9kZVNldC5saXN0SXRlcmF0b3IoKTsKKyAgICAgICAgICAgIH0KKwkgICAgcmV0dXJuIGxpLmhhc05leHQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBPYmplY3QgbmV4dCgpIHsKKyAgICAgICAgICAgIGlmIChub2RlU2V0ID09IG51bGwpIHsKKwkJbm9kZVNldCA9IGRlcmVmZXJlbmNlU2FtZURvY3VtZW50VVJJKHJvb3QpOworCQlsaSA9IG5vZGVTZXQubGlzdEl0ZXJhdG9yKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobGkuaGFzTmV4dCgpKSB7CisJCXJldHVybiAoTm9kZSkgbGkubmV4dCgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm9TdWNoRWxlbWVudEV4Y2VwdGlvbigpOworCSAgICB9CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCByZW1vdmUoKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsKKyAgICAgICAgfQorCisJLyoqCisgICAgICAgICAqIERlcmVmZXJlbmNlcyBhIHNhbWUtZG9jdW1lbnQgVVJJIGZyYWdtZW50LgorCSAqCisJICogQHBhcmFtIG5vZGUgdGhlIG5vZGUgKGRvY3VtZW50IG9yIGVsZW1lbnQpIHJlZmVyZW5jZWQgYnkgdGhlCisgICAgICAgICAqCSBVUkkgZnJhZ21lbnQuIElmIG51bGwsIHJldHVybnMgYW4gZW1wdHkgc2V0LgorCSAqIEByZXR1cm4gYSBzZXQgb2Ygbm9kZXMgKG1pbnVzIGFueSBjb21tZW50IG5vZGVzKQorCSAqLworCXByaXZhdGUgTGlzdCBkZXJlZmVyZW5jZVNhbWVEb2N1bWVudFVSSShOb2RlIG5vZGUpIHsKKyAgICAgICAgICAgIExpc3Qgbm9kZVNldCA9IG5ldyBBcnJheUxpc3QoKTsKKyAgICAgICAgICAgIGlmIChub2RlICE9IG51bGwpIHsKKwkJbm9kZVNldE1pbnVzQ29tbWVudE5vZGVzKG5vZGUsIG5vZGVTZXQsIG51bGwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG5vZGVTZXQ7CisJfQorCisJLyoqCisgICAgICAgICAqIFJlY3Vyc2l2ZWx5IHRyYXZlcnNlcyB0aGUgc3VidHJlZSwgYW5kIHJldHVybnMgYW4gWFBhdGgtZXF1aXZhbGVudAorCSAqIG5vZGUtc2V0IG9mIGFsbCBub2RlcyB0cmF2ZXJzZWQsIGV4Y2x1ZGluZyBhbnkgY29tbWVudCBub2RlcywKKwkgKiBpZiBzcGVjaWZpZWQuCisJICoKKyAgICAgICAgICogQHBhcmFtIG5vZGUgdGhlIG5vZGUgdG8gdHJhdmVyc2UKKwkgKiBAcGFyYW0gbm9kZVNldCB0aGUgc2V0IG9mIG5vZGVzIHRyYXZlcnNlZCBzbyBmYXIKKwkgKiBAcGFyYW0gdGhlIHByZXZpb3VzIHNpYmxpbmcgbm9kZQorCSAqLworCXByaXZhdGUgdm9pZCBub2RlU2V0TWludXNDb21tZW50Tm9kZXMoTm9kZSBub2RlLCBMaXN0IG5vZGVTZXQsCisgICAgICAgICAgICBOb2RlIHByZXZTaWJsaW5nKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUuZ2V0Tm9kZVR5cGUoKSkgeworCQljYXNlIE5vZGUuRUxFTUVOVF9OT0RFIDoKKyAgICAgICAgICAgICAgICAgICAgTmFtZWROb2RlTWFwIGF0dHJzID0gbm9kZS5nZXRBdHRyaWJ1dGVzKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChhdHRycyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMCwgbGVuID0gYXR0cnMuZ2V0TGVuZ3RoKCk7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVTZXQuYWRkKGF0dHJzLml0ZW0oaSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG5vZGVTZXQuYWRkKG5vZGUpOworCQljYXNlIE5vZGUuRE9DVU1FTlRfTk9ERSA6CisgICAgICAgICAgICAgICAgICAgIE5vZGUgcFNpYmxpbmcgPSBudWxsOworICAgICAgICAgICAgICAgICAgICBmb3IgKE5vZGUgY2hpbGQgPSBub2RlLmdldEZpcnN0Q2hpbGQoKTsgY2hpbGQgIT0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkID0gY2hpbGQuZ2V0TmV4dFNpYmxpbmcoKSkgeworCQkJbm9kZVNldE1pbnVzQ29tbWVudE5vZGVzKGNoaWxkLCBub2RlU2V0LCBwU2libGluZyk7CisgICAgICAgICAgICAgICAgICAgICAgICBwU2libGluZyA9IGNoaWxkOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCQljYXNlIE5vZGUuVEVYVF9OT0RFIDoKKwkJY2FzZSBOb2RlLkNEQVRBX1NFQ1RJT05fTk9ERToKKyAgICAgICAgICAgICAgICAgICAgLy8gZW11bGF0ZSBYUGF0aCB3aGljaCBvbmx5IHJldHVybnMgdGhlIGZpcnN0IG5vZGUgaW4KKyAgICAgICAgICAgICAgICAgICAgLy8gY29udGlndW91cyB0ZXh0L2NkYXRhIG5vZGVzCisgICAgICAgICAgICAgICAgICAgIGlmIChwcmV2U2libGluZyAhPSBudWxsICYmCisgICAgICAgICAgICAgICAgICAgICAgICAocHJldlNpYmxpbmcuZ2V0Tm9kZVR5cGUoKSA9PSBOb2RlLlRFWFRfTk9ERSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZTaWJsaW5nLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5DREFUQV9TRUNUSU9OX05PREUpKXsJCQlyZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKwkJY2FzZSBOb2RlLlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSA6CisgICAgICAgICAgICAgICAgICAgIG5vZGVTZXQuYWRkKG5vZGUpOworCSAgICAgICAgICAgIGJyZWFrOworCQljYXNlIE5vZGUuQ09NTUVOVF9OT0RFOgorCQkgICAgaWYgKHdpdGhDb21tZW50cykgeyAKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVTZXQuYWRkKG5vZGUpOworCQkgICAgfQorICAgICAgICAgICAgfQorCX0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NVHJhbnNmb3JtLmphdmEgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NVHJhbnNmb3JtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJhZDQwYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01UcmFuc2Zvcm0uamF2YQpAQCAtMCwwICsxLDE4NyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbTsKKworaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlByb3ZpZGVyOworaW1wb3J0IGphdmEuc2VjdXJpdHkuc3BlYy5BbGdvcml0aG1QYXJhbWV0ZXJTcGVjOworCitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworCitpbXBvcnQgamF2YXgueG1sLmNyeXB0by4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZG9tLkRPTUNyeXB0b0NvbnRleHQ7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLmRvbS5ET01TaWduQ29udGV4dDsKKworLyoqCisgKiBET00tYmFzZWQgYWJzdHJhY3QgaW1wbGVtZW50YXRpb24gb2YgVHJhbnNmb3JtLgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqLworcHVibGljIGNsYXNzIERPTVRyYW5zZm9ybSBleHRlbmRzIERPTVN0cnVjdHVyZSBpbXBsZW1lbnRzIFRyYW5zZm9ybSB7CisKKyAgICBwcm90ZWN0ZWQgVHJhbnNmb3JtU2VydmljZSBzcGk7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+RE9NVHJhbnNmb3JtPC9jb2RlPi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzcGkgdGhlIFRyYW5zZm9ybVNlcnZpY2UKKyAgICAgKi8KKyAgICBwdWJsaWMgRE9NVHJhbnNmb3JtKFRyYW5zZm9ybVNlcnZpY2Ugc3BpKSB7CisJdGhpcy5zcGkgPSBzcGk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIDxjb2RlPkRPTVRyYW5zZm9ybTwvY29kZT4gZnJvbSBhbiBlbGVtZW50LiBUaGlzIGNvbnN0cnVjdG9yCisgICAgICogaW52b2tlcyB0aGUgYWJzdHJhY3Qge0BsaW5rICN1bm1hcnNoYWxQYXJhbXMgdW5tYXJzaGFsUGFyYW1zfSBtZXRob2QgdG8KKyAgICAgKiB1bm1hcnNoYWwgYW55IGFsZ29yaXRobS1zcGVjaWZpYyBpbnB1dCBwYXJhbWV0ZXJzLgorICAgICAqCisgICAgICogQHBhcmFtIHRyYW5zRWxlbSBhIFRyYW5zZm9ybSBlbGVtZW50CisgICAgICovCisgICAgcHVibGljIERPTVRyYW5zZm9ybShFbGVtZW50IHRyYW5zRWxlbSwgWE1MQ3J5cHRvQ29udGV4dCBjb250ZXh0LAorCVByb3ZpZGVyIHByb3ZpZGVyKSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBhbGdvcml0aG0gPSBET01VdGlscy5nZXRBdHRyaWJ1dGVWYWx1ZSh0cmFuc0VsZW0sICJBbGdvcml0aG0iKTsKKwl0cnkgeworCSAgICBzcGkgPSBUcmFuc2Zvcm1TZXJ2aWNlLmdldEluc3RhbmNlKGFsZ29yaXRobSwgIkRPTSIpOworCX0gY2F0Y2ggKE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiBlMSkgeworCSAgICB0cnkgeworCSAgICAgICAgc3BpID0gVHJhbnNmb3JtU2VydmljZS5nZXRJbnN0YW5jZShhbGdvcml0aG0sICJET00iLCBwcm92aWRlcik7CisJICAgIH0gY2F0Y2ggKE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiBlMikgeworCSAgICAgICAgdGhyb3cgbmV3IE1hcnNoYWxFeGNlcHRpb24oZTIpOworCSAgICB9CisJfQorCXRyeSB7CisgICAgICAgICAgICBzcGkuaW5pdChuZXcgamF2YXgueG1sLmNyeXB0by5kb20uRE9NU3RydWN0dXJlKHRyYW5zRWxlbSksIGNvbnRleHQpOworCX0gY2F0Y2ggKEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24gaWFwZSkgeworCSAgICB0aHJvdyBuZXcgTWFyc2hhbEV4Y2VwdGlvbihpYXBlKTsKKwl9CisgICAgfQorCisgICAgcHVibGljIGZpbmFsIEFsZ29yaXRobVBhcmFtZXRlclNwZWMgZ2V0UGFyYW1ldGVyU3BlYygpIHsKKwlyZXR1cm4gc3BpLmdldFBhcmFtZXRlclNwZWMoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldEFsZ29yaXRobSgpIHsKKwlyZXR1cm4gc3BpLmdldEFsZ29yaXRobSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgbWV0aG9kIGludm9rZXMgdGhlIGFic3RyYWN0IHtAbGluayAjbWFyc2hhbFBhcmFtcyBtYXJzaGFsUGFyYW1zfSAKKyAgICAgKiBtZXRob2QgdG8gbWFyc2hhbCBhbnkgYWxnb3JpdGhtLXNwZWNpZmljIHBhcmFtZXRlcnMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgbWFyc2hhbChOb2RlIHBhcmVudCwgU3RyaW5nIGRzUHJlZml4LCBET01DcnlwdG9Db250ZXh0IGNvbnRleHQpCisJdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworICAgICAgICBEb2N1bWVudCBvd25lckRvYyA9IERPTVV0aWxzLmdldE93bmVyRG9jdW1lbnQocGFyZW50KTsKKworCUVsZW1lbnQgdHJhbnNmb3JtRWxlbSA9IG51bGw7CisJaWYgKHBhcmVudC5nZXRMb2NhbE5hbWUoKS5lcXVhbHMoIlRyYW5zZm9ybXMiKSkgeworICAgICAgICAgICAgdHJhbnNmb3JtRWxlbSA9IERPTVV0aWxzLmNyZWF0ZUVsZW1lbnQKKwkJKG93bmVyRG9jLCAiVHJhbnNmb3JtIiwgWE1MU2lnbmF0dXJlLlhNTE5TLCBkc1ByZWZpeCk7CisJfSBlbHNlIHsKKyAgICAgICAgICAgIHRyYW5zZm9ybUVsZW0gPSBET01VdGlscy5jcmVhdGVFbGVtZW50CisgICAgICAgICAgICAob3duZXJEb2MsICJDYW5vbmljYWxpemF0aW9uTWV0aG9kIiwgWE1MU2lnbmF0dXJlLlhNTE5TLCBkc1ByZWZpeCk7CisJfQorCURPTVV0aWxzLnNldEF0dHJpYnV0ZSh0cmFuc2Zvcm1FbGVtLCAiQWxnb3JpdGhtIiwgZ2V0QWxnb3JpdGhtKCkpOworCisgICAgICAgIHNwaS5tYXJzaGFsUGFyYW1zCisJICAgIChuZXcgamF2YXgueG1sLmNyeXB0by5kb20uRE9NU3RydWN0dXJlKHRyYW5zZm9ybUVsZW0pLCBjb250ZXh0KTsKKworICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQodHJhbnNmb3JtRWxlbSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVHJhbnNmb3JtcyB0aGUgc3BlY2lmaWVkIGRhdGEgdXNpbmcgdGhlIHVuZGVybHlpbmcgdHJhbnNmb3JtIGFsZ29yaXRobS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXRhIHRoZSBkYXRhIHRvIGJlIHRyYW5zZm9ybWVkCisgICAgICogQHBhcmFtIHNjIHRoZSA8Y29kZT5YTUxDcnlwdG9Db250ZXh0PC9jb2RlPiBjb250YWluaW5nCisgICAgICogICAgYWRkaXRpb25hbCBjb250ZXh0IChtYXkgYmUgPGNvZGU+bnVsbDwvY29kZT4gaWYgbm90IGFwcGxpY2FibGUpCisgICAgICogQHJldHVybiB0aGUgdHJhbnNmb3JtZWQgZGF0YQorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+ZGF0YTwvY29kZT4gaXMgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiBpZiBhbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VycyB3aGlsZQorICAgICAqICAgIGV4ZWN1dGluZyB0aGUgdHJhbnNmb3JtCisgICAgICovCisgICAgcHVibGljIERhdGEgdHJhbnNmb3JtKERhdGEgZGF0YSwgWE1MQ3J5cHRvQ29udGV4dCB4YykgCisJdGhyb3dzIFRyYW5zZm9ybUV4Y2VwdGlvbiB7CisJcmV0dXJuIHNwaS50cmFuc2Zvcm0oZGF0YSwgeGMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRyYW5zZm9ybXMgdGhlIHNwZWNpZmllZCBkYXRhIHVzaW5nIHRoZSB1bmRlcmx5aW5nIHRyYW5zZm9ybSBhbGdvcml0aG0uCisgICAgICoKKyAgICAgKiBAcGFyYW0gZGF0YSB0aGUgZGF0YSB0byBiZSB0cmFuc2Zvcm1lZAorICAgICAqIEBwYXJhbSBzYyB0aGUgPGNvZGU+WE1MQ3J5cHRvQ29udGV4dDwvY29kZT4gY29udGFpbmluZworICAgICAqICAgIGFkZGl0aW9uYWwgY29udGV4dCAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+IGlmIG5vdCBhcHBsaWNhYmxlKQorICAgICAqIEBwYXJhbSBvcyB0aGUgPGNvZGU+T3V0cHV0U3RyZWFtPC9jb2RlPiB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIHdyaXRlCisgICAgICogICAgdGhlIHRyYW5zZm9ybWVkIGRhdGEgdG8KKyAgICAgKiBAcmV0dXJuIHRoZSB0cmFuc2Zvcm1lZCBkYXRhCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5kYXRhPC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIGlmIGFuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJzIHdoaWxlCisgICAgICogICAgZXhlY3V0aW5nIHRoZSB0cmFuc2Zvcm0KKyAgICAgKi8KKyAgICBwdWJsaWMgRGF0YSB0cmFuc2Zvcm0oRGF0YSBkYXRhLCBYTUxDcnlwdG9Db250ZXh0IHhjLCBPdXRwdXRTdHJlYW0gb3MpIAorCXRocm93cyBUcmFuc2Zvcm1FeGNlcHRpb24geworCXJldHVybiBzcGkudHJhbnNmb3JtKGRhdGEsIHhjLCBvcyk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvKSB7CisJaWYgKHRoaXMgPT0gbykgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisJfQorCisgICAgICAgIGlmICghKG8gaW5zdGFuY2VvZiBUcmFuc2Zvcm0pKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisJfQorICAgICAgICBUcmFuc2Zvcm0gb3RyYW5zZm9ybSA9IChUcmFuc2Zvcm0pIG87CisKKwlyZXR1cm4gKGdldEFsZ29yaXRobSgpLmVxdWFscyhvdHJhbnNmb3JtLmdldEFsZ29yaXRobSgpKSAmJiAKKwkgICAgRE9NVXRpbHMucGFyYW1zRXF1YWwKKwkJKGdldFBhcmFtZXRlclNwZWMoKSwgb3RyYW5zZm9ybS5nZXRQYXJhbWV0ZXJTcGVjKCkpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUcmFuc2Zvcm1zIHRoZSBzcGVjaWZpZWQgZGF0YSB1c2luZyB0aGUgdW5kZXJseWluZyB0cmFuc2Zvcm0gYWxnb3JpdGhtLgorICAgICAqIFRoaXMgbWV0aG9kIGludm9rZXMgdGhlIHtAbGluayAjbWFyc2hhbCBtYXJzaGFsfSBtZXRob2QgYW5kIHBhc3NlcyBpdAorICAgICAqIHRoZSBzcGVjaWZpZWQgPGNvZGU+RE9NU2lnbkNvbnRleHQ8L2NvZGU+IGJlZm9yZSB0cmFuc2Zvcm1pbmcgdGhlIGRhdGEuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZGF0YSB0aGUgZGF0YSB0byBiZSB0cmFuc2Zvcm1lZAorICAgICAqIEBwYXJhbSBzYyB0aGUgPGNvZGU+WE1MQ3J5cHRvQ29udGV4dDwvY29kZT4gY29udGFpbmluZworICAgICAqICAgIGFkZGl0aW9uYWwgY29udGV4dCAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+IGlmIG5vdCBhcHBsaWNhYmxlKQorICAgICAqIEBwYXJhbSBjb250ZXh0IHRoZSBtYXJzaGFsbGluZyBjb250ZXh0CisgICAgICogQHJldHVybiB0aGUgdHJhbnNmb3JtZWQgZGF0YQorICAgICAqIEB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiBpZiBhbiBleGNlcHRpb24gb2NjdXJzIHdoaWxlIG1hcnNoYWxsaW5nCisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5kYXRhPC9jb2RlPiBvciA8Y29kZT5jb250ZXh0PC9jb2RlPiAKKyAgICAgKiAgICBpcyA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIGlmIGFuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJzIHdoaWxlCisgICAgICogICAgZXhlY3V0aW5nIHRoZSB0cmFuc2Zvcm0KKyAgICAgKi8KKyAgICBEYXRhIHRyYW5zZm9ybShEYXRhIGRhdGEsIFhNTENyeXB0b0NvbnRleHQgeGMsIERPTVNpZ25Db250ZXh0IGNvbnRleHQpIAorCXRocm93cyBNYXJzaGFsRXhjZXB0aW9uLCBUcmFuc2Zvcm1FeGNlcHRpb24geworICAgICAgICBtYXJzaGFsKGNvbnRleHQuZ2V0UGFyZW50KCksCisgICAgICAgICAgICBET01VdGlscy5nZXRTaWduYXR1cmVQcmVmaXgoY29udGV4dCksIGNvbnRleHQpOworCXJldHVybiB0cmFuc2Zvcm0oZGF0YSwgeGMpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01VUklEZXJlZmVyZW5jZXIuamF2YSBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01VUklEZXJlZmVyZW5jZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTY2MDUwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTVVSSURlcmVmZXJlbmNlci5qYXZhCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDUtMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tOworCitpbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLklkUmVzb2x2ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMucmVzb2x2ZXIuUmVzb3VyY2VSZXNvbHZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlSW5wdXQ7CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kb20uKjsKKworLyoqCisgKiBET00tYmFzZWQgaW1wbGVtZW50YXRpb24gb2YgVVJJRGVyZWZlcmVuY2VyLgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqLworcHVibGljIGNsYXNzIERPTVVSSURlcmVmZXJlbmNlciBpbXBsZW1lbnRzIFVSSURlcmVmZXJlbmNlciB7CisgICAgCisgICAgc3RhdGljIGZpbmFsIFVSSURlcmVmZXJlbmNlciBJTlNUQU5DRSA9IG5ldyBET01VUklEZXJlZmVyZW5jZXIoKTsKKworICAgIHByaXZhdGUgRE9NVVJJRGVyZWZlcmVuY2VyKCkgeworCS8vIG5lZWQgdG8gY2FsbCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKSAKKyAgICAgICAgLy8gYmVmb3JlIGNhbGxpbmcgYW55IGFwYWNoZSBzZWN1cml0eSBjb2RlCisJSW5pdC5pbml0KCk7CisgICAgfQorCisgICAgcHVibGljIERhdGEgZGVyZWZlcmVuY2UoVVJJUmVmZXJlbmNlIHVyaVJlZiwgWE1MQ3J5cHRvQ29udGV4dCBjb250ZXh0KQorCXRocm93cyBVUklSZWZlcmVuY2VFeGNlcHRpb24geworCisJaWYgKHVyaVJlZiA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigidXJpUmVmIGNhbm5vdCBiZSBudWxsIik7CisJfQorCWlmIChjb250ZXh0ID09IG51bGwpIHsKKwkgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJjb250ZXh0IGNhbm5vdCBiZSBudWxsIik7CisJfQorCisJRE9NVVJJUmVmZXJlbmNlIGRvbVJlZiA9IChET01VUklSZWZlcmVuY2UpIHVyaVJlZjsKKyAgICAgICAgQXR0ciB1cmlBdHRyID0gKEF0dHIpIGRvbVJlZi5nZXRIZXJlKCk7CisJU3RyaW5nIHVyaSA9IHVyaVJlZi5nZXRVUkkoKTsKKyAgICAgICAgRE9NQ3J5cHRvQ29udGV4dCBkY2MgPSAoRE9NQ3J5cHRvQ29udGV4dCkgY29udGV4dDsKKworCS8vIENoZWNrIGlmIHNhbWUtZG9jdW1lbnQgVVJJIGFuZCByZWdpc3RlciBJRAorCWlmICh1cmkgIT0gbnVsbCAmJiB1cmkubGVuZ3RoKCkgIT0gMCAmJiB1cmkuY2hhckF0KDApID09ICcjJykgeworICAgICAgICAgICAgU3RyaW5nIGlkID0gdXJpLnN1YnN0cmluZygxKTsKKworCSAgICBpZiAoaWQuc3RhcnRzV2l0aCgieHBvaW50ZXIoaWQoIikpIHsKKwkgICAgICAgIGludCBpMSA9IGlkLmluZGV4T2YoJ1wnJyk7CisJICAgICAgICBpbnQgaTIgPSBpZC5pbmRleE9mKCdcJycsIGkxKzEpOworCQlpZCA9IGlkLnN1YnN0cmluZyhpMSsxLCBpMik7CisJICAgIH0KKworICAgICAgICAgICAgLy8gdGhpcyBpcyBhIGJpdCBvZiBhIGhhY2sgdG8gY2hlY2sgZm9yIHJlZ2lzdGVyZWQgCisJICAgIC8vIElEUmVmcyBhbmQgbWFudWFsbHkgcmVnaXN0ZXIgdGhlbSB3aXRoIEFwYWNoZSdzIElkUmVzb2x2ZXIgCisJICAgIC8vIG1hcCB3aGljaCBpbmNsdWRlcyBidWlsdGluIHNjaGVtYSBrbm93bGVkZ2Ugb2YgRFNpZy9FbmMgSURzCisgICAgICAgICAgICBOb2RlIHJlZmVyZW5jZWRFbGVtID0gZGNjLmdldEVsZW1lbnRCeUlkKGlkKTsKKwkgICAgaWYgKHJlZmVyZW5jZWRFbGVtICE9IG51bGwpIHsKKwkgICAgICAgIElkUmVzb2x2ZXIucmVnaXN0ZXJFbGVtZW50QnlJZCgoRWxlbWVudCkgcmVmZXJlbmNlZEVsZW0sIGlkKTsKKwkgICAgfQorCX0gCisKKyAgICAgICAgdHJ5IHsKKwkgICAgU3RyaW5nIGJhc2VVUkkgPSBjb250ZXh0LmdldEJhc2VVUkkoKTsKKyAgICAgICAgICAgIFJlc291cmNlUmVzb2x2ZXIgYXBhY2hlUmVzb2x2ZXIgPSAKKwkgICAgICAgIFJlc291cmNlUmVzb2x2ZXIuZ2V0SW5zdGFuY2UodXJpQXR0ciwgYmFzZVVSSSk7CisgICAgICAgICAgICBYTUxTaWduYXR1cmVJbnB1dCBpbiA9IGFwYWNoZVJlc29sdmVyLnJlc29sdmUodXJpQXR0ciwgYmFzZVVSSSk7CisJICAgIGlmIChpbi5pc09jdGV0U3RyZWFtKCkpIHsKKwkgICAgICAgIHJldHVybiBuZXcgQXBhY2hlT2N0ZXRTdHJlYW1EYXRhKGluKTsKKwkgICAgfSBlbHNlIHsKKwkgICAgICAgIHJldHVybiBuZXcgQXBhY2hlTm9kZVNldERhdGEoaW4pOworCSAgICB9CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgVVJJUmVmZXJlbmNlRXhjZXB0aW9uKGUpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTVV0aWxzLmphdmEgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NVXRpbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzAyNWUzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTVV0aWxzLmphdmEKQEAgLTAsMCArMSwzNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNS0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2Ugb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb207CisKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYzsKK2ltcG9ydCBvcmcudzNjLmRvbS5BdHRyOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLnNwZWMuKjsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLklkUmVzb2x2ZXI7CisKKy8qKgorICogVXNlZnVsIHN0YXRpYyBET00gdXRpbGl0eSBtZXRob2RzLgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqLworcHVibGljIGNsYXNzIERPTVV0aWxzIHsKKworICAgIC8vIGNsYXNzIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQKKyAgICBwcml2YXRlIERPTVV0aWxzKCkge30gCisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBvd25lciBkb2N1bWVudCBvZiB0aGUgc3BlY2lmaWVkIG5vZGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbm9kZSB0aGUgbm9kZQorICAgICAqIEByZXR1cm4gdGhlIG93bmVyIGRvY3VtZW50CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBEb2N1bWVudCBnZXRPd25lckRvY3VtZW50KE5vZGUgbm9kZSkgeworICAgICAgICBpZiAobm9kZS5nZXROb2RlVHlwZSgpID09IE5vZGUuRE9DVU1FTlRfTk9ERSkgeworICAgICAgICAgICAgcmV0dXJuIChEb2N1bWVudCkgbm9kZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBub2RlLmdldE93bmVyRG9jdW1lbnQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYW4gZWxlbWVudCBpbiB0aGUgc3BlY2lmaWVkIG5hbWVzcGFjZSwgd2l0aCB0aGUgc3BlY2lmaWVkIHRhZworICAgICAqIGFuZCBuYW1lc3BhY2UgcHJlZml4LgorICAgICAqCisgICAgICogQHBhcmFtIGRvYyB0aGUgb3duZXIgZG9jdW1lbnQKKyAgICAgKiBAcGFyYW0gdGFnIHRoZSB0YWcKKyAgICAgKiBAcGFyYW0gbnNVUkkgdGhlIG5hbWVzcGFjZSBVUkkKKyAgICAgKiBAcGFyYW0gcHJlZml4IHRoZSBuYW1lc3BhY2UgcHJlZml4CisgICAgICogQHJldHVybiB0aGUgbmV3bHkgY3JlYXRlZCBlbGVtZW50CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBFbGVtZW50IGNyZWF0ZUVsZW1lbnQoRG9jdW1lbnQgZG9jLCBTdHJpbmcgdGFnLCBTdHJpbmcgbnNVUkksCisJU3RyaW5nIHByZWZpeCkgeworICAgICAgICBTdHJpbmcgcU5hbWUgPSAocHJlZml4ID09IG51bGwgfHwgcHJlZml4Lmxlbmd0aCgpID09IDApCisJCSAgICAgICA/IHRhZyA6IHByZWZpeCArICI6IiArIHRhZzsKKyAgICAgICAgcmV0dXJuIGRvYy5jcmVhdGVFbGVtZW50TlMobnNVUkksIHFOYW1lKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIGFuIGVsZW1lbnQncyBhdHRyaWJ1dGUgKHVzaW5nIERPTSBsZXZlbCAyKSB3aXRoIHRoZSAKKyAgICAgKiBzcGVjaWZpZWQgdmFsdWUgYW5kIG5hbWVzcGFjZSBwcmVmaXguCisgICAgICoKKyAgICAgKiBAcGFyYW0gZWxlbSB0aGUgZWxlbWVudCB0byBzZXQgdGhlIGF0dHJpYnV0ZSBvbgorICAgICAqIEBwYXJhbSBuYW1lIHRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGUKKyAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIGF0dHJpYnV0ZSB2YWx1ZS4gSWYgbnVsbCwgbm8gYXR0cmlidXRlIGlzIHNldC4gCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHNldEF0dHJpYnV0ZShFbGVtZW50IGVsZW0sIFN0cmluZyBuYW1lLCBTdHJpbmcgdmFsdWUpIHsKKwlpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuOworCWVsZW0uc2V0QXR0cmlidXRlTlMobnVsbCwgbmFtZSwgdmFsdWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgYW4gZWxlbWVudCdzIGF0dHJpYnV0ZSAodXNpbmcgRE9NIGxldmVsIDIpIHdpdGggdGhlIAorICAgICAqIHNwZWNpZmllZCB2YWx1ZSBhbmQgbmFtZXNwYWNlIHByZWZpeCBBTkQgcmVnaXN0ZXJzIHRoZSBJRCB2YWx1ZSB3aXRoCisgICAgICogdGhlIHNwZWNpZmllZCBlbGVtZW50LiBUaGlzIGlzIGZvciByZXNvbHZpbmcgc2FtZS1kb2N1bWVudAorICAgICAqIElEIHJlZmVyZW5jZXMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZWxlbSB0aGUgZWxlbWVudCB0byBzZXQgdGhlIGF0dHJpYnV0ZSBvbgorICAgICAqIEBwYXJhbSBuYW1lIHRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGUKKyAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIGF0dHJpYnV0ZSB2YWx1ZS4gSWYgbnVsbCwgbm8gYXR0cmlidXRlIGlzIHNldC4gCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHNldEF0dHJpYnV0ZUlEKEVsZW1lbnQgZWxlbSwgU3RyaW5nIG5hbWUsIFN0cmluZyB2YWx1ZSkgeworCWlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm47CisJZWxlbS5zZXRBdHRyaWJ1dGVOUyhudWxsLCBuYW1lLCB2YWx1ZSk7CisJSWRSZXNvbHZlci5yZWdpc3RlckVsZW1lbnRCeUlkKGVsZW0sIHZhbHVlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBmaXJzdCBjaGlsZCBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQgbm9kZSwgb3IgbnVsbCBpZiB0aGVyZSAKKyAgICAgKiBpcyBubyBzdWNoIGVsZW1lbnQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbm9kZSB0aGUgbm9kZQorICAgICAqIEByZXR1cm4gdGhlIGZpcnN0IGNoaWxkIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCBub2RlLCBvciBudWxsIGlmIHRoZXJlIAorICAgICAqICAgIGlzIG5vIHN1Y2ggZWxlbWVudAorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+bm9kZSA9PSBudWxsPC9jb2RlPgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgRWxlbWVudCBnZXRGaXJzdENoaWxkRWxlbWVudChOb2RlIG5vZGUpIHsKKyAgICAgICAgTm9kZSBjaGlsZCA9IG5vZGUuZ2V0Rmlyc3RDaGlsZCgpOworICAgICAgICB3aGlsZSAoY2hpbGQgIT0gbnVsbCAmJiBjaGlsZC5nZXROb2RlVHlwZSgpICE9IE5vZGUuRUxFTUVOVF9OT0RFKSB7CisgICAgICAgICAgICBjaGlsZCA9IGNoaWxkLmdldE5leHRTaWJsaW5nKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIChFbGVtZW50KSBjaGlsZDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBsYXN0IGNoaWxkIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCBub2RlLCBvciBudWxsIGlmIHRoZXJlIAorICAgICAqIGlzIG5vIHN1Y2ggZWxlbWVudC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBub2RlIHRoZSBub2RlCisgICAgICogQHJldHVybiB0aGUgbGFzdCBjaGlsZCBlbGVtZW50IG9mIHRoZSBzcGVjaWZpZWQgbm9kZSwgb3IgbnVsbCBpZiB0aGVyZSAKKyAgICAgKiAgICBpcyBubyBzdWNoIGVsZW1lbnQKKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPm5vZGUgPT0gbnVsbDwvY29kZT4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEVsZW1lbnQgZ2V0TGFzdENoaWxkRWxlbWVudChOb2RlIG5vZGUpIHsKKyAgICAgICAgTm9kZSBjaGlsZCA9IG5vZGUuZ2V0TGFzdENoaWxkKCk7CisgICAgICAgIHdoaWxlIChjaGlsZCAhPSBudWxsICYmIGNoaWxkLmdldE5vZGVUeXBlKCkgIT0gTm9kZS5FTEVNRU5UX05PREUpIHsKKyAgICAgICAgICAgIGNoaWxkID0gY2hpbGQuZ2V0UHJldmlvdXNTaWJsaW5nKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIChFbGVtZW50KSBjaGlsZDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBuZXh0IHNpYmxpbmcgZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIG5vZGUsIG9yIG51bGwgaWYgdGhlcmUgCisgICAgICogaXMgbm8gc3VjaCBlbGVtZW50LgorICAgICAqCisgICAgICogQHBhcmFtIG5vZGUgdGhlIG5vZGUKKyAgICAgKiBAcmV0dXJuIHRoZSBuZXh0IHNpYmxpbmcgZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIG5vZGUsIG9yIG51bGwgaWYgdGhlcmUgCisgICAgICogICAgaXMgbm8gc3VjaCBlbGVtZW50CisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5ub2RlID09IG51bGw8L2NvZGU+CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBFbGVtZW50IGdldE5leHRTaWJsaW5nRWxlbWVudChOb2RlIG5vZGUpIHsKKyAgICAgICAgTm9kZSBzaWJsaW5nID0gbm9kZS5nZXROZXh0U2libGluZygpOworICAgICAgICB3aGlsZSAoc2libGluZyAhPSBudWxsICYmIHNpYmxpbmcuZ2V0Tm9kZVR5cGUoKSAhPSBOb2RlLkVMRU1FTlRfTk9ERSkgeworICAgICAgICAgICAgc2libGluZyA9IHNpYmxpbmcuZ2V0TmV4dFNpYmxpbmcoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKEVsZW1lbnQpIHNpYmxpbmc7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgYXR0cmlidXRlIHZhbHVlIGZvciB0aGUgYXR0cmlidXRlIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lLgorICAgICAqIFJldHVybnMgbnVsbCBpZiB0aGVyZSBpcyBubyBzdWNoIGF0dHJpYnV0ZSwgb3IgCisgICAgICogdGhlIGVtcHR5IHN0cmluZyBpZiB0aGUgYXR0cmlidXRlIHZhbHVlIGlzIGVtcHR5LgorICAgICAqCisgICAgICogPHA+VGhpcyB3b3JrcyBhcm91bmQgYSBsaW1pdGF0aW9uIG9mIHRoZSBET00KKyAgICAgKiA8Y29kZT5FbGVtZW50LmdldEF0dHJpYnV0ZU5vZGU8L2NvZGU+IG1ldGhvZCwgd2hpY2ggZG9lcyBub3QgZGlzdGluZ3Vpc2gKKyAgICAgKiBiZXR3ZWVuIGFuIHVuc3BlY2lmaWVkIGF0dHJpYnV0ZSBhbmQgYW4gYXR0cmlidXRlIHdpdGggYSB2YWx1ZSBvZgorICAgICAqICIiIChpdCByZXR1cm5zICIiIGZvciBib3RoIGNhc2VzKS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBlbGVtIHRoZSBlbGVtZW50IGNvbnRhaW5pbmcgdGhlIGF0dHJpYnV0ZQorICAgICAqIEBwYXJhbSBuYW1lIHRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGUKKyAgICAgKiBAcmV0dXJuIHRoZSBhdHRyaWJ1dGUgdmFsdWUgKG1heSBiZSBudWxsIGlmIHVuc3BlY2lmaWVkKQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEF0dHJpYnV0ZVZhbHVlKEVsZW1lbnQgZWxlbSwgU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgQXR0ciBhdHRyID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlTlMobnVsbCwgbmFtZSk7CisgICAgICAgIHJldHVybiAoYXR0ciA9PSBudWxsKSA/IG51bGwgOiBhdHRyLmdldFZhbHVlKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIFNldCBvZiA8Y29kZT5Ob2RlPC9jb2RlPnMsIGJhY2tlZCBieSB0aGUgc3BlY2lmaWVkIAorICAgICAqIDxjb2RlPk5vZGVMaXN0PC9jb2RlPi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBubCB0aGUgTm9kZUxpc3QKKyAgICAgKiBAcmV0dXJuIGEgU2V0IG9mIE5vZGVzCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTZXQgbm9kZVNldChOb2RlTGlzdCBubCkgeworCXJldHVybiBuZXcgTm9kZVNldChubCk7CisgICAgfQorCisgICAgc3RhdGljIGNsYXNzIE5vZGVTZXQgZXh0ZW5kcyBBYnN0cmFjdFNldCB7CisgICAgICAgIHByaXZhdGUgTm9kZUxpc3Qgbmw7CisgICAgICAgIHB1YmxpYyBOb2RlU2V0KE5vZGVMaXN0IG5sKSB7CisgICAgICAgICAgICB0aGlzLm5sID0gbmw7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IHNpemUoKSB7IHJldHVybiBubC5nZXRMZW5ndGgoKTsgfQorICAgICAgICBwdWJsaWMgSXRlcmF0b3IgaXRlcmF0b3IoKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCkgeworICAgICAgICAgICAgICAgIGludCBpbmRleCA9IDA7CisKKyAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCByZW1vdmUoKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwdWJsaWMgT2JqZWN0IG5leHQoKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm9TdWNoRWxlbWVudEV4Y2VwdGlvbigpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBubC5pdGVtKGluZGV4KyspOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwdWJsaWMgYm9vbGVhbiBoYXNOZXh0KCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXggPCBubC5nZXRMZW5ndGgoKSA/IHRydWUgOiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHByZWZpeCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lc3BhY2UgVVJJCisgICAgICoKKyAgICAgKiBAcGFyYW0gY29udGV4dCBjb250YWlucyB0aGUgbmFtZXNwYWNlIG1hcAorICAgICAqIEBwYXJhbSBuc1VSSSB0aGUgbmFtZXNwYWNlIFVSSQorICAgICAqIEByZXR1cm4gdGhlIHByZWZpeCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lc3BhY2UgVVJJLCBvcgorICAgICAqICAgIG51bGwgaWYgbm90IHNldAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldE5TUHJlZml4KFhNTENyeXB0b0NvbnRleHQgY29udGV4dCwgU3RyaW5nIG5zVVJJKSB7CisgICAgICAgIGlmIChjb250ZXh0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmdldE5hbWVzcGFjZVByZWZpeAorCQkobnNVUkksIGNvbnRleHQuZ2V0RGVmYXVsdE5hbWVzcGFjZVByZWZpeCgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCX0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBwcmVmaXggYXNzb2NpYXRlZCB3aXRoIHRoZSBYTUwgU2lnbmF0dXJlIG5hbWVzcGFjZSBVUkkKKyAgICAgKgorICAgICAqIEBwYXJhbSBjb250ZXh0IGNvbnRhaW5zIHRoZSBuYW1lc3BhY2UgbWFwCisgICAgICogQHJldHVybiB0aGUgcHJlZml4IGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWVzcGFjZSBVUkksIG9yCisgICAgICogICAgbnVsbCBpZiBub3Qgc2V0CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0U2lnbmF0dXJlUHJlZml4KFhNTENyeXB0b0NvbnRleHQgY29udGV4dCkgeworCXJldHVybiBnZXROU1ByZWZpeChjb250ZXh0LCBYTUxTaWduYXR1cmUuWE1MTlMpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZW1vdmVzIGFsbCBjaGlsZHJlbiBub2RlcyBmcm9tIHRoZSBzcGVjaWZpZWQgbm9kZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBub2RlIHRoZSBwYXJlbnQgbm9kZSB3aG9zZSBjaGlsZHJlbiBhcmUgdG8gYmUgcmVtb3ZlZAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCByZW1vdmVBbGxDaGlsZHJlbihOb2RlIG5vZGUpIHsKKyAgICAgICAgTm9kZUxpc3QgY2hpbGRyZW4gPSBub2RlLmdldENoaWxkTm9kZXMoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDAsIGxlbmd0aCA9IGNoaWxkcmVuLmdldExlbmd0aCgpOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIG5vZGUucmVtb3ZlQ2hpbGQoY2hpbGRyZW4uaXRlbShpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb21wYXJlcyAyIG5vZGVzIGZvciBlcXVhbGl0eS4gSW1wbGVtZW50YXRpb24gaXMgbm90IGNvbXBsZXRlLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBub2Rlc0VxdWFsKE5vZGUgdGhpc05vZGUsIE5vZGUgb3RoZXJOb2RlKSB7CisJaWYgKHRoaXNOb2RlID09IG90aGVyTm9kZSkgeworCSAgICByZXR1cm4gdHJ1ZTsKKwl9CisJaWYgKHRoaXNOb2RlLmdldE5vZGVUeXBlKCkgIT0gb3RoZXJOb2RlLmdldE5vZGVUeXBlKCkpIHsKKwkgICAgcmV0dXJuIGZhbHNlOworCX0KKwkvLyBGSVhNRSAtIHRlc3QgY29udGVudCwgZXRjCisJcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2hlY2tzIGlmIGNoaWxkIGVsZW1lbnQgaGFzIHNhbWUgb3duZXIgZG9jdW1lbnQgYmVmb3JlIAorICAgICAqIGFwcGVuZGluZyB0byB0aGUgcGFyZW50LCBhbmQgaW1wb3J0cyBpdCB0byB0aGUgcGFyZW50J3MgZG9jdW1lbnQKKyAgICAgKiBpZiBuZWNlc3NhcnkuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyB2b2lkIGFwcGVuZENoaWxkKE5vZGUgcGFyZW50LCBOb2RlIGNoaWxkKSB7CisJRG9jdW1lbnQgb3duZXJEb2MgPSBnZXRPd25lckRvY3VtZW50KHBhcmVudCk7CisJaWYgKGNoaWxkLmdldE93bmVyRG9jdW1lbnQoKSAhPSBvd25lckRvYykgeworCSAgICBwYXJlbnQuYXBwZW5kQ2hpbGQob3duZXJEb2MuaW1wb3J0Tm9kZShjaGlsZCwgdHJ1ZSkpOworCX0gZWxzZSB7CisJICAgIHBhcmVudC5hcHBlbmRDaGlsZChjaGlsZCk7CisJfQorICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBwYXJhbXNFcXVhbChBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIHNwZWMxLAorCUFsZ29yaXRobVBhcmFtZXRlclNwZWMgc3BlYzIpIHsKKwlpZiAoc3BlYzEgPT0gc3BlYzIpIHsKKwkgICAgcmV0dXJuIHRydWU7CisJfQorCWlmIChzcGVjMSBpbnN0YW5jZW9mIFhQYXRoRmlsdGVyMlBhcmFtZXRlclNwZWMgJiYKKwkgICAgc3BlYzIgaW5zdGFuY2VvZiBYUGF0aEZpbHRlcjJQYXJhbWV0ZXJTcGVjKSB7CisJICAgIHJldHVybiBwYXJhbXNFcXVhbCgoWFBhdGhGaWx0ZXIyUGFyYW1ldGVyU3BlYykgc3BlYzEsCisJCShYUGF0aEZpbHRlcjJQYXJhbWV0ZXJTcGVjKSBzcGVjMik7CisJfQorCWlmIChzcGVjMSBpbnN0YW5jZW9mIEV4Y0MxNE5QYXJhbWV0ZXJTcGVjICYmCisJICAgIHNwZWMyIGluc3RhbmNlb2YgRXhjQzE0TlBhcmFtZXRlclNwZWMpIHsKKwkgICAgcmV0dXJuIHBhcmFtc0VxdWFsKChFeGNDMTROUGFyYW1ldGVyU3BlYykgc3BlYzEsCisJCShFeGNDMTROUGFyYW1ldGVyU3BlYykgc3BlYzIpOworCX0KKwlpZiAoc3BlYzEgaW5zdGFuY2VvZiBYUGF0aEZpbHRlclBhcmFtZXRlclNwZWMgJiYKKwkgICAgc3BlYzIgaW5zdGFuY2VvZiBYUGF0aEZpbHRlclBhcmFtZXRlclNwZWMpIHsKKwkgICAgcmV0dXJuIHBhcmFtc0VxdWFsKChYUGF0aEZpbHRlclBhcmFtZXRlclNwZWMpIHNwZWMxLAorCQkoWFBhdGhGaWx0ZXJQYXJhbWV0ZXJTcGVjKSBzcGVjMik7CisJfQorCWlmIChzcGVjMSBpbnN0YW5jZW9mIFhTTFRUcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjICYmCisJICAgIHNwZWMyIGluc3RhbmNlb2YgWFNMVFRyYW5zZm9ybVBhcmFtZXRlclNwZWMpIHsKKwkgICAgcmV0dXJuIHBhcmFtc0VxdWFsKChYU0xUVHJhbnNmb3JtUGFyYW1ldGVyU3BlYykgc3BlYzEsCisJCShYU0xUVHJhbnNmb3JtUGFyYW1ldGVyU3BlYykgc3BlYzIpOworCX0KKwlyZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBwYXJhbXNFcXVhbChYUGF0aEZpbHRlcjJQYXJhbWV0ZXJTcGVjIHNwZWMxLAorICAgICAgICBYUGF0aEZpbHRlcjJQYXJhbWV0ZXJTcGVjIHNwZWMyKSB7CisKKyAgICAgICAgTGlzdCB0eXBlcyA9IHNwZWMxLmdldFhQYXRoTGlzdCgpOworICAgICAgICBMaXN0IG90eXBlcyA9IHNwZWMyLmdldFhQYXRoTGlzdCgpOworCWludCBzaXplID0gdHlwZXMuc2l6ZSgpOworICAgICAgICBpZiAoc2l6ZSAhPSBvdHlwZXMuc2l6ZSgpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgIFhQYXRoVHlwZSB0eXBlID0gKFhQYXRoVHlwZSkgdHlwZXMuZ2V0KGkpOworICAgICAgICAgICAgWFBhdGhUeXBlIG90eXBlID0gKFhQYXRoVHlwZSkgb3R5cGVzLmdldChpKTsKKyAgICAgICAgICAgIGlmICghdHlwZS5nZXRFeHByZXNzaW9uKCkuZXF1YWxzKG90eXBlLmdldEV4cHJlc3Npb24oKSkgfHwKKwkJIXR5cGUuZ2V0TmFtZXNwYWNlTWFwKCkuZXF1YWxzKG90eXBlLmdldE5hbWVzcGFjZU1hcCgpKSB8fAorICAgICAgICAgICAgICAgIHR5cGUuZ2V0RmlsdGVyKCkgIT0gb3R5cGUuZ2V0RmlsdGVyKCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBwYXJhbXNFcXVhbChFeGNDMTROUGFyYW1ldGVyU3BlYyBzcGVjMSwKKwlFeGNDMTROUGFyYW1ldGVyU3BlYyBzcGVjMikgeworICAgICAgICByZXR1cm4gc3BlYzEuZ2V0UHJlZml4TGlzdCgpLmVxdWFscyhzcGVjMi5nZXRQcmVmaXhMaXN0KCkpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gcGFyYW1zRXF1YWwoWFBhdGhGaWx0ZXJQYXJhbWV0ZXJTcGVjIHNwZWMxLAorCVhQYXRoRmlsdGVyUGFyYW1ldGVyU3BlYyBzcGVjMikgeworICAgICAgICByZXR1cm4gKHNwZWMxLmdldFhQYXRoKCkuZXF1YWxzKHNwZWMyLmdldFhQYXRoKCkpICYmIAorCSAgICBzcGVjMS5nZXROYW1lc3BhY2VNYXAoKS5lcXVhbHMoc3BlYzIuZ2V0TmFtZXNwYWNlTWFwKCkpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIHBhcmFtc0VxdWFsKFhTTFRUcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjIHNwZWMxLAorCVhTTFRUcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjIHNwZWMyKSB7CisKKyAgICAgICAgWE1MU3RydWN0dXJlIG9zdHlsZXNoZWV0ID0gc3BlYzIuZ2V0U3R5bGVzaGVldCgpOworICAgICAgICBpZiAoIShvc3R5bGVzaGVldCBpbnN0YW5jZW9mIGphdmF4LnhtbC5jcnlwdG8uZG9tLkRPTVN0cnVjdHVyZSkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBOb2RlIG9zdHlsZXNoZWV0RWxlbSA9CisgICAgICAgICAgICAoKGphdmF4LnhtbC5jcnlwdG8uZG9tLkRPTVN0cnVjdHVyZSkgb3N0eWxlc2hlZXQpLmdldE5vZGUoKTsKKyAgICAgICAgWE1MU3RydWN0dXJlIHN0eWxlc2hlZXQgPSBzcGVjMS5nZXRTdHlsZXNoZWV0KCk7ICAgICAgICAKKwlOb2RlIHN0eWxlc2hlZXRFbGVtID0KKyAgICAgICAgICAgICgoamF2YXgueG1sLmNyeXB0by5kb20uRE9NU3RydWN0dXJlKSBzdHlsZXNoZWV0KS5nZXROb2RlKCk7CisgICAgICAgIHJldHVybiBub2Rlc0VxdWFsKHN0eWxlc2hlZXRFbGVtLCBvc3R5bGVzaGVldEVsZW0pOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01YNTA5RGF0YS5qYXZhIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTVg1MDlEYXRhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRiMWNkYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01YNTA5RGF0YS5qYXZhCkBAIC0wLDAgKzEsMjgxIEBACisvKgorICogQ29weXJpZ2h0IDIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbTsKKworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5zZWN1cml0eS5jZXJ0Lio7CitpbXBvcnQgamF2YS51dGlsLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZG9tLkRPTUNyeXB0b0NvbnRleHQ7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLmtleWluZm8uWDUwOUlzc3VlclNlcmlhbDsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcua2V5aW5mby5YNTA5RGF0YTsKK2ltcG9ydCBqYXZheC5zZWN1cml0eS5hdXRoLng1MDAuWDUwMFByaW5jaXBhbDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLkJhc2U2NERlY29kaW5nRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkJhc2U2NDsKKworLyoqCisgKiBET00tYmFzZWQgaW1wbGVtZW50YXRpb24gb2YgWDUwOURhdGEuCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICovCisvL0BAQCBjaGVjayBmb3IgaWxsZWdhbCBjb21iaW5hdGlvbnMgb2YgZGF0YSB2aW9sYXRpbmcgTVVTVHMgaW4gVzNjIHNwZWMKK3B1YmxpYyBmaW5hbCBjbGFzcyBET01YNTA5RGF0YSBleHRlbmRzIERPTVN0cnVjdHVyZSBpbXBsZW1lbnRzIFg1MDlEYXRhIHsKKworICAgIHByaXZhdGUgZmluYWwgTGlzdCBjb250ZW50OworICAgIHByaXZhdGUgQ2VydGlmaWNhdGVGYWN0b3J5IGNmOworCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIERPTVg1MDlEYXRhLgorICAgICAqCisgICAgICogQHBhcmFtIGNvbnRlbnQgYSBsaXN0IG9mIG9uZSBvciBtb3JlIFguNTA5IGRhdGEgdHlwZXMuIFZhbGlkIHR5cGVzIGFyZQorICAgICAqICAgIHtAbGluayBTdHJpbmd9IChzdWJqZWN0IG5hbWVzKSwgPGNvZGU+Ynl0ZVtdPC9jb2RlPiAoc3ViamVjdCBrZXkgaWRzKSwKKyAgICAgKiAgICB7QGxpbmsgamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZX0sIHtAbGluayBYNTA5Q1JMfSwKKyAgICAgKiAgICBvciB7QGxpbmsgamF2YXgueG1sLmRzaWcuWE1MU3RydWN0dXJlfSAoe0BsaW5rIFg1MDlJc3N1ZXJTZXJpYWx9CisgICAgICogICAgb2JqZWN0cyBvciBlbGVtZW50cyBmcm9tIGFuIGV4dGVybmFsIG5hbWVzcGFjZSkuIFRoZSBsaXN0IGlzIAorICAgICAqICAgIGRlZmVuc2l2ZWx5IGNvcGllZCB0byBwcm90ZWN0IGFnYWluc3Qgc3Vic2VxdWVudCBtb2RpZmljYXRpb24uCisgICAgICogQHJldHVybiBhIDxjb2RlPlg1MDlEYXRhPC9jb2RlPgorICAgICAqIEB0aHJvd3MgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgPGNvZGU+Y29udGVudDwvY29kZT4gaXMgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiA8Y29kZT5jb250ZW50PC9jb2RlPiBpcyBlbXB0eQorICAgICAqIEB0aHJvd3MgQ2xhc3NDYXN0RXhjZXB0aW9uIGlmIDxjb2RlPmNvbnRlbnQ8L2NvZGU+IGNvbnRhaW5zIGFueSBlbnRyaWVzCisgICAgICogICAgdGhhdCBhcmUgbm90IG9mIG9uZSBvZiB0aGUgdmFsaWQgdHlwZXMgbWVudGlvbmVkIGFib3ZlCisgICAgICovCisgICAgcHVibGljIERPTVg1MDlEYXRhKExpc3QgY29udGVudCkgeworICAgICAgICBpZiAoY29udGVudCA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oImNvbnRlbnQgY2Fubm90IGJlIG51bGwiKTsKKyAgICAgICAgfQorICAgICAgICBMaXN0IGNvbnRlbnRDb3B5ID0gbmV3IEFycmF5TGlzdChjb250ZW50KTsKKyAgICAgICAgaWYgKGNvbnRlbnRDb3B5LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiY29udGVudCBjYW5ub3QgYmUgZW1wdHkiKTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGludCBpID0gMCwgc2l6ZSA9IGNvbnRlbnRDb3B5LnNpemUoKTsgaSA8IHNpemU7IGkrKykgeworCSAgICBPYmplY3QgeDUwOVR5cGUgPSBjb250ZW50Q29weS5nZXQoaSk7CisJICAgIGlmICh4NTA5VHlwZSBpbnN0YW5jZW9mIFN0cmluZykgeworCQluZXcgWDUwMFByaW5jaXBhbCgoU3RyaW5nKSB4NTA5VHlwZSk7CisJICAgIH0gZWxzZSBpZiAoISh4NTA5VHlwZSBpbnN0YW5jZW9mIGJ5dGVbXSkgJiYKKyAgICAgICAgICAgICAgICAhKHg1MDlUeXBlIGluc3RhbmNlb2YgWDUwOUNlcnRpZmljYXRlKSAmJgorICAgICAgICAgICAgICAgICEoeDUwOVR5cGUgaW5zdGFuY2VvZiBYNTA5Q1JMKSAmJgorICAgICAgICAgICAgICAgICEoeDUwOVR5cGUgaW5zdGFuY2VvZiBYTUxTdHJ1Y3R1cmUpKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IENsYXNzQ2FzdEV4Y2VwdGlvbgorICAgICAgICAgICAgICAgICAgICAoImNvbnRlbnRbIitpKyJdIGlzIG5vdCBhIHZhbGlkIFg1MDlEYXRhIHR5cGUiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB0aGlzLmNvbnRlbnQgPSBDb2xsZWN0aW9ucy51bm1vZGlmaWFibGVMaXN0KGNvbnRlbnRDb3B5KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+RE9NWDUwOURhdGE8L2NvZGU+IGZyb20gYW4gZWxlbWVudC4KKyAgICAgKgorICAgICAqIEBwYXJhbSB4ZEVsZW0gYW4gWDUwOURhdGEgZWxlbWVudAorICAgICAqIEB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBhbiBlcnJvciB3aGlsZSB1bm1hcnNoYWxsaW5nCisgICAgICovCisgICAgcHVibGljIERPTVg1MDlEYXRhKEVsZW1lbnQgeGRFbGVtKSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgIC8vIGdldCBhbGwgY2hpbGRyZW4gbm9kZXMKKyAgICAgICAgTm9kZUxpc3QgbmwgPSB4ZEVsZW0uZ2V0Q2hpbGROb2RlcygpOworCWludCBsZW5ndGggPSBubC5nZXRMZW5ndGgoKTsKKwlMaXN0IGNvbnRlbnQgPSBuZXcgQXJyYXlMaXN0KGxlbmd0aCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIE5vZGUgY2hpbGQgPSBubC5pdGVtKGkpOworICAgICAgICAgICAgLy8gaWdub3JlIGFsbCBub24tRWxlbWVudCBub2RlcworICAgICAgICAgICAgaWYgKGNoaWxkLmdldE5vZGVUeXBlKCkgIT0gTm9kZS5FTEVNRU5UX05PREUpIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwkgICAgfQorCisgICAgICAgICAgICBFbGVtZW50IGNoaWxkRWxlbSA9IChFbGVtZW50KSBjaGlsZDsKKwkgICAgU3RyaW5nIGxvY2FsTmFtZSA9IGNoaWxkRWxlbS5nZXRMb2NhbE5hbWUoKTsKKyAgICAgICAgICAgIGlmIChsb2NhbE5hbWUuZXF1YWxzKCJYNTA5Q2VydGlmaWNhdGUiKSkgeworICAgICAgICAgICAgICAgIGNvbnRlbnQuYWRkKHVubWFyc2hhbFg1MDlDZXJ0aWZpY2F0ZShjaGlsZEVsZW0pKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobG9jYWxOYW1lLmVxdWFscygiWDUwOUlzc3VlclNlcmlhbCIpKSB7CisgICAgICAgICAgICAgICAgY29udGVudC5hZGQobmV3IERPTVg1MDlJc3N1ZXJTZXJpYWwoY2hpbGRFbGVtKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGxvY2FsTmFtZS5lcXVhbHMoIlg1MDlTdWJqZWN0TmFtZSIpKSB7CisgICAgICAgICAgICAgICAgY29udGVudC5hZGQoY2hpbGRFbGVtLmdldEZpcnN0Q2hpbGQoKS5nZXROb2RlVmFsdWUoKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGxvY2FsTmFtZS5lcXVhbHMoIlg1MDlTS0kiKSkgeworCQl0cnkgeworICAgICAgICAgICAgICAgICAgICBjb250ZW50LmFkZChCYXNlNjQuZGVjb2RlKGNoaWxkRWxlbSkpOworCQl9IGNhdGNoIChCYXNlNjREZWNvZGluZ0V4Y2VwdGlvbiBiZGUpIHsKKwkJICAgIHRocm93IG5ldyBNYXJzaGFsRXhjZXB0aW9uKCJjYW5ub3QgZGVjb2RlIFg1MDlTS0kiLCBiZGUpOworCQl9CisgICAgICAgICAgICB9IGVsc2UgaWYgKGxvY2FsTmFtZS5lcXVhbHMoIlg1MDlDUkwiKSkgeworICAgICAgICAgICAgICAgIGNvbnRlbnQuYWRkKHVubWFyc2hhbFg1MDlDUkwoY2hpbGRFbGVtKSk7CisgICAgICAgICAgICB9IGVsc2UgeworCQljb250ZW50LmFkZChuZXcgamF2YXgueG1sLmNyeXB0by5kb20uRE9NU3RydWN0dXJlKGNoaWxkRWxlbSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHRoaXMuY29udGVudCA9IENvbGxlY3Rpb25zLnVubW9kaWZpYWJsZUxpc3QoY29udGVudCk7CisgICAgfQorCisgICAgcHVibGljIExpc3QgZ2V0Q29udGVudCgpIHsKKwlyZXR1cm4gY29udGVudDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBtYXJzaGFsKE5vZGUgcGFyZW50LCBTdHJpbmcgZHNQcmVmaXgsIERPTUNyeXB0b0NvbnRleHQgY29udGV4dCkKKwl0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgIERvY3VtZW50IG93bmVyRG9jID0gRE9NVXRpbHMuZ2V0T3duZXJEb2N1bWVudChwYXJlbnQpOworCisgICAgICAgIEVsZW1lbnQgeGRFbGVtID0gRE9NVXRpbHMuY3JlYXRlRWxlbWVudAorICAgICAgICAgICAgKG93bmVyRG9jLCAiWDUwOURhdGEiLCBYTUxTaWduYXR1cmUuWE1MTlMsIGRzUHJlZml4KTsKKworICAgICAgICAvLyBhcHBlbmQgY2hpbGRyZW4gYW5kIHByZXNlcnZlIG9yZGVyCisJZm9yIChpbnQgaSA9IDAsIHNpemUgPSBjb250ZW50LnNpemUoKTsgaSA8IHNpemU7IGkrKykgeworCSAgICBPYmplY3Qgb2JqZWN0ID0gY29udGVudC5nZXQoaSk7CisgICAgICAgICAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgWDUwOUNlcnRpZmljYXRlKSB7CisgICAgICAgICAgICAgICAgbWFyc2hhbENlcnQoKFg1MDlDZXJ0aWZpY2F0ZSkgb2JqZWN0LHhkRWxlbSxvd25lckRvYyxkc1ByZWZpeCk7CisJICAgIH0gZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgWE1MU3RydWN0dXJlKSB7CisJICAgICAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgWDUwOUlzc3VlclNlcmlhbCkgeworCQkgICAgKChET01YNTA5SXNzdWVyU2VyaWFsKSBvYmplY3QpLm1hcnNoYWwKKwkJCSh4ZEVsZW0sIGRzUHJlZml4LCBjb250ZXh0KTsKKwkJfSBlbHNlIHsKKwkJICAgIGphdmF4LnhtbC5jcnlwdG8uZG9tLkRPTVN0cnVjdHVyZSBkb21Db250ZW50ID0KKwkJCShqYXZheC54bWwuY3J5cHRvLmRvbS5ET01TdHJ1Y3R1cmUpIG9iamVjdDsKKwkJICAgIERPTVV0aWxzLmFwcGVuZENoaWxkKHhkRWxlbSwgZG9tQ29udGVudC5nZXROb2RlKCkpOworCQl9CisJICAgIH0gZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgYnl0ZVtdKSB7CisgICAgICAgICAgICAgICAgbWFyc2hhbFNLSSgoYnl0ZVtdKSBvYmplY3QsIHhkRWxlbSwgb3duZXJEb2MsIGRzUHJlZml4KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAob2JqZWN0IGluc3RhbmNlb2YgU3RyaW5nKSB7CisgICAgICAgICAgICAgICAgbWFyc2hhbFN1YmplY3ROYW1lKChTdHJpbmcpIG9iamVjdCwgeGRFbGVtLCBvd25lckRvYyxkc1ByZWZpeCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFg1MDlDUkwpIHsKKyAgICAgICAgICAgICAgICBtYXJzaGFsQ1JMKChYNTA5Q1JMKSBvYmplY3QsIHhkRWxlbSwgb3duZXJEb2MsIGRzUHJlZml4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZCh4ZEVsZW0pOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBtYXJzaGFsU0tJKGJ5dGVbXSBza2lkLCBOb2RlIHBhcmVudCwgRG9jdW1lbnQgZG9jLCAKKwlTdHJpbmcgZHNQcmVmaXgpIHsKKworICAgICAgICBFbGVtZW50IHNraWRFbGVtID0gRE9NVXRpbHMuY3JlYXRlRWxlbWVudAorCSAgICAoZG9jLCAiWDUwOVNLSSIsIFhNTFNpZ25hdHVyZS5YTUxOUywgZHNQcmVmaXgpOworICAgICAgICBza2lkRWxlbS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoQmFzZTY0LmVuY29kZShza2lkKSkpOworICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoc2tpZEVsZW0pOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBtYXJzaGFsU3ViamVjdE5hbWUoU3RyaW5nIG5hbWUsIE5vZGUgcGFyZW50LCBEb2N1bWVudCBkb2MsIAorCVN0cmluZyBkc1ByZWZpeCkgeworCisgICAgICAgIEVsZW1lbnQgc25FbGVtID0gRE9NVXRpbHMuY3JlYXRlRWxlbWVudAorCSAgICAoZG9jLCAiWDUwOVN1YmplY3ROYW1lIiwgWE1MU2lnbmF0dXJlLlhNTE5TLCBkc1ByZWZpeCk7CisgICAgICAgIHNuRWxlbS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUobmFtZSkpOworICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoc25FbGVtKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgbWFyc2hhbENlcnQoWDUwOUNlcnRpZmljYXRlIGNlcnQsIE5vZGUgcGFyZW50LCBEb2N1bWVudCBkb2MsCisJU3RyaW5nIGRzUHJlZml4KSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisKKyAgICAgICAgRWxlbWVudCBjZXJ0RWxlbSA9IERPTVV0aWxzLmNyZWF0ZUVsZW1lbnQKKwkgICAgKGRvYywgIlg1MDlDZXJ0aWZpY2F0ZSIsIFhNTFNpZ25hdHVyZS5YTUxOUywgZHNQcmVmaXgpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY2VydEVsZW0uYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlCisgICAgICAgICAgICAgICAgKEJhc2U2NC5lbmNvZGUoY2VydC5nZXRFbmNvZGVkKCkpKSk7CisgICAgICAgIH0gY2F0Y2ggKENlcnRpZmljYXRlRW5jb2RpbmdFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE1hcnNoYWxFeGNlcHRpb24oIkVycm9yIGVuY29kaW5nIFg1MDlDZXJ0aWZpY2F0ZSIsIGUpOworICAgICAgICB9CisgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChjZXJ0RWxlbSk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIG1hcnNoYWxDUkwoWDUwOUNSTCBjcmwsIE5vZGUgcGFyZW50LCBEb2N1bWVudCBkb2MsIAorCVN0cmluZyBkc1ByZWZpeCkgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworCisgICAgICAgIEVsZW1lbnQgY3JsRWxlbSA9IERPTVV0aWxzLmNyZWF0ZUVsZW1lbnQKKwkgICAgKGRvYywgIlg1MDlDUkwiLCBYTUxTaWduYXR1cmUuWE1MTlMsIGRzUHJlZml4KTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNybEVsZW0uYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlCisgICAgICAgICAgICAgICAgKEJhc2U2NC5lbmNvZGUoY3JsLmdldEVuY29kZWQoKSkpKTsKKyAgICAgICAgfSBjYXRjaCAoQ1JMRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBNYXJzaGFsRXhjZXB0aW9uKCJFcnJvciBlbmNvZGluZyBYNTA5Q1JMIiwgZSk7CisgICAgICAgIH0KKyAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGNybEVsZW0pOworICAgIH0KKworICAgIHByaXZhdGUgWDUwOUNlcnRpZmljYXRlIHVubWFyc2hhbFg1MDlDZXJ0aWZpY2F0ZShFbGVtZW50IGVsZW0pIAorCXRocm93cyBNYXJzaGFsRXhjZXB0aW9uIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIEJ5dGVBcnJheUlucHV0U3RyZWFtIGJzID0gdW5tYXJzaGFsQmFzZTY0QmluYXJ5KGVsZW0pOworICAgICAgICAgICAgcmV0dXJuIChYNTA5Q2VydGlmaWNhdGUpIGNmLmdlbmVyYXRlQ2VydGlmaWNhdGUoYnMpOworICAgICAgICB9IGNhdGNoIChDZXJ0aWZpY2F0ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTWFyc2hhbEV4Y2VwdGlvbigiQ2Fubm90IGNyZWF0ZSBYNTA5Q2VydGlmaWNhdGUiLCBlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgWDUwOUNSTCB1bm1hcnNoYWxYNTA5Q1JMKEVsZW1lbnQgZWxlbSkgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworICAgICAgICB0cnkgeworICAgICAgICAgICAgQnl0ZUFycmF5SW5wdXRTdHJlYW0gYnMgPSB1bm1hcnNoYWxCYXNlNjRCaW5hcnkoZWxlbSk7CisgICAgICAgICAgICByZXR1cm4gKFg1MDlDUkwpIGNmLmdlbmVyYXRlQ1JMKGJzKTsKKyAgICAgICAgfSBjYXRjaCAoQ1JMRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBNYXJzaGFsRXhjZXB0aW9uKCJDYW5ub3QgY3JlYXRlIFg1MDlDUkwiLCBlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgQnl0ZUFycmF5SW5wdXRTdHJlYW0gdW5tYXJzaGFsQmFzZTY0QmluYXJ5KEVsZW1lbnQgZWxlbSkgCisJdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworICAgICAgICB0cnkgeworICAgICAgICAgICAgaWYgKGNmID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBjZiA9IENlcnRpZmljYXRlRmFjdG9yeS5nZXRJbnN0YW5jZSgiWC41MDkiKTsKKwkgICAgfQorICAgICAgICAgICAgcmV0dXJuIG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShCYXNlNjQuZGVjb2RlKGVsZW0pKTsKKyAgICAgICAgfSBjYXRjaCAoQ2VydGlmaWNhdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE1hcnNoYWxFeGNlcHRpb24oIkNhbm5vdCBjcmVhdGUgQ2VydGlmaWNhdGVGYWN0b3J5IiwgZSk7CisgICAgICAgIH0gY2F0Y2ggKEJhc2U2NERlY29kaW5nRXhjZXB0aW9uIGJkZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE1hcnNoYWxFeGNlcHRpb24oIkNhbm5vdCBkZWNvZGUgQmFzZTY0LWVuY29kZWQgdmFsIiwgYmRlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3QgbykgeworCWlmICh0aGlzID09IG8pIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCX0KKworICAgICAgICBpZiAoIShvIGluc3RhbmNlb2YgWDUwOURhdGEpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisJfQorICAgICAgICBYNTA5RGF0YSBveGQgPSAoWDUwOURhdGEpIG87CisKKwlMaXN0IG9jb250ZW50ID0gb3hkLmdldENvbnRlbnQoKTsKKwlpbnQgc2l6ZSA9IGNvbnRlbnQuc2l6ZSgpOworCWlmIChzaXplICE9IG9jb250ZW50LnNpemUoKSkgeworCSAgICByZXR1cm4gZmFsc2U7CisJfQorCisJZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKwkgICAgT2JqZWN0IHggPSBjb250ZW50LmdldChpKTsKKwkgICAgT2JqZWN0IG94ID0gb2NvbnRlbnQuZ2V0KGkpOworCSAgICBpZiAoeCBpbnN0YW5jZW9mIGJ5dGVbXSkgeworCQlpZiAoIShveCBpbnN0YW5jZW9mIGJ5dGVbXSkgfHwgCisJCSAgICAhQXJyYXlzLmVxdWFscygoYnl0ZVtdKSB4LCAoYnl0ZVtdKSBveCkpIHsKKwkJICAgIHJldHVybiBmYWxzZTsKKwkJfSAKKwkgICAgfSBlbHNlIHsKKwkJaWYgKCEoeC5lcXVhbHMob3gpKSkgeworCQkgICAgcmV0dXJuIGZhbHNlOworCQl9CisJICAgIH0KKwl9CisKKwlyZXR1cm4gdHJ1ZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NWDUwOUlzc3VlclNlcmlhbC5qYXZhIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTVg1MDlJc3N1ZXJTZXJpYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzI4NWM2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTVg1MDlJc3N1ZXJTZXJpYWwuamF2YQpAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2Ugb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb207CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kb20uRE9NQ3J5cHRvQ29udGV4dDsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcua2V5aW5mby5YNTA5SXNzdWVyU2VyaWFsOworCitpbXBvcnQgamF2YS5tYXRoLkJpZ0ludGVnZXI7CitpbXBvcnQgamF2YXguc2VjdXJpdHkuYXV0aC54NTAwLlg1MDBQcmluY2lwYWw7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworCisvKioKKyAqIERPTS1iYXNlZCBpbXBsZW1lbnRhdGlvbiBvZiBYNTA5SXNzdWVyU2VyaWFsLgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqLworcHVibGljIGZpbmFsIGNsYXNzIERPTVg1MDlJc3N1ZXJTZXJpYWwgZXh0ZW5kcyBET01TdHJ1Y3R1cmUgCisgICAgaW1wbGVtZW50cyBYNTA5SXNzdWVyU2VyaWFsIHsKKworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIGlzc3Vlck5hbWU7CisgICAgcHJpdmF0ZSBmaW5hbCBCaWdJbnRlZ2VyIHNlcmlhbE51bWJlcjsKKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSA8Y29kZT5ET01YNTA5SXNzdWVyU2VyaWFsPC9jb2RlPiBjb250YWluaW5nIHRoZSBzcGVjaWZpZWQgCisgICAgICogaXNzdWVyIGRpc3Rpbmd1aXNoZWQgbmFtZS9zZXJpYWwgbnVtYmVyIHBhaXIuCisgICAgICoKKyAgICAgKiBAcGFyYW0gaXNzdWVyTmFtZSB0aGUgWC41MDkgaXNzdWVyIGRpc3Rpbmd1aXNoZWQgbmFtZSBpbiBSRkMgMjI1MyAKKyAgICAgKiAgICBTdHJpbmcgZm9ybWF0CisgICAgICogQHBhcmFtIHNlcmlhbE51bWJlciB0aGUgc2VyaWFsIG51bWJlcgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBmb3JtYXQgb2YgPGNvZGU+aXNzdWVyTmFtZTwvY29kZT4KKyAgICAgKiAgICBpcyBub3QgUkZDIDIyNTMgY29tcGxpYW50CisgICAgICogQHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiA8Y29kZT5pc3N1ZXJOYW1lPC9jb2RlPiBvciAKKyAgICAgKiAgICA8Y29kZT5zZXJpYWxOdW1iZXI8L2NvZGU+IGlzIDxjb2RlPm51bGw8L2NvZGU+IAorICAgICAqLworICAgIHB1YmxpYyBET01YNTA5SXNzdWVyU2VyaWFsKFN0cmluZyBpc3N1ZXJOYW1lLCBCaWdJbnRlZ2VyIHNlcmlhbE51bWJlcikgeworCWlmIChpc3N1ZXJOYW1lID09IG51bGwpIHsKKwkgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJpc3N1ZXJOYW1lIGNhbm5vdCBiZSBudWxsIik7CisJfQorCWlmIChzZXJpYWxOdW1iZXIgPT0gbnVsbCkgeworCSAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oInNlcmlhbE51bWJlciBjYW5ub3QgYmUgbnVsbCIpOworCX0KKwkvLyBjaGVjayB0aGF0IGlzc3VlciBkaXN0aW5ndWlzaGVkIG5hbWUgY29uZm9ybXMgdG8gUkZDIDIyNTMKKwluZXcgWDUwMFByaW5jaXBhbChpc3N1ZXJOYW1lKTsKKwl0aGlzLmlzc3Vlck5hbWUgPSBpc3N1ZXJOYW1lOworCXRoaXMuc2VyaWFsTnVtYmVyID0gc2VyaWFsTnVtYmVyOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSA8Y29kZT5ET01YNTA5SXNzdWVyU2VyaWFsPC9jb2RlPiBmcm9tIGFuIGVsZW1lbnQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gaXNFbGVtIGFuIFg1MDlJc3N1ZXJTZXJpYWwgZWxlbWVudAorICAgICAqLworICAgIHB1YmxpYyBET01YNTA5SXNzdWVyU2VyaWFsKEVsZW1lbnQgaXNFbGVtKSB7CisgICAgICAgIEVsZW1lbnQgaU5FbGVtID0gRE9NVXRpbHMuZ2V0Rmlyc3RDaGlsZEVsZW1lbnQoaXNFbGVtKTsKKyAgICAgICAgRWxlbWVudCBzTkVsZW0gPSBET01VdGlscy5nZXROZXh0U2libGluZ0VsZW1lbnQoaU5FbGVtKTsKKyAgICAgICAgaXNzdWVyTmFtZSA9IGlORWxlbS5nZXRGaXJzdENoaWxkKCkuZ2V0Tm9kZVZhbHVlKCk7CisJc2VyaWFsTnVtYmVyID0gbmV3IEJpZ0ludGVnZXIoc05FbGVtLmdldEZpcnN0Q2hpbGQoKS5nZXROb2RlVmFsdWUoKSk7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBnZXRJc3N1ZXJOYW1lKCkgeworCXJldHVybiBpc3N1ZXJOYW1lOworICAgIH0KKworICAgIHB1YmxpYyBCaWdJbnRlZ2VyIGdldFNlcmlhbE51bWJlcigpIHsKKwlyZXR1cm4gc2VyaWFsTnVtYmVyOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG1hcnNoYWwoTm9kZSBwYXJlbnQsIFN0cmluZyBkc1ByZWZpeCwgRE9NQ3J5cHRvQ29udGV4dCBjb250ZXh0KQorCXRocm93cyBNYXJzaGFsRXhjZXB0aW9uIHsKKyAgICAgICAgRG9jdW1lbnQgb3duZXJEb2MgPSBET01VdGlscy5nZXRPd25lckRvY3VtZW50KHBhcmVudCk7CisKKyAgICAgICAgRWxlbWVudCBpc0VsZW0gPSBET01VdGlscy5jcmVhdGVFbGVtZW50CisgICAgICAgICAgICAob3duZXJEb2MsICJYNTA5SXNzdWVyU2VyaWFsIiwgWE1MU2lnbmF0dXJlLlhNTE5TLCBkc1ByZWZpeCk7CisgICAgICAgIEVsZW1lbnQgaW5FbGVtID0gRE9NVXRpbHMuY3JlYXRlRWxlbWVudAorICAgICAgICAgICAgKG93bmVyRG9jLCAiWDUwOUlzc3Vlck5hbWUiLCBYTUxTaWduYXR1cmUuWE1MTlMsIGRzUHJlZml4KTsKKyAgICAgICAgRWxlbWVudCBzbkVsZW0gPSBET01VdGlscy5jcmVhdGVFbGVtZW50CisgICAgICAgICAgICAob3duZXJEb2MsICJYNTA5U2VyaWFsTnVtYmVyIiwgWE1MU2lnbmF0dXJlLlhNTE5TLCBkc1ByZWZpeCk7CisgICAgICAgIGluRWxlbS5hcHBlbmRDaGlsZChvd25lckRvYy5jcmVhdGVUZXh0Tm9kZShpc3N1ZXJOYW1lKSk7CisgICAgICAgIHNuRWxlbS5hcHBlbmRDaGlsZChvd25lckRvYy5jcmVhdGVUZXh0Tm9kZShzZXJpYWxOdW1iZXIudG9TdHJpbmcoKSkpOworICAgICAgICBpc0VsZW0uYXBwZW5kQ2hpbGQoaW5FbGVtKTsKKyAgICAgICAgaXNFbGVtLmFwcGVuZENoaWxkKHNuRWxlbSk7CisgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChpc0VsZW0pOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKSB7CisJaWYgKHRoaXMgPT0gb2JqKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwl9CisgICAgICAgIGlmICghKG9iaiBpbnN0YW5jZW9mIFg1MDlJc3N1ZXJTZXJpYWwpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisJfQorICAgICAgICBYNTA5SXNzdWVyU2VyaWFsIG9pcyA9IChYNTA5SXNzdWVyU2VyaWFsKSBvYmo7CisJcmV0dXJuIChpc3N1ZXJOYW1lLmVxdWFscyhvaXMuZ2V0SXNzdWVyTmFtZSgpKSAmJiAKKwkgICAgc2VyaWFsTnVtYmVyLmVxdWFscyhvaXMuZ2V0U2VyaWFsTnVtYmVyKCkpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NWE1MT2JqZWN0LmphdmEgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NWE1MT2JqZWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFhZjE4MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01YTUxPYmplY3QuamF2YQpAQCAtMCwwICsxLDIxMyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2Ugb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb207CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kb20uRE9NQ3J5cHRvQ29udGV4dDsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKKworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHJvdmlkZXI7CitpbXBvcnQgamF2YS51dGlsLio7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OworCisvKioKKyAqIERPTS1iYXNlZCBpbXBsZW1lbnRhdGlvbiBvZiBYTUxPYmplY3QuCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgRE9NWE1MT2JqZWN0IGV4dGVuZHMgRE9NU3RydWN0dXJlIGltcGxlbWVudHMgWE1MT2JqZWN0IHsKKyAKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBpZDsKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBtaW1lVHlwZTsKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBlbmNvZGluZzsKKyAgICBwcml2YXRlIGZpbmFsIExpc3QgY29udGVudDsKKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYW4gPGNvZGU+WE1MT2JqZWN0PC9jb2RlPiBmcm9tIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVycy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjb250ZW50IGEgbGlzdCBvZiB7QGxpbmsgWE1MU3RydWN0dXJlfXMuIFRoZSBsaXN0CisgICAgICogICAgaXMgZGVmZW5zaXZlbHkgY29waWVkIHRvIHByb3RlY3QgYWdhaW5zdCBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbi4KKyAgICAgKiAgICBNYXkgYmUgPGNvZGU+bnVsbDwvY29kZT4gb3IgZW1wdHkuCisgICAgICogQHBhcmFtIGlkIHRoZSBJZCAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+KQorICAgICAqIEBwYXJhbSBtaW1lVHlwZSB0aGUgbWltZSB0eXBlIChtYXkgYmUgPGNvZGU+bnVsbDwvY29kZT4pCisgICAgICogQHBhcmFtIGVuY29kaW5nIHRoZSBlbmNvZGluZyAobWF5IGJlIDxjb2RlPm51bGw8L2NvZGU+KQorICAgICAqIEByZXR1cm4gYW4gPGNvZGU+WE1MT2JqZWN0PC9jb2RlPgorICAgICAqIEB0aHJvd3MgQ2xhc3NDYXN0RXhjZXB0aW9uIGlmIDxjb2RlPmNvbnRlbnQ8L2NvZGU+IGNvbnRhaW5zIGFueQorICAgICAqICAgIGVudHJpZXMgdGhhdCBhcmUgbm90IG9mIHR5cGUge0BsaW5rIFhNTFN0cnVjdHVyZX0KKyAgICAgKi8KKyAgICBwdWJsaWMgRE9NWE1MT2JqZWN0KExpc3QgY29udGVudCwgU3RyaW5nIGlkLCBTdHJpbmcgbWltZVR5cGUsIAorCVN0cmluZyBlbmNvZGluZykgeworICAgICAgICBpZiAoY29udGVudCA9PSBudWxsIHx8IGNvbnRlbnQuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICB0aGlzLmNvbnRlbnQgPSBDb2xsZWN0aW9ucy5FTVBUWV9MSVNUOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgTGlzdCBjb250ZW50Q29weSA9IG5ldyBBcnJheUxpc3QoY29udGVudCk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMCwgc2l6ZSA9IGNvbnRlbnRDb3B5LnNpemUoKTsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgICAgIGlmICghKGNvbnRlbnRDb3B5LmdldChpKSBpbnN0YW5jZW9mIFhNTFN0cnVjdHVyZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IENsYXNzQ2FzdEV4Y2VwdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgKCJjb250ZW50WyIraSsiXSBpcyBub3QgYSB2YWxpZCB0eXBlIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5jb250ZW50ID0gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlTGlzdChjb250ZW50Q29weSk7CisgICAgICAgIH0KKwl0aGlzLmlkID0gaWQ7CisJdGhpcy5taW1lVHlwZSA9IG1pbWVUeXBlOworCXRoaXMuZW5jb2RpbmcgPSBlbmNvZGluZzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGFuIDxjb2RlPlhNTE9iamVjdDwvY29kZT4gZnJvbSBhbiBlbGVtZW50LgorICAgICAqCisgICAgICogQHBhcmFtIG9iakVsZW0gYW4gT2JqZWN0IGVsZW1lbnQKKyAgICAgKiBAdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24gaWYgdGhlcmUgaXMgYW4gZXJyb3Igd2hlbiB1bm1hcnNoYWxsaW5nCisgICAgICovCisgICAgcHVibGljIERPTVhNTE9iamVjdChFbGVtZW50IG9iakVsZW0sIFhNTENyeXB0b0NvbnRleHQgY29udGV4dCwKKwlQcm92aWRlciBwcm92aWRlcikgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworCS8vIHVubWFyc2hhbCBhdHRyaWJ1dGVzCisgICAgICAgIHRoaXMuZW5jb2RpbmcgPSBET01VdGlscy5nZXRBdHRyaWJ1dGVWYWx1ZShvYmpFbGVtLCAiRW5jb2RpbmciKTsKKyAgICAgICAgdGhpcy5pZCA9IERPTVV0aWxzLmdldEF0dHJpYnV0ZVZhbHVlKG9iakVsZW0sICJJZCIpOworICAgICAgICB0aGlzLm1pbWVUeXBlID0gRE9NVXRpbHMuZ2V0QXR0cmlidXRlVmFsdWUob2JqRWxlbSwgIk1pbWVUeXBlIik7CisKKwlOb2RlTGlzdCBub2RlcyA9IG9iakVsZW0uZ2V0Q2hpbGROb2RlcygpOworCWludCBsZW5ndGggPSBub2Rlcy5nZXRMZW5ndGgoKTsKKwlMaXN0IGNvbnRlbnQgPSBuZXcgQXJyYXlMaXN0KGxlbmd0aCk7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgTm9kZSBjaGlsZCA9IG5vZGVzLml0ZW0oaSk7CisgICAgICAgICAgICBpZiAoY2hpbGQuZ2V0Tm9kZVR5cGUoKSA9PSBOb2RlLkVMRU1FTlRfTk9ERSkgeworCQlFbGVtZW50IGNoaWxkRWxlbSA9IChFbGVtZW50KSBjaGlsZDsKKyAgICAgICAgICAgICAgICBTdHJpbmcgdGFnID0gY2hpbGRFbGVtLmdldExvY2FsTmFtZSgpOworICAgICAgICAgICAgICAgIGlmICh0YWcuZXF1YWxzKCJNYW5pZmVzdCIpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQuYWRkKG5ldyBET01NYW5pZmVzdChjaGlsZEVsZW0sIGNvbnRleHQsIHByb3ZpZGVyKSk7CisJCSAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRhZy5lcXVhbHMoIlNpZ25hdHVyZVByb3BlcnRpZXMiKSkgeworICAgICAgICAgICAgICAgICAgICBjb250ZW50LmFkZChuZXcgRE9NU2lnbmF0dXJlUHJvcGVydGllcyhjaGlsZEVsZW0pKTsKKwkJICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGFnLmVxdWFscygiWDUwOURhdGEiKSkgeworICAgICAgICAgICAgICAgICAgICBjb250ZW50LmFkZChuZXcgRE9NWDUwOURhdGEoY2hpbGRFbGVtKSk7CisJCSAgICBjb250aW51ZTsKKwkJfQorCQkvL0BAQEZJWE1FOiBjaGVjayBmb3Igb3RoZXIgZHNpZyBzdHJ1Y3R1cmVzCisJICAgIH0KKwkgICAgY29udGVudC5hZGQobmV3IGphdmF4LnhtbC5jcnlwdG8uZG9tLkRPTVN0cnVjdHVyZShjaGlsZCkpOworCX0KKyAgICAgICAgaWYgKGNvbnRlbnQuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICB0aGlzLmNvbnRlbnQgPSBDb2xsZWN0aW9ucy5FTVBUWV9MSVNUOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5jb250ZW50ID0gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlTGlzdChjb250ZW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBMaXN0IGdldENvbnRlbnQoKSB7CisgICAgICAgIHJldHVybiBjb250ZW50OworICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0SWQoKSB7CisgICAgICAgIHJldHVybiBpZDsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldE1pbWVUeXBlKCkgeworICAgICAgICByZXR1cm4gbWltZVR5cGU7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBnZXRFbmNvZGluZygpIHsKKyAgICAgICAgcmV0dXJuIGVuY29kaW5nOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG1hcnNoYWwoTm9kZSBwYXJlbnQsIFN0cmluZyBkc1ByZWZpeCwgRE9NQ3J5cHRvQ29udGV4dCBjb250ZXh0KQorCXRocm93cyBNYXJzaGFsRXhjZXB0aW9uIHsKKyAgICAgICAgRG9jdW1lbnQgb3duZXJEb2MgPSBET01VdGlscy5nZXRPd25lckRvY3VtZW50KHBhcmVudCk7CisKKyAgICAgICAgRWxlbWVudCBvYmpFbGVtID0gRE9NVXRpbHMuY3JlYXRlRWxlbWVudAorICAgICAgICAgICAgKG93bmVyRG9jLCAiT2JqZWN0IiwgWE1MU2lnbmF0dXJlLlhNTE5TLCBkc1ByZWZpeCk7CisKKwkvLyBzZXQgYXR0cmlidXRlcworICAgICAgICBET01VdGlscy5zZXRBdHRyaWJ1dGVJRChvYmpFbGVtLCAiSWQiLCBpZCk7CisJRE9NVXRpbHMuc2V0QXR0cmlidXRlKG9iakVsZW0sICJNaW1lVHlwZSIsIG1pbWVUeXBlKTsKKyAgICAgICAgRE9NVXRpbHMuc2V0QXR0cmlidXRlKG9iakVsZW0sICJFbmNvZGluZyIsIGVuY29kaW5nKTsKKworICAgICAgICAvLyBjcmVhdGUgYW5kIGFwcGVuZCBhbnkgZWxlbWVudHMgYW5kIG1peGVkIGNvbnRlbnQsIGlmIG5lY2Vzc2FyeQorCWZvciAoaW50IGkgPSAwLCBzaXplID0gY29udGVudC5zaXplKCk7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgIFhNTFN0cnVjdHVyZSBvYmplY3QgPSAoWE1MU3RydWN0dXJlKSBjb250ZW50LmdldChpKTsKKyAgICAgICAgICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBET01TdHJ1Y3R1cmUpIHsKKyAgICAgICAgICAgICAgICAoKERPTVN0cnVjdHVyZSkgb2JqZWN0KS5tYXJzaGFsKG9iakVsZW0sIGRzUHJlZml4LCBjb250ZXh0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisJICAgICAgICBqYXZheC54bWwuY3J5cHRvLmRvbS5ET01TdHJ1Y3R1cmUgZG9tT2JqZWN0ID0gCisJCSAgICAoamF2YXgueG1sLmNyeXB0by5kb20uRE9NU3RydWN0dXJlKSBvYmplY3Q7CisJCURPTVV0aWxzLmFwcGVuZENoaWxkKG9iakVsZW0sIGRvbU9iamVjdC5nZXROb2RlKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisJICAgIAorCXBhcmVudC5hcHBlbmRDaGlsZChvYmpFbGVtKTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG8pIHsKKwlpZiAodGhpcyA9PSBvKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwl9CisKKyAgICAgICAgaWYgKCEobyBpbnN0YW5jZW9mIFhNTE9iamVjdCkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwl9CisgICAgICAgIFhNTE9iamVjdCBveG8gPSAoWE1MT2JqZWN0KSBvOworCisJYm9vbGVhbiBpZHNFcXVhbCA9IChpZCA9PSBudWxsID8gb3hvLmdldElkKCkgPT0gbnVsbCA6CisJICAgIGlkLmVxdWFscyhveG8uZ2V0SWQoKSkpOworCWJvb2xlYW4gZW5jb2RpbmdzRXF1YWwgPSAoZW5jb2RpbmcgPT0gbnVsbCA/IG94by5nZXRFbmNvZGluZygpID09IG51bGwgOgorCSAgICBlbmNvZGluZy5lcXVhbHMob3hvLmdldEVuY29kaW5nKCkpKTsKKwlib29sZWFuIG1pbWVUeXBlc0VxdWFsID0gKG1pbWVUeXBlID09IG51bGwgPyBveG8uZ2V0TWltZVR5cGUoKSA9PSBudWxsIDoKKwkgICAgbWltZVR5cGUuZXF1YWxzKG94by5nZXRNaW1lVHlwZSgpKSk7CisKKwlyZXR1cm4gKGlkc0VxdWFsICYmIGVuY29kaW5nc0VxdWFsICYmIG1pbWVUeXBlc0VxdWFsICYmIAorCSAgICBlcXVhbHNDb250ZW50KG94by5nZXRDb250ZW50KCkpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4gZXF1YWxzQ29udGVudChMaXN0IG90aGVyQ29udGVudCkgeworCWlmIChjb250ZW50LnNpemUoKSAhPSBvdGhlckNvbnRlbnQuc2l6ZSgpKSB7CisJICAgIHJldHVybiBmYWxzZTsKKwl9CisJZm9yIChpbnQgaSA9IDAsIG9zaXplID0gb3RoZXJDb250ZW50LnNpemUoKTsgaSA8IG9zaXplOyBpKyspIHsKKwkgICAgWE1MU3RydWN0dXJlIG94cyA9IChYTUxTdHJ1Y3R1cmUpIG90aGVyQ29udGVudC5nZXQoaSk7CisJICAgIFhNTFN0cnVjdHVyZSB4cyA9IChYTUxTdHJ1Y3R1cmUpIGNvbnRlbnQuZ2V0KGkpOworCSAgICBpZiAob3hzIGluc3RhbmNlb2YgamF2YXgueG1sLmNyeXB0by5kb20uRE9NU3RydWN0dXJlKSB7CisJCWlmICghKHhzIGluc3RhbmNlb2YgamF2YXgueG1sLmNyeXB0by5kb20uRE9NU3RydWN0dXJlKSkgeworCQkgICAgcmV0dXJuIGZhbHNlOworCQl9CisJCU5vZGUgb25vZGUgPSAKKwkJICAgICgoamF2YXgueG1sLmNyeXB0by5kb20uRE9NU3RydWN0dXJlKSBveHMpLmdldE5vZGUoKTsKKwkJTm9kZSBub2RlID0gCisJCSAgICAoKGphdmF4LnhtbC5jcnlwdG8uZG9tLkRPTVN0cnVjdHVyZSkgeHMpLmdldE5vZGUoKTsKKwkJaWYgKCFET01VdGlscy5ub2Rlc0VxdWFsKG5vZGUsIG9ub2RlKSkgeworCQkgICAgcmV0dXJuIGZhbHNlOworCQl9CisJICAgIH0gZWxzZSB7CisJCWlmICghKHhzLmVxdWFscyhveHMpKSkgeworCQkgICAgcmV0dXJuIGZhbHNlOworCQl9CisJICAgIH0KKwl9CisKKwlyZXR1cm4gdHJ1ZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NWE1MU2lnbmF0dXJlLmphdmEgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NWE1MU2lnbmF0dXJlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ2NmY5NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01YTUxTaWduYXR1cmUuamF2YQpAQCAtMCwwICsxLDU3NiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1LTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIFBvcnRpb25zIGNvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbTsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRvbS4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5kb20uRE9NU2lnbkNvbnRleHQ7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLmRvbS5ET01WYWxpZGF0ZUNvbnRleHQ7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLmtleWluZm8uS2V5SW5mbzsKKworaW1wb3J0IGphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LktleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlByb3ZpZGVyOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxldmVsOworaW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5leGNlcHRpb25zLkJhc2U2NERlY29kaW5nRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkJhc2U2NDsKKworLyoqCisgKiBET00tYmFzZWQgaW1wbGVtZW50YXRpb24gb2YgWE1MU2lnbmF0dXJlLgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgSm95Y2UgTGV1bmcKKyAqLworcHVibGljIGZpbmFsIGNsYXNzIERPTVhNTFNpZ25hdHVyZSBleHRlbmRzIERPTVN0cnVjdHVyZSAKKyAgICBpbXBsZW1lbnRzIFhNTFNpZ25hdHVyZSB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBMb2dnZXIgbG9nID0gTG9nZ2VyLmdldExvZ2dlcigib3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20iKTsKKyAgICBwcml2YXRlIFN0cmluZyBpZDsKKyAgICBwcml2YXRlIFNpZ25hdHVyZVZhbHVlIHN2OworICAgIHByaXZhdGUgS2V5SW5mbyBraTsKKyAgICBwcml2YXRlIExpc3Qgb2JqZWN0czsKKyAgICBwcml2YXRlIFNpZ25lZEluZm8gc2k7CisgICAgcHJpdmF0ZSBEb2N1bWVudCBvd25lckRvYyA9IG51bGw7CisgICAgcHJpdmF0ZSBFbGVtZW50IGxvY2FsU2lnRWxlbSA9IG51bGw7CisgICAgcHJpdmF0ZSBFbGVtZW50IHNpZ0VsZW0gPSBudWxsOworICAgIHByaXZhdGUgYm9vbGVhbiB2YWxpZGF0aW9uU3RhdHVzOworICAgIHByaXZhdGUgYm9vbGVhbiB2YWxpZGF0ZWQgPSBmYWxzZTsKKyAgICBwcml2YXRlIEtleVNlbGVjdG9yUmVzdWx0IGtzcjsKKyAgICBwcml2YXRlIEhhc2hNYXAgc2lnbmF0dXJlSWRNYXA7CisKKyAgICBzdGF0aWMgeworCW9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaW5pdCgpOworICAgIH0KKyAKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+RE9NWE1MU2lnbmF0dXJlPC9jb2RlPiBmcm9tIHRoZSBzcGVjaWZpZWQgY29tcG9uZW50cy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzaSB0aGUgPGNvZGU+U2lnbmVkSW5mbzwvY29kZT4KKyAgICAgKiBAcGFyYW0ga2kgdGhlIDxjb2RlPktleUluZm88L2NvZGU+LCBvciA8Y29kZT5udWxsPC9jb2RlPiBpZiBub3Qgc3BlY2lmaWVkCisgICAgICogQHBhcmFtIG9ianMgYSBsaXN0IG9mIDxjb2RlPlhNTE9iamVjdDwvY29kZT5zIG9yIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogIGlmIG5vdCBzcGVjaWZpZWQuIFRoZSBsaXN0IGlzIGNvcGllZCB0byBwcm90ZWN0IGFnYWluc3Qgc3Vic2VxdWVudAorICAgICAqICBtb2RpZmljYXRpb24uCisgICAgICogQHBhcmFtIGlkIGFuIG9wdGlvbmFsIGlkIChzcGVjaWZ5IDxjb2RlPm51bGw8L2NvZGU+IHRvIG9taXQpCisgICAgICogQHBhcmFtIHNpZ25hdHVyZVZhbHVlSWQgYW4gb3B0aW9uYWwgaWQgKHNwZWNpZnkgPGNvZGU+bnVsbDwvY29kZT4gdG8KKyAgICAgKiAgb21pdCkKKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPnNpPC9jb2RlPiBpcyA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqLworICAgIHB1YmxpYyBET01YTUxTaWduYXR1cmUoU2lnbmVkSW5mbyBzaSwgS2V5SW5mbyBraSwgTGlzdCBvYmpzLCBTdHJpbmcgaWQsIAorCVN0cmluZyBzaWduYXR1cmVWYWx1ZUlkKQorICAgIHsKKyAgICAgICAgaWYgKHNpID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigic2lnbmVkSW5mbyBjYW5ub3QgYmUgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIHRoaXMuc2kgPSBzaTsKKyAgICAgICAgdGhpcy5pZCA9IGlkOworICAgICAgICB0aGlzLnN2ID0gbmV3IERPTVNpZ25hdHVyZVZhbHVlKHNpZ25hdHVyZVZhbHVlSWQpOworICAgICAgICBpZiAob2JqcyA9PSBudWxsKSB7CisgICAgICAgICAgICB0aGlzLm9iamVjdHMgPSBDb2xsZWN0aW9ucy5FTVBUWV9MSVNUOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgTGlzdCBvYmpzQ29weSA9IG5ldyBBcnJheUxpc3Qob2Jqcyk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMCwgc2l6ZSA9IG9ianNDb3B5LnNpemUoKTsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgICAgIGlmICghKG9ianNDb3B5LmdldChpKSBpbnN0YW5jZW9mIFhNTE9iamVjdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IENsYXNzQ2FzdEV4Y2VwdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgKCJvYmpzWyIraSsiXSBpcyBub3QgYW4gWE1MT2JqZWN0Iik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5vYmplY3RzID0gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlTGlzdChvYmpzQ29weSk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5raSA9IGtpOyAgICAgICAgICAgICAgICAKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgPGNvZGU+RE9NWE1MU2lnbmF0dXJlPC9jb2RlPiBmcm9tIFhNTC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzaWdFbGVtIFNpZ25hdHVyZSBlbGVtZW50CisgICAgICogQHRocm93cyBNYXJzaGFsRXhjZXB0aW9uIGlmIFhNTFNpZ25hdHVyZSBjYW5ub3QgYmUgdW5tYXJzaGFsbGVkCisgICAgICovCisgICAgcHVibGljIERPTVhNTFNpZ25hdHVyZShFbGVtZW50IHNpZ0VsZW0sIFhNTENyeXB0b0NvbnRleHQgY29udGV4dCwKKwlQcm92aWRlciBwcm92aWRlcikgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworICAgICAgICBsb2NhbFNpZ0VsZW0gPSBzaWdFbGVtOworICAgICAgICBvd25lckRvYyA9IGxvY2FsU2lnRWxlbS5nZXRPd25lckRvY3VtZW50KCk7CisKKyAgICAgICAgLy8gZ2V0IElkIGF0dHJpYnV0ZSwgaWYgc3BlY2lmaWVkCisJaWQgPSBET01VdGlscy5nZXRBdHRyaWJ1dGVWYWx1ZShsb2NhbFNpZ0VsZW0sICJJZCIpOworCisJLy8gdW5tYXJzaGFsIFNpZ25lZEluZm8KKwlFbGVtZW50IHNpRWxlbSA9IERPTVV0aWxzLmdldEZpcnN0Q2hpbGRFbGVtZW50KGxvY2FsU2lnRWxlbSk7CisJc2kgPSBuZXcgRE9NU2lnbmVkSW5mbyhzaUVsZW0sIGNvbnRleHQsIHByb3ZpZGVyKTsKKworCS8vIHVubWFyc2hhbCBTaWduYXR1cmVWYWx1ZSAKKwlFbGVtZW50IHNpZ1ZhbEVsZW0gPSBET01VdGlscy5nZXROZXh0U2libGluZ0VsZW1lbnQoc2lFbGVtKTsKKwlzdiA9IG5ldyBET01TaWduYXR1cmVWYWx1ZShzaWdWYWxFbGVtKTsKKworCS8vIHVubWFyc2hhbCBLZXlJbmZvLCBpZiBzcGVjaWZpZWQKKwlFbGVtZW50IG5leHRTaWJsaW5nID0gRE9NVXRpbHMuZ2V0TmV4dFNpYmxpbmdFbGVtZW50KHNpZ1ZhbEVsZW0pOworCWlmIChuZXh0U2libGluZyAhPSBudWxsICYmIG5leHRTaWJsaW5nLmdldExvY2FsTmFtZSgpLmVxdWFscygiS2V5SW5mbyIpKSB7CisJICAgIGtpID0gbmV3IERPTUtleUluZm8obmV4dFNpYmxpbmcsIGNvbnRleHQsIHByb3ZpZGVyKTsKKwkgICAgbmV4dFNpYmxpbmcgPSBET01VdGlscy5nZXROZXh0U2libGluZ0VsZW1lbnQobmV4dFNpYmxpbmcpOworCX0KKworCS8vIHVubWFyc2hhbCBPYmplY3RzLCBpZiBzcGVjaWZpZWQKKwlpZiAobmV4dFNpYmxpbmcgPT0gbnVsbCkgeworCSAgICBvYmplY3RzID0gQ29sbGVjdGlvbnMuRU1QVFlfTElTVDsKKwl9IGVsc2UgeworCSAgICBMaXN0IHRlbXBPYmplY3RzID0gbmV3IEFycmF5TGlzdCgpOworCSAgICB3aGlsZSAobmV4dFNpYmxpbmcgIT0gbnVsbCkgeworCSAgICAgICAgdGVtcE9iamVjdHMuYWRkCisJCSAgICAobmV3IERPTVhNTE9iamVjdChuZXh0U2libGluZywgY29udGV4dCwgcHJvdmlkZXIpKTsKKwkgICAgICAgIG5leHRTaWJsaW5nID0gRE9NVXRpbHMuZ2V0TmV4dFNpYmxpbmdFbGVtZW50KG5leHRTaWJsaW5nKTsKKwkgICAgfQorCSAgICBvYmplY3RzID0gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlTGlzdCh0ZW1wT2JqZWN0cyk7CQorCX0KKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldElkKCkgeworICAgICAgICByZXR1cm4gaWQ7CisgICAgfQorCisgICAgcHVibGljIEtleUluZm8gZ2V0S2V5SW5mbygpIHsKKyAgICAgICAgcmV0dXJuIGtpOworICAgIH0KKworICAgIHB1YmxpYyBTaWduZWRJbmZvIGdldFNpZ25lZEluZm8oKSB7CisgICAgICAgIHJldHVybiBzaTsKKyAgICB9CisKKyAgICBwdWJsaWMgTGlzdCBnZXRPYmplY3RzKCkgeworICAgICAgICByZXR1cm4gb2JqZWN0czsKKyAgICB9CisKKyAgICBwdWJsaWMgU2lnbmF0dXJlVmFsdWUgZ2V0U2lnbmF0dXJlVmFsdWUoKSB7CisJcmV0dXJuIHN2OworICAgIH0KKworICAgIHB1YmxpYyBLZXlTZWxlY3RvclJlc3VsdCBnZXRLZXlTZWxlY3RvclJlc3VsdCgpIHsKKwlyZXR1cm4ga3NyOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG1hcnNoYWwoTm9kZSBwYXJlbnQsIFN0cmluZyBkc1ByZWZpeCwgRE9NQ3J5cHRvQ29udGV4dCBjb250ZXh0KQorCXRocm93cyBNYXJzaGFsRXhjZXB0aW9uIHsKKwltYXJzaGFsKHBhcmVudCwgbnVsbCwgZHNQcmVmaXgsIGNvbnRleHQpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG1hcnNoYWwoTm9kZSBwYXJlbnQsIE5vZGUgbmV4dFNpYmxpbmcsIFN0cmluZyBkc1ByZWZpeCwKKyAgICAgICAgRE9NQ3J5cHRvQ29udGV4dCBjb250ZXh0KSB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisgICAgICAgIG93bmVyRG9jID0gRE9NVXRpbHMuZ2V0T3duZXJEb2N1bWVudChwYXJlbnQpOworCisgICAgICAgIHNpZ0VsZW0gPSBET01VdGlscy5jcmVhdGVFbGVtZW50CisgICAgICAgICAgICAob3duZXJEb2MsICJTaWduYXR1cmUiLCBYTUxTaWduYXR1cmUuWE1MTlMsIGRzUHJlZml4KTsKKworICAgICAgICAvLyBhcHBlbmQgeG1sbnMgYXR0cmlidXRlCisgICAgICAgIGlmIChkc1ByZWZpeCA9PSBudWxsIHx8IGRzUHJlZml4Lmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgIHNpZ0VsZW0uc2V0QXR0cmlidXRlTlMKKwkJKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsICJ4bWxucyIsIFhNTFNpZ25hdHVyZS5YTUxOUyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzaWdFbGVtLnNldEF0dHJpYnV0ZU5TCisJCSgiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLCAieG1sbnM6IiArIGRzUHJlZml4LCAKKwkJIFhNTFNpZ25hdHVyZS5YTUxOUyk7CisgICAgICAgIH0KKworCS8vIGNyZWF0ZSBhbmQgYXBwZW5kIFNpZ25lZEluZm8gZWxlbWVudAorCSgoRE9NU2lnbmVkSW5mbykgc2kpLm1hcnNoYWwoc2lnRWxlbSwgZHNQcmVmaXgsIGNvbnRleHQpOworCisgICAgICAgIC8vIGNyZWF0ZSBhbmQgYXBwZW5kIFNpZ25hdHVyZVZhbHVlIGVsZW1lbnQKKwkoKERPTVNpZ25hdHVyZVZhbHVlKSBzdikubWFyc2hhbChzaWdFbGVtLCBkc1ByZWZpeCwgY29udGV4dCk7CisKKwkvLyBjcmVhdGUgYW5kIGFwcGVuZCBLZXlJbmZvIGVsZW1lbnQgaWYgbmVjZXNzYXJ5CisJaWYgKGtpICE9IG51bGwpIHsKKwkgICAgKChET01LZXlJbmZvKSBraSkubWFyc2hhbChzaWdFbGVtLCBudWxsLCBkc1ByZWZpeCwgY29udGV4dCk7CisJfQorCisJLy8gY3JlYXRlIGFuZCBhcHBlbmQgT2JqZWN0IGVsZW1lbnRzIGlmIG5lY2Vzc2FyeQorCWZvciAoaW50IGkgPSAwLCBzaXplID0gb2JqZWN0cy5zaXplKCk7IGkgPCBzaXplOyBpKyspIHsKKwkgICAgKChET01YTUxPYmplY3QpIG9iamVjdHMuZ2V0KGkpKS5tYXJzaGFsKHNpZ0VsZW0sIGRzUHJlZml4LCBjb250ZXh0KTsKKwl9CisKKwkvLyBhcHBlbmQgSWQgYXR0cmlidXRlCisgICAgICAgIERPTVV0aWxzLnNldEF0dHJpYnV0ZUlEKHNpZ0VsZW0sICJJZCIsIGlkKTsKKwkgICAgCisJcGFyZW50Lmluc2VydEJlZm9yZShzaWdFbGVtLCBuZXh0U2libGluZyk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gdmFsaWRhdGUoWE1MVmFsaWRhdGVDb250ZXh0IHZjKSAKKwl0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHsKKworCWlmICh2YyA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigidmFsaWRhdGVDb250ZXh0IGlzIG51bGwiKTsKKwl9CisKKyAgICAgICAgaWYgKCEodmMgaW5zdGFuY2VvZiBET01WYWxpZGF0ZUNvbnRleHQpKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgQ2xhc3NDYXN0RXhjZXB0aW9uCisgICAgICAgICAgICAgICAgKCJ2YWxpZGF0ZUNvbnRleHQgbXVzdCBiZSBvZiB0eXBlIERPTVZhbGlkYXRlQ29udGV4dCIpOworICAgICAgICB9CisKKwlpZiAodmFsaWRhdGVkKSB7CisJICAgIHJldHVybiB2YWxpZGF0aW9uU3RhdHVzOworCX0KKworICAgICAgICAvLyB2YWxpZGF0ZSB0aGUgc2lnbmF0dXJlCisgICAgICAgIGJvb2xlYW4gc2lnVmFsaWRpdHkgPSBzdi52YWxpZGF0ZSh2Yyk7CisgICAgICAgIGlmICghc2lnVmFsaWRpdHkpIHsKKyAgICAgICAgICAgIHZhbGlkYXRpb25TdGF0dXMgPSBmYWxzZTsKKyAgICAgICAgICAgIHZhbGlkYXRlZCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGlvblN0YXR1czsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHZhbGlkYXRlIGFsbCBSZWZlcmVuY2VzCisgICAgICAgIExpc3QgcmVmcyA9IHRoaXMuc2kuZ2V0UmVmZXJlbmNlcygpOworICAgICAgICBib29sZWFuIHZhbGlkYXRlUmVmcyA9IHRydWU7CisgICAgICAgIGZvciAoaW50IGkgPSAwLCBzaXplID0gcmVmcy5zaXplKCk7IHZhbGlkYXRlUmVmcyAmJiBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBSZWZlcmVuY2UgcmVmID0gKFJlZmVyZW5jZSkgcmVmcy5nZXQoaSk7CisgICAgICAgICAgICBib29sZWFuIHJlZlZhbGlkID0gcmVmLnZhbGlkYXRlKHZjKTsKKwkgICAgaWYgKGxvZy5pc0xvZ2dhYmxlKExldmVsLkZJTkUpKSB7CisgICAgICAgICAgICAgICAgbG9nLmxvZyhMZXZlbC5GSU5FLCAiUmVmZXJlbmNlWyIgKyByZWYuZ2V0VVJJKCkgKyAiXSBpcyB2YWxpZDogIgorCQkgICAgKyByZWZWYWxpZCk7CisJICAgIH0KKyAgICAgICAgICAgIHZhbGlkYXRlUmVmcyAmPSByZWZWYWxpZDsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXZhbGlkYXRlUmVmcykgeworCSAgICBpZiAobG9nLmlzTG9nZ2FibGUoTGV2ZWwuRklORSkpIHsKKyAgICAgICAgICAgICAgICBsb2cubG9nKExldmVsLkZJTkUsICJDb3VsZG4ndCB2YWxpZGF0ZSB0aGUgUmVmZXJlbmNlcyIpOworCSAgICB9CisJICAgIHZhbGlkYXRpb25TdGF0dXMgPSBmYWxzZTsKKwkgICAgdmFsaWRhdGVkID0gdHJ1ZTsKKwkgICAgcmV0dXJuIHZhbGlkYXRpb25TdGF0dXM7CisgICAgICAgIH0KKworCS8vIHZhbGlkYXRlIE1hbmlmZXN0cywgaWYgcHJvcGVydHkgc2V0CisgICAgICAgIGJvb2xlYW4gdmFsaWRhdGVNYW5zID0gdHJ1ZTsKKwlpZiAoQm9vbGVhbi5UUlVFLmVxdWFscyh2Yy5nZXRQcm9wZXJ0eQorCSAgICAoIm9yZy5qY3AueG1sLmRzaWcudmFsaWRhdGVNYW5pZmVzdHMiKSkpIHsKKworCSAgICBmb3IgKGludCBpPTAsIHNpemU9b2JqZWN0cy5zaXplKCk7IHZhbGlkYXRlTWFucyAmJiBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAgICAgWE1MT2JqZWN0IHhvID0gKFhNTE9iamVjdCkgb2JqZWN0cy5nZXQoaSk7CisgICAgICAgICAgICAgICAgTGlzdCBjb250ZW50ID0geG8uZ2V0Q29udGVudCgpOworCQlpbnQgY3NpemUgPSBjb250ZW50LnNpemUoKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgdmFsaWRhdGVNYW5zICYmIGogPCBjc2l6ZTsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgIFhNTFN0cnVjdHVyZSB4cyA9IChYTUxTdHJ1Y3R1cmUpIGNvbnRlbnQuZ2V0KGopOworICAgICAgICAgICAgICAgICAgICBpZiAoeHMgaW5zdGFuY2VvZiBNYW5pZmVzdCkgeworCSAgICAJCWlmIChsb2cuaXNMb2dnYWJsZShMZXZlbC5GSU5FKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5sb2coTGV2ZWwuRklORSwgInZhbGlkYXRpbmcgbWFuaWZlc3QiKTsKKwkJCX0KKyAgICAgICAgICAgICAgICAgICAgICAgIE1hbmlmZXN0IG1hbiA9IChNYW5pZmVzdCkgeHM7CisgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG1hblJlZnMgPSBtYW4uZ2V0UmVmZXJlbmNlcygpOworCQkJaW50IHJzaXplID0gbWFuUmVmcy5zaXplKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBrID0gMDsgdmFsaWRhdGVNYW5zICYmIGsgPCByc2l6ZTsgaysrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlIHJlZiA9IChSZWZlcmVuY2UpIG1hblJlZnMuZ2V0KGspOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gcmVmVmFsaWQgPSByZWYudmFsaWRhdGUodmMpOworCSAgICAJCSAgICBpZiAobG9nLmlzTG9nZ2FibGUoTGV2ZWwuRklORSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nLmxvZyhMZXZlbC5GSU5FLCAiTWFuaWZlc3QgcmVmWyIgCisJCQkJICAgICsgcmVmLmdldFVSSSgpICsgIl0gaXMgdmFsaWQ6ICIgKyByZWZWYWxpZCk7CisJCQkgICAgfQorCQkJICAgIHZhbGlkYXRlTWFucyAmPSByZWZWYWxpZDsKKwkJCX0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwl9CisKKwl2YWxpZGF0aW9uU3RhdHVzID0gdmFsaWRhdGVNYW5zOworCXZhbGlkYXRlZCA9IHRydWU7CisJcmV0dXJuIHZhbGlkYXRpb25TdGF0dXM7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2lnbihYTUxTaWduQ29udGV4dCBzaWduQ29udGV4dCkgCisJdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24sIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisJaWYgKHNpZ25Db250ZXh0ID09IG51bGwpIHsKKwkgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJzaWduQ29udGV4dCBjYW5ub3QgYmUgbnVsbCIpOworCX0KKyAgICAgICAgRE9NU2lnbkNvbnRleHQgY29udGV4dCA9IChET01TaWduQ29udGV4dCkgc2lnbkNvbnRleHQ7CisgICAgICAgIGlmIChjb250ZXh0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1hcnNoYWwoY29udGV4dC5nZXRQYXJlbnQoKSwgY29udGV4dC5nZXROZXh0U2libGluZygpLAorICAgICAgICAgICAgICAgIERPTVV0aWxzLmdldFNpZ25hdHVyZVByZWZpeChjb250ZXh0KSwgY29udGV4dCk7CisgICAgICAgIH0KKworCS8vIGdlbmVyYXRlIHJlZmVyZW5jZXMgYW5kIHNpZ25hdHVyZSB2YWx1ZQorCUxpc3QgYWxsUmVmZXJlbmNlcyA9IG5ldyBBcnJheUxpc3QoKTsKKworCS8vIHRyYXZlcnNlIHRoZSBTaWduYXR1cmUgYW5kIHJlZ2lzdGVyIGFsbCBvYmplY3RzIHdpdGggSURzIHRoYXQKKwkvLyBtYXkgY29udGFpbiBSZWZlcmVuY2VzCisJc2lnbmF0dXJlSWRNYXAgPSBuZXcgSGFzaE1hcCgpOworCXNpZ25hdHVyZUlkTWFwLnB1dChpZCwgdGhpcyk7CisJc2lnbmF0dXJlSWRNYXAucHV0KHNpLmdldElkKCksIHNpKTsKKwlMaXN0IHJlZnMgPSBzaS5nZXRSZWZlcmVuY2VzKCk7CisJZm9yIChpbnQgaSA9IDAsIHNpemUgPSByZWZzLnNpemUoKTsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgUmVmZXJlbmNlIHJlZiA9IChSZWZlcmVuY2UpIHJlZnMuZ2V0KGkpOworICAgICAgICAgICAgc2lnbmF0dXJlSWRNYXAucHV0KHJlZi5nZXRJZCgpLCByZWYpOworCX0KKwlmb3IgKGludCBpID0gMCwgc2l6ZSA9IG9iamVjdHMuc2l6ZSgpOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBYTUxPYmplY3Qgb2JqID0gKFhNTE9iamVjdCkgb2JqZWN0cy5nZXQoaSk7CisgICAgICAgICAgICBzaWduYXR1cmVJZE1hcC5wdXQob2JqLmdldElkKCksIG9iaik7CisgICAgICAgICAgICBMaXN0IGNvbnRlbnQgPSBvYmouZ2V0Q29udGVudCgpOworCSAgICBmb3IgKGludCBqID0gMCwgY3NpemUgPSBjb250ZW50LnNpemUoKTsgaiA8IGNzaXplOyBqKyspIHsKKwkJWE1MU3RydWN0dXJlIHhzID0gKFhNTFN0cnVjdHVyZSkgY29udGVudC5nZXQoaik7CisJCWlmICh4cyBpbnN0YW5jZW9mIE1hbmlmZXN0KSB7CisgICAgICAgICAgICAgICAgICAgIE1hbmlmZXN0IG1hbiA9IChNYW5pZmVzdCkgeHM7CisgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZUlkTWFwLnB1dChtYW4uZ2V0SWQoKSwgbWFuKTsKKyAgICAgICAgICAgICAgICAgICAgTGlzdCBtYW5SZWZzID0gbWFuLmdldFJlZmVyZW5jZXMoKTsKKwkJICAgIGZvciAoaW50IGsgPSAwLCBtc2l6ZSA9IG1hblJlZnMuc2l6ZSgpOyBrIDwgbXNpemU7IGsrKykgeworCQkJUmVmZXJlbmNlIHJlZiA9IChSZWZlcmVuY2UpIG1hblJlZnMuZ2V0KGspOworCQkJYWxsUmVmZXJlbmNlcy5hZGQocmVmKTsKKwkJCXNpZ25hdHVyZUlkTWFwLnB1dChyZWYuZ2V0SWQoKSwgcmVmKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCQl9CisgICAgICAgICAgICB9CisJfQorICAgICAgICAvLyBhbHdheXMgYWRkIFNpZ25lZEluZm8gcmVmZXJlbmNlcyBhZnRlciBNYW5pZmVzdCByZWZlcmVuY2VzIHNvCisgICAgICAgIC8vIHRoYXQgTWFuaWZlc3QgcmVmZXJlbmNlIGFyZSBkaWdlc3RlZCBmaXJzdAorICAgICAgICBhbGxSZWZlcmVuY2VzLmFkZEFsbChzaS5nZXRSZWZlcmVuY2VzKCkpOworCisgICAgICAgIC8vIGdlbmVyYXRlL2RpZ2VzdCBlYWNoIHJlZmVyZW5jZQorCWZvciAoaW50IGkgPSAwLCBzaXplID0gYWxsUmVmZXJlbmNlcy5zaXplKCk7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgIERPTVJlZmVyZW5jZSByZWYgPSAoRE9NUmVmZXJlbmNlKSBhbGxSZWZlcmVuY2VzLmdldChpKTsKKyAgICAgICAgICAgIGRpZ2VzdFJlZmVyZW5jZShyZWYsIHNpZ25Db250ZXh0KTsKKwl9CisKKyAgICAgICAgLy8gZG8gZmluYWwgc3dlZXAgdG8gZGlnZXN0IGFueSByZWZlcmVuY2VzIHRoYXQgd2VyZSBza2lwcGVkIG9yIG1pc3NlZAorCWZvciAoaW50IGkgPSAwLCBzaXplID0gYWxsUmVmZXJlbmNlcy5zaXplKCk7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgIERPTVJlZmVyZW5jZSByZWYgPSAoRE9NUmVmZXJlbmNlKSBhbGxSZWZlcmVuY2VzLmdldChpKTsKKyAgICAgICAgICAgIGlmIChyZWYuaXNEaWdlc3RlZCgpKSB7CisJCWNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVmLmRpZ2VzdChzaWduQ29udGV4dCk7CisJfQorCisgICAgICAgIEtleSBzaWduaW5nS2V5ID0gbnVsbDsKKwlLZXlTZWxlY3RvclJlc3VsdCBrc3IgPSBudWxsOworCXRyeSB7CisgICAgICAgICAgICBrc3IgPSBzaWduQ29udGV4dC5nZXRLZXlTZWxlY3RvcigpLnNlbGVjdAorCQkoa2ksIEtleVNlbGVjdG9yLlB1cnBvc2UuU0lHTiwKKwkJc2kuZ2V0U2lnbmF0dXJlTWV0aG9kKCksIHNpZ25Db250ZXh0KTsKKyAgICAgICAgICAgIHNpZ25pbmdLZXkgPSBrc3IuZ2V0S2V5KCk7CisgICAgICAgICAgICBpZiAoc2lnbmluZ0tleSA9PSBudWxsKSB7CisJCXRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oInRoZSBrZXlTZWxlY3RvciBkaWQgbm90ICIgKworICAgICAgICAgICAgCSJmaW5kIGEgc2lnbmluZyBrZXkiKTsKKyAgICAgICAgICAgIH0KKwl9IGNhdGNoIChLZXlTZWxlY3RvckV4Y2VwdGlvbiBrc2UpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oImNhbm5vdCBmaW5kIHNpZ25pbmcga2V5Iiwga3NlKTsKKwl9CisKKwkvLyBjYWxjdWxhdGUgc2lnbmF0dXJlIHZhbHVlCisJdHJ5IHsKKyAgICAgICAgICAgIGJ5dGVbXSB2YWwgPSAoKEFic3RyYWN0RE9NU2lnbmF0dXJlTWV0aG9kKSAKKyAgICAgICAgICAgICAgICBzaS5nZXRTaWduYXR1cmVNZXRob2QoKSkuc2lnbihzaWduaW5nS2V5LCBzaSwgc2lnbkNvbnRleHQpOworCSAgICAoKERPTVNpZ25hdHVyZVZhbHVlKSBzdikuc2V0VmFsdWUodmFsKTsKKwl9IGNhdGNoIChJbnZhbGlkS2V5RXhjZXB0aW9uIGlrZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbihpa2UpOworCX0KKworICAgICAgICB0aGlzLmxvY2FsU2lnRWxlbSA9IHNpZ0VsZW07ICAgCisJdGhpcy5rc3IgPSBrc3I7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvKSB7CisJaWYgKHRoaXMgPT0gbykgeworCSAgICByZXR1cm4gdHJ1ZTsKKwl9CisKKwlpZiAoIShvIGluc3RhbmNlb2YgWE1MU2lnbmF0dXJlKSkgeworCSAgICByZXR1cm4gZmFsc2U7CisJfQorCVhNTFNpZ25hdHVyZSBvc2lnID0gKFhNTFNpZ25hdHVyZSkgbzsKKworCWJvb2xlYW4gaWRFcXVhbCA9IAorCSAgICAoaWQgPT0gbnVsbCA/IG9zaWcuZ2V0SWQoKSA9PSBudWxsIDogaWQuZXF1YWxzKG9zaWcuZ2V0SWQoKSkpOworCWJvb2xlYW4ga2V5SW5mb0VxdWFsID0gCisJICAgIChraSA9PSBudWxsID8gb3NpZy5nZXRLZXlJbmZvKCkgPT0gbnVsbCA6IAorCSAgICAga2kuZXF1YWxzKG9zaWcuZ2V0S2V5SW5mbygpKSk7CisKKwlyZXR1cm4gKGlkRXF1YWwgJiYga2V5SW5mb0VxdWFsICYmIAorCSAgICBzdi5lcXVhbHMob3NpZy5nZXRTaWduYXR1cmVWYWx1ZSgpKSAmJgorCSAgICBzaS5lcXVhbHMob3NpZy5nZXRTaWduZWRJbmZvKCkpICYmIAorCSAgICBvYmplY3RzLmVxdWFscyhvc2lnLmdldE9iamVjdHMoKSkpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBkaWdlc3RSZWZlcmVuY2UoRE9NUmVmZXJlbmNlIHJlZiwgWE1MU2lnbkNvbnRleHQgc2lnbkNvbnRleHQpCisJdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB7CisJaWYgKHJlZi5pc0RpZ2VzdGVkKCkpIHsKKyAgICAgICAJICAgIHJldHVybjsKKwl9CisgICAgICAgIC8vIGNoZWNrIGRlcGVuZGVuY2llcworCVN0cmluZyB1cmkgPSByZWYuZ2V0VVJJKCk7CisJaWYgKFV0aWxzLnNhbWVEb2N1bWVudFVSSSh1cmkpKSB7CisgICAgICAgICAgICBTdHJpbmcgaWQgPSBVdGlscy5wYXJzZUlkRnJvbVNhbWVEb2N1bWVudFVSSSh1cmkpOworICAgICAgICAgICAgaWYgKGlkICE9IG51bGwgJiYgc2lnbmF0dXJlSWRNYXAuY29udGFpbnNLZXkoaWQpKSB7CisJCU9iamVjdCBvYmogPSBzaWduYXR1cmVJZE1hcC5nZXQoaWQpOworCQlpZiAob2JqIGluc3RhbmNlb2YgRE9NUmVmZXJlbmNlKSB7CisgICAgICAgICAgICAgICAgICAgIGRpZ2VzdFJlZmVyZW5jZSgoRE9NUmVmZXJlbmNlKSBvYmosIHNpZ25Db250ZXh0KTsKKwkJfSBlbHNlIGlmIChvYmogaW5zdGFuY2VvZiBNYW5pZmVzdCkgeworICAgICAgICAgICAgICAgICAgICBNYW5pZmVzdCBtYW4gPSAoTWFuaWZlc3QpIG9iajsKKyAgICAgICAgICAgICAgICAgICAgTGlzdCBtYW5SZWZzID0gbWFuLmdldFJlZmVyZW5jZXMoKTsKKwkJICAgIGZvciAoaW50IGkgPSAwLCBzaXplID0gbWFuUmVmcy5zaXplKCk7IGkgPCBzaXplOyBpKyspIHsKKwkJCWRpZ2VzdFJlZmVyZW5jZQorICAgICAgICAgICAgICAgICAJICAgICgoRE9NUmVmZXJlbmNlKSBtYW5SZWZzLmdldChpKSwgc2lnbkNvbnRleHQpOworCQkgICAgfQorCQl9CisgICAgICAgICAgICB9CisJICAgIC8vIGlmIHVyaT0iIiBhbmQgdGhlcmUgYXJlIFhQYXRoIFRyYW5zZm9ybXMsIHRoZXJlIG1heSBiZQorCSAgICAvLyByZWZlcmVuY2UgZGVwZW5kZW5jaWVzIGluIHRoZSBYUGF0aCBUcmFuc2Zvcm0gLSBzbyBiZSBvbgorCSAgICAvLyB0aGUgc2FmZSBzaWRlLCBhbmQgc2tpcCBhbmQgZG8gYXQgZW5kIGluIHRoZSBmaW5hbCBzd2VlcAorCSAgICBpZiAodXJpLmxlbmd0aCgpID09IDApIHsKKwkJTGlzdCB0cmFuc2Zvcm1zID0gcmVmLmdldFRyYW5zZm9ybXMoKTsKKwkJZm9yIChpbnQgaSA9IDAsIHNpemUgPSB0cmFuc2Zvcm1zLnNpemUoKTsgaSA8IHNpemU7IGkrKykgeworCQkgICAgVHJhbnNmb3JtIHRyYW5zZm9ybSA9IChUcmFuc2Zvcm0pIHRyYW5zZm9ybXMuZ2V0KGkpOworCQkgICAgU3RyaW5nIHRyYW5zZm9ybUFsZyA9IHRyYW5zZm9ybS5nZXRBbGdvcml0aG0oKTsKKwkJICAgIGlmICh0cmFuc2Zvcm1BbGcuZXF1YWxzKFRyYW5zZm9ybS5YUEFUSCkgfHwKKwkJCXRyYW5zZm9ybUFsZy5lcXVhbHMoVHJhbnNmb3JtLlhQQVRIMikpIHsKKyAgICAgICAgICAgICAgICAJcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAJfQorICAgICAgICAgICAgfQorCX0KKwlyZWYuZGlnZXN0KHNpZ25Db250ZXh0KTsKKyAgICB9CisKKyAgICBwdWJsaWMgY2xhc3MgRE9NU2lnbmF0dXJlVmFsdWUgZXh0ZW5kcyBET01TdHJ1Y3R1cmUgCisJaW1wbGVtZW50cyBTaWduYXR1cmVWYWx1ZSB7CisKKwlwcml2YXRlIFN0cmluZyBpZDsKKyAgICAgICAgcHJpdmF0ZSBieXRlW10gdmFsdWU7CisgICAgICAgIHByaXZhdGUgU3RyaW5nIHZhbHVlQmFzZTY0OworICAgICAgICBwcml2YXRlIEVsZW1lbnQgc2lnVmFsdWVFbGVtOworCXByaXZhdGUgYm9vbGVhbiB2YWxpZGF0ZWQgPSBmYWxzZTsKKwlwcml2YXRlIGJvb2xlYW4gdmFsaWRhdGlvblN0YXR1czsKKworCURPTVNpZ25hdHVyZVZhbHVlKFN0cmluZyBpZCkgeworCSAgICB0aGlzLmlkID0gaWQ7CisJfQorCisJRE9NU2lnbmF0dXJlVmFsdWUoRWxlbWVudCBzaWdWYWx1ZUVsZW0pIHRocm93cyBNYXJzaGFsRXhjZXB0aW9uIHsKKwkgICAgdHJ5IHsKKwkgICAgICAgIC8vIGJhc2U2NCBkZWNvZGUgc2lnbmF0dXJlVmFsdWUKKwkgICAgICAgIHZhbHVlID0gQmFzZTY0LmRlY29kZShzaWdWYWx1ZUVsZW0pOworCSAgICB9IGNhdGNoIChCYXNlNjREZWNvZGluZ0V4Y2VwdGlvbiBiZGUpIHsKKwkgICAgICAgIHRocm93IG5ldyBNYXJzaGFsRXhjZXB0aW9uKGJkZSk7CisJICAgIH0KKworCSAgICBpZCA9IERPTVV0aWxzLmdldEF0dHJpYnV0ZVZhbHVlKHNpZ1ZhbHVlRWxlbSwgIklkIik7CisJICAgIHRoaXMuc2lnVmFsdWVFbGVtID0gc2lnVmFsdWVFbGVtOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0SWQoKSB7CisJICAgIHJldHVybiBpZDsKKwl9CisKKyAgICAgICAgcHVibGljIGJ5dGVbXSBnZXRWYWx1ZSgpIHsKKwkgICAgcmV0dXJuICh2YWx1ZSA9PSBudWxsKSA/IG51bGwgOiAoYnl0ZVtdKSB2YWx1ZS5jbG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJvb2xlYW4gdmFsaWRhdGUoWE1MVmFsaWRhdGVDb250ZXh0IHZhbGlkYXRlQ29udGV4dCkgCisJICAgIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworCisJICAgIGlmICh2YWxpZGF0ZUNvbnRleHQgPT0gbnVsbCkgeworCQl0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oImNvbnRleHQgY2Fubm90IGJlIG51bGwiKTsKKwkgICAgfQorCisJICAgIGlmICh2YWxpZGF0ZWQpIHsKKwkJcmV0dXJuIHZhbGlkYXRpb25TdGF0dXM7CisJICAgIH0KKworCSAgICAvLyBnZXQgdmFsaWRhdGluZyBrZXkKKwkgICAgU2lnbmF0dXJlTWV0aG9kIHNtID0gc2kuZ2V0U2lnbmF0dXJlTWV0aG9kKCk7CisJICAgIEtleSB2YWxpZGF0aW9uS2V5ID0gbnVsbDsKKwkgICAgS2V5U2VsZWN0b3JSZXN1bHQga3NSZXN1bHQ7CisJICAgIHRyeSB7CisJCWtzUmVzdWx0ID0gdmFsaWRhdGVDb250ZXh0LmdldEtleVNlbGVjdG9yKCkuc2VsZWN0CisJCSAgICAoa2ksIEtleVNlbGVjdG9yLlB1cnBvc2UuVkVSSUZZLCBzbSwgdmFsaWRhdGVDb250ZXh0KTsKKwkJdmFsaWRhdGlvbktleSA9IGtzUmVzdWx0LmdldEtleSgpOworCQlpZiAodmFsaWRhdGlvbktleSA9PSBudWxsKSB7CisJCSAgICB0aHJvdyBuZXcgWE1MU2lnbmF0dXJlRXhjZXB0aW9uKCJ0aGUga2V5c2VsZWN0b3IgZGlkICIgKworCQkJIm5vdCBmaW5kIGEgdmFsaWRhdGlvbiBrZXkiKTsKKwkJfQorCSAgICB9IGNhdGNoIChLZXlTZWxlY3RvckV4Y2VwdGlvbiBrc2UpIHsKKwkJdGhyb3cgbmV3IFhNTFNpZ25hdHVyZUV4Y2VwdGlvbigiY2Fubm90IGZpbmQgdmFsaWRhdGlvbiAiICsKKwkJICAgICJrZXkiLCBrc2UpOworCSAgICB9CisKKwkgICAgLy8gY2Fub25pY2FsaXplIFNpZ25lZEluZm8gYW5kIHZlcmlmeSBzaWduYXR1cmUKKwkgICAgdHJ5IHsKKwkJdmFsaWRhdGlvblN0YXR1cyA9ICgoQWJzdHJhY3RET01TaWduYXR1cmVNZXRob2QpIHNtKS52ZXJpZnkKKwkJICAgICh2YWxpZGF0aW9uS2V5LCBzaSwgdmFsdWUsIHZhbGlkYXRlQ29udGV4dCk7CisJICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCXRocm93IG5ldyBYTUxTaWduYXR1cmVFeGNlcHRpb24oZSk7CisJICAgIH0KKworCSAgICB2YWxpZGF0ZWQgPSB0cnVlOworCSAgICBrc3IgPSBrc1Jlc3VsdDsKKwkgICAgcmV0dXJuIHZhbGlkYXRpb25TdGF0dXM7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG8pIHsKKwkgICAgaWYgKHRoaXMgPT0gbykgeworCSAgICAgICAgcmV0dXJuIHRydWU7CisJICAgIH0KKworCSAgICBpZiAoIShvIGluc3RhbmNlb2YgU2lnbmF0dXJlVmFsdWUpKSB7CisJICAgICAgICByZXR1cm4gZmFsc2U7CisJICAgIH0KKwkgICAgU2lnbmF0dXJlVmFsdWUgb3N2ID0gKFNpZ25hdHVyZVZhbHVlKSBvOworCisJICAgIGJvb2xlYW4gaWRFcXVhbCA9IAorCSAgICAgICAgKGlkID09IG51bGwgPyBvc3YuZ2V0SWQoKSA9PSBudWxsIDogaWQuZXF1YWxzKG9zdi5nZXRJZCgpKSk7CisKKwkgICAgLy9YWFggY29tcGFyZSBzaWduYXR1cmUgdmFsdWVzPworCSAgICByZXR1cm4gaWRFcXVhbDsKKwl9CisKKwlwdWJsaWMgdm9pZCBtYXJzaGFsKE5vZGUgcGFyZW50LCBTdHJpbmcgZHNQcmVmaXgsCisJICAgIERPTUNyeXB0b0NvbnRleHQgY29udGV4dCkgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworCisgICAgICAgICAgICAvLyBjcmVhdGUgU2lnbmF0dXJlVmFsdWUgZWxlbWVudAorICAgICAgICAgICAgc2lnVmFsdWVFbGVtID0gRE9NVXRpbHMuY3JlYXRlRWxlbWVudAorICAgICAgICAgICAgICAgIChvd25lckRvYywgIlNpZ25hdHVyZVZhbHVlIiwgWE1MU2lnbmF0dXJlLlhNTE5TLCBkc1ByZWZpeCk7CisJICAgIGlmICh2YWx1ZUJhc2U2NCAhPSBudWxsKSB7CisJICAgICAgICBzaWdWYWx1ZUVsZW0uYXBwZW5kQ2hpbGQob3duZXJEb2MuY3JlYXRlVGV4dE5vZGUodmFsdWVCYXNlNjQpKTsKKwkgICAgfQorCisgICAgICAgICAgICAvLyBhcHBlbmQgSWQgYXR0cmlidXRlLCBpZiBzcGVjaWZpZWQKKyAgICAgICAgICAgIERPTVV0aWxzLnNldEF0dHJpYnV0ZUlEKHNpZ1ZhbHVlRWxlbSwgIklkIiwgaWQpOworICAgICAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKHNpZ1ZhbHVlRWxlbSk7CisJfQorCisJdm9pZCBzZXRWYWx1ZShieXRlW10gdmFsdWUpIHsKKwkgICAgdGhpcy52YWx1ZSA9IHZhbHVlOworICAgICAgICAgICAgdmFsdWVCYXNlNjQgPSBCYXNlNjQuZW5jb2RlKHZhbHVlKTsKKyAgICAgICAgICAgIHNpZ1ZhbHVlRWxlbS5hcHBlbmRDaGlsZChvd25lckRvYy5jcmVhdGVUZXh0Tm9kZSh2YWx1ZUJhc2U2NCkpOworCX0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NWE1MU2lnbmF0dXJlRmFjdG9yeS5qYXZhIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTVhNTFNpZ25hdHVyZUZhY3RvcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWVmNGY2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTVhNTFNpZ25hdHVyZUZhY3RvcnkuamF2YQpAQCAtMCwwICsxLDMwMSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1LTIwMTAgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbTsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuZG9tLkRPTVZhbGlkYXRlQ29udGV4dDsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcua2V5aW5mby4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5zcGVjLio7CisKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb247CitpbXBvcnQgamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworCisvKioKKyAqIERPTS1iYXNlZCBpbXBsZW1lbnRhdGlvbiBvZiBYTUxTaWduYXR1cmVGYWN0b3J5LgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqLworcHVibGljIGZpbmFsIGNsYXNzIERPTVhNTFNpZ25hdHVyZUZhY3RvcnkgZXh0ZW5kcyBYTUxTaWduYXR1cmVGYWN0b3J5IHsKKworICAgIC8qKgorICAgICAqIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgY2xhc3MuCisgICAgICovCisgICAgcHVibGljIERPTVhNTFNpZ25hdHVyZUZhY3RvcnkoKSB7fQorCisgICAgcHVibGljIFhNTFNpZ25hdHVyZSBuZXdYTUxTaWduYXR1cmUoU2lnbmVkSW5mbyBzaSwgS2V5SW5mbyBraSkgeworCXJldHVybiBuZXcgRE9NWE1MU2lnbmF0dXJlKHNpLCBraSwgbnVsbCwgbnVsbCwgbnVsbCk7CisgICAgfQorCisgICAgcHVibGljIFhNTFNpZ25hdHVyZSBuZXdYTUxTaWduYXR1cmUoU2lnbmVkSW5mbyBzaSwgS2V5SW5mbyBraSwKKyAgICAgICAgTGlzdCBvYmplY3RzLCBTdHJpbmcgaWQsIFN0cmluZyBzaWduYXR1cmVWYWx1ZUlkKSB7CisJcmV0dXJuIG5ldyBET01YTUxTaWduYXR1cmUoc2ksIGtpLCBvYmplY3RzLCBpZCwgc2lnbmF0dXJlVmFsdWVJZCk7CisgICAgfQorCisgICAgcHVibGljIFJlZmVyZW5jZSBuZXdSZWZlcmVuY2UoU3RyaW5nIHVyaSwgRGlnZXN0TWV0aG9kIGRtKSB7CisJcmV0dXJuIG5ld1JlZmVyZW5jZSh1cmksIGRtLCBudWxsLCBudWxsLCBudWxsKTsKKyAgICB9CisKKyAgICBwdWJsaWMgUmVmZXJlbmNlIG5ld1JlZmVyZW5jZShTdHJpbmcgdXJpLCBEaWdlc3RNZXRob2QgZG0sIExpc3QgdHJhbnNmb3JtcywKKyAgICAgICAgU3RyaW5nIHR5cGUsIFN0cmluZyBpZCkgeworCXJldHVybiBuZXcgRE9NUmVmZXJlbmNlKHVyaSwgdHlwZSwgZG0sIHRyYW5zZm9ybXMsIGlkLCBnZXRQcm92aWRlcigpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgUmVmZXJlbmNlIG5ld1JlZmVyZW5jZShTdHJpbmcgdXJpLCBEaWdlc3RNZXRob2QgZG0sIAorCUxpc3QgYXBwbGllZFRyYW5zZm9ybXMsIERhdGEgcmVzdWx0LCBMaXN0IHRyYW5zZm9ybXMsIFN0cmluZyB0eXBlLCAKKwlTdHJpbmcgaWQpIHsKKwlpZiAoYXBwbGllZFRyYW5zZm9ybXMgPT0gbnVsbCkgeworCSAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oImFwcGxpZWRUcmFuc2Zvcm1zIGNhbm5vdCBiZSBudWxsIik7CisJfQorCWlmIChhcHBsaWVkVHJhbnNmb3Jtcy5pc0VtcHR5KCkpIHsKKwkgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJhcHBsaWVkVHJhbnNmb3JtcyBjYW5ub3QgYmUgZW1wdHkiKTsKKwl9CisJaWYgKHJlc3VsdCA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigicmVzdWx0IGNhbm5vdCBiZSBudWxsIik7CisJfQorCXJldHVybiBuZXcgRE9NUmVmZXJlbmNlCisJICAgICh1cmksIHR5cGUsIGRtLCBhcHBsaWVkVHJhbnNmb3JtcywgcmVzdWx0LCB0cmFuc2Zvcm1zLCBpZCwgZ2V0UHJvdmlkZXIoKSk7CisgICAgfQorCisgICAgcHVibGljIFJlZmVyZW5jZSBuZXdSZWZlcmVuY2UoU3RyaW5nIHVyaSwgRGlnZXN0TWV0aG9kIGRtLCBMaXN0IHRyYW5zZm9ybXMsCisgICAgICAgIFN0cmluZyB0eXBlLCBTdHJpbmcgaWQsIGJ5dGVbXSBkaWdlc3RWYWx1ZSkgeworCWlmIChkaWdlc3RWYWx1ZSA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigiZGlnZXN0VmFsdWUgY2Fubm90IGJlIG51bGwiKTsKKwl9CisJcmV0dXJuIG5ldyBET01SZWZlcmVuY2UKKwkgICAgKHVyaSwgdHlwZSwgZG0sIG51bGwsIG51bGwsIHRyYW5zZm9ybXMsIGlkLCBkaWdlc3RWYWx1ZSwgZ2V0UHJvdmlkZXIoKSk7CisgICAgfQorCisgICAgcHVibGljIFNpZ25lZEluZm8gbmV3U2lnbmVkSW5mbyhDYW5vbmljYWxpemF0aW9uTWV0aG9kIGNtLAorCVNpZ25hdHVyZU1ldGhvZCBzbSwgTGlzdCByZWZlcmVuY2VzKSB7CisJcmV0dXJuIG5ld1NpZ25lZEluZm8oY20sIHNtLCByZWZlcmVuY2VzLCBudWxsKTsKKyAgICB9CisKKyAgICBwdWJsaWMgU2lnbmVkSW5mbyBuZXdTaWduZWRJbmZvKENhbm9uaWNhbGl6YXRpb25NZXRob2QgY20sCisJU2lnbmF0dXJlTWV0aG9kIHNtLCBMaXN0IHJlZmVyZW5jZXMsIFN0cmluZyBpZCkgeworCXJldHVybiBuZXcgRE9NU2lnbmVkSW5mbyhjbSwgc20sIHJlZmVyZW5jZXMsIGlkKTsKKyAgICB9CisKKyAgICAvLyBPYmplY3QgZmFjdG9yeSBtZXRob2RzCisgICAgcHVibGljIFhNTE9iamVjdCBuZXdYTUxPYmplY3QoTGlzdCBjb250ZW50LCBTdHJpbmcgaWQsIFN0cmluZyBtaW1lVHlwZSwKKwlTdHJpbmcgZW5jb2RpbmcpIHsKKwlyZXR1cm4gbmV3IERPTVhNTE9iamVjdChjb250ZW50LCBpZCwgbWltZVR5cGUsIGVuY29kaW5nKTsKKyAgICB9CisKKyAgICBwdWJsaWMgTWFuaWZlc3QgbmV3TWFuaWZlc3QoTGlzdCByZWZlcmVuY2VzKSB7CisJcmV0dXJuIG5ld01hbmlmZXN0KHJlZmVyZW5jZXMsIG51bGwpOworICAgIH0KKworICAgIHB1YmxpYyBNYW5pZmVzdCBuZXdNYW5pZmVzdChMaXN0IHJlZmVyZW5jZXMsIFN0cmluZyBpZCkgeworCXJldHVybiBuZXcgRE9NTWFuaWZlc3QocmVmZXJlbmNlcywgaWQpOworICAgIH0KKworICAgIHB1YmxpYyBTaWduYXR1cmVQcm9wZXJ0aWVzIG5ld1NpZ25hdHVyZVByb3BlcnRpZXMoTGlzdCBwcm9wcywgU3RyaW5nIGlkKSB7CisJcmV0dXJuIG5ldyBET01TaWduYXR1cmVQcm9wZXJ0aWVzKHByb3BzLCBpZCk7CisgICAgfQorCisgICAgcHVibGljIFNpZ25hdHVyZVByb3BlcnR5IG5ld1NpZ25hdHVyZVByb3BlcnR5CisJKExpc3QgaW5mbywgU3RyaW5nIHRhcmdldCwgU3RyaW5nIGlkKSB7CisJcmV0dXJuIG5ldyBET01TaWduYXR1cmVQcm9wZXJ0eShpbmZvLCB0YXJnZXQsIGlkKTsKKyAgICB9CisKKyAgICBwdWJsaWMgWE1MU2lnbmF0dXJlIHVubWFyc2hhbFhNTFNpZ25hdHVyZShYTUxWYWxpZGF0ZUNvbnRleHQgY29udGV4dCkKKyAgICAgICAgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworCisgICAgICAgIGlmIChjb250ZXh0ID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigiY29udGV4dCBjYW5ub3QgYmUgbnVsbCIpOworICAgICAgICB9CisJcmV0dXJuIHVubWFyc2hhbCgoKERPTVZhbGlkYXRlQ29udGV4dCkgY29udGV4dCkuZ2V0Tm9kZSgpLCBjb250ZXh0KTsKKyAgICB9CisKKyAgICBwdWJsaWMgWE1MU2lnbmF0dXJlIHVubWFyc2hhbFhNTFNpZ25hdHVyZShYTUxTdHJ1Y3R1cmUgeG1sU3RydWN0dXJlKQorICAgICAgICB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisKKyAgICAgICAgaWYgKHhtbFN0cnVjdHVyZSA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oInhtbFN0cnVjdHVyZSBjYW5ub3QgYmUgbnVsbCIpOworICAgICAgICB9CisJcmV0dXJuIHVubWFyc2hhbAorCSAgICAoKChqYXZheC54bWwuY3J5cHRvLmRvbS5ET01TdHJ1Y3R1cmUpIHhtbFN0cnVjdHVyZSkuZ2V0Tm9kZSgpLCAKKwkgICAgIG51bGwpOworICAgIH0KKworICAgIHByaXZhdGUgWE1MU2lnbmF0dXJlIHVubWFyc2hhbChOb2RlIG5vZGUsIFhNTFZhbGlkYXRlQ29udGV4dCBjb250ZXh0KSAKKwl0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisKKyAgICAgICAgbm9kZS5ub3JtYWxpemUoKTsKKyAgICAgICAgCisgICAgICAgIEVsZW1lbnQgZWxlbWVudCA9IG51bGw7CisgICAgICAgIGlmIChub2RlLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5ET0NVTUVOVF9OT0RFKSB7CisgICAgICAgICAgICBlbGVtZW50ID0gKChEb2N1bWVudCkgbm9kZSkuZ2V0RG9jdW1lbnRFbGVtZW50KCk7CisgICAgICAgIH0gZWxzZSBpZiAobm9kZS5nZXROb2RlVHlwZSgpID09IE5vZGUuRUxFTUVOVF9OT0RFKSB7CisgICAgICAgICAgICBlbGVtZW50ID0gKEVsZW1lbnQpIG5vZGU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTWFyc2hhbEV4Y2VwdGlvbgorCQkoIlNpZ25hdHVyZSBlbGVtZW50IGlzIG5vdCBhIHByb3BlciBOb2RlIik7CisgICAgICAgIH0KKworICAgICAgICAvLyBjaGVjayB0YWcKKyAgICAgICAgU3RyaW5nIHRhZyA9IGVsZW1lbnQuZ2V0TG9jYWxOYW1lKCk7CisJaWYgKHRhZyA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBNYXJzaGFsRXhjZXB0aW9uKCJEb2N1bWVudCBpbXBsZW1lbnRhdGlvbiBtdXN0ICIgKworCQkic3VwcG9ydCBET00gTGV2ZWwgMiBhbmQgYmUgbmFtZXNwYWNlIGF3YXJlIik7CisJfQorICAgICAgICBpZiAodGFnLmVxdWFscygiU2lnbmF0dXJlIikpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgRE9NWE1MU2lnbmF0dXJlKGVsZW1lbnQsIGNvbnRleHQsIGdldFByb3ZpZGVyKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhyb3cgbmV3IE1hcnNoYWxFeGNlcHRpb24oImludmFsaWQgU2lnbmF0dXJlIHRhZzogIiArIHRhZyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBpc0ZlYXR1cmVTdXBwb3J0ZWQoU3RyaW5nIGZlYXR1cmUpIHsKKyAgICAgICAgaWYgKGZlYXR1cmUgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgRGlnZXN0TWV0aG9kIG5ld0RpZ2VzdE1ldGhvZChTdHJpbmcgYWxnb3JpdGhtLAorICAgICAgICBEaWdlc3RNZXRob2RQYXJhbWV0ZXJTcGVjIHBhcmFtcykgdGhyb3dzIE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiwKKyAgICAgICAgSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiB7CisJaWYgKGFsZ29yaXRobSA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigpOworCX0KKyAgICAgICAgaWYgKGFsZ29yaXRobS5lcXVhbHMoRGlnZXN0TWV0aG9kLlNIQTEpKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IERPTURpZ2VzdE1ldGhvZC5TSEExKHBhcmFtcyk7CisgICAgICAgIH0gZWxzZSBpZiAoYWxnb3JpdGhtLmVxdWFscyhEaWdlc3RNZXRob2QuU0hBMjU2KSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBET01EaWdlc3RNZXRob2QuU0hBMjU2KHBhcmFtcyk7CisgICAgICAgIH0gZWxzZSBpZiAoYWxnb3JpdGhtLmVxdWFscyhET01EaWdlc3RNZXRob2QuU0hBMzg0KSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBET01EaWdlc3RNZXRob2QuU0hBMzg0KHBhcmFtcyk7CisgICAgICAgIH0gZWxzZSBpZiAoYWxnb3JpdGhtLmVxdWFscyhEaWdlc3RNZXRob2QuU0hBNTEyKSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBET01EaWdlc3RNZXRob2QuU0hBNTEyKHBhcmFtcyk7CisJfSBlbHNlIHsKKwkgICAgdGhyb3cgbmV3IE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbigidW5zdXBwb3J0ZWQgYWxnb3JpdGhtIik7CisJfQorICAgIH0KKworICAgIHB1YmxpYyBTaWduYXR1cmVNZXRob2QgbmV3U2lnbmF0dXJlTWV0aG9kKFN0cmluZyBhbGdvcml0aG0sCisgICAgICAgIFNpZ25hdHVyZU1ldGhvZFBhcmFtZXRlclNwZWMgcGFyYW1zKSB0aHJvd3MgTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uLAorICAgICAgICBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIHsKKwlpZiAoYWxnb3JpdGhtID09IG51bGwpIHsKKwkgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCk7CisJfQorICAgICAgICBpZiAoYWxnb3JpdGhtLmVxdWFscyhTaWduYXR1cmVNZXRob2QuUlNBX1NIQTEpKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IERPTVNpZ25hdHVyZU1ldGhvZC5TSEExd2l0aFJTQShwYXJhbXMpOworICAgICAgICB9IGVsc2UgaWYgKGFsZ29yaXRobS5lcXVhbHMoRE9NU2lnbmF0dXJlTWV0aG9kLlJTQV9TSEEyNTYpKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IERPTVNpZ25hdHVyZU1ldGhvZC5TSEEyNTZ3aXRoUlNBKHBhcmFtcyk7CisgICAgICAgIH0gZWxzZSBpZiAoYWxnb3JpdGhtLmVxdWFscyhET01TaWduYXR1cmVNZXRob2QuUlNBX1NIQTM4NCkpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgRE9NU2lnbmF0dXJlTWV0aG9kLlNIQTM4NHdpdGhSU0EocGFyYW1zKTsKKyAgICAgICAgfSBlbHNlIGlmIChhbGdvcml0aG0uZXF1YWxzKERPTVNpZ25hdHVyZU1ldGhvZC5SU0FfU0hBNTEyKSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBET01TaWduYXR1cmVNZXRob2QuU0hBNTEyd2l0aFJTQShwYXJhbXMpOworICAgICAgICB9IGVsc2UgaWYgKGFsZ29yaXRobS5lcXVhbHMoU2lnbmF0dXJlTWV0aG9kLkRTQV9TSEExKSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBET01TaWduYXR1cmVNZXRob2QuU0hBMXdpdGhEU0EocGFyYW1zKTsKKyAgICAgICAgfSBlbHNlIGlmIChhbGdvcml0aG0uZXF1YWxzKFNpZ25hdHVyZU1ldGhvZC5ITUFDX1NIQTEpKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IERPTUhNQUNTaWduYXR1cmVNZXRob2QuU0hBMShwYXJhbXMpOworICAgICAgICB9IGVsc2UgaWYgKGFsZ29yaXRobS5lcXVhbHMoRE9NSE1BQ1NpZ25hdHVyZU1ldGhvZC5ITUFDX1NIQTI1NikpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgRE9NSE1BQ1NpZ25hdHVyZU1ldGhvZC5TSEEyNTYocGFyYW1zKTsKKyAgICAgICAgfSBlbHNlIGlmIChhbGdvcml0aG0uZXF1YWxzKERPTUhNQUNTaWduYXR1cmVNZXRob2QuSE1BQ19TSEEzODQpKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IERPTUhNQUNTaWduYXR1cmVNZXRob2QuU0hBMzg0KHBhcmFtcyk7CisgICAgICAgIH0gZWxzZSBpZiAoYWxnb3JpdGhtLmVxdWFscyhET01ITUFDU2lnbmF0dXJlTWV0aG9kLkhNQUNfU0hBNTEyKSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBET01ITUFDU2lnbmF0dXJlTWV0aG9kLlNIQTUxMihwYXJhbXMpOworICAgICAgICB9IGVsc2UgaWYgKGFsZ29yaXRobS5lcXVhbHMoRE9NU2lnbmF0dXJlTWV0aG9kLkVDRFNBX1NIQTEpKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IERPTVNpZ25hdHVyZU1ldGhvZC5TSEExd2l0aEVDRFNBKHBhcmFtcyk7CisgICAgICAgIH0gZWxzZSBpZiAoYWxnb3JpdGhtLmVxdWFscyhET01TaWduYXR1cmVNZXRob2QuRUNEU0FfU0hBMjU2KSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBET01TaWduYXR1cmVNZXRob2QuU0hBMjU2d2l0aEVDRFNBKHBhcmFtcyk7CisgICAgICAgIH0gZWxzZSBpZiAoYWxnb3JpdGhtLmVxdWFscyhET01TaWduYXR1cmVNZXRob2QuRUNEU0FfU0hBMzg0KSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBET01TaWduYXR1cmVNZXRob2QuU0hBMzg0d2l0aEVDRFNBKHBhcmFtcyk7CisgICAgICAgIH0gZWxzZSBpZiAoYWxnb3JpdGhtLmVxdWFscyhET01TaWduYXR1cmVNZXRob2QuRUNEU0FfU0hBNTEyKSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBET01TaWduYXR1cmVNZXRob2QuU0hBNTEyd2l0aEVDRFNBKHBhcmFtcyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uKCJ1bnN1cHBvcnRlZCBhbGdvcml0aG0iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBUcmFuc2Zvcm0gbmV3VHJhbnNmb3JtKFN0cmluZyBhbGdvcml0aG0sCisgICAgICAgIFRyYW5zZm9ybVBhcmFtZXRlclNwZWMgcGFyYW1zKSB0aHJvd3MgTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uLAorICAgICAgICBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIHsKKwlUcmFuc2Zvcm1TZXJ2aWNlIHNwaTsKKwl0cnkgeworCSAgICBzcGkgPSBUcmFuc2Zvcm1TZXJ2aWNlLmdldEluc3RhbmNlKGFsZ29yaXRobSwgIkRPTSIpOworCX0gY2F0Y2ggKE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiBuc2FlKSB7CisJICAgIHNwaSA9IFRyYW5zZm9ybVNlcnZpY2UuZ2V0SW5zdGFuY2UoYWxnb3JpdGhtLCAiRE9NIiwgZ2V0UHJvdmlkZXIoKSk7CisJfQorCXNwaS5pbml0KHBhcmFtcyk7CisJcmV0dXJuIG5ldyBET01UcmFuc2Zvcm0oc3BpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgVHJhbnNmb3JtIG5ld1RyYW5zZm9ybShTdHJpbmcgYWxnb3JpdGhtLAorICAgICAgICBYTUxTdHJ1Y3R1cmUgcGFyYW1zKSB0aHJvd3MgTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uLAorICAgICAgICBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIHsKKwlUcmFuc2Zvcm1TZXJ2aWNlIHNwaTsKKwl0cnkgeworCSAgICBzcGkgPSBUcmFuc2Zvcm1TZXJ2aWNlLmdldEluc3RhbmNlKGFsZ29yaXRobSwgIkRPTSIpOworCX0gY2F0Y2ggKE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiBuc2FlKSB7CisJICAgIHNwaSA9IFRyYW5zZm9ybVNlcnZpY2UuZ2V0SW5zdGFuY2UoYWxnb3JpdGhtLCAiRE9NIiwgZ2V0UHJvdmlkZXIoKSk7CisJfQorCWlmIChwYXJhbXMgPT0gbnVsbCkgeworCSAgICBzcGkuaW5pdChudWxsKTsKKwl9IGVsc2UgeworCSAgICBzcGkuaW5pdChwYXJhbXMsIG51bGwpOworCX0KKwlyZXR1cm4gbmV3IERPTVRyYW5zZm9ybShzcGkpOworICAgIH0KKworICAgIHB1YmxpYyBDYW5vbmljYWxpemF0aW9uTWV0aG9kIG5ld0Nhbm9uaWNhbGl6YXRpb25NZXRob2QoU3RyaW5nIGFsZ29yaXRobSwKKyAgICAgICAgQzE0Tk1ldGhvZFBhcmFtZXRlclNwZWMgcGFyYW1zKSB0aHJvd3MgTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uLAorICAgICAgICBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIHsKKwlUcmFuc2Zvcm1TZXJ2aWNlIHNwaTsKKwl0cnkgeworCSAgICBzcGkgPSBUcmFuc2Zvcm1TZXJ2aWNlLmdldEluc3RhbmNlKGFsZ29yaXRobSwgIkRPTSIpOworCX0gY2F0Y2ggKE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiBuc2FlKSB7CisJICAgIHNwaSA9IFRyYW5zZm9ybVNlcnZpY2UuZ2V0SW5zdGFuY2UoYWxnb3JpdGhtLCAiRE9NIiwgZ2V0UHJvdmlkZXIoKSk7CisJfQorCXNwaS5pbml0KHBhcmFtcyk7CisJcmV0dXJuIG5ldyBET01DYW5vbmljYWxpemF0aW9uTWV0aG9kKHNwaSk7CisgICAgfQorCisgICAgcHVibGljIENhbm9uaWNhbGl6YXRpb25NZXRob2QgbmV3Q2Fub25pY2FsaXphdGlvbk1ldGhvZChTdHJpbmcgYWxnb3JpdGhtLAorICAgICAgICBYTUxTdHJ1Y3R1cmUgcGFyYW1zKSB0aHJvd3MgTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uLAorICAgICAgICBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIHsKKwlUcmFuc2Zvcm1TZXJ2aWNlIHNwaTsgCisJdHJ5IHsKKwkgICAgc3BpID0gVHJhbnNmb3JtU2VydmljZS5nZXRJbnN0YW5jZShhbGdvcml0aG0sICJET00iKTsKKwl9IGNhdGNoIChOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24gbnNhZSkgeworCSAgICBzcGkgPSBUcmFuc2Zvcm1TZXJ2aWNlLmdldEluc3RhbmNlKGFsZ29yaXRobSwgIkRPTSIsIGdldFByb3ZpZGVyKCkpOworCX0KKwlpZiAocGFyYW1zID09IG51bGwpIHsKKwkgICAgc3BpLmluaXQobnVsbCk7CisJfSBlbHNlIHsKKwkgICAgc3BpLmluaXQocGFyYW1zLCBudWxsKTsKKwl9CisJcmV0dXJuIG5ldyBET01DYW5vbmljYWxpemF0aW9uTWV0aG9kKHNwaSk7CisgICAgfQorCisgICAgcHVibGljIFVSSURlcmVmZXJlbmNlciBnZXRVUklEZXJlZmVyZW5jZXIoKSB7CisJcmV0dXJuIERPTVVSSURlcmVmZXJlbmNlci5JTlNUQU5DRTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NWFBhdGhGaWx0ZXIyVHJhbnNmb3JtLmphdmEgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NWFBhdGhGaWx0ZXIyVHJhbnNmb3JtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNkMDUzMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01YUGF0aEZpbHRlcjJUcmFuc2Zvcm0uamF2YQpAQCAtMCwwICsxLDE1MSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAzIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKi8KKy8qCisgKiBQb3J0aW9ucyBjb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2Ugb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb207CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLnNwZWMuVHJhbnNmb3JtUGFyYW1ldGVyU3BlYzsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuc3BlYy5YUGF0aFR5cGU7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLnNwZWMuWFBhdGhGaWx0ZXIyUGFyYW1ldGVyU3BlYzsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBvcmcudzNjLmRvbS5BdHRyOworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTmFtZWROb2RlTWFwOworCisvKioKKyAqIERPTS1iYXNlZCBpbXBsZW1lbnRhdGlvbiBvZiBYUGF0aCBGaWx0ZXIgMi4wIFRyYW5zZm9ybS4KKyAqIChVc2VzIEFwYWNoZSBYTUwtU2VjIFRyYW5zZm9ybSBpbXBsZW1lbnRhdGlvbikKKyAqCisgKiBAYXV0aG9yIEpveWNlIExldW5nCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBET01YUGF0aEZpbHRlcjJUcmFuc2Zvcm0gZXh0ZW5kcyBBcGFjaGVUcmFuc2Zvcm0geworCisgICAgcHVibGljIHZvaWQgaW5pdChUcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjIHBhcmFtcykKKyAgICAgICAgdGhyb3dzIEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24geworICAgICAgICBpZiAocGFyYW1zID09IG51bGwpIHsKKwkgICAgdGhyb3cgbmV3IEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24oInBhcmFtcyBhcmUgcmVxdWlyZWQiKTsKKwl9IGVsc2UgaWYgKCEocGFyYW1zIGluc3RhbmNlb2YgWFBhdGhGaWx0ZXIyUGFyYW1ldGVyU3BlYykpIHsKKwkgICAgdGhyb3cgbmV3IEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24KKwkJKCJwYXJhbXMgbXVzdCBiZSBvZiB0eXBlIFhQYXRoRmlsdGVyMlBhcmFtZXRlclNwZWMiKTsKKyAgICAgICAgfQorCXRoaXMucGFyYW1zID0gcGFyYW1zOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGluaXQoWE1MU3RydWN0dXJlIHBhcmVudCwgWE1MQ3J5cHRvQ29udGV4dCBjb250ZXh0KQorICAgICAgICB0aHJvd3MgSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiB7CisKKwlzdXBlci5pbml0KHBhcmVudCwgY29udGV4dCk7CisJdHJ5IHsKKwkgICAgdW5tYXJzaGFsUGFyYW1zKERPTVV0aWxzLmdldEZpcnN0Q2hpbGRFbGVtZW50KHRyYW5zZm9ybUVsZW0pKTsKKwl9IGNhdGNoIChNYXJzaGFsRXhjZXB0aW9uIG1lKSB7CisJICAgIHRocm93IChJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uKQorCQluZXcgSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbigpLmluaXRDYXVzZShtZSk7CisJfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB1bm1hcnNoYWxQYXJhbXMoRWxlbWVudCBjdXJYUGF0aEVsZW0pIHRocm93cyBNYXJzaGFsRXhjZXB0aW9uIHsKKyAgICAgICAgTGlzdCBsaXN0ID0gbmV3IEFycmF5TGlzdCgpOworCXdoaWxlIChjdXJYUGF0aEVsZW0gIT0gbnVsbCkgeworCSAgICBTdHJpbmcgeFBhdGggPSBjdXJYUGF0aEVsZW0uZ2V0Rmlyc3RDaGlsZCgpLmdldE5vZGVWYWx1ZSgpOworCSAgICBTdHJpbmcgZmlsdGVyVmFsID0gCisJCURPTVV0aWxzLmdldEF0dHJpYnV0ZVZhbHVlKGN1clhQYXRoRWxlbSwgIkZpbHRlciIpOworCSAgICBpZiAoZmlsdGVyVmFsID09IG51bGwpIHsKKwkJdGhyb3cgbmV3IE1hcnNoYWxFeGNlcHRpb24oImZpbHRlciBjYW5ub3QgYmUgbnVsbCIpOworCSAgICB9CisJICAgIFhQYXRoVHlwZS5GaWx0ZXIgZmlsdGVyID0gbnVsbDsKKyAgICAgICAgICAgIGlmIChmaWx0ZXJWYWwuZXF1YWxzKCJpbnRlcnNlY3QiKSkgeworICAgICAgICAgICAgICAgIGZpbHRlciA9IFhQYXRoVHlwZS5GaWx0ZXIuSU5URVJTRUNUOworICAgICAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXJWYWwuZXF1YWxzKCJzdWJ0cmFjdCIpKSB7ICAgCisgICAgICAgICAgICAgICAgZmlsdGVyID0gWFBhdGhUeXBlLkZpbHRlci5TVUJUUkFDVDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyVmFsLmVxdWFscygidW5pb24iKSkgeworICAgICAgICAgICAgICAgIGZpbHRlciA9IFhQYXRoVHlwZS5GaWx0ZXIuVU5JT047CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBNYXJzaGFsRXhjZXB0aW9uKCJVbmtub3duIFhQYXRoVHlwZSBmaWx0ZXIgdHlwZSIgCisJCSAgICArIGZpbHRlclZhbCk7CisgICAgICAgICAgICB9CisJICAgIE5hbWVkTm9kZU1hcCBhdHRyaWJ1dGVzID0gY3VyWFBhdGhFbGVtLmdldEF0dHJpYnV0ZXMoKTsKKwkgICAgaWYgKGF0dHJpYnV0ZXMgIT0gbnVsbCkgeworCQlpbnQgbGVuZ3RoID0gYXR0cmlidXRlcy5nZXRMZW5ndGgoKTsKKwkgICAgICAgIE1hcCBuYW1lc3BhY2VNYXAgPSBuZXcgSGFzaE1hcChsZW5ndGgpOworCSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworCSAgICAJICAgIEF0dHIgYXR0ciA9IChBdHRyKSBhdHRyaWJ1dGVzLml0ZW0oaSk7CisJICAgIAkgICAgU3RyaW5nIHByZWZpeCA9IGF0dHIuZ2V0UHJlZml4KCk7CisJICAgIAkgICAgaWYgKHByZWZpeCAhPSBudWxsICYmIHByZWZpeC5lcXVhbHMoInhtbG5zIikpIHsKKwkgICAgICAgICAgICAgICAgbmFtZXNwYWNlTWFwLnB1dChhdHRyLmdldExvY2FsTmFtZSgpLCBhdHRyLmdldFZhbHVlKCkpOworICAgICAgICAgICAgCSAgICB9CisgICAgICAgICAgICAgICAgfQorCSAgICAgICAgbGlzdC5hZGQobmV3IFhQYXRoVHlwZSh4UGF0aCwgZmlsdGVyLCBuYW1lc3BhY2VNYXApKTsKKwkgICAgfSBlbHNlIHsKKwkgICAgICAgIGxpc3QuYWRkKG5ldyBYUGF0aFR5cGUoeFBhdGgsIGZpbHRlcikpOworCSAgICB9CisKKwkgICAgY3VyWFBhdGhFbGVtID0gRE9NVXRpbHMuZ2V0TmV4dFNpYmxpbmdFbGVtZW50KGN1clhQYXRoRWxlbSk7CisJfQorICAgICAgICB0aGlzLnBhcmFtcyA9IG5ldyBYUGF0aEZpbHRlcjJQYXJhbWV0ZXJTcGVjKGxpc3QpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG1hcnNoYWxQYXJhbXMoWE1MU3RydWN0dXJlIHBhcmVudCwgWE1MQ3J5cHRvQ29udGV4dCBjb250ZXh0KQorICAgICAgICB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisKKwlzdXBlci5tYXJzaGFsUGFyYW1zKHBhcmVudCwgY29udGV4dCk7CisJWFBhdGhGaWx0ZXIyUGFyYW1ldGVyU3BlYyB4cCA9IAorCSAgICAoWFBhdGhGaWx0ZXIyUGFyYW1ldGVyU3BlYykgZ2V0UGFyYW1ldGVyU3BlYygpOworICAgICAgICBTdHJpbmcgcHJlZml4ID0gRE9NVXRpbHMuZ2V0TlNQcmVmaXgoY29udGV4dCwgVHJhbnNmb3JtLlhQQVRIMik7CisJU3RyaW5nIHFuYW1lID0gKHByZWZpeCA9PSBudWxsIHx8IHByZWZpeC5sZW5ndGgoKSA9PSAwKSAKKwkJICAgICAgID8gInhtbG5zIiA6ICJ4bWxuczoiICsgcHJlZml4OworCUxpc3QgbGlzdCA9IHhwLmdldFhQYXRoTGlzdCgpOworCWZvciAoaW50IGkgPSAwLCBzaXplID0gbGlzdC5zaXplKCk7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgIFhQYXRoVHlwZSB4cGF0aFR5cGUgPSAoWFBhdGhUeXBlKSBsaXN0LmdldChpKTsKKyAgICAgICAgICAgIEVsZW1lbnQgZWxlbSA9IERPTVV0aWxzLmNyZWF0ZUVsZW1lbnQKKyAgICAgICAgICAgICAgICAob3duZXJEb2MsICJYUGF0aCIsIFRyYW5zZm9ybS5YUEFUSDIsIHByZWZpeCk7CisgICAgICAgICAgICBlbGVtLmFwcGVuZENoaWxkCisJCShvd25lckRvYy5jcmVhdGVUZXh0Tm9kZSh4cGF0aFR5cGUuZ2V0RXhwcmVzc2lvbigpKSk7CisJICAgIERPTVV0aWxzLnNldEF0dHJpYnV0ZQorCQkoZWxlbSwgIkZpbHRlciIsIHhwYXRoVHlwZS5nZXRGaWx0ZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIiwgcW5hbWUsIAorCSAgICAgICAgVHJhbnNmb3JtLlhQQVRIMik7CisKKyAgICAgICAgICAgIC8vIGFkZCBuYW1lc3BhY2UgYXR0cmlidXRlcywgaWYgbmVjZXNzYXJ5CisgICAgICAgICAgICBJdGVyYXRvciBpdCA9IHhwYXRoVHlwZS5nZXROYW1lc3BhY2VNYXAoKS5lbnRyeVNldCgpLml0ZXJhdG9yKCk7CisgICAgICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgTWFwLkVudHJ5IGVudHJ5ID0gKE1hcC5FbnRyeSkgaXQubmV4dCgpOworICAgICAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIiwgInhtbG5zOiIKKyAgICAgICAgICAgICAgICAgICAgKyAoU3RyaW5nKSBlbnRyeS5nZXRLZXkoKSwgKFN0cmluZykgZW50cnkuZ2V0VmFsdWUoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRyYW5zZm9ybUVsZW0uYXBwZW5kQ2hpbGQoZWxlbSk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NWFBhdGhUcmFuc2Zvcm0uamF2YSBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9ET01YUGF0aFRyYW5zZm9ybS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzNWU4MjAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NWFBhdGhUcmFuc2Zvcm0uamF2YQpAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKy8qCisgKiAkSWQkCisgKi8KK3BhY2thZ2Ugb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb207CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLnNwZWMuVHJhbnNmb3JtUGFyYW1ldGVyU3BlYzsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuc3BlYy5YUGF0aEZpbHRlclBhcmFtZXRlclNwZWM7CitpbXBvcnQgamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5OYW1lZE5vZGVNYXA7CisKKy8qKgorICogRE9NLWJhc2VkIGltcGxlbWVudGF0aW9uIG9mIFhQYXRoIEZpbHRlcmluZyBUcmFuc2Zvcm0uCisgKiAoVXNlcyBBcGFjaGUgWE1MLVNlYyBUcmFuc2Zvcm0gaW1wbGVtZW50YXRpb24pCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgRE9NWFBhdGhUcmFuc2Zvcm0gZXh0ZW5kcyBBcGFjaGVUcmFuc2Zvcm0geworIAorICAgIHB1YmxpYyB2b2lkIGluaXQoVHJhbnNmb3JtUGFyYW1ldGVyU3BlYyBwYXJhbXMpCisgICAgICAgIHRocm93cyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKHBhcmFtcyA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uKCJwYXJhbXMgYXJlIHJlcXVpcmVkIik7CisJfSBlbHNlIGlmICghKHBhcmFtcyBpbnN0YW5jZW9mIFhQYXRoRmlsdGVyUGFyYW1ldGVyU3BlYykpIHsKKwkgICAgdGhyb3cgbmV3IEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24KKwkJKCJwYXJhbXMgbXVzdCBiZSBvZiB0eXBlIFhQYXRoRmlsdGVyUGFyYW1ldGVyU3BlYyIpOworICAgICAgICB9CisJdGhpcy5wYXJhbXMgPSBwYXJhbXM7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgaW5pdChYTUxTdHJ1Y3R1cmUgcGFyZW50LCBYTUxDcnlwdG9Db250ZXh0IGNvbnRleHQpCisgICAgICAgIHRocm93cyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIHsKKworCXN1cGVyLmluaXQocGFyZW50LCBjb250ZXh0KTsKKwl1bm1hcnNoYWxQYXJhbXMoRE9NVXRpbHMuZ2V0Rmlyc3RDaGlsZEVsZW1lbnQodHJhbnNmb3JtRWxlbSkpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB1bm1hcnNoYWxQYXJhbXMoRWxlbWVudCBwYXJhbXNFbGVtKSB7CisgICAgICAgIFN0cmluZyB4UGF0aCA9IHBhcmFtc0VsZW0uZ2V0Rmlyc3RDaGlsZCgpLmdldE5vZGVWYWx1ZSgpOworICAgICAgICAvLyBjcmVhdGUgYSBNYXAgb2YgbmFtZXNwYWNlIHByZWZpeGVzCisgICAgICAgIE5hbWVkTm9kZU1hcCBhdHRyaWJ1dGVzID0gcGFyYW1zRWxlbS5nZXRBdHRyaWJ1dGVzKCk7CisgICAgICAgIGlmIChhdHRyaWJ1dGVzICE9IG51bGwpIHsKKwkgICAgaW50IGxlbmd0aCA9IGF0dHJpYnV0ZXMuZ2V0TGVuZ3RoKCk7CisgICAgICAgICAgICBNYXAgbmFtZXNwYWNlTWFwID0gbmV3IEhhc2hNYXAobGVuZ3RoKTsKKwkgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworCSAgICAgICAgQXR0ciBhdHRyID0gKEF0dHIpIGF0dHJpYnV0ZXMuaXRlbShpKTsKKwkgICAgICAgIFN0cmluZyBwcmVmaXggPSBhdHRyLmdldFByZWZpeCgpOworCSAgICAgICAgaWYgKHByZWZpeCAhPSBudWxsICYmIHByZWZpeC5lcXVhbHMoInhtbG5zIikpIHsKKwkgICAgICAgICAgICBuYW1lc3BhY2VNYXAucHV0KGF0dHIuZ2V0TG9jYWxOYW1lKCksIGF0dHIuZ2V0VmFsdWUoKSk7CisJICAgICAgICB9CisJICAgIH0KKwkgICAgdGhpcy5wYXJhbXMgPSBuZXcgWFBhdGhGaWx0ZXJQYXJhbWV0ZXJTcGVjKHhQYXRoLCBuYW1lc3BhY2VNYXApOworCX0gZWxzZSB7CisJICAgIHRoaXMucGFyYW1zID0gbmV3IFhQYXRoRmlsdGVyUGFyYW1ldGVyU3BlYyh4UGF0aCk7CisJfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG1hcnNoYWxQYXJhbXMoWE1MU3RydWN0dXJlIHBhcmVudCwgWE1MQ3J5cHRvQ29udGV4dCBjb250ZXh0KQorICAgICAgICB0aHJvd3MgTWFyc2hhbEV4Y2VwdGlvbiB7CisKKwlzdXBlci5tYXJzaGFsUGFyYW1zKHBhcmVudCwgY29udGV4dCk7CisJWFBhdGhGaWx0ZXJQYXJhbWV0ZXJTcGVjIHhwID0gCisJICAgIChYUGF0aEZpbHRlclBhcmFtZXRlclNwZWMpIGdldFBhcmFtZXRlclNwZWMoKTsKKwlFbGVtZW50IHhwYXRoRWxlbSA9IERPTVV0aWxzLmNyZWF0ZUVsZW1lbnQKKwkgICAgKG93bmVyRG9jLCAiWFBhdGgiLCBYTUxTaWduYXR1cmUuWE1MTlMsIAorCSAgICAgRE9NVXRpbHMuZ2V0U2lnbmF0dXJlUHJlZml4KGNvbnRleHQpKTsKKwl4cGF0aEVsZW0uYXBwZW5kQ2hpbGQob3duZXJEb2MuY3JlYXRlVGV4dE5vZGUoeHAuZ2V0WFBhdGgoKSkpOworCisJLy8gYWRkIG5hbWVzcGFjZSBhdHRyaWJ1dGVzLCBpZiBuZWNlc3NhcnkKKwlJdGVyYXRvciBpID0geHAuZ2V0TmFtZXNwYWNlTWFwKCkuZW50cnlTZXQoKS5pdGVyYXRvcigpOworCXdoaWxlIChpLmhhc05leHQoKSkgeworCSAgICBNYXAuRW50cnkgZW50cnkgPSAoTWFwLkVudHJ5KSBpLm5leHQoKTsKKwkgICAgeHBhdGhFbGVtLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsICJ4bWxuczoiIAorCQkrIChTdHJpbmcpIGVudHJ5LmdldEtleSgpLCAoU3RyaW5nKSBlbnRyeS5nZXRWYWx1ZSgpKTsKKwl9CisJICAgIAorCXRyYW5zZm9ybUVsZW0uYXBwZW5kQ2hpbGQoeHBhdGhFbGVtKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vRE9NWFNMVFRyYW5zZm9ybS5qYXZhIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTVhTTFRUcmFuc2Zvcm0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTA0M2JhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL0RPTVhTTFRUcmFuc2Zvcm0uamF2YQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IDIwMDUtMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tOworCitpbXBvcnQgamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uOworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuc3BlYy5UcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5zcGVjLlhTTFRUcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjOworCisvKioKKyAqIERPTS1iYXNlZCBpbXBsZW1lbnRhdGlvbiBvZiBYU0xUIFRyYW5zZm9ybS4KKyAqIChVc2VzIEFwYWNoZSBYTUwtU2VjIFRyYW5zZm9ybSBpbXBsZW1lbnRhdGlvbikKKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBET01YU0xUVHJhbnNmb3JtIGV4dGVuZHMgQXBhY2hlVHJhbnNmb3JtIHsKKyAKKyAgICBwdWJsaWMgdm9pZCBpbml0KFRyYW5zZm9ybVBhcmFtZXRlclNwZWMgcGFyYW1zKQorICAgICAgICB0aHJvd3MgSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiB7CisJaWYgKHBhcmFtcyA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uKCJwYXJhbXMgYXJlIHJlcXVpcmVkIik7CisJfQorCWlmICghKHBhcmFtcyBpbnN0YW5jZW9mIFhTTFRUcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjKSkgeworCSAgICB0aHJvdyBuZXcgSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbigidW5yZWNvZ25pemVkIHBhcmFtcyIpOworCX0KKwl0aGlzLnBhcmFtcyA9IHBhcmFtczsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBpbml0KFhNTFN0cnVjdHVyZSBwYXJlbnQsIFhNTENyeXB0b0NvbnRleHQgY29udGV4dCkKKyAgICAgICAgdGhyb3dzIEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24geworCisJc3VwZXIuaW5pdChwYXJlbnQsIGNvbnRleHQpOworCXVubWFyc2hhbFBhcmFtcyhET01VdGlscy5nZXRGaXJzdENoaWxkRWxlbWVudCh0cmFuc2Zvcm1FbGVtKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHVubWFyc2hhbFBhcmFtcyhFbGVtZW50IHNoZWV0KSB7CisJdGhpcy5wYXJhbXMgPSBuZXcgWFNMVFRyYW5zZm9ybVBhcmFtZXRlclNwZWMKKwkgICAgKG5ldyBqYXZheC54bWwuY3J5cHRvLmRvbS5ET01TdHJ1Y3R1cmUoc2hlZXQpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBtYXJzaGFsUGFyYW1zKFhNTFN0cnVjdHVyZSBwYXJlbnQsIFhNTENyeXB0b0NvbnRleHQgY29udGV4dCkKKyAgICAgICAgdGhyb3dzIE1hcnNoYWxFeGNlcHRpb24geworCXN1cGVyLm1hcnNoYWxQYXJhbXMocGFyZW50LCBjb250ZXh0KTsKKwlYU0xUVHJhbnNmb3JtUGFyYW1ldGVyU3BlYyB4cCA9IAorCSAgICAoWFNMVFRyYW5zZm9ybVBhcmFtZXRlclNwZWMpIGdldFBhcmFtZXRlclNwZWMoKTsKKwlOb2RlIHhzbHRFbGVtID0gCisJICAgICgoamF2YXgueG1sLmNyeXB0by5kb20uRE9NU3RydWN0dXJlKSB4cC5nZXRTdHlsZXNoZWV0KCkpLmdldE5vZGUoKTsKKwlET01VdGlscy5hcHBlbmRDaGlsZCh0cmFuc2Zvcm1FbGVtLCB4c2x0RWxlbSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL1V0aWxzLmphdmEgYi9zcmMvb3JnL2pjcC94bWwvZHNpZy9pbnRlcm5hbC9kb20vVXRpbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWE3NjUwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL1V0aWxzLmphdmEKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisvKgorICogJElkJAorICovCitwYWNrYWdlIG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tOworCitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC4qOworaW1wb3J0IG9yZy53M2MuZG9tLk5hbWVkTm9kZU1hcDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworCisvKioKKyAqIE1pc2NlbGxhbmVvdXMgc3RhdGljIHV0aWxpdHkgbWV0aG9kcyBmb3IgdXNlIGluIEpTUiAxMDUgUkkuCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgVXRpbHMgeworCisgICAgcHJpdmF0ZSBVdGlscygpIHt9CisKKyAgICBwdWJsaWMgc3RhdGljIGJ5dGVbXSByZWFkQnl0ZXNGcm9tU3RyZWFtKElucHV0U3RyZWFtIGlzKSAKKwl0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gYmFvcyA9IG5ldyBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKTsKKyAgICAgICAgYnl0ZVtdIGJ1ZiA9IG5ldyBieXRlWzEwMjRdOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgaW50IHJlYWQgPSBpcy5yZWFkKGJ1Zik7CisJICAgIGlmIChyZWFkID09IC0xKSB7IC8vIEVPRgorCQlicmVhazsKKwkgICAgfQorICAgICAgICAgICAgYmFvcy53cml0ZShidWYsIDAsIHJlYWQpOworICAgICAgICAgICAgaWYgKHJlYWQgPCAxMDI0KSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJhb3MudG9CeXRlQXJyYXkoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0cyBhbiBJdGVyYXRvciB0byBhIFNldCBvZiBOb2RlcywgYWNjb3JkaW5nIHRvIHRoZSBYUGF0aAorICAgICAqIERhdGEgTW9kZWwuCisgICAgICoKKyAgICAgKiBAcGFyYW0gaSB0aGUgSXRlcmF0b3IKKyAgICAgKiBAcmV0dXJuIHRoZSBTZXQgb2YgTm9kZXMKKyAgICAgKi8KKyAgICBzdGF0aWMgU2V0IHRvTm9kZVNldChJdGVyYXRvciBpKSB7CisJU2V0IG5vZGVTZXQgPSBuZXcgSGFzaFNldCgpOworCXdoaWxlIChpLmhhc05leHQoKSkgeworCSAgICBOb2RlIG4gPSAoTm9kZSkgaS5uZXh0KCk7CisJICAgIG5vZGVTZXQuYWRkKG4pOworCSAgICAvLyBpbnNlcnQgYXR0cmlidXRlcyBub2RlcyB0byBjb21wbHkgd2l0aCBYUGF0aAorCSAgICBpZiAobi5nZXROb2RlVHlwZSgpID09IE5vZGUuRUxFTUVOVF9OT0RFKSB7CisJICAgICAgICBOYW1lZE5vZGVNYXAgbm5tID0gbi5nZXRBdHRyaWJ1dGVzKCk7CisJCWZvciAoaW50IGogPSAwLCBsZW5ndGggPSBubm0uZ2V0TGVuZ3RoKCk7IGogPCBsZW5ndGg7IGorKykgeworCQkgICAgbm9kZVNldC5hZGQobm5tLml0ZW0oaikpOworCQl9CisJICAgIH0KKwl9CisJcmV0dXJuIG5vZGVTZXQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgSUQgZnJvbSBhIHNhbWUtZG9jdW1lbnQgVVJJIChleDogIiNpZCIpCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgcGFyc2VJZEZyb21TYW1lRG9jdW1lbnRVUkkoU3RyaW5nIHVyaSkgeworCWlmICh1cmkubGVuZ3RoKCkgPT0gMCkgeworCSAgICByZXR1cm4gbnVsbDsKKwl9CisJU3RyaW5nIGlkID0gdXJpLnN1YnN0cmluZygxKTsKKwlpZiAoaWQgIT0gbnVsbCAmJiBpZC5zdGFydHNXaXRoKCJ4cG9pbnRlcihpZCgiKSkgeworICAgICAgICAgICAgaW50IGkxID0gaWQuaW5kZXhPZignXCcnKTsKKyAgICAgICAgICAgIGludCBpMiA9IGlkLmluZGV4T2YoJ1wnJywgaTErMSk7CisgICAgICAgICAgICBpZCA9IGlkLnN1YnN0cmluZyhpMSsxLCBpMik7CisJfQorCXJldHVybiBpZDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdXJpIGlzIGEgc2FtZS1kb2N1bWVudCBVUkksIGZhbHNlIG90aGVyd2lzZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gc2FtZURvY3VtZW50VVJJKFN0cmluZyB1cmkpIHsKKwlyZXR1cm4gKHVyaSAhPSBudWxsICYmICh1cmkubGVuZ3RoKCkgPT0gMCB8fCB1cmkuY2hhckF0KDApID09ICcjJykpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9YTUxEU2lnUkkuamF2YSBiL3NyYy9vcmcvamNwL3htbC9kc2lnL2ludGVybmFsL2RvbS9YTUxEU2lnUkkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTZjZWI4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9qY3AveG1sL2RzaWcvaW50ZXJuYWwvZG9tL1hNTERTaWdSSS5qYXZhCkBAIC0wLDAgKzEsMTU5IEBACisvKgorICogQ29weXJpZ2h0IDIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqLworLyoKKyAqIFBvcnRpb25zIGNvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworLyoKKyAqICRJZCQKKyAqLworcGFja2FnZSBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbTsKKworaW1wb3J0IGphdmEudXRpbC4qOworaW1wb3J0IGphdmEuc2VjdXJpdHkuKjsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy4qOworCisvKioKKyAqIFRoZSBYTUxEU2lnIFJJIFByb3ZpZGVyLgorICoKKyAqIEBhdXRob3IgSm95Y2UgTGV1bmcKKyAqLworCisvKioKKyAqIERlZmluZXMgdGhlIFhNTERTaWdSSSBwcm92aWRlci4KKyAqLworCitwdWJsaWMgZmluYWwgY2xhc3MgWE1MRFNpZ1JJIGV4dGVuZHMgUHJvdmlkZXIgeworCisgICAgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC01MDQ5NzY1MDk5Mjk5NDk0NTU0TDsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBJTkZPID0gIlhNTERTaWcgIiArIAorICAgICIoRE9NIFhNTFNpZ25hdHVyZUZhY3Rvcnk7IERPTSBLZXlJbmZvRmFjdG9yeSkiOworCisgICAgcHVibGljIFhNTERTaWdSSSgpIHsKKwkvKiBXZSBhcmUgdGhlIFhNTERTaWcgcHJvdmlkZXIgKi8KKwlzdXBlcigiWE1MRFNpZyIsIDEuMCwgSU5GTyk7CisJCisJZmluYWwgTWFwIG1hcCA9IG5ldyBIYXNoTWFwKCk7CisgICAgICAgIG1hcC5wdXQoIlhNTFNpZ25hdHVyZUZhY3RvcnkuRE9NIiwgCisJICAgICAgICAib3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uRE9NWE1MU2lnbmF0dXJlRmFjdG9yeSIpOworICAgICAgICBtYXAucHV0KCJLZXlJbmZvRmFjdG9yeS5ET00iLCAKKwkgICAgICAgICJvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbS5ET01LZXlJbmZvRmFjdG9yeSIpOworCisKKwkvLyBJbmNsdXNpdmUgQzE0TgorCW1hcC5wdXQoKFN0cmluZykiVHJhbnNmb3JtU2VydmljZS4iICsgQ2Fub25pY2FsaXphdGlvbk1ldGhvZC5JTkNMVVNJVkUsCisJCSJvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbS5ET01DYW5vbmljYWxYTUxDMTROTWV0aG9kIik7CisJbWFwLnB1dCgiQWxnLkFsaWFzLlRyYW5zZm9ybVNlcnZpY2UuSU5DTFVTSVZFIiwgCisJCUNhbm9uaWNhbGl6YXRpb25NZXRob2QuSU5DTFVTSVZFKTsKKwltYXAucHV0KChTdHJpbmcpIlRyYW5zZm9ybVNlcnZpY2UuIiArIENhbm9uaWNhbGl6YXRpb25NZXRob2QuSU5DTFVTSVZFICsKKwkJIiBNZWNoYW5pc21UeXBlIiwgIkRPTSIpOworCisJLy8gSW5jbHVzaXZlV2l0aENvbW1lbnRzIEMxNE4KKwltYXAucHV0KChTdHJpbmcpICJUcmFuc2Zvcm1TZXJ2aWNlLiIgKyAKKwkJQ2Fub25pY2FsaXphdGlvbk1ldGhvZC5JTkNMVVNJVkVfV0lUSF9DT01NRU5UUywKKwkJIm9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tLkRPTUNhbm9uaWNhbFhNTEMxNE5NZXRob2QiKTsKKwltYXAucHV0KCJBbGcuQWxpYXMuVHJhbnNmb3JtU2VydmljZS5JTkNMVVNJVkVfV0lUSF9DT01NRU5UUyIsIAorCQlDYW5vbmljYWxpemF0aW9uTWV0aG9kLklOQ0xVU0lWRV9XSVRIX0NPTU1FTlRTKTsKKwltYXAucHV0KChTdHJpbmcpICJUcmFuc2Zvcm1TZXJ2aWNlLiIgKyAKKwkJQ2Fub25pY2FsaXphdGlvbk1ldGhvZC5JTkNMVVNJVkVfV0lUSF9DT01NRU5UUyArIAorCQkiIE1lY2hhbmlzbVR5cGUiLCAiRE9NIik7CisKKwkvLyBJbmNsdXNpdmUgQzE0TiAxLjEKKwltYXAucHV0KChTdHJpbmcpIlRyYW5zZm9ybVNlcnZpY2UuIiArIAorCQkiaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi94bWwtYzE0bjExIiwKKwkJIm9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tLkRPTUNhbm9uaWNhbFhNTEMxNE4xMU1ldGhvZCIpOworCW1hcC5wdXQoKFN0cmluZykiVHJhbnNmb3JtU2VydmljZS4iICsgCisJCSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEiICsKKwkJIiBNZWNoYW5pc21UeXBlIiwgIkRPTSIpOworCisJLy8gSW5jbHVzaXZlV2l0aENvbW1lbnRzIEMxNE4gMS4xIAorCW1hcC5wdXQoKFN0cmluZykiVHJhbnNmb3JtU2VydmljZS4iICsgCisJCSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIiwKKwkJIm9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tLkRPTUNhbm9uaWNhbFhNTEMxNE4xMU1ldGhvZCIpOworCW1hcC5wdXQoKFN0cmluZykiVHJhbnNmb3JtU2VydmljZS4iICsgCisJCSJodHRwOi8vd3d3LnczLm9yZy8yMDA2LzEyL3htbC1jMTRuMTEjV2l0aENvbW1lbnRzIiArCisJCSIgTWVjaGFuaXNtVHlwZSIsICJET00iKTsKKworCS8vIEV4Y2x1c2l2ZSBDMTROCisJbWFwLnB1dCgoU3RyaW5nKSAiVHJhbnNmb3JtU2VydmljZS4iICsgQ2Fub25pY2FsaXphdGlvbk1ldGhvZC5FWENMVVNJVkUsCisJCSJvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbS5ET01FeGNDMTROTWV0aG9kIik7CisJbWFwLnB1dCgiQWxnLkFsaWFzLlRyYW5zZm9ybVNlcnZpY2UuRVhDTFVTSVZFIiwgCisJCUNhbm9uaWNhbGl6YXRpb25NZXRob2QuRVhDTFVTSVZFKTsKKwltYXAucHV0KChTdHJpbmcpIlRyYW5zZm9ybVNlcnZpY2UuIiArIENhbm9uaWNhbGl6YXRpb25NZXRob2QuRVhDTFVTSVZFICsKKwkJIiBNZWNoYW5pc21UeXBlIiwgIkRPTSIpOworCisJLy8gRXhjbHVzaXZlV2l0aENvbW1lbnRzIEMxNE4KKwltYXAucHV0KChTdHJpbmcpICJUcmFuc2Zvcm1TZXJ2aWNlLiIgKyAKKwkJQ2Fub25pY2FsaXphdGlvbk1ldGhvZC5FWENMVVNJVkVfV0lUSF9DT01NRU5UUywKKwkJIm9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tLkRPTUV4Y0MxNE5NZXRob2QiKTsKKwltYXAucHV0KCJBbGcuQWxpYXMuVHJhbnNmb3JtU2VydmljZS5FWENMVVNJVkVfV0lUSF9DT01NRU5UUyIsIAorCQlDYW5vbmljYWxpemF0aW9uTWV0aG9kLkVYQ0xVU0lWRV9XSVRIX0NPTU1FTlRTKTsKKwltYXAucHV0KChTdHJpbmcpICJUcmFuc2Zvcm1TZXJ2aWNlLiIgKyAKKwkJQ2Fub25pY2FsaXphdGlvbk1ldGhvZC5FWENMVVNJVkVfV0lUSF9DT01NRU5UUyArCisJCSIgTWVjaGFuaXNtVHlwZSIsICJET00iKTsKKworCS8vIEJhc2U2NCBUcmFuc2Zvcm0KKwltYXAucHV0KChTdHJpbmcpICJUcmFuc2Zvcm1TZXJ2aWNlLiIgKyBUcmFuc2Zvcm0uQkFTRTY0LAorCQkib3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uRE9NQmFzZTY0VHJhbnNmb3JtIik7CisJbWFwLnB1dCgiQWxnLkFsaWFzLlRyYW5zZm9ybVNlcnZpY2UuQkFTRTY0IiwgVHJhbnNmb3JtLkJBU0U2NCk7CisJbWFwLnB1dCgoU3RyaW5nKSAiVHJhbnNmb3JtU2VydmljZS4iICsgVHJhbnNmb3JtLkJBU0U2NCArIAorCQkiIE1lY2hhbmlzbVR5cGUiLCAiRE9NIik7CisKKwkvLyBFbnZlbG9wZWQgVHJhbnNmb3JtCisJbWFwLnB1dCgoU3RyaW5nKSAiVHJhbnNmb3JtU2VydmljZS4iICsgVHJhbnNmb3JtLkVOVkVMT1BFRCwKKwkJIm9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tLkRPTUVudmVsb3BlZFRyYW5zZm9ybSIpOworCW1hcC5wdXQoIkFsZy5BbGlhcy5UcmFuc2Zvcm1TZXJ2aWNlLkVOVkVMT1BFRCIsIFRyYW5zZm9ybS5FTlZFTE9QRUQpOworCW1hcC5wdXQoKFN0cmluZykgIlRyYW5zZm9ybVNlcnZpY2UuIiArIFRyYW5zZm9ybS5FTlZFTE9QRUQgKyAKKwkJIiBNZWNoYW5pc21UeXBlIiwgIkRPTSIpOworCisJLy8gWFBhdGgyIFRyYW5zZm9ybQorCW1hcC5wdXQoKFN0cmluZykgIlRyYW5zZm9ybVNlcnZpY2UuIiArIFRyYW5zZm9ybS5YUEFUSDIsCisJCSJvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbS5ET01YUGF0aEZpbHRlcjJUcmFuc2Zvcm0iKTsKKwltYXAucHV0KCJBbGcuQWxpYXMuVHJhbnNmb3JtU2VydmljZS5YUEFUSDIiLCBUcmFuc2Zvcm0uWFBBVEgyKTsKKwltYXAucHV0KChTdHJpbmcpICJUcmFuc2Zvcm1TZXJ2aWNlLiIgKyBUcmFuc2Zvcm0uWFBBVEgyICsgCisJCSIgTWVjaGFuaXNtVHlwZSIsICJET00iKTsKKworCS8vIFhQYXRoIFRyYW5zZm9ybQorCW1hcC5wdXQoKFN0cmluZykgIlRyYW5zZm9ybVNlcnZpY2UuIiArIFRyYW5zZm9ybS5YUEFUSCwKKwkJIm9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tLkRPTVhQYXRoVHJhbnNmb3JtIik7CisJbWFwLnB1dCgiQWxnLkFsaWFzLlRyYW5zZm9ybVNlcnZpY2UuWFBBVEgiLCBUcmFuc2Zvcm0uWFBBVEgpOworCW1hcC5wdXQoKFN0cmluZykgIlRyYW5zZm9ybVNlcnZpY2UuIiArIFRyYW5zZm9ybS5YUEFUSCArIAorCQkiIE1lY2hhbmlzbVR5cGUiLCAiRE9NIik7CisKKwkvLyBYU0xUIFRyYW5zZm9ybQorCW1hcC5wdXQoKFN0cmluZykgIlRyYW5zZm9ybVNlcnZpY2UuIiArIFRyYW5zZm9ybS5YU0xULAorCQkib3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uRE9NWFNMVFRyYW5zZm9ybSIpOworCW1hcC5wdXQoIkFsZy5BbGlhcy5UcmFuc2Zvcm1TZXJ2aWNlLlhTTFQiLCBUcmFuc2Zvcm0uWFNMVCk7CisJbWFwLnB1dCgoU3RyaW5nKSAiVHJhbnNmb3JtU2VydmljZS4iICsgVHJhbnNmb3JtLlhTTFQgKyAKKwkJIiBNZWNoYW5pc21UeXBlIiwgIkRPTSIpOworCisJQWNjZXNzQ29udHJvbGxlci5kb1ByaXZpbGVnZWQobmV3IGphdmEuc2VjdXJpdHkuUHJpdmlsZWdlZEFjdGlvbigpIHsKKwkgICAgcHVibGljIE9iamVjdCBydW4oKSB7CisJCXB1dEFsbChtYXApOworCQlyZXR1cm4gbnVsbDsKKwkgICAgfQorCX0pOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY19zYW1wbGVzL2phdmF4L3htbC9jcnlwdG8vZHNpZy9zYW1wbGVzL0dlbkRldGFjaGVkLmphdmEgYi9zcmNfc2FtcGxlcy9qYXZheC94bWwvY3J5cHRvL2RzaWcvc2FtcGxlcy9HZW5EZXRhY2hlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiNTgzNTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfc2FtcGxlcy9qYXZheC94bWwvY3J5cHRvL2RzaWcvc2FtcGxlcy9HZW5EZXRhY2hlZC5qYXZhCkBAIC0wLDAgKzEsMTUxIEBACisvKgorICogQ29weXJpZ2h0IDIwMDYgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLmRzaWcuc2FtcGxlczsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRvbS4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5kb20uRE9NU2lnbkNvbnRleHQ7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLmtleWluZm8uKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuc3BlYy5DMTROTWV0aG9kUGFyYW1ldGVyU3BlYzsKK2ltcG9ydCBqYXZhLmlvLkZpbGVPdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS5zZWN1cml0eS4qOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uKjsKK2ltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLmRvbS5ET01Tb3VyY2U7CitpbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5zdHJlYW0uU3RyZWFtUmVzdWx0OworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworCisvKioKKyAqIFRoaXMgaXMgYSBzaW1wbGUgZXhhbXBsZSBvZiBnZW5lcmF0aW5nIGEgRGV0YWNoZWQgWE1MIAorICogU2lnbmF0dXJlIHVzaW5nIHRoZSBKU1IgMTA1IEFQSS4gVGhlIHJlc3VsdGluZyBzaWduYXR1cmUgd2lsbCBsb29rIAorICogbGlrZSAoa2V5IGFuZCBzaWduYXR1cmUgdmFsdWVzIHdpbGwgYmUgZGlmZmVyZW50KToKKyAqCisgKiA8cHJlPjxjb2RlPgorICogPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgKiAgIDxTaWduZWRJbmZvPgorICogICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz4KKyAqICAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIi8+CisgKiAgICAgPFJlZmVyZW5jZSBVUkk9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1zdHlsZXNoZWV0Ij4KKyAqICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPgorICogICAgICAgPERpZ2VzdFZhbHVlPjYwTnZadnRkVEIrN1VubExwL0gyNHA3aDRicz08L0RpZ2VzdFZhbHVlPgorICogICAgIDwvUmVmZXJlbmNlPgorICogICA8L1NpZ25lZEluZm8+CisgKiAgIDxTaWduYXR1cmVWYWx1ZT4KKyAqICAgICBEcEV5bGhRb2lVS0JvS1dtWWZhalhPN0xaeGlEWWdWdFV0Q055VGd3WmdvQ2h6b3JBMm5oa1E9PQorICogICA8L1NpZ25hdHVyZVZhbHVlPgorICogICA8S2V5SW5mbz4KKyAqICAgICA8S2V5VmFsdWU+CisgKiAgICAgICA8RFNBS2V5VmFsdWU+CisgKgkgICA8UD4KKyAqICAgICAgICAgICByRnRvOHVQUU02eTM0RkxQbURoNDBCTEoxclZyQzhWZVJxdXVoUFo2allORmtRdXd4bnUvd0N2SUFNaHVrUEJMCisgKiAgICAgICAgICAgRkVUOGJKZi9iMmVmK29xeFphakViKzg4emxab3lHOGcvd01mREJIVHh6K0Nub3dMYWhuQ0NUWUJwNWt0N0c4cQorICogICAgICAgICAgIFVvYkp1dmp5bHdqMXN0N1Y5THN1MDNpWE1YdGJpcmlVakZhNWdVUmFzTjg9CisgKiAgICAgICAgIDwvUD4KKyAqICAgICAgICAgPFE+CisgKiAgICAgICAgICAga0VqQUZwQ2U0bGNVT2R3cGhwemYrdEJhVWRzPQorICogICAgICAgICA8L1E+CisgKiAgICAgICAgIDxHPgorICogICAgICAgICAgIG9lMTRSMk90eUt4K3MrNjBPNUJSTk1PWXBJZzJUVS9mMTVOM2JzREVyS09XdEtYZU5LOUZTN2RXU3RyZUR4bzIKKyAqICAgICAgICAgICBTU2dPb25xQWQ0RnVKLzR1dmE3R2dOTDRVTElxWTdFK21XNWl3SjduL1dURUxoOThtRW9jc0xYa05oMjRIY0g0CisgKiAgICAgICAgICAgQlpmU0NUcnV1em1DeWpkVjFLU3FYL0V1eDA0SGZDV1ltZHhOM1NRL3Fxdz0KKyAqICAgICAgICAgPC9HPgorICogICAgICAgICA8WT4KKyAqICAgICAgICAgICBwQTVOblp2Y2Q1NzRXUlh1T0E3WmZDLzdMcXQ0Y0IwTVJMV3RIdWJ0Sm9WT2FvOWliNXJ5NHJUazByNmRkbk92CisgKiAgICAgICAgICAgQUlHS2t0dXR6SzN5bXZLbGVTM0RPcndaUWdKKy9CRFdEVzhrTzlSNjZvNnJkamlTb2JCaS8wYzJWMStka3FPZworICogICAgICAgICAgIGpGbUt6Mzk1bXZDT1pHaEM3ZnFBVmhIYXQyRWpHUE1mZ1NaeUFCYTcrMWs9CisgKiAgICAgICAgIDwvWT4KKyAqICAgICAgIDwvRFNBS2V5VmFsdWU+CisgKiAgICAgPC9LZXlWYWx1ZT4KKyAqICAgPC9LZXlJbmZvPgorICogPC9TaWduYXR1cmU+CisgKiA8L2NvZGU+PC9wcmU+CisgKi8KK3B1YmxpYyBjbGFzcyBHZW5EZXRhY2hlZCB7CisKKyAgICAvLworICAgIC8vIFN5bm9wc2lzOiBqYXZhIEdlbkRldGFjaGVkIFtvdXRwdXRdCisgICAgLy8KKyAgICAvLyB3aGVyZSBvdXRwdXQgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdGhhdCB3aWxsIGNvbnRhaW4gdGhlIGRldGFjaGVkCisgICAgLy8gc2lnbmF0dXJlLiBJZiBub3Qgc3BlY2lmaWVkLCBzdGFuZGFyZCBvdXRwdXQgaXMgdXNlZC4KKyAgICAvLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworCisJLy8gRmlyc3QsIGNyZWF0ZSBhIERPTSBYTUxTaWduYXR1cmVGYWN0b3J5IHRoYXQgd2lsbCBiZSB1c2VkIHRvIAorCS8vIGdlbmVyYXRlIHRoZSBYTUxTaWduYXR1cmUgYW5kIG1hcnNoYWwgaXQgdG8gRE9NLgorCVN0cmluZyBwcm92aWRlck5hbWUgPSBTeXN0ZW0uZ2V0UHJvcGVydHkKKwkgICAgKCJqc3IxMDVQcm92aWRlciIsICJvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbS5YTUxEU2lnUkkiKTsKKwlYTUxTaWduYXR1cmVGYWN0b3J5IGZhYyA9IFhNTFNpZ25hdHVyZUZhY3RvcnkuZ2V0SW5zdGFuY2UoIkRPTSIsCisJICAgIChQcm92aWRlcikgQ2xhc3MuZm9yTmFtZShwcm92aWRlck5hbWUpLm5ld0luc3RhbmNlKCkpOworCisJLy8gQ3JlYXRlIGEgUmVmZXJlbmNlIHRvIGFuIGV4dGVybmFsIFVSSSB0aGF0IHdpbGwgYmUgZGlnZXN0ZWQKKwkvLyB1c2luZyB0aGUgU0hBMSBkaWdlc3QgYWxnb3JpdGhtCisJUmVmZXJlbmNlIHJlZiA9IGZhYy5uZXdSZWZlcmVuY2UoImh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1zdHlsZXNoZWV0IiwgCSAgICBmYWMubmV3RGlnZXN0TWV0aG9kKERpZ2VzdE1ldGhvZC5TSEExLCBudWxsKSk7CisKKwkvLyBDcmVhdGUgdGhlIFNpZ25lZEluZm8KKwlTaWduZWRJbmZvIHNpID0gZmFjLm5ld1NpZ25lZEluZm8oCisJICAgIGZhYy5uZXdDYW5vbmljYWxpemF0aW9uTWV0aG9kCisJICAgICAgICAoQ2Fub25pY2FsaXphdGlvbk1ldGhvZC5JTkNMVVNJVkVfV0lUSF9DT01NRU5UUywgCisJCSAoQzE0Tk1ldGhvZFBhcmFtZXRlclNwZWMpIG51bGwpLAorCSAgICBmYWMubmV3U2lnbmF0dXJlTWV0aG9kKFNpZ25hdHVyZU1ldGhvZC5EU0FfU0hBMSwgbnVsbCksCisJICAgIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QocmVmKSk7CisKKwkvLyBDcmVhdGUgYSBEU0EgS2V5UGFpcgorCUtleVBhaXJHZW5lcmF0b3Iga3BnID0gS2V5UGFpckdlbmVyYXRvci5nZXRJbnN0YW5jZSgiRFNBIik7CisJa3BnLmluaXRpYWxpemUoNTEyKTsKKwlLZXlQYWlyIGtwID0ga3BnLmdlbmVyYXRlS2V5UGFpcigpOworCisJLy8gQ3JlYXRlIGEgS2V5VmFsdWUgY29udGFpbmluZyB0aGUgRFNBIFB1YmxpY0tleSB0aGF0IHdhcyBnZW5lcmF0ZWQKKwlLZXlJbmZvRmFjdG9yeSBraWYgPSBmYWMuZ2V0S2V5SW5mb0ZhY3RvcnkoKTsKKwlLZXlWYWx1ZSBrdiA9IGtpZi5uZXdLZXlWYWx1ZShrcC5nZXRQdWJsaWMoKSk7CisKKwkvLyBDcmVhdGUgYSBLZXlJbmZvIGFuZCBhZGQgdGhlIEtleVZhbHVlIHRvIGl0CisJS2V5SW5mbyBraSA9IGtpZi5uZXdLZXlJbmZvKENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3Qoa3YpKTsKKworCS8vIENyZWF0ZSB0aGUgWE1MU2lnbmF0dXJlIChidXQgZG9uJ3Qgc2lnbiBpdCB5ZXQpCisJWE1MU2lnbmF0dXJlIHNpZ25hdHVyZSA9IGZhYy5uZXdYTUxTaWduYXR1cmUoc2ksIGtpKTsKKworCS8vIENyZWF0ZSB0aGUgRG9jdW1lbnQgdGhhdCB3aWxsIGhvbGQgdGhlIHJlc3VsdGluZyBYTUxTaWduYXR1cmUKKwlEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKwlkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7IC8vIG11c3QgYmUgc2V0CisJRG9jdW1lbnQgZG9jID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpLm5ld0RvY3VtZW50KCk7CisKKwkvLyBDcmVhdGUgYSBET01TaWduQ29udGV4dCBhbmQgc2V0IHRoZSBzaWduaW5nIEtleSB0byB0aGUgRFNBIAorICAgICAgICAvLyBQcml2YXRlS2V5IGFuZCBzcGVjaWZ5IHdoZXJlIHRoZSBYTUxTaWduYXR1cmUgc2hvdWxkIGJlIGluc2VydGVkIAorCS8vIGluIHRoZSB0YXJnZXQgZG9jdW1lbnQgKGluIHRoaXMgY2FzZSwgdGhlIGRvY3VtZW50IHJvb3QpCisJRE9NU2lnbkNvbnRleHQgc2lnbkNvbnRleHQgPSBuZXcgRE9NU2lnbkNvbnRleHQoa3AuZ2V0UHJpdmF0ZSgpLCBkb2MpOworCisJLy8gTWFyc2hhbCwgZ2VuZXJhdGUgKGFuZCBzaWduKSB0aGUgZGV0YWNoZWQgWE1MU2lnbmF0dXJlLiBUaGUgRE9NIAorCS8vIERvY3VtZW50IHdpbGwgY29udGFpbiB0aGUgWE1MIFNpZ25hdHVyZSBpZiB0aGlzIG1ldGhvZCByZXR1cm5zIAorIAkvLyBzdWNjZXNzZnVsbHkuCisJc2lnbmF0dXJlLnNpZ24oc2lnbkNvbnRleHQpOworCisJLy8gb3V0cHV0IHRoZSByZXN1bHRpbmcgZG9jdW1lbnQKKwlPdXRwdXRTdHJlYW0gb3M7CisJaWYgKGFyZ3MubGVuZ3RoID4gMCkgeworCSAgIG9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oYXJnc1swXSk7CisJfSBlbHNlIHsgCisJICAgb3MgPSBTeXN0ZW0ub3V0OworCX0KKworCVRyYW5zZm9ybWVyRmFjdG9yeSB0ZiA9IFRyYW5zZm9ybWVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCVRyYW5zZm9ybWVyIHRyYW5zID0gdGYubmV3VHJhbnNmb3JtZXIoKTsKKwl0cmFucy50cmFuc2Zvcm0obmV3IERPTVNvdXJjZShkb2MpLCBuZXcgU3RyZWFtUmVzdWx0KG9zKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3NhbXBsZXMvamF2YXgveG1sL2NyeXB0by9kc2lnL3NhbXBsZXMvR2VuRW52ZWxvcGVkLmphdmEgYi9zcmNfc2FtcGxlcy9qYXZheC94bWwvY3J5cHRvL2RzaWcvc2FtcGxlcy9HZW5FbnZlbG9wZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2Q2NjgxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3NhbXBsZXMvamF2YXgveG1sL2NyeXB0by9kc2lnL3NhbXBsZXMvR2VuRW52ZWxvcGVkLmphdmEKQEAgLTAsMCArMSwxNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5zYW1wbGVzOworCitpbXBvcnQgamF2YXgueG1sLmNyeXB0by4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZG9tLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLmRvbS5ET01TaWduQ29udGV4dDsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcua2V5aW5mby4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5zcGVjLio7CitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuc2VjdXJpdHkuKjsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3Rvcnk7CitpbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS4qOworaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uZG9tLkRPTVNvdXJjZTsKK2ltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLnN0cmVhbS5TdHJlYW1SZXN1bHQ7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CisKKy8qKgorICogVGhpcyBpcyBhIHNpbXBsZSBleGFtcGxlIG9mIGdlbmVyYXRpbmcgYW4gRW52ZWxvcGVkIFhNTCAKKyAqIFNpZ25hdHVyZSB1c2luZyB0aGUgSlNSIDEwNSBBUEkuIFRoZSByZXN1bHRpbmcgc2lnbmF0dXJlIHdpbGwgbG9vayAKKyAqIGxpa2UgKGtleSBhbmQgc2lnbmF0dXJlIHZhbHVlcyB3aWxsIGJlIGRpZmZlcmVudCk6CisgKgorICogPHByZT48Y29kZT4KKyAqPEVudmVsb3BlIHhtbG5zPSJ1cm46ZW52ZWxvcGUiPgorICogPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CisgKiAgIDxTaWduZWRJbmZvPgorICogICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4KKy0yMDAxMDMxNSIvPgorICogICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZHNhLXNoYTEiLz4KKyAqICAgICA8UmVmZXJlbmNlIFVSST0iIj4KKyAqICAgICAgIDxUcmFuc2Zvcm1zPgorICogICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz4KKyAqICAgICAgIDwvVHJhbnNmb3Jtcz4KKyAqICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPgorICogICAgICAgPERpZ2VzdFZhbHVlPks4TS9sUGJLbnVNRHNPMFV6dWo3NWxRdHpRST08RGlnZXN0VmFsdWU+CisgKiAgICAgPC9SZWZlcmVuY2U+CisgKiAgIDwvU2lnbmVkSW5mbz4KKyAqICAgPFNpZ25hdHVyZVZhbHVlPgorICogICAgIERwRXlsaFFvaVVLQm9LV21ZZmFqWE83TFp4aURZZ1Z0VXRDTnlUZ3daZ29DaHpvckEybmhrUT09CisgKiAgIDwvU2lnbmF0dXJlVmFsdWU+CisgKiAgIDxLZXlJbmZvPgorICogICAgIDxLZXlWYWx1ZT4KKyAqICAgICAgIDxEU0FLZXlWYWx1ZT4KKyAqICAgICAgICAgPFA+CisgKiAgICAgICAgICAgckZ0bzh1UFFNNnkzNEZMUG1EaDQwQkxKMXJWckM4VmVScXV1aFBaNmpZTkZrUXV3eG51L3dDdklBTWh1a1BCTAorICogICAgICAgICAgIEZFVDhiSmYvYjJlZitvcXhaYWpFYis4OHpsWm95RzhnL3dNZkRCSFR4eitDbm93TGFobkNDVFlCcDVrdDdHOHEKKyAqICAgICAgICAgICBVb2JKdXZqeWx3ajFzdDdWOUxzdTAzaVhNWHRiaXJpVWpGYTVnVVJhc044PQorICogICAgICAgICA8L1A+CisgKiAgICAgICAgIDxRPgorICogICAgICAgICAgIGtFakFGcENlNGxjVU9kd3BocHpmK3RCYVVkcz0KKyAqICAgICAgICAgPC9RPgorICogICAgICAgICA8Rz4KKyAqICAgICAgICAgICBvZTE0UjJPdHlLeCtzKzYwTzVCUk5NT1lwSWcyVFUvZjE1TjNic0RFcktPV3RLWGVOSzlGUzdkV1N0cmVEeG8yCisgKiAgICAgICAgICAgU1NnT29ucUFkNEZ1Si80dXZhN0dnTkw0VUxJcVk3RSttVzVpd0o3bi9XVEVMaDk4bUVvY3NMWGtOaDI0SGNINAorICogICAgICAgICAgIEJaZlNDVHJ1dXptQ3lqZFYxS1NxWC9FdXgwNEhmQ1dZbWR4TjNTUS9xcXc9CisgKiAgICAgICAgIDwvRz4KKyAqICAgICAgICAgPFk+CisgKiAgICAgICAgICAgcEE1Tm5admNkNTc0V1JYdU9BN1pmQy83THF0NGNCME1STFd0SHVidEpvVk9hbzlpYjVyeTRyVGswcjZkZG5PdgorICogICAgICAgICAgIEFJR0trdHV0ekszeW12S2xlUzNET3J3WlFnSisvQkRXRFc4a085UjY2bzZyZGppU29iQmkvMGMyVjErZGtxT2cKKyAqICAgICAgICAgICBqRm1LejM5NW12Q09aR2hDN2ZxQVZoSGF0MkVqR1BNZmdTWnlBQmE3KzFrPQorICogICAgICAgICA8L1k+CisgKiAgICAgICA8L0RTQUtleVZhbHVlPgorICogICAgIDwvS2V5VmFsdWU+CisgKiAgIDwvS2V5SW5mbz4KKyAqIDwvU2lnbmF0dXJlPgorICo8L0VudmVsb3BlPgorICogPC9jb2RlPjwvcHJlPgorICovCitwdWJsaWMgY2xhc3MgR2VuRW52ZWxvcGVkIHsKKworICAgIC8vCisgICAgLy8gU3lub3BzaXM6IGphdmEgR2VuRW52ZWxvcGVkIFtkb2N1bWVudF0gW291dHB1dF0KKyAgICAvLworICAgIC8vICAgIHdoZXJlICJkb2N1bWVudCIgaXMgdGhlIG5hbWUgb2YgYSBmaWxlIGNvbnRhaW5pbmcgdGhlIFhNTCBkb2N1bWVudAorICAgIC8vICAgIHRvIGJlIHNpZ25lZCwgYW5kICJvdXRwdXQiIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIHN0b3JlIHRoZQorICAgIC8vICAgIHNpZ25lZCBkb2N1bWVudC4gVGhlIDJuZCBhcmd1bWVudCBpcyBvcHRpb25hbCAtIGlmIG5vdCBzcGVjaWZpZWQsCisgICAgLy8gICAgc3RhbmRhcmQgb3V0cHV0IHdpbGwgYmUgdXNlZC4KKyAgICAvLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICAgIC8vIENyZWF0ZSBhIERPTSBYTUxTaWduYXR1cmVGYWN0b3J5IHRoYXQgd2lsbCBiZSB1c2VkIHRvIGdlbmVyYXRlIHRoZSAKKwkvLyBlbnZlbG9wZWQgc2lnbmF0dXJlCisgICAgICAgIFN0cmluZyBwcm92aWRlck5hbWUgPSBTeXN0ZW0uZ2V0UHJvcGVydHkKKyAgICAgICAgICAgICgianNyMTA1UHJvdmlkZXIiLCAib3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJIik7CisJWE1MU2lnbmF0dXJlRmFjdG9yeSBmYWMgPSBYTUxTaWduYXR1cmVGYWN0b3J5LmdldEluc3RhbmNlKCJET00iLAorCSAgICAgKFByb3ZpZGVyKSBDbGFzcy5mb3JOYW1lKHByb3ZpZGVyTmFtZSkubmV3SW5zdGFuY2UoKSk7CisKKyAgICAgICAgLy8gQ3JlYXRlIGEgUmVmZXJlbmNlIHRvIHRoZSBlbnZlbG9wZWQgZG9jdW1lbnQgKGluIHRoaXMgY2FzZSB3ZSBhcmUKKwkvLyBzaWduaW5nIHRoZSB3aG9sZSBkb2N1bWVudCwgc28gYSBVUkkgb2YgIiIgc2lnbmlmaWVzIHRoYXQpIGFuZAorCS8vIGFsc28gc3BlY2lmeSB0aGUgU0hBMSBkaWdlc3QgYWxnb3JpdGhtIGFuZCB0aGUgRU5WRUxPUEVEIFRyYW5zZm9ybS4KKwlSZWZlcmVuY2UgcmVmID0gZmFjLm5ld1JlZmVyZW5jZQorCSAgICAoIiIsIGZhYy5uZXdEaWdlc3RNZXRob2QoRGlnZXN0TWV0aG9kLlNIQTEsIG51bGwpLAorICAgICAgICAgICAgIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QKKwkgICAgICAoZmFjLm5ld1RyYW5zZm9ybQorCQkoVHJhbnNmb3JtLkVOVkVMT1BFRCwgKFRyYW5zZm9ybVBhcmFtZXRlclNwZWMpIG51bGwpKSwgCisJICAgICBudWxsLCBudWxsKTsKKworCS8vIENyZWF0ZSB0aGUgU2lnbmVkSW5mbworCVNpZ25lZEluZm8gc2kgPSBmYWMubmV3U2lnbmVkSW5mbworCSAgICAoZmFjLm5ld0Nhbm9uaWNhbGl6YXRpb25NZXRob2QKKwkgICAgIChDYW5vbmljYWxpemF0aW9uTWV0aG9kLklOQ0xVU0lWRV9XSVRIX0NPTU1FTlRTLCAKKwkgICAgICAoQzE0Tk1ldGhvZFBhcmFtZXRlclNwZWMpIG51bGwpLCAKKwkgICAgIGZhYy5uZXdTaWduYXR1cmVNZXRob2QoU2lnbmF0dXJlTWV0aG9kLkRTQV9TSEExLCBudWxsKSwKKwkgICAgIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QocmVmKSk7CisKKyAgICAgICAgLy8gQ3JlYXRlIGEgRFNBIEtleVBhaXIKKyAgICAgICAgS2V5UGFpckdlbmVyYXRvciBrcGcgPSBLZXlQYWlyR2VuZXJhdG9yLmdldEluc3RhbmNlKCJEU0EiKTsKKwlrcGcuaW5pdGlhbGl6ZSg1MTIpOworICAgICAgICBLZXlQYWlyIGtwID0ga3BnLmdlbmVyYXRlS2V5UGFpcigpOworCisgICAgICAgIC8vIENyZWF0ZSBhIEtleVZhbHVlIGNvbnRhaW5pbmcgdGhlIERTQSBQdWJsaWNLZXkgdGhhdCB3YXMgZ2VuZXJhdGVkCisJS2V5SW5mb0ZhY3Rvcnkga2lmID0gZmFjLmdldEtleUluZm9GYWN0b3J5KCk7CisgICAgICAgIEtleVZhbHVlIGt2ID0ga2lmLm5ld0tleVZhbHVlKGtwLmdldFB1YmxpYygpKTsKKworCS8vIENyZWF0ZSBhIEtleUluZm8gYW5kIGFkZCB0aGUgS2V5VmFsdWUgdG8gaXQKKyAgICAgICAgS2V5SW5mbyBraSA9IGtpZi5uZXdLZXlJbmZvKENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3Qoa3YpKTsKKworCS8vIEluc3RhbnRpYXRlIHRoZSBkb2N1bWVudCB0byBiZSBzaWduZWQKKwlEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKwlkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisJRG9jdW1lbnQgZG9jID0gCisJICAgIGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKS5wYXJzZShuZXcgRmlsZUlucHV0U3RyZWFtKGFyZ3NbMF0pKTsKKworICAgICAgICAvLyBDcmVhdGUgYSBET01TaWduQ29udGV4dCBhbmQgc3BlY2lmeSB0aGUgRFNBIFByaXZhdGVLZXkgYW5kCisgICAgICAgIC8vIGxvY2F0aW9uIG9mIHRoZSByZXN1bHRpbmcgWE1MU2lnbmF0dXJlJ3MgcGFyZW50IGVsZW1lbnQKKwlET01TaWduQ29udGV4dCBkc2MgPSBuZXcgRE9NU2lnbkNvbnRleHQKKwkgICAgKGtwLmdldFByaXZhdGUoKSwgZG9jLmdldERvY3VtZW50RWxlbWVudCgpKTsKKworCS8vIENyZWF0ZSB0aGUgWE1MU2lnbmF0dXJlIChidXQgZG9uJ3Qgc2lnbiBpdCB5ZXQpCisJWE1MU2lnbmF0dXJlIHNpZ25hdHVyZSA9IGZhYy5uZXdYTUxTaWduYXR1cmUoc2ksIGtpKTsKKworICAgICAgICAvLyBNYXJzaGFsLCBnZW5lcmF0ZSAoYW5kIHNpZ24pIHRoZSBlbnZlbG9wZWQgc2lnbmF0dXJlCisgICAgICAgIHNpZ25hdHVyZS5zaWduKGRzYyk7CisKKwkvLyBvdXRwdXQgdGhlIHJlc3VsdGluZyBkb2N1bWVudAorCU91dHB1dFN0cmVhbSBvczsKKwlpZiAoYXJncy5sZW5ndGggPiAxKSB7CisgICAgICAgICAgIG9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oYXJnc1sxXSk7CisJfSBlbHNlIHsKKyAgICAgICAgICAgb3MgPSBTeXN0ZW0ub3V0OworCX0KKworCVRyYW5zZm9ybWVyRmFjdG9yeSB0ZiA9IFRyYW5zZm9ybWVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCVRyYW5zZm9ybWVyIHRyYW5zID0gdGYubmV3VHJhbnNmb3JtZXIoKTsKKwl0cmFucy50cmFuc2Zvcm0obmV3IERPTVNvdXJjZShkb2MpLCBuZXcgU3RyZWFtUmVzdWx0KG9zKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3NhbXBsZXMvamF2YXgveG1sL2NyeXB0by9kc2lnL3NhbXBsZXMvR2VuRW52ZWxvcGluZy5qYXZhIGIvc3JjX3NhbXBsZXMvamF2YXgveG1sL2NyeXB0by9kc2lnL3NhbXBsZXMvR2VuRW52ZWxvcGluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MTlmNTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfc2FtcGxlcy9qYXZheC94bWwvY3J5cHRvL2RzaWcvc2FtcGxlcy9HZW5FbnZlbG9waW5nLmphdmEKQEAgLTAsMCArMSwxNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5zYW1wbGVzOworCitpbXBvcnQgamF2YXgueG1sLmNyeXB0by4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZG9tLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLmRvbS5ET01TaWduQ29udGV4dDsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcua2V5aW5mby4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5zcGVjLkMxNE5NZXRob2RQYXJhbWV0ZXJTcGVjOworCitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuc2VjdXJpdHkuKjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uKjsKK2ltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLmRvbS5ET01Tb3VyY2U7CitpbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5zdHJlYW0uU3RyZWFtUmVzdWx0OworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CisKKy8qKgorICogVGhpcyBpcyBhIHNpbXBsZSBleGFtcGxlIG9mIGdlbmVyYXRpbmcgYW4gRW52ZWxvcGluZyBYTUwgCisgKiBTaWduYXR1cmUgdXNpbmcgdGhlIEpTUiAxMDUgQVBJLiBUaGUgc2lnbmF0dXJlIGluIHRoaXMgY2FzZSByZWZlcmVuY2VzIGEgCisgKiBsb2NhbCBVUkkgdGhhdCBwb2ludHMgdG8gYW4gT2JqZWN0IGVsZW1lbnQuIAorICogVGhlIHJlc3VsdGluZyBzaWduYXR1cmUgd2lsbCBsb29rIGxpa2UgKGNlcnRpZmljYXRlIGFuZCAKKyAqIHNpZ25hdHVyZSB2YWx1ZXMgd2lsbCBiZSBkaWZmZXJlbnQpOgorICoKKyAqIDxwcmU+PGNvZGU+CisgKiA8U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KKyAqICAgPFNpZ25lZEluZm8+CisgKiAgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHMiLz4KKyAqICAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIi8+CisgKiAgICAgPFJlZmVyZW5jZSBVUkk9IiNvYmplY3QiPgorICogICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+CisgKiAgICAgICA8RGlnZXN0VmFsdWU+Ny9YVHNIYUJTT25KL2pYRDV2MHpMNlZLWXNrPTwvRGlnZXN0VmFsdWU+CisgKiAgICAgPC9SZWZlcmVuY2U+CisgKiAgIDwvU2lnbmVkSW5mbz4KKyAqICAgPFNpZ25hdHVyZVZhbHVlPgorICogICAgIFJwTVJidE1ITGEwc2lTUytCd1VwTElFbVRmaC8wZnNsZDJKWVFXWnpDemZhNWtCVHoyNStYQT09CisgKiAgIDwvU2lnbmF0dXJlVmFsdWU+CisgKiAgIDxLZXlJbmZvPgorICogICAgIDxLZXlWYWx1ZT4KKyAqICAgICAgIDxEU0FLZXlWYWx1ZT4KKyAqICAgICAgICAgPFA+CisgKiAgICAgICAgICAgL0thQ3pvNFN5cm9tNzh6M0VRNVNiYkI0c0Y3ZXk4MGV0S0lJODY0V0Y2NEI4MXVScEg1dDlqUVR4ZUV1MEltYnoKKyAqICAgICAgICAgICBSTXF6VkRaa1ZHOXhEN25OMWt1Rnc9PQorICogICAgICAgICA8L1A+CisgKiAgICAgICAgIDxRPgorICogICAgICAgICAgIGxpN2R6RGFjdW82N0pnN210cUVtMlRSdU9NVT0KKyAqICAgICAgICAgPC9RPgorICogICAgICAgICA8Rz4KKyAqICAgICAgICAgICBaNFJ4c25xYzlFN3BHa25GRkgyeHFhcnlSUEJhUTAxa2hwTWRMUlFuRzU0MUF3dHgvWFBhRjVCcHN5NHBOV01PSAorICogICAgICAgICAgIENCaU5VME5vZ3BzUVc1UXZubE1wQT09CisgKiAgICAgICAgIDwvRz4KKyAqICAgICAgICAgPFk+CisgKiAgICAgICAgICAgd2JFVWFDZ0haWHFLNHFMdmJkWXJBYzYrRG8wWFZjc3ppQ0pxeHpuNGNKSlJ4d2MzRTF4bkVYSHNjVmdyMUNxbDkKKyAqICAgICAgICAgICBpNWZhbk9LUWJGWHptYitiQ2hxaWc9PQorICogICAgICAgICA8L1k+CisgKiAgICAgICA8L0RTQUtleVZhbHVlPgorICogICAgIDwvS2V5VmFsdWU+CisgKiAgIDwvS2V5SW5mbz4KKyAqICAgPE9iamVjdCBJZD0ib2JqZWN0Ij5zb21lIHRleHQ8L09iamVjdD4KKyAqIDwvU2lnbmF0dXJlPgorICoKKyAqIDwvY29kZT48L3ByZT4KKyAqLworcHVibGljIGNsYXNzIEdlbkVudmVsb3BpbmcgeworCisgICAgLy8KKyAgICAvLyBTeW5vcGlzOiBqYXZhIEdlbkVudmVsb3BpbmcgW291dHB1dF0KKyAgICAvLworICAgIC8vICAgd2hlcmUgIm91dHB1dCIgaXMgdGhlIG5hbWUgb2YgYSBmaWxlIHRoYXQgd2lsbCBjb250YWluIHRoZQorICAgIC8vICAgZ2VuZXJhdGVkIHNpZ25hdHVyZS4gSWYgbm90IHNwZWNpZmllZCwgc3RhbmRhcmQgb3VwdXQgd2lsbCBiZSB1c2VkLgorICAgIC8vCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgICAgLy8gRmlyc3QsIGNyZWF0ZSB0aGUgRE9NIFhNTFNpZ25hdHVyZUZhY3RvcnkgdGhhdCB3aWxsIGJlIHVzZWQgdG8gCisJLy8gZ2VuZXJhdGUgdGhlIFhNTFNpZ25hdHVyZQorCVN0cmluZyBwcm92aWRlck5hbWUgPSBTeXN0ZW0uZ2V0UHJvcGVydHkKKyAgICAgICAgICAgICgianNyMTA1UHJvdmlkZXIiLCAib3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJIik7CisJWE1MU2lnbmF0dXJlRmFjdG9yeSBmYWMgPSBYTUxTaWduYXR1cmVGYWN0b3J5LmdldEluc3RhbmNlKCJET00iLAorICAgICAgICAgICAgKFByb3ZpZGVyKSBDbGFzcy5mb3JOYW1lKHByb3ZpZGVyTmFtZSkubmV3SW5zdGFuY2UoKSk7CisKKyAgICAgICAgLy8gTmV4dCwgY3JlYXRlIGEgUmVmZXJlbmNlIHRvIGEgc2FtZS1kb2N1bWVudCBVUkkgdGhhdCBpcyBhbiBPYmplY3QKKyAgICAgICAgLy8gZWxlbWVudCBhbmQgc3BlY2lmeSB0aGUgU0hBMSBkaWdlc3QgYWxnb3JpdGhtCisgICAgICAgIFJlZmVyZW5jZSByZWYgPSBmYWMubmV3UmVmZXJlbmNlKCIjb2JqZWN0IiwKKwkgICAgZmFjLm5ld0RpZ2VzdE1ldGhvZChEaWdlc3RNZXRob2QuU0hBMSwgbnVsbCkpOworCisJLy8gTmV4dCwgY3JlYXRlIHRoZSByZWZlcmVuY2VkIE9iamVjdAorCURvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCWRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKwlEb2N1bWVudCBkb2MgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCkubmV3RG9jdW1lbnQoKTsKKwlOb2RlIHRleHQgPSBkb2MuY3JlYXRlVGV4dE5vZGUoInNvbWUgdGV4dCIpOworCVhNTFN0cnVjdHVyZSBjb250ZW50ID0gbmV3IERPTVN0cnVjdHVyZSh0ZXh0KTsKKwlYTUxPYmplY3Qgb2JqID0gZmFjLm5ld1hNTE9iamVjdAorCSAgICAoQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChjb250ZW50KSwgIm9iamVjdCIsIG51bGwsIG51bGwpOworCisJLy8gQ3JlYXRlIHRoZSBTaWduZWRJbmZvCisJU2lnbmVkSW5mbyBzaSA9IGZhYy5uZXdTaWduZWRJbmZvKAorCSAgICBmYWMubmV3Q2Fub25pY2FsaXphdGlvbk1ldGhvZAorCQkoQ2Fub25pY2FsaXphdGlvbk1ldGhvZC5JTkNMVVNJVkVfV0lUSF9DT01NRU5UUywgCisJCSAoQzE0Tk1ldGhvZFBhcmFtZXRlclNwZWMpIG51bGwpLCAKKwkgICAgZmFjLm5ld1NpZ25hdHVyZU1ldGhvZChTaWduYXR1cmVNZXRob2QuRFNBX1NIQTEsIG51bGwpLAorCSAgICBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KHJlZikpOworCisJLy8gQ3JlYXRlIGEgRFNBIEtleVBhaXIKKwlLZXlQYWlyR2VuZXJhdG9yIGtwZyA9IEtleVBhaXJHZW5lcmF0b3IuZ2V0SW5zdGFuY2UoIkRTQSIpOworCWtwZy5pbml0aWFsaXplKDUxMik7CisJS2V5UGFpciBrcCA9IGtwZy5nZW5lcmF0ZUtleVBhaXIoKTsKKworCS8vIENyZWF0ZSBhIEtleVZhbHVlIGNvbnRhaW5pbmcgdGhlIERTQSBQdWJsaWNLZXkgdGhhdCB3YXMgZ2VuZXJhdGVkCisJS2V5SW5mb0ZhY3Rvcnkga2lmID0gZmFjLmdldEtleUluZm9GYWN0b3J5KCk7CisJS2V5VmFsdWUga3YgPSBraWYubmV3S2V5VmFsdWUoa3AuZ2V0UHVibGljKCkpOworCisJLy8gQ3JlYXRlIGEgS2V5SW5mbyBhbmQgYWRkIHRoZSBLZXlWYWx1ZSB0byBpdAorCUtleUluZm8ga2kgPSBraWYubmV3S2V5SW5mbyhDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KGt2KSk7CisKKwkvLyBDcmVhdGUgdGhlIFhNTFNpZ25hdHVyZSAoYnV0IGRvbid0IHNpZ24gaXQgeWV0KQorCVhNTFNpZ25hdHVyZSBzaWduYXR1cmUgPSBmYWMubmV3WE1MU2lnbmF0dXJlKHNpLCBraSwKKwkgICAgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChvYmopLCBudWxsLCBudWxsKTsgCisKKyAgICAgICAgLy8gQ3JlYXRlIGEgRE9NU2lnbkNvbnRleHQgYW5kIHNwZWNpZnkgdGhlIERTQSBQcml2YXRlS2V5IGZvciBzaWduaW5nCisJLy8gYW5kIHRoZSBkb2N1bWVudCBsb2NhdGlvbiBvZiB0aGUgWE1MU2lnbmF0dXJlCisgICAgICAgIERPTVNpZ25Db250ZXh0IGRzYyA9IG5ldyBET01TaWduQ29udGV4dChrcC5nZXRQcml2YXRlKCksIGRvYyk7CisKKyAgICAgICAgLy8gTGFzdGx5LCBnZW5lcmF0ZSB0aGUgZW52ZWxvcGluZyBzaWduYXR1cmUgdXNpbmcgdGhlIFByaXZhdGVLZXkKKwlzaWduYXR1cmUuc2lnbihkc2MpOworCisgICAgICAgIC8vIG91dHB1dCB0aGUgcmVzdWx0aW5nIGRvY3VtZW50CisJT3V0cHV0U3RyZWFtIG9zOworCWlmIChhcmdzLmxlbmd0aCA+IDApIHsKKwkgICBvcyA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKGFyZ3NbMF0pOworCX0gZWxzZSB7CisgICAgICAgICAgIG9zID0gU3lzdGVtLm91dDsKKwl9CisKKyAgICAgICAgVHJhbnNmb3JtZXJGYWN0b3J5IHRmID0gVHJhbnNmb3JtZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisJVHJhbnNmb3JtZXIgdHJhbnMgPSB0Zi5uZXdUcmFuc2Zvcm1lcigpOworCXRyYW5zLnRyYW5zZm9ybShuZXcgRE9NU291cmNlKGRvYyksIG5ldyBTdHJlYW1SZXN1bHQob3MpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfc2FtcGxlcy9qYXZheC94bWwvY3J5cHRvL2RzaWcvc2FtcGxlcy9WYWxpZGF0ZS5qYXZhIGIvc3JjX3NhbXBsZXMvamF2YXgveG1sL2NyeXB0by9kc2lnL3NhbXBsZXMvVmFsaWRhdGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmM4NmY3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjX3NhbXBsZXMvamF2YXgveG1sL2NyeXB0by9kc2lnL3NhbXBsZXMvVmFsaWRhdGUuamF2YQpAQCAtMCwwICsxLDE1NiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA2IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRvbS4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5kb20uRE9NVmFsaWRhdGVDb250ZXh0OworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvLio7CitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5zZWN1cml0eS4qOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeTsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKKworLyoqCisgKiBUaGlzIGlzIGEgc2ltcGxlIGV4YW1wbGUgb2YgdmFsaWRhdGluZyBhbiBYTUwgCisgKiBTaWduYXR1cmUgdXNpbmcgdGhlIEpTUiAxMDUgQVBJLiBJdCBhc3N1bWVzIHRoZSBrZXkgbmVlZGVkIHRvCisgKiB2YWxpZGF0ZSB0aGUgc2lnbmF0dXJlIGlzIGNvbnRhaW5lZCBpbiBhIEtleVZhbHVlIEtleUluZm8uIAorICovCitwdWJsaWMgY2xhc3MgVmFsaWRhdGUgeworCisgICAgLy8KKyAgICAvLyBTeW5vcHNpczogamF2YSBWYWxpZGF0ZSBbZG9jdW1lbnRdCisgICAgLy8KKyAgICAvLwkgIHdoZXJlICJkb2N1bWVudCIgaXMgdGhlIG5hbWUgb2YgYSBmaWxlIGNvbnRhaW5pbmcgdGhlIFhNTCBkb2N1bWVudAorICAgIC8vCSAgdG8gYmUgdmFsaWRhdGVkLgorICAgIC8vCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKwkvLyBJbnN0YW50aWF0ZSB0aGUgZG9jdW1lbnQgdG8gYmUgdmFsaWRhdGVkCisJRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisJZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworCURvY3VtZW50IGRvYyA9CisgICAgICAgICAgICBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCkucGFyc2UobmV3IEZpbGVJbnB1dFN0cmVhbShhcmdzWzBdKSk7CisKKwkvLyBGaW5kIFNpZ25hdHVyZSBlbGVtZW50CisJTm9kZUxpc3QgbmwgPSAKKwkgICAgZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoWE1MU2lnbmF0dXJlLlhNTE5TLCAiU2lnbmF0dXJlIik7CisJaWYgKG5sLmdldExlbmd0aCgpID09IDApIHsKKwkgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiQ2Fubm90IGZpbmQgU2lnbmF0dXJlIGVsZW1lbnQiKTsKKwl9CisKKwkvLyBDcmVhdGUgYSBET00gWE1MU2lnbmF0dXJlRmFjdG9yeSB0aGF0IHdpbGwgYmUgdXNlZCB0byB1bm1hcnNoYWwgdGhlIAorCS8vIGRvY3VtZW50IGNvbnRhaW5pbmcgdGhlIFhNTFNpZ25hdHVyZSAKKwlTdHJpbmcgcHJvdmlkZXJOYW1lID0gU3lzdGVtLmdldFByb3BlcnR5CisgICAgICAgICAgICAoImpzcjEwNVByb3ZpZGVyIiwgIm9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tLlhNTERTaWdSSSIpOworCVhNTFNpZ25hdHVyZUZhY3RvcnkgZmFjID0gWE1MU2lnbmF0dXJlRmFjdG9yeS5nZXRJbnN0YW5jZSgiRE9NIiwKKyAgICAgICAgICAgIChQcm92aWRlcikgQ2xhc3MuZm9yTmFtZShwcm92aWRlck5hbWUpLm5ld0luc3RhbmNlKCkpOworCisJLy8gQ3JlYXRlIGEgRE9NVmFsaWRhdGVDb250ZXh0IGFuZCBzcGVjaWZ5IGEgS2V5VmFsdWUgS2V5U2VsZWN0b3IKKyAgICAgICAgLy8gYW5kIGRvY3VtZW50IGNvbnRleHQKKwlET01WYWxpZGF0ZUNvbnRleHQgdmFsQ29udGV4dCA9IG5ldyBET01WYWxpZGF0ZUNvbnRleHQKKwkgICAgKG5ldyBLZXlWYWx1ZUtleVNlbGVjdG9yKCksIG5sLml0ZW0oMCkpOworCQorCS8vIHVubWFyc2hhbCB0aGUgWE1MU2lnbmF0dXJlCisJWE1MU2lnbmF0dXJlIHNpZ25hdHVyZSA9IGZhYy51bm1hcnNoYWxYTUxTaWduYXR1cmUodmFsQ29udGV4dCk7CisKKwkvLyBWYWxpZGF0ZSB0aGUgWE1MU2lnbmF0dXJlIChnZW5lcmF0ZWQgYWJvdmUpCisJYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSBzaWduYXR1cmUudmFsaWRhdGUodmFsQ29udGV4dCk7IAorCisJLy8gQ2hlY2sgY29yZSB2YWxpZGF0aW9uIHN0YXR1cworCWlmIChjb3JlVmFsaWRpdHkgPT0gZmFsc2UpIHsKKyAgICAJICAgIFN5c3RlbS5lcnIucHJpbnRsbigiU2lnbmF0dXJlIGZhaWxlZCBjb3JlIHZhbGlkYXRpb24iKTsgCisJICAgIGJvb2xlYW4gc3YgPSBzaWduYXR1cmUuZ2V0U2lnbmF0dXJlVmFsdWUoKS52YWxpZGF0ZSh2YWxDb250ZXh0KTsKKwkgICAgU3lzdGVtLm91dC5wcmludGxuKCJzaWduYXR1cmUgdmFsaWRhdGlvbiBzdGF0dXM6ICIgKyBzdik7CisJICAgIC8vIGNoZWNrIHRoZSB2YWxpZGF0aW9uIHN0YXR1cyBvZiBlYWNoIFJlZmVyZW5jZQorCSAgICBJdGVyYXRvciBpID0gc2lnbmF0dXJlLmdldFNpZ25lZEluZm8oKS5nZXRSZWZlcmVuY2VzKCkuaXRlcmF0b3IoKTsKKwkgICAgZm9yIChpbnQgaj0wOyBpLmhhc05leHQoKTsgaisrKSB7CisJCWJvb2xlYW4gcmVmVmFsaWQgPSAKKwkJICAgICgoUmVmZXJlbmNlKSBpLm5leHQoKSkudmFsaWRhdGUodmFsQ29udGV4dCk7CisJCVN5c3RlbS5vdXQucHJpbnRsbigicmVmWyIraisiXSB2YWxpZGl0eSBzdGF0dXM6ICIgKyByZWZWYWxpZCk7CisJICAgIH0KKwl9IGVsc2UgeworICAgIAkgICAgU3lzdGVtLm91dC5wcmludGxuKCJTaWduYXR1cmUgcGFzc2VkIGNvcmUgdmFsaWRhdGlvbiIpOworCX0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBLZXlTZWxlY3RvciB3aGljaCByZXRyaWV2ZXMgdGhlIHB1YmxpYyBrZXkgb3V0IG9mIHRoZQorICAgICAqIEtleVZhbHVlIGVsZW1lbnQgYW5kIHJldHVybnMgaXQuCisgICAgICogTk9URTogSWYgdGhlIGtleSBhbGdvcml0aG0gZG9lc24ndCBtYXRjaCBzaWduYXR1cmUgYWxnb3JpdGhtLAorICAgICAqIHRoZW4gdGhlIHB1YmxpYyBrZXkgd2lsbCBiZSBpZ25vcmVkLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIEtleVZhbHVlS2V5U2VsZWN0b3IgZXh0ZW5kcyBLZXlTZWxlY3RvciB7CisJcHVibGljIEtleVNlbGVjdG9yUmVzdWx0IHNlbGVjdChLZXlJbmZvIGtleUluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5U2VsZWN0b3IuUHVycG9zZSBwdXJwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsZ29yaXRobU1ldGhvZCBtZXRob2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MQ3J5cHRvQ29udGV4dCBjb250ZXh0KQorICAgICAgICAgICAgdGhyb3dzIEtleVNlbGVjdG9yRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIGlmIChrZXlJbmZvID09IG51bGwpIHsKKwkJdGhyb3cgbmV3IEtleVNlbGVjdG9yRXhjZXB0aW9uKCJOdWxsIEtleUluZm8gb2JqZWN0ISIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgU2lnbmF0dXJlTWV0aG9kIHNtID0gKFNpZ25hdHVyZU1ldGhvZCkgbWV0aG9kOworICAgICAgICAgICAgTGlzdCBsaXN0ID0ga2V5SW5mby5nZXRDb250ZW50KCk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7IGkrKykgeworCQlYTUxTdHJ1Y3R1cmUgeG1sU3RydWN0dXJlID0gKFhNTFN0cnVjdHVyZSkgbGlzdC5nZXQoaSk7CisgICAgICAgICAgICAJaWYgKHhtbFN0cnVjdHVyZSBpbnN0YW5jZW9mIEtleVZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgIFB1YmxpY0tleSBwayA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwayA9ICgoS2V5VmFsdWUpeG1sU3RydWN0dXJlKS5nZXRQdWJsaWNLZXkoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoS2V5RXhjZXB0aW9uIGtlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgS2V5U2VsZWN0b3JFeGNlcHRpb24oa2UpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSBhbGdvcml0aG0gaXMgY29tcGF0aWJsZSB3aXRoIG1ldGhvZAorICAgICAgICAgICAgICAgICAgICBpZiAoYWxnRXF1YWxzKHNtLmdldEFsZ29yaXRobSgpLCBway5nZXRBbGdvcml0aG0oKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2ltcGxlS2V5U2VsZWN0b3JSZXN1bHQocGspOworICAgICAgICAgICAgICAgICAgICB9CisJCX0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRocm93IG5ldyBLZXlTZWxlY3RvckV4Y2VwdGlvbigiTm8gS2V5VmFsdWUgZWxlbWVudCBmb3VuZCEiKTsKKwl9CisKKyAgICAgICAgLy9AQEBGSVhNRTogdGhpcyBzaG91bGQgYWxzbyB3b3JrIGZvciBrZXkgdHlwZXMgb3RoZXIgdGhhbiBEU0EvUlNBCisJc3RhdGljIGJvb2xlYW4gYWxnRXF1YWxzKFN0cmluZyBhbGdVUkksIFN0cmluZyBhbGdOYW1lKSB7CisgICAgICAgICAgICBpZiAoYWxnTmFtZS5lcXVhbHNJZ25vcmVDYXNlKCJEU0EiKSAmJgorCQlhbGdVUkkuZXF1YWxzSWdub3JlQ2FzZShTaWduYXR1cmVNZXRob2QuRFNBX1NIQTEpKSB7CisJCXJldHVybiB0cnVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChhbGdOYW1lLmVxdWFsc0lnbm9yZUNhc2UoIlJTQSIpICYmCisgICAgICAgICAgICAgICAgICAgICAgIGFsZ1VSSS5lcXVhbHNJZ25vcmVDYXNlKFNpZ25hdHVyZU1ldGhvZC5SU0FfU0hBMSkpIHsKKwkJcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGFsZ05hbWUuZXF1YWxzSWdub3JlQ2FzZSgiRUMiKSAmJgorICAgICAgICAgICAgICAgICAgICAgICBhbGdVUkkuZXF1YWxzSWdub3JlQ2FzZSgiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjZWNkc2Etc2hhMjU2IikpIHsKKwkJcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9IGVsc2UgeworCQlyZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisJfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFNpbXBsZUtleVNlbGVjdG9yUmVzdWx0IGltcGxlbWVudHMgS2V5U2VsZWN0b3JSZXN1bHQgeworCXByaXZhdGUgUHVibGljS2V5IHBrOworCVNpbXBsZUtleVNlbGVjdG9yUmVzdWx0KFB1YmxpY0tleSBwaykgeworCSAgICB0aGlzLnBrID0gcGs7CisJfQorCisJcHVibGljIEtleSBnZXRLZXkoKSB7IHJldHVybiBwazsgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY19zYW1wbGVzL2phdmF4L3htbC9jcnlwdG8vZHNpZy9zYW1wbGVzL2VudmVsb3BlLnhtbCBiL3NyY19zYW1wbGVzL2phdmF4L3htbC9jcnlwdG8vZHNpZy9zYW1wbGVzL2VudmVsb3BlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDJkNDNjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3NhbXBsZXMvamF2YXgveG1sL2NyeXB0by9kc2lnL3NhbXBsZXMvZW52ZWxvcGUueG1sCkBAIC0wLDAgKzEsMiBAQAorPEVudmVsb3BlIHhtbG5zPSJ1cm46ZW52ZWxvcGUiPgorPC9FbnZlbG9wZT4KZGlmZiAtLWdpdCBhL3NyY19zYW1wbGVzL2phdmF4L3htbC9jcnlwdG8vZHNpZy9zYW1wbGVzL2VudmVsb3BlZFNpZ25hdHVyZS54bWwgYi9zcmNfc2FtcGxlcy9qYXZheC94bWwvY3J5cHRvL2RzaWcvc2FtcGxlcy9lbnZlbG9wZWRTaWduYXR1cmUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllMjA0YTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfc2FtcGxlcy9qYXZheC94bWwvY3J5cHRvL2RzaWcvc2FtcGxlcy9lbnZlbG9wZWRTaWduYXR1cmUueG1sCkBAIC0wLDAgKzEsNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxFbnZlbG9wZSB4bWxucz0idXJuOmVudmVsb3BlIj4KKzxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1I1dpdGhDb21tZW50cyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIvPjxSZWZlcmVuY2UgVVJJPSIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48VHJhbnNmb3JtcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIvPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIi8+PERpZ2VzdFZhbHVlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj51b29xYldZYTVWQ3FjSkNidXltQktxbTE3dlk9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj5lTzdLMUJkQzBrek52cjFIcE1mNGhLb1dzdmwrb0kwNG5NdzU1R08rWjVoeUk2QnkzT2lob3c9PTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8geG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxLZXlWYWx1ZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PERTQUtleVZhbHVlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48UCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+L0thQ3pvNFN5cm9tNzh6M0VRNVNiYkI0c0Y3ZXk4MGV0S0lJODY0V0Y2NEI4MXVScEg1dDlqUVR4ZUV1MEltYnpSTXF6VkRaa1ZHOQoreEQ3bk4xa3VGdz09PC9QPjxRIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj5saTdkekRhY3VvNjdKZzdtdHFFbTJUUnVPTVU9PC9RPjxHIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj5aNFJ4c25xYzlFN3BHa25GRkgyeHFhcnlSUEJhUTAxa2hwTWRMUlFuRzU0MUF3dHgvWFBhRjVCcHN5NHBOV01PSENCaU5VME5vZ3BzCitRVzVRdm5sTXBBPT08L0c+PFkgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPk9xRmkwc0dwdnJvaTZVdDNtMTU0UU5XYzZnYXZIM2oyWm9SUERXN3FWQmJnazdYb21wdUt2WmUxb3d6MHl2eHErMUsrbVdiTDdTVCsKK3Q1bnI2VUZCQ2c9PTwvWT48L0RTQUtleVZhbHVlPjwvS2V5VmFsdWU+PC9LZXlJbmZvPjwvU2lnbmF0dXJlPjwvRW52ZWxvcGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9BeGlzU2lnbmVyLmphdmEgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL0F4aXNTaWduZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTRiMzE4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9BeGlzU2lnbmVyLmphdmEKQEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXM7CisKKworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uRmlsZU91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LktleVN0b3JlOworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHJpdmF0ZUtleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuSWRSZXNvbHZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5YTUxVdGlsczsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworCisKKy8qKgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGNsYXNzIEF4aXNTaWduZXIgeworCisgICAvKiogRmllbGQgQVhJU19TSUdOQVRVUkVfRklMRU5BTUUgICAgICAgICAgICovCisgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBWElTX1NJR05BVFVSRV9GSUxFTkFNRSA9ICJheGlzU2lnbmF0dXJlLnhtbCI7CisKKyAgIC8qKgorICAgICogTWV0aG9kIG1haW4KKyAgICAqCisgICAgKiBAcGFyYW0gdW51c2VkCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgdW51c2VkW10pIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTsKKworICAgICAgLy9KLQorICAgICAgU3RyaW5nIGtleXN0b3JlVHlwZSA9ICJKS1MiOworICAgICAgU3RyaW5nIGtleXN0b3JlRmlsZSA9ICJkYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvaW5wdXQva2V5c3RvcmUuamtzIjsKKyAgICAgIFN0cmluZyBrZXlzdG9yZVBhc3MgPSAieG1sc2VjdXJpdHkiOworICAgICAgU3RyaW5nIHByaXZhdGVLZXlBbGlhcyA9ICJ0ZXN0IjsKKyAgICAgIFN0cmluZyBwcml2YXRlS2V5UGFzcyA9ICJ4bWxzZWN1cml0eSI7CisgICAgICBTdHJpbmcgY2VydGlmaWNhdGVBbGlhcyA9ICJ0ZXN0IjsKKyAgICAgIEZpbGUgc2lnbmF0dXJlRmlsZSA9IG5ldyBGaWxlKEFYSVNfU0lHTkFUVVJFX0ZJTEVOQU1FKTsKKyAgICAgIC8vSisKKyAgICAgIEtleVN0b3JlIGtzID0gS2V5U3RvcmUuZ2V0SW5zdGFuY2Uoa2V5c3RvcmVUeXBlKTsKKyAgICAgIEZpbGVJbnB1dFN0cmVhbSBmaXMgPSBuZXcgRmlsZUlucHV0U3RyZWFtKGtleXN0b3JlRmlsZSk7CisKKyAgICAgIGtzLmxvYWQoZmlzLCBrZXlzdG9yZVBhc3MudG9DaGFyQXJyYXkoKSk7CisKKyAgICAgIFByaXZhdGVLZXkgcHJpdmF0ZUtleSA9IChQcml2YXRlS2V5KSBrcy5nZXRLZXkocHJpdmF0ZUtleUFsaWFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZUtleVBhc3MudG9DaGFyQXJyYXkoKSk7CisgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9CisgICAgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisKKyAgICAgIGRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKworICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyIGRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOworICAgICAgb3JnLnczYy5kb20uRG9jdW1lbnQgZG9jID0gZGIubmV3RG9jdW1lbnQoKTsKKworICAgICAgLyoKKyAgICAgICAqIFN0YXJ0IFNPQVAgaW5mcmFzdHJ1Y3R1cmUgY29kZS4gVGhpcyBpcyB0byBiZSBtYWRlIGNvbXBhdGlibGUgd2l0aCBBeGlzLgorICAgICAgICoKKyAgICAgICAqLworICAgICAgU3RyaW5nIHNvYXBOUyA9ICJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEyL3NvYXAtZW52ZWxvcGUiOworICAgICAgU3RyaW5nIFNPQVBTRUNOUyA9ICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL3NlY3VyaXR5LzIwMDAtMTIiOworCisgICAgICBFbGVtZW50IGVudmVsb3BlRWxlbWVudCA9IGRvYy5jcmVhdGVFbGVtZW50TlMoc29hcE5TLCAiZW52OkVudmVsb3BlIik7CisKKyAgICAgIGVudmVsb3BlRWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhDb25zdGFudHMuTmFtZXNwYWNlU3BlY05TLCAieG1sbnM6ZW52Iiwgc29hcE5TKTsKKyAgICAgIGRvYy5hcHBlbmRDaGlsZChlbnZlbG9wZUVsZW1lbnQpOworCisgICAgICBFbGVtZW50IGhlYWRlckVsZW0gPSBkb2MuY3JlYXRlRWxlbWVudE5TKHNvYXBOUywgImVudjpIZWFkZXIiKTsKKyAgICAgIEVsZW1lbnQgYm9keUVsZW0gPSBkb2MuY3JlYXRlRWxlbWVudE5TKHNvYXBOUywgImVudjpCb2R5Iik7CisKKyAgICAgIGVudmVsb3BlRWxlbWVudC5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuIikpOworICAgICAgZW52ZWxvcGVFbGVtZW50LmFwcGVuZENoaWxkKGhlYWRlckVsZW0pOworICAgICAgZW52ZWxvcGVFbGVtZW50LmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG4iKSk7CisgICAgICBlbnZlbG9wZUVsZW1lbnQuYXBwZW5kQ2hpbGQoYm9keUVsZW0pOworICAgICAgZW52ZWxvcGVFbGVtZW50LmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG4iKSk7CisgICAgICBib2R5RWxlbQorICAgICAgICAgLmFwcGVuZENoaWxkKGRvYworICAgICAgICAgICAgLmNyZWF0ZVRleHROb2RlKCJUaGlzIGlzIHNpZ25lZCB0b2dldGhlciB3aXRoIGl0J3MgQm9keSBhbmNlc3RvciIpKTsKKworCisgICAgICBib2R5RWxlbS5zZXRBdHRyaWJ1dGVOUyhTT0FQU0VDTlMsICJTT0FQLVNFQzppZCIsICJCb2R5Iik7CisgICAgICBJZFJlc29sdmVyLnJlZ2lzdGVyRWxlbWVudEJ5SWQoYm9keUVsZW0sICJpZCIpOworCisgICAgICBFbGVtZW50IHNvYXBTaWduYXR1cmVFbGVtID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhTT0FQU0VDTlMsICJTT0FQLVNFQzpTaWduYXR1cmUiKTsKKworICAgICAgZW52ZWxvcGVFbGVtZW50LnNldEF0dHJpYnV0ZU5TKENvbnN0YW50cy5OYW1lc3BhY2VTcGVjTlMsICJ4bWxuczpTT0FQLVNFQyIsIFNPQVBTRUNOUyk7CisgICAgICBlbnZlbG9wZUVsZW1lbnQuc2V0QXR0cmlidXRlTlMobnVsbCwgImFjdG9yIiwgInNvbWUtdXJpIik7CisgICAgICBlbnZlbG9wZUVsZW1lbnQuc2V0QXR0cmlidXRlTlMobnVsbCwgIm11c3RVbmRlcnN0YW5kIiwgIjEiKTsKKyAgICAgIGVudmVsb3BlRWxlbWVudC5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuIikpOworICAgICAgaGVhZGVyRWxlbS5hcHBlbmRDaGlsZChzb2FwU2lnbmF0dXJlRWxlbSk7CisKKyAgICAgIC8qCisgICAgICAgKgorICAgICAgICogRW5kIFNPQVAgaW5mcmFzdHJ1Y3R1cmUgY29kZS4gVGhpcyBpcyB0byBiZSBtYWRlIGNvbXBhdGlibGUgd2l0aCBBeGlzLgorICAgICAgICovCisgICAgICBTdHJpbmcgQmFzZVVSSSA9IHNpZ25hdHVyZUZpbGUudG9VUkwoKS50b1N0cmluZygpOworICAgICAgWE1MU2lnbmF0dXJlIHNpZyA9IG5ldyBYTUxTaWduYXR1cmUoZG9jLCBCYXNlVVJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MU2lnbmF0dXJlLkFMR09fSURfU0lHTkFUVVJFX0RTQSk7CisKKyAgICAgIHNvYXBTaWduYXR1cmVFbGVtLmFwcGVuZENoaWxkKHNpZy5nZXRFbGVtZW50KCkpOworCisgICAgICB7CisgICAgICAgICBzaWcuYWRkRG9jdW1lbnQoIiNCb2R5Iik7CisKKyAgICAgICAgIC8qCisgICAgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fRU5WRUxPUEVEX1NJR05BVFVSRSk7CisgICAgICAgICBzaWcuYWRkRG9jdW1lbnQoIiIsIHRyYW5zZm9ybXMpOworICAgICAgICAgKi8KKyAgICAgIH0KKworICAgICAgeworICAgICAgICAgWDUwOUNlcnRpZmljYXRlIGNlcnQgPQorICAgICAgICAgICAgKFg1MDlDZXJ0aWZpY2F0ZSkga3MuZ2V0Q2VydGlmaWNhdGUoY2VydGlmaWNhdGVBbGlhcyk7CisKKyAgICAgICAgIHNpZy5hZGRLZXlJbmZvKGNlcnQpOworICAgICAgICAgc2lnLmFkZEtleUluZm8oY2VydC5nZXRQdWJsaWNLZXkoKSk7CisgICAgICAgICBzaWcuc2lnbihwcml2YXRlS2V5KTsKKyAgICAgIH0KKworICAgICAgRmlsZU91dHB1dFN0cmVhbSBmID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oc2lnbmF0dXJlRmlsZSk7CisKKyAgICAgIFhNTFV0aWxzLm91dHB1dERPTWMxNG5XaXRoQ29tbWVudHMoZG9jLCBmKTsKKyAgICAgIGYuY2xvc2UoKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiV3JvdGUgc2lnbmF0dXJlIHRvICIgKyBCYXNlVVJJKTsKKworICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaWcuZ2V0U2lnbmVkSW5mbygpLmdldFNpZ25lZENvbnRlbnRMZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIi0tLSBTaWduZWQgQ29udGVudCBmb2xsb3dzIC0tLSIpOworICAgICAgICAgU3lzdGVtLm91dAorICAgICAgICAgICAgLnByaW50bG4obmV3IFN0cmluZyhzaWcuZ2V0U2lnbmVkSW5mbygpLmdldFNpZ25lZENvbnRlbnRJdGVtKGkpKSk7CisgICAgICB9CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL0F4aXNWZXJpZmllci5qYXZhIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9BeGlzVmVyaWZpZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTY0MTg2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9BeGlzVmVyaWZpZXIuamF2YQpAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzOworCisKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmU7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueHBhdGguQ2FjaGVkWFBhdGhBUEk7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworCisvKioKKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKi8KK3B1YmxpYyBjbGFzcyBBeGlzVmVyaWZpZXIgeworCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWluCisgICAgKgorICAgICogQHBhcmFtIHVudXNlZAorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIHVudXNlZFtdKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuSW5pdC5pbml0KCk7CisKKyAgICAgIEZpbGUgc2lnbmF0dXJlRmlsZSA9IG5ldyBGaWxlKEF4aXNTaWduZXIuQVhJU19TSUdOQVRVUkVfRklMRU5BTUUpOworICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPQorICAgICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCisgICAgICBkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisKKyAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlciBkYiA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKKyAgICAgIG9yZy53M2MuZG9tLkRvY3VtZW50IGRvYyA9IGRiLnBhcnNlKG5ldyBGaWxlSW5wdXRTdHJlYW0oc2lnbmF0dXJlRmlsZSkpOworICAgICAgU3RyaW5nIEJhc2VVUkkgPSBzaWduYXR1cmVGaWxlLnRvVVJMKCkudG9TdHJpbmcoKTsKKyAgICAgIENhY2hlZFhQYXRoQVBJIHhwYXRoQVBJID0gbmV3IENhY2hlZFhQYXRoQVBJKCk7CisgICAgICBFbGVtZW50IG5zY3R4ID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhudWxsLCAibnNjdHgiKTsKKworICAgICAgbnNjdHguc2V0QXR0cmlidXRlTlMoQ29uc3RhbnRzLk5hbWVzcGFjZVNwZWNOUywgInhtbG5zOmRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMpOworCisgICAgICBFbGVtZW50IHNpZ25hdHVyZUVsZW0gPSAoRWxlbWVudCkgeHBhdGhBUEkuc2VsZWN0U2luZ2xlTm9kZShkb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLy9kczpTaWduYXR1cmUiLCBuc2N0eCk7CisgICAgICBYTUxTaWduYXR1cmUgc2lnID0gbmV3IFhNTFNpZ25hdHVyZShzaWduYXR1cmVFbGVtLCBCYXNlVVJJKTsKKyAgICAgIGJvb2xlYW4gdmVyaWZ5ID0gc2lnLmNoZWNrU2lnbmF0dXJlVmFsdWUoc2lnLmdldEtleUluZm8oKS5nZXRQdWJsaWNLZXkoKSk7CisKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVGhlIHNpZ25hdHVyZSBpcyIgKyAodmVyaWZ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gIiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIiBub3QgIikgKyAidmFsaWQiKTsKKworICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaWcuZ2V0U2lnbmVkSW5mbygpLmdldFNpZ25lZENvbnRlbnRMZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICBib29sZWFuIHRoaXNPbmVXYXNTaWduZWQgPQorICAgICAgICAgICAgc2lnLmdldFNpZ25lZEluZm8oKS5nZXRWZXJpZmljYXRpb25SZXN1bHQoaSk7CisKKyAgICAgICAgIGlmICh0aGlzT25lV2FzU2lnbmVkKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIi0tLSBTaWduZWQgQ29udGVudCBmb2xsb3dzIC0tLSIpOworICAgICAgICAgICAgU3lzdGVtLm91dAorICAgICAgICAgICAgICAgLnByaW50bG4obmV3IFN0cmluZyhzaWcuZ2V0U2lnbmVkSW5mbygpCisgICAgICAgICAgICAgICAgICAuZ2V0U2lnbmVkQ29udGVudEl0ZW0oaSkpKTsKKyAgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiUHJpb3IgdHJhbnNmb3JtcyIpOworICAgICAgU3lzdGVtLm91dAorICAgICAgICAgLnByaW50bG4obmV3IFN0cmluZyhzaWcuZ2V0U2lnbmVkSW5mbygpCisgICAgICAgICAgICAuZ2V0UmVmZXJlbmNlZENvbnRlbnRCZWZvcmVUcmFuc2Zvcm1zSXRlbSgwKS5nZXRCeXRlcygpKSk7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL015UmVzb2x2ZXIuamF2YSBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvTXlSZXNvbHZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5OWU5NDEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL015UmVzb2x2ZXIuamF2YQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzOworCisKKworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlSW5wdXQ7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMucmVzb2x2ZXIuUmVzb3VyY2VSZXNvbHZlclNwaTsKK2ltcG9ydCBvcmcudzNjLmRvbS5BdHRyOworCisKKy8qKgorICoKKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKi8KK3B1YmxpYyBjbGFzcyBNeVJlc29sdmVyIGV4dGVuZHMgUmVzb3VyY2VSZXNvbHZlclNwaSB7CisKKyAgIC8qKgorICAgICogTWV0aG9kIGVuZ2luZVJlc29sdmUKKyAgICAqIEBpbmhlcml0RG9jCisgICAgKiBAcGFyYW0gdXJpCisgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICoKKyAgICAqLworICAgcHVibGljIFhNTFNpZ25hdHVyZUlucHV0IGVuZ2luZVJlc29sdmUoQXR0ciB1cmksIFN0cmluZyBCYXNlVVJJKSB7CisKKworICAgICAgICAgQnl0ZUFycmF5SW5wdXRTdHJlYW0gaXMgPQorICAgICAgICAgICAgbmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKCJzdHJpbmciLmdldEJ5dGVzKCkpOworCisgICAgICAgICByZXR1cm4gbmV3IFhNTFNpZ25hdHVyZUlucHV0KGlzKTsKKyAgICAgIAorICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBlbmdpbmVDYW5SZXNvbHZlCisgICAgKiBAaW5oZXJpdERvYworICAgICogQHBhcmFtIHVyaQorICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAqCisgICAgKi8KKyAgIHB1YmxpYyBib29sZWFuIGVuZ2luZUNhblJlc29sdmUoQXR0ciB1cmksIFN0cmluZyBCYXNlVVJJKSB7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvUmVzb2x2ZXJVc2FnZUhUVFAuamF2YSBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvUmVzb2x2ZXJVc2FnZUhUVFAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTg1M2E3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9SZXNvbHZlclVzYWdlSFRUUC5qYXZhCkBAIC0wLDAgKzEsMTQ5IEBACisKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXM7CisKKworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2FtcGxlcy5TYW1wbGVVdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5YTUxVdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5yZXNvbHZlci5SZXNvdXJjZVJlc29sdmVyOworaW1wb3J0IG9yZy5hcGFjaGUueHBhdGguWFBhdGhBUEk7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworCisvKioKKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKi8KK3B1YmxpYyBjbGFzcyBSZXNvbHZlclVzYWdlSFRUUCB7CisKKyAgIC8qKgorICAgICogTWV0aG9kIG1haW4KKyAgICAqCisgICAgKiBAcGFyYW0gdW51c2VkCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgdW51c2VkW10pIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBSZXNvdXJjZVJlc29sdmVyLnJlZ2lzdGVyQXRTdGFydCgKKyAgICAgICAgICJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLnV0aWxzLnJlc29sdmVyLk9mZmxpbmVSZXNvbHZlciIpOworCisgICAgICAvL0otCisgICAgICAvLyBTdHJpbmcgY3VycmVudFN5c3RlbUlkID0gImh0dHA6Ly93d3cubnVlLmV0LWluZi51bmktc2llZ2VuLmRlL35nZXVlci1wb2xsbWFubi9zaWduYXR1cmUueG1sIjsKKyAgICAgIFN0cmluZyBjdXJyZW50U3lzdGVtSWQgPSAiZmlsZTovWTovc2lnbmF0dXJlLnhtbCI7CisgICAgICAvLyBTdHJpbmcgcmVmVVJJID0gICAgICAgICAgIiNOMyI7CisgICAgICBTdHJpbmcgcmVmVVJJID0gICAgICAgICAgIiN4cG9pbnRlcihpZCgmcXVvdDtpZDImcXVvdDspKSI7CisgICAgICAvLyBTdHJpbmcgcmVmVVJJID0gICAgICAgICAgImZpbGU6L1k6L2picHJvamVjdC94bWxzZWN1cml0eS9kYXRhL29yZy5hcGFjaGUueG1sLnNlY3VyaXR5L3RlbXAvaWQueG1sI04zIjsKKyAgICAgIC8vIFN0cmluZyByZWZVUkkgPSAgICAgICAgICAiaHR0cDovL3d3dy5udWUuZXQtaW5mLnVuaS1zaWVnZW4uZGUvaW5kZXguaHRtbCN4cG9pbnRlcigmYXBvcztpZDMmYXBvczspIjsKKyAgICAgIFN0cmluZyBpbnB1dFN0ciA9CisgICAgICAgICI8P3htbCB2ZXJzaW9uPScxLjAnPz4iICsgIlxuIgorICAgICAgKyAiPCFET0NUWVBFIGRvYyBbIiArICJcbiIKKyAgICAgICsgIjwhQVRUTElTVCBlOSBJZCBJRCAjSU1QTElFRD4iICsgIlxuIgorICAgICAgKyAiXT4iICsgIlxuIgorICAgICAgKyAiPGRvYz4iICsgIlxuIgorICAgICAgKyAiICAgPCEtLSBBIGNvbW1lbnQgLS0+IiArICJcbiIKKyAgICAgICsgIiAgIDxTaWduYXR1cmUgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMnPiIgKyAiXG4iCisgICAgICArICIgICAgPFNpZ25lZEluZm8+IiArICJcbiIKKyAgICAgICsgIiAgICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0naHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUnIC8+IiArICJcbiIKKyAgICAgICsgIiAgICAgIDxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjcnNhLXNoYTEnIC8+IiArICJcbiIKKyAgICAgICsgIiAgICAgIDxSZWZlcmVuY2UgVVJJPSdodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldCc+IiArICJcbiIKKyAgICAgICsgIiAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMScgLz4iICsgIlxuIgorICAgICAgKyAiICAgICAgICAgPERpZ2VzdFZhbHVlPjYwTnZadnRkVEIrN1VubExwL0gyNHA3aDRicz08L0RpZ2VzdFZhbHVlPiIgKyAiXG4iCisgICAgICArICIgICAgICA8L1JlZmVyZW5jZT4iICsgIlxuIgorICAgICAgKyAiICAgICAgPFJlZmVyZW5jZSBVUkk9JyN4cG9pbnRlcihpZCgmcXVvdDtpZDImcXVvdDspKSc+IiArICJcbiIKKyAgICAgICsgIiAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMScgLz4iICsgIlxuIgorICAgICAgKyAiICAgICAgICAgPERpZ2VzdFZhbHVlPlJKZVJFVkhYZE01eXNnaGh2cElZR0pKYU5RST08L0RpZ2VzdFZhbHVlPiIgKyAiXG4iCisgICAgICArICIgICAgICA8L1JlZmVyZW5jZT4iICsgIlxuIgorICAgICAgKyAiICAgICAgPFJlZmVyZW5jZSBVUkk9J2h0dHA6Ly93d3cubnVlLmV0LWluZi51bmktc2llZ2VuLmRlL2luZGV4Lmh0bWwnPiIgKyAiXG4iCisgICAgICArICIgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0naHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEnIC8+IiArICJcbiIKKyAgICAgICsgIiAgICAgICAgIDxEaWdlc3RWYWx1ZT5IcGcrNmgxazFqWVk1eXIzVFJ6RFp6dzIzQ1E9PC9EaWdlc3RWYWx1ZT4iICsgIlxuIgorICAgICAgLy8gKyAiICAgICAgICAgPERpZ2VzdFZhbHVlPlJKZVJFVkhYZE01eXNnaGh2cElZR0pKYU5RST08L0RpZ2VzdFZhbHVlPiIgKyAiXG4iCisgICAgICArICIgICAgICA8L1JlZmVyZW5jZT4iICsgIlxuIgorICAgICAgLy8gKyAiICAgICAgPFJlZmVyZW5jZSBVUkk9J2ZpbGU6L1k6L2picHJvamVjdC94bWxzZWN1cml0eS9kYXRhL29yZy5hcGFjaGUueG1sLnNlY3VyaXR5L3RlbXAvaWQyLnhtbCN4cG9pbnRlcihpZCgmcXVvdDtpZDImcXVvdDspKScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMnPiIgKyAiXG4iCisgICAgICArICIgICAgICA8UmVmZXJlbmNlIFVSST0naHR0cDovL3d3dy5udWUuZXQtaW5mLnVuaS1zaWVnZW4uZGUvfmdldWVyLXBvbGxtYW5uL2lkMi54bWwnPiIgKyAiXG4iCisgICAgICArICIgICAgICAgICA8VHJhbnNmb3Jtcz4iICsgIlxuIgorICAgICAgKyAiICAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09J2h0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Jz4iICsgIlxuIgorICAgICAgKyAiICAgICAgICAgICAgICAgPFhQYXRoPnNlbGY6OnRleHQoKTwvWFBhdGg+IiArICJcbiIKKyAgICAgICsgIiAgICAgICAgICAgIDwvVHJhbnNmb3JtPiIgKyAiXG4iCisgICAgICArICIgICAgICAgICA8L1RyYW5zZm9ybXM+IiArICJcbiIKKyAgICAgICsgIiAgICAgICAgIDxEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMScgLz4iICsgIlxuIgorICAgICAgKyAiICAgICAgICAgPERpZ2VzdFZhbHVlPlJLOURLVTRObkVDUHBOQWIrUXhNd1RtU0wrdz08L0RpZ2VzdFZhbHVlPiIgKyAiXG4iCisgICAgICArICIgICAgICA8L1JlZmVyZW5jZT4iICsgIlxuIgorICAgICAgKyAiICAgIDwvU2lnbmVkSW5mbz4iICsgIlxuIgorICAgICAgKyAiICAgIDxTaWduYXR1cmVWYWx1ZT4iICsgIlxuIgorICAgICAgKyAiICAgICAgIEtUZTFINUhqcDhod2FoTkZvVXFIRHVQSk5OcWhTMVUzQkJCSDUvZ0J5SXROSXdWMThuTWlMcTRLdW56Rm5PcUQiICsgIlxuIgorICAgICAgKyAiICAgICAgIHh6VHVPMC9UK3dzb1lDMXhPRXVDRHh5SXVqTkNhSmZMaCtyQ2k1VEh1bG5jOEtTSEhFb1BRKzdmQTFWam1PMzEiICsgIlxuIgorICAgICAgKyAiICAgICAgIDJpdzFpRU5PaTdtLy93ektsSUh1eFpDSjVudm9sVDIxUFY2blNFNERIbEE9IiArICJcbiIKKyAgICAgICsgIiAgICA8L1NpZ25hdHVyZVZhbHVlPiIgKyAiXG4iCisgICAgICArICIgICA8L1NpZ25hdHVyZT4iICsgIlxuIgorICAgICAgKyAiICAgPGU5IElkPSdOMyc+PCEtLSBBIGNvbW1lbnQgLS0+RGFzIE4zIEVsZW1lbnQ8L2U5PiIgKyAiXG4iCisgICAgICArICIgICA8ZTkgSWQ9J2lkMic+PCEtLSBBIGNvbW1lbnQgLS0+IERhcyBpZDIgRWxlbWVudDwvZTk+IiArICJcbiIKKyAgICAgICsgIjwvZG9jPiAiICsgIlxuIgorICAgICAgKyAiIjsKKyAgICAgIC8vSisKKyAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0KKyAgICAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKworICAgICAgZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworCisgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgICBvcmcudzNjLmRvbS5Eb2N1bWVudCBkb2MgPQorICAgICAgICAgZGIucGFyc2UobmV3IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW0oaW5wdXRTdHIuZ2V0Qnl0ZXMoKSkpOworICAgICAgRWxlbWVudCBjb250ZXh0ID0gU2FtcGxlVXRpbHMuY3JlYXRlRFNjdHgoZG9jLCAiZHMiLCBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TKTsKKworICAgICAgRWxlbWVudCBkc0VsZW0gPSAoRWxlbWVudCkgWFBhdGhBUEkuc2VsZWN0U2luZ2xlTm9kZShkb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICIvL2RzOlNpZ25hdHVyZVsxXSIsIGNvbnRleHQpOworICAgICAgWE1MU2lnbmF0dXJlIHNpZ25hdHVyZSA9IG5ldyBYTUxTaWduYXR1cmUoZHNFbGVtLCBjdXJyZW50U3lzdGVtSWQpOworCisgICAgICAvLyBob3cgY2FuIEkgcmVnIG15IG93biBrZXlzdG9yZT8KKyAgICAgIGJvb2xlYW4gdmVyaWZ5ID0gc2lnbmF0dXJlLmNoZWNrU2lnbmF0dXJlVmFsdWUoc2lnbmF0dXJlLmdldEtleUluZm8oKS5nZXRQdWJsaWNLZXkoKSk7CisKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiU2lnbmF0dXJlICIgKyAodmVyaWZ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gIlZlcmlmaWNhdGlvbiBzdWNjZXNzZnVsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJWZXJpZmljYXRpb24gZmFpbGVkIikpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJDYW5vbmljYWxpemVkIFNpZ25lZEluZm86Iik7CisgICAgICBTeXN0ZW0ub3V0CisgICAgICAgICAucHJpbnRsbihuZXcgU3RyaW5nKHNpZ25hdHVyZS5nZXRTaWduZWRJbmZvKCkKKyAgICAgICAgICAgIC5nZXRDYW5vbmljYWxpemVkT2N0ZXRTdHJlYW0oKSkpOworCisgICAgICAvKgorICAgICAgRWxlbWVudCBzaWduZWRJbmZvRWxlbSA9IChFbGVtZW50KSBYUGF0aEFQSS5zZWxlY3RTaW5nbGVOb2RlKGRvYywgIi9kb2MvZHM6U2lnbmF0dXJlL2RzOlNpZ25lZEluZm8iLCBjb250ZXh0KTsKKyAgICAgIFNpZ25lZEluZm8gc2kgPSBuZXcgU2lnbmVkSW5mbyhzaWduZWRJbmZvRWxlbSwgY3VycmVudFN5c3RlbUlkKTsKKyAgICAgIGJvb2xlYW4gdXNlUHJveHkgPSBmYWxzZTsKKyAgICAgIGlmICh1c2VQcm94eSkgeworICAgICAgICAgc2kuc2V0UmVzb2x2ZXJQcm9wZXJ0eSgiaHR0cC5wcm94eS5ob3N0IiwgInd3dy1jYWNoZS51bmktc2llZ2VuLmRlIik7CisgICAgICAgICBzaS5zZXRSZXNvbHZlclByb3BlcnR5KCJodHRwLnByb3h5LnBvcnQiLCAiMzEyOCIpOworICAgICAgfQorICAgICAgYm9vbGVhbiB2ZXJpZnkgPSBzaS52ZXJpZnkoKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih2ZXJpZnkgPyAiVmVyaWZpY2F0aW9uIHN1Y2Nlc3NmdWwiIDogIlZlcmlmaWNhdGlvbiBmYWlsZWQiKTsKKyAgICAgIGlmICghdmVyaWZ5KSB7CisgICAgICAgICBmb3IgKGludCBpPTA7IGk8c2kuZ2V0TGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgaWYgKHNpLmdldFZlcmlmaWNhdGlvblJlc3VsdChpKSkgeworICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJPSzogICAgICIgKyBzaS5pdGVtKGkpLmdldFVSSSgpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkZhaWxlZDogIiArIHNpLml0ZW0oaSkuZ2V0VVJJKCkpOworICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJkYXRhIGZvbGxvd3M6ICIpOworICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludChuZXcgU3RyaW5nKHNpLml0ZW0oaSkuZ2V0WE1MU2lnbmF0dXJlSW5wdXQoKS5nZXRCeXRlcygpKSk7CisgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICB9CisgICAgICAqLworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9TYW1wbGVVdGlscy5qYXZhIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9TYW1wbGVVdGlscy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZDc5OWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL1NhbXBsZVV0aWxzLmphdmEKQEAgLTAsMCArMSwzMSBAQAorcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CisKK3B1YmxpYyBjbGFzcyBTYW1wbGVVdGlscyB7CisKKyAgICAvKioKKyAgICAgKiBNZXRob2QgY3JlYXRlRFNjdHgKKyAgICAgKgorICAgICAqIEBwYXJhbSBkb2MKKyAgICAgKiBAcGFyYW0gcHJlZml4CisgICAgICogQHBhcmFtIG5hbWVzcGFjZQorICAgICAqIEByZXR1cm4gdGhlIGVsZW1lbnQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBFbGVtZW50IGNyZWF0ZURTY3R4CisJKERvY3VtZW50IGRvYywgU3RyaW5nIHByZWZpeCwgU3RyaW5nIG5hbWVzcGFjZSkgeworCQorCWlmICgocHJlZml4ID09IG51bGwpIHx8IChwcmVmaXgudHJpbSgpLmxlbmd0aCgpID09IDApKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJZb3UgbXVzdCBzdXBwbHkgYSBwcmVmaXgiKTsKKwl9CisJCisJRWxlbWVudCBjdHggPSBkb2MuY3JlYXRlRWxlbWVudE5TKG51bGwsICJuYW1lc3BhY2VDb250ZXh0Iik7CisJCisJY3R4LnNldEF0dHJpYnV0ZU5TCisJICAgIChDb25zdGFudHMuTmFtZXNwYWNlU3BlY05TLCAieG1sbnM6IiArIHByZWZpeC50cmltKCksIG5hbWVzcGFjZSk7CisJCisJcmV0dXJuIGN0eDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL1RyYW5zZm9ybU5vbmVVc2VyLmphdmEgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL1RyYW5zZm9ybU5vbmVVc2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGJlYzE2YQotLS0gL2Rldi9udWxsCisrKyBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvVHJhbnNmb3JtTm9uZVVzZXIuamF2YQpAQCAtMCwwICsxLDU4IEBACisKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXM7CisKKworCitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmVJbnB1dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybXM7CisKKworLyoqCisgKiBUaGlzIHNhbXBsZSBhcHAgZGVzY3JpYmVzIGhvdyB0byByZWdpc3RlciBhbmQgdXNlIHNlbGYtcHJvZ3JhbW1lZAorICogVHJhbnNmb3Jtcy4KKyAqCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubgorICovCitwdWJsaWMgY2xhc3MgVHJhbnNmb3JtTm9uZVVzZXIgeworCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWluCisgICAgKgorICAgICogQHBhcmFtIGFyZ3MKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmdzW10pIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBUcmFuc2Zvcm0ucmVnaXN0ZXIoCisgICAgICAgICAiaHR0cDovL3d3dy54bWxzZWN1cml0eS5vcmcvTlMvVHJhbnNmb3JtcyNub25lIiwKKyAgICAgICAgICJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLnRyYW5zZm9ybXMuU2FtcGxlVHJhbnNmb3JtTm9uZSIpOworCisgICAgICBUcmFuc2Zvcm1zIGlkZW50aXR5ID0gbmV3IFRyYW5zZm9ybXMobnVsbCwgbnVsbCk7CisgICAgICBpZGVudGl0eS5hZGRUcmFuc2Zvcm0oImh0dHA6Ly93d3cueG1sc2VjdXJpdHkub3JnL05TL1RyYW5zZm9ybXMjbm9uZSIpOworICAgICAgWE1MU2lnbmF0dXJlSW5wdXQgaW5wdXQgPQorICAgICAgICAgbmV3IFhNTFNpZ25hdHVyZUlucHV0KG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbSgiVGhpcyBpcyB0aGUgSW5wdXQiCisgICAgICAgICAgICAuZ2V0Qnl0ZXMoKSkpOworICAgICAgWE1MU2lnbmF0dXJlSW5wdXQgcmVzdWx0ID0gaWRlbnRpdHkucGVyZm9ybVRyYW5zZm9ybXMoaW5wdXQpOworCisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmV3IFN0cmluZyhyZXN1bHQuZ2V0Qnl0ZXMoKSkpOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9UcmFuc2Zvcm1QZXJmb3JtYW5jZVRlc3Rlci5qYXZhIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9UcmFuc2Zvcm1QZXJmb3JtYW5jZVRlc3Rlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkNDUyNzQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL1RyYW5zZm9ybVBlcmZvcm1hbmNlVGVzdGVyLmphdmEKQEAgLTAsMCArMSwyNTM4IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzOworCisKKworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uRmlsZU91dHB1dFN0cmVhbTsKKworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5DYW5vbmljYWxpemVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmU7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1zOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMucGFyYW1zLlhQYXRoMkZpbHRlckNvbnRhaW5lcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLnBhcmFtcy5YUGF0aDJGaWx0ZXJDb250YWluZXIwNDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLnBhcmFtcy5YUGF0aEZpbHRlckNIR1BDb250YWluZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7CisKKworLyoqCisgKiBDbGFzcyBUcmFuc2Zvcm1QZXJmb3JtYW5jZVRlc3RlcgorICoKKyAqIDMwMCAqIHNpbXBsZV9naWZfZGV0YWNoZWQgICAgICAgdG9vayAxMzYsMzc2IHNlY29uZHMKKyAqIDMwMCAqIHB1cmVlZGdlX3hmaWx0ZXIyICAgICAgICAgdG9vayA1NzQsNzk3IHNlY29uZHMKKyAqIDMwMCAqIHB1cmVlZGdlX2FwYWNoZWZpbHRlciAgICAgdG9vayA1OTUsNjE3IHNlY29uZHMKKyAqIDMwMCAqIHhmaWx0ZXIyc3BlY194ZmlsdGVyMiAgICAgdG9vayAgNzUsNDA4IHNlY29uZHMKKyAqIDMwMCAqIHhmaWx0ZXIyc3BlY19hcGFjaGVmaWx0ZXIgdG9vayAgNTgsNjI0IHNlY29uZHMKKyAqCisgKiA0MDAgKiBzaW1wbGVfZ2lmX2RldGFjaGVkICAgICAgIHRvb2sgMTk2LDczMyBzZWNvbmRzCisgKiA0MDAgKiBwdXJlZWRnZV94ZmlsdGVyMiAgICAgICAgIHRvb2sgNzY3LDQwNCBzZWNvbmRzCisgKiA0MDAgKiBwdXJlZWRnZV9hcGFjaGVmaWx0ZXIgICAgIHRvb2sgODA1LDY0OCBzZWNvbmRzCisgKiA0MDAgKiB4ZmlsdGVyMnNwZWNfeGZpbHRlcjIgICAgIHRvb2sgIDgxLDM2NyBzZWNvbmRzCisgKiA0MDAgKiB4ZmlsdGVyMnNwZWNfYXBhY2hlZmlsdGVyIHRvb2sgIDcyLDAxMyBzZWNvbmRzCisgKgorICogNTAwICogc2ltcGxlX2dpZl9kZXRhY2hlZCB0b29rIDI0NiwwNTQgc2Vjb25kcworICogNTAwICogeGZpbHRlcjJzcGVjX3hmaWx0ZXIyXzEgdG9vayAgOTgsODQyIHNlY29uZHMKKyAqIDUwMCAqIHhmaWx0ZXIyc3BlY194ZmlsdGVyMl8yIHRvb2sgMTIyLDIzNiBzZWNvbmRzCisgKiA1MDAgKiB4ZmlsdGVyMnNwZWNfeGZpbHRlcjJfMyB0b29rIDEyMiw5MTcgc2Vjb25kcworICogNTAwICogeGZpbHRlcjJzcGVjX2FwYWNoZWZpbHRlcl8xIHRvb2sgMTIwLDU2MyBzZWNvbmRzCisgKiA1MDAgKiB4ZmlsdGVyMnNwZWNfYXBhY2hlZmlsdGVyXzIgdG9vayAxMDksODk4IHNlY29uZHMKKyAqIDUwMCAqIHhmaWx0ZXIyc3BlY19hcGFjaGVmaWx0ZXJfMyB0b29rIDExMywzODMgc2Vjb25kcworICoKKyAqIDYwMCAqIHNpbXBsZV9naWZfZGV0YWNoZWQgdG9vayAyOTQsNTAzIHNlY29uZHMKKyAqIDYwMCAqIHB1cmVlZGdlX3hmaWx0ZXIyIHRvb2sgMS4xNDQsNjE2IHNlY29uZHMKKyAqIDYwMCAqIHB1cmVlZGdlX2FwYWNoZWZpbHRlciB0b29rIDEuMjA1LDI0MyBzZWNvbmRzCisgKiA2MDAgKiB4ZmlsdGVyMnNwZWNfeGZpbHRlcjJfMSB0b29rIDEwOSwzMzcgc2Vjb25kcworICogNjAwICogeGZpbHRlcjJzcGVjX3hmaWx0ZXIyXzIgdG9vayAxMjIsMjA2IHNlY29uZHMKKyAqIDYwMCAqIHhmaWx0ZXIyc3BlY194ZmlsdGVyMl8zIHRvb2sgMTM4LDkxIHNlY29uZHMKKyAqIDYwMCAqIHhmaWx0ZXIyc3BlY19hcGFjaGVmaWx0ZXJfMSB0b29rIDEzMCwyOTcgc2Vjb25kcworICogNjAwICogeGZpbHRlcjJzcGVjX2FwYWNoZWZpbHRlcl8yIHRvb2sgMTIzLDI2OCBzZWNvbmRzCisgKiA2MDAgKiB4ZmlsdGVyMnNwZWNfYXBhY2hlZmlsdGVyXzMgdG9vayAxMzEsMTc4IHNlY29uZHMKKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKiBAdmVyc2lvbiAkUmV2aXNpb24kCisgKi8KK3B1YmxpYyBjbGFzcyBUcmFuc2Zvcm1QZXJmb3JtYW5jZVRlc3RlciB7CisKKyAgIC8qKgorICAgICogTWV0aG9kIG1haW4KKyAgICAqCisgICAgKiBAcGFyYW0gYXJncworICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaW5pdCgpOworCisgICAgICAvLyBjaGVja01lcmxpbnNTYW1wbGUoKTsKKyAgICAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCisgICAgICBkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisKKyAgICAgIERvY3VtZW50QnVpbGRlciBkYiA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKKyAgICAgIC8vSi0KKyAgICAgIGludCBjb3VudGVyID0gNTA7CisgICAgICBib29sZWFuIHNpbXBsZV9naWZfZGV0YWNoZWQgPSBmYWxzZTsKKworICAgICAgYm9vbGVhbiBwdXJlZWRnZV94ZmlsdGVyMiA9IHRydWU7CisgICAgICBib29sZWFuIHB1cmVlZGdlX3hmaWx0ZXIyX25ldyA9IHRydWU7CisgICAgICBib29sZWFuIHB1cmVlZGdlX2FwYWNoZWZpbHRlciA9IHRydWU7CisKKyAgICAgIGJvb2xlYW4geGZpbHRlcjJzcGVjX3hmaWx0ZXIyXzEgPSB0cnVlOworICAgICAgYm9vbGVhbiB4ZmlsdGVyMnNwZWNfeGZpbHRlcjJfMiA9IHRydWU7CisgICAgICBib29sZWFuIHhmaWx0ZXIyc3BlY194ZmlsdGVyMl8zID0gdHJ1ZTsKKworICAgICAgYm9vbGVhbiB4ZmlsdGVyMnNwZWNfYXBhY2hlZmlsdGVyXzEgPSB0cnVlOworICAgICAgYm9vbGVhbiB4ZmlsdGVyMnNwZWNfYXBhY2hlZmlsdGVyXzIgPSB0cnVlOworICAgICAgYm9vbGVhbiB4ZmlsdGVyMnNwZWNfYXBhY2hlZmlsdGVyXzMgPSB0cnVlOworCisgICAgICBib29sZWFuIGFwYWNoZXNhbXBsZV94ZmlsdGVyMl8xID0gZmFsc2U7CisgICAgICBib29sZWFuIGFwYWNoZXNhbXBsZV94ZmlsdGVyMl8yID0gZmFsc2U7CisgICAgICBib29sZWFuIGFwYWNoZXNhbXBsZV94ZmlsdGVyMl8zID0gZmFsc2U7CisgICAgICBib29sZWFuIGFwYWNoZXNhbXBsZV94ZmlsdGVyMl80ID0gZmFsc2U7CisgICAgICBib29sZWFuIGFwYWNoZXNhbXBsZV94ZmlsdGVyMl81ID0gZmFsc2U7CisgICAgICBib29sZWFuIGFwYWNoZXNhbXBsZV94ZmlsdGVyMl82ID0gZmFsc2U7CisgICAgICBib29sZWFuIGFwYWNoZXNhbXBsZV94ZmlsdGVyMl83ID0gZmFsc2U7CisKKyAgICAgIGJvb2xlYW4gYXBhY2hlc2FtcGxlX2FwYWNoZWZpbHRlcl8xID0gZmFsc2U7CisgICAgICBib29sZWFuIGFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfMiA9IGZhbHNlOworICAgICAgYm9vbGVhbiBhcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyXzMgPSBmYWxzZTsKKyAgICAgIGJvb2xlYW4gYXBhY2hlc2FtcGxlX2FwYWNoZWZpbHRlcl80ID0gZmFsc2U7CisgICAgICBib29sZWFuIGFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfNSA9IGZhbHNlOworICAgICAgYm9vbGVhbiBhcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyXzYgPSBmYWxzZTsKKyAgICAgIGJvb2xlYW4gYXBhY2hlc2FtcGxlX2FwYWNoZWZpbHRlcl83ID0gZmFsc2U7CisKKyAgICAgIGJvb2xlYW4gYXBhY2hlc2FtcGxlX2FwYWNoZWZpbHRlcl83X29wdGltYWwgPSBmYWxzZTsKKworCisgICAgICBib29sZWFuIHhmaWx0ZXIyc3BlY194ZmlsdGVyMl8zX25ldyA9IHRydWU7CisKKyAgICAgIC8vSisKKyAgICAgIGlmIChzaW1wbGVfZ2lmX2RldGFjaGVkKSB7CisgICAgICAgICBEb2N1bWVudCBkb2MgPSBkYi5uZXdEb2N1bWVudCgpOworICAgICAgICAgbG9uZyBzdGFydCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgYnl0ZVtdW10gcmVzdWx0ID0gbnVsbDsKKworICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudGVyOyBpKyspIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IFRyYW5zZm9ybVBlcmZvcm1hbmNlVGVzdGVyLnNpbXBsZV9naWZfZGV0YWNoZWQoZG9jKTsKKworICAgICAgICAgICAgaWYgKGkgJSAxMCA9PSAwKSB7CisKKyAgICAgICAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnQoIi4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKworICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICAgICAgIGxvbmcgZW5kID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICBkb3VibGUgZGVsdGEgPSBlbmQgLSBzdGFydDsKKworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKAorICAgICAgICAgICAgY291bnRlciArICIgKiBzaW1wbGVfZ2lmX2RldGFjaGVkIHRvb2sgIgorICAgICAgICAgICAgKyBqYXZhLnRleHQuRGVjaW1hbEZvcm1hdC5nZXRJbnN0YW5jZSgpLmZvcm1hdChkZWx0YSAvIDEwMDAuKQorICAgICAgICAgICAgKyAiIHNlY29uZHMiKTsKKworICAgICAgICAgRmlsZU91dHB1dFN0cmVhbSBmb3M7CisKKyAgICAgICAgIGZvcyA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKCJzaW1wbGVfZ2lmX2RldGFjaGVkLnhtbCIpOworCisgICAgICAgICBmb3Mud3JpdGUocmVzdWx0WzBdKTsKKyAgICAgICAgIGZvcy5jbG9zZSgpOworCisgICAgICAgICBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgic2ltcGxlX2dpZl9kZXRhY2hlZC5naWYiKTsKKworICAgICAgICAgZm9zLndyaXRlKHJlc3VsdFsxXSk7CisgICAgICAgICBmb3MuY2xvc2UoKTsKKyAgICAgIH0KKworICAgICAgaWYgKHB1cmVlZGdlX3hmaWx0ZXIyKSB7CisgICAgICAgICBEb2N1bWVudCBkb2MgPQorICAgICAgICAgICAgZGIucGFyc2UobmV3IEZpbGVJbnB1dFN0cmVhbSgiZGF0YS9jb20vcHVyZWVkZ2UvTGVhdmVSZXF1ZXN0LnhmZCIpKTsKKyAgICAgICAgIGxvbmcgc3RhcnQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgIGJ5dGVbXVtdIHJlc3VsdCA9IG51bGw7CisKKyAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnRlcjsgaSsrKSB7CisgICAgICAgICAgICByZXN1bHQgPSBUcmFuc2Zvcm1QZXJmb3JtYW5jZVRlc3Rlci5wdXJlZWRnZV94ZmlsdGVyMihkb2MpOworCisgICAgICAgICAgICBpZiAoaSAlIDEwID09IDApIHsKKworICAgICAgICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludCgiLiIpOworICAgICAgICAgICAgfQorICAgICAgICAgfQorCisgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICAgICAgICAgbG9uZyBlbmQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgIGRvdWJsZSBkZWx0YSA9IGVuZCAtIHN0YXJ0OworCisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAgICBjb3VudGVyICsgIiAqIHB1cmVlZGdlX3hmaWx0ZXIyIHRvb2sgIgorICAgICAgICAgICAgKyBqYXZhLnRleHQuRGVjaW1hbEZvcm1hdC5nZXRJbnN0YW5jZSgpLmZvcm1hdChkZWx0YSAvIDEwMDAuKQorICAgICAgICAgICAgKyAiIHNlY29uZHMiKTsKKworICAgICAgICAgRmlsZU91dHB1dFN0cmVhbSBmb3M7CisKKyAgICAgICAgIGZvcyA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKCJwdXJlZWRnZV94ZmlsdGVyMl9kb2MueG1sIik7CisKKyAgICAgICAgIGZvcy53cml0ZShyZXN1bHRbMF0pOworICAgICAgICAgZm9zLmNsb3NlKCk7CisKKyAgICAgICAgIGZvcyA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKCJwdXJlZWRnZV94ZmlsdGVyMl9yZWYueG1sIik7CisKKyAgICAgICAgIGZvcy53cml0ZShyZXN1bHRbMV0pOworICAgICAgICAgZm9zLmNsb3NlKCk7CisgICAgICB9CisKKyAgICAgIGlmIChwdXJlZWRnZV94ZmlsdGVyMl9uZXcpIHsKKyAgICAgICAgIERvY3VtZW50IGRvYyA9CisgICAgICAgICAgICBkYi5wYXJzZShuZXcgRmlsZUlucHV0U3RyZWFtKCJkYXRhL2NvbS9wdXJlZWRnZS9MZWF2ZVJlcXVlc3QueGZkIikpOworICAgICAgICAgbG9uZyBzdGFydCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgYnl0ZVtdW10gcmVzdWx0ID0gbnVsbDsKKworICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudGVyOyBpKyspIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IFRyYW5zZm9ybVBlcmZvcm1hbmNlVGVzdGVyLnB1cmVlZGdlX3hmaWx0ZXIyX25ldyhkb2MpOworCisgICAgICAgICAgICBpZiAoaSAlIDEwID09IDApIHsKKworICAgICAgICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludCgiLiIpOworICAgICAgICAgICAgfQorICAgICAgICAgfQorCisgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICAgICAgICAgbG9uZyBlbmQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgIGRvdWJsZSBkZWx0YSA9IGVuZCAtIHN0YXJ0OworCisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAgICBjb3VudGVyICsgIiAqIHB1cmVlZGdlX3hmaWx0ZXIyX25ldyB0b29rICIKKyAgICAgICAgICAgICsgamF2YS50ZXh0LkRlY2ltYWxGb3JtYXQuZ2V0SW5zdGFuY2UoKS5mb3JtYXQoZGVsdGEgLyAxMDAwLikKKyAgICAgICAgICAgICsgIiBzZWNvbmRzIik7CisKKyAgICAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZm9zOworCisgICAgICAgICBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgicHVyZWVkZ2VfeGZpbHRlcjJfbmV3X2RvYy54bWwiKTsKKworICAgICAgICAgZm9zLndyaXRlKHJlc3VsdFswXSk7CisgICAgICAgICBmb3MuY2xvc2UoKTsKKworICAgICAgICAgZm9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oInB1cmVlZGdlX3hmaWx0ZXIyX25ld19yZWYueG1sIik7CisKKyAgICAgICAgIGZvcy53cml0ZShyZXN1bHRbMV0pOworICAgICAgICAgZm9zLmNsb3NlKCk7CisgICAgICB9CisKKyAgICAgIGlmIChwdXJlZWRnZV9hcGFjaGVmaWx0ZXIpIHsKKyAgICAgICAgIERvY3VtZW50IGRvYyA9CisgICAgICAgICAgICBkYi5wYXJzZShuZXcgRmlsZUlucHV0U3RyZWFtKCJkYXRhL2NvbS9wdXJlZWRnZS9MZWF2ZVJlcXVlc3QueGZkIikpOworICAgICAgICAgbG9uZyBzdGFydCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgYnl0ZVtdW10gcmVzdWx0ID0gbnVsbDsKKworICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudGVyOyBpKyspIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IFRyYW5zZm9ybVBlcmZvcm1hbmNlVGVzdGVyLnB1cmVlZGdlX2FwYWNoZWZpbHRlcihkb2MpOworCisgICAgICAgICAgICBpZiAoaSAlIDEwID09IDApIHsKKworICAgICAgICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludCgiLiIpOworICAgICAgICAgICAgfQorICAgICAgICAgfQorCisgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICAgICAgICAgbG9uZyBlbmQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgIGRvdWJsZSBkZWx0YSA9IGVuZCAtIHN0YXJ0OworCisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAgICBjb3VudGVyICsgIiAqIHB1cmVlZGdlX2FwYWNoZWZpbHRlciB0b29rICIKKyAgICAgICAgICAgICsgamF2YS50ZXh0LkRlY2ltYWxGb3JtYXQuZ2V0SW5zdGFuY2UoKS5mb3JtYXQoZGVsdGEgLyAxMDAwLikKKyAgICAgICAgICAgICsgIiBzZWNvbmRzIik7CisKKyAgICAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZm9zOworCisgICAgICAgICBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgicHVyZWVkZ2VfYXBhY2hlZmlsdGVyX2RvYy54bWwiKTsKKworICAgICAgICAgZm9zLndyaXRlKHJlc3VsdFswXSk7CisgICAgICAgICBmb3MuY2xvc2UoKTsKKworICAgICAgICAgZm9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oInB1cmVlZGdlX2FwYWNoZWZpbHRlcl9yZWYueG1sIik7CisKKyAgICAgICAgIGZvcy53cml0ZShyZXN1bHRbMV0pOworICAgICAgICAgZm9zLmNsb3NlKCk7CisgICAgICB9CisKKyAgICAgIGlmICh4ZmlsdGVyMnNwZWNfeGZpbHRlcjJfMSkgeworICAgICAgICAgU3RyaW5nIGlucHV0RG9jID0gIjxEb2N1bWVudD5cbiIgKyAiICAgICA8VG9CZVNpZ25lZD5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgICA8IS0tIGNvbW1lbnQgLS0+XG4iICsgIiAgICAgICA8RGF0YSAvPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICAgIDxOb3RUb0JlU2lnbmVkPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICAgICAgPFJlYWxseVRvQmVTaWduZWQ+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgICAgICAgIDwhLS0gY29tbWVudCAtLT5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgICAgICAgPERhdGEgLz5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgICAgIDwvUmVhbGx5VG9CZVNpZ25lZD5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgICA8L05vdFRvQmVTaWduZWQ+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgIDwvVG9CZVNpZ25lZD5cbiIgKyAiICAgICA8VG9CZVNpZ25lZD5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgICA8RGF0YSAvPlxuIiArICIgICAgICAgPE5vdFRvQmVTaWduZWQ+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgICAgICA8RGF0YSAvPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICAgIDwvTm90VG9CZVNpZ25lZD5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgPC9Ub0JlU2lnbmVkPlxuIiArICI8L0RvY3VtZW50PiI7CisKKyAgICAgICAgIC8vSisKKyAgICAgICAgIERvY3VtZW50IGRvYyA9IGRiLnBhcnNlKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShpbnB1dERvYy5nZXRCeXRlcygpKSk7CisgICAgICAgICBsb25nIHN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICBieXRlW11bXSByZXN1bHQgPSBudWxsOworCisgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50ZXI7IGkrKykgeworICAgICAgICAgICAgcmVzdWx0ID0gVHJhbnNmb3JtUGVyZm9ybWFuY2VUZXN0ZXIueGZpbHRlcjJzcGVjX3hmaWx0ZXIyXzEoZG9jKTsKKworICAgICAgICAgICAgaWYgKGkgJSAxMCA9PSAwKSB7CisKKyAgICAgICAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnQoIi4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKworICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICAgICAgIGxvbmcgZW5kID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICBkb3VibGUgZGVsdGEgPSBlbmQgLSBzdGFydDsKKworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKAorICAgICAgICAgICAgY291bnRlciArICIgKiB4ZmlsdGVyMnNwZWNfeGZpbHRlcjJfMSB0b29rICIKKyAgICAgICAgICAgICsgamF2YS50ZXh0LkRlY2ltYWxGb3JtYXQuZ2V0SW5zdGFuY2UoKS5mb3JtYXQoZGVsdGEgLyAxMDAwLikKKyAgICAgICAgICAgICsgIiBzZWNvbmRzIik7CisKKyAgICAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZm9zOworCisgICAgICAgICBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgieGZpbHRlcjJzcGVjX3hmaWx0ZXIyX2RvY18xLnhtbCIpOworCisgICAgICAgICBmb3Mud3JpdGUocmVzdWx0WzBdKTsKKyAgICAgICAgIGZvcy5jbG9zZSgpOworCisgICAgICAgICBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgieGZpbHRlcjJzcGVjX3hmaWx0ZXIyX3JlZl8xLnhtbCIpOworCisgICAgICAgICBmb3Mud3JpdGUocmVzdWx0WzFdKTsKKyAgICAgICAgIGZvcy5jbG9zZSgpOworICAgICAgfQorCisgICAgICBpZiAoeGZpbHRlcjJzcGVjX3hmaWx0ZXIyXzIpIHsKKyAgICAgICAgIFN0cmluZyBpbnB1dERvYyA9ICI8RG9jdW1lbnQ+XG4iICsgIiAgICAgPFRvQmVTaWduZWQ+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgICAgPCEtLSBjb21tZW50IC0tPlxuIiArICIgICAgICAgPERhdGEgLz5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgICA8Tm90VG9CZVNpZ25lZD5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgICAgIDxSZWFsbHlUb0JlU2lnbmVkPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICAgICAgICA8IS0tIGNvbW1lbnQgLS0+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgICAgICAgIDxEYXRhIC8+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgICAgICA8L1JlYWxseVRvQmVTaWduZWQ+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgICAgPC9Ob3RUb0JlU2lnbmVkPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICA8L1RvQmVTaWduZWQ+XG4iICsgIiAgICAgPFRvQmVTaWduZWQ+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgICAgPERhdGEgLz5cbiIgKyAiICAgICAgIDxOb3RUb0JlU2lnbmVkPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICAgICAgPERhdGEgLz5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgICA8L05vdFRvQmVTaWduZWQ+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgIDwvVG9CZVNpZ25lZD5cbiIgKyAiPC9Eb2N1bWVudD4iOworCisgICAgICAgICAvL0orCisgICAgICAgICBEb2N1bWVudCBkb2MgPSBkYi5wYXJzZShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oaW5wdXREb2MuZ2V0Qnl0ZXMoKSkpOworICAgICAgICAgbG9uZyBzdGFydCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgYnl0ZVtdW10gcmVzdWx0ID0gbnVsbDsKKworICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudGVyOyBpKyspIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IFRyYW5zZm9ybVBlcmZvcm1hbmNlVGVzdGVyLnhmaWx0ZXIyc3BlY194ZmlsdGVyMl8yKGRvYyk7CisKKyAgICAgICAgICAgIGlmIChpICUgMTAgPT0gMCkgeworCisgICAgICAgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50KCIuIik7CisgICAgICAgICAgICB9CisgICAgICAgICB9CisKKyAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgICAgICBsb25nIGVuZCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgZG91YmxlIGRlbHRhID0gZW5kIC0gc3RhcnQ7CisKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKKyAgICAgICAgICAgIGNvdW50ZXIgKyAiICogeGZpbHRlcjJzcGVjX3hmaWx0ZXIyXzIgdG9vayAiCisgICAgICAgICAgICArIGphdmEudGV4dC5EZWNpbWFsRm9ybWF0LmdldEluc3RhbmNlKCkuZm9ybWF0KGRlbHRhIC8gMTAwMC4pCisgICAgICAgICAgICArICIgc2Vjb25kcyIpOworCisgICAgICAgICBGaWxlT3V0cHV0U3RyZWFtIGZvczsKKworICAgICAgICAgZm9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oInhmaWx0ZXIyc3BlY194ZmlsdGVyMl9kb2NfMi54bWwiKTsKKworICAgICAgICAgZm9zLndyaXRlKHJlc3VsdFswXSk7CisgICAgICAgICBmb3MuY2xvc2UoKTsKKworICAgICAgICAgZm9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oInhmaWx0ZXIyc3BlY194ZmlsdGVyMl9yZWZfMi54bWwiKTsKKworICAgICAgICAgZm9zLndyaXRlKHJlc3VsdFsxXSk7CisgICAgICAgICBmb3MuY2xvc2UoKTsKKyAgICAgIH0KKworICAgICAgaWYgKHhmaWx0ZXIyc3BlY194ZmlsdGVyMl8zKSB7CisgICAgICAgICBTdHJpbmcgaW5wdXREb2MgPSAiPERvY3VtZW50PlxuIiArICIgICAgIDxUb0JlU2lnbmVkPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICAgIDwhLS0gY29tbWVudCAtLT5cbiIgKyAiICAgICAgIDxEYXRhIC8+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgICAgPE5vdFRvQmVTaWduZWQ+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgICAgICA8UmVhbGx5VG9CZVNpZ25lZD5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgICAgICAgPCEtLSBjb21tZW50IC0tPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICAgICAgICA8RGF0YSAvPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICAgICAgPC9SZWFsbHlUb0JlU2lnbmVkPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICAgIDwvTm90VG9CZVNpZ25lZD5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgPC9Ub0JlU2lnbmVkPlxuIiArICIgICAgIDxUb0JlU2lnbmVkPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICAgIDxEYXRhIC8+XG4iICsgIiAgICAgICA8Tm90VG9CZVNpZ25lZD5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgICAgIDxEYXRhIC8+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgICAgPC9Ob3RUb0JlU2lnbmVkPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICA8L1RvQmVTaWduZWQ+XG4iICsgIjwvRG9jdW1lbnQ+IjsKKworICAgICAgICAgLy9KKworICAgICAgICAgRG9jdW1lbnQgZG9jID0gZGIucGFyc2UobmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGlucHV0RG9jLmdldEJ5dGVzKCkpKTsKKyAgICAgICAgIGxvbmcgc3RhcnQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgIGJ5dGVbXVtdIHJlc3VsdCA9IG51bGw7CisKKyAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnRlcjsgaSsrKSB7CisgICAgICAgICAgICByZXN1bHQgPSBUcmFuc2Zvcm1QZXJmb3JtYW5jZVRlc3Rlci54ZmlsdGVyMnNwZWNfeGZpbHRlcjJfMyhkb2MpOworCisgICAgICAgICAgICBpZiAoaSAlIDEwID09IDApIHsKKworICAgICAgICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludCgiLiIpOworICAgICAgICAgICAgfQorICAgICAgICAgfQorCisgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICAgICAgICAgbG9uZyBlbmQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgIGRvdWJsZSBkZWx0YSA9IGVuZCAtIHN0YXJ0OworCisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAgICBjb3VudGVyICsgIiAqIHhmaWx0ZXIyc3BlY194ZmlsdGVyMl8zIHRvb2sgIgorICAgICAgICAgICAgKyBqYXZhLnRleHQuRGVjaW1hbEZvcm1hdC5nZXRJbnN0YW5jZSgpLmZvcm1hdChkZWx0YSAvIDEwMDAuKQorICAgICAgICAgICAgKyAiIHNlY29uZHMiKTsKKworICAgICAgICAgRmlsZU91dHB1dFN0cmVhbSBmb3M7CisKKyAgICAgICAgIGZvcyA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKCJ4ZmlsdGVyMnNwZWNfeGZpbHRlcjJfZG9jXzMueG1sIik7CisKKyAgICAgICAgIGZvcy53cml0ZShyZXN1bHRbMF0pOworICAgICAgICAgZm9zLmNsb3NlKCk7CisKKyAgICAgICAgIGZvcyA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKCJ4ZmlsdGVyMnNwZWNfeGZpbHRlcjJfcmVmXzMueG1sIik7CisKKyAgICAgICAgIGZvcy53cml0ZShyZXN1bHRbMV0pOworICAgICAgICAgZm9zLmNsb3NlKCk7CisgICAgICB9CisKKyAgICAgIGlmICh4ZmlsdGVyMnNwZWNfYXBhY2hlZmlsdGVyXzEpIHsKKyAgICAgICAgIFN0cmluZyBpbnB1dERvYyA9ICI8RG9jdW1lbnQ+XG4iICsgIiAgICAgPFRvQmVTaWduZWQ+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgICAgPCEtLSBjb21tZW50IC0tPlxuIiArICIgICAgICAgPERhdGEgLz5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgICA8Tm90VG9CZVNpZ25lZD5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgICAgIDxSZWFsbHlUb0JlU2lnbmVkPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICAgICAgICA8IS0tIGNvbW1lbnQgLS0+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgICAgICAgIDxEYXRhIC8+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgICAgICA8L1JlYWxseVRvQmVTaWduZWQ+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgICAgPC9Ob3RUb0JlU2lnbmVkPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICA8L1RvQmVTaWduZWQ+XG4iICsgIiAgICAgPFRvQmVTaWduZWQ+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgICAgPERhdGEgLz5cbiIgKyAiICAgICAgIDxOb3RUb0JlU2lnbmVkPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICAgICAgPERhdGEgLz5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgICA8L05vdFRvQmVTaWduZWQ+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgIDwvVG9CZVNpZ25lZD5cbiIgKyAiPC9Eb2N1bWVudD4iOworCisgICAgICAgICAvL0orCisgICAgICAgICBEb2N1bWVudCBkb2MgPSBkYi5wYXJzZShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oaW5wdXREb2MuZ2V0Qnl0ZXMoKSkpOworICAgICAgICAgbG9uZyBzdGFydCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgYnl0ZVtdW10gcmVzdWx0ID0gbnVsbDsKKworICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudGVyOyBpKyspIHsKKyAgICAgICAgICAgIHJlc3VsdCA9CisgICAgICAgICAgICAgICBUcmFuc2Zvcm1QZXJmb3JtYW5jZVRlc3Rlci54ZmlsdGVyMnNwZWNfYXBhY2hlZmlsdGVyXzEoZG9jKTsKKworICAgICAgICAgICAgaWYgKGkgJSAxMCA9PSAwKSB7CisKKyAgICAgICAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnQoIi4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKworICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICAgICAgIGxvbmcgZW5kID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICBkb3VibGUgZGVsdGEgPSBlbmQgLSBzdGFydDsKKworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKAorICAgICAgICAgICAgY291bnRlciArICIgKiB4ZmlsdGVyMnNwZWNfYXBhY2hlZmlsdGVyXzEgdG9vayAiCisgICAgICAgICAgICArIGphdmEudGV4dC5EZWNpbWFsRm9ybWF0LmdldEluc3RhbmNlKCkuZm9ybWF0KGRlbHRhIC8gMTAwMC4pCisgICAgICAgICAgICArICIgc2Vjb25kcyIpOworCisgICAgICAgICBGaWxlT3V0cHV0U3RyZWFtIGZvczsKKworICAgICAgICAgZm9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oInhmaWx0ZXIyc3BlY19hcGFjaGVmaWx0ZXJfZG9jXzEueG1sIik7CisKKyAgICAgICAgIGZvcy53cml0ZShyZXN1bHRbMF0pOworICAgICAgICAgZm9zLmNsb3NlKCk7CisKKyAgICAgICAgIGZvcyA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKCJ4ZmlsdGVyMnNwZWNfYXBhY2hlZmlsdGVyX3JlZl8xLnhtbCIpOworCisgICAgICAgICBmb3Mud3JpdGUocmVzdWx0WzFdKTsKKyAgICAgICAgIGZvcy5jbG9zZSgpOworICAgICAgfQorCisgICAgICBpZiAoeGZpbHRlcjJzcGVjX2FwYWNoZWZpbHRlcl8yKSB7CisgICAgICAgICBTdHJpbmcgaW5wdXREb2MgPSAiPERvY3VtZW50PlxuIiArICIgICAgIDxUb0JlU2lnbmVkPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICAgIDwhLS0gY29tbWVudCAtLT5cbiIgKyAiICAgICAgIDxEYXRhIC8+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgICAgPE5vdFRvQmVTaWduZWQ+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgICAgICA8UmVhbGx5VG9CZVNpZ25lZD5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgICAgICAgPCEtLSBjb21tZW50IC0tPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICAgICAgICA8RGF0YSAvPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICAgICAgPC9SZWFsbHlUb0JlU2lnbmVkPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICAgIDwvTm90VG9CZVNpZ25lZD5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgPC9Ub0JlU2lnbmVkPlxuIiArICIgICAgIDxUb0JlU2lnbmVkPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICAgIDxEYXRhIC8+XG4iICsgIiAgICAgICA8Tm90VG9CZVNpZ25lZD5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgICAgIDxEYXRhIC8+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgICAgPC9Ob3RUb0JlU2lnbmVkPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICA8L1RvQmVTaWduZWQ+XG4iICsgIjwvRG9jdW1lbnQ+IjsKKworICAgICAgICAgLy9KKworICAgICAgICAgRG9jdW1lbnQgZG9jID0gZGIucGFyc2UobmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGlucHV0RG9jLmdldEJ5dGVzKCkpKTsKKyAgICAgICAgIGxvbmcgc3RhcnQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgIGJ5dGVbXVtdIHJlc3VsdCA9IG51bGw7CisKKyAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnRlcjsgaSsrKSB7CisgICAgICAgICAgICByZXN1bHQgPQorICAgICAgICAgICAgICAgVHJhbnNmb3JtUGVyZm9ybWFuY2VUZXN0ZXIueGZpbHRlcjJzcGVjX2FwYWNoZWZpbHRlcl8yKGRvYyk7CisKKyAgICAgICAgICAgIGlmIChpICUgMTAgPT0gMCkgeworCisgICAgICAgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50KCIuIik7CisgICAgICAgICAgICB9CisgICAgICAgICB9CisKKyAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgICAgICBsb25nIGVuZCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgZG91YmxlIGRlbHRhID0gZW5kIC0gc3RhcnQ7CisKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKKyAgICAgICAgICAgIGNvdW50ZXIgKyAiICogeGZpbHRlcjJzcGVjX2FwYWNoZWZpbHRlcl8yIHRvb2sgIgorICAgICAgICAgICAgKyBqYXZhLnRleHQuRGVjaW1hbEZvcm1hdC5nZXRJbnN0YW5jZSgpLmZvcm1hdChkZWx0YSAvIDEwMDAuKQorICAgICAgICAgICAgKyAiIHNlY29uZHMiKTsKKworICAgICAgICAgRmlsZU91dHB1dFN0cmVhbSBmb3M7CisKKyAgICAgICAgIGZvcyA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKCJ4ZmlsdGVyMnNwZWNfYXBhY2hlZmlsdGVyX2RvY18yLnhtbCIpOworCisgICAgICAgICBmb3Mud3JpdGUocmVzdWx0WzBdKTsKKyAgICAgICAgIGZvcy5jbG9zZSgpOworCisgICAgICAgICBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgieGZpbHRlcjJzcGVjX2FwYWNoZWZpbHRlcl9yZWZfMi54bWwiKTsKKworICAgICAgICAgZm9zLndyaXRlKHJlc3VsdFsxXSk7CisgICAgICAgICBmb3MuY2xvc2UoKTsKKyAgICAgIH0KKworICAgICAgaWYgKHhmaWx0ZXIyc3BlY19hcGFjaGVmaWx0ZXJfMykgeworICAgICAgICAgU3RyaW5nIGlucHV0RG9jID0gIjxEb2N1bWVudD5cbiIgKyAiICAgICA8VG9CZVNpZ25lZD5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgICA8IS0tIGNvbW1lbnQgLS0+XG4iICsgIiAgICAgICA8RGF0YSAvPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICAgIDxOb3RUb0JlU2lnbmVkPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICAgICAgPFJlYWxseVRvQmVTaWduZWQ+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgICAgICAgIDwhLS0gY29tbWVudCAtLT5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgICAgICAgPERhdGEgLz5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgICAgIDwvUmVhbGx5VG9CZVNpZ25lZD5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgICA8L05vdFRvQmVTaWduZWQ+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgIDwvVG9CZVNpZ25lZD5cbiIgKyAiICAgICA8VG9CZVNpZ25lZD5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgICA8RGF0YSAvPlxuIiArICIgICAgICAgPE5vdFRvQmVTaWduZWQ+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgICAgICA8RGF0YSAvPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICAgIDwvTm90VG9CZVNpZ25lZD5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgPC9Ub0JlU2lnbmVkPlxuIiArICI8L0RvY3VtZW50PiI7CisKKyAgICAgICAgIC8vSisKKyAgICAgICAgIERvY3VtZW50IGRvYyA9IGRiLnBhcnNlKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShpbnB1dERvYy5nZXRCeXRlcygpKSk7CisgICAgICAgICBsb25nIHN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICBieXRlW11bXSByZXN1bHQgPSBudWxsOworCisgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50ZXI7IGkrKykgeworICAgICAgICAgICAgcmVzdWx0ID0KKyAgICAgICAgICAgICAgIFRyYW5zZm9ybVBlcmZvcm1hbmNlVGVzdGVyLnhmaWx0ZXIyc3BlY19hcGFjaGVmaWx0ZXJfMyhkb2MpOworCisgICAgICAgICAgICBpZiAoaSAlIDEwID09IDApIHsKKworICAgICAgICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludCgiLiIpOworICAgICAgICAgICAgfQorICAgICAgICAgfQorCisgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICAgICAgICAgbG9uZyBlbmQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgIGRvdWJsZSBkZWx0YSA9IGVuZCAtIHN0YXJ0OworCisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAgICBjb3VudGVyICsgIiAqIHhmaWx0ZXIyc3BlY19hcGFjaGVmaWx0ZXJfMyB0b29rICIKKyAgICAgICAgICAgICsgamF2YS50ZXh0LkRlY2ltYWxGb3JtYXQuZ2V0SW5zdGFuY2UoKS5mb3JtYXQoZGVsdGEgLyAxMDAwLikKKyAgICAgICAgICAgICsgIiBzZWNvbmRzIik7CisKKyAgICAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZm9zOworCisgICAgICAgICBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgieGZpbHRlcjJzcGVjX2FwYWNoZWZpbHRlcl9kb2NfMy54bWwiKTsKKworICAgICAgICAgZm9zLndyaXRlKHJlc3VsdFswXSk7CisgICAgICAgICBmb3MuY2xvc2UoKTsKKworICAgICAgICAgZm9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oInhmaWx0ZXIyc3BlY19hcGFjaGVmaWx0ZXJfcmVmXzMueG1sIik7CisKKyAgICAgICAgIGZvcy53cml0ZShyZXN1bHRbMV0pOworICAgICAgICAgZm9zLmNsb3NlKCk7CisgICAgICB9CisKKyAgICAgIGlmIChhcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyXzdfb3B0aW1hbCkgeworICAgICAgICAgU3RyaW5nIGlucHV0RG9jID0KKyAgICAgICAgICAgICI8QSB4bWxuczpmb289XCJodHRwOi8vZm9vLmJhci9cIj5cbjxVPlxuPFU+XG48VT5cbjxVPlxuPFU+XG48QiBmb286YXR0cj1cImF0dHJcIj5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Qz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48L1U+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPC9VPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9DPlxuPC9CPlxuPEQ+XG48VS8+XG48L0Q+XG48VT5cbjxFPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48L0U+XG48VT5cbjxGPlxuPEc+XG48SC8+XG48Rz5cbjxILz5cbjwvRz5cbjwvRz5cbjwvRj5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvQT5cbiI7CisKKyAgICAgICAgIC8vSisKKyAgICAgICAgIERvY3VtZW50IGRvYyA9IGRiLnBhcnNlKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShpbnB1dERvYy5nZXRCeXRlcygpKSk7CisgICAgICAgICBsb25nIHN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICBieXRlW11bXSByZXN1bHQgPSBudWxsOworCisgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50ZXI7IGkrKykgeworICAgICAgICAgICAgcmVzdWx0ID0KKyAgICAgICAgICAgICAgIFRyYW5zZm9ybVBlcmZvcm1hbmNlVGVzdGVyCisgICAgICAgICAgICAgICAgICAuYXBhY2hlc2FtcGxlX2FwYWNoZWZpbHRlcl83X29wdGltYWwoZG9jKTsKKworICAgICAgICAgICAgaWYgKGkgJSAxMCA9PSAwKSB7CisKKyAgICAgICAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnQoIi4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKworICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICAgICAgIGxvbmcgZW5kID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICBkb3VibGUgZGVsdGEgPSBlbmQgLSBzdGFydDsKKworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKAorICAgICAgICAgICAgY291bnRlciArICIgKiBhcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyXzdfb3B0aW1hbCB0b29rICIKKyAgICAgICAgICAgICsgamF2YS50ZXh0LkRlY2ltYWxGb3JtYXQuZ2V0SW5zdGFuY2UoKS5mb3JtYXQoZGVsdGEgLyAxMDAwLikKKyAgICAgICAgICAgICsgIiBzZWNvbmRzIik7CisKKyAgICAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZm9zOworCisgICAgICAgICBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgKKyAgICAgICAgICAgICJhcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyX2RvY183X29wdGltYWwueG1sIik7CisKKyAgICAgICAgIGZvcy53cml0ZShyZXN1bHRbMF0pOworICAgICAgICAgZm9zLmNsb3NlKCk7CisKKyAgICAgICAgIGZvcyA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKAorICAgICAgICAgICAgImFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfcmVmXzdfb3B0aW1hbC54bWwiKTsKKworICAgICAgICAgZm9zLndyaXRlKHJlc3VsdFsxXSk7CisgICAgICAgICBmb3MuY2xvc2UoKTsKKyAgICAgIH0KKworICAgICAgaWYgKGFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfMSkgeworICAgICAgICAgU3RyaW5nIGlucHV0RG9jID0KKyAgICAgICAgICAgICI8QSB4bWxuczpmb289XCJodHRwOi8vZm9vLmJhci9cIj5cbjxVPlxuPFU+XG48VT5cbjxVPlxuPFU+XG48QiBmb286YXR0cj1cImF0dHJcIj5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Qz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48L1U+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPC9VPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9DPlxuPC9CPlxuPEQ+XG48VS8+XG48L0Q+XG48VT5cbjxFPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48L0U+XG48VT5cbjxGPlxuPEc+XG48SC8+XG48Rz5cbjxILz5cbjwvRz5cbjwvRz5cbjwvRj5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvQT5cbiI7CisKKyAgICAgICAgIC8vSisKKyAgICAgICAgIERvY3VtZW50IGRvYyA9IGRiLnBhcnNlKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShpbnB1dERvYy5nZXRCeXRlcygpKSk7CisgICAgICAgICBsb25nIHN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICBieXRlW11bXSByZXN1bHQgPSBudWxsOworCisgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50ZXI7IGkrKykgeworICAgICAgICAgICAgcmVzdWx0ID0KKyAgICAgICAgICAgICAgIFRyYW5zZm9ybVBlcmZvcm1hbmNlVGVzdGVyLmFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfMShkb2MpOworCisgICAgICAgICAgICBpZiAoaSAlIDEwID09IDApIHsKKworICAgICAgICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludCgiLiIpOworICAgICAgICAgICAgfQorICAgICAgICAgfQorCisgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICAgICAgICAgbG9uZyBlbmQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgIGRvdWJsZSBkZWx0YSA9IGVuZCAtIHN0YXJ0OworCisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAgICBjb3VudGVyICsgIiAqIGFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfMSB0b29rICIKKyAgICAgICAgICAgICsgamF2YS50ZXh0LkRlY2ltYWxGb3JtYXQuZ2V0SW5zdGFuY2UoKS5mb3JtYXQoZGVsdGEgLyAxMDAwLikKKyAgICAgICAgICAgICsgIiBzZWNvbmRzIik7CisKKyAgICAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZm9zOworCisgICAgICAgICBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgiYXBhY2hlc2FtcGxlX2FwYWNoZWZpbHRlcl9kb2NfMS54bWwiKTsKKworICAgICAgICAgZm9zLndyaXRlKHJlc3VsdFswXSk7CisgICAgICAgICBmb3MuY2xvc2UoKTsKKworICAgICAgICAgZm9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oImFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfcmVmXzEueG1sIik7CisKKyAgICAgICAgIGZvcy53cml0ZShyZXN1bHRbMV0pOworICAgICAgICAgZm9zLmNsb3NlKCk7CisgICAgICB9CisKKyAgICAgIGlmIChhcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyXzIpIHsKKyAgICAgICAgIFN0cmluZyBpbnB1dERvYyA9CisgICAgICAgICAgICAiPEEgeG1sbnM6Zm9vPVwiaHR0cDovL2Zvby5iYXIvXCI+XG48VT5cbjxVPlxuPFU+XG48VT5cbjxVPlxuPEIgZm9vOmF0dHI9XCJhdHRyXCI+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPEM+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48L1U+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPC9VPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvQz5cbjwvQj5cbjxEPlxuPFUvPlxuPC9EPlxuPFU+XG48RT5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPC9FPlxuPFU+XG48Rj5cbjxHPlxuPEgvPlxuPEc+XG48SC8+XG48L0c+XG48L0c+XG48L0Y+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L0E+XG4iOworCisgICAgICAgICAvL0orCisgICAgICAgICBEb2N1bWVudCBkb2MgPSBkYi5wYXJzZShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oaW5wdXREb2MuZ2V0Qnl0ZXMoKSkpOworICAgICAgICAgbG9uZyBzdGFydCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgYnl0ZVtdW10gcmVzdWx0ID0gbnVsbDsKKworICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudGVyOyBpKyspIHsKKyAgICAgICAgICAgIHJlc3VsdCA9CisgICAgICAgICAgICAgICBUcmFuc2Zvcm1QZXJmb3JtYW5jZVRlc3Rlci5hcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyXzIoZG9jKTsKKworICAgICAgICAgICAgaWYgKGkgJSAxMCA9PSAwKSB7CisKKyAgICAgICAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnQoIi4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKworICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICAgICAgIGxvbmcgZW5kID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICBkb3VibGUgZGVsdGEgPSBlbmQgLSBzdGFydDsKKworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKAorICAgICAgICAgICAgY291bnRlciArICIgKiBhcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyXzIgdG9vayAiCisgICAgICAgICAgICArIGphdmEudGV4dC5EZWNpbWFsRm9ybWF0LmdldEluc3RhbmNlKCkuZm9ybWF0KGRlbHRhIC8gMTAwMC4pCisgICAgICAgICAgICArICIgc2Vjb25kcyIpOworCisgICAgICAgICBGaWxlT3V0cHV0U3RyZWFtIGZvczsKKworICAgICAgICAgZm9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oImFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfZG9jXzIueG1sIik7CisKKyAgICAgICAgIGZvcy53cml0ZShyZXN1bHRbMF0pOworICAgICAgICAgZm9zLmNsb3NlKCk7CisKKyAgICAgICAgIGZvcyA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKCJhcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyX3JlZl8yLnhtbCIpOworCisgICAgICAgICBmb3Mud3JpdGUocmVzdWx0WzFdKTsKKyAgICAgICAgIGZvcy5jbG9zZSgpOworICAgICAgfQorCisgICAgICBpZiAoYXBhY2hlc2FtcGxlX2FwYWNoZWZpbHRlcl8zKSB7CisgICAgICAgICBTdHJpbmcgaW5wdXREb2MgPQorICAgICAgICAgICAgIjxBIHhtbG5zOmZvbz1cImh0dHA6Ly9mb28uYmFyL1wiPlxuPFU+XG48VT5cbjxVPlxuPFU+XG48VT5cbjxCIGZvbzphdHRyPVwiYXR0clwiPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxDPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPC9VPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48L1U+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L0M+XG48L0I+XG48RD5cbjxVLz5cbjwvRD5cbjxVPlxuPEU+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjwvRT5cbjxVPlxuPEY+XG48Rz5cbjxILz5cbjxHPlxuPEgvPlxuPC9HPlxuPC9HPlxuPC9GPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9BPlxuIjsKKworICAgICAgICAgLy9KKworICAgICAgICAgRG9jdW1lbnQgZG9jID0gZGIucGFyc2UobmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGlucHV0RG9jLmdldEJ5dGVzKCkpKTsKKyAgICAgICAgIGxvbmcgc3RhcnQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgIGJ5dGVbXVtdIHJlc3VsdCA9IG51bGw7CisKKyAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnRlcjsgaSsrKSB7CisgICAgICAgICAgICByZXN1bHQgPQorICAgICAgICAgICAgICAgVHJhbnNmb3JtUGVyZm9ybWFuY2VUZXN0ZXIuYXBhY2hlc2FtcGxlX2FwYWNoZWZpbHRlcl8zKGRvYyk7CisKKyAgICAgICAgICAgIGlmIChpICUgMTAgPT0gMCkgeworCisgICAgICAgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50KCIuIik7CisgICAgICAgICAgICB9CisgICAgICAgICB9CisKKyAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgICAgICBsb25nIGVuZCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgZG91YmxlIGRlbHRhID0gZW5kIC0gc3RhcnQ7CisKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKKyAgICAgICAgICAgIGNvdW50ZXIgKyAiICogYXBhY2hlc2FtcGxlX2FwYWNoZWZpbHRlcl8zIHRvb2sgIgorICAgICAgICAgICAgKyBqYXZhLnRleHQuRGVjaW1hbEZvcm1hdC5nZXRJbnN0YW5jZSgpLmZvcm1hdChkZWx0YSAvIDEwMDAuKQorICAgICAgICAgICAgKyAiIHNlY29uZHMiKTsKKworICAgICAgICAgRmlsZU91dHB1dFN0cmVhbSBmb3M7CisKKyAgICAgICAgIGZvcyA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKCJhcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyX2RvY18zLnhtbCIpOworCisgICAgICAgICBmb3Mud3JpdGUocmVzdWx0WzBdKTsKKyAgICAgICAgIGZvcy5jbG9zZSgpOworCisgICAgICAgICBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgiYXBhY2hlc2FtcGxlX2FwYWNoZWZpbHRlcl9yZWZfMy54bWwiKTsKKworICAgICAgICAgZm9zLndyaXRlKHJlc3VsdFsxXSk7CisgICAgICAgICBmb3MuY2xvc2UoKTsKKyAgICAgIH0KKworICAgICAgaWYgKGFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfNCkgeworICAgICAgICAgU3RyaW5nIGlucHV0RG9jID0KKyAgICAgICAgICAgICI8QSB4bWxuczpmb289XCJodHRwOi8vZm9vLmJhci9cIj5cbjxVPlxuPFU+XG48VT5cbjxVPlxuPFU+XG48QiBmb286YXR0cj1cImF0dHJcIj5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Qz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48L1U+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPC9VPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9DPlxuPC9CPlxuPEQ+XG48VS8+XG48L0Q+XG48VT5cbjxFPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48L0U+XG48VT5cbjxGPlxuPEc+XG48SC8+XG48Rz5cbjxILz5cbjwvRz5cbjwvRz5cbjwvRj5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvQT5cbiI7CisKKyAgICAgICAgIC8vSisKKyAgICAgICAgIERvY3VtZW50IGRvYyA9IGRiLnBhcnNlKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShpbnB1dERvYy5nZXRCeXRlcygpKSk7CisgICAgICAgICBsb25nIHN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICBieXRlW11bXSByZXN1bHQgPSBudWxsOworCisgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50ZXI7IGkrKykgeworICAgICAgICAgICAgcmVzdWx0ID0KKyAgICAgICAgICAgICAgIFRyYW5zZm9ybVBlcmZvcm1hbmNlVGVzdGVyLmFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfNChkb2MpOworCisgICAgICAgICAgICBpZiAoaSAlIDEwID09IDApIHsKKworICAgICAgICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludCgiLiIpOworICAgICAgICAgICAgfQorICAgICAgICAgfQorCisgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICAgICAgICAgbG9uZyBlbmQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgIGRvdWJsZSBkZWx0YSA9IGVuZCAtIHN0YXJ0OworCisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAgICBjb3VudGVyICsgIiAqIGFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfNCB0b29rICIKKyAgICAgICAgICAgICsgamF2YS50ZXh0LkRlY2ltYWxGb3JtYXQuZ2V0SW5zdGFuY2UoKS5mb3JtYXQoZGVsdGEgLyAxMDAwLikKKyAgICAgICAgICAgICsgIiBzZWNvbmRzIik7CisKKyAgICAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZm9zOworCisgICAgICAgICBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgiYXBhY2hlc2FtcGxlX2FwYWNoZWZpbHRlcl9kb2NfNC54bWwiKTsKKworICAgICAgICAgZm9zLndyaXRlKHJlc3VsdFswXSk7CisgICAgICAgICBmb3MuY2xvc2UoKTsKKworICAgICAgICAgZm9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oImFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfcmVmXzQueG1sIik7CisKKyAgICAgICAgIGZvcy53cml0ZShyZXN1bHRbMV0pOworICAgICAgICAgZm9zLmNsb3NlKCk7CisgICAgICB9CisKKyAgICAgIGlmIChhcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyXzUpIHsKKyAgICAgICAgIFN0cmluZyBpbnB1dERvYyA9CisgICAgICAgICAgICAiPEEgeG1sbnM6Zm9vPVwiaHR0cDovL2Zvby5iYXIvXCI+XG48VT5cbjxVPlxuPFU+XG48VT5cbjxVPlxuPEIgZm9vOmF0dHI9XCJhdHRyXCI+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPEM+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48L1U+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPC9VPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvQz5cbjwvQj5cbjxEPlxuPFUvPlxuPC9EPlxuPFU+XG48RT5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPC9FPlxuPFU+XG48Rj5cbjxHPlxuPEgvPlxuPEc+XG48SC8+XG48L0c+XG48L0c+XG48L0Y+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L0E+XG4iOworCisgICAgICAgICAvL0orCisgICAgICAgICBEb2N1bWVudCBkb2MgPSBkYi5wYXJzZShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oaW5wdXREb2MuZ2V0Qnl0ZXMoKSkpOworICAgICAgICAgbG9uZyBzdGFydCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgYnl0ZVtdW10gcmVzdWx0ID0gbnVsbDsKKworICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudGVyOyBpKyspIHsKKyAgICAgICAgICAgIHJlc3VsdCA9CisgICAgICAgICAgICAgICBUcmFuc2Zvcm1QZXJmb3JtYW5jZVRlc3Rlci5hcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyXzUoZG9jKTsKKworICAgICAgICAgICAgaWYgKGkgJSAxMCA9PSAwKSB7CisKKyAgICAgICAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnQoIi4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKworICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICAgICAgIGxvbmcgZW5kID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICBkb3VibGUgZGVsdGEgPSBlbmQgLSBzdGFydDsKKworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKAorICAgICAgICAgICAgY291bnRlciArICIgKiBhcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyXzUgdG9vayAiCisgICAgICAgICAgICArIGphdmEudGV4dC5EZWNpbWFsRm9ybWF0LmdldEluc3RhbmNlKCkuZm9ybWF0KGRlbHRhIC8gMTAwMC4pCisgICAgICAgICAgICArICIgc2Vjb25kcyIpOworCisgICAgICAgICBGaWxlT3V0cHV0U3RyZWFtIGZvczsKKworICAgICAgICAgZm9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oImFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfZG9jXzUueG1sIik7CisKKyAgICAgICAgIGZvcy53cml0ZShyZXN1bHRbMF0pOworICAgICAgICAgZm9zLmNsb3NlKCk7CisKKyAgICAgICAgIGZvcyA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKCJhcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyX3JlZl81LnhtbCIpOworCisgICAgICAgICBmb3Mud3JpdGUocmVzdWx0WzFdKTsKKyAgICAgICAgIGZvcy5jbG9zZSgpOworICAgICAgfQorCisgICAgICBpZiAoYXBhY2hlc2FtcGxlX2FwYWNoZWZpbHRlcl82KSB7CisgICAgICAgICBTdHJpbmcgaW5wdXREb2MgPQorICAgICAgICAgICAgIjxBIHhtbG5zOmZvbz1cImh0dHA6Ly9mb28uYmFyL1wiPlxuPFU+XG48VT5cbjxVPlxuPFU+XG48VT5cbjxCIGZvbzphdHRyPVwiYXR0clwiPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxDPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPC9VPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48L1U+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L0M+XG48L0I+XG48RD5cbjxVLz5cbjwvRD5cbjxVPlxuPEU+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjwvRT5cbjxVPlxuPEY+XG48Rz5cbjxILz5cbjxHPlxuPEgvPlxuPC9HPlxuPC9HPlxuPC9GPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9BPlxuIjsKKworICAgICAgICAgLy9KKworICAgICAgICAgRG9jdW1lbnQgZG9jID0gZGIucGFyc2UobmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGlucHV0RG9jLmdldEJ5dGVzKCkpKTsKKyAgICAgICAgIGxvbmcgc3RhcnQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgIGJ5dGVbXVtdIHJlc3VsdCA9IG51bGw7CisKKyAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnRlcjsgaSsrKSB7CisgICAgICAgICAgICByZXN1bHQgPQorICAgICAgICAgICAgICAgVHJhbnNmb3JtUGVyZm9ybWFuY2VUZXN0ZXIuYXBhY2hlc2FtcGxlX2FwYWNoZWZpbHRlcl82KGRvYyk7CisKKyAgICAgICAgICAgIGlmIChpICUgMTAgPT0gMCkgeworCisgICAgICAgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50KCIuIik7CisgICAgICAgICAgICB9CisgICAgICAgICB9CisKKyAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgICAgICBsb25nIGVuZCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgZG91YmxlIGRlbHRhID0gZW5kIC0gc3RhcnQ7CisKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKKyAgICAgICAgICAgIGNvdW50ZXIgKyAiICogYXBhY2hlc2FtcGxlX2FwYWNoZWZpbHRlcl82IHRvb2sgIgorICAgICAgICAgICAgKyBqYXZhLnRleHQuRGVjaW1hbEZvcm1hdC5nZXRJbnN0YW5jZSgpLmZvcm1hdChkZWx0YSAvIDEwMDAuKQorICAgICAgICAgICAgKyAiIHNlY29uZHMiKTsKKworICAgICAgICAgRmlsZU91dHB1dFN0cmVhbSBmb3M7CisKKyAgICAgICAgIGZvcyA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKCJhcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyX2RvY182LnhtbCIpOworCisgICAgICAgICBmb3Mud3JpdGUocmVzdWx0WzBdKTsKKyAgICAgICAgIGZvcy5jbG9zZSgpOworCisgICAgICAgICBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgiYXBhY2hlc2FtcGxlX2FwYWNoZWZpbHRlcl9yZWZfNi54bWwiKTsKKworICAgICAgICAgZm9zLndyaXRlKHJlc3VsdFsxXSk7CisgICAgICAgICBmb3MuY2xvc2UoKTsKKyAgICAgIH0KKworICAgICAgaWYgKGFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfNykgeworICAgICAgICAgU3RyaW5nIGlucHV0RG9jID0KKyAgICAgICAgICAgICI8QSB4bWxuczpmb289XCJodHRwOi8vZm9vLmJhci9cIj5cbjxVPlxuPFU+XG48VT5cbjxVPlxuPFU+XG48QiBmb286YXR0cj1cImF0dHJcIj5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Qz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48L1U+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPC9VPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9DPlxuPC9CPlxuPEQ+XG48VS8+XG48L0Q+XG48VT5cbjxFPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48L0U+XG48VT5cbjxGPlxuPEc+XG48SC8+XG48Rz5cbjxILz5cbjwvRz5cbjwvRz5cbjwvRj5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvQT5cbiI7CisKKyAgICAgICAgIC8vSisKKyAgICAgICAgIERvY3VtZW50IGRvYyA9IGRiLnBhcnNlKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShpbnB1dERvYy5nZXRCeXRlcygpKSk7CisgICAgICAgICBsb25nIHN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICBieXRlW11bXSByZXN1bHQgPSBudWxsOworCisgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50ZXI7IGkrKykgeworICAgICAgICAgICAgcmVzdWx0ID0KKyAgICAgICAgICAgICAgIFRyYW5zZm9ybVBlcmZvcm1hbmNlVGVzdGVyLmFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfNyhkb2MpOworCisgICAgICAgICAgICBpZiAoaSAlIDEwID09IDApIHsKKworICAgICAgICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludCgiLiIpOworICAgICAgICAgICAgfQorICAgICAgICAgfQorCisgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICAgICAgICAgbG9uZyBlbmQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgIGRvdWJsZSBkZWx0YSA9IGVuZCAtIHN0YXJ0OworCisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAgICBjb3VudGVyICsgIiAqIGFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfNyB0b29rICIKKyAgICAgICAgICAgICsgamF2YS50ZXh0LkRlY2ltYWxGb3JtYXQuZ2V0SW5zdGFuY2UoKS5mb3JtYXQoZGVsdGEgLyAxMDAwLikKKyAgICAgICAgICAgICsgIiBzZWNvbmRzIik7CisKKyAgICAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZm9zOworCisgICAgICAgICBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgiYXBhY2hlc2FtcGxlX2FwYWNoZWZpbHRlcl9kb2NfNy54bWwiKTsKKworICAgICAgICAgZm9zLndyaXRlKHJlc3VsdFswXSk7CisgICAgICAgICBmb3MuY2xvc2UoKTsKKworICAgICAgICAgZm9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oImFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfcmVmXzcueG1sIik7CisKKyAgICAgICAgIGZvcy53cml0ZShyZXN1bHRbMV0pOworICAgICAgICAgZm9zLmNsb3NlKCk7CisgICAgICB9CisKKyAgICAgIGlmIChhcGFjaGVzYW1wbGVfeGZpbHRlcjJfMSkgeworICAgICAgICAgU3RyaW5nIGlucHV0RG9jID0KKyAgICAgICAgICAgICI8QSB4bWxuczpmb289XCJodHRwOi8vZm9vLmJhci9cIj5cbjxVPlxuPFU+XG48VT5cbjxVPlxuPFU+XG48QiBmb286YXR0cj1cImF0dHJcIj5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Qz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48L1U+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPC9VPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9DPlxuPC9CPlxuPEQ+XG48VS8+XG48L0Q+XG48VT5cbjxFPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48L0U+XG48VT5cbjxGPlxuPEc+XG48SC8+XG48Rz5cbjxILz5cbjwvRz5cbjwvRz5cbjwvRj5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvQT5cbiI7CisKKyAgICAgICAgIC8vSisKKyAgICAgICAgIERvY3VtZW50IGRvYyA9IGRiLnBhcnNlKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShpbnB1dERvYy5nZXRCeXRlcygpKSk7CisgICAgICAgICBsb25nIHN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICBieXRlW11bXSByZXN1bHQgPSBudWxsOworCisgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50ZXI7IGkrKykgeworICAgICAgICAgICAgcmVzdWx0ID0gVHJhbnNmb3JtUGVyZm9ybWFuY2VUZXN0ZXIuYXBhY2hlc2FtcGxlX3hmaWx0ZXIyXzEoZG9jKTsKKworICAgICAgICAgICAgaWYgKGkgJSAxMCA9PSAwKSB7CisKKyAgICAgICAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnQoIi4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKworICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICAgICAgIGxvbmcgZW5kID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICBkb3VibGUgZGVsdGEgPSBlbmQgLSBzdGFydDsKKworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKAorICAgICAgICAgICAgY291bnRlciArICIgKiBhcGFjaGVzYW1wbGVfeGZpbHRlcjJfMSB0b29rICIKKyAgICAgICAgICAgICsgamF2YS50ZXh0LkRlY2ltYWxGb3JtYXQuZ2V0SW5zdGFuY2UoKS5mb3JtYXQoZGVsdGEgLyAxMDAwLikKKyAgICAgICAgICAgICsgIiBzZWNvbmRzIik7CisKKyAgICAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZm9zOworCisgICAgICAgICBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgiYXBhY2hlc2FtcGxlX3hmaWx0ZXIyX2RvY18xLnhtbCIpOworCisgICAgICAgICBmb3Mud3JpdGUocmVzdWx0WzBdKTsKKyAgICAgICAgIGZvcy5jbG9zZSgpOworCisgICAgICAgICBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgiYXBhY2hlc2FtcGxlX3hmaWx0ZXIyX3JlZl8xLnhtbCIpOworCisgICAgICAgICBmb3Mud3JpdGUocmVzdWx0WzFdKTsKKyAgICAgICAgIGZvcy5jbG9zZSgpOworICAgICAgfQorCisgICAgICBpZiAoYXBhY2hlc2FtcGxlX3hmaWx0ZXIyXzIpIHsKKyAgICAgICAgIFN0cmluZyBpbnB1dERvYyA9CisgICAgICAgICAgICAiPEEgeG1sbnM6Zm9vPVwiaHR0cDovL2Zvby5iYXIvXCI+XG48VT5cbjxVPlxuPFU+XG48VT5cbjxVPlxuPEIgZm9vOmF0dHI9XCJhdHRyXCI+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPEM+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48L1U+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPC9VPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvQz5cbjwvQj5cbjxEPlxuPFUvPlxuPC9EPlxuPFU+XG48RT5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPC9FPlxuPFU+XG48Rj5cbjxHPlxuPEgvPlxuPEc+XG48SC8+XG48L0c+XG48L0c+XG48L0Y+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L0E+XG4iOworCisgICAgICAgICAvL0orCisgICAgICAgICBEb2N1bWVudCBkb2MgPSBkYi5wYXJzZShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oaW5wdXREb2MuZ2V0Qnl0ZXMoKSkpOworICAgICAgICAgbG9uZyBzdGFydCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgYnl0ZVtdW10gcmVzdWx0ID0gbnVsbDsKKworICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudGVyOyBpKyspIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IFRyYW5zZm9ybVBlcmZvcm1hbmNlVGVzdGVyLmFwYWNoZXNhbXBsZV94ZmlsdGVyMl8yKGRvYyk7CisKKyAgICAgICAgICAgIGlmIChpICUgMTAgPT0gMCkgeworCisgICAgICAgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50KCIuIik7CisgICAgICAgICAgICB9CisgICAgICAgICB9CisKKyAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgICAgICBsb25nIGVuZCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgZG91YmxlIGRlbHRhID0gZW5kIC0gc3RhcnQ7CisKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKKyAgICAgICAgICAgIGNvdW50ZXIgKyAiICogYXBhY2hlc2FtcGxlX3hmaWx0ZXIyXzIgdG9vayAiCisgICAgICAgICAgICArIGphdmEudGV4dC5EZWNpbWFsRm9ybWF0LmdldEluc3RhbmNlKCkuZm9ybWF0KGRlbHRhIC8gMTAwMC4pCisgICAgICAgICAgICArICIgc2Vjb25kcyIpOworCisgICAgICAgICBGaWxlT3V0cHV0U3RyZWFtIGZvczsKKworICAgICAgICAgZm9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oImFwYWNoZXNhbXBsZV94ZmlsdGVyMl9kb2NfMi54bWwiKTsKKworICAgICAgICAgZm9zLndyaXRlKHJlc3VsdFswXSk7CisgICAgICAgICBmb3MuY2xvc2UoKTsKKworICAgICAgICAgZm9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oImFwYWNoZXNhbXBsZV94ZmlsdGVyMl9yZWZfMi54bWwiKTsKKworICAgICAgICAgZm9zLndyaXRlKHJlc3VsdFsxXSk7CisgICAgICAgICBmb3MuY2xvc2UoKTsKKyAgICAgIH0KKworICAgICAgaWYgKGFwYWNoZXNhbXBsZV94ZmlsdGVyMl8zKSB7CisgICAgICAgICBTdHJpbmcgaW5wdXREb2MgPQorICAgICAgICAgICAgIjxBIHhtbG5zOmZvbz1cImh0dHA6Ly9mb28uYmFyL1wiPlxuPFU+XG48VT5cbjxVPlxuPFU+XG48VT5cbjxCIGZvbzphdHRyPVwiYXR0clwiPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxDPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPC9VPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48L1U+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L0M+XG48L0I+XG48RD5cbjxVLz5cbjwvRD5cbjxVPlxuPEU+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjwvRT5cbjxVPlxuPEY+XG48Rz5cbjxILz5cbjxHPlxuPEgvPlxuPC9HPlxuPC9HPlxuPC9GPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9BPlxuIjsKKworICAgICAgICAgLy9KKworICAgICAgICAgRG9jdW1lbnQgZG9jID0gZGIucGFyc2UobmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGlucHV0RG9jLmdldEJ5dGVzKCkpKTsKKyAgICAgICAgIGxvbmcgc3RhcnQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgIGJ5dGVbXVtdIHJlc3VsdCA9IG51bGw7CisKKyAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnRlcjsgaSsrKSB7CisgICAgICAgICAgICByZXN1bHQgPSBUcmFuc2Zvcm1QZXJmb3JtYW5jZVRlc3Rlci5hcGFjaGVzYW1wbGVfeGZpbHRlcjJfMyhkb2MpOworCisgICAgICAgICAgICBpZiAoaSAlIDEwID09IDApIHsKKworICAgICAgICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludCgiLiIpOworICAgICAgICAgICAgfQorICAgICAgICAgfQorCisgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICAgICAgICAgbG9uZyBlbmQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgIGRvdWJsZSBkZWx0YSA9IGVuZCAtIHN0YXJ0OworCisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAgICBjb3VudGVyICsgIiAqIGFwYWNoZXNhbXBsZV94ZmlsdGVyMl8zIHRvb2sgIgorICAgICAgICAgICAgKyBqYXZhLnRleHQuRGVjaW1hbEZvcm1hdC5nZXRJbnN0YW5jZSgpLmZvcm1hdChkZWx0YSAvIDEwMDAuKQorICAgICAgICAgICAgKyAiIHNlY29uZHMiKTsKKworICAgICAgICAgRmlsZU91dHB1dFN0cmVhbSBmb3M7CisKKyAgICAgICAgIGZvcyA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKCJhcGFjaGVzYW1wbGVfeGZpbHRlcjJfZG9jXzMueG1sIik7CisKKyAgICAgICAgIGZvcy53cml0ZShyZXN1bHRbMF0pOworICAgICAgICAgZm9zLmNsb3NlKCk7CisKKyAgICAgICAgIGZvcyA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKCJhcGFjaGVzYW1wbGVfeGZpbHRlcjJfcmVmXzMueG1sIik7CisKKyAgICAgICAgIGZvcy53cml0ZShyZXN1bHRbMV0pOworICAgICAgICAgZm9zLmNsb3NlKCk7CisgICAgICB9CisKKyAgICAgIGlmIChhcGFjaGVzYW1wbGVfeGZpbHRlcjJfNCkgeworICAgICAgICAgU3RyaW5nIGlucHV0RG9jID0KKyAgICAgICAgICAgICI8QSB4bWxuczpmb289XCJodHRwOi8vZm9vLmJhci9cIj5cbjxVPlxuPFU+XG48VT5cbjxVPlxuPFU+XG48QiBmb286YXR0cj1cImF0dHJcIj5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Qz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48L1U+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPC9VPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9DPlxuPC9CPlxuPEQ+XG48VS8+XG48L0Q+XG48VT5cbjxFPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48L0U+XG48VT5cbjxGPlxuPEc+XG48SC8+XG48Rz5cbjxILz5cbjwvRz5cbjwvRz5cbjwvRj5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvQT5cbiI7CisKKyAgICAgICAgIC8vSisKKyAgICAgICAgIERvY3VtZW50IGRvYyA9IGRiLnBhcnNlKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShpbnB1dERvYy5nZXRCeXRlcygpKSk7CisgICAgICAgICBsb25nIHN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICBieXRlW11bXSByZXN1bHQgPSBudWxsOworCisgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50ZXI7IGkrKykgeworICAgICAgICAgICAgcmVzdWx0ID0gVHJhbnNmb3JtUGVyZm9ybWFuY2VUZXN0ZXIuYXBhY2hlc2FtcGxlX3hmaWx0ZXIyXzQoZG9jKTsKKworICAgICAgICAgICAgaWYgKGkgJSAxMCA9PSAwKSB7CisKKyAgICAgICAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnQoIi4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKworICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICAgICAgIGxvbmcgZW5kID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICBkb3VibGUgZGVsdGEgPSBlbmQgLSBzdGFydDsKKworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKAorICAgICAgICAgICAgY291bnRlciArICIgKiBhcGFjaGVzYW1wbGVfeGZpbHRlcjJfNCB0b29rICIKKyAgICAgICAgICAgICsgamF2YS50ZXh0LkRlY2ltYWxGb3JtYXQuZ2V0SW5zdGFuY2UoKS5mb3JtYXQoZGVsdGEgLyAxMDAwLikKKyAgICAgICAgICAgICsgIiBzZWNvbmRzIik7CisKKyAgICAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZm9zOworCisgICAgICAgICBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgiYXBhY2hlc2FtcGxlX3hmaWx0ZXIyX2RvY180LnhtbCIpOworCisgICAgICAgICBmb3Mud3JpdGUocmVzdWx0WzBdKTsKKyAgICAgICAgIGZvcy5jbG9zZSgpOworCisgICAgICAgICBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgiYXBhY2hlc2FtcGxlX3hmaWx0ZXIyX3JlZl80LnhtbCIpOworCisgICAgICAgICBmb3Mud3JpdGUocmVzdWx0WzFdKTsKKyAgICAgICAgIGZvcy5jbG9zZSgpOworICAgICAgfQorCisgICAgICBpZiAoYXBhY2hlc2FtcGxlX3hmaWx0ZXIyXzUpIHsKKyAgICAgICAgIFN0cmluZyBpbnB1dERvYyA9CisgICAgICAgICAgICAiPEEgeG1sbnM6Zm9vPVwiaHR0cDovL2Zvby5iYXIvXCI+XG48VT5cbjxVPlxuPFU+XG48VT5cbjxVPlxuPEIgZm9vOmF0dHI9XCJhdHRyXCI+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPEM+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48L1U+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPC9VPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvQz5cbjwvQj5cbjxEPlxuPFUvPlxuPC9EPlxuPFU+XG48RT5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPC9FPlxuPFU+XG48Rj5cbjxHPlxuPEgvPlxuPEc+XG48SC8+XG48L0c+XG48L0c+XG48L0Y+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L0E+XG4iOworCisgICAgICAgICAvL0orCisgICAgICAgICBEb2N1bWVudCBkb2MgPSBkYi5wYXJzZShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oaW5wdXREb2MuZ2V0Qnl0ZXMoKSkpOworICAgICAgICAgbG9uZyBzdGFydCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgYnl0ZVtdW10gcmVzdWx0ID0gbnVsbDsKKworICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudGVyOyBpKyspIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IFRyYW5zZm9ybVBlcmZvcm1hbmNlVGVzdGVyLmFwYWNoZXNhbXBsZV94ZmlsdGVyMl81KGRvYyk7CisKKyAgICAgICAgICAgIGlmIChpICUgMTAgPT0gMCkgeworCisgICAgICAgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50KCIuIik7CisgICAgICAgICAgICB9CisgICAgICAgICB9CisKKyAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgICAgICBsb25nIGVuZCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgZG91YmxlIGRlbHRhID0gZW5kIC0gc3RhcnQ7CisKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKKyAgICAgICAgICAgIGNvdW50ZXIgKyAiICogYXBhY2hlc2FtcGxlX3hmaWx0ZXIyXzUgdG9vayAiCisgICAgICAgICAgICArIGphdmEudGV4dC5EZWNpbWFsRm9ybWF0LmdldEluc3RhbmNlKCkuZm9ybWF0KGRlbHRhIC8gMTAwMC4pCisgICAgICAgICAgICArICIgc2Vjb25kcyIpOworCisgICAgICAgICBGaWxlT3V0cHV0U3RyZWFtIGZvczsKKworICAgICAgICAgZm9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oImFwYWNoZXNhbXBsZV94ZmlsdGVyMl9kb2NfNS54bWwiKTsKKworICAgICAgICAgZm9zLndyaXRlKHJlc3VsdFswXSk7CisgICAgICAgICBmb3MuY2xvc2UoKTsKKworICAgICAgICAgZm9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oImFwYWNoZXNhbXBsZV94ZmlsdGVyMl9yZWZfNS54bWwiKTsKKworICAgICAgICAgZm9zLndyaXRlKHJlc3VsdFsxXSk7CisgICAgICAgICBmb3MuY2xvc2UoKTsKKyAgICAgIH0KKworICAgICAgaWYgKGFwYWNoZXNhbXBsZV94ZmlsdGVyMl82KSB7CisgICAgICAgICBTdHJpbmcgaW5wdXREb2MgPQorICAgICAgICAgICAgIjxBIHhtbG5zOmZvbz1cImh0dHA6Ly9mb28uYmFyL1wiPlxuPFU+XG48VT5cbjxVPlxuPFU+XG48VT5cbjxCIGZvbzphdHRyPVwiYXR0clwiPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxDPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPC9VPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48L1U+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L1U+XG48L0M+XG48L0I+XG48RD5cbjxVLz5cbjwvRD5cbjxVPlxuPEU+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjwvRT5cbjxVPlxuPEY+XG48Rz5cbjxILz5cbjxHPlxuPEgvPlxuPC9HPlxuPC9HPlxuPC9GPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9BPlxuIjsKKworICAgICAgICAgLy9KKworICAgICAgICAgRG9jdW1lbnQgZG9jID0gZGIucGFyc2UobmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGlucHV0RG9jLmdldEJ5dGVzKCkpKTsKKyAgICAgICAgIGxvbmcgc3RhcnQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgIGJ5dGVbXVtdIHJlc3VsdCA9IG51bGw7CisKKyAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnRlcjsgaSsrKSB7CisgICAgICAgICAgICByZXN1bHQgPSBUcmFuc2Zvcm1QZXJmb3JtYW5jZVRlc3Rlci5hcGFjaGVzYW1wbGVfeGZpbHRlcjJfNihkb2MpOworCisgICAgICAgICAgICBpZiAoaSAlIDEwID09IDApIHsKKworICAgICAgICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludCgiLiIpOworICAgICAgICAgICAgfQorICAgICAgICAgfQorCisgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworICAgICAgICAgbG9uZyBlbmQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgIGRvdWJsZSBkZWx0YSA9IGVuZCAtIHN0YXJ0OworCisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAgICBjb3VudGVyICsgIiAqIGFwYWNoZXNhbXBsZV94ZmlsdGVyMl82IHRvb2sgIgorICAgICAgICAgICAgKyBqYXZhLnRleHQuRGVjaW1hbEZvcm1hdC5nZXRJbnN0YW5jZSgpLmZvcm1hdChkZWx0YSAvIDEwMDAuKQorICAgICAgICAgICAgKyAiIHNlY29uZHMiKTsKKworICAgICAgICAgRmlsZU91dHB1dFN0cmVhbSBmb3M7CisKKyAgICAgICAgIGZvcyA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKCJhcGFjaGVzYW1wbGVfeGZpbHRlcjJfZG9jXzYueG1sIik7CisKKyAgICAgICAgIGZvcy53cml0ZShyZXN1bHRbMF0pOworICAgICAgICAgZm9zLmNsb3NlKCk7CisKKyAgICAgICAgIGZvcyA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKCJhcGFjaGVzYW1wbGVfeGZpbHRlcjJfcmVmXzYueG1sIik7CisKKyAgICAgICAgIGZvcy53cml0ZShyZXN1bHRbMV0pOworICAgICAgICAgZm9zLmNsb3NlKCk7CisgICAgICB9CisKKyAgICAgIGlmIChhcGFjaGVzYW1wbGVfeGZpbHRlcjJfNykgeworICAgICAgICAgU3RyaW5nIGlucHV0RG9jID0KKyAgICAgICAgICAgICI8QSB4bWxuczpmb289XCJodHRwOi8vZm9vLmJhci9cIj5cbjxVPlxuPFU+XG48VT5cbjxVPlxuPFU+XG48QiBmb286YXR0cj1cImF0dHJcIj5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Qz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48L1U+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPC9VPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9DPlxuPC9CPlxuPEQ+XG48VS8+XG48L0Q+XG48VT5cbjxFPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48L0U+XG48VT5cbjxGPlxuPEc+XG48SC8+XG48Rz5cbjxILz5cbjwvRz5cbjwvRz5cbjwvRj5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvQT5cbiI7CisKKyAgICAgICAgIC8vSisKKyAgICAgICAgIERvY3VtZW50IGRvYyA9IGRiLnBhcnNlKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShpbnB1dERvYy5nZXRCeXRlcygpKSk7CisgICAgICAgICBsb25nIHN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICBieXRlW11bXSByZXN1bHQgPSBudWxsOworCisgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50ZXI7IGkrKykgeworICAgICAgICAgICAgcmVzdWx0ID0gVHJhbnNmb3JtUGVyZm9ybWFuY2VUZXN0ZXIuYXBhY2hlc2FtcGxlX3hmaWx0ZXIyXzcoZG9jKTsKKworICAgICAgICAgICAgaWYgKGkgJSAxMCA9PSAwKSB7CisKKyAgICAgICAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnQoIi4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKworICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICAgICAgIGxvbmcgZW5kID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICBkb3VibGUgZGVsdGEgPSBlbmQgLSBzdGFydDsKKworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKAorICAgICAgICAgICAgY291bnRlciArICIgKiBhcGFjaGVzYW1wbGVfeGZpbHRlcjJfNyB0b29rICIKKyAgICAgICAgICAgICsgamF2YS50ZXh0LkRlY2ltYWxGb3JtYXQuZ2V0SW5zdGFuY2UoKS5mb3JtYXQoZGVsdGEgLyAxMDAwLikKKyAgICAgICAgICAgICsgIiBzZWNvbmRzIik7CisKKyAgICAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZm9zOworCisgICAgICAgICBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgiYXBhY2hlc2FtcGxlX3hmaWx0ZXIyX2RvY183LnhtbCIpOworCisgICAgICAgICBmb3Mud3JpdGUocmVzdWx0WzBdKTsKKyAgICAgICAgIGZvcy5jbG9zZSgpOworCisgICAgICAgICBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgiYXBhY2hlc2FtcGxlX3hmaWx0ZXIyX3JlZl83LnhtbCIpOworCisgICAgICAgICBmb3Mud3JpdGUocmVzdWx0WzFdKTsKKyAgICAgICAgIGZvcy5jbG9zZSgpOworICAgICAgfQorCisgICAgICBpZiAoeGZpbHRlcjJzcGVjX3hmaWx0ZXIyXzNfbmV3KSB7CisgICAgICAgICBTdHJpbmcgaW5wdXREb2MgPSAiPERvY3VtZW50PlxuIiArICIgICAgIDxUb0JlU2lnbmVkPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICAgIDwhLS0gY29tbWVudCAtLT5cbiIgKyAiICAgICAgIDxEYXRhIC8+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgICAgPE5vdFRvQmVTaWduZWQ+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgICAgICA8UmVhbGx5VG9CZVNpZ25lZD5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgICAgICAgPCEtLSBjb21tZW50IC0tPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICAgICAgICA8RGF0YSAvPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICAgICAgPC9SZWFsbHlUb0JlU2lnbmVkPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICAgIDwvTm90VG9CZVNpZ25lZD5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgPC9Ub0JlU2lnbmVkPlxuIiArICIgICAgIDxUb0JlU2lnbmVkPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICAgIDxEYXRhIC8+XG4iICsgIiAgICAgICA8Tm90VG9CZVNpZ25lZD5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAgICAgICAgIDxEYXRhIC8+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgICAgICAgPC9Ob3RUb0JlU2lnbmVkPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICAgICA8L1RvQmVTaWduZWQ+XG4iICsgIjwvRG9jdW1lbnQ+IjsKKworICAgICAgICAgLy9KKworICAgICAgICAgRG9jdW1lbnQgZG9jID0gZGIucGFyc2UobmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGlucHV0RG9jLmdldEJ5dGVzKCkpKTsKKyAgICAgICAgIGxvbmcgc3RhcnQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgIGJ5dGVbXVtdIHJlc3VsdCA9IG51bGw7CisKKyAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnRlcjsgaSsrKSB7CisgICAgICAgICAgICByZXN1bHQgPQorICAgICAgICAgICAgICAgVHJhbnNmb3JtUGVyZm9ybWFuY2VUZXN0ZXIueGZpbHRlcjJzcGVjX3hmaWx0ZXIyXzNfbmV3KGRvYyk7CisgICAgICAgICB9CisKKyAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgICAgICBsb25nIGVuZCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgZG91YmxlIGRlbHRhID0gZW5kIC0gc3RhcnQ7CisKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKKyAgICAgICAgICAgIGNvdW50ZXIgKyAiICogeGZpbHRlcjJzcGVjX3hmaWx0ZXIyXzNfbmV3IHRvb2sgIgorICAgICAgICAgICAgKyBqYXZhLnRleHQuRGVjaW1hbEZvcm1hdC5nZXRJbnN0YW5jZSgpLmZvcm1hdChkZWx0YSAvIDEwMDAuKQorICAgICAgICAgICAgKyAiIHNlY29uZHMiKTsKKworICAgICAgICAgRmlsZU91dHB1dFN0cmVhbSBmb3M7CisKKyAgICAgICAgIGZvcyA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKCJ4ZmlsdGVyMnNwZWNfeGZpbHRlcjJfM19uZXdfZG9jLnhtbCIpOworCisgICAgICAgICBmb3Mud3JpdGUocmVzdWx0WzBdKTsKKyAgICAgICAgIGZvcy5jbG9zZSgpOworCisgICAgICAgICBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgieGZpbHRlcjJzcGVjX3hmaWx0ZXIyXzNfbmV3X3JlZi54bWwiKTsKKworICAgICAgICAgZm9zLndyaXRlKHJlc3VsdFsxXSk7CisgICAgICAgICBmb3MuY2xvc2UoKTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgcHVyZWVkZ2VfeGZpbHRlcjIKKyAgICAqCisgICAgKiBAcGFyYW0gZG9jCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyBieXRlW11bXSBwdXJlZWRnZV94ZmlsdGVyMihEb2N1bWVudCBkb2MpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBYTUxTaWduYXR1cmUgc2lnID0gbmV3IFhNTFNpZ25hdHVyZShkb2MsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmUuQUxHT19JRF9NQUNfSE1BQ19TSEExKTsKKworICAgICAgZG9jLmdldERvY3VtZW50RWxlbWVudCgpLmFwcGVuZENoaWxkKHNpZy5nZXRFbGVtZW50KCkpOworCisgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICB7CisgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNCB4cGF0aENvbnRhaW5lciA9CisgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNC5uZXdJbnN0YW5jZVN1YnRyYWN0KGRvYywKKyAgICAgICAgIC8vSi0KKyAgICAgICAgICAgICJcbiIgKworICAgICAgICAgICAgIi9YRkRML3BhZ2VbQHNpZD0nUEFHRTEnXS8qW0BzaWQ9J0NIRUNLMTYnIG9yIFxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgQHNpZD0nQ0hFQ0sxNycgb3IgXG4iICsKKyAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBAc2lkPSdGSUVMRDQ3JyBvciBcbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIEBzaWQ9J0JVVFRPTjInIG9yIFxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgQHNpZD0nRklFTEQ0OCddXG4iICsKKyAgICAgICAgICAgICIgfCBcbiIgKworICAgICAgICAgICAgIi9YRkRML3BhZ2UvdHJpZ2dlcml0ZW1bbm90KGF0dHJpYnV0ZTo6c2lkKSB8IFxuIiAgKworICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgL1hGREwvcGFnZS8qL3RyaWdnZXJpdGVtXVxuIiArCisgICAgICAgICAgICAiIHwgXG4iICsKKyAgICAgICAgICAgICJoZXJlKCkvYW5jZXN0b3I6OmRzOlNpZ25hdHVyZVsxXSIgKworICAgICAgICAgICAgIiIpOworICAgICAgICAgICAgLy9KKworICAgICAgICAgeHBhdGhDb250YWluZXIuc2V0WFBhdGhOYW1lc3BhY2VDb250ZXh0KCJkcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUyk7CisgICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIwNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhwYXRoQ29udGFpbmVyLmdldEVsZW1lbnQoKSk7CisgICAgICB9CisKKyAgICAgIHNpZy5hZGREb2N1bWVudCgiIiwgdHJhbnNmb3Jtcyk7CisKKyAgICAgIFN0cmluZyBzZWNyZXRLZXkgPSAic2VjcmV0IjsKKworICAgICAgc2lnLmdldEtleUluZm8oKS5hZGRLZXlOYW1lKCJUaGUgVVRGLTggb2N0ZXRzIG9mIFwiIiArIHNlY3JldEtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIlwiIGFyZSB1c2VkIGZvciBzaWduaW5nICgiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzZWNyZXRLZXkubGVuZ3RoKCkgKyAiIG9jdGV0cykiKTsKKyAgICAgIHNpZy5zaWduKHNpZy5jcmVhdGVTZWNyZXRLZXkoc2VjcmV0S2V5LmdldEJ5dGVzKCkpKTsKKworICAgICAgQ2Fub25pY2FsaXplciBjMTRuID0KKyAgICAgICAgIENhbm9uaWNhbGl6ZXIuZ2V0SW5zdGFuY2UoQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fV0lUSF9DT01NRU5UUyk7CisgICAgICBieXRlW10gZnVsbCA9IGMxNG4uY2Fub25pY2FsaXplU3VidHJlZShkb2MpOworICAgICAgYnl0ZVtdIHJlZiA9IHNpZy5nZXRTaWduZWRJbmZvKCkuaXRlbSgwKS5nZXRUcmFuc2Zvcm1zT3V0cHV0KCkuZ2V0Qnl0ZXMoKTsKKyAgICAgIGJ5dGVbXVtdIHJlc3VsdCA9IHsKKyAgICAgICAgIGZ1bGwsIHJlZgorICAgICAgfTsKKworICAgICAgLy8gd2UgcmVtb3ZlIHRoZSBzaWduYXR1cmUgbm93CisgICAgICBzaWcuZ2V0RWxlbWVudCgpLmdldFBhcmVudE5vZGUoKS5yZW1vdmVDaGlsZChzaWcuZ2V0RWxlbWVudCgpKTsKKworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgcHVyZWVkZ2VfYXBhY2hlZmlsdGVyCisgICAgKgorICAgICogQHBhcmFtIGRvYworICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgYnl0ZVtdW10gcHVyZWVkZ2VfYXBhY2hlZmlsdGVyKERvY3VtZW50IGRvYykgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIFhNTFNpZ25hdHVyZSBzaWcgPSBuZXcgWE1MU2lnbmF0dXJlKGRvYywgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTFNpZ25hdHVyZS5BTEdPX0lEX01BQ19ITUFDX1NIQTEpOworCisgICAgICBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCkuYXBwZW5kQ2hpbGQoc2lnLmdldEVsZW1lbnQoKSk7CisKKyAgICAgIFRyYW5zZm9ybXMgdHJhbnNmb3JtcyA9IG5ldyBUcmFuc2Zvcm1zKGRvYyk7CisKKyAgICAgIHsKKyAgICAgICAgIFN0cmluZyBpbmNsdWRlQnV0U2VhcmNoID0gbnVsbDsKKyAgICAgICAgIFN0cmluZyBleGNsdWRlQnV0U2VhcmNoID0gbnVsbDsKKyAgICAgICAgIFN0cmluZyBleGNsdWRlID0KKyAgICAgICAgIC8vSi0KKyAgICAgICAgICAgICJcbiIgKworICAgICAgICAgICAgIi9YRkRML3BhZ2VbQHNpZD0nUEFHRTEnXS8qW0BzaWQ9J0NIRUNLMTYnIG9yIFxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgQHNpZD0nQ0hFQ0sxNycgb3IgXG4iICsKKyAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBAc2lkPSdGSUVMRDQ3JyBvciBcbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIEBzaWQ9J0JVVFRPTjInIG9yIFxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgQHNpZD0nRklFTEQ0OCddXG4iICsKKyAgICAgICAgICAgICIgfCBcbiIgKworICAgICAgICAgICAgIi9YRkRML3BhZ2UvdHJpZ2dlcml0ZW1bbm90KGF0dHJpYnV0ZTo6c2lkKSB8IFxuIiAgKworICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgL1hGREwvcGFnZS8qL3RyaWdnZXJpdGVtXVxuIiArCisgICAgICAgICAgICAiIHwgXG4iICsKKyAgICAgICAgICAgICJoZXJlKCkvYW5jZXN0b3I6OmRzOlNpZ25hdHVyZVsxXSI7CisgICAgICAgICAgICAvL0orCisgICAgICAgICBYUGF0aEZpbHRlckNIR1BDb250YWluZXIgeHBhdGhDb250YWluZXIgPQorICAgICAgICAgICAgWFBhdGhGaWx0ZXJDSEdQQ29udGFpbmVyCisgICAgICAgICAgICAgICAuZ2V0SW5zdGFuY2UoZG9jLCBYUGF0aEZpbHRlckNIR1BDb250YWluZXIKKyAgICAgICAgICAgICAgICAgIC5JbmNsdWRlU2xhc2gsIGluY2x1ZGVCdXRTZWFyY2gsIGV4Y2x1ZGVCdXRTZWFyY2gsIGV4Y2x1ZGUpOworCisgICAgICAgICB4cGF0aENvbnRhaW5lci5zZXRYUGF0aE5hbWVzcGFjZUNvbnRleHQoImRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TKTsKKyAgICAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRIRklMVEVSQ0hHUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhwYXRoQ29udGFpbmVyLmdldEVsZW1lbnQoKSk7CisgICAgICB9CisKKyAgICAgIHNpZy5hZGREb2N1bWVudCgiIiwgdHJhbnNmb3Jtcyk7CisKKyAgICAgIFN0cmluZyBzZWNyZXRLZXkgPSAic2VjcmV0IjsKKworICAgICAgc2lnLmdldEtleUluZm8oKS5hZGRLZXlOYW1lKCJUaGUgVVRGLTggb2N0ZXRzIG9mIFwiIiArIHNlY3JldEtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIlwiIGFyZSB1c2VkIGZvciBzaWduaW5nICgiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzZWNyZXRLZXkubGVuZ3RoKCkgKyAiIG9jdGV0cykiKTsKKyAgICAgIHNpZy5zaWduKHNpZy5jcmVhdGVTZWNyZXRLZXkoc2VjcmV0S2V5LmdldEJ5dGVzKCkpKTsKKworICAgICAgQ2Fub25pY2FsaXplciBjMTRuID0KKyAgICAgICAgIENhbm9uaWNhbGl6ZXIuZ2V0SW5zdGFuY2UoQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fV0lUSF9DT01NRU5UUyk7CisgICAgICBieXRlW10gZnVsbCA9IGMxNG4uY2Fub25pY2FsaXplU3VidHJlZShkb2MpOworICAgICAgYnl0ZVtdIHJlZiA9IHNpZy5nZXRTaWduZWRJbmZvKCkuaXRlbSgwKS5nZXRUcmFuc2Zvcm1zT3V0cHV0KCkuZ2V0Qnl0ZXMoKTsKKyAgICAgIGJ5dGVbXVtdIHJlc3VsdCA9IHsKKyAgICAgICAgIGZ1bGwsIHJlZgorICAgICAgfTsKKworICAgICAgLy8gd2UgcmVtb3ZlIHRoZSBzaWduYXR1cmUgbm93CisgICAgICBzaWcuZ2V0RWxlbWVudCgpLmdldFBhcmVudE5vZGUoKS5yZW1vdmVDaGlsZChzaWcuZ2V0RWxlbWVudCgpKTsKKworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2Qgc2ltcGxlX2dpZl9kZXRhY2hlZAorICAgICoKKyAgICAqIEBwYXJhbSBkb2MKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIGJ5dGVbXVtdIHNpbXBsZV9naWZfZGV0YWNoZWQoRG9jdW1lbnQgZG9jKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgWE1MU2lnbmF0dXJlIHNpZyA9IG5ldyBYTUxTaWduYXR1cmUoZG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEZpbGUoIi4iKS50b1VSTCgpLnRvU3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmUuQUxHT19JRF9NQUNfSE1BQ19TSEExKTsKKworICAgICAgZG9jLmFwcGVuZENoaWxkKHNpZy5nZXRFbGVtZW50KCkpOworICAgICAgc2lnLmFkZERvY3VtZW50KCIuL2ltYWdlLmdpZiIpOworCisgICAgICBTdHJpbmcgc2VjcmV0S2V5ID0gInNlY3JldCI7CisKKyAgICAgIHNpZy5nZXRLZXlJbmZvKCkuYWRkS2V5TmFtZSgiVGhlIFVURi04IG9jdGV0cyBvZiBcIiIgKyBzZWNyZXRLZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJcIiBhcmUgdXNlZCBmb3Igc2lnbmluZyAoIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc2VjcmV0S2V5Lmxlbmd0aCgpICsgIiBvY3RldHMpIik7CisgICAgICBzaWcuc2lnbihzaWcuY3JlYXRlU2VjcmV0S2V5KHNlY3JldEtleS5nZXRCeXRlcygpKSk7CisKKyAgICAgIENhbm9uaWNhbGl6ZXIgYzE0biA9CisgICAgICAgICBDYW5vbmljYWxpemVyLmdldEluc3RhbmNlKENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX1dJVEhfQ09NTUVOVFMpOworICAgICAgYnl0ZVtdIGZ1bGwgPSBjMTRuLmNhbm9uaWNhbGl6ZVN1YnRyZWUoZG9jKTsKKyAgICAgIGJ5dGVbXSByZWYgPSBzaWcuZ2V0U2lnbmVkSW5mbygpLml0ZW0oMCkuZ2V0VHJhbnNmb3Jtc091dHB1dCgpLmdldEJ5dGVzKCk7CisgICAgICBieXRlW11bXSByZXN1bHQgPSB7CisgICAgICAgICBmdWxsLCByZWYKKyAgICAgIH07CisKKyAgICAgIC8vIHdlIHJlbW92ZSB0aGUgc2lnbmF0dXJlIG5vdworICAgICAgc2lnLmdldEVsZW1lbnQoKS5nZXRQYXJlbnROb2RlKCkucmVtb3ZlQ2hpbGQoc2lnLmdldEVsZW1lbnQoKSk7CisKKyAgICAgIHJldHVybiByZXN1bHQ7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHhmaWx0ZXIyc3BlY194ZmlsdGVyMl8xCisgICAgKgorICAgICogQHBhcmFtIGRvYworICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgYnl0ZVtdW10geGZpbHRlcjJzcGVjX3hmaWx0ZXIyXzEoRG9jdW1lbnQgZG9jKQorICAgICAgICAgICB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgWE1MU2lnbmF0dXJlIHNpZyA9IG5ldyBYTUxTaWduYXR1cmUoZG9jLCBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MU2lnbmF0dXJlLkFMR09fSURfTUFDX0hNQUNfU0hBMSk7CisKKyAgICAgIGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKS5hcHBlbmRDaGlsZChzaWcuZ2V0RWxlbWVudCgpKTsKKworICAgICAgVHJhbnNmb3JtcyB0cmFuc2Zvcm1zID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKworICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNC5uZXdJbnN0YW5jZUludGVyc2VjdChkb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLy9Ub0JlU2lnbmVkIikuZ2V0RWxlbWVudCgpKTsKKyAgICAgIHNpZy5hZGREb2N1bWVudCgiIiwgdHJhbnNmb3Jtcyk7CisKKyAgICAgIFN0cmluZyBzZWNyZXRLZXkgPSAic2VjcmV0IjsKKworICAgICAgc2lnLmdldEtleUluZm8oKS5hZGRLZXlOYW1lKCJUaGUgVVRGLTggb2N0ZXRzIG9mIFwiIiArIHNlY3JldEtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIlwiIGFyZSB1c2VkIGZvciBzaWduaW5nICgiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzZWNyZXRLZXkubGVuZ3RoKCkgKyAiIG9jdGV0cykiKTsKKyAgICAgIHNpZy5zaWduKHNpZy5jcmVhdGVTZWNyZXRLZXkoc2VjcmV0S2V5LmdldEJ5dGVzKCkpKTsKKworICAgICAgQ2Fub25pY2FsaXplciBjMTRuID0KKyAgICAgICAgIENhbm9uaWNhbGl6ZXIuZ2V0SW5zdGFuY2UoQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fV0lUSF9DT01NRU5UUyk7CisgICAgICBieXRlW10gZnVsbCA9IGMxNG4uY2Fub25pY2FsaXplU3VidHJlZShkb2MpOworICAgICAgYnl0ZVtdIHJlZiA9IHNpZy5nZXRTaWduZWRJbmZvKCkuaXRlbSgwKS5nZXRUcmFuc2Zvcm1zT3V0cHV0KCkuZ2V0Qnl0ZXMoKTsKKyAgICAgIGJ5dGVbXVtdIHJlc3VsdCA9IHsKKyAgICAgICAgIGZ1bGwsIHJlZgorICAgICAgfTsKKworICAgICAgLy8gd2UgcmVtb3ZlIHRoZSBzaWduYXR1cmUgbm93CisgICAgICBzaWcuZ2V0RWxlbWVudCgpLmdldFBhcmVudE5vZGUoKS5yZW1vdmVDaGlsZChzaWcuZ2V0RWxlbWVudCgpKTsKKworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgeGZpbHRlcjJzcGVjX3hmaWx0ZXIyXzIKKyAgICAqCisgICAgKiBAcGFyYW0gZG9jCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyBieXRlW11bXSB4ZmlsdGVyMnNwZWNfeGZpbHRlcjJfMihEb2N1bWVudCBkb2MpCisgICAgICAgICAgIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBYTUxTaWduYXR1cmUgc2lnID0gbmV3IFhNTFNpZ25hdHVyZShkb2MsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmUuQUxHT19JRF9NQUNfSE1BQ19TSEExKTsKKworICAgICAgZG9jLmdldERvY3VtZW50RWxlbWVudCgpLmFwcGVuZENoaWxkKHNpZy5nZXRFbGVtZW50KCkpOworCisgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIwNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lcjA0Lm5ld0luc3RhbmNlSW50ZXJzZWN0KGRvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvL1RvQmVTaWduZWQiKS5nZXRFbGVtZW50KCkpOworICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNC5uZXdJbnN0YW5jZVN1YnRyYWN0KGRvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvL05vdFRvQmVTaWduZWQiKS5nZXRFbGVtZW50KCkpOworICAgICAgc2lnLmFkZERvY3VtZW50KCIiLCB0cmFuc2Zvcm1zKTsKKworICAgICAgU3RyaW5nIHNlY3JldEtleSA9ICJzZWNyZXQiOworCisgICAgICBzaWcuZ2V0S2V5SW5mbygpLmFkZEtleU5hbWUoIlRoZSBVVEYtOCBvY3RldHMgb2YgXCIiICsgc2VjcmV0S2V5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiXCIgYXJlIHVzZWQgZm9yIHNpZ25pbmcgKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHNlY3JldEtleS5sZW5ndGgoKSArICIgb2N0ZXRzKSIpOworICAgICAgc2lnLnNpZ24oc2lnLmNyZWF0ZVNlY3JldEtleShzZWNyZXRLZXkuZ2V0Qnl0ZXMoKSkpOworCisgICAgICBDYW5vbmljYWxpemVyIGMxNG4gPQorICAgICAgICAgQ2Fub25pY2FsaXplci5nZXRJbnN0YW5jZShDYW5vbmljYWxpemVyLkFMR09fSURfQzE0Tl9XSVRIX0NPTU1FTlRTKTsKKyAgICAgIGJ5dGVbXSBmdWxsID0gYzE0bi5jYW5vbmljYWxpemVTdWJ0cmVlKGRvYyk7CisgICAgICBieXRlW10gcmVmID0gc2lnLmdldFNpZ25lZEluZm8oKS5pdGVtKDApLmdldFRyYW5zZm9ybXNPdXRwdXQoKS5nZXRCeXRlcygpOworICAgICAgYnl0ZVtdW10gcmVzdWx0ID0geworICAgICAgICAgZnVsbCwgcmVmCisgICAgICB9OworCisgICAgICAvLyB3ZSByZW1vdmUgdGhlIHNpZ25hdHVyZSBub3cKKyAgICAgIHNpZy5nZXRFbGVtZW50KCkuZ2V0UGFyZW50Tm9kZSgpLnJlbW92ZUNoaWxkKHNpZy5nZXRFbGVtZW50KCkpOworCisgICAgICByZXR1cm4gcmVzdWx0OworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB4ZmlsdGVyMnNwZWNfeGZpbHRlcjIKKyAgICAqCisgICAgKiBAcGFyYW0gZG9jCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyBieXRlW11bXSB4ZmlsdGVyMnNwZWNfeGZpbHRlcjJfMyhEb2N1bWVudCBkb2MpCisgICAgICAgICAgIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBYTUxTaWduYXR1cmUgc2lnID0gbmV3IFhNTFNpZ25hdHVyZShkb2MsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmUuQUxHT19JRF9NQUNfSE1BQ19TSEExKTsKKworICAgICAgZG9jLmdldERvY3VtZW50RWxlbWVudCgpLmFwcGVuZENoaWxkKHNpZy5nZXRFbGVtZW50KCkpOworCisgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIwNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lcjA0Lm5ld0luc3RhbmNlSW50ZXJzZWN0KGRvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvL1RvQmVTaWduZWQiKS5nZXRFbGVtZW50KCkpOworICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNC5uZXdJbnN0YW5jZVN1YnRyYWN0KGRvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvL05vdFRvQmVTaWduZWQiKS5nZXRFbGVtZW50KCkpOworICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNC5uZXdJbnN0YW5jZVVuaW9uKGRvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvL1JlYWxseVRvQmVTaWduZWQiKS5nZXRFbGVtZW50KCkpOworICAgICAgc2lnLmFkZERvY3VtZW50KCIiLCB0cmFuc2Zvcm1zKTsKKworICAgICAgU3RyaW5nIHNlY3JldEtleSA9ICJzZWNyZXQiOworCisgICAgICBzaWcuZ2V0S2V5SW5mbygpLmFkZEtleU5hbWUoIlRoZSBVVEYtOCBvY3RldHMgb2YgXCIiICsgc2VjcmV0S2V5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiXCIgYXJlIHVzZWQgZm9yIHNpZ25pbmcgKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHNlY3JldEtleS5sZW5ndGgoKSArICIgb2N0ZXRzKSIpOworICAgICAgc2lnLnNpZ24oc2lnLmNyZWF0ZVNlY3JldEtleShzZWNyZXRLZXkuZ2V0Qnl0ZXMoKSkpOworCisgICAgICBDYW5vbmljYWxpemVyIGMxNG4gPQorICAgICAgICAgQ2Fub25pY2FsaXplci5nZXRJbnN0YW5jZShDYW5vbmljYWxpemVyLkFMR09fSURfQzE0Tl9XSVRIX0NPTU1FTlRTKTsKKyAgICAgIGJ5dGVbXSBmdWxsID0gYzE0bi5jYW5vbmljYWxpemVTdWJ0cmVlKGRvYyk7CisgICAgICBieXRlW10gcmVmID0gc2lnLmdldFNpZ25lZEluZm8oKS5pdGVtKDApLmdldFRyYW5zZm9ybXNPdXRwdXQoKS5nZXRCeXRlcygpOworICAgICAgYnl0ZVtdW10gcmVzdWx0ID0geworICAgICAgICAgZnVsbCwgcmVmCisgICAgICB9OworCisgICAgICAvLyB3ZSByZW1vdmUgdGhlIHNpZ25hdHVyZSBub3cKKyAgICAgIHNpZy5nZXRFbGVtZW50KCkuZ2V0UGFyZW50Tm9kZSgpLnJlbW92ZUNoaWxkKHNpZy5nZXRFbGVtZW50KCkpOworCisgICAgICByZXR1cm4gcmVzdWx0OworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB4ZmlsdGVyMnNwZWNfYXBhY2hlZmlsdGVyCisgICAgKgorICAgICogQHBhcmFtIGRvYworICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgYnl0ZVtdW10geGZpbHRlcjJzcGVjX2FwYWNoZWZpbHRlcl8xKERvY3VtZW50IGRvYykKKyAgICAgICAgICAgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIFhNTFNpZ25hdHVyZSBzaWcgPSBuZXcgWE1MU2lnbmF0dXJlKGRvYywgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTFNpZ25hdHVyZS5BTEdPX0lEX01BQ19ITUFDX1NIQTEpOworCisgICAgICBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCkuYXBwZW5kQ2hpbGQoc2lnLmdldEVsZW1lbnQoKSk7CisKKyAgICAgIFRyYW5zZm9ybXMgdHJhbnNmb3JtcyA9IG5ldyBUcmFuc2Zvcm1zKGRvYyk7CisKKyAgICAgIHsKKyAgICAgICAgIFN0cmluZyBpbmNsdWRlQnV0U2VhcmNoID0gIi8vVG9CZVNpZ25lZCI7CisgICAgICAgICBTdHJpbmcgZXhjbHVkZUJ1dFNlYXJjaCA9IG51bGw7CisgICAgICAgICBTdHJpbmcgZXhjbHVkZSA9ICJoZXJlKCkvYW5jZXN0b3I6OmRzOlNpZ25hdHVyZVsxXSI7CisgICAgICAgICBYUGF0aEZpbHRlckNIR1BDb250YWluZXIgeHBhdGhDb250YWluZXIgPQorICAgICAgICAgICAgWFBhdGhGaWx0ZXJDSEdQQ29udGFpbmVyCisgICAgICAgICAgICAgICAuZ2V0SW5zdGFuY2UoZG9jLCBYUGF0aEZpbHRlckNIR1BDb250YWluZXIKKyAgICAgICAgICAgICAgICAgIC5FeGNsdWRlU2xhc2gsIGluY2x1ZGVCdXRTZWFyY2gsIGV4Y2x1ZGVCdXRTZWFyY2gsIGV4Y2x1ZGUpOworCisgICAgICAgICB4cGF0aENvbnRhaW5lci5zZXRYUGF0aE5hbWVzcGFjZUNvbnRleHQoImRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TKTsKKyAgICAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRIRklMVEVSQ0hHUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhwYXRoQ29udGFpbmVyLmdldEVsZW1lbnQoKSk7CisgICAgICB9CisKKyAgICAgIHNpZy5hZGREb2N1bWVudCgiIiwgdHJhbnNmb3Jtcyk7CisKKyAgICAgIFN0cmluZyBzZWNyZXRLZXkgPSAic2VjcmV0IjsKKworICAgICAgc2lnLmdldEtleUluZm8oKS5hZGRLZXlOYW1lKCJUaGUgVVRGLTggb2N0ZXRzIG9mIFwiIiArIHNlY3JldEtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIlwiIGFyZSB1c2VkIGZvciBzaWduaW5nICgiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzZWNyZXRLZXkubGVuZ3RoKCkgKyAiIG9jdGV0cykiKTsKKyAgICAgIHNpZy5zaWduKHNpZy5jcmVhdGVTZWNyZXRLZXkoc2VjcmV0S2V5LmdldEJ5dGVzKCkpKTsKKworICAgICAgQ2Fub25pY2FsaXplciBjMTRuID0KKyAgICAgICAgIENhbm9uaWNhbGl6ZXIuZ2V0SW5zdGFuY2UoQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fV0lUSF9DT01NRU5UUyk7CisgICAgICBieXRlW10gZnVsbCA9IGMxNG4uY2Fub25pY2FsaXplU3VidHJlZShkb2MpOworICAgICAgYnl0ZVtdIHJlZiA9IHNpZy5nZXRTaWduZWRJbmZvKCkuaXRlbSgwKS5nZXRUcmFuc2Zvcm1zT3V0cHV0KCkuZ2V0Qnl0ZXMoKTsKKyAgICAgIGJ5dGVbXVtdIHJlc3VsdCA9IHsKKyAgICAgICAgIGZ1bGwsIHJlZgorICAgICAgfTsKKworICAgICAgLy8gd2UgcmVtb3ZlIHRoZSBzaWduYXR1cmUgbm93CisgICAgICBzaWcuZ2V0RWxlbWVudCgpLmdldFBhcmVudE5vZGUoKS5yZW1vdmVDaGlsZChzaWcuZ2V0RWxlbWVudCgpKTsKKworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgeGZpbHRlcjJzcGVjX2FwYWNoZWZpbHRlcgorICAgICoKKyAgICAqIEBwYXJhbSBkb2MKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIGJ5dGVbXVtdIHhmaWx0ZXIyc3BlY19hcGFjaGVmaWx0ZXJfMihEb2N1bWVudCBkb2MpCisgICAgICAgICAgIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBYTUxTaWduYXR1cmUgc2lnID0gbmV3IFhNTFNpZ25hdHVyZShkb2MsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmUuQUxHT19JRF9NQUNfSE1BQ19TSEExKTsKKworICAgICAgZG9jLmdldERvY3VtZW50RWxlbWVudCgpLmFwcGVuZENoaWxkKHNpZy5nZXRFbGVtZW50KCkpOworCisgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICB7CisgICAgICAgICBTdHJpbmcgaW5jbHVkZUJ1dFNlYXJjaCA9ICIvL1RvQmVTaWduZWQiOworICAgICAgICAgU3RyaW5nIGV4Y2x1ZGVCdXRTZWFyY2ggPSAiLy9Ob3RUb0JlU2lnbmVkIjsKKyAgICAgICAgIFN0cmluZyBleGNsdWRlID0gImhlcmUoKS9hbmNlc3Rvcjo6ZHM6U2lnbmF0dXJlWzFdIjsKKyAgICAgICAgIFhQYXRoRmlsdGVyQ0hHUENvbnRhaW5lciB4cGF0aENvbnRhaW5lciA9CisgICAgICAgICAgICBYUGF0aEZpbHRlckNIR1BDb250YWluZXIKKyAgICAgICAgICAgICAgIC5nZXRJbnN0YW5jZShkb2MsIFhQYXRoRmlsdGVyQ0hHUENvbnRhaW5lcgorICAgICAgICAgICAgICAgICAgLkV4Y2x1ZGVTbGFzaCwgaW5jbHVkZUJ1dFNlYXJjaCwgZXhjbHVkZUJ1dFNlYXJjaCwgZXhjbHVkZSk7CisKKyAgICAgICAgIHhwYXRoQ29udGFpbmVyLnNldFhQYXRoTmFtZXNwYWNlQ29udGV4dCgiZHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMpOworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEhGSUxURVJDSEdQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHBhdGhDb250YWluZXIuZ2V0RWxlbWVudCgpKTsKKyAgICAgIH0KKworICAgICAgc2lnLmFkZERvY3VtZW50KCIiLCB0cmFuc2Zvcm1zKTsKKworICAgICAgU3RyaW5nIHNlY3JldEtleSA9ICJzZWNyZXQiOworCisgICAgICBzaWcuZ2V0S2V5SW5mbygpLmFkZEtleU5hbWUoIlRoZSBVVEYtOCBvY3RldHMgb2YgXCIiICsgc2VjcmV0S2V5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiXCIgYXJlIHVzZWQgZm9yIHNpZ25pbmcgKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHNlY3JldEtleS5sZW5ndGgoKSArICIgb2N0ZXRzKSIpOworICAgICAgc2lnLnNpZ24oc2lnLmNyZWF0ZVNlY3JldEtleShzZWNyZXRLZXkuZ2V0Qnl0ZXMoKSkpOworCisgICAgICBDYW5vbmljYWxpemVyIGMxNG4gPQorICAgICAgICAgQ2Fub25pY2FsaXplci5nZXRJbnN0YW5jZShDYW5vbmljYWxpemVyLkFMR09fSURfQzE0Tl9XSVRIX0NPTU1FTlRTKTsKKyAgICAgIGJ5dGVbXSBmdWxsID0gYzE0bi5jYW5vbmljYWxpemVTdWJ0cmVlKGRvYyk7CisgICAgICBieXRlW10gcmVmID0gc2lnLmdldFNpZ25lZEluZm8oKS5pdGVtKDApLmdldFRyYW5zZm9ybXNPdXRwdXQoKS5nZXRCeXRlcygpOworICAgICAgYnl0ZVtdW10gcmVzdWx0ID0geworICAgICAgICAgZnVsbCwgcmVmCisgICAgICB9OworCisgICAgICAvLyB3ZSByZW1vdmUgdGhlIHNpZ25hdHVyZSBub3cKKyAgICAgIHNpZy5nZXRFbGVtZW50KCkuZ2V0UGFyZW50Tm9kZSgpLnJlbW92ZUNoaWxkKHNpZy5nZXRFbGVtZW50KCkpOworCisgICAgICByZXR1cm4gcmVzdWx0OworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB4ZmlsdGVyMnNwZWNfYXBhY2hlZmlsdGVyCisgICAgKgorICAgICogQHBhcmFtIGRvYworICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgYnl0ZVtdW10geGZpbHRlcjJzcGVjX2FwYWNoZWZpbHRlcl8zKERvY3VtZW50IGRvYykKKyAgICAgICAgICAgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIFhNTFNpZ25hdHVyZSBzaWcgPSBuZXcgWE1MU2lnbmF0dXJlKGRvYywgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTFNpZ25hdHVyZS5BTEdPX0lEX01BQ19ITUFDX1NIQTEpOworCisgICAgICBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCkuYXBwZW5kQ2hpbGQoc2lnLmdldEVsZW1lbnQoKSk7CisKKyAgICAgIFRyYW5zZm9ybXMgdHJhbnNmb3JtcyA9IG5ldyBUcmFuc2Zvcm1zKGRvYyk7CisKKyAgICAgIHsKKyAgICAgICAgIFN0cmluZyBpbmNsdWRlQnV0U2VhcmNoID0gIi8vVG9CZVNpZ25lZCB8IC8vUmVhbGx5VG9CZVNpZ25lZCI7CisgICAgICAgICBTdHJpbmcgZXhjbHVkZUJ1dFNlYXJjaCA9ICIvL05vdFRvQmVTaWduZWQiOworICAgICAgICAgU3RyaW5nIGV4Y2x1ZGUgPSAiaGVyZSgpL2FuY2VzdG9yOjpkczpTaWduYXR1cmVbMV0iOworICAgICAgICAgWFBhdGhGaWx0ZXJDSEdQQ29udGFpbmVyIHhwYXRoQ29udGFpbmVyID0KKyAgICAgICAgICAgIFhQYXRoRmlsdGVyQ0hHUENvbnRhaW5lcgorICAgICAgICAgICAgICAgLmdldEluc3RhbmNlKGRvYywgWFBhdGhGaWx0ZXJDSEdQQ29udGFpbmVyCisgICAgICAgICAgICAgICAgICAuRXhjbHVkZVNsYXNoLCBpbmNsdWRlQnV0U2VhcmNoLCBleGNsdWRlQnV0U2VhcmNoLCBleGNsdWRlKTsKKworICAgICAgICAgeHBhdGhDb250YWluZXIuc2V0WFBhdGhOYW1lc3BhY2VDb250ZXh0KCJkcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUyk7CisgICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSEZJTFRFUkNIR1AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4cGF0aENvbnRhaW5lci5nZXRFbGVtZW50KCkpOworICAgICAgfQorCisgICAgICBzaWcuYWRkRG9jdW1lbnQoIiIsIHRyYW5zZm9ybXMpOworCisgICAgICBTdHJpbmcgc2VjcmV0S2V5ID0gInNlY3JldCI7CisKKyAgICAgIHNpZy5nZXRLZXlJbmZvKCkuYWRkS2V5TmFtZSgiVGhlIFVURi04IG9jdGV0cyBvZiBcIiIgKyBzZWNyZXRLZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJcIiBhcmUgdXNlZCBmb3Igc2lnbmluZyAoIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc2VjcmV0S2V5Lmxlbmd0aCgpICsgIiBvY3RldHMpIik7CisgICAgICBzaWcuc2lnbihzaWcuY3JlYXRlU2VjcmV0S2V5KHNlY3JldEtleS5nZXRCeXRlcygpKSk7CisKKyAgICAgIENhbm9uaWNhbGl6ZXIgYzE0biA9CisgICAgICAgICBDYW5vbmljYWxpemVyLmdldEluc3RhbmNlKENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX1dJVEhfQ09NTUVOVFMpOworICAgICAgYnl0ZVtdIGZ1bGwgPSBjMTRuLmNhbm9uaWNhbGl6ZVN1YnRyZWUoZG9jKTsKKyAgICAgIGJ5dGVbXSByZWYgPSBzaWcuZ2V0U2lnbmVkSW5mbygpLml0ZW0oMCkuZ2V0VHJhbnNmb3Jtc091dHB1dCgpLmdldEJ5dGVzKCk7CisgICAgICBieXRlW11bXSByZXN1bHQgPSB7CisgICAgICAgICBmdWxsLCByZWYKKyAgICAgIH07CisKKyAgICAgIC8vIHdlIHJlbW92ZSB0aGUgc2lnbmF0dXJlIG5vdworICAgICAgc2lnLmdldEVsZW1lbnQoKS5nZXRQYXJlbnROb2RlKCkucmVtb3ZlQ2hpbGQoc2lnLmdldEVsZW1lbnQoKSk7CisKKyAgICAgIHJldHVybiByZXN1bHQ7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGNoZWNrTWVybGluc1NhbXBsZQorICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBjaGVja01lcmxpbnNTYW1wbGUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisKKyAgICAgIGRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKworICAgICAgRG9jdW1lbnRCdWlsZGVyIGRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOworICAgICAgRmlsZSBmID0gbmV3IEZpbGUoCisgICAgICAgICAiZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWZpbHRlcjItb25lL3NpZ24teGZkbC54bWwiKTsKKyAgICAgIERvY3VtZW50IGRvYyA9IGRiLnBhcnNlKG5ldyBGaWxlSW5wdXRTdHJlYW0oZikpOworICAgICAgWE1MU2lnbmF0dXJlIHNpZyA9CisgICAgICAgICBuZXcgWE1MU2lnbmF0dXJlKChFbGVtZW50KSBkb2MKKyAgICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMsICJTaWduYXR1cmUiKQorICAgICAgICAgICAgICAgLml0ZW0oMCksIGYudG9VUkwoKS50b1N0cmluZygpKTsKKworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJTaWduYXR1cmUgZXJ6ZXVndCIpOworCisgICAgICBib29sZWFuIHYgPSBzaWcuY2hlY2tTaWduYXR1cmVWYWx1ZShzaWcuZ2V0S2V5SW5mbygpLmdldFB1YmxpY0tleSgpKTsKKworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJNZXJsaW46ICIgKyB2KTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgYXBhY2hlc2FtcGxlX2FwYWNoZWZpbHRlcl8xCisgICAgKgorICAgICogQHBhcmFtIGRvYworICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgYnl0ZVtdW10gYXBhY2hlc2FtcGxlX2FwYWNoZWZpbHRlcl8xKERvY3VtZW50IGRvYykKKyAgICAgICAgICAgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZyBpbmNsdWRlQnV0U2VhcmNoU3RyID0gIi8vRSI7CisgICAgICBTdHJpbmcgZXhjbHVkZUJ1dFNlYXJjaFN0ciA9IG51bGw7CisgICAgICBTdHJpbmcgZXhjbHVkZVN0ciA9IG51bGw7CisgICAgICBib29sZWFuIGluY2x1ZGVTbGFzaFBvbGljeSA9IFhQYXRoRmlsdGVyQ0hHUENvbnRhaW5lci5FeGNsdWRlU2xhc2g7CisKKyAgICAgIHJldHVybiBUcmFuc2Zvcm1QZXJmb3JtYW5jZVRlc3Rlci5hcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyX3goZG9jLAorICAgICAgICAgICAgICBpbmNsdWRlU2xhc2hQb2xpY3ksIGluY2x1ZGVCdXRTZWFyY2hTdHIsIGV4Y2x1ZGVCdXRTZWFyY2hTdHIsCisgICAgICAgICAgICAgIGV4Y2x1ZGVTdHIpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBhcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyXzIKKyAgICAqCisgICAgKiBAcGFyYW0gZG9jCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyBieXRlW11bXSBhcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyXzIoRG9jdW1lbnQgZG9jKQorICAgICAgICAgICB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIGluY2x1ZGVCdXRTZWFyY2hTdHIgPSAiLy9CIHwgLy9FIjsKKyAgICAgIFN0cmluZyBleGNsdWRlQnV0U2VhcmNoU3RyID0gbnVsbDsKKyAgICAgIFN0cmluZyBleGNsdWRlU3RyID0gbnVsbDsKKyAgICAgIGJvb2xlYW4gaW5jbHVkZVNsYXNoUG9saWN5ID0gWFBhdGhGaWx0ZXJDSEdQQ29udGFpbmVyLkV4Y2x1ZGVTbGFzaDsKKworICAgICAgcmV0dXJuIFRyYW5zZm9ybVBlcmZvcm1hbmNlVGVzdGVyLmFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfeChkb2MsCisgICAgICAgICAgICAgIGluY2x1ZGVTbGFzaFBvbGljeSwgaW5jbHVkZUJ1dFNlYXJjaFN0ciwgZXhjbHVkZUJ1dFNlYXJjaFN0ciwKKyAgICAgICAgICAgICAgZXhjbHVkZVN0cik7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfMworICAgICoKKyAgICAqIEBwYXJhbSBkb2MKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIGJ5dGVbXVtdIGFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfMyhEb2N1bWVudCBkb2MpCisgICAgICAgICAgIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgaW5jbHVkZUJ1dFNlYXJjaFN0ciA9ICIvL0IgfCAvL0UiOworICAgICAgU3RyaW5nIGV4Y2x1ZGVCdXRTZWFyY2hTdHIgPSAiLy9DIjsKKyAgICAgIFN0cmluZyBleGNsdWRlU3RyID0gbnVsbDsKKyAgICAgIGJvb2xlYW4gaW5jbHVkZVNsYXNoUG9saWN5ID0gWFBhdGhGaWx0ZXJDSEdQQ29udGFpbmVyLkV4Y2x1ZGVTbGFzaDsKKworICAgICAgcmV0dXJuIFRyYW5zZm9ybVBlcmZvcm1hbmNlVGVzdGVyLmFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfeChkb2MsCisgICAgICAgICAgICAgIGluY2x1ZGVTbGFzaFBvbGljeSwgaW5jbHVkZUJ1dFNlYXJjaFN0ciwgZXhjbHVkZUJ1dFNlYXJjaFN0ciwKKyAgICAgICAgICAgICAgZXhjbHVkZVN0cik7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfNAorICAgICoKKyAgICAqIEBwYXJhbSBkb2MKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIGJ5dGVbXVtdIGFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfNChEb2N1bWVudCBkb2MpCisgICAgICAgICAgIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgaW5jbHVkZUJ1dFNlYXJjaFN0ciA9ICIvL0IgfCAvL0UgfCAvL0YiOworICAgICAgU3RyaW5nIGV4Y2x1ZGVCdXRTZWFyY2hTdHIgPSAiLy9DIjsKKyAgICAgIFN0cmluZyBleGNsdWRlU3RyID0gbnVsbDsKKyAgICAgIGJvb2xlYW4gaW5jbHVkZVNsYXNoUG9saWN5ID0gWFBhdGhGaWx0ZXJDSEdQQ29udGFpbmVyLkV4Y2x1ZGVTbGFzaDsKKworICAgICAgcmV0dXJuIFRyYW5zZm9ybVBlcmZvcm1hbmNlVGVzdGVyLmFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfeChkb2MsCisgICAgICAgICAgICAgIGluY2x1ZGVTbGFzaFBvbGljeSwgaW5jbHVkZUJ1dFNlYXJjaFN0ciwgZXhjbHVkZUJ1dFNlYXJjaFN0ciwKKyAgICAgICAgICAgICAgZXhjbHVkZVN0cik7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfNQorICAgICoKKyAgICAqIEBwYXJhbSBkb2MKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIGJ5dGVbXVtdIGFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfNShEb2N1bWVudCBkb2MpCisgICAgICAgICAgIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgaW5jbHVkZUJ1dFNlYXJjaFN0ciA9ICIvL0IgfCAvL0UgfCAvL0YiOworICAgICAgU3RyaW5nIGV4Y2x1ZGVCdXRTZWFyY2hTdHIgPSAiLy9DIHwgLy9HIjsKKyAgICAgIFN0cmluZyBleGNsdWRlU3RyID0gbnVsbDsKKyAgICAgIGJvb2xlYW4gaW5jbHVkZVNsYXNoUG9saWN5ID0gWFBhdGhGaWx0ZXJDSEdQQ29udGFpbmVyLkV4Y2x1ZGVTbGFzaDsKKworICAgICAgcmV0dXJuIFRyYW5zZm9ybVBlcmZvcm1hbmNlVGVzdGVyLmFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfeChkb2MsCisgICAgICAgICAgICAgIGluY2x1ZGVTbGFzaFBvbGljeSwgaW5jbHVkZUJ1dFNlYXJjaFN0ciwgZXhjbHVkZUJ1dFNlYXJjaFN0ciwKKyAgICAgICAgICAgICAgZXhjbHVkZVN0cik7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfNgorICAgICoKKyAgICAqIEBwYXJhbSBkb2MKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIGJ5dGVbXVtdIGFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfNihEb2N1bWVudCBkb2MpCisgICAgICAgICAgIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgaW5jbHVkZUJ1dFNlYXJjaFN0ciA9ICIvL0IgfCAvL0UgfCAvL0YgfCAvL0ggIjsKKyAgICAgIFN0cmluZyBleGNsdWRlQnV0U2VhcmNoU3RyID0gIi8vQyB8IC8vRyI7CisgICAgICBTdHJpbmcgZXhjbHVkZVN0ciA9IG51bGw7CisgICAgICBib29sZWFuIGluY2x1ZGVTbGFzaFBvbGljeSA9IFhQYXRoRmlsdGVyQ0hHUENvbnRhaW5lci5FeGNsdWRlU2xhc2g7CisKKyAgICAgIHJldHVybiBUcmFuc2Zvcm1QZXJmb3JtYW5jZVRlc3Rlci5hcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyX3goZG9jLAorICAgICAgICAgICAgICBpbmNsdWRlU2xhc2hQb2xpY3ksIGluY2x1ZGVCdXRTZWFyY2hTdHIsIGV4Y2x1ZGVCdXRTZWFyY2hTdHIsCisgICAgICAgICAgICAgIGV4Y2x1ZGVTdHIpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBhcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyXzcKKyAgICAqCisgICAgKiBAcGFyYW0gZG9jCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyBieXRlW11bXSBhcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyXzcoRG9jdW1lbnQgZG9jKQorICAgICAgICAgICB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIGluY2x1ZGVCdXRTZWFyY2hTdHIgPSAiLy9CIHwgLy9FIHwgLy9GIHwgLy9IIjsKKyAgICAgIFN0cmluZyBleGNsdWRlQnV0U2VhcmNoU3RyID0gIi8vQyB8IC8vRyB8IC8vQHg6YXR0ciI7CisgICAgICBTdHJpbmcgZXhjbHVkZVN0ciA9IG51bGw7CisgICAgICBib29sZWFuIGluY2x1ZGVTbGFzaFBvbGljeSA9IFhQYXRoRmlsdGVyQ0hHUENvbnRhaW5lci5FeGNsdWRlU2xhc2g7CisKKyAgICAgIHJldHVybiBUcmFuc2Zvcm1QZXJmb3JtYW5jZVRlc3Rlci5hcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyX3goZG9jLAorICAgICAgICAgICAgICBpbmNsdWRlU2xhc2hQb2xpY3ksIGluY2x1ZGVCdXRTZWFyY2hTdHIsIGV4Y2x1ZGVCdXRTZWFyY2hTdHIsCisgICAgICAgICAgICAgIGV4Y2x1ZGVTdHIpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBhcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyXzdfb3B0aW1hbAorICAgICoKKyAgICAqIEBwYXJhbSBkb2MKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIGJ5dGVbXVtdIGFwYWNoZXNhbXBsZV9hcGFjaGVmaWx0ZXJfN19vcHRpbWFsKERvY3VtZW50IGRvYykKKyAgICAgICAgICAgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZyBpbmNsdWRlQnV0U2VhcmNoU3RyID0gIi8vQiB8IC8vRSB8IC8vRiB8IC8vSCI7CisgICAgICBTdHJpbmcgZXhjbHVkZUJ1dFNlYXJjaFN0ciA9ICIvL0ciOworICAgICAgU3RyaW5nIGV4Y2x1ZGVTdHIgPSAiLy9DIHwgLy9EIHwgLy9AeDphdHRyICI7CisgICAgICBib29sZWFuIGluY2x1ZGVTbGFzaFBvbGljeSA9IFhQYXRoRmlsdGVyQ0hHUENvbnRhaW5lci5FeGNsdWRlU2xhc2g7CisKKyAgICAgIHJldHVybiBUcmFuc2Zvcm1QZXJmb3JtYW5jZVRlc3Rlci5hcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyX3goZG9jLAorICAgICAgICAgICAgICBpbmNsdWRlU2xhc2hQb2xpY3ksIGluY2x1ZGVCdXRTZWFyY2hTdHIsIGV4Y2x1ZGVCdXRTZWFyY2hTdHIsCisgICAgICAgICAgICAgIGV4Y2x1ZGVTdHIpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBhcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyX3gKKyAgICAqCisgICAgKiBAcGFyYW0gZG9jCisgICAgKiBAcGFyYW0gaW5jbHVkZVNsYXNoUG9saWN5CisgICAgKiBAcGFyYW0gaW5jbHVkZUJ1dFNlYXJjaFN0cgorICAgICogQHBhcmFtIGV4Y2x1ZGVCdXRTZWFyY2hTdHIKKyAgICAqIEBwYXJhbSBleGNsdWRlU3RyCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyBieXRlW11bXSBhcGFjaGVzYW1wbGVfYXBhY2hlZmlsdGVyX3goCisgICAgICAgICAgIERvY3VtZW50IGRvYywgYm9vbGVhbiBpbmNsdWRlU2xhc2hQb2xpY3ksIFN0cmluZyBpbmNsdWRlQnV0U2VhcmNoU3RyLCBTdHJpbmcgZXhjbHVkZUJ1dFNlYXJjaFN0ciwgU3RyaW5nIGV4Y2x1ZGVTdHIpCisgICAgICAgICAgICAgIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBYTUxTaWduYXR1cmUgc2lnID0gbmV3IFhNTFNpZ25hdHVyZShkb2MsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmUuQUxHT19JRF9NQUNfSE1BQ19TSEExKTsKKworICAgICAgZG9jLmdldERvY3VtZW50RWxlbWVudCgpLmFwcGVuZENoaWxkKHNpZy5nZXRFbGVtZW50KCkpOworCisgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICB7CisgICAgICAgICBYUGF0aEZpbHRlckNIR1BDb250YWluZXIgeHBhdGhDb250YWluZXIgPQorICAgICAgICAgICAgWFBhdGhGaWx0ZXJDSEdQQ29udGFpbmVyLmdldEluc3RhbmNlKGRvYywgaW5jbHVkZVNsYXNoUG9saWN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVCdXRTZWFyY2hTdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUJ1dFNlYXJjaFN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNsdWRlU3RyKTsKKworICAgICAgICAgeHBhdGhDb250YWluZXIuc2V0WFBhdGhOYW1lc3BhY2VDb250ZXh0KCJkcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUyk7CisgICAgICAgICB4cGF0aENvbnRhaW5lci5zZXRYUGF0aE5hbWVzcGFjZUNvbnRleHQoIngiLCAiaHR0cDovL2Zvby5iYXIvIik7CisgICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSEZJTFRFUkNIR1AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4cGF0aENvbnRhaW5lci5nZXRFbGVtZW50KCkpOworICAgICAgfQorCisgICAgICBzaWcuYWRkRG9jdW1lbnQoIiIsIHRyYW5zZm9ybXMpOworCisgICAgICBTdHJpbmcgc2VjcmV0S2V5ID0gInNlY3JldCI7CisKKyAgICAgIHNpZy5nZXRLZXlJbmZvKCkuYWRkS2V5TmFtZSgiVGhlIFVURi04IG9jdGV0cyBvZiBcIiIgKyBzZWNyZXRLZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJcIiBhcmUgdXNlZCBmb3Igc2lnbmluZyAoIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc2VjcmV0S2V5Lmxlbmd0aCgpICsgIiBvY3RldHMpIik7CisgICAgICBzaWcuc2lnbihzaWcuY3JlYXRlU2VjcmV0S2V5KHNlY3JldEtleS5nZXRCeXRlcygpKSk7CisKKyAgICAgIENhbm9uaWNhbGl6ZXIgYzE0biA9CisgICAgICAgICBDYW5vbmljYWxpemVyLmdldEluc3RhbmNlKENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX1dJVEhfQ09NTUVOVFMpOworICAgICAgYnl0ZVtdIGZ1bGwgPSBjMTRuLmNhbm9uaWNhbGl6ZVN1YnRyZWUoZG9jKTsKKyAgICAgIGJ5dGVbXSByZWYgPSBzaWcuZ2V0U2lnbmVkSW5mbygpLml0ZW0oMCkuZ2V0VHJhbnNmb3Jtc091dHB1dCgpLmdldEJ5dGVzKCk7CisgICAgICBieXRlW11bXSByZXN1bHQgPSB7CisgICAgICAgICBmdWxsLCByZWYKKyAgICAgIH07CisKKyAgICAgIC8vIHdlIHJlbW92ZSB0aGUgc2lnbmF0dXJlIG5vdworICAgICAgc2lnLmdldEVsZW1lbnQoKS5nZXRQYXJlbnROb2RlKCkucmVtb3ZlQ2hpbGQoc2lnLmdldEVsZW1lbnQoKSk7CisKKyAgICAgIHJldHVybiByZXN1bHQ7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGFwYWNoZXNhbXBsZV94ZmlsdGVyMl8xCisgICAgKgorICAgICogQHBhcmFtIGRvYworICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgYnl0ZVtdW10gYXBhY2hlc2FtcGxlX3hmaWx0ZXIyXzEoRG9jdW1lbnQgZG9jKQorICAgICAgICAgICB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgWE1MU2lnbmF0dXJlIHNpZyA9IG5ldyBYTUxTaWduYXR1cmUoZG9jLCBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MU2lnbmF0dXJlLkFMR09fSURfTUFDX0hNQUNfU0hBMSk7CisKKyAgICAgIGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKS5hcHBlbmRDaGlsZChzaWcuZ2V0RWxlbWVudCgpKTsKKworICAgICAgVHJhbnNmb3JtcyB0cmFuc2Zvcm1zID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKworICAgICAgeworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5ld0luc3RhbmNlSW50ZXJzZWN0KGRvYywgIi8vRSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0RWxlbWVudCgpKTsKKworICAgICAgICAgLyoKKyAgICAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRIMkZJTFRFUjA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFBhdGgyRmlsdGVyQ29udGFpbmVyMDQubmV3SW5zdGFuY2VVbmlvbihkb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLy9CIikuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRIMkZJTFRFUjA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFBhdGgyRmlsdGVyQ29udGFpbmVyMDQubmV3SW5zdGFuY2VTdWJ0cmFjdChkb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLy9DIikuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRIMkZJTFRFUjA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFBhdGgyRmlsdGVyQ29udGFpbmVyMDQubmV3SW5zdGFuY2VVbmlvbihkb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLy9GIikuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRIMkZJTFRFUjA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFBhdGgyRmlsdGVyQ29udGFpbmVyMDQubmV3SW5zdGFuY2VTdWJ0cmFjdChkb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLy9HIikuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRIMkZJTFRFUjA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFBhdGgyRmlsdGVyQ29udGFpbmVyMDQubmV3SW5zdGFuY2VVbmlvbihkb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLy9IIikuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRIMkZJTFRFUjA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFBhdGgyRmlsdGVyQ29udGFpbmVyMDQubmV3SW5zdGFuY2VTdWJ0cmFjdChkb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLy9AeDphdHRyIikuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgICovCisgICAgICAgICB0cmFuc2Zvcm1zLnNldFhQYXRoTmFtZXNwYWNlQ29udGV4dCgieG1sbnM6eCIsICJodHRwOi8vZm9vLmJhci8iKTsKKyAgICAgICAgIHRyYW5zZm9ybXMKKyAgICAgICAgICAgIC5zZXRYUGF0aE5hbWVzcGFjZUNvbnRleHQoVHJhbnNmb3JtcworICAgICAgICAgICAgICAgLmdldERlZmF1bHRQcmVmaXgoVHJhbnNmb3JtcworICAgICAgICAgICAgICAgLlRSQU5TRk9STV9YUEFUSDJGSUxURVIwNCksIFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRIMkZJTFRFUjA0KTsKKyAgICAgIH0KKworICAgICAgc2lnLmFkZERvY3VtZW50KCIiLCB0cmFuc2Zvcm1zKTsKKworICAgICAgU3RyaW5nIHNlY3JldEtleSA9ICJzZWNyZXQiOworCisgICAgICBzaWcuZ2V0S2V5SW5mbygpLmFkZEtleU5hbWUoIlRoZSBVVEYtOCBvY3RldHMgb2YgXCIiICsgc2VjcmV0S2V5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiXCIgYXJlIHVzZWQgZm9yIHNpZ25pbmcgKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHNlY3JldEtleS5sZW5ndGgoKSArICIgb2N0ZXRzKSIpOworICAgICAgc2lnLnNpZ24oc2lnLmNyZWF0ZVNlY3JldEtleShzZWNyZXRLZXkuZ2V0Qnl0ZXMoKSkpOworCisgICAgICBDYW5vbmljYWxpemVyIGMxNG4gPQorICAgICAgICAgQ2Fub25pY2FsaXplci5nZXRJbnN0YW5jZShDYW5vbmljYWxpemVyLkFMR09fSURfQzE0Tl9XSVRIX0NPTU1FTlRTKTsKKyAgICAgIGJ5dGVbXSBmdWxsID0gYzE0bi5jYW5vbmljYWxpemVTdWJ0cmVlKGRvYyk7CisgICAgICBieXRlW10gcmVmID0gc2lnLmdldFNpZ25lZEluZm8oKS5pdGVtKDApLmdldFRyYW5zZm9ybXNPdXRwdXQoKS5nZXRCeXRlcygpOworICAgICAgYnl0ZVtdW10gcmVzdWx0ID0geworICAgICAgICAgZnVsbCwgcmVmCisgICAgICB9OworCisgICAgICAvLyB3ZSByZW1vdmUgdGhlIHNpZ25hdHVyZSBub3cKKyAgICAgIHNpZy5nZXRFbGVtZW50KCkuZ2V0UGFyZW50Tm9kZSgpLnJlbW92ZUNoaWxkKHNpZy5nZXRFbGVtZW50KCkpOworCisgICAgICByZXR1cm4gcmVzdWx0OworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBhcGFjaGVzYW1wbGVfeGZpbHRlcjJfMgorICAgICoKKyAgICAqIEBwYXJhbSBkb2MKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIGJ5dGVbXVtdIGFwYWNoZXNhbXBsZV94ZmlsdGVyMl8yKERvY3VtZW50IGRvYykKKyAgICAgICAgICAgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIFhNTFNpZ25hdHVyZSBzaWcgPSBuZXcgWE1MU2lnbmF0dXJlKGRvYywgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTFNpZ25hdHVyZS5BTEdPX0lEX01BQ19ITUFDX1NIQTEpOworCisgICAgICBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCkuYXBwZW5kQ2hpbGQoc2lnLmdldEVsZW1lbnQoKSk7CisKKyAgICAgIFRyYW5zZm9ybXMgdHJhbnNmb3JtcyA9IG5ldyBUcmFuc2Zvcm1zKGRvYyk7CisKKyAgICAgIHsKKyAgICAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRIMkZJTFRFUjA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFBhdGgyRmlsdGVyQ29udGFpbmVyMDQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5uZXdJbnN0YW5jZUludGVyc2VjdChkb2MsICIvL0UiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldEVsZW1lbnQoKSk7CisgICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIwNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lcjA0Lm5ld0luc3RhbmNlVW5pb24oZG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8vQiIpLmdldEVsZW1lbnQoKSk7CisKKyAgICAgICAgIC8qCisgICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIwNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lcjA0Lm5ld0luc3RhbmNlU3VidHJhY3QoZG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8vQyIpLmdldEVsZW1lbnQoKSk7CisgICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIwNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lcjA0Lm5ld0luc3RhbmNlVW5pb24oZG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8vRiIpLmdldEVsZW1lbnQoKSk7CisgICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIwNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lcjA0Lm5ld0luc3RhbmNlU3VidHJhY3QoZG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8vRyIpLmdldEVsZW1lbnQoKSk7CisgICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIwNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lcjA0Lm5ld0luc3RhbmNlVW5pb24oZG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8vSCIpLmdldEVsZW1lbnQoKSk7CisgICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIwNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lcjA0Lm5ld0luc3RhbmNlU3VidHJhY3QoZG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8vQHg6YXR0ciIpLmdldEVsZW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgdHJhbnNmb3Jtcy5zZXRYUGF0aE5hbWVzcGFjZUNvbnRleHQoInhtbG5zOngiLCAiaHR0cDovL2Zvby5iYXIvIik7CisgICAgICAgICB0cmFuc2Zvcm1zCisgICAgICAgICAgICAuc2V0WFBhdGhOYW1lc3BhY2VDb250ZXh0KFRyYW5zZm9ybXMKKyAgICAgICAgICAgICAgIC5nZXREZWZhdWx0UHJlZml4KFRyYW5zZm9ybXMKKyAgICAgICAgICAgICAgIC5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQpLCBUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIwNCk7CisgICAgICB9CisKKyAgICAgIHNpZy5hZGREb2N1bWVudCgiIiwgdHJhbnNmb3Jtcyk7CisKKyAgICAgIFN0cmluZyBzZWNyZXRLZXkgPSAic2VjcmV0IjsKKworICAgICAgc2lnLmdldEtleUluZm8oKS5hZGRLZXlOYW1lKCJUaGUgVVRGLTggb2N0ZXRzIG9mIFwiIiArIHNlY3JldEtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIlwiIGFyZSB1c2VkIGZvciBzaWduaW5nICgiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzZWNyZXRLZXkubGVuZ3RoKCkgKyAiIG9jdGV0cykiKTsKKyAgICAgIHNpZy5zaWduKHNpZy5jcmVhdGVTZWNyZXRLZXkoc2VjcmV0S2V5LmdldEJ5dGVzKCkpKTsKKworICAgICAgQ2Fub25pY2FsaXplciBjMTRuID0KKyAgICAgICAgIENhbm9uaWNhbGl6ZXIuZ2V0SW5zdGFuY2UoQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fV0lUSF9DT01NRU5UUyk7CisgICAgICBieXRlW10gZnVsbCA9IGMxNG4uY2Fub25pY2FsaXplU3VidHJlZShkb2MpOworICAgICAgYnl0ZVtdIHJlZiA9IHNpZy5nZXRTaWduZWRJbmZvKCkuaXRlbSgwKS5nZXRUcmFuc2Zvcm1zT3V0cHV0KCkuZ2V0Qnl0ZXMoKTsKKyAgICAgIGJ5dGVbXVtdIHJlc3VsdCA9IHsKKyAgICAgICAgIGZ1bGwsIHJlZgorICAgICAgfTsKKworICAgICAgLy8gd2UgcmVtb3ZlIHRoZSBzaWduYXR1cmUgbm93CisgICAgICBzaWcuZ2V0RWxlbWVudCgpLmdldFBhcmVudE5vZGUoKS5yZW1vdmVDaGlsZChzaWcuZ2V0RWxlbWVudCgpKTsKKworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgYXBhY2hlc2FtcGxlX3hmaWx0ZXIyXzMKKyAgICAqCisgICAgKiBAcGFyYW0gZG9jCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyBieXRlW11bXSBhcGFjaGVzYW1wbGVfeGZpbHRlcjJfMyhEb2N1bWVudCBkb2MpCisgICAgICAgICAgIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBYTUxTaWduYXR1cmUgc2lnID0gbmV3IFhNTFNpZ25hdHVyZShkb2MsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmUuQUxHT19JRF9NQUNfSE1BQ19TSEExKTsKKworICAgICAgZG9jLmdldERvY3VtZW50RWxlbWVudCgpLmFwcGVuZENoaWxkKHNpZy5nZXRFbGVtZW50KCkpOworCisgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICB7CisgICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIwNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lcjA0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubmV3SW5zdGFuY2VJbnRlcnNlY3QoZG9jLCAiLy9FIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRFbGVtZW50KCkpOworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNC5uZXdJbnN0YW5jZVVuaW9uKGRvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvL0IiKS5nZXRFbGVtZW50KCkpOworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5ld0luc3RhbmNlU3VidHJhY3QoZG9jLCAiLy9DIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRFbGVtZW50KCkpOworICAgICAgICAgdHJhbnNmb3Jtcy5zZXRYUGF0aE5hbWVzcGFjZUNvbnRleHQoInhtbG5zOngiLCAiaHR0cDovL2Zvby5iYXIvIik7CisgICAgICAgICB0cmFuc2Zvcm1zCisgICAgICAgICAgICAuc2V0WFBhdGhOYW1lc3BhY2VDb250ZXh0KFRyYW5zZm9ybXMKKyAgICAgICAgICAgICAgIC5nZXREZWZhdWx0UHJlZml4KFRyYW5zZm9ybXMKKyAgICAgICAgICAgICAgIC5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQpLCBUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIwNCk7CisgICAgICB9CisKKyAgICAgIHNpZy5hZGREb2N1bWVudCgiIiwgdHJhbnNmb3Jtcyk7CisKKyAgICAgIFN0cmluZyBzZWNyZXRLZXkgPSAic2VjcmV0IjsKKworICAgICAgc2lnLmdldEtleUluZm8oKS5hZGRLZXlOYW1lKCJUaGUgVVRGLTggb2N0ZXRzIG9mIFwiIiArIHNlY3JldEtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIlwiIGFyZSB1c2VkIGZvciBzaWduaW5nICgiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzZWNyZXRLZXkubGVuZ3RoKCkgKyAiIG9jdGV0cykiKTsKKyAgICAgIHNpZy5zaWduKHNpZy5jcmVhdGVTZWNyZXRLZXkoc2VjcmV0S2V5LmdldEJ5dGVzKCkpKTsKKworICAgICAgQ2Fub25pY2FsaXplciBjMTRuID0KKyAgICAgICAgIENhbm9uaWNhbGl6ZXIuZ2V0SW5zdGFuY2UoQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fV0lUSF9DT01NRU5UUyk7CisgICAgICBieXRlW10gZnVsbCA9IGMxNG4uY2Fub25pY2FsaXplU3VidHJlZShkb2MpOworICAgICAgYnl0ZVtdIHJlZiA9IHNpZy5nZXRTaWduZWRJbmZvKCkuaXRlbSgwKS5nZXRUcmFuc2Zvcm1zT3V0cHV0KCkuZ2V0Qnl0ZXMoKTsKKyAgICAgIGJ5dGVbXVtdIHJlc3VsdCA9IHsKKyAgICAgICAgIGZ1bGwsIHJlZgorICAgICAgfTsKKworICAgICAgLy8gd2UgcmVtb3ZlIHRoZSBzaWduYXR1cmUgbm93CisgICAgICBzaWcuZ2V0RWxlbWVudCgpLmdldFBhcmVudE5vZGUoKS5yZW1vdmVDaGlsZChzaWcuZ2V0RWxlbWVudCgpKTsKKworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgYXBhY2hlc2FtcGxlX3hmaWx0ZXIyXzQKKyAgICAqCisgICAgKiBAcGFyYW0gZG9jCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyBieXRlW11bXSBhcGFjaGVzYW1wbGVfeGZpbHRlcjJfNChEb2N1bWVudCBkb2MpCisgICAgICAgICAgIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBYTUxTaWduYXR1cmUgc2lnID0gbmV3IFhNTFNpZ25hdHVyZShkb2MsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmUuQUxHT19JRF9NQUNfSE1BQ19TSEExKTsKKworICAgICAgZG9jLmdldERvY3VtZW50RWxlbWVudCgpLmFwcGVuZENoaWxkKHNpZy5nZXRFbGVtZW50KCkpOworCisgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICB7CisgICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIwNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lcjA0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubmV3SW5zdGFuY2VJbnRlcnNlY3QoZG9jLCAiLy9FIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRFbGVtZW50KCkpOworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNC5uZXdJbnN0YW5jZVVuaW9uKGRvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvL0IiKS5nZXRFbGVtZW50KCkpOworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5ld0luc3RhbmNlU3VidHJhY3QoZG9jLCAiLy9DIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRFbGVtZW50KCkpOworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNC5uZXdJbnN0YW5jZVVuaW9uKGRvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvL0YiKS5nZXRFbGVtZW50KCkpOworICAgICAgICAgdHJhbnNmb3Jtcy5zZXRYUGF0aE5hbWVzcGFjZUNvbnRleHQoInhtbG5zOngiLCAiaHR0cDovL2Zvby5iYXIvIik7CisgICAgICAgICB0cmFuc2Zvcm1zCisgICAgICAgICAgICAuc2V0WFBhdGhOYW1lc3BhY2VDb250ZXh0KFRyYW5zZm9ybXMKKyAgICAgICAgICAgICAgIC5nZXREZWZhdWx0UHJlZml4KFRyYW5zZm9ybXMKKyAgICAgICAgICAgICAgIC5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQpLCBUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIwNCk7CisgICAgICB9CisKKyAgICAgIHNpZy5hZGREb2N1bWVudCgiIiwgdHJhbnNmb3Jtcyk7CisKKyAgICAgIFN0cmluZyBzZWNyZXRLZXkgPSAic2VjcmV0IjsKKworICAgICAgc2lnLmdldEtleUluZm8oKS5hZGRLZXlOYW1lKCJUaGUgVVRGLTggb2N0ZXRzIG9mIFwiIiArIHNlY3JldEtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIlwiIGFyZSB1c2VkIGZvciBzaWduaW5nICgiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzZWNyZXRLZXkubGVuZ3RoKCkgKyAiIG9jdGV0cykiKTsKKyAgICAgIHNpZy5zaWduKHNpZy5jcmVhdGVTZWNyZXRLZXkoc2VjcmV0S2V5LmdldEJ5dGVzKCkpKTsKKworICAgICAgQ2Fub25pY2FsaXplciBjMTRuID0KKyAgICAgICAgIENhbm9uaWNhbGl6ZXIuZ2V0SW5zdGFuY2UoQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fV0lUSF9DT01NRU5UUyk7CisgICAgICBieXRlW10gZnVsbCA9IGMxNG4uY2Fub25pY2FsaXplU3VidHJlZShkb2MpOworICAgICAgYnl0ZVtdIHJlZiA9IHNpZy5nZXRTaWduZWRJbmZvKCkuaXRlbSgwKS5nZXRUcmFuc2Zvcm1zT3V0cHV0KCkuZ2V0Qnl0ZXMoKTsKKyAgICAgIGJ5dGVbXVtdIHJlc3VsdCA9IHsKKyAgICAgICAgIGZ1bGwsIHJlZgorICAgICAgfTsKKworICAgICAgLy8gd2UgcmVtb3ZlIHRoZSBzaWduYXR1cmUgbm93CisgICAgICBzaWcuZ2V0RWxlbWVudCgpLmdldFBhcmVudE5vZGUoKS5yZW1vdmVDaGlsZChzaWcuZ2V0RWxlbWVudCgpKTsKKworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgYXBhY2hlc2FtcGxlX3hmaWx0ZXIyXzUKKyAgICAqCisgICAgKiBAcGFyYW0gZG9jCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyBieXRlW11bXSBhcGFjaGVzYW1wbGVfeGZpbHRlcjJfNShEb2N1bWVudCBkb2MpCisgICAgICAgICAgIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBYTUxTaWduYXR1cmUgc2lnID0gbmV3IFhNTFNpZ25hdHVyZShkb2MsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmUuQUxHT19JRF9NQUNfSE1BQ19TSEExKTsKKworICAgICAgZG9jLmdldERvY3VtZW50RWxlbWVudCgpLmFwcGVuZENoaWxkKHNpZy5nZXRFbGVtZW50KCkpOworCisgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICB7CisgICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIwNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lcjA0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubmV3SW5zdGFuY2VJbnRlcnNlY3QoZG9jLCAiLy9FIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRFbGVtZW50KCkpOworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNC5uZXdJbnN0YW5jZVVuaW9uKGRvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvL0IiKS5nZXRFbGVtZW50KCkpOworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5ld0luc3RhbmNlU3VidHJhY3QoZG9jLCAiLy9DIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRFbGVtZW50KCkpOworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNC5uZXdJbnN0YW5jZVVuaW9uKGRvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvL0YiKS5nZXRFbGVtZW50KCkpOworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5ld0luc3RhbmNlU3VidHJhY3QoZG9jLCAiLy9HIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRFbGVtZW50KCkpOworICAgICAgICAgdHJhbnNmb3Jtcy5zZXRYUGF0aE5hbWVzcGFjZUNvbnRleHQoInhtbG5zOngiLCAiaHR0cDovL2Zvby5iYXIvIik7CisgICAgICAgICB0cmFuc2Zvcm1zCisgICAgICAgICAgICAuc2V0WFBhdGhOYW1lc3BhY2VDb250ZXh0KFRyYW5zZm9ybXMKKyAgICAgICAgICAgICAgIC5nZXREZWZhdWx0UHJlZml4KFRyYW5zZm9ybXMKKyAgICAgICAgICAgICAgIC5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQpLCBUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIwNCk7CisgICAgICB9CisKKyAgICAgIHNpZy5hZGREb2N1bWVudCgiIiwgdHJhbnNmb3Jtcyk7CisKKyAgICAgIFN0cmluZyBzZWNyZXRLZXkgPSAic2VjcmV0IjsKKworICAgICAgc2lnLmdldEtleUluZm8oKS5hZGRLZXlOYW1lKCJUaGUgVVRGLTggb2N0ZXRzIG9mIFwiIiArIHNlY3JldEtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIlwiIGFyZSB1c2VkIGZvciBzaWduaW5nICgiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzZWNyZXRLZXkubGVuZ3RoKCkgKyAiIG9jdGV0cykiKTsKKyAgICAgIHNpZy5zaWduKHNpZy5jcmVhdGVTZWNyZXRLZXkoc2VjcmV0S2V5LmdldEJ5dGVzKCkpKTsKKworICAgICAgQ2Fub25pY2FsaXplciBjMTRuID0KKyAgICAgICAgIENhbm9uaWNhbGl6ZXIuZ2V0SW5zdGFuY2UoQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fV0lUSF9DT01NRU5UUyk7CisgICAgICBieXRlW10gZnVsbCA9IGMxNG4uY2Fub25pY2FsaXplU3VidHJlZShkb2MpOworICAgICAgYnl0ZVtdIHJlZiA9IHNpZy5nZXRTaWduZWRJbmZvKCkuaXRlbSgwKS5nZXRUcmFuc2Zvcm1zT3V0cHV0KCkuZ2V0Qnl0ZXMoKTsKKyAgICAgIGJ5dGVbXVtdIHJlc3VsdCA9IHsKKyAgICAgICAgIGZ1bGwsIHJlZgorICAgICAgfTsKKworICAgICAgLy8gd2UgcmVtb3ZlIHRoZSBzaWduYXR1cmUgbm93CisgICAgICBzaWcuZ2V0RWxlbWVudCgpLmdldFBhcmVudE5vZGUoKS5yZW1vdmVDaGlsZChzaWcuZ2V0RWxlbWVudCgpKTsKKworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgYXBhY2hlc2FtcGxlX3hmaWx0ZXIyXzYKKyAgICAqCisgICAgKiBAcGFyYW0gZG9jCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyBieXRlW11bXSBhcGFjaGVzYW1wbGVfeGZpbHRlcjJfNihEb2N1bWVudCBkb2MpCisgICAgICAgICAgIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBYTUxTaWduYXR1cmUgc2lnID0gbmV3IFhNTFNpZ25hdHVyZShkb2MsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmUuQUxHT19JRF9NQUNfSE1BQ19TSEExKTsKKworICAgICAgZG9jLmdldERvY3VtZW50RWxlbWVudCgpLmFwcGVuZENoaWxkKHNpZy5nZXRFbGVtZW50KCkpOworCisgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICB7CisgICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIwNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lcjA0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubmV3SW5zdGFuY2VJbnRlcnNlY3QoZG9jLCAiLy9FIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRFbGVtZW50KCkpOworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNC5uZXdJbnN0YW5jZVVuaW9uKGRvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvL0IiKS5nZXRFbGVtZW50KCkpOworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5ld0luc3RhbmNlU3VidHJhY3QoZG9jLCAiLy9DIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRFbGVtZW50KCkpOworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNC5uZXdJbnN0YW5jZVVuaW9uKGRvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvL0YiKS5nZXRFbGVtZW50KCkpOworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5ld0luc3RhbmNlU3VidHJhY3QoZG9jLCAiLy9HIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRFbGVtZW50KCkpOworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNC5uZXdJbnN0YW5jZVVuaW9uKGRvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvL0giKS5nZXRFbGVtZW50KCkpOworICAgICAgICAgdHJhbnNmb3Jtcy5zZXRYUGF0aE5hbWVzcGFjZUNvbnRleHQoInhtbG5zOngiLCAiaHR0cDovL2Zvby5iYXIvIik7CisgICAgICAgICB0cmFuc2Zvcm1zCisgICAgICAgICAgICAuc2V0WFBhdGhOYW1lc3BhY2VDb250ZXh0KFRyYW5zZm9ybXMKKyAgICAgICAgICAgICAgIC5nZXREZWZhdWx0UHJlZml4KFRyYW5zZm9ybXMKKyAgICAgICAgICAgICAgIC5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQpLCBUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIwNCk7CisgICAgICB9CisKKyAgICAgIHNpZy5hZGREb2N1bWVudCgiIiwgdHJhbnNmb3Jtcyk7CisKKyAgICAgIFN0cmluZyBzZWNyZXRLZXkgPSAic2VjcmV0IjsKKworICAgICAgc2lnLmdldEtleUluZm8oKS5hZGRLZXlOYW1lKCJUaGUgVVRGLTggb2N0ZXRzIG9mIFwiIiArIHNlY3JldEtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIlwiIGFyZSB1c2VkIGZvciBzaWduaW5nICgiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzZWNyZXRLZXkubGVuZ3RoKCkgKyAiIG9jdGV0cykiKTsKKyAgICAgIHNpZy5zaWduKHNpZy5jcmVhdGVTZWNyZXRLZXkoc2VjcmV0S2V5LmdldEJ5dGVzKCkpKTsKKworICAgICAgQ2Fub25pY2FsaXplciBjMTRuID0KKyAgICAgICAgIENhbm9uaWNhbGl6ZXIuZ2V0SW5zdGFuY2UoQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fV0lUSF9DT01NRU5UUyk7CisgICAgICBieXRlW10gZnVsbCA9IGMxNG4uY2Fub25pY2FsaXplU3VidHJlZShkb2MpOworICAgICAgYnl0ZVtdIHJlZiA9IHNpZy5nZXRTaWduZWRJbmZvKCkuaXRlbSgwKS5nZXRUcmFuc2Zvcm1zT3V0cHV0KCkuZ2V0Qnl0ZXMoKTsKKyAgICAgIGJ5dGVbXVtdIHJlc3VsdCA9IHsKKyAgICAgICAgIGZ1bGwsIHJlZgorICAgICAgfTsKKworICAgICAgLy8gd2UgcmVtb3ZlIHRoZSBzaWduYXR1cmUgbm93CisgICAgICBzaWcuZ2V0RWxlbWVudCgpLmdldFBhcmVudE5vZGUoKS5yZW1vdmVDaGlsZChzaWcuZ2V0RWxlbWVudCgpKTsKKworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgYXBhY2hlc2FtcGxlX3hmaWx0ZXIyXzcKKyAgICAqCisgICAgKiBAcGFyYW0gZG9jCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyBieXRlW11bXSBhcGFjaGVzYW1wbGVfeGZpbHRlcjJfNyhEb2N1bWVudCBkb2MpCisgICAgICAgICAgIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBYTUxTaWduYXR1cmUgc2lnID0gbmV3IFhNTFNpZ25hdHVyZShkb2MsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmUuQUxHT19JRF9NQUNfSE1BQ19TSEExKTsKKworICAgICAgZG9jLmdldERvY3VtZW50RWxlbWVudCgpLmFwcGVuZENoaWxkKHNpZy5nZXRFbGVtZW50KCkpOworCisgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICB7CisgICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIwNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lcjA0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubmV3SW5zdGFuY2VJbnRlcnNlY3QoZG9jLCAiLy9FIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRFbGVtZW50KCkpOworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNC5uZXdJbnN0YW5jZVVuaW9uKGRvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvL0IiKS5nZXRFbGVtZW50KCkpOworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5ld0luc3RhbmNlU3VidHJhY3QoZG9jLCAiLy9DIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRFbGVtZW50KCkpOworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNC5uZXdJbnN0YW5jZVVuaW9uKGRvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvL0YiKS5nZXRFbGVtZW50KCkpOworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5ld0luc3RhbmNlU3VidHJhY3QoZG9jLCAiLy9HIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRFbGVtZW50KCkpOworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNC5uZXdJbnN0YW5jZVVuaW9uKGRvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvL0giKS5nZXRFbGVtZW50KCkpOworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIwNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5ld0luc3RhbmNlU3VidHJhY3QoZG9jLCAiLy9AeDphdHRyIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRFbGVtZW50KCkpOworICAgICAgICAgdHJhbnNmb3Jtcy5zZXRYUGF0aE5hbWVzcGFjZUNvbnRleHQoInhtbG5zOngiLCAiaHR0cDovL2Zvby5iYXIvIik7CisgICAgICAgICB0cmFuc2Zvcm1zCisgICAgICAgICAgICAuc2V0WFBhdGhOYW1lc3BhY2VDb250ZXh0KFRyYW5zZm9ybXMKKyAgICAgICAgICAgICAgIC5nZXREZWZhdWx0UHJlZml4KFRyYW5zZm9ybXMKKyAgICAgICAgICAgICAgIC5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSMDQpLCBUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIwNCk7CisgICAgICB9CisKKyAgICAgIHNpZy5hZGREb2N1bWVudCgiIiwgdHJhbnNmb3Jtcyk7CisKKyAgICAgIFN0cmluZyBzZWNyZXRLZXkgPSAic2VjcmV0IjsKKworICAgICAgc2lnLmdldEtleUluZm8oKS5hZGRLZXlOYW1lKCJUaGUgVVRGLTggb2N0ZXRzIG9mIFwiIiArIHNlY3JldEtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIlwiIGFyZSB1c2VkIGZvciBzaWduaW5nICgiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzZWNyZXRLZXkubGVuZ3RoKCkgKyAiIG9jdGV0cykiKTsKKyAgICAgIHNpZy5zaWduKHNpZy5jcmVhdGVTZWNyZXRLZXkoc2VjcmV0S2V5LmdldEJ5dGVzKCkpKTsKKworICAgICAgQ2Fub25pY2FsaXplciBjMTRuID0KKyAgICAgICAgIENhbm9uaWNhbGl6ZXIuZ2V0SW5zdGFuY2UoQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fV0lUSF9DT01NRU5UUyk7CisgICAgICBieXRlW10gZnVsbCA9IGMxNG4uY2Fub25pY2FsaXplU3VidHJlZShkb2MpOworICAgICAgYnl0ZVtdIHJlZiA9IHNpZy5nZXRTaWduZWRJbmZvKCkuaXRlbSgwKS5nZXRUcmFuc2Zvcm1zT3V0cHV0KCkuZ2V0Qnl0ZXMoKTsKKyAgICAgIGJ5dGVbXVtdIHJlc3VsdCA9IHsKKyAgICAgICAgIGZ1bGwsIHJlZgorICAgICAgfTsKKworICAgICAgLy8gd2UgcmVtb3ZlIHRoZSBzaWduYXR1cmUgbm93CisgICAgICBzaWcuZ2V0RWxlbWVudCgpLmdldFBhcmVudE5vZGUoKS5yZW1vdmVDaGlsZChzaWcuZ2V0RWxlbWVudCgpKTsKKworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgeGZpbHRlcjJzcGVjX3hmaWx0ZXIyXzNfbmV3CisgICAgKgorICAgICogQHBhcmFtIGRvYworICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgYnl0ZVtdW10geGZpbHRlcjJzcGVjX3hmaWx0ZXIyXzNfbmV3KERvY3VtZW50IGRvYykKKyAgICAgICAgICAgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIFhNTFNpZ25hdHVyZSBzaWcgPSBuZXcgWE1MU2lnbmF0dXJlKGRvYywgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTFNpZ25hdHVyZS5BTEdPX0lEX01BQ19ITUFDX1NIQTEpOworCisgICAgICBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCkuYXBwZW5kQ2hpbGQoc2lnLmdldEVsZW1lbnQoKSk7CisKKyAgICAgIFRyYW5zZm9ybXMgdHJhbnNmb3JtcyA9IG5ldyBUcmFuc2Zvcm1zKGRvYyk7CisgICAgICBTdHJpbmcgcGFyYW1zW11bXSA9IHsKKyAgICAgICAgIHsgWFBhdGgyRmlsdGVyQ29udGFpbmVyLklOVEVSU0VDVCwgIi8vVG9CZVNpZ25lZCIgfSwKKyAgICAgICAgIHsgWFBhdGgyRmlsdGVyQ29udGFpbmVyLlNVQlRSQUNULCAiLy9Ob3RUb0JlU2lnbmVkIiB9LAorICAgICAgICAgeyBYUGF0aDJGaWx0ZXJDb250YWluZXIuVU5JT04sICIvL1JlYWxseVRvQmVTaWduZWQiIH0KKyAgICAgIH07CisgICAgICBOb2RlTGlzdCBub2RlTGlzdCA9IFhQYXRoMkZpbHRlckNvbnRhaW5lci5uZXdJbnN0YW5jZXMoZG9jLCBwYXJhbXMpOworCisgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIsIG5vZGVMaXN0KTsKKyAgICAgIHRyYW5zZm9ybXMuc2V0WFBhdGhOYW1lc3BhY2VDb250ZXh0KCJ4ZmlsdGVyMmIiLCBUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIpOworICAgICAgc2lnLmFkZERvY3VtZW50KCIiLCB0cmFuc2Zvcm1zKTsKKworICAgICAgU3RyaW5nIHNlY3JldEtleSA9ICJzZWNyZXQiOworCisgICAgICBzaWcuZ2V0S2V5SW5mbygpLmFkZEtleU5hbWUoIlRoZSBVVEYtOCBvY3RldHMgb2YgXCIiICsgc2VjcmV0S2V5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiXCIgYXJlIHVzZWQgZm9yIHNpZ25pbmcgKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHNlY3JldEtleS5sZW5ndGgoKSArICIgb2N0ZXRzKSIpOworICAgICAgc2lnLnNpZ24oc2lnLmNyZWF0ZVNlY3JldEtleShzZWNyZXRLZXkuZ2V0Qnl0ZXMoKSkpOworCisgICAgICBDYW5vbmljYWxpemVyIGMxNG4gPQorICAgICAgICAgQ2Fub25pY2FsaXplci5nZXRJbnN0YW5jZShDYW5vbmljYWxpemVyLkFMR09fSURfQzE0Tl9XSVRIX0NPTU1FTlRTKTsKKyAgICAgIGJ5dGVbXSBmdWxsID0gYzE0bi5jYW5vbmljYWxpemVTdWJ0cmVlKGRvYyk7CisgICAgICBieXRlW10gcmVmID0gc2lnLmdldFNpZ25lZEluZm8oKS5pdGVtKDApLmdldFRyYW5zZm9ybXNPdXRwdXQoKS5nZXRCeXRlcygpOworICAgICAgYnl0ZVtdW10gcmVzdWx0ID0geworICAgICAgICAgZnVsbCwgcmVmCisgICAgICB9OworCisgICAgICAvLyB3ZSByZW1vdmUgdGhlIHNpZ25hdHVyZSBub3cKKyAgICAgIHNpZy5nZXRFbGVtZW50KCkuZ2V0UGFyZW50Tm9kZSgpLnJlbW92ZUNoaWxkKHNpZy5nZXRFbGVtZW50KCkpOworCisgICAgICByZXR1cm4gcmVzdWx0OworICAgfQorICAgcHVibGljIHN0YXRpYyBieXRlW11bXSBwdXJlZWRnZV94ZmlsdGVyMl9uZXcoRG9jdW1lbnQgZG9jKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgWE1MU2lnbmF0dXJlIHNpZyA9IG5ldyBYTUxTaWduYXR1cmUoZG9jLCBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MU2lnbmF0dXJlLkFMR09fSURfTUFDX0hNQUNfU0hBMSk7CisKKyAgICAgIGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKS5hcHBlbmRDaGlsZChzaWcuZ2V0RWxlbWVudCgpKTsKKworICAgICAgVHJhbnNmb3JtcyB0cmFuc2Zvcm1zID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKyAgICAgIFN0cmluZyBwYXJhbXNbXVtdID0geworICAgICAgICAgeyBYUGF0aDJGaWx0ZXJDb250YWluZXIuU1VCVFJBQ1QsCisgICAgICAgICAvL0otCisgICAgICAgICAgICAiXG4iICsKKyAgICAgICAgICAgICIvWEZETC9wYWdlW0BzaWQ9J1BBR0UxJ10vKltAc2lkPSdDSEVDSzE2JyBvciBcbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIEBzaWQ9J0NIRUNLMTcnIG9yIFxuIiArCisgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgQHNpZD0nRklFTEQ0Nycgb3IgXG4iICsKKyAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBAc2lkPSdCVVRUT04yJyBvciBcbiIgKworICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIEBzaWQ9J0ZJRUxENDgnXVxuIiArCisgICAgICAgICAgICAiIHwgXG4iICsKKyAgICAgICAgICAgICIvWEZETC9wYWdlL3RyaWdnZXJpdGVtW25vdChhdHRyaWJ1dGU6OnNpZCkgfCBcbiIgICsKKyAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgIC9YRkRML3BhZ2UvKi90cmlnZ2VyaXRlbV1cbiIgKworICAgICAgICAgICAgIiB8IFxuIiArCisgICAgICAgICAgICAiaGVyZSgpL2FuY2VzdG9yOjpkczpTaWduYXR1cmVbMV0iICsKKyAgICAgICAgICAgICIiCisgICAgICAgICAgICAvL0orCisgICAgICAgICAgfQorICAgICAgfTsKKyAgICAgIE5vZGVMaXN0IG5vZGVMaXN0ID0gWFBhdGgyRmlsdGVyQ29udGFpbmVyLm5ld0luc3RhbmNlcyhkb2MsIHBhcmFtcyk7CisgICAgICB0cmFuc2Zvcm1zLnNldFhQYXRoTmFtZXNwYWNlQ29udGV4dCgiZHMiLCBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TKTsKKyAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRIMkZJTFRFUiwgbm9kZUxpc3QpOworCisgICAgICBzaWcuYWRkRG9jdW1lbnQoIiIsIHRyYW5zZm9ybXMpOworCisgICAgICBTdHJpbmcgc2VjcmV0S2V5ID0gInNlY3JldCI7CisKKyAgICAgIHNpZy5nZXRLZXlJbmZvKCkuYWRkS2V5TmFtZSgiVGhlIFVURi04IG9jdGV0cyBvZiBcIiIgKyBzZWNyZXRLZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJcIiBhcmUgdXNlZCBmb3Igc2lnbmluZyAoIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc2VjcmV0S2V5Lmxlbmd0aCgpICsgIiBvY3RldHMpIik7CisgICAgICBzaWcuc2lnbihzaWcuY3JlYXRlU2VjcmV0S2V5KHNlY3JldEtleS5nZXRCeXRlcygpKSk7CisKKyAgICAgIENhbm9uaWNhbGl6ZXIgYzE0biA9CisgICAgICAgICBDYW5vbmljYWxpemVyLmdldEluc3RhbmNlKENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX1dJVEhfQ09NTUVOVFMpOworICAgICAgYnl0ZVtdIGZ1bGwgPSBjMTRuLmNhbm9uaWNhbGl6ZVN1YnRyZWUoZG9jKTsKKyAgICAgIGJ5dGVbXSByZWYgPSBzaWcuZ2V0U2lnbmVkSW5mbygpLml0ZW0oMCkuZ2V0VHJhbnNmb3Jtc091dHB1dCgpLmdldEJ5dGVzKCk7CisgICAgICBieXRlW11bXSByZXN1bHQgPSB7CisgICAgICAgICBmdWxsLCByZWYKKyAgICAgIH07CisKKyAgICAgIC8vIHdlIHJlbW92ZSB0aGUgc2lnbmF0dXJlIG5vdworICAgICAgc2lnLmdldEVsZW1lbnQoKS5nZXRQYXJlbnROb2RlKCkucmVtb3ZlQ2hpbGQoc2lnLmdldEVsZW1lbnQoKSk7CisKKyAgICAgIHJldHVybiByZXN1bHQ7CisgICB9Cit9CisKZGlmZiAtLWdpdCBhL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvYWxnb3JpdGhtcy9ITWFjU0hBMVJvdW5kVHJpcC5qYXZhIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9hbGdvcml0aG1zL0hNYWNTSEExUm91bmRUcmlwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZjMzlhNQotLS0gL2Rldi9udWxsCisrKyBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvYWxnb3JpdGhtcy9ITWFjU0hBMVJvdW5kVHJpcC5qYXZhCkBAIC0wLDAgKzEsMTY0IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLmFsZ29yaXRobXM7CisKKworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5U3RvcmU7CitpbXBvcnQgamF2YS5zZWN1cml0eS5Qcml2YXRlS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHVibGljS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGU7CisKK2ltcG9ydCBqYXZheC5jcnlwdG8uU2VjcmV0S2V5OworaW1wb3J0IGphdmF4LmNyeXB0by5zcGVjLlNlY3JldEtleVNwZWM7CitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyOworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3Rvcnk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5hbGdvcml0aG1zLlNpZ25hdHVyZUFsZ29yaXRobTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5CYXNlNjQ7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CisKKworLyoqCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICovCitwdWJsaWMgY2xhc3MgSE1hY1NIQTFSb3VuZFRyaXAgeworCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWluCisgICAgKgorICAgICogQHBhcmFtIHVudXNlZAorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIHVudXNlZFtdKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgIC8vSi0KKyAgICAgIFN0cmluZyBrZXlzdG9yZVR5cGUgPSAiSktTIjsKKyAgICAgIFN0cmluZyBrZXlzdG9yZUZpbGUgPSAiZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL2lucHV0L2tleXN0b3JlLmprcyI7CisgICAgICBTdHJpbmcga2V5c3RvcmVQYXNzID0gInhtbHNlY3VyaXR5IjsKKyAgICAgIFN0cmluZyBwcml2YXRlS2V5QWxpYXMgPSAidGVzdCI7CisgICAgICBTdHJpbmcgcHJpdmF0ZUtleVBhc3MgPSAieG1sc2VjdXJpdHkiOworICAgICAgU3RyaW5nIGNlcnRpZmljYXRlQWxpYXMgPSAidGVzdCI7CisgICAgICBGaWxlIHNpZ25hdHVyZUZpbGUgPSBuZXcgRmlsZSgic2lnbmF0dXJlLnhtbCIpOworICAgICAgLy9KKworICAgICAgS2V5U3RvcmUga3MgPSBLZXlTdG9yZS5nZXRJbnN0YW5jZShrZXlzdG9yZVR5cGUpOworICAgICAgRmlsZUlucHV0U3RyZWFtIGZpcyA9IG5ldyBGaWxlSW5wdXRTdHJlYW0oa2V5c3RvcmVGaWxlKTsKKworICAgICAga3MubG9hZChmaXMsIGtleXN0b3JlUGFzcy50b0NoYXJBcnJheSgpKTsKKworICAgICAgUHJpdmF0ZUtleSBwcml2YXRlS2V5ID0gKFByaXZhdGVLZXkpIGtzLmdldEtleShwcml2YXRlS2V5QWxpYXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2YXRlS2V5UGFzcy50b0NoYXJBcnJheSgpKTsKKyAgICAgIFg1MDlDZXJ0aWZpY2F0ZSBjZXJ0ID0KKyAgICAgICAgIChYNTA5Q2VydGlmaWNhdGUpIGtzLmdldENlcnRpZmljYXRlKGNlcnRpZmljYXRlQWxpYXMpOworICAgICAgUHVibGljS2V5IHB1YmxpY0tleSA9IGNlcnQuZ2V0UHVibGljS2V5KCk7CisgICAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKworICAgICAgZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworCisgICAgICBEb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgICBEb2N1bWVudCBkb2MgPSBkYi5uZXdEb2N1bWVudCgpOworCisgICAgICAvLyBTaWduYXR1cmVBbGdvcml0aG0gc2EgPSBTaWduYXR1cmVBbGdvcml0aG0uZ2V0SW5zdGFuY2UoZG9jLCBYTUxTaWduYXR1cmUuQUxHT19JRF9TSUdOQVRVUkVfRFNBLCAxMjApOworICAgICAgU2lnbmF0dXJlQWxnb3JpdGhtIHNhID0gbmV3IFNpZ25hdHVyZUFsZ29yaXRobShkb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2RzYS1zaGExIik7CisKKyAgICAgIHNhLmluaXRTaWduKHByaXZhdGVLZXkpOworICAgICAgc2EudXBkYXRlKCJzZGpoZmtqYXNoa2pmIi5nZXRCeXRlcygpKTsKKworICAgICAgYnl0ZSBzaWduYXR1cmVWYWx1ZVtdID0gc2Euc2lnbigpOworCisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oQmFzZTY0LmVuY29kZShzaWduYXR1cmVWYWx1ZSkpOworICAgICAgZG9jLmFwcGVuZENoaWxkKHNhLmdldEVsZW1lbnQoKSk7CisgICAgICBYTUxVdGlscy5vdXRwdXRET00oZG9jLCBTeXN0ZW0ub3V0KTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworCisgICAgICBTaWduYXR1cmVBbGdvcml0aG0gdmVyaWZ5ZXIgPQorICAgICAgICAgbmV3IFNpZ25hdHVyZUFsZ29yaXRobShkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCksICJmaWxlOiIpOworCisgICAgICB2ZXJpZnllci5pbml0VmVyaWZ5KHB1YmxpY0tleSk7CisgICAgICB2ZXJpZnllci51cGRhdGUoInNkamhma2phc2hramYiLmdldEJ5dGVzKCkpOworCisgICAgICBib29sZWFuIHJlc3VsdCA9IHZlcmlmeWVyLnZlcmlmeShzaWduYXR1cmVWYWx1ZSk7CisKKyAgICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSXQgdmVyaWZpZWQiKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkl0IGZhaWxlZCIpOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWluU2hhMQorICAgICoKKyAgICAqIEBwYXJhbSB1bnVzZWQKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluU2hhMShTdHJpbmcgdW51c2VkW10pIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKworICAgICAgZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworCisgICAgICBEb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgICBEb2N1bWVudCBkb2MgPSBkYi5uZXdEb2N1bWVudCgpOworCisgICAgICAvLyBTaWduYXR1cmVBbGdvcml0aG0gc2EgPSBTaWduYXR1cmVBbGdvcml0aG0uZ2V0SW5zdGFuY2UoZG9jLCBYTUxTaWduYXR1cmUuQUxHT19JRF9TSUdOQVRVUkVfRFNBLCAxMjApOworICAgICAgU2lnbmF0dXJlQWxnb3JpdGhtIHNhID0gbmV3IFNpZ25hdHVyZUFsZ29yaXRobShkb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2htYWMtc2hhMSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMyk7CisKKyAgICAgIC8vIFNlY3JldEtleUZhY3Rvcnkgc2tmID0gU2VjcmV0S2V5RmFjdG9yeS5nZXRJbnN0YW5jZShzYS5nZXRKQ0VBbGdvcml0aG1TdHJpbmcoKSwgc2EuZ2V0SkNFUHJvdmlkZXJOYW1lKCkpOworICAgICAgYnl0ZSBrZXlieXRlc1tdID0gIjAxMjM0NTY3ODkwMTIzNDU2Nzg5Ii5nZXRCeXRlcygpOworICAgICAgU2VjcmV0S2V5IHNrID0gbmV3IFNlY3JldEtleVNwZWMoa2V5Ynl0ZXMsIHNhLmdldEpDRUFsZ29yaXRobVN0cmluZygpKTsKKworICAgICAgc2EuaW5pdFNpZ24oc2spOworICAgICAgc2EudXBkYXRlKCJzZGpoZmtqYXNoa2pmIi5nZXRCeXRlcygpKTsKKworICAgICAgYnl0ZSBzaWduYXR1cmVWYWx1ZVtdID0gc2Euc2lnbigpOworCisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oQmFzZTY0LmVuY29kZShzaWduYXR1cmVWYWx1ZSkpOworICAgICAgZG9jLmFwcGVuZENoaWxkKHNhLmdldEVsZW1lbnQoKSk7CisgICAgICBYTUxVdGlscy5vdXRwdXRET00oZG9jLCBTeXN0ZW0ub3V0KTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIik7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworCisgICAgICBqYXZheC5jcnlwdG8uTWFjIGE7CisgICAgICBTaWduYXR1cmVBbGdvcml0aG0gdmVyaWZ5ZXIgPQorICAgICAgICAgbmV3IFNpZ25hdHVyZUFsZ29yaXRobShkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCksICJmaWxlOiIpOworICAgICAgU2VjcmV0S2V5IHBrID0gbmV3IFNlY3JldEtleVNwZWMoIjAxMjM0NTY3ODkwMTIzNDU2Nzg5Ii5nZXRCeXRlcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyaWZ5ZXIuZ2V0SkNFQWxnb3JpdGhtU3RyaW5nKCkpOworCisgICAgICB2ZXJpZnllci5pbml0VmVyaWZ5KHBrKTsKKyAgICAgIHZlcmlmeWVyLnVwZGF0ZSgic2RqaGZramFzaGtqZiIuZ2V0Qnl0ZXMoKSk7CisKKyAgICAgIGJvb2xlYW4gcmVzdWx0ID0gdmVyaWZ5ZXIudmVyaWZ5KHNpZ25hdHVyZVZhbHVlKTsKKworICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJJdCB2ZXJpZmllZCIpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSXQgZmFpbGVkIik7CisgICAgICB9CisgICB9CisKKyAgIHN0YXRpYyB7CisgICAgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvY2Fub25pY2FsaXphdGlvbi9DYW5vbkJ5VHJhbnNmb3JtLmphdmEgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL2Nhbm9uaWNhbGl6YXRpb24vQ2Fub25CeVRyYW5zZm9ybS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5OTVjZTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL2Nhbm9uaWNhbGl6YXRpb24vQ2Fub25CeVRyYW5zZm9ybS5qYXZhCkBAIC0wLDAgKzEsMTAxIEBACisKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMuY2Fub25pY2FsaXphdGlvbjsKKworCisKK2ltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheUlucHV0U3RyZWFtOworCitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyOworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3Rvcnk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlSW5wdXQ7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1zOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CisKKworLyoqCisgKgorICoKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEdldWVyLVBvbGxtYW5uCisgKgorICovCitwdWJsaWMgY2xhc3MgQ2Fub25CeVRyYW5zZm9ybSB7CisgICAvL0otCisgICBzdGF0aWMgU3RyaW5nIGlucHV0ID0gIiIKKyAgICAgICsgIjwhRE9DVFlQRSBkb2MgWzwhQVRUTElTVCBlOSBhdHRyIENEQVRBIFwiZGVmYXVsdFwiPl0+XG4iCisgICAgICArICI8IS0tIENvbW1lbnQgMiAtLT48ZG9jPjwhLS0gY29tbWVudCBpbnNpZGUgLS0+XG4iCisgICAgICArICIgICA8ZTEgICAvPlxuIgorICAgICAgKyAiICAgPGUyICAgPjwvZTI+XG4iCisgICAgICArICIgICA8ZTMgICAgbmFtZSA9IFwiZWxlbTNcIiAgIGlkPVwiZWxlbTNcIiAgICAvPlxuIgorICAgICAgKyAiICAgPGU0ICAgIG5hbWU9XCJlbGVtNFwiICAgaWQ9XCJlbGVtNFwiICAgID48L2U0PlxuIgorICAgICAgKyAiICAgPGU1IGE6YXR0cj1cIm91dFwiIGI6YXR0cj1cInNvcnRlZFwiIGF0dHIyPVwiYWxsXCIgYXR0cj1cIkknbVwiXG4iCisgICAgICArICIgICAgICAgeG1sbnM6Yj1cImh0dHA6Ly93d3cuaWV0Zi5vcmdcIlxuIgorICAgICAgKyAiICAgICAgIHhtbG5zOmE9XCJodHRwOi8vd3d3LnczLm9yZ1wiXG4iCisgICAgICArICIgICAgICAgeG1sbnM9XCJodHRwOi8vZXhhbXBsZS5vcmdcIi8+XG4iCisgICAgICArICIgICA8ZTYgeG1sbnM9XCJcIiB4bWxuczphPVwiaHR0cDovL3d3dy53My5vcmdcIj5cbiIKKyAgICAgICsgIiAgICAgICA8ZTcgeG1sbnM9XCJodHRwOi8vd3d3LmlldGYub3JnXCI+XG4iCisgICAgICArICIgICAgICAgICAgIDxlOCB4bWxucz1cIlwiIHhtbG5zOmE9XCJodHRwOi8vd3d3LnczLm9yZ1wiPlxuIgorICAgICAgKyAiICAgICAgICAgICAgICAgPGU5IHhtbG5zPVwiXCIgeG1sbnM6YT1cImh0dHA6Ly93d3cuaWV0Zi5vcmdcIi8+XG4iCisgICAgICArICIgICAgICAgICAgICAgICA8dGV4dD4mIzE2OTs8L3RleHQ+XG4iCisgICAgICArICIgICAgICAgICAgIDwvZTg+XG4iCisgICAgICArICIgICAgICAgPC9lNz5cbiIKKyAgICAgICsgIiAgIDwvZTY+XG4iCisgICAgICArICI8L2RvYz48IS0tIENvbW1lbnQgMyAtLT5cbiIKKyAgICAgIDsKKyAgIC8vSisKKworICAgLyoqCisgICAgKiBNZXRob2QgbWFpbgorICAgICoKKyAgICAqIEBwYXJhbSBhcmdzCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaW5pdCgpOworCisgICAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRmYWN0b3J5ID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCisgICAgICBkZmFjdG9yeS5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKyAgICAgIGRmYWN0b3J5LnNldFZhbGlkYXRpbmcodHJ1ZSk7CisKKyAgICAgIERvY3VtZW50QnVpbGRlciBkb2N1bWVudEJ1aWxkZXIgPSBkZmFjdG9yeS5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKKworICAgICAgLy8gdGhpcyBpcyB0byB0aHJvdyBhd2F5IGFsbCB2YWxpZGF0aW9uIHdhcm5pbmdzCisgICAgICBkb2N1bWVudEJ1aWxkZXIKKyAgICAgICAgIC5zZXRFcnJvckhhbmRsZXIobmV3IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzCisgICAgICAgICAgICAuSWdub3JlQWxsRXJyb3JIYW5kbGVyKCkpOworCisgICAgICBieXRlIGlucHV0Qnl0ZXNbXSA9IGlucHV0LmdldEJ5dGVzKCk7CisgICAgICBEb2N1bWVudCBpbnB1dERvYyA9CisgICAgICAgICBkb2N1bWVudEJ1aWxkZXIucGFyc2UobmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGlucHV0Qnl0ZXMpKTsKKworICAgICAgLy8gYWZ0ZXIgcGxheWluZyBhcm91bmQsIHdlIGhhdmUgb3VyIGRvY3VtZW50IG5vdworICAgICAgWE1MU2lnbmF0dXJlSW5wdXQgc2lnbmF0dXJlSW5wdXQgPSBuZXcgWE1MU2lnbmF0dXJlSW5wdXQoKE5vZGUpIGlucHV0RG9jKTsKKyAgICAgIERvY3VtZW50IHRyYW5zZm9ybURvYyA9IGRvY3VtZW50QnVpbGRlci5uZXdEb2N1bWVudCgpOworCisgICAgICBUcmFuc2Zvcm1zIGMxNG5UcmFucyA9IG5ldyBUcmFuc2Zvcm1zKHRyYW5zZm9ybURvYyk7CisgICAgICB0cmFuc2Zvcm1Eb2MuYXBwZW5kQ2hpbGQoYzE0blRyYW5zLmdldEVsZW1lbnQoKSk7CisgICAgICBjMTRuVHJhbnMuYWRkVHJhbnNmb3JtKCJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHMiKTsKKyAgICAgIFhNTFNpZ25hdHVyZUlucHV0IGMxNG5SZXN1bHQgPSBjMTRuVHJhbnMucGVyZm9ybVRyYW5zZm9ybXMoc2lnbmF0dXJlSW5wdXQpOworICAgICAgYnl0ZSBvdXRwdXRCeXRlc1tdID0gYzE0blJlc3VsdC5nZXRCeXRlcygpOworCisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmV3IFN0cmluZyhvdXRwdXRCeXRlcykpOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9jYW5vbmljYWxpemF0aW9uL0Nhbm9uRGlyZWN0LmphdmEgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL2Nhbm9uaWNhbGl6YXRpb24vQ2Fub25EaXJlY3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmNkMmYwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9jYW5vbmljYWxpemF0aW9uL0Nhbm9uRGlyZWN0LmphdmEKQEAgLTAsMCArMSw5NCBAQAorCisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLmNhbm9uaWNhbGl6YXRpb247CisKKworCitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbTsKKworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5DYW5vbmljYWxpemVyOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworCisKKy8qKgorICoKKyAqCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubgorICovCitwdWJsaWMgY2xhc3MgQ2Fub25EaXJlY3QgeworICAgLy9KLQorICAgc3RhdGljIFN0cmluZyBpbnB1dCA9ICIiCisgICAgICArICI8IURPQ1RZUEUgZG9jIFs8IUFUVExJU1QgZTkgYXR0ciBDREFUQSBcImRlZmF1bHRcIj5dPlxuIgorICAgICAgKyAiPCEtLSBDb21tZW50IDIgLS0+PGRvYz5cbiIKKyAgICAgICsgIiAgIDxlMSAgIC8+XG4iCisgICAgICArICIgICA8ZTIgICA+PC9lMj5cbiIKKyAgICAgICsgIiAgIDxlMyAgICBuYW1lID0gXCJlbGVtM1wiICAgaWQ9XCJlbGVtM1wiICAgIC8+XG4iCisgICAgICArICIgICA8ZTQgICAgbmFtZT1cImVsZW00XCIgICBpZD1cImVsZW00XCIgICAgPjwvZTQ+XG4iCisgICAgICArICIgICA8ZTUgYTphdHRyPVwib3V0XCIgYjphdHRyPVwic29ydGVkXCIgYXR0cjI9XCJhbGxcIiBhdHRyPVwiSSdtXCJcbiIKKyAgICAgICsgIiAgICAgICB4bWxuczpiPVwiaHR0cDovL3d3dy5pZXRmLm9yZ1wiXG4iCisgICAgICArICIgICAgICAgeG1sbnM6YT1cImh0dHA6Ly93d3cudzMub3JnXCJcbiIKKyAgICAgICsgIiAgICAgICB4bWxucz1cImh0dHA6Ly9leGFtcGxlLm9yZ1wiLz5cbiIKKyAgICAgICsgIiAgIDxlNiB4bWxucz1cIlwiIHhtbG5zOmE9XCJodHRwOi8vd3d3LnczLm9yZ1wiPlxuIgorICAgICAgKyAiICAgICAgIDxlNyB4bWxucz1cImh0dHA6Ly93d3cuaWV0Zi5vcmdcIj5cbiIKKyAgICAgICsgIiAgICAgICAgICAgPGU4IHhtbG5zPVwiXCIgeG1sbnM6YT1cImh0dHA6Ly93d3cudzMub3JnXCI+XG4iCisgICAgICArICIgICAgICAgICAgICAgICA8ZTkgeG1sbnM9XCJcIiB4bWxuczphPVwiaHR0cDovL3d3dy5pZXRmLm9yZ1wiLz5cbiIKKyAgICAgICsgIiAgICAgICAgICAgICAgIDx0ZXh0PiYjMTY5OzwvdGV4dD5cbiIKKyAgICAgICsgIiAgICAgICAgICAgPC9lOD5cbiIKKyAgICAgICsgIiAgICAgICA8L2U3PlxuIgorICAgICAgKyAiICAgPC9lNj5cbiIKKyAgICAgICsgIjwvZG9jPjwhLS0gQ29tbWVudCAzIC0tPlxuIgorICAgICAgOworICAgLy9KKworCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWluCisgICAgKgorICAgICogQHBhcmFtIGFyZ3MKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmdzW10pIHRocm93cyBFeGNlcHRpb24geworICAgICAgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuSW5pdC5pbml0KCk7CisKKworICAgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkZmFjdG9yeSA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKworICAgICAgZGZhY3Rvcnkuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisgICAgICBkZmFjdG9yeS5zZXRWYWxpZGF0aW5nKHRydWUpOworCisgICAgICBEb2N1bWVudEJ1aWxkZXIgZG9jdW1lbnRCdWlsZGVyID0gZGZhY3RvcnkubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisKKyAgICAgIC8vIHRoaXMgaXMgdG8gdGhyb3cgYXdheSBhbGwgdmFsaWRhdGlvbiB3YXJuaW5ncworICAgICAgZG9jdW1lbnRCdWlsZGVyCisgICAgICAgICAuc2V0RXJyb3JIYW5kbGVyKG5ldyBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscworICAgICAgICAgICAgLklnbm9yZUFsbEVycm9ySGFuZGxlcigpKTsKKworICAgICAgYnl0ZSBpbnB1dEJ5dGVzW10gPSBpbnB1dC5nZXRCeXRlcygpOworICAgICAgRG9jdW1lbnQgZG9jID0KKyAgICAgICAgIGRvY3VtZW50QnVpbGRlci5wYXJzZShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oaW5wdXRCeXRlcykpOworCisgICAgICAvLyBhZnRlciBwbGF5aW5nIGFyb3VuZCwgd2UgaGF2ZSBvdXIgZG9jdW1lbnQgbm93CisgICAgICBDYW5vbmljYWxpemVyIGMxNG4gPSBDYW5vbmljYWxpemVyLmdldEluc3RhbmNlKAorICAgICAgICAgImh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1I1dpdGhDb21tZW50cyIpOworICAgICAgYnl0ZSBvdXRwdXRCeXRlc1tdID0gYzE0bi5jYW5vbmljYWxpemVTdWJ0cmVlKGRvYyk7CisKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihuZXcgU3RyaW5nKG91dHB1dEJ5dGVzKSk7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL2Nhbm9uaWNhbGl6YXRpb24vQ2Fub25TdWJUcmVlLmphdmEgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL2Nhbm9uaWNhbGl6YXRpb24vQ2Fub25TdWJUcmVlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY4MWZjOQotLS0gL2Rldi9udWxsCisrKyBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvY2Fub25pY2FsaXphdGlvbi9DYW5vblN1YlRyZWUuamF2YQpAQCAtMCwwICsxLDEwMiBAQAorCisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLmNhbm9uaWNhbGl6YXRpb247CisKKworCitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbTsKKworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5DYW5vbmljYWxpemVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMuU2FtcGxlVXRpbHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueHBhdGguWFBhdGhBUEk7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworCisvKioKKyAqCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubgorICovCitwdWJsaWMgY2xhc3MgQ2Fub25TdWJUcmVlIHsKKyAgIC8vSi0KKyAgIHN0YXRpYyBTdHJpbmcgaW5wdXQgPSAiIgorICAgICAgKyAiPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwiVVRGLThcIj8+XG4iCisgICAgICArICI8U2lnbmF0dXJlIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI1wiPlxuIgorICAgICAgKyAiICA8U2lnbmVkSW5mbz48IS0tIGNvbW1lbnQgaW5zaWRlIC0tPlxuIgorICAgICAgKyAiICAgIDxDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT1cImh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1XCIgLz5cbiIKKyAgICAgICsgIiAgICA8U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMVwiIC8+XG4iCisgICAgICArICIgICAgPFJlZmVyZW5jZSBVUkk9XCJodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldFwiPlxuIgorICAgICAgKyAiICAgICAgPERpZ2VzdE1ldGhvZCBBbGdvcml0aG09XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMVwiIC8+XG4iCisgICAgICArICIgICAgICA8RGlnZXN0VmFsdWU+NjBOdlp2dGRUQis3VW5sTHAvSDI0cDdoNGJzPTwvRGlnZXN0VmFsdWU+XG4iCisgICAgICArICIgICAgPC9SZWZlcmVuY2U+XG4iCisgICAgICArICIgIDwvU2lnbmVkSW5mbz5cbiIKKyAgICAgICsgIiAgPFNpZ25hdHVyZVZhbHVlPlxuIgorICAgICAgKyAiICAgIGZLTW15OUdZRjJzOHJMRnJaZFZ1Z1RPRnVXeDE5Y2NYN2poNUhxRmQ0dk1PWTdMV0FqNTJ5a2pTZHZ0VzNmTllcbiIKKyAgICAgICsgIiAgICBQUFlHQzRNRkwxOW9QU0lkNUdFc010Rk1wR1hCM1hhQ3RvS2pNQ0hRc04zK2tvbThZbkdmN0dlMUpOUmNHdHk1XG4iCisgICAgICArICIgICAgMFVzb1A2QXNqNDcrUVI3UUVDVDY0dW96aWhhNFdSRFZ5WGpEcmcyNFcrVT1cbiIKKyAgICAgICsgIiAgPC9TaWduYXR1cmVWYWx1ZT5cbiIKKyAgICAgICsgIiAgPEtleUluZm8+XG4iCisgICAgICArICIgICAgPEtleU5hbWU+THVnaDwvS2V5TmFtZT5cbiIKKyAgICAgICsgIiAgPC9LZXlJbmZvPlxuIgorICAgICAgKyAiPC9TaWduYXR1cmU+XG4iCisgICAgICA7CisgICAvL0orCisKKyAgIC8qKgorICAgICogTWV0aG9kIG1haW4KKyAgICAqCisgICAgKiBAcGFyYW0gYXJncworICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTsKKworICAgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkZmFjdG9yeSA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKworICAgICAgZGZhY3Rvcnkuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisgICAgICBkZmFjdG9yeS5zZXRWYWxpZGF0aW5nKHRydWUpOworCisgICAgICBEb2N1bWVudEJ1aWxkZXIgZG9jdW1lbnRCdWlsZGVyID0gZGZhY3RvcnkubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisKKyAgICAgIC8vIHRoaXMgaXMgdG8gdGhyb3cgYXdheSBhbGwgdmFsaWRhdGlvbiB3YXJuaW5ncworICAgICAgZG9jdW1lbnRCdWlsZGVyCisgICAgICAgICAuc2V0RXJyb3JIYW5kbGVyKG5ldyBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscworICAgICAgICAgICAgLklnbm9yZUFsbEVycm9ySGFuZGxlcigpKTsKKworICAgICAgYnl0ZSBpbnB1dEJ5dGVzW10gPSBpbnB1dC5nZXRCeXRlcygpOworICAgICAgRG9jdW1lbnQgZG9jID0KKyAgICAgICAgIGRvY3VtZW50QnVpbGRlci5wYXJzZShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oaW5wdXRCeXRlcykpOworICAgICAgQ2Fub25pY2FsaXplciBjMTRuID0KKyAgICAgICAgIENhbm9uaWNhbGl6ZXIKKyAgICAgICAgICAgIC5nZXRJbnN0YW5jZSgiaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiKTsKKyAgICAgIEVsZW1lbnQgbnNjb250ZXh0ID0gU2FtcGxlVXRpbHMuY3JlYXRlRFNjdHgoZG9jLCAiZHMiLCBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TKTsKKworICAgICAgTm9kZSBzaWduZWRJbmZvID0gWFBhdGhBUEkuc2VsZWN0U2luZ2xlTm9kZShkb2MsICIvL2RzOlNpZ25lZEluZm8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc2NvbnRleHQpOworICAgICAgYnl0ZSBvdXRwdXRCeXRlc1tdID0gYzE0bi5jYW5vbmljYWxpemVTdWJ0cmVlKHNpZ25lZEluZm8pOworCisgICAgICBpZiAob3V0cHV0Qnl0ZXMgIT0gbnVsbCkgeworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG5ldyBTdHJpbmcob3V0cHV0Qnl0ZXMpKTsKKyAgICAgIH0KKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvZW5jcnlwdGlvbi9EZWNyeXB0ZXIuamF2YSBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvZW5jcnlwdGlvbi9EZWNyeXB0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jNDE5NTg4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9lbmNyeXB0aW9uL0RlY3J5cHRlci5qYXZhCkBAIC0wLDAgKzEsMTQyIEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLmVuY3J5cHRpb247CisKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVPdXRwdXRTdHJlYW07CisKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LktleTsKKworaW1wb3J0IGphdmF4LmNyeXB0by5TZWNyZXRLZXk7CitpbXBvcnQgamF2YXguY3J5cHRvLlNlY3JldEtleUZhY3Rvcnk7CitpbXBvcnQgamF2YXguY3J5cHRvLnNwZWMuREVTZWRlS2V5U3BlYzsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmVuY3J5cHRpb24uWE1MQ2lwaGVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkphdmFVdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5FbmNyeXB0aW9uQ29uc3RhbnRzOworCitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJGYWN0b3J5OworaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXI7CitpbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5kb20uRE9NU291cmNlOworaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uc3RyZWFtLlN0cmVhbVJlc3VsdDsKK2ltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLk91dHB1dEtleXM7CisKKy8qKgorICogVGhpcyBzYW1wbGUgZGVtb25zdHJhdGVzIGhvdyB0byBkZWNyeXB0IGRhdGEgaW5zaWRlIGFuIHhtbCBkb2N1bWVudC4KKyAqCisgKiBAYXV0aG9yIFZpc2hhbCBNYWhhamFuIChTdW4gTWljcm9zeXN0ZW1zKQorICovCitwdWJsaWMgY2xhc3MgRGVjcnlwdGVyIHsKKworICAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZygKKyAgICAgICAgICAgIERlY3J5cHRlci5jbGFzcy5nZXROYW1lKCkpOworCisgICAgc3RhdGljIHsKKyAgICAgICAgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuSW5pdC5pbml0KCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgRG9jdW1lbnQgbG9hZEVuY3J5cHRpb25Eb2N1bWVudCgpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICAgIFN0cmluZyBmaWxlTmFtZSA9ICJlbmNyeXB0ZWRJbmZvLnhtbCI7CisgICAgICAgIEZpbGUgZW5jcnlwdGlvbkZpbGUgPSBuZXcgRmlsZShmaWxlTmFtZSk7CisgICAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0KKyAgICAgICAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKyAgICAgICAgZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworICAgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgICAgIERvY3VtZW50IGRvY3VtZW50ID0gZGIucGFyc2UoZW5jcnlwdGlvbkZpbGUpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAgICAiRW5jcnlwdGlvbiBkb2N1bWVudCBsb2FkZWQgZnJvbSAiICsKKyAgICAgICAgICAgIGVuY3J5cHRpb25GaWxlLnRvVVJMKCkudG9TdHJpbmcoKSk7CisgICAgICAgIHJldHVybiBkb2N1bWVudDsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBTZWNyZXRLZXkgbG9hZEtleUVuY3J5cHRpb25LZXkoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgICBTdHJpbmcgZmlsZU5hbWUgPSAia2VrIjsKKyAgICAgICAgU3RyaW5nIGpjZUFsZ29yaXRobU5hbWUgPSAiREVTZWRlIjsKKworICAgICAgICBGaWxlIGtla0ZpbGUgPSBuZXcgRmlsZShmaWxlTmFtZSk7CisKKyAgICAgICAgREVTZWRlS2V5U3BlYyBrZXlTcGVjID0KKyAgICAgICAgICAgIG5ldyBERVNlZGVLZXlTcGVjKEphdmFVdGlscy5nZXRCeXRlc0Zyb21GaWxlKGZpbGVOYW1lKSk7CisgICAgICAgIFNlY3JldEtleUZhY3Rvcnkgc2tmID0KKyAgICAgICAgICAgICBTZWNyZXRLZXlGYWN0b3J5LmdldEluc3RhbmNlKGpjZUFsZ29yaXRobU5hbWUpOworICAgICAgICBTZWNyZXRLZXkga2V5ID0gc2tmLmdlbmVyYXRlU2VjcmV0KGtleVNwZWMpOworICAgICAgICAgCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKKyAgICAgICAgICAgICJLZXkgZW5jcnlwdGlvbiBrZXkgbG9hZGVkIGZyb20gIiArIGtla0ZpbGUudG9VUkwoKS50b1N0cmluZygpKTsKKyAgICAgICAgcmV0dXJuIGtleTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIG91dHB1dERvY1RvRmlsZShEb2N1bWVudCBkb2MsIFN0cmluZyBmaWxlTmFtZSkKKyAgICAgICAgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIEZpbGUgZW5jcnlwdGlvbkZpbGUgPSBuZXcgRmlsZShmaWxlTmFtZSk7CisgICAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZiA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKGVuY3J5cHRpb25GaWxlKTsKKworICAgICAgICBUcmFuc2Zvcm1lckZhY3RvcnkgZmFjdG9yeSA9IFRyYW5zZm9ybWVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworICAgICAgICBUcmFuc2Zvcm1lciB0cmFuc2Zvcm1lciA9IGZhY3RvcnkubmV3VHJhbnNmb3JtZXIoKTsKKyAgICAgICAgdHJhbnNmb3JtZXIuc2V0T3V0cHV0UHJvcGVydHkoT3V0cHV0S2V5cy5PTUlUX1hNTF9ERUNMQVJBVElPTiwgInllcyIpOworICAgICAgICBET01Tb3VyY2Ugc291cmNlID0gbmV3IERPTVNvdXJjZShkb2MpOworICAgICAgICBTdHJlYW1SZXN1bHQgcmVzdWx0ID0gbmV3IFN0cmVhbVJlc3VsdChmKTsKKyAgICAgICAgdHJhbnNmb3JtZXIudHJhbnNmb3JtKHNvdXJjZSwgcmVzdWx0KTsKKworICAgICAgICBmLmNsb3NlKCk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKKyAgICAgICAgICAgICJXcm90ZSBkb2N1bWVudCBjb250YWluaW5nIGRlY3J5cHRlZCBkYXRhIHRvICIgKworICAgICAgICAgICAgZW5jcnlwdGlvbkZpbGUudG9VUkwoKS50b1N0cmluZygpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgdW51c2VkW10pIHRocm93cyBFeGNlcHRpb24geworCisgICAgICAgIERvY3VtZW50IGRvY3VtZW50ID0gbG9hZEVuY3J5cHRpb25Eb2N1bWVudCgpOworCisgICAgICAgIEVsZW1lbnQgZW5jcnlwdGVkRGF0YUVsZW1lbnQgPQorICAgICAgICAgICAgKEVsZW1lbnQpIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoCisgICAgICAgICAgICAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5FbmNyeXB0aW9uU3BlY05TLAorICAgICAgICAgICAgICAgIEVuY3J5cHRpb25Db25zdGFudHMuX1RBR19FTkNSWVBURUREQVRBKS5pdGVtKDApOworCisgICAgICAgIC8qCisgICAgICAgICAqIExvYWQgdGhlIGtleSB0byBiZSB1c2VkIGZvciBkZWNyeXB0aW5nIHRoZSB4bWwgZGF0YQorICAgICAgICAgKiBlbmNyeXB0aW9uIGtleS4KKyAgICAgICAgICovCisgICAgICAgIEtleSBrZWsgPSBsb2FkS2V5RW5jcnlwdGlvbktleSgpOworCisgICAgICAgIFN0cmluZyBwcm92aWRlck5hbWUgPSAiQkMiOworCisgICAgICAgIFhNTENpcGhlciB4bWxDaXBoZXIgPQorICAgICAgICAgICAgWE1MQ2lwaGVyLmdldEluc3RhbmNlKCk7CisgICAgICAgIC8qCisgICAgICAgICAqIFRoZSBrZXkgdG8gYmUgdXNlZCBmb3IgZGVjcnlwdGluZyB4bWwgZGF0YSB3b3VsZCBiZSBvYnRhaW5lZAorICAgICAgICAgKiBmcm9tIHRoZSBrZXlpbmZvIG9mIHRoZSBFbmNyeXB0ZURhdGEgdXNpbmcgdGhlIGtlay4KKyAgICAgICAgICovCisgICAgICAgIHhtbENpcGhlci5pbml0KFhNTENpcGhlci5ERUNSWVBUX01PREUsIG51bGwpOworICAgICAgICB4bWxDaXBoZXIuc2V0S0VLKGtlayk7CisgICAgICAgIC8qCisgICAgICAgICAqIFRoZSBmb2xsb3dpbmcgZG9GaW5hbCBjYWxsIHJlcGxhY2VzIHRoZSBlbmNyeXB0ZWQgZGF0YSB3aXRoCisgICAgICAgICAqIGRlY3J5cHRlZCBjb250ZW50cyBpbiB0aGUgZG9jdW1lbnQuCisgICAgICAgICAqLworICAgICAgICB4bWxDaXBoZXIuZG9GaW5hbChkb2N1bWVudCwgZW5jcnlwdGVkRGF0YUVsZW1lbnQpOworCisgICAgICAgIG91dHB1dERvY1RvRmlsZShkb2N1bWVudCwgImRlY3J5cHRlZEluZm8ueG1sIik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9lbmNyeXB0aW9uL0VuY3J5cHRlci5qYXZhIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9lbmNyeXB0aW9uL0VuY3J5cHRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjA5ZWEyMTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL2VuY3J5cHRpb24vRW5jcnlwdGVyLmphdmEKQEAgLTAsMCArMSwyMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMuZW5jcnlwdGlvbjsKKworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZU91dHB1dFN0cmVhbTsKKworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5OworCitpbXBvcnQgamF2YXguY3J5cHRvLlNlY3JldEtleTsKK2ltcG9ydCBqYXZheC5jcnlwdG8uS2V5R2VuZXJhdG9yOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5LZXlJbmZvOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmVuY3J5cHRpb24uWE1MQ2lwaGVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmVuY3J5cHRpb24uRW5jcnlwdGVkRGF0YTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5lbmNyeXB0aW9uLkVuY3J5cHRlZEtleTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CisKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworCitpbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckZhY3Rvcnk7CitpbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lcjsKK2ltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLmRvbS5ET01Tb3VyY2U7CitpbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5zdHJlYW0uU3RyZWFtUmVzdWx0OworaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uT3V0cHV0S2V5czsKKworLyoqCisgKiBUaGlzIHNhbXBsZSBkZW1vbnN0cmF0ZXMgaG93IHRvIGVuY3J5cHQgZGF0YSBpbnNpZGUgYW4geG1sIGRvY3VtZW50LgorICoKKyAqIEBhdXRob3IgVmlzaGFsIE1haGFqYW4gKFN1biBNaWNyb3N5c3RlbXMpCisgKi8KK3B1YmxpYyBjbGFzcyBFbmNyeXB0ZXIgeworCisgICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKAorICAgICAgICAgICAgRW5jcnlwdGVyLmNsYXNzLmdldE5hbWUoKSk7CisKKyAgICBzdGF0aWMgeworICAgICAgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBEb2N1bWVudCBjcmVhdGVTYW1wbGVEb2N1bWVudCgpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0KKyAgICAgICAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKyAgICAgICAgZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworICAgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgICAgIERvY3VtZW50IGRvY3VtZW50ID0gZGIubmV3RG9jdW1lbnQoKTsKKworICAgICAgICAvKioKKyAgICAgICAgICogQnVpbGQgYSBzYW1wbGUgZG9jdW1lbnQuIEl0IHdpbGwgbG9vayBzb21ldGhpbmcgbGlrZToKKyAgICAgICAgICoKKyAgICAgICAgICogPGFwYWNoZTpSb290RWxlbWVudCB4bWxuczphcGFjaGU9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9ucy8jYXBwMSI+CisgICAgICAgICAqIDxhcGFjaGU6Zm9vPlNvbWUgc2ltcGxlIHRleHQ8L2FwYWNoZTpmb28+CisgICAgICAgICAqIDwvYXBhY2hlOlJvb3RFbGVtZW50PgorICAgICAgICAgKi8KKyAgICAgICAgRWxlbWVudCByb290ID0KKyAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygKKyAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy5hcGFjaGUub3JnL25zLyNhcHAxIiwgImFwYWNoZTpSb290RWxlbWVudCIpOworICAgICAgICByb290LnNldEF0dHJpYnV0ZU5TKAorICAgICAgICAgICAgQ29uc3RhbnRzLk5hbWVzcGFjZVNwZWNOUywKKyAgICAgICAgICAgICJ4bWxuczphcGFjaGUiLAorICAgICAgICAgICAgImh0dHA6Ly93d3cuYXBhY2hlLm9yZy9ucy8jYXBwMSIpOworICAgICAgICBkb2N1bWVudC5hcHBlbmRDaGlsZChyb290KTsKKworICAgICAgICByb290LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJcbiIpKTsKKworICAgICAgICBFbGVtZW50IGNoaWxkRWxlbWVudCA9CisgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoCisgICAgICAgICAgICAgICAgImh0dHA6Ly93d3cuYXBhY2hlLm9yZy9ucy8jYXBwMSIsICJhcGFjaGU6Zm9vIik7CisgICAgICAgIGNoaWxkRWxlbWVudC5hcHBlbmRDaGlsZCgKKyAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJTb21lIHNpbXBsZSB0ZXh0IikpOworICAgICAgICByb290LmFwcGVuZENoaWxkKGNoaWxkRWxlbWVudCk7CisKKyAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiXG4iKSk7CisKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50OworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIFNlY3JldEtleSBHZW5lcmF0ZUFuZFN0b3JlS2V5RW5jcnlwdGlvbktleSgpCisgICAgICAgIHRocm93cyBFeGNlcHRpb24geworCisgICAgICAgIFN0cmluZyBqY2VBbGdvcml0aG1OYW1lID0gIkRFU2VkZSI7CisgICAgICAgIEtleUdlbmVyYXRvciBrZXlHZW5lcmF0b3IgPQorICAgICAgICAgICAgS2V5R2VuZXJhdG9yLmdldEluc3RhbmNlKGpjZUFsZ29yaXRobU5hbWUpOworICAgICAgICBTZWNyZXRLZXkga2VrID0ga2V5R2VuZXJhdG9yLmdlbmVyYXRlS2V5KCk7CisKKyAgICAgICAgYnl0ZVtdIGtleUJ5dGVzID0ga2VrLmdldEVuY29kZWQoKTsKKyAgICAgICAgRmlsZSBrZWtGaWxlID0gbmV3IEZpbGUoImtlayIpOworICAgICAgICBGaWxlT3V0cHV0U3RyZWFtIGYgPSBuZXcgRmlsZU91dHB1dFN0cmVhbShrZWtGaWxlKTsKKyAgICAgICAgZi53cml0ZShrZXlCeXRlcyk7CisgICAgICAgIGYuY2xvc2UoKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKAorICAgICAgICAgICAgIktleSBlbmNyeXB0aW9uIGtleSBzdG9yZWQgaW4gIiArIGtla0ZpbGUudG9VUkwoKS50b1N0cmluZygpKTsKKworICAgICAgICByZXR1cm4ga2VrOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIFNlY3JldEtleSBHZW5lcmF0ZURhdGFFbmNyeXB0aW9uS2V5KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgICAgU3RyaW5nIGpjZUFsZ29yaXRobU5hbWUgPSAiQUVTIjsKKyAgICAgICAgS2V5R2VuZXJhdG9yIGtleUdlbmVyYXRvciA9CisgICAgICAgICAgICBLZXlHZW5lcmF0b3IuZ2V0SW5zdGFuY2UoamNlQWxnb3JpdGhtTmFtZSk7CisgICAgICAgIGtleUdlbmVyYXRvci5pbml0KDEyOCk7CisgICAgICAgIHJldHVybiBrZXlHZW5lcmF0b3IuZ2VuZXJhdGVLZXkoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIG91dHB1dERvY1RvRmlsZShEb2N1bWVudCBkb2MsIFN0cmluZyBmaWxlTmFtZSkKKyAgICAgICAgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIEZpbGUgZW5jcnlwdGlvbkZpbGUgPSBuZXcgRmlsZShmaWxlTmFtZSk7CisgICAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZiA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKGVuY3J5cHRpb25GaWxlKTsKKworICAgICAgICBUcmFuc2Zvcm1lckZhY3RvcnkgZmFjdG9yeSA9IFRyYW5zZm9ybWVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworICAgICAgICBUcmFuc2Zvcm1lciB0cmFuc2Zvcm1lciA9IGZhY3RvcnkubmV3VHJhbnNmb3JtZXIoKTsKKyAgICAgICAgdHJhbnNmb3JtZXIuc2V0T3V0cHV0UHJvcGVydHkoT3V0cHV0S2V5cy5PTUlUX1hNTF9ERUNMQVJBVElPTiwgInllcyIpOworICAgICAgICBET01Tb3VyY2Ugc291cmNlID0gbmV3IERPTVNvdXJjZShkb2MpOworICAgICAgICBTdHJlYW1SZXN1bHQgcmVzdWx0ID0gbmV3IFN0cmVhbVJlc3VsdChmKTsKKyAgICAgICAgdHJhbnNmb3JtZXIudHJhbnNmb3JtKHNvdXJjZSwgcmVzdWx0KTsKKworICAgICAgICBmLmNsb3NlKCk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKKyAgICAgICAgICAgICJXcm90ZSBkb2N1bWVudCBjb250YWluaW5nIGVuY3J5cHRlZCBkYXRhIHRvICIgKworICAgICAgICAgICAgZW5jcnlwdGlvbkZpbGUudG9VUkwoKS50b1N0cmluZygpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgdW51c2VkW10pIHRocm93cyBFeGNlcHRpb24geworCisgICAgICAgIERvY3VtZW50IGRvY3VtZW50ID0gY3JlYXRlU2FtcGxlRG9jdW1lbnQoKTsKKworICAgICAgICAvKgorICAgICAgICAgKiBHZXQgYSBrZXkgdG8gYmUgdXNlZCBmb3IgZW5jcnlwdGluZyB0aGUgZWxlbWVudC4KKyAgICAgICAgICogSGVyZSB3ZSBhcmUgZ2VuZXJhdGluZyBhbiBBRVMga2V5LgorICAgICAgICAgKi8KKyAgICAgICAgS2V5IHN5bW1ldHJpY0tleSA9IEdlbmVyYXRlRGF0YUVuY3J5cHRpb25LZXkoKTsKKworICAgICAgICAvKgorICAgICAgICAgKiBHZXQgYSBrZXkgdG8gYmUgdXNlZCBmb3IgZW5jcnlwdGluZyB0aGUgc3ltbWV0cmljIGtleS4KKyAgICAgICAgICogSGVyZSB3ZSBhcmUgZ2VuZXJhdGluZyBhIERFU2VkZSBrZXkuCisgICAgICAgICAqLworICAgICAgICBLZXkga2VrID0gR2VuZXJhdGVBbmRTdG9yZUtleUVuY3J5cHRpb25LZXkoKTsKKworICAgICAgICBTdHJpbmcgYWxnb3JpdGhtVVJJID0gWE1MQ2lwaGVyLlRSSVBMRURFU19LZXlXcmFwOworCisgICAgICAgIFhNTENpcGhlciBrZXlDaXBoZXIgPQorICAgICAgICAgICAgWE1MQ2lwaGVyLmdldEluc3RhbmNlKGFsZ29yaXRobVVSSSk7CisgICAgICAgIGtleUNpcGhlci5pbml0KFhNTENpcGhlci5XUkFQX01PREUsIGtlayk7CisgICAgICAgIEVuY3J5cHRlZEtleSBlbmNyeXB0ZWRLZXkgPQorICAgICAgICAgICAga2V5Q2lwaGVyLmVuY3J5cHRLZXkoZG9jdW1lbnQsIHN5bW1ldHJpY0tleSk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogTGV0IHVzIGVuY3J5cHQgdGhlIGNvbnRlbnRzIG9mIHRoZSBkb2N1bWVudCBlbGVtZW50LgorICAgICAgICAgKi8KKyAgICAgICAgRWxlbWVudCByb290RWxlbWVudCA9IGRvY3VtZW50LmdldERvY3VtZW50RWxlbWVudCgpOworCisgICAgICAgIGFsZ29yaXRobVVSSSA9IFhNTENpcGhlci5BRVNfMTI4OworCisgICAgICAgIFhNTENpcGhlciB4bWxDaXBoZXIgPQorICAgICAgICAgICAgWE1MQ2lwaGVyLmdldEluc3RhbmNlKGFsZ29yaXRobVVSSSk7CisgICAgICAgIHhtbENpcGhlci5pbml0KFhNTENpcGhlci5FTkNSWVBUX01PREUsIHN5bW1ldHJpY0tleSk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogU2V0dGluZyBrZXlpbmZvIGluc2lkZSB0aGUgZW5jcnlwdGVkIGRhdGEgYmVpbmcgcHJlcGFyZWQuCisgICAgICAgICAqLworICAgICAgICBFbmNyeXB0ZWREYXRhIGVuY3J5cHRlZERhdGEgPSB4bWxDaXBoZXIuZ2V0RW5jcnlwdGVkRGF0YSgpOworICAgICAgICBLZXlJbmZvIGtleUluZm8gPSBuZXcgS2V5SW5mbyhkb2N1bWVudCk7CisgICAgICAgIGtleUluZm8uYWRkKGVuY3J5cHRlZEtleSk7CisgICAgICAgIGVuY3J5cHRlZERhdGEuc2V0S2V5SW5mbyhrZXlJbmZvKTsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb0ZpbmFsIC0KKyAgICAgICAgICogInRydWUiIGJlbG93IGluZGljYXRlcyB0aGF0IHdlIHdhbnQgdG8gZW5jcnlwdCBlbGVtZW50J3MgY29udGVudAorICAgICAgICAgKiBhbmQgbm90IHRoZSBlbGVtZW50IGl0c2VsZi4gQWxzbywgdGhlIGRvRmluYWwgbWV0aG9kIHdvdWxkCisgICAgICAgICAqIG1vZGlmeSB0aGUgZG9jdW1lbnQgYnkgcmVwbGFjaW5nIHRoZSBFbmNyeXB0ZURhdGEgZWxlbWVudAorICAgICAgICAgKiBmb3IgdGhlIGRhdGEgdG8gYmUgZW5jcnlwdGVkLgorICAgICAgICAgKi8KKyAgICAgICAgeG1sQ2lwaGVyLmRvRmluYWwoZG9jdW1lbnQsIHJvb3RFbGVtZW50LCB0cnVlKTsKKworICAgICAgICAvKgorICAgICAgICAgKiBPdXRwdXQgdGhlIGRvY3VtZW50IGNvbnRhaW5pbmcgdGhlIGVuY3J5cHRlZCBpbmZvcm1hdGlvbiBpbnRvCisgICAgICAgICAqIGEgZmlsZS4KKyAgICAgICAgICovCisgICAgICAgIG91dHB1dERvY1RvRmlsZShkb2N1bWVudCwgImVuY3J5cHRlZEluZm8ueG1sIik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9pYWlrL0lBSUtJbnRlck9wLmphdmEgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL2lhaWsvSUFJS0ludGVyT3AuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2Y0OWFhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9pYWlrL0lBSUtJbnRlck9wLmphdmEKQEAgLTAsMCArMSwyMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMuaWFpazsKKworCisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5zZWN1cml0eS5QdWJsaWNLZXk7CitpbXBvcnQgamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZTsKKworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3Rvcnk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLktleUluZm87CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLlNhbXBsZVV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5YTUxVdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5yZXNvbHZlci5SZXNvdXJjZVJlc29sdmVyU3BpOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyLmltcGxlbWVudGF0aW9ucy5SZXNvbHZlckFub255bW91czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQVBJOworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CisKKworLyoqCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICovCitwdWJsaWMgY2xhc3MgSUFJS0ludGVyT3AgeworCisgICAvKioge0BsaW5rIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nfSBsb2dnaW5nIGZhY2lsaXR5ICovCisgICAgc3RhdGljIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZyBsb2cgPSAKKyAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeS5nZXRMb2coSUFJS0ludGVyT3AuY2xhc3MuZ2V0TmFtZSgpKTsKKworICAgLyoqIEZpZWxkIHNjaGVtYVZhbGlkYXRlICovCisgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBzY2hlbWFWYWxpZGF0ZSA9IGZhbHNlOworCisgICAvKiogRmllbGQgc2lnbmF0dXJlU2NoZW1hRmlsZSAqLworICAgc3RhdGljIGZpbmFsIFN0cmluZyBzaWduYXR1cmVTY2hlbWFGaWxlID0gImRhdGEveG1sZHNpZy1jb3JlLXNjaGVtYS54c2QiOworCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWluCisgICAgKgorICAgICogQHBhcmFtIHVudXNlZAorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgdW51c2VkW10pIHsKKworICAgICAgaWYgKHNjaGVtYVZhbGlkYXRlKSB7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIldlIGRvIHNjaGVtYS12YWxpZGF0aW9uIik7CisgICAgICB9IGVsc2UgeworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJXZSBkbyBub3Qgc2NoZW1hLXZhbGlkYXRpb24iKTsKKyAgICAgIH0KKworICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPQorICAgICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCisgICAgICBpZiAoSUFJS0ludGVyT3Auc2NoZW1hVmFsaWRhdGUpIHsKKyAgICAgICAgIGRiZi5zZXRBdHRyaWJ1dGUoImh0dHA6Ly9hcGFjaGUub3JnL3htbC9mZWF0dXJlcy92YWxpZGF0aW9uL3NjaGVtYSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEJvb2xlYW4uVFJVRSk7CisgICAgICAgICBkYmYuc2V0QXR0cmlidXRlKAorICAgICAgICAgICAgImh0dHA6Ly9hcGFjaGUub3JnL3htbC9mZWF0dXJlcy9kb20vZGVmZXItbm9kZS1leHBhbnNpb24iLAorICAgICAgICAgICAgQm9vbGVhbi5UUlVFKTsKKyAgICAgICAgIGRiZi5zZXRWYWxpZGF0aW5nKHRydWUpOworICAgICAgICAgZGJmLnNldEF0dHJpYnV0ZSgiaHR0cDovL3htbC5vcmcvc2F4L2ZlYXR1cmVzL3ZhbGlkYXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBCb29sZWFuLlRSVUUpOworICAgICAgICAgZGJmLnNldEF0dHJpYnV0ZSgKKyAgICAgICAgICAgICJodHRwOi8vYXBhY2hlLm9yZy94bWwvcHJvcGVydGllcy9zY2hlbWEvZXh0ZXJuYWwtc2NoZW1hTG9jYXRpb24iLAorICAgICAgICAgICAgQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUyArICIgIiArIElBSUtJbnRlck9wLnNpZ25hdHVyZVNjaGVtYUZpbGUpOworICAgICAgfQorCisgICAgICBkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisgICAgICBkYmYuc2V0QXR0cmlidXRlKCJodHRwOi8veG1sLm9yZy9zYXgvZmVhdHVyZXMvbmFtZXNwYWNlcyIsIEJvb2xlYW4uVFJVRSk7CisKKyAgICAgIC8vSi0KKyAgICAgIFN0cmluZyBncmVnb3JzRGlyID0KKyAgICAgICAgICJkYXRhL2F0L2lhaWsvaXhzaWwvIjsKKyAgICAgIFN0cmluZyBmaWxlbmFtZXNbXSA9IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyZWdvcnNEaXIgKyAic2lnbmF0dXJlQWxnb3JpdGhtcy9zaWduYXR1cmVzL2hNQUNTaWduYXR1cmUueG1sIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsZ3JlZ29yc0RpciArICJzaWduYXR1cmVBbGdvcml0aG1zL3NpZ25hdHVyZXMvaE1BQ1Nob3J0U2lnbmF0dXJlLnhtbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLGdyZWdvcnNEaXIgKyAic2lnbmF0dXJlQWxnb3JpdGhtcy9zaWduYXR1cmVzL2RTQVNpZ25hdHVyZS54bWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxncmVnb3JzRGlyICsgInNpZ25hdHVyZUFsZ29yaXRobXMvc2lnbmF0dXJlcy9yU0FTaWduYXR1cmUueG1sIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsZ3JlZ29yc0RpciArICJ0cmFuc2Zvcm1zL3NpZ25hdHVyZXMvYmFzZTY0RGVjb2RlU2lnbmF0dXJlLnhtbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLGdyZWdvcnNEaXIgKyAidHJhbnNmb3Jtcy9zaWduYXR1cmVzL2MxNG5TaWduYXR1cmUueG1sIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsZ3JlZ29yc0RpciArICJjb3JlRmVhdHVyZXMvc2lnbmF0dXJlcy9tYW5pZmVzdFNpZ25hdHVyZS54bWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxncmVnb3JzRGlyICsgInRyYW5zZm9ybXMvc2lnbmF0dXJlcy94UGF0aFNpZ25hdHVyZS54bWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxncmVnb3JzRGlyICsgImNvcmVGZWF0dXJlcy9zaWduYXR1cmVzL3NpZ25hdHVyZVR5cGVzU2lnbmF0dXJlLnhtbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLGdyZWdvcnNEaXIgKyAidHJhbnNmb3Jtcy9zaWduYXR1cmVzL2VudmVsb3BlZFNpZ25hdHVyZVNpZ25hdHVyZS54bWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAvL0orCisgICAgICB2ZXJpZnlBbm9ueW1vdXMoZ3JlZ29yc0RpciwgZGJmKTsKKworICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspIHsKKyAgICAgICAgIFN0cmluZyBzaWduYXR1cmVGaWxlTmFtZSA9IGZpbGVuYW1lc1tpXTsKKworICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMuc2lnbmF0dXJlCisgICAgICAgICAgICAgICAuVmVyaWZ5TWVybGluc0V4YW1wbGVzRmlmdGVlbi52ZXJpZnlITUFDKGRiZiwgc2lnbmF0dXJlRmlsZU5hbWUpOworICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRoZSBYTUwgc2lnbmF0dXJlIGluIGZpbGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc2lnbmF0dXJlRmlsZU5hbWUgKyAiIGNyYXNoZWQgdGhlIGFwcGxpY2F0aW9uIChiYWQpIik7CisgICAgICAgICAgICBleC5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgICAgfQorICAgICAgfQorCisgICAgICBmb3IgKGludCBpID0gMjsgaSA8IGZpbGVuYW1lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgU3RyaW5nIHNpZ25hdHVyZUZpbGVOYW1lID0gZmlsZW5hbWVzW2ldOworCisgICAgICAgICB0cnkgeworICAgICAgICAgICAgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2FtcGxlcy5zaWduYXR1cmUKKyAgICAgICAgICAgICAgIC5WZXJpZnlNZXJsaW5zRXhhbXBsZXNTaXh0ZWVuLnZlcmlmeShkYmYsIHNpZ25hdHVyZUZpbGVOYW1lKTsKKyAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJUaGUgWE1MIHNpZ25hdHVyZSBpbiBmaWxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHNpZ25hdHVyZUZpbGVOYW1lICsgIiBjcmFzaGVkIHRoZSBhcHBsaWNhdGlvbiAoYmFkKSIpOworICAgICAgICAgICAgZXgucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgZm9yIChpbnQgaSA9IDI7IGkgPCBmaWxlbmFtZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgIFN0cmluZyBzaWduYXR1cmVGaWxlTmFtZSA9IGZpbGVuYW1lc1tpXTsKKworICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMuc2lnbmF0dXJlCisgICAgICAgICAgICAgICAuVmVyaWZ5TWVybGluc0V4YW1wbGVzVHdlbnR5VGhyZWUudmVyaWZ5KGRiZiwgc2lnbmF0dXJlRmlsZU5hbWUpOworICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRoZSBYTUwgc2lnbmF0dXJlIGluIGZpbGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc2lnbmF0dXJlRmlsZU5hbWUgKyAiIGNyYXNoZWQgdGhlIGFwcGxpY2F0aW9uIChiYWQpIik7CisgICAgICAgICAgICBleC5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgICAgfQorICAgICAgfQorICAgfQorCisgICBwdWJsaWMgc3RhdGljIHZvaWQgdmVyaWZ5QW5vbnltb3VzKFN0cmluZyBncmVnb3JzRGlyLCBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZikgeworICAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0KKyAgICAgICAgICAgIGdyZWdvcnNEaXIKKyAgICAgICAgICAgICsgImNvcmVGZWF0dXJlcy9zaWduYXR1cmVzL2Fub255bW91c1JlZmVyZW5jZVNpZ25hdHVyZS54bWwiOworICAgICAgdHJ5IHsKKyAgICAgICAgIFN0cmluZyBhbm9ueW1vdXNSZWYgPQorICAgICAgICAgICAgZ3JlZ29yc0RpciArICJjb3JlRmVhdHVyZXMvc2FtcGxlcy9hbm9ueW1vdXNSZWZlcmVuY2VDb250ZW50LnhtbCI7CisgICAgICAgICBSZXNvdXJjZVJlc29sdmVyU3BpIHJlc29sdmVyID0gbmV3IFJlc29sdmVyQW5vbnltb3VzKGFub255bW91c1JlZik7CisgICAgICAgICBGaWxlIGYgPSBuZXcgRmlsZShmaWxlbmFtZSk7CisKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVHJ5IHRvIHZlcmlmeSAiICsgZi50b1VSTCgpLnRvU3RyaW5nKCkpOworCisgICAgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgICAgICBvcmcudzNjLmRvbS5Eb2N1bWVudCBkb2MgPSBkYi5wYXJzZShuZXcgamF2YS5pby5GaWxlSW5wdXRTdHJlYW0oZikpOworICAgICAgICAgRWxlbWVudCBuc2NvbnRleHQgPSBTYW1wbGVVdGlscy5jcmVhdGVEU2N0eChkb2MsICJkcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMpOworICAgICAgICAgRWxlbWVudCBzaWdFbGVtZW50ID0gKEVsZW1lbnQpIFhQYXRoQVBJLnNlbGVjdFNpbmdsZU5vZGUoZG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8vZHM6U2lnbmF0dXJlWzFdIiwgbnNjb250ZXh0KTsKKyAgICAgICAgIFhNTFNpZ25hdHVyZSBzaWduYXR1cmUgPSBuZXcgWE1MU2lnbmF0dXJlKHNpZ0VsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLnRvVVJMKCkudG9TdHJpbmcoKSk7CisKKyAgICAgICAgIHNpZ25hdHVyZS5zZXRGb2xsb3dOZXN0ZWRNYW5pZmVzdHMoZmFsc2UpOworICAgICAgICAgc2lnbmF0dXJlLmFkZFJlc291cmNlUmVzb2x2ZXIocmVzb2x2ZXIpOworCisgICAgICAgICBLZXlJbmZvIGtpID0gc2lnbmF0dXJlLmdldEtleUluZm8oKTsKKworICAgICAgICAgaWYgKGtpICE9IG51bGwpIHsKKyAgICAgICAgICAgIFg1MDlDZXJ0aWZpY2F0ZSBjZXJ0ID0gc2lnbmF0dXJlLmdldEtleUluZm8oKS5nZXRYNTA5Q2VydGlmaWNhdGUoKTsKKworICAgICAgICAgICAgaWYgKGNlcnQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJUaGUgWE1MIHNpZ25hdHVyZSBpbiBmaWxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGYudG9VUkwoKS50b1N0cmluZygpICsgIiBpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAoc2lnbmF0dXJlLmNoZWNrU2lnbmF0dXJlVmFsdWUoY2VydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICJ2YWxpZCAoZ29vZCkiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiaW52YWxpZCAhISEhISAoYmFkKSIpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICBQdWJsaWNLZXkgcGsgPSBzaWduYXR1cmUuZ2V0S2V5SW5mbygpLmdldFB1YmxpY0tleSgpOworCisgICAgICAgICAgICAgICBpZiAocGsgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJUaGUgWE1MIHNpZ25hdHVyZSBpbiBmaWxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGYudG9VUkwoKS50b1N0cmluZygpICsgIiBpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAoc2lnbmF0dXJlLmNoZWNrU2lnbmF0dXJlVmFsdWUocGspCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAidmFsaWQgKGdvb2QpIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogImludmFsaWQgISEhISEgKGJhZCkiKSk7CisgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKAorICAgICAgICAgICAgICAgICAgICAgIkRpZCBub3QgZmluZCBhIHB1YmxpYyBrZXksIHNvIEkgY2FuJ3QgY2hlY2sgdGhlIHNpZ25hdHVyZSIpOworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRGlkIG5vdCBmaW5kIGEgS2V5SW5mbyIpOworICAgICAgICAgfQorICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRoZSBYTUwgc2lnbmF0dXJlIGluIGZpbGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZmlsZW5hbWUgKyAiIGNyYXNoZWQgdGhlIGFwcGxpY2F0aW9uIChiYWQpIik7CisgICAgICAgICAgICBleC5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgfQorICAgfQorCisgICBzdGF0aWMgeworICAgICAgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuSW5pdC5pbml0KCk7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL2tleXMvQ3JlYXRlS2V5SW5mby5qYXZhIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9rZXlzL0NyZWF0ZUtleUluZm8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjAxNTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9rZXlzL0NyZWF0ZUtleUluZm8uamF2YQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLmtleXM7CisKKworCitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5tYXRoLkJpZ0ludGVnZXI7CitpbXBvcnQgamF2YS5zZWN1cml0eS5LZXlTdG9yZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5LZXlJbmZvOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC5YNTA5RGF0YTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmNvbnRlbnQua2V5dmFsdWVzLlJTQUtleVZhbHVlOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworCisKKy8qKgorICogQ2xhc3MgQ3JlYXRlS2V5SW5mbworICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqIEB2ZXJzaW9uICRSZXZpc2lvbiQKKyAqLworcHVibGljIGNsYXNzIENyZWF0ZUtleUluZm8geworCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWluCisgICAgKgorICAgICogQHBhcmFtIHVudXNlZAorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIHVudXNlZFtdKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgS2V5U3RvcmUga3MgPSBLZXlTdG9yZS5nZXRJbnN0YW5jZSgiSktTIik7CisgICAgICBGaWxlSW5wdXRTdHJlYW0gZmlzID0gbmV3IEZpbGVJbnB1dFN0cmVhbSgKKyAgICAgICAgICJkYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvaW5wdXQva2V5c3RvcmUuamtzIik7CisKKyAgICAgIGtzLmxvYWQoZmlzLCAieG1sc2VjdXJpdHkiLnRvQ2hhckFycmF5KCkpOworCisgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9CisgICAgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisKKyAgICAgIGRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKworICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyIGRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOworICAgICAgb3JnLnczYy5kb20uRG9jdW1lbnQgZG9jID0gZGIubmV3RG9jdW1lbnQoKTsKKyAgICAgIEtleUluZm8ga2kgPSBuZXcgS2V5SW5mbyhkb2MpOworCisgICAgICBkb2MuYXBwZW5kQ2hpbGQoa2kuZ2V0RWxlbWVudCgpKTsKKyAgICAgIGtpLnNldElkKCJteUtJIik7CisgICAgICBraS5hZGRLZXlOYW1lKCJBIHNpbXBsZSBrZXkiKTsKKworICAgICAgWDUwOUNlcnRpZmljYXRlIGNlcnQgPSAoWDUwOUNlcnRpZmljYXRlKSBrcy5nZXRDZXJ0aWZpY2F0ZSgidGVzdCIpOworCisgICAgICBraS5hZGRLZXlWYWx1ZShjZXJ0LmdldFB1YmxpY0tleSgpKTsKKworICAgICAgWDUwOURhdGEgeDUwOURhdGEgPSBuZXcgWDUwOURhdGEoZG9jKTsKKworICAgICAga2kuYWRkKHg1MDlEYXRhKTsKKyAgICAgIHg1MDlEYXRhLmFkZENlcnRpZmljYXRlKGNlcnQpOworICAgICAgeDUwOURhdGEuYWRkU3ViamVjdE5hbWUoIlN1YmplY3QgbmFtZSIpOworICAgICAgeDUwOURhdGEuYWRkSXNzdWVyU2VyaWFsKCJTdWJqZWN0IG5mc2RmaHMiLCA2Nzg2KTsKKyAgICAgIGtpLmFkZChuZXcgUlNBS2V5VmFsdWUoZG9jLCBuZXcgQmlnSW50ZWdlcigiNjc4IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCaWdJbnRlZ2VyKCI2ODcwIikpKTsKKyAgICAgIFhNTFV0aWxzLm91dHB1dERPTWMxNG5XaXRoQ29tbWVudHMoZG9jLCBTeXN0ZW0ub3V0KTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMva2V5cy9SZXRyaWV2ZVB1YmxpY0tleXMuamF2YSBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMva2V5cy9SZXRyaWV2ZVB1YmxpY0tleXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGZlOTFmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9rZXlzL1JldHJpZXZlUHVibGljS2V5cy5qYXZhCkBAIC0wLDAgKzEsMTIzIEBACisKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMua2V5czsKKworCisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5zZWN1cml0eS5QdWJsaWNLZXk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLktleUluZm87CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5zdG9yYWdlLlN0b3JhZ2VSZXNvbHZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLnN0b3JhZ2UuaW1wbGVtZW50YXRpb25zLkNlcnRzSW5GaWxlc3lzdGVtRGlyZWN0b3J5UmVzb2x2ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2FtcGxlcy5TYW1wbGVVdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLmFwYWNoZS54cGF0aC5YUGF0aEFQSTsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworCisKKy8qKgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGNsYXNzIFJldHJpZXZlUHVibGljS2V5cyB7CisKKyAgIC8qKgorICAgICogTWV0aG9kIG1haW4KKyAgICAqCisgICAgKiBAcGFyYW0gdW51c2VkCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyB1bnVzZWRbXSkgeworCisgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9CisgICAgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisKKyAgICAgIGRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKworICAgICAgLy9KLQorICAgICAgU3RyaW5nIG1lcmxpbnNEaXIgPQorICAgICAgICAgImRhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1laWdodGVlbi8iOworICAgICAgU3RyaW5nIG91ckRpciA9CisgICAgICAgICAiZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZW1wL2tleS8iOworICAgICAgU3RyaW5nIGZpbGVuYW1lc1tdID0geyBtZXJsaW5zRGlyICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMCAqLyAic2lnbmF0dXJlLWtleW5hbWUueG1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVybGluc0RpciArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDEgKi8gInNpZ25hdHVyZS1yZXRyaWV2YWxtZXRob2QtcmF3eDUwOWNydC54bWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJsaW5zRGlyICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMiAqLyAic2lnbmF0dXJlLXg1MDktY3J0LWNybC54bWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJsaW5zRGlyICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMyAqLyAic2lnbmF0dXJlLXg1MDktY3J0LnhtbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmxpbnNEaXIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA0ICovICJzaWduYXR1cmUteDUwOS1pcy54bWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJsaW5zRGlyICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogNSAqLyAic2lnbmF0dXJlLXg1MDktc2tpLnhtbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmxpbnNEaXIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA2ICovICJzaWduYXR1cmUteDUwOS1zbi54bWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXJEaXIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA3ICovICJzaWduYXR1cmUtcmV0cmlldmFsbWV0aG9kLXg1MDlkYXRhLnhtbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91ckRpciArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDggKi8gInNpZ25hdHVyZS1yZXRyaWV2YWxtZXRob2QtZHNhdmFsdWUueG1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3VyRGlyICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOSAqLyAicmV0cmlldmFsLWZyb20tc2FtZS1kb2MueG1sIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAgLy9KKworICAgICAgaW50IHN0YXJ0ID0gMDsKKyAgICAgIGludCBlbmQgPSBmaWxlbmFtZXMubGVuZ3RoOworICAgICAgLy8gaW50IGVuZCA9IGZpbGVuYW1lcy5sZW5ndGg7CisgICAgICBmb3IgKGludCBmaWxldG92ZXJpZnkgPSBzdGFydDsgZmlsZXRvdmVyaWZ5IDwgZW5kOworICAgICAgICAgICAgICBmaWxldG92ZXJpZnkrKykgeworICAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0gZmlsZW5hbWVzW2ZpbGV0b3ZlcmlmeV07CisKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKKyAgICAgICAgICAgICIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMiKTsKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVHJ5IHRvIHZlcmlmeSAiICsgZmlsZW5hbWUpOworCisgICAgICAgICB0cnkgeworICAgICAgICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyIGRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOworICAgICAgICAgICAgb3JnLnczYy5kb20uRG9jdW1lbnQgZG9jID0KKyAgICAgICAgICAgICAgIGRiLnBhcnNlKG5ldyBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbShmaWxlbmFtZSkpOworICAgICAgICAgICAgRWxlbWVudCBuc2NvbnRleHQgPSBTYW1wbGVVdGlscy5jcmVhdGVEU2N0eChkb2MsICJkcyIsIENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMpOworCisgICAgICAgICAgICBFbGVtZW50IGtpRWxlbWVudCA9IChFbGVtZW50KSBYUGF0aEFQSS5zZWxlY3RTaW5nbGVOb2RlKGRvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8vZHM6S2V5SW5mb1sxXSIsIG5zY29udGV4dCk7CisgICAgICAgICAgICBLZXlJbmZvIGtpID0gbmV3IEtleUluZm8oa2lFbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZXcgRmlsZShmaWxlbmFtZSkpLnRvVVJMKCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBTdG9yYWdlUmVzb2x2ZXIgc3RvcmFnZVJlc29sdmVyID0gbmV3IFN0b3JhZ2VSZXNvbHZlcigKKyAgICAgICAgICAgICAgIG5ldyBDZXJ0c0luRmlsZXN5c3RlbURpcmVjdG9yeVJlc29sdmVyKG1lcmxpbnNEaXIgKyAiY2VydHMiKSk7CisKKyAgICAgICAgICAgIGtpLmFkZFN0b3JhZ2VSZXNvbHZlcihzdG9yYWdlUmVzb2x2ZXIpOworCisgICAgICAgICAgICBQdWJsaWNLZXkgcGsgPSBraS5nZXRQdWJsaWNLZXkoKTsKKworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJQdWJsaWNLZXkiICsgKChwayAhPSBudWxsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gIiBmb3VuZDoiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiIG5vdCBmb3VuZCEhISIpKTsKKworICAgICAgICAgICAgaWYgKHBrICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICAgRm9ybWF0OiAiICsgcGsuZ2V0Rm9ybWF0KCkpOworICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIgICBBbGdvcml0aG06ICIgKyBway5nZXRBbGdvcml0aG0oKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICAgS2V5OiAiICsgcGspOworICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBleC5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgIH0KKyAgICAgIH0KKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvcGFja2FnZS5odG1sIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJkMWNhNwotLS0gL2Rldi9udWxsCisrKyBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsOCBAQAorPEhUTUw+IAorPEhFQUQ+IDwvSEVBRD4gCis8Qk9EWT4gCis8UD4KK3tAbGluayBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzfSBjb250YWlucyBzb21lIHNhbXBsZSBhcHBsaWNhdGlvbnMgYW5kIG5vbi1zdGFuZGFyZCB0cmFuc2Zvcm1zLgorPC9QPgorPC9CT0RZPiAKKzwvSFRNTD4KZGlmZiAtLWdpdCBhL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvc2lnbmF0dXJlL0NyZWF0ZUNvbGxlY3RhYmxlU2lnbmF0dXJlLmphdmEgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3NpZ25hdHVyZS9DcmVhdGVDb2xsZWN0YWJsZVNpZ25hdHVyZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzNDM0YjIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3NpZ25hdHVyZS9DcmVhdGVDb2xsZWN0YWJsZVNpZ25hdHVyZS5qYXZhCkBAIC0wLDAgKzEsMTY0IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLnNpZ25hdHVyZTsKKworCisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50LktleU5hbWU7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlNpZ25lZEluZm87CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybXM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5wYXJhbXMuWFBhdGhDb250YWluZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CisKKworLyoqCisgKiBUaGVzZSBvbmVzIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBTaWduYXR1cmVzIHdoaWNoIGNhbiBiZSBjb2xsZWN0ZWQKKyAqIHVzaW5nIHlvdXIgdGV4dCBlZGl0b3JzIGN1dC1hbmQtcGFzdGUgZmVhdHVyZSB0byBjcmVhdGUgYSBmaWxlIHdpY2gKKyAqIGNvbnRhaW5zIG11bHRpcGxlIHNpZ25hdHVyZXMgd2hpY2ggcmVtYWluIHZhbGlkIGFmdGVyIGN1dC1hbmQtcGFzdGUuCisgKgorICogVGhpcyBwcm9ncmFtIGNyZWF0ZXMgYSBTaWduYXR1cmUgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGN1dC1hbmQtcGFzdGUgdG8gYmUKKyAqIHB1dCBpbnRvIGEgbGFyZ2VyIGRvY3VtZW50LgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGNsYXNzIENyZWF0ZUNvbGxlY3RhYmxlU2lnbmF0dXJlIHsKKworICAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZygKKyAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQ29sbGVjdGFibGVTaWduYXR1cmUuY2xhc3MuZ2V0TmFtZSgpKTsKKworICAgLyoqIEZpZWxkIHBhc3NwaHJhc2UgKi8KKyAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHBhc3NwaHJhc2UgPQorICAgICAgIlRoZSBzdXBlci1tZWdhLXNlY3JldCBwdWJsaWMgc3RhdGljIHBhc3NwaHJhc2UiOworCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWluCisgICAgKgorICAgICogQHBhcmFtIHVudXNlZAorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIHVudXNlZFtdKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgIC8vSi0KKyAgICAgIEZpbGUgc2lnbmF0dXJlRmlsZSA9IG5ldyBGaWxlKCJjb2xsZWN0YWJsZVNpZ25hdHVyZS54bWwiKTsKKyAgICAgIFN0cmluZyBCYXNlVVJJID0gc2lnbmF0dXJlRmlsZS50b1VSTCgpLnRvU3RyaW5nKCk7CisgICAgICAvL0orCisgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9CisgICAgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisKKyAgICAgIGRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKworICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyIGRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOworICAgICAgb3JnLnczYy5kb20uRG9jdW1lbnQgZG9jID0gZGIubmV3RG9jdW1lbnQoKTsKKyAgICAgIEVsZW1lbnQgcm9vdEVsZW1lbnQgPSBkb2MuY3JlYXRlRWxlbWVudE5TKG51bGwsICJyb290Iik7CisKKyAgICAgIGRvYy5hcHBlbmRDaGlsZChyb290RWxlbWVudCk7CisKKyAgICAgIC8qCisgICAgICBFbGVtZW50IHNpZ25lZFJlc291cmNlRWxlbWVudCA9IGRvYy5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly9jdXN0b20vIiwgImN1c3RvbTpzaWduZWRDb250ZW50Iik7CisgICAgICBzaWduZWRSZXNvdXJjZUVsZW1lbnQuc2V0QXR0cmlidXRlTlMoQ29uc3RhbnRzLk5hbWVzcGFjZU5TLCAieG1sbnM6Y3VzdG9tIiwgImh0dHA6Ly9jdXN0b20vIik7CisgICAgICBzaWduZWRSZXNvdXJjZUVsZW1lbnQuc2V0QXR0cmlidXRlTlMobnVsbCwgIklkIiwgImlkMCIpOworICAgICAgKi8KKyAgICAgIEVsZW1lbnQgc2lnbmVkUmVzb3VyY2VFbGVtZW50ID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhudWxsLCAic2lnbmVkQ29udGVudCIpOworCisgICAgICBzaWduZWRSZXNvdXJjZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJTaWduZWQgVGV4dFxuIikpOworICAgICAgcm9vdEVsZW1lbnQuYXBwZW5kQ2hpbGQoc2lnbmVkUmVzb3VyY2VFbGVtZW50KTsKKworICAgICAgWE1MU2lnbmF0dXJlIHNpZyA9IG5ldyBYTUxTaWduYXR1cmUoZG9jLCBCYXNlVVJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MU2lnbmF0dXJlLkFMR09fSURfTUFDX0hNQUNfU0hBMSk7CisKKyAgICAgIHNpZ25lZFJlc291cmNlRWxlbWVudC5hcHBlbmRDaGlsZChzaWcuZ2V0RWxlbWVudCgpKTsKKworICAgICAgeworICAgICAgICAgU3RyaW5nIHJvb3RuYW1lc3BhY2UgPSBzaWduZWRSZXNvdXJjZUVsZW1lbnQuZ2V0TmFtZXNwYWNlVVJJKCk7CisgICAgICAgICBib29sZWFuIHJvb3RwcmVmaXhlZCA9IChyb290bmFtZXNwYWNlICE9IG51bGwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChyb290bmFtZXNwYWNlLmxlbmd0aCgpID4gMCk7CisgICAgICAgICBTdHJpbmcgcm9vdGxvY2FsbmFtZSA9IHNpZ25lZFJlc291cmNlRWxlbWVudC5nZXROb2RlTmFtZSgpOworICAgICAgICAgVHJhbnNmb3JtcyB0cmFuc2Zvcm1zID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKyAgICAgICAgIFhQYXRoQ29udGFpbmVyIHhwYXRoID0gbmV3IFhQYXRoQ29udGFpbmVyKGRvYyk7CisKKyAgICAgICAgIHhwYXRoLnNldFhQYXRoTmFtZXNwYWNlQ29udGV4dCgiZHMiLCBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TKTsKKworICAgICAgICAgaWYgKHJvb3RwcmVmaXhlZCkgeworICAgICAgICAgICAgeHBhdGguc2V0WFBhdGhOYW1lc3BhY2VDb250ZXh0KCJyb290Iiwgcm9vdG5hbWVzcGFjZSk7CisgICAgICAgICB9CisKKyAgICAgICAgIC8vSi0KKyAgICAgICAgIFN0cmluZyB4cGF0aFN0ciA9ICJcbiIKKyAgICAgICAgICArICJjb3VudCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgKyAiXG4iCisgICAgICAgICAgKyAiIGFuY2VzdG9yLW9yLXNlbGY6OiIgKyAocm9vdHByZWZpeGVkID8gInJvb3Q6IiA6ICIiKSArIHJvb3Rsb2NhbG5hbWUgKyAiIiArICJcbiIKKyAgICAgICAgICArICIgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgKyAiXG4iCisgICAgICAgICAgKyAiIGhlcmUoKS9hbmNlc3Rvcjo6IiArIChyb290cHJlZml4ZWQgPyAicm9vdDoiIDogIiIpICsgcm9vdGxvY2FsbmFtZSArICJbMV0gIiArICJcbiIKKyAgICAgICAgICArICIpIDw9IGNvdW50KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICsgIlxuIgorICAgICAgICAgICsgIiBhbmNlc3Rvci1vci1zZWxmOjoiICsgKHJvb3RwcmVmaXhlZCA/ICJyb290OiIgOiAiIikgKyByb290bG9jYWxuYW1lICsgIiIgKyAiXG4iCisgICAgICAgICAgKyAiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICsgIlxuIgorICAgICAgICAgICsgIiBhbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiArICJcbiIKKyAgICAgICAgICArICJjb3VudCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgKyAiXG4iCisgICAgICAgICAgKyAiIGFuY2VzdG9yLW9yLXNlbGY6OmRzOlNpZ25hdHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICsgIlxuIgorICAgICAgICAgICsgIiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiArICJcbiIKKyAgICAgICAgICArICIgaGVyZSgpL2FuY2VzdG9yOjpkczpTaWduYXR1cmVbMV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgKyAiXG4iCisgICAgICAgICAgKyAiKSA+IGNvdW50KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICsgIlxuIgorICAgICAgICAgICsgIiBhbmNlc3Rvci1vci1zZWxmOjpkczpTaWduYXR1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiArICJcbiIKKyAgICAgICAgICArICIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgKyAiXG4iCisKKworCisgICAgICAgICAgOworICAgICAgICAgLy9KKworICAgICAgICAgeHBhdGguc2V0WFBhdGgoeHBhdGhTdHIpOworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4cGF0aC5nZXRFbGVtZW50UGx1c1JldHVybnMoKSk7CisgICAgICAgICBzaWcuYWRkRG9jdW1lbnQoIiIsIHRyYW5zZm9ybXMsIENvbnN0YW50cy5BTEdPX0lEX0RJR0VTVF9TSEExKTsKKyAgICAgIH0KKworICAgICAgeworICAgICAgICAgc2lnLmdldEtleUluZm8oKQorICAgICAgICAgICAgLmFkZChuZXcgS2V5TmFtZShkb2MsIENyZWF0ZUNvbGxlY3RhYmxlU2lnbmF0dXJlLnBhc3NwaHJhc2UpKTsKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiU3RhcnQgc2lnbmluZyIpOworICAgICAgICAgc2lnLnNpZ24oc2lnCisgICAgICAgICAgICAuY3JlYXRlU2VjcmV0S2V5KENyZWF0ZUNvbGxlY3RhYmxlU2lnbmF0dXJlLnBhc3NwaHJhc2UuZ2V0Qnl0ZXMoKSkpOworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJGaW5pc2hlZCBzaWduaW5nIik7CisgICAgICB9CisKKyAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZiA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKHNpZ25hdHVyZUZpbGUpOworCisgICAgICBYTUxVdGlscy5vdXRwdXRET01jMTRuV2l0aENvbW1lbnRzKGRvYywgZik7CisgICAgICBmLmNsb3NlKCk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIldyb3RlIHNpZ25hdHVyZSB0byAiICsgQmFzZVVSSSk7CisKKyAgICAgIFNpZ25lZEluZm8gcyA9IHNpZy5nZXRTaWduZWRJbmZvKCk7CisKKyAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy5nZXRTaWduZWRDb250ZW50TGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIjIyMjIyMjIyMjIyMjIyMjIFNpZ25lZCBSZXNvdXJjZSAiICsgaQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAjIyMjIyMjIyMjIyMjIyMjIik7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmV3IFN0cmluZyhzLmdldFNpZ25lZENvbnRlbnRJdGVtKGkpKSk7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgIH0KKyAgIH0KKworICAgc3RhdGljIHsKKyAgICAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaW5pdCgpOworCisgICAgICAvLyBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHMuc2V0U2lnbmF0dXJlU3BlY05TcHJlZml4KCIiKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvc2lnbmF0dXJlL0NyZWF0ZURvbmFsZHNBZGRpdGlvbmFsVVJJU2lnbmF0dXJlLmphdmEgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3NpZ25hdHVyZS9DcmVhdGVEb25hbGRzQWRkaXRpb25hbFVSSVNpZ25hdHVyZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyZjcyOGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3NpZ25hdHVyZS9DcmVhdGVEb25hbGRzQWRkaXRpb25hbFVSSVNpZ25hdHVyZS5qYXZhCkBAIC0wLDAgKzEsMjQ0IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLnNpZ25hdHVyZTsKKworCisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5UGFpcjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LktleVBhaXJHZW5lcmF0b3I7CitpbXBvcnQgamF2YS5zZWN1cml0eS5Qcml2YXRlS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHVibGljS2V5OworCitpbXBvcnQgamF2YXguY3J5cHRvLlNlY3JldEtleTsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXI7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5hbGdvcml0aG1zLk1lc3NhZ2VEaWdlc3RBbGdvcml0aG07CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybXM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworCisvKioKKyAqIENsYXNzIENyZWF0ZURvbmFsZHNBZGRpdGlvbmFsVVJJU2lnbmF0dXJlCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICogQHZlcnNpb24gJFJldmlzaW9uJAorICovCitwdWJsaWMgY2xhc3MgQ3JlYXRlRG9uYWxkc0FkZGl0aW9uYWxVUklTaWduYXR1cmUgeworCisgICAvKioge0BsaW5rIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nfSBsb2dnaW5nIGZhY2lsaXR5ICovCisgICAgc3RhdGljIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZyBsb2cgPSAKKyAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeS5nZXRMb2coCisgICAgICAgICAgICBDcmVhdGVEb25hbGRzQWRkaXRpb25hbFVSSVNpZ25hdHVyZS5jbGFzcy5nZXROYW1lKCkpOworCisgICBzdGF0aWMgRG9jdW1lbnQgY3JlYXRlRG9jdW1lbnQoRG9jdW1lbnRCdWlsZGVyIGRiKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgIERvY3VtZW50IGRvYyA9IGRiLm5ld0RvY3VtZW50KCk7CisgICAgICBFbGVtZW50IHJvb3QgPSBkb2MuY3JlYXRlRWxlbWVudE5TKG51bGwsICJjb250YWluZXIiKTsKKyAgICAgIEVsZW1lbnQgY29udGVudHMgPSBkb2MuY3JlYXRlRWxlbWVudE5TKG51bGwsICJzaWduZWRDb250ZW50cyIpOworCisgICAgICBkb2MuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgICBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQocm9vdCk7CisgICAgICByb290LmFwcGVuZENoaWxkKGNvbnRlbnRzKTsKKyAgICAgIFhNTFV0aWxzLmFkZFJldHVyblRvRWxlbWVudChyb290KTsKKyAgICAgIGNvbnRlbnRzLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG5TaWduZWQgaXRlbVxuXG5mb3IgcXVlc3Rpb25zLCBjb250YWN0IGdldWVyLXBvbGxtYW5uQG51ZS5ldC1pbmYudW5pLXNpZWdlbi5kZVxuIikpOworCisgICAgICByZXR1cm4gZG9jOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBzaWduQW5kV3JpdGUKKyAgICAqCisgICAgKiBAcGFyYW0gZGIKKyAgICAqIEBwYXJhbSBwcml2aworICAgICogQHBhcmFtIHB1YmtleQorICAgICogQHBhcmFtIFNpZ25hdHVyZVVSSQorICAgICogQHBhcmFtIERpZ2VzdFVSSQorICAgICogQHBhcmFtIGZpbGVuYW1lCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgc2lnbkFuZFdyaXRlKAorICAgICAgICAgICBEb2N1bWVudEJ1aWxkZXIgZGIsIFByaXZhdGVLZXkgcHJpdmssIFB1YmxpY0tleSBwdWJrZXksIFN0cmluZyBTaWduYXR1cmVVUkksIFN0cmluZyBEaWdlc3RVUkksIFN0cmluZyBmaWxlbmFtZSkKKyAgICAgICAgICAgICAgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIERvY3VtZW50IGRvYyA9IGNyZWF0ZURvY3VtZW50KGRiKTsKKyAgICAgIEVsZW1lbnQgcm9vdCA9IGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKTsKKworICAgICAgRmlsZSBmID0gbmV3IEZpbGUoZmlsZW5hbWUpOworICAgICAgWE1MU2lnbmF0dXJlIHNpZ25hdHVyZSA9IG5ldyBYTUxTaWduYXR1cmUoZG9jLCBmLnRvVVJMKCkudG9TdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZVVSSSk7CisgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9FTlZFTE9QRURfU0lHTkFUVVJFKTsKKyAgICAgIHNpZ25hdHVyZS5hZGREb2N1bWVudCgiIiwgdHJhbnNmb3JtcywgRGlnZXN0VVJJKTsKKyAgICAgIHNpZ25hdHVyZS5hZGRLZXlJbmZvKHB1YmtleSk7CisgICAgICByb290LmFwcGVuZENoaWxkKHNpZ25hdHVyZS5nZXRFbGVtZW50KCkpOworICAgICAgWE1MVXRpbHMuYWRkUmV0dXJuVG9FbGVtZW50KHJvb3QpOworICAgICAgc2lnbmF0dXJlLnNpZ24ocHJpdmspOworCisgICAgICBGaWxlT3V0cHV0U3RyZWFtIGZvcyA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKGYpOworCisgICAgICBYTUxVdGlscy5vdXRwdXRET01jMTRuV2l0aENvbW1lbnRzKGRvYywgZm9zKTsKKworICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKG5ldyBTdHJpbmcoc2lnbmF0dXJlLmdldFNpZ25lZEluZm8oKS5nZXRSZWZlcmVuY2VkQ29udGVudEFmdGVyVHJhbnNmb3Jtc0l0ZW0oMCkuZ2V0Qnl0ZXMoKSkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWNBbmRXcml0ZQorICAgICoKKyAgICAqIEBwYXJhbSBkYgorICAgICogQHBhcmFtIG1hY2tleQorICAgICogQHBhcmFtIFNpZ25hdHVyZVVSSQorICAgICogQHBhcmFtIERpZ2VzdFVSSQorICAgICogQHBhcmFtIGZpbGVuYW1lCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFjQW5kV3JpdGUoCisgICAgICAgICAgIERvY3VtZW50QnVpbGRlciBkYiwgYnl0ZVtdIG1hY2tleSwgU3RyaW5nIFNpZ25hdHVyZVVSSSwgU3RyaW5nIERpZ2VzdFVSSSwgU3RyaW5nIGZpbGVuYW1lKQorICAgICAgICAgICAgICB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihTaWduYXR1cmVVUkkgKyAiICAtLS0gICAiICsgRGlnZXN0VVJJKTsKKworCisgICAgICBEb2N1bWVudCBkb2MgPSBjcmVhdGVEb2N1bWVudChkYik7CisgICAgICBFbGVtZW50IHJvb3QgPSBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCk7CisKKyAgICAgIEZpbGUgZiA9IG5ldyBGaWxlKGZpbGVuYW1lKTsKKyAgICAgIFhNTFNpZ25hdHVyZSBzaWduYXR1cmUgPSBuZXcgWE1MU2lnbmF0dXJlKGRvYywgZi50b1VSTCgpLnRvU3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaWduYXR1cmVVUkkpOworICAgICAgVHJhbnNmb3JtcyB0cmFuc2Zvcm1zID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKworICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fRU5WRUxPUEVEX1NJR05BVFVSRSk7CisgICAgICBzaWduYXR1cmUuYWRkRG9jdW1lbnQoIiIsIHRyYW5zZm9ybXMsIERpZ2VzdFVSSSk7CisKKyAgICAgIFNlY3JldEtleSBzZWNyZXRLZXkgPSBzaWduYXR1cmUuY3JlYXRlU2VjcmV0S2V5KG1hY2tleSk7CisKKyAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoc2lnbmF0dXJlLmdldEVsZW1lbnQoKSk7CisgICAgICBYTUxVdGlscy5hZGRSZXR1cm5Ub0VsZW1lbnQocm9vdCk7CisgICAgICBzaWduYXR1cmUuc2lnbihzZWNyZXRLZXkpOworCisgICAgICBGaWxlT3V0cHV0U3RyZWFtIGZvcyA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKGYpOworCisgICAgICBYTUxVdGlscy5vdXRwdXRET01jMTRuV2l0aENvbW1lbnRzKGRvYywgZm9zKTsKKworICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKG5ldyBTdHJpbmcoc2lnbmF0dXJlLmdldFNpZ25lZEluZm8oKS5nZXRSZWZlcmVuY2VkQ29udGVudEFmdGVyVHJhbnNmb3Jtc0l0ZW0oMCkuZ2V0Qnl0ZXMoKSkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWluCisgICAgKgorICAgICogQHBhcmFtIHVudXNlZAorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIHVudXNlZFtdKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuSW5pdC5pbml0KCk7CisKKyAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0KKyAgICAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKworICAgICAgZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworCisgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisKKyAgICAgIC8vIHRlc3QgZGlnZXN0cyBpbiByZWZlcmVuY2VzCisgICAgICBtYWNBbmRXcml0ZShkYiwgInNlY3JldCIuZ2V0Qnl0ZXMoIlVURi04IiksCisgICAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmUuQUxHT19JRF9NQUNfSE1BQ19TSEExLAorICAgICAgICAgICAgICAgICAgTWVzc2FnZURpZ2VzdEFsZ29yaXRobS5BTEdPX0lEX0RJR0VTVF9TSEExLAorICAgICAgICAgICAgICAgICAgIk1hY1NoYTFfRGlnZXN0U2hhMS54bWwiKTsKKyAgICAgIG1hY0FuZFdyaXRlKGRiLCAic2VjcmV0Ii5nZXRCeXRlcygiVVRGLTgiKSwKKyAgICAgICAgICAgICAgICAgIFhNTFNpZ25hdHVyZS5BTEdPX0lEX01BQ19ITUFDX1NIQTEsCisgICAgICAgICAgICAgICAgICBNZXNzYWdlRGlnZXN0QWxnb3JpdGhtLkFMR09fSURfRElHRVNUX1NIQTI1NiwKKyAgICAgICAgICAgICAgICAgICJNYWNTaGExX0RpZ2VzdFNoYTI1Ni54bWwiKTsKKyAgICAgIG1hY0FuZFdyaXRlKGRiLCAic2VjcmV0Ii5nZXRCeXRlcygiVVRGLTgiKSwKKyAgICAgICAgICAgICAgICAgIFhNTFNpZ25hdHVyZS5BTEdPX0lEX01BQ19ITUFDX1NIQTEsCisgICAgICAgICAgICAgICAgICBNZXNzYWdlRGlnZXN0QWxnb3JpdGhtLkFMR09fSURfRElHRVNUX1NIQTM4NCwKKyAgICAgICAgICAgICAgICAgICJNYWNTaGExX0RpZ2VzdFNoYTM4NC54bWwiKTsKKyAgICAgIG1hY0FuZFdyaXRlKGRiLCAic2VjcmV0Ii5nZXRCeXRlcygiVVRGLTgiKSwKKyAgICAgICAgICAgICAgICAgIFhNTFNpZ25hdHVyZS5BTEdPX0lEX01BQ19ITUFDX1NIQTEsCisgICAgICAgICAgICAgICAgICBNZXNzYWdlRGlnZXN0QWxnb3JpdGhtLkFMR09fSURfRElHRVNUX1NIQTUxMiwKKyAgICAgICAgICAgICAgICAgICJNYWNTaGExX0RpZ2VzdFNoYTUxMi54bWwiKTsKKyAgICAgIG1hY0FuZFdyaXRlKGRiLCAic2VjcmV0Ii5nZXRCeXRlcygiVVRGLTgiKSwKKyAgICAgICAgICAgICAgICAgIFhNTFNpZ25hdHVyZS5BTEdPX0lEX01BQ19ITUFDX1NIQTEsCisgICAgICAgICAgICAgICAgICBNZXNzYWdlRGlnZXN0QWxnb3JpdGhtLkFMR09fSURfRElHRVNUX1JJUEVNRDE2MCwKKyAgICAgICAgICAgICAgICAgICJNYWNTaGExX0RpZ2VzdFJpcGVtZDE2MC54bWwiKTsKKyAgICAgIG1hY0FuZFdyaXRlKGRiLCAic2VjcmV0Ii5nZXRCeXRlcygiVVRGLTgiKSwKKyAgICAgICAgICAgICAgICAgIFhNTFNpZ25hdHVyZS5BTEdPX0lEX01BQ19ITUFDX1NIQTEsCisgICAgICAgICAgICAgICAgICBNZXNzYWdlRGlnZXN0QWxnb3JpdGhtLkFMR09fSURfRElHRVNUX05PVF9SRUNPTU1FTkRFRF9NRDUsCisgICAgICAgICAgICAgICAgICAiTWFjU2hhMV9EaWdlc3RNZDUueG1sIik7CisKKworICAgICAgLy8gdGVzdCBkaWdlc3RzIGluIGhtYWNzCisgICAgICBtYWNBbmRXcml0ZShkYiwgInNlY3JldCIuZ2V0Qnl0ZXMoIlVURi04IiksCisgICAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmUuQUxHT19JRF9NQUNfSE1BQ19TSEExLAorICAgICAgICAgICAgICAgICAgTWVzc2FnZURpZ2VzdEFsZ29yaXRobS5BTEdPX0lEX0RJR0VTVF9TSEExLAorICAgICAgICAgICAgICAgICAgIk1hY1NoYTFfRGlnZXN0U2hhMS54bWwiKTsKKyAgICAgIG1hY0FuZFdyaXRlKGRiLCAic2VjcmV0Ii5nZXRCeXRlcygiVVRGLTgiKSwKKyAgICAgICAgICAgICAgICAgIFhNTFNpZ25hdHVyZS5BTEdPX0lEX01BQ19ITUFDX1NIQTI1NiwKKyAgICAgICAgICAgICAgICAgIE1lc3NhZ2VEaWdlc3RBbGdvcml0aG0uQUxHT19JRF9ESUdFU1RfU0hBMSwKKyAgICAgICAgICAgICAgICAgICJNYWNTaGEyNTZfRGlnZXN0U2hhMS54bWwiKTsKKyAgICAgIG1hY0FuZFdyaXRlKGRiLCAic2VjcmV0Ii5nZXRCeXRlcygiVVRGLTgiKSwKKyAgICAgICAgICAgICAgICAgIFhNTFNpZ25hdHVyZS5BTEdPX0lEX01BQ19ITUFDX1NIQTM4NCwKKyAgICAgICAgICAgICAgICAgIE1lc3NhZ2VEaWdlc3RBbGdvcml0aG0uQUxHT19JRF9ESUdFU1RfU0hBMSwKKyAgICAgICAgICAgICAgICAgICJNYWNTaGEzODRfRGlnZXN0U2hhMS54bWwiKTsKKyAgICAgIG1hY0FuZFdyaXRlKGRiLCAic2VjcmV0Ii5nZXRCeXRlcygiVVRGLTgiKSwKKyAgICAgICAgICAgICAgICAgIFhNTFNpZ25hdHVyZS5BTEdPX0lEX01BQ19ITUFDX1NIQTUxMiwKKyAgICAgICAgICAgICAgICAgIE1lc3NhZ2VEaWdlc3RBbGdvcml0aG0uQUxHT19JRF9ESUdFU1RfU0hBMSwKKyAgICAgICAgICAgICAgICAgICJNYWNTaGE1MTJfRGlnZXN0U2hhMS54bWwiKTsKKyAgICAgIG1hY0FuZFdyaXRlKGRiLCAic2VjcmV0Ii5nZXRCeXRlcygiVVRGLTgiKSwKKyAgICAgICAgICAgICAgICAgIFhNTFNpZ25hdHVyZS5BTEdPX0lEX01BQ19ITUFDX1JJUEVNRDE2MCwKKyAgICAgICAgICAgICAgICAgIE1lc3NhZ2VEaWdlc3RBbGdvcml0aG0uQUxHT19JRF9ESUdFU1RfU0hBMSwKKyAgICAgICAgICAgICAgICAgICJNYWNSaXBlbWQxNjBfRGlnZXN0U2hhMS54bWwiKTsKKyAgICAgIG1hY0FuZFdyaXRlKGRiLCAic2VjcmV0Ii5nZXRCeXRlcygiVVRGLTgiKSwKKyAgICAgICAgICAgICAgICAgIFhNTFNpZ25hdHVyZS5BTEdPX0lEX01BQ19ITUFDX05PVF9SRUNPTU1FTkRFRF9NRDUsCisgICAgICAgICAgICAgICAgICBNZXNzYWdlRGlnZXN0QWxnb3JpdGhtLkFMR09fSURfRElHRVNUX1NIQTEsCisgICAgICAgICAgICAgICAgICAiTWFjTWQ1X0RpZ2VzdFNoYTEueG1sIik7CisKKyAgICAgIEtleVBhaXJHZW5lcmF0b3Iga3BnID0gS2V5UGFpckdlbmVyYXRvci5nZXRJbnN0YW5jZSgiUlNBIiwgIkJDIik7CisgICAgICBLZXlQYWlyIGtleVBhaXIgPSBrcGcuZ2VuZXJhdGVLZXlQYWlyKCk7CisgICAgICBQcml2YXRlS2V5IHByaXZhdGVLZXkgPSBrZXlQYWlyLmdldFByaXZhdGUoKTsKKyAgICAgIFB1YmxpY0tleSBwdWJrZXkgPSBrZXlQYWlyLmdldFB1YmxpYygpOworCisgICAgICAvLyB0ZXN0IGRpZ2VzdHMgaW4gUlNBCisgICAgICBzaWduQW5kV3JpdGUoZGIsIHByaXZhdGVLZXksIHB1YmtleSwKKyAgICAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmUuQUxHT19JRF9TSUdOQVRVUkVfUlNBX1NIQTEsCisgICAgICAgICAgICAgICAgICAgTWVzc2FnZURpZ2VzdEFsZ29yaXRobS5BTEdPX0lEX0RJR0VTVF9TSEExLAorICAgICAgICAgICAgICAgICAgICJTaWduYXR1cmVSc2FTaGExX0RpZ2VzdFNoYTEueG1sIik7CisgICAgICBzaWduQW5kV3JpdGUoZGIsIHByaXZhdGVLZXksIHB1YmtleSwKKyAgICAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmUuQUxHT19JRF9TSUdOQVRVUkVfUlNBX1NIQTI1NiwKKyAgICAgICAgICAgICAgICAgICBNZXNzYWdlRGlnZXN0QWxnb3JpdGhtLkFMR09fSURfRElHRVNUX1NIQTEsCisgICAgICAgICAgICAgICAgICAgIlNpZ25hdHVyZVJzYVNoYTI1Nl9EaWdlc3RTaGExLnhtbCIpOworICAgICAgc2lnbkFuZFdyaXRlKGRiLCBwcml2YXRlS2V5LCBwdWJrZXksCisgICAgICAgICAgICAgICAgICAgWE1MU2lnbmF0dXJlLkFMR09fSURfU0lHTkFUVVJFX1JTQV9TSEEzODQsCisgICAgICAgICAgICAgICAgICAgTWVzc2FnZURpZ2VzdEFsZ29yaXRobS5BTEdPX0lEX0RJR0VTVF9TSEExLAorICAgICAgICAgICAgICAgICAgICJTaWduYXR1cmVSc2FTaGEzODRfRGlnZXN0U2hhMS54bWwiKTsKKyAgICAgIHNpZ25BbmRXcml0ZShkYiwgcHJpdmF0ZUtleSwgcHVia2V5LAorICAgICAgICAgICAgICAgICAgIFhNTFNpZ25hdHVyZS5BTEdPX0lEX1NJR05BVFVSRV9SU0FfU0hBNTEyLAorICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VEaWdlc3RBbGdvcml0aG0uQUxHT19JRF9ESUdFU1RfU0hBMSwKKyAgICAgICAgICAgICAgICAgICAiU2lnbmF0dXJlUnNhU2hhNTEyX0RpZ2VzdFNoYTEueG1sIik7CisgICAgICBzaWduQW5kV3JpdGUoZGIsIHByaXZhdGVLZXksIHB1YmtleSwKKyAgICAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmUuQUxHT19JRF9TSUdOQVRVUkVfUlNBX1JJUEVNRDE2MCwKKyAgICAgICAgICAgICAgICAgICBNZXNzYWdlRGlnZXN0QWxnb3JpdGhtLkFMR09fSURfRElHRVNUX1NIQTEsCisgICAgICAgICAgICAgICAgICAgIlNpZ25hdHVyZVJzYVJpcGVtZDE2MF9EaWdlc3RTaGExLnhtbCIpOworICAgICAgc2lnbkFuZFdyaXRlKGRiLCBwcml2YXRlS2V5LCBwdWJrZXksCisgICAgICAgICAgICAgICAgICAgWE1MU2lnbmF0dXJlLkFMR09fSURfU0lHTkFUVVJFX05PVF9SRUNPTU1FTkRFRF9SU0FfTUQ1LAorICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VEaWdlc3RBbGdvcml0aG0uQUxHT19JRF9ESUdFU1RfU0hBMSwKKyAgICAgICAgICAgICAgICAgICAiU2lnbmF0dXJlUnNhTWQ1X0RpZ2VzdFNoYTEueG1sIik7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3NpZ25hdHVyZS9DcmVhdGVFbnZlbG9waW5nU2lnbmF0dXJlLmphdmEgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3NpZ25hdHVyZS9DcmVhdGVFbnZlbG9waW5nU2lnbmF0dXJlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIzNTZiYgotLS0gL2Rldi9udWxsCisrKyBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvc2lnbmF0dXJlL0NyZWF0ZUVudmVsb3BpbmdTaWduYXR1cmUuamF2YQpAQCAtMCwwICsxLDEyNyBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2FtcGxlcy5zaWduYXR1cmU7CisKKworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uRmlsZU91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LktleVN0b3JlOworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHJpdmF0ZUtleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLk9iamVjdENvbnRhaW5lcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworCisvKioKKyAqCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICovCitwdWJsaWMgY2xhc3MgQ3JlYXRlRW52ZWxvcGluZ1NpZ25hdHVyZSB7CisKKyAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZyhDcmVhdGVTaWduYXR1cmUuY2xhc3MuZ2V0TmFtZSgpKTsKKworICAgLyoqCisgICAgKiBNZXRob2QgbWFpbgorICAgICoKKyAgICAqIEBwYXJhbSB1bnVzZWQKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyB1bnVzZWRbXSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAvL0otCisgICAgICBTdHJpbmcga2V5c3RvcmVUeXBlID0gIkpLUyI7CisgICAgICBTdHJpbmcga2V5c3RvcmVGaWxlID0gImRhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9pbnB1dC9rZXlzdG9yZS5qa3MiOworICAgICAgU3RyaW5nIGtleXN0b3JlUGFzcyA9ICJ4bWxzZWN1cml0eSI7CisgICAgICBTdHJpbmcgcHJpdmF0ZUtleUFsaWFzID0gInRlc3QiOworICAgICAgU3RyaW5nIHByaXZhdGVLZXlQYXNzID0gInhtbHNlY3VyaXR5IjsKKyAgICAgIFN0cmluZyBjZXJ0aWZpY2F0ZUFsaWFzID0gInRlc3QiOworICAgICAgRmlsZSBzaWduYXR1cmVGaWxlID0gbmV3IEZpbGUoInNpZ25hdHVyZS54bWwiKTsKKyAgICAgIC8vSisKKyAgICAgIEtleVN0b3JlIGtzID0gS2V5U3RvcmUuZ2V0SW5zdGFuY2Uoa2V5c3RvcmVUeXBlKTsKKyAgICAgIEZpbGVJbnB1dFN0cmVhbSBmaXMgPSBuZXcgRmlsZUlucHV0U3RyZWFtKGtleXN0b3JlRmlsZSk7CisKKyAgICAgIGtzLmxvYWQoZmlzLCBrZXlzdG9yZVBhc3MudG9DaGFyQXJyYXkoKSk7CisKKyAgICAgIFByaXZhdGVLZXkgcHJpdmF0ZUtleSA9IChQcml2YXRlS2V5KSBrcy5nZXRLZXkocHJpdmF0ZUtleUFsaWFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZUtleVBhc3MudG9DaGFyQXJyYXkoKSk7CisgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9CisgICAgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisKKyAgICAgIGRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKworICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyIGRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOworICAgICAgb3JnLnczYy5kb20uRG9jdW1lbnQgZG9jID0gZGIubmV3RG9jdW1lbnQoKTsKKyAgICAgIFN0cmluZyBCYXNlVVJJID0gc2lnbmF0dXJlRmlsZS50b1VSTCgpLnRvU3RyaW5nKCk7CisgICAgICBYTUxTaWduYXR1cmUgc2lnID0gbmV3IFhNTFNpZ25hdHVyZShkb2MsIEJhc2VVUkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmUuQUxHT19JRF9TSUdOQVRVUkVfRFNBKTsKKworICAgICAgZG9jLmFwcGVuZENoaWxkKHNpZy5nZXRFbGVtZW50KCkpOworCisgICAgICB7CisgICAgICAgICBPYmplY3RDb250YWluZXIgb2JqID0gbmV3IE9iamVjdENvbnRhaW5lcihkb2MpOworICAgICAgICAgRWxlbWVudCBhbkVsZW1lbnQgPSBkb2MuY3JlYXRlRWxlbWVudE5TKG51bGwsICJJbnNpZGVPYmplY3QiKTsKKworICAgICAgICAgYW5FbGVtZW50LmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiQSB0ZXh0IGluIGEgYm94IikpOworICAgICAgICAgb2JqLmFwcGVuZENoaWxkKGFuRWxlbWVudCk7CisKKyAgICAgICAgIFN0cmluZyBJZCA9ICJUaGVGaXJzdE9iamVjdCI7CisKKyAgICAgICAgIG9iai5zZXRJZChJZCk7CisgICAgICAgICBzaWcuYXBwZW5kT2JqZWN0KG9iaik7CisKKyAgICAgICAgIFRyYW5zZm9ybXMgdHJhbnNmb3JtcyA9IG5ldyBUcmFuc2Zvcm1zKGRvYyk7CisKKyAgICAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX0MxNE5fV0lUSF9DT01NRU5UUyk7CisgICAgICAgICBzaWcuYWRkRG9jdW1lbnQoIiMiICsgSWQsIHRyYW5zZm9ybXMsIENvbnN0YW50cy5BTEdPX0lEX0RJR0VTVF9TSEExKTsKKyAgICAgIH0KKworICAgICAgeworICAgICAgICAgWDUwOUNlcnRpZmljYXRlIGNlcnQgPQorICAgICAgICAgICAgKFg1MDlDZXJ0aWZpY2F0ZSkga3MuZ2V0Q2VydGlmaWNhdGUoY2VydGlmaWNhdGVBbGlhcyk7CisKKyAgICAgICAgIHNpZy5hZGRLZXlJbmZvKGNlcnQpOworICAgICAgICAgc2lnLmFkZEtleUluZm8oY2VydC5nZXRQdWJsaWNLZXkoKSk7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlN0YXJ0IHNpZ25pbmciKTsKKyAgICAgICAgIHNpZy5zaWduKHByaXZhdGVLZXkpOworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJGaW5pc2hlZCBzaWduaW5nIik7CisgICAgICB9CisKKyAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZiA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKHNpZ25hdHVyZUZpbGUpOworCisgICAgICBYTUxVdGlscy5vdXRwdXRET01jMTRuV2l0aENvbW1lbnRzKGRvYywgZik7CisgICAgICBmLmNsb3NlKCk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIldyb3RlIHNpZ25hdHVyZSB0byAiICsgQmFzZVVSSSk7CisKKyAgICAgIGZvciAoaW50IGk9MDsgaTxzaWcuZ2V0U2lnbmVkSW5mbygpLmdldFNpZ25lZENvbnRlbnRMZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIi0tLSBTaWduZWQgQ29udGVudCBmb2xsb3dzIC0tLSIpOworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG5ldyBTdHJpbmcoc2lnLmdldFNpZ25lZEluZm8oKS5nZXRTaWduZWRDb250ZW50SXRlbShpKSkpOworICAgICAgfQorICAgfQorCisgICBzdGF0aWMgeworICAgICAgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuSW5pdC5pbml0KCk7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3NpZ25hdHVyZS9DcmVhdGVNZXJsaW5zRXhhbXBsZVNpeHRlZW4uamF2YSBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvc2lnbmF0dXJlL0NyZWF0ZU1lcmxpbnNFeGFtcGxlU2l4dGVlbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3OTYwYzEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3NpZ25hdHVyZS9DcmVhdGVNZXJsaW5zRXhhbXBsZVNpeHRlZW4uamF2YQpAQCAtMCwwICsxLDUzMyBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2FtcGxlcy5zaWduYXR1cmU7CisKKworCitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5U3RvcmU7CitpbXBvcnQgamF2YS5zZWN1cml0eS5Qcml2YXRlS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmNvbnRlbnQuUmV0cmlldmFsTWV0aG9kOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC5YNTA5RGF0YTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmNvbnRlbnQueDUwOS5YTUxYNTA5Q2VydGlmaWNhdGU7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50Lng1MDkuWE1MWDUwOUlzc3VlclNlcmlhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmNvbnRlbnQueDUwOS5YTUxYNTA5U3ViamVjdE5hbWU7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2FtcGxlcy51dGlscy5yZXNvbHZlci5PZmZsaW5lUmVzb2x2ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLk1hbmlmZXN0OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5PYmplY3RDb250YWluZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlJlZmVyZW5jZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuU2lnbmF0dXJlUHJvcGVydGllczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuU2lnbmF0dXJlUHJvcGVydHk7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlNpZ25lZEluZm87CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybXM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5wYXJhbXMuWFBhdGhDb250YWluZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLklkUmVzb2x2ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuSmF2YVV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKKworCisvKioKKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKi8KK3B1YmxpYyBjbGFzcyBDcmVhdGVNZXJsaW5zRXhhbXBsZVNpeHRlZW4geworICAgIAorICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKENyZWF0ZU1lcmxpbnNFeGFtcGxlU2l4dGVlbi5jbGFzcy5nZXROYW1lKCkpOworCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWluCisgICAgKgorICAgICogQHBhcmFtIHVudXNlZAorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIHVudXNlZFtdKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgIENvbnN0YW50cy5zZXRTaWduYXR1cmVTcGVjTlNwcmVmaXgoImRzIik7CisgICAgICAvL0otCisgICAgICBTdHJpbmcga2V5c3RvcmVUeXBlID0gIkpLUyI7CisgICAgICBTdHJpbmcga2V5c3RvcmVGaWxlID0gImRhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9pbnB1dC9rZXlzdG9yZS5qa3MiOworICAgICAgU3RyaW5nIGtleXN0b3JlUGFzcyA9ICJ4bWxzZWN1cml0eSI7CisgICAgICBTdHJpbmcgcHJpdmF0ZUtleUFsaWFzID0gInRlc3QiOworICAgICAgU3RyaW5nIHByaXZhdGVLZXlQYXNzID0gInhtbHNlY3VyaXR5IjsKKyAgICAgIFN0cmluZyBjZXJ0aWZpY2F0ZUFsaWFzID0gInRlc3QiOworICAgICAgRmlsZSBzaWduYXR1cmVGaWxlID0gbmV3IEZpbGUoIm1lcmxpbnNTaXh0ZWVuUmVjcmVhdGVkTm9SZXRyaWV2YWxNZXRob2QueG1sIik7CisgICAgICAvL0orCisgICAgICBLZXlTdG9yZSBrcyA9IEtleVN0b3JlLmdldEluc3RhbmNlKGtleXN0b3JlVHlwZSk7CisgICAgICBGaWxlSW5wdXRTdHJlYW0gZmlzID0gbmV3IEZpbGVJbnB1dFN0cmVhbShrZXlzdG9yZUZpbGUpOworCisgICAgICBrcy5sb2FkKGZpcywga2V5c3RvcmVQYXNzLnRvQ2hhckFycmF5KCkpOworCisgICAgICBQcml2YXRlS2V5IHByaXZhdGVLZXkgPSAoUHJpdmF0ZUtleSkga3MuZ2V0S2V5KHByaXZhdGVLZXlBbGlhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXZhdGVLZXlQYXNzLnRvQ2hhckFycmF5KCkpOworCisgICAgICBpZiAocHJpdmF0ZUtleSA9PSBudWxsKSB7CisgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiUHJpdmF0ZSBrZXkgaXMgbnVsbCIpOworICAgICAgfQorCisgICAgICBYNTA5Q2VydGlmaWNhdGUgY2VydCA9CisgICAgICAgICAoWDUwOUNlcnRpZmljYXRlKSBrcy5nZXRDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZUFsaWFzKTsKKyAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0KKyAgICAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKworICAgICAgZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworCisgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgICBvcmcudzNjLmRvbS5Eb2N1bWVudCBkb2MgPSBkYi5uZXdEb2N1bWVudCgpOworCisgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworICAgICAgRWxlbWVudCBlbnZlbG9wZSA9IGRvYy5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudXNwcy5nb3YvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFbnZlbG9wZSIpOworCisgICAgICBlbnZlbG9wZS5zZXRBdHRyaWJ1dGVOUyhDb25zdGFudHMuTmFtZXNwYWNlU3BlY05TLCAieG1sbnMiLCAiaHR0cDovL3d3dy51c3BzLmdvdi8iKTsKKyAgICAgIGVudmVsb3BlLnNldEF0dHJpYnV0ZU5TKENvbnN0YW50cy5OYW1lc3BhY2VTcGVjTlMsICJ4bWxuczpmb28iLCAiaHR0cDovL3d3dy51c3BzLmdvdi9mb28iKTsKKyAgICAgIGVudmVsb3BlLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG4iKSk7CisgICAgICBkb2MuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZUNvbW1lbnQoIiBQcmVhbWJsZSAiKSk7CisgICAgICBkb2MuYXBwZW5kQ2hpbGQoZW52ZWxvcGUpOworICAgICAgZG9jLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVDb21tZW50KCIgUG9zdGFtYmxlICIpKTsKKworICAgICAgRWxlbWVudCBkZWFyU2lyID0gZG9jLmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy51c3BzLmdvdi8iLCAiRGVhclNpciIpOworCisgICAgICBkZWFyU2lyLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiZm9vIikpOworICAgICAgZW52ZWxvcGUuYXBwZW5kQ2hpbGQoZGVhclNpcik7CisgICAgICBlbnZlbG9wZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuIikpOworCisgICAgICBFbGVtZW50IGJvZHkgPSBkb2MuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnVzcHMuZ292LyIsICJCb2R5Iik7CisKKyAgICAgIGJvZHkuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJiYXIiKSk7CisgICAgICBlbnZlbG9wZS5hcHBlbmRDaGlsZChib2R5KTsKKyAgICAgIGVudmVsb3BlLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG4iKSk7CisKKyAgICAgIEVsZW1lbnQgWW91cnNTaW5jZXJlbHkgPSBkb2MuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnVzcHMuZ292LyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIllvdXJzU2luY2VyZWx5Iik7CisgICAgICBZb3Vyc1NpbmNlcmVseS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuIikpOworCisgICAgICBlbnZlbG9wZS5hcHBlbmRDaGlsZChZb3Vyc1NpbmNlcmVseSk7CisKKyAgICAgIEVsZW1lbnQgUG9zdFNjcmlwdCA9IGRvYy5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudXNwcy5nb3YvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBvc3RTY3JpcHQiKTsKKworICAgICAgUG9zdFNjcmlwdC5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoImJhciIpKTsKKyAgICAgIGVudmVsb3BlLmFwcGVuZENoaWxkKFBvc3RTY3JpcHQpOworCisgICAgICBFbGVtZW50IE5vdGFyaWVzID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhudWxsLCAiTm90YXJpZXMiKTsKKworICAgICAgTm90YXJpZXMuc2V0QXR0cmlidXRlTlMoQ29uc3RhbnRzLk5hbWVzcGFjZVNwZWNOUywgInhtbG5zIiwgIiIpOworICAgICAgTm90YXJpZXMuc2V0QXR0cmlidXRlTlMobnVsbCwgIklkIiwgIm5vdGFyaWVzIik7CisgICAgICBJZFJlc29sdmVyLnJlZ2lzdGVyRWxlbWVudEJ5SWQoTm90YXJpZXMsICJJZCIpOworCisgICAgICB7CisgICAgICAgICBFbGVtZW50IE5vdGFyeSA9IGRvYy5jcmVhdGVFbGVtZW50TlMobnVsbCwgIk5vdGFyeSIpOworCisgICAgICAgICBOb3Rhcnkuc2V0QXR0cmlidXRlTlMobnVsbCwgIm5hbWUiLCAiR3JlYXQsIEEuIFQuIik7CisgICAgICAgICBOb3Rhcmllcy5hcHBlbmRDaGlsZChOb3RhcnkpOworICAgICAgfQorCisgICAgICB7CisgICAgICAgICBFbGVtZW50IE5vdGFyeSA9IGRvYy5jcmVhdGVFbGVtZW50TlMobnVsbCwgIk5vdGFyeSIpOworCisgICAgICAgICBOb3Rhcnkuc2V0QXR0cmlidXRlTlMobnVsbCwgIm5hbWUiLCAiSHVuLCBBLiBULiIpOworICAgICAgICAgTm90YXJpZXMuYXBwZW5kQ2hpbGQoTm90YXJ5KTsKKyAgICAgIH0KKworICAgICAgZW52ZWxvcGUuYXBwZW5kQ2hpbGQoTm90YXJpZXMpOworICAgICAgZW52ZWxvcGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZUNvbW1lbnQoIiBDb21tZW50YXJ5ICIpKTsKKworICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICAgIFN0cmluZyBCYXNlVVJJID0gc2lnbmF0dXJlRmlsZS50b1VSTCgpLnRvU3RyaW5nKCk7CisgICAgICBYTUxTaWduYXR1cmUgc2lnID0gbmV3IFhNTFNpZ25hdHVyZShkb2MsIEJhc2VVUkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmUuQUxHT19JRF9TSUdOQVRVUkVfRFNBKTsKKworICAgICAgWW91cnNTaW5jZXJlbHkuYXBwZW5kQ2hpbGQoc2lnLmdldEVsZW1lbnQoKSk7CisgICAgICBzaWcuc2V0SWQoInNpZ25hdHVyZSIpOworCisgICAgICAvKgorICAgICAgICogQWRkIHRoZSBPYmplY3RzCisgICAgICAgKi8KKworICAgICAgLy8gb2JqZWN0LTEKKyAgICAgIHsKKyAgICAgICAgIE9iamVjdENvbnRhaW5lciBvYmplY3QxID0gbmV3IE9iamVjdENvbnRhaW5lcihkb2MpOworCisgICAgICAgICBvYmplY3QxLnNldElkKCJvYmplY3QtMSIpOworICAgICAgICAgb2JqZWN0MS5zZXRNaW1lVHlwZSgidGV4dC9wbGFpbiIpOworICAgICAgICAgb2JqZWN0MS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIkkgYW0gdGhlIHRleHQuIikpOworICAgICAgICAgc2lnLmFwcGVuZE9iamVjdChvYmplY3QxKTsKKyAgICAgIH0KKworICAgICAgLy8gb2JqZWN0LTIKKyAgICAgIHsKKyAgICAgICAgIE9iamVjdENvbnRhaW5lciBvYmplY3QyID0gbmV3IE9iamVjdENvbnRhaW5lcihkb2MpOworCisgICAgICAgICBvYmplY3QyLnNldElkKCJvYmplY3QtMiIpOworICAgICAgICAgb2JqZWN0Mi5zZXRNaW1lVHlwZSgidGV4dC9wbGFpbiIpOworICAgICAgICAgb2JqZWN0Mi5zZXRFbmNvZGluZygiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2Jhc2U2NCIpOworICAgICAgICAgb2JqZWN0Mi5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlNTQmhiU0IwYUdVZ2RHVjRkQzQ9IikpOworICAgICAgICAgc2lnLmFwcGVuZE9iamVjdChvYmplY3QyKTsKKyAgICAgIH0KKworICAgICAgLy8gb2JqZWN0LTMKKyAgICAgIHsKKyAgICAgICAgIE9iamVjdENvbnRhaW5lciBvYmplY3QgPSBuZXcgT2JqZWN0Q29udGFpbmVyKGRvYyk7CisKKyAgICAgICAgIG9iamVjdC5zZXRJZCgib2JqZWN0LTMiKTsKKworICAgICAgICAgRWxlbWVudCBub25jID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhudWxsLCAiTm9uQ29tbWVudGFuZHVzIik7CisKKyAgICAgICAgIG5vbmMuc2V0QXR0cmlidXRlTlMoQ29uc3RhbnRzLk5hbWVzcGFjZVNwZWNOUywgInhtbG5zIiwgIiIpOworICAgICAgICAgbm9uYy5hcHBlbmRDaGlsZChkb2MuY3JlYXRlQ29tbWVudCgiIENvbW1lbnRhbmR1bSAiKSk7CisgICAgICAgICBvYmplY3QuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJcbiAgICAgICAgIikpOworICAgICAgICAgb2JqZWN0LmFwcGVuZENoaWxkKG5vbmMpOworICAgICAgICAgb2JqZWN0LmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG4gICAgICAiKSk7CisgICAgICAgICBzaWcuYXBwZW5kT2JqZWN0KG9iamVjdCk7CisgICAgICB9CisKKyAgICAgIC8vIG9iamVjdCBudW1iZXIgNAorICAgICAgeworICAgICAgICAgT2JqZWN0Q29udGFpbmVyIG9iamVjdCA9IG5ldyBPYmplY3RDb250YWluZXIoZG9jKTsKKworICAgICAgICAgb2JqZWN0LmFwcGVuZENoaWxkKGNyZWF0ZU9iamVjdDQoc2lnKSk7CisgICAgICAgICBzaWcuYXBwZW5kT2JqZWN0KG9iamVjdCk7CisgICAgICB9CisKKyAgICAgIC8vIG9iamVjdCBudW1iZXIgNAorICAgICAgeworICAgICAgICAgT2JqZWN0Q29udGFpbmVyIG9iamVjdCA9IG5ldyBPYmplY3RDb250YWluZXIoZG9jKTsKKyAgICAgICAgIFNpZ25hdHVyZVByb3BlcnRpZXMgc3BzID0gbmV3IFNpZ25hdHVyZVByb3BlcnRpZXMoZG9jKTsKKworICAgICAgICAgc3BzLnNldElkKCJzaWduYXR1cmUtcHJvcGVydGllcy0xIik7CisKKyAgICAgICAgIFNpZ25hdHVyZVByb3BlcnR5IHNwID0gbmV3IFNpZ25hdHVyZVByb3BlcnR5KGRvYywgIiNzaWduYXR1cmUiKTsKKyAgICAgICAgIEVsZW1lbnQgc2lnbmVkQWRyZXNzID0gZG9jLmNyZWF0ZUVsZW1lbnROUygidXJuOmRlbW8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaWduZWRBZGRyZXNzIik7CisKKyAgICAgICAgIHNpZ25lZEFkcmVzcy5zZXRBdHRyaWJ1dGVOUyhDb25zdGFudHMuTmFtZXNwYWNlU3BlY05TLCAieG1sbnMiLCAidXJuOmRlbW8iKTsKKworICAgICAgICAgRWxlbWVudCBJUCA9IGRvYy5jcmVhdGVFbGVtZW50TlMoInVybjpkZW1vIiwgIklQIik7CisKKyAgICAgICAgIElQLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiMTkyLjE2OC4yMS4xMzgiKSk7CisgICAgICAgICBzaWduZWRBZHJlc3MuYXBwZW5kQ2hpbGQoSVApOworICAgICAgICAgc3AuYXBwZW5kQ2hpbGQoc2lnbmVkQWRyZXNzKTsKKyAgICAgICAgIHNwcy5hZGRTaWduYXR1cmVQcm9wZXJ0eShzcCk7CisgICAgICAgICBvYmplY3QuYXBwZW5kQ2hpbGQoc3BzLmdldEVsZW1lbnQoKSk7CisgICAgICAgICBzaWcuYXBwZW5kT2JqZWN0KG9iamVjdCk7CisgICAgICB9CisKKyAgICAgIHsKKyAgICAgICAgIE9iamVjdENvbnRhaW5lciBvYmplY3QgPSBuZXcgT2JqZWN0Q29udGFpbmVyKGRvYyk7CisKKyAgICAgICAgIG9iamVjdC5zZXRJZCgib2JqZWN0LTQiKTsKKworICAgICAgICAgWDUwOURhdGEgeDUwOWRhdGEgPSBuZXcgWDUwOURhdGEoZG9jKTsKKworICAgICAgICAgeDUwOWRhdGEuYWRkKG5ldyBYTUxYNTA5U3ViamVjdE5hbWUoZG9jLCBjZXJ0KSk7CisgICAgICAgICB4NTA5ZGF0YS5hZGQobmV3IFhNTFg1MDlJc3N1ZXJTZXJpYWwoZG9jLCBjZXJ0KSk7CisgICAgICAgICB4NTA5ZGF0YS5hZGQobmV3IFhNTFg1MDlDZXJ0aWZpY2F0ZShkb2MsIGNlcnQpKTsKKyAgICAgICAgIG9iamVjdC5hcHBlbmRDaGlsZCh4NTA5ZGF0YS5nZXRFbGVtZW50KCkpOworICAgICAgICAgc2lnLmFwcGVuZE9iamVjdChvYmplY3QpOworICAgICAgfQorCisgICAgICAvKgorICAgICAgICogQWRkIFJlZmVyZW5jZXMKKyAgICAgICAqLworICAgICAgc2lnLmdldFNpZ25lZEluZm8oKQorICAgICAgICAgLmFkZFJlc291cmNlUmVzb2x2ZXIobmV3IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMudXRpbHMucmVzb2x2ZXIKKyAgICAgICAgICAgIC5PZmZsaW5lUmVzb2x2ZXIoKSk7CisgICAgICBzaWcuYWRkRG9jdW1lbnQoImh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1zdHlsZXNoZWV0Iik7CisKKyAgICAgIHsKKyAgICAgICAgIFRyYW5zZm9ybXMgdHJhbnNmb3JtcyA9IG5ldyBUcmFuc2Zvcm1zKGRvYyk7CisKKyAgICAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX0JBU0U2NF9ERUNPREUpOworICAgICAgICAgc2lnLmFkZERvY3VtZW50KCJodHRwOi8veG1sZHNpZy5wb3Rob2xlLmNvbS94bWwtc3R5bGVzaGVldC50eHQiLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybXMsIENvbnN0YW50cy5BTEdPX0lEX0RJR0VTVF9TSEExKTsKKyAgICAgIH0KKworICAgICAgeworICAgICAgICAgVHJhbnNmb3JtcyB0cmFuc2Zvcm1zID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKyAgICAgICAgIFhQYXRoQ29udGFpbmVyIHhwYXRoQyA9IG5ldyBYUGF0aENvbnRhaW5lcihkb2MpOworCisgICAgICAgICB4cGF0aEMuc2V0WFBhdGgoInNlbGY6OnRleHQoKSIpOworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4cGF0aEMuZ2V0RWxlbWVudFBsdXNSZXR1cm5zKCkpOworICAgICAgICAgc2lnLmFkZERvY3VtZW50KCIjb2JqZWN0LTEiLCB0cmFuc2Zvcm1zLAorICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5BTEdPX0lEX0RJR0VTVF9TSEExLCBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0Iik7CisgICAgICB9CisgICAgICAvKgorICAgICAgeworICAgICAgICAgVHJhbnNmb3JtcyB0cmFuc2Zvcm1zID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKyAgICAgICAgIFhQYXRoQ29udGFpbmVyIHhwYXRoQyA9IG5ldyBYUGF0aENvbnRhaW5lcihkb2MpOworCisgICAgICAgICAvL0otCisgICAgICAgICB4cGF0aEMuc2V0WFBhdGhOYW1lc3BhY2VDb250ZXh0KCJkcyIsIENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMpOworICAgICAgICAgeHBhdGhDLnNldFhQYXRoKCJcbiIKKyAgICAgICAgICArICIgYW5jZXN0b3Itb3Itc2VsZjo6ZHM6U2lnbmVkSW5mbyAgICAgICAgICAgICAgICAgICAgIiArICJcbiIKKyAgICAgICAgICArICIgIGFuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiArICJcbiIKKyAgICAgICAgICArICIgY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6ZHM6UmVmZXJlbmNlIHwgICAgICAgICAgICAgIiArICJcbiIKKyAgICAgICAgICArICIgICAgICBoZXJlKCkvYW5jZXN0b3I6OmRzOlJlZmVyZW5jZVsxXSkgPiAgICAgICAgICAgIiArICJcbiIKKyAgICAgICAgICArICIgY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6ZHM6UmVmZXJlbmNlKSAgICAgICAgICAgICAgIiArICJcbiIKKyAgICAgICAgICArICIgIG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiArICJcbiIKKyAgICAgICAgICArICIgY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpIHwgICAgICAgICAgICAgICAgICAgIiArICJcbiIKKyAgICAgICAgICArICIgICAgICBpZCgnbm90YXJpZXMnKSkgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiArICJcbiIKKyAgICAgICAgICArICIgY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSAgICAgICAgICAgICAgICAgICAgIiArICJcbiIpOworICAgICAgICAgLy9KKworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4cGF0aEMuZ2V0RWxlbWVudFBsdXNSZXR1cm5zKCkpOworICAgICAgICAgc2lnLmFkZERvY3VtZW50KCIiLCB0cmFuc2Zvcm1zLCBDb25zdGFudHMuQUxHT19JRF9ESUdFU1RfU0hBMSwgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCIpOworICAgICAgfQorICAgICAgKi8KKworICAgICAgeworICAgICAgICAgVHJhbnNmb3JtcyB0cmFuc2Zvcm1zID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fQkFTRTY0X0RFQ09ERSk7CisgICAgICAgICBzaWcuYWRkRG9jdW1lbnQoIiNvYmplY3QtMiIsIHRyYW5zZm9ybXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLkFMR09fSURfRElHRVNUX1NIQTEsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiKTsKKyAgICAgIH0KKworICAgICAgc2lnLmFkZERvY3VtZW50KCIjbWFuaWZlc3QtMSIsIG51bGwsIENvbnN0YW50cy5BTEdPX0lEX0RJR0VTVF9TSEExLCBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjTWFuaWZlc3QiKTsKKyAgICAgIHNpZy5hZGREb2N1bWVudCgiI3NpZ25hdHVyZS1wcm9wZXJ0aWVzLTEiLCBudWxsLAorICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5BTEdPX0lEX0RJR0VTVF9TSEExLCBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjU2lnbmF0dXJlUHJvcGVydGllcyIpOworCisgICAgICB7CisgICAgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9FTlZFTE9QRURfU0lHTkFUVVJFKTsKKyAgICAgICAgIHNpZy5hZGREb2N1bWVudCgiIiwgdHJhbnNmb3JtcywgQ29uc3RhbnRzLkFMR09fSURfRElHRVNUX1NIQTEpOworICAgICAgfQorCisgICAgICB7CisgICAgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9FTlZFTE9QRURfU0lHTkFUVVJFKTsKKyAgICAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX0MxNE5fV0lUSF9DT01NRU5UUyk7CisgICAgICAgICBzaWcuYWRkRG9jdW1lbnQoIiIsIHRyYW5zZm9ybXMsIENvbnN0YW50cy5BTEdPX0lEX0RJR0VTVF9TSEExKTsKKyAgICAgIH0KKworICAgICAgeworICAgICAgICAgVHJhbnNmb3JtcyB0cmFuc2Zvcm1zID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fRU5WRUxPUEVEX1NJR05BVFVSRSk7CisgICAgICAgICBzaWcuYWRkRG9jdW1lbnQoIiN4cG9pbnRlcigvKSIsIHRyYW5zZm9ybXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLkFMR09fSURfRElHRVNUX1NIQTEpOworICAgICAgfQorCisgICAgICB7CisgICAgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9FTlZFTE9QRURfU0lHTkFUVVJFKTsKKyAgICAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX0MxNE5fV0lUSF9DT01NRU5UUyk7CisgICAgICAgICBzaWcuYWRkRG9jdW1lbnQoIiN4cG9pbnRlcigvKSIsIHRyYW5zZm9ybXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLkFMR09fSURfRElHRVNUX1NIQTEpOworICAgICAgfQorCisgICAgICB7CisgICAgICAgICBzaWcuYWRkRG9jdW1lbnQoIiNvYmplY3QtMyIsIG51bGwsIENvbnN0YW50cy5BTEdPX0lEX0RJR0VTVF9TSEExLAorICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsICJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0Iik7CisgICAgICB9CisKKyAgICAgIHsKKyAgICAgICAgIFRyYW5zZm9ybXMgdHJhbnNmb3JtcyA9IG5ldyBUcmFuc2Zvcm1zKGRvYyk7CisKKyAgICAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX0MxNE5fV0lUSF9DT01NRU5UUyk7CisgICAgICAgICBzaWcuYWRkRG9jdW1lbnQoIiNvYmplY3QtMyIsIHRyYW5zZm9ybXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLkFMR09fSURfRElHRVNUX1NIQTEsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiKTsKKyAgICAgIH0KKworICAgICAgeworICAgICAgICAgc2lnLmFkZERvY3VtZW50KCIjeHBvaW50ZXIoaWQoJ29iamVjdC0zJykpIiwgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMuQUxHT19JRF9ESUdFU1RfU0hBMSwgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCIpOworICAgICAgfQorCisgICAgICB7CisgICAgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9DMTROX1dJVEhfQ09NTUVOVFMpOworICAgICAgICAgc2lnLmFkZERvY3VtZW50KCIjeHBvaW50ZXIoaWQoJ29iamVjdC0zJykpIiwgdHJhbnNmb3JtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMuQUxHT19JRF9ESUdFU1RfU0hBMSwgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCIpOworICAgICAgfQorCisgICAgICB7CisgICAgICAgICBzaWcuYWRkRG9jdW1lbnQoIiNtYW5pZmVzdC1yZWZlcmVuY2UtMSIsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLkFMR09fSURfRElHRVNUX1NIQTEsICJyZWZlcmVuY2UtMSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNSZWZlcmVuY2UiKTsKKyAgICAgIH0KKworICAgICAgeworICAgICAgICAgc2lnLmFkZERvY3VtZW50KCIjcmVmZXJlbmNlLTEiLCBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5BTEdPX0lEX0RJR0VTVF9TSEExLCAicmVmZXJlbmNlLTIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjUmVmZXJlbmNlIik7CisgICAgICB9CisKKyAgICAgIHsKKyAgICAgICAgIHNpZy5hZGREb2N1bWVudCgiI3JlZmVyZW5jZS0yIiwgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMuQUxHT19JRF9ESUdFU1RfU0hBMSwgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI1JlZmVyZW5jZSIpOworICAgICAgfQorCisgICAgICAvKgorICAgICAgICogQWRkIEtleUluZm8gYW5kIHNpZ24oKQorICAgICAgICovCisgICAgICB7CisgICAgICAgICBUcmFuc2Zvcm1zIHJldHJpZXZhbFRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworICAgICAgICAgWFBhdGhDb250YWluZXIgeHBhdGhDID0gbmV3IFhQYXRoQ29udGFpbmVyKGRvYyk7CisKKyAgICAgICAgIHhwYXRoQy5zZXRYUGF0aE5hbWVzcGFjZUNvbnRleHQoImRzIiwgQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUyk7CisgICAgICAgICB4cGF0aEMuc2V0WFBhdGgoImFuY2VzdG9yLW9yLXNlbGY6OmRzOlg1MDlEYXRhIik7CisgICAgICAgICByZXRyaWV2YWxUcmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhwYXRoQy5nZXRFbGVtZW50KCkpOworICAgICAgICAgc2lnLmdldEtleUluZm8oKS5hZGQoCisgICAgICAgICAgICBuZXcgUmV0cmlldmFsTWV0aG9kKAorICAgICAgICAgICAgICAgZG9jLCAiI29iamVjdC00IiwgcmV0cmlldmFsVHJhbnNmb3JtcywKKyAgICAgICAgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjWDUwOURhdGEiKSk7CisKKyAgICAgICAgIC8qCisgICAgICAgICBYNTA5RGF0YSB4NTA5ZGF0YSA9IG5ldyBYNTA5RGF0YShkb2MpOworCisgICAgICAgICB4NTA5ZGF0YS5hZGQobmV3IFhNTFg1MDlTdWJqZWN0TmFtZShkb2MsIGNlcnQpKTsKKyAgICAgICAgIHg1MDlkYXRhLmFkZChuZXcgWE1MWDUwOUlzc3VlclNlcmlhbChkb2MsIGNlcnQpKTsKKyAgICAgICAgIHg1MDlkYXRhLmFkZChuZXcgWE1MWDUwOUNlcnRpZmljYXRlKGRvYywgY2VydCkpOworICAgICAgICAgc2lnLmdldEtleUluZm8oKS5hZGQoeDUwOWRhdGEpOworICAgICAgICAgKi8KKworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJTdGFydCBzaWduaW5nIik7CisgICAgICAgICBzaWcuc2lnbihwcml2YXRlS2V5KTsKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRmluaXNoZWQgc2lnbmluZyIpOworICAgICAgfQorCisgICAgICBGaWxlT3V0cHV0U3RyZWFtIGYgPSBuZXcgRmlsZU91dHB1dFN0cmVhbShzaWduYXR1cmVGaWxlKTsKKworICAgICAgWE1MVXRpbHMub3V0cHV0RE9NYzE0bldpdGhDb21tZW50cyhkb2MsIGYpOworICAgICAgZi5jbG9zZSgpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJXcm90ZSBzaWduYXR1cmUgdG8gIiArIEJhc2VVUkkpOworCisgICAgICBTaWduZWRJbmZvIHMgPSBzaWcuZ2V0U2lnbmVkSW5mbygpOworICAgICAgZm9yIChpbnQgaT0wOyBpPHMuZ2V0TGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgUmVmZXJlbmNlIHIgPSBzLml0ZW0oaSk7CisgICAgICAgICBTdHJpbmcgZm4gPSAibWVybGluMTZfIitpKyIuaHRtbCI7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIldyb3RlIFJlZmVyZW5jZSAiICsgaSArICIgdG8gZmlsZSAiICsgZm4pOworICAgICAgICAgSmF2YVV0aWxzLndyaXRlQnl0ZXNUb0ZpbGVuYW1lKGZuLCByLmdldEhUTUxSZXByZXNlbnRhdGlvbigpLmdldEJ5dGVzKCkpOworICAgICAgfQorCisKKyAgICAgIC8qCisgICAgICBmb3IgKGludCBpPTA7IGk8cy5nZXRTaWduZWRDb250ZW50TGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgaWYgKHMuaXRlbShpKS5nZXRUeXBlKCkuZXF1YWxzKFJlZmVyZW5jZS5NQU5JRkVTVF9VUkkpKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiMjIyMjIyMjIyMjIyMjIyMgU2lnbmVkIE1hbmlmZXN0ICIgKyBpICsgIiAjIyMjIyMjIyMjIyMjIyMjIik7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIjIyMjIyMjIyMjIyMjIyMjIFNpZ25lZCBSZXNvdXJjZSAiICsgaSArICIgIyMjIyMjIyMjIyMjIyMjIyIpOworICAgICAgICAgfQorICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG5ldyBTdHJpbmcocy5nZXRTaWduZWRDb250ZW50SXRlbShpKSkpOworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgICB9CisgICAgICAqLworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBjcmVhdGVPYmplY3Q0CisgICAgKgorICAgICogQHBhcmFtIHNpZworICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgRWxlbWVudCBjcmVhdGVPYmplY3Q0KFhNTFNpZ25hdHVyZSBzaWcpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBEb2N1bWVudCBkb2MgPSBzaWcuZ2V0RWxlbWVudCgpLmdldE93bmVyRG9jdW1lbnQoKTsKKyAgICAgIFN0cmluZyBCYXNlVVJJID0gc2lnLmdldEJhc2VVUkkoKTsKKyAgICAgIE1hbmlmZXN0IG1hbmlmZXN0ID0gbmV3IE1hbmlmZXN0KGRvYyk7CisgICAgICBtYW5pZmVzdC5hZGRSZXNvdXJjZVJlc29sdmVyKG5ldyBPZmZsaW5lUmVzb2x2ZXIoKSk7CisKKyAgICAgIG1hbmlmZXN0LnNldElkKCJtYW5pZmVzdC0xIik7CisgICAgICBtYW5pZmVzdC5hZGREb2N1bWVudChCYXNlVVJJLCAiaHR0cDovL3d3dy53My5vcmcvVFIveG1sLXN0eWxlc2hlZXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgQ29uc3RhbnRzLkFMR09fSURfRElHRVNUX1NIQTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAibWFuaWZlc3QtcmVmZXJlbmNlLTEiLCBudWxsKTsKKyAgICAgIG1hbmlmZXN0LmFkZERvY3VtZW50KEJhc2VVUkksICIjcmVmZXJlbmNlLTEiLCBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLkFMR09fSURfRElHRVNUX1NIQTEsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI1JlZmVyZW5jZSIpOworCisgICAgICAvL0otCisgICAgICBTdHJpbmcgeHNsdCA9ICIiCisgICAgICArICI8eHNsOnN0eWxlc2hlZXQgeG1sbnM6eHNsPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0nXG4iCisgICAgICArICIgICAgICAgICAgICAgICAgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9zdHJpY3QnIFxuIgorICAgICAgKyAiICAgICAgICAgICAgICAgIGV4Y2x1ZGUtcmVzdWx0LXByZWZpeGVzPSdmb28nIFxuIgorICAgICAgKyAiICAgICAgICAgICAgICAgIHZlcnNpb249JzEuMCc+XG4iCisgICAgICArICIgIDx4c2w6b3V0cHV0IGVuY29kaW5nPSdVVEYtOCcgXG4iCisgICAgICArICIgICAgICAgICAgICAgIGluZGVudD0nbm8nIFxuIgorICAgICAgKyAiICAgICAgICAgICAgICBtZXRob2Q9J3htbCcgLz5cbiIKKyAgICAgICsgIiAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0nLyc+XG4iCisgICAgICArICIgICAgPGh0bWw+XG4iCisgICAgICArICIgICAgICA8aGVhZD5cbiIKKyAgICAgICsgIiAgICAgICAgPHRpdGxlPk5vdGFyaWVzPC90aXRsZT5cbiIKKyAgICAgICsgIiAgICAgIDwvaGVhZD5cbiIKKyAgICAgICsgIiAgICAgIDxib2R5PlxuIgorICAgICAgKyAiICAgICAgICA8dGFibGU+XG4iCisgICAgICArICIgICAgICAgICAgPHhzbDpmb3ItZWFjaCBzZWxlY3Q9J05vdGFyaWVzL05vdGFyeSc+XG4iCisgICAgICArICIgICAgICAgICAgICA8dHI+XG4iCisgICAgICArICIgICAgICAgICAgICAgIDx0aD5cbiIKKyAgICAgICsgIiAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0nQG5hbWUnIC8+XG4iCisgICAgICArICIgICAgICAgICAgICAgIDwvdGg+XG4iCisgICAgICArICIgICAgICAgICAgICA8L3RyPlxuIgorICAgICAgKyAiICAgICAgICAgIDwveHNsOmZvci1lYWNoPlxuIgorICAgICAgKyAiICAgICAgICA8L3RhYmxlPlxuIgorICAgICAgKyAiICAgICAgPC9ib2R5PlxuIgorICAgICAgKyAiICAgIDwvaHRtbD5cbiIKKyAgICAgICsgIiAgPC94c2w6dGVtcGxhdGU+XG4iCisgICAgICArICI8L3hzbDpzdHlsZXNoZWV0PlxuIgorICAgICAgOworICAgICAgLy9KKworICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPQorICAgICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCisgICAgICBkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisKKyAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlciBkYiA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKKyAgICAgIG9yZy53M2MuZG9tLkRvY3VtZW50IGRvY3hzbHQgPQorICAgICAgICAgZGIucGFyc2UobmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKHhzbHQuZ2V0Qnl0ZXMoKSkpOworICAgICAgTm9kZSB4c2xFbGVtID0gZG9jeHNsdC5nZXREb2N1bWVudEVsZW1lbnQoKTsKKyAgICAgIE5vZGUgeHNsRWxlbUltcG9ydGVkID0gZG9jLmltcG9ydE5vZGUoeHNsRWxlbSwgdHJ1ZSk7CisgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YU0xULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEVsZW1lbnQpIHhzbEVsZW1JbXBvcnRlZCk7CisgICAgICBtYW5pZmVzdC5hZGREb2N1bWVudChCYXNlVVJJLCAiI25vdGFyaWVzIiwgdHJhbnNmb3JtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5BTEdPX0lEX0RJR0VTVF9TSEExLCBudWxsLCBudWxsKTsKKworICAgICAgcmV0dXJuIG1hbmlmZXN0LmdldEVsZW1lbnQoKTsKKyAgIH0KKworICAgc3RhdGljIHsKKyAgICAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaW5pdCgpOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9zaWduYXR1cmUvQ3JlYXRlTWVybGluc0V4YW1wbGVUd2VudHlUaHJlZS5qYXZhIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9zaWduYXR1cmUvQ3JlYXRlTWVybGluc0V4YW1wbGVUd2VudHlUaHJlZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiYzdlMGUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3NpZ25hdHVyZS9DcmVhdGVNZXJsaW5zRXhhbXBsZVR3ZW50eVRocmVlLmphdmEKQEAgLTAsMCArMSw1MzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMuc2lnbmF0dXJlOworCisKKworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uRmlsZU91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LktleVN0b3JlOworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHJpdmF0ZUtleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50LlJldHJpZXZhbE1ldGhvZDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmNvbnRlbnQuWDUwOURhdGE7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50Lng1MDkuWE1MWDUwOUNlcnRpZmljYXRlOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC54NTA5LlhNTFg1MDlJc3N1ZXJTZXJpYWw7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5jb250ZW50Lng1MDkuWE1MWDUwOVN1YmplY3ROYW1lOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMudXRpbHMucmVzb2x2ZXIuT2ZmbGluZVJlc29sdmVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5NYW5pZmVzdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuT2JqZWN0Q29udGFpbmVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5SZWZlcmVuY2U7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlNpZ25hdHVyZVByb3BlcnRpZXM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlNpZ25hdHVyZVByb3BlcnR5OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5TaWduZWRJbmZvOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmU7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1zOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMucGFyYW1zLlhQYXRoQ29udGFpbmVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5JZFJlc29sdmVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkphdmFVdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5YTUxVdGlsczsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CisKKworLyoqCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICovCitwdWJsaWMgY2xhc3MgQ3JlYXRlTWVybGluc0V4YW1wbGVUd2VudHlUaHJlZSB7CisgICAgCisgICAvKioge0BsaW5rIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nfSBsb2dnaW5nIGZhY2lsaXR5ICovCisgICAgc3RhdGljIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZyBsb2cgPSAKKyAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeS5nZXRMb2coQ3JlYXRlTWVybGluc0V4YW1wbGVUd2VudHlUaHJlZS5jbGFzcy5nZXROYW1lKCkpOworCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWluCisgICAgKgorICAgICogQHBhcmFtIHVudXNlZAorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIHVudXNlZFtdKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgIENvbnN0YW50cy5zZXRTaWduYXR1cmVTcGVjTlNwcmVmaXgoImRzIik7CisgICAgICAvL0otCisgICAgICBTdHJpbmcga2V5c3RvcmVUeXBlID0gIkpLUyI7CisgICAgICBTdHJpbmcga2V5c3RvcmVGaWxlID0gImRhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9pbnB1dC9rZXlzdG9yZS5qa3MiOworICAgICAgU3RyaW5nIGtleXN0b3JlUGFzcyA9ICJ4bWxzZWN1cml0eSI7CisgICAgICBTdHJpbmcgcHJpdmF0ZUtleUFsaWFzID0gInRlc3QiOworICAgICAgU3RyaW5nIHByaXZhdGVLZXlQYXNzID0gInhtbHNlY3VyaXR5IjsKKyAgICAgIFN0cmluZyBjZXJ0aWZpY2F0ZUFsaWFzID0gInRlc3QiOworICAgICAgRmlsZSBzaWduYXR1cmVGaWxlID0gbmV3IEZpbGUoIm1lcmxpbnNUd2VudHlUaHJlZVJlY3JlYXRlZE5vUmV0cmlldmFsTWV0aG9kLnhtbCIpOworICAgICAgLy9KKworICAgICAgS2V5U3RvcmUga3MgPSBLZXlTdG9yZS5nZXRJbnN0YW5jZShrZXlzdG9yZVR5cGUpOworICAgICAgRmlsZUlucHV0U3RyZWFtIGZpcyA9IG5ldyBGaWxlSW5wdXRTdHJlYW0oa2V5c3RvcmVGaWxlKTsKKworICAgICAga3MubG9hZChmaXMsIGtleXN0b3JlUGFzcy50b0NoYXJBcnJheSgpKTsKKworICAgICAgUHJpdmF0ZUtleSBwcml2YXRlS2V5ID0gKFByaXZhdGVLZXkpIGtzLmdldEtleShwcml2YXRlS2V5QWxpYXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2YXRlS2V5UGFzcy50b0NoYXJBcnJheSgpKTsKKworICAgICAgaWYgKHByaXZhdGVLZXkgPT0gbnVsbCkgeworICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIlByaXZhdGUga2V5IGlzIG51bGwiKTsKKyAgICAgIH0KKworICAgICAgWDUwOUNlcnRpZmljYXRlIGNlcnQgPQorICAgICAgICAgKFg1MDlDZXJ0aWZpY2F0ZSkga3MuZ2V0Q2VydGlmaWNhdGUoY2VydGlmaWNhdGVBbGlhcyk7CisgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9CisgICAgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisKKyAgICAgIGRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKworICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyIGRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOworICAgICAgb3JnLnczYy5kb20uRG9jdW1lbnQgZG9jID0gZGIubmV3RG9jdW1lbnQoKTsKKworICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICAgIEVsZW1lbnQgZW52ZWxvcGUgPSBkb2MuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnVzcHMuZ292LyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW52ZWxvcGUiKTsKKworICAgICAgZW52ZWxvcGUuc2V0QXR0cmlidXRlTlMoQ29uc3RhbnRzLk5hbWVzcGFjZVNwZWNOUywgInhtbG5zIiwgImh0dHA6Ly93d3cudXNwcy5nb3YvIik7CisgICAgICBlbnZlbG9wZS5zZXRBdHRyaWJ1dGVOUyhDb25zdGFudHMuTmFtZXNwYWNlU3BlY05TLCAieG1sbnM6Zm9vIiwgImh0dHA6Ly93d3cudXNwcy5nb3YvZm9vIik7CisgICAgICBlbnZlbG9wZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuIikpOworICAgICAgZG9jLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVDb21tZW50KCIgUHJlYW1ibGUgIikpOworICAgICAgZG9jLmFwcGVuZENoaWxkKGVudmVsb3BlKTsKKyAgICAgIGRvYy5hcHBlbmRDaGlsZChkb2MuY3JlYXRlQ29tbWVudCgiIFBvc3RhbWJsZSAiKSk7CisKKyAgICAgIEVsZW1lbnQgZGVhclNpciA9IGRvYy5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudXNwcy5nb3YvIiwgIkRlYXJTaXIiKTsKKworICAgICAgZGVhclNpci5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoImZvbyIpKTsKKyAgICAgIGVudmVsb3BlLmFwcGVuZENoaWxkKGRlYXJTaXIpOworICAgICAgZW52ZWxvcGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJcbiIpKTsKKworICAgICAgRWxlbWVudCBib2R5ID0gZG9jLmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy51c3BzLmdvdi8iLCAiQm9keSIpOworCisgICAgICBib2R5LmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiYmFyIikpOworICAgICAgZW52ZWxvcGUuYXBwZW5kQ2hpbGQoYm9keSk7CisgICAgICBlbnZlbG9wZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuIikpOworCisgICAgICBFbGVtZW50IFlvdXJzU2luY2VyZWx5ID0gZG9jLmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy51c3BzLmdvdi8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZb3Vyc1NpbmNlcmVseSIpOworICAgICAgWW91cnNTaW5jZXJlbHkuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJcbiIpKTsKKworICAgICAgZW52ZWxvcGUuYXBwZW5kQ2hpbGQoWW91cnNTaW5jZXJlbHkpOworCisgICAgICBFbGVtZW50IFBvc3RTY3JpcHQgPSBkb2MuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnVzcHMuZ292LyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQb3N0U2NyaXB0Iik7CisKKyAgICAgIFBvc3RTY3JpcHQuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJiYXIiKSk7CisgICAgICBlbnZlbG9wZS5hcHBlbmRDaGlsZChQb3N0U2NyaXB0KTsKKworICAgICAgRWxlbWVudCBOb3RhcmllcyA9IGRvYy5jcmVhdGVFbGVtZW50TlMobnVsbCwgIk5vdGFyaWVzIik7CisKKyAgICAgIE5vdGFyaWVzLnNldEF0dHJpYnV0ZU5TKENvbnN0YW50cy5OYW1lc3BhY2VTcGVjTlMsICJ4bWxucyIsICIiKTsKKyAgICAgIE5vdGFyaWVzLnNldEF0dHJpYnV0ZU5TKG51bGwsICJJZCIsICJub3RhcmllcyIpOworICAgICAgSWRSZXNvbHZlci5yZWdpc3RlckVsZW1lbnRCeUlkKE5vdGFyaWVzLCAiSWQiKTsKKworICAgICAgeworICAgICAgICAgRWxlbWVudCBOb3RhcnkgPSBkb2MuY3JlYXRlRWxlbWVudE5TKG51bGwsICJOb3RhcnkiKTsKKworICAgICAgICAgTm90YXJ5LnNldEF0dHJpYnV0ZU5TKG51bGwsICJuYW1lIiwgIkdyZWF0LCBBLiBULiIpOworICAgICAgICAgTm90YXJpZXMuYXBwZW5kQ2hpbGQoTm90YXJ5KTsKKyAgICAgIH0KKworICAgICAgeworICAgICAgICAgRWxlbWVudCBOb3RhcnkgPSBkb2MuY3JlYXRlRWxlbWVudE5TKG51bGwsICJOb3RhcnkiKTsKKworICAgICAgICAgTm90YXJ5LnNldEF0dHJpYnV0ZU5TKG51bGwsICJuYW1lIiwgIkh1biwgQS4gVC4iKTsKKyAgICAgICAgIE5vdGFyaWVzLmFwcGVuZENoaWxkKE5vdGFyeSk7CisgICAgICB9CisKKyAgICAgIGVudmVsb3BlLmFwcGVuZENoaWxkKE5vdGFyaWVzKTsKKyAgICAgIGVudmVsb3BlLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVDb21tZW50KCIgQ29tbWVudGFyeSAiKSk7CisKKyAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisgICAgICBTdHJpbmcgQmFzZVVSSSA9IHNpZ25hdHVyZUZpbGUudG9VUkwoKS50b1N0cmluZygpOworICAgICAgWE1MU2lnbmF0dXJlIHNpZyA9IG5ldyBYTUxTaWduYXR1cmUoZG9jLCBCYXNlVVJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MU2lnbmF0dXJlLkFMR09fSURfU0lHTkFUVVJFX0RTQSk7CisKKyAgICAgIFlvdXJzU2luY2VyZWx5LmFwcGVuZENoaWxkKHNpZy5nZXRFbGVtZW50KCkpOworICAgICAgc2lnLnNldElkKCJzaWduYXR1cmUiKTsKKworICAgICAgLyoKKyAgICAgICAqIEFkZCB0aGUgT2JqZWN0cworICAgICAgICovCisKKyAgICAgIC8vIG9iamVjdC0xCisgICAgICB7CisgICAgICAgICBPYmplY3RDb250YWluZXIgb2JqZWN0MSA9IG5ldyBPYmplY3RDb250YWluZXIoZG9jKTsKKworICAgICAgICAgb2JqZWN0MS5zZXRJZCgib2JqZWN0LTEiKTsKKyAgICAgICAgIG9iamVjdDEuc2V0TWltZVR5cGUoInRleHQvcGxhaW4iKTsKKyAgICAgICAgIG9iamVjdDEuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJJIGFtIHRoZSB0ZXh0LiIpKTsKKyAgICAgICAgIHNpZy5hcHBlbmRPYmplY3Qob2JqZWN0MSk7CisgICAgICB9CisKKyAgICAgIC8vIG9iamVjdC0yCisgICAgICB7CisgICAgICAgICBPYmplY3RDb250YWluZXIgb2JqZWN0MiA9IG5ldyBPYmplY3RDb250YWluZXIoZG9jKTsKKworICAgICAgICAgb2JqZWN0Mi5zZXRJZCgib2JqZWN0LTIiKTsKKyAgICAgICAgIG9iamVjdDIuc2V0TWltZVR5cGUoInRleHQvcGxhaW4iKTsKKyAgICAgICAgIG9iamVjdDIuc2V0RW5jb2RpbmcoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNiYXNlNjQiKTsKKyAgICAgICAgIG9iamVjdDIuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJTU0JoYlNCMGFHVWdkR1Y0ZEM0PSIpKTsKKyAgICAgICAgIHNpZy5hcHBlbmRPYmplY3Qob2JqZWN0Mik7CisgICAgICB9CisKKyAgICAgIC8vIG9iamVjdC0zCisgICAgICB7CisgICAgICAgICBPYmplY3RDb250YWluZXIgb2JqZWN0ID0gbmV3IE9iamVjdENvbnRhaW5lcihkb2MpOworCisgICAgICAgICBvYmplY3Quc2V0SWQoIm9iamVjdC0zIik7CisKKyAgICAgICAgIEVsZW1lbnQgbm9uYyA9IGRvYy5jcmVhdGVFbGVtZW50TlMobnVsbCwgIk5vbkNvbW1lbnRhbmR1cyIpOworCisgICAgICAgICBub25jLnNldEF0dHJpYnV0ZU5TKENvbnN0YW50cy5OYW1lc3BhY2VTcGVjTlMsICJ4bWxucyIsICIiKTsKKyAgICAgICAgIG5vbmMuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZUNvbW1lbnQoIiBDb21tZW50YW5kdW0gIikpOworICAgICAgICAgb2JqZWN0LmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG4gICAgICAgICIpKTsKKyAgICAgICAgIG9iamVjdC5hcHBlbmRDaGlsZChub25jKTsKKyAgICAgICAgIG9iamVjdC5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuICAgICAgIikpOworICAgICAgICAgc2lnLmFwcGVuZE9iamVjdChvYmplY3QpOworICAgICAgfQorCisgICAgICAvLyBvYmplY3QgbnVtYmVyIDQKKyAgICAgIHsKKyAgICAgICAgIE9iamVjdENvbnRhaW5lciBvYmplY3QgPSBuZXcgT2JqZWN0Q29udGFpbmVyKGRvYyk7CisKKyAgICAgICAgIG9iamVjdC5hcHBlbmRDaGlsZChjcmVhdGVPYmplY3Q0KHNpZykpOworICAgICAgICAgc2lnLmFwcGVuZE9iamVjdChvYmplY3QpOworICAgICAgfQorCisgICAgICAvLyBvYmplY3QgbnVtYmVyIDQKKyAgICAgIHsKKyAgICAgICAgIE9iamVjdENvbnRhaW5lciBvYmplY3QgPSBuZXcgT2JqZWN0Q29udGFpbmVyKGRvYyk7CisgICAgICAgICBTaWduYXR1cmVQcm9wZXJ0aWVzIHNwcyA9IG5ldyBTaWduYXR1cmVQcm9wZXJ0aWVzKGRvYyk7CisKKyAgICAgICAgIHNwcy5zZXRJZCgic2lnbmF0dXJlLXByb3BlcnRpZXMtMSIpOworCisgICAgICAgICBTaWduYXR1cmVQcm9wZXJ0eSBzcCA9IG5ldyBTaWduYXR1cmVQcm9wZXJ0eShkb2MsICIjc2lnbmF0dXJlIik7CisgICAgICAgICBFbGVtZW50IHNpZ25lZEFkcmVzcyA9IGRvYy5jcmVhdGVFbGVtZW50TlMoInVybjpkZW1vIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2lnbmVkQWRkcmVzcyIpOworCisgICAgICAgICBzaWduZWRBZHJlc3Muc2V0QXR0cmlidXRlTlMoQ29uc3RhbnRzLk5hbWVzcGFjZVNwZWNOUywgInhtbG5zIiwgInVybjpkZW1vIik7CisKKyAgICAgICAgIEVsZW1lbnQgSVAgPSBkb2MuY3JlYXRlRWxlbWVudE5TKCJ1cm46ZGVtbyIsICJJUCIpOworCisgICAgICAgICBJUC5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIjE5Mi4xNjguMjEuMTM4IikpOworICAgICAgICAgc2lnbmVkQWRyZXNzLmFwcGVuZENoaWxkKElQKTsKKyAgICAgICAgIHNwLmFwcGVuZENoaWxkKHNpZ25lZEFkcmVzcyk7CisgICAgICAgICBzcHMuYWRkU2lnbmF0dXJlUHJvcGVydHkoc3ApOworICAgICAgICAgb2JqZWN0LmFwcGVuZENoaWxkKHNwcy5nZXRFbGVtZW50KCkpOworICAgICAgICAgc2lnLmFwcGVuZE9iamVjdChvYmplY3QpOworICAgICAgfQorCisgICAgICB7CisgICAgICAgICBPYmplY3RDb250YWluZXIgb2JqZWN0ID0gbmV3IE9iamVjdENvbnRhaW5lcihkb2MpOworCisgICAgICAgICBvYmplY3Quc2V0SWQoIm9iamVjdC00Iik7CisKKyAgICAgICAgIFg1MDlEYXRhIHg1MDlkYXRhID0gbmV3IFg1MDlEYXRhKGRvYyk7CisKKyAgICAgICAgIHg1MDlkYXRhLmFkZChuZXcgWE1MWDUwOVN1YmplY3ROYW1lKGRvYywgY2VydCkpOworICAgICAgICAgeDUwOWRhdGEuYWRkKG5ldyBYTUxYNTA5SXNzdWVyU2VyaWFsKGRvYywgY2VydCkpOworICAgICAgICAgeDUwOWRhdGEuYWRkKG5ldyBYTUxYNTA5Q2VydGlmaWNhdGUoZG9jLCBjZXJ0KSk7CisgICAgICAgICBvYmplY3QuYXBwZW5kQ2hpbGQoeDUwOWRhdGEuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgIHNpZy5hcHBlbmRPYmplY3Qob2JqZWN0KTsKKyAgICAgIH0KKworICAgICAgLyoKKyAgICAgICAqIEFkZCBSZWZlcmVuY2VzCisgICAgICAgKi8KKyAgICAgIHNpZy5nZXRTaWduZWRJbmZvKCkKKyAgICAgICAgIC5hZGRSZXNvdXJjZVJlc29sdmVyKG5ldyBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLnV0aWxzLnJlc29sdmVyCisgICAgICAgICAgICAuT2ZmbGluZVJlc29sdmVyKCkpOworICAgICAgc2lnLmFkZERvY3VtZW50KCJodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldCIpOworCisgICAgICB7CisgICAgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9CQVNFNjRfREVDT0RFKTsKKyAgICAgICAgIHNpZy5hZGREb2N1bWVudCgiaHR0cDovL3htbGRzaWcucG90aG9sZS5jb20veG1sLXN0eWxlc2hlZXQudHh0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1zLCBDb25zdGFudHMuQUxHT19JRF9ESUdFU1RfU0hBMSk7CisgICAgICB9CisKKyAgICAgIHsKKyAgICAgICAgIFRyYW5zZm9ybXMgdHJhbnNmb3JtcyA9IG5ldyBUcmFuc2Zvcm1zKGRvYyk7CisgICAgICAgICBYUGF0aENvbnRhaW5lciB4cGF0aEMgPSBuZXcgWFBhdGhDb250YWluZXIoZG9jKTsKKworICAgICAgICAgeHBhdGhDLnNldFhQYXRoKCJzZWxmOjp0ZXh0KCkiKTsKKyAgICAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHBhdGhDLmdldEVsZW1lbnRQbHVzUmV0dXJucygpKTsKKyAgICAgICAgIHNpZy5hZGREb2N1bWVudCgiI29iamVjdC0xIiwgdHJhbnNmb3JtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMuQUxHT19JRF9ESUdFU1RfU0hBMSwgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCIpOworICAgICAgfQorICAgICAgLyoKKyAgICAgIHsKKyAgICAgICAgIFRyYW5zZm9ybXMgdHJhbnNmb3JtcyA9IG5ldyBUcmFuc2Zvcm1zKGRvYyk7CisgICAgICAgICBYUGF0aENvbnRhaW5lciB4cGF0aEMgPSBuZXcgWFBhdGhDb250YWluZXIoZG9jKTsKKworICAgICAgICAgLy9KLQorICAgICAgICAgeHBhdGhDLnNldFhQYXRoTmFtZXNwYWNlQ29udGV4dCgiZHMiLCBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TKTsKKyAgICAgICAgIHhwYXRoQy5zZXRYUGF0aCgiXG4iCisgICAgICAgICAgKyAiIGFuY2VzdG9yLW9yLXNlbGY6OmRzOlNpZ25lZEluZm8gICAgICAgICAgICAgICAgICAgICIgKyAiXG4iCisgICAgICAgICAgKyAiICBhbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgKyAiXG4iCisgICAgICAgICAgKyAiIGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6OmRzOlJlZmVyZW5jZSB8ICAgICAgICAgICAgICIgKyAiXG4iCisgICAgICAgICAgKyAiICAgICAgaGVyZSgpL2FuY2VzdG9yOjpkczpSZWZlcmVuY2VbMV0pID4gICAgICAgICAgICIgKyAiXG4iCisgICAgICAgICAgKyAiIGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6OmRzOlJlZmVyZW5jZSkgICAgICAgICAgICAgICIgKyAiXG4iCisgICAgICAgICAgKyAiICBvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgKyAiXG4iCisgICAgICAgICAgKyAiIGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSB8ICAgICAgICAgICAgICAgICAgICIgKyAiXG4iCisgICAgICAgICAgKyAiICAgICAgaWQoJ25vdGFyaWVzJykpID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgKyAiXG4iCisgICAgICAgICAgKyAiIGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkgICAgICAgICAgICAgICAgICAgICIgKyAiXG4iKTsKKyAgICAgICAgIC8vSisKKyAgICAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHBhdGhDLmdldEVsZW1lbnRQbHVzUmV0dXJucygpKTsKKyAgICAgICAgIHNpZy5hZGREb2N1bWVudCgiIiwgdHJhbnNmb3JtcywgQ29uc3RhbnRzLkFMR09fSURfRElHRVNUX1NIQTEsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiKTsKKyAgICAgIH0KKyAgICAgICovCisKKyAgICAgIHsKKyAgICAgICAgIFRyYW5zZm9ybXMgdHJhbnNmb3JtcyA9IG5ldyBUcmFuc2Zvcm1zKGRvYyk7CisKKyAgICAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX0JBU0U2NF9ERUNPREUpOworICAgICAgICAgc2lnLmFkZERvY3VtZW50KCIjb2JqZWN0LTIiLCB0cmFuc2Zvcm1zLAorICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5BTEdPX0lEX0RJR0VTVF9TSEExLCBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0Iik7CisgICAgICB9CisKKyAgICAgIHNpZy5hZGREb2N1bWVudCgiI21hbmlmZXN0LTEiLCBudWxsLCBDb25zdGFudHMuQUxHT19JRF9ESUdFU1RfU0hBMSwgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI01hbmlmZXN0Iik7CisgICAgICBzaWcuYWRkRG9jdW1lbnQoIiNzaWduYXR1cmUtcHJvcGVydGllcy0xIiwgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMuQUxHT19JRF9ESUdFU1RfU0hBMSwgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI1NpZ25hdHVyZVByb3BlcnRpZXMiKTsKKworICAgICAgeworICAgICAgICAgVHJhbnNmb3JtcyB0cmFuc2Zvcm1zID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fRU5WRUxPUEVEX1NJR05BVFVSRSk7CisgICAgICAgICBzaWcuYWRkRG9jdW1lbnQoIiIsIHRyYW5zZm9ybXMsIENvbnN0YW50cy5BTEdPX0lEX0RJR0VTVF9TSEExKTsKKyAgICAgIH0KKworICAgICAgeworICAgICAgICAgVHJhbnNmb3JtcyB0cmFuc2Zvcm1zID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fRU5WRUxPUEVEX1NJR05BVFVSRSk7CisgICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9DMTROX1dJVEhfQ09NTUVOVFMpOworICAgICAgICAgc2lnLmFkZERvY3VtZW50KCIiLCB0cmFuc2Zvcm1zLCBDb25zdGFudHMuQUxHT19JRF9ESUdFU1RfU0hBMSk7CisgICAgICB9CisKKyAgICAgIHsKKyAgICAgICAgIFRyYW5zZm9ybXMgdHJhbnNmb3JtcyA9IG5ldyBUcmFuc2Zvcm1zKGRvYyk7CisKKyAgICAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX0VOVkVMT1BFRF9TSUdOQVRVUkUpOworICAgICAgICAgc2lnLmFkZERvY3VtZW50KCIjeHBvaW50ZXIoLykiLCB0cmFuc2Zvcm1zLAorICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5BTEdPX0lEX0RJR0VTVF9TSEExKTsKKyAgICAgIH0KKworICAgICAgeworICAgICAgICAgVHJhbnNmb3JtcyB0cmFuc2Zvcm1zID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fRU5WRUxPUEVEX1NJR05BVFVSRSk7CisgICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9DMTROX1dJVEhfQ09NTUVOVFMpOworICAgICAgICAgc2lnLmFkZERvY3VtZW50KCIjeHBvaW50ZXIoLykiLCB0cmFuc2Zvcm1zLAorICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5BTEdPX0lEX0RJR0VTVF9TSEExKTsKKyAgICAgIH0KKworICAgICAgeworICAgICAgICAgc2lnLmFkZERvY3VtZW50KCIjb2JqZWN0LTMiLCBudWxsLCBDb25zdGFudHMuQUxHT19JRF9ESUdFU1RfU0hBMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCIpOworICAgICAgfQorCisgICAgICB7CisgICAgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9DMTROX1dJVEhfQ09NTUVOVFMpOworICAgICAgICAgc2lnLmFkZERvY3VtZW50KCIjb2JqZWN0LTMiLCB0cmFuc2Zvcm1zLAorICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5BTEdPX0lEX0RJR0VTVF9TSEExLCBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjT2JqZWN0Iik7CisgICAgICB9CisKKyAgICAgIHsKKyAgICAgICAgIHNpZy5hZGREb2N1bWVudCgiI3hwb2ludGVyKGlkKCdvYmplY3QtMycpKSIsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLkFMR09fSURfRElHRVNUX1NIQTEsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiKTsKKyAgICAgIH0KKworICAgICAgeworICAgICAgICAgVHJhbnNmb3JtcyB0cmFuc2Zvcm1zID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fQzE0Tl9XSVRIX0NPTU1FTlRTKTsKKyAgICAgICAgIHNpZy5hZGREb2N1bWVudCgiI3hwb2ludGVyKGlkKCdvYmplY3QtMycpKSIsIHRyYW5zZm9ybXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLkFMR09fSURfRElHRVNUX1NIQTEsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiKTsKKyAgICAgIH0KKworICAgICAgeworICAgICAgICAgc2lnLmFkZERvY3VtZW50KCIjbWFuaWZlc3QtcmVmZXJlbmNlLTEiLCBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5BTEdPX0lEX0RJR0VTVF9TSEExLCAicmVmZXJlbmNlLTEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjUmVmZXJlbmNlIik7CisgICAgICB9CisKKyAgICAgIHsKKyAgICAgICAgIHNpZy5hZGREb2N1bWVudCgiI3JlZmVyZW5jZS0xIiwgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMuQUxHT19JRF9ESUdFU1RfU0hBMSwgInJlZmVyZW5jZS0yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI1JlZmVyZW5jZSIpOworICAgICAgfQorCisgICAgICB7CisgICAgICAgICBzaWcuYWRkRG9jdW1lbnQoIiNyZWZlcmVuY2UtMiIsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLkFMR09fSURfRElHRVNUX1NIQTEsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNSZWZlcmVuY2UiKTsKKyAgICAgIH0KKworICAgICAgLyoKKyAgICAgICAqIEFkZCBLZXlJbmZvIGFuZCBzaWduKCkKKyAgICAgICAqLworICAgICAgeworICAgICAgICAgVHJhbnNmb3JtcyByZXRyaWV2YWxUcmFuc2Zvcm1zID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKyAgICAgICAgIFhQYXRoQ29udGFpbmVyIHhwYXRoQyA9IG5ldyBYUGF0aENvbnRhaW5lcihkb2MpOworCisgICAgICAgICB4cGF0aEMuc2V0WFBhdGhOYW1lc3BhY2VDb250ZXh0KCJkcyIsIENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMpOworICAgICAgICAgeHBhdGhDLnNldFhQYXRoKCJhbmNlc3Rvci1vci1zZWxmOjpkczpYNTA5RGF0YSIpOworICAgICAgICAgcmV0cmlldmFsVHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4cGF0aEMuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgIHNpZy5nZXRLZXlJbmZvKCkuYWRkKAorICAgICAgICAgICAgbmV3IFJldHJpZXZhbE1ldGhvZCgKKyAgICAgICAgICAgICAgIGRvYywgIiNvYmplY3QtNCIsIHJldHJpZXZhbFRyYW5zZm9ybXMsCisgICAgICAgICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI1g1MDlEYXRhIikpOworCisgICAgICAgICAvKgorICAgICAgICAgWDUwOURhdGEgeDUwOWRhdGEgPSBuZXcgWDUwOURhdGEoZG9jKTsKKworICAgICAgICAgeDUwOWRhdGEuYWRkKG5ldyBYTUxYNTA5U3ViamVjdE5hbWUoZG9jLCBjZXJ0KSk7CisgICAgICAgICB4NTA5ZGF0YS5hZGQobmV3IFhNTFg1MDlJc3N1ZXJTZXJpYWwoZG9jLCBjZXJ0KSk7CisgICAgICAgICB4NTA5ZGF0YS5hZGQobmV3IFhNTFg1MDlDZXJ0aWZpY2F0ZShkb2MsIGNlcnQpKTsKKyAgICAgICAgIHNpZy5nZXRLZXlJbmZvKCkuYWRkKHg1MDlkYXRhKTsKKyAgICAgICAgICovCisKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiU3RhcnQgc2lnbmluZyIpOworICAgICAgICAgc2lnLnNpZ24ocHJpdmF0ZUtleSk7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkZpbmlzaGVkIHNpZ25pbmciKTsKKyAgICAgIH0KKworICAgICAgRmlsZU91dHB1dFN0cmVhbSBmID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oc2lnbmF0dXJlRmlsZSk7CisKKyAgICAgIFhNTFV0aWxzLm91dHB1dERPTWMxNG5XaXRoQ29tbWVudHMoZG9jLCBmKTsKKyAgICAgIGYuY2xvc2UoKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiV3JvdGUgc2lnbmF0dXJlIHRvICIgKyBCYXNlVVJJKTsKKworICAgICAgU2lnbmVkSW5mbyBzID0gc2lnLmdldFNpZ25lZEluZm8oKTsKKyAgICAgIGZvciAoaW50IGk9MDsgaTxzLmdldExlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgIFJlZmVyZW5jZSByID0gcy5pdGVtKGkpOworICAgICAgICAgU3RyaW5nIGZuID0gIm1lcmxpbjE2XyIraSsiLmh0bWwiOworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJXcm90ZSBSZWZlcmVuY2UgIiArIGkgKyAiIHRvIGZpbGUgIiArIGZuKTsKKyAgICAgICAgIEphdmFVdGlscy53cml0ZUJ5dGVzVG9GaWxlbmFtZShmbiwgci5nZXRIVE1MUmVwcmVzZW50YXRpb24oKS5nZXRCeXRlcygpKTsKKyAgICAgIH0KKworCisgICAgICAvKgorICAgICAgZm9yIChpbnQgaT0wOyBpPHMuZ2V0U2lnbmVkQ29udGVudExlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgIGlmIChzLml0ZW0oaSkuZ2V0VHlwZSgpLmVxdWFscyhSZWZlcmVuY2UuTUFOSUZFU1RfVVJJKSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIjIyMjIyMjIyMjIyMjIyMjIFNpZ25lZCBNYW5pZmVzdCAiICsgaSArICIgIyMjIyMjIyMjIyMjIyMjIyIpOworICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIyMjIyMjIyMjIyMjIyMjIyBTaWduZWQgUmVzb3VyY2UgIiArIGkgKyAiICMjIyMjIyMjIyMjIyMjIyMiKTsKKyAgICAgICAgIH0KKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihuZXcgU3RyaW5nKHMuZ2V0U2lnbmVkQ29udGVudEl0ZW0oaSkpKTsKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgfQorICAgICAgKi8KKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgY3JlYXRlT2JqZWN0NAorICAgICoKKyAgICAqIEBwYXJhbSBzaWcKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIEVsZW1lbnQgY3JlYXRlT2JqZWN0NChYTUxTaWduYXR1cmUgc2lnKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgRG9jdW1lbnQgZG9jID0gc2lnLmdldEVsZW1lbnQoKS5nZXRPd25lckRvY3VtZW50KCk7CisgICAgICBTdHJpbmcgQmFzZVVSSSA9IHNpZy5nZXRCYXNlVVJJKCk7CisgICAgICBNYW5pZmVzdCBtYW5pZmVzdCA9IG5ldyBNYW5pZmVzdChkb2MpOworICAgICAgbWFuaWZlc3QuYWRkUmVzb3VyY2VSZXNvbHZlcihuZXcgT2ZmbGluZVJlc29sdmVyKCkpOworCisgICAgICBtYW5pZmVzdC5zZXRJZCgibWFuaWZlc3QtMSIpOworICAgICAgbWFuaWZlc3QuYWRkRG9jdW1lbnQoQmFzZVVSSSwgImh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1zdHlsZXNoZWV0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsIENvbnN0YW50cy5BTEdPX0lEX0RJR0VTVF9TSEExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1hbmlmZXN0LXJlZmVyZW5jZS0xIiwgbnVsbCk7CisgICAgICBtYW5pZmVzdC5hZGREb2N1bWVudChCYXNlVVJJLCAiI3JlZmVyZW5jZS0xIiwgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5BTEdPX0lEX0RJR0VTVF9TSEExLCBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNSZWZlcmVuY2UiKTsKKworICAgICAgLy9KLQorICAgICAgU3RyaW5nIHhzbHQgPSAiIgorICAgICAgKyAiPHhzbDpzdHlsZXNoZWV0IHhtbG5zOnhzbD0naHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtJ1xuIgorICAgICAgKyAiICAgICAgICAgICAgICAgIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvc3RyaWN0JyBcbiIKKyAgICAgICsgIiAgICAgICAgICAgICAgICBleGNsdWRlLXJlc3VsdC1wcmVmaXhlcz0nZm9vJyBcbiIKKyAgICAgICsgIiAgICAgICAgICAgICAgICB2ZXJzaW9uPScxLjAnPlxuIgorICAgICAgKyAiICA8eHNsOm91dHB1dCBlbmNvZGluZz0nVVRGLTgnIFxuIgorICAgICAgKyAiICAgICAgICAgICAgICBpbmRlbnQ9J25vJyBcbiIKKyAgICAgICsgIiAgICAgICAgICAgICAgbWV0aG9kPSd4bWwnIC8+XG4iCisgICAgICArICIgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Jy8nPlxuIgorICAgICAgKyAiICAgIDxodG1sPlxuIgorICAgICAgKyAiICAgICAgPGhlYWQ+XG4iCisgICAgICArICIgICAgICAgIDx0aXRsZT5Ob3RhcmllczwvdGl0bGU+XG4iCisgICAgICArICIgICAgICA8L2hlYWQ+XG4iCisgICAgICArICIgICAgICA8Ym9keT5cbiIKKyAgICAgICsgIiAgICAgICAgPHRhYmxlPlxuIgorICAgICAgKyAiICAgICAgICAgIDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSdOb3Rhcmllcy9Ob3RhcnknPlxuIgorICAgICAgKyAiICAgICAgICAgICAgPHRyPlxuIgorICAgICAgKyAiICAgICAgICAgICAgICA8dGg+XG4iCisgICAgICArICIgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9J0BuYW1lJyAvPlxuIgorICAgICAgKyAiICAgICAgICAgICAgICA8L3RoPlxuIgorICAgICAgKyAiICAgICAgICAgICAgPC90cj5cbiIKKyAgICAgICsgIiAgICAgICAgICA8L3hzbDpmb3ItZWFjaD5cbiIKKyAgICAgICsgIiAgICAgICAgPC90YWJsZT5cbiIKKyAgICAgICsgIiAgICAgIDwvYm9keT5cbiIKKyAgICAgICsgIiAgICA8L2h0bWw+XG4iCisgICAgICArICIgIDwveHNsOnRlbXBsYXRlPlxuIgorICAgICAgKyAiPC94c2w6c3R5bGVzaGVldD5cbiIKKyAgICAgIDsKKyAgICAgIC8vSisKKyAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0KKyAgICAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKworICAgICAgZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworCisgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgICBvcmcudzNjLmRvbS5Eb2N1bWVudCBkb2N4c2x0ID0KKyAgICAgICAgIGRiLnBhcnNlKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbSh4c2x0LmdldEJ5dGVzKCkpKTsKKyAgICAgIE5vZGUgeHNsRWxlbSA9IGRvY3hzbHQuZ2V0RG9jdW1lbnRFbGVtZW50KCk7CisgICAgICBOb2RlIHhzbEVsZW1JbXBvcnRlZCA9IGRvYy5pbXBvcnROb2RlKHhzbEVsZW0sIHRydWUpOworICAgICAgVHJhbnNmb3JtcyB0cmFuc2Zvcm1zID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKworICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFNMVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChFbGVtZW50KSB4c2xFbGVtSW1wb3J0ZWQpOworICAgICAgbWFuaWZlc3QuYWRkRG9jdW1lbnQoQmFzZVVSSSwgIiNub3RhcmllcyIsIHRyYW5zZm9ybXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMuQUxHT19JRF9ESUdFU1RfU0hBMSwgbnVsbCwgbnVsbCk7CisKKyAgICAgIHJldHVybiBtYW5pZmVzdC5nZXRFbGVtZW50KCk7CisgICB9CisKKyAgIHN0YXRpYyB7CisgICAgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvc2lnbmF0dXJlL0NyZWF0ZU51bGxVUklSZWZlcmVuY2UuamF2YSBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvc2lnbmF0dXJlL0NyZWF0ZU51bGxVUklSZWZlcmVuY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTdhZTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9zaWduYXR1cmUvQ3JlYXRlTnVsbFVSSVJlZmVyZW5jZS5qYXZhCkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLnNpZ25hdHVyZTsKKworCisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5U3RvcmU7CitpbXBvcnQgamF2YS5zZWN1cml0eS5Qcml2YXRlS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5YTUxVdGlsczsKKworCisvKioKKyAqIENsYXNzIENyZWF0ZU51bGxVUklSZWZlcmVuY2UKKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKiBAdmVyc2lvbiAkUmV2aXNpb24kCisgKi8KK3B1YmxpYyBjbGFzcyBDcmVhdGVOdWxsVVJJUmVmZXJlbmNlIHsKKworICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKAorICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlTnVsbFVSSVJlZmVyZW5jZS5jbGFzcy5nZXROYW1lKCkpOworCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWluCisgICAgKgorICAgICogQHBhcmFtIHVudXNlZAorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIHVudXNlZFtdKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgIC8vSi0KKyAgICAgIFN0cmluZyBrZXlzdG9yZVR5cGUgPSAiSktTIjsKKyAgICAgIFN0cmluZyBrZXlzdG9yZUZpbGUgPSAiZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL2lucHV0L2tleXN0b3JlLmprcyI7CisgICAgICBTdHJpbmcga2V5c3RvcmVQYXNzID0gInhtbHNlY3VyaXR5IjsKKyAgICAgIFN0cmluZyBwcml2YXRlS2V5QWxpYXMgPSAidGVzdCI7CisgICAgICBTdHJpbmcgcHJpdmF0ZUtleVBhc3MgPSAieG1sc2VjdXJpdHkiOworICAgICAgU3RyaW5nIGNlcnRpZmljYXRlQWxpYXMgPSAidGVzdCI7CisgICAgICBGaWxlIHNpZ25hdHVyZUZpbGUgPSBuZXcgRmlsZSgic2lnbmF0dXJlLnhtbCIpOworICAgICAgLy9KKworICAgICAgS2V5U3RvcmUga3MgPSBLZXlTdG9yZS5nZXRJbnN0YW5jZShrZXlzdG9yZVR5cGUpOworICAgICAgRmlsZUlucHV0U3RyZWFtIGZpcyA9IG5ldyBGaWxlSW5wdXRTdHJlYW0oa2V5c3RvcmVGaWxlKTsKKworICAgICAga3MubG9hZChmaXMsIGtleXN0b3JlUGFzcy50b0NoYXJBcnJheSgpKTsKKworICAgICAgUHJpdmF0ZUtleSBwcml2YXRlS2V5ID0gKFByaXZhdGVLZXkpIGtzLmdldEtleShwcml2YXRlS2V5QWxpYXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2YXRlS2V5UGFzcy50b0NoYXJBcnJheSgpKTsKKyAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0KKyAgICAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKworICAgICAgZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworCisgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgICBvcmcudzNjLmRvbS5Eb2N1bWVudCBkb2MgPSBkYi5uZXdEb2N1bWVudCgpOworICAgICAgU3RyaW5nIEJhc2VVUkkgPSBzaWduYXR1cmVGaWxlLnRvVVJMKCkudG9TdHJpbmcoKTsKKworICAgICAgQ29uc3RhbnRzLnNldFNpZ25hdHVyZVNwZWNOU3ByZWZpeChudWxsKTsKKworICAgICAgWE1MU2lnbmF0dXJlIHNpZyA9IG5ldyBYTUxTaWduYXR1cmUoZG9jLCBCYXNlVVJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MU2lnbmF0dXJlLkFMR09fSURfU0lHTkFUVVJFX0RTQSk7CisgICAgICBieXRlW11bXSBtZW1vcnlEYXRhID0geworICAgICAgICAgIlRoZSBzZWNyZXQgZGF0YSIuZ2V0Qnl0ZXMoKSwgImRhdGFzZXQgMiIuZ2V0Qnl0ZXMoKSwKKyAgICAgIH07CisKKyAgICAgIHNpZy5hZGRSZXNvdXJjZVJlc29sdmVyKG5ldyBOdWxsVVJJUmVmZXJlbmNlUmVzb2x2ZXIobWVtb3J5RGF0YSkpOworICAgICAgZG9jLmFwcGVuZENoaWxkKHNpZy5nZXRFbGVtZW50KCkpOworCisgICAgICB7CisgICAgICAgICBzaWcuYWRkRG9jdW1lbnQobnVsbCwgbnVsbCwgQ29uc3RhbnRzLkFMR09fSURfRElHRVNUX1NIQTEpOworICAgICAgICAgc2lnLmFkZERvY3VtZW50KG51bGwsIG51bGwsIENvbnN0YW50cy5BTEdPX0lEX0RJR0VTVF9TSEExKTsKKyAgICAgIH0KKworICAgICAgeworICAgICAgICAgWDUwOUNlcnRpZmljYXRlIGNlcnQgPQorICAgICAgICAgICAgKFg1MDlDZXJ0aWZpY2F0ZSkga3MuZ2V0Q2VydGlmaWNhdGUoY2VydGlmaWNhdGVBbGlhcyk7CisKKyAgICAgICAgIHNpZy5hZGRLZXlJbmZvKGNlcnQpOworICAgICAgICAgc2lnLmFkZEtleUluZm8oY2VydC5nZXRQdWJsaWNLZXkoKSk7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlN0YXJ0IHNpZ25pbmciKTsKKyAgICAgICAgIHNpZy5zaWduKHByaXZhdGVLZXkpOworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJGaW5pc2hlZCBzaWduaW5nIik7CisgICAgICB9CisKKyAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZiA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKHNpZ25hdHVyZUZpbGUpOworCisgICAgICBYTUxVdGlscy5vdXRwdXRET01jMTRuV2l0aENvbW1lbnRzKGRvYywgZik7CisgICAgICBmLmNsb3NlKCk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIldyb3RlIHNpZ25hdHVyZSB0byAiICsgQmFzZVVSSSk7CisgICB9CisKKyAgIHN0YXRpYyB7CisgICAgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvc2lnbmF0dXJlL0NyZWF0ZVNpZ25hdHVyZS5qYXZhIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9zaWduYXR1cmUvQ3JlYXRlU2lnbmF0dXJlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MxZmM4OQotLS0gL2Rldi9udWxsCisrKyBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvc2lnbmF0dXJlL0NyZWF0ZVNpZ25hdHVyZS5qYXZhCkBAIC0wLDAgKzEsMTc0IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLnNpZ25hdHVyZTsKKworCisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5U3RvcmU7CitpbXBvcnQgamF2YS5zZWN1cml0eS5Qcml2YXRlS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworCisvKioKKyAqCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICovCitwdWJsaWMgY2xhc3MgQ3JlYXRlU2lnbmF0dXJlIHsKKworICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKENyZWF0ZVNpZ25hdHVyZS5jbGFzcy5nZXROYW1lKCkpOworCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWluCisgICAgKgorICAgICogQHBhcmFtIHVudXNlZAorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIHVudXNlZFtdKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgIENvbnN0YW50cy5zZXRTaWduYXR1cmVTcGVjTlNwcmVmaXgoImRzIik7CisKKyAgICAgIC8vSi0KKyAgICAgIC8vQWxsIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUga2V5c3RvcmUKKyAgICAgIFN0cmluZyBrZXlzdG9yZVR5cGUgPSAiSktTIjsKKyAgICAgIFN0cmluZyBrZXlzdG9yZUZpbGUgPSAiZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL2lucHV0L2tleXN0b3JlLmprcyI7CisgICAgICBTdHJpbmcga2V5c3RvcmVQYXNzID0gInhtbHNlY3VyaXR5IjsKKyAgICAgIFN0cmluZyBwcml2YXRlS2V5QWxpYXMgPSAidGVzdCI7CisgICAgICBTdHJpbmcgcHJpdmF0ZUtleVBhc3MgPSAieG1sc2VjdXJpdHkiOworICAgICAgU3RyaW5nIGNlcnRpZmljYXRlQWxpYXMgPSAidGVzdCI7CisgICAgICBGaWxlIHNpZ25hdHVyZUZpbGUgPSBuZXcgRmlsZSgic2lnbmF0dXJlLnhtbCIpOworICAgICAgLy9KKworICAgICAgS2V5U3RvcmUga3MgPSBLZXlTdG9yZS5nZXRJbnN0YW5jZShrZXlzdG9yZVR5cGUpOworICAgICAgRmlsZUlucHV0U3RyZWFtIGZpcyA9IG5ldyBGaWxlSW5wdXRTdHJlYW0oa2V5c3RvcmVGaWxlKTsKKworICAgICAgLy9sb2FkIHRoZSBrZXlzdG9yZQorICAgICAga3MubG9hZChmaXMsIGtleXN0b3JlUGFzcy50b0NoYXJBcnJheSgpKTsKKworICAgICAgLy9nZXQgdGhlIHByaXZhdGUga2V5IGZvciBzaWduaW5nLgorICAgICAgUHJpdmF0ZUtleSBwcml2YXRlS2V5ID0gKFByaXZhdGVLZXkpIGtzLmdldEtleShwcml2YXRlS2V5QWxpYXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2YXRlS2V5UGFzcy50b0NoYXJBcnJheSgpKTsKKyAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0KKyAgICAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKworICAgICAgLy9YTUwgU2lnbmF0dXJlIG5lZWRzIHRvIGJlIG5hbWVzcGFjZSBhd2FyZQorICAgICAgZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworCisgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgICBvcmcudzNjLmRvbS5Eb2N1bWVudCBkb2MgPSBkYi5uZXdEb2N1bWVudCgpOworCisgICAgICAvL0J1aWxkIGEgc2FtcGxlIGRvY3VtZW50LiBJdCB3aWxsIGxvb2sgc29tZXRoaW5nIGxpa2U6CisgICAgICAvLzwhLS0gQ29tbWVudCBiZWZvcmUgLS0+CisgICAgICAvLzxhcGFjaGU6Um9vdEVsZW1lbnQgeG1sbnM6YXBhY2hlPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbnMvI2FwcDEiPlNvbWUgc2ltcGxlIHRleHQKKyAgICAgIC8vPC9hcGFjaGU6Um9vdEVsZW1lbnQ+CisgICAgICAvLzwhLS0gQ29tbWVudCBhZnRlciAtLT4KKyAgICAgIGRvYy5hcHBlbmRDaGlsZChkb2MuY3JlYXRlQ29tbWVudCgiIENvbW1lbnQgYmVmb3JlICIpKTsKKworICAgICAgRWxlbWVudCByb290ID0gZG9jLmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy5hcGFjaGUub3JnL25zLyNhcHAxIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFwYWNoZTpSb290RWxlbWVudCIpOworCisgICAgICByb290LnNldEF0dHJpYnV0ZU5TKG51bGwsICJhdHRyMSIsICJ0ZXN0MSIpOworICAgICAgcm9vdC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAiYXR0cjIiLCAidGVzdDIiKTsKKyAgICAgIHJvb3Quc2V0QXR0cmlidXRlTlMoQ29uc3RhbnRzLk5hbWVzcGFjZVNwZWNOUywgInhtbG5zOmZvbyIsICJodHRwOi8vZXhhbXBsZS5vcmcvI2ZvbyIpOworICAgICAgcm9vdC5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL2V4YW1wbGUub3JnLyNmb28iLCAiZm9vOmF0dHIxIiwgImZvbydzIHRlc3QiKTsKKworCisKKyAgICAgIHJvb3Quc2V0QXR0cmlidXRlTlMoQ29uc3RhbnRzLk5hbWVzcGFjZVNwZWNOUywgInhtbG5zOmFwYWNoZSIsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbnMvI2FwcDEiKTsKKyAgICAgIGRvYy5hcHBlbmRDaGlsZChyb290KTsKKyAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJTb21lIHNpbXBsZSB0ZXh0XG4iKSk7CisKKyAgICAgIC8vVGhlIEJhc2VVUkkgaXMgdGhlIFVSSSB0aGF0J3MgdXNlZCB0byBwcmVwZW5kIHRvIHJlbGF0aXZlIFVSSXMKKyAgICAgIFN0cmluZyBCYXNlVVJJID0gc2lnbmF0dXJlRmlsZS50b1VSTCgpLnRvU3RyaW5nKCk7CisgICAgICAvL0NyZWF0ZSBhbiBYTUwgU2lnbmF0dXJlIG9iamVjdCBmcm9tIHRoZSBkb2N1bWVudCwgQmFzZVVSSSBhbmQKKyAgICAgIC8vc2lnbmF0dXJlIGFsZ29yaXRobSAoaW4gdGhpcyBjYXNlIERTQSkKKyAgICAgIFhNTFNpZ25hdHVyZSBzaWcgPSBuZXcgWE1MU2lnbmF0dXJlKGRvYywgQmFzZVVSSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTFNpZ25hdHVyZS5BTEdPX0lEX1NJR05BVFVSRV9EU0EpOworCisKKyAgICAgIC8vQXBwZW5kIHRoZSBzaWduYXR1cmUgZWxlbWVudCB0byB0aGUgcm9vdCBlbGVtZW50IGJlZm9yZSBzaWduaW5nIGJlY2F1c2UKKyAgICAgIC8vdGhpcyBpcyBnb2luZyB0byBiZSBhbiBlbnZlbG9wZWQgc2lnbmF0dXJlLgorICAgICAgLy9UaGlzIG1lYW5zIHRoZSBzaWduYXR1cmUgaXMgZ29pbmcgdG8gYmUgZW52ZWxvcGVkIGJ5IHRoZSBkb2N1bWVudC4KKyAgICAgIC8vVHdvIG90aGVyIHBvc3NpYmxlIGZvcm1zIGFyZSBlbnZlbG9waW5nIHdoZXJlIHRoZSBkb2N1bWVudCBpcyBpbnNpZGUgdGhlCisgICAgICAvL3NpZ25hdHVyZSBhbmQgZGV0YWNoZWQgd2hlcmUgdGhleSBhcmUgc2VwZXJhdGUuCisgICAgICAvL05vdGUgdGhhdCB0aGV5IGNhbiBiZSBtaXhlZCBpbiAxIHNpZ25hdHVyZSB3aXRoIHNlcGVyYXRlIHJlZmVyZW5jZXMgYXMKKyAgICAgIC8vc2hvd24gYmVsb3cuCisgICAgICByb290LmFwcGVuZENoaWxkKHNpZy5nZXRFbGVtZW50KCkpOworICAgICAgZG9jLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVDb21tZW50KCIgQ29tbWVudCBhZnRlciAiKSk7CisgICAgICBzaWcuZ2V0U2lnbmVkSW5mbygpCisgICAgICAgICAuYWRkUmVzb3VyY2VSZXNvbHZlcihuZXcgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2FtcGxlcy51dGlscy5yZXNvbHZlcgorICAgICAgICAgICAgLk9mZmxpbmVSZXNvbHZlcigpKTsKKworICAgICAgeworICAgICAgICAgLy9jcmVhdGUgdGhlIHRyYW5zZm9ybXMgb2JqZWN0IGZvciB0aGUgRG9jdW1lbnQvUmVmZXJlbmNlCisgICAgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICAgICAvL0ZpcnN0IHdlIGhhdmUgdG8gc3RyaXAgYXdheSB0aGUgc2lnbmF0dXJlIGVsZW1lbnQgKGl0J3Mgbm90IHBhcnQgb2YgdGhlCisgICAgICAgICAvL3NpZ25hdHVyZSBjYWxjdWxhdGlvbnMpLiBUaGUgZW52ZWxvcGVkIHRyYW5zZm9ybSBjYW4gYmUgdXNlZCBmb3IgdGhpcy4KKyAgICAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX0VOVkVMT1BFRF9TSUdOQVRVUkUpOworICAgICAgICAgLy9QYXJ0IG9mIHRoZSBzaWduYXR1cmUgZWxlbWVudCBuZWVkcyB0byBiZSBjYW5vbmljYWxpemVkLiBJdCBpcyBhIGtpbmQKKyAgICAgICAgIC8vb2Ygbm9ybWFsaXppbmcgYWxnb3JpdGhtIGZvciBYTUwuIEZvciBtb3JlIGluZm9ybWF0aW9uIHBsZWFzZSB0YWtlIGEKKyAgICAgICAgIC8vbG9vayBhdCB0aGUgVzNDIFhNTCBEaWdpdGFsIFNpZ25hdHVyZSB3ZWJwYWdlLgorICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fQzE0Tl9XSVRIX0NPTU1FTlRTKTsKKyAgICAgICAgIC8vQWRkIHRoZSBhYm92ZSBEb2N1bWVudC9SZWZlcmVuY2UKKyAgICAgICAgIHNpZy5hZGREb2N1bWVudCgiIiwgdHJhbnNmb3JtcywgQ29uc3RhbnRzLkFMR09fSURfRElHRVNUX1NIQTEpOworICAgICAgfQorCisgICAgICB7CisgICAgICAgICAvL0FkZCBpbiAyIGV4dGVybmFsIFVSSXMuIFRoaXMgaXMgYSBkZXRhY2hlZCBSZWZlcmVuY2UuCisgICAgICAgICAvLworICAgICAgICAgLy8gV2hlbiBzaWduKCkgaXMgY2FsbGVkLCB0d28gbmV0d29yayBjb25uZWN0aW9ucyBhcmUgbWFkZS4gLS0gd2VsbCwKKyAgICAgICAgIC8vIG5vdCByZWFsbHksIGFzIHdlIHVzZSB0aGUgT2ZmbGluZVJlc29sdmVyIHdoaWNoIGFjdHMgYXMgYSBwcm94eSBmb3IKKyAgICAgICAgIC8vIHRoZXNlIHR3byByZXNvdWNlcyA7LSkpCisgICAgICAgICAvLworICAgICAgICAgc2lnLmFkZERvY3VtZW50KCJodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldCIpOworICAgICAgICAgc2lnLmFkZERvY3VtZW50KCJodHRwOi8vd3d3Lm51ZS5ldC1pbmYudW5pLXNpZWdlbi5kZS9pbmRleC5odG1sIik7CisgICAgICB9CisKKyAgICAgIHsKKyAgICAgICAgIC8vQWRkIGluIHRoZSBLZXlJbmZvIGZvciB0aGUgY2VydGlmaWNhdGUgdGhhdCB3ZSB1c2VkIHRoZSBwcml2YXRlIGtleSBvZgorICAgICAgICAgWDUwOUNlcnRpZmljYXRlIGNlcnQgPQorICAgICAgICAgICAgKFg1MDlDZXJ0aWZpY2F0ZSkga3MuZ2V0Q2VydGlmaWNhdGUoY2VydGlmaWNhdGVBbGlhcyk7CisKKyAgICAgICAgIHNpZy5hZGRLZXlJbmZvKGNlcnQpOworICAgICAgICAgc2lnLmFkZEtleUluZm8oY2VydC5nZXRQdWJsaWNLZXkoKSk7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlN0YXJ0IHNpZ25pbmciKTsKKyAgICAgICAgIHNpZy5zaWduKHByaXZhdGVLZXkpOworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJGaW5pc2hlZCBzaWduaW5nIik7CisgICAgICB9CisKKyAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZiA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKHNpZ25hdHVyZUZpbGUpOworCisgICAgICBYTUxVdGlscy5vdXRwdXRET01jMTRuV2l0aENvbW1lbnRzKGRvYywgZik7CisKKyAgICAgIGYuY2xvc2UoKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiV3JvdGUgc2lnbmF0dXJlIHRvICIgKyBCYXNlVVJJKTsKKyAgIH0KKworICAgc3RhdGljIHsKKyAgICAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaW5pdCgpOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9zaWduYXR1cmUvSGVyZVNpZ25lci5qYXZhIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9zaWduYXR1cmUvSGVyZVNpZ25lci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxOWYyMmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3NpZ25hdHVyZS9IZXJlU2lnbmVyLmphdmEKQEAgLTAsMCArMSwxNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMuc2lnbmF0dXJlOworCisKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVPdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS5zZWN1cml0eS5LZXlTdG9yZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlByaXZhdGVLZXk7CitpbXBvcnQgamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5PYmplY3RDb250YWluZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlNpZ25lZEluZm87CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybXM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5wYXJhbXMuWFBhdGhDb250YWluZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkhlbHBlck5vZGVMaXN0OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CisKKworLyoqCisgKgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGNsYXNzIEhlcmVTaWduZXIgeworCisgICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKEhlcmVTaWduZXIuY2xhc3MuZ2V0TmFtZSgpKTsKKworICAgLyoqCisgICAgKiBNZXRob2QgbWFpbgorICAgICoKKyAgICAqIEBwYXJhbSB1bnVzZWQKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyB1bnVzZWRbXSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAvL0otCisgICAgICBTdHJpbmcga2V5c3RvcmVUeXBlID0gIkpLUyI7CisgICAgICBTdHJpbmcga2V5c3RvcmVGaWxlID0gImRhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9pbnB1dC9rZXlzdG9yZS5qa3MiOworICAgICAgU3RyaW5nIGtleXN0b3JlUGFzcyA9ICJ4bWxzZWN1cml0eSI7CisgICAgICBTdHJpbmcgcHJpdmF0ZUtleUFsaWFzID0gInRlc3QiOworICAgICAgU3RyaW5nIHByaXZhdGVLZXlQYXNzID0gInhtbHNlY3VyaXR5IjsKKyAgICAgIFN0cmluZyBjZXJ0aWZpY2F0ZUFsaWFzID0gInRlc3QiOworICAgICAgRmlsZSBzaWduYXR1cmVGaWxlID0gbmV3IEZpbGUoImhlcmVTaWduYXR1cmUueG1sIik7CisgICAgICAvL0orCisgICAgICBLZXlTdG9yZSBrcyA9IEtleVN0b3JlLmdldEluc3RhbmNlKGtleXN0b3JlVHlwZSk7CisgICAgICBGaWxlSW5wdXRTdHJlYW0gZmlzID0gbmV3IEZpbGVJbnB1dFN0cmVhbShrZXlzdG9yZUZpbGUpOworCisgICAgICBrcy5sb2FkKGZpcywga2V5c3RvcmVQYXNzLnRvQ2hhckFycmF5KCkpOworCisgICAgICBQcml2YXRlS2V5IHByaXZhdGVLZXkgPSAoUHJpdmF0ZUtleSkga3MuZ2V0S2V5KHByaXZhdGVLZXlBbGlhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXZhdGVLZXlQYXNzLnRvQ2hhckFycmF5KCkpOworICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPQorICAgICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCisgICAgICBkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisKKyAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlciBkYiA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKKyAgICAgIG9yZy53M2MuZG9tLkRvY3VtZW50IGRvYyA9IGRiLm5ld0RvY3VtZW50KCk7CisKKworICAgICAgU3RyaW5nIEJhc2VVUkkgPSBzaWduYXR1cmVGaWxlLnRvVVJMKCkudG9TdHJpbmcoKTsKKyAgICAgIENvbnN0YW50cy5zZXRTaWduYXR1cmVTcGVjTlNwcmVmaXgoInByb2YiKTsKKyAgICAgIFhNTFNpZ25hdHVyZSBzaWcgPSBuZXcgWE1MU2lnbmF0dXJlKGRvYywgQmFzZVVSSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTFNpZ25hdHVyZS5BTEdPX0lEX1NJR05BVFVSRV9EU0EpOworCisgICAgICBkb2MuYXBwZW5kQ2hpbGQoc2lnLmdldEVsZW1lbnQoKSk7CisgICAgICBzaWcuZ2V0U2lnbmVkSW5mbygpCisgICAgICAgICAuYWRkUmVzb3VyY2VSZXNvbHZlcihuZXcgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2FtcGxlcy51dGlscy5yZXNvbHZlcgorICAgICAgICAgICAgLk9mZmxpbmVSZXNvbHZlcigpKTsKKworICAgICAgeworICAgICAgICAgT2JqZWN0Q29udGFpbmVyIG9iMSA9IG5ldyBPYmplY3RDb250YWluZXIoZG9jKTsKKyAgICAgICAgIG9iMS5zZXRJZCgib2JqZWN0LTEiKTsKKyAgICAgICAgIG9iMS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuU2lnbmVkIFRleHRcbiIpKTsKKyAgICAgICAgIEVsZW1lbnQgYyA9IGRvYy5jcmVhdGVFbGVtZW50TlMobnVsbCwgImVsZW1lbnQiKTsKKyAgICAgICAgIGMuc2V0QXR0cmlidXRlTlMobnVsbCwgIm5hbWUiLCAidmFsIik7CisgICAgICAgICBvYjEuYXBwZW5kQ2hpbGQoYyk7CisgICAgICAgICBzaWcuYXBwZW5kT2JqZWN0KG9iMSk7CisKKyAgICAgICAgIFRyYW5zZm9ybXMgdHJhbnNmb3JtcyA9IG5ldyBUcmFuc2Zvcm1zKGRvYyk7CisgICAgICAgICBYUGF0aENvbnRhaW5lciB4YyA9IG5ldyBYUGF0aENvbnRhaW5lcihkb2MpOworICAgICAgICAgeGMuc2V0WFBhdGhOYW1lc3BhY2VDb250ZXh0KCJwcm9mIiwgQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUyk7CisKKyAgICAgICAgIC8vSi0KKyAgICAgICAgIFN0cmluZyB4cGF0aCA9ICJcbiIKKyAgICAgICAgICArICJjb3VudCgiICsgIlxuIgorICAgICAgICAgICsgIiBhbmNlc3Rvci1vci1zZWxmOjpwcm9mOk9iamVjdCAiICsgIlxuIgorICAgICAgICAgICsgIiB8ICIgKyAiXG4iCisgICAgICAgICAgKyAiIGhlcmUoKS9hbmNlc3Rvcjo6cHJvZjpTaWduYXR1cmVbMV0vY2hpbGQ6OnByb2Y6T2JqZWN0W0BJZD0nb2JqZWN0LTEnXSIgKyAiXG4iCisgICAgICAgICAgKyAiKSA8PSBjb3VudCgiICsgIlxuIgorICAgICAgICAgICsgIiBhbmNlc3Rvci1vci1zZWxmOjpwcm9mOk9iamVjdCIgKyAiXG4iCisgICAgICAgICAgKyAiKSAiICsgIlxuIjsKKyAgICAgICAgIC8vSisKKworICAgICAgICAgeGMuc2V0WFBhdGgoeHBhdGgpOworICAgICAgICAgSGVscGVyTm9kZUxpc3QgbmwgPSBuZXcgSGVscGVyTm9kZUxpc3QoKTsKKyAgICAgICAgIG5sLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG4iKSk7CisgICAgICAgICBubC5hcHBlbmRDaGlsZCh4Yy5nZXRFbGVtZW50KCkpOworICAgICAgICAgbmwuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJcbiIpKTsKKworICAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgsIG5sKTsKKyAgICAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX0MxNE5fV0lUSF9DT01NRU5UUyk7CisgICAgICAgICBzaWcuYWRkRG9jdW1lbnQoIiIsIHRyYW5zZm9ybXMsIENvbnN0YW50cy5BTEdPX0lEX0RJR0VTVF9TSEExKTsKKyAgICAgIH0KKworICAgICAgeworICAgICAgICAgWDUwOUNlcnRpZmljYXRlIGNlcnQgPQorICAgICAgICAgICAgKFg1MDlDZXJ0aWZpY2F0ZSkga3MuZ2V0Q2VydGlmaWNhdGUoY2VydGlmaWNhdGVBbGlhcyk7CisKKyAgICAgICAgIHNpZy5hZGRLZXlJbmZvKGNlcnQpOworICAgICAgICAgc2lnLmFkZEtleUluZm8oY2VydC5nZXRQdWJsaWNLZXkoKSk7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlN0YXJ0IHNpZ25pbmciKTsKKyAgICAgICAgIHNpZy5zaWduKHByaXZhdGVLZXkpOworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJGaW5pc2hlZCBzaWduaW5nIik7CisgICAgICB9CisKKyAgICAgIFNpZ25lZEluZm8gcyA9IHNpZy5nZXRTaWduZWRJbmZvKCk7CisgICAgICBmb3IgKGludCBpPTA7IGk8cy5nZXRTaWduZWRDb250ZW50TGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG5ldyBTdHJpbmcocy5nZXRTaWduZWRDb250ZW50SXRlbShpKSkpOworICAgICAgfQorCisgICAgICBGaWxlT3V0cHV0U3RyZWFtIGYgPSBuZXcgRmlsZU91dHB1dFN0cmVhbShzaWduYXR1cmVGaWxlKTsKKworICAgICAgWE1MVXRpbHMub3V0cHV0RE9NYzE0bldpdGhDb21tZW50cyhkb2MsIGYpOworCisgICAgICBmLmNsb3NlKCk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIldyb3RlIHNpZ25hdHVyZSB0byAiICsgQmFzZVVSSSk7CisgICB9CisKKyAgIHN0YXRpYyB7CisgICAgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvc2lnbmF0dXJlL051bGxVUklSZWZlcmVuY2VSZXNvbHZlci5qYXZhIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9zaWduYXR1cmUvTnVsbFVSSVJlZmVyZW5jZVJlc29sdmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJhMDRhZAotLS0gL2Rldi9udWxsCisrKyBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvc2lnbmF0dXJlL051bGxVUklSZWZlcmVuY2VSZXNvbHZlci5qYXZhCkBAIC0wLDAgKzEsMTQyIEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLnNpZ25hdHVyZTsKKworCisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlSW5wdXQ7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMucmVzb2x2ZXIuUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5yZXNvbHZlci5SZXNvdXJjZVJlc29sdmVyU3BpOworaW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7CisKKworLyoqCisgKiBUaGlzIGlzIGEgc2FtcGxlIFJlc291cmNlUmVzb2x2ZXIgd2hvIGRlbW9uc3RyYXRlZCBob3cgUmVmZXJlbmNlcyB3aXRob3V0CisgKiBVUkkgYXR0cmlidWV0IGNvdWxkIGJlIGhhbmRsZWQuCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICovCitwdWJsaWMgY2xhc3MgTnVsbFVSSVJlZmVyZW5jZVJlc29sdmVyIGV4dGVuZHMgUmVzb3VyY2VSZXNvbHZlclNwaSB7CisKKyAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZygKKyAgICAgICAgICAgICAgICBOdWxsVVJJUmVmZXJlbmNlUmVzb2x2ZXIuY2xhc3MuZ2V0TmFtZSgpKTsKKworICAgLyoqIEZpZWxkIF9kYXRhW10gKi8KKyAgIGJ5dGUgX2RhdGFbXSA9IG51bGw7CisKKyAgIC8qKiBGaWVsZCBfZGF0YTJbXVtdICovCisgICBieXRlIF9kYXRhMltdW10gPSBudWxsOworCisgICAvKiogRmllbGQgX2NvdW50ICovCisgICBpbnQgX2NvdW50ID0gLTE7CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgTnVsbFVSSVJlZmVyZW5jZVJlc29sdmVyCisgICAgKgorICAgICogQHBhcmFtIGRhdGEKKyAgICAqLworICAgcHVibGljIE51bGxVUklSZWZlcmVuY2VSZXNvbHZlcihieXRlW10gZGF0YSkgeworICAgICAgX2RhdGEgPSBkYXRhOworICAgICAgX2NvdW50ID0gLTE7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgTnVsbFVSSVJlZmVyZW5jZVJlc29sdmVyCisgICAgKgorICAgICogQHBhcmFtIGRhdGEKKyAgICAqLworICAgcHVibGljIE51bGxVUklSZWZlcmVuY2VSZXNvbHZlcihieXRlW11bXSBkYXRhKSB7CisgICAgICBfZGF0YTIgPSBkYXRhOworICAgICAgX2NvdW50ID0gMDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lUmVzb2x2ZQorICAgICoKKyAgICAqIEBwYXJhbSB1cmkKKyAgICAqIEBwYXJhbSBCYXNlVVJJCisgICAgKgorICAgICogQHRocm93cyBSZXNvdXJjZVJlc29sdmVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBYTUxTaWduYXR1cmVJbnB1dCBlbmdpbmVSZXNvbHZlKEF0dHIgdXJpLCBTdHJpbmcgQmFzZVVSSSkKKyAgICAgICAgICAgdGhyb3dzIFJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb24geworCisgICAgICBYTUxTaWduYXR1cmVJbnB1dCByZXN1bHQgPSBudWxsOworCisgICAgICBpZiAoKHRoaXMuX2RhdGEgIT0gbnVsbCkgJiYgKHRoaXMuX2NvdW50ID09IC0xKSkgeworCisgICAgICAgICAvLyB3ZSBhbHdheXMgcmV0dXJuIHRoZSBzYW1lIHN0dWZmOworICAgICAgICAgcmVzdWx0ID0gbmV3IFhNTFNpZ25hdHVyZUlucHV0KHRoaXMuX2RhdGEpOworCisgICAgICAgICByZXN1bHQuc2V0U291cmNlVVJJKCJtZW1vcnk6Ly9udWxsIik7CisgICAgICAgICByZXN1bHQuc2V0TUlNRVR5cGUoInRleHQvdHh0Iik7CisgICAgICB9IGVsc2UgaWYgKCh0aGlzLl9kYXRhID09IG51bGwpICYmICh0aGlzLl9jb3VudCAhPSAtMSkpIHsKKyAgICAgICAgIGlmICh0aGlzLl9jb3VudCA8IHRoaXMuX2RhdGEyLmxlbmd0aCkgeworICAgICAgICAgICAgcmVzdWx0ID0gbmV3IFhNTFNpZ25hdHVyZUlucHV0KHRoaXMuX2RhdGEyW3RoaXMuX2NvdW50XSk7CisKKyAgICAgICAgICAgIHJlc3VsdC5zZXRTb3VyY2VVUkkoIm1lbW9yeTovLyIgKyB0aGlzLl9jb3VudCk7CisKKyAgICAgICAgICAgIHRoaXMuX2NvdW50Kys7CisKKyAgICAgICAgICAgIHJlc3VsdC5zZXRNSU1FVHlwZSgidGV4dC90eHQiKTsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBTdHJpbmcgZXJyTXNnID0gIllvdSBkaWQgbm90IHN1cHBseSBlbm91Z2ggZGF0YSEhISBUaGVyZSBhcmUgb25seSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAodGhpcy5fZGF0YTIubGVuZ3RoKSArICIgYnl0ZVtdIGFycmF5cyI7CisgICAgICAgICAgICBPYmplY3QgZXhBcmdzW10gPSB7IGVyck1zZyB9OworCisgICAgICAgICAgICB0aHJvdyBuZXcgUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbigiZW1wdHkiLCBleEFyZ3MsIHVyaSwgQmFzZVVSSSk7CisgICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICAgT2JqZWN0IGV4QXJnc1tdID0geyAiWW91IGRpZCBub3Qgc3VwcGx5IGRhdGEgISEhIiB9OworCisgICAgICAgICB0aHJvdyBuZXcgUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbigiZW1wdHkiLCBleEFyZ3MsIHVyaSwgQmFzZVVSSSk7CisgICAgICB9CisKKyAgICAgIHJldHVybiByZXN1bHQ7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGVuZ2luZUNhblJlc29sdmUKKyAgICAqCisgICAgKiBAcGFyYW0gdXJpCisgICAgKiBAcGFyYW0gQmFzZVVSSQorICAgICoKKyAgICAqLworICAgcHVibGljIGJvb2xlYW4gZW5naW5lQ2FuUmVzb2x2ZShBdHRyIHVyaSwgU3RyaW5nIEJhc2VVUkkpIHsKKworICAgICAgaWYgKHVyaSA9PSBudWxsKSB7CisgICAgICAgICBpZiAoKHRoaXMuX2RhdGEgIT0gbnVsbCkgJiYgKHRoaXMuX2NvdW50ID09IC0xKSkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICB9IGVsc2UgaWYgKCh0aGlzLl9kYXRhID09IG51bGwpICYmICh0aGlzLl9jb3VudCAhPSAtMSkpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgfQorICAgICAgfQorCisgICAgICByZXR1cm4gZmFsc2U7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGVuZ2luZUdldFByb3BlcnR5S2V5cworICAgICoKKyAgICAqCisgICAgKi8KKyAgIHB1YmxpYyBTdHJpbmdbXSBlbmdpbmVHZXRQcm9wZXJ0eUtleXMoKSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvc2lnbmF0dXJlL1NpZ25hdHVyZVByb3BlcnRpZXNTYW1wbGUuamF2YSBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvc2lnbmF0dXJlL1NpZ25hdHVyZVByb3BlcnRpZXNTYW1wbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGM4NWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9zaWduYXR1cmUvU2lnbmF0dXJlUHJvcGVydGllc1NhbXBsZS5qYXZhCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMuc2lnbmF0dXJlOworCisKKworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5DYW5vbmljYWxpemVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5PYmplY3RDb250YWluZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlNpZ25hdHVyZVByb3BlcnRpZXM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlNpZ25hdHVyZVByb3BlcnR5OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmU7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CisKKworLyoqCisgKiBDbGFzcyBTaWduYXR1cmVQcm9wZXJ0aWVzU2FtcGxlCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICogQHZlcnNpb24gJFJldmlzaW9uJAorICovCitwdWJsaWMgY2xhc3MgU2lnbmF0dXJlUHJvcGVydGllc1NhbXBsZSB7CisKKyAgIC8qKgorICAgICogTWV0aG9kIG1haW4KKyAgICAqCisgICAgKiBAcGFyYW0gYXJncworICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaW5pdCgpOworCisgICAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKworICAgICAgZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworCisgICAgICBEb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgICBEb2N1bWVudCBkb2MgPSBkYi5uZXdEb2N1bWVudCgpOworICAgICAgWE1MU2lnbmF0dXJlIHNpZyA9IG5ldyBYTUxTaWduYXR1cmUoZG9jLCBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MU2lnbmF0dXJlLkFMR09fSURfTUFDX0hNQUNfU0hBMSk7CisKKyAgICAgIGRvYy5hcHBlbmRDaGlsZChzaWcuZ2V0RWxlbWVudCgpKTsKKworICAgICAgU2lnbmF0dXJlUHJvcGVydHkgcHJvcDEgPSBuZXcgU2lnbmF0dXJlUHJvcGVydHkoZG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy54bWxzZWN1cml0eS5vcmcvI3RhcmdldCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcm9wMSIpOworCisgICAgICBwcm9wMS5nZXRFbGVtZW50KCkKKyAgICAgICAgIC5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuICAgc29tZSBkYXRhIGZvciB0aGlzIHByb3BlcnR5XG4iKSk7CisKKyAgICAgIFNpZ25hdHVyZVByb3BlcnRpZXMgcHJvcHMgPSBuZXcgU2lnbmF0dXJlUHJvcGVydGllcyhkb2MpOworCisgICAgICBwcm9wcy5hZGRTaWduYXR1cmVQcm9wZXJ0eShwcm9wMSk7CisKKyAgICAgIE9iamVjdENvbnRhaW5lciBvYmplY3QgPSBuZXcgT2JqZWN0Q29udGFpbmVyKGRvYyk7CisKKyAgICAgIG9iamVjdC5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuIikpOworICAgICAgb2JqZWN0LmFwcGVuZENoaWxkKHByb3BzLmdldEVsZW1lbnQoKSk7CisgICAgICBvYmplY3QuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJcbiIpKTsKKyAgICAgIHNpZy5hcHBlbmRPYmplY3Qob2JqZWN0KTsKKyAgICAgIHNpZy5hZGREb2N1bWVudCgiI3Byb3AxIik7CisKKyAgICAgIFN0cmluZyBzZWNyZXRLZXkgPSAic2VjcmV0IjsKKworICAgICAgc2lnLmdldEtleUluZm8oKS5hZGRLZXlOYW1lKCJUaGUgVVRGLTggb2N0ZXRzIG9mIFwiIiArIHNlY3JldEtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIlwiIGFyZSB1c2VkIGZvciBzaWduaW5nICgiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzZWNyZXRLZXkubGVuZ3RoKCkgKyAiIG9jdGV0cykiKTsKKyAgICAgIHNpZy5zaWduKHNpZy5jcmVhdGVTZWNyZXRLZXkoc2VjcmV0S2V5LmdldEJ5dGVzKCkpKTsKKworICAgICAgQ2Fub25pY2FsaXplciBjMTRuID0KKyAgICAgICAgIENhbm9uaWNhbGl6ZXIuZ2V0SW5zdGFuY2UoQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fV0lUSF9DT01NRU5UUyk7CisKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIik7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmV3IFN0cmluZyhjMTRuLmNhbm9uaWNhbGl6ZVN1YnRyZWUoZG9jKSkpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKKyAgICAgIFN5c3RlbS5vdXQKKyAgICAgICAgIC5wcmludGxuKG5ldyBTdHJpbmcoc2lnLmdldFNpZ25lZEluZm8oKS5pdGVtKDApLmdldFRyYW5zZm9ybXNPdXRwdXQoKQorICAgICAgICAgICAgLmdldEJ5dGVzKCkpKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIik7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3NpZ25hdHVyZS9UZXN0U2lnbmF0dXJlLmphdmEgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3NpZ25hdHVyZS9UZXN0U2lnbmF0dXJlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTgwMTFlMQotLS0gL2Rldi9udWxsCisrKyBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvc2lnbmF0dXJlL1Rlc3RTaWduYXR1cmUuamF2YQpAQCAtMCwwICsxLDE2MCBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2FtcGxlcy5zaWduYXR1cmU7CisKKworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHVibGljS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLktleUluZm87CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5zdG9yYWdlLlN0b3JhZ2VSZXNvbHZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLnV0aWxzLnJlc29sdmVyLk9mZmxpbmVSZXNvbHZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMuU2FtcGxlVXRpbHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueHBhdGguWFBhdGhBUEk7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworCisvKioKKyAqIENsYXNzIFRlc3RTaWduYXR1cmUKKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKiBAdmVyc2lvbiAkUmV2aXNpb24kCisgKi8KK3B1YmxpYyBjbGFzcyBUZXN0U2lnbmF0dXJlIHsKKworICAgLyoqCisgICAgKiBNZXRob2QgbWFpbgorICAgICoKKyAgICAqIEBwYXJhbSB1bnVzZWQKKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIHVudXNlZFtdKSB7CisKKyAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0KKyAgICAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKworICAgICAgZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworCisgICAgICAvL0otCisgICAgICBTdHJpbmcgbWVybGluc0RpciA9CisgICAgICAgICAiZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLWVpZ2h0ZWVuLyI7CisgICAgICBTdHJpbmcgb3VyRGlyID0KKyAgICAgICAgICJkYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RlbXAva2V5LyI7CisgICAgICBTdHJpbmcgZmlsZW5hbWVzW10gPSB7IG1lcmxpbnNEaXIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwICovICJzaWduYXR1cmUta2V5bmFtZS54bWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJsaW5zRGlyICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMSAqLyAic2lnbmF0dXJlLXJldHJpZXZhbG1ldGhvZC1yYXd4NTA5Y3J0LnhtbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmxpbnNEaXIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAyICovICJzaWduYXR1cmUteDUwOS1jcnQtY3JsLnhtbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmxpbnNEaXIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAzICovICJzaWduYXR1cmUteDUwOS1jcnQueG1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVybGluc0RpciArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDQgKi8gInNpZ25hdHVyZS14NTA5LWlzLnhtbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmxpbnNEaXIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA1ICovICJzaWduYXR1cmUteDUwOS1za2kueG1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVybGluc0RpciArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDYgKi8gInNpZ25hdHVyZS14NTA5LXNuLnhtbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91ckRpciArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDcgKi8gInNpZ25hdHVyZS1yZXRyaWV2YWxtZXRob2QteDUwOWRhdGEueG1sIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAgLy9KKworICAgICAgaW50IHN0YXJ0ID0gMDsKKyAgICAgIGludCBlbmQgPSBmaWxlbmFtZXMubGVuZ3RoOworCisgICAgICAvLyBpbnQgZW5kID0gZmlsZW5hbWVzLmxlbmd0aDsKKyAgICAgIGZvciAoaW50IGZpbGVfdG9fdmVyaWZ5ID0gc3RhcnQ7IGZpbGVfdG9fdmVyaWZ5IDwgZW5kOyBmaWxlX3RvX3ZlcmlmeSsrKSB7CisgICAgICAgICB0cnkgeworICAgICAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0gZmlsZW5hbWVzW2ZpbGVfdG9fdmVyaWZ5XTsKKyAgICAgICAgICAgIEZpbGUgZiA9IG5ldyBGaWxlKGZpbGVuYW1lKTsKKworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKKyAgICAgICAgICAgICAgICIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMiKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVHJ5IHRvIHZlcmlmeSAiICsgZi50b1VSTCgpLnRvU3RyaW5nKCkpOworCisgICAgICAgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgICAgICAgICBvcmcudzNjLmRvbS5Eb2N1bWVudCBkb2MgPQorICAgICAgICAgICAgICAgZGIucGFyc2UobmV3IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtKGZpbGVuYW1lKSk7CisKKyAgICAgICAgICAgIC8vY3JlYXRlIGEgbmFtZXNwYWNlIGNvbnRleHQgZm9yIHVzZSBpbiB0aGUgWFBhdGggZXhwcmVzc2lvbiBiZWxvdworICAgICAgICAgICAgRWxlbWVudCBuc2NvbnRleHQgPSBTYW1wbGVVdGlscy5jcmVhdGVEU2N0eChkb2MsICJkcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMpOworCisgICAgICAgICAgICAvL3JldHJpZXZlIHRoZSBzaWduYXR1cmUgRWxlbWVudCBmcm9tIHRoZSBkb2N1bWVudAorICAgICAgICAgICAgRWxlbWVudCBzaWdFbGVtZW50ID0gKEVsZW1lbnQpIFhQYXRoQVBJLnNlbGVjdFNpbmdsZU5vZGUoZG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8vZHM6U2lnbmF0dXJlWzFdIiwgbnNjb250ZXh0KTsKKworICAgICAgICAgICAgLy9DcmVhdGVzIGEgWE1MU2lnbmF0dXJlIGZyb20gdGhlIGVsZW1lbnQgYW5kIHVzZXMgdGhlIGZpbGVuYW1lIGFzCisgICAgICAgICAgICAvL3RoZSBiYXNlVVJJLiBUaGF0IFVSSSBpcyBwcmVwZW5kZWQgdG8gYWxsIHJlbGF0aXZlIFVSSXMuCisgICAgICAgICAgICBYTUxTaWduYXR1cmUgc2lnbmF0dXJlID0KKyAgICAgICAgICAgICAgIG5ldyBYTUxTaWduYXR1cmUoc2lnRWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5ldyBGaWxlKGZpbGVuYW1lKSkudG9VUkwoKS50b1N0cmluZygpKTsKKworICAgICAgICAgICAgc2lnbmF0dXJlLmFkZFJlc291cmNlUmVzb2x2ZXIobmV3IE9mZmxpbmVSZXNvbHZlcigpKTsKKworICAgICAgICAgICAgLy9HZXQgdGhlIEtleUluZm8gb2JqZWN0LCB3aGljaCBtaWdodCBjb250YWluIHNvbWUgY2x1ZXMgYXMgdG8gd2hhdAorICAgICAgICAgICAgLy9rZXkgd2FzIHVzZWQgdG8gY3JlYXRlIHRoZSBzaWduYXR1cmUuIEl0IG1pZ2h0IGFsc28gY29udGFpbiB0aGUKKyAgICAgICAgICAgIC8vZnVsbCBjZXJ0LgorICAgICAgICAgICAgS2V5SW5mbyBraSA9IHNpZ25hdHVyZS5nZXRLZXlJbmZvKCk7CisKKyAgICAgICAgICAgIGtpLmFkZFN0b3JhZ2VSZXNvbHZlcihuZXcgU3RvcmFnZVJlc29sdmVyKG5ldyBvcmcuYXBhY2hlLnhtbAorICAgICAgICAgICAgICAgLnNlY3VyaXR5LmtleXMuc3RvcmFnZS5pbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgICAgICAgIC5DZXJ0c0luRmlsZXN5c3RlbURpcmVjdG9yeVJlc29sdmVyKG1lcmxpbnNEaXIgKyAiY2VydHMiKSkpOworCisgICAgICAgICAgICBpZiAoa2kgIT0gbnVsbCkgeworCisgICAgICAgICAgICAgICAvL0ZpcnN0IHRyeSB0byBzZWUgaWYgaXQgaXMgYW4gWDUwOUNlcnQKKyAgICAgICAgICAgICAgIFg1MDlDZXJ0aWZpY2F0ZSBjZXJ0ID0KKyAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZS5nZXRLZXlJbmZvKCkuZ2V0WDUwOUNlcnRpZmljYXRlKCk7CisKKyAgICAgICAgICAgICAgIGlmIChjZXJ0ICE9IG51bGwpIHsKKworICAgICAgICAgICAgICAgICAgLy9jaGVjayBpZiB0aGUgc2lnbmF0dXJlIGlzIHZhbGlkIHVzaW5nIHRoZSBjZXJ0CisgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNoZWNrOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzaWduYXR1cmUuY2hlY2tTaWduYXR1cmVWYWx1ZShjZXJ0KSk7CisgICAgICAgICAgICAgICB9IGVsc2UgeworCisgICAgICAgICAgICAgICAgICAvL01heWJlIGl0J3MgYSBwdWJsaWMga2V5CisgICAgICAgICAgICAgICAgICBQdWJsaWNLZXkgcGsgPSBzaWduYXR1cmUuZ2V0S2V5SW5mbygpLmdldFB1YmxpY0tleSgpOworCisgICAgICAgICAgICAgICAgICBpZiAocGsgIT0gbnVsbCkgeworCisgICAgICAgICAgICAgICAgICAgICAvL2NoZWNrIGlmIHRoZSBzaWduYXR1cmUgaXMgdmFsaWQgdXNpbmcgdGhlIHB1YmxpYyBrZXkKKyAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQ2hlY2s6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHNpZ25hdHVyZS5jaGVja1NpZ25hdHVyZVZhbHVlKHBrKSk7CisgICAgICAgICAgICAgICAgICB9IGVsc2UgeworCisgICAgICAgICAgICAgICAgICAgICAvL05vIFg1MDlDZXJ0IG9yIFB1YmxpY0tleSBjb3VsZCBiZSBmb3VuZC4KKyAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQKKyAgICAgICAgICAgICAgICAgICAgICAgIC5wcmludGxuKCJDb3VsZCBub3QgZmluZCBDZXJ0aWZpY2F0ZSBvciBQdWJsaWNLZXkiKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisKKyAgICAgICAgICAgICAgIC8vSWYgdGhlIHNpZ25hdHVyZSBkaWQgbm90IGNvbnRhaW4gYW55IEtleUluZm8gZWxlbWVudAorICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJDb3VsZCBub3QgZmluZCBkczpLZXlJbmZvIik7CisgICAgICAgICAgICB9CisgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIGV4LnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICAgfQorICAgICAgfQorICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9zaWduYXR1cmUvVmVyaWZ5Q29sbGVjdGFibGVTaWduYXR1cmUuamF2YSBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvc2lnbmF0dXJlL1ZlcmlmeUNvbGxlY3RhYmxlU2lnbmF0dXJlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZiODE5MgotLS0gL2Rldi9udWxsCisrKyBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvc2lnbmF0dXJlL1ZlcmlmeUNvbGxlY3RhYmxlU2lnbmF0dXJlLmphdmEKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMuc2lnbmF0dXJlOworCisKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5TaWduZWRJbmZvOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmU7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2FtcGxlcy5TYW1wbGVVdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLmFwYWNoZS54cGF0aC5YUGF0aEFQSTsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OworCisKKy8qKgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGNsYXNzIFZlcmlmeUNvbGxlY3RhYmxlU2lnbmF0dXJlIHsKKworICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKFZlcmlmeUNvbGxlY3RhYmxlU2lnbmF0dXJlLmNsYXNzLmdldE5hbWUoKSk7CisKKyAgIC8qKgorICAgICogTWV0aG9kIG1haW4KKyAgICAqCisgICAgKiBAcGFyYW0gdW51c2VkCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgdW51c2VkW10pIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9CisgICAgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisKKyAgICAgIGRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKyAgICAgIGRiZi5zZXRBdHRyaWJ1dGUoImh0dHA6Ly94bWwub3JnL3NheC9mZWF0dXJlcy9uYW1lc3BhY2VzIiwgQm9vbGVhbi5UUlVFKTsKKworICAgICAgdHJ5IHsKKyAgICAgICAgIEZpbGUgc2lnbmF0dXJlRmlsZSA9IG5ldyBGaWxlKCJjb2xsZWN0YWJsZVNpZ25hdHVyZS54bWwiKTsKKyAgICAgICAgIFN0cmluZyBCYXNlVVJJID0gc2lnbmF0dXJlRmlsZS50b1VSTCgpLnRvU3RyaW5nKCk7CisKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVHJ5IHRvIHZlcmlmeSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzaWduYXR1cmVGaWxlLnRvVVJMKCkudG9TdHJpbmcoKSk7CisKKyAgICAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlciBkYiA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKKworICAgICAgICAgZGIuc2V0RXJyb3JIYW5kbGVyKG5ldyBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscworICAgICAgICAgICAgLklnbm9yZUFsbEVycm9ySGFuZGxlcigpKTsKKworICAgICAgICAgb3JnLnczYy5kb20uRG9jdW1lbnQgZG9jID0KKyAgICAgICAgICAgIGRiLnBhcnNlKG5ldyBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbShzaWduYXR1cmVGaWxlKSk7CisgICAgICAgICBFbGVtZW50IG5zY29udGV4dCA9IFNhbXBsZVV0aWxzLmNyZWF0ZURTY3R4KGRvYywgImRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUyk7CisgICAgICAgICBOb2RlTGlzdCBzaWduYXR1cmVFbGVtcyA9IFhQYXRoQVBJLnNlbGVjdE5vZGVMaXN0KGRvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8vZHM6U2lnbmF0dXJlIiwgbnNjb250ZXh0KTsKKworICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaWduYXR1cmVFbGVtcy5nZXRMZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICBFbGVtZW50IHNpZ0VsZW1lbnQgPSAoRWxlbWVudCkgc2lnbmF0dXJlRWxlbXMuaXRlbShpKTsKKyAgICAgICAgICAgIFhNTFNpZ25hdHVyZSBzaWduYXR1cmUgPSBuZXcgWE1MU2lnbmF0dXJlKHNpZ0VsZW1lbnQsIEJhc2VVUkkpOworICAgICAgICAgICAgYnl0ZVtdIHNlY3JldEtleSA9ICJzZWNyZXRWYWx1ZSIuZ2V0Qnl0ZXMoKTsKKworICAgICAgICAgICAgU3lzdGVtLm91dAorICAgICAgICAgICAgICAgLnByaW50bG4oIlRoZSBYTUwgc2lnbmF0dXJlIG51bWJlciAiICsgaSArICIgaW4gZmlsZSAiICsgQmFzZVVSSSArICIgaXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgKyAoc2lnbmF0dXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2hlY2tTaWduYXR1cmVWYWx1ZShzaWduYXR1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jcmVhdGVTZWNyZXRLZXkoQ3JlYXRlQ29sbGVjdGFibGVTaWduYXR1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wYXNzcGhyYXNlLmdldEJ5dGVzKCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAidmFsaWQgKGdvb2QpIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiaW52YWxpZCAhISEhISAoYmFkKSIpKTsKKworICAgICAgICAgICAgU2lnbmVkSW5mbyBzID0gc2lnbmF0dXJlLmdldFNpZ25lZEluZm8oKTsKKworICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBzLmdldFNpZ25lZENvbnRlbnRMZW5ndGgoKTsgaisrKSB7CisgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiMjIyMjIyMjIyMjIyMjIyMgU2lnbmVkIFJlc291cmNlICIgKyBpICsgIi8iICsgagorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAjIyMjIyMjIyMjIyMjIyMjIik7CisgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmV3IFN0cmluZyhzLmdldFNpZ25lZENvbnRlbnRJdGVtKGopKSk7CisgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgZXgucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICB9CisgICB9CisKKyAgIHN0YXRpYyB7CisgICAgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvc2lnbmF0dXJlL1ZlcmlmeU1lcmxpbnNFeGFtcGxlc0ZpZnRlZW4uamF2YSBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvc2lnbmF0dXJlL1ZlcmlmeU1lcmxpbnNFeGFtcGxlc0ZpZnRlZW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDU4MGI3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9zaWduYXR1cmUvVmVyaWZ5TWVybGluc0V4YW1wbGVzRmlmdGVlbi5qYXZhCkBAIC0wLDAgKzEsMTg3IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLnNpZ25hdHVyZTsKKworCisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb247CisKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLlNhbXBsZVV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5YTUxVdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQVBJOworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CisKKworLyoqCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICovCitwdWJsaWMgY2xhc3MgVmVyaWZ5TWVybGluc0V4YW1wbGVzRmlmdGVlbiB7CisKKyAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZygKKyAgICAgICAgICAgICAgICAgICAgICAgIFZlcmlmeU1lcmxpbnNFeGFtcGxlc0ZpZnRlZW4uY2xhc3MuZ2V0TmFtZSgpKTsKKworICAgLyoqIEZpZWxkIHNjaGVtYVZhbGlkYXRlICovCisgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBzY2hlbWFWYWxpZGF0ZSA9IGZhbHNlOworCisgICAvKiogRmllbGQgc2lnbmF0dXJlU2NoZW1hRmlsZSAqLworICAgc3RhdGljIGZpbmFsIFN0cmluZyBzaWduYXR1cmVTY2hlbWFGaWxlID0gImRhdGEveG1sZHNpZy1jb3JlLXNjaGVtYS54c2QiOworCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWluCisgICAgKgorICAgICogQHBhcmFtIHVudXNlZAorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgdW51c2VkW10pIHsKKworICAgICAgaWYgKHNjaGVtYVZhbGlkYXRlKSB7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIldlIGRvIHNjaGVtYS12YWxpZGF0aW9uIik7CisgICAgICB9IGVsc2UgeworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJXZSBkbyBub3Qgc2NoZW1hLXZhbGlkYXRpb24iKTsKKyAgICAgIH0KKworICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPQorICAgICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCisgICAgICBpZiAoVmVyaWZ5TWVybGluc0V4YW1wbGVzU2l4dGVlbi5zY2hlbWFWYWxpZGF0ZSkgeworICAgICAgICAgZGJmLnNldEF0dHJpYnV0ZSgiaHR0cDovL2FwYWNoZS5vcmcveG1sL2ZlYXR1cmVzL3ZhbGlkYXRpb24vc2NoZW1hIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQm9vbGVhbi5UUlVFKTsKKyAgICAgICAgIGRiZi5zZXRBdHRyaWJ1dGUoCisgICAgICAgICAgICAiaHR0cDovL2FwYWNoZS5vcmcveG1sL2ZlYXR1cmVzL2RvbS9kZWZlci1ub2RlLWV4cGFuc2lvbiIsCisgICAgICAgICAgICBCb29sZWFuLlRSVUUpOworICAgICAgICAgZGJmLnNldFZhbGlkYXRpbmcodHJ1ZSk7CisgICAgICAgICBkYmYuc2V0QXR0cmlidXRlKCJodHRwOi8veG1sLm9yZy9zYXgvZmVhdHVyZXMvdmFsaWRhdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEJvb2xlYW4uVFJVRSk7CisgICAgICAgICBkYmYuc2V0QXR0cmlidXRlKAorICAgICAgICAgICAgImh0dHA6Ly9hcGFjaGUub3JnL3htbC9wcm9wZXJ0aWVzL3NjaGVtYS9leHRlcm5hbC1zY2hlbWFMb2NhdGlvbiIsCisgICAgICAgICAgICBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TICsgIiAiCisgICAgICAgICAgICArIFZlcmlmeU1lcmxpbnNFeGFtcGxlc1NpeHRlZW4uc2lnbmF0dXJlU2NoZW1hRmlsZSk7CisgICAgICB9CisKKyAgICAgIGRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKyAgICAgIGRiZi5zZXRBdHRyaWJ1dGUoImh0dHA6Ly94bWwub3JnL3NheC9mZWF0dXJlcy9uYW1lc3BhY2VzIiwgQm9vbGVhbi5UUlVFKTsKKworICAgICAgLy9KLQorICAgICAgU3RyaW5nIG1lcmxpbnNEaXIgPQorICAgICAgICAgImRhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWZ0ZWVuLyI7CisgICAgICBTdHJpbmcgZmlsZW5hbWVzW10gPSB7IG1lcmxpbnNEaXIgKyAic2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGExLnhtbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmxpbnNEaXIgKyAic2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGExLTQwLnhtbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmxpbnNEaXIgKyAic2lnbmF0dXJlLWVudmVsb3BlZC1kc2EueG1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVybGluc0RpciArICJzaWduYXR1cmUtZW52ZWxvcGluZy1iNjQtZHNhLnhtbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmxpbnNEaXIgKyAic2lnbmF0dXJlLWVudmVsb3BpbmctZHNhLnhtbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmxpbnNEaXIgKyAic2lnbmF0dXJlLWVudmVsb3BpbmctcnNhLnhtbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmxpbnNEaXIgKyAic2lnbmF0dXJlLWV4dGVybmFsLWI2NC1kc2EueG1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVybGluc0RpciArICJzaWduYXR1cmUtZXh0ZXJuYWwtZHNhLnhtbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgIC8vSisKKyAgICAgIGludCBzdGFydCA9IDA7CisgICAgICAvLyBpbnQgZW5kID0gZmlsZW5hbWVzLmxlbmd0aDsKKyAgICAgIGludCBlbmQgPSAyOworCisgICAgICBmb3IgKGludCBpID0gc3RhcnQ7IGkgPCAyOyBpKyspIHsKKyAgICAgICAgIFN0cmluZyBzaWduYXR1cmVGaWxlTmFtZSA9IGZpbGVuYW1lc1tpXTsKKworICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHZlcmlmeUhNQUMoZGJmLCBzaWduYXR1cmVGaWxlTmFtZSk7CisgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIGV4LnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICAgfQorICAgICAgfQorCisgICAgICBmb3IgKGludCBpID0gMjsgaSA8IGZpbGVuYW1lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgU3RyaW5nIHNpZ25hdHVyZUZpbGVOYW1lID0gZmlsZW5hbWVzW2ldOworCisgICAgICAgICB0cnkgeworICAgICAgICAgICAgVmVyaWZ5TWVybGluc0V4YW1wbGVzU2l4dGVlbi52ZXJpZnkoZGJmLCBzaWduYXR1cmVGaWxlTmFtZSk7CisgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIGV4LnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICAgfQorICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB2ZXJpZnkKKyAgICAqCisgICAgKiBAcGFyYW0gZGJmCisgICAgKiBAcGFyYW0gZmlsZW5hbWUKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCB2ZXJpZnlITUFDKERvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmLCBTdHJpbmcgZmlsZW5hbWUpCisgICAgICAgICAgIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBGaWxlIGYgPSBuZXcgRmlsZShmaWxlbmFtZSk7CisKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVHJ5IHRvIHZlcmlmeSAiICsgZi50b1VSTCgpLnRvU3RyaW5nKCkpOworCisgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisKKyAgICAgIGlmIChWZXJpZnlNZXJsaW5zRXhhbXBsZXNTaXh0ZWVuLnNjaGVtYVZhbGlkYXRlKSB7CisgICAgICAgICBkYi5zZXRFcnJvckhhbmRsZXIobmV3IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzCisgICAgICAgICAgICAuSWdub3JlQWxsRXJyb3JIYW5kbGVyKCkpOworICAgICAgICAgZGIuc2V0RW50aXR5UmVzb2x2ZXIobmV3IG9yZy54bWwuc2F4LkVudGl0eVJlc29sdmVyKCkgeworCisgICAgICAgICAgICBwdWJsaWMgb3JnLnhtbC5zYXgKKyAgICAgICAgICAgICAgICAgICAgLklucHV0U291cmNlIHJlc29sdmVFbnRpdHkoU3RyaW5nIHB1YmxpY0lkLCBTdHJpbmcgc3lzdGVtSWQpCisgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyBvcmcueG1sLnNheC5TQVhFeGNlcHRpb24geworCisgICAgICAgICAgICAgICBpZiAoc3lzdGVtSWQuZW5kc1dpdGgoInhtbGRzaWctY29yZS1zY2hlbWEueHNkIikpIHsKKyAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IG9yZy54bWwuc2F4CisgICAgICAgICAgICAgICAgICAgICAgICAuSW5wdXRTb3VyY2UobmV3IEZpbGVJbnB1dFN0cmVhbShzaWduYXR1cmVTY2hlbWFGaWxlKSk7CisgICAgICAgICAgICAgICAgICB9IGNhdGNoIChGaWxlTm90Rm91bmRFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBvcmcueG1sLnNheC5TQVhFeGNlcHRpb24oZXgpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgfSk7CisgICAgICB9CisKKyAgICAgIG9yZy53M2MuZG9tLkRvY3VtZW50IGRvYyA9IGRiLnBhcnNlKG5ldyBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbShmKSk7CisKKyAgICAgIEVsZW1lbnQgbnNjb250ZXh0ID0gU2FtcGxlVXRpbHMuY3JlYXRlRFNjdHgoZG9jLCAiZHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TKTsKKyAgICAgIEVsZW1lbnQgc2lnRWxlbWVudCA9IChFbGVtZW50KSBYUGF0aEFQSS5zZWxlY3RTaW5nbGVOb2RlKGRvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvL2RzOlNpZ25hdHVyZVsxXSIsIG5zY29udGV4dCk7CisgICAgICBYTUxTaWduYXR1cmUgc2lnbmF0dXJlID0gbmV3IFhNTFNpZ25hdHVyZShzaWdFbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi50b1VSTCgpLnRvU3RyaW5nKCkpOworCisgICAgICAvLyBzaWduYXR1cmUuYWRkUmVzb3VyY2VSZXNvbHZlcihuZXcgT2ZmbGluZVJlc29sdmVyKCkpOworCisgICAgICBieXRlIGtleWJ5dGVzW10gPSAic2VjcmV0Ii5nZXRCeXRlcygiQVNDSUkiKTsKKyAgICAgIGphdmF4LmNyeXB0by5TZWNyZXRLZXkgc2sgPSBzaWduYXR1cmUuY3JlYXRlU2VjcmV0S2V5KGtleWJ5dGVzKTsKKworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJUaGUgWE1MIHNpZ25hdHVyZSBpbiBmaWxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGYudG9VUkwoKS50b1N0cmluZygpICsgIiBpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAoc2lnbmF0dXJlLmNoZWNrU2lnbmF0dXJlVmFsdWUoc2spCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAidmFsaWQgKGdvb2QpIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogImludmFsaWQgISEhISEgKGJhZCkiKSk7CisgICB9CisKKyAgIHN0YXRpYyB7CisgICAgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvc2lnbmF0dXJlL1ZlcmlmeU1lcmxpbnNFeGFtcGxlc1NpeHRlZW4uamF2YSBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvc2lnbmF0dXJlL1ZlcmlmeU1lcmxpbnNFeGFtcGxlc1NpeHRlZW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjQ5ODIzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9zaWduYXR1cmUvVmVyaWZ5TWVybGluc0V4YW1wbGVzU2l4dGVlbi5qYXZhCkBAIC0wLDAgKzEsMjI3IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLnNpZ25hdHVyZTsKKworCisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb247CitpbXBvcnQgamF2YS5zZWN1cml0eS5QdWJsaWNLZXk7CitpbXBvcnQgamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZTsKKworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3Rvcnk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLktleUluZm87CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLlNhbXBsZVV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5YTUxVdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQVBJOworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CisKKworLyoqCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICovCitwdWJsaWMgY2xhc3MgVmVyaWZ5TWVybGluc0V4YW1wbGVzU2l4dGVlbiB7CisKKyAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZygKKyAgICAgICAgICAgICAgICBWZXJpZnlNZXJsaW5zRXhhbXBsZXNTaXh0ZWVuLmNsYXNzLmdldE5hbWUoKSk7CisKKyAgIC8qKiBGaWVsZCBzY2hlbWFWYWxpZGF0ZSAqLworICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gc2NoZW1hVmFsaWRhdGUgPSBmYWxzZTsKKworICAgLyoqIEZpZWxkIHNpZ25hdHVyZVNjaGVtYUZpbGUgKi8KKyAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgc2lnbmF0dXJlU2NoZW1hRmlsZSA9ICJkYXRhL3htbGRzaWctY29yZS1zY2hlbWEueHNkIjsKKworICAgLyoqCisgICAgKiBNZXRob2QgbWFpbgorICAgICoKKyAgICAqIEBwYXJhbSB1bnVzZWQKKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIHVudXNlZFtdKSB7CisKKyAgICAgIGlmIChzY2hlbWFWYWxpZGF0ZSkgeworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJXZSBkbyBzY2hlbWEtdmFsaWRhdGlvbiIpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiV2UgZG8gbm90IHNjaGVtYS12YWxpZGF0aW9uIik7CisgICAgICB9CisKKyAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0KKyAgICAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKworICAgICAgaWYgKFZlcmlmeU1lcmxpbnNFeGFtcGxlc1NpeHRlZW4uc2NoZW1hVmFsaWRhdGUpIHsKKyAgICAgICAgIGRiZi5zZXRBdHRyaWJ1dGUoImh0dHA6Ly9hcGFjaGUub3JnL3htbC9mZWF0dXJlcy92YWxpZGF0aW9uL3NjaGVtYSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEJvb2xlYW4uVFJVRSk7CisgICAgICAgICBkYmYuc2V0QXR0cmlidXRlKAorICAgICAgICAgICAgImh0dHA6Ly9hcGFjaGUub3JnL3htbC9mZWF0dXJlcy9kb20vZGVmZXItbm9kZS1leHBhbnNpb24iLAorICAgICAgICAgICAgQm9vbGVhbi5UUlVFKTsKKyAgICAgICAgIGRiZi5zZXRWYWxpZGF0aW5nKHRydWUpOworICAgICAgICAgZGJmLnNldEF0dHJpYnV0ZSgiaHR0cDovL3htbC5vcmcvc2F4L2ZlYXR1cmVzL3ZhbGlkYXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBCb29sZWFuLlRSVUUpOworICAgICAgICAgZGJmLnNldEF0dHJpYnV0ZSgKKyAgICAgICAgICAgICJodHRwOi8vYXBhY2hlLm9yZy94bWwvcHJvcGVydGllcy9zY2hlbWEvZXh0ZXJuYWwtc2NoZW1hTG9jYXRpb24iLAorICAgICAgICAgICAgQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUyArICIgIgorICAgICAgICAgICAgKyBWZXJpZnlNZXJsaW5zRXhhbXBsZXNTaXh0ZWVuLnNpZ25hdHVyZVNjaGVtYUZpbGUpOworICAgICAgfQorCisgICAgICBkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisgICAgICBkYmYuc2V0QXR0cmlidXRlKCJodHRwOi8veG1sLm9yZy9zYXgvZmVhdHVyZXMvbmFtZXNwYWNlcyIsIEJvb2xlYW4uVFJVRSk7CisKKyAgICAgIC8vSi0KKyAgICAgIFN0cmluZyBmaWxlbmFtZXNbXSA9IHsgLy8gIjE2c2lnbmF0dXJlLnhtbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIm1lcmxpbnNTaXh0ZWVuUmVjcmVhdGVkLnhtbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1zaXh0ZWVuL3NpZ25hdHVyZS54bWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAvL0orCisgICAgICBpbnQgc3RhcnQgPSAwOworICAgICAgaW50IGVuZCA9IGZpbGVuYW1lcy5sZW5ndGg7CisKKyAgICAgIGZvciAoaW50IGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgICBTdHJpbmcgc2lnbmF0dXJlRmlsZU5hbWUgPSBmaWxlbmFtZXNbaV07CisKKyAgICAgICAgIHRyeSB7CisgICAgICAgICAgICB2ZXJpZnkoZGJmLCBzaWduYXR1cmVGaWxlTmFtZSk7CisgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIGV4LnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICAgfQorICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB2ZXJpZnkKKyAgICAqCisgICAgKiBAcGFyYW0gZGJmCisgICAgKiBAcGFyYW0gZmlsZW5hbWUKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCB2ZXJpZnkoRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYsIFN0cmluZyBmaWxlbmFtZSkKKyAgICAgICAgICAgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIEZpbGUgZiA9IG5ldyBGaWxlKGZpbGVuYW1lKTsKKworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJUcnkgdG8gdmVyaWZ5ICIgKyBmLnRvVVJMKCkudG9TdHJpbmcoKSk7CisKKyAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlciBkYiA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKKworICAgICAgaWYgKFZlcmlmeU1lcmxpbnNFeGFtcGxlc1NpeHRlZW4uc2NoZW1hVmFsaWRhdGUpIHsKKyAgICAgICAgIGRiLnNldEVycm9ySGFuZGxlcihuZXcgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMKKyAgICAgICAgICAgIC5JZ25vcmVBbGxFcnJvckhhbmRsZXIoKSk7CisgICAgICAgICBkYi5zZXRFbnRpdHlSZXNvbHZlcihuZXcgb3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXIoKSB7CisKKyAgICAgICAgICAgIHB1YmxpYyBvcmcueG1sLnNheAorICAgICAgICAgICAgICAgICAgICAuSW5wdXRTb3VyY2UgcmVzb2x2ZUVudGl0eShTdHJpbmcgcHVibGljSWQsIFN0cmluZyBzeXN0ZW1JZCkKKyAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiB7CisKKyAgICAgICAgICAgICAgIGlmIChzeXN0ZW1JZC5lbmRzV2l0aCgieG1sZHNpZy1jb3JlLXNjaGVtYS54c2QiKSkgeworICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgb3JnLnhtbC5zYXgKKyAgICAgICAgICAgICAgICAgICAgICAgIC5JbnB1dFNvdXJjZShuZXcgRmlsZUlucHV0U3RyZWFtKHNpZ25hdHVyZVNjaGVtYUZpbGUpKTsKKyAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbihleCk7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICB9KTsKKyAgICAgIH0KKworICAgICAgb3JnLnczYy5kb20uRG9jdW1lbnQgZG9jID0gZGIucGFyc2UobmV3IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtKGYpKTsKKworICAgICAgRWxlbWVudCBuc2NvbnRleHQgPSBTYW1wbGVVdGlscy5jcmVhdGVEU2N0eChkb2MsICJkcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMpOworICAgICAgRWxlbWVudCBzaWdFbGVtZW50ID0gKEVsZW1lbnQpIFhQYXRoQVBJLnNlbGVjdFNpbmdsZU5vZGUoZG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8vZHM6U2lnbmF0dXJlWzFdIiwgbnNjb250ZXh0KTsKKyAgICAgIFhNTFNpZ25hdHVyZSBzaWduYXR1cmUgPSBuZXcgWE1MU2lnbmF0dXJlKHNpZ0VsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLnRvVVJMKCkudG9TdHJpbmcoKSk7CisKKyAgICAgIHNpZ25hdHVyZS5nZXRTaWduZWRJbmZvKCkKKyAgICAgICAgIC5hZGRSZXNvdXJjZVJlc29sdmVyKG5ldyBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLnV0aWxzLnJlc29sdmVyCisgICAgICAgICAgICAuT2ZmbGluZVJlc29sdmVyKCkpOworCisgICAgICBzaWduYXR1cmUuc2V0Rm9sbG93TmVzdGVkTWFuaWZlc3RzKGZhbHNlKTsKKworICAgICAgLy8gc2lnbmF0dXJlLmFkZFJlc291cmNlUmVzb2x2ZXIobmV3IE9mZmxpbmVSZXNvbHZlcigpKTsKKworICAgICAgLy8gWE1MVXRpbHMub3V0cHV0RE9NYzE0bldpdGhDb21tZW50cyhzaWduYXR1cmUuZ2V0RWxlbWVudCgpLCBTeXN0ZW0ub3V0KTsKKyAgICAgIEtleUluZm8ga2kgPSBzaWduYXR1cmUuZ2V0S2V5SW5mbygpOworCisgICAgICBpZiAoa2kgIT0gbnVsbCkgeworICAgICAgICAgLyoKKyAgICAgICAgIGlmIChraS5jb250YWluc1g1MDlEYXRhKCkpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQ291bGQgZmluZCBhIFg1MDlEYXRhIGVsZW1lbnQgaW4gdGhlIEtleUluZm8iKTsKKyAgICAgICAgIH0KKyAgICAgICAgICovCisKKyAgICAgICAgIFg1MDlDZXJ0aWZpY2F0ZSBjZXJ0ID0gc2lnbmF0dXJlLmdldEtleUluZm8oKS5nZXRYNTA5Q2VydGlmaWNhdGUoKTsKKworICAgICAgICAgaWYgKGNlcnQgIT0gbnVsbCkgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKKyAgICAgICAgICAgICAgICJJIHRyeSB0byB2ZXJpZnkgdGhlIHNpZ25hdHVyZSB1c2luZyB0aGUgWDUwOSBDZXJ0aWZpY2F0ZTogIgorICAgICAgICAgICAgICAgKyBjZXJ0KTsKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRoZSBYTUwgc2lnbmF0dXJlIGluIGZpbGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZi50b1VSTCgpLnRvU3RyaW5nKCkgKyAiIGlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIChzaWduYXR1cmUuY2hlY2tTaWduYXR1cmVWYWx1ZShjZXJ0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gInZhbGlkIChnb29kKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJpbnZhbGlkICEhISEhIChiYWQpIikpOworICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiRGlkIG5vdCBmaW5kIGEgQ2VydGlmaWNhdGUiKTsKKworICAgICAgICAgICAgUHVibGljS2V5IHBrID0gc2lnbmF0dXJlLmdldEtleUluZm8oKS5nZXRQdWJsaWNLZXkoKTsKKworICAgICAgICAgICAgaWYgKHBrICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiSSB0cnkgdG8gdmVyaWZ5IHRoZSBzaWduYXR1cmUgdXNpbmcgdGhlIHB1YmxpYyBrZXk6ICIgKyBwayk7CisgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRoZSBYTUwgc2lnbmF0dXJlIGluIGZpbGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZi50b1VSTCgpLnRvU3RyaW5nKCkgKyAiIGlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIChzaWduYXR1cmUuY2hlY2tTaWduYXR1cmVWYWx1ZShwaykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICJ2YWxpZCAoZ29vZCkiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiaW52YWxpZCAhISEhISAoYmFkKSIpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAgICAgICAgICAiRGlkIG5vdCBmaW5kIGEgcHVibGljIGtleSwgc28gSSBjYW4ndCBjaGVjayB0aGUgc2lnbmF0dXJlIik7CisgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJEaWQgbm90IGZpbmQgYSBLZXlJbmZvIik7CisgICAgICB9CisKKyAgICAgIC8qCisgICAgICBTaWduZWRJbmZvIHMgPSBzaWduYXR1cmUuZ2V0U2lnbmVkSW5mbygpOworICAgICAgZm9yIChpbnQgaT0wOyBpPHMuZ2V0U2lnbmVkQ29udGVudExlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIyMjIyMjIyMjIyMjIyMjIyBTaWduZWQgUmVzb3VyY2UgIiArIGkgKyAiICMjIyMjIyMjIyMjIyMjIyMiKTsKKyAgICAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZjIgPSBuZXcgRmlsZU91dHB1dFN0cmVhbShmaWxlbmFtZSArICIuIiArIGkgKyAiLmlucHV0Iik7CisgICAgICAgICBieXRlW10gZGF0YSA9IHMuZ2V0U2lnbmVkQ29udGVudEl0ZW0oaSk7CisgICAgICAgICBmMi53cml0ZShkYXRhKTsKKyAgICAgICAgIGYyLmNsb3NlKCk7CisKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihuZXcgU3RyaW5nKGRhdGEpKTsKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgfQorICAgICAgKi8KKyAgIH0KKworICAgc3RhdGljIHsKKyAgICAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaW5pdCgpOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9zaWduYXR1cmUvVmVyaWZ5TWVybGluc0V4YW1wbGVzVHdlbnR5VGhyZWUuamF2YSBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvc2lnbmF0dXJlL1ZlcmlmeU1lcmxpbnNFeGFtcGxlc1R3ZW50eVRocmVlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ3YThlOAotLS0gL2Rldi9udWxsCisrKyBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvc2lnbmF0dXJlL1ZlcmlmeU1lcmxpbnNFeGFtcGxlc1R3ZW50eVRocmVlLmphdmEKQEAgLTAsMCArMSwyMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMuc2lnbmF0dXJlOworCisKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlB1YmxpY0tleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlOworCitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuS2V5SW5mbzsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMuU2FtcGxlVXRpbHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueHBhdGguWFBhdGhBUEk7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworCisvKioKKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKi8KK3B1YmxpYyBjbGFzcyBWZXJpZnlNZXJsaW5zRXhhbXBsZXNUd2VudHlUaHJlZSB7CisKKyAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZygKKyAgICAgICAgICAgICAgICBWZXJpZnlNZXJsaW5zRXhhbXBsZXNUd2VudHlUaHJlZS5jbGFzcy5nZXROYW1lKCkpOworCisgICAvKiogRmllbGQgc2NoZW1hVmFsaWRhdGUgKi8KKyAgIHN0YXRpYyBmaW5hbCBib29sZWFuIHNjaGVtYVZhbGlkYXRlID0gZmFsc2U7CisKKyAgIC8qKiBGaWVsZCBzaWduYXR1cmVTY2hlbWFGaWxlICovCisgICBzdGF0aWMgZmluYWwgU3RyaW5nIHNpZ25hdHVyZVNjaGVtYUZpbGUgPSAiZGF0YS94bWxkc2lnLWNvcmUtc2NoZW1hLnhzZCI7CisKKyAgIC8qKgorICAgICogTWV0aG9kIG1haW4KKyAgICAqCisgICAgKiBAcGFyYW0gdW51c2VkCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyB1bnVzZWRbXSkgeworCisgICAgICBpZiAoc2NoZW1hVmFsaWRhdGUpIHsKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiV2UgZG8gc2NoZW1hLXZhbGlkYXRpb24iKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIldlIGRvIG5vdCBzY2hlbWEtdmFsaWRhdGlvbiIpOworICAgICAgfQorCisgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9CisgICAgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisKKyAgICAgIGlmIChWZXJpZnlNZXJsaW5zRXhhbXBsZXNUd2VudHlUaHJlZS5zY2hlbWFWYWxpZGF0ZSkgeworICAgICAgICAgZGJmLnNldEF0dHJpYnV0ZSgiaHR0cDovL2FwYWNoZS5vcmcveG1sL2ZlYXR1cmVzL3ZhbGlkYXRpb24vc2NoZW1hIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQm9vbGVhbi5UUlVFKTsKKyAgICAgICAgIGRiZi5zZXRBdHRyaWJ1dGUoCisgICAgICAgICAgICAiaHR0cDovL2FwYWNoZS5vcmcveG1sL2ZlYXR1cmVzL2RvbS9kZWZlci1ub2RlLWV4cGFuc2lvbiIsCisgICAgICAgICAgICBCb29sZWFuLlRSVUUpOworICAgICAgICAgZGJmLnNldFZhbGlkYXRpbmcodHJ1ZSk7CisgICAgICAgICBkYmYuc2V0QXR0cmlidXRlKCJodHRwOi8veG1sLm9yZy9zYXgvZmVhdHVyZXMvdmFsaWRhdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEJvb2xlYW4uVFJVRSk7CisgICAgICAgICBkYmYuc2V0QXR0cmlidXRlKAorICAgICAgICAgICAgImh0dHA6Ly9hcGFjaGUub3JnL3htbC9wcm9wZXJ0aWVzL3NjaGVtYS9leHRlcm5hbC1zY2hlbWFMb2NhdGlvbiIsCisgICAgICAgICAgICBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TICsgIiAiCisgICAgICAgICAgICArIFZlcmlmeU1lcmxpbnNFeGFtcGxlc1R3ZW50eVRocmVlLnNpZ25hdHVyZVNjaGVtYUZpbGUpOworICAgICAgfQorCisgICAgICBkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisgICAgICBkYmYuc2V0QXR0cmlidXRlKCJodHRwOi8veG1sLm9yZy9zYXgvZmVhdHVyZXMvbmFtZXNwYWNlcyIsIEJvb2xlYW4uVFJVRSk7CisKKyAgICAgIC8vSi0KKyAgICAgIFN0cmluZyBtZXJsaW5zRGlyID0KKyAgICAgICAgICJkYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlLyI7CisgICAgICBTdHJpbmcgZmlsZW5hbWVzW10gPSB7IC8vICIyM3NpZ25hdHVyZS54bWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICJtZXJsaW5zVHdlbnR5VGhyZWVSZWNyZWF0ZWQueG1sIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJsaW5zRGlyICsgInNpZ25hdHVyZS54bWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJsaW5zRGlyICsgInNpZ25hdHVyZS1lbnZlbG9wZWQtZHNhLnhtbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmxpbnNEaXIgKyAic2lnbmF0dXJlLWVudmVsb3BpbmctYjY0LWRzYS54bWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJsaW5zRGlyICsgInNpZ25hdHVyZS1lbnZlbG9waW5nLWRzYS54bWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJsaW5zRGlyICsgInNpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMS00MC54bWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJsaW5zRGlyICsgInNpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMS54bWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJsaW5zRGlyICsgInNpZ25hdHVyZS1lbnZlbG9waW5nLXJzYS54bWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJsaW5zRGlyICsgInNpZ25hdHVyZS1leHRlcm5hbC1iNjQtZHNhLnhtbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmxpbnNEaXIgKyAic2lnbmF0dXJlLWV4dGVybmFsLWRzYS54bWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAvL0orCisgICAgICBpbnQgc3RhcnQgPSAwOworICAgICAgaW50IGVuZCA9IGZpbGVuYW1lcy5sZW5ndGg7CisKKyAgICAgIGZvciAoaW50IGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgICBTdHJpbmcgc2lnbmF0dXJlRmlsZU5hbWUgPSBmaWxlbmFtZXNbaV07CisKKyAgICAgICAgIHRyeSB7CisgICAgICAgICAgICB2ZXJpZnkoZGJmLCBzaWduYXR1cmVGaWxlTmFtZSk7CisgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIGV4LnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICAgfQorICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB2ZXJpZnkKKyAgICAqCisgICAgKiBAcGFyYW0gZGJmCisgICAgKiBAcGFyYW0gZmlsZW5hbWUKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCB2ZXJpZnkoRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYsIFN0cmluZyBmaWxlbmFtZSkKKyAgICAgICAgICAgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIEZpbGUgZiA9IG5ldyBGaWxlKGZpbGVuYW1lKTsKKworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJUcnkgdG8gdmVyaWZ5ICIgKyBmLnRvVVJMKCkudG9TdHJpbmcoKSk7CisKKyAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlciBkYiA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKKworICAgICAgaWYgKFZlcmlmeU1lcmxpbnNFeGFtcGxlc1R3ZW50eVRocmVlLnNjaGVtYVZhbGlkYXRlKSB7CisgICAgICAgICBkYi5zZXRFcnJvckhhbmRsZXIobmV3IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzCisgICAgICAgICAgICAuSWdub3JlQWxsRXJyb3JIYW5kbGVyKCkpOworICAgICAgICAgZGIuc2V0RW50aXR5UmVzb2x2ZXIobmV3IG9yZy54bWwuc2F4LkVudGl0eVJlc29sdmVyKCkgeworCisgICAgICAgICAgICBwdWJsaWMgb3JnLnhtbC5zYXgKKyAgICAgICAgICAgICAgICAgICAgLklucHV0U291cmNlIHJlc29sdmVFbnRpdHkoU3RyaW5nIHB1YmxpY0lkLCBTdHJpbmcgc3lzdGVtSWQpCisgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyBvcmcueG1sLnNheC5TQVhFeGNlcHRpb24geworCisgICAgICAgICAgICAgICBpZiAoc3lzdGVtSWQuZW5kc1dpdGgoInhtbGRzaWctY29yZS1zY2hlbWEueHNkIikpIHsKKyAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IG9yZy54bWwuc2F4CisgICAgICAgICAgICAgICAgICAgICAgICAuSW5wdXRTb3VyY2UobmV3IEZpbGVJbnB1dFN0cmVhbShzaWduYXR1cmVTY2hlbWFGaWxlKSk7CisgICAgICAgICAgICAgICAgICB9IGNhdGNoIChGaWxlTm90Rm91bmRFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBvcmcueG1sLnNheC5TQVhFeGNlcHRpb24oZXgpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgfSk7CisgICAgICB9CisKKyAgICAgIG9yZy53M2MuZG9tLkRvY3VtZW50IGRvYyA9IGRiLnBhcnNlKG5ldyBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbShmKSk7CisKKyAgICAgIEVsZW1lbnQgbnNjb250ZXh0ID0gU2FtcGxlVXRpbHMuY3JlYXRlRFNjdHgoZG9jLCAiZHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TKTsKKyAgICAgIEVsZW1lbnQgc2lnRWxlbWVudCA9IChFbGVtZW50KSBYUGF0aEFQSS5zZWxlY3RTaW5nbGVOb2RlKGRvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvL2RzOlNpZ25hdHVyZVsxXSIsIG5zY29udGV4dCk7CisgICAgICBYTUxTaWduYXR1cmUgc2lnbmF0dXJlID0gbmV3IFhNTFNpZ25hdHVyZShzaWdFbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi50b1VSTCgpLnRvU3RyaW5nKCkpOworCisgICAgICBzaWduYXR1cmUuZ2V0U2lnbmVkSW5mbygpCisgICAgICAgICAuYWRkUmVzb3VyY2VSZXNvbHZlcihuZXcgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2FtcGxlcy51dGlscy5yZXNvbHZlcgorICAgICAgICAgICAgLk9mZmxpbmVSZXNvbHZlcigpKTsKKworICAgICAgc2lnbmF0dXJlLnNldEZvbGxvd05lc3RlZE1hbmlmZXN0cyhmYWxzZSk7CisKKyAgICAgIC8vIHNpZ25hdHVyZS5hZGRSZXNvdXJjZVJlc29sdmVyKG5ldyBPZmZsaW5lUmVzb2x2ZXIoKSk7CisKKyAgICAgIC8vIFhNTFV0aWxzLm91dHB1dERPTWMxNG5XaXRoQ29tbWVudHMoc2lnbmF0dXJlLmdldEVsZW1lbnQoKSwgU3lzdGVtLm91dCk7CisgICAgICBLZXlJbmZvIGtpID0gc2lnbmF0dXJlLmdldEtleUluZm8oKTsKKworICAgICAgaWYgKGtpICE9IG51bGwpIHsKKyAgICAgICAgIC8qCisgICAgICAgICBpZiAoa2kuY29udGFpbnNYNTA5RGF0YSgpKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNvdWxkIGZpbmQgYSBYNTA5RGF0YSBlbGVtZW50IGluIHRoZSBLZXlJbmZvIik7CisgICAgICAgICB9CisgICAgICAgICAqLworCisgICAgICAgICBYNTA5Q2VydGlmaWNhdGUgY2VydCA9IHNpZ25hdHVyZS5nZXRLZXlJbmZvKCkuZ2V0WDUwOUNlcnRpZmljYXRlKCk7CisKKyAgICAgICAgIGlmIChjZXJ0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAgICAgICAiSSB0cnkgdG8gdmVyaWZ5IHRoZSBzaWduYXR1cmUgdXNpbmcgdGhlIFg1MDkgQ2VydGlmaWNhdGU6ICIKKyAgICAgICAgICAgICAgICsgY2VydCk7CisgICAgICAgICAgICAqLworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJUaGUgWE1MIHNpZ25hdHVyZSBpbiBmaWxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGYudG9VUkwoKS50b1N0cmluZygpICsgIiBpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAoc2lnbmF0dXJlLmNoZWNrU2lnbmF0dXJlVmFsdWUoY2VydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICJ2YWxpZCAoZ29vZCkiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiaW52YWxpZCAhISEhISAoYmFkKSIpKTsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIkRpZCBub3QgZmluZCBhIENlcnRpZmljYXRlIik7CisKKyAgICAgICAgICAgIFB1YmxpY0tleSBwayA9IHNpZ25hdHVyZS5nZXRLZXlJbmZvKCkuZ2V0UHVibGljS2V5KCk7CisKKyAgICAgICAgICAgIGlmIChwayAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIkkgdHJ5IHRvIHZlcmlmeSB0aGUgc2lnbmF0dXJlIHVzaW5nIHRoZSBwdWJsaWMga2V5OiAiICsgcGspOworICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJUaGUgWE1MIHNpZ25hdHVyZSBpbiBmaWxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGYudG9VUkwoKS50b1N0cmluZygpICsgIiBpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAoc2lnbmF0dXJlLmNoZWNrU2lnbmF0dXJlVmFsdWUocGspCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAidmFsaWQgKGdvb2QpIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogImludmFsaWQgISEhISEgKGJhZCkiKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKAorICAgICAgICAgICAgICAgICAgIkRpZCBub3QgZmluZCBhIHB1YmxpYyBrZXksIHNvIEkgY2FuJ3QgY2hlY2sgdGhlIHNpZ25hdHVyZSIpOworICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRGlkIG5vdCBmaW5kIGEgS2V5SW5mbyIpOworICAgICAgfQorCisgICAgICAvKgorICAgICAgU2lnbmVkSW5mbyBzID0gc2lnbmF0dXJlLmdldFNpZ25lZEluZm8oKTsKKyAgICAgIGZvciAoaW50IGk9MDsgaTxzLmdldFNpZ25lZENvbnRlbnRMZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiMjIyMjIyMjIyMjIyMjIyMgU2lnbmVkIFJlc291cmNlICIgKyBpICsgIiAjIyMjIyMjIyMjIyMjIyMjIik7CisgICAgICAgICBGaWxlT3V0cHV0U3RyZWFtIGYyID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oZmlsZW5hbWUgKyAiLiIgKyBpICsgIi5pbnB1dCIpOworICAgICAgICAgYnl0ZVtdIGRhdGEgPSBzLmdldFNpZ25lZENvbnRlbnRJdGVtKGkpOworICAgICAgICAgZjIud3JpdGUoZGF0YSk7CisgICAgICAgICBmMi5jbG9zZSgpOworCisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmV3IFN0cmluZyhkYXRhKSk7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgIH0KKyAgICAgICovCisgICB9CisKKyAgIHN0YXRpYyB7CisgICAgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvc2lnbmF0dXJlL1ZlcmlmeVNpZ25hdHVyZS5qYXZhIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9zaWduYXR1cmUvVmVyaWZ5U2lnbmF0dXJlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFjM2JhZAotLS0gL2Rldi9udWxsCisrKyBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvc2lnbmF0dXJlL1ZlcmlmeVNpZ25hdHVyZS5qYXZhCkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLnNpZ25hdHVyZTsKKworCisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb247CitpbXBvcnQgamF2YS5zZWN1cml0eS5QdWJsaWNLZXk7CitpbXBvcnQgamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuS2V5SW5mbzsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLnV0aWxzLnJlc29sdmVyLk9mZmxpbmVSZXNvbHZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMuU2FtcGxlVXRpbHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueHBhdGguWFBhdGhBUEk7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworCisvKioKKyAqCisgKgorICoKKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKgorICovCitwdWJsaWMgY2xhc3MgVmVyaWZ5U2lnbmF0dXJlIHsKKworICAgLyoqCisgICAgKiBNZXRob2QgbWFpbgorICAgICoKKyAgICAqIEBwYXJhbSB1bnVzZWQKKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIHVudXNlZFtdKSB7CisKKyAgICAgIGJvb2xlYW4gc2NoZW1hVmFsaWRhdGUgPSBmYWxzZTsKKyAgICAgIGZpbmFsIFN0cmluZyBzaWduYXR1cmVTY2hlbWFGaWxlID0gImRhdGEveG1sZHNpZy1jb3JlLXNjaGVtYS54c2QiOworICAgICAgLy8gU3RyaW5nIHNpZ25hdHVyZUZpbGVOYW1lID0gImRhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy1maWZ0ZWVuL3NpZ25hdHVyZS1lbnZlbG9waW5nLXJzYS54bWwiOworICAgICAgU3RyaW5nIHNpZ25hdHVyZUZpbGVOYW1lID0gInNpZ25hdHVyZS54bWwiOworCisgICAgICBpZiAoc2NoZW1hVmFsaWRhdGUpIHsKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiV2UgZG8gc2NoZW1hLXZhbGlkYXRpb24iKTsKKyAgICAgIH0KKworICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPQorICAgICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCisgICAgICBpZiAoc2NoZW1hVmFsaWRhdGUpIHsKKyAgICAgICAgIGRiZi5zZXRBdHRyaWJ1dGUoImh0dHA6Ly9hcGFjaGUub3JnL3htbC9mZWF0dXJlcy92YWxpZGF0aW9uL3NjaGVtYSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEJvb2xlYW4uVFJVRSk7CisgICAgICAgICBkYmYuc2V0QXR0cmlidXRlKAorICAgICAgICAgICAgImh0dHA6Ly9hcGFjaGUub3JnL3htbC9mZWF0dXJlcy9kb20vZGVmZXItbm9kZS1leHBhbnNpb24iLAorICAgICAgICAgICAgQm9vbGVhbi5UUlVFKTsKKyAgICAgICAgIGRiZi5zZXRWYWxpZGF0aW5nKHRydWUpOworICAgICAgICAgZGJmLnNldEF0dHJpYnV0ZSgiaHR0cDovL3htbC5vcmcvc2F4L2ZlYXR1cmVzL3ZhbGlkYXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBCb29sZWFuLlRSVUUpOworICAgICAgfQorCisgICAgICBkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisgICAgICBkYmYuc2V0QXR0cmlidXRlKCJodHRwOi8veG1sLm9yZy9zYXgvZmVhdHVyZXMvbmFtZXNwYWNlcyIsIEJvb2xlYW4uVFJVRSk7CisKKyAgICAgIGlmIChzY2hlbWFWYWxpZGF0ZSkgeworICAgICAgICAgZGJmLnNldEF0dHJpYnV0ZSgKKyAgICAgICAgICAgICJodHRwOi8vYXBhY2hlLm9yZy94bWwvcHJvcGVydGllcy9zY2hlbWEvZXh0ZXJuYWwtc2NoZW1hTG9jYXRpb24iLAorICAgICAgICAgICAgQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUyArICIgIiArIHNpZ25hdHVyZVNjaGVtYUZpbGUpOworICAgICAgfQorCisgICAgICB0cnkgeworCisgICAgICAgICAvLyBGaWxlIGYgPSBuZXcgRmlsZSgic2lnbmF0dXJlLnhtbCIpOworICAgICAgICAgRmlsZSBmID0gbmV3IEZpbGUoc2lnbmF0dXJlRmlsZU5hbWUpOworCisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRyeSB0byB2ZXJpZnkgIiArIGYudG9VUkwoKS50b1N0cmluZygpKTsKKworICAgICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyIGRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOworCisgICAgICAgICBkYi5zZXRFcnJvckhhbmRsZXIobmV3IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzCisgICAgICAgICAgICAuSWdub3JlQWxsRXJyb3JIYW5kbGVyKCkpOworCisgICAgICAgICBpZiAoc2NoZW1hVmFsaWRhdGUpIHsKKyAgICAgICAgICAgIGRiLnNldEVudGl0eVJlc29sdmVyKG5ldyBvcmcueG1sLnNheC5FbnRpdHlSZXNvbHZlcigpIHsKKworICAgICAgICAgICAgICAgcHVibGljIG9yZy54bWwuc2F4LklucHV0U291cmNlIHJlc29sdmVFbnRpdHkoCisgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBwdWJsaWNJZCwgU3RyaW5nIHN5c3RlbUlkKQorICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3Mgb3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIHsKKworICAgICAgICAgICAgICAgICAgaWYgKHN5c3RlbUlkLmVuZHNXaXRoKCJ4bWxkc2lnLWNvcmUtc2NoZW1hLnhzZCIpKSB7CisgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBvcmcueG1sLnNheC5JbnB1dFNvdXJjZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBGaWxlSW5wdXRTdHJlYW0oc2lnbmF0dXJlU2NoZW1hRmlsZSkpOworICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgb3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uKGV4KTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOworICAgICAgICAgfQorCisgICAgICAgICBvcmcudzNjLmRvbS5Eb2N1bWVudCBkb2MgPSBkYi5wYXJzZShuZXcgamF2YS5pby5GaWxlSW5wdXRTdHJlYW0oZikpOworICAgICAgICAgRWxlbWVudCBuc2NvbnRleHQgPSBTYW1wbGVVdGlscy5jcmVhdGVEU2N0eChkb2MsICJkcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMpOworICAgICAgICAgRWxlbWVudCBzaWdFbGVtZW50ID0gKEVsZW1lbnQpIFhQYXRoQVBJLnNlbGVjdFNpbmdsZU5vZGUoZG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8vZHM6U2lnbmF0dXJlWzFdIiwgbnNjb250ZXh0KTsKKyAgICAgICAgIFhNTFNpZ25hdHVyZSBzaWduYXR1cmUgPSBuZXcgWE1MU2lnbmF0dXJlKHNpZ0VsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLnRvVVJMKCkudG9TdHJpbmcoKSk7CisKKyAgICAgICAgIHNpZ25hdHVyZS5hZGRSZXNvdXJjZVJlc29sdmVyKG5ldyBPZmZsaW5lUmVzb2x2ZXIoKSk7CisKKyAgICAgICAgIC8vIFhNTFV0aWxzLm91dHB1dERPTWMxNG5XaXRoQ29tbWVudHMoc2lnbmF0dXJlLmdldEVsZW1lbnQoKSwgU3lzdGVtLm91dCk7CisgICAgICAgICBLZXlJbmZvIGtpID0gc2lnbmF0dXJlLmdldEtleUluZm8oKTsKKworICAgICAgICAgaWYgKGtpICE9IG51bGwpIHsKKyAgICAgICAgICAgIGlmIChraS5jb250YWluc1g1MDlEYXRhKCkpIHsKKyAgICAgICAgICAgICAgIFN5c3RlbS5vdXQKKyAgICAgICAgICAgICAgICAgIC5wcmludGxuKCJDb3VsZCBmaW5kIGEgWDUwOURhdGEgZWxlbWVudCBpbiB0aGUgS2V5SW5mbyIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBYNTA5Q2VydGlmaWNhdGUgY2VydCA9IHNpZ25hdHVyZS5nZXRLZXlJbmZvKCkuZ2V0WDUwOUNlcnRpZmljYXRlKCk7CisKKyAgICAgICAgICAgIGlmIChjZXJ0ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAgICAgICAgICAiSSB0cnkgdG8gdmVyaWZ5IHRoZSBzaWduYXR1cmUgdXNpbmcgdGhlIFg1MDkgQ2VydGlmaWNhdGU6ICIKKyAgICAgICAgICAgICAgICAgICsgY2VydCk7CisgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJUaGUgWE1MIHNpZ25hdHVyZSBpbiBmaWxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGYudG9VUkwoKS50b1N0cmluZygpICsgIiBpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAoc2lnbmF0dXJlLmNoZWNrU2lnbmF0dXJlVmFsdWUoY2VydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICJ2YWxpZCAoZ29vZCkiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiaW52YWxpZCAhISEhISAoYmFkKSIpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkRpZCBub3QgZmluZCBhIENlcnRpZmljYXRlIik7CisKKyAgICAgICAgICAgICAgIFB1YmxpY0tleSBwayA9IHNpZ25hdHVyZS5nZXRLZXlJbmZvKCkuZ2V0UHVibGljS2V5KCk7CisKKyAgICAgICAgICAgICAgIGlmIChwayAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKAorICAgICAgICAgICAgICAgICAgICAgIkkgdHJ5IHRvIHZlcmlmeSB0aGUgc2lnbmF0dXJlIHVzaW5nIHRoZSBwdWJsaWMga2V5OiAiCisgICAgICAgICAgICAgICAgICAgICArIHBrKTsKKyAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRoZSBYTUwgc2lnbmF0dXJlIGluIGZpbGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZi50b1VSTCgpLnRvU3RyaW5nKCkgKyAiIGlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIChzaWduYXR1cmUuY2hlY2tTaWduYXR1cmVWYWx1ZShwaykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICJ2YWxpZCAoZ29vZCkiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiaW52YWxpZCAhISEhISAoYmFkKSIpKTsKKyAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAgICAgICAgICAgICAiRGlkIG5vdCBmaW5kIGEgcHVibGljIGtleSwgc28gSSBjYW4ndCBjaGVjayB0aGUgc2lnbmF0dXJlIik7CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJEaWQgbm90IGZpbmQgYSBLZXlJbmZvIik7CisgICAgICAgICB9CisgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIGV4LnByaW50U3RhY2tUcmFjZSgpOworICAgICAgfQorICAgfQorCisgICBzdGF0aWMgeworICAgICAgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuSW5pdC5pbml0KCk7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3NpZ25hdHVyZS9jb250cmFjdC9UaHJlZVNpZ25lckNvbnRyYWN0U2lnbi5qYXZhIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9zaWduYXR1cmUvY29udHJhY3QvVGhyZWVTaWduZXJDb250cmFjdFNpZ24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTEzN2NjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9zaWduYXR1cmUvY29udHJhY3QvVGhyZWVTaWduZXJDb250cmFjdFNpZ24uamF2YQpAQCAtMCwwICsxLDMzNCBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2FtcGxlcy5zaWduYXR1cmUuY29udHJhY3Q7CisKKworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZU91dHB1dFN0cmVhbTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC5LZXlOYW1lOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5TaWduZWRJbmZvOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmU7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1zOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMucGFyYW1zLlhQYXRoQ29udGFpbmVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5YTUxVdGlsczsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworCisKKworLyoqCisgKiBJbiB0aGUgcGFzdCB0aGUgcHJvdG9rb2wgdG8gc2lnbiBkYXRhIChsaWtlIGEgY29udHJhY3QpIGZyb20gbW9yZSB0aGFuIG9uZSBwZW9wbGUKKyAqIGxvb2tzIGxpa2UgdGhpczoKKyAqIDEuIEEgc2lnbmVzIHRoZSBoYXNoIG9mIHRoZSBkYXRhID0+IFNpZ25hdHVyZUEKKyAqIDIuIEIgc2lnbmVzIFNpZ25hdHVyZUEgPT4gU2lnbmF0dXJlQgorICogMy4gQyBzaWduZXMgU2lnbmF0dXJlQiA9PiBTaWduYXR1cmVDCisgKgorICogVG8gdmVyaWZ5IGUuZy4gc2lnbmF0dXJlIEMgdGhlIGZvbGxvd2luZyBzdGVwcyB3ZXJlIG5lY2Vzc2FyeToKKyAqIDEuIFZlcmlmeSBzaWduYXR1cmUgQyB0aGVyZWJ5IGRlY3J5cHQgU2lnbmF0dXJlQyAoU2lnbmF0dXJlQikKKyAqIDIuIFZlcmlmeSBzaWduYXR1cmUgQiB0aGVyZWJ5IGRlY3J5cHQgU2lnbmF0dXJlQiAoU2lnbmF0dXJlQSkKKyAqIDMuIFZlcmlmeSBzaWduYXR1cmUgQSB0aGVyZWJ5IGRlY3J5cHQgU2lnbmF0dXJlQSAoaGFzaCBvZiB0aGUgZGF0YSkKKyAqIDQuIENvbXBhcmUgdGhlIGNhbGN1bGF0ZWQgaGFzaCBvZiB0aGUgc2VudCBjb250cmFjdCB3aXRoIHRoZSBkZWNyeXB0ZWQgU2lnbmF0dXJlQSByZXN1bHQKKyAqCisgKiBYTUwtU2lnbmF0dXJlcyBhcmUgbW9yZSBmbGV4aWJsZSBpbiB0aGlzIHdheS4KKyAqIEl0IGlzIHBvc3NpYmxlIHRvIHNpZ24gZGF0YSBpbiBzdGVwcyBmcm9tIGRpZmZlcmVudCBzaWduZXJzIGFuZAorICogdmVyaWZ5IGEgc2lnbmF0dXJlIGluZGVwZW5kZW50IGZyb20gdGhlIG90aGVycyBzaWduYXR1cmVzLgorICogRnVydGhlcm1vcmUgYWxsIHRoZSBzaWduZWQgZGF0YSBhbmQgdGhlIHNpZ25hdHVyZXMgY2FuIGJlIGhvbGQgaW4gb25lIGZpbGUuCisgKgorICogQGF1dGhvciBSZW5lIEtvbGxtb3JnZW4gPFJlbmUuS29sbG1vcmdlbkBzb2Z0d2FyZWFnLmNvbT4KKyAqLworcHVibGljIGNsYXNzIFRocmVlU2lnbmVyQ29udHJhY3RTaWduIHsKKworICAgLyoqCisgICAgKiBNZXRob2QgbWFpbgorICAgICoKKyAgICAqIEBwYXJhbSB1bnVzZWQKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyB1bnVzZWRbXSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAvL0otCisgICAgICBGaWxlIHNpZ25hdHVyZUZpbGUgPSBuZXcgRmlsZSgidGhyZWVTaWduZXJDb250cmFjdC54bWwiKTsKKyAgICAgIFN0cmluZyBCYXNlVVJJID0gc2lnbmF0dXJlRmlsZS50b1VSTCgpLnRvU3RyaW5nKCk7CisgICAgICAvL0orCisgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9CisgICAgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisKKyAgICAgIGRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKworICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyIGRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOworICAgICAgb3JnLnczYy5kb20uRG9jdW1lbnQgZG9jID0gZGIubmV3RG9jdW1lbnQoKTsKKyAgICAgIEVsZW1lbnQgY29udHJhY3QgPSBkb2MuY3JlYXRlRWxlbWVudE5TKG51bGwsICJjb250cmFjdCIpOworCisgICAgICAvLyBjcmVhdGUgY29udHJhY3QgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICAgIGRvYy5hcHBlbmRDaGlsZChjb250cmFjdCk7CisKKyAgICAgIC8vIGJlYXV0aWZ5aW5nIC8vLy8vLworICAgICAgRWxlbWVudCBjb25kaXRpb24xID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhudWxsLCAiY29uZGl0aW9uMSIpOworCisgICAgICBjb25kaXRpb24xLnNldEF0dHJpYnV0ZU5TKG51bGwsICJJZCIsICJjb25kMSIpOworICAgICAgY29uZGl0aW9uMS5hcHBlbmRDaGlsZCgKKyAgICAgICAgIGRvYy5jcmVhdGVUZXh0Tm9kZSgKKyAgICAgICAgICAgICJjb25kaXRpb24xIG5vdCBjb3ZlcmVkIGluIGZpcnN0IHNpZ25hdHVyZSwgb25seSBiaW5kaW5nIGZvciB0aGUgc2Vjb25kIGFuZCB0aGlyZCBzaWduZXIiKSk7CisKKyAgICAgIEVsZW1lbnQgY29uZGl0aW9uMiA9IGRvYy5jcmVhdGVFbGVtZW50TlMobnVsbCwgImNvbmRpdGlvbjIiKTsKKworICAgICAgY29uZGl0aW9uMi5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoImNvbmRpdGlvbjIiKSk7CisKKyAgICAgIEVsZW1lbnQgY29uZGl0aW9uMyA9IGRvYy5jcmVhdGVFbGVtZW50TlMobnVsbCwgImNvbmRpdGlvbjMiKTsKKworICAgICAgY29uZGl0aW9uMy5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoImNvbmRpdGlvbjMiKSk7CisgICAgICBjb250cmFjdC5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuIikpOworICAgICAgY29udHJhY3QuYXBwZW5kQ2hpbGQoY29uZGl0aW9uMSk7CisgICAgICBjb250cmFjdC5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuIikpOworICAgICAgY29udHJhY3QuYXBwZW5kQ2hpbGQoY29uZGl0aW9uMik7CisgICAgICBjb250cmFjdC5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuIikpOworICAgICAgY29udHJhY3QuYXBwZW5kQ2hpbGQoY29uZGl0aW9uMyk7CisgICAgICBjb250cmFjdC5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuIikpOworCisgICAgICAvL0otCisgICAgICBTdHJpbmcgaWQxID0gImZpcnN0U2lnbmVyIjsKKyAgICAgIFN0cmluZyBpZDIgPSAic2Vjb25kU2lnbmVyIjsKKyAgICAgIFN0cmluZyBpZDMgPSAidGhpcmRTaWduZXIiOworCisgICAgICAvLyBzaWduIHRoZSB3aG9sZSBjb250cmFjdCBhbmQgbm8gc2lnbmF0dXJlIGFuZCBleGNsdWRlIGNvbmRpdGlvbjEKKyAgICAgIFN0cmluZyB4cDFPbGQgPSAibm90KGFuY2VzdG9yLW9yLXNlbGY6OmRzOlNpZ25hdHVyZSkiCisgICAgICAgICAgICArICIgYW5kIG5vdChhbmNlc3Rvci1vci1zZWxmOjpub2RlKClbQElkPSdjb25kMSddKSI7CisKKyAgICAgIC8vIHNpZ24gdGhlIGNvbnRyYWN0IHdpdGggY29uZGl0aW9uMiBhbmQgY29kaXRpb24zIGFuZCBubyBzaWduYXR1cmUKKyAgICAgIFN0cmluZyB4cDEgPSAibm90KGFuY2VzdG9yLW9yLXNlbGY6OmRzOlNpZ25hdHVyZSkiICsgIlxuIgorICAgICAgICAgICAgICAgICsgIiBhbmQgKCIgKyAiXG4iCisgICAgICAgICAgICAgICAgKyAiICAgIChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkgPSAvY29udHJhY3QvY29uZGl0aW9uMikgIiArICJcbiIKKyAgICAgICAgICAgICAgICArICIgb3IgKGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSA9IC9jb250cmFjdC9jb25kaXRpb24zKSAiICsgIlxuIgorICAgICAgICAgICAgICAgICsgIiBvciAoc2VsZjo6bm9kZSgpID0gL2NvbnRyYWN0KSAiICsgIlxuIgorICAgICAgICAgICAgICAgICsgIiBvciAoKHBhcmVudDo6bm9kZSgpID0gL2NvbnRyYWN0KSBhbmQgKHNlbGY6OnRleHQoKSkpIiArICJcbiIKKyAgICAgICAgICAgICAgICArICIpIjsKKworICAgICAgLy8gc2lnbiB0aGUgd2hvbGUgY29udHJhY3QgYW5kIG5vIHNpZ25hdHVyZSBidXQgdGhlIGZpcnN0CisgICAgICBTdHJpbmcgeHAyID0gIm5vdChhbmNlc3Rvci1vci1zZWxmOjpkczpTaWduYXR1cmUpIiArICJcbiIKKyAgICAgICAgICAgICAgICAgKyAiIG9yIGFuY2VzdG9yLW9yLXNlbGY6OmRzOlNpZ25hdHVyZVtASWQ9JyIgKyBpZDEgKyAiJ10iOworCisgICAgICAvLyBzaWduIHRoZSB3aG9sZSBjb250cmFjdCBhbmQgbm8gc2lnbmF0dXJlIGJ1dCB0aGUgZmlyc3QgYW5kIHRoZSBzZWNvbmQKKyAgICAgIFN0cmluZyB4cDMgPSAibm90KGFuY2VzdG9yLW9yLXNlbGY6OmRzOlNpZ25hdHVyZSkiICsgIlxuIgorICAgICAgICAgICAgICAgICArICIgb3IgYW5jZXN0b3Itb3Itc2VsZjo6ZHM6U2lnbmF0dXJlW0BJZD0nIiArIGlkMSArICInXSIgKyAiXG4iCisgICAgICAgICAgICAgICAgICsgIiBvciBhbmNlc3Rvci1vci1zZWxmOjpkczpTaWduYXR1cmVbQElkPSciICsgaWQyICsgIiddIjsKKyAgICAgIC8vSisKKyAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworICAgICAgLy8gZmlyc3Qgc2lnbmVyIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICAgIHsKKyAgICAgICAgIFhNTFNpZ25hdHVyZSBmaXJzdFNpZ25lciA9CisgICAgICAgICAgICBuZXcgWE1MU2lnbmF0dXJlKGRvYywgQmFzZVVSSSwgWE1MU2lnbmF0dXJlLkFMR09fSURfTUFDX0hNQUNfU0hBMSk7CisKKyAgICAgICAgIGZpcnN0U2lnbmVyLnNldElkKGlkMSk7CisgICAgICAgICBjb250cmFjdC5hcHBlbmRDaGlsZChmaXJzdFNpZ25lci5nZXRFbGVtZW50KCkpOworCisgICAgICAgICBTdHJpbmcgcm9vdG5hbWVzcGFjZSA9IGNvbnRyYWN0LmdldE5hbWVzcGFjZVVSSSgpOworICAgICAgICAgYm9vbGVhbiByb290cHJlZml4ZWQgPSAocm9vdG5hbWVzcGFjZSAhPSBudWxsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAocm9vdG5hbWVzcGFjZS5sZW5ndGgoKSA+IDApOworICAgICAgICAgU3RyaW5nIHJvb3Rsb2NhbG5hbWUgPSBjb250cmFjdC5nZXROb2RlTmFtZSgpOworICAgICAgICAgVHJhbnNmb3JtcyB0cmFuc2Zvcm1zID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKyAgICAgICAgIFhQYXRoQ29udGFpbmVyIHhwYXRoID0gbmV3IFhQYXRoQ29udGFpbmVyKGRvYyk7CisKKyAgICAgICAgIHhwYXRoLnNldFhQYXRoTmFtZXNwYWNlQ29udGV4dCgiZHMiLCBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TKTsKKyAgICAgICAgIHhwYXRoLnNldFhQYXRoKCJcbiIgKyB4cDEgKyAiXG4iKTsKKyAgICAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHBhdGguZ2V0RWxlbWVudFBsdXNSZXR1cm5zKCkpOworICAgICAgICAgZmlyc3RTaWduZXIuYWRkRG9jdW1lbnQoIiIsIHRyYW5zZm9ybXMsIENvbnN0YW50cy5BTEdPX0lEX0RJR0VTVF9TSEExKTsKKworICAgICAgICAgeworCisgICAgICAgICAgICAvLyBub3QgcmVhbGx5IHNlY3VyZSAvLy8vLy8vLy8vLy8vLy8vLy8vCisgICAgICAgICAgICBmaXJzdFNpZ25lci5nZXRLZXlJbmZvKCkuYWRkKG5ldyBLZXlOYW1lKGRvYywgIkZpcnN0IHNpZ25lciBrZXkiKSk7CisKKyAgICAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJGaXJzdCBzaWduZXI6IFN0YXJ0IHNpZ25pbmciKTsKKyAgICAgICAgICAgIGZpcnN0U2lnbmVyCisgICAgICAgICAgICAgICAuc2lnbihmaXJzdFNpZ25lcgorICAgICAgICAgICAgICAgICAgLmNyZWF0ZVNlY3JldEtleSgiRmlyc3Qgc2lnbmVyIGtleSIuZ2V0Qnl0ZXMoKSkpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJGaXJzdCBzaWduZXI6IEZpbmlzaGVkIHNpZ25pbmciKTsKKyAgICAgICAgIH0KKworICAgICAgICAgU2lnbmVkSW5mbyBzID0gZmlyc3RTaWduZXIuZ2V0U2lnbmVkSW5mbygpOworCisgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHMuZ2V0U2lnbmVkQ29udGVudExlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIyMjIyMjIyMjIyMjIyMjIyBTaWduZWQgUmVzb3VyY2UgIiArIGkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgIyMjIyMjIyMjIyMjIyMjIyIpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG5ldyBTdHJpbmcocy5nZXRTaWduZWRDb250ZW50SXRlbShpKSkpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgICAgICB9CisgICAgICB9CisKKyAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworICAgICAgLy8gc2Vjb25kIHNpZ25lciAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICAgIHsKKyAgICAgICAgIFhNTFNpZ25hdHVyZSBzZWNvbmRTaWduZXIgPSBuZXcgWE1MU2lnbmF0dXJlKGRvYywgQmFzZVVSSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmUuQUxHT19JRF9NQUNfSE1BQ19TSEExKTsKKworICAgICAgICAgc2Vjb25kU2lnbmVyLnNldElkKGlkMik7CisgICAgICAgICBjb250cmFjdC5hcHBlbmRDaGlsZChzZWNvbmRTaWduZXIuZ2V0RWxlbWVudCgpKTsKKworICAgICAgICAgVHJhbnNmb3JtcyB0cmFuc2Zvcm1zMiA9IG5ldyBUcmFuc2Zvcm1zKGRvYyk7CisgICAgICAgICBYUGF0aENvbnRhaW5lciB4cGF0aDIgPSBuZXcgWFBhdGhDb250YWluZXIoZG9jKTsKKworICAgICAgICAgeHBhdGgyLnNldFhQYXRoTmFtZXNwYWNlQ29udGV4dCgiZHMiLCBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TKTsKKyAgICAgICAgIHhwYXRoMi5zZXRYUGF0aCgiXG4iICsgeHAyICsgIlxuIik7CisgICAgICAgICB0cmFuc2Zvcm1zMi5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHBhdGgyLmdldEVsZW1lbnRQbHVzUmV0dXJucygpKTsKKyAgICAgICAgIHNlY29uZFNpZ25lci5hZGREb2N1bWVudCgiIiwgdHJhbnNmb3JtczIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLkFMR09fSURfRElHRVNUX1NIQTEpOworCisgICAgICAgICB7CisgICAgICAgICAgICBzZWNvbmRTaWduZXIuZ2V0S2V5SW5mbygpLmFkZChuZXcgS2V5TmFtZShkb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2Vjb25kIHNpZ25lciBrZXkiKSk7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlNlY29uZCBzaWduZXI6IFN0YXJ0IHNpZ25pbmciKTsKKyAgICAgICAgICAgIHNlY29uZFNpZ25lcgorICAgICAgICAgICAgICAgLnNpZ24oc2Vjb25kU2lnbmVyCisgICAgICAgICAgICAgICAgICAuY3JlYXRlU2VjcmV0S2V5KCJTZWNvbmQgc2lnbmVyIGtleSIuZ2V0Qnl0ZXMoKSkpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJTZWNvbmQgc2lnbmVyOiBGaW5pc2hlZCBzaWduaW5nIik7CisgICAgICAgICB9CisKKyAgICAgICAgIFNpZ25lZEluZm8gczIgPSBzZWNvbmRTaWduZXIuZ2V0U2lnbmVkSW5mbygpOworCisgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHMyLmdldFNpZ25lZENvbnRlbnRMZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiMjIyMjIyMjIyMjIyMjIyMgU2lnbmVkIFJlc291cmNlICIgKyBpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICMjIyMjIyMjIyMjIyMjIyMiKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihuZXcgU3RyaW5nKHMyLmdldFNpZ25lZENvbnRlbnRJdGVtKGkpKSk7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisgICAgICAvLyB0aGlyZCBzaWduZXIgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworICAgICAgeworICAgICAgICAgWE1MU2lnbmF0dXJlIHRoaXJkU2lnbmVyID0KKyAgICAgICAgICAgIG5ldyBYTUxTaWduYXR1cmUoZG9jLCBCYXNlVVJJLCBYTUxTaWduYXR1cmUuQUxHT19JRF9NQUNfSE1BQ19TSEExKTsKKworICAgICAgICAgdGhpcmRTaWduZXIuc2V0SWQoaWQzKTsKKyAgICAgICAgIGNvbnRyYWN0LmFwcGVuZENoaWxkKHRoaXJkU2lnbmVyLmdldEVsZW1lbnQoKSk7CisKKyAgICAgICAgIFRyYW5zZm9ybXMgdHJhbnNmb3JtczMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworICAgICAgICAgWFBhdGhDb250YWluZXIgeHBhdGgzID0gbmV3IFhQYXRoQ29udGFpbmVyKGRvYyk7CisKKyAgICAgICAgIHhwYXRoMy5zZXRYUGF0aE5hbWVzcGFjZUNvbnRleHQoImRzIiwgQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUyk7CisgICAgICAgICB4cGF0aDMuc2V0WFBhdGgoIlxuIiArIHhwMyArICJcbiIpOworICAgICAgICAgdHJhbnNmb3JtczMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhwYXRoMy5nZXRFbGVtZW50UGx1c1JldHVybnMoKSk7CisgICAgICAgICB0aGlyZFNpZ25lci5hZGREb2N1bWVudCgiIiwgdHJhbnNmb3JtczMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMuQUxHT19JRF9ESUdFU1RfU0hBMSk7CisKKyAgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXJkU2lnbmVyLmdldEtleUluZm8oKS5hZGQobmV3IEtleU5hbWUoZG9jLCAiVGhpcmQgc2lnbmVyIGtleSIpKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVGhpcmQgc2lnbmVyOiBTdGFydCBzaWduaW5nIik7CisgICAgICAgICAgICB0aGlyZFNpZ25lcgorICAgICAgICAgICAgICAgLnNpZ24odGhpcmRTaWduZXIKKyAgICAgICAgICAgICAgICAgIC5jcmVhdGVTZWNyZXRLZXkoIlRoaXJkIHNpZ25lciBrZXkiLmdldEJ5dGVzKCkpKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVGhpcmQgc2lnbmVyOiBGaW5pc2hlZCBzaWduaW5nIik7CisgICAgICAgICB9CisKKyAgICAgICAgIFNpZ25lZEluZm8gczMgPSB0aGlyZFNpZ25lci5nZXRTaWduZWRJbmZvKCk7CisKKyAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgczMuZ2V0U2lnbmVkQ29udGVudExlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIyMjIyMjIyMjIyMjIyMjIyBTaWduZWQgUmVzb3VyY2UgIiArIGkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgIyMjIyMjIyMjIyMjIyMjIyIpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG5ldyBTdHJpbmcoczMuZ2V0U2lnbmVkQ29udGVudEl0ZW0oaSkpKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgICAgfQorICAgICAgfQorCisgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICAgIC8vIGZvcnRoIHNpZ25lciAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisgICAgICB7CisgICAgICAgICBYTUxTaWduYXR1cmUgZm9ydGhTaWduZXIgPQorICAgICAgICAgICAgbmV3IFhNTFNpZ25hdHVyZShkb2MsIEJhc2VVUkksIFhNTFNpZ25hdHVyZS5BTEdPX0lEX01BQ19ITUFDX1NIQTEpOworCisgICAgICAgICBmb3J0aFNpZ25lci5zZXRJZCgic2lnNCIpOworICAgICAgICAgY29udHJhY3QuYXBwZW5kQ2hpbGQoZm9ydGhTaWduZXIuZ2V0RWxlbWVudCgpKTsKKworICAgICAgICAgeworCisgICAgICAgICAgICAvLyBmaXJzdCBvZiBhbGwsIGFkZCB0aGUgYmFzaWMgZG9jdW1lbnQgd2l0aG91dCBzaWduYXR1cmVzCisgICAgICAgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXM0ID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKyAgICAgICAgICAgIFhQYXRoQ29udGFpbmVyIHhwYXRoNCA9IG5ldyBYUGF0aENvbnRhaW5lcihkb2MpOworCisgICAgICAgICAgICB4cGF0aDQuc2V0WFBhdGhOYW1lc3BhY2VDb250ZXh0KCJkcyIsIENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMpOworICAgICAgICAgICAgeHBhdGg0LnNldFhQYXRoKCJcbiIgKyAibm90KGFuY2VzdG9yLW9yLXNlbGY6OmRzOlNpZ25hdHVyZSkiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiXG4iKTsKKyAgICAgICAgICAgIHRyYW5zZm9ybXM0LmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4cGF0aDQuZ2V0RWxlbWVudFBsdXNSZXR1cm5zKCkpOworICAgICAgICAgICAgZm9ydGhTaWduZXIuYWRkRG9jdW1lbnQoIiIsIHRyYW5zZm9ybXM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLkFMR09fSURfRElHRVNUX1NIQTEpOworICAgICAgICAgfQorCisgICAgICAgICB7CisKKyAgICAgICAgICAgIC8vIHRoZW4gYWRkIHRoZSBkaWZmZXJlbnQgc2lnbmF0dXJlcworCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgVHJhbnNmb3JtcyB0cmFuc2Zvcm1zNCA9IG5ldyBUcmFuc2Zvcm1zKGRvYyk7CisgICAgICAgICAgICBYUGF0aENvbnRhaW5lciB4cGF0aDQgPSBuZXcgWFBhdGhDb250YWluZXIoZG9jKTsKKworICAgICAgICAgICAgeHBhdGg0LnNldFhQYXRoTmFtZXNwYWNlQ29udGV4dCgiZHMiLCBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TKTsKKyAgICAgICAgICAgIHhwYXRoNC5zZXRYUGF0aCgiXG4iICsgImFuY2VzdG9yLW9yLXNlbGY6OmRzOlNpZ25hdHVyZVtASWQ9JyIgKyBpZDEgKyAiJ10iICsgIlxuIik7CisgICAgICAgICAgICB0cmFuc2Zvcm1zNC5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgsIHhwYXRoNC5nZXRFbGVtZW50UGx1c1JldHVybnMoKSk7CisgICAgICAgICAgICBmb3J0aFNpZ25lci5hZGREb2N1bWVudCgiI3hwb2ludGVyKGlkKCdmaXJzdFNpZ25lcicpKSIsIHRyYW5zZm9ybXM0LCBDb25zdGFudHMuQUxHT19JRF9ESUdFU1RfU0hBMSwgbnVsbCwgImRzOlNpZ25hdHVyZSIpOworICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGZvcnRoU2lnbmVyLmFkZERvY3VtZW50KCIjeHBvaW50ZXIoaWQoJ2ZpcnN0U2lnbmVyJykpIiwgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5BTEdPX0lEX0RJR0VTVF9TSEExLCBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRzOlNpZ25hdHVyZSIpOworICAgICAgICAgfQorCisgICAgICAgICB7CisgICAgICAgICAgICBmb3J0aFNpZ25lci5nZXRLZXlJbmZvKCkuYWRkKG5ldyBLZXlOYW1lKGRvYywgIkZvcnRoIHNpZ25lciBrZXkiKSk7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkZvcnRoIHNpZ25lcjogU3RhcnQgc2lnbmluZyIpOworICAgICAgICAgICAgZm9ydGhTaWduZXIKKyAgICAgICAgICAgICAgIC5zaWduKGZvcnRoU2lnbmVyCisgICAgICAgICAgICAgICAgICAuY3JlYXRlU2VjcmV0S2V5KCJGb3J0aCBzaWduZXIga2V5Ii5nZXRCeXRlcygpKSk7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkZvcnRoIHNpZ25lcjogRmluaXNoZWQgc2lnbmluZyIpOworICAgICAgICAgfQorCisgICAgICAgICBTaWduZWRJbmZvIHM0ID0gZm9ydGhTaWduZXIuZ2V0U2lnbmVkSW5mbygpOworCisgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHM0LmdldFNpZ25lZENvbnRlbnRMZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiMjIyMjIyMjIyMjIyMjIyMgU2lnbmVkIFJlc291cmNlICIgKyBpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiICMjIyMjIyMjIyMjIyMjIyMiKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihuZXcgU3RyaW5nKHM0LmdldFNpZ25lZENvbnRlbnRJdGVtKGkpKSk7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisgICAgICAvLyB3cml0ZSBhd2F5IGZpbGVzCisgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICAgIHsKKyAgICAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZiA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKHNpZ25hdHVyZUZpbGUpOworCisgICAgICAgICBYTUxVdGlscy5vdXRwdXRET01jMTRuV2l0aENvbW1lbnRzKGRvYywgZik7CisgICAgICAgICBmLmNsb3NlKCk7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIldyb3RlIHNpZ25hdHVyZSB0byAiICsgQmFzZVVSSSk7CisgICAgICB9CisgICB9CisKKyAgIHN0YXRpYyB7CisgICAgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTsKKworICAgICAgLy8gb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzLnNldFNpZ25hdHVyZVNwZWNOU3ByZWZpeCgiIik7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3NpZ25hdHVyZS9jb250cmFjdC9UaHJlZVNpZ25lckNvbnRyYWN0VmVyaWZ5LmphdmEgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3NpZ25hdHVyZS9jb250cmFjdC9UaHJlZVNpZ25lckNvbnRyYWN0VmVyaWZ5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzU2NWNkOAotLS0gL2Rldi9udWxsCisrKyBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvc2lnbmF0dXJlL2NvbnRyYWN0L1RocmVlU2lnbmVyQ29udHJhY3RWZXJpZnkuamF2YQpAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2FtcGxlcy5zaWduYXR1cmUuY29udHJhY3Q7CisKKworCitpbXBvcnQgamF2YS5pby5GaWxlOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLlNhbXBsZVV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5YTUxVdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQVBJOworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7CisKKworLyoqCisgKgorICogQGF1dGhvciBSZW5lIEtvbGxtb3JnZW4gPFJlbmUuS29sbG1vcmdlbkBzb2Z0d2FyZWFnLmNvbT4KKyAqLworcHVibGljIGNsYXNzIFRocmVlU2lnbmVyQ29udHJhY3RWZXJpZnkgeworCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWluCisgICAgKgorICAgICogQHBhcmFtIHVudXNlZAorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIHVudXNlZFtdKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPQorICAgICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCisgICAgICBkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisgICAgICBkYmYuc2V0QXR0cmlidXRlKCJodHRwOi8veG1sLm9yZy9zYXgvZmVhdHVyZXMvbmFtZXNwYWNlcyIsIEJvb2xlYW4uVFJVRSk7CisKKyAgICAgIHRyeSB7CisKKyAgICAgICAgIC8vRmlsZSBzaWduYXR1cmVGaWxlID0gbmV3IEZpbGUoImNvbGxlY3RhYmxlU2lnbmF0dXJlLnhtbCIpOworICAgICAgICAgRmlsZSBzaWduYXR1cmVGaWxlID0gbmV3IEZpbGUoInRocmVlU2lnbmVyQ29udHJhY3QueG1sIik7CisgICAgICAgICBTdHJpbmcgQmFzZVVSSSA9IHNpZ25hdHVyZUZpbGUudG9VUkwoKS50b1N0cmluZygpOworCisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRyeSB0byB2ZXJpZnkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc2lnbmF0dXJlRmlsZS50b1VSTCgpLnRvU3RyaW5nKCkpOworCisgICAgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisKKyAgICAgICAgIGRiLnNldEVycm9ySGFuZGxlcihuZXcgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMKKyAgICAgICAgICAgIC5JZ25vcmVBbGxFcnJvckhhbmRsZXIoKSk7CisKKyAgICAgICAgIG9yZy53M2MuZG9tLkRvY3VtZW50IGRvYyA9CisgICAgICAgICAgICBkYi5wYXJzZShuZXcgamF2YS5pby5GaWxlSW5wdXRTdHJlYW0oc2lnbmF0dXJlRmlsZSkpOworICAgICAgICAgRWxlbWVudCBuc2NvbnRleHQgPSBTYW1wbGVVdGlscy5jcmVhdGVEU2N0eChkb2MsICJkcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMpOworICAgICAgICAgTm9kZUxpc3Qgc2lnbmF0dXJlRWxlbXMgPSBYUGF0aEFQSS5zZWxlY3ROb2RlTGlzdChkb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvL2RzOlNpZ25hdHVyZSIsIG5zY29udGV4dCk7CisKKyAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2lnbmF0dXJlRWxlbXMuZ2V0TGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgRWxlbWVudCBzaWdFbGVtZW50ID0gKEVsZW1lbnQpIHNpZ25hdHVyZUVsZW1zLml0ZW0oaSk7CisgICAgICAgICAgICBYTUxTaWduYXR1cmUgc2lnbmF0dXJlID0gbmV3IFhNTFNpZ25hdHVyZShzaWdFbGVtZW50LCBCYXNlVVJJKTsKKworICAgICAgICAgICAgLy9ieXRlW10gc2VjcmV0S2V5ID0gInNlY3JldFZhbHVlIi5nZXRCeXRlcygpOworICAgICAgICAgICAgRWxlbWVudCBrZXlOYW1lID0KKyAgICAgICAgICAgICAgIChFbGVtZW50KSBzaWdFbGVtZW50CisgICAgICAgICAgICAgICAgICAuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TLCAiS2V5TmFtZSIpCisgICAgICAgICAgICAgICAgICAgICAuaXRlbSgwKTsKKyAgICAgICAgICAgIFN0cmluZyBrZXlWYWx1ZSA9IGtleU5hbWUuZ2V0Rmlyc3RDaGlsZCgpLmdldE5vZGVWYWx1ZSgpOworCisgICAgICAgICAgICBTeXN0ZW0ub3V0CisgICAgICAgICAgICAgICAucHJpbnRsbigiVGhlIHNpZ25hdHVyZSBudW1iZXIgIiArIChpICsgMSkgKyAiIGlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgKHNpZ25hdHVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNoZWNrU2lnbmF0dXJlVmFsdWUoc2lnbmF0dXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY3JlYXRlU2VjcmV0S2V5KGtleVZhbHVlLmdldEJ5dGVzKCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAidmFsaWQgKGdvb2QpIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiaW52YWxpZCAhISEhISAoYmFkKSIpKTsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgIFNpZ25lZEluZm8gcyA9IHNpZ25hdHVyZS5nZXRTaWduZWRJbmZvKCk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgcy5nZXRTaWduZWRDb250ZW50TGVuZ3RoKCk7IGorKykgeworICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIjIyMjIyMjIyMjIyMjIyMjIFNpZ25lZCBSZXNvdXJjZSAiICsgaSArICIvIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgaiArICIgIyMjIyMjIyMjIyMjIyMjIyIpOworICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG5ldyBTdHJpbmcocy5nZXRTaWduZWRDb250ZW50SXRlbShqKSkpOworICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqLworICAgICAgICAgfQorICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICBleC5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgIH0KKyAgIH0KKworICAgc3RhdGljIHsKKyAgICAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaW5pdCgpOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy90cmFuc2Zvcm1zL1NhbXBsZVRyYW5zZm9ybUNoYWluaW5nLmphdmEgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3RyYW5zZm9ybXMvU2FtcGxlVHJhbnNmb3JtQ2hhaW5pbmcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODI2MzYzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy90cmFuc2Zvcm1zL1NhbXBsZVRyYW5zZm9ybUNoYWluaW5nLmphdmEKQEAgLTAsMCArMSwxMDcgQEAKKworLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2FtcGxlcy50cmFuc2Zvcm1zOworCisKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmVJbnB1dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLlNhbXBsZVV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLmFwYWNoZS54cGF0aC5YUGF0aEFQSTsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworCisKKy8qKgorICogVGhpcyBjbGFzcyBkZW1vbnN0cmF0ZXMgdGhlIHVzZSBvZiBhIFRyYW5zZm9ybSBmb3IgWFNMVC4gVGhlCisgKiA8Q09ERT54c2w6c3R5bGVzaGVldDwvQ09ERT4gaXMgZGlyZWN0bHkgZW1iZWRkZWQgaW4gdGhlIDxDT0RFPmRzOlRyYW5zZm9ybTwvQ09ERT4sCisgKiBzbyB0aGUge0BsaW5rIFRyYW5zZm9ybX0gb2JqZWN0IGlzIGNyZWF0ZWQgYnkgdXNpbmcgdGhlIEVsZW1lbnQuCisgKgorICogQGF1dGhvciBDaHJpc3RpYW4gR2V1ZXItUG9sbG1hbm4KKyAqIEB2ZXJzaW9uICVJJSwgJUclCisgKi8KK3B1YmxpYyBjbGFzcyBTYW1wbGVUcmFuc2Zvcm1DaGFpbmluZyB7CisKKyAgIC8qKgorICAgICogTWV0aG9kIG1haW4KKyAgICAqCisgICAgKiBAcGFyYW0gYXJncworICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAvL0otCisgICAgICBTdHJpbmcgaW5wdXRTdHIgPQorICAgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiPz4iICsgIlxuIgorICAgICAgKyAiPENsYXNzPiIgKyAiXG4iCisgICAgICArICIgICA8QkFTRTY0PiIgKyAiXG4iCisgICAgICArICIgICAgICAgUEdOdmJuUmhhVzVsY2o0S0lDQWdQR1UrU0dWc2JHOHNJRHdoTFMwZ1kyOXRiV1Z1ZENBdExUNGdkMjl5YkdRaFBDOWxQZ29nSUNBOCIgKyAiXG4iCisgICAgICArICIgICAgICAgVDNKa1pYSWdUbUZ0WlQwblZFbE9RVTFKUms5U1RVVlRKeUI0Yld4dWN6MG5hSFIwY0RvdkwzTm1aR1puTHljK0NpQWdJQ0FnSUR4RyIgKyAiXG4iCisgICAgICArICIgICAgICAgWVcxcGJIa2dUbUZ0WlQwblZFbE9RVTFKUkVGRkp6NEtJQ0FnSUNBZ0lDQWdQRk53WldOcFpYTWdVMk5wWlc1MGFXWnBZMTlPWVcxbCIgKyAiXG4iCisgICAgICArICIgICAgICAgUFNkRGNubHdkSFZ5Wld4c2RYTWdZbTkxWTJGeVpHa25QbE5zWVhSNUxXSnlaV0Z6ZEdWa0lGUnBibUZ0YjNVdVBDOVRjR1ZqYVdWeiIgKyAiXG4iCisgICAgICArICIgICAgICAgUGdvZ0lDQWdJQ0E4TDBaaGJXbHNlVDRLSUNBZ1BDOVBjbVJsY2o0S0lDQWdQRTl5WkdWeUlFNWhiV1U5SjFCUFJFbERTVkJGUkVsRyIgKyAiXG4iCisgICAgICArICIgICAgICAgVDFKTlJWTW5MejRLUEM5amIyNTBZV2x1WlhJK0NnPT0iICsgIlxuIgorICAgICAgKyAiICAgPC9CQVNFNjQ+IiArICJcbiIKKyAgICAgICsgIjxTaWduYXR1cmUgSWQ9J1NpZ25hdHVyZVRvQmVPbWl0dGVkJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyc+IiArICJcbiIKKyAgICAgICsgIiAgICAgPFNpZ25lZEluZm8+IiArICJcbiIKKyAgICAgICsgIiAgICAgICA8UmVmZXJlbmNlIFVSST0nJz4iICsgIlxuIgorICAgICAgKyAiICAgICAgICAgPFRyYW5zZm9ybXM+IiArICJcbiIKKyAgICAgICsgIiAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09J2h0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Jz5cbiIKKyAgICAgICsgIiAgICAgICAgICAgICA8IS0tIEV4Y2x1ZGUgYWxsIHNpZ25hdHVyZXMgLS0+XG4iCisgICAgICArICIgICAgICAgICAgICAgICA8ZHM6WFBhdGggeG1sbnM6ZHM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMnPlxuIgorICAgICAgKyAiICAgICAgICAgICAgICAgICBhbmNlc3Rvcjo6QkFTRTY0IgorICAgICAgKyAiICAgICAgICAgICAgICAgPC9kczpYUGF0aD5cbiIKKyAgICAgICsgIiAgICAgICAgICAgPC9UcmFuc2Zvcm0+XG4iCisgICAgICArICIgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjYmFzZTY0JyAvPlxuIgorICAgICAgKyAiICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0naHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYnPlxuIgorICAgICAgKyAiICAgICAgICAgICAgICAgPGRzOlhQYXRoIHhtbG5zOmRzPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjJz5cbiIKKyAgICAgICsgIiAgICAgICAgICAgICAgICAgbm90KHNlbGY6OmNvbnRhaW5lcikgICAgICIKKyAgICAgICsgIiAgICAgICAgICAgICAgIDwvZHM6WFBhdGg+XG4iCisgICAgICArICIgICAgICAgICAgIDwvVHJhbnNmb3JtPlxuIgorICAgICAgKyAiICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0naHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUnIC8+XG4iCisgICAgICArICIgICAgICAgICA8L1RyYW5zZm9ybXM+IiArICJcbiIKKyAgICAgICsgIiAgICAgICA8L1JlZmVyZW5jZT4iICsgIlxuIgorICAgICAgKyAiICAgICA8L1NpZ25lZEluZm8+IiArICJcbiIKKyAgICAgICsgIiAgIDwvU2lnbmF0dXJlPiIKKyAgICAgICsgIjwvQ2xhc3M+IiArICJcbiIKKyAgICAgIDsKKyAgICAgIC8vSisKKyAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0KKyAgICAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKworICAgICAgZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworCisgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgICBvcmcudzNjLmRvbS5Eb2N1bWVudCBkb2MgPQorICAgICAgICAgZGIucGFyc2UobmV3IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW0oaW5wdXRTdHIuZ2V0Qnl0ZXMoKSkpOworCisgICAgICAvLyBjYXRjaCB0aGUgZHM6VHJhbnNmb3JtcworICAgICAgRWxlbWVudCBuc2NvbnRleHQgPSBTYW1wbGVVdGlscy5jcmVhdGVEU2N0eChkb2MsICJkcyIsIENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMpOworCisgICAgICBFbGVtZW50IHRyYW5zZm9ybXNFbGVtZW50ID0gKEVsZW1lbnQpIFhQYXRoQVBJLnNlbGVjdFNpbmdsZU5vZGUoZG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvL2RzOlRyYW5zZm9ybXMiLCBuc2NvbnRleHQpOworICAgICAgVHJhbnNmb3JtcyB0cmFuc2Zvcm1zID0gbmV3IFRyYW5zZm9ybXModHJhbnNmb3Jtc0VsZW1lbnQsICJtZW1vcnk6Ly8iKTsKKyAgICAgIFhNTFNpZ25hdHVyZUlucHV0IGlucHV0ID0gbmV3IFhNTFNpZ25hdHVyZUlucHV0KGRvYyk7CisKKyAgICAgIC8vIGV4ZWN1dGUgVHJhbnNmb3JtcworICAgICAgWE1MU2lnbmF0dXJlSW5wdXQgcmVzdWx0ID0gdHJhbnNmb3Jtcy5wZXJmb3JtVHJhbnNmb3JtcyhpbnB1dCk7CisKKyAgICAgIC8vIG91dHB1dCByZXN1bHQKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihuZXcgU3RyaW5nKHJlc3VsdC5nZXRCeXRlcygpKSk7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3RyYW5zZm9ybXMvU2FtcGxlVHJhbnNmb3JtRW52ZWxvcGVkU2lnbmF0dXJlLmphdmEgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3RyYW5zZm9ybXMvU2FtcGxlVHJhbnNmb3JtRW52ZWxvcGVkU2lnbmF0dXJlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJiN2E2NAotLS0gL2Rldi9udWxsCisrKyBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvdHJhbnNmb3Jtcy9TYW1wbGVUcmFuc2Zvcm1FbnZlbG9wZWRTaWduYXR1cmUuamF2YQpAQCAtMCwwICsxLDk4IEBACisKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMudHJhbnNmb3JtczsKKworCisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlSW5wdXQ7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2FtcGxlcy5TYW1wbGVVdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybXM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueHBhdGguWFBhdGhBUEk7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworCisKKy8qKgorICogVGhpcyBjbGFzcyBkZW1vbnN0cmF0ZXMgdGhlIHVzZSBvZiBhIFRyYW5zZm9ybSBmb3JFbnZlbG9wZWQgU2lnbmF0dXJlLgorICoKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEdldWVyLVBvbGxtYW5uCisgKiBAdmVyc2lvbiAlSSUsICVHJQorICovCitwdWJsaWMgY2xhc3MgU2FtcGxlVHJhbnNmb3JtRW52ZWxvcGVkU2lnbmF0dXJlIHsKKworICAgLyoqCisgICAgKiBNZXRob2QgbWFpbgorICAgICoKKyAgICAqIEBwYXJhbSBhcmdzCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgIC8vSi0KKyAgICAgIFN0cmluZyBpbnB1dFN0ciA9CisgICAgICAgICI8P3htbCB2ZXJzaW9uPVwiMS4wXCI/PiIgKyAiXG4iCisgICAgICArICI8RG9jdW1lbnQgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMnPiIgKyAiXG4iCisgICAgICArICIgICA8RGF0YSBhdHRyPSdhdHRyVmFsdWUnPnRleHQgaW4gRGF0YTwvRGF0YT4iICsgIlxuIgorICAgICAgKyAiPFNpZ25hdHVyZSBJZD0nU2lnbmF0dXJlVG9CZU9taXR0ZWQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjJz4iICsgIlxuIgorICAgICAgKyAiICAgICA8U2lnbmVkSW5mbz4iICsgIlxuIgorICAgICAgKyAiICAgICAgIDxSZWZlcmVuY2U+IiArICJcbiIKKyAgICAgICsgIiAgICAgICAgIDxUcmFuc2Zvcm1zPiIgKyAiXG4iCisgICAgICAvLyArICIgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSdodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHMnIC8+IiArICJcbiIKKyAgICAgICsgIiAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlJyAvPiIgKyAiXG4iCisgICAgICArICIgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSdodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHMnIC8+IiArICJcbiIKKyAgICAgICsgIiAgICAgICAgIDwvVHJhbnNmb3Jtcz4iICsgIlxuIgorICAgICAgKyAiICAgICAgIDwvUmVmZXJlbmNlPiIgKyAiXG4iCisgICAgICArICIgICAgIDwvU2lnbmVkSW5mbz4iICsgIlxuIgorICAgICAgKyAiICAgPC9TaWduYXR1cmU+IgorICAgICAgKyAiICAgPFNpZ25hdHVyZSBJZD0nVmlzaWJsZVNpZ25hdHVyZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMnPiIgKyAiXG4iCisgICAgICArICIgICAgIDxTaWduZWRJbmZvIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjJz4iICsgIlxuIgorICAgICAgKyAiICAgICAgIDxSZWZlcmVuY2UgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMnPiIgKyAiXG4iCisgICAgICArICIgICAgICAgICA8VHJhbnNmb3JtcyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyc+IiArICJcbiIKKyAgICAgICsgIiAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlJyAvPiIgKyAiXG4iCisgICAgICArICIgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSdodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHMnIC8+IiArICJcbiIKKyAgICAgICsgIiAgICAgICAgIDwvVHJhbnNmb3Jtcz4iICsgIlxuIgorICAgICAgKyAiICAgICAgIDwvUmVmZXJlbmNlPiIgKyAiXG4iCisgICAgICArICIgICAgIDwvU2lnbmVkSW5mbz4iICsgIlxuIgorICAgICAgKyAiICAgPC9TaWduYXR1cmU+IiArICJcbiIKKyAgICAgICsgIjwvRG9jdW1lbnQ+IiArICJcbiIKKyAgICAgIDsKKyAgICAgIC8vSisKKyAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0KKyAgICAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKworICAgICAgZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworCisgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgICBvcmcudzNjLmRvbS5Eb2N1bWVudCBkb2MgPQorICAgICAgICAgZGIucGFyc2UobmV3IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW0oaW5wdXRTdHIuZ2V0Qnl0ZXMoKSkpOworICAgICAgRWxlbWVudCBuc2NvbnRleHQgPSBTYW1wbGVVdGlscy5jcmVhdGVEU2N0eChkb2MsICJkcyIsIENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMpOworCisgICAgICBFbGVtZW50IHRyYW5zZm9ybXNFbGVtID0gKEVsZW1lbnQpIFhQYXRoQVBJLnNlbGVjdFNpbmdsZU5vZGUoCisgICAgICAgICBkb2MsICIvL2RzOlNpZ25hdHVyZVtASWQ9J1NpZ25hdHVyZVRvQmVPbWl0dGVkJ10vL2RzOlRyYW5zZm9ybXMiLAorICAgICAgICAgbnNjb250ZXh0KTsKKyAgICAgIFRyYW5zZm9ybXMgdHJhbnNmb3JtcyA9IG5ldyBUcmFuc2Zvcm1zKHRyYW5zZm9ybXNFbGVtLCAibWVtb3J5Oi8vIik7CisgICAgICBYTUxTaWduYXR1cmVJbnB1dCBpbnB1dCA9IG5ldyBYTUxTaWduYXR1cmVJbnB1dCgoTm9kZSkgZG9jKTsKKworICAgICAgLy8gaW5wdXQuc2V0Q2Fub25pY2FsaXplclVSSShDYW5vbmljYWxpemVyLkFMR09fSURfQzE0Tl9XSVRIX0NPTU1FTlRTKTsKKworICAgICAgWE1MU2lnbmF0dXJlSW5wdXQgcmVzdWx0ID0gdHJhbnNmb3Jtcy5wZXJmb3JtVHJhbnNmb3JtcyhpbnB1dCk7CisKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihuZXcgU3RyaW5nKHJlc3VsdC5nZXRCeXRlcygpKSk7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3RyYW5zZm9ybXMvU2FtcGxlVHJhbnNmb3JtTm9uZS5qYXZhIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy90cmFuc2Zvcm1zL1NhbXBsZVRyYW5zZm9ybU5vbmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDQ4MzdkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy90cmFuc2Zvcm1zL1NhbXBsZVRyYW5zZm9ybU5vbmUuamF2YQpAQCAtMCwwICsxLDcyIEBACisKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMudHJhbnNmb3JtczsKKworCisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlSW5wdXQ7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm07CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1TcGk7CisKKworLyoqCisgKiBJbXBsZW1lbnRzIGEgbnVsbCB0cmFuc2Zvcm0gd2hpY2ggbGVhdmVkIHRoZSBpbnB1dCB1bm1vZGlmaWVkLgorICoKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEdldWVyLVBvbGxtYW5uCisgKi8KK3B1YmxpYyBjbGFzcyBTYW1wbGVUcmFuc2Zvcm1Ob25lIGV4dGVuZHMgVHJhbnNmb3JtU3BpIHsKKworICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKAorICAgICAgICAgICAgICAgICAgICBTYW1wbGVUcmFuc2Zvcm1Ob25lLmNsYXNzLmdldE5hbWUoKSk7CisKKyAgIC8qKiBGaWVsZCBpbXBsZW1lbnRlZFRyYW5zZm9ybVVSSSAqLworICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgaW1wbGVtZW50ZWRUcmFuc2Zvcm1VUkkgPQorICAgICAgImh0dHA6Ly93d3cueG1sc2VjdXJpdHkub3JnL05TL1RyYW5zZm9ybXMjbm9uZSI7CisKKyAgIC8qKgorICAgICogTWV0aG9kIGVuZ2luZUdldFVSSQorICAgICoKKyAgICAqCisgICAgKi8KKyAgIHByb3RlY3RlZCBTdHJpbmcgZW5naW5lR2V0VVJJKCkgeworICAgICAgcmV0dXJuIFNhbXBsZVRyYW5zZm9ybU5vbmUuaW1wbGVtZW50ZWRUcmFuc2Zvcm1VUkk7CisgICB9CisKKyAgIC8vSi0KKyAgIHB1YmxpYyBib29sZWFuIHdhbnRzT2N0ZXRTdHJlYW0gKCkgICB7IHJldHVybiB0cnVlOyB9CisgICBwdWJsaWMgYm9vbGVhbiB3YW50c05vZGVTZXQgKCkgICAgICAgeyByZXR1cm4gdHJ1ZTsgfQorICAgcHVibGljIGJvb2xlYW4gcmV0dXJuc09jdGV0U3RyZWFtICgpIHsgcmV0dXJuIHRydWU7IH0KKyAgIHB1YmxpYyBib29sZWFuIHJldHVybnNOb2RlU2V0ICgpICAgICB7IHJldHVybiB0cnVlOyB9CisgICAvL0orCisKKyAgIC8qKgorICAgICogTWV0aG9kIGVuZ2luZVBlcmZvcm1UcmFuc2Zvcm0KKyAgICAqCisgICAgKiBAcGFyYW0gaW5wdXQKKyAgICAqCisgICAgKi8KKyAgIHByb3RlY3RlZCBYTUxTaWduYXR1cmVJbnB1dCBlbmdpbmVQZXJmb3JtVHJhbnNmb3JtKFhNTFNpZ25hdHVyZUlucHV0IGlucHV0LCBUcmFuc2Zvcm0gX3RyYW5zZm9ybU9iamVjdCkgeworICAgICAgcmV0dXJuIGlucHV0OworICAgfQorCisgICBzdGF0aWMgeworICAgICAgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuSW5pdC5pbml0KCk7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3RyYW5zZm9ybXMvU2FtcGxlVHJhbnNmb3JtWFBhdGguamF2YSBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvdHJhbnNmb3Jtcy9TYW1wbGVUcmFuc2Zvcm1YUGF0aC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlOTc4MzUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3RyYW5zZm9ybXMvU2FtcGxlVHJhbnNmb3JtWFBhdGguamF2YQpAQCAtMCwwICsxLDEwMCBAQAorCisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLnRyYW5zZm9ybXM7CisKKworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZUlucHV0OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtczsKKworCisvKioKKyAqIFRoaXMgY2xhc3MgZGVtb25zdHJhdGVzIHRoZSB1c2Ugb2YgYSBUcmFuc2Zvcm0gZm9yIFhTTFQuIFRoZQorICogPENPREU+eHNsOnN0eWxlc2hlZXQ8L0NPREU+IGlzIGRpcmVjdGx5IGVtYmVkZGVkIGluIHRoZSA8Q09ERT5kczpUcmFuc2Zvcm08L0NPREU+LAorICogc28gdGhlIHtAbGluayBUcmFuc2Zvcm19IG9iamVjdCBpcyBjcmVhdGVkIGJ5IHVzaW5nIHRoZSBFbGVtZW50LgorICoKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEdldWVyLVBvbGxtYW5uCisgKiBAdmVyc2lvbiAlSSUsICVHJQorICovCitwdWJsaWMgY2xhc3MgU2FtcGxlVHJhbnNmb3JtWFBhdGggeworCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWluCisgICAgKgorICAgICogQHBhcmFtIGFyZ3MKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmdzW10pIHRocm93cyBFeGNlcHRpb24geworICAgICAgLy9KLQorICAgICAgU3RyaW5nIHRyYW5zZm9ybVN0ciA9CisgICAgICAgICI8P3htbCB2ZXJzaW9uPScxLjAnPz5cbiIKKyAgICAgICsgIjxUcmFuc2Zvcm1zIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjJz5cbiIKKyAgICAgICsgIjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSdodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14cGF0aC0xOTk5MTExNic+XG4iCisgICAgICAvLyArICIgICA8ZHM6WFBhdGggeG1sbnM6bWF0Y2g9J2h0dHA6Ly9zZmRmZy8nPihzZWxmOjptYXRjaDpPcmRlciB8IHNlbGY6OnRleHQoKVtzdHJpbmcocGFyZW50OjplKT1cIkhlbGxvLCAgd29ybGQhXCJdKTwvZHM6WFBhdGg+XG4iCisgICAgICAvLyArICIgICA8ZHM6WFBhdGg+Ly9AKjwvZHM6WFBhdGg+XG4iCisgICAgICArICIgICA8IS0tIEV4Y2x1ZGUgYWxsIHNpZ25hdHVyZXMgLS0+XG4iCisgICAgICAvLyArICIgICA8ZHM6WFBhdGggeG1sbnM6ZHM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMnPm5vdChhbmNlc3Rvci1vci1zZWxmOjpkczpTaWduYXR1cmUpPC9kczpYUGF0aD5cbiIKKyAgICAgICsgIiAgIDxkczpYUGF0aCB4bWxuczpkcz0naHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyc+c2VsZjo6dGV4dCgpW2FuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKT0vQ2xhc3MvZVsxXV08L2RzOlhQYXRoPlxuIgorICAgICAgKyAiPC9UcmFuc2Zvcm0+XG4iCisgICAgICArICI8L1RyYW5zZm9ybXM+XG4iCisgICAgICA7CisKKyAgICAgIFN0cmluZyBpbnB1dFN0ciA9CisgICAgICAgICI8P3htbCB2ZXJzaW9uPVwiMS4wXCI/PiIgKyAiXG4iCisgICAgICArICI8Q2xhc3M+IiArICJcbiIKKyAgICAgICsgIiAgIDxlPkhlbGxvLCA8IS0tIGNvbW1lbnQgLS0+IHdvcmxkITwvZT4iICsgIlxuIgorICAgICAgKyAiICAgPE9yZGVyIE5hbWU9J1RJTkFNSUZPUk1FUycgeG1sbnM9J2h0dHA6Ly9zZmRmZy8nPiIgKyAiXG4iCisgICAgICArICIgICAgICA8RmFtaWx5IE5hbWU9J1RJTkFNSURBRSc+IiArICJcbiIKKyAgICAgICsgIiAgICAgICAgIDxTcGVjaWVzIFNjaWVudGlmaWNfTmFtZT0nQ3J5cHR1cmVsbHVzIGJvdWNhcmRpJz5TbGF0eS1icmVhc3RlZCBUaW5hbW91LjwvU3BlY2llcz4iICsgIlxuIgorICAgICAgKyAiICAgICAgPC9GYW1pbHk+IiArICJcbiIKKyAgICAgICsgIiAgIDwvT3JkZXI+IiArICJcbiIKKyAgICAgICsgIiAgIDxPcmRlciBOYW1lPSdQT0RJQ0lQRURJRk9STUVTJy8+IiArICJcbiIKKyAgICAgICsgIjxTaWduYXR1cmUgSWQ9J1NpZ25hdHVyZVRvQmVPbWl0dGVkJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyc+IiArICJcbiIKKyAgICAgICsgIiAgICAgPFNpZ25lZEluZm8+IiArICJcbiIKKyAgICAgICsgIiAgICAgICA8UmVmZXJlbmNlPiIgKyAiXG4iCisgICAgICArICIgICAgICAgICA8VHJhbnNmb3Jtcz4iICsgIlxuIgorICAgICAgKyAiICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0naHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUnIC8+IiArICJcbiIKKy8vICAgICAgICsgIiAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09J2h0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1I1dpdGhDb21tZW50cycgLz4iICsgIlxuIgorICAgICAgKyAiICAgICAgICAgPC9UcmFuc2Zvcm1zPiIgKyAiXG4iCisgICAgICArICIgICAgICAgPC9SZWZlcmVuY2U+IiArICJcbiIKKyAgICAgICsgIiAgICAgPC9TaWduZWRJbmZvPiIgKyAiXG4iCisgICAgICArICIgICA8L1NpZ25hdHVyZT4iCisgICAgICArICI8L0NsYXNzPiIgKyAiXG4iCisgICAgICA7CisgICAgICAvL0orCisgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9CisgICAgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisKKyAgICAgIGRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKworICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyIGRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOworICAgICAgb3JnLnczYy5kb20uRG9jdW1lbnQgZG9jID0KKyAgICAgICAgIGRiLnBhcnNlKG5ldyBqYXZhLmlvLkJ5dGVBcnJheUlucHV0U3RyZWFtKHRyYW5zZm9ybVN0ci5nZXRCeXRlcygpKSk7CisKKyAgICAgIFN0cmluZyBCYXNlVVJJID0gbnVsbDsKKyAgICAgIFRyYW5zZm9ybXMgdHJhbnNmb3JtcyA9IG5ldyBUcmFuc2Zvcm1zKGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKSwgQmFzZVVSSSk7CisKKyAgICAgIFhNTFNpZ25hdHVyZUlucHV0IGlucHV0ID0gbmV3IFhNTFNpZ25hdHVyZUlucHV0KGlucHV0U3RyLmdldEJ5dGVzKCkpOworCisgICAgICAvLyBpbnB1dC5zZXRDYW5vbmljYWxpemVyVVJJKENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX1dJVEhfQ09NTUVOVFMpOworCisgICAgICBYTUxTaWduYXR1cmVJbnB1dCByZXN1bHQgPSB0cmFuc2Zvcm1zLnBlcmZvcm1UcmFuc2Zvcm1zKGlucHV0KTsKKworICAgICAgU3lzdGVtLm91dC5wcmludGxuKG5ldyBTdHJpbmcocmVzdWx0LmdldEJ5dGVzKCkpKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvdHJhbnNmb3Jtcy9TYW1wbGVUcmFuc2Zvcm1YUGF0aDJGaWx0ZXIuamF2YSBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvdHJhbnNmb3Jtcy9TYW1wbGVUcmFuc2Zvcm1YUGF0aDJGaWx0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjczODBmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy90cmFuc2Zvcm1zL1NhbXBsZVRyYW5zZm9ybVhQYXRoMkZpbHRlci5qYXZhCkBAIC0wLDAgKzEsMjE4IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zYW1wbGVzLnRyYW5zZm9ybXM7CisKKworCitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOworCitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyOworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3Rvcnk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkNhbm9uaWNhbGl6ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybXM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5wYXJhbXMuWFBhdGgyRmlsdGVyQ29udGFpbmVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5KYXZhVXRpbHM7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKKworCisvKioKKyAqIFNhbXBsZSBmb3IgdGhlIDxJPlhNTCBTaWduYXR1cmUgWFBhdGggRmlsdGVyIHYyLjA8L0k+CisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICogQHNlZSA8QSBIUkVGPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWxkc2lnLWZpbHRlcjIvIj5YUGF0aCBGaWx0ZXIgdjIuMCAoVFIpPC9BPgorICogQHNlZSA8QSBIUkVGPWh0dHA6Ly93d3cudzMub3JnL1NpZ25hdHVyZS9EcmFmdHMveG1sZHNpZy14ZmlsdGVyMi8iPlhQYXRoIEZpbHRlciB2Mi4wIChlZGl0b3JzIGNvcHkpPC9BPgorICovCitwdWJsaWMgY2xhc3MgU2FtcGxlVHJhbnNmb3JtWFBhdGgyRmlsdGVyIHsKKworICAgLyoqCisgICAgKiBNZXRob2QgbWFpbgorICAgICoKKyAgICAqIEBwYXJhbSBhcmdzCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuSW5pdC5pbml0KCk7CisKKyAgICAgIGJvb2xlYW4gdmVyYm9zZSA9IHRydWU7CisKKyAgICAgIGNyZWF0ZSgid2l0aENvbW1lbnRzLnhtbCIsIHRydWUsIHZlcmJvc2UpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgY3JlYXRlKCJvbWl0Q29tbWVudHMueG1sIiwgZmFsc2UsIHZlcmJvc2UpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgY2hlY2soIndpdGhDb21tZW50cy54bWwiKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgY3JlYXRlCisgICAgKgorICAgICogQHBhcmFtIGZpbGVuYW1lCisgICAgKiBAcGFyYW0gd2l0aENvbW1lbnRzCisgICAgKiBAcGFyYW0gdmVyYm9zZQorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIGNyZWF0ZSgKKyAgICAgICAgICAgU3RyaW5nIGZpbGVuYW1lLCBib29sZWFuIHdpdGhDb21tZW50cywgYm9vbGVhbiB2ZXJib3NlKQorICAgICAgICAgICAgICB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisKKyAgICAgIGRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKworICAgICAgRG9jdW1lbnRCdWlsZGVyIGRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOworICAgICAgLy9KLQorICAgICAgU3RyaW5nIGlucHV0RG9jID0KKyI8RG9jdW1lbnQ+XG4iICsKKyIgICAgIDxUb0JlU2lnbmVkPlxuIiArCisiICAgICAgIDwhLS0gY29tbWVudCAtLT5cbiIgKworIiAgICAgICA8RGF0YSAvPlxuIiArCisiICAgICAgIDxOb3RUb0JlU2lnbmVkPlxuIiArCisiICAgICAgICAgPFJlYWxseVRvQmVTaWduZWQ+XG4iICsKKyIgICAgICAgICAgIDwhLS0gY29tbWVudCAtLT5cbiIgKworIiAgICAgICAgICAgPERhdGEgLz5cbiIgKworIiAgICAgICAgIDwvUmVhbGx5VG9CZVNpZ25lZD5cbiIgKworIiAgICAgICA8L05vdFRvQmVTaWduZWQ+XG4iICsKKyIgICAgIDwvVG9CZVNpZ25lZD5cbiIgKworIiAgICAgPFRvQmVTaWduZWQ+XG4iICsKKyIgICAgICAgPERhdGEgLz5cbiIgKworIiAgICAgICA8Tm90VG9CZVNpZ25lZD5cbiIgKworIiAgICAgICAgIDxEYXRhIC8+XG4iICsKKyIgICAgICAgPC9Ob3RUb0JlU2lnbmVkPlxuIiArCisiICAgICA8L1RvQmVTaWduZWQ+XG4iICsKKyI8L0RvY3VtZW50PiI7CisgICAgICAvL0orCisgICAgICBEb2N1bWVudCBkb2MgPSBkYi5wYXJzZShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oaW5wdXREb2MuZ2V0Qnl0ZXMoKSkpOworICAgICAgWE1MU2lnbmF0dXJlIHNpZyA9IG5ldyBYTUxTaWduYXR1cmUoZG9jLCBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MU2lnbmF0dXJlLkFMR09fSURfTUFDX0hNQUNfU0hBMSk7CisKKyAgICAgIGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKS5hcHBlbmRDaGlsZChzaWcuZ2V0RWxlbWVudCgpKTsKKyAgICAgIGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuIikpOworCisgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICBTdHJpbmcgZmlsdGVyc1tdW10gPSB7e1hQYXRoMkZpbHRlckNvbnRhaW5lci5JTlRFUlNFQ1QsICIvL1RvQmVTaWduZWQifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7WFBhdGgyRmlsdGVyQ29udGFpbmVyLlNVQlRSQUNULCAgIi8vTm90VG9CZVNpZ25lZCJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtYUGF0aDJGaWx0ZXJDb250YWluZXIuVU5JT04sICAgICAiLy9SZWFsbHlUb0JlU2lnbmVkIn19OworICAgICAgLy9KLQorCisgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIsIFhQYXRoMkZpbHRlckNvbnRhaW5lci5uZXdJbnN0YW5jZXMoZG9jLCBmaWx0ZXJzKSk7CisgICAgICBpZiAod2l0aENvbW1lbnRzKSB7CisgICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9DMTROX1dJVEhfQ09NTUVOVFMpOworICAgICAgfQorCisgICAgICAvKgorICAgICAgWFBhdGgyRmlsdGVyQ29udGFpbmVyIHggPSBYUGF0aDJGaWx0ZXJDb250YWluZXIubmV3SW5zdGFuY2VTdWJ0cmFjdChkb2MsICJoZXJlKCkvYW5jZXN0b3I6OmRzOlNpZ25hdHVyZVsxXSIpOworICAgICAgeC5zZXRYUGF0aE5hbWVzcGFjZUNvbnRleHQoImRzIiwgQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUyk7CisgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIsIHguZ2V0RWxlbWVudCgpKTsKKyAgICAgICovCisgICAgICAvL0orCisgICAgICBzaWcuYWRkRG9jdW1lbnQoIiN4cG9pbnRlcigvKSIsIHRyYW5zZm9ybXMpOworCisgICAgICBTdHJpbmcgc2VjcmV0S2V5ID0gInNlY3JldCI7CisKKyAgICAgIHNpZy5nZXRLZXlJbmZvKCkuYWRkS2V5TmFtZSgiVGhlIFVURi04IG9jdGV0cyBvZiBcIiIgKyBzZWNyZXRLZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJcIiBhcmUgdXNlZCBmb3Igc2lnbmluZyAoIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc2VjcmV0S2V5Lmxlbmd0aCgpICsgIiBvY3RldHMpIik7CisgICAgICBzaWcuc2lnbihzaWcuY3JlYXRlU2VjcmV0S2V5KHNlY3JldEtleS5nZXRCeXRlcygpKSk7CisKKyAgICAgIENhbm9uaWNhbGl6ZXIgYzE0biA9CisgICAgICAgICBDYW5vbmljYWxpemVyLmdldEluc3RhbmNlKENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX1dJVEhfQ09NTUVOVFMpOworICAgICAgYnl0ZVtdIGZ1bGwgPSBjMTRuLmNhbm9uaWNhbGl6ZVN1YnRyZWUoZG9jKTsKKyAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZm9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oZmlsZW5hbWUpOworCisgICAgICB0cnkgeworICAgICAgICAgZm9zLndyaXRlKGZ1bGwpOworICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgIGZvcy5jbG9zZSgpOworICAgICAgfQorCisgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKAorICAgICAgICAgICAgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSW5wdXQgdG8gdGhlIHRyYW5zZm9ybXMgaXMiKTsKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKKyAgICAgICAgICAgICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIik7CisgICAgICAgICBTeXN0ZW0ub3V0CisgICAgICAgICAgICAucHJpbnRsbihuZXcgU3RyaW5nKHNpZy5nZXRTaWduZWRJbmZvKCkuaXRlbSgwKS5nZXRDb250ZW50c0JlZm9yZVRyYW5zZm9ybWF0aW9uKCkKKyAgICAgICAgICAgICAgIC5nZXRCeXRlcygpKSk7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAgICAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpOworICAgICAgICAgU3lzdGVtLm91dAorICAgICAgICAgICAgLnByaW50bG4oIlRoZSBzaWduZWQgb2N0ZXRzIChvdXRwdXQgb2YgdGhlIHRyYW5zZm9ybXMpIGFyZSAiKTsKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKKyAgICAgICAgICAgICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIik7CisgICAgICAgICBTeXN0ZW0ub3V0CisgICAgICAgICAgICAucHJpbnRsbihuZXcgU3RyaW5nKHNpZy5nZXRTaWduZWRJbmZvKCkuaXRlbSgwKQorICAgICAgICAgICAgICAgLmdldFRyYW5zZm9ybXNPdXRwdXQoKS5nZXRCeXRlcygpKSk7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAgICAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpOworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJUaGUgZG9jdW1lbnQgaXMgIik7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAgICAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpOworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG5ldyBTdHJpbmcoZnVsbCkpOworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKAorICAgICAgICAgICAgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKKyAgICAgIH0KKworICAgICAgSmF2YVV0aWxzLndyaXRlQnl0ZXNUb0ZpbGVuYW1lKCJ4ZmlsdGVyMi5odG1sIiwKKyAgICAgIHNpZy5nZXRTaWduZWRJbmZvKCkuaXRlbSgwKS5nZXRIVE1MUmVwcmVzZW50YXRpb24oKS5nZXRCeXRlcygpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgY2hlY2sKKyAgICAqCisgICAgKiBAcGFyYW0gZmlsZW5hbWUKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBjaGVjayhTdHJpbmcgZmlsZW5hbWUpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKworICAgICAgZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworCisgICAgICBEb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgICBEb2N1bWVudCBkb2MgPSBkYi5wYXJzZShuZXcgRmlsZUlucHV0U3RyZWFtKGZpbGVuYW1lKSk7CisgICAgICBOb2RlTGlzdCBzaWdzID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUywgQ29uc3RhbnRzLl9UQUdfU0lHTkFUVVJFKTsKKworICAgICAgWE1MU2lnbmF0dXJlIHNpZyA9IG5ldyBYTUxTaWduYXR1cmUoKEVsZW1lbnQpc2lncy5pdGVtKDApLCBuZXcgRmlsZShmaWxlbmFtZSkudG9VUkwoKS50b1N0cmluZygpKTsKKyAgICAgIGJvb2xlYW4gY2hlY2sgPSBzaWcuY2hlY2tTaWduYXR1cmVWYWx1ZShzaWcuY3JlYXRlU2VjcmV0S2V5KCJzZWNyZXQiLmdldEJ5dGVzKCkpKTsKKworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKAorICAgICAgICAgICAgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVmVyaWZpY2F0aW9uIG9mICIgKyBmaWxlbmFtZSArICI6ICIgKyBjaGVjayk7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAgICAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpOworICAgICAgICAgU3lzdGVtLm91dAorICAgICAgICAgICAgLnByaW50bG4obmV3IFN0cmluZyhzaWcuZ2V0U2lnbmVkSW5mbygpLml0ZW0oMCkKKyAgICAgICAgICAgICAgIC5nZXRUcmFuc2Zvcm1zT3V0cHV0KCkuZ2V0Qnl0ZXMoKSkpOworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKAorICAgICAgICAgICAgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKKworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy90cmFuc2Zvcm1zL1NhbXBsZVRyYW5zZm9ybVhQYXRoMkZpbHRlcjIuamF2YSBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvdHJhbnNmb3Jtcy9TYW1wbGVUcmFuc2Zvcm1YUGF0aDJGaWx0ZXIyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTAzMTVjMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvdHJhbnNmb3Jtcy9TYW1wbGVUcmFuc2Zvcm1YUGF0aDJGaWx0ZXIyLmphdmEKQEAgLTAsMCArMSwyMTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMudHJhbnNmb3JtczsKKworCisKK2ltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVPdXRwdXRTdHJlYW07CisKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXI7CitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uQ2Fub25pY2FsaXplcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLnBhcmFtcy5YUGF0aDJGaWx0ZXJDb250YWluZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkVsZW1lbnRQcm94eTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5KYXZhVXRpbHM7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKKworLyoqCisgKiBTYW1wbGUgZm9yIHRoZSA8ST5YTUwgU2lnbmF0dXJlIFhQYXRoIEZpbHRlciB2Mi4wPC9JPgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqIEBzZWUgPEEgSFJFRj0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sZHNpZy1maWx0ZXIyLyI+WFBhdGggRmlsdGVyIHYyLjAgKFRSKTwvCitBPgorICogQHNlZSA8QSBIUkVGPWh0dHA6Ly93d3cudzMub3JnL1NpZ25hdHVyZS9EcmFmdHMveG1sZHNpZy14ZmlsdGVyMi8iPlhQYXRoIEZpbHQKK2VyIHYyLjAgKGVkaXRvcnMgY29weSk8L0E+CisgKi8KKworCitwdWJsaWMgY2xhc3MgU2FtcGxlVHJhbnNmb3JtWFBhdGgyRmlsdGVyMiB7CisKKyAgIC8qKgorICAgICogTWV0aG9kIG1haW4KKyAgICAqCisgICAgKiBAcGFyYW0gYXJncworICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaW5pdCgpOworCisgICAgICBib29sZWFuIHZlcmJvc2UgPSB0cnVlOworCisgICAgICBjcmVhdGUoIndpdGhDb21tZW50cy54bWwiLCB0cnVlLCB2ZXJib3NlKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgIGNyZWF0ZSgib21pdENvbW1lbnRzLnhtbCIsIGZhbHNlLCB2ZXJib3NlKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgIGNoZWNrKCJ3aXRoQ29tbWVudHMueG1sIik7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGNyZWF0ZQorICAgICoKKyAgICAqIEBwYXJhbSBmaWxlbmFtZQorICAgICogQHBhcmFtIHdpdGhDb21tZW50cworICAgICogQHBhcmFtIHZlcmJvc2UKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBjcmVhdGUoCisgICAgICAgICAgIFN0cmluZyBmaWxlbmFtZSwgYm9vbGVhbiB3aXRoQ29tbWVudHMsIGJvb2xlYW4gdmVyYm9zZSkKKyAgICAgICAgICAgICAgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCisgICAgICBkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisKKyAgICAgIERvY3VtZW50QnVpbGRlciBkYiA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKKyAgICAgIC8vSi0KKyAgICAgIFN0cmluZyBpbnB1dERvYyA9ICI8QT48VU5TSUdORUQ+PEI+PFNJR05FRD48TU9SRV9TSUdORURfU1RVRkYvPjwvU0lHTkVEPjxDPjxVTlNJR05FRC8+PC9DPjwvQj48RD48VU5TSUdORUQvPjwvRD48VU5TSUdORUQ+PEU+PFNJR05FRD48TU9SRV9TSUdORURfU1RVRkYvPjwvU0lHTkVEPjwvRT48VU5TSUdORUQ+PEY+PEc+PEgvPjwvRz48L0Y+PC9VTlNJR05FRD48L1VOU0lHTkVEPjwvVU5TSUdORUQ+PC9BPiI7CisKKyAgICAgIC8vSisKKyAgICAgIERvY3VtZW50IGRvYyA9IGRiLnBhcnNlKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShpbnB1dERvYy5nZXRCeXRlcygpKSk7CisgICAgICBYTUxTaWduYXR1cmUgc2lnID0gbmV3IFhNTFNpZ25hdHVyZShkb2MsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmUuQUxHT19JRF9NQUNfSE1BQ19TSEExKTsKKworICAgICAgZG9jLmdldERvY3VtZW50RWxlbWVudCgpLmFwcGVuZENoaWxkKHNpZy5nZXRFbGVtZW50KCkpOworICAgICAgc2lnLmdldEVsZW1lbnQoKS5zZXRBdHRyaWJ1dGVOUyhDb25zdGFudHMuTmFtZXNwYWNlU3BlY05TLCAieG1sbnM6IiArIEVsZW1lbnRQcm94eS5nZXREZWZhdWx0UHJlZml4KFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRIMkZJTFRFUiksIFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRIMkZJTFRFUik7CisgICAgICBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCkuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJcbiIpKTsKKworICAgICAgVHJhbnNmb3JtcyB0cmFuc2Zvcm1zID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKyAgICAgIC8vSi0KKworICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSLAorICAgICAgICAgICAgWFBhdGgyRmlsdGVyQ29udGFpbmVyLm5ld0luc3RhbmNlSW50ZXJzZWN0KGRvYywgIi8vRSIpLmdldEVsZW1lbnQoKSk7CisKKyAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRIMkZJTFRFUiwKKyAgICAgICAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lci5uZXdJbnN0YW5jZVVuaW9uKGRvYywgIi8vQiIpLmdldEVsZW1lbnQoKSk7CisgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIsCisgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIubmV3SW5zdGFuY2VTdWJ0cmFjdChkb2MsICIvL0MiKS5nZXRFbGVtZW50KCkpOworCisgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIsCisgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIubmV3SW5zdGFuY2VVbmlvbihkb2MsICIvL0YiKS5nZXRFbGVtZW50KCkpOworICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSLAorICAgICAgICAgWFBhdGgyRmlsdGVyQ29udGFpbmVyLm5ld0luc3RhbmNlU3VidHJhY3QoZG9jLCAiLy9HIikuZ2V0RWxlbWVudCgpKTsKKyAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRIMkZJTFRFUiwKKyAgICAgICAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lci5uZXdJbnN0YW5jZVVuaW9uKGRvYywgIi8vSCIpLmdldEVsZW1lbnQoKSk7CisKKworICAgICAgLyoKKyAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lciB4ID0gWFBhdGgyRmlsdGVyQ29udGFpbmVyLm5ld0luc3RhbmNlU3VidHJhY3QoZG9jLCAiaGVyZSgpL2FuY2VzdG9yOjpkczpTaWduYXR1cmVbMV0iKTsKKyAgICAgIHguc2V0WFBhdGhOYW1lc3BhY2VDb250ZXh0KCJkcyIsIENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMpOworICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSLCB4LmdldEVsZW1lbnQoKSk7CisgICAgICBpZiAod2l0aENvbW1lbnRzKSB7CisgICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9DMTROX1dJVEhfQ09NTUVOVFMpOworICAgICAgfQorICAgICAgKi8KKyAgICAgIC8vSisKKyAgICAgIHNpZy5hZGREb2N1bWVudCgiIiwgdHJhbnNmb3Jtcyk7CisKKyAgICAgIFN0cmluZyBzZWNyZXRLZXkgPSAic2VjcmV0IjsKKworICAgICAgc2lnLmdldEtleUluZm8oKS5hZGRLZXlOYW1lKCJUaGUgVVRGLTggb2N0ZXRzIG9mIFwiIiArIHNlY3JldEtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIlwiIGFyZSB1c2VkIGZvciBzaWduaW5nICgiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzZWNyZXRLZXkubGVuZ3RoKCkgKyAiIG9jdGV0cykiKTsKKyAgICAgIHNpZy5zaWduKHNpZy5jcmVhdGVTZWNyZXRLZXkoc2VjcmV0S2V5LmdldEJ5dGVzKCkpKTsKKworICAgICAgQ2Fub25pY2FsaXplciBjMTRuID0KKyAgICAgICAgIENhbm9uaWNhbGl6ZXIuZ2V0SW5zdGFuY2UoQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fV0lUSF9DT01NRU5UUyk7CisgICAgICBieXRlW10gZnVsbCA9IGMxNG4uY2Fub25pY2FsaXplU3VidHJlZShkb2MpOworICAgICAgRmlsZU91dHB1dFN0cmVhbSBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbShmaWxlbmFtZSk7CisKKyAgICAgIHRyeSB7CisgICAgICAgICBmb3Mud3JpdGUoZnVsbCk7CisgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgZm9zLmNsb3NlKCk7CisgICAgICB9CisKKyAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAgICAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpOworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJJbnB1dCB0byB0aGUgdHJhbnNmb3JtcyBpcyIpOworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKAorICAgICAgICAgICAgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKKyAgICAgICAgIFN5c3RlbS5vdXQKKyAgICAgICAgICAgIC5wcmludGxuKG5ldyBTdHJpbmcoc2lnLmdldFNpZ25lZEluZm8oKS5pdGVtKDApLmdldENvbnRlbnRzQmVmb3JlVHJhbnNmb3JtYXRpb24oKQorICAgICAgICAgICAgICAgLmdldEJ5dGVzKCkpKTsKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKKyAgICAgICAgICAgICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIik7CisgICAgICAgICBTeXN0ZW0ub3V0CisgICAgICAgICAgICAucHJpbnRsbigiVGhlIHNpZ25lZCBvY3RldHMgKG91dHB1dCBvZiB0aGUgdHJhbnNmb3JtcykgYXJlICIpOworICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKAorICAgICAgICAgICAgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKKyAgICAgICAgIFN5c3RlbS5vdXQKKyAgICAgICAgICAgIC5wcmludGxuKG5ldyBTdHJpbmcoc2lnLmdldFNpZ25lZEluZm8oKS5pdGVtKDApCisgICAgICAgICAgICAgICAuZ2V0VHJhbnNmb3Jtc091dHB1dCgpLmdldEJ5dGVzKCkpKTsKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKKyAgICAgICAgICAgICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIik7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRoZSBkb2N1bWVudCBpcyAiKTsKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKKyAgICAgICAgICAgICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIik7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmV3IFN0cmluZyhmdWxsKSk7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAgICAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBjaGVjaworICAgICoKKyAgICAqIEBwYXJhbSBmaWxlbmFtZQorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIGNoZWNrKFN0cmluZyBmaWxlbmFtZSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCisgICAgICBkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisKKyAgICAgIERvY3VtZW50QnVpbGRlciBkYiA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKKyAgICAgIERvY3VtZW50IGRvYyA9IGRiLnBhcnNlKG5ldyBGaWxlSW5wdXRTdHJlYW0oZmlsZW5hbWUpKTsKKyAgICAgIE5vZGVMaXN0IHNpZ3MgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TLCBDb25zdGFudHMuX1RBR19TSUdOQVRVUkUpOworCisgICAgICBYTUxTaWduYXR1cmUgc2lnID0gbmV3IFhNTFNpZ25hdHVyZSgoRWxlbWVudClzaWdzLml0ZW0oMCksIG5ldyBGaWxlKGZpbGVuYW1lKS50b1VSTCgpLnRvU3RyaW5nKCkpOworICAgICAgYm9vbGVhbiBjaGVjayA9IHNpZy5jaGVja1NpZ25hdHVyZVZhbHVlKHNpZy5jcmVhdGVTZWNyZXRLZXkoInNlY3JldCIuZ2V0Qnl0ZXMoKSkpOworCisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAgICAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJWZXJpZmljYXRpb24gb2YgIiArIGZpbGVuYW1lICsgIjogIiArIGNoZWNrKTsKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKKyAgICAgICAgICAgICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIik7CisgICAgICAgICBTeXN0ZW0ub3V0CisgICAgICAgICAgICAucHJpbnRsbihuZXcgU3RyaW5nKHNpZy5nZXRTaWduZWRJbmZvKCkuaXRlbSgwKQorICAgICAgICAgICAgICAgLmdldFRyYW5zZm9ybXNPdXRwdXQoKS5nZXRCeXRlcygpKSk7CisgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAgICAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpOworCisgICAgICBKYXZhVXRpbHMud3JpdGVCeXRlc1RvRmlsZW5hbWUoIjEuaHRtbCIsIHNpZy5nZXRTaWduZWRJbmZvKCkuaXRlbSgwKS5nZXRIVE1MUmVwcmVzZW50YXRpb24oKS5nZXRCeXRlcygpKTsKKworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy90cmFuc2Zvcm1zL1NhbXBsZVRyYW5zZm9ybVhQYXRoRmlsdGVyQ0hHUC5qYXZhIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy90cmFuc2Zvcm1zL1NhbXBsZVRyYW5zZm9ybVhQYXRoRmlsdGVyQ0hHUC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmZDVmNzEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3RyYW5zZm9ybXMvU2FtcGxlVHJhbnNmb3JtWFBhdGhGaWx0ZXJDSEdQLmphdmEKQEAgLTAsMCArMSwyNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMudHJhbnNmb3JtczsKKworCisKK2ltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKKworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5DYW5vbmljYWxpemVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmU7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1zOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMucGFyYW1zLlhQYXRoMkZpbHRlckNvbnRhaW5lcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLnBhcmFtcy5YUGF0aEZpbHRlckNIR1BDb250YWluZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7CisKKworLyoqCisgKiBTYW1wbGUgZm9yIHRoZSA8ST5YTUwgU2lnbmF0dXJlIFhQYXRoIEZpbHRlciB2Mi4wPC9JPgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqIEBzZWUgPEEgSFJFRj0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sZHNpZy1maWx0ZXIyLyI+WFBhdGggRmlsdGVyIHYyLjAgKFRSKTwvQT4KKyAqIEBzZWUgPEEgSFJFRj1odHRwOi8vd3d3LnczLm9yZy9TaWduYXR1cmUvRHJhZnRzL3htbGRzaWcteGZpbHRlcjIvIj5YUGF0aCBGaWx0ZXIgdjIuMCAoZWRpdG9ycyBjb3B5KTwvQT4KKyAqLworcHVibGljIGNsYXNzIFNhbXBsZVRyYW5zZm9ybVhQYXRoRmlsdGVyQ0hHUCB7CisKKyAgIC8qKgorICAgICogTWV0aG9kIG1haW4KKyAgICAqCisgICAgKiBAcGFyYW0gYXJncworICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaW5pdCgpOworCisgICAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKworICAgICAgZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworCisgICAgICBEb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisKKyAgICAgIC8vIFN0cmluZyBpbnB1dERvYyA9ICI8QT48VT48Qj48Uz48Uz48Uz48L1M+PFM+PFM+PC9TPjxTPjwvUz48L1M+PFM+PC9TPjwvUz48Uz48Uz48L1M+PC9TPjwvUz48Qz48VT48VT48VT48VT48L1U+PFU+PFU+PC9VPjxVPjwvVT48L1U+PFU+PC9VPjwvVT48VT48VT48L1U+PC9VPjwvVT48L1U+PC9DPjwvQj48RD48VT48L1U+PC9EPjxVPjxFPjxTPjxTPjxTPjwvUz48Uz48Uz48L1M+PFM+PC9TPjwvUz48Uz48L1M+PC9TPjxTPjxTPjwvUz48L1M+PC9TPjwvRT48VT48Rj48Rz48SC8+PC9HPjwvRj48L1U+PC9VPjwvVT48L0E+IjsKKyAgICAgIC8vIFN0cmluZyBpbnB1dERvYyA9ICI8QT48VT48Qj48Uz48L1M+PEM+PFU+PC9VPjwvQz48L0I+PEQ+PFU+PC9VPjwvRD48VT48RT48Uz48L1M+PC9FPjxVPjxGPjxHPjxILz48L0c+PC9GPjwvVT48L1U+PC9VPjwvQT4iOworICAgICAgU3RyaW5nIGlucHV0RG9jID0KKyAgICAgICAgICI8QSB4bWxuczpmb289XCJodHRwOi8vZm9vLmJhci9cIj5cbjxVPlxuPFU+XG48VT5cbjxVPlxuPFU+XG48QiBmb286YXR0cj1cImF0dHJcIj5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Uz5cbjxTPlxuPFMvPlxuPFM+XG48Uy8+XG48Uy8+XG48L1M+XG48Uy8+XG48L1M+XG48Uz5cbjxTLz5cbjwvUz5cbjwvUz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48Qz5cbjxTPlxuPFM+XG48Uy8+XG48Uz5cbjxTLz5cbjxTLz5cbjwvUz5cbjxTLz5cbjwvUz5cbjxTPlxuPFMvPlxuPC9TPlxuPC9TPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48L1U+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPC9VPlxuPFU+XG48VT5cbjxVPlxuPFUvPlxuPFU+XG48VS8+XG48VS8+XG48L1U+XG48VS8+XG48L1U+XG48VT5cbjxVLz5cbjwvVT5cbjwvVT5cbjxVPlxuPFU+XG48VT5cbjxVLz5cbjxVPlxuPFUvPlxuPFUvPlxuPC9VPlxuPFUvPlxuPC9VPlxuPFU+XG48VS8+XG48L1U+XG48VT5cbjxVPlxuPFU+XG48VS8+XG48VT5cbjxVLz5cbjxVLz5cbjwvVT5cbjxVLz5cbjwvVT5cbjxVPlxuPFUvPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9VPlxuPC9DPlxuPC9CPlxuPEQ+XG48VS8+XG48L0Q+XG48VT5cbjxFPlxuPFM+XG48Uz5cbjxTLz5cbjxTPlxuPFMvPlxuPFMvPlxuPC9TPlxuPFMvPlxuPC9TPlxuPFM+XG48Uy8+XG48L1M+XG48L1M+XG48L0U+XG48VT5cbjxGPlxuPEc+XG48SC8+XG48Rz5cbjxILz5cbjwvRz5cbjwvRz5cbjwvRj5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvVT5cbjwvQT5cbiI7CisgICAgICBEb2N1bWVudCBkb2M7CisKKyAgICAgIGRvYyA9IGRiLnBhcnNlKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShpbnB1dERvYy5nZXRCeXRlcygpKSk7CisKKyAgICAgIFNhbXBsZVRyYW5zZm9ybVhQYXRoRmlsdGVyQ0hHUC5vdXRBcGFjaGUoZG9jKTsKKworICAgICAgZG9jID0gZGIucGFyc2UobmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGlucHV0RG9jLmdldEJ5dGVzKCkpKTsKKworICAgICAgU2FtcGxlVHJhbnNmb3JtWFBhdGhGaWx0ZXJDSEdQLm91dFhGaWx0ZXIyKGRvYyk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIG91dEFwYWNoZQorICAgICoKKyAgICAqIEBwYXJhbSBkb2MKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHN0YXRpYyB2b2lkIG91dEFwYWNoZShEb2N1bWVudCBkb2MpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBYTUxTaWduYXR1cmUgc2lnID0gbmV3IFhNTFNpZ25hdHVyZShkb2MsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmUuQUxHT19JRF9NQUNfSE1BQ19TSEExKTsKKworICAgICAgZG9jLmdldERvY3VtZW50RWxlbWVudCgpLmFwcGVuZENoaWxkKHNpZy5nZXRFbGVtZW50KCkpOworCisgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworICAgICAgU3RyaW5nIGluY2x1ZGVCdXRTZWFyY2hTdHIgPSAiLy9CIHwgLy9FIHwgLy9GIHwgLy9IIjsKKyAgICAgIFN0cmluZyBleGNsdWRlQnV0U2VhcmNoU3RyID0gIi8vRyI7CisKKyAgICAgIC8vIFN0cmluZyBleGNsdWRlU3RyID0gIi8vQyB8IC8vRCB8IC8vZHM6U2lnbmF0dXJlIjsKKyAgICAgIFN0cmluZyBleGNsdWRlU3RyID0KKyAgICAgICAgICIvL0MgfCAvL0QgfCBoZXJlKCkvYW5jZXN0b3I6OmRzOlNpZ25hdHVyZVsxXSB8IC8vQHg6YXR0ciI7CisgICAgICBib29sZWFuIGluY2x1ZGVTbGFzaFBvbGljeSA9IFhQYXRoRmlsdGVyQ0hHUENvbnRhaW5lci5FeGNsdWRlU2xhc2g7CisgICAgICBYUGF0aEZpbHRlckNIR1BDb250YWluZXIgeHBhdGhDb250YWluZXIgPQorICAgICAgICAgWFBhdGhGaWx0ZXJDSEdQQ29udGFpbmVyLmdldEluc3RhbmNlKGRvYywgaW5jbHVkZVNsYXNoUG9saWN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVCdXRTZWFyY2hTdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUJ1dFNlYXJjaFN0ciwgZXhjbHVkZVN0cik7CisKKyAgICAgIHhwYXRoQ29udGFpbmVyLnNldFhQYXRoTmFtZXNwYWNlQ29udGV4dCgiZHMiLCBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TKTsKKyAgICAgIHhwYXRoQ29udGFpbmVyLnNldFhQYXRoTmFtZXNwYWNlQ29udGV4dCgieCIsICJodHRwOi8vZm9vLmJhci8iKTsKKyAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRIRklMVEVSQ0hHUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhwYXRoQ29udGFpbmVyLmdldEVsZW1lbnQoKSk7CisgICAgICBzaWcuYWRkRG9jdW1lbnQoIiIsIHRyYW5zZm9ybXMpOworCisgICAgICBTdHJpbmcgc2VjcmV0S2V5ID0gInNlY3JldCI7CisKKyAgICAgIHNpZy5nZXRLZXlJbmZvKCkuYWRkS2V5TmFtZSgiVGhlIFVURi04IG9jdGV0cyBvZiBcIiIgKyBzZWNyZXRLZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJcIiBhcmUgdXNlZCBmb3Igc2lnbmluZyAoIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc2VjcmV0S2V5Lmxlbmd0aCgpICsgIiBvY3RldHMpIik7CisgICAgICBzaWcuc2lnbihzaWcuY3JlYXRlU2VjcmV0S2V5KHNlY3JldEtleS5nZXRCeXRlcygpKSk7CisKKyAgICAgIENhbm9uaWNhbGl6ZXIgYzE0biA9CisgICAgICAgICBDYW5vbmljYWxpemVyLmdldEluc3RhbmNlKENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX1dJVEhfQ09NTUVOVFMpOworICAgICAgYnl0ZVtdIGZ1bGwgPSBjMTRuLmNhbm9uaWNhbGl6ZVN1YnRyZWUoZG9jKTsKKworICAgICAgU3lzdGVtLm91dC5wcmludGxuKAorICAgICAgICAgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVGhlIHNpZ25lZCBvY3RldHMgKG91dHB1dCBvZiB0aGUgdHJhbnNmb3JtcykgYXJlICIpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKAorICAgICAgICAgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKKyAgICAgIFN5c3RlbS5vdXQKKyAgICAgICAgIC5wcmludGxuKG5ldyBTdHJpbmcoc2lnLmdldFNpZ25lZEluZm8oKS5pdGVtKDApLmdldFRyYW5zZm9ybXNPdXRwdXQoKQorICAgICAgICAgICAgLmdldEJ5dGVzKCkpKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKKyAgICAgICAgICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIik7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRoZSBkb2N1bWVudCBpcyAiKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKKyAgICAgICAgICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIik7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmV3IFN0cmluZyhmdWxsKSk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpOworCisgICAgICBFbGVtZW50IHNFID0KKyAgICAgICAgIChFbGVtZW50KSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5fVEFHX1NJR05BVFVSRSkuaXRlbSgwKTsKKyAgICAgIFhNTFNpZ25hdHVyZSBzaWdWZXIgPSBuZXcgWE1MU2lnbmF0dXJlKHNFLCBudWxsKTsKKyAgICAgIGJvb2xlYW4gdmVyaWZ5ID0KKyAgICAgICAgIHNpZ1Zlci5jaGVja1NpZ25hdHVyZVZhbHVlKHNpZ1ZlcgorICAgICAgICAgICAgLmNyZWF0ZVNlY3JldEtleSgic2VjcmV0Ii5nZXRCeXRlcygpKSk7CisKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigidmVyaWZ5OiAiICsgdmVyaWZ5KTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2Qgb3V0WEZpbHRlcjIKKyAgICAqCisgICAgKiBAcGFyYW0gZG9jCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBzdGF0aWMgdm9pZCBvdXRYRmlsdGVyMihEb2N1bWVudCBkb2MpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBYTUxTaWduYXR1cmUgc2lnID0gbmV3IFhNTFNpZ25hdHVyZShkb2MsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmUuQUxHT19JRF9NQUNfSE1BQ19TSEExKTsKKworICAgICAgZG9jLmdldERvY3VtZW50RWxlbWVudCgpLmFwcGVuZENoaWxkKHNpZy5nZXRFbGVtZW50KCkpOworCisgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIubmV3SW5zdGFuY2VJbnRlcnNlY3QoZG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8vRSIpLmdldEVsZW1lbnQoKSk7CisgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIubmV3SW5zdGFuY2VVbmlvbihkb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLy9CIikuZ2V0RWxlbWVudCgpKTsKKyAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRIMkZJTFRFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lci5uZXdJbnN0YW5jZVN1YnRyYWN0KGRvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvL0MiKS5nZXRFbGVtZW50KCkpOworICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFBhdGgyRmlsdGVyQ29udGFpbmVyLm5ld0luc3RhbmNlVW5pb24oZG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8vRiIpLmdldEVsZW1lbnQoKSk7CisgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSDJGSUxURVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUGF0aDJGaWx0ZXJDb250YWluZXIubmV3SW5zdGFuY2VTdWJ0cmFjdChkb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLy9HIikuZ2V0RWxlbWVudCgpKTsKKyAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRIMkZJTFRFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhQYXRoMkZpbHRlckNvbnRhaW5lci5uZXdJbnN0YW5jZVVuaW9uKGRvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvL0giKS5nZXRFbGVtZW50KCkpOworICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFBhdGgyRmlsdGVyQ29udGFpbmVyLm5ld0luc3RhbmNlU3VidHJhY3QoZG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8vQHg6YXR0ciIpLmdldEVsZW1lbnQoKSk7CisgICAgICB0cmFuc2Zvcm1zLnNldFhQYXRoTmFtZXNwYWNlQ29udGV4dCgieG1sbnM6eCIsICJodHRwOi8vZm9vLmJhci8iKTsKKyAgICAgIHRyYW5zZm9ybXMKKyAgICAgICAgIC5zZXRYUGF0aE5hbWVzcGFjZUNvbnRleHQoVHJhbnNmb3JtcworICAgICAgICAgICAgLmdldERlZmF1bHRQcmVmaXgoVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgyRklMVEVSKSwgVHJhbnNmb3JtcworICAgICAgICAgICAgLlRSQU5TRk9STV9YUEFUSDJGSUxURVIpOworICAgICAgc2lnLmFkZERvY3VtZW50KCIiLCB0cmFuc2Zvcm1zKTsKKworICAgICAgU3RyaW5nIHNlY3JldEtleSA9ICJzZWNyZXQiOworCisgICAgICBzaWcuZ2V0S2V5SW5mbygpLmFkZEtleU5hbWUoIlRoZSBVVEYtOCBvY3RldHMgb2YgXCIiICsgc2VjcmV0S2V5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiXCIgYXJlIHVzZWQgZm9yIHNpZ25pbmcgKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHNlY3JldEtleS5sZW5ndGgoKSArICIgb2N0ZXRzKSIpOworICAgICAgc2lnLnNpZ24oc2lnLmNyZWF0ZVNlY3JldEtleShzZWNyZXRLZXkuZ2V0Qnl0ZXMoKSkpOworCisgICAgICBDYW5vbmljYWxpemVyIGMxNG4gPQorICAgICAgICAgQ2Fub25pY2FsaXplci5nZXRJbnN0YW5jZShDYW5vbmljYWxpemVyLkFMR09fSURfQzE0Tl9XSVRIX0NPTU1FTlRTKTsKKyAgICAgIGJ5dGVbXSBmdWxsID0gYzE0bi5jYW5vbmljYWxpemVTdWJ0cmVlKGRvYyk7CisKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKKyAgICAgICAgICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIik7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRoZSBzaWduZWQgb2N0ZXRzIChvdXRwdXQgb2YgdGhlIHRyYW5zZm9ybXMpIGFyZSAiKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKKyAgICAgICAgICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIik7CisgICAgICBTeXN0ZW0ub3V0CisgICAgICAgICAucHJpbnRsbihuZXcgU3RyaW5nKHNpZy5nZXRTaWduZWRJbmZvKCkuaXRlbSgwKS5nZXRUcmFuc2Zvcm1zT3V0cHV0KCkKKyAgICAgICAgICAgIC5nZXRCeXRlcygpKSk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJUaGUgZG9jdW1lbnQgaXMgIik7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKG5ldyBTdHJpbmcoZnVsbCkpOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKAorICAgICAgICAgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKKworICAgICAgRWxlbWVudCBzRSA9CisgICAgICAgICAoRWxlbWVudCkgZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMuX1RBR19TSUdOQVRVUkUpLml0ZW0oMCk7CisgICAgICBYTUxTaWduYXR1cmUgc2lnVmVyID0gbmV3IFhNTFNpZ25hdHVyZShzRSwgbnVsbCk7CisgICAgICBib29sZWFuIHZlcmlmeSA9CisgICAgICAgICBzaWdWZXIuY2hlY2tTaWduYXR1cmVWYWx1ZShzaWdWZXIKKyAgICAgICAgICAgIC5jcmVhdGVTZWNyZXRLZXkoInNlY3JldCIuZ2V0Qnl0ZXMoKSkpOworCisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInZlcmlmeTogIiArIHZlcmlmeSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGNoZWNrCisgICAgKgorICAgICogQHBhcmFtIGZpbGVuYW1lCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgY2hlY2soU3RyaW5nIGZpbGVuYW1lKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisKKyAgICAgIGRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKworICAgICAgRG9jdW1lbnRCdWlsZGVyIGRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOworICAgICAgRG9jdW1lbnQgZG9jID0gZGIucGFyc2UobmV3IEZpbGVJbnB1dFN0cmVhbShmaWxlbmFtZSkpOworICAgICAgTm9kZUxpc3Qgc2lncyA9IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLl9UQUdfU0lHTkFUVVJFKTsKKyAgICAgIFhNTFNpZ25hdHVyZSBzaWcgPQorICAgICAgICAgbmV3IFhNTFNpZ25hdHVyZSgoRWxlbWVudCkgc2lncy5pdGVtKDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRmlsZShmaWxlbmFtZSkudG9VUkwoKS50b1N0cmluZygpKTsKKyAgICAgIGJvb2xlYW4gY2hlY2sgPQorICAgICAgICAgc2lnLmNoZWNrU2lnbmF0dXJlVmFsdWUoc2lnLmNyZWF0ZVNlY3JldEtleSgic2VjcmV0Ii5nZXRCeXRlcygpKSk7CisKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKKyAgICAgICAgICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIik7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlZlcmlmaWNhdGlvbiBvZiAiICsgZmlsZW5hbWUgKyAiOiAiICsgY2hlY2spOworICAgICAgU3lzdGVtLm91dC5wcmludGxuKAorICAgICAgICAgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKKyAgICAgIFN5c3RlbS5vdXQKKyAgICAgICAgIC5wcmludGxuKG5ldyBTdHJpbmcoc2lnLmdldFNpZ25lZEluZm8oKS5pdGVtKDApLmdldFRyYW5zZm9ybXNPdXRwdXQoKQorICAgICAgICAgICAgLmdldEJ5dGVzKCkpKTsKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigKKyAgICAgICAgICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIik7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3RyYW5zZm9ybXMvU2FtcGxlVHJhbnNmb3JtWFBhdGhIZXJlRnVuYy5qYXZhIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy90cmFuc2Zvcm1zL1NhbXBsZVRyYW5zZm9ybVhQYXRoSGVyZUZ1bmMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Y2M4YWI2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy90cmFuc2Zvcm1zL1NhbXBsZVRyYW5zZm9ybVhQYXRoSGVyZUZ1bmMuamF2YQpAQCAtMCwwICsxLDk2IEBACisKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMudHJhbnNmb3JtczsKKworCisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlSW5wdXQ7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2FtcGxlcy5TYW1wbGVVdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybXM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueHBhdGguWFBhdGhBUEk7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworCisKKy8qKgorICogVGhpcyBjbGFzcyBkZW1vbnN0cmF0ZXMgdGhlIHVzZSBvZiBhIFRyYW5zZm9ybSBmb3IgWFNMVC4gVGhlCisgKiA8Q09ERT54c2w6c3R5bGVzaGVldDwvQ09ERT4gaXMgZGlyZWN0bHkgZW1iZWRkZWQgaW4gdGhlIDxDT0RFPmRzOlRyYW5zZm9ybTwvQ09ERT4sCisgKiBzbyB0aGUge0BsaW5rIFRyYW5zZm9ybX0gb2JqZWN0IGlzIGNyZWF0ZWQgYnkgdXNpbmcgdGhlIEVsZW1lbnQuCisgKgorICogQGF1dGhvciBDaHJpc3RpYW4gR2V1ZXItUG9sbG1hbm4KKyAqIEB2ZXJzaW9uICVJJSwgJUclCisgKi8KK3B1YmxpYyBjbGFzcyBTYW1wbGVUcmFuc2Zvcm1YUGF0aEhlcmVGdW5jIHsKKworICAgLyoqCisgICAgKiBNZXRob2QgbWFpbgorICAgICoKKyAgICAqIEBwYXJhbSBhcmdzCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgIC8vSi0KKyAgICAgIFN0cmluZyBpbnB1dFN0ciA9CisgICAgICAgICI8P3htbCB2ZXJzaW9uPVwiMS4wXCI/PiIgKyAiXG4iCisgICAgICArICI8RG9jdW1lbnQ+IiArICJcbiIKKyAgICAgICsgIiAgIDxEYXRhIGF0dHI9J2F0dHJWYWx1ZSc+dGV4dCBpbiBEYXRhPC9EYXRhPiIgKyAiXG4iCisgICAgICArICI8U2lnbmF0dXJlIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjJz4iICsgIlxuIgorICAgICAgKyAiICAgICA8U2lnbmVkSW5mbz4iICsgIlxuIgorICAgICAgKyAiICAgICAgIDxSZWZlcmVuY2U+IiArICJcbiIKKyAgICAgICsgIiAgICAgICAgIDxUcmFuc2Zvcm1zPiIgKyAiXG4iCisgICAgICArICIgICAgICAgICAgIDxUcmFuc2Zvcm0geG1sbnM6ZHM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMnIEFsZ29yaXRobT0naHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMteHBhdGgtMTk5OTExMTYnPiIgKyAiXG4iCisgICAgICArICIgICAgICAgICAgICAgPFhQYXRoPmNvdW50KGFuY2VzdG9yLW9yLXNlbGY6OmRzOlNpZ25hdHVyZSB8IGhlcmUoKS9hbmNlc3Rvcjo6ZHM6U2lnbmF0dXJlWzFdKSAmZ3Q7IGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6OmRzOlNpZ25hdHVyZSk8L1hQYXRoPiIgKyAiXG4iCisgICAgICArICIgICAgICAgICAgIDwvVHJhbnNmb3JtPiIgKyAiXG4iCisgICAgICArICIgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSdodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHMnIC8+IiArICJcbiIKKyAgICAgICsgIiAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09J2h0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1I1dpdGhDb21tZW50cycgLz4iICsgIlxuIgorICAgICAgKyAiICAgICAgICAgICA8VHJhbnNmb3JtIEFsZ29yaXRobT0naHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUjV2l0aENvbW1lbnRzJyAvPiIgKyAiXG4iCisgICAgICArICIgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSdodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSNXaXRoQ29tbWVudHMnIC8+IiArICJcbiIKKyAgICAgICsgIiAgICAgICAgICAgPFRyYW5zZm9ybSBBbGdvcml0aG09J2h0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1I1dpdGhDb21tZW50cycgLz4iICsgIlxuIgorICAgICAgKyAiICAgICAgICAgPC9UcmFuc2Zvcm1zPiIgKyAiXG4iCisgICAgICArICIgICAgICAgPC9SZWZlcmVuY2U+IiArICJcbiIKKyAgICAgICsgIiAgICAgPC9TaWduZWRJbmZvPiIgKyAiXG4iCisgICAgICArICIgICA8L1NpZ25hdHVyZT4iCisgICAgICArICI8L0RvY3VtZW50PiIKKyAgICAgIDsKKyAgICAgIC8vSisKKyAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0KKyAgICAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKworICAgICAgZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworCisgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgICBvcmcudzNjLmRvbS5Eb2N1bWVudCBkb2MgPQorICAgICAgICAgZGIucGFyc2UobmV3IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW0oaW5wdXRTdHIuZ2V0Qnl0ZXMoKSkpOworICAgICAgRWxlbWVudCBuc2NvbnRleHQgPSBTYW1wbGVVdGlscy5jcmVhdGVEU2N0eChkb2MsICJkcyIsIENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMpOworCisgICAgICBFbGVtZW50IHRyYW5zZm9ybXNFbGVtID0gKEVsZW1lbnQpIFhQYXRoQVBJLnNlbGVjdFNpbmdsZU5vZGUoCisgICAgICAgICBkb2MsCisgICAgICAgICAiL0RvY3VtZW50L2RzOlNpZ25hdHVyZVsxXS9kczpTaWduZWRJbmZvL2RzOlJlZmVyZW5jZVsxXS9kczpUcmFuc2Zvcm1zIiwKKyAgICAgICAgIG5zY29udGV4dCk7CisgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyh0cmFuc2Zvcm1zRWxlbSwgIm1lbW9yeTovLyIpOworICAgICAgWE1MU2lnbmF0dXJlSW5wdXQgaW5wdXQgPSBuZXcgWE1MU2lnbmF0dXJlSW5wdXQoKE5vZGUpIGRvYyk7CisKKyAgICAgIC8vIGlucHV0LnNldENhbm9uaWNhbGl6ZXJVUkkoQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fV0lUSF9DT01NRU5UUyk7CisKKyAgICAgIFhNTFNpZ25hdHVyZUlucHV0IHJlc3VsdCA9IHRyYW5zZm9ybXMucGVyZm9ybVRyYW5zZm9ybXMoaW5wdXQpOworCisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmV3IFN0cmluZyhyZXN1bHQuZ2V0Qnl0ZXMoKSkpOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy90cmFuc2Zvcm1zL1NhbXBsZVRyYW5zZm9ybVhTTFQuamF2YSBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvdHJhbnNmb3Jtcy9TYW1wbGVUcmFuc2Zvcm1YU0xULmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJlMzBlYQotLS0gL2Rldi9udWxsCisrKyBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvdHJhbnNmb3Jtcy9TYW1wbGVUcmFuc2Zvcm1YU0xULmphdmEKQEAgLTAsMCArMSwxNDMgQEAKKworLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2FtcGxlcy50cmFuc2Zvcm1zOworCisKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmVJbnB1dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybXM7CisKKworLyoqCisgKiBUaGlzIGNsYXNzIGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mIGEgVHJhbnNmb3JtIGZvciBYU0xULiBUaGUKKyAqIDxDT0RFPnhzbDpzdHlsZXNoZWV0PC9DT0RFPiBpcyBkaXJlY3RseSBlbWJlZGRlZCBpbiB0aGUgPENPREU+ZHM6VHJhbnNmb3JtPC9DT0RFPiwKKyAqIHNvIHRoZSB7QGxpbmsgVHJhbnNmb3JtfSBvYmplY3QgaXMgY3JlYXRlZCBieSB1c2luZyB0aGUgRWxlbWVudC4KKyAqCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubgorICogQHZlcnNpb24gJUklLCAlRyUKKyAqLworcHVibGljIGNsYXNzIFNhbXBsZVRyYW5zZm9ybVhTTFQgeworCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWluCisgICAgKgorICAgICogQHBhcmFtIGFyZ3MKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmdzW10pIHRocm93cyBFeGNlcHRpb24geworICAgICAgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuSW5pdC5pbml0KCk7CisKKyAgICAgIC8vSi0KKyAgICAgIFN0cmluZyB0cmFuc2Zvcm1TdHIgPQorICAgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiPz5cbiIKKyAgICAgICsgIjxkczpUcmFuc2Zvcm1zIHhtbG5zOmRzPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjJz5cbiIKKyAgICAgICsgIjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSdodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy14c2x0LTE5OTkxMTE2Jz5cbiIKKyAgICAgICsgIjx4c2w6c3R5bGVzaGVldCAgdmVyc2lvbj1cIjEuMFwiXG4iCisgICAgICArICIgICAgICAgICAgICAgICAgIHhtbG5zOnhzbD0naHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtJz5cbiIKKyAgICAgICsgIjx4c2w6b3V0cHV0IG1ldGhvZD1cInhtbFwiIGluZGVudD1cInllc1wiLz5cbiIKKworICAgICAgKyAiPHhzbDp0ZW1wbGF0ZSBtYXRjaD1cIkNsYXNzXCI+XG4iCisgICAgICArICI8QmlyZEluZm8+XG4iCisgICAgICArICIJPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PVwiT3JkZXJcIi8+XG4iCisgICAgICArICI8L0JpcmRJbmZvPlxuIgorICAgICAgKyAiPC94c2w6dGVtcGxhdGU+XG4iCisKKyAgICAgICsgIjx4c2w6dGVtcGxhdGUgbWF0Y2g9XCJPcmRlclwiPlxuIgorICAgICAgKyAiT3JkZXIgaXM6ICA8eHNsOnZhbHVlLW9mIHNlbGVjdD1cIkBOYW1lXCIvPlxuIgorICAgICAgKyAiCTx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD1cIkZhbWlseVwiLz48eHNsOnRleHQ+XG4iCisgICAgICArICI8L3hzbDp0ZXh0PlxuIgorICAgICAgKyAiPC94c2w6dGVtcGxhdGU+XG4iCisKKyAgICAgICsgIjx4c2w6dGVtcGxhdGUgbWF0Y2g9XCJGYW1pbHlcIj5cbiIKKyAgICAgICsgIglGYW1pbHkgaXM6ICA8eHNsOnZhbHVlLW9mIHNlbGVjdD1cIkBOYW1lXCIvPlxuIgorICAgICAgKyAiCTx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD1cIlNwZWNpZXMgfCBTdWJGYW1pbHkgfCB0ZXh0KClcIi8+XG4iCisgICAgICArICI8L3hzbDp0ZW1wbGF0ZT5cbiIKKyAgICAgICsgIjx4c2w6dGVtcGxhdGUgbWF0Y2g9XCJTdWJGYW1pbHlcIj5cbiIKKyAgICAgICsgIgkJU3ViRmFtaWx5IGlzIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PVwiQE5hbWVcIi8+XG4iCisgICAgICArICIgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PVwiU3BlY2llcyB8IHRleHQoKVwiLz5cbiIKKyAgICAgICsgIjwveHNsOnRlbXBsYXRlPlxuIgorCisgICAgICArICI8eHNsOnRlbXBsYXRlIG1hdGNoPVwiU3BlY2llc1wiPlxuIgorICAgICAgKyAiCTx4c2w6Y2hvb3NlPlxuIgorICAgICAgKyAiCSAgPHhzbDp3aGVuIHRlc3Q9XCJuYW1lKC4uKT0nU3ViRmFtaWx5J1wiPlxuIgorICAgICAgKyAiCQk8eHNsOnRleHQ+CTwveHNsOnRleHQ+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9XCIuXCIvPjx4c2w6dGV4dD4gPC94c2w6dGV4dD48eHNsOnZhbHVlLW9mIHNlbGVjdD1cIkBTY2llbnRpZmljX05hbWVcIi8+XG4iCisgICAgICArICIJICA8L3hzbDp3aGVuPlxuIgorICAgICAgKyAiCSAgPHhzbDpvdGhlcndpc2U+XG4iCisgICAgICArICIJCTx4c2w6dmFsdWUtb2Ygc2VsZWN0PVwiLlwiLz48eHNsOnRleHQ+IDwveHNsOnRleHQ+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9XCJAU2NpZW50aWZpY19OYW1lXCIvPlxuIgorICAgICAgKyAiCSAgPC94c2w6b3RoZXJ3aXNlPlxuIgorICAgICAgKyAiCTwveHNsOmNob29zZT5cbiIKKyAgICAgICsgIjwveHNsOnRlbXBsYXRlPlxuIgorCisgICAgICArICI8L3hzbDpzdHlsZXNoZWV0PlxuIgorICAgICAgKyAiPC9kczpUcmFuc2Zvcm0+XG4iCisgICAgICArICI8L2RzOlRyYW5zZm9ybXM+XG4iCisgICAgICA7CisKKyAgICAgIFN0cmluZyBpbnB1dFN0ciA9CisgICAgICAgICI8P3htbCB2ZXJzaW9uPVwiMS4wXCI/PlxuIgorICAgICAgKyAiPENsYXNzPlxuIgorICAgICAgKyAiPE9yZGVyIE5hbWU9XCJUSU5BTUlGT1JNRVNcIj5cbiIKKyAgICAgICsgIiAgICAgICAgPEZhbWlseSBOYW1lPVwiVElOQU1JREFFXCI+XG4iCisgICAgICArICIgICAgICAgICAgICA8U3BlY2llcyBTY2llbnRpZmljX05hbWU9XCJUaW5hbXVzIG1ham9yXCI+ICBHcmVhdCBUaW5hbW91LjwvU3BlY2llcz5cbiIKKyAgICAgICsgIiAgICAgICAgICAgIDxTcGVjaWVzIFNjaWVudGlmaWNfTmFtZT1cIk5vdGhvY2VyY3VzXCI+SGlnaGxhbmQgVGluYW1vdS48L1NwZWNpZXM+XG4iCisgICAgICArICIgICAgICAgICAgICA8U3BlY2llcyBTY2llbnRpZmljX05hbWU9XCJDcnlwdHVyZWxsdXMgc291aVwiPkxpdHRsZSBUaW5hbW91LjwvU3BlY2llcz5cbiIKKyAgICAgICsgIiAgICAgICAgICAgIDxTcGVjaWVzIFNjaWVudGlmaWNfTmFtZT1cIkNyeXB0dXJlbGx1cyBjaW5uYW1vbWV1c1wiPlRoaWNrZXQgVGluYW1vdS48L1NwZWNpZXM+XG4iCisgICAgICArICIgICAgICAgICAgICA8U3BlY2llcyBTY2llbnRpZmljX05hbWU9XCJDcnlwdHVyZWxsdXMgYm91Y2FyZGlcIj5TbGF0eS1icmVhc3RlZCBUaW5hbW91LjwvU3BlY2llcz5cbiIKKyAgICAgICsgIiAgICAgICAgICAgIDxTcGVjaWVzIFNjaWVudGlmaWNfTmFtZT1cIkNyeXB0dXJlbGx1cyBrZXJyaWFlXCI+Q2hvY28gVGluYW1vdS48L1NwZWNpZXM+XG4iCisgICAgICArICIgICAgICAgIDwvRmFtaWx5PlxuIgorICAgICAgKyAiICAgIDwvT3JkZXI+XG4iCisgICAgICArICIgICAgPE9yZGVyIE5hbWU9XCJHQVZJSUZPUk1FU1wiPlxuIgorICAgICAgKyAiICAgICAgICA8RmFtaWx5IE5hbWU9XCJHQVZJSURBRVwiPlxuIgorICAgICAgKyAiICAgICAgICAgICAgPFNwZWNpZXMgU2NpZW50aWZpY19OYW1lPVwiR2F2aWEgc3RlbGxhdGFcIj5SZWQtdGhyb2F0ZWQgTG9vbi48L1NwZWNpZXM+XG4iCisgICAgICArICIgICAgICAgICAgICA8U3BlY2llcyBTY2llbnRpZmljX05hbWU9XCJHYXZpYSBhcmN0aWNhXCI+QXJjdGljIExvb24uPC9TcGVjaWVzPlxuIgorICAgICAgKyAiICAgICAgICAgICAgPFNwZWNpZXMgU2NpZW50aWZpY19OYW1lPVwiR2F2aWEgcGFjaWZpY2FcIj5QYWNpZmljIExvb24uPC9TcGVjaWVzPlxuIgorICAgICAgKyAiICAgICAgICAgICAgPFNwZWNpZXMgU2NpZW50aWZpY19OYW1lPVwiR2F2aWEgaW1tZXJcIj5Db21tb24gTG9vbi48L1NwZWNpZXM+XG4iCisgICAgICArICIgICAgICAgICAgICA8U3BlY2llcyBTY2llbnRpZmljX05hbWU9XCJHYXZpYSBhZGFtc2lpXCI+WWVsbG93LWJpbGxlZCBMb29uLjwvU3BlY2llcz5cbiIKKyAgICAgICsgIiAgICAgICAgPC9GYW1pbHk+XG4iCisgICAgICArICIgICAgPC9PcmRlcj5cbiIKKyAgICAgICsgIiAgICA8T3JkZXIgTmFtZT1cIlBPRElDSVBFRElGT1JNRVNcIj5cbiIKKyAgICAgICsgIiAgICAgICAgPEZhbWlseSBOYW1lPVwiUE9ESUNJUEVESURBRVwiPlxuIgorICAgICAgKyAiICAgICAgICAgICAgPFNwZWNpZXMgU2NpZW50aWZpY19OYW1lPVwiVGFjaHliYXB0dXMgZG9taW5pY3VzXCI+TGVhc3QgR3JlYmUuPC9TcGVjaWVzPlxuIgorICAgICAgKyAiICAgICAgICAgICAgPFNwZWNpZXMgU2NpZW50aWZpY19OYW1lPVwiUG9kaWx5bWJ1cyBwb2RpY2Vwc1wiPlBpZWQtYmlsbGVkIEdyZWJlLjwvU3BlY2llcz5cbiIKKyAgICAgICsgIiAgICAgICAgICAgIDxTcGVjaWVzIFNjaWVudGlmaWNfTmFtZT1cIlwiPkF0aXRsYW4gR3JlYmUuPC9TcGVjaWVzPlxuIgorICAgICAgKyAiICAgICAgICAgICAgPFNwZWNpZXMgU2NpZW50aWZpY19OYW1lPVwiXCI+SG9ybmVkIEdyZWJlLjwvU3BlY2llcz5cbiIKKyAgICAgICsgIiAgICAgICAgICAgIDxTcGVjaWVzIFNjaWVudGlmaWNfTmFtZT1cIlwiPlJlZC1uZWNrZWQgR3JlYmUuPC9TcGVjaWVzPlxuIgorICAgICAgKyAiICAgICAgICAgICAgPFNwZWNpZXMgU2NpZW50aWZpY19OYW1lPVwiXCI+RWFyZWQgR3JlYmUuPC9TcGVjaWVzPlxuIgorICAgICAgKyAiICAgICAgICAgICAgPFNwZWNpZXMgU2NpZW50aWZpY19OYW1lPVwiXCI+V2VzdGVybiBHcmViZS48L1NwZWNpZXM+XG4iCisgICAgICArICIgICAgICAgICAgICA8U3BlY2llcyBTY2llbnRpZmljX05hbWU9XCJcIj5DbGFyaydzIEdyZWJlLjwvU3BlY2llcz5cbiIKKyAgICAgICsgIiAgICAgICAgPC9GYW1pbHk+XG4iCisgICAgICArICIgICAgPC9PcmRlcj5cbiIKKyAgICAgICsgIjwvQ2xhc3M+XG4iCisgICAgICA7CisgICAgICAvL0orCisgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9CisgICAgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisKKyAgICAgIGRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKworICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyIGRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOworICAgICAgb3JnLnczYy5kb20uRG9jdW1lbnQgZG9jID0KKyAgICAgICAgIGRiLnBhcnNlKG5ldyBqYXZhLmlvLkJ5dGVBcnJheUlucHV0U3RyZWFtKHRyYW5zZm9ybVN0ci5nZXRCeXRlcygpKSk7CisKKyAgICAgIFRyYW5zZm9ybXMgdCA9IG5ldyBUcmFuc2Zvcm1zKGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKSwgIm1lbW9yeTovLyIpOworICAgICAgWE1MU2lnbmF0dXJlSW5wdXQgcmVzdWx0ID0KKyAgICAgICAgIHQucGVyZm9ybVRyYW5zZm9ybXMobmV3IFhNTFNpZ25hdHVyZUlucHV0KGlucHV0U3RyLmdldEJ5dGVzKCkpKTsKKworICAgICAgU3lzdGVtLm91dC5wcmludGxuKG5ldyBTdHJpbmcocmVzdWx0LmdldEJ5dGVzKCkpKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvdXRpbHMvQmFzZTY0U2FtcGxlLmphdmEgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3V0aWxzL0Jhc2U2NFNhbXBsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1OTVmMzYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfc2FtcGxlcy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL3V0aWxzL0Jhc2U2NFNhbXBsZS5qYXZhCkBAIC0wLDAgKzEsOTEgQEAKKworLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2FtcGxlcy51dGlsczsKKworCisKK2ltcG9ydCBqYXZhLm1hdGguQmlnSW50ZWdlcjsKKworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5DYW5vbmljYWxpemVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkJhc2U2NDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLlRleHQ7CisKKworLyoqCisgKiBTYW1wbGUgdXNhZ2UgZm9yIEJhc2U2NCBjbGFzcworICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGNsYXNzIEJhc2U2NFNhbXBsZSB7CisKKyAgIC8qKgorICAgICogTWV0aG9kIG1haW4KKyAgICAqCisgICAgKiBAcGFyYW0gdW51c2VkCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSB1bnVzZWQpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKworICAgICAgZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworCisgICAgICBEb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgICBEb2N1bWVudCBkb2MgPSBkYi5uZXdEb2N1bWVudCgpOworICAgICAgLy9KLQorICAgICAgQmlnSW50ZWdlciBiaSA9CisgICAgICAgICBuZXcgQmlnSW50ZWdlcigiNDMyNjg3NDMyNjc0NjMyNjQxNjkyMzYzMjg2NDg3MzI2OTQxNjc4NjIiCisgICAgICAgICAgICAgICAgICAgICAgICArICIzNDk2MTMyNzg2NDg3MzIxNjQ5ODYxMzI4NDk3NjEzMjk1NDM1NDMiCisgICAgICAgICAgICAgICAgICAgICAgICArICI4NzQ2MTgzMjc5NjQ4OTcxNjQ4MjM2OTg0MTYyMzYzNDU0MzU0MzUiCisgICAgICAgICAgICAgICAgICAgICAgICArICI0OTE4MjM2NDg5MTMyNjg0OTYyMTg5NzQ2OTgxMjY0OTg3MTI2OTgiCisgICAgICAgICAgICAgICAgICAgICAgICArICI0MjY4NjE0MzI4OTIzNDMyNDIzNDMyNDMyNDIzNDIzNDIzNTQzNTQiCisgICAgICAgICAgICAgICAgICAgICAgICArICIzNDk2MTMyNzg2NDg3MzIxNjQ5ODYxMzI4NDk3NjEzMjk1NDM1NDMiCisgICAgICAgICAgICAgICAgICAgICAgICArICI4NzQ2MTgzMjc5NjQ4OTcxNjQ4MjM2OTg0MTYyMzYzNDU0MzU0MzUiCisgICAgICAgICAgICAgICAgICAgICAgICArICI0OTE4MjM2NDg5MTMyNjg0OTYyMTg5NzQ2OTgxMjY0OTg3MTI2OTgiCisgICAgICAgICAgICAgICAgICAgICAgICArICI0MjY4NjE0MzI4OTIzNDMyNDIzNDMyNDMyNDIzNDIzNDIzNTQzNTQiCisgICAgICAgICAgICAgICAgICAgICAgICArICIzNDk2MTMyNzg2NDg3MzIxNjQ5ODYxMzI4NDk3NjEzMjk1NDM1NDMiCisgICAgICAgICAgICAgICAgICAgICAgICArICI4NzQ2MTgzMjc5NjQ4OTcxNjQ4MjM2OTg0MTYyMzYzNDU0MzU0MzUiCisgICAgICAgICAgICAgICAgICAgICAgICArICI0OTE4MjM2NDg5MTMyNjg0OTYyMTg5NzQ2OTgxMjY0OTg3MTI2OTgiCisgICAgICAgICAgICAgICAgICAgICAgICArICI0MjY4NjE0MzI4OTIzNDMyNDIzNDMyNDMyNDIzNDIzNDIzNTQzNTQiCisgICAgICAgICAgICAgICAgICAgICAgICArICIzNDk2MTMyNzg2NDg3MzIxNjQ5ODYxMzI4NDk3NjEzMjk1NDM1NDMiCisgICAgICAgICAgICAgICAgICAgICAgICArICI4NzQ2MTgzMjc5NjQ4OTcxNjQ4MjM2OTg0MTYyMzYzNDU0MzU0MzUiCisgICAgICAgICAgICAgICAgICAgICAgICArICI0OTE4MjM2NDg5MTMyNjg0OTYyMTg5NzQ2OTgxMjY0OTg3MTI2OTgiCisgICAgICAgICAgICAgICAgICAgICAgICArICI0MjY4NjE0MzI4OTIzNDMyNDIzNDMyNDMyNDIzNDIzNDIzNTQzNTQiCisgICAgICAgICAgICAgICAgICAgICAgICArICIzNDk2MTMyNzg2NDg3MzIxNjQ5ODYxMzI4NDk3NjEzMjk1NDM1NDMiCisgICAgICAgICAgICAgICAgICAgICAgICArICI4NzQ2MTgzMjc5NjQ4OTcxNjQ4MjM2OTg0MTYyMzYzNDU0MzU0MzUiCisgICAgICAgICAgICAgICAgICAgICAgICArICI0OTE4MjM2NDg5MTMyNjg0OTYyMTg5NzQ2OTgxMjY0OTg3MTI2OTgiCisgICAgICAgICAgICAgICAgICAgICAgICArICI0MjY4NjE0MzI4OTIzNDMyNDIzNDMyNDMyNDIzNDIzNDIzNTQzNTQiCisgICAgICAgICAgICAgICAgICAgICAgICArICIzMjQ2ODc0NjIxNDk2ODI5MTM2Iik7CisgICAgICAvL0orCisgICAgICBUZXh0IGJhc2U2NHRleHQgPSBkb2MuY3JlYXRlVGV4dE5vZGUoQmFzZTY0LmVuY29kZShiaSkpOworICAgICAgRWxlbWVudCByb290ID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhudWxsLCAiQmFzZTY0Iik7CisKKyAgICAgIGRvYy5hcHBlbmRDaGlsZChyb290KTsKKyAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoYmFzZTY0dGV4dCk7CisKKyAgICAgIENhbm9uaWNhbGl6ZXIgYzE0biA9CisgICAgICAgICBDYW5vbmljYWxpemVyLmdldEluc3RhbmNlKENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX1dJVEhfQ09NTUVOVFMpOworCisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmV3IFN0cmluZyhjMTRuLmNhbm9uaWNhbGl6ZVN1YnRyZWUoZG9jKSkpOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3NhbXBsZXMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy91dGlscy9yZXNvbHZlci9PZmZsaW5lUmVzb2x2ZXIuamF2YSBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvdXRpbHMvcmVzb2x2ZXIvT2ZmbGluZVJlc29sdmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJhOWFlOQotLS0gL2Rldi9udWxsCisrKyBiL3NyY19zYW1wbGVzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvdXRpbHMvcmVzb2x2ZXIvT2ZmbGluZVJlc29sdmVyLmphdmEKQEAgLTAsMCArMSwxNjMgQEAKKworLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2FtcGxlcy51dGlscy5yZXNvbHZlcjsKKworCisKK2ltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmVJbnB1dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5yZXNvbHZlci5SZXNvdXJjZVJlc29sdmVyRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyLlJlc291cmNlUmVzb2x2ZXJTcGk7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwudXRpbHMuVVJJOworaW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7CisKKworLyoqCisgKiBUaGlzIGNsYXNzIGhlbHBzIHVzIGhvbWUgdXNlcnMgdG8gcmVzb2x2ZSBodHRwIFVSSXMgd2l0aG91dCBhIG5ldHdvcmsKKyAqIGNvbm5lY3Rpb24KKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKi8KK3B1YmxpYyBjbGFzcyBPZmZsaW5lUmVzb2x2ZXIgZXh0ZW5kcyBSZXNvdXJjZVJlc29sdmVyU3BpIHsKKworICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKE9mZmxpbmVSZXNvbHZlci5jbGFzcy5nZXROYW1lKCkpOworCisgICAvKioKKyAgICAqIE1ldGhvZCBlbmdpbmVSZXNvbHZlCisgICAgKgorICAgICogQHBhcmFtIHVyaQorICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAqCisgICAgKiBAdGhyb3dzIFJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIFhNTFNpZ25hdHVyZUlucHV0IGVuZ2luZVJlc29sdmUoQXR0ciB1cmksIFN0cmluZyBCYXNlVVJJKQorICAgICAgICAgICB0aHJvd3MgUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbiB7CisKKyAgICAgIHRyeSB7CisgICAgICAgICBTdHJpbmcgVVJJID0gdXJpLmdldE5vZGVWYWx1ZSgpOworCisgICAgICAgICBpZiAoT2ZmbGluZVJlc29sdmVyLl91cmlNYXAuY29udGFpbnNLZXkoVVJJKSkgeworICAgICAgICAgICAgU3RyaW5nIG5ld1VSSSA9IChTdHJpbmcpIE9mZmxpbmVSZXNvbHZlci5fdXJpTWFwLmdldChVUkkpOworCisgICAgICAgICAgICBsb2cuZGVidWcoIk1hcHBlZCAiICsgVVJJICsgIiB0byAiICsgbmV3VVJJKTsKKworICAgICAgICAgICAgSW5wdXRTdHJlYW0gaXMgPSBuZXcgRmlsZUlucHV0U3RyZWFtKG5ld1VSSSk7CisKKyAgICAgICAgICAgIGxvZy5kZWJ1ZygiQXZhaWxhYmxlIGJ5dGVzID0gIiArIGlzLmF2YWlsYWJsZSgpKTsKKworICAgICAgICAgICAgWE1MU2lnbmF0dXJlSW5wdXQgcmVzdWx0ID0gbmV3IFhNTFNpZ25hdHVyZUlucHV0KGlzKTsKKworICAgICAgICAgICAgLy8gWE1MU2lnbmF0dXJlSW5wdXQgcmVzdWx0ID0gbmV3IFhNTFNpZ25hdHVyZUlucHV0KGlucHV0U3RyZWFtKTsKKyAgICAgICAgICAgIHJlc3VsdC5zZXRTb3VyY2VVUkkoVVJJKTsKKyAgICAgICAgICAgIHJlc3VsdC5zZXRNSU1FVHlwZSgoU3RyaW5nKSBPZmZsaW5lUmVzb2x2ZXIuX21pbWVNYXAuZ2V0KFVSSSkpOworCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIE9iamVjdCBleEFyZ3NbXSA9IHsKKyAgICAgICAgICAgICAgICJUaGUgVVJJICIgKyBVUkkgKyAiIGlzIG5vdCBjb25maWd1cmVkIGZvciBvZmZsaW5lIHdvcmsiIH07CisKKyAgICAgICAgICAgIHRocm93IG5ldyBSZXNvdXJjZVJlc29sdmVyRXhjZXB0aW9uKCJnZW5lcmljLkVtcHR5TWVzc2FnZSIsIGV4QXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaSwgQmFzZVVSSSk7CisgICAgICAgICB9CisgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBleCkgeworICAgICAgICAgdGhyb3cgbmV3IFJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb24oImdlbmVyaWMuRW1wdHlNZXNzYWdlIiwgZXgsIHVyaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2VVUkkpOworICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIFdlIHJlc29sdmUgaHR0cCBVUklzIDxJPndpdGhvdXQ8L0k+IGZyYWdtZW50Li4uCisgICAgKgorICAgICogQHBhcmFtIHVyaQorICAgICogQHBhcmFtIEJhc2VVUkkKKyAgICAqCisgICAgKi8KKyAgIHB1YmxpYyBib29sZWFuIGVuZ2luZUNhblJlc29sdmUoQXR0ciB1cmksIFN0cmluZyBCYXNlVVJJKSB7CisKKyAgICAgIFN0cmluZyB1cmlOb2RlVmFsdWUgPSB1cmkuZ2V0Tm9kZVZhbHVlKCk7CisKKyAgICAgIGlmICh1cmlOb2RlVmFsdWUuZXF1YWxzKCIiKSB8fCB1cmlOb2RlVmFsdWUuc3RhcnRzV2l0aCgiIyIpKSB7CisgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisKKyAgICAgIHRyeSB7CisgICAgICAgICBVUkkgdXJpTmV3ID0gbmV3IFVSSShuZXcgVVJJKEJhc2VVUkkpLCB1cmkuZ2V0Tm9kZVZhbHVlKCkpOworCisgICAgICAgICBpZiAodXJpTmV3LmdldFNjaGVtZSgpLmVxdWFscygiaHR0cCIpKSB7CisgICAgICAgICAgICBsb2cuZGVidWcoIkkgc3RhdGUgdGhhdCBJIGNhbiByZXNvbHZlICIgKyB1cmlOZXcudG9TdHJpbmcoKSk7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgfQorCisgICAgICAgICBsb2cuZGVidWcoIkkgc3RhdGUgdGhhdCBJIGNhbid0IHJlc29sdmUgIiArIHVyaU5ldy50b1N0cmluZygpKTsKKyAgICAgIH0gY2F0Y2ggKFVSSS5NYWxmb3JtZWRVUklFeGNlcHRpb24gZXgpIHt9CisKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgIH0KKworICAgLyoqIEZpZWxkIF91cmlNYXAgKi8KKyAgIHN0YXRpYyBNYXAgX3VyaU1hcCA9IG51bGw7CisKKyAgIC8qKiBGaWVsZCBfbWltZU1hcCAqLworICAgc3RhdGljIE1hcCBfbWltZU1hcCA9IG51bGw7CisKKyAgIC8qKgorICAgICogTWV0aG9kIHJlZ2lzdGVyCisgICAgKgorICAgICogQHBhcmFtIFVSSQorICAgICogQHBhcmFtIGZpbGVuYW1lCisgICAgKiBAcGFyYW0gTUlNRQorICAgICovCisgICBwcml2YXRlIHN0YXRpYyB2b2lkIHJlZ2lzdGVyKFN0cmluZyBVUkksIFN0cmluZyBmaWxlbmFtZSwgU3RyaW5nIE1JTUUpIHsKKyAgICAgIE9mZmxpbmVSZXNvbHZlci5fdXJpTWFwLnB1dChVUkksIGZpbGVuYW1lKTsKKyAgICAgIE9mZmxpbmVSZXNvbHZlci5fbWltZU1hcC5wdXQoVVJJLCBNSU1FKTsKKyAgIH0KKworICAgc3RhdGljIHsKKyAgICAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaW5pdCgpOworCisgICAgICBPZmZsaW5lUmVzb2x2ZXIuX3VyaU1hcCA9IG5ldyBIYXNoTWFwKCk7CisgICAgICBPZmZsaW5lUmVzb2x2ZXIuX21pbWVNYXAgPSBuZXcgSGFzaE1hcCgpOworCisgICAgICBPZmZsaW5lUmVzb2x2ZXIucmVnaXN0ZXIoImh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1zdHlsZXNoZWV0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGF0YS9vcmcvdzNjL3d3dy9UUi94bWwtc3R5bGVzaGVldC5odG1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGV4dC9odG1sIik7CisgICAgICBPZmZsaW5lUmVzb2x2ZXIucmVnaXN0ZXIoImh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDAvUkVDLXhtbC0yMDAwMTAwNiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGEvb3JnL3czYy93d3cvVFIvMjAwMC9SRUMteG1sLTIwMDAxMDA2IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGV4dC94bWwiKTsKKyAgICAgIE9mZmxpbmVSZXNvbHZlci5yZWdpc3RlcigiaHR0cDovL3d3dy5udWUuZXQtaW5mLnVuaS1zaWVnZW4uZGUvaW5kZXguaHRtbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVtcC9udWVob21lcGFnZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRleHQvaHRtbCIpOworICAgICAgT2ZmbGluZVJlc29sdmVyLnJlZ2lzdGVyKAorICAgICAgICAgImh0dHA6Ly93d3cubnVlLmV0LWluZi51bmktc2llZ2VuLmRlL35nZXVlci1wb2xsbWFubi9pZDIueG1sIiwKKyAgICAgICAgICJkYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RlbXAvaWQyLnhtbCIsICJ0ZXh0L3htbCIpOworICAgICAgT2ZmbGluZVJlc29sdmVyLnJlZ2lzdGVyKAorICAgICAgICAgImh0dHA6Ly94bWxkc2lnLnBvdGhvbGUuY29tL3htbC1zdHlsZXNoZWV0LnR4dCIsCisgICAgICAgICAiZGF0YS9jb20vcG90aG9sZS94bWxkc2lnL3htbC1zdHlsZXNoZWV0LnR4dCIsICJ0ZXh0L3htbCIpOworICAgICAgT2ZmbGluZVJlc29sdmVyLnJlZ2lzdGVyKAorICAgICAgICAgImh0dHA6Ly93d3cudzMub3JnL1NpZ25hdHVyZS8yMDAyLzA0L3htbC1zdHlsZXNoZWV0LmI2NCIsCisgICAgICAgICAiZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS94bWwtc3R5bGVzaGVldC5iNjQiLCAidGV4dC9wbGFpbiIpOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvS2V5U2VsZWN0b3JFeGNlcHRpb25UZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9LZXlTZWxlY3RvckV4Y2VwdGlvblRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzY2MTViCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvS2V5U2VsZWN0b3JFeGNlcHRpb25UZXN0LmphdmEKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAgMjAwNiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8udGVzdDsKKworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uUHJpbnRTdHJlYW07CitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLktleVNlbGVjdG9yRXhjZXB0aW9uOworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLio7CisKKy8qKgorICogVW5pdCB0ZXN0IGZvciBqYXZheC54bWwuY3J5cHRvLktleVNlbGVjdG9yRXhjZXB0aW9uCisgKgorICogQHZlcnNpb24gJElkJAorICogQGF1dGhvciBWYWxlcmllIFBlbmcKKyAqLworcHVibGljIGNsYXNzIEtleVNlbGVjdG9yRXhjZXB0aW9uVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgIHB1YmxpYyBLZXlTZWxlY3RvckV4Y2VwdGlvblRlc3QoKSB7CisJc3VwZXIoIktleVNlbGVjdG9yRXhjZXB0aW9uVGVzdCIpOworICAgIH0KKworICAgIHB1YmxpYyBLZXlTZWxlY3RvckV4Y2VwdGlvblRlc3QoU3RyaW5nIG5hbWUpIHsKKwlzdXBlcihuYW1lKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24geyB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZWFyRG93bigpIHsgfQorCisgICAgcHVibGljIHZvaWQgdGVzdENvbnN0cnVjdG9yKCkgeworCS8vIHRlc3QgS2V5U2VsZWN0b3JFeGNlcHRpb24oKQorCUtleVNlbGVjdG9yRXhjZXB0aW9uIGtzZSA9IG5ldyBLZXlTZWxlY3RvckV4Y2VwdGlvbigpOworCWFzc2VydE51bGwoa3NlLmdldE1lc3NhZ2UoKSk7CisJYXNzZXJ0TnVsbChrc2UuZ2V0Q2F1c2UoKSk7CisKKwkvLyB0ZXN0IEtleVNlbGVjdG9yRXhjZXB0aW9uKFN0cmluZykKKwlrc2UgPSBuZXcgS2V5U2VsZWN0b3JFeGNlcHRpb24oInRlc3QiKTsKKwlhc3NlcnRFcXVhbHMoInRlc3QiLCBrc2UuZ2V0TWVzc2FnZSgpKTsKKwlhc3NlcnROdWxsKGtzZS5nZXRDYXVzZSgpKTsKKwkKKwkvLyB0ZXN0IEtleVNlbGVjdG9yRXhjZXB0aW9uKFN0cmluZywgVGhyb3dhYmxlKQorCUlsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpYWUgPSBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJpYWUiKTsKKwlrc2UgPSBuZXcgS2V5U2VsZWN0b3JFeGNlcHRpb24oInJhbmRvbSIsIGlhZSk7CisJYXNzZXJ0RXF1YWxzKCJyYW5kb20iLCBrc2UuZ2V0TWVzc2FnZSgpKTsKKwlhc3NlcnRUcnVlKGNvbXBhcmVUaHJvd2FibGUoaWFlLCBrc2UuZ2V0Q2F1c2UoKSkpOworCisJLy8gdGVzdCBLZXlTZWxlY3RvckV4Y2VwdGlvbihUaHJvd2FibGUpCisJa3NlID0gbmV3IEtleVNlbGVjdG9yRXhjZXB0aW9uKGlhZSk7CisJYXNzZXJ0RXF1YWxzKGlhZS50b1N0cmluZygpLCBrc2UuZ2V0TWVzc2FnZSgpKTsKKwlhc3NlcnRUcnVlKGNvbXBhcmVUaHJvd2FibGUoaWFlLCBrc2UuZ2V0Q2F1c2UoKSkpOworICAgIH0KKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGNvbXBhcmVUaHJvd2FibGUoVGhyb3dhYmxlIHQxLCBUaHJvd2FibGUgdDIpIHsKKwlib29sZWFuIHJlc3VsdCA9IGZhbHNlOworCS8vIGZpcnN0IGNvbXBhcmUgdGhlaXIgdG9TdHJpbmcgcHJlc2VudGF0aW9uCisJaWYgKHQxLnRvU3RyaW5nKCkuZXF1YWxzKHQyLnRvU3RyaW5nKCkpKSB7CisJICAgIEJ5dGVBcnJheU91dHB1dFN0cmVhbSBiYW9zMSA9IG5ldyBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKTsKKwkgICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtIGJhb3MyID0gbmV3IEJ5dGVBcnJheU91dHB1dFN0cmVhbSgpOworCSAgICAvLyB0aGVuIGNvbXBhcmUgdGhlaXIgU3RhY2tUcmFjZQorCSAgICBQcmludFN0cmVhbSBwcyA9IG5ldyBQcmludFN0cmVhbShiYW9zMSk7CisJICAgIHQxLnByaW50U3RhY2tUcmFjZShwcyk7CisJICAgIHBzLmNsb3NlKCk7CisJICAgIHBzID0gbmV3IFByaW50U3RyZWFtKGJhb3MyKTsKKwkgICAgdDIucHJpbnRTdGFja1RyYWNlKHBzKTsKKwkgICAgcHMuY2xvc2UoKTsKKworCSAgICBpZiAoQXJyYXlzLmVxdWFscyhiYW9zMS50b0J5dGVBcnJheSgpLCBiYW9zMi50b0J5dGVBcnJheSgpKSkgeworCQlyZXN1bHQgPSB0cnVlOworCSAgICB9IGVsc2UgeworCQlTeXN0ZW0ub3V0LnByaW50bG4oIlN0YWNrVHJhY2UgY29tcGFyaXNvbiBmYWlsZWQiKTsKKwkJdDEucHJpbnRTdGFja1RyYWNlKFN5c3RlbS5vdXQpOworCQl0Mi5wcmludFN0YWNrVHJhY2UoU3lzdGVtLm91dCk7CisJICAgIH0KKwl9IGVsc2UgeworCSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRvU3RyaW5nIGNvbXBhcmlzb24gZmFpbGVkIik7CisJICAgIFN5c3RlbS5vdXQucHJpbnRsbih0MSk7CisJICAgIFN5c3RlbS5vdXQucHJpbnRsbih0Mik7CisJfQorCXJldHVybiByZXN1bHQ7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvS2V5U2VsZWN0b3JUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9LZXlTZWxlY3RvclRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2ZhOWM3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvS2V5U2VsZWN0b3JUZXN0LmphdmEKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8udGVzdDsKKworaW1wb3J0IGphdmEudXRpbC4qOworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGU7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLio7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuKjsKKworLyoqCisgKiBVbml0IHRlc3QgZm9yIGphdmF4LnhtbC5jcnlwdG8uS2V5U2VsZWN0b3IKKyAqCisgKiBAdmVyc2lvbiAkSWQkCisgKiBAYXV0aG9yIFZhbGVyaWUgUGVuZworICovCitwdWJsaWMgY2xhc3MgS2V5U2VsZWN0b3JUZXN0IGV4dGVuZHMgVGVzdENhc2UgeworICAgIHByaXZhdGUgS2V5IGtleTsKKyAgICBwcml2YXRlIEtleVNlbGVjdG9yIHNlbGVjdG9yMTsKKworICAgIHByaXZhdGUgY2xhc3MgTXlPd25LZXkgaW1wbGVtZW50cyBLZXkgeworCXByaXZhdGUgU3RyaW5nIGFsZ287CisJcHJpdmF0ZSBieXRlW10gdmFsOworCU15T3duS2V5KFN0cmluZyBhbGdvcml0aG0sIGJ5dGVbXSB2YWx1ZSkgeworCSAgICBhbGdvID0gYWxnb3JpdGhtOworCSAgICB2YWwgPSAoYnl0ZVtdKSB2YWx1ZS5jbG9uZSgpOworCX0KKwkKKwlwdWJsaWMgU3RyaW5nIGdldEFsZ29yaXRobSgpIHsKKwkgICAgcmV0dXJuIGFsZ287CisJfQorCXB1YmxpYyBieXRlW10gZ2V0RW5jb2RlZCgpIHsKKwkgICAgcmV0dXJuIHZhbDsKKwl9CisJcHVibGljIFN0cmluZyBnZXRGb3JtYXQoKSB7CisJICAgIHJldHVybiAiUkFXIjsKKwl9CisgICAgfQorCisgICAgcHVibGljIEtleVNlbGVjdG9yVGVzdCgpIHsKKwlzdXBlcigiS2V5U2VsZWN0b3JUZXN0Iik7CisgICAgfQorCisgICAgcHVibGljIEtleVNlbGVjdG9yVGVzdChTdHJpbmcgbmFtZSkgeworCXN1cGVyKG5hbWUpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJLy8gc2VsZWN0b3IxOiBzaW5nbGV0b25LZXlTZWxlY3RvcgorCWtleSA9IG5ldyBNeU93bktleSgidGVzdCIsIG5ldyBieXRlWzE2XSk7CisJc2VsZWN0b3IxID0gS2V5U2VsZWN0b3Iuc2luZ2xldG9uS2V5U2VsZWN0b3Ioa2V5KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZWFyRG93bigpIHsgfQorCisgICAgcHVibGljIHZvaWQgdGVzdHNlbGVjdCgpIHRocm93cyBFeGNlcHRpb24geworCUtleUluZm9GYWN0b3J5IGZhY3RvcnkgPSBLZXlJbmZvRmFjdG9yeS5nZXRJbnN0YW5jZQorCSAgICAoIkRPTSIsIG5ldyBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbS5YTUxEU2lnUkkoKSk7CisJWDUwOURhdGEgb2JqID0gZmFjdG9yeS5uZXdYNTA5RGF0YShDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KCJDTj1mb28iKSk7CisJS2V5SW5mbyBpbmZvID0gZmFjdG9yeS5uZXdLZXlJbmZvKENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3Qob2JqKSk7CisJLy9AQEBAQHdoYXQgYWJvdXQgb3RoZXIgdHlwZXMgb2YgWDUwOURhdGEsIGkuZS4gc3ViamVjdCBuYW1lIFN0cmluZywKKwkvLyBYNTA5SXNzdWVyU2VyaWFsIG9iamVjdHMsIGV0Yz8KKwlYTUxTaWduYXR1cmVGYWN0b3J5IGRzaWdGYWMgPSBYTUxTaWduYXR1cmVGYWN0b3J5LmdldEluc3RhbmNlCisJICAgICgiRE9NIiwgbmV3IG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tLlhNTERTaWdSSSgpKTsKKwlTaWduYXR1cmVNZXRob2Qgc20xID0gCisJICAgIGRzaWdGYWMubmV3U2lnbmF0dXJlTWV0aG9kKFNpZ25hdHVyZU1ldGhvZC5EU0FfU0hBMSwgbnVsbCk7CisJU2lnbmF0dXJlTWV0aG9kIHNtMiA9IAorCSAgICBkc2lnRmFjLm5ld1NpZ25hdHVyZU1ldGhvZChTaWduYXR1cmVNZXRob2QuUlNBX1NIQTEsIG51bGwpOworCisJYXNzZXJ0VHJ1ZShjb21wYXJlS2V5KGtleSwgc2VsZWN0b3IxLnNlbGVjdAorCSAgICAoaW5mbywgS2V5U2VsZWN0b3IuUHVycG9zZS5WRVJJRlksIHNtMSwgbnVsbCkuZ2V0S2V5KCkpKTsKKwlhc3NlcnRUcnVlKGNvbXBhcmVLZXkoa2V5LCBzZWxlY3RvcjEuc2VsZWN0CisJICAgIChpbmZvLCBLZXlTZWxlY3Rvci5QdXJwb3NlLlZFUklGWSwgc20yLCBudWxsKS5nZXRLZXkoKSkpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGNvbXBhcmVLZXkoT2JqZWN0IGFuc3dlciwgS2V5IGtleSkgeworCWJvb2xlYW4gcmVzdWx0ID0gZmFsc2U7CisJaWYgKGFuc3dlciBpbnN0YW5jZW9mIE15T3duS2V5KSB7CisJICAgIHJlc3VsdCA9ICgoTXlPd25LZXkpIGFuc3dlciA9PSBrZXkpOworCX0gZWxzZSBpZiAoYW5zd2VyIGluc3RhbmNlb2YgWDUwOUNlcnRpZmljYXRlKSB7CisJICAgIHJlc3VsdCA9CisJICAgICAgICAoKFg1MDlDZXJ0aWZpY2F0ZSlhbnN3ZXIpLmdldFB1YmxpY0tleSgpLmVxdWFscyhrZXkpOworCX0KKwlyZXR1cm4gcmVzdWx0OworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L0tleVNlbGVjdG9ycy5qYXZhIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvS2V5U2VsZWN0b3JzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UzNzEwNgotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L0tleVNlbGVjdG9ycy5qYXZhCkBAIC0wLDAgKzEsMzg2IEBACisvKgorICogQ29weXJpZ2h0IDIwMDYtMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8udGVzdDsKKworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5Lio7CitpbXBvcnQgamF2YS5zZWN1cml0eS5jZXJ0Lio7CitpbXBvcnQgamF2YS51dGlsLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvLio7CitpbXBvcnQgamF2YXguY3J5cHRvLlNlY3JldEtleTsKK2ltcG9ydCBzdW4uc2VjdXJpdHkudXRpbC5EZXJWYWx1ZTsKK2ltcG9ydCBzdW4uc2VjdXJpdHkueDUwOS5YNTAwTmFtZTsKKworCisvKioKKyAqIFRoaXMgaXMgYSBjbGFzcyB3aGljaCBzdXBwbGllcyBzZXZlcmFsIEtleVNlbGVjdG9yIGltcGxlbWVudGF0aW9ucworICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgVmFsZXJpZSBQZW5nCisgKi8KK3B1YmxpYyBjbGFzcyBLZXlTZWxlY3RvcnMgeworCisgICAgLyoqCisgICAgICogS2V5U2VsZWN0b3Igd2hpY2ggd291bGQgYWx3YXlzIHJldHVybiB0aGUgc2VjcmV0IGtleSBzcGVjaWZpZWQgaW4gaXRzIAorICAgICAqIGNvbnN0cnVjdG9yLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgU2VjcmV0S2V5U2VsZWN0b3IgZXh0ZW5kcyBLZXlTZWxlY3RvciB7CisJcHJpdmF0ZSBTZWNyZXRLZXkga2V5OworCXB1YmxpYyBTZWNyZXRLZXlTZWxlY3RvcihieXRlW10gYnl0ZXMpIHsKKwkgICAga2V5ID0gd3JhcEJ5dGVzKGJ5dGVzKTsKKwl9CisJcHVibGljIFNlY3JldEtleVNlbGVjdG9yKFNlY3JldEtleSBrZXkpIHsKKwkgICAgdGhpcy5rZXkgPSBrZXk7CisJfQorICAgIAorCXB1YmxpYyBLZXlTZWxlY3RvclJlc3VsdCBzZWxlY3QoS2V5SW5mbyBraSwgCisJCQkJCUtleVNlbGVjdG9yLlB1cnBvc2UgcHVycG9zZSwKKwkJCQkJQWxnb3JpdGhtTWV0aG9kIG1ldGhvZCwgCisJCQkJCVhNTENyeXB0b0NvbnRleHQgY29udGV4dCkgCisJICAgIHRocm93cyBLZXlTZWxlY3RvckV4Y2VwdGlvbiB7CisJICAgIHJldHVybiBuZXcgU2ltcGxlS1NSZXN1bHQoa2V5KTsKKwl9CisJCisJcHJpdmF0ZSBTZWNyZXRLZXkgd3JhcEJ5dGVzKGZpbmFsIGJ5dGVbXSBieXRlcykgeworCSAgICByZXR1cm4gbmV3IFNlY3JldEtleSgpIHsKKwkJICAgIHB1YmxpYyBTdHJpbmcgZ2V0Rm9ybWF0KCkgeworCQkJcmV0dXJuICJSQVciOworCQkgICAgfQorCQkgICAgCisJCSAgICBwdWJsaWMgU3RyaW5nIGdldEFsZ29yaXRobSgpIHsKKwkJCXJldHVybiAiU2VjcmV0IGtleSI7CisJCSAgICB9CisJCSAgICAKKwkJICAgIHB1YmxpYyBieXRlW10gZ2V0RW5jb2RlZCgpIHsKKwkJCXJldHVybiAoYnl0ZVtdKSBieXRlcy5jbG9uZSgpOworCQkgICAgfQorCQl9OworCX0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBLZXlTZWxlY3RvciB3aGljaCB3b3VsZCByZXRyaWV2ZSB0aGUgWDUwOUNlcnRpZmljYXRlIG91dCBvZiB0aGUgCisgICAgICogS2V5SW5mbyBlbGVtZW50IGFuZCByZXR1cm4gdGhlIHB1YmxpYyBrZXkuCisgICAgICogTk9URTogSWYgdGhlcmUgaXMgYW4gWDUwOUNSTCBpbiB0aGUgS2V5SW5mbyBlbGVtZW50LCB0aGVuIHJldm9rZWQKKyAgICAgKiBjZXJ0aWZpY2F0ZSB3aWxsIGJlIGlnbm9yZWQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBSYXdYNTA5S2V5U2VsZWN0b3IgZXh0ZW5kcyBLZXlTZWxlY3RvciB7CisgICAgIAorCXB1YmxpYyBLZXlTZWxlY3RvclJlc3VsdCBzZWxlY3QoS2V5SW5mbyBrZXlJbmZvLCAKKwkJCQkJS2V5U2VsZWN0b3IuUHVycG9zZSBwdXJwb3NlLCAKKwkJCQkJQWxnb3JpdGhtTWV0aG9kIG1ldGhvZCwgCisJCQkJCVhNTENyeXB0b0NvbnRleHQgY29udGV4dCkgCisJICAgIHRocm93cyBLZXlTZWxlY3RvckV4Y2VwdGlvbiB7CisJICAgIGlmIChrZXlJbmZvID09IG51bGwpIHsKKwkJdGhyb3cgbmV3IEtleVNlbGVjdG9yRXhjZXB0aW9uKCJOdWxsIEtleUluZm8gb2JqZWN0ISIpOworCSAgICB9IAorCSAgICAvLyBzZWFyY2ggZm9yIFg1MDlEYXRhIGluIGtleWluZm8KKwkgICAgSXRlcmF0b3IgaXRlciA9IGtleUluZm8uZ2V0Q29udGVudCgpLml0ZXJhdG9yKCk7CisJICAgIHdoaWxlIChpdGVyLmhhc05leHQoKSkgeworCQlYTUxTdHJ1Y3R1cmUga2lUeXBlID0gKFhNTFN0cnVjdHVyZSkgaXRlci5uZXh0KCk7CisJCWlmIChraVR5cGUgaW5zdGFuY2VvZiBYNTA5RGF0YSkgeworCQkgICAgWDUwOURhdGEgeGQgPSAoWDUwOURhdGEpIGtpVHlwZTsKKwkJICAgIE9iamVjdFtdIGVudHJpZXMgPSB4ZC5nZXRDb250ZW50KCkudG9BcnJheSgpOworCQkgICAgWDUwOUNSTCBjcmwgPSBudWxsOworCQkgICAgLy8gTG9va2luZyBmb3IgQ1JMIGJlZm9yZSBmaW5kaW5nIGNlcnRpZmljYXRlcworCQkgICAgZm9yIChpbnQgaSA9IDA7IChpPGVudHJpZXMubGVuZ3RoJiZjcmwgIT0gbnVsbCk7IGkrKykgeworCQkJaWYgKGVudHJpZXNbaV0gaW5zdGFuY2VvZiBYNTA5Q1JMKSB7CisJCQkgICAgY3JsID0gKFg1MDlDUkwpIGVudHJpZXNbaV07CisJCQl9CisJCSAgICB9CisJCSAgICBJdGVyYXRvciB4aSA9IHhkLmdldENvbnRlbnQoKS5pdGVyYXRvcigpOworCQkgICAgYm9vbGVhbiBoYXNDUkwgPSBmYWxzZTsKKwkJICAgIHdoaWxlICh4aS5oYXNOZXh0KCkpIHsKKwkJCU9iamVjdCBvID0geGkubmV4dCgpOworCQkJLy8gc2tpcCBub24tWDUwOUNlcnRpZmljYXRlIGVudHJpZXMKKwkJCWlmIChvIGluc3RhbmNlb2YgWDUwOUNlcnRpZmljYXRlKSB7CisJCQkgICAgaWYgKChwdXJwb3NlICE9IEtleVNlbGVjdG9yLlB1cnBvc2UuVkVSSUZZKSAmJiAKKwkJCQkoY3JsICE9IG51bGwpICYmIAorCQkJCWNybC5pc1Jldm9rZWQoKFg1MDlDZXJ0aWZpY2F0ZSlvKSkgeworCQkJCWNvbnRpbnVlOworCQkJICAgIH0gZWxzZSB7CisJCQkJcmV0dXJuIG5ldyBTaW1wbGVLU1Jlc3VsdAorCQkJCSAgICAoKChYNTA5Q2VydGlmaWNhdGUpbykuZ2V0UHVibGljS2V5KCkpOworCQkJICAgIH0KKwkJCX0KKwkJICAgIH0KKwkJfQorCSAgICB9CisJICAgIHRocm93IG5ldyBLZXlTZWxlY3RvckV4Y2VwdGlvbigiTm8gWDUwOUNlcnRpZmljYXRlIGZvdW5kISIpOworCX0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBLZXlTZWxlY3RvciB3aGljaCB3b3VsZCByZXRyaWV2ZSB0aGUgcHVibGljIGtleSBvdXQgb2YgdGhlIAorICAgICAqIEtleVZhbHVlIGVsZW1lbnQgYW5kIHJldHVybiBpdC4KKyAgICAgKiBOT1RFOiBJZiB0aGUga2V5IGFsZ29yaXRobSBkb2Vzbid0IG1hdGNoIHNpZ25hdHVyZSBhbGdvcml0aG0sCisgICAgICogdGhlbiB0aGUgcHVibGljIGtleSB3aWxsIGJlIGlnbm9yZWQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBLZXlWYWx1ZUtleVNlbGVjdG9yIGV4dGVuZHMgS2V5U2VsZWN0b3IgeworCXB1YmxpYyBLZXlTZWxlY3RvclJlc3VsdCBzZWxlY3QoS2V5SW5mbyBrZXlJbmZvLCAKKwkJCQkJS2V5U2VsZWN0b3IuUHVycG9zZSBwdXJwb3NlLCAKKwkJCQkJQWxnb3JpdGhtTWV0aG9kIG1ldGhvZCwgCisJCQkJCVhNTENyeXB0b0NvbnRleHQgY29udGV4dCkgCisJICAgIHRocm93cyBLZXlTZWxlY3RvckV4Y2VwdGlvbiB7CisJICAgIGlmIChrZXlJbmZvID09IG51bGwpIHsKKwkJdGhyb3cgbmV3IEtleVNlbGVjdG9yRXhjZXB0aW9uKCJOdWxsIEtleUluZm8gb2JqZWN0ISIpOworCSAgICB9CisJICAgIFNpZ25hdHVyZU1ldGhvZCBzbSA9IChTaWduYXR1cmVNZXRob2QpIG1ldGhvZDsKKwkgICAgTGlzdCBsaXN0ID0ga2V5SW5mby5nZXRDb250ZW50KCk7CisJICAgIAorCSAgICBmb3IgKGludCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyBpKyspIHsKKwkJWE1MU3RydWN0dXJlIHhtbFN0cnVjdHVyZSA9IChYTUxTdHJ1Y3R1cmUpIGxpc3QuZ2V0KGkpOworCQlpZiAoeG1sU3RydWN0dXJlIGluc3RhbmNlb2YgS2V5VmFsdWUpIHsKKwkJICAgIFB1YmxpY0tleSBwayA9IG51bGw7CisJCSAgICB0cnkgeworCQkJcGsgPSAoKEtleVZhbHVlKXhtbFN0cnVjdHVyZSkuZ2V0UHVibGljS2V5KCk7CisJCSAgICB9IGNhdGNoIChLZXlFeGNlcHRpb24ga2UpIHsKKwkJCXRocm93IG5ldyBLZXlTZWxlY3RvckV4Y2VwdGlvbihrZSk7CisJCSAgICB9CisJCSAgICByZXR1cm4gbmV3IFNpbXBsZUtTUmVzdWx0KHBrKTsKKwkJfQorCSAgICB9CisJICAgIHRocm93IG5ldyBLZXlTZWxlY3RvckV4Y2VwdGlvbigiTm8gS2V5VmFsdWUgZWxlbWVudCBmb3VuZCEiKTsKKwl9CisgICAgfQorCisgICAgLyoqCisgICAgICogS2V5U2VsZWN0b3Igd2hpY2ggd291bGQgcGVyZm9ybSBzcGVjaWFsIGxvb2t1cCBhcyBkb2N1bWVudGVkCisgICAgICogYnkgdGhlIGllL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMgdGVzdGNhc2VzIGFuZCByZXR1cm4gdGhlIAorICAgICAqIG1hdGNoaW5nIHB1YmxpYyBrZXkuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBDb2xsZWN0aW9uS2V5U2VsZWN0b3IgZXh0ZW5kcyBLZXlTZWxlY3RvciB7CisJcHJpdmF0ZSBDZXJ0aWZpY2F0ZUZhY3RvcnkgY2VydEZhYzsKKwlwcml2YXRlIEZpbGUgY2VydERpcjsKKwlwcml2YXRlIFZlY3RvciBjZXJ0czsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUFUQ0hfU1VCSkVDVCA9IDA7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1BVENIX0lTU1VFUiA9IDE7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1BVENIX1NFUklBTCA9IDI7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1BVENIX1NVQkpFQ1RfS0VZX0lEID0gMzsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUFUQ0hfQ0VSVElGSUNBVEUgPSA0OworCQorCXB1YmxpYyBDb2xsZWN0aW9uS2V5U2VsZWN0b3IoRmlsZSBkaXIpIHsKKwkgICAgY2VydERpciA9IGRpcjsKKwkgICAgdHJ5IHsKKwkJY2VydEZhYyA9IENlcnRpZmljYXRlRmFjdG9yeS5nZXRJbnN0YW5jZSgiWDUwOSIpOworCSAgICB9IGNhdGNoIChDZXJ0aWZpY2F0ZUV4Y2VwdGlvbiBleCkgeworCQkvLyBub3QgZ29pbmcgdG8gaGFwcGVuCisJICAgIH0KKwkgICAgY2VydHMgPSBuZXcgVmVjdG9yKCk7CisJICAgIEZpbGVbXSBmaWxlcyA9IG5ldyBGaWxlKGNlcnREaXIsICJjZXJ0cyIpLmxpc3RGaWxlcygpOworCSAgICBmb3IgKGludCBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7CisJCXRyeSB7CisJCSAgICBjZXJ0cy5hZGQoKFg1MDlDZXJ0aWZpY2F0ZSljZXJ0RmFjLmdlbmVyYXRlQ2VydGlmaWNhdGUKKwkJCSAgICAgIChuZXcgRmlsZUlucHV0U3RyZWFtKGZpbGVzW2ldKSkpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKwkJICAgIC8vIGlnbm9yZSBub24tY2VydCBmaWxlcworCQl9CisJICAgIH0KKwl9CisJCisJcHVibGljIFZlY3RvciBtYXRjaChpbnQgbWF0Y2hUeXBlLCBPYmplY3QgdmFsdWUsIFZlY3RvciBwb29sKSB7CisJICAgIFZlY3RvciBtYXRjaFJlc3VsdCA9IG5ldyBWZWN0b3IoKTsKKwkgICAgZm9yIChpbnQgaj0wOyBqIDwgcG9vbC5zaXplKCk7IGorKykgeworCQlYNTA5Q2VydGlmaWNhdGUgYyA9IChYNTA5Q2VydGlmaWNhdGUpIHBvb2wuZ2V0KGopOworCQlzd2l0Y2ggKG1hdGNoVHlwZSkgeworCQljYXNlIE1BVENIX1NVQkpFQ1Q6CisJCSAgICB0cnkgeworCQkgICAgICAgIGlmIChjLmdldFN1YmplY3RETigpLmVxdWFscyhuZXcgWDUwME5hbWUoKFN0cmluZyl2YWx1ZSkpKSB7CisJCQkgICAgbWF0Y2hSZXN1bHQuYWRkKGMpOworCQkgICAgICAgIH0KKwkJICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGlvZSkgeyB9CisJCSAgICBicmVhazsKKwkJY2FzZSBNQVRDSF9JU1NVRVI6CisJCSAgICB0cnkgeworCQkgICAgICAgIGlmIChjLmdldElzc3VlckROKCkuZXF1YWxzKG5ldyBYNTAwTmFtZSgoU3RyaW5nKXZhbHVlKSkpIHsKKwkJCSAgICBtYXRjaFJlc3VsdC5hZGQoYyk7CisJCSAgICAgICAgfQorCQkgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gaW9lKSB7IH0KKwkJICAgIGJyZWFrOworCQljYXNlIE1BVENIX1NFUklBTDoKKwkJICAgIGlmIChjLmdldFNlcmlhbE51bWJlcigpLmVxdWFscyh2YWx1ZSkpIHsKKwkJCW1hdGNoUmVzdWx0LmFkZChjKTsKKwkJICAgIH0KKwkJICAgIAorCQkgICAgYnJlYWs7CisJCWNhc2UgTUFUQ0hfU1VCSkVDVF9LRVlfSUQ6CisJCSAgICBieXRlW10gZXh0ZW5zaW9uID0gYy5nZXRFeHRlbnNpb25WYWx1ZSgiMi41LjI5LjE0Iik7CisJCSAgICBpZiAoZXh0ZW5zaW9uICE9IG51bGwpIHsKKwkJCXRyeSB7CisJCQkgICAgRGVyVmFsdWUgZGVyVmFsdWUgPSBuZXcgRGVyVmFsdWUoZXh0ZW5zaW9uKTsKKwkJCSAgICBEZXJWYWx1ZSBkZXJWYWx1ZTIgPSBuZXcgRGVyVmFsdWUoZGVyVmFsdWUuZ2V0T2N0ZXRTdHJpbmcoKSk7CisJCQkgICAgYnl0ZVtdIGV4dFZhbCA9IGRlclZhbHVlMi5nZXRPY3RldFN0cmluZygpOworCQkJICAgIAorCQkJICAgIGlmIChBcnJheXMuZXF1YWxzKGV4dFZhbCwgKGJ5dGVbXSkgdmFsdWUpKSB7CisJCQkJbWF0Y2hSZXN1bHQuYWRkKGMpOworCQkJICAgIH0KKwkJCX0gY2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7IH0KKwkJICAgIH0KKwkJICAgIGJyZWFrOworCQljYXNlIE1BVENIX0NFUlRJRklDQVRFOgorCQkgICAgaWYgKGMuZXF1YWxzKHZhbHVlKSkgeworCQkJbWF0Y2hSZXN1bHQuYWRkKGMpOworCQkgICAgfQorCQkgICAgYnJlYWs7CisJCX0KKwkgICAgfQorCSAgICByZXR1cm4gbWF0Y2hSZXN1bHQ7CisJfQorCQorCXB1YmxpYyBLZXlTZWxlY3RvclJlc3VsdCBzZWxlY3QoS2V5SW5mbyBrZXlJbmZvLCAKKwkJCQkJS2V5U2VsZWN0b3IuUHVycG9zZSBwdXJwb3NlLCAKKwkJCQkJQWxnb3JpdGhtTWV0aG9kIG1ldGhvZCwgCisJCQkJCVhNTENyeXB0b0NvbnRleHQgY29udGV4dCkgCisJICAgIHRocm93cyBLZXlTZWxlY3RvckV4Y2VwdGlvbiB7CisJICAgIGlmIChrZXlJbmZvID09IG51bGwpIHsKKwkJdGhyb3cgbmV3IEtleVNlbGVjdG9yRXhjZXB0aW9uKCJOdWxsIEtleUluZm8gb2JqZWN0ISIpOworCSAgICB9CisJICAgIEl0ZXJhdG9yIGl0ZXIgPSBrZXlJbmZvLmdldENvbnRlbnQoKS5pdGVyYXRvcigpOworCSAgICB3aGlsZSAoaXRlci5oYXNOZXh0KCkpIHsKKwkJWE1MU3RydWN0dXJlIHhtbFN0cnVjdHVyZSA9IChYTUxTdHJ1Y3R1cmUpIGl0ZXIubmV4dCgpOworCQl0cnkgeworCQkgICAgaWYgKHhtbFN0cnVjdHVyZSBpbnN0YW5jZW9mIEtleU5hbWUpIHsKKwkJCVN0cmluZyBuYW1lID0gKChLZXlOYW1lKXhtbFN0cnVjdHVyZSkuZ2V0TmFtZSgpOworCQkJUHVibGljS2V5IHBrID0gbnVsbDsKKwkJCXRyeSB7CisJCQkgICAgLy8gTG9va3VwIHRoZSBwdWJsaWMga2V5IHVzaW5nIHRoZSBrZXkgbmFtZSAnWHh4JywgCisJCQkgICAgLy8gaS5lLiB0aGUgcHVibGljIGtleSBpcyBpbiAiY2VydHMveHh4LmNydCIuCisJCQkgICAgRmlsZSBjZXJ0RmlsZSA9IG5ldyBGaWxlKG5ldyBGaWxlKGNlcnREaXIsICJjZXJ0cyIpLAorCQkJCW5hbWUudG9Mb3dlckNhc2UoKSsiLmNydCIpOworCQkJICAgIFg1MDlDZXJ0aWZpY2F0ZSBjZXJ0ID0gKFg1MDlDZXJ0aWZpY2F0ZSkgCisJCQkgICAgICAgIGNlcnRGYWMuZ2VuZXJhdGVDZXJ0aWZpY2F0ZQorCQkJICAgICAgICAobmV3IEZpbGVJbnB1dFN0cmVhbShjZXJ0RmlsZSkpOworCQkJICAgIHBrID0gY2VydC5nZXRQdWJsaWNLZXkoKTsKKwkJICAgICAgICB9IGNhdGNoIChGaWxlTm90Rm91bmRFeGNlcHRpb24gZSkgeworCQkJICAgIC8vIGFzc3VtZSBLZXlOYW1lIGNvbnRhaW5zIHN1YmplY3QgRE4gYW5kIHNlYXJjaAorCQkJICAgIC8vIGNvbGxlY3Rpb24gb2YgY2VydHMgZm9yIG1hdGNoCisJCQkgICAgVmVjdG9yIHJlc3VsdCA9IG1hdGNoKE1BVENIX1NVQkpFQ1QsIG5hbWUsIGNlcnRzKTsKKwkJCSAgICBpbnQgbnVtT2ZNYXRjaGVzID0gKHJlc3VsdD09bnVsbD8gMDpyZXN1bHQuc2l6ZSgpKTsKKwkJCSAgICBpZiAobnVtT2ZNYXRjaGVzICE9IDEpIHsKKwkJCSAgICAgICAgdGhyb3cgbmV3IEtleVNlbGVjdG9yRXhjZXB0aW9uCisJCQkJICAgICgobnVtT2ZNYXRjaGVzPT0wPyJObyI6Ik1vcmUgdGhhbiBvbmUiKSArIAorCQkJCSAgICAgIiBtYXRjaCBmb3VuZCIpOworCQkJICAgIH0KKwkJCSAgICBwayA9KChYNTA5Q2VydGlmaWNhdGUpcmVzdWx0LmdldCgwKSkuZ2V0UHVibGljS2V5KCk7CisJCQl9CisJCQlyZXR1cm4gbmV3IFNpbXBsZUtTUmVzdWx0KHBrKTsKKwkJICAgIH0gZWxzZSBpZiAoeG1sU3RydWN0dXJlIGluc3RhbmNlb2YgUmV0cmlldmFsTWV0aG9kKSB7CisJCQkvLyBMb29rdXAgdGhlIHB1YmxpYyBrZXkgdXNpbmcgdGhlIHJldHJpZXZlbCBtZXRob2QuCisJCQkvLyBOT1RFOiBvbmx5IFg1MDlDZXJ0aWZpY2F0ZSB0eXBlIGlzIHN1cHBvcnRlZC4KKwkJCVJldHJpZXZhbE1ldGhvZCBybSA9IChSZXRyaWV2YWxNZXRob2QpIHhtbFN0cnVjdHVyZTsKKwkJCVN0cmluZyB0eXBlID0gcm0uZ2V0VHlwZSgpOworCQkJaWYgKHR5cGUuZXF1YWxzKFg1MDlEYXRhLlJBV19YNTA5X0NFUlRJRklDQVRFX1RZUEUpKSB7CisJCQkgICAgU3RyaW5nIHVyaSA9IHJtLmdldFVSSSgpOworCQkJICAgIFg1MDlDZXJ0aWZpY2F0ZSBjZXJ0ID0gKFg1MDlDZXJ0aWZpY2F0ZSkgCisJCQkJY2VydEZhYy5nZW5lcmF0ZUNlcnRpZmljYXRlCisJCQkJKG5ldyBGaWxlSW5wdXRTdHJlYW0obmV3IEZpbGUoY2VydERpciwgdXJpKSkpOworCQkJICAgIHJldHVybiBuZXcgU2ltcGxlS1NSZXN1bHQoY2VydC5nZXRQdWJsaWNLZXkoKSk7CisJCQl9IGVsc2UgeworCQkJICAgIHRocm93IG5ldyBLZXlTZWxlY3RvckV4Y2VwdGlvbgorCQkJCSgiVW5zdXBwb3J0ZWQgUmV0cmlldmFsTWV0aG9kIHR5cGUiKTsKKwkJCX0KKwkJICAgIH0gZWxzZSBpZiAoeG1sU3RydWN0dXJlIGluc3RhbmNlb2YgWDUwOURhdGEpIHsKKwkJCUxpc3QgY29udGVudCA9ICgoWDUwOURhdGEpeG1sU3RydWN0dXJlKS5nZXRDb250ZW50KCk7CisJCQlpbnQgc2l6ZSA9IGNvbnRlbnQuc2l6ZSgpOworCQkJVmVjdG9yIHJlc3VsdCA9IG51bGw7CisJCQkvLyBMb29rdXAgdGhlIHB1YmxpYyBrZXkgdXNpbmcgdGhlIGluZm9ybWF0aW9uIAorCQkJLy8gc3BlY2lmaWVkIGluIFg1MDlEYXRhIGVsZW1lbnQsIGkuZS4gc2VhcmNoaW5nCisJCQkvLyBvdmVyIHRoZSBjb2xsZWN0aW9uIG9mIGNlcnRpZmljYXRlIGZpbGVzIHVuZGVyCisJCQkvLyAiY2VydHMiIHN1YmRpcmVjdG9yeSBhbmQgcmV0dXJuIHRob3NlIG1hdGNoLgorCQkJZm9yIChpbnQgayA9IDA7IGs8c2l6ZTsgaysrKSB7CisJCQkgICAgT2JqZWN0IG9iaiA9IGNvbnRlbnQuZ2V0KGspOworCQkJICAgIGlmIChvYmogaW5zdGFuY2VvZiBTdHJpbmcpIHsKKwkJCQlyZXN1bHQgPSBtYXRjaChNQVRDSF9TVUJKRUNULCBvYmosIGNlcnRzKTsKKwkJCSAgICB9IGVsc2UgaWYgKG9iaiBpbnN0YW5jZW9mIGJ5dGVbXSkgeworCQkJCXJlc3VsdCA9IG1hdGNoKE1BVENIX1NVQkpFQ1RfS0VZX0lELCBvYmosIAorCQkJCQkgICAgICAgY2VydHMpOworCQkJICAgIH0gZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgWDUwOUNlcnRpZmljYXRlKSB7CisJCQkJcmVzdWx0ID0gbWF0Y2goTUFUQ0hfQ0VSVElGSUNBVEUsIG9iaiwgY2VydHMpOworCQkJICAgIH0gZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgWDUwOUlzc3VlclNlcmlhbCkgeworCQkJCVg1MDlJc3N1ZXJTZXJpYWwgaXMgPSAoWDUwOUlzc3VlclNlcmlhbCkgb2JqOworCQkJCXJlc3VsdCA9IG1hdGNoKE1BVENIX1NFUklBTCwgCisJCQkJCSAgICAgICBpcy5nZXRTZXJpYWxOdW1iZXIoKSwgY2VydHMpOworCQkJCXJlc3VsdCA9IG1hdGNoKE1BVENIX0lTU1VFUiwgCisJCQkJCSAgICAgICBpcy5nZXRJc3N1ZXJOYW1lKCksIHJlc3VsdCk7CisJCQkgICAgfSBlbHNlIHsKKwkJCQl0aHJvdyBuZXcgS2V5U2VsZWN0b3JFeGNlcHRpb24oIlVuc3VwcG9ydGVkIFg1MDlEYXRhOiAiICsgb2JqKTsKKwkJCSAgICB9CisJCQl9CisJCQlpbnQgbnVtT2ZNYXRjaGVzID0gKHJlc3VsdD09bnVsbD8gMDpyZXN1bHQuc2l6ZSgpKTsKKwkJCWlmIChudW1PZk1hdGNoZXMgIT0gMSkgeworCQkJICAgIHRocm93IG5ldyBLZXlTZWxlY3RvckV4Y2VwdGlvbgorCQkJCSgobnVtT2ZNYXRjaGVzPT0wPyJObyI6Ik1vcmUgdGhhbiBvbmUiKSArIAorCQkJCSAiIG1hdGNoIGZvdW5kIik7CisJCQl9CisJCQlyZXR1cm4gbmV3IFNpbXBsZUtTUmVzdWx0KCgoWDUwOUNlcnRpZmljYXRlKQorCQkJCQkgIHJlc3VsdC5nZXQoMCkpLmdldFB1YmxpY0tleSgpKTsKKwkJICAgIH0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJCSAgICB0aHJvdyBuZXcgS2V5U2VsZWN0b3JFeGNlcHRpb24oZXgpOworCQl9CisJICAgIH0KKwkgICAgdGhyb3cgbmV3IEtleVNlbGVjdG9yRXhjZXB0aW9uKCJObyBtYXRjaGluZyBrZXkgZm91bmQhIik7CisJfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIEJ5dGVVdGlsIHsKKwkKKwlwcml2YXRlIHN0YXRpYyBTdHJpbmcgbWFwcGluZyA9ICIwMTIzNDU2Nzg5QUJDREVGIjsKKwlwcml2YXRlIHN0YXRpYyBpbnQgbnVtQnl0ZXNQZXJSb3cgPSA2OworCQorCXByaXZhdGUgc3RhdGljIFN0cmluZyBnZXRIZXgoYnl0ZSB2YWx1ZSkgeworCSAgICBpbnQgbG93ID0gdmFsdWUgJiAweDBmOworCSAgICBpbnQgaGlnaCA9ICgodmFsdWUgPj4gNCkgJiAweDBmKTsKKwkgICAgY2hhcltdIHJlcyA9IG5ldyBjaGFyWzJdOworCSAgICByZXNbMF0gPSBtYXBwaW5nLmNoYXJBdChoaWdoKTsKKwkgICAgcmVzWzFdID0gbWFwcGluZy5jaGFyQXQobG93KTsKKwkgICAgcmV0dXJuIG5ldyBTdHJpbmcocmVzKTsKKwl9CisKKwlwdWJsaWMgc3RhdGljIFN0cmluZyBkdW1wQXJyYXkoYnl0ZVtdIGluKSB7CisJICAgIGludCBudW1EdW1wZWQgPSAwOworCSAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcig1MTIpOworCSAgICBidWYuYXBwZW5kKCJ7Iik7CisJICAgIGZvciAoaW50IGk9MDtpPChpbi5sZW5ndGgvbnVtQnl0ZXNQZXJSb3cpOyBpKyspIHsKKwkJZm9yIChpbnQgaj0wOyBqPChudW1CeXRlc1BlclJvdyk7IGorKykgeworCQkgICAgYnVmLmFwcGVuZCgiKGJ5dGUpMHgiICsgZ2V0SGV4KGluW2kqbnVtQnl0ZXNQZXJSb3cral0pICsgCisJCQkgICAgICAgIiwgIik7CisJCX0KKwkJbnVtRHVtcGVkICs9IG51bUJ5dGVzUGVyUm93OworCSAgICB9CisJICAgIHdoaWxlIChudW1EdW1wZWQgPCBpbi5sZW5ndGgpIHsKKwkJYnVmLmFwcGVuZCgiKGJ5dGUpMHgiICsgZ2V0SGV4KGluW251bUR1bXBlZF0pICsgIiAiKTsKKwkJbnVtRHVtcGVkICs9IDE7CisJICAgIH0KKwkgICAgYnVmLmFwcGVuZCgifSIpOworCSAgICByZXR1cm4gYnVmLnRvU3RyaW5nKCk7CisJfQorICAgIH0KK30KKworY2xhc3MgU2ltcGxlS1NSZXN1bHQgaW1wbGVtZW50cyBLZXlTZWxlY3RvclJlc3VsdCB7CisgICAgcHJpdmF0ZSBmaW5hbCBLZXkga2V5OworICAgIAorICAgIFNpbXBsZUtTUmVzdWx0KEtleSBrZXkpIHsgdGhpcy5rZXkgPSBrZXk7IH0KKyAgICAKKyAgICBwdWJsaWMgS2V5IGdldEtleSgpIHsgcmV0dXJuIGtleTsgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvT2N0ZXRTdHJlYW1EYXRhVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvT2N0ZXRTdHJlYW1EYXRhVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4Zjg3ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9PY3RldFN0cmVhbURhdGFUZXN0LmphdmEKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA2IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by50ZXN0OworCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEudXRpbC4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uKjsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay4qOworCisvKioKKyAqIFVuaXQgdGVzdCBmb3IgamF2YXgueG1sLmNyeXB0by5PY3RldFN0cmVhbURhdGEKKyAqCisgKiBAdmVyc2lvbiAkSWQkCisgKiBAYXV0aG9yIFZhbGVyaWUgUGVuZworICovCitwdWJsaWMgY2xhc3MgT2N0ZXRTdHJlYW1EYXRhVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgIHB1YmxpYyBPY3RldFN0cmVhbURhdGFUZXN0KCkgeworCXN1cGVyKCJPY3RldFN0cmVhbURhdGFUZXN0Iik7CisgICAgfQorCisgICAgcHVibGljIE9jdGV0U3RyZWFtRGF0YVRlc3QoU3RyaW5nIG5hbWUpIHsKKwlzdXBlcihuYW1lKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24geyAKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgdGVhckRvd24oKSB7fQorICAgIAorICAgIHB1YmxpYyB2b2lkIHRlc3RDb25zdHJ1Y3RvcigpIHsKKwkvLyB0ZXN0IE9jdGV0U3RyZWFtRGF0YShJbnB1dFN0cmVhbSkgYW5kIAorCS8vIE9jdGV0U3RyZWFtRGF0YShJbnB1dFN0cmVhbSwgU3RyaW5nLCBTdHJpbmcpCisJT2N0ZXRTdHJlYW1EYXRhIG9zZGF0YTsKKwl0cnkgeworCSAgICBvc2RhdGEgPSBuZXcgT2N0ZXRTdHJlYW1EYXRhKG51bGwpOyAKKwkgICAgZmFpbCgiU2hvdWxkIHJhaXNlIGEgTlBFIGZvciBudWxsIGlucHV0IHN0cmVhbSIpOyAKKwl9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBucGUpIHt9CQorCXRyeSB7CisJICAgIG9zZGF0YSA9IG5ldyBPY3RldFN0cmVhbURhdGEobnVsbCwgInVyaSIsICJtaW1lVHlwZSIpOworCSAgICBmYWlsKCJTaG91bGQgcmFpc2UgYSBOUEUgZm9yIG51bGwgaW5wdXQgc3RyZWFtIik7IAorCX0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIG5wZSkge30KKworCWludCBsZW4gPSAzMDA7CisJYnl0ZVtdIGluID0gbmV3IGJ5dGVbbGVuXTsKKwluZXcgUmFuZG9tKCkubmV4dEJ5dGVzKGluKTsKKwlCeXRlQXJyYXlJbnB1dFN0cmVhbSBiYWlzID0gbmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGluKTsKKwl0cnkgeworCSAgICBvc2RhdGEgPSBuZXcgT2N0ZXRTdHJlYW1EYXRhKGJhaXMpOyAKKwkgICAgYXNzZXJ0Tm90TnVsbChvc2RhdGEpOworCSAgICBhc3NlcnRFcXVhbHMob3NkYXRhLmdldE9jdGV0U3RyZWFtKCksIGJhaXMpOworCSAgICBhc3NlcnROdWxsKG9zZGF0YS5nZXRVUkkoKSk7CisJICAgIGFzc2VydE51bGwob3NkYXRhLmdldE1pbWVUeXBlKCkpOworCQorCSAgICBvc2RhdGEgPSBuZXcgT2N0ZXRTdHJlYW1EYXRhKGJhaXMsIG51bGwsIG51bGwpOworCSAgICBhc3NlcnROb3ROdWxsKG9zZGF0YSk7CisJICAgIGFzc2VydEVxdWFscyhvc2RhdGEuZ2V0T2N0ZXRTdHJlYW0oKSwgYmFpcyk7CisJICAgIGFzc2VydE51bGwob3NkYXRhLmdldFVSSSgpKTsKKwkgICAgYXNzZXJ0TnVsbChvc2RhdGEuZ2V0TWltZVR5cGUoKSk7CisJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJICAgIGZhaWwoIlVuZXhwZWN0ZWQgRXhjZXB0aW9uOiAiICsgZXgpOworCX0KKworCVN0cmluZyB1cmk9InRlc3RVcmkiOworCVN0cmluZyBtaW1lVHlwZT0idGVzdCI7CisJdHJ5IHsKKwkgICAgb3NkYXRhID0gbmV3IE9jdGV0U3RyZWFtRGF0YShiYWlzLCB1cmksIG1pbWVUeXBlKTsKKwkgICAgYXNzZXJ0Tm90TnVsbChvc2RhdGEpOworCSAgICBhc3NlcnRFcXVhbHMob3NkYXRhLmdldE9jdGV0U3RyZWFtKCksIGJhaXMpOworCSAgICBhc3NlcnRFcXVhbHMob3NkYXRhLmdldFVSSSgpLCB1cmkpOworCSAgICBhc3NlcnRFcXVhbHMob3NkYXRhLmdldE1pbWVUeXBlKCksIG1pbWVUeXBlKTsKKwl9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKwkgICAgZmFpbCgiVW5leHBlY3RlZCBFeGNlcHRpb246ICIgKyBleCk7CisJfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvQWxsVGVzdHMuamF2YSBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvQWxsVGVzdHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDNkOGFmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9BbGxUZXN0cy5qYXZhCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNi0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by50ZXN0LmRzaWc7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOworCitwdWJsaWMgY2xhc3MgQWxsVGVzdHMgeworCisJcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkgeworCQlUZXN0U3VpdGUgc3VpdGUgPSBuZXcgVGVzdFN1aXRlKCJUZXN0IGZvciBqYXZheC54bWwuY3J5cHRvLnRlc3QuZHNpZyIpOworCQkvLyRKVW5pdC1CRUdJTiQKKwkJc3VpdGUuYWRkVGVzdFN1aXRlKElhaWtDb3JlRmVhdHVyZXNUZXN0LmNsYXNzKTsKKwkJc3VpdGUuYWRkVGVzdFN1aXRlKFNpZ25hdHVyZU1ldGhvZFRlc3QuY2xhc3MpOworCQlzdWl0ZS5hZGRUZXN0U3VpdGUoU2lnbmF0dXJlUHJvcGVydHlUZXN0LmNsYXNzKTsKKwkJc3VpdGUuYWRkVGVzdFN1aXRlKEJhbHRpbW9yZVhQYXRoRmlsdGVyMlRocmVlVGVzdC5jbGFzcyk7CisJCXN1aXRlLmFkZFRlc3RTdWl0ZShDbGFzc0xvYWRlclRlc3QuY2xhc3MpOworCQlzdWl0ZS5hZGRUZXN0U3VpdGUoWE1MVmFsaWRhdGVDb250ZXh0VGVzdC5jbGFzcyk7CisJCXN1aXRlLmFkZFRlc3RTdWl0ZShCYWx0aW1vcmVJYWlrMlRlc3QuY2xhc3MpOworCQlzdWl0ZS5hZGRUZXN0U3VpdGUoQzE0TjExVGVzdC5jbGFzcyk7CisJCXN1aXRlLmFkZFRlc3RTdWl0ZShCYWx0aW1vcmUyM1Rlc3QuY2xhc3MpOworCQlzdWl0ZS5hZGRUZXN0U3VpdGUoWE1MU2lnbkNvbnRleHRUZXN0LmNsYXNzKTsKKwkJc3VpdGUuYWRkVGVzdFN1aXRlKERldGFjaGVkVGVzdC5jbGFzcyk7CisJCXN1aXRlLmFkZFRlc3RTdWl0ZShTaWduYXR1cmVQcm9wZXJ0aWVzVGVzdC5jbGFzcyk7CisJCXN1aXRlLmFkZFRlc3RTdWl0ZShWYWxpZGF0ZVNpZ25hdHVyZVRlc3QuY2xhc3MpOworCQlzdWl0ZS5hZGRUZXN0U3VpdGUoU2VjdXJlWFNMVFRlc3QuY2xhc3MpOworCQlzdWl0ZS5hZGRUZXN0U3VpdGUoQ3JlYXRlQmFsdGltb3JlMjNUZXN0LmNsYXNzKTsKKwkJc3VpdGUuYWRkVGVzdFN1aXRlKE1hbmlmZXN0VGVzdC5jbGFzcyk7CisJCXN1aXRlLmFkZFRlc3RTdWl0ZShEaWdlc3RNZXRob2RUZXN0LmNsYXNzKTsKKwkJc3VpdGUuYWRkVGVzdFN1aXRlKElhaWtUcmFuc2Zvcm1zVGVzdC5jbGFzcyk7CisJCXN1aXRlLmFkZFRlc3RTdWl0ZShCYWx0aW1vcmVFeGNDMTRuMVRlc3QuY2xhc3MpOworCQlzdWl0ZS5hZGRUZXN0U3VpdGUoWE1MT2JqZWN0VGVzdC5jbGFzcyk7CisJCXN1aXRlLmFkZFRlc3RTdWl0ZShQaGFvc1hNTERTaWczVGVzdC5jbGFzcyk7CisJCXN1aXRlLmFkZFRlc3RTdWl0ZShDcmVhdGVJbnRlcm9wWEZpbHRlcjJUZXN0LmNsYXNzKTsKKwkJc3VpdGUuYWRkVGVzdFN1aXRlKFhNTFNpZ25hdHVyZUZhY3RvcnlUZXN0LmNsYXNzKTsKKwkJc3VpdGUuYWRkVGVzdFN1aXRlKFNpZ25lZEluZm9UZXN0LmNsYXNzKTsKKwkJc3VpdGUuYWRkVGVzdFN1aXRlKElhaWtTaWduYXR1cmVBbGdvc1Rlc3QuY2xhc3MpOworCQlzdWl0ZS5hZGRUZXN0U3VpdGUoQ3JlYXRlSW50ZXJvcEV4Y0MxNE5UZXN0LmNsYXNzKTsKKwkJc3VpdGUuYWRkVGVzdFN1aXRlKENyZWF0ZVBoYW9zWE1MRFNpZzNUZXN0LmNsYXNzKTsKKwkJc3VpdGUuYWRkVGVzdFN1aXRlKFhNTFNpZ25hdHVyZVRlc3QuY2xhc3MpOworCQlzdWl0ZS5hZGRUZXN0U3VpdGUoUmVmZXJlbmNlVGVzdC5jbGFzcyk7CisJCXN1aXRlLmFkZFRlc3RTdWl0ZShDYW5vbmljYWxpemF0aW9uTWV0aG9kVGVzdC5jbGFzcyk7CisJCXN1aXRlLmFkZFRlc3RTdWl0ZShCYWx0aW1vcmUxOFRlc3QuY2xhc3MpOworCQlzdWl0ZS5hZGRUZXN0U3VpdGUoQ29tUlNBU2VjdXJpdHlUZXN0LmNsYXNzKTsKKwkJc3VpdGUuYWRkVGVzdFN1aXRlKEludGVyb3BDMTRuVGVzdC5jbGFzcyk7CisJCXN1aXRlLmFkZFRlc3RTdWl0ZShUcmFuc2Zvcm1UZXN0LmNsYXNzKTsKKwkJLy8kSlVuaXQtRU5EJAorCQlyZXR1cm4gc3VpdGU7CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0FwcEEuamF2YSBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvQXBwQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwOGY3N2YKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0FwcEEuamF2YQpAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDYtMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8udGVzdC5kc2lnOworCitpbXBvcnQgamF2YS5zZWN1cml0eS5TZWN1cml0eTsKKworLyoqCisgKiBVc2VkIGJ5IENsYXNzTG9hZGVyVGVzdAorICovCitwdWJsaWMgY2xhc3MgQXBwQSB7CisKKyAgICBwdWJsaWMgdm9pZCBkc2lnKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKwlTZWN1cml0eS5hZGRQcm92aWRlcihuZXcgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJKCkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvQXBwQi5qYXZhIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9BcHBCLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE5YjU5ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvQXBwQi5qYXZhCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8udGVzdC5kc2lnOworCitpbXBvcnQgamF2YS5zZWN1cml0eS5Qcm92aWRlcjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlNlY3VyaXR5OworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5UcmFuc2Zvcm07CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLlRyYW5zZm9ybVNlcnZpY2U7CisKKy8qKgorICogVXNlZCBieSBDbGFzc0xvYWRlclRlc3QKKyAqLworcHVibGljIGNsYXNzIEFwcEIgeworCisgICAgcHVibGljIHZvaWQgZHNpZygpIHRocm93cyBFeGNlcHRpb24geworCisJUHJvdmlkZXIgcCA9IFNlY3VyaXR5LmdldFByb3ZpZGVyKCJYTUxEU2lnIik7CisJVHJhbnNmb3JtU2VydmljZS5nZXRJbnN0YW5jZShUcmFuc2Zvcm0uWFBBVEgsICJET00iLCBwKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0JhbHRpbW9yZTE4VGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9CYWx0aW1vcmUxOFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWE3N2U3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9CYWx0aW1vcmUxOFRlc3QuamF2YQpAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA2IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by50ZXN0LmRzaWc7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5zZWN1cml0eS5TZWN1cml0eTsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLktleVNlbGVjdG9yOworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLio7CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLnRlc3QuS2V5U2VsZWN0b3JzOworCisvKioKKyAqIFRoaXMgaXMgYSB0ZXN0Y2FzZSB0byB2YWxpZGF0ZSBhbGwgIm1lcmxpbi14bWxkc2lnLWVpZ2h0ZWVuIiAKKyAqIHRlc3RjYXNlcyBmcm9tIEJhbHRpbW9yZQorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqLworcHVibGljIGNsYXNzIEJhbHRpbW9yZTE4VGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgIHByaXZhdGUgU2lnbmF0dXJlVmFsaWRhdG9yIHZhbGlkYXRvcjsKKyAgICBwcml2YXRlIEZpbGUgZGlyOworICAgIHByaXZhdGUgS2V5U2VsZWN0b3IgY2tzOworCisgICAgc3RhdGljIHsKKwlTZWN1cml0eS5pbnNlcnRQcm92aWRlckF0CisJICAgIChuZXcgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJKCksIDEpOworICAgIH0KKworICAgIHB1YmxpYyBCYWx0aW1vcmUxOFRlc3QoU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgc3VwZXIobmFtZSk7CisgICAgU3RyaW5nIGJhc2UgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImJhc2VkaXIiKSA9PSBudWxsID8gIi4vIjogU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIik7CisgICAgCQorCVN0cmluZyBmcyA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiZmlsZS5zZXBhcmF0b3IiKTsKKwlkaXIgPSBuZXcgRmlsZShiYXNlICsgZnMgKyAiZGF0YSIgKyBmcyArICJpZSIgKworCSAgICBmcyArICJiYWx0aW1vcmUiICsgZnMgKyAibWVybGluLWV4YW1wbGVzIiwKKyAgICAgICAgICAgICJtZXJsaW4teG1sZHNpZy1laWdodGVlbiIpOworCXZhbGlkYXRvciA9IG5ldyBTaWduYXR1cmVWYWxpZGF0b3IoZGlyKTsKKwlja3MgPSBuZXcgS2V5U2VsZWN0b3JzLkNvbGxlY3Rpb25LZXlTZWxlY3RvcihkaXIpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZV9rZXluYW1lKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBmaWxlID0gInNpZ25hdHVyZS1rZXluYW1lLnhtbCI7CisJCisJYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSB2YWxpZGF0b3IudmFsaWRhdGUoZmlsZSwgY2tzKTsKKwlhc3NlcnRUcnVlKCJTaWduYXR1cmUgZmFpbGVkIGNvcmUgdmFsaWRhdGlvbiIsIGNvcmVWYWxpZGl0eSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHRlc3Rfc2lnbmF0dXJlX3JldHJpZXZhbG1ldGhvZF9yYXd4NTA5Y3J0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBmaWxlID0gInNpZ25hdHVyZS1yZXRyaWV2YWxtZXRob2QtcmF3eDUwOWNydC54bWwiOworCisJYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSB2YWxpZGF0b3IudmFsaWRhdGUoZmlsZSwgY2tzKTsKKwlhc3NlcnRUcnVlKCJTaWduYXR1cmUgZmFpbGVkIGNvcmUgdmFsaWRhdGlvbiIsIGNvcmVWYWxpZGl0eSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHRlc3Rfc2lnbmF0dXJlX3g1MDlfY3J0X2NybCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBTdHJpbmcgZmlsZSA9ICJzaWduYXR1cmUteDUwOS1jcnQtY3JsLnhtbCI7CisKKwlib29sZWFuIGNvcmVWYWxpZGl0eSA9IHZhbGlkYXRvci52YWxpZGF0ZShmaWxlLCBja3MpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY29yZVZhbGlkaXR5KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZV94NTA5X2NydCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBTdHJpbmcgZmlsZSA9ICJzaWduYXR1cmUteDUwOS1jcnQueG1sIjsKKworCWJvb2xlYW4gY29yZVZhbGlkaXR5ID0gdmFsaWRhdG9yLnZhbGlkYXRlKGZpbGUsIGNrcyk7CisJYXNzZXJ0VHJ1ZSgiU2lnbmF0dXJlIGZhaWxlZCBjb3JlIHZhbGlkYXRpb24iLCBjb3JlVmFsaWRpdHkpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZV94NTA5X2lzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBmaWxlID0gInNpZ25hdHVyZS14NTA5LWlzLnhtbCI7CisKKwlib29sZWFuIGNvcmVWYWxpZGl0eSA9IHZhbGlkYXRvci52YWxpZGF0ZShmaWxlLCBja3MpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY29yZVZhbGlkaXR5KTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgdGVzdF9zaWduYXR1cmVfeDUwOV9za2koKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgU3RyaW5nIGZpbGUgPSAic2lnbmF0dXJlLXg1MDktc2tpLnhtbCI7CisKKwlib29sZWFuIGNvcmVWYWxpZGl0eSA9IHZhbGlkYXRvci52YWxpZGF0ZShmaWxlLCBja3MpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY29yZVZhbGlkaXR5KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZV94NTA5X3NuKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBmaWxlID0gInNpZ25hdHVyZS14NTA5LXNuLnhtbCI7CisKKwlib29sZWFuIGNvcmVWYWxpZGl0eSA9IHZhbGlkYXRvci52YWxpZGF0ZShmaWxlLCBja3MpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY29yZVZhbGlkaXR5KTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgQmFsdGltb3JlMThUZXN0IGJ0ID0gbmV3IEJhbHRpbW9yZTE4VGVzdCgiIik7CisJYnQudGVzdF9zaWduYXR1cmVfa2V5bmFtZSgpOworCWJ0LnRlc3Rfc2lnbmF0dXJlX3JldHJpZXZhbG1ldGhvZF9yYXd4NTA5Y3J0KCk7CisJYnQudGVzdF9zaWduYXR1cmVfeDUwOV9jcnRfY3JsKCk7CisJYnQudGVzdF9zaWduYXR1cmVfeDUwOV9jcnQoKTsKKwlidC50ZXN0X3NpZ25hdHVyZV94NTA5X2lzKCk7CisJYnQudGVzdF9zaWduYXR1cmVfeDUwOV9za2koKTsKKwlidC50ZXN0X3NpZ25hdHVyZV94NTA5X3NuKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9CYWx0aW1vcmUyM1Rlc3QuamF2YSBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvQmFsdGltb3JlMjNUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgxYWI2MAotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvQmFsdGltb3JlMjNUZXN0LmphdmEKQEAgLTAsMCArMSwyMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNi0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by50ZXN0LmRzaWc7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5zZWN1cml0eS5LZXlTdG9yZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlNlY3VyaXR5OworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uS2V5U2VsZWN0b3I7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLlhNTFNpZ25hdHVyZUV4Y2VwdGlvbjsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay4qOworCitpbXBvcnQgamF2YXgueG1sLmNyeXB0by50ZXN0LktleVNlbGVjdG9yczsKKworLyoqCisgKiBUaGlzIGlzIGEgdGVzdGNhc2UgdG8gdmFsaWRhdGUgYWxsICJtZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUiIAorICogdGVzdGNhc2VzIGZyb20gQmFsdGltb3JlCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICovCitwdWJsaWMgY2xhc3MgQmFsdGltb3JlMjNUZXN0IGV4dGVuZHMgVGVzdENhc2UgeworCisgICAgcHJpdmF0ZSBTaWduYXR1cmVWYWxpZGF0b3IgdmFsaWRhdG9yOworICAgIHByaXZhdGUgRmlsZSBkaXI7CisKKyAgICBzdGF0aWMgeworICAgICAgICBTZWN1cml0eS5pbnNlcnRQcm92aWRlckF0CisgICAgICAgICAgICAobmV3IG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tLlhNTERTaWdSSSgpLCAxKTsKKyAgICB9CisKKyAgICBwdWJsaWMgQmFsdGltb3JlMjNUZXN0KFN0cmluZyBuYW1lKSB7CisgICAgICAgIHN1cGVyKG5hbWUpOworCVN0cmluZyBmcyA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiZmlsZS5zZXBhcmF0b3IiKTsKKwlTdHJpbmcgYmFzZSA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpID09IG51bGwgPyAiLi8iOiBTeXN0ZW0uZ2V0UHJvcGVydHkoImJhc2VkaXIiKTsKKwkKKwlkaXIgPSBuZXcgRmlsZShiYXNlICsgZnMgKyAiZGF0YSIgKyBmcyAKKwkgICAgKyAiaWUiICsgZnMgKyAiYmFsdGltb3JlIiArIGZzICsgIm1lcmxpbi1leGFtcGxlcyIsCisgICAgICAgICAgICAibWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlIik7CisJdmFsaWRhdG9yID0gbmV3IFNpZ25hdHVyZVZhbGlkYXRvcihkaXIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3Rfc2lnbmF0dXJlX2VudmVsb3BlZF9kc2EoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgU3RyaW5nIGZpbGUgPSAic2lnbmF0dXJlLWVudmVsb3BlZC1kc2EueG1sIjsKKworCWJvb2xlYW4gY29yZVZhbGlkaXR5ID0gdmFsaWRhdG9yLnZhbGlkYXRlCisJICAgIChmaWxlLCBuZXcgS2V5U2VsZWN0b3JzLktleVZhbHVlS2V5U2VsZWN0b3IoKSk7CisJYXNzZXJ0VHJ1ZSgiU2lnbmF0dXJlIGZhaWxlZCBjb3JlIHZhbGlkYXRpb24iLCBjb3JlVmFsaWRpdHkpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZV9lbnZlbG9waW5nX2I2NF9kc2EoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgU3RyaW5nIGZpbGUgPSAic2lnbmF0dXJlLWVudmVsb3BpbmctYjY0LWRzYS54bWwiOworICAgICAKKwlib29sZWFuIGNvcmVWYWxpZGl0eSA9IHZhbGlkYXRvci52YWxpZGF0ZQorCSAgICAoZmlsZSwgbmV3IEtleVNlbGVjdG9ycy5LZXlWYWx1ZUtleVNlbGVjdG9yKCkpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY29yZVZhbGlkaXR5KTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgdGVzdF9zaWduYXR1cmVfZW52ZWxvcGluZ19kc2EoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgU3RyaW5nIGZpbGUgPSAic2lnbmF0dXJlLWVudmVsb3BpbmctZHNhLnhtbCI7CisgICAgICAgCisJYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSB2YWxpZGF0b3IudmFsaWRhdGUKKwkgICAgKGZpbGUsIG5ldyBLZXlTZWxlY3RvcnMuS2V5VmFsdWVLZXlTZWxlY3RvcigpKTsKKwlhc3NlcnRUcnVlKCJTaWduYXR1cmUgZmFpbGVkIGNvcmUgdmFsaWRhdGlvbiIsIGNvcmVWYWxpZGl0eSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9zaWduYXR1cmVfZXh0ZXJuYWxfYjY0X2RzYSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBTdHJpbmcgZmlsZSA9ICJzaWduYXR1cmUtZXh0ZXJuYWwtYjY0LWRzYS54bWwiOworICAgICAgIAorCWJvb2xlYW4gY29yZVZhbGlkaXR5ID0gdmFsaWRhdG9yLnZhbGlkYXRlCisJICAgIChmaWxlLCBuZXcgS2V5U2VsZWN0b3JzLktleVZhbHVlS2V5U2VsZWN0b3IoKSk7CisJYXNzZXJ0VHJ1ZSgiU2lnbmF0dXJlIGZhaWxlZCBjb3JlIHZhbGlkYXRpb24iLCBjb3JlVmFsaWRpdHkpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3Rfc2lnbmF0dXJlX2V4dGVybmFsX2RzYSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBTdHJpbmcgZmlsZSA9ICJzaWduYXR1cmUtZXh0ZXJuYWwtZHNhLnhtbCI7CisgICAgICAgIAorCWJvb2xlYW4gY29yZVZhbGlkaXR5ID0gdmFsaWRhdG9yLnZhbGlkYXRlCisJICAgIChmaWxlLCBuZXcgS2V5U2VsZWN0b3JzLktleVZhbHVlS2V5U2VsZWN0b3IoKSk7CisJYXNzZXJ0VHJ1ZSgiU2lnbmF0dXJlIGZhaWxlZCBjb3JlIHZhbGlkYXRpb24iLCBjb3JlVmFsaWRpdHkpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZV9lbnZlbG9waW5nX3JzYSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBTdHJpbmcgZmlsZSA9ICJzaWduYXR1cmUtZW52ZWxvcGluZy1yc2EueG1sIjsKKyAgICAgICAKKwlib29sZWFuIGNvcmVWYWxpZGl0eSA9IHZhbGlkYXRvci52YWxpZGF0ZQorCSAgICAoZmlsZSwgbmV3IEtleVNlbGVjdG9ycy5LZXlWYWx1ZUtleVNlbGVjdG9yKCkpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY29yZVZhbGlkaXR5KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZV9lbnZlbG9waW5nX2htYWNfc2hhMSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBTdHJpbmcgZmlsZSA9ICJzaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTEueG1sIjsKKyAgICAgICAgCisJS2V5U2VsZWN0b3Iga3MgPSBuZXcgS2V5U2VsZWN0b3JzLlNlY3JldEtleVNlbGVjdG9yCisJICAgICgic2VjcmV0Ii5nZXRCeXRlcygiQVNDSUkiKSApOworCWJvb2xlYW4gY29yZVZhbGlkaXR5ID0gdmFsaWRhdG9yLnZhbGlkYXRlKGZpbGUsIGtzKTsKKwlhc3NlcnRUcnVlKCJTaWduYXR1cmUgZmFpbGVkIGNvcmUgdmFsaWRhdGlvbiIsIGNvcmVWYWxpZGl0eSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9zaWduYXR1cmVfZW52ZWxvcGluZ19obWFjX3NoYTFfNDAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgU3RyaW5nIGZpbGUgPSAic2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGExLTQwLnhtbCI7CisgICAgICAgIAorCUtleVNlbGVjdG9yIGtzID0gbmV3IEtleVNlbGVjdG9ycy5TZWNyZXRLZXlTZWxlY3RvcgorCSAgICAoInNlY3JldCIuZ2V0Qnl0ZXMoIkFTQ0lJIikgKTsKKyAgICAgICAgdHJ5IHsKKwkgICAgYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSB2YWxpZGF0b3IudmFsaWRhdGUoZmlsZSwga3MpOworICAgICAgICAgICAgZmFpbCgiRXhwZWN0ZWQgSE1BQ091dHB1dExlbmd0aCBleGNlcHRpb24iKTsKKyAgICAgICAgfSBjYXRjaCAoWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHhzZSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHhzZS5nZXRNZXNzYWdlKCkpOworICAgICAgICAgICAgLy8gcGFzcworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9zaWduYXR1cmVfa2V5bmFtZSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBTdHJpbmcgZmlsZSA9ICJzaWduYXR1cmUta2V5bmFtZS54bWwiOworICAgICAgICAKKwlib29sZWFuIGNvcmVWYWxpZGl0eSA9IHZhbGlkYXRvci52YWxpZGF0ZQorCSAgICAoZmlsZSwgbmV3IEtleVNlbGVjdG9ycy5Db2xsZWN0aW9uS2V5U2VsZWN0b3IoZGlyKSk7CisJYXNzZXJ0VHJ1ZSgiU2lnbmF0dXJlIGZhaWxlZCBjb3JlIHZhbGlkYXRpb24iLCBjb3JlVmFsaWRpdHkpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZV9yZXRyaWV2YWxtZXRob2RfcmF3eDUwOWNydCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBTdHJpbmcgZmlsZSA9ICJzaWduYXR1cmUtcmV0cmlldmFsbWV0aG9kLXJhd3g1MDljcnQueG1sIjsKKyAgICAgICAgCisJYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSB2YWxpZGF0b3IudmFsaWRhdGUKKwkgICAgKGZpbGUsIG5ldyBLZXlTZWxlY3RvcnMuQ29sbGVjdGlvbktleVNlbGVjdG9yKGRpcikpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY29yZVZhbGlkaXR5KTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgdGVzdF9zaWduYXR1cmVfeDUwOV9jcnRfY3JsKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBmaWxlID0gInNpZ25hdHVyZS14NTA5LWNydC1jcmwueG1sIjsKKyAgICAgICAgCisJYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSB2YWxpZGF0b3IudmFsaWRhdGUKKwkgICAgKGZpbGUsIG5ldyBLZXlTZWxlY3RvcnMuUmF3WDUwOUtleVNlbGVjdG9yKCkpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY29yZVZhbGlkaXR5KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZV94NTA5X2NydCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBTdHJpbmcgZmlsZSA9ICJzaWduYXR1cmUteDUwOS1jcnQueG1sIjsKKyAgICAgICAKKwlib29sZWFuIGNvcmVWYWxpZGl0eSA9IHZhbGlkYXRvci52YWxpZGF0ZQorCSAgICAoZmlsZSwgbmV3IEtleVNlbGVjdG9ycy5SYXdYNTA5S2V5U2VsZWN0b3IoKSk7CisJYXNzZXJ0VHJ1ZSgiU2lnbmF0dXJlIGZhaWxlZCBjb3JlIHZhbGlkYXRpb24iLCBjb3JlVmFsaWRpdHkpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZV94NTA5X2lzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBmaWxlID0gInNpZ25hdHVyZS14NTA5LWlzLnhtbCI7CisgICAgICAgIAorCWJvb2xlYW4gY29yZVZhbGlkaXR5ID0gdmFsaWRhdG9yLnZhbGlkYXRlCisJICAgIChmaWxlLCBuZXcgS2V5U2VsZWN0b3JzLkNvbGxlY3Rpb25LZXlTZWxlY3RvcihkaXIpKTsKKwlhc3NlcnRUcnVlKCJTaWduYXR1cmUgZmFpbGVkIGNvcmUgdmFsaWRhdGlvbiIsIGNvcmVWYWxpZGl0eSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHRlc3Rfc2lnbmF0dXJlX3g1MDlfc2tpKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBmaWxlID0gInNpZ25hdHVyZS14NTA5LXNraS54bWwiOworICAgICAgICAKKwlib29sZWFuIGNvcmVWYWxpZGl0eSA9IHZhbGlkYXRvci52YWxpZGF0ZQorCSAgICAoZmlsZSwgbmV3IEtleVNlbGVjdG9ycy5Db2xsZWN0aW9uS2V5U2VsZWN0b3IoZGlyKSk7CisJYXNzZXJ0VHJ1ZSgiU2lnbmF0dXJlIGZhaWxlZCBjb3JlIHZhbGlkYXRpb24iLCBjb3JlVmFsaWRpdHkpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3Rfc2lnbmF0dXJlX3g1MDlfc24oKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgU3RyaW5nIGZpbGUgPSAic2lnbmF0dXJlLXg1MDktc24ueG1sIjsKKyAgICAgICAgCisJYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSB2YWxpZGF0b3IudmFsaWRhdGUKKwkgICAgKGZpbGUsIG5ldyBLZXlTZWxlY3RvcnMuQ29sbGVjdGlvbktleVNlbGVjdG9yKGRpcikpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY29yZVZhbGlkaXR5KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBTdHJpbmcgZmlsZSA9ICJzaWduYXR1cmUueG1sIjsKKwlTdHJpbmcgZnMgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImZpbGUuc2VwYXJhdG9yIik7CisJU3RyaW5nIGJhc2UgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImJhc2VkaXIiKSA9PSBudWxsID8gIi4vIjogU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIik7CisJCisJU3RyaW5nIGtleXN0b3JlID0gYmFzZSArIGZzICsgImRhdGEiICsgZnMgKworCSAgICAgImllIiArIGZzICsgImJhbHRpbW9yZSIgKyBmcyArICJtZXJsaW4tZXhhbXBsZXMiICsgZnMgKworCSAgICAgIm1lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZSIgKyBmcyArICJjZXJ0cyIgKyBmcyArICJ4bWxkc2lnLmprcyI7CisJS2V5U3RvcmUga3MgPSBLZXlTdG9yZS5nZXRJbnN0YW5jZSgiSktTIik7CisJa3MubG9hZChuZXcgRmlsZUlucHV0U3RyZWFtKGtleXN0b3JlKSwgImNoYW5nZWl0Ii50b0NoYXJBcnJheSgpKTsKKworICAgICAgICBib29sZWFuIGN2ID0gdmFsaWRhdG9yLnZhbGlkYXRlKGZpbGUsIG5ldyBYNTA5S2V5U2VsZWN0b3Ioa3MsIGZhbHNlKSk7CisgICAgICAgIGFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY3YpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBCYWx0aW1vcmUyM1Rlc3QgYnQgPSBuZXcgQmFsdGltb3JlMjNUZXN0KCIiKTsKKyAgICAgICAgYnQudGVzdF9zaWduYXR1cmVfZW52ZWxvcGVkX2RzYSgpOworCWJ0LnRlc3Rfc2lnbmF0dXJlKCk7IAorCWJ0LnRlc3Rfc2lnbmF0dXJlX2VudmVsb3BpbmdfYjY0X2RzYSgpOworCWJ0LnRlc3Rfc2lnbmF0dXJlX2VudmVsb3BpbmdfZHNhKCk7CisJYnQudGVzdF9zaWduYXR1cmVfZW52ZWxvcGluZ19obWFjX3NoYTEoKTsKKwlidC50ZXN0X3NpZ25hdHVyZV9lbnZlbG9waW5nX2htYWNfc2hhMV80MCgpOworCWJ0LnRlc3Rfc2lnbmF0dXJlX2VudmVsb3BpbmdfcnNhKCk7CisJYnQudGVzdF9zaWduYXR1cmVfZXh0ZXJuYWxfYjY0X2RzYSgpOworCWJ0LnRlc3Rfc2lnbmF0dXJlX2V4dGVybmFsX2RzYSgpOworCWJ0LnRlc3Rfc2lnbmF0dXJlX2tleW5hbWUoKTsKKwlidC50ZXN0X3NpZ25hdHVyZV9yZXRyaWV2YWxtZXRob2RfcmF3eDUwOWNydCgpOworCWJ0LnRlc3Rfc2lnbmF0dXJlX3g1MDlfY3J0X2NybCgpOworCWJ0LnRlc3Rfc2lnbmF0dXJlX3g1MDlfY3J0KCk7CisJYnQudGVzdF9zaWduYXR1cmVfeDUwOV9pcygpOworCWJ0LnRlc3Rfc2lnbmF0dXJlX3g1MDlfc2tpKCk7CisJYnQudGVzdF9zaWduYXR1cmVfeDUwOV9zbigpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvQmFsdGltb3JlRXhjQzE0bjFUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0JhbHRpbW9yZUV4Y0MxNG4xVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4YTA1MzMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0JhbHRpbW9yZUV4Y0MxNG4xVGVzdC5qYXZhCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8udGVzdC5kc2lnOworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuc2VjdXJpdHkuU2VjdXJpdHk7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuKjsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8udGVzdC5LZXlTZWxlY3RvcnM7CisKKy8qKgorICogVGhpcyBpcyBhIHRlc3RjYXNlIHRvIHZhbGlkYXRlIGFsbCAibWVybGluLWV4Yy1jMTRuLW9uZSIgCisgKiB0ZXN0Y2FzZXMgZnJvbSBCYWx0aW1vcmUKKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKi8KK3B1YmxpYyBjbGFzcyBCYWx0aW1vcmVFeGNDMTRuMVRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgICBwcml2YXRlIFNpZ25hdHVyZVZhbGlkYXRvciB2YWxpZGF0b3I7CisKKyAgICBzdGF0aWMgeworICAgICAgICBTZWN1cml0eS5pbnNlcnRQcm92aWRlckF0CisgICAgICAgICAgICAobmV3IG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tLlhNTERTaWdSSSgpLCAxKTsKKyAgICB9CisKKyAgICBwdWJsaWMgQmFsdGltb3JlRXhjQzE0bjFUZXN0KFN0cmluZyBuYW1lKSB7CisgICAgICAgIHN1cGVyKG5hbWUpOworCVN0cmluZyBmcyA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiZmlsZS5zZXBhcmF0b3IiKTsKKwlTdHJpbmcgYmFzZSA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpID09IG51bGwgPyAiLi8iOiBTeXN0ZW0uZ2V0UHJvcGVydHkoImJhc2VkaXIiKTsKKwkKKwliYXNlICs9IGZzICsgImRhdGEiICsgZnMgKyAiaWUiICsKKwkgICAgZnMgKyAiYmFsdGltb3JlIiArIGZzICsgIm1lcmxpbi1leGFtcGxlcyI7CisJdmFsaWRhdG9yID0gbmV3IFNpZ25hdHVyZVZhbGlkYXRvcihuZXcgRmlsZQorCSAgICAoYmFzZSwgIm1lcmxpbi1leGMtYzE0bi1vbmUiKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9leGNfc2lnbmF0dXJlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBmaWxlID0gImV4Yy1zaWduYXR1cmUueG1sIjsKKworCWJvb2xlYW4gY29yZVZhbGlkaXR5ID0gdmFsaWRhdG9yLnZhbGlkYXRlCisJICAgIChmaWxlLCBuZXcgS2V5U2VsZWN0b3JzLktleVZhbHVlS2V5U2VsZWN0b3IoKSk7CisJYXNzZXJ0VHJ1ZSgiU2lnbmF0dXJlIGZhaWxlZCBjb3JlIHZhbGlkYXRpb24iLCBjb3JlVmFsaWRpdHkpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBCYWx0aW1vcmVFeGNDMTRuMVRlc3QgYnQgPSBuZXcgQmFsdGltb3JlRXhjQzE0bjFUZXN0KCIiKTsKKwlidC50ZXN0X2V4Y19zaWduYXR1cmUoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0JhbHRpbW9yZUlhaWsyVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9CYWx0aW1vcmVJYWlrMlRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODhlODM5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9CYWx0aW1vcmVJYWlrMlRlc3QuamF2YQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IDIwMDYgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLnRlc3QuZHNpZzsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlNlY3VyaXR5OworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLio7CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLnRlc3QuS2V5U2VsZWN0b3JzOworCisvKioKKyAqIFRoaXMgaXMgYSB0ZXN0Y2FzZSB0byB2YWxpZGF0ZSBhbGwgImVjLW1lcmxpbi1pYWlrVGVzdHMtdHdvIiAKKyAqIHRlc3RjYXNlcyBmcm9tIEJhbHRpbW9yZQorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqLworcHVibGljIGNsYXNzIEJhbHRpbW9yZUlhaWsyVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgIHByaXZhdGUgU2lnbmF0dXJlVmFsaWRhdG9yIHZhbGlkYXRvcjsKKyAgICBwcml2YXRlIEZpbGUgZGlyOworCisgICAgc3RhdGljIHsKKyAgICAgICAgU2VjdXJpdHkuaW5zZXJ0UHJvdmlkZXJBdAorICAgICAgICAgICAgKG5ldyBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbS5YTUxEU2lnUkkoKSwgMSk7CisgICAgfQorCisgICAgcHVibGljIEJhbHRpbW9yZUlhaWsyVGVzdChTdHJpbmcgbmFtZSkgeworICAgICAgICBzdXBlcihuYW1lKTsKKwlTdHJpbmcgZnMgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImZpbGUuc2VwYXJhdG9yIik7CisJU3RyaW5nIGJhc2UgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImJhc2VkaXIiKSA9PSBudWxsID8gIi4vIjogU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIik7CisJCisJZGlyID0gbmV3IEZpbGUoYmFzZSArIGZzICsgImRhdGEiICsgZnMgKworCSAgICAiaWUiICsgZnMgKyAiYmFsdGltb3JlIiArIGZzICsgIm1lcmxpbi1leGFtcGxlcyIsCisgICAgICAgICAgICAiZWMtbWVybGluLWlhaWtUZXN0cy10d28iKTsKKwl2YWxpZGF0b3IgPSBuZXcgU2lnbmF0dXJlVmFsaWRhdG9yKGRpcik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9zaWduYXR1cmUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgU3RyaW5nIGZpbGUgPSAic2lnbmF0dXJlLnhtbCI7CisJYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSB2YWxpZGF0b3IudmFsaWRhdGUKKwkgICAgKGZpbGUsIG5ldyBLZXlTZWxlY3RvcnMuS2V5VmFsdWVLZXlTZWxlY3RvcigpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZSgiU2lnbmF0dXJlIGZhaWxlZCBjb3JlIHZhbGlkYXRpb24iLCBjb3JlVmFsaWRpdHkpOworICAgIH0gICAgCisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgQmFsdGltb3JlSWFpazJUZXN0IGJ0ID0gbmV3IEJhbHRpbW9yZUlhaWsyVGVzdCgiIik7CisJYnQudGVzdF9zaWduYXR1cmUoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0JhbHRpbW9yZVhQYXRoRmlsdGVyMlRocmVlVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9CYWx0aW1vcmVYUGF0aEZpbHRlcjJUaHJlZVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWUyMzUzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9CYWx0aW1vcmVYUGF0aEZpbHRlcjJUaHJlZVRlc3QuamF2YQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IDIwMDYgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLnRlc3QuZHNpZzsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlNlY3VyaXR5OworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLio7CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLnRlc3QuS2V5U2VsZWN0b3JzOworCisvKioKKyAqIFRoaXMgaXMgYSB0ZXN0Y2FzZSB0byB2YWxpZGF0ZSB0aGUgIm1lcmxpbi14cGF0aC1maWx0ZXIyLXRocmVlIiB0ZXN0Y2FzZXMKKyAqIHVuZGVyIGRhdGEvdmVjdG9ycy9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzIGRpcmVjdG9yeQorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqLworcHVibGljIGNsYXNzIEJhbHRpbW9yZVhQYXRoRmlsdGVyMlRocmVlVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgIHByaXZhdGUgU2lnbmF0dXJlVmFsaWRhdG9yIHZhbGlkYXRvciA9IG51bGw7CisKKyAgICBzdGF0aWMgeworICAgICAgICBTZWN1cml0eS5pbnNlcnRQcm92aWRlckF0CisgICAgICAgICAgICAobmV3IG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tLlhNTERTaWdSSSgpLCAxKTsKKyAgICB9CisKKyAgICBwdWJsaWMgQmFsdGltb3JlWFBhdGhGaWx0ZXIyVGhyZWVUZXN0KFN0cmluZyBuYW1lKSB7CisgICAgICAgIHN1cGVyKG5hbWUpOworCVN0cmluZyBmcyA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiZmlsZS5zZXBhcmF0b3IiKTsKKwlTdHJpbmcgYmFzZSA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpID09IG51bGwgPyAiLi8iOiBTeXN0ZW0uZ2V0UHJvcGVydHkoImJhc2VkaXIiKTsKKwliYXNlICs9IGZzICsgImRhdGEiCisJICAgICsgZnMgKyAiaW50ZXJvcCIgKyBmcyArICJ4ZmlsdGVyMiI7CisJdmFsaWRhdG9yID0gbmV3IFNpZ25hdHVyZVZhbGlkYXRvcihuZXcgRmlsZQorCSAgICAoYmFzZSwgIm1lcmxpbi14cGF0aC1maWx0ZXIyLXRocmVlIikpOworICAgIH0KKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25fc3BlYygpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBTdHJpbmcgZmlsZSA9ICJzaWduLXNwZWMueG1sIjsKKworCWJvb2xlYW4gY29yZVZhbGlkaXR5ID0gdmFsaWRhdG9yLnZhbGlkYXRlKGZpbGUsIAorCQkgICAgbmV3IEtleVNlbGVjdG9ycy5LZXlWYWx1ZUtleVNlbGVjdG9yKCkpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIzEiLCBjb3JlVmFsaWRpdHkpOworCisgCWNvcmVWYWxpZGl0eSA9IHZhbGlkYXRvci52YWxpZGF0ZShmaWxlLCAKKwkJICAgIG5ldyBLZXlTZWxlY3RvcnMuUmF3WDUwOUtleVNlbGVjdG9yKCkpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIzIiLCBjb3JlVmFsaWRpdHkpOworICAgIH0KKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25feGZkbCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBTdHJpbmcgZmlsZSA9ICJzaWduLXhmZGwueG1sIjsKKworCWJvb2xlYW4gY29yZVZhbGlkaXR5ID0gdmFsaWRhdG9yLnZhbGlkYXRlKGZpbGUsIAorCQkgICAgbmV3IEtleVNlbGVjdG9ycy5LZXlWYWx1ZUtleVNlbGVjdG9yKCkpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIzEiLCBjb3JlVmFsaWRpdHkpOworCisgCWNvcmVWYWxpZGl0eSA9IHZhbGlkYXRvci52YWxpZGF0ZShmaWxlLCAKKwkJICAgIG5ldyBLZXlTZWxlY3RvcnMuUmF3WDUwOUtleVNlbGVjdG9yKCkpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIzIiLCBjb3JlVmFsaWRpdHkpOworICAgIH0KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgQmFsdGltb3JlWFBhdGhGaWx0ZXIyVGhyZWVUZXN0IGl0ID0gCisJICAgIG5ldyBCYWx0aW1vcmVYUGF0aEZpbHRlcjJUaHJlZVRlc3QoIiIpOworCWl0LnRlc3Rfc2lnbl9zcGVjKCk7CisJaXQudGVzdF9zaWduX3hmZGwoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0MxNE4xMVRlc3QuamF2YSBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvQzE0TjExVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1ZDI2NTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0MxNE4xMVRlc3QuamF2YQpAQCAtMCwwICsxLDE1NSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA4LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLnRlc3QuZHNpZzsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlNlY3VyaXR5OworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uS2V5U2VsZWN0b3I7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuKjsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8udGVzdC5LZXlTZWxlY3RvcnM7CisKKy8qKgorICogVGhpcyBpcyBhIHRlc3RjYXNlIHRvIHZhbGlkYXRlIGFsbCB0aGUgVzNDIHhtbGRzaWcgQzE0TjExIHRlc3RjYXNlcy4KKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKi8KK3B1YmxpYyBjbGFzcyBDMTROMTFUZXN0IGV4dGVuZHMgVGVzdENhc2UgeworCisgICAgcHJpdmF0ZSBTaWduYXR1cmVWYWxpZGF0b3IgdmFsaWRhdG9yOworICAgIHByaXZhdGUgRmlsZSBkaXI7CisgICAgcHJpdmF0ZSBLZXlTZWxlY3RvciBza3M7CisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nW10gdmVuZG9ycyA9IHsgIklBSUsiLCAiSUJNIiwgIk9SQ0wiLCAiU1VOIiwgIlVQQyIgfTsKKworICAgIHN0YXRpYyB7CisgICAgICAgIFNlY3VyaXR5Lmluc2VydFByb3ZpZGVyQXQKKyAgICAgICAgICAgIChuZXcgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJKCksIDEpOworICAgIH0KKworICAgIHB1YmxpYyBDMTROMTFUZXN0KFN0cmluZyBuYW1lKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgc3VwZXIobmFtZSk7CisgICAgICAgIFN0cmluZyBmcyA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiZmlsZS5zZXBhcmF0b3IiKTsKKyAgICAgICAgU3RyaW5nIGJhc2UgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImJhc2VkaXIiKSA9PSBudWxsID8gIi4vIjogU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIik7CisgICAgCWRpciA9IG5ldyBGaWxlKGJhc2UgKyBmcyArICJkYXRhIiArIGZzCisgICAgICAgICAgICArICJvcmciICsgZnMgKyAidzNjIiArIGZzICsgInd3dyIgKyBmcworCSAgICArICJpbnRlcm9wIiArIGZzICsgInhtbGRzaWciICsgZnMgKyAiYzE0bjExIik7CisgICAgICAgIHZhbGlkYXRvciA9IG5ldyBTaWduYXR1cmVWYWxpZGF0b3IoZGlyKTsKKwlza3MgPSBuZXcgS2V5U2VsZWN0b3JzLlNlY3JldEtleVNlbGVjdG9yKCJzZWNyZXQiLmdldEJ5dGVzKCJBU0NJSSIpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3htbGlkXzEoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF9jMTRuMTEoInhtbGlkLTEiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3htbGlkXzIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF9jMTRuMTEoInhtbGlkLTIiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3htbHNwYWNlXzEoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF9jMTRuMTEoInhtbHNwYWNlLTEiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3htbHNwYWNlXzIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF9jMTRuMTEoInhtbHNwYWNlLTIiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3htbHNwYWNlXzMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF9jMTRuMTEoInhtbHNwYWNlLTMiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3htbHNwYWNlXzQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF9jMTRuMTEoInhtbHNwYWNlLTQiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3htbGxhbmdfMSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICB0ZXN0X2MxNG4xMSgieG1sbGFuZy0xIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF94bWxsYW5nXzIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF9jMTRuMTEoInhtbGxhbmctMiIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RfeG1sbGFuZ18zKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHRlc3RfYzE0bjExKCJ4bWxsYW5nLTMiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3htbGxhbmdfNCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICB0ZXN0X2MxNG4xMSgieG1sbGFuZy00Iik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF94bWxiYXNlX3Byb3BfMSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICB0ZXN0X2MxNG4xMSgieG1sYmFzZS1wcm9wLTEiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3htbGJhc2VfcHJvcF8yKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHRlc3RfYzE0bjExKCJ4bWxiYXNlLXByb3AtMiIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RfeG1sYmFzZV9wcm9wXzMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF9jMTRuMTEoInhtbGJhc2UtcHJvcC0zIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF94bWxiYXNlX3Byb3BfNCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICB0ZXN0X2MxNG4xMSgieG1sYmFzZS1wcm9wLTQiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3htbGJhc2VfcHJvcF81KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHRlc3RfYzE0bjExKCJ4bWxiYXNlLXByb3AtNSIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RfeG1sYmFzZV9wcm9wXzYoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF9jMTRuMTEoInhtbGJhc2UtcHJvcC02Iik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF94bWxiYXNlX3Byb3BfNygpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICB0ZXN0X2MxNG4xMSgieG1sYmFzZS1wcm9wLTciKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3htbGJhc2VfYzE0bjExc3BlY18xMDIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlTdHJpbmdbXSB2ZW5kb3JzID0geyJJQUlLIiwgIklCTSIsICJPUkNMIiwgIlNVTiIsICJVUEMifTsKKyAgICAgICAgdGVzdF9jMTRuMTEoInhtbGJhc2UtYzE0bjExc3BlYy0xMDIiLCB2ZW5kb3JzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3htbGJhc2VfYzE0bjExc3BlYzJfMTAyKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJU3RyaW5nW10gdmVuZG9ycyA9IHsiSUFJSyIsICJJQk0iLCAiT1JDTCIsICJTVU4ifTsKKyAgICAgICAgdGVzdF9jMTRuMTEoInhtbGJhc2UtYzE0bjExc3BlYzItMTAyIiwgdmVuZG9ycyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF94bWxiYXNlX2MxNG4xMXNwZWMzXzEwMygpIHRocm93cyBFeGNlcHRpb24geworCVN0cmluZ1tdIHZlbmRvcnMgPSB7IklBSUsiLCAiSUJNIiwgIk9SQ0wiLCAiU1VOIiwgIlVQQyJ9OworICAgICAgICB0ZXN0X2MxNG4xMSgieG1sYmFzZS1jMTRuMTFzcGVjMy0xMDMiLCB2ZW5kb3JzKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgdGVzdF9jMTRuMTEoU3RyaW5nIHRlc3QpIHRocm93cyBFeGNlcHRpb24geworCWZvciAoaW50IGk9MDsgaTx2ZW5kb3JzLmxlbmd0aDsgaSsrKSB7CisJICAgIFN0cmluZyBmaWxlID0gdGVzdCArICItIiArIHZlbmRvcnNbaV0gKyAiLnhtbCI7CisJICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiVmFsaWRhdGluZyAiICsgZmlsZSk7CisgICAgICAgICAgICBib29sZWFuIGNvcmVWYWxpZGl0eSA9IHZhbGlkYXRvci52YWxpZGF0ZShmaWxlLCBza3MpOworICAgICAgICAgICAgYXNzZXJ0VHJ1ZShmaWxlICsgIiBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY29yZVZhbGlkaXR5KTsKKwl9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHRlc3RfYzE0bjExKFN0cmluZyB0ZXN0LCBTdHJpbmdbXSB2ZW5kb3JzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlmb3IgKGludCBpPTA7IGk8dmVuZG9ycy5sZW5ndGg7IGkrKykgeworCSAgICBTdHJpbmcgZmlsZSA9IHRlc3QgKyAiLSIgKyB2ZW5kb3JzW2ldICsgIi54bWwiOworCSAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIlZhbGlkYXRpbmcgIiArIGZpbGUpOworICAgICAgICAgICAgYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSB2YWxpZGF0b3IudmFsaWRhdGUoZmlsZSwgc2tzKTsKKyAgICAgICAgICAgIGFzc2VydFRydWUoZmlsZSArICIgZmFpbGVkIGNvcmUgdmFsaWRhdGlvbiIsIGNvcmVWYWxpZGl0eSk7CisJfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvQ2Fub25pY2FsaXphdGlvbk1ldGhvZFRlc3QuamF2YSBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvQ2Fub25pY2FsaXphdGlvbk1ldGhvZFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2NkODU5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9DYW5vbmljYWxpemF0aW9uTWV0aG9kVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTM1IEBACisvKgorICogQ29weXJpZ2h0IDIwMDYtMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8udGVzdC5kc2lnOworCitpbXBvcnQgamF2YS5zZWN1cml0eS4qOworaW1wb3J0IGphdmEuc2VjdXJpdHkuc3BlYy5BbGdvcml0aG1QYXJhbWV0ZXJTcGVjOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5zcGVjLkMxNE5NZXRob2RQYXJhbWV0ZXJTcGVjOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5zcGVjLkV4Y0MxNE5QYXJhbWV0ZXJTcGVjOworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLio7CisKKy8qKgorICogVW5pdCB0ZXN0IGZvciBqYXZheC54bWwuY3J5cHRvLmRzaWcuQ2Fub25pY2FsaXphdGlvbk1ldGhvZAorICoKKyAqIEB2ZXJzaW9uICRJZCQKKyAqIEBhdXRob3IgVmFsZXJpZSBQZW5nCisgKi8KK3B1YmxpYyBjbGFzcyBDYW5vbmljYWxpemF0aW9uTWV0aG9kVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgIFhNTFNpZ25hdHVyZUZhY3RvcnkgZmFjdG9yeTsKKworICAgIHN0YXRpYyB7CisgICAgICAgIFNlY3VyaXR5Lmluc2VydFByb3ZpZGVyQXQKKyAgICAgICAgICAgIChuZXcgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJKCksIDEpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBDMTROX0FMR09TW10gPSB7CisJQ2Fub25pY2FsaXphdGlvbk1ldGhvZC5JTkNMVVNJVkVfV0lUSF9DT01NRU5UUywKKwlDYW5vbmljYWxpemF0aW9uTWV0aG9kLklOQ0xVU0lWRSwKKwlDYW5vbmljYWxpemF0aW9uTWV0aG9kLkVYQ0xVU0lWRV9XSVRIX0NPTU1FTlRTLAorCUNhbm9uaWNhbGl6YXRpb25NZXRob2QuRVhDTFVTSVZFCisgICAgfTsKKworICAgIHB1YmxpYyBDYW5vbmljYWxpemF0aW9uTWV0aG9kVGVzdCgpIHsKKwlzdXBlcigiQ2Fub25pY2FsaXphdGlvbk1ldGhvZFRlc3QiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgQ2Fub25pY2FsaXphdGlvbk1ldGhvZFRlc3QoU3RyaW5nIG5hbWUpIHsKKwlzdXBlcihuYW1lKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24geyAKKwlmYWN0b3J5ID0gWE1MU2lnbmF0dXJlRmFjdG9yeS5nZXRJbnN0YW5jZQorICAgICAgICAgICAgKCJET00iLCBuZXcgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJKCkpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlYXJEb3duKCkgeyB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0aXNGZWF0dXJlU3VwcG9ydGVkKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJQ2Fub25pY2FsaXphdGlvbk1ldGhvZCBjbTsgCisJZm9yIChpbnQgaSA9IDA7IGkgPCBDMTROX0FMR09TLmxlbmd0aDsgaSsrKSB7CisJICAgIFN0cmluZyBhbGdvID0gQzE0Tl9BTEdPU1tpXTsKKwkgICAgRXhjQzE0TlBhcmFtZXRlclNwZWMgcGFyYW1zID0gbnVsbDsKKwkgICAgaWYgKGkgPj0gMikgeworCQlwYXJhbXMgPSBuZXcgRXhjQzE0TlBhcmFtZXRlclNwZWMoKTsKKwkgICAgfQorCSAgICBjbSA9IGZhY3RvcnkubmV3Q2Fub25pY2FsaXphdGlvbk1ldGhvZChhbGdvLCBwYXJhbXMpOworCSAgICB0cnkgeworCQljbS5pc0ZlYXR1cmVTdXBwb3J0ZWQobnVsbCk7IAorCQlmYWlsKCJTaG91bGQgcmFpc2UgYSBOUEUgZm9yIG51bGwgZmVhdHVyZSIpOyAKKwkgICAgfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gbnBlKSB7fQorCSAgICAKKwkgICAgYXNzZXJ0VHJ1ZSghY20uaXNGZWF0dXJlU3VwcG9ydGVkKCJub3Qgc3VwcG9ydGVkIikpOworCX0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0Q29uc3RydWN0b3IoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkvLyB0ZXN0IG5ld0FsZ29yaXRobU1ldGhvZChTdHJpbmcgYWxnb3JpdGhtLCAKKwkvLyAgICAgICAgICAgICAgICAgICAgICAgICBBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIHBhcmFtcykKKwkvLyBmb3IgZ2VuZXJhdGluZyBDYW5vbmljYWxpemF0aW9uTWV0aG9kIG9iamVjdHMKKwlDYW5vbmljYWxpemF0aW9uTWV0aG9kIGNtOyAKKwlmb3IgKGludCBpID0gMDsgaSA8IEMxNE5fQUxHT1MubGVuZ3RoOyBpKyspIHsKKwkgICAgU3RyaW5nIGFsZ28gPSBDMTROX0FMR09TW2ldOworCSAgICBjbSA9IGZhY3RvcnkubmV3Q2Fub25pY2FsaXphdGlvbk1ldGhvZChhbGdvLCAKKwkJKEMxNE5NZXRob2RQYXJhbWV0ZXJTcGVjKSBudWxsKTsKKwkgICAgYXNzZXJ0Tm90TnVsbChjbSk7CisJICAgIGFzc2VydEVxdWFscyhjbS5nZXRBbGdvcml0aG0oKSwgYWxnbyk7CisJICAgIGFzc2VydE51bGwoY20uZ2V0UGFyYW1ldGVyU3BlYygpKTsKKwkgICAgCisJICAgIHRyeSB7CisJCWNtID0gZmFjdG9yeS5uZXdDYW5vbmljYWxpemF0aW9uTWV0aG9kCisJCSAgICAoYWxnbywgbmV3IFRlc3RVdGlscy5NeU93bkMxNG5QYXJhbWV0ZXJTcGVjKCkpOworCQlmYWlsKCJTaG91bGQgcmFpc2UgYW4gSUFQRSBmb3IgaW52YWxpZCBjMTRuIHBhcmFtZXRlcnMiKTsgCisJICAgIH0gY2F0Y2ggKEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24gaWFwZSkgeworCSAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKwkJZmFpbCgiU2hvdWxkIHJhaXNlIGEgSUFQRSBpbnN0ZWFkIG9mICIgKyBleCk7IAorCSAgICB9CisJICAgIGlmIChhbGdvLmVxdWFscyhDYW5vbmljYWxpemF0aW9uTWV0aG9kLkVYQ0xVU0lWRV9XSVRIX0NPTU1FTlRTKSB8fAorCQlhbGdvLmVxdWFscyhDYW5vbmljYWxpemF0aW9uTWV0aG9kLkVYQ0xVU0lWRSkpIHsKKwkJY20gPSBmYWN0b3J5Lm5ld0Nhbm9uaWNhbGl6YXRpb25NZXRob2QKKwkJICAgIChDYW5vbmljYWxpemF0aW9uTWV0aG9kLkVYQ0xVU0lWRSwKKwkJICAgICBuZXcgRXhjQzE0TlBhcmFtZXRlclNwZWMoKSk7CisJCUFsZ29yaXRobVBhcmFtZXRlclNwZWMgYXBzID0gY20uZ2V0UGFyYW1ldGVyU3BlYygpOworCQlhc3NlcnROb3ROdWxsKGFwcyk7CisJCWFzc2VydFRydWUoYXBzIGluc3RhbmNlb2YgRXhjQzE0TlBhcmFtZXRlclNwZWMpOwkKKwkgICAgfQorCX0KKworCXRyeSB7CisJICAgIGNtID0gZmFjdG9yeS5uZXdDYW5vbmljYWxpemF0aW9uTWV0aG9kKG51bGwsIAorCQkoQzE0Tk1ldGhvZFBhcmFtZXRlclNwZWMpIG51bGwpOyAKKwkgICAgZmFpbCgiU2hvdWxkIHJhaXNlIGEgTlBFIGZvciBudWxsIGFsZ28iKTsgCisJfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gbnBlKSB7CisJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhIE5QRSBpbnN0ZWFkIG9mICIgKyBleCk7IAorCX0KKworCXRyeSB7CisJICAgIGNtID0gZmFjdG9yeS5uZXdDYW5vbmljYWxpemF0aW9uTWV0aG9kKCJub24tZXhpc3RlbnQiLCAKKwkJKEMxNE5NZXRob2RQYXJhbWV0ZXJTcGVjKSBudWxsKTsgCisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhbiBOU0FFIGZvciBub24tZXhpc3RlbnQgYWxnb3MiKTsgCisJfSBjYXRjaCAoTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIG5zYWUpIHsKKwl9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKwkgICAgZmFpbCgiU2hvdWxkIHJhaXNlIGFuIE5TQUUgaW5zdGVhZCBvZiAiICsgZXgpOyAKKwl9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9DbGFzc0xvYWRlclRlc3QuamF2YSBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvQ2xhc3NMb2FkZXJUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY3MDY1NwotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvQ2xhc3NMb2FkZXJUZXN0LmphdmEKQEAgLTAsMCArMSwxMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNi0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by50ZXN0LmRzaWc7CisKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5NZXRob2Q7CitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEubmV0LlVSTDsKK2ltcG9ydCBqYXZhLm5ldC5VUkxDbGFzc0xvYWRlcjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LkFjY2Vzc0NvbnRyb2xsZXI7CitpbXBvcnQgamF2YS5zZWN1cml0eS5Qcm92aWRlcjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlNlY3VyaXR5OworCitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLkNhbm9uaWNhbGl6YXRpb25NZXRob2Q7CitpbXBvcnQgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJOworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLio7CisKKy8qKgorICogVGhpcyB0ZXN0IHVzZXMgbW9yZSB0aGFuIG9uZSBjbGFzc2xvYWRlciB0byBsb2FkIGEgY2xhc3MgKERyaXZlcikgdGhhdAorICogaW52b2tlcyB0aGUgWE1MU2lnbmF0dXJlIEFQSS4gSXQgdGVzdHMgdGhhdCB0aGVyZSBhcmUgbm90IHByb3ZpZGVyIGNsYXNzIAorICogbG9hZGluZyBpc3N1ZXMgd2l0aCBtb3JlIHRoYW4gb25lIGNsYXNzbG9hZGVyIChzZWUgNjM4MDk1MykuCisgKi8KK3B1YmxpYyBjbGFzcyBDbGFzc0xvYWRlclRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgICBwdWJsaWMgQ2xhc3NMb2FkZXJUZXN0KFN0cmluZyBuYW1lKSB7CisJc3VwZXIobmFtZSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9tdWx0aXBsZV9sb2FkZXJzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKwlTdHJpbmcgYmFzZURpciA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpOworCVN0cmluZyBmcyA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiZmlsZS5zZXBhcmF0b3IiKTsKKyAgICAgICAgRmlsZSBmaWxlMCA9IG5ldyBGaWxlKGJhc2VEaXIgKyBmcyArICJidWlsZCIgKyBmcyArICJjbGFzc2VzIiArIGZzKTsKKyAgICAgICAgRmlsZSBmaWxlMSA9IG5ldyBGaWxlKGJhc2VEaXIgKyBmcyArICJidWlsZCIgKyBmcyArICJ0ZXN0IiArIGZzKTsKKyAgICAgICAgVVJMW10gdXJscyA9IG5ldyBVUkxbMl07CisgICAgICAgIHVybHNbMF0gPSBmaWxlMC50b1VSTCgpOworICAgICAgICB1cmxzWzFdID0gZmlsZTEudG9VUkwoKTsKKyAgICAgICAgVVJMQ2xhc3NMb2FkZXIgdWMxID0gbmV3IFVSTENsYXNzTG9hZGVyCisJICAgICh1cmxzLCBUaHJlYWQuY3VycmVudFRocmVhZCgpLmdldENvbnRleHRDbGFzc0xvYWRlcigpKTsKKyAgICAgICAgVVJMQ2xhc3NMb2FkZXIgdWMyID0gbmV3IFVSTENsYXNzTG9hZGVyCisJICAgICh1cmxzLCBUaHJlYWQuY3VycmVudFRocmVhZCgpLmdldENvbnRleHRDbGFzc0xvYWRlcigpKTsKKworICAgICAgICBDbGFzcyBjMSA9IHVjMS5sb2FkQ2xhc3MoImphdmF4LnhtbC5jcnlwdG8udGVzdC5kc2lnLkRyaXZlciIpOworICAgICAgICBDbGFzcyBjMiA9IHVjMi5sb2FkQ2xhc3MoImphdmF4LnhtbC5jcnlwdG8udGVzdC5kc2lnLkRyaXZlciIpOworICAgICAgICBPYmplY3QgbzEgPSBjMS5uZXdJbnN0YW5jZSgpOworICAgICAgICBPYmplY3QgbzIgPSBjMi5uZXdJbnN0YW5jZSgpOworICAgICAgICBNZXRob2QgbTEgPSBjMS5nZXRNZXRob2QoImRzaWciLCAoQ2xhc3NbXSkgbnVsbCk7CisgICAgICAgIE1ldGhvZCBtMiA9IGMyLmdldE1ldGhvZCgiZHNpZyIsIChDbGFzc1tdKSBudWxsKTsKKyAgICAgICAgbTEuaW52b2tlKG8xLCAoT2JqZWN0W10pIG51bGwpOworICAgICAgICBtMi5pbnZva2UobzIsIChPYmplY3RbXSkgbnVsbCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9wcm92aWRlcl9tdWx0aXBsZV9sb2FkZXJzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBiYXNlRGlyID0gU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIik7CisgICAgICAgIFN0cmluZyBmcyA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiZmlsZS5zZXBhcmF0b3IiKTsKKyAgICAgICAgRmlsZSBmaWxlMCA9IG5ldyBGaWxlKGJhc2VEaXIgKyBmcyArICJidWlsZCIgKyBmcyArICJjbGFzc2VzIiArIGZzKTsKKyAgICAgICAgRmlsZSBmaWxlMSA9IG5ldyBGaWxlKGJhc2VEaXIgKyBmcyArICJidWlsZCIgKyBmcyArICJ0ZXN0IiArIGZzKTsKKyAgICAgICAgVVJMW10gdXJscyA9IG5ldyBVUkxbMl07CisgICAgICAgIHVybHNbMF0gPSBmaWxlMC50b1VSTCgpOworICAgICAgICB1cmxzWzFdID0gZmlsZTEudG9VUkwoKTsKKworICAgICAgICBVUkxDbGFzc0xvYWRlciB1YzEgPSBuZXcgVVJMQ2xhc3NMb2FkZXIKKwkgICAgKHVybHMsIFRocmVhZC5jdXJyZW50VGhyZWFkKCkuZ2V0Q29udGV4dENsYXNzTG9hZGVyKCkpOworICAgICAgICAvL2xvYWQgc2VjdXJpdHkgcHJvdmlkZXIgdXNpbmcgY3VycmVudCBjbGFzcyBsb2FkZXIKKyAgICAgICAgZmluYWwgUHJvdmlkZXIgcHJvdmlkZXIgPSBuZXcgWE1MRFNpZ1JJKCk7CisgICAgICAgIEFjY2Vzc0NvbnRyb2xsZXIuZG9Qcml2aWxlZ2VkKG5ldyBqYXZhLnNlY3VyaXR5LlByaXZpbGVnZWRBY3Rpb24oKSB7CisgICAgICAgICAgICBwdWJsaWMgT2JqZWN0IHJ1bigpIHsKKyAgICAgICAgICAgICAgICBTZWN1cml0eS5hZGRQcm92aWRlcihwcm92aWRlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICAvLyBnZXQgdGhlIHByb3ZpZGVyIGZyb20gamF2YS5zZWN1cml0eS5TZWN1cml0eSB1c2luZyBVUkxDbGFzc0xvYWRlci4gCisJLy8gTmVlZCB0byB1c2UgaW50cm9zcGVjdGlvbiB0byBpbnZva2UgbWV0aG9kcyB0byBhdm9pZCB1c2luZyB0aGUgCisJLy8gY3VycmVudCBjbGFzcyBsb2FkZXIKKyAgICAgICAgU3RyaW5nIGZhY3RvcnlOYW1lID0gImphdmF4LnhtbC5jcnlwdG8uZHNpZy5YTUxTaWduYXR1cmVGYWN0b3J5IjsKKyAgICAgICAgQ2xhc3MgZmFjdG9yeUNsYXNzID0gdWMxLmxvYWRDbGFzcyhmYWN0b3J5TmFtZSk7CisgICAgICAgIE1ldGhvZCBmYWN0b3J5TWV0aG9kID0gZmFjdG9yeUNsYXNzLmdldERlY2xhcmVkTWV0aG9kCisJICAgICgiZ2V0SW5zdGFuY2UiLCBuZXcgQ2xhc3NbXXtTdHJpbmcuY2xhc3N9KTsKKyAgICAgICAgQ2xhc3MgbWV0aG9kUGFyYW1ldGVyQ2xhc3MgPSB1YzEubG9hZENsYXNzCisJICAgICgiamF2YXgueG1sLmNyeXB0by5kc2lnLnNwZWMuQzE0Tk1ldGhvZFBhcmFtZXRlclNwZWMiKTsKKyAgICAgICAgTWV0aG9kIGNhbm9uaWNhbGl6YXRpb25NZXRob2QgPSBmYWN0b3J5Q2xhc3MuZ2V0RGVjbGFyZWRNZXRob2QKKwkgICAgKCJuZXdDYW5vbmljYWxpemF0aW9uTWV0aG9kIiwgCisgICAgICAgICAgICAgICAgbmV3IENsYXNzW117U3RyaW5nLmNsYXNzLG1ldGhvZFBhcmFtZXRlckNsYXNzfSk7CisgICAgICAgIE9iamVjdCBmYWN0b3J5ID0gZmFjdG9yeU1ldGhvZC5pbnZva2UobnVsbCwgbmV3IE9iamVjdFtdeyJET00ifSk7CisgICAgICAgIGxvbmcgc3RhcnQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPDEwMDsgaSsrKSB7CisgICAgICAgICAgICBjYW5vbmljYWxpemF0aW9uTWV0aG9kLmludm9rZQorCQkoZmFjdG9yeSwgbmV3IE9iamVjdFtde0Nhbm9uaWNhbGl6YXRpb25NZXRob2QuRVhDTFVTSVZFLG51bGx9KTsKKyAgICAgICAgfQorICAgICAgICBsb25nIGVuZCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICBsb25nIGVsYXBzZWQgPSBlbmQtc3RhcnQ7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRWxhcHNlZDoiK2VsYXBzZWQpOworICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oImRzaWcgc3VjY2VlZGVkIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9wcm92aWRlcl9tdWx0aXBsZV9sb2FkZXJzX3R3bygpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICAgIFN0cmluZyBiYXNlRGlyID0gU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIik7CisgICAgICAgIFN0cmluZyBmcyA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiZmlsZS5zZXBhcmF0b3IiKTsKKyAgICAgICAgRmlsZSBmaWxlMCA9IG5ldyBGaWxlKGJhc2VEaXIgKyBmcyArICJidWlsZCIgKyBmcyArICJjbGFzc2VzIiArIGZzKTsKKyAgICAgICAgRmlsZSBmaWxlMSA9IG5ldyBGaWxlKGJhc2VEaXIgKyBmcyArICJidWlsZCIgKyBmcyArICJ0ZXN0IiArIGZzKTsKKyAgICAgICAgVVJMW10gdXJscyA9IG5ldyBVUkxbMl07CisgICAgICAgIHVybHNbMF0gPSBmaWxlMC50b1VSTCgpOworICAgICAgICB1cmxzWzFdID0gZmlsZTEudG9VUkwoKTsKKyAgICAgICAgVVJMQ2xhc3NMb2FkZXIgdWMxID0gbmV3IFVSTENsYXNzTG9hZGVyCisJICAgICh1cmxzLCBUaHJlYWQuY3VycmVudFRocmVhZCgpLmdldENvbnRleHRDbGFzc0xvYWRlcigpKTsKKyAgICAgICAgVVJMQ2xhc3NMb2FkZXIgdWMyID0gbmV3IFVSTENsYXNzTG9hZGVyCisJICAgICh1cmxzLCBUaHJlYWQuY3VycmVudFRocmVhZCgpLmdldENvbnRleHRDbGFzc0xvYWRlcigpKTsKKworICAgICAgICBDbGFzcyBjMSA9IHVjMS5sb2FkQ2xhc3MoImphdmF4LnhtbC5jcnlwdG8udGVzdC5kc2lnLkFwcEEiKTsKKyAgICAgICAgQ2xhc3MgYzIgPSB1YzIubG9hZENsYXNzKCJqYXZheC54bWwuY3J5cHRvLnRlc3QuZHNpZy5BcHBCIik7CisgICAgICAgIE9iamVjdCBvMSA9IGMxLm5ld0luc3RhbmNlKCk7CisgICAgICAgIE9iamVjdCBvMiA9IGMyLm5ld0luc3RhbmNlKCk7CisgICAgICAgIE1ldGhvZCBtMSA9IGMxLmdldE1ldGhvZCgiZHNpZyIsIChDbGFzc1tdKSBudWxsKTsKKyAgICAgICAgTWV0aG9kIG0yID0gYzIuZ2V0TWV0aG9kKCJkc2lnIiwgKENsYXNzW10pIG51bGwpOworICAgICAgICBtMS5pbnZva2UobzEsIChPYmplY3RbXSkgbnVsbCk7CisgICAgICAgIG0yLmludm9rZShvMiwgKE9iamVjdFtdKSBudWxsKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0NvbVJTQVNlY3VyaXR5VGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9Db21SU0FTZWN1cml0eVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2RhNjRjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9Db21SU0FTZWN1cml0eVRlc3QuamF2YQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDYgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLnRlc3QuZHNpZzsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlNlY3VyaXR5OworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLio7CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLnRlc3QuS2V5U2VsZWN0b3JzOworCisvKioKKyAqIFRoaXMgaXMgYSB0ZXN0Y2FzZSB0byB2YWxpZGF0ZSBhbGwgImJkb3VybmFlZSIgCisgKiB0ZXN0Y2FzZXMgZnJvbSBSU0EKKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKi8KK3B1YmxpYyBjbGFzcyBDb21SU0FTZWN1cml0eVRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgICBwcml2YXRlIFNpZ25hdHVyZVZhbGlkYXRvciB2YWxpZGF0b3I7CisKKyAgICBzdGF0aWMgeworICAgICAgICBTZWN1cml0eS5pbnNlcnRQcm92aWRlckF0CisgICAgICAgICAgICAobmV3IG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tLlhNTERTaWdSSSgpLCAxKTsKKyAgICB9CisKKyAgICBwdWJsaWMgQ29tUlNBU2VjdXJpdHlUZXN0KFN0cmluZyBuYW1lKSB7CisgICAgICAgIHN1cGVyKG5hbWUpOworCVN0cmluZyBmcyA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiZmlsZS5zZXBhcmF0b3IiKTsKKwlTdHJpbmcgYmFzZSA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpID09IG51bGwgPyAiLi8iOiBTeXN0ZW0uZ2V0UHJvcGVydHkoImJhc2VkaXIiKTsKKwkKKwliYXNlICs9IGZzICsgImRhdGEiICsgZnMgKyAiY29tIjsKKwl2YWxpZGF0b3IgPSBuZXcgU2lnbmF0dXJlVmFsaWRhdG9yKG5ldyBGaWxlCisJICAgIChiYXNlLCAicnNhc2VjdXJpdHkvYmRvdXJuYWVlIikpOworICAgIH0KKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2NlcnRqMjAxX2VudmVsb3BpbmcoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgU3RyaW5nIGZpbGUgPSAiY2VydGoyMDFfZW52ZWxvcGluZy54bWwiOworCisJYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSB2YWxpZGF0b3IudmFsaWRhdGUKKwkgICAgKGZpbGUsIG5ldyBLZXlTZWxlY3RvcnMuS2V5VmFsdWVLZXlTZWxlY3RvcigpKTsKKwlhc3NlcnRUcnVlKCJTaWduYXR1cmUgZmFpbGVkIGNvcmUgdmFsaWRhdGlvbiIsIGNvcmVWYWxpZGl0eSk7CisgICAgfQorICAgIHB1YmxpYyB2b2lkIHRlc3RfY2VydGoyMDFfZW52ZWxvcGVkKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBmaWxlID0gImNlcnRqMjAxX2VudmVsb3BlZC54bWwiOworCisJYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSB2YWxpZGF0b3IudmFsaWRhdGUKKwkgICAgKGZpbGUsIG5ldyBLZXlTZWxlY3RvcnMuS2V5VmFsdWVLZXlTZWxlY3RvcigpKTsKKwlhc3NlcnRUcnVlKCJTaWduYXR1cmUgZmFpbGVkIGNvcmUgdmFsaWRhdGlvbiIsIGNvcmVWYWxpZGl0eSk7CisgICAgfQorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBDb21SU0FTZWN1cml0eVRlc3QgY3QgPSBuZXcgQ29tUlNBU2VjdXJpdHlUZXN0KCIiKTsKKwljdC50ZXN0X2NlcnRqMjAxX2VudmVsb3BlZCgpOworCWN0LnRlc3RfY2VydGoyMDFfZW52ZWxvcGluZygpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvQ3JlYXRlQmFsdGltb3JlMjNUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0NyZWF0ZUJhbHRpbW9yZTIzVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4MTg3NTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0NyZWF0ZUJhbHRpbW9yZTIzVGVzdC5qYXZhCkBAIC0wLDAgKzEsNjc5IEBACisvKgorICogQ29weXJpZ2h0IDIwMDYtMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8udGVzdC5kc2lnOworCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEubWF0aC5CaWdJbnRlZ2VyOworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5U3RvcmU7CitpbXBvcnQgamF2YS5zZWN1cml0eS5QdWJsaWNLZXk7CitpbXBvcnQgamF2YS5zZWN1cml0eS5TZWN1cml0eTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGU7CitpbXBvcnQgamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRmFjdG9yeTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNSTDsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy4qOworaW1wb3J0IG9yZy53M2MuZG9tLio7CitpbXBvcnQgb3JnLnhtbC5zYXguSW5wdXRTb3VyY2U7CitpbXBvcnQgb3JnLnhtbC5zYXguU0FYUGFyc2VFeGNlcHRpb247CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5LZXlTZWxlY3RvcjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRvbS4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5kb20uRE9NU2lnbkNvbnRleHQ7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLmRvbS5ET01WYWxpZGF0ZUNvbnRleHQ7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLmtleWluZm8uKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuc3BlYy4qOworaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uKjsKK2ltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLmRvbS5ET01Tb3VyY2U7CitpbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5zdHJlYW0uU3RyZWFtUmVzdWx0OworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLio7CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLnRlc3QuS2V5U2VsZWN0b3JzOworCisvKioKKyAqIFRlc3QgdGhhdCByZWNyZWF0ZXMgbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlIHRlc3QgdmVjdG9ycyBidXQgd2l0aAorICogZGlmZmVyZW50IGtleXMgYW5kIFguNTA5IGRhdGEuCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICovCitwdWJsaWMgY2xhc3MgQ3JlYXRlQmFsdGltb3JlMjNUZXN0IGV4dGVuZHMgVGVzdENhc2UgeworCisgICAgcHJpdmF0ZSBYTUxTaWduYXR1cmVGYWN0b3J5IGZhYzsKKyAgICBwcml2YXRlIEtleUluZm9GYWN0b3J5IGtpZmFjOworICAgIHByaXZhdGUgRG9jdW1lbnRCdWlsZGVyIGRiOworICAgIHByaXZhdGUgQ2Fub25pY2FsaXphdGlvbk1ldGhvZCB3aXRob3V0Q29tbWVudHM7CisgICAgcHJpdmF0ZSBUcmFuc2Zvcm0gd2l0aENvbW1lbnRzOworICAgIHByaXZhdGUgU2lnbmF0dXJlTWV0aG9kIGRzYVNoYTEsIHJzYVNoYTE7CisgICAgcHJpdmF0ZSBEaWdlc3RNZXRob2Qgc2hhMTsKKyAgICBwcml2YXRlIEtleUluZm8gZHNhLCByc2E7CisgICAgcHJpdmF0ZSBLZXlTZWxlY3RvciBrdmtzID0gbmV3IEtleVNlbGVjdG9ycy5LZXlWYWx1ZUtleVNlbGVjdG9yKCk7CisgICAgcHJpdmF0ZSBLZXlTZWxlY3RvciBza3M7IAorICAgIHByaXZhdGUgS2V5IHNpZ25pbmdLZXk7CisgICAgcHJpdmF0ZSBQdWJsaWNLZXkgdmFsaWRhdGluZ0tleTsKKyAgICBwcml2YXRlIENlcnRpZmljYXRlIHNpZ25pbmdDZXJ0OworICAgIHByaXZhdGUgS2V5U3RvcmUga3M7CisKKyAgICBzdGF0aWMgeworICAgICAgICBTZWN1cml0eS5pbnNlcnRQcm92aWRlckF0CisgICAgICAgICAgICAobmV3IG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tLlhNTERTaWdSSSgpLCAxKTsKKyAgICB9CisKKyAgICBwdWJsaWMgQ3JlYXRlQmFsdGltb3JlMjNUZXN0KFN0cmluZyBuYW1lKSB7CisJc3VwZXIobmFtZSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlmYWMgPSBYTUxTaWduYXR1cmVGYWN0b3J5LmdldEluc3RhbmNlCisJICAgICgiRE9NIiwgbmV3IG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tLlhNTERTaWdSSSgpKTsKKwlraWZhYyA9IGZhYy5nZXRLZXlJbmZvRmFjdG9yeSgpOworCURvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCWRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKwlkYiA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKKworCS8vIGdldCBrZXkgJiBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZSBmcm9tIGtleXN0b3JlCisJU3RyaW5nIGZzID0gU3lzdGVtLmdldFByb3BlcnR5KCJmaWxlLnNlcGFyYXRvciIpOworCVN0cmluZyBiYXNlID0gU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIikgPT0gbnVsbCA/ICIuLyI6IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpOworCisJRmlsZUlucHV0U3RyZWFtIGZpcyA9IG5ldyBGaWxlSW5wdXRTdHJlYW0KKwkgICAgKGJhc2UgKyBmcyArICJkYXRhIiArIGZzICsgInRlc3QuamtzIik7CisJa3MgPSBLZXlTdG9yZS5nZXRJbnN0YW5jZSgiSktTIik7CisJa3MubG9hZChmaXMsICJjaGFuZ2VpdCIudG9DaGFyQXJyYXkoKSk7CisJc2lnbmluZ0tleSA9IGtzLmdldEtleSgibXVsbGFuIiwgImNoYW5nZWl0Ii50b0NoYXJBcnJheSgpKTsKKwlzaWduaW5nQ2VydCA9IGtzLmdldENlcnRpZmljYXRlKCJtdWxsYW4iKTsKKwl2YWxpZGF0aW5nS2V5ID0gc2lnbmluZ0NlcnQuZ2V0UHVibGljS2V5KCk7CisKKwkvLyBjcmVhdGUgY29tbW9uIG9iamVjdHMKKwl3aXRob3V0Q29tbWVudHMgPSBmYWMubmV3Q2Fub25pY2FsaXphdGlvbk1ldGhvZAorCSAgICAoQ2Fub25pY2FsaXphdGlvbk1ldGhvZC5JTkNMVVNJVkUsIChDMTROTWV0aG9kUGFyYW1ldGVyU3BlYykgbnVsbCk7CisJd2l0aENvbW1lbnRzID0gZmFjLm5ld1RyYW5zZm9ybQorCSAgICAoQ2Fub25pY2FsaXphdGlvbk1ldGhvZC5JTkNMVVNJVkVfV0lUSF9DT01NRU5UUywgCisJICAgICAoVHJhbnNmb3JtUGFyYW1ldGVyU3BlYykgbnVsbCk7CisJZHNhU2hhMSA9IGZhYy5uZXdTaWduYXR1cmVNZXRob2QoU2lnbmF0dXJlTWV0aG9kLkRTQV9TSEExLCBudWxsKTsKKwlzaGExID0gZmFjLm5ld0RpZ2VzdE1ldGhvZChEaWdlc3RNZXRob2QuU0hBMSwgbnVsbCk7CisJZHNhID0ga2lmYWMubmV3S2V5SW5mbyhDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0CisJICAgIChraWZhYy5uZXdLZXlWYWx1ZSh2YWxpZGF0aW5nS2V5KSkpOworCXJzYSA9IGtpZmFjLm5ld0tleUluZm8oQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdAorCSAgICAoa2lmYWMubmV3S2V5VmFsdWUoVGVzdFV0aWxzLmdldFB1YmxpY0tleSgiUlNBIikpKSk7CisJcnNhU2hhMSA9IGZhYy5uZXdTaWduYXR1cmVNZXRob2QoU2lnbmF0dXJlTWV0aG9kLlJTQV9TSEExLCBudWxsKTsKKyAgICAgICAgc2tzID0gbmV3IEtleVNlbGVjdG9ycy5TZWNyZXRLZXlTZWxlY3Rvcigic2VjcmV0Ii5nZXRCeXRlcygiQVNDSUkiKSk7CisKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2NyZWF0ZV9zaWduYXR1cmVfZW52ZWxvcGVkX2RzYSgpIHRocm93cyBFeGNlcHRpb24geworCS8vIGNyZWF0ZSBTaWduZWRJbmZvCisJU2lnbmVkSW5mbyBzaSA9IGZhYy5uZXdTaWduZWRJbmZvCisJICAgICh3aXRob3V0Q29tbWVudHMsIGRzYVNoYTEsIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QKKwkJKGZhYy5uZXdSZWZlcmVuY2UKKwkJICAgICgiIiwgc2hhMSwgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdAorCSAgICAgICAgICAgICAgICAoZmFjLm5ld1RyYW5zZm9ybShUcmFuc2Zvcm0uRU5WRUxPUEVELCAKKwkJCSAoVHJhbnNmb3JtUGFyYW1ldGVyU3BlYykgbnVsbCkpLCAKKwkgICAgICAgICBudWxsLCBudWxsKSkpOworCisJLy8gY3JlYXRlIFhNTFNpZ25hdHVyZQorCVhNTFNpZ25hdHVyZSBzaWcgPSBmYWMubmV3WE1MU2lnbmF0dXJlKHNpLCBkc2EpOworCisJRG9jdW1lbnQgZG9jID0gZGIubmV3RG9jdW1lbnQoKTsKKwlFbGVtZW50IGVudmVsb3BlID0gZG9jLmNyZWF0ZUVsZW1lbnROUworCSAgICAoImh0dHA6Ly9leGFtcGxlLm9yZy9lbnZlbG9wZSIsICJFbnZlbG9wZSIpOworCWVudmVsb3BlLnNldEF0dHJpYnV0ZU5TCisJICAgIChDb25zdGFudHMuTmFtZXNwYWNlU3BlY05TLCAieG1sbnMiLCAiaHR0cDovL2V4YW1wbGUub3JnL2VudmVsb3BlIik7CisJZG9jLmFwcGVuZENoaWxkKGVudmVsb3BlKTsKKworCURPTVNpZ25Db250ZXh0IGRzYyA9IG5ldyBET01TaWduQ29udGV4dChzaWduaW5nS2V5LCBlbnZlbG9wZSk7CisKKwlzaWcuc2lnbihkc2MpOworCisJRE9NVmFsaWRhdGVDb250ZXh0IGR2YyA9IG5ldyBET01WYWxpZGF0ZUNvbnRleHQKKwkgICAgKGt2a3MsIGVudmVsb3BlLmdldEZpcnN0Q2hpbGQoKSk7CisJWE1MU2lnbmF0dXJlIHNpZzIgPSBmYWMudW5tYXJzaGFsWE1MU2lnbmF0dXJlKGR2Yyk7CisKKwlhc3NlcnRUcnVlKHNpZy5lcXVhbHMoc2lnMikpOworCisJYXNzZXJ0VHJ1ZShzaWcyLnZhbGlkYXRlKGR2YykpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RfY3JlYXRlX3NpZ25hdHVyZV9lbnZlbG9waW5nX2I2NF9kc2EoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwl0ZXN0X2NyZWF0ZV9zaWduYXR1cmVfZW52ZWxvcGluZyhkc2FTaGExLCBkc2EsIHNpZ25pbmdLZXksIGt2a3MsIHRydWUpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RfY3JlYXRlX3NpZ25hdHVyZV9lbnZlbG9waW5nX2RzYSgpIHRocm93cyBFeGNlcHRpb24geworCXRlc3RfY3JlYXRlX3NpZ25hdHVyZV9lbnZlbG9waW5nKGRzYVNoYTEsIGRzYSwgc2lnbmluZ0tleSwga3ZrcywgZmFsc2UpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RfY3JlYXRlX3NpZ25hdHVyZV9lbnZlbG9waW5nX2htYWNfc2hhMV80MCgpIAorCXRocm93cyBFeGNlcHRpb24geworCVNpZ25hdHVyZU1ldGhvZCBobWFjU2hhMSA9IGZhYy5uZXdTaWduYXR1cmVNZXRob2QKKwkgICAgKFNpZ25hdHVyZU1ldGhvZC5ITUFDX1NIQTEsIG5ldyBITUFDUGFyYW1ldGVyU3BlYyg0MCkpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgdGVzdF9jcmVhdGVfc2lnbmF0dXJlX2VudmVsb3BpbmcoaG1hY1NoYTEsIG51bGwsCisJICAgICAgICBUZXN0VXRpbHMuZ2V0U2VjcmV0S2V5KCJzZWNyZXQiLmdldEJ5dGVzKCJBU0NJSSIpKSwgc2tzLCBmYWxzZSk7CisgICAgICAgICAgICBmYWlsKCJFeHBlY3RlZCBITUFDT3V0cHV0TGVuZ3RoIEV4Y2VwdGlvbiIpOworICAgICAgICB9IGNhdGNoIChYTUxTaWduYXR1cmVFeGNlcHRpb24geHNlKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oeHNlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICAvLyBwYXNzCisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2NyZWF0ZV9zaWduYXR1cmVfZW52ZWxvcGluZ19obWFjX3NoYTEoKQorCXRocm93cyBFeGNlcHRpb24geworCVNpZ25hdHVyZU1ldGhvZCBobWFjU2hhMSA9IGZhYy5uZXdTaWduYXR1cmVNZXRob2QKKwkgICAgKFNpZ25hdHVyZU1ldGhvZC5ITUFDX1NIQTEsIG51bGwpOworICAgICAgICB0ZXN0X2NyZWF0ZV9zaWduYXR1cmVfZW52ZWxvcGluZyhobWFjU2hhMSwgbnVsbCwKKwkgICAgVGVzdFV0aWxzLmdldFNlY3JldEtleSgic2VjcmV0Ii5nZXRCeXRlcygiQVNDSUkiKSksIHNrcywgZmFsc2UpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RfY3JlYXRlX3NpZ25hdHVyZV9lbnZlbG9waW5nX3JzYSgpIHRocm93cyBFeGNlcHRpb24geworCXRlc3RfY3JlYXRlX3NpZ25hdHVyZV9lbnZlbG9waW5nKHJzYVNoYTEsIHJzYSwgCisJICAgIFRlc3RVdGlscy5nZXRQcml2YXRlS2V5KCJSU0EiKSwga3ZrcywgZmFsc2UpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RfY3JlYXRlX3NpZ25hdHVyZV9leHRlcm5hbF9iNjRfZHNhKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJdGVzdF9jcmVhdGVfc2lnbmF0dXJlX2V4dGVybmFsKGRzYVNoYTEsIGRzYSwgc2lnbmluZ0tleSwga3ZrcywgdHJ1ZSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9jcmVhdGVfc2lnbmF0dXJlX2V4dGVybmFsX2RzYSgpIHRocm93cyBFeGNlcHRpb24geworCXRlc3RfY3JlYXRlX3NpZ25hdHVyZV9leHRlcm5hbChkc2FTaGExLCBkc2EsIHNpZ25pbmdLZXksIGt2a3MsIGZhbHNlKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2NyZWF0ZV9zaWduYXR1cmVfa2V5bmFtZSgpIHRocm93cyBFeGNlcHRpb24geworCUtleUluZm8ga24gPSBraWZhYy5uZXdLZXlJbmZvKENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QKKwkgICAgKGtpZmFjLm5ld0tleU5hbWUoIm11bGxhbiIpKSk7CisJdGVzdF9jcmVhdGVfc2lnbmF0dXJlX2V4dGVybmFsKGRzYVNoYTEsIGtuLCBzaWduaW5nS2V5LAorCSAgICBuZXcgWDUwOUtleVNlbGVjdG9yKGtzKSwgZmFsc2UpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RfY3JlYXRlX3NpZ25hdHVyZV9yZXRyaWV2YWxtZXRob2RfcmF3eDUwOWNydCgpIAorCXRocm93cyBFeGNlcHRpb24geworCUtleUluZm8gcm0gPSBraWZhYy5uZXdLZXlJbmZvKENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QKKwkgICAgKGtpZmFjLm5ld1JldHJpZXZhbE1ldGhvZAorCSAgICAoImNlcnRzL211bGxhbi5jcnQiLCBYNTA5RGF0YS5SQVdfWDUwOV9DRVJUSUZJQ0FURV9UWVBFLCBudWxsKSkpOworCXRlc3RfY3JlYXRlX3NpZ25hdHVyZV9leHRlcm5hbChkc2FTaGExLCBybSwgc2lnbmluZ0tleSwKKwkgICAgbmV3IFg1MDlLZXlTZWxlY3RvcihrcyksIGZhbHNlKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2NyZWF0ZV9zaWduYXR1cmVfeDUwOV9jcnRfY3JsKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJTGlzdCB4ZHMgPSBuZXcgQXJyYXlMaXN0KCk7CisJQ2VydGlmaWNhdGVGYWN0b3J5IGNmID0gQ2VydGlmaWNhdGVGYWN0b3J5LmdldEluc3RhbmNlKCJYLjUwOSIpOworCXhkcy5hZGQoc2lnbmluZ0NlcnQpOworCVN0cmluZyBmcyA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiZmlsZS5zZXBhcmF0b3IiKTsKKwlGaWxlSW5wdXRTdHJlYW0gZmlzID0gbmV3IEZpbGVJbnB1dFN0cmVhbQorCSAgICAoU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIikgKyBmcyArICJkYXRhIiArIGZzICsgImllIiArIGZzICsKKwkgICAgICJiYWx0aW1vcmUiICsgZnMgKyAibWVybGluLWV4YW1wbGVzIiArIGZzICsgCisJICAgICAibWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlIiArIGZzICsgImNlcnRzIiArIGZzICsgImNybCIpOworCVg1MDlDUkwgY3JsID0gKFg1MDlDUkwpIGNmLmdlbmVyYXRlQ1JMKGZpcyk7CisJZmlzLmNsb3NlKCk7CisJeGRzLmFkZChjcmwpOworCUtleUluZm8gY3J0X2NybCA9IGtpZmFjLm5ld0tleUluZm8oQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdAorICAgICAgICAgICAgKGtpZmFjLm5ld1g1MDlEYXRhKHhkcykpKTsKKworCXRlc3RfY3JlYXRlX3NpZ25hdHVyZV9leHRlcm5hbChkc2FTaGExLCBjcnRfY3JsLCBzaWduaW5nS2V5LAorCSAgICBuZXcgWDUwOUtleVNlbGVjdG9yKGtzKSwgZmFsc2UpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RfY3JlYXRlX3NpZ25hdHVyZV94NTA5X2NydCgpIHRocm93cyBFeGNlcHRpb24geworCUtleUluZm8gY3J0ID0ga2lmYWMubmV3S2V5SW5mbyhDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0CisgICAgICAgICAgICAoa2lmYWMubmV3WDUwOURhdGEoQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChzaWduaW5nQ2VydCkpKSk7CisKKwl0ZXN0X2NyZWF0ZV9zaWduYXR1cmVfZXh0ZXJuYWwoZHNhU2hhMSwgY3J0LCBzaWduaW5nS2V5LAorCSAgICBuZXcgWDUwOUtleVNlbGVjdG9yKGtzKSwgZmFsc2UpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RfY3JlYXRlX3NpZ25hdHVyZV94NTA5X2lzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJS2V5SW5mbyBpcyA9IGtpZmFjLm5ld0tleUluZm8oQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdAorCSAgICAoa2lmYWMubmV3WDUwOURhdGEoQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdAorCSAgICAoa2lmYWMubmV3WDUwOUlzc3VlclNlcmlhbAorCSAgICAoIkNOPVNlYW4gTXVsbGFuLERDPXN1bixEQz1jb20iLAorCSAgICBuZXcgQmlnSW50ZWdlcigiNDdjZGI3NzIiLCAxNikpKSkpKTsKKwl0ZXN0X2NyZWF0ZV9zaWduYXR1cmVfZXh0ZXJuYWwoZHNhU2hhMSwgaXMsIHNpZ25pbmdLZXksCisJICAgIG5ldyBYNTA5S2V5U2VsZWN0b3Ioa3MpLCBmYWxzZSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9jcmVhdGVfc2lnbmF0dXJlX3g1MDlfc2tpKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJS2V5SW5mbyBza2kgPSBraWZhYy5uZXdLZXlJbmZvKENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QKKyAgICAgICAgICAgIChraWZhYy5uZXdYNTA5RGF0YShDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0CisJICAgICgia2V5aWQiLmdldEJ5dGVzKCJBU0NJSSIpKSkpKTsKKworCXRlc3RfY3JlYXRlX3NpZ25hdHVyZV9leHRlcm5hbChkc2FTaGExLCBza2ksIHNpZ25pbmdLZXksCisJICAgIEtleVNlbGVjdG9yLnNpbmdsZXRvbktleVNlbGVjdG9yKHZhbGlkYXRpbmdLZXkpLCBmYWxzZSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9jcmVhdGVfc2lnbmF0dXJlX3g1MDlfc24oKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlLZXlJbmZvIHNuID0ga2lmYWMubmV3S2V5SW5mbyhDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0CisgICAgICAgICAgICAoa2lmYWMubmV3WDUwOURhdGEoQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdAorCSAgICAoIkNOPVNlYW4gTXVsbGFuLERDPXN1bixEQz1jb20iKSkpKTsKKworCXRlc3RfY3JlYXRlX3NpZ25hdHVyZV9leHRlcm5hbChkc2FTaGExLCBzbiwgc2lnbmluZ0tleSwKKwkgICAgbmV3IFg1MDlLZXlTZWxlY3RvcihrcyksIGZhbHNlKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2NyZWF0ZV9zaWduYXR1cmUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkvLyBzZXQgdXAgcmV1c2FibGUgb2JqZWN0cworCVRyYW5zZm9ybSBlbnYgPSBmYWMubmV3VHJhbnNmb3JtKFRyYW5zZm9ybS5FTlZFTE9QRUQsIAorCSAgICAoVHJhbnNmb3JtUGFyYW1ldGVyU3BlYykgbnVsbCk7CisKKwkvLyBjcmVhdGUgcmVmZXJlbmNlcworCUxpc3QgcmVmcyA9IG5ldyBBcnJheUxpc3QoKTsKKwkKKwkvLyBSZWZlcmVuY2UgMQorCXJlZnMuYWRkKGZhYy5uZXdSZWZlcmVuY2UoImh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1zdHlsZXNoZWV0Iiwgc2hhMSkpOworCisJLy8gUmVmZXJlbmNlIDIKKyAgICAgICAgcmVmcy5hZGQoZmFjLm5ld1JlZmVyZW5jZQorCSAgICAoImh0dHA6Ly93d3cudzMub3JnL1NpZ25hdHVyZS8yMDAyLzA0L3htbC1zdHlsZXNoZWV0LmI2NCIsIAorCSAgICBzaGExLCBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0CisgICAgICAgICAgICAoZmFjLm5ld1RyYW5zZm9ybShUcmFuc2Zvcm0uQkFTRTY0LCAKKwkgICAgIChUcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjKSBudWxsKSksIG51bGwsIG51bGwpKTsKKworCS8vIFJlZmVyZW5jZSAzCisgICAgICAgIHJlZnMuYWRkKGZhYy5uZXdSZWZlcmVuY2UoIiNvYmplY3QtMSIsIHNoYTEsIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QKKwkgICAgKGZhYy5uZXdUcmFuc2Zvcm0oVHJhbnNmb3JtLlhQQVRILCAKKwkgICAgbmV3IFhQYXRoRmlsdGVyUGFyYW1ldGVyU3BlYygic2VsZjo6dGV4dCgpIikpKSwgCisJICAgIFhNTE9iamVjdC5UWVBFLCBudWxsKSk7CisKKwkvLyBSZWZlcmVuY2UgNAorCVN0cmluZyBleHByID0gIlxuIgorICAgICAgICAgICsgIiBhbmNlc3Rvci1vci1zZWxmOjpkc2lnOlNpZ25lZEluZm8JCQkgIiArICJcbiIKKyAgICAgICAgICArICIgIGFuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiArICJcbiIKKyAgICAgICAgICArICIgY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6ZHNpZzpSZWZlcmVuY2UgfAkJICIgKyAiXG4iCisgICAgICAgICAgKyAiCSAgIGhlcmUoKS9hbmNlc3Rvcjo6ZHNpZzpSZWZlcmVuY2VbMV0pID4JICIgKyAiXG4iCisgICAgICAgICAgKyAiIGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6OmRzaWc6UmVmZXJlbmNlKQkJICIgKyAiXG4iCisgICAgICAgICAgKyAiICBvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgKyAiXG4iCisgICAgICAgICAgKyAiIGNvdW50KGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSB8CQkJICIgKyAiXG4iCisgICAgICAgICAgKyAiCSAgIGlkKCdub3RhcmllcycpKSA9CQkJCSAiICsgIlxuIgorICAgICAgICAgICsgIiBjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpCQkJICIgKyAiXG4iOworCisJbmV3IFhQYXRoRmlsdGVyUGFyYW1ldGVyU3BlYyhleHByLAorCSAgICBDb2xsZWN0aW9ucy5zaW5nbGV0b25NYXAoImRzaWciLCBYTUxTaWduYXR1cmUuWE1MTlMpKTsKKy8vICAgICAgICByZWZzLmFkZChmYWMubmV3UmVmZXJlbmNlKCIiLCBzaGExLCBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0CisvLwkgICAgKGZhYy5uZXdUcmFuc2Zvcm0oVHJhbnNmb3JtLlhQQVRILCB4ZnApKSwKKy8vCSAgICBYTUxPYmplY3QuVFlQRSwgbnVsbCkpOworCisJLy8gUmVmZXJlbmNlIDUKKyAgICAgICAgcmVmcy5hZGQoZmFjLm5ld1JlZmVyZW5jZSgiI29iamVjdC0yIiwgc2hhMSwgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdAorCSAgICAoZmFjLm5ld1RyYW5zZm9ybShUcmFuc2Zvcm0uQkFTRTY0LCAoVHJhbnNmb3JtUGFyYW1ldGVyU3BlYykgbnVsbCkpLAorCSAgICBYTUxPYmplY3QuVFlQRSwgbnVsbCkpOworCisJLy8gUmVmZXJlbmNlIDYKKyAgICAgICAgcmVmcy5hZGQoZmFjLm5ld1JlZmVyZW5jZQorCSAgICAoIiNtYW5pZmVzdC0xIiwgc2hhMSwgbnVsbCwgTWFuaWZlc3QuVFlQRSwgbnVsbCkpOworCisJLy8gUmVmZXJlbmNlIDcKKyAgICAgICAgcmVmcy5hZGQoZmFjLm5ld1JlZmVyZW5jZSgiI3NpZ25hdHVyZS1wcm9wZXJ0aWVzLTEiLCBzaGExLCBudWxsLCAKKwkgICAgU2lnbmF0dXJlUHJvcGVydGllcy5UWVBFLCBudWxsKSk7CisKKwkvLyBSZWZlcmVuY2UgOAorCUxpc3QgdHJhbnNmb3JtcyA9IG5ldyBBcnJheUxpc3QoKTsKKwl0cmFuc2Zvcm1zLmFkZChlbnYpOworICAgICAgICByZWZzLmFkZChmYWMubmV3UmVmZXJlbmNlKCIiLCBzaGExLCB0cmFuc2Zvcm1zLCBudWxsLCBudWxsKSk7CisKKwkvLyBSZWZlcmVuY2UgOQorCXRyYW5zZm9ybXMuYWRkKHdpdGhDb21tZW50cyk7CisgICAgICAgIHJlZnMuYWRkKGZhYy5uZXdSZWZlcmVuY2UoIiIsIHNoYTEsIHRyYW5zZm9ybXMsIG51bGwsIG51bGwpKTsKKworCS8vIFJlZmVyZW5jZSAxMAorICAgICAgICByZWZzLmFkZChmYWMubmV3UmVmZXJlbmNlKCIjeHBvaW50ZXIoLykiLAorCSAgICBzaGExLCBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KGVudiksIG51bGwsIG51bGwpKTsKKworCS8vIFJlZmVyZW5jZSAxMQorICAgICAgICByZWZzLmFkZChmYWMubmV3UmVmZXJlbmNlKCIjeHBvaW50ZXIoLykiLCBzaGExLCB0cmFuc2Zvcm1zLCAKKwkgICAgbnVsbCwgbnVsbCkpOworCisJLy8gUmVmZXJlbmNlIDEyCisgICAgICAgIHJlZnMuYWRkCisJICAgIChmYWMubmV3UmVmZXJlbmNlKCIjb2JqZWN0LTMiLCBzaGExLCBudWxsLCBYTUxPYmplY3QuVFlQRSwgbnVsbCkpOworCisJLy8gUmVmZXJlbmNlIDEzCisgICAgICAgIHJlZnMuYWRkKGZhYy5uZXdSZWZlcmVuY2UoIiNvYmplY3QtMyIsIHNoYTEsIAorCSAgICBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KHdpdGhDb21tZW50cyksIFhNTE9iamVjdC5UWVBFLCBudWxsKSk7CisKKwkvLyBSZWZlcmVuY2UgMTQKKyAgICAgICAgcmVmcy5hZGQoZmFjLm5ld1JlZmVyZW5jZSgiI3hwb2ludGVyKGlkKCdvYmplY3QtMycpKSIsIHNoYTEsIG51bGwsIAorCSAgICBYTUxPYmplY3QuVFlQRSwgbnVsbCkpOworCisJLy8gUmVmZXJlbmNlIDE1CisgICAgICAgIHJlZnMuYWRkKGZhYy5uZXdSZWZlcmVuY2UoIiN4cG9pbnRlcihpZCgnb2JqZWN0LTMnKSkiLCBzaGExLCAKKwkgICAgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdCh3aXRoQ29tbWVudHMpLCBYTUxPYmplY3QuVFlQRSwgbnVsbCkpOworCisJLy8gUmVmZXJlbmNlIDE2CisgICAgICAgIHJlZnMuYWRkKGZhYy5uZXdSZWZlcmVuY2UoIiNyZWZlcmVuY2UtMiIsIHNoYTEpKTsKKworCS8vIFJlZmVyZW5jZSAxNworICAgICAgICByZWZzLmFkZChmYWMubmV3UmVmZXJlbmNlKCIjbWFuaWZlc3QtcmVmZXJlbmNlLTEiLCBzaGExLCBudWxsLAorCSAgICBudWxsLCAicmVmZXJlbmNlLTEiKSk7CisKKwkvLyBSZWZlcmVuY2UgMTgKKyAgICAgICAgcmVmcy5hZGQoZmFjLm5ld1JlZmVyZW5jZSgiI3JlZmVyZW5jZS0xIiwgc2hhMSwgbnVsbCwgbnVsbCwKKwkgICAgInJlZmVyZW5jZS0yIikpOworCisJLy8gY3JlYXRlIFNpZ25lZEluZm8KKwlTaWduZWRJbmZvIHNpID0gZmFjLm5ld1NpZ25lZEluZm8od2l0aG91dENvbW1lbnRzLCBkc2FTaGExLCByZWZzKTsKKworCS8vIGNyZWF0ZSBrZXlpbmZvCisJWFBhdGhGaWx0ZXJQYXJhbWV0ZXJTcGVjIHhwZiA9IG5ldyBYUGF0aEZpbHRlclBhcmFtZXRlclNwZWMoCisJICAgICJhbmNlc3Rvci1vci1zZWxmOjpkc2lnOlg1MDlEYXRhIiwKKwkgICAgQ29sbGVjdGlvbnMuc2luZ2xldG9uTWFwKCJkc2lnIiwgWE1MU2lnbmF0dXJlLlhNTE5TKSk7CisJUmV0cmlldmFsTWV0aG9kIHJtID0ga2lmYWMubmV3UmV0cmlldmFsTWV0aG9kKCIjb2JqZWN0LTQiLCAKKwkgICAgWDUwOURhdGEuVFlQRSwgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChmYWMubmV3VHJhbnNmb3JtCisJICAgIChUcmFuc2Zvcm0uWFBBVEgsIHhwZikpKTsKKwlLZXlJbmZvIGtpID0ga2lmYWMubmV3S2V5SW5mbyhDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KHJtKSwgbnVsbCk7CisKKwlEb2N1bWVudCBkb2MgPSBkYi5uZXdEb2N1bWVudCgpOworCisJLy8gY3JlYXRlIG9iamVjdHMKKwlMaXN0IG9ianMgPSBuZXcgQXJyYXlMaXN0KCk7CisKKwkvLyBPYmplY3QgMQorCW9ianMuYWRkKGZhYy5uZXdYTUxPYmplY3QoQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdAorCSAgICAobmV3IERPTVN0cnVjdHVyZShkb2MuY3JlYXRlVGV4dE5vZGUoIkkgYW0gdGhlIHRleHQuIikpKSwgCisJICAgICJvYmplY3QtMSIsICJ0ZXh0L3BsYWluIiwgbnVsbCkpOworCisJLy8gT2JqZWN0IDIKKwlvYmpzLmFkZChmYWMubmV3WE1MT2JqZWN0KENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QKKwkgICAgKG5ldyBET01TdHJ1Y3R1cmUoZG9jLmNyZWF0ZVRleHROb2RlKCJTU0JoYlNCMGFHVWdkR1Y0ZEM0PSIpKSksIAorCSAgICAib2JqZWN0LTIiLCAidGV4dC9wbGFpbiIsIFRyYW5zZm9ybS5CQVNFNjQpKTsKKworCS8vIE9iamVjdCAzCisJRWxlbWVudCBuYyA9IGRvYy5jcmVhdGVFbGVtZW50TlMobnVsbCwgIk5vbkNvbW1lbnRhbmR1cyIpOworCW5jLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsICJ4bWxucyIsICIiKTsKKyAgICAgICAgbmMuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZUNvbW1lbnQoIiBDb21tZW50YW5kdW0gIikpOworCW9ianMuYWRkKGZhYy5uZXdYTUxPYmplY3QoQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdAorCSAgICAobmV3IERPTVN0cnVjdHVyZShuYykpLCAib2JqZWN0LTMiLCBudWxsLCBudWxsKSk7CisKKwkvLyBNYW5pZmVzdAorCUxpc3QgbWFuUmVmcyA9IG5ldyBBcnJheUxpc3QoKTsKKworCS8vIE1hbmlmZXN0IFJlZmVyZW5jZSAxCisJbWFuUmVmcy5hZGQoZmFjLm5ld1JlZmVyZW5jZSgiaHR0cDovL3d3dy53My5vcmcvVFIveG1sLXN0eWxlc2hlZXQiLAorCSAgICBzaGExLCBudWxsLCBudWxsLCAibWFuaWZlc3QtcmVmZXJlbmNlLTEiKSk7CisKKwkvLyBNYW5pZmVzdCBSZWZlcmVuY2UgMgorCW1hblJlZnMuYWRkKGZhYy5uZXdSZWZlcmVuY2UoIiNyZWZlcmVuY2UtMSIsIHNoYTEpKTsKKworCS8vIE1hbmlmZXN0IFJlZmVyZW5jZSAzCisJTGlzdCBtYW5UcmFucyA9IG5ldyBBcnJheUxpc3QoKTsKKyAgICAgICAgU3RyaW5nIHhzbHQgPSAiIgorCSAgKyAiPHhzbDpzdHlsZXNoZWV0IHhtbG5zOnhzbD0naHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtJ1xuIgorCSAgKyAiCQkgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9zdHJpY3QnIFxuIgorCSAgKyAiCQkgZXhjbHVkZS1yZXN1bHQtcHJlZml4ZXM9J2ZvbycgXG4iCisJICArICIJCSB2ZXJzaW9uPScxLjAnPlxuIgorCSAgKyAiICA8eHNsOm91dHB1dCBlbmNvZGluZz0nVVRGLTgnIFxuIgorCSAgKyAiCQlpbmRlbnQ9J25vJyBcbiIKKwkgICsgIgkJbWV0aG9kPSd4bWwnIC8+XG4iCisJICArICIgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Jy8nPlxuIgorCSAgKyAiICAgIDxodG1sPlxuIgorCSAgKyAiCTxoZWFkPlxuIgorCSAgKyAiCSA8dGl0bGU+Tm90YXJpZXM8L3RpdGxlPlxuIgorCSAgKyAiCTwvaGVhZD5cbiIKKwkgICsgIgk8Ym9keT5cbiIKKwkgICsgIgkgPHRhYmxlPlxuIgorCSAgKyAiCSAgIDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSdOb3Rhcmllcy9Ob3RhcnknPlxuIgorCSAgKyAiCQk8dHI+XG4iCisJICArICIJCTx0aD5cbiIKKwkgICsgIgkJIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSdAbmFtZScgLz5cbiIKKwkgICsgIgkJPC90aD5cbiIKKwkgICsgIgkJPC90cj5cbiIKKwkgICsgIgkgICA8L3hzbDpmb3ItZWFjaD5cbiIKKwkgICsgIgkgPC90YWJsZT5cbiIKKwkgICsgIgk8L2JvZHk+XG4iCisJICArICIgICAgPC9odG1sPlxuIgorCSAgKyAiICA8L3hzbDp0ZW1wbGF0ZT5cbiIKKwkgICsgIjwveHNsOnN0eWxlc2hlZXQ+XG4iOworCURvY3VtZW50IGRvY3hzbHQgPSBkYi5wYXJzZShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oeHNsdC5nZXRCeXRlcygpKSk7CisgICAgICAgIE5vZGUgeHNsRWxlbSA9IGRvY3hzbHQuZ2V0RG9jdW1lbnRFbGVtZW50KCk7CisKKwltYW5UcmFucy5hZGQoZmFjLm5ld1RyYW5zZm9ybShUcmFuc2Zvcm0uWFNMVCwgCisJICAgIG5ldyBYU0xUVHJhbnNmb3JtUGFyYW1ldGVyU3BlYyhuZXcgRE9NU3RydWN0dXJlKHhzbEVsZW0pKSkpOworCW1hblRyYW5zLmFkZChmYWMubmV3VHJhbnNmb3JtKENhbm9uaWNhbGl6YXRpb25NZXRob2QuSU5DTFVTSVZFLCAKKwkgICAgKFRyYW5zZm9ybVBhcmFtZXRlclNwZWMpIG51bGwpKTsKKy8vIENvbW1lbnQgb3V0IE1hbmlmZXN0IFJlZmVyZW5jZSAzLCBmb3Igc29tZSByZWFzb24geGFsYW4gaXMgdGhyb3dpbmcgTlBFCisvLyB3aGVuIFRyYW5zZm9ybSBpcyBwcm9jZXNzZWQuCisvLwltYW5SZWZzLmFkZChmYWMubmV3UmVmZXJlbmNlKCIjbm90YXJpZXMiLCBzaGExLCBtYW5UcmFucywgbnVsbCwgbnVsbCkpOworCisJb2Jqcy5hZGQoZmFjLm5ld1hNTE9iamVjdChDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0CisJICAgIChmYWMubmV3TWFuaWZlc3QobWFuUmVmcywgIm1hbmlmZXN0LTEiKSksIG51bGwsIG51bGwsIG51bGwpKTsKKworCS8vIFNpZ25hdHVyZVByb3BlcnRpZXMKKwlFbGVtZW50IHNhID0gZG9jLmNyZWF0ZUVsZW1lbnROUygidXJuOmRlbW8iLCAiU2lnbmVyQWRkcmVzcyIpOworCXNhLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsICJ4bWxucyIsICJ1cm46ZGVtbyIpOworCUVsZW1lbnQgaXAgPSBkb2MuY3JlYXRlRWxlbWVudE5TKCJ1cm46ZGVtbyIsICJJUCIpOworCWlwLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiMTkyLjE2OC4yMS4xMzgiKSk7CisJc2EuYXBwZW5kQ2hpbGQoaXApOworCVNpZ25hdHVyZVByb3BlcnR5IHNwID0gZmFjLm5ld1NpZ25hdHVyZVByb3BlcnR5CisJICAgIChDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KG5ldyBET01TdHJ1Y3R1cmUoc2EpKSwgCisJICAgICIjc2lnbmF0dXJlIiwgbnVsbCk7CisJU2lnbmF0dXJlUHJvcGVydGllcyBzcHMgPSBmYWMubmV3U2lnbmF0dXJlUHJvcGVydGllcworCSAgICAoQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChzcCksICJzaWduYXR1cmUtcHJvcGVydGllcy0xIik7CisJb2Jqcy5hZGQoZmFjLm5ld1hNTE9iamVjdChDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KHNwcyksIG51bGwsIAorCSAgICBudWxsLCBudWxsKSk7CisKKwkvLyBPYmplY3QgNAorCUxpc3QgeGRzID0gbmV3IEFycmF5TGlzdCgpOworCXhkcy5hZGQoIkNOPVNlYW4gTXVsbGFuLERDPXN1bixEQz1jb20iKTsKKwl4ZHMuYWRkKGtpZmFjLm5ld1g1MDlJc3N1ZXJTZXJpYWwKKwkgICAgKCJDTj1TZWFuIE11bGxhbixEQz1zdW4sREM9Y29tIiwKKwkgICAgbmV3IEJpZ0ludGVnZXIoIjQ3Y2RiNzcyIiwgMTYpKSk7CisJeGRzLmFkZChzaWduaW5nQ2VydCk7CisJb2Jqcy5hZGQoZmFjLm5ld1hNTE9iamVjdChDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0CisJICAgIChraWZhYy5uZXdYNTA5RGF0YSh4ZHMpKSwgIm9iamVjdC00IiwgbnVsbCwgbnVsbCkpOworCisJLy8gY3JlYXRlIFhNTFNpZ25hdHVyZQorCVhNTFNpZ25hdHVyZSBzaWcgPSBmYWMubmV3WE1MU2lnbmF0dXJlKHNpLCBraSwgb2JqcywgInNpZ25hdHVyZSIsIG51bGwpOworCisJLy8gY3JlYXRlIGVudmVsb3BlIGhlYWRlcgorCUVsZW1lbnQgZW52ZWxvcGUgPSBkb2MuY3JlYXRlRWxlbWVudE5TCisJICAgICgiaHR0cDovL2V4YW1wbGUub3JnL3VzcHMiLCAiRW52ZWxvcGUiKTsKKwllbnZlbG9wZS5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iLCAieG1sbnMiLCAKKwkgICAgImh0dHA6Ly9leGFtcGxlLm9yZy91c3BzIik7CisgICAgICAgIGVudmVsb3BlLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsICJ4bWxuczpmb28iLCAKKwkgICAgImh0dHA6Ly9leGFtcGxlLm9yZy9mb28iKTsKKwlkb2MuYXBwZW5kQ2hpbGQoZW52ZWxvcGUpOworCUVsZW1lbnQgZGVhclNpciA9IGRvYy5jcmVhdGVFbGVtZW50TlMgCisJICAgICgiaHR0cDovL2V4YW1wbGUub3JnL3VzcHMiLCAiRGVhclNpciIpOworCWRlYXJTaXIuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJmb28iKSk7CisJZW52ZWxvcGUuYXBwZW5kQ2hpbGQoZGVhclNpcik7CisJRWxlbWVudCBib2R5ID0gZG9jLmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL2V4YW1wbGUub3JnL3VzcHMiLCAiQm9keSIpOworCWJvZHkuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJiYXIiKSk7CisJZW52ZWxvcGUuYXBwZW5kQ2hpbGQoYm9keSk7CisJRWxlbWVudCB5cyA9IGRvYy5jcmVhdGVFbGVtZW50TlMgCisJICAgICgiaHR0cDovL2V4YW1wbGUub3JnL3VzcHMiLCAiWW91cnNTaW5jZXJlbHkiKTsKKwllbnZlbG9wZS5hcHBlbmRDaGlsZCh5cyk7CisKKwkvLyBjcmVhdGUgZW52ZWxvcGUgZm9vdGVyCisJRWxlbWVudCBwcyA9IGRvYy5jcmVhdGVFbGVtZW50TlMKKwkgICAgKCJodHRwOi8vZXhhbXBsZS5vcmcvdXNwcyIsICJQb3N0U2NyaXB0Iik7CisJcHMuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJiYXIiKSk7CisJZW52ZWxvcGUuYXBwZW5kQ2hpbGQocHMpOworCUVsZW1lbnQgbm90YXJpZXMgPSBkb2MuY3JlYXRlRWxlbWVudE5TKG51bGwsICJOb3RhcmllcyIpOworCW5vdGFyaWVzLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsICJ4bWxucyIsICIiKTsKKwlub3Rhcmllcy5zZXRBdHRyaWJ1dGVOUyhudWxsLCAiSWQiLCAibm90YXJpZXMiKTsKKwlFbGVtZW50IG5vdGFyeTEgPSBkb2MuY3JlYXRlRWxlbWVudE5TKG51bGwsICJOb3RhcnkiKTsKKwlub3RhcnkxLnNldEF0dHJpYnV0ZU5TKG51bGwsICJuYW1lIiwgIkdyZWF0LCBBLiBULiIpOworCUVsZW1lbnQgbm90YXJ5MiA9IGRvYy5jcmVhdGVFbGVtZW50TlMobnVsbCwgIk5vdGFyeSIpOworCW5vdGFyeTIuc2V0QXR0cmlidXRlTlMobnVsbCwgIm5hbWUiLCAiSHVuLCBBLiBULiIpOworCW5vdGFyaWVzLmFwcGVuZENoaWxkKG5vdGFyeTEpOworCW5vdGFyaWVzLmFwcGVuZENoaWxkKG5vdGFyeTIpOworCWVudmVsb3BlLmFwcGVuZENoaWxkKG5vdGFyaWVzKTsKKwllbnZlbG9wZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlQ29tbWVudCgiIENvbW1lbnRhcnkgIikpOworCisJRE9NU2lnbkNvbnRleHQgZHNjID0gbmV3IERPTVNpZ25Db250ZXh0KHNpZ25pbmdLZXksIHlzKTsKKwlkc2Muc2V0SWRBdHRyaWJ1dGVOUyhub3RhcmllcywgbnVsbCwgIklkIik7CisKKwlzaWcuc2lnbihkc2MpOworCisJLy8gRE9NIEwyIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNyZWF0aW9uIG9mIERPQ1RZUEVzLCBzbyBpbnN0ZWFkCisgICAgICAgIC8vIHdlIGluc2VydCBpdCBiZWZvcmUgdGhlIGRvY3VtZW50IHVzaW5nIGEgU3RyaW5nV3JpdGVyCisvLwlTdHJpbmcgZG9jVHlwZSA9IAorLy8JICAgICI8IURPQ1RZUEUgRW52ZWxvcGUgW1xuIgorLy8gIAkgICsgIjwhRU5USVRZIGRzaWcgJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMnPlxuIgorLy8gICAgICAgICAgKyAiPCFFTlRJVFkgYzE0biAnaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUnPlxuIgorLy8gICAgICAgICAgKyAiPCFFTlRJVFkgeHBhdGggJ2h0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Jz5cbiIKKy8vICAgICAgICAgICsgIjwhRU5USVRZIHhzbHQgJ2h0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhzbHQtMTk5OTExMTYnPlxuIgorLy8gICAgICAgICAgKyAiPCFBVFRMSVNUIE5vdGFyaWVzIElkIElEICNJTVBMSUVEPlxuIgorLy8gICAgICAgICAgKyAiXT5cbiI7CisJU3RyaW5nV3JpdGVyIHN3ID0gbmV3IFN0cmluZ1dyaXRlcigpOworLy8Jc3cud3JpdGUoZG9jVHlwZSk7CisKKyAgICAgICAgZHVtcERvY3VtZW50KGRvYywgc3cpOworCisJLy8gcmVhZCBkb2N1bWVudCBiYWNrIGludG8gRE9NIHRyZWUKKwlEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKwlkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisJZGJmLnNldFZhbGlkYXRpbmcoZmFsc2UpOworCXRyeSB7CisJICAgIGRvYyA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKS5wYXJzZQorCSAgICAgICAgKG5ldyBJbnB1dFNvdXJjZShuZXcgU3RyaW5nUmVhZGVyKHN3LnRvU3RyaW5nKCkpKSk7CisJfSBjYXRjaCAoU0FYUGFyc2VFeGNlcHRpb24gc3BlKSB7CisJICAgIFN5c3RlbS5lcnIucHJpbnRsbigibGluZToiICsgc3BlLmdldExpbmVOdW1iZXIoKSk7CisJICAgIFN5c3RlbS5lcnIucHJpbnRsbigieG1sOiIgKyBzdy50b1N0cmluZygpKTsKKwl9CisJRWxlbWVudCBzaWdFbGVtZW50ID0gU2lnbmF0dXJlVmFsaWRhdG9yLmdldFNpZ25hdHVyZUVsZW1lbnQoZG9jKTsKKwlpZiAoc2lnRWxlbWVudCA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJDb3VsZG4ndCBmaW5kIHNpZ25hdHVyZSBFbGVtZW50Iik7CisJfQorCisJRE9NVmFsaWRhdGVDb250ZXh0IGR2YyA9IG5ldyBET01WYWxpZGF0ZUNvbnRleHQKKwkgICAgKG5ldyBYNTA5S2V5U2VsZWN0b3Ioa3MpLCBzaWdFbGVtZW50KTsKKwlGaWxlIGYgPSBuZXcgRmlsZSgKKwkgICAgU3lzdGVtLmdldFByb3BlcnR5KCJkaXIudGVzdC52ZWN0b3IuYmFsdGltb3JlIikgKyAKKyAgICAgICAgICAgIFN5c3RlbS5nZXRQcm9wZXJ0eSgiZmlsZS5zZXBhcmF0b3IiKSArCisJICAgICJtZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUiICsKKyAgICAgICAgICAgIFN5c3RlbS5nZXRQcm9wZXJ0eSgiZmlsZS5zZXBhcmF0b3IiKSk7CisJZHZjLnNldEJhc2VVUkkoZi50b1VSSSgpLnRvU3RyaW5nKCkpOworCisJLy8gcmVnaXN0ZXIgTm90YXJpZXMgSUQKKy8vCUVsZW1lbnQgbm90YXJpZXNFbGVtID0gCisvLwkgICAgKEVsZW1lbnQpIGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiTm90YXJpZXMiKS5pdGVtKDApOworLy8JZHZjLnNldElkQXR0cmlidXRlTlMobm90YXJpZXNFbGVtLCAiIiwgIklkIik7CisvLwlub3Rhcmllc0VsZW0uc2V0SWRBdHRyaWJ1dGVOUygiIiwgIklkIiwgdHJ1ZSk7CisJICAgIAorCVhNTFNpZ25hdHVyZSBzaWcyID0gZmFjLnVubWFyc2hhbFhNTFNpZ25hdHVyZShkdmMpOworCisJYXNzZXJ0VHJ1ZShzaWcuZXF1YWxzKHNpZzIpKTsKKwlhc3NlcnRUcnVlKHNpZzIudmFsaWRhdGUoZHZjKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGR1bXBEb2N1bWVudChEb2N1bWVudCBkb2MsIFdyaXRlciB3KSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlUcmFuc2Zvcm1lckZhY3RvcnkgdGYgPSBUcmFuc2Zvcm1lckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKwlUcmFuc2Zvcm1lciB0cmFucyA9IHRmLm5ld1RyYW5zZm9ybWVyKCk7CisvLwl0cmFucy5zZXRPdXRwdXRQcm9wZXJ0eShPdXRwdXRLZXlzLklOREVOVCwgInllcyIpOworCXRyYW5zLnRyYW5zZm9ybShuZXcgRE9NU291cmNlKGRvYyksIG5ldyBTdHJlYW1SZXN1bHQodykpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB0ZXN0X2NyZWF0ZV9zaWduYXR1cmVfZXh0ZXJuYWwKKwkoU2lnbmF0dXJlTWV0aG9kIHNtLCBLZXlJbmZvIGtpLCBLZXkgc2lnbmluZ0tleSwgS2V5U2VsZWN0b3Iga3MsCisJYm9vbGVhbiBiNjQpIHRocm93cyBFeGNlcHRpb24geworCisJLy8gY3JlYXRlIHJlZmVyZW5jZQorCVJlZmVyZW5jZSByZWY7CisJaWYgKGI2NCkgeworCSAgICByZWYgPSBmYWMubmV3UmVmZXJlbmNlCisJCSgiaHR0cDovL3d3dy53My5vcmcvU2lnbmF0dXJlLzIwMDIvMDQveG1sLXN0eWxlc2hlZXQuYjY0IiwgCisJCXNoYTEsIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QKKyAgICAgICAgCShmYWMubmV3VHJhbnNmb3JtKFRyYW5zZm9ybS5CQVNFNjQsIAorCQkgKFRyYW5zZm9ybVBhcmFtZXRlclNwZWMpIG51bGwpKSwgbnVsbCwgbnVsbCk7CisJfSBlbHNlIHsKKwkgICAgcmVmID0gZmFjLm5ld1JlZmVyZW5jZQorCQkoImh0dHA6Ly93d3cudzMub3JnL1NpZ25hdHVyZS8yMDAyLzA0L3htbC1zdHlsZXNoZWV0LmI2NCIsc2hhMSk7CisJfQorCisJLy8gY3JlYXRlIFNpZ25lZEluZm8KKwlTaWduZWRJbmZvIHNpID0gZmFjLm5ld1NpZ25lZEluZm8od2l0aG91dENvbW1lbnRzLCBzbSwgCisJICAgIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QocmVmKSk7CisKKwlEb2N1bWVudCBkb2MgPSBkYi5uZXdEb2N1bWVudCgpOworCisJLy8gY3JlYXRlIFhNTFNpZ25hdHVyZQorCVhNTFNpZ25hdHVyZSBzaWcgPSBmYWMubmV3WE1MU2lnbmF0dXJlKHNpLCBraSk7CisKKwlET01TaWduQ29udGV4dCBkc2MgPSBuZXcgRE9NU2lnbkNvbnRleHQoc2lnbmluZ0tleSwgZG9jKTsKKworCXNpZy5zaWduKGRzYyk7CisKKy8qKgorCVN5c3RlbS5vdXQucHJpbnRsbigiZG9jIGlzOiIpOworCVN0cmluZ1dyaXRlciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKKyAgICAgICAgZHVtcERvY3VtZW50KGRvYywgc3cpOworCVN5c3RlbS5vdXQucHJpbnRsbihzdy50b1N0cmluZygpKTsKKyoqLworCisJRE9NVmFsaWRhdGVDb250ZXh0IGR2YyA9IG5ldyBET01WYWxpZGF0ZUNvbnRleHQKKwkgICAgKGtzLCBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCkpOworCVN0cmluZyBmcyA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiZmlsZS5zZXBhcmF0b3IiKTsKKwlGaWxlIGYgPSBuZXcgRmlsZSgKKwkgICAgU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIikgKyBmcyArICJkYXRhIiArIGZzICsgImllIiArIGZzICsKKwkgICAgImJhbHRpbW9yZSIgKyBmcyArICJtZXJsaW4tZXhhbXBsZXMiICsgZnMgKworCSAgICAibWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlIiArIGZzKTsKKwlkdmMuc2V0QmFzZVVSSShmLnRvVVJJKCkudG9TdHJpbmcoKSk7IAorCSAgICAKKwlYTUxTaWduYXR1cmUgc2lnMiA9IGZhYy51bm1hcnNoYWxYTUxTaWduYXR1cmUoZHZjKTsKKworCWFzc2VydFRydWUoc2lnLmVxdWFscyhzaWcyKSk7CisJYXNzZXJ0VHJ1ZShzaWcyLnZhbGlkYXRlKGR2YykpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB0ZXN0X2NyZWF0ZV9zaWduYXR1cmVfZW52ZWxvcGluZworCShTaWduYXR1cmVNZXRob2Qgc20sIEtleUluZm8ga2ksIEtleSBzaWduaW5nS2V5LCBLZXlTZWxlY3RvciBrcywgCisJYm9vbGVhbiBiNjQpIHRocm93cyBFeGNlcHRpb24geworCisJLy8gY3JlYXRlIHJlZmVyZW5jZQorCVJlZmVyZW5jZSByZWY7CisJaWYgKGI2NCkgeworCSAgICByZWYgPSBmYWMubmV3UmVmZXJlbmNlKCIjb2JqZWN0Iiwgc2hhMSwgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdAorICAgICAgICAJKGZhYy5uZXdUcmFuc2Zvcm0oVHJhbnNmb3JtLkJBU0U2NCwgCisJCSAoVHJhbnNmb3JtUGFyYW1ldGVyU3BlYykgbnVsbCkpLCBudWxsLCBudWxsKTsKKwl9IGVsc2UgeworCSAgICByZWYgPSBmYWMubmV3UmVmZXJlbmNlKCIjb2JqZWN0Iiwgc2hhMSk7CisJfQorCisJLy8gY3JlYXRlIFNpZ25lZEluZm8KKwlTaWduZWRJbmZvIHNpID0gZmFjLm5ld1NpZ25lZEluZm8od2l0aG91dENvbW1lbnRzLCBzbSwgCisJICAgIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QocmVmKSk7CisKKwlEb2N1bWVudCBkb2MgPSBkYi5uZXdEb2N1bWVudCgpOworCS8vIGNyZWF0ZSBPYmplY3RzCisJWE1MT2JqZWN0IG9iaiA9IGZhYy5uZXdYTUxPYmplY3QoQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdAorCSAgICAobmV3IERPTVN0cnVjdHVyZShkb2MuY3JlYXRlVGV4dE5vZGUoInNvbWUgdGV4dCIpKSksIAorCSAgICAib2JqZWN0IiwgbnVsbCwgbnVsbCk7CisKKwkvLyBjcmVhdGUgWE1MU2lnbmF0dXJlCisJWE1MU2lnbmF0dXJlIHNpZyA9IGZhYy5uZXdYTUxTaWduYXR1cmUKKwkgICAgKHNpLCBraSwgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChvYmopLCBudWxsLCBudWxsKTsKKworCURPTVNpZ25Db250ZXh0IGRzYyA9IG5ldyBET01TaWduQ29udGV4dChzaWduaW5nS2V5LCBkb2MpOworCisJc2lnLnNpZ24oZHNjKTsKKworCURPTVZhbGlkYXRlQ29udGV4dCBkdmMgPSBuZXcgRE9NVmFsaWRhdGVDb250ZXh0CisJICAgIChrcywgZG9jLmdldERvY3VtZW50RWxlbWVudCgpKTsKKwlYTUxTaWduYXR1cmUgc2lnMiA9IGZhYy51bm1hcnNoYWxYTUxTaWduYXR1cmUoZHZjKTsKKworCWFzc2VydFRydWUoc2lnLmVxdWFscyhzaWcyKSk7CisJYXNzZXJ0VHJ1ZShzaWcyLnZhbGlkYXRlKGR2YykpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworCUNyZWF0ZUJhbHRpbW9yZTIzVGVzdCB0ZXN0ID0gbmV3IENyZWF0ZUJhbHRpbW9yZTIzVGVzdCgibWFpbiIpOworCXRlc3Quc2V0VXAoKTsKKy8vCXRlc3QudGVzdF9jcmVhdGVfc2lnbmF0dXJlKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9DcmVhdGVJbnRlcm9wRXhjQzE0TlRlc3QuamF2YSBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvQ3JlYXRlSW50ZXJvcEV4Y0MxNE5UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmMyYWI2ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvQ3JlYXRlSW50ZXJvcEV4Y0MxNE5UZXN0LmphdmEKQEAgLTAsMCArMSwxNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNi0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by50ZXN0LmRzaWc7CisKK2ltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgamF2YS5zZWN1cml0eS4qOworaW1wb3J0IGphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRvbS5ET01TdHJ1Y3R1cmU7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLmRvbS4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLnNwZWMuKjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy4qOworaW1wb3J0IG9yZy53M2MuZG9tLio7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuKjsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8udGVzdC5LZXlTZWxlY3RvcnM7CisKKy8qKgorICogVGVzdCB0aGF0IHJlY3JlYXRlcyBpbnRlcm9wIGV4YyBDMTROIHRlc3QgdmVjdG9ycworICogYnV0IHdpdGggZGlmZmVyZW50IGtleXMuCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICovCitwdWJsaWMgY2xhc3MgQ3JlYXRlSW50ZXJvcEV4Y0MxNE5UZXN0IGV4dGVuZHMgVGVzdENhc2UgeworCisgICAgcHJpdmF0ZSBYTUxTaWduYXR1cmVGYWN0b3J5IGZhYzsKKyAgICBwcml2YXRlIEtleUluZm9GYWN0b3J5IGtpZmFjOworICAgIHByaXZhdGUgRG9jdW1lbnRCdWlsZGVyIGRiOworICAgIHByaXZhdGUgS2V5U3RvcmUga3M7CisgICAgcHJpdmF0ZSBLZXkgc2lnbmluZ0tleTsKKyAgICBwcml2YXRlIFB1YmxpY0tleSB2YWxpZGF0aW5nS2V5OworCisgICAgc3RhdGljIHsKKyAgICAgICAgU2VjdXJpdHkuaW5zZXJ0UHJvdmlkZXJBdAorICAgICAgICAgICAgKG5ldyBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbS5YTUxEU2lnUkkoKSwgMSk7CisgICAgfQorCisgICAgcHVibGljIENyZWF0ZUludGVyb3BFeGNDMTROVGVzdChTdHJpbmcgbmFtZSkgeworICAgICAgICBzdXBlcihuYW1lKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmYWMgPSBYTUxTaWduYXR1cmVGYWN0b3J5LmdldEluc3RhbmNlCisgICAgICAgICAgICAoIkRPTSIsIG5ldyBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbS5YTUxEU2lnUkkoKSk7CisgICAgICAgIGtpZmFjID0gZmFjLmdldEtleUluZm9GYWN0b3J5KCk7CisgICAgICAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworICAgICAgICBkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisgICAgICAgIGRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOworCisgICAgICAgIC8vIGdldCBrZXkgJiBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZSBmcm9tIGtleXN0b3JlCisgICAgICAgIFN0cmluZyBiYXNlID0gU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIikgPT0gbnVsbCA/ICIuLyI6IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpOworICAgIAkKKwlTdHJpbmcgZnMgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImZpbGUuc2VwYXJhdG9yIik7CisgICAgICAgIEZpbGVJbnB1dFN0cmVhbSBmaXMgPSBuZXcgRmlsZUlucHV0U3RyZWFtCisgICAgICAgICAgICAoYmFzZSArIGZzICsgImRhdGEiICsgZnMgKyAidGVzdC5qa3MiKTsKKyAgICAgICAga3MgPSBLZXlTdG9yZS5nZXRJbnN0YW5jZSgiSktTIik7CisgICAgICAgIGtzLmxvYWQoZmlzLCAiY2hhbmdlaXQiLnRvQ2hhckFycmF5KCkpOworICAgICAgICBDZXJ0aWZpY2F0ZSBzaWduaW5nQ2VydCA9IGtzLmdldENlcnRpZmljYXRlKCJtdWxsYW4iKTsKKyAgICAgICAgc2lnbmluZ0tleSA9IGtzLmdldEtleSgibXVsbGFuIiwgImNoYW5nZWl0Ii50b0NoYXJBcnJheSgpKTsKKyAgICAgICAgdmFsaWRhdGluZ0tleSA9IHNpZ25pbmdDZXJ0LmdldFB1YmxpY0tleSgpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RfY3JlYXRlX1kxKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJTGlzdCByZWZzID0gbmV3IEFycmF5TGlzdCg0KTsKKworCS8vIGNyZWF0ZSByZWZlcmVuY2UgMQorCXJlZnMuYWRkKGZhYy5uZXdSZWZlcmVuY2UKKwkgICAgKCIjeHBvaW50ZXIoaWQoJ3RvLWJlLXNpZ25lZCcpKSIsIAorCSAgICAgZmFjLm5ld0RpZ2VzdE1ldGhvZChEaWdlc3RNZXRob2QuU0hBMSwgbnVsbCksCisJICAgICBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0CisJCShmYWMubmV3VHJhbnNmb3JtKENhbm9uaWNhbGl6YXRpb25NZXRob2QuRVhDTFVTSVZFLCAKKwkJIChUcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjKSBudWxsKSksCisJICAgICBudWxsLCBudWxsKSk7CisKKwkvLyBjcmVhdGUgcmVmZXJlbmNlIDIKKwlMaXN0IHByZWZpeExpc3QgPSBuZXcgQXJyYXlMaXN0KDIpOworCXByZWZpeExpc3QuYWRkKCJiYXIiKTsKKwlwcmVmaXhMaXN0LmFkZCgiI2RlZmF1bHQiKTsKKwlFeGNDMTROUGFyYW1ldGVyU3BlYyBwYXJhbXMgPSBuZXcgRXhjQzE0TlBhcmFtZXRlclNwZWMocHJlZml4TGlzdCk7CisJcmVmcy5hZGQoZmFjLm5ld1JlZmVyZW5jZQorCSAgICAoIiN4cG9pbnRlcihpZCgndG8tYmUtc2lnbmVkJykpIiwgCisJICAgICBmYWMubmV3RGlnZXN0TWV0aG9kKERpZ2VzdE1ldGhvZC5TSEExLCBudWxsKSwKKwkgICAgIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QKKwkJKGZhYy5uZXdUcmFuc2Zvcm0oQ2Fub25pY2FsaXphdGlvbk1ldGhvZC5FWENMVVNJVkUsIHBhcmFtcykpLAorCSAgICAgbnVsbCwgbnVsbCkpOworCisJLy8gY3JlYXRlIHJlZmVyZW5jZSAzCisJcmVmcy5hZGQoZmFjLm5ld1JlZmVyZW5jZQorCSAgICAoIiN4cG9pbnRlcihpZCgndG8tYmUtc2lnbmVkJykpIiwgCisJICAgICBmYWMubmV3RGlnZXN0TWV0aG9kKERpZ2VzdE1ldGhvZC5TSEExLCBudWxsKSwKKwkgICAgIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoZmFjLm5ld1RyYW5zZm9ybQorCQkoQ2Fub25pY2FsaXphdGlvbk1ldGhvZC5FWENMVVNJVkVfV0lUSF9DT01NRU5UUywgCisJCSAoVHJhbnNmb3JtUGFyYW1ldGVyU3BlYykgbnVsbCkpLAorCSAgICAgbnVsbCwgbnVsbCkpOworCisJLy8gY3JlYXRlIHJlZmVyZW5jZSA0CisJcHJlZml4TGlzdCA9IG5ldyBBcnJheUxpc3QoMik7CisJcHJlZml4TGlzdC5hZGQoImJhciIpOworCXByZWZpeExpc3QuYWRkKCIjZGVmYXVsdCIpOworCXBhcmFtcyA9IG5ldyBFeGNDMTROUGFyYW1ldGVyU3BlYyhwcmVmaXhMaXN0KTsKKwlyZWZzLmFkZChmYWMubmV3UmVmZXJlbmNlCisJICAgICgiI3hwb2ludGVyKGlkKCd0by1iZS1zaWduZWQnKSkiLCAKKwkgICAgIGZhYy5uZXdEaWdlc3RNZXRob2QoRGlnZXN0TWV0aG9kLlNIQTEsIG51bGwpLAorCSAgICAgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChmYWMubmV3VHJhbnNmb3JtCisJCShDYW5vbmljYWxpemF0aW9uTWV0aG9kLkVYQ0xVU0lWRV9XSVRIX0NPTU1FTlRTLCAKKwkJIChUcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjKSBwYXJhbXMpKSwKKwkgICAgIG51bGwsIG51bGwpKTsKKworICAgICAgICAvLyBjcmVhdGUgU2lnbmVkSW5mbworICAgICAgICBTaWduZWRJbmZvIHNpID0gZmFjLm5ld1NpZ25lZEluZm8oCisJICAgIGZhYy5uZXdDYW5vbmljYWxpemF0aW9uTWV0aG9kCisJICAgICAgICAoQ2Fub25pY2FsaXphdGlvbk1ldGhvZC5FWENMVVNJVkUsIAorCQkgKEMxNE5NZXRob2RQYXJhbWV0ZXJTcGVjKSBudWxsKSwKKwkgICAgZmFjLm5ld1NpZ25hdHVyZU1ldGhvZChTaWduYXR1cmVNZXRob2QuRFNBX1NIQTEsIG51bGwpLCByZWZzKTsKKworCS8vIGNyZWF0ZSBLZXlJbmZvCisJTGlzdCBraXRzID0gbmV3IEFycmF5TGlzdCgyKTsKKwlraXRzLmFkZChraWZhYy5uZXdLZXlWYWx1ZSh2YWxpZGF0aW5nS2V5KSk7CisJS2V5SW5mbyBraSA9IGtpZmFjLm5ld0tleUluZm8oa2l0cyk7CisKKyAgICAgICAgLy8gY3JlYXRlIE9iamVjdHMKKyAgICAgICAgRG9jdW1lbnQgZG9jID0gZGIubmV3RG9jdW1lbnQoKTsKKwlFbGVtZW50IGJheiA9IGRvYy5jcmVhdGVFbGVtZW50TlMoInVybjpiYXIiLCAiYmFyOkJheiIpOworCUNvbW1lbnQgY29tID0gZG9jLmNyZWF0ZUNvbW1lbnQoIiBjb21tZW50ICIpOworCWJhei5hcHBlbmRDaGlsZChjb20pOworCVhNTE9iamVjdCBvYmogPSBmYWMubmV3WE1MT2JqZWN0KENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QKKwkgICAgKG5ldyBET01TdHJ1Y3R1cmUoYmF6KSksICJ0by1iZS1zaWduZWQiLCBudWxsLCBudWxsKTsKKworCS8vIGNyZWF0ZSBYTUxTaWduYXR1cmUKKwlYTUxTaWduYXR1cmUgc2lnID0gZmFjLm5ld1hNTFNpZ25hdHVyZQorCSAgICAoc2ksIGtpLCBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KG9iaiksIG51bGwsIG51bGwpOworCisgICAgICAgIEVsZW1lbnQgZm9vID0gZG9jLmNyZWF0ZUVsZW1lbnROUygidXJuOmZvbyIsICJGb28iKTsKKyAgICAgICAgZm9vLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsICJ4bWxucyIsICJ1cm46Zm9vIik7CisgICAgICAgIGZvby5zZXRBdHRyaWJ1dGVOUworCSAgICAoImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIiwgInhtbG5zOmJhciIsICJ1cm46YmFyIik7CisJZG9jLmFwcGVuZENoaWxkKGZvbyk7CisKKyAgICAgICAgRE9NU2lnbkNvbnRleHQgZHNjID0gbmV3IERPTVNpZ25Db250ZXh0KHNpZ25pbmdLZXksIGZvbyk7CisJZHNjLnB1dE5hbWVzcGFjZVByZWZpeChYTUxTaWduYXR1cmUuWE1MTlMsICJkc2lnIik7CisKKyAgICAgICAgc2lnLnNpZ24oZHNjKTsKKworLy8JZHVtcERvY3VtZW50KGRvYywgbmV3IEZpbGVXcml0ZXIoIi90bXAvZm9vLnhtbCIpKTsKKworICAgICAgICBET01WYWxpZGF0ZUNvbnRleHQgZHZjID0gbmV3IERPTVZhbGlkYXRlQ29udGV4dAorICAgICAgICAgICAgKG5ldyBLZXlTZWxlY3RvcnMuS2V5VmFsdWVLZXlTZWxlY3RvcigpLCBmb28uZ2V0TGFzdENoaWxkKCkpOworICAgICAgICBYTUxTaWduYXR1cmUgc2lnMiA9IGZhYy51bm1hcnNoYWxYTUxTaWduYXR1cmUoZHZjKTsKKworICAgICAgICBhc3NlcnRUcnVlKHNpZy5lcXVhbHMoc2lnMikpOworCisgICAgICAgIGFzc2VydFRydWUoc2lnMi52YWxpZGF0ZShkdmMpKTsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvQ3JlYXRlSW50ZXJvcFhGaWx0ZXIyVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9DcmVhdGVJbnRlcm9wWEZpbHRlcjJUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWMzZjg0MwotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvQ3JlYXRlSW50ZXJvcFhGaWx0ZXIyVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTcxIEBACisvKgorICogQ29weXJpZ2h0IDIwMDYtMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8udGVzdC5kc2lnOworCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEuc2VjdXJpdHkuKjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGU7CitpbXBvcnQgamF2YS51dGlsLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLmRvbS4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLnNwZWMuKjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy4qOworaW1wb3J0IG9yZy53M2MuZG9tLio7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuKjsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8udGVzdC5LZXlTZWxlY3RvcnM7CisKKy8qKgorICogVGVzdCB0aGF0IHJlY3JlYXRlcyBtZXJsaW4teHBhdGgtZmlsdGVyMi10aHJlZSB0ZXN0IHZlY3RvcnMKKyAqIGJ1dCB3aXRoIGRpZmZlcmVudCBrZXlzIGFuZCBYLjUwOSBkYXRhLgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqLworcHVibGljIGNsYXNzIENyZWF0ZUludGVyb3BYRmlsdGVyMlRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgICBwcml2YXRlIFhNTFNpZ25hdHVyZUZhY3RvcnkgZmFjOworICAgIHByaXZhdGUgS2V5SW5mb0ZhY3Rvcnkga2lmYWM7CisgICAgcHJpdmF0ZSBEb2N1bWVudEJ1aWxkZXIgZGI7CisgICAgcHJpdmF0ZSBLZXlTdG9yZSBrczsKKyAgICBwcml2YXRlIEtleSBzaWduaW5nS2V5OworICAgIHByaXZhdGUgUHVibGljS2V5IHZhbGlkYXRpbmdLZXk7CisgICAgcHJpdmF0ZSBDZXJ0aWZpY2F0ZSBzaWduaW5nQ2VydDsKKworICAgIHN0YXRpYyB7CisgICAgICAgIFNlY3VyaXR5Lmluc2VydFByb3ZpZGVyQXQKKyAgICAgICAgICAgIChuZXcgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJKCksIDEpOworICAgIH0KKworICAgIHB1YmxpYyBDcmVhdGVJbnRlcm9wWEZpbHRlcjJUZXN0KFN0cmluZyBuYW1lKSB7CisgICAgICAgIHN1cGVyKG5hbWUpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZhYyA9IFhNTFNpZ25hdHVyZUZhY3RvcnkuZ2V0SW5zdGFuY2UKKyAgICAgICAgICAgICgiRE9NIiwgbmV3IG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tLlhNTERTaWdSSSgpKTsKKyAgICAgICAga2lmYWMgPSBmYWMuZ2V0S2V5SW5mb0ZhY3RvcnkoKTsKKyAgICAgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisgICAgICAgIGRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKyAgICAgICAgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisKKyAgICAgICAgLy8gZ2V0IGtleSAmIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlIGZyb20ga2V5c3RvcmUKKwlTdHJpbmcgZnMgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImZpbGUuc2VwYXJhdG9yIik7CisJU3RyaW5nIGJhc2UgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImJhc2VkaXIiKSA9PSBudWxsID8gIi4vIjogU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIik7CisJCisgICAgICAgIEZpbGVJbnB1dFN0cmVhbSBmaXMgPSBuZXcgRmlsZUlucHV0U3RyZWFtCisgICAgICAgICAgICAoYmFzZSArIGZzICsgImRhdGEiICsgZnMgKyAidGVzdC5qa3MiKTsKKyAgICAgICAga3MgPSBLZXlTdG9yZS5nZXRJbnN0YW5jZSgiSktTIik7CisgICAgICAgIGtzLmxvYWQoZmlzLCAiY2hhbmdlaXQiLnRvQ2hhckFycmF5KCkpOworICAgICAgICBzaWduaW5nS2V5ID0ga3MuZ2V0S2V5KCJtdWxsYW4iLCAiY2hhbmdlaXQiLnRvQ2hhckFycmF5KCkpOworICAgICAgICBzaWduaW5nQ2VydCA9IGtzLmdldENlcnRpZmljYXRlKCJtdWxsYW4iKTsKKyAgICAgICAgdmFsaWRhdGluZ0tleSA9IHNpZ25pbmdDZXJ0LmdldFB1YmxpY0tleSgpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RfY3JlYXRlX3NpZ25fc3BlYygpIHRocm93cyBFeGNlcHRpb24geworCUxpc3QgcmVmcyA9IG5ldyBBcnJheUxpc3QoMik7CisKKwkvLyBjcmVhdGUgcmVmZXJlbmNlIDEKKwlMaXN0IHR5cGVzID0gbmV3IEFycmF5TGlzdCgzKTsKKwl0eXBlcy5hZGQobmV3IFhQYXRoVHlwZSgiIC8vVG9CZVNpZ25lZCAiLCBYUGF0aFR5cGUuRmlsdGVyLklOVEVSU0VDVCkpOworCXR5cGVzLmFkZChuZXcgWFBhdGhUeXBlKCIgLy9Ob3RUb0JlU2lnbmVkICIsIFhQYXRoVHlwZS5GaWx0ZXIuU1VCVFJBQ1QpKTsKKwl0eXBlcy5hZGQobmV3IFhQYXRoVHlwZSgiIC8vUmVhbGx5VG9CZVNpZ25lZCAiLCBYUGF0aFR5cGUuRmlsdGVyLlVOSU9OKSk7CisJWFBhdGhGaWx0ZXIyUGFyYW1ldGVyU3BlYyB4cDEgPSBuZXcgWFBhdGhGaWx0ZXIyUGFyYW1ldGVyU3BlYyh0eXBlcyk7CisJcmVmcy5hZGQoZmFjLm5ld1JlZmVyZW5jZQorCSAgICAoIiIsIGZhYy5uZXdEaWdlc3RNZXRob2QoRGlnZXN0TWV0aG9kLlNIQTEsIG51bGwpLAorCSAgICAgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChmYWMubmV3VHJhbnNmb3JtKFRyYW5zZm9ybS5YUEFUSDIsIHhwMSkpLAorCSAgICAgbnVsbCwgbnVsbCkpOworCisJLy8gY3JlYXRlIHJlZmVyZW5jZSAyCisJTGlzdCB0cmFuczIgPSBuZXcgQXJyYXlMaXN0KDIpOworCXRyYW5zMi5hZGQoZmFjLm5ld1RyYW5zZm9ybShUcmFuc2Zvcm0uRU5WRUxPUEVELCAKKwkgICAgKFRyYW5zZm9ybVBhcmFtZXRlclNwZWMpIG51bGwpKTsKKwlYUGF0aEZpbHRlcjJQYXJhbWV0ZXJTcGVjIHhwMiA9IG5ldyBYUGF0aEZpbHRlcjJQYXJhbWV0ZXJTcGVjCisJICAgIChDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0CisJCShuZXcgWFBhdGhUeXBlKCIgLyAiLCBYUGF0aFR5cGUuRmlsdGVyLlVOSU9OKSkpOworCXRyYW5zMi5hZGQoZmFjLm5ld1RyYW5zZm9ybShUcmFuc2Zvcm0uWFBBVEgyLCB4cDIpKTsKKwlyZWZzLmFkZChmYWMubmV3UmVmZXJlbmNlKCIjc2lnbmF0dXJlLXZhbHVlIiwgCisJICAgIGZhYy5uZXdEaWdlc3RNZXRob2QoRGlnZXN0TWV0aG9kLlNIQTEsIG51bGwpLCB0cmFuczIsIG51bGwsIG51bGwpKTsKKwkJCisgICAgICAgIC8vIGNyZWF0ZSBTaWduZWRJbmZvCisgICAgICAgIFNpZ25lZEluZm8gc2kgPSBmYWMubmV3U2lnbmVkSW5mbygKKwkgICAgZmFjLm5ld0Nhbm9uaWNhbGl6YXRpb25NZXRob2QKKwkgICAgICAgIChDYW5vbmljYWxpemF0aW9uTWV0aG9kLklOQ0xVU0lWRSwgCisJCSAoQzE0Tk1ldGhvZFBhcmFtZXRlclNwZWMpIG51bGwpLAorCSAgICBmYWMubmV3U2lnbmF0dXJlTWV0aG9kKFNpZ25hdHVyZU1ldGhvZC5EU0FfU0hBMSwgbnVsbCksIHJlZnMpOworCisJLy8gY3JlYXRlIEtleUluZm8KKwlMaXN0IGtpdHMgPSBuZXcgQXJyYXlMaXN0KDIpOworCWtpdHMuYWRkKGtpZmFjLm5ld0tleVZhbHVlKHZhbGlkYXRpbmdLZXkpKTsKKwlMaXN0IHhkcyA9IG5ldyBBcnJheUxpc3QoMik7CisJeGRzLmFkZCgiQ049U2VhbiBNdWxsYW4sIERDPXN1biwgREM9Y29tIik7CisJeGRzLmFkZChzaWduaW5nQ2VydCk7CisJa2l0cy5hZGQoa2lmYWMubmV3WDUwOURhdGEoeGRzKSk7CisJS2V5SW5mbyBraSA9IGtpZmFjLm5ld0tleUluZm8oa2l0cyk7CisKKwkvLyBjcmVhdGUgWE1MU2lnbmF0dXJlCisJWE1MU2lnbmF0dXJlIHNpZyA9IGZhYy5uZXdYTUxTaWduYXR1cmUKKwkgICAgKHNpLCBraSwgbnVsbCwgbnVsbCwgInNpZ25hdHVyZS12YWx1ZSIpOworCisgICAgICAgIERvY3VtZW50IGRvYyA9IGRiLm5ld0RvY3VtZW50KCk7CisgICAgICAgIEVsZW1lbnQgdGJzMSA9IGRvYy5jcmVhdGVFbGVtZW50TlMobnVsbCwgIlRvQmVTaWduZWQiKTsKKwlDb21tZW50IHRiczFDb20gPSBkb2MuY3JlYXRlQ29tbWVudCgiIGNvbW1lbnQgIik7CisJRWxlbWVudCB0YnMxRGF0YSA9IGRvYy5jcmVhdGVFbGVtZW50TlMobnVsbCwgIkRhdGEiKTsKKwlFbGVtZW50IHRiczFudGJzID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhudWxsLCAiTm90VG9CZVNpZ25lZCIpOworCUVsZW1lbnQgdGJzMXJ0YnMgPSBkb2MuY3JlYXRlRWxlbWVudE5TKG51bGwsICJSZWFsbHlUb0JlU2lnbmVkIik7CisJQ29tbWVudCB0YnMxcnRic0NvbSA9IGRvYy5jcmVhdGVDb21tZW50KCIgY29tbWVudCAiKTsKKwlFbGVtZW50IHRiczFydGJzRGF0YSA9IGRvYy5jcmVhdGVFbGVtZW50TlMobnVsbCwgIkRhdGEiKTsKKwl0YnMxcnRicy5hcHBlbmRDaGlsZCh0YnMxcnRic0NvbSk7CisJdGJzMXJ0YnMuYXBwZW5kQ2hpbGQodGJzMXJ0YnNEYXRhKTsKKwl0YnMxbnRicy5hcHBlbmRDaGlsZCh0YnMxcnRicyk7CisJdGJzMS5hcHBlbmRDaGlsZCh0YnMxQ29tKTsKKwl0YnMxLmFwcGVuZENoaWxkKHRiczFEYXRhKTsKKwl0YnMxLmFwcGVuZENoaWxkKHRiczFudGJzKTsKKworICAgICAgICBFbGVtZW50IHRiczIgPSBkb2MuY3JlYXRlRWxlbWVudE5TKG51bGwsICJUb0JlU2lnbmVkIik7CisJRWxlbWVudCB0YnMyRGF0YSA9IGRvYy5jcmVhdGVFbGVtZW50TlMobnVsbCwgIkRhdGEiKTsKKwlFbGVtZW50IHRiczJudGJzID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhudWxsLCAiTm90VG9CZVNpZ25lZCIpOworCUVsZW1lbnQgdGJzMm50YnNEYXRhID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhudWxsLCAiRGF0YSIpOworCXRiczJudGJzLmFwcGVuZENoaWxkKHRiczJudGJzRGF0YSk7CisJdGJzMi5hcHBlbmRDaGlsZCh0YnMyRGF0YSk7CisJdGJzMi5hcHBlbmRDaGlsZCh0YnMybnRicyk7CisKKwlFbGVtZW50IGRvY3VtZW50ID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhudWxsLCAiRG9jdW1lbnQiKTsKKyAgICAgICAgZG9jdW1lbnQuYXBwZW5kQ2hpbGQodGJzMSk7CisgICAgICAgIGRvY3VtZW50LmFwcGVuZENoaWxkKHRiczIpOworCWRvYy5hcHBlbmRDaGlsZChkb2N1bWVudCk7CisKKyAgICAgICAgRE9NU2lnbkNvbnRleHQgZHNjID0gbmV3IERPTVNpZ25Db250ZXh0KHNpZ25pbmdLZXksIGRvY3VtZW50KTsKKworICAgICAgICBzaWcuc2lnbihkc2MpOworCisvLwlkdW1wRG9jdW1lbnQoZG9jLCBuZXcgRmlsZVdyaXRlcigiL3RtcC9mb28ueG1sIikpOworCisgICAgICAgIERPTVZhbGlkYXRlQ29udGV4dCBkdmMgPSBuZXcgRE9NVmFsaWRhdGVDb250ZXh0CisgICAgICAgICAgICAobmV3IEtleVNlbGVjdG9ycy5LZXlWYWx1ZUtleVNlbGVjdG9yKCksIGRvY3VtZW50LmdldExhc3RDaGlsZCgpKTsKKyAgICAgICAgWE1MU2lnbmF0dXJlIHNpZzIgPSBmYWMudW5tYXJzaGFsWE1MU2lnbmF0dXJlKGR2Yyk7CisKKyAgICAgICAgYXNzZXJ0VHJ1ZShzaWcuZXF1YWxzKHNpZzIpKTsKKworICAgICAgICBhc3NlcnRUcnVlKHNpZzIudmFsaWRhdGUoZHZjKSk7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0NyZWF0ZUludGVyb3BYTUxEU2lnMTFUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0NyZWF0ZUludGVyb3BYTUxEU2lnMTFUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVlZWE1OQotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvQ3JlYXRlSW50ZXJvcFhNTERTaWcxMVRlc3QuamF2YQpAQCAtMCwwICsxLDI1NCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDEwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by50ZXN0LmRzaWc7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5TdHJpbmdXcml0ZXI7CitpbXBvcnQgamF2YS5pby5Xcml0ZXI7CitpbXBvcnQgamF2YS5zZWN1cml0eS4qOworaW1wb3J0IGphdmEuc2VjdXJpdHkuc3BlYy5FQ0dlblBhcmFtZXRlclNwZWM7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uS2V5U2VsZWN0b3I7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kb20uKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuZG9tLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLmtleWluZm8uKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuc3BlYy4qOworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uKjsKK2ltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLmRvbS4qOworaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uc3RyZWFtLio7CitpbXBvcnQgb3JnLnczYy5kb20uKjsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay4qOworCitpbXBvcnQgamF2YXgueG1sLmNyeXB0by50ZXN0LktleVNlbGVjdG9yczsKKworLyoqCisgKiBUaGlzIGlzIGEgdGVzdGNhc2UgdG8gZ2VuZXJhdGUgYWxsIHRoZSBXM0MgeG1sZHNpZyBYTUxEU2lnMTEgdGVzdGNhc2VzLgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqLworcHVibGljIGNsYXNzIENyZWF0ZUludGVyb3BYTUxEU2lnMTFUZXN0IGV4dGVuZHMgVGVzdENhc2UgeworCisgICAgcHJpdmF0ZSBGaWxlIGRpcjsKKyAgICBwcml2YXRlIEtleVNlbGVjdG9yIGt2a3MsIHNrczsKKyAgICBwcml2YXRlIENhbm9uaWNhbGl6YXRpb25NZXRob2Qgd2l0aENvbW1lbnRzLCB3aXRob3V0Q29tbWVudHM7CisgICAgcHJpdmF0ZSBEaWdlc3RNZXRob2Qgc2hhMSwgc2hhMjU2LCBzaGEzODQsIHNoYTUxMjsKKyAgICBwcml2YXRlIFNpZ25hdHVyZU1ldGhvZCBlY2RzYVNoYTEsIGVjZHNhU2hhMjU2LCBlY2RzYVNoYTM4NCwgZWNkc2FTaGE1MTIsIHJzYVNoYTI1NiwgcnNhU2hhMzg0LCByc2FTaGE1MTIsIGhtYWNTaGEyNTYsIGhtYWNTaGEzODQsIGhtYWNTaGE1MTI7CisgICAgcHJpdmF0ZSBLZXlJbmZvIHAyNTZraSwgcDM4NGtpLCBwNTIxa2ksIHJzYWtpLCBobWFja2k7CisgICAgcHJpdmF0ZSBYTUxTaWduYXR1cmVGYWN0b3J5IGZhYzsKKyAgICBwcml2YXRlIERvY3VtZW50QnVpbGRlciBkYjsKKyAgICBwcml2YXRlIEtleVBhaXIgcDI1NiwgcDM4NCwgcDUyMTsKKworICAgIHN0YXRpYyB7CisgICAgICAgIFNlY3VyaXR5Lmluc2VydFByb3ZpZGVyQXQKKyAgICAgICAgICAgIChuZXcgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJKCksIDEpOworICAgIH0KKworICAgIHB1YmxpYyBDcmVhdGVJbnRlcm9wWE1MRFNpZzExVGVzdChTdHJpbmcgbmFtZSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHN1cGVyKG5hbWUpOworICAgICAgICBTdHJpbmcgZnMgPSBGaWxlLnNlcGFyYXRvcjsKKyAgICAgICAgU3RyaW5nIGJhc2UgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImJhc2VkaXIiKSA9PSBudWxsID8gIi4vIjogU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIik7CisgICAgCWRpciA9IG5ldyBGaWxlKGJhc2UgKyBmcyArICJkYXRhIiArIGZzCisgICAgICAgICAgICArICJvcmciICsgZnMgKyAidzNjIiArIGZzICsgInd3dyIgKyBmcworCSAgICArICJpbnRlcm9wIiArIGZzICsgInhtbGRzaWcxMSIpOworCisgICAgICAgIC8vIENyZWF0ZSBLZXlQYWlycworICAgICAgICBLZXlQYWlyR2VuZXJhdG9yIGtwZyA9IEtleVBhaXJHZW5lcmF0b3IuZ2V0SW5zdGFuY2UoIkVDIik7CisgICAgICAgIGtwZy5pbml0aWFsaXplKG5ldyBFQ0dlblBhcmFtZXRlclNwZWMoIjEuMi44NDAuMTAwNDUuMy4xLjciKSk7CisgICAgICAgIHAyNTYgPSBrcGcuZ2VuZXJhdGVLZXlQYWlyKCk7CisgICAgICAgIGtwZy5pbml0aWFsaXplKG5ldyBFQ0dlblBhcmFtZXRlclNwZWMoIjEuMy4xMzIuMC4zNCIpKTsKKyAgICAgICAgcDM4NCA9IGtwZy5nZW5lcmF0ZUtleVBhaXIoKTsKKyAgICAgICAga3BnLmluaXRpYWxpemUobmV3IEVDR2VuUGFyYW1ldGVyU3BlYygiMS4zLjEzMi4wLjM1IikpOworICAgICAgICBwNTIxID0ga3BnLmdlbmVyYXRlS2V5UGFpcigpOworCisgICAgICAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworICAgICAgICBkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisgICAgICAgIGRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOworICAgICAgICAvLyBjcmVhdGUgY29tbW9uIG9iamVjdHMKKyAgICAgICAgZmFjID0gWE1MU2lnbmF0dXJlRmFjdG9yeS5nZXRJbnN0YW5jZSgpOworICAgICAgICBLZXlJbmZvRmFjdG9yeSBraWZhYyA9IGZhYy5nZXRLZXlJbmZvRmFjdG9yeSgpOworICAgICAgICB3aXRob3V0Q29tbWVudHMgPSBmYWMubmV3Q2Fub25pY2FsaXphdGlvbk1ldGhvZAorICAgICAgICAgICAgKENhbm9uaWNhbGl6YXRpb25NZXRob2QuSU5DTFVTSVZFLCAoQzE0Tk1ldGhvZFBhcmFtZXRlclNwZWMpIG51bGwpOworICAgICAgICB3aXRoQ29tbWVudHMgPSBmYWMubmV3Q2Fub25pY2FsaXphdGlvbk1ldGhvZAorICAgICAgICAgICAgKENhbm9uaWNhbGl6YXRpb25NZXRob2QuSU5DTFVTSVZFX1dJVEhfQ09NTUVOVFMsCisgICAgICAgICAgICAgKEMxNE5NZXRob2RQYXJhbWV0ZXJTcGVjKSBudWxsKTsKKyAgICAgICAgc2hhMSA9IGZhYy5uZXdEaWdlc3RNZXRob2QoRGlnZXN0TWV0aG9kLlNIQTEsIG51bGwpOworICAgICAgICBzaGEyNTYgPSBmYWMubmV3RGlnZXN0TWV0aG9kKERpZ2VzdE1ldGhvZC5TSEEyNTYsIG51bGwpOworICAgICAgICBzaGEzODQgPSBmYWMubmV3RGlnZXN0TWV0aG9kKCJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNzaGEzODQiLCBudWxsKTsKKyAgICAgICAgc2hhNTEyID0gZmFjLm5ld0RpZ2VzdE1ldGhvZChEaWdlc3RNZXRob2QuU0hBNTEyLCBudWxsKTsKKyAgICAgICAgcDI1NmtpID0ga2lmYWMubmV3S2V5SW5mbyhDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KGtpZmFjLm5ld0tleVZhbHVlKHAyNTYuZ2V0UHVibGljKCkpKSk7CisgICAgICAgIHAzODRraSA9IGtpZmFjLm5ld0tleUluZm8oQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChraWZhYy5uZXdLZXlWYWx1ZShwMzg0LmdldFB1YmxpYygpKSkpOworICAgICAgICBwNTIxa2kgPSBraWZhYy5uZXdLZXlJbmZvKENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3Qoa2lmYWMubmV3S2V5VmFsdWUocDUyMS5nZXRQdWJsaWMoKSkpKTsKKyAgICAgICAgcnNha2kgPSBraWZhYy5uZXdLZXlJbmZvKENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3Qoa2lmYWMubmV3S2V5VmFsdWUoVGVzdFV0aWxzLmdldFB1YmxpY0tleSgiUlNBIikpKSk7CisgICAgICAgIGVjZHNhU2hhMSA9IGZhYy5uZXdTaWduYXR1cmVNZXRob2QKKyAgICAgICAgICAgICgiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjZWNkc2Etc2hhMSIsIG51bGwpOworICAgICAgICBlY2RzYVNoYTI1NiA9IGZhYy5uZXdTaWduYXR1cmVNZXRob2QKKyAgICAgICAgICAgICgiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjZWNkc2Etc2hhMjU2IiwgbnVsbCk7CisgICAgICAgIGVjZHNhU2hhMzg0ID0gZmFjLm5ld1NpZ25hdHVyZU1ldGhvZAorICAgICAgICAgICAgKCJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNlY2RzYS1zaGEzODQiLCBudWxsKTsKKyAgICAgICAgZWNkc2FTaGE1MTIgPSBmYWMubmV3U2lnbmF0dXJlTWV0aG9kCisgICAgICAgICAgICAoImh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI2VjZHNhLXNoYTUxMiIsIG51bGwpOworICAgICAgICByc2FTaGEyNTYgPSBmYWMubmV3U2lnbmF0dXJlTWV0aG9kCisgICAgICAgICAgICAoImh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLCBudWxsKTsKKyAgICAgICAgcnNhU2hhMzg0ID0gZmFjLm5ld1NpZ25hdHVyZU1ldGhvZAorICAgICAgICAgICAgKCJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMzg0IiwgbnVsbCk7CisgICAgICAgIHJzYVNoYTUxMiA9IGZhYy5uZXdTaWduYXR1cmVNZXRob2QKKyAgICAgICAgICAgICgiaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTUxMiIsIG51bGwpOworICAgICAgICBobWFjU2hhMjU2ID0gZmFjLm5ld1NpZ25hdHVyZU1ldGhvZAorICAgICAgICAgICAgKCJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTI1NiIsIG51bGwpOworICAgICAgICBobWFjU2hhMzg0ID0gZmFjLm5ld1NpZ25hdHVyZU1ldGhvZAorICAgICAgICAgICAgKCJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTM4NCIsIG51bGwpOworICAgICAgICBobWFjU2hhNTEyID0gZmFjLm5ld1NpZ25hdHVyZU1ldGhvZAorICAgICAgICAgICAgKCJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTUxMiIsIG51bGwpOworCWt2a3MgPSBuZXcgS2V5U2VsZWN0b3JzLktleVZhbHVlS2V5U2VsZWN0b3IoKTsKKwlza3MgPSBuZXcgS2V5U2VsZWN0b3JzLlNlY3JldEtleVNlbGVjdG9yKCJ0ZXN0a2V5Ii5nZXRCeXRlcygiQVNDSUkiKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9jcmVhdGVfZW52ZWxvcGluZ19wMjU2X3NoYTEoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF9jcmVhdGVfc2lnbmF0dXJlX2VudmVsb3BpbmcoZWNkc2FTaGExLCBzaGExLCBwMjU2a2ksIHAyNTYuZ2V0UHJpdmF0ZSgpLCBrdmtzKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgdGVzdF9jcmVhdGVfc2lnbmF0dXJlX2VudmVsb3BpbmcKKyAgICAgICAgKFNpZ25hdHVyZU1ldGhvZCBzbSwgRGlnZXN0TWV0aG9kIGRtLCBLZXlJbmZvIGtpLCBLZXkgc2lnbmluZ0tleSwKKyAgICAgICAgS2V5U2VsZWN0b3Iga3MpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICAgIC8vIGNyZWF0ZSByZWZlcmVuY2UKKyAgICAgICAgUmVmZXJlbmNlIHJlZiA9IGZhYy5uZXdSZWZlcmVuY2UoIiNEU2lnLk9iamVjdF8xIiwgZG0sIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTE9iamVjdC5UWVBFLCBudWxsKTsKKworICAgICAgICAvLyBjcmVhdGUgU2lnbmVkSW5mbworICAgICAgICBTaWduZWRJbmZvIHNpID0gZmFjLm5ld1NpZ25lZEluZm8od2l0aG91dENvbW1lbnRzLCBzbSwKKyAgICAgICAgICAgIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QocmVmKSk7CisKKyAgICAgICAgRG9jdW1lbnQgZG9jID0gZGIubmV3RG9jdW1lbnQoKTsKKyAgICAgICAgLy8gY3JlYXRlIE9iamVjdHMKKyAgICAgICAgRWxlbWVudCB3ZWJFbGVtID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhudWxsLCAiV2ViIik7CisgICAgICAgIFRleHQgdGV4dCA9IGRvYy5jcmVhdGVUZXh0Tm9kZSgidXAgdXAgYW5kIGF3YXkiKTsKKyAgICAgICAgd2ViRWxlbS5hcHBlbmRDaGlsZCh0ZXh0KTsKKyAgICAgICAgWE1MT2JqZWN0IG9iaiA9IGZhYy5uZXdYTUxPYmplY3QoQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdAorICAgICAgICAgICAgKG5ldyBET01TdHJ1Y3R1cmUod2ViRWxlbSkpLCAiRFNpZy5PYmplY3RfMSIsICJ0ZXh0L3htbCIsIG51bGwpOworCisgICAgICAgIC8vIGNyZWF0ZSBYTUxTaWduYXR1cmUKKyAgICAgICAgWE1MU2lnbmF0dXJlIHNpZyA9IGZhYy5uZXdYTUxTaWduYXR1cmUKKyAgICAgICAgICAgIChzaSwga2ksIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3Qob2JqKSwgbnVsbCwgbnVsbCk7CisKKyAgICAgICAgRE9NU2lnbkNvbnRleHQgZHNjID0gbmV3IERPTVNpZ25Db250ZXh0KHNpZ25pbmdLZXksIGRvYyk7CisgICAgICAgIGRzYy5zZXREZWZhdWx0TmFtZXNwYWNlUHJlZml4KCJkc2lnIik7CisKKyAgICAgICAgc2lnLnNpZ24oZHNjKTsKKwlTdHJpbmdXcml0ZXIgc3cgPSBuZXcgU3RyaW5nV3JpdGVyKCk7CisvLyAgICAgICAgZHVtcERvY3VtZW50KGRvYywgc3cpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oc3cudG9TdHJpbmcoKSk7CisKKyAgICAgICAgRE9NVmFsaWRhdGVDb250ZXh0IGR2YyA9IG5ldyBET01WYWxpZGF0ZUNvbnRleHQKKyAgICAgICAgICAgIChrcywgZG9jLmdldERvY3VtZW50RWxlbWVudCgpKTsKKyAgICAgICAgWE1MU2lnbmF0dXJlIHNpZzIgPSBmYWMudW5tYXJzaGFsWE1MU2lnbmF0dXJlKGR2Yyk7CisKKyAgICAgICAgYXNzZXJ0VHJ1ZShzaWcuZXF1YWxzKHNpZzIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShzaWcyLnZhbGlkYXRlKGR2YykpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBkdW1wRG9jdW1lbnQoRG9jdW1lbnQgZG9jLCBXcml0ZXIgdykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFRyYW5zZm9ybWVyRmFjdG9yeSB0ZiA9IFRyYW5zZm9ybWVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworICAgICAgICBUcmFuc2Zvcm1lciB0cmFucyA9IHRmLm5ld1RyYW5zZm9ybWVyKCk7CisvLyAgICAgIHRyYW5zLnNldE91dHB1dFByb3BlcnR5KE91dHB1dEtleXMuSU5ERU5ULCAieWVzIik7CisgICAgICAgIHRyYW5zLnRyYW5zZm9ybShuZXcgRE9NU291cmNlKGRvYyksIG5ldyBTdHJlYW1SZXN1bHQodykpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RfY3JlYXRlX2VudmVsb3BpbmdfcDI1Nl9zaGEyNTYoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF9jcmVhdGVfc2lnbmF0dXJlX2VudmVsb3BpbmcoZWNkc2FTaGEyNTYsIHNoYTI1NiwgcDI1NmtpLCBwMjU2LmdldFByaXZhdGUoKSwga3Zrcyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9jcmVhdGVfZW52ZWxvcGluZ19wMjU2X3NoYTM4NCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICB0ZXN0X2NyZWF0ZV9zaWduYXR1cmVfZW52ZWxvcGluZyhlY2RzYVNoYTM4NCwgc2hhMzg0LCBwMjU2a2ksIHAyNTYuZ2V0UHJpdmF0ZSgpLCBrdmtzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2NyZWF0ZV9lbnZlbG9waW5nX3AyNTZfc2hhNTEyKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHRlc3RfY3JlYXRlX3NpZ25hdHVyZV9lbnZlbG9waW5nKGVjZHNhU2hhNTEyLCBzaGE1MTIsIHAyNTZraSwgcDI1Ni5nZXRQcml2YXRlKCksIGt2a3MpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RfY3JlYXRlX2VudmVsb3BpbmdfcDM4NF9zaGExKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHRlc3RfY3JlYXRlX3NpZ25hdHVyZV9lbnZlbG9waW5nKGVjZHNhU2hhMSwgc2hhMSwgcDM4NGtpLCBwMzg0LmdldFByaXZhdGUoKSwga3Zrcyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9jcmVhdGVfZW52ZWxvcGluZ19wMzg0X3NoYTI1NigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICB0ZXN0X2NyZWF0ZV9zaWduYXR1cmVfZW52ZWxvcGluZyhlY2RzYVNoYTI1Niwgc2hhMjU2LCBwMzg0a2ksIHAzODQuZ2V0UHJpdmF0ZSgpLCBrdmtzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2NyZWF0ZV9lbnZlbG9waW5nX3AzODRfc2hhMzg0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHRlc3RfY3JlYXRlX3NpZ25hdHVyZV9lbnZlbG9waW5nKGVjZHNhU2hhMzg0LCBzaGEzODQsIHAzODRraSwgcDM4NC5nZXRQcml2YXRlKCksIGt2a3MpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RfY3JlYXRlX2VudmVsb3BpbmdfcDM4NF9zaGE1MTIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF9jcmVhdGVfc2lnbmF0dXJlX2VudmVsb3BpbmcoZWNkc2FTaGE1MTIsIHNoYTUxMiwgcDM4NGtpLCBwMzg0LmdldFByaXZhdGUoKSwga3Zrcyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9jcmVhdGVfZW52ZWxvcGluZ19wNTIxX3NoYTEoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF9jcmVhdGVfc2lnbmF0dXJlX2VudmVsb3BpbmcoZWNkc2FTaGExLCBzaGExLCBwNTIxa2ksIHA1MjEuZ2V0UHJpdmF0ZSgpLCBrdmtzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2NyZWF0ZV9lbnZlbG9waW5nX3A1MjFfc2hhMjU2KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHRlc3RfY3JlYXRlX3NpZ25hdHVyZV9lbnZlbG9waW5nKGVjZHNhU2hhMjU2LCBzaGEyNTYsIHA1MjFraSwgcDUyMS5nZXRQcml2YXRlKCksIGt2a3MpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RfY3JlYXRlX2VudmVsb3BpbmdfcDUyMV9zaGEzODQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF9jcmVhdGVfc2lnbmF0dXJlX2VudmVsb3BpbmcoZWNkc2FTaGEzODQsIHNoYTM4NCwgcDUyMWtpLCBwNTIxLmdldFByaXZhdGUoKSwga3Zrcyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9jcmVhdGVfZW52ZWxvcGluZ19wNTIxX3NoYTUxMigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICB0ZXN0X2NyZWF0ZV9zaWduYXR1cmVfZW52ZWxvcGluZyhlY2RzYVNoYTUxMiwgc2hhNTEyLCBwNTIxa2ksIHA1MjEuZ2V0UHJpdmF0ZSgpLCBrdmtzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2NyZWF0ZV9lbnZlbG9waW5nX3JzYV9zaGEyNTYoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF9jcmVhdGVfc2lnbmF0dXJlX2VudmVsb3BpbmcocnNhU2hhMjU2LCBzaGExLCByc2FraSwgVGVzdFV0aWxzLmdldFByaXZhdGVLZXkoIlJTQSIpLCBrdmtzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2NyZWF0ZV9lbnZlbG9waW5nX3JzYV9zaGEzODQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF9jcmVhdGVfc2lnbmF0dXJlX2VudmVsb3BpbmcocnNhU2hhMzg0LCBzaGExLCByc2FraSwgVGVzdFV0aWxzLmdldFByaXZhdGVLZXkoIlJTQSIpLCBrdmtzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2NyZWF0ZV9lbnZlbG9waW5nX3JzYV9zaGE1MTIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF9jcmVhdGVfc2lnbmF0dXJlX2VudmVsb3BpbmcocnNhU2hhNTEyLCBzaGExLCByc2FraSwgVGVzdFV0aWxzLmdldFByaXZhdGVLZXkoIlJTQSIpLCBrdmtzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2NyZWF0ZV9lbnZlbG9waW5nX3NoYTI1Nl9yc2Ffc2hhMjU2KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHRlc3RfY3JlYXRlX3NpZ25hdHVyZV9lbnZlbG9waW5nKHJzYVNoYTI1Niwgc2hhMjU2LCByc2FraSwgVGVzdFV0aWxzLmdldFByaXZhdGVLZXkoIlJTQSIpLCBrdmtzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2NyZWF0ZV9lbnZlbG9waW5nX3NoYTM4NF9yc2Ffc2hhMjU2KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHRlc3RfY3JlYXRlX3NpZ25hdHVyZV9lbnZlbG9waW5nKHJzYVNoYTI1Niwgc2hhMzg0LCByc2FraSwgVGVzdFV0aWxzLmdldFByaXZhdGVLZXkoIlJTQSIpLCBrdmtzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2NyZWF0ZV9lbnZlbG9waW5nX3NoYTUxMl9yc2Ffc2hhMjU2KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHRlc3RfY3JlYXRlX3NpZ25hdHVyZV9lbnZlbG9waW5nKHJzYVNoYTI1Niwgc2hhNTEyLCByc2FraSwgVGVzdFV0aWxzLmdldFByaXZhdGVLZXkoIlJTQSIpLCBrdmtzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2NyZWF0ZV9lbnZlbG9waW5nX2htYWNfc2hhMjU2KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHRlc3RfY3JlYXRlX3NpZ25hdHVyZV9lbnZlbG9waW5nKGhtYWNTaGEyNTYsIHNoYTEsIHJzYWtpLCBUZXN0VXRpbHMuZ2V0U2VjcmV0S2V5KCJ0ZXN0a2V5Ii5nZXRCeXRlcygiQVNDSUkiKSksIHNrcyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9jcmVhdGVfZW52ZWxvcGluZ19obWFjX3NoYTM4NCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICB0ZXN0X2NyZWF0ZV9zaWduYXR1cmVfZW52ZWxvcGluZyhobWFjU2hhMzg0LCBzaGExLCByc2FraSwgVGVzdFV0aWxzLmdldFNlY3JldEtleSgidGVzdGtleSIuZ2V0Qnl0ZXMoIkFTQ0lJIikpLCBza3MpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RfY3JlYXRlX2VudmVsb3BpbmdfaG1hY19zaGE1MTIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF9jcmVhdGVfc2lnbmF0dXJlX2VudmVsb3BpbmcoaG1hY1NoYTUxMiwgc2hhMSwgcnNha2ksIFRlc3RVdGlscy5nZXRTZWNyZXRLZXkoInRlc3RrZXkiLmdldEJ5dGVzKCJBU0NJSSIpKSwgc2tzKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0NyZWF0ZVBoYW9zWE1MRFNpZzNUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0NyZWF0ZVBoYW9zWE1MRFNpZzNUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVjNWZhOAotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvQ3JlYXRlUGhhb3NYTUxEU2lnM1Rlc3QuamF2YQpAQCAtMCwwICsxLDE3OSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA2LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLnRlc3QuZHNpZzsKKworaW1wb3J0IGphdmEuc2VjdXJpdHkuKjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuZG9tLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLnNwZWMuKjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy4qOworaW1wb3J0IG9yZy53M2MuZG9tLio7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuKjsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8udGVzdC5LZXlTZWxlY3RvcnM7CisKKy8qKgorICogVGVzdCB0aGF0IHJlY3JlYXRlcyBQaGFvcyBYTUxEU2lnLTMgdGVzdCB2ZWN0b3JzCisgKiBidXQgd2l0aCBkaWZmZXJlbnQga2V5cy4gRm9yIG5vdyB3ZSBhcmUganVzdCBmb2N1c2luZyBvbgorICogdGhlIGV4Yy1jMTRuIHZlY3RvcnMuCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICovCitwdWJsaWMgY2xhc3MgQ3JlYXRlUGhhb3NYTUxEU2lnM1Rlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgICBwcml2YXRlIFhNTFNpZ25hdHVyZUZhY3RvcnkgZmFjOworICAgIHByaXZhdGUgRG9jdW1lbnRCdWlsZGVyIGRiOworCisgICAgc3RhdGljIHsKKyAgICAgICAgU2VjdXJpdHkuaW5zZXJ0UHJvdmlkZXJBdAorICAgICAgICAgICAgKG5ldyBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbS5YTUxEU2lnUkkoKSwgMSk7CisgICAgfQorCisgICAgcHVibGljIENyZWF0ZVBoYW9zWE1MRFNpZzNUZXN0KFN0cmluZyBuYW1lKSB7CisgICAgICAgIHN1cGVyKG5hbWUpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZhYyA9IFhNTFNpZ25hdHVyZUZhY3RvcnkuZ2V0SW5zdGFuY2UKKyAgICAgICAgICAgICgiRE9NIiwgbmV3IG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tLlhNTERTaWdSSSgpKTsKKyAgICAgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisgICAgICAgIGRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKyAgICAgICAgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9jcmVhdGVfaG1hY19zaGExX2V4Y2x1c2l2ZV9jMTRuX2NvbW1lbnRzX2RldGFjaGVkKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHRlc3RfY3JlYXRlX2htYWNfc2hhMV9leGNsdXNpdmVfYzE0bl9jb21tZW50c19kZXRhY2hlZChmYWxzZSk7CisgICAgfSAKKworICAgIHB1YmxpYyB2b2lkIHRlc3RfY3JlYXRlX2htYWNfc2hhMV80MF9leGNsdXNpdmVfYzE0bl9jb21tZW50c19kZXRhY2hlZCgpIAorCXRocm93cyBFeGNlcHRpb24geworICAgICAgICB0cnkgeworICAgICAgICAgICAgdGVzdF9jcmVhdGVfaG1hY19zaGExX2V4Y2x1c2l2ZV9jMTRuX2NvbW1lbnRzX2RldGFjaGVkKHRydWUpOworICAgICAgICAgICAgZmFpbCgiRXhwZWN0ZWQgSE1BQ091dHB1dExlbmd0aCBFeGNlcHRpb24iKTsKKyAgICAgICAgfSBjYXRjaCAoWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHhzZSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHhzZS5nZXRNZXNzYWdlKCkpOworICAgICAgICAgICAgLy8gcGFzcworICAgICAgICB9CisgICAgfSAKKworICAgIHByaXZhdGUgdm9pZCB0ZXN0X2NyZWF0ZV9obWFjX3NoYTFfZXhjbHVzaXZlX2MxNG5fY29tbWVudHNfZGV0YWNoZWQoYm9vbGVhbiBmb3J0eUJpdCkgCisJdGhyb3dzIEV4Y2VwdGlvbiB7CisKKwkvLyBjcmVhdGUgcmVmZXJlbmNlCisJUmVmZXJlbmNlIHJlZiA9IGZhYy5uZXdSZWZlcmVuY2UKKwkgICAgKCJodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMzMTYxLnR4dCIsCisJICAgICBmYWMubmV3RGlnZXN0TWV0aG9kKERpZ2VzdE1ldGhvZC5TSEExLCBudWxsKSk7CisKKyAgICAgICAgLy8gY3JlYXRlIFNpZ25lZEluZm8KKwlITUFDUGFyYW1ldGVyU3BlYyBzcGVjID0gbnVsbDsKKwlpZiAoZm9ydHlCaXQpIHsKKwkgICAgc3BlYyA9IG5ldyBITUFDUGFyYW1ldGVyU3BlYyg0MCk7CisgICAgICAgIH0KKwkgICAgCisgICAgICAgIFNpZ25lZEluZm8gc2kgPSBmYWMubmV3U2lnbmVkSW5mbygKKwkgICAgZmFjLm5ld0Nhbm9uaWNhbGl6YXRpb25NZXRob2QKKwkgICAgICAgIChDYW5vbmljYWxpemF0aW9uTWV0aG9kLkVYQ0xVU0lWRV9XSVRIX0NPTU1FTlRTLCAKKwkJIChDMTROTWV0aG9kUGFyYW1ldGVyU3BlYykgbnVsbCksCisJICAgIGZhYy5uZXdTaWduYXR1cmVNZXRob2QoU2lnbmF0dXJlTWV0aG9kLkhNQUNfU0hBMSwgc3BlYyksIAorCSAgICBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KHJlZikpOworCisJLy8gY3JlYXRlIFhNTFNpZ25hdHVyZQorCVhNTFNpZ25hdHVyZSBzaWcgPSBmYWMubmV3WE1MU2lnbmF0dXJlKHNpLCBudWxsKTsKKworCURvY3VtZW50IGRvYyA9IGRiLm5ld0RvY3VtZW50KCk7CisgICAgICAgIERPTVNpZ25Db250ZXh0IGRzYyA9IG5ldyBET01TaWduQ29udGV4dAorICAgICAgICAgICAgKG5ldyBLZXlTZWxlY3RvcnMuU2VjcmV0S2V5U2VsZWN0b3IKKwkgICAgICgidGVzdCIuZ2V0Qnl0ZXMoIkFTQ0lJIikpLCBkb2MpOworCWRzYy5wdXROYW1lc3BhY2VQcmVmaXgoWE1MU2lnbmF0dXJlLlhNTE5TLCAiZHNpZyIpOworCisgICAgICAgIHNpZy5zaWduKGRzYyk7CisKKy8vCWR1bXBEb2N1bWVudChkb2MsIG5ldyBGaWxlV3JpdGVyKCIvdG1wL2Zvby54bWwiKSk7CisKKyAgICAgICAgRE9NVmFsaWRhdGVDb250ZXh0IGR2YyA9IG5ldyBET01WYWxpZGF0ZUNvbnRleHQKKyAgICAgICAgICAgIChuZXcgS2V5U2VsZWN0b3JzLlNlY3JldEtleVNlbGVjdG9yCisJICAgICAoInRlc3QiLmdldEJ5dGVzKCJBU0NJSSIpKSwgZG9jKTsKKworICAgICAgICBYTUxTaWduYXR1cmUgc2lnMiA9IGZhYy51bm1hcnNoYWxYTUxTaWduYXR1cmUoZHZjKTsKKworICAgICAgICBhc3NlcnRUcnVlKHNpZy5lcXVhbHMoc2lnMikpOworCisgICAgICAgIGFzc2VydFRydWUoc2lnMi52YWxpZGF0ZShkdmMpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2NyZWF0ZV9obWFjX3NoYTFfZXhjbHVzaXZlX2MxNG5fZW52ZWxvcGVkKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKwkvLyBjcmVhdGUgcmVmZXJlbmNlCisJUmVmZXJlbmNlIHJlZiA9IGZhYy5uZXdSZWZlcmVuY2UoIiIsCisJICAgIGZhYy5uZXdEaWdlc3RNZXRob2QoRGlnZXN0TWV0aG9kLlNIQTEsIG51bGwpLAorCSAgICBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KGZhYy5uZXdUcmFuc2Zvcm0oVHJhbnNmb3JtLkVOVkVMT1BFRCwgCisJICAgIChUcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjKSBudWxsKSksCisJICAgIG51bGwsIG51bGwpOworCisgICAgICAgIC8vIGNyZWF0ZSBTaWduZWRJbmZvCisgICAgICAgIFNpZ25lZEluZm8gc2kgPSBmYWMubmV3U2lnbmVkSW5mbygKKwkgICAgZmFjLm5ld0Nhbm9uaWNhbGl6YXRpb25NZXRob2QoQ2Fub25pY2FsaXphdGlvbk1ldGhvZC5FWENMVVNJVkUsIAorCQkoQzE0Tk1ldGhvZFBhcmFtZXRlclNwZWMpIG51bGwpLAorCSAgICBmYWMubmV3U2lnbmF0dXJlTWV0aG9kKFNpZ25hdHVyZU1ldGhvZC5ITUFDX1NIQTEsIG51bGwpLCAKKwkgICAgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChyZWYpKTsKKworCS8vIGNyZWF0ZSBYTUxTaWduYXR1cmUKKwlYTUxTaWduYXR1cmUgc2lnID0gZmFjLm5ld1hNTFNpZ25hdHVyZShzaSwgbnVsbCk7CisKKwlEb2N1bWVudCBkb2MgPSBkYi5uZXdEb2N1bWVudCgpOworCUVsZW1lbnQgcGxheWVyID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhudWxsLCAicGxheWVyIik7CisJcGxheWVyLnNldEF0dHJpYnV0ZU5TKG51bGwsICJiYXRzIiwgImxlZnQiKTsKKwlwbGF5ZXIuc2V0QXR0cmlidXRlTlMobnVsbCwgImlkIiwgIjEwMDEyIik7CisJcGxheWVyLnNldEF0dHJpYnV0ZU5TKG51bGwsICJ0aHJvd3MiLCAicmlnaHQiKTsKKwlFbGVtZW50IG5hbWUgPSBkb2MuY3JlYXRlRWxlbWVudE5TKG51bGwsICJuYW1lIik7CisJbmFtZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIkFsZm9uc28gU29yaWFubyIpKTsKKwlFbGVtZW50IHBvc2l0aW9uID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhudWxsLCAicG9zaXRpb24iKTsKKwlwb3NpdGlvbi5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIjJCIikpOworCUVsZW1lbnQgdGVhbSA9IGRvYy5jcmVhdGVFbGVtZW50TlMobnVsbCwgInRlYW0iKTsKKwl0ZWFtLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiTmV3IFlvcmsgWWFua2VlcyIpKTsKKwlwbGF5ZXIuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZUNvbW1lbnQoIiBIZXJlJ3MgYSBjb21tZW50ICIpKTsKKwlwbGF5ZXIuYXBwZW5kQ2hpbGQobmFtZSk7CisJcGxheWVyLmFwcGVuZENoaWxkKHBvc2l0aW9uKTsKKwlwbGF5ZXIuYXBwZW5kQ2hpbGQodGVhbSk7CisJZG9jLmFwcGVuZENoaWxkKHBsYXllcik7CisKKyAgICAgICAgRE9NU2lnbkNvbnRleHQgZHNjID0gbmV3IERPTVNpZ25Db250ZXh0CisgICAgICAgICAgICAobmV3IEtleVNlbGVjdG9ycy5TZWNyZXRLZXlTZWxlY3RvcgorCSAgICAgKCJ0ZXN0Ii5nZXRCeXRlcygiQVNDSUkiKSksIHBsYXllcik7CisJZHNjLnB1dE5hbWVzcGFjZVByZWZpeChYTUxTaWduYXR1cmUuWE1MTlMsICJkc2lnIik7CisKKyAgICAgICAgc2lnLnNpZ24oZHNjKTsKKworLy8JZHVtcERvY3VtZW50KGRvYywgbmV3IEZpbGVXcml0ZXIoIi90bXAvZm9vLnhtbCIpKTsKKworICAgICAgICBET01WYWxpZGF0ZUNvbnRleHQgZHZjID0gbmV3IERPTVZhbGlkYXRlQ29udGV4dAorICAgICAgICAgICAgKG5ldyBLZXlTZWxlY3RvcnMuU2VjcmV0S2V5U2VsZWN0b3IKKwkgICAgICgidGVzdCIuZ2V0Qnl0ZXMoIkFTQ0lJIikpLCBwbGF5ZXIuZ2V0TGFzdENoaWxkKCkpOworCisgICAgICAgIFhNTFNpZ25hdHVyZSBzaWcyID0gZmFjLnVubWFyc2hhbFhNTFNpZ25hdHVyZShkdmMpOworCisgICAgICAgIGFzc2VydFRydWUoc2lnLmVxdWFscyhzaWcyKSk7CisKKyAgICAgICAgYXNzZXJ0VHJ1ZShzaWcyLnZhbGlkYXRlKGR2YykpOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9EZXRhY2hlZFRlc3QuamF2YSBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvRGV0YWNoZWRUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVjNDViMAotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvRGV0YWNoZWRUZXN0LmphdmEKQEAgLTAsMCArMSwxNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNi0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by50ZXN0LmRzaWc7CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuZG9tLkRPTVNpZ25Db250ZXh0OworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5kb20uRE9NVmFsaWRhdGVDb250ZXh0OworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLnNwZWMuQzE0Tk1ldGhvZFBhcmFtZXRlclNwZWM7CitpbXBvcnQgamF2YS5zZWN1cml0eS4qOworaW1wb3J0IGphdmEudXRpbC4qOworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuKjsKKworLyoqCisgKiBUaGlzIGlzIGEgc2ltcGxlIGV4YW1wbGUgb2YgZ2VuZXJhdGluZyBhbmQgdmFsaWRhdGluZyBhIERldGFjaGVkIFhNTCAKKyAqIFNpZ25hdHVyZSB1c2luZyB0aGUgSlNSIDEwNSBBUEkuIFRoZSByZXN1bHRpbmcgc2lnbmF0dXJlIHdpbGwgbG9vayAKKyAqIGxpa2UgKGtleSBhbmQgc2lnbmF0dXJlIHZhbHVlcyB3aWxsIGJlIGRpZmZlcmVudCk6CisgKgorICogPHByZT48Y29kZT4KKyAqIDxTaWduYXR1cmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgorICogICA8U2lnbmVkSW5mbz4KKyAqICAgICA8Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ii8+CisgKiAgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNkc2Etc2hhMSIvPgorICogICAgIDxSZWZlcmVuY2UgVVJJPSJodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldCI+CisgKiAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz4KKyAqICAgICAgIDxEaWdlc3RWYWx1ZT42ME52WnZ0ZFRCKzdVbmxMcC9IMjRwN2g0YnM9PC9EaWdlc3RWYWx1ZT4KKyAqICAgICA8L1JlZmVyZW5jZT4KKyAqICAgPC9TaWduZWRJbmZvPgorICogICA8U2lnbmF0dXJlVmFsdWU+CisgKiAgICAgRHBFeWxoUW9pVUtCb0tXbVlmYWpYTzdMWnhpRFlnVnRVdENOeVRnd1pnb0Noem9yQTJuaGtRPT0KKyAqICAgPC9TaWduYXR1cmVWYWx1ZT4KKyAqICAgPEtleUluZm8+CisgKiAgICAgPEtleVZhbHVlPgorICogICAgICAgPERTQUtleVZhbHVlPgorICoJICAgPFA+CisgKiAgICAgICAgICAgckZ0bzh1UFFNNnkzNEZMUG1EaDQwQkxKMXJWckM4VmVScXV1aFBaNmpZTkZrUXV3eG51L3dDdklBTWh1a1BCTAorICogICAgICAgICAgIEZFVDhiSmYvYjJlZitvcXhaYWpFYis4OHpsWm95RzhnL3dNZkRCSFR4eitDbm93TGFobkNDVFlCcDVrdDdHOHEKKyAqICAgICAgICAgICBVb2JKdXZqeWx3ajFzdDdWOUxzdTAzaVhNWHRiaXJpVWpGYTVnVVJhc044PQorICogICAgICAgICA8L1A+CisgKiAgICAgICAgIDxRPgorICogICAgICAgICAgIGtFakFGcENlNGxjVU9kd3BocHpmK3RCYVVkcz0KKyAqICAgICAgICAgPC9RPgorICogICAgICAgICA8Rz4KKyAqICAgICAgICAgICBvZTE0UjJPdHlLeCtzKzYwTzVCUk5NT1lwSWcyVFUvZjE1TjNic0RFcktPV3RLWGVOSzlGUzdkV1N0cmVEeG8yCisgKiAgICAgICAgICAgU1NnT29ucUFkNEZ1Si80dXZhN0dnTkw0VUxJcVk3RSttVzVpd0o3bi9XVEVMaDk4bUVvY3NMWGtOaDI0SGNINAorICogICAgICAgICAgIEJaZlNDVHJ1dXptQ3lqZFYxS1NxWC9FdXgwNEhmQ1dZbWR4TjNTUS9xcXc9CisgKiAgICAgICAgIDwvRz4KKyAqICAgICAgICAgPFk+CisgKiAgICAgICAgICAgcEE1Tm5admNkNTc0V1JYdU9BN1pmQy83THF0NGNCME1STFd0SHVidEpvVk9hbzlpYjVyeTRyVGswcjZkZG5PdgorICogICAgICAgICAgIEFJR0trdHV0ekszeW12S2xlUzNET3J3WlFnSisvQkRXRFc4a085UjY2bzZyZGppU29iQmkvMGMyVjErZGtxT2cKKyAqICAgICAgICAgICBqRm1LejM5NW12Q09aR2hDN2ZxQVZoSGF0MkVqR1BNZmdTWnlBQmE3KzFrPQorICogICAgICAgICA8L1k+CisgKiAJIDwvS2V5VmFsdWU+CisgKiAgICAgPC9EU0FLZXlWYWx1ZT4KKyAqICAgPC9LZXlJbmZvPgorICogPC9TaWduYXR1cmU+CisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICovCitwdWJsaWMgY2xhc3MgRGV0YWNoZWRUZXN0IGV4dGVuZHMgVGVzdENhc2UgeworCisgICAgc3RhdGljIHsKKyAgICAgICAgU2VjdXJpdHkuaW5zZXJ0UHJvdmlkZXJBdAorICAgICAgICAgICAgKG5ldyBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbS5YTUxEU2lnUkkoKSwgMSk7CisgICAgfQorCisgICAgcHVibGljIERldGFjaGVkVGVzdChTdHJpbmcgbmFtZSkgeworICAgICAgICBzdXBlcihuYW1lKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIC8vCisgICAgCSAgICAvLyBQQVJUIDEgOiBDcmVhdGluZyB0aGUgZGV0YWNoZWQgc2lnbmF0dXJlCisgICAgCSAgICAvLworICAgIAorICAgIAkgICAgLy8gQ3JlYXRlIGEgZmFjdG9yeSB0aGF0IHdpbGwgYmUgdXNlZCB0byBnZW5lcmF0ZSB0aGUgc2lnbmF0dXJlIAorICAgICAgICAgICAgLy8gc3RydWN0dXJlcworICAgIAkgICAgWE1MU2lnbmF0dXJlRmFjdG9yeSBmYWMgPSBYTUxTaWduYXR1cmVGYWN0b3J5LmdldEluc3RhbmNlCisgICAgICAgICAgICAgICAgKCJET00iLCBuZXcgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJKCkpOworICAgIAorICAgIAkgICAgLy8gQ3JlYXRlIGEgUmVmZXJlbmNlIHRvIGFuIGV4dGVybmFsIFVSSSB0aGF0IHdpbGwgYmUgZGlnZXN0ZWQKKyAgICAJICAgIFJlZmVyZW5jZSByZWYgPSBmYWMubmV3UmVmZXJlbmNlCisgICAgICAgICAgICAgICAgKCJodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldCIsIAorCQlmYWMubmV3RGlnZXN0TWV0aG9kKERpZ2VzdE1ldGhvZC5TSEExLCBudWxsKSk7CisgICAgCisgICAgCSAgICAvLyBDcmVhdGUgYSBEU0EgS2V5UGFpcgorICAgIAkgICAgS2V5UGFpckdlbmVyYXRvciBrcGcgPSBLZXlQYWlyR2VuZXJhdG9yLmdldEluc3RhbmNlKCJEU0EiKTsKKyAgICAJICAgIGtwZy5pbml0aWFsaXplKDEwMjQsIAorCQluZXcgU2VjdXJlUmFuZG9tKCJub3Qgc28gcmFuZG9tIGJ5dGVzIi5nZXRCeXRlcygpKSk7CisgICAgCSAgICBLZXlQYWlyIGtwID0ga3BnLmdlbmVyYXRlS2V5UGFpcigpOworICAgIAorICAgIAkgICAgLy8gQ3JlYXRlIGEgS2V5VmFsdWUgY29udGFpbmluZyB0aGUgZ2VuZXJhdGVkIERTQSBQdWJsaWNLZXkKKyAgICAJICAgIEtleUluZm9GYWN0b3J5IGtpZiA9IGZhYy5nZXRLZXlJbmZvRmFjdG9yeSgpOworICAgIAkgICAgS2V5VmFsdWUga3YgPSBraWYubmV3S2V5VmFsdWUoa3AuZ2V0UHVibGljKCkpOworICAgIAorICAgIAkgICAgLy8gQ3JlYXRlIGEgS2V5SW5mbyBhbmQgYWRkIHRoZSBLZXlWYWx1ZSB0byBpdAorICAgIAkgICAgS2V5SW5mbyBraSA9IGtpZi5uZXdLZXlJbmZvKENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3Qoa3YpKTsKKworCSAgICAvLyBDcmVhdGUgU2lnbmVkSW5mbworCSAgICBTaWduZWRJbmZvIHNpID0gZmFjLm5ld1NpZ25lZEluZm8oZmFjLm5ld0Nhbm9uaWNhbGl6YXRpb25NZXRob2QoCisJCUNhbm9uaWNhbGl6YXRpb25NZXRob2QuSU5DTFVTSVZFX1dJVEhfQ09NTUVOVFMsIAorCQkoQzE0Tk1ldGhvZFBhcmFtZXRlclNwZWMpIG51bGwpLCAKKwkJZmFjLm5ld1NpZ25hdHVyZU1ldGhvZChTaWduYXR1cmVNZXRob2QuRFNBX1NIQTEsIG51bGwpLCAKKwkJQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChyZWYpKTsKKworCSAgICAvLyBDcmVhdGUgWE1MU2lnbmF0dXJlCisJICAgIFhNTFNpZ25hdHVyZSBzaWduYXR1cmUgPSBmYWMubmV3WE1MU2lnbmF0dXJlKHNpLGtpLG51bGwsbnVsbCxudWxsKTsKKyAgICAKKyAgICAJICAgIC8vIENyZWF0ZSBhbiBYTUxTaWduQ29udGV4dCBhbmQgc2V0IHRoZSAKKyAgICAgICAgICAgIC8vIERTQSBQcml2YXRlS2V5IGZvciBzaWduaW5nCisgICAgICAgICAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKyAgICAgICAgICAgIGRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKyAgICAgICAgICAgIGRiZi5zZXRWYWxpZGF0aW5nKGZhbHNlKTsKKyAgICAgICAgICAgIERvY3VtZW50IGRvYyA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKS5uZXdEb2N1bWVudCgpOworICAgIAkgICAgRE9NU2lnbkNvbnRleHQgc2lnbkNvbnRleHQgPSBuZXcgRE9NU2lnbkNvbnRleHQoa3AuZ2V0UHJpdmF0ZSgpLCBkb2MpOworICAgIAkgICAgc2lnbkNvbnRleHQucHV0TmFtZXNwYWNlUHJlZml4KFhNTFNpZ25hdHVyZS5YTUxOUywgImRzIik7CisKKyAgICAJICAgIC8vIEdlbmVyYXRlIChhbmQgc2lnbikgdGhlIFhNTFNpZ25hdHVyZQorICAgIAkgICAgc2lnbmF0dXJlLnNpZ24oc2lnbkNvbnRleHQpOworICAgIAorICAgIAkgICAgLy8KKyAgICAJICAgIC8vIFBBUlQgMiA6IFZhbGlkYXRpbmcgdGhlIGRldGFjaGVkIHNpZ25hdHVyZQorICAgIAkgICAgLy8KKyAgICAKKyAgICAJICAgIC8vIENyZWF0ZSBhIFhNTFZhbGlkYXRlQ29udGV4dCAmIHNldCB0aGUgRFNBUHVibGljS2V5IGZvciB2YWxpZGF0aW5nCisJICAgIFhNTFZhbGlkYXRlQ29udGV4dCB2YyA9IG5ldyBET01WYWxpZGF0ZUNvbnRleHQoa3AuZ2V0UHVibGljKCksCisJCWRvYy5nZXREb2N1bWVudEVsZW1lbnQoKSk7CisgICAgCisgICAgCSAgICAvLyBWYWxpZGF0ZSB0aGUgU2lnbmF0dXJlIChnZW5lcmF0ZWQgYWJvdmUpCisgICAgCSAgICBib29sZWFuIGNvcmVWYWxpZGl0eSA9IHNpZ25hdHVyZS52YWxpZGF0ZSh2Yyk7IAorICAgIAorICAgIAkgICAgLy8gQ2hlY2sgY29yZSB2YWxpZGF0aW9uIHN0YXR1cworICAgIAkgICAgaWYgKGNvcmVWYWxpZGl0eSA9PSBmYWxzZSkgeworICAgIAkgICAgICAgIC8vIGNoZWNrIHRoZSB2YWxpZGF0aW9uIHN0YXR1cyBvZiBlYWNoIFJlZmVyZW5jZQorICAgIAkgICAgICAgIEl0ZXJhdG9yIGkgPSBzaWduYXR1cmUuZ2V0U2lnbmVkSW5mbygpLmdldFJlZmVyZW5jZXMoKS5pdGVyYXRvcigpOworICAgIAkgICAgICAgIGZvciAoaW50IGo9MDsgaS5oYXNOZXh0KCk7IGorKykgeworCQkgICAgUmVmZXJlbmNlIHJlZmVyZW5jZSA9IChSZWZlcmVuY2UpIGkubmV4dCgpOworICAgIAkJICAgIHJlZmVyZW5jZS52YWxpZGF0ZSh2Yyk7CisgICAgCSAgICAgICAgfQorICAgIAkgICAgICAgIGZhaWwoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIik7CisgICAgCSAgICB9CisgICAgCisgICAgCSAgICAvLyBZb3UgY2FuIGFsc28gdmFsaWRhdGUgYW4gWE1MIFNpZ25hdHVyZSB3aGljaCBpcyBpbiBYTUwgZm9ybWF0LgorICAgIAkgICAgLy8gVW5tYXJzaGFsIGFuZCB2YWxpZGF0ZSBhbiBYTUxTaWduYXR1cmUgZnJvbSBhIERPTVZhbGlkYXRlQ29udGV4dAorICAgIAkgICAgc2lnbmF0dXJlID0gZmFjLnVubWFyc2hhbFhNTFNpZ25hdHVyZSh2Yyk7CisgICAgCSAgICBjb3JlVmFsaWRpdHkgPSBzaWduYXR1cmUudmFsaWRhdGUodmMpOworICAgIAkgICAgYXNzZXJ0VHJ1ZSgiQ29yZSB2YWxpZGl0eSBvZiB1bm1hcnNoYWxsZWQgWE1MU2lnbmF0dXJlIGlzIGZhbHNlIiwgCisJICAgICAgICBjb3JlVmFsaWRpdHkpOworICAgICAgICB9IGNhdGNoKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgZmFpbCgiRXhjZXB0aW9uOiAiICsgZXgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIERldGFjaGVkVGVzdCBkdCA9IG5ldyBEZXRhY2hlZFRlc3QoIiIpOworICAgICAgICBkdC50ZXN0KCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9EaWdlc3RNZXRob2RUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0RpZ2VzdE1ldGhvZFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDI2MzU2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9EaWdlc3RNZXRob2RUZXN0LmphdmEKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8udGVzdC5kc2lnOworCitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLio7CitpbXBvcnQgamF2YS5zZWN1cml0eS4qOworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLio7CisKKy8qKgorICogVW5pdCB0ZXN0IGZvciBqYXZheC54bWwuY3J5cHRvLmRzaWcuRGlnZXN0TWV0aG9kCisgKgorICogQHZlcnNpb24gJElkJAorICogQGF1dGhvciBWYWxlcmllIFBlbmcKKyAqLworcHVibGljIGNsYXNzIERpZ2VzdE1ldGhvZFRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgICBwcml2YXRlIFhNTFNpZ25hdHVyZUZhY3RvcnkgZmFjdG9yeTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBNRF9BTEdPU1tdID0geworCURpZ2VzdE1ldGhvZC5TSEExCisgICAgfTsKKworICAgIHB1YmxpYyBEaWdlc3RNZXRob2RUZXN0KCkgeworCXN1cGVyKCJEaWdlc3RNZXRob2RUZXN0Iik7CisgICAgfQorCisgICAgcHVibGljIERpZ2VzdE1ldGhvZFRlc3QoU3RyaW5nIG5hbWUpIHsKKwlzdXBlcihuYW1lKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24geyAKKwlmYWN0b3J5ID0gWE1MU2lnbmF0dXJlRmFjdG9yeS5nZXRJbnN0YW5jZQorICAgICAgICAgICAgKCJET00iLCBuZXcgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJKCkpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlYXJEb3duKCkgeyB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0aXNGZWF0dXJlU3VwcG9ydGVkKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJRGlnZXN0TWV0aG9kIGRtOworCWZvciAoaW50IGkgPSAwOyBpIDwgTURfQUxHT1MubGVuZ3RoOyBpKyspIHsKKwkgICAgU3RyaW5nIGFsZ28gPSBNRF9BTEdPU1tpXTsKKwkgICAgZG0gPSBmYWN0b3J5Lm5ld0RpZ2VzdE1ldGhvZChhbGdvLCBudWxsKTsJCisJICAgIHRyeSB7CisJCWRtLmlzRmVhdHVyZVN1cHBvcnRlZChudWxsKTsgCisJCWZhaWwoIlNob3VsZCByYWlzZSBhIE5QRSBmb3IgbnVsbCBmZWF0dXJlIik7IAorCSAgICB9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBucGUpIHt9CisJICAgIGFzc2VydFRydWUoIWRtLmlzRmVhdHVyZVN1cHBvcnRlZCgibm90IHN1cHBvcnRlZCIpKTsKKwl9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdENvbnN0cnVjdG9yKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJLy8gdGVzdCBEU2lnU3RydWN0dXJlRmFjdG9yeS5uZXdEaWdlc3RNZXRob2QKKwkvLyAoU3RyaW5nIGFsZ29yaXRobSwgQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyBwYXJhbXMpCisJLy8gZm9yIGdlbmVyYXRpbmcgRGlnZXN0TWV0aG9kIG9iamVjdHMKKwlEaWdlc3RNZXRob2QgZG07CisJZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9BTEdPUy5sZW5ndGg7IGkrKykgeworCSAgICBTdHJpbmcgYWxnbyA9IE1EX0FMR09TW2ldOworCSAgICBkbSA9IGZhY3RvcnkubmV3RGlnZXN0TWV0aG9kKGFsZ28sIG51bGwpOworCSAgICBhc3NlcnRFcXVhbHMoZG0uZ2V0QWxnb3JpdGhtKCksIGFsZ28pOworCisJICAgIGFzc2VydE51bGwoZG0uZ2V0UGFyYW1ldGVyU3BlYygpKTsKKwkgICAgdHJ5IHsKKwkJZG0gPSBmYWN0b3J5Lm5ld0RpZ2VzdE1ldGhvZChhbGdvLCAKKwkJCQkgIG5ldyBUZXN0VXRpbHMuTXlPd25EaWdlc3RNZXRob2RQYXJhbWV0ZXJTcGVjKCkpOworCQlmYWlsKCJTaG91bGQgcmFpc2UgYW4gSUFQRSBmb3IgaW52YWxpZCBwYXJhbWV0ZXJzIik7IAorCSAgICB9IGNhdGNoIChJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIGlhcGUpIHsKKwkgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJCWZhaWwoIlNob3VsZCByYWlzZSBhbiBJQVBFIGluc3RlYWQgb2YgIiArIGV4KTsKKwkgICAgfQorCX0KKworCXRyeSB7CisJICAgIGRtID0gZmFjdG9yeS5uZXdEaWdlc3RNZXRob2QoIm5vbi1leGlzdGVudCIsIAorCQkJCQkgbnVsbCk7IAorCSAgICBmYWlsKCJTaG91bGQgcmFpc2UgYW4gTlNBRSBmb3Igbm9uLWV4aXN0ZW50IGFsZ29zIik7IAorCX0gY2F0Y2ggKE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiBuc2FlKSB7fQorCisJdHJ5IHsKKwkgICAgZG0gPSBmYWN0b3J5Lm5ld0RpZ2VzdE1ldGhvZChudWxsLCBudWxsKTsgCisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhIE5QRSBmb3IgbnVsbCBhbGdvIik7IAorCX0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIG5wZSkge30KKyAgICB9ICAgIAorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9Ecml2ZXIuamF2YSBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvRHJpdmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTBiYzc1NQotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvRHJpdmVyLmphdmEKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by50ZXN0LmRzaWc7CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuQ2Fub25pY2FsaXphdGlvbk1ldGhvZDsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuWE1MU2lnbmF0dXJlRmFjdG9yeTsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuc3BlYy5DMTROTWV0aG9kUGFyYW1ldGVyU3BlYzsKKworLyoqCisgKiBVc2VkIGJ5IENsYXNzTG9hZGVyVGVzdAorICovCitwdWJsaWMgY2xhc3MgRHJpdmVyIHsKKworICAgIHB1YmxpYyB2b2lkIGRzaWcoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgICBYTUxTaWduYXR1cmVGYWN0b3J5IGZhYyA9IFhNTFNpZ25hdHVyZUZhY3RvcnkuZ2V0SW5zdGFuY2UKKyAgICAgICAgICAgICgiRE9NIiwgbmV3IG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tLlhNTERTaWdSSSgpKTsKKyAgICAgICAgbG9uZyBzdGFydCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8MTAwOyBpKyspIHsKKyAgICAgICAgZmFjLm5ld0Nhbm9uaWNhbGl6YXRpb25NZXRob2QKKyAgICAgICAgICAgIChDYW5vbmljYWxpemF0aW9uTWV0aG9kLkVYQ0xVU0lWRSwgKEMxNE5NZXRob2RQYXJhbWV0ZXJTcGVjKSBudWxsKTsKKyAgICAgICAgfQorICAgICAgICBsb25nIGVuZCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICBsb25nIGVsYXBzZWQgPSBlbmQtc3RhcnQ7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRWxhcHNlZDoiK2VsYXBzZWQpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImRzaWcgc3VjY2VlZGVkIik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9JYWlrQ29yZUZlYXR1cmVzVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9JYWlrQ29yZUZlYXR1cmVzVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1NjExMzQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0lhaWtDb3JlRmVhdHVyZXNUZXN0LmphdmEKQEAgLTAsMCArMSwxNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8udGVzdC5kc2lnOworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuc2VjdXJpdHkuU2VjdXJpdHk7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by4qOworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLio7CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuWE1MU2lnbmF0dXJlRmFjdG9yeTsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLnRlc3QuS2V5U2VsZWN0b3JzOworCisvKioKKyAqIFRoaXMgaXMgYSB0ZXN0Y2FzZSB0byB2YWxpZGF0ZSBhbGwgImNvcmVGZWF0dXJlcyIgCisgKiB0ZXN0Y2FzZXMgZnJvbSBJQUlLCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICovCitwdWJsaWMgY2xhc3MgSWFpa0NvcmVGZWF0dXJlc1Rlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgICBwcml2YXRlIFNpZ25hdHVyZVZhbGlkYXRvciB2YWxpZGF0b3I7CisgICAgcHJpdmF0ZSBTdHJpbmcgYmFzZTsKKworICAgIHN0YXRpYyB7CisgICAgICAgIFNlY3VyaXR5Lmluc2VydFByb3ZpZGVyQXQKKyAgICAgICAgICAgIChuZXcgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJKCksIDEpOworICAgIH0KKworICAgIHB1YmxpYyBJYWlrQ29yZUZlYXR1cmVzVGVzdChTdHJpbmcgbmFtZSkgeworICAgICAgICBzdXBlcihuYW1lKTsKKwlTdHJpbmcgZnMgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImZpbGUuc2VwYXJhdG9yIik7CisJYmFzZSA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpID09IG51bGwgPyAiLi8iOiBTeXN0ZW0uZ2V0UHJvcGVydHkoImJhc2VkaXIiKTsKKwliYXNlID0gYmFzZSArIGZzICsgImRhdGEiICsgZnMgKworCSAgICAiYXQiICsgZnMgKyAiaWFpayIgKyBmcyArICJpeHNpbCI7CisJdmFsaWRhdG9yID0gbmV3IFNpZ25hdHVyZVZhbGlkYXRvcihuZXcgRmlsZQorCSAgICAoYmFzZSwgImNvcmVGZWF0dXJlcy9zaWduYXR1cmVzIikpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2Fub255bW91c1JlZmVyZW5jZVNpZ25hdHVyZSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBTdHJpbmcgZmlsZSA9ICJhbm9ueW1vdXNSZWZlcmVuY2VTaWduYXR1cmUueG1sIjsKKworCWJvb2xlYW4gY29yZVZhbGlkaXR5ID0gdmFsaWRhdG9yLnZhbGlkYXRlCisJICAgIChmaWxlLCBuZXcgS2V5U2VsZWN0b3JzLktleVZhbHVlS2V5U2VsZWN0b3IoKSwgCisJICAgICBuZXcgTnVsbFVSSURlcmVmZXJlbmNlcihiYXNlKSk7CisJYXNzZXJ0VHJ1ZSgiU2lnbmF0dXJlIGZhaWxlZCBjb3JlIHZhbGlkYXRpb24iLCBjb3JlVmFsaWRpdHkpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X21hbmlmZXN0U2lnbmF0dXJlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBmaWxlID0gIm1hbmlmZXN0U2lnbmF0dXJlLnhtbCI7CisKKwlib29sZWFuIGNvcmVWYWxpZGl0eSA9IHZhbGlkYXRvci52YWxpZGF0ZQorCSAgICAoZmlsZSwgbmV3IEtleVNlbGVjdG9ycy5LZXlWYWx1ZUtleVNlbGVjdG9yKCkpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY29yZVZhbGlkaXR5KTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgdGVzdF9zaWduYXR1cmVUeXBlc1NpZ25hdHVyZSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBTdHJpbmcgZmlsZSA9ICJzaWduYXR1cmVUeXBlc1NpZ25hdHVyZS54bWwiOworCisJYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSB2YWxpZGF0b3IudmFsaWRhdGUKKwkgICAgKGZpbGUsIG5ldyBLZXlTZWxlY3RvcnMuS2V5VmFsdWVLZXlTZWxlY3RvcigpLAorCSAgICAgICAgICAgIG5ldyBPZmZsaW5lRGVyZWZlcmVuY2VyKCkpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY29yZVZhbGlkaXR5KTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIElhaWtDb3JlRmVhdHVyZXNUZXN0IGl0ID0gbmV3IElhaWtDb3JlRmVhdHVyZXNUZXN0KCIiKTsKKwlpdC50ZXN0X2Fub255bW91c1JlZmVyZW5jZVNpZ25hdHVyZSgpOworCWl0LnRlc3RfbWFuaWZlc3RTaWduYXR1cmUoKTsKKwlpdC50ZXN0X3NpZ25hdHVyZVR5cGVzU2lnbmF0dXJlKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgTnVsbFVSSURlcmVmZXJlbmNlciBpbXBsZW1lbnRzIFVSSURlcmVmZXJlbmNlciB7CisKKwlwcml2YXRlIE9jdGV0U3RyZWFtRGF0YSBvc2Q7CisKKwlOdWxsVVJJRGVyZWZlcmVuY2VyKFN0cmluZyBiYXNlKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkgICAgRmlsZSBjb250ZW50ID0gbmV3IEZpbGUKKwkJKGJhc2UsICJjb3JlRmVhdHVyZXMvc2FtcGxlcy9hbm9ueW1vdXNSZWZlcmVuY2VDb250ZW50LnhtbCIpOworCSAgICBvc2QgPSBuZXcgT2N0ZXRTdHJlYW1EYXRhKG5ldyBGaWxlSW5wdXRTdHJlYW0oY29udGVudCkpOworCX0KKworICAgICAgICBwdWJsaWMgRGF0YSBkZXJlZmVyZW5jZShVUklSZWZlcmVuY2UgdXJpUmVmZXJlbmNlLCAKKwkgICAgWE1MQ3J5cHRvQ29udGV4dCBjb250ZXh0KSB0aHJvd3MgVVJJUmVmZXJlbmNlRXhjZXB0aW9uIHsKKworCSAgICBpZiAodXJpUmVmZXJlbmNlLmdldFVSSSgpICE9IG51bGwpIHsKKwkJdGhyb3cgbmV3IFVSSVJlZmVyZW5jZUV4Y2VwdGlvbigibXVzdCBiZSBhIG51bGwgVVJJIik7CisJICAgIH0KKworCSAgICByZXR1cm4gb3NkOworCX0KKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgT2ZmbGluZURlcmVmZXJlbmNlciBpbXBsZW1lbnRzIFVSSURlcmVmZXJlbmNlciB7CisgICAgICAgIHByaXZhdGUgU3RyaW5nIHczY1JlYzsKKyAgICAgICAgcHJpdmF0ZSBVUklEZXJlZmVyZW5jZXIgZGVmYXVsdERlcmVmZXJlbmNlcjsKKworICAgICAgICBPZmZsaW5lRGVyZWZlcmVuY2VyKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgICAgICBTdHJpbmcgZnMgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImZpbGUuc2VwYXJhdG9yIik7CisgICAgICAgICAgICBTdHJpbmcgYmFzZSA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpID09IG51bGwgPyAiLi8iIDogCisgICAgICAgICAgICAgICAgU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIik7CisgICAgICAgICAgICB3M2NSZWMgPSBiYXNlICsgZnMgKyAiZGF0YSIgKyBmcyArICJvcmciICsgZnMgKyAidzNjIiArIGZzICsgInd3dyIgKyAKKyAgICAgICAgICAgICAgICBmcyArICJUUiIgKyBmcyArICIyMDAwIjsKKyAgICAgICAgICAgIGRlZmF1bHREZXJlZmVyZW5jZXIgPQorICAgICAgICAgICAgICAgIFhNTFNpZ25hdHVyZUZhY3RvcnkuZ2V0SW5zdGFuY2UoKS5nZXRVUklEZXJlZmVyZW5jZXIoKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBEYXRhIGRlcmVmZXJlbmNlKFVSSVJlZmVyZW5jZSB1cmlSZWZlcmVuY2UsIAorICAgICAgICAgICAgICAgIFhNTENyeXB0b0NvbnRleHQgY29udGV4dCkgdGhyb3dzIFVSSVJlZmVyZW5jZUV4Y2VwdGlvbiB7CisKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgaWYgKCJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAwL1JFQy14bWwtMjAwMDEwMDYiLmVxdWFscyh1cmlSZWZlcmVuY2UuZ2V0VVJJKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIEZpbGUgY29udGVudCA9IG5ldyBGaWxlKHczY1JlYywgIlJFQy14bWwtMjAwMDEwMDYiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBPY3RldFN0cmVhbURhdGEobmV3IEZpbGVJbnB1dFN0cmVhbShjb250ZW50KSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHREZXJlZmVyZW5jZXIuZGVyZWZlcmVuY2UodXJpUmVmZXJlbmNlLCBjb250ZXh0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGNhdGNoIChqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBVUklSZWZlcmVuY2VFeGNlcHRpb24oZXguZ2V0TWVzc2FnZSgpLCBleCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0lhaWtTaWduYXR1cmVBbGdvc1Rlc3QuamF2YSBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvSWFpa1NpZ25hdHVyZUFsZ29zVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyZTA2ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0lhaWtTaWduYXR1cmVBbGdvc1Rlc3QuamF2YQpAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IDIwMDYtMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8udGVzdC5kc2lnOworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuc2VjdXJpdHkuU2VjdXJpdHk7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLlhNTFNpZ25hdHVyZUV4Y2VwdGlvbjsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay4qOworCitpbXBvcnQgamF2YXgueG1sLmNyeXB0by50ZXN0LktleVNlbGVjdG9yczsKKworLyoqCisgKiBUaGlzIGlzIGEgdGVzdGNhc2UgdG8gdmFsaWRhdGUgYWxsICJzaWduYXR1cmVBbGdvcml0aG1zIiAKKyAqIHRlc3RjYXNlcyBmcm9tIElBSUsKKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKi8KK3B1YmxpYyBjbGFzcyBJYWlrU2lnbmF0dXJlQWxnb3NUZXN0IGV4dGVuZHMgVGVzdENhc2UgeworCisgICAgcHJpdmF0ZSBTaWduYXR1cmVWYWxpZGF0b3IgdmFsaWRhdG9yOworCisgICAgc3RhdGljIHsKKyAgICAgICAgU2VjdXJpdHkuaW5zZXJ0UHJvdmlkZXJBdAorICAgICAgICAgICAgKG5ldyBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbS5YTUxEU2lnUkkoKSwgMSk7CisgICAgfQorCisgICAgcHVibGljIElhaWtTaWduYXR1cmVBbGdvc1Rlc3QoU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgc3VwZXIobmFtZSk7CisJU3RyaW5nIGZzID0gU3lzdGVtLmdldFByb3BlcnR5KCJmaWxlLnNlcGFyYXRvciIpOworCVN0cmluZyBiYXNlID0gU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIikgPT0gbnVsbCA/ICIuLyI6IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpOworCWJhc2UgKz0gIGZzICsgImRhdGEiICsgZnMKKwkgICAgKyAiYXQiICsgZnMgKyAiaWFpayIgKyBmcyArICJpeHNpbCI7CisJdmFsaWRhdG9yID0gbmV3IFNpZ25hdHVyZVZhbGlkYXRvcihuZXcgRmlsZQorCSAgICAoYmFzZSwgInNpZ25hdHVyZUFsZ29yaXRobXMvc2lnbmF0dXJlcyIpKTsKKyAgICB9CisgICAgcHVibGljIHZvaWQgdGVzdF9kc2FTaWduYXR1cmUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgU3RyaW5nIGZpbGUgPSAiZFNBU2lnbmF0dXJlLnhtbCI7CisKKwlib29sZWFuIGNvcmVWYWxpZGl0eSA9IHZhbGlkYXRvci52YWxpZGF0ZShmaWxlLCBuZXcgCisJICAgIEtleVNlbGVjdG9ycy5LZXlWYWx1ZUtleVNlbGVjdG9yKCkpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY29yZVZhbGlkaXR5KTsKKyAgICB9CisgICAgcHVibGljIHZvaWQgdGVzdF9yc2FTaWduYXR1cmUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgU3RyaW5nIGZpbGUgPSAiclNBU2lnbmF0dXJlLnhtbCI7CisKKwlib29sZWFuIGNvcmVWYWxpZGl0eSA9IHZhbGlkYXRvci52YWxpZGF0ZShmaWxlLCBuZXcgCisJICAgIEtleVNlbGVjdG9ycy5LZXlWYWx1ZUtleVNlbGVjdG9yKCkpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY29yZVZhbGlkaXR5KTsKKyAgICB9CisgICAgcHVibGljIHZvaWQgdGVzdF9obWFjU2hvcnRTaWduYXR1cmUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgU3RyaW5nIGZpbGUgPSAiaE1BQ1Nob3J0U2lnbmF0dXJlLnhtbCI7CisKKyAgICAgICAgdHJ5IHsKKwkgICAgYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSB2YWxpZGF0b3IudmFsaWRhdGUoZmlsZSwgbmV3IAorCSAgICAgICAgS2V5U2VsZWN0b3JzLlNlY3JldEtleVNlbGVjdG9yKCJzZWNyZXQiLmdldEJ5dGVzKCJBU0NJSSIpKSk7CisgICAgICAgICAgICBmYWlsKCJFeHBlY3RlZCBITUFDT3V0cHV0TGVuZ3RoIEV4Y2VwdGlvbiIpOworICAgICAgICB9IGNhdGNoIChYTUxTaWduYXR1cmVFeGNlcHRpb24geHNlKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oeHNlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICAvLyBwYXNzCisgICAgICAgIH0KKyAgICB9CisgICAgcHVibGljIHZvaWQgdGVzdF9obWFjU2lnbmF0dXJlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBmaWxlID0gImhNQUNTaWduYXR1cmUueG1sIjsKKworCWJvb2xlYW4gY29yZVZhbGlkaXR5ID0gdmFsaWRhdG9yLnZhbGlkYXRlKGZpbGUsIG5ldworCSAgICBLZXlTZWxlY3RvcnMuU2VjcmV0S2V5U2VsZWN0b3IoInNlY3JldCIuZ2V0Qnl0ZXMoIkFTQ0lJIikpKTsKKwlhc3NlcnRUcnVlKCJTaWduYXR1cmUgZmFpbGVkIGNvcmUgdmFsaWRhdGlvbiIsIGNvcmVWYWxpZGl0eSk7CisgICAgfQorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBJYWlrU2lnbmF0dXJlQWxnb3NUZXN0IGl0ID0gbmV3IElhaWtTaWduYXR1cmVBbGdvc1Rlc3QoIiIpOworCWl0LnRlc3RfZHNhU2lnbmF0dXJlKCk7CisJaXQudGVzdF9yc2FTaWduYXR1cmUoKTsKKwlpdC50ZXN0X2htYWNTaG9ydFNpZ25hdHVyZSgpOworCWl0LnRlc3RfaG1hY1NpZ25hdHVyZSgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvSWFpa1RyYW5zZm9ybXNUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0lhaWtUcmFuc2Zvcm1zVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczYjFjZDIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0lhaWtUcmFuc2Zvcm1zVGVzdC5qYXZhCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8udGVzdC5kc2lnOworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuc2VjdXJpdHkuU2VjdXJpdHk7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuKjsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8udGVzdC5LZXlTZWxlY3RvcnM7CisKKy8qKgorICogVGhpcyBpcyBhIHRlc3RjYXNlIHRvIHZhbGlkYXRlIGFsbCAidHJhbnNmb3JtcyIgCisgKiB0ZXN0Y2FzZXMgZnJvbSBJQUlLCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICovCitwdWJsaWMgY2xhc3MgSWFpa1RyYW5zZm9ybXNUZXN0IGV4dGVuZHMgVGVzdENhc2UgeworCisgICAgcHJpdmF0ZSBTaWduYXR1cmVWYWxpZGF0b3IgdmFsaWRhdG9yOworCisgICAgc3RhdGljIHsKKyAgICAgICAgU2VjdXJpdHkuaW5zZXJ0UHJvdmlkZXJBdAorICAgICAgICAgICAgKG5ldyBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbS5YTUxEU2lnUkkoKSwgMSk7CisgICAgfQorCisgICAgcHVibGljIElhaWtUcmFuc2Zvcm1zVGVzdChTdHJpbmcgbmFtZSkgeworICAgICAgICBzdXBlcihuYW1lKTsKKwlTdHJpbmcgZnMgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImZpbGUuc2VwYXJhdG9yIik7CisJU3RyaW5nIGJhc2UgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImJhc2VkaXIiKSA9PSBudWxsID8gIi4vIjogU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIik7CisJYmFzZSArPSAgZnMgKyAiZGF0YSIgKyBmcyArCisJICAgICJhdCIgKyBmcyArICJpYWlrIiArIGZzICsgIml4c2lsIjsKKwl2YWxpZGF0b3IgPSBuZXcgU2lnbmF0dXJlVmFsaWRhdG9yKG5ldyBGaWxlCisJICAgIChiYXNlLCAidHJhbnNmb3Jtcy9zaWduYXR1cmVzIikpOworICAgIH0KKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2Jhc2U2NERlY29kZVNpZ25hdHVyZSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBTdHJpbmcgZmlsZSA9ICJiYXNlNjREZWNvZGVTaWduYXR1cmUueG1sIjsKKworCWJvb2xlYW4gY29yZVZhbGlkaXR5ID0gdmFsaWRhdG9yLnZhbGlkYXRlCisJICAgIChmaWxlLCBuZXcgS2V5U2VsZWN0b3JzLktleVZhbHVlS2V5U2VsZWN0b3IoKSk7CisJYXNzZXJ0VHJ1ZSgiU2lnbmF0dXJlIGZhaWxlZCBjb3JlIHZhbGlkYXRpb24iLCBjb3JlVmFsaWRpdHkpOworCisgICAgfQorICAgIHB1YmxpYyB2b2lkIHRlc3RfZW52ZWxvcGVkU2lnbmF0dXJlU2lnbmF0dXJlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBmaWxlID0gImVudmVsb3BlZFNpZ25hdHVyZVNpZ25hdHVyZS54bWwiOworCisJYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSB2YWxpZGF0b3IudmFsaWRhdGUKKwkgICAgKGZpbGUsIG5ldyBLZXlTZWxlY3RvcnMuS2V5VmFsdWVLZXlTZWxlY3RvcigpKTsKKwlhc3NlcnRUcnVlKCJTaWduYXR1cmUgZmFpbGVkIGNvcmUgdmFsaWRhdGlvbiIsIGNvcmVWYWxpZGl0eSk7CisgICAgfQorICAgIHB1YmxpYyB2b2lkIHRlc3RfYzE0blNpZ25hdHVyZSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBTdHJpbmcgZmlsZSA9ICJjMTRuU2lnbmF0dXJlLnhtbCI7CisKKwlib29sZWFuIGNvcmVWYWxpZGl0eSA9IHZhbGlkYXRvci52YWxpZGF0ZQorCSAgICAoZmlsZSwgbmV3IEtleVNlbGVjdG9ycy5LZXlWYWx1ZUtleVNlbGVjdG9yKCkpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY29yZVZhbGlkaXR5KTsKKyAgICB9CisgICAgcHVibGljIHZvaWQgdGVzdF94UGF0aFNpZ25hdHVyZSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBTdHJpbmcgZmlsZSA9ICJ4UGF0aFNpZ25hdHVyZS54bWwiOworCisJYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSB2YWxpZGF0b3IudmFsaWRhdGUKKwkgICAgKGZpbGUsIG5ldyBLZXlTZWxlY3RvcnMuS2V5VmFsdWVLZXlTZWxlY3RvcigpKTsKKwlhc3NlcnRUcnVlKCJTaWduYXR1cmUgZmFpbGVkIGNvcmUgdmFsaWRhdGlvbiIsIGNvcmVWYWxpZGl0eSk7CisgICAgfQorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBJYWlrVHJhbnNmb3Jtc1Rlc3QgaXQgPSBuZXcgSWFpa1RyYW5zZm9ybXNUZXN0KCIiKTsKKwlpdC50ZXN0X3hQYXRoU2lnbmF0dXJlKCk7CisJaXQudGVzdF9jMTRuU2lnbmF0dXJlKCk7CisJaXQudGVzdF9iYXNlNjREZWNvZGVTaWduYXR1cmUoKTsKKwlpdC50ZXN0X2VudmVsb3BlZFNpZ25hdHVyZVNpZ25hdHVyZSgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvSW50ZXJvcEMxNG5UZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0ludGVyb3BDMTRuVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ZDNiOTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0ludGVyb3BDMTRuVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTI3IEBACisvKgorICogQ29weXJpZ2h0IDIwMDYgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLnRlc3QuZHNpZzsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlNlY3VyaXR5OworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLio7CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLnRlc3QuS2V5U2VsZWN0b3JzOworCisvKioKKyAqIFRoaXMgaXMgYSB0ZXN0Y2FzZSB0byB2YWxpZGF0ZSBhbGwgImMxNG4iIHRlc3RjYXNlcworICogdW5kZXIgZGF0YS92ZWN0b3JzL2ludGVyb3AgZGlyZWN0b3J5CisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICovCitwdWJsaWMgY2xhc3MgSW50ZXJvcEMxNG5UZXN0IGV4dGVuZHMgVGVzdENhc2UgeworCisgICAgcHJpdmF0ZSBTaWduYXR1cmVWYWxpZGF0b3IgdmFsaWRhdG9yID0gbnVsbDsKKyAgICBwcml2YXRlIFN0cmluZyBiYXNlOworCisgICAgc3RhdGljIHsKKyAgICAgICAgU2VjdXJpdHkuaW5zZXJ0UHJvdmlkZXJBdAorICAgICAgICAgICAgKG5ldyBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbS5YTUxEU2lnUkkoKSwgMSk7CisgICAgfQorCisgICAgcHVibGljIEludGVyb3BDMTRuVGVzdChTdHJpbmcgbmFtZSkgeworICAgICAgICBzdXBlcihuYW1lKTsKKwlTdHJpbmcgZnMgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImZpbGUuc2VwYXJhdG9yIik7CisJYmFzZSA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpID09IG51bGwgPyAiLi8iOiBTeXN0ZW0uZ2V0UHJvcGVydHkoImJhc2VkaXIiKTsJCisJYmFzZSA9IGJhc2UgKyBmcyArICJkYXRhIiArIGZzICsgImludGVyb3AiOworICAgIH0KKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3kxX2V4Y19zaWduYXR1cmUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwl2YWxpZGF0b3IgPSBuZXcgU2lnbmF0dXJlVmFsaWRhdG9yKG5ldyBGaWxlKGJhc2UsICJjMTRuL1kxIikpOworICAgICAgICBTdHJpbmcgZmlsZSA9ICJleGMtc2lnbmF0dXJlLnhtbCI7CisKKwlib29sZWFuIGNvcmVWYWxpZGl0eSA9IHZhbGlkYXRvci52YWxpZGF0ZQorCSAgICAoZmlsZSwgbmV3IEtleVNlbGVjdG9ycy5LZXlWYWx1ZUtleVNlbGVjdG9yKCkpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY29yZVZhbGlkaXR5KTsKKworICAgIH0KKyAgICAvKiBDT01NRU5URUQgT1VUIHNpbmNlIHRoaXMgdGVzdCByZXF1aXJlcyBNRDUgc3VwcG9ydAorICAgIHB1YmxpYyB2b2lkIHRlc3RfeTJfc2lnbmF0dXJlX2pvc2VwaF9leGMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwl2YWxpZGF0b3IgPSBuZXcgU2lnbmF0dXJlVmFsaWRhdG9yKG5ldyBGaWxlKGJhc2UsICJjMTRuL1kyIikpOworICAgICAgICBTdHJpbmcgZmlsZSA9ICJzaWduYXR1cmUtam9zZXBoLWV4Yy54bWwiOworCisJYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSB2YWxpZGF0b3IudmFsaWRhdGUKKwkgICAgKGZpbGUsIG5ldyBLZXlTZWxlY3RvcnMuS2V5VmFsdWVLZXlTZWxlY3RvcigpKTsKKwlhc3NlcnRUcnVlKCJTaWduYXR1cmUgZmFpbGVkIGNvcmUgdmFsaWRhdGlvbiIsIGNvcmVWYWxpZGl0eSk7CisgICAgfQorICAgICovCisgICAgcHVibGljIHZvaWQgdGVzdF95M19zaWduYXR1cmUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwl2YWxpZGF0b3IgPSBuZXcgU2lnbmF0dXJlVmFsaWRhdG9yKG5ldyBGaWxlKGJhc2UsICJjMTRuL1kzIikpOworICAgICAgICBTdHJpbmcgZmlsZSA9ICJzaWduYXR1cmUueG1sIjsKKworCWJvb2xlYW4gY29yZVZhbGlkaXR5ID0gdmFsaWRhdG9yLnZhbGlkYXRlCisJICAgIChmaWxlLCBuZXcgS2V5U2VsZWN0b3JzLktleVZhbHVlS2V5U2VsZWN0b3IoKSk7CisJYXNzZXJ0VHJ1ZSgiU2lnbmF0dXJlIGZhaWxlZCBjb3JlIHZhbGlkYXRpb24jMSIsIGNvcmVWYWxpZGl0eSk7CisKKwljb3JlVmFsaWRpdHkgPSB2YWxpZGF0b3IudmFsaWRhdGUKKwkgICAgKGZpbGUsIG5ldyBLZXlTZWxlY3RvcnMuUmF3WDUwOUtleVNlbGVjdG9yKCkpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIzIiLCBjb3JlVmFsaWRpdHkpOworICAgIH0KKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3k0X3NpZ25hdHVyZSgpIHRocm93cyBFeGNlcHRpb24geworCXZhbGlkYXRvciA9IG5ldyBTaWduYXR1cmVWYWxpZGF0b3IobmV3IEZpbGUoYmFzZSwgImMxNG4vWTQiKSk7CisgICAgICAgIFN0cmluZyBmaWxlID0gInNpZ25hdHVyZS54bWwiOworCisJYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSB2YWxpZGF0b3IudmFsaWRhdGUKKwkgICAgKGZpbGUsIG5ldyBLZXlTZWxlY3RvcnMuS2V5VmFsdWVLZXlTZWxlY3RvcigpKTsKKwlhc3NlcnRUcnVlKCJTaWduYXR1cmUgZmFpbGVkIGNvcmUgdmFsaWRhdGlvbiMxIiwgY29yZVZhbGlkaXR5KTsKKworCWNvcmVWYWxpZGl0eSA9IHZhbGlkYXRvci52YWxpZGF0ZQorCSAgICAoZmlsZSwgbmV3IEtleVNlbGVjdG9ycy5SYXdYNTA5S2V5U2VsZWN0b3IoKSk7CisJYXNzZXJ0VHJ1ZSgiU2lnbmF0dXJlIGZhaWxlZCBjb3JlIHZhbGlkYXRpb24jMiIsIGNvcmVWYWxpZGl0eSk7CisgICAgfQorICAgIHB1YmxpYyB2b2lkIHRlc3RfeTVfc2lnbmF0dXJlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJdmFsaWRhdG9yID0gbmV3IFNpZ25hdHVyZVZhbGlkYXRvcihuZXcgRmlsZShiYXNlLCAiYzE0bi9ZNSIpKTsKKyAgICAgICAgU3RyaW5nIGZpbGUgPSAic2lnbmF0dXJlLnhtbCI7CisKKwlib29sZWFuIGNvcmVWYWxpZGl0eSA9IHZhbGlkYXRvci52YWxpZGF0ZQorCSAgICAoZmlsZSwgbmV3IEtleVNlbGVjdG9ycy5LZXlWYWx1ZUtleVNlbGVjdG9yKCkpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIzEiLCBjb3JlVmFsaWRpdHkpOworCisJY29yZVZhbGlkaXR5ID0gdmFsaWRhdG9yLnZhbGlkYXRlCisJICAgIChmaWxlLCBuZXcgS2V5U2VsZWN0b3JzLlJhd1g1MDlLZXlTZWxlY3RvcigpKTsKKwlhc3NlcnRUcnVlKCJTaWduYXR1cmUgZmFpbGVkIGNvcmUgdmFsaWRhdGlvbiMyIiwgY29yZVZhbGlkaXR5KTsKKyAgICB9CisgICAgcHVibGljIHZvaWQgdGVzdF95NV9zaWduYXR1cmVDb21tZW50ZWQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwl2YWxpZGF0b3IgPSBuZXcgU2lnbmF0dXJlVmFsaWRhdG9yKG5ldyBGaWxlKGJhc2UsICJjMTRuL1k1IikpOworICAgICAgICBTdHJpbmcgZmlsZSA9ICJzaWduYXR1cmVDb21tZW50ZWQueG1sIjsKKworCWJvb2xlYW4gY29yZVZhbGlkaXR5ID0gdmFsaWRhdG9yLnZhbGlkYXRlCisJICAgIChmaWxlLCBuZXcgS2V5U2VsZWN0b3JzLktleVZhbHVlS2V5U2VsZWN0b3IoKSk7CisJYXNzZXJ0VHJ1ZSgiU2lnbmF0dXJlIGZhaWxlZCBjb3JlIHZhbGlkYXRpb24jMSIsIGNvcmVWYWxpZGl0eSk7CisKKwljb3JlVmFsaWRpdHkgPSB2YWxpZGF0b3IudmFsaWRhdGUKKwkgICAgKGZpbGUsIG5ldyBLZXlTZWxlY3RvcnMuUmF3WDUwOUtleVNlbGVjdG9yKCkpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIzIiLCBjb3JlVmFsaWRpdHkpOworICAgIH0KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgSW50ZXJvcEMxNG5UZXN0IGl0ID0gbmV3IEludGVyb3BDMTRuVGVzdCgiIik7CisJaXQudGVzdF95MV9leGNfc2lnbmF0dXJlKCk7CisJLy9pdC50ZXN0X3kyX3NpZ25hdHVyZV9qb3NlcGhfZXhjKCk7CisJaXQudGVzdF95M19zaWduYXR1cmUoKTsKKwlpdC50ZXN0X3k0X3NpZ25hdHVyZSgpOworCWl0LnRlc3RfeTVfc2lnbmF0dXJlKCk7CisJaXQudGVzdF95NV9zaWduYXR1cmVDb21tZW50ZWQoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0ludGVyb3BYTUxEU2lnMTFUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL0ludGVyb3BYTUxEU2lnMTFUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE4NzNhZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvSW50ZXJvcFhNTERTaWcxMVRlc3QuamF2YQpAQCAtMCwwICsxLDE1NCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDEwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by50ZXN0LmRzaWc7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5zZWN1cml0eS5TZWN1cml0eTsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLktleVNlbGVjdG9yOworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLio7CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLnRlc3QuS2V5U2VsZWN0b3JzOworCisvKioKKyAqIFRoaXMgaXMgYSB0ZXN0Y2FzZSB0byB2YWxpZGF0ZSBhbGwgdGhlIFczQyB4bWxkc2lnIFhNTERTaWcxMSB0ZXN0Y2FzZXMuCisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICovCitwdWJsaWMgY2xhc3MgSW50ZXJvcFhNTERTaWcxMVRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgICBwcml2YXRlIFNpZ25hdHVyZVZhbGlkYXRvciB2YWxpZGF0b3I7CisgICAgcHJpdmF0ZSBGaWxlIGRpcjsKKyAgICBwcml2YXRlIEtleVNlbGVjdG9yIGt2a3MsIHNrczsKKworICAgIHN0YXRpYyB7CisgICAgICAgIFNlY3VyaXR5Lmluc2VydFByb3ZpZGVyQXQKKyAgICAgICAgICAgIChuZXcgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJKCksIDEpOworICAgIH0KKworICAgIHB1YmxpYyBJbnRlcm9wWE1MRFNpZzExVGVzdChTdHJpbmcgbmFtZSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHN1cGVyKG5hbWUpOworICAgICAgICBTdHJpbmcgZnMgPSBGaWxlLnNlcGFyYXRvcjsKKyAgICAgICAgU3RyaW5nIGJhc2UgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImJhc2VkaXIiKSA9PSBudWxsCisgICAgICAgICAgICA/ICIuLyI6IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpOworICAgIAlkaXIgPSBuZXcgRmlsZShiYXNlICsgZnMgKyAiZGF0YSIgKyBmcworICAgICAgICAgICAgKyAib3JnIiArIGZzICsgInczYyIgKyBmcyArICJ3d3ciICsgZnMKKwkgICAgKyAiaW50ZXJvcCIgKyBmcyArICJ4bWxkc2lnMTEiKTsKKyAgICAgICAgdmFsaWRhdG9yID0gbmV3IFNpZ25hdHVyZVZhbGlkYXRvcihkaXIpOworCWt2a3MgPSBuZXcgS2V5U2VsZWN0b3JzLktleVZhbHVlS2V5U2VsZWN0b3IoKTsKKwlza3MgPSBuZXcgS2V5U2VsZWN0b3JzLlNlY3JldEtleVNlbGVjdG9yKCJ0ZXN0a2V5Ii5nZXRCeXRlcygiQVNDSUkiKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9lbnZlbG9waW5nX3AyNTZfc2hhMSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICB0ZXN0X3htbGRzaWcxMSgic2lnbmF0dXJlLWVudmVsb3BpbmctcDI1Nl9zaGExIiwgIm9yYWNsZSIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RfZW52ZWxvcGluZ19wMjU2X3NoYTI1NigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICB0ZXN0X3htbGRzaWcxMSgic2lnbmF0dXJlLWVudmVsb3BpbmctcDI1Nl9zaGEyNTYiLCAib3JhY2xlIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9lbnZlbG9waW5nX3AyNTZfc2hhMzg0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHRlc3RfeG1sZHNpZzExKCJzaWduYXR1cmUtZW52ZWxvcGluZy1wMjU2X3NoYTM4NCIsICJvcmFjbGUiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2VudmVsb3BpbmdfcDI1Nl9zaGE1MTIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF94bWxkc2lnMTEoInNpZ25hdHVyZS1lbnZlbG9waW5nLXAyNTZfc2hhNTEyIiwgIm9yYWNsZSIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RfZW52ZWxvcGluZ19wMzg0X3NoYTEoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF94bWxkc2lnMTEoInNpZ25hdHVyZS1lbnZlbG9waW5nLXAzODRfc2hhMSIsICJvcmFjbGUiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2VudmVsb3BpbmdfcDM4NF9zaGEyNTYoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF94bWxkc2lnMTEoInNpZ25hdHVyZS1lbnZlbG9waW5nLXAzODRfc2hhMjU2IiwgIm9yYWNsZSIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RfZW52ZWxvcGluZ19wMzg0X3NoYTM4NCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICB0ZXN0X3htbGRzaWcxMSgic2lnbmF0dXJlLWVudmVsb3BpbmctcDM4NF9zaGEzODQiLCAib3JhY2xlIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9lbnZlbG9waW5nX3AzODRfc2hhNTEyKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHRlc3RfeG1sZHNpZzExKCJzaWduYXR1cmUtZW52ZWxvcGluZy1wMzg0X3NoYTUxMiIsICJvcmFjbGUiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2VudmVsb3BpbmdfcDUyMV9zaGExKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHRlc3RfeG1sZHNpZzExKCJzaWduYXR1cmUtZW52ZWxvcGluZy1wNTIxX3NoYTEiLCAib3JhY2xlIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9lbnZlbG9waW5nX3A1MjFfc2hhMjU2KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHRlc3RfeG1sZHNpZzExKCJzaWduYXR1cmUtZW52ZWxvcGluZy1wNTIxX3NoYTI1NiIsICJvcmFjbGUiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2VudmVsb3BpbmdfcDUyMV9zaGEzODQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF94bWxkc2lnMTEoInNpZ25hdHVyZS1lbnZlbG9waW5nLXA1MjFfc2hhMzg0IiwgIm9yYWNsZSIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RfZW52ZWxvcGluZ19wNTIxX3NoYTUxMigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICB0ZXN0X3htbGRzaWcxMSgic2lnbmF0dXJlLWVudmVsb3BpbmctcDUyMV9zaGE1MTIiLCAib3JhY2xlIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9lbnZlbG9waW5nX3JzYV9zaGEyNTYoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF94bWxkc2lnMTEoInNpZ25hdHVyZS1lbnZlbG9waW5nLXJzYS1zaGEyNTYiLCAib3JhY2xlIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9lbnZlbG9waW5nX3JzYV9zaGEzODQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF94bWxkc2lnMTEoInNpZ25hdHVyZS1lbnZlbG9waW5nLXJzYV9zaGEzODQiLCAib3JhY2xlIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9lbnZlbG9waW5nX3JzYV9zaGE1MTIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF94bWxkc2lnMTEoInNpZ25hdHVyZS1lbnZlbG9waW5nLXJzYV9zaGE1MTIiLCAib3JhY2xlIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9lbnZlbG9waW5nX3NoYTI1Nl9yc2Ffc2hhMjU2KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHRlc3RfeG1sZHNpZzExKCJzaWduYXR1cmUtZW52ZWxvcGluZy1zaGEyNTYtcnNhLXNoYTI1NiIsICJvcmFjbGUiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2VudmVsb3Bpbmdfc2hhMzg0X3JzYV9zaGEyNTYoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF94bWxkc2lnMTEoInNpZ25hdHVyZS1lbnZlbG9waW5nLXNoYTM4NC1yc2Ffc2hhMjU2IiwgIm9yYWNsZSIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RfZW52ZWxvcGluZ19zaGE1MTJfcnNhX3NoYTI1NigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICB0ZXN0X3htbGRzaWcxMSgic2lnbmF0dXJlLWVudmVsb3Bpbmctc2hhNTEyLXJzYV9zaGEyNTYiLCAib3JhY2xlIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9lbnZlbG9waW5nX2htYWNfc2hhMjU2KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHRlc3RfeG1sZHNpZzExKCJzaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTI1NiIsIHNrcywgIm9yYWNsZSIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RfZW52ZWxvcGluZ19obWFjX3NoYTM4NCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICB0ZXN0X3htbGRzaWcxMSgic2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGEzODQiLCBza3MsICJvcmFjbGUiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2VudmVsb3BpbmdfaG1hY19zaGE1MTIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdF94bWxkc2lnMTEoInNpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhNTEyIiwgc2tzLCAib3JhY2xlIik7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHRlc3RfeG1sZHNpZzExKFN0cmluZyB0ZXN0LCBTdHJpbmcgdmVuZG9yKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgU3RyaW5nIGZpbGUgPSB2ZW5kb3IgKyBGaWxlLnNlcGFyYXRvciArIHRlc3QgKyAiLnhtbCI7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVmFsaWRhdGluZyAiICsgZmlsZSk7CisgICAgICAgIGJvb2xlYW4gY29yZVZhbGlkaXR5ID0gdmFsaWRhdG9yLnZhbGlkYXRlKGZpbGUsIGt2a3MpOworICAgICAgICBhc3NlcnRUcnVlKGZpbGUgKyAiIGZhaWxlZCBjb3JlIHZhbGlkYXRpb24iLCBjb3JlVmFsaWRpdHkpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB0ZXN0X3htbGRzaWcxMShTdHJpbmcgdGVzdCwgS2V5U2VsZWN0b3Iga3MsIFN0cmluZyB2ZW5kb3IpIAorICAgICAgICB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgU3RyaW5nIGZpbGUgPSB2ZW5kb3IgKyBGaWxlLnNlcGFyYXRvciArIHRlc3QgKyAiLnhtbCI7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVmFsaWRhdGluZyAiICsgZmlsZSk7CisgICAgICAgIGJvb2xlYW4gY29yZVZhbGlkaXR5ID0gdmFsaWRhdG9yLnZhbGlkYXRlKGZpbGUsIGtzKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShmaWxlICsgIiBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY29yZVZhbGlkaXR5KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL01hbmlmZXN0VGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9NYW5pZmVzdFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTA2OGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9NYW5pZmVzdFRlc3QuamF2YQpAQCAtMCwwICsxLDE3MSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA2IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by50ZXN0LmRzaWc7CisKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay4qOworCisvKioKKyAqIFVuaXQgdGVzdCBmb3IgamF2YXgueG1sLmNyeXB0by5kc2lnLk1hbmlmZXN0CisgKgorICogQHZlcnNpb24gJElkJAorICogQGF1dGhvciBWYWxlcmllIFBlbmcKKyAqLworcHVibGljIGNsYXNzIE1hbmlmZXN0VGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKyAgICBwcml2YXRlIFhNTFNpZ25hdHVyZUZhY3RvcnkgZmFjOworCisgICAgcHJpdmF0ZSBzdGF0aWMgUmVmZXJlbmNlIFZBTElEX1JFRiA9IG5ldyAKKwlUZXN0VXRpbHMuTXlPd25ET01SZWZlcmVuY2UoInJlZiMxIiwgdHJ1ZSk7CisgICAgcHJpdmF0ZSBzdGF0aWMgUmVmZXJlbmNlIElOVkFMSURfUkVGID0gbmV3IAorCVRlc3RVdGlscy5NeU93bkRPTVJlZmVyZW5jZSgicmVmIzIiLCBmYWxzZSk7CisKKyAgICBwdWJsaWMgTWFuaWZlc3RUZXN0KCkgeworCXN1cGVyKCJNYW5pZmVzdFRlc3QiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgTWFuaWZlc3RUZXN0KFN0cmluZyBuYW1lKSB7CisJc3VwZXIobmFtZSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZmFjID0gWE1MU2lnbmF0dXJlRmFjdG9yeS5nZXRJbnN0YW5jZQorICAgICAgICAgICAgKCJET00iLCBuZXcgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJKCkpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlYXJEb3duKCkge30KKworICAgIHB1YmxpYyB2b2lkIHRlc3RDb25zdHJ1Y3RvcigpIHRocm93cyBFeGNlcHRpb24geworCU1hbmlmZXN0IG1hbiA9IG51bGw7CisJU3RyaW5nIGlkID0gIm1hbmlmZXN0X2lkIjsKKwlMaXN0IHJlZnMgPSBuZXcgVmVjdG9yKCk7CisJLy8gdGVzdCBYTUxTaWduYXR1cmVGYWN0b3J5Lm5ld01hbmlmZXN0KExpc3QgcmVmZXJlbmNlcykKKwkvLyBhbmQgIFhNTFNpZ25hdHVyZUZhY3RvcnkubmV3TWFuaWZlc3QoTGlzdCByZWZlcmVuY2VzLCAKKwkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBpZCkKKwkvLyBmb3IgZ2VuZXJhdGluZyBNYW5pZmVzdCBvYmplY3RzCisJcmVmcy5hZGQoVkFMSURfUkVGKTsKKwlyZWZzLmFkZChJTlZBTElEX1JFRik7CisJZm9yIChpbnQgaSA9IDA7IGkgPCAzOyBpKyspIHsKKwkgICAgU3RyaW5nIGV4cGVjdGVkSWQgPSBudWxsOworCSAgICBzd2l0Y2ggKGkpIHsKKwkgICAgY2FzZSAwOgorCQltYW4gPSBmYWMubmV3TWFuaWZlc3QocmVmcyk7CisJCWJyZWFrOworCSAgICBjYXNlIDE6CisJCW1hbiA9IGZhYy5uZXdNYW5pZmVzdChyZWZzLCBudWxsKTsKKwkJYnJlYWs7CisJICAgIGNhc2UgMjoKKwkJbWFuID0gZmFjLm5ld01hbmlmZXN0KHJlZnMsIGlkKTsKKwkJZXhwZWN0ZWRJZCA9IGlkOworCQlicmVhazsKKwkgICAgfQkJCisJICAgIGFzc2VydE5vdE51bGwobWFuKTsKKwkgICAgYXNzZXJ0VHJ1ZShBcnJheXMuZXF1YWxzKG1hbi5nZXRSZWZlcmVuY2VzKCkudG9BcnJheSgpLAorCQkJCSAgICAgcmVmcy50b0FycmF5KCkpKTsKKwkgICAgYXNzZXJ0RXF1YWxzKG1hbi5nZXRJZCgpLCBleHBlY3RlZElkKTsKKwl9CisJdHJ5IHsKKwkgICAgbWFuID0gZmFjLm5ld01hbmlmZXN0KG51bGwpOworCSAgICBmYWlsKCJTaG91bGQgdGhyb3cgYSBOUEUgZm9yIG51bGwgcmVmZXJlbmNlcyIpOworCX0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIG5wZSkgeworCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworCSAgICBmYWlsKCJTaG91bGQgdGhyb3cgYSBOUEUgaW5zdGVhZCBvZiAiICsgZXggKyAKKwkJICIgZm9yIG51bGwgcmVmZXJlbmNlcyIpOworCX0KKwl0cnkgeworCSAgICBtYW4gPSBmYWMubmV3TWFuaWZlc3QobnVsbCwgaWQpOworCSAgICBmYWlsKCJTaG91bGQgdGhyb3cgYSBOUEUgZm9yIG51bGwgcmVmZXJlbmNlcyIpOworCX0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIG5wZSkgeworCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworCSAgICBmYWlsKCJTaG91bGQgdGhyb3cgYSBOUEUgaW5zdGVhZCBvZiAiICsgZXggKyAKKwkJICIgZm9yIG51bGwgcmVmZXJlbmNlcyIpOworCX0KKwkvLyBDbGVhciB0aGUgcmVmZXJlbmNlcyBsaXN0IGNvbnRlbnQKKwlyZWZzLmNsZWFyKCk7CisJdHJ5IHsKKwkgICAgbWFuID0gZmFjLm5ld01hbmlmZXN0KHJlZnMpOworCSAgICBmYWlsKCJTaG91bGQgdGhyb3cgYSBJQUUgZm9yIGVtcHR5IHJlZmVyZW5jZXMiKTsKKwl9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKSB7CisJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJICAgIGZhaWwoIlNob3VsZCB0aHJvdyBhIElBRSBpbnN0ZWFkIG9mICIgKyBleCArIAorCQkgIiBmb3IgZW1wdHkgcmVmZXJlbmNlcyIpOworCX0KKwl0cnkgeworCSAgICBtYW4gPSBmYWMubmV3TWFuaWZlc3QocmVmcywgaWQpOworCSAgICBmYWlsKCJTaG91bGQgdGhyb3cgYSBJQUUgZm9yIGVtcHR5IHJlZmVyZW5jZXMiKTsKKwl9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKSB7CisJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJICAgIGZhaWwoIlNob3VsZCB0aHJvdyBhIElBRSBpbnN0ZWFkIG9mICIgKyBleCArIAorCQkgIiBmb3IgZW1wdHkgcmVmZXJlbmNlcyIpOworCX0KKwlyZWZzLmFkZCgicmVmZXJlbmNlcyIpOworCXRyeSB7CisJICAgIG1hbiA9IGZhYy5uZXdNYW5pZmVzdChyZWZzKTsKKwkgICAgZmFpbCgiU2hvdWxkIHRocm93IGEgQ0NFIGZvciByZWZlcmVuY2VzIGNvbnRhaW5pbmcgIiArIAorCQkgIm5vbi1SZWZlcmVuY2Ugb2JqZWN0cyIpOworCX0gY2F0Y2ggKENsYXNzQ2FzdEV4Y2VwdGlvbiBjY2UpIHsKKwl9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKwkgICAgZmFpbCgiU2hvdWxkIHRocm93IGEgQ0NFIGluc3RlYWQgb2YgIiArIGV4ICsgCisJCSAiIGZvciByZWZlcmVuY2VzIGNvbnRhaW5pbmcgbm9uLVJlZmVyZW5jZSBvYmplY3RzIik7CisJfQorCXRyeSB7CisJICAgIG1hbiA9IGZhYy5uZXdNYW5pZmVzdChyZWZzLCBpZCk7CisJICAgIGZhaWwoIlNob3VsZCB0aHJvdyBhIENDRSBmb3IgcmVmZXJlbmNlcyBjb250YWluaW5nICIgKyAKKwkJICJub24tUmVmZXJlbmNlIG9iamVjdHMiKTsKKwl9IGNhdGNoIChDbGFzc0Nhc3RFeGNlcHRpb24gY2NlKSB7CisJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJICAgIGZhaWwoIlNob3VsZCB0aHJvdyBhIENDRSBpbnN0ZWFkIG9mICIgKyBleCArIAorCQkgIiBmb3IgcmVmZXJlbmNlcyBjb250YWluaW5nIG5vbi1SZWZlcmVuY2Ugb2JqZWN0cyIpOworCX0JCisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHRlc3Rpc0ZlYXR1cmVTdXBwb3J0ZWQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlMaXN0IHJlZnMgPSBuZXcgVmVjdG9yKCk7CisJcmVmcy5hZGQoVkFMSURfUkVGKTsKKworCU1hbmlmZXN0IG1hbiA9IGZhYy5uZXdNYW5pZmVzdChyZWZzKTsKKwkKKwl0cnkgeworCSAgICBtYW4uaXNGZWF0dXJlU3VwcG9ydGVkKG51bGwpOyAKKwkgICAgZmFpbCgiU2hvdWxkIHJhaXNlIGEgTlBFIGZvciBudWxsIGZlYXR1cmUiKTsgCisJfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gbnBlKSB7fQorCSAgICAKKwlhc3NlcnRUcnVlKCFtYW4uaXNGZWF0dXJlU3VwcG9ydGVkKCJub3Qgc3VwcG9ydGVkIikpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RnZXRSZWZlcmVuY2VzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJTGlzdCByZWZzID0gbmV3IFZlY3RvcigpOworCXJlZnMuYWRkKFZBTElEX1JFRik7CQorCU1hbmlmZXN0IG1hbiA9IGZhYy5uZXdNYW5pZmVzdChyZWZzKTsKKwlMaXN0IHN0b3JlZCA9IG1hbi5nZXRSZWZlcmVuY2VzKCk7CisJdHJ5IHsKKwkgICAgc3RvcmVkLmFkZChJTlZBTElEX1JFRik7CisJICAgIGZhaWwoIlNob3VsZCBub3QgYmUgYWJsZSB0byBtb2RpZnkgdGhlIHJlZmVyZW5jZXMgZGlyZWN0bHkiKTsKKwl9IGNhdGNoIChVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiBleCkgeworCX0KKwl0cnkgeworCSAgICBMaXN0SXRlcmF0b3IgbGkgPSBzdG9yZWQubGlzdEl0ZXJhdG9yKCk7CisJICAgIGxpLmFkZChJTlZBTElEX1JFRik7CisJICAgIGZhaWwoIlNob3VsZCBub3QgYmUgYWJsZSB0byBtb2RpZnkgdGhlIHJlZmVyZW5jZXMgaW5kaXJlY3RseSIpOworCX0gY2F0Y2ggKFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIGV4KSB7CisJfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvUGhhb3NYTUxEU2lnM1Rlc3QuamF2YSBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvUGhhb3NYTUxEU2lnM1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWQwMWZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9QaGFvc1hNTERTaWczVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjg5IEBACisvKgorICogQ29weXJpZ2h0IDIwMDYtMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8udGVzdC5kc2lnOworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuc2VjdXJpdHkuU2VjdXJpdHk7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5LZXlTZWxlY3RvcjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuWE1MU2lnbmF0dXJlRXhjZXB0aW9uOworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLio7CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLnRlc3QuS2V5U2VsZWN0b3JzOworCisvKioKKyAqIFRoaXMgaXMgYSB0ZXN0Y2FzZSB0byB2YWxpZGF0ZSBhbGwgInBoYW9zLXhtbGRzaWctdGhyZWUiIAorICogdGVzdGNhc2VzIGZyb20gUGhhb3MKKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKi8KK3B1YmxpYyBjbGFzcyBQaGFvc1hNTERTaWczVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgIHByaXZhdGUgU2lnbmF0dXJlVmFsaWRhdG9yIHZhbGlkYXRvcjsKKyAgICBwcml2YXRlIEZpbGUgYmFzZTsKKworICAgIHN0YXRpYyB7CisgICAgICAgIFNlY3VyaXR5Lmluc2VydFByb3ZpZGVyQXQKKyAgICAgICAgICAgIChuZXcgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJKCksIDEpOworICAgIH0KKworICAgIHB1YmxpYyBQaGFvc1hNTERTaWczVGVzdChTdHJpbmcgbmFtZSkgeworICAgICAgICBzdXBlcihuYW1lKTsKKworCVN0cmluZyBmcyA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiZmlsZS5zZXBhcmF0b3IiKTsKKwlTdHJpbmcgYmFzZWRpciA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpID09IG51bGwgPyAiLi8iOiBTeXN0ZW0uZ2V0UHJvcGVydHkoImJhc2VkaXIiKTsKKwliYXNlID0gbmV3IEZpbGUoYmFzZWRpciArIGZzICsgImRhdGEiICsgZnMgKworCSAgICAiY29tIiArIGZzICsgInBoYW9zIiwgInBoYW9zLXhtbGRzaWctdGhyZWUiKTsKKwl2YWxpZGF0b3IgPSBuZXcgU2lnbmF0dXJlVmFsaWRhdG9yKGJhc2UpOworICAgIH0KKy8vICAgIHB1YmxpYyB2b2lkIHRlc3Rfc2lnbmF0dXJlX2JpZygpIHRocm93cyBFeGNlcHRpb24geworLy8gICAgICAgIFN0cmluZyBmaWxlID0gInNpZ25hdHVyZS1iaWcueG1sIjsKKy8vCisvLyAgICAgICAgYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSB2YWxpZGF0b3IudmFsaWRhdGUoZmlsZSwgCisvLwkJbmV3IEtleVNlbGVjdG9ycy5Db2xsZWN0aW9uS2V5U2VsZWN0b3IoYmFzZSkpOworLy8gICAgICAgIGFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY29yZVZhbGlkaXR5KTsKKy8vICAgIH0KKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZV9kc2FfZGV0YWNoZWQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlTdHJpbmcgZmlsZSA9ICJzaWduYXR1cmUtZHNhLWRldGFjaGVkLnhtbCI7CisKKwlib29sZWFuIGNvcmVWYWxpZGl0eSA9IAorCSAgICB2YWxpZGF0b3IudmFsaWRhdGUoZmlsZSwgbmV3IEtleVNlbGVjdG9ycy5SYXdYNTA5S2V5U2VsZWN0b3IoKSk7CisJYXNzZXJ0VHJ1ZSgiU2lnbmF0dXJlIGZhaWxlZCBjb3JlIHZhbGlkYXRpb24iLCBjb3JlVmFsaWRpdHkpOworICAgIH0KKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZV9kc2FfZW52ZWxvcGVkKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJU3RyaW5nIGZpbGUgPSAic2lnbmF0dXJlLWRzYS1lbnZlbG9wZWQueG1sIjsKKworCWJvb2xlYW4gY29yZVZhbGlkaXR5ID0gCisJICAgIHZhbGlkYXRvci52YWxpZGF0ZShmaWxlLCBuZXcgS2V5U2VsZWN0b3JzLlJhd1g1MDlLZXlTZWxlY3RvcigpKTsKKwlhc3NlcnRUcnVlKCJTaWduYXR1cmUgZmFpbGVkIGNvcmUgdmFsaWRhdGlvbiIsIGNvcmVWYWxpZGl0eSk7CisgICAgfSAgICAKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZV9kc2FfZW52ZWxvcGluZygpIHRocm93cyBFeGNlcHRpb24geworCVN0cmluZyBmaWxlID0gInNpZ25hdHVyZS1kc2EtZW52ZWxvcGluZy54bWwiOworCisJYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSAKKwkgICAgdmFsaWRhdG9yLnZhbGlkYXRlKGZpbGUsIG5ldyBLZXlTZWxlY3RvcnMuUmF3WDUwOUtleVNlbGVjdG9yKCkpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY29yZVZhbGlkaXR5KTsKKyAgICB9CisgICAgcHVibGljIHZvaWQgdGVzdF9zaWduYXR1cmVfZHNhX21hbmlmZXN0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJU3RyaW5nIGZpbGUgPSAic2lnbmF0dXJlLWRzYS1tYW5pZmVzdC54bWwiOworCisJYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSAKKwkgICAgdmFsaWRhdG9yLnZhbGlkYXRlKGZpbGUsIG5ldyBLZXlTZWxlY3RvcnMuS2V5VmFsdWVLZXlTZWxlY3RvcigpKTsKKwlhc3NlcnRUcnVlKCJTaWduYXR1cmUgZmFpbGVkIGNvcmUgdmFsaWRhdGlvbiIsIGNvcmVWYWxpZGl0eSk7CisgICAgfQorICAgIHB1YmxpYyB2b2lkIHRlc3Rfc2lnbmF0dXJlX2htYWNfc2hhMV80MF9jMTRuX2NvbW1lbnRzX2RldGFjaGVkKCkgCisJdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBmaWxlID0gInNpZ25hdHVyZS1obWFjLXNoYTEtNDAtYzE0bi1jb21tZW50cy1kZXRhY2hlZC54bWwiOworICAgICAgICAKKwlLZXlTZWxlY3RvciBrcyA9IG5ldyBLZXlTZWxlY3RvcnMuU2VjcmV0S2V5U2VsZWN0b3IKKwkgICAgKCJ0ZXN0Ii5nZXRCeXRlcygiQVNDSUkiKSApOworICAgICAgICB0cnkgeworCSAgICBib29sZWFuIGNvcmVWYWxpZGl0eSA9IHZhbGlkYXRvci52YWxpZGF0ZShmaWxlLCBrcyk7CisgICAgICAgICAgICBmYWlsKCJFeHBlY3RlZCBITUFDT3V0cHV0TGVuZ3RoIEV4Y2VwdGlvbiIpOworICAgICAgICB9IGNhdGNoIChYTUxTaWduYXR1cmVFeGNlcHRpb24geHNlKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oeHNlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICAvLyBwYXNzCisgICAgICAgIH0KKyAgICB9CisgICAgcHVibGljIHZvaWQgdGVzdF9zaWduYXR1cmVfaG1hY19zaGExXzQwX2V4Y2x1c2l2ZV9jMTRuX2NvbW1lbnRzX2RldGFjaGVkKCkgCisJdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBmaWxlID0gInNpZ25hdHVyZS1obWFjLXNoYTEtNDAtZXhjbHVzaXZlLWMxNG4tY29tbWVudHMtZGV0YWNoZWQueG1sIjsKKyAgICAgICAgCisJS2V5U2VsZWN0b3Iga3MgPSBuZXcgS2V5U2VsZWN0b3JzLlNlY3JldEtleVNlbGVjdG9yCisJICAgICgidGVzdCIuZ2V0Qnl0ZXMoIkFTQ0lJIikgKTsKKyAgICAgICAgdHJ5IHsKKwkgICAgYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSB2YWxpZGF0b3IudmFsaWRhdGUoZmlsZSwga3MpOworICAgICAgICAgICAgZmFpbCgiRXhwZWN0ZWQgSE1BQ091dHB1dExlbmd0aCBFeGNlcHRpb24iKTsKKyAgICAgICAgfSBjYXRjaCAoWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHhzZSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHhzZS5nZXRNZXNzYWdlKCkpOworICAgICAgICAgICAgLy8gcGFzcworICAgICAgICB9CisgICAgfQorICAgIHB1YmxpYyB2b2lkIHRlc3Rfc2lnbmF0dXJlX2htYWNfc2hhMV9leGNsdXNpdmVfYzE0bl9jb21tZW50c19kZXRhY2hlZCgpIAorCXRocm93cyBFeGNlcHRpb24geworICAgICAgICBTdHJpbmcgZmlsZSA9ICJzaWduYXR1cmUtaG1hYy1zaGExLWV4Y2x1c2l2ZS1jMTRuLWNvbW1lbnRzLWRldGFjaGVkLnhtbCI7CisgICAgICAgIAorCUtleVNlbGVjdG9yIGtzID0gbmV3IEtleVNlbGVjdG9ycy5TZWNyZXRLZXlTZWxlY3RvcgorCSAgICAoInRlc3QiLmdldEJ5dGVzKCJBU0NJSSIpICk7CisJYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSB2YWxpZGF0b3IudmFsaWRhdGUoZmlsZSwga3MpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY29yZVZhbGlkaXR5KTsKKyAgICB9CisgICAgcHVibGljIHZvaWQgdGVzdF9zaWduYXR1cmVfaG1hY19zaGExX2V4Y2x1c2l2ZV9jMTRuX2VudmVsb3BlZCgpIAorCXRocm93cyBFeGNlcHRpb24geworICAgICAgICBTdHJpbmcgZmlsZSA9ICJzaWduYXR1cmUtaG1hYy1zaGExLWV4Y2x1c2l2ZS1jMTRuLWVudmVsb3BlZC54bWwiOworICAgICAgICAKKwlLZXlTZWxlY3RvciBrcyA9IG5ldyBLZXlTZWxlY3RvcnMuU2VjcmV0S2V5U2VsZWN0b3IKKwkgICAgKCJ0ZXN0Ii5nZXRCeXRlcygiQVNDSUkiKSApOworCWJvb2xlYW4gY29yZVZhbGlkaXR5ID0gdmFsaWRhdG9yLnZhbGlkYXRlKGZpbGUsIGtzKTsKKwlhc3NlcnRUcnVlKCJTaWduYXR1cmUgZmFpbGVkIGNvcmUgdmFsaWRhdGlvbiIsIGNvcmVWYWxpZGl0eSk7CisgICAgfQorICAgIHB1YmxpYyB2b2lkIHRlc3Rfc2lnbmF0dXJlX3JzYV9kZXRhY2hlZF9iNjRfdHJhbnNmb3JtKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJU3RyaW5nIGZpbGUgPSAic2lnbmF0dXJlLXJzYS1kZXRhY2hlZC1iNjQtdHJhbnNmb3JtLnhtbCI7CisKKwlib29sZWFuIGNvcmVWYWxpZGl0eSA9IAorCSAgICB2YWxpZGF0b3IudmFsaWRhdGUoZmlsZSwgbmV3IEtleVNlbGVjdG9ycy5LZXlWYWx1ZUtleVNlbGVjdG9yKCkpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY29yZVZhbGlkaXR5KTsKKyAgICB9CisgICAgcHVibGljIHZvaWQgdGVzdF9zaWduYXR1cmVfcnNhX2RldGFjaGVkX3hwYXRoX3RyYW5zZm9ybSgpIHRocm93cyBFeGNlcHRpb24geworCVN0cmluZyBmaWxlID0gInNpZ25hdHVyZS1yc2EtZGV0YWNoZWQteHBhdGgtdHJhbnNmb3JtLnhtbCI7CisKKwlib29sZWFuIGNvcmVWYWxpZGl0eSA9IAorCSAgICB2YWxpZGF0b3IudmFsaWRhdGUoZmlsZSwgbmV3IEtleVNlbGVjdG9ycy5LZXlWYWx1ZUtleVNlbGVjdG9yKCkpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY29yZVZhbGlkaXR5KTsKKyAgICB9ICAgIAorICAgIHB1YmxpYyB2b2lkIHRlc3Rfc2lnbmF0dXJlX3JzYV9kZXRhY2hlZF94c2x0X3RyYW5zZm9ybV9iYWRfcm0oKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlTdHJpbmcgZmlsZSA9ICJzaWduYXR1cmUtcnNhLWRldGFjaGVkLXhzbHQtdHJhbnNmb3JtLWJhZC1yZXRyaWV2YWwtbWV0aG9kLnhtbCI7CisKKwl0cnkgeworCSAgICB2YWxpZGF0b3IudmFsaWRhdGUoZmlsZSwgCisJCQkgICAgICAgbmV3IEtleVNlbGVjdG9ycy5Db2xsZWN0aW9uS2V5U2VsZWN0b3IoYmFzZSkpOworCSAgICBmYWlsKCJTaG91bGQgdGhyb3cgWE1MU2lnbmF0dXJlRXhjZXB0aW9uIGZvciB1c2luZyBEU0Ega2V5IHdpdGggIiArCisJCSAiUlNBIGFsZ29yaXRobSIpOworCX0gY2F0Y2ggKFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB4c2UpIHt9CisgICAgfQorICAgIHB1YmxpYyB2b2lkIHRlc3Rfc2lnbmF0dXJlX3JzYV9kZXRhY2hlZF94c2x0X3RyYW5zZm9ybV9ybSgpIHRocm93cyBFeGNlcHRpb24geworCVN0cmluZyBmaWxlID0gInNpZ25hdHVyZS1yc2EtZGV0YWNoZWQteHNsdC10cmFuc2Zvcm0tcmV0cmlldmFsLW1ldGhvZC54bWwiOworCisJYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSAKKwkgICAgdmFsaWRhdG9yLnZhbGlkYXRlKGZpbGUsIAorCQkJICAgICAgIG5ldyBLZXlTZWxlY3RvcnMuQ29sbGVjdGlvbktleVNlbGVjdG9yKGJhc2UpKTsKKwlhc3NlcnRUcnVlKCJTaWduYXR1cmUgZmFpbGVkIGNvcmUgdmFsaWRhdGlvbiIsIGNvcmVWYWxpZGl0eSk7CisgICAgfQorICAgIHB1YmxpYyB2b2lkIHRlc3Rfc2lnbmF0dXJlX3JzYV9kZXRhY2hlZF94c2x0X3RyYW5zZm9ybSgpIHRocm93cyBFeGNlcHRpb24geworCVN0cmluZyBmaWxlID0gInNpZ25hdHVyZS1yc2EtZGV0YWNoZWQteHNsdC10cmFuc2Zvcm0ueG1sIjsKKworCWJvb2xlYW4gY29yZVZhbGlkaXR5ID0gCisJICAgIHZhbGlkYXRvci52YWxpZGF0ZShmaWxlLCBuZXcgS2V5U2VsZWN0b3JzLktleVZhbHVlS2V5U2VsZWN0b3IoKSk7CisJYXNzZXJ0VHJ1ZSgiU2lnbmF0dXJlIGZhaWxlZCBjb3JlIHZhbGlkYXRpb24iLCBjb3JlVmFsaWRpdHkpOworICAgIH0KKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZV9yc2FfZGV0YWNoZWQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlTdHJpbmcgZmlsZSA9ICJzaWduYXR1cmUtcnNhLWRldGFjaGVkLnhtbCI7CisKKwlib29sZWFuIGNvcmVWYWxpZGl0eSA9IAorCSAgICB2YWxpZGF0b3IudmFsaWRhdGUoZmlsZSwgbmV3IEtleVNlbGVjdG9ycy5SYXdYNTA5S2V5U2VsZWN0b3IoKSk7CisJYXNzZXJ0VHJ1ZSgiU2lnbmF0dXJlIGZhaWxlZCBjb3JlIHZhbGlkYXRpb24iLCBjb3JlVmFsaWRpdHkpOworICAgIH0KKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZV9yc2FfZW52ZWxvcGVkX2JhZF9kaWdlc3RfdmFsKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJU3RyaW5nIGZpbGUgPSAic2lnbmF0dXJlLXJzYS1lbnZlbG9wZWQtYmFkLWRpZ2VzdC12YWwueG1sIjsKKworCWJvb2xlYW4gY29yZVZhbGlkaXR5ID0gCisJICAgIHZhbGlkYXRvci52YWxpZGF0ZShmaWxlLCBuZXcgS2V5U2VsZWN0b3JzLlJhd1g1MDlLZXlTZWxlY3RvcigpKTsKKwlhc3NlcnRGYWxzZSgiU2lnbmF0dXJlIHNob3VsZCBmYWlsIGNvcmUgdmFsaWRhdGlvbiIsIGNvcmVWYWxpZGl0eSk7CisgICAgfQorICAgIHB1YmxpYyB2b2lkIHRlc3Rfc2lnbmF0dXJlX3JzYV9lbnZlbG9wZWQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlTdHJpbmcgZmlsZSA9ICJzaWduYXR1cmUtcnNhLWVudmVsb3BlZC54bWwiOworCisJYm9vbGVhbiBjb3JlVmFsaWRpdHkgPQorCSAgICB2YWxpZGF0b3IudmFsaWRhdGUoZmlsZSwgbmV3IEtleVNlbGVjdG9ycy5SYXdYNTA5S2V5U2VsZWN0b3IoKSk7CisJYXNzZXJ0VHJ1ZSgiU2lnbmF0dXJlIGZhaWxlZCBjb3JlIHZhbGlkYXRpb24iLCBjb3JlVmFsaWRpdHkpOworICAgIH0KKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZV9yc2FfZW52ZWxvcGluZygpIHRocm93cyBFeGNlcHRpb24geworCVN0cmluZyBmaWxlID0gInNpZ25hdHVyZS1yc2EtZW52ZWxvcGluZy54bWwiOworCisJYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSAKKwkgICAgdmFsaWRhdG9yLnZhbGlkYXRlKGZpbGUsIG5ldyBLZXlTZWxlY3RvcnMuUmF3WDUwOUtleVNlbGVjdG9yKCkpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY29yZVZhbGlkaXR5KTsKKyAgIH0KKyAgIHB1YmxpYyB2b2lkIHRlc3Rfc2lnbmF0dXJlX3JzYV9tYW5pZmVzdF94NTA5X2RhdGFfY2VydF9jaGFpbigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBTdHJpbmcgZmlsZSA9ICJzaWduYXR1cmUtcnNhLW1hbmlmZXN0LXg1MDktZGF0YS1jZXJ0LWNoYWluLnhtbCI7CisKKyAgICAgICAgYm9vbGVhbiBjb3JlVmFsaWRpdHkgPQorICAgICAgICAgICAgdmFsaWRhdG9yLnZhbGlkYXRlKGZpbGUsIG5ldyBLZXlTZWxlY3RvcnMuUmF3WDUwOUtleVNlbGVjdG9yKCkpOworICAgICAgICBhc3NlcnRUcnVlKCJTaWduYXR1cmUgZmFpbGVkIGNvcmUgdmFsaWRhdGlvbiIsIGNvcmVWYWxpZGl0eSk7CisgICB9CisgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZV9yc2FfbWFuaWZlc3RfeDUwOV9kYXRhX2NlcnQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgU3RyaW5nIGZpbGUgPSAic2lnbmF0dXJlLXJzYS1tYW5pZmVzdC14NTA5LWRhdGEtY2VydC54bWwiOworCisgICAgICAgIGJvb2xlYW4gY29yZVZhbGlkaXR5ID0KKyAgICAgICAgICAgIHZhbGlkYXRvci52YWxpZGF0ZShmaWxlLCBuZXcgS2V5U2VsZWN0b3JzLlJhd1g1MDlLZXlTZWxlY3RvcigpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZSgiU2lnbmF0dXJlIGZhaWxlZCBjb3JlIHZhbGlkYXRpb24iLCBjb3JlVmFsaWRpdHkpOworICAgfQorICAgcHVibGljIHZvaWQgdGVzdF9zaWduYXR1cmVfcnNhX21hbmlmZXN0X3g1MDlfZGF0YV9pc3N1ZXJfc2VyaWFsKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBmaWxlID0gInNpZ25hdHVyZS1yc2EtbWFuaWZlc3QteDUwOS1kYXRhLWlzc3Vlci1zZXJpYWwueG1sIjsKKworICAgICAgICBib29sZWFuIGNvcmVWYWxpZGl0eSA9IHZhbGlkYXRvci52YWxpZGF0ZShmaWxlLCAKKwkJbmV3IEtleVNlbGVjdG9ycy5Db2xsZWN0aW9uS2V5U2VsZWN0b3IoYmFzZSkpOworICAgICAgICBhc3NlcnRUcnVlKCJTaWduYXR1cmUgZmFpbGVkIGNvcmUgdmFsaWRhdGlvbiIsIGNvcmVWYWxpZGl0eSk7CisgICB9CisgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZV9yc2FfbWFuaWZlc3RfeDUwOV9kYXRhX3NraSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBTdHJpbmcgZmlsZSA9ICJzaWduYXR1cmUtcnNhLW1hbmlmZXN0LXg1MDktZGF0YS1za2kueG1sIjsKKworICAgICAgICBib29sZWFuIGNvcmVWYWxpZGl0eSA9IHZhbGlkYXRvci52YWxpZGF0ZShmaWxlLCAKKwkJbmV3IEtleVNlbGVjdG9ycy5Db2xsZWN0aW9uS2V5U2VsZWN0b3IoYmFzZSkpOworICAgICAgICBhc3NlcnRUcnVlKCJTaWduYXR1cmUgZmFpbGVkIGNvcmUgdmFsaWRhdGlvbiIsIGNvcmVWYWxpZGl0eSk7CisgICB9CisgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZV9yc2FfbWFuaWZlc3RfeDUwOV9kYXRhX3N1YmplY3RfbmFtZSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBTdHJpbmcgZmlsZSA9ICJzaWduYXR1cmUtcnNhLW1hbmlmZXN0LXg1MDktZGF0YS1zdWJqZWN0LW5hbWUueG1sIjsKKworICAgICAgICBib29sZWFuIGNvcmVWYWxpZGl0eSA9IHZhbGlkYXRvci52YWxpZGF0ZShmaWxlLCAKKwkJbmV3IEtleVNlbGVjdG9ycy5Db2xsZWN0aW9uS2V5U2VsZWN0b3IoYmFzZSkpOworICAgICAgICBhc3NlcnRUcnVlKCJTaWduYXR1cmUgZmFpbGVkIGNvcmUgdmFsaWRhdGlvbiIsIGNvcmVWYWxpZGl0eSk7CisgICB9CisgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZV9yc2FfbWFuaWZlc3RfeDUwOV9kYXRhKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBmaWxlID0gInNpZ25hdHVyZS1yc2EtbWFuaWZlc3QteDUwOS1kYXRhLnhtbCI7CisKKyAgICAgICAgYm9vbGVhbiBjb3JlVmFsaWRpdHkgPQorICAgICAgICAgICAgdmFsaWRhdG9yLnZhbGlkYXRlKGZpbGUsIG5ldyBLZXlTZWxlY3RvcnMuUmF3WDUwOUtleVNlbGVjdG9yKCkpOworICAgICAgICBhc3NlcnRUcnVlKCJTaWduYXR1cmUgZmFpbGVkIGNvcmUgdmFsaWRhdGlvbiIsIGNvcmVWYWxpZGl0eSk7CisgICB9CisgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZV9yc2FfbWFuaWZlc3QoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgU3RyaW5nIGZpbGUgPSAic2lnbmF0dXJlLXJzYS1tYW5pZmVzdC54bWwiOworCisgICAgICAgIGJvb2xlYW4gY29yZVZhbGlkaXR5ID0KKyAgICAgICAgICAgIHZhbGlkYXRvci52YWxpZGF0ZShmaWxlLCBuZXcgS2V5U2VsZWN0b3JzLktleVZhbHVlS2V5U2VsZWN0b3IoKSk7CisgICAgICAgIGFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY29yZVZhbGlkaXR5KTsKKyAgIH0KKyAgIHB1YmxpYyB2b2lkIHRlc3Rfc2lnbmF0dXJlX3JzYV94cGF0aF90cmFuc2Zvcm1fZW52ZWxvcGVkKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBmaWxlID0gInNpZ25hdHVyZS1yc2EteHBhdGgtdHJhbnNmb3JtLWVudmVsb3BlZC54bWwiOworCisgICAgICAgIGJvb2xlYW4gY29yZVZhbGlkaXR5ID0KKyAgICAgICAgICAgIHZhbGlkYXRvci52YWxpZGF0ZShmaWxlLCBuZXcgS2V5U2VsZWN0b3JzLlJhd1g1MDlLZXlTZWxlY3RvcigpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZSgiU2lnbmF0dXJlIGZhaWxlZCBjb3JlIHZhbGlkYXRpb24iLCBjb3JlVmFsaWRpdHkpOworICAgfQorICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFBoYW9zWE1MRFNpZzNUZXN0IHB0ID0gbmV3IFBoYW9zWE1MRFNpZzNUZXN0KCIiKTsKKy8vCXB0LnRlc3Rfc2lnbmF0dXJlX2JpZygpOworICAgICAgICBwdC50ZXN0X3NpZ25hdHVyZV9kc2FfZGV0YWNoZWQoKTsKKyAgICAgICAgcHQudGVzdF9zaWduYXR1cmVfZHNhX2VudmVsb3BlZCgpOworCXB0LnRlc3Rfc2lnbmF0dXJlX2RzYV9lbnZlbG9waW5nKCk7CisJcHQudGVzdF9zaWduYXR1cmVfZHNhX21hbmlmZXN0KCk7CisJcHQudGVzdF9zaWduYXR1cmVfaG1hY19zaGExXzQwX2MxNG5fY29tbWVudHNfZGV0YWNoZWQoKTsKKwlwdC50ZXN0X3NpZ25hdHVyZV9obWFjX3NoYTFfNDBfZXhjbHVzaXZlX2MxNG5fY29tbWVudHNfZGV0YWNoZWQoKTsKKwlwdC50ZXN0X3NpZ25hdHVyZV9obWFjX3NoYTFfZXhjbHVzaXZlX2MxNG5fY29tbWVudHNfZGV0YWNoZWQoKTsgCisJcHQudGVzdF9zaWduYXR1cmVfaG1hY19zaGExX2V4Y2x1c2l2ZV9jMTRuX2VudmVsb3BlZCgpOworCXB0LnRlc3Rfc2lnbmF0dXJlX3JzYV9kZXRhY2hlZF9iNjRfdHJhbnNmb3JtKCk7CisJcHQudGVzdF9zaWduYXR1cmVfcnNhX2RldGFjaGVkX3hwYXRoX3RyYW5zZm9ybSgpOworCXB0LnRlc3Rfc2lnbmF0dXJlX3JzYV9kZXRhY2hlZF94c2x0X3RyYW5zZm9ybV9iYWRfcm0oKTsKKwlwdC50ZXN0X3NpZ25hdHVyZV9yc2FfZGV0YWNoZWRfeHNsdF90cmFuc2Zvcm1fcm0oKTsKKwlwdC50ZXN0X3NpZ25hdHVyZV9yc2FfZGV0YWNoZWRfeHNsdF90cmFuc2Zvcm0oKTsKKwlwdC50ZXN0X3NpZ25hdHVyZV9yc2FfZGV0YWNoZWQoKTsKKwlwdC50ZXN0X3NpZ25hdHVyZV9yc2FfZW52ZWxvcGVkX2JhZF9kaWdlc3RfdmFsKCk7CisJcHQudGVzdF9zaWduYXR1cmVfcnNhX2VudmVsb3BlZCgpOworCXB0LnRlc3Rfc2lnbmF0dXJlX3JzYV9lbnZlbG9waW5nKCk7CisJcHQudGVzdF9zaWduYXR1cmVfcnNhX21hbmlmZXN0X3g1MDlfZGF0YV9jZXJ0X2NoYWluKCk7CisJcHQudGVzdF9zaWduYXR1cmVfcnNhX21hbmlmZXN0X3g1MDlfZGF0YV9jZXJ0KCk7CisJcHQudGVzdF9zaWduYXR1cmVfcnNhX21hbmlmZXN0X3g1MDlfZGF0YV9pc3N1ZXJfc2VyaWFsKCk7CisJcHQudGVzdF9zaWduYXR1cmVfcnNhX21hbmlmZXN0X3g1MDlfZGF0YV9za2koKTsKKwlwdC50ZXN0X3NpZ25hdHVyZV9yc2FfbWFuaWZlc3RfeDUwOV9kYXRhX3N1YmplY3RfbmFtZSgpOworCXB0LnRlc3Rfc2lnbmF0dXJlX3JzYV9tYW5pZmVzdF94NTA5X2RhdGEoKTsKKwlwdC50ZXN0X3NpZ25hdHVyZV9yc2FfbWFuaWZlc3QoKTsKKwlwdC50ZXN0X3NpZ25hdHVyZV9yc2FfeHBhdGhfdHJhbnNmb3JtX2VudmVsb3BlZCgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvUmVmZXJlbmNlVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9SZWZlcmVuY2VUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE3NTQxNQotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvUmVmZXJlbmNlVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjgzIEBACisvKgorICogQ29weXJpZ2h0IDIwMDYgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLnRlc3QuZHNpZzsKKworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5Lk1lc3NhZ2VEaWdlc3Q7CitpbXBvcnQgamF2YS5zZWN1cml0eS5TZWN1cml0eTsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLlVSSURlcmVmZXJlbmNlcjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcua2V5aW5mby4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5kb20uRE9NU2lnbkNvbnRleHQ7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLmRvbS5ET01WYWxpZGF0ZUNvbnRleHQ7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLnNwZWMuQzE0Tk1ldGhvZFBhcmFtZXRlclNwZWM7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLnNwZWMuVHJhbnNmb3JtUGFyYW1ldGVyU3BlYzsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay4qOworCisvKioKKyAqIFVuaXQgdGVzdCBmb3IgamF2YXgueG1sLmNyeXB0by5kc2lnLlJlZmVyZW5jZQorICoKKyAqIEB2ZXJzaW9uICRJZCQKKyAqIEBhdXRob3IgVmFsZXJpZSBQZW5nCisgKi8KK3B1YmxpYyBjbGFzcyBSZWZlcmVuY2VUZXN0IGV4dGVuZHMgVGVzdENhc2UgeworICAgIHByaXZhdGUgWE1MU2lnbmF0dXJlRmFjdG9yeSBmYWM7CisgICAgcHJpdmF0ZSBLZXlJbmZvRmFjdG9yeSBraWZhYzsKKyAgICBwcml2YXRlIERpZ2VzdE1ldGhvZCBkbVNIQTE7CisgICAgcHJpdmF0ZSBTdHJpbmcgdXJpID0gImh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzMyNzUudHh0IjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZ1tdIENSWVBUT19BTEdTID0geyAiUlNBIiwgIkRTQSIgfTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBTSUdfQUxHUyA9IHsgCisJU2lnbmF0dXJlTWV0aG9kLlJTQV9TSEExLCAKKwlTaWduYXR1cmVNZXRob2QuRFNBX1NIQTEgCisgICAgfTsKKworICAgIHN0YXRpYyB7CisgICAgICAgIFNlY3VyaXR5Lmluc2VydFByb3ZpZGVyQXQKKyAgICAgICAgICAgIChuZXcgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJKCksIDEpOworICAgIH0KKworICAgIHB1YmxpYyBSZWZlcmVuY2VUZXN0KCkgeworCXN1cGVyKCJSZWZlcmVuY2VUZXN0Iik7CisgICAgfQorCisgICAgcHVibGljIFJlZmVyZW5jZVRlc3QoU3RyaW5nIG5hbWUpIHsKKwlzdXBlcihuYW1lKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmYWMgPSBYTUxTaWduYXR1cmVGYWN0b3J5LmdldEluc3RhbmNlCisgICAgICAgICAgICAoIkRPTSIsIG5ldyBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbS5YTUxEU2lnUkkoKSk7CisJa2lmYWMgPSBLZXlJbmZvRmFjdG9yeS5nZXRJbnN0YW5jZQorICAgICAgICAgICAgKCJET00iLCBuZXcgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJKCkpOworCWRtU0hBMSA9IGZhYy5uZXdEaWdlc3RNZXRob2QoRGlnZXN0TWV0aG9kLlNIQTEsIG51bGwpOyAKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZWFyRG93bigpIHt9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0Q29uc3RydWN0b3IoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlSZWZlcmVuY2UgcmVmOworCS8vIHRlc3QgWE1MU2lnbmF0dXJlRmFjdG9yeS5uZXdSZWZlcmVuY2UoU3RyaW5nIHVyaSwgCisJLy8gICAgIERpZ2VzdE1ldGhvZCBkbSkgZm9yIGdlbmVyYXRpbmcgUmVmZXJlbmNlIG9iamVjdHMKKwlyZWYgPSBmYWMubmV3UmVmZXJlbmNlKG51bGwsIGRtU0hBMSk7CisJYXNzZXJ0Tm90TnVsbChyZWYpOworCXJlZiA9IGZhYy5uZXdSZWZlcmVuY2UodXJpLCBkbVNIQTEpOworCWFzc2VydE5vdE51bGwocmVmKTsKKwl0cnkgeworCSAgICByZWYgPSBmYWMubmV3UmVmZXJlbmNlKCJpbGxlZ2FsIUAjJCUiICsgdXJpLCBkbVNIQTEpOworCSAgICBmYWlsKCJTaG91bGQgdGhyb3cgYSBJQUUgZm9yIG5vbi1SRkMyMzk2LWNvbXBsaWFudCB1cmkiKTsKKwl9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKSB7CisJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJICAgIGZhaWwoIlNob3VsZCB0aHJvdyBhIElBRSBpbnN0ZWFkIG9mICIgKyBleCArIAorCQkgIiBmb3Igbm9uLVJGQzIzOTYtY29tcGxpYW50IHVyaSIpOworCX0KKwl0cnkgeworCSAgICByZWYgPSBmYWMubmV3UmVmZXJlbmNlKHVyaSwgbnVsbCk7CisJICAgIGZhaWwoIlNob3VsZCB0aHJvdyBhIE5QRSBmb3IgbnVsbCBkbSIpOworCX0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIG5wZSkgeworCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworCSAgICBmYWlsKCJTaG91bGQgdGhyb3cgYSBOUEUgaW5zdGVhZCBvZiAiICsgZXggKyAiIGZvciBudWxsIGRtIik7CisJfQorCisJLy8gdGVzdCBYTUxTaWduYXR1cmVGYWN0b3J5Lm5ld1JlZmVyZW5jZShTdHJpbmcgdXJpLCAKKwkvLyAgICBEaWdlc3RNZXRob2QgZG0sIExpc3QgdHJhbnNmb3JtcywgU3RyaW5nIHR5cGUsIFN0cmluZyBpZCkKKwkvLyBmb3IgZ2VuZXJhdGluZyBSZWZlcmVuY2Ugb2JqZWN0cworCXRyeSB7ICAgCisJICAgIHJlZiA9IGZhYy5uZXdSZWZlcmVuY2UobnVsbCwgZG1TSEExLCBudWxsLCBudWxsLCBudWxsKTsKKwkgICAgYXNzZXJ0RXF1YWxzKHJlZi5nZXREaWdlc3RNZXRob2QoKSwgZG1TSEExKTsKKwl9IGNhdGNoKEV4Y2VwdGlvbiBleCkgeworCSAgICBmYWlsKCJVbmV4cGVjdGVkIEV4Y2VwdGlvbjogIiArIGV4KTsKKwl9CisKKwl0cnkgeworCSAgICByZWYgPSBmYWMubmV3UmVmZXJlbmNlKG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwpOworCSAgICBmYWlsKCJTaG91bGQgdGhyb3cgYSBOUEUgZm9yIG51bGwgZG0iKTsKKwl9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBucGUpIHsKKwl9IGNhdGNoKEV4Y2VwdGlvbiBleCkgeworCSAgICBmYWlsKCJTaG91bGQgdGhyb3cgYSBOUEUgaW5zdGVhZCBvZiAiICsgZXggKyAiIGZvciBudWxsIGRtIik7CisJfQorCVN0cmluZyBpZCAgPSAiaWQiOworCVN0cmluZyB0eXBlID0gInR5cGUiOworCXRyeSB7CisJICAgIHJlZiA9IGZhYy5uZXdSZWZlcmVuY2UodXJpLCBkbVNIQTEsIG51bGwsIHR5cGUsIGlkKTsKKwkgICAgYXNzZXJ0Tm90TnVsbChyZWYuZ2V0RGlnZXN0TWV0aG9kKCkpOworCSAgICBhc3NlcnRFcXVhbHModXJpLCByZWYuZ2V0VVJJKCkpOworCSAgICBhc3NlcnRFcXVhbHMoaWQsIHJlZi5nZXRJZCgpKTsKKwkgICAgYXNzZXJ0RXF1YWxzKHR5cGUsIHJlZi5nZXRUeXBlKCkpOyAgICAgICAgCisgICAgICAgIGFzc2VydEVxdWFscyhyZWYuZ2V0VHJhbnNmb3JtcygpLCBDb2xsZWN0aW9ucy5FTVBUWV9MSVNUKTsKKwkgICAgCisJfSBjYXRjaChFeGNlcHRpb24gZXgpIHsKKwkgICAgZmFpbCgiVW5leHBlY3RlZCBFeGNlcHRpb246ICIgKyBleCk7CisJfQorCUxpc3QgdHJhbnNmb3JtcyA9IG5ldyBWZWN0b3IoKTsKKwl0cnkgeworCSAgICAvLyB0cnkgZW1wdHkgdHJhbnNmb3JtcyBsaXN0CisJICAgIHJlZiA9IGZhYy5uZXdSZWZlcmVuY2UodXJpLCBkbVNIQTEsIHRyYW5zZm9ybXMsIAorCQkJCSAgIHR5cGUsIGlkKTsKKwkgICAgYXNzZXJ0VHJ1ZShBcnJheXMuZXF1YWxzKHRyYW5zZm9ybXMudG9BcnJheSgpLCAKKwkJCQkgICAgIHJlZi5nZXRUcmFuc2Zvcm1zKCkudG9BcnJheSgpKSk7CisJfSBjYXRjaChFeGNlcHRpb24gZXgpIHsKKwkgICAgZmFpbCgiVW5leHBlY3RlZCBFeGNlcHRpb246ICIgKyBleCk7CisJfQorCXRyYW5zZm9ybXMuYWRkKG5ldyBPYmplY3QoKSk7CisJdHJ5IHsKKwkgICAgLy8gdHJ5IGEgdHJhbnNmb3JtcyBsaXN0IHdpdGggYW4gaW52YWxpZCBvYmplY3QKKwkgICAgcmVmID0gZmFjLm5ld1JlZmVyZW5jZSh1cmksIGRtU0hBMSwgdHJhbnNmb3JtcywgCisJCQkJICAgdHlwZSwgaWQpOworCX0gY2F0Y2ggKENsYXNzQ2FzdEV4Y2VwdGlvbiBjY2UpIHsKKwl9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKwkgICAgZmFpbCgiU2hvdWxkIHRocm93IGEgQ2xhc3NDYXN0RXhjZXB0aW9uIGluc3RlYWQgb2YgIiArIGV4KTsKKwl9CisJLy8gVGVzdCB3aXRoIHZhcmlvdXMgY29tcG9zaXRpb24gb2YgVHJhbnNmb3JtIGxpc3QgCisJLy8gMS4gU3RyaW5nIG9ubHkgCisJdHJhbnNmb3Jtcy5jbGVhcigpOworCXRyYW5zZm9ybXMuYWRkKFRyYW5zZm9ybS5CQVNFNjQpOworCXRyeSB7CisJICAgIC8vIHRyeSBhIHRyYW5zZm9ybXMgbGlzdCB3aXRoIGEgU3RyaW5nIG9iamVjdAorCSAgICByZWYgPSBmYWMubmV3UmVmZXJlbmNlKHVyaSwgZG1TSEExLCB0cmFuc2Zvcm1zLCAKKwkgICAgCQkJICAgdHlwZSwgaWQpOworCSAgICBmYWlsKCJTaG91bGQgdGhyb3cgYSBDQ0UgZm9yIGlsbGVnYWwgdHJhbnNmb3JtcyIpOworCX0gY2F0Y2ggKENsYXNzQ2FzdEV4Y2VwdGlvbiBjY2UpIHsKKwl9IGNhdGNoKEV4Y2VwdGlvbiBleCkgeworCSAgICBmYWlsKCJTaG91bGQgdGhyb3cgYSBDQ0UgaW5zdGVhZCBvZiAiICsgZXggKyAKKwkJICIgZm9yIGlsbGVnYWwgdHJhbnNmb3JtcyIpOworCX0KKwkvLyAyLiBUcmFuc2Zvcm0gb25seQorCXRyYW5zZm9ybXMuY2xlYXIoKTsKKwlUcmFuc2Zvcm0gYzE0bldpdGhDb21tZW50cyA9IGZhYy5uZXdUcmFuc2Zvcm0KKwkgICAgKENhbm9uaWNhbGl6YXRpb25NZXRob2QuSU5DTFVTSVZFX1dJVEhfQ09NTUVOVFMsIAorCSAgICAgKFRyYW5zZm9ybVBhcmFtZXRlclNwZWMpIG51bGwpOworCXRyYW5zZm9ybXMuYWRkKGMxNG5XaXRoQ29tbWVudHMpOworCXRyeSB7CisJICAgIC8vIHRyeSBhIHRyYW5zZm9ybXMgbGlzdCB3aXRoIGEgVHJhbnNmb3JtIG9iamVjdAorCSAgICByZWYgPSBmYWMubmV3UmVmZXJlbmNlKHVyaSwgZG1TSEExLCB0cmFuc2Zvcm1zLCB0eXBlLCBpZCk7CisJICAgIGFzc2VydFRydWUoQXJyYXlzLmVxdWFscyh0cmFuc2Zvcm1zLnRvQXJyYXkoKSwgCisJCQkJICAgICByZWYuZ2V0VHJhbnNmb3JtcygpLnRvQXJyYXkoKSkpOworCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworCSAgICBmYWlsKCJVbmV4cGVjdGVkIEV4Y2VwdGlvbjogIiArIGV4KTsKKwl9CisgICAgfQorICAgIHB1YmxpYyB2b2lkIHRlc3Rpc0ZlYXR1cmVTdXBwb3J0ZWQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlSZWZlcmVuY2UgcmVmID0gZmFjLm5ld1JlZmVyZW5jZShudWxsLCBkbVNIQTEsIG51bGwsIG51bGwsIG51bGwpOworCXRyeSB7CisJICAgIHJlZi5pc0ZlYXR1cmVTdXBwb3J0ZWQobnVsbCk7IAorCSAgICBmYWlsKCJTaG91bGQgcmFpc2UgYSBOUEUgZm9yIG51bGwgZmVhdHVyZSIpOyAKKwl9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBucGUpIHt9CisJICAgIAorCWFzc2VydFRydWUoIXJlZi5pc0ZlYXR1cmVTdXBwb3J0ZWQoIm5vdCBzdXBwb3J0ZWQiKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdHZhbGlkYXRlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHRlc3R2YWxpZGF0ZShmYWxzZSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdHZhbGlkYXRlV2l0aENhY2hpbmcoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdGVzdHZhbGlkYXRlKHRydWUpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB0ZXN0dmFsaWRhdGUoYm9vbGVhbiBjYWNoZSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJUmVmZXJlbmNlIHJlZiA9IG51bGw7CisJU3RyaW5nIHR5cGUgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCI7CisJYnl0ZVtdIGluID0gbmV3IGJ5dGVbMjAwXTsKKwlSYW5kb20gcmFuZCA9IG5ldyBSYW5kb20oKTsKKwkKKwkvLyBUZXN0IFhNTFNpZ25Db250ZXh0CisJWE1MU2lnbkNvbnRleHQgc2lnbkNvbnRleHQ7CisJWE1MVmFsaWRhdGVDb250ZXh0IHZhbGlkYXRlQ29udGV4dDsKKwlmb3IgKGludCBpID0gMDsgaSA8IENSWVBUT19BTEdTLmxlbmd0aDsgaSsrKSB7CisJICAgIHJhbmQubmV4dEJ5dGVzKGluKTsKKyAgICAgICAgICAgIFVSSURlcmVmZXJlbmNlciBkZXJlZmVycmVyID0KKyAgICAgICAgICAgICAgICBuZXcgVGVzdFV0aWxzLk9jdGV0U3RyZWFtVVJJRGVyZWZlcmVuY2VyKGluKTsKKwkgICAgRG9jdW1lbnQgZG9jID0gVGVzdFV0aWxzLm5ld0RvY3VtZW50KCk7CisJICAgIHNpZ25Db250ZXh0ID0gbmV3IAorCQlET01TaWduQ29udGV4dChUZXN0VXRpbHMuZ2V0UHJpdmF0ZUtleShDUllQVE9fQUxHU1tpXSksIGRvYyk7CisJICAgIHNpZ25Db250ZXh0LnNldFVSSURlcmVmZXJlbmNlcihkZXJlZmVycmVyKTsKKyAgICAgICAgICAgIGlmIChjYWNoZSkgeworICAgICAgICAgICAgICAgIHNpZ25Db250ZXh0LnNldFByb3BlcnR5CisgICAgICAgICAgICAgICAgICAgICgiamF2YXgueG1sLmNyeXB0by5kc2lnLmNhY2hlUmVmZXJlbmNlIiwgQm9vbGVhbi5UUlVFKTsKKyAgICAgICAgICAgIH0KKwkgICAgcmVmID0gZmFjLm5ld1JlZmVyZW5jZShudWxsLCBkbVNIQTEsIG51bGwsIHR5cGUsIG51bGwpOworCSAgICBYTUxTaWduYXR1cmUgc2lnID0gZmFjLm5ld1hNTFNpZ25hdHVyZShmYWMubmV3U2lnbmVkSW5mbworCQkoZmFjLm5ld0Nhbm9uaWNhbGl6YXRpb25NZXRob2QKKwkJIChDYW5vbmljYWxpemF0aW9uTWV0aG9kLklOQ0xVU0lWRV9XSVRIX0NPTU1FTlRTLCAKKwkJICAoQzE0Tk1ldGhvZFBhcmFtZXRlclNwZWMpIG51bGwpLAorCSAgICAJZmFjLm5ld1NpZ25hdHVyZU1ldGhvZChTSUdfQUxHU1tpXSwgbnVsbCksCisJCUNvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QocmVmKSksCisJCWtpZmFjLm5ld0tleUluZm8oQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdAorCQkoa2lmYWMubmV3S2V5VmFsdWUoVGVzdFV0aWxzLmdldFB1YmxpY0tleShDUllQVE9fQUxHU1tpXSkpKSkpOworCSAgICB0cnkgeworCQlzaWcuc2lnbihzaWduQ29udGV4dCk7CisgICAgICAgICAJaWYgKCFjYWNoZSkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnROdWxsKHJlZi5nZXREZXJlZmVyZW5jZWREYXRhKCkpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnROdWxsKHJlZi5nZXREaWdlc3RJbnB1dFN0cmVhbSgpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnROb3ROdWxsKHJlZi5nZXREZXJlZmVyZW5jZWREYXRhKCkpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnROb3ROdWxsKHJlZi5nZXREaWdlc3RJbnB1dFN0cmVhbSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0VHJ1ZShkaWdlc3RJbnB1dEVxdWFsKHJlZikpOworICAgICAgICAgICAgICAgIH0KKwkgICAgICAgIHZhbGlkYXRlQ29udGV4dCA9IG5ldyBET01WYWxpZGF0ZUNvbnRleHQKKwkJICAgIChUZXN0VXRpbHMuZ2V0UHVibGljS2V5KENSWVBUT19BTEdTW2ldKSwgCisJCSAgICBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCkpOworCSAgICAgICAgdmFsaWRhdGVDb250ZXh0LnNldFVSSURlcmVmZXJlbmNlcihkZXJlZmVycmVyKTsKKworICAgICAgICAgICAgICAgIGlmIChjYWNoZSkgeworICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZUNvbnRleHQuc2V0UHJvcGVydHkKKyAgICAgICAgICAgICAgICAgICAgICAgICgiamF2YXgueG1sLmNyeXB0by5kc2lnLmNhY2hlUmVmZXJlbmNlIiwgQm9vbGVhbi5UUlVFKTsKKyAgICAgICAgICAgICAgICB9CisJCWJvb2xlYW4gcmVzdWx0ID0gc2lnLnZhbGlkYXRlKHZhbGlkYXRlQ29udGV4dCk7CisJCWFzc2VydFRydWUocmVzdWx0KTsKKyAgICAgCisJCUl0ZXJhdG9yIGl0ZXIgPSBzaWcuZ2V0U2lnbmVkSW5mbygpLmdldFJlZmVyZW5jZXMoKS5pdGVyYXRvcigpOworCQlmb3IgKGludCBqPTA7IGl0ZXIuaGFzTmV4dCgpOyBqKyspIHsKKwkJICAgIFJlZmVyZW5jZSB2YWxpZGF0ZWRfcmVmID0gKFJlZmVyZW5jZSkgaXRlci5uZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghY2FjaGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydE51bGwodmFsaWRhdGVkX3JlZi5nZXREZXJlZmVyZW5jZWREYXRhKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0TnVsbCh2YWxpZGF0ZWRfcmVmLmdldERpZ2VzdElucHV0U3RyZWFtKCkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0Tm90TnVsbCh2YWxpZGF0ZWRfcmVmLmdldERlcmVmZXJlbmNlZERhdGEoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnROb3ROdWxsKHZhbGlkYXRlZF9yZWYuZ2V0RGlnZXN0SW5wdXRTdHJlYW0oKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRUcnVlKGRpZ2VzdElucHV0RXF1YWwodmFsaWRhdGVkX3JlZikpOworICAgICAgICAgICAgICAgICAgICB9CisJCSAgICBieXRlW10gZHYgPSAgdmFsaWRhdGVkX3JlZi5nZXREaWdlc3RWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBieXRlW10gY2R2ID0gdmFsaWRhdGVkX3JlZi5nZXRDYWxjdWxhdGVkRGlnZXN0VmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0VHJ1ZShBcnJheXMuZXF1YWxzKGR2LCBjZHYpKTsKKwkJICAgIGJvb2xlYW4gdmFsaWQgPSB2YWxpZGF0ZWRfcmVmLnZhbGlkYXRlKHZhbGlkYXRlQ29udGV4dCk7CisJCSAgICBhc3NlcnRUcnVlKHZhbGlkKTsKKwkJfQorCSAgICB9IGNhdGNoIChYTUxTaWduYXR1cmVFeGNlcHRpb24geHNlKSB7CisJCWZhaWwoIlVuZXhwZWN0ZWQgRXhjZXB0aW9uOiAiICsgeHNlKTsgCisJICAgIH0KKwl9CisgICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIGRpZ2VzdElucHV0RXF1YWwoUmVmZXJlbmNlIHJlZikgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIE1lc3NhZ2VEaWdlc3QgbWQgPSBNZXNzYWdlRGlnZXN0LmdldEluc3RhbmNlKCJTSEExIik7CisgICAgICAgIElucHV0U3RyZWFtIGlzID0gcmVmLmdldERpZ2VzdElucHV0U3RyZWFtKCk7CisgICAgICAgIGludCBuYnl0ZXM7CisgICAgICAgIGJ5dGVbXSBidWYgPSBuZXcgYnl0ZVsyNTZdOworICAgICAgICB3aGlsZSAoKG5ieXRlcyA9IGlzLnJlYWQoYnVmLCAwLCBidWYubGVuZ3RoKSkgIT0gLTEpIHsKKyAgICAgICAgICAgIG1kLnVwZGF0ZShidWYsIDAsIG5ieXRlcyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIEFycmF5cy5lcXVhbHMobWQuZGlnZXN0KCksIHJlZi5nZXREaWdlc3RWYWx1ZSgpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL1NlY3VyZVhTTFRUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL1NlY3VyZVhTTFRUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJhYmFkMAotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvU2VjdXJlWFNMVFRlc3QuamF2YQpAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IDIwMDYtMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8udGVzdC5kc2lnOworCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEuc2VjdXJpdHkuU2VjdXJpdHk7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLmRvbS4qOworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnczYy5kb20uKjsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8udGVzdC5LZXlTZWxlY3RvcnM7CisKK3B1YmxpYyBjbGFzcyBTZWN1cmVYU0xUVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgIHN0YXRpYyB7CisgICAgICAgIFNlY3VyaXR5Lmluc2VydFByb3ZpZGVyQXQKKyAgICAgICAgICAgIChuZXcgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJKCksIDEpOworICAgIH0KKworICAgIHB1YmxpYyBTZWN1cmVYU0xUVGVzdChTdHJpbmcgbmFtZSkgeworCXN1cGVyKG5hbWUpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgICBTdHJpbmcgZnMgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImZpbGUuc2VwYXJhdG9yIik7CisgICAgICAgIFN0cmluZyBiYXNlID0gU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIikgPT0gbnVsbCA/ICIuLyI6IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpOworICAgIAkKKyAgICAgICAgRmlsZSBiYXNlRGlyID0gbmV3IEZpbGUoYmFzZSArIGZzICsgImRhdGEiIAorCSAgICArIGZzICsgImphdmF4IiArIGZzICsgInhtbCIgKyBmcyArICJjcnlwdG8iLCAiZHNpZyIpOworCisgICAgICAgIFN0cmluZ1tdIHNpZ25hdHVyZXMgPQorICAgICAgICAgICAgeyAic2lnbmF0dXJlMS54bWwiLCAic2lnbmF0dXJlMi54bWwiLCAic2lnbmF0dXJlMy54bWwiIH07CisKKyAgICAgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisgICAgICAgIGRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKyAgICAgICAgWE1MU2lnbmF0dXJlRmFjdG9yeSBmYWMgPSBYTUxTaWduYXR1cmVGYWN0b3J5LmdldEluc3RhbmNlKCJET00iKTsKKyAgICAgICAgRmlsZSBmID0gbmV3IEZpbGUoImRvYy54bWwiKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPHNpZ25hdHVyZXMubGVuZ3RoOyBpKyspIHsKKwkgICAgU3RyaW5nIHNpZ25hdHVyZSA9IHNpZ25hdHVyZXNbaV07CisgICAgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIlZhbGlkYXRpbmcgIiArIHNpZ25hdHVyZSk7CisgICAgICAgICAgICBEb2N1bWVudCBkb2MgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCkucGFyc2UKKyAgICAgICAgICAgICAgICAobmV3IEZpbGVJbnB1dFN0cmVhbShuZXcgRmlsZShiYXNlRGlyLCBzaWduYXR1cmUpKSk7CisKKyAgICAgICAgICAgIE5vZGVMaXN0IG5sID0KKyAgICAgICAgICAgICAgICBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhYTUxTaWduYXR1cmUuWE1MTlMsICJTaWduYXR1cmUiKTsKKyAgICAgICAgICAgIGlmIChubC5nZXRMZW5ndGgoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiQ2Fubm90IGZpbmQgU2lnbmF0dXJlIGVsZW1lbnQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgRE9NVmFsaWRhdGVDb250ZXh0IHZhbENvbnRleHQgPSBuZXcgRE9NVmFsaWRhdGVDb250ZXh0CisgICAgICAgICAgICAgICAgKG5ldyBLZXlTZWxlY3RvcnMuS2V5VmFsdWVLZXlTZWxlY3RvcigpLCBubC5pdGVtKDApKTsKKwkgICAgLy8gZW5hYmxlIHJlZmVyZW5jZSBjYWNoaW5nIGluIHlvdXIgdmFsaWRhdGlvbiBjb250ZXh0IAorCSAgICB2YWxDb250ZXh0LnNldFByb3BlcnR5CisgICAgCQkoImphdmF4LnhtbC5jcnlwdG8uZHNpZy5jYWNoZVJlZmVyZW5jZSIsIEJvb2xlYW4uVFJVRSk7CisKKyAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSBmaWxlIGlzIG5vdCBsZWZ0IG92ZXIgZnJvbSBwcmV2aW91cyBydW4KKyAgICAgICAgICAgIGYuZGVsZXRlKCk7CisKKyAgICAgICAgICAgIFhNTFNpZ25hdHVyZSBzaWcgPSBmYWMudW5tYXJzaGFsWE1MU2lnbmF0dXJlKHZhbENvbnRleHQpOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpZiAoc2lnLnZhbGlkYXRlKHZhbENvbnRleHQpKSB7CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiU2lnbmF0dXJlIFVORVhQRUNURURMWSBwYXNzZWQgdmFsaWRhdGlvbiIpOworICAgICAgICAgICAgICAgIH0KKwkJc2lnLmdldFNpZ25lZEluZm8oKS5nZXRSZWZlcmVuY2VzKCkuZ2V0KDApOworICAgICAgICAgICAgfSBjYXRjaCAoWE1MU2lnbmF0dXJlRXhjZXB0aW9uIHhzZSkgeworICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgZ29vZCwgYnV0IHN0aWxsIG1ha2Ugc3VyZSBhdHRhY2sgd2FzIG5vdCBzdWNjZXNzZnVsCisgICAgICAgICAgICAgICAgLy8gYnkgZmFsbGluZyB0aHJvdWdoIGFuZCBjaGVja2luZyBpZiBmaWxlIHdhcyBjcmVhdGVkCisvLwkJeHNlLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGYuZXhpc3RzKCkpIHsKKyAgICAgICAgICAgICAgICBmLmRlbGV0ZSgpOyAvLyBjbGVhbnVwIGZpbGUuIGNvbW1lbnQgb3V0IHdoZW4gZGVidWdnaW5nCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbgorICAgICAgICAgICAgICAgICAgICAoIlRlc3QgRkFJTEVEOiBkb2MueG1sIHdhcyBzdWNjZXNzZnVsbHkgY3JlYXRlZCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiVGVzdCBQQVNTRUQiKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL1NpZ25hdHVyZU1ldGhvZFRlc3QuamF2YSBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvU2lnbmF0dXJlTWV0aG9kVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1Mzk1MGQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL1NpZ25hdHVyZU1ldGhvZFRlc3QuamF2YQpAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA2IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by50ZXN0LmRzaWc7CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5Lio7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuKjsKKworLyoqCisgKiBVbml0IHRlc3QgZm9yIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5TaWduYXR1cmVNZXRob2QKKyAqCisgKiBAdmVyc2lvbiAkSWQkCisgKiBAYXV0aG9yIFZhbGVyaWUgUGVuZworICovCitwdWJsaWMgY2xhc3MgU2lnbmF0dXJlTWV0aG9kVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgIFhNTFNpZ25hdHVyZUZhY3RvcnkgZmFjdG9yeTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTSUdfQUxHT1NbXSA9IHsKKwlTaWduYXR1cmVNZXRob2QuRFNBX1NIQTEsCisJU2lnbmF0dXJlTWV0aG9kLlJTQV9TSEExLAorCVNpZ25hdHVyZU1ldGhvZC5ITUFDX1NIQTEKKyAgICB9OworCisgICAgcHVibGljIFNpZ25hdHVyZU1ldGhvZFRlc3QoKSB7CisJc3VwZXIoIlNpZ25hdHVyZU1ldGhvZFRlc3QiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgU2lnbmF0dXJlTWV0aG9kVGVzdChTdHJpbmcgbmFtZSkgeworCXN1cGVyKG5hbWUpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbiB7IAorCWZhY3RvcnkgPSBYTUxTaWduYXR1cmVGYWN0b3J5LmdldEluc3RhbmNlCisgICAgICAgICAgICAoIkRPTSIsIG5ldyBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbS5YTUxEU2lnUkkoKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVhckRvd24oKSB7IH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3Rpc0ZlYXR1cmVTdXBwb3J0ZWQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlTaWduYXR1cmVNZXRob2Qgc207CisJZm9yIChpbnQgaSA9IDA7IGkgPCBTSUdfQUxHT1MubGVuZ3RoOyBpKyspIHsKKwkgICAgU3RyaW5nIGFsZ28gPSBTSUdfQUxHT1NbaV07CisJICAgIHNtID0gZmFjdG9yeS5uZXdTaWduYXR1cmVNZXRob2QoYWxnbywgbnVsbCk7CisJICAgIHRyeSB7CisJCXNtLmlzRmVhdHVyZVN1cHBvcnRlZChudWxsKTsgCisJCWZhaWwoIlNob3VsZCByYWlzZSBhIE5QRSBmb3IgbnVsbCBmZWF0dXJlIik7IAorCSAgICB9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBucGUpIHt9CisJICAgIAorCSAgICBhc3NlcnRUcnVlKCFzbS5pc0ZlYXR1cmVTdXBwb3J0ZWQoIm5vdCBzdXBwb3J0ZWQiKSk7CisJfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RDb25zdHJ1Y3RvcigpIHRocm93cyBFeGNlcHRpb24geworCS8vIHRlc3QgWE1MU2lnbmF0dXJlRmFjdG9yeS5uZXdBbGdvcml0aG1NZXRob2QKKwkvLyAoU3RyaW5nIGFsZ29yaXRobSwgQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyBwYXJhbXMpCisJLy8gZm9yIGdlbmVyYXRpbmcgU2lnbmF0dXJlTWV0aG9kIG9iamVjdHMKKwlTaWduYXR1cmVNZXRob2Qgc207CisJZm9yIChpbnQgaSA9IDA7IGkgPCBTSUdfQUxHT1MubGVuZ3RoOyBpKyspIHsKKwkgICAgU3RyaW5nIGFsZ28gPSBTSUdfQUxHT1NbaV07CisJICAgIHNtID0gZmFjdG9yeS5uZXdTaWduYXR1cmVNZXRob2QoYWxnbywgbnVsbCk7CisJICAgIGFzc2VydEVxdWFscyhzbS5nZXRBbGdvcml0aG0oKSwgYWxnbyk7CisKKwkgICAgYXNzZXJ0TnVsbChzbS5nZXRQYXJhbWV0ZXJTcGVjKCkpOworCSAgICB0cnkgeworCQlzbSA9IGZhY3RvcnkubmV3U2lnbmF0dXJlTWV0aG9kCisJCSAgICAoYWxnbywgbmV3IFRlc3RVdGlscy5NeU93blNpZ25hdHVyZU1ldGhvZFBhcmFtZXRlclNwZWMoKSk7CisJCWZhaWwoIlNob3VsZCByYWlzZSBhbiBJQVBFIGZvciBpbnZhbGlkIHBhcmFtZXRlcnMiKTsgCisJICAgIH0gY2F0Y2ggKEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24gaWFwZSkgeworCSAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKwkJZmFpbCgiU2hvdWxkIHJhaXNlIGFuIElBUEUgaW5zdGVhZCBvZiAiICsgZXgpOworCSAgICB9CisJfQorCisJdHJ5IHsKKwkgICAgc20gPSBmYWN0b3J5Lm5ld1NpZ25hdHVyZU1ldGhvZCgibm9uLWV4aXN0ZW50IiwgbnVsbCk7IAorCSAgICBmYWlsKCJTaG91bGQgcmFpc2UgYW4gTlNBRSBmb3Igbm9uLWV4aXN0ZW50IGFsZ29zIik7IAorCX0gY2F0Y2ggKE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiBuc2FlKSB7fQorCisJdHJ5IHsKKwkgICAgc20gPSBmYWN0b3J5Lm5ld1NpZ25hdHVyZU1ldGhvZChudWxsLCBudWxsKTsgCisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhIE5QRSBmb3IgbnVsbCBhbGdvIik7IAorCX0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIG5wZSkge30KKyAgICB9IAorfQorCmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL1NpZ25hdHVyZVByb3BlcnRpZXNUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL1NpZ25hdHVyZVByb3BlcnRpZXNUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNmMTJhNwotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvU2lnbmF0dXJlUHJvcGVydGllc1Rlc3QuamF2YQpAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA2LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLnRlc3QuZHNpZzsKKworaW1wb3J0IGphdmEudXRpbC4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy4qOworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLio7CisKKy8qKgorICogVW5pdCB0ZXN0IGZvciBqYXZheC54bWwuY3J5cHRvLmRzaWcuU2lnbmF0dXJlUHJvcGVydGllcworICoKKyAqIEB2ZXJzaW9uICRJZCQKKyAqIEBhdXRob3IgVmFsZXJpZSBQZW5nCisgKi8KK3B1YmxpYyBjbGFzcyBTaWduYXR1cmVQcm9wZXJ0aWVzVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgIHByaXZhdGUgWE1MU2lnbmF0dXJlRmFjdG9yeSBmYWN0b3J5OworICAgIHByaXZhdGUgU3RyaW5nIGlkID0gImlkIjsKKyAgICBwcml2YXRlIFNpZ25hdHVyZVByb3BlcnR5IHByb3A7CisKKyAgICBwdWJsaWMgU2lnbmF0dXJlUHJvcGVydGllc1Rlc3QoKSB7CisJc3VwZXIoIlNpZ25hdHVyZVByb3BlcnRpZXNUZXN0Iik7CisgICAgfQorCisgICAgcHVibGljIFNpZ25hdHVyZVByb3BlcnRpZXNUZXN0KFN0cmluZyBuYW1lKSB7CisJc3VwZXIobmFtZSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlmYWN0b3J5ID0gWE1MU2lnbmF0dXJlRmFjdG9yeS5nZXRJbnN0YW5jZQorICAgICAgICAgICAgKCJET00iLCBuZXcgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJKCkpOworCXByb3AgPSBmYWN0b3J5Lm5ld1NpZ25hdHVyZVByb3BlcnR5CisJICAgIChDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KG5ldyBUZXN0VXRpbHMuTXlPd25YTUxTdHJ1Y3R1cmUoKSksCisJICAgICAicHJvcFRhcmdldCIsICJwcm9wSWQiKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgdGVhckRvd24oKSB7fQorICAgIAorICAgIHB1YmxpYyB2b2lkIHRlc3RDb25zdHJ1Y3RvcigpIHsKKwkvLyB0ZXN0IFhNTFNpZ25hdHVyZUZhY3RvcnkubmV3U2lnbmF0dXJlUHJvcGVydGllcyhMaXN0LCBTdHJpbmcpIAorCVNpZ25hdHVyZVByb3BlcnRpZXMgcHJvcHM7CisKKwl0cnkgeworCSAgICBwcm9wcyA9IGZhY3RvcnkubmV3U2lnbmF0dXJlUHJvcGVydGllcyhudWxsLCBpZCk7IAorCSAgICBmYWlsKCJTaG91bGQgcmFpc2UgYSBOUEUgZm9yIG51bGwgY29udGVudCIpOyAKKwl9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBucGUpIHsKKwl9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKwkgICAgZmFpbCgiU2hvdWxkIHJhaXNlIGEgTlBFIGZvciBudWxsIGNvbnRlbnQgaW5zdGVhZCBvZiAiICsgZXgpOworCX0KKwlMaXN0IGxpc3QgPSBuZXcgVmVjdG9yKCk7CisJdHJ5IHsKKwkgICAgcHJvcHMgPSBmYWN0b3J5Lm5ld1NpZ25hdHVyZVByb3BlcnRpZXMobGlzdCwgaWQpOyAKKwkgICAgZmFpbCgiU2hvdWxkIHJhaXNlIGFuIElBRSBmb3IgZW1wdHkgY29udGVudCIpOyAKKwl9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKSB7CisJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhbiBJQUUgZm9yIGVtcHR5IGNvbnRlbnQgaW5zdGVhZCBvZiAiICsgZXgpOworCX0KKwlTdHJpbmcgc3RyRW50cnkgPSAid3JvbmcgdHlwZSI7CisJbGlzdC5hZGQoc3RyRW50cnkpOworCXRyeSB7CisJICAgIHByb3BzID0gZmFjdG9yeS5uZXdTaWduYXR1cmVQcm9wZXJ0aWVzKGxpc3QsIGlkKTsgCisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhIENDRSBmb3IgY29udGVudCBjb250YWluaW5nICIgKworCQkgImludmFsaWQsIGkuZS4gbm9uLVNpZ25hdHVyZVByb3BlcnR5LCBlbnRyaWVzIik7IAorCX0gY2F0Y2ggKENsYXNzQ2FzdEV4Y2VwdGlvbiBjY2UpIHsKKwl9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKwkgICAgZmFpbCgiU2hvdWxkIHJhaXNlIGEgQ0NFIGZvciBjb250ZW50IHdpdGggaW52YWxpZCBlbnRyaWVzICIgKworCQkgImluc3RlYWQgb2YgIiArIGV4KTsKKwl9CisJbGlzdC5yZW1vdmUoc3RyRW50cnkpOworCWxpc3QuYWRkKHByb3ApOworCXByb3BzID0gZmFjdG9yeS5uZXdTaWduYXR1cmVQcm9wZXJ0aWVzKGxpc3QsIGlkKTsKKwlhc3NlcnROb3ROdWxsKHByb3BzKTsKKwlMaXN0IHVubW9kaWZpYWJsZSA9IHByb3BzLmdldFByb3BlcnRpZXMoKTsKKwlhc3NlcnROb3ROdWxsKHVubW9kaWZpYWJsZSk7CisJdHJ5IHsKKwkgICAgdW5tb2RpZmlhYmxlLmFkZChwcm9wKTsKKwkgICAgZmFpbCgiU2hvdWxkIHJldHVybiBhbiB1bm1vZGlmaWFibGUgTGlzdCBvYmplY3QiKTsKKwl9IGNhdGNoIChVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiB1b2UpIHt9CisJYXNzZXJ0VHJ1ZShBcnJheXMuZXF1YWxzKHVubW9kaWZpYWJsZS50b0FycmF5KCksIGxpc3QudG9BcnJheSgpKSk7CisJYXNzZXJ0Tm90TnVsbChwcm9wcyk7CisJYXNzZXJ0RXF1YWxzKHByb3BzLmdldElkKCksIGlkKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0aXNGZWF0dXJlU3VwcG9ydGVkKCkgeworCUxpc3QgbGlzdCA9IG5ldyBWZWN0b3IoKTsKKwlsaXN0LmFkZChwcm9wKTsKKwlTaWduYXR1cmVQcm9wZXJ0aWVzIHByb3BzID0gZmFjdG9yeS5uZXdTaWduYXR1cmVQcm9wZXJ0aWVzKGxpc3QsIGlkKTsKKwl0cnkgeworCSAgICBwcm9wcy5pc0ZlYXR1cmVTdXBwb3J0ZWQobnVsbCk7IAorCSAgICBmYWlsKCJTaG91bGQgcmFpc2UgYSBOUEUgZm9yIG51bGwgZmVhdHVyZSIpOyAKKwl9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBucGUpIHt9CisKKwlhc3NlcnRUcnVlKCFwcm9wcy5pc0ZlYXR1cmVTdXBwb3J0ZWQoIm5vdCBzdXBwb3J0ZWQiKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9TaWduYXR1cmVQcm9wZXJ0eVRlc3QuamF2YSBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvU2lnbmF0dXJlUHJvcGVydHlUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJlZWEzNgotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvU2lnbmF0dXJlUHJvcGVydHlUZXN0LmphdmEKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNi0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by50ZXN0LmRzaWc7CisKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay4qOworCisvKioKKyAqIFVuaXQgdGVzdCBmb3IgamF2YXgueG1sLmNyeXB0by5kc2lnLlNpZ25hdHVyZVByb3BlcnR5CisgKgorICogQHZlcnNpb24gJElkJAorICogQGF1dGhvciBWYWxlcmllIFBlbmcKKyAqLworcHVibGljIGNsYXNzIFNpZ25hdHVyZVByb3BlcnR5VGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgIHByaXZhdGUgWE1MU2lnbmF0dXJlRmFjdG9yeSBmYWN0b3J5OworICAgIHByaXZhdGUgU3RyaW5nIHRhcmdldCA9ICJ0YXJnZXQiOworICAgIHByaXZhdGUgU3RyaW5nIGlkID0gImlkIjsKKworICAgIHB1YmxpYyBTaWduYXR1cmVQcm9wZXJ0eVRlc3QoKSB7CisJc3VwZXIoIlNpZ25hdHVyZVByb3BlcnR5VGVzdCIpOworICAgIH0KKworICAgIHB1YmxpYyBTaWduYXR1cmVQcm9wZXJ0eVRlc3QoU3RyaW5nIG5hbWUpIHsKKwlzdXBlcihuYW1lKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24geworCWZhY3RvcnkgPSBYTUxTaWduYXR1cmVGYWN0b3J5LmdldEluc3RhbmNlCisgICAgICAgICAgICAoIkRPTSIsIG5ldyBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbS5YTUxEU2lnUkkoKSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHRlYXJEb3duKCkge30KKyAgICAKKyAgICBwdWJsaWMgdm9pZCB0ZXN0Q29uc3RydWN0b3IoKSB7CisJLy8gdGVzdCBYTUxTaWduYXR1cmVGYWN0b3J5Lm5ld1NpZ25hdHVyZVByb3BlcnR5KExpc3QsIFN0cmluZywgU3RyaW5nKSAKKwlTaWduYXR1cmVQcm9wZXJ0eSBwcm9wOworCisJdHJ5IHsKKwkgICAgcHJvcCA9IGZhY3RvcnkubmV3U2lnbmF0dXJlUHJvcGVydHkobnVsbCwgdGFyZ2V0LCBpZCk7IAorCSAgICBmYWlsKCJTaG91bGQgcmFpc2UgYSBOUEUgZm9yIG51bGwgY29udGVudCIpOyAKKwl9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBucGUpIHsKKwl9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKwkgICAgZmFpbCgiU2hvdWxkIHJhaXNlIGEgTlBFIGZvciBudWxsIGNvbnRlbnQgaW5zdGVhZCBvZiAiICsgZXgpOworCX0KKwlMaXN0IGxpc3QgPSBuZXcgVmVjdG9yKCk7CisJdHJ5IHsKKwkgICAgcHJvcCA9IGZhY3RvcnkubmV3U2lnbmF0dXJlUHJvcGVydHkobGlzdCwgdGFyZ2V0LCBpZCk7IAorCSAgICBmYWlsKCJTaG91bGQgcmFpc2UgYW4gSUFFIGZvciBlbXB0eSBjb250ZW50Iik7IAorCX0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpYWUpIHsKKwl9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKwkgICAgZmFpbCgiU2hvdWxkIHJhaXNlIGFuIElBRSBmb3IgZW1wdHkgY29udGVudCBpbnN0ZWFkIG9mICIgKyBleCk7CisJfQorCVN0cmluZyBzdHJFbnRyeSA9ICJ3cm9uZyB0eXBlIjsKKwlsaXN0LmFkZChzdHJFbnRyeSk7CisJdHJ5IHsKKwkgICAgcHJvcCA9IGZhY3RvcnkubmV3U2lnbmF0dXJlUHJvcGVydHkobGlzdCwgdGFyZ2V0LCBpZCk7IAorCSAgICBmYWlsKCJTaG91bGQgcmFpc2UgYSBDQ0UgZm9yIGNvbnRlbnQgY29udGFpbmluZyAiICsKKwkJICJpbnZhbGlkLCBpLmUuIG5vbi1YTUxTdHJ1Y3R1cmUsIGVudHJpZXMiKTsgCisJfSBjYXRjaCAoQ2xhc3NDYXN0RXhjZXB0aW9uIGNjZSkgeworCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworCSAgICBmYWlsKCJTaG91bGQgcmFpc2UgYSBDQ0UgZm9yIGNvbnRlbnQgd2l0aCBpbnZhbGlkIGVudHJpZXMgIiArCisJCSAiaW5zdGVhZCBvZiAiICsgZXgpOworCX0KKwlsaXN0LnJlbW92ZShzdHJFbnRyeSk7CisJbGlzdC5hZGQobmV3IFRlc3RVdGlscy5NeU93blhNTFN0cnVjdHVyZSgpKTsKKwl0cnkgeworCSAgICBwcm9wID0gZmFjdG9yeS5uZXdTaWduYXR1cmVQcm9wZXJ0eShsaXN0LCBudWxsLCBpZCk7CisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhIE5QRSBmb3IgbnVsbCB0YXJnZXQiKTsgCisJfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gbnBlKSB7CisJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhIE5QRSBmb3IgbnVsbCB0YXJnZXQgaW5zdGVhZCBvZiAiICsgZXgpOworCX0KKworCXByb3AgPSBmYWN0b3J5Lm5ld1NpZ25hdHVyZVByb3BlcnR5KGxpc3QsIHRhcmdldCwgaWQpOworCWFzc2VydE5vdE51bGwocHJvcCk7CisJTGlzdCB1bm1vZGlmaWFibGUgPSBwcm9wLmdldENvbnRlbnQoKTsKKwlhc3NlcnROb3ROdWxsKHVubW9kaWZpYWJsZSk7CisJdHJ5IHsKKwkgICAgdW5tb2RpZmlhYmxlLmFkZChuZXcgVGVzdFV0aWxzLk15T3duWE1MU3RydWN0dXJlKCkpOworCSAgICBmYWlsKCJTaG91bGQgcmV0dXJuIGFuIHVubW9kaWZpYWJsZSBMaXN0IG9iamVjdCIpOworCX0gY2F0Y2ggKFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIHVvZSkge30KKwlhc3NlcnRUcnVlKEFycmF5cy5lcXVhbHModW5tb2RpZmlhYmxlLnRvQXJyYXkoKSwgbGlzdC50b0FycmF5KCkpKTsKKwlhc3NlcnRFcXVhbHMocHJvcC5nZXRUYXJnZXQoKSwgdGFyZ2V0KTsKKwlhc3NlcnRFcXVhbHMocHJvcC5nZXRJZCgpLCBpZCk7CisJYXNzZXJ0Tm90TnVsbChwcm9wKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0aXNGZWF0dXJlU3VwcG9ydGVkKCkgeworCUxpc3QgbGlzdCA9IG5ldyBWZWN0b3IoKTsKKwlsaXN0LmFkZChuZXcgVGVzdFV0aWxzLk15T3duWE1MU3RydWN0dXJlKCkpOworCVNpZ25hdHVyZVByb3BlcnR5IHByb3AgPSBmYWN0b3J5Lm5ld1NpZ25hdHVyZVByb3BlcnR5CisJICAgIChsaXN0LCB0YXJnZXQsIGlkKTsKKwl0cnkgeworCSAgICBwcm9wLmlzRmVhdHVyZVN1cHBvcnRlZChudWxsKTsgCisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhIE5QRSBmb3IgbnVsbCBmZWF0dXJlIik7IAorCX0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIG5wZSkge30KKworCWFzc2VydFRydWUoIXByb3AuaXNGZWF0dXJlU3VwcG9ydGVkKCJub3Qgc3VwcG9ydGVkIikpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvU2lnbmF0dXJlVmFsaWRhdG9yLmphdmEgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL1NpZ25hdHVyZVZhbGlkYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjODMzMDQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL1NpZ25hdHVyZVZhbGlkYXRvci5qYXZhCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IDIwMDYtMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8udGVzdC5kc2lnOworCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEudXRpbC4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuZG9tLkRPTVZhbGlkYXRlQ29udGV4dDsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS50cmF2ZXJzYWwuKjsKKworLyoqCisgKiBUaGlzIGlzIGEgY2xhc3Mgd2hpY2ggcGVyZm9ybXMgeG1sIHNpZ25hdHVyZSB2YWxpZGF0aW9uIHVwb24gcmVxdWVzdAorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqIEBhdXRob3IgVmFsZXJpZSBQZW5nCisgKi8KK3B1YmxpYyBjbGFzcyBTaWduYXR1cmVWYWxpZGF0b3IgeworCisgICAgcHJpdmF0ZSBGaWxlIGRpcjsKKworICAgIHB1YmxpYyBTaWduYXR1cmVWYWxpZGF0b3IoRmlsZSBiYXNlKSB7CisJZGlyID0gYmFzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiB2YWxpZGF0ZShTdHJpbmcgZm4sIEtleVNlbGVjdG9yIGtzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlyZXR1cm4gdmFsaWRhdGUoZm4sIGtzLCBudWxsKTsKKyAgICB9CisKKyAgICBwdWJsaWMgRE9NVmFsaWRhdGVDb250ZXh0IGdldFZhbGlkYXRlQ29udGV4dChTdHJpbmcgZm4sIEtleVNlbGVjdG9yIGtzKQorCXRocm93cyBFeGNlcHRpb24geworICAgICAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKyAgICAgICAgZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworICAgICAgICBkYmYuc2V0VmFsaWRhdGluZyhmYWxzZSk7CisgICAgICAgIERvY3VtZW50IGRvYyA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKS5wYXJzZShuZXcgRmlsZShkaXIsIGZuKSk7CisgICAgICAgIEVsZW1lbnQgc2lnRWxlbWVudCA9IGdldFNpZ25hdHVyZUVsZW1lbnQoZG9jKTsKKwlpZiAoc2lnRWxlbWVudCA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBFeGNlcHRpb24oIkNvdWxkbid0IGZpbmQgc2lnbmF0dXJlIEVsZW1lbnQiKTsKKwl9CisJRE9NVmFsaWRhdGVDb250ZXh0IHZjID0gbmV3IERPTVZhbGlkYXRlQ29udGV4dChrcywgc2lnRWxlbWVudCk7CisJdmMuc2V0QmFzZVVSSShkaXIudG9VUkkoKS50b1N0cmluZygpKTsKKwlyZXR1cm4gdmM7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gdmFsaWRhdGUoU3RyaW5nIGZuLCBLZXlTZWxlY3RvciBrcywgVVJJRGVyZWZlcmVuY2VyIHVkKQorCXRocm93cyBFeGNlcHRpb24geworCisJRE9NVmFsaWRhdGVDb250ZXh0IHZjID0gZ2V0VmFsaWRhdGVDb250ZXh0KGZuLCBrcyk7CisJaWYgKHVkICE9IG51bGwpIHsKKwkgICAgdmMuc2V0VVJJRGVyZWZlcmVuY2VyKHVkKTsKKwl9CisKKwlyZXR1cm4gdmFsaWRhdGUodmMpOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHZhbGlkYXRlKERPTVZhbGlkYXRlQ29udGV4dCB2YykgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgICAgWE1MU2lnbmF0dXJlRmFjdG9yeSBmYWN0b3J5ID0gWE1MU2lnbmF0dXJlRmFjdG9yeS5nZXRJbnN0YW5jZQorICAgICAgICAgICAgKCJET00iLCBuZXcgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJKCkpOworICAgIAlYTUxTaWduYXR1cmUgc2lnbmF0dXJlID0gZmFjdG9yeS51bm1hcnNoYWxYTUxTaWduYXR1cmUodmMpOworICAgIAlib29sZWFuIGNvcmVWYWxpZGl0eSA9IHNpZ25hdHVyZS52YWxpZGF0ZSh2Yyk7CisgICAgCisgICAgCS8vIENoZWNrIGNvcmUgdmFsaWRhdGlvbiBzdGF0dXMKKyAgICAJaWYgKGNvcmVWYWxpZGl0eSA9PSBmYWxzZSkgeworICAgIAkgICAgLy8gY2hlY2sgdGhlIHZhbGlkYXRpb24gc3RhdHVzIG9mIGVhY2ggUmVmZXJlbmNlCisgICAgCSAgICBJdGVyYXRvciBpID0gc2lnbmF0dXJlLmdldFNpZ25lZEluZm8oKS5nZXRSZWZlcmVuY2VzKCkuaXRlcmF0b3IoKTsKKyAgICAJICAgIGZvciAoaW50IGo9MDsgaS5oYXNOZXh0KCk7IGorKykgeworCQlSZWZlcmVuY2UgcmVmZXJlbmNlID0gKFJlZmVyZW5jZSkgaS5uZXh0KCk7CisJCXJlZmVyZW5jZS52YWxpZGF0ZSh2Yyk7CisgICAgCSAgICB9CisgICAgCX0KKyAgICAgICAgcmV0dXJuIGNvcmVWYWxpZGl0eTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIEVsZW1lbnQgZ2V0U2lnbmF0dXJlRWxlbWVudChEb2N1bWVudCBkb2MpIHsKKyAgICAgICAgTm9kZUl0ZXJhdG9yIG5pID0gKChEb2N1bWVudFRyYXZlcnNhbClkb2MpLmNyZWF0ZU5vZGVJdGVyYXRvcigKKyAgICAgICAgICAgIGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKSwgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsIG51bGwsIGZhbHNlKTsKKyAgICAgICAgCisgICAgICAgIGZvcihOb2RlIG4gPSBuaS5uZXh0Tm9kZSgpOyBuICE9IG51bGw7IG4gPSBuaS5uZXh0Tm9kZSgpICkgeworICAgICAgICAgICAgaWYoIlNpZ25hdHVyZSIuZXF1YWxzKG4uZ2V0TG9jYWxOYW1lKCkpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIChFbGVtZW50KSBuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvU2lnbmVkSW5mb1Rlc3QuamF2YSBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvU2lnbmVkSW5mb1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzY5NjNhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9TaWduZWRJbmZvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDYgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLnRlc3QuZHNpZzsKKworaW1wb3J0IGphdmEuc2VjdXJpdHkuU2VjdXJpdHk7CitpbXBvcnQgamF2YS51dGlsLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLnNwZWMuQzE0Tk1ldGhvZFBhcmFtZXRlclNwZWM7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuKjsKKworLyoqCisgKiBVbml0IHRlc3QgZm9yIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5TaWduZWRJbmZvCisgKgorICogQHZlcnNpb24gJElkJAorICogQGF1dGhvciBWYWxlcmllIFBlbmcKKyAqLworcHVibGljIGNsYXNzIFNpZ25lZEluZm9UZXN0IGV4dGVuZHMgVGVzdENhc2UgeworICAgIHByaXZhdGUgWE1MU2lnbmF0dXJlRmFjdG9yeSBmYWM7CisgICAgcHJpdmF0ZSBDYW5vbmljYWxpemF0aW9uTWV0aG9kIGNtOworICAgIHByaXZhdGUgU2lnbmF0dXJlTWV0aG9kIHNtOworICAgIHByaXZhdGUgTGlzdCByZWZlcmVuY2VzOworCisgICAgc3RhdGljIHsKKyAgICAgICAgU2VjdXJpdHkuaW5zZXJ0UHJvdmlkZXJBdAorICAgICAgICAgICAgKG5ldyBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbS5YTUxEU2lnUkkoKSwgMSk7CisgICAgfQorCisgICAgcHVibGljIFNpZ25lZEluZm9UZXN0KCkgeworCXN1cGVyKCJTaWduZWRJbmZvVGVzdCIpOworICAgIH0KKworICAgIHB1YmxpYyBTaWduZWRJbmZvVGVzdChTdHJpbmcgbmFtZSkgeworCXN1cGVyKG5hbWUpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZhYyA9IFhNTFNpZ25hdHVyZUZhY3RvcnkuZ2V0SW5zdGFuY2UKKyAgICAgICAgICAgICgiRE9NIiwgbmV3IG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tLlhNTERTaWdSSSgpKTsKKwljbSA9IGZhYy5uZXdDYW5vbmljYWxpemF0aW9uTWV0aG9kCisJICAgIChDYW5vbmljYWxpemF0aW9uTWV0aG9kLklOQ0xVU0lWRV9XSVRIX0NPTU1FTlRTLCAKKwkgICAgIChDMTROTWV0aG9kUGFyYW1ldGVyU3BlYykgbnVsbCk7CisJc20gPSBmYWMubmV3U2lnbmF0dXJlTWV0aG9kKFNpZ25hdHVyZU1ldGhvZC5EU0FfU0hBMSwgbnVsbCk7CisJcmVmZXJlbmNlcyA9IG5ldyBWZWN0b3IoKTsKKwlyZWZlcmVuY2VzLmFkZChmYWMubmV3UmVmZXJlbmNlCisJCSAgICAgICAoImh0dHA6Ly93d3cuc3VuLmNvbS9pbmRleC5odG1sIiwgCisJCQlmYWMubmV3RGlnZXN0TWV0aG9kKERpZ2VzdE1ldGhvZC5TSEExLCBudWxsKSkpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlYXJEb3duKCkge30KKyAgICAKKyAgICBwdWJsaWMgdm9pZCB0ZXN0Q29uc3RydWN0b3IoKSB7CisJLy8gdGVzdCBYTUxTaWduYXR1cmVGYWN0b3J5Lm5ld1NpZ25lZEluZm8oCisJLy8JQ2Fub25pY2FsaXphdGlvbk1ldGhvZCBjbSwgCisJLy8gICAgICBTaWduYXR1cmVNZXRob2Qgc20sIExpc3QgcmVmZXJlbmNlcykKKwlTaWduZWRJbmZvIHNpOworCQorCWZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsrKSB7CisJICAgIHRyeSB7CisJCXN3aXRjaCAoaSkgeworCQljYXNlIDA6CisJCSAgICBzaSA9IGZhYy5uZXdTaWduZWRJbmZvKG51bGwsIHNtLCByZWZlcmVuY2VzKTsKKwkJICAgIGJyZWFrOworCQljYXNlIDE6CisJCSAgICBzaSA9IGZhYy5uZXdTaWduZWRJbmZvKGNtLCBudWxsLCByZWZlcmVuY2VzKTsKKwkJICAgIGJyZWFrOworCQljYXNlIDI6CisJCSAgICBzaSA9IGZhYy5uZXdTaWduZWRJbmZvKGNtLCBzbSwgbnVsbCk7CisJCSAgICBicmVhazsKKwkJfQorCQlmYWlsKCJTaG91bGQgdGhyb3cgYSBOUEUgZm9yIG51bGwgcGFyYW1ldGVyIik7CisJICAgIH0gY2F0Y2goTnVsbFBvaW50ZXJFeGNlcHRpb24gbnBlKSB7CisJICAgIH0gY2F0Y2goRXhjZXB0aW9uIGV4KSB7CisJCWZhaWwoIlNob3VsZCB0aHJvdyBhIE5QRSBpbnN0ZWFkIG9mICIgKyBleCArCisJCSAgICAgIiBmb3IgbnVsbCBwYXJhbWV0ZXIiKTsKKwkgICAgfQorCX0KKworCUxpc3QgZW1wdHkgPSBuZXcgVmVjdG9yKCk7CisJdHJ5IHsKKwkgICAgc2kgPSBmYWMubmV3U2lnbmVkSW5mbyhjbSwgc20sIGVtcHR5KTsKKwkgICAgZmFpbCgiU2hvdWxkIHRocm93IGFuIElBRSBmb3IgZW1wdHkgcmVmZXJlbmNlcyIpOworCX0gY2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZSkgeworCX0gY2F0Y2goRXhjZXB0aW9uIGV4KSB7CisJICAgIGZhaWwoIlNob3VsZCB0aHJvdyBhbiBJQUUgaW5zdGVhZCBvZiAiICsgZXggKyAKKwkJICIgZm9yIGVtcHR5IHJlZmVyZW5jZXMiKTsKKwl9CisJCisJZW1wdHkuYWRkKCJTdHJpbmciKTsKKwl0cnkgeworCSAgICBzaSA9IGZhYy5uZXdTaWduZWRJbmZvKGNtLCBzbSwgZW1wdHkpOworCSAgICBmYWlsKCJTaG91bGQgdGhyb3cgYW4gQ0NFIGZvciBpbGxlZ2FsIHJlZmVyZW5jZXMiKTsKKwl9IGNhdGNoKENsYXNzQ2FzdEV4Y2VwdGlvbiBjY2UpIHsKKwl9IGNhdGNoKEV4Y2VwdGlvbiBleCkgeworCSAgICBmYWlsKCJTaG91bGQgdGhyb3cgYW4gSUFFIGluc3RlYWQgb2YgIiArIGV4ICsgCisJCSAiIGZvciBlbXB0eSByZWZlcmVuY2VzIik7CisJfQorCisJc2kgPSBmYWMubmV3U2lnbmVkSW5mbyhjbSwgc20sIHJlZmVyZW5jZXMpOworCWFzc2VydE5vdE51bGwoc2kpOworCWFzc2VydEVxdWFscyhzaS5nZXRDYW5vbmljYWxpemF0aW9uTWV0aG9kKCkuZ2V0QWxnb3JpdGhtKCksIAorCQkgICAgIGNtLmdldEFsZ29yaXRobSgpKTsKKwlhc3NlcnRFcXVhbHMoc2kuZ2V0Q2Fub25pY2FsaXphdGlvbk1ldGhvZCgpLmdldFBhcmFtZXRlclNwZWMoKSwgCisJCSAgICAgY20uZ2V0UGFyYW1ldGVyU3BlYygpKTsKKwlhc3NlcnRFcXVhbHMoc2kuZ2V0U2lnbmF0dXJlTWV0aG9kKCkuZ2V0QWxnb3JpdGhtKCksIAorCQkgICAgIHNtLmdldEFsZ29yaXRobSgpKTsKKwlhc3NlcnRFcXVhbHMoc2kuZ2V0U2lnbmF0dXJlTWV0aG9kKCkuZ2V0UGFyYW1ldGVyU3BlYygpLCAKKwkJICAgICBzbS5nZXRQYXJhbWV0ZXJTcGVjKCkpOworCWFzc2VydFRydWUoQXJyYXlzLmVxdWFscyhzaS5nZXRSZWZlcmVuY2VzKCkudG9BcnJheSgpLCAKKwkJCQkgcmVmZXJlbmNlcy50b0FycmF5KCkpKTsKKwlhc3NlcnROdWxsKHNpLmdldElkKCkpOworCisgICAgICAgIC8vIHRlc3QgWE1MU2lnbmF0dXJlRmFjdG9yeS5uZXdTaWduZWRJbmZvKAorICAgICAgICAvLyAgICAgIENhbm9uaWNhbGl6YXRpb25NZXRob2QgY20sCisgICAgICAgIC8vICAgICAgU2lnbmF0dXJlTWV0aG9kIHNtLCBMaXN0IHJlZmVyZW5jZXMsIFN0cmluZyBpZCkKKwlzaSA9IGZhYy5uZXdTaWduZWRJbmZvKGNtLCBzbSwgcmVmZXJlbmNlcywgbnVsbCk7CisJYXNzZXJ0Tm90TnVsbChzaSk7CisKKwlzaSA9IGZhYy5uZXdTaWduZWRJbmZvKGNtLCBzbSwgcmVmZXJlbmNlcywgImlkIik7CisJYXNzZXJ0Tm90TnVsbChzaSk7CisJYXNzZXJ0RXF1YWxzKHNpLmdldElkKCksICJpZCIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvVGVzdFV0aWxzLmphdmEgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL1Rlc3RVdGlscy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3OGUzOWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL1Rlc3RVdGlscy5qYXZhCkBAIC0wLDAgKzEsMjYyIEBACisvKgorICogQ29weXJpZ2h0IDIwMDYtMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8udGVzdC5kc2lnOworCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEuc2VjdXJpdHkuKjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LnNwZWMuKjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBqYXZheC5jcnlwdG8uU2VjcmV0S2V5OworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5kb20uRE9NVmFsaWRhdGVDb250ZXh0OworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5zcGVjLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kb20uKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLio7CitpbXBvcnQgamF2YS5tYXRoLkJpZ0ludGVnZXI7CitpbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS4qOworaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uZG9tLio7CitpbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5zdHJlYW0uU3RyZWFtUmVzdWx0OworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworaW1wb3J0IG9yZy53M2MuZG9tLio7CisKKy8qCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKiBAYXV0aG9yIFZhbGVyaWUgUGVuZworICovCitwdWJsaWMgY2xhc3MgVGVzdFV0aWxzIHsKKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgRFNBX1kgPSAiMDcwNjYyODQyMTY3NTY1NzcxOTM2NTg4MzM1MTI4NjM0Mzk2MTcxNzg5MzMxNjU2MzE4NDgzNTg0NDU1NDkzODIyNDAwODExMjAwODUzMzMxMzczMDMwNjY5MjM1NDI0OTI4MzQ2MTkwMjc0MDQ0NjMxOTQ5NTYwNDM4MDIzOTM0NjIzNzEzMTAzNzUxMjM0MzA5ODUwNTcxNjAiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBEU0FfUCA9ICIwMTMyMzIzNzY4OTUxOTg2MTI0MDc1NDc5MzA3MTgyNjc0MzU3NTc3Mjg1MjcwMjk2MjM0MDg4NzIyNDUxNTYwMzk3NTc3MTMwMjkwMzYzNjg3MTkxNDY0NTIxODYwNDEyMDQyMzczNTA1MjE3ODUyNDAzMzcwNDg3NTIwNzE0NjI3OTgyNzMwMDM5MzU2NDYyMzY3Nzc0NTkyMjMiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBEU0FfUSA9ICIwODU3MzkzNzcxMjA4MDk0MjAyMTA0MjU5NjI3OTkwMzE4NjM2NjAxMzMyMDg2OTgxIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgRFNBX0cgPSAiMDU0MjE2NDQwNTc0MzY0NzUxNDE2MDk2NDg0ODgzMjU3MDUxMjgwNDc0MjgzOTQzODA0NzQzNzY4MzQ2NjczMDA3NjYxMDgyNjI2MTM5MDA1NDI2ODEyODkwODA3MTM3MjQ1OTczMTA2NzMwNzQxMTkzNTUxMzYwODU3OTU5ODIwOTczOTA2NzA4OTAzNjcxODUxNDExODk3OTYiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBEU0FfWCA9ICIwNTI3MTQwMzk2ODEyNDUwMjE0NDk4MDU1OTM3OTM0Mjc1NjI2MDc4NzY4ODQwMTE3IjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUlNBX01PRCA9ICIwMTA4MDAxODUwNDkxMDI4ODk5MjMxNTA3NTkyNTI1NTc1MjIzMDUwMzI3OTQ2OTk5NTIxNTA5NDM1NzMxNjQzODE5MzY2MDMyNTU5OTkwNzE5ODE1NzQ1NzUwNDQ4MTA0NjEzNjIwMDgxMDIyNDc3Njc0ODI3Mzg4MjIxNTAxMjkyNzc0OTA5OTgwMzM5NzE3ODk0NzYxMDc0NjMiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBSU0FfUFVCID0gIjA2NTUzNyI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFJTQV9QUklWID0gIjAxNjExNjk3MzU4NDQyMTk2OTc5NTQ0NTk5NjIyOTYxMjY3MTk0NzYzNTc5ODQyOTIxMjgxNjYxMTcwNzIxMDgzNTkxNTU4NjU5MTM0MDU5ODY4Mzk5NjA4ODQ4NzA2NTQzODc1MTQ4ODM0MjI1MTk2MDA2OTU3NTM5MjA1NjI4ODA2MzY4MDAzNzk0NTQzNDU4MDQ4Nzk1NTMiOworCisgICAgcHJpdmF0ZSBUZXN0VXRpbHMoKSB7fQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgUHVibGljS2V5IGdldFB1YmxpY0tleShTdHJpbmcgYWxnbykgCisJdGhyb3dzIEludmFsaWRLZXlTcGVjRXhjZXB0aW9uLCBOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24geworCUtleUZhY3Rvcnkga2YgPSBLZXlGYWN0b3J5LmdldEluc3RhbmNlKGFsZ28pOworCUtleVNwZWMga3NwZWM7CisJaWYgKGFsZ28uZXF1YWxzSWdub3JlQ2FzZSgiRFNBIikpIHsKKwkgICAga3NwZWMgPSBuZXcgRFNBUHVibGljS2V5U3BlYyhuZXcgQmlnSW50ZWdlcihEU0FfWSksIAorCQkJCQkgbmV3IEJpZ0ludGVnZXIoRFNBX1ApLCAKKwkJCQkJIG5ldyBCaWdJbnRlZ2VyKERTQV9RKSwgCisJCQkJCSBuZXcgQmlnSW50ZWdlcihEU0FfRykpOworCX0gZWxzZSBpZiAoYWxnby5lcXVhbHNJZ25vcmVDYXNlKCJSU0EiKSkgeworCSAgICBrc3BlYyA9IG5ldyBSU0FQdWJsaWNLZXlTcGVjKG5ldyBCaWdJbnRlZ2VyKFJTQV9NT0QpLCAKKwkJCQkJIG5ldyBCaWdJbnRlZ2VyKFJTQV9QVUIpKTsKKwl9IGVsc2UgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIlVuc3VwcG9ydGVkIGtleSBhbGdvcml0aG0gIiArIGFsZ28pOworCXJldHVybiBrZi5nZW5lcmF0ZVB1YmxpYyhrc3BlYyk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBQcml2YXRlS2V5IGdldFByaXZhdGVLZXkoU3RyaW5nIGFsZ28pIAorCXRocm93cyBJbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbiwgTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIHsKKwlLZXlGYWN0b3J5IGtmID0gS2V5RmFjdG9yeS5nZXRJbnN0YW5jZShhbGdvKTsKKwlLZXlTcGVjIGtzcGVjOworCWlmIChhbGdvLmVxdWFsc0lnbm9yZUNhc2UoIkRTQSIpKSB7CisJICAgIGtzcGVjID0gbmV3IERTQVByaXZhdGVLZXlTcGVjCisJCShuZXcgQmlnSW50ZWdlcihEU0FfWCksIG5ldyBCaWdJbnRlZ2VyKERTQV9QKSwgCisJCSBuZXcgQmlnSW50ZWdlcihEU0FfUSksIG5ldyBCaWdJbnRlZ2VyKERTQV9HKSk7CisJfSBlbHNlIGlmIChhbGdvLmVxdWFsc0lnbm9yZUNhc2UoIlJTQSIpKSB7CisJICAgIGtzcGVjID0gbmV3IFJTQVByaXZhdGVLZXlTcGVjCisJCShuZXcgQmlnSW50ZWdlcihSU0FfTU9EKSwgbmV3IEJpZ0ludGVnZXIoUlNBX1BSSVYpKTsKKwl9IGVsc2UgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIlVuc3VwcG9ydGVkIGtleSBhbGdvcml0aG0gIiArIGFsZ28pOworCXJldHVybiBrZi5nZW5lcmF0ZVByaXZhdGUoa3NwZWMpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgU2VjcmV0S2V5IGdldFNlY3JldEtleShmaW5hbCBieXRlW10gc2VjcmV0KSB7CisJcmV0dXJuIG5ldyBTZWNyZXRLZXkoKSB7CisJICAgIHB1YmxpYyBTdHJpbmcgZ2V0Rm9ybWF0KCkJeyByZXR1cm4gIlJBVyI7IH0KKwkgICAgcHVibGljIGJ5dGVbXSBnZXRFbmNvZGVkKCkJeyByZXR1cm4gc2VjcmV0OyB9CisJICAgIHB1YmxpYyBTdHJpbmcgZ2V0QWxnb3JpdGhtKCl7IHJldHVybiAiU0VDUkVUIjsgfQorCX07CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgRG9jdW1lbnQgbmV3RG9jdW1lbnQoKSB7CisJdHJ5IHsKKwkgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkb2NGYWMgPQorICAgICAgICAgICAgICAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKwkgICAgZG9jRmFjLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworICAgICAgICAgICAgRG9jdW1lbnRCdWlsZGVyIGRvY0J1aWxkZXIgPSBkb2NGYWMubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisJICAgIHJldHVybiBkb2NCdWlsZGVyLm5ld0RvY3VtZW50KCk7CisJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJICAgIHJldHVybiBudWxsOworCX0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIE15T3duQzE0blBhcmFtZXRlclNwZWMgaW1wbGVtZW50cyBDMTROTWV0aG9kUGFyYW1ldGVyU3BlYyB7fQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgTXlPd25EaWdlc3RNZXRob2RQYXJhbWV0ZXJTcGVjIAorCWltcGxlbWVudHMgRGlnZXN0TWV0aG9kUGFyYW1ldGVyU3BlYyB7fQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgTXlPd25TaWduYXR1cmVNZXRob2RQYXJhbWV0ZXJTcGVjIAorCWltcGxlbWVudHMgU2lnbmF0dXJlTWV0aG9kUGFyYW1ldGVyU3BlYyB7fQorCisgICAgcHVibGljIHN0YXRpYyBYTUxWYWxpZGF0ZUNvbnRleHQgZ2V0WE1MVmFsaWRhdGVDb250ZXh0KFN0cmluZyB0eXBlLCAKKwkJCQkJCSAgICAgICBGaWxlIGlucHV0LCAKKwkJCQkJCSAgICAgICBTdHJpbmcgdGFnKSAKKwl0aHJvd3MgRXhjZXB0aW9uIHsKKwlpZiAodHlwZS5lcXVhbHNJZ25vcmVDYXNlKCJkb20iKSkgeworCSAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRvY0ZhY3RvcnkgPQorCQlEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisJICAgIERvY3VtZW50QnVpbGRlciBkb2NCdWlsZGVyID0gZG9jRmFjdG9yeS5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKKwkgICAgRG9jdW1lbnQgZG9jID0gZG9jQnVpbGRlci5wYXJzZShpbnB1dCk7CisJICAgIGlmICh0YWcgPT0gbnVsbCkgeworCQlyZXR1cm4gbmV3IERPTVZhbGlkYXRlQ29udGV4dAorCQkgICAgKFRlc3RVdGlscy5nZXRQdWJsaWNLZXkoIlJTQSIpLCBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCkpOworCSAgICB9IGVsc2UgeworCQlOb2RlTGlzdCBsaXN0ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZyk7CisJCXJldHVybiBuZXcgRE9NVmFsaWRhdGVDb250ZXh0CisJCSAgICAoVGVzdFV0aWxzLmdldFB1YmxpY0tleSgiUlNBIiksIGxpc3QuaXRlbSgwKSk7CisJICAgIH0KKwl9IGVsc2UgeworCSAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJVbnN1cHBvcnRlZCBYTUxWYWxpZGF0ZUNvbnRleHQgdHlwZTogIiArIAorCQkJCXR5cGUpOworCX0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIE15T3duRE9NUmVmZXJlbmNlIGV4dGVuZHMgRE9NU3RydWN0dXJlIAorCWltcGxlbWVudHMgUmVmZXJlbmNlIHsKKwlwcml2YXRlIFN0cmluZyBpZDsKKwlwcml2YXRlIGJvb2xlYW4gc3RhdHVzOworCXByaXZhdGUgYnl0ZVtdIGRpZ2VzdDsKKwlwcml2YXRlIHN0YXRpYyBNZXNzYWdlRGlnZXN0IE1EOworCXByaXZhdGUgc3RhdGljIERpZ2VzdE1ldGhvZCBESUdfTUVUSE9EOworCXByaXZhdGUgRGF0YSBkZXJlZkRhdGE7CisJcHJpdmF0ZSBJbnB1dFN0cmVhbSBkaXM7CisJc3RhdGljIHsKKwkgICAgdHJ5IHsKKwkJTUQgPSBNZXNzYWdlRGlnZXN0LmdldEluc3RhbmNlKCJTSEEiKTsKKwkJWE1MU2lnbmF0dXJlRmFjdG9yeSBmYWN0b3J5ID0gWE1MU2lnbmF0dXJlRmFjdG9yeS5nZXRJbnN0YW5jZQorICAgICAgIAkJICAgICgiRE9NIiwgbmV3IG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tLlhNTERTaWdSSSgpKTsKKwkJRElHX01FVEhPRCA9IAorCQkgICAgZmFjdG9yeS5uZXdEaWdlc3RNZXRob2QoRGlnZXN0TWV0aG9kLlNIQTEsIG51bGwpOworCSAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKwkJLy8gc2hvdWxkIG5ldmVyIGJlIHRocm93bgorCSAgICB9CisJfTsKKwkKKwlwdWJsaWMgTXlPd25ET01SZWZlcmVuY2UoU3RyaW5nIGlkLCBib29sZWFuIHN0YXR1cykgeworCSAgICBzdXBlcihuZXdEb2N1bWVudCgpKTsKKwkgICAgdGhpcy5pZCA9IGlkOworCSAgICB0aGlzLnN0YXR1cyA9IHN0YXR1czsKKwkgICAgZGlnZXN0ID0gbnVsbDsKKwl9CisKKwlwdWJsaWMgYnl0ZVtdIGdldERpZ2VzdFZhbHVlKCkgeworCSAgICBpZiAoZGlnZXN0ID09IG51bGwpIHsKKwkJYnl0ZVtdIGluQnl0ZXMgPSBpZC5nZXRCeXRlcygpOworCQlkaWdlc3QgPSBuZXcgYnl0ZVsyMF07CisJCWlmIChzdGF0dXMpIHsKKwkJICAgIGRpZ2VzdCA9IE1ELmRpZ2VzdChpbkJ5dGVzKTsKKwkJfQorCSAgICB9CisJICAgIHJldHVybiBkaWdlc3Q7CisJfQorCXB1YmxpYyBieXRlW10gZ2V0Q2FsY3VsYXRlZERpZ2VzdFZhbHVlKCkgeworCSAgICByZXR1cm4gbnVsbDsKKwl9CisJcHVibGljIERpZ2VzdE1ldGhvZCBnZXREaWdlc3RNZXRob2QoKSB7IHJldHVybiBESUdfTUVUSE9EOyB9CisJcHVibGljIFN0cmluZyBnZXRJZCgpIHsKKwkgICAgcmV0dXJuIGlkOworCX0KKwlwdWJsaWMgU3RyaW5nIGdldFR5cGUoKSB7CisJICAgIHJldHVybiBudWxsOworCX0KKwlwdWJsaWMgU3RyaW5nIGdldFVSSSgpIHsKKwkgICAgcmV0dXJuIG51bGw7CisJfQorCXB1YmxpYyBMaXN0IGdldFRyYW5zZm9ybXMoKSB7CisJICAgIHJldHVybiBDb2xsZWN0aW9ucy5FTVBUWV9MSVNUOworCX0KKwlwdWJsaWMgYm9vbGVhbiB2YWxpZGF0ZShYTUxWYWxpZGF0ZUNvbnRleHQgdkN0eCkgCisJICAgIHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24geworCSAgICB0aGlzLmRpcyA9IG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShpZC5nZXRCeXRlcygpKTsKKwkgICAgdGhpcy5kZXJlZkRhdGEgPSBuZXcgT2N0ZXRTdHJlYW1EYXRhKHRoaXMuZGlzKTsKKwkgICAgcmV0dXJuIHN0YXR1czsKKwl9CisJcHVibGljIERhdGEgZ2V0RGVyZWZlcmVuY2VkRGF0YSgpIHsKKwkgICAgcmV0dXJuIGRlcmVmRGF0YTsKKwl9CisJcHVibGljIElucHV0U3RyZWFtIGdldERpZ2VzdElucHV0U3RyZWFtKCkgeworCSAgICByZXR1cm4gZGlzOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBNeU93blhNTFN0cnVjdHVyZSBpbXBsZW1lbnRzIFhNTFN0cnVjdHVyZSB7CisJcHVibGljIGJvb2xlYW4gaXNGZWF0dXJlU3VwcG9ydGVkKFN0cmluZyBmZWF0dXJlKSAKKwkgICAgdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIHsKKwkgICAgaWYgKGZlYXR1cmUgPT0gbnVsbCkgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCk7CisJICAgIHJldHVybiBmYWxzZTsKKwl9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBPY3RldFN0cmVhbVVSSURlcmVmZXJlbmNlciBpbXBsZW1lbnRzIFVSSURlcmVmZXJlbmNlciB7CisgICAgICAgIHByaXZhdGUgYnl0ZVtdIGRhdGEgPSBudWxsOworICAgICAgICBwdWJsaWMgT2N0ZXRTdHJlYW1VUklEZXJlZmVyZW5jZXIoYnl0ZVtdIGluKSB7CisgICAgICAgICAgICBkYXRhID0gKGJ5dGVbXSkgaW4uY2xvbmUoKTsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgRGF0YSBkZXJlZmVyZW5jZShVUklSZWZlcmVuY2UgcmVmLCBYTUxDcnlwdG9Db250ZXh0IGN0eHQpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgT2N0ZXRTdHJlYW1EYXRhKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShkYXRhKSk7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIGJ5dGVbXSBnZXREYXRhKCkgeworICAgICAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvYmopIHsKKyAgICAgICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBPY3RldFN0cmVhbVVSSURlcmVmZXJlbmNlcikgeworICAgICAgICAgICAgICAgIHJldHVybiBBcnJheXMuZXF1YWxzCisgICAgICAgICAgICAgICAgICAgICgoKE9jdGV0U3RyZWFtVVJJRGVyZWZlcmVuY2VyKSBvYmopLmdldERhdGEoKSwgZGF0YSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICAgICAgcmV0dXJuIDU2Nzg7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIE5vZGVTZXRVUklEZXJlZmVyZW5jZXIgaW1wbGVtZW50cyBVUklEZXJlZmVyZW5jZXIgeworICAgICAgICBwcml2YXRlIE5vZGUgZGF0YSA9IG51bGw7CisgICAgICAgIHB1YmxpYyBOb2RlU2V0VVJJRGVyZWZlcmVuY2VyKE5vZGUgbm9kZSkgeworICAgICAgICAgICAgZGF0YSA9IG5vZGU7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIERhdGEgZGVyZWZlcmVuY2UoVVJJUmVmZXJlbmNlIHJlZiwgWE1MQ3J5cHRvQ29udGV4dCBjdHh0KSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IE5vZGVTZXREYXRhKCkgeworICAgICAgICAgICAgICAgIHB1YmxpYyBJdGVyYXRvciBpdGVyYXRvcigpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoZGF0YSkuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIGR1bXBEb2N1bWVudChEb2N1bWVudCBkb2MsIFN0cmluZyBvdXROYW1lKQorCXRocm93cyBFeGNlcHRpb24geworICAgICAgICBET01Tb3VyY2Ugc291cmNlID0gbmV3IERPTVNvdXJjZShkb2MpOworCUZpbGUgcGF0aCA9IG5ldyBGaWxlKFN5c3RlbS5nZXRQcm9wZXJ0eSgidGVzdC5kaXIiKSwgb3V0TmFtZSk7CisgICAgICAgIFJlc3VsdCByZXN1bHQgPSBuZXcgU3RyZWFtUmVzdWx0KG5ldyBGaWxlT3V0cHV0U3RyZWFtKHBhdGgpKTsKKyAgICAgICAgVHJhbnNmb3JtZXIgdHJhbnMgPSBUcmFuc2Zvcm1lckZhY3RvcnkubmV3SW5zdGFuY2UoKS5uZXdUcmFuc2Zvcm1lcigpOworICAgICAgICB0cmFucy5zZXRPdXRwdXRQcm9wZXJ0eShPdXRwdXRLZXlzLklOREVOVCwgInllcyIpOworICAgICAgICB0cmFucy50cmFuc2Zvcm0oc291cmNlLCByZXN1bHQpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvVHJhbnNmb3JtVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9UcmFuc2Zvcm1UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZlMDBjZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvVHJhbnNmb3JtVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTU1IEBACisvKgorICogQ29weXJpZ2h0IDIwMDYtMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8udGVzdC5kc2lnOworCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uWE1MU3RydWN0dXJlOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5zcGVjLlRyYW5zZm9ybVBhcmFtZXRlclNwZWM7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLnNwZWMuWFBhdGhUeXBlOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5zcGVjLlhQYXRoRmlsdGVyUGFyYW1ldGVyU3BlYzsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuc3BlYy5YUGF0aEZpbHRlcjJQYXJhbWV0ZXJTcGVjOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5zcGVjLlhTTFRUcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjOworaW1wb3J0IGphdmEuc2VjdXJpdHkuKjsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay4qOworCisvKioKKyAqIFVuaXQgdGVzdCBmb3IgamF2YXgueG1sLmNyeXB0by5kc2lnLlRyYW5zZm9ybQorICoKKyAqIEB2ZXJzaW9uICRJZCQKKyAqIEBhdXRob3IgVmFsZXJpZSBQZW5nCisgKi8KK3B1YmxpYyBjbGFzcyBUcmFuc2Zvcm1UZXN0IGV4dGVuZHMgVGVzdENhc2UgeworCisgICAgWE1MU2lnbmF0dXJlRmFjdG9yeSBmYWN0b3J5OworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRSQU5TRk9STV9BTEdPU1tdID0geworCVRyYW5zZm9ybS5CQVNFNjQsCisJVHJhbnNmb3JtLkVOVkVMT1BFRCwKKwlUcmFuc2Zvcm0uWFBBVEgsCisJVHJhbnNmb3JtLlhQQVRIMiwKKwlUcmFuc2Zvcm0uWFNMVAorICAgIH07CisKKyAgICBzdGF0aWMgeworICAgICAgICBTZWN1cml0eS5pbnNlcnRQcm92aWRlckF0CisgICAgICAgICAgICAobmV3IG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tLlhNTERTaWdSSSgpLCAxKTsKKyAgICB9CisKKyAgICBwdWJsaWMgVHJhbnNmb3JtVGVzdCgpIHsKKwlzdXBlcigiVHJhbnNmb3JtVGVzdCIpOworICAgIH0KKworICAgIHB1YmxpYyBUcmFuc2Zvcm1UZXN0KFN0cmluZyBuYW1lKSB7CisJc3VwZXIobmFtZSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsgCisJZmFjdG9yeSA9IFhNTFNpZ25hdHVyZUZhY3RvcnkuZ2V0SW5zdGFuY2UKKyAgICAgICAgICAgICgiRE9NIiwgbmV3IG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tLlhNTERTaWdSSSgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZWFyRG93bigpIHsgfQorCisgICAgcHVibGljIHZvaWQgdGVzdGlzRmVhdHVyZVN1cHBvcnRlZCgpIHRocm93cyBFeGNlcHRpb24geworCVRyYW5zZm9ybSB0bTsgCisJZm9yIChpbnQgaSA9IDA7IGkgPCBUUkFOU0ZPUk1fQUxHT1MubGVuZ3RoOyBpKyspIHsKKwkgICAgU3RyaW5nIGFsZ28gPSBUUkFOU0ZPUk1fQUxHT1NbaV07CisJICAgIFRyYW5zZm9ybVBhcmFtZXRlclNwZWMgcGFyYW1zID0gbnVsbDsKKwkgICAgaWYgKGFsZ28uZXF1YWxzKFRyYW5zZm9ybS5YUEFUSCkpIHsKKwkJcGFyYW1zID0gbmV3IFhQYXRoRmlsdGVyUGFyYW1ldGVyU3BlYygieFBhdGgiKTsKKwkgICAgfSBlbHNlIGlmIChhbGdvLmVxdWFscyhUcmFuc2Zvcm0uWFBBVEgyKSkgeworCQlwYXJhbXMgPSBuZXcgWFBhdGhGaWx0ZXIyUGFyYW1ldGVyU3BlYworCQkgICAgKENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QobmV3IFhQYXRoVHlwZQorCQkJKCJ4UGF0aDIiLCBYUGF0aFR5cGUuRmlsdGVyLklOVEVSU0VDVCkpKTsKKwkgICAgfSBlbHNlIGlmIChhbGdvLmVxdWFscyhUcmFuc2Zvcm0uWFNMVCkpIHsKKwkJcGFyYW1zID0gbmV3IFhTTFRUcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjKG5ldyBYU0xUU3RydWN0dXJlKCkpOworCSAgICB9CisJICAgIHRtID0gZmFjdG9yeS5uZXdUcmFuc2Zvcm0oYWxnbywgcGFyYW1zKTsKKwkgICAgdHJ5IHsKKwkJdG0uaXNGZWF0dXJlU3VwcG9ydGVkKG51bGwpOyAKKwkJZmFpbChUUkFOU0ZPUk1fQUxHT1NbaV0gKyAKKwkJICAgICAiOiBTaG91bGQgcmFpc2UgYSBOUEUgZm9yIG51bGwgZmVhdHVyZSIpOyAKKwkgICAgfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gbnBlKSB7fQorCSAgICAKKwkgICAgYXNzZXJ0VHJ1ZSghdG0uaXNGZWF0dXJlU3VwcG9ydGVkKCJub3Qgc3VwcG9ydGVkIikpOworCX0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0Q29uc3RydWN0b3IoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkvLyB0ZXN0IG5ld1RyYW5zZm9ybShTdHJpbmcgYWxnb3JpdGhtLCAKKwkvLyAgICAgICAgICAgICAgICAgICBBbGdvcml0aG1QYXJhbWV0ZXJTcGVjIHBhcmFtcykKKwkvLyBmb3IgZ2VuZXJhdGluZyBUcmFuc2Zvcm0gb2JqZWN0cworCVRyYW5zZm9ybSB0bTsgCisJZm9yIChpbnQgaSA9IDA7IGkgPCBUUkFOU0ZPUk1fQUxHT1MubGVuZ3RoOyBpKyspIHsKKwkgICAgU3RyaW5nIGFsZ28gPSBUUkFOU0ZPUk1fQUxHT1NbaV07CisJICAgIFRyYW5zZm9ybVBhcmFtZXRlclNwZWMgcGFyYW1zID0gbnVsbDsKKwkgICAgaWYgKGFsZ28uZXF1YWxzKFRyYW5zZm9ybS5YUEFUSCkpIHsKKwkJcGFyYW1zID0gbmV3IFhQYXRoRmlsdGVyUGFyYW1ldGVyU3BlYygieFBhdGgiKTsKKwkgICAgfSBlbHNlIGlmIChhbGdvLmVxdWFscyhUcmFuc2Zvcm0uWFBBVEgyKSkgeworCQlwYXJhbXMgPSBuZXcgWFBhdGhGaWx0ZXIyUGFyYW1ldGVyU3BlYworCQkgICAgKENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QobmV3IFhQYXRoVHlwZQorCQkJKCJ4UGF0aDIiLCBYUGF0aFR5cGUuRmlsdGVyLklOVEVSU0VDVCkpKTsKKwkgICAgfSBlbHNlIGlmIChhbGdvLmVxdWFscyhUcmFuc2Zvcm0uWFNMVCkpIHsKKwkJcGFyYW1zID0gbmV3IFhTTFRUcmFuc2Zvcm1QYXJhbWV0ZXJTcGVjKG5ldyBYU0xUU3RydWN0dXJlKCkpOworCSAgICB9CisJICAgIHRyeSB7CisJCXRtID0gZmFjdG9yeS5uZXdUcmFuc2Zvcm0oYWxnbywgcGFyYW1zKTsKKwkJYXNzZXJ0Tm90TnVsbCh0bSk7CisJCWFzc2VydEVxdWFscyh0bS5nZXRBbGdvcml0aG0oKSwgYWxnbyk7CisJCWFzc2VydEVxdWFscyh0bS5nZXRQYXJhbWV0ZXJTcGVjKCksIHBhcmFtcyk7CisJICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworCQlmYWlsKFRSQU5TRk9STV9BTEdPU1tpXSArICI6IFVuZXhwZWN0ZWQgZXhjZXB0aW9uICIgKyBleCk7IAorCSAgICB9CisJICAgIHRyeSB7CisJCXRtID0gZmFjdG9yeS5uZXdUcmFuc2Zvcm0KKwkJICAgIChhbGdvLCBuZXcgVGVzdFV0aWxzLk15T3duQzE0blBhcmFtZXRlclNwZWMoKSk7CisJCWZhaWwoVFJBTlNGT1JNX0FMR09TW2ldICsgCisJCSAgICAgIjogU2hvdWxkIHJhaXNlIGFuIElBUEUgZm9yIGludmFsaWQgcGFyYW1ldGVycyIpOyAKKwkgICAgfSBjYXRjaCAoSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiBpYXBlKSB7CisJICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworCQlmYWlsKFRSQU5TRk9STV9BTEdPU1tpXSArIAorCQkgICAgICI6IFNob3VsZCByYWlzZSBhIElBUEUgaW5zdGVhZCBvZiAiICsgZXgpOyAKKwkgICAgfQorCX0KKworCXRyeSB7CisJICAgIHRtID0gZmFjdG9yeS5uZXdUcmFuc2Zvcm0obnVsbCwgKFRyYW5zZm9ybVBhcmFtZXRlclNwZWMpIG51bGwpOyAKKwkgICAgZmFpbCgiU2hvdWxkIHJhaXNlIGEgTlBFIGZvciBudWxsIGFsZ28iKTsgCisJfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gbnBlKSB7CisJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhIE5QRSBpbnN0ZWFkIG9mICIgKyBleCk7IAorCX0KKworCXRyeSB7CisJICAgIHRtID0gZmFjdG9yeS5uZXdUcmFuc2Zvcm0KKwkJKCJub24tZXhpc3RlbnQiLCAoVHJhbnNmb3JtUGFyYW1ldGVyU3BlYykgbnVsbCk7IAorCSAgICBmYWlsKCJTaG91bGQgcmFpc2UgYW4gTlNBRSBmb3Igbm9uLWV4aXN0ZW50IGFsZ29zIik7IAorCX0gY2F0Y2ggKE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiBuc2FlKSB7CisJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhbiBOU0FFIGluc3RlYWQgb2YgIiArIGV4KTsgCisJfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFhTTFRTdHJ1Y3R1cmUgaW1wbGVtZW50cyBYTUxTdHJ1Y3R1cmUgeworCXB1YmxpYyBib29sZWFuIGlzRmVhdHVyZVN1cHBvcnRlZChTdHJpbmcgZmVhdHVyZSkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL1ZhbGlkYXRlU2lnbmF0dXJlVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9WYWxpZGF0ZVNpZ25hdHVyZVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzU4ZmZjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9WYWxpZGF0ZVNpZ25hdHVyZVRlc3QuamF2YQpAQCAtMCwwICsxLDE1NCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA2LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLnRlc3QuZHNpZzsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlNlY3VyaXR5OworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuKjsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8udGVzdC5LZXlTZWxlY3RvcnM7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5EYXRhOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uVVJJRGVyZWZlcmVuY2VyOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uVVJJUmVmZXJlbmNlOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uVVJJUmVmZXJlbmNlRXhjZXB0aW9uOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uWE1MQ3J5cHRvQ29udGV4dDsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuWE1MU2lnbmF0dXJlRXhjZXB0aW9uOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5YTUxTaWduYXR1cmVGYWN0b3J5OworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5kb20uRE9NVmFsaWRhdGVDb250ZXh0OworCisvKioKKyAqIFRoaXMgaXMgYSB0ZXN0Y2FzZSB0aGF0IHZhbGlkYXRlcyB2YXJpb3VzIHNpZ25hdHVyZXMKKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKi8KK3B1YmxpYyBjbGFzcyBWYWxpZGF0ZVNpZ25hdHVyZVRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgICBwcml2YXRlIFNpZ25hdHVyZVZhbGlkYXRvciB2YWxpZGF0b3I7CisgICAgcHJpdmF0ZSBGaWxlIGRpcjsKKworICAgIHN0YXRpYyB7CisgICAgICAgIFNlY3VyaXR5Lmluc2VydFByb3ZpZGVyQXQKKyAgICAgICAgICAgIChuZXcgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJKCksIDEpOworICAgIH0KKworICAgIHB1YmxpYyBWYWxpZGF0ZVNpZ25hdHVyZVRlc3QoU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgc3VwZXIobmFtZSk7CisJU3RyaW5nIGZzID0gU3lzdGVtLmdldFByb3BlcnR5KCJmaWxlLnNlcGFyYXRvciIpOworCVN0cmluZyBiYXNlID0gU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIikgPT0gbnVsbCA/ICIuLyI6IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpOworCQorCWRpciA9IG5ldyBGaWxlKGJhc2UgKyBmcyArICJkYXRhIiArIGZzIAorCSAgICArICJqYXZheCIgKyBmcyArICJ4bWwiICsgZnMgKyAiY3J5cHRvIiwgImRzaWciKTsKKwl2YWxpZGF0b3IgPSBuZXcgU2lnbmF0dXJlVmFsaWRhdG9yKGRpcik7CisgICAgfQorCisgICAgLyoqIAorICAgICAqIFZhbGlkYXRlcyBhIHNpZ25hdHVyZSB0aGF0IHJlZmVyZW5jZXMgYW4gZWxlbWVudCB3aXRoIGFuIElEIGF0dHJpYnV0ZS4gCisgICAgICogVGhlIGVsZW1lbnQncyBJRCBuZWVkcyB0byBiZSByZWdpc3RlcmVkIHNvIHRoYXQgaXQgY2FuIGJlIGZvdW5kLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHRlc3Rfc2lnbmF0dXJlX3dpdGhfSUQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgU3RyaW5nIGZpbGUgPSAiZW52ZWxvcGluZ1NpZ25hdHVyZS54bWwiOworCisJRE9NVmFsaWRhdGVDb250ZXh0IHZjID0gdmFsaWRhdG9yLmdldFZhbGlkYXRlQ29udGV4dAorCSAgICAoZmlsZSwgbmV3IEtleVNlbGVjdG9ycy5LZXlWYWx1ZUtleVNlbGVjdG9yKCkpOworCURvY3VtZW50IGRvYyA9IHZjLmdldE5vZGUoKS5nZXRPd25lckRvY3VtZW50KCk7CisJTm9kZUxpc3QgbmwgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIkFzc2VydGlvbiIpOworCXZjLnNldElkQXR0cmlidXRlTlMoKEVsZW1lbnQpIG5sLml0ZW0oMCksIG51bGwsICJBc3NlcnRpb25JRCIpOworCWJvb2xlYW4gY29yZVZhbGlkaXR5ID0gdmFsaWRhdG9yLnZhbGlkYXRlKHZjKTsKKwlhc3NlcnRUcnVlKCJTaWduYXR1cmUgZmFpbGVkIGNvcmUgdmFsaWRhdGlvbiIsIGNvcmVWYWxpZGl0eSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9zaWduYXR1cmVfZXh0ZXJuYWxfYzE0bl94bWxhdHRycygpIHRocm93cyBFeGNlcHRpb24geworCVN0cmluZyBmaWxlID0gInNpZ25hdHVyZS1leHRlcm5hbC1jMTRuLXhtbGF0cnMueG1sIjsKKworCWJvb2xlYW4gY29yZVZhbGlkaXR5ID0gdmFsaWRhdG9yLnZhbGlkYXRlKGZpbGUsIAorCSAgICBuZXcgS2V5U2VsZWN0b3JzLlNlY3JldEtleVNlbGVjdG9yKCJzZWNyZXQiLmdldEJ5dGVzKCJBU0NJSSIpKSk7CisJYXNzZXJ0VHJ1ZSgiU2lnbmF0dXJlIGZhaWxlZCBjb3JlIHZhbGlkYXRpb24iLCBjb3JlVmFsaWRpdHkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgc2lnbmF0dXJlIGlzIHZlcmlmaWVkIGJlZm9yZSB0aGUgcmVmZXJlbmNlcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCB0ZXN0X2ludmFsaWRfc2lnbmF0dXJlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIEludmFsaWRVUklEZXJlZmVyZW5jZXIgdWQgPSBuZXcgSW52YWxpZFVSSURlcmVmZXJlbmNlcigpOworCisgICAgICAgIGJvb2xlYW4gY29yZVZhbGlkaXR5ID0gdmFsaWRhdG9yLnZhbGlkYXRlKCJpbnZhbGlkLXNpZ25hdHVyZS54bWwiLCAKKwkgICAgbmV3IEtleVNlbGVjdG9ycy5LZXlWYWx1ZUtleVNlbGVjdG9yKCksIHVkKTsKKwlhc3NlcnRGYWxzZSgiSW52YWxpZCBzaWduYXR1cmUgc2hvdWxkIGZhaWwhIiwgY29yZVZhbGlkaXR5KTsKKwlhc3NlcnRUcnVlKCJSZWZlcmVuY2VzIHZhbGlkYXRlZCBiZWZvcmUgc2lnbmF0dXJlIiwgdWQuZGVyZWZlcmVuY2VkKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZV9lbnZlbG9waW5nX2htYWNfc2hhMV90cnVuY2xlbl8wKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBib29sZWFuIGNvcmVWYWxpZGl0eSA9IHZhbGlkYXRvci52YWxpZGF0ZQorICAgICAgICAgICAgICAgICgic2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGExLXRydW5jbGVuLTAtYXR0YWNrLnhtbCIsIAorICAgICAgICAgICAgICAgIG5ldyBLZXlTZWxlY3RvcnMuU2VjcmV0S2V5U2VsZWN0b3IoInNlY3JldCIuZ2V0Qnl0ZXMoIkFTQ0lJIikpKTsKKyAgICAgICAgICAgIGZhaWwoIkV4cGVjdGVkIEhNQUNPdXRwdXRMZW5ndGggZXhjZXB0aW9uIik7CisgICAgICAgIH0gY2F0Y2ggKFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB4c2UpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih4c2UuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgICAgIC8vIHBhc3MKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3Rfc2lnbmF0dXJlX2VudmVsb3BpbmdfaG1hY19zaGExX3RydW5jbGVuXzgoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSB2YWxpZGF0b3IudmFsaWRhdGUKKyAgICAgICAgICAgICAgICAoInNpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMS10cnVuY2xlbi04LWF0dGFjay54bWwiLCAKKyAgICAgICAgICAgICAgICBuZXcgS2V5U2VsZWN0b3JzLlNlY3JldEtleVNlbGVjdG9yKCJzZWNyZXQiLmdldEJ5dGVzKCJBU0NJSSIpKSk7CisgICAgICAgICAgICBmYWlsKCJFeHBlY3RlZCBITUFDT3V0cHV0TGVuZ3RoIGV4Y2VwdGlvbiIpOworICAgICAgICB9IGNhdGNoIChYTUxTaWduYXR1cmVFeGNlcHRpb24geHNlKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oeHNlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICAvLyBwYXNzCisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBCdWcgNDc3NjE6IHZhbGlkYXRlcyBhbiB4bWwgc2lnbmF0dXJlIGNvbnRhaW5pbmcgYSByZWZlcmVuY2Ugd2l0aAorICAgIC8vIHhtbG5zOnhtbCBhdHRyaWJ1dGVzLiBDMTRuIHNob3VsZCBub3QgZW1pdCB0aGVzZSBhdHRyaWJ1dGVzLgorICAgIHB1YmxpYyB2b2lkIHRlc3Rfc2lnbmF0dXJlX2V4Y2xjMTRuX3htbG5hbWVzcGFjZSgpIHRocm93cyBFeGNlcHRpb24geworCVN0cmluZyBmaWxlID0gImRlbW8uc2lnbmVkLnhtbCI7CisJYm9vbGVhbiBjb3JlVmFsaWRpdHkgPSB2YWxpZGF0b3IudmFsaWRhdGUoZmlsZSwgCisJICAgIG5ldyBLZXlTZWxlY3RvcnMuUmF3WDUwOUtleVNlbGVjdG9yKCkpOworCWFzc2VydFRydWUoIlNpZ25hdHVyZSBmYWlsZWQgY29yZSB2YWxpZGF0aW9uIiwgY29yZVZhbGlkaXR5KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgZmxhZyBpZiBjYWxsZWQuCisgICAgICovCisgICAgc3RhdGljIGNsYXNzIEludmFsaWRVUklEZXJlZmVyZW5jZXIgaW1wbGVtZW50cyBVUklEZXJlZmVyZW5jZXIgeworICAgICAgICBib29sZWFuIGRlcmVmZXJlbmNlZCA9IGZhbHNlOworICAgICAgICBwcml2YXRlIFVSSURlcmVmZXJlbmNlciB1ZCA9CisgICAgICAgICAgICBYTUxTaWduYXR1cmVGYWN0b3J5LmdldEluc3RhbmNlKCkuZ2V0VVJJRGVyZWZlcmVuY2VyKCk7CisKKyAgICAgICAgcHVibGljIERhdGEgZGVyZWZlcmVuY2UoZmluYWwgVVJJUmVmZXJlbmNlIHJlZiwgWE1MQ3J5cHRvQ29udGV4dCBjdHgpCisgICAgICAgIHRocm93cyBVUklSZWZlcmVuY2VFeGNlcHRpb24geworICAgICAgICAgICAgZGVyZWZlcmVuY2VkID0gdHJ1ZTsKKworICAgICAgICAgICAgLy8gZmFsbGJhY2sKKyAgICAgICAgICAgIHJldHVybiB1ZC5kZXJlZmVyZW5jZShyZWYsIGN0eCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFZhbGlkYXRlU2lnbmF0dXJlVGVzdCB2c3QgPSBuZXcgVmFsaWRhdGVTaWduYXR1cmVUZXN0KCIiKTsKKyAgICAgICAgdnN0LnRlc3Rfc2lnbmF0dXJlX3dpdGhfSUQoKTsKKyAgICAgICAgdnN0LnRlc3Rfc2lnbmF0dXJlX2V4dGVybmFsX2MxNG5feG1sYXR0cnMoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL1g1MDlLZXlTZWxlY3Rvci5qYXZhIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9YNTA5S2V5U2VsZWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjQ4OTA3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9YNTA5S2V5U2VsZWN0b3IuamF2YQpAQCAtMCwwICsxLDM3MiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA2LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLnRlc3QuZHNpZzsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5zZWN1cml0eS5LZXk7CitpbXBvcnQgamF2YS5zZWN1cml0eS5LZXlTdG9yZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHVibGljS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVGYWN0b3J5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuY2VydC5DZXJ0U2VsZWN0b3I7CitpbXBvcnQgamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRTZWxlY3RvcjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBqYXZheC5zZWN1cml0eS5hdXRoLng1MDAuWDUwMFByaW5jaXBhbDsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLmtleWluZm8uKjsKKworaW1wb3J0IG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tLkRPTVJldHJpZXZhbE1ldGhvZDsKKworLyoqCisgKiBBIDxjb2RlPktleVNlbGVjdG9yPC9jb2RlPiB0aGF0IHJldHVybnMge0BsaW5rIFB1YmxpY0tleX1zLiBJZiB0aGUKKyAqIHNlbGVjdG9yIGlzIGNyZWF0ZWQgYXMgdHJ1c3RlZCwgaXQgb25seSByZXR1cm5zIHB1YmxpYyBrZXlzIG9mIHRydXN0ZWQKKyAqIHtAbGluayBYNTA5Q2VydGlmaWNhdGV9cyBzdG9yZWQgaW4gYSB7QGxpbmsgS2V5U3RvcmV9LiBPdGhlcndpc2UsIGl0CisgKiByZXR1cm5zIHRydXN0ZWQgb3IgdW50cnVzdGVkIHB1YmxpYyBrZXlzIChpdCBkb2Vzbid0IGNhcmUgYXMgbG9uZworICogYXMgaXQgZmluZHMgb25lKS4KKyAqCisgKiA8cD5UaGlzIDxjb2RlPktleVNlbGVjdG9yPC9jb2RlPiB1c2VzIHRoZSBzcGVjaWZpZWQgPGNvZGU+S2V5U3RvcmU8L2NvZGU+CisgKiB0byBmaW5kIGEgdHJ1c3RlZCA8Y29kZT5YNTA5Q2VydGlmaWNhdGU8L2NvZGU+IHRoYXQgbWF0Y2hlcyBpbmZvcm1hdGlvbgorICogc3BlY2lmaWVkIGluIHRoZSB7QGxpbmsgS2V5SW5mb30gcGFzc2VkIHRvIHRoZSB7QGxpbmsgI3NlbGVjdH0gbWV0aG9kLiAKKyAqIFRoZSBwdWJsaWMga2V5IGZyb20gdGhlIGZpcnN0IG1hdGNoIGlzIHJldHVybmVkLiBJZiBubyBtYXRjaCwgCisgKiA8Y29kZT5udWxsPC9jb2RlPiBpcyByZXR1cm5lZC4gU2VlIHRoZSA8Y29kZT5zZWxlY3Q8L2NvZGU+IG1ldGhvZCBmb3IgbW9yZQorICogaW5mb3JtYXRpb24uCisgKgorICogPHA+Tk9URSE6IFRoaXMgWDUwOUtleVNlbGVjdG9yIHJlcXVpcmVzIEoyU0UgMS40IGJlY2F1c2UgaXQgdXNlcyB0aGUKKyAqIGphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydFNlbGVjdG9yICYgamF2YXguc2VjdXJpdHkuYXV0aC54NTAwLlg1MDBQcmluY2lwYWwKKyAqIGNsYXNzZXMgdG8gcGFyc2UgWC41MDAgRE5zIGFuZCBtYXRjaCBvbiBjZXJ0aWZpY2F0ZSBhdHRyaWJ1dGVzLgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqLworcHVibGljIGNsYXNzIFg1MDlLZXlTZWxlY3RvciBleHRlbmRzIEtleVNlbGVjdG9yIHsKKworICAgIHByaXZhdGUgS2V5U3RvcmUga3M7CisgICAgcHJpdmF0ZSBib29sZWFuIHRydXN0ZWQgPSB0cnVlOworCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIHRydXN0ZWQgPGNvZGU+WDUwOUtleVNlbGVjdG9yPC9jb2RlPi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBrZXlTdG9yZSB0aGUga2V5c3RvcmUKKyAgICAgKiBAdGhyb3dzIEtleVN0b3JlRXhjZXB0aW9uIGlmIHRoZSBrZXlzdG9yZSBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQKKyAgICAgKiBAdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIDxjb2RlPmtleVN0b3JlPC9jb2RlPiBpcyAKKyAgICAgKiAgICA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqLworICAgIHB1YmxpYyBYNTA5S2V5U2VsZWN0b3IoS2V5U3RvcmUga2V5U3RvcmUpIHRocm93cyBLZXlTdG9yZUV4Y2VwdGlvbiB7CisJdGhpcyhrZXlTdG9yZSwgdHJ1ZSk7CisgICAgfQorCisgICAgcHVibGljIFg1MDlLZXlTZWxlY3RvcihLZXlTdG9yZSBrZXlTdG9yZSwgYm9vbGVhbiB0cnVzdGVkKSAKKwl0aHJvd3MgS2V5U3RvcmVFeGNlcHRpb24geworICAgICAgICBpZiAoa2V5U3RvcmUgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJrZXlTdG9yZSBpcyBudWxsIik7CisgICAgICAgIH0KKwl0aGlzLnRydXN0ZWQgPSB0cnVzdGVkOworICAgICAgICB0aGlzLmtzID0ga2V5U3RvcmU7CisgICAgICAgIC8vIHRlc3QgdG8gc2VlIGlmIEtleVN0b3JlIGhhcyBiZWVuIGluaXRpYWxpemVkCisgICAgICAgIHRoaXMua3Muc2l6ZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZpbmRzIGEga2V5IGZyb20gdGhlIGtleXN0b3JlIHNhdGlzZnlpbmcgdGhlIHNwZWNpZmllZCBjb25zdHJhaW50cy4KKyAgICAgKgorICAgICAqIDxwPlRoaXMgbWV0aG9kIGNvbXBhcmVzIGRhdGEgY29udGFpbmVkIGluIHtAbGluayBLZXlJbmZvfSBlbnRyaWVzCisgICAgICogd2l0aCBpbmZvcm1hdGlvbiBzdG9yZWQgaW4gdGhlIDxjb2RlPktleVN0b3JlPC9jb2RlPi4gVGhlIGltcGxlbWVudGF0aW9uCisgICAgICogaXRlcmF0ZXMgb3ZlciB0aGUgS2V5SW5mbyB0eXBlcyBhbmQgcmV0dXJucyB0aGUgZmlyc3Qge0BsaW5rIFB1YmxpY0tleX0gCisgICAgICogb2YgYW4gWDUwOUNlcnRpZmljYXRlIGluIHRoZSBrZXlzdG9yZSB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgCisgICAgICogc3BlY2lmaWVkIEFsZ29yaXRobU1ldGhvZCBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBydWxlcyBmb3IgZWFjaCAKKyAgICAgKiBrZXlpbmZvIHR5cGU6CisgICAgICoKKyAgICAgKiBYNTA5RGF0YSBYNTA5Q2VydGlmaWNhdGU6IGlmIGl0IGNvbnRhaW5zIGEgPGNvZGU+S2V5VXNhZ2U8L2NvZGU+CisgICAgICogICBleHRlbnNpb24gdGhhdCBhc3NlcnRzIHRoZSA8Y29kZT5kaWdpdGFsU2lnbmF0dXJlPC9jb2RlPiBiaXQgYW5kIAorICAgICAqICAgbWF0Y2hlcyBhbiA8Y29kZT5YNTA5Q2VydGlmaWNhdGU8L2NvZGU+IGluIHRoZSA8Y29kZT5LZXlTdG9yZTwvY29kZT4uCisgICAgICogWDUwOURhdGEgWDUwOUlzc3VlclNlcmlhbDogaWYgdGhlIHNlcmlhbCBudW1iZXIgYW5kIGlzc3VlciBETiBtYXRjaCBhbiAKKyAgICAgKiAgICA8Y29kZT5YNTA5Q2VydGlmaWNhdGU8L2NvZGU+IGluIHRoZSA8Y29kZT5LZXlTdG9yZTwvY29kZT4uCisgICAgICogWDUwOURhdGEgWDUwOVN1YmplY3ROYW1lOiBpZiB0aGUgc3ViamVjdCBETiBtYXRjaGVzIGFuIAorICAgICAqICAgIDxjb2RlPlg1MDlDZXJ0aWZpY2F0ZTwvY29kZT4gaW4gdGhlIDxjb2RlPktleVN0b3JlPC9jb2RlPi4KKyAgICAgKiBYNTA5RGF0YSBYNTA5U0tJOiBpZiB0aGUgc3ViamVjdCBrZXkgaWRlbnRpZmllciBtYXRjaGVzIGFuIAorICAgICAqICAgIDxjb2RlPlg1MDlDZXJ0aWZpY2F0ZTwvY29kZT4gaW4gdGhlIDxjb2RlPktleVN0b3JlPC9jb2RlPi4KKyAgICAgKiBLZXlOYW1lOiBpZiB0aGUga2V5bmFtZSBtYXRjaGVzIGFuIGFsaWFzIGluIHRoZSA8Y29kZT5LZXlTdG9yZTwvY29kZT4uCisgICAgICogUmV0cmlldmFsTWV0aG9kOiBzdXBwb3J0cyByYXdYNTA5Q2VydGlmaWNhdGUgYW5kIFg1MDlEYXRhIHR5cGVzLiBJZiAKKyAgICAgKiAgICByYXdYNTA5Q2VydGlmaWNhdGUgdHlwZSwgaXQgbXVzdCBtYXRjaCBhbiA8Y29kZT5YNTA5Q2VydGlmaWNhdGU8L2NvZGU+CisgICAgICogICAgaW4gdGhlIDxjb2RlPktleVN0b3JlPC9jb2RlPi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBrZXlJbmZvIGEgPGNvZGU+S2V5SW5mbzwvY29kZT4gKG1heSBiZSA8Y29kZT5udWxsPC9jb2RlPikKKyAgICAgKiBAcGFyYW0gcHVycG9zZSB0aGUga2V5J3MgcHVycG9zZQorICAgICAqIEBwYXJhbSBtZXRob2QgdGhlIGFsZ29yaXRobSBtZXRob2QgdGhhdCB0aGlzIGtleSBpcyB0byBiZSB1c2VkIGZvci4KKyAgICAgKiAgICBPbmx5IGtleXMgdGhhdCBhcmUgY29tcGF0aWJsZSB3aXRoIHRoZSBhbGdvcml0aG0gYW5kIG1lZXQgdGhlCisgICAgICogICAgY29uc3RyYWludHMgb2YgdGhlIHNwZWNpZmllZCBhbGdvcml0aG0gc2hvdWxkIGJlIHJldHVybmVkLgorICAgICAqIEBwYXJhbSBhbiA8Y29kZT5YTUxDcnlwdG9Db250ZXh0PC9jb2RlPiB0aGF0IG1heSBjb250YWluIGFkZGl0aW9uYWwKKyAgICAgKiAgICB1c2VmdWwgaW5mb3JtYXRpb24gZm9yIGZpbmRpbmcgYW4gYXBwcm9wcmlhdGUga2V5CisgICAgICogQHJldHVybiBhIGtleSBzZWxlY3RvciByZXN1bHQKKyAgICAgKiBAdGhyb3dzIEtleVNlbGVjdG9yRXhjZXB0aW9uIGlmIGFuIGV4Y2VwdGlvbmFsIGNvbmRpdGlvbiBvY2N1cnMgd2hpbGUKKyAgICAgKiAgICBhdHRlbXB0aW5nIHRvIGZpbmQgYSBrZXkuIE5vdGUgdGhhdCBhbiBpbmFiaWxpdHkgdG8gZmluZCBhIGtleSBpcyBub3QKKyAgICAgKiAgICBjb25zaWRlcmVkIGFuIGV4Y2VwdGlvbiAoPGNvZGU+bnVsbDwvY29kZT4gc2hvdWxkIGJlCisgICAgICogICAgcmV0dXJuZWQgaW4gdGhhdCBjYXNlKS4gSG93ZXZlciwgYW4gZXJyb3IgY29uZGl0aW9uIChleDogbmV0d29yaworICAgICAqICAgIGNvbW11bmljYXRpb25zIGZhaWx1cmUpIHRoYXQgcHJldmVudGVkIHRoZSA8Y29kZT5LZXlTZWxlY3RvcjwvY29kZT4KKyAgICAgKiAgICBmcm9tIGZpbmRpbmcgYSBwb3RlbnRpYWwga2V5IHNob3VsZCBiZSBjb25zaWRlcmVkIGFuIGV4Y2VwdGlvbi4KKyAgICAgKiBAdGhyb3dzIENsYXNzQ2FzdEV4Y2VwdGlvbiBpZiB0aGUgZGF0YSB0eXBlIG9mIDxjb2RlPm1ldGhvZDwvY29kZT4KKyAgICAgKiAgICBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMga2V5IHNlbGVjdG9yCisgICAgICovCisgICAgcHVibGljIEtleVNlbGVjdG9yUmVzdWx0IHNlbGVjdChLZXlJbmZvIGtleUluZm8sIAorCUtleVNlbGVjdG9yLlB1cnBvc2UgcHVycG9zZSwgQWxnb3JpdGhtTWV0aG9kIG1ldGhvZCwKKwlYTUxDcnlwdG9Db250ZXh0IGNvbnRleHQpIHRocm93cyBLZXlTZWxlY3RvckV4Y2VwdGlvbiB7CisKKyAgICAgICAgU2lnbmF0dXJlTWV0aG9kIHNtID0gKFNpZ25hdHVyZU1ldGhvZCkgbWV0aG9kOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvLyByZXR1cm4gbnVsbCBpZiBrZXlpbmZvIGlzIG51bGwgb3Iga2V5c3RvcmUgaXMgZW1wdHkKKyAgICAgICAgICAgIGlmIChrZXlJbmZvID09IG51bGwgfHwga3Muc2l6ZSgpID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbXBsZUtleVNlbGVjdG9yUmVzdWx0KG51bGwpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJdGVyYXRlIHRocm91Z2ggS2V5SW5mbyB0eXBlcworICAgICAgICAgICAgSXRlcmF0b3IgaSA9IGtleUluZm8uZ2V0Q29udGVudCgpLml0ZXJhdG9yKCk7CisgICAgICAgICAgICB3aGlsZSAoaS5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBYTUxTdHJ1Y3R1cmUga2lUeXBlID0gKFhNTFN0cnVjdHVyZSkgaS5uZXh0KCk7CisJCS8vIGNoZWNrIFg1MDlEYXRhCisgICAgICAgICAgICAgICAgaWYgKGtpVHlwZSBpbnN0YW5jZW9mIFg1MDlEYXRhKSB7CisgICAgICAgICAgICAgICAgICAgIFg1MDlEYXRhIHhkID0gKFg1MDlEYXRhKSBraVR5cGU7CisJCSAgICBLZXlTZWxlY3RvclJlc3VsdCBrc3IgPSB4NTA5RGF0YVNlbGVjdCh4ZCwgc20pOworCSAgICAgICAgICAgIGlmIChrc3IgIT0gbnVsbCkgeworCQkgICAgICAgIHJldHVybiBrc3I7CisJICAgICAgICAgICAgfQorCQkvLyBjaGVjayBLZXlOYW1lCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChraVR5cGUgaW5zdGFuY2VvZiBLZXlOYW1lKSB7CisJCSAgICBLZXlOYW1lIGtuID0gKEtleU5hbWUpIGtpVHlwZTsKKwkJICAgIENlcnRpZmljYXRlIGNlcnQgPSBrcy5nZXRDZXJ0aWZpY2F0ZShrbi5nZXROYW1lKCkpOworCQkgICAgaWYgKGNlcnQgIT0gbnVsbCAmJiBhbGdFcXVhbHMoc20uZ2V0QWxnb3JpdGhtKCksCisJCQljZXJ0LmdldFB1YmxpY0tleSgpLmdldEFsZ29yaXRobSgpKSkgeworCQkJcmV0dXJuIG5ldyBTaW1wbGVLZXlTZWxlY3RvclJlc3VsdChjZXJ0LmdldFB1YmxpY0tleSgpKTsKKwkJICAgIH0KKwkJLy8gY2hlY2sgUmV0cmlldmFsTWV0aG9kCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChraVR5cGUgaW5zdGFuY2VvZiBSZXRyaWV2YWxNZXRob2QpIHsKKwkJICAgIFJldHJpZXZhbE1ldGhvZCBybSA9IChSZXRyaWV2YWxNZXRob2QpIGtpVHlwZTsKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKwkJCUtleVNlbGVjdG9yUmVzdWx0IGtzciA9IG51bGw7CisJCSAgICAgICAgaWYgKHJtLmdldFR5cGUoKS5lcXVhbHMKKwkJCSAgICAoWDUwOURhdGEuUkFXX1g1MDlfQ0VSVElGSUNBVEVfVFlQRSkpIHsKKwkJCSAgICBPY3RldFN0cmVhbURhdGEgZGF0YSA9IChPY3RldFN0cmVhbURhdGEpIAorCQkJCXJtLmRlcmVmZXJlbmNlKGNvbnRleHQpOworCQkJICAgIENlcnRpZmljYXRlRmFjdG9yeSBjZiA9IAorCQkJICAgICAgICBDZXJ0aWZpY2F0ZUZhY3RvcnkuZ2V0SW5zdGFuY2UoIlguNTA5Iik7CisJCQkgICAgWDUwOUNlcnRpZmljYXRlIGNlcnQgPSAoWDUwOUNlcnRpZmljYXRlKSAKKwkJCSAgICAgICAgY2YuZ2VuZXJhdGVDZXJ0aWZpY2F0ZShkYXRhLmdldE9jdGV0U3RyZWFtKCkpOworCQkgICAgICAgICAgICBrc3IgPSBjZXJ0U2VsZWN0KGNlcnQsIHNtKTsKKwkJICAgICAgICB9IGVsc2UgaWYgKHJtLmdldFR5cGUoKS5lcXVhbHMoWDUwOURhdGEuVFlQRSkpIHsKKwkJCSAgICBYNTA5RGF0YSB4ZCA9IChYNTA5RGF0YSkgKChET01SZXRyaWV2YWxNZXRob2QpIHJtKS4KKwkJCQlkZXJlZmVyZW5jZUFzWE1MU3RydWN0dXJlKGNvbnRleHQpOworCQkgICAgICAgICAgICBrc3IgPSB4NTA5RGF0YVNlbGVjdCh4ZCwgc20pOworCQkgICAgICAgIH0gZWxzZSB7CisJCQkgICAgLy8gc2tpcDsga2V5aW5mbyB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQKKwkJCSAgICBjb250aW51ZTsKKwkJCX0KKwkJICAgICAgICBpZiAoa3NyICE9IG51bGwpIHsKKwkJICAgICAgICAgICAgcmV0dXJuIGtzcjsKKwkgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkgICAgICAgIHRocm93IG5ldyBLZXlTZWxlY3RvckV4Y2VwdGlvbihlKTsKKwkJICAgIH0KKwkJfQorICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChLZXlTdG9yZUV4Y2VwdGlvbiBrc2UpIHsKKyAgICAgICAgICAgIC8vIHRocm93IGV4Y2VwdGlvbiBpZiBrZXlzdG9yZSBpcyB1bmluaXRpYWxpemVkCisgICAgICAgICAgICB0aHJvdyBuZXcgS2V5U2VsZWN0b3JFeGNlcHRpb24oa3NlKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHJldHVybiBudWxsIHNpbmNlIG5vIG1hdGNoIGNvdWxkIGJlIGZvdW5kCisgICAgICAgIHJldHVybiBuZXcgU2ltcGxlS2V5U2VsZWN0b3JSZXN1bHQobnVsbCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2VhcmNoZXMgdGhlIHNwZWNpZmllZCBrZXlzdG9yZSBmb3IgYSBjZXJ0aWZpY2F0ZSB0aGF0IG1hdGNoZXMgdGhlCisgICAgICogY3JpdGVyaWEgc3BlY2lmaWVkIGluIHRoZSBDZXJ0U2VsZWN0b3IuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIGEgS2V5U2VsZWN0b3JSZXN1bHQgY29udGFpbmluZyB0aGUgY2VydCdzIHB1YmxpYyBrZXkgaWYgdGhlcmUKKyAgICAgKiAgIGlzIGEgbWF0Y2g7IG90aGVyd2lzZSBudWxsCisgICAgICovCisgICAgcHJpdmF0ZSBLZXlTZWxlY3RvclJlc3VsdCBrZXlTdG9yZVNlbGVjdChDZXJ0U2VsZWN0b3IgY3MpIAorCXRocm93cyBLZXlTdG9yZUV4Y2VwdGlvbiB7CisgICAgICAgIEVudW1lcmF0aW9uIGFsaWFzZXMgPSBrcy5hbGlhc2VzKCk7CisgICAgICAgIHdoaWxlIChhbGlhc2VzLmhhc01vcmVFbGVtZW50cygpKSB7CisJICAgIFN0cmluZyBhbGlhcyA9IChTdHJpbmcpIGFsaWFzZXMubmV4dEVsZW1lbnQoKTsKKwkgICAgQ2VydGlmaWNhdGUgY2VydCA9IGtzLmdldENlcnRpZmljYXRlKGFsaWFzKTsKKwkgICAgaWYgKGNlcnQgIT0gbnVsbCAmJiBjcy5tYXRjaChjZXJ0KSkgeworCSAgICAgICAgcmV0dXJuIG5ldyBTaW1wbGVLZXlTZWxlY3RvclJlc3VsdChjZXJ0LmdldFB1YmxpY0tleSgpKTsKKwkgICAgfQorCX0KKwlyZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZWFyY2hlcyB0aGUgc3BlY2lmaWVkIGtleXN0b3JlIGZvciBhIGNlcnRpZmljYXRlIHRoYXQgbWF0Y2hlcyB0aGUKKyAgICAgKiBzcGVjaWZpZWQgWDUwOUNlcnRpZmljYXRlIGFuZCBjb250YWlucyBhIHB1YmxpYyBrZXkgdGhhdCBpcyBjb21wYXRpYmxlCisgICAgICogd2l0aCB0aGUgc3BlY2lmaWVkIFNpZ25hdHVyZU1ldGhvZC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gYSBLZXlTZWxlY3RvclJlc3VsdCBjb250YWluaW5nIHRoZSBjZXJ0J3MgcHVibGljIGtleSBpZiB0aGVyZQorICAgICAqICAgaXMgYSBtYXRjaDsgb3RoZXJ3aXNlIG51bGwKKyAgICAgKi8KKyAgICBwcml2YXRlIEtleVNlbGVjdG9yUmVzdWx0IGNlcnRTZWxlY3QoWDUwOUNlcnRpZmljYXRlIHhjZXJ0LCAKKwlTaWduYXR1cmVNZXRob2Qgc20pIHRocm93cyBLZXlTdG9yZUV4Y2VwdGlvbiB7CisgICAgICAgIC8vIHNraXAgbm9uLXNpZ25lciBjZXJ0cworICAgICAgICBib29sZWFuW10ga2V5VXNhZ2UgPSB4Y2VydC5nZXRLZXlVc2FnZSgpOworICAgICAgICBpZiAoa2V5VXNhZ2UgIT0gbnVsbCAmJiBrZXlVc2FnZVswXSA9PSBmYWxzZSkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIGFsaWFzID0ga3MuZ2V0Q2VydGlmaWNhdGVBbGlhcyh4Y2VydCk7CisgICAgICAgIGlmIChhbGlhcyAhPSBudWxsKSB7CisgICAgICAgICAgICBQdWJsaWNLZXkgcGsgPSBrcy5nZXRDZXJ0aWZpY2F0ZShhbGlhcykuZ2V0UHVibGljS2V5KCk7CisgICAgICAgICAgICAvLyBtYWtlIHN1cmUgYWxnb3JpdGhtIGlzIGNvbXBhdGlibGUgd2l0aCBtZXRob2QKKyAgICAgICAgICAgIGlmIChhbGdFcXVhbHMoc20uZ2V0QWxnb3JpdGhtKCksIHBrLmdldEFsZ29yaXRobSgpKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2ltcGxlS2V5U2VsZWN0b3JSZXN1bHQocGspOworICAgICAgICAgICAgfQorICAgICAgICB9CisJcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhbiBPSUQgb2YgYSBwdWJsaWMta2V5IGFsZ29yaXRobSBjb21wYXRpYmxlIHdpdGggdGhlIHNwZWNpZmllZAorICAgICAqIHNpZ25hdHVyZSBhbGdvcml0aG0gVVJJLgorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nIGdldFBLQWxnb3JpdGhtT0lEKFN0cmluZyBhbGdVUkkpIHsKKwlpZiAoYWxnVVJJLmVxdWFsc0lnbm9yZUNhc2UoU2lnbmF0dXJlTWV0aG9kLkRTQV9TSEExKSkgeworCSAgICByZXR1cm4gIjEuMi44NDAuMTAwNDAuNC4xIjsKKwl9IGVsc2UgaWYgKGFsZ1VSSS5lcXVhbHNJZ25vcmVDYXNlKFNpZ25hdHVyZU1ldGhvZC5SU0FfU0hBMSkpIHsKKwkgICAgcmV0dXJuICIxLjIuODQwLjExMzU0OS4xLjEiOworCX0gZWxzZSB7CisJICAgIHJldHVybiBudWxsOworCX0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBIHNpbXBsZSBLZXlTZWxlY3RvclJlc3VsdCBjb250YWluaW5nIGEgcHVibGljIGtleS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBTaW1wbGVLZXlTZWxlY3RvclJlc3VsdCBpbXBsZW1lbnRzIEtleVNlbGVjdG9yUmVzdWx0IHsKKwlwcml2YXRlIGZpbmFsIEtleSBrZXk7CisJU2ltcGxlS2V5U2VsZWN0b3JSZXN1bHQoS2V5IGtleSkgeyB0aGlzLmtleSA9IGtleTsgfQorCXB1YmxpYyBLZXkgZ2V0S2V5KCkgeyByZXR1cm4ga2V5OyB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2hlY2tzIGlmIGEgSkNBL0pDRSBwdWJsaWMga2V5IGFsZ29yaXRobSBuYW1lIGlzIGNvbXBhdGlibGUgd2l0aAorICAgICAqIHRoZSBzcGVjaWZpZWQgc2lnbmF0dXJlIGFsZ29yaXRobSBVUkkuCisgICAgICovCisgICAgLy9AQEBGSVhNRTogdGhpcyBzaG91bGQgYWxzbyB3b3JrIGZvciBrZXkgdHlwZXMgb3RoZXIgdGhhbiBEU0EvUlNBCisgICAgcHJpdmF0ZSBib29sZWFuIGFsZ0VxdWFscyhTdHJpbmcgYWxnVVJJLCBTdHJpbmcgYWxnTmFtZSkgeworICAgICAgICBpZiAoYWxnTmFtZS5lcXVhbHNJZ25vcmVDYXNlKCJEU0EiKSAmJgorICAgICAgICAgICAgYWxnVVJJLmVxdWFsc0lnbm9yZUNhc2UoU2lnbmF0dXJlTWV0aG9kLkRTQV9TSEExKSkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAoYWxnTmFtZS5lcXVhbHNJZ25vcmVDYXNlKCJSU0EiKSAmJgorICAgICAgICAgICAgYWxnVVJJLmVxdWFsc0lnbm9yZUNhc2UoU2lnbmF0dXJlTWV0aG9kLlJTQV9TSEExKSkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZWFyY2hlcyB0aGUgc3BlY2lmaWVkIGtleXN0b3JlIGZvciBhIGNlcnRpZmljYXRlIHRoYXQgbWF0Y2hlcyBhbgorICAgICAqIGVudHJ5IG9mIHRoZSBzcGVjaWZpZWQgWDUwOURhdGEgYW5kIGNvbnRhaW5zIGEgcHVibGljIGtleSB0aGF0IGlzIAorICAgICAqIGNvbXBhdGlibGUgd2l0aCB0aGUgc3BlY2lmaWVkIFNpZ25hdHVyZU1ldGhvZC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gYSBLZXlTZWxlY3RvclJlc3VsdCBjb250YWluaW5nIHRoZSBjZXJ0J3MgcHVibGljIGtleSBpZiB0aGVyZQorICAgICAqICAgaXMgYSBtYXRjaDsgb3RoZXJ3aXNlIG51bGwKKyAgICAgKi8KKyAgICBwcml2YXRlIEtleVNlbGVjdG9yUmVzdWx0IHg1MDlEYXRhU2VsZWN0KFg1MDlEYXRhIHhkLCBTaWduYXR1cmVNZXRob2Qgc20pIAorCXRocm93cyBLZXlTdG9yZUV4Y2VwdGlvbiwgS2V5U2VsZWN0b3JFeGNlcHRpb24geworCisJLy8gY29udmVydCBzaWduYXR1cmUgYWxnb3JpdGhtIHRvIGNvbXBhdGlibGUgcHVibGljLWtleSBhbGcgT0lECisJU3RyaW5nIGFsZ09JRCA9IGdldFBLQWxnb3JpdGhtT0lEKHNtLmdldEFsZ29yaXRobSgpKTsKKyAgICAgICAgWDUwOUNlcnRTZWxlY3RvciBzdWJqZWN0Y3MgPSBuZXcgWDUwOUNlcnRTZWxlY3RvcigpOworCXRyeSB7CisgICAgICAgICAgICBzdWJqZWN0Y3Muc2V0U3ViamVjdFB1YmxpY0tleUFsZ0lEKGFsZ09JRCk7CisgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGlvZSkgeworCSAgICB0aHJvdyBuZXcgS2V5U2VsZWN0b3JFeGNlcHRpb24oaW9lKTsKKwl9CisgICAgICAgIENvbGxlY3Rpb24gY2VydHMgPSBuZXcgQXJyYXlMaXN0KCk7CisKKyAgICAgICAgSXRlcmF0b3IgeGkgPSB4ZC5nZXRDb250ZW50KCkuaXRlcmF0b3IoKTsKKyAgICAgICAgd2hpbGUgKHhpLmhhc05leHQoKSkgeworICAgICAgICAgICAgT2JqZWN0IG8gPSB4aS5uZXh0KCk7CisJICAgIC8vIGNoZWNrIFg1MDlJc3N1ZXJTZXJpYWwKKwkgICAgaWYgKG8gaW5zdGFuY2VvZiBYNTA5SXNzdWVyU2VyaWFsKSB7CisJICAgICAgICBYNTA5SXNzdWVyU2VyaWFsIHhpcyA9IChYNTA5SXNzdWVyU2VyaWFsKSBvOworCSAgICAgICAgdHJ5IHsKKwkgICAgICAgICAgICBzdWJqZWN0Y3Muc2V0U2VyaWFsTnVtYmVyKHhpcy5nZXRTZXJpYWxOdW1iZXIoKSk7CisJCSAgICBTdHJpbmcgaXNzdWVyID0gbmV3IFg1MDBQcmluY2lwYWwoeGlzLmdldElzc3Vlck5hbWUoKSkuZ2V0TmFtZSgpOworCQkgICAgLy8gc3RyaXAgb2ZmIG5ld2xpbmUKKwkJICAgIGlmIChpc3N1ZXIuZW5kc1dpdGgoIlxuIikpIHsKKwkJCWlzc3VlciA9IG5ldyBTdHJpbmcKKwkJCSAgICAoaXNzdWVyLnRvQ2hhckFycmF5KCksIDAsIGlzc3Vlci5sZW5ndGgoKS0xKTsKKwkJICAgIH0KKwkJICAgIHN1YmplY3Rjcy5zZXRJc3N1ZXIoaXNzdWVyKTsKKwkgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGlvZSkgeworCQkgICAgdGhyb3cgbmV3IEtleVNlbGVjdG9yRXhjZXB0aW9uKGlvZSk7CisJCX0KKwkgICAgLy8gY2hlY2sgWDUwOVN1YmplY3ROYW1lCisJICAgIH0gZWxzZSBpZiAobyBpbnN0YW5jZW9mIFN0cmluZykgeworCSAgICAgICAgU3RyaW5nIHNuID0gKFN0cmluZykgbzsKKwkgICAgICAgIHRyeSB7CisJCSAgICBTdHJpbmcgc3ViamVjdCA9IG5ldyBYNTAwUHJpbmNpcGFsKHNuKS5nZXROYW1lKCk7CisJCSAgICAvLyBzdHJpcCBvZmYgbmV3bGluZQorCQkgICAgaWYgKHN1YmplY3QuZW5kc1dpdGgoIlxuIikpIHsKKwkJCXN1YmplY3QgPSBuZXcgU3RyaW5nCisJCQkgICAgKHN1YmplY3QudG9DaGFyQXJyYXkoKSwgMCwgc3ViamVjdC5sZW5ndGgoKS0xKTsKKwkJICAgIH0KKwkJICAgIHN1YmplY3Rjcy5zZXRTdWJqZWN0KHN1YmplY3QpOworCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBpb2UpIHsKKwkJICAgIHRocm93IG5ldyBLZXlTZWxlY3RvckV4Y2VwdGlvbihpb2UpOworCQl9CisJICAgIC8vIGNoZWNrIFg1MDlTS0kKKwkgICAgfSBlbHNlIGlmIChvIGluc3RhbmNlb2YgYnl0ZVtdKSB7CisJICAgICAgICBieXRlW10gc2tpID0gKGJ5dGVbXSkgbzsKKwkJLy8gREVSLWVuY29kZSBza2kgLSByZXF1aXJlZCBieSBYNTA5Q2VydFNlbGVjdG9yCisJCWJ5dGVbXSBlbmNvZGVkU2tpID0gbmV3IGJ5dGVbc2tpLmxlbmd0aCsyXTsKKwkJZW5jb2RlZFNraVswXSA9IDB4MDQ7IC8vIE9DVEVUIFNUUklORyB0YWcgdmFsdWUKKwkJZW5jb2RlZFNraVsxXSA9IChieXRlKSBza2kubGVuZ3RoOyAvLyBsZW5ndGgKKwkJU3lzdGVtLmFycmF5Y29weShza2ksIDAsIGVuY29kZWRTa2ksIDIsIHNraS5sZW5ndGgpOworCQlzdWJqZWN0Y3Muc2V0U3ViamVjdEtleUlkZW50aWZpZXIoZW5jb2RlZFNraSk7CisJICAgIH0gZWxzZSBpZiAobyBpbnN0YW5jZW9mIFg1MDlDZXJ0aWZpY2F0ZSkgeworCQljZXJ0cy5hZGQoKFg1MDlDZXJ0aWZpY2F0ZSkgbyk7CisJICAgIC8vIGNoZWNrIFg1MDlDUkwKKwkgICAgLy8gbm90IHN1cHBvcnRlZDogc2hvdWxkIHVzZSBDZXJ0UGF0aCBBUEkKKwkgICAgfSBlbHNlIHsKKwkgICAgICAgIC8vIHNraXAgYWxsIG90aGVyIGVudHJpZXMKKwkgICAgICAgIGNvbnRpbnVlOworCSAgICB9CisJfQorCUtleVNlbGVjdG9yUmVzdWx0IGtzciA9IGtleVN0b3JlU2VsZWN0KHN1YmplY3Rjcyk7CisJaWYgKGtzciAhPSBudWxsKSB7CisJICAgIHJldHVybiBrc3I7CisJfQorCWlmICghY2VydHMuaXNFbXB0eSgpICYmICF0cnVzdGVkKSB7CisJICAgIC8vIHRyeSB0byBmaW5kIHB1YmxpYyBrZXkgaW4gY2VydHMgaW4gWDUwOURhdGEKKwkgICAgSXRlcmF0b3IgaSA9IGNlcnRzLml0ZXJhdG9yKCk7CisJICAgIHdoaWxlIChpLmhhc05leHQoKSkgeworCQlYNTA5Q2VydGlmaWNhdGUgY2VydCA9IChYNTA5Q2VydGlmaWNhdGUpIGkubmV4dCgpOworCQlpZiAoc3ViamVjdGNzLm1hdGNoKGNlcnQpKSB7CisJCSAgICByZXR1cm4gbmV3IFNpbXBsZUtleVNlbGVjdG9yUmVzdWx0KGNlcnQuZ2V0UHVibGljS2V5KCkpOworCQl9CisJICAgIH0KKwl9CisJcmV0dXJuIG51bGw7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9YTUxPYmplY3RUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL1hNTE9iamVjdFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTcxZThmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9YTUxPYmplY3RUZXN0LmphdmEKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNi0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by50ZXN0LmRzaWc7CisKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay4qOworCisvKioKKyAqIFVuaXQgdGVzdCBmb3IgamF2YXgueG1sLmNyeXB0by5kc2lnLlhNTE9iamVjdAorICoKKyAqIEB2ZXJzaW9uICRJZCQKKyAqIEBhdXRob3IgVmFsZXJpZSBQZW5nCisgKi8KK3B1YmxpYyBjbGFzcyBYTUxPYmplY3RUZXN0IGV4dGVuZHMgVGVzdENhc2UgeworCisgICAgcHJpdmF0ZSBYTUxTaWduYXR1cmVGYWN0b3J5IGZhY3Rvcnk7CisgICAgcHJpdmF0ZSBTdHJpbmcgaWQgPSAiaWQiOworICAgIHByaXZhdGUgU3RyaW5nIG1pbWVUeXBlID0gIm1pbWUiOworICAgIHByaXZhdGUgU3RyaW5nIGVuY29kaW5nID0gImVuY29kaW5nIjsKKworICAgIHB1YmxpYyBYTUxPYmplY3RUZXN0KCkgeworCXN1cGVyKCJYTUxPYmplY3RUZXN0Iik7CisgICAgfQorCisgICAgcHVibGljIFhNTE9iamVjdFRlc3QoU3RyaW5nIG5hbWUpIHsKKwlzdXBlcihuYW1lKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24geworCWZhY3RvcnkgPSBYTUxTaWduYXR1cmVGYWN0b3J5LmdldEluc3RhbmNlCisgICAgICAgICAgICAoIkRPTSIsIG5ldyBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbS5YTUxEU2lnUkkoKSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHRlYXJEb3duKCkge30KKyAgICAKKyAgICBwdWJsaWMgdm9pZCB0ZXN0Q29uc3RydWN0b3IoKSB7CisJLy8gdGVzdCBYTUxTaWduYXR1cmVGYWN0b3J5Lm5ld1hNTE9iamVjdChMaXN0LCBTdHJpbmcsIFN0cmluZywgU3RyaW5nKSAKKwlYTUxPYmplY3Qgb2JqOworCQorCW9iaiA9IGZhY3RvcnkubmV3WE1MT2JqZWN0KG51bGwsIG51bGwsIG51bGwsIG51bGwpOyAKKwlhc3NlcnROb3ROdWxsKG9iaik7CisKKwlWZWN0b3IgbGlzdCA9IG5ldyBWZWN0b3IoKTsKKwlvYmogPSBmYWN0b3J5Lm5ld1hNTE9iamVjdChsaXN0LCBudWxsLCBudWxsLCBudWxsKTsgCisJYXNzZXJ0Tm90TnVsbChvYmopOworCQorCVN0cmluZyBzdHJFbnRyeSA9ICJ3cm9uZyB0eXBlIjsKKwlsaXN0LmFkZChzdHJFbnRyeSk7CisJdHJ5IHsKKwkgICAgb2JqID0gZmFjdG9yeS5uZXdYTUxPYmplY3QobGlzdCwgbnVsbCwgbnVsbCwgbnVsbCk7IAorCSAgICBmYWlsKCJTaG91bGQgcmFpc2UgYSBDQ0UgZm9yIGNvbnRlbnQgY29udGFpbmluZyAiICsKKwkJICJpbnZhbGlkLCBpLmUuIG5vbi1YTUxTdHJ1Y3R1cmUsIGVudHJpZXMiKTsgCisJfSBjYXRjaCAoQ2xhc3NDYXN0RXhjZXB0aW9uIGNjZSkgeworCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworCSAgICBmYWlsKCJTaG91bGQgcmFpc2UgYSBDQ0UgZm9yIGNvbnRlbnQgd2l0aCBpbnZhbGlkIGVudHJpZXMgIiArCisJCSAiaW5zdGVhZCBvZiAiICsgZXgpOworCX0KKwlsaXN0LnJlbW92ZShzdHJFbnRyeSk7CisJbGlzdC5hZGQobmV3IFRlc3RVdGlscy5NeU93blhNTFN0cnVjdHVyZSgpKTsKKwlvYmogPSBmYWN0b3J5Lm5ld1hNTE9iamVjdChsaXN0LCBpZCwgbWltZVR5cGUsIGVuY29kaW5nKTsKKwlhc3NlcnROb3ROdWxsKG9iaik7CisJYXNzZXJ0Tm90TnVsbChvYmouZ2V0Q29udGVudCgpKTsKKwlhc3NlcnRUcnVlKEFycmF5cy5lcXVhbHMob2JqLmdldENvbnRlbnQoKS50b0FycmF5KCksIGxpc3QudG9BcnJheSgpKSk7CisJYXNzZXJ0RXF1YWxzKG9iai5nZXRJZCgpLCBpZCk7CisJYXNzZXJ0RXF1YWxzKG9iai5nZXRNaW1lVHlwZSgpLCBtaW1lVHlwZSk7CisJYXNzZXJ0RXF1YWxzKG9iai5nZXRFbmNvZGluZygpLCBlbmNvZGluZyk7CisKKwlMaXN0IHVubW9kaWZpYWJsZSA9IG9iai5nZXRDb250ZW50KCk7CisJdHJ5IHsKKwkgICAgdW5tb2RpZmlhYmxlLmFkZChuZXcgVGVzdFV0aWxzLk15T3duWE1MU3RydWN0dXJlKCkpOworCSAgICBmYWlsKCJTaG91bGQgcmV0dXJuIGFuIHVubW9kaWZpYWJsZSBMaXN0IG9iamVjdCIpOworCX0gY2F0Y2ggKFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIHVvZSkge30KKwlhc3NlcnRUcnVlKEFycmF5cy5lcXVhbHModW5tb2RpZmlhYmxlLnRvQXJyYXkoKSwgbGlzdC50b0FycmF5KCkpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0aXNGZWF0dXJlU3VwcG9ydGVkKCkgeworCUxpc3QgbGlzdCA9IG5ldyBWZWN0b3IoKTsKKwlsaXN0LmFkZChuZXcgVGVzdFV0aWxzLk15T3duWE1MU3RydWN0dXJlKCkpOworCVhNTE9iamVjdCBvYmogPSBmYWN0b3J5Lm5ld1hNTE9iamVjdChsaXN0LCBpZCwgbWltZVR5cGUsIGVuY29kaW5nKTsKKwl0cnkgeworCSAgICBvYmouaXNGZWF0dXJlU3VwcG9ydGVkKG51bGwpOyAKKwkgICAgZmFpbCgiU2hvdWxkIHJhaXNlIGEgTlBFIGZvciBudWxsIGZlYXR1cmUiKTsgCisJfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gbnBlKSB7fQorCisJYXNzZXJ0VHJ1ZSghb2JqLmlzRmVhdHVyZVN1cHBvcnRlZCgibm90IHN1cHBvcnRlZCIpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL1hNTFNpZ25Db250ZXh0VGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9YTUxTaWduQ29udGV4dFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDE5NmQyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9YTUxTaWduQ29udGV4dFRlc3QuamF2YQpAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA2LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLnRlc3QuZHNpZzsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuZG9tLkRPTVNpZ25Db250ZXh0OworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uS2V5U2VsZWN0b3I7CitpbXBvcnQgamF2YS5zZWN1cml0eS4qOworaW1wb3J0IGphdmF4LmNyeXB0by5TZWNyZXRLZXk7CitpbXBvcnQgamF2YXguY3J5cHRvLnNwZWMuU2VjcmV0S2V5U3BlYzsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay4qOworCisvKioKKyAqIFVuaXQgdGVzdCBmb3IgamF2YXgueG1sLmNyeXB0by5kc2lnLlhNTFNpZ25Db250ZXh0CisgKgorICogQHZlcnNpb24gJElkJAorICogQGF1dGhvciBWYWxlcmllIFBlbmcKKyAqLworcHVibGljIGNsYXNzIFhNTFNpZ25Db250ZXh0VGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgIHByaXZhdGUgWE1MU2lnbkNvbnRleHQgZGVmQ29udGV4dDsKKyAgICBwcml2YXRlIEtleVtdIEtFWVM7CisgICAgcHJpdmF0ZSBEb2N1bWVudCBkb2M7CisKKyAgICBwdWJsaWMgWE1MU2lnbkNvbnRleHRUZXN0KCkgeworCXN1cGVyKCJYTUxTaWduQ29udGV4dFRlc3QiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgWE1MU2lnbkNvbnRleHRUZXN0KFN0cmluZyBuYW1lKSB7CisJc3VwZXIobmFtZSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkvLyBzZXQgdXAgdGhlIHNpZ25pbmdLZXlzCisJS0VZUyA9IG5ldyBLZXlbM107CisJS0VZU1swXSA9IFRlc3RVdGlscy5nZXRQcml2YXRlS2V5KCJEU0EiKTsKKwlLRVlTWzFdID0gVGVzdFV0aWxzLmdldFByaXZhdGVLZXkoIlJTQSIpOworCUtFWVNbMl0gPSBuZXcgU2VjcmV0S2V5U3BlYyhuZXcgYnl0ZVsxNl0sICJIbWFjU0hBMSIpOworCS8vIHNldCB1cCB0aGUgZGVmYXVsdCBYTUxTaWduQ29udGV4dAorCVNlY3JldEtleSBzayA9IG5ldyBTZWNyZXRLZXlTcGVjKG5ldyBieXRlWzhdLCAiREVTIik7CisJZG9jID0gVGVzdFV0aWxzLm5ld0RvY3VtZW50KCk7CisJZGVmQ29udGV4dCA9IG5ldyBET01TaWduQ29udGV4dChzaywgZG9jKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZWFyRG93bigpIHsgfQorCisgICAgcHVibGljIHZvaWQgdGVzdHNldG5nZXRCYXNlVVJJKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJYXNzZXJ0TnVsbChkZWZDb250ZXh0LmdldEJhc2VVUkkoKSk7CisKKwlTdHJpbmcgdXJpID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiOworCWRlZkNvbnRleHQuc2V0QmFzZVVSSSh1cmkpOworCWFzc2VydEVxdWFscyhkZWZDb250ZXh0LmdldEJhc2VVUkkoKSwgdXJpKTsKKwlkZWZDb250ZXh0LnNldEJhc2VVUkkobnVsbCk7CisJYXNzZXJ0TnVsbChkZWZDb250ZXh0LmdldEJhc2VVUkkoKSk7CisgICAgfQorCisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0c2V0bmdldFByb3BlcnR5KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJU3RyaW5nIG5hbWUgPSAia2V5IjsKKwlhc3NlcnROdWxsKGRlZkNvbnRleHQuZ2V0UHJvcGVydHkobmFtZSkpOworCXRyeSB7CisJICAgIGRlZkNvbnRleHQuc2V0UHJvcGVydHkobnVsbCwgbnVsbCk7CisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhIE5QRSB3aXRoIGEgbnVsbCBuYW1lIik7CisJfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gbnBlKSB7CisJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhIE5QRSBpbnN0ZWFkIG9mICIgKyBleCk7CisJfQorCVN0cmluZyB2YWx1ZTEgPSAidmFsdWUjMSI7CisJU3RyaW5nIHZhbHVlMiA9ICJ2YWx1ZSMyIjsKKwlhc3NlcnROdWxsKGRlZkNvbnRleHQuc2V0UHJvcGVydHkobmFtZSwgdmFsdWUxKSk7CisJYXNzZXJ0RXF1YWxzKGRlZkNvbnRleHQuZ2V0UHJvcGVydHkobmFtZSksIHZhbHVlMSk7CisJYXNzZXJ0RXF1YWxzKGRlZkNvbnRleHQuc2V0UHJvcGVydHkobmFtZSwgdmFsdWUyKSwgdmFsdWUxKTsKKwlhc3NlcnRFcXVhbHMoZGVmQ29udGV4dC5nZXRQcm9wZXJ0eShuYW1lKSwgdmFsdWUyKTsKKwlhc3NlcnRFcXVhbHMoZGVmQ29udGV4dC5zZXRQcm9wZXJ0eShuYW1lLCBudWxsKSwgdmFsdWUyKTsKKwlhc3NlcnROdWxsKGRlZkNvbnRleHQuZ2V0UHJvcGVydHkobmFtZSkpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RzZXRuZ2V0VVJJRGVyZWZlcmVuY2VyKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJYXNzZXJ0TnVsbChkZWZDb250ZXh0LmdldFVSSURlcmVmZXJlbmNlcigpKTsKKwlieXRlW10gZGF0YSA9ICJzaW1wbGVEZXJlZmVyZW5jZXIiLmdldEJ5dGVzKCk7CisJVVJJRGVyZWZlcmVuY2VyIGRlcmVmID0gbmV3IFRlc3RVdGlscy5PY3RldFN0cmVhbVVSSURlcmVmZXJlbmNlcihkYXRhKTsKKworCWRlZkNvbnRleHQuc2V0VVJJRGVyZWZlcmVuY2VyKGRlcmVmKTsKKwlhc3NlcnRFcXVhbHMoZGVmQ29udGV4dC5nZXRVUklEZXJlZmVyZW5jZXIoKSwgZGVyZWYpOworCWRlZkNvbnRleHQuc2V0VVJJRGVyZWZlcmVuY2VyKG51bGwpOworCWFzc2VydE51bGwoZGVmQ29udGV4dC5nZXRVUklEZXJlZmVyZW5jZXIoKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdHNldG5nZXRLZXlTZWxlY3RvcigpIHRocm93cyBFeGNlcHRpb24geworCWRlZkNvbnRleHQuc2V0S2V5U2VsZWN0b3IobnVsbCk7CisJYXNzZXJ0TnVsbChkZWZDb250ZXh0LmdldEtleVNlbGVjdG9yKCkpOworCUtleVNlbGVjdG9yIGtzID0gS2V5U2VsZWN0b3Iuc2luZ2xldG9uS2V5U2VsZWN0b3IoS0VZU1swXSk7CisJZGVmQ29udGV4dC5zZXRLZXlTZWxlY3Rvcihrcyk7CisgICAgICAgCWFzc2VydEVxdWFscyhkZWZDb250ZXh0LmdldEtleVNlbGVjdG9yKCksIGtzKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL1hNTFNpZ25hdHVyZUZhY3RvcnlUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL1hNTFNpZ25hdHVyZUZhY3RvcnlUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ4ZWNjNQotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvWE1MU2lnbmF0dXJlRmFjdG9yeVRlc3QuamF2YQpAQCAtMCwwICsxLDE5MCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA2LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLnRlc3QuZHNpZzsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHJvdmlkZXI7CitpbXBvcnQgamF2YS5zZWN1cml0eS5TZWN1cml0eTsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcua2V5aW5mby4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuZG9tLkRPTVZhbGlkYXRlQ29udGV4dDsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXI7CitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeTsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay4qOworCisvKioKKyAqIFVuaXQgdGVzdCBmb3IgamF2YXgueG1sLmNyeXB0by5kc2lnLlhNTFNpZ25hdHVyZUZhY3RvcnkKKyAqCisgKiBAdmVyc2lvbiAkSWQkCisgKiBAYXV0aG9yIFZhbGVyaWUgUGVuZworICovCitwdWJsaWMgY2xhc3MgWE1MU2lnbmF0dXJlRmFjdG9yeVRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgICBYTUxTaWduYXR1cmVGYWN0b3J5IGZhY3Rvcnk7CisKKyAgICBzdGF0aWMgeworICAgICAgICBTZWN1cml0eS5pbnNlcnRQcm92aWRlckF0CisgICAgICAgICAgICAobmV3IG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tLlhNTERTaWdSSSgpLCAxKTsKKyAgICB9CisKKyAgICBwdWJsaWMgWE1MU2lnbmF0dXJlRmFjdG9yeVRlc3QoU3RyaW5nIG5hbWUpIHsKKwlzdXBlcihuYW1lKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24geyAKKwlmYWN0b3J5ID0gWE1MU2lnbmF0dXJlRmFjdG9yeS5nZXRJbnN0YW5jZQorICAgICAgICAgICAgKCJET00iLCBuZXcgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJKCkpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlYXJEb3duKCkgeyB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0Z2V0SW5zdGFuY2UoKSB7CisJdHJ5IHsKKwkgICAgWE1MU2lnbmF0dXJlRmFjdG9yeS5nZXRJbnN0YW5jZSgibm9uLWV4aXN0ZW50Iik7CisJICAgIGZhaWwoIlNob3VsZCB0aHJvdyBOb1N1Y2hNZWNoYW5pc21FeGNlcHRpb24gaWYgbm8gaW1wbCBmb3VuZCIpOworCX0gY2F0Y2ggKE5vU3VjaE1lY2hhbmlzbUV4Y2VwdGlvbiBleCkge30KKworCXRyeSB7CisJICAgIFhNTFNpZ25hdHVyZUZhY3RvcnkuZ2V0SW5zdGFuY2UobnVsbCk7CisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhIE5QRSBmb3IgbnVsbCBtZWNoYW5pc21UeXBlIik7IAorCX0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIG5wZSkge30KKworCXRyeSB7CisJICAgIFhNTFNpZ25hdHVyZUZhY3RvcnkuZ2V0SW5zdGFuY2UoIkRPTSIsICJub24tZXhpc3RlbnQiKTsKKwkgICAgZmFpbCgiU2hvdWxkIHRocm93IE5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIGlmIHNwZWNpZmllZCAiICsKKwkJICJwcm92aWRlciBpcyBub3QgZm91bmQiKTsKKwl9IGNhdGNoIChOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiBuc3BlKSB7CisJfSBjYXRjaCAoTm9TdWNoTWVjaGFuaXNtRXhjZXB0aW9uIG5zZSkgeworCSAgICBmYWlsKCJTaG91bGQgcmFpc2UgYSBOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiBpbnN0ZWFkIG9mICIgKyBuc2UgKworCQkgIiBpZiBzcGVjaWZpZWQgcHJvdmlkZXIgaXMgbm90IGZvdW5kIik7IAorCX0KKworCXRyeSB7CisJICAgIFhNTFNpZ25hdHVyZUZhY3RvcnkuZ2V0SW5zdGFuY2UobnVsbCk7CisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhIE5QRSBmb3IgbnVsbCBtZWNoYW5pc21UeXBlIik7IAorCX0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIG5wZSkge30KKworCXRyeSB7CisJICAgIFhNTFNpZ25hdHVyZUZhY3RvcnkuZ2V0SW5zdGFuY2UoIkRPTSIsIChQcm92aWRlcikgbnVsbCk7CisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhIE5QRSBmb3IgbnVsbCBwcm92aWRlciIpOyAKKwl9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBucGUpIHt9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdGdldE1lY2hhbmlzbVR5cGUoKSB7CisJYXNzZXJ0Tm90TnVsbChmYWN0b3J5KTsKKwlhc3NlcnRFcXVhbHMoIkRPTSIsIGZhY3RvcnkuZ2V0TWVjaGFuaXNtVHlwZSgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0aXNGZWF0dXJlU3VwcG9ydGVkKCkgeworCXRyeSB7CisJICAgIGZhY3RvcnkuaXNGZWF0dXJlU3VwcG9ydGVkKG51bGwpOyAKKwkgICAgZmFpbCgiU2hvdWxkIHJhaXNlIGEgTlBFIGZvciBudWxsIGZlYXR1cmUiKTsgCisJfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gbnBlKSB7fQorCisJYXNzZXJ0VHJ1ZSghZmFjdG9yeS5pc0ZlYXR1cmVTdXBwb3J0ZWQoIm5vdCBzdXBwb3J0ZWQiKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdGdldEtleUluZm9GYWN0b3J5KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJS2V5SW5mb0ZhY3Rvcnkga2lmYWMgPSBmYWN0b3J5LmdldEtleUluZm9GYWN0b3J5KCk7CisJYXNzZXJ0RXF1YWxzKGtpZmFjLmdldE1lY2hhbmlzbVR5cGUoKSwgZmFjdG9yeS5nZXRNZWNoYW5pc21UeXBlKCkpOworCWFzc2VydEVxdWFscyhraWZhYy5nZXRQcm92aWRlcigpLCBmYWN0b3J5LmdldFByb3ZpZGVyKCkpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3R1bm1hcnNoYWxYTUxTaWduYXR1cmUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlYTUxTaWduYXR1cmUgc3R1ZmY7CisJdHJ5IHsKKwkgICAgc3R1ZmYgPSBmYWN0b3J5LnVubWFyc2hhbFhNTFNpZ25hdHVyZSgoWE1MVmFsaWRhdGVDb250ZXh0KSBudWxsKTsKKwkgICAgZmFpbCgiU2hvdWxkIHJhaXNlIGFuIE5QRSBmb3IgbnVsbCBpbnB1dHMiKTsgCisJfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gZXgpIHsKKwl9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKwkgICAgZmFpbCgiU2hvdWxkIHRocm93IGFuIE5QRSBpbnN0ZWFkIG9mICIgKyBleCArCisJCSAiIGZvciBudWxsIGlucHV0cyIpOworCX0KKworCXRyeSB7CisJICAgIHN0dWZmID0gZmFjdG9yeS51bm1hcnNoYWxYTUxTaWduYXR1cmUoCisJCW5ldyBYTUxWYWxpZGF0ZUNvbnRleHQoKSB7CisJCSAgICBwdWJsaWMgT2JqZWN0IGdldFByb3BlcnR5KFN0cmluZyBuYW1lKSB7IHJldHVybiBudWxsOyB9CisJCSAgICBwdWJsaWMgT2JqZWN0IHNldFByb3BlcnR5KFN0cmluZyBuYW1lLCBPYmplY3QgcHJvcGVydHkpIHsKKwkJCXJldHVybiBudWxsOworCQkgICAgfQorCQkgICAgcHVibGljIFN0cmluZyBnZXRCYXNlVVJJKCkJeyByZXR1cm4gbnVsbDsgfQorCQkgICAgcHVibGljIHZvaWQgc2V0QmFzZVVSSShTdHJpbmcgdXJpKQl7IHJldHVybjsgfQorCQkgICAgcHVibGljIEtleVNlbGVjdG9yIGdldEtleVNlbGVjdG9yKCkgeyByZXR1cm4gbnVsbDsgfQorCQkgICAgcHVibGljIHZvaWQgc2V0S2V5U2VsZWN0b3IoS2V5U2VsZWN0b3Iga3MpIHsgcmV0dXJuOyB9CisJCSAgICBwdWJsaWMgVVJJRGVyZWZlcmVuY2VyIGdldFVSSURlcmVmZXJlbmNlcigpIHsgcmV0dXJuIG51bGw7IH0KKwkJICAgIHB1YmxpYyB2b2lkIHNldFVSSURlcmVmZXJlbmNlcihVUklEZXJlZmVyZW5jZXIgdWQpIHtyZXR1cm47fQorCQkgICAgcHVibGljIE9iamVjdCBnZXQoT2JqZWN0IGtleSkge3JldHVybiBudWxsO30KKwkJICAgIHB1YmxpYyBPYmplY3QgcHV0KE9iamVjdCBrZXksIE9iamVjdCB2YWx1ZSkge3JldHVybiBudWxsO30KKyAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgc2V0RGVmYXVsdE5hbWVzcGFjZVByZWZpeChTdHJpbmcgZGVmUHJlZml4KSB7fQorICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU3RyaW5nIGdldERlZmF1bHROYW1lc3BhY2VQcmVmaXgoKSB7cmV0dXJuIG51bGw7fQorICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU3RyaW5nIHB1dE5hbWVzcGFjZVByZWZpeAorICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyBuc1VSSSwgU3RyaW5nIHByZWZpeCkge3JldHVybiBudWxsO30KKyAgICAgICAgICAgICAgICAgICAgcHVibGljIFN0cmluZyBnZXROYW1lc3BhY2VQcmVmaXgKKyAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgbnNVUkksIFN0cmluZyBkZWZQcmVmaXgpIHtyZXR1cm4gbnVsbDt9CisJCSAgICB9KTsKKwkgICAgZmFpbCgiU2hvdWxkIHRocm93IGEgQ0NFIGZvciBpbnB1dCBvZiB3cm9uZyB0eXBlIik7IAorCX0gY2F0Y2ggKENsYXNzQ2FzdEV4Y2VwdGlvbiBleCkgeworCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworCSAgICBmYWlsKCJTaG91bGQgcmFpc2UgYSBDQ0UgaW5zdGVhZCBvZiAiICsgZXggKworCQkgIiBmb3Igd3JvbmcgaW5wdXRzIik7IAorCX0KKworICAgICAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRvY0ZhY3RvcnkgPQorICAgICAgICAgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCWRvY0ZhY3Rvcnkuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisJRG9jdW1lbnRCdWlsZGVyIGRvY0J1aWxkZXIgPSBkb2NGYWN0b3J5Lm5ld0RvY3VtZW50QnVpbGRlcigpOworCVN0cmluZyBmcyA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiZmlsZS5zZXBhcmF0b3IiKTsKKwlTdHJpbmcgYmFzZSA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpID09IG51bGwgPyAiLi8iOiBTeXN0ZW0uZ2V0UHJvcGVydHkoImJhc2VkaXIiKTsKKwlGaWxlIGRpciA9IG5ldyBGaWxlKGJhc2UgKyBmcyArCisJICAgICJkYXRhIiArIGZzICsgImllIiArIGZzICsgImJhbHRpbW9yZSIgKyBmcyArICJtZXJsaW4tZXhhbXBsZXMiLAorCSAgICAibWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlIik7CisJRG9jdW1lbnQgZG9jID0gZG9jQnVpbGRlci5wYXJzZShuZXcgRmlsZShkaXIsICJzaWduYXR1cmUueG1sIikpOworCU5vZGVMaXN0IG5sID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJLZXlJbmZvIik7CisJdHJ5IHsKKwkgICAgc3R1ZmYgPSBmYWN0b3J5LnVubWFyc2hhbFhNTFNpZ25hdHVyZQorCSAgICAobmV3IERPTVZhbGlkYXRlQ29udGV4dChUZXN0VXRpbHMuZ2V0UHVibGljS2V5KCJSU0EiKSwgbmwuaXRlbSgwKSkpOworCSAgICBmYWlsKCJTaG91bGQgdGhyb3cgYSBNYXJzaGFsRXhjZXB0aW9uIGZvciBub24tWE1MU2lnbmF0dXJlIGlucHV0cyIpOyAKKwl9IGNhdGNoIChNYXJzaGFsRXhjZXB0aW9uIGV4KSB7fQorCQorCW5sID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJTaWduYXR1cmUiKTsKKwl0cnkgeworCSAgICBzdHVmZiA9IGZhY3RvcnkudW5tYXJzaGFsWE1MU2lnbmF0dXJlCisJICAgIChuZXcgRE9NVmFsaWRhdGVDb250ZXh0KFRlc3RVdGlscy5nZXRQdWJsaWNLZXkoIkRTQSIpLCBubC5pdGVtKDApKSk7CisJICAgIGFzc2VydE5vdE51bGwoc3R1ZmYpOworCX0gY2F0Y2ggKE1hcnNoYWxFeGNlcHRpb24gZXgpIHsKKwkgICAgZmFpbCgiVW5tYXJzaGFsIGZhaWxlZDogIiArIGV4LmdldE1lc3NhZ2UoKSk7CisJICAgIGV4LnByaW50U3RhY2tUcmFjZSgpOworCX0KKyAgICB9CisKKyAgICAvLyBmb3IgZGVidWdnaW5nIHB1cnBvc2VzCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisJWE1MU2lnbmF0dXJlRmFjdG9yeVRlc3QgdGVzdCA9IAorCSAgICBuZXcgWE1MU2lnbmF0dXJlRmFjdG9yeVRlc3QoIlhNTFNpZ25hdHVyZUZhY3RvcnlUZXN0Iik7CisJdGVzdC5zZXRVcCgpOworCXRlc3QudGVzdHVubWFyc2hhbFhNTFNpZ25hdHVyZSgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvWE1MU2lnbmF0dXJlVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9YTUxTaWduYXR1cmVUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2JlZmM1YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvWE1MU2lnbmF0dXJlVGVzdC5qYXZhCkBAIC0wLDAgKzEsMzA3IEBACisvKgorICogQ29weXJpZ2h0IDIwMDYtMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8udGVzdC5kc2lnOworCitpbXBvcnQgamF2YS51dGlsLio7CitpbXBvcnQgamF2YS5zZWN1cml0eS4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZG9tLkRPTVN0cnVjdHVyZTsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcua2V5aW5mby4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5zcGVjLkMxNE5NZXRob2RQYXJhbWV0ZXJTcGVjOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5kb20uRE9NU2lnbkNvbnRleHQ7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLmRvbS5ET01WYWxpZGF0ZUNvbnRleHQ7CitpbXBvcnQgamF2YXguY3J5cHRvLnNwZWMuU2VjcmV0S2V5U3BlYzsKKworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuKjsKKworLyoqCisgKiBVbml0IHRlc3QgZm9yIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5YTUxTaWduYXR1cmUKKyAqCisgKiBAdmVyc2lvbiAkSWQkCisgKiBAYXV0aG9yIFZhbGVyaWUgUGVuZworICovCitwdWJsaWMgY2xhc3MgWE1MU2lnbmF0dXJlVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKyAgICBwcml2YXRlIFhNTFNpZ25hdHVyZUZhY3RvcnkgZmFjOworICAgIHByaXZhdGUgS2V5SW5mb0ZhY3Rvcnkga2lmYWM7CisgICAgcHJpdmF0ZSBTaWduZWRJbmZvIGRlZlNpOworICAgIHByaXZhdGUgS2V5SW5mbyBkZWZLaTsKKyAgICBwcml2YXRlIExpc3Qgb2JqczsKKyAgICBwcml2YXRlIFN0cmluZyBpZCA9ICJpZCI7CisgICAgcHJpdmF0ZSBTdHJpbmcgc2lnVmFsdWVJZCA9ICJzaWduYXR1cmVWYWx1ZUlkIjsKKyAgICBwcml2YXRlIEtleVtdIFNJR05fS0VZUzsKKyAgICBwcml2YXRlIEtleVtdIFZBTElEQVRFX0tFWVM7CisgICAgcHJpdmF0ZSBTaWduYXR1cmVNZXRob2RbXSBTSUdfTUVUSE9EUzsKKworICAgIHN0YXRpYyB7CisgICAgICAgIFNlY3VyaXR5Lmluc2VydFByb3ZpZGVyQXQKKyAgICAgICAgICAgIChuZXcgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJKCksIDEpOworICAgIH0KKworICAgIHB1YmxpYyBYTUxTaWduYXR1cmVUZXN0KCkgeworCXN1cGVyKCJYTUxTaWduYXR1cmVUZXN0Iik7CisgICAgfQorCisgICAgcHVibGljIFhNTFNpZ25hdHVyZVRlc3QoU3RyaW5nIG5hbWUpIHsKKwlzdXBlcihuYW1lKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24geworCWZhYyA9IFhNTFNpZ25hdHVyZUZhY3RvcnkuZ2V0SW5zdGFuY2UKKyAgICAgICAgICAgICgiRE9NIiwgbmV3IG9yZy5qY3AueG1sLmRzaWcuaW50ZXJuYWwuZG9tLlhNTERTaWdSSSgpKTsKKwlraWZhYyA9IEtleUluZm9GYWN0b3J5LmdldEluc3RhbmNlCisgICAgICAgICAgICAoIkRPTSIsIG5ldyBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbS5YTUxEU2lnUkkoKSk7CisKKwkvLyBzZXQgdXAgdGhlIGNvcnJlc3BvbmRpbmcgU2lnbmF0dXJlTWV0aG9kIAorCVNJR19NRVRIT0RTID0gbmV3IFNpZ25hdHVyZU1ldGhvZFszXTsKKwlTSUdfTUVUSE9EU1swXSA9IGZhYy5uZXdTaWduYXR1cmVNZXRob2QoU2lnbmF0dXJlTWV0aG9kLkRTQV9TSEExLCBudWxsKTsKKwlTSUdfTUVUSE9EU1sxXSA9IGZhYy5uZXdTaWduYXR1cmVNZXRob2QoU2lnbmF0dXJlTWV0aG9kLlJTQV9TSEExLCBudWxsKTsKKwlTSUdfTUVUSE9EU1syXSA9IGZhYy5uZXdTaWduYXR1cmVNZXRob2QoU2lnbmF0dXJlTWV0aG9kLkhNQUNfU0hBMSwgbnVsbCk7CisJLy8gc2V0IHVwIHRoZSBzaWduaW5nS2V5cworCVNJR05fS0VZUyA9IG5ldyBLZXlbM107CisJU0lHTl9LRVlTWzBdID0gVGVzdFV0aWxzLmdldFByaXZhdGVLZXkoIkRTQSIpOworCVNJR05fS0VZU1sxXSA9IFRlc3RVdGlscy5nZXRQcml2YXRlS2V5KCJSU0EiKTsKKwlTSUdOX0tFWVNbMl0gPSBuZXcgU2VjcmV0S2V5U3BlYyhuZXcgYnl0ZVsxNl0sICJIbWFjU0hBMSIpOworCS8vIHNldCB1cCB0aGUgdmFsaWRhdGluZ0tleXMKKwlWQUxJREFURV9LRVlTID0gbmV3IEtleVszXTsKKwlWQUxJREFURV9LRVlTWzBdID0gVGVzdFV0aWxzLmdldFB1YmxpY0tleSgiRFNBIik7CisJVkFMSURBVEVfS0VZU1sxXSA9IFRlc3RVdGlscy5nZXRQdWJsaWNLZXkoIlJTQSIpOworCVZBTElEQVRFX0tFWVNbMl0gPSBuZXcgU2VjcmV0S2V5U3BlYyhuZXcgYnl0ZVsxNl0sICJIbWFjU0hBMSIpOworCWRlZlNpID0gY3JlYXRlU2lnbmVkSW5mbyhTSUdfTUVUSE9EU1swXSk7CisJZGVmS2kgPSBraWZhYy5uZXdLZXlJbmZvCisJICAgIChDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KGtpZmFjLm5ld0tleU5hbWUoIkFsaWNlIikpKTsKKwlvYmpzID0gQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdAorCSAgICAoZmFjLm5ld1hNTE9iamVjdChudWxsLCBudWxsLCBudWxsLCBudWxsKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVhckRvd24oKSB7fQorCisgICAgcHVibGljIHZvaWQgdGVzdENvbnN0cnVjdG9yKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJWE1MU2lnbmF0dXJlIHNpZyA9IG51bGw7CisJLy8gdGVzdCAgWE1MU2lnbmF0dXJlRmFjdG9yeS5uZXdYTUxTaWduYXR1cmUoU2lnbmVkSW5mbywgS2V5SW5mbykKKwkvLyBhbmQgIFhNTFNpZ25hdHVyZUZhY3RvcnkubmV3WE1MU2lnbmF0dXJlKFNpZ25lZEluZm8sCisJLy8gICAgICAgICAgS2V5SW5mbywgTGlzdCwgU3RyaW5nLCBTdHJpbmcpCisJLy8gZm9yIGdlbmVyYXRpbmcgWE1MU2lnbmF0dXJlIG9iamVjdHMKKwlmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykgeworCSAgICB0cnkgeworCQlzd2l0Y2ggKGkpIHsKKwkJY2FzZSAwOgorCQkgICAgc2lnID0gZmFjLm5ld1hNTFNpZ25hdHVyZShudWxsLCBkZWZLaSk7CisJCSAgICBicmVhazsKKwkJY2FzZSAxOgorCQkgICAgc2lnID0gZmFjLm5ld1hNTFNpZ25hdHVyZShudWxsLCBkZWZLaSwgb2JqcywgaWQsIHNpZ1ZhbHVlSWQpOworCQkgICAgYnJlYWs7CisJCX0KKwkJZmFpbCgiU2hvdWxkIHRocm93IGEgTlBFIGZvciBudWxsIHJlZmVyZW5jZXMiKTsKKwkgICAgfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gbnBlKSB7CisJICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworCQlmYWlsKCJTaG91bGQgdGhyb3cgYSBOUEUgaW5zdGVhZCBvZiAiICsgZXggKyAKKwkJICAgICAiIGZvciBudWxsIHJlZmVyZW5jZXMiKTsKKwkgICAgfQorCX0KKwl0cnkgeworCSAgICBzaWcgPSBmYWMubmV3WE1MU2lnbmF0dXJlKGRlZlNpLCBkZWZLaSwgCisJCSAgICAgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdCgid3JvbmdUeXBlIiksIGlkLCBzaWdWYWx1ZUlkKTsKKwkgICAgZmFpbCgiU2hvdWxkIHRocm93IGEgQ0NFIGZvciBpbnZhbGlkIG9iamVjdHMiKTsKKwl9IGNhdGNoIChDbGFzc0Nhc3RFeGNlcHRpb24gY2NlKSB7CisJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJICAgIGZhaWwoIlNob3VsZCB0aHJvdyBhIENDRSBpbnN0ZWFkIG9mICIgKyBleCArIAorCQkgIiBmb3IgaW52YWxpZCBvYmplY3RzIik7CisJfQorCXNpZyA9IGZhYy5uZXdYTUxTaWduYXR1cmUoZGVmU2ksIGRlZktpLCBvYmpzLCBpZCwgc2lnVmFsdWVJZCk7CisJYXNzZXJ0RXF1YWxzKHNpZy5nZXRJZCgpLCBpZCk7CisJYXNzZXJ0RXF1YWxzKHNpZy5nZXRLZXlJbmZvKCksIGRlZktpKTsKKwlhc3NlcnRUcnVlKEFycmF5cy5lcXVhbHMoc2lnLmdldE9iamVjdHMoKS50b0FycmF5KCksIG9ianMudG9BcnJheSgpKSk7CisJYXNzZXJ0TnVsbChzaWcuZ2V0U2lnbmF0dXJlVmFsdWUoKS5nZXRWYWx1ZSgpKTsKKwlhc3NlcnRFcXVhbHMoc2lnLmdldFNpZ25hdHVyZVZhbHVlKCkuZ2V0SWQoKSwgc2lnVmFsdWVJZCk7CisJYXNzZXJ0RXF1YWxzKHNpZy5nZXRTaWduZWRJbmZvKCksIGRlZlNpKTsKKworCXNpZyA9IGZhYy5uZXdYTUxTaWduYXR1cmUoZGVmU2ksIGRlZktpKTsKKwlhc3NlcnROdWxsKHNpZy5nZXRJZCgpKTsKKwlhc3NlcnRFcXVhbHMoc2lnLmdldEtleUluZm8oKSwgZGVmS2kpOworCWFzc2VydFRydWUoc2lnLmdldE9iamVjdHMoKS5zaXplKCk9PTApOworCWFzc2VydE51bGwoc2lnLmdldFNpZ25hdHVyZVZhbHVlKCkuZ2V0VmFsdWUoKSk7CisJYXNzZXJ0TnVsbChzaWcuZ2V0U2lnbmF0dXJlVmFsdWUoKS5nZXRJZCgpKTsKKwlhc3NlcnRFcXVhbHMoc2lnLmdldFNpZ25lZEluZm8oKSwgZGVmU2kpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCB0ZXN0aXNGZWF0dXJlU3VwcG9ydGVkKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKwlYTUxTaWduYXR1cmUgc2lnID0gZmFjLm5ld1hNTFNpZ25hdHVyZShkZWZTaSwgbnVsbCk7CisJCisJdHJ5IHsKKwkgICAgc2lnLmlzRmVhdHVyZVN1cHBvcnRlZChudWxsKTsgCisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhIE5QRSBmb3IgbnVsbCBmZWF0dXJlIik7IAorCX0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIG5wZSkge30KKwkgICAgCisJYXNzZXJ0VHJ1ZSghc2lnLmlzRmVhdHVyZVN1cHBvcnRlZCgibm90IHN1cHBvcnRlZCIpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0c2lnbkFORHZhbGlkYXRlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJWE1MU2lnbmF0dXJlIHNpZzsKKwlTaWduZWRJbmZvIHNpOworCUtleUluZm8ga2kgPSBudWxsOworCVhNTFNpZ25Db250ZXh0IHNpZ25Db250ZXh0OworCVhNTFZhbGlkYXRlQ29udGV4dCB2YWxpZGF0ZUNvbnRleHQ7CisJYm9vbGVhbiBzdGF0dXMgPSB0cnVlOworCWZvciAoaW50IGkgPSBTSUdOX0tFWVMubGVuZ3RoLTE7IGk+PTAgOyBpLS0pIHsKKwkgICAgc2kgPSBjcmVhdGVTaWduZWRJbmZvKFNJR19NRVRIT0RTW2ldKTsKKwkgICAgaWYgKFZBTElEQVRFX0tFWVNbaV0gaW5zdGFuY2VvZiBQdWJsaWNLZXkpIHsKKwkJa2kgPSBraWZhYy5uZXdLZXlJbmZvKENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QKKwkJICAgIChraWZhYy5uZXdLZXlWYWx1ZSgoUHVibGljS2V5KSBWQUxJREFURV9LRVlTW2ldKSkpOworCSAgICB9IGVsc2UgeworCQlraSA9IGtpZmFjLm5ld0tleUluZm8oQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdAorCQkgICAgKGtpZmFjLm5ld0tleU5hbWUoInRlc3R1c2VyIikpKTsKKwkgICAgfQorCSAgICBzaWcgPSBmYWMubmV3WE1MU2lnbmF0dXJlKHNpLCBraSwgb2JqcywgaWQsIHNpZ1ZhbHVlSWQpOyAKKwkgICAgRG9jdW1lbnQgZG9jID0gVGVzdFV0aWxzLm5ld0RvY3VtZW50KCk7CisJICAgIHNpZ25Db250ZXh0ID0gbmV3IERPTVNpZ25Db250ZXh0KFNJR05fS0VZU1tpXSwgZG9jKTsKKwkgICAgc2lnLnNpZ24oc2lnbkNvbnRleHQpOworCSAgICB2YWxpZGF0ZUNvbnRleHQgPSBuZXcgRE9NVmFsaWRhdGVDb250ZXh0CisJCShWQUxJREFURV9LRVlTW2ldLCBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCkpOworCSAgICBpZiAoc2lnLnZhbGlkYXRlKHZhbGlkYXRlQ29udGV4dCkgPT0gZmFsc2UpIHsKKwkJc3RhdHVzID0gZmFsc2U7CisJCVRlc3RVdGlscy5kdW1wRG9jdW1lbnQoZG9jLCAic2lnbmF0dXJlVGVzdF9vdXQiK2krIi54bWwiKTsKKwkgICAgfQorCX0KKwlhc3NlcnRUcnVlKHN0YXR1cyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdHNpZ25XaXRoUHJvdmlkZXIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlYTUxTaWduYXR1cmUgc2lnOworCVNpZ25lZEluZm8gc2k7CisJS2V5SW5mbyBraSA9IG51bGw7CisJWE1MU2lnbkNvbnRleHQgc2lnbkNvbnRleHQ7CisJUHJvdmlkZXIgcCA9IG5ldyBUZXN0UHJvdmlkZXIoKTsKKwlmb3IgKGludCBpID0gU0lHTl9LRVlTLmxlbmd0aC0yOyBpPj0wIDsgaS0tKSB7CisJICAgIHNpID0gY3JlYXRlU2lnbmVkSW5mbyhTSUdfTUVUSE9EU1tpXSk7CisJICAgIGlmIChWQUxJREFURV9LRVlTW2ldIGluc3RhbmNlb2YgUHVibGljS2V5KSB7CisJCWtpID0ga2lmYWMubmV3S2V5SW5mbyhDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0CisJCSAgICAoa2lmYWMubmV3S2V5VmFsdWUoKFB1YmxpY0tleSkgVkFMSURBVEVfS0VZU1tpXSkpKTsKKwkgICAgfSBlbHNlIHsKKwkJa2kgPSBraWZhYy5uZXdLZXlJbmZvKENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QKKwkJICAgIChraWZhYy5uZXdLZXlOYW1lKCJ0ZXN0dXNlciIpKSk7CisJICAgIH0KKwkgICAgc2lnID0gZmFjLm5ld1hNTFNpZ25hdHVyZShzaSwga2ksIG9ianMsIGlkLCBzaWdWYWx1ZUlkKTsgCisJICAgIERvY3VtZW50IGRvYyA9IFRlc3RVdGlscy5uZXdEb2N1bWVudCgpOworCSAgICBzaWduQ29udGV4dCA9IG5ldyBET01TaWduQ29udGV4dChTSUdOX0tFWVNbaV0sIGRvYyk7CisJICAgIHNpZ25Db250ZXh0LnNldFByb3BlcnR5CisJCSgib3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uU2lnbmF0dXJlUHJvdmlkZXIiLCBwKTsKKwkgICAgdHJ5IHsKKwkgICAgICAgIHNpZy5zaWduKHNpZ25Db250ZXh0KTsKKwkgICAgICAgIGZhaWwoIlNob3VsZCBoYXZlIGZhaWxlZCBiZWNhdXNlIFRlc3RQcm92aWRlciBkb2VzIG5vdCAiICsKKwkJICAgICAic3VwcG9ydCAiICsgU0lHTl9LRVlTW2ldLmdldEFsZ29yaXRobSgpKTsKKwkgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJYXNzZXJ0VHJ1ZShlLmdldE1lc3NhZ2UoKSwgCisJCSAgICBlLmdldENhdXNlKCkgaW5zdGFuY2VvZiBOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24pOworCSAgICB9CisJfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RTaWduV2l0aEVtcHR5TlNQcmVmaXgoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlTaWduZWRJbmZvIHNpID0gY3JlYXRlU2lnbmVkSW5mbyhTSUdfTUVUSE9EU1sxXSk7CisJS2V5SW5mbwlraSA9IGtpZmFjLm5ld0tleUluZm8oQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdAorCQkgICAgKGtpZmFjLm5ld0tleVZhbHVlKChQdWJsaWNLZXkpIFZBTElEQVRFX0tFWVNbMV0pKSk7CisJWE1MU2lnbmF0dXJlIHNpZyA9IGZhYy5uZXdYTUxTaWduYXR1cmUoc2ksIGtpLCBvYmpzLCBpZCwgc2lnVmFsdWVJZCk7IAorCURvY3VtZW50IGRvYyA9IFRlc3RVdGlscy5uZXdEb2N1bWVudCgpOworCVhNTFNpZ25Db250ZXh0IHNpZ25Db250ZXh0ID0gbmV3IERPTVNpZ25Db250ZXh0KFNJR05fS0VZU1sxXSwgZG9jKTsKKwlzaWduQ29udGV4dC5wdXROYW1lc3BhY2VQcmVmaXgoWE1MU2lnbmF0dXJlLlhNTE5TLCAiIik7CisgICAgICAgIHNpZy5zaWduKHNpZ25Db250ZXh0KTsKKy8qCisJU3RyaW5nV3JpdGVyIHN3ID0gbmV3IFN0cmluZ1dyaXRlcigpOworCWR1bXBEb2N1bWVudChkb2MsIHN3KTsKKwlTeXN0ZW0ub3V0LnByaW50bG4oc3cpOworKi8KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0U2lnbldpdGhSZWZlcmVuY2VNYW5pZmVzdERlcGVuZGVuY2llcygpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICAvLyBjcmVhdGUgcmVmZXJlbmNlcworCURpZ2VzdE1ldGhvZCBkbSA9IGZhYy5uZXdEaWdlc3RNZXRob2QoRGlnZXN0TWV0aG9kLlNIQTEsIG51bGwpOworICAgICAgICBMaXN0IHJlZnMgPSBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KGZhYy5uZXdSZWZlcmVuY2UoIiNvYmplY3QtMSIsIGRtKSk7CisKKyAgICAgICAgLy8gY3JlYXRlIFNpZ25lZEluZm8KKwlDYW5vbmljYWxpemF0aW9uTWV0aG9kIGNtID0gZmFjLm5ld0Nhbm9uaWNhbGl6YXRpb25NZXRob2QKKwkgICAgKENhbm9uaWNhbGl6YXRpb25NZXRob2QuSU5DTFVTSVZFLCAoQzE0Tk1ldGhvZFBhcmFtZXRlclNwZWMpIG51bGwpOworICAgICAgICBTaWduZWRJbmZvIHNpID0gZmFjLm5ld1NpZ25lZEluZm8oY20sIFNJR19NRVRIT0RTWzFdLCByZWZzKTsKKworICAgICAgICAvLyBjcmVhdGUgb2JqZWN0cworICAgICAgICBMaXN0IG9ianMgPSBuZXcgQXJyYXlMaXN0KCk7CisKKyAgICAgICAgLy8gT2JqZWN0IDEKKyAgICAgICAgTGlzdCBtYW5SZWZzID0gQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdAorICAgICAgICAgICAgKGZhYy5uZXdSZWZlcmVuY2UoIiNvYmplY3QtMiIsIGRtKSk7CisgICAgICAgIG9ianMuYWRkKGZhYy5uZXdYTUxPYmplY3QoQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdAorICAgICAgICAgICAgKGZhYy5uZXdNYW5pZmVzdChtYW5SZWZzLCAibWFuaWZlc3QtMSIpKSwgIm9iamVjdC0xIiwgbnVsbCwgbnVsbCkpOworCisgICAgICAgIC8vIE9iamVjdCAyCisgICAgICAgIERvY3VtZW50IGRvYyA9IFRlc3RVdGlscy5uZXdEb2N1bWVudCgpOworICAgICAgICBFbGVtZW50IG5jID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhudWxsLCAiTm9uQ29tbWVudGFuZHVzIik7CisgICAgICAgIG5jLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIsICJ4bWxucyIsICIiKTsKKyAgICAgICAgbmMuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZUNvbW1lbnQoIiBDb21tZW50YW5kdW0gIikpOworICAgICAgICBvYmpzLmFkZChmYWMubmV3WE1MT2JqZWN0KENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QKKyAgICAgICAgICAgIChuZXcgRE9NU3RydWN0dXJlKG5jKSksICJvYmplY3QtMiIsIG51bGwsIG51bGwpKTsKKworCUtleUluZm8Ja2kgPSBraWZhYy5uZXdLZXlJbmZvKENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QKKwkJICAgIChraWZhYy5uZXdLZXlWYWx1ZSgoUHVibGljS2V5KSBWQUxJREFURV9LRVlTWzFdKSkpOworCisgICAgICAgIC8vIGNyZWF0ZSBYTUxTaWduYXR1cmUKKyAgICAgICAgWE1MU2lnbmF0dXJlIHNpZyA9IGZhYy5uZXdYTUxTaWduYXR1cmUoc2ksIGtpLCBvYmpzLCAic2lnbmF0dXJlIiwgbnVsbCk7CisgICAgICAgIERPTVNpZ25Db250ZXh0IGRzYyA9IG5ldyBET01TaWduQ29udGV4dChTSUdOX0tFWVNbMV0sIGRvYyk7CisKKyAgICAgICAgc2lnLnNpZ24oZHNjKTsKKworLyoKKwlTdHJpbmdXcml0ZXIgc3cgPSBuZXcgU3RyaW5nV3JpdGVyKCk7CisJZHVtcERvY3VtZW50KGRvYywgc3cpOworCVN5c3RlbS5vdXQucHJpbnRsbihzdyk7CisqLworCisgICAgICAgIERPTVZhbGlkYXRlQ29udGV4dCBkdmMgPSBuZXcgRE9NVmFsaWRhdGVDb250ZXh0CisJICAgIChWQUxJREFURV9LRVlTWzFdLCBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCkpOworICAgICAgICBYTUxTaWduYXR1cmUgc2lnMiA9IGZhYy51bm1hcnNoYWxYTUxTaWduYXR1cmUoZHZjKTsKKworICAgICAgICBpZiAoc2lnLmVxdWFscyhzaWcyKSA9PSBmYWxzZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbgorICAgICAgICAgICAgICAgICgiVW5tYXJzaGFsbGVkIHNpZ25hdHVyZSBpcyBub3QgZXF1YWwgdG8gZ2VuZXJhdGVkIHNpZ25hdHVyZSIpOworICAgICAgICB9CisgICAgICAgIGlmIChzaWcyLnZhbGlkYXRlKGR2YykgPT0gZmFsc2UpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIlZhbGlkYXRpb24gb2YgZ2VuZXJhdGVkIHNpZ25hdHVyZSBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgU2lnbmVkSW5mbyBjcmVhdGVTaWduZWRJbmZvKFNpZ25hdHVyZU1ldGhvZCBzbSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJLy8gc2V0IHVwIHRoZSBidWlsZGluZyBibG9ja3MKKwlDYW5vbmljYWxpemF0aW9uTWV0aG9kIGNtID0gZmFjLm5ld0Nhbm9uaWNhbGl6YXRpb25NZXRob2QKKwkgICAgKENhbm9uaWNhbGl6YXRpb25NZXRob2QuSU5DTFVTSVZFX1dJVEhfQ09NTUVOVFMsIAorCSAgICAgKEMxNE5NZXRob2RQYXJhbWV0ZXJTcGVjKSBudWxsKTsKKwlEaWdlc3RNZXRob2QgZG0gPSBmYWMubmV3RGlnZXN0TWV0aG9kKERpZ2VzdE1ldGhvZC5TSEExLCBudWxsKTsKKwlMaXN0IHJlZnMgPSBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KGZhYy5uZXdSZWZlcmVuY2UKKwkgICAgKCJodHRwOi8vd3d3LnczLm9yZy9TaWduYXR1cmUvMjAwMi8wNC94bWwtc3R5bGVzaGVldC5iNjQiLCBkbSkpOworICAgICAgICByZXR1cm4gZmFjLm5ld1NpZ25lZEluZm8oY20sIHNtLCByZWZzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgVGVzdFByb3ZpZGVyIGV4dGVuZHMgUHJvdmlkZXIgeworCVRlc3RQcm92aWRlcigpIHsKKwkgICAgc3VwZXIoIlRlc3RQcm92aWRlciIsIDAsICJUZXN0UHJvdmlkZXIiKTsKKwl9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9YTUxWYWxpZGF0ZUNvbnRleHRUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL1hNTFZhbGlkYXRlQ29udGV4dFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2JiZTU2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9YTUxWYWxpZGF0ZUNvbnRleHRUZXN0LmphdmEKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNi0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by50ZXN0LmRzaWc7CisKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLmRvbS5ET01WYWxpZGF0ZUNvbnRleHQ7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLio7CitpbXBvcnQgamF2YS5zZWN1cml0eS4qOworaW1wb3J0IGphdmF4LmNyeXB0by5TZWNyZXRLZXk7CitpbXBvcnQgamF2YXguY3J5cHRvLnNwZWMuU2VjcmV0S2V5U3BlYzsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay4qOworCisvKioKKyAqIFVuaXQgdGVzdCBmb3IgamF2YXgueG1sLmNyeXB0by5kc2lnLlhNTFZhbGlkYXRlQ29udGV4dAorICoKKyAqIEB2ZXJzaW9uICRJZCQKKyAqIEBhdXRob3IgVmFsZXJpZSBQZW5nCisgKi8KK3B1YmxpYyBjbGFzcyBYTUxWYWxpZGF0ZUNvbnRleHRUZXN0IGV4dGVuZHMgVGVzdENhc2UgeworCisgICAgcHJpdmF0ZSBYTUxWYWxpZGF0ZUNvbnRleHQgZGVmQ29udGV4dDsKKyAgICBwcml2YXRlIEtleVtdIEtFWVM7CisgICAgcHJpdmF0ZSBLZXlTZWxlY3RvcltdIEtFWV9TRUxFQ1RPUlM7CisKKyAgICBwdWJsaWMgWE1MVmFsaWRhdGVDb250ZXh0VGVzdCgpIHsKKwlzdXBlcigiWE1MVmFsaWRhdGVDb250ZXh0VGVzdCIpOworICAgIH0KKworICAgIHB1YmxpYyBYTUxWYWxpZGF0ZUNvbnRleHRUZXN0KFN0cmluZyBuYW1lKSB7CisJc3VwZXIobmFtZSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworCS8vIHNldCB1cCB0aGUgdmFsaWRhdGluZ0tleXMKKwlLRVlTID0gbmV3IEtleVszXTsKKwlLRVlTWzBdID0gVGVzdFV0aWxzLmdldFB1YmxpY0tleSgiRFNBIik7CisJS0VZU1sxXSA9IFRlc3RVdGlscy5nZXRQdWJsaWNLZXkoIlJTQSIpOworCUtFWVNbMl0gPSBuZXcgU2VjcmV0S2V5U3BlYyhuZXcgYnl0ZVsxNl0sICJIbWFjU0hBMSIpOworCisJLy8gc2V0IHVwIHRoZSBkZWZhdWx0IFhNTFZhbGlkYXRlQ29udGV4dAorCVNlY3JldEtleSBzayA9IG5ldyBTZWNyZXRLZXlTcGVjKG5ldyBieXRlWzhdLCAiREVTIik7CisJZGVmQ29udGV4dCA9IG5ldyBET01WYWxpZGF0ZUNvbnRleHQoc2ssIFRlc3RVdGlscy5uZXdEb2N1bWVudCgpKTsKKworCS8vIHNldCB1cCB0aGUga2V5IHNlbGVjdG9ycworCUtFWV9TRUxFQ1RPUlMgPSBuZXcgS2V5U2VsZWN0b3JbMV07CisgICAgICAgIEtFWV9TRUxFQ1RPUlNbMF0gPSBLZXlTZWxlY3Rvci5zaW5nbGV0b25LZXlTZWxlY3Rvcihzayk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVhckRvd24oKSB7IH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RzZXRuZ2V0S2V5U2VsZWN0b3IoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlkZWZDb250ZXh0LnNldEtleVNlbGVjdG9yKG51bGwpOworCWFzc2VydE51bGwoZGVmQ29udGV4dC5nZXRLZXlTZWxlY3RvcigpKTsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgS0VZX1NFTEVDVE9SUy5sZW5ndGg7IGkrKykgeworCSAgICBkZWZDb250ZXh0LnNldEtleVNlbGVjdG9yKEtFWV9TRUxFQ1RPUlNbaV0pOworCSAgICBhc3NlcnRFcXVhbHMoZGVmQ29udGV4dC5nZXRLZXlTZWxlY3RvcigpLCBLRVlfU0VMRUNUT1JTW2ldKTsKKwl9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdHNldG5nZXRCYXNlVVJJKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJYXNzZXJ0TnVsbChkZWZDb250ZXh0LmdldEJhc2VVUkkoKSk7CisKKwlTdHJpbmcgdXJpID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiOworCWRlZkNvbnRleHQuc2V0QmFzZVVSSSh1cmkpOworCWFzc2VydEVxdWFscyhkZWZDb250ZXh0LmdldEJhc2VVUkkoKSwgdXJpKTsKKwlkZWZDb250ZXh0LnNldEJhc2VVUkkobnVsbCk7CisJYXNzZXJ0TnVsbChkZWZDb250ZXh0LmdldEJhc2VVUkkoKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdHNldG5nZXRQcm9wZXJ0eSgpIHRocm93cyBFeGNlcHRpb24geworCVN0cmluZyBuYW1lID0gImtleSI7CisJYXNzZXJ0TnVsbChkZWZDb250ZXh0LmdldFByb3BlcnR5KG5hbWUpKTsKKwl0cnkgeworCSAgICBkZWZDb250ZXh0LnNldFByb3BlcnR5KG51bGwsIG51bGwpOworCSAgICBmYWlsKCJTaG91bGQgcmFpc2UgYSBOUEUgd2l0aCBhIG51bGwgbmFtZSIpOworCX0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIG5wZSkgeworCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworCSAgICBmYWlsKCJTaG91bGQgcmFpc2UgYSBOUEUgaW5zdGVhZCBvZiAiICsgZXgpOworCX0KKwlTdHJpbmcgdmFsdWUxID0gInZhbHVlIzEiOworCVN0cmluZyB2YWx1ZTIgPSAidmFsdWUjMiI7CisJYXNzZXJ0TnVsbChkZWZDb250ZXh0LnNldFByb3BlcnR5KG5hbWUsIHZhbHVlMSkpOworCWFzc2VydEVxdWFscyhkZWZDb250ZXh0LmdldFByb3BlcnR5KG5hbWUpLCB2YWx1ZTEpOworCWFzc2VydEVxdWFscyhkZWZDb250ZXh0LnNldFByb3BlcnR5KG5hbWUsIHZhbHVlMiksIHZhbHVlMSk7CisJYXNzZXJ0RXF1YWxzKGRlZkNvbnRleHQuZ2V0UHJvcGVydHkobmFtZSksIHZhbHVlMik7CisJYXNzZXJ0RXF1YWxzKGRlZkNvbnRleHQuc2V0UHJvcGVydHkobmFtZSwgbnVsbCksIHZhbHVlMik7CisJYXNzZXJ0TnVsbChkZWZDb250ZXh0LmdldFByb3BlcnR5KG5hbWUpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0c2V0bmdldFVSSURlcmVmZXJlbmNlcigpIHRocm93cyBFeGNlcHRpb24geworCWFzc2VydE51bGwoZGVmQ29udGV4dC5nZXRVUklEZXJlZmVyZW5jZXIoKSk7CisJYnl0ZVtdIGRhdGEgPSAic2ltcGxlRGVyZWZlcmVuY2VyIi5nZXRCeXRlcygpOworCVVSSURlcmVmZXJlbmNlciBkZXJlZiA9IG5ldyBUZXN0VXRpbHMuT2N0ZXRTdHJlYW1VUklEZXJlZmVyZW5jZXIoZGF0YSk7CisKKwlkZWZDb250ZXh0LnNldFVSSURlcmVmZXJlbmNlcihkZXJlZik7CisJYXNzZXJ0RXF1YWxzKGRlZkNvbnRleHQuZ2V0VVJJRGVyZWZlcmVuY2VyKCksIGRlcmVmKTsKKwlkZWZDb250ZXh0LnNldFVSSURlcmVmZXJlbmNlcihudWxsKTsKKwlhc3NlcnROdWxsKGRlZkNvbnRleHQuZ2V0VVJJRGVyZWZlcmVuY2VyKCkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvZG9tL0RPTVZhbGlkYXRlQ29udGV4dFRlc3QuamF2YSBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcvZG9tL0RPTVZhbGlkYXRlQ29udGV4dFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2YxOWU5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9kb20vRE9NVmFsaWRhdGVDb250ZXh0VGVzdC5qYXZhCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDYtMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8udGVzdC5kc2lnLmRvbTsKKworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLmRzaWcuZG9tLkRPTVZhbGlkYXRlQ29udGV4dDsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay4qOworCitpbXBvcnQgamF2YXgueG1sLmNyeXB0by50ZXN0LmRzaWcuVGVzdFV0aWxzOworCisvKioKKyAqIFVuaXQgdGVzdCBmb3IgamF2YXgueG1sLmNyeXB0by5kc2lnLmRvbS5ET01WYWxpZGF0ZUNvbnRleHQKKyAqCisgKiBAdmVyc2lvbiAkSWQkCisgKiBAYXV0aG9yIFZhbGVyaWUgUGVuZworICovCitwdWJsaWMgY2xhc3MgRE9NVmFsaWRhdGVDb250ZXh0VGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKyAgICBwcml2YXRlIERPTVZhbGlkYXRlQ29udGV4dCBkb21WQzsKKworICAgIHB1YmxpYyBET01WYWxpZGF0ZUNvbnRleHRUZXN0KCkgeworCXN1cGVyKCJET01WYWxpZGF0ZUNvbnRleHQiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgRE9NVmFsaWRhdGVDb250ZXh0VGVzdChTdHJpbmcgbmFtZSkgeworCXN1cGVyKG5hbWUpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJU3RyaW5nIGZzID0gU3lzdGVtLmdldFByb3BlcnR5KCJmaWxlLnNlcGFyYXRvciIpOworCUZpbGUgZGlyID0gbmV3IEZpbGUoU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIikgKyBmcyArCisJICAgICJkYXRhIiArIGZzICsgImllIiArIGZzICsgImJhbHRpbW9yZSIgKyBmcyArICJtZXJsaW4tZXhhbXBsZXMiLAorCSAgICAibWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlIik7CisJRmlsZSBpbnB1dCA9IG5ldyBGaWxlKGRpciwgInNpZ25hdHVyZS54bWwiKTsKKwlkb21WQyA9IChET01WYWxpZGF0ZUNvbnRleHQpCisJICAgIFRlc3RVdGlscy5nZXRYTUxWYWxpZGF0ZUNvbnRleHQoIkRPTSIsIGlucHV0LCAiUmVmZXJlbmNlIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVhckRvd24oKSB7fQorCisgICAgcHVibGljIHZvaWQgdGVzdENvbnN0cnVjdG9yKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJYXNzZXJ0Tm90TnVsbChkb21WQyk7CisJdHJ5IHsKKwkgICAgbmV3IERPTVZhbGlkYXRlQ29udGV4dChUZXN0VXRpbHMuZ2V0UHVibGljS2V5KCJSU0EiKSwgbnVsbCk7CisJICAgIGZhaWwoIlNob3VsZCB0aHJvdyBhIE5QRSBmb3IgbnVsbCBub2RlIik7CisJfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gbnBlKSB7CisJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJICAgIGZhaWwoIlNob3VsZCB0aHJvdyBhIE5QRSBpbnN0ZWFkIG9mICIgKyBleCArICIgZm9yIG51bGwgbm9kZSIpOworCX0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0c2V0bmdldFByb3BlcnR5KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJdHJ5IHsKKwkgICAgZG9tVkMuc2V0UHJvcGVydHkobnVsbCwgInZhbHVlIik7CisJfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gbnBlKSB7CisJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJICAgIGZhaWwoIlNob3VsZCB0aHJvdyBhIE5QRSBpbnN0ZWFkIG9mICIgKyBleCArICIgZm9yIG51bGwgbmFtZSIpOworCX0KKwl0cnkgeworCSAgICBkb21WQy5nZXRQcm9wZXJ0eShudWxsKTsKKwl9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBucGUpIHsKKwl9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKwkgICAgZmFpbCgiU2hvdWxkIHRocm93IGEgTlBFIGluc3RlYWQgb2YgIiArIGV4ICsgIiBmb3IgbnVsbCBuYW1lIik7CisJfQorCVN0cmluZyBwbmFtZSA9ICJuYW1lIjsKKwlTdHJpbmcgcHZhbHVlMSA9ICJ2YWx1ZSI7CisJU3RyaW5nIHB2YWx1ZTIgPSAibmV3dmFsdWUiOworCWFzc2VydE51bGwoZG9tVkMuc2V0UHJvcGVydHkocG5hbWUsIHB2YWx1ZTEpKTsKKwlhc3NlcnRFcXVhbHMoKFN0cmluZylkb21WQy5nZXRQcm9wZXJ0eShwbmFtZSksIHB2YWx1ZTEpOworCWFzc2VydEVxdWFscyhkb21WQy5zZXRQcm9wZXJ0eShwbmFtZSwgcHZhbHVlMiksIHB2YWx1ZTEpOworICAgICAgIAlhc3NlcnRFcXVhbHMoKFN0cmluZylkb21WQy5nZXRQcm9wZXJ0eShwbmFtZSksIHB2YWx1ZTIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RzZXRuZ2V0Tm9kZSgpIHRocm93cyBFeGNlcHRpb24geworCXRyeSB7CisJICAgIGRvbVZDLnNldE5vZGUobnVsbCk7CisJfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gbnBlKSB7CisJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJICAgIGZhaWwoIlNob3VsZCB0aHJvdyBhIE5QRSBpbnN0ZWFkIG9mICIgKyBleCArICIgZm9yIG51bGwgbm9kZSIpOworCX0KKwlhc3NlcnROb3ROdWxsKGRvbVZDLmdldE5vZGUoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9rZXlpbmZvL0tleUluZm9GYWN0b3J5VGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9rZXlpbmZvL0tleUluZm9GYWN0b3J5VGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiOGM4ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL2tleWluZm8vS2V5SW5mb0ZhY3RvcnlUZXN0LmphdmEKQEAgLTAsMCArMSwyNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNi0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by50ZXN0LmRzaWcua2V5aW5mbzsKKworaW1wb3J0IGphdmEubWF0aC5CaWdJbnRlZ2VyOworaW1wb3J0IGphdmEudXRpbC4qOworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5RXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHVibGljS2V5OworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by4qOworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLio7CisKKy8qKgorICogVW5pdCB0ZXN0IGZvciBqYXZheC54bWwuY3J5cHRvLmRzaWcua2V5aW5mby5LZXlJbmZvRmFjdG9yeQorICoKKyAqIEB2ZXJzaW9uICRJZCQKKyAqIEBhdXRob3IgVmFsZXJpZSBQZW5nCisgKi8KK3B1YmxpYyBjbGFzcyBLZXlJbmZvRmFjdG9yeVRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgICBLZXlJbmZvRmFjdG9yeSBmYWN0b3J5OworCisgICAgcHVibGljIEtleUluZm9GYWN0b3J5VGVzdChTdHJpbmcgbmFtZSkgeworCXN1cGVyKG5hbWUpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbiB7IAorCWZhY3RvcnkgPSBLZXlJbmZvRmFjdG9yeS5nZXRJbnN0YW5jZQorCSAgICAoIkRPTSIsIG5ldyBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbS5YTUxEU2lnUkkoKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVhckRvd24oKSB7IH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RnZXRJbnN0YW5jZSgpIHsKKwl0cnkgeworCSAgICBLZXlJbmZvRmFjdG9yeS5nZXRJbnN0YW5jZSgibm9uLWV4aXN0ZW50Iik7CisJICAgIGZhaWwoIlNob3VsZCB0aHJvdyBOb1N1Y2hNZWNoYW5pc21FeGNlcHRpb24gaWYgbm8gaW1wbCBmb3VuZCIpOworCX0gY2F0Y2ggKE5vU3VjaE1lY2hhbmlzbUV4Y2VwdGlvbiBleCkge30KKworCXRyeSB7CisJICAgIEtleUluZm9GYWN0b3J5LmdldEluc3RhbmNlKG51bGwpOworCSAgICBmYWlsKCJTaG91bGQgcmFpc2UgYSBOUEUgZm9yIG51bGwgeG1sdHlwZSIpOyAKKwl9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBucGUpIHt9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdGdldE1lY2hhbmlzbVR5cGUoKSB7CisJYXNzZXJ0Tm90TnVsbChmYWN0b3J5KTsKKwlhc3NlcnRFcXVhbHMoIkRPTSIsIGZhY3RvcnkuZ2V0TWVjaGFuaXNtVHlwZSgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0aXNGZWF0dXJlU3VwcG9ydGVkKCkgeworCXRyeSB7CisJICAgIGZhY3RvcnkuaXNGZWF0dXJlU3VwcG9ydGVkKG51bGwpOyAKKwkgICAgZmFpbCgiU2hvdWxkIHJhaXNlIGEgTlBFIGZvciBudWxsIGZlYXR1cmUiKTsgCisJfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gbnBlKSB7fQorCisJYXNzZXJ0VHJ1ZSghZmFjdG9yeS5pc0ZlYXR1cmVTdXBwb3J0ZWQoIm5vdCBzdXBwb3J0ZWQiKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdG5ld0tleUluZm8oKSB7CisJU3RyaW5nIGlkID0gImtleUlkIjsKKwkvLyB0ZXN0IG5ld0tleUluZm8oTGlzdCwgU3RyaW5nKQorCUtleUluZm8ga2kgPSBmYWN0b3J5Lm5ld0tleUluZm8KKwkgICAgKENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoZmFjdG9yeS5uZXdLZXlOYW1lKCJmb28iKSksIGlkKTsKKwlhc3NlcnRFcXVhbHMoaWQsIGtpLmdldElkKCkpOworCXRyeSB7CisJICAgIGtpID0gZmFjdG9yeS5uZXdLZXlJbmZvKG51bGwsIGlkKTsgCisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhIE5QRSBmb3IgbnVsbCBrZXkgaW5mbyB0eXBlcyIpOyAKKwl9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBucGUpIHt9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdG5ld0tleU5hbWUoKSB7CisJZmluYWwgU3RyaW5nIG5hbWUgPSAia2V5TmFtZSI7CisJS2V5TmFtZSBrbiA9IGZhY3RvcnkubmV3S2V5TmFtZShuYW1lKTsKKwlhc3NlcnRFcXVhbHMobmFtZSwga24uZ2V0TmFtZSgpKTsKKwl0cnkgeworCSAgICBrbiA9IGZhY3RvcnkubmV3S2V5TmFtZShudWxsKTsgCisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhIE5QRSBmb3IgbnVsbCBrZXkgbmFtZSIpOyAKKwl9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBucGUpIHt9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdG5ld0tleVZhbHVlKCkgeworCS8vIHRlc3QgbmV3S2V5VmFsdWUoUHVibGljS2V5IHBrKQorCVB1YmxpY0tleSBteVB1YktleSA9IG5ldyBQdWJsaWNLZXkoKSB7CisJCXB1YmxpYyBieXRlW10gZ2V0RW5jb2RlZCgpIHsKKwkJICAgIHJldHVybiBuZXcgYnl0ZVsyMF07CisJCX0KKwkJcHVibGljIFN0cmluZyBnZXRGb3JtYXQoKSB7CisJCSAgICByZXR1cm4gIm5vbmUiOworCQl9CisJCXB1YmxpYyBTdHJpbmcgZ2V0QWxnb3JpdGhtKCkgeworCQkgICAgcmV0dXJuICJ0ZXN0IjsKKwkJfQorCSAgICB9OworCXRyeSB7CisJICAgIEtleVZhbHVlIGt2ID0gZmFjdG9yeS5uZXdLZXlWYWx1ZShteVB1YktleSk7CisJICAgIGFzc2VydEVxdWFscyhteVB1YktleSwga3YuZ2V0UHVibGljS2V5KCkpOworCSAgICBmYWlsKCJTaG91bGQgdGhyb3cgYSBLZXlFeGNlcHRpb24iKTsKKwl9IGNhdGNoIChLZXlFeGNlcHRpb24ga2UpIHsgfQorICAKKwl0cnkgeworCSAgICBmYWN0b3J5Lm5ld0tleVZhbHVlKChQdWJsaWNLZXkpIG51bGwpOyAKKwkgICAgZmFpbCgiU2hvdWxkIHJhaXNlIGEgTlBFIGZvciBudWxsIGtleSIpOyAKKwl9IGNhdGNoIChLZXlFeGNlcHRpb24ga2UpIHsKKwkgICAgZmFpbCgiU2hvdWxkIHJhaXNlIGEgTlBFIGZvciBudWxsIGtleSIpOyAKKwl9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBucGUpIHt9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdG5ld1BHUEtleUlkKCkgeworCWJ5dGVbXSB2YWxpZF9pZCA9IHsgCisJICAgIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsCisJICAgIDB4MDUsIDB4MDYsIDB4MDcsIDB4MDggCisJfTsKKwlieXRlW10gaW52YWxpZF9pZCA9IHsKKwkgICAgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwKKwkgICAgMHgwNSwgMHgwNiwgMHgwNywgMHgwOCwKKwkgICAgMHgwOQorCX07CisJYnl0ZVtdIHZhbGlkX3BhY2tldCA9IHsgKGJ5dGUpMHhjNiwgKGJ5dGUpMHgwMSwgKGJ5dGUpMHgwMCB9OworCWJ5dGVbXSBpbnZhbGlkX3BhY2tldCA9IHsgKGJ5dGUpMHhjOCwgKGJ5dGUpMHgwMSwgKGJ5dGUpMHgwMCB9OworCisJLy8gdGVzdCBuZXdQR1BEYXRhKGJ5dGVbXSkKKwlQR1BEYXRhIHBkID0gZmFjdG9yeS5uZXdQR1BEYXRhKHZhbGlkX2lkKTsKKwlhc3NlcnRUcnVlKEFycmF5cy5lcXVhbHModmFsaWRfaWQsIHBkLmdldEtleUlkKCkpKTsKKwl0cnkgeworCSAgICBwZCA9IGZhY3RvcnkubmV3UEdQRGF0YShpbnZhbGlkX2lkKTsKKwkgICAgZmFpbCgiU2hvdWxkIHRocm93IElBRSBmb3IgaW52YWxpZCBrZXkgaWQgdmFsdWVzIik7CisJfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGV4KSB7fQorCisJLy8gdGVzdCBuZXdQR1BEYXRhKGJ5dGVbXSwgYnl0ZVtdLCBMaXN0KQorCXBkID0gZmFjdG9yeS5uZXdQR1BEYXRhKHZhbGlkX2lkLCB2YWxpZF9wYWNrZXQsIG51bGwpOworCWFzc2VydFRydWUoQXJyYXlzLmVxdWFscyh2YWxpZF9pZCwgcGQuZ2V0S2V5SWQoKSkpOworCWFzc2VydFRydWUoQXJyYXlzLmVxdWFscyh2YWxpZF9wYWNrZXQsIHBkLmdldEtleVBhY2tldCgpKSk7CisJdHJ5IHsKKwkgICAgcGQgPSBmYWN0b3J5Lm5ld1BHUERhdGEoaW52YWxpZF9pZCwgdmFsaWRfcGFja2V0LCBudWxsKTsKKwkgICAgZmFpbCgiU2hvdWxkIHRocm93IElBRSBmb3IgaW52YWxpZCBrZXkgaWQgdmFsdWVzIik7CisJfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGV4KSB7fQorCXRyeSB7CisJICAgIHBkID0gZmFjdG9yeS5uZXdQR1BEYXRhKHZhbGlkX2lkLCBpbnZhbGlkX3BhY2tldCwgbnVsbCk7CisJICAgIGZhaWwoIlNob3VsZCB0aHJvdyBJQUUgZm9yIGludmFsaWQga2V5IHBhY2tldCB2YWx1ZXMiKTsKKwl9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZXgpIHt9CisJdHJ5IHsKKwkgICAgcGQgPSBmYWN0b3J5Lm5ld1BHUERhdGEoaW52YWxpZF9pZCwgaW52YWxpZF9wYWNrZXQsIG51bGwpOworCSAgICBmYWlsKCJTaG91bGQgdGhyb3cgSUFFIGZvciBpbnZhbGlkIGtleSBpZCBhbmQgcGFja2V0IHZhbHVlcyIpOworCX0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBleCkge30KKworCS8vIHRlc3QgbmV3UEdQRGF0YShieXRlW10sIExpc3QpCisJcGQgPSBmYWN0b3J5Lm5ld1BHUERhdGEodmFsaWRfcGFja2V0LCBudWxsKTsKKwlhc3NlcnRUcnVlKEFycmF5cy5lcXVhbHModmFsaWRfcGFja2V0LCBwZC5nZXRLZXlQYWNrZXQoKSkpOworCXRyeSB7CisJICAgIHBkID0gZmFjdG9yeS5uZXdQR1BEYXRhKGludmFsaWRfcGFja2V0LCBudWxsKTsKKwkgICAgZmFpbCgiU2hvdWxkIHRocm93IElBRSBmb3IgaW52YWxpZCBrZXkgcGFja2V0IHZhbHVlcyIpOworCX0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBleCkge30KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0bmV3UmV0cmlldmFsTWV0aG9kKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZpbmFsIFN0cmluZyB1cmkgPSAiI1g1MDlDZXJ0Q2hhaW4iOworICAgICAgICAvLyB0ZXN0IFJldHJpZXZhbE1ldGhvZChTdHJpbmcpCisgICAgICAgIFJldHJpZXZhbE1ldGhvZCBybSA9IGZhY3RvcnkubmV3UmV0cmlldmFsTWV0aG9kKHVyaSk7CisJYXNzZXJ0RXF1YWxzKHVyaSwgcm0uZ2V0VVJJKCkpOworCisJdHJ5IHsKKwkgICAgcm0gPSBmYWN0b3J5Lm5ld1JldHJpZXZhbE1ldGhvZChudWxsKTsgCisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhIE5QRSBmb3IgbnVsbCBVUkkiKTsgCisgICAgICAgIH0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIG5wZSkge30KKworCS8vIHRlc3QgUmV0cmlldmFsTWV0aG9kKFN0cmluZywgU3RyaW5nLCBMaXN0KQkKKwl0cnkgeworCSAgICBybSA9IGZhY3RvcnkubmV3UmV0cmlldmFsTWV0aG9kKG51bGwsIG51bGwsIG51bGwpOyAKKwkgICAgZmFpbCgiU2hvdWxkIHJhaXNlIGEgTlBFIGZvciBudWxsIFVSSSIpOyAKKyAgICAgICAgfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gbnBlKSB7fQorCQorCVN0cmluZyB0eXBlID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNYNTA5RGF0YSI7CisJdHJ5IHsKKwkgICAgcm0gPSBmYWN0b3J5Lm5ld1JldHJpZXZhbE1ldGhvZChudWxsLCB0eXBlLCBudWxsKTsgCisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhIE5QRSBmb3IgbnVsbCBVUkkiKTsgCisgICAgICAgIH0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIG5wZSkge30KKworICAgICAgICBybSA9IGZhY3RvcnkubmV3UmV0cmlldmFsTWV0aG9kKHVyaSwgdHlwZSwgbnVsbCk7CisgICAgICAgIGFzc2VydEVxdWFscyh1cmksIHJtLmdldFVSSSgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKHR5cGUsIHJtLmdldFR5cGUoKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdG5ld1g1MDlEYXRhKCkgeworCS8vIHRlc3QgbmV3WDUwOURhdGEoTGlzdCkKKwlYNTA5RGF0YSB4NTA5ID0gCisJICAgIGZhY3RvcnkubmV3WDUwOURhdGEoQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdCgiY249Zm9vIikpOworCWFzc2VydE5vdE51bGwoeDUwOSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdG5ld1g1MDlJc3N1ZXJTZXJpYWwoKSB7CisJU3RyaW5nIG5hbWUgPSAiQ049dmFsZXJpZXAiOworCS8vIHRlc3QgbmV3WDUwOUlzc3VlclNlcmlhbChTdHJpbmcsIEJpZ0ludGVnZXIpCisJWDUwOUlzc3VlclNlcmlhbCB4NTA5aXMgPSBmYWN0b3J5Lm5ld1g1MDlJc3N1ZXJTZXJpYWwobmFtZSwgCisJCQkJCQkJICAgICAgQmlnSW50ZWdlci5PTkUpOworCWFzc2VydEVxdWFscyhuYW1lLCB4NTA5aXMuZ2V0SXNzdWVyTmFtZSgpKTsKKwlhc3NlcnRFcXVhbHMoQmlnSW50ZWdlci5PTkUsIHg1MDlpcy5nZXRTZXJpYWxOdW1iZXIoKSk7CisJdHJ5IHsKKwkgICAgeDUwOWlzID0gZmFjdG9yeS5uZXdYNTA5SXNzdWVyU2VyaWFsKG51bGwsIEJpZ0ludGVnZXIuWkVSTyk7CisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhbiBOUEUgZm9yIG51bGwgaXNzdWVyIG5hbWVzIik7IAorCX0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIGV4KSB7CisJfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGV4MikgeworCSAgICBmYWlsKCJTaG91bGQgdGhyb3cgTlBFIGluc3RlYWQgb2YgSUFFIGZvciBudWxsIGlzc3VlciBuYW1lcyIpOworCX0KKwl0cnkgeworCSAgICB4NTA5aXMgPSBmYWN0b3J5Lm5ld1g1MDlJc3N1ZXJTZXJpYWwobmFtZSwgbnVsbCk7CisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhbiBOUEUgZm9yIG51bGwgc2VyaWFsIG51bWJlcnMiKTsgCisJfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gZXgpIHsKKwl9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZXgyKSB7CisJICAgIGZhaWwoIlNob3VsZCB0aHJvdyBOUEUgaW5zdGVhZCBvZiBJQUUgZm9yIG51bGwgc2VyaWFsIG51bWJlcnMiKTsKKwl9CisJdHJ5IHsKKwkgICAgeDUwOWlzID0gZmFjdG9yeS5uZXdYNTA5SXNzdWVyU2VyaWFsKG51bGwsIG51bGwpOworCSAgICBmYWlsKCJTaG91bGQgcmFpc2UgYW4gTlBFIGZvciBudWxsIGlzc3VlciBuYW1lcy9zZXJpYWwgbnVtYmVycyIpOyAKKwl9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBleCkgeworCX0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBleDIpIHsKKwkgICAgZmFpbCgiU2hvdWxkIHRocm93IE5QRSBpbnN0ZWFkIG9mIElBRSBmb3IgbnVsbCBpc3N1ZXIgIiArIAorCQkgIm5hbWVzL3NlcmlhbCBudW1iZXJzIik7CisJfQorCXRyeSB7CisJICAgIHg1MDlpcyA9IGZhY3RvcnkubmV3WDUwOUlzc3VlclNlcmlhbCgidmFsZXJpZXAiLCBCaWdJbnRlZ2VyLlpFUk8pOworCSAgICBmYWlsKCJTaG91bGQgdGhyb3cgSUFFIGZvciBpbnZhbGlkIGlzc3VlciBuYW1lcyIpOyAKKwl9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZXgpIHt9CisgICAgfQorCisgICAgLy8gZm9yIGRlYnVnZ2luZyBwdXJwb3NlcworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworCUtleUluZm9GYWN0b3J5VGVzdCBraWZUZXN0ID0gCisJICAgIG5ldyBLZXlJbmZvRmFjdG9yeVRlc3QoIktleUluZm9GYWN0b3J5VGVzdCIpOworCWtpZlRlc3Quc2V0VXAoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL2tleWluZm8vS2V5SW5mb1Rlc3QuamF2YSBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcva2V5aW5mby9LZXlJbmZvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2OWNiYzkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL2tleWluZm8vS2V5SW5mb1Rlc3QuamF2YQpAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA2LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLnRlc3QuZHNpZy5rZXlpbmZvOworCitpbXBvcnQgamF2YS51dGlsLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZG9tLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLmtleWluZm8uKjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CisKK2ltcG9ydCBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbS5ET01VdGlsczsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuKjsKKworLyoqCisgKiBVbml0IHRlc3QgZm9yIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvLktleUluZm8KKyAqCisgKiBAdmVyc2lvbiAkSWQkCisgKiBAYXV0aG9yIFZhbGVyaWUgUGVuZworICovCitwdWJsaWMgY2xhc3MgS2V5SW5mb1Rlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgICBwcml2YXRlIEtleUluZm9GYWN0b3J5IGZhYzsKKworICAgIHB1YmxpYyBLZXlJbmZvVGVzdCgpIHsKKwlzdXBlcigiS2V5SW5mb1Rlc3QiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgS2V5SW5mb1Rlc3QoU3RyaW5nIG5hbWUpIHsKKwlzdXBlcihuYW1lKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24geyAKKwlmYWMgPSBLZXlJbmZvRmFjdG9yeS5nZXRJbnN0YW5jZQorCSAgICAoIkRPTSIsIG5ldyBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbS5YTUxEU2lnUkkoKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVhckRvd24oKSB7IH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RnZXRJZCgpIHsKKwlLZXlJbmZvIGtpID0gZmFjLm5ld0tleUluZm8KKwkgICAgKENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoZmFjLm5ld0tleU5hbWUoImZvbyIpKSwgInNrZWxldG9uIik7CisJYXNzZXJ0Tm90TnVsbChraS5nZXRJZCgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0Z2V0Q29udGVudCgpIHsKKwlLZXlJbmZvW10gaW5mb3MgPSBuZXcgS2V5SW5mb1syXTsKKwlpbmZvc1swXSA9IGZhYy5uZXdLZXlJbmZvCisJICAgIChDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KGZhYy5uZXdLZXlOYW1lKCJmb28iKSksICJza2VsZXRvbiIpOworCWluZm9zWzFdID0gZmFjLm5ld0tleUluZm8KKwkgICAgKENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoZmFjLm5ld0tleU5hbWUoImZvbyIpKSk7CisJZm9yIChpbnQgaj0wOyBqIDwgaW5mb3MubGVuZ3RoOyBqKyspIHsKKwkgICAgS2V5SW5mbyBraSA9IGluZm9zW2pdOworCSAgICBMaXN0IGxpID0ga2kuZ2V0Q29udGVudCgpOworCSAgICBhc3NlcnROb3ROdWxsKGtpLmdldENvbnRlbnQoKSk7CisJICAgIGlmICghbGkuaXNFbXB0eSgpKSB7CisJCU9iamVjdFtdIGNvbnRlbnQgPSBsaS50b0FycmF5KCk7CisJCWZvciAoaW50IGk9MDsgaTxjb250ZW50Lmxlbmd0aDsgaSsrKSB7CisJCSAgICBpZiAoIShjb250ZW50W2ldIGluc3RhbmNlb2YgWE1MU3RydWN0dXJlKSkgeworCQkJZmFpbCgiS2V5SW5mbyBlbGVtZW50IGhhcyB0aGUgd3JvbmcgdHlwZSIpOworCQkgICAgfTsKKwkJfQorCSAgICB9IGVsc2UgeworCQl0cnkgeworCQkgICAgbGkuYWRkKG5ldyBPYmplY3QoKSk7CisJCSAgICBmYWlsKCJBZGRlZCBLZXlJbmZvIGVsZW1lbnQgb2Ygd3JvbmcgdHlwZSIpOworCQl9IGNhdGNoIChDbGFzc0Nhc3RFeGNlcHRpb24gZXgpIHsKKwkJICAgIC8vIGV4cGVjdGVkCisJCX0KKwkgICAgfQorCX0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0Q29uc3RydWN0b3IoKSB7CisJZmluYWwgU3RyaW5nIGlkID0gImtleUlkIjsKKwkvLyB0ZXN0IG5ld0tleUluZm8oTGlzdCwgU3RyaW5nIGlkKQorCUtleUluZm8ga2kgPSBmYWMubmV3S2V5SW5mbworCSAgICAoQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChmYWMubmV3S2V5TmFtZSgiZm9vIikpLCBpZCk7CisJYXNzZXJ0RXF1YWxzKGlkLCBraS5nZXRJZCgpKTsKKwl0cnkgeworCSAgICBraSA9IGZhYy5uZXdLZXlJbmZvKG51bGwsIGlkKTsgCisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhIE51bGxQb2ludGVyRXhjZXB0aW9uIik7IAorCX0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIG5wZSkge30KKwkvLyB0ZXN0IG5ld0tleUluZm8oTGlzdCkKKwlraSA9IGZhYy5uZXdLZXlJbmZvKENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoZmFjLm5ld0tleU5hbWUoImZvbyIpKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdGlzRmVhdHVyZVN1cHBvcnRlZCgpIHsKKwlLZXlJbmZvIGtpID0gZmFjLm5ld0tleUluZm8KKwkgICAgKENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoZmFjLm5ld0tleU5hbWUoImZvbyIpKSwgImtleWlkIik7CisJdHJ5IHsKKwkgICAga2kuaXNGZWF0dXJlU3VwcG9ydGVkKG51bGwpOyAKKwkgICAgZmFpbCgiU2hvdWxkIHJhaXNlIGEgTlBFIGZvciBudWxsIGZlYXR1cmUiKTsgCisJfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gbnBlKSB7fQorCisJYXNzZXJ0VHJ1ZSgha2kuaXNGZWF0dXJlU3VwcG9ydGVkKCJub3Qgc3VwcG9ydGVkIikpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RNYXJzaGFsKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIEtleUluZm8ga2kgPSBmYWMubmV3S2V5SW5mbworICAgICAgICAgICAgKENvbGxlY3Rpb25zLnNpbmdsZXRvbkxpc3QoZmFjLm5ld0tleU5hbWUoImZvbyIpKSwgImtleWlkIik7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBraS5tYXJzaGFsKG51bGwsIG51bGwpOworICAgICAgICAgICAgZmFpbCgiU2hvdWxkIHJhaXNlIGEgTnVsbFBvaW50ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gbnBlKSB7fQorCisgICAgICAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworICAgICAgICBkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisgICAgICAgIERvY3VtZW50IGRvYyA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKS5uZXdEb2N1bWVudCgpOworICAgICAgICBFbGVtZW50IGVsZW0gPSBkb2MuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vYWNtZS5vcmciLCAicGFyZW50Iik7CisgICAgICAgIGRvYy5hcHBlbmRDaGlsZChlbGVtKTsKKyAgICAgICAgRE9NU3RydWN0dXJlIHBhcmVudCA9IG5ldyBET01TdHJ1Y3R1cmUoZWxlbSk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBraS5tYXJzaGFsKHBhcmVudCwgbnVsbCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBmYWlsKCJTaG91bGQgbm90IHRocm93IGFuIGV4Y2VwdGlvbjogIiArIGUpOworICAgICAgICB9CisKKyAgICAgICAgRWxlbWVudCBraUVsZW0gPSBET01VdGlscy5nZXRGaXJzdENoaWxkRWxlbWVudChlbGVtKTsKKyAgICAgICAgaWYgKCFraUVsZW0uZ2V0TG9jYWxOYW1lKCkuZXF1YWxzKCJLZXlJbmZvIikpIHsKKyAgICAgICAgICAgIGZhaWwoIlNob3VsZCBiZSBLZXlJbmZvIGVsZW1lbnQ6ICIgKyBraUVsZW0uZ2V0TG9jYWxOYW1lKCkpOworICAgICAgICB9CisgICAgICAgIEVsZW1lbnQga25FbGVtID0gRE9NVXRpbHMuZ2V0Rmlyc3RDaGlsZEVsZW1lbnQoa2lFbGVtKTsKKyAgICAgICAgaWYgKCFrbkVsZW0uZ2V0TG9jYWxOYW1lKCkuZXF1YWxzKCJLZXlOYW1lIikpIHsKKyAgICAgICAgICAgIGZhaWwoIlNob3VsZCBiZSBLZXlOYW1lIGVsZW1lbnQ6ICIgKyBrbkVsZW0uZ2V0TG9jYWxOYW1lKCkpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9rZXlpbmZvL0tleU5hbWVUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL2tleWluZm8vS2V5TmFtZVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODFhYjgwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9rZXlpbmZvL0tleU5hbWVUZXN0LmphdmEKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA2LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLnRlc3QuZHNpZy5rZXlpbmZvOworCitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLmtleWluZm8uKjsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay4qOworCisvKioKKyAqIFVuaXQgdGVzdCBmb3IgamF2YXgueG1sLmNyeXB0by5kc2lnLmtleWluZm8uS2V5TmFtZQorICoKKyAqIEB2ZXJzaW9uICRJZCQKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqLworcHVibGljIGNsYXNzIEtleU5hbWVUZXN0IGV4dGVuZHMgVGVzdENhc2UgeworCisgICAgcHJpdmF0ZSBLZXlJbmZvRmFjdG9yeSBmYWM7CisKKyAgICBwdWJsaWMgS2V5TmFtZVRlc3QoKSB7CisJc3VwZXIoIktleU5hbWVUZXN0Iik7CisgICAgfQorCisgICAgcHVibGljIEtleU5hbWVUZXN0KFN0cmluZyBuYW1lKSB7CisJc3VwZXIobmFtZSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsgCisJZmFjID0gS2V5SW5mb0ZhY3RvcnkuZ2V0SW5zdGFuY2UKKwkgICAgKCJET00iLCBuZXcgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJKCkpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlYXJEb3duKCkgeyB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0Z2V0TmFtZSgpIHsKKwlLZXlOYW1lIGtuID0gZmFjLm5ld0tleU5hbWUoInNrZWxldG9uIik7CisJYXNzZXJ0Tm90TnVsbChrbi5nZXROYW1lKCkpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RDb25zdHJ1Y3RvcigpIHsKKwlmaW5hbCBTdHJpbmcgbmFtZSA9ICJrZXlOYW1lIjsKKwlLZXlOYW1lIGtuID0gZmFjLm5ld0tleU5hbWUobmFtZSk7CisJYXNzZXJ0RXF1YWxzKG5hbWUsIGtuLmdldE5hbWUoKSk7CisJdHJ5IHsKKwkgICAga24gPSBmYWMubmV3S2V5TmFtZShudWxsKTsgCisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhIE51bGxQb2ludGVyRXhjZXB0aW9uIik7IAorCX0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIG5wZSkge30KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0aXNGZWF0dXJlU3VwcG9ydGVkKCkgeworCUtleU5hbWUga24gPSBmYWMubmV3S2V5TmFtZSgia2V5TmFtZSIpOworCXRyeSB7CisJICAgIGtuLmlzRmVhdHVyZVN1cHBvcnRlZChudWxsKTsgCisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhIE5QRSBmb3IgbnVsbCBmZWF0dXJlIik7IAorCX0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIG5wZSkge30KKworCWFzc2VydFRydWUoIWtuLmlzRmVhdHVyZVN1cHBvcnRlZCgibm90IHN1cHBvcnRlZCIpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL2tleWluZm8vS2V5VmFsdWVUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL2tleWluZm8vS2V5VmFsdWVUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ0YzMzNwotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcva2V5aW5mby9LZXlWYWx1ZVRlc3QuamF2YQpAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA2LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLnRlc3QuZHNpZy5rZXlpbmZvOworCitpbXBvcnQgamF2YS5zZWN1cml0eS4qOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvLio7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuKjsKKworLyoqCisgKiBVbml0IHRlc3QgZm9yIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvLktleVZhbHVlCisgKgorICogQHZlcnNpb24gJElkJAorICogQGF1dGhvciBWYWxlcmllIFBlbmcKKyAqLworcHVibGljIGNsYXNzIEtleVZhbHVlVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZ1tdIEFMR09TID0geyAiRFNBIiwgIlJTQSIgfTsKKyAgICBwcml2YXRlIEtleUluZm9GYWN0b3J5IGZhYzsKKyAgICBwcml2YXRlIFB1YmxpY0tleSBrZXlzW10gPSBudWxsOworCisgICAgcHVibGljIEtleVZhbHVlVGVzdCgpIHsKKwlzdXBlcigiS2V5VmFsdWVUZXN0Iik7CisgICAgfQorCisgICAgcHVibGljIEtleVZhbHVlVGVzdChTdHJpbmcgbmFtZSkgeworCXN1cGVyKG5hbWUpOworICAgIH0KKworICAgIHByaXZhdGUgUHVibGljS2V5IGdlblB1YmxpY0tleShTdHJpbmcgYWxnbywgaW50IGtleXNpemUpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBLZXlQYWlyR2VuZXJhdG9yIGtwZyA9IEtleVBhaXJHZW5lcmF0b3IuZ2V0SW5zdGFuY2UoYWxnbyk7CisgICAgICAgIGtwZy5pbml0aWFsaXplKGtleXNpemUsIG5ldyBTZWN1cmVSYW5kb20oKCJOb3Qgc28gcmFuZG9tIGJ5dGVzIiAKKwkgICAgKyBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSApLmdldEJ5dGVzKCkgKSk7CisgICAgICAgIEtleVBhaXIga3AgPSBrcGcuZ2VuZXJhdGVLZXlQYWlyKCk7CisgICAgICAgIHJldHVybiBrcC5nZXRQdWJsaWMoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24geyAKKwlmYWMgPSBLZXlJbmZvRmFjdG9yeS5nZXRJbnN0YW5jZQorCSAgICAoIkRPTSIsIG5ldyBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbS5YTUxEU2lnUkkoKSk7CisJLy8gZ2VuZXJhdGUgUHVibGljS2V5KHMpIGFuZCBYTUxTdHJ1Y3R1cmUocykgZm9yIERTQSBhbmQgUlNBCisJa2V5cyA9IG5ldyBQdWJsaWNLZXlbQUxHT1MubGVuZ3RoXTsKKworCWZvciAoaW50IGkgPSAwOyBpPEFMR09TLmxlbmd0aDsgaSsrKSB7CisJICAgIGtleXNbaV0gPSBnZW5QdWJsaWNLZXkoQUxHT1NbaV0sIDUxMik7CisJfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlYXJEb3duKCkgeyB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0Z2V0UHVibGljS2V5KCkgeworCXRyeSB7CisJICAgIEtleVZhbHVlIGt2ID0gZmFjLm5ld0tleVZhbHVlKGtleXNbMF0pOworCSAgICBhc3NlcnROb3ROdWxsKGt2LmdldFB1YmxpY0tleSgpKTsKKyAgICAgICAgfSBjYXRjaCAoS2V5RXhjZXB0aW9uIGtlKSB7CisJICAgIGZhaWwoIlNob3VsZCBwYXNzIGluc3RlYWQgb2YgdGhyb3dpbmcgS2V5RXhjZXB0aW9uIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0Q29uc3RydWN0b3IoKSB7CisJLy8gdGVzdCBuZXdLZXlWYWx1ZShQdWJsaWNLZXkgcGspCisJZm9yIChpbnQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7CisJICAgIHRyeSB7CisJICAgICAgICBLZXlWYWx1ZSBrdiA9IGZhYy5uZXdLZXlWYWx1ZShrZXlzW2ldKTsKKwkgICAgICAgIGFzc2VydEVxdWFscyhrZXlzW2ldLCBrdi5nZXRQdWJsaWNLZXkoKSk7CisJICAgIH0gY2F0Y2ggKEtleUV4Y2VwdGlvbiBrZSkgeworCQlmYWlsKCJTaG91bGQgcGFzcyBpbnN0ZWFkIG9mIHRocm93aW5nIEtleUV4Y2VwdGlvbiIpOworCSAgICB9CisJfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3Rpc0ZlYXR1cmVTdXBwb3J0ZWQoKSB7CisJS2V5VmFsdWUga3YgPSBudWxsOworICAgICAgICB0cnkgeworCSAgICBrdiA9IGZhYy5uZXdLZXlWYWx1ZShrZXlzWzBdKTsKKwkgICAga3YuaXNGZWF0dXJlU3VwcG9ydGVkKG51bGwpOyAKKwkgICAgZmFpbCgiU2hvdWxkIHJhaXNlIGEgTlBFIGZvciBudWxsIGZlYXR1cmUiKTsgCisgICAgICAgIH0gY2F0Y2ggKEtleUV4Y2VwdGlvbiBrZSkgeworCSAgICBmYWlsKCJTaG91bGQgcmFpc2UgYSBOUEUgZm9yIG51bGwgZmVhdHVyZSIpOyAKKyAgICAgICAgfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gbnBlKSB7fQorCSAgICAKKyAgICAgICAgYXNzZXJ0VHJ1ZSgha3YuaXNGZWF0dXJlU3VwcG9ydGVkKCJub3Qgc3VwcG9ydGVkIikpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcva2V5aW5mby9QR1BEYXRhVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9rZXlpbmZvL1BHUERhdGFUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFiYTg5ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcva2V5aW5mby9QR1BEYXRhVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICogQ29weXJpZ2h0IDIwMDYtMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisvKgorICogQ29weXJpZ2h0IDIwMDUgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCitwYWNrYWdlIGphdmF4LnhtbC5jcnlwdG8udGVzdC5kc2lnLmtleWluZm87CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLmtleWluZm8uKjsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay4qOworCisvKioKKyAqIFVuaXQgdGVzdCBmb3IgamF2YXgueG1sLmNyeXB0by5kc2lnLmtleWluZm8uUEdQRGF0YQorICoKKyAqIEB2ZXJzaW9uICRJZCQKKyAqIEBhdXRob3IgVmFsZXJpZSBQZW5nCisgKi8KK3B1YmxpYyBjbGFzcyBQR1BEYXRhVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgIHByaXZhdGUgS2V5SW5mb0ZhY3RvcnkgZmFjOworICAgIHByaXZhdGUgYnl0ZVtdW10gdmFsdWVzID0geyAKKwl7CisgICAgICAgICAgICAweDAxLCAweDAyLCAweDAzLCAweDA0LAorICAgICAgICAgICAgMHgwNSwgMHgwNiwgMHgwNywgMHgwOAorCX0sCisJeworCSAgICAoYnl0ZSkweGM2LCAoYnl0ZSkweDAxLCAoYnl0ZSkweDAwCisJfQorICAgIH07CisKKyAgICBwdWJsaWMgUEdQRGF0YVRlc3QoKSB7CisJc3VwZXIoIlBHUERhdGFUZXN0Iik7CisgICAgfQorCisgICAgcHVibGljIFBHUERhdGFUZXN0KFN0cmluZyBuYW1lKSB7CisJc3VwZXIobmFtZSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsgCisJZmFjID0gS2V5SW5mb0ZhY3RvcnkuZ2V0SW5zdGFuY2UKKwkgICAgKCJET00iLCBuZXcgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJKCkpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlYXJEb3duKCkgeyB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0Z2V0RXh0ZXJuYWxFbGVtZW50cygpIHsKKwlQR1BEYXRhW10gcGRzID0geworCSAgICBmYWMubmV3UEdQRGF0YSh2YWx1ZXNbMF0pLAorCSAgICBmYWMubmV3UEdQRGF0YSh2YWx1ZXNbMF0sIHZhbHVlc1sxXSwgbnVsbCksCisJICAgIGZhYy5uZXdQR1BEYXRhKHZhbHVlc1sxXSwgbnVsbCkKKwl9OworCWZvciAoaW50IGk9MDsgaTxwZHMubGVuZ3RoOyBpKyspIHsKKwkgICAgTGlzdCBsaSA9IHBkc1tpXS5nZXRFeHRlcm5hbEVsZW1lbnRzKCk7CisJICAgIGFzc2VydE5vdE51bGwobGkpOworCSAgICBpZiAoIWxpLmlzRW1wdHkoKSkgeworCQlPYmplY3RbXSB0eXBlcyA9IGxpLnRvQXJyYXkoKTsKKwkJZm9yIChpbnQgaj0wOyBqPHR5cGVzLmxlbmd0aDsgaisrKSB7CisJCSAgICBpZiAoISh0eXBlc1tqXSBpbnN0YW5jZW9mIFhNTFN0cnVjdHVyZSkpIHsKKwkJCWZhaWwoIlBHUCBlbGVtZW50IGhhcyB0aGUgd3JvbmcgdHlwZSIpOworCQkgICAgfTsKKwkJfQorCSAgICB9IAorICAgICAgICB9CisJdHJ5IHsKKwkgICAgZmFjLm5ld1BHUERhdGEKKwkJKHZhbHVlc1swXSwgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdChuZXcgT2JqZWN0KCkpKTsKKwkgICAgZmFpbCgiQWRkZWQgUEdQIGVsZW1lbnQgb2Ygd3JvbmcgdHlwZSIpOworCX0gY2F0Y2ggKENsYXNzQ2FzdEV4Y2VwdGlvbiBleCkgeworCSAgICAvLyBleHBlY3RlZAorCX0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0Z2V0S2V5SWQoKSB7CisJUEdQRGF0YSBwZCA9IGZhYy5uZXdQR1BEYXRhKHZhbHVlc1swXSk7CisJYXNzZXJ0Tm90TnVsbChwZC5nZXRLZXlJZCgpKTsKKwlwZCA9IGZhYy5uZXdQR1BEYXRhKHZhbHVlc1swXSwgdmFsdWVzWzFdLCBudWxsKTsKKwlhc3NlcnROb3ROdWxsKHBkLmdldEtleUlkKCkpOworCXBkID0gZmFjLm5ld1BHUERhdGEodmFsdWVzWzFdLCBudWxsKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0Z2V0S2V5UGFja2V0KCkgeworCVBHUERhdGEgcGQgPSBmYWMubmV3UEdQRGF0YSh2YWx1ZXNbMF0pOworCXBkID0gZmFjLm5ld1BHUERhdGEodmFsdWVzWzBdLCB2YWx1ZXNbMV0sIG51bGwpOworCWFzc2VydE5vdE51bGwocGQuZ2V0S2V5UGFja2V0KCkpOworICAgICAgICBwZCA9IGZhYy5uZXdQR1BEYXRhKHZhbHVlc1sxXSwgbnVsbCk7CisJYXNzZXJ0Tm90TnVsbChwZC5nZXRLZXlQYWNrZXQoKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdENvbnN0cnVjdG9yKCkgeworCS8vIHRlc3QgbmV3UEdQS2V5RGF0YShieXRlW10pCisJUEdQRGF0YSBwZCA9IGZhYy5uZXdQR1BEYXRhKHZhbHVlc1swXSk7CisJYXNzZXJ0VHJ1ZShBcnJheXMuZXF1YWxzKHZhbHVlc1swXSwgcGQuZ2V0S2V5SWQoKSkpOworCisJLy8gdGVzdCBuZXdQR1BEYXRhKGJ5dGVbXSwgYnl0ZVtdLCBMaXN0KQorCXBkID0gZmFjLm5ld1BHUERhdGEodmFsdWVzWzBdLCB2YWx1ZXNbMV0sIG51bGwpOworCWFzc2VydFRydWUoQXJyYXlzLmVxdWFscyh2YWx1ZXNbMF0sIHBkLmdldEtleUlkKCkpKTsKKwlhc3NlcnRUcnVlKEFycmF5cy5lcXVhbHModmFsdWVzWzFdLCBwZC5nZXRLZXlQYWNrZXQoKSkpOworCSAgICAKKwkvLyB0ZXN0IG5ld1BHUERhdGEoYnl0ZVtdLCBMaXN0KQorCXBkID0gZmFjLm5ld1BHUERhdGEodmFsdWVzWzFdLCBudWxsKTsKKwlhc3NlcnRUcnVlKEFycmF5cy5lcXVhbHModmFsdWVzWzFdLCBwZC5nZXRLZXlQYWNrZXQoKSkpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3Rpc0ZlYXR1cmVTdXBwb3J0ZWQoKSB7CisJUEdQRGF0YSBwZCA9IG51bGw7CisJZm9yIChpbnQgaT0wOyBpPDM7IGkrKykgeworCSAgICBzd2l0Y2ggKGkpIHsKKwkgICAgY2FzZSAwOgorCQlwZCA9IGZhYy5uZXdQR1BEYXRhKHZhbHVlc1swXSk7CisJCWJyZWFrOworCSAgICBjYXNlIDE6CisJCXBkID0gZmFjLm5ld1BHUERhdGEodmFsdWVzWzBdLCB2YWx1ZXNbMV0sIG51bGwpOworCQlicmVhazsKKwkgICAgY2FzZSAyOgorCQlwZCA9IGZhYy5uZXdQR1BEYXRhKHZhbHVlc1sxXSwgbnVsbCk7CisJICAgIH0KKwkgICAgdHJ5IHsKKwkJcGQuaXNGZWF0dXJlU3VwcG9ydGVkKG51bGwpOyAKKwkJZmFpbCgiU2hvdWxkIHJhaXNlIGEgTlBFIGZvciBudWxsIGZlYXR1cmUiKTsgCisJICAgIH0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIG5wZSkge30KKwkgICAgCisJICAgIGFzc2VydFRydWUoIXBkLmlzRmVhdHVyZVN1cHBvcnRlZCgibm90IHN1cHBvcnRlZCIpKTsKKwl9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9rZXlpbmZvL1JldHJpZXZhbE1ldGhvZFRlc3QuamF2YSBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcva2V5aW5mby9SZXRyaWV2YWxNZXRob2RUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRjM2NkMQotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcva2V5aW5mby9SZXRyaWV2YWxNZXRob2RUZXN0LmphdmEKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNi0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by50ZXN0LmRzaWcua2V5aW5mbzsKKworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvLio7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuKjsKKworLyoqCisgKiBVbml0IHRlc3QgZm9yIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvLlJldHJpZXZhbE1ldGhvZAorICoKKyAqIEB2ZXJzaW9uICRJZCQKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqLworcHVibGljIGNsYXNzIFJldHJpZXZhbE1ldGhvZFRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgICBwcml2YXRlIEtleUluZm9GYWN0b3J5IGZhYzsKKworICAgIHB1YmxpYyBSZXRyaWV2YWxNZXRob2RUZXN0KCkgeworCXN1cGVyKCJSZXRyaWV2YWxNZXRob2RUZXN0Iik7CisgICAgfQorCisgICAgcHVibGljIFJldHJpZXZhbE1ldGhvZFRlc3QoU3RyaW5nIG5hbWUpIHsKKwlzdXBlcihuYW1lKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24geyAKKwlmYWMgPSBLZXlJbmZvRmFjdG9yeS5nZXRJbnN0YW5jZQorCSAgICAoIkRPTSIsIG5ldyBvcmcuamNwLnhtbC5kc2lnLmludGVybmFsLmRvbS5YTUxEU2lnUkkoKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVhckRvd24oKSB7IH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RnZXRVUkkoKSB7CisgICAgICAgIFJldHJpZXZhbE1ldGhvZCBybSA9IGZhYy5uZXdSZXRyaWV2YWxNZXRob2QoIiNYNTA5RGF0YSIpOworICAgICAgICBhc3NlcnROb3ROdWxsKHJtLmdldFVSSSgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0Z2V0VHJhbnNmb3JtcygpIHsKKyAgICAgICAgUmV0cmlldmFsTWV0aG9kIHJtID0gZmFjLm5ld1JldHJpZXZhbE1ldGhvZCgiI1g1MDlEYXRhIik7CisgICAgICAgIGFzc2VydE5vdE51bGwocm0uZ2V0VHJhbnNmb3JtcygpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0Z2V0VHlwZSgpIHsKKyAgICAgICAgUmV0cmlldmFsTWV0aG9kIHJtID0gZmFjLm5ld1JldHJpZXZhbE1ldGhvZCgiI1g1MDlEYXRhIik7CisgICAgICAgIGFzc2VydE51bGwocm0uZ2V0VHlwZSgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0Q29uc3RydWN0b3JzKCkgeworICAgICAgICBmaW5hbCBTdHJpbmcgdXJpID0gIiNYNTA5Q2VydENoYWluIjsKKyAgICAgICAgLy8gdGVzdCBSZXRyaWV2YWxNZXRob2QoU3RyaW5nKQorICAgICAgICBSZXRyaWV2YWxNZXRob2Qgcm0gPSBmYWMubmV3UmV0cmlldmFsTWV0aG9kKHVyaSk7CisgICAgICAgIGFzc2VydEVxdWFscyh1cmksIHJtLmdldFVSSSgpKTsKKworCXRyeSB7CisJICAgIHJtID0gZmFjLm5ld1JldHJpZXZhbE1ldGhvZChudWxsKTsgCisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhIE51bGxQb2ludGVyRXhjZXB0aW9uIik7IAorICAgICAgICB9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBucGUpIHt9CisKKwkvLyB0ZXN0IFJldHJpZXZhbE1ldGhvZChTdHJpbmcsIFN0cmluZywgVHJhbnNmb3JtW10pCisJdHJ5IHsKKwkgICAgcm0gPSBmYWMubmV3UmV0cmlldmFsTWV0aG9kKG51bGwsIG51bGwsIG51bGwpOyAKKwkgICAgZmFpbCgiU2hvdWxkIHJhaXNlIGEgTnVsbFBvaW50ZXJFeGNlcHRpb24iKTsgCisgICAgICAgIH0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIG5wZSkge30KKworICAgICAgICBmaW5hbCBTdHJpbmcgdHlwZSA9ICJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjWDUwOURhdGEiOworICAgICAgICBybSA9IGZhYy5uZXdSZXRyaWV2YWxNZXRob2QodXJpLCB0eXBlLCBudWxsKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKHVyaSwgcm0uZ2V0VVJJKCkpOworICAgICAgICBhc3NlcnRFcXVhbHModHlwZSwgcm0uZ2V0VHlwZSgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0aXNGZWF0dXJlU3VwcG9ydGVkKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJU3RyaW5nIHVyaSA9ICIjWDUwOUNlcnRDaGFpbiI7CisgICAgICAgIFN0cmluZyB0eXBlID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNYNTA5RGF0YSI7CisJUmV0cmlldmFsTWV0aG9kIHJtID0gbnVsbDsKKwlmb3IgKGludCBpPTA7IGk8MjsgaSsrKSB7CisJICAgIHN3aXRjaCAoaSkgeworCSAgICBjYXNlIDA6CisJCXJtID0gZmFjLm5ld1JldHJpZXZhbE1ldGhvZCh1cmkpOworCQlicmVhazsKKwkgICAgY2FzZSAxOgorCQlybSA9IGZhYy5uZXdSZXRyaWV2YWxNZXRob2QodXJpLCB0eXBlLCBudWxsKTsKKwkJYnJlYWs7CisJICAgIH0JCQorCSAgICB0cnkgeworCQlybS5pc0ZlYXR1cmVTdXBwb3J0ZWQobnVsbCk7IAorCQlmYWlsKCJTaG91bGQgcmFpc2UgYSBOUEUgZm9yIG51bGwgZmVhdHVyZSIpOyAKKwkgICAgfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gbnBlKSB7fQorCSAgICAKKwkgICAgYXNzZXJ0VHJ1ZSghcm0uaXNGZWF0dXJlU3VwcG9ydGVkKCJub3Qgc3VwcG9ydGVkIikpOworCX0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL2tleWluZm8vWDUwOURhdGFUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL2phdmF4L3htbC9jcnlwdG8vdGVzdC9kc2lnL2tleWluZm8vWDUwOURhdGFUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEzNDU4YQotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcva2V5aW5mby9YNTA5RGF0YVRlc3QuamF2YQpAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA2LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworLyoKKyAqIENvcHlyaWdodCAyMDA1IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworcGFja2FnZSBqYXZheC54bWwuY3J5cHRvLnRlc3QuZHNpZy5rZXlpbmZvOworCitpbXBvcnQgamF2YS51dGlsLio7CitpbXBvcnQgamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNSTDsKK2ltcG9ydCBqYXZheC54bWwuY3J5cHRvLio7CitpbXBvcnQgamF2YXgueG1sLmNyeXB0by5kc2lnLmtleWluZm8uKjsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay4qOworCisvKioKKyAqIFVuaXQgdGVzdCBmb3IgamF2YXgueG1sLmNyeXB0by5kc2lnLmtleWluZm8uWDUwOURhdGEKKyAqCisgKiBAdmVyc2lvbiAkSWQkCisgKiBAYXV0aG9yIFZhbGVyaWUgUGVuZworICovCitwdWJsaWMgY2xhc3MgWDUwOURhdGFUZXN0IGV4dGVuZHMgVGVzdENhc2UgeworCisgICAgcHJpdmF0ZSBLZXlJbmZvRmFjdG9yeSBmYWM7CisKKyAgICBwdWJsaWMgWDUwOURhdGFUZXN0KCkgeworCXN1cGVyKCJYNTA5RGF0YVRlc3QiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgWDUwOURhdGFUZXN0KFN0cmluZyBuYW1lKSB7CisJc3VwZXIobmFtZSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsgCisJZmFjID0gS2V5SW5mb0ZhY3RvcnkuZ2V0SW5zdGFuY2UKKwkgICAgKCJET00iLCBuZXcgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJKCkpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlYXJEb3duKCkgeyB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0Z2V0VHlwZXMoKSB7CisJWDUwOURhdGEgeDUwOSA9IGZhYy5uZXdYNTA5RGF0YShDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0KCJjbj1mb28iKSk7CisJTGlzdCBsaSA9IHg1MDkuZ2V0Q29udGVudCgpOworCWFzc2VydE5vdE51bGwobGkpOworCWlmICghbGkuaXNFbXB0eSgpKSB7CisJICAgIE9iamVjdFtdIGNvbnRlbnQgPSBsaS50b0FycmF5KCk7CisJICAgIGZvciAoaW50IGo9MDsgajxjb250ZW50Lmxlbmd0aDsgaisrKSB7CisJCWlmICghKGNvbnRlbnRbal0gaW5zdGFuY2VvZiBTdHJpbmcpICYmCisJCSAgICAhKGNvbnRlbnRbal0gaW5zdGFuY2VvZiBieXRlW10pICYmCisJCSAgICAhKGNvbnRlbnRbal0gaW5zdGFuY2VvZiBYNTA5Q2VydGlmaWNhdGUpICYmCisJCSAgICAhKGNvbnRlbnRbal0gaW5zdGFuY2VvZiBYNTA5Q1JMKSAmJgorCQkgICAgIShjb250ZW50W2pdIGluc3RhbmNlb2YgWE1MU3RydWN0dXJlKSkgeworCQkgICAgZmFpbCgiWDUwOSBlbGVtZW50IGhhcyB0aGUgd3JvbmcgdHlwZSIpOworCQl9OworCSAgICB9CisJfSBlbHNlIHsKKwkgICAgbGkuYWRkKCJhbnkgc3RyaW5nIik7CisJICAgIGxpLmFkZChuZXcgYnl0ZVs1XSk7CisJICAgIC8vQEBAQEBsaS5hZGQoWDUwOUNlcnRpZmljYXRlKTsKKwkgICAgLy9AQEBAQGxpLmFkZChYNTA5Q1JMKTsKKwkgICAgLy9AQEBAQGxpLmFkZChYTUxTdHJ1Y3R1cmUpOworCSAgICB0cnkgeworCQlsaS5hZGQobmV3IE9iamVjdCgpKTsKKwkJZmFpbCgiQWRkZWQgWDUwOSBlbGVtZW50IG9mIHdyb25nIHR5cGUiKTsKKwkgICAgfSBjYXRjaCAoQ2xhc3NDYXN0RXhjZXB0aW9uIGV4KSB7CisJCS8vIGV4cGVjdGVkCisJICAgIH0KKwl9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdENvbnN0cnVjdG9yKCkgeworCS8vIHRlc3QgbmV3WDUwOURhdGEoKQorCVg1MDlEYXRhIHg1MDkgPSBmYWMubmV3WDUwOURhdGEoQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdCgiY249Zm9vIikpOworCWFzc2VydE5vdE51bGwoeDUwOSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdGlzRmVhdHVyZVN1cHBvcnRlZCgpIHsKKworCVg1MDlEYXRhIHg1MDkgPSBmYWMubmV3WDUwOURhdGEoQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdCgiY249Zm9vIikpOworCXRyeSB7CisJICAgIHg1MDkuaXNGZWF0dXJlU3VwcG9ydGVkKG51bGwpOyAKKwkgICAgZmFpbCgiU2hvdWxkIHJhaXNlIGEgTlBFIGZvciBudWxsIGZlYXR1cmUiKTsgCisJfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gbnBlKSB7fQorCQorCWFzc2VydFRydWUoIXg1MDkuaXNGZWF0dXJlU3VwcG9ydGVkKCJub3Qgc3VwcG9ydGVkIikpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcva2V5aW5mby9YNTA5SXNzdWVyU2VyaWFsVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9qYXZheC94bWwvY3J5cHRvL3Rlc3QvZHNpZy9rZXlpbmZvL1g1MDlJc3N1ZXJTZXJpYWxUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGEzNzU0NAotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvamF2YXgveG1sL2NyeXB0by90ZXN0L2RzaWcva2V5aW5mby9YNTA5SXNzdWVyU2VyaWFsVGVzdC5qYXZhCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNi0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgMjAwNSBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KK3BhY2thZ2UgamF2YXgueG1sLmNyeXB0by50ZXN0LmRzaWcua2V5aW5mbzsKKworaW1wb3J0IGphdmEubWF0aC5CaWdJbnRlZ2VyOworaW1wb3J0IGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvLio7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuKjsKKworLyoqCisgKiBVbml0IHRlc3QgZm9yIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvLlg1MDlJc3N1ZXJTZXJpYWwKKyAqCisgKiBAdmVyc2lvbiAkSWQ6IFg1MDlJc3N1ZXJTZXJpYWxUZXN0LmphdmEsdiAxLjEgMjAwNC8wNC8wNyAyMToxMTozNiBtdWxsYW4gRXhwICQKKyAqIEBhdXRob3IgVmFsZXJpZSBQZW5nCisgKi8KK3B1YmxpYyBjbGFzcyBYNTA5SXNzdWVyU2VyaWFsVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgIHByaXZhdGUgS2V5SW5mb0ZhY3RvcnkgZmFjOworICAgIHByaXZhdGUgU3RyaW5nIG5hbWU7CisKKyAgICBwdWJsaWMgWDUwOUlzc3VlclNlcmlhbFRlc3QoKSB7CisJc3VwZXIoIlg1MDlJc3N1ZXJTZXJpYWxUZXN0Iik7CisgICAgfQorCisgICAgcHVibGljIFg1MDlJc3N1ZXJTZXJpYWxUZXN0KFN0cmluZyBuYW1lKSB7CisJc3VwZXIobmFtZSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsgCisJZmFjID0gS2V5SW5mb0ZhY3RvcnkuZ2V0SW5zdGFuY2UKKwkgICAgKCJET00iLCBuZXcgb3JnLmpjcC54bWwuZHNpZy5pbnRlcm5hbC5kb20uWE1MRFNpZ1JJKCkpOworCW5hbWUgPSAiQ04gPSBXb2xmZ2FuZyI7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVhckRvd24oKSB7IH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RnZXRJc3N1ZXJOYW1lKCkgeworCVg1MDlJc3N1ZXJTZXJpYWwgeDUwOWlzID0gZmFjLm5ld1g1MDlJc3N1ZXJTZXJpYWwobmFtZSxCaWdJbnRlZ2VyLlpFUk8pOworCWFzc2VydE5vdE51bGwoeDUwOWlzLmdldElzc3Vlck5hbWUoKSk7CQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RnZXRTZXJpYWxOdW1iZXIoKSB7CisJWDUwOUlzc3VlclNlcmlhbCB4NTA5aXMgPSBmYWMubmV3WDUwOUlzc3VlclNlcmlhbChuYW1lLEJpZ0ludGVnZXIuWkVSTyk7CisJYXNzZXJ0Tm90TnVsbCh4NTA5aXMuZ2V0U2VyaWFsTnVtYmVyKCkpOwkKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0Q29uc3RydWN0b3IoKSB7CisJLy8gdGVzdCBuZXdYNTA5SXNzdWVyU2VyaWFsKFN0cmluZywgQmlnSW50ZWdlcikKKwlYNTA5SXNzdWVyU2VyaWFsIHg1MDlpcyA9IGZhYy5uZXdYNTA5SXNzdWVyU2VyaWFsKG5hbWUsIEJpZ0ludGVnZXIuT05FKTsKKwlhc3NlcnRFcXVhbHMobmFtZSwgeDUwOWlzLmdldElzc3Vlck5hbWUoKSk7CisJYXNzZXJ0RXF1YWxzKEJpZ0ludGVnZXIuT05FLCB4NTA5aXMuZ2V0U2VyaWFsTnVtYmVyKCkpOworICAgIH0KKworICAgIC8qCisgICAgICogQ29uZmlybSB0aGF0IGFuIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpcyB0aHJvd24gd2hlbiBhbiBpc3N1ZXIKKyAgICAgKiBkaXN0aW5ndWlzaGVkIG5hbWUgZG9lcyBub3QgY29uZm9ybSB0byBSRkMgMjI1My4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCB0ZXN0Q29uc3RydWN0b3JCYWRJc3N1ZXJOYW1lKCkgeworCS8vIHRlc3QgbmV3WDUwOUlzc3VlclNlcmlhbChTdHJpbmcsIEJpZ0ludGVnZXIpCisJU3RyaW5nIGJhZE5hbWUgPSAiY249YmFkLD0rYmFkLCI7CisJdHJ5IHsKKwkgICAgZmFjLm5ld1g1MDlJc3N1ZXJTZXJpYWwoYmFkTmFtZSxCaWdJbnRlZ2VyLk9ORSk7CisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gd2hlbiBpc3N1ZXIgIiArCisJCSJkaXN0aW5ndWlzaGVkIG5hbWUgZG9lcyBub3QgY29uZm9ybSB0byBSRkMgMjI1MyIpOyAKKwl9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworCSAgICAvLyBzdWNjZXNzCisJfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3Rpc0ZlYXR1cmVTdXBwb3J0ZWQoKSB7CisJCisJWDUwOUlzc3VlclNlcmlhbCB4NTA5aXMgPSBmYWMubmV3WDUwOUlzc3VlclNlcmlhbChuYW1lLCBCaWdJbnRlZ2VyLk9ORSk7CisJdHJ5IHsKKwkgICAgeDUwOWlzLmlzRmVhdHVyZVN1cHBvcnRlZChudWxsKTsgCisJICAgIGZhaWwoIlNob3VsZCByYWlzZSBhIE5QRSBmb3IgbnVsbCBmZWF0dXJlIik7IAorCX0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIG5wZSkge30KKwkKKwlhc3NlcnRUcnVlKCF4NTA5aXMuaXNGZWF0dXJlU3VwcG9ydGVkKCJub3Qgc3VwcG9ydGVkIikpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbXBsZW1lbnRhdGlvbnMvQWxsVGVzdHMuamF2YSBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbXBsZW1lbnRhdGlvbnMvQWxsVGVzdHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTFiNzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2ltcGxlbWVudGF0aW9ucy9BbGxUZXN0cy5qYXZhCkBAIC0wLDAgKzEsMzQgQEAKKy8qDQorICogQ29weXJpZ2h0IDIwMDYtMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQorICoNCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICoNCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uaW1wbGVtZW50YXRpb25zOw0KKw0KK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsNCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsNCisNCitwdWJsaWMgY2xhc3MgQWxsVGVzdHMgew0KKw0KKwlwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKSB7DQorCQlUZXN0U3VpdGUgc3VpdGUgPSBuZXcgVGVzdFN1aXRlKA0KKwkJCQkiVGVzdCBmb3Igb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5pbXBsZW1lbnRhdGlvbnMiKTsNCisJCS8vJEpVbml0LUJFR0lOJA0KKwkJc3VpdGUuYWRkVGVzdChOYW1lU3BhY2VTeW1iVGFibGVUZXN0LnN1aXRlKCkpOw0KKwkJc3VpdGUuYWRkVGVzdChVdGZIZWxwZXJUZXN0LnN1aXRlKCkpOw0KKwkJLy8kSlVuaXQtRU5EJA0KKwkJcmV0dXJuIHN1aXRlOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbXBsZW1lbnRhdGlvbnMvTmFtZVNwYWNlU3ltYlRhYmxlVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2ltcGxlbWVudGF0aW9ucy9OYW1lU3BhY2VTeW1iVGFibGVUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2EzN2M5ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbXBsZW1lbnRhdGlvbnMvTmFtZVNwYWNlU3ltYlRhYmxlVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTg2IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLmltcGxlbWVudGF0aW9uczsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7CisKK2ltcG9ydCBvcmcudzNjLmRvbS5BdHRyOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworCitwdWJsaWMgY2xhc3MgTmFtZVNwYWNlU3ltYlRhYmxlVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKwlwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKSB7CisJICAgICAgcmV0dXJuIG5ldyBUZXN0U3VpdGUoTmFtZVNwYWNlU3ltYlRhYmxlVGVzdC5jbGFzcyk7CisJICAgfQorCXN0YXRpYyBBdHRyIG5vZGUxLG5vZGUyOworICAgIHN0YXRpYyB7CisgICAgCXRyeSB7CisgICAgICAgICAgICBEb2N1bWVudCBkb2M9RG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpLm5ld0RvY3VtZW50QnVpbGRlcigpLm5ld0RvY3VtZW50KCk7CisJCQlub2RlMT1kb2MuY3JlYXRlQXR0cmlidXRlTlMoImEiLCJiIik7CisgICAgICAgICAgICBub2RlMj1kb2MuY3JlYXRlQXR0cmlidXRlTlMoImIiLCJjIik7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQllLnByaW50U3RhY2tUcmFjZSgpOworCQl9IAorICAgIH0KKwlwdWJsaWMgdm9pZCB0ZXN0TnVsbEZpcnN0WG1sbnMoKSB7CisJCU5hbWVTcGFjZVN5bWJUYWJsZSBucz1uZXcgTmFtZVNwYWNlU3ltYlRhYmxlKCk7CisgICAgICAgIGFzc2VydE51bGwobnMuZ2V0TWFwcGluZygieG1sbnMiKSk7CisgICAgfQorICAgIHB1YmxpYyB2b2lkIHRlc3RYbWxuc1B1dCgpIHsKKyAgICAgICAgTmFtZVNwYWNlU3ltYlRhYmxlIG5zPW5ldyBOYW1lU3BhY2VTeW1iVGFibGUoKTsKKyAgICAgICAgbnMucHVzaCgpOworICAgICAgICBucy5hZGRNYXBwaW5nKCJ4bWxucyIsImh0dHA6Ly9hIixub2RlMSk7CisgICAgICAgIGFzc2VydEVxdWFscyhub2RlMSxucy5nZXRNYXBwaW5nKCJ4bWxucyIpKTsKKyAgICB9CisgICAgcHVibGljIHZvaWQgdGVzdFhtbG5zTWFwKCkgeworICAgICAgICBOYW1lU3BhY2VTeW1iVGFibGUgbnM9bmV3IE5hbWVTcGFjZVN5bWJUYWJsZSgpOworICAgICAgICBucy5wdXNoKCk7CisgICAgICAgIG5zLmFkZE1hcHBpbmcoInhtbG5zIiwiaHR0cDovL2EiLG5vZGUxKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKG5vZGUxLG5zLmdldE1hcHBpbmcoInhtbG5zIikpOworICAgICAgICBucy5wb3AoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKG51bGwsbnMuZ2V0TWFwcGluZygieG1sbnMiKSk7ICAgICAgICAKKyAgICB9CisgICAgcHVibGljIHZvaWQgdGVzdFhtbG5zTWFwMigpIHsKKyAgICAgICAgTmFtZVNwYWNlU3ltYlRhYmxlIG5zPW5ldyBOYW1lU3BhY2VTeW1iVGFibGUoKTsKKyAgICAgICAgbnMucHVzaCgpOworICAgICAgICBucy5wdXNoKCk7CisgICAgICAgIG5zLmFkZE1hcHBpbmcoInhtbG5zIiwiaHR0cDovL2EiLG5vZGUxKTsgICAgICAgIAorICAgICAgICBucy5wb3AoKTsKKyAgICAgICAgbnMucG9wKCk7CisgICAgICAgIGFzc2VydEVxdWFscyhudWxsLG5zLmdldE1hcHBpbmcoInhtbG5zIikpOyAgICAgICAgCisgICAgfQorICAgIHB1YmxpYyB2b2lkIHRlc3RYbWxuc1ByZWZpeCgpIHsKKyAgICAgICAgTmFtZVNwYWNlU3ltYlRhYmxlIG5zPW5ldyBOYW1lU3BhY2VTeW1iVGFibGUoKTsKKyAgICAgICAgbnMucHVzaCgpOworICAgICAgICBucy5hZGRNYXBwaW5nKCJ4bWxucyIsImh0dHA6Ly9hIixub2RlMSk7CisgICAgICAgIGFzc2VydEVxdWFscyhub2RlMSxucy5nZXRNYXBwaW5nKCJ4bWxucyIpKTsKKyAgICAgICAgbnMucHVzaCgpOworICAgICAgICBucy5hZGRNYXBwaW5nKCJ4bWxucyIsImh0dHA6Ly9hIixub2RlMSk7CisgICAgICAgIGFzc2VydEVxdWFscyhudWxsLG5zLmdldE1hcHBpbmcoInhtbG5zIikpOyAgICAgCisgICAgICAgIG5zLnB1c2goKTsKKyAgICAgICAgbnMuYWRkTWFwcGluZygieG1sbnMiLCJodHRwOi8vYiIsbm9kZTEpOworICAgICAgICBhc3NlcnRFcXVhbHMobm9kZTEsbnMuZ2V0TWFwcGluZygieG1sbnMiKSk7CisgICAgfQorICAgIHB1YmxpYyB2b2lkIHRlc3RYbWxuc1JlbW92ZVByZWZpeCgpIHsKKyAgICAgICAgTmFtZVNwYWNlU3ltYlRhYmxlIG5zPW5ldyBOYW1lU3BhY2VTeW1iVGFibGUoKTsKKyAgICAgICAgbnMucHVzaCgpOworICAgICAgICBucy5wdXNoKCk7CisgICAgICAgIG5zLmFkZE1hcHBpbmcoInhtbG5zIiwiaHR0cDovL2EiLG5vZGUxKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKG5vZGUxLG5zLmdldE1hcHBpbmcoInhtbG5zIikpOworICAgICAgICBucy5wb3AoKTsgICAgICAgIAorICAgICAgICBhc3NlcnROdWxsKG5zLmdldE1hcHBpbmcoInhtbG5zIikpOyAgICAgICAgICAgICAKKyAgICB9CisgICAgcHVibGljIHZvaWQgdGVzdFByZWZpeCgpIHsKKyAgICAJTmFtZVNwYWNlU3ltYlRhYmxlIG5zPW5ldyBOYW1lU3BhY2VTeW1iVGFibGUoKTsKKyAgICAgICAgbnMucHVzaCgpOworICAgICAgICBucy5hZGRNYXBwaW5nKCJhIiwiaHR0cDovL2EiLG5vZGUxKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKG5vZGUxLG5zLmdldE1hcHBpbmcoImEiKSk7CisgICAgICAgIG5zLnB1c2goKTsKKyAgICAgICAgYXNzZXJ0TnVsbChucy5nZXRNYXBwaW5nKCJhIikpOworICAgICAgICBucy5wdXNoKCk7CisgICAgICAgIG5zLmFkZE1hcHBpbmcoImEiLCJodHRwOi8vYyIsbm9kZTEpOworICAgICAgICBhc3NlcnRFcXVhbHMobm9kZTEsbnMuZ2V0TWFwcGluZygiYSIpKTsKKyAgICAgICAgbnMucG9wKCk7CisgICAgICAgIG5zLnB1c2goKTsKKyAgICAgICAgYXNzZXJ0TnVsbChucy5nZXRNYXBwaW5nKCJhIikpOworICAgICAgICBucy5hZGRNYXBwaW5nKCJhIiwiaHR0cDovL2MiLG5vZGUxKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKG5vZGUxLG5zLmdldE1hcHBpbmcoImEiKSk7CisgICAgfQorICAgIHB1YmxpYyB2b2lkIHRlc3RTZXZlcmFsUHJlZml4ZXMoKSB7CisgICAgCU5hbWVTcGFjZVN5bWJUYWJsZSBucz1uZXcgTmFtZVNwYWNlU3ltYlRhYmxlKCk7CisgICAgICAgIG5zLnB1c2goKTsKKyAgICAgICAgbnMuYWRkTWFwcGluZygiYSIsImh0dHA6Ly9hIixub2RlMSk7CisgICAgICAgIG5zLmFkZE1hcHBpbmcoImIiLCJodHRwOi8vYiIsbm9kZTIpOworICAgICAgICBhc3NlcnRFcXVhbHMobm9kZTEsbnMuZ2V0TWFwcGluZygiYSIpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKG5vZGUyLG5zLmdldE1hcHBpbmcoImIiKSk7CisgICAgICAgIG5zLnB1c2goKTsKKyAgICAgICAgYXNzZXJ0TnVsbChucy5nZXRNYXBwaW5nKCJhIikpOworICAgICB9CisgICAgcHVibGljIHZvaWQgdGVzdFNldmVyYWxQcmVmaXhlczIoKSB7CisgICAgICAgIE5hbWVTcGFjZVN5bWJUYWJsZSBucz1uZXcgTmFtZVNwYWNlU3ltYlRhYmxlKCk7CisgICAgICAgIG5zLnB1c2goKTsKKyAgICAgICAgbnMuYWRkTWFwcGluZygiYSIsImh0dHA6Ly9hIixub2RlMSk7CisgICAgICAgIG5zLnB1c2goKTsgICAgICAgIAorICAgICAgICBhc3NlcnRFcXVhbHMobm9kZTEsbnMuZ2V0TWFwcGluZygiYSIpKTsKKyAgICAgICAgbnMucG9wKCk7CisgICAgICAgIGFzc2VydEVxdWFscyhub2RlMSxucy5nZXRNYXBwaW5nKCJhIikpOyAgICAgICAgCisgICAgIH0KKyAgICBwdWJsaWMgdm9pZCB0ZXN0R2V0VW5yZW5kZXJlZE5vZGVzKCkgeworICAgIAlOYW1lU3BhY2VTeW1iVGFibGUgbnM9bmV3IE5hbWVTcGFjZVN5bWJUYWJsZSgpOworICAgICAgICBucy5wdXNoKCk7CisgICAgICAgIExpc3QgbD1uZXcgQXJyYXlMaXN0KCk7CisgICAgICAgIG5zLmFkZE1hcHBpbmcoInhtbG5zIiwiaHR0cDovL2EiLG5vZGUxKTsKKyAgICAgICAgbnMucHVzaCgpOworICAgICAgICBucy5nZXRVbnJlbmRlcmVkTm9kZXMobCk7CisgICAgICAgIGFzc2VydFRydWUobC5jb250YWlucyhub2RlMSkpOworICAgICAgICBBdHRyIG49KEF0dHIpbnMuYWRkTWFwcGluZ0FuZFJlbmRlcigieG1sbnMiLCIiLG5vZGUyKTsKKyAgICAgICAgYXNzZXJ0Tm90TnVsbCgieG1sbnM9XCJcIiBub3QgcmVuZGVyZWQiLG4pOworICAgICAgICBhc3NlcnRFcXVhbHMobiwgbm9kZTIpOworICAgIH0KKyAgICBwdWJsaWMgdm9pZCB0ZXN0VW5yZWRlcmVkTm9kZXMoKSB7CisgICAgCU5hbWVTcGFjZVN5bWJUYWJsZSBucz1uZXcgTmFtZVNwYWNlU3ltYlRhYmxlKCk7CisgICAgICAgIG5zLnB1c2goKTsKKyAgICAgICAgTGlzdCBsPW5ldyBBcnJheUxpc3QoKTsKKyAgICAgICAgbnMuZ2V0VW5yZW5kZXJlZE5vZGVzKGwpOworICAgICAgICBhc3NlcnRUcnVlKGwuaXNFbXB0eSgpKTsKKyAgICAgICAgbC5jbGVhcigpOworICAgICAgICBucy5wdXNoKCk7CisgICAgICAgIG5zLmFkZE1hcHBpbmcoInhtbG5zIiwiaHR0cDovL2EiLG5vZGUxKTsKKyAgICAgICAgbnMuYWRkTWFwcGluZygiYSIsImh0dHA6Ly9hIixub2RlMik7CisKKyAgICAgICAgbnMucHVzaCgpOworICAgICAgICAKKyAgICAgICAgbnMuZ2V0VW5yZW5kZXJlZE5vZGVzKGwpOworICAgICAgICBhc3NlcnRUcnVlKGwuY29udGFpbnMobm9kZTEpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShsLmNvbnRhaW5zKG5vZGUyKSk7CisgICAgICAgIG5zLnB1c2goKTsKKyAgICAgICAgbC5jbGVhcigpOworICAgICAgICBucy5nZXRVbnJlbmRlcmVkTm9kZXMobCk7CisgICAgICAgIGFzc2VydEZhbHNlKGwuY29udGFpbnMobm9kZTEpKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UobC5jb250YWlucyhub2RlMikpOyAgIAorICAgICAgICBucy5wb3AoKTsKKyAgICAgICAgbnMucG9wKCk7CisgICAgICAgIGwuY2xlYXIoKTsKKyAgICAgICAgbnMuZ2V0VW5yZW5kZXJlZE5vZGVzKGwpOworICAgICAgICBhc3NlcnRUcnVlKGwuY29udGFpbnMobm9kZTEpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShsLmNvbnRhaW5zKG5vZGUyKSk7CisgICAgICAgIAorICAgIH0KKyAgICBwdWJsaWMgdm9pZCB0ZXN0QnVnMzg2NTUoKSB7CisgICAgCSBOYW1lU3BhY2VTeW1iVGFibGUgbnM9bmV3IE5hbWVTcGFjZVN5bWJUYWJsZSgpOworICAgICAgICAgbnMucHVzaCgpOworICAgICAgICAgCisgICAgICAgICBucy5hZGRNYXBwaW5nQW5kUmVuZGVyKCJnZW5lcmF0ZWQtY29tbWFuZCIsImh0dHA6Ly9mb28uY29tL2NvbW1hbmQiLG5vZGUxKTsgICAgICAgIAkgCisgICAgICAgICBucy5hZGRNYXBwaW5nQW5kUmVuZGVyKCJnZW5lcmF0ZWQtZXZlbnQiLCJodHRwOi8vZm9vLmNvbS9ldmVudCIsbm9kZTEpOworICAgICAgICAgbnMuYWRkTWFwcGluZ0FuZFJlbmRlcigiY29tbWFuZCIsImh0dHA6Ly9mb28uY29tL2NvbW1hbmQiLG5vZGUxKTsKKyAgICAgICAgIG5zLmFkZE1hcHBpbmdBbmRSZW5kZXIoInVpIiwiaHR0cDovL2Zvby5jb20vdWkiLG5vZGUxKTsKKyAgICAgICAgIG5zLmFkZE1hcHBpbmdBbmRSZW5kZXIoImV2ZW50IiwiaHR0cDovL2Zvby5jb20vZXZlbnQiLG5vZGUxKTsKKyAgICAgICAgIG5zLmFkZE1hcHBpbmdBbmRSZW5kZXIoImluc3RydWN0aW9uIiwiaHR0cDovL2Zvby9pbnN0cnVjdGlvbiIsbm9kZTEpOworICAgICAgICAgbnMuYWRkTWFwcGluZ0FuZFJlbmRlcigiZGlyZWN0b3J5IiwiaHR0cDovL2Zvby5jb20vaW8vZGlyZWN0b3J5Iixub2RlMSk7ICAgIAkJICAgIAorICAgICAgICAgbnMuYWRkTWFwcGluZ0FuZFJlbmRlcigiZnVuY3Rpb24iLCJodHRwOi8vZm9vLmNvbS9mdW5jdGlvbiIsbm9kZTEpOworICAgICAgICAgbnMuYWRkTWFwcGluZ0FuZFJlbmRlcigieG1sbnMiLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixub2RlMSk7CisgICAgICAgICBucy5hZGRNYXBwaW5nQW5kUmVuZGVyKCJjdHJsIiwiaHR0cDovL2Zvby5jb20vY29udHJvbHMiLG5vZGUxKTsKKyAgICAgICAgIG5zLmFkZE1hcHBpbmdBbmRSZW5kZXIoIndpa2kiLCJodHRwOi8vZm9vLmNvbS9zYW1wbGVzL3dpa2kiLG5vZGUxKTsKKyAgICAJCSAgCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2ltcGxlbWVudGF0aW9ucy9VdGZIZWxwZXJUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW1wbGVtZW50YXRpb25zL1V0ZkhlbHBlclRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMmMzZjIwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2ltcGxlbWVudGF0aW9ucy9VdGZIZWxwZXJUZXN0LmphdmEKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA2LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLmltcGxlbWVudGF0aW9uczsKKworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7CisKK3B1YmxpYyBjbGFzcyBVdGZIZWxwZXJUZXN0IGV4dGVuZHMgVGVzdENhc2UgeworCXB1YmxpYyB2b2lkIHRlc3RCdWc0MDE1NigpIHsKKwkJU3RyaW5nIHM9Ilx1MDBlNFx1MDBmNlx1MDBmYyI7CisJCWJ5dGUgYVtdPVV0ZkhlbHBwZXIuZ2V0U3RyaW5nSW5VdGY4KHMpOworCQl0cnkgeworCQkJYnl0ZSBjb3JyZWN0W109cy5nZXRCeXRlcygiVVRGOCIpOworCQkJYm9vbGVhbiBlcXVhbHM9QXJyYXlzLmVxdWFscyhjb3JyZWN0LCBhKTsKKwkJCWFzc2VydFRydWUoZXF1YWxzKTsKKwkJfSBjYXRjaCAoVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiBlKSB7CisJCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIGNhdGNoIGJsb2NrCisJCQllLnByaW50U3RhY2tUcmFjZSgpOworCQl9CisJCQorCX0KKwlwdWJsaWMgdm9pZCB0ZXN0VXRmKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCWludCBjaHVuaz0xPDwxNjsgaW50IGo9MDsKKwkJQnl0ZUFycmF5T3V0cHV0U3RyZWFtIGNoYXJCeUNoYXJPcz1uZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7CisJCUJ5dGVBcnJheU91dHB1dFN0cmVhbSBzdHJPcz1uZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7CisJCQorCQljaGFyIGNoc1tdPW5ldyBjaGFyW2NodW5rXTsKKwkJZm9yIChpbnQgaT0wO2k8Y2h1bms7IGkrKykgeworCQkJaW50IGNoPShjaHVuaypqKStpOworCQkJaWYgKGNoPT0weERCRkYpIHsKKwkJCQljaD0xOworCQkJfQorCQkJY2hzW2ldPShjaGFyKWNoOworCQkJVXRmSGVscHBlci53cml0ZUNoYXJUb1V0ZjgoKGNoYXIpIGNoLCBjaGFyQnlDaGFyT3MpOworCQl9CisJCVN0cmluZyBzdHI9bmV3IFN0cmluZyhjaHMpOworCQlieXRlIGFbXT1VdGZIZWxwcGVyLmdldFN0cmluZ0luVXRmOChzdHIpOworCQl0cnkgeworCQkJLy8gU3lzdGVtLm91dC5wcmludGxuKCJjaHVuazoiK2opOworCQkJYnl0ZSBjb3JyZWN0W109c3RyLmdldEJ5dGVzKCJVVEY4Iik7CisJCQlhc3NlcnRUcnVlKCJVdGZIZWxwZXIuZ2V0U3RyaW5nSW5VdGY4IGZhaWxzZSIsQXJyYXlzLmVxdWFscyhjb3JyZWN0LCBhKSk7CisJCQlhc3NlcnRUcnVlKCJVdGZIZWxwZXIuZ2V0U3RyaW5nSW5VdGY4IGZhaWxzZSIsQXJyYXlzLmVxdWFscyhjb3JyZWN0LCBjaGFyQnlDaGFyT3MudG9CeXRlQXJyYXkoKSkpOworCQkJVXRmSGVscHBlci53cml0ZVN0cmluZ1RvVXRmOChzdHIsIHN0ck9zKTsKKwkJCWFzc2VydFRydWUoIlV0ZkhlbHBlci53cml0ZVN0cmluZ1RvVXRmOCBmYWlsc2UiLEFycmF5cy5lcXVhbHMoY29ycmVjdCwgc3RyT3MudG9CeXRlQXJyYXkoKSkpOworCQkJCisJCX0gY2F0Y2ggKFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gZSkgeworCQkJZS5wcmludFN0YWNrVHJhY2UoKTsKKwkJfQorCQkKKwl9CisJcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkgeworCQlyZXR1cm4gbmV3IFRlc3RTdWl0ZShVdGZIZWxwZXJUZXN0LmNsYXNzKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvQWxsVGVzdHMuamF2YSBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9BbGxUZXN0cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiYzBlYzQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvQWxsVGVzdHMuamF2YQpAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdDsKKworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7CisKKworLyoqCisgKiBBbGwgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdCBKVW5pdCBUZXN0cworICoKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEdldWVyLVBvbGxtYW5uCisgKi8KK3B1YmxpYyBjbGFzcyBBbGxUZXN0cyBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKAorCQkJICAgIEFsbFRlc3RzLmNsYXNzLmdldE5hbWUoKSk7CisKKyAgIHB1YmxpYyBBbGxUZXN0cyhTdHJpbmcgdGVzdCkgeworICAgICAgc3VwZXIodGVzdCk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHN1aXRlCisgICAgKgorICAgICoKKyAgICAqLworICAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkgeworCisgICAgICBUZXN0U3VpdGUgc3VpdGUgPQorICAgICAgICAgbmV3IFRlc3RTdWl0ZSgiQWxsIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QgSlVuaXQgVGVzdHMiKTsKKworICAgICAgLy9KLQorICAgICAgc3VpdGUuYWRkVGVzdChvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0Lk1vZHVsZVRlc3Quc3VpdGUoKSk7CisgICAgICBzdWl0ZS5hZGRUZXN0KG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QuSW50ZXJvcFRlc3Quc3VpdGUoKSk7CisgICAgICBzdWl0ZS5hZGRUZXN0KG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QuRW5jcnlwdGlvblRlc3Quc3VpdGUoKSk7CisgICAgICAvL0orCisKKyAgICAgIHJldHVybiBzdWl0ZTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgbWFpbgorICAgICoKKyAgICAqIEBwYXJhbSBhcmdzCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKworICAgICAgLy9YTUxVdGlscy5zcGl0T3V0VmVyc2lvbnMobG9nKTsKKyAgICAgIGxvZy5kZWJ1ZygiamF2YS5jbGFzcy5wYXRoICAgICAgICAgICAgOiAiICsgU3lzdGVtLmdldFByb3BlcnR5KCJqYXZhLmNsYXNzLnBhdGgiKSk7CisgICAgICBsb2cuZGVidWcoImphdmEubGlicmFyeS5wYXRoICAgICAgICAgIDogIiArIFN5c3RlbS5nZXRQcm9wZXJ0eSgiamF2YS5saWJyYXJ5LnBhdGgiKSk7CisgICAgICBsb2cuZGVidWcoImphdmEucnVudGltZS5uYW1lICAgICAgICAgIDogIiArIFN5c3RlbS5nZXRQcm9wZXJ0eSgiamF2YS5ydW50aW1lLm5hbWUiKSk7CisgICAgICBsb2cuZGVidWcoImphdmEucnVudGltZS52ZXJzaW9uICAgICAgIDogIiArIFN5c3RlbS5nZXRQcm9wZXJ0eSgiamF2YS5ydW50aW1lLnZlcnNpb24iKSk7CisgICAgICBsb2cuZGVidWcoImphdmEuc3BlY2lmaWNhdGlvbi5uYW1lICAgIDogIiArIFN5c3RlbS5nZXRQcm9wZXJ0eSgiamF2YS5zcGVjaWZpY2F0aW9uLm5hbWUiKSk7CisgICAgICBsb2cuZGVidWcoImphdmEuc3BlY2lmaWNhdGlvbi52ZW5kb3IgIDogIiArIFN5c3RlbS5nZXRQcm9wZXJ0eSgiamF2YS5zcGVjaWZpY2F0aW9uLnZlbmRvciIpKTsKKyAgICAgIGxvZy5kZWJ1ZygiamF2YS5zcGVjaWZpY2F0aW9uLnZlcnNpb24gOiAiICsgU3lzdGVtLmdldFByb3BlcnR5KCJqYXZhLnNwZWNpZmljYXRpb24udmVyc2lvbiIpKTsKKyAgICAgIGxvZy5kZWJ1ZygiamF2YS52ZW5kb3IgICAgICAgICAgICAgICAgOiAiICsgU3lzdGVtLmdldFByb3BlcnR5KCJqYXZhLnZlbmRvciIpKTsKKyAgICAgIGxvZy5kZWJ1ZygiamF2YS52ZXJzaW9uICAgICAgICAgICAgICAgOiAiICsgU3lzdGVtLmdldFByb3BlcnR5KCJqYXZhLnZlcnNpb24iKSk7CisgICAgICBsb2cuZGVidWcoImphdmEudm0uaW5mbyAgICAgICAgICAgICAgIDogIiArIFN5c3RlbS5nZXRQcm9wZXJ0eSgiamF2YS52bS5pbmZvIikpOworICAgICAgbG9nLmRlYnVnKCJqYXZhLnZtLm5hbWUgICAgICAgICAgICAgICA6ICIgKyBTeXN0ZW0uZ2V0UHJvcGVydHkoImphdmEudm0ubmFtZSIpKTsKKyAgICAgIGxvZy5kZWJ1ZygiamF2YS52bS52ZXJzaW9uICAgICAgICAgICAgOiAiICsgU3lzdGVtLmdldFByb3BlcnR5KCJqYXZhLnZtLnZlcnNpb24iKSk7CisgICAgICBsb2cuZGVidWcoIm9zLmFyY2ggICAgICAgICAgICAgICAgICAgIDogIiArIFN5c3RlbS5nZXRQcm9wZXJ0eSgib3MuYXJjaCIpKTsKKyAgICAgIGxvZy5kZWJ1Zygib3MubmFtZSAgICAgICAgICAgICAgICAgICAgOiAiICsgU3lzdGVtLmdldFByb3BlcnR5KCJvcy5uYW1lIikpOworICAgICAgbG9nLmRlYnVnKCJvcy52ZXJzaW9uICAgICAgICAgICAgICAgICA6ICIgKyBTeXN0ZW0uZ2V0UHJvcGVydHkoIm9zLnZlcnNpb24iKSk7CisKKyAgICAgIGJvb2xlYW4gdXNlVGV4dFVJID0gdHJ1ZTsKKworICAgICAgaWYgKHVzZVRleHRVSSkgeworICAgICAgICAgLy8gaW50IGNvdW50ZXIgPSAxMDA7CisgICAgICAgICAvLyBsb25nIHN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICAvLyBmb3IgKGludCBpPTA7IGk8Y291bnRlcjsgaSsrKSB7CisgICAgICAgICAgICBqdW5pdC50ZXh0dWkuVGVzdFJ1bm5lci5ydW4oc3VpdGUoKSk7CisgICAgICAgICAvLyB9CisgICAgICAgICAvLyBsb25nIGVuZCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgLy8gZG91YmxlIGRlbHRhID0gZW5kIC0gc3RhcnQ7CisgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oY291bnRlciArICIgZnVsbCB0ZXN0cyB0b29rICIgKyBqYXZhLnRleHQuRGVjaW1hbEZvcm1hdC5nZXRJbnN0YW5jZSgpLmZvcm1hdChkZWx0YSAvIDEwMDAuKSArICIgc2Vjb25kcyIpOworCisgICAgICB9IGVsc2UgeworICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFN0cmluZyBsb29rQW5kRmVlbENsYXNzID0KKyAgICAgICAgICAgICAgICJjb20uaW5jb3JzLnBsYWYua3Vuc3RzdG9mZi5LdW5zdHN0b2ZmTG9va0FuZEZlZWwiOworICAgICAgICAgICAgamF2YXguc3dpbmcuTG9va0FuZEZlZWwgbG5mID0KKyAgICAgICAgICAgICAgIChqYXZheC5zd2luZy5Mb29rQW5kRmVlbCkgQ2xhc3MuZm9yTmFtZShsb29rQW5kRmVlbENsYXNzKQorICAgICAgICAgICAgICAgICAgLm5ld0luc3RhbmNlKCk7CisKKyAgICAgICAgICAgIGphdmF4LnN3aW5nLlVJTWFuYWdlci5zZXRMb29rQW5kRmVlbChsbmYpOworICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7fQorCisgICAgICAgICAvL2p1bml0LnN3aW5ndWkuVGVzdFJ1bm5lci5tYWluKHRlc3RDYXNlTmFtZSk7CisgICAgICAgICBqdW5pdC50ZXh0dWkuVGVzdFJ1bm5lci5ydW4oc3VpdGUoKSk7CisgICAgICB9CisgICB9CisKKyAgIHN0YXRpYyB7CisgICAgaWYgKFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpPT1udWxsKSB7CisgICAgICAgIFN5c3RlbS5zZXRQcm9wZXJ0eSgiYmFzZWRpciIsU3lzdGVtLmdldFByb3BlcnR5KCJ1c2VyLmRpciIpKTsKKyAgICB9CisgICAgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9DcmVhdGVFeGNsQzE0bkludGVyb3BWYWx1ZXMuamF2YSBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9DcmVhdGVFeGNsQzE0bkludGVyb3BWYWx1ZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWY0M2IwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L0NyZWF0ZUV4Y2xDMTRuSW50ZXJvcFZhbHVlcy5qYXZhCkBAIC0wLDAgKzEsNTAyIEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0OworCisKK2ltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVPdXRwdXRTdHJlYW07CisKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXI7CitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5PYmplY3RDb250YWluZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybXM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5wYXJhbXMuSW5jbHVzaXZlTmFtZXNwYWNlczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLnBhcmFtcy5YUGF0aENvbnRhaW5lcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5KYXZhVXRpbHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CisKKworLyoqCisgKiBDbGFzcyBDcmVhdGVFeGNsQzE0bkludGVyb3BWYWx1ZXMKKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKiBAdmVyc2lvbiAkUmV2aXNpb24kCisgKi8KK3B1YmxpYyBjbGFzcyBDcmVhdGVFeGNsQzE0bkludGVyb3BWYWx1ZXMgeworCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWluCisgICAgKgorICAgICogQHBhcmFtIHVudXNlZAorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIHVudXNlZFtdKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuSW5pdC5pbml0KCk7CisKKyAgICAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCisgICAgICBkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisKKyAgICAgIERvY3VtZW50QnVpbGRlciBkYiA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKKyAgICAgIERvY3VtZW50IGRvYyA9IGRiLm5ld0RvY3VtZW50KCk7CisgICAgICBTdHJpbmcgZGlyZWN0b3J5ID0gImRhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9vdXRFeGNsLyI7CisgICAgICBGaWxlIHNpZ25hdHVyZUZpbGUgPSBuZXcgRmlsZShkaXJlY3RvcnkgKyAiYXBhY2hlU2lnbmF0dXJlLnhtbCIpOworICAgICAgWE1MU2lnbmF0dXJlIHhtbFNpZ25hdHVyZSA9IG5ldyBYTUxTaWduYXR1cmUoZG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZUZpbGUudG9VUkwoKS50b1N0cmluZygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTFNpZ25hdHVyZS5BTEdPX0lEX01BQ19ITUFDX1NIQTEpOworCisgICAgICBkb2MuYXBwZW5kQ2hpbGQoeG1sU2lnbmF0dXJlLmdldEVsZW1lbnQoKSk7CisKKyAgICAgIHsKKworICAgICAgICAgLy8gcmVmIDAKKyAgICAgICAgIFRyYW5zZm9ybXMgdGYgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICAgICB7CisgICAgICAgICAgICBYUGF0aENvbnRhaW5lciB4YyA9IG5ldyBYUGF0aENvbnRhaW5lcihkb2MpOworCisgICAgICAgICAgICB4Yy5zZXRYUGF0aCgKKyAgICAgICAgICAgICAgICJzZWxmOjpQYXJlbnQgb3IgKHBhcmVudDo6UGFyZW50IGFuZCBub3Qoc2VsZjo6Q2hpbGQpKSBvciBzZWxmOjpHcmFuZENoaWxkIG9yIHBhcmVudDo6R3JhbmRDaGlsZCIpOworICAgICAgICAgICAgdGYuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRILCB4Yy5nZXRFbGVtZW50KCkpOworICAgICAgICAgfQorCisgICAgICAgICB4bWxTaWduYXR1cmUuYWRkRG9jdW1lbnQoImlhaWtUZXN0cy5leGFtcGxlMS54bWwiLCB0Zik7CisgICAgICB9CisKKyAgICAgIHsKKworICAgICAgICAgLy8gcmVmIDEKKyAgICAgICAgIFRyYW5zZm9ybXMgdGYgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICAgICB7CisgICAgICAgICAgICBYUGF0aENvbnRhaW5lciB4YyA9IG5ldyBYUGF0aENvbnRhaW5lcihkb2MpOworCisgICAgICAgICAgICB4Yy5zZXRYUGF0aCgKKyAgICAgICAgICAgICAgICJzZWxmOjpQYXJlbnQgb3IgKHBhcmVudDo6UGFyZW50IGFuZCBub3Qoc2VsZjo6Q2hpbGQpKSBvciBzZWxmOjpHcmFuZENoaWxkIG9yIHBhcmVudDo6R3JhbmRDaGlsZCIpOworICAgICAgICAgICAgdGYuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRILCB4Yy5nZXRFbGVtZW50KCkpOworICAgICAgICAgfQorCisgICAgICAgICB0Zi5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fQzE0Tl9FWENMX09NSVRfQ09NTUVOVFMpOworICAgICAgICAgeG1sU2lnbmF0dXJlLmFkZERvY3VtZW50KCJpYWlrVGVzdHMuZXhhbXBsZTEueG1sIiwgdGYpOworICAgICAgfQorCisgICAgICB7CisKKyAgICAgICAgIC8vIHJlZiAyCisgICAgICAgICBUcmFuc2Zvcm1zIHRmID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKworICAgICAgICAgeworICAgICAgICAgICAgWFBhdGhDb250YWluZXIgeGMgPSBuZXcgWFBhdGhDb250YWluZXIoZG9jKTsKKworICAgICAgICAgICAgeGMuc2V0WFBhdGhOYW1lc3BhY2VDb250ZXh0KCJ4bWxuczpkZWZhdWx0IiwgImh0dHA6Ly9leGFtcGxlLm9yZyIpOworICAgICAgICAgICAgeGMuc2V0WFBhdGgoCisgICAgICAgICAgICAgICAic2VsZjo6UGFyZW50IG9yIChwYXJlbnQ6OlBhcmVudCBhbmQgbm90KHNlbGY6OmRlZmF1bHQ6Q2hpbGQpKSBvciBzZWxmOjpHcmFuZENoaWxkIG9yIHBhcmVudDo6R3JhbmRDaGlsZCIpOworICAgICAgICAgICAgdGYuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRILCB4Yy5nZXRFbGVtZW50KCkpOworICAgICAgICAgfQorCisgICAgICAgICB4bWxTaWduYXR1cmUuYWRkRG9jdW1lbnQoImlhaWtUZXN0cy5leGFtcGxlMi54bWwiLCB0Zik7CisgICAgICB9CisKKyAgICAgIHsKKworICAgICAgICAgLy8gcmVmIDMKKyAgICAgICAgIFRyYW5zZm9ybXMgdGYgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICAgICB7CisgICAgICAgICAgICBYUGF0aENvbnRhaW5lciB4YyA9IG5ldyBYUGF0aENvbnRhaW5lcihkb2MpOworCisgICAgICAgICAgICB4Yy5zZXRYUGF0aE5hbWVzcGFjZUNvbnRleHQoInhtbG5zOmRlZmF1bHQiLCAiaHR0cDovL2V4YW1wbGUub3JnIik7CisgICAgICAgICAgICB4Yy5zZXRYUGF0aCgKKyAgICAgICAgICAgICAgICJzZWxmOjpQYXJlbnQgb3IgKHBhcmVudDo6UGFyZW50IGFuZCBub3Qoc2VsZjo6ZGVmYXVsdDpDaGlsZCkpIG9yIHNlbGY6OkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpHcmFuZENoaWxkIik7CisgICAgICAgICAgICB0Zi5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgsIHhjLmdldEVsZW1lbnQoKSk7CisgICAgICAgICB9CisKKyAgICAgICAgIHRmLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9DMTROX0VYQ0xfT01JVF9DT01NRU5UUyk7CisgICAgICAgICB4bWxTaWduYXR1cmUuYWRkRG9jdW1lbnQoImlhaWtUZXN0cy5leGFtcGxlMi54bWwiLCB0Zik7CisgICAgICB9CisKKyAgICAgIHsKKworICAgICAgICAgLy8gcmVmIDQKKyAgICAgICAgIFRyYW5zZm9ybXMgdGYgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICAgICB7CisgICAgICAgICAgICBYUGF0aENvbnRhaW5lciB4YyA9IG5ldyBYUGF0aENvbnRhaW5lcihkb2MpOworCisgICAgICAgICAgICB4Yy5zZXRYUGF0aE5hbWVzcGFjZUNvbnRleHQoInhtbG5zOmRlZmF1bHQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vZXhhbXBsZS5vcmcvZGVmYXVsdCIpOworICAgICAgICAgICAgeGMuc2V0WFBhdGhOYW1lc3BhY2VDb250ZXh0KCJ4bWxuczpuczEiLCAiaHR0cDovL2V4YW1wbGUub3JnL25zMSIpOworICAgICAgICAgICAgeGMuc2V0WFBhdGgoCisgICAgICAgICAgICAgICAic2VsZjo6ZGVmYXVsdDpQYXJlbnQgb3IgKHBhcmVudDo6ZGVmYXVsdDpQYXJlbnQgYW5kIG5vdChzZWxmOjpkZWZhdWx0OkNoaWxkKSkgb3Igc2VsZjo6bnMxOkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpuczE6R3JhbmRDaGlsZCBvciBzZWxmOjpkZWZhdWx0OkdyYW5kQ2hpbGQgb3IgcGFyZW50OjpkZWZhdWx0OkdyYW5kQ2hpbGQiKTsKKyAgICAgICAgICAgIHRmLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSCwgeGMuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgIH0KKworICAgICAgICAgeG1sU2lnbmF0dXJlLmFkZERvY3VtZW50KCJpYWlrVGVzdHMuZXhhbXBsZTMueG1sIiwgdGYpOworICAgICAgfQorCisgICAgICB7CisKKyAgICAgICAgIC8vIHJlZiA1CisgICAgICAgICBUcmFuc2Zvcm1zIHRmID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKworICAgICAgICAgeworICAgICAgICAgICAgWFBhdGhDb250YWluZXIgeGMgPSBuZXcgWFBhdGhDb250YWluZXIoZG9jKTsKKworICAgICAgICAgICAgeGMuc2V0WFBhdGhOYW1lc3BhY2VDb250ZXh0KCJ4bWxuczpkZWZhdWx0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL2V4YW1wbGUub3JnL2RlZmF1bHQiKTsKKyAgICAgICAgICAgIHhjLnNldFhQYXRoTmFtZXNwYWNlQ29udGV4dCgieG1sbnM6bnMxIiwgImh0dHA6Ly9leGFtcGxlLm9yZy9uczEiKTsKKyAgICAgICAgICAgIHhjLnNldFhQYXRoKAorICAgICAgICAgICAgICAgInNlbGY6OmRlZmF1bHQ6UGFyZW50IG9yIChwYXJlbnQ6OmRlZmF1bHQ6UGFyZW50IGFuZCBub3Qoc2VsZjo6ZGVmYXVsdDpDaGlsZCkpIG9yIHNlbGY6Om5zMTpHcmFuZENoaWxkIG9yIHBhcmVudDo6bnMxOkdyYW5kQ2hpbGQgb3Igc2VsZjo6ZGVmYXVsdDpHcmFuZENoaWxkIG9yIHBhcmVudDo6ZGVmYXVsdDpHcmFuZENoaWxkIik7CisgICAgICAgICAgICB0Zi5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgsIHhjLmdldEVsZW1lbnQoKSk7CisgICAgICAgICB9CisKKyAgICAgICAgIHRmLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9DMTROX0VYQ0xfT01JVF9DT01NRU5UUyk7CisgICAgICAgICB4bWxTaWduYXR1cmUuYWRkRG9jdW1lbnQoImlhaWtUZXN0cy5leGFtcGxlMy54bWwiLCB0Zik7CisgICAgICB9CisKKyAgICAgIHsKKworICAgICAgICAgLy8gcmVmIDYKKyAgICAgICAgIFRyYW5zZm9ybXMgdGYgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICAgICB7CisgICAgICAgICAgICBYUGF0aENvbnRhaW5lciB4YyA9IG5ldyBYUGF0aENvbnRhaW5lcihkb2MpOworCisgICAgICAgICAgICB4Yy5zZXRYUGF0aE5hbWVzcGFjZUNvbnRleHQoInhtbG5zOm5zMSIsICJodHRwOi8vZXhhbXBsZS5vcmcvbnMxIik7CisgICAgICAgICAgICB4Yy5zZXRYUGF0aCgKKyAgICAgICAgICAgICAgICJzZWxmOjpQYXJlbnQgb3IgKHBhcmVudDo6UGFyZW50IGFuZCBub3Qoc2VsZjo6Q2hpbGQpKSBvciBzZWxmOjpuczE6R3JhbmRDaGlsZCBvciBwYXJlbnQ6Om5zMTpHcmFuZENoaWxkIik7CisgICAgICAgICAgICB0Zi5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgsIHhjLmdldEVsZW1lbnQoKSk7CisgICAgICAgICB9CisKKyAgICAgICAgIHhtbFNpZ25hdHVyZS5hZGREb2N1bWVudCgiaWFpa1Rlc3RzLmV4YW1wbGU0LnhtbCIsIHRmKTsKKyAgICAgIH0KKworICAgICAgeworCisgICAgICAgICAvLyByZWYgNworICAgICAgICAgVHJhbnNmb3JtcyB0ZiA9IG5ldyBUcmFuc2Zvcm1zKGRvYyk7CisKKyAgICAgICAgIHsKKyAgICAgICAgICAgIFhQYXRoQ29udGFpbmVyIHhjID0gbmV3IFhQYXRoQ29udGFpbmVyKGRvYyk7CisKKyAgICAgICAgICAgIHhjLnNldFhQYXRoTmFtZXNwYWNlQ29udGV4dCgieG1sbnM6bnMxIiwgImh0dHA6Ly9leGFtcGxlLm9yZy9uczEiKTsKKyAgICAgICAgICAgIHhjLnNldFhQYXRoKAorICAgICAgICAgICAgICAgInNlbGY6OlBhcmVudCBvciAocGFyZW50OjpQYXJlbnQgYW5kIG5vdChzZWxmOjpDaGlsZCkpIG9yIHNlbGY6Om5zMTpHcmFuZENoaWxkIG9yIHBhcmVudDo6bnMxOkdyYW5kQ2hpbGQiKTsKKyAgICAgICAgICAgIHRmLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSCwgeGMuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgIH0KKworICAgICAgICAgeworICAgICAgICAgICAgSW5jbHVzaXZlTmFtZXNwYWNlcyBpbmNOUyA9IG5ldyBJbmNsdXNpdmVOYW1lc3BhY2VzKGRvYywgIm5zMiIpOworCisgICAgICAgICAgICB0Zi5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fQzE0Tl9FWENMX09NSVRfQ09NTUVOVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jTlMuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgIH0KKworICAgICAgICAgeG1sU2lnbmF0dXJlLmFkZERvY3VtZW50KCJpYWlrVGVzdHMuZXhhbXBsZTQueG1sIiwgdGYpOworICAgICAgfQorCisgICAgICB7CisKKyAgICAgICAgIC8vIHJlZiA4CisgICAgICAgICBPYmplY3RDb250YWluZXIgb2JqID0gbmV3IE9iamVjdENvbnRhaW5lcihkb2MpOworICAgICAgICAgU3RyaW5nIGlkID0gIm9iamVjdDEiOworCisgICAgICAgICBvYmouc2V0SWQoaWQpOworCisgICAgICAgICBTdHJpbmcgeG1sU3RyID0gIiIgKyAiPGluY2x1ZGVkICAgIHhtbDpsYW5nPSdkZSc+IiArICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICArICI8bm90SW5jbHVkZWQgeG1sOmxhbmc9J2RlJz4iICsgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICsgIjxub3RJbmNsdWRlZCB4bWw6bGFuZz0ndWsnPiIgKyAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgKyAiPGluY2x1ZGVkICAgICAgICAgICAgICAgICA+IiArICJcbiIgKyAiPC9pbmNsdWRlZD4iCisgICAgICAgICAgICAgICAgICAgICAgICAgKyAiXG4iICsgIjwvbm90SW5jbHVkZWQ+IiArICJcbiIgKyAiPC9ub3RJbmNsdWRlZD4iCisgICAgICAgICAgICAgICAgICAgICAgICAgKyAiXG4iICsgIjwvaW5jbHVkZWQ+IjsKKyAgICAgICAgIERvY3VtZW50IGltcG9ydERvYyA9CisgICAgICAgICAgICBkYi5wYXJzZShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oeG1sU3RyLmdldEJ5dGVzKCkpKTsKKworICAgICAgICAgb2JqLmdldEVsZW1lbnQoKS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuIikpOworICAgICAgICAgb2JqLmdldEVsZW1lbnQoKQorICAgICAgICAgICAgLmFwcGVuZENoaWxkKGRvYy5pbXBvcnROb2RlKGltcG9ydERvYy5nZXREb2N1bWVudEVsZW1lbnQoKSwgdHJ1ZSkpOworICAgICAgICAgb2JqLmdldEVsZW1lbnQoKS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuIikpOworICAgICAgICAgeG1sU2lnbmF0dXJlLmFwcGVuZE9iamVjdChvYmopOworCisgICAgICAgICAvLyByZWYgYXBhY2hlXzgKKyAgICAgICAgIFRyYW5zZm9ybXMgdGYgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICAgICB7CisgICAgICAgICAgICBYUGF0aENvbnRhaW5lciB4YyA9IG5ldyBYUGF0aENvbnRhaW5lcihkb2MpOworCisgICAgICAgICAgICB4Yy5zZXRYUGF0aCgic2VsZjo6bm9kZSgpW2xvY2FsLW5hbWUoKT0naW5jbHVkZWQnXSIpOworICAgICAgICAgICAgdGYuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRILCB4Yy5nZXRFbGVtZW50KCkpOworICAgICAgICAgfQorCisgICAgICAgICB4bWxTaWduYXR1cmUuYWRkRG9jdW1lbnQoIiMiICsgaWQsIHRmKTsKKyAgICAgIH0KKworICAgICAgeworCisgICAgICAgICAvLyByZWYgOQorICAgICAgICAgT2JqZWN0Q29udGFpbmVyIG9iaiA9IG5ldyBPYmplY3RDb250YWluZXIoZG9jKTsKKyAgICAgICAgIFN0cmluZyBpZCA9ICJvYmplY3QyIjsKKworICAgICAgICAgb2JqLnNldElkKGlkKTsKKworICAgICAgICAgU3RyaW5nIHhtbFN0ciA9ICIiICsgIjxpbmNsdWRlZCAgICB4bWw6bGFuZz0ndWsnPiIgKyAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgKyAiPG5vdEluY2x1ZGVkIHhtbDpsYW5nPSdkZSc+IiArICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICArICI8bm90SW5jbHVkZWQgeG1sOmxhbmc9J3VrJz4iICsgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICsgIjxpbmNsdWRlZCAgICAgICAgICAgICAgICAgPiIgKyAiXG4iICsgIjwvaW5jbHVkZWQ+IgorICAgICAgICAgICAgICAgICAgICAgICAgICsgIlxuIiArICI8L25vdEluY2x1ZGVkPiIgKyAiXG4iICsgIjwvbm90SW5jbHVkZWQ+IgorICAgICAgICAgICAgICAgICAgICAgICAgICsgIlxuIiArICI8L2luY2x1ZGVkPiI7CisgICAgICAgICBEb2N1bWVudCBpbXBvcnREb2MgPQorICAgICAgICAgICAgZGIucGFyc2UobmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKHhtbFN0ci5nZXRCeXRlcygpKSk7CisKKyAgICAgICAgIG9iai5nZXRFbGVtZW50KCkuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJcbiIpKTsKKyAgICAgICAgIG9iai5nZXRFbGVtZW50KCkKKyAgICAgICAgICAgIC5hcHBlbmRDaGlsZChkb2MuaW1wb3J0Tm9kZShpbXBvcnREb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCksIHRydWUpKTsKKyAgICAgICAgIG9iai5nZXRFbGVtZW50KCkuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJcbiIpKTsKKyAgICAgICAgIHhtbFNpZ25hdHVyZS5hcHBlbmRPYmplY3Qob2JqKTsKKworICAgICAgICAgLy8gcmVmIGFwYWNoZV84CisgICAgICAgICBUcmFuc2Zvcm1zIHRmID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKworICAgICAgICAgeworICAgICAgICAgICAgWFBhdGhDb250YWluZXIgeGMgPSBuZXcgWFBhdGhDb250YWluZXIoZG9jKTsKKworICAgICAgICAgICAgeGMuc2V0WFBhdGgoInNlbGY6Om5vZGUoKVtsb2NhbC1uYW1lKCk9J2luY2x1ZGVkJ10iKTsKKyAgICAgICAgICAgIHRmLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSCwgeGMuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgIH0KKworICAgICAgICAgeG1sU2lnbmF0dXJlLmFkZERvY3VtZW50KCIjIiArIGlkLCB0Zik7CisgICAgICB9CisKKyAgICAgIHsKKworICAgICAgICAgLy8gcmVmIDEwCisgICAgICAgICBPYmplY3RDb250YWluZXIgb2JqID0gbmV3IE9iamVjdENvbnRhaW5lcihkb2MpOworICAgICAgICAgU3RyaW5nIGlkID0gIm9iamVjdDMiOworCisgICAgICAgICBvYmouc2V0SWQoaWQpOworCisgICAgICAgICBTdHJpbmcgeG1sU3RyID0gIiIgKyAiPGluY2x1ZGVkICAgIHhtbDpsYW5nPSdkZSc+IiArICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICArICI8bm90SW5jbHVkZWQgeG1sOmxhbmc9J2RlJz4iICsgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICsgIjxub3RJbmNsdWRlZCB4bWw6bGFuZz0ndWsnPiIgKyAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgKyAiPGluY2x1ZGVkICAgIHhtbDpsYW5nPSdkZSc+IiArICJcbiIgKyAiPC9pbmNsdWRlZD4iCisgICAgICAgICAgICAgICAgICAgICAgICAgKyAiXG4iICsgIjwvbm90SW5jbHVkZWQ+IiArICJcbiIgKyAiPC9ub3RJbmNsdWRlZD4iCisgICAgICAgICAgICAgICAgICAgICAgICAgKyAiXG4iICsgIjwvaW5jbHVkZWQ+IjsKKyAgICAgICAgIERvY3VtZW50IGltcG9ydERvYyA9CisgICAgICAgICAgICBkYi5wYXJzZShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oeG1sU3RyLmdldEJ5dGVzKCkpKTsKKworICAgICAgICAgb2JqLmdldEVsZW1lbnQoKS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuIikpOworICAgICAgICAgb2JqLmdldEVsZW1lbnQoKQorICAgICAgICAgICAgLmFwcGVuZENoaWxkKGRvYy5pbXBvcnROb2RlKGltcG9ydERvYy5nZXREb2N1bWVudEVsZW1lbnQoKSwgdHJ1ZSkpOworICAgICAgICAgb2JqLmdldEVsZW1lbnQoKS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuIikpOworICAgICAgICAgeG1sU2lnbmF0dXJlLmFwcGVuZE9iamVjdChvYmopOworCisgICAgICAgICAvLyByZWYgYXBhY2hlXzgKKyAgICAgICAgIFRyYW5zZm9ybXMgdGYgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICAgICB7CisgICAgICAgICAgICBYUGF0aENvbnRhaW5lciB4YyA9IG5ldyBYUGF0aENvbnRhaW5lcihkb2MpOworCisgICAgICAgICAgICB4Yy5zZXRYUGF0aCgic2VsZjo6bm9kZSgpW2xvY2FsLW5hbWUoKT0naW5jbHVkZWQnXSIpOworICAgICAgICAgICAgdGYuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRILCB4Yy5nZXRFbGVtZW50KCkpOworICAgICAgICAgfQorCisgICAgICAgICB4bWxTaWduYXR1cmUuYWRkRG9jdW1lbnQoIiMiICsgaWQsIHRmKTsKKyAgICAgIH0KKworICAgICAgeworCisgICAgICAgICAvLyByZWYgMTEKKyAgICAgICAgIE9iamVjdENvbnRhaW5lciBvYmogPSBuZXcgT2JqZWN0Q29udGFpbmVyKGRvYyk7CisgICAgICAgICBTdHJpbmcgaWQgPSAib2JqZWN0NCI7CisKKyAgICAgICAgIG9iai5zZXRJZChpZCk7CisKKyAgICAgICAgIFN0cmluZyB4bWxTdHIgPSAiIiArICI8aW5jbHVkZWQgICAgeG1sOmxhbmc9J2RlJz4iICsgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICsgIjxpbmNsdWRlZCAgICB4bWw6bGFuZz0nZGUnPiIgKyAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgKyAiPG5vdEluY2x1ZGVkIHhtbDpsYW5nPSd1ayc+IiArICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICArICI8aW5jbHVkZWQgICAgICAgICAgICAgICAgID4iICsgIlxuIiArICI8L2luY2x1ZGVkPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICArICJcbiIgKyAiPC9ub3RJbmNsdWRlZD4iICsgIlxuIiArICI8L2luY2x1ZGVkPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICArICJcbiIgKyAiPC9pbmNsdWRlZD4iOworICAgICAgICAgRG9jdW1lbnQgaW1wb3J0RG9jID0KKyAgICAgICAgICAgIGRiLnBhcnNlKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbSh4bWxTdHIuZ2V0Qnl0ZXMoKSkpOworCisgICAgICAgICBvYmouZ2V0RWxlbWVudCgpLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG4iKSk7CisgICAgICAgICBvYmouZ2V0RWxlbWVudCgpCisgICAgICAgICAgICAuYXBwZW5kQ2hpbGQoZG9jLmltcG9ydE5vZGUoaW1wb3J0RG9jLmdldERvY3VtZW50RWxlbWVudCgpLCB0cnVlKSk7CisgICAgICAgICBvYmouZ2V0RWxlbWVudCgpLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG4iKSk7CisgICAgICAgICB4bWxTaWduYXR1cmUuYXBwZW5kT2JqZWN0KG9iaik7CisKKyAgICAgICAgIFRyYW5zZm9ybXMgdGYgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICAgICB7CisgICAgICAgICAgICBYUGF0aENvbnRhaW5lciB4YyA9IG5ldyBYUGF0aENvbnRhaW5lcihkb2MpOworCisgICAgICAgICAgICB4Yy5zZXRYUGF0aCgic2VsZjo6bm9kZSgpW2xvY2FsLW5hbWUoKT0naW5jbHVkZWQnXSIpOworICAgICAgICAgICAgdGYuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRILCB4Yy5nZXRFbGVtZW50KCkpOworICAgICAgICAgfQorCisgICAgICAgICB4bWxTaWduYXR1cmUuYWRkRG9jdW1lbnQoIiMiICsgaWQsIHRmKTsKKyAgICAgIH0KKworICAgICAgeworCisgICAgICAgICAvLyByZWYgMTIKKyAgICAgICAgIE9iamVjdENvbnRhaW5lciBvYmogPSBuZXcgT2JqZWN0Q29udGFpbmVyKGRvYyk7CisgICAgICAgICBTdHJpbmcgaWQgPSAib2JqZWN0NSI7CisKKyAgICAgICAgIG9iai5zZXRJZChpZCk7CisKKyAgICAgICAgIFN0cmluZyB4bWxTdHIgPSAiIiArICI8aW5jbHVkZWQgICAgICAgICAgICAgICAgICAgICAgICAgeG1sOmxhbmc9J2RlJz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgKyAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgKyAiPGluY2x1ZGVkICAgICAgICAgICAgICAgICAgICAgICAgIHhtbDpsYW5nPSdkZSc+IgorICAgICAgICAgICAgICAgICAgICAgICAgICsgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICsgIjxub3RJbmNsdWRlZCB4bWw6c3BhY2U9J3ByZXNlcnZlJyB4bWw6bGFuZz0ndWsnPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICArICJcbiIgKyAiPGluY2x1ZGVkICAgICAgICAgICAgICAgICA+IiArICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICArICI8L2luY2x1ZGVkPiIgKyAiXG4iICsgIjwvbm90SW5jbHVkZWQ+IiArICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICArICI8L2luY2x1ZGVkPiIgKyAiXG4iICsgIjwvaW5jbHVkZWQ+IjsKKyAgICAgICAgIERvY3VtZW50IGltcG9ydERvYyA9CisgICAgICAgICAgICBkYi5wYXJzZShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oeG1sU3RyLmdldEJ5dGVzKCkpKTsKKworICAgICAgICAgb2JqLmdldEVsZW1lbnQoKS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuIikpOworICAgICAgICAgb2JqLmdldEVsZW1lbnQoKQorICAgICAgICAgICAgLmFwcGVuZENoaWxkKGRvYy5pbXBvcnROb2RlKGltcG9ydERvYy5nZXREb2N1bWVudEVsZW1lbnQoKSwgdHJ1ZSkpOworICAgICAgICAgb2JqLmdldEVsZW1lbnQoKS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoIlxuIikpOworICAgICAgICAgeG1sU2lnbmF0dXJlLmFwcGVuZE9iamVjdChvYmopOworCisgICAgICAgICBUcmFuc2Zvcm1zIHRmID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKworICAgICAgICAgeworICAgICAgICAgICAgWFBhdGhDb250YWluZXIgeGMgPSBuZXcgWFBhdGhDb250YWluZXIoZG9jKTsKKworICAgICAgICAgICAgeGMuc2V0WFBhdGgoInNlbGY6Om5vZGUoKVtsb2NhbC1uYW1lKCk9J2luY2x1ZGVkJ10iKTsKKyAgICAgICAgICAgIHRmLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSCwgeGMuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgIH0KKworICAgICAgICAgeG1sU2lnbmF0dXJlLmFkZERvY3VtZW50KCIjIiArIGlkLCB0Zik7CisgICAgICB9CisKKyAgICAgIHsKKworICAgICAgICAgLy8gcmVmIDEzCisgICAgICAgICBPYmplY3RDb250YWluZXIgb2JqID0gbmV3IE9iamVjdENvbnRhaW5lcihkb2MpOworICAgICAgICAgU3RyaW5nIGlkID0gIm9iamVjdDYiOworCisgICAgICAgICBvYmouc2V0SWQoaWQpOworCisgICAgICAgICBTdHJpbmcgeG1sU3RyID0gIiIgKyAiPGluY2x1ZGVkICAgeG1sOnNwYWNlPSdwcmVzZXJ2ZScgIHhtbDpsYW5nPSdkZSc+IgorICAgICAgICAgICAgICAgICAgICAgICAgICsgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICsgIjxpbmNsdWRlZCAgICAgICAgICAgICAgICAgICAgICAgICB4bWw6bGFuZz0nZGUnPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICArICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICArICI8bm90SW5jbHVkZWQgICAgICAgICAgICAgICAgICAgICAgeG1sOmxhbmc9J3VrJz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgKyAiXG4iICsgIjxpbmNsdWRlZD4iICsgIlxuIiArICI8L2luY2x1ZGVkPiIgKyAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgKyAiPC9ub3RJbmNsdWRlZD4iICsgIlxuIiArICI8L2luY2x1ZGVkPiIgKyAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgKyAiPC9pbmNsdWRlZD4iOworICAgICAgICAgRG9jdW1lbnQgaW1wb3J0RG9jID0KKyAgICAgICAgICAgIGRiLnBhcnNlKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbSh4bWxTdHIuZ2V0Qnl0ZXMoKSkpOworCisgICAgICAgICBvYmouZ2V0RWxlbWVudCgpLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG4iKSk7CisgICAgICAgICBvYmouZ2V0RWxlbWVudCgpCisgICAgICAgICAgICAuYXBwZW5kQ2hpbGQoZG9jLmltcG9ydE5vZGUoaW1wb3J0RG9jLmdldERvY3VtZW50RWxlbWVudCgpLCB0cnVlKSk7CisgICAgICAgICBvYmouZ2V0RWxlbWVudCgpLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiXG4iKSk7CisgICAgICAgICB4bWxTaWduYXR1cmUuYXBwZW5kT2JqZWN0KG9iaik7CisKKyAgICAgICAgIFRyYW5zZm9ybXMgdGYgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCisgICAgICAgICB7CisgICAgICAgICAgICBYUGF0aENvbnRhaW5lciB4YyA9IG5ldyBYUGF0aENvbnRhaW5lcihkb2MpOworCisgICAgICAgICAgICB4Yy5zZXRYUGF0aCgic2VsZjo6bm9kZSgpW2xvY2FsLW5hbWUoKT0naW5jbHVkZWQnXSIpOworICAgICAgICAgICAgdGYuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRILCB4Yy5nZXRFbGVtZW50KCkpOworICAgICAgICAgfQorCisgICAgICAgICB4bWxTaWduYXR1cmUuYWRkRG9jdW1lbnQoIiMiICsgaWQsIHRmKTsKKyAgICAgIH0KKworICAgICAgeworCisgICAgICAgICAvLyByZWYgMTNiCisgICAgICAgICBTdHJpbmcgaWQgPSAib2JqZWN0NiI7CisgICAgICAgICBUcmFuc2Zvcm1zIHRmID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKworICAgICAgICAgeworICAgICAgICAgICAgWFBhdGhDb250YWluZXIgeGMgPSBuZXcgWFBhdGhDb250YWluZXIoZG9jKTsKKworICAgICAgICAgICAgeGMuc2V0WFBhdGgoInNlbGY6Om5vZGUoKVtsb2NhbC1uYW1lKCk9J2luY2x1ZGVkJ10iKTsKKyAgICAgICAgICAgIHRmLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSCwgeGMuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgICAgIHRmLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9DMTROX09NSVRfQ09NTUVOVFMpOworICAgICAgICAgfQorCisgICAgICAgICB4bWxTaWduYXR1cmUuYWRkRG9jdW1lbnQoIiMiICsgaWQsIHRmKTsKKyAgICAgIH0KKworICAgICAgeworCisgICAgICAgICAvLyByZWYgMTNjCisgICAgICAgICBTdHJpbmcgaWQgPSAib2JqZWN0NiI7CisgICAgICAgICBUcmFuc2Zvcm1zIHRmID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKworICAgICAgICAgeworICAgICAgICAgICAgWFBhdGhDb250YWluZXIgeGMgPSBuZXcgWFBhdGhDb250YWluZXIoZG9jKTsKKworICAgICAgICAgICAgeGMuc2V0WFBhdGgoInNlbGY6Om5vZGUoKVtsb2NhbC1uYW1lKCk9J2luY2x1ZGVkJ10iKTsKKyAgICAgICAgICAgIHRmLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSCwgeGMuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgICAgIHRmLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9DMTROX09NSVRfQ09NTUVOVFMpOworICAgICAgICAgICAgdGYuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX0MxNE5fT01JVF9DT01NRU5UUyk7CisgICAgICAgICB9CisKKyAgICAgICAgIHhtbFNpZ25hdHVyZS5hZGREb2N1bWVudCgiIyIgKyBpZCwgdGYpOworICAgICAgICAgLy8geG1sU2lnbmF0dXJlLmFkZERvY3VtZW50KCIjIiArIGlkLCB0Ziwgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYWxnb3JpdGhtcy5NZXNzYWdlRGlnZXN0QWxnb3JpdGhtLkFMR09fSURfRElHRVNUX1NIQTEsICJyZWYxM2MiLCBudWxsKTsKKyAgICAgIH0KKworICAgICAgU3RyaW5nIHNlY3JldEtleSA9ICJzZWNyZXQiOworCisgICAgICB4bWxTaWduYXR1cmUuZ2V0S2V5SW5mbygpLmFkZEtleU5hbWUoIlRoZSBVVEYtOCBvY3RldHMgb2YgXCIiICsgc2VjcmV0S2V5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiXCIgYXJlIHVzZWQgZm9yIHNpZ25pbmcgKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHNlY3JldEtleS5sZW5ndGgoKSArICIgb2N0ZXRzKSIpOworICAgICAgeG1sU2lnbmF0dXJlLnNpZ24oeG1sU2lnbmF0dXJlLmNyZWF0ZVNlY3JldEtleShzZWNyZXRLZXkuZ2V0Qnl0ZXMoKSkpOworCisgICAgICBGaWxlT3V0cHV0U3RyZWFtIGZvcyA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKHNpZ25hdHVyZUZpbGUpOworCisgICAgICBYTUxVdGlscy5vdXRwdXRET00oZG9jLCBmb3MpOworICAgICAgZm9zLmNsb3NlKCk7CisKKyAgICAgIGludCBsZW5ndGggPSB4bWxTaWduYXR1cmUuZ2V0U2lnbmVkSW5mbygpLmdldExlbmd0aCgpOworCisgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgICBTdHJpbmcgZm5hbWUgPSBkaXJlY3RvcnkgKyAiYzE0bi0iICsgaSArICItYXBhY2hlLnhtbCI7CisKKyAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihmbmFtZSk7CisgICAgICAgICBKYXZhVXRpbHMud3JpdGVCeXRlc1RvRmlsZW5hbWUoZm5hbWUsIHhtbFNpZ25hdHVyZS5nZXRTaWduZWRJbmZvKCkuZ2V0UmVmZXJlbmNlZENvbnRlbnRBZnRlclRyYW5zZm9ybXNJdGVtKGkpLmdldEJ5dGVzKCkpOworICAgICAgfQorCisgICAgICBYTUxTaWduYXR1cmUgcyA9IG5ldyBYTUxTaWduYXR1cmUoZG9jLmdldERvY3VtZW50RWxlbWVudCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZUZpbGUudG9VUkwoKS50b1N0cmluZygpKTsKKyAgICAgIGJvb2xlYW4gdmVyaWZ5ID0KKyAgICAgICAgIHMuY2hlY2tTaWduYXR1cmVWYWx1ZShzLmNyZWF0ZVNlY3JldEtleSgic2VjcmV0Ii5nZXRCeXRlcygpKSk7CisKKyAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigidmVyaWZ5PSIgKyB2ZXJpZnkpOworCisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOworCisgICAgICBYTUxVdGlscy5vdXRwdXRET01jMTRuV2l0aENvbW1lbnRzKGRvYywgU3lzdGVtLm91dCk7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvRW5jcnlwdGlvblRlc3QuamF2YSBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9FbmNyeXB0aW9uVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2M2QzMWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvRW5jcnlwdGlvblRlc3QuamF2YQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IDIwMDMtMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisKK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdDsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOworaW1wb3J0IGp1bml0LnRleHR1aS5UZXN0UnVubmVyOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5lbmNyeXB0aW9uLkJhbHRpbW9yZUVuY1Rlc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5lbmNyeXB0aW9uLkVuY3J5cHRDb250ZW50VGVzdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LmVuY3J5cHRpb24uWE1MQ2lwaGVyVGVzdGVyOworCisKK3B1YmxpYyBjbGFzcyBFbmNyeXB0aW9uVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKyAgICBwdWJsaWMgRW5jcnlwdGlvblRlc3QoU3RyaW5nIHRlc3QpIHsKKyAgICAgICBzdXBlcih0ZXN0KTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisJCW9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaW5pdCgpOworICAgICAgICAKKyAgICAgICAgcHJvY2Vzc0NtZExpbmVBcmdzKGFyZ3MpOworICAgICAgICBUZXN0UnVubmVyLnJ1bihzdWl0ZSgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKSB7CisgICAgICAgIFRlc3RTdWl0ZSBzdWl0ZSA9IG5ldyBUZXN0U3VpdGUoIkRPTSBYTUwgRW5jcnlwdGlvbiBUZXN0cyIpOworICAgICAgICBzdWl0ZS5hZGRUZXN0KG5ldyBUZXN0U3VpdGUoWE1MQ2lwaGVyVGVzdGVyLmNsYXNzKSk7CisgICAgICAgIHN1aXRlLmFkZFRlc3QobmV3IFRlc3RTdWl0ZShCYWx0aW1vcmVFbmNUZXN0LmNsYXNzKSk7CisgICAgICAgIHN1aXRlLmFkZFRlc3QobmV3IFRlc3RTdWl0ZShFbmNyeXB0Q29udGVudFRlc3QuY2xhc3MpKTsKKyAgICAgICAgcmV0dXJuIChzdWl0ZSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBwcm9jZXNzQ21kTGluZUFyZ3MoU3RyaW5nW10gYXJncykgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChhcmdzW2ldLnN0YXJ0c1dpdGgoIi1kIikpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgZG9jID0gYXJnc1tpXS5zdWJzdHJpbmcoMikudHJpbSgpOworICAgICAgICAgICAgICAgIFN5c3RlbS5zZXRQcm9wZXJ0eSgib3JnLmFwYWNoZS54bWwuZW5jLnRlc3QuZG9jIiwgZG9jKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYXJnc1tpXS5zdGFydHNXaXRoKCItZSIpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGVsZW0gPSBhcmdzW2ldLnN1YnN0cmluZygyKS50cmltKCk7CisgICAgICAgICAgICAgICAgU3lzdGVtLnNldFByb3BlcnR5KCJvcmcuYXBhY2hlLnhtbC5lbmMudGVzdC5lbGVtIiwgZWxlbSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGFyZ3NbaV0uc3RhcnRzV2l0aCgiLWkiKSkgeworICAgICAgICAgICAgICAgIFN0cmluZyBpZHggPSBhcmdzW2ldLnN1YnN0cmluZygyKS50cmltKCk7CisgICAgICAgICAgICAgICAgU3lzdGVtLnNldFByb3BlcnR5KCJvcmcuYXBhY2hlLnhtbC5lbmMudGVzdC5pZHgiLCBpZHgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvSW50ZXJvcFRlc3QuamF2YSBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9JbnRlcm9wVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllYzU0YWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvSW50ZXJvcFRlc3QuamF2YQpAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAzLTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0OworCisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKKworLyoqCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICovCisKK3B1YmxpYyBjbGFzcyBJbnRlcm9wVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKEludGVyb3BUZXN0LmNsYXNzLmdldE5hbWUoKSk7CisKKyAgIHB1YmxpYyBJbnRlcm9wVGVzdChTdHJpbmcgdGVzdCkgeworICAgICAgc3VwZXIodGVzdCk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHN1aXRlCisgICAgKgorICAgICoKKyAgICAqLworICAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkgeworCisgICAgICBUZXN0U3VpdGUgc3VpdGUgPQorICAgICAgICAgbmV3IFRlc3RTdWl0ZSgiQWxsIGludGVyb3BlcmFiaWxpdHkgdGVzdHMiKTsKKworICAgICAgLy9KLQorICAgICAgLy8gaW50ZXJvcGVyYWJpbGl0eSB0ZXN0cyB1c2luZyB0ZXN0IHZlY3RvcnMgZnJvbSBvdGhlciBpbXBsZW1lbnRhdGlvbnMKKyAgICAgIHN1aXRlLmFkZFRlc3Qob3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5pbnRlcm9wLkJhbHRpbW9yZVRlc3Quc3VpdGUoKSk7CisgICAgICBzdWl0ZS5hZGRUZXN0KG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QuaW50ZXJvcC5JQUlLVGVzdC5zdWl0ZSgpKTsKKyAgICAgIHN1aXRlLmFkZFRlc3Qob3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5pbnRlcm9wLlJTQVNlY3VyaXR5VGVzdC5zdWl0ZSgpKTsKKyAgICAgIHN1aXRlLmFkZFRlc3Qob3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5jMTRuLmltcGxlbWVudGF0aW9ucy5FeGNsdXNpdmVDMTROSW50ZXJvcC5zdWl0ZSgpKTsKKworICAgICAgeworICAgICAgICAgLyoKKyAgICAgICAgICAqIFRvIG1ha2UgaW50ZXJvcCBhZ2FpbnN0IHRoZSBJQk0geHNzNGogZXhhbXBsZXMsIGRvd25sb2FkIHRoZQorICAgICAgICAgICogWFNTNGogZnJvbSBodHRwOi8vd3d3LmFscGhhd29ya3MuaWJtLmNvbS90ZWNoL3htbHNlY3VyaXR5c3VpdGUKKyAgICAgICAgICAqIGFuZCBleHRyYWN0IHRoZSB0ZXN0IHNpZ25hdHVyZXMgZnJvbQorICAgICAgICAgICogeHNzNGotMjAwMzAxMjcuemlwIy94c3M0ai9kYXRhL2RzaWcKKyAgICAgICAgICAqIGluIHRoZSBkaXJlY3RvcnkKKyAgICAgICAgICAqIGRhdGEvY29tL2libS94c3M0ai0yMDAzMDEyNy8KKyAgICAgICAgICAqIHRoZW4gdGhlIGludGVyb3AgdGVzdCBpcyBwZXJmb3JtZWQgYWdhaW5zdCB0aGVzZSB2YWx1ZXMsIHRvby4KKyAgICAgICAgICAqLworICAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0gImRhdGEvY29tL2libS94c3M0ai0yMDAxMTAyOS9lbnZlbG9wZWQtcnNhLnNpZyI7CisgICAgICAgICBGaWxlIGYgPSBuZXcgRmlsZShmaWxlbmFtZSk7CisgICAgICAgICBpZiAoZi5leGlzdHMoKSkgeworICAgICAgICAgICAgc3VpdGUuYWRkVGVzdChvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LmludGVyb3AuSUJNVGVzdC5zdWl0ZSgpKTsKKyAgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgLy9KKworICAgICAgcmV0dXJuIHN1aXRlOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWluCisgICAgKgorICAgICogQHBhcmFtIGFyZ3MKKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworCisgICAgICAvL1hNTFV0aWxzLnNwaXRPdXRWZXJzaW9ucyhsb2cpOworCisgICAgICBib29sZWFuIHVzZVRleHRVSSA9IHRydWU7CisKKyAgICAgIGlmICh1c2VUZXh0VUkpIHsKKyAgICAgICAgIGp1bml0LnRleHR1aS5UZXN0UnVubmVyLnJ1bihzdWl0ZSgpKTsKKyAgICAgIH0gZWxzZSB7CisKKyAgICAgICAgIHRyeSB7CisgICAgICAgICAgICBTdHJpbmcgbG9va0FuZEZlZWxDbGFzcyA9CisgICAgICAgICAgICAgICAiY29tLmluY29ycy5wbGFmLmt1bnN0c3RvZmYuS3Vuc3RzdG9mZkxvb2tBbmRGZWVsIjsKKyAgICAgICAgICAgIGphdmF4LnN3aW5nLkxvb2tBbmRGZWVsIGxuZiA9CisgICAgICAgICAgICAgICAoamF2YXguc3dpbmcuTG9va0FuZEZlZWwpIENsYXNzLmZvck5hbWUobG9va0FuZEZlZWxDbGFzcykKKyAgICAgICAgICAgICAgICAgIC5uZXdJbnN0YW5jZSgpOworCisgICAgICAgICAgICBqYXZheC5zd2luZy5VSU1hbmFnZXIuc2V0TG9va0FuZEZlZWwobG5mKTsKKyAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkge30KKworICAgICAgICAgLy9qdW5pdC5zd2luZ3VpLlRlc3RSdW5uZXIubWFpbih0ZXN0Q2FzZU5hbWUpOworICAgICAgICAganVuaXQudGV4dHVpLlRlc3RSdW5uZXIucnVuKHN1aXRlKCkpOworICAgICAgfQorICAgfQorCisgICBzdGF0aWMgeworICAgICAgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuSW5pdC5pbml0KCk7CisgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L01vZHVsZVRlc3QuamF2YSBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9Nb2R1bGVUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI2ZjYyMwotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9Nb2R1bGVUZXN0LmphdmEKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0OworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7CisKKworcHVibGljIGNsYXNzIE1vZHVsZVRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZyhNb2R1bGVUZXN0LmNsYXNzLmdldE5hbWUoKSk7CisKKyAgIHB1YmxpYyBNb2R1bGVUZXN0KFN0cmluZyB0ZXN0KSB7CisgICAgICBzdXBlcih0ZXN0KTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2Qgc3VpdGUKKyAgICAqCisgICAgKgorICAgICovCisKKyAgIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpIHsKKworICAgICAgVGVzdFN1aXRlIHN1aXRlID0KKyAgICAgICAgIG5ldyBUZXN0U3VpdGUoIkFsbCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0IEpVbml0IFRlc3RzIik7CisKKyAgICAgIC8vSi0KKyAgICAgIHN1aXRlLmFkZFRlc3Qob3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5jMTRuLmhlbHBlci5DMTRuSGVscGVyVGVzdC5zdWl0ZSgpKTsKKyAgICAgIHN1aXRlLmFkZFRlc3Qob3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5jMTRuLmhlbHBlci5BdHRyQ29tcGFyZVRlc3Quc3VpdGUoKSk7CisgICAgICBzdWl0ZS5hZGRUZXN0KG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QuYzE0bi5pbXBsZW1lbnRhdGlvbnMuQ2Fub25pY2FsaXplcjIwMDEwMzE1VGVzdC5zdWl0ZSgpKTsKKyAgICAgIHN1aXRlLmFkZFRlc3Qob3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5jMTRuLmltcGxlbWVudGF0aW9ucy5DYW5vbmljYWxpemVyMjAwMTAzMTVFeGNsdXNpdmVUZXN0LnN1aXRlKCkpOworICAgICAgc3VpdGUuYWRkVGVzdChvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LmMxNG4uaW1wbGVtZW50YXRpb25zLkV4Y2x1c2l2ZUMxNE5JbnRlcm9wLnN1aXRlKCkpOworICAgICAgc3VpdGUuYWRkVGVzdChvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LmMxNG4uaW1wbGVtZW50YXRpb25zLkJ1ZzQ1OTYxVGVzdC5zdWl0ZSgpKTsKKyAgICAgIHN1aXRlLmFkZFRlc3Qob3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5leHRlcm5hbC5vcmcuYXBhY2hlLnhhbGFuLlhQYXRoQVBJLlhhbGFuQnVnMTQyNVRlc3Quc3VpdGUoKSk7CisgICAgICBzdWl0ZS5hZGRUZXN0KG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QuZXh0ZXJuYWwub3JnLmFwYWNoZS54YWxhbi5YUGF0aEFQSS5BdHRyaWJ1dGVBbmNlc3Rvck9yU2VsZlRlc3Quc3VpdGUoKSk7CisgICAgICBzdWl0ZS5hZGRUZXN0KG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3Quc2lnbmF0dXJlLkFsbFRlc3RzLnN1aXRlKCkpOyAgICAgIAorICAgICAgc3VpdGUuYWRkVGVzdChvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LnV0aWxzLkFsbFRlc3RzLnN1aXRlKCkpOworICAgICAgc3VpdGUuYWRkVGVzdChvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLmltcGxlbWVudGF0aW9ucy5BbGxUZXN0cy5zdWl0ZSgpKTsKKyAgICAgIHN1aXRlLmFkZFRlc3Qob3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC50cmFuc2Zvcm1zLmltcGxlbWVudGF0aW9ucy5BbGxUZXN0cy5zdWl0ZSgpKTsKKyAgICAgIHN1aXRlLmFkZFRlc3Qob3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC50cmFuc2Zvcm1zLlJlZ2lzdGVyVGVzdC5zdWl0ZSgpKTsKKyAgICAgIHN1aXRlLmFkZFRlc3Qob3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5hbGdvcml0aG1zLkFsbFRlc3RzLnN1aXRlKCkpOworICAgICAgc3VpdGUuYWRkVGVzdChvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LmtleXMuY29udGVudC54NTA5LlhNTFg1MDlTS0lUZXN0LnN1aXRlKCkpOworICAgICAgc3VpdGUuYWRkVGVzdChvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LmtleXMuY29udGVudC54NTA5LlhNTFg1MDlJc3N1ZXJTZXJpYWxUZXN0LnN1aXRlKCkpOworICAgICAgc3VpdGUuYWRkVGVzdChvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LmtleXMuY29udGVudC54NTA5LlhNTFg1MDlDZXJ0aWZpY2F0ZVRlc3Quc3VpdGUoKSk7CisgICAgICBzdWl0ZS5hZGRUZXN0KG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3Qua2V5cy5zdG9yYWdlLktleVN0b3JlUmVzb2x2ZXJUZXN0LnN1aXRlKCkpOworICAgICAgc3VpdGUuYWRkVGVzdChvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LmtleXMuc3RvcmFnZS5TdG9yYWdlUmVzb2x2ZXJUZXN0LnN1aXRlKCkpOworICAgICAgLy8gc3VpdGUuYWRkVGVzdChvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LmFsZ29yaXRobXMuaW1wbGVtZW50YXRpb25zLktleVdyYXBUZXN0LnN1aXRlKCkpOworICAgICAgLy8gc3VpdGUuYWRkVGVzdChvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LmFsZ29yaXRobXMuaW1wbGVtZW50YXRpb25zLkJsb2NrRW5jcnlwdGlvblRlc3Quc3VpdGUoKSk7CisgICAgICAvL0orCisKKyAgICAgIHJldHVybiBzdWl0ZTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgbWFpbgorICAgICoKKyAgICAqIEBwYXJhbSBhcmdzCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKworICAgICAgLy9YTUxVdGlscy5zcGl0T3V0VmVyc2lvbnMobG9nKTsKKworICAgICAgYm9vbGVhbiB1c2VUZXh0VUkgPSB0cnVlOworCisgICAgICBpZiAodXNlVGV4dFVJKSB7CisgICAgICAgICBqdW5pdC50ZXh0dWkuVGVzdFJ1bm5lci5ydW4oc3VpdGUoKSk7CisgICAgICB9IGVsc2UgeworICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFN0cmluZyBsb29rQW5kRmVlbENsYXNzID0KKyAgICAgICAgICAgICAgICJjb20uaW5jb3JzLnBsYWYua3Vuc3RzdG9mZi5LdW5zdHN0b2ZmTG9va0FuZEZlZWwiOworICAgICAgICAgICAgamF2YXguc3dpbmcuTG9va0FuZEZlZWwgbG5mID0KKyAgICAgICAgICAgICAgIChqYXZheC5zd2luZy5Mb29rQW5kRmVlbCkgQ2xhc3MuZm9yTmFtZShsb29rQW5kRmVlbENsYXNzKQorICAgICAgICAgICAgICAgICAgLm5ld0luc3RhbmNlKCk7CisKKyAgICAgICAgICAgIGphdmF4LnN3aW5nLlVJTWFuYWdlci5zZXRMb29rQW5kRmVlbChsbmYpOworICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7fQorCisgICAgICAgICAvL2p1bml0LnN3aW5ndWkuVGVzdFJ1bm5lci5tYWluKHRlc3RDYXNlTmFtZSk7CisgICAgICAgICBqdW5pdC50ZXh0dWkuVGVzdFJ1bm5lci5ydW4oc3VpdGUoKSk7CisgICAgICB9CisgICB9CisKKyAgIHN0YXRpYyB7CisgICAgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTsKKyAgIH0KKworfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L1Rlc3RVdGlscy5qYXZhIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L1Rlc3RVdGlscy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OWE1M2YKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvVGVzdFV0aWxzLmphdmEKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdDsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworCitwdWJsaWMgY2xhc3MgVGVzdFV0aWxzIHsKKworCS8qKgorCSAgICAqIE1ldGhvZCBjcmVhdGVEU2N0eAorCSAgICAqCisJICAgICogQHBhcmFtIGRvYworCSAgICAqIEBwYXJhbSBwcmVmaXgKKwkgICAgKiBAcGFyYW0gbmFtZXNwYWNlCisJICAgICogQHJldHVybiB0aGUgZWxlbWVudC4KKwkgICAgKi8KKwkgICBwdWJsaWMgc3RhdGljIEVsZW1lbnQgY3JlYXRlRFNjdHgoRG9jdW1lbnQgZG9jLCBTdHJpbmcgcHJlZml4LAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbmFtZXNwYWNlKSB7CisJCisJICAgICAgaWYgKChwcmVmaXggPT0gbnVsbCkgfHwgKHByZWZpeC50cmltKCkubGVuZ3RoKCkgPT0gMCkpIHsKKwkgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJZb3UgbXVzdCBzdXBwbHkgYSBwcmVmaXgiKTsKKwkgICAgICB9CisJCisJICAgICAgRWxlbWVudCBjdHggPSBkb2MuY3JlYXRlRWxlbWVudE5TKG51bGwsICJuYW1lc3BhY2VDb250ZXh0Iik7CisJCisJICAgICAgY3R4LnNldEF0dHJpYnV0ZU5TKENvbnN0YW50cy5OYW1lc3BhY2VTcGVjTlMsICJ4bWxuczoiICsgcHJlZml4LnRyaW0oKSwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlKTsKKwkKKwkgICAgICByZXR1cm4gY3R4OworCSAgIH0KKworfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2FsZ29yaXRobXMvQWxsVGVzdHMuamF2YSBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9hbGdvcml0aG1zL0FsbFRlc3RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA4NWZhMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9hbGdvcml0aG1zL0FsbFRlc3RzLmphdmEKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5hbGdvcml0aG1zOworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKKworcHVibGljIGNsYXNzIEFsbFRlc3RzIHsKKworCXB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpIHsKKwkJVGVzdFN1aXRlIHN1aXRlID0gbmV3IFRlc3RTdWl0ZSgKKwkJCQkiVGVzdCBmb3Igb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5hbGdvcml0aG1zIik7CisJCS8vJEpVbml0LUJFR0lOJAorCQlzdWl0ZS5hZGRUZXN0KFNpZ25hdHVyZUFsZ29yaXRobVRlc3Quc3VpdGUoKSk7CisJCS8vJEpVbml0LUVORCQKKwkJcmV0dXJuIHN1aXRlOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2FsZ29yaXRobXMvU2lnbmF0dXJlQWxnb3JpdGhtVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2FsZ29yaXRobXMvU2lnbmF0dXJlQWxnb3JpdGhtVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiYTIxNTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvYWxnb3JpdGhtcy9TaWduYXR1cmVBbGdvcml0aG1UZXN0LmphdmEKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5hbGdvcml0aG1zOworCitpbXBvcnQgamF2YS5zZWN1cml0eS5LZXlQYWlyR2VuZXJhdG9yOworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHJpdmF0ZUtleTsKKworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3Rvcnk7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmFsZ29yaXRobXMuU2lnbmF0dXJlQWxnb3JpdGhtOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmU7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CisKK3B1YmxpYyBjbGFzcyBTaWduYXR1cmVBbGdvcml0aG1UZXN0IGV4dGVuZHMgVGVzdENhc2UgeworCisJc3RhdGljIHsKKwkgICAgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuSW5pdC5pbml0KCk7CisJfQorCisJcHVibGljIHZvaWQgdGVzdFNhbWVLZXlTZXZlcmFsQWxnb3JpdGhTaWduaW5nKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCURvY3VtZW50IGRvYz1Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCkubmV3RG9jdW1lbnRCdWlsZGVyKCkubmV3RG9jdW1lbnQoKTsKKwkJU2lnbmF0dXJlQWxnb3JpdGhtIHNpZ25hdHVyZUFsZ29yaXRobSA9IG5ldyBTaWduYXR1cmVBbGdvcml0aG0oZG9jLFhNTFNpZ25hdHVyZS5BTEdPX0lEX1NJR05BVFVSRV9SU0FfU0hBMSk7CisJCVByaXZhdGVLZXkgcGs9S2V5UGFpckdlbmVyYXRvci5nZXRJbnN0YW5jZSgiUlNBIikuZ2VuS2V5UGFpcigpLmdldFByaXZhdGUoKTsKKwkJc2lnbmF0dXJlQWxnb3JpdGhtLmluaXRTaWduKHBrKTsKKwkJc2lnbmF0dXJlQWxnb3JpdGhtLnVwZGF0ZSgoYnl0ZSkyKTsKKwkJc2lnbmF0dXJlQWxnb3JpdGhtLnNpZ24oKTsKKwkJU2lnbmF0dXJlQWxnb3JpdGhtIG90aGVyU2lnbmF0dXJlQWxnb3JpdGhtID0gbmV3IFNpZ25hdHVyZUFsZ29yaXRobShkb2MsWE1MU2lnbmF0dXJlLkFMR09fSURfU0lHTkFUVVJFX1JTQV9TSEEyNTYpOworCQlvdGhlclNpZ25hdHVyZUFsZ29yaXRobS5pbml0U2lnbihwayk7CisJCW90aGVyU2lnbmF0dXJlQWxnb3JpdGhtLnVwZGF0ZSgoYnl0ZSkyKTsKKwkJb3RoZXJTaWduYXR1cmVBbGdvcml0aG0uc2lnbigpOworCX0KKwlwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKSB7CisJCXJldHVybiBuZXcgVGVzdFN1aXRlKFNpZ25hdHVyZUFsZ29yaXRobVRlc3QuY2xhc3MpOworCX0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9jMTRuL2hlbHBlci9BdHRyQ29tcGFyZVRlc3QuamF2YSBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9jMTRuL2hlbHBlci9BdHRyQ29tcGFyZVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzc4N2UyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2MxNG4vaGVscGVyL0F0dHJDb21wYXJlVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjY1IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LmMxNG4uaGVscGVyOworCisKKworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb247CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uaGVscGVyLkF0dHJDb21wYXJlOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcudzNjLmRvbS5BdHRyOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTmFtZWROb2RlTWFwOworCisKKy8qKgorICogVW5pdCB0ZXN0IGZvciB7QGxpbmsgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5BdHRyQ29tcGFyZSNjb21wYXJlfQorICoKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEdldWVyLVBvbGxtYW5uCisgKi8KK3B1YmxpYyBjbGFzcyBBdHRyQ29tcGFyZVRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgIC8qKgorICAgICogTWV0aG9kIHN1aXRlCisgICAgKgorICAgICogQHJldHVybgorICAgICovCisgICBwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKSB7CisgICAgICByZXR1cm4gbmV3IFRlc3RTdWl0ZShBdHRyQ29tcGFyZVRlc3QuY2xhc3MpOworICAgfQorCisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIEF0dHJDb21wYXJlVGVzdAorICAgICoKKyAgICAqIEBwYXJhbSBOYW1lXworICAgICovCisgICBwdWJsaWMgQXR0ckNvbXBhcmVUZXN0KFN0cmluZyBOYW1lXykgeworICAgICAgc3VwZXIoTmFtZV8pOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWluCisgICAgKgorICAgICogQHBhcmFtIGFyZ3MKKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworCisgICAgICBTdHJpbmdbXSB0ZXN0Q2FzZU5hbWUgPSB7ICItbm9sb2FkaW5nIiwgQXR0ckNvbXBhcmVUZXN0LmNsYXNzLmdldE5hbWUoKSB9OworCisgICAgICBqdW5pdC50ZXh0dWkuVGVzdFJ1bm5lci5tYWluKHRlc3RDYXNlTmFtZSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGNyZWF0ZUF0dHIKKyAgICAqCisgICAgKiBAcGFyYW0gZG9jCisgICAgKiBAcGFyYW0gUU5hbWUKKyAgICAqIEBwYXJhbSBWYWx1ZQorICAgICogQHBhcmFtIE5hbWVzcGFjZVVSSQorICAgICogQHJldHVybgorICAgICovCisgICBwcml2YXRlIHN0YXRpYyBBdHRyIGNyZWF0ZUF0dHIoRG9jdW1lbnQgZG9jLCBTdHJpbmcgUU5hbWUsIFN0cmluZyBWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgTmFtZXNwYWNlVVJJKSB7CisKKyAgICAgIEF0dHIgYXR0ciA9IG51bGw7CisKKyAgICAgIGlmICgoTmFtZXNwYWNlVVJJICE9IG51bGwpICYmIChOYW1lc3BhY2VVUkkubGVuZ3RoKCkgPiAwKSkgeworICAgICAgICAgYXR0ciA9IGRvYy5jcmVhdGVBdHRyaWJ1dGVOUyhOYW1lc3BhY2VVUkksIFFOYW1lKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgICBhdHRyID0gZG9jLmNyZWF0ZUF0dHJpYnV0ZU5TKG51bGwsIFFOYW1lKTsKKyAgICAgIH0KKworICAgICAgYXR0ci5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoVmFsdWUpKTsKKworICAgICAgcmV0dXJuIGF0dHI7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGNyZWF0ZURvYworICAgICoKKyAgICAqIEBwYXJhbSBkb2N1bWVudEVsZW1lbnQKKyAgICAqIEByZXR1cm4KKyAgICAqIEB0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbgorICAgICovCisgICBwcml2YXRlIHN0YXRpYyBEb2N1bWVudCBjcmVhdGVEb2MoU3RyaW5nIGRvY3VtZW50RWxlbWVudCkKKyAgICAgICAgICAgdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24geworCisgICAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRmYWN0b3J5ID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworICAgICAgRG9jdW1lbnRCdWlsZGVyIGRvY3VtZW50QnVpbGRlciA9IGRmYWN0b3J5Lm5ld0RvY3VtZW50QnVpbGRlcigpOworCisgICAgICBkZmFjdG9yeS5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKworICAgICAgRG9jdW1lbnQgZG9jID0gZG9jdW1lbnRCdWlsZGVyLm5ld0RvY3VtZW50KCk7CisgICAgICBFbGVtZW50IHJvb3QgPSBkb2MuY3JlYXRlRWxlbWVudE5TKG51bGwsIGRvY3VtZW50RWxlbWVudCk7CisKKyAgICAgIGRvYy5hcHBlbmRDaGlsZChyb290KTsKKworICAgICAgcmV0dXJuIGRvYzsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdEExCisgICAgKgorICAgICogQHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0QTEoKSB0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiB7CisKKyAgICAgIERvY3VtZW50IGRvYyA9IGNyZWF0ZURvYygiZG9jdW1lbnRFbGVtZW50Iik7CisgICAgICBFbGVtZW50IHJvb3QgPSBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCk7CisgICAgICBBdHRyIGF0dHIwID0gY3JlYXRlQXR0cihkb2MsICJ4bWxucyIsICJodHRwOi8vZGVmYXVsdC8iLCBDb25zdGFudHMuTmFtZXNwYWNlU3BlY05TKTsKKyAgICAgIEF0dHIgYXR0cjEgPSBjcmVhdGVBdHRyKGRvYywgInhtbG5zOmIiLCAiaHR0cDovL3ZhbDEvIiwgQ29uc3RhbnRzLk5hbWVzcGFjZVNwZWNOUyk7CisKKyAgICAgIHJvb3Quc2V0QXR0cmlidXRlTm9kZShhdHRyMCk7CisgICAgICByb290LnNldEF0dHJpYnV0ZU5vZGUoYXR0cjEpOworCisgICAgICBOYW1lZE5vZGVNYXAgbm5tID0gcm9vdC5nZXRBdHRyaWJ1dGVzKCk7CisKKyAgICAgIGFzc2VydEVxdWFscygibm5tLmdldExlbmd0aCgpIiwgbm5tLmdldExlbmd0aCgpLCAyKTsKKworICAgICAgQXR0ciBhdHRyMDAgPSAoQXR0cikgbm5tLml0ZW0oMCk7CisgICAgICBBdHRyIGF0dHIxMCA9IChBdHRyKSBubm0uaXRlbSgxKTsKKworICAgICAgYXNzZXJ0Tm90TnVsbCgiQXR0cmlidXRlIGF0dHIwMCIsIGF0dHIwMCk7CisgICAgICBhc3NlcnROb3ROdWxsKCJBdHRyaWJ1dGUgYXR0cjEwIiwgYXR0cjEwKTsKKworICAgICAgQXR0ckNvbXBhcmUgYXR0ckNvbXBhcmUgPSBuZXcgQXR0ckNvbXBhcmUoKTsKKworICAgICAgYXNzZXJ0VHJ1ZShhdHRyMCArICIgPCAiICsgYXR0cjEsIGF0dHJDb21wYXJlLmNvbXBhcmUoYXR0cjAsIGF0dHIxKSA8IDApOworICAgICAgYXNzZXJ0VHJ1ZShhdHRyMSArICIgPCAiICsgYXR0cjAsIGF0dHJDb21wYXJlLmNvbXBhcmUoYXR0cjEsIGF0dHIwKSA+IDApOworICAgfQorCisgICBwdWJsaWMgc3RhdGljIHZvaWQgdGVzdEEyKCkgdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24geworCisgICAgICBEb2N1bWVudCBkb2MgPSBjcmVhdGVEb2MoImRvY3VtZW50RWxlbWVudCIpOworICAgICAgQXR0ciBhdHRyMCA9IGRvYy5jcmVhdGVBdHRyaWJ1dGVOUyhudWxsLCAiZm9vIik7CisgICAgICBBdHRyIGF0dHIxID0gZG9jLmNyZWF0ZUF0dHJpYnV0ZU5TKCJodHRwOi8vZ29vIiwgImdvbzpmb28iKTsKKworICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCJBdHRyMTogIiArIGF0dHIxICsgIiAoIiArIGF0dHIxLmdldExvY2FsTmFtZSgpICArIikiKTsKKworCisgICAgICBBdHRyQ29tcGFyZSBhdHRyQ29tcGFyZSA9IG5ldyBBdHRyQ29tcGFyZSgpOworCisgICAgICBhc3NlcnRUcnVlKGF0dHIwICsgIiA8ICIgKyBhdHRyMSwgYXR0ckNvbXBhcmUuY29tcGFyZShhdHRyMCwgYXR0cjEpIDwgMCk7CisgICAgICBhc3NlcnRUcnVlKGF0dHIxICsgIiA8ICIgKyBhdHRyMCwgYXR0ckNvbXBhcmUuY29tcGFyZShhdHRyMSwgYXR0cjApID4gMCk7CisKKyAgIH0KKworCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0QTIKKyAgICAqCisgICAgKiBAdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIF90ZXN0QTIoKSB0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiB7CisKKyAgICAgIERvY3VtZW50IGRvYyA9IGNyZWF0ZURvYygiZG9jdW1lbnRFbGVtZW50Iik7CisgICAgICBFbGVtZW50IHJvb3QgPSBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCk7CisgICAgICBBdHRyIGF0dHIwID0gY3JlYXRlQXR0cihkb2MsICJhQXR0ciIsICJ2YWwwIiwgbnVsbCk7CisgICAgICBBdHRyIGF0dHIxID0gY3JlYXRlQXR0cihkb2MsICJiQXR0ciIsICJ2YWwxIiwgbnVsbCk7CisKKyAgICAgIHJvb3Quc2V0QXR0cmlidXRlTm9kZShhdHRyMCk7CisgICAgICByb290LnNldEF0dHJpYnV0ZU5vZGUoYXR0cjEpOworCisgICAgICBOYW1lZE5vZGVNYXAgbm5tID0gcm9vdC5nZXRBdHRyaWJ1dGVzKCk7CisKKyAgICAgIGFzc2VydEVxdWFscygibm5tLmdldExlbmd0aCgpIiwgbm5tLmdldExlbmd0aCgpLCAyKTsKKworICAgICAgQXR0ciBhdHRyMDAgPSAoQXR0cikgbm5tLml0ZW0oMCk7CisgICAgICBBdHRyIGF0dHIxMCA9IChBdHRyKSBubm0uaXRlbSgxKTsKKworICAgICAgYXNzZXJ0Tm90TnVsbCgiQXR0cmlidXRlIGF0dHIwMCIsIGF0dHIwMCk7CisgICAgICBhc3NlcnROb3ROdWxsKCJBdHRyaWJ1dGUgYXR0cjEwIiwgYXR0cjEwKTsKKworICAgICAgQXR0ckNvbXBhcmUgYXR0ckNvbXBhcmUgPSBuZXcgQXR0ckNvbXBhcmUoKTsKKworICAgICAgYXNzZXJ0VHJ1ZShhdHRyMCArICIgPCAiICsgYXR0cjEsIGF0dHJDb21wYXJlLmNvbXBhcmUoYXR0cjAsIGF0dHIxKSA8IDApOworICAgICAgYXNzZXJ0VHJ1ZShhdHRyMSArICIgPCAiICsgYXR0cjAsIGF0dHJDb21wYXJlLmNvbXBhcmUoYXR0cjEsIGF0dHIwKSA+IDApOworICAgfQorCisgICAvKioKKyAgICAqIFRoaXMgdGVzdCB1c2VzIHRoZSBhdHRyc1tdIGFycmF5IHRvIGNvbXBhcmUgZXZlcnkgYXR0cmlidXRlIGFnYWluc3QKKyAgICAqIHRoZSBvdGhlcnMgKGFuZCB2aWNlIHZlcnNhKS4KKyAgICAqCisgICAgKiBUaGUgYXR0cmlidXRlIHZhbHVlcyBhcmUgdGFrZW4gZnJvbSBleGFtcGxlIDMuMyBTdGFydCBhbmQgRW5kIFRhZ3MKKyAgICAqIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1I0V4YW1wbGUtU0VUYWdzCisgICAgKgorICAgICogQHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0Q29tcGxldGUoKSB0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiB7CisKKyAgICAgIC8qIDxlNSB4bWxucz0iaHR0cDovL2V4YW1wbGUub3JnIgorICAgICAgICogICAgIHhtbG5zOmE9Imh0dHA6Ly93d3cudzMub3JnIgorICAgICAgICogICAgIHhtbG5zOmI9Imh0dHA6Ly93d3cuaWV0Zi5vcmciCisgICAgICAgKiAgICAgYXR0cj0iSSdtIgorICAgICAgICogICAgIGF0dHIyPSJhbGwiCisgICAgICAgKiAgICAgYjphdHRyPSJzb3J0ZWQiCisgICAgICAgKiAgICAgYTphdHRyPSJvdXQiPjwvZTU+CisgICAgICAgKi8KKyAgICAgIERvY3VtZW50IGRvYyA9IGNyZWF0ZURvYygiZG9jdW1lbnRFbGVtZW50Iik7CisgICAgICBFbGVtZW50IHJvb3QgPSBkb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCk7CisKKyAgICAgIC8vIFRoaXMgTGlzdCBoYXMgdG8gYmUgb3JkZXJlZCB0byB2ZXJpZnkgY29ycmVjdG5lc3Mgb2YgdGhlIGNvbXBhcmlzb24KKyAgICAgIC8vSi0KKyAgICAgIEF0dHIgYXR0cnNbXSA9IHsKKyAgICAgICAgIGNyZWF0ZUF0dHIoZG9jLCAieG1sbnMiLCAiaHR0cDovL2V4YW1wbGUub3JnIiwgQ29uc3RhbnRzLk5hbWVzcGFjZVNwZWNOUyksCisgICAgICAgICBjcmVhdGVBdHRyKGRvYywgInhtbG5zOmEiLCAiaHR0cDovL3d3dy53My5vcmciLCBDb25zdGFudHMuTmFtZXNwYWNlU3BlY05TKSwKKyAgICAgICAgIGNyZWF0ZUF0dHIoZG9jLCAieG1sbnM6YiIsICJodHRwOi8vd3d3LmlldGYub3JnIiwgQ29uc3RhbnRzLk5hbWVzcGFjZVNwZWNOUyksCisgICAgICAgICBjcmVhdGVBdHRyKGRvYywgImF0dHIiLCAiSSdtIiwgbnVsbCksCisgICAgICAgICBjcmVhdGVBdHRyKGRvYywgImF0dHIyIiwgImFsbCIsIG51bGwpLAorICAgICAgICAgY3JlYXRlQXR0cihkb2MsICJiOmF0dHIiLCAic29ydGVkIiwgImh0dHA6Ly93d3cuaWV0Zi5vcmciKSwKKyAgICAgICAgIGNyZWF0ZUF0dHIoZG9jLCAiYTphdHRyIiwgIm91dCIsICJodHRwOi8vd3d3LnczLm9yZyIpIH07CisKKyAgICAgIC8vSisKKyAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXR0cnMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgIHJvb3Quc2V0QXR0cmlidXRlTm9kZShhdHRyc1tpXSk7CisgICAgICB9CisKKyAgICAgIE5hbWVkTm9kZU1hcCBubm0gPSByb290LmdldEF0dHJpYnV0ZXMoKTsKKworICAgICAgYXNzZXJ0RXF1YWxzKCJubm0uZ2V0TGVuZ3RoKCkiLCBubm0uZ2V0TGVuZ3RoKCksIGF0dHJzLmxlbmd0aCk7CisKKyAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXR0cnMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgIEF0dHIgYXR0ciA9IGF0dHJzW2ldOworCisgICAgICAgICBhc3NlcnROb3ROdWxsKCJBdHRyaWJ1dGUgYXR0ciIsIGF0dHIpOworICAgICAgfQorCisgICAgICBBdHRyQ29tcGFyZSBhdHRyQ29tcGFyZSA9IG5ldyBBdHRyQ29tcGFyZSgpOworCisgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICBmb3IgKGludCBqID0gaSArIDE7IGogPCBhdHRycy5sZW5ndGg7IGorKykgeworICAgICAgICAgICAgQXR0ciBhdHRyMCA9IGF0dHJzW2ldOworICAgICAgICAgICAgQXR0ciBhdHRyMSA9IGF0dHJzW2pdOworICAgICAgICAgICAgYXNzZXJ0VHJ1ZShhdHRyMCArICIgPCAiICsgYXR0cjEsIGF0dHJDb21wYXJlLmNvbXBhcmUoYXR0cjAsIGF0dHIxKSA8IDApOworICAgICAgICAgICAgYXNzZXJ0VHJ1ZShhdHRyMSArICIgPCAiICsgYXR0cjAsIGF0dHJDb21wYXJlLmNvbXBhcmUoYXR0cjEsIGF0dHIwKSA+IDApOworICAgICAgICAgfQorICAgICAgfQorICAgfQorCisgICBzdGF0aWMgeworICAgICAgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuSW5pdC5pbml0KCk7CisgICB9Cit9ICAgIC8vcHVibGljIGNsYXNzIEF0dHJDb21wYXJlVGVzdCBleHRlbmRzIFRlc3RDYXNlCisKZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9jMTRuL2hlbHBlci9DMTRuSGVscGVyVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2MxNG4vaGVscGVyL0MxNG5IZWxwZXJUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRkNGRhZgotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9jMTRuL2hlbHBlci9DMTRuSGVscGVyVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTUwIEBACisKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QuYzE0bi5oZWxwZXI7CisKKworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLmhlbHBlci5DMTRuSGVscGVyOworCisKKy8qKgorICoKKyAqCisgKgorICoKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEdldWVyLVBvbGxtYW5uCisgKgorICovCitwdWJsaWMgY2xhc3MgQzE0bkhlbHBlclRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZyhDMTRuSGVscGVyVGVzdC5jbGFzcy5nZXROYW1lKCkpOworCisgICAvKioKKyAgICAqIE1ldGhvZCBzdWl0ZQorICAgICoKKyAgICAqCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpIHsKKyAgICAgIHJldHVybiBuZXcgVGVzdFN1aXRlKEMxNG5IZWxwZXJUZXN0LmNsYXNzKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBBdHRyQ29tcGFyZVRlc3QKKyAgICAqCisgICAgKiBAcGFyYW0gTmFtZV8KKyAgICAqLworICAgcHVibGljIEMxNG5IZWxwZXJUZXN0KFN0cmluZyBOYW1lXykgeworICAgICAgc3VwZXIoTmFtZV8pOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWluCisgICAgKgorICAgICogQHBhcmFtIGFyZ3MKKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworCisgICAgICBTdHJpbmdbXSB0ZXN0Q2FzZU5hbWUgPSB7ICItbm9sb2FkaW5nIiwgQzE0bkhlbHBlclRlc3QuY2xhc3MuZ2V0TmFtZSgpIH07CisKKyAgICAgIGp1bml0LnRleHR1aS5UZXN0UnVubmVyLm1haW4odGVzdENhc2VOYW1lKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdE5hbWVzcGFjZUlzQWJzb2x1dGUwMQorICAgICoKKyAgICAqLworICAgcHVibGljIHZvaWQgdGVzdE5hbWVzcGFjZUlzQWJzb2x1dGUwMSgpIHsKKworICAgICAgU3RyaW5nIG5hbWVzcGFjZVVSSSA9ICJodHRwOi8vd3d3LnczLm9yZy9TaWduYXR1cmUvIjsKKworICAgICAgYXNzZXJ0VHJ1ZSgiVVJJIGZhaWxzOiBcIiIgKyBuYW1lc3BhY2VVUkkgKyAiXCIiLAorICAgICAgICAgICAgICAgICBDMTRuSGVscGVyLm5hbWVzcGFjZUlzQWJzb2x1dGUobmFtZXNwYWNlVVJJKSk7CisgICB9CisKKyAgIC8qKgorICAgICoKKyAgICAqCisgICAgKiBAc2VlIDxBIEhSRUY9Imh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3czYy1pZXRmLXhtbGRzaWcvMjAwMUp1bFNlcC8wMDY4Lmh0bWwiPlRoZSBsaXN0PC9BPgorICAgICovCisgICBwdWJsaWMgdm9pZCB0ZXN0TmFtZXNwYWNlSXNBYnNvbHV0ZTAyKCkgeworCisgICAgICBTdHJpbmcgbmFtZXNwYWNlVVJJID0gImh0dHA6Ly93d3cudzMub3JnLy4uL2JsYWgiOworCisgICAgICBhc3NlcnRUcnVlKCJVUkkgZmFpbHM6IFwiIiArIG5hbWVzcGFjZVVSSSArICJcIiIsCisgICAgICAgICAgICAgICAgIEMxNG5IZWxwZXIubmFtZXNwYWNlSXNBYnNvbHV0ZShuYW1lc3BhY2VVUkkpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdE5hbWVzcGFjZUlzQWJzb2x1dGUwMworICAgICoKKyAgICAqLworICAgcHVibGljIHZvaWQgdGVzdE5hbWVzcGFjZUlzQWJzb2x1dGUwMygpIHsKKworICAgICAgLy8gdW5rbm93biBwcm90b2NvbD8KKyAgICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSAiaHh4cDovL3d3dy53My5vcmcvIjsKKworICAgICAgYXNzZXJ0VHJ1ZSgiVVJJIGZhaWxzOiBcIiIgKyBuYW1lc3BhY2VVUkkgKyAiXCIiLAorICAgICAgICAgICAgICAgICBDMTRuSGVscGVyLm5hbWVzcGFjZUlzQWJzb2x1dGUobmFtZXNwYWNlVVJJKSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHRlc3ROYW1lc3BhY2VJc1JlbGF0aXZlMDEKKyAgICAqCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHRlc3ROYW1lc3BhY2VJc1JlbGF0aXZlMDEoKSB7CisKKyAgICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSAiLi4vYmxhaCI7CisKKyAgICAgIGFzc2VydFRydWUoIlVSSSBmYWlsczogXCIiICsgbmFtZXNwYWNlVVJJICsgIlwiIiwKKyAgICAgICAgICAgICAgICAgQzE0bkhlbHBlci5uYW1lc3BhY2VJc1JlbGF0aXZlKG5hbWVzcGFjZVVSSSkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0TmFtZXNwYWNlSXNSZWxhdGl2ZTAyCisgICAgKgorICAgICovCisgICBwdWJsaWMgdm9pZCB0ZXN0TmFtZXNwYWNlSXNSZWxhdGl2ZTAyKCkgeworCisgICAgICBTdHJpbmcgbmFtZXNwYWNlVVJJID0gImJsYWgiOworCisgICAgICBhc3NlcnRUcnVlKCJVUkkgZmFpbHM6IFwiIiArIG5hbWVzcGFjZVVSSSArICJcIiIsCisgICAgICAgICAgICAgICAgIEMxNG5IZWxwZXIubmFtZXNwYWNlSXNSZWxhdGl2ZShuYW1lc3BhY2VVUkkpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdE5hbWVzcGFjZUlzUmVsYXRpdmUwMworICAgICoKKyAgICAqLworICAgcHVibGljIHZvaWQgX190ZXN0TmFtZXNwYWNlSXNSZWxhdGl2ZTAzKCkgeworCisgICAgICBTdHJpbmcgbmFtZXNwYWNlVVJJID0gImh0dHA6Ly8uLi4iOworCisgICAgICBhc3NlcnRUcnVlKCJVUkkgZmFpbHM6IFwiIiArIG5hbWVzcGFjZVVSSSArICJcIiIsCisgICAgICAgICAgICAgICAgIEMxNG5IZWxwZXIubmFtZXNwYWNlSXNSZWxhdGl2ZShuYW1lc3BhY2VVUkkpKTsKKyAgIH0KKworICAgc3RhdGljIHsKKyAgICAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaW5pdCgpOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2MxNG4vaW1wbGVtZW50YXRpb25zL0J1ZzQ1OTYxVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2MxNG4vaW1wbGVtZW50YXRpb25zL0J1ZzQ1OTYxVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlMmRhYjEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvYzE0bi9pbXBsZW1lbnRhdGlvbnMvQnVnNDU5NjFUZXN0LmphdmEKQEAgLTAsMCArMSwxMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QuYzE0bi5pbXBsZW1lbnRhdGlvbnM7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKKworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5U3RvcmU7CitpbXBvcnQgamF2YS5zZWN1cml0eS5Qcml2YXRlS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGU7CisKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXI7CitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQ7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5DYW5vbmljYWxpemVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuS2V5SW5mbzsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuT2JqZWN0Q29udGFpbmVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmU7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybXM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworCitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOworCitwdWJsaWMgY2xhc3MgQnVnNDU5NjFUZXN0IGV4dGVuZHMgVGVzdENhc2UgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE9CSkVDVF9JRCA9ICJPYmplY3QiOworCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBNT0NLX0NBTk9OSUNBTElaQVRJT05fTUVUSE9EID0gTW9ja0Nhbm9uaWNhbGl6YXRpb25NZXRob2QuTU9DS19DQU5PTklDQUxJWkFUSU9OX01FVEhPRDsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyW10gUEFTU1dPUkQgPSAiY2hhbmdlaXQiLnRvQ2hhckFycmF5KCk7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEFMSUFTID0gIm11bGxhbiI7CisJcHJpdmF0ZSBEb2N1bWVudEJ1aWxkZXIgX2J1aWxkZXI7CisJcHJpdmF0ZSBPYmplY3RDb250YWluZXIgb2JqZWN0OworCQorCXB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpIHsKKwkJcmV0dXJuIG5ldyBUZXN0U3VpdGUoQnVnNDU5NjFUZXN0LmNsYXNzKTsKKwl9CisKKwlwcm90ZWN0ZWQgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24geworCQlJbml0LmluaXQoKTsKKwkJQ2Fub25pY2FsaXplci5yZWdpc3RlcihNT0NLX0NBTk9OSUNBTElaQVRJT05fTUVUSE9ELAorCQkJCU1vY2tDYW5vbmljYWxpemF0aW9uTWV0aG9kLmNsYXNzLmdldE5hbWUoKSk7CisJCURvY3VtZW50QnVpbGRlckZhY3RvcnkgZmFjdG9yeSA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKwkJZmFjdG9yeS5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKwkJX2J1aWxkZXIgPSBmYWN0b3J5Lm5ld0RvY3VtZW50QnVpbGRlcigpOworCX0KKworICAgICAgICBwdWJsaWMgdm9pZCB0ZXN0QnVnKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgICAgICAgICAgRG9jdW1lbnQgZG9jdW1lbnQgPSBnZXRTaWduZWREb2N1bWVudCgpOworICAgICAgICAgICAgICAgIE5vZGVMaXN0IGxpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKAorICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMsIENvbnN0YW50cy5fVEFHX1NJR05BVFVSRSk7CisgICAgICAgICAgICAgICAgRWxlbWVudCBlbGVtZW50ID0gKEVsZW1lbnQpIGxpc3QuaXRlbSgwKTsKKyAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmUgc2lnbmF0dXJlID0gbmV3IFhNTFNpZ25hdHVyZShlbGVtZW50LCBudWxsKTsKKyAgICAgICAgICAgICAgICBLZXlJbmZvIGtleUluZm8gPSBzaWduYXR1cmUuZ2V0S2V5SW5mbygpOworICAgICAgICAgICAgICAgIFg1MDlDZXJ0aWZpY2F0ZSBjZXJ0aWZpY2F0ZSA9IGtleUluZm8uZ2V0WDUwOUNlcnRpZmljYXRlKCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0Tm90TnVsbChjZXJ0aWZpY2F0ZSk7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZS5jaGVja1NpZ25hdHVyZVZhbHVlKGNlcnRpZmljYXRlKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChYTUxTaWduYXR1cmVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgCQlmYWlsKGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKworCXByaXZhdGUgRG9jdW1lbnQgZ2V0U2lnbmVkRG9jdW1lbnQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJS2V5U3RvcmUga3MgPSBLZXlTdG9yZS5nZXRJbnN0YW5jZSgiSktTIik7CisJCUZpbGVJbnB1dFN0cmVhbSBmaXMgPSBuZXcgRmlsZUlucHV0U3RyZWFtKGdldEFic29sdXRlUGF0aCgiZGF0YS90ZXN0LmprcyIpKTsKKwkJa3MubG9hZChmaXMsIFBBU1NXT1JEKTsKKwkJZmlzLmNsb3NlKCk7CisJCVByaXZhdGVLZXkgcHJpdmF0ZUtleSA9IChQcml2YXRlS2V5KSBrcy5nZXRLZXkoQUxJQVMsIFBBU1NXT1JEKTsKKwkJWDUwOUNlcnRpZmljYXRlIHNpZ25pbmdDZXJ0ID0gKFg1MDlDZXJ0aWZpY2F0ZSkga3MKKwkJCQkuZ2V0Q2VydGlmaWNhdGUoQUxJQVMpOworCisJCURvY3VtZW50IGRvY3VtZW50ID0gX2J1aWxkZXIubmV3RG9jdW1lbnQoKTsKKworCQlYTUxTaWduYXR1cmUgc2lnbmF0dXJlID0gbmV3IFhNTFNpZ25hdHVyZShkb2N1bWVudCwgbnVsbCwKKwkJCQlYTUxTaWduYXR1cmUuQUxHT19JRF9TSUdOQVRVUkVfRFNBLAorCQkJCU1PQ0tfQ0FOT05JQ0FMSVpBVElPTl9NRVRIT0QpOworCisgICAgICAgICAgICAgICAgRWxlbWVudCByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCIiLCAiUm9vdEVsZW1lbnQiKTsKKyAgICAgICAgICAgICAgICByb290LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJTb21lIHNpbXBsZSB0ZXN0XG4iKSk7CisgICAgICAgICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChzaWduYXR1cmUuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5hcHBlbmRDaGlsZChyb290KTsKKworLy8JCWRvY3VtZW50LmFwcGVuZENoaWxkKHNpZ25hdHVyZS5nZXRFbGVtZW50KCkpOworCisJCUVsZW1lbnQgcm9vdDIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoIiIsICJSb290RWxlbWVudCIpOworCQlyb290Mi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiU29tZSBzaW1wbGUgdGVzdFxuIikpOworCQlvYmplY3QgPSBuZXcgT2JqZWN0Q29udGFpbmVyKGRvY3VtZW50KTsKKwkJb2JqZWN0LmFwcGVuZENoaWxkKHJvb3QyKTsKKwkJb2JqZWN0LnNldElkKE9CSkVDVF9JRCk7CisKKwkJc2lnbmF0dXJlLmFkZERvY3VtZW50KCIjIiArIE9CSkVDVF9JRCk7CisJCXNpZ25hdHVyZS5hZGREb2N1bWVudCgiIiwgZ2V0VHJhbnNmb3Jtcyhkb2N1bWVudCkpOworCisJCXNpZ25hdHVyZS5hZGRLZXlJbmZvKHNpZ25pbmdDZXJ0KTsKKwkJc2lnbmF0dXJlLnNpZ24ocHJpdmF0ZUtleSk7CisJCXJldHVybiBkb2N1bWVudDsKKwl9CisKKyAgICAgICAgcHJpdmF0ZSBUcmFuc2Zvcm1zIGdldFRyYW5zZm9ybXMoRG9jdW1lbnQgZG9jdW1lbnQpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMgdHJhbnNmb3JtcyA9IG5ldyBUcmFuc2Zvcm1zKGRvY3VtZW50KTsKKyAgICAgICAgICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9FTlZFTE9QRURfU0lHTkFUVVJFKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNmb3JtczsKKyAgICAgICAgfQorCisgICBwcml2YXRlIFN0cmluZyBnZXRBYnNvbHV0ZVBhdGgoU3RyaW5nIHBhdGgpCisgICB7CisgICAgICAgICAgU3RyaW5nIGJhc2VkaXIgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImJhc2VkaXIiKTsKKyAgICAgICAgICBpZihiYXNlZGlyICE9IG51bGwgJiYgISIiLmVxdWFscyhiYXNlZGlyKSkgeworICAgICAgICAgICAgICAgIHBhdGggPSBiYXNlZGlyICsgIi8iICsgcGF0aDsKKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIHBhdGg7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvYzE0bi9pbXBsZW1lbnRhdGlvbnMvQ2Fub25pY2FsaXplcjIwMDEwMzE1RXhjbHVzaXZlVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2MxNG4vaW1wbGVtZW50YXRpb25zL0Nhbm9uaWNhbGl6ZXIyMDAxMDMxNUV4Y2x1c2l2ZVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmE4ZmZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2MxNG4vaW1wbGVtZW50YXRpb25zL0Nhbm9uaWNhbGl6ZXIyMDAxMDMxNUV4Y2x1c2l2ZVRlc3QuamF2YQpAQCAtMCwwICsxLDQwMyBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5jMTRuLmltcGxlbWVudGF0aW9uczsKKworCisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLlN0cmluZ1JlYWRlcjsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworCitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyOworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3Rvcnk7CitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRXhjZXB0aW9uOworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkNhbm9uaWNhbGl6YXRpb25FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5JbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLmltcGxlbWVudGF0aW9ucy5DYW5vbmljYWxpemVyMjAwMTAzMTU7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5pbXBsZW1lbnRhdGlvbnMuQ2Fub25pY2FsaXplcjIwMDEwMzE1RXhjbDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLmltcGxlbWVudGF0aW9ucy5DYW5vbmljYWxpemVyMjAwMTAzMTVFeGNsT21pdENvbW1lbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uaW1wbGVtZW50YXRpb25zLkNhbm9uaWNhbGl6ZXIyMDAxMDMxNUV4Y2xXaXRoQ29tbWVudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5pbXBsZW1lbnRhdGlvbnMuQ2Fub25pY2FsaXplcjIwMDEwMzE1V2l0aENvbW1lbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmV4Y2VwdGlvbnMuWE1MU2VjdXJpdHlFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmVJbnB1dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuSmF2YVV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueHBhdGguWFBhdGhBUEk7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OworaW1wb3J0IG9yZy54bWwuc2F4LklucHV0U291cmNlOworaW1wb3J0IG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbjsKKworCisvKioKKyAqCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubgorICovCitwdWJsaWMgY2xhc3MgQ2Fub25pY2FsaXplcjIwMDEwMzE1RXhjbHVzaXZlVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgc3RhdGljIHsKKyAgICAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaW5pdCgpOworICAgfQorCisgICAvKioge0BsaW5rIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nfSBsb2dnaW5nIGZhY2lsaXR5ICovCisgICAgc3RhdGljIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZyBsb2cgPSAKKyAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeS5nZXRMb2coCisgICAgICAgICAgICAgICAgQ2Fub25pY2FsaXplcjIwMDEwMzE1RXhjbHVzaXZlVGVzdC5jbGFzcy5nZXROYW1lKCkpOworCisgICAvKioKKyAgICAqIE1ldGhvZCBzdWl0ZQorICAgICoKKyAgICAqCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpIHsKKyAgICAgIHJldHVybiBuZXcgVGVzdFN1aXRlKENhbm9uaWNhbGl6ZXIyMDAxMDMxNUV4Y2x1c2l2ZVRlc3QuY2xhc3MpOworICAgfQorCisgICAvKioKKyAgICAqICBDb25zdHJ1Y3RvciBDYW5vbmljYWxpemVyMjAwMTAzMTVFeGNsdXNpdmVUZXN0CisgICAgKgorICAgICogIEBwYXJhbSBOYW1lXworICAgICovCisgICBwdWJsaWMgQ2Fub25pY2FsaXplcjIwMDEwMzE1RXhjbHVzaXZlVGVzdChTdHJpbmcgTmFtZV8pIHsKKyAgICAgIHN1cGVyKE5hbWVfKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgbWFpbgorICAgICoKKyAgICAqIEBwYXJhbSBhcmdzCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKworICAgICAgU3RyaW5nW10gdGVzdENhc2VOYW1lID0geyAiLW5vbG9hZGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbm9uaWNhbGl6ZXIyMDAxMDMxNUV4Y2x1c2l2ZVRlc3QuY2xhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldE5hbWUoKSB9OworCisgICAgICBqdW5pdC50ZXh0dWkuVGVzdFJ1bm5lci5tYWluKHRlc3RDYXNlTmFtZSk7CisgICB9CisKKyAgIC8qKiBGaWVsZCBkYmYgKi8KKyAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmOworCisgICAvKiogRmllbGQgZGIgKi8KKyAgIERvY3VtZW50QnVpbGRlciBkYjsKKworICAgLyoqCisgICAgKiBNZXRob2Qgc2V0VXAKKyAgICAqCisgICAgKiBAdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHZvaWQgc2V0VXAoKSB0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiB7CisKKyAgICAgIHRoaXMuZGJmID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCisgICAgICB0aGlzLmRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKworICAgICAgdGhpcy5kYiA9IHRoaXMuZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0QQorICAgICoKKyAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBGaWxlTm90Rm91bmRFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBTQVhFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMua2V5cmVzb2x2ZXIuS2V5UmVzb2x2ZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHZvaWQgdGVzdEEoKQorICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24sIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiwgU0FYRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiwgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uLCBUcmFuc2Zvcm1lckV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiwgWE1MU2VjdXJpdHlFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmtleXJlc29sdmVyCisgICAgICAgICAgICAgICAgICAgICAuS2V5UmVzb2x2ZXJFeGNlcHRpb24geworCisgICAgICBGaWxlIGZpbGVJbiA9IG5ldyBGaWxlKGdldEFic29sdXRlUGF0aCgKKyAgICAgICAgICJkYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvZWMtbWVybGluLWlhaWtUZXN0cy10d28vc2lnbmF0dXJlLnhtbCIpICk7CisKKyAgICAgIC8vIEZpbGUgZmlsZUluID0gbmV3IEZpbGUoInNpZ25hdHVyZS54bWwiKTsKKyAgICAgIGFzc2VydFRydWUoImZpbGUgZXhpc3RzIiwgZmlsZUluLmV4aXN0cygpKTsKKworICAgICAgRG9jdW1lbnQgZG9jID0gdGhpcy5kYi5wYXJzZShmaWxlSW4pOworICAgICAgRWxlbWVudCBzaWduYXR1cmVFbGVtZW50ID0KKyAgICAgICAgIChFbGVtZW50KSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5fVEFHX1NJR05BVFVSRSkuaXRlbSgwKTsKKyAgICAgIFhNTFNpZ25hdHVyZSB4bWxTaWduYXR1cmUgPSBuZXcgWE1MU2lnbmF0dXJlKHNpZ25hdHVyZUVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUluLnRvVVJMKCkudG9TdHJpbmcoKSk7CisgICAgICBib29sZWFuIHZlcmlmeSA9CisgICAgICAgICB4bWxTaWduYXR1cmUKKyAgICAgICAgICAgIC5jaGVja1NpZ25hdHVyZVZhbHVlKHhtbFNpZ25hdHVyZS5nZXRLZXlJbmZvKCkuZ2V0UHVibGljS2V5KCkpOworICAgICAgaW50IGxlbmd0aCA9IHhtbFNpZ25hdHVyZS5nZXRTaWduZWRJbmZvKCkuZ2V0TGVuZ3RoKCk7CisgICAgICBpbnQgbnVtYmVyT2ZQb3NpdGl2ZVJlZmVyZW5jZXMgPSAwOworCisgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgICBib29sZWFuIHNpbmdsZVJlc3VsdCA9CisgICAgICAgICAgICB4bWxTaWduYXR1cmUuZ2V0U2lnbmVkSW5mbygpLmdldFZlcmlmaWNhdGlvblJlc3VsdChpKTsKKworICAgICAgICAgaWYgKHNpbmdsZVJlc3VsdCkgeworICAgICAgICAgICAgbnVtYmVyT2ZQb3NpdGl2ZVJlZmVyZW5jZXMrKzsKKyAgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgYXNzZXJ0VHJ1ZSgiVmVyaWZpY2F0aW9uIGZhaWxlZDsgb25seSAiICsgbnVtYmVyT2ZQb3NpdGl2ZVJlZmVyZW5jZXMKKyAgICAgICAgICAgICAgICAgKyAiLyIgKyBsZW5ndGggKyAiIG1hdGNoZWQiLCB2ZXJpZnkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0MjIxCisgICAgKgorICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbgorICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorICAgICogQHRocm93cyBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbgorICAgICogQHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFNBWEV4Y2VwdGlvbgorICAgICogQHRocm93cyBUcmFuc2Zvcm1lckV4Y2VwdGlvbgorICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHZvaWQgdGVzdDIyMSgpCisgICAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiwgRmlsZU5vdEZvdW5kRXhjZXB0aW9uLCBTQVhFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLCBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24sIFRyYW5zZm9ybWVyRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgWE1MU2lnbmF0dXJlRXhjZXB0aW9uLCBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisKKyAgICAgIERvY3VtZW50IGRvYyA9CisgICAgICAgICB0aGlzLmRiCisgICAgICAgICAgICAucGFyc2UoZ2V0QWJzb2x1dGVQYXRoKCJkYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW5FeGNsL2V4YW1wbGUyXzJfMS54bWwiKSApOworICAgICAgTm9kZSByb290ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoImh0dHA6Ly9leGFtcGxlLm5ldCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZWxlbTIiKS5pdGVtKDApOworICAgICAgQ2Fub25pY2FsaXplcjIwMDEwMzE1IGMgPSBuZXcgQ2Fub25pY2FsaXplcjIwMDEwMzE1V2l0aENvbW1lbnRzKCk7CisgICAgICBieXRlW10gcmVmZXJlbmNlID0gSmF2YVV0aWxzLmdldEJ5dGVzRnJvbUZpbGUoZ2V0QWJzb2x1dGVQYXRoKAorICAgICAgICAgImRhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbkV4Y2wvZXhhbXBsZTJfMl8xX2MxNG5pemVkLnhtbCIpICk7CisgICAgICBieXRlW10gcmVzdWx0ID0gYy5lbmdpbmVDYW5vbmljYWxpemVTdWJUcmVlKHJvb3QpOworICAgICAgYm9vbGVhbiBlcXVhbHMgPSBqYXZhLnNlY3VyaXR5Lk1lc3NhZ2VEaWdlc3QuaXNFcXVhbChyZWZlcmVuY2UsIHJlc3VsdCk7CisKKyAgICAgIC8qCisgICAgICBpZiAoIWVxdWFscykgeworICAgICAgICAgSmF2YVV0aWxzLndyaXRlQnl0ZXNUb0ZpbGVuYW1lKCJkYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW5FeGNsL2V4YW1wbGUyXzJfMV9jMTRuaXplZC5hcGFjaGUueG1sIiwgcmVzdWx0KTsKKyAgICAgIH0KKyAgICAgICovCisKKyAgICAgIGFzc2VydFRydWUoZXF1YWxzKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdDIyMgorICAgICoKKyAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBGaWxlTm90Rm91bmRFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBTQVhFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHRlc3QyMjIoKQorICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24sIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiwgU0FYRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiwgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uLCBUcmFuc2Zvcm1lckV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiwgWE1MU2VjdXJpdHlFeGNlcHRpb24geworCisgICAgICBEb2N1bWVudCBkb2MgPQorICAgICAgICAgdGhpcy5kYgorICAgICAgICAgICAgLnBhcnNlKGdldEFic29sdXRlUGF0aCgiZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuL2luRXhjbC9leGFtcGxlMl8yXzIueG1sIikpOworICAgICAgTm9kZSByb290ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoImh0dHA6Ly9leGFtcGxlLm5ldCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZWxlbTIiKS5pdGVtKDApOworICAgICAgQ2Fub25pY2FsaXplcjIwMDEwMzE1IGMgPSBuZXcgQ2Fub25pY2FsaXplcjIwMDEwMzE1V2l0aENvbW1lbnRzKCk7CisgICAgICBieXRlW10gcmVmZXJlbmNlID0gSmF2YVV0aWxzLmdldEJ5dGVzRnJvbUZpbGUoZ2V0QWJzb2x1dGVQYXRoKAorICAgICAgICAgImRhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbkV4Y2wvZXhhbXBsZTJfMl8yX2MxNG5pemVkLnhtbCIpKTsKKyAgICAgIGJ5dGVbXSByZXN1bHQgPSBjLmVuZ2luZUNhbm9uaWNhbGl6ZVN1YlRyZWUocm9vdCk7CisgICAgICBib29sZWFuIGVxdWFscyA9IGphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdC5pc0VxdWFsKHJlZmVyZW5jZSwgcmVzdWx0KTsKKworICAgICAgYXNzZXJ0VHJ1ZShlcXVhbHMpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0MjIxZXhjbAorICAgICoKKyAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBGaWxlTm90Rm91bmRFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBTQVhFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHRlc3QyMjFleGNsKCkKKyAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uLCBGaWxlTm90Rm91bmRFeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiwgVHJhbnNmb3JtZXJFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmVFeGNlcHRpb24sIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKworICAgICAgRG9jdW1lbnQgZG9jID0KKyAgICAgICAgIHRoaXMuZGIKKyAgICAgICAgICAgIC5wYXJzZShnZXRBYnNvbHV0ZVBhdGgoImRhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbkV4Y2wvZXhhbXBsZTJfMl8xLnhtbCIpKTsKKyAgICAgIE5vZGUgcm9vdCA9IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKCJodHRwOi8vZXhhbXBsZS5uZXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVsZW0yIikuaXRlbSgwKTsKKyAgICAgIENhbm9uaWNhbGl6ZXIyMDAxMDMxNUV4Y2wgYyA9IG5ldyBDYW5vbmljYWxpemVyMjAwMTAzMTVFeGNsV2l0aENvbW1lbnRzKCk7CisgICAgICBieXRlW10gcmVmZXJlbmNlID0gSmF2YVV0aWxzLmdldEJ5dGVzRnJvbUZpbGUoZ2V0QWJzb2x1dGVQYXRoKAorICAgICAgICAgImRhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbkV4Y2wvZXhhbXBsZTJfMl9jMTRuaXplZF9leGNsdXNpdmUueG1sIikgKTsKKyAgICAgIGJ5dGVbXSByZXN1bHQgPSBjLmVuZ2luZUNhbm9uaWNhbGl6ZVN1YlRyZWUocm9vdCk7CisgICAgICBib29sZWFuIGVxdWFscyA9IGphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdC5pc0VxdWFsKHJlZmVyZW5jZSwgcmVzdWx0KTsKKworICAgICAgYXNzZXJ0VHJ1ZShlcXVhbHMpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0MjIyZXhjbAorICAgICoKKyAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBGaWxlTm90Rm91bmRFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBTQVhFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgWE1MU2VjdXJpdHlFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgWE1MU2lnbmF0dXJlRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHRlc3QyMjJleGNsKCkKKyAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uLCBGaWxlTm90Rm91bmRFeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiwgVHJhbnNmb3JtZXJFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmVFeGNlcHRpb24sIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKworICAgICAgRG9jdW1lbnQgZG9jID0KKyAgICAgICAgIHRoaXMuZGIKKyAgICAgICAgICAgIC5wYXJzZShnZXRBYnNvbHV0ZVBhdGgoImRhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbkV4Y2wvZXhhbXBsZTJfMl8yLnhtbCIpKTsKKyAgICAgIE5vZGUgcm9vdCA9IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKCJodHRwOi8vZXhhbXBsZS5uZXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVsZW0yIikuaXRlbSgwKTsKKyAgICAgIENhbm9uaWNhbGl6ZXIyMDAxMDMxNUV4Y2wgYyA9IG5ldyBDYW5vbmljYWxpemVyMjAwMTAzMTVFeGNsV2l0aENvbW1lbnRzKCk7CisgICAgICBieXRlW10gcmVmZXJlbmNlID0gSmF2YVV0aWxzLmdldEJ5dGVzRnJvbUZpbGUoZ2V0QWJzb2x1dGVQYXRoKAorICAgICAgICAgImRhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvYzE0bi9pbkV4Y2wvZXhhbXBsZTJfMl9jMTRuaXplZF9leGNsdXNpdmUueG1sIikgKTsKKyAgICAgIGJ5dGVbXSByZXN1bHQgPSBjLmVuZ2luZUNhbm9uaWNhbGl6ZVN1YlRyZWUocm9vdCk7CisgICAgICBib29sZWFuIGVxdWFscyA9IGphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdC5pc0VxdWFsKHJlZmVyZW5jZSwgcmVzdWx0KTsKKworICAgICAgYXNzZXJ0VHJ1ZShlcXVhbHMpOworICAgfQorICAgCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0MjIzZXhjbAorICAgICoKKyAgICAqIFByb3ZpZGVkIGJ5IEdhYnJpZWwgTWNHb2xkcmljayAtIHNlZSBlLW1haWwgb2YgMjEvMTEvMDMKKyAgICAqCisgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgRmlsZU5vdEZvdW5kRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgU0FYRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgdm9pZCB0ZXN0MjIzZXhjbCgpCisgICAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiwgRmlsZU5vdEZvdW5kRXhjZXB0aW9uLCBTQVhFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLCBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24sIFRyYW5zZm9ybWVyRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgWE1MU2lnbmF0dXJlRXhjZXB0aW9uLCBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisKKyAgICAgIERvY3VtZW50IGRvYyA9CisgICAgICAgICB0aGlzLmRiCisgICAgICAgICAgICAucGFyc2UoZ2V0QWJzb2x1dGVQYXRoKCJkYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW5FeGNsL2V4YW1wbGUyXzJfMy54bWwiKSk7CisgICAgICBOb2RlTGlzdCBub2RlcyA9IFhQYXRoQVBJLnNlbGVjdE5vZGVMaXN0KGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoLy8uIHwgLy9AKiB8IC8vbmFtZXNwYWNlOjoqKVthbmNlc3Rvci1vci1zZWxmOjpwXSIpOworICAgICAgQ2Fub25pY2FsaXplcjIwMDEwMzE1RXhjbCBjID0gbmV3IENhbm9uaWNhbGl6ZXIyMDAxMDMxNUV4Y2xXaXRoQ29tbWVudHMoKTsKKyAgICAgIGJ5dGVbXSByZWZlcmVuY2UgPSBKYXZhVXRpbHMuZ2V0Qnl0ZXNGcm9tRmlsZSgKKyAgICAgIAkJZ2V0QWJzb2x1dGVQYXRoKCJkYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vaW5FeGNsL2V4YW1wbGUyXzJfM19jMTRuaXplZF9leGNsdXNpdmUueG1sIikgKTsKKyAgICAgIGJ5dGVbXSByZXN1bHQgPSBjLmVuZ2luZUNhbm9uaWNhbGl6ZVhQYXRoTm9kZVNldChub2Rlcyk7CisgICAgICBhc3NlcnRFcXVhbHMobmV3IFN0cmluZyhyZWZlcmVuY2UpLG5ldyBTdHJpbmcocmVzdWx0KSk7CisgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0cyBub2RlLXNldCBhcyBpbnB1dC4gU2VlIGJ1ZyAzNzcwOC4gCisgICAgICogUHJvdmlkZWQgYnkgUGV0ZSBIZW5kcnkuCisgICAgICovCisgICAgcHVibGljIHZvaWQgdGVzdE5vZGVTZXQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgICBmaW5hbCBTdHJpbmcgWE1MID0KKyAgICAgICAgICAgICI8ZW52OkVudmVsb3BlIgorICAgICAgICAgICAgKyAiIHhtbG5zOmVudj1cImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUvXCIiCisgICAgICAgICAgICArICIgeG1sbnM6eHNkPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWFcIiIKKyAgICAgICAgICAgICsgIiB4bWxuczp4c2k9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZVwiIgorICAgICAgICAgICAgKyAiIHhtbG5zOm5zMD1cImh0dHA6Ly94bWxzb2FwLm9yZy9QaW5nXCIiCisgICAgICAgICAgICArICIgeG1sbnM6d3N1PVwiaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvd3NzLzIwMDQvMDEvb2FzaXMtMjAwNDAxLXdzcy13c3NlY3VyaXR5LXV0aWxpdHktMS4wLnhzZFwiPiIKKyAgICAgICAgICAgICsgIjxlbnY6Qm9keSB3c3U6SWQ9XCJib2R5XCI+IgorICAgICAgICAgICAgKyAiPG5zMDpQaW5nIHhzaTp0eXBlPVwibnMwOnBpbmdcIj4iCisgICAgICAgICAgICArICI8bnMwOnRleHQgeHNpOnR5cGU9XCJ4c2Q6c3RyaW5nXCI+aGVsbG88L25zMDp0ZXh0PiIKKyAgICAgICAgICAgICsgIjwvbnMwOlBpbmc+IgorICAgICAgICAgICAgKyAiPC9lbnY6Qm9keT4iCisgICAgICAgICAgICArICI8L2VudjpFbnZlbG9wZT4iOworCisJZmluYWwgU3RyaW5nIGMxNG5YTUwgPQorCSAgICAiPGVudjpCb2R5IgorCSAgICArICIgeG1sbnM6ZW52PVwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS9cIiIKKwkgICAgKyAiIHhtbG5zOm5zMD1cImh0dHA6Ly94bWxzb2FwLm9yZy9QaW5nXCIiCisJICAgICsgIiB4bWxuczp3c3U9XCJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXdzc2VjdXJpdHktdXRpbGl0eS0xLjAueHNkXCIiCisJICAgICsgIiB4bWxuczp4c2k9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZVwiIgorCSAgICArICIgd3N1OklkPVwiYm9keVwiPiIKKwkgICAgKyAiPG5zMDpQaW5nIHhzaTp0eXBlPVwibnMwOnBpbmdcIj4iCisJICAgICsgIjxuczA6dGV4dCB4c2k6dHlwZT1cInhzZDpzdHJpbmdcIj5oZWxsbzwvbnMwOnRleHQ+IgorCSAgICArICI8L25zMDpQaW5nPiIKKwkgICAgKyAiPC9lbnY6Qm9keT4iOworCisgICAgICAgIERvY3VtZW50IGRvYyA9IHRoaXMuZGIucGFyc2UobmV3IElucHV0U291cmNlKG5ldyBTdHJpbmdSZWFkZXIoWE1MKSkpOworICAgICAgICBDYW5vbmljYWxpemVyMjAwMTAzMTVFeGNsT21pdENvbW1lbnRzIGMxNG4gPSAKKwkgICAgbmV3IENhbm9uaWNhbGl6ZXIyMDAxMDMxNUV4Y2xPbWl0Q29tbWVudHMoKTsKKyAgICAgICAgU2V0IG5vZGVTZXQgPSBuZXcgSGFzaFNldCgpOworICAgICAgICBYTUxVdGlscy5nZXRTZXQKKwkgICAgKGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKS5nZXRGaXJzdENoaWxkKCksIG5vZGVTZXQsIG51bGwsIGZhbHNlKTsKKyAgICAgICAgWE1MU2lnbmF0dXJlSW5wdXQgaW5wdXQgPSBuZXcgWE1MU2lnbmF0dXJlSW5wdXQobm9kZVNldCk7CisgICAgICAgIGJ5dGVbXSBieXRlcyA9IGMxNG4uZW5naW5lQ2Fub25pY2FsaXplKGlucHV0LCAiZW52IG5zMCB4c2kgd3N1Iik7CisgICAgICAgIGFzc2VydEVxdWFscyhjMTRuWE1MLG5ldyBTdHJpbmcoYnl0ZXMpKTsKKyAgICB9CisKKyAgIHByaXZhdGUgU3RyaW5nIGdldEFic29sdXRlUGF0aChTdHJpbmcgcGF0aCkKKyAgIHsKKyAgIAkgIFN0cmluZyBiYXNlZGlyID0gU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIik7CisgICAJICBpZihiYXNlZGlyICE9IG51bGwgJiYgISIiLmVxdWFscyhiYXNlZGlyKSkgeworICAgCQlwYXRoID0gYmFzZWRpciArICIvIiArIHBhdGg7CisgICAJICB9CisgICAJICByZXR1cm4gcGF0aDsKKyAgIH0KKyAgIAorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2MxNG4vaW1wbGVtZW50YXRpb25zL0Nhbm9uaWNhbGl6ZXIyMDAxMDMxNVRlc3QuamF2YSBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9jMTRuL2ltcGxlbWVudGF0aW9ucy9DYW5vbmljYWxpemVyMjAwMTAzMTVUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZlYzhhNAotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9jMTRuL2ltcGxlbWVudGF0aW9ucy9DYW5vbmljYWxpemVyMjAwMTAzMTVUZXN0LmphdmEKQEAgLTAsMCArMSwxMjM0IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LmMxNG4uaW1wbGVtZW50YXRpb25zOworCisKKworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uRmlsZU91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CisKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXI7CitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeTsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5QYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uOworaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uT3V0cHV0S2V5czsKK2ltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyOworaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uOworaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJFeGNlcHRpb247CitpbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckZhY3Rvcnk7CitpbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5kb20uRE9NU291cmNlOworaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uc3RyZWFtLlN0cmVhbVJlc3VsdDsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5DYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uQ2Fub25pY2FsaXplcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QuVGVzdFV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QucmVzb3VyY2UuVGVzdFZlY3RvclJlc29sdmVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5JZ25vcmVBbGxFcnJvckhhbmRsZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuSmF2YVV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueHBhdGguQ2FjaGVkWFBhdGhBUEk7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKK2ltcG9ydCBvcmcudzNjLmRvbS5UZXh0OworaW1wb3J0IG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbjsKKworCisvKioKKyAqIFVuaXQgdGVzdCBmb3Ige0BsaW5rIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uaW1wbGVtZW50YXRpb25zLkNhbm9uaWNhbGl6ZXIyMDAxMDMxNVdpdGhYUGF0aH0KKyAqCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubgorICovCitwdWJsaWMgY2xhc3MgQ2Fub25pY2FsaXplcjIwMDEwMzE1VGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKENhbm9uaWNhbGl6ZXIyMDAxMDMxNVRlc3QuY2xhc3MuZ2V0TmFtZSgpKTsKKworICAgLyoqCisgICAgKiBNZXRob2Qgc3VpdGUKKyAgICAqCisgICAgKgorICAgICovCisgICBwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKSB7CisgICAgICByZXR1cm4gbmV3IFRlc3RTdWl0ZShDYW5vbmljYWxpemVyMjAwMTAzMTVUZXN0LmNsYXNzKTsKKyAgIH0KKworICAgLyoqCisgICAgKiAgQ29uc3RydWN0b3IgQ2Fub25pY2FsaXplcjIwMDEwMzE1V2l0aFhQYXRoVGVzdAorICAgICoKKyAgICAqICBAcGFyYW0gTmFtZV8KKyAgICAqLworICAgcHVibGljIENhbm9uaWNhbGl6ZXIyMDAxMDMxNVRlc3QoU3RyaW5nIE5hbWVfKSB7CisgICAgICBzdXBlcihOYW1lXyk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIG1haW4KKyAgICAqCisgICAgKiBAcGFyYW0gYXJncworICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisKKyAgICAgIFN0cmluZ1tdIHRlc3RDYXNlTmFtZSA9IHsgIi1ub2xvYWRpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5vbmljYWxpemVyMjAwMTAzMTVUZXN0LmNsYXNzLmdldE5hbWUoKSB9OworCisgICAgICBqdW5pdC50ZXh0dWkuVGVzdFJ1bm5lci5tYWluKHRlc3RDYXNlTmFtZSk7CisgICB9CisKKyAgIC8qKiBGaWVsZCBwcmVmaXggKi8KKyAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBwcmVmaXg7CisKKyAgIC8qKgorICAgICogMy4xIFBJcywgQ29tbWVudHMsIGFuZCBPdXRzaWRlIG9mIERvY3VtZW50IEVsZW1lbnQKKyAgICAqCisgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgRmlsZU5vdEZvdW5kRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgU0FYRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0MzF3aXRoQ29tbWVudHNTdWJ0cmVlKCkKKyAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uLCBGaWxlTm90Rm91bmRFeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiwgVHJhbnNmb3JtZXJFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgZGVzY3JpID0KKyAgICAgICAgICIzLjE6IFBJcywgQ29tbWVudHMsIGFuZCBPdXRzaWRlIG9mIERvY3VtZW50IEVsZW1lbnQuIChjb21tZW50ZWQpIjsKKworCisgICAgICBTdHJpbmcgZmlsZUluID0gcHJlZml4ICsgImluLzMxX2lucHV0LnhtbCI7CisgICAgICBTdHJpbmcgZmlsZVJlZiA9IHByZWZpeCArICJpbi8zMV9jMTRuLWNvbW1lbnRzLnhtbCI7CisgICAgICBTdHJpbmcgZmlsZU91dCA9IHByZWZpeCArICJvdXQveHBhdGhfMzFfb3V0cHV0LWNvbW1lbnRzLnhtbCI7CisgICAgICBTdHJpbmcgYzE0blVSSSA9IENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX1dJVEhfQ09NTUVOVFM7CisgICAgICBib29sZWFuIHZhbGlkYXRpbmcgPSB0cnVlOworICAgICAgU3RyaW5nIHhwYXRoID0gbnVsbDsKKworICAgICAgYXNzZXJ0VHJ1ZShkZXNjcmksCisgICAgICAgICAgICAgICAgIGMxNG5BbmRDb21wYXJlKGZpbGVJbiwgZmlsZVJlZiwgZmlsZU91dCwgYzE0blVSSSwgdmFsaWRhdGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHBhdGgpKTsKKyAgIH0KKyAgIC8qKgorICAgICogMy4xIFBJcywgQ29tbWVudHMsIGFuZCBPdXRzaWRlIG9mIERvY3VtZW50IEVsZW1lbnQKKyAgICAqCisgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgRmlsZU5vdEZvdW5kRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgU0FYRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0MzF3aXRoQ29tbWVudHNTdWJzZXQoKQorICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24sIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiwgU0FYRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiwgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uLCBUcmFuc2Zvcm1lckV4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZyBkZXNjcmkgPQorICAgICAgICAgIjMuMTogUElzLCBDb21tZW50cywgYW5kIE91dHNpZGUgb2YgRG9jdW1lbnQgRWxlbWVudC4gKGNvbW1lbnRlZCkiOworCisKKyAgICAgIFN0cmluZyBmaWxlSW4gPSBwcmVmaXggKyAiaW4vMzFfaW5wdXQueG1sIjsKKyAgICAgIFN0cmluZyBmaWxlUmVmID0gcHJlZml4ICsgImluLzMxX2MxNG4tY29tbWVudHMueG1sIjsKKyAgICAgIFN0cmluZyBmaWxlT3V0ID0gcHJlZml4ICsgIm91dC94cGF0aF8zMV9vdXRwdXQtY29tbWVudHMueG1sIjsKKyAgICAgIFN0cmluZyBjMTRuVVJJID0gQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fV0lUSF9DT01NRU5UUzsKKyAgICAgIGJvb2xlYW4gdmFsaWRhdGluZyA9IHRydWU7CisgICAgICBTdHJpbmcgeHBhdGggPSBDYW5vbmljYWxpemVyLlhQQVRIX0MxNE5fV0lUSF9DT01NRU5UU19TSU5HTEVfTk9ERTsKKworICAgICAgYXNzZXJ0VHJ1ZShkZXNjcmksCisgICAgICAgICAgICAgICAgIGMxNG5BbmRDb21wYXJlKGZpbGVJbiwgZmlsZVJlZiwgZmlsZU91dCwgYzE0blVSSSwgdmFsaWRhdGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHBhdGgpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiAzLjEgUElzLCBDb21tZW50cywgYW5kIE91dHNpZGUgb2YgRG9jdW1lbnQgRWxlbWVudAorICAgICoKKyAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBGaWxlTm90Rm91bmRFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBTQVhFeGNlcHRpb24KKyAgICAqIEBzZWUgPEEgSFJFRj0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9QUi14bWwtYzE0bi0yMDAxMDExOSNFeGFtcGxlLU91dHNpZGVEb2MiPnRoZSBleGFtcGxlIGZyb20gdGhlIHNwZWM8L0E+CisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0MzFzdWJ0cmVlKCkKKyAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uLCBGaWxlTm90Rm91bmRFeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiwgVHJhbnNmb3JtZXJFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgZGVzY3JpID0KKyAgICAgICAgICIzLjE6IFBJcywgQ29tbWVudHMsIGFuZCBPdXRzaWRlIG9mIERvY3VtZW50IEVsZW1lbnQuICh1bmNvbW1lbnRlZCkiOworICAgICAgU3RyaW5nIGZpbGVJbiA9IHByZWZpeCArICJpbi8zMV9pbnB1dC54bWwiOworICAgICAgU3RyaW5nIGZpbGVSZWYgPSBwcmVmaXggKyAiaW4vMzFfYzE0bi54bWwiOworICAgICAgU3RyaW5nIGZpbGVPdXQgPSBwcmVmaXggKyAib3V0L3hwYXRoXzMxX291dHB1dC54bWwiOworICAgICAgU3RyaW5nIGMxNG5VUkkgPSBDYW5vbmljYWxpemVyLkFMR09fSURfQzE0Tl9PTUlUX0NPTU1FTlRTOworICAgICAgYm9vbGVhbiB2YWxpZGF0aW5nID0gdHJ1ZTsKKyAgICAgIFN0cmluZyB4cGF0aCA9IG51bGw7CisKKyAgICAgIGFzc2VydFRydWUoZGVzY3JpLAorICAgICAgICAgICAgICAgICBjMTRuQW5kQ29tcGFyZShmaWxlSW4sIGZpbGVSZWYsIGZpbGVPdXQsIGMxNG5VUkksIHZhbGlkYXRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhwYXRoKSk7CisgICB9CisgICAvKioKKyAgICAqIDMuMSBQSXMsIENvbW1lbnRzLCBhbmQgT3V0c2lkZSBvZiBEb2N1bWVudCBFbGVtZW50CisgICAgKgorICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbgorICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorICAgICogQHRocm93cyBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbgorICAgICogQHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFNBWEV4Y2VwdGlvbgorICAgICogQHNlZSA8QSBIUkVGPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1BSLXhtbC1jMTRuLTIwMDEwMTE5I0V4YW1wbGUtT3V0c2lkZURvYyI+dGhlIGV4YW1wbGUgZnJvbSB0aGUgc3BlYzwvQT4KKyAgICAqIEB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3QzMXN1YnNldCgpCisgICAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiwgRmlsZU5vdEZvdW5kRXhjZXB0aW9uLCBTQVhFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLCBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24sIFRyYW5zZm9ybWVyRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIGRlc2NyaSA9CisgICAgICAgICAiMy4xOiBQSXMsIENvbW1lbnRzLCBhbmQgT3V0c2lkZSBvZiBEb2N1bWVudCBFbGVtZW50LiAodW5jb21tZW50ZWQpIjsKKyAgICAgIFN0cmluZyBmaWxlSW4gPSBwcmVmaXggKyAiaW4vMzFfaW5wdXQueG1sIjsKKyAgICAgIFN0cmluZyBmaWxlUmVmID0gcHJlZml4ICsgImluLzMxX2MxNG4ueG1sIjsKKyAgICAgIFN0cmluZyBmaWxlT3V0ID0gcHJlZml4ICsgIm91dC94cGF0aF8zMV9vdXRwdXQueG1sIjsKKyAgICAgIFN0cmluZyBjMTRuVVJJID0gQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fT01JVF9DT01NRU5UUzsKKyAgICAgIGJvb2xlYW4gdmFsaWRhdGluZyA9IHRydWU7CisgICAgICBTdHJpbmcgeHBhdGggPSBDYW5vbmljYWxpemVyLlhQQVRIX0MxNE5fV0lUSF9DT01NRU5UU19TSU5HTEVfTk9ERTsKKworICAgICAgYXNzZXJ0VHJ1ZShkZXNjcmksCisgICAgICAgICAgICAgICAgIGMxNG5BbmRDb21wYXJlKGZpbGVJbiwgZmlsZVJlZiwgZmlsZU91dCwgYzE0blVSSSwgdmFsaWRhdGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHBhdGgpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiAzLjIgV2hpdGVzcGFjZSBpbiBEb2N1bWVudCBDb250ZW50CisgICAgKgorICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbgorICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorICAgICogQHRocm93cyBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbgorICAgICogQHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFNBWEV4Y2VwdGlvbgorICAgICogQHNlZSA8QSBIUkVGPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1BSLXhtbC1jMTRuLTIwMDEwMTE5I0V4YW1wbGUtV2hpdGVzcGFjZUluQ29udGVudCI+dGhlIGV4YW1wbGUgZnJvbSB0aGUgc3BlYzwvQT4KKyAgICAqIEB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3QzMnN1YnRyZWUoKQorICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24sIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiwgU0FYRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiwgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uLCBUcmFuc2Zvcm1lckV4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZyBkZXNjcmkgPSAiMy4yIFdoaXRlc3BhY2UgaW4gRG9jdW1lbnQgQ29udGVudC4gKHVuY29tbWVudGVkKSI7CisgICAgICBTdHJpbmcgZmlsZUluID0gcHJlZml4ICsgImluLzMyX2lucHV0LnhtbCI7CisgICAgICBTdHJpbmcgZmlsZVJlZiA9IHByZWZpeCArICJpbi8zMl9jMTRuLnhtbCI7CisgICAgICBTdHJpbmcgZmlsZU91dCA9IHByZWZpeCArICJvdXQveHBhdGhfMzJfb3V0cHV0LnhtbCI7CisgICAgICBTdHJpbmcgYzE0blVSSSA9IENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX09NSVRfQ09NTUVOVFM7CisgICAgICBib29sZWFuIHZhbGlkYXRpbmcgPSB0cnVlOworICAgICAgU3RyaW5nIHhwYXRoID0gbnVsbDsKKworICAgICAgYXNzZXJ0VHJ1ZShkZXNjcmksCisgICAgICAgICAgICAgICAgIGMxNG5BbmRDb21wYXJlKGZpbGVJbiwgZmlsZVJlZiwgZmlsZU91dCwgYzE0blVSSSwgdmFsaWRhdGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHBhdGgpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiAzLjIgV2hpdGVzcGFjZSBpbiBEb2N1bWVudCBDb250ZW50CisgICAgKgorICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbgorICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorICAgICogQHRocm93cyBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbgorICAgICogQHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFNBWEV4Y2VwdGlvbgorICAgICogQHNlZSA8QSBIUkVGPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1BSLXhtbC1jMTRuLTIwMDEwMTE5I0V4YW1wbGUtV2hpdGVzcGFjZUluQ29udGVudCI+dGhlIGV4YW1wbGUgZnJvbSB0aGUgc3BlYzwvQT4KKyAgICAqIEB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3QzMnN1YnNldCgpCisgICAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiwgRmlsZU5vdEZvdW5kRXhjZXB0aW9uLCBTQVhFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLCBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24sIFRyYW5zZm9ybWVyRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIGRlc2NyaSA9ICIzLjIgV2hpdGVzcGFjZSBpbiBEb2N1bWVudCBDb250ZW50LiAodW5jb21tZW50ZWQpIjsKKyAgICAgIFN0cmluZyBmaWxlSW4gPSBwcmVmaXggKyAiaW4vMzJfaW5wdXQueG1sIjsKKyAgICAgIFN0cmluZyBmaWxlUmVmID0gcHJlZml4ICsgImluLzMyX2MxNG4ueG1sIjsKKyAgICAgIFN0cmluZyBmaWxlT3V0ID0gcHJlZml4ICsgIm91dC94cGF0aF8zMl9vdXRwdXQueG1sIjsKKyAgICAgIFN0cmluZyBjMTRuVVJJID0gQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fT01JVF9DT01NRU5UUzsKKyAgICAgIGJvb2xlYW4gdmFsaWRhdGluZyA9IHRydWU7CisgICAgICBTdHJpbmcgeHBhdGggPSBDYW5vbmljYWxpemVyLlhQQVRIX0MxNE5fV0lUSF9DT01NRU5UU19TSU5HTEVfTk9ERTsKKworICAgICAgYXNzZXJ0VHJ1ZShkZXNjcmksCisgICAgICAgICAgICAgICAgIGMxNG5BbmRDb21wYXJlKGZpbGVJbiwgZmlsZVJlZiwgZmlsZU91dCwgYzE0blVSSSwgdmFsaWRhdGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHBhdGgpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiAzLjMgU3RhcnQgYW5kIEVuZCBUYWdzCisgICAgKgorICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbgorICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorICAgICogQHRocm93cyBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbgorICAgICogQHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFNBWEV4Y2VwdGlvbgorICAgICogQHNlZSA8QSBIUkVGPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1BSLXhtbC1jMTRuLTIwMDEwMTE5I0V4YW1wbGUtU0VUYWdzIj50aGUgZXhhbXBsZSBmcm9tIHRoZSBzcGVjPC9BPgorICAgICogQHRocm93cyBUcmFuc2Zvcm1lckV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgdGVzdDMzc3VidHJlZSgpCisgICAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiwgRmlsZU5vdEZvdW5kRXhjZXB0aW9uLCBTQVhFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLCBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24sIFRyYW5zZm9ybWVyRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIGRlc2NyaSA9ICIzLjMgU3RhcnQgYW5kIEVuZCBUYWdzLiAodW5jb21tZW50ZWQpIjsKKyAgICAgIFN0cmluZyBmaWxlSW4gPSBwcmVmaXggKyAiaW4vMzNfaW5wdXQueG1sIjsKKyAgICAgIFN0cmluZyBmaWxlUmVmID0gcHJlZml4ICsgImluLzMzX2MxNG4ueG1sIjsKKyAgICAgIFN0cmluZyBmaWxlT3V0ID0gcHJlZml4ICsgIm91dC94cGF0aF8zM19vdXRwdXQueG1sIjsKKyAgICAgIFN0cmluZyBjMTRuVVJJID0gQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fT01JVF9DT01NRU5UUzsKKyAgICAgIGJvb2xlYW4gdmFsaWRhdGluZyA9IHRydWU7CisgICAgICBTdHJpbmcgeHBhdGggPSBudWxsOyAgICAvLyBDYW5vbmljYWxpemVyLlhQQVRIX0MxNE5fT01JVF9DT01NRU5UU19TSU5HTEVfTk9ERTsKKworICAgICAgYXNzZXJ0VHJ1ZShkZXNjcmksCisgICAgICAgICAgICAgICAgIGMxNG5BbmRDb21wYXJlKGZpbGVJbiwgZmlsZVJlZiwgZmlsZU91dCwgYzE0blVSSSwgdmFsaWRhdGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHBhdGgpKTsKKyAgIH0KKworICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3QzM3N1YnNldCgpCisgICAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiwgRmlsZU5vdEZvdW5kRXhjZXB0aW9uLCBTQVhFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLCBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24sIFRyYW5zZm9ybWVyRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIGRlc2NyaSA9ICIzLjMgU3RhcnQgYW5kIEVuZCBUYWdzLiAodW5jb21tZW50ZWQpIjsKKyAgICAgIFN0cmluZyBmaWxlSW4gPSBwcmVmaXggKyAiaW4vMzNfaW5wdXQueG1sIjsKKyAgICAgIFN0cmluZyBmaWxlUmVmID0gcHJlZml4ICsgImluLzMzX2MxNG4ueG1sIjsKKyAgICAgIFN0cmluZyBmaWxlT3V0ID0gcHJlZml4ICsgIm91dC94cGF0aF8zM19vdXRwdXQueG1sIjsKKyAgICAgIFN0cmluZyBjMTRuVVJJID0gQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fT01JVF9DT01NRU5UUzsKKyAgICAgIGJvb2xlYW4gdmFsaWRhdGluZyA9IHRydWU7CisgICAgICBTdHJpbmcgeHBhdGggPSBDYW5vbmljYWxpemVyLlhQQVRIX0MxNE5fV0lUSF9DT01NRU5UU19TSU5HTEVfTk9ERTsKKworICAgICAgYXNzZXJ0VHJ1ZShkZXNjcmksCisgICAgICAgICAgICAgICAgIGMxNG5BbmRDb21wYXJlKGZpbGVJbiwgZmlsZVJlZiwgZmlsZU91dCwgYzE0blVSSSwgdmFsaWRhdGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHBhdGgpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiAzLjQgQ2hhcmFjdGVyIE1vZGlmaWNhdGlvbnMgYW5kIENoYXJhY3RlciBSZWZlcmVuY2VzCisgICAgKgorICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbgorICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorICAgICogQHRocm93cyBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbgorICAgICogQHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFNBWEV4Y2VwdGlvbgorICAgICogQHNlZSAjdGVzdDM0dmFsaWRhdGluZ1BhcnNlcgorICAgICogQHNlZSA8QSBIUkVGPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1BSLXhtbC1jMTRuLTIwMDEwMTE5I0V4YW1wbGUtQ2hhcnMiPnRoZSBleGFtcGxlIGZyb20gdGhlIHNwZWM8L0E+CisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0MzQoKQorICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24sIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiwgU0FYRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiwgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uLCBUcmFuc2Zvcm1lckV4Y2VwdGlvbgorICAgeworICAgCQorCisgICAgICBTdHJpbmcgZGVzY3JpID0KKyAgICAgICAgICIzLjQgQ2hhcmFjdGVyIE1vZGlmaWNhdGlvbnMgYW5kIENoYXJhY3RlciBSZWZlcmVuY2VzLiAodW5jb21tZW50ZWQpIjsKKyAgICAgIFN0cmluZyBmaWxlSW4gPSBwcmVmaXggKyAiaW4vMzRfaW5wdXQueG1sIjsKKyAgICAgIFN0cmluZyBmaWxlUmVmID0gcHJlZml4ICsgImluLzM0X2MxNG4ueG1sIjsKKyAgICAgIFN0cmluZyBmaWxlT3V0ID0gcHJlZml4ICsgIm91dC94cGF0aF8zNF9vdXRwdXQueG1sIjsKKyAgICAgIFN0cmluZyBjMTRuVVJJID0gQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fT01JVF9DT01NRU5UUzsKKyAgICAgIGJvb2xlYW4gdmFsaWRhdGluZyA9IGZhbHNlOworICAgICAgU3RyaW5nIHhwYXRoID0gbnVsbDsKKworICAgICAgYXNzZXJ0VHJ1ZShkZXNjcmksCisgICAgICAgICAgICAgICAgIGMxNG5BbmRDb21wYXJlKGZpbGVJbiwgZmlsZVJlZiwgZmlsZU91dCwgYzE0blVSSSwgdmFsaWRhdGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHBhdGgpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiAzLjQgQ2hhcmFjdGVyIE1vZGlmaWNhdGlvbnMgYW5kIENoYXJhY3RlciBSZWZlcmVuY2VzIChwYXRjaGVkIHRvIHJ1biBvbiB2YWxpZGF0aW5nIFBhcnNlcnMpCisgICAgKiA8UD4KKyAgICAqIDxBIEhSRUY9Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUFIteG1sLWMxNG4tMjAwMTAxMTkiPiBUaGUgc3BlYzwvQT4gc3RhdGVzIHRoYXQ6CisgICAgKiA8UD4KKyAgICAqIE5vdGU6IFRoZSBsYXN0IGVsZW1lbnQsIG5vcm1JZCwgaXMgd2VsbC1mb3JtZWQgYnV0IHZpb2xhdGVzIGEgdmFsaWRpdHkKKyAgICAqIGNvbnN0cmFpbnQgZm9yIGF0dHJpYnV0ZXMgb2YgdHlwZSBJRC4gRm9yIHRlc3RpbmcgY2Fub25pY2FsIFhNTAorICAgICogaW1wbGVtZW50YXRpb25zIGJhc2VkIG9uIHZhbGlkYXRpbmcgcHJvY2Vzc29ycywgcmVtb3ZlIHRoZSBsaW5lCisgICAgKiBjb250YWluaW5nIHRoaXMgZWxlbWVudCBmcm9tIHRoZSBpbnB1dCBhbmQgY2Fub25pY2FsIGZvcm0uIEluIGdlbmVyYWwsCisgICAgKiBYTUwgY29uc3VtZXJzIHNob3VsZCBiZSBkaXNjb3VyYWdlZCBmcm9tIHVzaW5nIHRoaXMgZmVhdHVyZSBvZiBYTUwuCisgICAgKgorICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbgorICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorICAgICogQHRocm93cyBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbgorICAgICogQHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFNBWEV4Y2VwdGlvbgorICAgICogQHNlZSA8QSBIUkVGPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1BSLXhtbC1jMTRuLTIwMDEwMTE5I0V4YW1wbGUtQ2hhcnMiPnRoZSBleGFtcGxlIGZyb20gdGhlIHNwZWM8L0E+CisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0MzRzdWJ0cmVlKCkKKyAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uLCBGaWxlTm90Rm91bmRFeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiwgVHJhbnNmb3JtZXJFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgZGVzY3JpID0KKyAgICAgICAgICIzLjQgQ2hhcmFjdGVyIE1vZGlmaWNhdGlvbnMgYW5kIENoYXJhY3RlciBSZWZlcmVuY2VzLiAodW5jb21tZW50ZWQsIHBhdGNoZWQgdG8gcnVuIG9uIHZhbGlkYXRpbmcgUGFyc2VycykiOworICAgICAgU3RyaW5nIGZpbGVJbiA9IHByZWZpeCArICJpbi8zNF9pbnB1dF92YWxpZGF0aW5nUGFyc2VyLnhtbCI7CisgICAgICBTdHJpbmcgZmlsZVJlZiA9IHByZWZpeCArICJpbi8zNF9jMTRuX3ZhbGlkYXRpbmdQYXJzZXIueG1sIjsKKyAgICAgIFN0cmluZyBmaWxlT3V0ID0gcHJlZml4ICsgIm91dC94cGF0aF8zNF9vdXRwdXRfdmFsaWRhdGluZ1BhcnNlci54bWwiOworICAgICAgU3RyaW5nIGMxNG5VUkkgPSBDYW5vbmljYWxpemVyLkFMR09fSURfQzE0Tl9PTUlUX0NPTU1FTlRTOworICAgICAgYm9vbGVhbiB2YWxpZGF0aW5nID0gdHJ1ZTsKKyAgICAgIFN0cmluZyB4cGF0aCA9IG51bGw7CisKKyAgICAgIGFzc2VydFRydWUoZGVzY3JpLAorICAgICAgICAgICAgICAgICBjMTRuQW5kQ29tcGFyZShmaWxlSW4sIGZpbGVSZWYsIGZpbGVPdXQsIGMxNG5VUkksIHZhbGlkYXRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhwYXRoKSk7CisgICB9CisgICAvKioKKyAgICAqIDMuNCBDaGFyYWN0ZXIgTW9kaWZpY2F0aW9ucyBhbmQgQ2hhcmFjdGVyIFJlZmVyZW5jZXMgKHBhdGNoZWQgdG8gcnVuIG9uIHZhbGlkYXRpbmcgUGFyc2VycykKKyAgICAqIDxQPgorICAgICogPEEgSFJFRj0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9QUi14bWwtYzE0bi0yMDAxMDExOSI+IFRoZSBzcGVjPC9BPiBzdGF0ZXMgdGhhdDoKKyAgICAqIDxQPgorICAgICogTm90ZTogVGhlIGxhc3QgZWxlbWVudCwgbm9ybUlkLCBpcyB3ZWxsLWZvcm1lZCBidXQgdmlvbGF0ZXMgYSB2YWxpZGl0eQorICAgICogY29uc3RyYWludCBmb3IgYXR0cmlidXRlcyBvZiB0eXBlIElELiBGb3IgdGVzdGluZyBjYW5vbmljYWwgWE1MCisgICAgKiBpbXBsZW1lbnRhdGlvbnMgYmFzZWQgb24gdmFsaWRhdGluZyBwcm9jZXNzb3JzLCByZW1vdmUgdGhlIGxpbmUKKyAgICAqIGNvbnRhaW5pbmcgdGhpcyBlbGVtZW50IGZyb20gdGhlIGlucHV0IGFuZCBjYW5vbmljYWwgZm9ybS4gSW4gZ2VuZXJhbCwKKyAgICAqIFhNTCBjb25zdW1lcnMgc2hvdWxkIGJlIGRpc2NvdXJhZ2VkIGZyb20gdXNpbmcgdGhpcyBmZWF0dXJlIG9mIFhNTC4KKyAgICAqCisgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgRmlsZU5vdEZvdW5kRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgU0FYRXhjZXB0aW9uCisgICAgKiBAc2VlIDxBIEhSRUY9Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUFIteG1sLWMxNG4tMjAwMTAxMTkjRXhhbXBsZS1DaGFycyI+dGhlIGV4YW1wbGUgZnJvbSB0aGUgc3BlYzwvQT4KKyAgICAqIEB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3QzNHN1YnNldCgpCisgICAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiwgRmlsZU5vdEZvdW5kRXhjZXB0aW9uLCBTQVhFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLCBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24sIFRyYW5zZm9ybWVyRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIGRlc2NyaSA9CisgICAgICAgICAiMy40IENoYXJhY3RlciBNb2RpZmljYXRpb25zIGFuZCBDaGFyYWN0ZXIgUmVmZXJlbmNlcy4gKHVuY29tbWVudGVkLCBwYXRjaGVkIHRvIHJ1biBvbiB2YWxpZGF0aW5nIFBhcnNlcnMpIjsKKyAgICAgIFN0cmluZyBmaWxlSW4gPSBwcmVmaXggKyAiaW4vMzRfaW5wdXRfdmFsaWRhdGluZ1BhcnNlci54bWwiOworICAgICAgU3RyaW5nIGZpbGVSZWYgPSBwcmVmaXggKyAiaW4vMzRfYzE0bl92YWxpZGF0aW5nUGFyc2VyLnhtbCI7CisgICAgICBTdHJpbmcgZmlsZU91dCA9IHByZWZpeCArICJvdXQveHBhdGhfMzRfb3V0cHV0X3ZhbGlkYXRpbmdQYXJzZXIueG1sIjsKKyAgICAgIFN0cmluZyBjMTRuVVJJID0gQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fT01JVF9DT01NRU5UUzsKKyAgICAgIGJvb2xlYW4gdmFsaWRhdGluZyA9IHRydWU7CisgICAgICBTdHJpbmcgeHBhdGggPSBDYW5vbmljYWxpemVyLlhQQVRIX0MxNE5fV0lUSF9DT01NRU5UU19TSU5HTEVfTk9ERTsKKworICAgICAgYXNzZXJ0VHJ1ZShkZXNjcmksCisgICAgICAgICAgICAgICAgIGMxNG5BbmRDb21wYXJlKGZpbGVJbiwgZmlsZVJlZiwgZmlsZU91dCwgYzE0blVSSSwgdmFsaWRhdGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHBhdGgpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiAzLjUgRW50aXR5IFJlZmVyZW5jZXMKKyAgICAqCisgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgRmlsZU5vdEZvdW5kRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgU0FYRXhjZXB0aW9uCisgICAgKiBAc2VlIDxBIEhSRUY9Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUFIteG1sLWMxNG4tMjAwMTAxMTkjRXhhbXBsZS1FbnRpdGllcyI+dGhlIGV4YW1wbGUgZnJvbSB0aGUgc3BlYzwvQT4KKyAgICAqIEB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3QzNXN1YnRyZWUoKQorICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24sIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiwgU0FYRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiwgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uLCBUcmFuc2Zvcm1lckV4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZyBkZXNjcmkgPSAiMy41IEVudGl0eSBSZWZlcmVuY2VzLiAodW5jb21tZW50ZWQpIjsKKyAgICAgIFN0cmluZyBmaWxlSW4gPSBwcmVmaXggKyAiaW4vMzVfaW5wdXQueG1sIjsKKyAgICAgIFN0cmluZyBmaWxlUmVmID0gcHJlZml4ICsgImluLzM1X2MxNG4ueG1sIjsKKyAgICAgIFN0cmluZyBmaWxlT3V0ID0gcHJlZml4ICsgIm91dC94cGF0aF8zNV9vdXRwdXQueG1sIjsKKyAgICAgIFN0cmluZyBjMTRuVVJJID0gQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fT01JVF9DT01NRU5UUzsKKyAgICAgIGJvb2xlYW4gdmFsaWRhdGluZyA9IHRydWU7CisgICAgICBTdHJpbmcgeHBhdGggPSBudWxsOworCisgICAgICBhc3NlcnRUcnVlKGRlc2NyaSwKKyAgICAgICAgICAgICAgICAgYzE0bkFuZENvbXBhcmUoZmlsZUluLCBmaWxlUmVmLCBmaWxlT3V0LCBjMTRuVVJJLCB2YWxpZGF0aW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4cGF0aCkpOworICAgfQorICAgLyoqCisgICAgKiAzLjUgRW50aXR5IFJlZmVyZW5jZXMKKyAgICAqCisgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgRmlsZU5vdEZvdW5kRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgU0FYRXhjZXB0aW9uCisgICAgKiBAc2VlIDxBIEhSRUY9Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUFIteG1sLWMxNG4tMjAwMTAxMTkjRXhhbXBsZS1FbnRpdGllcyI+dGhlIGV4YW1wbGUgZnJvbSB0aGUgc3BlYzwvQT4KKyAgICAqIEB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3QzNXN1YnNldCgpCisgICAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiwgRmlsZU5vdEZvdW5kRXhjZXB0aW9uLCBTQVhFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLCBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24sIFRyYW5zZm9ybWVyRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIGRlc2NyaSA9ICIzLjUgRW50aXR5IFJlZmVyZW5jZXMuICh1bmNvbW1lbnRlZCkiOworICAgICAgU3RyaW5nIGZpbGVJbiA9IHByZWZpeCArICJpbi8zNV9pbnB1dC54bWwiOworICAgICAgU3RyaW5nIGZpbGVSZWYgPSBwcmVmaXggKyAiaW4vMzVfYzE0bi54bWwiOworICAgICAgU3RyaW5nIGZpbGVPdXQgPSBwcmVmaXggKyAib3V0L3hwYXRoXzM1X291dHB1dC54bWwiOworICAgICAgU3RyaW5nIGMxNG5VUkkgPSBDYW5vbmljYWxpemVyLkFMR09fSURfQzE0Tl9PTUlUX0NPTU1FTlRTOworICAgICAgYm9vbGVhbiB2YWxpZGF0aW5nID0gdHJ1ZTsKKyAgICAgIFN0cmluZyB4cGF0aCA9IENhbm9uaWNhbGl6ZXIuWFBBVEhfQzE0Tl9XSVRIX0NPTU1FTlRTX1NJTkdMRV9OT0RFOworCisgICAgICBhc3NlcnRUcnVlKGRlc2NyaSwKKyAgICAgICAgICAgICAgICAgYzE0bkFuZENvbXBhcmUoZmlsZUluLCBmaWxlUmVmLCBmaWxlT3V0LCBjMTRuVVJJLCB2YWxpZGF0aW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4cGF0aCkpOworICAgfQorCisgICAvKioKKyAgICAqIDMuNiBVVEYtOCBFbmNvZGluZworICAgICoKKyAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBGaWxlTm90Rm91bmRFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBTQVhFeGNlcHRpb24KKyAgICAqIEBzZWUgPEEgSFJFRj0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9QUi14bWwtYzE0bi0yMDAxMDExOSNFeGFtcGxlLVVURjgiPnRoZSBleGFtcGxlIGZyb20gdGhlIHNwZWM8L0E+CisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0MzZzdWJ0cmVlKCkKKyAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uLCBGaWxlTm90Rm91bmRFeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiwgVHJhbnNmb3JtZXJFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgZGVzY3JpID0gIjMuNiBVVEYtOCBFbmNvZGluZy4gKHVuY29tbWVudGVkKSI7CisgICAgICBTdHJpbmcgZmlsZUluID0gcHJlZml4ICsgImluLzM2X2lucHV0LnhtbCI7CisgICAgICBTdHJpbmcgZmlsZVJlZiA9IHByZWZpeCArICJpbi8zNl9jMTRuLnhtbCI7CisgICAgICBTdHJpbmcgZmlsZU91dCA9IHByZWZpeCArICJvdXQveHBhdGhfMzZfb3V0cHV0LnhtbCI7CisgICAgICBTdHJpbmcgYzE0blVSSSA9IENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX09NSVRfQ09NTUVOVFM7CisgICAgICBib29sZWFuIHZhbGlkYXRpbmcgPSB0cnVlOworICAgICAgU3RyaW5nIHhwYXRoID0gbnVsbDsKKworICAgICAgYXNzZXJ0VHJ1ZShkZXNjcmksCisgICAgICAgICAgICAgICAgIGMxNG5BbmRDb21wYXJlKGZpbGVJbiwgZmlsZVJlZiwgZmlsZU91dCwgYzE0blVSSSwgdmFsaWRhdGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHBhdGgpKTsKKyAgIH0KKyAgIC8qKgorICAgICogMy42IFVURi04IEVuY29kaW5nCisgICAgKgorICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbgorICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorICAgICogQHRocm93cyBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbgorICAgICogQHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFNBWEV4Y2VwdGlvbgorICAgICogQHNlZSA8QSBIUkVGPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1BSLXhtbC1jMTRuLTIwMDEwMTE5I0V4YW1wbGUtVVRGOCI+dGhlIGV4YW1wbGUgZnJvbSB0aGUgc3BlYzwvQT4KKyAgICAqIEB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3QzNnN1YnNldCgpCisgICAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiwgRmlsZU5vdEZvdW5kRXhjZXB0aW9uLCBTQVhFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLCBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24sIFRyYW5zZm9ybWVyRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIGRlc2NyaSA9ICIzLjYgVVRGLTggRW5jb2RpbmcuICh1bmNvbW1lbnRlZCkiOworICAgICAgU3RyaW5nIGZpbGVJbiA9IHByZWZpeCArICJpbi8zNl9pbnB1dC54bWwiOworICAgICAgU3RyaW5nIGZpbGVSZWYgPSBwcmVmaXggKyAiaW4vMzZfYzE0bi54bWwiOworICAgICAgU3RyaW5nIGZpbGVPdXQgPSBwcmVmaXggKyAib3V0L3hwYXRoXzM2X291dHB1dC54bWwiOworICAgICAgU3RyaW5nIGMxNG5VUkkgPSBDYW5vbmljYWxpemVyLkFMR09fSURfQzE0Tl9PTUlUX0NPTU1FTlRTOworICAgICAgYm9vbGVhbiB2YWxpZGF0aW5nID0gdHJ1ZTsKKyAgICAgIFN0cmluZyB4cGF0aCA9IENhbm9uaWNhbGl6ZXIuWFBBVEhfQzE0Tl9XSVRIX0NPTU1FTlRTX1NJTkdMRV9OT0RFOworCisgICAgICBhc3NlcnRUcnVlKGRlc2NyaSwKKyAgICAgICAgICAgICAgICAgYzE0bkFuZENvbXBhcmUoZmlsZUluLCBmaWxlUmVmLCBmaWxlT3V0LCBjMTRuVVJJLCB2YWxpZGF0aW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4cGF0aCkpOworICAgfQorCisgICAvKioKKyAgICAqIDMuNyBEb2N1bWVudCBTdWJzZXRzCisgICAgKgorICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbgorICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorICAgICogQHRocm93cyBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbgorICAgICogQHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFNBWEV4Y2VwdGlvbgorICAgICogQHNlZSA8QSBIUkVGPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1BSLXhtbC1jMTRuLTIwMDEwMTE5I0V4YW1wbGUtRG9jU3Vic2V0cyI+dGhlIGV4YW1wbGUgZnJvbSB0aGUgc3BlYzwvQT4KKyAgICAqIEB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3QzNygpCisgICAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiwgRmlsZU5vdEZvdW5kRXhjZXB0aW9uLCBTQVhFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLCBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24sIFRyYW5zZm9ybWVyRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIGRlc2NyaSA9ICIzLjcgRG9jdW1lbnQgU3Vic2V0cy4gKHVuY29tbWVudGVkKSI7CisgICAgICBTdHJpbmcgZmlsZUluID0gcHJlZml4ICsgImluLzM3X2lucHV0LnhtbCI7CisgICAgICBTdHJpbmcgZmlsZVJlZiA9IHByZWZpeCArICJpbi8zN19jMTRuLnhtbCI7CisgICAgICBTdHJpbmcgZmlsZU91dCA9IHByZWZpeCArICJvdXQveHBhdGhfMzdfb3V0cHV0LnhtbCI7CisgICAgICBTdHJpbmcgYzE0blVSSSA9IENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX09NSVRfQ09NTUVOVFM7CisgICAgICBib29sZWFuIHZhbGlkYXRpbmcgPSB0cnVlOworICAgICAgRWxlbWVudCB4cGF0aCA9IG51bGw7CisgICAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRmYWN0b3J5ID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCisgICAgICBkZmFjdG9yeS5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKworICAgICAgRG9jdW1lbnRCdWlsZGVyIGRiID0gZGZhY3RvcnkubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgICBEb2N1bWVudCBkb2MgPSBkYi5uZXdEb2N1bWVudCgpOworCisgICAgICB4cGF0aCA9IFhNTFV0aWxzLmNyZWF0ZUVsZW1lbnRJblNpZ25hdHVyZVNwYWNlKGRvYywgQ29uc3RhbnRzLl9UQUdfWFBBVEgpOworCisgICAgICB4cGF0aC5zZXRBdHRyaWJ1dGVOUyhDb25zdGFudHMuTmFtZXNwYWNlU3BlY05TLCAieG1sbnM6aWV0ZiIsICJodHRwOi8vd3d3LmlldGYub3JnIik7CisKKyAgICAgIC8vSi0KKyAgICAgICAgIFN0cmluZyB4cGF0aEZyb21TcGVjID0KKyAgICAgICAgICAgICAgIigvLy4gfCAvL0AqIHwgLy9uYW1lc3BhY2U6OiopIgorICAgICAgICAgICAgKyAiWyAiCisgICAgICAgICAgICArICJzZWxmOjppZXRmOmUxIG9yICIKKyAgICAgICAgICAgICsgIihwYXJlbnQ6OmlldGY6ZTEgYW5kIG5vdChzZWxmOjp0ZXh0KCkgb3Igc2VsZjo6ZTIpKSBvciAiCisgICAgICAgICAgICArICJjb3VudChpZChcIkUzXCIpfGFuY2VzdG9yLW9yLXNlbGY6Om5vZGUoKSkgPSBjb3VudChhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpICIKKyAgICAgICAgICAgICsgIl0iOworCisgICAgICAgICAvL0orCisgICAgICB4cGF0aC5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoeHBhdGhGcm9tU3BlYykpOworICAgICAgYXNzZXJ0VHJ1ZShkZXNjcmksCisgICAgICAgICAgICAgICAgIGMxNG5BbmRDb21wYXJlKGZpbGVJbiwgZmlsZVJlZiwgZmlsZU91dCwgYzE0blVSSSwgdmFsaWRhdGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHBhdGgpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiAzLjcgRG9jdW1lbnQgU3Vic2V0cworICAgICoKKyAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBGaWxlTm90Rm91bmRFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBTQVhFeGNlcHRpb24KKyAgICAqIEBzZWUgPEEgSFJFRj0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9QUi14bWwtYzE0bi0yMDAxMDExOSNFeGFtcGxlLURvY1N1YnNldHMiPnRoZSBleGFtcGxlIGZyb20gdGhlIHNwZWM8L0E+CisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0MzdieU5vZGVMaXN0KCkKKyAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uLCBGaWxlTm90Rm91bmRFeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiwgVHJhbnNmb3JtZXJFeGNlcHRpb24geworCisgICAgICAvL1N0cmluZyBkZXNjcmkgPSAiMy43IERvY3VtZW50IFN1YnNldHMuICh1bmNvbW1lbnRlZCksIGMxNG4gYnkgTm9kZUxpc3QiOworICAgICAgU3RyaW5nIGZpbGVJbiA9IHByZWZpeCArICJpbi8zN19pbnB1dC54bWwiOworICAgICAgU3RyaW5nIGZpbGVSZWYgPSBwcmVmaXggKyAiaW4vMzdfYzE0bi54bWwiOworICAgICAgLy9TdHJpbmcgYzE0blVSSSA9IENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX09NSVRfQ09NTUVOVFM7CisgICAgICAvL2Jvb2xlYW4gdmFsaWRhdGluZyA9IHRydWU7CisgICAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRmYWN0b3J5ID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCisgICAgICBkZmFjdG9yeS5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKworICAgICAgRG9jdW1lbnRCdWlsZGVyIGRiID0gZGZhY3RvcnkubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgICBvcmcueG1sLnNheC5FbnRpdHlSZXNvbHZlciByZXNvbHZlciA9IG5ldyBUZXN0VmVjdG9yUmVzb2x2ZXIoKTsKKworICAgICAgZGIuc2V0RW50aXR5UmVzb2x2ZXIocmVzb2x2ZXIpOworCisgICAgICBEb2N1bWVudCBkb2MgPSBkYi5wYXJzZShyZXNvbHZlci5yZXNvbHZlRW50aXR5KG51bGwsIGZpbGVJbikpOworICAgICAgLy9KLQorICAgICAgRWxlbWVudCBuc2NvbnRleHQgPSBUZXN0VXRpbHMuY3JlYXRlRFNjdHgoZG9jLCAiaWV0ZiIsICJodHRwOi8vd3d3LmlldGYub3JnIik7CisKKyAgICAgIFN0cmluZyB4cGF0aCA9ICIoLy8uIHwgLy9AKiB8IC8vbmFtZXNwYWNlOjoqKSIKKyAgICAgICAgICsgIlsgIgorICAgICAgICAgKyAic2VsZjo6aWV0ZjplMSBvciAiCisgICAgICAgICArICIocGFyZW50OjppZXRmOmUxIGFuZCBub3Qoc2VsZjo6dGV4dCgpIG9yIHNlbGY6OmUyKSkgb3IgIgorICAgICAgICAgKyAiY291bnQoaWQoXCJFM1wiKXxhbmNlc3Rvci1vci1zZWxmOjpub2RlKCkpID0gY291bnQoYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpKSAiCisgICAgICAgICArICJdIjsKKyAgICAgIC8vSisKKyAgICAgIENhY2hlZFhQYXRoQVBJIHhwYXRoQVBJID0gbmV3IENhY2hlZFhQYXRoQVBJKCk7CisKKyAgICAgIE5vZGVMaXN0IG5vZGVzID0geHBhdGhBUEkuc2VsZWN0Tm9kZUxpc3QoZG9jLCB4cGF0aCwgbnNjb250ZXh0KTsKKyAgICAgIENhbm9uaWNhbGl6ZXIgYzE0biA9CisgICAgICAgICBDYW5vbmljYWxpemVyLmdldEluc3RhbmNlKENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX09NSVRfQ09NTUVOVFMpOworICAgICAgYnl0ZSBjMTRuQnl0ZXNbXSA9IGMxNG4uY2Fub25pY2FsaXplWFBhdGhOb2RlU2V0KG5vZGVzKTsKKyAgICAgIElucHV0U3RyZWFtIHJlZlN0cmVhbSA9IHJlc29sdmVyLnJlc29sdmVFbnRpdHkobnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVSZWYpLmdldEJ5dGVTdHJlYW0oKTsKKyAgICAgIGJ5dGUgcmVmQnl0ZXNbXSA9IEphdmFVdGlscy5nZXRCeXRlc0Zyb21TdHJlYW0ocmVmU3RyZWFtKTsKKyAgICAgIGFzc2VydEVxdWFscyhuZXcgU3RyaW5nKHJlZkJ5dGVzKSxuZXcgU3RyaW5nKGMxNG5CeXRlcykpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0RGVmYXVsdE5hbWVzcGFjZU92ZXJyaWRkZW4KKyAgICAqCisgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgRmlsZU5vdEZvdW5kRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgU0FYRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uCisgICAgKiBwdWJsaWMgc3RhdGljIHZvaWQgX3Rlc3REZWZhdWx0TmFtZXNwYWNlT3ZlcnJpZGRlbigpCisgICAgKiAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24sIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiwgU0FYRXhjZXB0aW9uLAorICAgICogICAgICAgICAgICAgIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24sCisgICAgKiAgICAgICAgICAgICAgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24sIFRyYW5zZm9ybWVyRXhjZXB0aW9uIHsKKyAgICAqCisgICAgKiAgU3RyaW5nIGRlc2NyaSA9ICJEZWZhdWx0IG5hbWVzcGFjZSBvdmVycmlkZGVuIjsKKyAgICAqICBTdHJpbmcgZmlsZUluID0KKyAgICAqICAgICAiZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZW1wL2tleS9yZXRyaWV2YWwtZnJvbS1zYW1lLWRvYy54bWwiOworICAgICogIFN0cmluZyBmaWxlUmVmID0KKyAgICAqICAgICAiZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZW1wL2tleS9yZXRyaWV2YWwtZnJvbS1zYW1lLWRvYy1rZXkueG1sIjsKKyAgICAqICBTdHJpbmcgZmlsZU91dCA9CisgICAgKiAgICAgImRhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVtcC9rZXkvcmV0cmlldmFsLWZyb20tc2FtZS1kb2Mta2V5LWVycm9yLnhtbCI7CisgICAgKiAgU3RyaW5nIGMxNG5VUkkgPSBDYW5vbmljYWxpemVyLkFMR09fSURfQzE0Tl9PTUlUX0NPTU1FTlRTOworICAgICogIGJvb2xlYW4gdmFsaWRhdGluZyA9IGZhbHNlOworICAgICogIERvY3VtZW50QnVpbGRlckZhY3RvcnkgZGZhY3RvcnkgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisgICAgKgorICAgICogIGRmYWN0b3J5LnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworICAgICoKKyAgICAqICBEb2N1bWVudEJ1aWxkZXIgZGIgPSBkZmFjdG9yeS5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKKyAgICAqICAvLyBvcmcueG1sLnNheC5FbnRpdHlSZXNvbHZlciByZXNvbHZlciA9IG5ldyBUZXN0VmVjdG9yUmVzb2x2ZXIoKTsKKyAgICAqICAvLyBkYi5zZXRFbnRpdHlSZXNvbHZlcihyZXNvbHZlcik7CisgICAgKgorICAgICogIC8vIERvY3VtZW50IGRvYyA9IGRiLnBhcnNlKHJlc29sdmVyLnJlc29sdmVFbnRpdHkobnVsbCwgZmlsZUluKSk7CisgICAgKiAgRG9jdW1lbnQgZG9jID0gZGIucGFyc2UoZmlsZUluKTsKKyAgICAqICBFbGVtZW50IG5zY29udGV4dCA9IGRvYy5jcmVhdGVFbGVtZW50KCJjb250YWluZXIiKTsKKyAgICAqCisgICAgKiAgbnNjb250ZXh0LnNldEF0dHJpYnV0ZSgieG1sbnM6ZHMiLCAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyIpOworICAgICogIG5zY29udGV4dC5zZXRBdHRyaWJ1dGUoInhtbG5zOm15IiwKKyAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vd3d3LnhtbHNlY3VyaXR5Lm9yZy90ZW1wL215dGVtcG5zIik7CisgICAgKgorICAgICogIFN0cmluZyB4cGF0aCA9CisgICAgKiAgICAgIi8vbXk6S2V5TWF0ZXJpYWxzWzFdL2Rlc2NlbmRhbnQ6Om5vZGUoKVtub3Qoc2VsZjo6dGV4dCgpKV0iOworICAgICogIENhY2hlZFhQYXRoQVBJIHhwYXRoQVBJID0gbmV3IENhY2hlZFhQYXRoQVBJKCk7CisgICAgKiAgTm9kZUxpc3Qgbm9kZXMgPSB4cGF0aEFQSS5zZWxlY3ROb2RlTGlzdChkb2MsIHhwYXRoLCBuc2NvbnRleHQpOworICAgICogIENhbm9uaWNhbGl6ZXIgYzE0biA9CisgICAgKiAgICAgQ2Fub25pY2FsaXplci5nZXRJbnN0YW5jZShDYW5vbmljYWxpemVyLkFMR09fSURfQzE0Tl9PTUlUX0NPTU1FTlRTKTsKKyAgICAqICBieXRlIGMxNG5CeXRlc1tdID0gYzE0bi5jYW5vbmljYWxpemVYUGF0aE5vZGVTZXQobm9kZXMpOworICAgICogIC8vIElucHV0U3RyZWFtIHJlZlN0cmVhbSA9IHJlc29sdmVyLnJlc29sdmVFbnRpdHkobnVsbCwgZmlsZVJlZikuZ2V0Qnl0ZVN0cmVhbSgpOworICAgICogIC8vIGJ5dGUgcmVmQnl0ZXNbXSA9IEphdmFVdGlscy5nZXRCeXRlc0Zyb21TdHJlYW0ocmVmU3RyZWFtKTsKKyAgICAqICBieXRlIHJlZkJ5dGVzW10gPSBKYXZhVXRpbHMuZ2V0Qnl0ZXNGcm9tRmlsZShmaWxlUmVmKTsKKyAgICAqICBib29sZWFuIGVxdWFsID0gSmF2YVV0aWxzLmJpbmFyeUNvbXBhcmUocmVmQnl0ZXMsIGMxNG5CeXRlcyk7CisgICAgKgorICAgICogIGlmICghZXF1YWwpIHsKKyAgICAqICAgICBKYXZhVXRpbHMud3JpdGVCeXRlc1RvRmlsZW5hbWUoZmlsZU91dCwgYzE0bkJ5dGVzKTsKKyAgICAqICAgICBsb2cuZGVidWcoIldyb3RlIG1hbGljaW91cyBvdXRwdXQgZnJvbSBUZXN0IFwiIiArIGRlc2NyaQorICAgICogICAgICAgICAgICAgICArICJcIiB0byBmaWxlICIgKyBmaWxlT3V0KTsKKyAgICAqICB9CisgICAgKgorICAgICogIGFzc2VydFRydWUoZXF1YWwpOworICAgICogfQorICAgICovCisKKyAgIC8qKgorICAgICogTm90ZTogVGhpcyBzcGVjaWZpY2F0aW9uIHN1cHBvcnRzIHRoZSByZWNlbnQgWE1MIHBsZW5hcnkgZGVjaXNpb24gdG8KKyAgICAqIGRlcHJlY2F0ZSByZWxhdGl2ZSBuYW1lc3BhY2UgVVJJcyBhcyBmb2xsb3dzOiBpbXBsZW1lbnRhdGlvbnMgb2YgWE1MCisgICAgKiBjYW5vbmljYWxpemF0aW9uIE1VU1QgcmVwb3J0IGFuIG9wZXJhdGlvbiBmYWlsdXJlIG9uIGRvY3VtZW50cyBjb250YWluaW5nCisgICAgKiByZWxhdGl2ZSBuYW1lc3BhY2UgVVJJcy4gWE1MIGNhbm9uaWNhbGl6YXRpb24gTVVTVCBOT1QgYmUgaW1wbGVtZW50ZWQKKyAgICAqIHdpdGggYW4gWE1MIHBhcnNlciB0aGF0IGNvbnZlcnRzIHJlbGF0aXZlIFVSSXMgdG8gYWJzb2x1dGUgVVJJcy4KKyAgICAqCisgICAgKiBJbXBsZW1lbnRhdGlvbnMgTVVTVCByZXBvcnQgYW4gb3BlcmF0aW9uIGZhaWx1cmUgb24gZG9jdW1lbnRzIGNvbnRhaW5pbmcKKyAgICAqIHJlbGF0aXZlIG5hbWVzcGFjZSBVUklzLgorICAgICoKKyAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBGaWxlTm90Rm91bmRFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBTQVhFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3RSZWxhdGl2ZU5TYmVoYXZpb3VyKCkKKyAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uLCBGaWxlTm90Rm91bmRFeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiwgVHJhbnNmb3JtZXJFeGNlcHRpb24geworCisgICAgICAvL0otCisgICAgICBTdHJpbmcgaW5wdXRTdHIgPSAiIgorICAgICAgICAgKyAiPGFic29sdXRlOmNvcnJlY3QgICAgICB4bWxuczphYnNvbHV0ZT0naHR0cDovL3d3dy5hYnNvbHV0ZS5vcmcvI2xpa2VWb2RrYSc+IgorICAgICAgICAgKyAiPHJlbGF0aXZlOmluY29ycmVjdCAgICB4bWxuczpyZWxhdGl2ZT0nLi4vY2hlYXRpbmcjYXdheSc+IgorICAgICAgICAgKyAiPC9yZWxhdGl2ZTppbmNvcnJlY3Q+IgorICAgICAgICAgKyAiPC9hYnNvbHV0ZTpjb3JyZWN0PiIKKyAgICAgICAgICsgIlxuIgorICAgICAgICAgKyAiIjsKKyAgICAgIC8vSisKKyAgICAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkgZGZhY3RvcnkgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisKKyAgICAgIGRmYWN0b3J5LnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworCisgICAgICBEb2N1bWVudEJ1aWxkZXIgZGIgPSBkZmFjdG9yeS5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKKyAgICAgIERvY3VtZW50IGRvYyA9IGRiLnBhcnNlKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShpbnB1dFN0ci5nZXRCeXRlcygpKSk7CisgICAgICBib29sZWFuIHdlQ2F0Y2hlZFRoZVJlbGF0aXZlTlMgPSBmYWxzZTsKKworICAgICAgdHJ5IHsKKyAgICAgICAgIENhbm9uaWNhbGl6ZXIgYzE0biA9CisgICAgICAgICAgICBDYW5vbmljYWxpemVyLmdldEluc3RhbmNlKENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX09NSVRfQ09NTUVOVFMpOworICAgICAgICAgYzE0bi5jYW5vbmljYWxpemVTdWJ0cmVlKGRvYyk7CisKKyAgICAgIH0gY2F0Y2ggKENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24gY2V4KSB7CisKKyAgICAgICAgIC8vIGlmIHdlIHJlYWNoIHRoaXMgcG9pbnQgLSBnb29kLgorICAgICAgICAgbG9nLmRlYnVnKCJXZSBjYXRjaGVkIHRoZSBDMTRuRXgsIHRoYXQncyBnb29kOiAiICsgY2V4LmdldE1lc3NhZ2UoKSk7CisKKyAgICAgICAgIHdlQ2F0Y2hlZFRoZVJlbGF0aXZlTlMgPSB0cnVlOworICAgICAgfQorCisgICAgICBhc3NlcnRUcnVlKCJXZSBkaWQgbm90IGNhdGNoIHRoZSByZWxhdGl2ZSBuYW1lc3BhY2UiLAorICAgICAgICAgICAgICAgICB3ZUNhdGNoZWRUaGVSZWxhdGl2ZU5TKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBUaGUgWFBhdGggZGF0YSBtb2RlbCByZXByZXNlbnRzIGRhdGEgdXNpbmcgVUNTIGNoYXJhY3RlcnMuCisgICAgKiBJbXBsZW1lbnRhdGlvbnMgTVVTVCB1c2UgWE1MIHByb2Nlc3NvcnMgdGhhdCBzdXBwb3J0IFVURi04IGFuZCBVVEYtMTYKKyAgICAqIGFuZCB0cmFuc2xhdGUgdG8gdGhlIFVDUyBjaGFyYWN0ZXIgZG9tYWluLiBGb3IgVVRGLTE2LCB0aGUgbGVhZGluZyBieXRlCisgICAgKiBvcmRlciBtYXJrIGlzIHRyZWF0ZWQgYXMgYW4gYXJ0aWZhY3Qgb2YgZW5jb2RpbmcgYW5kIHN0cmlwcGVkIGZyb20gdGhlCisgICAgKiBVQ1MgY2hhcmFjdGVyIGRhdGEgKHN1YnNlcXVlbnQgemVybyB3aWR0aCBub24tYnJlYWtpbmcgc3BhY2VzIGFwcGVhcmluZworICAgICogd2l0aGluIHRoZSBVVEYtMTYgZGF0YSBhcmUgbm90IHJlbW92ZWQpIFtVVEYtMTYsIFNlY3Rpb24gMy4yXS4gU3VwcG9ydAorICAgICogZm9yIElTTy04ODU5LTEgZW5jb2RpbmcgaXMgUkVDT01NRU5ERUQsIGFuZCBhbGwgb3RoZXIgY2hhcmFjdGVyIGVuY29kaW5ncworICAgICogYXJlIE9QVElPTkFMLgorICAgICoKKyAgICAqICR0b2RvJCBpbXBsZW1lbnQgdGhlIHRlc3QKKyAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBGaWxlTm90Rm91bmRFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBTQVhFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3RUcmFuc2xhdGlvbkZyb21VVEYxNnRvVVRGOCgpCisgICAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiwgRmlsZU5vdEZvdW5kRXhjZXB0aW9uLCBTQVhFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLCBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24sIFRyYW5zZm9ybWVyRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIHZhbCA9CisgICAgICAgICAiPFVURjE2PlRoZSBnZXJtYW4gJmFtcDthdW1sICh3aGljaCBpcyBVbmljb2RlICZhbXA7I3hFNDspOiAgJnF1b3Q7JiN4RTQ7JnF1b3Q7PC9VVEYxNj4iOworICAgICAgYnl0ZSB1dGYxNltdID0gY29udmVydFRvVVRGMTYodmFsLmdldEJ5dGVzKCkpOworICAgICAgQ2Fub25pY2FsaXplciBjMTRuID0KKyAgICAgICAgIENhbm9uaWNhbGl6ZXIuZ2V0SW5zdGFuY2UoQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fT01JVF9DT01NRU5UUyk7CisgICAgICBieXRlIGMxNG5CeXRlc1tdID0gYzE0bi5jYW5vbmljYWxpemUodXRmMTYpOworICAgICAgb3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXIgcmVzb2x2ZXIgPSBuZXcgVGVzdFZlY3RvclJlc29sdmVyKCk7CisgICAgICBJbnB1dFN0cmVhbSByZWZTdHJlYW0gPSByZXNvbHZlci5yZXNvbHZlRW50aXR5KAorICAgICAgICAgbnVsbCwKKyAgICAgICAgICAgIHByZWZpeCArICIvaW4vdGVzdFRyYW5zbGF0aW9uRnJvbVVURjE2dG9VVEY4LnhtbCIpCisgICAgICAgICAgICAgICAuZ2V0Qnl0ZVN0cmVhbSgpOworICAgICAgYnl0ZSByZWZCeXRlc1tdID0gSmF2YVV0aWxzLmdldEJ5dGVzRnJvbVN0cmVhbShyZWZTdHJlYW0pOworICAgICAgYm9vbGVhbiBlcXVhbCA9IGphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdC5pc0VxdWFsKHJlZkJ5dGVzLCBjMTRuQnl0ZXMpOworCisgICAgICBhc3NlcnRUcnVlKCJQYXJzZXIgZG9lcyBub3QgdHJhbnNsYXRlIHRvIFVDUyBjaGFyYWN0ZXIgZG9tYWluIiwgZXF1YWwpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0WE1MQXR0cmlidXRlczEKKyAgICAqCisgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgRmlsZU5vdEZvdW5kRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgU0FYRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0WE1MQXR0cmlidXRlczEoKQorICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24sIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiwgU0FYRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiwgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uLCBUcmFuc2Zvcm1lckV4Y2VwdGlvbiB7CisgICAgICAvL0otCisgICAgICBTdHJpbmcgaW5wdXQgPSAiIgorICAgICAgICAgKyAiPGluY2x1ZGVkICAgIHhtbDpsYW5nPSdkZSc+IgorICAgICAgICAgKyAiPG5vdEluY2x1ZGVkIHhtbDpsYW5nPSdkZSc+IgorICAgICAgICAgKyAiPG5vdEluY2x1ZGVkIHhtbDpsYW5nPSd1ayc+IgorICAgICAgICAgKyAiPGluY2x1ZGVkICAgICAgICAgICAgICAgICA+IgorICAgICAgICAgKyAiPC9pbmNsdWRlZD4iCisgICAgICAgICArICI8L25vdEluY2x1ZGVkPiIKKyAgICAgICAgICsgIjwvbm90SW5jbHVkZWQ+IgorICAgICAgICAgKyAiPC9pbmNsdWRlZD4iOworCisgICAgICBTdHJpbmcgZGVmaW5lZE91dHB1dCA9ICIiCisgICAgICAgICArICI8aW5jbHVkZWQgeG1sOmxhbmc9XCJkZVwiPiIKKyAgICAgICAgICsgIjxpbmNsdWRlZCB4bWw6bGFuZz1cInVrXCI+IgorICAgICAgICAgKyAiPC9pbmNsdWRlZD4iCisgICAgICAgICArICI8L2luY2x1ZGVkPiI7CisgICAgICAvL0orCisgICAgICBhc3NlcnRUcnVlKGRvVGVzdFhNTEF0dHJpYnV0ZXMoaW5wdXQsIGRlZmluZWRPdXRwdXQpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdFhNTEF0dHJpYnV0ZXMyCisgICAgKgorICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbgorICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorICAgICogQHRocm93cyBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbgorICAgICogQHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFNBWEV4Y2VwdGlvbgorICAgICogQHRocm93cyBUcmFuc2Zvcm1lckV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgdGVzdFhNTEF0dHJpYnV0ZXMyKCkKKyAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uLCBGaWxlTm90Rm91bmRFeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiwgVHJhbnNmb3JtZXJFeGNlcHRpb24geworICAgICAgLy9KLQorICAgICAgU3RyaW5nIGlucHV0ID0gIiIKKyAgICAgICAgICsgIjxpbmNsdWRlZCAgICB4bWw6bGFuZz0ndWsnPiIKKyAgICAgICAgICsgIjxub3RJbmNsdWRlZCB4bWw6bGFuZz0nZGUnPiIKKyAgICAgICAgICsgIjxub3RJbmNsdWRlZCB4bWw6bGFuZz0ndWsnPiIKKyAgICAgICAgICsgIjxpbmNsdWRlZCAgICAgICAgICAgICAgICAgPiIKKyAgICAgICAgICsgIjwvaW5jbHVkZWQ+IgorICAgICAgICAgKyAiPC9ub3RJbmNsdWRlZD4iCisgICAgICAgICArICI8L25vdEluY2x1ZGVkPiIKKyAgICAgICAgICsgIjwvaW5jbHVkZWQ+IjsKKworICAgICAgU3RyaW5nIGRlZmluZWRPdXRwdXQgPSAiIgorICAgICAgICAgKyAiPGluY2x1ZGVkIHhtbDpsYW5nPVwidWtcIj4iCisgICAgICAgICArICI8aW5jbHVkZWQgeG1sOmxhbmc9XCJ1a1wiPiIKKyAgICAgICAgICsgIjwvaW5jbHVkZWQ+IgorICAgICAgICAgKyAiPC9pbmNsdWRlZD4iOworICAgICAgLy9KKworICAgICAgYXNzZXJ0VHJ1ZShkb1Rlc3RYTUxBdHRyaWJ1dGVzKGlucHV0LCBkZWZpbmVkT3V0cHV0KSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHRlc3RYTUxBdHRyaWJ1dGVzMworICAgICoKKyAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBGaWxlTm90Rm91bmRFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBTQVhFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3RYTUxBdHRyaWJ1dGVzMygpCisgICAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiwgRmlsZU5vdEZvdW5kRXhjZXB0aW9uLCBTQVhFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLCBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24sIFRyYW5zZm9ybWVyRXhjZXB0aW9uIHsKKyAgICAgIC8vSi0KKyAgICAgIFN0cmluZyBpbnB1dCA9ICIiCisgICAgICAgICArICI8aW5jbHVkZWQgICAgeG1sOmxhbmc9J2RlJz4iCisgICAgICAgICArICI8bm90SW5jbHVkZWQgeG1sOmxhbmc9J2RlJz4iCisgICAgICAgICArICI8bm90SW5jbHVkZWQgeG1sOmxhbmc9J3VrJz4iCisgICAgICAgICArICI8aW5jbHVkZWQgICAgeG1sOmxhbmc9J2RlJz4iCisgICAgICAgICArICI8L2luY2x1ZGVkPiIKKyAgICAgICAgICsgIjwvbm90SW5jbHVkZWQ+IgorICAgICAgICAgKyAiPC9ub3RJbmNsdWRlZD4iCisgICAgICAgICArICI8L2luY2x1ZGVkPiI7CisKKyAgICAgIFN0cmluZyBkZWZpbmVkT3V0cHV0ID0gIiIKKyAgICAgICAgICsgIjxpbmNsdWRlZCB4bWw6bGFuZz1cImRlXCI+IgorICAgICAgICAgKyAiPGluY2x1ZGVkIHhtbDpsYW5nPVwiZGVcIj4iCisgICAgICAgICArICI8L2luY2x1ZGVkPiIKKyAgICAgICAgICsgIjwvaW5jbHVkZWQ+IjsKKyAgICAgIC8vSisKKyAgICAgIGFzc2VydFRydWUoZG9UZXN0WE1MQXR0cmlidXRlcyhpbnB1dCwgZGVmaW5lZE91dHB1dCkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0WE1MQXR0cmlidXRlczQKKyAgICAqCisgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgRmlsZU5vdEZvdW5kRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgU0FYRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBfdGVzdFhNTEF0dHJpYnV0ZXM0KCkKKyAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uLCBGaWxlTm90Rm91bmRFeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiwgVHJhbnNmb3JtZXJFeGNlcHRpb24geworICAgICAgLy9KLQorICAgICAgU3RyaW5nIGlucHV0ID0gIiIKKyAgICAgICAgICsgIjxpbmNsdWRlZCAgICB4bWw6bGFuZz0nZGUnPiIKKyAgICAgICAgICsgIjxpbmNsdWRlZCAgICB4bWw6bGFuZz0nZGUnPiIKKyAgICAgICAgICsgIjxub3RJbmNsdWRlZCB4bWw6bGFuZz0ndWsnPiIKKyAgICAgICAgICsgIjxpbmNsdWRlZCAgICAgICAgICAgICAgICAgPiIKKyAgICAgICAgICsgIjwvaW5jbHVkZWQ+IgorICAgICAgICAgKyAiPC9ub3RJbmNsdWRlZD4iCisgICAgICAgICArICI8L2luY2x1ZGVkPiIKKyAgICAgICAgICsgIjwvaW5jbHVkZWQ+IjsKKworICAgICAgU3RyaW5nIGRlZmluZWRPdXRwdXQgPSAiIgorICAgICAgICAgKyAiPGluY2x1ZGVkIHhtbDpsYW5nPVwiZGVcIj4iCisgICAgICAgICArICI8aW5jbHVkZWQ+IgorICAgICAgICAgKyAiPGluY2x1ZGVkIHhtbDpsYW5nPVwidWtcIj4iCisgICAgICAgICArICI8L2luY2x1ZGVkPiIKKyAgICAgICAgICsgIjwvaW5jbHVkZWQ+IgorICAgICAgICAgKyAiPC9pbmNsdWRlZD4iOworICAgICAgLy9KKworICAgICAgYXNzZXJ0VHJ1ZShkb1Rlc3RYTUxBdHRyaWJ1dGVzKGlucHV0LCBkZWZpbmVkT3V0cHV0KSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHRlc3RYTUxBdHRyaWJ1dGVzNQorICAgICoKKyAgICAqIEB0aHJvd3MgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBGaWxlTm90Rm91bmRFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBTQVhFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgVHJhbnNmb3JtZXJFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIF90ZXN0WE1MQXR0cmlidXRlczUoKQorICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24sIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiwgU0FYRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiwgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uLCBUcmFuc2Zvcm1lckV4Y2VwdGlvbiB7CisgICAgICAvL0otCisgICAgICBTdHJpbmcgaW5wdXQgPSAiIgorICAgICAgICAgKyAiPGluY2x1ZGVkICAgICAgICAgICAgICAgICAgICAgICAgIHhtbDpsYW5nPSdkZSc+IgorICAgICAgICAgKyAiPGluY2x1ZGVkICAgICAgICAgICAgICAgICAgICAgICAgIHhtbDpsYW5nPSdkZSc+IgorICAgICAgICAgKyAiPG5vdEluY2x1ZGVkIHhtbDpzcGFjZT0ncHJlc2VydmUnIHhtbDpsYW5nPSd1ayc+IgorICAgICAgICAgKyAiPGluY2x1ZGVkICAgICAgICAgICAgICAgICA+IgorICAgICAgICAgKyAiPC9pbmNsdWRlZD4iCisgICAgICAgICArICI8L25vdEluY2x1ZGVkPiIKKyAgICAgICAgICsgIjwvaW5jbHVkZWQ+IgorICAgICAgICAgKyAiPC9pbmNsdWRlZD4iOworCisgICAgICBTdHJpbmcgZGVmaW5lZE91dHB1dCA9ICIiCisgICAgICAgICArICI8aW5jbHVkZWQgeG1sOmxhbmc9XCJkZVwiPiIKKyAgICAgICAgICsgIjxpbmNsdWRlZD4iCisgICAgICAgICArICI8aW5jbHVkZWQgeG1sOmxhbmc9XCJ1a1wiIHhtbDpzcGFjZT1cInByZXNlcnZlXCI+IgorICAgICAgICAgKyAiPC9pbmNsdWRlZD4iCisgICAgICAgICArICI8L2luY2x1ZGVkPiIKKyAgICAgICAgICsgIjwvaW5jbHVkZWQ+IjsKKyAgICAgIC8vSisKKyAgICAgIGFzc2VydFRydWUoZG9UZXN0WE1MQXR0cmlidXRlcyhpbnB1dCwgZGVmaW5lZE91dHB1dCkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0WE1MQXR0cmlidXRlczYKKyAgICAqCisgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgRmlsZU5vdEZvdW5kRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgU0FYRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBfdGVzdFhNTEF0dHJpYnV0ZXM2KCkKKyAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uLCBGaWxlTm90Rm91bmRFeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiwgVHJhbnNmb3JtZXJFeGNlcHRpb24geworICAgICAgLy9KLQorICAgICAgU3RyaW5nIGlucHV0ID0gIiIKKyAgICAgICAgICsgIjxpbmNsdWRlZCAgIHhtbDpzcGFjZT0ncHJlc2VydmUnICB4bWw6bGFuZz0nZGUnPiIKKyAgICAgICAgICsgIjxpbmNsdWRlZCAgICAgICAgICAgICAgICAgICAgICAgICB4bWw6bGFuZz0nZGUnPiIKKyAgICAgICAgICsgIjxub3RJbmNsdWRlZCAgICAgICAgICAgICAgICAgICAgICB4bWw6bGFuZz0ndWsnPiIKKyAgICAgICAgICsgIjxpbmNsdWRlZD4iCisgICAgICAgICArICI8L2luY2x1ZGVkPiIKKyAgICAgICAgICsgIjwvbm90SW5jbHVkZWQ+IgorICAgICAgICAgKyAiPC9pbmNsdWRlZD4iCisgICAgICAgICArICI8L2luY2x1ZGVkPiI7CisKKyAgICAgIFN0cmluZyBkZWZpbmVkT3V0cHV0ID0gIiIKKyAgICAgICAgICsgIjxpbmNsdWRlZCB4bWw6bGFuZz1cImRlXCIgeG1sOnNwYWNlPVwicHJlc2VydmVcIj4iCisgICAgICAgICArICI8aW5jbHVkZWQ+IgorICAgICAgICAgKyAiPGluY2x1ZGVkIHhtbDpsYW5nPVwidWtcIiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiPiIKKyAgICAgICAgICsgIjwvaW5jbHVkZWQ+IgorICAgICAgICAgKyAiPC9pbmNsdWRlZD4iCisgICAgICAgICArICI8L2luY2x1ZGVkPiI7CisgICAgICAvL0orCisgICAgICBhc3NlcnRUcnVlKGRvVGVzdFhNTEF0dHJpYnV0ZXMoaW5wdXQsIGRlZmluZWRPdXRwdXQpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgZG9UZXN0WE1MQXR0cmlidXRlcworICAgICoKKyAgICAqIEBwYXJhbSBpbnB1dAorICAgICogQHBhcmFtIGRlZmluZWRPdXRwdXQKKyAgICAqIEBwYXJhbSB3cml0ZVJlc3VsdHNUb0ZpbGUKKyAgICAqCisgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgRmlsZU5vdEZvdW5kRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgU0FYRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gZG9UZXN0WE1MQXR0cmlidXRlcygKKyAgICAgICAgICAgU3RyaW5nIGlucHV0LCBTdHJpbmcgZGVmaW5lZE91dHB1dCkKKyAgICAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uLCBGaWxlTm90Rm91bmRFeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiwgVHJhbnNmb3JtZXJFeGNlcHRpb24geworCisgICAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRmYWN0b3J5ID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCisgICAgICBkZmFjdG9yeS5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKyAgICAgIGRmYWN0b3J5LnNldFZhbGlkYXRpbmcodHJ1ZSk7CisKKyAgICAgIERvY3VtZW50QnVpbGRlciBkYiA9IGRmYWN0b3J5Lm5ld0RvY3VtZW50QnVpbGRlcigpOworCisgICAgICBkYi5zZXRFcnJvckhhbmRsZXIobmV3IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzCisgICAgICAgICAuSWdub3JlQWxsRXJyb3JIYW5kbGVyKCkpOworCisgICAgICBEb2N1bWVudCBkb2MgPSBkYi5wYXJzZShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oaW5wdXQuZ2V0Qnl0ZXMoKSkpOworICAgICAgQ2Fub25pY2FsaXplciBjMTRuaXplciA9CisgICAgICAgICBDYW5vbmljYWxpemVyLmdldEluc3RhbmNlKENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX09NSVRfQ09NTUVOVFMpOworICAgICAgQ2FjaGVkWFBhdGhBUEkgeHBhdGhBUEkgPSBuZXcgQ2FjaGVkWFBhdGhBUEkoKTsKKworICAgICAgLy9YTUxVdGlscy5jaXJjdW12ZW50QnVnMjY1MChkb2MpOworCisgICAgICBOb2RlTGlzdCBub2RlcyA9CisgICAgICAgICB4cGF0aEFQSS5zZWxlY3ROb2RlTGlzdChkb2MsICIoLy8qW2xvY2FsLW5hbWUoKT0naW5jbHVkZWQnXSB8IC8vQCpbcGFyZW50Ojpub2RlKClbbG9jYWwtbmFtZSgpPSdpbmNsdWRlZCddXSkiKTsKKyAgICAgIGJ5dGUgcmVzdWx0W10gPSBjMTRuaXplci5jYW5vbmljYWxpemVYUGF0aE5vZGVTZXQobm9kZXMpOworICAgICAgYnl0ZSBkZWZpbmVkW10gPSBkZWZpbmVkT3V0cHV0LmdldEJ5dGVzKCk7CisgICAgICBhc3NlcnRFcXVhbHMoZGVmaW5lZE91dHB1dCwgbmV3IFN0cmluZyhyZXN1bHQpKTsKKyAgICAgIHJldHVybiBqYXZhLnNlY3VyaXR5Lk1lc3NhZ2VEaWdlc3QuaXNFcXVhbChkZWZpbmVkLCByZXN1bHQpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBjMTRuQW5kQ29tcGFyZQorICAgICoKKyAgICAqIEBwYXJhbSBmaWxlSW4KKyAgICAqIEBwYXJhbSBmaWxlUmVmCisgICAgKiBAcGFyYW0gZmlsZU91dAorICAgICogQHBhcmFtIGMxNG5VUkkKKyAgICAqIEBwYXJhbSB2YWxpZGF0aW5nCisgICAgKiBAcGFyYW0geHBhdGgKKyAgICAqCisgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgRmlsZU5vdEZvdW5kRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgU0FYRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gYzE0bkFuZENvbXBhcmUoCisgICAgICAgICAgIFN0cmluZyBmaWxlSW4sIFN0cmluZyBmaWxlUmVmLCBTdHJpbmcgZmlsZU91dCwgU3RyaW5nIGMxNG5VUkksIGJvb2xlYW4gdmFsaWRhdGluZywgT2JqZWN0IHhwYXRoKQorICAgICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24sIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiwgU0FYRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiwgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uLCBUcmFuc2Zvcm1lckV4Y2VwdGlvbiB7CisKKyAgICAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkgZGZhY3RvcnkgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisKKyAgICAgIGRmYWN0b3J5LnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworICAgICAgZGZhY3Rvcnkuc2V0VmFsaWRhdGluZyh2YWxpZGF0aW5nKTsKKworICAgICAgRG9jdW1lbnRCdWlsZGVyIGRvY3VtZW50QnVpbGRlciA9IGRmYWN0b3J5Lm5ld0RvY3VtZW50QnVpbGRlcigpOworCisgICAgICAvLyB0aHJvdyBhd2F5IGFsbCB3YXJuaW5ncyBhbmQgZXJyb3JzCisgICAgICBkb2N1bWVudEJ1aWxkZXIuc2V0RXJyb3JIYW5kbGVyKG5ldyBJZ25vcmVBbGxFcnJvckhhbmRsZXIoKSk7CisKKyAgICAgIC8vIG9yZy54bWwuc2F4LkVudGl0eVJlc29sdmVyIHJlc29sdmVyID0gbmV3IFRlc3RWZWN0b3JSZXNvbHZlcigpOworICAgICAgLy8gZG9jdW1lbnRCdWlsZGVyLnNldEVudGl0eVJlc29sdmVyKHJlc29sdmVyKTsKKyAgICAgIC8vIERvY3VtZW50IGRvYyA9IGRvY3VtZW50QnVpbGRlci5wYXJzZShyZXNvbHZlci5yZXNvbHZlRW50aXR5KG51bGwsIGZpbGVJbikpOworICAgICAgICAgICAgCisgICAgICBEb2N1bWVudCBkb2MgPSBkb2N1bWVudEJ1aWxkZXIucGFyc2UoZmlsZUluKTsKKworCisgICAgICBDYW5vbmljYWxpemVyIGMxNG4gPSBDYW5vbmljYWxpemVyLmdldEluc3RhbmNlKGMxNG5VUkkpOworICAgICAgYnl0ZSBjMTRuQnl0ZXNbXSA9IG51bGw7CisKKyAgICAgIGlmICh4cGF0aCA9PSBudWxsKSB7CisgICAgICAgICBjMTRuQnl0ZXMgPSBjMTRuLmNhbm9uaWNhbGl6ZVN1YnRyZWUoZG9jKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgICBDYWNoZWRYUGF0aEFQSSB4cGF0aEFQSSA9IG5ldyBDYWNoZWRYUGF0aEFQSSgpOworICAgICAgICAgTm9kZUxpc3QgbmwgPSBudWxsOworCisgICAgICAgICBpZiAoeHBhdGggaW5zdGFuY2VvZiBTdHJpbmcpIHsKKyAgICAgICAgICAgIG5sID0geHBhdGhBUEkuc2VsZWN0Tm9kZUxpc3QoZG9jLCAoU3RyaW5nKSB4cGF0aCk7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgRWxlbWVudCB4cGF0aEVsZW1lbnQgPSAoRWxlbWVudCkgeHBhdGg7CisgICAgICAgICAgICBTdHJpbmcgeHBhdGhTdHIgPSAoKFRleHQpIHhwYXRoRWxlbWVudC5nZXRGaXJzdENoaWxkKCkpLmdldERhdGEoKTsKKworICAgICAgICAgICAgbmwgPSB4cGF0aEFQSS5zZWxlY3ROb2RlTGlzdChkb2MsIHhwYXRoU3RyLCB4cGF0aEVsZW1lbnQpOworICAgICAgICAgfQorCisgICAgICAgICBjMTRuQnl0ZXMgPSBjMTRuLmNhbm9uaWNhbGl6ZVhQYXRoTm9kZVNldChubCk7CisgICAgICB9CisKKyAgICAgIC8vIG9yZy54bWwuc2F4LklucHV0U291cmNlIHJlZklzID0gcmVzb2x2ZXIucmVzb2x2ZUVudGl0eShudWxsLCBmaWxlUmVmKTsKKyAgICAgIC8vIGJ5dGUgcmVmQnl0ZXNbXSA9IEphdmFVdGlscy5nZXRCeXRlc0Zyb21TdHJlYW0ocmVmSXMuZ2V0Qnl0ZVN0cmVhbSgpKTsKKyAgICAgIGJ5dGUgcmVmQnl0ZXNbXSA9IEphdmFVdGlscy5nZXRCeXRlc0Zyb21GaWxlKGZpbGVSZWYpOworCisgICAgICAvLyBpZiBldmVyeXRoaW5nIGlzIE9LLCByZXN1bHQgaXMgdHJ1ZTsgd2UgZG8gYSBiaW5hcnkgY29tcGFyZSwgYnl0ZSBieSBieXRlCisgICAgICBib29sZWFuIHJlc3VsdCA9IGphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdC5pc0VxdWFsKHJlZkJ5dGVzLCBjMTRuQnl0ZXMpOworCisgICAgICBpZiAocmVzdWx0ID09IGZhbHNlKSB7ICAgIAkgIAorICAgICAgICAgRmlsZSBmID0gbmV3IEZpbGUoZmlsZU91dCk7CisgICAgICAgICBpZiAoIWYuZXhpc3RzKCkpIHsKKyAgICAgICAgIAlGaWxlIHBhcmVudCA9IG5ldyBGaWxlKGYuZ2V0UGFyZW50KCkpOworICAgICAgICAgCXBhcmVudC5ta2RpcnMoKTsKKyAgICAgICAgIAlmLmNyZWF0ZU5ld0ZpbGUoKTsKKyAgICAgICAgIH0KKyAgICAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZm9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oZik7CisKKyAgICAgICAgIGZvcy53cml0ZShjMTRuQnl0ZXMpOworICAgICAgICAgbG9nLmRlYnVnKCJXcm90ZSBlcnJvcm5vdXMgcmVzdWx0IHRvIGZpbGUgIiArIGYudG9VUkwoKS50b1N0cmluZygpKTsKKyAgICAgICAgIGFzc2VydEVxdWFscyhuZXcgU3RyaW5nKHJlZkJ5dGVzKSxuZXcgU3RyaW5nKGMxNG5CeXRlcykpOworICAgICAgfQorCisgICAgICByZXR1cm4gcmVzdWx0OworICAgfQorCisgICAvKioKKyAgICAqIFRoaXMgbWV0aG9kIHRha2VzIHRoZSBpbnB1dCBieXRlcyBhcyBYTUwgRG9jdW1lbnQgYW5kIGNvbnZlcnRzIGl0IHRvIGFuCisgICAgKiBVVEYtMTYgZW5jb2RlZCBYTUwgZG9jdW1lbnQgd2hpY2ggaXMgc2VyaWFsaXplZCB0byBieXRlW10gYW5kIHJldHVybmVkLgorICAgICoKKyAgICAqIEBwYXJhbSBpbnB1dAorICAgICoKKyAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBTQVhFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgYnl0ZVtdIGNvbnZlcnRUb1VURjE2KGJ5dGUgaW5wdXRbXSkKKyAgICAgICAgICAgdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIElPRXhjZXB0aW9uLCBTQVhFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIFRyYW5zZm9ybWVyRXhjZXB0aW9uIHsKKworICAgICAgLy9TdHJpbmcgRU5DT0RJTkdfSVNPODg1OV8xID0gIklTTy04ODU5LTEiOworICAgICAgLy9TdHJpbmcgRU5DT0RJTkdfVVRGOCA9ICJVVEYtOCI7CisgICAgICBTdHJpbmcgRU5DT0RJTkdfVVRGMTYgPSAiVVRGLTE2IjsKKyAgICAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworICAgICAgRG9jdW1lbnRCdWlsZGVyIGRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOworICAgICAgRG9jdW1lbnQgZG9jID0gZGIucGFyc2UobmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGlucHV0KSk7CisgICAgICBUcmFuc2Zvcm1lckZhY3RvcnkgdEZhY3RvcnkgPSBUcmFuc2Zvcm1lckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKyAgICAgIFRyYW5zZm9ybWVyIHRyYW5zZm9ybWVyID0gdEZhY3RvcnkubmV3VHJhbnNmb3JtZXIoKTsKKworICAgICAgdHJhbnNmb3JtZXIuc2V0T3V0cHV0UHJvcGVydHkoT3V0cHV0S2V5cy5FTkNPRElORywgRU5DT0RJTkdfVVRGMTYpOworICAgICAgdHJhbnNmb3JtZXIuc2V0T3V0cHV0UHJvcGVydHkoT3V0cHV0S2V5cy5PTUlUX1hNTF9ERUNMQVJBVElPTiwgIm5vIik7CisKKyAgICAgIERPTVNvdXJjZSBzb3VyY2UgPSBuZXcgRE9NU291cmNlKGRvYyk7CisgICAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gb3MgPSBuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7CisgICAgICBTdHJlYW1SZXN1bHQgcmVzdWx0ID0gbmV3IFN0cmVhbVJlc3VsdChvcyk7CisKKyAgICAgIHRyYW5zZm9ybWVyLnRyYW5zZm9ybShzb3VyY2UsIHJlc3VsdCk7CisKKyAgICAgIHJldHVybiBvcy50b0J5dGVBcnJheSgpOworICAgfQorCisgICBzdGF0aWMgeworICAgICAgLyoKKyAgICAgIHRyeSB7CisgICAgICAgICAvLyBTdHJpbmcgd2QgPSBuZXcgRmlsZSgiLiIpLnRvVVJMKCkudG9FeHRlcm5hbEZvcm0oKTsKKyAgICAgICAgIC8vIHByZWZpeCA9IHdkLnN1YnN0cmluZygwLCB3ZC5sZW5ndGgoKS0yKSArICJkYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L2MxNG4vIjsKKyAgICAgIH0gY2F0Y2ggKGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbiB1cmxFeCkgeworICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24odXJsRXguZ2V0TWVzc2FnZSgpKTsKKyAgICAgIH0KKyAgICAgICovCisgICAJICBwcmVmaXggPSAiZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9jMTRuLyI7CisgICAJICBTdHJpbmcgYmFzZWRpciA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpOworICAgCSAgaWYoYmFzZWRpciAhPSBudWxsICYmICEiIi5lcXVhbHMoYmFzZWRpcikpIHsKKyAgIAkJcHJlZml4ID0gYmFzZWRpciArICIvIiArIHByZWZpeDsKKyAgICAgIH0KKyAgICAgIAorICAgICAgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuSW5pdC5pbml0KCk7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvYzE0bi9pbXBsZW1lbnRhdGlvbnMvRXhjbHVzaXZlQzE0TkludGVyb3AuamF2YSBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9jMTRuL2ltcGxlbWVudGF0aW9ucy9FeGNsdXNpdmVDMTROSW50ZXJvcC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmY2FmMzIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvYzE0bi9pbXBsZW1lbnRhdGlvbnMvRXhjbHVzaXZlQzE0TkludGVyb3AuamF2YQpAQCAtMCwwICsxLDIxMSBAQAorCisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LmMxNG4uaW1wbGVtZW50YXRpb25zOworCisKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuUmVmZXJlbmNlOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmU7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5pbnRlcm9wLkludGVyb3BUZXN0OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5KYXZhVXRpbHM7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworCisvKioKKyAqIEludGVyb3AgdGVzdCBmb3IgZXhjbHVzaXZlIGNhbm9uaWNhbCBYTUwuCisgKgorICogQGF1dGhvciBDaHJpc3RpYW4gR2V1ZXItUG9sbG1hbm4KKyAqLworcHVibGljIGNsYXNzIEV4Y2x1c2l2ZUMxNE5JbnRlcm9wIGV4dGVuZHMgSW50ZXJvcFRlc3QgeworCisgICAvKioge0BsaW5rIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nfSBsb2dnaW5nIGZhY2lsaXR5ICovCisgICAgc3RhdGljIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZyBsb2cgPSAKKyAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeS5nZXRMb2coRXhjbHVzaXZlQzE0TkludGVyb3AuY2xhc3MuZ2V0TmFtZSgpKTsKKworICAgIHN0YXRpYyB7CisgICAgICAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaW5pdCgpOworICAgIH0KKyAgIC8qKgorICAgICogTWV0aG9kIHN1aXRlCisgICAgKgorICAgICoKKyAgICAqLworICAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkgeworICAgICAgcmV0dXJuIG5ldyBUZXN0U3VpdGUoRXhjbHVzaXZlQzE0TkludGVyb3AuY2xhc3MpOworICAgfQorCisgICAvKioKKyAgICAqICBDb25zdHJ1Y3RvciBFeGNsdXNpdmVDMTROSW50ZXJvcAorICAgICoKKyAgICAqICBAcGFyYW0gTmFtZV8KKyAgICAqLworICAgcHVibGljIEV4Y2x1c2l2ZUMxNE5JbnRlcm9wKFN0cmluZyBOYW1lXykgeworICAgICAgc3VwZXIoTmFtZV8pOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWluCisgICAgKgorICAgICogQHBhcmFtIGFyZ3MKKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworCisgICAgICBTdHJpbmdbXSB0ZXN0Q2FzZU5hbWUgPSB7ICItbm9sb2FkaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjbHVzaXZlQzE0TkludGVyb3AuY2xhc3MuZ2V0TmFtZSgpIH07CisKKyAgICAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaW5pdCgpOworICAgICAganVuaXQudGV4dHVpLlRlc3RSdW5uZXIubWFpbih0ZXN0Q2FzZU5hbWUpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0X1kxCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHZvaWQgdGVzdF9ZMSgpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgc3VjY2VzcyA9IHQoImRhdGEvaW50ZXJvcC9jMTRuL1kxIiwgImV4Yy1zaWduYXR1cmUueG1sIik7CisKKyAgICAgIGFzc2VydFRydWUoc3VjY2Vzcywgc3VjY2VzcyA9PSBudWxsKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdF9ZMgorICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHRlc3RfWTIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIHN1Y2Nlc3MgPSB0KCJkYXRhL2ludGVyb3AvYzE0bi9ZMiIsICJzaWduYXR1cmUtam9zZXBoLWV4Yy54bWwiKTsKKworICAgICAgYXNzZXJ0VHJ1ZShzdWNjZXNzLCBzdWNjZXNzID09IG51bGwpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0X1kzCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHZvaWQgdGVzdF9ZMygpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgc3VjY2VzcyA9IHQoImRhdGEvaW50ZXJvcC9jMTRuL1kzIiwgInNpZ25hdHVyZS54bWwiKTsKKworICAgICAgYXNzZXJ0VHJ1ZShzdWNjZXNzLCBzdWNjZXNzID09IG51bGwpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0X1k0CisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHZvaWQgdGVzdF9ZNCgpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgc3VjY2VzcyA9IHQoImRhdGEvaW50ZXJvcC9jMTRuL1k0IiwgInNpZ25hdHVyZS54bWwiKTsKKworICAgICAgYXNzZXJ0VHJ1ZShzdWNjZXNzLCBzdWNjZXNzID09IG51bGwpOworICAgfQorCisgICBwdWJsaWMgdm9pZCB0ZXN0X3hmaWx0ZXIyKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZyBzdWNjZXNzID0gdCgiZGF0YS9pbnRlcm9wL3hmaWx0ZXIyL21lcmxpbi14cGF0aC1maWx0ZXIyLXRocmVlIiwgInNpZ24tc3BlYy54bWwiKTsKKworICAgICAgYXNzZXJ0VHJ1ZShzdWNjZXNzLCBzdWNjZXNzID09IG51bGwpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0CisgICAgKgorICAgICogQHBhcmFtIGRpcmVjdG9yeQorICAgICogQHBhcmFtIGZpbGUKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgU3RyaW5nIHQoU3RyaW5nIGRpcmVjdG9yeSwgU3RyaW5nIGZpbGUpIHRocm93cyBFeGNlcHRpb24KKyAgIHsKKyAgIAkgIFN0cmluZyBiYXNlZGlyID0gU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIik7CisgICAJICBpZihiYXNlZGlyICE9IG51bGwgJiYgISIiLmVxdWFscyhiYXNlZGlyKSkgeworICAgCSAgCWRpcmVjdG9yeSA9IGJhc2VkaXIgKyAiLyIgKyBkaXJlY3Rvcnk7CisgICAJICB9CisKKyAgICAgIEZpbGUgZiA9IG5ldyBGaWxlKGRpcmVjdG9yeSArICIvIiArIGZpbGUpOworICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPQorICAgICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCisgICAgICBkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisKKyAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlciBkYiA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKKyAgICAgIG9yZy53M2MuZG9tLkRvY3VtZW50IGRvYyA9IGRiLnBhcnNlKGYpOworICAgICAgCisgICAgICBFbGVtZW50IHNpZ0VsZW1lbnQgPQorICAgICAgICAgKEVsZW1lbnQpIGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLl9UQUdfU0lHTkFUVVJFKS5pdGVtKDApOworICAgICAgWE1MU2lnbmF0dXJlIHNpZ25hdHVyZSA9IG5ldyBYTUxTaWduYXR1cmUoc2lnRWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYudG9VUkwoKS50b1N0cmluZygpKTsKKyAgICAgIGJvb2xlYW4gdmVyaWZ5ID0KKyAgICAgICAgIHNpZ25hdHVyZS5jaGVja1NpZ25hdHVyZVZhbHVlKHNpZ25hdHVyZS5nZXRLZXlJbmZvKCkuZ2V0UHVibGljS2V5KCkpOworCisgICAgICBsb2cuZGVidWcoIiAgIHNpZ25hdHVyZS5jaGVja1NpZ25hdHVyZVZhbHVlIGZpbmlzaGVkOiAiICsgdmVyaWZ5KTsKKworICAgICAgaW50IGZhaWx1cmVzID0gMDsKKworICAgICAgLy8gaWYgKCF2ZXJpZnkpIHsKKyAgICAgIGlmICh0cnVlKSB7CisgICAgICAgICBTdHJpbmdCdWZmZXIgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisKKyAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2lnbmF0dXJlLmdldFNpZ25lZEluZm8oKS5nZXRMZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICBib29sZWFuIHJlZlZlcmlmeSA9CisgICAgICAgICAgICAgICBzaWduYXR1cmUuZ2V0U2lnbmVkSW5mbygpLmdldFZlcmlmaWNhdGlvblJlc3VsdChpKTsKKyAgICAgICAgICAgIEphdmFVdGlscy53cml0ZUJ5dGVzVG9GaWxlbmFtZShkaXJlY3RvcnkgKyAiL2MxNG4tIiArIGkgKyAiLmFwYWNoZS5odG1sIiwgc2lnbmF0dXJlLmdldFNpZ25lZEluZm8oKS5pdGVtKGkpLmdldEhUTUxSZXByZXNlbnRhdGlvbigpLmdldEJ5dGVzKCkpOworCisgICAgICAgICAgICBpZiAocmVmVmVyaWZ5KSB7CisgICAgICAgICAgICAgICBsb2cuZGVidWcoIlJlZmVyZW5jZSAiICsgaSArICIgd2FzIE9LIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgZmFpbHVyZXMrKzsKKworICAgICAgICAgICAgICAgc2IuYXBwZW5kKGkgKyAiICIpOworCisgICAgICAgICAgICAgICBKYXZhVXRpbHMud3JpdGVCeXRlc1RvRmlsZW5hbWUoZGlyZWN0b3J5ICsgIi9jMTRuLSIgKyBpICsgIi5hcGFjaGUudHh0Iiwgc2lnbmF0dXJlLmdldFNpZ25lZEluZm8oKS5pdGVtKGkpLmdldENvbnRlbnRzQWZ0ZXJUcmFuc2Zvcm1hdGlvbigpLmdldEJ5dGVzKCkpOworICAgICAgICAgICAgICAgSmF2YVV0aWxzLndyaXRlQnl0ZXNUb0ZpbGVuYW1lKGRpcmVjdG9yeSArICIvYzE0bi0iICsgaSArICIuYXBhY2hlLmh0bWwiLCBzaWduYXR1cmUuZ2V0U2lnbmVkSW5mbygpLml0ZW0oaSkuZ2V0SFRNTFJlcHJlc2VudGF0aW9uKCkuZ2V0Qnl0ZXMoKSk7CisKKyAgICAgICAgICAgICAgIFJlZmVyZW5jZSByZWZlcmVuY2UgPSBzaWduYXR1cmUuZ2V0U2lnbmVkSW5mbygpLml0ZW0oaSk7CisgICAgICAgICAgICAgICBpbnQgbGVuZ3RoID0gcmVmZXJlbmNlLmdldFRyYW5zZm9ybXMoKS5nZXRMZW5ndGgoKTsKKyAgICAgICAgICAgICAgIFN0cmluZyBhbGdvID0gcmVmZXJlbmNlLmdldFRyYW5zZm9ybXMoKS5pdGVtKGxlbmd0aAorICAgICAgICAgICAgICAgICAgLSAxKS5nZXRVUkkoKTsKKworICAgICAgICAgICAgICAgbG9nLmRlYnVnKCJSZWZlcmVuY2UgIiArIGkgKyAiIGZhaWxlZDogIiArIGFsZ28pOworICAgICAgICAgICAgfQorICAgICAgICAgfQorCisgICAgICAgICBTdHJpbmcgciA9IHNiLnRvU3RyaW5nKCkudHJpbSgpOworCisgICAgICAgICBpZiAoci5sZW5ndGgoKSA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gcjsKKyAgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgIH0KKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9jMTRuL2ltcGxlbWVudGF0aW9ucy9Nb2NrQ2Fub25pY2FsaXphdGlvbk1ldGhvZC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2MxNG4vaW1wbGVtZW50YXRpb25zL01vY2tDYW5vbmljYWxpemF0aW9uTWV0aG9kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdiNWY1YwotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9jMTRuL2ltcGxlbWVudGF0aW9ucy9Nb2NrQ2Fub25pY2FsaXphdGlvbk1ldGhvZC5qYXZhCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QuYzE0bi5pbXBsZW1lbnRhdGlvbnM7CisKK2ltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5DYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uQ2Fub25pY2FsaXplclNwaTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLmltcGxlbWVudGF0aW9ucy5DYW5vbmljYWxpemVyMTFfT21pdENvbW1lbnRzOworCitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKKworcHVibGljIGNsYXNzIE1vY2tDYW5vbmljYWxpemF0aW9uTWV0aG9kIGV4dGVuZHMgQ2Fub25pY2FsaXplclNwaSB7CisKKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBNT0NLX0NBTk9OSUNBTElaQVRJT05fTUVUSE9EID0gIm1vY2suY2Fub25pY2FsaXphdGlvbi5tZXRob2QiOworCXByaXZhdGUgQ2Fub25pY2FsaXplcjExX09taXRDb21tZW50cyBfaW1wbDsKKworCXB1YmxpYyBNb2NrQ2Fub25pY2FsaXphdGlvbk1ldGhvZCgpIHsKKwkJX2ltcGwgPSBuZXcgQ2Fub25pY2FsaXplcjExX09taXRDb21tZW50cygpOworCX0KKworCXB1YmxpYyBieXRlW10gZW5naW5lQ2Fub25pY2FsaXplU3ViVHJlZShOb2RlIHJvb3ROb2RlKQorCQkJdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24geworCQlyZXR1cm4gX2ltcGwuZW5naW5lQ2Fub25pY2FsaXplU3ViVHJlZShyb290Tm9kZSk7CisJfQorCisJcHVibGljIGJ5dGVbXSBlbmdpbmVDYW5vbmljYWxpemVTdWJUcmVlKE5vZGUgcm9vdE5vZGUsCisJCQlTdHJpbmcgaW5jbHVzaXZlTmFtZXNwYWNlcykgdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24geworCQlyZXR1cm4gX2ltcGwuZW5naW5lQ2Fub25pY2FsaXplU3ViVHJlZShyb290Tm9kZSwgaW5jbHVzaXZlTmFtZXNwYWNlcyk7CisJfQorCisJcHVibGljIGJ5dGVbXSBlbmdpbmVDYW5vbmljYWxpemVYUGF0aE5vZGVTZXQoU2V0IHhwYXRoTm9kZVNldCkKKwkJCXRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uIHsKKwkJcmV0dXJuIF9pbXBsLmVuZ2luZUNhbm9uaWNhbGl6ZVhQYXRoTm9kZVNldCh4cGF0aE5vZGVTZXQpOworCX0KKworCXB1YmxpYyBieXRlW10gZW5naW5lQ2Fub25pY2FsaXplWFBhdGhOb2RlU2V0KFNldCB4cGF0aE5vZGVTZXQsCisJCQlTdHJpbmcgaW5jbHVzaXZlTmFtZXNwYWNlcykgdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24geworCQlyZXR1cm4gX2ltcGwuZW5naW5lQ2Fub25pY2FsaXplWFBhdGhOb2RlU2V0KHhwYXRoTm9kZVNldCwKKwkJCQlpbmNsdXNpdmVOYW1lc3BhY2VzKTsKKwl9CisKKwlwdWJsaWMgYm9vbGVhbiBlbmdpbmVHZXRJbmNsdWRlQ29tbWVudHMoKSB7CisJCXJldHVybiBfaW1wbC5lbmdpbmVHZXRJbmNsdWRlQ29tbWVudHMoKTsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGVuZ2luZUdldFVSSSgpIHsKKwkJcmV0dXJuIE1PQ0tfQ0FOT05JQ0FMSVpBVElPTl9NRVRIT0Q7CisJfQorCisJcHVibGljIHZvaWQgc2V0V3JpdGVyKE91dHB1dFN0cmVhbSBvcykgeworCQlfaW1wbC5zZXRXcml0ZXIob3MpOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2VuY3J5cHRpb24vQmFsdGltb3JlRW5jVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2VuY3J5cHRpb24vQmFsdGltb3JlRW5jVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5ZjU1ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvZW5jcnlwdGlvbi9CYWx0aW1vcmVFbmNUZXN0LmphdmEKQEAgLTAsMCArMSw3MDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QuZW5jcnlwdGlvbjsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LktleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LktleUZhY3Rvcnk7CitpbXBvcnQgamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb247CitpbXBvcnQgamF2YS5zZWN1cml0eS5Qcml2YXRlS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGU7CitpbXBvcnQgamF2YS5zZWN1cml0eS5zcGVjLlBLQ1M4RW5jb2RlZEtleVNwZWM7CisKK2ltcG9ydCBqYXZheC5jcnlwdG8uQ2lwaGVyOworaW1wb3J0IGphdmF4LmNyeXB0by5Ob1N1Y2hQYWRkaW5nRXhjZXB0aW9uOworaW1wb3J0IGphdmF4LmNyeXB0by5TZWNyZXRLZXk7CitpbXBvcnQgamF2YXguY3J5cHRvLnNwZWMuU2VjcmV0S2V5U3BlYzsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXI7CitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeTsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay5Bc3NlcnQ7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5hbGdvcml0aG1zLkpDRU1hcHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5lbmNyeXB0aW9uLkVuY3J5cHRlZERhdGE7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZW5jcnlwdGlvbi5FbmNyeXB0ZWRLZXk7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZW5jcnlwdGlvbi5YTUxDaXBoZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5LZXlJbmZvOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC5LZXlOYW1lOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC5YNTA5RGF0YTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmNvbnRlbnQueDUwOS5YTUxYNTA5Q2VydGlmaWNhdGU7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5rZXlyZXNvbHZlci5LZXlSZXNvbHZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LlRlc3RVdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5KYXZhVXRpbHM7CitpbXBvcnQgb3JnLmFwYWNoZS54cGF0aC5YUGF0aEFQSTsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CisKKy8qKgorICogSW50ZXJvcCB0ZXN0IGZvciBYTUwgRW5jcnlwdGlvbgorICoKKyAqIEBhdXRob3IgQmVyaW4gTGF1dGVuYmFjaAorICovCisKKy8qCisKK1Rlc3RzIGZvciBtZXJsaW4teG1sZW5jLWZpdmUgbm90IGN1cnJlbnRseSBkb25lCisKK2JhZC1lbmNyeXB0LWNvbnRlbnQtYWVzMTI4LWNiYy1rdy1hZXMxOTIueG1sCitkZWNyeXB0aW9uLXRyYW5zZm9ybS1leGNlcHQueG1sIAorZGVjcnlwdGlvbi10cmFuc2Zvcm0ueG1sICAgICAgICAKK2VuY3J5cHQtY29udGVudC1hZXMxOTItY2JjLWRoLXNoYTUxMi54bWwKK2VuY3J5cHQtZGF0YS10cmlwbGVkZXMtY2JjLXJzYS1vYWVwLW1nZjFwLXNoYTI1Ni54bWwKK2VuY3J5cHQtZWxlbWVudC1hZXMyNTYtY2JjLWNhcnJpZWQta3ctYWVzMjU2LnhtbAorZW5jcnlwdC1lbGVtZW50LWFlczI1Ni1jYmMta3ctYWVzMjU2LWRoLXJpcGVtZDE2MC54bWwKK2VuY3J5cHQtZWxlbWVudC1hZXMyNTYtY2JjLXJldHJpZXZlZC1rdy1hZXMyNTYueG1sCitlbmNzaWctaG1hYy1zaGEyNTYtZGgueG1sCitlbmNzaWctaG1hYy1zaGEyNTYta3ctdHJpcGxlZGVzLWRoLnhtbAorZW5jc2lnLWhtYWMtc2hhMjU2LXJzYS0xXzUueG1sCitlbmNzaWctaG1hYy1zaGEyNTYtcnNhLW9hZXAtbWdmMXAueG1sCitlbmNzaWctcmlwZW1kMTYwLWhtYWMtcmlwZW1kMTYwLWt3LXRyaXBsZWRlcy54bWwKK2VuY3NpZy1zaGEyNTYtaG1hYy1zaGEyNTYta3ctYWVzMTI4LnhtbAorZW5jc2lnLXNoYTM4NC1obWFjLXNoYTM4NC1rdy1hZXMxOTIueG1sCitlbmNzaWctc2hhNTEyLWhtYWMtc2hhNTEyLWt3LWFlczI1Ni54bWwKKworKi8KK3B1YmxpYyBjbGFzcyBCYWx0aW1vcmVFbmNUZXN0IGV4dGVuZHMgVGVzdENhc2UgeworCisJcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGNhcmROdW1iZXI7CisJcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIHJzYUNlcnRTZXJpYWxOdW1iZXI7CisJcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIHRlc3REZWNyeXB0U3RyaW5nOworCXByaXZhdGUgc3RhdGljIGludCBub2RlQ291bnQgPSAwOworCXByaXZhdGUgc3RhdGljIGJ5dGVbXSBqZWJCeXRlczsKKwlwcml2YXRlIHN0YXRpYyBieXRlW10gam9iQnl0ZXM7CisJcHJpdmF0ZSBzdGF0aWMgYnl0ZVtdIGplZEJ5dGVzOworCXByaXZhdGUgc3RhdGljIFByaXZhdGVLZXkgcnNhS2V5OworCXByaXZhdGUgYm9vbGVhbiBoYXZlSVNPUGFkZGluZzsKKwlwcml2YXRlIGJvb2xlYW4gaGF2ZUtleVdyYXBzOworCisJLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKEJhbHRpbW9yZUVuY1Rlc3QuY2xhc3MuZ2V0TmFtZSgpKTsKKwkKKwkvKioKKwkgKiBNZXRob2Qgc3VpdGUKKwkgKgorCSAqCisJICovCisJcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCXJldHVybiBuZXcgVGVzdFN1aXRlKEJhbHRpbW9yZUVuY1Rlc3QuY2xhc3MpOworCX0KKworCS8qKgorCSAqICBDb25zdHJ1Y3RvciBCYWx0aW1vcmVFbmNUZXN0CisJICoKKwkgKiAgQHBhcmFtIE5hbWVfCisJICovCisJcHVibGljIEJhbHRpbW9yZUVuY1Rlc3QoU3RyaW5nIE5hbWVfKSB7CisJCXN1cGVyKE5hbWVfKTsKKwl9CisJCisJLyoqCisJICogTWV0aG9kIHNldFVwCisJICovCisJcHJvdGVjdGVkIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJLy8gQ3JlYXRlIHRoZSBjb21wYXJpc29uIHN0cmluZ3MKKwkKKwkJRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPQorCQkJRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCQlkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisJCWRiZi5zZXRBdHRyaWJ1dGUoImh0dHA6Ly94bWwub3JnL3NheC9mZWF0dXJlcy9uYW1lc3BhY2VzIiwgQm9vbGVhbi5UUlVFKTsKKwkJCisJCVN0cmluZyBmaWxlbmFtZSA9IAorCQkJImRhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvcGxhaW50ZXh0LnhtbCI7CisJCVN0cmluZyBiYXNlZGlyID0gU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIik7CisJCWlmKGJhc2VkaXIgIT0gbnVsbCAmJiAhIiIuZXF1YWxzKGJhc2VkaXIpKSB7CisJCQlmaWxlbmFtZSA9IGJhc2VkaXIgKyAiLyIgKyBmaWxlbmFtZTsKKwkJfQorCQlGaWxlIGYgPSBuZXcgRmlsZShmaWxlbmFtZSk7CisJCisJCURvY3VtZW50QnVpbGRlciBkYiA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKKwkJRG9jdW1lbnQgZG9jID0gZGIucGFyc2UobmV3IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtKGYpKTsKKwkKKwkJY2FyZE51bWJlciA9IHJldHJpZXZlQ0NOdW1iZXIoZG9jKTsKKwkKKwkJLy8gVGVzdCBkZWNyeXB0CisJCXRlc3REZWNyeXB0U3RyaW5nID0gbmV3IFN0cmluZygidG9wIHNlY3JldCBtZXNzYWdlXG4iKTsKKwkKKwkJLy8gQ291bnQgdGhlIG5vZGVzIGluIHRoZSBkb2N1bWVudCBhcyBhIHNlY29uZGFyeSB0ZXN0CisJCW5vZGVDb3VudCA9IGNvdW50Tm9kZXMoZG9jKTsKKwkKKwkJLy8gQ3JlYXRlIHRoZSBrZXlzCisJCWplYkJ5dGVzID0KKwkJCSJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3giLmdldEJ5dGVzKCJBU0NJSSIpOworCQlqb2JCeXRlcyA9IAorCQkJImFiY2RlZmdoaWprbG1ub3AiLmdldEJ5dGVzKCJBU0NJSSIpOworCQlqZWRCeXRlcyA9IAorCQkJImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Ii5nZXRCeXRlcygiQVNDSUkiKTsKKwkKKwkJLy8gQ2VydGlmaWNhdGUgaW5mb3JtYXRpb24KKwkJcnNhQ2VydFNlcmlhbE51bWJlciA9IG5ldyBTdHJpbmcoIjEwMTQ5MTg3NjY5MTAiKTsKKwkKKwkJLy8gcnNhS2V5CisJCWZpbGVuYW1lID0gImRhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvcnNhLnA4IjsKKwkJaWYoYmFzZWRpciAhPSBudWxsICYmICEiIi5lcXVhbHMoYmFzZWRpcikpIHsKKwkJCWZpbGVuYW1lID0gYmFzZWRpciArICIvIiArIGZpbGVuYW1lOworCQl9CisJCQorCQlieXRlW10gcGtjczhCeXRlcyA9IEphdmFVdGlscy5nZXRCeXRlc0Zyb21GaWxlKGZpbGVuYW1lKTsKKwkKKwkJUEtDUzhFbmNvZGVkS2V5U3BlYyBwa2NzOFNwZWMgPSAKKwkJCW5ldyBQS0NTOEVuY29kZWRLZXlTcGVjKHBrY3M4Qnl0ZXMpOworCQorCQkvLyBDcmVhdGUgYSBrZXkgZmFjdG9yeSAKKwkJS2V5RmFjdG9yeSBrZXlGYWN0b3J5ID0gCisJCQlLZXlGYWN0b3J5LmdldEluc3RhbmNlKCJSU0EiKTsKKwkJcnNhS2V5ID0ga2V5RmFjdG9yeS5nZW5lcmF0ZVByaXZhdGUocGtjczhTcGVjKTsKKwkKKwkJLy8gSW5pdGlhbGlzZSB0aGUgbGlicmFyeQorCQorCQlvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTsKKwkKKwkJLy8gUmVnaXN0ZXIgb3VyIGtleSByZXNvbHZlcgorCQlLZXlSZXNvbHZlci5yZWdpc3Rlcigib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5lbmNyeXB0aW9uLkJvYktleVJlc29sdmVyIik7CisKKwkJLy8gQ2hlY2sgd2hhdCBhbGdvcml0aG1zIGFyZSBhdmFpbGFibGUKKworCQloYXZlSVNPUGFkZGluZyA9IGZhbHNlOworCQlTdHJpbmcgYWxnb3JpdGhtSWQgPSAKKwkJCUpDRU1hcHBlci50cmFuc2xhdGVVUkl0b0pDRUlEKG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkVuY3J5cHRpb25Db25zdGFudHMuQUxHT19JRF9CTE9DS0NJUEhFUl9BRVMxMjgpOworCisJCWlmIChhbGdvcml0aG1JZCAhPSBudWxsKSB7CisJCQl0cnkgeworCQkJCWlmIChDaXBoZXIuZ2V0SW5zdGFuY2UoYWxnb3JpdGhtSWQpICE9IG51bGwpCisJCQkJCWhhdmVJU09QYWRkaW5nID0gdHJ1ZTsKKwkJCX0gY2F0Y2ggKE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiBuc2FlKSB7CisJCQl9IGNhdGNoIChOb1N1Y2hQYWRkaW5nRXhjZXB0aW9uIG5zcGUpIHsKKwkJCX0KKwkJfQorCisJCWhhdmVLZXlXcmFwcyA9IChKQ0VNYXBwZXIudHJhbnNsYXRlVVJJdG9KQ0VJRChvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5FbmNyeXB0aW9uQ29uc3RhbnRzLkFMR09fSURfS0VZV1JBUF9BRVMxMjgpICE9IG51bGwpOworCX0KKworCS8qKgorCSAqIE1ldGhvZCByZXRyaWV2ZUNDTnVtYmVyCisJICoKKwkgKiBSZXRyaWV2ZSB0aGUgY3JlZGl0IGNhcmQgbnVtYmVyIGZyb20gdGhlIHBheW1lbnQgaW5mbyBkb2N1bWVudAorCSAqCisJICogQHBhcmFtIGRvYyBUaGUgZG9jdW1lbnQgdG8gcmV0cmVpdmUgdGhlIGNhcmQgbnVtYmVyIGZyb20KKwkgKiBAcmV0dXJuIFRoZSByZXRyaWV2ZWQgY3JlZGl0IGNhcmQgbnVtYmVyCisJICovCisKKwlwdWJsaWMgc3RhdGljIFN0cmluZyByZXRyaWV2ZUNDTnVtYmVyIChEb2N1bWVudCBkb2MpIAorCQl0aHJvd3MgamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckV4Y2VwdGlvbiB7CisKKwkJRWxlbWVudCBuc2NvbnRleHQgPQorCQkJVGVzdFV0aWxzLmNyZWF0ZURTY3R4KGRvYywgIngiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVybjpleGFtcGxlOnBvIik7CisJCU5vZGUgY2NudW1FbHQgPSAKKwkJCVhQYXRoQVBJLnNlbGVjdFNpbmdsZU5vZGUoZG9jLCAiLy94Ok51bWJlci90ZXh0KCkiLCBuc2NvbnRleHQpOworCQkKKwkJaWYgKGNjbnVtRWx0ICE9IG51bGwpCisJCQlyZXR1cm4gY2NudW1FbHQuZ2V0Tm9kZVZhbHVlKCk7CisKKwkJcmV0dXJuIG51bGw7CisKKwl9CisKKwkvKgorCSAqIENoZWNrIHdlIGhhdmUgcmV0cmlldmVkIGEgQ3JlZGl0IENhcmQgbnVtYmVyIGFuZCB0aGF0IGl0IGlzIE9LCisJICogQ2hlY2sgdGhhdCB0aGUgZG9jdW1lbnQgaGFzIHRoZSBjb3JyZWN0IG51bWJlciBvZiBub2RlcworCSAqLworCisJcHJpdmF0ZSB2b2lkIGNoZWNrRGVjcnlwdGVkRG9jKERvY3VtZW50IGQsIGJvb2xlYW4gZG9Ob2RlQ2hlY2spIHRocm93cyBFeGNlcHRpb24geworCisJCVN0cmluZyBjYyA9IHJldHJpZXZlQ0NOdW1iZXIoZCk7CisJCWxvZy5kZWJ1ZygiUmV0cmlldmVkIENyZWRpdCBDYXJkIDogIiArIGNjKTsKKwkJYXNzZXJ0VHJ1ZShjYywgKChjYyE9IG51bGwpICYmIChjYy5lcXVhbHMoY2FyZE51bWJlcikpKSk7CisKKwkJLy8gVGVzdCBjYyBudW1iZXJzCisKKwkJaWYgKGRvTm9kZUNoZWNrKSB7CisJCQlpbnQgbXlOb2RlQ291bnQgPSBjb3VudE5vZGVzKGQpOworCisJCQlhc3NlcnRUcnVlKCJOb2RlIGNvdW50IG1pc21hdGNoZXMiLCAKKwkJCQkJICAgKChteU5vZGVDb3VudCA+IDApICYmIG15Tm9kZUNvdW50ID09IG5vZGVDb3VudCkpOworCQl9CisJfQorCisJLyoqCisJICogQ2hlY2sgYSBkZWNyeXB0IG9mIGRhdGEgd2FzIE9LCisJICovCisKKwlwcml2YXRlIHZvaWQgY2hlY2tEZWNyeXB0ZWREYXRhKGJ5dGUgW10gZGF0YSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKwkJU3RyaW5nIGlucHV0ID0gbmV3IFN0cmluZyhkYXRhLCAiQVNDSUkiKTsKKyAgICAgICAgQXNzZXJ0LmFzc2VydEVxdWFscyh0ZXN0RGVjcnlwdFN0cmluZywgaW5wdXQpOworCX0KKworCS8qKgorCSAqIE1ldGhvZCB0ZXN0X2ZpdmVfY29udGVudF8zZGVzX2NiYworCSAqCisJICogQ2hlY2sgdGhlIG1lcmxpbi1lbmMtZml2ZSBlbGVtZW50IGNvbnRlbnQgdGVzdCBmb3IgM0RFUworCSAqCisJICovCisKKworCXB1YmxpYyB2b2lkIHRlc3RfZml2ZV9jb250ZW50XzNkZXNfY2JjKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKwkJaWYgKGhhdmVJU09QYWRkaW5nKSB7CisJCQlTdHJpbmcgZmlsZW5hbWUgPSAiZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWNvbnRlbnQtdHJpcGxlZGVzLWNiYy54bWwiOworCisJCQlEb2N1bWVudCBkZCA9IGRlY3J5cHRFbGVtZW50KGZpbGVuYW1lKTsKKwkJCWNoZWNrRGVjcnlwdGVkRG9jKGRkLCB0cnVlKTsKKwkJfQorCQllbHNlIHsKKwkJCWxvZy53YXJuKCJTa2lwcGluZyB0ZXN0IHRlc3RfZml2ZV9jb250ZW50XzNkZXNfY2JzIGFzIG5lY2Vzc2FyeSBjcnlwdG8gYWxnb3JpdGhtcyBhcmUgbm90IGF2YWlsYWJsZSIpOworCQl9CisgICAgfQorCisJLyoqCisJICogTWV0aG9kIHRlc3RfZml2ZV9jb250ZW50X2FlczI1Nl9jYmMKKwkgKgorCSAqIENoZWNrIHRoZSBtZXJsaW4tZW5jLWZpdmUgZWxlbWVudCBjb250ZW50IHRlc3QgZm9yIEFFUzI1NgorCSAqCisJICovCisKKwlwdWJsaWMgdm9pZCB0ZXN0X2ZpdmVfY29udGVudF9hZXMyNTZfY2JjKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKwkJaWYgKGhhdmVJU09QYWRkaW5nKSB7CisJCQlTdHJpbmcgZmlsZW5hbWUgPSAiZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWNvbnRlbnQtYWVzMjU2LWNiYy1wcm9wLnhtbCI7CisKKwkJCURvY3VtZW50IGRkID0gZGVjcnlwdEVsZW1lbnQoZmlsZW5hbWUpOworCQkJY2hlY2tEZWNyeXB0ZWREb2MoZGQsIHRydWUpOworCQl9CisJCWVsc2UgeworCQkJbG9nLndhcm4oIlNraXBwaW5nIHRlc3QgdGVzdF9maXZlX2NvbnRlbnRfYWVzMjU2X2NiYyBhcyBuZWNlc3NhcnkgY3J5cHRvIGFsZ29yaXRobXMgYXJlIG5vdCBhdmFpbGFibGUiKTsKKwkJfQorICAgIH0KKworCS8qKgorCSAqIE1ldGhvZCB0ZXN0X2ZpdmVfY29udGVudF9hZXMxMjhfY2JjX2t3X2FlczE5MgorCSAqCisJICogQ2hlY2sgdGhlIG1lcmxpbi1lbmMtZml2ZSBlbGVtZW50IGNvbnRlbnQgdGVzdCBmb3IgQUVTMTI4IHdpdGgKKwkgKiBBRVMgMTkyIGtleSB3cmFwCisJICoKKwkgKi8KKworCXB1YmxpYyB2b2lkIHRlc3RfZml2ZV9jb250ZW50X2FlczEyOF9jYmNfa3dfYWVzMTkyKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKwkJaWYgKGhhdmVJU09QYWRkaW5nICYmIGhhdmVLZXlXcmFwcykgeworCQkJU3RyaW5nIGZpbGVuYW1lID0gImRhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZW5jcnlwdC1jb250ZW50LWFlczEyOC1jYmMta3ctYWVzMTkyLnhtbCI7CisKKwkJCURvY3VtZW50IGRkID0gZGVjcnlwdEVsZW1lbnQoZmlsZW5hbWUpOworCQkJY2hlY2tEZWNyeXB0ZWREb2MoZGQsIHRydWUpOworCQl9CisJCWVsc2UgeworCQkJbG9nLndhcm4oIlNraXBwaW5nIHRlc3QgdGVzdF9maXZlX2NvbnRlbnRfYWVzMTI4X2NiY19rd19hZXMxOTIgYXMgbmVjZXNzYXJ5IGNyeXB0byBhbGdvcml0aG1zIGFyZSBub3QgYXZhaWxhYmxlIik7CisJCX0KKyAgICB9CisKKwkvKioKKwkgKiBNZXRob2QgdGVzdF9maXZlX2NvbnRlbnRfM2Rlc19jYmNfa3dfYWVzMTI4CisJICoKKwkgKiBDaGVjayB0aGUgbWVybGluLWVuYy1maXZlIGVsZW1lbnQgY29udGVudCB0ZXN0IGZvciAzREVTIHdpdGgKKwkgKiBBRVMgMTI4IGtleSB3cmFwCisJICoKKwkgKi8KKworCXB1YmxpYyB2b2lkIHRlc3RfZml2ZV9jb250ZW50XzNkZXNfY2JjX2t3X2FlczEyOCgpIHRocm93cyBFeGNlcHRpb24geworCisJCWlmIChoYXZlSVNPUGFkZGluZyAmJiBoYXZlS2V5V3JhcHMpIHsKKwkJCVN0cmluZyBmaWxlbmFtZSA9ICJkYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3J5cHQtZWxlbWVudC10cmlwbGVkZXMtY2JjLWt3LWFlczEyOC54bWwiOworCisJCQlEb2N1bWVudCBkZCA9IGRlY3J5cHRFbGVtZW50KGZpbGVuYW1lKTsKKwkJCWNoZWNrRGVjcnlwdGVkRG9jKGRkLCB0cnVlKTsKKwkJfQorCQllbHNlIHsKKwkJCWxvZy53YXJuKCJTa2lwcGluZyB0ZXN0IHRlc3RfZml2ZV9jb250ZW50XzNkZXNfY2JjX2t3X2FlczEyOCBhcyBuZWNlc3NhcnkgY3J5cHRvIGFsZ29yaXRobXMgYXJlIG5vdCBhdmFpbGFibGUiKTsKKwkJfQorCisgICAgfQorCisJLyoqCisJICogTWV0aG9kIHRlc3RfZml2ZV9jb250ZW50X2FlczEyOF9jYmNfa3dfcnNhXzE1CisJICoKKwkgKiBDaGVjayB0aGUgbWVybGluLWVuYy1maXZlIGVsZW1lbnQgY29udGVudCB0ZXN0IGZvciBBRVMxMjggd2l0aAorCSAqIFJTQSBrZXkgd3JhcCAoUEtDUyAxLjUgcGFkZGluZykKKwkgKgorCSAqLworCisJcHVibGljIHZvaWQgdGVzdF9maXZlX2NvbnRlbnRfYWVzMTI4X2NiY19yc2FfMTUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworCQlpZiAoaGF2ZUlTT1BhZGRpbmcpIHsKKwkJCVN0cmluZyBmaWxlbmFtZSA9ICJkYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3J5cHQtZWxlbWVudC1hZXMxMjgtY2JjLXJzYS0xXzUueG1sIjsKKworCQkJRG9jdW1lbnQgZGQgPSBkZWNyeXB0RWxlbWVudChmaWxlbmFtZSk7CisJCQljaGVja0RlY3J5cHRlZERvYyhkZCwgdHJ1ZSk7CisJCX0KKwkJZWxzZSB7CisJCQlsb2cud2FybigiU2tpcHBpbmcgdGVzdCB0ZXN0X2ZpdmVfY29udGVudF9hZXMxMjhfY2JjX3JzYV8xNSBhcyBuZWNlc3NhcnkgY3J5cHRvIGFsZ29yaXRobXMgYXJlIG5vdCBhdmFpbGFibGUiKTsKKwkJfQorICAgIH0KKworCS8qKgorCSAqIE1ldGhvZCB0ZXN0X2ZpdmVfZWxlbWVudF9hZXMxOTJfY2JjX3JlZgorCSAqCisJICogQ2hlY2sgdGhlIG1lcmxpbi1lbmMtZml2ZSBlbGVtZW50IGRhdGEgdGVzdCBmb3IgQUVTMTkyIHdpdGgKKwkgKiBhIENpcGhlclJlZmVyZW5jZSBlbGVtZW50CisJICoKKwkgKi8KKworCXB1YmxpYyB2b2lkIHRlc3RfZml2ZV9lbGVtZW50X2FlczE5Ml9jYmNfcmVmKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKwkJaWYgKGhhdmVJU09QYWRkaW5nKSB7CisJCQlTdHJpbmcgZmlsZW5hbWUgPSAiZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWVsZW1lbnQtYWVzMTkyLWNiYy1yZWYueG1sIjsKKworCQkJRG9jdW1lbnQgZGQgPSBkZWNyeXB0RWxlbWVudChmaWxlbmFtZSk7CisJCQkvLyBOb3RlIC0gd2UgZG9uJ3QgY2hlY2sgdGhlIG5vZGUgY291bnQsIGFzIGl0IHdpbGwgYmUgZGlmZmVyZW50CisJCQkvLyBkdWUgdG8gdGhlIGVuY3J5cHRlZCB0ZXh0IHJlbWFpbmluIGluIHRoZSByZWZlcmVuY2Ugbm9kZXMKKwkJCWNoZWNrRGVjcnlwdGVkRG9jKGRkLCBmYWxzZSk7CisJCX0KKwkJZWxzZSB7CisJCQlsb2cud2FybigiU2tpcHBpbmcgdGVzdCB0ZXN0X2ZpdmVfZWxlbWVudF9hZXMxOTJfY2JjX3JlZiBhcyBuZWNlc3NhcnkgY3J5cHRvIGFsZ29yaXRobXMgYXJlIG5vdCBhdmFpbGFibGUiKTsKKwkJfQorICAgIH0KKworCS8qKgorCSAqIE1ldGhvZCB0ZXN0X2ZpdmVfZGF0YV9hZXMxMjhfY2JjCisJICoKKwkgKiBDaGVjayB0aGUgbWVybGluLWVuYy1maXZlIGVsZW1lbnQgZGF0YSB0ZXN0IGZvciBBRVMxMjggd2l0aCBubworCSAqIGtleSB3cmFwCisJICoKKwkgKi8KKworCXB1YmxpYyB2b2lkIHRlc3RfZml2ZV9kYXRhX2FlczEyOF9jYmMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworCQlpZiAoaGF2ZUlTT1BhZGRpbmcpIHsKKwkJCVN0cmluZyBmaWxlbmFtZSA9ICJkYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGVuYy1maXZlL2VuY3J5cHQtZGF0YS1hZXMxMjgtY2JjLnhtbCI7CisKKwkJCWJ5dGVbXSBkZWNyeXB0ID0gZGVjcnlwdERhdGEoZmlsZW5hbWUpOworCQkJY2hlY2tEZWNyeXB0ZWREYXRhKGRlY3J5cHQpOworCQl9CisJCWVsc2UgeworCQkJbG9nLndhcm4oIlNraXBwaW5nIHRlc3QgdGVzdF9maXZlX2RhdGFfYWVzMTI4X2NiYyBhcyBuZWNlc3NhcnkgY3J5cHRvIGFsZ29yaXRobXMgYXJlIG5vdCBhdmFpbGFibGUiKTsKKwkJfQorICAgIH0KKworCS8qKgorCSAqIE1ldGhvZCB0ZXN0X2ZpdmVfZGF0YV9hZXMyNTZfY2JjXzNkZXMKKwkgKgorCSAqIENoZWNrIHRoZSBtZXJsaW4tZW5jLWZpdmUgZWxlbWVudCBkYXRhIHRlc3QgZm9yIEFFUzI1NiB3aXRoIDNERVMKKwkgKiBrZXkgd3JhcAorCSAqCisJICovCisKKwlwdWJsaWMgdm9pZCB0ZXN0X2ZpdmVfZGF0YV9hZXMyNTZfY2JjXzNkZXMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworCQlpZiAoaGF2ZUlTT1BhZGRpbmcgJiYgaGF2ZUtleVdyYXBzKSB7CisJCQlTdHJpbmcgZmlsZW5hbWUgPSAiZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWRhdGEtYWVzMjU2LWNiYy1rdy10cmlwbGVkZXMueG1sIjsKKworCQkJYnl0ZVtdIGRlY3J5cHQgPSBkZWNyeXB0RGF0YShmaWxlbmFtZSk7CisJCQljaGVja0RlY3J5cHRlZERhdGEoZGVjcnlwdCk7CisJCX0KKwkJZWxzZSB7CisJCQlsb2cud2FybigiU2tpcHBpbmcgdGVzdCB0ZXN0X2ZpdmVfZGF0YV9hZXMyNTZfY2JjXzNkZXMgYXMgbmVjZXNzYXJ5IGNyeXB0byBhbGdvcml0aG1zIGFyZSBub3QgYXZhaWxhYmxlIik7CisJCX0KKyAgICB9CisKKwkvKioKKwkgKiBNZXRob2QgdGVzdF9maXZlX2RhdGFfYWVzMTkyX2NiY19hZXMyNTYKKwkgKgorCSAqIENoZWNrIHRoZSBtZXJsaW4tZW5jLWZpdmUgZWxlbWVudCBkYXRhIHRlc3QgZm9yIEFFUzE5MiB3aXRoIEFFUzI1NgorCSAqIGtleSB3cmFwCisJICoKKwkgKi8KKworCXB1YmxpYyB2b2lkIHRlc3RfZml2ZV9kYXRhX2FlczE5Ml9jYmNfYWVzMjU2KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKwkJaWYgKGhhdmVJU09QYWRkaW5nICYmIGhhdmVLZXlXcmFwcykgeworCQkJU3RyaW5nIGZpbGVuYW1lID0gImRhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZW5jLWZpdmUvZW5jcnlwdC1kYXRhLWFlczE5Mi1jYmMta3ctYWVzMjU2LnhtbCI7CisKKwkJCWJ5dGVbXSBkZWNyeXB0ID0gZGVjcnlwdERhdGEoZmlsZW5hbWUpOworCQkJY2hlY2tEZWNyeXB0ZWREYXRhKGRlY3J5cHQpOworCQl9CisJCWVsc2UgeworCQkJbG9nLndhcm4oIlNraXBwaW5nIHRlc3QgdGVzdF9maXZlX2RhdGFfYWVzMTkyX2NiY19hZXMyNTYgYXMgbmVjZXNzYXJ5IGNyeXB0byBhbGdvcml0aG1zIGFyZSBub3QgYXZhaWxhYmxlIik7CisJCX0KKyAgICB9CisKKwkvKioKKwkgKiBNZXRob2QgdGVzdF9maXZlX2RhdGFfM2Rlc19jYmNfcnNhX29hZXAKKwkgKgorCSAqIENoZWNrIHRoZSBtZXJsaW4tZW5jLWZpdmUgZWxlbWVudCBkYXRhIHRlc3QgZm9yIDNERVMgd2l0aAorCSAqIFJTQSBrZXkgd3JhcCAoT0FFUCBhbmQgbm8gcGFyYW1ldGVycykKKwkgKgorCSAqLworCisJcHVibGljIHZvaWQgdGVzdF9maXZlX2RhdGFfM2Rlc19jYmNfcnNhX29hZXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgICAgICAgICAgIC8vIFdvcmstYXJvdW5kIGZvciB0aGUgZmFjdCB0aGF0IEJDIGN1cnJlbnRseSBkb2Vzbid0IHN1cHBvcnQKKyAgICAgICAgICAgICAgICAvLyB0aGUgc3RhbmRhcmQgSkNFIG5hbWUgZm9yIG9hZXAgcGFkZGluZworICAgICAgICAgICAgICAgIGphdmEuc2VjdXJpdHkuUHJvdmlkZXIgYmMgPSBqYXZhLnNlY3VyaXR5LlNlY3VyaXR5LmdldFByb3ZpZGVyKCJCQyIpOworICAgICAgICAgICAgICAgIGlmIChiYyAhPSBudWxsKQorICAgICAgICAgICAgICAgICAgICBiYy5wdXQoIkFsZy5BbGlhcy5DaXBoZXIuUlNBL0VDQi9PQUVQV2l0aFNIQTFBbmRNR0YxUGFkZGluZyIsIlJTQS9PQUVQIik7CisKKwkJaWYgKGhhdmVJU09QYWRkaW5nKSB7CisJCQlTdHJpbmcgZmlsZW5hbWUgPSAiZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxlbmMtZml2ZS9lbmNyeXB0LWRhdGEtdHJpcGxlZGVzLWNiYy1yc2Etb2FlcC1tZ2YxcC54bWwiOworCisJCQlieXRlW10gZGVjcnlwdCA9IGRlY3J5cHREYXRhKGZpbGVuYW1lKTsKKwkJCWNoZWNrRGVjcnlwdGVkRGF0YShkZWNyeXB0KTsKKwkJfQorCQllbHNlIHsKKwkJCWxvZy53YXJuKCJTa2lwcGluZyB0ZXN0IHRlc3RfZml2ZV9kYXRhXzNkZXNfY2JjX3JzYV9vYWVwIGFzIG5lY2Vzc2FyeSBjcnlwdG8gYWxnb3JpdGhtcyBhcmUgbm90IGF2YWlsYWJsZSIpOworCQl9CisgICAgfQorCisJLyoqCisJICogTWV0aG9kIGRlY3J5cHRFbGVtZW50CisJICoKKwkgKiBUYWtlIGEga2V5LCBlbmNyeXB0aW9uIHR5cGUgYW5kIGEgZmlsZSwgZmluZCBhbiBlbmNyeXB0ZWQgZWxlbWVudAorCSAqIGRlY3J5cHQgaXQgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIGRvY3VtZW50CisJICoKKwkgKiBAcGFyYW0gZmlsZW5hbWUgRmlsZSB0byBkZWNyeXB0IGZyb20KKwkgKi8KKworCXB1YmxpYyBEb2N1bWVudCBkZWNyeXB0RWxlbWVudCAoU3RyaW5nIGZpbGVuYW1lKSAKKwkJdGhyb3dzIEV4Y2VwdGlvbiB7CisKKwkJWE1MQ2lwaGVyIGNpcGhlcjsKKwkJCisJCS8vIFBhcnNlIHRoZSBkb2N1bWVudCBpbiBxdWVzdGlvbgorCisJCWphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0KKwkJCWphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKwkJZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworCQlkYmYuc2V0QXR0cmlidXRlKCJodHRwOi8veG1sLm9yZy9zYXgvZmVhdHVyZXMvbmFtZXNwYWNlcyIsIEJvb2xlYW4uVFJVRSk7CisJCVN0cmluZyBiYXNlZGlyID0gU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIik7CisJCWlmKGJhc2VkaXIgIT0gbnVsbCAmJiAhIiIuZXF1YWxzKGJhc2VkaXIpKSB7CisJCQlmaWxlbmFtZSA9IGJhc2VkaXIgKyAiLyIgKyBmaWxlbmFtZTsKKwkJfQorCQlGaWxlIGYgPSBuZXcgRmlsZShmaWxlbmFtZSk7CisKKwkJRG9jdW1lbnRCdWlsZGVyIGRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOworCQkKKwkJRG9jdW1lbnQgZG9jID0gZGIucGFyc2UobmV3IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtKGYpKTsKKwkJCisJCS8vIE5vdyB3ZSBoYXZlIHRoZSBkb2N1bWVudCwgbGV0cyBidWlsZCB0aGUgWE1MQ2lwaGVyIGVsZW1lbnQKKworCQlFbGVtZW50IGVlID0gbnVsbDsKKwkJCisJCS8vIENyZWF0ZSB0aGUgWE1MQ2lwaGVyIGVsZW1lbnQKKwkJCisJCWNpcGhlciA9IFhNTENpcGhlci5nZXRJbnN0YW5jZSgpOworCisJCS8vIE5lZWQgdG8gcHJlLWxvYWQgdGhlIEVuY3J5cHRlZCBEYXRhIHNvIHdlIGNhbiBnZXQgdGhlIGtleSBpbmZvCisKKwkJZWUgPSAoRWxlbWVudCkgZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJFbmNyeXB0ZWREYXRhIikuaXRlbSgwKTsKKwkJY2lwaGVyLmluaXQoWE1MQ2lwaGVyLkRFQ1JZUFRfTU9ERSwgbnVsbCk7CisJCUVuY3J5cHRlZERhdGEgZW5jcnlwdGVkRGF0YSA9IGNpcGhlci5sb2FkRW5jcnlwdGVkRGF0YShkb2MsIGVlKTsKKyAgIAorCQlLZXkga2V5ID0gZmluZEtleShlbmNyeXB0ZWREYXRhKTsKKwkJY2lwaGVyLmluaXQoWE1MQ2lwaGVyLkRFQ1JZUFRfTU9ERSwga2V5KTsKKwkJRG9jdW1lbnQgZGQgPSBjaXBoZXIuZG9GaW5hbChkb2MsIGVlKTsKKworCQlyZXR1cm4gZGQ7CisJCQkKKyAgICB9CisKKwkvKioKKwkgKiBNZXRob2QgZGVjcnlwdERhdGEKKwkgKgorCSAqIFRha2UgYSBmaWxlLCBmaW5kIGFuIGVuY3J5cHRlZCBlbGVtZW50IGRlY3J5cHQgaXQgYW5kIHJldHVybiB0aGUgCisJICogcmVzdWx0aW5nIGJ5dGUgYXJyYXkKKwkgKgorCSAqIEBwYXJhbSBmaWxlbmFtZSBGaWxlIHRvIGRlY3J5cHQgZnJvbQorCSAqLworCisJcHVibGljIGJ5dGVbXSBkZWNyeXB0RGF0YSAoU3RyaW5nIGZpbGVuYW1lKSAKKwkJdGhyb3dzIEV4Y2VwdGlvbiB7CisKKwkJWE1MQ2lwaGVyIGNpcGhlcjsKKwkJCisJCS8vIFBhcnNlIHRoZSBkb2N1bWVudCBpbiBxdWVzdGlvbgorCisJCWphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0KKwkJCWphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKwkJZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworCQlkYmYuc2V0QXR0cmlidXRlKCJodHRwOi8veG1sLm9yZy9zYXgvZmVhdHVyZXMvbmFtZXNwYWNlcyIsIEJvb2xlYW4uVFJVRSk7CisJCVN0cmluZyBiYXNlZGlyID0gU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIik7CisJCWlmKGJhc2VkaXIgIT0gbnVsbCAmJiAhIiIuZXF1YWxzKGJhc2VkaXIpKSB7CisJCQlmaWxlbmFtZSA9IGJhc2VkaXIgKyAiLyIgKyBmaWxlbmFtZTsKKwkJfQorCQlGaWxlIGYgPSBuZXcgRmlsZShmaWxlbmFtZSk7CisKKwkJRG9jdW1lbnRCdWlsZGVyIGRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOworCQkKKwkJRG9jdW1lbnQgZG9jID0gZGIucGFyc2UobmV3IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtKGYpKTsKKwkJCisJCS8vIE5vdyB3ZSBoYXZlIHRoZSBkb2N1bWVudCwgbGV0cyBidWlsZCB0aGUgWE1MQ2lwaGVyIGVsZW1lbnQKKworCQlFbGVtZW50IGVlID0gbnVsbDsKKwkJCisJCS8vIENyZWF0ZSB0aGUgWE1MQ2lwaGVyIGVsZW1lbnQKKwkJCisJCWNpcGhlciA9IFhNTENpcGhlci5nZXRJbnN0YW5jZSgpOworCisJCS8vIE5lZWQgdG8gcHJlLWxvYWQgdGhlIEVuY3J5cHRlZCBEYXRhIHNvIHdlIGNhbiBnZXQgdGhlIGtleSBpbmZvCisKKwkJZWUgPSAoRWxlbWVudCkgZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJFbmNyeXB0ZWREYXRhIikuaXRlbSgwKTsKKwkJY2lwaGVyLmluaXQoWE1MQ2lwaGVyLkRFQ1JZUFRfTU9ERSwgbnVsbCk7CisJCUVuY3J5cHRlZERhdGEgZW5jcnlwdGVkRGF0YSA9IGNpcGhlci5sb2FkRW5jcnlwdGVkRGF0YShkb2MsIGVlKTsKKworCQlLZXkga2V5ID0gZmluZEtleShlbmNyeXB0ZWREYXRhKTsKKwkJCisJCWNpcGhlci5pbml0KFhNTENpcGhlci5ERUNSWVBUX01PREUsIGtleSk7CisgICAgICAgICAgICAgICAKKwkJYnl0ZVtdIGRkID0gY2lwaGVyLmRlY3J5cHRUb0J5dGVBcnJheShlZSk7CisKKwkJcmV0dXJuIGRkOworCQkJCisgICAgfQorCisJLyoqIAorCSAqIE1ldGhvZCBtYXBLZXlOYW1lCisJICoKKwkgKiBDcmVhdGUgYSBzZWNyZXQga2V5IGZyb20gYSBrZXkgbmFtZSBmb3IgbWVybGluLWZpdmUKKwkgKgorCSAqIEBwYXJhbSBuYW1lIE5hbWUgdG8gbWFwIGEga2V5IGZyb20KKwkgKi8KKworCXB1YmxpYyBTZWNyZXRLZXkgbWFwS2V5TmFtZShTdHJpbmcgbmFtZSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgICAgaWYgKG5hbWUuZXF1YWxzKCJqb2IiKSkgeworCisJCQkvLyBKZWIgaXMgYSBBRVMtMTI4IGtleQorCSAgICAgICAgU2VjcmV0S2V5IGtleSA9IG5ldyBTZWNyZXRLZXlTcGVjKGpvYkJ5dGVzLCAiQUVTIik7CisJCQlyZXR1cm4ga2V5OworCQl9CisJCWlmIChuYW1lLmVxdWFscygiamViIikpIHsKKworCQkJLy8gSmViIGlzIGEgQUVTLTE5MiBrZXkKKwkgICAgICAgIFNlY3JldEtleSBrZXkgPSBuZXcgU2VjcmV0S2V5U3BlYyhqZWJCeXRlcywgIkFFUyIpOworCQkJcmV0dXJuIGtleTsKKwkJfQorCQlpZiAobmFtZS5lcXVhbHMoImplZCIpKSB7CisKKwkJCS8vIEplYiBpcyBhIEFFUy0yNTYga2V5CisJICAgICAgICBTZWNyZXRLZXkga2V5ID0gbmV3IFNlY3JldEtleVNwZWMoamVkQnl0ZXMsICJBRVMiKTsKKwkJCXJldHVybiBrZXk7CisJCX0KKworCQlyZXR1cm4gbnVsbDsKKworCX0KKworCS8qKgorCSAqIE1ldGhvZCBmaW5kS2V5CisJICoKKwkgKiBHaXZlbiBhbiBlbmNyeXB0ZWREYXRhIHN0cnVjdHVyZSwgcmV0dXJuIHRoZSBrZXkgdGhhdCB3aWxsIGRlY3J5cHQKKwkgKiBpdAorCSAqCisJICogQHBhcmFtIGVuY3J5cHRlZERhdGEgRW5jcnlwdGVkRGF0YSB0byBnZXQga2V5IGZvcgorCSAqLworCisJcHVibGljIEtleSBmaW5kS2V5KEVuY3J5cHRlZERhdGEgZW5jcnlwdGVkRGF0YSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKwkJS2V5SW5mbyBraSA9IGVuY3J5cHRlZERhdGEuZ2V0S2V5SW5mbygpOworICAgCisJCUtleSBrZXkgPSBudWxsOworCQlLZXkga2VrID0gbnVsbDsKKworCQlpZiAoa2kgPT0gbnVsbCkKKwkJCXJldHVybiBudWxsOworCQkKKworCQkvLyBGaXJzdCBjaGVjayBmb3IgYSBrbm93biBrZXkgbmFtZQorCQlLZXlOYW1lIGtleU5hbWUgPSBraS5pdGVtS2V5TmFtZSgwKTsKKwkJaWYgKGtleU5hbWUgIT0gbnVsbCkgeworCQkJcmV0dXJuIChtYXBLZXlOYW1lKGtleU5hbWUuZ2V0S2V5TmFtZSgpKSk7CisJCX0KKworCQkvLyBEZWNyeXB0IGFueSBlbmNyeXB0ZWRLZXkgc3RydWN0dXJlcworCQlFbmNyeXB0ZWRLZXkgZW5jcnlwdGVkS2V5ID0ga2kuaXRlbUVuY3J5cHRlZEtleSgwKTsKKwkJCisJCWlmIChlbmNyeXB0ZWRLZXkgPT0gbnVsbCkKKwkJCXJldHVybiBudWxsOworCSAKKwkJS2V5SW5mbyBraWVrID0gZW5jcnlwdGVkS2V5LmdldEtleUluZm8oKTsKKwkJaWYgKGtpZWsgPT0gbnVsbCkgeworCQkJcmV0dXJuIG51bGw7CisJCX0KKworCQlLZXlOYW1lIGtla0tleU5hbWUgPSBraWVrLml0ZW1LZXlOYW1lKDApOworCQlpZiAoa2VrS2V5TmFtZSAhPSBudWxsKSB7CisJCQlrZWsgPSBtYXBLZXlOYW1lKGtla0tleU5hbWUuZ2V0S2V5TmFtZSgpKTsKKwkJfQorCQllbHNlIHsKKworCQkJWDUwOURhdGEgY2VydERhdGEgPSBraWVrLml0ZW1YNTA5RGF0YSgwKTsKKwkJCVhNTFg1MDlDZXJ0aWZpY2F0ZSB4Y2VydCA9IGNlcnREYXRhLml0ZW1DZXJ0aWZpY2F0ZSgwKTsKKwkJCVg1MDlDZXJ0aWZpY2F0ZSBjZXJ0ID0geGNlcnQuZ2V0WDUwOUNlcnRpZmljYXRlKCk7CisKKwkJCWlmIChjZXJ0ICE9IG51bGwpIHsKKworCQkJCWlmIChjZXJ0LmdldFNlcmlhbE51bWJlcigpLnRvU3RyaW5nKCkuZXF1YWxzKHJzYUNlcnRTZXJpYWxOdW1iZXIpKSB7CisKKwkJCQkJa2VrID0gcnNhS2V5OworCQkJCQkKKwkJCQl9CisJCQl9CisJCX0KKwkJaWYgKGtlayAhPSBudWxsKSB7CisJCQlYTUxDaXBoZXIgY2lwaGVyID0gWE1MQ2lwaGVyLmdldEluc3RhbmNlKCk7CisJCQljaXBoZXIuaW5pdChYTUxDaXBoZXIuVU5XUkFQX01PREUsIGtlayk7CisJCQlrZXkgPSBjaXBoZXIuZGVjcnlwdEtleShlbmNyeXB0ZWRLZXksCisJCQkJCQkJCQllbmNyeXB0ZWREYXRhLgorCQkJCQkJCQkJZ2V0RW5jcnlwdGlvbk1ldGhvZCgpLgorCQkJCQkJCQkJZ2V0QWxnb3JpdGhtKCkpOworCQl9CisJCQorCQlyZXR1cm4ga2V5OworCX0KKwkvKioKKwkgKiBNZXRob2QgY291bnROb2RlcworCSAqCisJICogUmVjdXJzaXZlbHkgY291bnQgdGhlIG51bWJlciBvZiBub2RlcyBpbiB0aGUgZG9jdW1lbnQKKwkgKgorCSAqIEBwYXJhbSBuIE5vZGUgdG8gY291bnQgYmVuZWF0aAorCSAqLworCisJcHJpdmF0ZSBzdGF0aWMgaW50IGNvdW50Tm9kZXMoTm9kZSBuKSB7CisKKwkJaWYgKG4gPT0gbnVsbCkKKwkJCXJldHVybiAwOyAgLy8gUGFyYW5vaWEKKworCQlpbnQgY291bnQgPSAxOyAgLy8gQWx3YXlzIGNvdW50IG15c2VsZgorCQlOb2RlIGMgPSBuLmdldEZpcnN0Q2hpbGQoKTsKKworCQl3aGlsZSAoYyAhPSBudWxsKSB7CisKKwkJCWNvdW50ICs9IGNvdW50Tm9kZXMoYyk7CisJCQljID0gYy5nZXROZXh0U2libGluZygpOworCisJCX0KKworCQlyZXR1cm4gY291bnQ7CisKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvZW5jcnlwdGlvbi9Cb2JLZXlSZXNvbHZlci5qYXZhIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2VuY3J5cHRpb24vQm9iS2V5UmVzb2x2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWU1NjUwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2VuY3J5cHRpb24vQm9iS2V5UmVzb2x2ZXIuamF2YQpAQCAtMCwwICsxLDE0NSBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5lbmNyeXB0aW9uOworCitpbXBvcnQgamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlB1YmxpY0tleTsKK2ltcG9ydCBqYXZheC5jcnlwdG8uU2VjcmV0S2V5OworaW1wb3J0IGphdmF4LmNyeXB0by5TZWNyZXRLZXlGYWN0b3J5OworaW1wb3J0IGphdmF4LmNyeXB0by5zcGVjLkRFU2VkZUtleVNwZWM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmNvbnRlbnQuS2V5TmFtZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmtleXJlc29sdmVyLktleVJlc29sdmVyRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMua2V5cmVzb2x2ZXIuS2V5UmVzb2x2ZXJTcGk7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5zdG9yYWdlLlN0b3JhZ2VSZXNvbHZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuWE1MVXRpbHM7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworLyoqCisgKiBUZXN0IHJlc29sdmVyIC0gc2ltcGx5IG1hcHMgYSBrZXkgbmFtZSB0byB0aGUgYXBwcm9wcmlhdGUga2V5CisgKgorICogQGF1dGhvciBCZXJpbiBMYXV0ZW5iYWNoCisgKi8KKworcHVibGljIGNsYXNzIEJvYktleVJlc29sdmVyIGV4dGVuZHMgS2V5UmVzb2x2ZXJTcGkgeworCQorCS8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZyhCb2JLZXlSZXNvbHZlci5jbGFzcy5nZXROYW1lKCkpOworCQorCUtleU5hbWUgX2tuID0gbnVsbDsKKworCS8qKgorCSAqIE1ldGhvZCBlbmdpbmVDYW5SZXNvbHZlCisJICoKKwkgKiBAcGFyYW0gZWxlbWVudAorCSAqIEBwYXJhbSBCYXNlVVJJCisJICogQHBhcmFtIHN0b3JhZ2UKKwkgKgorCSAqLworCisJcHVibGljIGJvb2xlYW4gZW5naW5lQ2FuUmVzb2x2ZShFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJLAorCQkJCQkJCQkJU3RvcmFnZVJlc29sdmVyIHN0b3JhZ2UpIHsKKworCQlsb2cuZGVidWcoIkNhbiBJIHJlc29sdmUgIiArIGVsZW1lbnQuZ2V0VGFnTmFtZSgpKTsKKworCQlpZiAoZWxlbWVudCA9PSBudWxsKSB7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKworCQlib29sZWFuIGlzS2V5TmFtZSA9IFhNTFV0aWxzLmVsZW1lbnRJc0luU2lnbmF0dXJlU3BhY2UoZWxlbWVudCwKKwkJCQkJCQkJCSAgIENvbnN0YW50cy5fVEFHX0tFWU5BTUUpOworCisJCXRyeSB7CisJCQlpZiAoaXNLZXlOYW1lKSB7CisJCQkJX2tuID0gbmV3IEtleU5hbWUoZWxlbWVudCwgIiIpOworCQkJCWlmIChfa24uZ2V0S2V5TmFtZSgpLmVxdWFscygiYm9iIikpIHsKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJfQorCQkJfQorCQl9CisJCWNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJLy8gRG8gbm90aGluZworCQl9CisJCQorCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLyoqCisJICogTWV0aG9kIGVuZ2luZVJlc29sdmVQdWJsaWNLZXkKKwkgKgorCSAqIEBwYXJhbSBlbGVtZW50CisJICogQHBhcmFtIEJhc2VVUkkKKwkgKiBAcGFyYW0gc3RvcmFnZQorCSAqIEByZXR1cm4gbnVsbCBpZiBubyB7QGxpbmsgUHVibGljS2V5fSBjb3VsZCBiZSBvYnRhaW5lZAorCSAqIEB0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24KKwkgKi8KKwlwdWJsaWMgUHVibGljS2V5IGVuZ2luZUxvb2t1cEFuZFJlc29sdmVQdWJsaWNLZXkoCisJCSAgRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSwgU3RvcmFnZVJlc29sdmVyIHN0b3JhZ2UpCisgICAgICAgICAgICAgIHRocm93cyBLZXlSZXNvbHZlckV4Y2VwdGlvbiB7CisKKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogTWV0aG9kIGVuZ2luZVJlc29sdmVYNTA5Q2VydGlmaWNhdGUKKwkgKgorCSAqIEBwYXJhbSBlbGVtZW50CisJICogQHBhcmFtIEJhc2VVUkkKKwkgKiBAcGFyYW0gc3RvcmFnZQorCSAqCisJICogQHRocm93cyBLZXlSZXNvbHZlckV4Y2VwdGlvbgorCSAqLworCXB1YmxpYyBYNTA5Q2VydGlmaWNhdGUgZW5naW5lTG9va3VwUmVzb2x2ZVg1MDlDZXJ0aWZpY2F0ZSgKKwkJCSAgIEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIEJhc2VVUkksIFN0b3JhZ2VSZXNvbHZlciBzdG9yYWdlKQorCQl0aHJvd3MgS2V5UmVzb2x2ZXJFeGNlcHRpb24geworCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiBNZXRob2QgZW5naW5lUmVzb2x2ZVNlY3JldEtleQorCSAqCisJICogQHBhcmFtIGVsZW1lbnQKKwkgKiBAcGFyYW0gQmFzZVVSSQorCSAqIEBwYXJhbSBzdG9yYWdlCisJICoKKwkgKiBAdGhyb3dzIEtleVJlc29sdmVyRXhjZXB0aW9uCisJICovCisJcHVibGljIGphdmF4LmNyeXB0by5TZWNyZXRLZXkgZW5naW5lTG9va3VwQW5kUmVzb2x2ZVNlY3JldEtleSgKKyAgICAgICAgICAgRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSwgU3RvcmFnZVJlc29sdmVyIHN0b3JhZ2UpCisJCXRocm93cyBLZXlSZXNvbHZlckV4Y2VwdGlvbiB7CisKKwkJaWYgKGVuZ2luZUNhblJlc29sdmUoZWxlbWVudCwgQmFzZVVSSSwgc3RvcmFnZSkpIHsKKwkJCXRyeSB7CisJCQkJREVTZWRlS2V5U3BlYyBrZXlTcGVjID0gbmV3IERFU2VkZUtleVNwZWMoCisJCQkJCSJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3giLmdldEJ5dGVzKCJBU0NJSSIpKTsKKwkJCQlTZWNyZXRLZXlGYWN0b3J5IGtleUZhY3RvcnkgPSAKKwkJCQkJU2VjcmV0S2V5RmFjdG9yeS5nZXRJbnN0YW5jZSgiREVTZWRlIik7CisJCQkJU2VjcmV0S2V5IGtleSA9IGtleUZhY3RvcnkuZ2VuZXJhdGVTZWNyZXQoa2V5U3BlYyk7CisJCQkJCQorCQkJCXJldHVybiBrZXk7CisJCQl9CisJCQljYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCQl0aHJvdyBuZXcgS2V5UmVzb2x2ZXJFeGNlcHRpb24oIlNvbWV0aGluZyBiYWRseSB3cm9uZyBpbiBjcmVhdGlvbiBvZiBib2IncyBrZXkiKTsKKwkJCX0KKwkJfQorCisJCXJldHVybiBudWxsOworCX0KK30KKwpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2VuY3J5cHRpb24vRW5jcnlwdENvbnRlbnRUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvZW5jcnlwdGlvbi9FbmNyeXB0Q29udGVudFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjBlZTIzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2VuY3J5cHRpb24vRW5jcnlwdENvbnRlbnRUZXN0LmphdmEKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDIwMDctMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QuZW5jcnlwdGlvbjsKKworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07CitpbXBvcnQgamF2YXguY3J5cHRvLlNlY3JldEtleTsKK2ltcG9ydCBqYXZheC5jcnlwdG8uU2VjcmV0S2V5RmFjdG9yeTsKK2ltcG9ydCBqYXZheC5jcnlwdG8uc3BlYy5ERVNlZGVLZXlTcGVjOworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJGYWN0b3J5OworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmVuY3J5cHRpb24uWE1MQ2lwaGVyOworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7CisKK3B1YmxpYyBjbGFzcyBFbmNyeXB0Q29udGVudFRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgREFUQSA9CisJIjx1c2Vycz5cbiIgKworICAJIiAgPHVzZXI+XG4iICsKKyAgICAJIiAgICA8Zmlyc3RuYW1lPkJ1Z3M8L2ZpcnN0bmFtZT5cbiIgKworICAgICAgICAiICAgIDxsYXN0bmFtZT5CdW5ueTwvbGFzdG5hbWU+XG4iICsKKyAgICAgICAgIiAgICA8YWdlPjM0PC9hZ2U+XG4iICsKKyAgICAgICAgIiAgICA8c2VyaWFsPlkxMDwvc2VyaWFsPlxuIiArCisJIiAgPC91c2VyPlxuIiArCisJIjwvdXNlcnM+XG4iOworCisgICAgcHJpdmF0ZSBEb2N1bWVudEJ1aWxkZXIgZGI7CisgICAgcHJpdmF0ZSBTZWNyZXRLZXkgc2VjcmV0S2V5OworCisgICAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHJldHVybiBuZXcgVGVzdFN1aXRlKEVuY3J5cHRDb250ZW50VGVzdC5jbGFzcyk7CisgICAgfQorCisgICAgcHVibGljIEVuY3J5cHRDb250ZW50VGVzdChTdHJpbmcgbmFtZSkgeworICAgICAgICBzdXBlcihuYW1lKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaW5pdCgpOworICAgICAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKyAgICAgICAgZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworCWRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOworCisgICAgICAgIGJ5dGVbXSBiaXRzMTkyID0gImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eCIuZ2V0Qnl0ZXMoKTsKKyAgICAgICAgREVTZWRlS2V5U3BlYyBrZXlTcGVjID0gbmV3IERFU2VkZUtleVNwZWMoYml0czE5Mik7CisgICAgICAgIFNlY3JldEtleUZhY3Rvcnkga2V5RmFjdG9yeSA9IFNlY3JldEtleUZhY3RvcnkuZ2V0SW5zdGFuY2UoIkRFU2VkZSIpOworICAgICAgICBzZWNyZXRLZXkgPSBrZXlGYWN0b3J5LmdlbmVyYXRlU2VjcmV0KGtleVNwZWMpOworCisJVHJhbnNmb3JtZXJGYWN0b3J5IHRmID0gVHJhbnNmb3JtZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisJdGYubmV3VHJhbnNmb3JtZXIoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0Q29udGVudFJlbW92ZWQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworCURvY3VtZW50IGRvYyA9IGRiLnBhcnNlKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShEQVRBLmdldEJ5dGVzKCJVVEY4IikpKTsKKwlOb2RlTGlzdCBkYXRhVG9FbmNyeXB0ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ1c2VyIik7CisKKwlYTUxDaXBoZXIgZGF0YUNpcGhlciA9IFhNTENpcGhlci5nZXRJbnN0YW5jZShYTUxDaXBoZXIuVFJJUExFREVTKTsKKwlkYXRhQ2lwaGVyLmluaXQoWE1MQ2lwaGVyLkVOQ1JZUFRfTU9ERSwgc2VjcmV0S2V5KTsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgZGF0YVRvRW5jcnlwdC5nZXRMZW5ndGgoKTsgaSsrKSB7CisgICAgCSAgICBkYXRhQ2lwaGVyLmRvRmluYWwoZG9jLChFbGVtZW50KSBkYXRhVG9FbmNyeXB0Lml0ZW0oaSksIHRydWUpOworCX0KKworCS8vIENoZWNrIHRoYXQgdXNlciBjb250ZW50IGhhcyBiZWVuIHJlbW92ZWQKKwlFbGVtZW50IHVzZXIgPSAoRWxlbWVudCkgZGF0YVRvRW5jcnlwdC5pdGVtKDApOworICAgICAgICBOb2RlIGNoaWxkID0gdXNlci5nZXRGaXJzdENoaWxkKCk7CisgICAgICAgIHdoaWxlIChjaGlsZCAhPSBudWxsICYmIGNoaWxkLmdldE5vZGVUeXBlKCkgIT0gTm9kZS5FTEVNRU5UX05PREUpIHsKKyAgICAgICAgICAgIGNoaWxkID0gY2hpbGQuZ2V0TmV4dFNpYmxpbmcoKTsKKyAgICAgICAgfQorCS8vIGNoaWxkIHNob3VsZCBiZSBFbmNyeXB0ZWREYXRhLCBpZiBub3QgdGhyb3cgZXhjZXB0aW9uCisJRWxlbWVudCBjaGlsZEVsZW0gPSAoRWxlbWVudCkgY2hpbGQ7CisJaWYgKCFjaGlsZEVsZW0uZ2V0TG9jYWxOYW1lKCkuZXF1YWxzKCJFbmNyeXB0ZWREYXRhIikpIHsKKwkgICAgLy8gdC50cmFuc2Zvcm0obmV3IERPTVNvdXJjZShkb2MpLCBuZXcgU3RyZWFtUmVzdWx0KFN5c3RlbS5vdXQpKTsKKwkgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiRWxlbWVudCBjb250ZW50IG5vdCByZXBsYWNlZCIpOworCX0KKwkvLyB0aGVyZSBzaG91bGRuJ3QgYmUgYW55IG1vcmUgY2hpbGRyZW4gZWxlbWVudHMKKyAgICAgICAgTm9kZSBzaWJsaW5nID0gY2hpbGRFbGVtLmdldE5leHRTaWJsaW5nKCk7CisgICAgICAgIHdoaWxlIChzaWJsaW5nICE9IG51bGwgJiYgc2libGluZy5nZXROb2RlVHlwZSgpICE9IE5vZGUuRUxFTUVOVF9OT0RFKSB7CisgICAgICAgICAgICBzaWJsaW5nID0gc2libGluZy5nZXROZXh0U2libGluZygpOworICAgICAgICB9CisJaWYgKHNpYmxpbmcgIT0gbnVsbCkgeworCSAgICAvLyB0LnRyYW5zZm9ybShuZXcgRE9NU291cmNlKGRvYyksIG5ldyBTdHJlYW1SZXN1bHQoU3lzdGVtLm91dCkpOworCSAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJTaWJsaW5nIGVsZW1lbnQgY29udGVudCBub3QgcmVwbGFjZWQiKTsKKwl9CisKKwkvLyB0LnRyYW5zZm9ybShuZXcgRE9NU291cmNlKGRvYyksIG5ldyBTdHJlYW1SZXN1bHQoU3lzdGVtLm91dCkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9lbmNyeXB0aW9uL1hNTENpcGhlclRlc3Rlci5qYXZhIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2VuY3J5cHRpb24vWE1MQ2lwaGVyVGVzdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDEwNDViMwotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9lbmNyeXB0aW9uL1hNTENpcGhlclRlc3Rlci5qYXZhCkBAIC0wLDAgKzEsNzU2IEBACisvKgorICogQ29weXJpZ2h0IDE5OTktMjAwNyBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QuZW5jcnlwdGlvbjsKKworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5UGFpckdlbmVyYXRvcjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LktleVBhaXI7CitpbXBvcnQgamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb247CitpbXBvcnQgamF2YS5zZWN1cml0eS5Qcml2YXRlS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHVibGljS2V5OworCitpbXBvcnQgamF2YXguY3J5cHRvLkNpcGhlcjsKK2ltcG9ydCBqYXZheC5jcnlwdG8uS2V5R2VuZXJhdG9yOworaW1wb3J0IGphdmF4LmNyeXB0by5Ob1N1Y2hQYWRkaW5nRXhjZXB0aW9uOworaW1wb3J0IGphdmF4LmNyeXB0by5TZWNyZXRLZXk7CitpbXBvcnQgamF2YXguY3J5cHRvLlNlY3JldEtleUZhY3Rvcnk7CitpbXBvcnQgamF2YXguY3J5cHRvLnNwZWMuREVTZWRlS2V5U3BlYzsKK2ltcG9ydCBqYXZheC5jcnlwdG8uc3BlYy5TZWNyZXRLZXlTcGVjOworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLkFzc2VydDsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5hbGdvcml0aG1zLkpDRU1hcHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkNhbm9uaWNhbGl6ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZW5jcnlwdGlvbi5YTUxDaXBoZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZW5jcnlwdGlvbi5FbmNyeXB0ZWREYXRhOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmVuY3J5cHRpb24uRW5jcnlwdGVkS2V5OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmVuY3J5cHRpb24uRW5jcnlwdGlvbk1ldGhvZDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5lbmNyeXB0aW9uLkNpcGhlckRhdGE7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5wYXJhbXMuWFBhdGhDb250YWluZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuRW5jcnlwdGlvbkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5JZFJlc29sdmVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuS2V5SW5mbzsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7CisKKy8qKgorICoKKyAqIEBhdXRob3IgIEF4bCBNYXR0aGV1cworICogQGF1dGhvciAgQmVyaW4gTGF1dGVuYmFjaAorICovCitwdWJsaWMgY2xhc3MgWE1MQ2lwaGVyVGVzdGVyIGV4dGVuZHMgVGVzdENhc2UgeworCisgICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKFhNTENpcGhlclRlc3Rlci5jbGFzcy5nZXROYW1lKCkpOworICAgIAorICAgIHByaXZhdGUgU3RyaW5nIGRvY3VtZW50TmFtZTsKKyAgICBwcml2YXRlIFN0cmluZyBlbGVtZW50TmFtZTsKKyAgICBwcml2YXRlIFN0cmluZyBlbGVtZW50SW5kZXg7CisgICAgcHJpdmF0ZSBYTUxDaXBoZXIgY2lwaGVyOworICAgIHByaXZhdGUgU3RyaW5nIGJhc2VkaXI7CisgICAgcHJpdmF0ZSBib29sZWFuIGhhdmVJU09QYWRkaW5nOworICAgIHByaXZhdGUgYm9vbGVhbiBoYXZlS2V5V3JhcHM7CisgICAgcHJpdmF0ZSBTdHJpbmcgdHN0QmFzZTY0RW5jb2RlZFN0cmluZzsKKworICAgIHB1YmxpYyBYTUxDaXBoZXJUZXN0ZXIoU3RyaW5nIHRlc3QpIHsKKyAgICAgICBzdXBlcih0ZXN0KTsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgdm9pZCBzZXRVcCgpIHsKKyAgICAgICAgYmFzZWRpciA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIsIi4iKTsKKyAgICAgICAgZG9jdW1lbnROYW1lID0gU3lzdGVtLmdldFByb3BlcnR5KCJvcmcuYXBhY2hlLnhtbC5lbmMudGVzdC5kb2MiLAorICAgICAgICAgICAgYmFzZWRpciArICIvYnVpbGQueG1sIik7CisgICAgICAgIGVsZW1lbnROYW1lID0gU3lzdGVtLmdldFByb3BlcnR5KCJvcmcuYXBhY2hlLnhtbC5lbmMudGVzdC5lbGVtIiwKKyAgICAgICAgICAgICJwYXRoIik7CisgICAgICAgIGVsZW1lbnRJbmRleCA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgib3JnLmFwYWNoZS54bWwuZW5jLnRlc3QuaWR4IiwKKyAgICAgICAgICAgICIwIik7CisKKwkJdHN0QmFzZTY0RW5jb2RlZFN0cmluZyA9IG5ldyBTdHJpbmcoIlltTmtaV1puYUdscWEyeHRibTl3Y1JyUFhqUTFodmhERlQrRWRlc01BUEU0RjZ2bFQreTBIUFhlMCtuQUdMUTgiKTsKKworCQkvLyBEZXRlcm1pbmUgaWYgd2UgaGF2ZSBJU08gMTAxMjYgUGFkZGluZyAtIG5lZWRlZCBmb3IgQnVsayBBRVMgb3IKKwkJLy8gM0RFUyBlbmNyeXB0aW9uCisKKwkJaGF2ZUlTT1BhZGRpbmcgPSBmYWxzZTsKKwkJU3RyaW5nIGFsZ29yaXRobUlkID0gCisJCQlKQ0VNYXBwZXIudHJhbnNsYXRlVVJJdG9KQ0VJRChvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5FbmNyeXB0aW9uQ29uc3RhbnRzLkFMR09fSURfQkxPQ0tDSVBIRVJfQUVTMTI4KTsKKworCQlpZiAoYWxnb3JpdGhtSWQgIT0gbnVsbCkgeworCQkJdHJ5IHsKKwkJCQlpZiAoQ2lwaGVyLmdldEluc3RhbmNlKGFsZ29yaXRobUlkKSAhPSBudWxsKQorCQkJCQloYXZlSVNPUGFkZGluZyA9IHRydWU7CisJCQl9IGNhdGNoIChOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24gbnNhZSkgeworCQkJfSBjYXRjaCAoTm9TdWNoUGFkZGluZ0V4Y2VwdGlvbiBuc3BlKSB7CisJCQl9CisJCX0KKworCQloYXZlS2V5V3JhcHMgPSAoSkNFTWFwcGVyLnRyYW5zbGF0ZVVSSXRvSkNFSUQob3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuRW5jcnlwdGlvbkNvbnN0YW50cy5BTEdPX0lEX0tFWVdSQVBfQUVTMTI4KSAhPSBudWxsKTsKKworICAgIH0KKworICAgIHByb3RlY3RlZCB2b2lkIHRlYXJEb3duKCkgeworICAgIH0KKworICAgIHByaXZhdGUgRG9jdW1lbnQgZG9jdW1lbnQoKSB7CisgICAgICAgIERvY3VtZW50IGQgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisgICAgICAgICAgICBEb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgICAgICAgICBGaWxlIGYgPSBuZXcgRmlsZShkb2N1bWVudE5hbWUpOworICAgICAgICAgICAgZCA9IGRiLnBhcnNlKGYpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgIFN5c3RlbS5leGl0KC0xKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAoZCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBTdHJpbmcgZWxlbWVudCgpIHsKKyAgICAgICAgcmV0dXJuIChlbGVtZW50TmFtZSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnQgaW5kZXgoKSB7CisgICAgICAgIGludCByZXN1bHQgPSAtMTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmVzdWx0ID0gSW50ZWdlci5wYXJzZUludChlbGVtZW50SW5kZXgpOworICAgICAgICB9IGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gbmZlKSB7CisgICAgICAgICAgICBuZmUucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgICAgICBTeXN0ZW0uZXhpdCgtMSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gKHJlc3VsdCk7CisgICAgfQorCisJLyoqCisJICogVGVzdCBlbmNyeXB0aW9uIHVzaW5nIGEgZ2VuZXJhdGVkIEFFUyAxMjggYml0IGtleSB0aGF0IGlzCisJICogZW5jcnlwdGVkIHVzaW5nIGEgQUVTIDE5MiBiaXQga2V5LiAgVGhlbiByZXZlcnNlIHVzaW5nIHRoZSBLRUsKKwkgKi8KKworCXB1YmxpYyB2b2lkIHRlc3RBRVMxMjhFbGVtZW50QUVTMTkyS1dDaXBoZXJVc2luZ0tFSygpIHRocm93cyBFeGNlcHRpb24geworCisJCURvY3VtZW50IGQgPSBkb2N1bWVudCgpOyAvLyBzb3VyY2UKKwkJRG9jdW1lbnQgZWQgPSBudWxsOworCQlEb2N1bWVudCBkZCA9IG51bGw7CisJCUVsZW1lbnQgZSA9IChFbGVtZW50KSBkLmdldEVsZW1lbnRzQnlUYWdOYW1lKGVsZW1lbnQoKSkuaXRlbShpbmRleCgpKTsKKwkJRWxlbWVudCBlZSA9IG51bGw7CisKKwkJU3RyaW5nIHNvdXJjZSA9IG51bGw7CisJCVN0cmluZyB0YXJnZXQgPSBudWxsOworCisgICAgICAgIGlmIChoYXZlSVNPUGFkZGluZyAmJiBoYXZlS2V5V3JhcHMpIHsKKworCQkJc291cmNlID0gdG9TdHJpbmcoZCk7CisKKwkJCS8vIFNldCB1cCBhIEtleSBFbmNyeXB0aW9uIEtleQorCQkJYnl0ZVtdIGJpdHMxOTIgPSAiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4Ii5nZXRCeXRlcygpOworCQkJS2V5IGtlayA9IG5ldyBTZWNyZXRLZXlTcGVjKGJpdHMxOTIsICJBRVMiKTsKKworCQkJLy8gR2VuZXJhdGUgYSB0cmFmZmljIGtleQorCQkJS2V5R2VuZXJhdG9yIGtleWdlbiA9IEtleUdlbmVyYXRvci5nZXRJbnN0YW5jZSgiQUVTIik7CisJCQlrZXlnZW4uaW5pdCgxMjgpOworCQkJS2V5IGtleSA9IGtleWdlbi5nZW5lcmF0ZUtleSgpOworCisgICAgICAgICAgICBjaXBoZXIgPSBYTUxDaXBoZXIuZ2V0SW5zdGFuY2UoWE1MQ2lwaGVyLkFFU18xOTJfS2V5V3JhcCk7CisJCQljaXBoZXIuaW5pdChYTUxDaXBoZXIuV1JBUF9NT0RFLCBrZWspOworCQkJRW5jcnlwdGVkS2V5IGVuY3J5cHRlZEtleSA9IGNpcGhlci5lbmNyeXB0S2V5KGQsIGtleSk7CisKKyAgICAgICAgICAgIC8vIGVuY3J5cHQKKyAgICAgICAgICAgIGNpcGhlciA9IFhNTENpcGhlci5nZXRJbnN0YW5jZShYTUxDaXBoZXIuQUVTXzEyOCk7CisgICAgICAgICAgICBjaXBoZXIuaW5pdChYTUxDaXBoZXIuRU5DUllQVF9NT0RFLCBrZXkpOworCQkJRW5jcnlwdGVkRGF0YSBidWlsZGVyID0gY2lwaGVyLmdldEVuY3J5cHRlZERhdGEoKTsKKworCQkJS2V5SW5mbyBidWlsZGVyS2V5SW5mbyA9IGJ1aWxkZXIuZ2V0S2V5SW5mbygpOworCQkJaWYgKGJ1aWxkZXJLZXlJbmZvID09IG51bGwpIHsKKwkJCQlidWlsZGVyS2V5SW5mbyA9IG5ldyBLZXlJbmZvKGQpOworCQkJCWJ1aWxkZXIuc2V0S2V5SW5mbyhidWlsZGVyS2V5SW5mbyk7CisJCQl9CisKKwkJCWJ1aWxkZXJLZXlJbmZvLmFkZChlbmNyeXB0ZWRLZXkpOworCisgICAgICAgICAgICBlZCA9IGNpcGhlci5kb0ZpbmFsKGQsIGUpOworCisgICAgICAgICAgICAvL2RlY3J5cHQKKwkJCWtleSA9IG51bGw7CisgICAgICAgICAgICBlZSA9IChFbGVtZW50KSBlZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgieGVuYzpFbmNyeXB0ZWREYXRhIikuaXRlbSgwKTsKKyAgICAgICAgICAgIGNpcGhlciA9IFhNTENpcGhlci5nZXRJbnN0YW5jZShYTUxDaXBoZXIuQUVTXzEyOCk7CisgICAgICAgICAgICBjaXBoZXIuaW5pdChYTUxDaXBoZXIuREVDUllQVF9NT0RFLCBudWxsKTsKKwkJCWNpcGhlci5zZXRLRUsoa2VrKTsKKwkJCWRkID0gY2lwaGVyLmRvRmluYWwoZWQsIGVlKTsKKworICAgICAgICAgICAgdGFyZ2V0ID0gdG9TdHJpbmcoZGQpOworCisJCQlBc3NlcnQuYXNzZXJ0RXF1YWxzKHNvdXJjZSwgdGFyZ2V0KTsKKwkJfQorCQllbHNlIHsKKwkJCWxvZy53YXJuKCJUZXN0IHRlc3RBRVMxMjhFbGVtZW50QUVTMTkyS1dDaXBoZXJVc2luZ0tFSyBza2lwcGVkIGFzIG5lY2Vzc2FyeSBhbGdvcml0aG1zIG5vdCBhdmFpbGFibGUiKTsKKwkJfQorICAgIH0KKyAgCisJLyoqCisJICogVGVzdCBlbmNyeXB0aW9uIHVzaW5nIGEgZ2VuZXJhdGVkIEFFUyAyNTYgYml0IGtleSB0aGF0IGlzCisJICogZW5jcnlwdGVkIHVzaW5nIGFuIFJTQSBrZXkuICBSZXZlcnNlIHVzaW5nIEtFSworCSAqLworCisJcHVibGljIHZvaWQgdGVzdEFFUzEyOEVsZW1lbnRSU0FLV0NpcGhlclVzaW5nS0VLKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKwkJRG9jdW1lbnQgZCA9IGRvY3VtZW50KCk7IC8vIHNvdXJjZQorCQlEb2N1bWVudCBlZCA9IG51bGw7CisJCURvY3VtZW50IGRkID0gbnVsbDsKKwkJRWxlbWVudCBlID0gKEVsZW1lbnQpIGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZWxlbWVudCgpKS5pdGVtKGluZGV4KCkpOworCQlFbGVtZW50IGVlID0gbnVsbDsKKworCQlTdHJpbmcgc291cmNlID0gbnVsbDsKKwkJU3RyaW5nIHRhcmdldCA9IG51bGw7CisKKyAgICAgICAgaWYgKGhhdmVJU09QYWRkaW5nKSB7CisKKwkJCXNvdXJjZSA9IHRvU3RyaW5nKGQpOworCisgICAgICAgICAgICAvLyBHZW5lcmF0ZSBhbiBSU0Ega2V5CisgICAgICAgICAgICBLZXlQYWlyR2VuZXJhdG9yIHJzYUtleWdlbiA9IEtleVBhaXJHZW5lcmF0b3IuZ2V0SW5zdGFuY2UoIlJTQSIpOworICAgICAgICAgICAgS2V5UGFpciBrcCA9IHJzYUtleWdlbi5nZW5lcmF0ZUtleVBhaXIoKTsKKyAgICAgICAgICAgIFByaXZhdGVLZXkgcHJpdiA9IGtwLmdldFByaXZhdGUoKTsKKyAgICAgICAgICAgIFB1YmxpY0tleSBwdWIgPSBrcC5nZXRQdWJsaWMoKTsKKyAgICAgICAgICAgIAorCQkJLy8gR2VuZXJhdGUgYSB0cmFmZmljIGtleQorCQkJS2V5R2VuZXJhdG9yIGtleWdlbiA9IEtleUdlbmVyYXRvci5nZXRJbnN0YW5jZSgiQUVTIik7CisJCQlrZXlnZW4uaW5pdCgyNTYpOworCQkJS2V5IGtleSA9IGtleWdlbi5nZW5lcmF0ZUtleSgpOworCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNpcGhlciA9IFhNTENpcGhlci5nZXRJbnN0YW5jZShYTUxDaXBoZXIuUlNBX3YxZG90NSk7CisJCQljaXBoZXIuaW5pdChYTUxDaXBoZXIuV1JBUF9NT0RFLCBwdWIpOworCQkJRW5jcnlwdGVkS2V5IGVuY3J5cHRlZEtleSA9IGNpcGhlci5lbmNyeXB0S2V5KGQsIGtleSk7CisKKyAgICAgICAgICAgIC8vIGVuY3J5cHQKKyAgICAgICAgICAgIGNpcGhlciA9IFhNTENpcGhlci5nZXRJbnN0YW5jZShYTUxDaXBoZXIuQUVTXzI1Nik7CisgICAgICAgICAgICBjaXBoZXIuaW5pdChYTUxDaXBoZXIuRU5DUllQVF9NT0RFLCBrZXkpOworCQkJRW5jcnlwdGVkRGF0YSBidWlsZGVyID0gY2lwaGVyLmdldEVuY3J5cHRlZERhdGEoKTsKKworCQkJS2V5SW5mbyBidWlsZGVyS2V5SW5mbyA9IGJ1aWxkZXIuZ2V0S2V5SW5mbygpOworCQkJaWYgKGJ1aWxkZXJLZXlJbmZvID09IG51bGwpIHsKKwkJCQlidWlsZGVyS2V5SW5mbyA9IG5ldyBLZXlJbmZvKGQpOworCQkJCWJ1aWxkZXIuc2V0S2V5SW5mbyhidWlsZGVyS2V5SW5mbyk7CisJCQl9CisKKwkJCWJ1aWxkZXJLZXlJbmZvLmFkZChlbmNyeXB0ZWRLZXkpOworCisgICAgICAgICAgICBlZCA9IGNpcGhlci5kb0ZpbmFsKGQsIGUpOworICAgICAgICAgICAgbG9nLmRlYnVnKCJFbmNyeXB0ZWQgZG9jdW1lbnQiKTsKKyAgICAgICAgICAgIGxvZy5kZWJ1Zyh0b1N0cmluZyhlZCkpOworCisKKyAgICAgICAgICAgIC8vZGVjcnlwdAorCQkJa2V5ID0gbnVsbDsKKyAgICAgICAgICAgIGVlID0gKEVsZW1lbnQpIGVkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ4ZW5jOkVuY3J5cHRlZERhdGEiKS5pdGVtKDApOworICAgICAgICAgICAgY2lwaGVyID0gWE1MQ2lwaGVyLmdldEluc3RhbmNlKFhNTENpcGhlci5BRVNfMTI4KTsKKyAgICAgICAgICAgIGNpcGhlci5pbml0KFhNTENpcGhlci5ERUNSWVBUX01PREUsIG51bGwpOworCQkJY2lwaGVyLnNldEtFSyhwcml2KTsKKwkJCWRkID0gY2lwaGVyLmRvRmluYWwoZWQsIGVlKTsKKworICAgICAgICAgICAgdGFyZ2V0ID0gdG9TdHJpbmcoZGQpOworICAgICAgICAgICAgbG9nLmRlYnVnKCJPdXRwdXQgZG9jdW1lbnQiKTsKKyAgICAgICAgICAgIGxvZy5kZWJ1Zyh0YXJnZXQpOworCisJCQlBc3NlcnQuYXNzZXJ0RXF1YWxzKHNvdXJjZSwgdGFyZ2V0KTsKKwkJfQorCQllbHNlIHsKKwkJCWxvZy53YXJuKCJUZXN0IHRlc3RBRVMxMjhFbGVtZW50UlNBS1dDaXBoZXJVc2luZ0tFSyBza2lwcGVkIGFzIG5lY2Vzc2FyeSBhbGdvcml0aG1zIG5vdCBhdmFpbGFibGUiKTsKKwkJfQorICAgIH0KKworCS8qKgorCSAqIFRlc3QgZW5jcnlwdGlvbiB1c2luZyBhIGdlbmVyYXRlZCBBRVMgMTkyIGJpdCBrZXkgdGhhdCBpcworCSAqIGVuY3J5cHRlZCB1c2luZyBhIDNERVMga2V5LiAgVGhlbiByZXZlcnNlIGJ5IGRlY3J5cHRpbmcgCisJICogRW5jcnlwdGVkS2V5IGJ5IGhhbmQKKwkgKi8KKworCXB1YmxpYyB2b2lkIHRlc3RBRVMxOTJFbGVtZW50QUVTMjU2S1dDaXBoZXIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworCQlEb2N1bWVudCBkID0gZG9jdW1lbnQoKTsgLy8gc291cmNlCisJCURvY3VtZW50IGVkID0gbnVsbDsKKwkJRG9jdW1lbnQgZGQgPSBudWxsOworCQlFbGVtZW50IGUgPSAoRWxlbWVudCkgZC5nZXRFbGVtZW50c0J5VGFnTmFtZShlbGVtZW50KCkpLml0ZW0oaW5kZXgoKSk7CisJCUVsZW1lbnQgZWUgPSBudWxsOworCisJCVN0cmluZyBzb3VyY2UgPSBudWxsOworCQlTdHJpbmcgdGFyZ2V0ID0gbnVsbDsKKworICAgICAgICBpZiAoaGF2ZUlTT1BhZGRpbmcgJiYgaGF2ZUtleVdyYXBzKSB7CisKKwkJCXNvdXJjZSA9IHRvU3RyaW5nKGQpOworCisJCQkvLyBTZXQgdXAgYSBLZXkgRW5jcnlwdGlvbiBLZXkKKwkJCWJ5dGVbXSBiaXRzMTkyID0gImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eCIuZ2V0Qnl0ZXMoKTsKKyAgICAgICAgICAgIERFU2VkZUtleVNwZWMga2V5U3BlYyA9IG5ldyBERVNlZGVLZXlTcGVjKGJpdHMxOTIpOworICAgICAgICAgICAgU2VjcmV0S2V5RmFjdG9yeSBrZXlGYWN0b3J5ID0gU2VjcmV0S2V5RmFjdG9yeS5nZXRJbnN0YW5jZSgiREVTZWRlIik7CisgICAgICAgICAgICBLZXkga2VrID0ga2V5RmFjdG9yeS5nZW5lcmF0ZVNlY3JldChrZXlTcGVjKTsKKworCQkJLy8gR2VuZXJhdGUgYSB0cmFmZmljIGtleQorCQkJS2V5R2VuZXJhdG9yIGtleWdlbiA9IEtleUdlbmVyYXRvci5nZXRJbnN0YW5jZSgiQUVTIik7CisJCQlrZXlnZW4uaW5pdCgxOTIpOworCQkJS2V5IGtleSA9IGtleWdlbi5nZW5lcmF0ZUtleSgpOworCisgICAgICAgICAgICBjaXBoZXIgPSBYTUxDaXBoZXIuZ2V0SW5zdGFuY2UoWE1MQ2lwaGVyLlRSSVBMRURFU19LZXlXcmFwKTsKKwkJCWNpcGhlci5pbml0KFhNTENpcGhlci5XUkFQX01PREUsIGtlayk7CisJCQlFbmNyeXB0ZWRLZXkgZW5jcnlwdGVkS2V5ID0gY2lwaGVyLmVuY3J5cHRLZXkoZCwga2V5KTsKKworICAgICAgICAgICAgLy8gZW5jcnlwdAorICAgICAgICAgICAgY2lwaGVyID0gWE1MQ2lwaGVyLmdldEluc3RhbmNlKFhNTENpcGhlci5BRVNfMTkyKTsKKyAgICAgICAgICAgIGNpcGhlci5pbml0KFhNTENpcGhlci5FTkNSWVBUX01PREUsIGtleSk7CisJCQlFbmNyeXB0ZWREYXRhIGJ1aWxkZXIgPSBjaXBoZXIuZ2V0RW5jcnlwdGVkRGF0YSgpOworCisJCQlLZXlJbmZvIGJ1aWxkZXJLZXlJbmZvID0gYnVpbGRlci5nZXRLZXlJbmZvKCk7CisJCQlpZiAoYnVpbGRlcktleUluZm8gPT0gbnVsbCkgeworCQkJCWJ1aWxkZXJLZXlJbmZvID0gbmV3IEtleUluZm8oZCk7CisJCQkJYnVpbGRlci5zZXRLZXlJbmZvKGJ1aWxkZXJLZXlJbmZvKTsKKwkJCX0KKworCQkJYnVpbGRlcktleUluZm8uYWRkKGVuY3J5cHRlZEtleSk7CisKKyAgICAgICAgICAgIGVkID0gY2lwaGVyLmRvRmluYWwoZCwgZSk7CisKKyAgICAgICAgICAgIC8vZGVjcnlwdAorCQkJa2V5ID0gbnVsbDsKKyAgICAgICAgICAgIGVlID0gKEVsZW1lbnQpIGVkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ4ZW5jOkVuY3J5cHRlZERhdGEiKS5pdGVtKDApOworICAgICAgICAgICAgY2lwaGVyID0gWE1MQ2lwaGVyLmdldEluc3RhbmNlKCk7CisgICAgICAgICAgICBjaXBoZXIuaW5pdChYTUxDaXBoZXIuREVDUllQVF9NT0RFLCBudWxsKTsKKworCQkJRW5jcnlwdGVkRGF0YSBlbmNyeXB0ZWREYXRhID0gY2lwaGVyLmxvYWRFbmNyeXB0ZWREYXRhKGVkLCBlZSk7CisJCQkKKwkJCWlmKGVuY3J5cHRlZERhdGEgPT0gbnVsbCkgeworCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiZWQgaXMgbnVsbCIpOworCQkJfQorCQkJZWxzZSBpZiAoZW5jcnlwdGVkRGF0YS5nZXRLZXlJbmZvKCkgPT0gbnVsbCkgeworCQkJCVN5c3RlbS5vdXQucHJpbnRsbigia2kgaXMgbnVsbCIpOworCQkJfQorCQkJRW5jcnlwdGVkS2V5IGVrID0gZW5jcnlwdGVkRGF0YS5nZXRLZXlJbmZvKCkuaXRlbUVuY3J5cHRlZEtleSgwKTsKKworCQkJaWYgKGVrICE9IG51bGwpIHsKKwkJCQlYTUxDaXBoZXIga2V5Q2lwaGVyID0gWE1MQ2lwaGVyLmdldEluc3RhbmNlKCk7CisJCQkJa2V5Q2lwaGVyLmluaXQoWE1MQ2lwaGVyLlVOV1JBUF9NT0RFLCBrZWspOworCQkJCWtleSA9IGtleUNpcGhlci5kZWNyeXB0S2V5KGVrLCBlbmNyeXB0ZWREYXRhLmdldEVuY3J5cHRpb25NZXRob2QoKS5nZXRBbGdvcml0aG0oKSk7CisJCQl9CisKKwkJCS8vIENyZWF0ZSBhIG5ldyBjaXBoZXIganVzdCB0byBiZSBwYXJhbm9pZAorCQkJWE1MQ2lwaGVyIGNpcGhlcjMgPSBYTUxDaXBoZXIuZ2V0SW5zdGFuY2UoKTsKKwkJCWNpcGhlcjMuaW5pdChYTUxDaXBoZXIuREVDUllQVF9NT0RFLCBrZXkpOworICAgICAgICAgICAgZGQgPSBjaXBoZXIzLmRvRmluYWwoZWQsIGVlKTsKKworICAgICAgICAgICAgdGFyZ2V0ID0gdG9TdHJpbmcoZGQpOworCisJCQlBc3NlcnQuYXNzZXJ0RXF1YWxzKHNvdXJjZSwgdGFyZ2V0KTsKKwkJfQorCQllbHNlIHsKKwkJCWxvZy53YXJuKCJUZXN0IHRlc3RBRVMxOTJFbGVtZW50QUVTMjU2S1dDaXBoZXIgc2tpcHBlZCBhcyBuZWNlc3NhcnkgYWxnb3JpdGhtcyBub3QgYXZhaWxhYmxlIik7CisJCX0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0VHJpcHBsZURlc0VsZW1lbnRDaXBoZXIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgRG9jdW1lbnQgZCA9IGRvY3VtZW50KCk7IC8vIHNvdXJjZQorICAgICAgICBEb2N1bWVudCBlZCA9IG51bGw7ICAgICAgLy8gdGFyZ2V0CisgICAgICAgIERvY3VtZW50IGRkID0gbnVsbDsgICAgICAvLyB0YXJnZXQKKyAgICAgICAgRWxlbWVudCBlID0gKEVsZW1lbnQpIGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZWxlbWVudCgpKS5pdGVtKGluZGV4KCkpOworICAgICAgICBFbGVtZW50IGVlID0gbnVsbDsKKworICAgICAgICBTdHJpbmcgc291cmNlID0gbnVsbDsKKyAgICAgICAgU3RyaW5nIHRhcmdldCA9IG51bGw7CisKKyAgICAgICAgaWYgKGhhdmVJU09QYWRkaW5nKSB7CisKKwkJCXNvdXJjZSA9IHRvU3RyaW5nKGQpOworCisgICAgICAgICAgICAvLyBwcmVwYXJlIGZvciBlbmNyeXB0aW9uCisgICAgICAgICAgICBieXRlW10gcGFzc1BocmFzZSA9ICIyNCBCeXRlcyBwZXIgREVTZWRlIGtleSEiLmdldEJ5dGVzKCk7CisgICAgICAgICAgICBERVNlZGVLZXlTcGVjIGtleVNwZWMgPSBuZXcgREVTZWRlS2V5U3BlYyhwYXNzUGhyYXNlKTsKKyAgICAgICAgICAgIFNlY3JldEtleUZhY3Rvcnkga2V5RmFjdG9yeSA9IFNlY3JldEtleUZhY3RvcnkuZ2V0SW5zdGFuY2UoIkRFU2VkZSIpOworICAgICAgICAgICAgU2VjcmV0S2V5IGtleSA9IGtleUZhY3RvcnkuZ2VuZXJhdGVTZWNyZXQoa2V5U3BlYyk7CisKKyAgICAgICAgICAgIC8vIGVuY3J5cHQKKyAgICAgICAgICAgIGNpcGhlciA9IFhNTENpcGhlci5nZXRJbnN0YW5jZShYTUxDaXBoZXIuVFJJUExFREVTKTsKKyAgICAgICAgICAgIGNpcGhlci5pbml0KFhNTENpcGhlci5FTkNSWVBUX01PREUsIGtleSk7CisgICAgICAgICAgICBlZCA9IGNpcGhlci5kb0ZpbmFsKGQsIGUpOworCisgICAgICAgICAgICAvL2RlY3J5cHQKKyAgICAgICAgICAgIGNpcGhlciA9IFhNTENpcGhlci5nZXRJbnN0YW5jZShYTUxDaXBoZXIuVFJJUExFREVTKTsKKyAgICAgICAgICAgIGNpcGhlci5pbml0KFhNTENpcGhlci5ERUNSWVBUX01PREUsIGtleSk7CisgICAgICAgICAgICBlZSA9IChFbGVtZW50KSBlZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgieGVuYzpFbmNyeXB0ZWREYXRhIikuaXRlbSgwKTsKKwkJCUVuY3J5cHRlZERhdGEgZW5jcnlwdGVkRGF0YSA9IGNpcGhlci5sb2FkRW5jcnlwdGVkRGF0YShlZCwgZWUpOworCQkJQXNzZXJ0LmFzc2VydEVxdWFscyhlbmNyeXB0ZWREYXRhLmdldEVuY3J5cHRpb25NZXRob2QoKS5nZXRBbGdvcml0aG0oKSwgCisJCQkJCQkJCVhNTENpcGhlci5UUklQTEVERVMpOworICAgICAgICAgICAgZGQgPSBjaXBoZXIuZG9GaW5hbChlZCwgZWUpOworCisgICAgICAgICAgICB0YXJnZXQgPSB0b1N0cmluZyhkZCk7CisJCQlBc3NlcnQuYXNzZXJ0RXF1YWxzKHNvdXJjZSwgdGFyZ2V0KTsKKwkJfQorCQllbHNlIHsKKwkJCWxvZy53YXJuKCJUZXN0IHRlc3RUcmlwcGxlRGVzRWxlbWVudENpcGhlciBza2lwcGVkIGFzIG5lY2Vzc2FyeSBhbGdvcml0aG1zIG5vdCBhdmFpbGFibGUiKTsKKwkJfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RBZXMxMjhFbGVtZW50Q2lwaGVyKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGJ5dGVbXSBiaXRzMTI4ID0geworICAgICAgICAgICAgKGJ5dGUpIDB4MTAsIChieXRlKSAweDExLCAoYnl0ZSkgMHgxMiwgKGJ5dGUpIDB4MTMsCisgICAgICAgICAgICAoYnl0ZSkgMHgxNCwgKGJ5dGUpIDB4MTUsIChieXRlKSAweDE2LCAoYnl0ZSkgMHgxNywKKyAgICAgICAgICAgIChieXRlKSAweDE4LCAoYnl0ZSkgMHgxOSwgKGJ5dGUpIDB4MUEsIChieXRlKSAweDFCLAorICAgICAgICAgICAgKGJ5dGUpIDB4MUMsIChieXRlKSAweDFELCAoYnl0ZSkgMHgxRSwgKGJ5dGUpIDB4MUZ9OworICAgICAgICBLZXkga2V5ID0gbmV3IFNlY3JldEtleVNwZWMoYml0czEyOCwgIkFFUyIpOworCisgICAgICAgIERvY3VtZW50IGQgPSBkb2N1bWVudCgpOyAvLyBzb3VyY2UKKyAgICAgICAgRG9jdW1lbnQgZWQgPSBudWxsOyAgICAgIC8vIHRhcmdldAorICAgICAgICBEb2N1bWVudCBkZCA9IG51bGw7ICAgICAgLy8gdGFyZ2V0CisgICAgICAgIEVsZW1lbnQgZSA9IChFbGVtZW50KSBkLmdldEVsZW1lbnRzQnlUYWdOYW1lKGVsZW1lbnQoKSkuaXRlbShpbmRleCgpKTsKKyAgICAgICAgRWxlbWVudCBlZSA9IG51bGw7CisKKyAgICAgICAgU3RyaW5nIHNvdXJjZSA9IG51bGw7CisgICAgICAgIFN0cmluZyB0YXJnZXQgPSBudWxsOworCisgICAgICAgIGlmIChoYXZlSVNPUGFkZGluZykgeworCisJCQlzb3VyY2UgPSB0b1N0cmluZyhkKTsKKworICAgICAgICAgICAgLy8gZW5jcnlwdAorICAgICAgICAgICAgY2lwaGVyID0gWE1MQ2lwaGVyLmdldEluc3RhbmNlKFhNTENpcGhlci5BRVNfMTI4KTsKKyAgICAgICAgICAgIGNpcGhlci5pbml0KFhNTENpcGhlci5FTkNSWVBUX01PREUsIGtleSk7CisgICAgICAgICAgICBlZCA9IGNpcGhlci5kb0ZpbmFsKGQsIGUpOworCisgICAgICAgICAgICAvL2RlY3J5cHQKKyAgICAgICAgICAgIGNpcGhlciA9IFhNTENpcGhlci5nZXRJbnN0YW5jZShYTUxDaXBoZXIuQUVTXzEyOCk7CisgICAgICAgICAgICBjaXBoZXIuaW5pdChYTUxDaXBoZXIuREVDUllQVF9NT0RFLCBrZXkpOworICAgICAgICAgICAgZWUgPSAoRWxlbWVudCkgZWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInhlbmM6RW5jcnlwdGVkRGF0YSIpLml0ZW0oMCk7CisJCQlFbmNyeXB0ZWREYXRhIGVuY3J5cHRlZERhdGEgPSBjaXBoZXIubG9hZEVuY3J5cHRlZERhdGEoZWQsIGVlKTsKKwkJCUFzc2VydC5hc3NlcnRFcXVhbHMoZW5jcnlwdGVkRGF0YS5nZXRFbmNyeXB0aW9uTWV0aG9kKCkuZ2V0QWxnb3JpdGhtKCksIAorCQkJCQkJCQlYTUxDaXBoZXIuQUVTXzEyOCk7CisgICAgICAgICAgICBkZCA9IGNpcGhlci5kb0ZpbmFsKGVkLCBlZSk7CisKKyAgICAgICAgICAgIHRhcmdldCA9IHRvU3RyaW5nKGRkKTsKKwkJCUFzc2VydC5hc3NlcnRFcXVhbHMoc291cmNlLCB0YXJnZXQpOworCQl9CisJCWVsc2UgeworCQkJbG9nLndhcm4oIlRlc3QgdGVzdEFlczEyOEVsZW1lbnRDaXBoZXIgc2tpcHBlZCBhcyBuZWNlc3NhcnkgYWxnb3JpdGhtcyBub3QgYXZhaWxhYmxlIik7CisJCX0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0QWVzMTkyRWxlbWVudENpcGhlcigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBieXRlW10gYml0czE5MiA9IHsKKyAgICAgICAgICAgIChieXRlKSAweDA4LCAoYnl0ZSkgMHgwOSwgKGJ5dGUpIDB4MEEsIChieXRlKSAweDBCLAorICAgICAgICAgICAgKGJ5dGUpIDB4MEMsIChieXRlKSAweDBELCAoYnl0ZSkgMHgwRSwgKGJ5dGUpIDB4MEYsCisgICAgICAgICAgICAoYnl0ZSkgMHgxMCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgxMywKKyAgICAgICAgICAgIChieXRlKSAweDE0LCAoYnl0ZSkgMHgxNSwgKGJ5dGUpIDB4MTYsIChieXRlKSAweDE3LAorICAgICAgICAgICAgKGJ5dGUpIDB4MTgsIChieXRlKSAweDE5LCAoYnl0ZSkgMHgxQSwgKGJ5dGUpIDB4MUIsCisgICAgICAgICAgICAoYnl0ZSkgMHgxQywgKGJ5dGUpIDB4MUQsIChieXRlKSAweDFFLCAoYnl0ZSkgMHgxRn07CisgICAgICAgIEtleSBrZXkgPSBuZXcgU2VjcmV0S2V5U3BlYyhiaXRzMTkyLCAiQUVTIik7CisKKyAgICAgICAgRG9jdW1lbnQgZCA9IGRvY3VtZW50KCk7IC8vIHNvdXJjZQorICAgICAgICBEb2N1bWVudCBlZCA9IG51bGw7ICAgICAgLy8gdGFyZ2V0CisgICAgICAgIERvY3VtZW50IGRkID0gbnVsbDsgICAgICAvLyB0YXJnZXQKKyAgICAgICAgRWxlbWVudCBlID0gKEVsZW1lbnQpIGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZWxlbWVudCgpKS5pdGVtKGluZGV4KCkpOworICAgICAgICBFbGVtZW50IGVlID0gbnVsbDsKKworICAgICAgICBTdHJpbmcgc291cmNlID0gbnVsbDsKKyAgICAgICAgU3RyaW5nIHRhcmdldCA9IG51bGw7CisKKyAgICAgICAgaWYgKGhhdmVJU09QYWRkaW5nKSB7CisKKwkJCXNvdXJjZSA9IHRvU3RyaW5nKGQpOworCisgICAgICAgICAgICAvLyBlbmNyeXB0CisgICAgICAgICAgICBjaXBoZXIgPSBYTUxDaXBoZXIuZ2V0SW5zdGFuY2UoWE1MQ2lwaGVyLkFFU18xOTIpOworICAgICAgICAgICAgY2lwaGVyLmluaXQoWE1MQ2lwaGVyLkVOQ1JZUFRfTU9ERSwga2V5KTsKKyAgICAgICAgICAgIGVkID0gY2lwaGVyLmRvRmluYWwoZCwgZSk7CisKKyAgICAgICAgICAgIC8vZGVjcnlwdAorICAgICAgICAgICAgY2lwaGVyID0gWE1MQ2lwaGVyLmdldEluc3RhbmNlKFhNTENpcGhlci5BRVNfMTkyKTsKKyAgICAgICAgICAgIGNpcGhlci5pbml0KFhNTENpcGhlci5ERUNSWVBUX01PREUsIGtleSk7CisgICAgICAgICAgICBlZSA9IChFbGVtZW50KSBlZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgieGVuYzpFbmNyeXB0ZWREYXRhIikuaXRlbSgwKTsKKwkJCUVuY3J5cHRlZERhdGEgZW5jcnlwdGVkRGF0YSA9IGNpcGhlci5sb2FkRW5jcnlwdGVkRGF0YShlZCwgZWUpOworCQkJQXNzZXJ0LmFzc2VydEVxdWFscyhlbmNyeXB0ZWREYXRhLmdldEVuY3J5cHRpb25NZXRob2QoKS5nZXRBbGdvcml0aG0oKSwgCisJCQkJCQkJCVhNTENpcGhlci5BRVNfMTkyKTsKKyAgICAgICAgICAgIGRkID0gY2lwaGVyLmRvRmluYWwoZWQsIGVlKTsKKworICAgICAgICAgICAgdGFyZ2V0ID0gdG9TdHJpbmcoZGQpOworCQkJQXNzZXJ0LmFzc2VydEVxdWFscyhzb3VyY2UsIHRhcmdldCk7CisJCX0KKwkJZWxzZSB7CisJCQlsb2cud2FybigiVGVzdCB0ZXN0QWVzMTkyRWxlbWVudENpcGhlciBza2lwcGVkIGFzIG5lY2Vzc2FyeSBhbGdvcml0aG1zIG5vdCBhdmFpbGFibGUiKTsKKwkJfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RBZXMyNjVFbGVtZW50Q2lwaGVyKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGJ5dGVbXSBiaXRzMjU2ID0geworICAgICAgICAgICAgKGJ5dGUpIDB4MDAsIChieXRlKSAweDAxLCAoYnl0ZSkgMHgwMiwgKGJ5dGUpIDB4MDMsCisgICAgICAgICAgICAoYnl0ZSkgMHgwNCwgKGJ5dGUpIDB4MDUsIChieXRlKSAweDA2LCAoYnl0ZSkgMHgwNywKKyAgICAgICAgICAgIChieXRlKSAweDA4LCAoYnl0ZSkgMHgwOSwgKGJ5dGUpIDB4MEEsIChieXRlKSAweDBCLAorICAgICAgICAgICAgKGJ5dGUpIDB4MEMsIChieXRlKSAweDBELCAoYnl0ZSkgMHgwRSwgKGJ5dGUpIDB4MEYsCisgICAgICAgICAgICAoYnl0ZSkgMHgxMCwgKGJ5dGUpIDB4MTEsIChieXRlKSAweDEyLCAoYnl0ZSkgMHgxMywKKyAgICAgICAgICAgIChieXRlKSAweDE0LCAoYnl0ZSkgMHgxNSwgKGJ5dGUpIDB4MTYsIChieXRlKSAweDE3LAorICAgICAgICAgICAgKGJ5dGUpIDB4MTgsIChieXRlKSAweDE5LCAoYnl0ZSkgMHgxQSwgKGJ5dGUpIDB4MUIsCisgICAgICAgICAgICAoYnl0ZSkgMHgxQywgKGJ5dGUpIDB4MUQsIChieXRlKSAweDFFLCAoYnl0ZSkgMHgxRn07CisgICAgICAgIEtleSBrZXkgPSBuZXcgU2VjcmV0S2V5U3BlYyhiaXRzMjU2LCAiQUVTIik7CisKKyAgICAgICAgRG9jdW1lbnQgZCA9IGRvY3VtZW50KCk7IC8vIHNvdXJjZQorICAgICAgICBEb2N1bWVudCBlZCA9IG51bGw7ICAgICAgLy8gdGFyZ2V0CisgICAgICAgIERvY3VtZW50IGRkID0gbnVsbDsgICAgICAvLyB0YXJnZXQKKyAgICAgICAgRWxlbWVudCBlID0gKEVsZW1lbnQpIGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZWxlbWVudCgpKS5pdGVtKGluZGV4KCkpOworICAgICAgICBFbGVtZW50IGVlID0gbnVsbDsKKworICAgICAgICBTdHJpbmcgc291cmNlID0gbnVsbDsKKyAgICAgICAgU3RyaW5nIHRhcmdldCA9IG51bGw7CisKKyAgICAgICAgaWYgKGhhdmVJU09QYWRkaW5nKSB7CisKKwkJCXNvdXJjZSA9IHRvU3RyaW5nKGQpOworCisgICAgICAgICAgICAvLyBlbmNyeXB0CisgICAgICAgICAgICBjaXBoZXIgPSBYTUxDaXBoZXIuZ2V0SW5zdGFuY2UoWE1MQ2lwaGVyLkFFU18yNTYpOworICAgICAgICAgICAgY2lwaGVyLmluaXQoWE1MQ2lwaGVyLkVOQ1JZUFRfTU9ERSwga2V5KTsKKyAgICAgICAgICAgIGVkID0gY2lwaGVyLmRvRmluYWwoZCwgZSk7CisKKyAgICAgICAgICAgIC8vZGVjcnlwdAorICAgICAgICAgICAgY2lwaGVyID0gWE1MQ2lwaGVyLmdldEluc3RhbmNlKFhNTENpcGhlci5BRVNfMjU2KTsKKyAgICAgICAgICAgIGNpcGhlci5pbml0KFhNTENpcGhlci5ERUNSWVBUX01PREUsIGtleSk7CisgICAgICAgICAgICBlZSA9IChFbGVtZW50KSBlZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgieGVuYzpFbmNyeXB0ZWREYXRhIikuaXRlbSgwKTsKKwkJCUVuY3J5cHRlZERhdGEgZW5jcnlwdGVkRGF0YSA9IGNpcGhlci5sb2FkRW5jcnlwdGVkRGF0YShlZCwgZWUpOworCQkJQXNzZXJ0LmFzc2VydEVxdWFscyhlbmNyeXB0ZWREYXRhLmdldEVuY3J5cHRpb25NZXRob2QoKS5nZXRBbGdvcml0aG0oKSwgCisJCQkJCQkJCVhNTENpcGhlci5BRVNfMjU2KTsKKyAgICAgICAgICAgIGRkID0gY2lwaGVyLmRvRmluYWwoZWQsIGVlKTsKKworICAgICAgICAgICAgdGFyZ2V0ID0gdG9TdHJpbmcoZGQpOworCQkJQXNzZXJ0LmFzc2VydEVxdWFscyhzb3VyY2UsIHRhcmdldCk7CisJCX0KKwkJZWxzZSB7CisJCQlsb2cud2FybigiVGVzdCB0ZXN0QWVzMjY1RWxlbWVudENpcGhlciBza2lwcGVkIGFzIG5lY2Vzc2FyeSBhbGdvcml0aG1zIG5vdCBhdmFpbGFibGUiKTsKKwkJfQorICAgIH0KKworICAgIC8qCisJICogVGVzdCBjYXNlIGZvciB3aGVuIHRoZSBlbnRpcmUgZG9jdW1lbnQgaXMgZW5jcnlwdGVkIGFuZCBkZWNyeXB0ZWQKKwkgKiBJbiB0aGlzIGNhc2UgdGhlIEVuY3J5cHRlZERhdGEgYmVjb21lcyB0aGUgcm9vdCBlbGVtZW50IG9mIHRoZSBkb2N1bWVudAorCSAqLworCisgICAgcHVibGljIHZvaWQgdGVzdFRyaXBwbGVEZXNEb2N1bWVudENpcGhlcigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBEb2N1bWVudCBkID0gZG9jdW1lbnQoKTsgLy8gc291cmNlCisgICAgICAgIERvY3VtZW50IGVkID0gbnVsbDsgICAgICAvLyB0YXJnZXQKKyAgICAgICAgRG9jdW1lbnQgZGQgPSBudWxsOyAgICAgIC8vIHRhcmdldAorICAgICAgICBFbGVtZW50IGUgPSBkLmdldERvY3VtZW50RWxlbWVudCgpOworICAgICAgICBFbGVtZW50IGVlID0gbnVsbDsKKworICAgICAgICBTdHJpbmcgc291cmNlID0gbnVsbDsKKyAgICAgICAgU3RyaW5nIHRhcmdldCA9IG51bGw7CisKKyAgICAgICAgaWYgKGhhdmVJU09QYWRkaW5nKSB7CisKKwkJCXNvdXJjZSA9IHRvU3RyaW5nKGQpOworCisgICAgICAgICAgICAvLyBwcmVwYXJlIGZvciBlbmNyeXB0aW9uCisgICAgICAgICAgICBieXRlW10gcGFzc1BocmFzZSA9ICIyNCBCeXRlcyBwZXIgREVTZWRlIGtleSEiLmdldEJ5dGVzKCk7CisgICAgICAgICAgICBERVNlZGVLZXlTcGVjIGtleVNwZWMgPSBuZXcgREVTZWRlS2V5U3BlYyhwYXNzUGhyYXNlKTsKKyAgICAgICAgICAgIFNlY3JldEtleUZhY3Rvcnkga2V5RmFjdG9yeSA9IFNlY3JldEtleUZhY3RvcnkuZ2V0SW5zdGFuY2UoIkRFU2VkZSIpOworICAgICAgICAgICAgU2VjcmV0S2V5IGtleSA9IGtleUZhY3RvcnkuZ2VuZXJhdGVTZWNyZXQoa2V5U3BlYyk7CisKKyAgICAgICAgICAgIC8vIGVuY3J5cHQKKyAgICAgICAgICAgIGNpcGhlciA9IFhNTENpcGhlci5nZXRJbnN0YW5jZShYTUxDaXBoZXIuVFJJUExFREVTKTsKKyAgICAgICAgICAgIGNpcGhlci5pbml0KFhNTENpcGhlci5FTkNSWVBUX01PREUsIGtleSk7CisgICAgICAgICAgICBlZCA9IGNpcGhlci5kb0ZpbmFsKGQsIGUpOworCisgICAgICAgICAgICAvL2RlY3J5cHQKKyAgICAgICAgICAgIGNpcGhlciA9IFhNTENpcGhlci5nZXRJbnN0YW5jZShYTUxDaXBoZXIuVFJJUExFREVTKTsKKyAgICAgICAgICAgIGNpcGhlci5pbml0KFhNTENpcGhlci5ERUNSWVBUX01PREUsIGtleSk7CisgICAgICAgICAgICBlZSA9IChFbGVtZW50KSBlZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgieGVuYzpFbmNyeXB0ZWREYXRhIikuaXRlbSgwKTsKKyAgICAgICAgICAgIGRkID0gY2lwaGVyLmRvRmluYWwoZWQsIGVlKTsKKworICAgICAgICAgICAgdGFyZ2V0ID0gdG9TdHJpbmcoZGQpOworCisJCQlBc3NlcnQuYXNzZXJ0RXF1YWxzKHNvdXJjZSwgdGFyZ2V0KTsKKwkJfQorCQllbHNlIHsKKwkJCWxvZy53YXJuKCJUZXN0IHRlc3RUcmlwcGxlRGVzRG9jdW1lbnRDaXBoZXIgc2tpcHBlZCBhcyBuZWNlc3NhcnkgYWxnb3JpdGhtcyBub3QgYXZhaWxhYmxlIik7CisJCX0KKyAgICB9CisKKwkvKgorCSAqIFRlc3QgYSBDaXBoZXIgUmVmZXJlbmNlCisJICovCisKKwlwdWJsaWMgdm9pZCB0ZXN0U2FtZURvY3VtZW50Q2lwaGVyUmVmZXJlbmNlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgICAgaWYgKGhhdmVJU09QYWRkaW5nKSB7CisJCQlEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKwkJCURvY3VtZW50QnVpbGRlciBkYiA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKKworCQkJRG9jdW1lbnQgZCA9IGRiLm5ld0RvY3VtZW50KCk7CisKKwkJCUVsZW1lbnQgZG9jRWxlbWVudCA9IGQuY3JlYXRlRWxlbWVudCgiRW5jcnlwdGVkRG9jIik7CisJCQlkLmFwcGVuZENoaWxkKGRvY0VsZW1lbnQpOworCisJCQkvLyBDcmVhdGUgdGhlIFhNTENpcGhlciBvYmplY3QKKwkJCWNpcGhlciA9IFhNTENpcGhlci5nZXRJbnN0YW5jZSgpOworCisJCQlFbmNyeXB0ZWREYXRhIGVkID0gCisJCQkJY2lwaGVyLmNyZWF0ZUVuY3J5cHRlZERhdGEoQ2lwaGVyRGF0YS5SRUZFUkVOQ0VfVFlQRSwKKwkJCQkJCQkJCSAgICIjQ2lwaGVyVGV4dElkIik7CisJCQlFbmNyeXB0aW9uTWV0aG9kIGVtID0KKwkJCQljaXBoZXIuY3JlYXRlRW5jcnlwdGlvbk1ldGhvZChYTUxDaXBoZXIuQUVTXzEyOCk7CisKKwkJCWVkLnNldEVuY3J5cHRpb25NZXRob2QoZW0pOworCisJCQlvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5lbmNyeXB0aW9uLlRyYW5zZm9ybXMgeGVuY1RyYW5zZm9ybXMgPQorCQkJCWNpcGhlci5jcmVhdGVUcmFuc2Zvcm1zKGQpOworCQkJZWQuZ2V0Q2lwaGVyRGF0YSgpLmdldENpcGhlclJlZmVyZW5jZSgpLnNldFRyYW5zZm9ybXMoeGVuY1RyYW5zZm9ybXMpOworCQkJb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1zIGRzVHJhbnNmb3JtcyA9CisJCQkJeGVuY1RyYW5zZm9ybXMuZ2V0RFNUcmFuc2Zvcm1zKCk7CisKKwkJCS8vIEFuIFhQYXRoIHRyYW5zZm9ybQorCQkJWFBhdGhDb250YWluZXIgeHBjID0gbmV3IFhQYXRoQ29udGFpbmVyKGQpOworCQkJeHBjLnNldFhQYXRoKCJzZWxmOjp0ZXh0KClbcGFyZW50OjpDaXBoZXJUZXh0W0BJZD1cIkNpcGhlclRleHRJZFwiXV0iKTsKKwkJCWRzVHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0ob3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1zLlRSQU5TRk9STV9YUEFUSCwgCisJCQkJCQkJCQkgIHhwYy5nZXRFbGVtZW50UGx1c1JldHVybnMoKSk7CisKKwkJCS8vIEFkZCBhIEJhc2U2NCBUcmFuc2Zvcm1zCisJCQlkc1RyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKAorCQkJCQkJCQkJICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybXMuVFJBTlNGT1JNX0JBU0U2NF9ERUNPREUpOworCisJCQlFbGVtZW50IGVlID0gY2lwaGVyLm1hcnRpYWwoZCwgZWQpOworCisJCQlkb2NFbGVtZW50LmFwcGVuZENoaWxkKGVlKTsKKworCQkJLy8gQWRkIHRoZSBjaXBoZXIgdGV4dAorCQkJRWxlbWVudCBlbmNyeXB0ZWRFbGVtZW50ID0gZC5jcmVhdGVFbGVtZW50KCJDaXBoZXJUZXh0Iik7CisJCQllbmNyeXB0ZWRFbGVtZW50LnNldEF0dHJpYnV0ZU5TKG51bGwsICJJZCIsICJDaXBoZXJUZXh0SWQiKTsKKwkJCUlkUmVzb2x2ZXIucmVnaXN0ZXJFbGVtZW50QnlJZChlbmNyeXB0ZWRFbGVtZW50LCAiQ2lwaGVyVGV4dElkIik7CisJCQllbmNyeXB0ZWRFbGVtZW50LmFwcGVuZENoaWxkKGQuY3JlYXRlVGV4dE5vZGUodHN0QmFzZTY0RW5jb2RlZFN0cmluZykpOworCQkJZG9jRWxlbWVudC5hcHBlbmRDaGlsZChlbmNyeXB0ZWRFbGVtZW50KTsKKwkJCS8vIGR1bXAoZCk7CisKKwkJCS8vIE5vdyB0aGUgZGVjcnlwdCwgd2l0aCBhIGJyYW5kIG5ldyBjaXBoZXIKKwkJCVhNTENpcGhlciBjaXBoZXJEZWNyeXB0ID0gWE1MQ2lwaGVyLmdldEluc3RhbmNlKCk7CisJCQlLZXkga2V5ID0gCisJCQkJbmV3IFNlY3JldEtleVNwZWMoImFiY2RlZmdoaWprbG1ub3AiLmdldEJ5dGVzKCJBU0NJSSIpLCAiQUVTIik7CisKKwkJCWNpcGhlckRlY3J5cHQuaW5pdChYTUxDaXBoZXIuREVDUllQVF9NT0RFLCBrZXkpOworCQkJYnl0ZVtdIGRlY3J5cHRCeXRlcyA9IGNpcGhlckRlY3J5cHQuZGVjcnlwdFRvQnl0ZUFycmF5KGVlKTsKKworCQkJQXNzZXJ0LmFzc2VydEVxdWFscyhuZXcgU3RyaW5nKGRlY3J5cHRCeXRlcywgIkFTQ0lJIiksIAorCQkJCQkJCQluZXcgU3RyaW5nKCJBIHRlc3QgZW5jcnlwdGVkIHNlY3JldCIpKTsKKwkJfQorCQllbHNlIHsKKwkJCWxvZy53YXJuKCJUZXN0IHRlc3RTYW1lRG9jdW1lbnRDaXBoZXJSZWZlcmVuY2Ugc2tpcHBlZCBhcyBuZWNlc3NhcnkgYWxnb3JpdGhtcyBub3QgYXZhaWxhYmxlIik7CisJCX0KKworCX0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RTZXJpYWxpemVkRGF0YSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBieXRlW10gYml0czEyOCA9IHsKKyAgICAgICAgICAgIChieXRlKSAweDEwLCAoYnl0ZSkgMHgxMSwgKGJ5dGUpIDB4MTIsIChieXRlKSAweDEzLAorICAgICAgICAgICAgKGJ5dGUpIDB4MTQsIChieXRlKSAweDE1LCAoYnl0ZSkgMHgxNiwgKGJ5dGUpIDB4MTcsCisgICAgICAgICAgICAoYnl0ZSkgMHgxOCwgKGJ5dGUpIDB4MTksIChieXRlKSAweDFBLCAoYnl0ZSkgMHgxQiwKKyAgICAgICAgICAgIChieXRlKSAweDFDLCAoYnl0ZSkgMHgxRCwgKGJ5dGUpIDB4MUUsIChieXRlKSAweDFGfTsKKyAgICAgICAgS2V5IGtleSA9IG5ldyBTZWNyZXRLZXlTcGVjKGJpdHMxMjgsICJBRVMiKTsKKworICAgICAgICBEb2N1bWVudCBkID0gZG9jdW1lbnQoKTsgLy8gc291cmNlCisgICAgICAgIEVsZW1lbnQgZSA9IChFbGVtZW50KSBkLmdldEVsZW1lbnRzQnlUYWdOYW1lKGVsZW1lbnQoKSkuaXRlbShpbmRleCgpKTsKKworICAgICAgICAvLyBlbmNyeXB0CisgICAgICAgIGNpcGhlciA9IFhNTENpcGhlci5nZXRJbnN0YW5jZShYTUxDaXBoZXIuQUVTXzEyOCk7CisgICAgICAgIGNpcGhlci5pbml0KFhNTENpcGhlci5FTkNSWVBUX01PREUsIGtleSk7CisKKyAgICAgICAgLy8gc2VyaWFsaXplIGVsZW1lbnQgLi4uCisgICAgICAgIENhbm9uaWNhbGl6ZXIgY2Fub24gPQorICAgICAgICAgICAgQ2Fub25pY2FsaXplci5nZXRJbnN0YW5jZShDYW5vbmljYWxpemVyLkFMR09fSURfQzE0Tl9XSVRIX0NPTU1FTlRTKTsKKyAgICAgICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtIGJhb3MgPSBuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7CisgICAgICAgIGNhbm9uLnNldFdyaXRlcihiYW9zKTsKKyAgICAgICAgY2Fub24ubm90UmVzZXQoKTsKKyAgICAgICAgY2Fub24uY2Fub25pY2FsaXplU3VidHJlZShlKTsKKyAgICAgICAgYmFvcy5jbG9zZSgpOworICAgICAgICBTdHJpbmcgYmVmb3JlID0gYmFvcy50b1N0cmluZygiVVRGLTgiKTsKKworCWJ5dGVbXSBzZXJpYWxpemVkID0gYmFvcy50b0J5dGVBcnJheSgpOworICAgICAgICBFbmNyeXB0ZWREYXRhIGVuY3J5cHRlZERhdGEgPSBjaXBoZXIuZW5jcnlwdERhdGEKKyAgICAgICAgICAgIChkLCBFbmNyeXB0aW9uQ29uc3RhbnRzLlRZUEVfRUxFTUVOVCwKKyAgICAgICAgICAgICBuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oc2VyaWFsaXplZCkpOworCisgICAgICAgIC8vZGVjcnlwdAorICAgICAgICBYTUxDaXBoZXIgZGNpcGhlciA9IFhNTENpcGhlci5nZXRJbnN0YW5jZShYTUxDaXBoZXIuQUVTXzEyOCk7CisgICAgICAgIGRjaXBoZXIuaW5pdChYTUxDaXBoZXIuREVDUllQVF9NT0RFLCBrZXkpOworICAgICAgICBBc3NlcnQuYXNzZXJ0RXF1YWxzCisgICAgICAgICAgICAoZW5jcnlwdGVkRGF0YS5nZXRFbmNyeXB0aW9uTWV0aG9kKCkuZ2V0QWxnb3JpdGhtKCksCisgICAgICAgICAgICAgWE1MQ2lwaGVyLkFFU18xMjgpOworICAgICAgICBieXRlW10gYnl0ZXMgPSBkY2lwaGVyLmRlY3J5cHRUb0J5dGVBcnJheShkY2lwaGVyLm1hcnRpYWwoZW5jcnlwdGVkRGF0YSkpOworICAgICAgICBTdHJpbmcgYWZ0ZXIgPSBuZXcgU3RyaW5nKGJ5dGVzLCAiVVRGLTgiKTsKKyAgICAgICAgQXNzZXJ0LmFzc2VydEVxdWFscyhiZWZvcmUsIGFmdGVyKTsKKworCS8vIHRlc3Qgd2l0aCBudWxsIHR5cGUKKyAgICAgICAgZW5jcnlwdGVkRGF0YSA9IGNpcGhlci5lbmNyeXB0RGF0YQorICAgICAgICAgICAgKGQsIG51bGwsIG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShzZXJpYWxpemVkKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdEVuY3J5cHRlZEtleVdpdGhSZWNpcGllbnQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworCVN0cmluZyBmaWxlbmFtZSA9IAorCSAgICAiZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9lbmNyeXB0aW9uL2VuY3J5cHRlZEtleS54bWwiOworICAgICAgICBpZiAoYmFzZWRpciAhPSBudWxsICYmICEiIi5lcXVhbHMoYmFzZWRpcikpIHsKKyAgICAgICAgICAgIGZpbGVuYW1lID0gYmFzZWRpciArICIvIiArIGZpbGVuYW1lOworICAgICAgICB9CisgICAgICAgIEZpbGUgZiA9IG5ldyBGaWxlKGZpbGVuYW1lKTsKKyAgICAgICAgCisgICAgICAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkgYnVpbGRlckZhY3RvcnkgPSAKKwkgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworICAgICAgICBidWlsZGVyRmFjdG9yeS5zZXROYW1lc3BhY2VBd2FyZSAodHJ1ZSk7CisgICAgICAgIERvY3VtZW50QnVpbGRlciBidWlsZGVyID0gYnVpbGRlckZhY3RvcnkubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgICAgIERvY3VtZW50IGRvY3VtZW50ID0gYnVpbGRlci5wYXJzZShmKTsgCisgICAgICAgIAorICAgICAgICBYTUxDaXBoZXIga2V5Q2lwaGVyID0gWE1MQ2lwaGVyLmdldEluc3RhbmNlKCk7CisgICAgICAgIGtleUNpcGhlci5pbml0KFhNTENpcGhlci5VTldSQVBfTU9ERSwgbnVsbCk7CisgICAgICAgIAorICAgICAgICBOb2RlTGlzdCBla0xpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZU5TCisJICAgIChFbmNyeXB0aW9uQ29uc3RhbnRzLkVuY3J5cHRpb25TcGVjTlMsIAorCSAgICAgRW5jcnlwdGlvbkNvbnN0YW50cy5fVEFHX0VOQ1JZUFRFREtFWSk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZWtMaXN0LmdldExlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgIEVuY3J5cHRlZEtleSBlayA9IGtleUNpcGhlci5sb2FkRW5jcnlwdGVkS2V5CisJCShkb2N1bWVudCwgKEVsZW1lbnQpIGVrTGlzdC5pdGVtKGkpKTsKKwkgICAgYXNzZXJ0Tm90TnVsbChlay5nZXRSZWNpcGllbnQoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIFN0cmluZyB0b1N0cmluZyAoTm9kZSBuKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworCUJ5dGVBcnJheU91dHB1dFN0cmVhbSBiYW9zID0gbmV3IEJ5dGVBcnJheU91dHB1dFN0cmVhbSgpOworCUNhbm9uaWNhbGl6ZXIgYzE0biA9IENhbm9uaWNhbGl6ZXIuZ2V0SW5zdGFuY2UKKwkgICAgKENhbm9uaWNhbGl6ZXIuQUxHT19JRF9DMTROX09NSVRfQ09NTUVOVFMpOworCisJYnl0ZVtdIHNlckJ5dGVzID0gYzE0bi5jYW5vbmljYWxpemVTdWJ0cmVlKG4pOworCWJhb3Mud3JpdGUoc2VyQnl0ZXMpOworCWJhb3MuY2xvc2UoKTsKKworCXJldHVybiBiYW9zLnRvU3RyaW5nKCJVVEYtOCIpOworCisgICAgfQorCQkKKyAgICBzdGF0aWMgeworCW9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaW5pdCgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9leHRlcm5hbC9vcmcvYXBhY2hlL3hhbGFuL1hQYXRoQVBJL0F0dHJpYnV0ZUFuY2VzdG9yT3JTZWxmVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2V4dGVybmFsL29yZy9hcGFjaGUveGFsYW4vWFBhdGhBUEkvQXR0cmlidXRlQW5jZXN0b3JPclNlbGZUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEyYjMyMQotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9leHRlcm5hbC9vcmcvYXBhY2hlL3hhbGFuL1hQYXRoQVBJL0F0dHJpYnV0ZUFuY2VzdG9yT3JTZWxmVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTY5IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LmV4dGVybmFsLm9yZy5hcGFjaGUueGFsYW4uWFBhdGhBUEk7CisKKworCitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbTsKKworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54cGF0aC5YUGF0aEFQSTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhwYXRoLm9iamVjdHMuWE9iamVjdDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CisKKworLyoqCisgKiBUaGlzIHRlc3QgaXMgdG8gZW5zdXJlIHRoYXQgdGhlIG93bmVyIGVsZW1lbnQgb2YgYW4gQXR0cmlidXRlIGlzIG9uIHRoZQorICogYW5jZXN0b3Itb3Itc2VsZiBheGlzLgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqLworcHVibGljIGNsYXNzIEF0dHJpYnV0ZUFuY2VzdG9yT3JTZWxmVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKAorICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVBbmNlc3Rvck9yU2VsZlRlc3QuY2xhc3MuZ2V0TmFtZSgpKTsKKworCisgICAvKioKKyAgICAqIE1ldGhvZCBzdWl0ZQorICAgICoKKyAgICAqCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpIHsKKyAgICAgIHJldHVybiBuZXcgVGVzdFN1aXRlKEF0dHJpYnV0ZUFuY2VzdG9yT3JTZWxmVGVzdC5jbGFzcyk7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgQXR0cmlidXRlQW5jZXN0b3JPclNlbGYKKyAgICAqCisgICAgKiBAcGFyYW0gTmFtZV8KKyAgICAqLworICAgcHVibGljIEF0dHJpYnV0ZUFuY2VzdG9yT3JTZWxmVGVzdChTdHJpbmcgTmFtZV8pIHsKKyAgICAgIHN1cGVyKE5hbWVfKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgbWFpbgorICAgICoKKyAgICAqIEBwYXJhbSBhcmdzCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKworICAgICAgU3RyaW5nW10gdGVzdENhc2VOYW1lID0geyAiLW5vbG9hZGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUFuY2VzdG9yT3JTZWxmVGVzdC5jbGFzcy5nZXROYW1lKCkgfTsKKworICAgICAganVuaXQudGV4dHVpLlRlc3RSdW5uZXIubWFpbih0ZXN0Q2FzZU5hbWUpOworICAgfQorCisgICAvKioKKyAgICAqIFByb2Nlc3MgaW5wdXQgYXJncyBhbmQgZXhlY3V0ZSB0aGUgWFBhdGguCisgICAgKgorICAgICogQHBhcmFtIHhtbFN0cmluZworICAgICogQHBhcmFtIGN0eE5vZGVTdHIKKyAgICAqIEBwYXJhbSBldmFsU3RyCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgc3RhdGljIHByaXZhdGUgYm9vbGVhbiBpc0FuY2VzdG9yT2YoCisgICAgICAgICAgIFN0cmluZyB4bWxTdHJpbmcsIFN0cmluZyBjdHhOb2RlU3RyLCBTdHJpbmcgZXZhbFN0cikKKyAgICAgICAgICAgICAgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkgZGZhY3RvcnkgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisKKyAgICAgIGRmYWN0b3J5LnNldFZhbGlkYXRpbmcoZmFsc2UpOworICAgICAgZGZhY3Rvcnkuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisKKyAgICAgIERvY3VtZW50QnVpbGRlciBkYiA9IGRmYWN0b3J5Lm5ld0RvY3VtZW50QnVpbGRlcigpOworICAgICAgRG9jdW1lbnQgZG9jdW1lbnQgPQorICAgICAgICAgZGIucGFyc2UobmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKF9ub2RlU2V0SW5wdXQxLmdldEJ5dGVzKCkpKTsKKyAgICAgIEVsZW1lbnQgbnNjb250ZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG51bGwsICJuc2NvbnRleHQiKTsKKworICAgICAgbnNjb250ZXh0LnNldEF0dHJpYnV0ZU5TKENvbnN0YW50cy5OYW1lc3BhY2VTcGVjTlMsICJ4bWxuczpkcyIsICJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIik7CisKKyAgICAgIE5vZGUgY3R4Tm9kZSA9IFhQYXRoQVBJLnNlbGVjdFNpbmdsZU5vZGUoZG9jdW1lbnQsIGN0eE5vZGVTdHIsIG5zY29udGV4dCk7CisgICAgICBYT2JqZWN0IGluY2x1ZGUgPSBYUGF0aEFQSS5ldmFsKGN0eE5vZGUsIGV2YWxTdHIsIG5zY29udGV4dCk7CisKKyAgICAgIHJldHVybiBpbmNsdWRlLmJvb2woKTsKKyAgIH0KKworICAgLy9KLQorICAgc3RhdGljIGZpbmFsIFN0cmluZyBfbm9kZVNldElucHV0MSA9CisgICAgICI8P3htbCB2ZXJzaW9uPVwiMS4wXCI/PlxuIgorICAgKyAiPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0naHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyc+IiArICJcbiIKKyAgICsgIjxkczpPYmplY3QgSWQ9J2lkMSc+IiArICJcbiIKKyAgICsgIjwhLS0gdGhlIGNvbW1lbnQgLS0+YW5kIHRleHQiCisgICArICI8L2RzOk9iamVjdD4iICsgIlxuIgorICAgKyAiPC9kczpTaWduYXR1cmU+IjsKKyAgIC8vSisKKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdDAxCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3QwMSgpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgY3R4Tm9kZVN0ciA9ICIvZHM6U2lnbmF0dXJlL2RzOk9iamVjdCI7CisgICAgICBTdHJpbmcgZXZhbFN0ciA9ICJhbmNlc3Rvci1vci1zZWxmOjpkczpTaWduYXR1cmUiOworCisgICAgICBhc3NlcnRUcnVlKCJCYWQgIiArIGN0eE5vZGVTdHIgKyAiICIgKyBldmFsU3RyICsgIiAgIiwKKyAgICAgICAgICAgICAgICAgaXNBbmNlc3Rvck9mKF9ub2RlU2V0SW5wdXQxLCBjdHhOb2RlU3RyLCBldmFsU3RyKSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHRlc3QwMgorICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0MDIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIGN0eE5vZGVTdHIgPSAiL2RzOlNpZ25hdHVyZS9kczpPYmplY3QvdGV4dCgpIjsKKyAgICAgIFN0cmluZyBldmFsU3RyID0gImFuY2VzdG9yLW9yLXNlbGY6OmRzOlNpZ25hdHVyZSI7CisKKyAgICAgIGFzc2VydFRydWUoIkJhZCAiICsgY3R4Tm9kZVN0ciArICIgIiArIGV2YWxTdHIgKyAiICAiICAsCisgICAgICAgICAgICAgICAgIGlzQW5jZXN0b3JPZihfbm9kZVNldElucHV0MSwgY3R4Tm9kZVN0ciwgZXZhbFN0cikpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0MDMKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgdGVzdDAzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZyBjdHhOb2RlU3RyID0gIi9kczpTaWduYXR1cmUvZHM6T2JqZWN0L0BJZCI7CisgICAgICBTdHJpbmcgZXZhbFN0ciA9ICJhbmNlc3Rvci1vci1zZWxmOjpkczpPYmplY3QiOworCisgICAgICBhc3NlcnRUcnVlKCJCYWQgIiArIGN0eE5vZGVTdHIgKyAiICIgKyBldmFsU3RyICsgIiAgIiAsCisgICAgICAgICAgICAgICAgIGlzQW5jZXN0b3JPZihfbm9kZVNldElucHV0MSwgY3R4Tm9kZVN0ciwgZXZhbFN0cikpOworICAgfQorCisgICBzdGF0aWMgeworICAgICAgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuSW5pdC5pbml0KCk7CisgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvZXh0ZXJuYWwvb3JnL2FwYWNoZS94YWxhbi9YUGF0aEFQSS9YYWxhbkJ1ZzE0MjVUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvZXh0ZXJuYWwvb3JnL2FwYWNoZS94YWxhbi9YUGF0aEFQSS9YYWxhbkJ1ZzE0MjVUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVlZTc5MAotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9leHRlcm5hbC9vcmcvYXBhY2hlL3hhbGFuL1hQYXRoQVBJL1hhbGFuQnVnMTQyNVRlc3QuamF2YQpAQCAtMCwwICsxLDI0NyBAQAorCisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LmV4dGVybmFsLm9yZy5hcGFjaGUueGFsYW4uWFBhdGhBUEk7CisKKworCisvLyBUaGlzIGZpbGUgdXNlcyA0IHNwYWNlIGluZGVudHMsIG5vIHRhYnMuCitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbTsKKworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uT3V0cHV0S2V5czsKK2ltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyOworaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJGYWN0b3J5OworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQVBJOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CitpbXBvcnQgb3JnLnczYy5kb20udHJhdmVyc2FsLk5vZGVJdGVyYXRvcjsKKworCisvKioKKyAqIFRlc3RjYXNlIGZvciB0ZXN0aW5nIHRoZSA8QSBIUkVGPSJodHRwOi8vbmFnb3lhLmFwYWNoZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE0MjUiPlhhbGFuIEJ1ZyAxNDI1PC9BPi4KKyAqCisgKiBUaGlzIGZhaWxzIHdpdGggWGFsYW4gdjIuMS4wIGFuZCB3b3JrcyB3aXRoIFhhbGFuIHYyLjJENi4KKyAqLworcHVibGljIGNsYXNzIFhhbGFuQnVnMTQyNVRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZygKKyAgICAgICAgICAgICAgICAgICAgWGFsYW5CdWcxNDI1VGVzdC5jbGFzcy5nZXROYW1lKCkpOworCisKKyAgIC8qKgorICAgICogTWV0aG9kIHN1aXRlCisgICAgKgorICAgICoKKyAgICAqLworICAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkgeworICAgICAgcmV0dXJuIG5ldyBUZXN0U3VpdGUoWGFsYW5CdWcxNDI1VGVzdC5jbGFzcyk7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgWGFsYW5CdWcxNDI1VGVzdAorICAgICoKKyAgICAqIEBwYXJhbSBOYW1lXworICAgICovCisgICBwdWJsaWMgWGFsYW5CdWcxNDI1VGVzdChTdHJpbmcgTmFtZV8pIHsKKyAgICAgIHN1cGVyKE5hbWVfKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgbWFpbgorICAgICoKKyAgICAqIEBwYXJhbSBhcmdzCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKworICAgICAgU3RyaW5nW10gdGVzdENhc2VOYW1lID0geyAiLW5vbG9hZGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhhbGFuQnVnMTQyNVRlc3QuY2xhc3MuZ2V0TmFtZSgpIH07CisKKyAgICAgIGp1bml0LnRleHR1aS5UZXN0UnVubmVyLm1haW4odGVzdENhc2VOYW1lKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBQcm9jZXNzIGlucHV0IGFyZ3MgYW5kIGV4ZWN1dGUgdGhlIFhQYXRoLgorICAgICoKKyAgICAqIEBwYXJhbSB4bWxTdHJpbmcKKyAgICAqIEBwYXJhbSB4cGF0aAorICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHN0YXRpYyBwcml2YXRlIGJvb2xlYW4gY29udGFpbnNEb2N1bWVudEVsZW1lbnQoCisgICAgICAgICAgIFN0cmluZyB4bWxTdHJpbmcsIFN0cmluZyB4cGF0aCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkgZGZhY3RvcnkgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisgICAgICBEb2N1bWVudEJ1aWxkZXIgZGIgPSBkZmFjdG9yeS5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKKyAgICAgIERvY3VtZW50IGRvYyA9IGRiLnBhcnNlKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbSh4bWxTdHJpbmcuZ2V0Qnl0ZXMoKSkpOworCisgICAgICAvLyBTZXQgdXAgYW4gaWRlbnRpdHkgdHJhbnNmb3JtZXIgdG8gdXNlIGFzIHNlcmlhbGl6ZXIuCisgICAgICBUcmFuc2Zvcm1lciBzZXJpYWxpemVyID0KKyAgICAgICAgIFRyYW5zZm9ybWVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpLm5ld1RyYW5zZm9ybWVyKCk7CisKKyAgICAgIHNlcmlhbGl6ZXIuc2V0T3V0cHV0UHJvcGVydHkoT3V0cHV0S2V5cy5PTUlUX1hNTF9ERUNMQVJBVElPTiwgInllcyIpOworCisgICAgICAvLyBVc2UgdGhlIHNpbXBsZSBYUGF0aCBBUEkgdG8gc2VsZWN0IGEgbm9kZUl0ZXJhdG9yLgorICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCJRdWVyeWluZyBET00gdXNpbmcgIiArIHhwYXRoKTsKKyAgICAgIE5vZGVJdGVyYXRvciBubCA9IFhQYXRoQVBJLnNlbGVjdE5vZGVJdGVyYXRvcihkb2MsIHhwYXRoKTsKKworICAgICAgLy8gU2VyaWFsaXplIHRoZSBmb3VuZCBub2RlcyB0byBTeXN0ZW0ub3V0LgorICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCI8b3V0cHV0PiIpOworICAgICAgTm9kZSBuOworCisgICAgICB3aGlsZSAoKG4gPSBubC5uZXh0Tm9kZSgpKSAhPSBudWxsKSB7CisKKyAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiPG5vZGUiICsgKytpICsgIiBub2RlVHlwZT1cIiIgKyBub2RlVHlwZVN0cmluZ1tuLmdldE5vZGVUeXBlKCldICsgIlwiPiIpOworICAgICAgICAgLy8gc2VyaWFsaXplci50cmFuc2Zvcm0obmV3IERPTVNvdXJjZShuKSwgbmV3IFN0cmVhbVJlc3VsdChTeXN0ZW0ub3V0KSk7CisgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIjwvbm9kZSIgKyBpICsgIj4iKTsKKyAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgICAgaWYgKG4gPT0gZG9jLmdldERvY3VtZW50RWxlbWVudCgpKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCI8L291dHB1dD4iKTsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdEJhZDAxCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3RCYWQwMSgpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgeG1sID0gIjxkb2M+PGEgLz4gPC9kb2M+PCEtLSAtLT4iOworICAgICAgU3RyaW5nIGRlc2MgPSAiICMgbWl4ZWQgY29udGVudCBhbmQgZm9sbG93aW5nIGNvbW1lbnQiOworICAgICAgU3RyaW5nIHhwYXRoID0gIigvLy4pIjsKKworICAgICAgYXNzZXJ0VHJ1ZSgiQmFkICIgKyB4bWwgKyBkZXNjICsgIiAgIiAsCisgICAgICAgICAgICAgICAgIGNvbnRhaW5zRG9jdW1lbnRFbGVtZW50KHhtbCwgeHBhdGgpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdEJhZDAyCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3RCYWQwMigpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgeG1sID0gIjxkb2M+PGEgLz4gPC9kb2M+PD9waT8+IjsKKyAgICAgIFN0cmluZyBkZXNjID0gIiAjIG1peGVkIGNvbnRlbnQgYW5kIGZvbGxvd2luZyBQSSI7CisgICAgICBTdHJpbmcgeHBhdGggPSAiKC8vLikiOworCisgICAgICBhc3NlcnRUcnVlKCJCYWQgIiArIHhtbCArIGRlc2MgKyAiICAiICwKKyAgICAgICAgICAgICAgICAgY29udGFpbnNEb2N1bWVudEVsZW1lbnQoeG1sLCB4cGF0aCkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0QmFkMDMKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgdGVzdEJhZDAzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZyB4bWwgPSAiPGRvYz48YSAvPjxiIC8+PC9kb2M+PCEtLSAtLT4iOworICAgICAgU3RyaW5nIGRlc2MgPSAiICMgbWl4ZWQgY29udGVudCBhbmQgZm9sbG93aW5nIGNvbW1lbnQiOworICAgICAgU3RyaW5nIHhwYXRoID0gIigvLy4pIjsKKworICAgICAgYXNzZXJ0VHJ1ZSgiQmFkICIgKyB4bWwgKyBkZXNjICsgIiAgIiAsCisgICAgICAgICAgICAgICAgIGNvbnRhaW5zRG9jdW1lbnRFbGVtZW50KHhtbCwgeHBhdGgpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdEdvb2QwMQorICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0R29vZDAxKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZyB4bWwgPSAiPGRvYz48YSAvPjwvZG9jPjwhLS0gLS0+IjsKKyAgICAgIFN0cmluZyBkZXNjID0gIiAjICdjbGVhbicgY29udGVudCBhbmQgZm9sbG93aW5nIGNvbW1lbnQiOworICAgICAgU3RyaW5nIHhwYXRoID0gIigvLy4pIjsKKworICAgICAgYXNzZXJ0VHJ1ZSgiR29vZCAiICsgeG1sICsgZGVzYywgY29udGFpbnNEb2N1bWVudEVsZW1lbnQoeG1sLCB4cGF0aCkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0R29vZDAyCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3RHb29kMDIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIHhtbCA9ICI8ZG9jPjxhIC8+IDwvZG9jPiI7CisgICAgICBTdHJpbmcgZGVzYyA9ICIgIyBtaXhlZCBjb250ZW50IGFuZCBub3RoaW5nIGZvbGxvd3MiOworICAgICAgU3RyaW5nIHhwYXRoID0gIigvLy4pIjsKKworICAgICAgYXNzZXJ0VHJ1ZSgiR29vZCAiICsgeG1sICsgZGVzYywgY29udGFpbnNEb2N1bWVudEVsZW1lbnQoeG1sLCB4cGF0aCkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0R29vZDAzCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3RHb29kMDMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIHhtbCA9ICI8IS0tIC0tPjxkb2M+PGEgLz4gPC9kb2M+IjsKKyAgICAgIFN0cmluZyBkZXNjID0gIiAjIG1peGVkIGNvbnRlbnQgYW5kIHByZWNlZGluZyBjb21tZW50IjsKKyAgICAgIFN0cmluZyB4cGF0aCA9ICIoLy8uKSI7CisKKyAgICAgIGFzc2VydFRydWUoIkdvb2QgIiArIHhtbCArIGRlc2MsIGNvbnRhaW5zRG9jdW1lbnRFbGVtZW50KHhtbCwgeHBhdGgpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdEdvb2QwNAorICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0R29vZDA0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZyB4bWwgPSAiPD9waT8+PGRvYz48YSAvPiA8L2RvYz4iOworICAgICAgU3RyaW5nIGRlc2MgPSAiICMgbWl4ZWQgY29udGVudCBhbmQgcHJlY2VkaW5nIFBJIjsKKyAgICAgIFN0cmluZyB4cGF0aCA9ICIoLy8uKSI7CisKKyAgICAgIGFzc2VydFRydWUoIkdvb2QgIiArIHhtbCArIGRlc2MsIGNvbnRhaW5zRG9jdW1lbnRFbGVtZW50KHhtbCwgeHBhdGgpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdEdvb2QwNQorICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0R29vZDA1KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZyB4bWwgPSAiPGRvYz48YSAvPjxiIC8+PC9kb2M+IjsKKyAgICAgIFN0cmluZyBkZXNjID0gIiAjIG1peGVkIEVsZW1Db250ZW50IjsKKyAgICAgIFN0cmluZyB4cGF0aCA9ICIoLy8uKSI7CisKKyAgICAgIGFzc2VydFRydWUoIkdvb2QgIiArIHhtbCArIGRlc2MsIGNvbnRhaW5zRG9jdW1lbnRFbGVtZW50KHhtbCwgeHBhdGgpKTsKKyAgIH0KKworICAgc3RhdGljIHsKKyAgICAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaW5pdCgpOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2ludGVyb3AvQmFsdGltb3JlVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2ludGVyb3AvQmFsdGltb3JlVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmNmQ2NmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvaW50ZXJvcC9CYWx0aW1vcmVUZXN0LmphdmEKQEAgLTAsMCArMSw1NzggQEAKKy8qCisgKiBDb3B5cmlnaHQgMTk5OS0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5pbnRlcm9wOworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QudXRpbHMucmVzb2x2ZXIuT2ZmbGluZVJlc29sdmVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyLlJlc291cmNlUmVzb2x2ZXJTcGk7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZUV4Y2VwdGlvbjsKKworLyoqCisgKiBUaGlzIHRlc3QgaXMgdG8gZW5zdXJlIGludGVyb3BlcmFiaWxpdHkgd2l0aCB0aGUgZXhhbXBsZXMgcHJvdmlkZWQgYnkgTWVybGluIEh1Z2VzCisgKiBmcm9tIEJhbHRpbW9yZSB1c2luZyBLZXlUb29scyBYTUwuIFRoZXNlIHRlc3QgdmVjdG9ycyBhcmUgbG9jYXRlZCBpbiB0aGUgZGlyZWN0b3J5CisgKiA8Q09ERT5kYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvPC9DT0RFPi4KKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKiBAc2VlIDxBIEhSRUY9Imh0dHA6Ly93d3cuYmFsdGltb3JlLmNvbS9rZXl0b29scy94bWwvaW5kZXguaHRtbCI+VGhlIEtleVRvb2xzIFhNTCBXZWJzaXRlPC9BPgorICovCitwdWJsaWMgY2xhc3MgQmFsdGltb3JlVGVzdCBleHRlbmRzIEludGVyb3BUZXN0IHsKKworICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKEJhbHRpbW9yZVRlc3QuY2xhc3MuZ2V0TmFtZSgpKTsKKworICAgLyoqIEZpZWxkIG1lcmxpbnNEaXIxNSAgICAgICAgICAgKi8KKyAgIHN0YXRpYyBTdHJpbmcgbWVybGluc0RpcjE1ID0KKyAgICAgICJkYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctZmlmdGVlbi8iOworICAgc3RhdGljIFN0cmluZyBtZXJsaW5zRGlyMTYgPQorICAgCSJkYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctc2l4dGVlbiI7CisgICBzdGF0aWMgU3RyaW5nIG1lcmxpbnNEaXIyMyA9CisgICAJImRhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvIjsKKworICAgLyoqCisgICAgKiBNZXRob2Qgc3VpdGUKKyAgICAqCisgICAgKgorICAgICovCisgICBwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKSB7CisgICAgICBUZXN0U3VpdGUgc3VpdGUgPSBuZXcgVGVzdFN1aXRlKEJhbHRpbW9yZVRlc3QuY2xhc3MpOworCisgICAgICByZXR1cm4gc3VpdGU7CisgICB9CisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIEJhbHRpbW9yZVRlc3QKKyAgICAqCisgICAgKiBAcGFyYW0gTmFtZV8KKyAgICAqLworICAgcHVibGljIEJhbHRpbW9yZVRlc3QoU3RyaW5nIE5hbWVfKSB7CisgICAgICBzdXBlcihOYW1lXyk7CisgICB9CisKKworICAgLyoqCisgICAgKiBNZXRob2QgbWFpbgorICAgICoKKyAgICAqIEBwYXJhbSBhcmdzCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKworICAgICAgU3RyaW5nW10gdGVzdENhc2VOYW1lID0geyAiLW5vbG9hZGluZyIsIEJhbHRpbW9yZVRlc3QuY2xhc3MuZ2V0TmFtZSgpIH07CisKKyAgICAgIGp1bml0LnRleHR1aS5UZXN0UnVubmVyLm1haW4odGVzdENhc2VOYW1lKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdF9maWZ0ZWVuX2VudmVsb3BpbmdfaG1hY19zaGExCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHZvaWQgdGVzdF9maWZ0ZWVuX2VudmVsb3BpbmdfaG1hY19zaGExKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZyBmaWxlbmFtZSA9IG1lcmxpbnNEaXIxNSArICJzaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTEueG1sIjsKKyAgICAgIGJvb2xlYW4gdmVyaWZ5ID0gdGhpcy52ZXJpZnlITUFDKGZpbGVuYW1lLCBuZXcgT2ZmbGluZVJlc29sdmVyKCksIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlY3JldCIuZ2V0Qnl0ZXMoIkFTQ0lJIikpOworCisgICAgICBpZiAoIXZlcmlmeSkgeworICAgICAgICAgbG9nLmVycm9yKCJWZXJpZmljYXRpb24gZmFpbGVkIGZvciAiICsgZmlsZW5hbWUpOworICAgICAgfQorCisgICAgICBhc3NlcnRUcnVlKGZpbGVuYW1lLCB2ZXJpZnkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0X2ZpZnRlZW5fZW52ZWxvcGluZ19obWFjX3NoYTFfNDAKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgdm9pZCB0ZXN0X2ZpZnRlZW5fZW52ZWxvcGluZ19obWFjX3NoYTFfNDAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIGZpbGVuYW1lID0gbWVybGluc0RpcjE1ICsgInNpZ25hdHVyZS1lbnZlbG9waW5nLWhtYWMtc2hhMS00MC54bWwiOworICAgICAgUmVzb3VyY2VSZXNvbHZlclNwaSByZXNvbHZlciA9IG5ldyBPZmZsaW5lUmVzb2x2ZXIoKTsKKyAgICAgIGJvb2xlYW4gZm9sbG93TWFuaWZlc3RzID0gZmFsc2U7CisgICAgICBieXRlW10gaG1hY0tleSA9ICJzZWNyZXQiLmdldEJ5dGVzKCJBU0NJSSIpOworICAgICAgYm9vbGVhbiB2ZXJpZnkgPSBmYWxzZTsKKworICAgICAgdHJ5IHsKKyAgICAgICAgIHZlcmlmeSA9IHRoaXMudmVyaWZ5SE1BQyhmaWxlbmFtZSwgcmVzb2x2ZXIsIGZvbGxvd01hbmlmZXN0cywgaG1hY0tleSk7CisgICAgICAgICBmYWlsKCJITUFDT3V0cHV0TGVuZ3RoIEV4Y2VwdGlvbiBub3QgY2F1Z2h0Iik7CisgICAgICB9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBjcmFzaGVkIGZvciAiICsgZmlsZW5hbWUpOworICAgICAgICAgdGhyb3cgZXg7CisgICAgICB9IGNhdGNoIChYTUxTaWduYXR1cmVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIGlmIChleC5nZXRNc2dJRCgpLmVxdWFscygiYWxnb3JpdGhtcy5ITUFDT3V0cHV0TGVuZ3RoTWluIikpIHsKKyAgICAgICAgICAgICAvLyBzdWNjZWVkCisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIGZhaWwoZXguZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgIH0KKyAgICAgIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdF9maWZ0ZWVuX2VudmVsb3BlZF9kc2EKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgdm9pZCB0ZXN0X2ZpZnRlZW5fZW52ZWxvcGVkX2RzYSgpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBtZXJsaW5zRGlyMTUgKyAic2lnbmF0dXJlLWVudmVsb3BlZC1kc2EueG1sIjsKKyAgICAgIFJlc291cmNlUmVzb2x2ZXJTcGkgcmVzb2x2ZXIgPSBuZXcgT2ZmbGluZVJlc29sdmVyKCk7CisgICAgICBib29sZWFuIGZvbGxvd01hbmlmZXN0cyA9IGZhbHNlOworICAgICAgYm9vbGVhbiB2ZXJpZnkgPSBmYWxzZTsKKworICAgICAgdHJ5IHsKKyAgICAgICAgIHZlcmlmeSA9IHRoaXMudmVyaWZ5KGZpbGVuYW1lLCByZXNvbHZlciwgZm9sbG93TWFuaWZlc3RzKTsKKyAgICAgIH0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIGxvZy5lcnJvcigiVmVyaWZpY2F0aW9uIGNyYXNoZWQgZm9yICIgKyBmaWxlbmFtZSk7CisgICAgICAgICB0aHJvdyBleDsKKyAgICAgIH0KKworICAgICAgaWYgKCF2ZXJpZnkpIHsKKyAgICAgICAgIGxvZy5lcnJvcigiVmVyaWZpY2F0aW9uIGZhaWxlZCBmb3IgIiArIGZpbGVuYW1lKTsKKyAgICAgIH0KKworICAgICAgYXNzZXJ0VHJ1ZShmaWxlbmFtZSwgdmVyaWZ5KTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdF9maWZ0ZWVuX2VudmVsb3BpbmdfYjY0X2RzYQorICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHRlc3RfZmlmdGVlbl9lbnZlbG9waW5nX2I2NF9kc2EoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIGZpbGVuYW1lID0gbWVybGluc0RpcjE1ICsgInNpZ25hdHVyZS1lbnZlbG9waW5nLWI2NC1kc2EueG1sIjsKKyAgICAgIFJlc291cmNlUmVzb2x2ZXJTcGkgcmVzb2x2ZXIgPSBudWxsOworICAgICAgYm9vbGVhbiBmb2xsb3dNYW5pZmVzdHMgPSBmYWxzZTsKKyAgICAgIGJvb2xlYW4gdmVyaWZ5ID0gZmFsc2U7CisKKyAgICAgIHRyeSB7CisgICAgICAgICB2ZXJpZnkgPSB0aGlzLnZlcmlmeShmaWxlbmFtZSwgcmVzb2x2ZXIsIGZvbGxvd01hbmlmZXN0cyk7CisgICAgICB9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBjcmFzaGVkIGZvciAiICsgZmlsZW5hbWUpOworICAgICAgICAgdGhyb3cgZXg7CisgICAgICB9CisKKyAgICAgIGlmICghdmVyaWZ5KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBmYWlsZWQgZm9yICIgKyBmaWxlbmFtZSk7CisgICAgICB9CisKKyAgICAgIGFzc2VydFRydWUoZmlsZW5hbWUsIHZlcmlmeSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHRlc3RfZmlmdGVlbl9lbnZlbG9waW5nX2RzYQorICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHRlc3RfZmlmdGVlbl9lbnZlbG9waW5nX2RzYSgpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBtZXJsaW5zRGlyMTUgKyAic2lnbmF0dXJlLWVudmVsb3BpbmctZHNhLnhtbCI7CisgICAgICBSZXNvdXJjZVJlc29sdmVyU3BpIHJlc29sdmVyID0gbmV3IE9mZmxpbmVSZXNvbHZlcigpOworICAgICAgYm9vbGVhbiBmb2xsb3dNYW5pZmVzdHMgPSBmYWxzZTsKKyAgICAgIGJvb2xlYW4gdmVyaWZ5ID0gZmFsc2U7CisKKyAgICAgIHRyeSB7CisgICAgICAgICB2ZXJpZnkgPSB0aGlzLnZlcmlmeShmaWxlbmFtZSwgcmVzb2x2ZXIsIGZvbGxvd01hbmlmZXN0cyk7CisgICAgICB9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBjcmFzaGVkIGZvciAiICsgZmlsZW5hbWUpOworICAgICAgICAgdGhyb3cgZXg7CisgICAgICB9CisKKyAgICAgIGlmICghdmVyaWZ5KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBmYWlsZWQgZm9yICIgKyBmaWxlbmFtZSk7CisgICAgICB9CisKKyAgICAgIGFzc2VydFRydWUoZmlsZW5hbWUsIHZlcmlmeSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHRlc3RfZmlmdGVlbl9lbnZlbG9waW5nX3JzYQorICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHRlc3RfZmlmdGVlbl9lbnZlbG9waW5nX3JzYSgpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBtZXJsaW5zRGlyMTUgKyAic2lnbmF0dXJlLWVudmVsb3BpbmctcnNhLnhtbCI7CisgICAgICBSZXNvdXJjZVJlc29sdmVyU3BpIHJlc29sdmVyID0gbmV3IE9mZmxpbmVSZXNvbHZlcigpOworICAgICAgYm9vbGVhbiBmb2xsb3dNYW5pZmVzdHMgPSBmYWxzZTsKKyAgICAgIGJvb2xlYW4gdmVyaWZ5ID0gZmFsc2U7CisKKyAgICAgIHRyeSB7CisgICAgICAgICB2ZXJpZnkgPSB0aGlzLnZlcmlmeShmaWxlbmFtZSwgcmVzb2x2ZXIsIGZvbGxvd01hbmlmZXN0cyk7CisgICAgICB9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBjcmFzaGVkIGZvciAiICsgZmlsZW5hbWUpOworICAgICAgICAgdGhyb3cgZXg7CisgICAgICB9CisKKyAgICAgIGlmICghdmVyaWZ5KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBmYWlsZWQgZm9yICIgKyBmaWxlbmFtZSk7CisgICAgICB9CisKKyAgICAgIGFzc2VydFRydWUoZmlsZW5hbWUsIHZlcmlmeSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHRlc3RfZmlmdGVlbl9leHRlcm5hbF9iNjRfZHNhCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHZvaWQgdGVzdF9maWZ0ZWVuX2V4dGVybmFsX2I2NF9kc2EoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIGZpbGVuYW1lID0gbWVybGluc0RpcjE1ICsgInNpZ25hdHVyZS1leHRlcm5hbC1iNjQtZHNhLnhtbCI7CisgICAgICBSZXNvdXJjZVJlc29sdmVyU3BpIHJlc29sdmVyID0gbmV3IE9mZmxpbmVSZXNvbHZlcigpOworICAgICAgYm9vbGVhbiBmb2xsb3dNYW5pZmVzdHMgPSBmYWxzZTsKKyAgICAgIGJvb2xlYW4gdmVyaWZ5ID0gZmFsc2U7CisKKyAgICAgIHRyeSB7CisgICAgICAgICB2ZXJpZnkgPSB0aGlzLnZlcmlmeShmaWxlbmFtZSwgcmVzb2x2ZXIsIGZvbGxvd01hbmlmZXN0cyk7CisgICAgICB9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBjcmFzaGVkIGZvciAiICsgZmlsZW5hbWUpOworICAgICAgICAgdGhyb3cgZXg7CisgICAgICB9CisKKyAgICAgIGlmICghdmVyaWZ5KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBmYWlsZWQgZm9yICIgKyBmaWxlbmFtZSk7CisgICAgICB9CisKKyAgICAgIGFzc2VydFRydWUoZmlsZW5hbWUsIHZlcmlmeSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHRlc3RfZmlmdGVlbl9leHRlcm5hbF9kc2EKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgdm9pZCB0ZXN0X2ZpZnRlZW5fZXh0ZXJuYWxfZHNhKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZyBmaWxlbmFtZSA9IG1lcmxpbnNEaXIxNSArICJzaWduYXR1cmUtZXh0ZXJuYWwtZHNhLnhtbCI7CisgICAgICBSZXNvdXJjZVJlc29sdmVyU3BpIHJlc29sdmVyID0gbmV3IE9mZmxpbmVSZXNvbHZlcigpOworICAgICAgYm9vbGVhbiBmb2xsb3dNYW5pZmVzdHMgPSBmYWxzZTsKKyAgICAgIGJvb2xlYW4gdmVyaWZ5ID0gZmFsc2U7CisKKyAgICAgIHRyeSB7CisgICAgICAgICB2ZXJpZnkgPSB0aGlzLnZlcmlmeShmaWxlbmFtZSwgcmVzb2x2ZXIsIGZvbGxvd01hbmlmZXN0cyk7CisgICAgICB9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBjcmFzaGVkIGZvciAiICsgZmlsZW5hbWUpOworICAgICAgICAgdGhyb3cgZXg7CisgICAgICB9CisKKyAgICAgIGlmICghdmVyaWZ5KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBmYWlsZWQgZm9yICIgKyBmaWxlbmFtZSk7CisgICAgICB9CisKKyAgICAgIGFzc2VydFRydWUoZmlsZW5hbWUsIHZlcmlmeSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHRlc3Rfc2l4dGVlbl9leHRlcm5hbF9kc2EKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgdm9pZCB0ZXN0X3NpeHRlZW5fZXh0ZXJuYWxfZHNhKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZyBmaWxlbmFtZSA9CisgICAgICAgICBtZXJsaW5zRGlyMTYgKyAiL3NpZ25hdHVyZS54bWwiOworICAgICAgUmVzb3VyY2VSZXNvbHZlclNwaSByZXNvbHZlciA9IG5ldyBPZmZsaW5lUmVzb2x2ZXIoKTsKKyAgICAgIGJvb2xlYW4gZm9sbG93TWFuaWZlc3RzID0gZmFsc2U7CisgICAgICBib29sZWFuIHZlcmlmeSA9IGZhbHNlOworCisgICAgICB0cnkgeworICAgICAgICAgdmVyaWZ5ID0gdGhpcy52ZXJpZnkoZmlsZW5hbWUsIHJlc29sdmVyLCBmb2xsb3dNYW5pZmVzdHMpOworICAgICAgfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgbG9nLmVycm9yKCJWZXJpZmljYXRpb24gY3Jhc2hlZCBmb3IgIiArIGZpbGVuYW1lKTsKKyAgICAgICAgIHRocm93IGV4OworICAgICAgfQorCisgICAgICBpZiAoIXZlcmlmeSkgeworICAgICAgICAgbG9nLmVycm9yKCJWZXJpZmljYXRpb24gZmFpbGVkIGZvciAiICsgZmlsZW5hbWUpOworICAgICAgfQorCisgICAgICBhc3NlcnRUcnVlKGZpbGVuYW1lLCB2ZXJpZnkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0X3NpeHRlZW5fYmFkX3NpZ25hdHVyZS4gVGhpcyB0ZXN0cyBtYWtlIHN1cmUgdGhhdCBhbgorICAgICogaW52YWxpZCBzaWduYXR1cmUgaXMgbm90IHZhbGlkLiBUaGlzIGlzIHZhbGlkYXRpbmcgbWVybGluJ3MgMTYKKyAgICAqIHNpZ25hdHVyZSBidXQgc29tZSBvZiB0aGUgcmVmZXJlbmNlZCBjb250ZW50IGhhcyBiZWVuIG1vZGlmaWVkIHNvCisgICAgKiBzb21lIG9mIHRoZSByZWZlcmVuY2VzIHNob3VsZCBiZSBpbnZhbGlkLgorICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHRlc3Rfc2l4dGVlbl9iYWRfc2lnbmF0dXJlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZyBmaWxlbmFtZSA9CisgICAgICAgICBtZXJsaW5zRGlyMTYgKyAiL2JhZC1zaWduYXR1cmUueG1sIjsKKyAgICAgIFJlc291cmNlUmVzb2x2ZXJTcGkgcmVzb2x2ZXIgPSBuZXcgT2ZmbGluZVJlc29sdmVyKCk7CisgICAgICBib29sZWFuIGZvbGxvd01hbmlmZXN0cyA9IGZhbHNlOworICAgICAgYm9vbGVhbiB2ZXJpZnkgPSBmYWxzZTsKKworICAgICAgdHJ5IHsKKyAgICAgICAgIHZlcmlmeSA9IHRoaXMudmVyaWZ5KGZpbGVuYW1lLCByZXNvbHZlciwgZm9sbG93TWFuaWZlc3RzKTsKKyAgICAgIH0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIGxvZy5lcnJvcigiVmVyaWZpY2F0aW9uIGNyYXNoZWQgZm9yICIgKyBmaWxlbmFtZSk7CisgICAgICAgICB0aHJvdyBleDsKKyAgICAgIH0KKworICAgICAgaWYgKHZlcmlmeSkgeworICAgICAgICAgbG9nLmVycm9yKCJWZXJpZmljYXRpb24gcGFzc2VkIChzaG91bGQgaGF2ZSBmYWlsZWQpIGZvciAiICsgZmlsZW5hbWUpOworICAgICAgfQorCisgICAgICBhc3NlcnRGYWxzZShmaWxlbmFtZSwgdmVyaWZ5KTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdF90d2VudHlfdGhyZWVfZW52ZWxvcGluZ19obWFjX3NoYTEKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgdm9pZCB0ZXN0X3R3ZW50eV90aHJlZV9lbnZlbG9waW5nX2htYWNfc2hhMSgpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBtZXJsaW5zRGlyMjMgKyAic2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGExLnhtbCI7CisgICAgICBib29sZWFuIHZlcmlmeSA9IHRoaXMudmVyaWZ5SE1BQyhmaWxlbmFtZSwgbmV3IE9mZmxpbmVSZXNvbHZlcigpLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWNyZXQiLmdldEJ5dGVzKCJBU0NJSSIpKTsKKworICAgICAgaWYgKCF2ZXJpZnkpIHsKKyAgICAgICAgIGxvZy5lcnJvcigiVmVyaWZpY2F0aW9uIGZhaWxlZCBmb3IgIiArIGZpbGVuYW1lKTsKKyAgICAgIH0KKworICAgICAgYXNzZXJ0VHJ1ZShmaWxlbmFtZSwgdmVyaWZ5KTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdF90d2VudHlfdGhyZWVfZW52ZWxvcGluZ19obWFjX3NoYTFfNDAKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgdm9pZCB0ZXN0X3R3ZW50eV90aHJlZV9lbnZlbG9waW5nX2htYWNfc2hhMV80MCgpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBtZXJsaW5zRGlyMjMgKyAic2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGExLTQwLnhtbCI7CisgICAgICBSZXNvdXJjZVJlc29sdmVyU3BpIHJlc29sdmVyID0gbmV3IE9mZmxpbmVSZXNvbHZlcigpOworICAgICAgYm9vbGVhbiBmb2xsb3dNYW5pZmVzdHMgPSBmYWxzZTsKKyAgICAgIGJ5dGVbXSBobWFjS2V5ID0gInNlY3JldCIuZ2V0Qnl0ZXMoIkFTQ0lJIik7CisgICAgICBib29sZWFuIHZlcmlmeSA9IGZhbHNlOworCisgICAgICB0cnkgeworICAgICAgICAgdmVyaWZ5ID0gdGhpcy52ZXJpZnlITUFDKGZpbGVuYW1lLCByZXNvbHZlciwgZm9sbG93TWFuaWZlc3RzLCBobWFjS2V5KTsKKyAgICAgICAgIGZhaWwoIkhNQUNPdXRwdXRMZW5ndGggRXhjZXB0aW9uIG5vdCBjYXVnaHQiKTsKKyAgICAgIH0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIGxvZy5lcnJvcigiVmVyaWZpY2F0aW9uIGNyYXNoZWQgZm9yICIgKyBmaWxlbmFtZSk7CisgICAgICAgICB0aHJvdyBleDsKKyAgICAgIH0gY2F0Y2ggKFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgaWYgKGV4LmdldE1zZ0lEKCkuZXF1YWxzKCJhbGdvcml0aG1zLkhNQUNPdXRwdXRMZW5ndGhNaW4iKSkgeworICAgICAgICAgICAgIC8vIHN1Y2NlZWQKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgZmFpbChleC5nZXRNZXNzYWdlKCkpOworICAgICAgICAgfQorICAgICAgfQorICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0X3R3ZW50eV90aHJlZV9lbnZlbG9wZWRfZHNhCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHZvaWQgdGVzdF90d2VudHlfdGhyZWVfZW52ZWxvcGVkX2RzYSgpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBtZXJsaW5zRGlyMjMgKyAic2lnbmF0dXJlLWVudmVsb3BlZC1kc2EueG1sIjsKKyAgICAgIFJlc291cmNlUmVzb2x2ZXJTcGkgcmVzb2x2ZXIgPSBuZXcgT2ZmbGluZVJlc29sdmVyKCk7CisgICAgICBib29sZWFuIGZvbGxvd01hbmlmZXN0cyA9IGZhbHNlOworICAgICAgYm9vbGVhbiB2ZXJpZnkgPSBmYWxzZTsKKworICAgICAgdHJ5IHsKKyAgICAgICAgIHZlcmlmeSA9IHRoaXMudmVyaWZ5KGZpbGVuYW1lLCByZXNvbHZlciwgZm9sbG93TWFuaWZlc3RzKTsKKyAgICAgIH0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIGxvZy5lcnJvcigiVmVyaWZpY2F0aW9uIGNyYXNoZWQgZm9yICIgKyBmaWxlbmFtZSk7CisgICAgICAgICB0aHJvdyBleDsKKyAgICAgIH0KKworICAgICAgaWYgKCF2ZXJpZnkpIHsKKyAgICAgICAgIGxvZy5lcnJvcigiVmVyaWZpY2F0aW9uIGZhaWxlZCBmb3IgIiArIGZpbGVuYW1lKTsKKyAgICAgIH0KKworICAgICAgYXNzZXJ0VHJ1ZShmaWxlbmFtZSwgdmVyaWZ5KTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdF90d2VudHlfdGhyZWVfZW52ZWxvcGluZ19iNjRfZHNhCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHZvaWQgdGVzdF90d2VudHlfdGhyZWVfZW52ZWxvcGluZ19iNjRfZHNhKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZyBmaWxlbmFtZSA9IG1lcmxpbnNEaXIyMyArICJzaWduYXR1cmUtZW52ZWxvcGluZy1iNjQtZHNhLnhtbCI7CisgICAgICBSZXNvdXJjZVJlc29sdmVyU3BpIHJlc29sdmVyID0gbnVsbDsKKyAgICAgIGJvb2xlYW4gZm9sbG93TWFuaWZlc3RzID0gZmFsc2U7CisgICAgICBib29sZWFuIHZlcmlmeSA9IGZhbHNlOworCisgICAgICB0cnkgeworICAgICAgICAgdmVyaWZ5ID0gdGhpcy52ZXJpZnkoZmlsZW5hbWUsIHJlc29sdmVyLCBmb2xsb3dNYW5pZmVzdHMpOworICAgICAgfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgbG9nLmVycm9yKCJWZXJpZmljYXRpb24gY3Jhc2hlZCBmb3IgIiArIGZpbGVuYW1lKTsKKyAgICAgICAgIHRocm93IGV4OworICAgICAgfQorCisgICAgICBpZiAoIXZlcmlmeSkgeworICAgICAgICAgbG9nLmVycm9yKCJWZXJpZmljYXRpb24gZmFpbGVkIGZvciAiICsgZmlsZW5hbWUpOworICAgICAgfQorCisgICAgICBhc3NlcnRUcnVlKGZpbGVuYW1lLCB2ZXJpZnkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0X3R3ZW50eV90aHJlZV9lbnZlbG9waW5nX2RzYQorICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHRlc3RfdHdlbnR5X3RocmVlX2VudmVsb3BpbmdfZHNhKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZyBmaWxlbmFtZSA9IG1lcmxpbnNEaXIyMyArICJzaWduYXR1cmUtZW52ZWxvcGluZy1kc2EueG1sIjsKKyAgICAgIFJlc291cmNlUmVzb2x2ZXJTcGkgcmVzb2x2ZXIgPSBuZXcgT2ZmbGluZVJlc29sdmVyKCk7CisgICAgICBib29sZWFuIGZvbGxvd01hbmlmZXN0cyA9IGZhbHNlOworICAgICAgYm9vbGVhbiB2ZXJpZnkgPSBmYWxzZTsKKworICAgICAgdHJ5IHsKKyAgICAgICAgIHZlcmlmeSA9IHRoaXMudmVyaWZ5KGZpbGVuYW1lLCByZXNvbHZlciwgZm9sbG93TWFuaWZlc3RzKTsKKyAgICAgIH0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIGxvZy5lcnJvcigiVmVyaWZpY2F0aW9uIGNyYXNoZWQgZm9yICIgKyBmaWxlbmFtZSk7CisgICAgICAgICB0aHJvdyBleDsKKyAgICAgIH0KKworICAgICAgaWYgKCF2ZXJpZnkpIHsKKyAgICAgICAgIGxvZy5lcnJvcigiVmVyaWZpY2F0aW9uIGZhaWxlZCBmb3IgIiArIGZpbGVuYW1lKTsKKyAgICAgIH0KKworICAgICAgYXNzZXJ0VHJ1ZShmaWxlbmFtZSwgdmVyaWZ5KTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdF90d2VudHlfdGhyZWVfZW52ZWxvcGluZ19yc2EKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgdm9pZCB0ZXN0X3R3ZW50eV90aHJlZV9lbnZlbG9waW5nX3JzYSgpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBtZXJsaW5zRGlyMjMgKyAic2lnbmF0dXJlLWVudmVsb3BpbmctcnNhLnhtbCI7CisgICAgICBSZXNvdXJjZVJlc29sdmVyU3BpIHJlc29sdmVyID0gbmV3IE9mZmxpbmVSZXNvbHZlcigpOworICAgICAgYm9vbGVhbiBmb2xsb3dNYW5pZmVzdHMgPSBmYWxzZTsKKyAgICAgIGJvb2xlYW4gdmVyaWZ5ID0gZmFsc2U7CisKKyAgICAgIHRyeSB7CisgICAgICAgICB2ZXJpZnkgPSB0aGlzLnZlcmlmeShmaWxlbmFtZSwgcmVzb2x2ZXIsIGZvbGxvd01hbmlmZXN0cyk7CisgICAgICB9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBjcmFzaGVkIGZvciAiICsgZmlsZW5hbWUpOworICAgICAgICAgdGhyb3cgZXg7CisgICAgICB9CisKKyAgICAgIGlmICghdmVyaWZ5KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBmYWlsZWQgZm9yICIgKyBmaWxlbmFtZSk7CisgICAgICB9CisKKyAgICAgIGFzc2VydFRydWUoZmlsZW5hbWUsIHZlcmlmeSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHRlc3RfdHdlbnR5X3RocmVlX2V4dGVybmFsX2I2NF9kc2EKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgdm9pZCB0ZXN0X3R3ZW50eV90aHJlZV9leHRlcm5hbF9iNjRfZHNhKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZyBmaWxlbmFtZSA9IG1lcmxpbnNEaXIyMyArICJzaWduYXR1cmUtZXh0ZXJuYWwtYjY0LWRzYS54bWwiOworICAgICAgUmVzb3VyY2VSZXNvbHZlclNwaSByZXNvbHZlciA9IG5ldyBPZmZsaW5lUmVzb2x2ZXIoKTsKKyAgICAgIGJvb2xlYW4gZm9sbG93TWFuaWZlc3RzID0gZmFsc2U7CisgICAgICBib29sZWFuIHZlcmlmeSA9IGZhbHNlOworCisgICAgICB0cnkgeworICAgICAgICAgdmVyaWZ5ID0gdGhpcy52ZXJpZnkoZmlsZW5hbWUsIHJlc29sdmVyLCBmb2xsb3dNYW5pZmVzdHMpOworICAgICAgfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgbG9nLmVycm9yKCJWZXJpZmljYXRpb24gY3Jhc2hlZCBmb3IgIiArIGZpbGVuYW1lKTsKKyAgICAgICAgIHRocm93IGV4OworICAgICAgfQorCisgICAgICBpZiAoIXZlcmlmeSkgeworICAgICAgICAgbG9nLmVycm9yKCJWZXJpZmljYXRpb24gZmFpbGVkIGZvciAiICsgZmlsZW5hbWUpOworICAgICAgfQorCisgICAgICBhc3NlcnRUcnVlKGZpbGVuYW1lLCB2ZXJpZnkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0X3R3ZW50eV90aHJlZV9leHRlcm5hbF9kc2EKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgdm9pZCB0ZXN0X3R3ZW50eV90aHJlZV9leHRlcm5hbF9kc2EoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIGZpbGVuYW1lID0gbWVybGluc0RpcjIzICsgInNpZ25hdHVyZS1leHRlcm5hbC1kc2EueG1sIjsKKyAgICAgIFJlc291cmNlUmVzb2x2ZXJTcGkgcmVzb2x2ZXIgPSBuZXcgT2ZmbGluZVJlc29sdmVyKCk7CisgICAgICBib29sZWFuIGZvbGxvd01hbmlmZXN0cyA9IGZhbHNlOworICAgICAgYm9vbGVhbiB2ZXJpZnkgPSBmYWxzZTsKKworICAgICAgdHJ5IHsKKyAgICAgICAgIHZlcmlmeSA9IHRoaXMudmVyaWZ5KGZpbGVuYW1lLCByZXNvbHZlciwgZm9sbG93TWFuaWZlc3RzKTsKKyAgICAgIH0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIGxvZy5lcnJvcigiVmVyaWZpY2F0aW9uIGNyYXNoZWQgZm9yICIgKyBmaWxlbmFtZSk7CisgICAgICAgICB0aHJvdyBleDsKKyAgICAgIH0KKworICAgICAgaWYgKCF2ZXJpZnkpIHsKKyAgICAgICAgIGxvZy5lcnJvcigiVmVyaWZpY2F0aW9uIGZhaWxlZCBmb3IgIiArIGZpbGVuYW1lKTsKKyAgICAgIH0KKworICAgICAgYXNzZXJ0VHJ1ZShmaWxlbmFtZSwgdmVyaWZ5KTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdF90d2VudHlfdGhyZWVfZXh0ZXJuYWxfZHNhXzIKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgdm9pZCB0ZXN0X3R3ZW50eV90aHJlZV9leHRlcm5hbF9kc2FfMigpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgZmlsZW5hbWUgPQorICAgICAgICAgbWVybGluc0RpcjIzICsgInNpZ25hdHVyZS54bWwiOworICAgICAgUmVzb3VyY2VSZXNvbHZlclNwaSByZXNvbHZlciA9IG5ldyBPZmZsaW5lUmVzb2x2ZXIoKTsKKyAgICAgIGJvb2xlYW4gZm9sbG93TWFuaWZlc3RzID0gZmFsc2U7CisgICAgICBib29sZWFuIHZlcmlmeSA9IGZhbHNlOworCisgICAgICB0cnkgeworICAgICAgICAgdmVyaWZ5ID0gdGhpcy52ZXJpZnkoZmlsZW5hbWUsIHJlc29sdmVyLCBmb2xsb3dNYW5pZmVzdHMpOworICAgICAgfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgbG9nLmVycm9yKCJWZXJpZmljYXRpb24gY3Jhc2hlZCBmb3IgIiArIGZpbGVuYW1lKTsKKyAgICAgICAgIHRocm93IGV4OworICAgICAgfQorCisgICAgICBpZiAoIXZlcmlmeSkgeworICAgICAgICAgbG9nLmVycm9yKCJWZXJpZmljYXRpb24gZmFpbGVkIGZvciAiICsgZmlsZW5hbWUpOworICAgICAgfQorCisgICAgICBhc3NlcnRUcnVlKGZpbGVuYW1lLCB2ZXJpZnkpOworICAgfQorCisgICBzdGF0aWMgeworICAgCQorICAgCSAgU3RyaW5nIGJhc2VkaXIgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImJhc2VkaXIiKTsKKyAgIAkgIGlmKGJhc2VkaXIgIT0gbnVsbCAmJiAhIiIuZXF1YWxzKGJhc2VkaXIpKSB7CisgICAJCW1lcmxpbnNEaXIxNSA9IGJhc2VkaXIgKyAiLyIgKyBtZXJsaW5zRGlyMTU7CisgICAJCW1lcmxpbnNEaXIxNiA9IGJhc2VkaXIgKyAiLyIgKyBtZXJsaW5zRGlyMTY7CisgICAgICAgIG1lcmxpbnNEaXIyMyA9IGJhc2VkaXIgKyAiLyIgKyBtZXJsaW5zRGlyMjM7CisgICAJICB9CisgICAgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9pbnRlcm9wL0lBSUtUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvaW50ZXJvcC9JQUlLVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiNmZlMTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvaW50ZXJvcC9JQUlLVGVzdC5qYXZhCkBAIC0wLDAgKzEsNDMzIEBACisvKgorICogQ29weXJpZ2h0IDE5OTktMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QuaW50ZXJvcDsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LnV0aWxzLnJlc29sdmVyLk9mZmxpbmVSZXNvbHZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyLlJlc291cmNlUmVzb2x2ZXJTcGk7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMucmVzb2x2ZXIuaW1wbGVtZW50YXRpb25zLlJlc29sdmVyQW5vbnltb3VzOworCisvKioKKyAqIFRoaXMgdGVzdCBpcyB0byBlbnN1cmUgaW50ZXJvcGVyYWJpbGl0eSB3aXRoIHRoZSBleGFtcGxlcyBwcm92aWRlZCBieSB0aGUgSUFJSworICogWE1MIFNpZ25hdHVyZSBpbXBsZW1lbnRhdGlvbi4gVGhhbmtzIHRvIEdyZWdvciBLYXJsaW5nZXIgd2hvIHByb3ZpZGVkIHRoZXNlCisgKiB0ZXN0IHZlY3RvcnMuIFRoZXkgYXJlIGxvY2F0ZWQgaW4gdGhlIGRpcmVjdG9yeSA8Q09ERT5kYXRhL2F0L2lhaWsvaXhzaWwvPC9DT0RFPi4KKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKiBAc2VlIDxBIEhSRUY9Imh0dHA6Ly9qY2V3d3cuaWFpay5hdC9wcm9kdWN0cy9peHNpbC9pbmRleC5waHAiPlRoZSBJQUlLIElYU0lMIFdlYnNpdGU8L0E+CisgKi8KK3B1YmxpYyBjbGFzcyBJQUlLVGVzdCBleHRlbmRzIEludGVyb3BUZXN0IHsKKworICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKAorICAgICAgICAgICAgICAgICAgICBJQUlLVGVzdC5jbGFzcy5nZXROYW1lKCkpOworCisgICAvKiogRmllbGQgZ3JlZ29yc0RpciAqLworICAgc3RhdGljIFN0cmluZyBncmVnb3JzRGlyID0gImRhdGEvYXQvaWFpay9peHNpbC8iOworCisgICAvKioKKyAgICAqIE1ldGhvZCBzdWl0ZQorICAgICoKKyAgICAqCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpIHsKKworICAgICAgVGVzdFN1aXRlIHN1aXRlID0gbmV3IFRlc3RTdWl0ZShJQUlLVGVzdC5jbGFzcyk7CisKKyAgICAgIHJldHVybiBzdWl0ZTsKKyAgIH0KKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBJQUlLVGVzdAorICAgICoKKyAgICAqIEBwYXJhbSBOYW1lXworICAgICovCisgICBwdWJsaWMgSUFJS1Rlc3QoU3RyaW5nIE5hbWVfKSB7CisgICAgICBzdXBlcihOYW1lXyk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIG1haW4KKyAgICAqCisgICAgKiBAcGFyYW0gYXJncworICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisKKyAgICAgIFN0cmluZ1tdIHRlc3RDYXNlTmFtZSA9IHsgIi1ub2xvYWRpbmciLCBJQUlLVGVzdC5jbGFzcy5nZXROYW1lKCkgfTsKKworICAgICAganVuaXQudGV4dHVpLlRlc3RSdW5uZXIubWFpbih0ZXN0Q2FzZU5hbWUpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0X3NpZ25hdHVyZUFsZ29yaXRobXNfc2lnbmF0dXJlc19oTUFDU2hvcnRTaWduYXR1cmUKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZUFsZ29yaXRobXNfc2lnbmF0dXJlc19oTUFDU2hvcnRTaWduYXR1cmUoKQorICAgICAgICAgICB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIGZpbGVuYW1lID0KKyAgICAgICAgIGdyZWdvcnNEaXIgKyAic2lnbmF0dXJlQWxnb3JpdGhtcy9zaWduYXR1cmVzL2hNQUNTaG9ydFNpZ25hdHVyZS54bWwiOworICAgICAgUmVzb3VyY2VSZXNvbHZlclNwaSByZXNvbHZlciA9IG5ldyBPZmZsaW5lUmVzb2x2ZXIoKTsKKyAgICAgIGJvb2xlYW4gZm9sbG93TWFuaWZlc3RzID0gZmFsc2U7CisgICAgICBieXRlW10gaG1hY0tleSA9ICJzZWNyZXQiLmdldEJ5dGVzKCJBU0NJSSIpOworICAgICAgYm9vbGVhbiB2ZXJpZnkgPSBmYWxzZTsKKworICAgICAgdHJ5IHsKKyAgICAgICAgIHZlcmlmeSA9IHRoaXMudmVyaWZ5SE1BQyhmaWxlbmFtZSwgcmVzb2x2ZXIsIGZvbGxvd01hbmlmZXN0cywgaG1hY0tleSk7CisgICAgICAgICBmYWlsKCJITUFDT3V0cHV0TGVuZ3RoIEV4Y2VwdGlvbiBub3QgY2F1Z2h0Iik7CisgICAgICB9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBjcmFzaGVkIGZvciAiICsgZmlsZW5hbWUpOworICAgICAgICAgdGhyb3cgZXg7CisgICAgICB9IGNhdGNoIChYTUxTaWduYXR1cmVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIGlmIChleC5nZXRNc2dJRCgpLmVxdWFscygiYWxnb3JpdGhtcy5ITUFDT3V0cHV0TGVuZ3RoTWluIikpIHsKKyAgICAgICAgICAgICAvLyBzdWNjZWVkCisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIGZhaWwoZXguZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgIH0KKyAgICAgIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdF9zaWduYXR1cmVBbGdvcml0aG1zX3NpZ25hdHVyZXNfaE1BQ1NpZ25hdHVyZQorICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHRlc3Rfc2lnbmF0dXJlQWxnb3JpdGhtc19zaWduYXR1cmVzX2hNQUNTaWduYXR1cmUoKQorICAgICAgICAgICB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIGZpbGVuYW1lID0gZ3JlZ29yc0RpcgorICAgICAgICAgICAgICAgICAgICAgICAgKyAic2lnbmF0dXJlQWxnb3JpdGhtcy9zaWduYXR1cmVzL2hNQUNTaWduYXR1cmUueG1sIjsKKyAgICAgIFJlc291cmNlUmVzb2x2ZXJTcGkgcmVzb2x2ZXIgPSBuZXcgT2ZmbGluZVJlc29sdmVyKCk7CisgICAgICBib29sZWFuIGZvbGxvd01hbmlmZXN0cyA9IGZhbHNlOworICAgICAgYnl0ZVtdIGhtYWNLZXkgPSAic2VjcmV0Ii5nZXRCeXRlcygiQVNDSUkiKTsKKyAgICAgIGJvb2xlYW4gdmVyaWZ5ID0gZmFsc2U7CisKKyAgICAgIHRyeSB7CisgICAgICAgICB2ZXJpZnkgPSB0aGlzLnZlcmlmeUhNQUMoZmlsZW5hbWUsIHJlc29sdmVyLCBmb2xsb3dNYW5pZmVzdHMsIGhtYWNLZXkpOworICAgICAgfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgbG9nLmVycm9yKCJWZXJpZmljYXRpb24gY3Jhc2hlZCBmb3IgIiArIGZpbGVuYW1lKTsKKworICAgICAgICAgdGhyb3cgZXg7CisgICAgICB9CisKKyAgICAgIGlmICghdmVyaWZ5KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBmYWlsZWQgZm9yICIgKyBmaWxlbmFtZSk7CisgICAgICB9CisKKyAgICAgIGFzc2VydFRydWUoZmlsZW5hbWUsIHZlcmlmeSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHRlc3RfY29yZUZlYXR1cmVzX3NpZ25hdHVyZXNfbWFuaWZlc3RTaWduYXR1cmUKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgdm9pZCB0ZXN0X2NvcmVGZWF0dXJlc19zaWduYXR1cmVzX21hbmlmZXN0U2lnbmF0dXJlX2NvcmUoKQorICAgICAgICAgICB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIGZpbGVuYW1lID0gZ3JlZ29yc0RpcgorICAgICAgICAgICAgICAgICAgICAgICAgKyAiY29yZUZlYXR1cmVzL3NpZ25hdHVyZXMvbWFuaWZlc3RTaWduYXR1cmUueG1sIjsKKyAgICAgIFJlc291cmNlUmVzb2x2ZXJTcGkgcmVzb2x2ZXIgPSBudWxsOworICAgICAgYm9vbGVhbiBmb2xsb3dNYW5pZmVzdHMgPSBmYWxzZTsKKyAgICAgIGJvb2xlYW4gdmVyaWZ5ID0gZmFsc2U7CisKKyAgICAgIHRyeSB7CisgICAgICAgICB2ZXJpZnkgPSB0aGlzLnZlcmlmeShmaWxlbmFtZSwgcmVzb2x2ZXIsIGZvbGxvd01hbmlmZXN0cyk7CisgICAgICB9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICBsb2cuZXJyb3IoIkNvcmUgdmFsaWRhdGlvbiBjcmFzaGVkIGZvciAiICsgZmlsZW5hbWUpOworCisgICAgICAgICB0aHJvdyBleDsKKyAgICAgIH0KKworICAgICAgaWYgKCF2ZXJpZnkpIHsKKyAgICAgICAgIGxvZy5lcnJvcigiQ29yZSB2YWxpZGF0aW9uIGZhaWxlZCBmb3IgIiArIGZpbGVuYW1lKTsKKyAgICAgIH0KKworICAgICAgYXNzZXJ0VHJ1ZSgiQ29yZSB2YWxpZGF0aW9uIGZhaWxlZCBmb3IgIiArIGZpbGVuYW1lLCB2ZXJpZnkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0X2NvcmVGZWF0dXJlc19zaWduYXR1cmVzX21hbmlmZXN0U2lnbmF0dXJlX21hbmlmZXN0CisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHZvaWQgdGVzdF9jb3JlRmVhdHVyZXNfc2lnbmF0dXJlc19tYW5pZmVzdFNpZ25hdHVyZV9tYW5pZmVzdCgpCisgICAgICAgICAgIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBncmVnb3JzRGlyCisgICAgICAgICAgICAgICAgICAgICAgICArICJjb3JlRmVhdHVyZXMvc2lnbmF0dXJlcy9tYW5pZmVzdFNpZ25hdHVyZS54bWwiOworICAgICAgUmVzb3VyY2VSZXNvbHZlclNwaSByZXNvbHZlciA9IG51bGw7CisgICAgICBib29sZWFuIGZvbGxvd01hbmlmZXN0cyA9IHRydWU7CisgICAgICBib29sZWFuIHZlcmlmeSA9IGZhbHNlOworCisgICAgICB0cnkgeworICAgICAgICAgdmVyaWZ5ID0gdGhpcy52ZXJpZnkoZmlsZW5hbWUsIHJlc29sdmVyLCBmb2xsb3dNYW5pZmVzdHMpOworICAgICAgfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgbG9nLmVycm9yKCJWZXJpZmljYXRpb24gY3Jhc2hlZCBmb3IgIiArIGZpbGVuYW1lKTsKKworICAgICAgICAgdGhyb3cgZXg7CisgICAgICB9CisKKyAgICAgIGlmICghdmVyaWZ5KSB7CisgICAgICAgICBsb2cuZXJyb3IoIkZvbGxvd2luZyB0aGUgZHM6TWFuaWZlc3QgZmFpbGVkIGZvciAiICsgZmlsZW5hbWUpOworICAgICAgfQorCisgICAgICBhc3NlcnRUcnVlKCJGb2xsb3dpbmcgdGhlIGRzOk1hbmlmZXN0IGZhaWxlZCBmb3IgIiArIGZpbGVuYW1lLCB2ZXJpZnkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0X2NvcmVGZWF0dXJlc19zaWduYXR1cmVzX3NpZ25hdHVyZVR5cGVzU2lnbmF0dXJlCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHZvaWQgdGVzdF9jb3JlRmVhdHVyZXNfc2lnbmF0dXJlc19zaWduYXR1cmVUeXBlc1NpZ25hdHVyZSgpCisgICAgICAgICAgIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBncmVnb3JzRGlyCisgICAgICAgICAgICAgICAgICAgICAgICArICJjb3JlRmVhdHVyZXMvc2lnbmF0dXJlcy9zaWduYXR1cmVUeXBlc1NpZ25hdHVyZS54bWwiOworICAgICAgUmVzb3VyY2VSZXNvbHZlclNwaSByZXNvbHZlciA9IG5ldyBPZmZsaW5lUmVzb2x2ZXIoKTsKKyAgICAgIGJvb2xlYW4gZm9sbG93TWFuaWZlc3RzID0gZmFsc2U7CisgICAgICBib29sZWFuIHZlcmlmeSA9IGZhbHNlOworCisgICAgICB0cnkgeworICAgICAgICAgdmVyaWZ5ID0gdGhpcy52ZXJpZnkoZmlsZW5hbWUsIHJlc29sdmVyLCBmb2xsb3dNYW5pZmVzdHMpOworICAgICAgfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgbG9nLmVycm9yKCJWZXJpZmljYXRpb24gY3Jhc2hlZCBmb3IgIiArIGZpbGVuYW1lKTsKKworICAgICAgICAgdGhyb3cgZXg7CisgICAgICB9CisKKyAgICAgIGlmICghdmVyaWZ5KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBmYWlsZWQgZm9yICIgKyBmaWxlbmFtZSk7CisgICAgICB9CisKKyAgICAgIGFzc2VydFRydWUoIlZlcmlmaWNhdGlvbiBmYWlsZWQgZm9yICIgKyBmaWxlbmFtZSwgdmVyaWZ5KTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdF9jb3JlRmVhdHVyZXNfc2lnbmF0dXJlc19hbm9ueW1vdXNSZWZlcmVuY2VTaWduYXR1cmUKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgdm9pZCB0ZXN0X2NvcmVGZWF0dXJlc19zaWduYXR1cmVzX2Fub255bW91c1JlZmVyZW5jZVNpZ25hdHVyZSgpCisgICAgICAgICAgIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgZmlsZW5hbWUgPQorICAgICAgICAgZ3JlZ29yc0RpciArICJjb3JlRmVhdHVyZXMvc2lnbmF0dXJlcy9hbm9ueW1vdXNSZWZlcmVuY2VTaWduYXR1cmUueG1sIjsKKyAgICAgIFN0cmluZyBhbm9ueW1vdXNSZWYgPQorICAgICAgICAgZ3JlZ29yc0RpciArICJjb3JlRmVhdHVyZXMvc2FtcGxlcy9hbm9ueW1vdXNSZWZlcmVuY2VDb250ZW50LnhtbCI7CisgICAgICBSZXNvdXJjZVJlc29sdmVyU3BpIHJlc29sdmVyID0gbmV3IFJlc29sdmVyQW5vbnltb3VzKGFub255bW91c1JlZik7CisgICAgICBib29sZWFuIGZvbGxvd01hbmlmZXN0cyA9IGZhbHNlOworICAgICAgYm9vbGVhbiB2ZXJpZnkgPSBmYWxzZTsKKworICAgICAgdHJ5IHsKKyAgICAgICAgIHZlcmlmeSA9IHRoaXMudmVyaWZ5KGZpbGVuYW1lLCByZXNvbHZlciwgZm9sbG93TWFuaWZlc3RzKTsKKyAgICAgIH0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIGxvZy5lcnJvcigiVmVyaWZpY2F0aW9uIGNyYXNoZWQgZm9yICIgKyBmaWxlbmFtZSk7CisKKyAgICAgICAgIHRocm93IGV4OworICAgICAgfQorCisgICAgICBpZiAoIXZlcmlmeSkgeworICAgICAgICAgbG9nLmVycm9yKCJWZXJpZmljYXRpb24gZmFpbGVkIGZvciAiICsgZmlsZW5hbWUpOworICAgICAgfQorCisgICAgICBhc3NlcnRUcnVlKGZpbGVuYW1lLCB2ZXJpZnkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0X3NpZ25hdHVyZUFsZ29yaXRobXNfc2lnbmF0dXJlc19kU0FTaWduYXR1cmUKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZUFsZ29yaXRobXNfc2lnbmF0dXJlc19kU0FTaWduYXR1cmUoKQorICAgICAgICAgICB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIGZpbGVuYW1lID0gZ3JlZ29yc0RpcgorICAgICAgICAgICAgICAgICAgICAgICAgKyAic2lnbmF0dXJlQWxnb3JpdGhtcy9zaWduYXR1cmVzL2RTQVNpZ25hdHVyZS54bWwiOworICAgICAgUmVzb3VyY2VSZXNvbHZlclNwaSByZXNvbHZlciA9IG51bGw7CisgICAgICBib29sZWFuIGZvbGxvd01hbmlmZXN0cyA9IGZhbHNlOworICAgICAgYm9vbGVhbiB2ZXJpZnkgPSBmYWxzZTsKKworICAgICAgdHJ5IHsKKyAgICAgICAgIHZlcmlmeSA9IHRoaXMudmVyaWZ5KGZpbGVuYW1lLCByZXNvbHZlciwgZm9sbG93TWFuaWZlc3RzKTsKKyAgICAgIH0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIGxvZy5lcnJvcigiVmVyaWZpY2F0aW9uIGNyYXNoZWQgZm9yICIgKyBmaWxlbmFtZSk7CisKKyAgICAgICAgIHRocm93IGV4OworICAgICAgfQorCisgICAgICBpZiAoIXZlcmlmeSkgeworICAgICAgICAgbG9nLmVycm9yKCJWZXJpZmljYXRpb24gZmFpbGVkIGZvciAiICsgZmlsZW5hbWUpOworICAgICAgfQorCisgICAgICBhc3NlcnRUcnVlKGZpbGVuYW1lLCB2ZXJpZnkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0X3NpZ25hdHVyZUFsZ29yaXRobXNfc2lnbmF0dXJlc19yU0FTaWduYXR1cmUKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZUFsZ29yaXRobXNfc2lnbmF0dXJlc19yU0FTaWduYXR1cmUoKQorICAgICAgICAgICB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIGZpbGVuYW1lID0gZ3JlZ29yc0RpcgorICAgICAgICAgICAgICAgICAgICAgICAgKyAic2lnbmF0dXJlQWxnb3JpdGhtcy9zaWduYXR1cmVzL3JTQVNpZ25hdHVyZS54bWwiOworICAgICAgUmVzb3VyY2VSZXNvbHZlclNwaSByZXNvbHZlciA9IG51bGw7CisgICAgICBib29sZWFuIGZvbGxvd01hbmlmZXN0cyA9IGZhbHNlOworICAgICAgYm9vbGVhbiB2ZXJpZnkgPSBmYWxzZTsKKworICAgICAgdHJ5IHsKKyAgICAgICAgIHZlcmlmeSA9IHRoaXMudmVyaWZ5KGZpbGVuYW1lLCByZXNvbHZlciwgZm9sbG93TWFuaWZlc3RzKTsKKyAgICAgIH0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIGxvZy5lcnJvcigiVmVyaWZpY2F0aW9uIGNyYXNoZWQgZm9yICIgKyBmaWxlbmFtZSk7CisKKyAgICAgICAgIHRocm93IGV4OworICAgICAgfQorCisgICAgICBpZiAoIXZlcmlmeSkgeworICAgICAgICAgbG9nLmVycm9yKCJWZXJpZmljYXRpb24gZmFpbGVkIGZvciAiICsgZmlsZW5hbWUpOworICAgICAgfQorCisgICAgICBhc3NlcnRUcnVlKGZpbGVuYW1lLCB2ZXJpZnkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0X3RyYW5zZm9ybXNfc2lnbmF0dXJlc19iYXNlNjREZWNvZGVTaWduYXR1cmUKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgdm9pZCB0ZXN0X3RyYW5zZm9ybXNfc2lnbmF0dXJlc19iYXNlNjREZWNvZGVTaWduYXR1cmUoKQorICAgICAgICAgICB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIGZpbGVuYW1lID0gZ3JlZ29yc0RpcgorICAgICAgICAgICAgICAgICAgICAgICAgKyAidHJhbnNmb3Jtcy9zaWduYXR1cmVzL2Jhc2U2NERlY29kZVNpZ25hdHVyZS54bWwiOworICAgICAgUmVzb3VyY2VSZXNvbHZlclNwaSByZXNvbHZlciA9IG51bGw7CisgICAgICBib29sZWFuIGZvbGxvd01hbmlmZXN0cyA9IGZhbHNlOworICAgICAgYm9vbGVhbiB2ZXJpZnkgPSBmYWxzZTsKKworICAgICAgdHJ5IHsKKyAgICAgICAgIHZlcmlmeSA9IHRoaXMudmVyaWZ5KGZpbGVuYW1lLCByZXNvbHZlciwgZm9sbG93TWFuaWZlc3RzKTsKKyAgICAgIH0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIGxvZy5lcnJvcigiVmVyaWZpY2F0aW9uIGNyYXNoZWQgZm9yICIgKyBmaWxlbmFtZSk7CisKKyAgICAgICAgIHRocm93IGV4OworICAgICAgfQorCisgICAgICBpZiAoIXZlcmlmeSkgeworICAgICAgICAgbG9nLmVycm9yKCJWZXJpZmljYXRpb24gZmFpbGVkIGZvciAiICsgZmlsZW5hbWUpOworICAgICAgfQorCisgICAgICBhc3NlcnRUcnVlKGZpbGVuYW1lLCB2ZXJpZnkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0X3RyYW5zZm9ybXNfc2lnbmF0dXJlc19jMTRuU2lnbmF0dXJlCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHZvaWQgdGVzdF90cmFuc2Zvcm1zX3NpZ25hdHVyZXNfYzE0blNpZ25hdHVyZSgpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBncmVnb3JzRGlyICsgInRyYW5zZm9ybXMvc2lnbmF0dXJlcy9jMTRuU2lnbmF0dXJlLnhtbCI7CisgICAgICBSZXNvdXJjZVJlc29sdmVyU3BpIHJlc29sdmVyID0gbnVsbDsKKyAgICAgIGJvb2xlYW4gZm9sbG93TWFuaWZlc3RzID0gZmFsc2U7CisgICAgICBib29sZWFuIHZlcmlmeSA9IGZhbHNlOworCisgICAgICB0cnkgeworICAgICAgICAgdmVyaWZ5ID0gdGhpcy52ZXJpZnkoZmlsZW5hbWUsIHJlc29sdmVyLCBmb2xsb3dNYW5pZmVzdHMpOworICAgICAgfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgbG9nLmVycm9yKCJWZXJpZmljYXRpb24gY3Jhc2hlZCBmb3IgIiArIGZpbGVuYW1lKTsKKworICAgICAgICAgdGhyb3cgZXg7CisgICAgICB9CisKKyAgICAgIGlmICghdmVyaWZ5KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBmYWlsZWQgZm9yICIgKyBmaWxlbmFtZSk7CisgICAgICB9CisKKyAgICAgIGFzc2VydFRydWUoZmlsZW5hbWUsIHZlcmlmeSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHRlc3RfdHJhbnNmb3Jtc19zaWduYXR1cmVzX2VudmVsb3BlZFNpZ25hdHVyZVNpZ25hdHVyZQorICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHRlc3RfdHJhbnNmb3Jtc19zaWduYXR1cmVzX2VudmVsb3BlZFNpZ25hdHVyZVNpZ25hdHVyZSgpCisgICAgICAgICAgIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgZmlsZW5hbWUgPQorICAgICAgICAgZ3JlZ29yc0RpciArICJ0cmFuc2Zvcm1zL3NpZ25hdHVyZXMvZW52ZWxvcGVkU2lnbmF0dXJlU2lnbmF0dXJlLnhtbCI7CisgICAgICBSZXNvdXJjZVJlc29sdmVyU3BpIHJlc29sdmVyID0gbnVsbDsKKyAgICAgIGJvb2xlYW4gZm9sbG93TWFuaWZlc3RzID0gZmFsc2U7CisgICAgICBib29sZWFuIHZlcmlmeSA9IGZhbHNlOworCisgICAgICB0cnkgeworICAgICAgICAgdmVyaWZ5ID0gdGhpcy52ZXJpZnkoZmlsZW5hbWUsIHJlc29sdmVyLCBmb2xsb3dNYW5pZmVzdHMpOworICAgICAgfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgbG9nLmVycm9yKCJWZXJpZmljYXRpb24gY3Jhc2hlZCBmb3IgIiArIGZpbGVuYW1lKTsKKworICAgICAgICAgdGhyb3cgZXg7CisgICAgICB9CisKKyAgICAgIGlmICghdmVyaWZ5KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBmYWlsZWQgZm9yICIgKyBmaWxlbmFtZSk7CisgICAgICB9CisKKyAgICAgIGFzc2VydFRydWUoZmlsZW5hbWUsIHZlcmlmeSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHRlc3RfdHJhbnNmb3Jtc19zaWduYXR1cmVzX3hQYXRoU2lnbmF0dXJlCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHZvaWQgdGVzdF90cmFuc2Zvcm1zX3NpZ25hdHVyZXNfeFBhdGhTaWduYXR1cmUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIGZpbGVuYW1lID0gZ3JlZ29yc0RpciArICJ0cmFuc2Zvcm1zL3NpZ25hdHVyZXMveFBhdGhTaWduYXR1cmUueG1sIjsKKyAgICAgIFJlc291cmNlUmVzb2x2ZXJTcGkgcmVzb2x2ZXIgPSBudWxsOworICAgICAgYm9vbGVhbiBmb2xsb3dNYW5pZmVzdHMgPSBmYWxzZTsKKyAgICAgIGJvb2xlYW4gdmVyaWZ5ID0gZmFsc2U7CisKKyAgICAgIHRyeSB7CisgICAgICAgICB2ZXJpZnkgPSB0aGlzLnZlcmlmeShmaWxlbmFtZSwgcmVzb2x2ZXIsIGZvbGxvd01hbmlmZXN0cyk7CisgICAgICB9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBjcmFzaGVkIGZvciAiICsgZmlsZW5hbWUpOworCisgICAgICAgICB0aHJvdyBleDsKKyAgICAgIH0KKworICAgICAgaWYgKCF2ZXJpZnkpIHsKKyAgICAgICAgIGxvZy5lcnJvcigiVmVyaWZpY2F0aW9uIGZhaWxlZCBmb3IgIiArIGZpbGVuYW1lKTsKKyAgICAgIH0KKworICAgICAgYXNzZXJ0VHJ1ZShmaWxlbmFtZSwgdmVyaWZ5KTsKKyAgIH0KKworICAgc3RhdGljIHsKKyAgIAlTdHJpbmcgYmFzZWRpciA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpOworICAgCWlmKGJhc2VkaXIgIT0gbnVsbCAmJiAhIiIuZXF1YWxzKGJhc2VkaXIpKSB7CisgICAJCWdyZWdvcnNEaXIgPSBiYXNlZGlyICsgIi8iICsgZ3JlZ29yc0RpcjsKKyAgIAl9CisgICAgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9pbnRlcm9wL0lCTVRlc3QuamF2YSBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9pbnRlcm9wL0lCTVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGQ5MzY4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2ludGVyb3AvSUJNVGVzdC5qYXZhCkBAIC0wLDAgKzEsMzEzIEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LmludGVyb3A7CisKKworCitpbXBvcnQgamF2YS5pby5GaWxlOworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QudXRpbHMucmVzb2x2ZXIuT2ZmbGluZVJlc29sdmVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkphdmFVdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5yZXNvbHZlci5SZXNvdXJjZVJlc29sdmVyU3BpOworCisKKy8qKgorICogVGhpcyB0ZXN0IGlzIHRvIGVuc3VyZSBpbnRlcm9wZXJhYmlsaXR5IHdpdGggdGhlIGV4YW1wbGVzIHByb3ZpZGVkIGJ5IHRoZSBJQk0KKyAqIFhNTCBTZWN1cml0eSBTdWl0ZS4gVGhleSBoYXZlIHRvIGJlIGxvY2F0ZWQgaW4gdGhlIGRpcmVjdG9yeQorICogPENPREU+ZGF0YS9jb20vaWJtL3hzczRqLTIwMDMwMTI3LzwvQ09ERT4uCisgKiA8QlIgLz4KKyAqIEZvciBsaWNlbnNlIGlzc3VlcywgdGhlIHZlY3RvcnMgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgZGlzdGlidXRpb24uIFNlZQorICogPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vaW50ZXJvcC5odG1sIj50aGUgaW50ZXJvcCBwYWdlPC9BPiBmb3IgbW9yZSBvbiB0aGlzLgorICoKKyAqIEBhdXRob3IgJEF1dGhvciQKKyAqIEBzZWUgPEEgSFJFRj0iaHR0cDovL3d3dy5hbHBoYXdvcmtzLmlibS5jb20vdGVjaC94bWxzZWN1cml0eXN1aXRlIj5UaGUgSUJNIGFscGhhV29ya3MgV2Vic2l0ZTwvQT4KKyAqLworcHVibGljIGNsYXNzIElCTVRlc3QgZXh0ZW5kcyBJbnRlcm9wVGVzdCB7CisKKyAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZyhJQk1UZXN0LmNsYXNzLmdldE5hbWUoKSk7CisKKyAgIC8qKiBGaWVsZCBrZW50c0RpciAgICAgICAgICAgKi8KKyAgIHN0YXRpYyBmaW5hbCBTdHJpbmcga2VudHNEaXIgPSAiZGF0YS9jb20vaWJtL3hzczRqLTIwMDMwMTI3LyI7CisKKyAgIC8qKgorICAgICogTWV0aG9kIHN1aXRlCisgICAgKgorICAgICoKKyAgICAqLworICAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkgeworCisgICAgICBUZXN0U3VpdGUgc3VpdGUgPSBuZXcgVGVzdFN1aXRlKElCTVRlc3QuY2xhc3MpOworCisgICAgICByZXR1cm4gc3VpdGU7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgSUJNVGVzdAorICAgICoKKyAgICAqIEBwYXJhbSBOYW1lXworICAgICovCisgICBwdWJsaWMgSUJNVGVzdChTdHJpbmcgTmFtZV8pIHsKKyAgICAgIHN1cGVyKE5hbWVfKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgbWFpbgorICAgICoKKyAgICAqIEBwYXJhbSBhcmdzCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKworICAgICAgU3RyaW5nW10gdGVzdENhc2VOYW1lID0geyAiLW5vbG9hZGluZyIsIElCTVRlc3QuY2xhc3MuZ2V0TmFtZSgpIH07CisKKyAgICAgIGp1bml0LnRleHR1aS5UZXN0UnVubmVyLm1haW4odGVzdENhc2VOYW1lKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdF9lbnZlbG9waW5nX2htYWMKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgdm9pZCB0ZXN0X2VudmVsb3BpbmdfaG1hYygpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBrZW50c0RpciArICJlbnZlbG9waW5nLWhtYWMuc2lnIjsKKyAgICAgIFJlc291cmNlUmVzb2x2ZXJTcGkgcmVzb2x2ZXIgPSBuZXcgT2ZmbGluZVJlc29sdmVyKCk7CisgICAgICBib29sZWFuIGZvbGxvd01hbmlmZXN0cyA9IGZhbHNlOworICAgICAgYnl0ZVtdIGhtYWNLZXkgPSBKYXZhVXRpbHMuZ2V0Qnl0ZXNGcm9tRmlsZShrZW50c0RpciArICJlbnZlbG9waW5nLWhtYWMua2V5Iik7CisgICAgICBib29sZWFuIHZlcmlmeSA9IGZhbHNlOworCisgICAgICB0cnkgeworICAgICAgICAgdmVyaWZ5ID0gdGhpcy52ZXJpZnlITUFDKGZpbGVuYW1lLCByZXNvbHZlciwgZm9sbG93TWFuaWZlc3RzLCBobWFjS2V5KTsKKyAgICAgIH0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIGxvZy5lcnJvcigiVmVyaWZpY2F0aW9uIGNyYXNoZWQgZm9yICIgKyBmaWxlbmFtZSk7CisgICAgICAgICB0aHJvdyBleDsKKyAgICAgIH0KKworICAgICAgaWYgKCF2ZXJpZnkpIHsKKyAgICAgICAgIGxvZy5lcnJvcigiVmVyaWZpY2F0aW9uIGZhaWxlZCBmb3IgIiArIGZpbGVuYW1lKTsKKyAgICAgIH0KKworICAgICAgYXNzZXJ0VHJ1ZShmaWxlbmFtZSwgdmVyaWZ5KTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdF9kZXRhY2hlZF9kc2EKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgdm9pZCB0ZXN0X2RldGFjaGVkX2RzYSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgU3RyaW5nIGZpbGVuYW1lID0ga2VudHNEaXIgKyAiZGV0YWNoZWQtZHNhLnNpZyI7CisgICAgICBSZXNvdXJjZVJlc29sdmVyU3BpIHJlc29sdmVyID0gbmV3IE9mZmxpbmVSZXNvbHZlcigpOworICAgICAgYm9vbGVhbiBmb2xsb3dNYW5pZmVzdHMgPSBmYWxzZTsKKyAgICAgIGJvb2xlYW4gdmVyaWZ5ID0gZmFsc2U7CisKKyAgICAgIHRyeSB7CisgICAgICAgICB2ZXJpZnkgPSB0aGlzLnZlcmlmeShmaWxlbmFtZSwgcmVzb2x2ZXIsIGZvbGxvd01hbmlmZXN0cyk7CisgICAgICB9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBjcmFzaGVkIGZvciAiICsgZmlsZW5hbWUpOworICAgICAgICAgdGhyb3cgZXg7CisgICAgICB9CisKKyAgICAgIGlmICghdmVyaWZ5KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBmYWlsZWQgZm9yICIgKyBmaWxlbmFtZSk7CisgICAgICB9CisKKyAgICAgIGFzc2VydFRydWUoZmlsZW5hbWUsIHZlcmlmeSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHRlc3RfZGV0YWNoZWRfcnNhCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHZvaWQgdGVzdF9kZXRhY2hlZF9yc2EoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgIFN0cmluZyBmaWxlbmFtZSA9IGtlbnRzRGlyICsgImRldGFjaGVkLXJzYS5zaWciOworICAgICAgUmVzb3VyY2VSZXNvbHZlclNwaSByZXNvbHZlciA9IG5ldyBPZmZsaW5lUmVzb2x2ZXIoKTsKKyAgICAgIGJvb2xlYW4gZm9sbG93TWFuaWZlc3RzID0gZmFsc2U7CisgICAgICBib29sZWFuIHZlcmlmeSA9IGZhbHNlOworCisgICAgICB0cnkgeworICAgICAgICAgdmVyaWZ5ID0gdGhpcy52ZXJpZnkoZmlsZW5hbWUsIHJlc29sdmVyLCBmb2xsb3dNYW5pZmVzdHMpOworICAgICAgfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgbG9nLmVycm9yKCJWZXJpZmljYXRpb24gY3Jhc2hlZCBmb3IgIiArIGZpbGVuYW1lKTsKKyAgICAgICAgIHRocm93IGV4OworICAgICAgfQorCisgICAgICBpZiAoIXZlcmlmeSkgeworICAgICAgICAgbG9nLmVycm9yKCJWZXJpZmljYXRpb24gZmFpbGVkIGZvciAiICsgZmlsZW5hbWUpOworICAgICAgfQorCisgICAgICBhc3NlcnRUcnVlKGZpbGVuYW1lLCB2ZXJpZnkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0X2VudmVsb3BlZF9kc2EKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgdm9pZCB0ZXN0X2VudmVsb3BlZF9kc2EoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgIFN0cmluZyBmaWxlbmFtZSA9IGtlbnRzRGlyICsgImVudmVsb3BlZC1kc2Euc2lnIjsKKyAgICAgIFJlc291cmNlUmVzb2x2ZXJTcGkgcmVzb2x2ZXIgPSBudWxsOworICAgICAgYm9vbGVhbiBmb2xsb3dNYW5pZmVzdHMgPSBmYWxzZTsKKyAgICAgIGJvb2xlYW4gdmVyaWZ5ID0gZmFsc2U7CisKKyAgICAgIHRyeSB7CisgICAgICAgICB2ZXJpZnkgPSB0aGlzLnZlcmlmeShmaWxlbmFtZSwgcmVzb2x2ZXIsIGZvbGxvd01hbmlmZXN0cyk7CisgICAgICB9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBjcmFzaGVkIGZvciAiICsgZmlsZW5hbWUpOworICAgICAgICAgdGhyb3cgZXg7CisgICAgICB9CisKKyAgICAgIGlmICghdmVyaWZ5KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBmYWlsZWQgZm9yICIgKyBmaWxlbmFtZSk7CisgICAgICB9CisKKyAgICAgIGFzc2VydFRydWUoZmlsZW5hbWUsIHZlcmlmeSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHRlc3RfZW52ZWxvcGVkX3JzYQorICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHRlc3RfZW52ZWxvcGVkX3JzYSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgU3RyaW5nIGZpbGVuYW1lID0ga2VudHNEaXIgKyAiZW52ZWxvcGVkLXJzYS5zaWciOworICAgICAgUmVzb3VyY2VSZXNvbHZlclNwaSByZXNvbHZlciA9IG51bGw7CisgICAgICBib29sZWFuIGZvbGxvd01hbmlmZXN0cyA9IGZhbHNlOworICAgICAgYm9vbGVhbiB2ZXJpZnkgPSBmYWxzZTsKKworICAgICAgdHJ5IHsKKyAgICAgICAgIHZlcmlmeSA9IHRoaXMudmVyaWZ5KGZpbGVuYW1lLCByZXNvbHZlciwgZm9sbG93TWFuaWZlc3RzKTsKKyAgICAgIH0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIGxvZy5lcnJvcigiVmVyaWZpY2F0aW9uIGNyYXNoZWQgZm9yICIgKyBmaWxlbmFtZSk7CisgICAgICAgICB0aHJvdyBleDsKKyAgICAgIH0KKworICAgICAgaWYgKCF2ZXJpZnkpIHsKKyAgICAgICAgIGxvZy5lcnJvcigiVmVyaWZpY2F0aW9uIGZhaWxlZCBmb3IgIiArIGZpbGVuYW1lKTsKKyAgICAgIH0KKworICAgICAgYXNzZXJ0VHJ1ZShmaWxlbmFtZSwgdmVyaWZ5KTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdF9lbnZlbG9waW5nX2RzYQorICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHRlc3RfZW52ZWxvcGluZ19kc2EoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgIFN0cmluZyBmaWxlbmFtZSA9IGtlbnRzRGlyICsgImVudmVsb3BpbmctZHNhLnNpZyI7CisgICAgICBSZXNvdXJjZVJlc29sdmVyU3BpIHJlc29sdmVyID0gbnVsbDsKKyAgICAgIGJvb2xlYW4gZm9sbG93TWFuaWZlc3RzID0gZmFsc2U7CisgICAgICBib29sZWFuIHZlcmlmeSA9IGZhbHNlOworCisgICAgICB0cnkgeworICAgICAgICAgdmVyaWZ5ID0gdGhpcy52ZXJpZnkoZmlsZW5hbWUsIHJlc29sdmVyLCBmb2xsb3dNYW5pZmVzdHMpOworICAgICAgfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgbG9nLmVycm9yKCJWZXJpZmljYXRpb24gY3Jhc2hlZCBmb3IgIiArIGZpbGVuYW1lKTsKKyAgICAgICAgIHRocm93IGV4OworICAgICAgfQorCisgICAgICBpZiAoIXZlcmlmeSkgeworICAgICAgICAgbG9nLmVycm9yKCJWZXJpZmljYXRpb24gZmFpbGVkIGZvciAiICsgZmlsZW5hbWUpOworICAgICAgfQorCisgICAgICBhc3NlcnRUcnVlKGZpbGVuYW1lLCB2ZXJpZnkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0X2VudmVsb3BpbmdfcnNhCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHZvaWQgdGVzdF9lbnZlbG9waW5nX3JzYSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgU3RyaW5nIGZpbGVuYW1lID0ga2VudHNEaXIgKyAiZW52ZWxvcGluZy1yc2Euc2lnIjsKKyAgICAgIFJlc291cmNlUmVzb2x2ZXJTcGkgcmVzb2x2ZXIgPSBudWxsOworICAgICAgYm9vbGVhbiBmb2xsb3dNYW5pZmVzdHMgPSBmYWxzZTsKKyAgICAgIGJvb2xlYW4gdmVyaWZ5ID0gZmFsc2U7CisKKyAgICAgIHRyeSB7CisgICAgICAgICB2ZXJpZnkgPSB0aGlzLnZlcmlmeShmaWxlbmFtZSwgcmVzb2x2ZXIsIGZvbGxvd01hbmlmZXN0cyk7CisgICAgICB9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBjcmFzaGVkIGZvciAiICsgZmlsZW5hbWUpOworICAgICAgICAgdGhyb3cgZXg7CisgICAgICB9CisKKyAgICAgIGlmICghdmVyaWZ5KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBmYWlsZWQgZm9yICIgKyBmaWxlbmFtZSk7CisgICAgICB9CisKKyAgICAgIGFzc2VydFRydWUoZmlsZW5hbWUsIHZlcmlmeSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHRlc3RfZW52ZWxvcGluZ19kc2Ffc29hcGVkX2Jyb2tlbgorICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyB2b2lkIHRlc3RfZW52ZWxvcGluZ19kc2Ffc29hcGVkX2Jyb2tlbigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgU3RyaW5nIGZpbGVuYW1lID0ga2VudHNEaXIgKyAiZW52ZWxvcGluZy1kc2Etc29hcGVkLWJyb2tlbi5zaWciOworICAgICAgaWYoIW5ldyBGaWxlKGZpbGVuYW1lKS5leGlzdHMoKSApIHsKKyAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJDb3VsZG4ndCBmaW5kOiAiICsgZmlsZW5hbWUgKyAiIGFuZCBjb3VsZG4ndCBkbyB0aGUgdGVzdCIpOworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgICBSZXNvdXJjZVJlc29sdmVyU3BpIHJlc29sdmVyID0gbnVsbDsKKyAgICAgIGJvb2xlYW4gZm9sbG93TWFuaWZlc3RzID0gZmFsc2U7CisgICAgICBib29sZWFuIHZlcmlmeSA9IHRydWU7CisKKyAgICAgIHRyeSB7CisgICAgICAgICB2ZXJpZnkgPSB0aGlzLnZlcmlmeShmaWxlbmFtZSwgcmVzb2x2ZXIsIGZvbGxvd01hbmlmZXN0cyk7CisgICAgICB9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBjcmFzaGVkIGZvciAiICsgZmlsZW5hbWUpOworICAgICAgICAgdGhyb3cgZXg7CisgICAgICB9CisKKyAgICAgIGlmICh2ZXJpZnkpIHsKKyAgICAgICAgIGxvZy5lcnJvcigiVmVyaWZpY2F0aW9uIGZhaWxlZCBmb3IgIiArIGZpbGVuYW1lICsgIiwgaGFkIHRvIGJlIGJyb2tlbiBidXQgd2FzIHN1Y2Nlc3NmdWwiKTsKKyAgICAgIH0KKworICAgICAgYXNzZXJ0VHJ1ZShmaWxlbmFtZSwgIXZlcmlmeSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHRlc3RfZW52ZWxvcGluZ19leGNsdXNpdmUKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICogJHRvZG8kIGltcGxlbWVudCBleGNsdXNpdmUtYzE0bgorICAgICovCisgICBwdWJsaWMgdm9pZCBfbm90X2FjdGl2ZV90ZXN0X2VudmVsb3BpbmdfZXhjbHVzaXZlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgIC8vIGV4Y2x1c2l2ZSBjMTRuIG5vdCBzdXBwb3J0ZWQgeWV0CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHRlc3RfZW52ZWxvcGluZ19leGNsdXNpdmVfc29hcGVkCisgICAgKgorICAgICogQHRocm93cyBFeGNlcHRpb24KKyAgICAqICR0b2RvJCBpbXBsZW1lbnQgZXhjbHVzaXZlLWMxNG4KKyAgICAqLworICAgcHVibGljIHZvaWQgX25vdF9hY3RpdmVfdGVzdF9lbnZlbG9waW5nX2V4Y2x1c2l2ZV9zb2FwZWQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgLy8gZXhjbHVzaXZlIGMxNG4gbm90IHN1cHBvcnRlZCB5ZXQKKyAgIH0KKworICAgc3RhdGljIHsKKyAgICAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaW5pdCgpOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2ludGVyb3AvSW50ZXJvcFRlc3QuamF2YSBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9pbnRlcm9wL0ludGVyb3BUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDZiZTk5MgotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9pbnRlcm9wL0ludGVyb3BUZXN0LmphdmEKQEAgLTAsMCArMSwxNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMTk5OS0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LmludGVyb3A7CisKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlB1YmxpY0tleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlOworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5LZXlJbmZvOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmU7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5UZXN0VXRpbHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyLlJlc291cmNlUmVzb2x2ZXJTcGk7CitpbXBvcnQgb3JnLmFwYWNoZS54cGF0aC5YUGF0aEFQSTsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworCisvKioKKyAqCisgKiBAYXV0aG9yICRBdXRob3IkCisgKi8KKworCitwdWJsaWMgY2xhc3MgSW50ZXJvcFRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZyhCYWx0aW1vcmVUZXN0LmNsYXNzLmdldE5hbWUoKSk7CisgCisgICAvKiogRmllbGQgZGJmICovCisgICBzdGF0aWMgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPSBudWxsOworCisgICBwdWJsaWMgSW50ZXJvcFRlc3QoU3RyaW5nIE5hbWVfKSB7CisgICAgICBzdXBlcihOYW1lXyk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHNldFVwCisgICAgKgorICAgICovCisgICBwcm90ZWN0ZWQgdm9pZCBzZXRVcCgpIHsKKworICAgICAgZGJmID0gamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCisgICAgICBkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisgICB9CisKKworICAgLyoqCisgICAgKiBNZXRob2QgdmVyaWZ5SE1BQworICAgICoKKyAgICAqIEBwYXJhbSBmaWxlbmFtZQorICAgICogQHBhcmFtIHJlc29sdmVyCisgICAgKiBAcGFyYW0gaG1hY0tleQorICAgICoKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBib29sZWFuIHZlcmlmeUhNQUMoCisgICAgICAgICAgIFN0cmluZyBmaWxlbmFtZSwgUmVzb3VyY2VSZXNvbHZlclNwaSByZXNvbHZlciwgYm9vbGVhbiBmb2xsb3dNYW5pZmVzdHMsIGJ5dGVbXSBobWFjS2V5KQorICAgICAgICAgICAgICB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgRmlsZSBmID0gbmV3IEZpbGUoZmlsZW5hbWUpOworICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyIGRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOworICAgICAgb3JnLnczYy5kb20uRG9jdW1lbnQgZG9jID0gZGIucGFyc2UobmV3IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtKGYpKTsKKyAgICAgIEVsZW1lbnQgbnNjb250ZXh0ID0gVGVzdFV0aWxzLmNyZWF0ZURTY3R4KGRvYywgImRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUyk7CisgICAgICBFbGVtZW50IHNpZ0VsZW1lbnQgPSAoRWxlbWVudCkgWFBhdGhBUEkuc2VsZWN0U2luZ2xlTm9kZShkb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLy9kczpTaWduYXR1cmVbMV0iLCBuc2NvbnRleHQpOworICAgICAgWE1MU2lnbmF0dXJlIHNpZ25hdHVyZSA9IG5ldyBYTUxTaWduYXR1cmUoc2lnRWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYudG9VUkwoKS50b1N0cmluZygpKTsKKworICAgICAgaWYgKHJlc29sdmVyICE9IG51bGwpIHsKKyAgICAgICAgIHNpZ25hdHVyZS5hZGRSZXNvdXJjZVJlc29sdmVyKHJlc29sdmVyKTsKKyAgICAgIH0KKyAgICAgIHNpZ25hdHVyZS5zZXRGb2xsb3dOZXN0ZWRNYW5pZmVzdHMoZm9sbG93TWFuaWZlc3RzKTsKKworICAgICAgYnl0ZSBrZXlieXRlc1tdID0gaG1hY0tleTsKKyAgICAgIGphdmF4LmNyeXB0by5TZWNyZXRLZXkgc2sgPSBzaWduYXR1cmUuY3JlYXRlU2VjcmV0S2V5KGtleWJ5dGVzKTsKKworICAgICAgcmV0dXJuIHNpZ25hdHVyZS5jaGVja1NpZ25hdHVyZVZhbHVlKHNrKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdmVyaWZ5CisgICAgKgorICAgICogQHBhcmFtIGZpbGVuYW1lCisgICAgKiBAcGFyYW0gcmVzb2x2ZXIKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgIHB1YmxpYyBib29sZWFuIHZlcmlmeShTdHJpbmcgZmlsZW5hbWUsIFJlc291cmNlUmVzb2x2ZXJTcGkgcmVzb2x2ZXIsIGJvb2xlYW4gZm9sbG93TWFuaWZlc3RzKQorICAgICAgICAgICB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgRmlsZSBmID0gbmV3IEZpbGUoZmlsZW5hbWUpOworICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyIGRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOworICAgICAgb3JnLnczYy5kb20uRG9jdW1lbnQgZG9jID0gZGIucGFyc2UoZik7CisgICAgICBFbGVtZW50IG5zY29udGV4dCA9IFRlc3RVdGlscy5jcmVhdGVEU2N0eChkb2MsICJkcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMpOworICAgICAgRWxlbWVudCBzaWdFbGVtZW50ID0gKEVsZW1lbnQpIFhQYXRoQVBJLnNlbGVjdFNpbmdsZU5vZGUoZG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8vZHM6U2lnbmF0dXJlWzFdIiwgbnNjb250ZXh0KTsKKyAgICAgIFhNTFNpZ25hdHVyZSBzaWduYXR1cmUgPSBuZXcgWE1MU2lnbmF0dXJlKHNpZ0VsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLnRvVVJMKCkudG9TdHJpbmcoKSk7CisKKyAgICAgIGlmIChyZXNvbHZlciAhPSBudWxsKSB7CisgICAgICAgICBzaWduYXR1cmUuYWRkUmVzb3VyY2VSZXNvbHZlcihyZXNvbHZlcik7CisgICAgICB9CisgICAgICBzaWduYXR1cmUuc2V0Rm9sbG93TmVzdGVkTWFuaWZlc3RzKGZvbGxvd01hbmlmZXN0cyk7CisKKworICAgICAgS2V5SW5mbyBraSA9IHNpZ25hdHVyZS5nZXRLZXlJbmZvKCk7CisgICAgICBib29sZWFuIHJlc3VsdD1mYWxzZTsKKyAgICAgIGlmIChraSAhPSBudWxsKSB7CisgICAgICAgICBYNTA5Q2VydGlmaWNhdGUgY2VydCA9IGtpLmdldFg1MDlDZXJ0aWZpY2F0ZSgpOworCisgICAgICAgICBpZiAoY2VydCAhPSBudWxsKSB7CisgICAgICAgIAkgcmVzdWx0PXNpZ25hdHVyZS5jaGVja1NpZ25hdHVyZVZhbHVlKGNlcnQpOworICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB1YmxpY0tleSBwayA9IGtpLmdldFB1YmxpY0tleSgpOworCisgICAgICAgICAgICBpZiAocGsgIT0gbnVsbCkgeworICAgICAgICAgICAgCXJlc3VsdD1zaWduYXR1cmUuY2hlY2tTaWduYXR1cmVWYWx1ZShwayk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAiRGlkIG5vdCBmaW5kIGEgcHVibGljIGtleSwgc28gSSBjYW4ndCBjaGVjayB0aGUgc2lnbmF0dXJlIik7CisgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIkRpZCBub3QgZmluZCBhIEtleUluZm8iKTsKKyAgICAgIH0KKyAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaWduYXR1cmUuZ2V0U2lnbmVkSW5mbygpLmdldExlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgICBib29sZWFuIHJlZlZlcmlmeSA9CisgICAgICAgICAgICAgICAgc2lnbmF0dXJlLmdldFNpZ25lZEluZm8oKS5nZXRWZXJpZmljYXRpb25SZXN1bHQoaSk7ICAgICAgICAgICAgIAorCisgICAgICAgICAgICAgaWYgKHJlZlZlcmlmeSkgeworICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygiUmVmZXJlbmNlICIgKyBpICsgIiB3YXMgT0siKTsKKyAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIEphdmFVdGlscy53cml0ZUJ5dGVzVG9GaWxlbmFtZShmaWxlbmFtZSArIGkgKyAiLmFwYWNoZS50eHQiLCBzaWduYXR1cmUuZ2V0U2lnbmVkSW5mbygpLml0ZW0oaSkuZ2V0Q29udGVudHNBZnRlclRyYW5zZm9ybWF0aW9uKCkuZ2V0Qnl0ZXMoKSk7ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygiUmVmZXJlbmNlICIgKyBpICsgIiB3YXMgbm90IE9LIik7CisgICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICAvL3Rocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJGYWxsZToiK3NiLnRvU3RyaW5nKCkpOworICAgICAgfQorICAgICAgCisgICAgICByZXR1cm4gcmVzdWx0OworICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9pbnRlcm9wL1JTQVNlY3VyaXR5VGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2ludGVyb3AvUlNBU2VjdXJpdHlUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmUxODliMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9pbnRlcm9wL1JTQVNlY3VyaXR5VGVzdC5qYXZhCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LmludGVyb3A7CisKKworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyLlJlc291cmNlUmVzb2x2ZXJTcGk7CisKKworLyoqCisgKiBUaGlzIHRlc3QgaXMgdG8gZW5zdXJlIGludGVyb3BlcmFiaWxpdHkgd2l0aCB0aGUgZXhhbXBsZXMgcHJvdmlkZWQgYnkgQmxha2UgRG91cm5hZWUKKyAqIGZyb20gUlNBIFNlY3VyaXR5IHVzaW5nIENlcnQtSiAyLjAxLiBUaGVzZSB0ZXN0IHZlY3RvcnMgYXJlIGxvY2F0ZWQgaW4gdGhlIGRpcmVjdG9yeQorICogPENPREU+ZGF0YS9jb20vcnNhc2VjdXJpdHkvYmRvdXJuYWVlLzwvQ09ERT4uCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICogQHNlZSA8QSBIUkVGPSJodHRwOi8vd3d3LnJzYXNlY3VyaXR5LmNvbS9wcm9kdWN0cy9ic2FmZS9jZXJ0ai5odG1sIj5SU0EgQlNBRkUgQ2VydC1KPC9BPgorICovCitwdWJsaWMgY2xhc3MgUlNBU2VjdXJpdHlUZXN0IGV4dGVuZHMgSW50ZXJvcFRlc3QgeworCisgICAvKioge0BsaW5rIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nfSBsb2dnaW5nIGZhY2lsaXR5ICovCisgICAgc3RhdGljIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZyBsb2cgPSAKKyAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeS5nZXRMb2coUlNBU2VjdXJpdHlUZXN0LmNsYXNzLmdldE5hbWUoKSk7CisKKyAgIC8qKiBGaWVsZCBibGFrZXNEaXIgICAgICAgICAgICovCisgICBzdGF0aWMgU3RyaW5nIGJsYWtlc0RpciA9CisgICAgICAiZGF0YS9jb20vcnNhc2VjdXJpdHkvYmRvdXJuYWVlLyI7CisKKyAgIC8qKgorICAgICogTWV0aG9kIHN1aXRlCisgICAgKgorICAgICoKKyAgICAqLworICAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkgeworICAgICAgVGVzdFN1aXRlIHN1aXRlID0gbmV3IFRlc3RTdWl0ZShSU0FTZWN1cml0eVRlc3QuY2xhc3MpOworCisgICAgICByZXR1cm4gc3VpdGU7CisgICB9CisgICAvKioKKyAgICAqIENvbnN0cnVjdG9yIFJTQVNlY3VyaXR5VGVzdAorICAgICoKKyAgICAqIEBwYXJhbSBOYW1lXworICAgICovCisgICBwdWJsaWMgUlNBU2VjdXJpdHlUZXN0KFN0cmluZyBOYW1lXykgeworICAgICAgc3VwZXIoTmFtZV8pOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWluCisgICAgKgorICAgICogQHBhcmFtIGFyZ3MKKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworCisgICAgICBTdHJpbmdbXSB0ZXN0Q2FzZU5hbWUgPSB7ICItbm9sb2FkaW5nIiwgUlNBU2VjdXJpdHlUZXN0LmNsYXNzLmdldE5hbWUoKSB9OworCisgICAgICBqdW5pdC50ZXh0dWkuVGVzdFJ1bm5lci5tYWluKHRlc3RDYXNlTmFtZSk7CisgICB9CisKKyAgIHB1YmxpYyB2b2lkIHRlc3RfZW52ZWxvcGluZygpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBibGFrZXNEaXIgKyAiY2VydGoyMDFfZW52ZWxvcGluZy54bWwiOworICAgICAgYm9vbGVhbiBmb2xsb3dNYW5pZmVzdHMgPSBmYWxzZTsKKyAgICAgIFJlc291cmNlUmVzb2x2ZXJTcGkgcmVzb2x2ZXIgPSBudWxsOworICAgICAgYm9vbGVhbiB2ZXJpZnkgPSB0aGlzLnZlcmlmeShmaWxlbmFtZSwgcmVzb2x2ZXIsIGZvbGxvd01hbmlmZXN0cyk7CisKKyAgICAgIGlmICghdmVyaWZ5KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBmYWlsZWQgZm9yICIgKyBmaWxlbmFtZSk7CisgICAgICB9CisKKyAgICAgIGFzc2VydFRydWUoZmlsZW5hbWUsIHZlcmlmeSk7CisgICB9CisKKworICAgcHVibGljIHZvaWQgdGVzdF9lbnZlbG9wZWQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgU3RyaW5nIGZpbGVuYW1lID0gYmxha2VzRGlyICsgImNlcnRqMjAxX2VudmVsb3BlZC54bWwiOworICAgICAgYm9vbGVhbiBmb2xsb3dNYW5pZmVzdHMgPSBmYWxzZTsKKyAgICAgIFJlc291cmNlUmVzb2x2ZXJTcGkgcmVzb2x2ZXIgPSBudWxsOworICAgICAgYm9vbGVhbiB2ZXJpZnkgPSB0aGlzLnZlcmlmeShmaWxlbmFtZSwgcmVzb2x2ZXIsIGZvbGxvd01hbmlmZXN0cyk7CisKKyAgICAgIGlmICghdmVyaWZ5KSB7CisgICAgICAgICBsb2cuZXJyb3IoIlZlcmlmaWNhdGlvbiBmYWlsZWQgZm9yICIgKyBmaWxlbmFtZSk7CisgICAgICB9CisKKyAgICAgIGFzc2VydFRydWUoZmlsZW5hbWUsIHZlcmlmeSk7CisgICB9CisKKyAgIHN0YXRpYyB7CisgICAJICBTdHJpbmcgYmFzZWRpciA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpOworICAgCSAgaWYoYmFzZWRpciAhPSBudWxsICYmICEiIi5lcXVhbHMoYmFzZWRpcikpIHsKKyAgIAkJYmxha2VzRGlyID0gYmFzZWRpciArICIvIiArIGJsYWtlc0RpcjsKKyAgIAkgIH0KKyAgICAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaW5pdCgpOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2ludGVyb3AvcGFja2FnZS5odG1sIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2ludGVyb3AvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0OGVhZWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvaW50ZXJvcC9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSwzIEBACis8SFRNTD48SEVBRD48L0hFQUQ+PEJPRFk+PFA+Citjb250YWlucyB1bml0IHRlc3RzIGZvciBjaGVja2luZyBpbnRlcm9wIGFnYWluc3QgWE1MIGluc3RhbmNlcyBjcmVhdGluZCB3aXRoIG90aGVyIGltcGxlbWVudGF0aW9ucy4KKzwvUD48L0JPRFk+PC9IVE1MPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9rZXlzL2NvbnRlbnQveDUwOS9YTUxYNTA5Q2VydGlmaWNhdGVUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3Qva2V5cy9jb250ZW50L3g1MDkvWE1MWDUwOUNlcnRpZmljYXRlVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0YWI4ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3Qva2V5cy9jb250ZW50L3g1MDkvWE1MWDUwOUNlcnRpZmljYXRlVGVzdC5qYXZhCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDIwMDgtMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3Qua2V5cy5jb250ZW50Lng1MDk7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuKjsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC54NTA5LlhNTFg1MDlDZXJ0aWZpY2F0ZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7CisKKy8qKgorICogQ2VydGlmaWNhdGUgcGFyc2luZyB0ZXN0LgorICoKKyAqIEBhdXRob3IgU2VhbiBNdWxsYW4KKyAqLworcHVibGljIGNsYXNzIFhNTFg1MDlDZXJ0aWZpY2F0ZVRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQkFTRURJUiA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTRVAgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImZpbGUuc2VwYXJhdG9yIik7CisKKyAgICBwdWJsaWMgWE1MWDUwOUNlcnRpZmljYXRlVGVzdCgpIHsKKwlzdXBlcigiWE1MWDUwOUNlcnRpZmljYXRlVGVzdCIpOworICAgIH0KKworICAgIHB1YmxpYyBYTUxYNTA5Q2VydGlmaWNhdGVUZXN0KFN0cmluZyBuYW1lKSB7CisJc3VwZXIobmFtZSk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkgeworCXJldHVybiBuZXcgVGVzdFN1aXRlKFhNTFg1MDlDZXJ0aWZpY2F0ZVRlc3QuY2xhc3MpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RHZXRYNTA5Q2VydGlmaWNhdGUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgICBGaWxlIGYgPSBudWxsOworICAgICAgICBmID0gbmV3IEZpbGUoQkFTRURJUiArIFNFUCArICJkYXRhIiArIFNFUCArICJpZSIgKyBTRVAgKyAiYmFsdGltb3JlIiArCisJICAgIFNFUCArICJtZXJsaW4tZXhhbXBsZXMiICsgU0VQICsgIm1lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZSIgKworCSAgICBTRVAgKyAic2lnbmF0dXJlLXg1MDktY3J0LnhtbCIpOworCisJRmlsZUlucHV0U3RyZWFtIGZpcyA9IG5ldyBGaWxlSW5wdXRTdHJlYW0oZik7CisJRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisJZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworCURvY3VtZW50IGRvYyA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKS5wYXJzZShmaXMpOworCU5vZGVMaXN0IG5sID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMKKwkJKENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMsICJYNTA5Q2VydGlmaWNhdGUiKTsKKwlYTUxYNTA5Q2VydGlmaWNhdGUgeG1sQ2VydCA9IAorCSAgICBuZXcgWE1MWDUwOUNlcnRpZmljYXRlKChFbGVtZW50KSBubC5pdGVtKDApLCAiIik7CisJeG1sQ2VydC5nZXRYNTA5Q2VydGlmaWNhdGUoKTsKKwkvLyBTeXN0ZW0ub3V0LnByaW50bG4oY2VydCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2tleXMvY29udGVudC94NTA5L1hNTFg1MDlJc3N1ZXJTZXJpYWxUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3Qva2V5cy9jb250ZW50L3g1MDkvWE1MWDUwOUlzc3VlclNlcmlhbFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDdkODhlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2tleXMvY29udGVudC94NTA5L1hNTFg1MDlJc3N1ZXJTZXJpYWxUZXN0LmphdmEKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAgMjAwOCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3Qua2V5cy5jb250ZW50Lng1MDk7CisKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy4qOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC54NTA5LlhNTFg1MDlJc3N1ZXJTZXJpYWw7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7CisKKy8qKgorICogWE1MWDUwOUlzc3VlclNlcmlhbCB0ZXN0cy4KKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKi8KK3B1YmxpYyBjbGFzcyBYTUxYNTA5SXNzdWVyU2VyaWFsVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgIHByaXZhdGUgRG9jdW1lbnQgZG9jOworCisgICAgcHVibGljIFhNTFg1MDlJc3N1ZXJTZXJpYWxUZXN0KCkgeworCXN1cGVyKCJYTUxYNTA5SXNzdWVyU2VyaWFsVGVzdCIpOworICAgIH0KKworICAgIHB1YmxpYyBYTUxYNTA5SXNzdWVyU2VyaWFsVGVzdChTdHJpbmcgbmFtZSkgeworCXN1cGVyKG5hbWUpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpIHsKKwlyZXR1cm4gbmV3IFRlc3RTdWl0ZShYTUxYNTA5SXNzdWVyU2VyaWFsVGVzdC5jbGFzcyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKwlkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisJZG9jID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpLm5ld0RvY3VtZW50KCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdEdldElzc3Vlck5hbWUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworCS8vIE1ha2Ugc3VyZSBoZXggZW5jb2RlZCB2YWx1ZSBpcyBub3QgZXNjYXBlZCAoc2VlIC4uLikKKwlTdHJpbmcgaXNzdWVyID0gIjkuOTkuOTk5PSNhYmMxMjMiOworCVhNTFg1MDlJc3N1ZXJTZXJpYWwgaXMgPSAKKwkgICAgbmV3IFhNTFg1MDlJc3N1ZXJTZXJpYWwoZG9jLCBpc3N1ZXIsIDApOworCWFzc2VydEVxdWFscyhpc3N1ZXIsIGlzLmdldElzc3Vlck5hbWUoKSk7CisJLy8gU3lzdGVtLm91dC5wcmludGxuKGlzLmdldElzc3Vlck5hbWUoKSk7CisJaXNzdWVyID0gIkNOPSNhYmMxMjMiOworCWlzID0gbmV3IFhNTFg1MDlJc3N1ZXJTZXJpYWwoZG9jLCBpc3N1ZXIsIDApOworCWFzc2VydEVxdWFscygiQ049XFwjYWJjMTIzIiwgaXMuZ2V0SXNzdWVyTmFtZSgpKTsKKwkvLyBTeXN0ZW0ub3V0LnByaW50bG4oaXMuZ2V0SXNzdWVyTmFtZSgpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3Qva2V5cy9jb250ZW50L3g1MDkvWE1MWDUwOVNLSVRlc3QuamF2YSBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9rZXlzL2NvbnRlbnQveDUwOS9YTUxYNTA5U0tJVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2ODI4NzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3Qva2V5cy9jb250ZW50L3g1MDkvWE1MWDUwOVNLSVRlc3QuamF2YQpAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LmtleXMuY29udGVudC54NTA5OworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuc2VjdXJpdHkuY2VydC4qOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLmNvbnRlbnQueDUwOS5YTUxYNTA5U0tJOworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOworCisvKioKKyAqIFRlc3QgYnVnZml4IDQxODkyOiBYTUwgU2VjdXJpdHkgMS40LjAgZG9lcyBub3QgYnVpbGQgd2l0aCBJQk0ncyBKREsKKyAqLworcHVibGljIGNsYXNzIFhNTFg1MDlTS0lUZXN0IGV4dGVuZHMgVGVzdENhc2UgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEJBU0VESVIgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImJhc2VkaXIiKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0VQID0gU3lzdGVtLmdldFByb3BlcnR5KCJmaWxlLnNlcGFyYXRvciIpOworICAgIHByaXZhdGUgQ2VydGlmaWNhdGVGYWN0b3J5IGNmOworCisgICAgcHVibGljIFhNTFg1MDlTS0lUZXN0KCkgeworCXN1cGVyKCJYTUxYNTA5U0tJVGVzdCIpOworICAgIH0KKworICAgIHB1YmxpYyBYTUxYNTA5U0tJVGVzdChTdHJpbmcgbmFtZSkgeworCXN1cGVyKG5hbWUpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpIHsKKwlyZXR1cm4gbmV3IFRlc3RTdWl0ZShYTUxYNTA5U0tJVGVzdC5jbGFzcyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwljZiA9IENlcnRpZmljYXRlRmFjdG9yeS5nZXRJbnN0YW5jZSgiWC41MDkiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0R2V0U0tJQnl0ZXNGcm9tQ2VydCgpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICAgIEZpbGUgZiA9IG51bGw7CisgICAgICAgIGlmIChCQVNFRElSICE9IG51bGwgJiYgISIiLmVxdWFscyhCQVNFRElSKSkgeworICAgICAgICAgICAgZiA9IG5ldyBGaWxlKEJBU0VESVIgKyBTRVAgKworCQkiZGF0YS9pZS9iYWx0aW1vcmUvbWVybGluLWV4YW1wbGVzL21lcmxpbi14bWxkc2lnLXR3ZW50eS10aHJlZS9jZXJ0cy9sdWdoLmNydCIpOworCX0gZWxzZSB7CisgICAgICAgICAgICBmID0gbmV3IEZpbGUoCisJCSJkYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL2NlcnRzL2x1Z2guY3J0Iik7CisJfQorCisJRmlsZUlucHV0U3RyZWFtIGZpcyA9IG5ldyBGaWxlSW5wdXRTdHJlYW0oZik7CisJWDUwOUNlcnRpZmljYXRlIGNlcnQgPSAoWDUwOUNlcnRpZmljYXRlKSBjZi5nZW5lcmF0ZUNlcnRpZmljYXRlKGZpcyk7CisKKwkvLyBHZXQgc3ViamVjdCBrZXkgaWRlbnRpZmllciBmcm9tIGNlcnRpZmljYXRlCisJYnl0ZVtdIHNraWQgPSBYTUxYNTA5U0tJLmdldFNLSUJ5dGVzRnJvbUNlcnQoY2VydCk7CisKKwkvLyBVc2UgWDUwOUNlcnRTZWxlY3RvciB0byBtYXRjaCBvbiBjZXJ0aWZpY2F0ZSB1c2luZyB0aGUgc2tpZCwKKwkvLyB0aGVyZWJ5IHRlc3RpbmcgdGhhdCB0aGUgcmV0dXJuZWQgc2tpZCB3YXMgY29ycmVjdAorCVg1MDlDZXJ0U2VsZWN0b3IgeGNzID0gbmV3IFg1MDlDZXJ0U2VsZWN0b3IoKTsKKwkvLyBERVItZW5jb2RlIHNraWQgLSByZXF1aXJlZCBieSBYNTA5Q2VydFNlbGVjdG9yCisJYnl0ZVtdIGVuY29kZWRTa2lkID0gbmV3IGJ5dGVbc2tpZC5sZW5ndGgrMl07CisJZW5jb2RlZFNraWRbMF0gPSAweDA0OyAvLyBPQ1RFVCBTVFJJTkcgdGFnIHZhbHVlCisJZW5jb2RlZFNraWRbMV0gPSAoYnl0ZSkgc2tpZC5sZW5ndGg7IC8vIGxlbmd0aAorCVN5c3RlbS5hcnJheWNvcHkoc2tpZCwgMCwgZW5jb2RlZFNraWQsIDIsIHNraWQubGVuZ3RoKTsKKwl4Y3Muc2V0U3ViamVjdEtleUlkZW50aWZpZXIoZW5jb2RlZFNraWQpOworCisJQ2VydFN0b3JlIGNzID0gQ2VydFN0b3JlLmdldEluc3RhbmNlKAorCSAgICAiQ29sbGVjdGlvbiIsIAorCSAgICBuZXcgQ29sbGVjdGlvbkNlcnRTdG9yZVBhcmFtZXRlcnMoQ29sbGVjdGlvbnMuc2luZ2xldG9uKGNlcnQpKSk7CisJCisJQ29sbGVjdGlvbiBjZXJ0cyA9IGNzLmdldENlcnRpZmljYXRlcyh4Y3MpOworCWFzc2VydFRydWUoIWNlcnRzLmlzRW1wdHkoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2tleXMvc3RvcmFnZS9LZXlTdG9yZVJlc29sdmVyVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2tleXMvc3RvcmFnZS9LZXlTdG9yZVJlc29sdmVyVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiNjA2ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3Qva2V5cy9zdG9yYWdlL0tleVN0b3JlUmVzb2x2ZXJUZXN0LmphdmEKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDIwMDgtMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3Qua2V5cy5zdG9yYWdlOworCitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5zZWN1cml0eS5LZXlTdG9yZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTm9TdWNoRWxlbWVudEV4Y2VwdGlvbjsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5zdG9yYWdlLmltcGxlbWVudGF0aW9ucy5LZXlTdG9yZVJlc29sdmVyOworCisvKioKKyAqIEtleVN0b3JlIFN0b3JhZ2VSZXNvbHZlciB0ZXN0LgorICovCitwdWJsaWMgY2xhc3MgS2V5U3RvcmVSZXNvbHZlclRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQkFTRURJUiA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpOworCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTRVAgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImZpbGUuc2VwYXJhdG9yIik7CisKKwlwdWJsaWMgS2V5U3RvcmVSZXNvbHZlclRlc3QoKSB7CisJCXN1cGVyKCJLZXlTdG9yZVJlc29sdmVyVGVzdCIpOworCX0KKworCXB1YmxpYyBLZXlTdG9yZVJlc29sdmVyVGVzdChTdHJpbmcgbmFtZSkgeworCQlzdXBlcihuYW1lKTsKKwl9CisKKwlwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKSB7CisJCXJldHVybiBuZXcgVGVzdFN1aXRlKEtleVN0b3JlUmVzb2x2ZXJUZXN0LmNsYXNzKTsKKwl9CisKKwlwdWJsaWMgdm9pZCB0ZXN0S2V5U3RvcmVSZXNvbHZlcigpIHRocm93cyBFeGNlcHRpb24geworCisJCUZpbGVJbnB1dFN0cmVhbSBmID0gbmV3IEZpbGVJbnB1dFN0cmVhbShCQVNFRElSICsgU0VQICsgImRhdGEiICsgU0VQCisJCQkJKyAib3JnIiArIFNFUCArICJhcGFjaGUiICsgU0VQICsgInhtbCIgKyBTRVAgKyAic2VjdXJpdHkiICsgU0VQCisJCQkJKyAic2FtcGxlcyIgKyBTRVAgKyAiaW5wdXQiICsgU0VQICsgImtleXN0b3JlMi5qa3MiKTsKKworCQlLZXlTdG9yZSBrcyA9IEtleVN0b3JlLmdldEluc3RhbmNlKCJKQ0VLUyIpOworCQlrcy5sb2FkKGYsICJ4bWxzZWN1cml0eSIudG9DaGFyQXJyYXkoKSk7CisKKwkJS2V5U3RvcmVSZXNvbHZlciBrc1Jlc29sdmVyID0gbmV3IEtleVN0b3JlUmVzb2x2ZXIoa3MpOworCQlJdGVyYXRvciBpdGVyID0ga3NSZXNvbHZlci5nZXRJdGVyYXRvcigpOworCQljaGVja0l0ZXJhdG9yKGl0ZXIpOworCQkKKwkJLy8gY2hlY2sgbmV3IGl0ZXJhdG9yIHN0YXJ0cyBmcm9tIHRoZSBiZWdpbm5pbmcKKwkJSXRlcmF0b3IgaXRlcjIgPSBrc1Jlc29sdmVyLmdldEl0ZXJhdG9yKCk7CisJCWNoZWNrSXRlcmF0b3IoaXRlcjIpOworCQkKKwkJLy8gY2hlY2sgdGhlIGl0ZXJhdG9ycyBhcmUgaW5kZXBlbmRlbnQKKwkJLy8gY2hlY2sgY2FsbGluZyBuZXh0KCkgd2l0aG91dCBjYWxsaW5nIGhhc05leHQoKQorCQlpdGVyID0ga3NSZXNvbHZlci5nZXRJdGVyYXRvcigpOworCQlpdGVyMiA9IGtzUmVzb2x2ZXIuZ2V0SXRlcmF0b3IoKTsKKwkJCisJCXdoaWxlIChpdGVyLmhhc05leHQoKSkgeworCQkgICAgWDUwOUNlcnRpZmljYXRlIGNlcnQgPSAoWDUwOUNlcnRpZmljYXRlKSBpdGVyLm5leHQoKTsKKwkJICAgIFg1MDlDZXJ0aWZpY2F0ZSBjZXJ0MiA9IChYNTA5Q2VydGlmaWNhdGUpIGl0ZXIyLm5leHQoKTsKKwkJICAgIGlmICghY2VydC5lcXVhbHMoY2VydDIpKSB7CisJCSAgICAgICAgZmFpbCgiS2V5U3RvcmVSZXNvbHZlciBpdGVyYXRvcnMgYXJlIG5vdCBpbmRlcGVuZGVudCIpOworCQkgICAgfQorCQl9CisJCWFzc2VydEZhbHNlKGl0ZXIyLmhhc05leHQoKSk7CisJfQorCQorCXByaXZhdGUgdm9pZCBjaGVja0l0ZXJhdG9yKEl0ZXJhdG9yIGl0ZXIpIHsKKwkgICAgaW50IGNvdW50ID0gMDsKKwkgICAgaXRlci5oYXNOZXh0KCk7IC8vIGhhc05leHQoKSBpcyBpZGVtcG90ZW50CisKKwkgICAgd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSB7CisJICAgICAgICBYNTA5Q2VydGlmaWNhdGUgY2VydCA9IChYNTA5Q2VydGlmaWNhdGUpIGl0ZXIubmV4dCgpOworCSAgICAgICAgY2VydC5nZXRTdWJqZWN0RE4oKS5nZXROYW1lKCk7CisJICAgICAgICBjb3VudCsrOworCSAgICB9CisKKwkgICAgLy8gVGhlIGl0ZXJhdG9yIHNraXBwZWQgb3ZlciBzeW1tZXRyaWMga2V5cworCSAgICBhc3NlcnRFcXVhbHMoMywgY291bnQpOworCisJICAgIC8vIENhbm5vdCBnbyBiZXlvbmQgbGFzdCBlbGVtZW50CisJICAgIHRyeSB7CisJICAgICAgICBpdGVyLm5leHQoKTsKKwkgICAgICAgIGZhaWwoIkV4cGVjdGluZyBOb1N1Y2hFbGVtZW50RXhjZXB0aW9uIik7CisJICAgIH0gY2F0Y2ggKE5vU3VjaEVsZW1lbnRFeGNlcHRpb24gZSkgeworCSAgICB9CisJfQorCQorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2tleXMvc3RvcmFnZS9TdG9yYWdlUmVzb2x2ZXJUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3Qva2V5cy9zdG9yYWdlL1N0b3JhZ2VSZXNvbHZlclRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTY5MzRlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L2tleXMvc3RvcmFnZS9TdG9yYWdlUmVzb2x2ZXJUZXN0LmphdmEKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDIwMDgtMjAxMCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3Qua2V5cy5zdG9yYWdlOworCitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5zZWN1cml0eS5LZXlTdG9yZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTm9TdWNoRWxlbWVudEV4Y2VwdGlvbjsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5zdG9yYWdlLlN0b3JhZ2VSZXNvbHZlcjsKKworLyoqCisgKiBLZXlTdG9yZSBTdG9yYWdlUmVzb2x2ZXIgdGVzdC4KKyAqLworcHVibGljIGNsYXNzIFN0b3JhZ2VSZXNvbHZlclRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQkFTRURJUiA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpOworCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTRVAgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImZpbGUuc2VwYXJhdG9yIik7CisKKwlwdWJsaWMgU3RvcmFnZVJlc29sdmVyVGVzdCgpIHsKKwkJc3VwZXIoIktleVN0b3JlUmVzb2x2ZXJUZXN0Iik7CisJfQorCisJcHVibGljIFN0b3JhZ2VSZXNvbHZlclRlc3QoU3RyaW5nIG5hbWUpIHsKKwkJc3VwZXIobmFtZSk7CisJfQorCisJcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkgeworCQlyZXR1cm4gbmV3IFRlc3RTdWl0ZShTdG9yYWdlUmVzb2x2ZXJUZXN0LmNsYXNzKTsKKwl9CisKKwlwdWJsaWMgdm9pZCB0ZXN0U3RvcmFnZVJlc29sdmVyKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKwkJU3RyaW5nIGlucHV0RGlyID0gQkFTRURJUiArIFNFUCArICJkYXRhIiArIFNFUAorCQkJCSsgIm9yZyIgKyBTRVAgKyAiYXBhY2hlIiArIFNFUCArICJ4bWwiICsgU0VQICsgInNlY3VyaXR5IiArIFNFUAorCQkJCSsgInNhbXBsZXMiICsgU0VQICsgImlucHV0IjsKKworCQlGaWxlSW5wdXRTdHJlYW0gaW5TdHJlYW0gPSBuZXcgRmlsZUlucHV0U3RyZWFtKGlucHV0RGlyICsgU0VQICsgImtleXN0b3JlLmprcyIpOworCQlLZXlTdG9yZSBrcyA9IEtleVN0b3JlLmdldEluc3RhbmNlKCJKS1MiKTsKKwkJa3MubG9hZChpblN0cmVhbSwgInhtbHNlY3VyaXR5Ii50b0NoYXJBcnJheSgpKTsKKworCQlGaWxlSW5wdXRTdHJlYW0gaW5TdHJlYW0yID0gbmV3IEZpbGVJbnB1dFN0cmVhbShpbnB1dERpciArIFNFUCArICJrZXlzdG9yZTIuamtzIik7CisJCUtleVN0b3JlIGtzMiA9IEtleVN0b3JlLmdldEluc3RhbmNlKCJKQ0VLUyIpOworCQlrczIubG9hZChpblN0cmVhbTIsICJ4bWxzZWN1cml0eSIudG9DaGFyQXJyYXkoKSk7CisKKwkJU3RvcmFnZVJlc29sdmVyIHN0b3JhZ2UgPSBuZXcgU3RvcmFnZVJlc29sdmVyKGtzKTsKKwkJc3RvcmFnZS5hZGQoa3MyKTsKKwkJCisJCS8vIGl0ZXJhdGUgZGlyZWN0bHkgb24gdGhlIHN0b3JhZ2UKKwkJaW50IGNvdW50ID0gMDsKKwkJd2hpbGUgKHN0b3JhZ2UuaGFzTmV4dCgpKSB7CisJCQlYNTA5Q2VydGlmaWNhdGUgY2VydCA9IHN0b3JhZ2UubmV4dCgpOworCQkJYXNzZXJ0Tm90TnVsbChjZXJ0KTsKKwkJCWNvdW50Kys7CisJCX0KKworCQlhc3NlcnRFcXVhbHMoNCwgY291bnQpOworCQkKKwkJdHJ5IHsKKwkJCXN0b3JhZ2UubmV4dCgpOworCQkJZmFpbCgiRXhwZWN0aW5nIE5vU3VjaEVsZW1lbnRFeGNlcHRpb24iKTsKKwkJfSBjYXRjaCAoTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiBlKSB7CisJCX0KKworCQlJdGVyYXRvciBpdGVyID0gc3RvcmFnZS5nZXRJdGVyYXRvcigpOworCQljaGVja0l0ZXJhdG9yKGl0ZXIpOworCisJCS8vIGNoZWNrIG5ldyBpdGVyYXRvciBzdGFydHMgZnJvbSB0aGUgYmVnaW5uaW5nCisJCUl0ZXJhdG9yIGl0ZXIyID0gc3RvcmFnZS5nZXRJdGVyYXRvcigpOworCQljaGVja0l0ZXJhdG9yKGl0ZXIyKTsKKworCQkvLyBjaGVjayB0aGUgaXRlcmF0b3JzIGFyZSBpbmRlcGVuZGVudAorCQkvLyBjaGVjayBjYWxsaW5nIG5leHQoKSB3aXRob3V0IGNhbGxpbmcgaGFzTmV4dCgpCisJCWl0ZXIgPSBzdG9yYWdlLmdldEl0ZXJhdG9yKCk7CisJCWl0ZXIyID0gc3RvcmFnZS5nZXRJdGVyYXRvcigpOworCisJCXdoaWxlIChpdGVyLmhhc05leHQoKSkgeworCQkJWDUwOUNlcnRpZmljYXRlIGNlcnQgPSAoWDUwOUNlcnRpZmljYXRlKSBpdGVyLm5leHQoKTsKKwkJCVg1MDlDZXJ0aWZpY2F0ZSBjZXJ0MiA9IChYNTA5Q2VydGlmaWNhdGUpIGl0ZXIyLm5leHQoKTsKKwkJCWlmICghY2VydC5lcXVhbHMoY2VydDIpKSB7CisJCQkJZmFpbCgiU3RvcmFnZVJlc29sdmVyIGl0ZXJhdG9ycyBhcmUgbm90IGluZGVwZW5kZW50Iik7CisJCQl9CisJCX0KKwkJYXNzZXJ0RmFsc2UoaXRlcjIuaGFzTmV4dCgpKTsKKwl9CisKKwlwcml2YXRlIHZvaWQgY2hlY2tJdGVyYXRvcihJdGVyYXRvciBpdGVyKSB7CisJCWludCBjb3VudCA9IDA7CisJCWl0ZXIuaGFzTmV4dCgpOyAvLyBoYXNOZXh0KCkgaXMgaWRlbXBvdGVudAorCisJCXdoaWxlIChpdGVyLmhhc05leHQoKSkgeworCQkJWDUwOUNlcnRpZmljYXRlIGNlcnQgPSAoWDUwOUNlcnRpZmljYXRlKSBpdGVyLm5leHQoKTsKKwkJCWNlcnQuZ2V0U3ViamVjdEROKCkuZ2V0TmFtZSgpOworCQkJY291bnQrKzsKKwkJfQorCisJCS8vIFRoZSBpdGVyYXRvciBza2lwcGVkIG92ZXIgc3ltbWV0cmljIGtleXMKKwkJYXNzZXJ0RXF1YWxzKDQsIGNvdW50KTsKKworCQkvLyBDYW5ub3QgZ28gYmV5b25kIGxhc3QgZWxlbWVudAorCQl0cnkgeworCQkJaXRlci5uZXh0KCk7CisJCQlmYWlsKCJFeHBlY3RpbmcgTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiIpOworCQl9IGNhdGNoIChOb1N1Y2hFbGVtZW50RXhjZXB0aW9uIGUpIHsKKwkJfQorCX0KK30KKwpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3BhY2thZ2UuaHRtbCBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDUyZTU4OAotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSw4IEBACis8SFRNTD4gCis8SEVBRD4gPC9IRUFEPiAKKzxCT0RZPiAKKzxQPgore0BsaW5rIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3R9IEpVbml0IHRlc3QgY2FzZXMuCis8L1A+Cis8L0JPRFk+IAorPC9IVE1MPgpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3Jlc291cmNlL1Rlc3RWZWN0b3JSZXNvbHZlci5qYXZhIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3Jlc291cmNlL1Rlc3RWZWN0b3JSZXNvbHZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNjQ1Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvcmVzb3VyY2UvVGVzdFZlY3RvclJlc29sdmVyLmphdmEKQEAgLTAsMCArMSwyMDMgQEAKKworLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5yZXNvdXJjZTsKKworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKK2ltcG9ydCBvcmcueG1sLnNheC5FbnRpdHlSZXNvbHZlcjsKK2ltcG9ydCBvcmcueG1sLnNheC5JbnB1dFNvdXJjZTsKKworCisvKioKKyAqIFRoaXMgcGFja2FnZSBpcyByZXNwb25zaWJsZSBmb3IgcmV0cmlldmluZyB0ZXN0IHZlY3RvcnMgZm9yIG91ciB1bml0IHRlc3RzLgorICoKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEdldWVyLVBvbGxtYW5uCisgKiAkdG9kbyQgQ3VycmVudGx5LCB0aGUgdGVzdCB2ZWN0b3JzIGFyZSBpbiB0aGUgZmlsZSBzeXN0ZW0gdW5kZXIgdGhlIGRhdGEvIGRpcmVjdG9yeS4gSXQgaXMgcGxhbm5lZCB0byBwdXQgdGhlbSBhbGwgaW50byBhIHNpbmdsZSBqYXIvemlwIHdoaWNoIGlzIGRlcGxveWVkIHdpdGggdGhlIGxpYnJhcnkuCisgKi8KK3B1YmxpYyBjbGFzcyBUZXN0VmVjdG9yUmVzb2x2ZXIgaW1wbGVtZW50cyBFbnRpdHlSZXNvbHZlciB7CisKKyAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZygKKwkJCVRlc3RWZWN0b3JSZXNvbHZlci5jbGFzcy5nZXROYW1lKCkpOworCisgICAvKiogRmllbGQgX2ZpcnN0RW50aXR5UmVzb2x2ZWQgKi8KKyAgIGJvb2xlYW4gX2ZpcnN0RW50aXR5UmVzb2x2ZWQgPSBmYWxzZTsKKworICAgLyoqIEZpZWxkIF9maXJzdEVudGl0eVN5c3RlbUlkICovCisgICBTdHJpbmcgX2ZpcnN0RW50aXR5U3lzdGVtSWREaXJlY3RvcnkgPSBudWxsOworCisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRDdXJyZW50RGlyCisgICAgKgorICAgICoKKyAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAqLworICAgcHJpdmF0ZSBTdHJpbmcgZ2V0Q3VycmVudERpcigpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZyBjdXJyZW50RGlyID0gbmV3IGphdmEuaW8uRmlsZSgiLiIpLmdldENhbm9uaWNhbFBhdGgoKTsKKworICAgICAgY3VycmVudERpciA9IGN1cnJlbnREaXIucmVwbGFjZShGaWxlLnNlcGFyYXRvckNoYXIsICcvJyk7CisgICAgICBjdXJyZW50RGlyID0gImZpbGU6Ly8vIiArIGN1cnJlbnREaXIgKyAiLyI7CisKKyAgICAgIHJldHVybiBjdXJyZW50RGlyOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBnZXRGaWxlTmFtZQorICAgICoKKyAgICAqIEBwYXJhbSBzeXN0ZW1JZAorICAgICoKKyAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAqLworICAgcHJpdmF0ZSBTdHJpbmcgZ2V0RmlsZU5hbWUoU3RyaW5nIHN5c3RlbUlkKSB0aHJvd3MgSU9FeGNlcHRpb24geworCisgICAgICAvLyBjbGVhbiB1cCBmaWxlIG5hbWUKKyAgICAgIFN0cmluZyBjdXJyZW50RGlyID0gZ2V0Q3VycmVudERpcigpOworCisgICAgICBpZiAoc3lzdGVtSWQuc3RhcnRzV2l0aChjdXJyZW50RGlyKSkgeworICAgICAgICAgcmV0dXJuIHN5c3RlbUlkLnN1YnN0cmluZyhjdXJyZW50RGlyLmxlbmd0aCgpKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgICByZXR1cm4gc3lzdGVtSWQ7CisgICAgICB9CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIGdldEZpbGVQYXRoCisgICAgKgorICAgICogQHBhcmFtIHN5c3RlbUlkCisgICAgKgorICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorICAgICovCisgICBwcml2YXRlIFN0cmluZyBnZXRGaWxlUGF0aChTdHJpbmcgc3lzdGVtSWQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZyB0ID0gbmV3IEZpbGUoc3lzdGVtSWQpLmdldENhbm9uaWNhbFBhdGgoKTsKKworICAgICAgdCA9IHQucmVwbGFjZShGaWxlLnNlcGFyYXRvckNoYXIsICcvJyk7CisgICAgICB0ID0gImZpbGU6Ly8vIiArIHQ7CisKKyAgICAgIFN0cmluZyBjdXJyZW50RGlyID0gZ2V0Q3VycmVudERpcigpOworCisgICAgICBpZiAodC5zdGFydHNXaXRoKGN1cnJlbnREaXIpKSB7CisgICAgICAgICB0ID0gdC5zdWJzdHJpbmcoY3VycmVudERpci5sZW5ndGgoKSk7CisgICAgICB9CisKKyAgICAgIHQgPSB0LnN1YnN0cmluZygwLCB0Lmxhc3RJbmRleE9mKCIvIikpOworCisgICAgICByZXR1cm4gdDsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2Qgc2V0MXN0U3lzdGVtSWQKKyAgICAqCisgICAgKiBAcGFyYW0gc3lzdGVtSWQKKyAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAqLworICAgcHJpdmF0ZSB2b2lkIHNldDFzdFN5c3RlbUlkKFN0cmluZyBzeXN0ZW1JZCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKworICAgICAgdGhpcy5fZmlyc3RFbnRpdHlTeXN0ZW1JZERpcmVjdG9yeSA9IGdldEZpbGVQYXRoKHN5c3RlbUlkKTsKKworICAgICAgbG9nLmRlYnVnKCJ0aGlzLl9maXJzdEVudGl0eVN5c3RlbUlkRGlyZWN0b3J5ID0gIgorICAgICAgICAgICAgICAgICsgdGhpcy5fZmlyc3RFbnRpdHlTeXN0ZW1JZERpcmVjdG9yeSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHJlc29sdmVFbnRpdHkKKyAgICAqCisgICAgKiBAcGFyYW0gcHVibGljSWQKKyAgICAqIEBwYXJhbSBzeXN0ZW1JZAorICAgICoKKyAgICAqLworICAgcHVibGljIElucHV0U291cmNlIHJlc29sdmVFbnRpdHkoU3RyaW5nIHB1YmxpY0lkLCBTdHJpbmcgc3lzdGVtSWQpIHsKKworICAgICAgdHJ5IHsKKyAgICAgICAgIGlmICghdGhpcy5fZmlyc3RFbnRpdHlSZXNvbHZlZCkgeworICAgICAgICAgICAgdGhpcy5zZXQxc3RTeXN0ZW1JZChzeXN0ZW1JZCk7CisgICAgICAgICB9CisKKyAgICAgICAgIHN5c3RlbUlkID0gdGhpcy5nZXRGaWxlTmFtZShzeXN0ZW1JZCk7CisKKyAgICAgICAgIGxvZy5kZWJ1ZygicHVibGljSWQ9XCIiICsgcHVibGljSWQgKyAiXCIgc3lzdGVtSWQ9XCIiICsgc3lzdGVtSWQKKyAgICAgICAgICAgICAgICAgICArICJcIiIpOworCisgICAgICAgICAvLyBJbnB1dFN0cmVhbSByZXN1bHQgPSB0aGlzLmdldElucHV0U3RyZWFtKHN5c3RlbUlkKTsKKyAgICAgICAgIC8vIHJldHVybiBuZXcgSW5wdXRTb3VyY2UocmVzdWx0KTsKKyAgICAgICAgIHJldHVybiBuZXcgSW5wdXRTb3VyY2UobmV3IEZpbGVJbnB1dFN0cmVhbShzeXN0ZW1JZCkpOworICAgICAgfSBjYXRjaCAoRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqIEZpZWxkIGFscmVhZHlJbml0aWFsaXplZCAqLworICAgc3RhdGljIGJvb2xlYW4gYWxyZWFkeUluaXRpYWxpemVkID0gZmFsc2U7CisKKyAgIC8qKiBGaWVsZCB6aXMgKi8KKyAgIHN0YXRpYyBqYXZhLnV0aWwuemlwLlppcElucHV0U3RyZWFtIHppcyA9IG51bGw7CisKKyAgIC8qKiBGaWVsZCB2ZWN0b3JzICovCisgICBzdGF0aWMgamF2YS51dGlsLkhhc2hNYXAgdmVjdG9ycyA9IG51bGw7CisKKyAgIC8qKgorICAgICogTWV0aG9kIGluaXQKKyAgICAqCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBpbml0KCkgeworCisgICAgICBTdHJpbmcgdGhpc0NsYXNzID0KKyAgICAgICAgICJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LnJlc291cmNlLlRlc3RWZWN0b3JSZXNvbHZlciI7CisgICAgICBTdHJpbmcgdGVzdFZlY3RvckZpbGUgPSAidGVzdHZlY3RvcnMuemlwIjsKKworICAgICAgaWYgKCFUZXN0VmVjdG9yUmVzb2x2ZXIuYWxyZWFkeUluaXRpYWxpemVkKSB7CisgICAgICAgICBUZXN0VmVjdG9yUmVzb2x2ZXIuYWxyZWFkeUluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAgICAgIFRlc3RWZWN0b3JSZXNvbHZlci52ZWN0b3JzID0gbmV3IGphdmEudXRpbC5IYXNoTWFwKDMwKTsKKworICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHppcyA9IG5ldyBqYXZhLnV0aWwuemlwCisgICAgICAgICAgICAgICAuWmlwSW5wdXRTdHJlYW0oQ2xhc3MuZm9yTmFtZSh0aGlzQ2xhc3MpCisgICAgICAgICAgICAgICAgICAuZ2V0UmVzb3VyY2VBc1N0cmVhbSh0ZXN0VmVjdG9yRmlsZSkpOworCisgICAgICAgICAgICBqYXZhLnV0aWwuemlwLlppcEVudHJ5IHplID0gbnVsbDsKKworICAgICAgICAgICAgd2hpbGUgKCh6ZSA9IHppcy5nZXROZXh0RW50cnkoKSkgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgaWYgKCF6ZS5pc0RpcmVjdG9yeSgpKSB7CisgICAgICAgICAgICAgICAgICBieXRlIGRhdGFbXSA9CisgICAgICAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5KYXZhVXRpbHMKKyAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRCeXRlc0Zyb21TdHJlYW0oemlzKTsKKworICAgICAgICAgICAgICAgICAgVGVzdFZlY3RvclJlc29sdmVyLnZlY3RvcnMucHV0KHplLmdldE5hbWUoKSwgZGF0YSk7CisgICAgICAgICAgICAgICAgICBsb2cuZGVidWcoIkNvbnRlbnRzIG9mICIgKyB0aGlzQ2xhc3MgKyAiLyIgKyB0ZXN0VmVjdG9yRmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiMiICsgemUuZ2V0TmFtZSgpICsgIiAiICsgZGF0YS5sZW5ndGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgYnl0ZXMiKTsKKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0gY2F0Y2ggKGphdmEubGFuZy5DbGFzc05vdEZvdW5kRXhjZXB0aW9uIGUpIHt9CisgICAgICAgICBjYXRjaCAoamF2YS5pby5JT0V4Y2VwdGlvbiBlKSB7fQorICAgICAgfQorICAgfQorCisgICBzdGF0aWMgeworICAgICAgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuSW5pdC5pbml0KCk7CisgICAgICBUZXN0VmVjdG9yUmVzb2x2ZXIuaW5pdCgpOworICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3Jlc291cmNlL3Rlc3R2ZWN0b3JzLnppcCBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9yZXNvdXJjZS90ZXN0dmVjdG9ycy56aXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVjZTJkNQotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9yZXNvdXJjZS90ZXN0dmVjdG9ycy56aXAKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3NpZ25hdHVyZS9BbGxUZXN0cy5qYXZhIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3NpZ25hdHVyZS9BbGxUZXN0cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMTE5N2IKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3Qvc2lnbmF0dXJlL0FsbFRlc3RzLmphdmEKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5zaWduYXR1cmU7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOworCitwdWJsaWMgY2xhc3MgQWxsVGVzdHMgeworCisgICAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkgeworCVRlc3RTdWl0ZSBzdWl0ZSA9IG5ldyBUZXN0U3VpdGUoCisJCQkiVGVzdCBmb3Igb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5zaWduYXR1cmUiKTsKKwkvLyRKVW5pdC1CRUdJTiQKKwlzdWl0ZS5hZGRUZXN0KENyZWF0ZVNpZ25hdHVyZVRlc3Quc3VpdGUoKSk7CisJc3VpdGUuYWRkVGVzdFN1aXRlKFg1MDlEYXRhVGVzdC5jbGFzcyk7CisJc3VpdGUuYWRkVGVzdFN1aXRlKFNpZ25hdHVyZVRlc3QuY2xhc3MpOworCXN1aXRlLmFkZFRlc3RTdWl0ZShYbWxTZWNUZXN0LmNsYXNzKTsKKwlzdWl0ZS5hZGRUZXN0U3VpdGUoSW52YWxpZEtleVRlc3QuY2xhc3MpOworCXN1aXRlLmFkZFRlc3QoWE1MU2lnbmF0dXJlSW5wdXRUZXN0LnN1aXRlKCkpOworCXN1aXRlLmFkZFRlc3QoVW5rbm93bkFsZ29TaWduYXR1cmVUZXN0LnN1aXRlKCkpOworCXN1aXRlLmFkZFRlc3QoS2V5VmFsdWVUZXN0LnN1aXRlKCkpOworCXN1aXRlLmFkZFRlc3QoUHJvY2Vzc2luZ0luc3RydWN0aW9uVGVzdC5zdWl0ZSgpKTsKKwlzdWl0ZS5hZGRUZXN0KEVDRFNBU2lnbmF0dXJlVGVzdC5zdWl0ZSgpKTsKKwlzdWl0ZS5hZGRUZXN0KE5vS2V5SW5mb1Rlc3Quc3VpdGUoKSk7CisJc3VpdGUuYWRkVGVzdChITUFDT3V0cHV0TGVuZ3RoVGVzdC5zdWl0ZSgpKTsKKwkvLyRKVW5pdC1FTkQkCisJcmV0dXJuIHN1aXRlOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9zaWduYXR1cmUvQ3JlYXRlU2lnbmF0dXJlVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3NpZ25hdHVyZS9DcmVhdGVTaWduYXR1cmVUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzgwMWIwZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9zaWduYXR1cmUvQ3JlYXRlU2lnbmF0dXJlVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjY0IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LnNpZ25hdHVyZTsKKworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5zZWN1cml0eS5LZXlQYWlyOworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5UGFpckdlbmVyYXRvcjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LktleVN0b3JlOworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHJpdmF0ZUtleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlB1YmxpY0tleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYWxnb3JpdGhtcy5TaWduYXR1cmVBbGdvcml0aG07CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5DYW5vbmljYWxpemVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuS2V5SW5mbzsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuT2JqZWN0Q29udGFpbmVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QuVGVzdFV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLnBhcmFtcy5YUGF0aENvbnRhaW5lcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5YTUxVdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQVBJOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7CisKKy8qKgorICogVGVzdHMgdGhhdCBjcmVhdGUgc2lnbmF0dXJlcy4KKyAqCisgKiBAYXV0aG9yIFNlYW4gTXVsbGFuCisgKi8KK3B1YmxpYyBjbGFzcyBDcmVhdGVTaWduYXR1cmVUZXN0IGV4dGVuZHMgVGVzdENhc2UgeworCisgICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0KKyAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeS5nZXRMb2cKKwkgICAgKENyZWF0ZVNpZ25hdHVyZVRlc3QuY2xhc3MuZ2V0TmFtZSgpKTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBCQVNFRElSID0gU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIik7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNFUCA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiZmlsZS5zZXBhcmF0b3IiKTsKKworICAgIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBUZXN0U3VpdGUoQ3JlYXRlU2lnbmF0dXJlVGVzdC5jbGFzcyk7CisgICAgfQorCisgICAgcHVibGljIENyZWF0ZVNpZ25hdHVyZVRlc3QoU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgc3VwZXIobmFtZSk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBTdHJpbmdbXSB0ZXN0Q2FzZU5hbWUgPSB7ICItbm9sb2FkaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVTaWduYXR1cmVUZXN0LmNsYXNzLmdldE5hbWUoKSB9OworCisgICAgICAgIGp1bml0LnRleHR1aS5UZXN0UnVubmVyLm1haW4odGVzdENhc2VOYW1lKTsKKyAgICB9CisKKyAgICAKKyAgICAvKioKKyAgICAgKiBUZXN0IGZvciBidWcgMzYwNDQgLSBDYW5vbmljYWxpemluZyBhbiBlbXB0eSBub2RlLXNldCB0aHJvd3MgYW4gCisgICAgICogQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHRlc3RFbXB0eU5vZGVTZXQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgICBEb2N1bWVudCBkb2MgPSBkYi5uZXdEb2N1bWVudCgpOworICAgICAgICBFbGVtZW50IGVudmVsb3BlID0gZG9jLmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy51c3BzLmdvdi8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW52ZWxvcGUiKTsKKyAgICAgICAgZW52ZWxvcGUuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJcbiIpKTsKKyAgICAgICAgZG9jLmFwcGVuZENoaWxkKGVudmVsb3BlKTsKKworICAgICAgICBYTUxTaWduYXR1cmUgc2lnID0gCisJICAgIG5ldyBYTUxTaWduYXR1cmUoZG9jLCBudWxsLCBYTUxTaWduYXR1cmUuQUxHT19JRF9TSUdOQVRVUkVfRFNBKTsKKworICAgICAgICBPYmplY3RDb250YWluZXIgb2JqZWN0MSA9IG5ldyBPYmplY3RDb250YWluZXIoZG9jKTsKKyAgICAgICAgb2JqZWN0MS5zZXRJZCgib2JqZWN0LTEiKTsKKyAgICAgICAgb2JqZWN0MS5zZXRNaW1lVHlwZSgidGV4dC9wbGFpbiIpOworICAgICAgICBzaWcuYXBwZW5kT2JqZWN0KG9iamVjdDEpOworCisgICAgICAgIE9iamVjdENvbnRhaW5lciBvYmplY3QyID0gbmV3IE9iamVjdENvbnRhaW5lcihkb2MpOworCisgICAgICAgIG9iamVjdDIuc2V0SWQoIm9iamVjdC0yIik7CisgICAgICAgIG9iamVjdDIuc2V0TWltZVR5cGUoInRleHQvcGxhaW4iKTsKKyAgICAgICAgb2JqZWN0Mi5zZXRFbmNvZGluZygiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2Jhc2U2NCIpOworICAgICAgICBvYmplY3QyLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiU1NCaGJTQjBhR1VnZEdWNGRDND0iKSk7CisgICAgICAgIHNpZy5hcHBlbmRPYmplY3Qob2JqZWN0Mik7CisKKyAgICAgICAgVHJhbnNmb3JtcyB0cmFuc2Zvcm1zID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKyAgICAgICAgWFBhdGhDb250YWluZXIgeHBhdGhDID0gbmV3IFhQYXRoQ29udGFpbmVyKGRvYyk7CisKKyAgICAgICAgeHBhdGhDLnNldFhQYXRoKCJzZWxmOjp0ZXh0KCkiKTsKKyAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fWFBBVEgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhwYXRoQy5nZXRFbGVtZW50UGx1c1JldHVybnMoKSk7CisgICAgICAgIHNpZy5hZGREb2N1bWVudCgiI29iamVjdC0xIiwgdHJhbnNmb3JtcywKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbnN0YW50cy5BTEdPX0lEX0RJR0VTVF9TSEExLCBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNPYmplY3QiKTsKKworICAgICAgICBLZXlTdG9yZSBrcyA9IEtleVN0b3JlLmdldEluc3RhbmNlKCJKS1MiKTsKKwlGaWxlSW5wdXRTdHJlYW0gZmlzID0gbnVsbDsKKyAgICAgICAgaWYgKEJBU0VESVIgIT0gbnVsbCAmJiAhIiIuZXF1YWxzKEJBU0VESVIpKSB7CisgICAgICAgICAgICBmaXMgPSBuZXcgRmlsZUlucHV0U3RyZWFtKEJBU0VESVIgKyBTRVAgKyAKKwkJICAiZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL2lucHV0L2tleXN0b3JlLmprcyIpOworCX0gZWxzZSB7CisgICAgICAgICAgICBmaXMgPSBuZXcgRmlsZUlucHV0U3RyZWFtKAorCQkgICJkYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvaW5wdXQva2V5c3RvcmUuamtzIik7CisJfQorICAgICAgICBrcy5sb2FkKGZpcywgInhtbHNlY3VyaXR5Ii50b0NoYXJBcnJheSgpKTsKKyAgICAgICAgUHJpdmF0ZUtleSBwcml2YXRlS2V5ID0gKFByaXZhdGVLZXkpIGtzLmdldEtleSgidGVzdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieG1sc2VjdXJpdHkiLnRvQ2hhckFycmF5KCkpOworCisJc2lnLnNpZ24ocHJpdmF0ZUtleSk7CisgICAgfQorICAgIAorICAgIEtleVBhaXIga3AgPSBudWxsOyAgICAKKyAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXIgZGI7CisgICAgCisgICAgcHJvdGVjdGVkIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAJamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPSBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5CisgICAgICAgIC5uZXdJbnN0YW5jZSgpOworICAgIAlkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisgICAgCWRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOworICAgIAlvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTsKKyAgICAJa3A9S2V5UGFpckdlbmVyYXRvci5nZXRJbnN0YW5jZSgiUlNBIikuZ2VuS2V5UGFpcigpOworICAgIH0KKyAgICBwdWJsaWMgdm9pZCB0ZXN0T25lKCkgdGhyb3dzIEV4Y2VwdGlvbiB7ICAgICAgICAKKyAgICAgICAgZG9WZXJpZnkoZG9TaWduKCkpOyAKKyAgICAgICAgZG9WZXJpZnkoZG9TaWduKCkpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RUd28oKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlkb1NpZ25XaXRoQ2VydCgpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RXaXRoTlNQcmVmaXhEaXNhYmxlZCgpIHRocm93cyBFeGNlcHRpb24geworCVN0cmluZyBwcmVmaXggPSBDb25zdGFudHMuZ2V0U2lnbmF0dXJlU3BlY05TcHJlZml4KCk7CisJdHJ5IHsKKyAgICAgICAgICAgIENvbnN0YW50cy5zZXRTaWduYXR1cmVTcGVjTlNwcmVmaXgoIiIpOworICAgICAgICAgICAgZG9TaWduKCk7CisgICAgICAgICAgICBDb25zdGFudHMuc2V0U2lnbmF0dXJlU3BlY05TcHJlZml4KHByZWZpeCk7CisJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIENvbnN0YW50cy5zZXRTaWduYXR1cmVTcGVjTlNwcmVmaXgocHJlZml4KTsKKwkgICAgdGhyb3cgZTsKKwl9CisgICAgfQorCisgICAgU3RyaW5nIGRvU2lnbigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBQcml2YXRlS2V5IHByaXZhdGVLZXkgPSBrcC5nZXRQcml2YXRlKCk7CisgICAgICAgIG9yZy53M2MuZG9tLkRvY3VtZW50IGRvYyA9IGRiLm5ld0RvY3VtZW50KCk7CisgICAgICAgIGRvYy5hcHBlbmRDaGlsZChkb2MuY3JlYXRlQ29tbWVudCgiIENvbW1lbnQgYmVmb3JlICIpKTsKKyAgICAgICAgRWxlbWVudCByb290ID0gZG9jLmNyZWF0ZUVsZW1lbnROUygiIiwKKyAgICAgICAgICAgICAgICAiUm9vdEVsZW1lbnQiKTsKKworICAgICAgICBkb2MuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJTb21lIHNpbXBsZSB0ZXh0XG4iKSk7CisKKyAgICAgICAgRWxlbWVudCBjYW5vbkVsZW0gPSBYTUxVdGlscy5jcmVhdGVFbGVtZW50SW5TaWduYXR1cmVTcGFjZShkb2MsCisgICAgICAgICAgICAgICAgQ29uc3RhbnRzLl9UQUdfQ0FOT05JQ0FMSVpBVElPTk1FVEhPRCk7CisgICAgICAgIGNhbm9uRWxlbS5zZXRBdHRyaWJ1dGVOUyhudWxsLCBDb25zdGFudHMuX0FUVF9BTEdPUklUSE0sCisgICAgICAgICAgICAgICAgQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fRVhDTF9PTUlUX0NPTU1FTlRTKTsKKworICAgICAgICBTaWduYXR1cmVBbGdvcml0aG0gc2lnbmF0dXJlQWxnb3JpdGhtID0gbmV3IFNpZ25hdHVyZUFsZ29yaXRobShkb2MsCisgICAgICAgICAgICAgICAgWE1MU2lnbmF0dXJlLkFMR09fSURfU0lHTkFUVVJFX1JTQV9TSEExKTsKKyAgICAgICAgWE1MU2lnbmF0dXJlIHNpZyA9IG5ldyBYTUxTaWduYXR1cmUoZG9jLCBudWxsLCBzaWduYXR1cmVBbGdvcml0aG0KKyAgICAgICAgICAgICAgICAuZ2V0RWxlbWVudCgpLCBjYW5vbkVsZW0pOworCisgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoc2lnLmdldEVsZW1lbnQoKSk7CisgICAgICAgIGRvYy5hcHBlbmRDaGlsZChkb2MuY3JlYXRlQ29tbWVudCgiIENvbW1lbnQgYWZ0ZXIgIikpOworICAgICAgICBUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9FTlZFTE9QRURfU0lHTkFUVVJFKTsKKyAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fQzE0Tl9XSVRIX0NPTU1FTlRTKTsKKyAgICAgICAgc2lnLmFkZERvY3VtZW50KCIiLCB0cmFuc2Zvcm1zLCBDb25zdGFudHMuQUxHT19JRF9ESUdFU1RfU0hBMSk7CisKKyAgICAgICAgc2lnLmFkZEtleUluZm8oa3AuZ2V0UHVibGljKCkpOworICAgICAgICBzaWcuc2lnbihwcml2YXRlS2V5KTsKKworICAgICAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gYm9zID0gbmV3IEJ5dGVBcnJheU91dHB1dFN0cmVhbSgpOworCisgICAgICAgIFhNTFV0aWxzLm91dHB1dERPTWMxNG5XaXRoQ29tbWVudHMoZG9jLCBib3MpOworICAgICAgICByZXR1cm4gbmV3IFN0cmluZyhib3MudG9CeXRlQXJyYXkoKSk7CisgICAgfQorCisgICAgU3RyaW5nIGRvU2lnbldpdGhDZXJ0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJS2V5U3RvcmUga3MgPSBLZXlTdG9yZS5nZXRJbnN0YW5jZSgiSktTIik7CisJRmlsZUlucHV0U3RyZWFtIGZpcyA9IG51bGw7CisgICAgICAgIGlmIChCQVNFRElSICE9IG51bGwgJiYgISIiLmVxdWFscyhCQVNFRElSKSkgeworICAgICAgICAgICAgZmlzID0gbmV3IEZpbGVJbnB1dFN0cmVhbShCQVNFRElSICsgU0VQICsgCisJCSAgImRhdGEvdGVzdC5qa3MiKTsKKwl9IGVsc2UgeworICAgICAgICAgICAgZmlzID0gbmV3IEZpbGVJbnB1dFN0cmVhbSgiZGF0YS90ZXN0LmprcyIpOworCX0KKyAgICAgICAga3MubG9hZChmaXMsICJjaGFuZ2VpdCIudG9DaGFyQXJyYXkoKSk7CisgICAgICAgIFByaXZhdGVLZXkgcHJpdmF0ZUtleSA9IChQcml2YXRlS2V5KSBrcy5nZXRLZXkoIm11bGxhbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhbmdlaXQiLnRvQ2hhckFycmF5KCkpOworICAgICAgICBvcmcudzNjLmRvbS5Eb2N1bWVudCBkb2MgPSBkYi5uZXdEb2N1bWVudCgpOworICAgICAgICBYNTA5Q2VydGlmaWNhdGUgc2lnbmluZ0NlcnQgPSAoWDUwOUNlcnRpZmljYXRlKSBrcy5nZXRDZXJ0aWZpY2F0ZSgibXVsbGFuIik7CisgICAgICAgIGRvYy5hcHBlbmRDaGlsZChkb2MuY3JlYXRlQ29tbWVudCgiIENvbW1lbnQgYmVmb3JlICIpKTsKKyAgICAgICAgRWxlbWVudCByb290ID0gZG9jLmNyZWF0ZUVsZW1lbnROUygiIiwKKyAgICAgICAgICAgICAgICAiUm9vdEVsZW1lbnQiKTsKKworICAgICAgICBkb2MuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJTb21lIHNpbXBsZSB0ZXh0XG4iKSk7CisKKyAgICAgICAgRWxlbWVudCBjYW5vbkVsZW0gPSBYTUxVdGlscy5jcmVhdGVFbGVtZW50SW5TaWduYXR1cmVTcGFjZShkb2MsCisgICAgICAgICAgICAgICAgQ29uc3RhbnRzLl9UQUdfQ0FOT05JQ0FMSVpBVElPTk1FVEhPRCk7CisgICAgICAgIGNhbm9uRWxlbS5zZXRBdHRyaWJ1dGVOUyhudWxsLCBDb25zdGFudHMuX0FUVF9BTEdPUklUSE0sCisgICAgICAgICAgICAgICAgQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fRVhDTF9PTUlUX0NPTU1FTlRTKTsKKworICAgICAgICBTaWduYXR1cmVBbGdvcml0aG0gc2lnbmF0dXJlQWxnb3JpdGhtID0gbmV3IFNpZ25hdHVyZUFsZ29yaXRobShkb2MsCisgICAgICAgICAgICAgICAgWE1MU2lnbmF0dXJlLkFMR09fSURfU0lHTkFUVVJFX0RTQSk7CisgICAgICAgIFhNTFNpZ25hdHVyZSBzaWcgPSBuZXcgWE1MU2lnbmF0dXJlKGRvYywgbnVsbCwgc2lnbmF0dXJlQWxnb3JpdGhtCisgICAgICAgICAgICAgICAgLmdldEVsZW1lbnQoKSwgY2Fub25FbGVtKTsKKworICAgICAgICByb290LmFwcGVuZENoaWxkKHNpZy5nZXRFbGVtZW50KCkpOworICAgICAgICBkb2MuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZUNvbW1lbnQoIiBDb21tZW50IGFmdGVyICIpKTsKKyAgICAgICAgVHJhbnNmb3JtcyB0cmFuc2Zvcm1zID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKyAgICAgICAgdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fRU5WRUxPUEVEX1NJR05BVFVSRSk7CisgICAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX0MxNE5fV0lUSF9DT01NRU5UUyk7CisgICAgICAgIHNpZy5hZGREb2N1bWVudCgiIiwgdHJhbnNmb3JtcywgQ29uc3RhbnRzLkFMR09fSURfRElHRVNUX1NIQTEpOworCisgICAgICAgIHNpZy5hZGRLZXlJbmZvKHNpZ25pbmdDZXJ0KTsKKyAgICAgICAgc2lnLnNpZ24ocHJpdmF0ZUtleSk7CisJWDUwOUNlcnRpZmljYXRlIGNlcnQgPSBzaWcuZ2V0S2V5SW5mbygpLmdldFg1MDlDZXJ0aWZpY2F0ZSgpOworCXNpZy5jaGVja1NpZ25hdHVyZVZhbHVlKGNlcnQuZ2V0UHVibGljS2V5KCkpOworICAgICAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gYm9zID0gbmV3IEJ5dGVBcnJheU91dHB1dFN0cmVhbSgpOworCisgICAgICAgIFhNTFV0aWxzLm91dHB1dERPTWMxNG5XaXRoQ29tbWVudHMoZG9jLCBib3MpOworICAgICAgICByZXR1cm4gbmV3IFN0cmluZyhib3MudG9CeXRlQXJyYXkoKSk7CisgICAgfQorCisgICAgdm9pZCBkb1ZlcmlmeShTdHJpbmcgc2lnbmVkWE1MKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgb3JnLnczYy5kb20uRG9jdW1lbnQgZG9jID0gZGIucGFyc2UobmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKHNpZ25lZFhNTC5nZXRCeXRlcygpKSk7CisgICAgICAgIEVsZW1lbnQgbnNjb250ZXh0ID0gVGVzdFV0aWxzLmNyZWF0ZURTY3R4KGRvYywgImRzIixDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TKTsKKyAgICAgICAgRWxlbWVudCBzaWdFbGVtZW50ID0gKEVsZW1lbnQpIFhQYXRoQVBJLnNlbGVjdFNpbmdsZU5vZGUoZG9jLCIvL2RzOlNpZ25hdHVyZVsxXSIsIG5zY29udGV4dCk7CisgICAgICAgIFhNTFNpZ25hdHVyZSBzaWduYXR1cmUgPSBuZXcgWE1MU2lnbmF0dXJlKHNpZ0VsZW1lbnQsICIiKTsKKyAgICAgICAgS2V5SW5mbyBraSA9IHNpZ25hdHVyZS5nZXRLZXlJbmZvKCk7CisKKyAgICAgICAgaWYgKGtpID09IG51bGwpIHsKKyAgICAgICAgCXRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJObyBrZXlpbmZvIik7CisgICAgICAgIH0KKyAgICAgICAgUHVibGljS2V5IHBrID0gc2lnbmF0dXJlLmdldEtleUluZm8oKS5nZXRQdWJsaWNLZXkoKTsKKworICAgICAgICBpZiAocGsgPT0gbnVsbCkgeworICAgICAgICAJdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIk5vIHB1YmxpYyBrZXkiKTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnRUcnVlKHNpZ25hdHVyZS5jaGVja1NpZ25hdHVyZVZhbHVlKHBrKSApOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9zaWduYXR1cmUvRUNEU0FTaWduYXR1cmVUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3Qvc2lnbmF0dXJlL0VDRFNBU2lnbmF0dXJlVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmM2YyNGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3Qvc2lnbmF0dXJlL0VDRFNBU2lnbmF0dXJlVGVzdC5qYXZhCkBAIC0wLDAgKzEsMzIxIEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3Quc2lnbmF0dXJlOworCitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5Db25zdHJ1Y3RvcjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LktleVN0b3JlOworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHJpdmF0ZUtleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlNlY3VyaXR5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGU7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmFsZ29yaXRobXMuU2lnbmF0dXJlQWxnb3JpdGhtOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uQ2Fub25pY2FsaXplcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5rZXlzLktleUluZm87CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybXM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueHBhdGguWFBhdGhBUEk7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKKworLyoqCisgKiBUZXN0cyB0aGF0IGNyZWF0ZXMgYW5kIHZlcmlmaWVzIEVDRFNBIHNpZ25hdHVyZXMuCisgKgorICogQGF1dGhvciBXb2xmZ2FuZyBHbGFzCisgKi8KK3B1YmxpYyBjbGFzcyBFQ0RTQVNpZ25hdHVyZVRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgICAvKioge0BsaW5rIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nfSBsb2dnaW5nIGZhY2lsaXR5ICovCisgICAgcHJpdmF0ZSBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9CisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKEVDRFNBU2lnbmF0dXJlVGVzdC5jbGFzcy5nZXROYW1lKCkpOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEJBU0VESVIgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImJhc2VkaXIiKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0VQID0gU3lzdGVtLmdldFByb3BlcnR5KCJmaWxlLnNlcGFyYXRvciIpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBFQ0RTQV9KS1MgPSAKKyAgICAgICAgImRhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9pbnB1dC9lY2RzYS5qa3MiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBFQ0RTQV9KS1NfUEFTU1dPUkQgPSAic2VjdXJpdHkiOworICAgIAorICAgIHByaXZhdGUgS2V5U3RvcmUga2V5U3RvcmU7CisgICAgCisgICAgcHJpdmF0ZSBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXIgZGI7CisKKyAgICBwcml2YXRlIEZpbGUgbWFrZURhdGFGaWxlKFN0cmluZyByZWxQYXRoKSB7CisgICAgICAgIGlmIChCQVNFRElSICE9IG51bGwgJiYgISIiLmVxdWFscyhCQVNFRElSKSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlKEJBU0VESVIgKyBTRVAgKyByZWxQYXRoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZShyZWxQYXRoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBUZXN0U3VpdGUoRUNEU0FTaWduYXR1cmVUZXN0LmNsYXNzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgRUNEU0FTaWduYXR1cmVUZXN0KFN0cmluZyBuYW1lKSB7CisgICAgICAgIHN1cGVyKG5hbWUpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgU3RyaW5nW10gdGVzdENhc2VOYW1lID0geyItbm9sb2FkaW5nIiwgRUNEU0FTaWduYXR1cmVUZXN0LmNsYXNzLmdldE5hbWUoKX07CisgICAgICAgIGp1bml0LnRleHR1aS5UZXN0UnVubmVyLm1haW4odGVzdENhc2VOYW1lKTsKKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgLy8KKyAgICAgICAgLy8gSWYgdGhlIEJvdW5jeUNhc3RsZSBwcm92aWRlciBpcyBub3QgaW5zdGFsbGVkLCB0aGVuIHRyeSB0byBsb2FkIGl0IAorICAgICAgICAvLyB2aWEgcmVmbGVjdGlvbi4gSWYgaXQgaXMgbm90IGF2YWlsYWJsZSwgdGhlbiBza2lwIHRoaXMgdGVzdCBhcyBpdCBpcworICAgICAgICAvLyByZXF1aXJlZCBmb3IgZWxsaXB0aWMgY3VydmVzCisgICAgICAgIC8vCisgICAgICAgIGlmIChTZWN1cml0eS5nZXRQcm92aWRlcigiQkMiKSA9PSBudWxsKSB7CisgICAgICAgICAgICBDb25zdHJ1Y3RvciBjb25zID0gbnVsbDsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgQ2xhc3MgYyA9IENsYXNzLmZvck5hbWUoIm9yZy5ib3VuY3ljYXN0bGUuamNlLnByb3ZpZGVyLkJvdW5jeUNhc3RsZVByb3ZpZGVyIik7CisgICAgICAgICAgICAgICAgY29ucyA9IGMuZ2V0Q29uc3RydWN0b3IobmV3IENsYXNzW10ge30pOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAvL2lnbm9yZQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNvbnMgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIC8vIEJvdW5jeUNhc3RsZSBpcyBub3QgYXZhaWxhYmxlIHNvIGp1c3QgcmV0dXJuCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBTZWN1cml0eS5hZGRQcm92aWRlcigoamF2YS5zZWN1cml0eS5Qcm92aWRlciljb25zLm5ld0luc3RhbmNlKG5ldyBPYmplY3RbXXt9KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9IAorICAgICAgICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworICAgIAlkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisgICAgICAgIGxvZy5pbmZvKCJkYmYuaXNJZ25vcmluZ0NvbW1lbnRzKCk9IiArIGRiZi5pc0lnbm9yaW5nQ29tbWVudHMoKSk7CisgICAgICAgIGxvZy5pbmZvKCJkYmYuaXNJZ25vcmluZ0VsZW1lbnRDb250ZW50V2hpdGVzcGFjZSgpPSIgKyBkYmYuaXNJZ25vcmluZ0VsZW1lbnRDb250ZW50V2hpdGVzcGFjZSgpKTsKKyAgICAgICAgCisgICAgICAgIFN0cmluZyBpZCA9ICJodHRwOi8vYXBhY2hlLm9yZy94bWwvcHJvcGVydGllcy9kb20vZG9jdW1lbnQtY2xhc3MtbmFtZSI7CisgICAgICAgCisgICAgICAgIGRiZi5zZXRBdHRyaWJ1dGUoaWQsIEluZGV4ZWREb2N1bWVudC5jbGFzcy5nZXROYW1lKCkpOworICAgICAgICAKKyAgICAJZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgCW9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQuaW5pdCgpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCB0ZXN0T25lKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGlmIChTZWN1cml0eS5nZXRQcm92aWRlcigiQkMiKSA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGtleVN0b3JlID0gS2V5U3RvcmUuZ2V0SW5zdGFuY2UoIkpLUyIpOworICAgICAgICBrZXlTdG9yZS5sb2FkKAorICAgICAgICAgICAgbmV3IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtKEVDRFNBX0pLUyksIAorICAgICAgICAgICAgRUNEU0FfSktTX1BBU1NXT1JELnRvQ2hhckFycmF5KCkKKyAgICAgICAgKTsKKyAgICAgICAgCisgICAgICAgIGRvVmVyaWZ5KGRvU2lnbigpKTsgCisgICAgICAgIGRvVmVyaWZ5KGRvU2lnbigpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0VHdvKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGlmIChTZWN1cml0eS5nZXRQcm92aWRlcigiQkMiKSA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEZpbGUgZmlsZSA9IAorICAgICAgICAgICAgbWFrZURhdGFGaWxlKCJkYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvaW5wdXQvZWNkc2FTaWduYXR1cmUueG1sIik7CisgICAgICAgIElucHV0U3RyZWFtIGlzID0gbmV3IEZpbGVJbnB1dFN0cmVhbShmaWxlKTsKKyAgICAgICAgCisgICAgICAgIGRvVmVyaWZ5KGlzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0VGhyZWUoKSAgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGlmIChTZWN1cml0eS5nZXRQcm92aWRlcigiQkMiKSA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEZpbGUgZmlsZSA9IG1ha2VEYXRhRmlsZSgiZGF0YS9hdC9idWVyZ2Vya2FydGUvdGVzdHJlc3AueG1sIik7CisgICAgICAgIElucHV0U3RyZWFtIGlzID0gbmV3IEZpbGVJbnB1dFN0cmVhbShmaWxlKTsKKyAgICAgICAgCisgICAgICAgIGRvVmVyaWZ5KGlzKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBieXRlW10gZG9TaWduKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFByaXZhdGVLZXkgcHJpdmF0ZUtleSA9IAorICAgICAgICAgICAgKFByaXZhdGVLZXkpa2V5U3RvcmUuZ2V0S2V5KCJFQ0RTQSIsIEVDRFNBX0pLU19QQVNTV09SRC50b0NoYXJBcnJheSgpKTsKKyAgICAgICAgb3JnLnczYy5kb20uRG9jdW1lbnQgZG9jID0gZGIubmV3RG9jdW1lbnQoKTsKKyAgICAgICAgZG9jLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVDb21tZW50KCIgQ29tbWVudCBiZWZvcmUgIikpOworICAgICAgICBFbGVtZW50IHJvb3QgPSBkb2MuY3JlYXRlRWxlbWVudE5TKCIiLCAiUm9vdEVsZW1lbnQiKTsKKworICAgICAgICBkb2MuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKCJTb21lIHNpbXBsZSB0ZXh0XG4iKSk7CisKKyAgICAgICAgRWxlbWVudCBjYW5vbkVsZW0gPSBYTUxVdGlscy5jcmVhdGVFbGVtZW50SW5TaWduYXR1cmVTcGFjZShkb2MsCisgICAgICAgICAgICAgICAgQ29uc3RhbnRzLl9UQUdfQ0FOT05JQ0FMSVpBVElPTk1FVEhPRCk7CisgICAgICAgIGNhbm9uRWxlbS5zZXRBdHRyaWJ1dGVOUyhudWxsLCBDb25zdGFudHMuX0FUVF9BTEdPUklUSE0sCisgICAgICAgICAgICAgICAgQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fRVhDTF9PTUlUX0NPTU1FTlRTKTsKKworICAgICAgICBTaWduYXR1cmVBbGdvcml0aG0gc2lnbmF0dXJlQWxnb3JpdGhtID0gbmV3IFNpZ25hdHVyZUFsZ29yaXRobShkb2MsCisgICAgICAgICAgICAgICAgWE1MU2lnbmF0dXJlLkFMR09fSURfU0lHTkFUVVJFX0VDRFNBX1NIQTEpOworICAgICAgICBYTUxTaWduYXR1cmUgc2lnID0gbmV3IFhNTFNpZ25hdHVyZShkb2MsIG51bGwsIHNpZ25hdHVyZUFsZ29yaXRobQorICAgICAgICAgICAgICAgIC5nZXRFbGVtZW50KCksIGNhbm9uRWxlbSk7CisKKyAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChzaWcuZ2V0RWxlbWVudCgpKTsKKyAgICAgICAgZG9jLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVDb21tZW50KCIgQ29tbWVudCBhZnRlciAiKSk7CisgICAgICAgIFRyYW5zZm9ybXMgdHJhbnNmb3JtcyA9IG5ldyBUcmFuc2Zvcm1zKGRvYyk7CisgICAgICAgIHRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX0VOVkVMT1BFRF9TSUdOQVRVUkUpOworICAgICAgICB0cmFuc2Zvcm1zLmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9DMTROX1dJVEhfQ09NTUVOVFMpOworICAgICAgICBzaWcuYWRkRG9jdW1lbnQoIiIsIHRyYW5zZm9ybXMsIENvbnN0YW50cy5BTEdPX0lEX0RJR0VTVF9TSEExKTsKKworICAgICAgICBYNTA5Q2VydGlmaWNhdGUgeDUwOSA9IChYNTA5Q2VydGlmaWNhdGUpa2V5U3RvcmUuZ2V0Q2VydGlmaWNhdGUoIkVDRFNBIik7CisgICAgICAgIHNpZy5hZGRLZXlJbmZvKHg1MDkpOworICAgICAgICBzaWcuc2lnbihwcml2YXRlS2V5KTsKKworICAgICAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gYm9zID0gbmV3IEJ5dGVBcnJheU91dHB1dFN0cmVhbSgpOworCisgICAgICAgIFhNTFV0aWxzLm91dHB1dERPTWMxNG5XaXRoQ29tbWVudHMoZG9jLCBib3MpOworICAgICAgICByZXR1cm4gYm9zLnRvQnl0ZUFycmF5KCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGRvVmVyaWZ5KGJ5dGVbXSBzaWduZWRYbWwpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBkb1ZlcmlmeShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oc2lnbmVkWG1sKSk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBkb1ZlcmlmeShJbnB1dFN0cmVhbSBpcykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG9yZy53M2MuZG9tLkRvY3VtZW50IGRvYyA9IHRoaXMuZGIucGFyc2UoaXMpOworICAgICAgICBFbGVtZW50IG5zY29udGV4dCA9IFhNTFV0aWxzLmNyZWF0ZURTY3R4KGRvYywgImRzIixDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TKTsKKyAgICAgICAgRWxlbWVudCBzaWdFbGVtZW50ID0gKEVsZW1lbnQpIFhQYXRoQVBJLnNlbGVjdFNpbmdsZU5vZGUoZG9jLCIvL2RzOlNpZ25hdHVyZVsxXSIsIG5zY29udGV4dCk7CisgICAgICAgIFhNTFNpZ25hdHVyZSBzaWduYXR1cmUgPSBuZXcgWE1MU2lnbmF0dXJlKHNpZ0VsZW1lbnQsICIiKTsKKworICAgICAgICBzaWduYXR1cmUuYWRkUmVzb3VyY2VSZXNvbHZlcihuZXcgWFBvaW50ZXJSZXNvdXJjZVJlc29sdmVyKHNpZ0VsZW1lbnQpKTsKKworICAgICAgICBLZXlJbmZvIGtpID0gc2lnbmF0dXJlLmdldEtleUluZm8oKTsKKworICAgICAgICBpZiAoa2kgPT0gbnVsbCkgeworICAgICAgICAJdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIk5vIGtleWluZm8iKTsKKyAgICAgICAgfQorICAgICAgICBYNTA5Q2VydGlmaWNhdGUgY2VydCA9IHNpZ25hdHVyZS5nZXRLZXlJbmZvKCkuZ2V0WDUwOUNlcnRpZmljYXRlKCk7CisKKyAgICAgICAgaWYgKGNlcnQgPT0gbnVsbCkgeworICAgICAgICAJdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIk5vIGNlcnRpZmljYXRlIik7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0VHJ1ZShzaWduYXR1cmUuY2hlY2tTaWduYXR1cmVWYWx1ZShjZXJ0KSApOworICAgIH0KKyAgICAgCisgICAgLyoqCisgICAgICogRE8gTk9UIERFTEVURSBUSElTIENPTU1FTlRFRCBPVVQgTUVUSE9EIQorICAgICAqIAorICAgICAqIFRoZSByZWFzb24gdGhpcyBtZXRob2QgaXMgY29tbWVudGVkIG91dCBpcyB0byBhdm9pZCBpbnRyb2R1Y2luZyBleHBsaWNpdCAKKyAgICAgKiBCb3VuY3lDYXN0bGUgZGVwZW5kZW5jaWVzLgorICAgICAqIAorICAgICAqIENyZWF0ZSBhbiBYLjUwOSBDZXJ0aWZpY2F0ZSBhbmQgYXNzb2NpYXRlZCBwcml2YXRlIGtleSB1c2luZyB0aGUgRWxsaXB0aWMgQ3VydmUKKyAgICAgKiBEU0EgYWxnb3JpdGhtLCBhbmQgc3RvcmUgaW4gYSBLZXlTdG9yZS4gVGhpcyBtZXRob2Qgd2FzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIAorICAgICAqIGtleXN0b3JlIHVzZWQgZm9yIHRoaXMgdGVzdCAoImRhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9pbnB1dC9lY2RzYS5qa3MiKS4KKyAgICAgKgorICAgIHByaXZhdGUgc3RhdGljIHZvaWQgc2V0VXBLZXlBbmRDZXJ0aWZpY2F0ZSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICAKKyAgICAgICAgamF2YS5zZWN1cml0eS5LZXlQYWlyR2VuZXJhdG9yIGtwZyA9IAorICAgICAgICAgICAgamF2YS5zZWN1cml0eS5LZXlQYWlyR2VuZXJhdG9yLmdldEluc3RhbmNlKCJFQ0RTQSIpOworICAgICAgICAgCisgICAgICAgIGphdmEubWF0aC5CaWdJbnRlZ2VyIG1vZF9wID0gCisgICAgICAgICAgICBuZXcgamF2YS5tYXRoLkJpZ0ludGVnZXIoIjExNTc5MjA4OTIzNzMxNjE5NTQyMzU3MDk4NTAwODY4NzkwNzg1MzI2OTk4NDY2NTY0MDU2NDAzOTQ1NzU4NDAwNzkxMzEyOTYzOTMxOSIpOworICAgICAgICBqYXZhLm1hdGguQmlnSW50ZWdlciBtb2RfcSA9IAorICAgICAgICAgICAgbmV3IGphdmEubWF0aC5CaWdJbnRlZ2VyKCIxMTU3OTIwODkyMzczMTYxOTU0MjM1NzA5ODUwMDg2ODc5MDc4NTMwNzM3NjI5MDg0OTkyNDMyMjUzNzgxNTU4MDUwNzkwNjg4NTAzMjMiKTsKKworICAgICAgICBvcmcuYm91bmN5Y2FzdGxlLm1hdGguZWMuRUNDdXJ2ZS5GcCBjdXJ2ZSA9IAorICAgICAgICAgICAgbmV3IG9yZy5ib3VuY3ljYXN0bGUubWF0aC5lYy5FQ0N1cnZlLkZwKAorICAgICAgICAgICAgICAgICAgICBtb2RfcCwgLy8gcAorICAgICAgICAgICAgICAgICAgICBuZXcgamF2YS5tYXRoLkJpZ0ludGVnZXIoIjExNTc5MjA4OTIzNzMxNjE5NTQyMzU3MDk4NTAwODY4NzkwNzg1MzI2OTk4NDY2NTY0MDU2NDAzOTQ1NzU4NDAwNzkxMzEyOTYzOTMxNiIpLCAvLyBhCisgICAgICAgICAgICAgICAgICAgIG5ldyBqYXZhLm1hdGguQmlnSW50ZWdlcigiMTY2IikKKyAgICAgICAgICAgICk7IC8vIGIKKworICAgICAgICBqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyBzcGVjID0gCisgICAgICAgICAgICBuZXcgb3JnLmJvdW5jeWNhc3RsZS5qY2Uuc3BlYy5FQ1BhcmFtZXRlclNwZWMoCisgICAgICAgICAgICAgICAgICAgIGN1cnZlLAorICAgICAgICAgICAgICAgICAgICBuZXcgb3JnLmJvdW5jeWNhc3RsZS5tYXRoLmVjLkVDUG9pbnQuRnAoY3VydmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IG9yZy5ib3VuY3ljYXN0bGUubWF0aC5lYy5FQ0ZpZWxkRWxlbWVudC5GcCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VydmUuZ2V0USgpLCBuZXcgamF2YS5tYXRoLkJpZ0ludGVnZXIoIjEiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICksIC8vIHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgb3JnLmJvdW5jeWNhc3RsZS5tYXRoLmVjLkVDRmllbGRFbGVtZW50LkZwKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJ2ZS5nZXRRKCksIG5ldyBqYXZhLm1hdGguQmlnSW50ZWdlcigiNjQwMzM4ODExNDI5MjcyMDI2ODM2NDk4ODE0NTA0MzM0NzM5ODU5MzE3NjAyNjg4ODQ5NDEyODg4NTI3NDU4MDM5MDg4Nzg2Mzg2MTIiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgKSwgLy8geQorICAgICAgICAgICAgICAgICAgICBtb2RfcQorICAgICAgICAgICAgKTsKKworICAgICAgICBrcGcuaW5pdGlhbGl6ZShzcGVjKTsKKworICAgICAgICBqYXZhLnNlY3VyaXR5LktleVBhaXIga3A9a3BnLmdlbktleVBhaXIoKTsKKyAgICAgICAgb3JnLmJvdW5jeWNhc3RsZS54NTA5Llg1MDlWM0NlcnRpZmljYXRlR2VuZXJhdG9yIGNlcnRHZW4gPSAKKyAgICAgICAgICAgIG5ldyBvcmcuYm91bmN5Y2FzdGxlLng1MDkuWDUwOVYzQ2VydGlmaWNhdGVHZW5lcmF0b3IoKTsKKworICAgICAgICBsb25nIG5vdyA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICBjZXJ0R2VuLnNldFNlcmlhbE51bWJlcihqYXZhLm1hdGguQmlnSW50ZWdlci52YWx1ZU9mKG5vdykpOworCisgICAgICAgIG9yZy5ib3VuY3ljYXN0bGUuamNlLlg1MDlQcmluY2lwYWwgc3ViamVjdCA9IAorICAgICAgICAgICAgbmV3IG9yZy5ib3VuY3ljYXN0bGUuamNlLlg1MDlQcmluY2lwYWwoCisgICAgICAgICAgICAgICAgIkNOPVhNTCBFQ0RTQSBTaWduYXR1cmUgVGVzdCxEQz1hcGFjaGUsREM9b3JnIgorICAgICAgICAgICAgKTsKKyAgICAgICAgY2VydEdlbi5zZXRJc3N1ZXJETihzdWJqZWN0KTsKKyAgICAgICAgY2VydEdlbi5zZXRTdWJqZWN0RE4oc3ViamVjdCk7CisKKyAgICAgICAgamF2YS51dGlsLkRhdGUgZnJvbV9kYXRlID0gbmV3IGphdmEudXRpbC5EYXRlKG5vdyk7CisgICAgICAgIGNlcnRHZW4uc2V0Tm90QmVmb3JlKGZyb21fZGF0ZSk7CisgICAgICAgIGphdmEudXRpbC5DYWxlbmRhciBjYWwgPSBuZXcgamF2YS51dGlsLkdyZWdvcmlhbkNhbGVuZGFyKCk7CisgICAgICAgIGNhbC5zZXRUaW1lKGZyb21fZGF0ZSk7CisgICAgICAgIGNhbC5hZGQoamF2YS51dGlsLkNhbGVuZGFyLllFQVIsIDQpOworICAgICAgICBqYXZhLnV0aWwuRGF0ZSB0b19kYXRlID0gY2FsLmdldFRpbWUoKTsKKyAgICAgICAgY2VydEdlbi5zZXROb3RBZnRlcih0b19kYXRlKTsKKworICAgICAgICBjZXJ0R2VuLnNldFB1YmxpY0tleShrcC5nZXRQdWJsaWMoKSk7CisgICAgICAgIGNlcnRHZW4uc2V0U2lnbmF0dXJlQWxnb3JpdGhtKCJTSEExd2l0aEVDRFNBIik7CisgICAgICAgIGNlcnRHZW4uYWRkRXh0ZW5zaW9uKAorICAgICAgICAgICAgb3JnLmJvdW5jeWNhc3RsZS5hc24xLng1MDkuWDUwOUV4dGVuc2lvbnMuQmFzaWNDb25zdHJhaW50cywgCisgICAgICAgICAgICB0cnVlLCAKKyAgICAgICAgICAgIG5ldyBvcmcuYm91bmN5Y2FzdGxlLmFzbjEueDUwOS5CYXNpY0NvbnN0cmFpbnRzKGZhbHNlKQorICAgICAgICApOworICAgICAgICBjZXJ0R2VuLmFkZEV4dGVuc2lvbigKKyAgICAgICAgICAgIG9yZy5ib3VuY3ljYXN0bGUuYXNuMS54NTA5Llg1MDlFeHRlbnNpb25zLktleVVzYWdlLCAKKyAgICAgICAgICAgIHRydWUsIAorICAgICAgICAgICAgbmV3IG9yZy5ib3VuY3ljYXN0bGUuYXNuMS54NTA5LktleVVzYWdlKAorICAgICAgICAgICAgICAgIG9yZy5ib3VuY3ljYXN0bGUuYXNuMS54NTA5LktleVVzYWdlLmRpZ2l0YWxTaWduYXR1cmUgfCAKKyAgICAgICAgICAgICAgICBvcmcuYm91bmN5Y2FzdGxlLmFzbjEueDUwOS5LZXlVc2FnZS5rZXlFbmNpcGhlcm1lbnQgfCAKKyAgICAgICAgICAgICAgICBvcmcuYm91bmN5Y2FzdGxlLmFzbjEueDUwOS5LZXlVc2FnZS5rZXlDZXJ0U2lnbiB8IAorICAgICAgICAgICAgICAgIG9yZy5ib3VuY3ljYXN0bGUuYXNuMS54NTA5LktleVVzYWdlLmNSTFNpZ24KKyAgICAgICAgICAgICkKKyAgICAgICAgKTsKKworICAgICAgICBYNTA5Q2VydGlmaWNhdGUgeDUwOSA9IGNlcnRHZW4uZ2VuZXJhdGVYNTA5Q2VydGlmaWNhdGUoa3AuZ2V0UHJpdmF0ZSgpKTsKKworICAgICAgICBLZXlTdG9yZSBrZXlTdG9yZSA9IEtleVN0b3JlLmdldEluc3RhbmNlKCJKS1MiKTsKKyAgICAgICAga2V5U3RvcmUubG9hZChudWxsLCBFQ0RTQV9KS1NfUEFTU1dPUkQudG9DaGFyQXJyYXkoKSk7CisgICAgICAgIGtleVN0b3JlLnNldEtleUVudHJ5KAorICAgICAgICAgICAgIkVDRFNBIiwga3AuZ2V0UHJpdmF0ZSgpLCAKKyAgICAgICAgICAgIEVDRFNBX0pLU19QQVNTV09SRC50b0NoYXJBcnJheSgpLCBuZXcgamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlW117eDUwOX0KKyAgICAgICAgKTsKKyAgICAgICAga2V5U3RvcmUuc3RvcmUoCisgICAgICAgICAgICBuZXcgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtKEVDRFNBX0pLUyksIEVDRFNBX0pLU19QQVNTV09SRC50b0NoYXJBcnJheSgpCisgICAgICAgICk7CisKKyAgICB9CisgICAgKi8KKworfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3NpZ25hdHVyZS9ITUFDT3V0cHV0TGVuZ3RoVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3NpZ25hdHVyZS9ITUFDT3V0cHV0TGVuZ3RoVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5NGFlNzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3Qvc2lnbmF0dXJlL0hNQUNPdXRwdXRMZW5ndGhUZXN0LmphdmEKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3Quc2lnbmF0dXJlOworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmF4LmNyeXB0by5TZWNyZXRLZXk7CitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeTsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuSW5pdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkNhbm9uaWNhbGl6ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKKworcHVibGljIGNsYXNzIEhNQUNPdXRwdXRMZW5ndGhUZXN0IGV4dGVuZHMgVGVzdENhc2UgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPSBudWxsOworCisgICAgcHJvdGVjdGVkIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgSW5pdC5pbml0KCk7CisgICAgICAgIGRiZiA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKyAgICAgICAgZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworICAgICAgICBkYmYuc2V0VmFsaWRhdGluZyhmYWxzZSk7CisgICAgfQorCisgICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0KKyAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeS5nZXRMb2cKKyAgICAgICAgICAgIChITUFDT3V0cHV0TGVuZ3RoVGVzdC5jbGFzcy5nZXROYW1lKCkpOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEJBU0VESVIgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImJhc2VkaXIiKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0VQID0gU3lzdGVtLmdldFByb3BlcnR5KCJmaWxlLnNlcGFyYXRvciIpOworCisgICAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkgeworICAgICAgICByZXR1cm4gbmV3IFRlc3RTdWl0ZShITUFDT3V0cHV0TGVuZ3RoVGVzdC5jbGFzcyk7CisgICAgfQorCisgICAgcHVibGljIEhNQUNPdXRwdXRMZW5ndGhUZXN0KFN0cmluZyBuYW1lKSB7CisgICAgICAgIHN1cGVyKG5hbWUpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgU3RyaW5nW10gdGVzdENhc2VOYW1lID0geyAiLW5vbG9hZGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSE1BQ091dHB1dExlbmd0aFRlc3QuY2xhc3MuZ2V0TmFtZSgpIH07CisKKyAgICAgICAganVuaXQudGV4dHVpLlRlc3RSdW5uZXIubWFpbih0ZXN0Q2FzZU5hbWUpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3Rfc2lnbmF0dXJlX2VudmVsb3BpbmdfaG1hY19zaGExX3RydW5jbGVuXzAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHZhbGlkYXRlKCJzaWduYXR1cmUtZW52ZWxvcGluZy1obWFjLXNoYTEtdHJ1bmNsZW4tMC1hdHRhY2sueG1sIik7CisgICAgICAgICAgICBmYWlsKCJFeHBlY3RlZCBITUFDT3V0cHV0TGVuZ3RoIGV4Y2VwdGlvbiIpOworICAgICAgICB9IGNhdGNoIChYTUxTaWduYXR1cmVFeGNlcHRpb24geHNlKSB7CisgICAgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oeHNlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICBpZiAoeHNlLmdldE1zZ0lEKCkuZXF1YWxzKCJhbGdvcml0aG1zLkhNQUNPdXRwdXRMZW5ndGhNaW4iKSkgeworICAgICAgICAgICAgICAgIC8vIHBhc3MKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZmFpbCh4c2UuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBwdWJsaWMgdm9pZCB0ZXN0X3NpZ25hdHVyZV9lbnZlbG9waW5nX2htYWNfc2hhMV90cnVuY2xlbl84KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB2YWxpZGF0ZSgic2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGExLXRydW5jbGVuLTgtYXR0YWNrLnhtbCIpOworICAgICAgICB9IGNhdGNoIChYTUxTaWduYXR1cmVFeGNlcHRpb24geHNlKSB7CisgICAgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oeHNlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICBpZiAoeHNlLmdldE1zZ0lEKCkuZXF1YWxzKCJhbGdvcml0aG1zLkhNQUNPdXRwdXRMZW5ndGhNaW4iKSkgeworICAgICAgICAgICAgICAgIC8vIHBhc3MKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZmFpbCh4c2UuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgdmFsaWRhdGUoU3RyaW5nIGRhdGEpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIlZhbGlkYXRpbmcgIiArIGRhdGEpOworICAgICAgICBGaWxlIGZpbGUgPSBuZXcgRmlsZShCQVNFRElSICsgU0VQICsgImRhdGEiICsgU0VQICsgImphdmF4IiArIFNFUCArICJ4bWwiICsgU0VQICsgImNyeXB0byIgKyBTRVAgKyAiZHNpZyIgKyBTRVAsIGRhdGEpOworCisgICAgICAgIERvY3VtZW50IGRvYyA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKS5wYXJzZShmaWxlKTsKKyAgICAgICAgTm9kZUxpc3QgbmwgPQorICAgICAgICAgICAgZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUywgIlNpZ25hdHVyZSIpOworICAgICAgICBpZiAobmwuZ2V0TGVuZ3RoKCkgPT0gMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiQ291bGRuJ3QgZmluZCBzaWduYXR1cmUgRWxlbWVudCIpOworICAgICAgICB9CisgICAgICAgIEVsZW1lbnQgc2lnRWxlbWVudCA9IChFbGVtZW50KSBubC5pdGVtKDApOworICAgICAgICBYTUxTaWduYXR1cmUgc2lnbmF0dXJlID0gbmV3IFhNTFNpZ25hdHVyZQorICAgICAgICAgICAgKHNpZ0VsZW1lbnQsIGZpbGUudG9VUkkoKS50b1N0cmluZygpKTsKKyAgICAgICAgU2VjcmV0S2V5IHNrID0gc2lnbmF0dXJlLmNyZWF0ZVNlY3JldEtleSgic2VjcmV0Ii5nZXRCeXRlcygiQVNDSUkiKSk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbgorICAgICAgICAgICAgKCJWYWxpZGF0aW9uIHN0YXR1czogIiArIHNpZ25hdHVyZS5jaGVja1NpZ25hdHVyZVZhbHVlKHNrKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdF9nZW5lcmF0ZV9obWFjX3NoYTFfNDAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCJHZW5lcmF0aW5nICIpOworCisgICAgICAgIERvY3VtZW50IGRvYyA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKS5uZXdEb2N1bWVudCgpOworICAgICAgICBYTUxTaWduYXR1cmUgc2lnID0gbmV3IFhNTFNpZ25hdHVyZQorICAgICAgICAgICAgKGRvYywgbnVsbCwgWE1MU2lnbmF0dXJlLkFMR09fSURfTUFDX0hNQUNfU0hBMSwgNDAsCisgICAgICAgICAgICAgQ2Fub25pY2FsaXplci5BTEdPX0lEX0MxNE5fT01JVF9DT01NRU5UUyk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzaWcuc2lnbihnZXRTZWNyZXRLZXkoInNlY3JldCIuZ2V0Qnl0ZXMoIkFTQ0lJIikpKTsKKyAgICAgICAgICAgIGZhaWwoIkV4cGVjdGVkIEhNQUNPdXRwdXRMZW5ndGggRXhjZXB0aW9uIik7CisgICAgICAgIH0gY2F0Y2ggKFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiB4c2UpIHsKKyAgICAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbih4c2UuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgICAgIGlmICh4c2UuZ2V0TXNnSUQoKS5lcXVhbHMoImFsZ29yaXRobXMuSE1BQ091dHB1dExlbmd0aE1pbiIpKSB7CisgICAgICAgICAgICAgICAgLy8gcGFzcworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBmYWlsKHhzZS5nZXRNZXNzYWdlKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgU2VjcmV0S2V5IGdldFNlY3JldEtleShmaW5hbCBieXRlW10gc2VjcmV0KSB7CisgICAgICAgIHJldHVybiBuZXcgU2VjcmV0S2V5KCkgeworICAgICAgICAgICAgcHVibGljIFN0cmluZyBnZXRGb3JtYXQoKSAgIHsgcmV0dXJuICJSQVciOyB9CisgICAgICAgICAgICBwdWJsaWMgYnl0ZVtdIGdldEVuY29kZWQoKSAgeyByZXR1cm4gc2VjcmV0OyB9CisgICAgICAgICAgICBwdWJsaWMgU3RyaW5nIGdldEFsZ29yaXRobSgpeyByZXR1cm4gIlNFQ1JFVCI7IH0KKyAgICAgICAgfTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3Qvc2lnbmF0dXJlL0luZGV4ZWREb2N1bWVudC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3NpZ25hdHVyZS9JbmRleGVkRG9jdW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTk1YTI3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3NpZ25hdHVyZS9JbmRleGVkRG9jdW1lbnQuamF2YQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3Quc2lnbmF0dXJlOworCitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKKworaW1wb3J0IG9yZy5hcGFjaGUueGVyY2VzLmRvbS5Eb2N1bWVudEltcGw7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworCisvKioKKyAqIEEgcXVpY2sgYW5kIGRpcnR5IGRvY3VtZW50IGltcGxlbWVudGF0aW9uLCB0aGF0CisgKiBpbXBsZW1lbnRzIHRoZSBnZXRFbGVtZW50QnlJZCBmdW5jdGlvbiBieSBsb29raW5nIGF0ICJJZCIgYXR0cmlidXRlcy4KKyAqIAorICogQGF1dGhvciB3Z2xhcworICovCitwdWJsaWMgY2xhc3MgSW5kZXhlZERvY3VtZW50IGV4dGVuZHMgRG9jdW1lbnRJbXBsCit7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTEzNDIwNDE5OTk4NjQ0NDk3NTNMOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIElEX0FUVFIgPSAiSWQiOworICAgIAorICAgIHByaXZhdGUgTWFwIGlkTWFwOworICAgCisgICAgcHJpdmF0ZSB2b2lkIGFkZFRvSWRNYXAoRWxlbWVudCBlbGVtZW50KQorICAgIHsKKyAgICAgICAgU3RyaW5nIGlkID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoSURfQVRUUik7CisgICAgICAgIAorICAgICAgICBpZiAoaWQgIT0gbnVsbCkKKyAgICAgICAgICAgIHRoaXMuaWRNYXAucHV0KGlkLGVsZW1lbnQpOworICAgICAgICAKKyAgICAgICAgZm9yIChOb2RlIG5vZGUgPSBlbGVtZW50LmdldEZpcnN0Q2hpbGQoKTsgbm9kZSAhPSBudWxsOyBub2RlID0gbm9kZS5nZXROZXh0U2libGluZygpKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRWxlbWVudCBlID0gKEVsZW1lbnQpIG5vZGU7CisgICAgICAgICAgICAgICAgdGhpcy5hZGRUb0lkTWFwKGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qIChub24tSmF2YWRvYykKKyAgICAgKiBAc2VlIG9yZy5hcGFjaGUueGVyY2VzLmRvbS5Db3JlRG9jdW1lbnRJbXBsI2dldEVsZW1lbnRCeUlkKGphdmEubGFuZy5TdHJpbmcpCisgICAgICovCisgICAgcHVibGljIEVsZW1lbnQgZ2V0RWxlbWVudEJ5SWQoU3RyaW5nIGlkKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuaWRNYXAgPT0gbnVsbCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5pZE1hcCA9IG5ldyBIYXNoTWFwKCk7CisgICAgICAgICAgICB0aGlzLmFkZFRvSWRNYXAodGhpcy5nZXREb2N1bWVudEVsZW1lbnQoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiAoRWxlbWVudCl0aGlzLmlkTWFwLmdldChpZCk7CisgICAgfQorICAgIAorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3NpZ25hdHVyZS9JbnZhbGlkS2V5VGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3NpZ25hdHVyZS9JbnZhbGlkS2V5VGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjNkNjUyMTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3Qvc2lnbmF0dXJlL0ludmFsaWRLZXlUZXN0LmphdmEKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5zaWduYXR1cmU7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LktleVN0b3JlOworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHVibGljS2V5OworCitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQ7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZTsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7CisKKy8qKgorICogVGVzdCBjYXNlIGNvbnRyaWJ1dGVkIGJ5IE1hdHRoaWFzIEdlcm1hbm4gZm9yIHRlc3RpbmcgdGhhdCBidWcgNDMyMzkgaXMKKyAqIGZpeGVkOiAiTm8gaW5zdGFsbGVkIHByb3ZpZGVyIHN1cHBvcnRzIHRoaXMga2V5IiB3aGVuIGNoZWNraW5nIGEgUlNBIAorICogc2lnbmF0dXJlIGFnYWluc3QgYSBEU0Ega2V5IGJlZm9yZSBSU0Ega2V5LgorICovCitwdWJsaWMgY2xhc3MgSW52YWxpZEtleVRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgICBzdGF0aWMgeworCUluaXQuaW5pdCgpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpIHsKKyAgICAgICByZXR1cm4gbmV3IFRlc3RTdWl0ZShJbnZhbGlkS2V5VGVzdC5jbGFzcyk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEJBU0VESVIgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImJhc2VkaXIiKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0VQID0gU3lzdGVtLmdldFByb3BlcnR5KCJmaWxlLnNlcGFyYXRvciIpOworCisgICAgcHVibGljIHZvaWQgdGVzdCgpIHRocm93cyBFeGNlcHRpb24geworCUZpbGVJbnB1dFN0cmVhbSBpbnB1dCA9IG5ldyBGaWxlSW5wdXRTdHJlYW0oQkFTRURJUiArIFNFUCArIAorCSAgICAiZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL2lucHV0L3RydXN0c3RvcmUuamtzIik7CisgICAgICAgIEtleVN0b3JlIHRydXN0U3RvcmUgPSBLZXlTdG9yZS5nZXRJbnN0YW5jZShLZXlTdG9yZS5nZXREZWZhdWx0VHlwZSgpKTsKKyAgICAgICAgdHJ1c3RTdG9yZS5sb2FkKGlucHV0LCAidGVzdHB3Ii50b0NoYXJBcnJheSgpKTsKKyAgICAgICAgCisJdHJ5IHsKKyAgICAgICAgICAgIHZhbGlkYXRlKHRydXN0U3RvcmUuZ2V0Q2VydGlmaWNhdGUoImJlZGFnLXRlc3QiKS5nZXRQdWJsaWNLZXkoKSk7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJGYWlsdXJlIGV4cGVjdGVkIG9uIGEgRFNBIGtleSIpOworCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJICAgIC8vIGUucHJpbnRTdGFja1RyYWNlKCk7CisJfQorICAgICAgICB2YWxpZGF0ZSh0cnVzdFN0b3JlLmdldENlcnRpZmljYXRlKCJhNzAtZ2FyYWlvLWZyb250ZW5kLXUiKS5nZXRQdWJsaWNLZXkoKSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHZhbGlkYXRlKFB1YmxpY0tleSBwaykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIEZpbGVJbnB1dFN0cmVhbSBpcyA9IG5ldyBGaWxlSW5wdXRTdHJlYW0oQkFTRURJUiArIFNFUCArCisJICAgICJkYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3NhbXBsZXMvaW5wdXQvdGVzdC1hc3NlcnRpb24ueG1sIik7CisgICAgICAgICAgICAKKyAgICAgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisgICAgICAgIGRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKyAgICAgICAgRG9jdW1lbnQgZSA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKS5wYXJzZShpcyk7CisgICAgICAgICAgICAKKyAgICAgICAgTm9kZUxpc3QgbmwgPSBlLmdldEZpcnN0Q2hpbGQoKS5nZXRDaGlsZE5vZGVzKCk7CisgICAgICAgIEVsZW1lbnQgbiA9IChFbGVtZW50KW5sLml0ZW0obmwuZ2V0TGVuZ3RoKCktMSk7CisgICAgICAgICAgICAKKyAgICAgICAgWE1MU2lnbmF0dXJlIHNpID0gbmV3IFhNTFNpZ25hdHVyZSgoRWxlbWVudCluLCIiKTsKKyAgICAgICAgc2kuY2hlY2tTaWduYXR1cmVWYWx1ZShwayk7CisKKyAgICAgICAJLy8gU3lzdGVtLm91dC5wcmludGxuKCJWQUxJREFUSU9OIE9LIiApOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9zaWduYXR1cmUvS2V5VmFsdWVUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3Qvc2lnbmF0dXJlL0tleVZhbHVlVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlY2Q1OWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3Qvc2lnbmF0dXJlL0tleVZhbHVlVGVzdC5qYXZhCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNyBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3Quc2lnbmF0dXJlOworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHVibGljS2V5OworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5LZXlJbmZvOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuY29udGVudC5LZXlWYWx1ZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKKworcHVibGljIGNsYXNzIEtleVZhbHVlVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBCQVNFRElSID0gU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIik7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNFUCA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiZmlsZS5zZXBhcmF0b3IiKTsKKworICAgIHByaXZhdGUgRG9jdW1lbnRCdWlsZGVyIGRiOworCisgICAgcHVibGljIEtleVZhbHVlVGVzdChTdHJpbmcgbmFtZSkgeworCXN1cGVyKG5hbWUpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpIHsKKyAgICAgICAgVGVzdFN1aXRlIHN1aXRlID0gbmV3IFRlc3RTdWl0ZShLZXlWYWx1ZVRlc3QuY2xhc3MpOworICAgICAgICByZXR1cm4gc3VpdGU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisgICAgICAgIGRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKyAgICAgICAgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgfQorCisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0RFNBUHVibGljS2V5KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKwlGaWxlIGYgPSBudWxsOworICAgICAgICBpZiAoQkFTRURJUiAhPSBudWxsICYmICEiIi5lcXVhbHMoQkFTRURJUikpIHsKKyAgICAgICAgICAgIGYgPSBuZXcgRmlsZShCQVNFRElSICsgU0VQICsKKyAgICAgICAgICAgICAgICAgICJkYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1lbnZlbG9waW5nLWRzYS54bWwiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGYgPSBuZXcgRmlsZSgKKyAgICAgICAgICAgICAgICAgICJkYXRhL2llL2JhbHRpbW9yZS9tZXJsaW4tZXhhbXBsZXMvbWVybGluLXhtbGRzaWctdHdlbnR5LXRocmVlL3NpZ25hdHVyZS1lbnZlbG9waW5nLWRzYS54bWwiKTsKKyAgICAgICAgfQorCURvY3VtZW50IGRvYyA9IGRiLnBhcnNlKG5ldyBGaWxlSW5wdXRTdHJlYW0oZikpOworCU5vZGVMaXN0IG5sID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMKKwkgICAgKENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMsICJTaWduYXR1cmUiKTsKKwlYTUxTaWduYXR1cmUgc2lnID0gbmV3IFhNTFNpZ25hdHVyZQorCSAgICAoKEVsZW1lbnQpIG5sLml0ZW0oMCksIGYudG9VUkwoKS50b1N0cmluZygpKTsKKwlLZXlJbmZvIGtpID0gc2lnLmdldEtleUluZm8oKTsKKwlLZXlWYWx1ZSBrdiA9IGtpLml0ZW1LZXlWYWx1ZSgwKTsKKwlQdWJsaWNLZXkgcGsgPSBrdi5nZXRQdWJsaWNLZXkoKTsKKwlhc3NlcnROb3ROdWxsKHBrKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3Qvc2lnbmF0dXJlL05vS2V5SW5mb1Rlc3QuamF2YSBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9zaWduYXR1cmUvTm9LZXlJbmZvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzNjQwZTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3Qvc2lnbmF0dXJlL05vS2V5SW5mb1Rlc3QuamF2YQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IDIwMDgtMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3Quc2lnbmF0dXJlOworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5LZXlJbmZvOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmU7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOworCitwdWJsaWMgY2xhc3MgTm9LZXlJbmZvVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBCQVNFRElSID0gU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIik7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNFUCA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiZmlsZS5zZXBhcmF0b3IiKTsKKworICAgIHByaXZhdGUgRG9jdW1lbnRCdWlsZGVyIGRiOworCisgICAgcHVibGljIE5vS2V5SW5mb1Rlc3QoU3RyaW5nIG5hbWUpIHsKKwlzdXBlcihuYW1lKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKSB7CisgICAgICAgIFRlc3RTdWl0ZSBzdWl0ZSA9IG5ldyBUZXN0U3VpdGUoTm9LZXlJbmZvVGVzdC5jbGFzcyk7CisgICAgICAgIHJldHVybiBzdWl0ZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKyAgICAgICAgZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworICAgICAgICBkYiA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKKyAgICB9CisKKworICAgIHB1YmxpYyB2b2lkIHRlc3ROdWxsS2V5SW5mbygpIHRocm93cyBFeGNlcHRpb24geworCUZpbGUgZiA9IG51bGw7CisgICAgICAgIGlmIChCQVNFRElSICE9IG51bGwgJiYgISIiLmVxdWFscyhCQVNFRElSKSkgeworICAgICAgICAgICAgZiA9IG5ldyBGaWxlKEJBU0VESVIgKyBTRVAgKworICAgICAgICAgICAgICAgICAgImRhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGExLnhtbCIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZiA9IG5ldyBGaWxlKAorICAgICAgICAgICAgICAgICAgImRhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUvc2lnbmF0dXJlLWVudmVsb3BpbmctaG1hYy1zaGExLnhtbCIpOworICAgICAgICB9CisJRG9jdW1lbnQgZG9jID0gZGIucGFyc2UobmV3IEZpbGVJbnB1dFN0cmVhbShmKSk7CisJTm9kZUxpc3QgbmwgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUworCSAgICAoQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUywgIlNpZ25hdHVyZSIpOworCVhNTFNpZ25hdHVyZSBzaWcgPSBuZXcgWE1MU2lnbmF0dXJlCisJICAgICgoRWxlbWVudCkgbmwuaXRlbSgwKSwgZi50b1VSTCgpLnRvU3RyaW5nKCkpOworCUtleUluZm8ga2kgPSBzaWcuZ2V0S2V5SW5mbygpOworCWFzc2VydE51bGwoa2kpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9zaWduYXR1cmUvUHJvY2Vzc2luZ0luc3RydWN0aW9uVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3NpZ25hdHVyZS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmY0MzA5ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9zaWduYXR1cmUvUHJvY2Vzc2luZ0luc3RydWN0aW9uVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTYwIEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LnNpZ25hdHVyZTsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworCitpbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5OYW1lc3BhY2VDb250ZXh0OworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworaW1wb3J0IGphdmF4LnhtbC54cGF0aC5YUGF0aDsKK2ltcG9ydCBqYXZheC54bWwueHBhdGguWFBhdGhDb25zdGFudHM7CitpbXBvcnQgamF2YXgueG1sLnhwYXRoLlhQYXRoRmFjdG9yeTsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlSW5wdXQ7CitpbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyLlJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMucmVzb2x2ZXIuUmVzb3VyY2VSZXNvbHZlclNwaTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC51dGlscy5VUkk7CisKKy8qKgorICogQSB0ZXN0LWNhc2UgZm9yIEJ1Z3ppbGxhIGJ1ZyA0NTc0NCAtICJYUGF0aCB0cmFuc2Zvcm0gYW5kIHhtbC1zdHlsZXNoZWV0Ii4KKyAqLworcHVibGljIGNsYXNzIFByb2Nlc3NpbmdJbnN0cnVjdGlvblRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgICBzdGF0aWMgeworICAgICAgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgZGlyOworCisgICAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkgeworICAgICAgICByZXR1cm4gbmV3IFRlc3RTdWl0ZShQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UZXN0LmNsYXNzKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIFByb2Nlc3NpbmdJbnN0cnVjdGlvblRlc3QoU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgc3VwZXIobmFtZSk7CisgICAgICAgIFN0cmluZyBiYXNlID0gU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIikgPT0gbnVsbCAKKyAgICAgICAgICAgID8gIi4vIiA6IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpOworICAgICAgICBTdHJpbmcgZnMgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImZpbGUuc2VwYXJhdG9yIik7CisgICAgICAgIGRpciA9IGJhc2UgKyBmcyArICJkYXRhIiArIGZzICsgIm9yZyIgKyBmcyArICJhcGFjaGUiICsgZnMgKyAieG1sIiArIAorICAgICAgICAgICAgZnMgKyAic2VjdXJpdHkiICsgZnMgKyAidGVzdGNhc2VzIiArIGZzOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCB0ZXN0UHJvY2Vzc2luZ0luc3RydWN0aW9uKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBzaWduYXR1cmVGaWxlTmFtZSA9IGRpciArICJ1cHBfc2lnbi54bWwiOworICAgICAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9IAorICAgICAgICAgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworICAgICAgICBkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisgICAgICAgIERvY3VtZW50QnVpbGRlciBkYiA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKKyAgICAgICAgRmlsZSBmID0gbmV3IEZpbGUoc2lnbmF0dXJlRmlsZU5hbWUpOworICAgICAgICBEb2N1bWVudCBkb2MgPSBkYi5wYXJzZShuZXcgamF2YS5pby5GaWxlSW5wdXRTdHJlYW0oZikpOworCisgICAgICAgIFhQYXRoRmFjdG9yeSB4cGYgPSBYUGF0aEZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKyAgICAgICAgWFBhdGggeHBhdGggPSB4cGYubmV3WFBhdGgoKTsKKyAgICAgICAgeHBhdGguc2V0TmFtZXNwYWNlQ29udGV4dChuZXcgTmFtZXNwYWNlQ29udGV4dCgpIHsKKworICAgICAgICAgICAgcHVibGljIFN0cmluZyBnZXROYW1lc3BhY2VVUkkoU3RyaW5nIGFyZzApIHsKKyAgICAgICAgICAgICAgICBpZiAoIWFyZzAuZXF1YWxzKCJkcyIpKQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigpOworICAgICAgICAgICAgICAgIHJldHVybiAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0UHJlZml4KFN0cmluZyBhcmcwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICJkcyI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBJdGVyYXRvciBnZXRQcmVmaXhlcyhTdHJpbmcgYXJnMCkgeworICAgICAgICAgICAgICAgIExpc3QgYWwgPSBuZXcgQXJyYXlMaXN0KCk7CisgICAgICAgICAgICAgICAgYWwuYWRkKCJkcyIpOworICAgICAgICAgICAgICAgIHJldHVybiBhbC5pdGVyYXRvcigpOworICAgICAgICAgICAgfQorCisgICAgICAgIH0pOworCisgICAgICAgIFN0cmluZyBleHByZXNzaW9uID0gIi8vZHM6U2lnbmF0dXJlWzFdIjsKKyAgICAgICAgRWxlbWVudCBzaWdFbGVtZW50ID0gCisgICAgICAgICAgICAoRWxlbWVudCkgeHBhdGguZXZhbHVhdGUoZXhwcmVzc2lvbiwgZG9jLCBYUGF0aENvbnN0YW50cy5OT0RFKTsKKworICAgICAgICBTdHJpbmcgYmFzZVVyaSA9IG5ldyBGaWxlKCIuIikudG9VUkwoKS50b1N0cmluZygpOworICAgICAgICBYTUxTaWduYXR1cmUgc2lnbmF0dXJlID0gbmV3IFhNTFNpZ25hdHVyZShzaWdFbGVtZW50LCBiYXNlVXJpKTsKKyAgICAgICAgc2lnbmF0dXJlLmFkZFJlc291cmNlUmVzb2x2ZXIoRmlsZVJlc29sdmVyLmdldEluc3RhbmNlKCkpOworICAgICAgICBYNTA5Q2VydGlmaWNhdGUgY2VydCA9IHNpZ25hdHVyZS5nZXRLZXlJbmZvKCkuZ2V0WDUwOUNlcnRpZmljYXRlKCk7CisgICAgICAgIGlmICghc2lnbmF0dXJlLmNoZWNrU2lnbmF0dXJlVmFsdWUoY2VydCkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIlNpZ25hdHVyZSBpcyBpbnZhbGlkISIpOworICAgICAgICB9CisgICAgfQorCisgICAgCisgICAgLyoqCisgICAgICogVGhpcyBjbGFzcyByZXNvbHZlcyAib3V0LnhtbCIgb24gdGhlIGxvY2FsIGZpbGVzeXN0ZW0uCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgRmlsZVJlc29sdmVyIGV4dGVuZHMgUmVzb3VyY2VSZXNvbHZlclNwaSB7CisKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgRmlsZVJlc29sdmVyIHJlc29sdmVyID0gbnVsbDsKKyAgICAKKyAgICAgICAgcHVibGljIHN5bmNocm9uaXplZCBzdGF0aWMgUmVzb3VyY2VSZXNvbHZlclNwaSBnZXRJbnN0YW5jZSgpIHsKKyAgICAgICAgICAgIGlmIChyZXNvbHZlciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmVzb2x2ZXIgPSBuZXcgRmlsZVJlc29sdmVyKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZXI7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgcHJpdmF0ZSBGaWxlUmVzb2x2ZXIoKSB7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgcHVibGljIFhNTFNpZ25hdHVyZUlucHV0IGVuZ2luZVJlc29sdmUoQXR0ciB1cmksIFN0cmluZyBiYXNlVVJJKQorICAgICAgICAgICAgdGhyb3dzIFJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb24geworICAgIAorICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBVUkkgdXJpTmV3ID0gbmV3IFVSSSh1cmkuZ2V0Tm9kZVZhbHVlKCksIGJhc2VVUkkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIEZpbGVJbnB1dFN0cmVhbSBpbnB1dFN0cmVhbSA9IAorICAgICAgICAgICAgICAgICAgICBuZXcgRmlsZUlucHV0U3RyZWFtKGRpciArICJvdXQueG1sIik7CisgICAgICAgICAgICAgICAgWE1MU2lnbmF0dXJlSW5wdXQgcmVzdWx0ID0gbmV3IFhNTFNpZ25hdHVyZUlucHV0KGlucHV0U3RyZWFtKTsKKworICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRTb3VyY2VVUkkodXJpTmV3LnRvU3RyaW5nKCkpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBSZXNvdXJjZVJlc29sdmVyRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAiZ2VuZXJpYy5FbXB0eU1lc3NhZ2UiLCBleCwgdXJpLCBiYXNlVVJJCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHVibGljIGJvb2xlYW4gZW5naW5lQ2FuUmVzb2x2ZShBdHRyIHVyaSwgU3RyaW5nIEJhc2VVUkkpIHsKKyAgICAgICAgICAgIGlmICh1cmkgPT0gbnVsbCB8fCAhIm91dC54bWwiLmVxdWFscyh1cmkuZ2V0Tm9kZVZhbHVlKCkpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9zaWduYXR1cmUvU2lnbmF0dXJlVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3NpZ25hdHVyZS9TaWduYXR1cmVUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y5NTBkNwotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9zaWduYXR1cmUvU2lnbmF0dXJlVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjE0IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LnNpZ25hdHVyZTsKKworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5zZWN1cml0eS5LZXlTdG9yZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlByaXZhdGVLZXk7CitpbXBvcnQgamF2YS5zZWN1cml0eS5QdWJsaWNLZXk7CitpbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOworCitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyOworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3Rvcnk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmU7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybXM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyLmltcGxlbWVudGF0aW9ucy5SZXNvbHZlclhQb2ludGVyOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKKworcHVibGljIGNsYXNzIFNpZ25hdHVyZVRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgRFNfTlMgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI7CisKKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZyBLRVlTVE9SRV9ESVJFQ1RPUlkgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImJhc2VkaXIiKSArICIvZGF0YS8iOworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nIEtFWVNUT1JFX1BBU1NXT1JEX1NUUklORyA9ICJjaGFuZ2VpdCI7CisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBjaGFyW10gS0VZU1RPUkVfUEFTU1dPUkQgPSBLRVlTVE9SRV9QQVNTV09SRF9TVFJJTkcKKwkJCS50b0NoYXJBcnJheSgpOworCisgICAgcHVibGljIFNpZ25hdHVyZVRlc3QoU3RyaW5nIHRlc3QpIHsKKyAgICAgICAgc3VwZXIodGVzdCk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkgeworICAgICAgIHJldHVybiBuZXcgVGVzdFN1aXRlKFNpZ25hdHVyZVRlc3QuY2xhc3MpOworICAgIH0KKworICAgIC8qKgorICAgICAqIExvYWRzIHRoZSAnbG9jYWxob3N0JyBrZXlzdG9yZSBmcm9tIHRoZSB0ZXN0IGtleXN0b3JlLgorICAgICAqIAorICAgICAqIEByZXR1cm4gdGVzdCBrZXlzdG9yZS4KKyAgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBLZXlTdG9yZSBnZXRLZXlTdG9yZSgpIHRocm93cyBFeGNlcHRpb24geworCUtleVN0b3JlIGtzID0gS2V5U3RvcmUuZ2V0SW5zdGFuY2UoIkpLUyIpOworCUlucHV0U3RyZWFtIGtzaXMgPSBuZXcgRmlsZUlucHV0U3RyZWFtKEtFWVNUT1JFX0RJUkVDVE9SWSArICJ0ZXN0LmprcyIpOworCWtzLmxvYWQoa3NpcywgS0VZU1RPUkVfUEFTU1dPUkQpOworCWtzaXMuY2xvc2UoKTsKKwlyZXR1cm4ga3M7CisgICAgfQorCisgICAgcHVibGljIFB1YmxpY0tleSBnZXRQdWJsaWNLZXkoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlLZXlTdG9yZSBrZXlTdG9yZSA9IGdldEtleVN0b3JlKCk7CisJRW51bWVyYXRpb24gYWxpYXNlcyA9IGtleVN0b3JlLmFsaWFzZXMoKTsKKwl3aGlsZSAoYWxpYXNlcy5oYXNNb3JlRWxlbWVudHMoKSkgeworCSAgICBTdHJpbmcgYWxpYXMgPSAoU3RyaW5nKSBhbGlhc2VzLm5leHRFbGVtZW50KCk7CisJICAgIGlmIChrZXlTdG9yZS5pc0tleUVudHJ5KGFsaWFzKSkgeworCQlyZXR1cm4ga2V5U3RvcmUuZ2V0Q2VydGlmaWNhdGUoYWxpYXMpLmdldFB1YmxpY0tleSgpOworCSAgICB9CisJfQorCXJldHVybiBudWxsOworICAgIH0KKworICAgIHB1YmxpYyBQcml2YXRlS2V5IGdldFByaXZhdGVLZXkoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlLZXlTdG9yZSBrZXlTdG9yZSA9IGdldEtleVN0b3JlKCk7CisJRW51bWVyYXRpb24gYWxpYXNlcyA9IGtleVN0b3JlLmFsaWFzZXMoKTsKKwl3aGlsZSAoYWxpYXNlcy5oYXNNb3JlRWxlbWVudHMoKSkgeworIAkgICAgU3RyaW5nIGFsaWFzID0gKFN0cmluZykgYWxpYXNlcy5uZXh0RWxlbWVudCgpOworCSAgICBpZiAoa2V5U3RvcmUuaXNLZXlFbnRyeShhbGlhcykpIHsKKwkJcmV0dXJuIChQcml2YXRlS2V5KSBrZXlTdG9yZS5nZXRLZXkoYWxpYXMsIEtFWVNUT1JFX1BBU1NXT1JEKTsKKwkgICAgfQorCX0KKwlyZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBwdWJsaWMgRG9jdW1lbnQgZ2V0T3JpZ2luYWxEb2N1bWVudCgpIHRocm93cyBUaHJvd2FibGUgeworCURvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCWRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKwlEb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisJRG9jdW1lbnQgZG9jID0gZGIubmV3RG9jdW1lbnQoKTsKKworCUVsZW1lbnQgcm9vdEVsZW1lbnQgPSBkb2MuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vbnMuZXhhbXBsZS5vcmcvIiwKKwkJCSJyb290Iik7CisgICAgICAgIHJvb3RFbGVtZW50LmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgiSGVsbG8gV29ybGQhIikpOworCWRvYy5hcHBlbmRDaGlsZChyb290RWxlbWVudCk7CisKKwlyZXR1cm4gZG9jOworICAgIH0KKworICAgIHB1YmxpYyBYTUxTaWduYXR1cmUgc2lnbkRvY3VtZW50KERvY3VtZW50IGRvYykgdGhyb3dzIFRocm93YWJsZSB7CisJWE1MU2lnbmF0dXJlIHNpZyA9IG5ldyBYTUxTaWduYXR1cmUoZG9jLCAiIiwKKwkJWE1MU2lnbmF0dXJlLkFMR09fSURfU0lHTkFUVVJFX0RTQSk7CisJRWxlbWVudCByb290ID0gZG9jLmdldERvY3VtZW50RWxlbWVudCgpOworCXJvb3QuYXBwZW5kQ2hpbGQoc2lnLmdldEVsZW1lbnQoKSk7CisKKwlzaWcuZ2V0U2lnbmVkSW5mbygpLmFkZFJlc291cmNlUmVzb2x2ZXIobmV3IFJlc29sdmVyWFBvaW50ZXIoKSk7CisKKwlUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyhkb2MpOworCXRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX0VOVkVMT1BFRF9TSUdOQVRVUkUpOworCXRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX0MxNE5fV0lUSF9DT01NRU5UUyk7CisJc2lnLmFkZERvY3VtZW50KCIiLCB0cmFuc2Zvcm1zLCBDb25zdGFudHMuQUxHT19JRF9ESUdFU1RfU0hBMSk7CisKKwlzaWcuYWRkS2V5SW5mbyhnZXRQdWJsaWNLZXkoKSk7CisJc2lnLnNpZ24oZ2V0UHJpdmF0ZUtleSgpKTsKKworCS8vIGRpc3BsYXlEb2N1bWVudChkb2MpOworCisJcmV0dXJuIHNpZzsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24geworCUluaXQuaW5pdCgpOworCUNvbnN0YW50cy5zZXRTaWduYXR1cmVTcGVjTlNwcmVmaXgoImRzIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgZGlzcGxheU9yaWdpbmFsRG9jdW1lbnQoKSB0aHJvd3MgVGhyb3dhYmxlIHsKKwkvLyBkaXNwbGF5RG9jdW1lbnQoZ2V0T3JpZ2luYWxEb2N1bWVudCgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0U2lnbmluZygpIHRocm93cyBUaHJvd2FibGUgeworCXNpZ25Eb2N1bWVudChnZXRPcmlnaW5hbERvY3VtZW50KCkpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RTaWduaW5nVmVyaWZ5aW5nRnJvbVJlYnVpbGRTaWduYXR1cmUoKSB0aHJvd3MgVGhyb3dhYmxlIHsKKwlEb2N1bWVudCBkb2MgPSBnZXRPcmlnaW5hbERvY3VtZW50KCk7CisJc2lnbkRvY3VtZW50KGRvYyk7CisJRWxlbWVudCBzaWduYXR1cmVFbGVtID0gKEVsZW1lbnQpIGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKERTX05TLAorCQkJIlNpZ25hdHVyZSIpLml0ZW0oMCk7CisJWE1MU2lnbmF0dXJlIHNpZ25hdHVyZSA9IG5ldyBYTUxTaWduYXR1cmUoc2lnbmF0dXJlRWxlbSwgIiIpOworCisJUHVibGljS2V5IHB1YktleSA9IGdldFB1YmxpY0tleSgpOworCisJYXNzZXJ0VHJ1ZShzaWduYXR1cmUuY2hlY2tTaWduYXR1cmVWYWx1ZShwdWJLZXkpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0U2lnbmluZ1ZlcmlmeWluZ0Zyb21FeGlzdGluZ1NpZ25hdHVyZSgpIHRocm93cyBUaHJvd2FibGUgeworCURvY3VtZW50IGRvYyA9IGdldE9yaWdpbmFsRG9jdW1lbnQoKTsKKwlYTUxTaWduYXR1cmUgc2lnbmF0dXJlID0gc2lnbkRvY3VtZW50KGRvYyk7CisKKwlQdWJsaWNLZXkgcHViS2V5ID0gZ2V0UHVibGljS2V5KCk7CisJYXNzZXJ0VHJ1ZShzaWduYXR1cmUuY2hlY2tTaWduYXR1cmVWYWx1ZShwdWJLZXkpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0U2lnbmluZ1ZlcmlmeWluZ0Zyb21FeGlzdGluZ1NpZ25hdHVyZVNhbWVUaHJlYWQoKQorCXRocm93cyBUaHJvd2FibGUgeworCURvY3VtZW50IGRvYyA9IGdldE9yaWdpbmFsRG9jdW1lbnQoKTsKKwlYTUxTaWduYXR1cmUgc2lnbmF0dXJlID0gc2lnbkRvY3VtZW50KGRvYyk7CisKKwlQdWJsaWNLZXkgcHViS2V5ID0gZ2V0UHVibGljS2V5KCk7CisJCQorCVZlcmlmeWluZ1J1bm5hYmxlIHIgPSBuZXcgVmVyaWZ5aW5nUnVubmFibGUoc2lnbmF0dXJlLCBwdWJLZXkpOworCXIucnVuKCk7CisJaWYgKHIudGhyb3dhYmxlICE9IG51bGwpIHsKKwkgICAgdGhyb3cgci50aHJvd2FibGU7CisJfQorCWFzc2VydFRydWUoci5yZXN1bHQpOworICAgIH0KKwkKKyAgICBwdWJsaWMgdm9pZCB0ZXN0U2lnbmluZ1ZlcmlmeWluZ0Zyb21FeGlzdGluZ1NpZ25hdHVyZVNlcGFyYXRlVGhyZWFkKCkKKwl0aHJvd3MgVGhyb3dhYmxlIHsKKwlEb2N1bWVudCBkb2MgPSBnZXRPcmlnaW5hbERvY3VtZW50KCk7CisJWE1MU2lnbmF0dXJlIHNpZ25hdHVyZSA9IHNpZ25Eb2N1bWVudChkb2MpOworCisJUHVibGljS2V5IHB1YktleSA9IGdldFB1YmxpY0tleSgpOworCVZlcmlmeWluZ1J1bm5hYmxlIHIgPSBuZXcgVmVyaWZ5aW5nUnVubmFibGUoc2lnbmF0dXJlLCBwdWJLZXkpOworCVRocmVhZCB0ID0gbmV3IFRocmVhZChyKTsKKwl0LnN0YXJ0KCk7CisJdC5qb2luKCk7CisJaWYgKHIudGhyb3dhYmxlICE9IG51bGwpIHsKKwkgICAgdGhyb3cgci50aHJvd2FibGU7CisJfQorCWFzc2VydFRydWUoci5yZXN1bHQpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgVmVyaWZ5aW5nUnVubmFibGUgaW1wbGVtZW50cyBSdW5uYWJsZSB7CisJcHVibGljIHZvbGF0aWxlIFRocm93YWJsZSB0aHJvd2FibGU7CisJcHVibGljIHZvbGF0aWxlIGJvb2xlYW4gcmVzdWx0OworCXByaXZhdGUgWE1MU2lnbmF0dXJlIHNpZ25hdHVyZTsKKwlwcml2YXRlIFB1YmxpY0tleSBwdWJLZXk7CisKKwlwdWJsaWMgVmVyaWZ5aW5nUnVubmFibGUoWE1MU2lnbmF0dXJlIHNpZ25hdHVyZSwgUHVibGljS2V5IHB1YktleSkgeworCSAgICB0aGlzLnNpZ25hdHVyZSA9IHNpZ25hdHVyZTsKKwkgICAgdGhpcy5wdWJLZXkgPSBwdWJLZXk7CisJfQorCisJcHVibGljIHZvaWQgcnVuKCkgeworCSAgICB0cnkgeworCQlyZXN1bHQgPSBzaWduYXR1cmUuY2hlY2tTaWduYXR1cmVWYWx1ZShwdWJLZXkpOworCSAgICB9IGNhdGNoIChYTUxTaWduYXR1cmVFeGNlcHRpb24gZSkgeworCQl0aHJvd2FibGUgPSBlOworCSAgICB9CisJfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9zaWduYXR1cmUvVW5rbm93bkFsZ29TaWduYXR1cmVUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3Qvc2lnbmF0dXJlL1Vua25vd25BbGdvU2lnbmF0dXJlVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1NTliOWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3Qvc2lnbmF0dXJlL1Vua25vd25BbGdvU2lnbmF0dXJlVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTg2IEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDggVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LnNpZ25hdHVyZTsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5U3RvcmU7CitpbXBvcnQgamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlB1YmxpY0tleTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb247CitpbXBvcnQgamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZTsKKworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5OworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb247CitpbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckV4Y2VwdGlvbjsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOworaW1wb3J0IGp1bml0LnRleHR1aS5UZXN0UnVubmVyOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuSW5pdDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmV4Y2VwdGlvbnMuWE1MU2VjdXJpdHlFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QuVGVzdFV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQVBJOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uOworCisvKioKKyAqIFRlc3RzIGNhc2VzIHdoZXJlIHNpZ25hdHVyZSBhbGdvcml0aG1zIGFyZSB1bmtub3duLgorICogPHA+CisgKiBUaGUgc291cmNlIGRvY3VtZW50cyBhcmUgYmFzZWQgb24gdGhhdCBjcmVhdGVkIGJ5IHRoZSBjbGFzcyA8Y29kZT4KKyAqIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNhbXBsZXMuc2lnbmF0dXJlLkNyZWF0ZUVudmVsb3BpbmdTaWduYXR1cmU8L2NvZGU+CisgKiA8L3A+CisgKi8KK3B1YmxpYyBjbGFzcyBVbmtub3duQWxnb1NpZ25hdHVyZVRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQkFTRURJUiA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTRVAgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImZpbGUuc2VwYXJhdG9yIik7CisKKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBLRVlTVE9SRV9UWVBFID0gIkpLUyI7CisKKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBLRVlTVE9SRV9GSUxFID0gImRhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvc2FtcGxlcy9pbnB1dC9rZXlzdG9yZS5qa3MiOworCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ0VSVF9BTElBUyA9ICJ0ZXN0IjsKKworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIFNJR05BVFVSRV9TT1VSQ0VfUEFUSCA9ICJkYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RlbXAvc2lnbmF0dXJlIjsKKworICAgIHByb3RlY3RlZCBQdWJsaWNLZXkgcHVibGljS2V5OworCisgICAgc3RhdGljIHsKKyAgICAgICAgSW5pdC5pbml0KCk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkgeworICAgICAgICByZXR1cm4gbmV3IFRlc3RTdWl0ZShVbmtub3duQWxnb1NpZ25hdHVyZVRlc3QuY2xhc3MpOworICAgIH0KKworICAgIHB1YmxpYyBVbmtub3duQWxnb1NpZ25hdHVyZVRlc3QoU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgc3VwZXIobmFtZSk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBTdHJpbmdbXSB0ZXN0Q2FzZU5hbWUgPSB7ICItbm9sb2FkaW5nIiwKKyAgICAgICAgICAgICAgICBVbmtub3duQWxnb1NpZ25hdHVyZVRlc3QuY2xhc3MuZ2V0TmFtZSgpIH07CisgICAgICAgIFRlc3RSdW5uZXIubWFpbih0ZXN0Q2FzZU5hbWUpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFVwKCkgdGhyb3dzIEtleVN0b3JlRXhjZXB0aW9uLCBOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24sCisgICAgICAgICAgICBDZXJ0aWZpY2F0ZUV4Y2VwdGlvbiwgSU9FeGNlcHRpb24geworCUZpbGVJbnB1dFN0cmVhbSBmaXMgPSBudWxsOworCWlmIChCQVNFRElSICE9IG51bGwgJiYgISIiLmVxdWFscyhCQVNFRElSKSkgeworICAgICAgICAgICAgZmlzID0gbmV3IEZpbGVJbnB1dFN0cmVhbShCQVNFRElSICsgU0VQICsgS0VZU1RPUkVfRklMRSk7CisJfSBlbHNlIHsKKyAgICAgICAgICAgIGZpcyA9IG5ldyBGaWxlSW5wdXRTdHJlYW0oS0VZU1RPUkVfRklMRSk7CisJfQorCUtleVN0b3JlIGtleVN0b3JlID0gS2V5U3RvcmUuZ2V0SW5zdGFuY2UoS0VZU1RPUkVfVFlQRSk7CisgICAgICAgIGtleVN0b3JlLmxvYWQoZmlzLCBudWxsKTsKKyAgICAgICAgWDUwOUNlcnRpZmljYXRlIGNlcnQgPSAoWDUwOUNlcnRpZmljYXRlKSBrZXlTdG9yZQorICAgICAgICAgICAgICAgIC5nZXRDZXJ0aWZpY2F0ZShDRVJUX0FMSUFTKTsKKyAgICAgICAgcHVibGljS2V5ID0gY2VydC5nZXRQdWJsaWNLZXkoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0R29vZCgpIHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLCBTQVhFeGNlcHRpb24sCisgICAgICAgICAgICBJT0V4Y2VwdGlvbiwgVHJhbnNmb3JtZXJFeGNlcHRpb24sIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiwKKyAgICAgICAgICAgIFhNTFNlY3VyaXR5RXhjZXB0aW9uIHsKKyAgICAgICAgYXNzZXJ0VHJ1ZShjaGVja1NpZ25hdHVyZSgic2lnbmF0dXJlLWdvb2QueG1sIikpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RCYWRDMTROQWxnbygpIHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgU0FYRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiwgVHJhbnNmb3JtZXJFeGNlcHRpb24sCisgICAgICAgICAgICBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBhc3NlcnRUcnVlKGNoZWNrU2lnbmF0dXJlKCJzaWduYXR1cmUtYmFkLWMxNG4tYWxnby54bWwiKSk7CisgICAgICAgICAgICBmYWlsKCJFeGNlcHRpb24gbm90IGNhdWdodCIpOworICAgICAgICB9IGNhdGNoIChJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAvLyBzdWNjZWVkCisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0QmFkU2lnQWxnbygpIHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgU0FYRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiwgVHJhbnNmb3JtZXJFeGNlcHRpb24sCisgICAgICAgICAgICBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBhc3NlcnRUcnVlKGNoZWNrU2lnbmF0dXJlKCJzaWduYXR1cmUtYmFkLXNpZy1hbGdvLnhtbCIpKTsKKyAgICAgICAgICAgIGZhaWwoIkV4Y2VwdGlvbiBub3QgY2F1Z2h0Iik7CisgICAgICAgIH0gY2F0Y2ggKFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAvLyBzdWNjZWVkCisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0QmFkVHJhbnNmb3JtQWxnbygpIHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgU0FYRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiwgVHJhbnNmb3JtZXJFeGNlcHRpb24sCisgICAgICAgICAgICBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBhc3NlcnRUcnVlKGNoZWNrUmVmZXJlbmNlcygic2lnbmF0dXJlLWJhZC10cmFuc2Zvcm0tYWxnby54bWwiKSk7CisgICAgICAgICAgICBmYWlsKCJFeGNlcHRpb24gbm90IGNhdWdodCIpOworICAgICAgICB9IGNhdGNoIChYTUxTaWduYXR1cmVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgLy8gc3VjY2VlZAorICAgICAgICB9CisgICAgfQorCisgICAgcHJvdGVjdGVkIGJvb2xlYW4gY2hlY2tTaWduYXR1cmUoU3RyaW5nIGZpbGVOYW1lKQorICAgICAgICAgICAgdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiwgSU9FeGNlcHRpb24sCisgICAgICAgICAgICBUcmFuc2Zvcm1lckV4Y2VwdGlvbiwgWE1MU2VjdXJpdHlFeGNlcHRpb24geworCVhNTFNpZ25hdHVyZSBzaWduYXR1cmUgPSB1bm1hcnNoYWxYTUxTaWduYXR1cmUoZmlsZU5hbWUpOworICAgICAgICByZXR1cm4gc2lnbmF0dXJlLmNoZWNrU2lnbmF0dXJlVmFsdWUocHVibGljS2V5KTsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgYm9vbGVhbiBjaGVja1JlZmVyZW5jZXMoU3RyaW5nIGZpbGVOYW1lKQorICAgICAgICAgICAgdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiwgSU9FeGNlcHRpb24sCisgICAgICAgICAgICBUcmFuc2Zvcm1lckV4Y2VwdGlvbiwgWE1MU2VjdXJpdHlFeGNlcHRpb24geworCVhNTFNpZ25hdHVyZSBzaWduYXR1cmUgPSB1bm1hcnNoYWxYTUxTaWduYXR1cmUoZmlsZU5hbWUpOworICAgICAgICByZXR1cm4gc2lnbmF0dXJlLmdldFNpZ25lZEluZm8oKS52ZXJpZnkoZmFsc2UpOworICAgIH0KKworICAgIHByaXZhdGUgWE1MU2lnbmF0dXJlIHVubWFyc2hhbFhNTFNpZ25hdHVyZShTdHJpbmcgZmlsZU5hbWUpCisgICAgICAgICAgICB0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiwgU0FYRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiwKKyAgICAgICAgICAgIFRyYW5zZm9ybWVyRXhjZXB0aW9uLCBYTUxTZWN1cml0eUV4Y2VwdGlvbiB7CisJRmlsZSBmaWxlID0gbnVsbDsKKwlpZiAoQkFTRURJUiAhPSBudWxsICYmICEiIi5lcXVhbHMoQkFTRURJUikpIHsKKyAgICAgICAgICAgIGZpbGUgPSBuZXcgRmlsZShCQVNFRElSICsgU0VQICsgU0lHTkFUVVJFX1NPVVJDRV9QQVRILCBmaWxlTmFtZSk7CisJfSBlbHNlIHsKKyAgICAgICAgICAgIGZpbGUgPSBuZXcgRmlsZShTSUdOQVRVUkVfU09VUkNFX1BBVEgsIGZpbGVOYW1lKTsKKwl9CisgICAgICAgIERvY3VtZW50IGRvYyA9IGdldERvY3VtZW50KGZpbGUpOworICAgICAgICBFbGVtZW50IG5zY29udGV4dCA9IFRlc3RVdGlscy5jcmVhdGVEU2N0eChkb2MsICJkcyIsCisgICAgICAgICAgICAgICAgQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUyk7CisgICAgICAgIEVsZW1lbnQgc2lnbmF0dXJlRWwgPSAoRWxlbWVudCkgWFBhdGhBUEkuc2VsZWN0U2luZ2xlTm9kZShkb2MsCisgICAgICAgICAgICAgICAgIi8vZHM6U2lnbmF0dXJlWzFdIiwgbnNjb250ZXh0KTsKKyAgICAgICAgWE1MU2lnbmF0dXJlIHNpZ25hdHVyZSA9IG5ldyBYTUxTaWduYXR1cmUoc2lnbmF0dXJlRWwsIGZpbGUudG9VUkwoKQorICAgICAgICAgICAgICAgIC50b1N0cmluZygpKTsKKwlyZXR1cm4gc2lnbmF0dXJlOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgRG9jdW1lbnQgZ2V0RG9jdW1lbnQoRmlsZSBmaWxlKQorICAgICAgICAgICAgdGhyb3dzIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiwgSU9FeGNlcHRpb24geworICAgICAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKyAgICAgICAgZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworICAgICAgICBEb2N1bWVudEJ1aWxkZXIgZGIgPSBkYmYubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgICAgIERvY3VtZW50IGRvYyA9IGRiLnBhcnNlKG5ldyBGaWxlSW5wdXRTdHJlYW0oZmlsZSkpOworICAgICAgICByZXR1cm4gZG9jOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9zaWduYXR1cmUvWDUwOURhdGFUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3Qvc2lnbmF0dXJlL1g1MDlEYXRhVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkOTQ5ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3Qvc2lnbmF0dXJlL1g1MDlEYXRhVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTE3IEBACisvKg0KKyAqIENvcHlyaWdodCAyMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4NCisgKg0KKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5zaWduYXR1cmU7DQorDQoraW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07DQoraW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtOw0KK2ltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsNCitpbXBvcnQgamF2YS5zZWN1cml0eS5LZXlTdG9yZTsNCitpbXBvcnQgamF2YS5zZWN1cml0eS5Qcml2YXRlS2V5Ow0KK2ltcG9ydCBqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlOw0KKw0KK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQ7DQoraW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmU7DQoraW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlJGQzIyNTNQYXJzZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOw0KK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsNCitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsNCisNCitwdWJsaWMgY2xhc3MgWDUwOURhdGFUZXN0IGV4dGVuZHMgVGVzdENhc2Ugew0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBCQVNFRElSID0gU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIik7CisKKwlLZXlTdG9yZSBrcz1udWxsOw0KKwlLZXlTdG9yZSBnZXRLZXlTdG9yZSgpIHRocm93cyBFeGNlcHRpb24gew0KKwkJaWYgKGtzIT1udWxsKQ0KKwkJCXJldHVybiBrczsNCisJCVN0cmluZyBrZXlzdG9yZVR5cGUgPSAiSktTIjsNCisJICAgIFN0cmluZyBrZXlzdG9yZUZpbGUgPSAiZGF0YS9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS9zYW1wbGVzL2lucHV0L2tleXN0b3JlLmprcyI7DQorCSAgICBTdHJpbmcga2V5c3RvcmVQYXNzID0gInhtbHNlY3VyaXR5IjsJICAgIA0KKwkgICAga3MgPSBLZXlTdG9yZS5nZXRJbnN0YW5jZShrZXlzdG9yZVR5cGUpOw0KKwkgICAgRmlsZUlucHV0U3RyZWFtIGZpcyA9IG51bGw7CisgICAgICAgICAgICBpZiAoQkFTRURJUiAhPSBudWxsICYmICEiIi5lcXVhbHMoQkFTRURJUikpIHsKKyAgICAgICAgICAgICAgICBmaXMgPSBuZXcgRmlsZUlucHV0U3RyZWFtKEJBU0VESVIgKyAiLyIgKyBrZXlzdG9yZUZpbGUpOw0KKwkgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBmaXMgPSBuZXcgRmlsZUlucHV0U3RyZWFtKGtleXN0b3JlRmlsZSk7DQorCSAgICB9CisJICAgIC8vbG9hZCB0aGUga2V5c3RvcmUNCisJICAgIGtzLmxvYWQoZmlzLCBrZXlzdG9yZVBhc3MudG9DaGFyQXJyYXkoKSk7DQorCSAgICByZXR1cm4ga3M7DQorCX0NCisJWDUwOUNlcnRpZmljYXRlIGdldENlcnRpZmljYXRlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorCQlTdHJpbmcgY2VydGlmaWNhdGVBbGlhcyA9ICJ0ZXN0IjsJICAgIA0KKwkJWDUwOUNlcnRpZmljYXRlIGNlcnQgPQ0KKyAgICAgICAgICAgIChYNTA5Q2VydGlmaWNhdGUpIGdldEtleVN0b3JlKCkuZ2V0Q2VydGlmaWNhdGUoY2VydGlmaWNhdGVBbGlhcyk7DQorCQlyZXR1cm4gY2VydDsNCisJfQ0KKwlQcml2YXRlS2V5IGdldFByaXZhdGVLZXkoKSB0aHJvd3MgRXhjZXB0aW9uIHsNCisJCVN0cmluZyBwcml2YXRlS2V5QWxpYXMgPSAidGVzdCI7DQorCSAgICBTdHJpbmcgcHJpdmF0ZUtleVBhc3MgPSAieG1sc2VjdXJpdHkiOwkgICAgDQorCQlQcml2YXRlS2V5IHByaXZhdGVLZXkgPSAoUHJpdmF0ZUtleSkgZ2V0S2V5U3RvcmUoKS5nZXRLZXkocHJpdmF0ZUtleUFsaWFzLA0KKyAgICAgICAgICAgICAgICBwcml2YXRlS2V5UGFzcy50b0NoYXJBcnJheSgpKTsNCisJCXJldHVybiBwcml2YXRlS2V5Ow0KKwl9DQorCXB1YmxpYyBYTUxTaWduYXR1cmUgZ2V0U2lnbmF0dXJlKGJ5dGVbXSBzKSB0aHJvd3MgRXhjZXB0aW9uIHsNCisJCWphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmID0NCisJICAgICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOw0KKw0KKwkgICAgICAvL1hNTCBTaWduYXR1cmUgbmVlZHMgdG8gYmUgbmFtZXNwYWNlIGF3YXJlDQorCSAgICAgIGRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsNCisNCisJICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyIGRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOw0KKwkJRG9jdW1lbnQgZG9jPWRiLnBhcnNlKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShzKSk7DQorCQlFbGVtZW50IGVsPShFbGVtZW50KWRvYy5nZXRGaXJzdENoaWxkKCk7DQorCQlyZXR1cm4gbmV3IFhNTFNpZ25hdHVyZShlbCwiIik7DQorCX0NCisJcHVibGljIHZvaWQgdGVzdEFkZFg1MDlTdWJqZWN0TmFtZSgpIHRocm93cyBFeGNlcHRpb24gew0KKwkJSW5pdC5pbml0KCk7DQorCQlqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRiZiA9DQorCSAgICAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsNCisNCisJICAgICAgLy9YTUwgU2lnbmF0dXJlIG5lZWRzIHRvIGJlIG5hbWVzcGFjZSBhd2FyZQ0KKwkgICAgICBkYmYuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7DQorDQorCSAgICAgIGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlciBkYiA9IGRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKTsNCisJICAgICAgb3JnLnczYy5kb20uRG9jdW1lbnQgZG9jID0gZGIubmV3RG9jdW1lbnQoKTsNCisJCSAJWE1MU2lnbmF0dXJlIHNpZyA9IG5ldyBYTUxTaWduYXR1cmUoZG9jLCAiIiwNCisgICAgICAgICAgICAgICAgIFhNTFNpZ25hdHVyZS5BTEdPX0lEX1NJR05BVFVSRV9EU0EpOw0KKwkJIAlkb2MuYXBwZW5kQ2hpbGQoc2lnLmdldEVsZW1lbnQoKSk7DQorCQkgCXNpZy5hZGREb2N1bWVudCgiIik7DQorCSAgICAgICAgIC8vQWRkIGluIHRoZSBLZXlJbmZvIGZvciB0aGUgY2VydGlmaWNhdGUgdGhhdCB3ZSB1c2VkIHRoZSBwcml2YXRlIGtleSBvZgkgICAgICAgICANCisJCSAJWDUwOUNlcnRpZmljYXRlIGNlcnQgPWdldENlcnRpZmljYXRlKCk7DQorCSAgICAgICAgIHNpZy5hZGRLZXlJbmZvKGNlcnQpOw0KKwkgICAgICAgICBzaWcuYWRkS2V5SW5mbyhjZXJ0LmdldFB1YmxpY0tleSgpKTsNCisJICAgICAgICAgLy8gQWRkIHRoZXNlIHRocmVlIGxpbmVzDQorCSAgICAgICAgIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuS2V5SW5mbyBraSA9IHNpZy5nZXRLZXlJbmZvKCk7DQorCSAgICAgICAgIGtpLml0ZW1YNTA5RGF0YSgwKS5hZGRTdWJqZWN0TmFtZShjZXJ0LmdldFN1YmplY3RETigpLnRvU3RyaW5nKCkpOw0KKwkgICAgICAgICBraS5pdGVtWDUwOURhdGEoMCkuYWRkSXNzdWVyU2VyaWFsKGNlcnQuZ2V0SXNzdWVyRE4oKS50b1N0cmluZygpLA0KKwkgICAgICAgIAkJIGNlcnQuZ2V0U2VyaWFsTnVtYmVyKCkpOwkgICAgICAgICANCisJICAgICAgICAgc2lnLnNpZ24oZ2V0UHJpdmF0ZUtleSgpKTsNCisJICAgICAgICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtIG9zID0gbmV3IEJ5dGVBcnJheU91dHB1dFN0cmVhbSgpOw0KKwkgICAgICAgICBYTUxVdGlscy5vdXRwdXRET00oZG9jLCBvcyk7DQorCSAgICAgICAgIFhNTFNpZ25hdHVyZSBuZXdTaWc9Z2V0U2lnbmF0dXJlKG9zLnRvQnl0ZUFycmF5KCkpOw0KKwkgICAgICAgICBhc3NlcnROb3ROdWxsKG5ld1NpZy5nZXRLZXlJbmZvKCkuaXRlbVg1MDlEYXRhKDApKTsNCisJICAgICAgICAgYXNzZXJ0RXF1YWxzKFJGQzIyNTNQYXJzZXIubm9ybWFsaXplKGNlcnQuZ2V0U3ViamVjdEROKCkudG9TdHJpbmcoKSksDQorCSAgICAgICAgCQkgCW5ld1NpZy5nZXRLZXlJbmZvKCkuaXRlbVg1MDlEYXRhKDApLml0ZW1TdWJqZWN0TmFtZSgwKS5nZXRTdWJqZWN0TmFtZSgpKTsNCisJICAgICAgICAgYXNzZXJ0RXF1YWxzKFJGQzIyNTNQYXJzZXIubm9ybWFsaXplKGNlcnQuZ2V0SXNzdWVyRE4oKS50b1N0cmluZygpKSwNCisJICAgICAgICAJCSAJbmV3U2lnLmdldEtleUluZm8oKS5pdGVtWDUwOURhdGEoMCkuaXRlbUlzc3VlclNlcmlhbCgwKS5nZXRJc3N1ZXJOYW1lKCkpOw0KKwkNCisJfQ0KKwkNCit9DQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3NpZ25hdHVyZS9YTUxTaWduYXR1cmVJbnB1dFRlc3QuamF2YSBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9zaWduYXR1cmUvWE1MU2lnbmF0dXJlSW5wdXRUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdmOTEwMwotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9zaWduYXR1cmUvWE1MU2lnbmF0dXJlSW5wdXRUZXN0LmphdmEKQEAgLTAsMCArMSwyMTQgQEAKKworLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5zaWduYXR1cmU7CisKKworCitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmVJbnB1dDsKKworCisvKioKKyAqIFVuaXQgdGVzdCBmb3Ige0BsaW5rIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmVJbnB1dH0KKyAqCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubgorICogQHNlZSA8QSBIUkVGPSJodHRwOi8vbmFnb3lhLmFwYWNoZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTQzMzYiPkJ1ZyA0MzM2PC9BPgorICovCitwdWJsaWMgY2xhc3MgWE1MU2lnbmF0dXJlSW5wdXRUZXN0IGV4dGVuZHMgVGVzdENhc2UgeworCisgICAvKioge0BsaW5rIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nfSBsb2dnaW5nIGZhY2lsaXR5ICovCisgICAgc3RhdGljIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZyBsb2cgPSAKKyAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeS5nZXRMb2coWE1MU2lnbmF0dXJlSW5wdXRUZXN0LmNsYXNzLmdldE5hbWUoKSk7CisKKyAgIC8qKgorICAgICogTWV0aG9kIHN1aXRlCisgICAgKgorICAgICoKKyAgICAqLworICAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkgeworICAgICAgcmV0dXJuIG5ldyBUZXN0U3VpdGUoWE1MU2lnbmF0dXJlSW5wdXRUZXN0LmNsYXNzKTsKKyAgIH0KKworICAgLy9KLQorICAgc3RhdGljIGZpbmFsIFN0cmluZyBfb2N0ZXRTdHJlYW1UZXh0SW5wdXQgPSAiS2xlaW5lciBUZXN0IjsKKyAgIC8vSisKKworICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvciBYTUxTaWduYXR1cmVJbnB1dFRlc3QKKyAgICAqCisgICAgKgorICAgICogQHBhcmFtIE5hbWVfCisgICAgKgorICAgICovCisgICBwdWJsaWMgWE1MU2lnbmF0dXJlSW5wdXRUZXN0KFN0cmluZyBOYW1lXykgeworICAgICAgc3VwZXIoTmFtZV8pOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCBtYWluCisgICAgKgorICAgICoKKyAgICAqIEBwYXJhbSBhcmdzCisgICAgKgorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisKKyAgICAgIFN0cmluZ1tdIHRlc3RDYXNlTmFtZSA9IHsgIi1ub2xvYWRpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxTaWduYXR1cmVJbnB1dFRlc3QuY2xhc3MuZ2V0TmFtZSgpIH07CisKKyAgICAgIGp1bml0LnRleHR1aS5UZXN0UnVubmVyLm1haW4odGVzdENhc2VOYW1lKTsKKyAgIH0KKworCisKKyAgIC8qKgorICAgICogTWV0aG9kIHRlc3RTZXRPY3RldFN0cmVhbUdldE9jdGV0U3RyZWFtCisgICAgKgorICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0U2V0T2N0ZXRTdHJlYW1HZXRPY3RldFN0cmVhbSgpCisgICAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiwgQ2Fub25pY2FsaXphdGlvbkV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uIHsKKworICAgICAgSW5wdXRTdHJlYW0gaW5wdXRTdHJlYW0gPQorICAgICAgICAgbmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKF9vY3RldFN0cmVhbVRleHRJbnB1dC5nZXRCeXRlcygiVVRGLTgiKSk7CisgICAgICBYTUxTaWduYXR1cmVJbnB1dCBpbnB1dCA9IG5ldyBYTUxTaWduYXR1cmVJbnB1dChpbnB1dFN0cmVhbSk7CisgICAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gYmFvcyA9IG5ldyBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKTsKKyAgICAgIElucHV0U3RyZWFtIHJlcyA9IGlucHV0LmdldE9jdGV0U3RyZWFtKCk7CisgICAgICBpbnQgb2ZmID0gMDsKKworICAgICAgd2hpbGUgKHJlcy5hdmFpbGFibGUoKSA+IDApIHsKKyAgICAgICAgIGJ5dGUgYXJyYXlbXSA9IG5ldyBieXRlWzEwMjRdOworICAgICAgICAgaW50IGxlbiA9IHJlcy5yZWFkKGFycmF5KTsKKworICAgICAgICAgYmFvcy53cml0ZShhcnJheSwgb2ZmLCBsZW4pOworCisgICAgICAgICBvZmYgKz0gbGVuOworICAgICAgfQorCisgICAgICBieXRlIHJlc0J5dGVzW10gPSBiYW9zLnRvQnl0ZUFycmF5KCk7CisgICAgICBTdHJpbmcgcmVzU3RyaW5nID0gbmV3IFN0cmluZyhyZXNCeXRlcywgIlVURi04Iik7CisKKyAgICAgIGFzc2VydFRydWUocmVzU3RyaW5nLmVxdWFscyhfb2N0ZXRTdHJlYW1UZXh0SW5wdXQpKTsKKyAgIH0KKworICAgLy9KLQorICAgc3RhdGljIGZpbmFsIFN0cmluZyBfbm9kZVNldElucHV0MSA9CisgICAgICAgICI8P3htbCB2ZXJzaW9uPVwiMS4wXCI/PlxuIgorICAgICAgKyAiPCFET0NUWVBFIGRvYyBbXG4iCisgICAgICArICI8IUVMRU1FTlQgZG9jIChuKyk+XG4iCisgICAgICArICI8IUVMRU1FTlQgbiAoI1BDREFUQSk+XG4iCisgICAgICArICJdPlxuIgorICAgICAgKyAiPCEtLSBmdWxsIGRvY3VtZW50IHdpdGggZGVjbCAtLT4iCisgICAgICArICI8ZG9jPiIKKyAgICAgICsgIjxuPjE8L24+IgorICAgICAgKyAiPG4+Mjwvbj4iCisgICAgICArICI8bj4zPC9uPiIKKyAgICAgICsgIjxuPjQ8L24+IgorICAgICAgKyAiPC9kb2M+IjsKKyAgIC8vIGFkZGVkIG9uZSBmb3IgeG1sbnM6eG1sIHNpbmNlIFhhbGFuIDIuMi5EMTEKKyAgIHN0YXRpYyBmaW5hbCBpbnQgX25vZGVTZXRJbnB1dDFOb2RlcyA9IDExOyAvLyB3YXMgMTAKKyAgIHN0YXRpYyBmaW5hbCBpbnQgX25vZGVTZXRJbnB1dDFOb2Rlc1dpdGhDb21tZW50cyA9IF9ub2RlU2V0SW5wdXQxTm9kZXMgKyAxOworICAgLy9KKworICAgLy9KLQorICAgc3RhdGljIGZpbmFsIFN0cmluZyBfbm9kZVNldElucHV0MiA9CisgICAgICAgICI8P3htbCB2ZXJzaW9uPVwiMS4wXCI/PlxuIgorICAgICAgKyAiPCEtLSBmdWxsIGRvY3VtZW50IC0tPiIKKyAgICAgICsgIjxkb2M+IgorICAgICAgKyAiPG4+MTwvbj4iCisgICAgICArICI8bj4yPC9uPiIKKyAgICAgICsgIjxuPjM8L24+IgorICAgICAgKyAiPG4+NDwvbj4iCisgICAgICArICI8L2RvYz4iOworICAgLy8gYWRkZWQgb25lIGZvciB4bWxuczp4bWwgc2luY2UgWGFsYW4gMi4yLkQxMQorICAgc3RhdGljIGZpbmFsIGludCBfbm9kZVNldElucHV0Mk5vZGVzID0gMTE7IC8vIHdhcyAxMAorICAgc3RhdGljIGZpbmFsIGludCBfbm9kZVNldElucHV0Mk5vZGVzV2l0aENvbW1lbnRzID0gX25vZGVTZXRJbnB1dDJOb2RlcyArIDE7CisgICAvL0orCisgICAvL0otCisgICBzdGF0aWMgZmluYWwgU3RyaW5nIF9ub2RlU2V0SW5wdXQzID0KKyAgICAgICAgIjwhLS0gZG9jdW1lbnQgLS0+IgorICAgICAgKyAiPGRvYz4iCisgICAgICArICI8bj4xPC9uPiIKKyAgICAgICsgIjxuPjI8L24+IgorICAgICAgKyAiPG4+Mzwvbj4iCisgICAgICArICI8bj40PC9uPiIKKyAgICAgICsgIjwvZG9jPiI7CisgICAvLyBhZGRlZCBvbmUgZm9yIHhtbG5zOnhtbCBzaW5jZSBYYWxhbiAyLjIuRDExCisgICBzdGF0aWMgZmluYWwgaW50IF9ub2RlU2V0SW5wdXQzTm9kZXMgPSAxMTsgLy8gd2FzIDEwCisgICBzdGF0aWMgZmluYWwgaW50IF9ub2RlU2V0SW5wdXQzTm9kZXNXaXRoQ29tbWVudHMgPSBfbm9kZVNldElucHV0M05vZGVzICsgMTsKKyAgIC8vSisKKworCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0SXNJbml0aWFsaXplZAorICAgICoKKyAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3RJc0luaXRpYWxpemVkV2l0aE9jdGV0U3RyZWFtKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKworICAgICAgSW5wdXRTdHJlYW0gaW5wdXRTdHJlYW0gPQorICAgICAgICAgbmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKF9vY3RldFN0cmVhbVRleHRJbnB1dC5nZXRCeXRlcygpKTsKKyAgICAgIFhNTFNpZ25hdHVyZUlucHV0IGlucHV0ID0gbmV3IFhNTFNpZ25hdHVyZUlucHV0KGlucHV0U3RyZWFtKTsKKworICAgICAgYXNzZXJ0VHJ1ZSgiSW5wdXQgaXMgaW5pdGlhbGl6ZWQiLCBpbnB1dC5pc0luaXRpYWxpemVkKCkpOworICAgfQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0T2N0ZXRTdHJlYW1Jc09jdGV0U3RyZWFtCisgICAgKgorICAgICogQHRocm93cyBJT0V4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgdGVzdE9jdGV0U3RyZWFtSXNPY3RldFN0cmVhbSgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisKKyAgICAgIElucHV0U3RyZWFtIGlucHV0U3RyZWFtID0KKyAgICAgICAgIG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShfb2N0ZXRTdHJlYW1UZXh0SW5wdXQuZ2V0Qnl0ZXMoKSk7CisgICAgICBYTUxTaWduYXR1cmVJbnB1dCBpbnB1dCA9IG5ldyBYTUxTaWduYXR1cmVJbnB1dChpbnB1dFN0cmVhbSk7CisKKyAgICAgIGFzc2VydFRydWUoIklucHV0IGlzIG9jdGV0IHN0cmVhbSIsIGlucHV0LmlzT2N0ZXRTdHJlYW0oKSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHRlc3RPY3RldFN0cmVhbUlzTm90Tm9kZVNldAorICAgICoKKyAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3RPY3RldFN0cmVhbUlzTm90Tm9kZVNldCgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisKKyAgICAgIElucHV0U3RyZWFtIGlucHV0U3RyZWFtID0KKyAgICAgICAgIG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShfb2N0ZXRTdHJlYW1UZXh0SW5wdXQuZ2V0Qnl0ZXMoKSk7CisgICAgICBYTUxTaWduYXR1cmVJbnB1dCBpbnB1dCA9IG5ldyBYTUxTaWduYXR1cmVJbnB1dChpbnB1dFN0cmVhbSk7CisKKyAgICAgIGFzc2VydFRydWUoIklucHV0IGlzIG5vdCBub2RlIHNldCIsICFpbnB1dC5pc05vZGVTZXQoKSk7CisgICB9CisKKyAgIHN0YXRpYyB7CisgICAgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC9zaWduYXR1cmUvWFBvaW50ZXJSZXNvdXJjZVJlc29sdmVyLmphdmEgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3Qvc2lnbmF0dXJlL1hQb2ludGVyUmVzb3VyY2VSZXNvbHZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNTgwMTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3Qvc2lnbmF0dXJlL1hQb2ludGVyUmVzb3VyY2VSZXNvbHZlci5qYXZhCkBAIC0wLDAgKzEsMjQyIEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3Quc2lnbmF0dXJlOworCitpbXBvcnQgamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uOworaW1wb3J0IGphdmEubmV0LlVSTERlY29kZXI7CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworCitpbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckV4Y2VwdGlvbjsKKworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZzsKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmVJbnB1dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5yZXNvbHZlci5SZXNvdXJjZVJlc29sdmVyRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyLlJlc291cmNlUmVzb2x2ZXJTcGk7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwudXRpbHMuUHJlZml4UmVzb2x2ZXJEZWZhdWx0OworaW1wb3J0IG9yZy5hcGFjaGUueHBhdGguWFBhdGhBUEk7CitpbXBvcnQgb3JnLmFwYWNoZS54cGF0aC5heGVzLk5vZGVTZXF1ZW5jZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhwYXRoLm9iamVjdHMuWE9iamVjdDsKK2ltcG9ydCBvcmcudzNjLmRvbS5BdHRyOworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZUxpc3Q7CisKKy8qKgorICogQW4gaW1wbGVtZW50YXRpb24gb2YgYSByZXNvdXJjZSByZXNvbHZlciwgd2hpY2ggZXZhbHVhdGVzIHhwb2ludGVyIGV4cHJlc3Npb25zLgorICogCisgKiBAYXV0aG9yIHdnbGFzCisgKi8KK3B1YmxpYyBjbGFzcyBYUG9pbnRlclJlc291cmNlUmVzb2x2ZXIgZXh0ZW5kcyBSZXNvdXJjZVJlc29sdmVyU3BpCit7CisgICAgcHJpdmF0ZSBzdGF0aWMgTG9nIGxvZyA9IExvZ0ZhY3RvcnkuZ2V0TG9nKFhQb2ludGVyUmVzb3VyY2VSZXNvbHZlci5jbGFzcyk7CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFhQX09QRU4gPSAieHBvaW50ZXIoIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgWE5TX09QRU4gPSAieG1sbnMoIjsKKyAgICAKKyAgICBwcml2YXRlIE5vZGUgYmFzZU5vZGU7CisgICAgCisgICAgcHVibGljIFhQb2ludGVyUmVzb3VyY2VSZXNvbHZlcihOb2RlIGJhc2VOb2RlKQorICAgIHsKKyAgICAgICAgdGhpcy5iYXNlTm9kZSA9IGJhc2VOb2RlOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBYUG9pbnRlclByZWZpeFJlc29sdmVyIGV4dGVuZHMgUHJlZml4UmVzb2x2ZXJEZWZhdWx0CisgICAgeworICAgICAgICBwcml2YXRlIE1hcCBleHRyYVByZWZpeGVzOworICAgICAgICAKKyAgICAgICAgcHVibGljIFhQb2ludGVyUHJlZml4UmVzb2x2ZXIoTm9kZSBub2RlKQorICAgICAgICB7CisgICAgICAgICAgICBzdXBlcihub2RlKTsKKyAgICAgICAgICAgIHRoaXMuZXh0cmFQcmVmaXhlcyA9IG5ldyBIYXNoTWFwKCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBhZGRFeHRyYVByZWZpeCAoU3RyaW5nIHBmeCwgU3RyaW5nIG5zVVJJKQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLmV4dHJhUHJlZml4ZXMucHV0KHBmeCxuc1VSSSk7IAorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWVzcGFjZUZvclByZWZpeChTdHJpbmcgcGZ4KQorICAgICAgICB7CisgICAgICAgICAgICBTdHJpbmcgbnNVUkkgPSAoU3RyaW5nKXRoaXMuZXh0cmFQcmVmaXhlcy5nZXQocGZ4KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG5zVVJJICE9IG51bGwpIHJldHVybiBuc1VSSTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmdldE5hbWVzcGFjZUZvclByZWZpeChwZngpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qIChub24tSmF2YWRvYykKKyAgICAgKiBAc2VlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyLlJlc291cmNlUmVzb2x2ZXJTcGkjZW5naW5lQ2FuUmVzb2x2ZShvcmcudzNjLmRvbS5BdHRyLCBqYXZhLmxhbmcuU3RyaW5nKQorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVuZ2luZUNhblJlc29sdmUoQXR0ciB1cmksIFN0cmluZyBCYXNlVVJJKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHYgPSB1cmkuZ2V0Tm9kZVZhbHVlKCk7CisgICAgICAgIAorICAgICAgICBpZiAodj09bnVsbCB8fCB2Lmxlbmd0aCgpIDw9IDApIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIGlmICh2LmNoYXJBdCgwKSAhPSAnIycpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICBTdHJpbmcgeHBVUkk7CisgICAgICAgIHRyeQorICAgICAgICB7CisgICAgICAgICAgICB4cFVSSSA9IFVSTERlY29kZXIuZGVjb2RlKHYsICJ1dGYtOCIpOworICAgICAgICB9IGNhdGNoIChVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvZy53YXJuKCJ1dGYtOCBub3QgYSB2YWxpZCBlbmNvZGluZyIsZSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFN0cmluZyBwYXJ0c1tdID0geHBVUkkuc3Vic3RyaW5nKDEpLnNwbGl0KCJcXHMiKTsKKyAgICAgICAgCisgICAgICAgIC8vIHBsYWluIElEIHJlZmVyZW5jZS4KKyAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PSAxICYmICFwYXJ0c1swXS5zdGFydHNXaXRoKFhOU19PUEVOKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAKKyAgICAgICAgaW50IGk9MDsKKyAgICAgICAgCisgICAgICAgIGZvciAoO2k8cGFydHMubGVuZ3RoLTE7KytpKQorICAgICAgICAgICAgaWYgKCFwYXJ0c1tpXS5lbmRzV2l0aCgiKSIpIHx8ICAhcGFydHNbaV0uc3RhcnRzV2l0aChYTlNfT1BFTikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAoIXBhcnRzW2ldLmVuZHNXaXRoKCIpIikgfHwgIXBhcnRzW2ldLnN0YXJ0c1dpdGgoWFBfT1BFTikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgbG9nLmRlYnVnKCJ4cFVSST0iK3hwVVJJKTsKKyAgICAgICAgbG9nLmRlYnVnKCJCYXNlVVJJPSIrQmFzZVVSSSk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLyogKG5vbi1KYXZhZG9jKQorICAgICAqIEBzZWUgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMucmVzb2x2ZXIuUmVzb3VyY2VSZXNvbHZlclNwaSNlbmdpbmVSZXNvbHZlKG9yZy53M2MuZG9tLkF0dHIsIGphdmEubGFuZy5TdHJpbmcpCisgICAgICovCisgICAgcHVibGljIFhNTFNpZ25hdHVyZUlucHV0IGVuZ2luZVJlc29sdmUoQXR0ciB1cmksIFN0cmluZyBCYXNlVVJJKSB0aHJvd3MgUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbgorICAgIHsKKyAgICAgICAgU3RyaW5nIHYgPSB1cmkuZ2V0Tm9kZVZhbHVlKCk7CisgICAgICAgIAorICAgICAgICBpZiAodi5jaGFyQXQoMCkgIT0gJyMnKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIAorICAgICAgICBTdHJpbmcgeHBVUkk7CisgICAgICAgIHRyeQorICAgICAgICB7CisgICAgICAgICAgICB4cFVSSSA9IFVSTERlY29kZXIuZGVjb2RlKHYsICJ1dGYtOCIpOworICAgICAgICB9IGNhdGNoIChVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvZy53YXJuKCJ1dGYtOCBub3QgYSB2YWxpZCBlbmNvZGluZyIsZSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgU3RyaW5nIHBhcnRzW10gPSB4cFVSSS5zdWJzdHJpbmcoMSkuc3BsaXQoIlxccyIpOworICAgICAgICAKKyAgICAgICAgaW50IGk9MDsKKworICAgICAgICBYUG9pbnRlclByZWZpeFJlc29sdmVyIG5zQ29udGV4dD1udWxsOworICAgICAgICAKKyAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpCisgICAgICAgIHsKKyAgICAgICAgICAgIG5zQ29udGV4dD0gbmV3IFhQb2ludGVyUHJlZml4UmVzb2x2ZXIodGhpcy5iYXNlTm9kZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAoO2k8cGFydHMubGVuZ3RoLTE7KytpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICghcGFydHNbaV0uZW5kc1dpdGgoIikiKSB8fCAgIXBhcnRzW2ldLnN0YXJ0c1dpdGgoWE5TX09QRU4pKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBTdHJpbmcgbWFwcGluZyA9IHBhcnRzW2ldLnN1YnN0cmluZyhYTlNfT1BFTi5sZW5ndGgoKSxwYXJ0c1tpXS5sZW5ndGgoKS0xKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpbnQgcG9zID0gbWFwcGluZy5pbmRleE9mKCc9Jyk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKHBvcyA8PSAwIHx8IHBvcyA+PSBtYXBwaW5nLmxlbmd0aCgpLTEpCisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSZXNvdXJjZVJlc29sdmVyRXhjZXB0aW9uKCJtYWxmb3JtZWQgbmFtZXNwYWNlIHBhcnQgb2YgWFBvaW50ZXIgZXhwcmVzc2lvbiIsdXJpLEJhc2VVUkkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG5zQ29udGV4dC5hZGRFeHRyYVByZWZpeChtYXBwaW5nLnN1YnN0cmluZygwLHBvcyksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLnN1YnN0cmluZyhwb3MrMSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgdHJ5CisgICAgICAgIHsKKyAgICAgICAgICAgIE5vZGUgbm9kZSA9IG51bGw7CisgICAgICAgICAgICBOb2RlTGlzdCBub2Rlcz1udWxsOworICAgICAgICAKKyAgICAgICAgICAgIC8vIHBsYWluIElEIHJlZmVyZW5jZS4KKyAgICAgICAgICAgIGlmIChpPT0wICYmICFwYXJ0c1tpXS5zdGFydHNXaXRoKFhQX09QRU4pKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG5vZGUgPSB0aGlzLmJhc2VOb2RlLmdldE93bmVyRG9jdW1lbnQoKS5nZXRFbGVtZW50QnlJZChwYXJ0c1tpXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCFwYXJ0c1tpXS5lbmRzV2l0aCgiKSIpIHx8ICFwYXJ0c1tpXS5zdGFydHNXaXRoKFhQX09QRU4pKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBTdHJpbmcgeHBhdGhFeHByID0gcGFydHNbaV0uc3Vic3RyaW5nKFhQX09QRU4ubGVuZ3RoKCkscGFydHNbaV0ubGVuZ3RoKCktMSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgWE9iamVjdCB4bzsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAobnNDb250ZXh0ICE9IG51bGwpCisgICAgICAgICAgICAgICAgICAgIHhvID0gWFBhdGhBUEkuZXZhbCh0aGlzLmJhc2VOb2RlLCB4cGF0aEV4cHIsbnNDb250ZXh0KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHhvID0gWFBhdGhBUEkuZXZhbCh0aGlzLmJhc2VOb2RlLCB4cGF0aEV4cHIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICghKHhvIGluc3RhbmNlb2YgTm9kZVNlcXVlbmNlKSkgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbm9kZXMgPSAoKE5vZGVTZXF1ZW5jZSl4bykubm9kZWxpc3QoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAobm9kZXMuZ2V0TGVuZ3RoKCkgPT0gMCkgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAgICAgaWYgKG5vZGVzLmdldExlbmd0aCgpID09IDEpCisgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBub2Rlcy5pdGVtKDApOworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIFhNTFNpZ25hdHVyZUlucHV0IHJlc3VsdCA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChub2RlICE9IG51bGwpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBYTUxTaWduYXR1cmVJbnB1dChub2RlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG5vZGVzICE9bnVsbCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBTZXQgbm9kZVNldCA9IG5ldyBIYXNoU2V0KG5vZGVzLmdldExlbmd0aCgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGZvciAoaW50IGo9MCA7IGo8bm9kZXMuZ2V0TGVuZ3RoKCk7ICsraikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG5vZGVTZXQuYWRkKG5vZGVzLml0ZW0oaikpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBuZXcgWE1MU2lnbmF0dXJlSW5wdXQobm9kZVNldCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJlc3VsdC5zZXRNSU1FVHlwZSgidGV4dC94bWwiKTsKKyAgICAgICAgICAgIHJlc3VsdC5zZXRFeGNsdWRlQ29tbWVudHModHJ1ZSk7CisgICAgICAgICAgICByZXN1bHQuc2V0U291cmNlVVJJKChCYXNlVVJJICE9IG51bGwpID8gQmFzZVVSSS5jb25jYXQodik6dik7ICAgICAgCisKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAKKyAgICAgICAgfSBjYXRjaCAoVHJhbnNmb3JtZXJFeGNlcHRpb24gZSkKKyAgICAgICAgeworICAgICAgICAgICAgdGhyb3cgbmV3IFJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb24oIlRyYW5zZm9ybWVyRXhjZXB0aW9uIGluc2lkZSBYUG9pbnRlciBleHByZXNzaW9uIixlLHVyaSxCYXNlVVJJKTsKKyAgICAgICAgfQorICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3NpZ25hdHVyZS9YbWxTZWNUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3Qvc2lnbmF0dXJlL1htbFNlY1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzdlMmNkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3NpZ25hdHVyZS9YbWxTZWNUZXN0LmphdmEKQEAgLTAsMCArMSwxNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOC0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5zaWduYXR1cmU7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LktleVBhaXI7CitpbXBvcnQgamF2YS5zZWN1cml0eS5LZXlQYWlyR2VuZXJhdG9yOworaW1wb3J0IGphdmEuc2VjdXJpdHkuS2V5U3RvcmU7CitpbXBvcnQgamF2YS5zZWN1cml0eS5Qcml2YXRlS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuUHVibGljS2V5OworaW1wb3J0IGphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGU7CisKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXI7CitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeTsKKworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQ7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYWxnb3JpdGhtcy5NZXNzYWdlRGlnZXN0QWxnb3JpdGhtOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uQ2Fub25pY2FsaXplcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLnBhcmFtcy5YUGF0aENvbnRhaW5lcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5Db25zdGFudHM7CitpbXBvcnQgb3JnLmFwYWNoZS54cGF0aC5YUGF0aEFQSTsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7CisKKy8qKgorICogVGVzdHMgY3JlYXRpbmcgYW5kIHZhbGlkYXRpbmcgYW4gWE1MIFNpZ25hdHVyZSB3aXRoIGFuIFhQYXRoIFRyYW5zZm9ybS4KKyAqIFRlc3RzIGJ1ZyAjNDQ2MTcuCisgKgorICogQGF1dGhvciBGcmFuayBDb3JuZWxpcworICovCitwdWJsaWMgY2xhc3MgWG1sU2VjVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0KKyAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeS5nZXRMb2cKKyAgICAgICAgICAgIChYbWxTZWNUZXN0LmNsYXNzLmdldE5hbWUoKSk7CisKKyAgICBwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKSB7CisgICAgICAgcmV0dXJuIG5ldyBUZXN0U3VpdGUoWG1sU2VjVGVzdC5jbGFzcyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdENoZWNrWG1sU2lnbmF0dXJlU29mdHdhcmVTdGFjaygpIHRocm93cyBFeGNlcHRpb24geworCWNoZWNrWG1sU2lnbmF0dXJlU29mdHdhcmVTdGFjayhmYWxzZSk7CisgICAgfQorICAgIHB1YmxpYyB2b2lkIHRlc3RDaGVja1htbFNpZ25hdHVyZVNvZnR3YXJlU3RhY2tXaXRoQ2VydCgpIHRocm93cyBFeGNlcHRpb24geworCWNoZWNrWG1sU2lnbmF0dXJlU29mdHdhcmVTdGFjayh0cnVlKTsKKyAgICB9CisgICAgcHJpdmF0ZSB2b2lkIGNoZWNrWG1sU2lnbmF0dXJlU29mdHdhcmVTdGFjayhib29sZWFuIGNlcnQpIHRocm93cyBFeGNlcHRpb24geworCUluaXQuaW5pdCgpOworCURvY3VtZW50QnVpbGRlckZhY3RvcnkgZG9jdW1lbnRCdWlsZGVyRmFjdG9yeSA9IAorCSAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisJZG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKwlEb2N1bWVudEJ1aWxkZXIgZG9jdW1lbnRCdWlsZGVyID0gCisJICAgIGRvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisJRG9jdW1lbnQgdGVzdERvY3VtZW50ID0gZG9jdW1lbnRCdWlsZGVyLm5ld0RvY3VtZW50KCk7CisKKwlFbGVtZW50IHJvb3RFbGVtZW50ID0gCisJICAgIHRlc3REb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoInVybjpuYW1lc3BhY2UiLCAidG5zOmRvY3VtZW50Iik7CisJcm9vdEVsZW1lbnQuc2V0QXR0cmlidXRlTlMKKwkgICAgKENvbnN0YW50cy5OYW1lc3BhY2VTcGVjTlMsICJ4bWxuczp0bnMiLCAidXJuOm5hbWVzcGFjZSIpOworCXRlc3REb2N1bWVudC5hcHBlbmRDaGlsZChyb290RWxlbWVudCk7CisJRWxlbWVudCBjaGlsZEVsZW1lbnQgPSAKKwkgICAgdGVzdERvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygidXJuOmNoaWxkbmFtZXNwYWNlIiwgInQ6Y2hpbGQiKTsKKwljaGlsZEVsZW1lbnQuc2V0QXR0cmlidXRlTlMKKwkgICAgKENvbnN0YW50cy5OYW1lc3BhY2VTcGVjTlMsICJ4bWxuczp0IiwgInVybjpjaGlsZG5hbWVzcGFjZSIpOworCWNoaWxkRWxlbWVudC5hcHBlbmRDaGlsZCh0ZXN0RG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoImhlbGxvIHdvcmxkIikpOworCXJvb3RFbGVtZW50LmFwcGVuZENoaWxkKGNoaWxkRWxlbWVudCk7CisKKwlQcml2YXRlS2V5IHByaXZhdGVLZXkgPSBudWxsOworCVB1YmxpY0tleSBwdWJsaWNLZXkgPSBudWxsOworCVg1MDlDZXJ0aWZpY2F0ZSBzaWduaW5nQ2VydCA9IG51bGw7CisJaWYgKGNlcnQpIHsKKyAgICAgICAgICAgIC8vIGdldCBrZXkgJiBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZSBmcm9tIGtleXN0b3JlCisgICAgICAgICAgICBTdHJpbmcgZnMgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImZpbGUuc2VwYXJhdG9yIik7CisgICAgICAgICAgICBGaWxlSW5wdXRTdHJlYW0gZmlzID0gbmV3IEZpbGVJbnB1dFN0cmVhbQorICAgICAgICAgICAgICAgIChTeXN0ZW0uZ2V0UHJvcGVydHkoImJhc2VkaXIiKSArIGZzICsgImRhdGEiICsgZnMgKyAidGVzdC5qa3MiKTsKKyAgICAgICAgICAgIEtleVN0b3JlIGtzID0gS2V5U3RvcmUuZ2V0SW5zdGFuY2UoIkpLUyIpOworICAgICAgICAgICAga3MubG9hZChmaXMsICJjaGFuZ2VpdCIudG9DaGFyQXJyYXkoKSk7CisgICAgICAgICAgICBzaWduaW5nQ2VydCA9IChYNTA5Q2VydGlmaWNhdGUpIGtzLmdldENlcnRpZmljYXRlKCJtdWxsYW4iKTsKKwkgICAgcHVibGljS2V5ID0gc2lnbmluZ0NlcnQuZ2V0UHVibGljS2V5KCk7CisgICAgICAgICAgICBwcml2YXRlS2V5ID0gKFByaXZhdGVLZXkpIGtzLmdldEtleSgibXVsbGFuIiwgImNoYW5nZWl0Ii50b0NoYXJBcnJheSgpKTsKKwl9IGVsc2UgeworCSAgICBLZXlQYWlyIGtleVBhaXIgPSBLZXlQYWlyR2VuZXJhdG9yLmdldEluc3RhbmNlKCJEU0EiKS5nZW5lcmF0ZUtleVBhaXIoKTsKKwkgICAgcHVibGljS2V5ID0ga2V5UGFpci5nZXRQdWJsaWMoKTsKKwkgICAgcHJpdmF0ZUtleSA9IGtleVBhaXIuZ2V0UHJpdmF0ZSgpOworCX0KKworCVhNTFNpZ25hdHVyZSBzaWduYXR1cmUgPSBuZXcgWE1MU2lnbmF0dXJlKHRlc3REb2N1bWVudCwgIiIsCisJCQkJWE1MU2lnbmF0dXJlLkFMR09fSURfU0lHTkFUVVJFX0RTQSwKKwkJCQlDYW5vbmljYWxpemVyLkFMR09fSURfQzE0Tl9XSVRIX0NPTU1FTlRTKTsKKworCUVsZW1lbnQgc2lnbmF0dXJlRWxlbWVudCA9IHNpZ25hdHVyZS5nZXRFbGVtZW50KCk7CisJcm9vdEVsZW1lbnQuYXBwZW5kQ2hpbGQoc2lnbmF0dXJlRWxlbWVudCk7CisKKwlUcmFuc2Zvcm1zIHRyYW5zZm9ybXMgPSBuZXcgVHJhbnNmb3Jtcyh0ZXN0RG9jdW1lbnQpOworCVhQYXRoQ29udGFpbmVyIHhwYXRoID0gbmV3IFhQYXRoQ29udGFpbmVyKHRlc3REb2N1bWVudCk7CisJeHBhdGguc2V0WFBhdGhOYW1lc3BhY2VDb250ZXh0KCJkcyIsIENvbnN0YW50cy5TaWduYXR1cmVTcGVjTlMpOworCXhwYXRoLnNldFhQYXRoKCJub3QoYW5jZXN0b3Itb3Itc2VsZjo6ZHM6U2lnbmF0dXJlKSIpOworCXRyYW5zZm9ybXMuYWRkVHJhbnNmb3JtKFRyYW5zZm9ybXMuVFJBTlNGT1JNX1hQQVRILCB4cGF0aAorCQkJCS5nZXRFbGVtZW50UGx1c1JldHVybnMoKSk7CisJdHJhbnNmb3Jtcy5hZGRUcmFuc2Zvcm0oVHJhbnNmb3Jtcy5UUkFOU0ZPUk1fQzE0Tl9XSVRIX0NPTU1FTlRTKTsKKwlzaWduYXR1cmUuYWRkRG9jdW1lbnQoIiIsIHRyYW5zZm9ybXMsCisJCQkJTWVzc2FnZURpZ2VzdEFsZ29yaXRobS5BTEdPX0lEX0RJR0VTVF9TSEExKTsKKworCWlmIChjZXJ0KSB7CisJICAgIHNpZ25hdHVyZS5hZGRLZXlJbmZvKHNpZ25pbmdDZXJ0KTsKKwl9IGVsc2UgeworCSAgICBzaWduYXR1cmUuYWRkS2V5SW5mbyhwdWJsaWNLZXkpOworCX0KKworCUVsZW1lbnQgbnNFbGVtZW50ID0gdGVzdERvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhudWxsLCAibnNFbGVtZW50Iik7CisJbnNFbGVtZW50LnNldEF0dHJpYnV0ZU5TKENvbnN0YW50cy5OYW1lc3BhY2VTcGVjTlMsICJ4bWxuczpkcyIsCisJCQkJQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUyk7CisKKwlzaWduYXR1cmUuc2lnbihwcml2YXRlS2V5KTsKKworCS8vIFRyYW5zZm9ybWVyRmFjdG9yeSB0ZiA9IFRyYW5zZm9ybWVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworCS8vIFRyYW5zZm9ybWVyIHQgPSB0Zi5uZXdUcmFuc2Zvcm1lcigpOworCS8vIHQudHJhbnNmb3JtKG5ldyBET01Tb3VyY2UodGVzdERvY3VtZW50KSwgbmV3IFN0cmVhbVJlc3VsdChTeXN0ZW0ub3V0KSk7CisKKwlOb2RlTGlzdCBzaWduYXR1cmVFbGVtcyA9IFhQYXRoQVBJLnNlbGVjdE5vZGVMaXN0KHRlc3REb2N1bWVudCwKKwkJCQkiLy9kczpTaWduYXR1cmUiLCBuc0VsZW1lbnQpOworCXNpZ25hdHVyZUVsZW1lbnQgPSAoRWxlbWVudCkgc2lnbmF0dXJlRWxlbXMuaXRlbSgwKTsKKwlYTUxTaWduYXR1cmUgc2lnbmF0dXJlVG9WZXJpZnkgPSBuZXcgWE1MU2lnbmF0dXJlKHNpZ25hdHVyZUVsZW1lbnQsICIiKTsKKworCWJvb2xlYW4gc2lnblJlc3VsdCA9IHNpZ25hdHVyZVRvVmVyaWZ5LmNoZWNrU2lnbmF0dXJlVmFsdWUocHVibGljS2V5KTsKKworCWFzc2VydFRydWUoc2lnblJlc3VsdCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3RyYW5zZm9ybXMvUmVnaXN0ZXJUZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvdHJhbnNmb3Jtcy9SZWdpc3RlclRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Yzc3NWIyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3RyYW5zZm9ybXMvUmVnaXN0ZXJUZXN0LmphdmEKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LnRyYW5zZm9ybXM7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuQ29uc3RydWN0b3I7CitpbXBvcnQgamF2YS5uZXQuVVJMOworaW1wb3J0IGphdmEubmV0LlVSTENsYXNzTG9hZGVyOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmV4Y2VwdGlvbnMuQWxnb3JpdGhtQWxyZWFkeVJlZ2lzdGVyZWRFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm07CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKKworLyoqCisgKiBSZWdpc3RlclRlc3QgdGVzdHMgcmVnaXN0ZXJpbmcgYSBjdXN0b20gVHJhbnNmb3JtIGltcGxlbWVudGF0aW9uIGxvYWRlZAorICogYnkgYSBVUkxDTGFzc0xvYWRlci4KKyAqLworcHVibGljIGNsYXNzIFJlZ2lzdGVyVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIFN0cmluZyBiYXNlZGlyID0gU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIiwgIi4vIik7CisKKyAgICBwdWJsaWMgUmVnaXN0ZXJUZXN0KFN0cmluZyBuYW1lKSB7CisgICAgICAgIHN1cGVyKG5hbWUpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpIHsKKyAgICAgICByZXR1cm4gbmV3IFRlc3RTdWl0ZShSZWdpc3RlclRlc3QuY2xhc3MpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgICAgVHJhbnNmb3JtLmluaXQoKTsKKyAgICAgICAgRmlsZSBmaWxlID0gbmV3IEZpbGUoYmFzZWRpcik7CisgICAgICAgIFVSTFtdIHVybHMgPSBuZXcgVVJMWzFdOworICAgICAgICB1cmxzWzBdID0gZmlsZS50b1VSSSgpLnRvVVJMKCk7CisgICAgICAgIFVSTENsYXNzTG9hZGVyIHVjbCA9IG5ldyBVUkxDbGFzc0xvYWRlcih1cmxzKTsKKyAgICAgICAgQ2xhc3MgYyA9IHVjbC5sb2FkQ2xhc3MKKyAgICAgICAgICAgICgib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC50cmFuc2Zvcm1zLlNhbXBsZVRyYW5zZm9ybSIpOworICAgICAgICBDb25zdHJ1Y3RvciBjb25zID0gYy5nZXRDb25zdHJ1Y3RvcihuZXcgQ2xhc3NbMF0pOworICAgICAgICBjb25zLm5ld0luc3RhbmNlKG5ldyBPYmplY3RbMF0pOworICAgICAgICAvLyBBcGFjaGUgY29kZSBzd2FsbG93cyB0aGUgQ2xhc3NOb3RGb3VuZEV4Yywgc28gd2UgbmVlZCB0bworICAgICAgICAvLyBjaGVjayBpZiB0aGUgVHJhbnNmb3JtIGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZCBieSByZWdpc3RlcmluZworICAgICAgICAvLyBpdCBhZ2FpbiBhbmQgY2F0Y2hpbmcgYW4gQWxnb3JpdGhtQWxyZWFkeVJlZ2lzdGVyZWRFeGMKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFRyYW5zZm9ybS5yZWdpc3RlcgorICAgICAgICAgICAgICAgIChTYW1wbGVUcmFuc2Zvcm0udXJpLCAKKyAgICAgICAgICAgICAgICAgIm9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QudHJhbnNmb3Jtcy5TYW1wbGVUcmFuc2Zvcm0iKTsKKyAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIkNsYXNzTG9hZGVyVGVzdCBmYWlsZWQiKTsKKyAgICAgICAgfSBjYXRjaCAoQWxnb3JpdGhtQWxyZWFkeVJlZ2lzdGVyZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgLy8gdGVzdCBwYXNzZWQKKyAgICAgICAgfQorICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3RyYW5zZm9ybXMvU2FtcGxlVHJhbnNmb3JtLmphdmEgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvdHJhbnNmb3Jtcy9TYW1wbGVUcmFuc2Zvcm0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NGE0Mjc4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3RyYW5zZm9ybXMvU2FtcGxlVHJhbnNmb3JtLmphdmEKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC50cmFuc2Zvcm1zOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5QYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uOworaW1wb3J0IG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLio7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy4qOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmVJbnB1dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLio7CisKK3B1YmxpYyBjbGFzcyBTYW1wbGVUcmFuc2Zvcm0gZXh0ZW5kcyBUcmFuc2Zvcm1TcGkgeworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgdXJpID0KKyAgICAgICAgImh0dHA6Ly9vcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LnRyYW5zZm9ybXMuU2FtcGxlVHJhbnNmb3JtIjsKKworICAgIHB1YmxpYyBTYW1wbGVUcmFuc2Zvcm0oKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBUcmFuc2Zvcm0uaW5pdCgpOworICAgICAgICAgICAgVHJhbnNmb3JtLnJlZ2lzdGVyCisgICAgICAgICAgICAgICAodXJpLCAib3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC50cmFuc2Zvcm1zLlNhbXBsZVRyYW5zZm9ybSIpOworICAgICAgICB9IGNhdGNoIChBbGdvcml0aG1BbHJlYWR5UmVnaXN0ZXJlZEV4Y2VwdGlvbiBlKSB7IH0KKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgU3RyaW5nIGVuZ2luZUdldFVSSSgpIHsKKyAgICAgICAgcmV0dXJuIHVyaTsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgWE1MU2lnbmF0dXJlSW5wdXQgZW5naW5lUGVyZm9ybVRyYW5zZm9ybShYTUxTaWduYXR1cmVJbnB1dCBpbnB1dCkKKyAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uLCBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24sIFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiwgU0FYRXhjZXB0aW9uIHsKKyAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3RyYW5zZm9ybXMvaW1wbGVtZW50YXRpb25zL0FsbFRlc3RzLmphdmEgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvdHJhbnNmb3Jtcy9pbXBsZW1lbnRhdGlvbnMvQWxsVGVzdHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTVjN2MxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3RyYW5zZm9ybXMvaW1wbGVtZW50YXRpb25zL0FsbFRlc3RzLmphdmEKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC50cmFuc2Zvcm1zLmltcGxlbWVudGF0aW9uczsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7CisKK3B1YmxpYyBjbGFzcyBBbGxUZXN0cyB7CisKKwlwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKSB7CisJCVRlc3RTdWl0ZSBzdWl0ZSA9IG5ldyBUZXN0U3VpdGUoCisJCQkJIlRlc3QgZm9yIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QudHJhbnNmb3Jtcy5pbXBsZW1lbnRhdGlvbnMiKTsKKwkJLy8kSlVuaXQtQkVHSU4kCisJCXN1aXRlLmFkZFRlc3QoVHJhbnNmb3JtQmFzZTY0RGVjb2RlVGVzdC5zdWl0ZSgpKTsKKwkJc3VpdGUuYWRkVGVzdChUcmFuc2Zvcm1YU0xUVGVzdC5zdWl0ZSgpKTsKKwkJc3VpdGUuYWRkVGVzdChYcGF0aDJUcmFuc2Zvcm1hdGlvblRlc3Quc3VpdGUoKSk7CisJCS8vJEpVbml0LUVORCQKKwkJcmV0dXJuIHN1aXRlOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3RyYW5zZm9ybXMvaW1wbGVtZW50YXRpb25zL1RyYW5zZm9ybUJhc2U2NERlY29kZVRlc3QuamF2YSBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC90cmFuc2Zvcm1zL2ltcGxlbWVudGF0aW9ucy9UcmFuc2Zvcm1CYXNlNjREZWNvZGVUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ3NzQ3MwotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC90cmFuc2Zvcm1zL2ltcGxlbWVudGF0aW9ucy9UcmFuc2Zvcm1CYXNlNjREZWNvZGVUZXN0LmphdmEKQEAgLTAsMCArMSwyMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QudHJhbnNmb3Jtcy5pbXBsZW1lbnRhdGlvbnM7CisKKworCitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyOworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3Rvcnk7CitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbjsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuYzE0bi5DYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuZXhjZXB0aW9ucy5YTUxTZWN1cml0eUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmVJbnB1dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LlRlc3RVdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLkludmFsaWRUcmFuc2Zvcm1FeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybXM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5pbXBsZW1lbnRhdGlvbnMuVHJhbnNmb3JtQmFzZTY0RGVjb2RlOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQVBJOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uTm9kZTsKKworCisvKioKKyAqIFVuaXQgdGVzdCBmb3Ige0BsaW5rIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuaW1wbGVtZW50YXRpb25zLlRyYW5zZm9ybUJhc2U2NERlY29kZX0KKyAqCisgKiBAYXV0aG9yIENocmlzdGlhbiBHZXVlci1Qb2xsbWFubgorICovCitwdWJsaWMgY2xhc3MgVHJhbnNmb3JtQmFzZTY0RGVjb2RlVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKKworICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKAorICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1CYXNlNjREZWNvZGVUZXN0LmNsYXNzLmdldE5hbWUoKSk7CisKKyAgIC8qKgorICAgICogTWV0aG9kIHN1aXRlCisgICAgKgorICAgICoKKyAgICAqLworICAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkgeworICAgICAgcmV0dXJuIG5ldyBUZXN0U3VpdGUoVHJhbnNmb3JtQmFzZTY0RGVjb2RlVGVzdC5jbGFzcyk7CisgICB9CisKKyAgIC8qKgorICAgICogQ29uc3RydWN0b3IgVHJhbnNmb3JtQmFzZTY0RGVjb2RlVGVzdAorICAgICoKKyAgICAqIEBwYXJhbSBOYW1lXworICAgICovCisgICBwdWJsaWMgVHJhbnNmb3JtQmFzZTY0RGVjb2RlVGVzdChTdHJpbmcgTmFtZV8pIHsKKyAgICAgIHN1cGVyKE5hbWVfKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgbWFpbgorICAgICoKKyAgICAqIEBwYXJhbSBhcmdzCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKworICAgICAgU3RyaW5nW10gdGVzdENhc2VOYW1lID0geyAiLW5vbG9hZGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybUJhc2U2NERlY29kZVRlc3QuY2xhc3MuZ2V0TmFtZSgpIH07CisKKyAgICAgIGp1bml0LnRleHR1aS5UZXN0UnVubmVyLm1haW4odGVzdENhc2VOYW1lKTsKKyAgIH0KKworICAgcHJpdmF0ZSBzdGF0aWMgRG9jdW1lbnQgY3JlYXRlRG9jdW1lbnQoKSB0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiB7CisKKyAgICAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkgZGZhY3RvcnkgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisKKyAgICAgIGRmYWN0b3J5LnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOworCisgICAgICBEb2N1bWVudEJ1aWxkZXIgZGIgPSBkZmFjdG9yeS5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKKyAgICAgIERvY3VtZW50IGRvYyA9IGRiLm5ld0RvY3VtZW50KCk7CisKKyAgICAgIGlmIChkb2MgPT0gbnVsbCkgeworICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJDb3VsZCBub3QgY3JlYXRlIGEgRG9jdW1lbnQiKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgICBsb2cuZGVidWcoIkkgY291bGQgY3JlYXRlIHRoZSBEb2N1bWVudCIpOworICAgICAgfQorICAgICAgcmV0dXJuIGRvYzsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdDEKKyAgICAqCisgICAgKiBAdGhyb3dzIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgSW52YWxpZFRyYW5zZm9ybUV4Y2VwdGlvbgorICAgICogQHRocm93cyBOb3RZZXRJbXBsZW1lbnRlZEV4Y2VwdGlvbgorICAgICogQHRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFhNTFNlY3VyaXR5RXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgdGVzdDEoKQorICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24sIEludmFsaWRUcmFuc2Zvcm1FeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uLCBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgWE1MU2lnbmF0dXJlRXhjZXB0aW9uLCBYTUxTZWN1cml0eUV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIFBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24geworCisgICAgICAvLyBiYXNlNjQgZW5jb2RlZAorICAgICAgU3RyaW5nIHMxID0KKyAgICAgICAgICJWR2hsSUZWU1NTQnZaaUIwYUdVZ2RISmhibk5tYjNKdElHbHpJR2gwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdk1Ea3ZlRzFzXG4iCisgICAgICAgICArICJaSE5wWnlOaVlYTmxOalE9IjsKKworICAgICAgRG9jdW1lbnQgZG9jID0gVHJhbnNmb3JtQmFzZTY0RGVjb2RlVGVzdC5jcmVhdGVEb2N1bWVudCgpOworICAgICAgVHJhbnNmb3JtcyB0ID0gbmV3IFRyYW5zZm9ybXMoZG9jKTsKKyAgICAgIGRvYy5hcHBlbmRDaGlsZCh0LmdldEVsZW1lbnQoKSk7CisgICAgICB0LmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1CYXNlNjREZWNvZGUuaW1wbGVtZW50ZWRUcmFuc2Zvcm1VUkkpOworCisgICAgICBYTUxTaWduYXR1cmVJbnB1dCBpbiA9CisgICAgICAgICBuZXcgWE1MU2lnbmF0dXJlSW5wdXQobmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKHMxLmdldEJ5dGVzKCkpKTsKKyAgICAgIFhNTFNpZ25hdHVyZUlucHV0IG91dCA9IHQucGVyZm9ybVRyYW5zZm9ybXMoaW4pOworICAgICAgU3RyaW5nIHJlc3VsdCA9IG5ldyBTdHJpbmcob3V0LmdldEJ5dGVzKCkpOworCisgICAgICBhc3NlcnRUcnVlKAorICAgICAgICAgcmVzdWx0LmVxdWFscygKKyAgICAgICAgICAgICJUaGUgVVJJIG9mIHRoZSB0cmFuc2Zvcm0gaXMgaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2Jhc2U2NCIpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdFR3aWNlCisgICAgKgorICAgICogQHRocm93cyBDYW5vbmljYWxpemF0aW9uRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEludmFsaWRUcmFuc2Zvcm1FeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgTm90WWV0SW1wbGVtZW50ZWRFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbgorICAgICogQHRocm93cyBYTUxTZWN1cml0eUV4Y2VwdGlvbgorICAgICogQHRocm93cyBYTUxTaWduYXR1cmVFeGNlcHRpb24KKyAgICAqLworICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3QyKCkKKyAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uLCBJbnZhbGlkVHJhbnNmb3JtRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25FeGNlcHRpb24sIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBJbnZhbGlkQ2Fub25pY2FsaXplckV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgIFhNTFNpZ25hdHVyZUV4Y2VwdGlvbiwgWE1MU2VjdXJpdHlFeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIHsKKworICAgICAgLy8gYmFzZTY0IGVuY29kZWQgdHdpY2UKKyAgICAgIFN0cmluZyBzMiA9CisgICAgICAgICAiVmtkb2JFbEdWbE5UVTBKMldtbENNR0ZIVldka1NFcG9ZbTVPYldJelNuUkpSMng2U1Vkb01HUklRVFpNZVRrelpETmpkV1I2VFhWaVxuIgorICAgICAgICAgKyAiTTBwdVRIcEpkMDFFUVhaTlJHdDJaVWN4Y3dwYVNFNXdXbmxPYVZsWVRteE9hbEU5IjsKKyAgICAgIERvY3VtZW50IGRvYyA9IFRyYW5zZm9ybUJhc2U2NERlY29kZVRlc3QuY3JlYXRlRG9jdW1lbnQoKTsKKyAgICAgIFRyYW5zZm9ybXMgdCA9IG5ldyBUcmFuc2Zvcm1zKGRvYyk7CisgICAgICBkb2MuYXBwZW5kQ2hpbGQodC5nZXRFbGVtZW50KCkpOworCisgICAgICB0LmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1CYXNlNjREZWNvZGUuaW1wbGVtZW50ZWRUcmFuc2Zvcm1VUkkpOworCisgICAgICBYTUxTaWduYXR1cmVJbnB1dCBpbiA9CisgICAgICAgICBuZXcgWE1MU2lnbmF0dXJlSW5wdXQobmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKHMyLmdldEJ5dGVzKCkpKTsKKyAgICAgIFhNTFNpZ25hdHVyZUlucHV0IG91dCA9IHQucGVyZm9ybVRyYW5zZm9ybXModC5wZXJmb3JtVHJhbnNmb3JtcyhpbikpOworICAgICAgU3RyaW5nIHJlc3VsdCA9IG5ldyBTdHJpbmcob3V0LmdldEJ5dGVzKCkpOworCisgICAgICBhc3NlcnRUcnVlKAorICAgICAgICAgcmVzdWx0LmVxdWFscygKKyAgICAgICAgICAgICJUaGUgVVJJIG9mIHRoZSB0cmFuc2Zvcm0gaXMgaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2Jhc2U2NCIpKTsKKyAgIH0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdDMKKyAgICAqCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgdGVzdDMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgIC8vSi0KKyAgICAgIFN0cmluZyBpbnB1dCA9ICIiCisgICAgICAgICArICI8T2JqZWN0IHhtbG5zOnNpZ25hdHVyZT0naHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyc+XG4iCisgICAgICAgICArICI8c2lnbmF0dXJlOkJhc2U2ND5cbiIKKyAgICAgICAgICsgIlZHaGxJRlZTU1NCdlppQjBhR1UgICBnZEhKaGJuPFJlYWxUZXh0Pk5tYiAgM0p0SUdseklHPHRlc3QvPmgwZEhBNjwvUmVhbFRleHQ+THk5M2QzY3Vkek11YjNKbkx6SXdNREF2TURrdmVHMXNcbiIKKyAgICAgICAgICsgIlpITnBaeU5pWVhObE5qUT1cbiIKKyAgICAgICAgICsgIjwvc2lnbmF0dXJlOkJhc2U2ND5cbiIKKyAgICAgICAgICsgIjwvT2JqZWN0PlxuIgorICAgICAgICAgOworICAgICAgLy9KKworICAgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkZmFjdG9yeSA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsKKworICAgICAgZGZhY3Rvcnkuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7CisKKyAgICAgIERvY3VtZW50QnVpbGRlciBkYiA9IGRmYWN0b3J5Lm5ld0RvY3VtZW50QnVpbGRlcigpOworCisgICAgICBkYi5zZXRFcnJvckhhbmRsZXIobmV3IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzCisgICAgICAgICAuSWdub3JlQWxsRXJyb3JIYW5kbGVyKCkpOworCisgICAgICBEb2N1bWVudCBkb2MgPSBkYi5wYXJzZShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oaW5wdXQuZ2V0Qnl0ZXMoKSkpOworICAgICAgLy9YTUxVdGlscy5jaXJjdW12ZW50QnVnMjY1MChkb2MpOworICAgICAgRWxlbWVudCBuc2NvbnRleHQgPSBUZXN0VXRpbHMuY3JlYXRlRFNjdHgoZG9jLCAiZHMiLCBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TKTsKKworICAgICAgTm9kZSBiYXNlNjROb2RlID0gWFBhdGhBUEkuc2VsZWN0U2luZ2xlTm9kZShkb2MsICIvL2RzOkJhc2U2NCIsIG5zY29udGV4dCk7CisgICAgICBYTUxTaWduYXR1cmVJbnB1dCB4bWxpbnB1dCA9IG5ldyBYTUxTaWduYXR1cmVJbnB1dChiYXNlNjROb2RlKTsKKworICAgICAgRG9jdW1lbnQgZG9jMiA9IFRyYW5zZm9ybUJhc2U2NERlY29kZVRlc3QuY3JlYXRlRG9jdW1lbnQoKTsKKyAgICAgIFRyYW5zZm9ybXMgdCA9IG5ldyBUcmFuc2Zvcm1zKGRvYzIpOworICAgICAgZG9jMi5hcHBlbmRDaGlsZCh0LmdldEVsZW1lbnQoKSk7CisgICAgICB0LmFkZFRyYW5zZm9ybShUcmFuc2Zvcm1zLlRSQU5TRk9STV9CQVNFNjRfREVDT0RFKTsKKworICAgICAgWE1MU2lnbmF0dXJlSW5wdXQgb3V0ID0gdC5wZXJmb3JtVHJhbnNmb3Jtcyh4bWxpbnB1dCk7CisgICAgICBTdHJpbmcgcmVzdWx0ID0gbmV3IFN0cmluZyhvdXQuZ2V0Qnl0ZXMoKSk7CisKKyAgICAgIGFzc2VydFRydWUoIlwiIiArIHJlc3VsdCArICJcIiIsIHJlc3VsdC5lcXVhbHMoCisgICAgICAgICAgICAiVGhlIFVSSSBvZiB0aGUgdHJhbnNmb3JtIGlzIGh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNiYXNlNjQiKSk7CisgICB9CisKKyAgIHN0YXRpYyB7CisgICAgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC90cmFuc2Zvcm1zL2ltcGxlbWVudGF0aW9ucy9UcmFuc2Zvcm1YU0xUVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3RyYW5zZm9ybXMvaW1wbGVtZW50YXRpb25zL1RyYW5zZm9ybVhTTFRUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzY1N2Q2YQotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC90cmFuc2Zvcm1zL2ltcGxlbWVudGF0aW9ucy9UcmFuc2Zvcm1YU0xUVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LnRyYW5zZm9ybXMuaW1wbGVtZW50YXRpb25zOworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyOworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3Rvcnk7CitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGU7CitpbXBvcnQgb3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uOworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5zaWduYXR1cmUuWE1MU2lnbmF0dXJlSW5wdXQ7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC5UZXN0VXRpbHM7CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm07CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1zOworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQVBJOworCitwdWJsaWMgY2xhc3MgVHJhbnNmb3JtWFNMVFRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQkFTRURJUiA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiYmFzZWRpciIpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTRVAgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImZpbGUuc2VwYXJhdG9yIik7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNPVVJDRV9QQVRIID0gCisJImRhdGEvY29tL3BoYW9zL3BoYW9zLXhtbGRzaWctdGhyZWUvIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0lHTkFUVVJFX0ZJTEUgPSAKKwkic2lnbmF0dXJlLXJzYS1kZXRhY2hlZC14c2x0LXRyYW5zZm9ybS54bWwiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTVFlMRVNIRUVUX0ZJTEUgPSAiZG9jdW1lbnQtc3R5bGVzaGVldC54bWwiOworCisgICAgLyoqIHtAbGluayBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZ30gbG9nZ2luZyBmYWNpbGl0eSAqLworICAgIHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cgbG9nID0gCisgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkuZ2V0TG9nKAorICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1YU0xUVGVzdC5jbGFzcy5nZXROYW1lKCkpOworCisgICAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkgeworICAgICAgICByZXR1cm4gbmV3IFRlc3RTdWl0ZShUcmFuc2Zvcm1YU0xUVGVzdC5jbGFzcyk7CisgICAgfQorCisgICAgcHVibGljIFRyYW5zZm9ybVhTTFRUZXN0KFN0cmluZyBuYW1lKSB7CisgICAgICAgIHN1cGVyKG5hbWUpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKworICAgICAgICBTdHJpbmdbXSB0ZXN0Q2FzZU5hbWUgPSB7ICItbm9sb2FkaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtWFNMVFRlc3QuY2xhc3MuZ2V0TmFtZSgpIH07CisgICAgICAgIGp1bml0LnRleHR1aS5UZXN0UnVubmVyLm1haW4odGVzdENhc2VOYW1lKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBEb2N1bWVudCBnZXREb2N1bWVudChGaWxlIGZpbGUpIAorCXRocm93cyBQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uLCBTQVhFeGNlcHRpb24sIElPRXhjZXB0aW9uIHsKKworICAgICAgICBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IGRmYWN0b3J5ID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOworICAgICAgICBkZmFjdG9yeS5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKyAgICAgICAgRG9jdW1lbnRCdWlsZGVyIGRiID0gZGZhY3RvcnkubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgICAgIERvY3VtZW50IGRvYyA9IGRiLnBhcnNlKG5ldyBGaWxlSW5wdXRTdHJlYW0oZmlsZSkpOworICAgICAgICByZXR1cm4gZG9jOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1ha2Ugc3VyZSBUcmFuc2Zvcm0ucGVyZm9ybVRyYW5zZm9ybSBkb2VzIG5vdCB0aHJvdyBOdWxsUG9pbnRlckV4Y2VwdGlvbi4KKyAgICAgKiBTZWUgYnVnIDQxOTI3IGZvciBtb3JlIGluZm8uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3QxKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIEZpbGUgZmlsZTEgID0gbnVsbDsKKyAgICAgICAgRmlsZSBmaWxlMiAgPSBudWxsOworICAgICAgICBpZiAoQkFTRURJUiAhPSBudWxsICYmICEiIi5lcXVhbHMoQkFTRURJUikpIHsKKyAgICAgICAgICAgIGZpbGUxID0gbmV3IEZpbGUoQkFTRURJUiArIFNFUCArIFNPVVJDRV9QQVRILCBTSUdOQVRVUkVfRklMRSk7CisgICAgICAgICAgICBmaWxlMiA9IG5ldyBGaWxlKEJBU0VESVIgKyBTRVAgKyBTT1VSQ0VfUEFUSCwgU1RZTEVTSEVFVF9GSUxFKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZpbGUxID0gbmV3IEZpbGUoU09VUkNFX1BBVEgsIFNJR05BVFVSRV9GSUxFKTsKKyAgICAgICAgICAgIGZpbGUxID0gbmV3IEZpbGUoU09VUkNFX1BBVEgsIFNUWUxFU0hFRVRfRklMRSk7CisgICAgICAgIH0KKyAgICAgICAgRG9jdW1lbnQgZG9jMSA9IGdldERvY3VtZW50KGZpbGUxKTsKKyAgICAgICAgRG9jdW1lbnQgZG9jMiA9IGdldERvY3VtZW50KGZpbGUyKTsKKworICAgICAgICBFbGVtZW50IG5zY29udGV4dCA9IFRlc3RVdGlscy5jcmVhdGVEU2N0eAorCSAgICAoZG9jMSwgImRzaWciLCBDb25zdGFudHMuU2lnbmF0dXJlU3BlY05TKTsKKyAgICAgICAgTm9kZSB0cmFuc2Zvcm1FbCA9IFhQYXRoQVBJLnNlbGVjdFNpbmdsZU5vZGUKKwkgICAgKGRvYzEsICIvL2RzaWc6VHJhbnNmb3JtWzFdIiwgbnNjb250ZXh0KTsKKwlUcmFuc2Zvcm0gdHJhbnNmb3JtID0gVHJhbnNmb3JtLmdldEluc3RhbmNlCisJICAgIChkb2MxLCBUcmFuc2Zvcm1zLlRSQU5TRk9STV9YU0xULCB0cmFuc2Zvcm1FbC5nZXRDaGlsZE5vZGVzKCkpOworCisJdHJhbnNmb3JtLnBlcmZvcm1UcmFuc2Zvcm0obmV3IFhNTFNpZ25hdHVyZUlucHV0KGRvYzIpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgeworICAgICAgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvdHJhbnNmb3Jtcy9pbXBsZW1lbnRhdGlvbnMvWHBhdGgyVHJhbnNmb3JtYXRpb25UZXN0LmphdmEgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvdHJhbnNmb3Jtcy9pbXBsZW1lbnRhdGlvbnMvWHBhdGgyVHJhbnNmb3JtYXRpb25UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM1YTFmZgotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC90cmFuc2Zvcm1zL2ltcGxlbWVudGF0aW9ucy9YcGF0aDJUcmFuc2Zvcm1hdGlvblRlc3QuamF2YQpAQCAtMCwwICsxLDE2MyBAQAorLyoNCisgKiBDb3B5cmlnaHQgMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQorICoNCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICoNCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QudHJhbnNmb3Jtcy5pbXBsZW1lbnRhdGlvbnM7DQorDQoraW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07DQorDQoraW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Ow0KK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7DQoraW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQ7DQoraW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnNpZ25hdHVyZS5YTUxTaWduYXR1cmU7DQoraW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLkNvbnN0YW50czsNCitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsNCisNCitwdWJsaWMgY2xhc3MgWHBhdGgyVHJhbnNmb3JtYXRpb25UZXN0IGV4dGVuZHMgVGVzdENhc2Ugew0KKwlzdGF0aWMgew0KKwkJSW5pdC5pbml0KCk7DQorCX0NCisgICAvKioNCisgICAgKiBNZXRob2Qgc3VpdGUNCisgICAgKg0KKyAgICAqDQorICAgICovDQorICAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkgew0KKyAgICAgIHJldHVybiBuZXcgVGVzdFN1aXRlKFhwYXRoMlRyYW5zZm9ybWF0aW9uVGVzdC5jbGFzcyk7DQorICAgfQ0KKw0KKw0KKwlwdWJsaWMgc3RhdGljIHZvaWQgdGVzdFhwYXRoMlRyYW5zZm9ybSgpIHRocm93cyBFeGNlcHRpb24gew0KKwkJU3RyaW5nIHNpZz0iPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwiVVRGLThcIj8+XHJcbiIgKyANCisJCQkJIjxlZG9jOkVET0MgeG1sbnM6ZGM9XCJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xL1wiIHhtbG5zOmRjdGVybXM9XCJodHRwOi8vcHVybC5vcmcvZGMvdGVybXMvXCIgeG1sbnM6ZWRvYz1cImh0dHA6Ly93d3cuaW10Zi5jb20vaHlwZXJzdWl0ZS9lZG9jLzIuMC9cIiBzeXNpZD1cIkNDOUNDMjMwLUMwQTgwMjRFMDFBM0NBMTAtQUMxNTRGNzhcIj5cclxuIiArIA0KKwkJCQkiICAgPGVkb2M6VmVyc2lvbj4yLjA8L2Vkb2M6VmVyc2lvbj5cclxuIiArIA0KKwkJCQkiICAgPGVkb2M6T2JqZWN0IGVkb2NWZXJzaW9uPVwiMi4wXCI+XHJcbiIgKyANCisJCQkJIiAgICAgIDxlZG9jOk9iamVjdE1ldGFkYXRhPlxyXG4iICsgDQorCQkJCSIgICAgICAgICA8ZWRvYzpPYmplY3RUeXBlPlJlY29yZDwvZWRvYzpPYmplY3RUeXBlPlxyXG4iICsgDQorCQkJCSIgICAgICAgICA8ZWRvYzpPYmplY3RDcmVhdGlvbkRhdGU+MjAwNC0xMi0xM1QxNDoyNzozNTwvZWRvYzpPYmplY3RDcmVhdGlvbkRhdGU+XHJcbiIgKyANCisJCQkJIiAgICAgIDwvZWRvYzpPYmplY3RNZXRhZGF0YT5cclxuIiArIA0KKwkJCQkiICAgICAgPGVkb2M6T2JqZWN0Q29udGVudD5cclxuIiArIA0KKwkJCQkiICAgICAgICAgPGVkb2M6UmVjb3JkPlxyXG4iICsgDQorCQkJCSIgICAgICAgICAgICA8ZWRvYzpSZWNvcmRNZXRhZGF0YT48L2Vkb2M6UmVjb3JkTWV0YWRhdGE+XHJcbiIgKyANCisJCQkJIiAgICAgICAgICAgIDxlZG9jOkRvY3VtZW50IGlkPVwiUmV2aXNpb24tMS1Eb2N1bWVudC0xXCI+XHJcbiIgKyANCisJCQkJIiAgICAgICAgICAgICAgIDxlZG9jOkRvY3VtZW50TWV0YWRhdGE+XHJcbiIgKyANCisJCQkJIiAgICAgICAgICAgICAgICAgIDxkYzpkYXRlPjIwMDMtMDctMjA8L2RjOmRhdGU+XHJcbiIgKyANCisJCQkJIiAgICAgICAgICAgICAgICAgIDxkYzp0eXBlPjIwPC9kYzp0eXBlPlxyXG4iICsgDQorCQkJCSIgICAgICAgICAgICAgICAgICA8ZGM6Zm9ybWF0PlBERjwvZGM6Zm9ybWF0PlxyXG4iICsgDQorCQkJCSIgICAgICAgICAgICAgICAgICA8ZWRvYzpjdXN0b21lci1udW1iZXI+MjIyMjIyPC9lZG9jOmN1c3RvbWVyLW51bWJlcj5cclxuIiArIA0KKwkJCQkiICAgICAgICAgICAgICAgPC9lZG9jOkRvY3VtZW50TWV0YWRhdGE+XHJcbiIgKyANCisJCQkJIiAgICAgICAgICAgICAgIDxlZG9jOkVuY29kaW5nIGlkPVwiUmV2aXNpb24tMS1Eb2N1bWVudC0xLUVuY29kaW5nLTFcIj5cclxuIiArIA0KKwkJCQkiICAgICAgICAgICAgICAgICAgPGVkb2M6RW5jb2RpbmdNZXRhZGF0YT5cclxuIiArIA0KKwkJCQkiICAgICAgICAgICAgICAgICAgPC9lZG9jOkVuY29kaW5nTWV0YWRhdGE+XHJcbiIgKyANCisJCQkJIiAgICAgICAgICAgICAgICAgIDxlZG9jOkNvbnRlbnREYXRhIGVuY2Fwc3VsYXRpb249XCJCYXNlNjRcIiBpZD1cIlJldmlzaW9uLTEtRG9jdW1lbnQtMS1FbmNvZGluZy0xLUNvbnRlbnREYXRhLTFcIiBzb3VyY2VGaWxlU2l6ZT1cIjEwMjU1MFwiPkFBQTwvZWRvYzpDb250ZW50RGF0YT5cclxuIiArIA0KKwkJCQkiICAgICAgICAgICAgICAgPC9lZG9jOkVuY29kaW5nPlxyXG4iICsgDQorCQkJCSIgICAgICAgICAgICA8L2Vkb2M6RG9jdW1lbnQ+XHJcbiIgKyANCisJCQkJIiAgICAgICAgIDwvZWRvYzpSZWNvcmQ+XHJcbiIgKyANCisJCQkJIiAgICAgIDwvZWRvYzpPYmplY3RDb250ZW50PlxyXG4iICsgDQorCQkJCSIgICA8L2Vkb2M6T2JqZWN0PlxyXG4iICsgDQorCQkJCSI8ZWRvYzpTaWduYXR1cmVCbG9jayBpZD1cIlJldmlzaW9uLTEtU2lnbmF0dXJlLTFcIj48ZWRvYzpTaWduYXR1cmVEYXRlPjIwMDYtMDgtMDlUMTc6MjE6MzU8L2Vkb2M6U2lnbmF0dXJlRGF0ZT48ZWRvYzpTaWduZXI+SGVzcyBZdmFuIChmaXJzdCBzaWduYXR1cmUpPC9lZG9jOlNpZ25lcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI1wiPlxyXG4iICsgDQorCQkJCSI8ZHM6U2lnbmVkSW5mbz5cclxuIiArIA0KKwkJCQkiPGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPVwiaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTVcIj48L2RzOkNhbm9uaWNhbGl6YXRpb25NZXRob2Q+XHJcbiIgKyANCisJCQkJIjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExXCI+PC9kczpTaWduYXR1cmVNZXRob2Q+XHJcbiIgKyANCisJCQkJIjxkczpSZWZlcmVuY2UgVVJJPVwiXCI+XHJcbiIgKyANCisJCQkJIjxkczpUcmFuc2Zvcm1zPlxyXG4iICsgDQorCQkJCSI8ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT1cImh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDYveG1sZHNpZy1maWx0ZXIyXCI+XHJcbiIgKyANCisJCQkJIjxkc2lnLXhwYXRoOlhQYXRoIHhtbG5zOmRzaWcteHBhdGg9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA2L3htbGRzaWctZmlsdGVyMlwiIEZpbHRlcj1cImludGVyc2VjdFwiPi9lZG9jOkVET0MvZWRvYzpPYmplY3Q8L2RzaWcteHBhdGg6WFBhdGg+XHJcbiIgKyANCisJCQkJIjwvZHM6VHJhbnNmb3JtPlxyXG4iICsgDQorCQkJCSI8L2RzOlRyYW5zZm9ybXM+XHJcbiIgKyANCisJCQkJIjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTFcIj48L2RzOkRpZ2VzdE1ldGhvZD5cclxuIiArIA0KKwkJCQkiPGRzOkRpZ2VzdFZhbHVlPllNWEhUWUFyREJjV0RHOTllcHVyZmRTRUFXTT08L2RzOkRpZ2VzdFZhbHVlPlxyXG4iICsgDQorCQkJCSI8L2RzOlJlZmVyZW5jZT5cclxuIiArIA0KKwkJCQkiPC9kczpTaWduZWRJbmZvPlxyXG4iICsgDQorCQkJCSI8ZHM6U2lnbmF0dXJlVmFsdWU+XHJcbiIgKyANCisJCQkJIlVuMkhCSU9jd0dlMzZrOGVERUpJU0tQOC9FbUNwODEzSmxtVjBxcXhJUFZnZE1zSUpYUjVXa3k2dXF3UCtFM3dBWGo0TnlrVzc2R1ZcclxuIiArIA0KKwkJCQkiMWVTRDlkVEt3L00vYkZNYklkMG5CcDBaRmFGRTVES1UvTXk0OTU2cXIyb3lKcWlGUktPb2tDeGRzMGpNUXZHY0tlV1ZDOW9BUk94UlxyXG4iICsgDQorCQkJCSJieVpRYnJ0akd3OVlTK0Q1YWZZPVxyXG4iICsgDQorCQkJCSI8L2RzOlNpZ25hdHVyZVZhbHVlPlxyXG4iICsgDQorCQkJCSI8ZHM6S2V5SW5mbz5cclxuIiArIA0KKwkJCQkiPGRzOlg1MDlEYXRhPlxyXG4iICsgDQorCQkJCSI8ZHM6WDUwOUNlcnRpZmljYXRlPlxyXG4iICsgDQorCQkJCSJNSUlEQURDQ0FtbWdBd0lCQWdJR0FRcEV0eDd0TUEwR0NTcUdTSWIzRFFFQkJRVUFNSUdYTVJRd0VnWURWUVFHRXd0VGQybDBlbVZ5XHJcbiIgKyANCisJCQkJImJHRnVaREVSTUE4R0ExVUVDQk1JUm5KcFltOTFjbWN4RVRBUEJnTlZCQWNUQ0VkcGRtbHphV1Y2TVJVd0V3WURWUVFMRXd4SWVYQmxcclxuIiArIA0KKwkJCQkiY25OMWFYUmxJRFV4R1RBWEJnTlZCQW9URUVsdVptOXliV0YwYVhGMVpTMU5WRVl4SnpBbEJnTlZCQU1USGtsTlZFWWdVbTl2ZEVObFxyXG4iICsgDQorCQkJCSJjblJwWm1sallYUmxJRUYxZEdodmNtbDBlVEFlRncwd05qQXpNamd5TWpBd01EQmFGdzB4TmpBek1UY3lNekF3TURCYU1JR01NUlF3XHJcbiIgKyANCisJCQkJIkVnWURWUVFHRXd0VGQybDBlbVZ5YkdGdVpERVJNQThHQTFVRUNCTUlSbkpwWW05MWNtY3hFVEFQQmdOVkJBY1RDRWRwZG1semFXVjZcclxuIiArIA0KKwkJCQkiTVJVd0V3WURWUVFMRXd4SWVYQmxjbk4xYVhSbElEVXhHVEFYQmdOVkJBb1RFRWx1Wm05eWJXRjBhWEYxWlMxTlZFWXhIREFhQmdOVlxyXG4iICsgDQorCQkJCSJCQU1URTBsTlZFWWdSVzVrUTJWeWRHbG1hV05oZEdVd2daOHdEUVlKS29aSWh2Y05BUUVCQlFBRGdZMEFNSUdKQW9HQkFPeHBBTHpVXHJcbiIgKyANCisJCQkJInI4VGp0RkI3Z2hTY1dYZGFEdUhIUk03YlBPb3l1RFNDeEN6bkNCUWl0cndUL1VuL3ZrWmpEeFNURzFiTFdPYnFVTWYxWWY2dWwzMG5cclxuIiArIA0KKwkJCQkiblU5TnNITzJmcjcrWXd0R25DVjV2WitxeldTUUJZN3FTK0dnOEZ0OXowUGx1TlJlODR1a2NRdDdtZHFTWWV0MnFLYllXTFA4dHlGY1xyXG4iICsgDQorCQkJCSJYQ1lzMEpMNUU2YVRBZ01CQUFHallEQmVNQjhHQTFVZEl3UVlNQmFBRkllSXhIa3VpUFNSdzVPQXJzcVI3d1pZZ1ZQbE1CMEdBMVVkXHJcbiIgKyANCisJCQkJIkRnUVdCQlJyZk5oWWhlSkhhZytWQnFEUFdFT1F5dDNycURBTUJnTlZIUk1CQWY4RUFqQUFNQTRHQTFVZER3RUIvd1FFQXdJRm9EQU5cclxuIiArIA0KKwkJCQkiQmdrcWhraUc5dzBCQVFVRkFBT0JnUUI0T1ZLek9iRGtwYWR0ZXVzYnZjRWluMkdkSzNCMnF6L0h3cUgwN0FFdC9wUWJKL29RT3NZTFxyXG4iICsgDQorCQkJCSJxVnlERnQzdW1KNXVIb24xNW5rcHMzSFJFNE1vWU5mVmJ0ejFHKzBuTWNBYnhWWUpESWZDNFlCSlJVQW0vYUEwdHdma2lINmdGbUxpXHJcbiIgKyANCisJCQkJIlY4bzVZUnRralh2WlFLVXRKL1BzL20wREFDNEE5MzVqVEhEZDZGNEZDdz09XHJcbiIgKyANCisJCQkJIjwvZHM6WDUwOUNlcnRpZmljYXRlPlxyXG4iICsgDQorCQkJCSI8L2RzOlg1MDlEYXRhPlxyXG4iICsgDQorCQkJCSI8L2RzOktleUluZm8+XHJcbiIgKyANCisJCQkJIjwvZHM6U2lnbmF0dXJlPjwvZWRvYzpTaWduYXR1cmVCbG9jaz48L2Vkb2M6RURPQz4iOw0KKwkJU3RyaW5nIGNvcnJlY3RDMTRuPSI8ZWRvYzpPYmplY3QgeG1sbnM6ZGM9XCJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xL1wiIHhtbG5zOmRjdGVybXM9XCJodHRwOi8vcHVybC5vcmcvZGMvdGVybXMvXCIgeG1sbnM6ZWRvYz1cImh0dHA6Ly93d3cuaW10Zi5jb20vaHlwZXJzdWl0ZS9lZG9jLzIuMC9cIiBlZG9jVmVyc2lvbj1cIjIuMFwiPlxuIiArIA0KKwkJCQkiICAgICAgPGVkb2M6T2JqZWN0TWV0YWRhdGE+XG4iICsgDQorCQkJCSIgICAgICAgICA8ZWRvYzpPYmplY3RUeXBlPlJlY29yZDwvZWRvYzpPYmplY3RUeXBlPlxuIiArIA0KKwkJCQkiICAgICAgICAgPGVkb2M6T2JqZWN0Q3JlYXRpb25EYXRlPjIwMDQtMTItMTNUMTQ6Mjc6MzU8L2Vkb2M6T2JqZWN0Q3JlYXRpb25EYXRlPlxuIiArIA0KKwkJCQkiICAgICAgPC9lZG9jOk9iamVjdE1ldGFkYXRhPlxuIiArIA0KKwkJCQkiICAgICAgPGVkb2M6T2JqZWN0Q29udGVudD5cbiIgKyANCisJCQkJIiAgICAgICAgIDxlZG9jOlJlY29yZD5cbiIgKyANCisJCQkJIiAgICAgICAgICAgIDxlZG9jOlJlY29yZE1ldGFkYXRhPjwvZWRvYzpSZWNvcmRNZXRhZGF0YT5cbiIgKyANCisJCQkJIiAgICAgICAgICAgIDxlZG9jOkRvY3VtZW50IGlkPVwiUmV2aXNpb24tMS1Eb2N1bWVudC0xXCI+XG4iICsgDQorCQkJCSIgICAgICAgICAgICAgICA8ZWRvYzpEb2N1bWVudE1ldGFkYXRhPlxuIiArIA0KKwkJCQkiICAgICAgICAgICAgICAgICAgPGRjOmRhdGU+MjAwMy0wNy0yMDwvZGM6ZGF0ZT5cbiIgKyANCisJCQkJIiAgICAgICAgICAgICAgICAgIDxkYzp0eXBlPjIwPC9kYzp0eXBlPlxuIiArIA0KKwkJCQkiICAgICAgICAgICAgICAgICAgPGRjOmZvcm1hdD5QREY8L2RjOmZvcm1hdD5cbiIgKyANCisJCQkJIiAgICAgICAgICAgICAgICAgIDxlZG9jOmN1c3RvbWVyLW51bWJlcj4yMjIyMjI8L2Vkb2M6Y3VzdG9tZXItbnVtYmVyPlxuIiArIA0KKwkJCQkiICAgICAgICAgICAgICAgPC9lZG9jOkRvY3VtZW50TWV0YWRhdGE+XG4iICsgDQorCQkJCSIgICAgICAgICAgICAgICA8ZWRvYzpFbmNvZGluZyBpZD1cIlJldmlzaW9uLTEtRG9jdW1lbnQtMS1FbmNvZGluZy0xXCI+XG4iICsgDQorCQkJCSIgICAgICAgICAgICAgICAgICA8ZWRvYzpFbmNvZGluZ01ldGFkYXRhPlxuIiArIA0KKwkJCQkiICAgICAgICAgICAgICAgICAgPC9lZG9jOkVuY29kaW5nTWV0YWRhdGE+XG4iICsgDQorCQkJCSIgICAgICAgICAgICAgICAgICA8ZWRvYzpDb250ZW50RGF0YSBlbmNhcHN1bGF0aW9uPVwiQmFzZTY0XCIgaWQ9XCJSZXZpc2lvbi0xLURvY3VtZW50LTEtRW5jb2RpbmctMS1Db250ZW50RGF0YS0xXCIgc291cmNlRmlsZVNpemU9XCIxMDI1NTBcIj5BQUE8L2Vkb2M6Q29udGVudERhdGE+XG4iICsgDQorCQkJCSIgICAgICAgICAgICAgICA8L2Vkb2M6RW5jb2Rpbmc+XG4iICsgDQorCQkJCSIgICAgICAgICAgICA8L2Vkb2M6RG9jdW1lbnQ+XG4iICsgDQorCQkJCSIgICAgICAgICA8L2Vkb2M6UmVjb3JkPlxuIiArIA0KKwkJCQkiICAgICAgPC9lZG9jOk9iamVjdENvbnRlbnQ+XG4iICsgDQorCQkJCSIgICA8L2Vkb2M6T2JqZWN0PiI7DQorCQlCeXRlQXJyYXlJbnB1dFN0cmVhbSBpcz1uZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oc2lnLmdldEJ5dGVzKCkpOw0KKwkJamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmYgPQ0KKwkgICAgICAgICBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7DQorDQorCSAgICAgIGRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsNCisNCisJICAgICAgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyIGRiID0gZGJmLm5ld0RvY3VtZW50QnVpbGRlcigpOw0KKwkgICAgICBvcmcudzNjLmRvbS5Eb2N1bWVudCBkb2MgPSBkYi5wYXJzZShpcyk7DQorCSAgICAgIEVsZW1lbnQgc2lnRWxlbWVudCA9DQorCSAgICAgICAgICAoRWxlbWVudCkgZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoQ29uc3RhbnRzLlNpZ25hdHVyZVNwZWNOUywNCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudHMuX1RBR19TSUdOQVRVUkUpLml0ZW0oMCk7DQorCSAgICAgICBYTUxTaWduYXR1cmUgc2lnbiA9IG5ldyBYTUxTaWduYXR1cmUoc2lnRWxlbWVudCwNCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiKTsNCisJICAgICAgIGJvb2xlYW4gdmVyaWZ5ID0NCisJICAgICAgICAgICBzaWduLmNoZWNrU2lnbmF0dXJlVmFsdWUoc2lnbi5nZXRLZXlJbmZvKCkuZ2V0UHVibGljS2V5KCkpOw0KKwkgICAgICAgaWYgKCF2ZXJpZnkpIHsNCisJICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2lnbi5nZXRTaWduZWRJbmZvKCkuZ2V0TGVuZ3RoKCk7IGkrKykgew0KKwkgICAgICAgICAgICBib29sZWFuIHJlZlZlcmlmeSA9DQorCSAgICAgICAgICAgICAgIHNpZ24uZ2V0U2lnbmVkSW5mbygpLmdldFZlcmlmaWNhdGlvblJlc3VsdChpKTsJICAgICAgICAgICAgDQorCSAgICAgICAgICAgIGlmICghcmVmVmVyaWZ5KSB7CSAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoY29ycmVjdEMxNG4sIG5ldyBTdHJpbmcoc2lnbi5nZXRTaWduZWRJbmZvKCkuaXRlbShpKS5nZXRDb250ZW50c0FmdGVyVHJhbnNmb3JtYXRpb24oKS5nZXRCeXRlcygpKSk7DQorCSAgICAgICAgICAgIH0NCisJICAgICAgICAgfQ0KKwkgICAgICAgfQ0KKw0KKwkgICAgICAgDQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3V0aWxzL0FsbFRlc3RzLmphdmEgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvdXRpbHMvQWxsVGVzdHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmMwMTRjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3V0aWxzL0FsbFRlc3RzLmphdmEKQEAgLTAsMCArMSwzNiBAQAorLyoNCisgKiBDb3B5cmlnaHQgMjAwOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQorICoNCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICoNCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QudXRpbHM7DQorDQoraW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Ow0KK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOw0KKw0KK3B1YmxpYyBjbGFzcyBBbGxUZXN0cyB7DQorDQorCXB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpIHsNCisJCVRlc3RTdWl0ZSBzdWl0ZSA9IG5ldyBUZXN0U3VpdGUoDQorCQkJCSJUZXN0IGZvciBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LnV0aWxzIik7DQorCQkvLyRKVW5pdC1CRUdJTiQNCisJCXN1aXRlLmFkZFRlc3QoSWRSZXNvbHZlclRlc3Quc3VpdGUoKSk7DQorCQlzdWl0ZS5hZGRUZXN0KEJhc2U2NFRlc3Quc3VpdGUoKSk7DQorCQlzdWl0ZS5hZGRUZXN0U3VpdGUoT2xkQXBpVGVzdC5jbGFzcyk7DQorCQkvLyRKVW5pdC1FTkQkDQorCQlzdWl0ZS5hZGRUZXN0KG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QudXRpbHMucmVzb2x2ZXIuQWxsVGVzdHMuc3VpdGUoKSk7DQorCQlyZXR1cm4gc3VpdGU7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3V0aWxzL0Jhc2U2NFRlc3QuamF2YSBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC91dGlscy9CYXNlNjRUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzIxMTgzMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC91dGlscy9CYXNlNjRUZXN0LmphdmEKQEAgLTAsMCArMSwxNTYgQEAKKworLyoKKyAqIENvcHlyaWdodCAgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC51dGlsczsKKworCisKK2ltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbTsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0OworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQmFzZTY0OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLlhNTFV0aWxzOworCisKKy8qKgorICogVW5pdCB0ZXN0IGZvciB7QGxpbmsgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMuQmFzZTY0fQorICoKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEdldWVyLVBvbGxtYW5uCisgKi8KK3B1YmxpYyBjbGFzcyBCYXNlNjRUZXN0IGV4dGVuZHMgVGVzdENhc2UgeworCisgICAvKioge0BsaW5rIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nfSBsb2dnaW5nIGZhY2lsaXR5ICovCisgICAgc3RhdGljIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZyBsb2cgPSAKKyAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeS5nZXRMb2coQmFzZTY0VGVzdC5jbGFzcy5nZXROYW1lKCkpOworCisgICAvKioKKyAgICAqIE1ldGhvZCBzdWl0ZQorICAgICogQHJldHVybgorICAgICogICAgCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpIHsKKyAgICAgIHJldHVybiBuZXcgVGVzdFN1aXRlKEJhc2U2NFRlc3QuY2xhc3MpOworICAgfQorCisgICAvKioKKyAgICAqCisgICAgKiBAcGFyYW0gTmFtZV8KKyAgICAqLworICAgcHVibGljIEJhc2U2NFRlc3QoU3RyaW5nIE5hbWVfKSB7CisgICAgICBzdXBlcihOYW1lXyk7CisgICB9CisKKyAgIC8qKgorICAgICoKKyAgICAqIEBwYXJhbSBhcmdzCisgICAgKi8KKyAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKworICAgICAgU3RyaW5nW10gdGVzdENhc2VOYW1lID0geyAiLW5vbG9hZGluZyIsIEJhc2U2NFRlc3QuY2xhc3MuZ2V0TmFtZSgpIH07CisKKyAgICAgIGp1bml0LnRleHR1aS5UZXN0UnVubmVyLm1haW4odGVzdENhc2VOYW1lKTsKKworICAgICAgLy8ganVuaXQuc3dpbmd1aS5UZXN0UnVubmVyLm1haW4odGVzdENhc2VOYW1lKTsKKyAgIH0gICAgLy9wdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKQorCisgICAvKioKKyAgICAqIE1ldGhvZCB0ZXN0QTEKKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKgorICAgICogQHRocm93cyBqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24KKyAgICAqICR0b2RvJCBFeHRlbmQgbW9yZSB0ZXN0cworICAgICovCisgICBwdWJsaWMgc3RhdGljIHZvaWQgdGVzdEExKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgIFN0cmluZyB0ZXh0RGF0YSA9ICJIYWxsbyI7CisgICAgICBTdHJpbmcgcmVzdWx0MCA9IEJhc2U2NC5lbmNvZGUodGV4dERhdGEuZ2V0Qnl0ZXMoIlVURi04IikpOworCisgICAgICBhc3NlcnROb3ROdWxsKCJSZXN1bHQgb2YgZW5jb2RpbmcgcmVzdWx0MCIsIHJlc3VsdDApOworCisgICAgICBieXRlIHJlc3VsdEJ5dGVzW10gPSBCYXNlNjQuZGVjb2RlKHJlc3VsdDApOworICAgICAgU3RyaW5nIHJlc3VsdFN0ciA9IG5ldyBTdHJpbmcocmVzdWx0Qnl0ZXMsICJVVEYtOCIpOworCisgICAgICBhc3NlcnRFcXVhbHMoIlJlc3VsdCBvZiBkZWNvZGluZyIsIDAsIHRleHREYXRhLmNvbXBhcmVUbyhyZXN1bHRTdHIpKTsKKyAgICAgIEJ5dGVBcnJheU91dHB1dFN0cmVhbSBvcz1uZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7CisgICAgICBCYXNlNjQuZGVjb2RlKHJlc3VsdDAuZ2V0Qnl0ZXMoKSxvcyk7CisgICAgICByZXN1bHRTdHIgPSBuZXcgU3RyaW5nKG9zLnRvQnl0ZUFycmF5KCksICJVVEYtOCIpOworICAgICAgYXNzZXJ0RXF1YWxzKCJSZXN1bHQgb2YgZGVjb2RpbmciLCAwLCB0ZXh0RGF0YS5jb21wYXJlVG8ocmVzdWx0U3RyKSk7CisgICB9CisKKyAgIC8qKgorICAgICogTWV0aG9kIHRlc3RXcmFwMQorICAgICoKKwkqIFRlc3QgZm9yIGNvcnJlY3QgbGluZSB3cmFwcGluZyBhdCBlbmQgb2YgYW4gZXhhY3RseSA3NiBjaGFyIHN0cmluZworCSoKKyAgICAqIEB0aHJvd3MgamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uCisgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgorICAgICovCisKKwlwdWJsaWMgc3RhdGljIHZvaWQgdGVzdFdyYXAxKCkgCisJCXRocm93cyBqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24sRXhjZXB0aW9uIHsKKworCQlTdHJpbmcgaW5wdXREYXRhID0gIlRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cgYW5kIHNvbWUgZXh0ciI7CisJCVN0cmluZyBleHBlY3RlZFJlc3VsdCA9ICJWR2hsSUhGMWFXTnJJR0p5YjNkdUlHWnZlQ0JxZFcxd2N5QnZkbVZ5SUhSb1pTQnNZWHA1SUdSdlp5QmhibVFnYzI5dFpTQmxlSFJ5IjsKKwkJU3RyaW5nIHJlc3VsdCA9IEJhc2U2NC5lbmNvZGUoaW5wdXREYXRhLmdldEJ5dGVzKCJVVEYtOCIpKTsKKwkJYXNzZXJ0RXF1YWxzKCJSZXN1bHQgb2YgZW5jb2RpbmciLCByZXN1bHQsIGV4cGVjdGVkUmVzdWx0KTsKKworCQlTdHJpbmcgcmVzdWx0MiA9IG5ldyBTdHJpbmcoQmFzZTY0LmRlY29kZShyZXN1bHQpLCAiVVRGLTgiKTsKKwkJYXNzZXJ0RXF1YWxzKCJSZXN1bHQgb2YgZW5jb2RpbmciLCByZXN1bHQyLCBpbnB1dERhdGEpOworICAgICAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gb3M9bmV3IEJ5dGVBcnJheU91dHB1dFN0cmVhbSgpOworICAgICAgICBCYXNlNjQuZGVjb2RlKGV4cGVjdGVkUmVzdWx0LmdldEJ5dGVzKCksb3MpOworICAgICAgICAgIHJlc3VsdDIgPSBuZXcgU3RyaW5nKG9zLnRvQnl0ZUFycmF5KCksICJVVEYtOCIpOworICAgICAgICAgIGFzc2VydEVxdWFscygiUmVzdWx0IG9mIGVuY29kaW5nIiwgcmVzdWx0MiwgaW5wdXREYXRhKTsKKworCX0KKworICAgLyoqCisgICAgKiBNZXRob2QgdGVzdFdyYXAyCisgICAgKgorCSogVGVzdCBmb3IgY29ycmVjdCBsaW5lIHdyYXBwaW5nIGFmdGVyIG1vcmUgdGhhbiA3NiBjaGFyYWN0ZXJzCisJKgorICAgICogQHRocm93cyBqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24KKyAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCisgICAgKi8KKworCXB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0V3JhcDIoKSAKKwkJdGhyb3dzIGphdmEuaW8uVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiwgRXhjZXB0aW9uIHsKKworCQlTdHJpbmcgaW5wdXREYXRhID0gIlRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cgYW5kIHNvbWUgZXh0cmEgdGV4dCB0aGF0IHdpbGwgY2F1c2UgYSBsaW5lIHdyYXAiOworCQlTdHJpbmcgZXhwZWN0ZWRSZXN1bHQgPSBudWxsOworCQlpZiAoWE1MVXRpbHMuaWdub3JlTGluZUJyZWFrcygpKSB7CisJCSAgICBleHBlY3RlZFJlc3VsdCA9ICJWR2hsSUhGMWFXTnJJR0p5YjNkdUlHWnZlQ0JxZFcxd2N5QnZkbVZ5SUhSb1pTQnNZWHA1SUdSdlp5QmhibVFnYzI5dFpTQmxlSFJ5WVNCMFpYaDBJSFJvWVhRZ2QybHNiQ0JqWVhWelpTQmhJR3hwYm1VZ2QzSmhjQT09IjsKKwkJfSBlbHNlIHsKKwkJICAgIGV4cGVjdGVkUmVzdWx0ID0gIlZHaGxJSEYxYVdOcklHSnliM2R1SUdadmVDQnFkVzF3Y3lCdmRtVnlJSFJvWlNCc1lYcDVJR1J2WnlCaGJtUWdjMjl0WlNCbGVIUnlcbllTQjBaWGgwSUhSb1lYUWdkMmxzYkNCallYVnpaU0JoSUd4cGJtVWdkM0poY0E9PSI7CisJCX0KKwkJU3RyaW5nIHJlc3VsdCA9IEJhc2U2NC5lbmNvZGUoaW5wdXREYXRhLmdldEJ5dGVzKCJVVEYtOCIpKTsKKwkJYXNzZXJ0RXF1YWxzKCJSZXN1bHQgb2YgZW5jb2RpbmciLCByZXN1bHQsIGV4cGVjdGVkUmVzdWx0KTsKKworCQlTdHJpbmcgcmVzdWx0MiA9IG5ldyBTdHJpbmcoQmFzZTY0LmRlY29kZShyZXN1bHQpLCAiVVRGLTgiKTsKKwkJYXNzZXJ0RXF1YWxzKCJSZXN1bHQgb2YgZW5jb2RpbmciLCByZXN1bHQyLCBpbnB1dERhdGEpOworICAgICAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gb3M9bmV3IEJ5dGVBcnJheU91dHB1dFN0cmVhbSgpOworICAgICAgICBCYXNlNjQuZGVjb2RlKGV4cGVjdGVkUmVzdWx0LmdldEJ5dGVzKCksb3MpOworICAgICAgICAgIHJlc3VsdDIgPSBuZXcgU3RyaW5nKG9zLnRvQnl0ZUFycmF5KCksICJVVEYtOCIpOworICAgICAgICAgIGFzc2VydEVxdWFscygiUmVzdWx0IG9mIGVuY29kaW5nIiwgcmVzdWx0MiwgaW5wdXREYXRhKTsKKwl9CisKKyAgIHN0YXRpYyB7CisgICAgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC91dGlscy9JZFJlc29sdmVyVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3V0aWxzL0lkUmVzb2x2ZXJUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNmOWJkYQotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC91dGlscy9JZFJlc29sdmVyVGVzdC5qYXZhCkBAIC0wLDAgKzEsNzEgQEAKKy8qDQorICogQ29weXJpZ2h0IDIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLg0KKyAqDQorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LnV0aWxzOw0KKw0KK2ltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheUlucHV0U3RyZWFtOw0KKw0KK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5Ow0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5JZFJlc29sdmVyOw0KK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsNCitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsNCisNCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7DQoraW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsNCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsNCisNCitwdWJsaWMgY2xhc3MgSWRSZXNvbHZlclRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7DQorCXB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpIHsNCisJICAgICAgcmV0dXJuIG5ldyBUZXN0U3VpdGUoSWRSZXNvbHZlclRlc3QuY2xhc3MpOw0KKwkgICB9DQorCXB1YmxpYyB2b2lkIHRlc3RJZFNvYXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsNCisJCVN0cmluZyBzPSI8ZW52OkVudmVsb3BlIHhtbG5zOlNPQVAtU0VDPVwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9zZWN1cml0eS8yMDAwLTEyXCIgeG1sbnM6ZW52PVwiaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMi9zb2FwLWVudmVsb3BlXCIgYWN0b3I9XCJzb21lLXVyaVwiIG11c3RVbmRlcnN0YW5kPVwiMVwiPlxyXG4iICsgDQorCQkJCSI8ZW52OkhlYWRlcj48U09BUC1TRUM6U2lnbmF0dXJlPnh4eHg8L1NPQVAtU0VDOlNpZ25hdHVyZT48L2VudjpIZWFkZXI+XHJcbiIgKyANCisJCQkJIjxlbnY6Qm9keSBTT0FQLVNFQzppZD1cIkJvZHlcIj5UaGlzIGlzIHNpZ25lZCB0b2dldGhlciB3aXRoIGl0XCdzIEJvZHkgYW5jZXN0b3I8L2VudjpCb2R5PlxyXG4iICsgDQorCQkJCSI8L2VudjpFbnZlbG9wZT4iOw0KKwkJRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBkYmY9RG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOw0KKwkJZGJmLnNldE5hbWVzcGFjZUF3YXJlKHRydWUpOw0KKwkJRG9jdW1lbnQgZG9jPWRiZi5uZXdEb2N1bWVudEJ1aWxkZXIoKS5wYXJzZShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0ocy5nZXRCeXRlcygpKSk7DQorCQlFbGVtZW50IGVsPUlkUmVzb2x2ZXIuZ2V0RWxlbWVudEJ5SWQoZG9jLCAiQm9keSIpOw0KKwkJYXNzZXJ0Tm90TnVsbChlbCk7DQorCQlhc3NlcnRFcXVhbHMoIkJvZHkiLGVsLmdldExvY2FsTmFtZSgpKTsNCisJfQ0KKwlwdWJsaWMgdm9pZCB0ZXN0SWRXaXRoT3RoZXJJZFNvYXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsNCisJCVN0cmluZyBzPSI8ZW52OkVudmVsb3BlIHhtbG5zOlNPQVAtU0VDPVwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9zZWN1cml0eS8yMDAwLTEyXCIgeG1sbnM6ZW52PVwiaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMi9zb2FwLWVudmVsb3BlXCIgYWN0b3I9XCJzb21lLXVyaVwiIG11c3RVbmRlcnN0YW5kPVwiMVwiPlxyXG4iICsgDQorCQkJCSI8ZW52OkhlYWRlcj48U09BUC1TRUM6U2lnbmF0dXJlPnh4eHg8L1NPQVAtU0VDOlNpZ25hdHVyZT48L2VudjpIZWFkZXI+XHJcbiIgKyANCisJCQkJIjxhIGlkPVwiQm9keVwiLz48ZW52OkJvZHkgU09BUC1TRUM6aWQ9XCJCb2R5XCI+VGhpcyBpcyBzaWduZWQgdG9nZXRoZXIgd2l0aCBpdFwncyBCb2R5IGFuY2VzdG9yPC9lbnY6Qm9keT5cclxuIiArIA0KKwkJCQkiPC9lbnY6RW52ZWxvcGU+IjsNCisJCURvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmPURvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsNCisJCWRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsNCisJCURvY3VtZW50IGRvYz1kYmYubmV3RG9jdW1lbnRCdWlsZGVyKCkucGFyc2UobmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKHMuZ2V0Qnl0ZXMoKSkpOw0KKwkJRWxlbWVudCBlbD1JZFJlc29sdmVyLmdldEVsZW1lbnRCeUlkKGRvYywgIkJvZHkiKTsNCisJCWFzc2VydE5vdE51bGwoZWwpOw0KKwkJYXNzZXJ0RXF1YWxzKCJCb2R5IixlbC5nZXRMb2NhbE5hbWUoKSk7DQorCX0NCisJcHVibGljIHZvaWQgdGVzdEFOb0lkKCkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorCQlTdHJpbmcgcz0iPGVudjpFbnZlbG9wZSB4bWxuczpTT0FQLVNFQz1cImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvc2VjdXJpdHkvMjAwMC0xMlwiIHhtbG5zOmVudj1cImh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTIvc29hcC1lbnZlbG9wZVwiIGFjdG9yPVwic29tZS11cmlcIiBtdXN0VW5kZXJzdGFuZD1cIjFcIj5cclxuIiArIA0KKwkJCQkiPGVudjpIZWFkZXI+PFNPQVAtU0VDOlNpZ25hdHVyZT54eHh4PC9TT0FQLVNFQzpTaWduYXR1cmU+PC9lbnY6SGVhZGVyPlxyXG4iICsgDQorCQkJCSI8YSBpZD1cIkJvZHlcIi8+IiArIA0KKwkJCQkiPC9lbnY6RW52ZWxvcGU+IjsNCisJCURvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJmPURvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKTsNCisJCWRiZi5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsNCisJCURvY3VtZW50IGRvYz1kYmYubmV3RG9jdW1lbnRCdWlsZGVyKCkucGFyc2UobmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKHMuZ2V0Qnl0ZXMoKSkpOw0KKwkJRWxlbWVudCBlbD1JZFJlc29sdmVyLmdldEVsZW1lbnRCeUlkKGRvYywgIkJvZHkiKTsNCisJCWFzc2VydE5vdE51bGwoZWwpOw0KKwkJYXNzZXJ0RXF1YWxzKCJhIixlbC5nZXRMb2NhbE5hbWUoKSk7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3V0aWxzL09sZEFwaVRlc3QuamF2YSBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC91dGlscy9PbGRBcGlUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRjYjgyNgotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC91dGlscy9PbGRBcGlUZXN0LmphdmEKQEAgLTAsMCArMSwxOTggQEAKKy8qDQorICogQ29weXJpZ2h0ICAxOTk5LTIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLg0KKyAqDQorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LnV0aWxzOw0KKw0KK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOw0KK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlB1YmxpY0tleTsNCitpbXBvcnQgamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZTsNCisNCitpbXBvcnQgamF2YXguY3J5cHRvLlNlY3JldEtleTsNCitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeTsNCitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbjsNCisNCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5jMTRuLkNhbm9uaWNhbGl6YXRpb25FeGNlcHRpb247DQoraW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmMxNG4uSW52YWxpZENhbm9uaWNhbGl6ZXJFeGNlcHRpb247DQoraW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LmtleXMuS2V5SW5mbzsNCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5rZXlyZXNvbHZlci5LZXlSZXNvbHZlcjsNCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5rZXlyZXNvbHZlci5LZXlSZXNvbHZlckV4Y2VwdGlvbjsNCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5rZXlyZXNvbHZlci5LZXlSZXNvbHZlclNwaTsNCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkua2V5cy5zdG9yYWdlLlN0b3JhZ2VSZXNvbHZlcjsNCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZUlucHV0Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50cmFuc2Zvcm1zLlRyYW5zZm9ybTsNCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudHJhbnNmb3Jtcy5UcmFuc2Zvcm1TcGk7DQoraW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRyYW5zZm9ybXMuVHJhbnNmb3JtYXRpb25FeGNlcHRpb247DQoraW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyLlJlc291cmNlUmVzb2x2ZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyLlJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb247DQoraW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyLlJlc291cmNlUmVzb2x2ZXJTcGk7DQoraW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7DQoraW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50Ow0KK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50Ow0KK2ltcG9ydCBvcmcueG1sLnNheC5TQVhFeGNlcHRpb247DQorDQorcHVibGljIGNsYXNzIE9sZEFwaVRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7DQorCQ0KKwlwdWJsaWMgc3RhdGljIGNsYXNzIE9sZFRyYW5zZm9ybSBleHRlbmRzIFRyYW5zZm9ybVNwaSB7DQorCQlzdGF0aWMgVHJhbnNmb3JtIGNvbXBhcmU7DQorCQlwcm90ZWN0ZWQgWE1MU2lnbmF0dXJlSW5wdXQgZW5naW5lUGVyZm9ybVRyYW5zZm9ybSgNCisJCQkgICAgICBYTUxTaWduYXR1cmVJbnB1dCBpbnB1dCkNCisJCQkgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24sDQorCQkJICAgICAgICAgICAgICAgIENhbm9uaWNhbGl6YXRpb25FeGNlcHRpb24sIEludmFsaWRDYW5vbmljYWxpemVyRXhjZXB0aW9uLA0KKwkJCSAgICAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbkV4Y2VwdGlvbiwgUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiwNCisJCQkgICAgICAgICAgICAgICAgU0FYRXhjZXB0aW9uIHsNCisJCQlhc3NlcnRFcXVhbHMoY29tcGFyZSxfdHJhbnNmb3JtT2JqZWN0KTsNCisJCQkJIHJldHVybiBudWxsIDsNCisJICAgICB9DQorDQorCQlwcm90ZWN0ZWQgU3RyaW5nIGVuZ2luZUdldFVSSSgpIHsNCisJCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViDQorCQkJcmV0dXJuIG51bGw7DQorCQl9Ow0KKwl9Ow0KKwlwdWJsaWMgdm9pZCB0ZXN0T2xkVHJhbnNmb3JtU3BpQXBpKCkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorCQlJbml0LmluaXQoKTsNCisJCURvY3VtZW50IGRvYz1Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCkubmV3RG9jdW1lbnRCdWlsZGVyKCkubmV3RG9jdW1lbnQoKTsNCisJCVRyYW5zZm9ybS5yZWdpc3Rlcigib2xkIiwgT2xkVHJhbnNmb3JtLmNsYXNzLmdldE5hbWUoKSk7DQorDQorCQlUcmFuc2Zvcm0gYT1uZXcgVHJhbnNmb3JtKGRvYywib2xkIixudWxsKTsNCisJCU9sZFRyYW5zZm9ybS5jb21wYXJlPWE7DQorCQlhLnBlcmZvcm1UcmFuc2Zvcm0obnVsbCk7DQorCX07DQorCQ0KKwlwdWJsaWMgc3RhdGljIGNsYXNzIE9sZFJlc291cmNlUmVzb2x2ZXJTcGkgZXh0ZW5kcyBSZXNvdXJjZVJlc29sdmVyU3BpIHsNCisJCUF0dHIgdXJpQ29tcGFyZTsNCisJCVN0cmluZyBiYXNlQ29tcGFyZTsNCisJCXB1YmxpYyBib29sZWFuIGVuZ2luZUNhblJlc29sdmUoQXR0ciB1cmksIFN0cmluZyBCYXNlVVJJKSB7DQorCQkJaWYgKHVyaS5nZXRWYWx1ZSgpLmluZGV4T2YoIiEhIXRlc3Q9IikhPTApIHsNCisJCQkJcmV0dXJuIGZhbHNlOw0KKwkJCX0NCisJCQl1cmlDb21wYXJlPXVyaTsNCisJCQliYXNlQ29tcGFyZT1CYXNlVVJJOw0KKwkJCXJldHVybiB0cnVlOw0KKwkJfQ0KKw0KKwkJcHVibGljIFhNTFNpZ25hdHVyZUlucHV0IGVuZ2luZVJlc29sdmUoQXR0ciB1cmksIFN0cmluZyBCYXNlVVJJKSB0aHJvd3MgUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbiB7DQorCQkJYXNzZXJ0RXF1YWxzKHVyaUNvbXBhcmUsIHVyaSk7DQorCQkJYXNzZXJ0RXF1YWxzKGJhc2VDb21wYXJlLEJhc2VVUkkpOw0KKwkJCXJldHVybiBudWxsOw0KKwkJfQ0KKwkJDQorCX07DQorCXB1YmxpYyB2b2lkIHRlc3RPbGRSZXNvdXJjZVJlc29sdmVyU3BpKCkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorCQlEb2N1bWVudCBkb2M9RG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpLm5ld0RvY3VtZW50QnVpbGRlcigpLm5ld0RvY3VtZW50KCk7CQkNCisJCUF0dHIgdXJpPWRvYy5jcmVhdGVBdHRyaWJ1dGUoImlkIik7DQorCQl1cmkuc2V0Tm9kZVZhbHVlKCIhISF0ZXN0PTEiKTsNCisJCSgoRWxlbWVudClkb2MuY3JlYXRlRWxlbWVudCgidGVzdCIpKS5zZXRBdHRyaWJ1dGVOb2RlKHVyaSk7DQorCQlBdHRyIHVyaTE9ZG9jLmNyZWF0ZUF0dHJpYnV0ZSgiaWQiKTsNCisJCXVyaTEuc2V0Tm9kZVZhbHVlKCIhISF0ZXN0PTIiKTsNCisJCWRvYy5jcmVhdGVFbGVtZW50KCJ0ZXN0MSIpLnNldEF0dHJpYnV0ZU5vZGUodXJpMSk7DQorCQlSZXNvdXJjZVJlc29sdmVyLnJlZ2lzdGVyQXRTdGFydChPbGRSZXNvdXJjZVJlc29sdmVyU3BpLmNsYXNzLmdldE5hbWUoKSk7DQorCQlSZXNvdXJjZVJlc29sdmVyIHJlc29sdmVyPVJlc291cmNlUmVzb2x2ZXIuZ2V0SW5zdGFuY2UodXJpLCAidGVzdCIpOw0KKwkJUmVzb3VyY2VSZXNvbHZlciByZXNvbHZlcjE9UmVzb3VyY2VSZXNvbHZlci5nZXRJbnN0YW5jZSh1cmkxLCAidGVzdDEiKTsNCisJCVJlc291cmNlUmVzb2x2ZXIgcmVzb2x2ZXIyPVJlc291cmNlUmVzb2x2ZXIuZ2V0SW5zdGFuY2UodXJpMSwgInRlc3QyIik7DQorCQkNCisJCXJlc29sdmVyMi5yZXNvbHZlKHVyaTEsICJ0ZXN0MiIpOwkJDQorCQlyZXNvbHZlci5yZXNvbHZlKHVyaSwgInRlc3QiKTsNCisJCXJlc29sdmVyMS5yZXNvbHZlKHVyaTEsICJ0ZXN0MSIpOw0KKwkJDQorCQkNCisJfTsNCisJc3RhdGljIGNsYXNzIFB1YmxpY0tleU1vY2sgaW1wbGVtZW50cyBQdWJsaWNLZXkgew0KKw0KKwkJICAgcHVibGljIFN0cmluZyBnZXRBbGdvcml0aG0oKSB7DQorCQkJICAgLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBtZXRob2Qgc3R1Yg0KKwkJCSAgIHJldHVybiBudWxsOw0KKwkJICAgfQ0KKw0KKwkJICAgcHVibGljIGJ5dGVbXSBnZXRFbmNvZGVkKCkgew0KKwkJCSAgIC8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgbWV0aG9kIHN0dWINCisJCQkgICByZXR1cm4gbnVsbDsNCisJCSAgIH0NCisNCisJCSAgIHB1YmxpYyBTdHJpbmcgZ2V0Rm9ybWF0KCkgew0KKwkJCSAgIC8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgbWV0aG9kIHN0dWINCisJCQkgICByZXR1cm4gbnVsbDsNCisJCSAgIH0JCQkJICAgDQorCSAgIH07CQkJDQorCXN0YXRpYyBwdWJsaWMgY2xhc3MgT2xkS2V5UmVzb2x2ZXJTcGkgZXh0ZW5kcyBLZXlSZXNvbHZlclNwaSB7DQorCQlzdGF0aWMgaW50IG51bWJlcj0wOw0KKwkJUHVibGljS2V5IHBrPW51bGw7DQorCQlwdWJsaWMgT2xkS2V5UmVzb2x2ZXJTcGkoKSB7DQorCQkJbnVtYmVyKys7DQorCQl9Ow0KKwkJcHVibGljIGJvb2xlYW4gZW5naW5lQ2FuUmVzb2x2ZShFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJLA0KKwkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmFnZVJlc29sdmVyIHN0b3JhZ2UpIHsNCisJCQkgICBpZiAoIiEhIXRlc3RVcmkiLmVxdWFscyhCYXNlVVJJKSkgDQorCQkJCSAgIHJldHVybiB0cnVlOw0KKwkJCSAgIHJldHVybiBmYWxzZTsNCisJCX0NCisJCSAgIHB1YmxpYyBQdWJsaWNLZXkgZW5naW5lUmVzb2x2ZVB1YmxpY0tleSgNCisJCSAgICAgIEVsZW1lbnQgZWxlbWVudCwgU3RyaW5nIEJhc2VVUkksIFN0b3JhZ2VSZXNvbHZlciBzdG9yYWdlKQ0KKwkJICAgICAgICAgdGhyb3dzIEtleVJlc29sdmVyRXhjZXB0aW9uIHsNCisJCQkgICBpZiAocGs9PW51bGwpDQorCQkJCSAgIHBrPW5ldyBQdWJsaWNLZXlNb2NrKCk7DQorCQkJICAgcmV0dXJuIHBrOw0KKwkJICAgIH07DQorCQkgICANCisJCSAgIA0KKwkJICAgIHB1YmxpYyBYNTA5Q2VydGlmaWNhdGUgZW5naW5lUmVzb2x2ZVg1MDlDZXJ0aWZpY2F0ZSgNCisJCSAgICAgICBFbGVtZW50IGVsZW1lbnQsIFN0cmluZyBCYXNlVVJJLCBTdG9yYWdlUmVzb2x2ZXIgc3RvcmFnZSkNCisJCSAgICAgICAgIHRocm93cyBLZXlSZXNvbHZlckV4Y2VwdGlvbnsNCisJCSAgICAgICAgcmV0dXJuIG51bGw7DQorCQkgICAgfTsNCisNCisJCSAgICBwdWJsaWMgU2VjcmV0S2V5IGVuZ2luZVJlc29sdmVTZWNyZXRLZXkoDQorCQkgICAgICAgRWxlbWVudCBlbGVtZW50LCBTdHJpbmcgQmFzZVVSSSwgU3RvcmFnZVJlc29sdmVyIHN0b3JhZ2UpDQorCQkgICAgICAgICAgdGhyb3dzIEtleVJlc29sdmVyRXhjZXB0aW9uew0KKwkJICAgIAlyZXR1cm4gbnVsbDsNCisJCSAgICB9OyANCisJfTsNCisJDQorCXB1YmxpYyB2b2lkIHRlc3RPbGRLZXlSZXNvbHZlclNwaSgpIHRocm93cyBFeGNlcHRpb257DQorCQlLZXlSZXNvbHZlci5yZWdpc3RlcihPbGRLZXlSZXNvbHZlclNwaS5jbGFzcy5nZXROYW1lKCkpOw0KKwkJRG9jdW1lbnQgZG9jPURvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKS5uZXdEb2N1bWVudEJ1aWxkZXIoKS5uZXdEb2N1bWVudCgpOwkJCQkNCisJCUVsZW1lbnQgZWw9KChFbGVtZW50KWRvYy5jcmVhdGVFbGVtZW50KCJ0ZXN0IikpOw0KKwkJUHVibGljS2V5IHBrPUtleVJlc29sdmVyLmdldFB1YmxpY0tleShlbCwgIiEhIXRlc3RVcmkiLCBudWxsKTsNCisJCWFzc2VydE5vdE51bGwocGspOw0KKwkJYXNzZXJ0VHJ1ZShwayBpbnN0YW5jZW9mIFB1YmxpY0tleU1vY2spOw0KKwkJYXNzZXJ0RXF1YWxzKDIsIE9sZEtleVJlc29sdmVyU3BpLm51bWJlcik7DQorCQlQdWJsaWNLZXkgcGsxPUtleVJlc29sdmVyLmdldFB1YmxpY0tleShlbCwgIiEhIXRlc3RVcmkiLCBudWxsKTsNCisJCWFzc2VydE5vdFNhbWUocGsscGsxKTsNCisJCWFzc2VydEVxdWFscygzLCBPbGRLZXlSZXNvbHZlclNwaS5udW1iZXIpOw0KKwl9DQorCXN0YXRpYyBwdWJsaWMgY2xhc3MgT2xkS2V5UmVzb2x2ZXJOb1B1YmxpY0NvbnNTcGkgZXh0ZW5kcyBPbGRLZXlSZXNvbHZlclNwaSB7DQorCQlwcm90ZWN0ZWQgT2xkS2V5UmVzb2x2ZXJOb1B1YmxpY0NvbnNTcGkoKSB7CQkNCisJCX07DQorCQlwdWJsaWMgT2xkS2V5UmVzb2x2ZXJOb1B1YmxpY0NvbnNTcGkoUHVibGljS2V5IHBrKSB7DQorCQkJdGhpcy5waz1wazsNCisJCX0NCisJfTsNCisJDQorDQorCXB1YmxpYyB2b2lkIHRlc3RPbGRLZXlSZXNvbHZlclNwaUluS2V5SW5mbygpIHRocm93cyBFeGNlcHRpb257DQorCQlEb2N1bWVudCBkb2M9RG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpLm5ld0RvY3VtZW50QnVpbGRlcigpLm5ld0RvY3VtZW50KCk7DQorCQlFbGVtZW50IGVsPShFbGVtZW50KWRvYy5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiLCJLZXlJbmZvIik7DQorCQllbC5hcHBlbmRDaGlsZCgoRWxlbWVudClkb2MuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiwiS2V5SW5mbyIpKTsNCisJCUtleUluZm8ga2k9bmV3IEtleUluZm8oZWwsIiEhIXRlc3RVcmkiKTsNCisJCVB1YmxpY0tleSBwaz1uZXcgUHVibGljS2V5TW9jaygpOw0KKwkJa2kucmVnaXN0ZXJJbnRlcm5hbEtleVJlc29sdmVyKG5ldyBPbGRLZXlSZXNvbHZlck5vUHVibGljQ29uc1NwaShwaykpOw0KKwkJYXNzZXJ0Tm90TnVsbChraS5nZXRQdWJsaWNLZXkoKSk7DQorCQkNCisJfQ0KK30NCmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvdXRpbHMvcmVzb2x2ZXIvQWxsVGVzdHMuamF2YSBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC91dGlscy9yZXNvbHZlci9BbGxUZXN0cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3NmZhM2EKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvdXRpbHMvcmVzb2x2ZXIvQWxsVGVzdHMuamF2YQpAQCAtMCwwICsxLDM0IEBACisvKg0KKyAqIENvcHlyaWdodCAyMDA5IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4NCisgKg0KKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudGVzdC51dGlscy5yZXNvbHZlcjsNCisNCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7DQoraW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7DQorDQorcHVibGljIGNsYXNzIEFsbFRlc3RzICB7DQorDQorCXB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpIHsNCisJCVRlc3RTdWl0ZSBzdWl0ZSA9IG5ldyBUZXN0U3VpdGUoDQorCQkJCSJUZXN0IGZvciBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LnV0aWxzLnJlc29sdmVyIik7DQorCQkvLyRKVW5pdC1CRUdJTiQNCisJCXN1aXRlLmFkZFRlc3QoUmVzb3VyY2VSZXNvbHZlclRlc3Quc3VpdGUoKSk7DQorCQlzdWl0ZS5hZGRUZXN0U3VpdGUoUmVzb2x2ZXJEaXJlY3RIVFRQLmNsYXNzKTsNCisJCS8vJEpVbml0LUVORCQNCisJCXJldHVybiBzdWl0ZTsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvdXRpbHMvcmVzb2x2ZXIvT2ZmbGluZVJlc29sdmVyLmphdmEgYi9zcmNfdW5pdFRlc3RzL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3Rlc3QvdXRpbHMvcmVzb2x2ZXIvT2ZmbGluZVJlc29sdmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg4MDA0YwotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC91dGlscy9yZXNvbHZlci9PZmZsaW5lUmVzb2x2ZXIuamF2YQpAQCAtMCwwICsxLDE3NiBAQAorCisvKgorICogQ29weXJpZ2h0ICAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICoKKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LnV0aWxzLnJlc29sdmVyOworCisKKworaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkuc2lnbmF0dXJlLlhNTFNpZ25hdHVyZUlucHV0OworaW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyLlJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS54bWwuc2VjdXJpdHkudXRpbHMucmVzb2x2ZXIuUmVzb3VyY2VSZXNvbHZlclNwaTsKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC51dGlscy5VUkk7CitpbXBvcnQgb3JnLnczYy5kb20uQXR0cjsKKworCisvKioKKyAqIFRoaXMgY2xhc3MgaGVscHMgdXMgaG9tZSB1c2VycyB0byByZXNvbHZlIGh0dHAgVVJJcyB3aXRob3V0IGEgbmV0d29yaworICogY29ubmVjdGlvbi4KKyAqIDxCUiAvPgorICogVGhlIE9mZmxpbmVSZXNvbHZlciBpcyBvbmx5IG5lZWRlZCBmb3IgVW5pdCB0ZXN0aW5nLiBUaGlzIGlzIG5vdCBuZWVkZWQgZm9yCisgKiBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQuIEl0J3MgYSB2ZXJ5IHNpbXBsZSBjYWNoZS9wcm94eSB0byBIVFRQIHNwYWNlCisgKiBzbyB0aGF0IEkgY2FuIGRvIHVuaXQgdGVzdGluZyB3aXRoIGh0dHA6Ly8gVVJJcyBldmVuIGlmIEknbSBub3QgY29ubmVjdGVkCisgKiB0byB0aGUgaW50ZXJuZXQuCisgKgorICogQGF1dGhvciAkQXV0aG9yJAorICovCitwdWJsaWMgY2xhc3MgT2ZmbGluZVJlc29sdmVyIGV4dGVuZHMgUmVzb3VyY2VSZXNvbHZlclNwaSB7CisKKyAgIC8qKiB7QGxpbmsgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmd9IGxvZ2dpbmcgZmFjaWxpdHkgKi8KKyAgICBzdGF0aWMgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nIGxvZyA9IAorICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5LmdldExvZyhPZmZsaW5lUmVzb2x2ZXIuY2xhc3MuZ2V0TmFtZSgpKTsKKworICAgLyoqCisgICAgKiBNZXRob2QgZW5naW5lUmVzb2x2ZQorICAgICoKKyAgICAqIEBwYXJhbSB1cmkKKyAgICAqIEBwYXJhbSBCYXNlVVJJCisgICAgKgorICAgICogQHRocm93cyBSZXNvdXJjZVJlc29sdmVyRXhjZXB0aW9uCisgICAgKi8KKyAgIHB1YmxpYyBYTUxTaWduYXR1cmVJbnB1dCBlbmdpbmVSZXNvbHZlKEF0dHIgdXJpLCBTdHJpbmcgQmFzZVVSSSkKKyAgICAgICAgICAgdGhyb3dzIFJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb24geworCisgICAgICB0cnkgeworICAgICAgICAgU3RyaW5nIFVSSSA9IHVyaS5nZXROb2RlVmFsdWUoKTsKKworICAgICAgICAgaWYgKE9mZmxpbmVSZXNvbHZlci5fdXJpTWFwLmNvbnRhaW5zS2V5KFVSSSkpIHsKKyAgICAgICAgICAgIFN0cmluZyBuZXdVUkkgPSAoU3RyaW5nKSBPZmZsaW5lUmVzb2x2ZXIuX3VyaU1hcC5nZXQoVVJJKTsKKworICAgICAgICAgICAgbG9nLmRlYnVnKCJNYXBwZWQgIiArIFVSSSArICIgdG8gIiArIG5ld1VSSSk7CisKKyAgICAgICAgICAgIElucHV0U3RyZWFtIGlzID0gbmV3IEZpbGVJbnB1dFN0cmVhbShuZXdVUkkpOworCisgICAgICAgICAgICBsb2cuZGVidWcoIkF2YWlsYWJsZSBieXRlcyA9ICIgKyBpcy5hdmFpbGFibGUoKSk7CisKKyAgICAgICAgICAgIFhNTFNpZ25hdHVyZUlucHV0IHJlc3VsdCA9IG5ldyBYTUxTaWduYXR1cmVJbnB1dChpcyk7CisKKyAgICAgICAgICAgIC8vIFhNTFNpZ25hdHVyZUlucHV0IHJlc3VsdCA9IG5ldyBYTUxTaWduYXR1cmVJbnB1dChpbnB1dFN0cmVhbSk7CisgICAgICAgICAgICByZXN1bHQuc2V0U291cmNlVVJJKFVSSSk7CisgICAgICAgICAgICByZXN1bHQuc2V0TUlNRVR5cGUoKFN0cmluZykgT2ZmbGluZVJlc29sdmVyLl9taW1lTWFwLmdldChVUkkpKTsKKworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBPYmplY3QgZXhBcmdzW10gPSB7CisgICAgICAgICAgICAgICAiVGhlIFVSSSAiICsgVVJJICsgIiBpcyBub3QgY29uZmlndXJlZCBmb3Igb2ZmbGluZSB3b3JrIiB9OworCisgICAgICAgICAgICB0aHJvdyBuZXcgUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbigiZ2VuZXJpYy5FbXB0eU1lc3NhZ2UiLCBleEFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmksIEJhc2VVUkkpOworICAgICAgICAgfQorICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZXgpIHsKKyAgICAgICAgIHRocm93IG5ldyBSZXNvdXJjZVJlc29sdmVyRXhjZXB0aW9uKCJnZW5lcmljLkVtcHR5TWVzc2FnZSIsIGV4LCB1cmksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNlVVJJKTsKKyAgICAgIH0KKyAgIH0KKworICAgLyoqCisgICAgKiBXZSByZXNvbHZlIGh0dHAgVVJJcyA8ST53aXRob3V0PC9JPiBmcmFnbWVudC4uLgorICAgICoKKyAgICAqIEBwYXJhbSB1cmkKKyAgICAqIEBwYXJhbSBCYXNlVVJJCisgICAgKgorICAgICovCisgICBwdWJsaWMgYm9vbGVhbiBlbmdpbmVDYW5SZXNvbHZlKEF0dHIgdXJpLCBTdHJpbmcgQmFzZVVSSSkgeworCisgICAgICBTdHJpbmcgdXJpTm9kZVZhbHVlID0gdXJpLmdldE5vZGVWYWx1ZSgpOworCisgICAgICBpZiAodXJpTm9kZVZhbHVlLmVxdWFscygiIikgfHwgdXJpTm9kZVZhbHVlLnN0YXJ0c1dpdGgoIiMiKSkgeworICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorCisgICAgICB0cnkgeworICAgICAgICAgVVJJIHVyaU5ldyA9IG5ldyBVUkkobmV3IFVSSShCYXNlVVJJKSwgdXJpLmdldE5vZGVWYWx1ZSgpKTsKKworICAgICAgICAgaWYgKHVyaU5ldy5nZXRTY2hlbWUoKS5lcXVhbHMoImh0dHAiKSkgeworICAgICAgICAgICAgbG9nLmRlYnVnKCJJIHN0YXRlIHRoYXQgSSBjYW4gcmVzb2x2ZSAiICsgdXJpTmV3LnRvU3RyaW5nKCkpOworCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgIH0KKworICAgICAgICAgbG9nLmRlYnVnKCJJIHN0YXRlIHRoYXQgSSBjYW4ndCByZXNvbHZlICIgKyB1cmlOZXcudG9TdHJpbmcoKSk7CisgICAgICB9IGNhdGNoIChVUkkuTWFsZm9ybWVkVVJJRXhjZXB0aW9uIGV4KSB7fQorCisgICAgICByZXR1cm4gZmFsc2U7CisgICB9CisKKyAgIC8qKiBGaWVsZCBfdXJpTWFwICovCisgICBzdGF0aWMgTWFwIF91cmlNYXAgPSBudWxsOworCisgICAvKiogRmllbGQgX21pbWVNYXAgKi8KKyAgIHN0YXRpYyBNYXAgX21pbWVNYXAgPSBudWxsOworCisgICAvKioKKyAgICAqIE1ldGhvZCByZWdpc3RlcgorICAgICoKKyAgICAqIEBwYXJhbSBVUkkKKyAgICAqIEBwYXJhbSBmaWxlbmFtZQorICAgICogQHBhcmFtIE1JTUUKKyAgICAqLworICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCByZWdpc3RlcihTdHJpbmcgVVJJLCBTdHJpbmcgZmlsZW5hbWUsIFN0cmluZyBNSU1FKSB7CisgICAgICBPZmZsaW5lUmVzb2x2ZXIuX3VyaU1hcC5wdXQoVVJJLCBmaWxlbmFtZSk7CisgICAgICBPZmZsaW5lUmVzb2x2ZXIuX21pbWVNYXAucHV0KFVSSSwgTUlNRSk7CisgICB9CisKKyAgIHN0YXRpYyB7CisgICAgICBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTsKKworICAgICAgT2ZmbGluZVJlc29sdmVyLl91cmlNYXAgPSBuZXcgSGFzaE1hcCgpOworICAgICAgT2ZmbGluZVJlc29sdmVyLl9taW1lTWFwID0gbmV3IEhhc2hNYXAoKTsKKyAgICAgIAorICAgICAgU3RyaW5nIGJhc2VkaXIgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImJhc2VkaXIiKTsKKyAgICAgIGlmKGJhc2VkaXIgPT0gbnVsbCkgeworICAgICAgCWJhc2VkaXIgPSAiLyI7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgIAliYXNlZGlyID0gYmFzZWRpciArICIvIjsKKyAgICAgIH0KKworICAgICAgT2ZmbGluZVJlc29sdmVyLnJlZ2lzdGVyKCJodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWRpciArICJkYXRhL29yZy93M2Mvd3d3L1RSL3htbC1zdHlsZXNoZWV0Lmh0bWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXh0L2h0bWwiKTsKKyAgICAgIE9mZmxpbmVSZXNvbHZlci5yZWdpc3RlcigiaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMC9SRUMteG1sLTIwMDAxMDA2IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlZGlyICsgImRhdGEvb3JnL3czYy93d3cvVFIvMjAwMC9SRUMteG1sLTIwMDAxMDA2IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGV4dC94bWwiKTsKKyAgICAgIE9mZmxpbmVSZXNvbHZlci5yZWdpc3RlcigiaHR0cDovL3d3dy5udWUuZXQtaW5mLnVuaS1zaWVnZW4uZGUvaW5kZXguaHRtbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWRpciArICJkYXRhL29yZy9hcGFjaGUveG1sL3NlY3VyaXR5L3RlbXAvbnVlaG9tZXBhZ2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXh0L2h0bWwiKTsKKyAgICAgIE9mZmxpbmVSZXNvbHZlci5yZWdpc3RlcigKKyAgICAgICAgICJodHRwOi8vd3d3Lm51ZS5ldC1pbmYudW5pLXNpZWdlbi5kZS9+Z2V1ZXItcG9sbG1hbm4vaWQyLnhtbCIsCisgICAgICAgICBiYXNlZGlyICsgImRhdGEvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVtcC9pZDIueG1sIiwgInRleHQveG1sIik7CisgICAgICBPZmZsaW5lUmVzb2x2ZXIucmVnaXN0ZXIoCisgICAgICAgICAiaHR0cDovL3htbGRzaWcucG90aG9sZS5jb20veG1sLXN0eWxlc2hlZXQudHh0IiwKKyAgICAgICAgIGJhc2VkaXIgKyAiZGF0YS9jb20vcG90aG9sZS94bWxkc2lnL3htbC1zdHlsZXNoZWV0LnR4dCIsICJ0ZXh0L3htbCIpOworICAgICAgT2ZmbGluZVJlc29sdmVyLnJlZ2lzdGVyKAorICAgICAgICAgImh0dHA6Ly93d3cudzMub3JnL1NpZ25hdHVyZS8yMDAyLzA0L3htbC1zdHlsZXNoZWV0LmI2NCIsCisgICAgICAgICBiYXNlZGlyICsgImRhdGEvaWUvYmFsdGltb3JlL21lcmxpbi1leGFtcGxlcy9tZXJsaW4teG1sZHNpZy10d2VudHktdGhyZWUveG1sLXN0eWxlc2hlZXQuYjY0IiwgInRleHQvcGxhaW4iKTsKKyAgIH0KK30KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC91dGlscy9yZXNvbHZlci9SZXNvbHZlckRpcmVjdEhUVFAuamF2YSBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC91dGlscy9yZXNvbHZlci9SZXNvbHZlckRpcmVjdEhUVFAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDU2OGE5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3V0aWxzL3Jlc29sdmVyL1Jlc29sdmVyRGlyZWN0SFRUUC5qYXZhCkBAIC0wLDAgKzEsNDUgQEAKKy8qDQorICogQ29weXJpZ2h0IDIwMDkgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLg0KKyAqDQorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LnV0aWxzLnJlc29sdmVyOw0KKw0KK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5Ow0KKw0KK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LkluaXQ7DQoraW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyLlJlc291cmNlUmVzb2x2ZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyLlJlc291cmNlUmVzb2x2ZXJFeGNlcHRpb247DQoraW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7DQoraW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50Ow0KK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50Ow0KKw0KK3B1YmxpYyBjbGFzcyBSZXNvbHZlckRpcmVjdEhUVFAgZXh0ZW5kcyBUZXN0Q2FzZSB7DQorICBwdWJsaWMgdm9pZCB0ZXN0QnVnNDA3ODMoKSB0aHJvd3MgRXhjZXB0aW9uew0KKwkgIEluaXQuaW5pdCgpOw0KKwkgIERvY3VtZW50IGRvYz1Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCkubmV3RG9jdW1lbnRCdWlsZGVyKCkubmV3RG9jdW1lbnQoKTsJCQ0KKwkgIEF0dHIgdXJpPWRvYy5jcmVhdGVBdHRyaWJ1dGUoImlkIik7DQorCSAgdXJpLnNldE5vZGVWYWx1ZSgidXJuOmRkZDp1dXUiKTsNCisJICAoKEVsZW1lbnQpZG9jLmNyZWF0ZUVsZW1lbnQoInRlc3QiKSkuc2V0QXR0cmlidXRlTm9kZSh1cmkpOw0KKwkgIHRyeSB7DQorCQkgIFJlc291cmNlUmVzb2x2ZXIgcmVzb2x2ZXI9UmVzb3VyY2VSZXNvbHZlci5nZXRJbnN0YW5jZSh1cmksIG51bGwpOwkJICANCisJCSAgZmFpbCgiTm8gZXhjZXB0aW9uIHRocm93LCBidXQgcmVzb2x2ZXIgZm91bmQ6IityZXNvbHZlcik7DQorCSAgfSBjYXRjaCAoUmVzb3VyY2VSZXNvbHZlckV4Y2VwdGlvbiBlKSB7DQorCQkgIA0KKwkgIH0NCisJfQ0KKyAgDQorfQ0KZGlmZiAtLWdpdCBhL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC91dGlscy9yZXNvbHZlci9SZXNvdXJjZVJlc29sdmVyVGVzdC5qYXZhIGIvc3JjX3VuaXRUZXN0cy9vcmcvYXBhY2hlL3htbC9zZWN1cml0eS90ZXN0L3V0aWxzL3Jlc29sdmVyL1Jlc291cmNlUmVzb2x2ZXJUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFjMTU4ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyY191bml0VGVzdHMvb3JnL2FwYWNoZS94bWwvc2VjdXJpdHkvdGVzdC91dGlscy9yZXNvbHZlci9SZXNvdXJjZVJlc29sdmVyVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTA3IEBACisKKy8qCisgKiBDb3B5cmlnaHQgIDE5OTktMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnRlc3QudXRpbHMucmVzb2x2ZXI7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7CitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy4qOworaW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS51dGlscy5yZXNvbHZlci5SZXNvdXJjZVJlc29sdmVyOworCisvKioKKyAqIFVuaXQgdGVzdCBmb3Ige0BsaW5rIG9yZy5hcGFjaGUueG1sLnNlY3VyaXR5LnV0aWxzLnJlc29sdmVyLlJlc291cmNlUmVzb2x2ZXJ9CisgKgorICogQGF1dGhvciBTZWFuIE11bGxhbgorICovCitwdWJsaWMgY2xhc3MgUmVzb3VyY2VSZXNvbHZlclRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgICAvKioge0BsaW5rIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nfSBsb2dnaW5nIGZhY2lsaXR5ICovCisgICAgc3RhdGljIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZyBsb2cgPSAKKyAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmcuTG9nRmFjdG9yeS5nZXRMb2cKKwkgICAgKFJlc291cmNlUmVzb2x2ZXJUZXN0LmNsYXNzLmdldE5hbWUoKSk7CisKKyAgICBwdWJsaWMgc3RhdGljIFRlc3Qgc3VpdGUoKSB7CisgICAgICAgIHJldHVybiBuZXcgVGVzdFN1aXRlKFJlc291cmNlUmVzb2x2ZXJUZXN0LmNsYXNzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgUmVzb3VyY2VSZXNvbHZlclRlc3QoU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgc3VwZXIobmFtZSk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBTdHJpbmdbXSB0ZXN0Q2FzZU5hbWUgPSAKKwkgICAgeyAiLW5vbG9hZGluZyIsIFJlc291cmNlUmVzb2x2ZXJUZXN0LmNsYXNzLmdldE5hbWUoKSB9OworCisgICAgICAgIGp1bml0LnRleHR1aS5UZXN0UnVubmVyLm1haW4odGVzdENhc2VOYW1lKTsKKworICAgICAgICAvLyBqdW5pdC5zd2luZ3VpLlRlc3RSdW5uZXIubWFpbih0ZXN0Q2FzZU5hbWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3RzIHJlZ2lzdGVyaW5nIGEgY3VzdG9tIHJlc29sdmVyIGltcGxlbWVudGF0aW9uLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0Q3VzdG9tUmVzb2x2ZXIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlTdHJpbmcgY2xhc3NOYW1lID0gCisJICAgICJvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS50ZXN0LnV0aWxzLnJlc29sdmVyLk9mZmxpbmVSZXNvbHZlciI7CisJUmVzb3VyY2VSZXNvbHZlci5yZWdpc3RlckF0U3RhcnQoY2xhc3NOYW1lKTsKKwlEb2N1bWVudCBkb2MgPSAKKyAgICAgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpLm5ld0RvY3VtZW50QnVpbGRlcigpLm5ld0RvY3VtZW50KCk7CisJQXR0ciB1cmlBdHRyID0gZG9jLmNyZWF0ZUF0dHJpYnV0ZSgiVVJJIik7CisJdXJpQXR0ci5zZXRWYWx1ZSgiaHR0cDovL3d3dy5hcGFjaGUub3JnIik7CisJUmVzb3VyY2VSZXNvbHZlciByZXMgPSAKKwkgICAgUmVzb3VyY2VSZXNvbHZlci5nZXRJbnN0YW5jZSh1cmlBdHRyLCAiaHR0cDovL3d3dy5hcGFjaGUub3JnIik7CisJdHJ5IHsKKwkgICAgdXJpQXR0ci5zZXRWYWx1ZSgiaHR0cDovL3htbGRzaWcucG90aG9sZS5jb20veG1sLXN0eWxlc2hlZXQudHh0Iik7CisJICAgIHJlcy5yZXNvbHZlKHVyaUF0dHIsIG51bGwpOworCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CisJICAgIGZhaWwodXJpQXR0ci5nZXRWYWx1ZSgpIAorCQkrICIgc2hvdWxkIGJlIHJlc29sdmFibGUgYnkgdGhlIE9mZmxpbmVSZXNvbHZlciIpOworCX0KKwl0cnkgeworCSAgICB1cmlBdHRyLnNldFZhbHVlKCJodHRwOi8vd3d3LmFwYWNoZS5vcmciKTsKKwkgICAgcmVzLnJlc29sdmUodXJpQXR0ciwgbnVsbCk7CisJICAgIGZhaWwodXJpQXR0ci5nZXRWYWx1ZSgpIAorCQkrICIgc2hvdWxkIG5vdCBiZSByZXNvbHZhYmxlIGJ5IHRoZSBPZmZsaW5lUmVzb2x2ZXIiKTsKKwl9IGNhdGNoIChFeGNlcHRpb24gZSkgeyB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3RMb2NhbEZpbGVXaXRoRW1wdHlCYXNlVVJJKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJRG9jdW1lbnQgZG9jID0gCisgICAgICAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKS5uZXdEb2N1bWVudEJ1aWxkZXIoKS5uZXdEb2N1bWVudCgpOworCUF0dHIgdXJpQXR0ciA9IGRvYy5jcmVhdGVBdHRyaWJ1dGUoIlVSSSIpOworCVN0cmluZyBiYXNlZGlyID0gU3lzdGVtLmdldFByb3BlcnR5KCJiYXNlZGlyIik7CisJU3RyaW5nIGZpbGUgPSBuZXcgRmlsZShiYXNlZGlyLCAiYnVpbGQueG1sIikudG9VUkkoKS50b1N0cmluZygpOworCXVyaUF0dHIuc2V0VmFsdWUoZmlsZSk7CisJUmVzb3VyY2VSZXNvbHZlciByZXMgPSBSZXNvdXJjZVJlc29sdmVyLmdldEluc3RhbmNlKHVyaUF0dHIsIGZpbGUpOworCXRyeSB7CisJICAgIHJlcy5yZXNvbHZlKHVyaUF0dHIsICIiKTsKKwl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCSAgICBmYWlsKGUuZ2V0TWVzc2FnZSgpKTsKKwl9CisgICAgfQorCisgICAgc3RhdGljIHsKKwlvcmcuYXBhY2hlLnhtbC5zZWN1cml0eS5Jbml0LmluaXQoKTsKKyAgICB9Cit9Cg==